Index: /issm/branches/trunk-dlcheng-ASE/Makefile.am
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/Makefile.am	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/Makefile.am	(revision 27955)
@@ -0,0 +1,5 @@
+EXTRA_DIST = reconf scripts test m4 examples cron etc doc packages contributors.txt
+SUBDIRS = src
+bin_SCRIPTS= README.rtf
+
+ACLOCAL_AMFLAGS = -I m4
Index: /issm/branches/trunk-dlcheng-ASE/README
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/README	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/README	(revision 27955)
@@ -0,0 +1,45 @@
+------------------------------------------------------------------------------
+
+ISSM
+Ice Sheet System Modeling: a framework for modeling ice flow on ice sheet/ice shelf
+systems using Finite Elemenent Analysis, and parallel technologies.
+
+Email:   issm@jpl.nasa.gov
+Website: http://issm.jpl.nasa.gov/
+
+------------------------------------------------------------------------------
+
+License
+
+ISSM is California Institute of Technology Copyright, Distributed under BSD Three Clause License.
+
+
+Copyright (c) 2002-2018, California Institute of Technology.
+All rights reserved.  Based on Government Sponsored Research under contracts
+NAS7-1407 and/or NAS7-03001.
+
+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 California Institute of Technology (Caltech),
+   its operating division the Jet Propulsion Laboratory (JPL), the National
+   Aeronautics and Space Administration (NASA), 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 CALIFORNIA INSTITUTE OF TECHNOLOGY 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.
+------------------------------------------------------------------------------
Index: /issm/branches/trunk-dlcheng-ASE/configure.ac
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/configure.ac	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/configure.ac	(revision 27955)
@@ -0,0 +1,50 @@
+# Process this file with autoconf to produce a configure script.
+
+#AUTOCONF
+AC_INIT([Ice-sheet and Sea-level System Model (ISSM)],[4.23],[https://issm.ess.uci.edu/forum/],[issm],[http://issm.jpl.nasa.gov]) #Initializing configure
+AC_CONFIG_AUX_DIR([./aux-config])	# Put config files in aux-config
+AC_CONFIG_MACRO_DIR([m4])			# m4 macros are located in m4
+m4_include([m4/issm_options.m4])
+
+#print header
+AC_MSG_NOTICE(============================================================================)
+AC_MSG_NOTICE(=      AC_PACKAGE_NAME AC_PACKAGE_VERSION configuration      =)
+AC_MSG_NOTICE(============================================================================)
+
+#Determine System type and OS
+AC_CANONICAL_TARGET
+
+#Compilers
+AC_PROG_CC([icc cl icl gcc])
+AC_PROG_CPP
+AC_PROG_CXX([icpc cl icl g++])
+AC_PROG_F77([ifort g77 gfortran])
+AC_PROG_FC([ifort gfortran])
+
+#AUTOMAKE
+#Initialize automake and declare foreign so that we don't need a ChangeLog, INSTALL, etc
+AM_INIT_AUTOMAKE([foreign])
+AC_CONFIG_HEADERS([./config.h])		# Config file must be config.h
+AM_SILENT_RULES([yes])				# Reduce compilation and linking output (comment this line out or set value to "no" for verbose output)
+AM_PROG_AR
+
+#Libtool
+LT_INIT([win32-dll])
+
+#Run issm_options.m4
+ISSM_OPTIONS
+
+#List all Makefiles
+AC_CONFIG_FILES([
+	Makefile
+	src/Makefile
+	src/c/Makefile
+	src/wrappers/Makefile
+	src/wrappers/python/Makefile
+	src/wrappers/matlab/Makefile
+	src/wrappers/javascript/Makefile
+	src/m/Makefile
+])
+
+#End of configure.ac
+AC_OUTPUT
Index: /issm/branches/trunk-dlcheng-ASE/etc/environment.csh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/etc/environment.csh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/etc/environment.csh	(revision 27955)
@@ -0,0 +1,247 @@
+# Modifies path-related envrionment variables based on which external packages
+# have been installed.
+#
+# ISSM_DIR and ISSM_ARCH should have been defined already in your shell
+# settings file (i.e. .bashrc, .cshrc).
+#
+# TODO:
+# - Condition all path modifications on existence of external package 'install'
+#	directory
+#
+
+# Silence `<command>: no match`
+set nonomatch=1
+
+setenv PATH "{$PATH}:{$ISSM_DIR}/aux-config"
+setenv PATH "{$PATH}:{$ISSM_DIR}/scripts"
+
+set ISSM_EXT_DIR="{$ISSM_DIR}/externalpackages" # Redefine this constant if externalpackages are installed to a different directory
+
+#########################
+# Command-line utilities
+#########################
+set SSH_ROOT="{$ISSM_EXT_DIR}/ssh"
+if ( -d {$SSH_ROOT} ) then
+	setenv PATH "{$PATH}:{$SSH_ROOT}"
+endif
+
+#############################
+# Build systems
+#############################
+set AUTOTOOLS_ROOT="{$ISSM_EXT_DIR}/autotools/install"
+setenv PATH "{$AUTOTOOLS_ROOT}/bin:{$PATH}"
+
+set CMAKE_ROOT="{$ISSM_EXT_DIR}/cmake/install"
+setenv PATH "{$CMAKE_ROOT}/bin:{$PATH}"
+
+#############################
+# Libraries / binaries
+#############################
+set MPI_ROOT="{$ISSM_EXT_DIR}/mpich/install"
+if ( -d {$MPI_ROOT} ) then
+	setenv MPI_DIR {$MPI_ROOT}
+	setenv MPI_HOME {$MPI_ROOT} # Used in installation of Dakota
+	setenv MPI_INC_DIR {$MPI_ROOT}/include
+	setenv PATH "{$MPI_ROOT}/bin:{$PATH}"
+	setenv CPATH "{$MPI_ROOT}/include:{$CPATH}"
+	setenv LD_LIBRARY_PATH "{$LD_LIBRARY_PATH}:{$MPI_ROOT}/lib"
+endif
+
+# NOTE: Check *must* come before PETSc as we prefer packages installed via 
+# 		PETSc
+#
+set ZLIB_ROOT="{$ISSM_EXT_DIR}/zlib/install"
+if ( -d {$ZLIB_ROOT} ) then
+	setenv ZLIB_ROOT {$ZLIB_ROOT} # Used in installation of NetCDF, GDAL, GMT
+	setenv LD_LIBRARY_PATH "{$LD_LIBRARY_PATH}:{$LD_LIBRARY_PATH}/lib"
+endif
+
+set PETSC_ROOT="{$ISSM_EXT_DIR}/petsc/install"
+if ( -d {$PETSC_ROOT} ) then
+	setenv PETSC_ROOT {$PETSC_ROOT}
+	setenv LD_LIBRARY_PATH {$PETSC_ROOT}/lib:{$LD_LIBRARY_PATH}
+
+	# In case we have installed certain external packages via PETSc
+	#
+
+	# BLAS
+	if ( `find {$PETSC_ROOT}/lib -name libblas.*` != "" || `find {$PETSC_ROOT}/lib -name libfblas.*` != "" ) then
+		setenv BLAS_ROOT "{$PETSC_ROOT}" # Used in installation of Dakota, GMT
+	endif
+
+	# HDF5
+	if ( `find {$PETSC_ROOT}/lib -name libhdf5.*` != "" ) then
+		setenv HDF5_ROOT "{$PETSC_ROOT}" # Used in installation of NetCDF, GDAL
+		setenv CPATH {$CPATH}:{$PETSC_ROOT}/include
+		setenv LIBRARY_PATH {$LIBRARY_PATH}:{$PETSC_ROOT}/lib
+		setenv DYLD_LIBRARY_PATH {$DYLD_LIBRARY_PATH}:{$PETSC_ROOT}/lib
+		setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:{$PETSC_ROOT}/lib
+	endif
+
+	# LAPACK
+	if ( `find {$PETSC_ROOT}/lib -name liblapack.*` != "" || `find {$PETSC_ROOT}/lib -name libflapack.*` != "" ) then
+		setenv LAPACK_ROOT "{$PETSC_ROOT}" # Used in installation of Dakota, GMT
+	endif
+
+	# METIS
+	if ( `find {$PETSC_ROOT}/lib -name libmetis.*` != "" ) then
+		setenv METIS_ROOT "{$PETSC_ROOT}" # Used in installation of Gmsh
+	endif
+
+	# MPICH
+	if ( -f "{$PETSC_ROOT}/bin/mpiexec" ) then
+		set MPI_ROOT={$PETSC_ROOT}
+		setenv MPI_DIR {$MPI_ROOT}
+		setenv MPI_HOME {$MPI_ROOT} # Used in installation of Dakota
+		setenv MPI_INC_DIR {$MPI_ROOT}/include
+		setenv PATH {$MPI_ROOT}/bin:{$PATH}
+		setenv CPATH {$MPI_ROOT}/include:{$CPATH}
+		setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:{$MPI_ROOT}/lib
+	endif
+
+	# ZLIB
+	if ( `find {$PETSC_ROOT}/lib -name libz.*` != "" ) then
+		setenv ZLIB_ROOT "{$PETSC_ROOT}" # Used in installation of NetCDF, GDAL
+		setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:{$PETSC_ROOT}/lib
+	endif
+endif
+
+set SCOTCH_ROOT="{$ISSM_EXT_DIR}/scotch/install"
+if ( -d {$SCOTCH_ROOT} ) then
+	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:{$SCOTCH_ROOT}/lib
+endif
+
+set SLEPC_ROOT="{$ISSM_EXT_DIR}/slepc/install"
+if ( -d {$SLEPC_ROOT} ) then
+	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:{$SLEPC_ROOT}/lib
+endif
+
+set TAO_ROOT="{$ISSM_EXT_DIR}/tao/install"
+if ( -d {$TAO_ROOT} ) then
+	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:{$TAO_ROOT}/lib
+endif
+
+set DAKOTA_ROOT="{$ISSM_EXT_DIR}/dakota/install"
+if ( -d {$DAKOTA_ROOT} ) then
+	setenv PATH {$PATH}:{$DAKOTA_ROOT}/bin
+	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:{$DAKOTA_ROOT}/lib
+	setenv DYLD_LIBRARY_PATH {$DAKOTA_ROOT}/lib:{$DYLD_LIBRARY_PATH}
+endif
+
+set MERCURIAL_ROOT="{$ISSM_EXT_DIR}/mercurial/install"
+if ( -d {$MERCURIAL_ROOT} ) then
+	setenv PYTHONPATH {$PYTHONPATH}:{$MERCURIAL_ROOT}/mercurial/pure
+	setenv PATH {$PATH}:{$MERCURIAL_ROOT}
+endif
+
+set BOOST_ROOT="{$ISSM_EXT_DIR}/boost/install"
+if ( -d {$BOOST_ROOT} ) then
+	setenv BOOST_ROOT {$BOOST_ROOT} # Used in installation of Dakota
+	setenv BOOST_DIR {$BOOST_ROOT}
+	setenv BOOSTROOT {$BOOST_ROOT}
+	setenv LIBRARY_PATH {$BOOST_ROOT}/lib:{$LIBRARY_PATH}
+	setenv LD_LIBRARY_PATH {$BOOST_ROOT}/lib:{$LD_LIBRARY_PATH}
+	setenv DYLD_LIBRARY_PATH {$BOOST_ROOT}/lib:{$DYLD_LIBRARY_PATH}
+	setenv PATH {$BOOST_ROOT}/bin:{$PATH}
+endif
+
+set GSL_ROOT="{$ISSM_EXT_DIR}/gsl/install"
+if ( -d {$GSL_ROOT} ) then
+	setenv GSL_HOME {$GSL_ROOT} # Used in installation of Dakota
+	setenv GSL_ROOT {$GSL_ROOT}
+	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:{$GSL_ROOT}/lib
+	setenv DYLD_LIBRARY_PATH {$GSL_ROOT}/lib:{$DYLD_LIBRARY_PATH}
+endif
+
+set NETCDF_ROOT="{$ISSM_EXT_DIR}/netcdf/install"
+if ( -d {$NETCDF_ROOT} ) then
+	setenv NETCDF_ROOT "{$NETCDF_ROOT}" # Used in installation of GDAL, GMT
+	setenv PATH {$PATH}:{$NETCDF_ROOT}/bin
+	setenv CPATH {$CPATH}:{$NETCDF_ROOT}/include
+	setenv LIBRARY_PATH {$LIBRARY_PATH}:{$NETCDF_ROOT}/lib
+	setenv DYLD_LIBRARY_PATH {$DYLD_LIBRARY_PATH}:{$NETCDF_ROOT}/lib
+	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:{$NETCDF_ROOT}/lib
+endif
+
+set CURL_ROOT="{$ISSM_EXT_DIR}/curl/install"
+if ( -d {$CURL_ROOT} ) then
+	setenv CURL_ROOT "{$CURL_ROOT}" # Used in installation of NetCDF, GDAL, GMT
+	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:{$CURL_ROOT}/lib
+	setenv DYLD_LIBRARY_PATH {$DYLD_LIBRARY_PATH}:{$CURL_ROOT}/lib
+	setenv PATH {$PATH}:{$CURL_ROOT}/bin
+endif
+
+set HDF5_ROOT="{$ISSM_EXT_DIR}/hdf5/install"
+if ( -d {$HDF5_ROOT} ) then
+	setenv HDF5_ROOT "{$HDF5_ROOT}" # Used in installation of NetCDF, GDAL
+	setenv CPATH {$CPATH}:{$HDF5_ROOT}/include
+	setenv LIBRARY_PATH {$LIBRARY_PATH}:{$HDF5_ROOT}/lib
+	setenv DYLD_LIBRARY_PATH {$DYLD_LIBRARY_PATH}:{$HDF5_ROOT}/lib
+	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:{$HDF5_ROOT}/lib
+endif
+
+set SQLITE_ROOT="{$ISSM_EXT_DIR}/sqlite/install"
+if ( -d {$SQLITE_ROOT} ) then
+	setenv PATH {$PATH}:{$SQLITE_ROOT}/bin
+	setenv LIBRARY_PATH {$LIBRARY_PATH}:{$SQLITE_ROOT}/lib
+	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:{$SQLITE_ROOT}/lib
+endif
+
+set PROJ_ROOT="{$ISSM_EXT_DIR}/proj/install"
+if ( -d {$PROJ_ROOT} ) then
+	setenv PROJ_ROOT "${PROJ_ROOT}" # Used in installation of GDAL
+	setenv DYLD_LIBRARY_PATH {$DYLD_LIBRARY_PATH}:{$PROJ_ROOT}/lib
+	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:{$PROJ_ROOT}/lib
+endif
+
+set GDAL_ROOT="{$ISSM_EXT_DIR}/gdal/install"
+if ( -d {$GDAL_ROOT} ) then
+	setenv GDAL_ROOT "{$GDAL_ROOT}" # Used in installation of GMT
+	setenv PATH {$GDAL_ROOT}/bin:{$PATH}
+	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:{$GDAL_ROOT}/lib
+endif
+
+set GSHHG_ROOT="{$ISSM_EXT_DIR}/gshhg/install"
+if ( -d {$GSHHG_ROOT} ) then
+	setenv GSHHG_ROOT "{$GSHHG_ROOT}" # Used in installation of GMT
+endif
+
+set GMT_ROOT="{$ISSM_EXT_DIR}/gmt/install"
+if ( -d {$GMT_ROOT} ) then
+	setenv PATH {$GMT_ROOT}/bin:{$PATH}
+	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:{$GMT_ROOT}/lib
+	setenv DYLD_LIBRARY_PATH {$DYLD_LIBRARY_PATH}:{$GMT_ROOT}/lib
+endif
+
+set GMSH_ROOT="{$ISSM_EXT_DIR}/gmsh/install"
+if ( -d {$GMSH_ROOT} ) then
+	setenv PATH {$GMSH_ROOT}/bin:{$PATH}
+	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:{$GMSH_ROOT}/lib
+	setenv DYLD_LIBRARY_PATH {$DYLD_LIBRARY_PATH}:{$GMSH_ROOT}/lib
+endif
+
+set TRIANGLE_ROOT="{$ISSM_EXT_DIR}/triangle/install"
+if ( -d {$TRIANGLE_ROOT} ) then
+	setenv LD_LIBRARY_PATH {$LD_LIBRARY_PATH}:{$TRIANGLE_ROOT}/lib
+	setenv DYLD_LIBRARY_PATH {$DYLD_LIBRARY_PATH}:{$TRIANGLE_ROOT}/lib
+endif
+
+set YAMS_ROOT="{$ISSM_EXT_DIR}/yams/install"
+if ( -d {$YAMS_ROOT} ) then
+	setenv PATH {$PATH}:{$YAMS_ROOT}
+endif
+
+set VALGRIND_ROOT="{$ISSM_EXT_DIR}/valgrind/install"
+if ( -d {$VALGRIND_ROOT} ) then
+	setenv PATH {$VALGRIND_ROOT}/bin:{$PATH}
+endif
+
+set DOXYGEN_ROOT="{$ISSM_EXT_DIR}/doxygen/install"
+if ( -d {$DOXYGEN_ROOT} ) then
+	setenv PATH {$DOXYGEN_ROOT}/bin:{$PATH}
+endif
+
+set SHELL2JUNIT_ROOT="{$ISSM_EXT_DIR}/shell2junit/install"
+if ( -d {$SHELL2JUNIT_ROOT} ) then
+	setenv PATH {$PATH}:{$SHELL2JUNIT_ROOT}/install
+endif
Index: /issm/branches/trunk-dlcheng-ASE/etc/environment.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/etc/environment.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/etc/environment.sh	(revision 27955)
@@ -0,0 +1,688 @@
+# Modifies path-related environment variables based on which external packages
+# have been installed.
+#
+# ISSM_DIR and ISSM_ARCH should have been defined already in your shell
+# settings file (i.e. .bashrc, .cshrc).
+#
+# TODO:
+# - Condition all path modifications on existence of external package 'install'
+#	directory
+#
+
+if [[ -n "$ZSH_VERSION" ]]; then
+	# Silence `zsh: no matches found: <file>`
+	setopt +o nomatch 1> /dev/null 2>&1
+fi
+
+## Functions
+#
+c_include_path_append(){ #{{{
+	if [ -d "${1}" ]; then
+		if [ -z "${C_INCLUDE_PATH}" ]; then
+			export C_INCLUDE_PATH="${1}"
+		elif [[ ":${C_INCLUDE_PATH}:" != *":${1}:"* ]]; then
+			export C_INCLUDE_PATH="${C_INCLUDE_PATH}:${1}"
+		fi
+	fi
+} #}}}
+c_include_path_prepend(){ #{{{
+	if [ -d "${1}" ]; then
+		if [ -z "${C_INCLUDE_PATH}" ]; then
+			export C_INCLUDE_PATH="${1}"
+		elif [[ ":${C_INCLUDE_PATH}:" != *":${1}:"* ]]; then
+			export C_INCLUDE_PATH="${1}:${C_INCLUDE_PATH}"
+		fi
+	fi
+} #}}}
+
+cpath_append(){ #{{{
+	if [ -d "${1}" ]; then
+		if [ -z "${CPATH}" ]; then
+			export CPATH="${1}"
+		elif [[ ":${CPATH}:" != *":${1}:"* ]]; then
+			export CPATH="${CPATH}:${1}"
+		fi
+	fi
+} #}}}
+cpath_prepend(){ #{{{
+	if [ -d "${1}" ]; then
+		if [ -z "${CPATH}" ]; then
+			export CPATH="${1}"
+		elif [[ ":${CPATH}:" != *":${1}:"* ]]; then
+			export CPATH="${1}:${CPATH}"
+		fi
+	fi
+} #}}}
+
+cplus_include_path_append(){ #{{{
+	if [ -d "${1}" ]; then
+		if [ -z "${CPLUS_INCLUDE_PATH}" ]; then
+			export CPLUS_INCLUDE_PATH="${1}"
+		elif [[ ":${CPLUS_INCLUDE_PATH}:" != *":${1}:"* ]]; then
+			export CPLUS_INCLUDE_PATH="${CPLUS_INCLUDE_PATH}:${1}"
+		fi
+	fi
+} #}}}
+cplus_include_path_prepend(){ #{{{
+	if [ -d "${1}" ]; then
+		if [ -z "${CPLUS_INCLUDE_PATH}" ]; then
+			export CPLUS_INCLUDE_PATH="${1}"
+		elif [[ ":${CPLUS_INCLUDE_PATH}:" != *":${1}:"* ]]; then
+			export CPLUS_INCLUDE_PATH="${1}:${CPLUS_INCLUDE_PATH}"
+		fi
+	fi
+} #}}}
+
+dyld_library_path_append(){ #{{{
+	if [ -d "${1}" ]; then
+		if [ -z "${DYLD_LIBRARY_PATH}" ]; then
+			export DYLD_LIBRARY_PATH="${1}"
+		elif [[ ":${DYLD_LIBRARY_PATH}:" != *":${1}:"* ]]; then
+			export DYLD_LIBRARY_PATH="${DYLD_LIBRARY_PATH}:${1}"
+		fi
+		if [ -z "${LD_RUN_PATH}" ]; then
+			export LD_RUN_PATH=$1
+		elif [[ ":${LD_RUN_PATH}:" != *":${1}:"* ]]; then
+			export LD_RUN_PATH="${LD_RUN_PATH}:${1}"
+		fi
+	fi
+} #}}}
+dyld_library_path_prepend(){ #{{{
+	if [ -d "${1}" ]; then
+		if [ -z "${DYLD_LIBRARY_PATH}" ]; then
+			export DYLD_LIBRARY_PATH="${1}"
+		elif [[ ":${DYLD_LIBRARY_PATH}:" != *":${1}:"* ]]; then
+			export DYLD_LIBRARY_PATH="${1}:${DYLD_LIBRARY_PATH}"
+		fi
+		if [ -z "${LD_RUN_PATH}" ]; then
+			export LD_RUN_PATH="${1}"
+		elif [[ ":${LD_RUN_PATH}:" != *":${1}:"* ]]; then
+			export LD_RUN_PATH="${1}:${LD_RUN_PATH}"
+		fi
+	fi
+} #}}}
+
+ld_library_path_append(){ #{{{
+	if [ -d "${1}" ]; then
+		if [ -z "${LD_LIBRARY_PATH}" ]; then
+			export LD_LIBRARY_PATH="${1}"
+		elif [[ ":${LD_LIBRARY_PATH}:" != *":${1}:"* ]]; then
+			export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${1}"
+		fi
+		if [ -z "${LD_RUN_PATH}" ]; then
+			export LD_RUN_PATH="${1}"
+		elif [[ ":${LD_RUN_PATH}:" != *":$1:"* ]]; then
+			export LD_RUN_PATH="${LD_RUN_PATH}:${1}"
+		fi
+	fi
+} #}}}
+ld_library_path_prepend(){ #{{{
+	if [ -d "${1}" ]; then
+		if [ -z "${LD_LIBRARY_PATH}" ]; then
+			export LD_LIBRARY_PATH="${1}"
+		elif [[ ":${LD_LIBRARY_PATH}:" != *":${1}:"* ]]; then
+			export LD_LIBRARY_PATH="${1}:${LD_LIBRARY_PATH}"
+		fi
+		if [ -z "${LD_RUN_PATH}" ]; then
+			export LD_RUN_PATH="${1}"
+		elif [[ ":${LD_RUN_PATH}:" != *":${1}:"* ]]; then
+			export LD_RUN_PATH="${1}:${LD_RUN_PATH}"
+		fi
+	fi
+} #}}}
+
+library_path_append(){ #{{{
+	if [ -d "${1}" ]; then
+		if [ -z "${LIBRARY_PATH}" ]; then
+			export LIBRARY_PATH="${1}"
+		elif [[ ":${LIBRARY_PATH}:" != *":$1:"* ]]; then
+			export LIBRARY_PATH="${LIBRARY_PATH}:${1}"
+		fi
+	fi
+} #}}}
+library_path_prepend(){ #{{{
+	if [ -d "${1}" ]; then
+		if [ -z "${LIBRARY_PATH}" ]; then
+			export LIBRARY_PATH="${1}"
+		elif [[ ":${LIBRARY_PATH}:" != *":$1:"* ]]; then
+			export LIBRARY_PATH="${1}:${LIBRARY_PATH}"
+		fi
+	fi
+} #}}}
+
+path_append(){ #{{{
+	if [ -d "${1}" ] && [[ ":${PATH}:" != *":${1}:"* ]]; then
+		PATH_IN="${1}"
+		if [[ "${ISSM_ARCH}" == "cygwin-intel" ]]; then
+			PATH_IN=`cygpath -u "${1}"`
+		fi
+		export PATH="${PATH}:${PATH_IN}"
+	fi
+} #}}}
+path_prepend(){ #{{{
+	if [ -d "${1}" ] && [[ ":${PATH}:" != *":${1}:"* ]]; then
+		PATH_IN="${1}"
+		if [[ "${ISSM_ARCH}" == "cygwin-intel" ]]; then
+			PATH_IN=`cygpath -u "${1}"`
+		fi
+		export PATH="${PATH_IN}:${PATH}"
+	fi
+} #}}}
+
+path_append "${ISSM_DIR}/aux-config"
+path_append "${ISSM_DIR}/scripts"
+
+# Default path to external packages. Redefine this constant if they are 
+# installed to a different directory. Alternatively, export it on the command 
+# line or in a profile initialization file (that is why we check here if it is 
+# set already).
+#
+if [ -z "${ISSM_EXT_DIR+x}" ]; then
+	export ISSM_EXT_DIR="${ISSM_DIR}/externalpackages"
+fi
+
+#######################
+# OS-specific handling
+#######################
+
+MINGW=0
+if [[ $(uname -s) == MINGW* ]]; then
+	MINGW=1
+	MSMPI_ROOT="${ISSM_EXT_DIR}/msmpi/install"
+	if [ -d "${MSMPI_ROOT}" ]; then
+		export MSMPI_ROOT # Used in installation of ParMETIS, ScaLAPACK
+		cpath_prepend "${MSMPI_ROOT}/include"
+		library_path_prepend "${MSMPI_ROOT}/lib"
+	fi
+
+	MPIEXEC_DIR=$(cygpath -u $(cygpath -ms "/c/Program Files/Microsoft MPI/Bin"))
+	if [ -d "${MPIEXEC_DIR}" ]; then
+		export MPIEXEC_DIR
+		path_append "${MPIEXEC_DIR}"
+	fi
+
+	path_prepend "${ISSM_DIR}/bin" # Allows dynamic loader to find DLLs
+fi
+
+# Windows compilers
+if [[ "${ISSM_ARCH}" == "cygwin-intel" ]]; then
+	source ${ISSM_DIR}/externalpackages/windows/windows_environment.sh
+fi
+
+#########################
+# Command-line utilities
+#########################
+SSH_ROOT="${ISSM_EXT_DIR}/ssh"
+if [ -d "${SSH_ROOT}" ]; then
+	path_append "${SSH_ROOT}"
+fi
+
+SVN_ROOT="${ISSM_EXT_DIR}/svn/install"
+if [ -d "${SVN_ROOT}" ]; then
+	path_prepend "${SVN_ROOT}/bin"
+	ld_library_path_append "${SVN_ROOT}/lib"
+fi
+
+GIT_ROOT="${ISSM_EXT_DIR}/git/install"
+if [ -d "${GIT_ROOT}" ]; then
+	path_prepend "${GIT_ROOT}/bin"
+fi
+
+#############################
+# Compilers / runtime / SDKs
+#############################
+export ANDROID_DIR="${ISSM_EXT_DIR}/android"
+
+export ANDROID_NDK_DIR="$ANDROID_DIR/android-ndk/install"
+path_append "$ANDROID_NDK_DIR/arm-linux-android-install/bin"
+
+export ANDROID_SDK_ROOT="$ANDROID_DIR/android-sdk/install"
+path_append "$ANDROID_SDK_ROOT/"
+
+EMSCRIPTEN_ROOT="${ISSM_EXT_DIR}/emscripten/install"
+if [ -d ${EMSCRIPTEN_ROOT} ]; then
+	export EMSCRIPTEN_ROOT # Used in JavaScript build in installation of GSL, Triangle
+fi
+
+JVM_ROOT="/usr/local/gcc/4.3.2/lib64/gcj-4.3.2-9/"
+ld_library_path_append "${JVM_ROOT}"
+
+#############################
+# IDEs
+#############################
+ECLIPSE_ROOT="${ISSM_EXT_DIR}/eclipse/install"
+path_append "${ECLIPSE_ROOT}"
+
+#############################
+# Build systems
+#############################
+AUTOTOOLS_ROOT="${ISSM_EXT_DIR}/autotools/install"
+path_prepend "${AUTOTOOLS_ROOT}/bin"
+
+CMAKE_ROOT="${ISSM_EXT_DIR}/cmake/install"
+path_prepend "${CMAKE_ROOT}/bin"
+
+GMAKE_ROOT="${ISSM_EXT_DIR}/gmake/install"
+path_prepend "${GMAKE_ROOT}/bin"
+
+#############################
+# Packagers
+#############################
+PACKAGEMAKER_ROOT="${ISSM_EXT_DIR}/packagemaker/install"
+path_append "${PACKAGEMAKER_ROOT}"
+
+#############################
+# Libraries / binaries
+#############################
+MPI_ROOT_TEMP="${ISSM_EXT_DIR}/mpich/install"
+if [ -d "${MPI_ROOT_TEMP}" ]; then
+	export MPI_DIR=${MPI_ROOT_TEMP}
+	export MPI_HOME=${MPI_ROOT_TEMP} # Used in installation of Dakota
+	export MPI_INC_DIR="${MPI_ROOT_TEMP}/include"
+	path_prepend "${MPI_ROOT_TEMP}/bin"
+	cpath_prepend "${MPI_ROOT_TEMP}/include"
+	ld_library_path_append "${MPI_ROOT_TEMP}/lib"
+fi
+
+# NOTE: The following checks *must* come before PETSc as we prefer packages 
+#		installed via PETSc
+#
+BLAS_ROOT="${ISSM_EXT_DIR}/blas/install"
+if [ -d "${BLAS_ROOT}" ]; then
+	export BLAS_ROOT # Used in installation of LAPACK, ScaLAPACK, PETSc
+	library_path_append "${BLAS_ROOT}/lib"
+	ld_library_path_append "${BLAS_ROOT}/lib"
+
+	if [[ ${MINGW} -eq 1 ]]; then
+		path_append "${BLAS_ROOT}/lib" # Allows dynamic loader to find DLLs
+	fi
+fi
+
+HDF5_ROOT="${ISSM_EXT_DIR}/hdf5/install"
+if [ -d "${HDF5_ROOT}" ]; then
+	export HDF5_ROOT # Used in installation of NetCDF, GDAL
+	cpath_append "${HDF5_ROOT}/include"
+	library_path_append "${HDF5_ROOT}/lib"
+	dyld_library_path_append "${HDF5_ROOT}/lib"
+	ld_library_path_append "${HDF5_ROOT}/lib"
+fi
+
+LAPACK_ROOT="${ISSM_EXT_DIR}/lapack/install"
+if [ -d "${LAPACK_ROOT}" ]; then
+	export LAPACK_ROOT # Used in installation of ScaLAPACK, MUMPS, PETSc
+	library_path_append "${LAPACK_ROOT}/lib"
+	ld_library_path_append "${LAPACK_ROOT}/lib"
+
+	if [[ ${MINGW} -eq 1 ]]; then
+		path_append "${LAPACK_ROOT}/lib" # Allows dynamic loader to find DLLs
+	fi
+
+	if ls ${LAPACK_ROOT}/lib/libblas.* 1> /dev/null 2>&1; then
+		export BLAS_ROOT="${LAPACK_ROOT}"
+	fi
+fi
+
+METIS_ROOT="${ISSM_EXT_DIR}/metis/install"
+if [ -d "${METIS_ROOT}" ]; then
+	export METIS_ROOT # Used in installation of ParMETIS, Gmsh, PETSc
+	library_path_prepend "${METIS_ROOT}/lib"
+	ld_library_path_prepend "${METIS_ROOT}/lib"
+
+	if [[ ${MINGW} -eq 1 ]]; then
+		path_append "${METIS_ROOT}/lib" # Allows dynamic loader to find DLLs
+	fi
+fi
+
+MUMPS_ROOT="${ISSM_EXT_DIR}/mumps/install"
+if [ -d "${MUMPS_ROOT}" ]; then
+	export MUMPS_ROOT # Used in installation of PETSc
+	library_path_append "${MUMPS_ROOT}/lib"
+
+	if [[ ${MINGW} -eq 1 ]]; then
+		path_append "${MUMPS_ROOT}/lib" # Allows dynamic loader to find DLLs
+	fi
+fi
+
+PARMETIS_ROOT="${ISSM_EXT_DIR}/parmetis/install"
+if [ -d "${PARMETIS_ROOT}" ]; then
+	export PARMETIS_ROOT # Used in installation of MUMPS, PETSc
+	library_path_prepend "${PARMETIS_ROOT}/lib"
+	ld_library_path_prepend "${PARMETIS_ROOT}/lib"
+
+	if [[ ${MINGW} -eq 1 ]]; then
+		path_append "${PARMETIS_ROOT}/lib" # Allows dynamic loader to find DLLs
+	fi
+fi
+
+QD_ROOT="${ISSM_EXT_DIR}/qd/install"
+if [ -d "${QD_ROOT}" ]; then
+	export QD_ROOT # Used in installation of MPLAPACK
+	library_path_prepend "${QD_ROOT}/lib"
+	ld_library_path_prepend "${QD_ROOT}/lib"
+fi
+
+SCALAPACK_ROOT="${ISSM_EXT_DIR}/scalapack/install"
+if [ -d "${SCALAPACK_ROOT}" ]; then
+	export SCALAPACK_ROOT # Used in installation of MUMPS, PETSc
+	library_path_append "${SCALAPACK_ROOT}/lib"
+
+	if [[ ${MINGW} -eq 1 ]]; then
+		path_append "${SCALAPACK_ROOT}/lib" # Allows dynamic loader to find DLLs
+	fi
+fi
+
+ZLIB_ROOT="${ISSM_EXT_DIR}/zlib/install"
+if [ -d "${ZLIB_ROOT}" ]; then
+	export ZLIB_ROOT # Used in installation of NetCDF, GDAL, GMT
+	ld_library_path_append "${ZLIB_ROOT}/lib"
+fi
+
+PETSC_ROOT="${ISSM_EXT_DIR}/petsc/install"
+if [ -d "${PETSC_ROOT}" ]; then
+	export PETSC_ROOT # Used in installation of Gmsh
+	cpath_prepend "${PETSC_ROOT}/include"
+	library_path_prepend "${PETSC_ROOT}/lib"
+	ld_library_path_prepend "${PETSC_ROOT}/lib"
+
+	if [[ ${MINGW} -eq 1 ]]; then
+		path_append "${PETSC_ROOT}/lib" # Allows dynamic loader to find DLLs
+	fi
+
+	# In case we have installed certain external packages via PETSc
+	#
+
+	# BLAS
+	if ls ${PETSC_ROOT}/lib/libblas.* 1> /dev/null 2>&1 || ls ${PETSC_ROOT}/lib/libfblas.* 1> /dev/null 2>&1; then
+		export BLAS_ROOT="${PETSC_ROOT}" # Used in installation of Dakota, GMT
+	fi
+
+	# HDF5
+	if ls ${PETSC_ROOT}/lib/libhdf5.* 1> /dev/null 2>&1; then
+		export HDF5_ROOT="${PETSC_ROOT}" # Used in installation of NetCDF, GDAL
+		cpath_append "${PETSC_ROOT}/include"
+		library_path_append "${PETSC_ROOT}/lib"
+		dyld_library_path_append "${PETSC_ROOT}/lib"
+		ld_library_path_append "${PETSC_ROOT}/lib"
+	fi
+
+	# LAPACK
+	if ls ${PETSC_ROOT}/lib/liblapack.* 1> /dev/null 2>&1 || ls ${PETSC_ROOT}/lib/libflapack.* 1> /dev/null 2>&1; then
+		export LAPACK_ROOT="${PETSC_ROOT}" # Used in installation of Dakota, GMT
+	fi
+
+	# METIS
+	if ls ${PETSC_ROOT}/lib/libmetis.* 1> /dev/null 2>&1; then
+		export METIS_ROOT="${PETSC_ROOT}" # Used in installation of Gmsh
+	fi
+
+	# MPICH
+	if [ -f "${PETSC_ROOT}/bin/mpiexec" ]; then
+		MPI_ROOT=${PETSC_ROOT}
+		export MPI_DIR=${MPI_ROOT}
+		export MPI_HOME=${MPI_ROOT} # Used in installation of Dakota
+		export MPI_INC_DIR="${MPI_ROOT}/include"
+		path_prepend "${MPI_ROOT}/bin"
+		cpath_prepend "${MPI_ROOT}/include"
+		ld_library_path_append "${MPI_ROOT}/lib"
+	fi
+
+	# ZLIB
+	if ls ${PETSC_ROOT}/lib/libz.* 1> /dev/null 2>&1; then
+		export ZLIB_ROOT="${PETSC_ROOT}" # Used in installation of NetCDF, GDAL
+		ld_library_path_append "${PETSC_ROOT}/lib"
+	fi
+fi
+
+MPLAPACK_ROOT="${ISSM_EXT_DIR}/mplapack/install"
+if [ -d "${MPLAPACK_ROOT}" ]; then
+	cplus_include_path_prepend "${MPLAPACK_ROOT}/include"
+	cplus_include_path_prepend "${MPLAPACK_ROOT}/include/mplapack"
+	library_path_prepend "${MPLAPACK_ROOT}/lib"
+	ld_library_path_prepend "${MPLAPACK_ROOT}/lib"
+fi
+
+SCOTCH_ROOT="${ISSM_EXT_DIR}/scotch/install"
+ld_library_path_append "${SCOTCH_ROOT}/lib"
+
+SLEPC_ROOT="${ISSM_EXT_DIR}/slepc/install"
+ld_library_path_append "${SLEPC_ROOT}/lib"
+
+TAO_ROOT="${ISSM_EXT_DIR}/tao/install"
+ld_library_path_append "${TAO_ROOT}/lib"
+
+BOOST_ROOT="${ISSM_EXT_DIR}/boost/install"
+if [ -d "${BOOST_ROOT}" ]; then
+	export BOOST_ROOT # Used in installation of Dakota
+	export BOOST_DIR=${BOOST_ROOT}
+	export BOOSTROOT=${BOOST_ROOT}
+	path_append "${BOOST_ROOT}/bin"
+	library_path_prepend "${BOOST_ROOT}/lib"
+	ld_library_path_prepend "${BOOST_ROOT}/lib"
+	dyld_library_path_prepend "${BOOST_ROOT}/lib"
+fi
+
+DAKOTA_ROOT="${ISSM_EXT_DIR}/dakota/install"
+if [ -d "${DAKOTA_ROOT}" ]; then
+	path_append "${DAKOTA_ROOT}/bin"
+	ld_library_path_prepend "${DAKOTA_ROOT}/lib"
+	dyld_library_path_prepend "${DAKOTA_ROOT}/lib"
+fi
+
+NCO_ROOT="${ISSM_EXT_DIR}/nco/install/bin"
+path_prepend "${NCO_ROOT}/bin"
+
+CPPCHECK_ROOT="${ISSM_EXT_DIR}/cppcheck/install"
+path_append "${CPPCHECK_ROOT}/bin"
+
+MERCURIAL_ROOT="${ISSM_EXT_DIR}/mercurial/install"
+if [ -d "${MERCURIAL_ROOT}" ]; then
+	export PYTHONPATH="${PYTHONPATH}:${MERCURIAL_ROOT}/mercurial/pure/"
+	path_append "${MERCURIAL_ROOT}"
+fi
+
+GSL_ROOT="${ISSM_EXT_DIR}/gsl/install"
+if [ -d "${GSL_ROOT}" ]; then
+	export GSL_HOME="${GSL_ROOT}" # Used in installation of Dakota
+	cpath_prepend "${GSL_ROOT}/include"
+	ld_library_path_append "${GSL_ROOT}/lib"
+fi
+
+NETCDF_ROOT="${ISSM_EXT_DIR}/netcdf/install"
+if [ -d "${NETCDF_ROOT}" ]; then
+	export NETCDF_ROOT # Used in installation of GDAL, GMT
+	path_prepend "${NETCDF_ROOT}/bin"
+	cpath_prepend "${NETCDF_ROOT}/include"
+	library_path_prepend "${NETCDF_ROOT}/lib"
+	dyld_library_path_prepend "${NETCDF_ROOT}/lib"
+	ld_library_path_prepend "${NETCDF_ROOT}/lib"
+fi
+
+NETCDF_CXX_ROOT="${ISSM_EXT_DIR}/netcdf-cxx/install"
+if [ -d "${NETCDF_CXX_ROOT}" ]; then
+	ld_library_path_append "${NETCDF_CXX_ROOT}/lib"
+fi
+
+NETCDF_PYTHON_ROOT="${ISSM_EXT_DIR}/netcdf-python/install"
+if [ -d "${NETCDF_PYTHON_ROOT}" ]; then
+	if [ -d "${NETCDF_PYTHON_ROOT}/lib/python2.7/site-packages" ]; then
+		ld_library_path_append "${NETCDF_PYTHON_ROOT}/lib/python2.7/site-packages"
+	fi
+fi
+
+CURL_ROOT="${ISSM_EXT_DIR}/curl/install"
+if [ -d "${CURL_ROOT}" ]; then
+	export CURL_ROOT # Used in installation of NetCDF, GDAL, GMT
+	cpath_prepend "${CURL_ROOT}/include"
+	ld_library_path_prepend "${CURL_ROOT}/lib"
+	dyld_library_path_prepend "${CURL_ROOT}/lib"
+	path_append "${CURL_ROOT}/bin"
+fi
+
+SQLITE_ROOT="${ISSM_EXT_DIR}/sqlite/install"
+if [ -d "${SQLITE_ROOT}" ]; then
+	export SQLITE_ROOT # Used in installation of GDAL
+	path_prepend "${SQLITE_ROOT}/bin"
+	cpath_prepend "${SQLITE_ROOT}/include"
+	library_path_prepend "${SQLITE_ROOT}/lib"
+	ld_library_path_prepend "${SQLITE_ROOT}/lib"
+fi
+
+LIBTIFF_ROOT="${ISSM_EXT_DIR}/libtiff/install"
+if [ -d "${LIBTIFF_ROOT}" ]; then
+	dyld_library_path_append "${LIBTIFF_ROOT}/install/libtiff"
+	ld_library_path_append "${LIBTIFF_ROOT}/install/libtiff"
+fi
+
+PROJ_ROOT="${ISSM_EXT_DIR}/proj/install"
+if [ -d "${PROJ_ROOT}" ]; then
+	export PROJ_ROOT # Used in installation of GDAL
+	path_append "${PROJ_ROOT}/bin"
+	dyld_library_path_append "${PROJ_ROOT}/lib"
+	ld_library_path_append "${PROJ_ROOT}/lib"
+fi
+
+GDAL_ROOT="${ISSM_EXT_DIR}/gdal/install"
+if [ -d "${GDAL_ROOT}" ]; then
+	export GDAL_ROOT # Used in installation of GMT
+	path_prepend "${GDAL_ROOT}/bin"
+	ld_library_path_append "${GDAL_ROOT}/lib"
+fi
+
+GSHHG_ROOT="${ISSM_EXT_DIR}/gshhg/install"
+if [ -d "${GSHHG_ROOT}" ]; then
+	export GSHHG_ROOT # Used in installation of GMT
+fi
+
+GMT_ROOT="${ISSM_EXT_DIR}/gmt/install"
+if [ -d "${GMT_ROOT}" ]; then
+	path_prepend "${GMT_ROOT}/bin"
+	ld_library_path_append "${GMT_ROOT}/lib"
+	dyld_library_path_append "${GMT_ROOT}/lib"
+fi
+
+GMSH_ROOT="${ISSM_EXT_DIR}/gmsh/install"
+if [ -d "${GMSH_ROOT}" ]; then
+	path_prepend "${GMSH_ROOT}/bin"
+	ld_library_path_append "${GMSH_ROOT}/lib"
+	dyld_library_path_append "${GMSH_ROOT}/lib"
+fi
+
+TRIANGLE_ROOT="${ISSM_EXT_DIR}/triangle/install"
+if [ -d "${TRIANGLE_ROOT}" ]; then
+	ld_library_path_append "${TRIANGLE_ROOT}/lib"
+	dyld_library_path_append "${TRIANGLE_ROOT}/lib"
+
+	if [[ ${MINGW} -eq 1 ]]; then
+		path_append "${TRIANGLE_ROOT}/lib" # Allows dynamic loader to find DLLs
+	fi
+fi
+
+ANGELROOT="${ISSM_EXT_DIR}/angel/angel"
+if [ -d "${ANGELROOT}" ]; then
+	export ANGELROOT
+fi
+
+OPENANALYSISROOT="${ISSM_EXT_DIR}/openanalysis/install"
+if [ -d "${OPENANALYSISROOT}" ]; then
+	export OPENANALYSISROOT
+	ld_library_path_append "${OPENANALYSISROOT}/lib"
+fi
+
+BBFTP_ROOT="${ISSM_EXT_DIR}/bbftp/install"
+path_append "${BBFTP_ROOT}/bin"
+
+ADIC_ROOT="${ISSM_EXT_DIR}/adic/install"
+path_append "${ADIC_ROOT}/bin"
+ld_library_path_append "${ADIC_ROOT}/lib"
+
+COLPACK_ROOT="${ISSM_EXT_DIR}/colpack/install"
+ld_library_path_append "${COLPACK_ROOT}/lib"
+
+APPSCAN_ROOT="${ISSM_EXT_DIR}/appscan/install"
+path_append "${APPSCAN_ROOT}/bin"
+
+RATS_ROOT="${ISSM_EXT_DIR}/rats/install"
+path_append "${RATS_ROOT}/bin"
+
+DYSON_ROOT="${ISSM_EXT_DIR}/dyson/"
+path_append "${DYSON_ROOT}"
+
+SHAPELIB_ROOT="${ISSM_EXT_DIR}/shapelib/install"
+path_append "${SHAPELIB_ROOT}/exec"
+
+CCCL_ROOT="${ISSM_EXT_DIR}/cccl/install"
+path_append "${CCCL_ROOT}/bin"
+
+MODELE_ROOT="${ISSM_EXT_DIR}/modelE/install"
+path_append "${MODELE_ROOT}/src/exec"
+
+NCVIEW_ROOT="${ISSM_EXT_DIR}/ncview/install"
+path_append "${NCVIEW_ROOT}"
+
+TCLX_ROOT="${ISSM_EXT_DIR}/tclx/install/lib/tclx8.4"
+ld_library_path_append "${TCLX_ROOT}"
+
+ASPELL_ROOT="${ISSM_EXT_DIR}/aspell/install"
+path_append "${ASPELL_ROOT}/bin"
+
+ESMF_ROOT="${ISSM_EXT_DIR}/esmf/install"
+if [ -d "${ESMF_ROOT}" ]; then
+	path_prepend "${ESMF_ROOT}/bin"
+	ld_library_path_append "${ESMF_ROOT}/lib/libO/Linux.gfortran.64.mpich.default/"
+fi
+
+CVS_ROOT="${ISSM_EXT_DIR}/cvs/install"
+path_prepend "${CVS_ROOT}/bin"
+
+APR_ROOT="${ISSM_EXT_DIR}/apr/install"
+path_append "${APR_ROOT}/bin"
+ld_library_path_append "${APR_ROOT}/lib"
+
+APR_UTIL_ROOT="${ISSM_EXT_DIR}/apr-util/install"
+path_prepend "${APR_UTIL_ROOT}/bin"
+ld_library_path_append "${APR_UTIL_ROOT}/lib"
+
+YAMS_ROOT="${ISSM_EXT_DIR}/yams/install"
+path_append "${YAMS_ROOT}"
+
+SWIG_ROOT="${ISSM_EXT_DIR}/swig/install"
+path_append "${SWIG_ROOT}"
+
+INISHELL_ROOT="${ISSM_EXT_DIR}/inishell/install"
+path_append "${INISHELL_ROOT}"
+
+EXPAT_ROOT="${ISSM_EXT_DIR}/expat/install"
+ld_library_path_prepend "${EXPAT_ROOT}"
+dyld_library_path_prepend "${EXPAT_ROOT}"
+
+NEOPZ_ROOT="${ISSM_EXT_DIR}/neopz/install"
+if [ -d "${NEOPZ_ROOT}" ]; then
+	export REFPATTERNDIR="${NEOPZ_ROOT}/include/refpatterns"
+fi
+
+XERCESROOT="${ISSM_EXT_DIR}/xerces/install"
+if [ -d "${XERCESROOT}" ]; then
+	export XERCESROOT
+	export XERCESCROOT="${ISSM_EXT_DIR}/xerces/src"
+fi
+
+XAIFBOOSTERROOT="${ISSM_EXT_DIR}/xaifbooster"
+XAIF_ROOT="${XAIFBOOSTERROOT}/xaifBooster"
+if [ -d "${XAIF_ROOT}" ]; then
+	export XAIFBOOSTERROOT
+	export XAIF_DIR="${XAIF_ROOT}"
+	export XAIFBOOSTER_HOME="${XAIF_ROOT}"
+	export PLATFORM="x86-Linux"
+fi
+
+VALGRIND_ROOT="${ISSM_DIR}/externalpackages/valgrind/install"
+if [ -d "${VALGRIND_ROOT="${ISSM_DIR}/valgrind/install"
+}" ]; then
+	path_prepend "${VALGRIND_ROOT}/bin"
+fi
+
+DOXYGEN_ROOT="${ISSM_EXT_DIR}/doxygen/install"
+path_prepend "${DOXYGEN_ROOT}/bin"
+
+SHELL2JUNIT_ROOT="${ISSM_EXT_DIR}/shell2junit/install"
+path_append "${SHELL2JUNIT_ROOT}"
Index: /issm/branches/trunk-dlcheng-ASE/examples/AMR/domain.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/AMR/domain.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/AMR/domain.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+800000 0
+800000 50000
+0 50000
+0 0
Index: /issm/branches/trunk-dlcheng-ASE/examples/AMR/front.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/AMR/front.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/AMR/front.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+799900 -100
+800100 -100
+800100 50100
+799900 50100
+799900 -100
Index: /issm/branches/trunk-dlcheng-ASE/examples/AMR/mismip.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/AMR/mismip.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/AMR/mismip.par	(revision 27955)
@@ -0,0 +1,51 @@
+% creating thickness
+md.geometry.bed=-100-abs(md.mesh.x)/1000;
+md.geometry.base=-90*ones(md.mesh.numberofvertices,1);
+md.geometry.surface=10*ones(md.mesh.numberofvertices,1);
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+md.mask.ocean_levelset=-1*ones(md.mesh.numberofvertices,1);
+
+% creating basal drag
+md.friction.coefficient=sqrt(10^7)*ones(md.mesh.numberofvertices,1); %q=1.
+md.friction.p=3*ones(md.mesh.numberofelements,1);
+md.friction.q=zeros(md.mesh.numberofelements,1);
+
+% creating flow law paramter
+md.materials.rheology_B=1/((10^-25)^(1/3))*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.materials.rheology_law='None';
+
+% creating boundary conditions
+md=SetIceShelfBC(md,'./front.exp');
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+pos=find((md.mesh.y<50000.1 & md.mesh.y>49999.9) | (md.mesh.y<0.1 & md.mesh.y>-0.1));
+md.stressbalance.spcvy(pos)=0;
+pos2=find(md.mesh.x<0.1 & md.mesh.x>-0.1);
+md.stressbalance.spcvx(pos2)=0;
+md.stressbalance.spcvz(pos)=NaN;
+md.stressbalance.spcvz(pos2)=NaN;
+
+% creating forcing conditions
+md.smb.mass_balance=0.5*ones(md.mesh.numberofvertices,1);
+md.basalforcings.geothermalflux=0.5*ones(md.mesh.numberofvertices,1);
+md.thermal.spctemperature=NaN*ones(md.mesh.numberofvertices,1);
+md.groundingline.migration='SubelementMigration';
+
+% setting parameters
+md.materials.rho_ice=900;
+md.materials.rho_water=1000;
+md.constants.g=9.8;
+md.constants.yts=3600*24*365;
+md.transient.isthermal=0;
+md.transient.isgroundingline=1;
+md.stressbalance.isnewton=0;
+
+% setting inital condition
+md.initialization.vx=ones(md.mesh.numberofvertices,1);
+md.initialization.vy=ones(md.mesh.numberofvertices,1);
+md.initialization.vz=ones(md.mesh.numberofvertices,1);
+md.initialization.vel=sqrt(2)*ones(md.mesh.numberofvertices,1);
+md.initialization.pressure=md.constants.g*md.materials.rho_ice*md.geometry.thickness;
+md.initialization.temperature=273*ones(md.mesh.numberofvertices,1);
Index: /issm/branches/trunk-dlcheng-ASE/examples/AMR/mismip.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/AMR/mismip.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/AMR/mismip.py	(revision 27955)
@@ -0,0 +1,54 @@
+import numpy as np
+from SetIceShelfBC import SetIceShelfBC
+
+# creating thickness
+md.geometry.bed = -100 - np.abs(md.mesh.x) / 1000
+md.geometry.base = -90 * np.ones((md.mesh.numberofvertices))
+md.geometry.surface = 10 * np.ones((md.mesh.numberofvertices))
+md.geometry.thickness = md.geometry.surface - md.geometry.base
+md.mask.ocean_levelset = -1 * np.ones((md.mesh.numberofvertices))
+
+# creating basal drag
+md.friction.coefficient = np.sqrt(10**7) * np.ones((md.mesh.numberofvertices))  #q = 1.
+md.friction.p = 3 * np.ones((md.mesh.numberofelements))
+md.friction.q = np.zeros((md.mesh.numberofelements))
+
+# creating flow law paramter
+md.materials.rheology_B = 1 / ((1e-25)**(1 / 3)) * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_n = 3 * np.ones((md.mesh.numberofelements))
+md.materials.rheology_law = 'None'
+
+# creating boundary conditions
+md = SetIceShelfBC(md, './front.exp')
+md.stressbalance.spcvx = np.nan * np.ones((md.mesh.numberofvertices))
+md.stressbalance.spcvy = np.nan * np.ones((md.mesh.numberofvertices))
+md.stressbalance.spcvz = np.nan * np.ones((md.mesh.numberofvertices))
+pos = np.nonzero(np.logical_or((np.abs(md.mesh.y - 50000) < 0.1), np.abs(md.mesh.y) < 0.1))
+md.stressbalance.spcvy[pos] = 0
+pos2 = np.nonzero(np.abs(md.mesh.x) < 0.1)
+md.stressbalance.spcvx[pos2] = 0
+md.stressbalance.spcvz[pos] = np.nan
+md.stressbalance.spcvz[pos2] = np.nan
+
+# creating forcing conditions
+md.smb.mass_balance = 0.5 * np.ones((md.mesh.numberofvertices))
+md.basalforcings.geothermalflux = 0.5 * np.ones((md.mesh.numberofvertices))
+md.thermal.spctemperature = np.nan * np.ones((md.mesh.numberofvertices))
+md.groundingline.migration = 'SubelementMigration'
+
+# setting parameters
+md.materials.rho_ice = 900
+md.materials.rho_water = 1000
+md.constants.g = 9.8
+md.constants.yts = 3600 * 24 * 365
+md.transient.isthermal = 0
+md.transient.isgroundingline = 1
+md.stressbalance.isnewton = 0
+
+# setting inital condition
+md.initialization.vx = np.ones((md.mesh.numberofvertices))
+md.initialization.vy = np.ones((md.mesh.numberofvertices))
+md.initialization.vz = np.ones((md.mesh.numberofvertices))
+md.initialization.vel = np.sqrt(2) * np.ones((md.mesh.numberofvertices))
+md.initialization.pressure = md.constants.g * md.materials.rho_ice * md.geometry.thickness
+md.initialization.temperature = 273 * np.ones((md.mesh.numberofvertices))
Index: /issm/branches/trunk-dlcheng-ASE/examples/AMR/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/AMR/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/AMR/runme.m	(revision 27955)
@@ -0,0 +1,69 @@
+% Mismip3D experiment with AMR using BAMG
+steps=[1:3];
+
+if any(steps==1)
+	disp('   Step 1: Coarse mesh');
+
+	%Generate an unstructured coarse mesh on the MISMIP domain with typical element edge length equal to 10,000 m
+	md=bamg(model,'domain','./domain.exp','hmax',10000,'splitcorners',1);
+
+	save AMRCoarseMesh md
+end
+
+if any(steps==2)
+	disp('   Step 2: Parameterization');
+
+	md=loadmodel('AMRCoarseMesh');
+
+	md=setmask(md,'','');
+
+	% Run parameterization script to set up geometry, inital velocity, material properties, etc.
+	md=parameterize(md,'./mismip.par');
+
+	% Set the AMR properties and the refinement criteria
+	% Here, we are refining around the grounding line
+	% We impose the element resolution at grounding equal to 1000 m (1 km)
+	% The criterion used is the element distance to the grounding line
+	% The distance used here is 10000 m (10 km), used in both side around the grouding line (upstream and downstream)
+	md.amr.groundingline_resolution=1000;
+	md.amr.groundingline_distance=10000;
+	md.amr.hmin=1000; % the same resolution used around the grounding line
+	md.amr.hmax=10000; % the same coase resolution used to generate the coarse mesh
+	md.amr.gradation=1.7; % this controls the ratio between two consecutive edges
+	md.amr.fieldname='None'; % no field used here
+	md.amr.keepmetric=0; % no field, no metric
+
+	save AMRParam md
+end
+
+if any(steps==3)
+	disp('   Step 3: Solve!');
+
+	md=loadmodel('AMRParam');
+
+	% Run transient with adaptive mesh refinement
+	md.timestepping.time_step=1;
+	md.timestepping.final_time=500; % here, as example, only 500 yr.
+	md.settings.output_frequency=10;% here, save results every 10 yr
+	md.stressbalance.maxiter=30;
+	md.stressbalance.abstol=NaN;
+	md.stressbalance.restol=1;
+	md.settings.solver_residue_threshold=1e-2; % relaxing (the first stress balance solver iteration presents values higher than the original threshold. This probably happens because the initial velocity is set to one).
+	md.verbose=verbose('convergence',false,'solution',true);
+
+	% Specify that you want to run the model on your current (local host) computer
+	% Change the number of processors according to your machine (here np=2)
+	md.cluster=generic('np',2);
+
+	% Set the AMR frequency, i.e., can be 1 or larger depending on how often the mesh needs to be updated
+	md.transient.amr_frequency=1; % here, we are refining the mesh in every time step
+
+	% Set the flow equation (SSA) and run
+	md=setflowequation(md,'SSA','all');
+	md=solve(md,'Transient');
+
+	% Print the solutions and the mesh in VTK format (needs ParaView:	https://www.paraview.org)
+	AMRexportVTK('./VTK',md);
+
+	save AMRTransient md
+end
Index: /issm/branches/trunk-dlcheng-ASE/examples/AMR/runme.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/AMR/runme.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/AMR/runme.py	(revision 27955)
@@ -0,0 +1,78 @@
+# Mismip3D experiment with AMR using BAMG
+from bamg import bamg
+from model import *
+from export_netCDF import export_netCDF
+from setmask import setmask
+from loadmodel import loadmodel
+from parameterize import parameterize
+from generic import generic
+from exportVTK import exportVTK
+from setflowequation import setflowequation
+from solve import solve
+from plotmodel import plotmodel
+
+
+steps = [4]
+
+if 1 in steps:
+    print('   Step 1: Coarse mesh')
+
+    #Generate an unstructured coarse mesh on the MISMIP domain with typical element edge length equal to 10, 000 m
+    md = bamg(model(), 'domain', './domain.exp', 'hmax', 10000, 'splitcorners', 1)
+
+    export_netCDF(md, 'AMRCoarseMesh.nc')
+
+if 2 in steps:
+    print('   Step 2: Parameterization')
+
+    md = loadmodel('AMRCoarseMesh.nc')
+
+    md = setmask(md, '', '')
+
+    # Run parameterization script to set up geometry, inital velocity, material properties, etc.
+    md = parameterize(md, './mismip.py')
+
+    # Set the AMR properties and the refinement criteria
+    # Here, we are refining around the grounding line
+    # We impose the element resolution at grounding equal to 1000 m (1 km)
+    # The criterion used is the element distance to the grounding line
+    # The distance used here is 10000 m (10 km), used in both side around the grouding line (upstream and downstream)
+    md.amr.groundingline_resolution = 1000
+    md.amr.groundingline_distance = 10000
+    md.amr.hmin = 1000  # the same resolution used around the grounding line
+    md.amr.hmax = 10000  # the same coase resolution used to generate the coarse mesh
+    md.amr.gradation = 1.7  # this controls the ratio between two consecutive edges
+    md.amr.fieldname = 'None'  # no field used here
+    md.amr.keepmetric = 0  # no field, no metric
+
+    export_netCDF(md, 'AMRParam.nc')
+
+if 3 in steps:
+    print('   Step 3: Solve!')
+
+    md = loadmodel('AMRParam.nc')
+
+    # Run transient with adaptive mesh refinement
+    md.timestepping.time_step = 1
+    md.timestepping.final_time = 500   # here, as example, only 500 yr.
+    md.settings.output_frequency = 10  # here, save results every 10 yr
+    md.stressbalance.maxiter = 30
+    md.stressbalance.abstol = np.nan
+    md.stressbalance.restol = 1
+    md.settings.solver_residue_threshold = 1e-2  # relaxing (the first stress balance solver iteration presents values higher than the original threshold. This probably happens because the initial velocity is set to one).
+    md.verbose = verbose('convergence', False, 'solution', True)
+
+    # Specify that you want to run the model on your current (local host) computer
+    # Change the number of processors according to your machine (here np = 2)
+    md.cluster = generic('np', 2)
+
+    # Set the AMR frequency, i.e., can be 1 or larger depending on how often the mesh needs to be updated
+    md.transient.amr_frequency = 1  # here, we are refining the mesh in every time step
+
+    # Set the flow equation (SSA) and run
+    md = setflowequation(md, 'SSA', 'all')
+    md = solve(md, 'Transient')
+
+    # Print the solutions and the mesh in VTK format (needs ParaView:    https: / / www.paraview.org)
+    exportVTK('./VTKpy', md)
+    export_netCDF(md, 'AMRTransient.nc')
Index: /issm/branches/trunk-dlcheng-ASE/examples/AMR/runme_with_neopz.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/AMR/runme_with_neopz.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/AMR/runme_with_neopz.m	(revision 27955)
@@ -0,0 +1,66 @@
+% Mismip3D experiment with AMR using NeoPZ (requires NeoPZ installation first, see external packages)
+steps=[1:3];
+
+if any(steps==1)
+	disp('   Step 1: Coarse mesh');
+
+	%Generate an unstructured coarse mesh on the MISMIP domain with typical element edge length equal to 10,000 m
+	md=bamg(model,'domain','./domain.exp','hmax',10000,'splitcorners',1);
+
+	save AMRCoarseMesh md
+end
+
+if any(steps==2)
+	disp('   Step 2: Parameterization');
+
+	md=loadmodel('AMRCoarseMesh');
+
+	md=setmask(md,'','');
+
+	% Run parameterization script to set up geometry, inital velocity, material properties, etc.
+	md=parameterize(md,'./mismip.par');
+
+	% Set the AMR properties and the refinement criteria
+	% Here, we are refining around the grounding line
+	% We impose the element resolution at grounding equal to ~1250 m, which corresponds to 3 levels of refinement
+	% The criterion used is the element distance to the grounding line
+	% The distance used here is 10000 m (10 km), used in both side around the grouding line (upstream and downstream)
+	md.amr=amrneopz;
+	md.amr.level_max=3; % refine 3 times so we have about 1250 m around the grounding line
+	md.amr.gradation=2; % maximum ratio between two adjacent edges
+	md.amr.groundingline_distance=10000;
+
+	save AMRParam md
+end
+
+if any(steps==3)
+	disp('   Step 3: Solve!');
+
+	md=loadmodel('AMRParam');
+
+	% Run transient with adaptive mesh refinement
+	md.timestepping.time_step=1;
+	md.timestepping.final_time=500; % here, as example, only 500 yr.
+	md.settings.output_frequency=10;% here, save results every 10 yr
+	md.stressbalance.maxiter=30;
+	md.stressbalance.abstol=NaN;
+	md.stressbalance.restol=1;
+	md.settings.solver_residue_threshold=1e-2; % relaxing (the first stress balance solver iteration presents values higher than the original threshold. This probably happens because the initial velocity is set to one).
+	md.verbose=verbose('convergence',false,'solution',true);
+
+	% Specify that you want to run the model on your current (local host) computer
+	% Change the number of processors according to your machine (here np=2)
+	md.cluster=generic('np',2);
+
+	% Set the AMR frequency, i.e., can be 1 or larger depending on how often the mesh needs to be updated
+	md.transient.amr_frequency=1; % here, we are refining the mesh in every time step
+
+	% Set the flow equation (SSA) and run
+	md=setflowequation(md,'SSA','all');
+	md=solve(md,'Transient');
+
+	% Print the solutions and the mesh in VTK format (needs ParaView:	https://www.paraview.org)
+	AMRexportVTK('./VTK',md);
+
+	save AMRTransient md
+end
Index: /issm/branches/trunk-dlcheng-ASE/examples/EsaGRACE/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/EsaGRACE/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/EsaGRACE/runme.m	(revision 27955)
@@ -0,0 +1,143 @@
+clear all;
+addpath('../Data','../Functions');
+
+steps=[1];
+
+if any(steps==1)
+	disp('   Step 1: Global mesh creation');
+
+	resolution=300;			% [km]
+	radius = 6.371012*10^3;	% [km]
+
+	md=model;
+	md.mesh=gmshplanet('radius',radius,'resolution',resolution);
+
+	md.mask.ocean_levelset=gmtmask(md.mesh.lat,md.mesh.long);
+
+	save ./Models/EsaGRACE_Mesh md;
+
+	plotmodel (md,'data',md.mask.ocean_levelset,'edgecolor','k');
+end
+
+if any(steps==2)
+	disp('   Step 2: Define loads in meters of ice height equivalent');
+	md = loadmodel('./Models/EsaGRACE_Mesh');
+
+	year_month = 2007+15/365;
+	time_range = [year_month year_month];
+
+	onvertex = 0; % map data on vertex. If 0, it maps on the elemental centroid. 
+	water_load = grace(md.mesh.elements,md.mesh.lat,md.mesh.long,time_range(1),time_range(2),onvertex);
+
+	md.esa.deltathickness = water_load*md.materials.rho_freshwater/md.materials.rho_ice; % ice height equivalent
+
+	save ./Models/EsaGRACE_Loads md;
+
+	plotmodel (md,'data',md.esa.deltathickness,...
+		'view',[90 -90],'caxis',[-.1 .1],...
+		'title','Ice height equivalent [m]');
+end
+
+if any(steps==3)
+	disp('   Step 3: Parameterization');
+	md = loadmodel('./Models/EsaGRACE_Loads');
+
+	love_numbers = lovenumbers('maxdeg',10000,'referenceframe','CF');
+	md.esa.love_h = love_numbers.h;
+	md.esa.love_l = love_numbers.l;
+
+	md.mask.ocean_levelset = ones(md.mesh.numberofvertices,1);
+	md.mask.ice_levelset = ones(md.mesh.numberofvertices,1);
+	pos=find(md.esa.deltathickness~=0);
+	md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+	%md.mask.land_levelset = 1-md.mask.ocean_levelset;
+
+	di=md.materials.rho_ice/md.materials.rho_water;
+	md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+	md.geometry.surface=(1-di)*zeros(md.mesh.numberofvertices,1);
+	md.geometry.base=md.geometry.surface-md.geometry.thickness;
+	md.geometry.bed=md.geometry.base;
+
+	md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1);
+	md.materials.rheology_B=paterson(md.initialization.temperature);
+	md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+	md.miscellaneous.name='EsaGRACE';
+
+	save ./Models/EsaGRACE_Parameterization md;
+end
+
+if any(steps==4)
+	disp('   Step 4: Solve Esa solver');
+	md = loadmodel('./Models/EsaGRACE_Parameterization');
+
+	md.esa.requested_outputs = {'EsaUmotion','EsaNmotion','EsaEmotion'};
+
+	md.cluster=generic('name',oshostname(),'np',3);
+	md.verbose=verbose('111111111');
+
+	md=solve(md,'Esa');
+
+	save ./Models/EsaGRACE_Solution md;
+end
+
+if any(steps==5)
+	disp('   Step 5: Plot solutions');
+	md = loadmodel('./Models/EsaGRACE_Solution');
+
+	sol1 = md.esa.deltathickness*100;				% [cm]
+	sol2 = md.results.EsaSolution.EsaUmotion*1000;	% [mm]
+	sol3 = md.results.EsaSolution.EsaNmotion*1000;	% [mm]
+	sol4 = md.results.EsaSolution.EsaEmotion*1000;	% [mm]
+
+	sol_name={'Change in water equivalent height [cm]', 'Vertical displacement [mm]',...
+		'Horizontal (NS) displacement [mm]', 'Horizontal (EW) displacement [mm]'};
+	fig_name={'Fig_dH.pdf','Fig_vert.pdf','Fig_horzNS.pdf','Fig_horzEW.pdf'};
+
+	res = 1.0; % [degree]
+
+	[lat_grid, lon_grid] = meshgrid(linspace(-90,90,180/res), linspace(-180,180,360/res));
+	sol_grid = zeros(size(lat_grid));
+
+	for kk=1:4
+		sol=eval(sprintf('sol%d',kk));
+
+		if length(sol)==md.mesh.numberofelements
+			for jj=1:md.mesh.numberofelements
+				ii=(jj-1)*3;
+				pp(ii+1:ii+3)=md.mesh.elements(jj,:);
+			end
+			for jj=1:md.mesh.numberofvertices
+				pos=ceil(find(pp==jj)/3);
+				temp(jj)=mean(sol(pos));
+			end
+			sol=temp';
+		end
+
+		F = scatteredInterpolant(md.mesh.lat,md.mesh.long,sol);
+		F.Method = 'linear';
+		F.ExtrapolationMethod = 'linear';
+
+		sol_grid = F(lat_grid, lon_grid);
+		sol_grid(isnan(sol_grid))=0;
+		sol_grid(lat_grid>85 & sol_grid==0)=NaN;
+
+		set(0,'DefaultAxesFontSize',18,'DefaultAxesLineWidth',1,'DefaultTextFontSize',18,'DefaultLineMarkerSize',8)
+		figure1=figure('Position', [100, 100, 1000, 500]);
+		gcf; load coastlines; cla;
+		pcolor(lon_grid,lat_grid,sol_grid); shading flat; hold on;
+		if (kk==1)
+			geoshow(flipud(coastlat),flipud(coastlon),'DisplayType','polygon','FaceColor','white');
+		end
+		plot(coastlon,coastlat,'k'); hold off;
+		c1=colorbar;
+		colormap('haxby');
+		caxis([-min(abs(min(sol)),abs(max(sol))) min(abs(min(sol)),abs(max(sol)))]);
+		xlim([-180 180]);
+		ylim([-90 90]);
+		grid on;
+		title(sol_name(kk));
+		set(gcf,'color','w');
+		%export_fig(fig_name{kk});
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/examples/EsaWahr/RoundDomain.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/EsaWahr/RoundDomain.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/EsaWahr/RoundDomain.exp	(revision 27955)
@@ -0,0 +1,49 @@
+## Name:
+## Icon:0
+# Points Count Value
+41 1
+# X pos Y pos
+20000 0
+19754 3128.7
+19021 6180.3
+17820 9079.8
+16180 11756
+14142 14142
+11756 16180
+9079.8 17820
+6180.3 19021
+3128.7 19754
+0 20000
+-3128.7 19754
+-6180.3 19021
+-9079.8 17820
+-11756 16180
+-14142 14142
+-16180 11756
+-17820 9079.8
+-19021 6180.3
+-19754 3128.7
+-20000 0
+-19754 -3128.7
+-19021 -6180.3
+-17820 -9079.8
+-16180 -11756
+-14142 -14142
+-11756 -16180
+-9079.8 -17820
+-6180.3 -19021
+-3128.7 -19754
+-0 -20000
+3128.7 -19754
+6180.3 -19021
+9079.8 -17820
+11756 -16180
+14142 -14142
+16180 -11756
+17820 -9079.8
+19021 -6180.3
+19754 -3128.7
+20000 0
+
+
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/EsaWahr/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/EsaWahr/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/EsaWahr/runme.m	(revision 27955)
@@ -0,0 +1,164 @@
+clear all;
+addpath('../Functions');
+
+steps=[1];
+
+if any(steps==1)
+	disp('   Step 1: Mesh creation');
+
+	md=roundmesh(model,100000,10000);  % Domain radius and element size [m]
+
+	save ./Models/EsaWahr_Mesh md;
+
+	plotmodel(md,'data','mesh');
+end
+
+if any(steps==2)
+	disp('   Step 2: Anisotropic mesh creation');
+
+	md=roundmesh(model,100000,1000);
+
+	disc_radius=20*1000;
+	rad_dist=sqrt(md.mesh.x.^2+md.mesh.y.^2);	
+	field = abs(rad_dist-disc_radius);
+
+	md = bamg(md,'field',field,'err',50,'hmax',10000);
+
+	save ./Models/EsaWahr_Mesh md;
+
+	plotmodel (md,'data','mesh');
+end
+
+if any(steps==3)
+	disp('   Step 3: Define loads');
+	md = loadmodel('./Models/EsaWahr_Mesh');
+
+	rho_w_i=md.materials.rho_freshwater/md.materials.rho_ice;
+
+	index=md.mesh.elements;		
+	x_cent=mean(md.mesh.x(index),2);
+	y_cent=mean(md.mesh.y(index),2);
+
+	md.esa.deltathickness = zeros(md.mesh.numberofelements,1);
+	disc_radius=20; % [km]
+	rad_dist=sqrt(x_cent.^2+y_cent.^2)/1000;	
+	md.esa.deltathickness(rad_dist<=disc_radius) = -1.0*rho_w_i;
+
+	save ./Models/EsaWahr_Loads md;
+
+	plotmodel (md,'data',md.esa.deltathickness,'title','Ice height equivalent [m]');
+end
+
+if any(steps==4)
+	disp('   Step 4: Parameterization');
+	md = loadmodel('./Models/EsaWahr_Loads');
+
+	love_numbers = lovenumbers('maxdeg',10000,'referenceframe','CF');
+	md.esa.love_h = love_numbers.h;
+	md.esa.love_l = love_numbers.l;
+
+	md.mask.ice_levelset = -ones(md.mesh.numberofvertices,1);
+	md.mask.ocean_levelset = ones(md.mesh.numberofvertices,1);
+
+	di=md.materials.rho_ice/md.materials.rho_water;
+	md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+	md.geometry.surface=(1-di)*zeros(md.mesh.numberofvertices,1);
+	md.geometry.base=md.geometry.surface-md.geometry.thickness;
+	md.geometry.bed=md.geometry.base;
+
+	md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1);
+	md.materials.rheology_B=paterson(md.initialization.temperature);
+	md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+	md.miscellaneous.name='EsaWahr';
+
+	save ./Models/EsaWahr_Parameterization md;
+end
+
+if any(steps==5)
+	disp('   Step 5: Solve Esa solver');
+	md = loadmodel('./Models/EsaWahr_Parameterization');
+
+	md.esa.requested_outputs = {'EsaUmotion','EsaXmotion','EsaYmotion'};
+
+	md.cluster=generic('name',oshostname(),'np',3);
+	md.verbose=verbose('111111111');
+
+	md=solve(md,'Esa');
+
+	save ./Models/EsaWahr_Solution md;
+end
+
+if any(steps==6)
+	disp('   Step 6: Plot solutions');
+	md = loadmodel('./Models/EsaWahr_Solution');
+
+	vert = md.results.EsaSolution.EsaUmotion*1000;		% [mm]
+	horz_n = md.results.EsaSolution.EsaYmotion*1000;	% [mm]
+	horz_e = md.results.EsaSolution.EsaXmotion*1000;	% [mm]
+	horz = sqrt(horz_n.^2+horz_e.^2);						% [mm]
+
+	set(0,'DefaultAxesFontSize',24,'DefaultAxesLineWidth',1,'DefaultTextFontSize',24,'DefaultLineMarkerSize',6);
+	figure('Position', [100, 100, 800, 600]);
+	plotmodel(md,'data',vert,...
+		'xTickLabel#all',[],'yTickLabel#all',[],...
+		'colormap#all','jet','colorbarcornerposition#all','south',...
+		'expdisp#all','./RoundDomain.exp',...
+		'gridded#all',1,...
+		'axispos#1',[0.02 0.505 0.47 0.47],...
+		'colorbarpos#1',[0.045,0.55,0.18,0.02],'colorbartitle#1','Vertical [mm]',...
+		'caxis#1',[0 3.5],...
+		'data',horz,...
+		'axispos#2',[0.505 0.505 0.47 0.47],...
+		'colorbarpos',[0.53,0.55,0.18,0.02],'colorbartitle#2','Horizontal [mm]',...
+		'caxis#2',[0 0.5],...
+		'data',horz_n,...
+		'axispos',[0.02 0.02 0.47 0.47],...
+		'colorbarpos',[0.045,0.065,0.18,0.02],'colorbartitle#3','North-south [mm]',...
+		'data',horz_e,...
+		'caxis#3-4',[-0.5 0.5],...
+		'axispos',[0.505 0.02 0.47 0.47],...
+		'colorbarpos',[0.53,0.065,0.18,0.02],'colorbartitle#4','East-west [mm]');
+	%export_fig('Fig5.pdf');
+end
+
+if any(steps==7)
+	disp('   Step 7: Compare results against Wahr semi-analytic solutions');
+	md = loadmodel('./Models/EsaWahr_Solution');
+
+	vert = md.results.EsaSolution.EsaUmotion*1000;		% [mm]
+	horz_n = md.results.EsaSolution.EsaYmotion*1000;	% [mm]
+	horz_e = md.results.EsaSolution.EsaXmotion*1000;	% [mm]
+	horz = sqrt(horz_n.^2+horz_e.^2);						% [mm]
+
+	xi=[0:500:100000]; % grid points [m]
+	yi=zeros(1,length(xi));
+	vert_track=griddata(md.mesh.x,md.mesh.y,vert,xi,yi,'linear');
+	horz_track=griddata(md.mesh.x,md.mesh.y,horz,xi,yi,'linear');
+
+	% semi-analytic solution (Wahr et al., 2013, JGR, Figure 1)
+	disc_radius = 20*1000; % [m]
+	[vert_wahr, horz_wahr] = wahr(disc_radius,xi,md.esa.love_h,md.esa.love_l);
+
+	set(0,'DefaultAxesFontSize',16,'DefaultAxesLineWidth',1,'DefaultTextFontSize',16,'DefaultLineMarkerSize',6);
+	figure1=figure('Position', [100, 100, 700, 400]);
+	ylabel_1={'0',' ','1','','2','','3',''};
+	axes1 = axes('Layer','top','Position',[0.1 0.15 0.8 0.8],...
+		'XTick',[0:10:100],'xlim',[0 100],...
+		'ylim',[0 3.5],'Ytick',[0:0.5:3.5],'yticklabel',ylabel_1);
+		box(axes1,'on'); hold(axes1,'all'); grid on;
+		xlabel(axes1,'Radial distance [km]');
+		ylabel(axes1,'Displacement [mm]');
+		plot([20 20],[0 3.5],'-k','linewidth',2,'parent',axes1);
+		% analytic soln
+		h3=plot(xi/1000,vert_wahr,'-r','linewidth',5,'parent',axes1);
+		h4=plot(xi/1000,horz_wahr,'-m','linewidth',5,'parent',axes1);
+		% ISSM soln
+		h1=plot(xi/1000,vert_track*917/1000,'-b','linewidth',3,'parent',axes1);
+		h2=plot(xi/1000,horz_track*917/1000,'-c','linewidth',3,'parent',axes1);
+		ag1 = gca;
+		leg1a = legend(ag1,[h3,h1,h4,h2],'Vertical (Wahr)','Vertical (ISSM)','Horizontal (Wahr)','Horizontal (ISSM)');
+		set(leg1a,'location','east','Orientation','Vertical','Box','Off','FontSize',16);
+		set(gcf,'color','w');
+	%export_fig('Fig6.pdf');
+end
Index: /issm/branches/trunk-dlcheng-ASE/examples/Functions/domain_mask.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Functions/domain_mask.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Functions/domain_mask.m	(revision 27955)
@@ -0,0 +1,65 @@
+% mask cryospheric domains: GrIS, AIS, RGI regions 
+function mask = domain_mask(lat,lon,varargin); 
+
+	nv = length(lat); 
+	mask=zeros(nv,1);
+
+	if (strcmp(varargin{:},'Antarctica')==1)
+		% antarctica 
+		rad=30*pi/180;
+		phi0=-90*pi/180;     lambda0=0*pi/180;
+		for j=1:nv 
+			phi=lat(j)/180*pi; lambda=lon(j)/180*pi;
+			delPhi=abs(phi-phi0); delLambda=abs(lambda-lambda0);
+			dist0(j)=2*asin(sqrt(sin(delPhi/2).^2+cos(phi).*cos(phi0).*sin(delLambda/2).^2));
+		end
+		pos=find(dist0<rad);
+	   mask(pos)=1;
+		ocean_levelset=gmtmask(lat,lon); 
+		mask(ocean_levelset==1)=0;
+
+	elseif (strcmp(varargin{:},'Greenland')==1)
+
+		load('Mask_GrIS_Tundra_Glaciers.mat');
+		mask_0=griddata(lat_element,lon_element,mask_tundra1_gris2_glaciers3,lat,lon);
+		mask(mask_0>1.5 & mask_0<2.5)=1; % that would be GrIS
+		mask(isnan(mask))=0; % there are not many glaciers there
+
+	elseif (strcmp(varargin{:},'Alaska')==1)
+		
+		gla_data=dlmread('rgi_glacier_fraction_0125X0125.txt');
+		gla_lat=90-gla_data(:,1);
+		gla_lon=gla_data(:,2);
+		gla_lon(gla_lon>180)=gla_lon(gla_lon>180)-360;
+		mask_reg=gla_data(:,3); % Alaska 
+		mask_reg(mask_reg>0)=1;
+		mask=griddata(gla_lat,gla_lon,mask_reg,lat,lon);
+		mask(mask>0)=1;
+		mask(isnan(mask))=0;  % there are not many glaciers there
+		
+	elseif (strcmp(varargin{:},'HMA')==1)
+		
+		gla_data=dlmread('rgi_glacier_fraction_0125X0125.txt');
+		gla_lat=90-gla_data(:,1);
+		gla_lon=gla_data(:,2);
+		gla_lon(gla_lon>180)=gla_lon(gla_lon>180)-360;
+		mask_reg=sum(gla_data(:,15:17),2); % HMA regions 13-15
+		mask_reg(mask_reg>0)=1;
+		mask=griddata(gla_lat,gla_lon,mask_reg,lat,lon);
+		mask(mask>0)=1;
+		mask(isnan(mask))=0;  % there are not many glaciers there
+		
+	elseif (strcmp(varargin{:},'Glaciers')==1)
+		
+		gla_data=dlmread('rgi_glacier_fraction_0125X0125.txt');
+		gla_lat=90-gla_data(:,1);
+		gla_lon=gla_data(:,2);
+		gla_lon(gla_lon>180)=gla_lon(gla_lon>180)-360;
+		mask_reg=sum(gla_data(:,3:20),2); % all RGI regions excluding AIS peripheral glaciers (#19)
+		mask_reg(mask_reg>0)=1;
+		mask=griddata(gla_lat,gla_lon,mask_reg,lat,lon);
+		mask(mask>0)=1;
+		mask(isnan(mask))=0;  % there are not many glaciers there
+	
+	end
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/Functions/grace.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Functions/grace.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Functions/grace.m	(revision 27955)
@@ -0,0 +1,138 @@
+% map grace loads in meters [m] of water equivalent height 
+function water_load = grace(index,lat,lon,tmin,tmax,onvertex); 
+
+	%compute centroids using (lat,lon) data {{{
+	ne = length(index); % number of elements 
+	nv = length(lat); % number of vertices
+	% [lat,lon] \in [-90:90,-180,180]; 
+	lat_vertex_0=lat; long_vertex_0=lon; 
+	% lat -> [0,180]; long -> [0,360] to compute centroids 
+	lat=90-lat; 
+	lon(lon<0)=180+(180+lon(lon<0)); 
+	
+	ax_0=lat(index(:,1)); ay_0=lon(index(:,1)); 
+	bx_0=lat(index(:,2)); by_0=lon(index(:,2)); 
+	cx_0=lat(index(:,3)); cy_0=lon(index(:,3)); 
+	% find whether long is 0 or 360! This is important to compute centroids as well as elemental area 
+	for ii=1:ne
+		if (min([ay_0(ii),by_0(ii),cy_0(ii)])==0 && max([ay_0(ii),by_0(ii),cy_0(ii)])>180)
+			if ay_0(ii)==0
+				ay_0(ii)=360;
+			end 
+			if by_0(ii)==0
+				by_0(ii)=360; 
+			end 
+			if cy_0(ii)==0 
+				cy_0(ii)=360; 
+			end
+		end 
+	end
+	% correction at the north pole 
+	ay_0(ax_0==0)=(by_0(ax_0==0)+cy_0(ax_0==0))./2; 
+	by_0(bx_0==0)=(cy_0(bx_0==0)+ay_0(bx_0==0))./2; 
+	cy_0(cx_0==0)=(ay_0(cx_0==0)+by_0(cx_0==0))./2; 
+	% correction at the south pole 
+	ay_0(ax_0==180)=(by_0(ax_0==180)+cy_0(ax_0==180))./2; 
+	by_0(bx_0==180)=(cy_0(bx_0==180)+ay_0(bx_0==180))./2; 
+	cy_0(cx_0==180)=(ay_0(cx_0==180)+by_0(cx_0==180))./2; 
+	% 
+	lat_element=(ax_0+bx_0+cx_0)/3; 
+	lon_element=(ay_0+by_0+cy_0)/3;
+
+	% [lat,lon] \in [-90:90,-180,180]; 
+	lat_element_0 = 90-lat_element;		lon_element_0 = lon_element;
+	lon_element_0(lon_element>180) = (lon_element(lon_element>180)-180) - 180;
+	% }}}
+
+	% Monthly GRACE data 
+	filename=['../Data/GRCTellus.JPL.200204_201701.LND.RL05_1.DSTvSCS1411.nc'];
+	try
+		time_0=ncread(filename,'time'); % days since 2002-01-01 00:00:00 UTC
+		long_0=ncread(filename,'lon'); % longitudes: 0.27-359.75
+		lati_0=ncread(filename,'lat'); % latitudes: -89.75:89.75
+		rec=ncread(filename,'lwe_thickness');% rec_ensemble_mean [cm]
+	catch e
+		disp('If dataset file exists at another location, modify the path in examples/Functions/grace.m')
+		rethrow(e)
+	end
+
+
+	time_yr = 2002+time_0/365; % [yr] 
+
+	[nn_0,mm_0] = size(squeeze(rec(:,:,1))); 
+	for jj=1:mm_0     % chose a latitude
+		for kk=1:nn_0
+			ii=nn_0*(jj-1)+kk;
+			lat_0(ii)=lati_0(jj); 
+			lon_0(ii)=long_0(kk); 
+			tws_monthly(:,ii) = rec(kk,jj,:);
+		end 
+	end 
+	% 
+	%% translate variables as grace-related variables -- so I do not need to do too much editing 
+	grace_monthly=tws_monthly; 
+	grace_monthly(grace_monthly<-1344.6016 | grace_monthly>858.5046)=0; 
+
+	% detrend over the entire time period 
+	%grace_monthly = detrend(grace_monthly); % 159X64800 => remove trends from each column! 
+
+	% fill out the blanks {{{ 
+	
+	lat_grace=lat_0; 
+	lon_grace=lon_0; 
+	num_org=length(lon_grace); 
+
+	qq=1;			mm=1; 
+	for jj=2:num_org-1
+		if (lat_grace(jj)~=lat_grace(jj+1))
+			lat_new(qq)=lat_grace(jj); 
+			lon_new(qq)=lon_grace(jj)+(lon_grace(jj)-lon_grace(jj-1)); 
+			load_new(:,qq)=grace_monthly(:,mm); 
+			lat_new(qq+1)=lat_grace(jj); 
+			lon_new(qq+1)=lon_grace(mm)-(lon_grace(jj)-lon_grace(jj-1)); 
+			load_new(:,qq+1)=grace_monthly(:,jj); 
+			qq=qq+2; 
+			mm=jj+1; % to find out the value for monthly data 
+		end
+	end
+	
+	num_add=length(lat_new); 
+	num_plus=num_org+num_add;
+
+	lat_grace_plus=zeros(num_plus,1); 
+	lon_grace_plus=zeros(num_plus,1); 
+	load_grace_plus=zeros(length(time_0),num_plus); 
+	
+	lat_grace_plus(1:num_org)=lat_grace;
+	lat_grace_plus(1+num_org:num_plus)=lat_new; 
+	lon_grace_plus(1:num_org)=lon_grace;
+	lon_grace_plus(1+num_org:num_plus)=lon_new; 
+	load_grace_plus(:,1:num_org)=grace_monthly; 
+	load_grace_plus(:,1+num_org:num_plus)=load_new; %(:,:);
+	% }}}
+
+	% choose selected months ONLY 
+	[diff1,pos1] = min(abs(tmin-time_yr));
+	[diff2,pos2] = min(abs(tmax-time_yr)); 
+
+	time_yr=time_yr(pos1:pos2); 
+	load_grace_plus=load_grace_plus(pos1:pos2,:); 
+	num_yr=length(time_yr); 
+	if onvertex
+		water_load_0=zeros(nv,num_yr);
+	else
+		water_load_0=zeros(ne,num_yr);
+	end
+
+	for jj=1:num_yr
+		if onvertex
+			water_load_0(:,jj) = griddata(lat_grace_plus,lon_grace_plus,load_grace_plus(jj,:),lat_vertex_0,lon);
+		else 
+			water_load_0(:,jj) = griddata(lat_grace_plus,lon_grace_plus,load_grace_plus(jj,:),lat_element_0,lon_element);
+		end
+		disp([num2str(jj),' of ',num2str(num_yr),' months done!']); 
+	end 
+
+	water_load=water_load_0/100;		% cm -> meters of water 
+	water_load(isnan(water_load))=0; 
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/Greenland/CheatSheet.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Greenland/CheatSheet.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Greenland/CheatSheet.m	(revision 27955)
@@ -0,0 +1,72 @@
+if any(steps==7)
+	disp('   Step 7: Historical Relaxation run');
+	md = loadmodel('./Models/Greenland.Control_drag');
+
+	load smbbox
+
+	%convert mesh x,y into the Box projection
+	[md.mesh.lat,md.mesh.long]  = xy2ll(md.mesh.x,md.mesh.y,+1,39,71);
+	[xi,yi]= ll2xy(md.mesh.lat,md.mesh.long,+1,45,70);
+
+	%Interpolate and set surface mass balance
+	index = BamgTriangulate(x1(:),y1(:));
+	smb_mo = InterpFromMeshToMesh2d(index,x1(:),y1(:),smbmean(:),xi,yi);
+	smb = smb_mo*12/1000*md.materials.rho_freshwater/md.materials.rho_ice;
+	md.smb.mass_balance = [smb;1 ];
+
+	%Set transient options, run for 20 years, saving every 5 timesteps
+	md.timestepping.time_step=0.2;
+	md.timestepping.final_time=200;
+	md.settings.output_frequency=5;
+
+	%Additional options
+	md.inversion.iscontrol=0;
+	md.transient.requested_outputs={'IceVolume','TotalSmb', ...
+		'SmbMassBalance'};
+	md.verbose=verbose('solution',true,'module',true);
+
+	%Go solve
+	md.cluster=generic('name',oshostname,'np',2);
+	md=solve(md,'Transient');
+
+	save ./Models/Greenland.HistoricTransient_200yr md;
+end
+
+if any(steps==8)
+	disp('   Step 8: Plotting exercise');
+
+	%Load historic transient model
+	md = loadmodel('./Models/Greenland.HistoricTransient_200yr');
+
+	%Create Line Plots of relaxation run.  Create a figure.
+	figure
+
+	%Save surface mass balance, by looping through 200 years (1000 steps)
+	% Note, the first output will always contain output from time step 1
+	surfmb=[]; for i=2:201; surfmb=[surfmb ...
+		md.results.TransientSolution(i).SmbMassBalance]; end
+
+	%Plot surface mass balance time series in first subplot
+	subplot(3,1,1); plot([1:200],mean(surfmb));
+
+	%Title this plot Mean surface mass balance
+	title('Mean Surface mass balance');
+
+	%Save velocity by looping through 200 years
+	vel=[]; for i=2:201; vel=[vel md.results.TransientSolution(i).Vel]; end
+
+	%Plot velocity time series in second subplot
+	subplot(3,1,2); plot([1:200],mean(vel));
+
+	%Title this plot Mean Velocity
+	title('Mean Velocity');
+
+	%Save Ice Volume by looping through 200 years
+	volume=[]; for i=2:201; volume=[volume md.results.TransientSolution(i).IceVolume]; end
+
+	%Plot volume time series in third subplot
+	subplot(3,1,3); plot([1:200],volume);
+
+	%Title this plot Mean Velocity and add an x label of years
+	title('Ice Volume'); xlabel('years');
+end
Index: /issm/branches/trunk-dlcheng-ASE/examples/Greenland/CheatSheet.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Greenland/CheatSheet.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Greenland/CheatSheet.py	(revision 27955)
@@ -0,0 +1,89 @@
+if 7 in steps:
+    #  Step 7: Historical Relaxation run {{{
+    print('   Step 7: Historical Relaxation run')
+    md = loadmodel('./Models/Greenland.Control_drag.nc')
+
+    with open('./smbbox.npz', "rb") as smbFile:
+        SMB = np.load(smbFile)
+        x1 = np.squeeze(SMB['x1'])
+        y1 = np.squeeze(SMB['y1'])
+        smbmean = np.squeeze(SMB['smbmean'])
+
+    #convert mesh x, y into the Box projection
+    [md.mesh.lat, md.mesh.long] = xy2ll(md.mesh.x, md.mesh.y, + 1, 39, 71)
+    [xi, yi] = ll2xy(md.mesh.lat, md.mesh.long, + 1, 45, 70)
+
+    #Interpolate and set surface mass balance
+    x1 = x1.flatten()
+    y1 = y1.flatten()
+    smbmean = smbmean.flatten()
+    index = BamgTriangulate(x1, y1)
+    smb_mo = InterpFromMeshToMesh2d(index, x1, y1, smbmean, xi, yi)
+    smb = smb_mo * 12 / 1000 * md.materials.rho_freshwater / md.materials.rho_ice
+    md.smb.mass_balance = np.append(smb, 1)
+
+    #Set transient options, run for 20 years, saving every timestep
+    md.timestepping.time_step = 0.2
+    md.timestepping.final_time = 200
+    md.settings.output_frequency = 5
+
+    #Additional options
+    md.inversion.iscontrol = 0
+    md.transient.requested_outputs = ['IceVolume', 'TotalSmb', 'SmbMassBalance']
+    md.verbose = verbose('solution', True, 'module', True)
+
+    #Go solve
+    md.cluster = generic('name', gethostname(), 'np', 2)
+    md = solve(md, 'Transient')
+
+    export_netCDF(md, './Models/Greenland.HistoricTransient_200yr.nc')
+    # }}}
+
+if 8 in steps:
+    # Step 8: Plotting exercise {{{
+    print('   Step 8: Plotting exercise')
+    md = loadmodel('./Models/Greenland.HistoricTransient_200yr.nc')
+
+    #Create Line Plots of relaxation run. Create a figure.
+    fig = plt.figure(tight_layout=True)
+
+    #Save surface mass balance, by looping through 200 years (1000 steps)
+    #Note, the first output will always contain output from time step 1
+
+    Timer = np.arange(0.2, 200.2)
+    surfmb = []
+    for i in range(0, 200):
+        surfmb.append(md.results.TransientSolution[i].SmbMassBalance)
+
+    #Plot surface mass balance time series in first subplot
+    ax = fig.add_subplot(311)
+    ax.plot(Timer, np.nanmean(surfmb, axis=1))
+
+    #Title this plot Mean surface mass balance
+    ax.set_title('Mean Surface mass balance')
+
+    #Save velocity by looping through 200 years
+    vel = []
+    for i in range(0, 200):
+        vel.append(md.results.TransientSolution[i].Vel)
+
+    #Plot velocity time series in second subplot
+    ay = fig.add_subplot(312)
+    ay.plot(Timer, np.nanmean(vel, axis=1))
+
+    #Title this plot Mean Velocity
+    ay.set_title('Mean Velocity')
+
+    #Save Ice Volume by looping through 200 years
+    volume = []
+    for i in range(0, 200):
+        volume.append(md.results.TransientSolution[i].IceVolume)
+
+    #Plot volume time series in third subplot
+    az = fig.add_subplot(313)
+    az.plot(Timer, volume)
+
+    #Title this plot Mean Velocity and add an x label of years
+    az.set_title('Ice Volume')
+    az.set_xlabel('years')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/examples/Greenland/DomainOutline.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Greenland/DomainOutline.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Greenland/DomainOutline.exp	(revision 27955)
@@ -0,0 +1,733 @@
+## Name:DomainOutline
+## Icon:0
+# Points Count Value
+727 1.000000
+# X pos Y pos
+47662.8073760000 -2621047.2585999998
+39869.9055420000 -2638077.6292949999
+26037.5047870000 -2644088.3483640002
+24868.5695120000 -2659115.1460360000
+25647.8596950000 -2674141.9437079998
+16880.8451320000 -2687666.0616130000
+515.7512810000 -2685662.4885900002
+-7666.7956450000 -2672639.2639410002
+-22083.6640370000 -2677147.3032430001
+-30071.3884170000 -2690170.5278920000
+-44683.0793550000 -2694678.5671930001
+-41760.7411680000 -2709705.3648660001
+-37669.4677050000 -2724231.2692820001
+-44488.2568100000 -2738757.1736989999
+-55787.9644690000 -2753283.0781149999
+-67672.1397650000 -2742263.4264890002
+-87154.3943500000 -2741762.5332330000
+-105078.0685680000 -2741011.1933490001
+-97090.3441880000 -2760546.0303230002
+-99817.8598300000 -2780581.7605530000
+-82478.6532500000 -2789096.9459000002
+-77218.4445120000 -2804123.7435730002
+-77023.6219660000 -2820152.3277560002
+-95336.9412760000 -2829669.2996149999
+-112870.9704020000 -2832674.6591500002
+-123196.5653320000 -2818649.6479890002
+-122417.2751480000 -2834177.3389170002
+-120274.2271440000 -2849204.1365890000
+-105662.5362060000 -2854713.9624020001
+-89492.2649000000 -2850706.8163560000
+-77997.7346950000 -2860724.6814710000
+-92024.9579960000 -2867737.1870519998
+-84816.5238000000 -2890277.3835600000
+-94752.4736380000 -2901797.9284419999
+-114234.7282230000 -2894284.5296060001
+-127677.4838860000 -2883765.7712349999
+-146964.9159250000 -2888774.7037930000
+-139951.3042750000 -2905805.0744880000
+-154173.3501210000 -2916824.7261140002
+-165667.8803260000 -2904302.3947210000
+-162550.7195930000 -2920330.9789040000
+-152809.5923000000 -2934355.9900650000
+-147744.2061080000 -2949883.6809930000
+-163719.6548680000 -2950384.5742489998
+-175603.8301650000 -2963908.6921540000
+-189825.8760110000 -2956896.1865730002
+-195670.5523870000 -2971422.0909899999
+-210282.2433250000 -2966413.1584319999
+-222750.8862590000 -2978301.3022220000
+-214763.1618800000 -2995247.5385030000
+-222750.8862590000 -3011386.8111520000
+-206970.2600460000 -3016228.5929470002
+-217295.8549760000 -3027122.6019839998
+-232686.8360980000 -3031964.3837790000
+-212035.6462380000 -3035192.2383090002
+-212814.9364210000 -3050928.0291410000
+-197229.1327540000 -3048910.6200600001
+-185344.9574570000 -3058190.7018329999
+-174824.5399810000 -3071102.1199520002
+-182812.2643610000 -3084820.5017030002
+-192163.7465610000 -3098942.3652710002
+-176577.9428940000 -3092486.6562120002
+-184955.3123650000 -3105801.5561469998
+-182617.4418150000 -3121537.3469790001
+-199372.1807580000 -3120326.9015310002
+-218464.7902510000 -3115888.6015519998
+-205022.0345870000 -3126782.6105900002
+-189825.8760110000 -3128800.0196710001
+-198592.8905740000 -3146149.7377680000
+-213009.7589670000 -3140904.4741580002
+-225283.5793550000 -3131220.9105679998
+-222750.8862590000 -3146149.7377680000
+-208334.0178670000 -3151395.0013790000
+-195670.5523870000 -3161078.5649680002
+-213009.7589670000 -3171569.0921900002
+-227621.4499060000 -3161078.5649680002
+-242622.7859360000 -3157850.7104389998
+-240090.0928400000 -3174393.4649040001
+-220023.3706180000 -3185690.9557579998
+-233076.4811890000 -3193357.1102660000
+-258013.7670580000 -3188111.8466550000
+-275158.1510920000 -3196181.4829790001
+-258208.5896040000 -3198198.8920600000
+-252753.5583200000 -3213127.7192600002
+-270482.4099920000 -3215952.0919740000
+-258793.0572410000 -3226442.6191960000
+-275547.7961840000 -3232969.1157640000
+-276521.9089130000 -3248275.5695210001
+-293276.6478560000 -3241868.2167850002
+-282561.4078340000 -3256818.7065010001
+-288211.2616640000 -3273549.0164200002
+-302433.3075110000 -3267141.6636850000
+-305745.2907900000 -3251479.2458879999
+-313733.0151700000 -3237596.6482950002
+-310810.6769820000 -3218018.6260489998
+-325812.0130120000 -3213747.0575589999
+-338280.6559470000 -3203780.0644160002
+-336527.2530340000 -3187761.6825779998
+-321720.7395500000 -3185269.9342919998
+-325812.0130120000 -3165691.9120459999
+-313538.1926240000 -3155368.9548610002
+-329708.4639290000 -3158928.5952699999
+-338085.8334010000 -3173167.1569030001
+-351723.4116100000 -3164268.0558819999
+-342566.7519550000 -3151809.3144530002
+-325812.0130120000 -3153233.1706160000
+-310615.8544360000 -3148249.6740450002
+-329123.9962920000 -3150029.4942490002
+-343151.2195930000 -3144334.0695949998
+-361854.1839940000 -3145401.9617180000
+-377634.8102080000 -3142910.2134320000
+-388350.0502290000 -3154657.0267800000
+-397701.5324300000 -3178150.6534750001
+-417573.4321060000 -3179930.4736790000
+-432720.8850460000 -3186308.0579260001
+-451813.4945390000 -3187438.8412219998
+-467788.9432980000 -3177261.7915590000
+-482985.1018740000 -3173492.5139070000
+-490583.1811620000 -3158792.3310610000
+-492726.2291670000 -3141453.6538590002
+-490193.5360710000 -3119214.9157079998
+-505389.6946470000 -3113560.9992289999
+-489803.8909790000 -3110922.5048719998
+-478309.3607740000 -3100368.5274439999
+-495648.5673540000 -3101122.3829750000
+-512792.9513890000 -3108660.9382799999
+-501103.5986380000 -3097353.1053220001
+-493895.1644420000 -3083783.7057719999
+-486491.9077000000 -3068329.6673960001
+-503636.2917340000 -3066068.1008040002
+-522728.9012270000 -3064183.4619780001
+-521559.9659520000 -3046467.8570099999
+-531301.0932440000 -3029506.1075729998
+-543769.7361790000 -3012167.4303710000
+-545912.7841830000 -2992944.1143419999
+-550004.0576459999 -2974474.6538439998
+-567538.0867720000 -2983897.8479749998
+-585851.4060810000 -2995959.5364640001
+-589942.6795440000 -2981259.3536189999
+-572213.8278720001 -2975982.3649050002
+-565200.2162220000 -2959397.5432330002
+-548055.8321870000 -2954120.5545190000
+-545717.9616370000 -2933389.5274290000
+-536561.3019820000 -2920197.0556450002
+-545523.1390910000 -2907758.4393910002
+-533444.1412490000 -2898335.2452590000
+-530568.0950890000 -2883304.2548420001
+-545624.1658510000 -2879383.1998239998
+-559750.8495300000 -2868110.1666489998
+-577223.3267109999 -2867129.9028940001
+-590606.5007220000 -2859287.7928590002
+-573319.9009570000 -2851445.6828239998
+-551572.2431889999 -2846054.2321750000
+-530939.8499220000 -2834781.1989989998
+-528337.5660870000 -2817626.5832969998
+-543765.3916830000 -2804883.1544900001
+-528151.6886699999 -2802432.4951040000
+-528151.6886699999 -2785768.0112790000
+-513467.3727410000 -2778416.0331210000
+-513839.1275750000 -2760771.2855420001
+-525735.2822510001 -2749498.2523670001
+-509563.9469880000 -2738225.2191909999
+-517184.9210780000 -2724501.5266300002
+-532240.9918400000 -2725971.9222610001
+-524248.2629170000 -2707837.0428050002
+-512537.9856570000 -2694113.3502429998
+-521088.3468310000 -2678429.1301730000
+-538189.0691780000 -2669606.7563829999
+-556033.3011930001 -2677448.8664190001
+-539676.0885130001 -2666175.8332429999
+-526664.6693360000 -2658333.7232080000
+-517556.6759110000 -2639708.7118739998
+-526107.0370850000 -2626965.2830670001
+-538932.5788460000 -2618142.9092779998
+-550456.9786890000 -2607360.0079790000
+-565698.9268680000 -2599517.8979440001
+-581126.7524640000 -2600988.2935759998
+-583110.5023000001 -2578346.1085480000
+-572583.8192940000 -2566324.6704099998
+-556315.3091930000 -2558811.2715739999
+-538132.8567270000 -2571333.6029679999
+-524735.2601730000 -2578346.1085480000
+-519759.0100240000 -2594875.5859869998
+-503107.7114500000 -2585859.5073839999
+-486456.4128760000 -2576342.5355250002
+-477843.6722340000 -2559312.1648300001
+-474015.7875040000 -2536771.9683220000
+-473441.6047950000 -2521244.2773940000
+-474972.7586870000 -2504714.7999539999
+-485690.8359300000 -2491691.5753049999
+-486073.6244030000 -2476664.7776330002
+-492581.0284430000 -2459634.4069380001
+-474207.1817410000 -2447112.0755440001
+-465594.4410990000 -2434589.7441509999
+-462340.7390790000 -2418060.2667109999
+-462914.9217880000 -2399026.3229930000
+-468465.3546460000 -2375484.3399729999
+-473058.8163220000 -2360457.5423010001
+-478417.8549440000 -2343427.1716060000
+-504256.0768690000 -2331405.7334679998
+-489901.5091330000 -2322389.6548649999
+-475164.1529230000 -2307863.7504480002
+-462577.4401970000 -2287577.5735909999
+-457317.2314590000 -2269044.5231289999
+-439783.2023330000 -2268042.7366169998
+-436666.0415990000 -2252014.1524330000
+-435886.7514160000 -2233481.1019710000
+-448550.2168960000 -2220457.8773220000
+-440172.8474240000 -2206933.7594170002
+-429262.7848570000 -2193409.6415120000
+-433743.7034120000 -2176880.1640720000
+-426730.0917610000 -2162354.2596560000
+-419716.4801110000 -2147327.4619840002
+-428678.3172200000 -2134805.1305900002
+-427314.5593990000 -2110762.2543150000
+-426535.2692150000 -2094733.6701310000
+-427509.3819440000 -2067184.5410650000
+-428093.8495820000 -2050655.0636260000
+-425366.3339400000 -2035628.2659539999
+-432379.9455910000 -2021102.3615369999
+-446017.5238000000 -2003571.0975860001
+-430821.3652240000 -2002569.3110750001
+-428678.3172200000 -1986039.8336360001
+-424197.3986650000 -1971013.0359630000
+-418060.4884710000 -1957238.4714309999
+-433451.4695930000 -1950225.9658500000
+-426243.0353960000 -1933696.4884110000
+-441634.0165180000 -1943714.3535259999
+-433841.1146840000 -1926683.9828300001
+-448647.6281690000 -1933696.4884110000
+-464428.2543820000 -1948222.3928270000
+-465402.3671120000 -1933195.5951550000
+-463843.7867450000 -1914662.5446929999
+-456245.7074570000 -1901138.4267879999
+-468714.3503910000 -1892122.3481840000
+-480208.8805960000 -1905646.4660890000
+-479429.5904130000 -1888616.0953939999
+-478455.4776830000 -1871585.7246989999
+-478650.3002290000 -1856558.9270270001
+-484494.9766050000 -1841031.2360990001
+-494430.9264430000 -1822498.1856370000
+-505925.4566480000 -1807972.2812200000
+-508847.7948350000 -1791442.8037810000
+-504172.0537350000 -1776416.0061079999
+-510990.8428400000 -1759886.5286689999
+-502223.8282770000 -1745861.5175079999
+-512939.0682980000 -1728330.2535570001
+-511964.9555690000 -1712802.5626300001
+-505340.9890100000 -1697775.7649570000
+-506315.1017390000 -1681747.1807740000
+-507289.2144690000 -1662713.2370559999
+-508446.9486300000 -1645056.7497910000
+-502180.9448550000 -1623518.3397939999
+-505662.0580630000 -1602480.8230530000
+-505836.1137240000 -1586953.1321250000
+-509317.2269320000 -1571425.4411970000
+-516105.3976870000 -1557400.4300360000
+-530552.0175000000 -1537865.5930620001
+-533336.9080660000 -1513321.8235309999
+-522719.5127820000 -1498295.0258589999
+-506532.3363650000 -1492284.3067900001
+-522893.5684430000 -1484770.9079539999
+-515757.2863660000 -1469744.1102819999
+-532118.5184440000 -1465236.0709800001
+-535947.7429720000 -1449708.3800520001
+-544476.4703320001 -1428670.8633109999
+-551960.8637290000 -1415146.7454059999
+-565363.1495800000 -1405629.7735470000
+-567277.7618440000 -1386094.9365729999
+-582420.6042990000 -1384091.3635499999
+-593212.0552430000 -1370066.3523899999
+-606266.2297730000 -1362052.0602980000
+-613793.7528780000 -1344395.5730330001
+-621618.1005840000 -1359923.2639609999
+-634079.0987820000 -1369440.2358200001
+-633354.6221430000 -1354413.4381480000
+-638860.6446030000 -1339386.6404760000
+-649438.0035390001 -1351908.9718690000
+-667405.0241970000 -1352409.8651250000
+-679431.3364110000 -1363429.5167510000
+-679721.1270670000 -1346900.0393119999
+-676533.4298540000 -1330370.5618720001
+-690008.6953470000 -1339386.6404760000
+-701165.6355950000 -1327365.2023380001
+-688994.4280520000 -1315844.6574560001
+-709279.7739560000 -1318349.1237339999
+-717249.0169900000 -1331372.3483839999
+-735216.0376480001 -1329869.6686160001
+-741420.6668040000 -1315969.8807699999
+-750947.3474350000 -1299440.4033299999
+-734597.5036490000 -1299440.4033299999
+-722496.0444700000 -1284413.6056580001
+-707948.5456690000 -1288420.7517039999
+-689023.9233340001 -1290424.3247270000
+-678209.8534290000 -1276399.3135660000
+-672545.3406220000 -1262374.3024060000
+-693401.0468670001 -1264377.8754280000
+-709493.4127980000 -1260871.6226379999
+-725971.9955110000 -1250853.7575240000
+-725714.5176560000 -1234825.1733400000
+-720951.1773400001 -1215290.3363659999
+-737172.2821980000 -1218295.6958999999
+-749402.4803050000 -1205272.4712510000
+-736399.8486340001 -1196757.2859040000
+-720822.4384130000 -1191247.4600899999
+-710652.0631450000 -1204771.5779949999
+-697906.9093280000 -1218796.5891559999
+-684131.8440910000 -1227812.6677590001
+-668940.6506530000 -1229816.2407819999
+-666237.1331770000 -1253358.2238020001
+-653620.7182870000 -1262374.3024060000
+-648471.1611900000 -1247347.5047330000
+-634696.0959530000 -1258868.0496149999
+-632625.0227419999 -1243541.0164699999
+-618416.8083510000 -1233878.1370890001
+-601000.2874830000 -1228080.4094600000
+-615361.2783740000 -1217451.2421410000
+-598861.4165000001 -1216968.0981719999
+-610625.2069099999 -1201990.6351310001
+-617652.9258560000 -1185080.5962139999
+-631708.3637490000 -1178799.7246160000
+-648666.5551200000 -1183631.1643070001
+-656458.1565610000 -1169136.8452349999
+-653708.1795820000 -1154159.3821950001
+-665166.4169950000 -1166237.9814210001
+-676166.3249110000 -1153193.0942569999
+-676166.3249110000 -1133384.1915249999
+-689305.1038110000 -1118406.7284850001
+-709013.2721609999 -1111159.5689490000
+-711610.4726409999 -1091833.8101870001
+-716346.5441050000 -1074440.6273010001
+-701527.2237180000 -1070092.3315790000
+-680291.2903790000 -1068642.8996720000
+-664096.9815030000 -1078788.9230219999
+-650958.2026030000 -1100530.4016300000
+-628041.7277770001 -1095698.9619390001
+-611236.3129050001 -1091350.6662170000
+-588930.9440750000 -1094732.6740009999
+-577319.9301640000 -1078305.7790530000
+-565250.5867559999 -1066710.3237960001
+-550431.2663680000 -1071541.7634860000
+-540042.4644469999 -1060429.4521979999
+-531203.6819710000 -1047613.0696300000
+-510357.6695660000 -1037937.0529810000
+-498473.4942690000 -1027821.2173940000
+-486199.6738810000 -1015066.4681760001
+-487953.0767930000 -994834.7970020000
+-464964.0163830000 -990876.4265550000
+-449378.2127160000 -998353.3485110000
+-430285.6032230000 -1001432.0810810000
+-417622.1377430000 -1012427.5545450000
+-399308.8184330000 -1004950.6325890000
+-384697.1274945000 -1000332.5337340001
+-370085.4365560000 -995714.4348789999
+-375540.4678400000 -980760.5909680000
+-380021.3863940000 -966246.5659950000
+-383528.1922200000 -949973.2652690000
+-383528.1922200000 -930181.4130330000
+-384112.6598570000 -911709.0176140000
+-380216.2089400000 -883560.6055450001
+-366919.5701860000 -892846.9764360000
+-353087.1694310000 -880338.0618260000
+-336527.2530340000 -873692.7009390000
+-322694.8522790000 -888547.0370390000
+-307888.3387940000 -897146.9158330000
+-294835.2282230000 -913564.8662580000
+-275937.4412760000 -919037.5164000000
+-252169.0906820000 -915128.4805850000
+-245350.3015780000 -901446.8552300000
+-244181.3663030000 -918646.6128190000
+-231615.3120950000 -930563.0925760000
+-215445.0407900000 -924017.9382920000
+-206872.8487730000 -937108.2468600000
+-190507.7549220000 -933426.5975750000
+-186611.3040050000 -912972.9904390000
+-185961.8955186667 -896882.8194913333
+-185312.4870323333 -880792.6485436666
+-184663.0785460000 -864702.4775960000
+-175311.5963460000 -883519.7961620000
+-174532.3061620000 -902337.1147280000
+-172584.0807040000 -918700.0004370000
+-168882.4523330000 -933835.6697180000
+-152322.5359360000 -933835.6697180000
+-142581.4086430000 -921563.5054359999
+-127969.7177050000 -912154.8461530000
+-131086.8784390000 -930563.0925760000
+-115501.0747710000 -924427.0104349999
+-112189.0914910000 -905609.6918690000
+-114916.6071330000 -887610.5175890001
+-101473.8514700000 -899882.6818710000
+-84329.4674350000 -896610.1047290000
+-100110.0936490000 -892110.3111590000
+-87836.2732610000 -879838.1468770000
+-74685.7514160000 -869305.2030530000
+-57541.3673810000 -863251.9975030000
+-49553.6430020000 -850388.9357080000
+-34357.4844260000 -846227.3568920000
+-47995.0626350000 -825797.7881600000
+-30071.3884170000 -835255.9218320000
+-18771.6807580000 -850767.2610550000
+-6303.0378240000 -859847.0693810000
+7139.7178400000 -852658.8877899999
+22141.0538700000 -862873.6721560000
+31297.7135250000 -877628.3606850000
+47662.8073760000 -874601.7579100000
+49611.0328340000 -893518.0252550000
+66365.7717770000 -886708.1690110000
+81123.5796250000 -882220.1151260000
+97683.4960220000 -884202.5846670000
+80149.4668960000 -888960.5115630000
+65537.7759570000 -896493.8958170000
+68460.1141450000 -914732.6155880000
+84435.5629050000 -917508.0729450000
+100605.8342100000 -907595.7252430000
+120282.9113400000 -911957.1582320000
+129049.9259030000 -927420.4206470000
+153402.7441340000 -925437.9511060000
+169767.8379850000 -920680.0242090001
+180677.9005530000 -910371.1825990001
+192367.2533040000 -899269.3531730000
+201134.2678670000 -912353.6521400000
+182626.1260110000 -920680.0242090001
+169183.3703480000 -936539.7805320000
+163338.6939720000 -950417.0673150000
+182820.9485570000 -955174.9942120000
+187301.8671120000 -970241.7627180000
+200744.6227750000 -980550.6043280000
+198796.3973170000 -995617.3728350000
+211118.9233410000 -983385.4589040000
+211508.5684330000 -999969.0227530000
+225146.1466420000 -1008484.9068910000
+240731.9503100000 -1009829.5201760000
+238588.9023060000 -1032239.7415930000
+253785.0608820000 -1029550.5150230000
+273072.4929210000 -1036273.5814480000
+281255.0398460000 -1056890.9851510001
+286320.4260380000 -1071681.7312860000
+305413.0355310000 -1086024.2729930000
+316907.5657360000 -1095884.7704169999
+326453.8704830000 -1081990.4331380001
+341260.3839670000 -1076611.9799980000
+355677.2523600000 -1064958.6648609999
+372319.0245690000 -1056006.2810410000
+387981.0391590000 -1068027.7191780000
+383779.0352450000 -1084056.3033620000
+366207.0188750000 -1085558.9831290001
+366971.0195860000 -1102088.4605690001
+352646.0062410000 -1113108.1121950001
+362960.0158500000 -1126131.3368440000
+380914.0325760000 -1133143.8424249999
+394093.0448530000 -1123626.8705660000
+409182.0589100000 -1113108.1121950001
+409182.0589100000 -1131641.1626569999
+404407.0544620000 -1158689.3984670001
+386262.0375580000 -1153179.5726540000
+374229.0263480000 -1166202.7973030000
+364488.0172730000 -1182732.2747430000
+377285.0291950000 -1191748.3533460000
+388172.0393370000 -1202768.0049719999
+392947.0437860000 -1219798.3756680000
+380341.0320420000 -1228814.4542710001
+383588.0350670000 -1251354.6507790000
+389509.0405830000 -1265880.5551960000
+389509.0405830000 -1282910.9258910001
+399632.0500130000 -1295934.1505400001
+408609.0583760000 -1313966.3077469999
+410137.0598000000 -1333000.2514650000
+413526.9681570000 -1350406.2921020000
+416526.2265730000 -1367436.6627970000
+415776.4119690000 -1385468.8200040001
+419900.3922910000 -1406005.4434890000
+430960.1577010000 -1421032.2411610000
+431897.4259560000 -1436059.0388330000
+448018.4399430000 -1436559.9320890000
+448580.8008960000 -1456094.7690630001
+438458.3037410000 -1469117.9937120001
+432459.7869090000 -1486148.3644069999
+449705.5228020000 -1494663.5497550000
+448393.3472450000 -1513196.6002170001
+463202.1856750000 -1521210.8923090000
+447830.9862920000 -1525218.0383550001
+458140.9370980000 -1539243.0495160001
+462639.8247220000 -1554269.8471880001
+473887.0437820000 -1564287.7123030000
+458703.2980510000 -1557275.2067219999
+463014.7320240000 -1574305.5774170000
+478948.2923600000 -1567293.0718370001
+484009.5409370000 -1584824.3357879999
+475011.7656880000 -1597346.6671819999
+484009.5409370000 -1614877.9311319999
+488508.4285610000 -1630906.5153160000
+470512.8780640000 -1618384.1839230000
+461702.5564670000 -1631407.4085720000
+474074.4974330000 -1641926.1669419999
+488883.3358630000 -1648938.6725230000
+495661.8324810000 -1662963.6836830000
+478923.6439970000 -1667471.7229849999
+463095.1396700000 -1663965.4701950001
+449449.8773190000 -1652945.8185690001
+455817.6664170000 -1670477.0825199999
+441626.5935720000 -1662963.6836830000
+433439.4361610000 -1648437.7792670000
+409690.0603430000 -1652315.3206390000
+394504.9542530000 -1655951.1781029999
+411243.1427370000 -1662462.7904280000
+426707.7734010000 -1676487.8015880000
+437260.1096190000 -1691514.5992610001
+455999.6032480000 -1702534.2508870000
+441626.5935720000 -1710047.6497229999
+428891.0153770000 -1692516.3857720001
+435076.8676430000 -1708544.9699560001
+419976.1106410000 -1704036.9306540000
+408696.0270980000 -1692516.3857720001
+395050.7647470000 -1701532.4643750000
+388501.0388190000 -1718562.8350710000
+378494.5130940000 -1731085.1664640000
+376129.3342870000 -1713553.9025129999
+361938.2614420000 -1720566.4080940001
+373582.2186480000 -1732086.9529760000
+358481.4616460000 -1738598.5652999999
+369397.6715270000 -1754627.1494839999
+352659.4830430000 -1751621.7899490001
+335805.3526830000 -1754501.9261700001
+338338.0457790000 -1777042.1226780000
+354897.9621760000 -1775539.4429110000
+349053.2858010000 -1792569.8136060000
+330739.9664910000 -1791568.0270950000
+344182.7221550000 -1806093.9315110000
+341455.2065130000 -1823625.1954620001
+351780.8014430000 -1809600.1843010001
+344377.5447010000 -1826129.6617409999
+356066.8974510000 -1836147.5268550001
+345546.4799760000 -1853678.7908059999
+363080.5091020000 -1853678.7908059999
+371847.5236650000 -1841156.4594129999
+370288.9432980000 -1859689.5098750000
+386848.8596950000 -1868204.6952229999
+404772.5339130000 -1856183.2570849999
+415098.1288430000 -1867703.8019669999
+428735.7070520000 -1860691.2963870000
+421137.6277640000 -1874215.4142920000
+413929.1935680000 -1888741.3187080000
+418799.7572140000 -1903768.1163800000
+428735.7070520000 -1916791.3410300000
+415098.1288430000 -1935825.2847480001
+398148.5673540000 -1926809.2061439999
+380030.0705910000 -1929814.5656790000
+364444.2669230000 -1929814.5656790000
+348468.8181630000 -1924304.7398659999
+333077.8370420000 -1919796.7005640001
+348079.1730720000 -1935825.2847480001
+332883.0144960000 -1939832.4307939999
+318855.7911950000 -1951853.8689309999
+331908.9017660000 -1964376.2003250001
+349442.9308930000 -1959868.1610230000
+358209.9454560000 -1943338.6835840000
+358404.7680020000 -1958365.4812560000
+345936.1250670000 -1971388.7059050000
+345351.6574300000 -1987918.1833450000
+330739.9664910000 -1991925.3293910001
+337753.5781420000 -2005449.4472960001
+353534.2043550000 -2007453.0203180001
+365223.5571060000 -1997435.1552040000
+385679.9244200000 -1986415.5035770000
+399317.5026290000 -1977399.4249740001
+399122.6800840000 -1993928.9024139999
+381393.8284120000 -1998436.9417150000
+399512.3251750000 -1999939.6214820000
+395615.8742580000 -2018973.5652000001
+387822.9724240000 -2032998.5763610001
+383975.2271440000 -2048275.8206610000
+398976.5631740000 -2062801.7250780000
+397223.1602620000 -2078830.3092610000
+379299.4860440000 -2080833.8822840001
+362739.5696470000 -2085842.8148419999
+374428.9223980000 -2097363.3597240001
+390599.1937030000 -2089849.9608880000
+379299.4860440000 -2103374.0787930000
+364492.9725590000 -2111388.3708839999
+355531.1354500000 -2097363.3597240001
+343257.3150620000 -2111889.2641400001
+351829.5070790000 -2127917.8483239999
+365661.9078340000 -2119402.6629760000
+357284.5383630000 -2133928.5673929998
+374039.2773060000 -2136933.9269269998
+385533.8075110000 -2147452.6852980000
+375792.6802180000 -2160976.8032030002
+390988.8387940000 -2162479.4829699998
+378520.1958600000 -2174000.0278520002
+394105.9995280000 -2164983.9492489998
+409107.3355580000 -2161978.5897140000
+421186.3334010000 -2149957.1515759998
+437941.0723440000 -2150958.9380879998
+450409.7152780000 -2171495.5615730002
+454695.8112860000 -2156969.6571570002
+471645.3727750000 -2159975.0166910002
+459566.3749330000 -2147452.6852980000
+465605.8738540000 -2132425.8876260002
+477490.0491500000 -2120404.4494880000
+485867.4186220000 -2133427.6741370000
+493264.3211700000 -2119402.6629760000
+495978.8328800000 -2102873.1855370002
+509098.9728100000 -2110386.5843730001
+523877.9810080000 -2104876.7585600000
+541371.5009160000 -2109885.6911169998
+529608.6168400000 -2096862.4664680001
+544990.8498620000 -2099366.9327469999
+561579.5325330000 -2107381.2248390000
+576509.3469370001 -2104876.7585600000
+596868.1847600000 -2102873.1855370002
+611948.8053700000 -2108883.9046060001
+597622.2157910001 -2119402.6629760000
+580430.3082950000 -2125413.3820449999
+599130.2778520000 -2126916.0618119999
+583144.8200050000 -2134930.3539040000
+568818.2304260000 -2148454.4718089998
+582843.2075930000 -2161477.6964580002
+566706.9435400000 -2162980.3762260000
+552983.5787850000 -2170994.6683180002
+543331.9815950000 -2188025.0390130002
+547554.5553660000 -2207058.9827310001
+538053.7643820000 -2193033.9715700001
+525084.4306570000 -2209062.5557539999
+516036.0582910000 -2221083.9938920001
+529910.2292520000 -2214572.3815669999
+541220.6947100000 -2225091.1399369999
+526140.0741000000 -2223087.5669140001
+526743.2989240000 -2239617.0443540001
+521615.8879170000 -2256647.4150490002
+506233.6548950000 -2255144.7352820002
+508194.1355740000 -2275681.3587670000
+489343.3598110000 -2268167.9599310001
+488740.1349870000 -2283695.6508590002
+475770.8012620000 -2293212.6227179999
+460539.3744460000 -2281692.0778359999
+449228.9089890000 -2296217.9822519999
+448022.4593400000 -2314250.1394590000
+440180.5366230000 -2298722.4485309999
+441085.3738600000 -2277184.0385340001
+426000.8914760000 -2286450.5637659999
+431125.9775380000 -2301477.3614380001
+426190.7094780000 -2317505.9456210001
+424672.1654600000 -2332532.7432940002
+421445.2594210000 -2313498.7995750001
+409296.9072740000 -2298472.0019029998
+411764.5413040000 -2318006.8388769999
+403222.7312010000 -2304983.6142279999
+411005.2692950000 -2289956.8165560002
+393542.0130840000 -2293463.0693460000
+378356.5729000000 -2295967.5356250000
+388416.9270220000 -2308489.8670180002
+405880.1832330000 -2317005.0523660001
+417838.7173770000 -2328525.5972480001
+402463.4591910000 -2342049.7151529999
+385000.2029800000 -2341047.9286409998
+375699.1208680000 -2327022.9174799998
+384240.9309710000 -2314500.5860870001
+368865.6727850000 -2321012.1984120002
+373421.3048400000 -2337541.6758510000
+363360.9507190000 -2353069.3667790000
+351402.4165740000 -2336539.8893400002
+340392.9724410000 -2324518.4512020000
+329573.3463100000 -2313999.6928309998
+335267.8863790000 -2329527.3837589999
+336216.9763910000 -2347058.6477100002
+337166.0664020000 -2362085.4453819999
+318374.0841750000 -2366593.4846839998
+303758.0979980000 -2362586.3386380002
+290314.2882280000 -2354697.2698599999
+292067.6911410000 -2339670.4721880001
+275702.5972900000 -2347684.7642799998
+277880.2580262116 -2321542.8592617917
+269420.4169677348 -2331176.2138948478
+260960.5759092579 -2323294.3782859840
+252500.7348507810 -2343436.8470641924
+254834.4841082919 -2357157.0794203631
+258918.5453089359 -2372336.9109633607
+266740.7601810000 -2359706.2024170002
+271754.1662252456 -2369125.7927523423
+266545.9376350000 -2379241.0393909998
+291483.2235030000 -2386253.5449720002
+275897.4198350000 -2396271.4100859999
+288755.7078610000 -2404786.5954339998
+276871.5325650000 -2415806.2470600000
+263818.4219930000 -2423820.5391520001
+259532.3259840000 -2445358.9491490000
+250570.4888750000 -2432836.6177559998
+248817.0859630000 -2452371.4547290001
+247258.5055960000 -2470403.6119360002
+229919.2990160000 -2474911.6512380000
+226022.8480990000 -2490439.3421660000
+239660.4263080000 -2499956.3140250002
+227776.2510110000 -2510975.9656509999
+220178.1717230000 -2523999.1902999999
+205761.3033310000 -2533015.2689029998
+210631.8669770000 -2560063.5047129998
+203228.6102350000 -2545036.7070410000
+194266.7731260000 -2558560.8249459998
+199624.3931360000 -2581101.0214539999
+185791.9923810000 -2568077.7968049999
+189493.6207520000 -2583104.5944770002
+186571.2825650000 -2601136.7516839998
+185207.5247440000 -2584106.3809890002
+169816.5436220000 -2595126.0326149999
+156568.6105040000 -2586610.8472679998
+134748.4853690000 -2581101.0214539999
+149749.8214000000 -2579598.3416869999
+136112.2431900000 -2592120.6730809999
+146437.8381200000 -2612657.2965660002
+130462.3893610000 -2620671.5886579999
+137281.1784650000 -2635197.4930739999
+125007.3580770000 -2621172.4819140001
+106888.8613130000 -2617666.2291230001
+91887.5252830000 -2609151.0437759999
+109031.9093180000 -2607648.3640089999
+92277.1703750000 -2603641.2179629998
+97537.3791130000 -2587111.7405229998
+88380.7194580000 -2573587.6226180000
+74743.1412490000 -2567076.0102940002
+61105.5630390000 -2577093.8754090001
+66950.2394150000 -2594124.2461040001
+57598.7572140000 -2581101.0214539999
+53117.8386600000 -2598131.3921500002
+41818.1310010000 -2586610.8472679998
+30810.6571600000 -2599133.1786610000
+44253.4128240000 -2608650.1505200001
+47662.8073760000 -2621047.2585999998
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/Greenland/Greenland.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Greenland/Greenland.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Greenland/Greenland.par	(revision 27955)
@@ -0,0 +1,77 @@
+%Name and Coordinate system
+md.miscellaneous.name='SeaRISEgreenland';
+md.mesh.epsg=3413;
+
+disp('   Loading SeaRISE data from NetCDF');
+ncdata='../Data/Greenland_5km_dev1.2.nc';
+x1    = ncread(ncdata,'x1');
+y1    = ncread(ncdata,'y1');
+usrf  = ncread(ncdata,'usrf')';
+topg  = ncread(ncdata,'topg')';
+velx  = ncread(ncdata,'surfvelx')';
+vely  = ncread(ncdata,'surfvely')';
+temp  = ncread(ncdata,'airtemp2m')';
+smb   = ncread(ncdata,'smb')';
+gflux = ncread(ncdata,'bheatflx')';
+
+disp('   Interpolating surface and bedrock');
+md.geometry.base     = InterpFromGridToMesh(x1,y1,topg,md.mesh.x,md.mesh.y,0);
+md.geometry.surface = InterpFromGridToMesh(x1,y1,usrf,md.mesh.x,md.mesh.y,0);
+
+disp('   Constructing thickness');
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+%Set min thickness to 1 meter
+pos0=find(md.geometry.thickness<=0);
+md.geometry.thickness(pos0)=1;
+md.geometry.surface=md.geometry.thickness+md.geometry.base;
+
+disp('   Interpolating velocities ');
+md.inversion.vx_obs  = InterpFromGridToMesh(x1,y1,velx,md.mesh.x,md.mesh.y,0);
+md.inversion.vy_obs  = InterpFromGridToMesh(x1,y1,vely,md.mesh.x,md.mesh.y,0);
+md.inversion.vel_obs = sqrt(md.inversion.vx_obs.^2+md.inversion.vy_obs.^2);
+md.initialization.vx = md.inversion.vx_obs;
+md.initialization.vy = md.inversion.vy_obs;
+md.initialization.vz = zeros(md.mesh.numberofvertices,1);
+md.initialization.vel= md.inversion.vel_obs;
+
+disp('   Interpolating temperatures');
+md.initialization.temperature=InterpFromGridToMesh(x1,y1,temp,md.mesh.x,md.mesh.y,0)+273.15;
+
+disp('   Interpolating surface mass balance');
+md.smb.mass_balance=InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0);
+md.smb.mass_balance=md.smb.mass_balance*md.materials.rho_water/md.materials.rho_ice;
+
+disp('   Construct basal friction parameters');
+md.friction.coefficient=30*ones(md.mesh.numberofvertices,1);
+pos=find(md.mask.ocean_levelset<0);
+md.friction.coefficient(pos)=0; %no friction applied on floating ice
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('   Construct ice rheological properties');
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+
+disp('   Set other boundary conditions');
+md.mask.ice_levelset(md.mesh.vertexonboundary==1)=0;
+md.basalforcings.floatingice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.thermal.spctemperature     = [md.initialization.temperature;1]; %impose observed temperature on surface
+md.masstransport.spcthickness    = NaN*ones(md.mesh.numberofvertices,1);
+
+disp('   Set geothermal heat flux');
+md.basalforcings.geothermalflux=InterpFromGridToMesh(x1,y1,gflux,md.mesh.x,md.mesh.y,0);
+
+disp('   Set Pressure');
+md.initialization.pressure=md.materials.rho_ice*md.constants.g*md.geometry.thickness;
+
+disp('   Single point constraints');
+%Initialize single point constraint arrays
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.spcvx = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz = NaN*ones(md.mesh.numberofvertices,1);
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/Greenland/Greenland.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Greenland/Greenland.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Greenland/Greenland.py	(revision 27955)
@@ -0,0 +1,83 @@
+import numpy as np
+from paterson import paterson
+from netCDF4 import Dataset
+from InterpFromGridToMesh import InterpFromGridToMesh
+
+#Name and Coordinate system
+md.miscellaneous.name = 'SeaRISEgreenland'
+md.mesh.epsg = 3413
+
+print('   Loading SeaRISE data from NetCDF')
+ncdata = Dataset('../Data/Greenland_5km_dev1.2.nc', mode='r')
+x1 = np.squeeze(ncdata.variables['x1'][:].data)
+y1 = np.squeeze(ncdata.variables['y1'][:].data)
+usrf = np.squeeze(ncdata.variables['usrf'][:].data)
+topg = np.squeeze(ncdata.variables['topg'][:].data)
+velx = np.squeeze(ncdata.variables['surfvelx'][:].data)
+vely = np.squeeze(ncdata.variables['surfvely'][:].data)
+temp = np.squeeze(ncdata.variables['airtemp2m'][:].data)
+smb = np.squeeze(ncdata.variables['smb'][:].data)
+gflux = np.squeeze(ncdata.variables['bheatflx'][:].data)
+ncdata.close()
+
+print('   Interpolating surface and bedrock')
+md.geometry.base = InterpFromGridToMesh(x1, y1, topg, md.mesh.x, md.mesh.y, 0)
+md.geometry.surface = InterpFromGridToMesh(x1, y1, usrf, md.mesh.x, md.mesh.y, 0)
+
+print('   Constructing thickness')
+md.geometry.thickness = md.geometry.surface - md.geometry.base
+
+#Set min thickness to 1 meter
+pos0 = np.nonzero(md.geometry.thickness <= 0)
+md.geometry.thickness[pos0] = 1
+md.geometry.surface = md.geometry.thickness + md.geometry.base
+
+print('   Interpolating velocities ')
+md.inversion.vx_obs = InterpFromGridToMesh(x1, y1, velx, md.mesh.x, md.mesh.y, 0)
+md.inversion.vy_obs = InterpFromGridToMesh(x1, y1, vely, md.mesh.x, md.mesh.y, 0)
+md.inversion.vel_obs = np.sqrt(md.inversion.vx_obs**2 + md.inversion.vy_obs**2)
+md.initialization.vx = md.inversion.vx_obs
+md.initialization.vy = md.inversion.vy_obs
+md.initialization.vz = np.zeros((md.mesh.numberofvertices))
+md.initialization.vel = md.inversion.vel_obs
+
+print('   Interpolating temperatures')
+md.initialization.temperature = InterpFromGridToMesh(x1, y1, temp, md.mesh.x, md.mesh.y, 0) + 273.15
+
+print('   Interpolating surface mass balance')
+md.smb.mass_balance = InterpFromGridToMesh(x1, y1, smb, md.mesh.x, md.mesh.y, 0)
+md.smb.mass_balance = md.smb.mass_balance * md.materials.rho_water / md.materials.rho_ice
+
+print('   Construct basal friction parameters')
+md.friction.coefficient = 30 * np.ones((md.mesh.numberofvertices))
+pos = np.nonzero(md.mask.ocean_levelset < 0)
+md.friction.coefficient[pos] = 0  #no friction applied on floating ice
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+print('   Construct ice rheological properties')
+md.materials.rheology_n = 3 * np.ones((md.mesh.numberofelements))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.friction.q = np.ones((md.mesh.numberofelements))
+md.friction.p = np.ones((md.mesh.numberofelements))
+
+print('   Set other boundary conditions')
+md.mask.ice_levelset[np.nonzero(md.mesh.vertexonboundary == 1)] = 0
+md.basalforcings.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices))
+md.basalforcings.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices))
+#impose observed temperature on surface
+md.thermal.spctemperature = md.initialization.temperature
+md.masstransport.spcthickness = np.nan * np.ones((md.mesh.numberofvertices))
+
+print('   Set geothermal heat flux')
+md.basalforcings.geothermalflux = InterpFromGridToMesh(x1, y1, gflux, md.mesh.x, md.mesh.y, 0)
+
+print('   Set Pressure')
+md.initialization.pressure = md.materials.rho_ice * md.constants.g * md.geometry.thickness
+
+print('   Single point constraints')
+#Initialize single point constraint arrays
+md.stressbalance.referential = np.nan * np.ones((md.mesh.numberofvertices, 6))
+md.stressbalance.spcvx = np.nan * np.ones((md.mesh.numberofvertices))
+md.stressbalance.spcvy = np.nan * np.ones((md.mesh.numberofvertices))
+md.stressbalance.spcvz = np.nan * np.ones((md.mesh.numberofvertices))
Index: /issm/branches/trunk-dlcheng-ASE/examples/Greenland/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Greenland/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Greenland/runme.m	(revision 27955)
@@ -0,0 +1,315 @@
+clear all;
+steps=[1];
+
+%Location of SeaRISE dataset
+ncdata='../Data/Greenland_5km_dev1.2.nc';
+
+if any(steps==1) 
+	disp('   Step 1: Mesh creation');
+
+	%Generate initial uniform mesh (resolution = 20000 m)
+	md=triangle(model,'./DomainOutline.exp',20000);
+
+	% Get velocities (Note: You can use ncdisp('file') to see an ncdump)
+	x1   = ncread(ncdata,'x1');
+	y1   = ncread(ncdata,'y1');
+	velx = ncread(ncdata,'surfvelx');
+	vely = ncread(ncdata,'surfvely');
+	vx   = InterpFromGridToMesh(x1,y1,velx',md.mesh.x,md.mesh.y,0);
+	vy   = InterpFromGridToMesh(x1,y1,vely',md.mesh.x,md.mesh.y,0);
+	vel  = sqrt(vx.^2+vy.^2);
+
+	%Mesh Greenland
+	md=bamg(md,'hmax',400000,'hmin',5000,'gradation',1.4,'field',vel,'err',8);
+
+	%convert x,y coordinates (Polar stereo) to lat/lon
+	[md.mesh.lat,md.mesh.long]=xy2ll(md.mesh.x,md.mesh.y,+1,39,71);
+
+	save ./Models/Greenland.Mesh_generation md;
+
+	plotmodel (md,'data','mesh');
+end 
+
+if any(steps==2) 
+	disp('   Step 2: Parameterization');
+	md = loadmodel('./Models/Greenland.Mesh_generation');
+
+	md = setmask(md,'','');
+	md = parameterize(md,'./Greenland.par');
+	md = setflowequation(md,'SSA','all');
+
+	save ./Models/Greenland.Parameterization md;
+end 
+
+if any(steps==3) 
+	disp('   Step 3: Control method friction');
+	md = loadmodel('./Models/Greenland.Parameterization');
+
+	%Control general
+	md.inversion.iscontrol=1;
+	md.inversion.nsteps=30;
+	md.inversion.step_threshold=0.99*ones(md.inversion.nsteps,1);
+	md.inversion.maxiter_per_step=5*ones(md.inversion.nsteps,1);
+
+	%Cost functions
+	md.inversion.cost_functions=[101 103 501];
+	md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,3);
+	md.inversion.cost_functions_coefficients(:,1)=350;
+	md.inversion.cost_functions_coefficients(:,2)=0.2;
+	md.inversion.cost_functions_coefficients(:,3)=2e-6;
+
+	%Controls
+	md.inversion.control_parameters={'FrictionCoefficient'};
+	md.inversion.gradient_scaling(1:md.inversion.nsteps)=50;
+	md.inversion.min_parameters=1*ones(md.mesh.numberofvertices,1);
+	md.inversion.max_parameters=200*ones(md.mesh.numberofvertices,1);
+
+	%Additional parameters
+	md.stressbalance.restol=0.01; md.stressbalance.reltol=0.1;
+	md.stressbalance.abstol=NaN;
+
+	%Go solve
+	md.cluster=generic('name',oshostname,'np',2);
+	md.toolkits=toolkits;
+	md.verbose=verbose('solution',true,'control',true);
+	md=solve(md,'Stressbalance');
+
+	%Update model friction fields accordingly
+	md.friction.coefficient=md.results.StressbalanceSolution.FrictionCoefficient;
+
+	save ./Models/Greenland.Control_drag md;
+end 
+
+if any(steps==4) 
+	disp('   Step 4: Transient run');
+	md = loadmodel('./Models/Greenland.Control_drag');
+
+	%Set surface mass balance
+	x1  = ncread(ncdata,'x1');
+	y1  = ncread(ncdata,'y1');
+	smb = ncread(ncdata,'smb');
+	smb = InterpFromGridToMesh(x1,y1,smb',md.mesh.x,md.mesh.y,0);
+	smb = smb*md.materials.rho_freshwater/md.materials.rho_ice;
+	smb = [smb smb smb-1.0];
+	md.smb.mass_balance = [smb;1 10 20];
+
+	%Set transient options, run for 20 years, saving every timestep
+	md.timestepping.time_step=0.2;
+	md.timestepping.final_time=20;
+	md.settings.output_frequency=1;
+
+	%Additional options
+	md.inversion.iscontrol=0;
+	md.transient.requested_outputs={'IceVolume','TotalSmb','SmbMassBalance'};
+	md.verbose=verbose('solution',true,'module',true,'convergence',true);
+
+	%Go solve
+	md.cluster=generic('name',oshostname,'np',2);
+	md=solve(md,'Transient');
+
+	save ./Models/Greenland.Transient md;
+end 
+
+if any(steps==5) 
+	disp('   Step 5: Plotting');
+	md = loadmodel('./Models/Greenland.Transient');
+
+	%Planview plots
+	plotmodel(md,'data',md.results.TransientSolution(end).Vel,'log#1', 10, ...
+		'caxis#1', [1e-1 1e4], ...
+		'title#1', 'Velocity (m/y)',...
+		'data',md.results.TransientSolution(1).SmbMassBalance,...
+		'title#2', 'Surface Mass Balance (m/y)',...
+		'data',md.results.TransientSolution(end).Thickness,...
+		'title', 'Thickness (m)',...
+		'data',md.results.TransientSolution(end).Surface,...
+		'title', 'Surface (m)');
+
+	%Line Plots
+	figure
+
+	%Plot surface mass balance
+	surfmb=[]; for i=1:100; surfmb=[surfmb ...
+		md.results.TransientSolution(i).SmbMassBalance]; end
+	subplot(3,1,1); plot([0.2:0.2:20],mean(surfmb)); title('Mean Surface mass balance');
+
+	%Plot velocity
+	vel=[]; for i=1:100; vel=[vel md.results.TransientSolution(i).Vel]; end
+	subplot(3,1,2); plot([0.2:0.2:20],mean(vel)); title('Mean Velocity');
+
+	%Plot Volume
+	volume=[]; for i=1:100; volume=[volume md.results.TransientSolution(i).IceVolume]; end
+	subplot(3,1,3); plot([0.2:0.2:20],volume); title('Ice Volume');
+	xlabel('years')
+end 
+
+if any(steps==6) 
+	disp('   Step 6: Extract Box SMB');
+	md = loadmodel('./Models/Greenland.Transient');
+
+	ncbox='../Data/Box_Greenland_SMB_monthly_1840-2012_5km_cal_ver20141007.nc';
+
+	%Set surface mass balance
+	lat  = ncread(ncbox,'lat');
+	lon  = ncread(ncbox,'lon');
+	smbbox = ncread(ncbox,'MassFlux');
+	[x1 y1]=ll2xy(lat,lon,+1,45,70);
+
+	years_of_simulation = 1840:2012;
+	t = [years_of_simulation(1):1/12:years_of_simulation(end)+11/12];
+
+	%Area of grid for 5km box
+	area_of_grid=5000*5000;
+	totalsmb=reshape(sum(sum(smbbox/1000,1),2),length(t),1)*area_of_grid;
+
+	%save surface mass balance mat dataset
+	smbmean = mean(mean(smbbox,3),4);
+	save -v7.3 smbbox smbmean totalsmb smbbox x1 y1 t;
+
+	%plot a time series of total SMB
+	figure; plot(t,totalsmb/1e9); title('Total Surface mass balance, Gt'); xlabel('year'); ylabel('Gt/yr');
+
+	clear smbbox
+end 
+
+if any(steps==7) 
+	disp('   Step 7: Historical Relaxation run');
+	md = loadmodel('./Models/Greenland.Control_drag');
+
+	load smbbox
+
+	%convert mesh x,y into the Box projection
+	[md.mesh.lat,md.mesh.long]  = xy2ll(md.mesh.x,md.mesh.y,+1,39,71);
+	[xi,yi]= ll2xy(md.mesh.lat,md.mesh.long,+1,45,70);
+
+	%Interpolate and set surface mass balance
+	index = BamgTriangulate(x1(:),y1(:));
+	smb_mo = InterpFromMeshToMesh2d(index,x1(:),y1(:),smbmean(:),xi,yi);
+	smb = smb_mo*12/1000*md.materials.rho_freshwater/md.materials.rho_ice;
+	md.smb.mass_balance = [smb;1 ];
+
+	%Set transient options, run for 20 years, saving every timestep
+	md.timestepping.time_step=0.2;
+	md.timestepping.final_time=20;
+	md.settings.output_frequency=1;
+
+	%Additional options
+	md.inversion.iscontrol=0;
+	md.transient.requested_outputs={'IceVolume','TotalSmb','SmbMassBalance'};
+	md.verbose=verbose('solution',true,'module',true);
+
+	%Go solve
+	md.cluster=generic('name',oshostname,'np',2);
+	md=solve(md,'Transient');
+
+	save ./Models/Greenland.HistoricTransient md;
+end % step 7 end
+
+if any(steps==8) 
+	disp('   Step 8: Plotting exercise');
+
+	%Load historic transient model
+
+	%Create Line Plots of relaxation run. Create a figure.
+
+	%Save surface mass balance, by looping through 200 years (1000 steps)
+	%Note, the first output will always contain output from time step 1
+
+	%Plot surface mass balance time series in first subplot
+
+	%Title this plot Mean surface mass balance
+
+	%Save velocity by looping through 200 years
+
+	%Plot velocity time series in second subplot
+
+	%Title this plot Mean Velocity
+
+	%Save Ice Volume by looping through 200 years
+
+	%Plot volume time series in third subplot
+
+	%Title this plot Mean Velocity and add an x label of years
+
+end % step 8 end
+
+if any(steps==9) 
+	disp('   Step 9: Box Transient run');
+	md = loadmodel('./Models/Greenland.HistoricTransient_200yr');
+
+	%load past transient results
+	md.geometry.base=md.results.TransientSolution(end).Base;
+	md.geometry.thickness=md.results.TransientSolution(end).Thickness;
+	md.geometry.surface=md.geometry.base+md.geometry.thickness;
+	md.initialization.vx=(md.results.TransientSolution(end).Vx);
+	md.initialization.vy=(md.results.TransientSolution(end).Vy);
+	md.results=[];
+
+	%convert mesh x,y into the Box projection
+	[md.mesh.lat,md.mesh.long]  = xy2ll(md.mesh.x,md.mesh.y,+1,39,71);
+	[xi,yi]= ll2xy(md.mesh.lat,md.mesh.long,+1,45,70);
+
+	%Set surface mass balance
+	load smbbox
+	index = BamgTriangulate(x1(:),y1(:));
+
+	%Set years to run
+	years_of_simulation = 2003:2012;
+
+	%initialize surface mass balance matrix
+	smb = nan*ones(md.mesh.numberofvertices,length(years_of_simulation)*12);
+
+	%Interpolate and set surface mass balance
+	for year=years_of_simulation
+		for month=1:12
+			smb_mo = griddata(double(x1),double(y1),...
+				double(squeeze(smbbox(:,:,month,year-1839))),xi,yi,'nearest');
+			smb(:,(year-years_of_simulation(1))*12+month) = smb_mo;
+		end
+	end
+	md.smb.mass_balance = ...
+		[smb*12/1000*md.materials.rho_freshwater/md.materials.rho_ice; ...
+		[1/24:1/12:length(years_of_simulation)]];
+
+	%Set transient options, monthly timestep, saving every month
+	md.timestepping.time_step=1/12;
+	md.timestepping.final_time=length(years_of_simulation);
+	md.settings.output_frequency=1;
+
+	%Additional options
+	md.inversion.iscontrol=0;
+	md.transient.requested_outputs={'IceVolume','TotalSmb','SmbMassBalance'};
+	md.verbose=verbose('solution',true,'module',true);
+
+	%Go solve
+	md.cluster=generic('name',oshostname,'np',2);
+	md=solve(md,'Transient');
+
+	save ./Models/Greenland.BoxTransient md;
+end 
+
+if any(steps==10) 
+	disp('   Step 10: Plot Box Transient');
+	md = loadmodel('./Models/Greenland.BoxTransient');
+
+	%Set years run
+	years_of_simulation = 2003:2012;
+	t = [years_of_simulation(1):1/12:years_of_simulation(end)+11/12];
+
+	%Line Plots
+	figure
+
+	%Plot surface mass balance
+	surfmb=[]; for i=1:length(t); surfmb=[surfmb ...
+		md.results.TransientSolution(i).TotalSmb]; end
+	subplot(3,1,1); plot(t,surfmb); title('Total Surface mass balance');
+
+	%Plot velocity
+	vel=[]; for i=1:length(t); vel=[vel md.results.TransientSolution(i).Vel]; end
+	subplot(3,1,2); plot(t,max(vel)); title('Max Velocity');
+
+	%Plot Volume
+	volume=[]; for i=1:length(t); volume=[volume md.results.TransientSolution(i).IceVolume]; end
+	subplot(3,1,3); plot(t,volume); title('Ice Volume');
+	xlabel('years')
+end 
Index: /issm/branches/trunk-dlcheng-ASE/examples/Greenland/runme.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Greenland/runme.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Greenland/runme.py	(revision 27955)
@@ -0,0 +1,369 @@
+import numpy as np
+from triangle import triangle
+from model import *
+from netCDF4 import Dataset
+from InterpFromGridToMesh import InterpFromGridToMesh
+from bamg import bamg
+from xy2ll import xy2ll
+from plotmodel import plotmodel
+from export_netCDF import export_netCDF
+from loadmodel import loadmodel
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from socket import gethostname
+from solve import solve
+from ll2xy import ll2xy
+from BamgTriangulate import BamgTriangulate
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from scipy.interpolate import griddata
+
+steps = [1]
+
+if 1 in steps:
+    # Step 1: Mesh creation {{{
+    print('   Step 1: Mesh creation')
+
+    #Generate initial uniform mesh (resolution = 20000 m)
+    md = triangle(model(), './DomainOutline.exp', 20000)
+
+    ncdata = Dataset('../Data/Greenland_5km_dev1.2.nc', mode='r')
+
+    # Get velocities (Note: You can use ncprint('file') to see an ncdump)
+    x1 = np.squeeze(ncdata.variables['x1'][:].data)
+    y1 = np.squeeze(ncdata.variables['y1'][:].data)
+    velx = np.squeeze(ncdata.variables['surfvelx'][:].data)
+    vely = np.squeeze(ncdata.variables['surfvely'][:].data)
+    ncdata.close()
+
+    vx = InterpFromGridToMesh(x1, y1, velx, md.mesh.x, md.mesh.y, 0)
+    vy = InterpFromGridToMesh(x1, y1, vely, md.mesh.x, md.mesh.y, 0)
+    vel = np.sqrt(vx**2 + vy**2)
+
+    #Mesh Greenland
+    md = bamg(md, 'hmax', 400000, 'hmin', 5000, 'gradation', 1.4, 'field', vel, 'err', 8)
+
+    #convert x, y coordinates (Polar stereo) to lat / lon
+    [md.mesh.lat, md.mesh.long] = xy2ll(md.mesh.x, md.mesh.y, + 1, 39, 71)
+
+    export_netCDF(md, './Models/Greenland.Mesh_generation.nc')
+    plotmodel(md, 'data', 'mesh')
+    # }}}
+
+if 2 in steps:
+    #  Step 2: Parameterization{{{
+    print('   Step 2: Parameterization')
+    md = loadmodel('./Models/Greenland.Mesh_generation.nc')
+
+    md = setmask(md, '', '')
+    md = parameterize(md, './Greenland.py')
+    md = setflowequation(md, 'SSA', 'all')
+
+    export_netCDF(md, "./Models/Greenland.Parameterization.nc")
+    # }}}
+
+if 3 in steps:
+    #   Step 3: Control method friction {{{
+    print('   Step 3: Control method friction')
+    md = loadmodel('./Models/Greenland.Parameterization.nc')
+    #Control general
+    md.inversion.iscontrol = 1
+    md.inversion.nsteps = 30
+    md.inversion.step_threshold = 0.99 * np.ones((md.inversion.nsteps))
+    md.inversion.maxiter_per_step = 5 * np.ones((md.inversion.nsteps))
+
+    #Cost functions
+    md.inversion.cost_functions = [101, 103, 501]
+    md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, 3))
+    md.inversion.cost_functions_coefficients[:, 0] = 350
+    md.inversion.cost_functions_coefficients[:, 1] = 0.2
+    md.inversion.cost_functions_coefficients[:, 2] = 2e-6
+
+    #Controls
+    md.inversion.control_parameters = ['FrictionCoefficient']
+    md.inversion.gradient_scaling = 50 * np.ones((md.inversion.nsteps, 1))
+    md.inversion.min_parameters = 1 * np.ones((md.mesh.numberofvertices, 1))
+    md.inversion.max_parameters = 200 * np.ones((md.mesh.numberofvertices, 1))
+
+    #Additional parameters
+    md.stressbalance.restol = 0.01
+    md.stressbalance.reltol = 0.1
+    md.stressbalance.abstol = np.nan
+    md.stressbalance.loadingforce = np.zeros((md.mesh.numberofvertices, 3))
+
+    #Go solve
+    md.cluster = generic('name', gethostname(), 'np', 2)
+    md.toolkits = toolkits()
+    md.verbose = verbose('solution', True, 'control', True)
+    md = solve(md, 'Stressbalance')
+
+    #Update model friction fields accordingly
+    md.friction.coefficient = md.results.StressbalanceSolution.FrictionCoefficient
+
+    export_netCDF(md, "./Models/Greenland.Control_drag.nc")
+    # }}}
+
+if 4 in steps:
+    #   Step 4: Transient run {{{
+    print('   Step 4: Transient run')
+    md = loadmodel('./Models/Greenland.Control_drag.nc')
+
+    #Set surface mass balance
+    ncdata = Dataset('../Data/Greenland_5km_dev1.2.nc', mode='r')
+    x1 = np.squeeze(ncdata.variables['x1'][:].data)
+    y1 = np.squeeze(ncdata.variables['y1'][:].data)
+    smb = np.squeeze(ncdata.variables['smb'][:].data)
+    ncdata.close()
+
+    smb = InterpFromGridToMesh(x1, y1, smb, md.mesh.x, md.mesh.y, 0)
+    smb = smb * md.materials.rho_freshwater / md.materials.rho_ice
+    smb = np.vstack((smb, smb, smb - 1.0)).T
+    md.smb.mass_balance = np.vstack((smb, np.asarray([[1, 10, 20]])))
+    #Set transient options, run for 20 years, saving every timestep
+    md.timestepping.time_step = 0.2
+    md.timestepping.final_time = 20
+    md.settings.output_frequency = 1
+
+    #Additional options
+    md.inversion.iscontrol = 0
+    md.transient.requested_outputs = ['IceVolume', 'TotalSmb', 'SmbMassBalance']
+    md.verbose = verbose('solution', True, 'module', True, 'convergence', True)
+
+    #Go solve
+    md.cluster = generic('name', gethostname(), 'np', 2)
+    md = solve(md, 'Transient')
+
+    export_netCDF(md, './Models/Greenland.Transient.nc')
+    # }}}
+
+if 5 in steps:
+    #   Step 5: Plotting {{{
+    print('   Step 5: Plotting')
+    md = loadmodel('./Models/Greenland.Transient.nc')
+
+    #Planview plots
+    plotmodel(md, 'data', md.results.TransientSolution[-1].Vel, 'log#1', 1e-1,
+              'caxis#1', [1e-1, 1e4], 'title#1', 'Velocity (m / y)',
+              'data', md.results.TransientSolution[1].SmbMassBalance,
+              'title#2', 'Surface Mass Balance (m / y)',
+              'data', md.results.TransientSolution[-1].Thickness,
+              'title', 'Thickness (m)',
+              'data', md.results.TransientSolution[-1].Surface,
+              'title', 'Surface (m)')
+
+    #Line Plots
+    figure
+
+    #Plot surface mass balance, velocity and volume
+    surfmb = []
+    vel = []
+    volume = []
+    for i in range(0, 100):
+        surfmb.append(md.results.TransientSolution[i].SmbMassBalance)
+        vel.append(md.results.TransientSolution[i].Vel)
+        volume.append(md.results.TransientSolution[i].IceVolume)
+
+    layout, ax = plt.subplots(3, 1, sharex=True, sharey=False, figsize=(5, 5))
+    ax[0].plot(np.arange(0.2, 20.2, 0.2), np.nanmean(surfmb, axis=1))
+    ax[0].set_title('Mean Surface mass balance')
+    ax[1].plot(np.arange(0.2, 20.2, 0.2), np.nanmean(vel, axis=1))
+    ax[1].set_title('Mean Velocity')
+    ax[2].plot(np.arange(0.2, 20.2, 0.2), volume)
+    ax[2].set_title('Ice Volume')
+    ax[2].set_xlabel('years')
+    # }}}
+
+if 6 in steps:
+    #   Step 6: Extract Box SMB{{{
+    print('   Step 6: Extract Box SMB')
+    md = loadmodel('./Models/Greenland.Transient.nc')
+
+    #Set surface mass balance
+    ncbox = Dataset('../Data/Box_Greenland_SMB_monthly_1840-2012_5km_cal_ver20141007.nc', mode='r')
+    lat = np.squeeze(ncbox.variables['lat'][:].data)
+    lon = np.squeeze(ncbox.variables['lon'][:].data)
+    smbbox = np.squeeze(ncbox.variables['MassFlux'][:].data)
+    ncbox.close()
+    [x1, y1] = ll2xy(lat, lon, + 1, 45, 70)
+
+    years_of_simulation = np.arange(1840, 2012 + 1)
+    t = np.arange(years_of_simulation[0], years_of_simulation[-1] + 11 / 12, 1 / 12)
+    #Area of grid for 5km box
+    area_of_grid = 5000 * 5000
+    totalsmb = reshape(np.nansum(smbbox / 1000, axis=(-2, -1)), (len(t), 1)) * area_of_grid
+
+    #save surface mass balance mat dataset
+    smbmean = np.nanmean(smbbox, axis=(0, 1))
+    SMB = {}
+    SMB['smbmean'] = smbmean
+    SMB['totalsmb '] = totalsmb
+    SMB['smbbox'] = smbbox
+    SMB['x1'] = x1
+    SMB['y1'] = y1
+    SMB['t'] = t
+
+    np.savez('./smbbox.npz', **SMB)
+
+    #plot a time series of total SMB
+    fig = plt.figure(tight_layout=True)
+    ax = fig.add_subplot(111)
+    ax.plot(t, totalsmb / 1e9)
+    ax.set_title('Total Surface mass balance, Gt')
+    ax.set_xlabel('year')
+    ax.set_ylabel('Gt/yr')
+
+    del smbbox
+    # }}}
+
+if 7 in steps:
+    #  Step 7: Historical Relaxation run {{{
+    print('   Step 7: Historical Relaxation run')
+    md = loadmodel('./Models/Greenland.Control_drag.nc')
+
+    with open('./smbbox.npz', "rb") as smbFile:
+        SMB = np.load(smbFile)
+        x1 = np.squeeze(SMB['x1'])
+        y1 = np.squeeze(SMB['y1'])
+        smbmean = np.squeeze(SMB['smbmean'])
+
+    #convert mesh x, y into the Box projection
+    [md.mesh.lat, md.mesh.long] = xy2ll(md.mesh.x, md.mesh.y, + 1, 39, 71)
+    [xi, yi] = ll2xy(md.mesh.lat, md.mesh.long, + 1, 45, 70)
+
+    #Interpolate and set surface mass balance
+    x1 = x1.flatten()
+    y1 = y1.flatten()
+    smbmean = smbmean.flatten()
+    index = BamgTriangulate(x1, y1)
+    smb_mo = InterpFromMeshToMesh2d(index, x1, y1, smbmean, xi, yi)
+    smb = smb_mo * 12 / 1000 * md.materials.rho_freshwater / md.materials.rho_ice
+    md.smb.mass_balance = np.append(smb, 1)
+
+    #Set transient options, run for 20 years, saving every timestep
+    md.timestepping.time_step = 0.2
+    md.timestepping.final_time = 20
+    md.settings.output_frequency = 1
+
+    #Additional options
+    md.inversion.iscontrol = 0
+    md.transient.requested_outputs = ['IceVolume', 'TotalSmb', 'SmbMassBalance']
+    md.verbose = verbose('solution', True, 'module', True)
+
+    #Go solve
+    md.cluster = generic('name', gethostname(), 'np', 2)
+    md = solve(md, 'Transient')
+
+    export_netCDF(md, './Models/Greenland.HistoricTransient.nc')
+    # }}}
+
+if 8 in steps:
+    # Step 8: Plotting exercise {{{
+    print('   Step 8: Plotting exercise')
+    #Load historic transient model
+
+    #Create Line Plots of relaxation run. Create a figure.
+
+    #Save surface mass balance, by looping through 200 years (1000 steps)
+    #Note, the first output will always contain output from time step 1
+
+    #Plot surface mass balance time series in first subplot
+
+    #Title this plot Mean surface mass balance
+
+    #Save velocity by looping through 200 years
+
+    #Plot velocity time series in second subplot
+
+    #Title this plot Mean Velocity
+
+    #Save Ice Volume by looping through 200 years
+
+    #Plot volume time series in third subplot
+
+    #Title this plot Mean Velocity and add an x label of years
+    # }}}
+
+if 9 in steps:
+    # Step 9: Box Transient run{{{
+    print('   Step 9: Box Transient run')
+    md = loadmodel('./Models/Greenland.HistoricTransient.nc')
+
+    #load past transient results
+    md.geometry.base = md.results.TransientSolution[-1].Base
+    md.geometry.thickness = md.results.TransientSolution[-1].Thickness
+    md.geometry.surface = md.geometry.base + md.geometry.thickness
+    md.initialization.vx = md.results.TransientSolution[-1].Vx
+    md.initialization.vy = md.results.TransientSolution[-1].Vy
+    md.results = []
+
+    #convert mesh x, y into the Box projection
+    [md.mesh.lat, md.mesh.long] = xy2ll(md.mesh.x, md.mesh.y, + 1, 39, 71)
+    [xi, yi] = ll2xy(md.mesh.lat, md.mesh.long, + 1, 45, 70)
+
+    #Set surface mass balance
+    with open('./smbbox.npz', "rb") as smbFile:
+        SMB = np.load(smbFile)
+        x1 = np.squeeze(SMB['x1'])
+        y1 = np.squeeze(SMB['y1'])
+        smbbox = np.squeeze(SMB['smbbox'])
+
+    x1 = x1.flatten()
+    y1 = y1.flatten()
+    index = BamgTriangulate(x1, y1)
+    #Set years to run
+    years_of_simulation = np.arange(2003, 2012 + 1)
+
+    #initialize surface mass balance matrix
+    smb = np.nan * np.ones((md.mesh.numberofvertices, len(years_of_simulation) * 12))
+
+    #Interpolate and set surface mass balance
+    for year in years_of_simulation:
+        for month in range(0, 12):
+            smb_mo = griddata((np.double(x1), np.double(y1)), np.double(smbbox[year - 1840, month, :, :].flatten()), (xi, yi), method='nearest')
+            smb[:, (year - years_of_simulation[0]) * 12 + month] = smb_mo
+    smb = smb * 12 / 1000 * md.materials.rho_freshwater / md.materials.rho_ice
+    timer = np.arange(1 / 24, len(years_of_simulation), 1 / 12)
+    md.smb.mass_balance = np.vstack((smb, timer))
+
+    #Set transient options, monthly timestep, saving every month
+    md.timestepping.time_step = 1 / 12
+    md.timestepping.final_time = len(years_of_simulation)
+    md.settings.output_frequency = 1
+
+    #Additional options
+    md.inversion.iscontrol = 0
+    md.transient.requested_outputs = ['IceVolume', 'TotalSmb', 'SmbMassBalance']
+    md.verbose = verbose('solution', True, 'module', True)
+
+    #Go solve
+    md.cluster = generic('name', gethostname(), 'np', 2)
+    md = solve(md, 'Transient')
+
+    export_netCDF(md, './Models/Greenland.BoxTransient.nc')
+    # }}}
+
+if 10 in steps:
+    print('   Step 10: Plot Box Transient')
+    md = loadmodel('./Models/Greenland.BoxTransient.nc')
+
+    #Set years run
+    years_of_simulation = np.arange(2003, 2012 + 1)
+    t = np.arange(years_of_simulation[0], years_of_simulation[-1] + 11 / 12, 1 / 12)
+
+    #Line Plots
+    layout, ax = plt.subplots(3, 1, sharex=True, sharey=False, figsize=(5, 5))
+    #Plot surface mass balance
+    surfmb = []
+    vel = []
+    volume = []
+    for i in range(0, len(t)):
+        surfmb.append(md.results.TransientSolution[i].TotalSmb)
+        vel.append(md.results.TransientSolution[i].Vel)
+        volume.append(md.results.TransientSolution[i].IceVolume)
+    ax[0].plot(t, surfmb)
+    ax[0].set_title('Total Surface mass balance')
+    ax[1].plot(t, np.nanmax(vel, axis=1))
+    ax[1].set_title('Max Velocity')
+    ax[2].plot(t, volume)
+    ax[2].set_title('Ice Volume')
+    ax[2].set_xlabel('years')
Index: /issm/branches/trunk-dlcheng-ASE/examples/ISMIP/IsmipA.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/ISMIP/IsmipA.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/ISMIP/IsmipA.par	(revision 27955)
@@ -0,0 +1,52 @@
+%Parameterization for ISMIP A experiment
+
+%Set the Simulation generic name #md.miscellaneous
+%->
+
+%Geometry
+disp('   Constructing Geometry');
+
+%Define the geometry of the simulation #md.geometry
+%surface is [-x*tan(0.5*pi/180)] #md.mesh
+%->
+
+%base is [surface-1000+500*sin(x*2*pi/L).*sin(y*2*pi/L)]
+%L is the size of the side of the square #max(md.mesh.x)-min(md.mesh.x)
+%->
+
+%->
+
+%thickness is the difference between surface and base #md.geometry
+%->
+
+%plot the geometry to check it out
+%->
+
+
+disp('   Defining friction parameters');
+
+%These parameters will not be used but need to be fixed #md.friction
+%one friciton coefficient per node (md.mesh.numberofvertices,1)
+%->
+
+%one friciton exponent (p,q) per element
+%->
+
+%->
+
+
+disp('   Construct ice rheological properties');
+
+%The rheology parameters sit in the material section #md.materials
+%B has one value per vertex
+%->
+
+%n has one value per element
+%->
+
+
+disp('   Set boundary conditions');
+
+%Set the default boundary conditions for an ice-sheet 
+% #help SetIceSheetBC
+%->
Index: /issm/branches/trunk-dlcheng-ASE/examples/ISMIP/IsmipA.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/ISMIP/IsmipA.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/ISMIP/IsmipA.py	(revision 27955)
@@ -0,0 +1,55 @@
+import numpy as np
+from plotmodel import plotmodel
+from SetIceSheetBC import SetIceSheetBC
+#Parameterization for ISMIP A experiment
+
+#Set the Simulation generic name #md.miscellaneous
+#->
+
+#Geometry
+print('   Constructing Geometry')
+
+#Define the geometry of the simulation #md.geometry
+#surface is [-x*tan(0.5*pi/180)] #md.mesh
+#->
+
+#base is [surface-1000+500*sin(x*2*pi/L).*sin(y*2*pi/L)]
+#L is the size of the side of the square #max(md.mesh.x)-min(md.mesh.x)
+#->
+
+#->
+
+#thickness is the difference between surface and base #md.geometry
+#->
+
+#plot the geometry to check it out
+#->
+
+
+print('   Defining friction parameters')
+
+#These parameters will not be used but need to be fixed #md.friction
+#one friciton coefficient per node (md.mesh.numberofvertices,1)
+#->
+
+#one friciton exponent (p,q) per element
+#->
+
+#->
+
+
+print('   Construct ice rheological properties')
+
+#The rheology parameters sit in the material section #md.materials
+#B has one value per vertex
+#->
+
+#n has one value per element
+#->
+
+
+print('   Set boundary conditions')
+
+#Set the default boundary conditions for an ice-sheet
+# help SetIceSheetBC
+#->
Index: /issm/branches/trunk-dlcheng-ASE/examples/ISMIP/IsmipF.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/ISMIP/IsmipF.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/ISMIP/IsmipF.par	(revision 27955)
@@ -0,0 +1,64 @@
+%Parameterization for ISMIP F experiment
+
+%Set the Simulation generic name #md.miscellaneous
+%->
+
+%Geometry
+disp('   Constructing Geometry');
+
+%Define the geometry of the simulation #md.geometry
+%surface is [-x*tan(3.0*pi/180)] #md.mesh
+%->
+
+%base is [surface-1000+100*exp(-((x-L/2).^2+(y-L/2).^2)/(10000.^2))]
+%L is the size of the side of the square #max(md.mesh.x)-min(md.mesh.x)
+%->
+
+%->
+
+%thickness is the difference between surface and base #md.geometry
+%->
+
+%plot the geometry to check it out
+%->
+
+
+disp('   Defining friction parameters');
+
+%These parameters will not be used but need to be fixed #md.friction
+%one friciton coefficient per node (md.mesh.numberofvertices,1)
+%conversion from year to seconds with #md.constants.yts
+%->
+
+%one friction exponent (p,q) per element
+%->
+
+%->
+
+
+disp('   Construct ice rheological properties');
+
+%The rheology parameters sit in the material section #md.materials
+%B has one value per vertex
+%->
+
+%n has one value per element
+%->
+
+
+disp('   Set boundary conditions');
+
+%Set the default boundary conditions for an ice-sheet 
+% #help SetIceSheetBC
+%->
+
+disp('   Initializing velocity and pressure');
+
+%initialize the velocity and pressurefields of #md.initialization
+%->
+
+%->
+
+%->
+
+%->
Index: /issm/branches/trunk-dlcheng-ASE/examples/ISMIP/IsmipF.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/ISMIP/IsmipF.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/ISMIP/IsmipF.py	(revision 27955)
@@ -0,0 +1,67 @@
+import numpy as np
+from plotmodel import plotmodel
+from SetIceSheetBC import SetIceSheetBC
+#Parameterization for ISMIP F experiment
+
+#Set the Simulation generic name #md.miscellaneous
+#->
+
+#Geometry
+print('   Constructing Geometry')
+
+#Define the geometry of the simulation #md.geometry
+#surface is [-x*tan(3.0*pi/180)] #md.mesh
+#->
+
+#base is [surface-1000+100*exp(-((x-L/2).^2+(y-L/2).^2)/(10000.^2))]
+#L is the size of the side of the square #max(md.mesh.x)-min(md.mesh.x)
+#->
+
+#->
+
+#thickness is the difference between surface and base #md.geometry
+#->
+
+#plot the geometry to check it out
+#->
+
+
+print('   Defining friction parameters')
+
+#These parameters will not be used but need to be fixed #md.friction
+#one friciton coefficient per node (md.mesh.numberofvertices,1)
+#conversion from year to seconds with #md.constants.yts
+#->
+
+#one friction exponent (p,q) per element
+#->
+
+#->
+
+
+print('   Construct ice rheological properties')
+
+#The rheology parameters sit in the material section #md.materials
+#B has one value per vertex
+#->
+
+#n has one value per element
+#->
+
+
+print('   Set boundary conditions')
+
+#Set the default boundary conditions for an ice-sheet
+# #help SetIceSheetBC
+#->
+
+print('   Initializing velocity and pressure')
+
+#initialize the velocity and pressurefields of #md.initialization
+#->
+
+#->
+
+#->
+
+#->
Index: /issm/branches/trunk-dlcheng-ASE/examples/ISMIP/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/ISMIP/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/ISMIP/runme.m	(revision 27955)
@@ -0,0 +1,217 @@
+%which steps to perform; steps are from 1 to 8
+%step 7 is specific to ISMIPA
+%step 8 is specific to ISMIPF
+
+steps=[1];
+
+% parameter file to be used, choose between IsmipA.par or IsmipF.par
+ParamFile='IsmipA.par';
+
+%Run Steps
+
+%Mesh Generation #1
+if any(steps==1) 
+
+	%initialize md as a new model #help model
+	%->
+
+	% generate a squaremesh #help squaremesh
+	% Side is 80 km long with 20 points
+	%->
+
+	% plot the given mesh #plotdoc
+	%->
+
+	% save the given model
+	%->
+
+end 
+
+%Masks #2
+if any(steps==2) 
+
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+
+	% set the mask #help setmask
+	% all MISMIP nodes are grounded
+	%->
+
+	% plot the given mask #md.mask to locate the field
+	%->
+
+	% save the given model
+	%->
+
+end 
+
+%Parameterization #3
+if any(steps==3) 
+
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+
+	% parametrize the model # help parameterize
+	% you will need to fil-up the parameter file (given by the
+  % ParamFile variable)
+	%->
+
+	% save the given model
+	%->
+
+end 
+
+%Extrusion #4
+if any(steps==4) 
+	
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+
+	% vertically extrude the preceding mesh #help extrude
+	% only 5 layers exponent 1
+	%->
+
+	% plot the 3D geometry #plotdoc
+	%->
+
+	% save the given model
+	%->
+
+end 
+
+%Set the flow computing method #5
+if any(steps==5) 
+
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+
+	% set the approximation for the flow computation #help setflowequation
+	% We will be using the Higher Order Model (HO)
+	%->
+
+	% save the given model
+	%->
+
+end 
+
+%Set Boundary Conditions #6
+if any(steps==6) 
+
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+
+	% dirichlet boundary condition are known as SPCs
+	% ice frozen to the base, no velocity	#md.stressbalance
+	% SPCs are initialized at NaN one value per vertex
+	%->
+
+	%->
+
+	%->
+
+	% extract the nodenumbers at the base #md.mesh.vertexonbase
+	%->
+
+	% set the sliding to zero on the bed (Vx and Vy)
+	%->
+
+	%->
+
+	% periodic boundaries have to be fixed on the sides
+	% Find the indices of the sides of the domain, for x and then for y
+	% for x
+	% create maxX, list of indices where x is equal to max of x (use >> help find)
+	%->
+
+	% create minX, list of indices where x is equal to min of x
+	%->
+
+	% for y
+	% create maxY, list of indices where y is equal to max of y
+	% but not where x is equal to max or min of x
+	% (i.e, indices in maxX and minX should be excluded from maxY and minY)	
+	%->
+
+	% create minY, list of indices where y is equal to max of y
+	% but not where x is equal to max or min of x
+	%->
+
+	% set the node that should be paired together, minX with maxX and minY with maxY
+	% #md.stressbalance.vertex_pairing
+	%->
+
+	if (ParamFile=='IsmipF.par')
+		% if we are dealing with IsmipF the solution is in masstransport
+		md.masstransport.vertex_pairing=md.stressbalance.vertex_pairing;
+	end
+	% save the given model
+	%->
+
+end 
+
+%Solving #7
+if any(steps==7) 
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+
+	% Set cluster #md.cluster
+	% generic parameters #help generic
+	% set only the name and number of process
+	%->
+
+	% Set which control message you want to see #help verbose
+	%->
+
+	% Solve #help solve
+	% we are solving a StressBalanc
+	%->
+
+	% save the given model
+	%->
+
+	% plot the surface velocities #plotdoc
+	%->
+end 
+
+%Solving #8
+if any(steps==8) 
+	% load the preceding step #help loadmodel
+	% path is given by the organizer with the name of the given step
+	%->
+
+	% Set cluster #md.cluster
+	% generic parameters #help generic
+	% set only the name and number of process
+	%->
+
+	% Set which control message you want to see #help verbose
+	%->
+
+	% set the transient model to ignore the thermal model
+	% #md.transient 
+	%->
+
+	% define the timestepping scheme
+	% everything here should be provided in years #md.timestepping
+	% give the length of the time_step (4 years)
+	%->
+
+	% give final_time (20*4 years time_steps)
+	%->
+
+	% Solve #help solve
+	% we are solving a TransientSolution
+	%->
+
+	% save the given model
+	%->
+
+	% plot the surface velocities #plotdoc
+	%->
+end 
Index: /issm/branches/trunk-dlcheng-ASE/examples/ISMIP/runme.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/ISMIP/runme.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/ISMIP/runme.py	(revision 27955)
@@ -0,0 +1,217 @@
+import numpy as np
+from model import *
+from squaremesh import squaremesh
+from plotmodel import plotmodel
+from export_netCDF import export_netCDF
+from loadmodel import loadmodel
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from socket import gethostname
+from solve import solve
+#which steps to perform; steps are from 1 to 8
+#step 7 is specific to ISMIPA
+#step 8 is specific to ISMIPF
+
+steps = [1]
+
+# parameter file to be used, choose between IsmipA.py or IsmipF.py
+ParamFile = 'IsmipA.py'
+
+#Run Steps
+
+#Mesh Generation #1
+if 1 in steps:
+    print("Now generating the mesh")
+    #initialize md as a new model #help(model)
+    #->
+
+    # generate a squaremesh #help(squaremesh)
+    # Side is 80 km long with 20 points
+    #->
+
+    # plot the given mesh #plotdoc
+    #->
+
+    # save the given model
+    #->
+
+#Masks #2
+if 2 in steps:
+    print("Setting the masks")
+    # load the preceding step #help(loadmodel)
+    # path is given by the organizer with the name of the given step
+    #->
+
+    # set the mask #help(setmask)
+    # all MISMIP nodes are grounded
+    #->
+
+    # plot the given mask #md.mask to locate the field
+    #->
+
+    # save the given model
+    #->
+
+#Parameterization #3
+if 3 in steps:
+    print("Parameterizing")
+    # load the preceding step #help(loadmodel)
+    # path is given by the organizer with the name of the given step
+    #->
+
+    # parametrize the model # help(parameterize)
+    # you will need to fil-up the parameter file (given by the
+    # ParamFile variable)
+    #->
+
+    # save the given model
+    #->
+
+
+#Extrusion #4
+if 4 in steps:
+    print("Extruding")
+    # load the preceding step #help(loadmodel)
+    # path is given by the organizer with the name of the given step
+    #->
+
+    # vertically extrude the preceding mesh #help(extrude)
+    # only 5 layers exponent 1
+    #->
+
+    # plot the 3D geometry #plotdoc
+    #->
+
+    # save the given model
+    #->
+
+#Set the flow computing method #5
+if 5 in steps:
+    print("setting flow approximation")
+    # load the preceding step #help(loadmodel)
+    # path is given by the organizer with the name of the given step
+    #->
+
+    # set the approximation for the flow computation #help(setflowequation)
+    # We will be using the Higher Order Model (HO)
+    #->
+
+    # save the given model
+    #->
+
+#Set Boundary Conditions #6
+if 6 in steps:
+    print("setting boundary conditions")
+    # load the preceding step #help(loadmodel)
+    # path is given by the organizer with the name of the given step
+    #->
+
+    # dirichlet boundary condition are known as SPCs
+    # ice frozen to the base, no velocity   #md.stressbalance
+    # SPCs are initialized at NaN one value per vertex
+    #->
+
+    #->
+
+    #->
+
+    # extract the nodenumbers at the base #md.mesh.vertexonbase
+    #->
+
+    # set the sliding to zero on the bed (Vx and Vy)
+    #->
+
+    #->
+
+    # periodic boundaries have to be fixed on the sides
+    # Find the indices of the sides of the domain, for x and then for y
+    # for x
+    # create maxX, list of indices where x is equal to max of x
+    #->
+
+    # create minX, list of indices where x is equal to min of x
+    #->
+
+    # for y
+    # create maxY, list of indices where y is equal to max of y
+    # but not where x is equal to max or min of x
+    # (i.e, indices in maxX and minX should be excluded from maxY and minY)
+    #->
+
+    # create minY, list of indices where y is equal to max of y
+    # but not where x is equal to max or min of x
+    #->
+
+    # set the node that should be paired together, minX with maxX and minY with maxY
+    # #md.stressbalance.vertex_pairing
+    #->
+
+    if ParamFile=='IsmipF.py':
+        # if we are dealing with IsmipF the solution is in masstransport
+        md.masstransport.vertex_pairing = md.stressbalance.vertex_pairing
+
+    # save the given model
+    #->
+
+#Solving #7
+if 7 in steps:
+    print("running the solver for the A case")
+    # load the preceding step #help(loadmodel)
+    # path is given by the organizer with the name of the given step
+    #->
+
+    # Set cluster #md.cluster
+    # generic parameters #help(generic)
+    # set only the name and number of process
+    #->
+
+    # Set which control message you want to see #help(verbose)
+    #->
+
+    # Solve #help(solve)
+    # we are solving a StressBalanc
+    #->
+
+    # save the given model
+    #->
+
+    # plot the surface velocities #plotdoc
+    #->
+
+#Solving #8
+if 8 in steps:
+    print("running the solver for the F case")
+    # load the preceding step #help(loadmodel)
+    # path is given by the organizer with the name of the given step
+    #->
+
+    # Set cluster #md.cluster
+    # generic parameters #help(generic)
+    # set only the name and number of process
+    #->
+
+    # Set which control message you want to see #help(verbose)
+    #->
+
+    # set the transient model to ignore the thermal model
+    # #md.transient
+    #->
+
+    # define the timestepping scheme
+    # everything here should be provided in years #md.timestepping
+    # give the length of the time_step (4 years)
+    #->
+
+    # give final_time (20*4 years time_steps)
+    #->
+
+    # Solve #help(solve)
+    # we are solving a TransientSolution
+    #->
+
+    # save the given model
+    #->
+
+    # plot the surface velocities #plotdoc
+    #->
Index: /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/DomainOutline.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/DomainOutline.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/DomainOutline.exp	(revision 27955)
@@ -0,0 +1,733 @@
+## Name:DomainOutline
+## Icon:0
+# Points Count Value
+727 1.000000
+# X pos Y pos
+47662.8073760000 -2621047.2585999998
+39869.9055420000 -2638077.6292949999
+26037.5047870000 -2644088.3483640002
+24868.5695120000 -2659115.1460360000
+25647.8596950000 -2674141.9437079998
+16880.8451320000 -2687666.0616130000
+515.7512810000 -2685662.4885900002
+-7666.7956450000 -2672639.2639410002
+-22083.6640370000 -2677147.3032430001
+-30071.3884170000 -2690170.5278920000
+-44683.0793550000 -2694678.5671930001
+-41760.7411680000 -2709705.3648660001
+-37669.4677050000 -2724231.2692820001
+-44488.2568100000 -2738757.1736989999
+-55787.9644690000 -2753283.0781149999
+-67672.1397650000 -2742263.4264890002
+-87154.3943500000 -2741762.5332330000
+-105078.0685680000 -2741011.1933490001
+-97090.3441880000 -2760546.0303230002
+-99817.8598300000 -2780581.7605530000
+-82478.6532500000 -2789096.9459000002
+-77218.4445120000 -2804123.7435730002
+-77023.6219660000 -2820152.3277560002
+-95336.9412760000 -2829669.2996149999
+-112870.9704020000 -2832674.6591500002
+-123196.5653320000 -2818649.6479890002
+-122417.2751480000 -2834177.3389170002
+-120274.2271440000 -2849204.1365890000
+-105662.5362060000 -2854713.9624020001
+-89492.2649000000 -2850706.8163560000
+-77997.7346950000 -2860724.6814710000
+-92024.9579960000 -2867737.1870519998
+-84816.5238000000 -2890277.3835600000
+-94752.4736380000 -2901797.9284419999
+-114234.7282230000 -2894284.5296060001
+-127677.4838860000 -2883765.7712349999
+-146964.9159250000 -2888774.7037930000
+-139951.3042750000 -2905805.0744880000
+-154173.3501210000 -2916824.7261140002
+-165667.8803260000 -2904302.3947210000
+-162550.7195930000 -2920330.9789040000
+-152809.5923000000 -2934355.9900650000
+-147744.2061080000 -2949883.6809930000
+-163719.6548680000 -2950384.5742489998
+-175603.8301650000 -2963908.6921540000
+-189825.8760110000 -2956896.1865730002
+-195670.5523870000 -2971422.0909899999
+-210282.2433250000 -2966413.1584319999
+-222750.8862590000 -2978301.3022220000
+-214763.1618800000 -2995247.5385030000
+-222750.8862590000 -3011386.8111520000
+-206970.2600460000 -3016228.5929470002
+-217295.8549760000 -3027122.6019839998
+-232686.8360980000 -3031964.3837790000
+-212035.6462380000 -3035192.2383090002
+-212814.9364210000 -3050928.0291410000
+-197229.1327540000 -3048910.6200600001
+-185344.9574570000 -3058190.7018329999
+-174824.5399810000 -3071102.1199520002
+-182812.2643610000 -3084820.5017030002
+-192163.7465610000 -3098942.3652710002
+-176577.9428940000 -3092486.6562120002
+-184955.3123650000 -3105801.5561469998
+-182617.4418150000 -3121537.3469790001
+-199372.1807580000 -3120326.9015310002
+-218464.7902510000 -3115888.6015519998
+-205022.0345870000 -3126782.6105900002
+-189825.8760110000 -3128800.0196710001
+-198592.8905740000 -3146149.7377680000
+-213009.7589670000 -3140904.4741580002
+-225283.5793550000 -3131220.9105679998
+-222750.8862590000 -3146149.7377680000
+-208334.0178670000 -3151395.0013790000
+-195670.5523870000 -3161078.5649680002
+-213009.7589670000 -3171569.0921900002
+-227621.4499060000 -3161078.5649680002
+-242622.7859360000 -3157850.7104389998
+-240090.0928400000 -3174393.4649040001
+-220023.3706180000 -3185690.9557579998
+-233076.4811890000 -3193357.1102660000
+-258013.7670580000 -3188111.8466550000
+-275158.1510920000 -3196181.4829790001
+-258208.5896040000 -3198198.8920600000
+-252753.5583200000 -3213127.7192600002
+-270482.4099920000 -3215952.0919740000
+-258793.0572410000 -3226442.6191960000
+-275547.7961840000 -3232969.1157640000
+-276521.9089130000 -3248275.5695210001
+-293276.6478560000 -3241868.2167850002
+-282561.4078340000 -3256818.7065010001
+-288211.2616640000 -3273549.0164200002
+-302433.3075110000 -3267141.6636850000
+-305745.2907900000 -3251479.2458879999
+-313733.0151700000 -3237596.6482950002
+-310810.6769820000 -3218018.6260489998
+-325812.0130120000 -3213747.0575589999
+-338280.6559470000 -3203780.0644160002
+-336527.2530340000 -3187761.6825779998
+-321720.7395500000 -3185269.9342919998
+-325812.0130120000 -3165691.9120459999
+-313538.1926240000 -3155368.9548610002
+-329708.4639290000 -3158928.5952699999
+-338085.8334010000 -3173167.1569030001
+-351723.4116100000 -3164268.0558819999
+-342566.7519550000 -3151809.3144530002
+-325812.0130120000 -3153233.1706160000
+-310615.8544360000 -3148249.6740450002
+-329123.9962920000 -3150029.4942490002
+-343151.2195930000 -3144334.0695949998
+-361854.1839940000 -3145401.9617180000
+-377634.8102080000 -3142910.2134320000
+-388350.0502290000 -3154657.0267800000
+-397701.5324300000 -3178150.6534750001
+-417573.4321060000 -3179930.4736790000
+-432720.8850460000 -3186308.0579260001
+-451813.4945390000 -3187438.8412219998
+-467788.9432980000 -3177261.7915590000
+-482985.1018740000 -3173492.5139070000
+-490583.1811620000 -3158792.3310610000
+-492726.2291670000 -3141453.6538590002
+-490193.5360710000 -3119214.9157079998
+-505389.6946470000 -3113560.9992289999
+-489803.8909790000 -3110922.5048719998
+-478309.3607740000 -3100368.5274439999
+-495648.5673540000 -3101122.3829750000
+-512792.9513890000 -3108660.9382799999
+-501103.5986380000 -3097353.1053220001
+-493895.1644420000 -3083783.7057719999
+-486491.9077000000 -3068329.6673960001
+-503636.2917340000 -3066068.1008040002
+-522728.9012270000 -3064183.4619780001
+-521559.9659520000 -3046467.8570099999
+-531301.0932440000 -3029506.1075729998
+-543769.7361790000 -3012167.4303710000
+-545912.7841830000 -2992944.1143419999
+-550004.0576459999 -2974474.6538439998
+-567538.0867720000 -2983897.8479749998
+-585851.4060810000 -2995959.5364640001
+-589942.6795440000 -2981259.3536189999
+-572213.8278720001 -2975982.3649050002
+-565200.2162220000 -2959397.5432330002
+-548055.8321870000 -2954120.5545190000
+-545717.9616370000 -2933389.5274290000
+-536561.3019820000 -2920197.0556450002
+-545523.1390910000 -2907758.4393910002
+-533444.1412490000 -2898335.2452590000
+-530568.0950890000 -2883304.2548420001
+-545624.1658510000 -2879383.1998239998
+-559750.8495300000 -2868110.1666489998
+-577223.3267109999 -2867129.9028940001
+-590606.5007220000 -2859287.7928590002
+-573319.9009570000 -2851445.6828239998
+-551572.2431889999 -2846054.2321750000
+-530939.8499220000 -2834781.1989989998
+-528337.5660870000 -2817626.5832969998
+-543765.3916830000 -2804883.1544900001
+-528151.6886699999 -2802432.4951040000
+-528151.6886699999 -2785768.0112790000
+-513467.3727410000 -2778416.0331210000
+-513839.1275750000 -2760771.2855420001
+-525735.2822510001 -2749498.2523670001
+-509563.9469880000 -2738225.2191909999
+-517184.9210780000 -2724501.5266300002
+-532240.9918400000 -2725971.9222610001
+-524248.2629170000 -2707837.0428050002
+-512537.9856570000 -2694113.3502429998
+-521088.3468310000 -2678429.1301730000
+-538189.0691780000 -2669606.7563829999
+-556033.3011930001 -2677448.8664190001
+-539676.0885130001 -2666175.8332429999
+-526664.6693360000 -2658333.7232080000
+-517556.6759110000 -2639708.7118739998
+-526107.0370850000 -2626965.2830670001
+-538932.5788460000 -2618142.9092779998
+-550456.9786890000 -2607360.0079790000
+-565698.9268680000 -2599517.8979440001
+-581126.7524640000 -2600988.2935759998
+-583110.5023000001 -2578346.1085480000
+-572583.8192940000 -2566324.6704099998
+-556315.3091930000 -2558811.2715739999
+-538132.8567270000 -2571333.6029679999
+-524735.2601730000 -2578346.1085480000
+-519759.0100240000 -2594875.5859869998
+-503107.7114500000 -2585859.5073839999
+-486456.4128760000 -2576342.5355250002
+-477843.6722340000 -2559312.1648300001
+-474015.7875040000 -2536771.9683220000
+-473441.6047950000 -2521244.2773940000
+-474972.7586870000 -2504714.7999539999
+-485690.8359300000 -2491691.5753049999
+-486073.6244030000 -2476664.7776330002
+-492581.0284430000 -2459634.4069380001
+-474207.1817410000 -2447112.0755440001
+-465594.4410990000 -2434589.7441509999
+-462340.7390790000 -2418060.2667109999
+-462914.9217880000 -2399026.3229930000
+-468465.3546460000 -2375484.3399729999
+-473058.8163220000 -2360457.5423010001
+-478417.8549440000 -2343427.1716060000
+-504256.0768690000 -2331405.7334679998
+-489901.5091330000 -2322389.6548649999
+-475164.1529230000 -2307863.7504480002
+-462577.4401970000 -2287577.5735909999
+-457317.2314590000 -2269044.5231289999
+-439783.2023330000 -2268042.7366169998
+-436666.0415990000 -2252014.1524330000
+-435886.7514160000 -2233481.1019710000
+-448550.2168960000 -2220457.8773220000
+-440172.8474240000 -2206933.7594170002
+-429262.7848570000 -2193409.6415120000
+-433743.7034120000 -2176880.1640720000
+-426730.0917610000 -2162354.2596560000
+-419716.4801110000 -2147327.4619840002
+-428678.3172200000 -2134805.1305900002
+-427314.5593990000 -2110762.2543150000
+-426535.2692150000 -2094733.6701310000
+-427509.3819440000 -2067184.5410650000
+-428093.8495820000 -2050655.0636260000
+-425366.3339400000 -2035628.2659539999
+-432379.9455910000 -2021102.3615369999
+-446017.5238000000 -2003571.0975860001
+-430821.3652240000 -2002569.3110750001
+-428678.3172200000 -1986039.8336360001
+-424197.3986650000 -1971013.0359630000
+-418060.4884710000 -1957238.4714309999
+-433451.4695930000 -1950225.9658500000
+-426243.0353960000 -1933696.4884110000
+-441634.0165180000 -1943714.3535259999
+-433841.1146840000 -1926683.9828300001
+-448647.6281690000 -1933696.4884110000
+-464428.2543820000 -1948222.3928270000
+-465402.3671120000 -1933195.5951550000
+-463843.7867450000 -1914662.5446929999
+-456245.7074570000 -1901138.4267879999
+-468714.3503910000 -1892122.3481840000
+-480208.8805960000 -1905646.4660890000
+-479429.5904130000 -1888616.0953939999
+-478455.4776830000 -1871585.7246989999
+-478650.3002290000 -1856558.9270270001
+-484494.9766050000 -1841031.2360990001
+-494430.9264430000 -1822498.1856370000
+-505925.4566480000 -1807972.2812200000
+-508847.7948350000 -1791442.8037810000
+-504172.0537350000 -1776416.0061079999
+-510990.8428400000 -1759886.5286689999
+-502223.8282770000 -1745861.5175079999
+-512939.0682980000 -1728330.2535570001
+-511964.9555690000 -1712802.5626300001
+-505340.9890100000 -1697775.7649570000
+-506315.1017390000 -1681747.1807740000
+-507289.2144690000 -1662713.2370559999
+-508446.9486300000 -1645056.7497910000
+-502180.9448550000 -1623518.3397939999
+-505662.0580630000 -1602480.8230530000
+-505836.1137240000 -1586953.1321250000
+-509317.2269320000 -1571425.4411970000
+-516105.3976870000 -1557400.4300360000
+-530552.0175000000 -1537865.5930620001
+-533336.9080660000 -1513321.8235309999
+-522719.5127820000 -1498295.0258589999
+-506532.3363650000 -1492284.3067900001
+-522893.5684430000 -1484770.9079539999
+-515757.2863660000 -1469744.1102819999
+-532118.5184440000 -1465236.0709800001
+-535947.7429720000 -1449708.3800520001
+-544476.4703320001 -1428670.8633109999
+-551960.8637290000 -1415146.7454059999
+-565363.1495800000 -1405629.7735470000
+-567277.7618440000 -1386094.9365729999
+-582420.6042990000 -1384091.3635499999
+-593212.0552430000 -1370066.3523899999
+-606266.2297730000 -1362052.0602980000
+-613793.7528780000 -1344395.5730330001
+-621618.1005840000 -1359923.2639609999
+-634079.0987820000 -1369440.2358200001
+-633354.6221430000 -1354413.4381480000
+-638860.6446030000 -1339386.6404760000
+-649438.0035390001 -1351908.9718690000
+-667405.0241970000 -1352409.8651250000
+-679431.3364110000 -1363429.5167510000
+-679721.1270670000 -1346900.0393119999
+-676533.4298540000 -1330370.5618720001
+-690008.6953470000 -1339386.6404760000
+-701165.6355950000 -1327365.2023380001
+-688994.4280520000 -1315844.6574560001
+-709279.7739560000 -1318349.1237339999
+-717249.0169900000 -1331372.3483839999
+-735216.0376480001 -1329869.6686160001
+-741420.6668040000 -1315969.8807699999
+-750947.3474350000 -1299440.4033299999
+-734597.5036490000 -1299440.4033299999
+-722496.0444700000 -1284413.6056580001
+-707948.5456690000 -1288420.7517039999
+-689023.9233340001 -1290424.3247270000
+-678209.8534290000 -1276399.3135660000
+-672545.3406220000 -1262374.3024060000
+-693401.0468670001 -1264377.8754280000
+-709493.4127980000 -1260871.6226379999
+-725971.9955110000 -1250853.7575240000
+-725714.5176560000 -1234825.1733400000
+-720951.1773400001 -1215290.3363659999
+-737172.2821980000 -1218295.6958999999
+-749402.4803050000 -1205272.4712510000
+-736399.8486340001 -1196757.2859040000
+-720822.4384130000 -1191247.4600899999
+-710652.0631450000 -1204771.5779949999
+-697906.9093280000 -1218796.5891559999
+-684131.8440910000 -1227812.6677590001
+-668940.6506530000 -1229816.2407819999
+-666237.1331770000 -1253358.2238020001
+-653620.7182870000 -1262374.3024060000
+-648471.1611900000 -1247347.5047330000
+-634696.0959530000 -1258868.0496149999
+-632625.0227419999 -1243541.0164699999
+-618416.8083510000 -1233878.1370890001
+-601000.2874830000 -1228080.4094600000
+-615361.2783740000 -1217451.2421410000
+-598861.4165000001 -1216968.0981719999
+-610625.2069099999 -1201990.6351310001
+-617652.9258560000 -1185080.5962139999
+-631708.3637490000 -1178799.7246160000
+-648666.5551200000 -1183631.1643070001
+-656458.1565610000 -1169136.8452349999
+-653708.1795820000 -1154159.3821950001
+-665166.4169950000 -1166237.9814210001
+-676166.3249110000 -1153193.0942569999
+-676166.3249110000 -1133384.1915249999
+-689305.1038110000 -1118406.7284850001
+-709013.2721609999 -1111159.5689490000
+-711610.4726409999 -1091833.8101870001
+-716346.5441050000 -1074440.6273010001
+-701527.2237180000 -1070092.3315790000
+-680291.2903790000 -1068642.8996720000
+-664096.9815030000 -1078788.9230219999
+-650958.2026030000 -1100530.4016300000
+-628041.7277770001 -1095698.9619390001
+-611236.3129050001 -1091350.6662170000
+-588930.9440750000 -1094732.6740009999
+-577319.9301640000 -1078305.7790530000
+-565250.5867559999 -1066710.3237960001
+-550431.2663680000 -1071541.7634860000
+-540042.4644469999 -1060429.4521979999
+-531203.6819710000 -1047613.0696300000
+-510357.6695660000 -1037937.0529810000
+-498473.4942690000 -1027821.2173940000
+-486199.6738810000 -1015066.4681760001
+-487953.0767930000 -994834.7970020000
+-464964.0163830000 -990876.4265550000
+-449378.2127160000 -998353.3485110000
+-430285.6032230000 -1001432.0810810000
+-417622.1377430000 -1012427.5545450000
+-399308.8184330000 -1004950.6325890000
+-384697.1274945000 -1000332.5337340001
+-370085.4365560000 -995714.4348789999
+-375540.4678400000 -980760.5909680000
+-380021.3863940000 -966246.5659950000
+-383528.1922200000 -949973.2652690000
+-383528.1922200000 -930181.4130330000
+-384112.6598570000 -911709.0176140000
+-380216.2089400000 -883560.6055450001
+-366919.5701860000 -892846.9764360000
+-353087.1694310000 -880338.0618260000
+-336527.2530340000 -873692.7009390000
+-322694.8522790000 -888547.0370390000
+-307888.3387940000 -897146.9158330000
+-294835.2282230000 -913564.8662580000
+-275937.4412760000 -919037.5164000000
+-252169.0906820000 -915128.4805850000
+-245350.3015780000 -901446.8552300000
+-244181.3663030000 -918646.6128190000
+-231615.3120950000 -930563.0925760000
+-215445.0407900000 -924017.9382920000
+-206872.8487730000 -937108.2468600000
+-190507.7549220000 -933426.5975750000
+-186611.3040050000 -912972.9904390000
+-185961.8955186667 -896882.8194913333
+-185312.4870323333 -880792.6485436666
+-184663.0785460000 -864702.4775960000
+-175311.5963460000 -883519.7961620000
+-174532.3061620000 -902337.1147280000
+-172584.0807040000 -918700.0004370000
+-168882.4523330000 -933835.6697180000
+-152322.5359360000 -933835.6697180000
+-142581.4086430000 -921563.5054359999
+-127969.7177050000 -912154.8461530000
+-131086.8784390000 -930563.0925760000
+-115501.0747710000 -924427.0104349999
+-112189.0914910000 -905609.6918690000
+-114916.6071330000 -887610.5175890001
+-101473.8514700000 -899882.6818710000
+-84329.4674350000 -896610.1047290000
+-100110.0936490000 -892110.3111590000
+-87836.2732610000 -879838.1468770000
+-74685.7514160000 -869305.2030530000
+-57541.3673810000 -863251.9975030000
+-49553.6430020000 -850388.9357080000
+-34357.4844260000 -846227.3568920000
+-47995.0626350000 -825797.7881600000
+-30071.3884170000 -835255.9218320000
+-18771.6807580000 -850767.2610550000
+-6303.0378240000 -859847.0693810000
+7139.7178400000 -852658.8877899999
+22141.0538700000 -862873.6721560000
+31297.7135250000 -877628.3606850000
+47662.8073760000 -874601.7579100000
+49611.0328340000 -893518.0252550000
+66365.7717770000 -886708.1690110000
+81123.5796250000 -882220.1151260000
+97683.4960220000 -884202.5846670000
+80149.4668960000 -888960.5115630000
+65537.7759570000 -896493.8958170000
+68460.1141450000 -914732.6155880000
+84435.5629050000 -917508.0729450000
+100605.8342100000 -907595.7252430000
+120282.9113400000 -911957.1582320000
+129049.9259030000 -927420.4206470000
+153402.7441340000 -925437.9511060000
+169767.8379850000 -920680.0242090001
+180677.9005530000 -910371.1825990001
+192367.2533040000 -899269.3531730000
+201134.2678670000 -912353.6521400000
+182626.1260110000 -920680.0242090001
+169183.3703480000 -936539.7805320000
+163338.6939720000 -950417.0673150000
+182820.9485570000 -955174.9942120000
+187301.8671120000 -970241.7627180000
+200744.6227750000 -980550.6043280000
+198796.3973170000 -995617.3728350000
+211118.9233410000 -983385.4589040000
+211508.5684330000 -999969.0227530000
+225146.1466420000 -1008484.9068910000
+240731.9503100000 -1009829.5201760000
+238588.9023060000 -1032239.7415930000
+253785.0608820000 -1029550.5150230000
+273072.4929210000 -1036273.5814480000
+281255.0398460000 -1056890.9851510001
+286320.4260380000 -1071681.7312860000
+305413.0355310000 -1086024.2729930000
+316907.5657360000 -1095884.7704169999
+326453.8704830000 -1081990.4331380001
+341260.3839670000 -1076611.9799980000
+355677.2523600000 -1064958.6648609999
+372319.0245690000 -1056006.2810410000
+387981.0391590000 -1068027.7191780000
+383779.0352450000 -1084056.3033620000
+366207.0188750000 -1085558.9831290001
+366971.0195860000 -1102088.4605690001
+352646.0062410000 -1113108.1121950001
+362960.0158500000 -1126131.3368440000
+380914.0325760000 -1133143.8424249999
+394093.0448530000 -1123626.8705660000
+409182.0589100000 -1113108.1121950001
+409182.0589100000 -1131641.1626569999
+404407.0544620000 -1158689.3984670001
+386262.0375580000 -1153179.5726540000
+374229.0263480000 -1166202.7973030000
+364488.0172730000 -1182732.2747430000
+377285.0291950000 -1191748.3533460000
+388172.0393370000 -1202768.0049719999
+392947.0437860000 -1219798.3756680000
+380341.0320420000 -1228814.4542710001
+383588.0350670000 -1251354.6507790000
+389509.0405830000 -1265880.5551960000
+389509.0405830000 -1282910.9258910001
+399632.0500130000 -1295934.1505400001
+408609.0583760000 -1313966.3077469999
+410137.0598000000 -1333000.2514650000
+413526.9681570000 -1350406.2921020000
+416526.2265730000 -1367436.6627970000
+415776.4119690000 -1385468.8200040001
+419900.3922910000 -1406005.4434890000
+430960.1577010000 -1421032.2411610000
+431897.4259560000 -1436059.0388330000
+448018.4399430000 -1436559.9320890000
+448580.8008960000 -1456094.7690630001
+438458.3037410000 -1469117.9937120001
+432459.7869090000 -1486148.3644069999
+449705.5228020000 -1494663.5497550000
+448393.3472450000 -1513196.6002170001
+463202.1856750000 -1521210.8923090000
+447830.9862920000 -1525218.0383550001
+458140.9370980000 -1539243.0495160001
+462639.8247220000 -1554269.8471880001
+473887.0437820000 -1564287.7123030000
+458703.2980510000 -1557275.2067219999
+463014.7320240000 -1574305.5774170000
+478948.2923600000 -1567293.0718370001
+484009.5409370000 -1584824.3357879999
+475011.7656880000 -1597346.6671819999
+484009.5409370000 -1614877.9311319999
+488508.4285610000 -1630906.5153160000
+470512.8780640000 -1618384.1839230000
+461702.5564670000 -1631407.4085720000
+474074.4974330000 -1641926.1669419999
+488883.3358630000 -1648938.6725230000
+495661.8324810000 -1662963.6836830000
+478923.6439970000 -1667471.7229849999
+463095.1396700000 -1663965.4701950001
+449449.8773190000 -1652945.8185690001
+455817.6664170000 -1670477.0825199999
+441626.5935720000 -1662963.6836830000
+433439.4361610000 -1648437.7792670000
+409690.0603430000 -1652315.3206390000
+394504.9542530000 -1655951.1781029999
+411243.1427370000 -1662462.7904280000
+426707.7734010000 -1676487.8015880000
+437260.1096190000 -1691514.5992610001
+455999.6032480000 -1702534.2508870000
+441626.5935720000 -1710047.6497229999
+428891.0153770000 -1692516.3857720001
+435076.8676430000 -1708544.9699560001
+419976.1106410000 -1704036.9306540000
+408696.0270980000 -1692516.3857720001
+395050.7647470000 -1701532.4643750000
+388501.0388190000 -1718562.8350710000
+378494.5130940000 -1731085.1664640000
+376129.3342870000 -1713553.9025129999
+361938.2614420000 -1720566.4080940001
+373582.2186480000 -1732086.9529760000
+358481.4616460000 -1738598.5652999999
+369397.6715270000 -1754627.1494839999
+352659.4830430000 -1751621.7899490001
+335805.3526830000 -1754501.9261700001
+338338.0457790000 -1777042.1226780000
+354897.9621760000 -1775539.4429110000
+349053.2858010000 -1792569.8136060000
+330739.9664910000 -1791568.0270950000
+344182.7221550000 -1806093.9315110000
+341455.2065130000 -1823625.1954620001
+351780.8014430000 -1809600.1843010001
+344377.5447010000 -1826129.6617409999
+356066.8974510000 -1836147.5268550001
+345546.4799760000 -1853678.7908059999
+363080.5091020000 -1853678.7908059999
+371847.5236650000 -1841156.4594129999
+370288.9432980000 -1859689.5098750000
+386848.8596950000 -1868204.6952229999
+404772.5339130000 -1856183.2570849999
+415098.1288430000 -1867703.8019669999
+428735.7070520000 -1860691.2963870000
+421137.6277640000 -1874215.4142920000
+413929.1935680000 -1888741.3187080000
+418799.7572140000 -1903768.1163800000
+428735.7070520000 -1916791.3410300000
+415098.1288430000 -1935825.2847480001
+398148.5673540000 -1926809.2061439999
+380030.0705910000 -1929814.5656790000
+364444.2669230000 -1929814.5656790000
+348468.8181630000 -1924304.7398659999
+333077.8370420000 -1919796.7005640001
+348079.1730720000 -1935825.2847480001
+332883.0144960000 -1939832.4307939999
+318855.7911950000 -1951853.8689309999
+331908.9017660000 -1964376.2003250001
+349442.9308930000 -1959868.1610230000
+358209.9454560000 -1943338.6835840000
+358404.7680020000 -1958365.4812560000
+345936.1250670000 -1971388.7059050000
+345351.6574300000 -1987918.1833450000
+330739.9664910000 -1991925.3293910001
+337753.5781420000 -2005449.4472960001
+353534.2043550000 -2007453.0203180001
+365223.5571060000 -1997435.1552040000
+385679.9244200000 -1986415.5035770000
+399317.5026290000 -1977399.4249740001
+399122.6800840000 -1993928.9024139999
+381393.8284120000 -1998436.9417150000
+399512.3251750000 -1999939.6214820000
+395615.8742580000 -2018973.5652000001
+387822.9724240000 -2032998.5763610001
+383975.2271440000 -2048275.8206610000
+398976.5631740000 -2062801.7250780000
+397223.1602620000 -2078830.3092610000
+379299.4860440000 -2080833.8822840001
+362739.5696470000 -2085842.8148419999
+374428.9223980000 -2097363.3597240001
+390599.1937030000 -2089849.9608880000
+379299.4860440000 -2103374.0787930000
+364492.9725590000 -2111388.3708839999
+355531.1354500000 -2097363.3597240001
+343257.3150620000 -2111889.2641400001
+351829.5070790000 -2127917.8483239999
+365661.9078340000 -2119402.6629760000
+357284.5383630000 -2133928.5673929998
+374039.2773060000 -2136933.9269269998
+385533.8075110000 -2147452.6852980000
+375792.6802180000 -2160976.8032030002
+390988.8387940000 -2162479.4829699998
+378520.1958600000 -2174000.0278520002
+394105.9995280000 -2164983.9492489998
+409107.3355580000 -2161978.5897140000
+421186.3334010000 -2149957.1515759998
+437941.0723440000 -2150958.9380879998
+450409.7152780000 -2171495.5615730002
+454695.8112860000 -2156969.6571570002
+471645.3727750000 -2159975.0166910002
+459566.3749330000 -2147452.6852980000
+465605.8738540000 -2132425.8876260002
+477490.0491500000 -2120404.4494880000
+485867.4186220000 -2133427.6741370000
+493264.3211700000 -2119402.6629760000
+495978.8328800000 -2102873.1855370002
+509098.9728100000 -2110386.5843730001
+523877.9810080000 -2104876.7585600000
+541371.5009160000 -2109885.6911169998
+529608.6168400000 -2096862.4664680001
+544990.8498620000 -2099366.9327469999
+561579.5325330000 -2107381.2248390000
+576509.3469370001 -2104876.7585600000
+596868.1847600000 -2102873.1855370002
+611948.8053700000 -2108883.9046060001
+597622.2157910001 -2119402.6629760000
+580430.3082950000 -2125413.3820449999
+599130.2778520000 -2126916.0618119999
+583144.8200050000 -2134930.3539040000
+568818.2304260000 -2148454.4718089998
+582843.2075930000 -2161477.6964580002
+566706.9435400000 -2162980.3762260000
+552983.5787850000 -2170994.6683180002
+543331.9815950000 -2188025.0390130002
+547554.5553660000 -2207058.9827310001
+538053.7643820000 -2193033.9715700001
+525084.4306570000 -2209062.5557539999
+516036.0582910000 -2221083.9938920001
+529910.2292520000 -2214572.3815669999
+541220.6947100000 -2225091.1399369999
+526140.0741000000 -2223087.5669140001
+526743.2989240000 -2239617.0443540001
+521615.8879170000 -2256647.4150490002
+506233.6548950000 -2255144.7352820002
+508194.1355740000 -2275681.3587670000
+489343.3598110000 -2268167.9599310001
+488740.1349870000 -2283695.6508590002
+475770.8012620000 -2293212.6227179999
+460539.3744460000 -2281692.0778359999
+449228.9089890000 -2296217.9822519999
+448022.4593400000 -2314250.1394590000
+440180.5366230000 -2298722.4485309999
+441085.3738600000 -2277184.0385340001
+426000.8914760000 -2286450.5637659999
+431125.9775380000 -2301477.3614380001
+426190.7094780000 -2317505.9456210001
+424672.1654600000 -2332532.7432940002
+421445.2594210000 -2313498.7995750001
+409296.9072740000 -2298472.0019029998
+411764.5413040000 -2318006.8388769999
+403222.7312010000 -2304983.6142279999
+411005.2692950000 -2289956.8165560002
+393542.0130840000 -2293463.0693460000
+378356.5729000000 -2295967.5356250000
+388416.9270220000 -2308489.8670180002
+405880.1832330000 -2317005.0523660001
+417838.7173770000 -2328525.5972480001
+402463.4591910000 -2342049.7151529999
+385000.2029800000 -2341047.9286409998
+375699.1208680000 -2327022.9174799998
+384240.9309710000 -2314500.5860870001
+368865.6727850000 -2321012.1984120002
+373421.3048400000 -2337541.6758510000
+363360.9507190000 -2353069.3667790000
+351402.4165740000 -2336539.8893400002
+340392.9724410000 -2324518.4512020000
+329573.3463100000 -2313999.6928309998
+335267.8863790000 -2329527.3837589999
+336216.9763910000 -2347058.6477100002
+337166.0664020000 -2362085.4453819999
+318374.0841750000 -2366593.4846839998
+303758.0979980000 -2362586.3386380002
+290314.2882280000 -2354697.2698599999
+292067.6911410000 -2339670.4721880001
+275702.5972900000 -2347684.7642799998
+277880.2580262116 -2321542.8592617917
+269420.4169677348 -2331176.2138948478
+260960.5759092579 -2323294.3782859840
+252500.7348507810 -2343436.8470641924
+254834.4841082919 -2357157.0794203631
+258918.5453089359 -2372336.9109633607
+266740.7601810000 -2359706.2024170002
+271754.1662252456 -2369125.7927523423
+266545.9376350000 -2379241.0393909998
+291483.2235030000 -2386253.5449720002
+275897.4198350000 -2396271.4100859999
+288755.7078610000 -2404786.5954339998
+276871.5325650000 -2415806.2470600000
+263818.4219930000 -2423820.5391520001
+259532.3259840000 -2445358.9491490000
+250570.4888750000 -2432836.6177559998
+248817.0859630000 -2452371.4547290001
+247258.5055960000 -2470403.6119360002
+229919.2990160000 -2474911.6512380000
+226022.8480990000 -2490439.3421660000
+239660.4263080000 -2499956.3140250002
+227776.2510110000 -2510975.9656509999
+220178.1717230000 -2523999.1902999999
+205761.3033310000 -2533015.2689029998
+210631.8669770000 -2560063.5047129998
+203228.6102350000 -2545036.7070410000
+194266.7731260000 -2558560.8249459998
+199624.3931360000 -2581101.0214539999
+185791.9923810000 -2568077.7968049999
+189493.6207520000 -2583104.5944770002
+186571.2825650000 -2601136.7516839998
+185207.5247440000 -2584106.3809890002
+169816.5436220000 -2595126.0326149999
+156568.6105040000 -2586610.8472679998
+134748.4853690000 -2581101.0214539999
+149749.8214000000 -2579598.3416869999
+136112.2431900000 -2592120.6730809999
+146437.8381200000 -2612657.2965660002
+130462.3893610000 -2620671.5886579999
+137281.1784650000 -2635197.4930739999
+125007.3580770000 -2621172.4819140001
+106888.8613130000 -2617666.2291230001
+91887.5252830000 -2609151.0437759999
+109031.9093180000 -2607648.3640089999
+92277.1703750000 -2603641.2179629998
+97537.3791130000 -2587111.7405229998
+88380.7194580000 -2573587.6226180000
+74743.1412490000 -2567076.0102940002
+61105.5630390000 -2577093.8754090001
+66950.2394150000 -2594124.2461040001
+57598.7572140000 -2581101.0214539999
+53117.8386600000 -2598131.3921500002
+41818.1310010000 -2586610.8472679998
+30810.6571600000 -2599133.1786610000
+44253.4128240000 -2608650.1505200001
+47662.8073760000 -2621047.2585999998
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/Greenland.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/Greenland.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/Greenland.par	(revision 27955)
@@ -0,0 +1,99 @@
+%Name and Coordinate system
+md.miscellaneous.name='SeaRISEgreenland';
+md.mesh.epsg=3413;
+
+disp('   Loading SeaRISE data from NetCDF');
+ncdata='../Data/Greenland_5km_dev1.2.nc';
+x1    = ncread(ncdata,'x1');
+y1    = ncread(ncdata,'y1');
+usrf  = ncread(ncdata,'usrf')';
+topg  = ncread(ncdata,'topg')';
+velx  = ncread(ncdata,'surfvelx')';
+vely  = ncread(ncdata,'surfvely')';
+temp  = ncread(ncdata,'airtemp2m')';
+smb   = ncread(ncdata,'smb')';
+gflux = ncread(ncdata,'bheatflx')';
+
+disp('   Interpolating surface and bedrock');
+md.geometry.base     = InterpFromGridToMesh(x1,y1,topg,md.mesh.x,md.mesh.y,0);
+md.geometry.surface = InterpFromGridToMesh(x1,y1,usrf,md.mesh.x,md.mesh.y,0);
+
+disp('   Constructing thickness');
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+%Set min thickness to 1 meter
+pos0=find(md.geometry.thickness<=0);
+md.geometry.thickness(pos0)=1;
+md.geometry.surface=md.geometry.thickness+md.geometry.base;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%Reading IceBridge data for Jakobshavn
+disp('      reading IceBridge Jakobshavn bedrock');
+fid  = fopen('../Data/Jakobshavn_2008_2011_Composite/grids/Jakobshavn_2008_2011_Composite_XYZGrid.txt');
+titles = fgets(fid); 
+data = fscanf(fid,'%g,%g,%g,%g,%g',[5 266400])';
+fclose(fid);
+
+[xi,yi]= ll2xy(md.mesh.lat,md.mesh.long,+1,45,70);
+bed  = flipud(reshape(data(:,5),[360 740])); bed(find(bed==-9999))=NaN;
+bedy = flipud(reshape(data(:,1),[360 740]));
+bedx = flipud(reshape(data(:,2),[360 740]));
+
+%Insert Icebridge bed and recalculate thickness
+bed_jks=InterpFromGridToMesh(bedx(1,:)',bedy(:,1),bed,xi,yi,NaN);
+in=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,...
+	   'Jak_grounded.exp','node',1);
+bed_jks(~in)=NaN;
+pos=find(~isnan(bed_jks));
+md.geometry.base(pos)=bed_jks(pos);
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+disp('   Interpolating velocities ');
+md.inversion.vx_obs  = InterpFromGridToMesh(x1,y1,velx,md.mesh.x,md.mesh.y,0);
+md.inversion.vy_obs  = InterpFromGridToMesh(x1,y1,vely,md.mesh.x,md.mesh.y,0);
+md.inversion.vel_obs = sqrt(md.inversion.vx_obs.^2+md.inversion.vy_obs.^2);
+md.initialization.vx = md.inversion.vx_obs;
+md.initialization.vy = md.inversion.vy_obs;
+md.initialization.vz = zeros(md.mesh.numberofvertices,1);
+md.initialization.vel= md.inversion.vel_obs;
+
+disp('   Interpolating temperatures');
+md.initialization.temperature=InterpFromGridToMesh(x1,y1,temp,md.mesh.x,md.mesh.y,0)+273.15;
+
+disp('   Interpolating surface mass balance');
+md.smb.mass_balance=InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0);
+md.smb.mass_balance=md.smb.mass_balance*md.materials.rho_water/md.materials.rho_ice;
+
+disp('   Construct basal friction parameters');
+md.friction.coefficient=30*ones(md.mesh.numberofvertices,1);
+pos=find(md.mask.ocean_levelset<0);
+md.friction.coefficient(pos)=0; %no friction applied on floating ice
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('   Construct ice rheological properties');
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+
+disp('   Set other boundary conditions');
+md.mask.ice_levelset(md.mesh.vertexonboundary==1)=0;
+md.basalforcings.groundedice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.thermal.spctemperature     = [md.initialization.temperature;1]; %impose observed temperature on surface
+md.masstransport.spcthickness    = NaN*ones(md.mesh.numberofvertices,1);
+
+disp('   Set geothermal heat flux');
+md.basalforcings.geothermalflux=InterpFromGridToMesh(x1,y1,gflux,md.mesh.x,md.mesh.y,0);
+
+disp('   Set Pressure');
+md.initialization.pressure=md.materials.rho_ice*md.constants.g*md.geometry.thickness;
+
+disp('   Single point constraints');
+%Initialize single point constraint arrays
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.spcvx = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz = NaN*ones(md.mesh.numberofvertices,1);
Index: /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/Greenland_noOIB.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/Greenland_noOIB.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/Greenland_noOIB.par	(revision 27955)
@@ -0,0 +1,82 @@
+%Name and Coordinate system
+md.miscellaneous.name='SeaRISEgreenland';
+md.mesh.epsg=3413;
+
+disp('   Loading SeaRISE data from NetCDF');
+ncdata='../Data/Greenland_5km_dev1.2.nc';
+x1    = ncread(ncdata,'x1');
+y1    = ncread(ncdata,'y1');
+usrf  = ncread(ncdata,'usrf')';
+topg  = ncread(ncdata,'topg')';
+velx  = ncread(ncdata,'surfvelx')';
+vely  = ncread(ncdata,'surfvely')';
+temp  = ncread(ncdata,'airtemp2m')';
+smb   = ncread(ncdata,'smb')';
+gflux = ncread(ncdata,'bheatflx')';
+
+disp('   Interpolating surface and bedrock');
+md.geometry.base     = InterpFromGridToMesh(x1,y1,topg,md.mesh.x,md.mesh.y,0);
+md.geometry.surface = InterpFromGridToMesh(x1,y1,usrf,md.mesh.x,md.mesh.y,0);
+
+disp('   Constructing thickness');
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+%Set min thickness to 1 meter
+pos0=find(md.geometry.thickness<=0);
+md.geometry.thickness(pos0)=1;
+md.geometry.surface=md.geometry.thickness+md.geometry.base;
+
+disp('   Interpolating velocities ');
+md.inversion.vx_obs  = InterpFromGridToMesh(x1,y1,velx,md.mesh.x,md.mesh.y,0);
+md.inversion.vy_obs  = InterpFromGridToMesh(x1,y1,vely,md.mesh.x,md.mesh.y,0);
+md.inversion.vel_obs = sqrt(md.inversion.vx_obs.^2+md.inversion.vy_obs.^2);
+md.initialization.vx = md.inversion.vx_obs;
+md.initialization.vy = md.inversion.vy_obs;
+md.initialization.vz = zeros(md.mesh.numberofvertices,1);
+md.initialization.vel= md.inversion.vel_obs;
+
+disp('   Interpolating temperatures');
+md.initialization.temperature=InterpFromGridToMesh(x1,y1,temp,md.mesh.x,md.mesh.y,0)+273.15;
+
+disp('   Interpolating surface mass balance');
+md.smb.mass_balance=InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0);
+md.smb.mass_balance=md.smb.mass_balance*md.materials.rho_water/md.materials.rho_ice;
+
+disp('   Construct basal friction parameters');
+md.friction.coefficient=30*ones(md.mesh.numberofvertices,1);
+pos=find(md.mask.ocean_levelset<0);
+md.friction.coefficient(pos)=0; %no friction applied on floating ice
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('   Construct ice rheological properties');
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+
+disp('   Set other boundary conditions');
+md.mask.ice_levelset(md.mesh.vertexonboundary==1)=0;
+md.basalforcings.groundedice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.thermal.spctemperature     = [md.initialization.temperature;1]; %impose observed temperature on surface
+md.masstransport.spcthickness    = NaN*ones(md.mesh.numberofvertices,1);
+
+disp('   Set geothermal heat flux');
+md.basalforcings.geothermalflux=InterpFromGridToMesh(x1,y1,gflux,md.mesh.x,md.mesh.y,0);
+
+disp('   Set Pressure');
+md.initialization.pressure=md.materials.rho_ice*md.constants.g*md.geometry.thickness;
+
+disp('   Single point constraint for continental model');
+%Set at least one vertex to velocity 0 so as to not get a singular problem (point on the wet peninsula)
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.spcvx = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz = NaN*ones(md.mesh.numberofvertices,1);
+location = 1.0e+06 *[.32011 -2.2039];
+[dist pos]=min(sqrt((md.mesh.x - location(1)).^2 + (md.mesh.y - location(2)).^2));
+md.stressbalance.spcvx(pos) = 0;
+md.stressbalance.spcvy(pos) = 0;
+md.stressbalance.spcvz(pos) = 0;
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/Greenland_solution.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/Greenland_solution.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/Greenland_solution.par	(revision 27955)
@@ -0,0 +1,103 @@
+%Name and Coordinate system
+md.miscellaneous.name='SeaRISEgreenland';
+md.mesh.epsg=3413;
+
+disp('   Loading SeaRISE data from NetCDF');
+ncdata='../Data/Greenland_5km_dev1.2.nc';
+x1    = ncread(ncdata,'x1');
+y1    = ncread(ncdata,'y1');
+usrf  = ncread(ncdata,'usrf')';
+topg  = ncread(ncdata,'topg')';
+velx  = ncread(ncdata,'surfvelx')';
+vely  = ncread(ncdata,'surfvely')';
+temp  = ncread(ncdata,'airtemp2m')';
+smb   = ncread(ncdata,'smb')';
+gflux = ncread(ncdata,'bheatflx')';
+
+disp('   Interpolating surface and bedrock');
+md.geometry.base     = InterpFromGridToMesh(x1,y1,topg,md.mesh.x,md.mesh.y,0);
+md.geometry.surface = InterpFromGridToMesh(x1,y1,usrf,md.mesh.x,md.mesh.y,0);
+
+disp('   Constructing thickness');
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+%Set min thickness to 1 meter
+pos0=find(md.geometry.thickness<=0);
+md.geometry.thickness(pos0)=1;
+md.geometry.surface=md.geometry.thickness+md.geometry.base;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%Reading IceBridge data for Jakobshavn
+disp('      reading IceBridge Jakobshavn bedrock');
+fid  = fopen('../Data/Jakobshavn_2008_2011_Composite_XYZGrid.txt');
+titles = fgets(fid); 
+data = fscanf(fid,'%g,%g,%g,%g,%g',[5 266400])';
+fclose(fid);
+
+[xi,yi]= ll2xy(md.mesh.lat,md.mesh.long,+1,45,70);
+bed  = flipud(reshape(data(:,5),[360 740])); bed(find(bed==-9999))=NaN;
+surf  = flipud(reshape(data(:,4),[360 740])); surf(find(surf==-9999))=NaN;
+bedy = flipud(reshape(data(:,1),[360 740]));
+bedx = flipud(reshape(data(:,2),[360 740]));
+
+%Insert Icebridge bed and recalculate thickness
+bed_jks=InterpFromGridToMesh(bedx(1,:)',bedy(:,1),bed,xi,yi,NaN);
+surf_jks=InterpFromGridToMesh(bedx(1,:)',bedy(:,1),surf,xi,yi,NaN);
+in=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,...
+	   'Jak_grounded.exp','node',1);
+bed_jks(~in)=NaN;
+surf_jks(~in)=NaN;
+pos=find(~isnan(bed_jks));
+md.geometry.base(pos)=bed_jks(pos);
+md.geometry.surface(pos)=surf_jks(pos);
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+disp('   Interpolating velocities ');
+md.inversion.vx_obs  = InterpFromGridToMesh(x1,y1,velx,md.mesh.x,md.mesh.y,0);
+md.inversion.vy_obs  = InterpFromGridToMesh(x1,y1,vely,md.mesh.x,md.mesh.y,0);
+md.inversion.vel_obs = sqrt(md.inversion.vx_obs.^2+md.inversion.vy_obs.^2);
+md.initialization.vx = md.inversion.vx_obs;
+md.initialization.vy = md.inversion.vy_obs;
+md.initialization.vz = zeros(md.mesh.numberofvertices,1);
+md.initialization.vel= md.inversion.vel_obs;
+
+disp('   Interpolating temperatures');
+md.initialization.temperature=InterpFromGridToMesh(x1,y1,temp,md.mesh.x,md.mesh.y,0)+273.15;
+
+disp('   Interpolating surface mass balance');
+md.smb.mass_balance=InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0);
+md.smb.mass_balance=md.smb.mass_balance*md.materials.rho_water/md.materials.rho_ice;
+
+disp('   Construct basal friction parameters');
+md.friction.coefficient=30*ones(md.mesh.numberofvertices,1);
+pos=find(md.mask.ocean_levelset<0);
+md.friction.coefficient(pos)=0; %no friction applied on floating ice
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('   Construct ice rheological properties');
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+
+disp('   Set other boundary conditions');
+md.mask.ice_levelset(md.mesh.vertexonboundary==1)=0;
+md.basalforcings.groundedice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.thermal.spctemperature     = [md.initialization.temperature;1]; %impose observed temperature on surface
+md.masstransport.spcthickness    = NaN*ones(md.mesh.numberofvertices,1);
+
+disp('   Set geothermal heat flux');
+md.basalforcings.geothermalflux=InterpFromGridToMesh(x1,y1,gflux,md.mesh.x,md.mesh.y,0);
+
+disp('   Set Pressure');
+md.initialization.pressure=md.materials.rho_ice*md.constants.g*md.geometry.thickness;
+
+disp('   Single point constraints');
+%Initialize single point constraint arrays
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.spcvx = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz = NaN*ones(md.mesh.numberofvertices,1);
Index: /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/Jak_grounded.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/Jak_grounded.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/Jak_grounded.exp	(revision 27955)
@@ -0,0 +1,19 @@
+## Name:Jak_grouded
+## Icon:0
+# Points Count Value
+13 1.000000
+# X pos Y pos
+-414397.6663804040 -2243466.6708395295
+-421486.9037621063 -2215731.3059818177
+-342860.8164377716 -2178965.8223332223
+-275835.2993744044 -2209281.2211311869
+-226210.6377024883 -2262816.9253914217
+-228144.0660793162 -2295067.3496445753
+-333193.6745536321 -2328607.7908678548
+-379595.9555975018 -2325382.7484425395
+-422775.8560133249 -2285392.2223686292
+-427287.1888925899 -2265396.9593316740
+-411819.7618779668 -2254431.8150856020
+-413108.7141291854 -2243466.6708395295
+-414397.6663804040 -2243466.6708395295
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/Jak_outline.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/Jak_outline.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/Jak_outline.exp	(revision 27955)
@@ -0,0 +1,17 @@
+## Name:Jak
+## Icon:0
+# Points Count Value
+11 1.000000
+# X pos Y pos
+-421561.7247949215 -2216716.3488182197
+-386019.6416099078 -2203459.4896082953
+-351446.8879663036 -2185999.2360147359
+-289086.6874689616 -2214129.6445821370
+-255160.1535196303 -2282353.9688088228
+-340138.0433165266 -2317597.8140254519
+-383306.1449952667 -2302506.6581698526
+-416391.9672407377 -2279120.5885137189
+-448056.7322601135 -2246463.4475331730
+-429126.8716234095 -2231167.6696134652
+-421561.7247949215 -2216716.3488182197
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/data_gaps.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/data_gaps.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/data_gaps.exp	(revision 27955)
@@ -0,0 +1,70 @@
+## Name:data_gaps
+## Icon:0
+# Points Count Value
+13 1.000000
+# X pos Y pos
+-183076.0390091268 -1794119.5324780210
+-233886.6983670916 -1838953.5447257366
+-239864.4229974404 -2006333.8571172084
+-299641.6693009282 -2081057.2108634012
+-269753.0461491842 -2116924.4206615738
+-257797.5968884868 -2185669.9061080711
+-278719.6330947075 -2248437.5232548732
+-254808.7345733123 -2266371.1281539593
+-224920.1114215683 -2167736.3012089850
+-198020.3505849990 -2093012.9474627920
+-123298.7927056390 -1967477.7131691882
+-180087.1766939524 -1797108.4666278686
+-183076.0390091268 -1794119.5324780210
+
+## Name:data_gaps
+## Icon:0
+# Points Count Value
+12 1.000000
+# X pos Y pos
+-90421.3072387208 -1824008.8739764981
+-117321.0680752902 -1946555.1741202541
+-156176.2781725575 -2075079.3425637058
+-177098.3143787782 -2203603.5110071572
+-174109.4520636038 -2314194.0745515227
+-72488.1333476745 -2293271.5355025884
+-93410.1695538952 -2203603.5110071572
+-30644.0609352330 -2206592.4451570050
+-6733.1624138379 -2081057.2108634012
+44077.4969441269 -1967477.7131691882
+-93410.1695538952 -1824008.8739764981
+-90421.3072387208 -1824008.8739764981
+
+## Name:data_gaps
+## Icon:0
+# Points Count Value
+15 1.000000
+# X pos Y pos
+-87432.4449235464 -2365005.9550989335
+-287686.2200402305 -2639987.8968849229
+-284697.3577250564 -2879102.6288727401
+-470006.8212658686 -2983715.3241174100
+-538750.6545148797 -3157073.5048085772
+-356430.0532892416 -3267664.0683529424
+-189053.7636394757 -3270653.0025027902
+-272741.9084643587 -3243752.5951541606
+-218942.3867912197 -3076372.2827626891
+-236875.5606822660 -3019582.5339155826
+-117321.0680752902 -2834268.6166250245
+20166.5984227317 -2669877.2383834003
+-12710.8870441865 -2469618.6503436035
+-87432.4449235464 -2367994.8892487814
+-87432.4449235464 -2365005.9550989335
+
+## Name:data_gaps
+## Icon:0
+# Points Count Value
+6 1.000000
+# X pos Y pos
+-186064.9013243013 -1555004.8004902040
+-177098.3143787782 -1695484.7055330465
+-81454.7202931975 -1698473.6396828941
+-36621.7855655816 -1513159.7223923360
+-186064.9013243013 -1552015.8663403564
+-186064.9013243013 -1555004.8004902040
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/IceBridge/runme.m	(revision 27955)
@@ -0,0 +1,156 @@
+clear all;
+steps=[1];
+
+%Location of SeaRISE dataset
+ncdata='../Data/Greenland_5km_dev1.2.nc';
+
+if any(steps==1) 
+	disp('   Step 1: Mesh creation');
+
+	%Generate initial uniform mesh (resolution = 20000 m)
+	md=triangle(model,'./DomainOutline.exp',20000);
+
+	% Get velocities (Note: You can use ncdisp('file') to see an ncdump)
+	x1   = ncread(ncdata,'x1');
+	y1   = ncread(ncdata,'y1');
+	velx = ncread(ncdata,'surfvelx');
+	vely = ncread(ncdata,'surfvely');
+	vx   = InterpFromGridToMesh(x1,y1,velx',md.mesh.x,md.mesh.y,0);
+	vy   = InterpFromGridToMesh(x1,y1,vely',md.mesh.x,md.mesh.y,0);
+	vel  = sqrt(vx.^2+vy.^2);
+
+	%Mesh greenland without refinement in Jak basin
+	md=bamg(md,'hmax',400000,'hmin',5000,'gradation',1.7,'field',vel,'err',8);
+	return;
+
+	%Refine mesh in the region of Jakobshavn (resolution = 3000 m)
+	hmaxVertices=NaN*ones(md.mesh.numberofvertices,1);
+	in=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,...
+		'Jak_outline.exp','node',1);
+	hmaxVertices(find(in))=3000;
+	md=bamg(md,'hmax',400000,'hmin',5000,'gradation',1.7,'field',vel,...
+		'err',8,'hmaxVertices',hmaxVertices);
+
+	%convert x,y coordinates (Polar stereo) to lat/lon
+	[md.mesh.lat,md.mesh.long]=xy2ll(md.mesh.x,md.mesh.y,+1,39,71);
+
+	save ./Models/Greenland.Mesh_generation md;
+end 
+
+if any(steps==2) 
+	disp('   Step 2: Parameterization');
+	md = loadmodel('./Models/Greenland.Mesh_generation');
+
+	md = setmask(md,'','');
+	md = parameterize(md,'./Greenland.par');
+	md = setflowequation(md,'SSA','all');
+
+	save ./Models/Greenland.Parameterization2 md; 
+end 
+
+if any(steps==3) 
+	disp('   Step 3: Control method friction');
+	md = loadmodel('./Models/Greenland.Parameterization2');
+
+	%Control general
+	md.inversion.iscontrol=1;
+	md.inversion.nsteps=30;
+	md.inversion.step_threshold=0.99*ones(md.inversion.nsteps,1);
+	md.inversion.maxiter_per_step=5*ones(md.inversion.nsteps,1);
+	md.verbose=verbose('solution',true,'control',true);
+
+	%Cost functions
+	md.inversion.cost_functions=[101 103 501];
+	md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,3);
+	md.inversion.cost_functions_coefficients(:,1)=350;
+	md.inversion.cost_functions_coefficients(:,2)=0.6;
+	md.inversion.cost_functions_coefficients(:,3)=2e-6;
+
+	%Controls
+	md.inversion.control_parameters={'FrictionCoefficient'};
+	md.inversion.gradient_scaling(1:md.inversion.nsteps)=50;
+	md.inversion.min_parameters=1*ones(md.mesh.numberofvertices,1);
+	md.inversion.max_parameters=200*ones(md.mesh.numberofvertices,1);
+	in=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,...
+		'data_gaps.exp','node',1);
+	md.inversion.cost_functions_coefficients(find(in),1)=0.0;
+	md.inversion.cost_functions_coefficients(find(in),2)=0.0;
+
+	%Additional parameters
+	md.stressbalance.restol=0.01;
+	md.stressbalance.reltol=0.1;
+	md.stressbalance.abstol=NaN;
+
+	%Go solve
+	md.cluster=generic('name',oshostname,'np',2);
+
+	md.verbose=verbose('solution',true,'control',true);
+	md=solve(md,'Stressbalance');
+
+	%Update model friction fields accordingly
+	md.friction.coefficient=md.results.StressbalanceSolution.FrictionCoefficient;
+
+	save ./Models/Greenland.Control_drag md; 
+end 
+
+if any(steps==4) 
+	disp('   Step 4: Transient run');
+	md = loadmodel('./Models/Greenland.Control_drag');
+
+	%Set surface mass balance
+	x1  = ncread(ncdata,'x1');
+	y1  = ncread(ncdata,'y1');
+	smb = ncread(ncdata,'smb');
+	smb = InterpFromGridToMesh(x1,y1,smb',md.mesh.x,md.mesh.y,0)*1000/md.materials.rho_ice;
+	smb = [smb smb smb-1.0];
+	md.smb.mass_balance = [smb;1 10 20];
+
+	%Set transient options, run for 20 years, saving every year
+	md.timestepping.time_step=0.2; %This must be reduced for finer resolutions
+	md.timestepping.final_time=20;
+	md.settings.output_frequency=1;
+
+	%Additional options
+	md.inversion.iscontrol=0;
+	md.transient.requested_outputs={'IceVolume','TotalSmb','SmbMassBalance'};
+	md.verbose=verbose('solution',true,'module',true,'convergence',true);
+
+	%Go solve
+	md.cluster=generic('name',oshostname,'np',2);
+	md=solve(md,'Transient');
+
+	save ./Models/Greenland.Transient md; 
+end 
+
+if any(steps==5) 
+	disp('   Step 5: Plotting'); 
+	md = loadmodel('./Models/Greenland.Transient');
+
+	%Planview plots
+	plotmodel(md,'data',md.results.TransientSolution(end).Vel,'caxis',[1e-1 6000],...
+		'log', 10, 'title', 'Velocity (m/y)','gridded',1, ...
+		'data', md.results.TransientSolution(end).SmbMassBalance, ...
+		'title', 'Surface mass balance (m/y)','gridded',1, ...
+		'data',md.results.TransientSolution(end).Thickness,...
+		'title','Thickness (m)','gridded',1, ...
+		'data',md.results.TransientSolution(end).Surface, ...
+		'title', 'Surface (m)','gridded',1);
+
+	%Line Plots
+	figure
+	time_plot=md.results.TransientSolution(1).time:md.timestepping.time_step:md.timestepping.final_time;
+
+	%Plot surface mass balance
+	surfmb=[]; for i=1:100; surfmb=[surfmb ...
+		md.results.TransientSolution(i).SmbMassBalance]; end
+	subplot(3,1,1); plot(time_plot,mean(surfmb)); title('Mean Surface mass balance');
+
+	%Plot velocity
+	vel=[]; for i=1:100; vel=[vel md.results.TransientSolution(i).Vel]; end
+	subplot(3,1,2); plot(time_plot,mean(vel)); title('Mean Velocity');
+
+	%Plot Volume
+	volume=[]; for i=1:100; volume=[volume md.results.TransientSolution(i).IceVolume]; end
+	subplot(3,1,3); plot(time_plot,volume); title('Ice Volume');
+	xlabel('years')
+end 
Index: /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/Contour.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/Contour.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/Contour.exp	(revision 27955)
@@ -0,0 +1,11 @@
+## Name:Contour
+## Icon:0
+# Points Count Value
+5 1.000000
+# X pos Y pos
+260815.7808871837 745919.4159004869
+712422.3484428506 757574.3645213632
+640499.8210173184 195805.8409951325
+342774.0098139530 279721.4710654409
+260815.7808871837 745919.4159004869
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/EISMINT.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/EISMINT.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/EISMINT.par	(revision 27955)
@@ -0,0 +1,53 @@
+disp('      creating thickness');
+hmin=0.01;
+hmax=2756.7;
+radius=sqrt((md.mesh.x).^2+(md.mesh.y).^2);
+radiusmax=max(radius);
+radius(find(radius>(1.-10^-9)*radiusmax))=radiusmax;    %eliminate roundoff issues in next statement
+md.geometry.thickness=hmin*ones(size(md.mesh.x,1),1)+hmax*(4.*((1./2.)^(4./3.)*ones(size(md.mesh.x,1),1)-((radius)./(2.*radiusmax)).^(4./3.))).^(3./8.);
+md.geometry.base=0.*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+disp('      creating drag');
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('      creating temperatures');
+tmin=238.15; %K
+st=1.67*10^-2/1000.; %k/m
+md.initialization.temperature=tmin+st*radius;
+md.basalforcings.geothermalflux=4.2*10^-2*ones(md.mesh.numberofvertices,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=6.81*10^7*ones(md.mesh.numberofvertices,1); %to have the same B as the analytical solution 
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      creating surface mass balance');
+smb_max=0.5; %m/yr
+sb=10^-2/1000.; %m/yr/m
+rel=450.*1000.; %m
+md.smb.mass_balance=min(smb_max,sb*(rel-radius));
+
+disp('      creating velocities');
+constant=0.3;
+md.inversion.vx_obs=constant/2.*md.mesh.x.*(md.geometry.thickness).^-1;
+md.inversion.vy_obs=constant/2.*md.mesh.y.*(md.geometry.thickness).^-1;
+md.inversion.vel_obs=sqrt((md.inversion.vx_obs).^2+(md.inversion.vy_obs).^2);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Deal with boundary conditions:
+disp('      boundary conditions for stressbalance model:');
+md=SetMarineIceSheetBC(md,'./RoundFront.exp');
+
+radius=sqrt((md.mesh.x).^2+(md.mesh.y).^2);
+pos=find(radius==min(radius));
+md.mesh.x(pos)=0.; md.mesh.y(pos)=0.; %the closest node to the center is changed to be exactly at the center
+
+md.stressbalance.spcvx(pos)=0.;
+md.stressbalance.spcvy(pos)=0.;
+md.stressbalance.spcvz(pos)=0.;
Index: /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/RoundFront.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/RoundFront.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/RoundFront.exp	(revision 27955)
@@ -0,0 +1,47 @@
+## Name:
+## Icon:0
+# Points Count Value
+41 1
+# X pos Y pos
+1000000.000000 0.000000
+987688.340595 156434.465040
+951056.516295 309016.994375
+891006.524188 453990.499740
+809016.994375 587785.252292
+707106.781187 707106.781187
+587785.252292 809016.994375
+453990.499740 891006.524188
+309016.994375 951056.516295
+156434.465040 987688.340595
+0.000000 1000000.000000
+-156434.465040 987688.340595
+-309016.994375 951056.516295
+-453990.499740 891006.524188
+-587785.252292 809016.994375
+-707106.781187 707106.781187
+-809016.994375 587785.252292
+-891006.524188 453990.499740
+-951056.516295 309016.994375
+-987688.340595 156434.465040
+-1000000.000000 0.000000
+-987688.340595 -156434.465040
+-951056.516295 -309016.994375
+-891006.524188 -453990.499740
+-809016.994375 -587785.252292
+-707106.781187 -707106.781187
+-587785.252292 -809016.994375
+-453990.499740 -891006.524188
+-309016.994375 -951056.516295
+-156434.465040 -987688.340595
+-0.000000 -1000000.000000
+156434.465040 -987688.340595
+309016.994375 -951056.516295
+453990.499740 -891006.524188
+587785.252292 -809016.994375
+707106.781187 -707106.781187
+809016.994375 -587785.252292
+891006.524188 -453990.499740
+951056.516295 -309016.994375
+987688.340595 -156434.465040
+1000000.000000 0.000000
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/Square.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/Square.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/Square.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+1000000 0
+1000000 1000000
+0 1000000
+0 0
Index: /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/SquareFront.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/SquareFront.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/SquareFront.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+-1000 900000
+-1000 1100000
+1100000 1100000
+1100000 900000
+-1000 900000
Index: /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/SquareShelf.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/SquareShelf.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/SquareShelf.par	(revision 27955)
@@ -0,0 +1,54 @@
+%Start defining model parameters here
+
+%Geometry
+hmin=300;
+hmax=1000;
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+xmin=min(md.mesh.x);
+xmax=max(md.mesh.x);
+md.geometry.thickness=hmax+(hmin-hmax)*(md.mesh.y-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x-xmin)/(xmax-xmin);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%Initial velocity and pressure
+x     = transpose(ncread('../Data/SquareShelf.nc','x'));
+y     = transpose(ncread('../Data/SquareShelf.nc','y'));
+vx    = transpose(ncread('../Data/SquareShelf.nc','vx'));
+vy    = transpose(ncread('../Data/SquareShelf.nc','vy'));
+index = transpose(ncread('../Data/SquareShelf.nc','index'));
+md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+clear vx vy x y index;
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+%Friction
+md.friction.coefficient=20*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.masstransport.stabilization=1;
+md.thermal.stabilization=1;
+md.settings.waitonlock=30;
+md.verbose=verbose(0);
+md.stressbalance.restol=0.10;
+md.steadystate.reltol=0.02;
+md.stressbalance.reltol=0.02;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=1;
+md.timestepping.final_time=3;
+
+%Boundary conditions:
+md=SetIceShelfBC(md,'./SquareFront.exp');
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/eismint.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/eismint.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/eismint.m	(revision 27955)
@@ -0,0 +1,51 @@
+md=model();
+
+%Create mesh with roundmesh
+md=roundmesh(md,750000,30000);
+
+%Set mask
+md=setmask(md,'','');
+
+%Parameterize model
+md=parameterize(md,'EISMINT.par');
+
+%We extrude the model to have a 3d model
+md=extrude(md,10,1.);
+
+%Set ice flow approximation
+md=setflowequation(md,'SIA','all');
+
+%Create boundary conditions: zero velocity on the bed
+pos=find(md.mesh.vertexonbase);
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvy(pos)=0;
+md.stressbalance.spcvz(pos)=0;
+
+%Go Solve
+md.cluster=generic('np',2);
+md.verbose.convergence=1;
+md=solve(md,'Stressbalance');
+vel=DepthAverage(md,sqrt(md.results.StressbalanceSolution.Vx.^2+md.results.StressbalanceSolution.Vy.^2));
+
+%Calculate analytical velocity
+constant=0.3;
+vx_obs=constant/2*md.mesh.x.*(md.geometry.thickness).^-1;
+vy_obs=constant/2*md.mesh.y.*(md.geometry.thickness).^-1;
+vel_obs=sqrt(vx_obs.^2+vy_obs.^2);
+vel_obs=project2d(md,vel_obs,1);
+
+plotmodel(md,...
+	'data',vel    ,'view',2,'caxis',[0 200],'title','Modelled velocity',...
+	'data',vel_obs,'view',2,'caxis',[0 200],'title','Analytical velocity',...
+	'data',abs(vel-vel_obs)./(vel_obs+eps)*100,'caxis',[0 30],'view',2,'title','Relative misfit (%)');
+
+subplot(2,2,4)
+hold on;
+plot(sqrt((md.mesh.x2d).^2+(md.mesh.y2d).^2),vel,'r.');
+plot(sqrt((md.mesh.x2d).^2+(md.mesh.y2d).^2),vel_obs,'b.');
+title('Analytical vs calculated velocity');
+xlabel('distance to the center of the ice sheet (m)');
+ylabel('velocity (m/yr)');
+legend('calculated velocity','exact velocity');
+axis([0 750000 0 200]);
+hold off;
Index: /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/IceflowModels/runme.m	(revision 27955)
@@ -0,0 +1,8 @@
+md=triangle(model(),'Square.exp',80000.);
+md=setmask(md,'all','');
+md=parameterize(md,'SquareShelf.par');
+md=extrude(md,3,1);
+%Set flow equation
+md=setflowequation(md,'HO','Contour.exp','fill','SSA','coupling','tiling');
+%Solve
+md=solve(md,'Stressbalance');
Index: /issm/branches/trunk-dlcheng-ASE/examples/Inversion/DomainOutline.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Inversion/DomainOutline.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Inversion/DomainOutline.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:DomainOutline
+## Icon:0
+# Points Count  Value
+5 1.000000
+# X pos Y pos
+0 0
+1000000 0
+1000000 1000000
+0 1000000
+0 0
Index: /issm/branches/trunk-dlcheng-ASE/examples/Inversion/Front.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Inversion/Front.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Inversion/Front.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+-1000 900000
+-1000 1100000
+1100000 1100000
+1100000 900000
+-1000 900000
Index: /issm/branches/trunk-dlcheng-ASE/examples/Inversion/Square.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Inversion/Square.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Inversion/Square.par	(revision 27955)
@@ -0,0 +1,24 @@
+%Start defining model parameters here
+
+disp('      creating thickness');
+hmin = 300;
+hmax = 1000;
+ymin = min(md.mesh.y);
+ymax = max(md.mesh.y);
+md.geometry.thickness = hmax+(hmin-hmax)*(md.mesh.y-ymin)/(ymax-ymin);
+md.geometry.base      = -md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface   = md.geometry.base+md.geometry.thickness;
+
+disp('      creating drag');
+md.friction.coefficient=50*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p = ones(md.mesh.numberofelements,1);
+md.friction.q = ones(md.mesh.numberofelements,1);
+
+disp('      creating flow law paramter');
+md.materials.rheology_B=1.8*10^8*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B(find(md.mesh.x<md.mesh.y))=1.4*10^8;
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+disp('      creating boundary conditions');
+md=SetIceShelfBC(md,'Front.exp');
Index: /issm/branches/trunk-dlcheng-ASE/examples/Inversion/Square.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Inversion/Square.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Inversion/Square.py	(revision 27955)
@@ -0,0 +1,24 @@
+import numpy as np
+from SetIceShelfBC import SetIceShelfBC
+#Start defining model parameters here
+
+print('      creating thickness')
+hmin = 300
+hmax = 1000
+ymin = np.nanmin(md.mesh.y)
+ymax = np.nanmax(md.mesh.y)
+md.geometry.thickness = hmax + (hmin - hmax) * (md.mesh.y - ymin) / (ymax - ymin)
+md.geometry.base = - md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+print('      creating drag')
+md.friction.coefficient = np.where(md.mask.ocean_levelset < 0., 0., 200)
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+print('      creating flow law paramter')
+md.materials.rheology_B = np.where(md.mesh.x < md.mesh.y, 1.4 * 1e8, 1.8 * 1e8)
+md.materials.rheology_n = 3 * np.ones((md.mesh.numberofelements))
+
+print('      creating boundary conditions')
+md = SetIceShelfBC(md, 'Front.exp')
Index: /issm/branches/trunk-dlcheng-ASE/examples/Inversion/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Inversion/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Inversion/runme.m	(revision 27955)
@@ -0,0 +1,75 @@
+steps=[1];
+
+if any(steps==1) 
+	%Generate observations
+	md = model;
+	md = triangle(md,'DomainOutline.exp',100000);
+	md = setmask(md,'all','');
+	md = parameterize(md,'Square.par');
+	md = setflowequation(md,'SSA','all');
+	md.cluster = generic('np',2);
+	md = solve(md,'Stressbalance');
+	plotmodel(md,'axis#all','tight','data',md.materials.rheology_B,'caxis',[1.3 1.9]*10^8,'title','"True" B',...
+		'data',md.results.StressbalanceSolution.Vel,'title','"observed velocities"')
+	save model1 md
+end 
+
+if any(steps==2) 
+	%Modify rheology, now constant
+	loadmodel('model1.mat');
+	md.materials.rheology_B(:) = 1.8*10^8;
+
+	%results of previous run are taken as observations
+	md.inversion=m1qn3inversion();
+	md.inversion.vx_obs		= md.results.StressbalanceSolution.Vx;
+	md.inversion.vy_obs		= md.results.StressbalanceSolution.Vy;
+	md.inversion.vel_obs	= md.results.StressbalanceSolution.Vel;
+
+	md = solve(md,'Stressbalance');
+	plotmodel(md,'axis#all','tight','data',md.materials.rheology_B,'caxis',[1.3 1.9]*10^8,'title','B first guess',...
+		'data',md.results.StressbalanceSolution.Vel,'title','modeled velocities')
+	save model2 md
+end 
+
+if any(steps==3) 
+	%invert for ice rigidity
+	loadmodel('model2.mat');
+
+	%Set up inversion parameters
+	maxsteps = 20;
+	md.inversion.iscontrol = 1;
+	md.inversion.control_parameters = {'MaterialsRheologyBbar'};
+	md.inversion.maxsteps = maxsteps;
+	md.inversion.cost_functions = 101;
+	md.inversion.cost_functions_coefficients = ones(md.mesh.numberofvertices,1);
+	md.inversion.min_parameters = cuffey(273)*ones(md.mesh.numberofvertices,1);
+	md.inversion.max_parameters = cuffey(200)*ones(md.mesh.numberofvertices,1);
+
+	%Go solve!
+	md.verbose=verbose(0);
+	md=solve(md,'Stressbalance');
+	plotmodel(md,'axis#all','tight','data',md.results.StressbalanceSolution.MaterialsRheologyBbar,'caxis',[1.3 1.9]*10^8,'title','inferred B',...
+		'data',md.results.StressbalanceSolution.Vel,'title','modeled velocities')
+end 
+
+if any(steps==4) 
+	%invert for ice rigidity
+	loadmodel('model2.mat');
+
+	%Set up inversion parameters
+	maxsteps = 20;
+	md.inversion.iscontrol = 1;
+	md.inversion.control_parameters = {'MaterialsRheologyBbar'};
+	md.inversion.maxsteps = maxsteps;
+	md.inversion.cost_functions = [101 502];
+	md.inversion.cost_functions_coefficients		= ones(md.mesh.numberofvertices,1);
+	md.inversion.cost_functions_coefficients(:,2)	= 10^-16*ones(md.mesh.numberofvertices,1);
+	md.inversion.min_parameters = cuffey(273)*ones(md.mesh.numberofvertices,1);
+	md.inversion.max_parameters = cuffey(200)*ones(md.mesh.numberofvertices,1);
+
+	%Go solve!
+	md.verbose=verbose(0);
+	md=solve(md,'Stressbalance');
+	plotmodel(md,'axis#all','tight','data',md.results.StressbalanceSolution.MaterialsRheologyBbar,'caxis',[ 1.3 1.9]*10^8,'title','inferred B',...
+		'data',md.results.StressbalanceSolution.Vel,'title','modeled velocities')
+end 
Index: /issm/branches/trunk-dlcheng-ASE/examples/Inversion/runme.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Inversion/runme.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Inversion/runme.py	(revision 27955)
@@ -0,0 +1,87 @@
+import numpy as np
+from model import *
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from generic import generic
+from solve import solve
+from plotmodel import plotmodel
+from export_netCDF import export_netCDF
+from m1qn3inversion import m1qn3inversion
+from verbose import verbose
+from loadmodel import loadmodel
+from cuffey import cuffey
+steps = [4]
+Clims = [1.3 * 1e8, 1.9 * 1e8]
+
+if 1 in steps:
+    #Generate observations
+    md = model()
+    md = triangle(md, 'DomainOutline.exp', 100000)
+    md = setmask(md, 'all', '')
+    md = parameterize(md, 'Square.py')
+    md = setflowequation(md, 'SSA', 'all')
+    md.cluster = generic('np', 2)
+    md = solve(md, 'Stressbalance')
+    plotmodel(md, 'axis#all', 'tight', 'data', md.materials.rheology_B, 'caxis', Clims, 'title', '"True" B',
+              'data', md.results.StressbalanceSolution.Vel, 'title', '"observed velocities"')
+    export_netCDF(md, 'model1.nc')
+
+if 2 in steps:
+    #Modify rheology, now constant
+    md = loadmodel('model1.nc')
+    md.materials.rheology_B[:] = 1.8 * 1e8
+
+    #results of previous run are taken as observations
+    md.inversion = m1qn3inversion()
+    md.inversion.vx_obs = md.results.StressbalanceSolution.Vx
+    md.inversion.vy_obs = md.results.StressbalanceSolution.Vy
+    md.inversion.vel_obs = md.results.StressbalanceSolution.Vel
+
+    md = solve(md, 'Stressbalance')
+    plotmodel(md, 'axis#all', 'tight', 'data', md.materials.rheology_B, 'caxis', Clims, 'title', 'B first guess',
+              'data', md.results.StressbalanceSolution.Vel, 'title', 'modeled velocities')
+    export_netCDF(md, 'model2.nc')
+
+
+if 3 in steps:
+    #invert for ice rigidity
+    md = loadmodel('model2.nc')
+
+    #Set up inversion parameters
+    maxsteps = 20
+    md.inversion.iscontrol = 1
+    md.inversion.control_parameters = ['MaterialsRheologyBbar']
+    md.inversion.maxsteps = maxsteps
+    md.inversion.cost_functions = [101]
+    md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, 1))
+    md.inversion.min_parameters = cuffey(273) * np.ones((md.mesh.numberofvertices, 1))
+    md.inversion.max_parameters = cuffey(200) * np.ones((md.mesh.numberofvertices, 1))
+
+    #Go solve!
+    md.verbose = verbose(0)
+    md = solve(md, 'Stressbalance')
+    plotmodel(md, 'axis#all', 'tight', 'data', md.results.StressbalanceSolution.MaterialsRheologyBbar, 'caxis', Clims, 'title', 'inferred B',
+              'data', md.results.StressbalanceSolution.Vel, 'title', 'modeled velocities')
+
+
+if 4 in steps:
+    #invert for ice rigidity
+    md = loadmodel('model2.nc')
+
+    #Set up inversion parameters
+    maxsteps = 20
+    md.inversion.iscontrol = 1
+    md.inversion.control_parameters = ['MaterialsRheologyBbar']
+    md.inversion.maxsteps = maxsteps
+    md.inversion.cost_functions = [101, 502]
+    md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, 2))
+    md.inversion.cost_functions_coefficients[:, 1] = 1e-16
+    md.inversion.min_parameters = cuffey(273) * np.ones((md.mesh.numberofvertices, 1))
+    md.inversion.max_parameters = cuffey(200) * np.ones((md.mesh.numberofvertices, 1))
+
+    #Go solve!
+    md.verbose = verbose(0)
+    md = solve(md, 'Stressbalance')
+    plotmodel(md, 'axis#all', 'tight', 'data', md.results.StressbalanceSolution.MaterialsRheologyBbar, 'caxis', Clims, 'title', 'inferred B',
+              'data', md.results.StressbalanceSolution.Vel, 'title', 'modeled velocities')
Index: /issm/branches/trunk-dlcheng-ASE/examples/Jakobshavn/Domain.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Jakobshavn/Domain.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Jakobshavn/Domain.exp	(revision 27955)
@@ -0,0 +1,34 @@
+## Name:JksOutline
+## Icon:0
+# Points Count Value
+28 1.000000
+# X pos Y pos
+-442320.3882147236 -2277080.6549030584
+-415649.3149820761 -2315476.9356749961
+-356259.6577274340 -2351834.4758754564
+-309585.2795717255 -2384114.5349311619
+-279812.9187561168 -2353193.6362587260
+-274850.8586214480 -2287953.9379578433
+-294854.1635456266 -2263149.2609987380
+-309585.2795753506 -2232228.3623235333
+-348041.2456311518 -2191113.7607873622
+-376728.1557929466 -2197909.5626934194
+-391614.3362011510 -2203685.9943137392
+-417355.0231571503 -2206404.3150757281
+-420122.3381705935 -2211830.0535394503
+-421889.2049176788 -2218344.8015625700
+-420705.1891998384 -2226200.5387845989
+-425774.4833068820 -2230306.5097973733
+-429242.2244052034 -2235353.9400299159
+-427025.7933000360 -2240741.0910965428
+-431045.5636035603 -2255158.9014255330
+-424708.0734753361 -2261343.7626088522
+-423137.8820362946 -2268466.9593191240
+-428054.2739333302 -2272589.0010017036
+-432362.3262468725 -2272393.9161962867
+-435068.8255516959 -2273140.2906106352
+-437641.3726878429 -2272612.1952726739
+-439529.7800752302 -2272929.1351353633
+-442475.4525940326 -2275381.7044264446
+-442320.3882147236 -2277080.6549030584
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/Jakobshavn/Front.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Jakobshavn/Front.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Jakobshavn/Front.exp	(revision 27955)
@@ -0,0 +1,15 @@
+## Name:Front
+## Icon:0
+# Points Count Value
+9 1.000000
+# X pos Y pos
+-443691.7204476296 -2241744.0087129781
+-444020.9148401438 -2244124.0631026439
+-443856.3176438867 -2245205.9060070375
+-441551.9568962874 -2244773.1688452801
+-440399.7765224879 -2243474.9573600078
+-439905.9849337166 -2240662.1658085845
+-441387.3597000304 -2238065.7428380400
+-443856.3176438867 -2237633.0056762826
+-443691.7204476296 -2241744.0087129781
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/Jakobshavn/Jks.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Jakobshavn/Jks.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Jakobshavn/Jks.par	(revision 27955)
@@ -0,0 +1,60 @@
+%Name and Coordinate system
+md.miscellaneous.name='Jakobshavn';
+md.mesh.epsg=3413;
+
+%Load SeaRISE dataset
+disp('   Loading SeaRISE data from NetCDF');
+ncdata = '../Data/Greenland_5km_dev1.2.nc';
+x1    = ncread(ncdata,'x1');
+y1    = ncread(ncdata,'y1');
+thk   = ncread(ncdata,'thk')';
+topg  = ncread(ncdata,'topg')';
+velx  = ncread(ncdata,'surfvelx')';
+vely  = ncread(ncdata,'surfvely')';
+temp  = ncread(ncdata,'airtemp2m')';
+smb   = ncread(ncdata,'smb')';
+
+disp('   Interpolating thicknesses');
+md.geometry.thickness=InterpFromGridToMesh(x1,y1,thk,md.mesh.x,md.mesh.y,0);
+pos0=find(md.geometry.thickness<=10);
+md.geometry.thickness(pos0)=10;
+
+disp('   Interpolating bedrock topography');
+md.geometry.base = InterpFromGridToMesh(x1,y1,topg,md.mesh.x,md.mesh.y,0);
+
+disp('   Constructing surface elevation');
+md.geometry.surface=md.geometry.thickness+md.geometry.base;
+
+disp('   Interpolating velocities');
+md.inversion.vx_obs  = InterpFromGridToMesh(x1,y1,velx,md.mesh.x,md.mesh.y,0);
+md.inversion.vy_obs  = InterpFromGridToMesh(x1,y1,vely,md.mesh.x,md.mesh.y,0);
+md.inversion.vel_obs = sqrt(md.inversion.vx_obs.^2+md.inversion.vy_obs.^2);
+md.initialization.vx = md.inversion.vx_obs;
+md.initialization.vy = md.inversion.vy_obs;
+md.initialization.vel= md.inversion.vel_obs;
+
+disp('   Interpolating temperatures');
+md.initialization.temperature=InterpFromGridToMesh(x1,y1,temp,md.mesh.x,md.mesh.y,0)+273.15; %convert to Kelvin
+
+disp('   Interpolating surface mass balance');
+md.smb.mass_balance=InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0);
+md.smb.mass_balance=md.smb.mass_balance*md.materials.rho_water/md.materials.rho_ice;
+
+disp('   Construct basal friction parameters');
+md.friction.coefficient=30*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('   Construct ice rheological properties');
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.damage.D=zeros(md.mesh.numberofvertices,1);
+%Reduce viscosity along the shear margins
+weakb=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,'WeakB.exp','node',2);
+pos=find(weakb);md.materials.rheology_B(pos)=.3*md.materials.rheology_B(pos);
+
+disp('   Set other boundary conditions');
+md=SetMarineIceSheetBC(md,'./Front.exp');
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
Index: /issm/branches/trunk-dlcheng-ASE/examples/Jakobshavn/WeakB.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Jakobshavn/WeakB.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Jakobshavn/WeakB.exp	(revision 27955)
@@ -0,0 +1,60 @@
+## Name:WeakB
+## Icon:0
+# Points Count Value
+24 1.000000
+# X pos Y pos
+-441022.7144520371 -2238435.7116546673
+-441639.8422268176 -2239053.0142011684
+-439171.3311276956 -2240699.1543251718
+-437319.9478033541 -2241727.9919026736
+-435879.9829955329 -2241933.7594181742
+-432382.9256051101 -2242756.8294801759
+-430942.9607972889 -2242962.5969956759
+-429708.7052477279 -2243991.4345731782
+-428680.1589564271 -2245020.2721506800
+-427651.6126651262 -2246049.1097281822
+-425800.2293407847 -2247077.9473056840
+-424565.9737912237 -2247695.2498521851
+-419341.0001274022 -2251604.8326466926
+-416049.6519952395 -2253868.2753171972
+-416049.6519952395 -2252222.1351931938
+-418312.4538361013 -2249341.3899761885
+-423331.7182416627 -2245843.3422126817
+-425594.5200825246 -2245226.0396661805
+-426623.0663738254 -2244402.9696041788
+-427445.9034068661 -2243991.4345731782
+-428885.8682146872 -2242756.8294801759
+-431148.6700555491 -2241522.2243871735
+-436497.1107703134 -2239670.3167476696
+-441022.7144520371 -2238435.7116546673
+
+## Name:WeakB
+## Icon:0
+# Points Count Value
+24 1.000000
+# X pos Y pos
+-442668.3885181184 -2245226.0396661805
+-440405.5866772566 -2245843.3422126817
+-438759.9126111752 -2246049.1097281822
+-437525.6570616142 -2246460.6447591828
+-435879.9829955329 -2246872.1797901839
+-434028.5996711914 -2248106.7848831862
+-431354.3793138092 -2249547.1574916886
+-430120.1237642482 -2249341.3899761885
+-429297.2867312076 -2250164.4600381902
+-427857.3219233864 -2249958.6925226897
+-426623.0663738254 -2250164.4600381902
+-424771.6830494839 -2250575.9950691909
+-423537.4274999229 -2250781.7625846914
+-422714.5904668822 -2251399.0651311926
+-415226.8149621988 -2259629.7657512082
+-419135.2908691420 -2259218.2307202076
+-422838.0575178250 -2255720.1829567007
+-424977.3923077441 -2252016.3676776937
+-426623.0663738254 -2251810.6001621932
+-428268.7404399067 -2251399.0651311926
+-429708.7052477279 -2251399.0651311926
+-431560.0885720694 -2251399.0651311926
+-443902.6440676794 -2246460.6447591828
+-442668.3885181184 -2245226.0396661805
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/Jakobshavn/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Jakobshavn/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Jakobshavn/runme.m	(revision 27955)
@@ -0,0 +1,87 @@
+steps=[1];
+
+if any(steps==1) 
+	disp('   Step 1: Mesh creation');
+	md=triangle(model,'Domain.exp',2000);
+
+	%Get observed velocity field on mesh nodes
+	ncdata='../Data/Greenland_5km_dev1.2.nc';
+	if ~exist(ncdata,'file'),
+		error('File Greenland_5km_dev1.2.nc not downloaded in Data Directory');
+	end
+	x1		= ncread(ncdata,'x1');
+	y1		= ncread(ncdata,'y1');
+	velx	= ncread(ncdata,'surfvelx');
+	vely	= ncread(ncdata,'surfvely');
+	vx		= InterpFromGridToMesh(x1,y1,velx',md.mesh.x,md.mesh.y,0);
+	vy		= InterpFromGridToMesh(x1,y1,vely',md.mesh.x,md.mesh.y,0);
+	vel		= sqrt(vx.^2+vy.^2);
+
+	%refine mesh using surface velocities as metric
+	md=bamg(md,'hmin',1200,'hmax',15000,'field',vel,'err',5);
+	[md.mesh.lat,md.mesh.long]  = xy2ll(md.mesh.x,md.mesh.y,+1,39,71);
+
+	save JksMesh md
+end 
+
+if any(steps==2) 
+	disp('   Step 2: Parameterization');
+	md=loadmodel('JksMesh');
+
+	md=setmask(md,'','');
+	md=parameterize(md,'Jks.par');
+
+	save JksPar md
+end 
+
+if any(steps==3) 
+	disp('   Step 3: Control method friction');
+	md=loadmodel('JksPar');
+
+	md=setflowequation(md,'SSA','all');
+
+	%Control general
+	md.inversion.iscontrol=1;
+	md.inversion.nsteps=20;
+	md.inversion.step_threshold=0.99*ones(md.inversion.nsteps,1);
+	md.inversion.maxiter_per_step=5*ones(md.inversion.nsteps,1);
+	md.verbose=verbose('solution',true,'control',true);
+
+	%Cost functions
+	md.inversion.cost_functions=[101 103];
+	md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2);
+	md.inversion.cost_functions_coefficients(:,1)=40;
+	md.inversion.cost_functions_coefficients(:,2)=1;
+
+	%Controls
+	md.inversion.control_parameters={'FrictionCoefficient'};
+	md.inversion.gradient_scaling(1:md.inversion.nsteps)=30;
+	md.inversion.min_parameters=1*ones(md.mesh.numberofvertices,1);
+	md.inversion.max_parameters=200*ones(md.mesh.numberofvertices,1);
+
+	%Additional parameters
+	md.stressbalance.restol=0.01;
+	md.stressbalance.reltol=0.1;
+	md.stressbalance.abstol=NaN;
+
+	%Go solve
+	md.cluster=generic('name',oshostname,'np',4);
+	md=solve(md,'Stressbalance');
+
+	save JksControl md
+end 
+
+if any(steps==4) 
+	disp('   Plotting')
+	md=loadmodel('JksControl');
+
+	plotmodel(md,'unit#all','km','axis#all','equal',...
+		'data',md.inversion.vel_obs,'title','Observed velocity',...
+		'data',md.results.StressbalanceSolution.Vel,'title','Modeled Velocity',...
+		'colorbar#1','off','colorbartitle#2','(m/yr)',...
+		'caxis#1-2',[0,7000],...
+		'data',md.geometry.base,'title','Base elevation',...
+		'data',md.results.StressbalanceSolution.FrictionCoefficient,...
+		'title','Friction Coefficient',...
+		'colorbartitle#3','(m)');
+end 
Index: /issm/branches/trunk-dlcheng-ASE/examples/LcurveAnalysis/DomainOutline.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/LcurveAnalysis/DomainOutline.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/LcurveAnalysis/DomainOutline.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:DomainOutline
+## Icon:0
+# Points Count  Value
+5 1.000000
+# X pos Y pos
+0 0
+1000000 0
+1000000 1000000
+0 1000000
+0 0
Index: /issm/branches/trunk-dlcheng-ASE/examples/LcurveAnalysis/Front.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/LcurveAnalysis/Front.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/LcurveAnalysis/Front.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+-1000 900000
+-1000 1100000
+1100000 1100000
+1100000 900000
+-1000 900000
Index: /issm/branches/trunk-dlcheng-ASE/examples/LcurveAnalysis/Square.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/LcurveAnalysis/Square.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/LcurveAnalysis/Square.par	(revision 27955)
@@ -0,0 +1,24 @@
+%Start defining model parameters here
+
+disp('      creating thickness');
+hmin = 300;
+hmax = 1000;
+ymin = min(md.mesh.y);
+ymax = max(md.mesh.y);
+md.geometry.thickness = hmax+(hmin-hmax)*(md.mesh.y-ymin)/(ymax-ymin);
+md.geometry.base      = -md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface   = md.geometry.base+md.geometry.thickness;
+
+disp('      creating drag');
+md.friction.coefficient=200*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p = ones(md.mesh.numberofelements,1);
+md.friction.q = ones(md.mesh.numberofelements,1);
+
+disp('      creating flow law paramter');
+md.materials.rheology_B=1.8*10^8*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B(find(md.mesh.x<md.mesh.y))=1.4*10^8;
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+disp('      creating boundary conditions');
+md=SetIceShelfBC(md,'Front.exp');
Index: /issm/branches/trunk-dlcheng-ASE/examples/LcurveAnalysis/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/LcurveAnalysis/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/LcurveAnalysis/runme.m	(revision 27955)
@@ -0,0 +1,130 @@
+steps=[1];
+
+if any(steps==1) 
+	% Generate observations
+	md = model;
+	md = triangle(md,'DomainOutline.exp',100000);
+	md = setmask(md,'all','');
+	md = parameterize(md,'Square.par');
+	md = setflowequation(md,'SSA','all');
+	md.cluster = generic('np',2);
+	md = solve(md,'Stressbalance');
+	plotmodel(md,'axis#all','tight','data',md.materials.rheology_B,'caxis',[ 1.3 1.9]*10^8,'title','"True" B',...
+		'data',md.results.StressbalanceSolution.Vel,'title','"observed velocities"')
+	save model1 md
+end 
+
+if any(steps==2) 
+	% Modify rheology, now constant
+	loadmodel('model1.mat');
+	md.materials.rheology_B(:) = 1.8*10^8;
+
+	%results of previous run are taken as observations
+	md.inversion=m1qn3inversion();
+	md.inversion.vx_obs  = md.results.StressbalanceSolution.Vx;
+	md.inversion.vy_obs  = md.results.StressbalanceSolution.Vy;
+	md.inversion.vel_obs = md.results.StressbalanceSolution.Vel;
+
+	md = solve(md,'Stressbalance');
+	plotmodel(md,'axis#all','tight','data',md.materials.rheology_B,'caxis',[ 1.3 1.9]*10^8,'title','B first guess',...
+		'data',md.results.StressbalanceSolution.Vel,'title','modeled velocities')
+	save model2 md
+end 
+
+if any(steps==3) 
+	% Perform L-curve analysis for ice rigidity inversion
+	loadmodel('model2.mat');
+
+	% Set up inversion parameters
+	maxsteps = 20;
+	md.inversion.iscontrol = 1;
+	md.inversion.control_parameters = {'MaterialsRheologyBbar'};
+	md.inversion.maxsteps = maxsteps;
+	md.inversion.cost_functions = [101 502];
+	md.inversion.cost_functions_coefficients = ones(md.mesh.numberofvertices,length(md.inversion.cost_functions));
+	md.inversion.min_parameters = cuffey(273)*ones(md.mesh.numberofvertices,1);
+	md.inversion.max_parameters = cuffey(200)*ones(md.mesh.numberofvertices,1);
+	md.verbose = verbose('solution',false,'control',true);
+
+	% Starting L-curve analysis:
+	%
+	% J = Jo + alpha*R.
+	% J: total cost function to be minimized.
+	% Jo: sum of the objective cost function(s) (ex.: 101, or 101+102, or 101+102+103).
+	% R: regularization term (ex.: 502).
+	% alpha: weight of the regularization term.
+	%
+	% L-curve analysis is a method to find the best value for alpha.
+	% Basicaly, it loops over different values of alpha. A plot can be generated for each
+	% respective value of Jo and R (R versus Jo).
+	%
+	min_alpha	= 1.e-20;
+	max_alpha	= 1.e-11;
+	nstep_alpha	= 30;
+	log_step	= (log10(max_alpha)-log10(min_alpha))/nstep_alpha;
+	log_alphas	= [log10(min_alpha):log_step:log10(max_alpha)];
+	alphas		= 10.^log_alphas;
+	J			= zeros(length(alphas),length(md.inversion.cost_functions)+1);
+	% Loop over the alphas
+	for i=1:length(alphas),
+		disp('------------------------------------------------------------');
+		disp(['      alpha iteration: ' int2str(i) '/' int2str(length(alphas)) ', alpha value: ' num2str(alphas(i))]);
+		disp('------------------------------------------------------------');
+		md.inversion.cost_functions_coefficients(:,end) = alphas(i);
+		md = solve(md,'Stressbalance');
+		J(i,:) = md.results.StressbalanceSolution.J(end,:); % J comes in [Jo, alphaR, J]. In this example: [101, alpha*502, 101+alpha*502]
+	end
+
+	% Plot the L-curve (log-log)
+	Jo = zeros(length(alphas),1);
+	for i=1:size(J,2)-2,
+		Jo = Jo + J(:,i); % sum of the cost functions (no regularization term). In this example, only 101
+	end
+	R = J(:,end-1)./alphas(:); % only the regularization term
+
+	% Tip:
+	% A rescale in the axes may be useful to visualize the L-curve.
+	%
+	% Remember: J = Jo + alpha*R
+	%
+	% Apply a linear transformation on the original axis (Jo, R): 
+	%
+	% |   1       alpha | | Jo  |   | Jo + alpha*R |   |    J    |
+	% |                 | |     | = |              | = |         |
+	% | 1/alpha     1   | |  R  |   | Jo/alpha + R |   | J/alpha |
+	%
+	% Then, use:
+	% Jo2 = J(:,end);
+	% R2  = J(:,end)./alphas(:);
+	% loglog(Jo2,R2,... 
+	%
+	loglog(Jo,R,'-s','Color',[.3 .8 .4],'MarkerSize',6,'MarkerFaceColor','m','MarkerEdgeColor','k','LineWidth',2)
+	voffset=0.1*R;
+	hoffset=0.1*Jo;
+	text(Jo+hoffset,R+voffset,[repmat('\alpha = ',length(alphas),1) num2str(alphas(:),'%2.0e')],...
+		'FontSize',10,'HorizontalAlignment','left','VerticalAlignment','Middle')
+	xlabel('$\mathrm{log}(\mathcal{J}_0$)','Interpreter','latex')
+	ylabel('$\mathrm{log}(\mathcal{R})$','Interpreter','latex')
+end 
+
+if any(steps==4) 
+	%invert for ice rigidity
+	loadmodel('model2.mat');
+
+	%Set up inversion parameters
+	maxsteps = 20;
+	md.inversion.iscontrol = 1;
+	md.inversion.control_parameters = {'MaterialsRheologyBbar'};
+	md.inversion.maxsteps = maxsteps;
+	md.inversion.cost_functions = [101 502];
+	md.inversion.cost_functions_coefficients		= ones(md.mesh.numberofvertices,1);
+	md.inversion.cost_functions_coefficients(:,2)	= 4.e-17*ones(md.mesh.numberofvertices,1); % here you can use the best value found for alpha
+	md.inversion.min_parameters = cuffey(273)*ones(md.mesh.numberofvertices,1);
+	md.inversion.max_parameters = cuffey(200)*ones(md.mesh.numberofvertices,1);
+
+	%Go solve!
+	md.verbose=verbose(0);
+	md=solve(md,'Stressbalance');
+	plotmodel(md,'axis#all','tight','data',md.results.StressbalanceSolution.MaterialsRheologyBbar,'caxis',[ 1.3 1.9]*10^8,'title','inferred B',...
+		'data',md.results.StressbalanceSolution.Vel,'title','modeled velocities')
+end 
Index: /issm/branches/trunk-dlcheng-ASE/examples/Mesh/Square.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Mesh/Square.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Mesh/Square.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:Square
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+1 0
+1 1
+0 1
+0 0
Index: /issm/branches/trunk-dlcheng-ASE/examples/Mesh/circles.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Mesh/circles.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Mesh/circles.m	(revision 27955)
@@ -0,0 +1,7 @@
+function vel=circles(x,y),
+
+u=4*x-2; v=4*y-2;
+
+vel=tanh(30*(u.^2+v.^2-0.25)) ...
+	+tanh(30*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+	+tanh(30*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30*((u+0.75).^2+(v+0.75).^2-0.25)) ;
Index: /issm/branches/trunk-dlcheng-ASE/examples/Mesh/circles.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Mesh/circles.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Mesh/circles.py	(revision 27955)
@@ -0,0 +1,11 @@
+import numpy as np
+
+
+def circles(x, y):
+
+    u = 4 * x - 2
+    v = 4 * y - 2
+
+    vel = np.tanh(30 * (u**2 + v**2 - 0.25)) + np.tanh(30 * ((u - 0.75)**2 + (v - 0.75)**2 - 0.25)) + np.tanh(30 * ((u - 0.75)**2 + (v + 0.75)**2 - 0.25)) + np.tanh(30 * ((u + 0.75)**2 + (v - 0.75)**2 - 0.25)) + np.tanh(30 * ((u + 0.75)**2 + (v + 0.75)**2 - 0.25))
+
+    return vel
Index: /issm/branches/trunk-dlcheng-ASE/examples/Mesh/shock.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Mesh/shock.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Mesh/shock.m	(revision 27955)
@@ -0,0 +1,3 @@
+function vel=shock(x,y),
+
+vel=exp(-(sqrt((x+0.1).^2+(y+0.1).^2)-0.75).^2*10^6)+((x+0.1).^2+(y+0.1).^2)/2;
Index: /issm/branches/trunk-dlcheng-ASE/examples/Mesh/shock.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Mesh/shock.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Mesh/shock.py	(revision 27955)
@@ -0,0 +1,7 @@
+import numpy as np
+
+
+def shock(x, y):
+
+    vel = np.exp(-(np.sqrt((x + 0.1)**2 + (y + 0.1)**2) - 0.75)**2 * 1e6) + ((x + 0.1)**2 + (y + 0.1)**2) / 2
+    return vel
Index: /issm/branches/trunk-dlcheng-ASE/examples/Pig/DomainOutline.bkp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Pig/DomainOutline.bkp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Pig/DomainOutline.bkp	(revision 27955)
@@ -0,0 +1,101 @@
+## Name:
+## Icon:0
+# Points Count Value
+95 25000.000000
+# X pos Y pos
+-1712113.0179281300 -349656.0205056490
+-1711509.1917759699 -349354.1074295690
+-1709240.6586108401 -349354.1074295690
+-1707080.1508345299 -348922.0058743060
+-1705459.7700022999 -347193.5996532570
+-1703083.2114483600 -345249.1426545770
+-1701138.7544496800 -344168.8887664210
+-1698438.1197292900 -343952.8379887900
+-1698006.0181740201 -341900.3556012940
+-1693793.0280102200 -340279.9747690600
+-1691092.3932898301 -339631.8224361670
+-1688391.7585694401 -339415.7716585360
+-1686447.3015707601 -340063.9239914290
+-1683530.6160727399 -341036.1524907690
+-1682558.3875734000 -343304.6856558960
+-1682134.7209454600 -344182.1487658350
+-1682126.2860181299 -345681.2442098390
+-1681072.0444963200 -345932.4393879640
+-1680634.4718407800 -346682.5639403050
+-1680571.9614614199 -348557.8753211580
+-1677446.4424933300 -348370.3441830730
+-1675508.6207331200 -349495.5310115840
+-1676616.9911885399 -353567.0975933760
+-1672991.8601872099 -353799.6175753630
+-1668839.1631938200 -353999.1991486380
+-1667132.2298986400 -355121.4651541420
+-1666069.5534494901 -357496.8595698890
+-1662944.0344814099 -358309.4945015920
+-1660756.1712037399 -358747.0671571240
+-1657922.9836098100 -361682.8074238540
+-1656579.2228470000 -364003.8487410000
+-1653004.8841628900 -364748.0635758530
+-1653442.4568184200 -361622.5446077650
+-1651129.5727820301 -355684.0585683980
+-1648929.2928810001 -350845.9692010000
+-1646260.7698359799 -347802.2804785470
+-1644571.8968503401 -341785.6704672340
+-1643503.3064999001 -340869.0986596620
+-1643190.7546030900 -336680.9032424240
+-1642690.6715682000 -335243.1645171040
+-1641913.0916588283 -332341.0814454452
+-1640683.9739821283 -330436.6112348017
+-1637816.0327364956 -328532.1410241582
+-1635241.2508976001 -328652.8685499910
+-1631765.4107996500 -327017.1790921330
+-1625934.5618617306 -322342.6128395668
+-1620608.3852626982 -320438.1426289233
+-1616101.6204481323 -320438.1426289233
+-1611594.8556335662 -320914.2601815842
+-1607907.5026034669 -321866.4952869060
+-1602991.0318966676 -324723.2006028712
+-1599713.3847588014 -327579.9059188365
+-1593977.5022675355 -328532.1410241582
+-1590699.8551296694 -334721.6692087495
+-1589259.8391499999 -338300.0840570000
+-1588627.0898328500 -343572.9950327750
+-1588056.6000060199 -345432.3563530700
+-1586993.9235568701 -347432.6884926460
+-1589259.8391499999 -349315.9832070000
+-1585493.6744521901 -352996.1122558430
+-1585118.6121760199 -354496.3613605250
+-1585861.9157163899 -356240.3342513760
+-1586368.8197632500 -358747.0671571240
+-1587889.0972700799 -360996.6006787950
+-1586681.3716600600 -363935.4286441500
+-1585806.2263489999 -365748.2296456410
+-1586743.8820394201 -368373.6655788350
+-1586056.2678664399 -370123.9562009640
+-1585493.6744521901 -371124.1222707520
+-1586243.7990045301 -373562.0270658610
+-1414257.6683934701 -327460.5482541260
+-1412220.4351378100 -325972.8942023180
+-1404515.9240538401 -296165.1737279960
+-1387984.9332285200 -267002.0106682320
+-1360067.9373810000 -107884.1934940000
+-1423274.3497420000 -81217.9259650000
+-1402446.7987670000 -45916.9921070000
+-1478343.8065599999 60338.8188030000
+-1503760.4789370000 36334.1837800000
+-1528509.5619775900 63667.6809196406
+-1623055.4918765700 62841.1506965373
+-1725734.5897359999 -61372.6193030000
+-1719614.6457630000 -69022.5492690000
+-1759088.2843859999 -114004.1374660000
+-1755416.3180020000 -117064.1094530000
+-1761230.2647760001 -126856.0198080000
+-1758170.2927900001 -130527.9861920000
+-1762148.2563720001 -135423.9413700000
+-1764902.2311590000 -131445.9777880000
+-1769798.1863370000 -134199.9525750000
+-1775000.1387139999 -131445.9777880000
+-1794277.9622269999 -153477.7760890000
+-1712576.7101950001 -225081.1205660000
+-1729939.5891459100 -335652.4567604720
+-1712113.0179281300 -349656.0205056490
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/Pig/Pig.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Pig/Pig.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Pig/Pig.par	(revision 27955)
@@ -0,0 +1,118 @@
+% Parameters to change/Try
+friction_coefficient = 10; % default [10]
+Temp_change          =  0;  % default [0 K]
+
+%Name and Coordinate system
+md.miscellaneous.name='PIG';
+md.mesh.epsg=3031;
+
+%NetCdf Loading
+disp('   Loading SeaRISE data from NetCDF');
+ncdata='../Data/Antarctica_5km_withshelves_v0.75.nc';
+x1    = ncread(ncdata,'x1');
+y1    = ncread(ncdata,'y1');
+usrf  = ncread(ncdata,'usrf')';
+topg  = ncread(ncdata,'topg')';
+temp  = ncread(ncdata,'presartm')';
+smb   = ncread(ncdata,'presprcp')';
+gflux = ncread(ncdata,'bheatflx_fox')';
+
+%Geometry
+disp('   Interpolating surface and ice base');
+md.geometry.base    = InterpFromGridToMesh(x1,y1,topg,md.mesh.x,md.mesh.y,0);
+md.geometry.surface = InterpFromGridToMesh(x1,y1,usrf,md.mesh.x,md.mesh.y,0);
+clear usrf, topg;
+
+disp('   Constructing thickness');
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+%ensure hydrostatic equilibrium on ice shelf: 
+di=md.materials.rho_ice/md.materials.rho_water;
+
+%Get the node numbers of floating nodes
+pos=find(md.mask.ocean_levelset<0); 
+
+%apply a flotation criterion on the precedingly defined nodes and
+%redefine base and thickness accordingly
+md.geometry.thickness(pos)=1/(1-di)*md.geometry.surface(pos);
+md.geometry.base(pos)=md.geometry.surface(pos)-md.geometry.thickness(pos);
+md.geometry.hydrostatic_ratio=ones(md.mesh.numberofvertices,1); %For Dakota
+
+%Set min thickness to 1 meter
+pos0=find(md.geometry.thickness<=1);
+md.geometry.thickness(pos0)=1;
+md.geometry.surface=md.geometry.thickness+md.geometry.base;
+md.geometry.bed=md.geometry.base;
+md.geometry.bed(pos)=md.geometry.base(pos)-1000;
+
+%Initialization parameters
+disp('   Interpolating temperatures');
+md.initialization.temperature=InterpFromGridToMesh(x1,y1,temp,md.mesh.x,md.mesh.y,0)+273.15+Temp_change;
+clear temp;
+
+disp('   Loading velocities data from NetCDF');
+nsidc_vel='../Data/Antarctica_ice_velocity.nc';
+xmin    = ncreadatt(nsidc_vel,'/','xmin');
+ymax    = ncreadatt(nsidc_vel,'/','ymax');
+spacing = ncreadatt(nsidc_vel,'/','spacing');
+nx      = double(ncreadatt(nsidc_vel,'/','nx'));
+ny      = double(ncreadatt(nsidc_vel,'/','ny'));
+velx    = double(ncread(nsidc_vel,'vx'));
+vely    = double(ncread(nsidc_vel,'vy'));
+% Read coordinates
+xmin = strtrim(xmin);  
+xmin = str2num(xmin(1:end-2)); 
+ymax = strtrim(ymax);  
+ymax = str2num(ymax(1:end-2));  
+spacing = strtrim(spacing);
+spacing = str2num(spacing(1:end-2));  
+% Build the coordinates
+x2=xmin+(0:1:nx)'*spacing;
+y2=(ymax-ny*spacing)+(0:1:ny)'*spacing;
+
+disp('   Set observed velocities')
+md.initialization.vx=InterpFromGridToMesh(x2,y2,flipud(velx'),md.mesh.x,md.mesh.y,0);
+md.initialization.vy=InterpFromGridToMesh(x2,y2,flipud(vely'),md.mesh.x,md.mesh.y,0);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.vel=sqrt(md.initialization.vx.^2+md.initialization.vy.^2);
+clear velx vely;
+
+disp('   Set Pressure');
+md.initialization.pressure=md.materials.rho_ice*md.constants.g*md.geometry.thickness;
+
+disp('   Construct ice rheological properties');
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+
+%Forcings
+disp('   Interpolating surface mass balance');
+mass_balance=InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0);
+md.smb.mass_balance=mass_balance*md.materials.rho_water/md.materials.rho_ice;
+clear smb;
+
+disp('   Set geothermal heat flux');
+md.basalforcings.geothermalflux=InterpFromGridToMesh(x1,y1,gflux,md.mesh.x,md.mesh.y,0);
+clear gflux;
+
+%Friction and inversion set up
+disp('   Construct basal friction parameters');
+md.friction.coefficient=friction_coefficient*ones(md.mesh.numberofvertices,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%no friction applied on floating ice
+pos=find(md.mask.ocean_levelset<0);
+md.friction.coefficient(pos)=0;
+md.groundingline.migration='SubelementMigration';
+
+md.inversion=m1qn3inversion();
+md.inversion.vx_obs=md.initialization.vx;
+md.inversion.vy_obs=md.initialization.vy;
+md.inversion.vel_obs=md.initialization.vel;
+
+disp('   Set boundary conditions');
+md=SetMarineIceSheetBC(md);
+md.basalforcings.floatingice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.thermal.spctemperature                 = md.initialization.temperature;
+md.masstransport.spcthickness             = NaN*ones(md.mesh.numberofvertices,1);
Index: /issm/branches/trunk-dlcheng-ASE/examples/Pig/PigRegion.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Pig/PigRegion.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Pig/PigRegion.m	(revision 27955)
@@ -0,0 +1,41 @@
+%Getting the velocity in PIG vicinity for the ExpDraw
+
+% Load Velocities
+% http://nsidc.org/data/nsidc-0484.html
+nsidc_vel='../Data/Antarctica_ice_velocity.nc'; 	
+
+% Get necessary data to build up the velocity grid
+xmin    = ncreadatt(nsidc_vel,'/','xmin');
+ymax    = ncreadatt(nsidc_vel,'/','ymax');
+spacing = ncreadatt(nsidc_vel,'/','spacing');
+
+nx = double(ncreadatt(nsidc_vel,'/','nx'));
+ny = double(ncreadatt(nsidc_vel,'/','ny'));
+vx = double(ncread(nsidc_vel,'vx'));
+vy = double(ncread(nsidc_vel,'vy'));
+
+xmin = strtrim(xmin);  % this is a string, and we need to recover the double value
+xmin = str2num(xmin(1:end-2));  % get rid of the unit and convert to double
+
+ymax = strtrim(ymax);  
+ymax = str2num(ymax(1:end-2));  
+
+spacing = strtrim(spacing);
+spacing = str2num(spacing(1:end-2));  
+
+% Build the coordinates
+x=xmin+(0:1:nx)'*spacing;
+y=(ymax)-(0:1:ny)'*spacing; 
+
+%Limit the region to Pine Island
+posx  = find(x<=-12.0e5 & x>=-18.0e5);
+x_pig = x(posx);
+posy  = find(y<=1.0e5 & y>-4.0e5);
+y_pig = flipud(y(posy));
+
+vx_pig  = flipud(vx(posx,posy)');
+vy_pig  = flipud(vy(posx,posy)');
+vel_pig = sqrt(vx_pig.^2+vy_pig.^2);
+
+imagesc(x_pig,y_pig,log(vel_pig+1));
+axis xy equal tight;
Index: /issm/branches/trunk-dlcheng-ASE/examples/Pig/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Pig/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Pig/runme.m	(revision 27955)
@@ -0,0 +1,182 @@
+steps=[1];
+
+if any(steps==1) %Mesh Generation #1 
+	%Mesh parameters
+	domain =['./DomainOutline.exp'];
+	hinit=10000;	% element size for the initial mesh
+	hmax=40000;		% maximum element size of the final mesh
+	hmin=5000;		% minimum element size of the final mesh
+	gradation=1.7;	% maximum size ratio between two neighboring elements
+	err=8;			% maximum error between interpolated and control field
+
+	% Generate an initial uniform mesh (resolution = hinit m)
+	md=bamg(model,'domain',domain,'hmax',hinit);
+
+	% Load Velocities
+	nsidc_vel='../Data/Antarctica_ice_velocity.nc';
+
+	% Get necessary data to build up the velocity grid
+	xmin	= ncreadatt(nsidc_vel,'/','xmin');
+	ymax	= ncreadatt(nsidc_vel,'/','ymax');
+	spacing	= ncreadatt(nsidc_vel,'/','spacing');
+	nx		= double(ncreadatt(nsidc_vel,'/','nx'));
+	ny		= double(ncreadatt(nsidc_vel,'/','ny'));
+	vx		= double(ncread(nsidc_vel,'vx'));
+	vy		= double(ncread(nsidc_vel,'vy'));
+
+	% Read coordinates
+	xmin = strtrim(xmin);
+	xmin = str2num(xmin(1:end-2));
+	ymax = strtrim(ymax);
+	ymax = str2num(ymax(1:end-2));
+	spacing = strtrim(spacing);
+	spacing = str2num(spacing(1:end-2));
+
+	% Build the coordinates
+	x=xmin+(0:1:nx)'*spacing;
+	y=(ymax-ny*spacing)+(0:1:ny)'*spacing;
+
+	% Interpolate velocities onto coarse mesh
+	vx_obs=InterpFromGridToMesh(x,y,flipud(vx'),md.mesh.x,md.mesh.y,0);
+	vy_obs=InterpFromGridToMesh(x,y,flipud(vy'),md.mesh.x,md.mesh.y,0);
+	vel_obs=sqrt(vx_obs.^2+vy_obs.^2);
+	clear vx vy x y;
+
+	% Adapt the mesh to minimize error in velocity interpolation
+	md=bamg(md,'hmax',hmax,'hmin',hmin,'gradation',gradation,'field',vel_obs,'err',err);
+
+	%ploting
+	plotmodel(md,'data','mesh')
+
+	% Save model
+	save ./Models/PIG_Mesh_generation md;
+end 
+
+if any(steps==2) %Masks #2 
+	md = loadmodel('./Models/PIG_Mesh_generation');
+
+	% Load SeaRISe dataset for Antarctica
+	% http://websrv.cs.umt.edu/isis/index.php/Present_Day_Antarctica
+	searise='../Data/Antarctica_5km_withshelves_v0.75.nc';
+
+	%read thickness mask from SeaRISE
+	x1=double(ncread(searise,'x1'));
+	y1=double(ncread(searise,'y1'));
+	thkmask=double(ncread(searise,'thkmask'));
+
+	%interpolate onto our mesh vertices
+	groundedice=double(InterpFromGridToMesh(x1,y1,thkmask',md.mesh.x,md.mesh.y,0));
+	groundedice(groundedice<=0)=-1;
+	clear thkmask;
+
+	%fill in the md.mask structure
+	md.mask.ocean_levelset=groundedice; %ice is grounded for mask equal one
+	md.mask.ice_levelset=-1*ones(md.mesh.numberofvertices,1);%ice is present when negatvie
+
+	%ploting
+	plotmodel(md,'data',md.mask.ocean_levelset,'title','grounded/floating','data',md.mask.ice_levelset,'title','ice/no-ice')
+
+	% Save model
+	save ./Models/PIG_SetMask md;
+end 
+
+if any(steps==3) %Parameterization #3 
+	md = loadmodel('./Models/PIG_SetMask');
+	md = parameterize(md,'./Pig.par');
+
+	% Use a MacAyeal flow model
+	md = setflowequation(md,'SSA','all');
+
+	% Save model
+	save ./Models/PIG_Parameterization md;
+end 
+
+if any(steps==4) %Control Method #4 
+	md = loadmodel('./Models/PIG_Parameterization');
+
+	% Control general
+	md.inversion.iscontrol=1;
+	md.inversion.maxsteps=20;
+	md.inversion.maxiter=40;
+	md.inversion.dxmin=0.1;
+	md.inversion.gttol=1.0e-4;
+	md.verbose=verbose('control',true);
+
+	% Cost functions
+	md.inversion.cost_functions=[101 103 501];
+	md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,3);
+	md.inversion.cost_functions_coefficients(:,1)=1;
+	md.inversion.cost_functions_coefficients(:,2)=1;
+	md.inversion.cost_functions_coefficients(:,3)=8e-15;
+
+	% Controls
+	md.inversion.control_parameters={'FrictionCoefficient'};
+	md.inversion.min_parameters=1*ones(md.mesh.numberofvertices,1);
+	md.inversion.max_parameters=200*ones(md.mesh.numberofvertices,1);
+
+	% Additional parameters
+	md.stressbalance.restol=0.01;
+	md.stressbalance.reltol=0.1;
+	md.stressbalance.abstol=NaN;
+
+	% Solve
+	md.toolkits=toolkits;
+	md.cluster=generic('name',oshostname,'np',2);
+	md=solve(md,'Stressbalance');
+
+	% Update model friction fields accordingly
+	md.friction.coefficient=md.results.StressbalanceSolution.FrictionCoefficient;
+
+	plotmodel(md,'data',md.friction.coefficient)
+
+	% Save model
+	save ./Models/PIG_Control_drag md;
+end 
+
+if any(steps==5) %Plot #5 
+	md = loadmodel('./Models/PIG_Control_drag');
+
+	plotmodel(md,...
+		'data',md.initialization.vel,'title','Observed velocity',...
+		'data',md.results.StressbalanceSolution.Vel,'title','Modeled Velocity',...
+		'data',md.geometry.base,'title','Bed elevation',...
+		'data',md.results.StressbalanceSolution.FrictionCoefficient,'title','Friction Coefficient',...
+		'colorbar#all','on','colorbartitle#1-2','(m/yr)',...
+		'caxis#1-2',([1.5,4000]),...
+		'colorbartitle#3','(m)', 'log#1-2',10);
+end 
+
+if any(steps==6) %Higher-Order #6 
+	% Load Model
+
+	% Disable inversion
+
+	% Extrude Mesh
+
+	% Set Flowequation
+
+	% Solve
+
+	% Save Model
+
+end % step 6 end
+
+if any(steps==7) %Plot #7 
+	mdHO = loadmodel('./Models/PIG_ModelHO');
+	mdSSA = loadmodel('./Models/PIG_Control_drag');
+
+	basal=find(mdHO.mesh.vertexonbase);
+	surf=find(mdHO.mesh.vertexonsurface);
+
+	plotmodel(mdHO,'nlines',3,'ncols',2,'axis#all','equal',...
+		'data',mdHO.initialization.vel,'title','Observed velocity',...
+		'data',(mdHO.results.StressbalanceSolution.Vel(surf)-mdHO.initialization.vel(surf)),'title','(HO-observed) velocities',...
+		'data',mdSSA.results.StressbalanceSolution.Vel,'title','Modeled SSA Velocity',...
+		'data',(mdHO.results.StressbalanceSolution.Vel(surf)-mdSSA.results.StressbalanceSolution.Vel),'title','(HO-SSA) velocities',...
+		'data',mdHO.results.StressbalanceSolution.Vel,'title','Modeled HO surface Velocities',...
+		'data',(mdHO.results.StressbalanceSolution.Vel(surf)-mdHO.results.StressbalanceSolution.Vel(basal)),'title','(HOsurf-HO base) velocities',...
+		'caxis#1',([1.5,4000]),'caxis#3',([1.5,4000]),'caxis#5',([1.5,4000]),...
+		'colorbar#all','on','view#all',2,...
+		'colorbartitle#all','(m/yr)',...
+		'layer#5',1, 'log#1', 10,'log#3', 10,'log#5', 10);
+end 
Index: /issm/branches/trunk-dlcheng-ASE/examples/Pig2/DomainOutline.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Pig2/DomainOutline.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Pig2/DomainOutline.exp	(revision 27955)
@@ -0,0 +1,101 @@
+## Name:
+## Icon:0
+# Points Count Value
+95 25000.000000
+# X pos Y pos
+-1712113.0179281300 -349656.0205056490
+-1711509.1917759699 -349354.1074295690
+-1709240.6586108401 -349354.1074295690
+-1707080.1508345299 -348922.0058743060
+-1705459.7700022999 -347193.5996532570
+-1703083.2114483600 -345249.1426545770
+-1701138.7544496800 -344168.8887664210
+-1698438.1197292900 -343952.8379887900
+-1698006.0181740201 -341900.3556012940
+-1693793.0280102200 -340279.9747690600
+-1691092.3932898301 -339631.8224361670
+-1688391.7585694401 -339415.7716585360
+-1686447.3015707601 -340063.9239914290
+-1683530.6160727399 -341036.1524907690
+-1682558.3875734000 -343304.6856558960
+-1682134.7209454600 -344182.1487658350
+-1682126.2860181299 -345681.2442098390
+-1681072.0444963200 -345932.4393879640
+-1680634.4718407800 -346682.5639403050
+-1680571.9614614199 -348557.8753211580
+-1677446.4424933300 -348370.3441830730
+-1675508.6207331200 -349495.5310115840
+-1676616.9911885399 -353567.0975933760
+-1672991.8601872099 -353799.6175753630
+-1668839.1631938200 -353999.1991486380
+-1667132.2298986400 -355121.4651541420
+-1666069.5534494901 -357496.8595698890
+-1662944.0344814099 -358309.4945015920
+-1660756.1712037399 -358747.0671571240
+-1657922.9836098100 -361682.8074238540
+-1656579.2228470000 -364003.8487410000
+-1653004.8841628900 -364748.0635758530
+-1653442.4568184200 -361622.5446077650
+-1651129.5727820301 -355684.0585683980
+-1648929.2928810001 -350845.9692010000
+-1646260.7698359799 -347802.2804785470
+-1644571.8968503401 -341785.6704672340
+-1643503.3064999001 -340869.0986596620
+-1643190.7546030900 -336680.9032424240
+-1642690.6715682000 -335243.1645171040
+-1641913.0916588283 -332341.0814454452
+-1640683.9739821283 -330436.6112348017
+-1637816.0327364956 -328532.1410241582
+-1635241.2508976001 -328652.8685499910
+-1631765.4107996500 -327017.1790921330
+-1625934.5618617306 -322342.6128395668
+-1620608.3852626982 -320438.1426289233
+-1616101.6204481323 -320438.1426289233
+-1611594.8556335662 -320914.2601815842
+-1607907.5026034669 -321866.4952869060
+-1602991.0318966676 -324723.2006028712
+-1599713.3847588014 -327579.9059188365
+-1593977.5022675355 -328532.1410241582
+-1590699.8551296694 -334721.6692087495
+-1589259.8391499999 -338300.0840570000
+-1588627.0898328500 -343572.9950327750
+-1588056.6000060199 -345432.3563530700
+-1586993.9235568701 -347432.6884926460
+-1589259.8391499999 -349315.9832070000
+-1585493.6744521901 -352996.1122558430
+-1585118.6121760199 -354496.3613605250
+-1585861.9157163899 -356240.3342513760
+-1586368.8197632500 -358747.0671571240
+-1587889.0972700799 -360996.6006787950
+-1586681.3716600600 -363935.4286441500
+-1585806.2263489999 -365748.2296456410
+-1586743.8820394201 -368373.6655788350
+-1586056.2678664399 -370123.9562009640
+-1585493.6744521901 -371124.1222707520
+-1586243.7990045301 -373562.0270658610
+-1414257.6683934701 -327460.5482541260
+-1412220.4351378100 -325972.8942023180
+-1404515.9240538401 -296165.1737279960
+-1387984.9332285200 -267002.0106682320
+-1360067.9373810000 -107884.1934940000
+-1423274.3497420000 -81217.9259650000
+-1402446.7987670000 -45916.9921070000
+-1478343.8065599999 60338.8188030000
+-1503760.4789370000 36334.1837800000
+-1528509.5619775900 63667.6809196406
+-1623055.4918765700 62841.1506965373
+-1725734.5897359999 -61372.6193030000
+-1719614.6457630000 -69022.5492690000
+-1759088.2843859999 -114004.1374660000
+-1755416.3180020000 -117064.1094530000
+-1761230.2647760001 -126856.0198080000
+-1758170.2927900001 -130527.9861920000
+-1762148.2563720001 -135423.9413700000
+-1764902.2311590000 -131445.9777880000
+-1769798.1863370000 -134199.9525750000
+-1775000.1387139999 -131445.9777880000
+-1794277.9622269999 -153477.7760890000
+-1712576.7101950001 -225081.1205660000
+-1729939.5891459100 -335652.4567604720
+-1712113.0179281300 -349656.0205056490
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/Pig2/FrontRetreat.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Pig2/FrontRetreat.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Pig2/FrontRetreat.exp	(revision 27955)
@@ -0,0 +1,17 @@
+## Name:FrontRetreat
+## Icon:0
+# Points Count Value
+11 1.000000
+# X pos Y pos
+-1626858.6376043619 -327176.4356578548
+-1605190.4936934854 -325911.1425827671
+-1604716.0087903275 -316263.2828852235
+-1607088.4333061168 -312625.5652943464
+-1612465.9288752396 -311676.5954880306
+-1618476.0709819060 -312467.4036599604
+-1624011.7281854146 -313890.8583694341
+-1626858.6376043619 -315788.7979820656
+-1627807.6074106777 -319268.3539385567
+-1628756.5772169936 -322589.7482606619
+-1626858.6376043619 -327176.4356578548
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/Pig2/Pig.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Pig2/Pig.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Pig2/Pig.par	(revision 27955)
@@ -0,0 +1,118 @@
+% Parameters to change/Try
+friction_coefficient = 10; % default [10]
+Temp_change          =  0;  % default [0 K]
+
+%Name and Coordinate system
+md.miscellaneous.name='PIG';
+md.mesh.epsg=3031;
+
+%NetCdf Loading
+disp('   Loading SeaRISE data from NetCDF');
+ncdata='../Data/Antarctica_5km_withshelves_v0.75.nc';
+x1    = ncread(ncdata,'x1');
+y1    = ncread(ncdata,'y1');
+usrf  = ncread(ncdata,'usrf')';
+topg  = ncread(ncdata,'topg')';
+temp  = ncread(ncdata,'presartm')';
+smb   = ncread(ncdata,'presprcp')';
+gflux = ncread(ncdata,'bheatflx_fox')';
+
+%Geometry
+disp('   Interpolating surface and ice base');
+md.geometry.base    = InterpFromGridToMesh(x1,y1,topg,md.mesh.x,md.mesh.y,0);
+md.geometry.surface = InterpFromGridToMesh(x1,y1,usrf,md.mesh.x,md.mesh.y,0);
+clear usrf, topg;
+
+disp('   Constructing thickness');
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+%ensure hydrostatic equilibrium on ice shelf: 
+di=md.materials.rho_ice/md.materials.rho_water;
+
+%Get the node numbers of floating nodes
+pos=find(md.mask.ocean_levelset<0); 
+
+%apply a flotation criterion on the precedingly defined nodes and
+%redefine base and thickness accordingly
+md.geometry.thickness(pos)=1/(1-di)*md.geometry.surface(pos);
+md.geometry.base(pos)=md.geometry.surface(pos)-md.geometry.thickness(pos);
+md.geometry.hydrostatic_ratio=ones(md.mesh.numberofvertices,1); %For Dakota
+
+%Set min thickness to 1 meter
+pos0=find(md.geometry.thickness<=1);
+md.geometry.thickness(pos0)=1;
+md.geometry.surface=md.geometry.thickness+md.geometry.base;
+md.geometry.bed=md.geometry.base;
+md.geometry.bed(pos)=md.geometry.base(pos)-1000;
+
+%Initialization parameters
+disp('   Interpolating temperatures');
+md.initialization.temperature=InterpFromGridToMesh(x1,y1,temp,md.mesh.x,md.mesh.y,0)+273.15+Temp_change;
+clear temp;
+
+disp('   Loading velocities data from NetCDF');
+nsidc_vel='../Data/Antarctica_ice_velocity.nc';
+xmin    = ncreadatt(nsidc_vel,'/','xmin');
+ymax    = ncreadatt(nsidc_vel,'/','ymax');
+spacing = ncreadatt(nsidc_vel,'/','spacing');
+nx      = double(ncreadatt(nsidc_vel,'/','nx'));
+ny      = double(ncreadatt(nsidc_vel,'/','ny'));
+velx    = double(ncread(nsidc_vel,'vx'));
+vely    = double(ncread(nsidc_vel,'vy'));
+% Read coordinates
+xmin = strtrim(xmin);  
+xmin = str2num(xmin(1:end-2)); 
+ymax = strtrim(ymax);  
+ymax = str2num(ymax(1:end-2));  
+spacing = strtrim(spacing);
+spacing = str2num(spacing(1:end-2));  
+% Build the coordinates
+x2=xmin+(0:1:nx)'*spacing;
+y2=(ymax-ny*spacing)+(0:1:ny)'*spacing;
+
+disp('   Set observed velocities')
+md.initialization.vx=InterpFromGridToMesh(x2,y2,flipud(velx'),md.mesh.x,md.mesh.y,0);
+md.initialization.vy=InterpFromGridToMesh(x2,y2,flipud(vely'),md.mesh.x,md.mesh.y,0);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.vel=sqrt(md.initialization.vx.^2+md.initialization.vy.^2);
+clear velx vely;
+
+disp('   Set Pressure');
+md.initialization.pressure=md.materials.rho_ice*md.constants.g*md.geometry.thickness;
+
+disp('   Construct ice rheological properties');
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+
+%Forcings
+disp('   Interpolating surface mass balance');
+mass_balance=InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0);
+md.smb.mass_balance=mass_balance*md.materials.rho_water/md.materials.rho_ice;
+clear smb;
+
+disp('   Set geothermal heat flux');
+md.basalforcings.geothermalflux=InterpFromGridToMesh(x1,y1,gflux,md.mesh.x,md.mesh.y,0);
+clear gflux;
+
+%Friction and inversion set up
+disp('   Construct basal friction parameters');
+md.friction.coefficient=friction_coefficient*ones(md.mesh.numberofvertices,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%no friction applied on floating ice
+pos=find(md.mask.ocean_levelset<0);
+md.friction.coefficient(pos)=0;
+md.groundingline.migration='SubelementMigration';
+
+md.inversion=m1qn3inversion();
+md.inversion.vx_obs=md.initialization.vx;
+md.inversion.vy_obs=md.initialization.vy;
+md.inversion.vel_obs=md.initialization.vel;
+
+disp('   Set boundary conditions');
+md=SetMarineIceSheetBC(md);
+md.basalforcings.floatingice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.thermal.spctemperature                 = md.initialization.temperature;
+md.masstransport.spcthickness             = NaN*ones(md.mesh.numberofvertices,1);
Index: /issm/branches/trunk-dlcheng-ASE/examples/Pig2/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/Pig2/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/Pig2/runme.m	(revision 27955)
@@ -0,0 +1,228 @@
+steps=[1];
+
+if any(steps==1) %Mesh Generation #1 
+
+	%Mesh parameters
+	domain =['./DomainOutline.exp'];
+	hinit=5000;		% element size for the initial mesh
+	hmax=40000;		% maximum element size of the final mesh
+	hmin=4000;		% minimum element size of the final mesh
+	gradation=1.7;	% maximum size ratio between two neighboring elements
+	err=8;			% maximum error between interpolated and control field
+
+	% Generate an initial uniform mesh (resolution = hinit m)
+	md=bamg(model,'domain',domain,'hmax',hinit);
+
+	% Get necessary data to build up the velocity grid
+	nsidc_vel	='../Data/Antarctica_ice_velocity.nc';
+	xmin		= strsplit(ncreadatt(nsidc_vel,'/','xmin'));	xmin	= str2num(xmin{2});
+	ymax		= strsplit(ncreadatt(nsidc_vel,'/','ymax'));	ymax	= str2num(ymax{2});
+	spacing		= strsplit(ncreadatt(nsidc_vel,'/','spacing'));	spacing	= str2num(spacing{2});
+	nx			= double(ncreadatt(nsidc_vel,'/','nx'));
+	ny			= double(ncreadatt(nsidc_vel,'/','ny'));
+	vx			= double(ncread(nsidc_vel,'vx'));
+	vy			= double(ncread(nsidc_vel,'vy'));
+
+	% Build the coordinates
+	x=xmin+(0:1:nx)'*spacing;
+	y=(ymax-ny*spacing)+(0:1:ny)'*spacing;
+
+	% Interpolate velocities onto coarse mesh
+	vx_obs=InterpFromGridToMesh(x,y,flipud(vx'),md.mesh.x,md.mesh.y,0);
+	vy_obs=InterpFromGridToMesh(x,y,flipud(vy'),md.mesh.x,md.mesh.y,0);
+	vel_obs=sqrt(vx_obs.^2+vy_obs.^2);
+	clear vx vy x y;
+
+	% Adapt the mesh to minimize error in velocity interpolation
+	md=bamg(md,'hmax',hmax,'hmin',hmin,'gradation',gradation,'field',vel_obs,'err',err);
+
+	% Plot and save model
+	plotmodel(md,'data','mesh')
+	save ./Models/PIG_Mesh_generation md;
+end 
+
+if any(steps==2) %Masks #2 
+	md = loadmodel('./Models/PIG_Mesh_generation');
+
+	% Load SeaRISe dataset for Antarctica  http://websrv.cs.umt.edu/isis/index.php/Present_Day_Antarctica
+	searise='../Data/Antarctica_5km_withshelves_v0.75.nc';
+
+	%read thickness mask from SeaRISE
+	x1=double(ncread(searise,'x1'));
+	y1=double(ncread(searise,'y1'));
+	thkmask=double(ncread(searise,'thkmask'));
+
+	%interpolate onto our mesh vertices
+	groundedice=double(InterpFromGridToMesh(x1,y1,thkmask',md.mesh.x,md.mesh.y,0));
+	groundedice(groundedice<=0)=-1;
+	clear thkmask;
+
+	%fill in the md.mask structure
+	md.mask.ocean_levelset=groundedice; %ice is grounded for mask equal one
+	md.mask.ice_levelset=-1*ones(md.mesh.numberofvertices,1);%ice is present when negatvie
+
+	plotmodel(md,'data',md.mask.ocean_levelset,'title','grounded/floating','data',md.mask.ice_levelset,'title','ice/no-ice')
+
+	save ./Models/PIG_SetMask md;
+end 
+
+if any(steps==3) %Parameterization #3 
+	md = loadmodel('./Models/PIG_SetMask');
+	md = setflowequation(md,'SSA','all');
+	md = parameterize(md,'./Pig.par');
+
+	save ./Models/PIG_Parameterization md;
+end 
+
+if any(steps==4) %Rheology B inversion 
+	md = loadmodel('./Models/PIG_Parameterization');
+
+	% Control general
+	md.inversion.iscontrol=1;
+	md.inversion.maxsteps=40;
+	md.inversion.maxiter=40;
+	md.inversion.dxmin=0.1;
+	md.inversion.gttol=1.0e-6;
+	md.verbose=verbose('control',true);
+
+	% Cost functions
+	md.inversion.cost_functions=[101 103 502];
+	md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,3);
+	md.inversion.cost_functions_coefficients(:,1)=1000;
+	md.inversion.cost_functions_coefficients(:,2)=1;
+	md.inversion.cost_functions_coefficients(:,3)=1.e-16;
+
+	% Controls
+	md.inversion.control_parameters={'MaterialsRheologyBbar'};
+	md.inversion.min_parameters=md.materials.rheology_B;
+	md.inversion.max_parameters=md.materials.rheology_B;
+	pos = find(md.mask.ocean_levelset<0);
+	md.inversion.min_parameters(pos) = cuffey(273);
+	md.inversion.max_parameters(pos) = cuffey(200);
+
+	% Additional parameters
+	md.stressbalance.restol=0.01;
+	md.stressbalance.reltol=0.1;
+	md.stressbalance.abstol=NaN;
+
+	% Solve
+	md.cluster=generic('name',oshostname,'np',2);
+	mds=extract(md,md.mask.ocean_levelset<0);
+	mds=solve(mds,'Stressbalance');
+
+	% Update model rheology_B accordingly
+	md.materials.rheology_B(mds.mesh.extractedvertices)=mds.results.StressbalanceSolution.MaterialsRheologyBbar;
+	plotmodel(md,'data',md.materials.rheology_B)
+
+	% Save model
+	save ./Models/PIG_Control_B md;
+end 
+
+if any(steps==5) %drag inversion 
+	md = loadmodel('./Models/PIG_Control_B');
+
+	% Cost functions
+	md.inversion.cost_functions=[101 103 501];
+	md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,3);
+	md.inversion.cost_functions_coefficients(:,1)=2000;
+	md.inversion.cost_functions_coefficients(:,2)=1;
+	md.inversion.cost_functions_coefficients(:,3)=8e-7;
+
+	% Controls
+	md.inversion.control_parameters={'FrictionCoefficient'};
+	md.inversion.min_parameters=1*ones(md.mesh.numberofvertices,1);
+	md.inversion.max_parameters=200*ones(md.mesh.numberofvertices,1);
+
+	% Solve
+	md=solve(md,'Stressbalance');
+
+	% Update model friction fields accordingly
+	md.friction.coefficient=md.results.StressbalanceSolution.FrictionCoefficient;
+
+	%Plot and save
+	plotmodel(md,...
+		'data',md.initialization.vel,'title','Observed velocity',...
+		'data',md.results.StressbalanceSolution.Vel,'title','Modeled Velocity',...
+		'data',md.geometry.base,'title','Bed elevation',...
+		'data',md.results.StressbalanceSolution.FrictionCoefficient,'title','Friction Coefficient',...
+		'colorbar#all','on','colorbartitle#1-2','(m/yr)',...
+		'caxis#1-2',([1.5,4000]),...
+		'colorbartitle#3','(m)', 'log#1-2',10);
+
+	save ./Models/PIG_Control_drag md;
+end 
+
+if any(steps==6) %Transient Run #1 
+
+	md = loadmodel('./Models/PIG_Control_drag');	
+
+	md.inversion.iscontrol=0;
+	md.transient.ismasstransport=1;
+	md.transient.isstressbalance=1;
+	md.transient.isgroundingline=1;
+	md.transient.ismovingfront=0;
+	md.transient.isthermal=0;
+	md.verbose.solution=1;
+	md.timestepping.time_step=0.1;
+	md.timestepping.final_time=10;
+	md.transient.requested_outputs={'default','IceVolume','IceVolumeAboveFloatation'};
+
+	%Set melt to 25 m/yr under floating ice
+	md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+	md.basalforcings.floatingice_melting_rate=25*ones(md.mesh.numberofvertices,1);
+
+
+	md=solve(md,'Transient');
+	time      = cell2mat({md.results.TransientSolution(:).time});
+	V_control = cell2mat({md.results.TransientSolution(:).IceVolumeAboveFloatation});
+	plot(time,V_control); legend({'Control run'});
+
+	% Save model
+	save ./Models/PIG_Transient md;
+end 
+
+if any(steps==7) %High Melt #2
+	md = loadmodel('./Models/PIG_Transient');	
+
+	%Set melt to 60 m/yr under floating ice
+	md.basalforcings.floatingice_melting_rate=60*ones(md.mesh.numberofvertices,1);
+
+	md=solve(md,'Transient');
+	V_melt = cell2mat({md.results.TransientSolution(:).IceVolumeAboveFloatation});
+	plot(time,[V_control',V_melt']); legend({'Control run','High melt'});
+
+	save ./Models/PIG_HighMelt md;
+end 
+
+if any(steps==8) %Ice Front retreat 
+	md = loadmodel('./Models/PIG_Transient');	
+
+	pos = find(ContourToNodes(md.mesh.x,md.mesh.y,'FrontRetreat.exp',2));
+	md.mask.ice_levelset(pos) = +1; %Deactivate nodes in retreated area
+
+	md=solve(md,'Transient');
+	V_retreat = cell2mat({md.results.TransientSolution(:).IceVolumeAboveFloatation});
+	plot(time,[V_control',V_melt',V_retreat']); legend({'Control run','High melt','Retreat'});
+
+	save ./Models/PIG_FrontRetreat md;
+end 
+
+if any(steps==9) %High surface mass balance #3 
+	%Load model from PIG_Transient
+	%...
+
+	%Change surface mass balance (x2)
+	%...
+
+	%Solve
+	%...
+
+	%Get volume time series
+	%...
+
+	%plot
+	plot(time,[V_control',V_melt',V_retreat',V_smb']); legend({'Control run','High melt','Retreat','SMB'});
+
+	%Save model
+	save ./Models/PIG_SMB md;
+end 
Index: /issm/branches/trunk-dlcheng-ASE/examples/PigSensitivity/FrontRetreat.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/PigSensitivity/FrontRetreat.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/PigSensitivity/FrontRetreat.exp	(revision 27955)
@@ -0,0 +1,17 @@
+## Name:FrontRetreat
+## Icon:0
+# Points Count Value
+11 1.000000
+# X pos Y pos
+-1626858.6376043619 -327176.4356578548
+-1605190.4936934854 -325911.1425827671
+-1604716.0087903275 -316263.2828852235
+-1607088.4333061168 -312625.5652943464
+-1612465.9288752396 -311676.5954880306
+-1618476.0709819060 -312467.4036599604
+-1624011.7281854146 -313890.8583694341
+-1626858.6376043619 -315788.7979820656
+-1627807.6074106777 -319268.3539385567
+-1628756.5772169936 -322589.7482606619
+-1626858.6376043619 -327176.4356578548
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/PigSensitivity/Help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/PigSensitivity/Help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/PigSensitivity/Help.m	(revision 27955)
@@ -0,0 +1,22 @@
+if step==4
+	%Load model
+	md = loadmodel('./Models/PIG_Transient');
+
+	%Change external forcing basal melting rate and surface mass balance)
+	md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+	md.basalforcings.floatingice_melting_rate=25*ones(md.mesh.numberofvertices,1);
+	md.smb.mass_balance=2*md.smb.mass_balance;
+
+	%Define time steps and time span of the simulation
+	md.timestepping.time_step=0.1;
+	md.timestepping.final_time=10;
+
+	%Request additional outputs
+	md.transient.requested_outputs={'default','IceVolume','IceVolumeAboveFloatation'};
+
+	%Solve
+	md=solve(md,'Transient');
+
+	%Save model
+	save ./Models/PIG_SMB md;
+end
Index: /issm/branches/trunk-dlcheng-ASE/examples/PigSensitivity/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/PigSensitivity/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/PigSensitivity/runme.m	(revision 27955)
@@ -0,0 +1,109 @@
+steps=[1];
+
+if any(steps==1) %Transient Run #1 
+
+	md = loadmodel('../Pig/Models/PIG_Control_drag');
+
+	md.inversion.iscontrol=0;
+	md.transient.ismasstransport=1;
+	md.transient.isstressbalance=1;
+	md.transient.isgroundingline=1;
+	md.transient.ismovingfront=0;
+	md.transient.isthermal=0;
+
+	pos=find(md.mask.ocean_levelset<0);
+	md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+	md.basalforcings.floatingice_melting_rate=25*ones(md.mesh.numberofvertices,1);
+
+	md.timestepping.time_step=0.1;
+	md.timestepping.final_time=10;
+	md.transient.requested_outputs={'default','IceVolume','IceVolumeAboveFloatation'};
+
+	md=solve(md,'Transient');
+
+	plotmodel(md, 'data', md.results.TransientSolution(1).Vel,...
+		'title#1', 'Velocity t=0 years (m/yr)',...
+		'data', md.results.TransientSolution(end).Vel,...
+		'title#2', 'Velocity t=10 years (m/yr)',...
+		'data', md.results.TransientSolution(1).MaskOceanLevelset,...
+		'title#3', 'Floating ice t=0 years',...
+		'data', md.results.TransientSolution(end).MaskOceanLevelset,...
+		'title#4', 'Floating ice t=10 years',...
+		'caxis#1',([0 4500]),'caxis#2',([0 4500]),...
+		'caxis#3',([-1,1]),'caxis#4',([-1,1]));
+
+	% Save model
+	save ./Models/PIG_Transient md;
+end 
+
+if any(steps==2) %High Melt #2 
+	md = loadmodel('./Models/PIG_Transient');
+
+	md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+	md.basalforcings.floatingice_melting_rate=60*ones(md.mesh.numberofvertices,1);
+
+	md.timestepping.time_step=0.1;
+	md.timestepping.final_time=10;
+	md.transient.requested_outputs={'default','IceVolume','IceVolumeAboveFloatation'};
+
+	md=solve(md,'Transient');
+
+	plotmodel(md, 'data', md.results.TransientSolution(1).Vel,...
+		'title#1', 'Velocity t=0 years (m/yr)',...
+		'data', md.results.TransientSolution(end).Vel,...
+		'title#2', 'Velocity t=10 years (m/yr)',...
+		'data', md.results.TransientSolution(1).MaskOceanLevelset,...
+		'title#3', 'Floating ice t=0 years',...
+		'data', md.results.TransientSolution(end).MaskOceanLevelset,...
+		'title#4', 'Floating ice t=10 years',...
+		'caxis#1',([0 4500]),'caxis#2',([0 4500]),...
+		'caxis#3',([-1,1]),'caxis#4',([-1,1]));
+
+	save ./Models/PIG_HighMelt md;
+end 
+
+if any(steps==3) %Ice Front retreat 
+	md = loadmodel('./Models/PIG_Transient');
+
+	md2=extract(md,'~FrontRetreat.exp');
+
+	md2=SetMarineIceSheetBC(md2);
+
+	md2.basalforcings.groundedice_melting_rate=zeros(md2.mesh.numberofvertices,1);
+	md2.basalforcings.floatingice_melting_rate=25*ones(md2.mesh.numberofvertices,1);
+
+	md2.timestepping.time_step=0.1;
+	md2.timestepping.final_time=10;
+	md2.transient.requested_outputs={'default','IceVolume','IceVolumeAboveFloatation'};
+
+	md2=solve(md2,'Transient');
+
+	plotmodel(md, 'data', md.results.TransientSolution(1).Vel,...
+		'title#1', 'Velocity t=0 years (m/yr)',...
+		'data', md.results.TransientSolution(end).Vel,...
+		'title#2', 'Velocity t=10 years (m/yr)',...
+		'data', md.results.TransientSolution(1).MaskOceanLevelset,...
+		'title#3', 'Floating ice t=0 years',...
+		'data', md.results.TransientSolution(end).MaskOceanLevelset,...
+		'title#4', 'Floating ice t=10 years',...
+		'caxis#1',([0 4500]),'caxis#2',([0 4500]),...
+		'caxis#3',([-1,1]),'caxis#4',([-1,1]));
+
+	save ./Models/PIG_FrontRetreat md2;
+end 
+
+if any(steps==4) %High surface mass balance #3 
+
+	%Load model
+
+	%Change external forcing basal melting rate and surface mass balance)
+
+	%Refine time steps and time span of the simulation
+
+	%Request additional outputs
+
+	%Solve
+
+	%Save model
+
+end % step 4 end
Index: /issm/branches/trunk-dlcheng-ASE/examples/README.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/README.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/README.txt	(revision 27955)
@@ -0,0 +1,10 @@
+To run the following examples, see the accompanying tutorials that can be found within the
+documentation tab on the ISSM webpages: https://issm.jpl.nasa.gov/documentation/tutorials/
+
+The tutorials were created to be parallel to lectures given,
+but the tutorials are up to date on their version of ISSM. If more help is
+needed see the User manual also found under the documentation tab
+(https://issm.jpl.nasa.gov/documentation/).
+
+Make sure to download the required datasets
+see https://issm.jpl.nasa.gov/documentation/tutorials/datasets/)
Index: /issm/branches/trunk-dlcheng-ASE/examples/SlrFarrell/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/SlrFarrell/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/SlrFarrell/runme.m	(revision 27955)
@@ -0,0 +1,154 @@
+clear all;
+
+steps=[4];
+
+if any(steps==1) 
+	disp('   Step 1: Global mesh creation');
+
+	numrefine=1;
+	resolution=150*1e3;			% inital resolution [m]
+	radius = 6.371012*10^6;		% mean radius of Earth, m
+	mindistance_coast=150*1e3;	% coastal resolution [m]
+	mindistance_land=300*1e3;	% resolution on the continents [m]
+	maxdistance=600*1e3;		% max element size (on mid-oceans) [m]
+
+	md=model;
+	md.mesh=gmshplanet('radius',radius*1e-3,'resolution',resolution*1e-3); % attributes in [km]
+
+	for i=1:numrefine,
+		ocean_mask_levelset=gmtmask(md.mesh.lat,md.mesh.long);
+
+		distance=zeros(md.mesh.numberofvertices,1);
+
+		pos=find(~ocean_mask_levelset);	coaste.lat=md.mesh.lat(pos);	coaste.long=md.mesh.long(pos);
+		pos=find(ocean_mask_levelset);	coasto.lat=md.mesh.lat(pos);	coasto.long=md.mesh.long(pos);
+
+		for j=1:md.mesh.numberofvertices
+			phi1=md.mesh.lat(j)/180*pi; lambda1=md.mesh.long(j)/180*pi;
+			if ocean_mask_levelset(j),
+				phi2=coaste.lat/180*pi; lambda2=coaste.long/180*pi;
+				deltaphi=abs(phi2-phi1); deltalambda=abs(lambda2-lambda1);
+				d=radius*2*asin(sqrt(sin(deltaphi/2).^2+cos(phi1).*cos(phi2).*sin(deltalambda/2).^2));
+			else
+				phi2=coasto.lat/180*pi; lambda2=coasto.long/180*pi;
+				deltaphi=abs(phi2-phi1); deltalambda=abs(lambda2-lambda1);
+				d=radius*2*asin(sqrt(sin(deltaphi/2).^2+cos(phi1).*cos(phi2).*sin(deltalambda/2).^2));
+			end
+			distance(j)=min(d);
+		end
+		pos=find(distance<mindistance_coast); distance(pos)=mindistance_coast;
+
+		pos2=find(ocean_mask_levelset~=1 & distance>mindistance_land);
+		distance(pos2)=mindistance_land;
+
+		dist=min(maxdistance,distance);
+		md.mesh=gmshplanet('radius',radius*1e-3,'resolution',resolution*1e-3,'refine',md.mesh,'refinemetric',dist);
+	end
+
+	ocean_mask=gmtmask(md.mesh.lat,md.mesh.long);
+	pos = find(ocean_mask==0); 
+	md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1); 
+	md.mask.ocean_levelset(pos)=1; 
+
+	save ./Models/SlrFarrell_Mesh md;
+
+	plotmodel (md,'data',md.mask.ocean_levelset,'edgecolor','k');
+end 
+
+if any(steps==2) 
+	disp('   Step 2: Define source as in Farrell, 1972, Figure 1');
+	md = loadmodel('./Models/SlrFarrell_Mesh');
+
+	md.solidearth.surfaceload.icethicknesschange=zeros(md.mesh.numberofvertices,1);
+	md.mask.ice_levelset=ones(md.mesh.numberofvertices,1); 
+
+	pos = find(md.mask.ocean_levelset==-1); 
+	md.solidearth.initialsealevel=zeros(md.mesh.numberofvertices,1);
+	md.solidearth.initialsealevel(pos)=1; % 1 m SLR everywhere
+	md.dsl.global_average_thermosteric_sea_level_change=[0;0];
+	md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1);
+	md.dsl.sea_water_pressure_change_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
+
+	save ./Models/SlrFarrell_Loads md;
+
+	plotmodel (md,'data',md.solidearth.initialsealevel,'view',[90 90],'title#all','Initial sea-level [m]');
+end 
+
+if any(steps==3) 
+	disp('   Step 3: Parameterization');
+	md = loadmodel('./Models/SlrFarrell_Loads');
+
+	md.solidearth.lovenumbers=lovenumbers('maxdeg',10000);
+
+	%md.mask.ice_levelset = ones(md.mesh.numberofvertices,1);
+	%md.mask.ocean_levelset = -ones(md.mesh.numberofvertices,1);
+	%pos=find(md.mesh.lat <-80);
+	%md.mask.ice_levelset(pos(1))=-1; % ice yes!
+	%md.mask.ocean_levelset(pos(1))=1; % ice grounded!
+
+	% arbitary to pass consistency check. 
+	md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+	md.geometry.surface=ones(md.mesh.numberofvertices,1);
+	md.geometry.base=md.geometry.bed; 
+	md.geometry.thickness=md.geometry.surface-md.geometry.base; 
+
+	md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1);
+	md.materials.rheology_B=paterson(md.initialization.temperature);
+	md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+	md.miscellaneous.name='SlrFarrell';
+
+	save ./Models/SlrFarrell_Parameterization md;
+end 
+
+if any(steps==4) 
+	disp('   Step 4: Solve Slr solver');
+	md = loadmodel('./Models/SlrFarrell_Parameterization');
+
+	md.cluster=generic('name',oshostname(),'np',3);
+	md.verbose=verbose('111111111');
+
+	md.solidearth.settings.reltol = 0.1/100; % percent change in solution
+
+	md=solve(md,'Slr');
+
+	save ./Models/SlrFarrell_Solution md;
+end 
+
+if any(steps==5) 
+	disp('   Step 5: Plot solutions');
+	md = loadmodel('./Models/SlrFarrell_Solution');
+
+	sol = md.results.SealevelriseSolution.Sealevel*100; % per cent normalized by GMSL (which 1 m)
+
+	res = 1; % [degree]
+
+	[lat_grid, lon_grid] = meshgrid(linspace(-90,90,180/res), linspace(-180,180,360/res));
+	sol_grid = zeros(size(lat_grid));
+
+	F = scatteredInterpolant(md.mesh.lat,md.mesh.long,sol);
+	F.Method = 'linear';
+	F.ExtrapolationMethod = 'linear';
+
+	sol_grid = F(lat_grid, lon_grid);
+	sol_grid(isnan(sol_grid))=0;
+	sol_grid(lat_grid>85 & sol_grid==0)=NaN;
+
+	set(0,'DefaultAxesFontSize',18,'DefaultAxesLineWidth',1,'DefaultTextFontSize',18,'DefaultLineMarkerSize',8)
+	figure1=figure('Position', [100, 100, 1000, 500]);
+	gcf; load coast; cla;
+	pcolor(lon_grid,lat_grid,sol_grid); shading flat; hold on;
+	[C,h]=contour(lon_grid,lat_grid,sol_grid,[96 98 100 102 104 105],'-k','linewidth',2);
+	clabel(C,h,'FontSize',18,'Color','red','LabelSpacing',500);
+	geoshow(lat,long,'DisplayType','polygon','FaceColor',[.82 .82 .82]);
+	plot(long,lat,'k'); hold off;
+	c1=colorbar;
+	colormap(flipud(haxby));
+	caxis([96 105]);
+	xlim([-170 170]);
+	ylim([-85 85]);
+	grid on;
+	title('Relative sea-level [% of GMSL]');
+	set(gcf,'color','w');
+	%export_fig('Fig5.pdf');
+end 
Index: /issm/branches/trunk-dlcheng-ASE/examples/SlrGRACE/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/SlrGRACE/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/SlrGRACE/runme.m	(revision 27955)
@@ -0,0 +1,324 @@
+%clear all;
+addpath('../Data','../Functions');
+
+%steps=[1:7];
+
+if any(steps==1) % {{{ 
+	disp('   Step 1: Global mesh creation');
+
+	numrefine=1;
+	resolution=150*1e3;			% inital resolution [m]
+	radius = 6.371012*10^6;		% mean radius of Earth, m
+	mindistance_coast=150*1e3;	% coastal resolution [m]
+	mindistance_land=300*1e3;	% resolution on the continents [m]
+	maxdistance=600*1e3;		% max element size (on mid-oceans) [m]
+
+	md=model;
+	md.mesh=gmshplanet('radius',radius*1e-3,'resolution',resolution*1e-3); % attributes in [km]
+
+	for i=1:numrefine,
+
+		ocean_mask=gmtmask(md.mesh.lat,md.mesh.long);
+
+		distance=zeros(md.mesh.numberofvertices,1);
+
+		pos=find(~ocean_mask);	coaste.lat=md.mesh.lat(pos);	coaste.long=md.mesh.long(pos);		pos=find(ocean_mask);	coasto.lat=md.mesh.lat(pos);	coasto.long=md.mesh.long(pos);
+		for j=1:md.mesh.numberofvertices
+			phi1=md.mesh.lat(j)/180*pi; lambda1=md.mesh.long(j)/180*pi;
+			if ocean_mask(j),
+				phi2=coaste.lat/180*pi; lambda2=coaste.long/180*pi;
+				deltaphi=abs(phi2-phi1); deltalambda=abs(lambda2-lambda1);
+				d=radius*2*asin(sqrt(sin(deltaphi/2).^2+cos(phi1).*cos(phi2).*sin(deltalambda/2).^2));
+			else
+				phi2=coasto.lat/180*pi; lambda2=coasto.long/180*pi;
+				deltaphi=abs(phi2-phi1); deltalambda=abs(lambda2-lambda1);
+				d=radius*2*asin(sqrt(sin(deltaphi/2).^2+cos(phi1).*cos(phi2).*sin(deltalambda/2).^2));
+			end
+			distance(j)=min(d);
+		end
+		pos=find(distance<mindistance_coast); distance(pos)=mindistance_coast;
+
+		pos2=find(ocean_mask~=1 & distance>mindistance_land);
+		distance(pos2)=mindistance_land;
+
+		dist=min(maxdistance,distance);
+		md.mesh=gmshplanet('radius',radius*1e-3,'resolution',resolution*1e-3,'refine',md.mesh,'refinemetric',dist);
+	end
+
+	ocean_mask=gmtmask(md.mesh.lat,md.mesh.long);
+	pos = find(ocean_mask==0);	md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1);	md.mask.ocean_levelset(pos)=1;
+	save ./Models/SlrGRACE_Mesh md;
+
+	plotmodel (md,'data',md.mask.ocean_levelset,'edgecolor','k','view',[45 45]);
+
+end % }}} 
+if any(steps==2) % {{{ 
+	disp('   Step 2: Define loads in meters of ice height equivalent');
+	md = loadmodel('./Models/SlrGRACE_Mesh');
+
+	year_month = 2007+15/365;
+	time_range = [year_month year_month];
+
+	onvertex = 1; % map data on vertex. If 0, it maps on the elemental centroid. 
+	water_load = grace(md.mesh.elements,md.mesh.lat,md.mesh.long,time_range(1),time_range(2),onvertex);
+	rho_water2ice = md.materials.rho_freshwater/md.materials.rho_ice; 
+	ice_load = water_load*rho_water2ice; % ice height equivalent. 
+
+	%Geometry for the bed, arbitrary thickness of 100:
+	md.geometry.bed=zeros(md.mesh.numberofvertices,1);
+	md.geometry.base=md.geometry.bed;
+	md.geometry.thickness = 100*ones(md.mesh.numberofvertices,1);
+	md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+
+	md.masstransport.spcthickness = repmat(md.geometry.thickness,1,2); 
+	md.masstransport.spcthickness(:,end) = md.masstransport.spcthickness(:,end) + ice_load; 
+	md.masstransport.spcthickness(end+1,:) = [0 1]; % dummy time. 
+
+	md.smb.mass_balance=zeros(md.mesh.numberofvertices,1); 
+
+	save ./Models/SlrGRACE_Loads md;
+
+	plotmodel (md,'data',ice_load,...
+		'edgecolor','k','view',[45 45],'caxis',[-.1 .1],...
+		'title','Ice height equivalent [m]');
+end % }}} 
+if any(steps==3) % {{{ 
+	disp('   Step 3: Parameterization');
+	md = loadmodel('./Models/SlrGRACE_Loads');
+	
+	md.mask.ice_levelset=-md.mask.ocean_levelset;
+	
+	md.solidearth.lovenumbers = lovenumbers('maxdeg',10000);
+	md.solidearth.settings.reltol=NaN;
+	md.solidearth.settings.abstol=1e-3;
+	md.solidearth.settings.sealevelloading=1;
+	md.solidearth.settings.isgrd=1;
+	md.solidearth.settings.grdmodel=1;
+	md.solidearth.settings.maxiter=10; 
+	
+	%time stepping:
+	md.timestepping.start_time=0;
+	md.timestepping.time_step=1;
+	md.timestepping.final_time=1;
+
+	%masstransport:
+	md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+	md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+	md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+	md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+	md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+	md.initialization.str=0;
+
+	md.miscellaneous.name='SlrGRACE';
+
+	save ./Models/SlrGRACE_Parameterization md;
+end % }}} 
+if any(steps==4) % {{{ 
+	disp('   Step 4: Solve Slr solver');
+	md = loadmodel('./Models/SlrGRACE_Parameterization');
+
+	md.solidearth.settings.viscous=0;
+	md.solidearth.settings.selfattraction=1;
+	md.solidearth.settings.elastic=1;
+	md.solidearth.settings.rotation=1;
+
+	%Physics:
+	md.transient.issmb=0;
+	md.transient.isstressbalance=0;
+	md.transient.isthermal=0;
+	md.transient.ismasstransport=1;
+	md.transient.isslc=1;
+	
+	md.solidearth.requested_outputs={'Sealevel','Bed'}; 
+
+	md.cluster=generic('name',oshostname(),'np',3);
+	md.verbose=verbose('111111111');
+
+	md=solve(md,'Transient');
+
+	save ./Models/SlrGRACE_Solution md;
+end % }}}
+if any(steps==5) % {{{ 
+	disp('   Step 5: Plot solutions');
+	md = loadmodel('./Models/SlrGRACE_Solution');
+
+	sol1 = (md.masstransport.spcthickness(1:end-1,2)-md.masstransport.spcthickness(1:end-1,1))*100; % [cm]
+	sol2 = (md.results.TransientSolution.Sealevel-md.results.TransientSolution.Bed)*1000;	% [mm]
+
+	sol_name={'Change in water equivalent height [cm]', 'Relative sea level [mm]'};
+	fig_name={'Fig_dH.pdf','Fig_slr.pdf'};
+
+	res = 1.0;
+
+	[lat_grid, lon_grid] = meshgrid(linspace(-90,90,180/res), linspace(-180,180,360/res));
+	sol_grid = zeros(size(lat_grid));
+
+	for kk=1:2
+		sol=eval(sprintf('sol%d',kk));
+
+		if length(sol)==md.mesh.numberofelements
+			for jj=1:md.mesh.numberofelements
+				ii=(jj-1)*3;
+				pp(ii+1:ii+3)=md.mesh.elements(jj,:);
+			end
+			for jj=1:md.mesh.numberofvertices
+				pos=ceil(find(pp==jj)/3);
+				temp(jj)=mean(sol(pos));
+			end
+			sol=temp';
+		end
+
+		F = scatteredInterpolant(md.mesh.lat,md.mesh.long,sol);
+		F.Method = 'linear';
+		F.ExtrapolationMethod = 'linear';
+
+		sol_grid = F(lat_grid, lon_grid);
+		sol_grid(isnan(sol_grid))=0;
+		sol_grid(lat_grid>85 & sol_grid==0) = NaN;
+
+		set(0,'DefaultAxesFontSize',18,'DefaultAxesLineWidth',1,'DefaultTextFontSize',18,'DefaultLineMarkerSize',8)
+		figure1=figure('Position', [100, 100, 1000, 500]);
+		gcf; load coastlines; cla;
+		pcolor(lon_grid,lat_grid,sol_grid); shading flat; hold on;
+		if (kk==1)
+			geoshow(flipud(coastlat),flipud(coastlon),'DisplayType','polygon','FaceColor','white');
+		else
+			geoshow(coastlat,coastlon,'DisplayType','polygon','FaceColor','none');
+		end
+		plot(coastlon, coastlat,'k'); hold off;
+		c1=colorbar;
+		colormap('haxby');
+		caxis([-floor(min(abs(min(sol)),abs(max(sol)))) floor(min(abs(min(sol)),abs(max(sol))))]);
+		xlim([-180 180]);
+		ylim([-90 90]);
+		grid on;
+		title(sol_name(kk));
+		set(gcf,'color','w');
+		%export_fig(fig_name{kk});
+	end
+end % }}} 
+if any(steps==6) % {{{
+	disp('   Step 6: Transient run');
+	md = loadmodel('./Models/SlrGRACE_Parameterization');
+
+	disp('Projecting  loads onto the mesh...');
+	time_range = 2007 + [15 350]/365;
+	onvertex = 1; % map data on vertex. If 0, it maps on the elemental centroid. 
+	water_load = grace(md.mesh.elements,md.mesh.lat,md.mesh.long,time_range(1),time_range(2),onvertex);
+	rho_water2ice = md.materials.rho_freshwater/md.materials.rho_ice; 
+	ice_load = water_load*rho_water2ice; % ice height equivalent. 
+
+	% masstransport evalulates diff between the successive times, so we should cumsum. 
+	num_time = size(ice_load,2); 
+	md.masstransport.spcthickness = repmat(md.geometry.thickness,1,num_time+1); 
+	md.masstransport.spcthickness(:,2:end) = md.masstransport.spcthickness(:,2:end) + ice_load;
+	md.masstransport.spcthickness(end+1,:) = 0:num_time; % dummy time. 
+
+	%Physics 
+	md.transient.issmb=0;
+	md.transient.isstressbalance=0;
+	md.transient.isthermal=0;
+	md.transient.ismasstransport=1;
+	md.transient.isslc=1;
+
+	md.solidearth.settings.viscous=0;
+	md.solidearth.settings.selfattraction=1;
+	md.solidearth.settings.elastic=1;
+	md.solidearth.settings.rotation=1;
+	
+	%time stepping:
+	md.timestepping.start_time=0;
+	md.timestepping.time_step=1;
+	md.timestepping.final_time=num_time; 
+
+	md.cluster=generic('name',oshostname(),'np',3);
+	md.verbose=verbose('111111111');
+
+	md.solidearth.requested_outputs = {'Sealevel','Bed'};
+
+	md=solve(md,'tr');
+
+	save ./Models/SlrGRACE_Transient md;
+end % }}} 
+if any(steps==7) % {{{ 
+	disp('   Step 7: Plot transient');
+	md = loadmodel('./Models/SlrGRACE_Transient');
+
+	time = md.masstransport.spcthickness(end,2:end);
+
+	for tt=1:length(time)
+		gmsl(tt) = md.results.TransientSolution(tt).CumBslc*1000; % [mm]
+		sol1(:,tt) = (md.masstransport.spcthickness(1:end-1,tt+1)-md.geometry.thickness)*100; % [cm]
+		sol2(:,tt) = (md.results.TransientSolution(tt).Sealevel-md.results.TransientSolution(tt).Bed)*1000;	% [mm]
+	end
+	sol_name = {'Change in water equivalent height [cm]', 'Relative sea level [mm]'};
+	movie_name = {'Movie_dH','Movie_slr'};
+	
+	res = 1.0;
+
+	[lat_grid, lon_grid] = meshgrid(linspace(-90,90,180/res), linspace(-180,180,360/res));
+	sol_grid = zeros(size(lat_grid));
+
+	for kk=1:2
+		sol=eval(sprintf('sol%d',kk));
+
+		if length(sol)==md.mesh.numberofelements
+			for jj=1:md.mesh.numberofelements
+				ii=(jj-1)*3;
+				pp(ii+1:ii+3)=md.mesh.elements(jj,:);
+			end
+			for jj=1:md.mesh.numberofvertices
+				pos=ceil(find(pp==jj)/3);
+				temp2(jj,:)=mean(sol(pos,:));
+			end
+			sol=temp2;
+		end
+
+		vidObj = VideoWriter(movie_name{kk});
+		vidObj.FrameRate=2; % frames per second
+		open(vidObj);
+
+		for jj=1:length(time)
+			fprintf('creating frame %d...', jj);
+			F = scatteredInterpolant(md.mesh.lat,md.mesh.long,sol(:,jj));
+			F.Method = 'linear';
+			F.ExtrapolationMethod = 'linear';
+
+			sol_grid = F(lat_grid, lon_grid);
+			sol_grid(isnan(sol_grid))=0;
+			sol_grid(lat_grid>85 & sol_grid==0) = NaN;
+
+			set(0,'DefaultAxesFontSize',18,'DefaultAxesLineWidth',1,'DefaultTextFontSize',18,'DefaultLineMarkerSize',8)
+			figure1=figure('Position', [100, 100, 1000, 500]);
+			gcf; load coastlines; cla;
+			pcolor(lon_grid,lat_grid,sol_grid); shading flat; hold on;
+			if (kk==1)
+				geoshow(flipud(coastlat),flipud(coastlon),'DisplayType','polygon','FaceColor','white');
+			else
+				geoshow(coastlat,coastlon,'DisplayType','polygon','FaceColor','none');
+			end
+			plot(coastlon,coastlat,'k'); hold off;
+			c1=colorbar;
+			colormap('haxby');
+			%caxis([-floor(min(abs(min(min(sol))),abs(max(max(sol))))) floor(min(abs(min(min(sol))),abs(max(max(sol)))))]);
+			xlim([-180 180]);
+			ylim([-90 90]);
+			grid on;
+			title(sol_name(kk));
+			set(gcf,'color','w');
+			writeVideo(vidObj,getframe(gcf));
+			close
+			fprintf('done\n');
+		end
+		disp('closing vidObj...');
+		close(vidObj);
+	end
+
+	% plot GMSL time series
+	plot(time,gmsl,'-*','linewidth',3); grid on;
+	xlabel('# month');
+	ylabel('GMSL [mm/yr]');
+	set(gcf,'color','w');
+	%export_fig('Fig7.pdf');
+end % }}} 
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/SquareIceShelf/DomainOutline.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/SquareIceShelf/DomainOutline.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/SquareIceShelf/DomainOutline.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:DomainOutline
+## Icon:0
+# Points Count  Value
+5 1.000000
+# X pos Y pos
+0 0
+1000000 0
+1000000 1000000
+0 1000000
+0 0
Index: /issm/branches/trunk-dlcheng-ASE/examples/SquareIceShelf/Front.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/SquareIceShelf/Front.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/SquareIceShelf/Front.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+-1000 999999
+-1000 1100000
+1100000 1100000
+1100000 999999
+-1000 999999
Index: /issm/branches/trunk-dlcheng-ASE/examples/SquareIceShelf/Square.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/SquareIceShelf/Square.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/SquareIceShelf/Square.par	(revision 27955)
@@ -0,0 +1,30 @@
+%Start defining model parameters here
+
+disp('      creating thickness');
+hmin=300;
+hmax=1000;
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+md.geometry.thickness = hmax+(hmin-hmax)*(md.mesh.y-ymin)/(ymax-ymin);
+md.geometry.base      = -md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface   = md.geometry.base+md.geometry.thickness;
+
+disp('      creating drag');
+md.friction.coefficient=200*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('      initial velocity');
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.vel=zeros(md.mesh.numberofvertices,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=paterson((273-20)*ones(md.mesh.numberofvertices,1));
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.damage.D=zeros(md.mesh.numberofvertices,1);
+
+disp('      creating boundary conditions');
+md=SetIceShelfBC(md,'Front.exp');
Index: /issm/branches/trunk-dlcheng-ASE/examples/SquareIceShelf/Square.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/SquareIceShelf/Square.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/SquareIceShelf/Square.py	(revision 27955)
@@ -0,0 +1,32 @@
+import numpy as np
+from paterson import paterson
+from SetIceShelfBC import SetIceShelfBC
+#Start defining model parameters here
+
+print('      creating thickness')
+hmin = 300
+hmax = 1000
+ymin = np.nanmin(md.mesh.y)
+ymax = np.nanmax(md.mesh.y)
+md.geometry.thickness = hmax + (hmin - hmax) * (md.mesh.y - ymin) / (ymax - ymin)
+md.geometry.base = - md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+print('      creating drag')
+md.friction.coefficient = np.where(md.mask.ocean_levelset < 0., 0, 200)
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+print('      initial velocity')
+md.initialization.vx = np.zeros((md.mesh.numberofvertices))
+md.initialization.vy = np.zeros((md.mesh.numberofvertices))
+md.initialization.vz = np.zeros((md.mesh.numberofvertices))
+md.initialization.vel = np.zeros((md.mesh.numberofvertices))
+
+print('      creating flow law parameter')
+md.materials.rheology_B = paterson((273 - 20) * np.ones((md.mesh.numberofvertices)))
+md.materials.rheology_n = 3 * np.ones((md.mesh.numberofelements))
+md.damage.D = np.zeros((md.mesh.numberofvertices))
+
+print('      creating boundary conditions')
+md = SetIceShelfBC(md, 'Front.exp')
Index: /issm/branches/trunk-dlcheng-ASE/examples/SquareIceShelf/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/SquareIceShelf/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/SquareIceShelf/runme.m	(revision 27955)
@@ -0,0 +1,7 @@
+md=model;
+md=triangle(md,'DomainOutline.exp',100000);
+md=setmask(md,'all','');
+md=parameterize(md,'Square.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname,'np',2);
+md=solve(md,'Stressbalance');
Index: /issm/branches/trunk-dlcheng-ASE/examples/SquareIceShelf/runme.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/SquareIceShelf/runme.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/SquareIceShelf/runme.py	(revision 27955)
@@ -0,0 +1,16 @@
+from model import *
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from generic import generic
+from socket import gethostname
+from solve import solve
+
+md = model()
+md = triangle(md, 'DomainOutline.exp', 100000)
+md = setmask(md, 'all', '')
+md = parameterize(md, 'Square.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 2)
+md = solve(md, 'Stressbalance')
Index: /issm/branches/trunk-dlcheng-ASE/examples/StISSM/DomainOutline.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/StISSM/DomainOutline.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/StISSM/DomainOutline.exp	(revision 27955)
@@ -0,0 +1,101 @@
+## Name:
+## Icon:0
+# Points Count Value
+95 25000.000000
+# X pos Y pos
+-1712113.0179281300 -349656.0205056490
+-1711509.1917759699 -349354.1074295690
+-1709240.6586108401 -349354.1074295690
+-1707080.1508345299 -348922.0058743060
+-1705459.7700022999 -347193.5996532570
+-1703083.2114483600 -345249.1426545770
+-1701138.7544496800 -344168.8887664210
+-1698438.1197292900 -343952.8379887900
+-1698006.0181740201 -341900.3556012940
+-1693793.0280102200 -340279.9747690600
+-1691092.3932898301 -339631.8224361670
+-1688391.7585694401 -339415.7716585360
+-1686447.3015707601 -340063.9239914290
+-1683530.6160727399 -341036.1524907690
+-1682558.3875734000 -343304.6856558960
+-1682134.7209454600 -344182.1487658350
+-1682126.2860181299 -345681.2442098390
+-1681072.0444963200 -345932.4393879640
+-1680634.4718407800 -346682.5639403050
+-1680571.9614614199 -348557.8753211580
+-1677446.4424933300 -348370.3441830730
+-1675508.6207331200 -349495.5310115840
+-1676616.9911885399 -353567.0975933760
+-1672991.8601872099 -353799.6175753630
+-1668839.1631938200 -353999.1991486380
+-1667132.2298986400 -355121.4651541420
+-1666069.5534494901 -357496.8595698890
+-1662944.0344814099 -358309.4945015920
+-1660756.1712037399 -358747.0671571240
+-1657922.9836098100 -361682.8074238540
+-1656579.2228470000 -364003.8487410000
+-1653004.8841628900 -364748.0635758530
+-1653442.4568184200 -361622.5446077650
+-1651129.5727820301 -355684.0585683980
+-1648929.2928810001 -350845.9692010000
+-1646260.7698359799 -347802.2804785470
+-1644571.8968503401 -341785.6704672340
+-1643503.3064999001 -340869.0986596620
+-1643190.7546030900 -336680.9032424240
+-1642690.6715682000 -335243.1645171040
+-1641913.0916588283 -332341.0814454452
+-1640683.9739821283 -330436.6112348017
+-1637816.0327364956 -328532.1410241582
+-1635241.2508976001 -328652.8685499910
+-1631765.4107996500 -327017.1790921330
+-1625934.5618617306 -322342.6128395668
+-1620608.3852626982 -320438.1426289233
+-1616101.6204481323 -320438.1426289233
+-1611594.8556335662 -320914.2601815842
+-1607907.5026034669 -321866.4952869060
+-1602991.0318966676 -324723.2006028712
+-1599713.3847588014 -327579.9059188365
+-1593977.5022675355 -328532.1410241582
+-1590699.8551296694 -334721.6692087495
+-1589259.8391499999 -338300.0840570000
+-1588627.0898328500 -343572.9950327750
+-1588056.6000060199 -345432.3563530700
+-1586993.9235568701 -347432.6884926460
+-1589259.8391499999 -349315.9832070000
+-1585493.6744521901 -352996.1122558430
+-1585118.6121760199 -354496.3613605250
+-1585861.9157163899 -356240.3342513760
+-1586368.8197632500 -358747.0671571240
+-1587889.0972700799 -360996.6006787950
+-1586681.3716600600 -363935.4286441500
+-1585806.2263489999 -365748.2296456410
+-1586743.8820394201 -368373.6655788350
+-1586056.2678664399 -370123.9562009640
+-1585493.6744521901 -371124.1222707520
+-1586243.7990045301 -373562.0270658610
+-1414257.6683934701 -327460.5482541260
+-1412220.4351378100 -325972.8942023180
+-1404515.9240538401 -296165.1737279960
+-1387984.9332285200 -267002.0106682320
+-1360067.9373810000 -107884.1934940000
+-1423274.3497420000 -81217.9259650000
+-1402446.7987670000 -45916.9921070000
+-1478343.8065599999 60338.8188030000
+-1503760.4789370000 36334.1837800000
+-1528509.5619775900 63667.6809196406
+-1623055.4918765700 62841.1506965373
+-1725734.5897359999 -61372.6193030000
+-1719614.6457630000 -69022.5492690000
+-1759088.2843859999 -114004.1374660000
+-1755416.3180020000 -117064.1094530000
+-1761230.2647760001 -126856.0198080000
+-1758170.2927900001 -130527.9861920000
+-1762148.2563720001 -135423.9413700000
+-1764902.2311590000 -131445.9777880000
+-1769798.1863370000 -134199.9525750000
+-1775000.1387139999 -131445.9777880000
+-1794277.9622269999 -153477.7760890000
+-1712576.7101950001 -225081.1205660000
+-1729939.5891459100 -335652.4567604720
+-1712113.0179281300 -349656.0205056490
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/StISSM/PigStISSM.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/StISSM/PigStISSM.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/StISSM/PigStISSM.par	(revision 27955)
@@ -0,0 +1,117 @@
+
+% Name and Coordinate system
+md.miscellaneous.name = 'PigStISSM';
+md.mesh.epsg          = 3031;
+
+% NetCdf Loading
+disp('   Loading SeaRISE data from NetCDF');
+ncdata ='../Data/Antarctica_5km_withshelves_v0.75.nc';
+x1     = ncread(ncdata,'x1');
+y1     = ncread(ncdata,'y1');
+usrf   = ncread(ncdata,'usrf')';
+topg   = ncread(ncdata,'topg')';
+temp   = ncread(ncdata,'presartm')';
+smb    = ncread(ncdata,'presprcp')';
+gflux  = ncread(ncdata,'bheatflx_fox')';
+
+% Geometry
+disp('   Interpolating surface and ice base');
+md.geometry.base    = InterpFromGridToMesh(x1,y1,topg,md.mesh.x,md.mesh.y,0);
+md.geometry.surface = InterpFromGridToMesh(x1,y1,usrf,md.mesh.x,md.mesh.y,0);
+clear usrf, topg;
+
+disp('   Constructing thickness');
+md.geometry.thickness = md.geometry.surface-md.geometry.base;
+
+% Ensure hydrostatic equilibrium on ice shelf: 
+di = md.materials.rho_ice/md.materials.rho_water;
+
+% Get the node numbers of floating nodes
+pos = find(md.mask.ocean_levelset<0); 
+
+% Apply a flotation criterion on the precedingly defined nodes and
+% redefine base and thickness accordingly
+md.geometry.thickness(pos)    = 1/(1-di)*md.geometry.surface(pos);
+md.geometry.base(pos)         = md.geometry.surface(pos)-md.geometry.thickness(pos);
+md.geometry.hydrostatic_ratio = ones(md.mesh.numberofvertices,1); %For Dakota
+
+% Set min thickness to 1 meter
+pos0 = find(md.geometry.thickness<=1);
+md.geometry.thickness(pos0) = 1;
+md.geometry.surface         = md.geometry.thickness+md.geometry.base;
+md.geometry.bed             = md.geometry.base;
+md.geometry.bed(pos)        = md.geometry.base(pos)-1000;
+
+% Initialization parameters
+disp('   Interpolating temperatures');
+Temp_change = 0;
+md.initialization.temperature = InterpFromGridToMesh(x1,y1,temp,md.mesh.x,md.mesh.y,0)+273.15+Temp_change;
+clear temp;
+
+disp('   Loading velocities data from NetCDF');
+nsidc_vel = '../Data/Antarctica_ice_velocity.nc';
+xmin      = ncreadatt(nsidc_vel,'/','xmin');
+ymax      = ncreadatt(nsidc_vel,'/','ymax');
+spacing   = ncreadatt(nsidc_vel,'/','spacing');
+nx        = double(ncreadatt(nsidc_vel,'/','nx'));
+ny        = double(ncreadatt(nsidc_vel,'/','ny'));
+velx      = double(ncread(nsidc_vel,'vx'));
+vely      = double(ncread(nsidc_vel,'vy'));
+% Read coordinates
+xmin = strtrim(xmin);  
+xmin = str2num(xmin(1:end-2)); 
+ymax = strtrim(ymax);  
+ymax = str2num(ymax(1:end-2));  
+spacing = strtrim(spacing);
+spacing = str2num(spacing(1:end-2));  
+% Build the coordinates
+x2 = xmin+(0:1:nx)'*spacing;
+y2 = (ymax-ny*spacing)+(0:1:ny)'*spacing;
+
+disp('   Set observed velocities')
+md.initialization.vx  = InterpFromGridToMesh(x2,y2,flipud(velx'),md.mesh.x,md.mesh.y,0);
+md.initialization.vy  = InterpFromGridToMesh(x2,y2,flipud(vely'),md.mesh.x,md.mesh.y,0);
+md.initialization.vz  = zeros(md.mesh.numberofvertices,1);
+md.initialization.vel = sqrt(md.initialization.vx.^2+md.initialization.vy.^2);
+clear velx vely;
+
+disp('   Set Pressure');
+md.initialization.pressure = md.materials.rho_ice*md.constants.g*md.geometry.thickness;
+
+disp('   Construct ice rheological properties');
+md.materials.rheology_n = 3*ones(md.mesh.numberofelements,1);
+md.materials.rheology_B = paterson(md.initialization.temperature);
+
+%Forcings
+disp('   Interpolating surface mass balance');
+mass_balance = InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0);
+md.smb.mass_balance = mass_balance*md.materials.rho_water/md.materials.rho_ice;
+clear smb;
+
+disp('   Set geothermal heat flux');
+md.basalforcings.geothermalflux = InterpFromGridToMesh(x1,y1,gflux,md.mesh.x,md.mesh.y,0);
+clear gflux;
+
+% Friction and inversion set up
+disp('   Construct basal friction parameters');
+friction_coefficient    = 10.0;
+md.friction.coefficient = friction_coefficient*ones(md.mesh.numberofvertices,1);
+md.friction.p           = ones(md.mesh.numberofelements,1);
+md.friction.q           = ones(md.mesh.numberofelements,1);
+
+% No friction applied on floating ice
+pos = find(md.mask.ocean_levelset<0);
+md.friction.coefficient(pos) = 0;
+md.groundingline.migration   = 'SubelementMigration';
+
+md.inversion         = m1qn3inversion();
+md.inversion.vx_obs  = md.initialization.vx;
+md.inversion.vy_obs  = md.initialization.vy;
+md.inversion.vel_obs = md.initialization.vel;
+
+disp('   Set boundary conditions');
+md.basalforcings.floatingice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate = zeros(md.mesh.numberofvertices,1);
+md                                        = SetMarineIceSheetBC(md);
+md.thermal.spctemperature                 = md.initialization.temperature;
+md.masstransport.spcthickness             = NaN*ones(md.mesh.numberofvertices,1);
Index: /issm/branches/trunk-dlcheng-ASE/examples/StISSM/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/StISSM/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/StISSM/runme.m	(revision 27955)
@@ -0,0 +1,288 @@
+
+%%%
+% Tutorial for StISSM
+%%%
+
+steps = [1];
+
+if any(steps==1)
+   % Mesh parameters 
+   domain    = ['./DomainOutline.exp'];
+   hinit     = 5000; % element size for the initial mesh
+   hmax      = 40000; % maximum element size of the final mesh
+   hmin      = 4000; % minimum element size of the final mesh
+   gradation = 1.7; % maximum size ratio between two neighboring elements
+   err       = 8; % maximum error between interpolated and control field
+
+   % Generate an initial uniform mesh (resolution = hinit m)
+   md = bamg(model,'domain',domain,'hmax',hinit);
+
+   % Get necessary data to build up the velocity grid
+   nsidc_vel  = '../Data/Antarctica_ice_velocity.nc';
+   xmin       = strsplit(ncreadatt(nsidc_vel,'/','xmin')); 
+   xmin       = str2num(xmin{2});
+   ymax       = strsplit(ncreadatt(nsidc_vel,'/','ymax'));
+   ymax       = str2num(ymax{2});
+   spacing    = strsplit(ncreadatt(nsidc_vel,'/','spacing')); 
+   spacing    = str2num(spacing{2});
+   nx         = double(ncreadatt(nsidc_vel,'/','nx'));
+   ny         = double(ncreadatt(nsidc_vel,'/','ny'));
+   vx         = double(ncread(nsidc_vel,'vx'));
+   vy         = double(ncread(nsidc_vel,'vy'));
+
+   % Build the coordinates
+   x = xmin+(0:1:nx)'*spacing;
+   y = (ymax-ny*spacing)+(0:1:ny)'*spacing;
+
+   % Interpolate velocities onto coarse mesh
+   vx_obs   = InterpFromGridToMesh(x,y,flipud(vx'),md.mesh.x,md.mesh.y,0);
+   vy_obs   = InterpFromGridToMesh(x,y,flipud(vy'),md.mesh.x,md.mesh.y,0);
+   vel_obs  = sqrt(vx_obs.^2+vy_obs.^2);
+   clear vx vy x y;
+
+   % Adapt the mesh to minimize error in velocity interpolation
+   md = bamg(md,'hmax',hmax,'hmin',hmin,'gradation',gradation,'field',vel_obs,'err',err);
+
+   % Plot and save model
+   plotmodel(md,'data','mesh')
+   save ./Models/PIG_StISSM_Mesh_generation md;
+   
+end
+
+if any(steps==2) %Masks #2 
+   md = loadmodel('./Models/PIG_StISSM_Mesh_generation');
+
+   % Load SeaRISe dataset for Antarctica  http://websrv.cs.umt.edu/isis/index.php/Present_Day_Antarctica
+   searise = '../Data/Antarctica_5km_withshelves_v0.75.nc';
+
+   % Read thickness mask from SeaRISE
+   x1      = double(ncread(searise,'x1'));
+   y1      = double(ncread(searise,'y1'));
+   thkmask = double(ncread(searise,'thkmask'));
+
+   % Interpolate onto our mesh vertices
+   groundedice                 = double(InterpFromGridToMesh(x1,y1,thkmask',md.mesh.x,md.mesh.y,0));
+   groundedice(groundedice<=0) = -1;
+   clear thkmask;
+
+   % Fill in the md.mask structure
+   md.mask.ocean_levelset = groundedice; %ice is grounded for mask equal one
+   md.mask.ice_levelset   = -1*ones(md.mesh.numberofvertices,1); %ice is present when negatvie
+
+   plotmodel(md,'data',md.mask.ocean_levelset,'title','grounded/floating','data',md.mask.ice_levelset,'title','ice/no-ice')
+
+   save ./Models/PIG_StISSM_SetMask md;
+end
+
+if any(steps==3) %Parameterization #3 
+   
+   md = loadmodel('./Models/PIG_StISSM_SetMask');
+   md = setflowequation(md,'SSA','all');
+   md = parameterize(md,'./PigStISSM.par');
+
+   save ./Models/PIG_StISSM_Parameterization md;
+end
+
+if any(steps==4) %Stochastic SMB
+    md = loadmodel('./Models/PIG_StISSM_Parameterization');
+
+    % Create the different subdomains for SMB %
+    ymax  = max(md.mesh.y);
+    ymin  = min(md.mesh.y);
+    xmax  = max(md.mesh.x);
+    xmin  = min(md.mesh.x);
+    idsmb = zeros(md.mesh.numberofelements,1); %subdomain ID is defined for each element
+    iid1  = find(md.mesh.x>=(xmax-2/3*(xmax-xmin))); %vertices in subdomain 1
+    iid2  = find(md.mesh.x<(xmax-2/3*(xmax-xmin))); %vertices in subdomain 2
+    for ii=1:md.mesh.numberofelements
+        for vertex=1:3
+            if any(iid1==md.mesh.elements(ii,vertex)) %one vertex in subdomain 1
+                idsmb(ii) = 1;
+            end
+        end
+        if idsmb(ii)==0 %no vertex was found in subdomain 1
+            idsmb(ii) = 2;
+        end
+    end
+    
+    % SMBarma implementation 
+    md.smb = SMBarma();
+    md.smb.num_basins = 2; %we use two different subdomains
+    md.smb.basin_id   = idsmb; %element subdomain IDs
+    md.smb.num_breaks = 1; %1 breakpoint in the piecewise polynomial
+    md.smb.datebreaks = [5;5]; %breakpoint occurs at year 5 in both subdomains
+    md.smb.num_params = 2; %use a constant and a linear trend for the piecwise polynomial    
+    constsmb    = [0.5,0.2;0.3,0.5]; %constant SMB term for subdomains pre- and post-breakpoint [m yr^-1] 
+    trendsmb    = [0,0;0.01,0.001]; %trend is SMB for subdomains pre- and post-breakpoint [m yr^-2] 
+    md.smb.polynomialparams = cat(3,constsmb,trendsmb); %concatenating const and trend along a 3rd dimension
+    md.smb.ar_order         = 1; %first-order AR
+    md.smb.ma_order         = 1; %first-order MA
+    md.smb.arlag_coefs      = [0.3;0]; %AR coefficients in each subdomain
+    md.smb.malag_coefs      = zeros(md.smb.num_basins,md.smb.ma_order); %all zeros is equivalent to MA order 0
+    md.smb.arma_timestep    = 1.0; %yearly ARMA  
+    md.smb.elevationbins    = [300,1000;300,1000]; %elevations separating different lapse rate values [m]
+    md.smb.lapserates       = 1e-2*[0.03,0.01,-1e-4;0.02,0.02,-1e-5]; %lapse rate values [m ice eq. m^-1 yr^-1]
+    md.smb.refelevation     = [500,500]; %elevations at which the SMBarma calculated values apply (i.e., before using lapse rates)
+    
+    % Set-up the covariance matrix
+    sdevSMB1         = 0.01; %low standard deviation in subdomain 1 [m ice eq. yr^-1]
+    sdevSMB2         = 0.2; %higher variability in subdomain 2 [m ice eq. yr^-1]
+    correlationSMB   = [1.0,0.5;0.5,1.0]; %moderate correlation between the subdomains
+    covarianceSMB    = diag([sdevSMB1,sdevSMB2])*correlationSMB*diag([sdevSMB1,sdevSMB2]); %covariance matrix [(m ice eq. yr^-1)^2]
+    
+    % Stochasticforcing implementation
+    md.stochasticforcing.isstochasticforcing = 1; %activate stochasticity
+    md.stochasticforcing.fields              = [{'SMBarma'}];
+    md.stochasticforcing.covariance          = covarianceSMB; %prescribe the SMB covariance
+    md.stochasticforcing.stochastictimestep  = 1.0; %yearly stochasticity
+    
+    save ./Models/PIG_StISSM_StochSMB md;
+    
+end
+
+if any(steps==5) % Transient Run #1 
+
+   md = loadmodel('./Models/PIG_StISSM_StochSMB');
+
+   md.inversion.iscontrol         = 0;
+   md.transient.ismasstransport   = 1;
+   md.transient.isstressbalance   = 1;
+   md.transient.isgroundingline   = 1;
+   md.transient.ismovingfront     = 0;
+   md.transient.isthermal         = 0;
+   md.verbose.solution            = 1;
+   md.timestepping.time_step      = 0.1;
+   md.timestepping.final_time     = 10;
+   md.transient.requested_outputs = {'default','SmbMassBalance','MaskIceLevelset'};
+
+   md        = solve(md,'Transient');
+   timing    = cell2mat({md.results.TransientSolution(:).time});
+   fullsmb   = cell2mat({md.results.TransientSolution(:).SmbMassBalance});
+   timemeansmb = mean(fullsmb,2);
+   timesdevsmb = std(fullsmb,0,2);
+   maxsmb      = max(fullsmb,[],'all');
+   minsmb      = min(fullsmb,[],'all');
+   
+   
+   plotmodel(md,'figure',1,...
+       'data',md.results.TransientSolution(1).SmbMassBalance,'title','SMB at timestep 1','caxis#1',[minsmb,maxsmb],...
+       'data',md.results.TransientSolution(end).SmbMassBalance,'title','SMB at last timestep','caxis#2',[minsmb,maxsmb])
+   plotmodel(md,'figure',2,...
+       'data',timemeansmb,'title','SMB mean over simulation',...
+       'data',timesdevsmb,'title','SMB standard deviation over simulation')
+       
+   seriesSMB1  = fullsmb(1,:);
+   seriesSMB71 = fullsmb(71,:);
+   figure(3);
+   plot(timing,seriesSMB1,'b');
+   hold on
+   plot(timing,seriesSMB71,'r');
+   title('SMB at two different vertices');
+   hold off
+   
+   save ./Models/PIG_StISSM_Transient1 md;
+   
+end
+
+if any(steps==6) % Set up stochastic calving also
+    
+    md = loadmodel('./Models/PIG_StISSM_Transient1');
+
+    md.calving.calvingrate         = 20*ones(md.mesh.numberofvertices,1);
+    md.frontalforcings.meltingrate = zeros(md.mesh.numberofvertices,1);
+    md.levelset.spclevelset        = NaN(md.mesh.numberofvertices,1);
+    md.levelset.migration_max      = 100.0; %avoid too fast advance/retreat of the front
+    md.transient.ismovingfront     = 1;
+    
+    % Parameterize stochastic calving
+    idbasinsCalving = md.smb.basin_id; %same subdomains as for SMB
+    sdevClv1         = 0.5; %low standard deviation in subdomain 1 [m yr^-1]
+    sdevClv2         = 5; %higher variability in subdomain 2 [m yr^-1]
+    correlationClv   = [1.0,0.0;0.0,1.0]; %no correlation between the subdomains
+    covarianceClv    = diag([sdevClv1,sdevClv2])*correlationClv*diag([sdevClv1,sdevClv2]); %covariance matrix [(m yr^-1)^2]
+    
+    % Adjust stochastic forcing class
+    md.stochasticforcing.fields     = [{'SMBarma'},{'DefaultCalving'}];
+    oldcovarianceSMB                = md.stochasticforcing.covariance;
+    covarianceGlobal                = blkdiag(oldcovarianceSMB,covarianceClv); %independence between SMB and calving
+    md.stochasticforcing.covariance = covarianceGlobal;
+    md.stochasticforcing.defaultdimension = md.smb.num_basins; %2 basins for stochastic default (used for calving, same as SMB)
+    md.stochasticforcing.default_id       = idbasinsCalving;
+    
+    save ./Models/PIG_StISSM_StochCalving md;  
+       
+end
+
+if any(steps==7) % Transient Run #2
+
+   md = loadmodel('./Models/PIG_StISSM_StochCalving');
+
+   md.verbose.solution            = 1;
+   md.timestepping.start_time     = md.timestepping.final_time;
+   md.timestepping.time_step      = 0.1;
+   md.timestepping.final_time     = md.timestepping.start_time+5;
+   md.transient.requested_outputs = {'default','SmbMassBalance','CalvingCalvingrate'};
+
+   % Set up initial conditions from previous transient results
+   md.geometry.thickness        = md.results.TransientSolution(end).Thickness;
+   md.initialization.vx         = md.results.TransientSolution(end).Vx;
+   md.initialization.vy         = md.results.TransientSolution(end).Vy;
+   md.initialization.vel        = md.results.TransientSolution(end).Vel;
+   md.mask.ocean_levelset       = md.results.TransientSolution(end).MaskOceanLevelset;
+   md.initialization.pressure   = md.results.TransientSolution(end).Pressure;
+   md.geometry.base             = md.results.TransientSolution(end).Base;
+   md.geometry.surface          = md.results.TransientSolution(end).Surface;
+   md.mask.ice_levelset         = md.results.TransientSolution(end).MaskIceLevelset;   
+   
+   md        = solve(md,'Transient');
+   md        = loadresultsfromcluster(md);
+   timing    = cell2mat({md.results.TransientSolution(:).time});
+   fullsmb   = cell2mat({md.results.TransientSolution(:).SmbMassBalance});
+   fullclv   = cell2mat({md.results.TransientSolution(:).CalvingCalvingrate});
+
+   timemeansmb = mean(fullsmb,2);
+   timesdevsmb = std(fullsmb,0,2);
+   maxsmb      = max(fullsmb,[],'all');
+   minsmb      = min(fullsmb,[],'all');
+   timemeanclv = mean(fullclv,2);
+   timesdevclv = std(fullclv,0,2);
+   maxclv      = max(fullclv,[],'all');
+   minclv      = min(fullclv,[],'all');
+   
+   plotmodel(md,'figure',1,...
+       'data',md.results.TransientSolution(1).SmbMassBalance,'title','SMB at timestep 1','caxis#1',[minsmb,maxsmb],...
+       'data',md.results.TransientSolution(end).SmbMassBalance,'title','SMB at last timestep','caxis#2',[minsmb,maxsmb])
+   plotmodel(md,'figure',2,...
+       'data',timemeansmb,'title','SMB mean over simulation',...
+       'data',timesdevsmb,'title','SMB standard deviation over simulation')
+   plotmodel(md,'figure',3,...
+       'data',timemeanclv,'title','Calving mean over simulation',...
+       'data',timesdevclv,'title','Calving standard deviation over simulation')  
+   
+   seriesSMB1  = fullsmb(1,:);
+   seriesSMB71 = fullsmb(71,:);
+   figure(4);
+   plot(timing,seriesSMB1,'b');
+   hold on
+   plot(timing,seriesSMB71,'r');
+   title('SMB at two different vertices');
+   hold off 
+   
+   seriesclv1  = fullclv(1,:);
+   seriesclv71 = fullclv(71,:);
+   figure(5);
+   plot(timing,seriesclv1,'b');
+   hold on
+   plot(timing,seriesclv71,'r');
+   title('Calving at two different vertices');
+   hold off 
+   
+end
+
+
+
+
+
+
+
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/ErrorContour.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/ErrorContour.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/ErrorContour.exp	(revision 27955)
@@ -0,0 +1,24 @@
+## Name:ErrorContour
+## Icon:0
+# Points Count Value
+18 1.000000
+# X pos Y pos
+-1642090.6657102096 -328038.7002928721
+-1665417.0018035804 -319119.8070807009
+-1681882.6508106657 -304712.3641995014
+-1666103.0705122089 -245710.4552574461
+-1632485.7037894099 -232675.1497935036
+-1616020.0547823247 -224442.3252899610
+-1598182.2683579824 -200429.9204879618
+-1596810.1309407253 -181219.9966463624
+-1615333.9860736963 -160637.9353875059
+-1559762.4206747836 -147602.6299235635
+-1527517.1913692418 -188080.6837326479
+-1566623.1077610692 -218953.7756209326
+-1533691.8097468987 -229244.8062503609
+-1523400.7791174706 -309514.8451599012
+-1533691.8097468987 -350678.9676776142
+-1594751.9248148398 -371261.0289364707
+-1636602.1160411814 -349306.8302603571
+-1642090.6657102096 -328038.7002928721
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux1.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux1.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux1.exp	(revision 27955)
@@ -0,0 +1,22 @@
+## Name:MassFlux1
+## Icon:0
+# Points Count Value
+16 1.000000
+# X pos Y pos
+-1638344.3538415846 -328022.1178486745
+-1636175.0592654669 -328022.1178486745
+-1634647.1933393457 -327710.7373731936
+-1631836.4701132313 -326087.2311287920
+-1629847.9500851235 -324428.7567974643
+-1626413.2336729371 -321756.7703747695
+-1622074.6445207016 -320098.2960434417
+-1618278.3790124957 -319637.6087291840
+-1614210.9516822749 -319729.7461920356
+-1609601.2007080249 -320466.8458948479
+-1604539.5133637502 -322954.5573918396
+-1602370.2187876324 -324613.0317231673
+-1599206.6641974607 -326824.3308316044
+-1595681.5605112694 -327008.6057573075
+-1593150.7168391321 -327653.5679972683
+-1590710.2604409996 -330786.2417342208
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux10.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux10.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux10.exp	(revision 27955)
@@ -0,0 +1,8 @@
+## Name:MassFlux11
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1539536.1089629673 -171232.8272031187
+-1540384.1546699132 -200614.0179257037
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux11.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux11.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux11.exp	(revision 27955)
@@ -0,0 +1,8 @@
+## Name:MassFlux12
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1559431.5986180613 -236969.7272119786
+-1549112.1094185982 -261719.2194756830
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux12.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux12.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux12.exp	(revision 27955)
@@ -0,0 +1,8 @@
+## Name:MassFlux13
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1572656.1032135738 -292391.9615161452
+-1573651.1418990945 -315407.7936937447
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux13.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux13.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux13.exp	(revision 27955)
@@ -0,0 +1,8 @@
+## Name:MassFlux14
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1579674.9916810417 -321516.2892665596
+-1587436.3185859676 -337140.9687259690
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux14.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux14.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux14.exp	(revision 27955)
@@ -0,0 +1,8 @@
+## Name:MassFlux14
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1579674.9916810417 -321516.2892665596
+-1587436.3185859676 -337140.9687259690
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux15.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux15.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux15.exp	(revision 27955)
@@ -0,0 +1,127 @@
+## Name:
+## Icon:0
+# Points Count Value
+121 25000.000000
+# X pos Y pos
+-1712012.0818103175 -348661.1275967784
+-1711738.9446965172 -348380.8584401013
+-1709339.1962288069 -348358.9741029009
+-1707566.1624406802 -348048.0535193763
+-1706142.6423542583 -346463.0619396989
+-1703644.8906504354 -344421.7875470470
+-1701428.0245438961 -343211.6412474416
+-1699098.6802015656 -343202.0651453367
+-1698767.2671226400 -341251.8958583454
+-1694089.8466347910 -339325.0408948531
+-1691249.4280928215 -338644.2293668062
+-1688271.0930389061 -338423.0784381799
+-1686131.0738047434 -339115.2406933784
+-1682853.5065837551 -340300.2702040364
+-1681648.3224467863 -342890.2203795200
+-1681160.5378740367 -343956.3892846339
+-1681343.2453770319 -345059.2736684235
+-1680476.2008784728 -345129.3389066600
+-1679673.6094558411 -346405.5378093903
+-1679898.5797234357 -347818.5803631411
+-1677215.4777375804 -347397.3820658240
+-1674583.5118423651 -349115.8291018623
+-1675803.3920552148 -352985.6713725598
+-1672935.8509424068 -352801.1873251720
+-1668529.5198238282 -353048.3463822120
+-1666370.5689502691 -354473.4893832008
+-1665423.6161039397 -356733.4691418489
+-1662720.0686237188 -357334.8975107344
+-1660276.4961961196 -357869.6209268258
+-1657124.6115999895 -361080.6428832713
+-1655993.6074009922 -363193.2597271361
+-1653688.2093358042 -364017.9494011777
+-1654435.7188006472 -361506.6539926908
+-1652050.9793420888 -355295.4585798742
+-1649364.4081354018 -349945.5944371450
+-1645761.7354861272 -350839.5079576963
+-1645996.5509334437 -351783.7951824765
+-1645345.5744557772 -351250.5634369315
+-1644300.2406060672 -352221.4198542684
+-1644633.1139884400 -348521.7302174515
+-1647057.7191411837 -348406.3266729190
+-1645415.0137059502 -341247.9400814587
+-1644395.7076754270 -340417.8557739360
+-1644169.8943326229 -336477.7151767056
+-1643216.0658811626 -334392.3056475453
+-1641434.0471865973 -334447.2336099123
+-1641190.7738541283 -334332.2252321915
+-1641050.9552025823 -333796.1902735520
+-1639787.1689887117 -331073.8439645328
+-1637807.1154673321 -329711.1825533187
+-1635805.1587214153 -327827.0308139678
+-1632065.9795259857 -326063.4189332099
+-1625929.4636559838 -324999.2470617331
+-1619584.9279456623 -324892.7557348280
+-1615193.9710026928 -325097.1546172730
+-1611296.7956007582 -324995.1262699560
+-1608304.4173934418 -325211.0183405159
+-1603316.9037486394 -326424.5673739603
+-1600245.1111844976 -328836.3685103582
+-1595818.7639296530 -331148.7367850624
+-1591649.1976614639 -334787.7632693424
+-1588371.5600852505 -337840.7799059978
+-1587648.7608976758 -343365.9382903088
+-1587132.8425864622 -345049.3782468919
+-1586012.7810109658 -347625.9740446581
+-1588260.6470941922 -349356.1732009141
+-1584626.3352827206 -352498.3947002917
+-1584121.7278491815 -354575.2387267592
+-1584906.9380743054 -356537.0120279597
+-1585446.5634405916 -359133.6460951389
+-1586894.3150289655 -361098.6217195836
+-1585768.2162689434 -363527.8170254802
+-1584807.6500740163 -365694.8871387623
+-1585744.0045738907 -368358.0113804646
+-1585152.9531241022 -369694.9777909298
+-1584499.3876485692 -371017.3807505022
+-1585456.9434211247 -372944.8898924028
+-1429208.6248950495 -363616.6734221856
+-1415050.5145378630 -326851.1264040734
+-1413047.7406149551 -325411.1419014899
+-1405442.9810691341 -295790.2533492565
+-1388007.7873070226 -266002.2718567938
+-1375120.7873420289 -286146.6923060659
+-1373971.2210923850 -285345.4403176561
+-1346034.9931278315 -322527.8743193840
+-1351274.5360716779 -327267.6902373450
+-1382747.3419384742 -297522.4999399224
+-1382639.2845126297 -296126.1700367680
+-1382479.2357768724 -295804.4343703665
+-1397758.7640077863 -316499.0520702488
+-1408929.4248104726 -362684.2359936420
+-1202573.2098436793 -350320.7957165864
+-1192371.9994205239 -349816.1301302491
+-1233144.4335198263 -292276.3631183850
+-1232225.6096719459 -288608.8406540032
+-1360692.9373680721 -108664.8182541504
+-1424223.8165527256 -81531.7934136631
+-1403445.8481024427 -45960.5859752788
+-1478312.1378749039 59339.3203815984
+-1513118.6444103392 3225.4273728387
+-1524169.2804273698 11860.8708815790
+-1504759.9852699745 36302.7657860445
+-1528911.0294425790 62751.8076344339
+-1622627.2364271644 61937.4929792271
+-1647011.3496706884 32864.6807476235
+-1637527.3859760596 19912.7371761968
+-1650069.2631712460 30042.0704865309
+-1724734.6043381831 -61378.0233897057
+-1718614.9048978437 -69045.3133313945
+-1758091.3164752426 -113926.3236823874
+-1754430.7541207569 -116894.8054778867
+-1760233.4203404333 -126776.6398906443
+-1757170.3120773330 -130521.7753713153
+-1762186.6328915418 -136423.2047200473
+-1765126.7323215308 -132420.4516091067
+-1769785.4415677825 -135199.8713571306
+-1774818.6171028516 -132429.3647437230
+-1793280.1507095622 -153411.6536596067
+-1711636.5537849038 -224740.3773715630
+-1729008.9305659365 -335286.5679692774
+-1712012.0818103175 -348661.1275967784
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux2.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux2.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux2.exp	(revision 27955)
@@ -0,0 +1,171 @@
+## Name:MassFlux2
+## Icon:0
+# Points Count Value
+165 1.000000
+# X pos Y pos
+-1609993.8450579999 -266189.3103270000
+-1609790.4465310001 -265898.8271340000
+-1609587.0480040000 -265608.3439410000
+-1609383.6494770001 -265317.8607480000
+-1609136.7086169999 -265274.3184150000
+-1608933.3100900000 -264983.8352220000
+-1608686.3692300001 -264940.2928890000
+-1608236.0298430000 -264606.2673630000
+-1607989.0889830000 -264562.7250310000
+-1607785.6904559999 -264272.2418380000
+-1607538.7495960000 -264228.6995050000
+-1607291.8087370000 -264185.1571720000
+-1607044.8678770000 -264141.6148390000
+-1606797.9270170000 -264098.0725060000
+-1606304.0452970001 -264010.9878410000
+-1606057.1044369999 -263967.4455080000
+-1605810.1635769999 -263923.9031750000
+-1605563.2227179999 -263880.3608420000
+-1605316.2818580000 -263836.8185100000
+-1605069.3409980000 -263793.2761770000
+-1604778.8578049999 -263996.6747040000
+-1604531.9169449999 -263953.1323710000
+-1604038.0352250000 -263866.0477060000
+-1603791.0943660000 -263822.5053730000
+-1603500.6111730000 -264025.9039000000
+-1603253.6703130000 -263982.3615680000
+-1602963.1871199999 -264185.7600950000
+-1602716.2462599999 -264142.2177620000
+-1602425.7630680001 -264345.6162900000
+-1601888.3390150000 -264505.4724840000
+-1601641.3981550001 -264461.9301510000
+-1601350.9149630000 -264665.3286790000
+-1601060.4317699999 -264868.7272060000
+-1600479.4653840000 -265275.5242610000
+-1600188.9821919999 -265478.9227880000
+-1599898.4989990001 -265682.3213160000
+-1599608.0158060000 -265885.7198430000
+-1599027.0494210001 -266292.5168980000
+-1598736.5662280000 -266495.9154250000
+-1598446.0830349999 -266699.3139520000
+-1598402.5407030000 -266946.2548130000
+-1598605.9392299999 -267236.7380050000
+-1598518.8545639999 -267730.6197260000
+-1598722.2530910000 -268021.1029190000
+-1598678.7107579999 -268268.0437790000
+-1598635.1684250000 -268514.9846390000
+-1598591.6260919999 -268761.9254990000
+-1598795.0246190000 -269052.4086920000
+-1598751.4822869999 -269299.3495520000
+-1598707.9399540001 -269546.2904130000
+-1598620.8552880001 -270040.1721330000
+-1598577.3129550000 -270287.1129930000
+-1598533.7706220001 -270534.0538530000
+-1598737.1691490000 -270824.5370460000
+-1598693.6268170001 -271071.4779060000
+-1598650.0844840000 -271318.4187660000
+-1598606.5421509999 -271565.3596270000
+-1598316.0589580000 -271768.7581540000
+-1598228.9742930001 -272262.6398740000
+-1597938.4911000000 -272466.0384020000
+-1597648.0079069999 -272669.4369290000
+-1597067.0415220000 -273076.2339840000
+-1597023.4991890001 -273323.1748440000
+-1596979.9568560000 -273570.1157040000
+-1596936.4145229999 -273817.0565640000
+-1596892.8721900000 -274063.9974240000
+-1596805.7875250001 -274557.8791450000
+-1596762.2451919999 -274804.8200050000
+-1596718.7028590001 -275051.7608650000
+-1596675.1605260000 -275298.7017250000
+-1596631.6181930001 -275545.6425850000
+-1596341.1350010000 -275749.0411130000
+-1596297.5926679999 -275995.9819730000
+-1595963.5671420000 -276446.3213600000
+-1595920.0248090001 -276693.2622210000
+-1595629.5416170000 -276896.6607480000
+-1595339.0584239999 -277100.0592750000
+-1595048.5752310001 -277303.4578030000
+-1594467.6088459999 -277710.2548570000
+-1594177.1256530001 -277913.6533850000
+-1593886.6424600000 -278117.0519120000
+-1593392.7607410001 -278029.9672470000
+-1593102.2775480000 -278233.3657740000
+-1592898.8790209999 -277942.8825810000
+-1592695.4804940000 -277652.3993880000
+-1592201.5987740001 -277565.3147220000
+-1591998.2002470000 -277274.8315290000
+-1592041.7425800001 -277027.8906690000
+-1591838.3440530000 -276737.4074760000
+-1591881.8863860001 -276490.4666160000
+-1591722.0301910001 -275953.0425630000
+-1591765.5725240000 -275706.1017030000
+-1591562.1739970001 -275415.6185100000
+-1591605.7163300000 -275168.6776500000
+-1591402.3178030001 -274878.1944570000
+-1591198.9192760000 -274587.7112640000
+-1591242.4616090001 -274340.7704040000
+-1591039.0630820000 -274050.2872110000
+-1591082.6054150001 -273803.3463510000
+-1590922.7492209999 -273265.9222970000
+-1590966.2915530000 -273018.9814370000
+-1590762.8930259999 -272728.4982440000
+-1590806.4353590000 -272481.5573840000
+-1590603.0368319999 -272191.0741910000
+-1590399.6383050000 -271900.5909980000
+-1590443.1806379999 -271653.6501380000
+-1590239.7821110000 -271363.1669450000
+-1590036.3835839999 -271072.6837520000
+-1590123.4682499999 -270578.8020320000
+-1589920.0697230001 -270288.3188390000
+-1589716.6711960000 -269997.8356460000
+-1589760.2135280001 -269750.8947860000
+-1589556.8150010000 -269460.4115930000
+-1589600.3573340001 -269213.4707330000
+-1589440.5011400001 -268676.0466800000
+-1589484.0434729999 -268429.1058190000
+-1589280.6449460001 -268138.6226260000
+-1589077.2464190000 -267848.1394340000
+-1588873.8478920001 -267557.6562410000
+-1588423.5085050000 -267223.6307150000
+-1588220.1099779999 -266933.1475220000
+-1587973.1691180000 -266889.6051890000
+-1587726.2282580000 -266846.0628560000
+-1587479.2873980000 -266802.5205230000
+-1586985.4056780001 -266715.4358580000
+-1586738.4648190001 -266671.8935250000
+-1586491.5239589999 -266628.3511920000
+-1586244.5830989999 -266584.8088590000
+-1585997.6422389999 -266541.2665270000
+-1585750.7013790000 -266497.7241940000
+-1585256.8196590000 -266410.6395280000
+-1585009.8787990001 -266367.0971960000
+-1584762.9379400001 -266323.5548630000
+-1584472.4547470000 -266526.9533900000
+-1584428.9124139999 -266773.8942500000
+-1584138.4292210001 -266977.2927780000
+-1583804.4036960001 -267427.6321650000
+-1583760.8613630000 -267674.5730250000
+-1583470.3781699999 -267877.9715530000
+-1583179.8949770001 -268081.3700800000
+-1583136.3526450000 -268328.3109400000
+-1582845.8694519999 -268531.7094680000
+-1582802.3271190000 -268778.6503280000
+-1582468.3015940001 -269228.9897150000
+-1582424.7592610000 -269475.9305750000
+-1582134.2760679999 -269679.3291030000
+-1582090.7337350000 -269926.2699630000
+-1581800.2505419999 -270129.6684900000
+-1581509.7673500001 -270333.0670180000
+-1581219.2841570000 -270536.4655450000
+-1581132.1994910000 -271030.3472650000
+-1580841.7162990000 -271233.7457930000
+-1580551.2331060001 -271437.1443200000
+-1580507.6907730000 -271684.0851800000
+-1580217.2075799999 -271887.4837080000
+-1580173.6652470001 -272134.4245680000
+-1579839.6397220001 -272584.7639550000
+-1579796.0973890000 -272831.7048160000
+-1579505.6141959999 -273035.1033430000
+-1579462.0718640001 -273282.0442030000
+-1579418.5295309999 -273528.9850630000
+-1579128.0463380001 -273732.3835910000
+-1579084.5040050000 -273979.3244510000
+-1578750.4784800000 -274429.6638380000
+-1578706.9361469999 -274676.6046980000
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux3.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux3.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux3.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:MassFlux4
+## Icon:0
+# Points Count Value
+4 1.000000
+# X pos Y pos
+-1605390.0162510793 -209047.7381093690
+-1592454.5133393104 -208141.0538114636
+-1574086.0992045982 -208918.2117810968
+-1560891.8862345938 -210472.5277203633
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux4.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux4.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux4.exp	(revision 27955)
@@ -0,0 +1,8 @@
+## Name:MassFlux5
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1660144.8928561222 -319887.0521198768
+-1630434.8468677206 -298387.4931837295
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux5.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux5.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux5.exp	(revision 27955)
@@ -0,0 +1,8 @@
+## Name:MassFlux6
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1635925.9455644884 -157610.4872330402
+-1625288.0602165582 -120861.2411445094
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux6.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux6.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux6.exp	(revision 27955)
@@ -0,0 +1,8 @@
+## Name:MassFlux7
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1642052.5574172530 -95522.7999921589
+-1610982.9267521810 -78949.7704229522
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux7.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux7.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux7.exp	(revision 27955)
@@ -0,0 +1,8 @@
+## Name:MassFlux8
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1605014.5365509845 -81707.1563440522
+-1566756.1417461073 -82763.2940976564
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux8.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux8.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux8.exp	(revision 27955)
@@ -0,0 +1,8 @@
+## Name:MassFlux9
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1555378.1885604258 -45179.9925785796
+-1550583.9034971579 -68415.0231578706
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux9.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux9.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/MassFluxes/MassFlux9.exp	(revision 27955)
@@ -0,0 +1,8 @@
+## Name:MassFlux10
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+-1565010.6613481115 -111795.8673475993
+-1537474.3225972611 -138442.9656094175
+
Index: /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/UncertaintyQuantification/runme.m	(revision 27955)
@@ -0,0 +1,316 @@
+%PIG Uncertainty Quantification Tutorial
+steps=[1];
+
+if any(steps==1)
+	disp('   Step 1: plot flux gates');
+
+	% NOTE: Need to run all steps of ../Pig/runme.m first!
+	md = loadmodel('../Pig/Models/PIG_Control_drag');
+
+	texts=cell(1,13);
+	textpositions=cell(1,13);
+
+	for i=1:13,
+		contour=expread(['./MassFluxes/MassFlux' num2str(i) '.exp']);
+		textpositions{i}=[contour.x(end) contour.y(end)];
+	end
+	vel=md.results.StressbalanceSolution.Vel; vel(vel==0)=nan;
+	plotmodel(md,'data',vel,'log',10,'expdisp',...
+		{'MassFluxes/MassFlux1.exp','MassFluxes/MassFlux2.exp',...
+		'MassFluxes/MassFlux3.exp','MassFluxes/MassFlux4.exp',...
+		'MassFluxes/MassFlux5.exp','MassFluxes/MassFlux6.exp',...
+		'MassFluxes/MassFlux7.exp','MassFluxes/MassFlux8.exp',...
+		'MassFluxes/MassFlux9.exp','MassFluxes/MassFlux10.exp',...
+		'MassFluxes/MassFlux11.exp','MassFluxes/MassFlux12.exp',...
+		'MassFluxes/MassFlux13.exp'},...
+		'expstyle',{'k-','k-','k-','k-','k-','k-','k-',...
+		'k-','k-','k-','k-','k-','k-'},'linewidth',2,...
+		'text',{'1','2','3','4','5','6','7',...
+		'8','9','10','11','12','13'},...
+		'textposition',textpositions);
+end
+
+if any(steps==2)
+	disp('   Step 2: compute cross overs from CRESIS');
+
+	md = loadmodel('../Pig/Models/PIG_Control_drag');
+
+	%load cross overs: CRESIS McCord Antarctica, 2009 (courtesy of John Paden)
+	load('../Data/CrossOvers2009.mat');
+
+	%interpolate cross over errors over our mesh vertices
+	DeltaHH=InterpFromMeshToMesh2d(index,x,y,dhh,md.mesh.x,md.mesh.y);
+
+	%avoid NaN values
+	pos=find(isnan(DeltaHH)); DeltaHH(pos)=0;
+
+	%filter out unrealistic error ranges
+	flags=ContourToNodes(md.mesh.x,md.mesh.y,'ErrorContour.exp',1);
+	pos=find(~flags); DeltaHH(pos)=0;
+
+	%avoid large unrealistic values
+	pos=find(DeltaHH>1); DeltaHH(pos)=1;
+	pos=find(DeltaHH<-1); DeltaHH(pos)=-1;
+
+	%transform into absolute errors and setup a minimum error everywhere.
+	DeltaHH=abs(DeltaHH);
+	pos=find(DeltaHH==0); pos2=find(DeltaHH~=0);
+	DeltaHH(pos)=min(DeltaHH(pos2));
+
+	save Models/PIG.CrossOvers DeltaHH
+end
+
+if any(steps==3)
+	disp('   Step 3: sampling analysis');
+
+	%load model and cross over errors
+	md = loadmodel('../Pig/Models/PIG_Control_drag');
+	load -mat Models/PIG.CrossOvers
+
+	%partition the mesh
+	npart=50;
+	[partition,md]=partitioner(md,'package','chaco','npart',npart,'weighting','on');
+	partition=partition-1;
+
+	%make DeltaHH into our 3 sigma deviation
+	DeltaHH=DeltaHH/6; %2 (to transform DeltaHH into a radius) x 3 (for 3 sigma)
+	DeltaHH_on_partition=AreaAverageOntoPartition(md,DeltaHH,partition);
+	DeltaHH_on_grids=DeltaHH_on_partition(partition+1); %just to check in case
+
+	md.qmu.variables.thickness=normal_uncertain('descriptor','scaled_Thickness',...
+		'mean',ones(npart,1),...
+		'stddev',DeltaHH_on_partition,...
+		'partition',partition);
+
+	%responses
+	md.qmu.responses.MassFlux1=response_function('descriptor','indexed_MassFlux_1');
+	md.qmu.responses.MassFlux2=response_function('descriptor','indexed_MassFlux_2'); %grounding line
+	md.qmu.responses.MassFlux3=response_function('descriptor','indexed_MassFlux_3');
+	md.qmu.responses.MassFlux4=response_function('descriptor','indexed_MassFlux_4');
+	md.qmu.responses.MassFlux5=response_function('descriptor','indexed_MassFlux_5');
+	md.qmu.responses.MassFlux6=response_function('descriptor','indexed_MassFlux_6');
+	md.qmu.responses.MassFlux7=response_function('descriptor','indexed_MassFlux_7');
+	md.qmu.responses.MassFlux8=response_function('descriptor','indexed_MassFlux_8');
+	md.qmu.responses.MassFlux9=response_function('descriptor','indexed_MassFlux_9');
+	md.qmu.responses.MassFlux10=response_function('descriptor','indexed_MassFlux_10');
+	md.qmu.responses.MassFlux11=response_function('descriptor','indexed_MassFlux_11');
+	md.qmu.responses.MassFlux12=response_function('descriptor','indexed_MassFlux_12');
+	md.qmu.responses.MassFlux13=response_function('descriptor','indexed_MassFlux_13');
+
+	%mass flux profiles
+	md.qmu.mass_flux_profiles={...
+		'MassFlux1.exp',...
+		'MassFlux2.exp',...
+		'MassFlux3.exp',...
+		'MassFlux4.exp',...
+		'MassFlux5.exp',...
+		'MassFlux6.exp',...
+		'MassFlux7.exp',...
+		'MassFlux8.exp',...
+		'MassFlux9.exp',...
+		'MassFlux10.exp',...
+		'MassFlux11.exp',...
+		'MassFlux12.exp',...
+		'MassFlux13.exp'...
+	};
+	md.qmu.mass_flux_profile_directory='./MassFluxes/';
+
+	%sampling analysis
+	md.qmu.method		=dakota_method('nond_samp');
+	md.qmu.method(end)	=dmeth_params_set(...
+		md.qmu.method(end),...
+		'seed',1234,...
+		'samples',30,...
+		'sample_type','lhs'...
+	); %random or lhs
+
+	%a variety of parameters
+	md.qmu.params.direct=true;
+	md.qmu.params.analysis_driver='';
+	md.qmu.params.analysis_components='';
+	md.qmu.params.evaluation_concurrency=1;
+	md.qmu.params.tabular_graphics_data=true;
+
+	md.stressbalance.restol=10^-5; %tighten tolerances for UQ analyses
+
+	%Turn off verbosity
+	md.verbose=verbose(0);
+
+	%Here, we choose to run with 4 processors, 3 for Dakota
+	% while one serves as the master
+	md.cluster=generic('name',oshostname,'np',4);
+
+	%Dakota runs in parallel with a master/slave configuration.
+	% At least 2 CPUs are needed to run the UQ
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=md.cluster.np-1;
+
+	%Turn dakota on
+	md.qmu.isdakota=1; md.inversion.iscontrol=0;
+	md=solve(md,'Stressbalance','overwrite','y');
+
+	save ./Models/PIG.Sampling md;
+end
+
+if any(steps==4)
+	disp('   Step 4: plot partition');
+
+	%load model
+	md = loadmodel('./Models/PIG.Sampling');
+
+	plotmodel(md,'data','mesh','partition',partition,...
+	'linewidth',2, 'axis#all','image','unit','km','colorbar','off',...
+	'title','Partition Edges on ISSM mesh','grid','on');
+end
+
+if any(steps==5)
+	disp('   Step 5: sensitivity analysis');
+
+	%load model
+	md = loadmodel('../Pig/Models/PIG_Control_drag');
+
+	%partition the mesh
+	npart=10;
+	[partition,md]=partitioner(md,'package','chaco','weighting','on');
+	partition=partition-1; %switch partition to c-indexing
+
+	%all types of variables and responses: scaled_Thickness, indexed_MassFlux_i,MaxVel,nodal_DragCoefficient_i. scaled variables are expanded.
+
+	%variables
+	md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient',...
+		'mean',ones(npart,1),...
+		'stddev',0.05*ones(npart,1),...
+		'partition',partition);
+	md.qmu.variables.rheology_B=normal_uncertain('descriptor','scaled_MaterialsRheologyB',...
+		'mean',ones(npart,1),...
+		'stddev',0.05*ones(npart,1),...
+		'partition',partition);
+	md.qmu.variables.thickness=normal_uncertain('descriptor','scaled_Thickness',...
+		'mean',ones(npart,1),...
+		'stddev',0.05*ones(npart,1),...
+		'partition',partition);
+
+	%responses
+	md.qmu.responses.MassFlux1=response_function('descriptor','indexed_MassFlux_1');
+	md.qmu.responses.MassFlux2=response_function('descriptor','indexed_MassFlux_2');
+	md.qmu.responses.MassFlux3=response_function('descriptor','indexed_MassFlux_3');
+	md.qmu.responses.MassFlux4=response_function('descriptor','indexed_MassFlux_4');
+	md.qmu.responses.MassFlux5=response_function('descriptor','indexed_MassFlux_5');
+	md.qmu.responses.MassFlux6=response_function('descriptor','indexed_MassFlux_6');
+	md.qmu.responses.MassFlux7=response_function('descriptor','indexed_MassFlux_7');
+	md.qmu.responses.MassFlux8=response_function('descriptor','indexed_MassFlux_8');
+	md.qmu.responses.MassFlux9=response_function('descriptor','indexed_MassFlux_9');
+	md.qmu.responses.MassFlux10=response_function('descriptor','indexed_MassFlux_10');
+	md.qmu.responses.MassFlux11=response_function('descriptor','indexed_MassFlux_11');
+	md.qmu.responses.MassFlux12=response_function('descriptor','indexed_MassFlux_12');
+	md.qmu.responses.MassFlux13=response_function('descriptor','indexed_MassFlux_13');
+
+	%mass flux profiles
+	md.qmu.mass_flux_profiles={...
+		'MassFlux1.exp',...
+		'MassFlux2.exp',...
+		'MassFlux3.exp',...
+		'MassFlux4.exp',...
+		'MassFlux5.exp',...
+		'MassFlux6.exp',...
+		'MassFlux7.exp',...
+		'MassFlux8.exp',...
+		'MassFlux9.exp',...
+		'MassFlux10.exp',...
+		'MassFlux11.exp',...
+		'MassFlux12.exp',...
+		'MassFlux13.exp'...
+	};
+	md.qmu.mass_flux_profile_directory='./MassFluxes/';
+
+	%method: local reliability
+	md.qmu.method     =dakota_method('nond_l');
+	md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+	'output','quiet');
+
+	%parameters
+	md.qmu.params.direct=true;
+	md.qmu.params.analysis_driver='';
+	md.qmu.params.analysis_components='';
+	md.qmu.params.evaluation_concurrency=1;
+	md.qmu.params.tabular_graphics_data=false;
+
+	md.stressbalance.restol=10^-5; %tighten for qmu analyses
+
+	%Here, we choose to run with 2 processors, 1 for Dakota
+	% while one serves as the master
+	md.cluster=generic('name',oshostname,'np',2);
+
+	%Dakota runs in parallel with a master/slave configuration.
+	% At least 2 CPUs are needed to run the UQ
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=md.cluster.np-1;
+
+	%Clear results and turn dakota on
+	md.results=[];
+	md.qmu.isdakota=1; md.inversion.iscontrol=0;
+	md.verbose=verbose('qmu',true);
+	md=solve(md,'Stressbalance','overwrite','y');
+
+	save ./Models/PIG.Sensitivity md;
+end
+
+if any(steps==6)
+	disp('   Step 6: plot histogram');
+
+	%load model
+	md = loadmodel('./Models/PIG.Sampling');
+
+	%which profile are we looking at?
+	index=1;
+
+	%retrieve results for the specific profile, mass flux in m^3 water equiv/s
+	result=md.results.dakota.dresp_dat(npart+index);
+	result.sample=result.sample/1e12*60*60*24*365;
+
+	%plot histogram
+	plot_hist_norm(result,'cdfleg','off','cdfplt','off','nrmplt','off',...
+	'xlabelplt','M (Gt/yr)','ylabelplt','F','FontSize',8,'FaceColor',...
+	'none','EdgeColor','red');
+end
+
+if any(steps==7)
+	disp('   Step 7: plot sensitivity');
+
+	%load model
+	md = loadmodel('./Models/PIG.Sensitivity');
+	%copy dakota results into model qmu
+	md.qmu.results=md.results.dakota;
+
+	%which profile are we looking at?
+	index=1;
+
+	%To plot sensitivities
+	sa=md.results.dakota.dresp_out(index).sens(1:10); sa=sa(partition+1)/1e12*60*60*24*365;
+	sb=md.results.dakota.dresp_out(index).sens(11:20); sb=sb(partition+1)/1e12*60*60*24*365;
+	sh=md.results.dakota.dresp_out(index).sens(21:30); sh=sh(partition+1)/1e12*60*60*24*365;
+
+	plotmodel(md,'data',sh,'data',sa,'data',sb,'expdisp#all',...
+		['MassFluxes/MassFlux' num2str(index) '.exp'],...
+		'expstyle#all','b-','linewidth#all',2,...
+		'nlines',3,'ncols',1, 'axis#all','image',...
+		'caxis#1',[0 150],'caxis#2',[-20 0],'caxis#3',[-25 0],...
+		'colorbar#all','on','colorbarfontsize#all',10,...
+		'colorbartitle#1','S_{H}', 'colorbartitle#2','S_{\alpha}',...
+		'colorbartitle#3','S_{B}','unit#all','km','figure',1,...
+		'title','Sensitivities: H, \alpha, B');
+
+	%To plot importance factors
+	ifa=importancefactors(md,'scaled_FrictionCoefficient',['indexed_MassFlux_' num2str(index)],partition);
+	ifb=importancefactors(md,'scaled_MaterialsRheologyB',['indexed_MassFlux_' num2str(index)],partition);
+	ifh=importancefactors(md,'scaled_Thickness',['indexed_MassFlux_' num2str(index)],partition);
+
+	plotmodel(md,'data',ifh,'data',ifa,'data',ifb,'expdisp#all',...
+		['MassFluxes/MassFlux' num2str(index) '.exp'],...
+		'expstyle#all','b-','linewidth#all',2,'log#all',10,...
+		'nlines',3,'ncols',1, 'axis#all','image','caxis#all',[1e-10 1],...
+		'colorbar#all','on','colorbarfontsize#all',10,...
+		'colorbartitle#1','If_{H}', 'colorbartitle#2','If_{\alpha}',...
+		'colorbartitle#3','If_{B}','unit#all','km','figure',2,...
+		'title','Importance Factors: H, \alpha, B');
+end
Index: /issm/branches/trunk-dlcheng-ASE/examples/shakti/moulin.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/shakti/moulin.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/shakti/moulin.par	(revision 27955)
@@ -0,0 +1,44 @@
+%Start defining model parameters here
+
+% Set up bed topography and ice geometry for a tilted 500m thick slab
+md.geometry.base = .02*md.mesh.x;
+md.geometry.bed = md.geometry.base;
+md.geometry.surface = .02*md.mesh.x + 500;
+md.geometry.thickness = md.geometry.surface - md.geometry.bed;
+
+% Define ice sliding velocity (m/yr) 
+md.initialization.vx = 10^-6*md.constants.yts*ones(md.mesh.numberofvertices,1);
+md.initialization.vy = zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+% Materials
+% Ice flow law parameter (note that the standard parameter A=B^(-3))
+md.materials.rheology_B= (5e-25)^(-1/3)*ones(md.mesh.numberofvertices,1);
+md.initialization.temperature=(273)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+%Calving
+md.calving.calvingrate=zeros(md.mesh.numberofvertices,1);
+%md.calving.spclevelset=NaN(md.mesh.numberofvertices,1);
+
+% Friction law and coefficient
+md.friction=frictionshakti(md.friction);
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+
+%Numerical parameters
+%md.stressbalance.viscosity_overshoot=0.0;
+md.masstransport.stabilization=1.;
+md.thermal.stabilization=1.;
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.stressbalance.restol=0.05;
+md.steadystate.reltol=0.05;
+md.stressbalance.reltol=0.05;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=1.;
+md.timestepping.final_time=3.;
+
+%Boundary conditions:
+md=SetIceSheetBC(md);
Index: /issm/branches/trunk-dlcheng-ASE/examples/shakti/moulin.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/shakti/moulin.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/shakti/moulin.py	(revision 27955)
@@ -0,0 +1,57 @@
+import numpy as np
+from SetIceSheetBC import SetIceSheetBC
+from frictionshakti import frictionshakti
+from verbose import verbose
+
+#Start defining model parameters here
+# Set up bed topography and ice geometry for a tilted 500m thick slab
+md.geometry.base = .02 * md.mesh.x
+md.geometry.bed = md.geometry.base
+md.geometry.surface = .02 * md.mesh.x + 500
+md.geometry.thickness = md.geometry.surface - md.geometry.bed
+
+# Define ice sliding velocity (m / yr)
+md.initialization.vx = 1.0e-6 * md.constants.yts * np.ones(md.mesh.numberofvertices)
+md.initialization.vy = np.zeros(md.mesh.numberofvertices)
+md.initialization.pressure = np.zeros(md.mesh.numberofvertices)
+
+# Materials
+# Ice flow law parameter (note that the standard parameter A = B^(- 3))
+md.materials.rheology_B = 5e-25**(-1. / 3.) * np.ones(md.mesh.numberofvertices)
+md.initialization.temperature = 273. * np.ones(md.mesh.numberofvertices)
+md.materials.rheology_n = 3. * np.ones(md.mesh.numberofelements)
+
+#Calving
+md.calving.calvingrate = np.zeros(md.mesh.numberofvertices)
+#md.calving.spclevelset = NaN(md.mesh.numberofvertices, 1)
+
+# Friction law and coefficient
+md.friction = frictionshakti(md)
+md.friction.coefficient = 20. * np.ones(md.mesh.numberofvertices)
+
+#Numerical parameters
+#md.stressbalance.viscosity_overshoot = 0.0
+md.masstransport.stabilization = 1.
+md.thermal.stabilization = 1.
+md.verbose = verbose(0)
+md.settings.waitonlock = 30
+md.stressbalance.restol = 0.05
+md.steadystate.reltol = 0.05
+md.stressbalance.reltol = 0.05
+md.stressbalance.abstol = np.nan
+md.timestepping.time_step = 1.
+md.timestepping.final_time = 3.
+
+#GIA:
+md.gia.lithosphere_thickness = 100. * np.ones(md.mesh.numberofvertices)  # in km
+md.gia.mantle_viscosity = 1.0e21 * np.ones(md.mesh.numberofvertices)  # in Pa.s
+md.materials.lithosphere_shear_modulus = 6.7e10   # in Pa
+md.materials.lithosphere_density = 3.32   # in g / cm^ - 3
+md.materials.mantle_shear_modulus = 1.45e11  # in Pa
+md.materials.mantle_density = 3.34      # in g / cm^ - 3
+
+#Boundary conditions:
+md = SetIceSheetBC(md)
+
+#Change name so that no test have the same name
+md.private.runtimename = True
Index: /issm/branches/trunk-dlcheng-ASE/examples/shakti/outline.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/shakti/outline.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/shakti/outline.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:DomainOutline
+## Icon:0
+# Points Count  Value
+5 1.000000
+# X pos Y pos
+0 0
+1000 0
+1000 1000
+0 1000
+0 0
Index: /issm/branches/trunk-dlcheng-ASE/examples/shakti/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/shakti/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/shakti/runme.m	(revision 27955)
@@ -0,0 +1,84 @@
+steps=[1:3];
+
+if any(steps==1) 
+	disp('	Step 1: Mesh');
+
+	%Generate unstructured mesh on 1,000 m square with typical element edge length of 20 m
+	md=triangle(model,'./outline.exp',20);
+
+	save MoulinMesh md
+end 
+
+if any(steps==2) 
+	disp('	Step 2: Parameterization');
+	md=loadmodel('MoulinMesh');
+
+	md=setmask(md,'','');
+
+	% Run parameterization script to set up geometry, velocity, material properties, etc.
+	md=parameterize(md,'moulin.par');
+
+	% HYDROLOGY SPECIFIC PARAMETERIZATION:
+	% Change hydrology class to Sommers' SHaKTI model
+	md.hydrology=hydrologyshakti();
+
+	% Define initial water head such that water pressure is 50% of ice overburden pressure
+	md.hydrology.head = 0.5*md.materials.rho_ice/md.materials.rho_freshwater*md.geometry.thickness + md.geometry.base;
+
+	% Initial subglacial gap height of 0.01m everywhere
+	md.hydrology.gap_height = 0.01*ones(md.mesh.numberofelements,1);
+
+	% Typical bed bump bump spacing (2m)
+	md.hydrology.bump_spacing = 2*ones(md.mesh.numberofelements,1);
+
+	% Typical bed bump height (0.1m)
+	md.hydrology.bump_height = 0.1*ones(md.mesh.numberofelements,1);
+
+	% Define distributed englacial input to the subglacial system (m/yr)
+	% Change the value 0.0 to add distributed input
+	md.hydrology.englacial_input = 0.0*ones(md.mesh.numberofvertices,1);
+
+	% Initial Reynolds number (start at Re=1000 everywhere)
+	md.hydrology.reynolds= 1000*ones(md.mesh.numberofelements,1);
+
+	% Set up atmospheric pressure Type I boundary condition at left edge of
+	% domain (outflow, i.e. h=zb at x=xmin)
+	md.hydrology.spchead = NaN(md.mesh.numberofvertices,1);
+	pos=find(md.mesh.vertexonboundary & md.mesh.x==min(md.mesh.x));
+	md.hydrology.spchead(pos)=md.geometry.base(pos);
+
+	save MoulinParam md;
+end 
+
+if any(steps==3) 
+	disp('	Step 3: Solve!');
+	md=loadmodel('MoulinParam');
+
+	md.transient=deactivateall(md.transient);
+	md.transient.ishydrology=1;
+
+	% Specify that you want to run the model on your current computer
+	% Change the number of processors according to your machine (here np=4)
+	md.cluster=generic('np',2);
+
+	% Define the time stepping scheme: run for 90 days with a time step of 1 hr
+	md.timestepping.time_step=3600/md.constants.yts; % Time step (in years)
+	md.timestepping.final_time=30/365;
+
+	%Add one moulin with steady input at x=500, y=500
+	[a,pos] = min(sqrt((md.mesh.x-500).^2+(md.mesh.y-500).^2));
+	time=0:md.timestepping.time_step:md.timestepping.final_time;
+	md.hydrology.moulin_input = zeros(md.mesh.numberofvertices+1,numel(time));
+	md.hydrology.moulin_input(end,:)=time;
+	md.hydrology.moulin_input(pos,:)=4;
+
+	% Specify no-flux Type 2 boundary conditions on all edges (except
+	% the Type 1 condition set at the outflow above)
+	md.hydrology.neumannflux=zeros(md.mesh.numberofelements+1,numel(time));
+	md.hydrology.neumannflux(end,:)=time;
+
+	md.verbose.solution=1;
+	md=solve(md,'Transient');
+
+	save MoulinTransient md
+end 
Index: /issm/branches/trunk-dlcheng-ASE/examples/shakti/runme.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/examples/shakti/runme.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/examples/shakti/runme.py	(revision 27955)
@@ -0,0 +1,91 @@
+import numpy as np
+from model import *
+from solve import solve
+from hydrologyshakti import hydrologyshakti
+from parameterize import parameterize
+from export_netCDF import export_netCDF
+from transient import transient
+from setmask import setmask
+from triangle import triangle
+
+
+steps = [1, 2, 3]
+
+if 1 in steps:
+    print('    Step 1: Mesh')
+    #Generate unstructured mesh on 1, 000 m square with typical element edge length of 20 m
+    md = triangle(model(), './outline.exp', 20)
+    export_netCDF(md, 'MoulinMesh.nc')
+
+
+if 2 in steps:
+    print('    Step 2: Parameterization')
+    md = loadmodel('MoulinMesh.nc')
+    md = setmask(md, '', '')
+
+    # Run parameterization script to set up geometry, velocity, material properties, etc.
+    md = parameterize(md, 'moulin.py')
+
+    # HYDROLOGY SPECIFIC PARAMETERIZATION:
+    # Change hydrology class to Sommers' SHaKTI model
+    md.hydrology = hydrologyshakti()
+
+    # Define initial water head such that water pressure is 50% of ice overburden pressure
+    md.hydrology.head = 0.5 * md.materials.rho_ice / md.materials.rho_freshwater * md.geometry.thickness + md.geometry.base
+
+    # Initial subglacial gap height of 0.01m everywhere
+    md.hydrology.gap_height = 0.01 * np.ones(md.mesh.numberofelements)
+
+    # Typical bed bump bump spacing (2m)
+    md.hydrology.bump_spacing = 2 * np.ones(md.mesh.numberofelements)
+
+    # Typical bed bump height (0.1m)
+    md.hydrology.bump_height = 0.1 * np.ones(md.mesh.numberofelements)
+
+    # Define distributed englacial input to the subglacial system (m / yr)
+    # Change the value 0.0 to add distributed input
+    md.hydrology.englacial_input = 0.0 * np.ones(md.mesh.numberofvertices)
+
+    # Initial Reynolds number (start at Re = 1000 everywhere)
+    md.hydrology.reynolds = 1000. * np.ones(md.mesh.numberofelements)
+
+    # Set up atmospheric pressure Type I boundary condition at left edge of
+    # domain (outflow, i.e. h = zb at x = xmin)
+    md.hydrology.spchead = np.nan * np.ones(md.mesh.numberofvertices)
+    pos = np.where(np.logical_and(md.mesh.vertexonboundary, md.mesh.x == np.nanmin(md.mesh.x)))
+    md.hydrology.spchead[pos] = md.geometry.base[pos]
+
+    export_netCDF(md, 'MoulinParam.nc')
+
+if 3 in steps:
+    print('    Step 3: Solve!')
+    md = loadmodel('MoulinParam.nc')
+
+    md.transient = transient.deactivateall(md.transient)
+    md.transient.ishydrology = 1
+
+    # Specify that you want to run the model on your current computer
+    # Change the number of processors according to your machine (here np = 4)
+    md.cluster = generic('np', 2)
+
+    # Define the time stepping scheme: run for 90 days with a time step of 1 hr
+    md.timestepping.time_step = 3600. / md.constants.yts  # Time step (in years)
+    md.timestepping.final_time = 30. / 365.
+
+    #Add one moulin with steady input at x = 500, y = 500
+    DistToCenter = np.sqrt((md.mesh.x - 500)**2 + (md.mesh.y - 500)**2)
+    loc = np.where(np.nanmin(DistToCenter) == DistToCenter)
+    time = np.arange(0, md.timestepping.final_time + md.timestepping.time_step, md.timestepping.time_step)
+    md.hydrology.moulin_input = np.zeros((md.mesh.numberofvertices, len(time)))
+    md.hydrology.moulin_input = np.vstack((md.hydrology.moulin_input, time))
+    md.hydrology.moulin_input[loc, :] = 4
+
+    # Specify no - flux Type 2 boundary conditions on all edges (except
+    # the Type 1 condition set at the outflow above)
+    md.hydrology.neumannflux = np.zeros((md.mesh.numberofelements, len(time)))
+    md.hydrology.neumannflux = np.vstack((md.hydrology.neumannflux, time))
+
+    md.verbose.solution = 1
+    md = solve(md, 'Transient')
+
+    export_netCDF(md, 'MoulinTransient.nc')
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/adic/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/adic/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/adic/install.sh	(revision 27955)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+#Erase install
+rm -rf source build install
+
+#Download code
+hg clone http://mercurial.mcs.anl.gov/ad/ADIC -r 631 source
+
+#Then update to -r 631
+cd source 
+hg update -r 631
+
+#Configure and Compile
+cd source
+./autogen.sh
+./aclocal
+cd ..
+mkdir build
+cd build
+../source/configure \
+	--with-rose=$ISSM_DIR/externalpackages/rose/install \
+	--with-openanalysis=$ISSM_DIR/externalpackages/openanalysis/openanalysis/x86_64-Linux \
+	--with-boost=$ISSM_DIR/externalpackages/boost/install \
+	--with-xerces=$ISSM_DIR/externalpackages/xerces/src \
+	--with-xaifbooster=$ISSM_DIR/externalpackages/xaifbooster/xaifBooster \
+	--with-colpack=$ISSM_DIR/externalpackages/colpack/install\
+	--prefix=$ISSM_DIR/externalpackages/adic/install 
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/adic/tests/notes
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/adic/tests/notes	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/adic/tests/notes	(revision 27955)
@@ -0,0 +1,143 @@
+mini1.c is:
+7:37 PM
+#include <math.h>
+
+void mini1(double *y, double *x)
+{
+ int i;
+  for (i = 0; i < 2; i=i+1) {
+    y[i] = x[i] + sin(x[i]*x[i]);
+	 }
+	 }
+	 Eric Larour 7:37 PM 
+	 ok
+	 Sri Hari Krishna Narayanan 7:37 PM 
+	 If you cat any of  mini1_grad_length.ad.c mini1_dense_forward.ad.c mini1_sparse_forward.ad.c
+	 7:37 PM
+	 You should be able to see the forward mode output
+	 Eric Larour 7:38 PM 
+	 ok
+	 Sri Hari Krishna Narayanan 7:38 PM 
+	 First the makefile compiles mini1_grad_length.ad.c with a runtime library to estimate the number of columns in the Jacobian.
+	 Eric Larour 7:39 PM 
+	 ok, makes sense
+	 Sri Hari Krishna Narayanan 7:39 PM 
+	 That generates the output : ADIC_GRADVEC_LENGTH 2
+	 Eric Larour 7:39 PM 
+	 where?
+	 7:39 PM
+	 ok, sorry, got it
+	 Sri Hari Krishna Narayanan 7:40 PM 
+	 The value is also written to : runtime_dense/adic_gradvec_length.h
+	 Eric Larour 7:40 PM 
+	 where is the main for this?
+	 7:40 PM
+	 oh, it creates a .h directly
+	 Sri Hari Krishna Narayanan 7:40 PM 
+	 mini1_driver.c
+	 7:40 PM
+	 yes.
+	 7:40 PM
+	 The runtime library takes care of that
+	 7:40 PM
+	 There is alot or #defined compilation going on
+	 Eric Larour 7:41 PM 
+	 wraps around mini1_forward_array.exe ?
+	 Sri Hari Krishna Narayanan 7:41 PM 
+	 /*intermediary: */ creates mini1_grad_length.exe
+	 Eric Larour 7:41 PM 
+	 Isn't that the Makefile? what is the runtime library ?
+	 7:42 PM
+	 ok, the Makefile launches the runtime library
+	 Sri Hari Krishna Narayanan 7:42 PM 
+	 Makefile copies versions of the runtime library (bunch of macros in most cases)
+	 Eric Larour 7:42 PM 
+	 what is the name of the runtime library?
+	 Sri Hari Krishna Narayanan 7:43 PM 
+	 form $adicsrc/runtime/
+	 7:43 PM
+	 There are multiple versions
+	 Eric Larour 7:44 PM 
+	 ah, I see the grad_length dir
+	 7:44 PM
+	 is all that stuff compiled into adic2?
+	 Sri Hari Krishna Narayanan 7:44 PM 
+	 The one used to estimate the grad_lengh is :  $adicinstall/grad_length
+	 7:44 PM
+	 yes
+	 Eric Larour 7:44 PM 
+	 ok, makes sense
+	 Sri Hari Krishna Narayanan 7:45 PM 
+	 For the next step though
+	 7:45 PM
+	 the 'dense' case
+	 7:45 PM
+	 the runtime library cannot be precompiled
+	 7:45 PM
+	 the .h file has been created in the previous step
+	 7:46 PM
+	 So we copy the runtime/dense to the local directory
+	 Eric Larour 7:46 PM 
+	 because we can't guess the size of the gradient right?
+	 Sri Hari Krishna Narayanan 7:46 PM 
+	 and copy the .h into it
+	 7:46 PM
+	 correct
+	 Eric Larour 7:46 PM 
+	 nice
+	 Sri Hari Krishna Narayanan 7:46 PM 
+	 Then we compile it and create a .la file
+	 7:46 PM
+	 which is then linked to create mini1_dense_forward.exe
+	 7:47 PM
+	 When we run this, it also happens to run the analyticla derivates (the driver is built this way)
+	 7:47 PM
+	 Also diveded differences
+	 7:47 PM
+	 So you get the output:
+	 7:47 PM
+	 Analytic result is:       [1.968912]
+	 Analytic result is:     [1.968912]  
+	 DD result is:           [1.968997]      error {-8.45e-05}
+	 DD result is:           [1.968997]      error {-8.45e-05}
+	 AD result is:           [1.968912]      error {0.000000}
+	 AD result is:           [1.968912]      error {0.000000}
+	 7:48 PM
+	 The next step is to detect sparsity in the Jacobian and possibly compress it using Colpack (create a seed matrix).
+	 7:49 PM
+	 The gradient computation takes place on the compressed matrix.
+	 7:49 PM
+	 The output : ADIC_GRADVEC_LENGTH 1
+	 7:49 PM
+	 means that the seed matrix  has one column.
+	 7:50 PM
+	 After the calculation of the elements of the compressed matrix, it is then extracted to form the 'full Jacobian' (sorry if these tems are inexact).
+	 7:51 PM
+	 The extracted output is then printed out:
+	 7:51 PM
+	 AD result is:           [1.968912]
+	 AD result is:           [1.968912]
+	 7:51 PM
+	 And we are done!
+	 Eric Larour 7:51 PM 
+	 This is a lot for me to take in at once  I'm going to have to look through the makefile,
+	 7:51 PM
+	 and your explanations, and figure it out
+	 Sri Hari Krishna Narayanan 7:51 PM 
+	 Sure.
+	 Eric Larour 7:52 PM 
+	 I'll get back to you as soon as I have injested all of this
+	 Sri Hari Krishna Narayanan 7:52 PM 
+	 No problem.
+	 Eric Larour 7:52 PM 
+	 I'll probably have a million questions 
+	 Sri Hari Krishna Narayanan 7:52 PM 
+	 This is an exhaustive test
+	 7:52 PM
+	 FOr m ost purposes, we wil not need all of this
+	 Eric Larour 7:52 PM 
+	 this is really nice, I'm pretty exited !
+	 Sri Hari Krishna Narayanan 7:52 PM 
+	 Jean belives for example the the grad_length version is pointless. I find it interesting though.
+	 7:53 PM
+	 Okay. There are more interesting examples we can try
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/adjoinablempi/install-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/adjoinablempi/install-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/adjoinablempi/install-linux.sh	(revision 27955)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+
+# Cleanup
+rm -rf install src
+mkdir install
+
+# Download source
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/adjoinablempi.tar.gz" "adjoinablempi.tar.gz"
+
+# Unpack source
+tar -zxvf adjoinablempi.tar.gz
+
+# Configure
+cd src
+./configure \
+	--prefix="${ISSM_DIR}/externalpackages/adjoinablempi/install" \
+	--libdir="${ISSM_DIR}/externalpackages/adjoinablempi/install/lib" \
+	--with-mpi-root="${ISSM_DIR}/externalpackages/petsc/install" \
+	--enable-requestOnTrace
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/adjoinablempi/install-mac.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/adjoinablempi/install-mac.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/adjoinablempi/install-mac.sh	(revision 27955)
@@ -0,0 +1,40 @@
+#!/bin/bash
+set -eu
+
+
+## Environment
+#
+#export CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc:/usr/include # If path to malloc is not included in shell configuration files, export it here after verifying that the path is correct.
+export CFLAGS=-Wno-error=implicit-function-declaration
+
+# Cleanup
+rm -rf install src
+mkdir install src
+
+# Download source
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/adjoinablempi.tar.gz" "adjoinablempi.tar.gz"
+
+# Unpack source
+tar -zxvf adjoinablempi.tar.gz
+
+# Configure
+cd src
+./configure \
+	--prefix="${ISSM_DIR}/externalpackages/adjoinablempi/install" \
+	--libdir="${ISSM_DIR}/externalpackages/adjoinablempi/install/lib" \
+	--disable-dependency-tracking \
+	--with-mpi-root="${ISSM_DIR}/externalpackages/petsc/install" \
+	--enable-requestOnTrace
+
+# Clean
+make clean
+
+# Compile
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+
+# Install
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/adjoinablempi/install-pleaides-gcc.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/adjoinablempi/install-pleaides-gcc.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/adjoinablempi/install-pleaides-gcc.sh	(revision 27955)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src  install
+
+# Keeping this for potential future use
+#Mercurial cloning: 
+#hg clone -r 268 http://mercurial.mcs.anl.gov//ad/AdjoinableMPI src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/adjoinablempi.tar.gz' 'adjoinablempi.tar.gz'
+
+#Untar ADOL-C
+tar -zxf  adjoinablempi.tar.gz
+
+#Configure adjoinablempi
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/adjoinablempi/install" \
+	--libdir="$ISSM_DIR/externalpackages/adjoinablempi/install/lib" \
+	--with-mpi-root="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-requestOnTrace CFLAGS="-g -O0"
+
+#Compile adjoinablempi 
+make clean
+if [ $# -eq 0 ]; then
+	make 
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/adjoinablempi/install-pleaides.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/adjoinablempi/install-pleaides.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/adjoinablempi/install-pleaides.sh	(revision 27955)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src  install
+
+# Keeping this for potential future use
+#Mercurial cloning: 
+#hg clone -r 268 http://mercurial.mcs.anl.gov//ad/AdjoinableMPI src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/adjoinablempi.tar.gz' 'adjoinablempi.tar.gz'
+
+#Untar ADOL-C
+tar -zxf  adjoinablempi.tar.gz
+
+#Configure adjoinablempi
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/adjoinablempi/install" \
+	--libdir="$ISSM_DIR/externalpackages/adjoinablempi/install/lib" \
+	--with-mpi-root="/nasa/sgi/mpt/2.06rp16/" \
+	--enable-requestOnTrace
+
+#Compile adjoinablempi 
+make clean
+if [ $# -eq 0 ]; then
+	make 
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/adjointmpi/install-pleiades.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/adjointmpi/install-pleiades.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/adjointmpi/install-pleiades.sh	(revision 27955)
@@ -0,0 +1,25 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+
+#Almost the same as adjoinable mpi but some adaptations to CoDiPack 
+svn co https://github.com/michel2323/AdjointMPI.git/branches/doubleFixMaster src
+mkdir install
+
+cd src
+autoreconf -fi
+ ./configure \
+	 --prefix="$ISSM_DIR/externalpackages/adjointmpi/install" \
+	 --with-mpi-root="/nasa/sgi/mpt/2.15r20/" \
+	 CXXFLAGS="-O2 -fPIC" CFLAGS="-O2 -fPIC" 
+
+#Compile adjoinablempi 
+make clean
+if [ $# -eq 0 ]; then
+	make 
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/adjointmpi/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/adjointmpi/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/adjointmpi/install.sh	(revision 27955)
@@ -0,0 +1,25 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+
+#Almost the same as adjoinable mpi but some adaptations to CoDiPack 
+svn co https://github.com/michel2323/AdjointMPI.git/branches/doubleFixMaster src
+mkdir install
+
+cd src
+autoreconf -fi
+ ./configure \
+	 --prefix="$ISSM_DIR/externalpackages/adjointmpi/install" \
+	 --with-mpi-root="$ISSM_DIR/externalpackages/mpich/install" \
+	 CXXFLAGS="-O2 -fPIC" CFLAGS="-O2 -fPIC" 
+
+#Compile adjoinablempi 
+make clean
+if [ $# -eq 0 ]; then
+	make 
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/install-mac-with_ampi.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/install-mac-with_ampi.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/install-mac-with_ampi.sh	(revision 27955)
@@ -0,0 +1,38 @@
+#!/bin/bash
+set -eu
+
+
+## Environment
+#
+export CFLAGS="-O2 -L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi"
+export CXXFLAGS="-O2 -L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi"
+
+# Cleanup
+rm -rf install src
+mkdir install src
+
+# Download source
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/ADOL-C.tar.gz" "ADOL-C.tar.gz"
+
+# Unpack source
+tar -zxvf ADOL-C.tar.gz
+
+# Configure
+cd src
+./configure \
+	--prefix="${ISSM_DIR}/externalpackages/adolc/install" \
+	--libdir="${ISSM_DIR}/externalpackages/adolc/install/lib" \
+	--with-mpi-root="${ISSM_DIR}/externalpackages/petsc/install" \
+	--enable-ampi \
+	--with-ampi="${ISSM_DIR}/externalpackages/adjoinablempi/install" \
+	--with-soname=adolc \
+	--disable-tapedoc-values
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make V=1
+	make V=1 install
+else
+	make V=1 -j $1
+	make V=1 install -j $1
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/install-with_ampi.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/install-with_ampi.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/install-with_ampi.sh	(revision 27955)
@@ -0,0 +1,45 @@
+#!/bin/bash
+set -eu
+
+
+# Keeping the following commented line for potential future use.
+#git clone https://gitlab.com/adol-c/adol-c.git src
+
+## Environment
+#
+export CFLAGS="-O2 -L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi"
+export CXXFLAGS="-O2 -std=c++11 -L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi"
+
+# Cleanup
+rm -rf install src
+mkdir install src
+
+# Download source
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/ADOL-C.tar.gz" "ADOL-C.tar.gz"
+
+# Unpack source
+tar -zxvf ADOL-C.tar.gz
+
+# Configure
+cd src
+./configure \
+	--prefix=${ISSM_DIR}/externalpackages/adolc/install \
+	--libdir=${ISSM_DIR}/externalpackages/adolc/install/lib \
+	--with-mpi-root=${ISSM_DIR}/externalpackages/petsc/install \
+	--enable-ampi \
+	--with-ampi=${ISSM_DIR}/externalpackages/adjoinablempi/install \
+	--with-soname=adolc \
+	--disable-tapedoc-values
+
+# Clean
+make clean
+
+# Compile
+if [ $# -eq 0 ]; then
+	make V=1
+else
+	make -j $1 V=1
+fi
+
+# Install
+make V=1 install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/install-withampi-pleiades-gcc.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/install-withampi-pleiades-gcc.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/install-withampi-pleiades-gcc.sh	(revision 27955)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+
+# Keeping the following commented line for potential future use.
+#git clone https://gitlab.com/adol-c/adol-c.git src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/ADOL-C.tar.gz' 'ADOL-C.tar.gz'
+
+#Untar ADOL-C
+tar -zxf  ADOL-C.tar.gz
+
+#Compile ADOL-C
+cd src
+./configure --prefix=$ISSM_DIR/externalpackages/adolc/install  \
+	--libdir=$ISSM_DIR/externalpackages/adolc/install/lib \
+	--with-mpi-root=$ISSM_DIR/externalpackages/mpich/install \
+	--enable-ampi \
+	--with-ampi=$ISSM_DIR/externalpackages/adjoinablempi/install \
+	--with-soname=adolc \
+	--disable-tapedoc-values
+
+make clean
+if [ $# -eq 0 ]; then
+	make V=1
+else
+	make -j $1 V=1
+fi
+make V=1 install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/install-withampi-pleiades.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/install-withampi-pleiades.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/install-withampi-pleiades.sh	(revision 27955)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+
+# Keeping the following commented line for potential future use.
+#git clone https://gitlab.com/adol-c/adol-c.git src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/ADOL-C.tar.gz' 'ADOL-C.tar.gz'
+
+#Untar ADOL-C
+tar -zxf  ADOL-C.tar.gz
+
+#Compile ADOL-C
+cd src
+./configure --prefix=$ISSM_DIR/externalpackages/adolc/install  \
+	--libdir=$ISSM_DIR/externalpackages/adolc/install/lib \
+	--with-mpi-root="/nasa/sgi/mpt/2.06rp16/" \
+	--enable-ampi \
+	--with-ampi=$ISSM_DIR/externalpackages/adjoinablempi/install \
+	--with-soname=adolc \
+	--disable-tapedoc-values
+
+make clean
+if [ $# -eq 0 ]; then
+	make V=1
+else
+	make -j $1 V=1
+fi
+make V=1 install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/install.sh	(revision 27955)
@@ -0,0 +1,26 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+
+# Keeping the following commented line for potential future use.
+#git clone https://gitlab.com/adol-c/adol-c.git src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/ADOL-C.tar.gz' 'ADOL-C.tar.gz'
+
+#Untar ADOL-C
+tar -zxf  ADOL-C.tar.gz
+
+#Compile ADOL-C
+cd src
+./configure --prefix=$ISSM_DIR/externalpackages/adolc/install \
+	--libdir=$ISSM_DIR/externalpackages/adolc/install/lib 
+
+if [ $# -eq 0 ]; then
+	make V=1
+else
+	make -j $1 V=1
+fi
+make V=1 install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/old/install-2.2.0.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/old/install-2.2.0.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/old/install-2.2.0.sh	(revision 27955)
@@ -0,0 +1,60 @@
+#!/bin/bash
+set -eu
+
+#some issues on macosx64 with ISSM's autoconf. you might want to run native to mac on this.
+
+#Some cleanup
+rm -rf install ADOL-C-2.2.0 src trunk
+
+#Create install directories
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/ADOL-C-2.2.0.tar.gz' 'ADOL-C-2.2.0.tar.gz'
+
+#Untar 
+tar -zxvf  ADOL-C-2.2.0.tar.gz
+
+#Move ADOL-C into install directory
+mv ADOL-C-2.2.0/* src
+rm -rf ADOL-C-2.2.0
+
+#Compile ADOL-C
+cd src 
+
+#export CC=gcc
+#export CXX=g++
+#export CFLAGS="-arch x86_64"
+#export CXXFLAGS="-arch x86_64"
+
+./configure \
+	--prefix=$ISSM_DIR/externalpackages/adolc/install \
+	--enable-sparse \
+	--enable-docexa \
+	--enable-addexa \
+	--disable-shave
+
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
+
+
+#Ok, bug with libtool: replace all LIBTOOL= by LIBTOOL=libtool 
+#in all Makefiles
+for i in `find ./ -name Makefile `
+do
+	echo $i
+	cat $i | sed 's/LIBTOOL =/LIBTOOL = libtool/g' > $i.bak 
+	mv $i.bak $i
+done
+
+#remake: 
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/old/update.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/old/update.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/old/update.sh	(revision 27955)
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+cd adolc_issm
+git pull
+
+autoreconf -f -i 
+./configure --prefix=$ISSM_DIR/externalpackages/adolc/install 
+
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/update-existing.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/update-existing.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/adolc/update-existing.sh	(revision 27955)
@@ -0,0 +1,29 @@
+#!/bin/bash
+set -eu
+
+#This script is very specific to the larour larsen nightly using adolc. 
+#It relies on just an update of adolc, and symlink to an existing adolc 
+#repo. 
+
+#Some cleanup
+rm -rf install src
+
+#symlink: 
+ln -s /proj/ice/larour2/issm-uci/trunk-jpl/externalpackages/adolc/adolc_issm ./src
+
+#update and compile
+cd src
+git pull origin
+git checkout ampi
+#git reset --hard b254b2a001a1b7a024a9184cd087ae06eb975cad
+
+autoreconf -f -i 
+./configure --prefix=$ISSM_DIR/externalpackages/adolc/install \
+	--libdir=$ISSM_DIR/externalpackages/adolc/install/lib 
+
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/android/android-ndk/android_aux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/android/android-ndk/android_aux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/android/android-ndk/android_aux.sh	(revision 27955)
@@ -0,0 +1,43 @@
+#!/bin/bash
+#
+# android_aux.sh serves as an auxiliary script for all installation
+# scripts with the Android suffix.
+#
+# TODO: include M4 macros for generic options.
+#
+
+sdk_rev=22.6.2
+ndk_rev=9
+api_levels="android-14,android-15,android-16"
+host_triplet="arm-linux-androideabi"
+default_droid="android-4.1"
+
+step=0;
+j=1;
+
+echo ""
+echo "This install script utilizes 'android_aux.sh' to allow for options."
+echo "For usage information enter: '--help'"
+echo Number of arguments is: $#
+
+for arg in $* 
+do 
+    if [[ "$arg" =~ --step=([0-9])* ]]; then
+        step=${BASH_REMATCH[1]}; 
+        echo "Setting step to: " $step
+    elif [[ "$arg" == "--help" ]]; then
+        echo ""
+        echo "USAGE: $ install.sh [--step=#] [-j#]"
+        echo ""
+        echo "Where '#' is some integer."
+        echo "To check the number of steps check the install script."
+        echo ""
+        exit 1;
+    elif [[ "$arg" =~ -j=([1-9]+[0-9]*) ]]; then
+        j=${BASH_REMATCH[1]}; 
+        echo "Number of jobs set to: " $j
+    else
+        echo "Option not recognized"
+        exit 1;
+    fi
+done
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/android/android-ndk/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/android/android-ndk/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/android/android-ndk/install.sh	(revision 27955)
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+# This installs the Android NDK (Native Development Kit)
+# which is needed for the compilation of C/C++ code into the 
+# native architecture of the Android device.
+
+# The android-ndk-r8-darwin-x86.tar.bz2 ndk.tar.bz2 file was downloaded 
+# from the android developer website: 
+source $ANDROID_DIR/android_aux.sh
+
+if [[ $step == "1" || $step == "0" ]]; then
+    # Cleanup the install
+    rm -rf install
+    rm -rf $ANDROID_DIR/arm-linux-android-${default_droid}
+
+    # Download from ISSM server
+    $ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/android-ndk-r'${ndk_rev}'-darwin-x86.tar.bz2' 'ndk.tar.bz2'
+
+    # Untar
+    tar -zxvf ndk.tar.bz2
+    rm -rf ndk.tar ndk.tar.bz2
+
+    # Move to install
+    mv android-ndk-r${ndk_rev} install
+fi
+
+# Create Standalone Development Directory
+# Note: API-14 corresponds to Android 4.0.
+if [[ $step == "2" || $step == "0" ]]; then
+    $ANDROID_DIR/android-ndk/install/build/tools/make-standalone-toolchain.sh --platform=android-14 --install-dir=$ANDROID_DIR/android-ndk/install/arm-linux-android-install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/android/android-ndk/installNDK-linux-x86.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/android/android-ndk/installNDK-linux-x86.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/android/android-ndk/installNDK-linux-x86.sh	(revision 27955)
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+# This installs the Android NDK (Native Development Kit)
+# which is needed for the compilation of C/C++ code into the 
+# native architecture of the Android device.
+
+# The android-ndk-r8-darwin-x86.tar.bz2 ndk.tar.bz2 file was downloaded 
+# from the android developer website: 
+source $ANDROID_DIR/android_aux.sh
+
+if [[ $step == "1" || $step == "0" ]]; then
+    # Cleanup the install
+    rm -rf install
+    rm -rf $ANDROID_DIR/arm-linux-android-${default_droid}
+
+    # Download from ISSM server
+#    $ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/android-ndk-r'${ndk_rev}'-darwin-x86.tar.bz2' 'ndk.tar.bz2'
+    # Download from google
+#    if ["$(uname -m)" = "x86_64"]; then
+#	wget 'https://dl.google.com/android/ndk/android-ndk-r'${ndk_rev}'d-linux-x86_64.tar.bz2' 'ndk.tar.bz2'
+#   fi
+
+#    if ["$(uname -m)" = "x86"]; then
+	wget 'https://dl.google.com/android/ndk/android-ndk-r'${ndk_rev}'d-linux-x86.tar.bz2'
+ #   fi
+    # Install Android NDK
+    mv 'android-ndk-r'${ndk_rev}'d-linux-x86.tar.bz2' ndk.tar.bz2
+    tar -xvf ndk.tar.bz2
+    rm -rf ndk.tar ndk.tar.bz2
+
+    # Move to install
+    mv android-ndk-r${ndk_rev}d install
+fi
+
+# Create Standalone Development Directory
+# Note: API-14 corresponds to Android 4.0.
+if [[ $step == "2" || $step == "0" ]]; then
+    $ANDROID_DIR/android-ndk/install/build/tools/make-standalone-toolchain.sh --platform=android-14 --install-dir=$ANDROID_DIR/android-ndk/install/arm-linux-android-install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/android/android-sdk/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/android/android-sdk/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/android/android-sdk/install.sh	(revision 27955)
@@ -0,0 +1,82 @@
+#!/bin/bash
+
+# This installs the Android SDK (Software Development Kit)
+# which is needed for the compilation of the Java project. 
+
+source $ANDROID_DIR/android_aux.sh
+
+# Different steps here. 
+#   0: do all
+#   1: install sdk, ant and sdk tools
+#   2: install an emulator.
+#   3: test the emulator
+#   4: cleanup
+
+present_dir=`pwd`;
+sd_card="issm-sdcard"
+
+if [[ $step == "1" || $step == "0" ]]; then
+
+	# Cleanup the install
+	rm -rf install
+
+	# Download from ISSM server
+	$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/android-sdk_r'$sdk_rev'-macosx.zip' 'android-sdk_r'${sdk_rev}'-macosx.zip'
+
+	# Install Android SDK and NDK.
+	unzip -o android-sdk_r${sdk_rev}-macosx.zip
+
+	# Move to install
+	mv -f android-sdk-macosx install
+
+	# Post_install configuration: 
+	# We need specific settings for specific platforms, for the SDK to 
+	# function properly
+
+	# For now, we need to install:  
+	# android sdk platform tools  
+	# and a specific android api: API 16, API 15 and API 14
+	# Note: API 16, API 15 and 14 correspond to Android 4.1, 4.0.3 and 4.0 respectively. 
+
+	cd install/tools/ && source ./android update sdk -t platform-tool,${api_levels},system-image --no-ui
+
+fi
+
+if [[ $step == "2" || $step == "0" ]]; then
+
+	# Once this is done, we need to install an emulator. Location will default to ~/.android/avd, 
+	# which we will move to $ISSM_DIR/externalpackages/android-emulators.  
+	# For now, it's called: Android-4.0.3
+
+	# Here we delete the Android-4.0.3 device if it already exists.
+	cd $present_dir/install/tools
+
+    if [ -e $ANDROID_DIR/android-emulators/$default_droid ] 
+    then
+        echo "Deleting previously created device: $default_droid"
+	    ./android delete avd -n $default_droid
+    fi
+
+	# Android will prompt the user to specify hardware emulation options. For now, default
+	# default settings will suffice. Press 'enter' to take default settings or enter 'no'.
+
+	./android create avd -f -n $default_droid -t 1 -p $ANDROID_DIR/android-emulators/$default_droid --abi armeabi-v7a
+    echo "Creating an SD Card"
+    ./mksdcard -l $sd_card 2G $ANDROID_DIR/android-emulators/$sd_card.img
+fi
+
+if [[ $step == "3" || $step == "0" ]]; then
+    # Here we will start up our default emulator to test that it is working properly.
+    # Once the device has booted we will use the Android Debug Bridge tool to gain
+    # a terminal in our device.
+
+	cd $present_dir/install/tools
+	./emulator -avd $default_droid -sdcard $ANDROID_DIR/android-emulators/$sd_card.img &
+
+    cd ../platform-tools
+    ./adb wait-for-device shell
+fi
+
+if [[ $step == "4" || $step == "0" ]]; then
+	rm -rf install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/android/android-sdk/installSDK-linux-x86.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/android/android-sdk/installSDK-linux-x86.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/android/android-sdk/installSDK-linux-x86.sh	(revision 27955)
@@ -0,0 +1,85 @@
+#!/bin/bash
+
+# This installs the Android SDK (Software Development Kit)
+# which is needed for the compilation of the Java project. 
+
+source $ANDROID_DIR/android_aux.sh
+
+# Different steps here. 
+#   0: do all
+#   1: install sdk, ant and sdk tools
+#   2: install an emulator.
+#   3: test the emulator
+#   4: cleanup
+
+present_dir=`pwd`;
+sd_card="issm-sdcard"
+
+if [[ $step == "1" || $step == "0" ]]; then
+
+	# Cleanup the install
+	rm -rf install
+
+	# Download from ISSM server
+#	$ISSM_DIR/scripts/DownloadExternalPackage.sh 'http://developer.android.com/sdk/index.html#download' 'android-sdk-linux.zip'
+	
+	#Download from Google server
+	wget https://dl.google.com/android/android-sdk_r$sdk_rev-linux.tgz
+
+	# Install Android SDK.
+	tar -zxvf android-sdk_r$sdk_rev-linux.tgz
+	rm -rf android-sdk_r$sdk_rev-linux.tgz
+	# Move to install
+	mv -f android-sdk-linux install
+
+	# Post_install configuration: 
+	# We need specific settings for specific platforms, for the SDK to 
+	# function properly
+
+	# For now, we need to install:  
+	# android sdk platform tools  
+	# and a specific android api: API 16, API 15 and API 14
+	# Note: API 16, API 15 and 14 correspond to Android 4.1, 4.0.3 and 4.0 respectively. 
+
+	cd install/tools/ && source ./android update sdk -t platform-tool,${api_levels},system-image --no-ui
+
+fi
+
+if [[ $step == "2" || $step == "0" ]]; then
+
+	# Once this is done, we need to install an emulator. Location will default to ~/.android/avd, 
+	# which we will move to $ISSM_DIR/externalpackages/android-emulators.  
+	# For now, it's called: Android-4.0.3
+
+	# Here we delete the Android-4.0.3 device if it already exists.
+	cd $present_dir/install/tools
+
+    if [ -e $ANDROID_DIR/android-emulators/$default_droid ] 
+    then
+        echo "Deleting previously created device: $default_droid"
+	    ./android delete avd -n $default_droid
+    fi
+
+	# Android will prompt the user to specify hardware emulation options. For now, default
+	# default settings will suffice. Press 'enter' to take default settings or enter 'no'.
+
+	./android create avd -f -n $default_droid -t 1 -p $ANDROID_DIR/android-emulators/$default_droid --abi armeabi-v7a
+    echo "Creating an SD Card"
+    ./mksdcard -l $sd_card 2G $ANDROID_DIR/android-emulators/$sd_card.img
+fi
+
+if [[ $step == "3" || $step == "0" ]]; then
+    # Here we will start up our default emulator to test that it is working properly.
+    # Once the device has booted we will use the Android Debug Bridge tool to gain
+    # a terminal in our device.
+
+	cd $present_dir/install/tools
+	./emulator -avd $default_droid -sdcard $ANDROID_DIR/android-emulators/$sd_card.img &
+
+    cd ../platform-tools
+    ./adb wait-for-device shell
+fi
+
+#if [[ $step == "4" || $step == "0" ]]; then
+#	rm -rf install
+#fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/android/android_aux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/android/android_aux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/android/android_aux.sh	(revision 27955)
@@ -0,0 +1,43 @@
+#!/bin/bash
+#
+# android_aux.sh serves as an auxiliary script for all installation
+# scripts with the Android suffix.
+#
+# TODO: include M4 macros for generic options.
+#
+
+sdk_rev=20
+ndk_rev=8
+api_levels="android-14,android-15,android-16"
+host_triplet="arm-linux-androideabi"
+default_droid="android-4.1"
+
+step=0;
+j=1;
+
+echo ""
+echo "This install script utilizes 'android_aux.sh' to allow for options."
+echo "For usage information enter: '--help'"
+echo Number of arguments is: $#
+
+for arg in $* 
+do 
+    if [[ "$arg" =~ --step=([0-9])* ]]; then
+        step=${BASH_REMATCH[1]}; 
+        echo "Setting step to: " $step
+    elif [[ "$arg" == "--help" ]]; then
+        echo ""
+        echo "USAGE: $ install.sh [--step=#] [-j#]"
+        echo ""
+        echo "Where '#' is some integer."
+        echo "To check the number of steps check the install script."
+        echo ""
+        exit 1;
+    elif [[ "$arg" =~ -j=([1-9]+[0-9]*) ]]; then
+        j=${BASH_REMATCH[1]}; 
+        echo "Number of jobs set to: " $j
+    else
+        echo "Option not recognized"
+        exit 1;
+    fi
+done
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/angel/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/angel/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/angel/install.sh	(revision 27955)
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf angel
+
+#download 
+svn co -r 82 https://angellib.svn.sourceforge.net/svnroot/angellib/trunk angel
+
+#Compile
+cd angel 
+make
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/appscan/bin/genouncemakePFile.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/appscan/bin/genouncemakePFile.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/appscan/bin/genouncemakePFile.sh	(revision 27955)
@@ -0,0 +1,593 @@
+#!/bin/bash
+
+#----------------------------------------------------------------------
+#VARIABLES containing information to generate OunceMake Properties file
+#----------------------------------------------------------------------
+XMLHEADER="<?xml version=\""1.0\"" encoding=\"UTF-8\"?>"
+OUNCEHEADER="<OunceMakeProperties xmlns=\"http://www.ouncelabs.com/namespace\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"
+MAKEOPT="<MakeOptions>-f Makefile</MakeOptions>"
+
+COMPILER_TAG="Compiler"
+COMPILER_MACRO="macro"
+
+C_COMPILER_MVALUE="\"CC\""
+CPP_COMPILER_MVALUE="\"CXX\""
+
+MAKE_TAG="Make"
+MAKE_MACRO="macro"
+MAKE_MVALUE="\"MAKE\""
+
+
+LINKER_TAG="Linker"
+LINKER_MACRO="macro"
+LINKER_MVALUE="\"LD\""
+
+
+ARCHIVE_TAG="Executable"
+ARCHIVE_MACRO="macro"
+ARCHIVE_MVALUE="\"ARCHIVE\""
+
+OUNCEOPT="<Options recursive=\"true\" single_project=\"false\" verbose=\"false\" clean=\"make clean\" no_clean=\"false\" build=\"true\"/>"
+
+OUNCE_MAIN_TAG="OunceMakeProperties"
+OUNCE_COMPILER_GPO_TAG="GlobalProjectOptions"
+OUNCE_COMPILER_OPT="compiler_options"
+OUNCE_COMPILER_OPT_gpp="\"-g++_linux_i386\""
+OUNCE_COMPILER_OPT_gcc="\"-gcc_linux_i386\""
+
+OUNCE_INCLUDE_PATH="include_paths"
+OUNCE_MACRO_PATH="macros"
+
+OUNCE_COMPILER_FO_TAG="FileOptions"
+OUNCE_COMPILER_EXT="extensions"
+
+OUNCE_COMPILER_EXT_CPP="cpp;cxx"
+OUNCE_COMPILER_EXT_C="c"
+
+#Did the search for a particular tool pass/fail
+FAIL_FILE="failed.status"
+
+#---------------------------------
+#COMPILER data extraction function
+#---------------------------------
+
+function initialize {
+#Create Directory for info
+ echo;echo
+ echo -e "Initialization....\t\t\t[\c "
+ echo -e "\E[33mSTARTED\c "; tput sgr0
+ echo "]"
+ search_tool which
+ FILEPRE=${1}
+
+ case "$1" in
+	"gcc"|"cc")
+	  TESTFILE="testfoo.c"
+	;;
+	"g++"|"CC")
+	  TESTFILE="testfoo.cpp"
+	;;
+	*)
+	 echo "Error setting prefix"
+	;;
+ esac
+
+ DATAFOLDER="${FILEPRE}results"
+#Declare files to generate and store results
+ RESULTFILE="${DATAFOLDER}/${FILEPRE}libinc.result"
+ SLIMFILE="${DATAFOLDER}/${FILEPRE}slim.inc"
+ SLIM2FILE="${DATAFOLDER}/${FILEPRE}slim2.inc"
+
+#Declare the Tags that enclose the information needed
+ START_TAG="#include <...> search starts here:"
+ END_TAG="End of search list."
+
+#Declare Variable to track Tags
+ MARK_FOUND=0
+
+#For Macros
+ MACROSDUMPFILE="${DATAFOLDER}/${FILEPRE}macrosd.result"
+ INTFILE1="${DATAFOLDER}/${FILEPRE}interf1.result"
+ INTFILE2="${DATAFOLDER}/${FILEPRE}interf2.result"
+
+
+#The file extensions for (both) options
+CONFIG_FOLDER="config"
+C_EXT="${CONFIG_FOLDER}/cext.data"
+CPP_EXT="${CONFIG_FOLDER}/cppext.data"
+
+if [ -d ${CONFIG_FOLDER} ]; then
+	echo
+else
+	mkdir ${CONFIG_FOLDER}
+	echo ${OUNCE_COMPILER_EXT_CPP} > ${C_EXT}
+	echo ${OUNCE_COMPILER_EXT_C} > ${CPP_EXT}
+fi
+
+ echo -e "Initialization....\t\t\t[\c "
+ echo -e "\E[33mDONE\c "; tput sgr0
+ echo "]"
+}
+
+function purgefiles {
+ echo -e "Purging files....\t\t\t[\c "
+ echo -e "\E[33mSTARTED\c "; tput sgr0
+ echo "]"
+  if [ -e ${DATAFOLDER} ]; then
+	rm -R ${DATAFOLDER}
+	mkdir ${DATAFOLDER}
+  else
+	mkdir ${DATAFOLDER}
+  fi
+ echo -e "Purging files....\t\t\t[\c "
+ echo -e "\E[33mDONE\c "; tput sgr0
+ echo "]"
+}
+
+
+function processGNUInclude {
+echo
+#Create the dummy file is does not exist
+if [ -e ${TESTFILE} ]; then
+	echo "Will use an existing ${TESTFILE} file"
+else 
+	echo -e "int main(){\n return 0;\n}" &>  ${TESTFILE}
+	if [ -e ${TESTFILE} ]; then
+	  echo -e "Generating new test file\t\t[\c "
+	  echo -e "\E[31m${TESTFILE}\c " ; tput sgr0 
+	  echo "]"
+	else
+	  echo -e "Error generating new test file\t\t[\c "
+	  echo -e "\E[31m${TESTFILE}\c " ; tput sgr0 
+	  echo "]"
+   	#TO DO
+   	#Will the user like to continue or exit?
+	fi
+fi
+
+
+ echo
+ echo -e "Generating information for Compiler\t\t[\c "
+ echo -e "\E[31m${COMPILER}\c " ; tput sgr0 
+ echo "]"
+
+${COMPILER} -v ${TESTFILE} &> ${RESULTFILE}
+
+
+cat ${RESULTFILE} | while read line
+do 
+
+	if [ "${line}" = "${START_TAG}" ] 
+	then
+		MARK_FOUND=1
+	fi
+
+	
+	if [ "${line}" = "${END_TAG}" ] 
+	then
+		MARK_FOUND=0
+	fi
+
+	
+	if [ "${MARK_FOUND}" = 1 ] && [ "${line}" != "${START_TAG}" ] 
+	then
+		let "inclib +=  1"
+		echo ${line} 1>> ${SLIMFILE}
+	fi
+done
+
+if [ -e ${SLIMFILE} ]; then
+	sed -e :a -e N -e 's/\n/; /' -e ta  ${SLIMFILE}  > ${RESULTFILE}
+	echo -e "Inc & Lib results are in file...\t\t[\c "
+	echo -e "\033[1m\E[31m${RESULTFILE}\033[0m\c " ; tput sgr0
+	echo "]"
+fi
+
+#String to contatenate the include path
+concatpath="include_paths=\""
+#Merge file content
+sed -e 's/\n/;/'  ${SLIMFILE} > ${SLIM2FILE}
+
+}
+
+
+function processGNUMacro {
+#*****************************
+#Generate macros for system
+#*****************************
+ echo
+ echo -e "Generating Macro data for Compiler\t\t[\c "
+ echo -e "\E[31m${COMPILER} \c " ; tput sgr0 
+ echo "]"
+
+ ${COMPILER} -dM -E ${TESTFILE} >> ${MACROSDUMPFILE}
+ sed 's/#define //' ${MACROSDUMPFILE} > ${INTFILE1}
+ if [ -e ${INTFILE1} ]; then
+	sed 's/ /=/' ${INTFILE1} > ${INTFILE2}
+ else
+	echo -e "\033[1m Sorry <${INTFILE1}> was not created.. \033[0m"
+ fi
+
+ if [ -e ${INTFILE2} ]; then
+	#Remove the Macro's that have no values
+	sed '/^_.*=$/d' ${INTFILE2} > ${INTFILE1} 
+	#Join the individual line and delimit with a (; )
+	sed -e :a -e N  -e 's/\n/; /' -e ta  ${INTFILE1}  > ${MACROSDUMPFILE}
+	#All done display the results file
+	echo -e "Macro results are in file...\t\t\t[\c "
+	echo -e "\033[1m\E[31m${MACROSDUMPFILE}\033[0m\c " ; tput sgr0
+	echo "]"
+ else
+	echo -e "\033[1m Sorry <${MACROSDUMPFILE}> was not created.. \033[0m"
+ fi
+}
+
+function processSUNMacro {
+#*******************************************
+#This function is for the SUN Compilers ONLY
+#*******************************************
+ echo
+ echo -e "Generating Macro data for Compiler\t\t[\c "
+ echo -e "\E[31m${COMPILER} \c " ; tput sgr0 
+ echo "]"
+
+ ${COMPILER} -xdumpmacros ${TESTFILE} &> ${MACROSDUMPFILE}
+ sed 's/#define //' ${MACROSDUMPFILE} > ${INTFILE1}
+ if [ -e ${INTFILE1} ]; then
+	sed 's/ /=/' ${INTFILE1} > ${INTFILE2}
+ else
+	echo -e "\033[1m Sorry <${INTFILE1}> was not created.. \033[0m"
+ fi
+
+ if [ -e ${INTFILE2} ]; then
+	#Remove the Macro's that have no values
+	sed '/^_.*=$/d' ${INTFILE2} > ${INTFILE1} 
+	#Join the individual line and delimit with a (; )
+	sed -e :a -e N  -e 's/\n/; /' -e ta  ${INTFILE1}  > ${MACROSDUMPFILE}
+	#All done display the results file
+	echo -e "Macro results are in file...\t\t\t[\c "
+	echo -e "\033[1m\E[31m${MACROSDUMPFILE}\033[0m\c " ; tput sgr0
+	echo "]"
+ else
+	echo -e "\033[1m Sorry <${MACROSDUMPFILE}> was not created.. \033[0m"
+ fi
+}
+
+#--------------------------
+#DATA Processing variables
+#--------------------------
+PROPFILE="ouncemake_properties.xml"
+PROBEFILE="probe.results"
+ERRORLOG="error.log"
+
+#---------------------------------------
+#FUNCTION TO CREATE FILE
+#--------------------------------------
+
+function create_file {
+#If a previous copy of file exist, delete it
+if [ -e ${PROPFILE} ]; then
+	rm ${PROPFILE}
+fi
+
+echo;echo
+echo "CREATING THE PROPERTIES XML FILE"
+#insert file headers
+echo ${XMLHEADER} >> ${PROPFILE}
+echo ${OUNCEHEADER} >> ${PROPFILE}
+echo ${MAKEOPT} >> ${PROPFILE}
+case "${1}" in
+	'gcc')
+	  search_tool gcc
+	;;
+	'g++')
+	  search_tool g++
+	;;
+	'bothGNU')
+	  search_tool gcc
+	  search_tool g++
+	;;
+	'cc')
+	  search_tool cc
+	;;
+	'CC')
+	  search_tool CC
+	;;
+	'bothSUN')
+	  search_tool gcc
+	  search_tool g++
+	;;
+	'*')
+	;;
+esac
+search_tool make
+search_tool ld
+search_tool ar
+echo "	${OUNCEOPT}" >> ${PROPFILE}
+
+case "${1}" in
+	'gcc')
+	  singleGNUC gcc
+	;;
+	'g++')
+	  singleGNUC g++
+	;;
+	'bothGNU')
+	  bothGNUC gcc
+	  bothGNUC g++
+	;;
+	'cc')
+	  singleSUNC cc
+	;;
+	'CC')
+	  singleSUNC CC
+	;;
+	'bothSUN')
+	  bothSUNC cc
+	  bothSUNC CC
+	;;
+	'*')
+	;;
+esac
+
+echo "</${OUNCE_MAIN_TAG}>" >> ${PROPFILE}
+
+echo
+echo -e "Successully created Properties file\t\t[\c "
+echo -e "\033[1m\E[31m${PROPFILE}\033[0m\c " ; tput sgr0
+echo "]"
+echo
+}
+
+#when the system is unable to locate the tool
+#the user is prompted to provide that information
+function usersupplypath {
+	echo "Please provide the path to ${1}."
+	read TOOLPATH
+}
+
+
+function search_tool {
+which $1 &> ${PROBEFILE}
+#Why this approach? I had to be able to non-interactively  
+#know if the pattern was successfully found. 
+
+sed -n -e "/.*no[ ]${1}[ ]in[ ].*/w $FAIL_FILE" ${PROBEFILE} 
+
+#If the file is empty, the process PASSED
+#else the Fail criteria was found. Process FAILED
+if [ -e ${FAIL_FILE} ]; then
+	exec < ${FAIL_FILE}
+	read FAILPASS
+	if [${FAILPASS} = ""]; then
+	  SEARCHTOOL="PASSED"
+	  rm ${FAIL_FILE}
+	else
+	 SEARCHTOOL="FAILED"
+	fi
+fi
+
+
+if [ ${SEARCHTOOL} == "FAILED" ] ; then
+  echo "Failed to find ${1} in PATH" >> ${ERRORLOG}
+  echo -e "check for $1 in ${TLOC}\t\t\t[$SEARCHTOOL]"
+elif [ ${SEARCHTOOL} == "PASSED" ]; then
+  #Redirects stdin to a file so that
+  exec < ${PROBEFILE}
+  #I can read line by line
+  read TLOC
+  echo -e "check for $1 in ${TLOC}\t\t\t[\c "
+  echo -e "\E[33m${SEARCHTOOL}\c "; tput sgr0
+  echo "]"
+else
+  echo "Unable to process the request"
+  #exit
+fi
+
+case "$1" in
+	'gcc')
+	#set up the sub strings 
+	  TAG_L="<${COMPILER_TAG} ${COMPILER_MACRO}=${C_COMPILER_MVALUE}>"
+	  MVALUE="$TLOC"
+	  TAG_R="</${COMPILER_TAG}>"
+	;;
+	'g++')
+	  TAG_L="<${COMPILER_TAG} ${COMPILER_MACRO}=${CPP_COMPILER_MVALUE}>"
+	  MVALUE="$TLOC"
+	  TAG_R="</${COMPILER_TAG}>"
+	;;
+	'make')
+	  TAG_L="<${MAKE_TAG} ${MAKE_MACRO}=${MAKE_MVALUE}>"
+	  MVALUE="$TLOC"
+	  TAG_R="</${MAKE_TAG}>"
+	;;
+	'ld')
+	  TAG_L="<${LINKER_TAG} ${LINKER_MACRO}=${LINKER_MVALUE}>"
+	  MVALUE="$TLOC"
+	  TAG_R="</${LINKER_TAG}>"
+	;;
+	'ar')
+	  TAG_L="<${ARCHIVE_TAG} ${ARCHIVE_MACRO}=${ARCHIVE_MVALUE}>"
+	  MVALUE="$TLOC"
+	  TAG_R="</${ARCHIVE_TAG}>"
+	;;
+	'*')
+	;;	
+esac
+
+#then concatenate
+FULL_STRING="${TAG_L}${MVALUE}${TAG_R}"
+#and store in file
+echo "	$FULL_STRING" >> ${PROPFILE}
+}
+function singleGNUC {
+
+echo "	<${OUNCE_COMPILER_GPO_TAG}" >> ${PROPFILE}
+
+case "$1" in 
+	'gcc')
+	  echo -e "\t  ${OUNCE_COMPILER_OPT}=${OUNCE_COMPILER_OPT_gcc}" >> ${PROPFILE}
+	;;
+	'g++')
+	  echo -e "\t  ${OUNCE_COMPILER_OPT}=${OUNCE_COMPILER_OPT_gpp}" >> ${PROPFILE}
+	;;
+	'*')
+	;;	
+esac
+
+exec < ${RESULTFILE}
+read INCLUDE_DATA
+echo -e "\t  ${OUNCE_INCLUDE_PATH}=\"${INCLUDE_DATA}\"" >> ${PROPFILE}
+exec < ${MACROSDUMPFILE}
+read MACRO_DATA
+#Using single quotes to wrap double quotes in data
+echo -e "\t  ${OUNCE_MACRO_PATH}='${MACRO_DATA}' />" >> ${PROPFILE}
+
+}
+
+
+function bothGNUC {
+
+echo -e "\t<${OUNCE_COMPILER_FO_TAG}" >> ${PROPFILE}
+
+case "$1" in 
+	'gcc')
+	  FILEPRE="$1"
+	  exec < ${C_EXT}
+	  read CEXTENSIONS
+	  if [ ${CEXTENSIONS} = "" ]; then
+	  	CEXTENSIONS=${OUNCE_COMPILER_EXT_C}
+	  else
+		OUNCE_COMPILER_EXT_C=${CEXTENSIONS}
+	  fi
+	  echo -e "\t  ${OUNCE_COMPILER_EXT}=\"${OUNCE_COMPILER_EXT_C}\"" >> ${PROPFILE}
+	;;
+	'g++')
+	  FILEPRE="$1"
+	  exec < ${CPP_EXT}
+	  read CPPEXTENSIONS
+	  if [ ${CPPEXTENSIONS} = "" ]; then
+	  	CPPEXTENSIONS=${OUNCE_COMPILER_EXT_CPP}
+	  else
+		OUNCE_COMPILER_EXT_CPP=${CPPEXTENSIONS}
+	  fi
+	  echo -e "\t  ${OUNCE_COMPILER_EXT}=\"${OUNCE_COMPILER_EXT_CPP}\"" >> ${PROPFILE}
+	;;
+	'*')
+	;;	
+esac
+
+#To make sure that the correct folder and file is read
+DATAFOLDER="${FILEPRE}results"
+#Declare files to generate and store results
+RESULTFILE="${DATAFOLDER}/${FILEPRE}libinc.result"
+
+exec < ${RESULTFILE}
+read INCLUDE_DATA
+echo -e "\t  ${OUNCE_INCLUDE_PATH}=\"${INCLUDE_DATA}\"" >> ${PROPFILE}
+exec < ${MACROSDUMPFILE}
+read MACRO_DATA
+echo -e "\t  ${OUNCE_MACRO_PATH}='${MACRO_DATA}'/>" >> ${PROPFILE}
+
+}
+
+
+clear
+echo
+echo -e "\t \E[34m\033[1mOUNCEMAKE PROPERTIES FILE GENERATOR (1.0)b\033[0m";tput sgr0
+
+#Start of the program
+case "$1" in
+	'-t')
+	  case "$2" in 
+		"gcc")
+		  COMPILER=${2}
+		 initialize ${2}
+		 purgefiles
+		 processGNUInclude
+		 processGNUMacro
+		 create_file ${2}
+		;;
+		"g++")
+		  COMPILER=${2}
+		 initialize ${2}
+		 purgefiles
+		 processGNUInclude
+		 processGNUMacro
+		 create_file ${2}
+		;;
+		"bothGNU")
+		  COMPILER="gcc"
+		 initialize ${2}
+		 purgefiles
+		 processGNUInclude
+		 processGNUMacro
+		  COMPILER="g++"
+		 initialize ${2}
+		 purgefiles
+		 processGNUInclude
+		 processGNUMacro
+		 create_file ${2}
+		;;
+		"cc")
+		  COMPILER=${2}
+		 initialize ${2}
+		 purgefiles
+		 processSUNInclude
+		 processSUNMacro
+		 create_file ${2}
+		;;
+		"CC")
+		  COMPILER=${2}
+		 initialize ${2}
+		 purgefiles
+		# processSUNInclude
+		 processSUNMacro
+		# create_file ${2}
+		;;
+		"bothSUN")
+		  COMPILER="cc"
+		 initialize cc
+		 purgefiles
+		 processSUNInclude
+		 processSUNMacro
+		  COMPILER="CC"
+		 initialize CC
+		 purgefiles
+		 processSUNInclude
+		 processSUNMacro
+		 create_file both
+		;;
+		'*')
+		  echo "Usage: -t [gcc|g++|bothGNU]"
+		  exit $?
+		;;
+	  esac  
+	;;
+	'-h')
+	  echo -e "Usage: -t [Options] -v "
+	  echo -e "Options:"
+	  echo -e "\t[gcc]\tC project only";
+	  echo -e "\t[g++]\tCPP project only"
+	  echo -e "\t[bothGNU]\tMixed C and CPP project"
+	  echo
+	  echo -e "\t-v \tDisplay version information"
+	  exit $?
+	;;
+	'-v')
+	  echo "Version 1.0 beta"
+	  exit $?
+	;;
+	*)
+	  echo -e "Usage: -t [Options] -v "
+	  echo -e "Options:"
+	  echo -e "\t[gcc]\tC project only";
+	  echo -e "\t[g++]\tCPP project only"
+	  echo -e "\t[both]\tMixed C and CPP project"
+	  echo
+	  echo -e "\t-v \tDisplay version information"
+	  exit $?
+	;;
+esac
+echo "[ P R O C E S S  C O M P L E T E !!! ]"
+echo
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/appscan/hostname
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/appscan/hostname	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/appscan/hostname	(revision 27955)
@@ -0,0 +1,1 @@
+jplsec-codescan.jpl.nasa.gov
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/appscan/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/appscan/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/appscan/install.sh	(revision 27955)
@@ -0,0 +1,10 @@
+#!/bin/bash
+set -eu
+
+#AppScan install directory. Just symlink to your existing AppScan software
+
+#Erase symlink
+rm -rf install
+
+#Select or create a new simlink
+ln -s /opt/IBM/AppScan_Source ./install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/apr-util/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/apr-util/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/apr-util/install.sh	(revision 27955)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf apr-util-1.4.1
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/apr-util-1.4.1.tar.gz' 'apr-util-1.4.1.tar.gz'
+
+#Untar 
+tar -zxvf  apr-util-1.4.1.tar.gz
+
+#Move apr-util into src directory
+mv apr-util-1.4.1/* src
+rm -rf apr-util-1.4.1
+
+#Configure apr-util
+cd src
+./configure  --prefix="$ISSM_DIR/externalpackages/apr-util/install" --with-apr="$ISSM_DIR/externalpackages/apr/install"
+
+#Compile and install apr-util
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/apr/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/apr/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/apr/install.sh	(revision 27955)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf apr-1.4.6
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/apr-1.4.6.tar.gz' 'apr-1.4.6.tar.gz'
+
+#Untar 
+tar -zxvf  apr-1.4.6.tar.gz
+
+#Move apr into src directory
+mv apr-1.4.6/* src
+rm -rf apr-1.4.6
+
+#Configure apr
+cd src
+./configure  --prefix="$ISSM_DIR/externalpackages/apr/install" 
+
+#Compile and install apr
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/aspell/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/aspell/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/aspell/install.sh	(revision 27955)
@@ -0,0 +1,62 @@
+#!/bin/bash
+set -eu
+
+#0: cleanup
+#1:  install aspell
+#2:  install en dictionary
+step=2
+
+
+#Some cleanup
+if  [[ $step  == "0" ]]; then
+	rm -rf src install dicts
+	rm -rf aspell-0.50.5
+	rm -rf aspell5-en-6.0.0
+fi
+
+#install aspell
+if  [[ $step  == "1" ]]; then
+
+	mkdir src install dicts
+
+	#Download from ISSM server
+	$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/aspell-0.50.5.tar.gz' 'aspell-0.50.5.tar.gz'
+
+	#Untar 
+	tar -zxvf  aspell-0.50.5.tar.gz
+
+	#Move aspell into src directory
+	mv aspell-0.50.5/* src
+	rm -rf aspell-0.50.5
+
+	#Configure aspell
+	cd src
+	./configure \
+		--prefix="$ISSM_DIR/externalpackages/aspell/install" \
+
+	#Compile and install aspell
+	if [ -z $1 ]; then
+		make
+	else
+		make -j $1
+	fi
+	make install
+fi
+
+#languages
+if  [[ $step  == "2" ]]; then
+
+	#Download from ISSM server
+	$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/aspell5-en-6.0.0.tar.gz' 'aspell5-en-6.0.0.tar.gz'
+
+	#Untar 
+	tar -zxvf  aspell5-en-6.0.0.tar.gz
+
+	#Move aspell into src directory
+	mv aspell5-en-6.0.0 dicts
+
+	#install
+	cd dicts/aspell5-en-6.0.0
+	./configure
+	make install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/atlas/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/atlas/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/atlas/install.sh	(revision 27955)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install ATLAS build
+mkdir src install build
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/atlas3.10.0.tar.bz2' 'atlas3.10.0.tar.bz2'
+
+#Untar 
+tar -zxvf  atlas3.10.0.tar.bz2
+
+#Move atlas into src directory
+mv ATLAS/* src
+rm -rf ATLAS
+
+#Configure atlas
+cd build
+
+export CFLAGS=" -arch x86_64"
+
+../src/configure \
+	--prefix="$ISSM_DIR/externalpackages/atlas/install" 
+
+#Compile atlas
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/autotools/install-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/autotools/install-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/autotools/install-linux.sh	(revision 27955)
@@ -0,0 +1,95 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+AUTOCONF_VER="2.69"
+AUTOMAKE_VER="1.16.1"
+LIBTOOL_VER="2.4.6"
+M4_VER="1.4.19"
+
+PREFIX="${ISSM_DIR}/externalpackages/autotools/install" # Set to location where external package should be installed
+
+## Environment
+#
+export PATH="${PREFIX}/bin:${PATH}"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX}
+
+# Install m4
+echo " === INSTALLING M4 ==="
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/m4-${M4_VER}.tar.gz" "m4-${M4_VER}.tar.gz"
+tar -zxvf m4-${M4_VER}.tar.gz
+mv m4-${M4_VER} src
+cd src
+
+## Fixes required by glibc-2.28
+#
+# Source: http://www.linuxfromscratch.org/lfs/view/development/chapter06/m4.html
+#
+sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
+echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h
+
+./configure --prefix="${PREFIX}"
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+# Install Autoconf
+echo " === INSTALLING AUTOCONF ==="
+rm -rf src
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/autoconf-${AUTOCONF_VER}.tar.gz" "autoconf-${AUTOCONF_VER}.tar.gz"
+tar -zxvf autoconf-${AUTOCONF_VER}.tar.gz
+mv autoconf-${AUTOCONF_VER} src
+cd src
+./configure --prefix="${PREFIX}"
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+# Install Automake
+echo " === INSTALLING AUTOMAKE ==="
+rm -rf src
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/automake-${AUTOMAKE_VER}.tar.gz" "automake-${AUTOMAKE_VER}.tar.gz"
+tar -zxvf automake-${AUTOMAKE_VER}.tar.gz
+mv automake-${AUTOMAKE_VER} src
+cd src
+./configure --prefix="${PREFIX}"
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+# Install libtool
+echo " === INSTALLING LIBTOOL ==="
+rm -rf src
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/libtool-${LIBTOOL_VER}.tar.gz" "libtool-${LIBTOOL_VER}.tar.gz"
+tar -zxvf libtool-${LIBTOOL_VER}.tar.gz
+mv libtool-${LIBTOOL_VER} src
+cd src
+./configure --prefix="${PREFIX}"
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/autotools/install-mac.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/autotools/install-mac.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/autotools/install-mac.sh	(revision 27955)
@@ -0,0 +1,88 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+AUTOCONF_VER="2.69"
+AUTOMAKE_VER="1.16.1"
+LIBTOOL_VER="2.4.6"
+M4_VER="1.4.19"
+
+PREFIX="${ISSM_DIR}/externalpackages/autotools/install" # Set to location where external package should be installed
+
+## Environment
+#
+export PATH="${PREFIX}/bin:${PATH}"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX}
+
+# Install m4
+echo " === INSTALLING M4 ==="
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/m4-${M4_VER}.tar.gz" "m4-${M4_VER}.tar.gz"
+tar -zxvf m4-${M4_VER}.tar.gz
+mv m4-${M4_VER} src
+cd src
+
+./configure --prefix="${PREFIX}"
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+# Install Autoconf
+echo " === INSTALLING AUTOCONF =="
+rm -rf src
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/autoconf-${AUTOCONF_VER}.tar.gz" "autoconf-${AUTOCONF_VER}.tar.gz"
+tar -zxvf autoconf-${AUTOCONF_VER}.tar.gz
+mv autoconf-${AUTOCONF_VER} src
+cd src
+./configure --prefix="${PREFIX}"
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+# Install Automake
+echo " === INSTALLING AUTOMAKE ==="
+rm -rf src
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/automake-${AUTOMAKE_VER}.tar.gz" "automake-${AUTOMAKE_VER}.tar.gz"
+tar -zxvf automake-${AUTOMAKE_VER}.tar.gz
+mv automake-${AUTOMAKE_VER} src
+cd src
+./configure --prefix="${PREFIX}"
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+# Install libtool
+echo " === INSTALLING LIBTOOL ==="
+rm -rf src
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/libtool-${LIBTOOL_VER}.tar.gz" "libtool-${LIBTOOL_VER}.tar.gz"
+tar -zxvf libtool-${LIBTOOL_VER}.tar.gz
+mv libtool-${LIBTOOL_VER} src
+cd src
+./configure --prefix="${PREFIX}"
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/autotools/install-win.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/autotools/install-win.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/autotools/install-win.sh	(revision 27955)
@@ -0,0 +1,103 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+AUTOCONF_VER="2.69"
+AUTOMAKE_MIN_VER="1.16"
+AUTOMAKE_VER="${AUTOMAKE_MIN_VER}.1"
+LIBTOOL_VER="2.4.6"
+M4_VER="1.4.19"
+
+PREFIX="${ISSM_DIR}/externalpackages/autotools/install" # Set to location where external package should be installed
+
+## Environment
+#
+export PATH="${PREFIX}/bin:${PATH}"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX}
+
+# Install m4
+echo " === INSTALLING M4 ==="
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/m4-${M4_VER}.tar.gz" "m4-${M4_VER}.tar.gz"
+tar -zxvf m4-${M4_VER}.tar.gz
+mv m4-${M4_VER} src
+cd src
+
+./configure --prefix="${PREFIX}"
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+# Install Autoconf
+echo " === INSTALLING AUTOCONF =="
+rm -rf src
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/autoconf-${AUTOCONF_VER}.tar.gz" "autoconf-${AUTOCONF_VER}.tar.gz"
+tar -zxvf autoconf-${AUTOCONF_VER}.tar.gz
+mv autoconf-${AUTOCONF_VER} src
+cd src
+./configure --prefix="${PREFIX}"
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+# Install Automake
+echo " === INSTALLING AUTOMAKE ==="
+rm -rf src
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/automake-${AUTOMAKE_VER}.tar.gz" "automake-${AUTOMAKE_VER}.tar.gz"
+tar -zxvf automake-${AUTOMAKE_VER}.tar.gz
+mv automake-${AUTOMAKE_VER} src
+cd src
+./configure --prefix="${PREFIX}"
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+# Install libtool
+echo " === INSTALLING LIBTOOL ==="
+rm -rf src
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/libtool-${LIBTOOL_VER}.tar.gz" "libtool-${LIBTOOL_VER}.tar.gz"
+tar -zxvf libtool-${LIBTOOL_VER}.tar.gz
+mv libtool-${LIBTOOL_VER} src
+cd src
+./configure --prefix="${PREFIX}"
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+# This patch takes care of removing options passed to the linker that causes
+# the build to fail, as well as changing some flags to match up to Microsoft
+# compilers.
+patch ./install/share/aclocal/libtool.m4 < ./patches/libtool.m4.patch
+
+# Small change to Automake in order to get the right flags for Microsoft's
+# compiler.
+patch ./install/bin/automake < ./patches/automake.patch
+
+# This patch is for ar-lib, and removes carriage return characters that cause
+# commands to overwrite themselves and be misinterpreted during linking on
+# Cygwin Windows.
+patch ./install/share/automake-${AUTOMAKE_MIN_VER}/ar-lib < ./patches/ar-lib.patch
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/autotools/patches/ar-lib.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/autotools/patches/ar-lib.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/autotools/patches/ar-lib.patch	(revision 27955)
@@ -0,0 +1,11 @@
+--- ar-lib	2017-08-30 21:58:06.863512300 -0700
++++ /home/Daniel/issm/trunk/aux-config/ar-lib	2017-08-30 21:58:01.291710300 -0700
+@@ -226,7 +226,7 @@
+   else
+     $AR -NOLOGO -LIST "$archive" | sed -e 's/\\/\\\\/g' | while read member
+     do
+-      $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $?
++      $AR -NOLOGO -EXTRACT:"$(echo $member | tr -d '\r')" "$archive" || exit $?
+     done
+   fi
+ 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/autotools/patches/automake.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/autotools/patches/automake.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/autotools/patches/automake.patch	(revision 27955)
@@ -0,0 +1,13 @@
+--- ./externalpackages/autotools/install/bin/automake	2015-09-24 19:26:11.796659200 -0700
++++ /home/daeden/tmp/automake	2015-09-25 11:32:53.557609300 -0700
+@@ -702,8 +702,8 @@
+ 		   'compile' => "\$(CXX) @cpplike_flags \$(AM_CXXFLAGS) \$(CXXFLAGS)",
+ 		   'ccer' => 'CXX',
+ 		   'compiler' => 'CXXCOMPILE',
+-		   'compile_flag' => '-c',
+-		   'output_flag' => '-o',
++		   'compile_flag' => '/c',
++		   'output_flag' => '/Fo:',
+ 		   'libtool_tag' => 'CXX',
+ 		   'lder' => 'CXXLD',
+ 		   'ld' => '$(CXX)',
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/autotools/patches/libtool.m4.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/autotools/patches/libtool.m4.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/autotools/patches/libtool.m4.patch	(revision 27955)
@@ -0,0 +1,74 @@
+--- ./install/share/aclocal/libtool.m4	2015-09-25 15:51:40.870862200 -0700
++++ /home/daeden/tmp/libtool.m4	2015-09-25 15:42:15.385935100 -0700
+@@ -2382,7 +2382,7 @@
+     # Native MSVC
+     libname_spec='$name'
+     soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+-    library_names_spec='${libname}.dll.lib'
++    library_names_spec='${libname}${shrext_cmds}'
+ 
+     case $build_os in
+     mingw*)
+@@ -3142,7 +3142,7 @@
+ case $host_os in
+   cygwin* | mingw* | pw32* | cegcc*)
+     if test "$GCC" != yes; then
+-      reload_cmds=false
++      reload_cmds='lib /OUT:$output$reload_objs'
+     fi
+     ;;
+   darwin*)
+@@ -4752,7 +4752,7 @@
+       _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+ 
+       if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++        _LT_TAGVAR(archive_cmds, $1)='$CC /LD $libobjs $deplibs $compiler_flags /OUT:$output_objdir/$soname '
+ 	# If the export-symbols file already is a .def file (1st line
+ 	# is EXPORTS), use it as is; otherwise, prepend...
+ 	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+@@ -4761,7 +4761,7 @@
+ 	  echo EXPORTS > $output_objdir/$soname.def;
+ 	  cat $export_symbols >> $output_objdir/$soname.def;
+ 	fi~
+-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++	$CC /LD $output_objdir/$soname.def $libobjs $deplibs $compiler_flags /OUT:$output_objdir/$soname '
+       else
+ 	_LT_TAGVAR(ld_shlibs, $1)=no
+       fi
+@@ -5136,7 +5136,7 @@
+ 	  else
+ 	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+ 	  fi~
+-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs~
+ 	  linknames='
+ 	# The linker will not automatically build a static lib if we build a DLL.
+ 	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+@@ -6135,7 +6135,7 @@
+ 	    else
+ 	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+ 	    fi~
+-	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs~
+ 	    linknames='
+ 	  # The linker will not automatically build a static lib if we build a DLL.
+ 	  # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+@@ -6168,7 +6168,7 @@
+ 	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ 
+ 	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++	    _LT_TAGVAR(archive_cmds, $1)='$CC /LD -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags /OUT:$output_objdir/$soname '
+ 	    # If the export-symbols file already is a .def file (1st line
+ 	    # is EXPORTS), use it as is; otherwise, prepend...
+ 	    _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+@@ -6177,7 +6177,7 @@
+ 	      echo EXPORTS > $output_objdir/$soname.def;
+ 	      cat $export_symbols >> $output_objdir/$soname.def;
+ 	    fi~
+-	    $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
++	    $CC /LD -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags /OUT:$output_objdir/$soname '
+ 	  else
+ 	    _LT_TAGVAR(ld_shlibs, $1)=no
+ 	  fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/bbftp/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/bbftp/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/bbftp/install.sh	(revision 27955)
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install bbftp-client-3.2.0
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/bbftp-client-3.2.0.tar.gz' 'bbftp-client-3.2.0.tar.gz'
+
+#Create install directories
+mkdir install src
+
+#Untar 
+tar -zxvf  bbftp-client-3.2.0.tar.gz
+
+#Move bbftp-client into install directory
+mv bbftp-client-3.2.0/* src
+rm -rf bbftp-client-3.2.0
+
+#Apply patches
+cd src 
+
+#Configure and compile
+cd bbftpc
+./configure --prefix=$ISSM_DIR/externalpackages/bbftp/install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/configs/3.8/win/msys2/gcc/Makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/configs/3.8/win/msys2/gcc/Makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/configs/3.8/win/msys2/gcc/Makefile	(revision 27955)
@@ -0,0 +1,172 @@
+include make.inc
+
+#######################################################################
+#  This is the makefile to create a library for the BLAS.
+#  The files are grouped as follows:
+#
+#       SBLAS1 -- Single precision real BLAS routines
+#       CBLAS1 -- Single precision complex BLAS routines
+#       DBLAS1 -- Double precision real BLAS routines
+#       ZBLAS1 -- Double precision complex BLAS routines
+#
+#       CB1AUX -- Real BLAS routines called by complex routines
+#       ZB1AUX -- D.P. real BLAS routines called by d.p. complex
+#                 routines
+#
+#      ALLBLAS -- Auxiliary routines for Level 2 and 3 BLAS
+#
+#       SBLAS2 -- Single precision real BLAS2 routines
+#       CBLAS2 -- Single precision complex BLAS2 routines
+#       DBLAS2 -- Double precision real BLAS2 routines
+#       ZBLAS2 -- Double precision complex BLAS2 routines
+#
+#       SBLAS3 -- Single precision real BLAS3 routines
+#       CBLAS3 -- Single precision complex BLAS3 routines
+#       DBLAS3 -- Double precision real BLAS3 routines
+#       ZBLAS3 -- Double precision complex BLAS3 routines
+#
+#  The library can be set up to include routines for any combination
+#  of the four precisions.  To create or add to the library, enter make
+#  followed by one or more of the precisions desired.  Some examples:
+#       make single
+#       make single complex
+#       make single double complex complex16
+#  Note that these commands are not safe for parallel builds.
+#
+#  Alternatively, the commands
+#       make all
+#  or
+#       make
+#  without any arguments creates a library of all four precisions.
+#  The name of the library is held in BLASLIB, which is set in the
+#  make.inc
+#
+#  To remove the object files after the library is created, enter
+#       make clean
+#  To force the source files to be recompiled, enter, for example,
+#       make single FRC=FRC
+#
+#---------------------------------------------------------------------
+#
+#  Edward Anderson, University of Tennessee
+#  March 26, 1990
+#  Susan Ostrouchov,  September 30, 1994
+#  Julie Langou, March 2007
+#
+#######################################################################
+
+all: $(BLASLIB)
+ 
+#---------------------------------------------------------
+#  Comment out the next 6 definitions if you already have
+#  the Level 1 BLAS.
+#---------------------------------------------------------
+SBLAS1 = isamax.o sasum.o saxpy.o scopy.o sdot.o snrm2.o \
+	srot.o srotg.o sscal.o sswap.o sdsdot.o srotmg.o srotm.o
+$(SBLAS1): $(FRC)
+
+CBLAS1 = scabs1.o scasum.o scnrm2.o icamax.o caxpy.o ccopy.o \
+	cdotc.o cdotu.o csscal.o crotg.o cscal.o cswap.o csrot.o
+$(CBLAS1): $(FRC)
+
+DBLAS1 = idamax.o dasum.o daxpy.o dcopy.o ddot.o dnrm2.o \
+	drot.o drotg.o dscal.o dsdot.o dswap.o drotmg.o drotm.o
+$(DBLAS1): $(FRC)
+
+ZBLAS1 = dcabs1.o dzasum.o dznrm2.o izamax.o zaxpy.o zcopy.o \
+	zdotc.o zdotu.o zdscal.o zrotg.o zscal.o zswap.o zdrot.o
+$(ZBLAS1): $(FRC)
+
+CB1AUX = isamax.o sasum.o saxpy.o scopy.o snrm2.o sscal.o
+$(CB1AUX): $(FRC)
+
+ZB1AUX = idamax.o dasum.o daxpy.o dcopy.o dnrm2.o dscal.o
+$(ZB1AUX): $(FRC)
+
+#---------------------------------------------------------------------
+#  The following line defines auxiliary routines needed by both the
+#  Level 2 and Level 3 BLAS.  Comment it out only if you already have
+#  both the Level 2 and 3 BLAS.
+#---------------------------------------------------------------------
+ALLBLAS  = lsame.o xerbla.o
+$(ALLBLAS) : $(FRC)
+
+#---------------------------------------------------------
+#  Comment out the next 4 definitions if you already have
+#  the Level 2 BLAS.
+#---------------------------------------------------------
+SBLAS2 = sgemv.o sgbmv.o ssymv.o ssbmv.o sspmv.o \
+	strmv.o stbmv.o stpmv.o strsv.o stbsv.o stpsv.o \
+	sger.o ssyr.o sspr.o ssyr2.o sspr2.o
+$(SBLAS2): $(FRC)
+
+CBLAS2 = cgemv.o cgbmv.o chemv.o chbmv.o chpmv.o \
+	ctrmv.o ctbmv.o ctpmv.o ctrsv.o ctbsv.o ctpsv.o \
+	cgerc.o cgeru.o cher.o chpr.o cher2.o chpr2.o
+$(CBLAS2): $(FRC)
+
+DBLAS2 = dgemv.o dgbmv.o dsymv.o dsbmv.o dspmv.o \
+	dtrmv.o dtbmv.o dtpmv.o dtrsv.o dtbsv.o dtpsv.o \
+	dger.o dsyr.o dspr.o dsyr2.o dspr2.o
+$(DBLAS2): $(FRC)
+
+ZBLAS2 = zgemv.o zgbmv.o zhemv.o zhbmv.o zhpmv.o \
+	ztrmv.o ztbmv.o ztpmv.o ztrsv.o ztbsv.o ztpsv.o \
+	zgerc.o zgeru.o zher.o zhpr.o zher2.o zhpr2.o
+$(ZBLAS2): $(FRC)
+
+#---------------------------------------------------------
+#  Comment out the next 4 definitions if you already have
+#  the Level 3 BLAS.
+#---------------------------------------------------------
+SBLAS3 = sgemm.o ssymm.o ssyrk.o ssyr2k.o strmm.o strsm.o 
+$(SBLAS3): $(FRC)
+
+CBLAS3 = cgemm.o csymm.o csyrk.o csyr2k.o ctrmm.o ctrsm.o \
+	chemm.o cherk.o cher2k.o
+$(CBLAS3): $(FRC)
+
+DBLAS3 = dgemm.o dsymm.o dsyrk.o dsyr2k.o dtrmm.o dtrsm.o
+$(DBLAS3): $(FRC)
+
+ZBLAS3 = zgemm.o zsymm.o zsyrk.o zsyr2k.o ztrmm.o ztrsm.o \
+	zhemm.o zherk.o zher2k.o
+$(ZBLAS3): $(FRC)
+
+ALLOBJ=$(SBLAS1) $(SBLAS2) $(SBLAS3) $(DBLAS1) $(DBLAS2) $(DBLAS3) \
+	$(CBLAS1) $(CBLAS2) $(CBLAS3) $(ZBLAS1) \
+	$(ZBLAS2) $(ZBLAS3) $(ALLBLAS)
+
+$(BLASLIB): $(ALLOBJ)
+	$(FORTRAN) -shared -o $@ \
+		$(ALLOBJ) \
+		-Wl,--out-implib=$(IMP_LIB_NAME)
+
+single: $(SBLAS1) $(ALLBLAS) $(SBLAS2) $(SBLAS3)
+	$(ARCH) $(ARCHFLAGS) $(BLASLIB) $(SBLAS1) $(ALLBLAS) \
+	$(SBLAS2) $(SBLAS3)
+	$(RANLIB) $(BLASLIB)
+
+double: $(DBLAS1) $(ALLBLAS) $(DBLAS2) $(DBLAS3)
+	$(ARCH) $(ARCHFLAGS) $(BLASLIB) $(DBLAS1) $(ALLBLAS) \
+	$(DBLAS2) $(DBLAS3)
+	$(RANLIB) $(BLASLIB)
+
+complex: $(CBLAS1) $(CB1AUX) $(ALLBLAS) $(CBLAS2) $(CBLAS3)
+	$(ARCH) $(ARCHFLAGS) $(BLASLIB) $(CBLAS1) $(CB1AUX) \
+	$(ALLBLAS) $(CBLAS2) $(CBLAS3)
+	$(RANLIB) $(BLASLIB)
+
+complex16: $(ZBLAS1) $(ZB1AUX) $(ALLBLAS) $(ZBLAS2) $(ZBLAS3)
+	$(ARCH) $(ARCHFLAGS) $(BLASLIB) $(ZBLAS1) $(ZB1AUX) \
+	$(ALLBLAS) $(ZBLAS2) $(ZBLAS3)
+	$(RANLIB) $(BLASLIB)
+
+FRC:
+	@FRC=$(FRC)
+
+clean:
+	rm -f *.o
+
+.f.o: 
+	$(FORTRAN) $(OPTS) -c $< -o $@
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/configs/3.8/win/msys2/gcc/make.inc
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/configs/3.8/win/msys2/gcc/make.inc	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/configs/3.8/win/msys2/gcc/make.inc	(revision 27955)
@@ -0,0 +1,38 @@
+####################################################################
+#  BLAS make include file.                                         #
+#  March 2007                                                      #
+####################################################################
+#
+SHELL = /usr/bin/bash
+#
+#  The machine (platform) identifier to append to the library names
+#
+PLAT =
+#  
+#  Modify the FORTRAN and OPTS definitions to refer to the
+#  compiler and desired compiler options for your machine.  NOOPT
+#  refers to the compiler options desired when NO OPTIMIZATION is
+#  selected.  Define LOADER and LOADOPTS to refer to the loader and 
+#  desired load options for your machine.
+#
+FORTRAN  = gfortran
+OPTS     = -O2 -fPIC
+DRVOPTS  = $(OPTS)
+NOOPT    = -O0 -fPIC
+LOADER   = gfortran
+LOADOPTS =
+#
+#  The archiver and the flag(s) to use when building archive (library)
+#  If you system has no ranlib, set RANLIB = echo.
+#
+ARCH     = ar
+ARCHFLAGS= cr
+RANLIB   = ranlib
+
+MODULE			= blas
+IMP_LIB_NAME	= lib$(MODULE).dll.a
+LIB_NAME		= msys-$(MODULE).dll
+#
+#  The location and name of the Reference BLAS library.
+#
+BLASLIB = $(LIB_NAME)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/configs/3.8/win/msys2/mingw64/Makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/configs/3.8/win/msys2/mingw64/Makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/configs/3.8/win/msys2/mingw64/Makefile	(revision 27955)
@@ -0,0 +1,172 @@
+include make.inc
+
+#######################################################################
+#  This is the makefile to create a library for the BLAS.
+#  The files are grouped as follows:
+#
+#       SBLAS1 -- Single precision real BLAS routines
+#       CBLAS1 -- Single precision complex BLAS routines
+#       DBLAS1 -- Double precision real BLAS routines
+#       ZBLAS1 -- Double precision complex BLAS routines
+#
+#       CB1AUX -- Real BLAS routines called by complex routines
+#       ZB1AUX -- D.P. real BLAS routines called by d.p. complex
+#                 routines
+#
+#      ALLBLAS -- Auxiliary routines for Level 2 and 3 BLAS
+#
+#       SBLAS2 -- Single precision real BLAS2 routines
+#       CBLAS2 -- Single precision complex BLAS2 routines
+#       DBLAS2 -- Double precision real BLAS2 routines
+#       ZBLAS2 -- Double precision complex BLAS2 routines
+#
+#       SBLAS3 -- Single precision real BLAS3 routines
+#       CBLAS3 -- Single precision complex BLAS3 routines
+#       DBLAS3 -- Double precision real BLAS3 routines
+#       ZBLAS3 -- Double precision complex BLAS3 routines
+#
+#  The library can be set up to include routines for any combination
+#  of the four precisions.  To create or add to the library, enter make
+#  followed by one or more of the precisions desired.  Some examples:
+#       make single
+#       make single complex
+#       make single double complex complex16
+#  Note that these commands are not safe for parallel builds.
+#
+#  Alternatively, the commands
+#       make all
+#  or
+#       make
+#  without any arguments creates a library of all four precisions.
+#  The name of the library is held in BLASLIB, which is set in the
+#  make.inc
+#
+#  To remove the object files after the library is created, enter
+#       make clean
+#  To force the source files to be recompiled, enter, for example,
+#       make single FRC=FRC
+#
+#---------------------------------------------------------------------
+#
+#  Edward Anderson, University of Tennessee
+#  March 26, 1990
+#  Susan Ostrouchov,  September 30, 1994
+#  Julie Langou, March 2007
+#
+#######################################################################
+
+all: $(BLASLIB)
+ 
+#---------------------------------------------------------
+#  Comment out the next 6 definitions if you already have
+#  the Level 1 BLAS.
+#---------------------------------------------------------
+SBLAS1 = isamax.o sasum.o saxpy.o scopy.o sdot.o snrm2.o \
+	srot.o srotg.o sscal.o sswap.o sdsdot.o srotmg.o srotm.o
+$(SBLAS1): $(FRC)
+
+CBLAS1 = scabs1.o scasum.o scnrm2.o icamax.o caxpy.o ccopy.o \
+	cdotc.o cdotu.o csscal.o crotg.o cscal.o cswap.o csrot.o
+$(CBLAS1): $(FRC)
+
+DBLAS1 = idamax.o dasum.o daxpy.o dcopy.o ddot.o dnrm2.o \
+	drot.o drotg.o dscal.o dsdot.o dswap.o drotmg.o drotm.o
+$(DBLAS1): $(FRC)
+
+ZBLAS1 = dcabs1.o dzasum.o dznrm2.o izamax.o zaxpy.o zcopy.o \
+	zdotc.o zdotu.o zdscal.o zrotg.o zscal.o zswap.o zdrot.o
+$(ZBLAS1): $(FRC)
+
+CB1AUX = isamax.o sasum.o saxpy.o scopy.o snrm2.o sscal.o
+$(CB1AUX): $(FRC)
+
+ZB1AUX = idamax.o dasum.o daxpy.o dcopy.o dnrm2.o dscal.o
+$(ZB1AUX): $(FRC)
+
+#---------------------------------------------------------------------
+#  The following line defines auxiliary routines needed by both the
+#  Level 2 and Level 3 BLAS.  Comment it out only if you already have
+#  both the Level 2 and 3 BLAS.
+#---------------------------------------------------------------------
+ALLBLAS  = lsame.o xerbla.o
+$(ALLBLAS) : $(FRC)
+
+#---------------------------------------------------------
+#  Comment out the next 4 definitions if you already have
+#  the Level 2 BLAS.
+#---------------------------------------------------------
+SBLAS2 = sgemv.o sgbmv.o ssymv.o ssbmv.o sspmv.o \
+	strmv.o stbmv.o stpmv.o strsv.o stbsv.o stpsv.o \
+	sger.o ssyr.o sspr.o ssyr2.o sspr2.o
+$(SBLAS2): $(FRC)
+
+CBLAS2 = cgemv.o cgbmv.o chemv.o chbmv.o chpmv.o \
+	ctrmv.o ctbmv.o ctpmv.o ctrsv.o ctbsv.o ctpsv.o \
+	cgerc.o cgeru.o cher.o chpr.o cher2.o chpr2.o
+$(CBLAS2): $(FRC)
+
+DBLAS2 = dgemv.o dgbmv.o dsymv.o dsbmv.o dspmv.o \
+	dtrmv.o dtbmv.o dtpmv.o dtrsv.o dtbsv.o dtpsv.o \
+	dger.o dsyr.o dspr.o dsyr2.o dspr2.o
+$(DBLAS2): $(FRC)
+
+ZBLAS2 = zgemv.o zgbmv.o zhemv.o zhbmv.o zhpmv.o \
+	ztrmv.o ztbmv.o ztpmv.o ztrsv.o ztbsv.o ztpsv.o \
+	zgerc.o zgeru.o zher.o zhpr.o zher2.o zhpr2.o
+$(ZBLAS2): $(FRC)
+
+#---------------------------------------------------------
+#  Comment out the next 4 definitions if you already have
+#  the Level 3 BLAS.
+#---------------------------------------------------------
+SBLAS3 = sgemm.o ssymm.o ssyrk.o ssyr2k.o strmm.o strsm.o 
+$(SBLAS3): $(FRC)
+
+CBLAS3 = cgemm.o csymm.o csyrk.o csyr2k.o ctrmm.o ctrsm.o \
+	chemm.o cherk.o cher2k.o
+$(CBLAS3): $(FRC)
+
+DBLAS3 = dgemm.o dsymm.o dsyrk.o dsyr2k.o dtrmm.o dtrsm.o
+$(DBLAS3): $(FRC)
+
+ZBLAS3 = zgemm.o zsymm.o zsyrk.o zsyr2k.o ztrmm.o ztrsm.o \
+	zhemm.o zherk.o zher2k.o
+$(ZBLAS3): $(FRC)
+
+ALLOBJ=$(SBLAS1) $(SBLAS2) $(SBLAS3) $(DBLAS1) $(DBLAS2) $(DBLAS3) \
+	$(CBLAS1) $(CBLAS2) $(CBLAS3) $(ZBLAS1) \
+	$(ZBLAS2) $(ZBLAS3) $(ALLBLAS)
+
+$(BLASLIB): $(ALLOBJ)
+	$(FORTRAN) -shared -o $@ \
+		$(ALLOBJ) \
+		-Wl,--out-implib=$(IMP_LIB_NAME)
+
+single: $(SBLAS1) $(ALLBLAS) $(SBLAS2) $(SBLAS3)
+	$(ARCH) $(ARCHFLAGS) $(BLASLIB) $(SBLAS1) $(ALLBLAS) \
+	$(SBLAS2) $(SBLAS3)
+	$(RANLIB) $(BLASLIB)
+
+double: $(DBLAS1) $(ALLBLAS) $(DBLAS2) $(DBLAS3)
+	$(ARCH) $(ARCHFLAGS) $(BLASLIB) $(DBLAS1) $(ALLBLAS) \
+	$(DBLAS2) $(DBLAS3)
+	$(RANLIB) $(BLASLIB)
+
+complex: $(CBLAS1) $(CB1AUX) $(ALLBLAS) $(CBLAS2) $(CBLAS3)
+	$(ARCH) $(ARCHFLAGS) $(BLASLIB) $(CBLAS1) $(CB1AUX) \
+	$(ALLBLAS) $(CBLAS2) $(CBLAS3)
+	$(RANLIB) $(BLASLIB)
+
+complex16: $(ZBLAS1) $(ZB1AUX) $(ALLBLAS) $(ZBLAS2) $(ZBLAS3)
+	$(ARCH) $(ARCHFLAGS) $(BLASLIB) $(ZBLAS1) $(ZB1AUX) \
+	$(ALLBLAS) $(ZBLAS2) $(ZBLAS3)
+	$(RANLIB) $(BLASLIB)
+
+FRC:
+	@FRC=$(FRC)
+
+clean:
+	rm -f *.o
+
+.f.o: 
+	$(FORTRAN) $(OPTS) -c $< -o $@
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/configs/3.8/win/msys2/mingw64/make.inc
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/configs/3.8/win/msys2/mingw64/make.inc	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/configs/3.8/win/msys2/mingw64/make.inc	(revision 27955)
@@ -0,0 +1,38 @@
+####################################################################
+#  BLAS make include file.                                         #
+#  March 2007                                                      #
+####################################################################
+#
+SHELL = /usr/bin/bash
+#
+#  The machine (platform) identifier to append to the library names
+#
+PLAT =
+#  
+#  Modify the FORTRAN and OPTS definitions to refer to the
+#  compiler and desired compiler options for your machine.  NOOPT
+#  refers to the compiler options desired when NO OPTIMIZATION is
+#  selected.  Define LOADER and LOADOPTS to refer to the loader and 
+#  desired load options for your machine.
+#
+FORTRAN  = gfortran
+OPTS     = -O2 -fPIC
+DRVOPTS  = $(OPTS)
+NOOPT    = -O0 -fPIC
+LOADER   = gfortran
+LOADOPTS =
+#
+#  The archiver and the flag(s) to use when building archive (library)
+#  If you system has no ranlib, set RANLIB = echo.
+#
+ARCH     = ar
+ARCHFLAGS= cr
+RANLIB   = ranlib
+
+MODULE			= blas
+IMP_LIB_NAME	= lib$(MODULE).dll.a
+LIB_NAME		= msys-$(MODULE).dll
+#
+#  The location and name of the Reference BLAS library.
+#
+BLASLIB = $(LIB_NAME)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/configs/linux64/make.inc
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/configs/linux64/make.inc	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/configs/linux64/make.inc	(revision 27955)
@@ -0,0 +1,34 @@
+####################################################################
+#  BLAS make include file.                                         #
+#  March 2007                                                      #
+####################################################################
+#
+SHELL = /bin/sh
+#
+#  The machine (platform) identifier to append to the library names
+#
+PLAT = _LINUX
+#  
+#  Modify the FORTRAN and OPTS definitions to refer to the
+#  compiler and desired compiler options for your machine.  NOOPT
+#  refers to the compiler options desired when NO OPTIMIZATION is
+#  selected.  Define LOADER and LOADOPTS to refer to the loader and 
+#  desired load options for your machine.
+#
+FORTRAN  = gfortran
+OPTS     = -fPIC -O3
+DRVOPTS  = $(OPTS)
+NOOPT    =
+LOADER   = gfortran
+LOADOPTS =
+#
+#  The archiver and the flag(s) to use when building archive (library)
+#  If you system has no ranlib, set RANLIB = echo.
+#
+ARCH     = ar
+ARCHFLAGS= cr
+RANLIB   = ranlib
+#
+#  The location and name of the Reference BLAS library.
+#
+BLASLIB      = blas$(PLAT).a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/configs/macosx64/make.inc
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/configs/macosx64/make.inc	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/configs/macosx64/make.inc	(revision 27955)
@@ -0,0 +1,34 @@
+####################################################################
+#  BLAS make include file.                                         #
+#  March 2007                                                      #
+####################################################################
+#
+SHELL = /bin/sh
+#
+#  The machine (platform) identifier to append to the library names
+#
+PLAT = _LINUX
+#  
+#  Modify the FORTRAN and OPTS definitions to refer to the
+#  compiler and desired compiler options for your machine.  NOOPT
+#  refers to the compiler options desired when NO OPTIMIZATION is
+#  selected.  Define LOADER and LOADOPTS to refer to the loader and 
+#  desired load options for your machine.
+#
+FORTRAN  = gfortran
+OPTS     = -fPIC -O3
+DRVOPTS  = $(OPTS)
+NOOPT    =
+LOADER   = gfortran
+LOADOPTS =
+#
+#  The archiver and the flag(s) to use when building archive (library)
+#  If you system has no ranlib, set RANLIB = echo.
+#
+ARCH     = ar
+ARCHFLAGS= cr
+RANLIB   = ranlib
+#
+#  The location and name of the Reference BLAS library.
+#
+BLASLIB      = blas$(PLAT).a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/install-3-win-msys2-gcc.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/install-3-win-msys2-gcc.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/install-3-win-msys2-gcc.sh	(revision 27955)
@@ -0,0 +1,44 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER=3.8.0
+
+PREFIX="${ISSM_DIR}/externalpackages/blas/install"
+
+MODULE="blas"
+IMP_LIB_NAME="lib${MODULE}.dll.a"
+LIB_NAME="msys-${MODULE}.dll"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/blas-${VER}.tgz" "blas-${VER}.tgz"
+
+# Unpack source
+tar -zxvf blas-${VER}.tgz
+
+# Move source into 'src' directory
+mv BLAS-${VER}/* src
+rm -rf BLAS-${VER}
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/3.8/win/msys2/gcc/make.inc src
+cp configs/3.8/win/msys2/gcc/Makefile src
+
+# Compile
+cd src
+make
+
+# Install
+mkdir ${PREFIX}/lib
+cp ${IMP_LIB_NAME} ${PREFIX}/lib
+cp ${LIB_NAME} ${PREFIX}/lib
+
+# Create link to shared version of library so that libtool can find it
+cd ${PREFIX}/lib
+ln -s ./${LIB_NAME} ./libblas.dll
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/install-3-win-msys2-mingw.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/install-3-win-msys2-mingw.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/install-3-win-msys2-mingw.sh	(revision 27955)
@@ -0,0 +1,44 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER=3.8.0
+
+PREFIX="${ISSM_DIR}/externalpackages/blas/install"
+
+MODULE="blas"
+IMP_LIB_NAME="lib${MODULE}.dll.a"
+LIB_NAME="msys-${MODULE}.dll"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/blas-${VER}.tgz" "blas-${VER}.tgz"
+
+# Unpack source
+tar -zxvf blas-${VER}.tgz
+
+# Move source into 'src' directory
+mv BLAS-${VER}/* src
+rm -rf BLAS-${VER}
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/3.8/win/msys2/mingw/make.inc src
+cp configs/3.8/win/msys2/mingw/Makefile src
+
+# Compile
+cd src
+make
+
+# Install
+mkdir ${PREFIX}/lib
+cp ${IMP_LIB_NAME} ${PREFIX}/lib
+cp ${LIB_NAME} ${PREFIX}/lib
+
+# Create link to shared version of library so that libtool can find it
+cd ${PREFIX}/lib
+ln -s ./${LIB_NAME} ./libblas.dll
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/install-linux64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/install-linux64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/install-linux64.sh	(revision 27955)
@@ -0,0 +1,29 @@
+#!/bin/bash
+set -eu 
+
+#Some cleanup
+rm -rf src install BLAS blas.tgz
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/blas.tgz' 'blas.tgz'
+
+#Untar 
+tar -zxvf  blas.tgz
+
+#Move blas into install directory
+mv BLAS/* src
+rm -rf BLAS
+
+#install
+cd src 
+cp ../configs/linux64/make.inc ./
+make 
+
+#Compile 
+cd ../install
+mkdir lib
+cd lib
+cp ../../src/*.a .
+ln -s blas_LINUX.a blas.a
+ln -s blas_LINUX.a libblas.a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/install-macosx64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/install-macosx64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/blas/install-macosx64.sh	(revision 27955)
@@ -0,0 +1,29 @@
+#!/bin/bash
+set -eu 
+
+#Some cleanup
+rm -rf src install BLAS blas.tgz
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/blas.tgz' 'blas.tgz'
+
+#Untar 
+tar -zxvf  blas.tgz
+
+#Move blas into install directory
+mv BLAS/* src
+rm -rf BLAS
+
+#install
+cd src 
+cp ../configs/macosx64/make.inc ./
+make 
+
+#Compile 
+cd ../install
+mkdir lib
+cd lib
+cp ../../src/*.a .
+ln -s blas_LINUX.a blas.a
+ln -s blas_LINUX.a libblas.a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/adl.hpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/adl.hpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/adl.hpp.patch	(revision 27955)
@@ -0,0 +1,7 @@
+33,34c33,35
+<         || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) \
+<         )
+---
+> 		 )
+> //        || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) \
+> //        )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/boost/multi_index/ordered_index.hpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/boost/multi_index/ordered_index.hpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/boost/multi_index/ordered_index.hpp	(revision 27955)
@@ -0,0 +1,1529 @@
+/* Copyright 2003-2013 Joaquin M Lopez Munoz.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ *
+ * See http://www.boost.org/libs/multi_index for library home page.
+ *
+ * The internal implementation of red-black trees is based on that of SGI STL
+ * stl_tree.h file:
+ *
+ * Copyright (c) 1996,1997
+ * Silicon Graphics Computer Systems, Inc.
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Silicon Graphics makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ *
+ * Copyright (c) 1994
+ * Hewlett-Packard Company
+ *
+ * Permission to use, copy, modify, distribute and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation.  Hewlett-Packard Company makes no
+ * representations about the suitability of this software for any
+ * purpose.  It is provided "as is" without express or implied warranty.
+ *
+ */
+
+#ifndef BOOST_MULTI_INDEX_ORDERED_INDEX_HPP
+#define BOOST_MULTI_INDEX_ORDERED_INDEX_HPP
+
+#if defined(_MSC_VER)&&(_MSC_VER>=1200)
+#pragma once
+#endif
+
+#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
+#include <algorithm>
+#include <boost/call_traits.hpp>
+#include <boost/detail/no_exceptions_support.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/foreach_fwd.hpp>
+#include <boost/iterator/reverse_iterator.hpp>
+#include <boost/move/core.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/push_front.hpp>
+#include <boost/multi_index/detail/access_specifier.hpp>
+#include <boost/multi_index/detail/bidir_node_iterator.hpp>
+#include <boost/multi_index/detail/do_not_copy_elements_tag.hpp>
+#include <boost/multi_index/detail/index_node_base.hpp>
+#include <boost/multi_index/detail/modify_key_adaptor.hpp>
+#include <boost/multi_index/detail/ord_index_node.hpp>
+#include <boost/multi_index/detail/ord_index_ops.hpp>
+#include <boost/multi_index/detail/safe_ctr_proxy.hpp>
+#include <boost/multi_index/detail/safe_mode.hpp>
+#include <boost/multi_index/detail/scope_guard.hpp>
+#include <boost/multi_index/detail/unbounded.hpp>
+#include <boost/multi_index/detail/value_compare.hpp>
+#include <boost/multi_index/detail/vartempl_support.hpp>
+#include <boost/multi_index/ordered_index_fwd.hpp>
+#include <boost/ref.hpp>
+#include <boost/tuple/tuple.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <utility>
+
+#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
+#include <initializer_list>
+#endif
+
+#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
+#include <boost/archive/archive_exception.hpp>
+#include <boost/bind.hpp>
+#include <boost/multi_index/detail/duplicates_iterator.hpp>
+#include <boost/throw_exception.hpp>
+#endif
+
+#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)
+#define BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT_OF(x)                    \
+  detail::scope_guard BOOST_JOIN(check_invariant_,__LINE__)=                 \
+    detail::make_obj_guard(x,&ordered_index::check_invariant_);              \
+  BOOST_JOIN(check_invariant_,__LINE__).touch();
+#define BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT                          \
+  BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT_OF(*this)
+#else
+#define BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT_OF(x)
+#define BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT
+#endif
+
+namespace boost{
+
+namespace multi_index{
+
+namespace detail{
+
+/* ordered_index adds a layer of ordered indexing to a given Super */
+
+/* Most of the implementation of unique and non-unique indices is
+ * shared. We tell from one another on instantiation time by using
+ * these tags.
+ */
+
+struct ordered_unique_tag{};
+struct ordered_non_unique_tag{};
+
+template<
+  typename KeyFromValue,typename Compare,
+  typename SuperMeta,typename TagList,typename Category
+>
+class ordered_index:
+  BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS SuperMeta::type
+
+#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
+#if BOOST_WORKAROUND(BOOST_MSVC,<1300)
+  ,public safe_ctr_proxy_impl<
+    bidir_node_iterator<
+      ordered_index_node<typename SuperMeta::type::node_type> >,
+    ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category> >
+#else
+  ,public safe_mode::safe_container<
+    ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category> >
+#endif
+#endif
+
+{
+#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)&&\
+    BOOST_WORKAROUND(__MWERKS__,<=0x3003)
+/* The "ISO C++ Template Parser" option in CW8.3 has a problem with the
+ * lifetime of const references bound to temporaries --precisely what
+ * scopeguards are.
+ */
+
+#pragma parse_mfunc_templ off
+#endif
+
+  typedef typename SuperMeta::type                   super;
+
+protected:
+  typedef ordered_index_node<
+    typename super::node_type>                       node_type;
+
+private:
+  typedef typename node_type::impl_type              node_impl_type;
+  typedef typename node_impl_type::pointer           node_impl_pointer;
+
+public:
+  /* types */
+
+  typedef typename KeyFromValue::result_type         key_type;
+  typedef typename node_type::value_type             value_type;
+  typedef KeyFromValue                               key_from_value;
+  typedef Compare                                    key_compare;
+  typedef value_comparison<
+    value_type,KeyFromValue,Compare>                 value_compare;
+  typedef tuple<key_from_value,key_compare>          ctor_args;
+  typedef typename super::final_allocator_type       allocator_type;
+  typedef typename allocator_type::reference         reference;
+  typedef typename allocator_type::const_reference   const_reference;
+
+#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
+#if BOOST_WORKAROUND(BOOST_MSVC,<1300)
+  typedef safe_mode::safe_iterator<
+    bidir_node_iterator<node_type>,
+    safe_ctr_proxy<
+      bidir_node_iterator<node_type> > >             iterator;
+#else
+  typedef safe_mode::safe_iterator<
+    bidir_node_iterator<node_type>,
+    ordered_index>                                   iterator;
+#endif
+#else
+  typedef bidir_node_iterator<node_type>             iterator;
+#endif
+
+  typedef iterator                                   const_iterator;
+
+  typedef std::size_t                                size_type;
+  typedef std::ptrdiff_t                             difference_type;
+  typedef typename allocator_type::pointer           pointer;
+  typedef typename allocator_type::const_pointer     const_pointer;
+  typedef typename
+    boost::reverse_iterator<iterator>                reverse_iterator;
+  typedef typename
+    boost::reverse_iterator<const_iterator>          const_reverse_iterator;
+  typedef TagList                                    tag_list;
+
+protected:
+  typedef typename super::final_node_type            final_node_type;
+  typedef tuples::cons<
+    ctor_args,
+    typename super::ctor_args_list>                  ctor_args_list;
+  typedef typename mpl::push_front<
+    typename super::index_type_list,
+    ordered_index>::type                             index_type_list;
+  typedef typename mpl::push_front<
+    typename super::iterator_type_list,
+    iterator>::type    iterator_type_list;
+  typedef typename mpl::push_front<
+    typename super::const_iterator_type_list,
+    const_iterator>::type                            const_iterator_type_list;
+  typedef typename super::copy_map_type              copy_map_type;
+
+#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
+  typedef typename super::index_saver_type           index_saver_type;
+  typedef typename super::index_loader_type          index_loader_type;
+#endif
+
+private:
+#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
+#if BOOST_WORKAROUND(BOOST_MSVC,<1300)
+  typedef safe_ctr_proxy_impl<
+    bidir_node_iterator<node_type>,
+    ordered_index>                                   safe_super;
+#else
+  typedef safe_mode::safe_container<ordered_index>   safe_super;
+#endif
+#endif
+
+  typedef typename call_traits<
+    value_type>::param_type                          value_param_type;
+  typedef typename call_traits<
+    key_type>::param_type                            key_param_type;
+
+  /* Needed to avoid commas in BOOST_MULTI_INDEX_OVERLOADS_TO_VARTEMPL
+   * expansion.
+   */
+
+  typedef std::pair<iterator,bool>                   emplace_return_type;
+
+public:
+
+  /* construct/copy/destroy
+   * Default and copy ctors are in the protected section as indices are
+   * not supposed to be created on their own. No range ctor either.
+   */
+
+  ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& operator=(
+    const ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x)
+  {
+    this->final()=x.final();
+    return *this;
+  }
+
+#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
+  ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& operator=(
+    std::initializer_list<value_type> list)
+  {
+    this->final()=list;
+    return *this;
+  }
+#endif
+
+  allocator_type get_allocator()const
+  {
+    return this->final().get_allocator();
+  }
+
+  /* iterators */
+
+  iterator               begin(){return make_iterator(leftmost());}
+  const_iterator         begin()const{return make_iterator(leftmost());}
+  iterator               end(){return make_iterator(header());}
+  const_iterator         end()const{return make_iterator(header());}
+  reverse_iterator       rbegin(){return boost::make_reverse_iterator(end());}
+  const_reverse_iterator rbegin()const{return make_reverse_iterator(end());}
+  reverse_iterator       rend(){return make_reverse_iterator(begin());}
+  const_reverse_iterator rend()const{return make_reverse_iterator(begin());}
+  const_iterator         cbegin()const{return begin();}
+  const_iterator         cend()const{return end();}
+  const_reverse_iterator crbegin()const{return rbegin();}
+  const_reverse_iterator crend()const{return rend();}
+
+  iterator iterator_to(const value_type& x)
+  {
+    return make_iterator(node_from_value<node_type>(&x));
+  }
+
+  const_iterator iterator_to(const value_type& x)const
+  {
+    return make_iterator(node_from_value<node_type>(&x));
+  }
+
+  /* capacity */
+
+  bool      empty()const{return this->final_empty_();}
+  size_type size()const{return this->final_size_();}
+  size_type max_size()const{return this->final_max_size_();}
+
+  /* modifiers */
+
+  BOOST_MULTI_INDEX_OVERLOADS_TO_VARTEMPL(
+    emplace_return_type,emplace,emplace_impl)
+
+  BOOST_MULTI_INDEX_OVERLOADS_TO_VARTEMPL_EXTRA_ARG(
+    iterator,emplace_hint,emplace_hint_impl,iterator,position)
+
+  std::pair<iterator,bool> insert(const value_type& x)
+  {
+    BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
+    std::pair<final_node_type*,bool> p=this->final_insert_(x);
+    return std::pair<iterator,bool>(make_iterator(p.first),p.second);
+  }
+
+  std::pair<iterator,bool> insert(BOOST_RV_REF(value_type) x)
+  {
+    BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
+    std::pair<final_node_type*,bool> p=this->final_insert_rv_(x);
+    return std::pair<iterator,bool>(make_iterator(p.first),p.second);
+  }
+
+  iterator insert(iterator position,const value_type& x)
+  {
+    BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
+    BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
+    BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
+    std::pair<final_node_type*,bool> p=this->final_insert_(
+      x,static_cast<final_node_type*>(position.get_node()));
+    return make_iterator(p.first);
+  }
+
+  iterator insert(iterator position,BOOST_RV_REF(value_type) x)
+  {
+    BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
+    BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
+    BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
+    std::pair<final_node_type*,bool> p=this->final_insert_rv_(
+      x,static_cast<final_node_type*>(position.get_node()));
+    return make_iterator(p.first);
+  }
+
+  template<typename InputIterator>
+  void insert(InputIterator first,InputIterator last)
+  {
+    BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
+    node_type* hint=header(); /* end() */
+    for(;first!=last;++first){
+      hint=this->final_insert_ref_(
+        *first,static_cast<final_node_type*>(hint)).first;
+      node_type::increment(hint);
+    }
+  }
+
+#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
+  void insert(std::initializer_list<value_type> list)
+  {
+    insert(list.begin(),list.end());
+  }
+#endif
+
+  iterator erase(iterator position)
+  {
+    BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
+    BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position);
+    BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
+    BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
+    this->final_erase_(static_cast<final_node_type*>(position++.get_node()));
+    return position;
+  }
+
+  size_type erase(key_param_type x)
+  {
+    BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
+    std::pair<iterator,iterator> p=equal_range(x);
+    size_type s=0;
+    while(p.first!=p.second){
+      p.first=erase(p.first);
+      ++s;
+    }
+    return s;
+  }
+
+  iterator erase(iterator first,iterator last)
+  {
+    BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(first);
+    BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(last);
+    BOOST_MULTI_INDEX_CHECK_IS_OWNER(first,*this);
+    BOOST_MULTI_INDEX_CHECK_IS_OWNER(last,*this);
+    BOOST_MULTI_INDEX_CHECK_VALID_RANGE(first,last);
+    BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
+    while(first!=last){
+      first=erase(first);
+    }
+    return first;
+  }
+
+  bool replace(iterator position,const value_type& x)
+  {
+    BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
+    BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position);
+    BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
+    BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
+    return this->final_replace_(
+      x,static_cast<final_node_type*>(position.get_node()));
+  }
+
+  bool replace(iterator position,BOOST_RV_REF(value_type) x)
+  {
+    BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
+    BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position);
+    BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
+    BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
+    return this->final_replace_rv_(
+      x,static_cast<final_node_type*>(position.get_node()));
+  }
+
+  template<typename Modifier>
+  bool modify(iterator position,Modifier mod)
+  {
+    BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
+    BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position);
+    BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
+    BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
+
+#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
+    /* MSVC++ 6.0 optimizer on safe mode code chokes if this
+     * this is not added. Left it for all compilers as it does no
+     * harm.
+     */
+
+    position.detach();
+#endif
+
+    return this->final_modify_(
+      mod,static_cast<final_node_type*>(position.get_node()));
+  }
+
+  template<typename Modifier,typename Rollback>
+  bool modify(iterator position,Modifier mod,Rollback back)
+  {
+    BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
+    BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position);
+    BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
+    BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
+
+#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
+    /* MSVC++ 6.0 optimizer on safe mode code chokes if this
+     * this is not added. Left it for all compilers as it does no
+     * harm.
+     */
+
+    position.detach();
+#endif
+
+    return this->final_modify_(
+      mod,back,static_cast<final_node_type*>(position.get_node()));
+  }
+
+  template<typename Modifier>
+  bool modify_key(iterator position,Modifier mod)
+  {
+    BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
+    BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position);
+    BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
+    BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
+    return modify(
+      position,modify_key_adaptor<Modifier,value_type,KeyFromValue>(mod,key));
+  }
+
+  template<typename Modifier,typename Rollback>
+  bool modify_key(iterator position,Modifier mod,Rollback back)
+  {
+    BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
+    BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position);
+    BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
+    BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
+    return modify(
+      position,
+      modify_key_adaptor<Modifier,value_type,KeyFromValue>(mod,key),
+      modify_key_adaptor<Rollback,value_type,KeyFromValue>(back,key));
+  }
+
+  void swap(ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x)
+  {
+    BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
+    BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT_OF(x);
+    this->final_swap_(x.final());
+  }
+
+  void clear()
+  {
+    BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
+    this->final_clear_();
+  }
+
+  /* observers */
+
+  key_from_value key_extractor()const{return key;}
+  key_compare    key_comp()const{return comp_;}
+  value_compare  value_comp()const{return value_compare(key,comp_);}
+
+  /* set operations */
+
+  /* Internally, these ops rely on const_iterator being the same
+   * type as iterator.
+   */
+
+  template<typename CompatibleKey>
+  iterator find(const CompatibleKey& x)const
+  {
+    return make_iterator(ordered_index_find(root(),header(),key,x,comp_));
+  }
+
+  template<typename CompatibleKey,typename CompatibleCompare>
+  iterator find(
+    const CompatibleKey& x,const CompatibleCompare& comp)const
+  {
+    return make_iterator(ordered_index_find(root(),header(),key,x,comp));
+  }
+
+  template<typename CompatibleKey>
+  size_type count(const CompatibleKey& x)const
+  {
+    return count(x,comp_);
+  }
+
+  template<typename CompatibleKey,typename CompatibleCompare>
+  size_type count(const CompatibleKey& x,const CompatibleCompare& comp)const
+  {
+    std::pair<iterator,iterator> p=equal_range(x,comp);
+    size_type n=std::distance(p.first,p.second);
+    return n;
+  }
+
+  template<typename CompatibleKey>
+  iterator lower_bound(const CompatibleKey& x)const
+  {
+    return make_iterator(
+      ordered_index_lower_bound(root(),header(),key,x,comp_));
+  }
+
+  template<typename CompatibleKey,typename CompatibleCompare>
+  iterator lower_bound(
+    const CompatibleKey& x,const CompatibleCompare& comp)const
+  {
+    return make_iterator(
+      ordered_index_lower_bound(root(),header(),key,x,comp));
+  }
+
+  template<typename CompatibleKey>
+  iterator upper_bound(const CompatibleKey& x)const
+  {
+    return make_iterator(
+      ordered_index_upper_bound(root(),header(),key,x,comp_));
+  }
+
+  template<typename CompatibleKey,typename CompatibleCompare>
+  iterator upper_bound(
+    const CompatibleKey& x,const CompatibleCompare& comp)const
+  {
+    return make_iterator(
+      ordered_index_upper_bound(root(),header(),key,x,comp));
+  }
+
+  template<typename CompatibleKey>
+  std::pair<iterator,iterator> equal_range(
+    const CompatibleKey& x)const
+  {
+    std::pair<node_type*,node_type*> p=
+      ordered_index_equal_range(root(),header(),key,x,comp_);
+    return std::pair<iterator,iterator>(
+      make_iterator(p.first),make_iterator(p.second));
+  }
+
+  template<typename CompatibleKey,typename CompatibleCompare>
+  std::pair<iterator,iterator> equal_range(
+    const CompatibleKey& x,const CompatibleCompare& comp)const
+  {
+    std::pair<node_type*,node_type*> p=
+      ordered_index_equal_range(root(),header(),key,x,comp);
+    return std::pair<iterator,iterator>(
+      make_iterator(p.first),make_iterator(p.second));
+  }
+
+  /* range */
+
+  template<typename LowerBounder,typename UpperBounder>
+  std::pair<iterator,iterator>
+  range(LowerBounder lower,UpperBounder upper)const
+  {
+    typedef typename mpl::if_<
+      is_same<LowerBounder,unbounded_type>,
+      BOOST_DEDUCED_TYPENAME mpl::if_<
+        is_same<UpperBounder,unbounded_type>,
+        both_unbounded_tag,
+        lower_unbounded_tag
+      >::type,
+      BOOST_DEDUCED_TYPENAME mpl::if_<
+        is_same<UpperBounder,unbounded_type>,
+        upper_unbounded_tag,
+        none_unbounded_tag
+      >::type
+    >::type dispatch;
+
+    return range(lower,upper,dispatch());
+  }
+
+BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
+  ordered_index(const ctor_args_list& args_list,const allocator_type& al):
+    super(args_list.get_tail(),al),
+    key(tuples::get<0>(args_list.get_head())),
+    comp_(tuples::get<1>(args_list.get_head()))
+  {
+    empty_initialize();
+  }
+
+  ordered_index(
+    const ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x):
+    super(x),
+
+#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
+    safe_super(),
+#endif
+
+    key(x.key),
+    comp_(x.comp_)
+  {
+    /* Copy ctor just takes the key and compare objects from x. The rest is
+     * done in a subsequent call to copy_().
+     */
+  }
+
+  ordered_index(
+     const ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x,
+     do_not_copy_elements_tag):
+    super(x,do_not_copy_elements_tag()),
+
+#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
+    safe_super(),
+#endif
+
+    key(x.key),
+    comp_(x.comp_)
+  {
+    empty_initialize();
+  }
+
+  ~ordered_index()
+  {
+    /* the container is guaranteed to be empty by now */
+  }
+
+#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
+  iterator       make_iterator(node_type* node){return iterator(node,this);}
+  const_iterator make_iterator(node_type* node)const
+    {return const_iterator(node,const_cast<ordered_index*>(this));}
+#else
+  iterator       make_iterator(node_type* node){return iterator(node);}
+  const_iterator make_iterator(node_type* node)const
+                   {return const_iterator(node);}
+#endif
+
+  void copy_(
+    const ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x,
+    const copy_map_type& map)
+  {
+    if(!x.root()){
+      empty_initialize();
+    }
+    else{
+      header()->color()=x.header()->color();
+
+      node_type* root_cpy=map.find(static_cast<final_node_type*>(x.root()));
+      header()->parent()=root_cpy->impl();
+
+      node_type* leftmost_cpy=map.find(
+        static_cast<final_node_type*>(x.leftmost()));
+      header()->left()=leftmost_cpy->impl();
+
+      node_type* rightmost_cpy=map.find(
+        static_cast<final_node_type*>(x.rightmost()));
+      header()->right()=rightmost_cpy->impl();
+
+      typedef typename copy_map_type::const_iterator copy_map_iterator;
+      for(copy_map_iterator it=map.begin(),it_end=map.end();it!=it_end;++it){
+        node_type* org=it->first;
+        node_type* cpy=it->second;
+
+        cpy->color()=org->color();
+
+        node_impl_pointer parent_org=org->parent();
+        if(parent_org==node_impl_pointer(0))cpy->parent()=node_impl_pointer(0);
+        else{
+          node_type* parent_cpy=map.find(
+            static_cast<final_node_type*>(node_type::from_impl(parent_org)));
+          cpy->parent()=parent_cpy->impl();
+          if(parent_org->left()==org->impl()){
+            parent_cpy->left()=cpy->impl();
+          }
+          else if(parent_org->right()==org->impl()){
+            /* header() does not satisfy this nor the previous check */
+            parent_cpy->right()=cpy->impl();
+          }
+        }
+
+        if(org->left()==node_impl_pointer(0))
+          cpy->left()=node_impl_pointer(0);
+        if(org->right()==node_impl_pointer(0))
+          cpy->right()=node_impl_pointer(0);
+      }
+    }
+
+    super::copy_(x,map);
+  }
+
+  template<typename Variant>
+  node_type* insert_(value_param_type v,node_type* x,Variant variant)
+  {
+    link_info inf;
+    if(!link_point(key(v),inf,Category())){
+      return node_type::from_impl(inf.pos);
+    }
+
+    node_type* res=static_cast<node_type*>(super::insert_(v,x,variant));
+    if(res==x){
+      node_impl_type::link(x->impl(),inf.side,inf.pos,header()->impl());
+    }
+    return res;
+  }
+
+  template<typename Variant>
+  node_type* insert_(
+    value_param_type v,node_type* position,node_type* x,Variant variant)
+  {
+    link_info inf;
+    if(!hinted_link_point(key(v),position,inf,Category())){
+      return node_type::from_impl(inf.pos);
+    }
+
+    node_type* res=static_cast<node_type*>(super::insert_(v,position,x,variant));
+    if(res==x){
+      node_impl_type::link(x->impl(),inf.side,inf.pos,header()->impl());
+    }
+    return res;
+  }
+
+  void erase_(node_type* x)
+  {
+    node_impl_type::rebalance_for_erase(
+      x->impl(),header()->parent(),header()->left(),header()->right());
+    super::erase_(x);
+
+#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
+    detach_iterators(x);
+#endif
+  }
+
+  void delete_all_nodes_()
+  {
+    delete_all_nodes(root());
+  }
+
+  void clear_()
+  {
+    super::clear_();
+    empty_initialize();
+
+#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
+    safe_super::detach_dereferenceable_iterators();
+#endif
+  }
+
+  void swap_(ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x)
+  {
+    std::swap(key,x.key);
+    std::swap(comp_,x.comp_);
+
+#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
+    safe_super::swap(x);
+#endif
+
+    super::swap_(x);
+  }
+
+  void swap_elements_(
+    ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x)
+  {
+#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
+    safe_super::swap(x);
+#endif
+
+    super::swap_elements_(x);
+  }
+
+  template<typename Variant>
+  bool replace_(value_param_type v,node_type* x,Variant variant)
+  {
+    if(in_place(v,x,Category())){
+      return super::replace_(v,x,variant);
+    }
+
+    node_type* next=x;
+    node_type::increment(next);
+
+    node_impl_type::rebalance_for_erase(
+      x->impl(),header()->parent(),header()->left(),header()->right());
+
+    BOOST_TRY{
+      link_info inf;
+      if(link_point(key(v),inf,Category())&&super::replace_(v,x,variant)){
+        node_impl_type::link(x->impl(),inf.side,inf.pos,header()->impl());
+        return true;
+      }
+      node_impl_type::restore(x->impl(),next->impl(),header()->impl());
+      return false;
+    }
+    BOOST_CATCH(...){
+      node_impl_type::restore(x->impl(),next->impl(),header()->impl());
+      BOOST_RETHROW;
+    }
+    BOOST_CATCH_END
+  }
+
+  bool modify_(node_type* x)
+  {
+    bool b;
+    BOOST_TRY{
+      b=in_place(x->value(),x,Category());
+    }
+    BOOST_CATCH(...){
+      erase_(x);
+      BOOST_RETHROW;
+    }
+    BOOST_CATCH_END
+    if(!b){
+      node_impl_type::rebalance_for_erase(
+        x->impl(),header()->parent(),header()->left(),header()->right());
+      BOOST_TRY{
+        link_info inf;
+        if(!link_point(key(x->value()),inf,Category())){
+          super::erase_(x);
+
+#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
+          detach_iterators(x);
+#endif
+          return false;
+        }
+        node_impl_type::link(x->impl(),inf.side,inf.pos,header()->impl());
+      }
+      BOOST_CATCH(...){
+        super::erase_(x);
+
+#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
+        detach_iterators(x);
+#endif
+
+        BOOST_RETHROW;
+      }
+      BOOST_CATCH_END
+    }
+
+    BOOST_TRY{
+      if(!super::modify_(x)){
+        node_impl_type::rebalance_for_erase(
+          x->impl(),header()->parent(),header()->left(),header()->right());
+
+#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
+        detach_iterators(x);
+#endif
+
+        return false;
+      }
+      else return true;
+    }
+    BOOST_CATCH(...){
+      node_impl_type::rebalance_for_erase(
+        x->impl(),header()->parent(),header()->left(),header()->right());
+
+#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
+      detach_iterators(x);
+#endif
+
+      BOOST_RETHROW;
+    }
+    BOOST_CATCH_END
+  }
+
+  bool modify_rollback_(node_type* x)
+  {
+    if(in_place(x->value(),x,Category())){
+      return super::modify_rollback_(x);
+    }
+
+    node_type* next=x;
+    node_type::increment(next);
+
+    node_impl_type::rebalance_for_erase(
+      x->impl(),header()->parent(),header()->left(),header()->right());
+
+    BOOST_TRY{
+      link_info inf;
+      if(link_point(key(x->value()),inf,Category())&&
+         super::modify_rollback_(x)){
+        node_impl_type::link(x->impl(),inf.side,inf.pos,header()->impl());
+        return true;
+      }
+      node_impl_type::restore(x->impl(),next->impl(),header()->impl());
+      return false;
+    }
+    BOOST_CATCH(...){
+      node_impl_type::restore(x->impl(),next->impl(),header()->impl());
+      BOOST_RETHROW;
+    }
+    BOOST_CATCH_END
+  }
+
+#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
+  /* serialization */
+
+  template<typename Archive>
+  void save_(
+    Archive& ar,const unsigned int version,const index_saver_type& sm)const
+  {
+    save_(ar,version,sm,Category());
+  }
+
+  template<typename Archive>
+  void load_(Archive& ar,const unsigned int version,const index_loader_type& lm)
+  {
+    load_(ar,version,lm,Category());
+  }
+#endif
+
+#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)
+  /* invariant stuff */
+
+  bool invariant_()const
+  {
+    if(size()==0||begin()==end()){
+      if(size()!=0||begin()!=end()||
+         header()->left()!=header()->impl()||
+         header()->right()!=header()->impl())return false;
+    }
+    else{
+      if((size_type)std::distance(begin(),end())!=size())return false;
+
+      std::size_t len=node_impl_type::black_count(
+        leftmost()->impl(),root()->impl());
+      for(const_iterator it=begin(),it_end=end();it!=it_end;++it){
+        node_type* x=it.get_node();
+        node_type* left_x=node_type::from_impl(x->left());
+        node_type* right_x=node_type::from_impl(x->right());
+
+        if(x->color()==red){
+          if((left_x&&left_x->color()==red)||
+             (right_x&&right_x->color()==red))return false;
+        }
+        if(left_x&&comp_(key(x->value()),key(left_x->value())))return false;
+        if(right_x&&comp_(key(right_x->value()),key(x->value())))return false;
+        if(!left_x&&!right_x&&
+           node_impl_type::black_count(x->impl(),root()->impl())!=len)
+          return false;
+      }
+
+      if(leftmost()->impl()!=node_impl_type::minimum(root()->impl()))
+        return false;
+      if(rightmost()->impl()!=node_impl_type::maximum(root()->impl()))
+        return false;
+    }
+
+    return super::invariant_();
+  }
+
+
+  /* This forwarding function eases things for the boost::mem_fn construct
+   * in BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT. Actually,
+   * final_check_invariant is already an inherited member function of
+   * ordered_index.
+   */
+  void check_invariant_()const{this->final_check_invariant_();}
+#endif
+
+private:
+  node_type* header()const{return this->final_header();}
+  node_type* root()const{return node_type::from_impl(header()->parent());}
+  node_type* leftmost()const{return node_type::from_impl(header()->left());}
+  node_type* rightmost()const{return node_type::from_impl(header()->right());}
+
+  void empty_initialize()
+  {
+    header()->color()=red;
+    /* used to distinguish header() from root, in iterator.operator++ */
+
+    header()->parent()=node_impl_pointer(0);
+    header()->left()=header()->impl();
+    header()->right()=header()->impl();
+  }
+
+  struct link_info
+  {
+    link_info():side(to_left){}
+
+    ordered_index_side side;
+    node_impl_pointer  pos;
+  };
+
+  bool link_point(key_param_type k,link_info& inf,ordered_unique_tag)
+  {
+    node_type* y=header();
+    node_type* x=root();
+    bool c=true;
+    while(x){
+      y=x;
+      c=comp_(k,key(x->value()));
+      x=node_type::from_impl(c?x->left():x->right());
+    }
+    node_type* yy=y;
+    if(c){
+      if(yy==leftmost()){
+        inf.side=to_left;
+        inf.pos=y->impl();
+        return true;
+      }
+      else node_type::decrement(yy);
+    }
+
+    if(comp_(key(yy->value()),k)){
+      inf.side=c?to_left:to_right;
+      inf.pos=y->impl();
+      return true;
+    }
+    else{
+      inf.pos=yy->impl();
+      return false;
+    }
+  }
+
+  bool link_point(key_param_type k,link_info& inf,ordered_non_unique_tag)
+  {
+    node_type* y=header();
+    node_type* x=root();
+    bool c=true;
+    while (x){
+     y=x;
+     c=comp_(k,key(x->value()));
+     x=node_type::from_impl(c?x->left():x->right());
+    }
+    inf.side=c?to_left:to_right;
+    inf.pos=y->impl();
+    return true;
+  }
+
+  bool lower_link_point(key_param_type k,link_info& inf,ordered_non_unique_tag)
+  {
+    node_type* y=header();
+    node_type* x=root();
+    bool c=false;
+    while (x){
+     y=x;
+     c=comp_(key(x->value()),k);
+     x=node_type::from_impl(c?x->right():x->left());
+    }
+    inf.side=c?to_right:to_left;
+    inf.pos=y->impl();
+    return true;
+  }
+
+  bool hinted_link_point(
+    key_param_type k,node_type* position,link_info& inf,ordered_unique_tag)
+  {
+    if(position->impl()==header()->left()){
+      if(size()>0&&comp_(k,key(position->value()))){
+        inf.side=to_left;
+        inf.pos=position->impl();
+        return true;
+      }
+      else return link_point(k,inf,ordered_unique_tag());
+    }
+    else if(position==header()){
+      if(comp_(key(rightmost()->value()),k)){
+        inf.side=to_right;
+        inf.pos=rightmost()->impl();
+        return true;
+      }
+      else return link_point(k,inf,ordered_unique_tag());
+    }
+    else{
+      node_type* before=position;
+      node_type::decrement(before);
+      if(comp_(key(before->value()),k)&&comp_(k,key(position->value()))){
+        if(before->right()==node_impl_pointer(0)){
+          inf.side=to_right;
+          inf.pos=before->impl();
+          return true;
+        }
+        else{
+          inf.side=to_left;
+          inf.pos=position->impl();
+          return true;
+        }
+      }
+      else return link_point(k,inf,ordered_unique_tag());
+    }
+  }
+
+  bool hinted_link_point(
+    key_param_type k,node_type* position,link_info& inf,ordered_non_unique_tag)
+  {
+    if(position->impl()==header()->left()){
+      if(size()>0&&!comp_(key(position->value()),k)){
+        inf.side=to_left;
+        inf.pos=position->impl();
+        return true;
+      }
+      else return lower_link_point(k,inf,ordered_non_unique_tag());
+    }
+    else if(position==header()){
+      if(!comp_(k,key(rightmost()->value()))){
+        inf.side=to_right;
+        inf.pos=rightmost()->impl();
+        return true;
+      }
+      else return link_point(k,inf,ordered_non_unique_tag());
+    }
+    else{
+      node_type* before=position;
+      node_type::decrement(before);
+      if(!comp_(k,key(before->value()))){
+        if(!comp_(key(position->value()),k)){
+          if(before->right()==node_impl_pointer(0)){
+            inf.side=to_right;
+            inf.pos=before->impl();
+            return true;
+          }
+          else{
+            inf.side=to_left;
+            inf.pos=position->impl();
+            return true;
+          }
+        }
+        else return lower_link_point(k,inf,ordered_non_unique_tag());
+      }
+      else return link_point(k,inf,ordered_non_unique_tag());
+    }
+  }
+
+  void delete_all_nodes(node_type* x)
+  {
+    if(!x)return;
+
+    delete_all_nodes(node_type::from_impl(x->left()));
+    delete_all_nodes(node_type::from_impl(x->right()));
+    this->final_delete_node_(static_cast<final_node_type*>(x));
+  }
+
+  bool in_place(value_param_type v,node_type* x,ordered_unique_tag)
+  {
+    node_type* y;
+    if(x!=leftmost()){
+      y=x;
+      node_type::decrement(y);
+      if(!comp_(key(y->value()),key(v)))return false;
+    }
+
+    y=x;
+    node_type::increment(y);
+    return y==header()||comp_(key(v),key(y->value()));
+  }
+
+  bool in_place(value_param_type v,node_type* x,ordered_non_unique_tag)
+  {
+    node_type* y;
+    if(x!=leftmost()){
+      y=x;
+      node_type::decrement(y);
+      if(comp_(key(v),key(y->value())))return false;
+    }
+
+    y=x;
+    node_type::increment(y);
+    return y==header()||!comp_(key(y->value()),key(v));
+  }
+
+#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
+  void detach_iterators(node_type* x)
+  {
+    iterator it=make_iterator(x);
+    safe_mode::detach_equivalent_iterators(it);
+  }
+#endif
+
+  template<BOOST_MULTI_INDEX_TEMPLATE_PARAM_PACK>
+  std::pair<iterator,bool> emplace_impl(BOOST_MULTI_INDEX_FUNCTION_PARAM_PACK)
+  {
+    BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
+    std::pair<final_node_type*,bool>p=
+      this->final_emplace_(BOOST_MULTI_INDEX_FORWARD_PARAM_PACK);
+    return std::pair<iterator,bool>(make_iterator(p.first),p.second);
+  }
+
+  template<BOOST_MULTI_INDEX_TEMPLATE_PARAM_PACK>
+  iterator emplace_hint_impl(
+    iterator position,BOOST_MULTI_INDEX_FUNCTION_PARAM_PACK)
+  {
+    BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
+    BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
+    BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
+    std::pair<final_node_type*,bool>p=
+      this->final_emplace_hint_(
+        static_cast<final_node_type*>(position.get_node()),
+        BOOST_MULTI_INDEX_FORWARD_PARAM_PACK);
+    return make_iterator(p.first);
+  }
+
+  template<typename LowerBounder,typename UpperBounder>
+  std::pair<iterator,iterator>
+  range(LowerBounder lower,UpperBounder upper,none_unbounded_tag)const
+  {
+    node_type* y=header();
+    node_type* z=root();
+
+    while(z){
+      if(!lower(key(z->value()))){
+        z=node_type::from_impl(z->right());
+      }
+      else if(!upper(key(z->value()))){
+        y=z;
+        z=node_type::from_impl(z->left());
+      }
+      else{
+        return std::pair<iterator,iterator>(
+          make_iterator(
+            lower_range(node_type::from_impl(z->left()),z,lower)),
+          make_iterator(
+            upper_range(node_type::from_impl(z->right()),y,upper)));
+      }
+    }
+
+    return std::pair<iterator,iterator>(make_iterator(y),make_iterator(y));
+  }
+
+  template<typename LowerBounder,typename UpperBounder>
+  std::pair<iterator,iterator>
+  range(LowerBounder,UpperBounder upper,lower_unbounded_tag)const
+  {
+    return std::pair<iterator,iterator>(
+      begin(),
+      make_iterator(upper_range(root(),header(),upper)));
+  }
+
+  template<typename LowerBounder,typename UpperBounder>
+  std::pair<iterator,iterator>
+  range(LowerBounder lower,UpperBounder,upper_unbounded_tag)const
+  {
+    return std::pair<iterator,iterator>(
+      make_iterator(lower_range(root(),header(),lower)),
+      end());
+  }
+
+  template<typename LowerBounder,typename UpperBounder>
+  std::pair<iterator,iterator>
+  range(LowerBounder,UpperBounder,both_unbounded_tag)const
+  {
+    return std::pair<iterator,iterator>(begin(),end());
+  }
+
+  template<typename LowerBounder>
+  node_type * lower_range(node_type* top,node_type* y,LowerBounder lower)const
+  {
+    while(top){
+      if(lower(key(top->value()))){
+        y=top;
+        top=node_type::from_impl(top->left());
+      }
+      else top=node_type::from_impl(top->right());
+    }
+
+    return y;
+  }
+
+  template<typename UpperBounder>
+  node_type * upper_range(node_type* top,node_type* y,UpperBounder upper)const
+  {
+    while(top){
+      if(!upper(key(top->value()))){
+        y=top;
+        top=node_type::from_impl(top->left());
+      }
+      else top=node_type::from_impl(top->right());
+    }
+
+    return y;
+  }
+
+#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
+  template<typename Archive>
+  void save_(
+    Archive& ar,const unsigned int version,const index_saver_type& sm,
+    ordered_unique_tag)const
+  {
+    super::save_(ar,version,sm);
+  }
+
+  template<typename Archive>
+  void load_(
+    Archive& ar,const unsigned int version,const index_loader_type& lm,
+    ordered_unique_tag)
+  {
+    super::load_(ar,version,lm);
+  }
+
+  template<typename Archive>
+  void save_(
+    Archive& ar,const unsigned int version,const index_saver_type& sm,
+    ordered_non_unique_tag)const
+  {
+    typedef duplicates_iterator<node_type,value_compare> dup_iterator;
+
+    sm.save(
+      dup_iterator(begin().get_node(),end().get_node(),value_comp()),
+      dup_iterator(end().get_node(),value_comp()),
+      ar,version);
+    super::save_(ar,version,sm);
+  }
+
+  template<typename Archive>
+  void load_(
+    Archive& ar,const unsigned int version,const index_loader_type& lm,
+    ordered_non_unique_tag)
+  {
+    lm.load(
+      ::boost::bind(&ordered_index::rearranger,this,_1,_2),
+      ar,version);
+    super::load_(ar,version,lm);
+  }
+
+  void rearranger(node_type* position,node_type *x)
+  {
+    if(!position||comp_(key(position->value()),key(x->value()))){
+      position=lower_bound(key(x->value())).get_node();
+    }
+    else if(comp_(key(x->value()),key(position->value()))){
+      /* inconsistent rearrangement */
+      throw_exception(
+        archive::archive_exception(
+          archive::archive_exception::other_exception));
+    }
+    else node_type::increment(position);
+
+    if(position!=x){
+      node_impl_type::rebalance_for_erase(
+        x->impl(),header()->parent(),header()->left(),header()->right());
+      node_impl_type::restore(
+        x->impl(),position->impl(),header()->impl());
+    }
+  }
+#endif /* serialization */
+
+  key_from_value key;
+  key_compare    comp_;
+
+#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)&&\
+    BOOST_WORKAROUND(__MWERKS__,<=0x3003)
+#pragma parse_mfunc_templ reset
+#endif
+};
+
+/* comparison */
+
+template<
+  typename KeyFromValue1,typename Compare1,
+  typename SuperMeta1,typename TagList1,typename Category1,
+  typename KeyFromValue2,typename Compare2,
+  typename SuperMeta2,typename TagList2,typename Category2
+>
+bool operator==(
+  const ordered_index<KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x,
+  const ordered_index<KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y)
+{
+  return x.size()==y.size()&&std::equal(x.begin(),x.end(),y.begin());
+}
+
+template<
+  typename KeyFromValue1,typename Compare1,
+  typename SuperMeta1,typename TagList1,typename Category1,
+  typename KeyFromValue2,typename Compare2,
+  typename SuperMeta2,typename TagList2,typename Category2
+>
+bool operator<(
+  const ordered_index<KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x,
+  const ordered_index<KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y)
+{
+  return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end());
+}
+
+template<
+  typename KeyFromValue1,typename Compare1,
+  typename SuperMeta1,typename TagList1,typename Category1,
+  typename KeyFromValue2,typename Compare2,
+  typename SuperMeta2,typename TagList2,typename Category2
+>
+bool operator!=(
+  const ordered_index<KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x,
+  const ordered_index<KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y)
+{
+  return !(x==y);
+}
+
+template<
+  typename KeyFromValue1,typename Compare1,
+  typename SuperMeta1,typename TagList1,typename Category1,
+  typename KeyFromValue2,typename Compare2,
+  typename SuperMeta2,typename TagList2,typename Category2
+>
+bool operator>(
+  const ordered_index<KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x,
+  const ordered_index<KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y)
+{
+  return y<x;
+}
+
+template<
+  typename KeyFromValue1,typename Compare1,
+  typename SuperMeta1,typename TagList1,typename Category1,
+  typename KeyFromValue2,typename Compare2,
+  typename SuperMeta2,typename TagList2,typename Category2
+>
+bool operator>=(
+  const ordered_index<KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x,
+  const ordered_index<KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y)
+{
+  return !(x<y);
+}
+
+template<
+  typename KeyFromValue1,typename Compare1,
+  typename SuperMeta1,typename TagList1,typename Category1,
+  typename KeyFromValue2,typename Compare2,
+  typename SuperMeta2,typename TagList2,typename Category2
+>
+bool operator<=(
+  const ordered_index<KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x,
+  const ordered_index<KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y)
+{
+  return !(x>y);
+}
+
+/*  specialized algorithms */
+
+template<
+  typename KeyFromValue,typename Compare,
+  typename SuperMeta,typename TagList,typename Category
+>
+void swap(
+  ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x,
+  ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& y)
+{
+  x.swap(y);
+}
+
+} /* namespace multi_index::detail */
+
+/* ordered_index specifiers */
+
+template<typename Arg1,typename Arg2,typename Arg3>
+struct ordered_unique
+{
+  typedef typename detail::ordered_index_args<
+    Arg1,Arg2,Arg3>                                index_args;
+  typedef typename index_args::tag_list_type::type tag_list_type;
+  typedef typename index_args::key_from_value_type key_from_value_type;
+  typedef typename index_args::compare_type        compare_type;
+
+  template<typename Super>
+  struct node_class
+  {
+    typedef detail::ordered_index_node<Super> type;
+  };
+
+  template<typename SuperMeta>
+  struct index_class
+  {
+    typedef detail::ordered_index<
+      key_from_value_type,compare_type,
+      SuperMeta,tag_list_type,detail::ordered_unique_tag> type;
+  };
+};
+
+template<typename Arg1,typename Arg2,typename Arg3>
+struct ordered_non_unique
+{
+  typedef detail::ordered_index_args<
+    Arg1,Arg2,Arg3>                                index_args;
+  typedef typename index_args::tag_list_type::type tag_list_type;
+  typedef typename index_args::key_from_value_type key_from_value_type;
+  typedef typename index_args::compare_type        compare_type;
+
+  template<typename Super>
+  struct node_class
+  {
+    typedef detail::ordered_index_node<Super> type;
+  };
+
+  template<typename SuperMeta>
+  struct index_class
+  {
+    typedef detail::ordered_index<
+      key_from_value_type,compare_type,
+      SuperMeta,tag_list_type,detail::ordered_non_unique_tag> type;
+  };
+};
+
+} /* namespace multi_index */
+
+} /* namespace boost */
+
+/* Boost.Foreach compatibility */
+
+template<
+  typename KeyFromValue,typename Compare,
+  typename SuperMeta,typename TagList,typename Category
+>
+inline boost::mpl::true_* boost_foreach_is_noncopyable(
+  boost::multi_index::detail::ordered_index<
+    KeyFromValue,Compare,SuperMeta,TagList,Category>*&,
+  boost::foreach::tag)
+{
+  return 0;
+}
+
+#undef BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT
+#undef BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT_OF
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/cas128strong.hpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/cas128strong.hpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/cas128strong.hpp.patch	(revision 27955)
@@ -0,0 +1,17 @@
+199c199
+<     explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0)
+---
+>     explicit base_atomic(value_type const& v) BOOST_NOEXCEPT 
+200a201
+> 	memset(&v_, 0, sizeof(v_));
+207c208,209
+<         storage_type value_s = 0;
+---
+> 	storage_type value_s;
+> 	memset(&value_s, 0, sizeof(value_s));
+250c252,254
+<         storage_type expected_s = 0, desired_s = 0;
+---
+> 	storage_type expected_s, desired_s; 
+> 	memset(&expected_s, 0, sizeof(expected_s));
+> 	memset(&desired_s, 0, sizeof(desired_s));
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/darwin.jam.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/darwin.jam.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/darwin.jam.patch	(revision 27955)
@@ -0,0 +1,4 @@
+587c587
+<     "$(.LIBTOOL)" -static -o "$(<:T)"  $(ARFLAGS)  "$(>:T)"
+---
+>     /usr/bin/libtool -static -o "$(<:T)"  $(ARFLAGS)  "$(>:T)"
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/darwin.py.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/darwin.py.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/darwin.py.patch	(revision 27955)
@@ -0,0 +1,4 @@
+40c40
+< toolset.flags ('darwin.compile', 'OPTIONS', None, ['-Wno-long-double', '-no-cpp-precomp'])
+---
+> toolset.flags ('darwin.compile', 'OPTIONS', None, ['-Wno-long-double'])
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/gcc-atomic.hpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/gcc-atomic.hpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/gcc-atomic.hpp.patch	(revision 27955)
@@ -0,0 +1,28 @@
+961c961
+<     explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0)
+---
+>     explicit base_atomic(value_type const& v) BOOST_NOEXCEPT
+962a963
+>         memset(&v_, 0, sizeof(v_));
+968c969,970
+<         storage_type tmp = 0;
+---
+>         storage_type tmp;
+>         memset(&tmp, 0, sizeof(tmp));
+983c985,986
+<         storage_type tmp = 0;
+---
+>         storage_type tmp;
+>         memset(&tmp, 0, sizeof(tmp));
+997c1000,1002
+<         storage_type expected_s = 0, desired_s = 0;
+---
+> 	storage_type expected_s, desired_s;
+> 	memset(&expected_s, 0, sizeof(expected_s));
+> 	memset(&desired_s, 0, sizeof(desired_s));
+1013c1018,1020
+<         storage_type expected_s = 0, desired_s = 0;
+---
+> 	storage_type expected_s, desired_s;
+> 	memset(&expected_s, 0, sizeof(expected_s));
+> 	memset(&desired_s, 0, sizeof(desired_s));
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/ordered_index.hpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/ordered_index.hpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/ordered_index.hpp.patch	(revision 27955)
@@ -0,0 +1,4 @@
+270c270
+<   reverse_iterator       rbegin(){return make_reverse_iterator(end());}
+---
+>   reverse_iterator       rbegin(){return boost::make_reverse_iterator(end());}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/reverse_iterator.hpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/reverse_iterator.hpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/reverse_iterator.hpp.patch	(revision 27955)
@@ -0,0 +1,4 @@
+64c64
+<       return reverse_iterator<BidirectionalIterator>(x);
+---
+>       return boost::reverse_iterator<BidirectionalIterator>(x);
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/user-config.jam.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/user-config.jam.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.55/user-config.jam.patch	(revision 27955)
@@ -0,0 +1,4 @@
+42c42
+< # using gcc ;
+---
+> using darwin : std0x : "/usr/local/gfortran/bin/x86_64-apple-darwin10-g++" : <cxxflags>-std=gnu++0x;  
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.73/boost/math/tools/user.hpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.73/boost/math/tools/user.hpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/configs/1.73/boost/math/tools/user.hpp	(revision 27955)
@@ -0,0 +1,105 @@
+// Copyright John Maddock 2007.
+// Copyright Paul A. Bristow 2007.
+
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt
+// or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_MATH_TOOLS_USER_HPP
+#define BOOST_MATH_TOOLS_USER_HPP
+
+#ifdef _MSC_VER
+#pragma once
+#endif
+
+// This file can be modified by the user to change the default policies.
+// See "Changing the Policy Defaults" in documentation.
+
+// define this if the platform has no long double functions,
+// or if the long double versions have only double precision:
+//
+// #define BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
+//
+// Performance tuning options:
+//
+// #define BOOST_MATH_POLY_METHOD 3
+// #define BOOST_MATH_RATIONAL_METHOD 3
+//
+// The maximum order of polynomial that will be evaluated
+// via an unrolled specialisation:
+//
+// #define BOOST_MATH_MAX_POLY_ORDER 17
+//
+// decide whether to store constants as integers or reals:
+//
+// #define BOOST_MATH_INT_TABLE_TYPE(RT, IT) IT
+
+//
+// Default policies follow:
+//
+// Domain errors:
+//
+// #define BOOST_MATH_DOMAIN_ERROR_POLICY throw_on_error
+//
+// Pole errors:
+//
+// #define BOOST_MATH_POLE_ERROR_POLICY throw_on_error
+//
+// Overflow Errors:
+//
+// #define BOOST_MATH_OVERFLOW_ERROR_POLICY throw_on_error
+//
+// Internal Evaluation Errors:
+//
+// #define BOOST_MATH_EVALUATION_ERROR_POLICY throw_on_error
+//
+// Underflow:
+//
+// #define BOOST_MATH_UNDERFLOW_ERROR_POLICY ignore_error
+//
+// Denorms:
+//
+// #define BOOST_MATH_DENORM_ERROR_POLICY ignore_error
+//
+// Max digits to use for internal calculations:
+//
+// #define BOOST_MATH_DIGITS10_POLICY 0
+//
+// Promote floats to doubles internally?
+//
+// #define BOOST_MATH_PROMOTE_FLOAT_POLICY true
+//
+// Promote doubles to long double internally:
+//
+#define BOOST_MATH_PROMOTE_DOUBLE_POLICY false
+//
+// What do discrete quantiles return?
+//
+// #define BOOST_MATH_DISCRETE_QUANTILE_POLICY integer_round_outwards
+//
+// If a function is mathematically undefined
+// (for example the Cauchy distribution has no mean),
+// then do we stop the code from compiling?
+//
+// #define BOOST_MATH_ASSERT_UNDEFINED_POLICY true
+//
+// Maximum series iterations permitted:
+//
+// #define BOOST_MATH_MAX_SERIES_ITERATION_POLICY 1000000
+//
+// Maximum root finding steps permitted:
+//
+// define BOOST_MATH_MAX_ROOT_ITERATION_POLICY 200
+//
+// Enable use of __float128 in numeric constants:
+//
+// #define BOOST_MATH_USE_FLOAT128
+//
+// Disable use of __float128 in numeric_constants even if the compiler looks to support it:
+//
+// #define BOOST_MATH_DISABLE_FLOAT128
+
+#endif // BOOST_MATH_TOOLS_USER_HPP
+
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.49-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.49-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.49-linux.sh	(revision 27955)
@@ -0,0 +1,35 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_49_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/boost_1_49_0.tar.gz' 'boost_1_49_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_49_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_49_0/* src
+rm -rf boost_1_49_0
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python2.7 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+./bjam install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.49-macosx-snowleopard.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.49-macosx-snowleopard.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.49-macosx-snowleopard.sh	(revision 27955)
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_49_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/boost_1_49_0.tar.gz' 'boost_1_49_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_49_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_49_0/* src
+rm -rf boost_1_49_0
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python2.7 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+#./b2 address-model=32 architecture=x86 cxxflags="-arch i386" variant=release threading=multi install
+./b2 toolset=darwin address-model=32 architecture=x86 variant=release threading=multi install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-discover.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-discover.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-discover.sh	(revision 27955)
@@ -0,0 +1,38 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+patch src/boost/mpl/aux_/config/adl.hpp ./configs/1.55/adl.hpp.patch
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python2.7 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+./bjam install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-linux-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-linux-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-linux-static.sh	(revision 27955)
@@ -0,0 +1,45 @@
+#!/bin/bash
+#set -eu # Do not `run set -eu` because it causes some targets to fail
+
+
+## Constants
+#
+VER="1_55_0"
+
+## Environment
+#
+export BOOST_ROOT="${ISSM_DIR}/externalpackages/boost"
+export CXXFLAGS='-std=c++98' # Setting CXXFLAGS to deal with C++11 incompatibility with MATLAB's Boost
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/boost_${VER}.tar.gz" "boost_${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf boost_${VER}.tar.gz
+
+# Cleanup
+rm -rf install src
+mkdir install src
+
+# Move source into 'src' directory
+mv boost_${VER}/* src/
+rm -rf boost_${VER}
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/1.55/boost/multi_index/ordered_index.hpp src/boost/multi_index
+
+# Configure
+cd src
+./bootstrap.sh \
+	--prefix=${BOOST_ROOT}/install \
+	--with-python=python2.7
+
+# Modify project config to enable MPI
+printf "\n# Enable MPI\nusing mpi ;\n" >> project-config.jam
+
+# Compile and install
+./bjam link=static install
+
+# Copy binary to install directory
+mkdir ${BOOST_ROOT}/install/bin
+cp bjam ${BOOST_ROOT}/install/bin
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-linux.sh	(revision 27955)
@@ -0,0 +1,45 @@
+#!/bin/bash
+#set -eu # Do not `run set -eu` because it causes some targets to fail
+
+
+## Constants
+#
+VER="1_55_0"
+
+## Environment
+#
+export BOOST_ROOT="${ISSM_DIR}/externalpackages/boost"
+export CXXFLAGS='-std=c++98' # Setting CXXFLAGS to deal with C++11 incompatibility with MATLAB's Boost
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/boost_${VER}.tar.gz" "boost_${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf boost_${VER}.tar.gz
+
+# Cleanup
+rm -rf install src
+mkdir install src
+
+# Move source into 'src' directory
+mv boost_${VER}/* src/
+rm -rf boost_${VER}
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/1.55/boost/multi_index/ordered_index.hpp src/boost/multi_index
+
+# Configure
+cd src
+./bootstrap.sh \
+	--prefix=${BOOST_ROOT}/install \
+	--with-python=python2.7
+
+# Modify project config to enable MPI
+printf "\n# Enable MPI\nusing mpi ;\n" >> project-config.jam
+
+# Compile and install
+./bjam install
+
+# Copy binary to install directory
+mkdir ${BOOST_ROOT}/install/bin
+cp bjam ${BOOST_ROOT}/install/bin
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-lonestar.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-lonestar.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-lonestar.sh	(revision 27955)
@@ -0,0 +1,44 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+patch src/boost/mpl/aux_/config/adl.hpp ./configs/1.55/adl.hpp.patch
+patch src/boost/iterator/reverse_iterator.hpp ./configs/1.55/reverse_iterator.hpp.patch
+patch src/boost/multi_index/ordered_index.hpp ./configs/1.55/ordered_index.hpp.patch
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python3.2 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+./bjam install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
+
+cd ../
+
+patch install/include/boost/multi_index/ordered_index.hpp ./configs/1.55/ordered_index.hpp.patch
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-mac-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-mac-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-mac-static.sh	(revision 27955)
@@ -0,0 +1,45 @@
+#!/bin/bash
+#set -eu # Do not `run set -eu` because it causes some targets to fail
+
+
+## Constants
+#
+VER="1_55_0"
+
+## Environment
+#
+export BOOST_ROOT="${ISSM_DIR}/externalpackages/boost"
+export CXXFLAGS='-std=c++98' # Setting CXXFLAGS to deal with C++11 incompatibility with Matlab's Boost
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/boost_${VER}.tar.gz" "boost_${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf boost_${VER}.tar.gz
+
+# Cleanup
+rm -rf install src
+mkdir install src
+
+# Move source into 'src' directory
+mv boost_${VER}/* src/
+rm -rf boost_${VER}
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/1.55/boost/multi_index/ordered_index.hpp src/boost/multi_index
+
+# Configure
+cd src
+./bootstrap.sh \
+	--prefix=${BOOST_ROOT}/install \
+	--with-python=python2.7
+
+# Modify project config to enable MPI
+printf "\n# Enable MPI\nusing mpi ;\n" >> project-config.jam
+
+# Compile and install
+./bjam link=static install
+
+# Copy binary to install directory
+mkdir ${BOOST_ROOT}/install/bin
+cp bjam ${BOOST_ROOT}/install/bin
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-mac.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-mac.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-mac.sh	(revision 27955)
@@ -0,0 +1,57 @@
+#!/bin/bash
+#set -eu # Do not `run set -eu` because it causes some targets to fail
+
+
+## Constants
+#
+VER="1_55_0"
+
+## Environment
+#
+export BOOST_ROOT="${ISSM_DIR}/externalpackages/boost"
+export CXXFLAGS='-std=c++98' # Setting CXXFLAGS to deal with C++11 incompatibility with Matlab's Boost
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/boost_${VER}.tar.gz" "boost_${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf boost_${VER}.tar.gz
+
+# Cleanup
+rm -rf install src
+mkdir install src
+
+# Move source into 'src' directory
+mv boost_${VER}/* src/
+rm -rf boost_${VER}
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/1.55/boost/multi_index/ordered_index.hpp src/boost/multi_index
+
+# Configure
+cd src
+./bootstrap.sh \
+	--prefix=${BOOST_ROOT}/install \
+	--with-python=python2.7
+
+# Modify project config to enable MPI
+printf "\n# Enable MPI\nusing mpi ;\n" >> project-config.jam
+
+# Compile and install
+./bjam install
+
+# Copy binary to install directory
+mkdir ${BOOST_ROOT}/install/bin
+cp bjam ${BOOST_ROOT}/install/bin
+
+# Set install_name for all shared libraries
+cd ${BOOST_ROOT}/install/lib
+for name in *.dylib; do
+	install_name_tool -id ${BOOST_ROOT}/install/lib/${name} ${name}
+done
+
+## Patch install names for certain libraries
+#
+# TODO: Figure out how to reconfigure source to apply these install names at compile time
+#
+install_name_tool -change libboost_system.dylib ${BOOST_ROOT}/install/lib/libboost_system.dylib libboost_filesystem.dylib
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-macosx-el_capitan-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-macosx-el_capitan-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-macosx-el_capitan-static.sh	(revision 27955)
@@ -0,0 +1,47 @@
+#!/bin/bash
+set -eu
+
+# NOTE: Stop after boostrap phase, and run
+#
+#	bjam --debug-configuration
+#
+# to figure out which paths boost is using to include python. Make sure everyone
+# of these paths is covered by python. If not, just make symlinks in
+# externalpackages/python to what boost is expecting. There is NO WAY to get the
+# boost library to include python support without doing that.
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+patch src/boost/atomic/detail/cas128strong.hpp ./configs/1.55/cas128strong.hpp.patch
+patch src/boost/atomic/detail/gcc-atomic.hpp ./configs/1.55/gcc-atomic.hpp.patch
+patch src/tools/build/v2/user-config.jam ./configs/1.55/user-config.jam.patch
+patch src/tools/build/v2/tools/darwin.jam ./configs/1.55/darwin.jam.patch
+patch src/tools/build/v2/tools/darwin.py ./configs/1.55/darwin.py.patch
+
+#Configure and compile
+cd src
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python
+
+#Compile boost
+# Need gcc with iconv installed in a location that has been added to your path
+# export CC=/usr/local/gfortan/bin/gcc
+# export CXX=/usr/local/gfortran/bin/g++
+./bjam toolset=darwin link=static runtime-link=static install
+
+#put bjam into install also:
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-macosx-el_capitan.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-macosx-el_capitan.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-macosx-el_capitan.sh	(revision 27955)
@@ -0,0 +1,44 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run
+#bjam --debug-configuration, to figure out which paths boost is using to include
+#python. make sure everyone of these paths is covered by python. If not, just make
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY
+#to get the boost library to include python support without doing that.
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+patch src/boost/atomic/detail/cas128strong.hpp ./configs/1.55/cas128strong.hpp.patch
+patch src/boost/atomic/detail/gcc-atomic.hpp ./configs/1.55/gcc-atomic.hpp.patch
+patch src/tools/build/v2/user-config.jam ./configs/1.55/user-config.jam.patch
+patch src/tools/build/v2/tools/darwin.jam ./configs/1.55/darwin.jam.patch
+patch src/tools/build/v2/tools/darwin.py ./configs/1.55/darwin.py.patch
+
+#Configure and compile
+cd src
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python
+
+#Compile boost
+# Need gcc with iconv installed in a location that has been added to your path
+# export CC=/usr/local/gfortan/bin/gcc
+# export CXX=/usr/local/gfortran/bin/g++
+./bjam toolset=darwin link=static install
+
+#put bjam into install also:
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-macosx-mavericks.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-macosx-mavericks.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-macosx-mavericks.sh	(revision 27955)
@@ -0,0 +1,45 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+#patch src/boost/atomic/detail/cas128strong.hpp ./configs/1.55/cas128strong.hpp.patch
+#patch src/boost/atomic/detail/gcc-atomic.hpp ./configs/1.55/gcc-atomic.hpp.patch
+patch src/tools/build/v2/user-config.jam ./configs/1.55/user-config.jam.patch
+patch src/tools/build/v2/tools/darwin.jam ./configs/1.55/darwin.jam.patch
+patch src/tools/build/v2/tools/darwin.py ./configs/1.55/darwin.py.patch
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python2.7 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+# Need gcc with iconv installed in a location that has been added to your path
+./bjam toolset=darwin-std0x link=static install
+
+#./b2 toolset=clang cxxflags=-stdlib=libstdc++ linkflags=-stdlib=libstdc++ -j2 variant=release link=static threading=multi instal
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-macosx-snowleopard.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-macosx-snowleopard.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-macosx-snowleopard.sh	(revision 27955)
@@ -0,0 +1,45 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+#patch src/boost/atomic/detail/cas128strong.hpp ./configs/1.55/cas128strong.hpp.patch
+#patch src/boost/atomic/detail/gcc-atomic.hpp ./configs/1.55/gcc-atomic.hpp.patch
+patch src/tools/build/v2/user-config.jam ./configs/1.55/user-config.jam.patch
+patch src/tools/build/v2/tools/darwin.jam ./configs/1.55/darwin.jam.patch
+patch src/tools/build/v2/tools/darwin.py ./configs/1.55/darwin.py.patch
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python2.7 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+# Need gcc with iconv installed in a location that has been added to your path
+./bjam toolset=darwin-std0x link=static install
+
+#./b2 toolset=clang cxxflags=-stdlib=libstdc++ linkflags=-stdlib=libstdc++ -j2 variant=release link=static threading=multi instal
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-macosx-yosemite.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-macosx-yosemite.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-macosx-yosemite.sh	(revision 27955)
@@ -0,0 +1,46 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+patch src/boost/atomic/detail/cas128strong.hpp ./configs/1.55/cas128strong.hpp.patch
+patch src/boost/atomic/detail/gcc-atomic.hpp ./configs/1.55/gcc-atomic.hpp.patch
+patch src/tools/build/v2/user-config.jam ./configs/1.55/user-config.jam.patch
+patch src/tools/build/v2/tools/darwin.jam ./configs/1.55/darwin.jam.patch
+patch src/tools/build/v2/tools/darwin.py ./configs/1.55/darwin.py.patch
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python 
+
+#Compile boost
+# Need gcc with iconv installed in a location that has been added to your path
+#./bjam toolset=darwin-std0x link=static install
+
+export CC=/usr/local/gfortan/bin/gcc 
+export CXX=/usr/local/gfortran/bin/g++
+./b2 toolset=clang cxxflags=-stdlib=libstdc++ linkflags=-stdlib=libstdc++ -j2 architecture=x86 variant=release link=static threading=multi install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-pleiades.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-pleiades.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-pleiades.sh	(revision 27955)
@@ -0,0 +1,43 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+export BOOST_ROOT="${ISSM_DIR}/externalpackages/boost"
+export CXXFLAGS="-D_INTEL_LINUX_ -std=c++11"
+export CFLAGS="-D_INTEL_LINUX_"
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+patch src/boost/mpl/aux_/config/adl.hpp ./configs/1.55/adl.hpp.patch
+# Copy customized source and configuration files to 'src' directory
+cp configs/1.55/boost/multi_index/ordered_index.hpp src/boost/multi_index
+
+#Configure and compile
+cd src
+./bootstrap.sh \
+	--prefix=${BOOST_ROOT}/install \
+	--with-python=python2.7
+
+#Compile boost
+./bjam install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-stallo.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-stallo.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.55-stallo.sh	(revision 27955)
@@ -0,0 +1,45 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+patch src/boost/mpl/aux_/config/adl.hpp ./configs/1.55/adl.hpp.patch
+
+#Setting CXXFLAGS to deal with C++11 incompatibility with MATLAB's Boost
+#export PATH="/usr/bin":$PATH
+export CXXFLAGS='-std=c++98'
+export CC=mpicc
+export CXX=mpicxx
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python3.2 
+
+#Compile boost
+#./bjam install
+./bjam install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.7-linux-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.7-linux-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.7-linux-static.sh	(revision 27955)
@@ -0,0 +1,41 @@
+#!/bin/bash
+#set -eu # Do not `run set -eu` because it causes some targets to fail
+
+
+## Constants
+#
+VER="1_73_0"
+
+PREFIX="${ISSM_DIR}/externalpackages/boost/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/boost_${VER}.tar.gz" "boost_${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf boost_${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source into 'src' directory
+mv boost_${VER}/* src
+rm -rf boost_${VER}
+
+# Configure
+cd src
+./bootstrap.sh \
+	--prefix=${PREFIX} \
+	--with-python=python2.7
+
+# Modify project config to enable MPI
+printf "\n# Enable MPI\nusing mpi ;\n" >> project-config.jam
+
+# Compile and install
+./b2 install link=static runtime-link=static
+
+# Remove any dynamic libraries that may have been compiled
+#
+# TODO: Reconfigure so that dynamic libraries are not compiled at all
+#
+rm -f $(find ${PREFIX}/lib -name *.so*)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.7-linux-valgrind.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.7-linux-valgrind.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.7-linux-valgrind.sh	(revision 27955)
@@ -0,0 +1,38 @@
+#!/bin/bash
+#set -eu # Do not `run set -eu` because it causes some targets to fail
+
+
+## Constants
+#
+VER="1_73_0"
+
+PREFIX="${ISSM_DIR}/externalpackages/boost/install" # Set to location where external package should be installed
+
+# Download source
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/boost_${VER}.tar.gz" "boost_${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf boost_${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source into 'src' directory
+mv boost_${VER}/* src
+rm -rf boost_${VER}
+
+# Copy customized source and configuration files to 'src' directory
+cp ./configs/1.73/boost/math/tools/user.hpp ./src/boost/math/tools
+
+# Configure
+cd src
+./bootstrap.sh \
+	--prefix=${PREFIX} \
+	--with-python=python2.7
+
+# Modify project config to enable MPI
+printf "\n# Enable MPI\nusing mpi ;\n" >> project-config.jam
+
+# Compile and install
+./b2 install link=shared runtime-link=shared
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.7-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.7-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.7-linux.sh	(revision 27955)
@@ -0,0 +1,35 @@
+#!/bin/bash
+#set -eu # Do not `run set -eu` because it causes some targets to fail
+
+
+## Constants
+#
+VER="1_73_0"
+
+PREFIX="${ISSM_DIR}/externalpackages/boost/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/boost_${VER}.tar.gz" "boost_${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf boost_${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source into 'src' directory
+mv boost_${VER}/* src
+rm -rf boost_${VER}
+
+# Configure
+cd src
+./bootstrap.sh \
+	--prefix=${PREFIX} \
+	--with-python=python2.7
+
+# Modify project config to enable MPI
+printf "\n# Enable MPI\nusing mpi ;\n" >> project-config.jam
+
+# Compile and install
+./b2 install link=shared runtime-link=shared
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.7-mac-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.7-mac-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.7-mac-static.sh	(revision 27955)
@@ -0,0 +1,45 @@
+#!/bin/bash
+#set -eu # Do not `run set -eu` because it causes some targets to fail
+
+
+## Constants
+#
+VER="1_73_0"
+
+PREFIX="${ISSM_DIR}/externalpackages/boost/install" # Set to location where external package should be installed
+
+## Environment
+#
+export LDFLAGS="-Wl,-headerpad_max_install_names"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/boost_${VER}.tar.gz" "boost_${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf boost_${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source into 'src' directory
+mv boost_${VER}/* src
+rm -rf boost_${VER}
+
+# Configure
+cd src
+./bootstrap.sh \
+	--prefix=${PREFIX} \
+	--with-python=python2.7
+
+# Modify project config to enable MPI
+printf "\n# Enable MPI\nusing mpi ;\n" >> project-config.jam
+
+# Compile and install
+./b2 install link=static runtime-link=static
+
+# Remove any dynamic libraries that may have been compiled
+#
+# TODO: Reconfigure so that dynamic libraries are not compiled at all
+#
+rm -f $(find ${PREFIX}/lib -name *.dylib)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.7-mac-valgrind.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.7-mac-valgrind.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.7-mac-valgrind.sh	(revision 27955)
@@ -0,0 +1,66 @@
+#!/bin/bash
+#set -eu # Do not `run set -eu` because it causes some targets to fail
+
+
+## Constants
+#
+VER="1_73_0"
+
+PREFIX="${ISSM_DIR}/externalpackages/boost/install" # Set to location where external package should be installed
+
+## Environment
+#
+export LDFLAGS="-Wl,-headerpad_max_install_names"
+
+# Download source
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/boost_${VER}.tar.gz" "boost_${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf boost_${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source into 'src' directory
+mv boost_${VER}/* src
+rm -rf boost_${VER}
+
+# Copy customized source and configuration files to 'src' directory
+cp ./configs/1.73/boost/math/tools/user.hpp ./src/boost/math/tools
+
+# Configure
+cd src
+./bootstrap.sh \
+	--prefix=${PREFIX} \
+	--with-python=python2.7
+
+# Modify project config to enable MPI
+printf "\n# Enable MPI\nusing mpi ;\n" >> project-config.jam
+
+# Compile and install
+./b2 install link=shared runtime-link=shared
+
+# Set install_name for all shared libraries
+#
+# NOTE: The install_name_tool prints an error message on some installations, 
+#		but this is not a shell error, and it does not seem to affect the 
+#		Boost libraries called by ISSM. For now, we are simply redirecting the 
+#		error to null.
+#
+# TODO:
+# - Modify the source to apply absolute paths to the library ids so that 
+#	patching it after the fact with install_name_tool is not necessary.
+#
+cd ${PREFIX}/lib
+for name in *.dylib; do
+	install_name_tool -id ${PREFIX}/lib/${name} ${name} 2>/dev/null
+done
+
+if [ "${VER}" == "1_79_0" ]; then
+	## Patch install names for certain libraries
+	#
+	# TODO: Figure out how to reconfigure source to apply these install names at compile time
+	#
+	install_name_tool -change @rpath/libboost_atomic.dylib ${PREFIX}/lib/libboost_atomic.dylib libboost_filesystem.dylib
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.7-mac.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.7-mac.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/boost/install-1.7-mac.sh	(revision 27955)
@@ -0,0 +1,63 @@
+#!/bin/bash
+#set -eu # Do not `run set -eu` because it causes some targets to fail
+
+
+## Constants
+#
+VER="1_73_0"
+
+PREFIX="${ISSM_DIR}/externalpackages/boost/install" # Set to location where external package should be installed
+
+## Environment
+#
+export LDFLAGS="-Wl,-headerpad_max_install_names"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/boost_${VER}.tar.gz" "boost_${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf boost_${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source into 'src' directory
+mv boost_${VER}/* src
+rm -rf boost_${VER}
+
+# Configure
+cd src
+./bootstrap.sh \
+	--prefix=${PREFIX} \
+	--with-python=python2.7
+
+# Modify project config to enable MPI
+printf "\n# Enable MPI\nusing mpi ;\n" >> project-config.jam
+
+# Compile and install
+./b2 install link=shared runtime-link=shared
+
+# Set install_name for all shared libraries
+#
+# NOTE: The install_name_tool prints an error message on some installations, 
+#		but this is not a shell error, and it does not seem to affect the 
+#		Boost libraries called by ISSM. For now, we are simply redirecting the 
+#		error to null.
+#
+# TODO:
+# - Modify the source to apply absolute paths to the library ids so that 
+#	patching it after the fact with install_name_tool is not necessary.
+#
+cd ${PREFIX}/lib
+for name in *.dylib; do
+	install_name_tool -id ${PREFIX}/lib/${name} ${name} 2>/dev/null
+done
+
+if [ "${VER}" == "1_79_0" ]; then
+	## Patch install names for certain libraries
+	#
+	# TODO: Figure out how to reconfigure source to apply these install names at compile time
+	#
+	install_name_tool -change @rpath/libboost_atomic.dylib ${PREFIX}/lib/libboost_atomic.dylib libboost_filesystem.dylib
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/bsdtar/install-win7.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/bsdtar/install-win7.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/bsdtar/install-win7.sh	(revision 27955)
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src libarchive-3.0.3
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/libarchive-3.0.3.tar.gz' 'libarchive-3.0.3.tar.gz'
+
+#Untar 
+tar -zxvf  libarchive-3.0.3.tar.gz
+
+#Move libarchive into src directory
+mv libarchive-3.0.3/* src
+rm -rf libarchive-3.0.3
+
+cd src 
+./configure --prefix="$ISSM_DIR/externalpackages/bsdtar/install" 
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/canos/InterX.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/canos/InterX.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/canos/InterX.m	(revision 27955)
@@ -0,0 +1,82 @@
+function P = InterX(L1,varargin)
+%INTERX Intersection of curves
+%   P = INTERX(L1,L2) returns the intersection points of two curves L1 
+%   and L2. The curves L1,L2 can be either closed or open and are described
+%   by two-row-matrices, where each row contains its x- and y- coordinates.
+%   The intersection of groups of curves (e.g. contour lines, multiply 
+%   connected regions etc) can also be computed by separating them with a
+%   column of NaNs as for example
+%
+%         L  = [x11 x12 x13 ... NaN x21 x22 x23 ...;
+%               y11 y12 y13 ... NaN y21 y22 y23 ...]
+%
+%   P has the same structure as L1 and L2, and its rows correspond to the
+%   x- and y- coordinates of the intersection points of L1 and L2. If no
+%   intersections are found, the returned P is empty.
+%
+%   P = INTERX(L1) returns the self-intersection points of L1. To keep
+%   the code simple, the points at which the curve is tangent to itself are
+%   not included. P = INTERX(L1,L1) returns all the points of the curve 
+%   together with any self-intersection points.
+%   
+%   Example:
+%       t = linspace(0,2*pi);
+%       r1 = sin(4*t)+2;  x1 = r1.*cos(t); y1 = r1.*sin(t);
+%       r2 = sin(8*t)+2;  x2 = r2.*cos(t); y2 = r2.*sin(t);
+%       P = InterX([x1;y1],[x2;y2]);
+%       plot(x1,y1,x2,y2,P(1,:),P(2,:),'ro')
+
+%   Author : NS
+%   Version: 3.0, 21 Sept. 2010
+
+%   Two words about the algorithm: Most of the code is self-explanatory.
+%   The only trick lies in the calculation of C1 and C2. To be brief, this
+%   is essentially the two-dimensional analog of the condition that needs
+%   to be satisfied by a function F(x) that has a zero in the interval
+%   [a,b], namely
+%           F(a)*F(b) <= 0
+%   C1 and C2 exactly do this for each segment of curves 1 and 2
+%   respectively. If this condition is satisfied simultaneously for two
+%   segments then we know that they will cross at some point. 
+%   Each factor of the 'C' arrays is essentially a matrix containing 
+%   the numerators of the signed distances between points of one curve
+%   and line segments of the other.
+
+    %...Argument checks and assignment of L2
+    error(nargchk(1,2,nargin));
+    if nargin == 1,
+        L2 = L1;    hF = @lt;   %...Avoid the inclusion of common points
+    else
+        L2 = varargin{1}; hF = @le;
+    end
+       
+    %...Preliminary stuff
+    x1  = L1(1,:)';  x2 = L2(1,:);
+    y1  = L1(2,:)';  y2 = L2(2,:);
+    dx1 = diff(x1); dy1 = diff(y1);
+    dx2 = diff(x2); dy2 = diff(y2);
+    
+    %...Determine 'signed distances'   
+    S1 = dx1.*y1(1:end-1) - dy1.*x1(1:end-1);
+    S2 = dx2.*y2(1:end-1) - dy2.*x2(1:end-1);
+    
+    C1 = feval(hF,D(bsxfun(@times,dx1,y2)-bsxfun(@times,dy1,x2),S1),0);
+    C2 = feval(hF,D((bsxfun(@times,y1,dx2)-bsxfun(@times,x1,dy2))',S2'),0)';
+
+    %...Obtain the segments where an intersection is expected
+    [i,j] = find(C1 & C2); 
+    if isempty(i),P = zeros(2,0);return; end;
+    
+    %...Transpose and prepare for output
+    i=i'; dx2=dx2'; dy2=dy2'; S2 = S2';
+    L = dy2(j).*dx1(i) - dy1(i).*dx2(j);
+    i = i(L~=0); j=j(L~=0); L=L(L~=0);  %...Avoid divisions by 0
+    
+    %...Solve system of eqs to get the common points
+    P = unique([dx2(j).*S1(i) - dx1(i).*S2(j), ...
+                dy2(j).*S1(i) - dy1(i).*S2(j)]./[L L],'rows')';
+              
+    function u = D(x,y)
+        u = bsxfun(@minus,x(:,1:end-1),y).*bsxfun(@minus,x(:,2:end),y);
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/canos/license.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/canos/license.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/canos/license.txt	(revision 27955)
@@ -0,0 +1,25 @@
+Copyright (c) 2006, Antoni J. Canós
+Copyright (c) 2008, Douglas M. Schwarz
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are 
+met:
+
+    * Redistributions of source code must retain the above copyright 
+      notice, this list of conditions and the following disclaimer.
+    * 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
+      
+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 OWNER 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.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/canos/licenseNS.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/canos/licenseNS.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/canos/licenseNS.txt	(revision 27955)
@@ -0,0 +1,24 @@
+Copyright (c) 2009, NS
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are 
+met:
+
+    * Redistributions of source code must retain the above copyright 
+      notice, this list of conditions and the following disclaimer.
+    * 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
+      
+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 OWNER 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.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/canos/selfintersect.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/canos/selfintersect.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/canos/selfintersect.m	(revision 27955)
@@ -0,0 +1,174 @@
+function [x0,y0,segments]=selfintersect(x,y)
+
+%SELFINTERSECT Self-intersections of a curve.
+%
+%    [X0,Y0,SEGMENTS] = SELFINTERSECT(X,Y) computes the locations where
+%    a curve self-intersects in a fast and robust way.
+%    The curve can be broken with NaNs or have vertical segments.
+%    Segments of the curve involved in each of the self-interesections are
+%    also provided.
+%
+%    Vectors X and Y are equal-length vectors of at least four points defining
+%    the curve.
+%    X0 and Y0 are column vectors with the x- and y- coordinates, respectively
+%    of the N self-intersections.
+%    SEGMENTS is an N x 2 matrix containing the pairs of segments involved in
+%    each self-intersection.
+%
+%    This program uses the theory of operation of the file "Fast and Robust Curve
+%    Intersections" submitted by Douglas M. Schwartz (intersections.m, F.Id: 11837).
+%
+%    Example of use
+% 	 N=201;
+% 	 th=linspace(-3*pi,4*pi,N);
+% 	 R=1;
+% 	 x=R*cos(th)+linspace(0,6,N);
+% 	 y=R*sin(th)+linspace(0,1,N);
+%    t0=clock;
+%    [x0,y0,segments]=selfintersect(x,y)
+% 	 etime(clock,t0)
+%    plot(x,y,'b',x0,y0,'.r');
+% 	 axis ('equal'); grid
+
+%
+%    See also INTERSECTIONS.
+%
+%Version: 1.0, December 11, 2006
+%Tested under MATLAB 6.5.0. R13.
+%
+% (c) Antoni J. Canos.
+% ITACA. Techincal University of Valencia (Spain)
+% Email:   ancama2@dcom.upv.es
+
+
+% Input checks.
+error(nargchk(2,2,nargin))
+% x and y must be vectors with same number of points (at least 4 for self-intersection).
+if sum(size(x) > 3) ~= 1 || sum(size(y) > 3) ~= 1 || ...
+		length(x) ~= length(y)
+	error('X and Y must be equal-length vectors of at least 4 points.')
+end
+
+x0=[];
+y0=[];
+segments=[];
+
+% Two similar curves are firstly created.
+x1=x; x2=x;
+y1=y; y2=y;
+
+x1 = x1(:);
+y1 = y1(:);
+x2 = x2(:);
+y2 = y2(:);
+
+% Compute number of line segments in each curve and some differences we'll
+% need later.
+n1 = length(x1) - 1;
+n2 = length(x2) - 1;
+
+dxy1 = diff([x1 y1]);
+dxy2 = diff([x2 y2]);
+
+% Determine the combinations of i and j where the rectangle enclosing the
+% i'th line segment of curve 1 overlaps with the rectangle enclosing the
+% j'th line segment of curve 2.
+[i,j] = find(repmat(min(x1(1:end-1),x1(2:end)),1,n2) <= ...
+	repmat(max(x2(1:end-1),x2(2:end)).',n1,1) & ...
+	repmat(max(x1(1:end-1),x1(2:end)),1,n2) >= ...
+	repmat(min(x2(1:end-1),x2(2:end)).',n1,1) & ...
+	repmat(min(y1(1:end-1),y1(2:end)),1,n2) <= ...
+	repmat(max(y2(1:end-1),y2(2:end)).',n1,1) & ...
+	repmat(max(y1(1:end-1),y1(2:end)),1,n2) >= ...
+	repmat(min(y2(1:end-1),y2(2:end)).',n1,1));
+
+% Removing coincident and adjacent segments.
+remove=find(abs(i-j)<2);
+i(remove)=[];
+j(remove)=[];
+
+% Removing duplicate combinations of segments.
+remove=[];
+for ii=1:size(i,1)
+	ind=find((i(ii)==j(ii:end))&(j(ii)==i(ii:end)));
+	remove=[remove;ii-1+ind];
+end
+i(remove)=[];
+j(remove)=[];
+
+% Find segments pairs which have at least one vertex = NaN and remove them.
+% This line is a fast way of finding such segment pairs.  We take
+% advantage of the fact that NaNs propagate through calculations, in
+% particular subtraction (in the calculation of dxy1 and dxy2, which we
+% need anyway) and addition.
+remove = isnan(sum(dxy1(i,:) + dxy2(j,:),2));
+i(remove) = [];
+j(remove) = [];
+
+% Find segments pairs which have at least one vertex = NaN and remove them.
+% This line is a fast way of finding such segment pairs.  We take
+% advantage of the fact that NaNs propagate through calculations, in
+% particular subtraction (in the calculation of dxy1 and dxy2, which we
+% need anyway) and addition.
+remove = isnan(sum(dxy1(i,:) + dxy2(j,:),2));
+i(remove) = [];
+j(remove) = [];
+
+% Initialize matrices.  We'll put the T's and B's in matrices and use them
+% one column at a time.  For some reason, the \ operation below is faster
+% on my machine when A is sparse so we'll initialize a sparse matrix with
+% the fixed values and then assign the changing values in the loop.
+n = length(i);
+T = zeros(4,n);
+A = sparse([1 2 3 4],[3 3 4 4],-1,4,4,8);
+B = -[x1(i) x2(j) y1(i) y2(j)].';
+index_dxy1 = [1 3];  %  A(1) = A(1,1), A(3) = A(3,1)
+index_dxy2 = [6 8];  %  A(6) = A(2,2), A(8) = A(4,2)
+
+% Loop through possibilities.  Set warning not to trigger for anomalous
+% results (i.e., when A is singular).
+warning_state = warning('off','MATLAB:singularMatrix');
+try
+	for k = 1:n
+		A(index_dxy1) = dxy1(i(k),:);
+		A(index_dxy2) = dxy2(j(k),:);
+		T(:,k) = A\B(:,k);
+	end
+	warning(warning_state)
+catch
+	warning(warning_state)
+	rethrow(lasterror)
+end
+
+% Find where t1 and t2 are between 0 and 1 and return the corresponding x0
+% and y0 values.  Anomalous segment pairs can be segment pairs that are
+% colinear (overlap) or the result of segments that are degenerate (end
+% points the same).  The algorithm will return an intersection point that
+% is at the center of the overlapping region.  Because of the finite
+% precision of floating point arithmetic it is difficult to predict when
+% two line segments will be considered to overlap exactly or even intersect
+% at an end point.  For this algorithm, an anomaly is detected when any
+% element of the solution (a single column of T) is a NaN.
+
+in_range = T(1,:) >= 0 & T(2,:) >= 0 & T(1,:) < 1 & T(2,:) < 1;
+anomalous = any(isnan(T));
+if any(anomalous)
+	ia = i(anomalous);
+	ja = j(anomalous);
+	% set x0 and y0 to middle of overlapping region.
+	T(3,anomalous) = (max(min(x1(ia),x1(ia+1)),min(x2(ja),x2(ja+1))) + ...
+		min(max(x1(ia),x1(ia+1)),max(x2(ja),x2(ja+1))))/2;
+	T(4,anomalous) = (max(min(y1(ia),y1(ia+1)),min(y2(ja),y2(ja+1))) + ...
+		min(max(y1(ia),y1(ia+1)),max(y2(ja),y2(ja+1))))/2;
+	x0 = T(3,in_range | anomalous).';
+	y0 = T(4,in_range | anomalous).';
+	i=i(in_range | anomalous);
+	j=j(in_range | anomalous);
+else
+	x0 = T(3,in_range).';
+	y0 = T(4,in_range).';
+	i=i(in_range);
+	j=j(in_range);
+end
+
+segments=sort([i,j],2);
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/cccl/install-win7.orig.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/cccl/install-win7.orig.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/cccl/install-win7.orig.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install cccl-0.03
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/cccl-0.03.tar.gz' 'cccl-0.03.tar.gz'
+
+#Untar 
+tar -zxvf  cccl-0.03.tar.gz
+
+#Move cccl into install directory
+mv cccl-0.03/* src
+rm -rf cccl-0.03
+
+cd src 
+
+#Compile
+./configure --prefix="$ISSM_DIR/externalpackages/cccl/install"
+
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/cccl/install-win7.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/cccl/install-win7.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/cccl/install-win7.sh	(revision 27955)
@@ -0,0 +1,11 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src cccl-0.03
+mkdir install 
+mkdir install/bin
+
+#Move cccl into install directory
+cp issm/cccl install/bin
+chmod 755 install/bin/cccl
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/cccl/issm/cccl
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/cccl/issm/cccl	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/cccl/issm/cccl	(revision 27955)
@@ -0,0 +1,113 @@
+#!/bin/sh
+
+# cccl 
+# Wrapper around MS's cl.exe and link.exe to make them act more like
+# Unix cc and ld
+#
+# Copyright (C) 2000-2003 Geoffrey Wossum (gwossum@acm.org)
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your optsion) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+
+usage()
+{
+    cat <<EOF
+Usage: cccl [OPTIONS]
+
+cccl is a wrapper around Microsoft's cl.exe and link.exe.  It translates
+parameters that Unix cc's and ld's understand to parameters that cl and link
+understand.
+EOF
+    exit $1
+}
+
+prog=cl
+
+### Run through every optsion and convert it to the proper MS one
+while test $# -gt 0; do
+
+    case "$1" in
+    --version)
+	cat <<EOF
+cccl 0.03
+
+Copyright 2000-2003 Geoffrey Wossum
+This is free software; see the source for copying conditions.  There is NO
+waranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+EOF
+	exit 1;
+	;;
+
+    -o)
+	# specifying output file, is it an object or an executable
+	shift
+	case "$1" in
+			
+		*.exe)
+			opts="$opts /Fe$1";
+		;;
+
+
+		*.mex*)
+			opts="$opts /OUT:$1"
+		;;
+
+		*.o | *.obj)
+			opts="$opts /Fo$1"
+		;;
+
+		*)
+			opts="$opts /Fo$1"
+		;;
+    esac
+	;;
+	-fPIC)
+	#do nothing
+	;;
+	-g)
+	#do nothing
+	;;
+	-pthread)
+	#do nothing
+	;;
+	-fno-omit-frame-pointer)
+	#do nothing
+	;;
+   -I*)
+	   include=`echo $1 | sed 's/-I//g'`
+	   include=`cygpath -m "$include"`
+	   include="/I\"$include\""
+	   includeopts="$includeopts $include"
+   ;;
+	-L*)
+		library=`echo $1 | sed 's/-L//g'`
+		library=`cygpath -m $library`
+		string="/link /LIBPATH:\"$library\""
+		opts="$opts $string"
+	;;
+	*)
+		#do nothing
+		opts="$opts $1"
+	;;
+
+	
+    esac
+    shift
+done
+			
+#pass all our processing through the echo command, so we are sure that the string has no quirk, 
+#and that once passed by exec to cl, everything works fine.
+command=`echo "$prog "$includeopts" $opts /nologo"`
+exec $command
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/chaco.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/chaco.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/chaco.h	(revision 27955)
@@ -0,0 +1,39 @@
+/*!\file: chaco.h
+ * \brief prototypes for chaco library
+ */ 
+
+#ifndef _CHACO_INCLUDES_H_
+#define  _CHACO_INCLUDES_H_
+
+#include "./defs.h"
+#include "./params.h"
+
+extern "C" int       interface( int       nvtxs,		/* number of vertices in full graph */
+		int      *start,		/* start of edge list for each vertex */
+		int      *adjacency,		/* edge list data */
+		int      *vwgts,		/* weights for all vertices */
+		float    *ewgts,		/* weights for all edges */
+		float    *x, 
+		float    *y, 
+		float    *z,		/* coordinates for inertial method */
+		char     *outassignname,	/* name of assignment output file */
+		char     *outfilename,		/* output file name */
+		short    *assignment,		/* set number of each vtx (length n) */
+		int       architecture,		/* 0 => hypercube, d => d-dimensional mesh */
+		int       ndims_tot,		/* total number of cube dimensions to divide */
+		int       mesh_dims[3],		/* dimensions of mesh of processors */
+		double   *goal,			/* desired set sizes for each set */
+		int       global_method,	/* global partitioning algorithm */
+		int       local_method,		/* local partitioning algorithm */
+		int       rqi_flag,		/* should I use RQI/Symmlq eigensolver? */
+		int       vmax,			/* how many vertices to coarsen down to? */
+		int       ndims,		/* number of eigenvectors (2^d sets) */
+		double    eigtol,		/* tolerance on eigenvectors */
+		long      seed);			/* for random graph mutations */
+
+extern "C" void      read_params(FILE* pfile);	/* file with new user parameters */
+extern "C" void      smalloc_stats(void);
+extern "C" double*   smalloc(unsigned int n); /* number of bytes to be allocated */
+
+#endif //ifndef _CHACO_INCLUDES_H_
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/chaco.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/chaco.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/chaco.patch	(revision 27955)
@@ -0,0 +1,572 @@
+Only in src/code/assign: assign.o
+diff -rc src/code/assign/assign_out.c old/code/assign/assign_out.c
+*** src/code/assign/assign_out.c	2010-07-16 16:28:47.352242454 -0700
+--- old/code/assign/assign_out.c	1995-08-08 14:32:10.000000000 -0700
+***************
+*** 3,9 ****
+   * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */
+  
+  #include	<stdio.h>
+- #include	"defs.h"
+  
+  static void assign_out_normal(), assign_out_inv();
+  
+--- 3,8 ----
+Only in src/code/assign: assign_out.o
+Only in src/code/assign: mapper.o
+Only in src/code/assign: median.o
+Only in src/code/assign: merge_assign.o
+Only in src/code/assign: rec_median.o
+Only in src/code/assign: rotate.o
+Only in src/code/assign: y2x.o
+Only in src/code/bpmatch: checkbp.o
+Only in src/code/bpmatch: genvals2d.o
+Only in src/code/bpmatch: genvals3d.o
+Only in src/code/bpmatch: inits2d.o
+Only in src/code/bpmatch: inits3d.o
+Only in src/code/bpmatch: map2d.o
+Only in src/code/bpmatch: map3d.o
+Only in src/code/bpmatch: movevtxs.o
+Only in src/code/bpmatch: sorts2d.o
+Only in src/code/bpmatch: sorts3d.o
+Only in src/code: chacominusblas.a
+Only in src/code/coarsen: coarsen1.o
+Only in src/code/coarsen: coarsen.o
+Only in src/code/coarsen: interpolate.o
+Only in src/code/coarsen: makeccoords.o
+Only in src/code/coarsen: makefgraph.o
+Only in src/code/coarsen: makev2cv.o
+Only in src/code/coarsen: maxmatch1.o
+Only in src/code/coarsen: maxmatch2.o
+Only in src/code/coarsen: maxmatch3.o
+Only in src/code/coarsen: maxmatch4.o
+Only in src/code/coarsen: maxmatch5.o
+Only in src/code/coarsen: maxmatch.o
+Only in src/code/connect: add_edges.o
+Only in src/code/connect: connected.o
+Only in src/code/connect: find_edges.o
+Only in src/code/eigen: bidir.o
+Only in src/code/eigen: bisect.o
+Only in src/code/eigen: checkeig_ext.o
+Only in src/code/eigen: checkeig.o
+Only in src/code/eigen: checkorth.o
+Only in src/code/eigen: cksturmcnt.o
+Only in src/code/eigen: eigensolve.o
+diff -rc src/code/eigen/get_extval.c old/code/eigen/get_extval.c
+*** src/code/eigen/get_extval.c	2010-07-16 16:28:47.353242463 -0700
+--- old/code/eigen/get_extval.c	1995-08-08 14:32:20.000000000 -0700
+***************
+*** 4,10 ****
+  
+  #include <math.h>
+  #include <stdio.h>
+- #include "defs.h"
+  
+  /* Finds first extended eigenpair of system corresponding to
+     tridiagonal T using using Rafael's bisection technique. */
+--- 4,9 ----
+Only in src/code/eigen: get_extval.o
+Only in src/code/eigen: get_ritzvals.o
+Only in src/code/eigen: lanc_seconds.o
+Only in src/code/eigen: lanczos_ext_float.o
+Only in src/code/eigen: lanczos_ext.o
+Only in src/code/eigen: lanczos_FO.o
+Only in src/code/eigen: lanczos_SO_float.o
+Only in src/code/eigen: lanczos_SO.o
+Only in src/code/eigen: lanpause.o
+Only in src/code/eigen: makeorthlnk.o
+Only in src/code/eigen: mkeigvecs.o
+Only in src/code/eigen: mkscanlist.o
+Only in src/code/eigen: orthog1.o
+Only in src/code/eigen: orthogonalize.o
+Only in src/code/eigen: orthogvec.o
+Only in src/code/eigen: ql.o
+Only in src/code/eigen: rqi_ext.o
+Only in src/code/eigen: rqi.o
+Only in src/code/eigen: scale_diag.o
+Only in src/code/eigen: scanmax.o
+Only in src/code/eigen: scanmin.o
+Only in src/code/eigen: solistout.o
+Only in src/code/eigen: sorthog.o
+Only in src/code/eigen: splarax.o
+Only in src/code/eigen: sturmcnt.o
+Only in src/code/eigen: Tevec.o
+Only in src/code/eigen: tri_solve.o
+Only in src/code/eigen: warnings.o
+Only in src/code/graph: check_graph.o
+Only in src/code/graph: free_graph.o
+Only in src/code/graph: graph_out.o
+Only in src/code/graph: reformat.o
+Only in src/code/graph: subgraph.o
+Only in src/code/inertial: eigenvec2.o
+Only in src/code/inertial: eigenvec3.o
+Only in src/code/inertial: inertial1d.o
+Only in src/code/inertial: inertial2d.o
+Only in src/code/inertial: inertial3d.o
+Only in src/code/inertial: inertial.o
+Only in src/code/inertial: make_subgeom.o
+Only in src/code/input: check_input.o
+Only in src/code/input: input_assign.o
+Only in src/code/input: input_geom.o
+Only in src/code/input: input_graph.o
+Only in src/code/input: input.o
+Only in src/code/input: read_params.o
+Only in src/code/input: read_val.o
+Only in src/code/input: reflect_input.o
+Only in src/code/internal: check_internal.o
+Only in src/code/internal: force_internal.o
+Only in src/code/internal: improve_internal.o
+Only in src/code/klspiff: bilistops.o
+Only in src/code/klspiff: buckets1.o
+Only in src/code/klspiff: buckets_bi.o
+Only in src/code/klspiff: buckets.o
+Only in src/code/klspiff: coarsen_kl.o
+Only in src/code/klspiff: compress_ewgts.o
+Only in src/code/klspiff: count_weights.o
+Only in src/code/klspiff: kl_init.o
+Only in src/code/klspiff: kl_output.o
+Only in src/code/klspiff: klspiff.o
+Only in src/code/klspiff: make_bndy_list.o
+Only in src/code/klspiff: make_kl_list.o
+Only in src/code/klspiff: nway_kl.o
+Only in src/code/klvspiff: bpm_improve.o
+Only in src/code/klvspiff: bucketsv.o
+Only in src/code/klvspiff: clear_dvals.o
+Only in src/code/klvspiff: coarsen_klv.o
+Only in src/code/klvspiff: countup_vtx_sep.o
+Only in src/code/klvspiff: find_bndy.o
+Only in src/code/klvspiff: flatten.o
+Only in src/code/klvspiff: flow.o
+Only in src/code/klvspiff: klv_init.o
+Only in src/code/klvspiff: klvspiff.o
+Only in src/code/klvspiff: make_bpgraph.o
+Only in src/code/klvspiff: make_sep_list.o
+diff -rc src/code/klvspiff/matching.c old/code/klvspiff/matching.c
+*** src/code/klvspiff/matching.c	2010-07-16 16:28:47.356242493 -0700
+--- old/code/klvspiff/matching.c	1996-03-11 10:24:25.000000000 -0800
+***************
+*** 6,12 ****
+     code provided by Ed Rothberg at SGI. */
+  
+  #include <stdio.h>
+- #include "defs.h"
+  
+  #define  TRUE  1
+  #define  FALSE 0
+--- 6,11 ----
+Only in src/code/klvspiff: matching.o
+Only in src/code/klvspiff: nway_klv.o
+diff -rc src/code/main/defs.h old/code/main/defs.h
+*** src/code/main/defs.h	2010-07-16 16:28:47.359242522 -0700
+--- old/code/main/defs.h	1995-08-08 14:32:41.000000000 -0700
+***************
+*** 1,39 ****
+! #ifndef _CHACO_DEFS_H_
+! #define _CHACO_DEFS_H_
+! 
+  #define TRUE		1
+  #define FALSE		0
+  
+! #ifndef _HAVE_CHACO_ //protect ISSM compilation. This symbol is defined when we compile ISSM
+! 
+! 	#define	max(A, B)	((A) > (B) ? (A) : (B))
+! 	#define	min(A, B)	((A) < (B) ? (A) : (B))
+! 	#define sign(A)		((A) <  0  ? -1  :  1)
+! 	#define absval(A)	((A) <  0  ? -(A): (A))
+! 
+! 	/* Define constants that are needed in various places */
+! 	#define	PI	3.141592653589793
+! 	#define	TWOPI	6.283185307179586
+! 	#define HALFPI  1.570796326794896
+! 
+!     #define check_graph chaco_check_graph
+! 
+! 
+! 	#ifdef MATLAB
+! 		#include "mat.h"
+! 		#include "mex.h"
+! 		#include "matrix.h"
+! 	   
+! 		#define printf mexPrintf
+! 		#define fprintf(file,...) (file == stdout || file == stderr ? mexPrintf(__VA_ARGS__) : fprintf(file,__VA_ARGS__))
+! 		#define malloc mxMalloc
+! 		#define calloc mxCalloc
+! 		#define realloc mxRealloc
+! 		#define free mxFree
+! 		#define exit(status) mexErrMsgTxt("exit=" #status)
+! 
+! 	#endif
+! 
+! #endif  //#ifndef _HAVE_CHACO_ 
+! 
+! #endif //ifndef _CHACO_DEFS_H_
+--- 1,11 ----
+! #define	max(A, B)	((A) > (B) ? (A) : (B))
+! #define	min(A, B)	((A) < (B) ? (A) : (B))
+! #define sign(A)		((A) <  0  ? -1  :  1)
+! #define absval(A)	((A) <  0  ? -(A): (A))
+  #define TRUE		1
+  #define FALSE		0
+  
+! /* Define constants that are needed in various places */
+! #define	PI	3.141592653589793
+! #define	TWOPI	6.283185307179586
+! #define HALFPI  1.570796326794896
+Only in src/code/main: interface.o
+Only in src/code/main: main.o
+diff -rc src/code/main/params.h old/code/main/params.h
+*** src/code/main/params.h	2010-07-16 16:28:47.361242541 -0700
+--- old/code/main/params.h	1995-08-08 14:32:43.000000000 -0700
+***************
+*** 1,12 ****
+- #ifndef _CHACO_PARAMS_H_
+- #define _CHACO_PARAMS_H_
+- 
+- 
+  #define NAME_LENGTH	80	/* Maximum length of file name */
+  #define LINE_LENGTH	200	/* Length of input files read at once */
+  
+  #define MAXDIMS		3	/* Most cuts allowed at one time */
+  #define MAXSETS		8	/* 2^MAXDIMS */
+- 
+- 
+- #endif //ifndef _CHACO_PARAMS_H_
+--- 1,5 ----
+Only in src/code/main: user_params.o
+diff -rc src/code/Makefile old/code/Makefile
+*** src/code/Makefile	2010-07-21 18:22:19.909939194 -0700
+--- old/code/Makefile	1997-10-02 10:23:22.000000000 -0700
+***************
+*** 2,18 ****
+  DEST=		${DEST_DIR}/chaco
+  CC = 		gcc
+  IFLAG =		-Imain
+! #IFLAG =		-Imain -I/usr/local/pkgs/matlab-7.6/extern/include
+! #CFLAGS =	-O2
+! #OFLAGS =	-O2
+! #CFLAGS =	-fPIC -fno-omit-frame-pointer -D_GNU_SOURCE -pthread -fexceptions
+! CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -g
+! #CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -DMATLAB
+! OFLAGS =	-O2 
+! #AR =             /usr/ccs/bin/ar rcv   # for solaris 2
+! AR =             /usr/bin/ar rcv
+! #RANLIB =         /usr/ccs/bin/ranlib   # for solaris 2
+! RANLIB =         /usr/bin/ranlib
+  
+  FILES.c=	main/user_params.c main/interface.c main/main.c \
+  		submain/balance.c submain/divide.c submain/submain.c \
+--- 2,9 ----
+  DEST=		${DEST_DIR}/chaco
+  CC = 		gcc
+  IFLAG =		-Imain
+! CFLAGS =	-O2
+! OFLAGS =	-O2
+  
+  FILES.c=	main/user_params.c main/interface.c main/main.c \
+  		submain/balance.c submain/divide.c submain/submain.c \
+***************
+*** 96,196 ****
+  		util/update.c  util/vecout.c util/vecran.c \
+                  util/vecscale.c 
+  
+- 
+- FILESMINUSBLAS.c=	main/user_params.c main/interface.c main/main.c \
+- 		submain/balance.c submain/divide.c submain/submain.c \
+- 		input/input_assign.c \
+- 		input/check_input.c input/input.c input/input_geom.c \
+- 		input/input_graph.c input/read_params.c input/reflect_input.c \
+- 		input/read_val.c \
+- 		graph/check_graph.c graph/free_graph.c \
+- 		graph/reformat.c graph/subgraph.c graph/graph_out.c \
+- 		inertial/eigenvec2.c inertial/eigenvec3.c inertial/inertial.c \
+- 		inertial/inertial1d.c inertial/inertial2d.c \
+- 		inertial/inertial3d.c inertial/make_subgeom.c \
+- 		klspiff/buckets.c klspiff/buckets_bi.c klspiff/buckets1.c \
+- 		klspiff/bilistops.c klspiff/coarsen_kl.c klspiff/count_weights.c \
+- 		klspiff/compress_ewgts.c klspiff/kl_init.c klspiff/kl_output.c \
+- 		klspiff/klspiff.c klspiff/make_bndy_list.c \
+- 		klspiff/make_kl_list.c klspiff/nway_kl.c \
+- 		klvspiff/bpm_improve.c klvspiff/bucketsv.c \
+- 		klvspiff/clear_dvals.c klvspiff/coarsen_klv.c \
+- 		klvspiff/countup_vtx_sep.c klvspiff/find_bndy.c klvspiff/flow.c \
+- 		klvspiff/klv_init.c klvspiff/klvspiff.c klvspiff/make_bpgraph.c \
+- 		klvspiff/make_sep_list.c klvspiff/matching.c klvspiff/nway_klv.c \
+- 		klvspiff/flatten.c \
+- 		coarsen/coarsen.c coarsen/interpolate.c coarsen/makefgraph.c \
+- 		coarsen/makeccoords.c \
+- 		coarsen/coarsen1.c coarsen/makev2cv.c \
+- 		coarsen/maxmatch.c coarsen/maxmatch1.c coarsen/maxmatch2.c \
+- 		coarsen/maxmatch3.c coarsen/maxmatch4.c coarsen/maxmatch5.c \
+- 		connect/add_edges.c connect/connected.c connect/find_edges.c \
+- 		eigen/bidir.c eigen/bisect.c eigen/checkeig.c \
+- 		eigen/checkeig_ext.c \
+- 		eigen/checkorth.c eigen/cksturmcnt.c eigen/mkeigvecs.c\
+- 		eigen/eigensolve.c eigen/get_extval.c eigen/get_ritzvals.c \
+- 		eigen/lanczos_FO.c eigen/lanczos_SO.c eigen/lanczos_SO_float.c \
+- 		eigen/lanczos_ext.c eigen/lanczos_ext_float.c eigen/lanc_seconds.c\
+- 		eigen/lanpause.c eigen/makeorthlnk.c eigen/mkscanlist.c \
+- 		eigen/orthog1.c eigen/orthogonalize.c eigen/orthogvec.c \
+- 		eigen/ql.c eigen/rqi.c eigen/rqi_ext.c eigen/scale_diag.c \
+- 		eigen/scanmax.c eigen/scanmin.c eigen/solistout.c \
+-                 eigen/sorthog.c eigen/splarax.c eigen/sturmcnt.c \
+- 		eigen/Tevec.c eigen/tri_solve.c eigen/warnings.c \
+- 		symmlq/aprod.c symmlq/msolve.c symmlq/pow_dd.c \
+- 		symmlq/symmlq.c  \
+- 		tinvit/tinvit.c tinvit/pythag.c tinvit/epslon.c \
+- 		optimize/determinant.c optimize/func2d.c \
+- 		optimize/func3d.c optimize/opt2d.c optimize/opt3d.c \
+- 		assign/assign.c assign/assign_out.c assign/mapper.c \
+- 		assign/median.c assign/merge_assign.c \
+- 		assign/rec_median.c assign/rotate.c assign/y2x.c \
+- 		bpmatch/checkbp.c bpmatch/inits2d.c bpmatch/inits3d.c \
+- 		bpmatch/genvals2d.c bpmatch/genvals3d.c bpmatch/map2d.c \
+- 		bpmatch/map3d.c bpmatch/movevtxs.c \
+- 		bpmatch/sorts2d.c bpmatch/sorts3d.c \
+- 		refine_map/compute_cube_edata.c refine_map/compute_cube_vdata.c \
+- 		refine_map/refine_cube.c refine_map/update_cube_edata.c \
+- 		refine_map/update_cube_vdata.c refine_map/find_edge_cube.c \
+- 		refine_map/init_cube_edata.c refine_map/compute_mesh_edata.c \
+- 		refine_map/compute_mesh_vdata.c refine_map/find_edge_mesh.c \
+- 		refine_map/init_mesh_edata.c refine_map/refine_mesh.c \
+- 		refine_map/update_mesh_edata.c refine_map/update_mesh_vdata.c \
+- 		refine_map/refine_map.c refine_map/make_comm_graph.c \
+- 		refine_part/refine_part.c refine_part/kl_refine.c \
+- 		refine_part/make_maps_ref.c refine_part/make_terms_ref.c \
+- 		internal/force_internal.c internal/improve_internal.c \
+- 		internal/check_internal.c \
+- 		misc/define_subcubes.c misc/define_submeshes.c \
+- 		misc/divide_procs.c misc/merge_goals.c misc/make_term_props.c \
+- 		misc/count.c misc/countup.c misc/countup_cube.c \
+- 		misc/countup_mesh.c misc/make_subgoal.c \
+- 		misc/find_maxdeg.c misc/make_maps.c misc/make_setlists.c \
+- 		misc/sequence.c misc/perturb.c misc/simple_part.c \
+- 		misc/time_kernels.c misc/timing.c \
+- 		util/affirm.c util/array_alloc_2D.c util/bit_reverse.c \
+- 		util/checkpnt.c util/cpvec.c util/dot.c \
+- 		util/doubleout.c util/input_int.c util/gray.c \
+- 		util/machine_params.c util/makevwsqrt.c util/mkvec.c util/norm.c \
+-                 util/normalize.c util/mergesort.c \
+-                 util/randomize.c util/smalloc.c util/bail.c \
+- 		util/scadd.c util/seconds.c util/setvec.c util/shell_sort.c \
+- 		util/strout.c util/tri_prod.c util/true_or_false.c \
+- 		util/update.c  util/vecout.c util/vecran.c \
+-                 util/vecscale.c 
+- 
+  FILES.o=	$(FILES.c:.c=.o) 
+- FILESMINUSBLAS.o=	$(FILESMINUSBLAS.c:.c=.o) 
+- 
+- 
+- ${DEST}:	${FILES.c} chaco.a Makefile
+- 		${CC} ${OFLAGS} chaco.a -lm -o ${DEST}
+  
+- chaco.a:	${FILES.o}
+- 		${AR} chaco.a ${FILES.o} ; ${RANLIB} chaco.a
+  
+! chacominusblas.a:	${FILESMINUSBLAS.o}
+! 		${AR} chacominusblas.a ${FILESMINUSBLAS.o} ; ${RANLIB} chacominusblas.a
+  
+  lint:
+  		lint ${IFLAG} ${FILES.c} -lm
+--- 87,97 ----
+  		util/update.c  util/vecout.c util/vecran.c \
+                  util/vecscale.c 
+  
+  FILES.o=	$(FILES.c:.c=.o) 
+  
+  
+! ${DEST}:	${FILES.o} Makefile
+! 		${CC} ${OFLAGS} ${FILES.o} -lm -o ${DEST}
+  
+  lint:
+  		lint ${IFLAG} ${FILES.c} -lm
+Only in src/code/misc: count.o
+Only in src/code/misc: countup_cube.o
+Only in src/code/misc: countup_mesh.o
+Only in src/code/misc: countup.o
+Only in src/code/misc: define_subcubes.o
+Only in src/code/misc: define_submeshes.o
+Only in src/code/misc: divide_procs.o
+Only in src/code/misc: find_maxdeg.o
+Only in src/code/misc: make_maps.o
+Only in src/code/misc: make_setlists.o
+Only in src/code/misc: make_subgoal.o
+Only in src/code/misc: make_term_props.o
+Only in src/code/misc: merge_goals.o
+Only in src/code/misc: perturb.o
+Only in src/code/misc: sequence.o
+Only in src/code/misc: simple_part.o
+Only in src/code/misc: time_kernels.o
+diff -rc src/code/misc/timing.c old/code/misc/timing.c
+*** src/code/misc/timing.c	2010-07-16 16:28:47.366242590 -0700
+--- old/code/misc/timing.c	1997-01-03 09:10:52.000000000 -0800
+***************
+*** 3,9 ****
+   * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */
+  
+  #include   <stdio.h>
+- #include   "defs.h"
+  
+  /* Timing parameters. */
+  
+--- 3,8 ----
+Only in src/code/misc: timing.o
+Only in src/code/optimize: determinant.o
+Only in src/code/optimize: func2d.o
+Only in src/code/optimize: func3d.o
+Only in src/code/optimize: opt2d.o
+Only in src/code/optimize: opt3d.o
+Only in src/code/refine_map: compute_cube_edata.o
+Only in src/code/refine_map: compute_cube_vdata.o
+Only in src/code/refine_map: compute_mesh_edata.o
+Only in src/code/refine_map: compute_mesh_vdata.o
+Only in src/code/refine_map: find_edge_cube.o
+Only in src/code/refine_map: find_edge_mesh.o
+Only in src/code/refine_map: init_cube_edata.o
+Only in src/code/refine_map: init_mesh_edata.o
+Only in src/code/refine_map: make_comm_graph.o
+Only in src/code/refine_map: refine_cube.o
+Only in src/code/refine_map: refine_map.o
+Only in src/code/refine_map: refine_mesh.o
+Only in src/code/refine_map: update_cube_edata.o
+Only in src/code/refine_map: update_cube_vdata.o
+Only in src/code/refine_map: update_mesh_edata.o
+Only in src/code/refine_map: update_mesh_vdata.o
+Only in src/code/refine_part: kl_refine.o
+Only in src/code/refine_part: make_maps_ref.o
+Only in src/code/refine_part: make_terms_ref.o
+Only in src/code/refine_part: refine_part.o
+Only in src/code/submain: balance.o
+Only in src/code/submain: divide.o
+Only in src/code/submain: submain.o
+Only in src/code/symmlq: aprod.o
+Only in src/code/symmlq: msolve.o
+Only in src/code/symmlq: pow_dd.o
+diff -rc src/code/symmlq/symmlqblas.f old/code/symmlq/symmlqblas.f
+*** src/code/symmlq/symmlqblas.f	2010-07-21 18:09:10.370123273 -0700
+--- old/code/symmlq/symmlqblas.f	2010-07-21 14:02:09.633743650 -0700
+***************
+*** 16,22 ****
+  c     uses unrolled loops for increments equal to one.
+  c     jack dongarra, linpack, 3/11/78.
+  c
+!       double precision dx(1),dy(1),da
+        integer i,incx,incy,ix,iy,m,mp1,n
+  c
+        if(n.le.0)return
+--- 16,22 ----
+  c     uses unrolled loops for increments equal to one.
+  c     jack dongarra, linpack, 3/11/78.
+  c
+!       double precision dx(*),dy(*),da
+        integer i,incx,incy,ix,iy,m,mp1,n
+  c
+        if(n.le.0)return
+Only in src/code/symmlq: symmlqblas.o
+Only in src/code/symmlq: symmlq.o
+Only in src/code/tinvit: epslon.o
+Only in src/code/tinvit: pythag.o
+Only in src/code/tinvit: tinvit.o
+Only in src/code/util: affirm.o
+Only in src/code/util: array_alloc_2D.o
+diff -rc src/code/util/bail.c old/code/util/bail.c
+*** src/code/util/bail.c	2010-07-16 16:28:47.368242609 -0700
+--- old/code/util/bail.c	1995-08-08 14:33:01.000000000 -0700
+***************
+*** 4,10 ****
+  
+  #include	<stdio.h>
+  #include	<string.h>
+- #include	"defs.h"
+  
+  /* Wrapper for exit() - print message and exit with status code. Exit code
+     of 0 indicates normal termination. Exit code of 1 indicates early 
+--- 4,9 ----
+***************
+*** 15,20 ****
+--- 14,20 ----
+  int       status;
+  {
+      extern FILE *Output_File;		/* Output file or NULL */
++     void      exit();
+  
+      if (msg != NULL && (int) strlen(msg) > 0) {
+          printf("%s\n", msg);
+Only in src/code/util: bail.o
+Only in src/code/util: bit_reverse.o
+diff -rc src/code/util/checkpnt.c old/code/util/checkpnt.c
+*** src/code/util/checkpnt.c	2010-07-16 16:28:47.370242629 -0700
+--- old/code/util/checkpnt.c	1995-08-08 14:33:01.000000000 -0700
+***************
+*** 4,10 ****
+  
+  #include	<stdio.h>
+  #include	<string.h>
+- #include	"defs.h"
+  
+  /* Debug break point. */
+  void      checkpnt(tag)
+--- 4,9 ----
+Only in src/code/util: checkpnt.o
+Only in src/code/util: cpvec.o
+Only in src/code/util: dot.o
+diff -rc src/code/util/doubleout.c old/code/util/doubleout.c
+*** src/code/util/doubleout.c	2010-07-16 16:28:47.372242648 -0700
+--- old/code/util/doubleout.c	1995-08-08 14:33:02.000000000 -0700
+***************
+*** 3,9 ****
+   * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */
+  
+  #include  <stdio.h>
+- #include  "defs.h"
+  
+  /* Print a double precision number with filtering format to screen. */
+  void      doubleout(number, mode)
+--- 3,8 ----
+Only in src/code/util: doubleout.o
+Only in src/code/util: gray.o
+Only in src/code/util: input_int.o
+Only in src/code/util: machine_params.o
+Only in src/code/util: makevwsqrt.o
+Only in src/code/util: mergesort.o
+Only in src/code/util: mkvec.o
+Only in src/code/util: normalize.o
+Only in src/code/util: norm.o
+Only in src/code/util: randomize.o
+Only in src/code/util: scadd.o
+Only in src/code/util: seconds.o
+Only in src/code/util: setvec.o
+Only in src/code/util: shell_sort.o
+diff -rc src/code/util/smalloc.c old/code/util/smalloc.c
+*** src/code/util/smalloc.c	2010-07-16 16:28:47.375242677 -0700
+--- old/code/util/smalloc.c	1996-03-11 10:44:07.000000000 -0800
+***************
+*** 4,10 ****
+  
+  #include <stdio.h>
+  #include <malloc.h>
+- #include "defs.h"
+  
+  static int nmalloc = 0;		/* number of calls to malloc */
+  static int nfree = 0;		/* number of calls to free */
+--- 4,9 ----
+Only in src/code/util: smalloc.o
+diff -rc src/code/util/strout.c old/code/util/strout.c
+*** src/code/util/strout.c	2010-07-16 16:28:47.377242697 -0700
+--- old/code/util/strout.c	1995-08-08 14:33:05.000000000 -0700
+***************
+*** 4,10 ****
+  
+  #include	<stdio.h>
+  #include	<string.h>
+- #include	"defs.h"
+  
+  /* Wrapper for a printf statement with a string as only arg.
+     Prints to screen and to output file if there is one. */
+--- 4,9 ----
+Only in src/code/util: strout.o
+Only in src/code/util: tri_prod.o
+Only in src/code/util: true_or_false.o
+Only in src/code/util: update.o
+Only in src/code/util: vecout.o
+Only in src/code/util: vecran.o
+Only in src/code/util: vecscale.o
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/chaco_README.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/chaco_README.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/chaco_README.txt	(revision 27955)
@@ -0,0 +1,55 @@
+Chaco-2.2.tar (5/03/00? -- 2.0 was 2/95)
+http://www.sandia.gov/~bahendr/chaco.html
+
+
+Note that meshpart pulls the object files from here, compiled with
+the MATLAB flag for use in the mlchaco mex function, and assembles
+them into a library in its own directory.  This means that any
+objects compiled for the mlchaco mex function and left here should
+not be used for the stand-alone chaco executable, and vice versa.
+
+
+[jschierm@astrid main]$ diff defs_old.h defs.h
+11a12,27  [for running as a matlab mex function]
+> 
+> #ifdef MATLAB
+>     #include "mat.h"
+>     #include "mex.h"
+>     #include "matrix.h"
+>    
+>     #define printf mexPrintf
+>     #define fprintf(file,...) (file == stdout || file == stderr ? mexPrintf(__VA_ARGS__) : fprintf(file,__VA_ARGS__))
+>     #define malloc mxMalloc
+>     #define calloc mxCalloc
+>     #define realloc mxRealloc
+>     #define free mxFree
+> 
+>     #define check_graph chaco_check_graph
+> #endif
+> 
+
+
+added #include "defs.h" to the following:
+assign/assign_out.c
+eigen/get_extval.c
+klvspiff/matching.c
+misc/timing.c
+util/bail.c
+util/checkpnt.c
+util/doubleout.c
+util/smalloc.c
+util/strout.c
+
+
+[jschierm@astrid code]$ diff Makefile_old Makefile
+4,5c4,9  [fPIC required, CFLAGS and OFLAGS copied from Cielo gccopts_v75.sh for glnxa64]
+< IFLAG =               -Imain
+< CFLAGS =      -O2
+---
+> IFLAG =               -Imain -I/usr/local/pkgs/matlab-7.6/extern/include
+> #CFLAGS =     -O2
+> #OFLAGS =     -O2
+> #CFLAGS =     -fPIC -fno-omit-frame-pointer -D_GNU_SOURCE -pthread -fexceptions
+> CFLAGS =      -fPIC -fno-omit-frame-pointer -pthread -fexceptions -DMATLAB
+> #CFLAGS =     -fPIC -fno-omit-frame-pointer -pthread -fexceptions
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/chaco_jes_notes.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/chaco_jes_notes.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/chaco_jes_notes.txt	(revision 27955)
@@ -0,0 +1,86 @@
+7/13/09:
+
+[jschierm@astrid Chaco-2.2]$ diff ../chaco/code/Makefile code
+5,6c5,8  [fPIC required, CFLAGS and OFLAGS copied from Cielo gccopts_v75.sh for glnxa64]
+< CFLAGS =      -O2
+< OFLAGS =      -O2
+---
+> #CFLAGS =     -O2
+> #OFLAGS =     -O2
+> CFLAGS =      -fPIC -fno-omit-frame-pointer -D_GNU_SOURCE -pthread -fexceptions
+> OFLAGS =      -O -DNDEBUG
+34a37,38  [added for meshpart chaco.a library, specified by its makefile]
+>               coarsen/makecgraph.c \
+>               coarsen/countcedges.c \
+
+7/30/09:
+
+[jschierm@astrid main]$ diff defs_old.h defs.h
+11a12,26  [for running as a matlab mex function]
+> 
+> #ifdef MATLAB
+>     #include "mat.h"
+>     #include "mex.h"
+>     #include "matrix.h"
+>    
+>     #define printf mexPrintf
+>     #define malloc mxMalloc
+>     #define calloc mxCalloc
+>     #define realloc mxRealloc
+>     #define free mxFree
+> 
+>     #define check_graph chaco_check_graph
+> #endif
+> 
+
+added #include "defs.h" to the following:
+assign/assign_out.c
+eigen/get_extval.c
+klvspiff/matching.c
+misc/timing.c
+util/bail.c
+util/checkpnt.c
+util/doubleout.c
+util/smalloc.c
+util/strout.c
+
+[jschierm@astrid code]$ diff Makefile_old Makefile | more
+4,5c4,9
+< IFLAG =               -Imain
+< CFLAGS =      -O2
+---
+> IFLAG =               -Imain -I/usr/local/pkgs/matlab-7.6/extern/include
+> #CFLAGS =     -O2
+> #OFLAGS =     -O2
+> #CFLAGS =     -fPIC -fno-omit-frame-pointer -D_GNU_SOURCE -pthread
+> -fexceptions
+> CFLAGS =      -fPIC -fno-omit-frame-pointer -pthread -fexceptions -DMATLAB
+> #CFLAGS =     -fPIC -fno-omit-frame-pointer -pthread -fexceptions
+
+8/25/09:
+
+added macro for fprintf to capture missing output:
+[jschierm@astrid main]$ diff defs_old.h defs.h
+11a12,27
+> 
+> #ifdef MATLAB
+>     #include "mat.h"
+>     #include "mex.h"
+>     #include "matrix.h"
+>    
+>     #define printf mexPrintf
+>     #define fprintf(file,...) (file == stdout || file == stderr ? mexPrintf(__VA_ARGS__) : fprintf(file,__VA_ARGS__))
+>     #define malloc mxMalloc
+>     #define calloc mxCalloc
+>     #define realloc mxRealloc
+>     #define free mxFree
+> 
+>     #define check_graph chaco_check_graph
+> #endif
+> 
+
+6/15/10:
+
+- moved check_graph rename outside of MATLAB compiler directive.
+- created library chaco.a (without MATLAB compiler directive) for Chaco x-layer to link and implemented it in chaco stand-alone link.
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/chaco_njs_notes.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/chaco_njs_notes.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/chaco_njs_notes.txt	(revision 27955)
@@ -0,0 +1,8 @@
+chaco build must be able to see malloc.h
+sudo ln -s /usr/include/malloc/malloc.h /usr/include/malloc.h
+or else make sure you include the malloc directory in path
+
+if on sierra, you must download a version of malloc.h -
+one can be found here: http://web.mit.edu/jhawk/mnt/spo/phone-project/include/malloc.h
+place this file in /usr/local/include/, and run the sierra install script 
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/configs/mac/code/util/smalloc.c.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/configs/mac/code/util/smalloc.c.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/configs/mac/code/util/smalloc.c.patch	(revision 27955)
@@ -0,0 +1,4 @@
+6c6
+< #include <malloc.h>
+---
+> #include <malloc/malloc.h>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/configs/win/msys2/mingw64/code/Makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/configs/win/msys2/mingw64/code/Makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/configs/win/msys2/mingw64/code/Makefile	(revision 27955)
@@ -0,0 +1,202 @@
+DEST_DIR = 	../exec
+DEST=		${DEST_DIR}/chaco
+CC = 		gcc
+IFLAG =		-Imain -I/mingw64/x86_64-w64-mingw32/include
+CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -g -Wno-implicit-function-declaration -D_MSYS2_
+OFLAGS =	-O2
+#AR =             /usr/ccs/bin/ar rcv   # for solaris 2
+#AR =             /usr/bin/ar rcv
+AR =             ar cr
+#RANLIB =         /usr/ccs/bin/ranlib   # for solaris 2
+#RANLIB =         /usr/bin/ranlib
+RANLIB =         ranlib
+
+FILES.c=	main/user_params.c main/interface.c main/main.c \
+		submain/balance.c submain/divide.c submain/submain.c \
+		input/input_assign.c \
+		input/check_input.c input/input.c input/input_geom.c \
+		input/input_graph.c input/read_params.c input/reflect_input.c \
+		input/read_val.c \
+		graph/check_graph.c graph/free_graph.c \
+		graph/reformat.c graph/subgraph.c graph/graph_out.c \
+		inertial/eigenvec2.c inertial/eigenvec3.c inertial/inertial.c \
+		inertial/inertial1d.c inertial/inertial2d.c \
+		inertial/inertial3d.c inertial/make_subgeom.c \
+		klspiff/buckets.c klspiff/buckets_bi.c klspiff/buckets1.c \
+		klspiff/bilistops.c klspiff/coarsen_kl.c klspiff/count_weights.c \
+		klspiff/compress_ewgts.c klspiff/kl_init.c klspiff/kl_output.c \
+		klspiff/klspiff.c klspiff/make_bndy_list.c \
+		klspiff/make_kl_list.c klspiff/nway_kl.c \
+		klvspiff/bpm_improve.c klvspiff/bucketsv.c \
+		klvspiff/clear_dvals.c klvspiff/coarsen_klv.c \
+		klvspiff/countup_vtx_sep.c klvspiff/find_bndy.c klvspiff/flow.c \
+		klvspiff/klv_init.c klvspiff/klvspiff.c klvspiff/make_bpgraph.c \
+		klvspiff/make_sep_list.c klvspiff/matching.c klvspiff/nway_klv.c \
+		klvspiff/flatten.c \
+		coarsen/coarsen.c coarsen/interpolate.c coarsen/makefgraph.c \
+		coarsen/makeccoords.c \
+		coarsen/coarsen1.c coarsen/makev2cv.c \
+		coarsen/maxmatch.c coarsen/maxmatch1.c coarsen/maxmatch2.c \
+		coarsen/maxmatch3.c coarsen/maxmatch4.c coarsen/maxmatch5.c \
+		connect/add_edges.c connect/connected.c connect/find_edges.c \
+		eigen/bidir.c eigen/bisect.c eigen/checkeig.c \
+		eigen/checkeig_ext.c \
+		eigen/checkorth.c eigen/cksturmcnt.c eigen/mkeigvecs.c\
+		eigen/eigensolve.c eigen/get_extval.c eigen/get_ritzvals.c \
+		eigen/lanczos_FO.c eigen/lanczos_SO.c eigen/lanczos_SO_float.c \
+		eigen/lanczos_ext.c eigen/lanczos_ext_float.c eigen/lanc_seconds.c\
+		eigen/lanpause.c eigen/makeorthlnk.c eigen/mkscanlist.c \
+		eigen/orthog1.c eigen/orthogonalize.c eigen/orthogvec.c \
+		eigen/ql.c eigen/rqi.c eigen/rqi_ext.c eigen/scale_diag.c \
+		eigen/scanmax.c eigen/scanmin.c eigen/solistout.c \
+                eigen/sorthog.c eigen/splarax.c eigen/sturmcnt.c \
+		eigen/Tevec.c eigen/tri_solve.c eigen/warnings.c \
+		symmlq/aprod.c symmlq/msolve.c symmlq/pow_dd.c \
+		symmlq/symmlq.c symmlq/symmlqblas.c \
+		tinvit/tinvit.c tinvit/pythag.c tinvit/epslon.c \
+		optimize/determinant.c optimize/func2d.c \
+		optimize/func3d.c optimize/opt2d.c optimize/opt3d.c \
+		assign/assign.c assign/assign_out.c assign/mapper.c \
+		assign/median.c assign/merge_assign.c \
+		assign/rec_median.c assign/rotate.c assign/y2x.c \
+		bpmatch/checkbp.c bpmatch/inits2d.c bpmatch/inits3d.c \
+		bpmatch/genvals2d.c bpmatch/genvals3d.c bpmatch/map2d.c \
+		bpmatch/map3d.c bpmatch/movevtxs.c \
+		bpmatch/sorts2d.c bpmatch/sorts3d.c \
+		refine_map/compute_cube_edata.c refine_map/compute_cube_vdata.c \
+		refine_map/refine_cube.c refine_map/update_cube_edata.c \
+		refine_map/update_cube_vdata.c refine_map/find_edge_cube.c \
+		refine_map/init_cube_edata.c refine_map/compute_mesh_edata.c \
+		refine_map/compute_mesh_vdata.c refine_map/find_edge_mesh.c \
+		refine_map/init_mesh_edata.c refine_map/refine_mesh.c \
+		refine_map/update_mesh_edata.c refine_map/update_mesh_vdata.c \
+		refine_map/refine_map.c refine_map/make_comm_graph.c \
+		refine_part/refine_part.c refine_part/kl_refine.c \
+		refine_part/make_maps_ref.c refine_part/make_terms_ref.c \
+		internal/force_internal.c internal/improve_internal.c \
+		internal/check_internal.c \
+		misc/define_subcubes.c misc/define_submeshes.c \
+		misc/divide_procs.c misc/merge_goals.c misc/make_term_props.c \
+		misc/count.c misc/countup.c misc/countup_cube.c \
+		misc/countup_mesh.c misc/make_subgoal.c \
+		misc/find_maxdeg.c misc/make_maps.c misc/make_setlists.c \
+		misc/sequence.c misc/perturb.c misc/simple_part.c \
+		misc/time_kernels.c misc/timing.c \
+		util/affirm.c util/array_alloc_2D.c util/bit_reverse.c \
+		util/checkpnt.c util/cpvec.c util/dot.c \
+		util/doubleout.c util/input_int.c util/gray.c \
+		util/machine_params.c util/makevwsqrt.c util/mkvec.c util/norm.c \
+                util/normalize.c util/mergesort.c \
+                util/randomize.c util/smalloc.c util/bail.c \
+		util/scadd.c util/seconds.c util/setvec.c util/shell_sort.c \
+		util/strout.c util/tri_prod.c util/true_or_false.c \
+		util/update.c  util/vecout.c util/vecran.c \
+                util/vecscale.c 
+
+
+FILESMINUSBLAS.c=	main/user_params.c main/interface.c main/main.c \
+		submain/balance.c submain/divide.c submain/submain.c \
+		input/input_assign.c \
+		input/check_input.c input/input.c input/input_geom.c \
+		input/input_graph.c input/read_params.c input/reflect_input.c \
+		input/read_val.c \
+		graph/check_graph.c graph/free_graph.c \
+		graph/reformat.c graph/subgraph.c graph/graph_out.c \
+		inertial/eigenvec2.c inertial/eigenvec3.c inertial/inertial.c \
+		inertial/inertial1d.c inertial/inertial2d.c \
+		inertial/inertial3d.c inertial/make_subgeom.c \
+		klspiff/buckets.c klspiff/buckets_bi.c klspiff/buckets1.c \
+		klspiff/bilistops.c klspiff/coarsen_kl.c klspiff/count_weights.c \
+		klspiff/compress_ewgts.c klspiff/kl_init.c klspiff/kl_output.c \
+		klspiff/klspiff.c klspiff/make_bndy_list.c \
+		klspiff/make_kl_list.c klspiff/nway_kl.c \
+		klvspiff/bpm_improve.c klvspiff/bucketsv.c \
+		klvspiff/clear_dvals.c klvspiff/coarsen_klv.c \
+		klvspiff/countup_vtx_sep.c klvspiff/find_bndy.c klvspiff/flow.c \
+		klvspiff/klv_init.c klvspiff/klvspiff.c klvspiff/make_bpgraph.c \
+		klvspiff/make_sep_list.c klvspiff/matching.c klvspiff/nway_klv.c \
+		klvspiff/flatten.c \
+		coarsen/coarsen.c coarsen/interpolate.c coarsen/makefgraph.c \
+		coarsen/makeccoords.c \
+		coarsen/coarsen1.c coarsen/makev2cv.c \
+		coarsen/maxmatch.c coarsen/maxmatch1.c coarsen/maxmatch2.c \
+		coarsen/maxmatch3.c coarsen/maxmatch4.c coarsen/maxmatch5.c \
+		connect/add_edges.c connect/connected.c connect/find_edges.c \
+		eigen/bidir.c eigen/bisect.c eigen/checkeig.c \
+		eigen/checkeig_ext.c \
+		eigen/checkorth.c eigen/cksturmcnt.c eigen/mkeigvecs.c\
+		eigen/eigensolve.c eigen/get_extval.c eigen/get_ritzvals.c \
+		eigen/lanczos_FO.c eigen/lanczos_SO.c eigen/lanczos_SO_float.c \
+		eigen/lanczos_ext.c eigen/lanczos_ext_float.c eigen/lanc_seconds.c\
+		eigen/lanpause.c eigen/makeorthlnk.c eigen/mkscanlist.c \
+		eigen/orthog1.c eigen/orthogonalize.c eigen/orthogvec.c \
+		eigen/ql.c eigen/rqi.c eigen/rqi_ext.c eigen/scale_diag.c \
+		eigen/scanmax.c eigen/scanmin.c eigen/solistout.c \
+                eigen/sorthog.c eigen/splarax.c eigen/sturmcnt.c \
+		eigen/Tevec.c eigen/tri_solve.c eigen/warnings.c \
+		symmlq/aprod.c symmlq/msolve.c symmlq/pow_dd.c \
+		symmlq/symmlq.c  \
+		tinvit/tinvit.c tinvit/pythag.c tinvit/epslon.c \
+		optimize/determinant.c optimize/func2d.c \
+		optimize/func3d.c optimize/opt2d.c optimize/opt3d.c \
+		assign/assign.c assign/assign_out.c assign/mapper.c \
+		assign/median.c assign/merge_assign.c \
+		assign/rec_median.c assign/rotate.c assign/y2x.c \
+		bpmatch/checkbp.c bpmatch/inits2d.c bpmatch/inits3d.c \
+		bpmatch/genvals2d.c bpmatch/genvals3d.c bpmatch/map2d.c \
+		bpmatch/map3d.c bpmatch/movevtxs.c \
+		bpmatch/sorts2d.c bpmatch/sorts3d.c \
+		refine_map/compute_cube_edata.c refine_map/compute_cube_vdata.c \
+		refine_map/refine_cube.c refine_map/update_cube_edata.c \
+		refine_map/update_cube_vdata.c refine_map/find_edge_cube.c \
+		refine_map/init_cube_edata.c refine_map/compute_mesh_edata.c \
+		refine_map/compute_mesh_vdata.c refine_map/find_edge_mesh.c \
+		refine_map/init_mesh_edata.c refine_map/refine_mesh.c \
+		refine_map/update_mesh_edata.c refine_map/update_mesh_vdata.c \
+		refine_map/refine_map.c refine_map/make_comm_graph.c \
+		refine_part/refine_part.c refine_part/kl_refine.c \
+		refine_part/make_maps_ref.c refine_part/make_terms_ref.c \
+		internal/force_internal.c internal/improve_internal.c \
+		internal/check_internal.c \
+		misc/define_subcubes.c misc/define_submeshes.c \
+		misc/divide_procs.c misc/merge_goals.c misc/make_term_props.c \
+		misc/count.c misc/countup.c misc/countup_cube.c \
+		misc/countup_mesh.c misc/make_subgoal.c \
+		misc/find_maxdeg.c misc/make_maps.c misc/make_setlists.c \
+		misc/sequence.c misc/perturb.c misc/simple_part.c \
+		misc/time_kernels.c misc/timing.c \
+		util/affirm.c util/array_alloc_2D.c util/bit_reverse.c \
+		util/checkpnt.c util/cpvec.c util/dot.c \
+		util/doubleout.c util/input_int.c util/gray.c \
+		util/machine_params.c util/makevwsqrt.c util/mkvec.c util/norm.c \
+                util/normalize.c util/mergesort.c \
+                util/randomize.c util/smalloc.c util/bail.c \
+		util/scadd.c util/seconds.c util/setvec.c util/shell_sort.c \
+		util/strout.c util/tri_prod.c util/true_or_false.c \
+		util/update.c  util/vecout.c util/vecran.c \
+                util/vecscale.c 
+
+FILES.o=	$(FILES.c:.c=.o) 
+FILESMINUSBLAS.o=	$(FILESMINUSBLAS.c:.c=.o) 
+
+
+${DEST}:	${FILES.c} chaco.a Makefile
+		${CC} ${OFLAGS} chaco.a -lm -o ${DEST}
+
+chaco.a:	${FILES.o}
+		${AR} $@ ${FILES.o} ; ${RANLIB} $@
+
+chacominusblas.a:	${FILESMINUSBLAS.o}
+		${AR} $@ ${FILESMINUSBLAS.o} ; ${RANLIB} $@
+
+lint:
+		lint ${IFLAG} ${FILES.c} -lm
+
+alint:
+		alint ${IFLAG} ${FILES.c} -lm
+
+clean:
+		rm -f */*.o ${DEST_DIR}/core
+
+.c.o:
+		${CC} -c ${IFLAG} ${CFLAGS} -o $*.o $*.c
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/configs/win/msys2/mingw64/code/main/interface.c
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/configs/win/msys2/mingw64/code/main/interface.c	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/configs/win/msys2/mingw64/code/main/interface.c	(revision 27955)
@@ -0,0 +1,234 @@
+/* This software was developed by Bruce Hendrickson and Robert Leland   *
+ * at Sandia National Laboratories under US Department of Energy        *
+ * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */
+
+#include <stdio.h>
+#include "defs.h"
+#include "structs.h"
+
+int       Using_Main = FALSE;	/* Is main routine being called? */
+
+int       interface(nvtxs, start, adjacency, vwgts, ewgts, x, y, z,
+		              outassignname, outfilename,
+		              assignment,
+		              architecture, ndims_tot, mesh_dims, goal,
+		              global_method, local_method, rqi_flag, vmax, ndims,
+		              eigtol, seed)
+int       nvtxs;		/* number of vertices in full graph */
+int      *start;		/* start of edge list for each vertex */
+int      *adjacency;		/* edge list data */
+int      *vwgts;		/* weights for all vertices */
+float    *ewgts;		/* weights for all edges */
+float    *x, *y, *z;		/* coordinates for inertial method */
+char     *outassignname;	/* name of assignment output file */
+char     *outfilename;		/* output file name */
+short    *assignment;		/* set number of each vtx (length n) */
+int       architecture;		/* 0 => hypercube, d => d-dimensional mesh */
+int       ndims_tot;		/* total number of cube dimensions to divide */
+int       mesh_dims[3];		/* dimensions of mesh of processors */
+double   *goal;			/* desired set sizes for each set */
+int       global_method;	/* global partitioning algorithm */
+int       local_method;		/* local partitioning algorithm */
+int       rqi_flag;		/* should I use RQI/Symmlq eigensolver? */
+int       vmax;			/* how many vertices to coarsen down to? */
+int       ndims;		/* number of eigenvectors (2^d sets) */
+double    eigtol;		/* tolerance on eigenvectors */
+long      seed;			/* for random graph mutations */
+{
+    extern char *PARAMS_FILENAME;	/* name of file with parameter updates */
+    extern int MAKE_VWGTS;	/* make vertex weights equal to degrees? */
+    extern int MATCH_TYPE;      /* matching routine to use */
+    extern int FREE_GRAPH;	/* free graph data structure after reformat? */
+    extern int DEBUG_PARAMS;	/* debug flag for reading parameters */
+    extern int DEBUG_TRACE;	/* trace main execution path */
+    extern double start_time;	/* time routine is entered */
+    extern double reformat_time;/* time spent reformatting graph */
+    FILE     *params_file;	/* file for reading new parameters */
+    struct vtx_data **graph;	/* graph data structure */
+    double    vwgt_sum;		/* sum of vertex weights */
+    double    time;		/* timing variable */
+    float   **coords;		/* coordinates for vertices if used */
+    int      *vptr;		/* loops through vertex weights */
+    int       flag;		/* return code from balance */
+    int       nedges;		/* number of edges in graph */
+    int       using_vwgts;	/* are vertex weights being used? */
+    int       using_ewgts;	/* are edge weights being used? */
+    int       nsets_tot;	/* total number of sets being created */
+    int       igeom;		/* geometric dimension for inertial method */
+    int       default_goal;	/* using default goals? */
+    int       i;		/* loop counter */
+    double    seconds();
+    double   *smalloc_ret();
+    int       sfree(), submain(), reformat();
+    void      free_graph(), read_params(), strout();
+
+    if (DEBUG_TRACE > 0) {
+	printf("<Entering interface>\n");
+    }
+
+    flag = 0;
+    graph = NULL;
+    coords = NULL;
+
+    if (!Using_Main) {		/* If not using main, need to read parameters file. */
+	start_time = seconds();
+	params_file = fopen(PARAMS_FILENAME, "r");
+	if (params_file == NULL && DEBUG_PARAMS > 1) {
+	    printf("Parameter file `%s' not found; using default parameters.\n",
+		   PARAMS_FILENAME);
+	}
+	read_params(params_file);
+    }
+
+    if (goal == NULL) {	/* If not passed in, default goals have equal set sizes. */
+	default_goal = TRUE;
+	if (architecture == 0)
+	    nsets_tot = 1 << ndims_tot;
+	else if (architecture == 1) 
+	    nsets_tot = mesh_dims[0];
+	else if (architecture == 2) 
+	    nsets_tot = mesh_dims[0] * mesh_dims[1];
+	else if (architecture > 2) 
+	    nsets_tot = mesh_dims[0] * mesh_dims[1] * mesh_dims[2];
+
+	if (MAKE_VWGTS && start != NULL) {
+	    vwgt_sum = start[nvtxs] - start[0] + nvtxs;
+	}
+	else if (vwgts == NULL) {
+	    vwgt_sum = nvtxs;
+	}
+	else {
+	    vwgt_sum = 0;
+	    vptr = vwgts;
+	    for (i = nvtxs; i; i--)
+		vwgt_sum += *(vptr++);
+	}
+
+	vwgt_sum /= nsets_tot;
+	goal = (double *) smalloc_ret((unsigned) nsets_tot * sizeof(double));
+	if (goal == NULL) {
+	    strout("\nERROR: No room to make goals.\n");
+	    flag = 1;
+	    goto skip;
+	}
+	for (i = 0; i < nsets_tot; i++)
+	    goal[i] = vwgt_sum;
+    }
+    else {
+	default_goal = FALSE;
+    }
+
+    if (MAKE_VWGTS) {
+	/* Generate vertex weights equal to degree of node. */
+	if (vwgts != NULL) {
+	    strout("WARNING: Vertex weights being overwritten by vertex degrees.");
+	}
+	vwgts = (int *) smalloc_ret((unsigned) nvtxs * sizeof(int));
+	if (vwgts == NULL) {
+	    strout("\nERROR: No room to make vertex weights.\n");
+	    flag = 1;
+	    goto skip;
+	}
+	if (start != NULL) {
+	    for (i = 0; i < nvtxs; i++)
+	        vwgts[i] = 1 + start[i + 1] - start[i];
+	}
+	else {
+	    for (i = 0; i < nvtxs; i++)
+	        vwgts[i] = 1;
+	}
+    }
+
+    using_vwgts = (vwgts != NULL);
+    using_ewgts = (ewgts != NULL);
+
+    if (start != NULL || vwgts != NULL) {	/* Reformat into our data structure. */
+	time = seconds();
+	flag = reformat(start, adjacency, nvtxs, &nedges, vwgts, ewgts, &graph);
+
+	if (flag) {
+	    strout("\nERROR: No room to reformat graph.\n");
+	    goto skip;
+	}
+
+	reformat_time += seconds() - time;
+    }
+    else {
+	nedges = 0;
+    }
+
+    if (FREE_GRAPH) {		/* Free old graph data structures. */
+	sfree((char *) start);
+	sfree((char *) adjacency);
+	if (vwgts != NULL)
+	    sfree((char *) vwgts);
+	if (ewgts != NULL)
+	    sfree((char *) ewgts);
+	start = NULL;
+	adjacency = NULL;
+	vwgts = NULL;
+	ewgts = NULL;
+    }
+
+
+    if (global_method == 3 ||
+        (MATCH_TYPE == 5 && (global_method == 1 || 
+			     (global_method == 2 && rqi_flag)))) {
+	if (x == NULL) {
+	    igeom = 0;
+	}
+	else {			/* Set up coordinate data structure. */
+	    coords = (float **) smalloc_ret((unsigned) 3 * sizeof(float *));
+	    if (coords == NULL) {
+		strout("\nERROR: No room to make coordinate array.\n");
+		flag = 1;
+		goto skip;
+	    }
+	    /* Minus 1's are to allow remainder of program to index with 1. */
+	    coords[0] = x - 1;
+	    igeom = 1;
+	    if (y != NULL) {
+		coords[1] = y - 1;
+		igeom = 2;
+		if (z != NULL) {
+		    coords[2] = z - 1;
+		    igeom = 3;
+		}
+	    }
+	}
+    }
+    else {
+	igeom = 0;
+    }
+
+    /* Subtract from assignment to allow code to index from 1. */
+    assignment = assignment - 1;
+    flag = submain(graph, nvtxs, nedges, using_vwgts, using_ewgts, igeom, coords,
+		   outassignname, outfilename,
+		   assignment, goal,
+		   architecture, ndims_tot, mesh_dims,
+		   global_method, local_method, rqi_flag, vmax, ndims,
+		   eigtol, seed);
+
+skip:
+    if (coords != NULL)
+	sfree((char *) coords);
+
+    if (default_goal)
+	sfree((char *) goal);
+
+    if (graph != NULL)
+	free_graph(graph);
+
+    if (flag && FREE_GRAPH) {
+	sfree((char *) start);
+	sfree((char *) adjacency);
+	sfree((char *) vwgts);
+	sfree((char *) ewgts);
+    }
+
+    if (!Using_Main && params_file != NULL)
+	fclose(params_file);
+
+    return (flag);
+}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/configs/win/msys2/mingw64/code/util/bail.c
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/configs/win/msys2/mingw64/code/util/bail.c	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/configs/win/msys2/mingw64/code/util/bail.c	(revision 27955)
@@ -0,0 +1,27 @@
+/* This software was developed by Bruce Hendrickson and Robert Leland   *
+ * at Sandia National Laboratories under US Department of Energy        *
+ * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */
+
+#include	<stdlib.h>
+#include	<stdio.h>
+#include	<string.h>
+#include	"defs.h"
+
+/* Wrapper for exit() - print message and exit with status code. Exit code
+   of 0 indicates normal termination. Exit code of 1 indicates early 
+   termination following detection of some problem. Call with bail(NULL,status) 
+   to suppress message. */ 
+void      bail(msg, status)
+char     *msg;
+int       status;
+{
+    extern FILE *Output_File;		/* Output file or NULL */
+
+    if (msg != NULL && (int) strlen(msg) > 0) {
+        printf("%s\n", msg);
+	if (Output_File != NULL) {
+            fprintf(Output_File, "%s\n", msg);
+	}
+    }
+    exit(status);
+}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/configs/win/msys2/mingw64/code/util/seconds.c
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/configs/win/msys2/mingw64/code/util/seconds.c	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/configs/win/msys2/mingw64/code/util/seconds.c	(revision 27955)
@@ -0,0 +1,35 @@
+/* This software was developed by Bruce Hendrickson and Robert Leland   *
+ * at Sandia National Laboratories under US Department of Energy        *
+ * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */
+
+#if defined(_INTEL_WIN_) || defined(_MSYS2_)
+#include   <time.h>
+#else
+#include   <sys/time.h>
+#include   <sys/resource.h>
+#endif
+
+double    seconds()
+{
+    double    curtime;
+
+#ifdef RUSAGE_SELF
+
+/* This timer is faster and more robust (if it exists). */
+    struct rusage rusage;
+    int getrusage();
+ 
+    getrusage(RUSAGE_SELF, &rusage);
+    curtime = ((rusage.ru_utime.tv_sec + rusage.ru_stime.tv_sec) +
+	    1.0e-6 * (rusage.ru_utime.tv_usec + rusage.ru_stime.tv_usec));
+
+#else
+
+/* ANSI timer, but lower resolution & wraps around after ~36 minutes. */
+
+    curtime = clock()/((double) CLOCKS_PER_SEC);
+
+#endif
+
+    return (curtime);
+}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/install-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/install-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/install-linux.sh	(revision 27955)
@@ -0,0 +1,60 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER=2.2
+
+PREFIX="${ISSM_DIR}/externalpackages/chaco/install" # Set to location where external package should be installed
+
+## Environment
+#
+export CFLAGS="-Wno-error=implicit-function-declaration"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/Chaco-${VER}.tar.gz" "Chaco-${VER}.tar.gz"
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/docs/chaco_guide.pdf" "chaco_guide.pdf"
+
+# Unpack source
+tar -xvzf Chaco-${VER}.tar.gz
+
+# Move source to 'src' directory
+mv Chaco-${VER}/* src
+rm -rf Chaco-${VER}
+
+# Apply patches
+patch -R -p0 < chaco.patch # Written by diff -rc src ~/Libs/Chaco-${VER} > chaco.patch
+patch src/code/Makefile < patches/Makefile.patch
+
+# Compile
+cd src/code
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make chacominusblas.a
+
+# Clean up objects (but not library or executable)
+make clean
+cd ../..
+
+# Install
+cp -p src/exec/README ${PREFIX}
+cp -p src/exec/User_Params ${PREFIX}
+cp -p src/exec/*.coords ${PREFIX}
+cp -p src/exec/*.graph ${PREFIX}
+mkdir ${PREFIX}/include
+cp -p src/code/main/defs.h ${PREFIX}/include/defs.h
+cp -p src/code/main/params.h ${PREFIX}/include/params.h
+cp -p chaco.h ${PREFIX}/include/chaco.h
+mkdir ${PREFIX}/lib
+mv src/code/chaco.a ${PREFIX}/lib/libchaco.a
+mv src/code/chacominusblas.a ${PREFIX}/lib/libchacominusblas.a
+mkdir ${PREFIX}/exec
+mv src/exec/chaco ${PREFIX}/exec
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/install-mac.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/install-mac.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/install-mac.sh	(revision 27955)
@@ -0,0 +1,61 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER=2.2
+
+PREFIX="${ISSM_DIR}/externalpackages/chaco/install" # Set to location where external package should be installed
+
+## Environment
+#
+export CFLAGS="-Wno-error=implicit-function-declaration"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/Chaco-${VER}.tar.gz" "Chaco-${VER}.tar.gz"
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/docs/chaco_guide.pdf" "chaco_guide.pdf"
+
+# Unpack source
+tar -xvzf Chaco-${VER}.tar.gz
+
+# Move source to 'src' directory
+mv Chaco-${VER}/* src
+rm -rf Chaco-${VER}
+
+# Apply patches
+patch -R -p0 < chaco.patch # Written by diff -rc src ~/Libs/Chaco-${VER} > chaco.patch
+patch src/code/Makefile < patches/Makefile.patch
+patch src/code/util/smalloc.c < configs/mac/code/util/smalloc.c.patch
+
+# Compile
+cd src/code
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make chacominusblas.a
+
+# Clean up objects (but not library or executable)
+make clean
+cd ../..
+
+# Install
+cp -p src/exec/README ${PREFIX}
+cp -p src/exec/User_Params ${PREFIX}
+cp -p src/exec/*.coords ${PREFIX}
+cp -p src/exec/*.graph ${PREFIX}
+mkdir ${PREFIX}/include
+cp -p src/code/main/defs.h ${PREFIX}/include/defs.h
+cp -p src/code/main/params.h ${PREFIX}/include/params.h
+cp -p chaco.h ${PREFIX}/include/chaco.h
+mkdir ${PREFIX}/lib
+mv src/code/chaco.a ${PREFIX}/lib/libchaco.a
+mv src/code/chacominusblas.a ${PREFIX}/lib/libchacominusblas.a
+mkdir ${PREFIX}/exec
+mv src/exec/chaco ${PREFIX}/exec
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/install-win-msys2-mingw.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/install-win-msys2-mingw.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/install-win-msys2-mingw.sh	(revision 27955)
@@ -0,0 +1,61 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER=2.2
+
+PREFIX="${ISSM_DIR}/externalpackages/chaco/install" # Set to location where external package should be installed
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/Chaco-${VER}.tar.gz" "Chaco-${VER}.tar.gz"
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/docs/chaco_guide.pdf" "chaco_guide.pdf"
+
+# Unpack source
+tar -xvzf Chaco-${VER}.tar.gz
+
+# Move source to 'src' directory
+mv Chaco-${VER}/* src
+rm -rf Chaco-${VER}
+
+# Apply patches
+patch -R -p0 < chaco.patch  # Written by diff -rc src ~/Libs/Chaco-${VER} > chaco.patch
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/win/msys2/mingw64/code/Makefile src/code
+cp configs/win/msys2/mingw64/code/main/interface.c src/code/main
+cp configs/win/msys2/mingw64/code/util/bail.c src/code/util
+cp configs/win/msys2/mingw64/code/util/seconds.c src/code/util
+
+# Compile
+cd src/code
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make chacominusblas.a
+
+# Clean up objects (but not library or executable)
+make clean
+cd ../..
+
+# Install
+cp -p src/exec/README ${PREFIX}
+cp -p src/exec/User_Params ${PREFIX}
+cp -p src/exec/*.coords ${PREFIX}
+cp -p src/exec/*.graph ${PREFIX}
+mkdir ${PREFIX}/include
+cp -p src/code/main/defs.h ${PREFIX}/include/defs.h
+cp -p src/code/main/params.h ${PREFIX}/include/params.h
+cp -p chaco.h ${PREFIX}/include/chaco.h
+mkdir ${PREFIX}/lib
+mv src/code/chaco.a ${PREFIX}/lib/libchaco.a
+mv src/code/chacominusblas.a ${PREFIX}/lib/libchacominusblas.a
+mkdir ${PREFIX}/exec
+mv src/exec/chaco ${PREFIX}/exec
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/Chaco.c
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/Chaco.c	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/Chaco.c	(revision 27955)
@@ -0,0 +1,244 @@
+
+#include <stdio.h>
+#include <string.h>    /*  strcasecmp  */
+#include <time.h>      /*  clock,time,difftime  */
+#include "mex.h"
+
+
+#define THISFUNCTION "Chaco"
+
+/* Input Arguments */
+
+#define    A_IN         prhs[0]
+#define    VWGTS_IN     prhs[1]
+#define    EWGTS_IN     prhs[2]
+#define    XYZ_IN       prhs[3]
+#define    OPTNS_IN     prhs[4]
+#define    NPARTS_IN    prhs[5]
+#define    GOAL_IN      prhs[6]
+
+/* Output Arguments */
+
+#define    ASSGN_OUT    plhs[0]
+
+
+void ChacoUsage( void );
+
+int Chacox(
+    int       nvtxs,		/* number of vertices in graph */
+    int      *start,		/* start of edge list for each vertex */
+    int      *adjacency,	/* edge list data */
+    int      *vwgts,		/* weights for all vertices */
+    float    *ewgts,		/* weights for all edges */
+    float    *x,
+    float    *y,
+    float    *z,			/* coordinates for inertial method */
+    short    *assignment,	/* set number of each vtx (length nvtxs+1) */
+    double   options[10],	/* architecture and partitioning options */
+    int      *nparts,		/* number of parts options */
+    double   *goal			/* desired set sizes */
+);
+
+
+void mexFunction(
+	int           nlhs,           /* number of outputs */
+	mxArray       *plhs[],        /* array of pointers to output arguments */
+	int           nrhs,           /* number of inputs */
+	const mxArray *prhs[]         /* array of pointers to input arguments */
+)
+{
+    int       nvtxs;		/* number of vertices in graph */
+    int      *start;		/* start of edge list for each vertex */
+    int      *adjacency;	/* edge list data */
+    int      *vwgts=NULL;	/* weights for all vertices */
+    float    *ewgts=NULL;	/* weights for all edges */
+    float    *x=NULL;
+    float    *y=NULL;
+    float    *z=NULL;		/* coordinates for inertial method */
+    short    *assignment=NULL;	/* set number of each vtx (length nvtxs+1) */
+    double   options[10]={1,1,0,0,1,1,50,0,.001,7654321};
+							/* architecture and partitioning options */
+    int      *nparts=NULL;	/* number of parts options */
+    double   *goal=NULL;	/* desired set sizes */
+
+	int    i, nedges, nterms, ncols, ierr=0;
+	double *p;
+	mwIndex *mwstart, *mwadjacency;
+
+	clock_t clock0,clock1;
+	time_t  time0, time1;
+
+	/* Check for proper number of arguments */
+
+	if      (nrhs == 0 && nlhs == 0) {
+		ChacoUsage();
+		return;
+	}
+	else if (nrhs <  1 || nlhs >  1) {
+		ChacoUsage();
+		mexErrMsgTxt(" ");
+	}
+
+	clock0=clock();
+	time0 =time(NULL);
+	mexPrintf("\nChaco Module -- %s",ctime(&time0));
+
+	/* Assign pointers to the various parameters */
+	/* and convert to the appropriate format for Chaco */
+
+	if (!mxIsEmpty(A_IN) && mxIsNumeric(A_IN) && mxIsSparse(A_IN)) {
+		nvtxs = mxGetN(A_IN);
+		mwstart = mxGetJc(A_IN);
+		start = mxMalloc((mxGetN(A_IN)+1)*sizeof(int));
+		for (i=0; i<(mxGetN(A_IN)+1); i++)
+			start[i]= (int)mwstart[i];
+		nedges = start[nvtxs];
+		mwadjacency = mxGetIr(A_IN);
+		adjacency = mxMalloc(mxGetNzmax(A_IN)*sizeof(int));
+		for (i=0; i<mxGetNzmax(A_IN); i++)
+			adjacency[i]= (int)mwadjacency[i];
+	}
+	else {
+		mexPrintf("%s -- Adjacency matrix must be numeric and sparse.\n",
+				  THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+
+	if (nrhs >= 2 && !mxIsEmpty(VWGTS_IN)) {
+		if (mxIsNumeric(VWGTS_IN) && !mxIsSparse(VWGTS_IN) &&
+			(nterms=mxGetM(VWGTS_IN)*mxGetN(VWGTS_IN)) == nvtxs) {
+			vwgts = (int *) mxCalloc(nvtxs, sizeof(int));
+			p = mxGetPr(VWGTS_IN);
+			for (i = 0; i < nvtxs; vwgts[i++] = (int) *p++);
+		}
+		else {
+			mexPrintf("%s -- Vertex weight vector must be numeric, full, and length=%d.\n",
+					  THISFUNCTION,nvtxs);
+			mexErrMsgTxt(" ");
+		}
+	}
+
+	if (nrhs >= 3 && !mxIsEmpty(EWGTS_IN)) {
+		if (mxIsNumeric(EWGTS_IN) && mxIsSparse(EWGTS_IN) &&
+			(nterms=mxGetNzmax(EWGTS_IN)) == nedges) {
+			ewgts = (float *) mxCalloc(nedges, sizeof(float));
+			p = mxGetPr(A_IN);
+			for (i = 0; i < nedges; ewgts[i++] = (float) *p++);
+		}
+		else {
+			mexPrintf("%s -- Edge weight matrix must be numeric, sparse, and nonzeroes=%d.\n",
+					  THISFUNCTION,nedges);
+			mexErrMsgTxt(" ");
+		}
+	}
+
+	if (nrhs >= 4 && (ncols = mxGetN(XYZ_IN)) >= 1) {
+		if (mxIsNumeric(XYZ_IN) && !mxIsSparse(XYZ_IN) &&
+			mxGetM(XYZ_IN) == nvtxs) {
+			x = (float *) mxCalloc(nvtxs, sizeof(float));
+			p = mxGetPr(XYZ_IN);
+			for (i = 0; i < nvtxs; x[i++] = (float) *p++);
+		}
+		else {
+			mexPrintf("%s -- XYZ coordinate matrix must be numeric, full, and length=%d.\n",
+					  THISFUNCTION,nvtxs);
+			mexErrMsgTxt(" ");
+		}
+		if ((ncols                 ) >= 2) {
+			y = (float *) mxCalloc(nvtxs, sizeof(float));
+			for (i = 0; i < nvtxs; y[i++] = (float) *p++);
+			if ((ncols                 ) >= 3) {
+				z = (float *) mxCalloc(nvtxs, sizeof(float));
+				for (i = 0; i < nvtxs; z[i++] = (float) *p++);
+			}
+		}
+	}
+
+	if (nrhs >= 5 && !mxIsEmpty(OPTNS_IN)) {
+		if (mxIsNumeric(OPTNS_IN) && !mxIsSparse(OPTNS_IN) &&
+			(nterms=mxGetM(OPTNS_IN)*mxGetN(OPTNS_IN))) {
+			p = mxGetPr(OPTNS_IN);
+			for (i = 0; i < (nterms<10 ? nterms : 10); options[i++] = *p++);
+		}
+		else {
+			mexPrintf("%s -- Options vector must be numeric and full.\n",
+					  THISFUNCTION);
+			mexErrMsgTxt(" ");
+		}
+	}
+
+	if (nrhs >= 6 && !mxIsEmpty(NPARTS_IN)) {
+		if (mxIsNumeric(NPARTS_IN) && !mxIsSparse(NPARTS_IN) &&
+			(nterms=mxGetM(NPARTS_IN)*mxGetN(NPARTS_IN))) {
+			nparts = (int *) mxCalloc(nterms, sizeof(int));
+			p = mxGetPr(NPARTS_IN);
+			for (i = 0; i < nterms; nparts[i++] = (int) *p++);
+		}
+		else {
+			mexPrintf("%s -- Parts vector must be numeric and full.\n",
+					  THISFUNCTION);
+			mexErrMsgTxt(" ");
+		}
+	}
+
+	if (nrhs >= 7 && !mxIsEmpty(GOAL_IN)) {
+		if (mxIsNumeric(GOAL_IN) && !mxIsSparse(GOAL_IN) &&
+			(nterms=mxGetM(GOAL_IN)*mxGetN(GOAL_IN))) {
+			goal = (double *) mxCalloc(nterms, sizeof(double));
+			p = mxGetPr(GOAL_IN);
+			for (i = 0; i < nterms; goal[i++] = *p++);
+		}
+		else {
+			mexPrintf("%s -- Goal vector must be numeric and full.\n",
+					  THISFUNCTION);
+			mexErrMsgTxt(" ");
+		}
+	}
+
+	assignment = (short *) mxCalloc(nvtxs, sizeof(short));
+
+    /* Do the actual computations in a subroutine */
+
+	ierr = Chacox(nvtxs, start, adjacency, vwgts, ewgts, x, y, z,
+		assignment, options, nparts, goal);
+
+    /* Create matrices for the return arguments */
+
+	if (!ierr) {
+		ASSGN_OUT = mxCreateDoubleMatrix(1,nvtxs,mxREAL);
+		p = mxGetPr(ASSGN_OUT);
+		for (i = 0; i < nvtxs; *p++ = (double) assignment[i++]);
+	}
+	else
+		ASSGN_OUT = mxCreateDoubleMatrix(0,0,mxREAL);
+
+	/* Free what we allocated */
+   
+	if (!assignment) mxFree((void *) assignment);
+	if (!goal)       mxFree((void *) goal);
+	if (!nparts)     mxFree((void *) nparts);
+	if (!z)          mxFree((void *) z);
+	if (!y)          mxFree((void *) y);
+	if (!x)          mxFree((void *) x);
+	if (!ewgts)      mxFree((void *) ewgts);
+	if (!vwgts)      mxFree((void *) vwgts);
+	if (!adjacency)  mxFree((void *) adjacency);
+	if (!start)      mxFree((void *) start);
+
+    clock1=clock();
+    time1 =time(NULL);
+    mexPrintf("Chaco Module -- %f CPU seconds; %f elapsed seconds.\n\n",
+              ((double)(clock1-clock0))/CLOCKS_PER_SEC,difftime(time1,time0));
+
+	return;
+}
+
+void ChacoUsage( void )
+{
+	mexPrintf("\n");
+	mexPrintf("Usage: [assgn] = Chaco(A,vwgts,ewgts,xyz,options,nparts,goal);\n");
+	mexPrintf("\n");
+
+	return;
+}
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/Chaco_m.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/Chaco_m.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/Chaco_m.m	(revision 27955)
@@ -0,0 +1,217 @@
+function  [part1,part2,chaco_time] = chaco(A,xy,method,nparts,goal)
+% CHACO : Hendrickson/Leland's graph partitioner.
+% 
+%  [part1,part2,chaco_time] = chaco(A) returns a 50/50 vertex partition of the mesh
+%  whose symmetric adjacency matrix is A.  
+%
+%  Optional arguments:
+%  map = chaco(A, xy, method, nparts, goal);
+%  map = chaco(A, xy, method, inmap, goal);
+%
+%  A:          Depending on "method", A may contain vertex and edge weights.
+%
+%  xy:         Each row of xy is the coordinates of a vertex.
+%              If xy is non-null and there is no output, draw a picture.
+%
+%  method:     Scalar or vector describing the desired method.  
+%              Default is multilevel Kernighan-Lin; other possibilities below.
+%
+%  nparts      Number of parts to divide into.  Default is 2.  If nparts is 
+%    or        present, the output is a "map vector", see below.  (If method(5) 
+%  inmap:      is specified, nparts is interpreted differently; see below.  In
+%              any case, the default is to divide into two parts.)
+%              If method(1) = 7 (see below), this argument is a map vector
+%              specifying an initial 2-way partition, and Chaco refines it.
+%
+%  goal:       Optionally, a vector of desired sizes (or total vertex weights)
+%              for each of the nparts parts.  Default is all sizes equal.
+%
+%  map:        If nparts and inmap are not present, the output is a vector of 
+%              the n/2 vertex numbers in one part of the 2-way partition, for
+%              compatibility with geopart and specpart.
+%              If nparts or imap is present, the output is a vector of the
+%              n part numbers, from 0 to nparts-1, assigned to the vertices.
+%
+% This is a Matlab interface to the graph partitioning software described
+% in B. Hendrickson and R. Leland, "The Chaco User's Guide (Version 2.0)",
+% Sandia National Laboratories report SAND94-2692, October 1994.
+% This interface was written by John Gilbert, Xerox PARC, and is
+% Copyright (c) 1994-1996 by Xerox Corporation.  All rights reserved.
+% HELP COPYRIGHT for complete copyright and licensing notice.
+%
+% Modified by Tim Davis, for Matlab 5.1.  July 6, 1998.
+%   05/28/10    jes    Reorganization into Matlab-layer and x-layer.
+%
+% See also GEOPART, SPECPART.
+%
+% "method" is a vector of flags as follows.  Not all combinations are supported.
+% See Section 6.10 of the Chaco manual for more details on all the arguments.
+% If "method" is shorter than 10, we use the defaults for unspecified entries.
+%
+% method(1):  Global partitioning method  ("global_method" in the Chaco manual).
+%             1 Multilevel Kernighan-Lin (default)
+%             2 Spectral
+%             3 Inertial
+%             4 Linear
+%             5 Random
+%             6 Scattered
+%             7 Use "inmap" as the global (2-way) partition
+%
+% method(2):  Local refinement method  ("local_method" in the Chaco manual).
+%             1 Kernighan-Lin (default)
+%             2 None
+%
+% method(3):  Vertex weighting.
+%             0 No weights (default)
+%             1 Use diag(A) as (positive integer) vertex weights
+%
+% method(4):  Edge weighting.
+%             0 No weights (default)
+%             1 Use off-diagonals of A as (positive integer) edge weights
+%
+% method(5):  Target architecture  ("architecture" in the Chaco manual).
+%             If method(5) = 0, the target is a hypercube, "nparts" is the 
+%             number of dimensions, and the partition is into 2^nparts parts.  
+%             If method(5) = 1, 2, or 3, the target is a 1-, 2-, or 3-D grid,
+%             "nparts" is a vector of the sizes of the grid in each dimension,
+%             and the partition is into prod(nparts) parts.
+%             Default is method(5) = 1, so nparts is the number of parts.
+%
+% method(6):  Partitioning dimension  ("ndims" in the Chaco manual).
+%             1 Bisection (default)
+%             2 Quadrisection
+%             3 Octasection
+%
+% method(7):  Number of vertices to coarsen to  ("vmax" in the Chaco manual).
+%             Default is 50.
+%
+% method(8):  Eigensolver  ("rqi_flag" in the Chaco manual).
+%             0 RQI/Symmlq (default)
+%             1 Lanczos 
+%
+% method(9):  Eigensolver convergence tolerance  ("eigtol" in the Chaco manual).
+%             Default is .001
+%
+% method(10): Seed for random number generator  ("seed" in the Chaco manual).
+%             Default is 7654321.
+%
+% Many esoteric details of Chaco's behavior can be changed by placing a file
+% called "User_Params" in the same directory as the executable mlchaco.mex.
+% As always, see the manual for details.
+
+DefaultMethod = [1 1 0 0 1 1 50 0 .001 7654321];
+
+% Fill in default arguments.
+if nargin < 2, xy = []; end;
+if nargin < 3, method = DefaultMethod; end;
+if nargin < 4, nparts = []; end;
+if nargin < 5, goal = []; end;
+if length(method) < length(DefaultMethod)
+    method = [method DefaultMethod(length(method)+1 : length(DefaultMethod))];
+end;
+
+% Decide on output and graphics.
+if (isempty (nparts))
+    mapvector = 0;
+else
+    mapvector = 1;
+end;
+picture = (nargout == 0) & (size(xy,2) >= 2);
+
+% Chaco numbers vertices from 1 and the Matlab sparse data structure 
+% numbers rows from 0, so we add an empty first row to make things line up.
+% This code also makes sure the arg to Chaco will be sparse.
+[n,n] = size(A);
+Adiag = diag(diag(A));
+%Aout = [sparse(1,n) ; A-Adiag];
+Aout = sparse(A-Adiag);
+
+% Make sure all args except the adj matrix are full;
+if issparse(xy)
+    xy = full(xy);
+end;
+if issparse(method)
+    method = full(method);
+end;
+if issparse(nparts)
+    nparts = full(nparts);
+end;
+if issparse(goal)
+    goal = full(goal);
+end;
+
+% Decode "method" to get the actual args to Chaco.
+% Note that "nparts" may correspond to any of several Chaco
+% parameters, depending on the method.
+
+if method(3)
+    vwgts = full(diag(A));
+    totalvwgt = sum(vwgts);
+else
+    vwgts = [];
+    totalvwgt = size(A,2);
+end;
+if method(4)
+    ewgts = Aout;
+else
+    ewgts = [];
+end;
+if method(1) == 7
+    % Refine an input partition: "nparts" is the input partition.
+    % This seems to work only for hypercube architecture,
+    % so we force a 1-D hypercube with 2-way partitioning.
+    nsets = 2;
+elseif method(5) == 0
+    % Partition for hypercube: "nparts" is # of dimensions (default 1).
+    if (isempty (nparts))
+    	nsets = 2^1;
+    else
+    	nsets = 2^nparts;
+    end;
+else
+    % Partition for mesh: "nparts" is vector of mesh sizes in each
+    % dimension, default [2 1 ... 1] with "architecture" dimensions.
+    if (isempty (nparts))
+    	nsets = prod(2);
+    else
+    	nsets = prod(nparts);
+    end;
+end;
+if length(goal) ~= nsets
+    goal = totalvwgt/nsets * ones(1,nsets);
+end;
+
+[map,chaco_time]=Chaco(Aout, vwgts, ewgts, xy, method, nparts, goal);
+
+% Draw the picture.
+if picture
+    if size(xy,2) >= 3 && unique(xy(:,3)) == 0
+        xy=xy(:,1:2);
+    end
+    if length(unique(map)) == 2
+        gplotpart(A,xy,find(map==0));
+    else
+        gplotmap(A,xy,map);
+    end;
+    if     method(1)==1, heading = 'Multilevel Kernighan-Lin';
+    elseif method(1)==2, heading = 'Spectral';
+    elseif method(1)==3, heading = 'Inertial';
+    elseif method(1)==4, heading = 'Linear';
+    elseif method(1)==5, heading = 'Random';
+    elseif method(1)==6, heading = 'Scattered';
+    elseif method(1)==7, heading = 'Input'; 
+    end;
+    heading = [heading ' Partition'];
+    if method(2)==1 & method(1) ~= 1 
+        heading =[heading ' Refined by KL'];
+    end;
+    title(heading);
+end;
+
+% Put output in the right form.
+if mapvector
+    part1 = map;
+else
+    part1 = find(map==0);
+    part2 = find(map==1);
+end;
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/Chacox.c
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/Chacox.c	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/Chacox.c	(revision 27955)
@@ -0,0 +1,471 @@
+/* This software was developed by Bruce Hendrickson and Robert Leland   *
+ * at Sandia National Laboratories under US Department of Energy        *
+ * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */
+
+#include <stdio.h>
+#include <string.h>
+#include "defs.h"
+#include "params.h"
+
+#define THISFUNCTION "Chacox"
+
+#define    OPT_GLOBAL    0
+#define    OPT_LOCAL     1
+#define    OPT_VWGTS     2
+#define    OPT_EWGTS     3
+#define    OPT_ARCH      4
+#define    OPT_NDIMS     5
+#define    OPT_VMAX      6
+#define    OPT_RQI       7
+#define    OPT_EIGTOL    8
+#define    OPT_SEED      9
+
+int      input_parse(
+	char     *outassignname,	/* name of assignment output file */
+	char     *outfilename,		/* name of file for outputing run results */
+	int      *architecture,		/* 0=> hypercube, d=> d-dimensional mesh */
+	int      *ndims_tot,		/* target number of hypercube dimensions */
+	int       mesh_dims[3],		/* mesh dimensions */
+	int      *global_method,	/* what global partitioning strategy to use? */
+	int      *local_method,		/* what local refinement strategy to use? */
+	int      *rqi_flag,		/* should I use multilevel eigensolver? */
+	int      *vmax,			/* if so, how far should I coarsen? */
+	int      *ndims,		/* number of divisions at each stage */
+	int      *nprocs,		/* number of processors being divided into */
+	double   options[10],	/* architecture and partitioning options */
+	int      *nparts		/* number of parts options */
+);
+
+
+int Chacox(
+	int       nvtxs,		/* number of vertices in graph */
+	int      *start,		/* start of edge list for each vertex */
+	int      *adjacency,	/* edge list data */
+	int      *vwgts,		/* weights for all vertices */
+	float    *ewgts,		/* weights for all edges */
+	float    *x,
+	float    *y,
+	float    *z,			/* coordinates for inertial method */
+	short    *assignment,	/* set number of each vtx (length nvtxs+1) */
+	double   options[10],	/* architecture and partitioning options */
+	int      *nparts,		/* number of parts options */
+	double   *goal			/* desired set sizes */
+)
+{
+	extern int Using_Main;	/* is main routine being called? */
+	extern char *PARAMS_FILENAME;	/* name of file with parameter updates */
+	extern double EIGEN_TOLERANCE;	/* tolerance for eigen calculations */
+	extern int OUTPUT_ASSIGN;	/* whether to write assignment to file */
+	extern int DEBUG_MEMORY;	/* debug memory allocation and freeing? */
+	extern int DEBUG_TRACE;	/* trace main execution path */
+	extern int DEBUG_PARAMS;	/* debug flag for reading parameters */
+	extern long RANDOM_SEED;	/* seed for random number generators */
+	extern int ECHO;		/* controls amount of output */
+	extern int PROMPT;		/* prompt for input or not? */
+	extern int PRINT_HEADERS;	/* print lines for output sections? */
+	extern int MATCH_TYPE;      /* matching routine to call */
+	extern double input_time;	/* times data file input */
+	extern double start_time;	/* time partitioning starts */
+	FILE     *params_file;	/* file with parameter value updates */
+	int       global_method;	/* global partitioning method */
+	int       local_method;	/* local partitioning method */
+	double    eigtol;		/* tolerance in eigenvector calculation */
+	int       ndims;		/* dimension of recursive partitioning */
+	int       architecture;	/* 0 => hypercube, d => d-dimensional mesh */
+	int       ndims_tot;	/* total number of cube dimensions to divide */
+	int       mesh_dims[3];	/* dimensions of mesh of processors */
+	long      seed;		/* for random graph mutations */
+	int       rqi_flag;		/* use RQI/Symmlq eigensolver? */
+	int       vmax;		/* if so, how many vertices to coarsen down to? */
+	char      outassignname[NAME_LENGTH];	/* assignment output file name */
+	char      outfilename[NAME_LENGTH];	/* name of output file */
+	char     *outassignptr;	/* name or null pointer for output assignment */
+	char     *outfileptr;	/* name or null pointer for output file */
+	int       nprocs;		/* number of processors being divided into */
+	double    time;		/* timing marker */
+	int       flag;		/* return code from input routines */
+	double   *smalloc();	/* safe version of malloc */
+	double    seconds();	/* returns elapsed time in seconds */
+	int       sfree(), interface(), affirm();
+	void      input_queries(), smalloc_stats(), read_params(), clear_timing();
+
+	int i,tvwgt;
+	double tgoal;
+
+	if (DEBUG_TRACE > 0) {
+		printf("<Entering main>\n");
+	}
+
+	if (PRINT_HEADERS) {
+		printf("\n                    Chaco 2.0\n");
+		printf("          Sandia National Laboratories\n\n");
+	}
+
+	Using_Main = TRUE;
+	params_file = fopen(PARAMS_FILENAME, "r");
+	if (params_file == NULL && DEBUG_PARAMS > 1) {
+		printf("Parameter file `%s' not found; using default parameters.\n",
+			   PARAMS_FILENAME);
+	}
+
+	start_time = time = seconds();
+
+	read_params(params_file);
+
+	flag = input_parse(outassignname, outfilename,
+			  &architecture, &ndims_tot, mesh_dims,
+			  &global_method, &local_method, &rqi_flag, &vmax, &ndims, &nprocs,
+			  options, nparts);
+	if (flag)
+		return(flag);
+
+	if (OUTPUT_ASSIGN > 0)
+		outassignptr = outassignname;
+	else
+		outassignptr = NULL;
+
+	if (ECHO < 0)
+		outfileptr = outfilename;
+	else
+		outfileptr = NULL;
+
+	if ((int)options[OPT_VWGTS] && vwgts) {
+		printf("%s -- Applying weights for %d vertices.\n",
+			   THISFUNCTION,nvtxs);
+		tvwgt = 0.;
+		for (i=0; i<nvtxs; i++)
+			tvwgt += vwgts[i];
+	}
+	else {
+		tvwgt = nvtxs;
+		if      ( (int)options[OPT_VWGTS] && !vwgts)
+			printf("%s -- Vertex weight flag=%d, but no vertex weights specified.\n",
+				   THISFUNCTION,options[OPT_VWGTS]);
+		else if (!(int)options[OPT_VWGTS] &&  vwgts)
+			printf("%s -- Vertex weight flag=%d, so specified vertex weights ignored.\n",
+				   THISFUNCTION,options[OPT_VWGTS]);
+	}
+
+	if ((int)options[OPT_EWGTS] && ewgts) {
+		printf("%s -- Applying weights for %d edges.\n",
+			   THISFUNCTION,start[nvtxs]/2);
+	}
+	else {
+		if      ( (int)options[OPT_EWGTS] && !ewgts)
+			printf("%s -- Edge weight flag=%d, but no edge weights specified.\n",
+				   THISFUNCTION,options[OPT_EWGTS]);
+		else if (!(int)options[OPT_EWGTS] &&  ewgts)
+			printf("%s -- Edge weight flag=%d, so specified edge weights ignored.\n",
+				   THISFUNCTION,options[OPT_EWGTS]);
+	}
+
+    if (goal) {
+        printf("%s -- Applying goals for %d sets.\n",
+               THISFUNCTION,nprocs);
+        tgoal = 0.;
+        for (i=0; i<nprocs; i++)
+            tgoal += goal[i];
+        for (i=0; i<nprocs; i++)
+            goal[i] *= (double)tvwgt/tgoal;
+    }
+
+	input_time += seconds() - time;
+
+	if (options[OPT_EIGTOL] > 0)
+		eigtol = options[OPT_EIGTOL];
+	else
+		eigtol = EIGEN_TOLERANCE;
+	if ((int)options[OPT_SEED] > 0)
+		seed = (int)options[OPT_SEED];
+	else
+		seed = RANDOM_SEED;
+
+/*  Chaco numbers vertices from 1 and the Matlab sparse data structure
+	numbers rows from 0, so increment the row indices for each column. */
+
+	for (i=0; i<start[nvtxs]; adjacency[i++]++);
+
+	printf("\n%s -- Calling Chaco interface:\n\n",
+		   THISFUNCTION);
+	flag = interface(nvtxs, start, adjacency,
+		  ((int)options[OPT_VWGTS] && vwgts ? vwgts : NULL),
+		  ((int)options[OPT_EWGTS] && ewgts ? ewgts : NULL),
+		  x, y, z,
+		  outassignptr, outfileptr,
+		  assignment,
+		  architecture, ndims_tot, mesh_dims, goal,
+		  global_method, local_method, rqi_flag, vmax, ndims,
+		  eigtol, seed);
+	printf("\n%s -- Chaco interface returning flag=%d.\n",
+		   THISFUNCTION,flag);
+
+/*  Reset adjacency matrix in case calling function needs it.  */
+
+	for (i=0; i<start[nvtxs]; adjacency[i++]--);
+
+	if (DEBUG_MEMORY > 0) {
+		printf("\n");
+		smalloc_stats();
+	}
+
+	if (params_file != NULL)
+		fclose(params_file);
+
+	if (DEBUG_TRACE > 1) {
+		printf("<Leaving main>\n");
+	}
+	
+	return(0);
+}
+
+
+int      input_parse(
+	char     *outassignname,	/* name of assignment output file */
+	char     *outfilename,		/* name of file for outputing run results */
+	int      *architecture,		/* 0=> hypercube, d=> d-dimensional mesh */
+	int      *ndims_tot,		/* target number of hypercube dimensions */
+	int       mesh_dims[3],		/* mesh dimensions */
+	int      *global_method,	/* what global partitioning strategy to use? */
+	int      *local_method,		/* what local refinement strategy to use? */
+	int      *rqi_flag,		/* should I use multilevel eigensolver? */
+	int      *vmax,			/* if so, how far should I coarsen? */
+	int      *ndims,		/* number of divisions at each stage */
+	int      *nprocs,		/* number of processors being divided into */
+	double   options[10],	/* architecture and partitioning options */
+	int      *nparts		/* number of parts options */
+)
+{
+	extern int SEQUENCE;	/* sequence instead of partition graph? */
+	extern int ARCHITECTURE;	/* 0=> hypercube, d=> d-dimensional mesh */
+	extern int OUTPUT_ASSIGN;	/* write assignments to file? */
+	extern int ECHO;		/* copy input to screen? results to file? */
+	extern int DEBUG_TRACE;	/* trace main execution path */
+	extern int PROMPT;		/* prompt for input? */
+	extern int MATCH_TYPE;      /* max-matching routine to call */
+	int       eigensolver;	/* which kind of eigensolver to use */
+
+	if (DEBUG_TRACE > 0) {
+		printf("<Entering input_parse>\n");
+	}
+
+	if (PROMPT) {
+		printf("Parallel machine architecture:\n");
+		printf("  (0) Hypercube\n");
+		printf("  (1) One-dimensional mesh\n");
+		printf("  (2) Two-dimensional mesh\n");
+		printf("  (3) Three-dimensional mesh\n");
+	}
+	*architecture = (int)options[OPT_ARCH];
+	if (*architecture < 0 || *architecture > 3) {
+		printf("%s -- Architecture %d must be between 0 and 3.\n",
+			   THISFUNCTION,options[OPT_ARCH]);
+		return(-1);
+	}
+
+	/* Name output assignment file. */
+	if (PROMPT)
+		printf("Assignment output file: ");
+	outassignname = NULL;
+
+	/* Name output results file. */
+	if (PROMPT)
+		printf("File name for saving run results: ");
+	outfilename = NULL;
+
+	/* Initialize the method flags */
+	*rqi_flag = 0;
+	*global_method = 0;
+
+	/* Get global method, if any. */
+	if (SEQUENCE) {
+		*global_method = 2;
+	}
+	else {
+		if (PROMPT) {
+			printf("Global partitioning method:\n");
+			printf("  (1) Multilevel-KL\n");
+			printf("  (2) Spectral\n");
+			printf("  (3) Inertial\n");
+			printf("  (4) Linear\n");
+			printf("  (5) Random\n");
+			printf("  (6) Scattered\n");
+			printf("  (7) Read-from-file\n");
+		}
+		*global_method = (int)options[OPT_GLOBAL];
+		if (*global_method < 1 || *global_method > 7) {
+			printf("%s -- Global method %d must be between 1 and 7.\n",
+				   THISFUNCTION,options[OPT_GLOBAL]);
+			return(-1);
+		}
+	}
+
+	if (*global_method == 7) {	/* Name and open input assignment file. */
+		if (PROMPT)
+			printf("Assignment input file: ");
+	}
+
+	else if (*global_method == 3) {
+		if (PROMPT)
+			printf("Geometry input file name: ");
+	}
+
+	else if (*global_method == 2) {
+		if (PROMPT) {
+			printf("Eigensolver:\n");
+			printf("  (1) Multilevel RQI/Symmlq\n");
+			printf("  (2) Lanczos\n"); 
+		}
+		eigensolver = (int)options[OPT_RQI];
+		if (eigensolver < 0 || eigensolver > 2) {
+			printf("%s -- RQI/Symmlq flag %d must be between 0 and 2.\n",
+				   THISFUNCTION,options[OPT_RQI]);
+			return(-1);
+		}
+		if (eigensolver == 1) {
+			if (MATCH_TYPE == 5) {	/* geometric matching */
+				if (PROMPT)
+					printf("Geometry input file name: ");
+			}
+			*rqi_flag = 1;
+			if (PROMPT)
+				printf("Number of vertices to coarsen down to: ");
+			*vmax = (int)options[OPT_VMAX];
+			if (*vmax <= 0) {
+				printf("%s -- Vmax %d must be greater then 0.\n",
+					   THISFUNCTION,options[OPT_VMAX]);
+				return(-1);
+			}
+		}
+		else if (eigensolver == 0 || eigensolver == 2) {
+			*rqi_flag = 0;
+		}
+	}
+
+	else if (*global_method == 1) {
+		if (MATCH_TYPE == 5) {		/* geometric matching */
+			if (PROMPT)
+				printf("Geometry input file name: ");
+		}
+		if (PROMPT)
+			printf("Number of vertices to coarsen down to: ");
+		*vmax = (int)options[OPT_VMAX];
+		if (*vmax <= 0) {
+			printf("%s -- Vmax %d must be greater then 0.\n",
+				   THISFUNCTION,options[OPT_VMAX]);
+			return(-1);
+		}
+	}
+
+	if (SEQUENCE) {
+		*local_method = 2;
+		if (*architecture == 0) {
+			*ndims_tot = 1;
+		}
+		else if (*architecture > 0) {
+			mesh_dims[0] = 2;
+			mesh_dims[1] = mesh_dims[2] = 1;
+		}
+		*ndims = 1;
+		goto End_Label;
+	}
+
+	/* Get local method, if any */
+	*local_method = 0;
+	if (*global_method == 1)
+		*local_method = 1;
+	else {
+		if (PROMPT) {
+			printf("Local refinement method:\n");
+			printf("  (1) Kernighan-Lin\n");
+			printf("  (2) None\n");
+		}
+		*local_method = (int)options[OPT_LOCAL];
+		if (*local_method < 1 || *local_method > 2) {
+			printf("%s -- Local method %d must be 1 and 2.\n",
+				   THISFUNCTION,options[OPT_LOCAL]);
+			return(-1);
+		}
+	}
+
+	/* Now learn about the parallel architecture. */
+	if (*architecture == 0) {
+	/* Get total number of hypercube dimensions in which to partition. */
+		*ndims_tot = 0;
+		if (PROMPT)
+			printf("Total number of target hypercube dimensions: ");
+		*ndims_tot = nparts[0];
+		if (*ndims_tot < 1) {
+			printf(" Number of divisions must be at least 1\n");
+			printf("%s -- Number of divisions %d must be at least 1.\n",
+				   THISFUNCTION,nparts[0]);
+			return(-1);
+		}
+		*nprocs = 1 << (*ndims_tot);
+	}
+
+	else {			/* Get dimensions of mesh. */
+		mesh_dims[1] = mesh_dims[2] = 1;
+		if (*architecture == 2) {
+			if (PROMPT)
+				printf("X and Y extent of of 2-D mesh: ");
+			mesh_dims[0] = nparts[0];
+			mesh_dims[1] = nparts[1];
+		}
+		else if (*architecture == 3) {
+			if (PROMPT)
+				printf("X, Y and Z extent of 3-D mesh: ");
+			mesh_dims[0] = nparts[0];
+			mesh_dims[1] = nparts[1];
+			mesh_dims[2] = nparts[2];
+		}
+		else {			/* Anything else => 1-D mesh */
+			if (PROMPT)
+				printf("Size of 1-D mesh: ");
+			mesh_dims[0] = nparts[0];
+			*architecture = 1;
+		}
+		*nprocs = mesh_dims[0] * mesh_dims[1] * mesh_dims[2];
+	}
+
+	/* Get number of dimensions in which to partition at each level. */
+	*ndims = 0;
+	if (*nprocs <= 3) {
+		*ndims = 1;
+	}
+	else if (*nprocs <= 7) {
+		if (PROMPT) {
+			printf("Partitioning dimension: \n");
+			printf("  (1) Bisection\n");
+			printf("  (2) Quadrisection\n");
+		}
+		*ndims = (int)options[OPT_NDIMS];
+		if (*ndims < 1 || *ndims > 2) {
+			printf("%s -- Ndims %d must be 1 or 2 for %d processors.\n",
+				   THISFUNCTION,options[OPT_NDIMS],*nprocs);
+			return(-1);
+		}
+	}
+	else {
+		if (PROMPT) {
+			printf("Partitioning dimension: \n");
+			printf("  (1) Bisection\n");
+			printf("  (2) Quadrisection\n");
+			printf("  (3) Octasection\n");
+		}
+		*ndims = (int)options[OPT_NDIMS];
+		if (*ndims < 1 || *ndims > 3) {
+			printf("%s -- Ndims %d must be between 1 and 3 for %d processors.\n",
+				   THISFUNCTION,options[OPT_NDIMS],*nprocs);
+			return(-1);
+		}
+	}
+End_Label: 
+
+	if (*global_method == 1 || *rqi_flag) {
+		if (*vmax < 2 * (1 << *ndims)) {
+			*vmax = 2 * (1 << *ndims);
+		}
+	}
+
+	return(0);
+}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/Makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/Makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/Makefile	(revision 27955)
@@ -0,0 +1,293 @@
+# This is the Makefile for the mex-file version of Chaco, to be dynamically 
+# linked with Matlab using the interface in the "meshpart" toolbox.  
+# See file "README" for more information.
+#
+# You may need to change the following variables:
+# 
+# MATLAB      Matlab's top-level directory, often "/usr/matlab" or similar.
+# CHACO       Chaco's source directory, normally the "code" subdirectory
+#             of the Chaco distribution.
+# MLCHACO     Directory with Chaco files modified for Matlab, normally
+#             the directory containing this Makefile.
+# DEST_DIR    Directory for the executable mlchaco.mex, normally the 
+#             "meshpart" directory, which is normally the parent of the 
+#             directory containing this Makefile.
+# CC          Choice of C compiler.  gcc seems to work best for Matlab for me.
+# IFLAGS, CFLAGS, OFLAGS  Flags to go with the compiler and linker.
+#
+# This Makefile works under Solaris 2.  To use it with a different Unix, 
+# you may need to change the references to "ar" and/or "ranlib" and
+# possibly other things.
+#
+# John Gilbert, 1996.
+# Copyright (c) 1990-1996 by Xerox Corporation.  All rights reserved.
+# See file ../copyright.m for complete copyright and licensing notice.
+
+#MATLAB =        /import/matlab
+#MATLAB =        /usr/local/libexec/matlab
+#MATLAB =        /usr/local/pkgs/matlab-7.6
+MATLAB =        ${MATLAB_DIR}
+
+#CHACO =         /project/sparse/chaco/version2/code
+#CHACO =         ../../Chaco-2.0/code
+#CHACO =         ../../Chaco-2.2/code
+#CHACO =         ../../../chaco/src/code
+CHACO =         ${CHACO_DIR}/../src/code
+
+MLCHACO =       .
+DEST_DIR =      ..
+CC =            gcc 
+#CC =            cc 
+IFLAGS =	-I${MATLAB}/extern/include -I${CHACO}/main
+#CFLAGS =        -Xa -G -xO4 -xcg92
+#CFLAGS =        -fPIC -fno-omit-frame-pointer -pthread -fexceptions -DMATLAB
+CFLAGS =        -fPIC -fno-omit-frame-pointer -pthread -fexceptions
+#OFLAGS =        -xO4 -xcg92
+OFLAGS =        -O2
+#AR =             /usr/ccs/bin/ar rcv   # for solaris 2
+AR =             /usr/bin/ar rcv   # for solaris 2
+#RANLIB =         /usr/ccs/bin/ranlib   # for solaris 2
+RANLIB =         /usr/bin/ranlib   # for solaris 2
+
+
+MLFILES.c=	${MLCHACO}/Chacox.c \
+                ${MLCHACO}/user_params.c
+#		${MLCHACO}/bail.c \  # redefined original with -DMATLAB
+#		${MLCHACO}/chaco_check_graph.c \  # redefined original with -DMATLAB
+#		${MLCHACO}/check_input.c \  # redefined original with -DMATLAB
+#                ${MLCHACO}/smalloc.c \  # redefined original with -DMATLAB
+
+CHFILES.c=	${CHACO}/main/interface.c \
+		${CHACO}/main/main.c \
+		${CHACO}/submain/balance.c \
+		${CHACO}/submain/divide.c \
+		${CHACO}/submain/submain.c \
+		${CHACO}/input/input_assign.c \
+		${CHACO}/input/check_input.c \
+		${CHACO}/input/input.c \
+		${CHACO}/input/input_geom.c \
+		${CHACO}/input/input_graph.c \
+		${CHACO}/input/read_params.c \
+		${CHACO}/input/reflect_input.c \
+		${CHACO}/input/read_val.c \
+		${CHACO}/graph/check_graph.c \
+		${CHACO}/graph/free_graph.c \
+		${CHACO}/graph/reformat.c \
+		${CHACO}/graph/subgraph.c \
+		${CHACO}/graph/graph_out.c \
+		${CHACO}/inertial/eigenvec2.c \
+		${CHACO}/inertial/eigenvec3.c \
+		${CHACO}/inertial/inertial.c \
+		${CHACO}/inertial/inertial1d.c \
+		${CHACO}/inertial/inertial2d.c \
+		${CHACO}/inertial/inertial3d.c \
+		${CHACO}/inertial/make_subgeom.c \
+		${CHACO}/klspiff/buckets.c \
+		${CHACO}/klspiff/buckets_bi.c \
+		${CHACO}/klspiff/buckets1.c \
+		${CHACO}/klspiff/bilistops.c \
+		${CHACO}/klspiff/coarsen_kl.c \
+		${CHACO}/klspiff/count_weights.c \
+		${CHACO}/klspiff/compress_ewgts.c \
+		${CHACO}/klspiff/kl_init.c \
+		${CHACO}/klspiff/kl_output.c \
+		${CHACO}/klspiff/klspiff.c \
+		${CHACO}/klspiff/make_bndy_list.c \
+		${CHACO}/klspiff/make_kl_list.c \
+		${CHACO}/klspiff/nway_kl.c \
+		${CHACO}/klvspiff/bpm_improve.c \
+		${CHACO}/klvspiff/bucketsv.c \
+		${CHACO}/klvspiff/clear_dvals.c \
+		${CHACO}/klvspiff/coarsen_klv.c \
+		${CHACO}/klvspiff/countup_vtx_sep.c \
+		${CHACO}/klvspiff/find_bndy.c \
+		${CHACO}/klvspiff/flow.c \
+		${CHACO}/klvspiff/klv_init.c \
+		${CHACO}/klvspiff/klvspiff.c \
+		${CHACO}/klvspiff/make_bpgraph.c \
+		${CHACO}/klvspiff/make_sep_list.c \
+		${CHACO}/klvspiff/matching.c \
+		${CHACO}/klvspiff/nway_klv.c \
+		${CHACO}/klvspiff/flatten.c \
+		${CHACO}/coarsen/coarsen.c \
+		${CHACO}/coarsen/interpolate.c \
+		${CHACO}/coarsen/makefgraph.c \
+		${CHACO}/coarsen/makeccoords.c \
+		${CHACO}/coarsen/coarsen1.c \
+		${CHACO}/coarsen/makev2cv.c \
+		${CHACO}/coarsen/maxmatch.c \
+		${CHACO}/coarsen/maxmatch1.c \
+		${CHACO}/coarsen/maxmatch2.c  \
+		${CHACO}/coarsen/maxmatch3.c \
+		${CHACO}/coarsen/maxmatch4.c \
+		${CHACO}/coarsen/maxmatch5.c \
+		${CHACO}/connect/add_edges.c \
+		${CHACO}/connect/connected.c \
+		${CHACO}/connect/find_edges.c \
+		${CHACO}/eigen/bidir.c \
+		${CHACO}/eigen/bisect.c \
+		${CHACO}/eigen/checkeig.c \
+		${CHACO}/eigen/checkeig_ext.c \
+		${CHACO}/eigen/checkorth.c \
+		${CHACO}/eigen/cksturmcnt.c \
+		${CHACO}/eigen/mkeigvecs.c\
+		${CHACO}/eigen/eigensolve.c \
+		${CHACO}/eigen/get_extval.c \
+		${CHACO}/eigen/get_ritzvals.c \
+		${CHACO}/eigen/lanczos_FO.c \
+		${CHACO}/eigen/lanczos_SO.c \
+		${CHACO}/eigen/lanczos_SO_float.c \
+		${CHACO}/eigen/lanczos_ext.c \
+		${CHACO}/eigen/lanczos_ext_float.c \
+		${CHACO}/eigen/lanc_seconds.c\
+		${CHACO}/eigen/lanpause.c \
+		${CHACO}/eigen/makeorthlnk.c \
+		${CHACO}/eigen/mkscanlist.c \
+		${CHACO}/eigen/orthog1.c \
+		${CHACO}/eigen/orthogonalize.c \
+		${CHACO}/eigen/orthogvec.c \
+		${CHACO}/eigen/ql.c \
+		${CHACO}/eigen/rqi.c \
+		${CHACO}/eigen/rqi_ext.c \
+		${CHACO}/eigen/scale_diag.c \
+		${CHACO}/eigen/scanmax.c \
+		${CHACO}/eigen/scanmin.c \
+		${CHACO}/eigen/solistout.c \
+		${CHACO}/eigen/sorthog.c \
+		${CHACO}/eigen/splarax.c \
+		${CHACO}/eigen/sturmcnt.c \
+		${CHACO}/eigen/Tevec.c \
+		${CHACO}/eigen/tri_solve.c \
+		${CHACO}/eigen/warnings.c \
+		${CHACO}/symmlq/aprod.c \
+		${CHACO}/symmlq/msolve.c \
+		${CHACO}/symmlq/pow_dd.c \
+		${CHACO}/symmlq/symmlq.c \
+		${CHACO}/symmlq/symmlqblas.c \
+		${CHACO}/tinvit/tinvit.c \
+		${CHACO}/tinvit/pythag.c \
+		${CHACO}/tinvit/epslon.c \
+		${CHACO}/optimize/determinant.c \
+		${CHACO}/optimize/func2d.c \
+		${CHACO}/optimize/func3d.c \
+		${CHACO}/optimize/opt2d.c \
+		${CHACO}/optimize/opt3d.c \
+		${CHACO}/assign/assign.c \
+		${CHACO}/assign/assign_out.c \
+		${CHACO}/assign/mapper.c \
+		${CHACO}/assign/median.c \
+		${CHACO}/assign/merge_assign.c \
+		${CHACO}/assign/rec_median.c \
+		${CHACO}/assign/rotate.c \
+		${CHACO}/assign/y2x.c \
+		${CHACO}/bpmatch/checkbp.c \
+		${CHACO}/bpmatch/inits2d.c \
+		${CHACO}/bpmatch/inits3d.c \
+		${CHACO}/bpmatch/genvals2d.c \
+		${CHACO}/bpmatch/genvals3d.c \
+		${CHACO}/bpmatch/map2d.c \
+		${CHACO}/bpmatch/map3d.c \
+		${CHACO}/bpmatch/movevtxs.c \
+		${CHACO}/bpmatch/sorts2d.c \
+		${CHACO}/bpmatch/sorts3d.c \
+		${CHACO}/refine_map/compute_cube_edata.c \
+		${CHACO}/refine_map/compute_cube_vdata.c \
+		${CHACO}/refine_map/refine_cube.c \
+		${CHACO}/refine_map/update_cube_edata.c \
+		${CHACO}/refine_map/update_cube_vdata.c \
+		${CHACO}/refine_map/find_edge_cube.c \
+		${CHACO}/refine_map/init_cube_edata.c \
+		${CHACO}/refine_map/compute_mesh_edata.c \
+		${CHACO}/refine_map/compute_mesh_vdata.c \
+		${CHACO}/refine_map/find_edge_mesh.c \
+		${CHACO}/refine_map/init_mesh_edata.c \
+		${CHACO}/refine_map/refine_mesh.c \
+		${CHACO}/refine_map/update_mesh_edata.c \
+		${CHACO}/refine_map/update_mesh_vdata.c \
+		${CHACO}/refine_map/refine_map.c \
+		${CHACO}/refine_map/make_comm_graph.c \
+		${CHACO}/refine_part/refine_part.c \
+		${CHACO}/refine_part/kl_refine.c \
+		${CHACO}/refine_part/make_maps_ref.c \
+		${CHACO}/refine_part/make_terms_ref.c \
+		${CHACO}/internal/force_internal.c \
+		${CHACO}/internal/improve_internal.c \
+		${CHACO}/internal/check_internal.c \
+		${CHACO}/misc/define_subcubes.c \
+		${CHACO}/misc/define_submeshes.c \
+		${CHACO}/misc/divide_procs.c \
+		${CHACO}/misc/merge_goals.c \
+		${CHACO}/misc/make_term_props.c \
+		${CHACO}/misc/count.c \
+		${CHACO}/misc/countup.c \
+		${CHACO}/misc/countup_cube.c \
+		${CHACO}/misc/countup_mesh.c \
+		${CHACO}/misc/make_subgoal.c \
+		${CHACO}/misc/find_maxdeg.c \
+		${CHACO}/misc/make_maps.c \
+		${CHACO}/misc/make_setlists.c \
+		${CHACO}/misc/sequence.c \
+		${CHACO}/misc/perturb.c \
+		${CHACO}/misc/simple_part.c \
+		${CHACO}/misc/time_kernels.c \
+		${CHACO}/misc/timing.c \
+		${CHACO}/util/affirm.c \
+		${CHACO}/util/array_alloc_2D.c \
+		${CHACO}/util/bit_reverse.c \
+		${CHACO}/util/checkpnt.c \
+		${CHACO}/util/cpvec.c \
+		${CHACO}/util/dot.c \
+		${CHACO}/util/doubleout.c \
+		${CHACO}/util/input_int.c \
+		${CHACO}/util/gray.c \
+		${CHACO}/util/machine_params.c \
+		${CHACO}/util/makevwsqrt.c \
+		${CHACO}/util/mkvec.c \
+		${CHACO}/util/norm.c \
+		${CHACO}/util/normalize.c \
+		${CHACO}/util/mergesort.c \
+		${CHACO}/util/randomize.c \
+		${CHACO}/util/smalloc.c \
+		${CHACO}/util/bail.c \
+		${CHACO}/util/scadd.c \
+		${CHACO}/util/seconds.c \
+		${CHACO}/util/setvec.c \
+		${CHACO}/util/shell_sort.c \
+		${CHACO}/util/strout.c \
+		${CHACO}/util/tri_prod.c \
+		${CHACO}/util/true_or_false.c \
+		${CHACO}/util/update.c  \
+		${CHACO}/util/vecout.c \
+		${CHACO}/util/vecran.c \
+		${CHACO}/util/vecscale.c 
+#		${CHACO}/main/user_params.c \
+
+MLFILES.o=      $(MLFILES.c:.c=.o)
+
+CHFILES.o=      $(CHFILES.c:.c=.o)
+
+#mlchaco:        ${MLFILES.o} chaco.a Makefile
+#		${MATLAB}/bin/cmex CC='gcc -G' -lm ${OFLAGS} ${MLFILES.o} chaco.a; \
+#                 mv mlchaco.mex* ${DEST_DIR}
+
+#mlchaco:	${MLFILES.c} chaco.a Makefile
+#		mex -V4 -output mlchaco ${MLFILES.c} chaco.a -I${CHACO}/main
+#		mv mlchaco.mex* ${DEST_DIR}
+
+#mlchaco:	${MLFILES.c} ${CHFILES.c} ${CHACO}/chaco.a Makefile
+#		${MATLAB}/bin/mex mlchaco.c -largeArrayDims -DMATLAB ${MLFILES.c} ${CHACO}/chaco.a -I${CHACO}/main
+#		mv mlchaco.mex* ${DEST_DIR}
+
+Chaco:	${MLFILES.c} ${CHFILES.c} ${CHACO}/chaco.a Makefile
+		${MATLAB}/bin/mex Chaco.c -largeArrayDims ${MLFILES.c} ${CHACO}/chaco.a -I${CHACO}/main
+#		mv Chaco.mex* ${DEST_DIR}
+
+chaco.a:        ${CHFILES.o}
+		${AR} ${CHACO}/chaco.a ${CHFILES.o} ; ${RANLIB} ${CHACO}/chaco.a
+
+clean:
+		rm -f ${CHACO}/*/*.o chaco.a ${MLCHACO}/*.o ${DEST_DIR}/core
+
+.c.o:
+		${CC} -c ${IFLAGS} ${CFLAGS} -o $*.o $*.c
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/User_Params.debug
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/User_Params.debug	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/User_Params.debug	(revision 27955)
@@ -0,0 +1,27 @@
+% This file, User_Params, is read at runtime to modify Chaco's defaults.
+% The purpose of this version is to turn on some debugging stuff that
+% the Matlab version will normally have off.
+
+ECHO = 2
+OUTPUT_METRICS = 2
+OUTPUT_TIME = 2
+PRINT_HEADERS = 1
+
+DEBUG_EVECS = 1
+DEBUG_KL = 1
+DEBUG_INERTIAL = 1
+DEBUG_CONNECTED = 1
+DEBUG_PERTURB = 1
+DEBUG_ASSIGN = 1
+DEBUG_OPTIMIZE = 1
+DEBUG_BPMATCH = 1
+DEBUG_COARSEN = 1
+DEBUG_MEMORY = 1
+DEBUG_INPUT = 0
+DEBUG_PARAMS = 1
+DEBUG_INTERNAL = 1
+DEBUG_REFINE_PART = 1
+DEBUG_REFINE_MAP = 1
+DEBUG_SIMULATOR = 1
+DEBUG_TRACE = 1
+DEBUG_MACH_PARAMS = 1
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/User_Params.verbose
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/User_Params.verbose	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/User_Params.verbose	(revision 27955)
@@ -0,0 +1,8 @@
+% This file, User_Params, is read at runtime to modify Chaco's defaults.
+% The purpose of this version is to turn on some verbose output that
+% the Matlab version will normally have off.
+
+ECHO = 1
+OUTPUT_METRICS = 1
+OUTPUT_TIME = 1
+PRINT_HEADERS = 1
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/user_params.c
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/user_params.c	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mex/user_params.c	(revision 27955)
@@ -0,0 +1,142 @@
+/* This software was developed by Bruce Hendrickson and Robert Leland   *
+ * at Sandia National Laboratories under US Department of Energy        *
+ * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */
+
+/* Modified by John Gilbert 25 Aug 1995 for Matlab mex-file interface   */
+/* Modified by Tim Davis, July 6, 1998, for Matlab 5.1 interface, and */
+/* a more picky compiler (cc) that complains about duplicate global */
+/* declarations. */
+
+#include "params.h"
+
+#define  TRUE  1
+#define  FALSE 0
+
+
+/* Input and ouput control parameters */
+
+int       CHECK_INPUT = TRUE;	 /* Check input for consistency? (TRUE/FALSE) */
+int       ECHO = 0;		 /* Print input/param options? to file? (-2..2) */
+int       OUTPUT_METRICS = 0;	 /* Controls displaying of results (-2..2) */
+int       OUTPUT_TIME = 0;	 /* At what level to display timings (0..2) */
+int       OUTPUT_ASSIGN = FALSE; /* Write assignments to file? (TRUE/FALSE) */
+int       OUT_ASSIGN_INV = FALSE;/* If so, use inverse form? (TRUE/FALSE) */
+int       IN_ASSIGN_INV = FALSE; /* Input file in inverse form? (TRUE/FALSE) */
+int       PROMPT = FALSE;	 /* Prompt for input? (TRUE/FALSE) */
+int       PRINT_HEADERS = FALSE; /* Print pretty output headers (TRUE/FALSE) */
+
+
+/* Eigenvector calculation parameters */
+
+int       LANCZOS_TYPE = 3;	/* type of Lanczos to use */
+				/* 1 => full orthog, 2 => full inverse operator */
+				/* 3 =>  selective orthogonalization */
+double    EIGEN_TOLERANCE = 1e-3;	/* Numerical eigen-tolerance */
+double    SRESTOL = -1.;		/* Rel resid tol on T evec; autoset if <= 0 */
+int       LANCZOS_SO_INTERVAL = 10;	/* Itns. between SO orthog checks; set >= 2 */
+int       LANCZOS_MAXITNS = -1;		/* Max Lanczos its; autoset if <= 0 */
+double    BISECTION_SAFETY = 10;	/* Divides Lanczos bisection tol */
+int       LANCZOS_CONVERGENCE_MODE = 0;	/* Lanczos convergence test type: */
+					/* 0=> residual,  1=> partition */
+int       RQI_CONVERGENCE_MODE = 1;	/* RQI convergence test type: */
+					/* 0=> residual,  1=> partition */
+int       LANCZOS_SO_PRECISION = 2;	/* 2 => double Lanczos, 1 => float */
+int       WARNING_EVECS = 2;	/* Warnings in eigenvector generation (0..3) */
+double    WARNING_ORTHTOL = 2;	/* Warning if Ares and bjitol have this ratio */
+double    WARNING_MISTOL = 100;	/* Warning if Ares and bjitol have this ratio */
+int       LANCZOS_TIME = FALSE;	/* Detailed Lanczos times? (TRUE/FALSE) */
+int       TIME_KERNELS = FALSE;	/* Time numerical kernels? (TRUE/FALSE) */
+
+
+/* Other parameters for spectral methods */
+
+int       MAKE_CONNECTED = TRUE;/* Connect graph if using spectral method? */
+int       PERTURB = TRUE;	/* Randomly perturb matrix in spectral method? */
+int       NPERTURB = 2;		/* If so, how many edges to modify? */
+double    PERTURB_MAX = 3.0e-3;	/* Largest value for perturbation */
+int       MAPPING_TYPE = 1;	/* How to map from eigenvectors to partition */
+				/* 0 => cut at origin, 1 => min-cost assign */
+int       COARSE_NLEVEL_RQI = 2;/* # levels between RQI calls in uncoarsening */
+int       OPT3D_NTRIES = 5;	/* # local opts to look for global min in opt3d */
+
+
+/* Kernighan--Lin/Fiduccia--Mattheyses parameters */
+
+int       KL_METRIC = 2;	/* KL interset cost: 1=>cuts, 2=>hops */
+int       KL_RANDOM = TRUE;	/* Use randomness in Kernighan-Lin? (TRUE/FALSE)*/
+int       KL_BAD_MOVES = 20;	/* Number of unhelpful moves in a row allowed */
+int       KL_NTRIES_BAD = 1;	/* # unhelpful passes before quitting KL */
+int       KL_UNDO_LIST = TRUE;	/* Only resort changed vtxs? (TRUE/FALSE) */
+double    KL_IMBALANCE = 0.0;	/* Fractional imbalance allowed by KL */
+
+
+/* Coarsening parameters */
+
+double    COARSEN_RATIO_MIN = .7;  /* Min vtx reduction each coarsen stage */
+int       COARSE_NLEVEL_KL = 2;	   /* # levels between KL calls in uncoarsening */
+int       MATCH_TYPE = 1;	   /* Type of contraction matching (1..4) */
+int       HEAVY_MATCH = FALSE;	   /* Encourage heavy match edges? (TRUE/FALSE) */
+int       COARSE_KL_BOTTOM = TRUE; /* Force KL at lowest level (TRUE/FALSE) */
+int       COARSEN_VWGTS = TRUE;	   /* Sum vtx weights in coarsening? (TRUE/FALSE) */
+int       COARSEN_EWGTS = TRUE;	   /* Sum edge weights in coarsening? (TRUE/FALSE) */
+int       KL_ONLY_BNDY = TRUE;	   /* Start moving vtxs on boundary? (TRUE/FALSE) */
+
+
+/* Parameters for post-processing options */
+
+int       REFINE_PARTITION = FALSE;	/* Postprocess to improve cuts? */
+int       INTERNAL_VERTICES = FALSE;	/* ... to up internal vtxs? (TRUE/FALSE) */
+int       REFINE_MAP = FALSE;		/* ... to reduce hops? (TRUE/FALSE) */
+
+
+/* Architecture and simulator parameters */
+
+int       ARCHITECTURE = 0;	/* 0=> hypercube, d=> d-dimensional mesh (0..3)*/
+
+/* Modified by Tim Davis:  remove duplicate definitions */
+#ifdef DUPLICATE_DEFINITIONS_REMOVED
+int       SIMULATOR = 0;	/* Run simulator? In what mode? */
+int       SIMULATION_ITNS = 1;	/* # iterations simulator is to imitate. */
+int       PERCENTAGE_OUTPUT = FALSE;	/* Output in percent? (TRUE/FALSE) */
+double    CUT_COST = 0.0;	/* Communication cost of a cut-edge. */
+double    HOP_COST = 0.0;	/* Communication cost of a hop. */
+double    BDY_COST = 0.0;	/* Cost associated with boundary vertices.  */
+double    BDY_HOP_COST = 0.0;	/* Cost associated with boundary hops. */
+double    STARTUP_COST = 0.0;	/* Communication cost of a message startup. */
+	/* Note: nCUBE2 startup: 112e-6, per byte: 4.6e-6, buffering 5.6e-6 */
+	/* Intel Paragon startup: 70e-6, per byte: 5.3e-8 */
+#endif
+
+/* Miscellaneous parameters */
+
+int       TERM_PROP = FALSE;	/* Invoke terminal propagation? (TRUE/FALSE) */
+double    CUT_TO_HOP_COST = 1;	/* ..if so, relative importance of cuts/hops */
+int       SEQUENCE = FALSE;	/* Only do spectral ordering? (TRUE/FALSE) */
+char      SEQ_FILENAME[NAME_LENGTH] = "Sequence.out";	/* If so, file name */
+long      RANDOM_SEED = 7654321L;	/* Seed for random number generator */
+int       NSQRTS = 1000;	/* # square roots to precompute if coarsening */
+int       MAKE_VWGTS = FALSE;	/* Make vtx weights degrees+1? (TRUE/FALSE) */
+int       FREE_GRAPH = FALSE;	/* Free input graph data? (TRUE/FALSE) */
+char     *PARAMS_FILENAME = "User_Params";	/* File of parameter changes */
+
+
+/* Parameters that control debugging output */
+
+int       DEBUG_EVECS = 0;	/* Debug flag for eigenvector generation (0..5) */
+int       DEBUG_KL = 0;		/* Debug flag for Kernighan-Lin (0..3) */
+int       DEBUG_INERTIAL = 0;	/* Debug flag for inertial method (0..1) */
+int       DEBUG_CONNECTED = 0;	/* Debug flag for connected components (0..1) */
+int       DEBUG_PERTURB = 0;	/* Debug flag for matrix perturbation (0..1) */
+int       DEBUG_ASSIGN = 0;	/* Debug flag for assignment to sets (0..1) */
+int       DEBUG_OPTIMIZE = 0;	/* Debug flag for optimization/rotation (0..2) */
+int       DEBUG_BPMATCH = 0;	/* Debug flag for bipartite matching code (0..2) */
+int       DEBUG_COARSEN = 0;	/* Debug flag for coarsening/uncoarsening (0..1) */
+int       DEBUG_MEMORY = 0;	/* Debug flag for smalloc/sfree (0..3) */
+int       DEBUG_INPUT = 0;	/* Debug flag for having read input files (0..1) */
+int       DEBUG_PARAMS = 1;	/* Debug flag for reading parameter file (0..2) */
+int       DEBUG_INTERNAL = 0;	/* Debug flag for internal vertices (0..2) */
+int       DEBUG_REFINE_PART = 0;/* Debug flag for refine partition (0..1) */
+int       DEBUG_REFINE_MAP = 0;	/* Debug flag for refining mapping (0..1) */
+int       DEBUG_SIMULATOR = 0;	/* Debug flag for comm simulator (0..2) */
+int       DEBUG_TRACE = 0;	/* Trace main execution path (0..2) */
+int       DEBUG_MACH_PARAMS = 0;/* Print computed machine params? (0..1) */
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mlchaco_README.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mlchaco_README.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mlchaco_README.txt	(revision 27955)
@@ -0,0 +1,136 @@
+mlchaco (from meshpartdist.tar, 2/08/02)
+http://www.cerfacs.fr/algor/Softs/MESHPART/
+
+
+[jschierm@astrid chaco]$ diff mlchaco_old.c mlchaco.c
+34a35  [CLK_TCK undefined, so use CLOCKS_PER_SEC]
+> #include <time.h>      /*  CLOCKS_PER_SEC  */
+56,61c57,62  [update for current Matlab]
+< void mexFunction(    
+<     int         nlhs,           /* number of expected outputs */
+<     Matrix      *plhs[],        /* matrix pointer array returning outputs */
+<     int         nrhs,           /* number of inputs */
+<     Matrix      *prhs[]         /* matrix pointer array for inputs */
+<     )
+---
+> void mexFunction(
+>     int           nlhs,           /* number of expected outputs */
+>     mxArray       *plhs[],        /* array of pointers to output arguments
+>     */
+>     int           nrhs,           /* number of inputs */
+>     const mxArray *prhs[]         /* array of pointers to input arguments */
+> )
+87a89  [update for current Matlab]
+>     mwIndex *mwstart,*mwadjacency;
+104c106,110  [update for current Matlab]
+<     start = mxGetJc(A_in);
+---
+> /*    start = mxGetJc(A_in);*/
+>     mwstart = mxGetJc(A_in);
+>     start = mxMalloc((mxGetN(A_in)+1)*sizeof(int));
+>     for (i=0; i<(mxGetN(A_in)+1); i++)
+>         start[i]= (int)mwstart[i];
+106c112,116  [update for current Matlab]
+<     adjacency = mxGetIr(A_in);
+---
+> /*    adjacency = mxGetIr(A_in);*/
+>     mwadjacency = mxGetIr(A_in);
+>     adjacency = mxMalloc(mxGetNzmax(A_in)*sizeof(int));
+>     for (i=0; i<mxGetNzmax(A_in); i++)
+>         adjacency[i]= (int)mwadjacency[i];
+131,132c141,144  [provide default filenames, since no way to input]
+<     outassignname = NULL;
+<     outfilename = NULL;
+---
+> /*    outassignname = NULL;
+>     outfilename = NULL;*/
+>     outassignname = "chaco_assign.txt";
+>     outfilename = "chaco_out.txt";
+169c181  [update for current Matlab]
+<       plhs [1] = mxCreateFull (1, 1, REAL) ;
+---
+>       plhs [1] = mxCreateDoubleMatrix (1, 1, mxREAL) ;
+173c185  [CLK_TCK undefined, so use CLOCKS_PER_SEC]
+<       ((double) CLK_TCK) ;
+---
+>       ((double) CLOCKS_PER_SEC) ;
+179c191  [update for current Matlab]
+<         map_out = mxCreateFull(1,nvtxs,REAL);
+---
+>         map_out = mxCreateDoubleMatrix(1,nvtxs,mxREAL);
+185a198,199  [update for current Matlab]
+>     if (start != NULL) mxFree((char *) start);
+>     if (adjacency != NULL) mxFree((char *) adjacency);
+
+
+[jschierm@astrid chaco]$ diff Makefile_old Makefile
+27c27,28  [current Matlab location]
+< MATLAB =        /usr/local/libexec/matlab
+---
+> #MATLAB =        /usr/local/libexec/matlab
+> MATLAB =        /usr/local/pkgs/matlab-7.6
+30c31,32  [current Chaco 2.2 location]
+< CHACO =         ../../Chaco-2.0/code
+---
+> #CHACO =         ../../Chaco-2.0/code
+> CHACO =         ../../Chaco-2.2/code
+34,35c36,37  [use gcc instead of cc]
+< #CC =            gcc 
+< CC =            cc 
+---
+> CC =            gcc 
+> #CC =            cc 
+37c39,40  [add MATLAB flag to compile for mex-function]
+< CFLAGS =        -Xa -G -xO4 -xcg92
+---
+> #CFLAGS =        -Xa -G -xO4 -xcg92
+> CFLAGS =        -Xa -G -xO4 -xcg92 -DMATLAB
+39,40c42,45  [current function locations]
+< AR =             /usr/ccs/bin/ar rcv   # for solaris 2
+< RANLIB =         /usr/ccs/bin/ranlib   # for solaris 2
+---
+> #AR =             /usr/ccs/bin/ar rcv   # for solaris 2
+> AR =             /usr/bin/ar rcv   # for solaris 2
+> #RANLIB =         /usr/ccs/bin/ranlib   # for solaris 2
+> RANLIB =         /usr/bin/ranlib   # for solaris 2
+45,47d49  [use Chaco versions with MATLAB switch rather than local versions]
+<               ${MLCHACO}/chaco_check_graph.c \
+<               ${MLCHACO}/check_input.c \
+<                 ${MLCHACO}/smalloc.c \
+48a51,53
+> #             ${MLCHACO}/chaco_check_graph.c \
+> #             ${MLCHACO}/check_input.c \
+> #                ${MLCHACO}/smalloc.c \
+55a61  [update CHLIST to match Chaco 2.2]
+>               ${CHACO}/input/check_input.c \
+61a68  [update CHLIST to match Chaco 2.2]
+>               ${CHACO}/graph/check_graph.c \
+91a99  [update CHLIST to match Chaco 2.2]
+>               ${CHACO}/klvspiff/flow.c \
+97a106  [update CHLIST to match Chaco 2.2]
+>               ${CHACO}/klvspiff/flatten.c \
+100c109,110  [update CHLIST to match Chaco 2.2]
+<               ${CHACO}/coarsen/makecgraph.c \
+---
+>               ${CHACO}/coarsen/makefgraph.c \
+>               ${CHACO}/coarsen/makeccoords.c \
+102d111  [update CHLIST to match Chaco 2.2]
+<               ${CHACO}/coarsen/countcedges.c \
+108a118  [update CHLIST to match Chaco 2.2]
+>               ${CHACO}/coarsen/maxmatch5.c \
+234a245  [update CHLIST to match Chaco 2.2]
+>               ${CHACO}/util/smalloc.c \
+245a257,258  [use local versions rather than Chaco versions (added for clarity)]
+> #             ${CHACO}/main/user_params.c \
+> #             ${CHACO}/util/bail.c \
+254a268,271  [update for current mex]
+> #mlchaco:     ${MLFILES.c} chaco.a Makefile
+> #             mex -V4 -output mlchaco ${MLFILES.c} chaco.a -I${CHACO}/main
+> #             mv mlchaco.mex* ${DEST_DIR}
+> 
+256c273  [update for current mex]
+<               mex -V4 -output mlchaco ${MLFILES.c} chaco.a -I${CHACO}/main
+---
+>               mex -output mlchaco -largeArrayDims -DMATLAB ${MLFILES.c}
+>               chaco.a -I${CHACO}/main
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mlchaco_jes_notes.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mlchaco_jes_notes.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/mlchaco_jes_notes.txt	(revision 27955)
@@ -0,0 +1,182 @@
+7/15/09:
+
+[jschierm@astrid chaco]$ diff Makefile_old Makefile
+27c27,28
+< MATLAB =        /usr/local/libexec/matlab
+---
+> #MATLAB =        /usr/local/libexec/matlab
+> MATLAB =        /usr/local/matlab780
+30c31,32
+< CHACO =         ../../Chaco-2.0/code
+---
+> #CHACO =         ../../Chaco-2.0/code
+> CHACO =         ../../Chaco-2.2/code
+34,35c36,37
+< #CC =            gcc 
+< CC =            cc 
+---
+> CC =            gcc 
+> #CC =            cc 
+39,40c41,44
+< AR =             /usr/ccs/bin/ar rcv   # for solaris 2
+< RANLIB =         /usr/ccs/bin/ranlib   # for solaris 2
+---
+> #AR =             /usr/ccs/bin/ar rcv   # for solaris 2
+> AR =             /usr/bin/ar rcv   # for solaris 2
+> #RANLIB =         /usr/ccs/bin/ranlib   # for solaris 2
+> RANLIB =         /usr/bin/ranlib   # for solaris 2
+91a96,97  [missing symbols]
+>               ${CHACO}/klvspiff/flatten.c \
+>               ${CHACO}/klvspiff/flow.c \
+99a106  [missing symbols]
+>               ${CHACO}/coarsen/makeccoords.c \
+102a110  [missing symbols]
+>               ${CHACO}/coarsen/makefgraph.c \
+108a117  [missing symbols]
+>               ${CHACO}/coarsen/maxmatch5.c \
+254a264,267
+> #mlchaco:     ${MLFILES.c} chaco.a Makefile
+> #             mex -V4 -output mlchaco ${MLFILES.c} chaco.a -I${CHACO}/main
+> #             mv mlchaco.mex* ${DEST_DIR}
+> 
+256c269
+<               mex -V4 -output mlchaco ${MLFILES.c} chaco.a -I${CHACO}/main
+---
+>               mex -output mlchaco -largeArrayDims ${MLFILES.c} chaco.a -I${CHACO}/main
+
+[jschierm@astrid chaco]$ diff mlchaco_old.c mlchaco.c
+34a35
+> #include <time.h>      /*  CLOCKS_PER_SEC  */
+56,61c57,62
+< void mexFunction(    
+<     int         nlhs,           /* number of expected outputs */
+<     Matrix      *plhs[],        /* matrix pointer array returning outputs */
+<     int         nrhs,           /* number of inputs */
+<     Matrix      *prhs[]         /* matrix pointer array for inputs */
+<     )
+---
+> void mexFunction(
+>     int           nlhs,           /* number of expected outputs */
+>     mxArray       *plhs[],        /* array of pointers to output arguments
+>     */
+>     int           nrhs,           /* number of inputs */
+>     const mxArray *prhs[]         /* array of pointers to input arguments */
+> )
+87a89
+>     mwIndex *mwstart,*mwadjacency;
+104c106,110
+<     start = mxGetJc(A_in);
+---
+> /*    start = mxGetJc(A_in);*/
+>     mwstart = mxGetJc(A_in);
+>     start = mxMalloc((mxGetN(A_in)+1)*sizeof(int));
+>     for (i=0; i<(mxGetN(A_in)+1); i++)
+>         start[i]= (int)mwstart[i];
+106c112,116
+<     adjacency = mxGetIr(A_in);
+---
+> /*    adjacency = mxGetIr(A_in);*/
+>     mwadjacency = mxGetIr(A_in);
+>     adjacency = mxMalloc(mxGetNzmax(A_in)*sizeof(int));
+>     for (i=0; i<mxGetNzmax(A_in); i++)
+>         adjacency[i]= (int)mwadjacency[i];
+169c181
+<       plhs [1] = mxCreateFull (1, 1, REAL) ;
+---
+>       plhs [1] = mxCreateDoubleMatrix (1, 1, mxREAL) ;
+173c185
+<       ((double) CLK_TCK) ;
+---
+>       ((double) CLOCKS_PER_SEC) ;
+179c191
+<         map_out = mxCreateFull(1,nvtxs,REAL);
+---
+>         map_out = mxCreateDoubleMatrix(1,nvtxs,mxREAL);
+185a198,199
+>     if (start != NULL) mxFree((char *) start);
+>     if (adjacency != NULL) mxFree((char *) adjacency);
+
+
+7/29/09:
+
+[jschierm@astrid chaco]$ diff mlchaco_old.c mlchaco.c
+131,132c141,144
+<     outassignname = NULL;
+<     outfilename = NULL;
+---
+> /*    outassignname = NULL;
+>     outfilename = NULL;*/
+>     outassignname = "chaco_assign.txt";
+>     outfilename = "chaco_out.txt";
+
+7/30/09:
+
+[jschierm@astrid chaco]$ diff Makefile_old Makefile
+27c27,28
+< MATLAB =        /usr/local/libexec/matlab
+---
+> #MATLAB =        /usr/local/libexec/matlab
+> MATLAB =        /usr/local/pkgs/matlab-7.6
+37c39,40
+< CFLAGS =        -Xa -G -xO4 -xcg92
+---
+> #CFLAGS =        -Xa -G -xO4 -xcg92
+> CFLAGS =        -Xa -G -xO4 -xcg92 -DMATLAB
+45,47d49  [using Chaco versions with MATLAB switch]
+<               ${MLCHACO}/chaco_check_graph.c \
+<               ${MLCHACO}/check_input.c \
+<                 ${MLCHACO}/smalloc.c \
+48a51,53
+> #             ${MLCHACO}/chaco_check_graph.c \
+> #             ${MLCHACO}/check_input.c \
+> #                ${MLCHACO}/smalloc.c \
+55a61
+>               ${CHACO}/input/check_input.c \
+61a68
+>               ${CHACO}/graph/check_graph.c \
+91a99  [compared CHFILES with Chaco Makefile CHFILES]
+>               ${CHACO}/klvspiff/flow.c \
+97a106  [compared CHFILES with Chaco Makefile CHFILES]
+>               ${CHACO}/klvspiff/flatten.c \
+100c109,110  [compared CHFILES with Chaco Makefile CHFILES]
+<               ${CHACO}/coarsen/makecgraph.c \
+---
+>               ${CHACO}/coarsen/makefgraph.c \
+>               ${CHACO}/coarsen/makeccoords.c \
+102d111  [compared CHFILES with Chaco Makefile CHFILES]
+<               ${CHACO}/coarsen/countcedges.c \
+108a118  [compared CHFILES with Chaco Makefile CHFILES]
+>               ${CHACO}/coarsen/maxmatch5.c \
+234a245
+>               ${CHACO}/util/smalloc.c \
+245a257,258
+> #             ${CHACO}/main/user_params.c \
+> #             ${CHACO}/util/bail.c \
+254a268,271
+> #mlchaco:     ${MLFILES.c} chaco.a Makefile
+> #             mex -V4 -output mlchaco ${MLFILES.c} chaco.a -I${CHACO}/main
+> #             mv mlchaco.mex* ${DEST_DIR}
+> 
+256c273
+<               mex -V4 -output mlchaco ${MLFILES.c} chaco.a -I${CHACO}/main
+---
+>               mex -output mlchaco -largeArrayDims -DMATLAB ${MLFILES.c}
+>               chaco.a -I${CHACO}/main
+
+5/25/10:
+
+- reorganized chaco.m and mlchaco.c drivers into Chaco.c matlab-layer (independent of chaco) and Chacox.c x-layer (independent of matlab).
+
+5/26/10:
+
+- added mexchaco target to Makefile (and related changes).
+
+5/27/10
+
+- added define for exit(status) to ${CHACO}/main/defs.h so that local bail.c is
+  unnecessary.
+
+6/15/10:
+
+- separated chaco x-layer from meshpart build.
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/patches/Makefile.mac-sierra.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/patches/Makefile.mac-sierra.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/patches/Makefile.mac-sierra.patch	(revision 27955)
@@ -0,0 +1,11 @@
+--- ./src/code/Makefile	2016-02-16 19:39:30.000000000 -0800
++++ ./Makefile	2016-02-16 19:37:49.000000000 -0800
+@@ -6,7 +6,7 @@
+ #CFLAGS =	-O2
+ #OFLAGS =	-O2
+ #CFLAGS =	-fPIC -fno-omit-frame-pointer -D_GNU_SOURCE -pthread -fexceptions
+-CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -g
++CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -g -I/usr/local/include/ -Wno-implicit-function-declaration 
+ #CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -DMATLAB
+ OFLAGS =	-O2 
+ #AR =             /usr/ccs/bin/ar rcv   # for solaris 2
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/patches/Makefile.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/patches/Makefile.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/chaco/patches/Makefile.patch	(revision 27955)
@@ -0,0 +1,11 @@
+--- ./src/code/Makefile	2016-02-16 19:39:30.000000000 -0800
++++ ./Makefile	2016-02-16 19:37:49.000000000 -0800
+@@ -6,7 +6,7 @@
+ #CFLAGS =	-O2
+ #OFLAGS =	-O2
+ #CFLAGS =	-fPIC -fno-omit-frame-pointer -D_GNU_SOURCE -pthread -fexceptions
+-CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -g
++CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -g -I/usr/include/malloc -Wno-implicit-function-declaration
+ #CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -DMATLAB
+ OFLAGS =	-O2 
+ #AR =             /usr/ccs/bin/ar rcv   # for solaris 2
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/cmake/configs/MacOS/High_Sierra/Source/CPack/cmCPackDragNDropGenerator.cxx.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/cmake/configs/MacOS/High_Sierra/Source/CPack/cmCPackDragNDropGenerator.cxx.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/cmake/configs/MacOS/High_Sierra/Source/CPack/cmCPackDragNDropGenerator.cxx.patch	(revision 27955)
@@ -0,0 +1,9 @@
+--- Source/CPack/cmCPackDragNDropGenerator.cxx_orig	2017-08-29 08:45:50.000000000 +0200
++++ Source/CPack/cmCPackDragNDropGenerator.cxx	2017-08-29 08:46:04.000000000 +0200
+@@ -12,6 +12,7 @@
+ #include <iomanip>
+ #include <map>
+ #include <stdlib.h>
++#include <algorithm>
+
+ #include <CoreFoundation/CoreFoundation.h>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/cmake/configs/MacOS/High_Sierra/Utilities/cmcurl/CMakeLists.txt.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/cmake/configs/MacOS/High_Sierra/Utilities/cmcurl/CMakeLists.txt.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/cmake/configs/MacOS/High_Sierra/Utilities/cmcurl/CMakeLists.txt.patch	(revision 27955)
@@ -0,0 +1,11 @@
+--- Utilities/cmcurl/CMakeLists.txt_orig	2017-08-29 08:37:31.000000000 +0200
++++ Utilities/cmcurl/CMakeLists.txt	2017-08-29 08:37:55.000000000 +0200
+@@ -50,7 +50,7 @@
+       )
+   endif()
+   if(NOT OSX_VERSION VERSION_LESS 10.6 AND
+-      CMAKE_C_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
++      CMAKE_C_COMPILER_ID MATCHES "Clang|AppleClang")
+     set(CMAKE_USE_DARWINSSL ON CACHE INTERNAL "enable Apple OS native SSL/TLS")
+   else()
+     set(CMAKE_USE_DARWINSSL OFF CACHE INTERNAL "enable Apple OS native SSL/TLS")
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/cmake/install-macosx64-highsierra.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/cmake/install-macosx64-highsierra.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/cmake/install-macosx64-highsierra.sh	(revision 27955)
@@ -0,0 +1,28 @@
+#!/bin/bash
+set -eu
+VER="3.14.5"
+
+#Some cleanup
+rm -rf install cmake-$VER.tar.gz
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/cmake-$VER.tar.gz" "cmake-$VER.tar.gz"
+
+#Untar
+tar -zxvf cmake-$VER.tar.gz
+
+#Move cmake into install directory
+mv cmake-$VER/* install
+rm -rf cmake-$VER
+
+#Compile cmake
+cd install
+./bootstrap --prefix=$ISSM_DIR/externalpackages/cmake/install
+
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1;
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/cmake/install-macosx64-snowleopard.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/cmake/install-macosx64-snowleopard.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/cmake/install-macosx64-snowleopard.sh	(revision 27955)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu 
+VER="2.8.11.2"
+
+#Some cleanup
+rm -rf install cmake-$VER
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/cmake-$VER.tar.gz" "cmake-$VER.tar.gz"
+
+#Untar 
+tar -zxvf  cmake-$VER.tar.gz
+
+#Move cmake into install directory
+mv cmake-$VER/* install
+rm -rf cmake-$VER
+
+LDFLAGS="-L/usr/lib/ -lstdc++ -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin10/4.6.2/ -lgfortran"
+F77="/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran"
+
+#Compile cmake
+cd install 
+./bootstrap --prefix=$ISSM_DIR/externalpackages/cmake/install
+if [ $# -eq 0 ]; then
+	make
+else 
+	make -j $1; 
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/cmake/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/cmake/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/cmake/install.sh	(revision 27955)
@@ -0,0 +1,38 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.19.3"
+
+PREFIX="${ISSM_DIR}/externalpackages/cmake/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/cmake-${VER}.tar.gz" "cmake-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf cmake-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX}
+
+# Move source into 'src' directory
+mv cmake-${VER} src
+
+# Configure
+cd src
+#./bootstrap \
+#	--prefix=${PREFIX} # Breaks on ronne
+./configure \
+	--prefix="${PREFIX}"
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make install -j $1
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/codipack/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/codipack/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/codipack/install.sh	(revision 27955)
@@ -0,0 +1,20 @@
+#!/bin/bash
+set -eu
+
+VER=1.8
+
+# Cleanup from previous installation
+rm -rf install CoDiPack-$VER.tar.gz
+
+#Download development version
+git clone https://github.com/SciCompKL/CoDiPack.git install
+
+## Download source
+#$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/CoDiPack-${VER}.tar.gz" "CoDiPack-${VER}.tar.gz"
+#
+## Untar
+#tar -zxvf CoDiPack-$VER.tar.gz
+#
+## Move source into install directory
+#mv CoDiPack-$VER install
+#rm -rf CoDiPack-$VER/
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/colpack/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/colpack/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/colpack/install.sh	(revision 27955)
@@ -0,0 +1,26 @@
+#!/bin/bash
+set -eu
+
+#Erase install
+rm -rf install  src ColPack
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/ColPack-1.0.3.tar.gz' 'ColPack-1.0.3.tar.gz'
+
+#install directory
+mkdir src
+tar -zxvf ColPack-1.0.3.tar.gz 
+mv ColPack/* src
+rm -rf ColPack
+
+#compile
+cd src
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+cd ..
+
+#install
+ln -s src/build ./install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/cppcheck/install-dev.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/cppcheck/install-dev.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/cppcheck/install-dev.sh	(revision 27955)
@@ -0,0 +1,18 @@
+#!/bin/bash
+set -eu
+
+#Erase install
+rm -rf install  src 
+
+#Download
+git clone git://github.com/danmar/cppcheck.git src
+
+#compile
+cd src
+if [ $# -eq 0 ]; then
+	make 
+else 
+	make -j $1
+fi  
+make install PREFIX=$ISSM_DIR/externalpackages/cppcheck/install
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/cppcheck/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/cppcheck/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/cppcheck/install.sh	(revision 27955)
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -eu
+
+#Erase install
+rm -rf install  src cppcheck-1.48
+mkdir src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/cppcheck-1.48.tar' 'cppcheck-1.48.tar'
+tar -xvf cppcheck-1.48.tar
+
+mv cppcheck-1.48/* src
+rm -rf cppcheck-1.48
+
+#compile
+cd src
+if [ $# -eq 0 ]; then
+	make 
+else 
+	make -j $1
+fi  
+make install PREFIX=$ISSM_DIR/externalpackages/cppcheck/install
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/curl/install-7-linux-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/curl/install-7-linux-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/curl/install-7-linux-static.sh	(revision 27955)
@@ -0,0 +1,49 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="7.73.0"
+
+PREFIX="${ISSM_DIR}/externalpackages/curl/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/curl-${VER}.tar.gz" "curl-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf curl-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source to 'src' directory
+mv curl-${VER}/* src
+rm -rf curl-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-shared \
+	--disable-dependency-tracking \
+	--disable-manual \
+	--disable-verbose \
+	--disable-ldap \
+	--disable-ldaps \
+	--with-zlib="${ZLIB_ROOT}" \
+	--without-zstd \
+	--without-libidn2 \
+	--without-nghttp2 \
+	--without-brotli \
+	--without-librtmp
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/curl/install-7-linux-with_tests.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/curl/install-7-linux-with_tests.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/curl/install-7-linux-with_tests.sh	(revision 27955)
@@ -0,0 +1,44 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="7.73.0"
+
+PREFIX="${ISSM_DIR}/externalpackages/curl/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/curl-${VER}.tar.gz" "curl-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf curl-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source to 'src' directory
+mv curl-${VER}/* src
+rm -rf curl-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-static \
+	--disable-dependency-tracking \
+	--disable-manual \
+	--disable-verbose \
+	--with-zlib="${ZLIB_ROOT}"
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make test
+	make install
+else
+	make -j $1
+	make -j $1 test
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/curl/install-7-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/curl/install-7-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/curl/install-7-linux.sh	(revision 27955)
@@ -0,0 +1,42 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="7.73.0"
+
+PREFIX="${ISSM_DIR}/externalpackages/curl/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/curl-${VER}.tar.gz" "curl-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf curl-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source to 'src' directory
+mv curl-${VER}/* src
+rm -rf curl-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-static \
+	--disable-dependency-tracking \
+	--disable-manual \
+	--disable-verbose \
+	--with-zlib="${ZLIB_ROOT}"
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/curl/install-7-mac-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/curl/install-7-mac-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/curl/install-7-mac-static.sh	(revision 27955)
@@ -0,0 +1,54 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="7.73.0"
+
+PREFIX="${ISSM_DIR}/externalpackages/curl/install" # Set to location where external package should be installed
+
+## Environment
+#
+export MACOSX_DEPLOYMENT_TARGET="10.5" # Allows fall back to older API (source: https://curl.se/docs/install.html)
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/curl-${VER}.tar.gz" "curl-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf curl-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source to 'src' directory
+mv curl-${VER}/* src
+rm -rf curl-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-shared \
+	--disable-dependency-tracking \
+	--disable-manual \
+	--disable-verbose \
+	--disable-ldap \
+	--disable-ldaps \
+	--with-zlib="${ZLIB_ROOT}" \
+	--without-zstd \
+	--without-libidn2 \
+	--without-nghttp2 \
+	--without-brotli \
+	--without-librtmp \
+	--with-secure-transport
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/curl/install-7-mac.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/curl/install-7-mac.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/curl/install-7-mac.sh	(revision 27955)
@@ -0,0 +1,47 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="7.73.0"
+
+PREFIX="${ISSM_DIR}/externalpackages/curl/install" # Set to location where external package should be installed
+
+## Environment
+#
+export MACOSX_DEPLOYMENT_TARGET="10.5" # Allows fall back to older API (source: https://curl.se/docs/install.html)
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/curl-${VER}.tar.gz" "curl-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf curl-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source to 'src' directory
+mv curl-${VER}/* src
+rm -rf curl-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-static \
+	--disable-dependency-tracking \
+	--disable-manual \
+	--disable-verbose \
+	--with-zlib="${ZLIB_ROOT}" \
+	--with-secure-transport
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/cvs/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/cvs/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/cvs/install.sh	(revision 27955)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf cvs-1.11.23
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/cvs-1.11.23.tar.gz' 'cvs-1.11.23.tar.gz'
+
+#Untar 
+tar -zxvf  cvs-1.11.23.tar.gz
+
+#Move subversion into src directory
+mv cvs-1.11.23/* src
+rm -rf cvs-1.11.23
+
+#Patch getline
+cd src
+cat lib/getline.c | sed -e "s/getline /get_line /" > BACK && mv BACK lib/getline.c
+cat lib/getline.h | sed -e "s/getline /get_line /" > BACK && mv BACK lib/getline.h
+
+#Configure
+./configure --prefix="$ISSM_DIR/externalpackages/cvs/install" 
+
+#Compile and install subversion
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/cython/install-18.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/cython/install-18.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/cython/install-18.sh	(revision 27955)
@@ -0,0 +1,13 @@
+#!/bin/bash
+set -eu
+
+#clean up
+rm -rf Cython-0.18
+
+#download numpy first
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/Cython-0.18.tar.gz' 'cython.tar.gz'
+
+#install numpy
+tar -zxvf cython.tar.gz
+cd Cython-0.18
+python setup.py install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/cython/install-19.2.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/cython/install-19.2.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/cython/install-19.2.sh	(revision 27955)
@@ -0,0 +1,13 @@
+#!/bin/bash
+set -eu
+
+#clean up
+rm -rf Cython-0.19.2
+
+#download numpy first
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/Cython-0.19.2.tar.gz' 'cython.tar.gz'
+
+#install numpy
+tar -zxvf cython.tar.gz
+cd Cython-0.19.2
+python setup.py install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/cython/install-22.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/cython/install-22.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/cython/install-22.sh	(revision 27955)
@@ -0,0 +1,13 @@
+#!/bin/bash
+set -eu
+
+#clean up
+rm -rf Cython-0.22
+
+#download numpy first
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/Cython-0.22.tar.gz' 'cython.tar.gz'
+
+#install numpy
+tar -zxvf cython.tar.gz
+cd Cython-0.22
+python setup.py install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/cython/install-26.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/cython/install-26.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/cython/install-26.sh	(revision 27955)
@@ -0,0 +1,13 @@
+#!/bin/bash
+set -eu
+
+#clean up
+rm -rf Cython-0.26
+
+#download numpy first
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/Cython-0.26.tar.gz' 'cython.tar.gz'
+
+#install numpy
+tar -zxvf cython.tar.gz
+cd Cython-0.26
+python setup.py install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/cython/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/cython/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/cython/install.sh	(revision 27955)
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -eu
+
+#clean up
+rm -rf cython
+
+#download cython first
+git clone https://github.com/cython/cython.git
+
+#install cython
+cd cython
+python setup.py install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/LHSDriver.cpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/LHSDriver.cpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/LHSDriver.cpp.patch	(revision 27955)
@@ -0,0 +1,8 @@
+766c766
+<   /*char output_string[32], message_string[32], title_string[32],
+---
+>   char output_string[32], message_string[32], title_string[32],
+802c802
+<   check_error(err_code, "lhs_files");*/
+---
+>   check_error(err_code, "lhs_files");
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/NIDRProblemDescDB.C.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/NIDRProblemDescDB.C.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/NIDRProblemDescDB.C.patch	(revision 27955)
@@ -0,0 +1,4 @@
+95a96,98
+>   
+>   //close the input file
+>   fclose(nidrin);
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/NonDLocalReliability.C.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/NonDLocalReliability.C.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/NonDLocalReliability.C.patch	(revision 27955)
@@ -0,0 +1,7 @@
+2276a2277
+> 	  // add sensitivity output to importance factors (jes, 8/06/10)
+2280c2281,2282
+< 	    << impFactor[i][j] << '\n';
+---
+> 	    << impFactor[i][j] << "  Sensitivity = " << setw(write_precision+7)
+> 	    << fnGradsMeanX(i, j) << '\n';
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/NonDSampling.C.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/NonDSampling.C.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/NonDSampling.C.patch	(revision 27955)
@@ -0,0 +1,15 @@
+656a657,658
+> 
+> 
+659a662,663
+>    
+> 	return; //don't compute for now, too expensive.
+705c709
+<   //calculate simple rank correlation coeff
+---
+>   //calculate simple correlation coeff
+710a715
+> 
+1071a1077,1078
+> 
+> 	return; //don't output for now.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/NonDUnilevelRBDO.C.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/NonDUnilevelRBDO.C.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/NonDUnilevelRBDO.C.patch	(revision 27955)
@@ -0,0 +1,10 @@
+1052,1053c1052,1057
+< 	  s << "  Importance Factor for variable " << setw(11)
+< 	    << uv_labels[j].data() << " = " << impFactor[i][j] << '\n';
+---
+> 	  // add sensitivity output to importance factors (jes, 8/06/10)
+> 	  s << "  Importance Factor for variable " << setiosflags(ios::left)
+> 	    << setw(11) << uv_labels[j].data() << " = "
+> 	    << resetiosflags(ios::adjustfield) << setw(write_precision+7)
+> 	    << impFactor[i][j] << "  Sensitivity = " << setw(write_precision+7)
+> 	    << fnGradsMeanX(i, j) << '\n';
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/ParallelLibrary.C.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/ParallelLibrary.C.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/ParallelLibrary.C.patch	(revision 27955)
@@ -0,0 +1,34 @@
+134a135
+>   initialized=0; //we run serially all the time!
+165a167,197
+> /** This constructor is provided for the Issm software, to run serial 
+>  * Dakota in a parallel MPI ring: */
+> ParallelLibrary::ParallelLibrary(char* serial_mode): worldRank(0), worldSize(1),
+>   mpirunFlag(false), ownMPIFlag(false), dryRunFlag(false), dummyFlag(false),
+>   stdOutputFlag(false), stdErrorFlag(false), startClock(0),
+>   stdOutputFilename(NULL), stdErrorFilename(NULL), readRestartFilename(NULL),
+>   writeRestartFilename(NULL), stopRestartEvals(0),
+>   currPLIter(parallelLevels.end()), currPCIter(parallelConfigurations.end())
+> {
+>   startClock   = clock();
+> #ifdef DAKOTA_UTILIB
+>   utilib::exception_mngr::set_mode(utilib::exception_mngr::Abort);
+>   startCPUTime = CPUSeconds();       // see utilib/src/sys/seconds.cpp
+>   startWCTime  = WallClockSeconds(); // see utilib/src/sys/seconds.cpp
+> #endif // DAKOTA_UTILIB
+> 
+>   // do not initialize MPI.  Get worldRank/worldSize if available
+>   ParallelLevel pl;
+> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for  Dakota!
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota in serial mode on CPU 0, inside an MPI ring.";
+> #else // mpi not available
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota in serial mode.\n";
+> #endif // HAVE_MPI
+> 
+>   parallelLevels.insert(pl);
+>   currPLIter = parallelLevels.begin();
+>   increment_parallel_configuration();
+> }
+> 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/ParallelLibrary.H.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/ParallelLibrary.H.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/4.2/ParallelLibrary.H.patch	(revision 27955)
@@ -0,0 +1,3 @@
+346a347,348
+>   /// library mode constructor, serial mode
+>   ParallelLibrary(char*  serial_mode);
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/NIDRProblemDescDB.C.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/NIDRProblemDescDB.C.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/NIDRProblemDescDB.C.patch	(revision 27955)
@@ -0,0 +1,5 @@
+109a110,113
+> 
+>   //close the input file
+>   fclose(nidrin);
+> 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/NonDLocalReliability.C.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/NonDLocalReliability.C.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/NonDLocalReliability.C.patch	(revision 27955)
@@ -0,0 +1,9 @@
+2218a2219
+> 	  // add sensitivity output to importance factors (jes, 8/06/10)
+2223c2224,2227
+< 	    << std::setw(width) << impFactor(j,i) << '\n';
+---
+> 	    << std::setw(width) << impFactor(j,i)
+> 	    << "  Sensitivity = "
+> 	    << std::resetiosflags(std::ios::adjustfield)
+> 	    << std::setw(width) << fnGradsMeanX(j,i) << '\n';
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/NonDSampling.C.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/NonDSampling.C.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/NonDSampling.C.patch	(revision 27955)
@@ -0,0 +1,14 @@
+438,439c438,440
+<   if (!subIteratorFlag)
+<     nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+---
+> //don't compute for now, too expensive.
+> //  if (!subIteratorFlag)
+> //    nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+894,895c895,897
+<     nonDSampCorr.print_correlations(s, cv_labels, div_labels, drv_labels,
+<       iteratedModel.response_labels());
+---
+> //don't output for now.
+> //    nonDSampCorr.print_correlations(s, cv_labels, div_labels, drv_labels,
+> //      iteratedModel.response_labels());
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/NonDUnilevelRBDO.C.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/NonDUnilevelRBDO.C.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/NonDUnilevelRBDO.C.patch	(revision 27955)
@@ -0,0 +1,7 @@
+1046a1047
+> 	  // add sensitivity output to importance factors (jes, 8/06/10)
+1048c1049,1050
+< 	    << uv_labels[j].data() << " = " << impFactor[i][j] << '\n';
+---
+> 	    << uv_labels[j].data() << " = " << impFactor[i][j]
+> 	    << "  Sensitivity = " << fnGradsMeanX(i,j) << '\n';
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/ParallelLibrary.C.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/ParallelLibrary.C.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/ParallelLibrary.C.patch	(revision 27955)
@@ -0,0 +1,36 @@
+178a179
+>   initialized=0; //we run serially all the time!
+214a216,248
+> /** This constructor is provided for the Issm software, to run serial
+>  * Dakota in a parallel MPI ring: */
+> ParallelLibrary::ParallelLibrary(char* serial_mode):
+>   worldRank(0), worldSize(1), 
+>   mpirunFlag(false), ownMPIFlag(false), dummyFlag(false),
+>   stdOutputToFile(false), stdErrorToFile(false), checkFlag(false),
+>   preRunFlag(true), runFlag(true), postRunFlag(true), userModesFlag(false), 
+>   startClock(0), stopRestartEvals(0),
+>   currPLIter(parallelLevels.end()), currPCIter(parallelConfigurations.end())
+> {
+>   startClock   = clock();
+> #ifdef DAKOTA_UTILIB
+>   utilib::exception_mngr::set_mode(utilib::exception_mngr::Abort);
+>   startCPUTime = CPUSeconds();       // see utilib/src/sys/seconds.cpp
+>   startWCTime  = WallClockSeconds(); // see utilib/src/sys/seconds.cpp
+> #endif // DAKOTA_UTILIB
+> 
+>   // do not initialize MPI.  Get worldRank/worldSize if available
+>   ParallelLevel pl;
+> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for Dakota!
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota 5.2 MPI executable in serial mode on CPU 0 for ISSM.";
+> #else // mpi not available
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota 5.2 serial executable in serial mode for ISSM.\n";
+> #endif // HAVE_MPI
+> 
+>   parallelLevels.push_back(pl);
+>   currPLIter = parallelLevels.begin();
+>   increment_parallel_configuration();
+> }
+> 
+> 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/ParallelLibrary.H.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/ParallelLibrary.H.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/ParallelLibrary.H.patch	(revision 27955)
@@ -0,0 +1,3 @@
+358a359,360
+>   /// library mode constructor, serial mode (for the Issm software)
+>   ParallelLibrary(char*  serial_mode);
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/Teuchos_ConfigDefs.hpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/Teuchos_ConfigDefs.hpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/Teuchos_ConfigDefs.hpp.patch	(revision 27955)
@@ -0,0 +1,2 @@
+87a88
+> #include <stddef.h>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/pecos_global_defs.hpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/pecos_global_defs.hpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.2/pecos_global_defs.hpp.patch	(revision 27955)
@@ -0,0 +1,4 @@
+24a25
+> #ifndef PI
+25a27
+> #endif
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.mac.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.mac.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.mac.patch	(revision 27955)
@@ -0,0 +1,14 @@
+64,65c64,65
+< #set( DAKOTA_HAVE MPI ON
+< #     CACHE BOOL "Build with MPI enabled" FORCE)
+---
+> set( DAKOTA_HAVE MPI OFF
+>      CACHE BOOL "Build with MPI disabled" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.patch	(revision 27955)
@@ -0,0 +1,26 @@
+64,65c64,65
+< #set( DAKOTA_HAVE MPI ON
+< #     CACHE BOOL "Build with MPI enabled" FORCE)
+---
+> set( DAKOTA_HAVE MPI OFF
+>      CACHE BOOL "Build with MPI disabled" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ENV{ISSM_DIR}/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.pfe.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.pfe.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.pfe.patch	(revision 27955)
@@ -0,0 +1,26 @@
+64,65c64,65
+< #set( DAKOTA_HAVE MPI ON
+< #     CACHE BOOL "Build with MPI enabled" FORCE)
+---
+> set( DAKOTA_HAVE MPI OFF
+>      CACHE BOOL "Build with MPI disabled" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "/nasa/boost/1.50.0"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.lonestar.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.lonestar.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.lonestar.patch	(revision 27955)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L/opt/apps/intel/16.0.1.150/compilers_and_libraries_2016.1.150/linux/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
+> set(LAPACK_LIBS "-L/opt/apps/intel/16.0.1.150/compilers_and_libraries_2016.1.150/linux/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.patch	(revision 27955)
@@ -0,0 +1,4 @@
+47a48,50
+> set(BUILD_STATIC_LIBS ON CACHE BOOL "Set to ON to build static libraries" FORCE)
+> set(BUILD_SHARED_LIBS OFF CACHE BOOL "Set to ON to build DSO libraries" FORCE)
+> 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.pfe.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.pfe.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.pfe.patch	(revision 27955)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L/nasa/intel/Compiler/2015.0.090/composer_xe_2015.0.090/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm")
+> set(LAPACK_LIBS "-L/nasa/intel/Compiler/2015.0.090/composer_xe_2015.0.090/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm")
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/DakotaDev.cmake.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/DakotaDev.cmake.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/DakotaDev.cmake.patch	(revision 27955)
@@ -0,0 +1,16 @@
+4,8c4,8
+< set(DAKOTA_HAVE_MPI TRUE CACHE BOOL "Enable MPI in DAKOTA?")
+< set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+< set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+<   "Enable DAKOTA specification maintenance mode?")
+< set(PECOS_ENABLE_TESTS TRUE CACHE BOOL "Enable Pecos-specific tests?")
+---
+> #set(DAKOTA_HAVE_MPI TRUE CACHE BOOL "Enable MPI in DAKOTA?")
+> #set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+> #set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+> #  "Enable DAKOTA specification maintenance mode?")
+> #set(PECOS_ENABLE_TESTS TRUE CACHE BOOL "Enable Pecos-specific tests?")
+14c14
+< #set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
+---
+> set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/NonDLocalReliability.cpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/NonDLocalReliability.cpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/NonDLocalReliability.cpp.patch	(revision 27955)
@@ -0,0 +1,9 @@
+2587a2588
+> 	  // add sensitivity output to importance factors (jes, 8/06/10)
+2592c2593,2596
+< 	    << std::setw(width) << impFactor(j,i) << '\n';
+---
+> 	    << std::setw(width) << impFactor(j,i)
+> 	    << "  Sensitivity = "
+> 	    << std::resetiosflags(std::ios::adjustfield)
+> 	    << std::setw(width) << fnGradsMeanX(j,i) << '\n';
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/NonDSampling.cpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/NonDSampling.cpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/NonDSampling.cpp.patch	(revision 27955)
@@ -0,0 +1,25 @@
+703,709c703,710
+<   if (!subIteratorFlag) {
+<     nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+<     // archive the correlations to the results DB
+<     nonDSampCorr.archive_correlations(run_identifier(), resultsDB,
+< 				      cv_labels, div_labels, drv_labels,
+< 				      iteratedModel.response_labels());
+<   }
+---
+> //don't compute for now, too expensive.
+> //  if (!subIteratorFlag) {
+> //    nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+> //    // archive the correlations to the results DB
+> //    nonDSampCorr.archive_correlations(run_identifier(), resultsDB,
+> //				      cv_labels, div_labels, drv_labels,
+> //				      iteratedModel.response_labels());
+> //  }
+1196,1197c1197,1200
+<     nonDSampCorr.print_correlations(s, cv_labels, div_labels, drv_labels,
+< 				    iteratedModel.response_labels());
+---
+> 
+> //don't output for now.
+> //    nonDSampCorr.print_correlations(s, cv_labels, div_labels, drv_labels,
+> //				    iteratedModel.response_labels());
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/ParallelLibrary.cpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/ParallelLibrary.cpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/ParallelLibrary.cpp.patch	(revision 27955)
@@ -0,0 +1,35 @@
+107a108
+>   initialized=0; //we run serially all the time!
+133a135
+>   initialized=0; //we run serially all the time!
+141a144,171
+> /** This constructor is provided for the ISSM software, to run serial
+>  * Dakota in a parallel MPI ring: */
+> ParallelLibrary::ParallelLibrary(char* serial_mode):
+>   dakotaMPIComm(MPI_COMM_WORLD), worldRank(0), worldSize(1),
+>   mpirunFlag(false), ownMPIFlag(false), dummyFlag(false),
+>   stdOutputToFile(false), stdErrorToFile(false), checkFlag(false),
+>   preRunFlag(true), runFlag(true), postRunFlag(true), userModesFlag(false),
+>   outputTimings(true), startClock(0), stopRestartEvals(0),
+>   currPLIter(parallelLevels.end()), currPCIter(parallelConfigurations.end())
+> {
+>   initialize_timers();
+> 
+>   // do not initialize MPI.  Get worldRank/worldSize if available
+>   ParallelLevel pl;
+> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for Dakota!
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota 5.3.1 MPI executable in serial mode on CPU 0 for ISSM." << std::endl;
+> #else // mpi not available
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota 5.3.1 serial executable in serial mode for ISSM." << std::endl;
+> #endif // HAVE_MPI
+> 
+>   parallelLevels.push_back(pl);
+>   currPLIter = parallelLevels.begin();
+>   increment_parallel_configuration();
+> }
+> 
+> 
+1536a1567
+>   initialized=0; //we run serially all the time!
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/ParallelLibrary.hpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/ParallelLibrary.hpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/ParallelLibrary.hpp.patch	(revision 27955)
@@ -0,0 +1,3 @@
+358a359,360
+>   /// library mode constructor, serial mode (for the ISSM software)
+>   ParallelLibrary(char* serial_mode);
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/pecos_global_defs.hpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/pecos_global_defs.hpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3.1/pecos_global_defs.hpp.patch	(revision 27955)
@@ -0,0 +1,4 @@
+25a26
+> #ifndef PI
+26a28
+> #endif
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/BuildDakotaCustom.cmake.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/BuildDakotaCustom.cmake.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/BuildDakotaCustom.cmake.patch	(revision 27955)
@@ -0,0 +1,40 @@
+41,46c41,46
+< #set( BLAS_LIBS 
+< #      "/usr/lib64"
+< #      CACHE FILEPATH "Use non-standard BLAS library path" FORCE )
+< #set( LAPACK_LIBS 
+< #      "/usr/lib64"
+< #      CACHE FILEPATH "Use non-standard BLAS library path" FORCE )
+---
+> set( BLAS_LIBS 
+>       "/usr/lib64/libblas.so.3.0.3"
+>       CACHE FILEPATH "Use non-standard BLAS library path" FORCE )
+> set( LAPACK_LIBS 
+>       "/usr/lib64/liblapack.so.3.0.3"
+>       CACHE FILEPATH "Use non-standard BLAS library path" FORCE )
+64,65c64,65
+< #set( DAKOTA_HAVE MPI ON
+< #     CACHE BOOL "Build with MPI enabled" FORCE)
+---
+> set( DAKOTA_HAVE MPI OFF
+>      CACHE BOOL "Build with MPI disabled" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ENV{ISSM_DIR}/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/DakotaDev.cmake.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/DakotaDev.cmake.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/DakotaDev.cmake.patch	(revision 27955)
@@ -0,0 +1,14 @@
+4,7c4,7
+< set(DAKOTA_HAVE_MPI TRUE CACHE BOOL "Enable MPI in DAKOTA?")
+< set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+< set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+<   "Enable DAKOTA specification maintenance mode?")
+---
+> #set(DAKOTA_HAVE_MPI TRUE CACHE BOOL "Enable MPI in DAKOTA?")
+> #set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+> #set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+> #  "Enable DAKOTA specification maintenance mode?")
+13c13
+< #set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
+---
+> set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/NonDLocalReliability.cpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/NonDLocalReliability.cpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/NonDLocalReliability.cpp.patch	(revision 27955)
@@ -0,0 +1,9 @@
+2579a2580
+> 	  // add sensitivity output to importance factors (jes, 8/06/10)
+2584c2585,2588
+< 	    << std::setw(width) << impFactor(j,i) << '\n';
+---
+> 	    << std::setw(width) << impFactor(j,i)
+> 	    << "  Sensitivity = "
+> 	    << std::resetiosflags(std::ios::adjustfield)
+> 	    << std::setw(width) << fnGradsMeanX(j,i) << '\n';
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/NonDSampling.cpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/NonDSampling.cpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/NonDSampling.cpp.patch	(revision 27955)
@@ -0,0 +1,25 @@
+703,709c703,710
+<   if (!subIteratorFlag) {
+<     nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+<     // archive the correlations to the results DB
+<     nonDSampCorr.archive_correlations(run_identifier(), resultsDB,
+< 				      cv_labels, div_labels, drv_labels,
+< 				      iteratedModel.response_labels());
+<   }
+---
+> //don't compute for now, too expensive.
+> //  if (!subIteratorFlag) {
+> //    nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+> //    // archive the correlations to the results DB
+> //    nonDSampCorr.archive_correlations(run_identifier(), resultsDB,
+> //				      cv_labels, div_labels, drv_labels,
+> //				      iteratedModel.response_labels());
+> //  }
+1196,1197c1197,1200
+<     nonDSampCorr.print_correlations(s, cv_labels, div_labels, drv_labels,
+< 				    iteratedModel.response_labels());
+---
+> 
+> //don't output for now.
+> //    nonDSampCorr.print_correlations(s, cv_labels, div_labels, drv_labels,
+> //				    iteratedModel.response_labels());
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/ParallelLibrary.cpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/ParallelLibrary.cpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/ParallelLibrary.cpp.patch	(revision 27955)
@@ -0,0 +1,40 @@
+103a104
+>   initialized=0; //we run serially all the time!
+129a131
+>   initialized=0; //we run serially all the time!
+137a140,172
+> /** This constructor is provided for the ISSM software, to run serial
+>  * Dakota in a parallel MPI ring: */
+> ParallelLibrary::ParallelLibrary(char* serial_mode):
+>   worldRank(0), worldSize(1),
+>   mpirunFlag(false), ownMPIFlag(false), dummyFlag(false),
+>   stdOutputToFile(false), stdErrorToFile(false), checkFlag(false),
+>   preRunFlag(true), runFlag(true), postRunFlag(true), userModesFlag(false),
+>   startClock(0), stopRestartEvals(0),
+>   currPLIter(parallelLevels.end()), currPCIter(parallelConfigurations.end())
+> {
+>   startClock   = clock();
+> #ifdef DAKOTA_UTILIB
+>   utilib::exception_mngr::set_mode(utilib::exception_mngr::Abort);
+>   startCPUTime = CPUSeconds();       // see utilib/src/sys/seconds.cpp
+>   startWCTime  = WallClockSeconds(); // see utilib/src/sys/seconds.cpp
+> #endif // DAKOTA_UTILIB
+> 
+>   // do not initialize MPI.  Get worldRank/worldSize if available
+>   ParallelLevel pl;
+> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for Dakota!
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota 5.3 MPI executable in serial mode on CPU 0 for ISSM.";
+> #else // mpi not available
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota 5.3 serial executable in serial mode for ISSM.\n";
+> #endif // HAVE_MPI
+> 
+>   parallelLevels.push_back(pl);
+>   currPLIter = parallelLevels.begin();
+>   increment_parallel_configuration();
+> }
+> 
+> 
+1517a1553
+>   initialized=0; //we run serially all the time!
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/ParallelLibrary.hpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/ParallelLibrary.hpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/ParallelLibrary.hpp.patch	(revision 27955)
@@ -0,0 +1,3 @@
+358a359,360
+>   /// library mode constructor, serial mode (for the ISSM software)
+>   ParallelLibrary(char* serial_mode);
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/pecos_global_defs.hpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/pecos_global_defs.hpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/pecos_global_defs.hpp.patch	(revision 27955)
@@ -0,0 +1,4 @@
+25a26
+> #ifndef PI
+26a28
+> #endif
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/utilibExpat_patch.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/utilibExpat_patch.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/5.3/utilibExpat_patch.txt	(revision 27955)
@@ -0,0 +1,58 @@
+Index: CMakeLists.txt
+===================================================================
+--- CMakeLists.txt	(revision 1968)
++++ CMakeLists.txt	(working copy)
+@@ -30,6 +30,17 @@
+ if(UTILIB_YES_MEMDEBUG)
+   add_definitions(-DUTILIB_YES_MEMDEBUG=1)
+ endif()
++option(UTILIB_HAVE_EXPAT "Enable expat in utilib" OFF)
++if (UTILIB_HAVE_EXPAT)
++  find_package(EXPAT)
++  if (EXPAT_FOUND)
++    # Use the same definition as autotools build
++    add_definitions("-DUTILIB_HAVE_EXPAT_H")
++    # TODO: add include path (EXPAT_INCLUDE_DIRS) in relevant subdirs?
++  else()
++    message(WARNING "expat requested, but not found")
++  endif()
++endif()
+ 
+ #inspect the system so that we can generate utilib_config.h 
+ include(CheckFunctionExists)
+@@ -47,7 +58,6 @@
+ CHECK_INCLUDE_FILES("windows.h;dbghelp.h" UTILIB_HAVE_DBGHELP_H)
+ CHECK_INCLUDE_FILE(err.h UTILIB_HAVE_ERR_H)
+ CHECK_INCLUDE_FILE(execinfo.h UTILIB_HAVE_EXECINFO_H)
+-CHECK_INCLUDE_FILE(expat.h UTILIB_HAVE_EXPAT_H)
+ CHECK_INCLUDE_FILE(float.h UTILIB_HAVE_FLOAT_H)
+ CHECK_INCLUDE_FILE(limits.h UTILIB_HAVE_LIMITS_H)
+ CHECK_INCLUDE_FILE(strings.h UTILIB_HAVE_STRINGS_H)
+@@ -57,9 +67,7 @@
+ CHECK_INCLUDE_FILE(values.h UTILIB_HAVE_VALUES_H)
+ CHECK_INCLUDE_FILE(windows.h UTILIB_HAVE_WINDOWS_H)
+ 
+-find_library(EXPAT_LIB expat)
+ 
+-
+ # Use common HAVE_BOOST to indicate usage of Boost across packages
+ # Ultimately need to #define UTILIB_HAVE_BOOST if used 
+ set(HAVE_BOOST OFF CACHE BOOL "Should Utilib use BOOST?")
+
+
+Index: CMakeLists.txt
+===================================================================
+--- src/libs/CMakeLists.txt	2013/03/25 19:19:06	1970
++++ src/libs/CMakeLists.txt	2013/03/25 19:51:47	1971
+@@ -77,8 +77,9 @@
+   list(APPEND libs ${MPI_LIBRARY})
+ endif()
+ 
+-if(UTILIB_HAVE_EXPAT_H AND EXPAT_LIB)
+-  list(APPEND libs ${EXPAT_LIB})
++if(UTILIB_HAVE_EXPAT AND EXPAT_FOUND)
++  include_directories(${EXPAT_INCLUDE_DIRS})
++  list(APPEND libs ${EXPAT_LIBRARIES})
+ endif()
+ if(MSVC)
+   list(APPEND libs dbghelp)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/BuildDakotaCustom.cmake.mac.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/BuildDakotaCustom.cmake.mac.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/BuildDakotaCustom.cmake.mac.patch	(revision 27955)
@@ -0,0 +1,14 @@
+64,65c64,65
+< #set( DAKOTA_HAVE_MPI ON
+< #     CACHE BOOL "Build with MPI enabled" FORCE)
+---
+> set( DAKOTA_HAVE_MPI OFF
+>      CACHE BOOL "Build with MPI disabled" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/BuildDakotaCustom.cmake.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/BuildDakotaCustom.cmake.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/BuildDakotaCustom.cmake.patch	(revision 27955)
@@ -0,0 +1,26 @@
+64,65c64,65
+< #set( DAKOTA_HAVE_MPI ON
+< #     CACHE BOOL "Build with MPI enabled" FORCE)
+---
+> set( DAKOTA_HAVE_MPI OFF
+>      CACHE BOOL "Build with MPI disabled" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ENV{ISSM_DIR}/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/CMakeLists.txt.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/CMakeLists.txt.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/CMakeLists.txt.patch	(revision 27955)
@@ -0,0 +1,4 @@
+47a48,50
+> set(BUILD_STATIC_LIBS ON CACHE BOOL "Set to ON to build static libraries" FORCE)
+> set(BUILD_SHARED_LIBS OFF CACHE BOOL "Set to ON to build DSO libraries" FORCE)
+> 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/CMakeLists.txt.pfe.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/CMakeLists.txt.pfe.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/CMakeLists.txt.pfe.patch	(revision 27955)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L/nasa/intel/mkl/10.0.011/lib/em64t/ -lmkl -lmkl_lapack -liomp5 -lpthread")
+> set(LAPACK_LIBS "-L/nasa/intel/mkl/10.0.011/lib/em64t/ -lmkl -lmkl_lapack -liomp5 -lpthread")
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/DakotaDev.cmake.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/DakotaDev.cmake.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/DakotaDev.cmake.patch	(revision 27955)
@@ -0,0 +1,16 @@
+4,8c4,8
+< set(DAKOTA_HAVE_MPI TRUE CACHE BOOL "Enable MPI in DAKOTA?")
+< set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+< set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+<   "Enable DAKOTA specification maintenance mode?")
+< set(PECOS_ENABLE_TESTS TRUE CACHE BOOL "Enable Pecos-specific tests?")
+---
+> #set(DAKOTA_HAVE_MPI TRUE CACHE BOOL "Enable MPI in DAKOTA?")
+> #set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+> #set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+> #  "Enable DAKOTA specification maintenance mode?")
+> #set(PECOS_ENABLE_TESTS TRUE CACHE BOOL "Enable Pecos-specific tests?")
+14c14
+< #set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
+---
+> set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/NonDLocalReliability.cpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/NonDLocalReliability.cpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/NonDLocalReliability.cpp.patch	(revision 27955)
@@ -0,0 +1,9 @@
+2645a2646
+> 		 // add sensitivity output to importance factors (jes, 8/06/10)
+2651c2652,2655
+< 	    << std::setw(width) << impFactor(j,i) << '\n';
+---
+> 	    << std::setw(width) << impFactor(j,i) 
+> 		 << "  Sensitivity = "
+> 		 << std::resetiosflags(std::ios::adjustfield)
+> 		 << std::setw(width) << fnGradsMeanX(j,i) << '\n';
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/NonDSampling.cpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/NonDSampling.cpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/NonDSampling.cpp.patch	(revision 27955)
@@ -0,0 +1,25 @@
+780,786c780,787
+<   if (!subIteratorFlag) {
+<     nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+<     // archive the correlations to the results DB
+<     nonDSampCorr.archive_correlations(run_identifier(), resultsDB, cv_labels,
+< 				      div_labels, dsv_labels, drv_labels,
+< 				      iteratedModel.response_labels());
+<   }
+---
+> //don't compute for now, too expensive.
+> //  if (!subIteratorFlag) {
+> //   nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+> //    // archive the correlations to the results DB
+> //    nonDSampCorr.archive_correlations(run_identifier(), resultsDB, cv_labels,
+> //				      div_labels, dsv_labels, drv_labels,
+> //				      iteratedModel.response_labels());
+> //  }
+1277,1278c1278,1281
+<     nonDSampCorr.print_correlations(s, cv_labels, div_labels, dsv_labels,
+< 				    drv_labels,iteratedModel.response_labels());
+---
+> 
+> //don't output for now.
+> //    nonDSampCorr.print_correlations(s, cv_labels, div_labels, dsv_labels,
+> //				    drv_labels,iteratedModel.response_labels());
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/ParallelLibrary.cpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/ParallelLibrary.cpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/ParallelLibrary.cpp.patch	(revision 27955)
@@ -0,0 +1,24 @@
+51a54,76
+> /** This constructor is provided for the ISSM software, to run serial
+>  * Dakota in a parallel MPI ring: */
+> ParallelLibrary::ParallelLibrary(char* serial_mode):
+>	  mpiManager(dummy_mpi_mgr), programOptions(dummy_prg_opt),
+>	    outputManager(dummy_out_mgr), dummyFlag(true), outputTimings(false)
+> {
+>   initialize_timers();
+> 
+>   // do not initialize MPI.  Get worldRank/worldSize if available
+>   ParallelLevel pl;
+> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for Dakota!
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota 6.1 MPI executable in serial mode on CPU 0 for ISSM." << std::endl;
+> #else // mpi not available
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota 6.1 serial executable in serial mode for ISSM." << std::endl;
+> #endif // HAVE_MPI
+> 
+>   parallelLevels.push_back(pl);
+>   increment_parallel_configuration();
+> }
+> 
+> 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/ParallelLibrary.hpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/ParallelLibrary.hpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/ParallelLibrary.hpp.patch	(revision 27955)
@@ -0,0 +1,3 @@
+475a476,477
+>   /// library mode constructor, serial mode (for the ISSM software)
+>   ParallelLibrary(char* serial_mode);
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/pecos_global_defs.hpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/pecos_global_defs.hpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.1/pecos_global_defs.hpp.patch	(revision 27955)
@@ -0,0 +1,4 @@
+25a26
+> #ifndef PI
+26a28
+> #endif
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.aurora.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.aurora.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.aurora.patch	(revision 27955)
@@ -0,0 +1,38 @@
+54,55c54,55
+< #set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} <flag>"
+< #     CACHE STRING "CXX Flags for my platform" )
+---
+> set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMPICH_IGNORE_CXX_SEEK"
+>      CACHE STRING "CXX Flags for my platform" )
+67a68,78
+> set( DAKOTA_HAVE_MPI ON
+>  CACHE BOOL "Always build with MPI enabled" FORCE)
+> set( MPI_INCLUDE_PATH
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/include"
+>  CACHE FILEPATH "Use installed MPI headers" FORCE)
+> set( MPI_LIBRARY
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/lib/libmpich.so"
+>  CACHE FILEPATH "Use installed MPI library" FORCE)
+> set( MPI_EXTRA_LIBRARY
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/lib/libmpich.so"
+>	CACHE FILEPATH "Use MPI extra libraries" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ENV{ISSM_DIR}/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.discover.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.discover.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.discover.patch	(revision 27955)
@@ -0,0 +1,35 @@
+54,55c54,55
+< #set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} <flag>"
+< #     CACHE STRING "CXX Flags for my platform" )
+---
+> set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMPICH_IGNORE_CXX_SEEK"
+>      CACHE STRING "CXX Flags for my platform" )
+67a68,75
+> set( DAKOTA_HAVE_MPI ON
+>  CACHE BOOL "Always build with MPI enabled" FORCE)
+> set( MPI_INCLUDE_PATH
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/include"
+>  CACHE FILEPATH "Use installed MPI headers" FORCE)
+> set( MPI_LIBRARY
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/lib/libmpich.so"
+>  CACHE FILEPATH "Use installed MPI library" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ENV{ISSM_DIR}/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.discover20.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.discover20.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.discover20.patch	(revision 27955)
@@ -0,0 +1,35 @@
+54,55c54,55
+< #set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} <flag>"
+< #     CACHE STRING "CXX Flags for my platform" )
+---
+> set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMPICH_IGNORE_CXX_SEEK"
+>      CACHE STRING "CXX Flags for my platform" )
+67a68,75
+> set( DAKOTA_HAVE_MPI ON
+>  CACHE BOOL "Always build with MPI enabled" FORCE)
+> set( MPI_INCLUDE_PATH
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/include"
+>  CACHE FILEPATH "Use installed MPI headers" FORCE)
+> set( MPI_LIBRARY
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/lib/libmpich.so"
+>  CACHE FILEPATH "Use installed MPI library" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ENV{ISSM_DIR}/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.mac.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.mac.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.mac.patch	(revision 27955)
@@ -0,0 +1,8 @@
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.patch	(revision 27955)
@@ -0,0 +1,32 @@
+67a68,78
+> set( DAKOTA_HAVE_MPI ON
+>  CACHE BOOL "Always build with MPI enabled" FORCE)
+> set( MPI_INCLUDE_PATH
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/include"
+>  CACHE FILEPATH "Use installed MPI headers" FORCE)
+> set( MPI_LIBRARY
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/lib/libmpich.so"
+>  CACHE FILEPATH "Use installed MPI library" FORCE)
+> set( MPI_EXTRA_LIBRARY
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/lib/libmpich.so"
+>	CACHE FILEPATH "Use MPI extra libraries" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ENV{ISSM_DIR}/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.pfe.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.pfe.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.pfe.patch	(revision 27955)
@@ -0,0 +1,29 @@
+54,55c54,55
+< #set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} <flag>"
+< #     CACHE STRING "CXX Flags for my platform" )
+---
+> set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMPICH_IGNORE_CXX_SEEK"
+>      CACHE STRING "CXX Flags for my platform" )
+67a68,69
+> set( DAKOTA_HAVE_MPI ON
+>  CACHE BOOL "Always build with MPI enabled" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ISSM_DIR/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.stallo.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.stallo.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.stallo.patch	(revision 27955)
@@ -0,0 +1,42 @@
+52,55c52,55
+< #set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} <flag>" 
+< #     CACHE STRING "C Flags my platform" )
+< #set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} <flag>"
+< #     CACHE STRING "CXX Flags for my platform" )
+---
+> set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -L/lib64/libc.so.6 -L/lib64/ -lpthread -ldl -lm" 
+>      CACHE STRING "C Flags my platform" )
+> set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -L/lib64/libc.so.6 -L/lib64/ -lpthread -ldl -lm"
+>      CACHE STRING "CXX Flags for my platform" )
+67a68,78
+> set( DAKOTA_HAVE_MPI ON
+>  CACHE BOOL "Always build with MPI enabled" FORCE)
+> set( MPI_INCLUDE_PATH
+>  "/global/hds/software/cpu/eb3/impi/5.0.3.048-iccifort-2015.3.187-GNU-4.9.3-2.25/include64/"
+>  CACHE FILEPATH "Use installed MPI headers" FORCE)
+> set( MPI_LIBRARY
+>  "/global/hds/software/cpu/eb3/impi/5.0.3.048-iccifort-2015.3.187-GNU-4.9.3-2.25/lib64/libmpi.so"
+>  CACHE FILEPATH "Use installed MPI library" FORCE)
+> set( MPI_EXTRA_LIBRARY
+>  "/global/hds/software/cpu/eb3/impi/5.0.3.048-iccifort-2015.3.187-GNU-4.9.3-2.25/lib64/libmpi.so"
+> CACHE FILEPATH "Use MPI extra libraries" FORCE)
+73,77c84,88
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ENV{ISSM_DIR}/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c102,104
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.yosemite.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.yosemite.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.yosemite.patch	(revision 27955)
@@ -0,0 +1,29 @@
+67a68,75
+> set( DAKOTA_HAVE_MPI ON
+>  CACHE BOOL "Always build with MPI enabled" FORCE)
+> set( MPI_INCLUDE_PATH
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/include"
+>  CACHE FILEPATH "Use installed MPI headers" FORCE)
+> set( MPI_LIBRARY
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/lib/libmpich.a"
+>  CACHE FILEPATH "Use installed MPI library" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ENV{ISSM_DIR}/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.aurora.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.aurora.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.aurora.patch	(revision 27955)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L/opt/intel/composer_xe_2013.5.192/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
+> set(LAPACK_LIBS "-L/opt/intel/composer_xe_2013.5.192/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.discover.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.discover.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.discover.patch	(revision 27955)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L/usr/local/intel/Composer/composer_xe_2015.0.090/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
+> set(LAPACK_LIBS "-L/usr/local/intel/Composer/composer_xe_2015.0.090/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.discover16.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.discover16.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.discover16.patch	(revision 27955)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L/usr/local/intel/2016/compilers_and_libraries_2016.2.181/linux/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
+> set(LAPACK_LIBS "-L/usr/local/intel/2016/compilers_and_libraries_2016.2.181/linux/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.discover20.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.discover20.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.discover20.patch	(revision 27955)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L/usr/local/intel/2020/compilers_and_libraries_2020.0.166/linux/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
+> set(LAPACK_LIBS "-L/usr/local/intel/2020/compilers_and_libraries_2020.0.166/linux/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.libvars.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.libvars.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.libvars.patch	(revision 27955)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS $ENV{BLAS_LIBS})
+> set(LAPACK_LIBS $ENV{LAPACK_LIBS})
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.lonestar.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.lonestar.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.lonestar.patch	(revision 27955)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L$TACC_MKL_LIB -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm")
+> set(LAPACK_LIBS "-L$TACC_MKL_LIB -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm")
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.patch	(revision 27955)
@@ -0,0 +1,4 @@
+47a48,50
+> set(BUILD_STATIC_LIBS ON CACHE BOOL "Set to ON to build static libraries" FORCE)
+> set(BUILD_SHARED_LIBS OFF CACHE BOOL "Set to ON to build DSO libraries" FORCE)
+> 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.petsclibs.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.petsclibs.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.petsclibs.patch	(revision 27955)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L$ENV{ISSM_DIR}/externalpackages/petsc/install/lib -lfblas -L/usr/lib/gcc/x86_64-linux-gnu/4.9 -lgfortran")
+> set(LAPACK_LIBS "-L$ENV{ISSM_DIR}/externalpackages/petsc/install/lib -lflapack -L/usr/lib/gcc/x86_64-linux-gnu/4.9 -lgfortran")
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.pfe.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.pfe.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.pfe.patch	(revision 27955)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L/nasa/intel/Compiler/2018.3.222/compilers_and_libraries_2018.3.222/linux/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core")
+> set(LAPACK_LIBS "-L/nasa/intel/Compiler/2018.3.222/compilers_and_libraries_2018.3.222/linux/mkl/lib/intel64/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core")
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.stallo.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.stallo.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/CMakeLists.txt.stallo.patch	(revision 27955)
@@ -0,0 +1,9 @@
+229c229,231
+< option(BUILD_SHARED_LIBS "Build shared libraries?" ON)
+---
+> option(BUILD_SHARED_LIBS "Build shared libraries?" ON)
+> find_package(Threads)
+> 
+237a240,241
+> set(BLAS_LIBS "-Wl,--no-as-needed -L/global/hds/software/cpu/eb3/imkl/11.2.3.187-iimpi-7.3.5-GNU-4.9.3-2.25/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/lib64/libc.so.6 -L/lib64/ -lpthread -lm -ldl")
+> set(LAPACK_LIBS "-Wl,--no-as-needed -L/global/hds/software/cpu/eb3/imkl/11.2.3.187-iimpi-7.3.5-GNU-4.9.3-2.25/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/lib64/libc.so.6 -L/lib64/ -lpthread -lm -ldl")
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/DakotaDev.cmake.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/DakotaDev.cmake.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/DakotaDev.cmake.patch	(revision 27955)
@@ -0,0 +1,14 @@
+5,8c5,8
+< set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+< set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+<   "Enable DAKOTA specification maintenance mode?")
+< set(PECOS_ENABLE_TESTS TRUE CACHE BOOL "Enable Pecos-specific tests?")
+---
+> #set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+> #set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+> #  "Enable DAKOTA specification maintenance mode?")
+> #set(PECOS_ENABLE_TESTS TRUE CACHE BOOL "Enable Pecos-specific tests?")
+14c14
+< #set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
+---
+> set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/DakotaInterface.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/DakotaInterface.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/DakotaInterface.patch	(revision 27955)
@@ -0,0 +1,16 @@
+112c112
+<       Cerr << "\nError: failure opening " << ampl_col << std::endl;
+---
+>       Cerr << "\nError: failure opening " << col.c_str() << std::endl;
+121c121
+< 	Cerr << "\nError: failure reading AMPL col file " << ampl_col 
+---
+> 	Cerr << "\nError: failure reading AMPL col file " << col.c_str() 
+129c129
+<       Cerr << "\nError: failure opening " << ampl_row << std::endl;
+---
+>       Cerr << "\nError: failure opening " << row.c_str() << std::endl;
+142c142
+< 	Cerr << "\nError: failure reading AMPL row file " << ampl_row 
+---
+> 	Cerr << "\nError: failure reading AMPL row file " << row.c_str()
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/InstallDarwinDylibs.cmake.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/InstallDarwinDylibs.cmake.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/InstallDarwinDylibs.cmake.patch	(revision 27955)
@@ -0,0 +1,7 @@
+22,23c22,24
+< 
+< if ( DAKOTA_JENKINS_BUILD OR DEFINED ENV{WORKSPACE} )
+---
+> if ( DEFINED ENV{DAK_BUILD} )
+>   set ( CMAKE_CURRENT_BINARY_DIR $ENV{DAK_BUILD} )
+> elseif ( DAKOTA_JENKINS_BUILD OR DEFINED ENV{WORKSPACE} )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/MainEffectsExcelOutput.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/MainEffectsExcelOutput.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/MainEffectsExcelOutput.patch	(revision 27955)
@@ -0,0 +1,4 @@
+276c276
+< 	     std::cout << ss << std::endl;
+---
+> 	     std::cout << ss.str() << std::endl;
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/NKM_KrigingModel.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/NKM_KrigingModel.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/NKM_KrigingModel.patch	(revision 27955)
@@ -0,0 +1,6 @@
+9d8
+< 
+86c85
+< 	      << "has not been implemented." << std::cerr;
+---
+> 	      << "has not been implemented." << std::endl;
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/NonDLocalReliability.cpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/NonDLocalReliability.cpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/NonDLocalReliability.cpp.patch	(revision 27955)
@@ -0,0 +1,9 @@
+2645a2646
+> 		 // add sensitivity output to importance factors (jes, 8/06/10)
+2651c2652,2655
+< 	    << std::setw(width) << impFactor(j,i) << '\n';
+---
+> 	    << std::setw(width) << impFactor(j,i) 
+> 		 << "  Sensitivity = "
+> 		 << std::resetiosflags(std::ios::adjustfield)
+> 		 << std::setw(width) << fnGradsMeanX(j,i) << '\n';
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/NonDSampling.cpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/NonDSampling.cpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/NonDSampling.cpp.patch	(revision 27955)
@@ -0,0 +1,25 @@
+780,786c780,787
+<   if (!subIteratorFlag) {
+<     nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+<     // archive the correlations to the results DB
+<     nonDSampCorr.archive_correlations(run_identifier(), resultsDB, cv_labels,
+< 				      div_labels, dsv_labels, drv_labels,
+< 				      iteratedModel.response_labels());
+<   }
+---
+> //don't compute for now, too expensive.
+> //  if (!subIteratorFlag) {
+> //   nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+> //    // archive the correlations to the results DB
+> //    nonDSampCorr.archive_correlations(run_identifier(), resultsDB, cv_labels,
+> //				      div_labels, dsv_labels, drv_labels,
+> //				      iteratedModel.response_labels());
+> //  }
+1277,1278c1278,1281
+<     nonDSampCorr.print_correlations(s, cv_labels, div_labels, dsv_labels,
+< 				    drv_labels,iteratedModel.response_labels());
+---
+> 
+> //don't output for now.
+> //    nonDSampCorr.print_correlations(s, cv_labels, div_labels, dsv_labels,
+> //				    drv_labels,iteratedModel.response_labels());
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/linux/cmake/BuildDakotaCustom.cmake
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/linux/cmake/BuildDakotaCustom.cmake	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/linux/cmake/BuildDakotaCustom.cmake	(revision 27955)
@@ -0,0 +1,97 @@
+##############################################################################
+#
+# Template CMake Configuration File.
+#
+##############################################################################
+# The following CMake variables represent the minimum set of variables
+# that are required to allow Dakota to
+#   * find all prerequisite third party libraries (TPLs)
+#   * configure compiler and MPI options
+#   * set Dakota install path
+#
+# Instructions:
+# 1. Read Dakota/INSTALL - Source Quick Start to use this template file.
+#
+# 2. Uncomment CMake variables below ONLY for values you need to change for
+#    your platform. Edit variables as needed.
+#
+#    For example, if you are using a custom install of Boost, installed in
+#    /home/me/usr/boost, uncomment both CMake Boost variables  and edit
+#    paths:
+#       set(BOOST_ROOT
+#           "/home/me/usr/boost"
+#           CACHE PATH "Use non-standard Boost install" FORCE)
+#       set( Boost_NO_SYSTEM_PATHS TRUE
+#            CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+#
+#    Save file and exit.
+#
+# 6. Run CMake with script file. At terminal window, type:
+#      $ cmake -C BuildCustom.cmake $DAK_SRC
+#
+#    If you have not followed instructions in INSTALL -Source Quick Start,
+#    you will need to replace BuildCustom.cmake with the actual filename of
+#    this file and $DAK_SRC with the actual path to Dakota source.
+#
+##############################################################################
+
+##############################################################################
+# Set BLAS, LAPACK library paths ONLY if in non-standard locations
+##############################################################################
+set( BLAS_LIBS
+      "$ENV{BLAS_LIBS}"
+      CACHE FILEPATH "Use non-standard BLAS library path" FORCE )
+set( LAPACK_LIBS
+      "$ENV{LAPACK_LIBS}"
+      CACHE FILEPATH "Use non-standard BLAS library path" FORCE )
+
+##############################################################################
+# Set additional compiler options
+# Uncomment and replace <flag> with actual compiler flag, e.g. -xxe4.2
+##############################################################################
+set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS}"
+     CACHE STRING "C Flags my platform" )
+set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}"
+     CACHE STRING "CXX Flags for my platform" )
+set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}"
+     CACHE STRING "Fortran Flags for my platform" )
+
+##############################################################################
+# Set MPI options
+# Recommended practice is to set DAKOTA_HAVE_MPI and set MPI_CXX_COMPILER
+# to a compiler wrapper.
+##############################################################################
+set( DAKOTA_HAVE_MPI ON
+     CACHE BOOL "Build with MPI enabled" FORCE)
+set( MPI_INCLUDE_PATH "$ENV{MPI_INSTALL}/include"
+     CACHE FILEPATH "Use MPI headers" FORCE)
+set( MPI_LIBRARY "-L$ENV{MPI_INSTALL}/lib -lmpich"
+     CACHE FILEPATH "Use MPI library" FORCE)
+set( MPI_EXTRA_LIBRARY "-L$ENV{MPI_INSTALL}/lib -lmpich"
+	  CACHE FILEPATH "Use MPI extra libraries" FORCE)
+
+##############################################################################
+# Set Boost path if CMake cannot find your installed version of Boost or
+# if you have a custom Boost install location.
+##############################################################################
+set(BOOST_ROOT
+    $ENV{BOOST_ROOT}
+    CACHE PATH "Use non-standard Boost install" FORCE)
+set( Boost_NO_SYSTEM_PATHS TRUE
+     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+
+##############################################################################
+# Set Trilinos path if you want have a custom Trilinos install location. If
+# not set, the Trilinos package, teuchos, will be build during the Dakota
+# build.
+##############################################################################
+#set( Trilinos_DIR
+#      "path/to/Trilinos/install"
+#      CACHE PATH "Path to installed Trilinos" FORCE )
+
+##############################################################################
+# Customize DAKOTA
+##############################################################################
+set( CMAKE_INSTALL_PREFIX
+     $ENV{DAK_INSTALL}
+     CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/linux/cmake/BuildDakotaCustom.pleiades.cmake
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/linux/cmake/BuildDakotaCustom.pleiades.cmake	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/linux/cmake/BuildDakotaCustom.pleiades.cmake	(revision 27955)
@@ -0,0 +1,93 @@
+##############################################################################
+#
+# Template CMake Configuration File.
+#
+##############################################################################
+# The following CMake variables represent the minimum set of variables
+# that are required to allow Dakota to
+#   * find all prerequisite third party libraries (TPLs)
+#   * configure compiler and MPI options
+#   * set Dakota install path
+#
+# Instructions:
+# 1. Read Dakota/INSTALL - Source Quick Start to use this template file.
+#
+# 2. Uncomment CMake variables below ONLY for values you need to change for
+#    your platform. Edit variables as needed.
+#
+#    For example, if you are using a custom install of Boost, installed in
+#    /home/me/usr/boost, uncomment both CMake Boost variables  and edit
+#    paths:
+#       set(BOOST_ROOT
+#           "/home/me/usr/boost"
+#           CACHE PATH "Use non-standard Boost install" FORCE)
+#       set( Boost_NO_SYSTEM_PATHS TRUE
+#            CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+#
+#    Save file and exit.
+#
+# 6. Run CMake with script file. At terminal window, type:
+#      $ cmake -C BuildCustom.cmake $DAK_SRC
+#
+#    If you have not followed instructions in INSTALL -Source Quick Start,
+#    you will need to replace BuildCustom.cmake with the actual filename of
+#    this file and $DAK_SRC with the actual path to Dakota source.
+#
+##############################################################################
+
+##############################################################################
+# Set BLAS, LAPACK library paths ONLY if in non-standard locations
+##############################################################################
+set( BLAS_LIBS
+      "$ENV{BLAS_LIBS}"
+      CACHE FILEPATH "Use non-standard BLAS library path" FORCE )
+set( LAPACK_LIBS
+      "$ENV{LAPACK_LIBS}"
+      CACHE FILEPATH "Use non-standard BLAS library path" FORCE )
+
+##############################################################################
+# Set additional compiler options
+# Uncomment and replace <flag> with actual compiler flag, e.g. -xxe4.2
+##############################################################################
+#set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} <flag>" 
+#     CACHE STRING "C Flags my platform" )
+set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMPICH_IGNORE_CXX_SEEK"
+     CACHE STRING "CXX Flags for my platform" )
+#set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} <flag>"
+#     CACHE STRING "Fortran Flags for my platform" )
+
+##############################################################################
+# Set MPI options
+# Recommended practice is to set DAKOTA_HAVE_MPI and set MPI_CXX_COMPILER
+# to a compiler wrapper.
+##############################################################################
+set( DAKOTA_HAVE_MPI ON
+     CACHE BOOL "Build with MPI enabled" FORCE)
+#set( MPI_CXX_COMPILER "path/to/mpicxx"
+#     CACHE FILEPATH "Use MPI compiler wrapper" FORCE)
+
+##############################################################################
+# Set Boost path if CMake cannot find your installed version of Boost or
+# if you have a custom Boost install location.
+##############################################################################
+set(BOOST_ROOT
+    $ENV{BOOST_ROOT}
+    CACHE PATH "Use non-standard Boost install" FORCE)
+set( Boost_NO_SYSTEM_PATHS TRUE
+     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+
+##############################################################################
+# Set Trilinos path if you want have a custom Trilinos install location. If
+# not set, the Trilinos package, teuchos, will be build during the Dakota
+# build.
+##############################################################################
+#set( Trilinos_DIR
+#      "path/to/Trilinos/install"
+#      CACHE PATH "Path to installed Trilinos" FORCE )
+
+##############################################################################
+# Customize DAKOTA
+##############################################################################
+set( CMAKE_INSTALL_PREFIX
+     $ENV{DAK_INSTALL}
+     CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/linux/cmake/DakotaDev.cmake
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/linux/cmake/DakotaDev.cmake	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/linux/cmake/DakotaDev.cmake	(revision 27955)
@@ -0,0 +1,18 @@
+# CMake options for DAKOTA developer builds
+
+# Developer options
+#set(DAKOTA_HAVE_MPI TRUE CACHE BOOL "Enable MPI in DAKOTA?")
+set(ENABLE_DAKOTA_DOCS FALSE CACHE BOOL "Enable DAKOTA documentation build")
+set(ENABLE_SPEC_MAINT FALSE CACHE BOOL
+  "Enable DAKOTA specification maintenance mode?")
+set(PECOS_ENABLE_TESTS FALSE CACHE BOOL "Enable Pecos-specific tests?")
+
+# Not included from Mike's configs, but may help some
+
+# Disable optional X graphics
+#-DHAVE_X_GRAPHICS:BOOL=FALSE
+set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
+
+# CMake 2.8.6 has problems with RHEL6/Boost -- the following is a workaround
+#-DBoost_NO_BOOST_CMAKE=ON
+#set(Boost_NO_BOOST_CMAKE ON CACHE BOOL "Obtain desired behavior on RHEL6" FORCE)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/linux/packages/pecos/src/pecos_global_defs.hpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/linux/packages/pecos/src/pecos_global_defs.hpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/linux/packages/pecos/src/pecos_global_defs.hpp	(revision 27955)
@@ -0,0 +1,190 @@
+/*  _______________________________________________________________________
+
+    PECOS: Parallel Environment for Creation Of Stochastics
+    Copyright (c) 2011, Sandia National Laboratories.
+    This software is distributed under the GNU Lesser General Public License.
+    For more information, see the README file in the top Pecos directory.
+    _______________________________________________________________________ */
+
+#ifndef PECOS_GLOBAL_DEFS_H
+#define PECOS_GLOBAL_DEFS_H
+
+#include <iostream>
+#include <cfloat>  // for DBL_MIN, DBL_MAX
+#include <cmath>
+#include <cstdlib>
+
+#include <boost/math/constants/constants.hpp>
+
+namespace Pecos {
+
+// --------------
+// Special values
+// --------------
+/// the value for PI used in various numerical routines
+#ifndef PI
+const double PI = boost::math::constants::pi<double>();
+#endif
+
+/// special value returned by index() when entry not found
+const size_t _NPOS = ~(size_t)0; // one's complement
+
+/// used in ostream data output functions
+const int WRITE_PRECISION = 10;
+
+/// small value used for protecting division by zero, etc.; an alternative
+/// to DBL_MIN that is less likely to cause underflow/overflow when numbers
+/// larger than it are used in calculations
+const double SMALL_NUMBER = 1.e-25;
+/// large value used as a surrogate for infinity in error traps; an alternative
+/// to DBL_MAX or inf that is less likely to cause underflow/overflow when used
+/// in subsequent calculations
+const double LARGE_NUMBER = 1.e+50;
+
+// define special values for vector/matrix data copying modes
+enum { DEFAULT_COPY=0, SHALLOW_COPY, DEEP_COPY };
+
+// define special values for ExpansionConfigOptions::outputLevel
+enum { SILENT_OUTPUT, QUIET_OUTPUT, NORMAL_OUTPUT, VERBOSE_OUTPUT,
+       DEBUG_OUTPUT };
+
+// define special values for ranVarTypesX/U
+enum { NO_TYPE=0, CONTINUOUS_DESIGN, STD_NORMAL, NORMAL, BOUNDED_NORMAL,
+       LOGNORMAL, BOUNDED_LOGNORMAL, STD_UNIFORM, UNIFORM, LOGUNIFORM,
+       TRIANGULAR, STD_EXPONENTIAL, EXPONENTIAL, STD_BETA, BETA, STD_GAMMA,
+       GAMMA, GUMBEL, FRECHET, WEIBULL, HISTOGRAM_BIN, CONTINUOUS_INTERVAL,
+       CONTINUOUS_STATE, STOCHASTIC_EXPANSION };
+
+// define special values for secondaryACVarMapTargets/secondaryADVarMapTargets
+enum { NO_TARGET=0, CDV_LWR_BND, CDV_UPR_BND, DDRIV_LWR_BND, DDRIV_UPR_BND,
+       N_MEAN, N_STD_DEV, N_LWR_BND, N_UPR_BND, N_LOCATION, N_SCALE, LN_MEAN,
+       LN_STD_DEV, LN_LAMBDA, LN_ZETA, LN_ERR_FACT, LN_LWR_BND, LN_UPR_BND,
+       U_LWR_BND, U_UPR_BND, U_LOCATION, U_SCALE, LU_LWR_BND, LU_UPR_BND,
+       T_MODE, T_LWR_BND, T_UPR_BND, T_LOCATION, T_SCALE, E_BETA,
+       BE_ALPHA, BE_BETA, BE_LWR_BND, BE_UPR_BND, GA_ALPHA, GA_BETA,
+       GU_ALPHA, GU_BETA, F_ALPHA, F_BETA, W_ALPHA, W_BETA,
+       P_LAMBDA, BI_P_PER_TRIAL, BI_TRIALS, NBI_P_PER_TRIAL, NBI_TRIALS,
+       GE_P_PER_TRIAL, HGE_TOT_POP, HGE_SEL_POP, HGE_FAILED,
+       CSV_LWR_BND, CSV_UPR_BND, DSRIV_LWR_BND, DSRIV_UPR_BND };
+
+/// derived basis approximation types
+enum { NO_BASIS=0, //FOURIER_BASIS, EIGEN_BASIS,
+       GLOBAL_NODAL_INTERPOLATION_POLYNOMIAL,
+       PIECEWISE_NODAL_INTERPOLATION_POLYNOMIAL,
+       GLOBAL_HIERARCHICAL_INTERPOLATION_POLYNOMIAL,
+       PIECEWISE_HIERARCHICAL_INTERPOLATION_POLYNOMIAL,
+       GLOBAL_REGRESSION_ORTHOGONAL_POLYNOMIAL,
+       GLOBAL_PROJECTION_ORTHOGONAL_POLYNOMIAL,
+       GLOBAL_ORTHOGONAL_POLYNOMIAL };
+       //PIECEWISE_REGRESSION_ORTHOGONAL_POLYNOMIAL,
+       //PIECEWISE_PROJECTION_ORTHOGONAL_POLYNOMIAL,
+       //PIECEWISE_ORTHOGONAL_POLYNOMIAL };
+
+/// derived basis polynomial types (orthogonal polynomial order follows
+/// uncertain variable spec order of normal, uniform, exponential, beta, gamma)
+enum { NO_POLY=0, HERMITE_ORTHOG, LEGENDRE_ORTHOG, LAGUERRE_ORTHOG,
+       JACOBI_ORTHOG, GEN_LAGUERRE_ORTHOG, CHEBYSHEV_ORTHOG, NUM_GEN_ORTHOG,
+       LAGRANGE_INTERP, HERMITE_INTERP, PIECEWISE_LINEAR_INTERP,
+       PIECEWISE_QUADRATIC_INTERP, PIECEWISE_CUBIC_INTERP };
+
+/// integration rules within VPISparseGrid (1-12: CC through User-closed)
+/// and beyond (GOLUB_WELSCH, NEWTON_COTES)
+enum { NO_RULE=0, CLENSHAW_CURTIS, FEJER2, GAUSS_PATTERSON, GAUSS_LEGENDRE,
+       GAUSS_HERMITE, GEN_GAUSS_HERMITE, GAUSS_LAGUERRE, GEN_GAUSS_LAGUERRE,
+       GAUSS_JACOBI, GENZ_KEISTER, /*USER_OPEN, USER_CLOSED,*/ GOLUB_WELSCH,
+       NEWTON_COTES };
+
+// growth rules within VPISparseGrid
+//enum { DEFAULT_GROWTH=0, SLOW_LINEAR, SLOW_LINEAR_ODD, MODERATE_LINEAR,
+//       SLOW_EXPONENTIAL, MODERATE_EXPONENTIAL, FULL_EXPONENTIAL };
+
+/// options for synchronizing linear and exponential growth rule settings
+/// (consistent with slow/moderate/full growth for new level_to_growth_*
+/// functions in sandia_rules.cpp)
+enum { SLOW_RESTRICTED_GROWTH, MODERATE_RESTRICTED_GROWTH,
+       UNRESTRICTED_GROWTH };
+
+/// solution approaches for calculating the polynomial basis coefficients
+/// (options for ExpansionConfigOptions::expCoeffsSolnApproach)
+enum { QUADRATURE, CUBATURE, LIGHTWEIGHT_SPARSE_GRID, COMBINED_SPARSE_GRID,
+       HIERARCHICAL_SPARSE_GRID, SAMPLING, DEFAULT_REGRESSION,
+       DEFAULT_LEAST_SQ_REGRESSION, SVD_LEAST_SQ_REGRESSION,
+       EQ_CON_LEAST_SQ_REGRESSION, BASIS_PURSUIT, BASIS_PURSUIT_DENOISING,
+       ORTHOG_MATCH_PURSUIT, LASSO_REGRESSION, LEAST_ANGLE_REGRESSION,
+       ORTHOG_LEAST_INTERPOLATION };
+/// options for BasisConfigOptions::nestingOverride (inactive)
+enum { NO_NESTING_OVERRIDE=0, NESTED, NON_NESTED };
+/// options for overriding the default growth restriction policy
+enum { NO_GROWTH_OVERRIDE=0, RESTRICTED, UNRESTRICTED };
+/// options for ExpansionConfigOptions::refinementType (inactive)
+enum { NO_REFINEMENT=0, P_REFINEMENT, H_REFINEMENT };
+/// options for ExpansionConfigOptions::refinementControl
+enum { NO_CONTROL=0, UNIFORM_CONTROL, LOCAL_ADAPTIVE_CONTROL,
+       DIMENSION_ADAPTIVE_CONTROL_SOBOL, DIMENSION_ADAPTIVE_CONTROL_DECAY,
+       DIMENSION_ADAPTIVE_CONTROL_GENERALIZED };
+
+/// options for expansion basis type
+enum { DEFAULT_BASIS=0, TENSOR_PRODUCT_BASIS, TOTAL_ORDER_BASIS,
+       ADAPTED_BASIS_GENERALIZED, ADAPTED_BASIS_EXPANDING_FRONT,
+       NODAL_INTERPOLANT, HIERARCHICAL_INTERPOLANT };
+
+/// mode of integration driver: integration versus interpolation
+enum { DEFAULT_MODE=0, INTEGRATION_MODE, INTERPOLATION_MODE };
+
+/// options for local basis functions within PiecewiseInterpPolynomial
+enum { LINEAR_EQUIDISTANT, LINEAR, QUADRATIC_EQUIDISTANT, QUADRATIC,
+       CUBIC_EQUIDISTANT, CUBIC };
+
+/// special values for nodal interpolation of variance and variance gradient
+enum { INTERPOLATION_OF_PRODUCTS, REINTERPOLATION_OF_PRODUCTS,
+       PRODUCT_OF_INTERPOLANTS_FAST, PRODUCT_OF_INTERPOLANTS_FULL };
+
+/// special values for polynomial expansion combination
+enum { NO_COMBINE=0,  ADD_COMBINE, MULT_COMBINE, ADD_MULT_COMBINE };
+
+
+// ----------------
+// Standard streams
+// ----------------
+#define PCout std::cout
+#define PCerr std::cerr
+
+
+// --------------
+// Global objects
+// --------------
+/// Dummy struct for overloading letter-envelope constructors.
+/** BaseConstructor is used to overload the constructor for the base class
+    portion of letter objects.  It avoids infinite recursion (Coplien p.139)
+    in the letter-envelope idiom by preventing the letter from instantiating
+    another envelope.  Putting this struct here avoids circular dependencies. */
+struct BaseConstructor {
+  BaseConstructor(int = 0) {} ///< C++ structs can have constructors
+};
+
+
+// ----------------
+// Global functions
+// ----------------
+
+/// global function which handles serial or parallel aborts
+void abort_handler(int code);
+
+
+inline void abort_handler(int code)
+{ std::exit(code); } // for now, prior to use of MPI
+
+
+/** Templatized abort_handler_t method that allows for convenient return from
+    methods that otherwise have no sensible return from error clauses.  Usage:
+    MyType& method() { return abort_handler<MyType&>(-1); } */
+template <typename T>
+T abort_handler_t(int code)
+{
+  abort_handler(code);
+  throw code;
+}
+
+} // namespace Pecos
+
+#endif // PECOS_GLOBAL_DEFS_H
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/cmake/BuildDakotaCustom.cmake
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/cmake/BuildDakotaCustom.cmake	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/cmake/BuildDakotaCustom.cmake	(revision 27955)
@@ -0,0 +1,95 @@
+##############################################################################
+#
+# Template CMake Configuration File.
+#
+##############################################################################
+# The following CMake variables represent the minimum set of variables
+# that are required to allow Dakota to
+#   * find all prerequisite third party libraries (TPLs)
+#   * configure compiler and MPI options
+#   * set Dakota install path
+#
+# Instructions:
+# 1. Read Dakota/INSTALL - Source Quick Start to use this template file.
+#
+# 2. Uncomment CMake variables below ONLY for values you need to change for
+#    your platform. Edit variables as needed.
+#
+#    For example, if you are using a custom install of Boost, installed in
+#    /home/me/usr/boost, uncomment both CMake Boost variables  and edit
+#    paths:
+#       set(BOOST_ROOT
+#           "/home/me/usr/boost"
+#           CACHE PATH "Use non-standard Boost install" FORCE)
+#       set( Boost_NO_SYSTEM_PATHS TRUE
+#            CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+#
+#    Save file and exit.
+#
+# 6. Run CMake with script file. At terminal window, type:
+#      $ cmake -C BuildCustom.cmake $DAK_SRC
+#
+#    If you have not followed instructions in INSTALL -Source Quick Start,
+#    you will need to replace BuildCustom.cmake with the actual filename of
+#    this file and $DAK_SRC with the actual path to Dakota source.
+#
+##############################################################################
+
+##############################################################################
+# Set BLAS, LAPACK library paths ONLY if in non-standard locations
+##############################################################################
+set( BLAS_LIBS
+      "$ENV{BLAS_LIBS}"
+      CACHE FILEPATH "Use non-standard BLAS library path" FORCE )
+set( LAPACK_LIBS
+      "$ENV{LAPACK_LIBS}"
+      CACHE FILEPATH "Use non-standard BLAS library path" FORCE )
+
+##############################################################################
+# Set additional compiler options
+# Uncomment and replace <flag> with actual compiler flag, e.g. -xxe4.2
+##############################################################################
+set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS}"
+     CACHE STRING "C Flags my platform" )
+set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}"
+     CACHE STRING "CXX Flags for my platform" )
+set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}"
+     CACHE STRING "Fortran Flags for my platform" )
+
+##############################################################################
+# Set MPI options
+# Recommended practice is to set DAKOTA_HAVE_MPI and set MPI_CXX_COMPILER
+# to a compiler wrapper.
+##############################################################################
+set( DAKOTA_HAVE_MPI ON
+     CACHE BOOL "Build with MPI enabled" FORCE)
+set( MPI_INCLUDE_PATH "$ENV{MPI_INSTALL}/include"
+     CACHE FILEPATH "Use MPI headers" FORCE)
+set( MPI_LIBRARY "-L$ENV{MPI_INSTALL}/lib -lmpich"
+     CACHE FILEPATH "Use MPI library" FORCE)
+
+##############################################################################
+# Set Boost path if CMake cannot find your installed version of Boost or
+# if you have a custom Boost install location.
+##############################################################################
+set(BOOST_ROOT
+    $ENV{BOOST_ROOT}
+    CACHE PATH "Use non-standard Boost install" FORCE)
+set( Boost_NO_SYSTEM_PATHS TRUE
+     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+
+##############################################################################
+# Set Trilinos path if you want have a custom Trilinos install location. If
+# not set, the Trilinos package, teuchos, will be build during the Dakota
+# build.
+##############################################################################
+#set( Trilinos_DIR
+#      "path/to/Trilinos/install"
+#      CACHE PATH "Path to installed Trilinos" FORCE )
+
+##############################################################################
+# Customize DAKOTA
+##############################################################################
+set( CMAKE_INSTALL_PREFIX
+     $ENV{DAK_INSTALL}
+     CACHE PATH "Path to Dakota installation" )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/cmake/DakotaDev.cmake
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/cmake/DakotaDev.cmake	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/cmake/DakotaDev.cmake	(revision 27955)
@@ -0,0 +1,18 @@
+# CMake options for DAKOTA developer builds
+
+# Developer options
+#set(DAKOTA_HAVE_MPI TRUE CACHE BOOL "Enable MPI in DAKOTA?")
+set(ENABLE_DAKOTA_DOCS FALSE CACHE BOOL "Enable DAKOTA documentation build")
+set(ENABLE_SPEC_MAINT FALSE CACHE BOOL
+  "Enable DAKOTA specification maintenance mode?")
+set(PECOS_ENABLE_TESTS FALSE CACHE BOOL "Enable Pecos-specific tests?")
+
+# Not included from Mike's configs, but may help some
+
+# Disable optional X graphics
+#-DHAVE_X_GRAPHICS:BOOL=FALSE
+set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
+
+# CMake 2.8.6 has problems with RHEL6/Boost -- the following is a workaround
+#-DBoost_NO_BOOST_CMAKE=ON
+#set(Boost_NO_BOOST_CMAKE ON CACHE BOOL "Obtain desired behavior on RHEL6" FORCE)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/cmake/InstallDarwinDylibs.cmake
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/cmake/InstallDarwinDylibs.cmake	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/cmake/InstallDarwinDylibs.cmake	(revision 27955)
@@ -0,0 +1,132 @@
+# Find the Darwin dylib dependencies of dakota, excluding system libraries,
+# and install to ${CMAKE_INSTALL_PREFIX}/bin
+
+# NOTE: This script will only work for make install from top of build tree
+# TODO: Review string quoting conventions and test with spaces in filename
+
+# Function to install a single Dakota dll dependency
+# (used by multiple platforms)
+function(dakota_install_dll dakota_dll)
+  if (EXISTS "${dakota_dll}")
+    get_filename_component(dll_filename "${dakota_dll}" NAME)
+    message("-- Installing: ${CMAKE_INSTALL_PREFIX}/bin/${dll_filename}")
+    execute_process(
+      COMMAND
+        ${CMAKE_COMMAND} -E copy "${dakota_dll}" "${CMAKE_INSTALL_PREFIX}/bin"
+      )
+  else()
+    message(WARNING "Install couldn't find dynamic dependency ${dakota_dll}")
+  endif()
+endfunction()
+
+if ( DEFINED ENV{DAK_BUILD} )
+  set ( CMAKE_CURRENT_BINARY_DIR $ENV{DAK_BUILD} )
+elseif ( DAKOTA_JENKINS_BUILD OR DEFINED ENV{WORKSPACE} )
+  # By convention, all Dakota, jenkins-driven build jobs use a 'build'
+  # subdir for clear separation of source and build trees in the WORKSPACE
+  set( CMAKE_CURRENT_BINARY_DIR $ENV{WORKSPACE}/build )
+elseif ( NOT CMAKE_CURRENT_BINARY_DIR )
+  set( CMAKE_CURRENT_BINARY_DIR $ENV{PWD} )
+endif()
+
+message( "CMAKE_SHARED_LIBRARY_SUFFIX: ${CMAKE_SHARED_LIBRARY_SUFFIX}" )
+#message( "... If NOT .dylib, then CMake cache is not respected" )
+
+# otool may resolve symlinks, do the same for the build tree location
+get_filename_component(resolved_build_dir ${CMAKE_CURRENT_BINARY_DIR} REALPATH)
+
+# Get the dylibs excluding system libraries as a semicolon-separated list
+execute_process(
+  COMMAND otool -L "${CMAKE_CURRENT_BINARY_DIR}/src/dakota"
+  # Omit the header and get the library only
+  COMMAND awk "FNR > 1 {print $1}"
+  # Omit system libraries
+  COMMAND egrep -v "(^/System|^/usr/lib|^/usr/X11)"
+  COMMAND tr "\\n" ";"
+  OUTPUT_VARIABLE dakota_darwin_dylibs
+  )
+
+# Probe the CMakeCache.txt for location of the known Boost dynlib dependency
+
+file( STRINGS ${CMAKE_CURRENT_BINARY_DIR}/CMakeCache.txt
+      Boost_LIBRARY_DIRS_PAIR REGEX "^Boost_LIBRARY_DIRS:FILEPATH=(.*)$" )
+string( REGEX REPLACE "^Boost_LIBRARY_DIRS:FILEPATH=(.*)$" "\\1"
+        Cached_Boost_LIBRARY_DIRS "${Boost_LIBRARY_DIRS_PAIR}" )
+
+#message("Boost rpath=${Cached_Boost_LIBRARY_DIRS}")
+
+# Modify dakota_darwin_dylibs for "special case" of Boost
+#   otool DOES NOT return absolute path to Boost libs, so workaround the issue
+
+set(dakota_boost_dylibs "")
+
+# Ignore empty list elements:
+cmake_policy(PUSH)
+cmake_policy(SET CMP0007 OLD)
+
+foreach(pri_lib ${dakota_darwin_dylibs})
+  string(REGEX REPLACE "^libboost_(.*)$"
+    "${Cached_Boost_LIBRARY_DIRS}/libboost_\\1"
+    boost_dylib_fullpath "${pri_lib}")
+
+  if( ${pri_lib} MATCHES libboost_ )
+    # REMOVE boost entries if NOT absolute path
+    list(REMOVE_ITEM dakota_darwin_dylibs ${pri_lib})
+    list(APPEND dakota_boost_dylibs ${boost_dylib_fullpath})
+  endif()
+endforeach()
+
+# Get the secondary dylibs of the dylibs
+foreach(pri_lib ${dakota_darwin_dylibs})
+  execute_process(
+    COMMAND otool -L "${pri_lib}"
+    COMMAND awk "FNR > 1 {print $1}"
+    # Omit system libraries
+    COMMAND egrep -v "(^/System|^/usr/lib|^/usr/X11)"
+    COMMAND tr "\\n" ";"
+    OUTPUT_VARIABLE dakota_secondary_dylibs
+    )
+  list(APPEND dakota_darwin_dylibs ${dakota_secondary_dylibs})
+endforeach()
+
+# Make a second pass over the list to prepend paths to boost libs that were
+# discovered while looking for dakota_secondary_dylibs. Any duplicates
+# will be removed below.
+foreach(pri_lib ${dakota_darwin_dylibs})
+  string(REGEX REPLACE "^libboost_(.*)$"
+    "${Cached_Boost_LIBRARY_DIRS}/libboost_\\1"
+    boost_dylib_fullpath "${pri_lib}")
+
+  if( ${pri_lib} MATCHES libboost_ )
+    # REMOVE boost entries if NOT absolute path
+    list(REMOVE_ITEM dakota_darwin_dylibs ${pri_lib})
+    list(APPEND dakota_boost_dylibs ${boost_dylib_fullpath})
+  endif()
+endforeach()
+
+# otool finished proccessing dylibs -
+# OK to "re-insert" Boost dylibs into the list (ABSOLUTE PATH!)
+
+#message("Boost dylibs=${dakota_boost_dylibs}")
+list(APPEND dakota_darwin_dylibs ${dakota_boost_dylibs})
+
+list(REMOVE_DUPLICATES dakota_darwin_dylibs)
+cmake_policy(POP)
+
+# Process each DLL and install, excluding anything in the build tree
+foreach(dakota_dll ${dakota_darwin_dylibs})
+  string(REGEX REPLACE "^${CMAKE_CURRENT_BINARY_DIR}(.*)$"
+    "dak_omit/\\1" omit_btree_dll "${dakota_dll}")
+  string(REGEX REPLACE "^${resolved_build_dir}(.*)$"
+    "dak_omit/\\1" omit_resolved_btree_dll "${dakota_dll}")
+
+  if( ${omit_btree_dll} MATCHES dak_omit )
+    #message("-- EXCLUDE: ${omit_btree_dll} - OK, already installed in lib")
+    message("-- EXCLUDE: ${dakota_dll} - OK, already installed in lib")
+  elseif( ${omit_resolved_btree_dll} MATCHES dak_omit )
+    message("-- EXCLUDE: ${dakota_dll} - OK, already installed in lib")
+  else()
+    dakota_install_dll("${dakota_dll}")
+  endif()
+endforeach()
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/DDACE/include/xtndispatch.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/DDACE/include/xtndispatch.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/DDACE/include/xtndispatch.h	(revision 27955)
@@ -0,0 +1,147 @@
+/*  This code was computer generated */
+
+/*
+
+  These programs construct and manipulate orthogonal 
+arrays.  They were prepared by
+
+    Art Owen
+    Department of Statistics
+    Sequoia Hall
+    Stanford CA 94305
+
+  They may be freely used and shared.  This code comes
+with no warranty of any kind.  Use it at your own
+risk.
+
+  I thank the Semiconductor Research Corporation and
+the National Science Foundation for supporting this
+work.
+
+*/
+
+/* Fix for C99 */
+extern int ipow(int a, int b); /* primes.c */
+
+if(  q== ipow(2,2)  )xtn = xtn2t2;
+if(  q== ipow(2,3)  )xtn = xtn2t3;
+if(  q== ipow(2,4)  )xtn = xtn2t4;
+if(  q== ipow(2,5)  )xtn = xtn2t5;
+if(  q== ipow(2,6)  )xtn = xtn2t6;
+if(  q== ipow(2,7)  )xtn = xtn2t7;
+if(  q== ipow(2,8)  )xtn = xtn2t8;
+if(  q== ipow(2,9)  )xtn = xtn2t9;
+if(  q== ipow(2,10)  )xtn = xtn2t10;
+if(  q== ipow(2,11)  )xtn = xtn2t11;
+if(  q== ipow(2,12)  )xtn = xtn2t12;
+if(  q== ipow(2,13)  )xtn = xtn2t13;
+if(  q== ipow(2,14)  )xtn = xtn2t14;
+if(  q== ipow(2,15)  )xtn = xtn2t15;
+if(  q== ipow(2,16)  )xtn = xtn2t16;
+if(  q== ipow(2,17)  )xtn = xtn2t17;
+if(  q== ipow(2,18)  )xtn = xtn2t18;
+if(  q== ipow(2,19)  )xtn = xtn2t19;
+if(  q== ipow(2,20)  )xtn = xtn2t20;
+if(  q== ipow(2,21)  )xtn = xtn2t21;
+if(  q== ipow(2,22)  )xtn = xtn2t22;
+if(  q== ipow(2,23)  )xtn = xtn2t23;
+if(  q== ipow(2,24)  )xtn = xtn2t24;
+if(  q== ipow(2,25)  )xtn = xtn2t25;
+if(  q== ipow(2,26)  )xtn = xtn2t26;
+if(  q== ipow(2,27)  )xtn = xtn2t27;
+if(  q== ipow(2,28)  )xtn = xtn2t28;
+if(  q== ipow(2,29)  )xtn = xtn2t29;
+if(  q== ipow(3,2)  )xtn = xtn3t2;
+if(  q== ipow(3,3)  )xtn = xtn3t3;
+if(  q== ipow(3,4)  )xtn = xtn3t4;
+if(  q== ipow(3,5)  )xtn = xtn3t5;
+if(  q== ipow(3,6)  )xtn = xtn3t6;
+if(  q== ipow(3,7)  )xtn = xtn3t7;
+if(  q== ipow(3,8)  )xtn = xtn3t8;
+if(  q== ipow(3,9)  )xtn = xtn3t9;
+if(  q== ipow(3,10)  )xtn = xtn3t10;
+if(  q== ipow(3,11)  )xtn = xtn3t11;
+if(  q== ipow(3,12)  )xtn = xtn3t12;
+if(  q== ipow(3,13)  )xtn = xtn3t13;
+if(  q== ipow(3,14)  )xtn = xtn3t14;
+if(  q== ipow(3,15)  )xtn = xtn3t15;
+if(  q== ipow(3,16)  )xtn = xtn3t16;
+if(  q== ipow(3,17)  )xtn = xtn3t17;
+if(  q== ipow(3,18)  )xtn = xtn3t18;
+if(  q== ipow(5,2)  )xtn = xtn5t2;
+if(  q== ipow(5,3)  )xtn = xtn5t3;
+if(  q== ipow(5,4)  )xtn = xtn5t4;
+if(  q== ipow(5,5)  )xtn = xtn5t5;
+if(  q== ipow(5,6)  )xtn = xtn5t6;
+if(  q== ipow(5,7)  )xtn = xtn5t7;
+if(  q== ipow(5,8)  )xtn = xtn5t8;
+if(  q== ipow(5,9)  )xtn = xtn5t9;
+if(  q== ipow(5,10)  )xtn = xtn5t10;
+if(  q== ipow(5,11)  )xtn = xtn5t11;
+if(  q== ipow(5,12)  )xtn = xtn5t12;
+if(  q== ipow(7,2)  )xtn = xtn7t2;
+if(  q== ipow(7,3)  )xtn = xtn7t3;
+if(  q== ipow(7,4)  )xtn = xtn7t4;
+if(  q== ipow(7,5)  )xtn = xtn7t5;
+if(  q== ipow(7,6)  )xtn = xtn7t6;
+if(  q== ipow(7,7)  )xtn = xtn7t7;
+if(  q== ipow(7,8)  )xtn = xtn7t8;
+if(  q== ipow(7,9)  )xtn = xtn7t9;
+if(  q== ipow(7,10)  )xtn = xtn7t10;
+if(  q== ipow(11,2)  )xtn = xtn11t2;
+if(  q== ipow(11,3)  )xtn = xtn11t3;
+if(  q== ipow(11,4)  )xtn = xtn11t4;
+if(  q== ipow(11,5)  )xtn = xtn11t5;
+if(  q== ipow(11,6)  )xtn = xtn11t6;
+if(  q== ipow(11,7)  )xtn = xtn11t7;
+if(  q== ipow(11,8)  )xtn = xtn11t8;
+if(  q== ipow(13,2)  )xtn = xtn13t2;
+if(  q== ipow(13,3)  )xtn = xtn13t3;
+if(  q== ipow(13,4)  )xtn = xtn13t4;
+if(  q== ipow(13,5)  )xtn = xtn13t5;
+if(  q== ipow(13,6)  )xtn = xtn13t6;
+if(  q== ipow(13,7)  )xtn = xtn13t7;
+if(  q== ipow(13,8)  )xtn = xtn13t8;
+if(  q== ipow(17,2)  )xtn = xtn17t2;
+if(  q== ipow(17,3)  )xtn = xtn17t3;
+if(  q== ipow(17,4)  )xtn = xtn17t4;
+if(  q== ipow(17,5)  )xtn = xtn17t5;
+if(  q== ipow(17,6)  )xtn = xtn17t6;
+if(  q== ipow(17,7)  )xtn = xtn17t7;
+if(  q== ipow(19,2)  )xtn = xtn19t2;
+if(  q== ipow(19,3)  )xtn = xtn19t3;
+if(  q== ipow(19,4)  )xtn = xtn19t4;
+if(  q== ipow(19,5)  )xtn = xtn19t5;
+if(  q== ipow(19,6)  )xtn = xtn19t6;
+if(  q== ipow(19,7)  )xtn = xtn19t7;
+if(  q== ipow(23,2)  )xtn = xtn23t2;
+if(  q== ipow(23,3)  )xtn = xtn23t3;
+if(  q== ipow(23,4)  )xtn = xtn23t4;
+if(  q== ipow(23,5)  )xtn = xtn23t5;
+if(  q== ipow(23,6)  )xtn = xtn23t6;
+if(  q== ipow(29,2)  )xtn = xtn29t2;
+if(  q== ipow(29,3)  )xtn = xtn29t3;
+if(  q== ipow(29,4)  )xtn = xtn29t4;
+if(  q== ipow(29,5)  )xtn = xtn29t5;
+if(  q== ipow(29,6)  )xtn = xtn29t6;
+if(  q== ipow(31,2)  )xtn = xtn31t2;
+if(  q== ipow(31,3)  )xtn = xtn31t3;
+if(  q== ipow(31,4)  )xtn = xtn31t4;
+if(  q== ipow(31,5)  )xtn = xtn31t5;
+if(  q== ipow(31,6)  )xtn = xtn31t6;
+if(  q== ipow(37,2)  )xtn = xtn37t2;
+if(  q== ipow(37,3)  )xtn = xtn37t3;
+if(  q== ipow(37,4)  )xtn = xtn37t4;
+if(  q== ipow(37,5)  )xtn = xtn37t5;
+if(  q== ipow(41,2)  )xtn = xtn41t2;
+if(  q== ipow(41,3)  )xtn = xtn41t3;
+if(  q== ipow(41,4)  )xtn = xtn41t4;
+if(  q== ipow(41,5)  )xtn = xtn41t5;
+if(  q== ipow(43,2)  )xtn = xtn43t2;
+if(  q== ipow(43,3)  )xtn = xtn43t3;
+if(  q== ipow(43,4)  )xtn = xtn43t4;
+if(  q== ipow(43,5)  )xtn = xtn43t5;
+if(  q== ipow(47,2)  )xtn = xtn47t2;
+if(  q== ipow(47,3)  )xtn = xtn47t3;
+if(  q== ipow(47,4)  )xtn = xtn47t4;
+if(  q== ipow(47,5)  )xtn = xtn47t5;
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/DDACE/src/Bose/boselink.c
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/DDACE/src/Bose/boselink.c	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/DDACE/src/Bose/boselink.c	(revision 27955)
@@ -0,0 +1,150 @@
+#if defined(HAVE_CONFIG_H) && !defined(DISABLE_DAKOTA_CONFIG_H)
+  #include "ddace_config.h"
+#endif
+#include <math.h>
+#include <stdio.h>
+#include "galois.h"
+
+/* Fix for C99*/
+extern int bose(struct GF *gf, int **A, int ncol); /* construct.c */
+extern int bush(struct GF *gf, int **A, int str, int ncol); /* construct.c */
+extern void GF_free(struct GF *gf); /* galois.c */
+extern int GF_getfield(int q, struct GF *gf); /* gfields.c */
+
+int bose_link( int n, int ninputs, int str, int ***AA )
+{
+   int    i, nsym, nsamples, **A; 
+   double dtemp, dpower;
+   struct GF gf;
+
+   if ( n <= 0 ) return -1;
+
+   /* only one method for strength of 3 */
+
+   if ( str == 3 )
+   {
+      dtemp = (double) n;
+      dtemp = pow(dtemp, 0.333333334);
+      nsym  = (int) dtemp;
+      if( ninputs > (nsym+1) ){
+         fprintf(stderr,"Only q+1 = %d cols given in Bush design.\n",nsym+1);
+         fprintf(stderr,"Columns requested was %d.\n",ninputs);
+	 return -1;
+      }
+      if(  !GF_getfield(nsym, &gf)  ) {
+         fprintf(stderr,"Could not construct the Galois field needed\n");
+         fprintf(stderr,"for the strength 3 Bush design.\n");
+	 GF_free( &gf );
+	 return -1;
+      }
+      nsamples = nsym * nsym * nsym;
+      A = imatrix( 0, nsamples, 0, ninputs-1  );
+      if(  !A  )
+      {
+         fprintf(stderr,"Could not allocate array for Bush design.\n");
+	 GF_free( &gf );
+	 return -1;
+      }
+      if(  ! bush( &gf, A, 3, ninputs )  )
+      {
+         fprintf(stderr,"Unable to construct the strength 3 ");
+         fprintf(stderr,"Bush design nsym=%d, ninputs=%d.\n", nsym,ninputs);
+	 GF_free( &gf );
+	 return -1;
+      }
+      else
+      {
+         (*AA) = A;
+         return nsamples;
+      }
+   }
+
+   /* only one method for strength greater than 3 */
+
+   if ( str > 3 )
+   {
+      dtemp = (double) n;
+      dpower = 1.0 / (double) str + 0.00000001;
+      dtemp = pow(dtemp, dpower);
+      nsym  = (int) dtemp;
+      if( ninputs > (nsym+1) ){
+         fprintf(stderr,"Only q+1 = %d cols given in Bush design.\n",nsym+1);
+         fprintf(stderr,"Columns requested was %d.\n",ninputs);
+	 return -1;
+      }
+      nsamples = nsym;
+      for ( i = 1; i < str; i++ ) nsamples = nsamples * nsym;
+      if(  !GF_getfield(nsym, &gf)  ){
+         fprintf(stderr,"Could not construct the Galois field needed\n");
+         fprintf(stderr,"for the strength %d Bush design\n",str);
+         fprintf(stderr,"on %d levels.\n", nsym);
+	 GF_free( &gf );
+	 return -1;
+      }
+      A = imatrix( 0, nsamples-1, 0, ninputs-1  );
+      if(  !A  )
+      {
+         fprintf(stderr,"Could not allocate array for Bush design.\n");
+	 GF_free( &gf );
+	 return -1;
+      } 
+      if(  ! bush( &gf, A, str, ninputs )  )
+      {
+         fprintf(stderr,"Unable to construct the strength %d \n", str);
+         fprintf(stderr,"Bush design nsym=%d, ninputs=%d.\n", nsym,ninputs);
+	 GF_free( &gf );
+	 return -1;
+      }
+      else
+      {
+         (*AA) = A;
+	 GF_free( &gf );
+         return nsamples;
+      }
+   }
+
+   /* for the cases when strength = 2 */
+
+   if ( str == 2 )
+   {
+      dtemp = (double) n;
+      dtemp = pow(dtemp, 0.500001);
+      nsym  = (int) dtemp;
+
+      if ( ninputs > ( nsym + 1 ) ) 
+      {
+         fprintf(stderr,"Number of samples too small to construct OA.\n");
+         fprintf(stderr,"Need at least %d. \n", (ninputs-1)*(ninputs-1));
+         return -1;
+      } 
+      if(  !GF_getfield( nsym, &gf)  )
+      {
+         fprintf(stderr,"Could not construct Galois field needed\n");
+         fprintf(stderr,"for Bose design.\n");
+	 GF_free( &gf );
+	 return -1;
+      }
+      nsamples = nsym * nsym;
+      A = imatrix( 0, nsamples-1, 0, ninputs-1  );
+      if(  !A  )
+      {
+         fprintf(stderr,"Could not allocate array for Bose design.\n");
+	 GF_free( &gf );
+	 return -1;
+      }
+      if(  ! bose( &gf, A, ninputs )  )
+      {
+         fprintf(stderr,"Unable to construct Bose design q=%d,",nsym);
+         fprintf(stderr," ninputs=%d.\n", ninputs);
+	 GF_free( &gf );
+	 return -1;
+      }
+      else
+      {
+         (*AA) = A;
+	 GF_free( &gf );
+         return nsamples;
+      }
+   }
+}
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/DDACE/src/Bose/construct.c
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/DDACE/src/Bose/construct.c	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/DDACE/src/Bose/construct.c	(revision 27955)
@@ -0,0 +1,410 @@
+#if defined(HAVE_CONFIG_H) && !defined(DISABLE_DAKOTA_CONFIG_H)
+  #include "ddace_config.h"
+#endif
+/*
+
+  These programs construct and manipulate orthogonal 
+arrays.  They were prepared by
+
+    Art Owen
+    Department of Statistics
+    Sequoia Hall
+    Stanford CA 94305
+
+  They may be freely used and shared.  This code comes
+with no warranty of any kind.  Use it at your own
+risk.
+
+  I thank the Semiconductor Research Corporation and
+the National Science Foundation for supporting this
+work.
+
+*/
+
+
+/*  Constructions for designs using Galois fields */
+
+#include <math.h>
+#include <stdio.h>
+
+#include "galois.h"
+
+/* Fix for C99 */
+extern int ipow(int a, int b); /* primes.c */
+extern int isprime(int p); /* primes.c */
+extern void free_ivector(int *v, int nl, int nh); /* memory.c */
+extern void free_imatrix(int **m, int nrl, int nrh, int ncl, int nch); /* memory.c */
+extern int akodd(struct GF *gf, int *kay, int *b, int *c, int *k); /* akconst.c */
+extern int akeven(struct GF *gf, int *kay, int *b, int *c, int *k); /* akconst.c */
+
+/*  Glossary:
+
+    bose:            OA( q^2, q+1, q, 2  )
+                     R.C. Bose (1938) Sankhya Vol 3 pp 323-338
+    bosecheck:       test input to bose
+
+    bosebush:        OA( 2q^2, 2q+1, q, 2 ), only implemented for q=2^n
+    bosebushcheck:   test input to bosebush
+
+    polyeval:        evaluate a polynomial with coefficients, argument
+                     and result in a Galois field
+
+*/
+
+
+bosecheck( q,ncol )
+int q, ncol;
+{
+if(  ncol > q+1  ){
+  fprintf(stderr,"Bose's design must have ncol <= q+1.\n");
+  fprintf(stderr,"Had q=%d and ncol=%d.\n",q,ncol);
+  return 0;
+}
+if(  ncol <= 0  ){
+  fprintf(stderr,"Nonpositive number of columns requested for Bose's design\n");
+  return 0;
+}
+return 1;
+}
+
+
+bose( gf, A, ncol )
+struct GF *gf;
+int    **A, ncol;
+{
+int i,j, icol,  q=gf->q, irow;
+
+if(  !bosecheck(q,ncol)  )return 0;
+
+irow = 0;
+for(  i=0; i<q; i++  )
+for(  j=0; j<q; j++  ){
+  icol=0;
+  A[ irow ][ icol++ ] = i;
+  if(  ncol > 1 )A[ irow  ][ icol++ ] = j;
+  for(  icol=2; icol<ncol; icol++ )
+    A[ irow ][ icol ] = gf->plus[j][gf->times[i][icol-1]];
+  irow++;
+}
+
+
+return 1;
+}
+
+itopoly( n,q,d,coef )
+int  n,q,d,*coef;
+{
+int i;
+
+for(  i=0; i<=d; i++  ){
+  coef[i] = n % q;
+  n = n/q;
+}
+}
+
+
+polyeval( gf, d, poly, arg, value )
+/*  find  value = poly(arg) where poly is a polynomial of degree d  
+    and all the arithmetic takes place in the given Galois field.*/
+
+struct GF *gf;
+int    d, *poly, arg, *value;
+{
+int   i,ans;
+
+ans = 0;
+for(  i= d; i>=0; i--  )  /* Horner's rule */
+  ans = gf->plus[  gf->times[ans][arg]  ][  poly[i] ];
+
+*value = ans;
+}
+
+bushcheck(q,str,ncol)
+int q,str,ncol;
+{
+if(  ncol > q+1  ){
+  fprintf(stderr,"Bush designs require ncol <= q+1.\n");
+  fprintf(stderr,"Cannot have q = %d and ncol = %d.\n",q,ncol);
+  return 0;
+}
+if(  str > ncol  ){
+  fprintf(stderr,"It doesn't make sense to have an array of strength\n");
+  fprintf(stderr,"%d with only %d columns.\n",str,ncol);
+  return 0;
+}
+if(  str >= q+1  ){
+  fprintf(stderr,"Bush's (1952) theorem has a condition t<q where t\n");
+  fprintf(stderr,"is the strength of the array and q is the number of symbols.\n");
+  fprintf(stderr,"Here we have t = %d and q = %d.  The array may still\n",str,q);
+  fprintf(stderr,"be useful, but a full factorial would have at least as\n");
+  fprintf(stderr,"many columns.\n");
+  return 1;
+}
+
+return 1;
+}
+
+
+bush( gf, A, str, ncol  )
+struct GF *gf;
+int       **A, str, ncol;
+{
+int   *coef;
+int   q, i,j;
+
+q = gf->q;
+if(  !bushcheck(q,str,ncol)  )return 0;
+
+coef = ivector( 0,str-1  );  
+if( !coef  ){ /* Very unlikely */
+  fprintf(stderr,"Could not allocate memory for Bush design.\n");
+  return 0;
+}
+
+for(  i=0; i<ipow(q,str); i++  ){
+  itopoly( i,q,str-1,coef );
+  A[i][0] = coef[str-1];  
+  for(  j=0; j<ncol-1; j++  )
+    polyeval( gf, str-1, coef, j, &A[i][1+j] );
+}
+free_ivector( coef,0,str-1  );  
+return 1;
+}
+
+
+addelkempcheck( q,p,ncol )
+int  q,p,ncol;
+{
+
+if(  p==2 && q>4 ){
+  fprintf(stderr,"This Addelman-Kempthorne OA(2q^2,ncol,q,2) is only\n");
+  fprintf(stderr,"available for odd prime powers q and for even prime\n");
+  fprintf(stderr,"powers q<=4.  q=%d is not available, but a Bose Bush\n",q);
+  fprintf(stderr,"construction exists for that design.\n");
+  return 0;
+}
+
+if(  ncol > 2*q+1  ){
+  fprintf(stderr,"The Addelman-Kempthorne construction needs ncol <= 2q+1.\n");
+  fprintf(stderr,"Can't have ncol = %d with q = %d,\n",ncol,q);
+  return 0;
+}
+
+if(  ncol == 2*q+1  ){
+  fprintf(stderr,"\nWarning: The Addelman-Kempthorne construction with ncol = 2q+1\n");
+  fprintf(stderr,"has a defect.  While it is still an OA(2q^2,2q+1,q,2),\n");
+  fprintf(stderr,"there exist some pairs of rows that agree in three columns.\n");
+  fprintf(stderr,"The final column in the array is involved in all of these\n");
+  fprintf(stderr,"triple coincidences.\n\n\n");
+}
+return 1;
+}
+
+
+addelkemp( gf, A, ncol )
+/* Implement Addelman and Kempthorne's 1961 A.M.S. method with n=2 */
+struct GF *gf;
+int    ncol, **A;
+{
+int i,j,m,p,q;
+int kay,*b,*c,*k;  /* A&K notation */
+int row, col, square, ksquare, temp;
+
+p=gf->p, q=gf->q;
+
+if(  !addelkempcheck( q,p,ncol )  )return 0;
+
+b = ivector( 0,q-1 );
+c = ivector( 0,q-1 );
+k = ivector( 0,q-1 );
+
+for(  i=0; i<q; i++  ){           /* First q*q rows */
+  square = gf->times[i][i];
+  for(  j=0; j<q; j++  ){
+    row = i*q+j;
+    col = 0;
+    if( col<ncol  )A[row][col++]=j;
+    for(  m=1; m<q && col<ncol; m++  )
+      A[row][col++] = gf->plus[i][gf->times[m][j]];
+    for(  m=0; m<q && col<ncol; m++  ){
+      temp = gf->plus[j][gf->times[m][i]];
+      A[row][col++] = gf->plus[temp][square]; /* Rgt cols */
+    }
+    if( col<ncol  )A[row][col++]=i;
+  }
+}
+
+if(  p !=2  )                    /* Constants kay,b,c,k for odd p */
+  akodd(  gf,&kay,b,c,k );
+else                             /* Constants kay,b,c,k for even p */
+  akeven( gf,&kay,b,c,k );
+
+for(  i=0; i<q; i++  ){           /* Second q*q rows */
+  square = gf->times[i][i];
+  ksquare = gf->times[kay][square];
+  for(  j=0; j<q; j++  ){
+    row = q*q+i*q+j;
+    col = 0;
+    if( col<ncol  )A[row][col++]=j;
+    for(  m=1; m<q && col<ncol; m++,col++  )
+      A[row][col] = gf->plus[A[row-q*q][col]][b[m]];
+    if( col<ncol  )A[row][col++] = gf->plus[ksquare][j]; /* q+1 */
+    for(  m=1; m<q && col<ncol; m++  ){
+      temp = gf->times[i][k[m]];
+      temp = gf->plus[ksquare][temp];
+      temp = gf->plus[j][temp];
+      A[row][col++] = gf->plus[temp][c[m]];
+    }
+    if( col<ncol  )A[row][col++]=i;
+  }
+}
+
+/*for(  i=0; i<2*q*q; i++  )
+for(  j=0; j<ncol; j++  )
+  printf("%3d%s",A[i][j],j==(ncol-1)?"\n":" ");
+*/
+
+return 1;
+}
+
+
+bosebushcheck( q,p,ncol  )
+int  q,p,ncol;
+{
+
+if(  p!=2  ){
+  fprintf(stderr,"This version of Bose and Bush needs q=2^n for some n.\n");
+  return 0;
+}
+
+if(  ncol > 2*q+1  ){
+  fprintf(stderr,"The Bose-Bush construction needs ncol <= 2q+1.\n");
+  fprintf(stderr,"Can't have ncol = %d with q = %d,\n",ncol,q);
+  return 0;
+}
+
+if(  ncol == 2*q+1  ){
+  fprintf(stderr,"\nWarning: The Bose-Bush construction with ncol = 2q+1\n");
+  fprintf(stderr,"has a defect.  While it is still an OA(2q^2,2q+1,q,2),\n");
+  fprintf(stderr,"there exist some pairs of rows that agree in three columns.\n\n\n");
+}
+return 1;
+}
+
+bosebush( gf, B, ncol )
+/* Implement Bose and Bush's 1952 A.M.S. method with p=2, u=1 */
+struct GF *gf;
+int **B;
+{
+int p,q,s,irow;
+int i,j,k,mul;
+int **A;
+
+p=gf->p,   /* GF(q) used to generate design with q/2 levels */
+q=gf->q;
+s=q/2;     /* number of levels in design */
+
+if(  !bosebushcheck( s,p,ncol )  )
+  return 0;
+
+A = imatrix(0,s-1,0,q-1);
+if(  !A  ){
+  fprintf(stderr,"Unable to allocate scratch space for Bose-Bush array.\n");
+  return 0;
+}
+
+irow = 0;
+for(  i=0; i<q; i++  ){
+  for(  j=0; j<q; j++  ){
+    mul = gf->times[i][j];
+    mul = mul % s;
+    for( k=0; k<s; k++  )
+/*      A[k][j] = gf->plus[mul][k];*/
+      A[k][j] = gf->plus[mul][k];
+  }
+  for(  k=0; k<s; k++  ){
+    for( j=0; j<ncol && j<2*s+1; j++ )
+      B[irow][j] = A[k][j];
+    if(  ncol==2*s+1  )
+      B[irow][ncol-1] = i%s;
+    irow++;
+  }
+}
+free_imatrix(A,0,s-1,0,q-1);
+return 1;
+}
+  
+  
+bosebushlcheck( s,p,lam,ncol  )
+int  s,p,lam,ncol;
+{
+
+if(  !isprime(p)  ){
+  fprintf(stderr,"Bose Bush routine given a nonprime.\n");
+  return 0;
+}
+
+if(  ncol > lam*s+1  ){
+  fprintf(stderr,"The Bose-Bush construction needs ncol <= lambda*q+1.\n");
+  fprintf(stderr,"Can't have ncol = %d with lam = %d and q = %d,\n",ncol,lam,s);
+  return 0;
+}
+
+if(  ncol == lam*s+1  ){
+  fprintf(stderr,"\nWarning: The Bose-Bush construction with ncol = lambda*q+1\n");
+  fprintf(stderr,"has a defect.  While it is still an OA(lambda*q^2,lambda*q+1,q,2),\n");
+  fprintf(stderr,"it may have worse coincidence properties than\n");
+  fprintf(stderr,"OA(lambda*q^2,lambda*q+1,q,2).\n");
+}
+return 1;
+}
+
+bosebushl( gf, lam, B, ncol )
+/* Implement Bose and Bush's 1952 A.M.S. method with given lambda */
+struct GF *gf;
+int **B, lam;
+{
+int p,q,s,irow;
+int i,j,k,mul;
+int **A;
+
+p=gf->p,   /* GF(q) used to generate design with q/lam levels */
+q=gf->q;
+s=q/lam;     /* number of levels in design */
+
+if(  !bosebushlcheck( s,p,lam,ncol )  )
+  return 0;
+
+A = imatrix(0,s-1,0,q-1);
+if(  !A  ){
+  fprintf(stderr,"Unable to allocate scratch space for Bose-Bush array.\n");
+  return 0;
+}
+
+irow = 0;
+for(  i=0; i<q; i++  ){
+  for(  j=0; j<q; j++  ){
+    mul = gf->times[i][j];
+    mul = mul % s;
+    for( k=0; k<s; k++  )
+/*      A[k][j] = gf->plus[mul][k];*/
+      A[k][j] = gf->plus[mul][k];
+  }
+  for(  k=0; k<s; k++  ){
+    for( j=0; j<ncol && j<lam*s+1; j++ )
+      B[irow][j] = A[k][j];
+    if(  ncol==lam*s+1  )
+      B[irow][ncol-1] = i%s;
+    irow++;
+  }
+}
+
+
+
+
+
+free_imatrix(A,0,s-1,0,q-1);
+return 1;
+}
+  
+  
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/DDACE/src/Bose/galois.c
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/DDACE/src/Bose/galois.c	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/DDACE/src/Bose/galois.c	(revision 27955)
@@ -0,0 +1,264 @@
+#if defined(HAVE_CONFIG_H) && !defined(DISABLE_DAKOTA_CONFIG_H)
+  #include "ddace_config.h"
+#endif
+/**
+
+  These programs construct and manipulate orthogonal 
+arrays.  They were prepared by
+
+    Art Owen
+    Department of Statistics
+    Sequoia Hall
+    Stanford CA 94305
+
+  They may be freely used and shared.  This code comes
+with no warranty of any kind.  Use it at your own
+risk.
+
+  I thank the Semiconductor Research Corporation and
+the National Science Foundation for supporting this
+work.
+
+*/
+
+
+/*     Manipulation of generic Galois fields.  See gfields.c
+   for construction of specific Galois fields.  */
+
+#include <math.h>
+#include <stdio.h>
+
+#include "galois.h"
+
+/* Fix for C99 */
+extern void free_ivector(int v, int nl, int nh); /* memory.c */
+extern void free_imatrix(int m, int nrl, int nrh, int ncl, int nch); /* memory.c */
+
+/*  Glossary:
+
+       GF_poly_sum       Addition in polynomial representation
+       GF_poly_prod      Multiplication in polynomial representation
+       GF_poly2int       Convert polynomial to integer in 0..q-1
+       GF_ready          Prepare (+,*,^-1) lookup tables
+       GF_print          Print Galois field
+       GF_free           Free storage
+
+*/
+
+
+/*---------------------------------------------------------------*/
+
+GF_poly_sum( p,n,p1,p2,sum )
+int  n,p,*p1,*p2,*sum;
+{
+int i;
+
+for(  i=0; i<n; i++  )
+  sum[i] = (p1[i]+p2[i]) % p;
+}
+
+/*---------------------------------------------------------------*/
+
+GF_poly_prod( p,n,xton,p1,p2,prod )
+/*
+  Set prod = p1*p2 with coefficients modulo p, and x^n replaced
+by polynomial xton.
+*/
+int  n,p,*xton,*p1,*p2,*prod;
+{
+int i,j, *longprod;
+
+longprod = ivector(0,2*n-2);
+
+for(  i=0; i<2*n-1; i++  )
+  longprod[i] = 0;
+for(  i=0; i<n; i++  )
+for(  j=0; j<n; j++  )
+  longprod[i+j] += p1[i]*p2[j];
+for(  i=2*n-2; i>n-1; i--  )
+for(  j=0; j<n; j++  )
+  longprod[i-n+j] += xton[j]*longprod[i];
+for(  i=0; i<n; i++  )
+  prod[i] = longprod[i] % p;
+
+free_ivector(longprod,0,2*n-2);
+}
+
+/*---------------------------------------------------------------*/
+
+int GF_poly2int( p,n,poly )
+
+int n,p,*poly;
+{
+int ans, i;
+
+ans = 0;
+for(  i=n-1; i>0; i--  )
+  ans = (ans+poly[i])*p;
+ans += poly[0];
+
+return ans;
+}
+
+/*---------------------------------------------------------------*/
+
+#define GFPUNT {fprintf(stderr,"Unable to allocate space for Galois field on %d elements.\n",q);return 0;}
+
+GF_ready( gf,p,n,xton )
+/* 
+   Make ready the Galois Field
+*/
+struct GF *gf;
+int  n,p,*xton;
+{
+int i,j,q,click,*poly;
+
+poly = ivector(0,n-1);
+
+gf->n = n;
+gf->p = p;
+q = 1;
+for(  i=0; i<n; i++  )
+  q *= p;
+gf->q = q;
+gf->xton = ivector(0,n-1);        if(  !gf->xton  )GFPUNT;
+for(  i=0; i<n; i++  )
+  gf->xton[i] = xton[i];
+gf->plus = imatrix(0,q-1,0,q-1);  if(  !gf->plus  )GFPUNT;
+gf->times= imatrix(0,q-1,0,q-1);  if(  !gf->times )GFPUNT;
+gf->inv  = ivector(0,q-1);        if(  !gf->inv   )GFPUNT;
+gf->neg  = ivector(0,q-1);        if(  !gf->neg   )GFPUNT;
+gf->root = ivector(0,q-1);        if(  !gf->root  )GFPUNT;
+gf->poly = imatrix(0,q-1,0,n-1);  if(  !gf->poly  )GFPUNT;
+
+for(  i=0; i<n; i++  )
+  gf->poly[0][i] = 0;
+
+for( i=1; i<q; i++  ){
+  for( click=0; gf->poly[i-1][click]==(p-1); click++  )
+    gf->poly[i][click] = 0;
+  gf->poly[i][click] = gf->poly[i-1][click]+1;
+  for(  j=click+1; j<n; j++  )
+    gf->poly[i][j] = gf->poly[i-1][j];
+}
+
+for(  i=0; i<q; i++  )
+for(  j=0; j<q; j++  ){
+  GF_poly_sum( p,n,gf->poly[i],gf->poly[j],poly );
+  gf->plus[i][j] = GF_poly2int( p,n,poly );
+  GF_poly_prod( p,n,xton,gf->poly[i],gf->poly[j],poly );
+  gf->times[i][j] = GF_poly2int( p,n,poly );
+}
+
+for(  i=0; i<q; i++  ){
+  gf->inv[i] = -1;
+  for(  j=0; j<q;  j++  )
+    if(  gf->times[i][j]==1  )
+      gf->inv[i] = j;
+  if(  i>0 && gf->inv[i] <= 0  ){
+    fprintf(stderr,"There is something wrong with the Galois field\n");
+    fprintf(stderr,"used for q=%d.  Element %d has no reciprocal.\n",q,i);
+    return 0;
+  }
+}
+
+for(  i=0; i<q; i++  ){
+  gf->neg[i] = -1;
+  for(  j=0; j<q;  j++  )
+    if(  gf->plus[i][j]==0  )
+      gf->neg[i] = j;
+  if(  i>0 && gf->neg[i] <= 0  ){
+    fprintf(stderr,"There is something wrong with the Galois field\n");
+    fprintf(stderr,"used for q=%d.  Element %d has no negative.\n",q,i);
+    return 0;
+  }
+}
+
+for(  i=0; i<q; i++  ){
+  gf->root[i] = -1;
+  for(  j=0; j<q;  j++  )
+    if(  gf->times[j][j]==i  )
+      gf->root[i] = j;
+}
+
+/*printf("%d %d %d\n",q,p,n);*/
+
+/* Added by J Cramp 07.02.04 to fix memory leak. */
+free_ivector(poly,0,n-1);
+
+return 1;
+}
+
+/*---------------------------------------------------------------*/
+
+GF_print( gf )
+
+struct GF *gf;
+{
+int i,j,n,p,q;
+
+n=gf->n, p=gf->p, q=gf->q;
+
+if( q>999 )fprintf(stderr,"Warning q=%d will overflow print field.\n",q);
+
+printf("\nFor GF(%d) p=%d n=%d\n",q,p,n);
+printf("x**n = (");
+for( i=0; i<n-1; i++  )
+  printf("%d,",gf->xton[i]);
+printf("%d)\n",gf->xton[n-1]);
+printf("\n\nGF(%d) Polynomial coefficients:\n",q);
+for(  i=0; i<q; i++  ){
+  printf("  %3d  ",i);
+  for(  j=0; j<n; j++  )
+    printf("%3d ",gf->poly[i][j]);
+  printf("\n");
+}
+printf("\n\nGF(%d) Addition Table\n",q);
+for(  i=0; i<q; i++  ){
+  printf("  ");
+  for(  j=0; j<q; j++  )
+    printf(" %3d",gf->plus[i][j]);
+  printf("\n");
+}
+printf("\n\nGF(%d) Multiplication table\n",q);
+for(  i=0; i<q; i++  ){
+  printf("  ");
+  for(  j=0; j<q; j++  )
+    printf(" %3d",gf->times[i][j]);
+  printf("\n");
+}
+printf("\n\nGF(%d) Reciprocals\n",q);
+for(  i=1; i<q; i++  )
+  printf(" %3d %3d\n",i,gf->inv[i]);
+
+printf("\n\nGF(%d) Negatives\n",q);
+for(  i=0; i<q; i++  )
+  printf(" %3d %3d\n",i,gf->neg[i]);
+
+printf("\n\nGF(%d) Square roots\n",q);
+for(  i=0; i<q; i++  )
+  printf(" %3d %3d\n",i,gf->root[i]);
+}
+
+/*---------------------------------------------------------------*/
+
+GF_free( gf )
+/* 
+   Deallocate the Galois Field
+*/
+struct GF *gf;
+{
+/*int q,p,n;
+q = gf->q, p=gf->p, n=gf->n;*/
+
+int q,n;
+q = gf->q, n=gf->n; /* Shuts lint up */
+
+free_imatrix(gf->poly,0,q-1,0,n-1);
+free_ivector(gf->root,0,q-1);
+free_ivector(gf->neg,0,q-1);
+free_ivector(gf->inv,0,q-1);
+free_imatrix(gf->times,0,q-1,0,q-1);
+free_imatrix(gf->plus,0,q-1,0,q-1);
+free_ivector(gf->xton,0,n-1);
+}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/DDACE/src/Bose/gfields.c
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/DDACE/src/Bose/gfields.c	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/DDACE/src/Bose/gfields.c	(revision 27955)
@@ -0,0 +1,120 @@
+#if defined(HAVE_CONFIG_H) && !defined(DISABLE_DAKOTA_CONFIG_H)
+  #include "ddace_config.h"
+#endif
+/*
+
+  These programs construct and manipulate orthogonal 
+arrays.  They were prepared by
+
+    Art Owen
+    Department of Statistics
+    Sequoia Hall
+    Stanford CA 94305
+
+  They may be freely used and shared.  This code comes
+with no warranty of any kind.  Use it at your own
+risk.
+
+  I thank the Semiconductor Research Corporation and
+the National Science Foundation for supporting this
+work.
+
+*/
+
+
+/*     Construction of specific Galois fields.  See galois.c 
+    for manipulation of generic Galois fields.
+
+       To add a new Galois field GF(q)=GF(p^n) it is necessary 
+    to find the polynomial representation of x^n, and use it to
+    include another *xtn--- vector like those used below.
+
+*/
+
+#include <math.h>
+#include <stdio.h>
+
+#include "galois.h"
+
+/* Fix for C99 */
+extern int isprime(int p); /* primes.c */
+extern void primepow(int q, int *p, int *n, int *isit); /* primes.c */
+extern int GF_ready(struct GF *gf, int p, int n, int *xton); /* galois.c */
+
+/*  Glossary:
+
+       xtn2t2              Polynomial representation of x^2 in gf2t2
+       xtn2t3              Polynomial representation of x^3 in gf2t3
+       . . .               Polynomial representation of p^n in gfptn
+       xtn13t2             Polynomial representation of x^2 in gf13t2
+
+       GF_set_fields       Initialize polynomial representations
+       GF_fields_are_set   Indicates initialization done
+       GF_getfield         Construct and return GF(q) if possible
+*/
+
+#include "xtndeclare.h"
+int *xtnpt1;
+
+int GF_fields_are_set = 0;
+
+GF_set_fields()
+{
+/* Brute force set up of defining vectors, from Carmichael */
+
+/* Declare x-to-the-power-n vectors, for GFs p-to-the-n */
+
+if(   GF_fields_are_set   )
+  fprintf(stderr,"Warning: Fields being re-initialized.  Possible memory waste.\n");
+
+
+#include "xtnset.h"
+
+xtnpt1 = ivector(0,0);
+xtnpt1[0] = 0; 
+GF_fields_are_set = 1;
+}
+
+
+GF_getfield( q, gf )
+int q;
+struct GF *gf;
+{
+int *xtn;
+int p,n,ispp;
+
+if(  !GF_fields_are_set  )
+  GF_set_fields();
+
+if(  q<1  ){      /* Impossible argument */
+  fprintf(stderr,"Field must have positive number of elements.\n");
+  return 0; }
+if(  q==1 ){      /* Pointless  argument */
+  fprintf(stderr,"Field with 1 element was requested.\n");
+  return 0; }
+
+primepow( q,&p,&n,&ispp  );
+if(  !ispp  ){
+  fprintf(stderr,"q=%d is not a prime power.\n",q);
+  return 0; }
+
+xtn = NULL;
+
+#include "xtndispatch.h"
+
+if(  isprime(q)  )xtn = xtnpt1;  /* Could have tested p=q, or n=1 */
+
+if(  xtn   ){
+  if(  GF_ready( gf,p,n,xtn )  )
+    return 1;
+  else{
+    fprintf(stderr,"Construction failed for GF(%d).\n",q);
+    return 0;
+  }
+}
+else {
+  fprintf(stderr,"GF(%d) = GF(%d^%d) is not included in this program.\n",q,p,n);
+  fprintf(stderr,"To add it, consider modifying gfields.c.\n");
+  return 0;
+}
+}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/DDACE/src/Bose/oa.c
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/DDACE/src/Bose/oa.c	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/DDACE/src/Bose/oa.c	(revision 27955)
@@ -0,0 +1,664 @@
+#if defined(HAVE_CONFIG_H) && !defined(DISABLE_DAKOTA_CONFIG_H)
+  #include "ddace_config.h"
+#endif
+/**
+
+  These programs construct and manipulate orthogonal 
+arrays.  They were prepared by
+
+    Art Owen
+    Department of Statistics
+    Sequoia Hall
+    Stanford CA 94305
+
+  They may be freely used and shared.  This code comes
+with no warranty of any kind.  Use it at your own
+risk.
+
+  I thank the Semiconductor Research Corporation and
+the National Science Foundation for supporting this
+work.
+
+*/
+
+
+#include <stdio.h>
+/* for exit: */
+#include <stdlib.h>
+
+#include "oa.h"
+  
+int  **imatrix(), *ivector();
+
+/* Fix for C99 */
+extern int grow_imatrix_byrows(int ***imat, int oldrowsize, int newrowsize, int colsize); /* memory.c */
+extern void free_ivector(int *v, int nl, int nh); /* memory.c */
+extern int ipow(int a, int b); /* primes.c */
+
+/**
+
+   Glossary:
+
+    OA_put            write OA to standard output
+    OA_fput           write OA to stream
+    OA_get            get OA from standard input
+    OA_fget           get OA from stream
+
+    OA_parsein        read arguments q,nrow,ncol to OA "filter programs"
+    OA_strworkcheck   warn about large work loads in strength checking programs
+
+*/
+
+
+/*  OUTPUT    OUTPUT    OUTPUT    OUTPUT    OUTPUT    OUTPUT    OUTPUT  */
+
+OA_fput( stream,A,n,k,q )
+FILE *stream;
+int **A, n, k, q;
+{
+int   i,j;
+char* format;
+
+format = "%d%s";
+if(  q < 1000  )format = "%3d%s";
+if(  q < 100   )format = "%2d%s";
+if(  q < 10    )format = "%1d%s";
+if(  q < 0     )format = "%d%s";
+
+for(  i=0; i<n; i++  )
+for(  j=0; j<k; j++  )
+  fprintf(stream,format,A[i][j],(j==k-1)?"\n":" ");
+}
+
+OA_put( A,n,k,q )
+int **A, n, k, q;
+{
+OA_fput( stdout,A,n,k,q );
+}
+
+/*  INPUT    INPUT    INPUT    INPUT    INPUT    INPUT    INPUT    INPUT  */
+
+OA_fget( stream,A,n,k,q,eof_assert )
+FILE *stream;
+int **A, n, k, q, eof_assert;
+{
+int   i,j;
+for( i=0; i<n; i++ )
+for( j=0; j<k; j++ )
+  if( fscanf(stream,"%d",&A[i][j]) == EOF  ){
+    fprintf(stderr,"Unexpected end of input encountered.  Wanted to read\n");
+    fprintf(stderr,"%d rows of %d cols.  Failed trying for row %d, col %d.\n",
+      n,k,i,j);
+    return 0;
+  }else if(  A[i][j] >= q ){
+    fprintf(stderr,"Invalid array element %d.  All elements should be\n",
+      A[i][j]);
+    fprintf(stderr,"strictly less than q = %d.\n",q);
+    return 0;
+  }else if(  A[i][j] <0   ){
+    fprintf(stderr,"Invalid array element %d, should be >= 0.\n",A[i][j]);
+    return 0;
+  }
+
+if(  eof_assert  &&  fscanf(stream,"%d",&eof_assert) != EOF  ){
+    fprintf(stderr,"Input has more integers than expected.\n");
+    fprintf(stderr,"Perhaps the number of rows and/or columns is incorrect.\n");
+    return 0;
+  }
+return 1;
+}
+
+OA_get( A,n,k,q, eof_assert )
+int **A, n, k, q, eof_assert;
+{
+return OA_fget( stdin,A,n,k,q,eof_assert );
+}
+
+/*  READ    READ    READ    READ    READ    READ    READ    READ    READ  */
+
+/*  Read array and determine dimensions.   Inspired by approach
+taken in Xgobi.  */
+
+#define MAXK 5000
+#define ROWINC 1000
+int line0[ MAXK ];
+
+OA_fread( stream,A,n,k,q )
+FILE *stream;
+int ***A, *n, *k, *q;
+{
+int   i, j;
+char  c;
+
+*k = 0;
+
+while( (c = getc(stream)) != '\n'  ){
+  if(  c=='\t' || c==' '  )
+    ;
+  else{
+    ungetc(c,stream);
+    if(  *k >= MAXK  ){
+      fprintf(stderr,"Error: Input appears to have more than %d columns.\n",*k);
+      fprintf(stderr,"If such large input is desired, increase MAXK in oa.c\n");
+      fprintf(stderr,"and re-install the software.\n");
+      return 0;
+    }
+    if(  fscanf(stream,"%d",&line0[(*k)++]) <= 0  ){
+      fprintf(stderr,"Error: no newline character found.  Could be empty\n");
+      fprintf(stderr,"input or matrix all on one line.\n");
+      return 0;
+    }
+  }
+}
+
+*A = imatrix( 0,ROWINC-1, 0,*k-1 );
+if(  !(*A)  ){
+  fprintf(stderr,"Unable to allocate memory to read the array.\n");
+  return 0;
+}
+
+*n = 0;
+for(  j=0; j<*k; j++  )
+  A[0][*n][j] = line0[j];
+
+while( 1 ){
+  (*n)++;
+  if(  (*n % ROWINC)==0  )
+    if(  !grow_imatrix_byrows( A, (*n), (*n)+ROWINC, *k )  ){
+      fprintf(stderr,"Unable to allocate extra memory for row %d of the array.\n"
+	      ,*n);
+      return 0;
+    }
+
+  if(  fscanf(stream,"%d",&(A[0][*n][0])) == EOF  )
+    break;
+
+  for(  j=1; j<*k; j++  )
+    if( fscanf(stream,"%d",&(A[0][*n][j])) == EOF  ){
+      fprintf(stderr,"Unexpected end of input encountered.  Row %d only has\n",*n);
+      fprintf(stderr,"%d elements of %d expected.\n",j,*k);
+      return 0;
+    }
+}
+*q = 0;                   /* Assume that q = max(A)+1  */
+
+for(  i=0; i<*n; i++  )
+for(  j=0; j<*k; j++  )
+  if(  A[0][i][j] > *q  )
+    *q = A[0][i][j];
+*q = *q +1;
+
+return 1;
+}
+
+OA_read( A,n,k,q )
+int ***A, *n, *k, *q;
+{
+return OA_fread( stdin,A,n,k,q );
+}
+
+/*  PARSE    PARSE    PARSE    PARSE    PARSE    PARSE    PARSE    PARSE  */
+
+OA_parsein( argc,argv, q,nrow,ncol, A )
+int  argc;
+char *argv[];
+int *q, *nrow, *ncol, ***A;
+{
+if(  argc<=1  ){
+  if(  !OA_read( A,nrow,ncol,q )  ){
+    fprintf(stderr,"Fatal error while reading the array.\n");
+    exit(1);
+  }
+}
+else if( argc==2  ){
+  sscanf(argv[1],"%d",q);
+  scanf("%d %d",nrow,ncol);
+}else if( argc==3  ){
+  sscanf(argv[1],"%d",q);
+  sscanf(argv[2],"%d",nrow);
+  scanf("%d",ncol);
+}else{
+  sscanf(argv[1],"%d",q);
+  sscanf(argv[2],"%d",nrow);
+  sscanf(argv[3],"%d",ncol);
+}
+
+if(  *q<1  ){
+  fprintf(stderr,"Array has only %d symbol(s).  At least one\n",*q);
+  fprintf(stderr,"symbol is necessary in an orthogonal array.\n");
+  exit(1);
+}
+
+if(  *ncol<1  ){
+  fprintf(stderr,"Array has only %d column(s).  At least one\n",*ncol);
+  fprintf(stderr,"column is necessary in an orthogonal array.\n");
+  exit(1);
+}
+
+if(  *nrow<1  ){
+  fprintf(stderr,"Array has only %d rows.  At least one\n",*nrow);
+  fprintf(stderr,"row is necessary in an orthogonal array.\n");
+  exit(1);
+}
+
+
+if(  argc >1  ){
+  *A = imatrix( 0,*nrow-1,0,*ncol-1 );
+  if(  !(*A)  ){
+    fprintf(stderr,"The array is too large (%d by %d) to fit in memory.\n",nrow,ncol);
+    exit(1);
+  }
+  
+  if(  !OA_get( *A,*nrow,*ncol,*q, 1 )  ){/* Read 'em all */
+    fprintf(stderr,"Read error getting the orthogonal array.\n");
+    exit(1);
+  }
+}
+}
+
+
+/*  WORK    WORK    WORK    WORK    WORK    WORK    WORK    WORK    WORK  */
+
+OA_strworkcheck( work,str )
+double work;
+int    str;
+{
+if(  work > BIGWORK  ){
+  fprintf(stderr,"If the array has strength %d, %g comparisons will\n",
+	  str, work);
+  fprintf(stderr,"be required to prove it.  This might take a long time.\n");
+  fprintf(stderr,"This warning is triggered when more than %d comparisons\n",
+	  BIGWORK);
+  fprintf(stderr,"are required.  To avoid this warning increase BIGWORK in\n");
+  fprintf(stderr,"oa.h.  Intermediate results will be printed.\n\n");
+  fflush(stderr);
+}else if(  work > MEDWORK  ){
+  fprintf(stderr,"Since more than %d comparisons may be required to\n",MEDWORK);
+  fprintf(stderr,"to check whether the array has strength %d, intermediate\n",
+	  str);
+  fprintf(stderr,"results will be printed.  To avoid this warning increase\n");
+  fprintf(stderr,"MEDWORK in oa.h\n\n");
+  fflush(stderr);
+}
+}
+
+
+/*  STRENGTH    STRENGTH    STRENGTH    STRENGTH    STRENGTH  */
+
+/* Check strength 0 */
+OA_str0( q,nrow,ncol,A,verbose   )
+int      q,nrow,ncol,**A, verbose;
+{
+int  i, j1;
+
+for(  j1=0; j1<ncol; j1++  )
+for(  i=0; i<nrow; i++  )
+  if(  A[i][j1] < 0  || A[i][j1] >= q  ){
+    if(  verbose >= 2  ){
+      printf("Array is not even of strength 0, that is there are elements\n");
+      // BMA 20141204; added q-1 as argument to silence compiler warning
+      //printf("other than integers 0 through %d inclusive in it.\n");
+      printf("other than integers 0 through %d inclusive in it.\n", (q-1));
+      printf("The first exception is A[%d][%d] = %d.\n",i,j1,A[i][j1]);
+    }
+    return 0;
+  }
+if(  verbose >=2  )
+  printf("The array has strength (at least) 0.\n");
+return 1;
+}
+
+
+/* Check strength 1 */
+OA_str1( q,nrow,ncol,A,verbose   )
+int      q,nrow,ncol,**A, verbose;
+{
+int     i, j1, q1;
+int     lambda, count;
+double  work;
+
+if(  nrow%q  ){
+  if(  verbose >= 2  ){
+    printf("The array cannot have strength 1, because the number\n");
+    printf("of rows %d is not a multiple of q = %d.\n",nrow,q);
+  }
+  return 0;
+}
+
+lambda = nrow/q;
+work = nrow * ncol * q * 1.0;
+OA_strworkcheck( work,1 );
+for(  j1=0; j1<ncol; j1++  ){
+  for(  q1=0; q1<q; q1++  ){
+    count = 0;
+    for( i=0; i<nrow; i++  )
+      count += (A[i][j1]==q1);
+    if(  count != lambda   ){
+      if(  verbose >= 2  ){
+	printf("Array is not of strength 1.  The first violation arises for\n");
+	printf("the number of times A[,%d] = %d.\n",
+	       j1, q1);
+	printf("This happened in %d rows, it should have happened in %d rows.\n",
+	       count, lambda);
+      }
+      return 0;
+    }
+  }
+if(  work > MEDWORK && verbose > 0  )
+  fprintf(stderr,"No violation of strength 1 involves column %d.\n",j1);
+}
+if(  verbose >=2  )
+  printf("The array has strength (at least) 1.\n");
+return 1;
+}
+
+/* Check strength 2  */
+OA_str2( q,nrow,ncol,A,verbose   )
+int      q,nrow,ncol,**A, verbose;
+{
+int  i, j1,j2, q1,q2;
+int  lambda, count;
+double  work;
+
+if(  ncol<2  ){
+  if(  verbose > 0 ){
+    fprintf(stderr,"Array has only %d column(s).  At least two\n",ncol);
+    fprintf(stderr,"columns are necessary for strength 2 to make sense.\n");
+  }
+  return 0;
+}
+if(  nrow % (q*q)  ){
+  if(  verbose > 0 ){
+    fprintf(stderr,"The array cannot have strength 2, because the number\n");
+    fprintf(stderr,"of rows %d is not a multiple of q^2 = %d^2 = %d.\n",nrow,q,q*q);
+  }
+  return 0;
+}
+
+lambda = nrow/(q*q);
+work = nrow*ncol*(ncol-1.0)*q*q/2.0;
+OA_strworkcheck( work,2 );
+
+for(  j1=0;    j1<ncol; j1++  ){
+for(  j2=j1+1; j2<ncol; j2++  ){
+  for(  q1=0; q1<q; q1++  )
+  for(  q2=0; q2<q; q2++  ){
+    count = 0;
+    for( i=0; i<nrow; i++  )
+      count += (A[i][j1]==q1)&&(A[i][j2]==q2);
+    if(  count != lambda   ){
+      if(  verbose >= 2 ){
+	printf("Array is not of strength 2.  The first violation arises for\n");
+	printf("the number of times (A[,%d],A[,%d]) = (%d,%d).\n",
+	       j1,j2, q1,q2 );
+	printf("This happened in %d rows, it should have happened in %d rows.\n",
+	       count, lambda);
+      }
+      return 0;
+    }
+  }
+}
+if(  work > MEDWORK && verbose > 0 )
+  fprintf(stderr,"No violation of strength 2 involves column %d.\n",j1);
+}
+
+if(  verbose >=2  )
+  printf("The array has strength (at least) 2.\n");
+return 1;
+}
+
+
+
+/* Check strength 3  */
+OA_str3( q,nrow,ncol,A,verbose   )
+int      q,nrow,ncol,**A, verbose;
+{
+int  i, j1,j2,j3, q1,q2,q3;
+int  lambda, count;
+double  work;
+
+if(  ncol<3  ){
+  if(  verbose > 0 ){
+    fprintf(stderr,"Array has only %d column(s).  At least three\n",ncol);
+    fprintf(stderr,"columns are necessary for strength 3 to make sense.\n");
+  }
+  return 0;
+}
+if(  nrow % (q*q*q)  ){
+  if(  verbose > 0 ){
+    fprintf(stderr,"The array cannot have strength 3, because the number\n");
+    fprintf(stderr,"of rows %d is not a multiple of q^3 = %d^3 = %d.\n",nrow,q,q*q*q);
+  }
+  return 0;
+}
+
+lambda = nrow/(q*q*q);
+work = nrow*ncol*(ncol-1.0)*(ncol-2.0)*q*q*q/6.0;
+OA_strworkcheck( work,3 );
+
+for(  j1=0;    j1<ncol; j1++  ){
+for(  j2=j1+1; j2<ncol; j2++  )
+for(  j3=j2+1; j3<ncol; j3++  ){
+  for(  q1=0; q1<q; q1++  )
+  for(  q2=0; q2<q; q2++  )
+  for(  q3=0; q3<q; q3++  ){
+    count = 0;
+    for( i=0; i<nrow; i++  )
+      count += (A[i][j1]==q1)&&(A[i][j2]==q2)&&(A[i][j3]==q3);
+    if(  count != lambda   ){
+      if(  verbose >= 2 ){
+	printf("Array is not of strength 3.  The first violation arises for\n");
+	printf("the number of times (A[,%d],A[,%d],A[,%d]) = (%d,%d,%d).\n",
+	       j1,j2,j3,  q1,q2,q3 );
+	printf("This happened in %d rows, it should have happened in %d rows.\n",
+	       count, lambda);
+      }
+      return 0;
+    }
+  }
+}
+if(  work > MEDWORK && verbose > 0 )
+  fprintf(stderr,"No violation of strength 3 involves column %d.\n",j1);
+}
+if(  verbose >=2  )
+  printf("The array has strength (at least) 3.\n");
+return 1;
+}
+
+
+/* Check strength 4  */
+OA_str4( q,nrow,ncol,A,verbose   )
+int      q,nrow,ncol,**A, verbose;
+{
+int  i, j1,j2,j3,j4, q1,q2,q3,q4;
+int  lambda, count;
+double  work;
+
+if(  ncol<4  ){
+  if(  verbose > 0 ){
+    fprintf(stderr,"Array has only %d column(s).  At least four\n",ncol);
+    fprintf(stderr,"columns are necessary for strength 4 to make sense.\n");
+  }
+  return 0;
+}
+if(  nrow % (q*q*q*q)  ){
+  if(  verbose > 0 ){
+    fprintf(stderr,"The array cannot have strength 4, because the number\n");
+    fprintf(stderr,"of rows %d is not a multiple of q^4 = %d^4 = %d.\n",nrow,q,q*q*q*q);
+  }
+  return 0;
+}
+
+lambda = nrow/(q*q*q*q);
+work = nrow*ncol*(ncol-1.0)*(ncol-2.0)*(ncol-3.0)*q*q*q*q/24.0;
+OA_strworkcheck( work,4 );
+
+for(  j1=0;    j1<ncol; j1++  ){
+for(  j2=j1+1; j2<ncol; j2++  )
+for(  j3=j2+1; j3<ncol; j3++  )
+for(  j4=j3+1; j4<ncol; j4++  ){
+  for(  q1=0; q1<q; q1++  )
+  for(  q2=0; q2<q; q2++  )
+  for(  q3=0; q3<q; q3++  )
+  for(  q4=0; q4<q; q4++  ){
+    count = 0;
+    for( i=0; i<nrow; i++  )
+      count += (A[i][j1]==q1)&&(A[i][j2]==q2)&&(A[i][j3]==q3)&&(A[i][j4]==q4);
+    if(  count != lambda  ){
+      if(  verbose >= 2  ){
+	printf("Array is not of strength 4.  The first violation arises for\n");
+	printf("the number of times (A[,%d],A[,%d],A[,%d],A[,%d]) = (%d,%d,%d,%d).\n",
+	       j1,j2,j3,j4, q1,q2,q3,q4 );
+	printf("This happened in %d rows, it should have happened in %d rows.\n",
+	       count, lambda);
+      }
+      return 0;
+    }
+    }
+  }
+}
+if(  work > MEDWORK && verbose > 0 )
+  fprintf(stderr,"No violation of strength 4 involves column %d.\n",j1);
+
+if(  verbose >=2  )
+  printf("The array has strength (at least) 4.\n");
+return 1;
+}
+
+
+/* Check strength t  */
+OA_strt( q,nrow,ncol,A,t,verbose   )
+int      q,nrow,ncol,**A,t,verbose;
+{
+int  row, i, ic, iq, *clist, *qlist, ctuples, qtuples;
+int  lambda, count, match;
+double  work;
+
+if(  t<0  ){
+  if(  verbose > 0 ){
+    fprintf(stderr,"Don't know how to verify strength %d.  It doesn't\n",t);
+    fprintf(stderr,"make sense.\n");
+  }
+  return 0;
+}
+if(  ncol<t  ){
+  if(  verbose > 0 ){
+    fprintf(stderr,"Array has only %d column(s).  At least %d\n",ncol,t);
+    fprintf(stderr,"columns are necessary for strength %d to make sense.\n",t);
+  }
+  return 0;
+}
+if(  t==0  )
+  return OA_str0( q,nrow,ncol,A,verbose );
+if(  nrow % ipow(q,t)  ){
+  if(  verbose > 0 ){
+    fprintf(stderr,"The array cannot have strength %d, because the number\n",t);
+    fprintf(stderr,"of rows %d is not a multiple of q^%d = %d^%d = %d.\n",
+	    nrow,t,q,t,ipow(q,t));
+  }
+  return 0;
+}
+
+lambda = nrow/ipow(q,t);
+work   = nrow*ipow(q,t);
+ctuples = 1;
+
+clist = ivector( 0,t-1 );
+qlist = ivector( 0,t-1 );
+
+for(  i=0; i<t; i++  ){
+  work *= (ncol-i)/(i+1.0);
+  ctuples *= ncol-i;
+  qlist[i] = 0;
+  clist[i] = i;
+}
+for(  i=0; i<t; i++  )
+  ctuples /= (i+1);
+qtuples = ipow(q,t);
+
+OA_strworkcheck( work,t );
+
+for(  ic=0; ic<ctuples; ic++  ){   /* Loop over ordered tuples of columns */
+/*  for( i=0; i<t; i++  )
+    printf("%s %d%s",(i==0)?"Col":"",clist[i],(i==t-1)?"\n":" ");*/
+
+  for(  iq=0; iq<qtuples;   iq++  ){ /* Loop over unordered tuples of symbols */
+/*    for( i=0; i<t; i++  )
+      printf("  %s %d%s",(i==0)?"Sym":"",qlist[i],(i==t-1)?"\n":" ");*/
+    count = 0;
+    for( row=0; row<nrow; row++  ){
+      match = 1;
+      for(  i=0; i<t && match; i++  )
+	match *= A[row][clist[i]] == qlist[i];
+      count += match;
+    }
+    if(  count != lambda  ){
+      if(  verbose >= 2  ){
+	printf("Array is not of strength %d.  The first violation arises for\n",t);
+	printf("the number of times (");
+	for(  i=0; i<t; i++  )
+	  printf("A[,%d]%s",clist[i],(i==t-1)?")":",");
+	printf(" = (");
+	for(  i=0; i<t; i++  )
+	  printf("%d%s",qlist[i],(i==t-1)?").\n":",");
+	printf("This happened in %d rows, it should have happened in %d rows.\n",
+	       count, lambda);
+      }
+      return 0;
+    }
+    for( i=t-1; i>=0; i--  ){
+      qlist[i] = (qlist[i]+1) % q;
+      if(  qlist[i]  )break;
+    }
+  }
+
+  for( i= t-1; i>=0; i--  ){
+    clist[i] = (clist[i]+1) % (ncol+i-t+1);
+    if(  clist[i]  )break;
+  }
+
+  if(  work > MEDWORK && verbose > 0 && (t==1||t>1 && clist[1]==0)  )
+    fprintf(stderr,"No violation of strength %d involves column %d.\n",
+	    t,(clist[0]+ncol-1)%ncol);
+
+  for( i=1; i< t; i++  )
+    if(  clist[i] <= clist[i-1]  )
+      clist[i] = clist[i-1]+1;
+}
+
+if(  verbose >=2  )
+  printf("The array has strength (at least) %d.\n",t);
+
+/* Added by J Cramp on 07.02.04 to
+ * fix memory leak problems. */
+free_ivector(clist,0,t-1);
+free_ivector(qlist,0,t-1);
+
+return 1;
+}
+
+void OA_strength( q,nrow,ncol,A,str,verbose )
+int  q,nrow,ncol,**A,*str, verbose;
+/*
+     Calculate and return the strength of the array A.
+
+verbose = 0   =>   No printed output
+verbose = 1   =>   Only stderr output
+verbose = 2   =>   Output to both stdout and stderr
+
+*/
+{
+*str = -1;
+
+if(  OA_str0( q,nrow,ncol,A,verbose)   )
+  *str = 0;
+else
+  return;
+if(  OA_str1( q,nrow,ncol,A,verbose)   )
+  *str = 1;
+else
+  return;
+while( OA_strt( q,nrow,ncol,A,*str+1,verbose )  )
+  (*str)++;
+return;
+}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/nidr/nidr-scanner.c
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/nidr/nidr-scanner.c	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/nidr/nidr-scanner.c	(revision 27955)
@@ -0,0 +1,2063 @@
+/* A lexical scanner generated by flex*/
+
+/* Scanner skeleton version:
+ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
+ */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+
+#include <stdio.h>
+
+
+/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+#ifdef c_plusplus
+#ifndef __cplusplus
+#define __cplusplus
+#endif
+#endif
+
+
+#ifdef __cplusplus
+
+#include <stdlib.h>
+
+/* Use prototypes in function declarations. */
+#define YY_USE_PROTOS
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else	/* ! __cplusplus */
+
+#if __STDC__
+
+#define YY_USE_PROTOS
+#define YY_USE_CONST
+
+#endif	/* __STDC__ */
+#endif	/* ! __cplusplus */
+
+#ifdef __TURBOC__
+ #pragma warn -rch
+ #pragma warn -use
+#include <io.h>
+#include <stdlib.h>
+#define YY_USE_CONST
+#define YY_USE_PROTOS
+#endif
+
+#ifdef YY_USE_CONST
+#define nidrconst const
+#else
+#define nidrconst
+#endif
+
+
+#ifdef YY_USE_PROTOS
+#define YY_PROTO(proto) proto
+#else
+#define YY_PROTO(proto) ()
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN nidr_start = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START ((nidr_start - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE nidrrestart( nidrin )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#define YY_BUF_SIZE 16384
+
+typedef struct nidr_buffer_state *YY_BUFFER_STATE;
+
+extern int nidrleng;
+extern FILE *nidrin, *nidrout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+/* The funky do-while in the following #define is used to turn the definition
+ * int a single C statement (which needs a semi-colon terminator).  This
+ * avoids problems with code like:
+ *
+ * 	if ( condition_holds )
+ *		nidrless( 5 );
+ *	else
+ *		do_something_else();
+ *
+ * Prior to using the do-while the compiler would get upset at the
+ * "else" because it interpreted the "if" statement as being all
+ * done when it reached the ';' after the nidrless() call.
+ */
+
+/* Return all but the first 'n' matched characters back to the input stream. */
+
+#define nidrless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up nidrtext. */ \
+		*nidr_cp = nidr_hold_char; \
+		YY_RESTORE_YY_MORE_OFFSET \
+		nidr_c_buf_p = nidr_cp = nidr_bp + n - YY_MORE_ADJ; \
+		YY_DO_BEFORE_ACTION; /* set up nidrtext again */ \
+		} \
+	while ( 0 )
+
+#define unput(c) nidrunput( c, nidrtext_ptr )
+
+/* Some routines like nidr_flex_realloc() are emitted as static but are
+   not called by all lexers. This generates warnings in some compilers,
+   notably GCC. Arrange to suppress these. */
+#ifdef __GNUC__
+#define YY_MAY_BE_UNUSED __attribute__((unused))
+#else
+#define YY_MAY_BE_UNUSED
+#endif
+
+/* The following is because we cannot portably get our hands on size_t
+ * (without autoconf's help, which isn't available because we want
+ * flex-generated scanners to compile on their own).
+ */
+typedef unsigned int nidr_size_t;
+
+
+struct nidr_buffer_state
+	{
+	FILE *nidr_input_file;
+
+	char *nidr_ch_buf;		/* input buffer */
+	char *nidr_buf_pos;		/* current position in input buffer */
+
+	/* Size of input buffer in bytes, not including room for EOB
+	 * characters.
+	 */
+	nidr_size_t nidr_buf_size;
+
+	/* Number of characters read into nidr_ch_buf, not including EOB
+	 * characters.
+	 */
+	int nidr_n_chars;
+
+	/* Whether we "own" the buffer - i.e., we know we created it,
+	 * and can realloc() it to grow it, and should free() it to
+	 * delete it.
+	 */
+	int nidr_is_our_buffer;
+
+	/* Whether this is an "interactive" input source; if so, and
+	 * if we're using stdio for input, then we want to use getc()
+	 * instead of fread(), to make sure we stop fetching input after
+	 * each newline.
+	 */
+	int nidr_is_interactive;
+
+	/* Whether we're considered to be at the beginning of a line.
+	 * If so, '^' rules will be active on the next match, otherwise
+	 * not.
+	 */
+	int nidr_at_bol;
+
+	/* Whether to try to fill the input buffer when we reach the
+	 * end of it.
+	 */
+	int nidr_fill_buffer;
+
+	int nidr_buffer_status;
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+	/* When an EOF's been seen but there's still some text to process
+	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+	 * shouldn't try reading from the input source any more.  We might
+	 * still have a bunch of tokens to match, though, because of
+	 * possible backing-up.
+	 *
+	 * When we actually see the EOF, we change the status to "new"
+	 * (via nidrrestart()), so that the user can continue scanning by
+	 * just pointing nidrin at a new input file.
+	 */
+#define YY_BUFFER_EOF_PENDING 2
+	};
+
+static YY_BUFFER_STATE nidr_current_buffer = 0;
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ */
+#define YY_CURRENT_BUFFER nidr_current_buffer
+
+
+/* nidr_hold_char holds the character lost when nidrtext is formed. */
+static char nidr_hold_char;
+
+static int nidr_n_chars;		/* number of characters read into nidr_ch_buf */
+
+
+int nidrleng;
+
+/* Points to current character in buffer. */
+static char *nidr_c_buf_p = (char *) 0;
+static int nidr_init = 1;		/* whether we need to initialize */
+static int nidr_start = 0;	/* start state number */
+
+/* Flag which is used to allow nidrwrap()'s to do buffer switches
+ * instead of setting up a fresh nidrin.  A bit of a hack ...
+ */
+static int nidr_did_buffer_switch_on_eof;
+
+void nidrrestart YY_PROTO(( FILE *input_file ));
+
+void nidr_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
+void nidr_load_buffer_state YY_PROTO(( void ));
+YY_BUFFER_STATE nidr_create_buffer YY_PROTO(( FILE *file, int size ));
+void nidr_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+void nidr_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
+void nidr_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
+#define YY_FLUSH_BUFFER nidr_flush_buffer( nidr_current_buffer )
+
+YY_BUFFER_STATE nidr_scan_buffer YY_PROTO(( char *base, nidr_size_t size ));
+YY_BUFFER_STATE nidr_scan_string YY_PROTO(( nidrconst char *nidr_str ));
+YY_BUFFER_STATE nidr_scan_bytes YY_PROTO(( nidrconst char *bytes, int len ));
+
+static void *nidr_flex_alloc YY_PROTO(( nidr_size_t ));
+static void *nidr_flex_realloc YY_PROTO(( void *, nidr_size_t )) YY_MAY_BE_UNUSED;
+static void nidr_flex_free YY_PROTO(( void * ));
+
+#define nidr_new_buffer nidr_create_buffer
+
+#define nidr_set_interactive(is_interactive) \
+	{ \
+	if ( ! nidr_current_buffer ) \
+		nidr_current_buffer = nidr_create_buffer( nidrin, YY_BUF_SIZE ); \
+	nidr_current_buffer->nidr_is_interactive = is_interactive; \
+	}
+
+#define nidr_set_bol(at_bol) \
+	{ \
+	if ( ! nidr_current_buffer ) \
+		nidr_current_buffer = nidr_create_buffer( nidrin, YY_BUF_SIZE ); \
+	nidr_current_buffer->nidr_at_bol = at_bol; \
+	}
+
+#define YY_AT_BOL() (nidr_current_buffer->nidr_at_bol)
+
+typedef unsigned char YY_CHAR;
+FILE *nidrin = (FILE *) 0, *nidrout = (FILE *) 0;
+typedef int nidr_state_type;
+extern char *nidrtext;
+#define nidrtext_ptr nidrtext
+
+static nidr_state_type nidr_get_previous_state YY_PROTO(( void ));
+static nidr_state_type nidr_try_NUL_trans YY_PROTO(( nidr_state_type current_state ));
+static int nidr_get_next_buffer YY_PROTO(( void ));
+static void nidr_fatal_error YY_PROTO(( nidrconst char msg[] ));
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up nidrtext.
+ */
+#define YY_DO_BEFORE_ACTION \
+	nidrtext_ptr = nidr_bp; \
+	nidrtext_ptr -= nidr_more_len; \
+	nidrleng = (int) (nidr_cp - nidrtext_ptr); \
+	nidr_hold_char = *nidr_cp; \
+	*nidr_cp = '\0'; \
+	nidr_c_buf_p = nidr_cp;
+
+#define YY_NUM_RULES 27
+#define YY_END_OF_BUFFER 28
+static nidrconst short int nidr_accept[125] =
+    {   0,
+        0,    0,    0,    0,   21,   21,   18,   18,   28,    6,
+        5,    2,   25,    4,    3,    3,    6,   16,   12,    2,
+       15,   25,   13,   26,   16,    8,   16,    9,   14,    7,
+       11,   11,   11,   16,   21,   21,   22,   22,   21,   21,
+       18,   18,   19,   18,   19,   18,    5,   25,    0,   25,
+       25,    4,   24,    3,    3,    0,   23,   12,    8,    7,
+        0,    9,    0,    0,   10,    9,    9,    9,    7,   11,
+       11,   11,   21,   21,   21,   21,   20,   21,   21,   21,
+       18,   18,   18,   18,   18,   18,   17,   18,   24,    3,
+        0,    0,   10,   10,    9,   10,    9,    9,   10,   10,
+
+       10,   21,   18,    1,   10,   10,   10,   10,   10,    9,
+       10,   11,    0,   10,   10,   11,    0,   11,    0,   11,
+        0,   10,   10,    0
+    } ;
+
+static nidrconst int nidr_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    2,    1,    4,    5,    1,    1,    1,    6,    1,
+        1,    7,    8,    9,   10,   11,    1,   12,   12,   12,
+       12,   12,   12,   12,   12,   12,   12,    7,   13,    1,
+       14,    1,    1,   15,   16,   17,   17,   17,   18,   19,
+       17,   17,   20,   17,   17,   17,   17,   21,   17,   17,
+       17,   17,   17,   22,   17,   17,   17,   23,   24,   17,
+        1,   25,    1,    1,   26,    1,   16,   17,   17,   17,
+
+       18,   19,   17,   17,   20,   17,   17,   17,   17,   21,
+       17,   17,   17,   17,   17,   22,   17,   17,   17,   23,
+       24,   17,    1,    1,    1,   15,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+static nidrconst int nidr_meta[27] =
+    {   0,
+        1,    1,    2,    3,    1,    4,    1,    5,    1,    6,
+        6,    6,    1,    1,    7,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,    1,    6
+    } ;
+
+static nidrconst short int nidr_base[137] =
+    {   0,
+        0,    0,   26,    0,   51,   75,   99,  123,  263,  264,
+       56,  264,   57,  264,    0,  239,   57,  264,  147,  264,
+      264,  236,  264,  264,  162,  264,  248,   53,  264,  257,
+        0,  237,  241,   64,    0,   67,  264,  252,   59,   71,
+        0,   81,  264,   62,  249,   86,   88,  229,   92,  228,
+       86,  227,  249,    0,  230,   94,  264,    0,  264,  247,
+      236,   96,  226,  230,   91,  233,   98,  107,  242,    0,
+      224,  212,    0,  116,  108,  120,  264,  126,  226,  129,
+        0,  132,  114,  133,  121,  224,  264,  140,  217,  191,
+      193,  178,  169,  150,  168,  126,  155,  167,  166,  157,
+
+        0,  174,  173,    0,  151,  264,  158,  157,  156,  147,
+      143,  133,  132,  138,  135,  125,  120,   76,   63,   51,
+       33,    0,  264,  264,  183,  190,  197,  199,  202,  203,
+      210,  217,  224,  231,  234,  236
+    } ;
+
+static nidrconst short int nidr_def[137] =
+    {   0,
+      124,    1,  124,    3,  125,  125,  126,  126,  124,  124,
+      124,  124,  127,  124,  128,  128,  124,  124,  124,  124,
+      124,  127,  124,  124,  124,  124,  124,  129,  124,  124,
+      130,  130,  130,  124,  131,  131,  124,  124,  132,  131,
+      133,  133,  124,  134,  124,  133,  124,  127,  124,  127,
+      127,  127,  124,  128,  128,  124,  124,   19,  124,  124,
+      124,  129,  124,  124,  135,  129,  136,  129,  124,  130,
+      130,  130,  131,  131,  132,  131,  124,  132,  131,  131,
+      133,  133,  134,  133,  134,  133,  124,  133,  124,  128,
+      124,  124,  135,  135,  136,  135,  136,  129,  135,  130,
+
+      130,  131,  133,  128,  124,  124,  135,  135,  135,  136,
+      135,  130,  124,  135,  135,  130,  124,  130,  124,  130,
+      124,  130,  124,    0,  124,  124,  124,  124,  124,  124,
+      124,  124,  124,  124,  124,  124
+    } ;
+
+static nidrconst short int nidr_nxt[291] =
+    {   0,
+       10,   11,   12,   10,   13,   10,   10,   10,   10,   10,
+       10,   10,   14,   10,   10,   15,   15,   16,   15,   15,
+       15,   15,   15,   15,   17,   10,   18,   19,   20,   21,
+       22,   23,   24,   25,   26,   25,   27,   28,   29,   30,
+       18,   31,   31,   31,   31,   32,   33,   31,   31,   31,
+       34,   18,   36,   37,   38,   39,  123,   47,   56,   57,
+       48,   51,   50,   67,   62,   56,   57,   50,   74,   52,
+       68,   75,   80,   57,  122,   40,   36,   37,   38,   39,
+       49,   53,   82,   79,  121,   83,   86,   88,   57,   47,
+       51,   76,   48,   56,   57,   56,   57,  120,   52,   40,
+
+       42,   43,   65,   44,   45,   84,   67,   62,   94,   96,
+       53,   50,   49,   68,   98,   97,   98,   74,   99,   50,
+       75,   80,   57,   46,   42,   43,   50,   44,   45,   50,
+       80,   57,   79,   82,   88,   57,   83,   96,   86,  119,
+       76,   88,   57,  109,  118,   86,  115,   46,   58,  115,
+       79,   48,  117,  116,  111,   59,   84,  107,  111,  107,
+       60,  108,  110,  114,  110,  114,  111,  115,  108,  108,
+      113,   49,   61,   62,  103,  102,  112,   99,   99,  124,
+      124,   63,   64,   35,   35,   35,   35,   35,   35,   35,
+       41,   41,   41,   41,   41,   41,   41,   50,  106,   50,
+
+       50,   50,   50,   50,   54,   54,   66,   66,   70,   70,
+       73,  105,  104,   73,   73,   73,   73,   78,   89,   78,
+       78,   78,   78,   78,   81,  103,   81,  102,   81,   81,
+       81,   85,  101,   85,   85,   85,   85,   85,   93,   93,
+       95,   95,  100,   69,  124,   92,   91,   65,   69,   90,
+       89,   53,   53,   53,   87,   77,   72,   71,   69,   65,
+       53,   55,  124,    9,  124,  124,  124,  124,  124,  124,
+      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
+      124,  124,  124,  124,  124,  124,  124,  124,  124,  124
+    } ;
+
+static nidrconst short int nidr_chk[291] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    5,    5,    5,    5,  121,   11,   17,   17,
+       11,   13,   39,   28,   28,   34,   34,   44,   36,   13,
+       28,   36,   40,   40,  120,    5,    6,    6,    6,    6,
+       11,   13,   42,   39,  119,   42,   44,   46,   46,   47,
+       51,   36,   47,   49,   49,   56,   56,  118,   51,    6,
+
+        7,    7,   65,    7,    7,   42,   62,   62,   65,   67,
+       51,   75,   47,   62,   68,   67,   68,   74,   68,   83,
+       74,   76,   76,    7,    8,    8,   85,    8,    8,   78,
+       80,   80,   75,   82,   84,   84,   82,   96,   83,  117,
+       74,   88,   88,   96,  116,   85,  115,    8,   19,  114,
+       78,   19,  113,  112,  111,   19,   82,   94,  110,   94,
+       19,   94,   97,  109,   97,  109,   97,  109,  108,  107,
+      105,   19,   25,   25,  103,  102,  100,   99,   98,   95,
+       93,   25,   25,  125,  125,  125,  125,  125,  125,  125,
+      126,  126,  126,  126,  126,  126,  126,  127,   92,  127,
+
+      127,  127,  127,  127,  128,  128,  129,  129,  130,  130,
+      131,   91,   90,  131,  131,  131,  131,  132,   89,  132,
+      132,  132,  132,  132,  133,   86,  133,   79,  133,  133,
+      133,  134,   72,  134,  134,  134,  134,  134,  135,  135,
+      136,  136,   71,   69,   66,   64,   63,   61,   60,   55,
+       53,   52,   50,   48,   45,   38,   33,   32,   30,   27,
+       22,   16,    9,  124,  124,  124,  124,  124,  124,  124,
+      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
+      124,  124,  124,  124,  124,  124,  124,  124,  124,  124
+    } ;
+
+static nidr_state_type nidr_last_accepting_state;
+static char *nidr_last_accepting_cpos;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+static int nidr_more_flag = 0;
+static int nidr_more_len = 0;
+#define nidrmore() (nidr_more_flag = 1)
+#define YY_MORE_ADJ nidr_more_len
+#define YY_RESTORE_YY_MORE_OFFSET
+char *nidrtext;
+/* #line 1 "nidrscan.l" */
+#define INITIAL 0
+/* #line 2 "nidrscan.l" */
+/*********************************************************************
+Copyright 2008, 2010 Sandia Corporation.  Under the terms of Contract
+DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government
+retains certain rights in this software.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+* Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+* 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.
+
+* Neither the name of Sandia Corporation 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
+OWNER 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.
+***********************************************************************/
+
+#ifndef NIDR_H
+#include "nidr.h"
+#endif
+#ifndef NIDR_PARSER_H
+#include "nidr-parser.h"
+#endif
+#include <stdlib.h>	/* possibly redundant, but necessary for strtod on some systems */
+
+static int my_nidr_input(char*, int);
+extern char *nidr_KWscopy(const char*);
+
+#ifdef IDR_DEBUG
+static void print_token( char*, char*, char* );
+#else
+#define print_token(a,b,c) /*nothing*/
+#endif
+
+
+#define YY_INPUT(buf,result,maxsize) result = my_nidr_input(buf,maxsize)
+
+int	nidrLineNumber = 1;
+
+extern void	nidr_abort(void);
+extern void	(*nidr_comment)(const char*);
+extern KeyWord *(*nidr_identifier)(const char*);
+extern KeyWord *nidr_keyword(const char*);
+extern const char *nidr_keyword_name(void);
+/* Hardwire the now rarely used help text.  It truly is something the
+   application should provide, not NIDR, but had trouble with the
+   declaration/definition w.r.t. MSVS when building DAKOTA source.
+   Ultimately would want to pass it into nidr_parse(...) 
+extern char	nidr_please_refer[];
+*/
+char nidr_please_refer[] = 
+  "Please refer to the input specification reference for this application.";
+extern void	nidr_tolower(char*);
+static void	bad_number(const char*);
+static void	unput_string(char *, int);
+#define DATA 1
+
+#define DQ_STRING 2
+
+#define Q_STRING 3
+
+/* #line 545 "nidr-scanner.c" */
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int nidrwrap YY_PROTO(( void ));
+#else
+extern int nidrwrap YY_PROTO(( void ));
+#endif
+#endif
+
+#ifndef YY_NO_UNPUT
+static void nidrunput YY_PROTO(( int c, char *buf_ptr ));
+#endif
+
+#ifndef nidrtext_ptr
+static void nidr_flex_strncpy YY_PROTO(( char *, nidrconst char *, int ));
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int nidr_flex_strlen YY_PROTO(( nidrconst char * ));
+#endif
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+static int nidrinput YY_PROTO(( void ));
+#else
+static int input YY_PROTO(( void ));
+#endif
+#endif
+
+#if YY_STACK_USED
+static int nidr_start_stack_ptr = 0;
+static int nidr_start_stack_depth = 0;
+static int *nidr_start_stack = 0;
+#ifndef YY_NO_PUSH_STATE
+static void nidr_push_state YY_PROTO(( int new_state ));
+#endif
+#ifndef YY_NO_POP_STATE
+static void nidr_pop_state YY_PROTO(( void ));
+#endif
+#ifndef YY_NO_TOP_STATE
+static int nidr_top_state YY_PROTO(( void ));
+#endif
+
+#else
+#define YY_NO_PUSH_STATE 1
+#define YY_NO_POP_STATE 1
+#define YY_NO_TOP_STATE 1
+#endif
+
+#ifdef YY_MALLOC_DECL
+YY_MALLOC_DECL
+#else
+#if __STDC__
+#ifndef __cplusplus
+#include <stdlib.h>
+#endif
+#else
+/* Just try to get by without declaring the routines.  This will fail
+ * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
+ * or sizeof(void*) != sizeof(int).
+ */
+#endif
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO (void) fwrite( nidrtext, nidrleng, 1, nidrout )
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+	if ( nidr_current_buffer->nidr_is_interactive ) \
+		{ \
+		int c = '*', n; \
+		for ( n = 0; n < max_size && \
+			     (c = getc( nidrin )) != EOF && c != '\n'; ++n ) \
+			buf[n] = (char) c; \
+		if ( c == '\n' ) \
+			buf[n++] = (char) c; \
+		if ( c == EOF && ferror( nidrin ) ) \
+			YY_FATAL_ERROR( "input in flex scanner failed" ); \
+		result = n; \
+		} \
+	else if ( ((result = fread( buf, 1, max_size, nidrin )) == 0) \
+		  && ferror( nidrin ) ) \
+		YY_FATAL_ERROR( "input in flex scanner failed" );
+#endif
+
+/* No semi-colon after return; correct usage is to write "nidrterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef nidrterminate
+#define nidrterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) nidr_fatal_error( msg )
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL int nidrlex YY_PROTO(( void ))
+#endif
+
+/* Code executed at the beginning of each rule, after nidrtext and nidrleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+	YY_USER_ACTION
+
+YY_DECL
+	{
+	register nidr_state_type nidr_current_state;
+	register char *nidr_cp = NULL, *nidr_bp = NULL;
+	register int nidr_act;
+
+/* #line 85 "nidrscan.l" */
+
+
+
+	KeyWord	*identifier, *keyword;
+	char *se;
+
+
+/* #line 704 "nidr-scanner.c" */
+
+	if ( nidr_init )
+		{
+		nidr_init = 0;
+
+#ifdef YY_USER_INIT
+		YY_USER_INIT;
+#endif
+
+		if ( ! nidr_start )
+			nidr_start = 1;	/* first start state */
+
+		if ( ! nidrin )
+			nidrin = stdin;
+
+		if ( ! nidrout )
+			nidrout = stdout;
+
+		if ( ! nidr_current_buffer )
+			nidr_current_buffer =
+				nidr_create_buffer( nidrin, YY_BUF_SIZE );
+
+		nidr_load_buffer_state();
+		}
+
+	while ( 1 )		/* loops until end-of-file is reached */
+		{
+		nidr_more_len = 0;
+		if ( nidr_more_flag )
+			{
+			nidr_more_len = nidr_c_buf_p - nidrtext_ptr;
+			nidr_more_flag = 0;
+			}
+		nidr_cp = nidr_c_buf_p;
+
+		/* Support of nidrtext. */
+		*nidr_cp = nidr_hold_char;
+
+		/* nidr_bp points to the position in nidr_ch_buf of the start of
+		 * the current run.
+		 */
+		nidr_bp = nidr_cp;
+
+		nidr_current_state = nidr_start;
+nidr_match:
+		do
+			{
+			register YY_CHAR nidr_c = nidr_ec[YY_SC_TO_UI(*nidr_cp)];
+			if ( nidr_accept[nidr_current_state] )
+				{
+				nidr_last_accepting_state = nidr_current_state;
+				nidr_last_accepting_cpos = nidr_cp;
+				}
+			while ( nidr_chk[nidr_base[nidr_current_state] + nidr_c] != nidr_current_state )
+				{
+				nidr_current_state = (int) nidr_def[nidr_current_state];
+				if ( nidr_current_state >= 125 )
+					nidr_c = nidr_meta[(unsigned int) nidr_c];
+				}
+			nidr_current_state = nidr_nxt[nidr_base[nidr_current_state] + (unsigned int) nidr_c];
+			++nidr_cp;
+			}
+		while ( nidr_base[nidr_current_state] != 264 );
+
+nidr_find_action:
+		nidr_act = nidr_accept[nidr_current_state];
+		if ( nidr_act == 0 )
+			{ /* have to back up */
+			nidr_cp = nidr_last_accepting_cpos;
+			nidr_current_state = nidr_last_accepting_state;
+			nidr_act = nidr_accept[nidr_current_state];
+			}
+
+		YY_DO_BEFORE_ACTION;
+
+
+do_action:	/* This label is used only to access EOF actions. */
+
+
+		switch ( nidr_act )
+	{ /* beginning of action switch */
+			case 0: /* must back up */
+			/* undo the effects of YY_DO_BEFORE_ACTION */
+			*nidr_cp = nidr_hold_char;
+			nidr_cp = nidr_last_accepting_cpos;
+			nidr_current_state = nidr_last_accepting_state;
+			goto nidr_find_action;
+
+case 1:
+YY_RULE_SETUP
+/* #line 92 "nidrscan.l" */
+{
+			print_token("exit", NULL, "<INITIAL>" );
+			return 0;
+			}
+	YY_BREAK
+case 2:
+YY_RULE_SETUP
+/* #line 97 "nidrscan.l" */
+{
+			if (nidr_comment)
+				nidr_comment(nidrtext);
+			nidrLineNumber++;
+			}
+	YY_BREAK
+case 3:
+YY_RULE_SETUP
+/* #line 103 "nidrscan.l" */
+{
+			nidr_tolower(nidrtext);
+			keyword = nidr_keyword(nidrtext);
+
+			if  (keyword) {
+				print_token( "keyword", (char*) nidrtext, "<INITIAL>" );
+				if (keyword->kind & KWKind_Dynmult)
+					return END;
+				nidrlval.keyword = keyword;
+				BEGIN DATA;
+				return KEY_WORD;
+				}
+			print_token( "error", (char*) nidrtext, "<INITIAL>" );
+			nidrlval.string = nidrtext;
+			return KEYWORDERROR;
+			}
+	YY_BREAK
+case 4:
+YY_RULE_SETUP
+/* #line 120 "nidrscan.l" */
+{
+			if (*nidrtext == '#') {
+				if (nidr_comment)
+					nidr_comment(nidrtext);
+				}
+			else {
+				print_token( "end", NULL, "<INITIAL>" );
+				return END;
+				}
+			}
+	YY_BREAK
+case 5:
+YY_RULE_SETUP
+/* #line 131 "nidrscan.l" */
+{ print_token( "whitespace", (char*) nidrtext, "<INITIAL>" ); }
+	YY_BREAK
+case 6:
+YY_RULE_SETUP
+/* #line 133 "nidrscan.l" */
+{
+			print_token( "word", (char*) nidrtext, "<INITIAL>" );
+			nidrlval.string = nidr_KWscopy(nidrtext);
+			return STRING;
+			}
+	YY_BREAK
+case 7:
+YY_RULE_SETUP
+/* #line 138 "nidrscan.l" */
+{
+			print_token( "equals", NULL, "<DATA>" );
+			return EQUALS;
+			}
+	YY_BREAK
+case 8:
+YY_RULE_SETUP
+/* #line 142 "nidrscan.l" */
+{
+			print_token( "separator", NULL, "<DATA>" );
+			return SEPARATOR;
+			}
+	YY_BREAK
+case 9:
+YY_RULE_SETUP
+/* #line 146 "nidrscan.l" */
+{
+			print_token( "integer", (char*) nidrtext, "<DATA>" );
+			/* The following, old way has trouble with */
+			/* big floating-point numbers written without */
+			/* a decimal point */
+			/* nidrlval.integer = (int) atoi( (char*) nidrtext ); */
+			/* return INTEGER; */
+			nidrlval.real = strtod(nidrtext,&se);
+			if (*se)
+				bad_number(nidrtext);
+			return REAL;
+			}
+	YY_BREAK
+case 10:
+YY_RULE_SETUP
+/* #line 158 "nidrscan.l" */
+{
+			print_token( "real", (char*) nidrtext, "<DATA>" );
+			nidrlval.real = strtod(nidrtext,&se);
+			if (*se)
+				bad_number(nidrtext);
+			return REAL;
+			}
+	YY_BREAK
+case 11:
+YY_RULE_SETUP
+/* #line 165 "nidrscan.l" */
+{
+			nidr_tolower(nidrtext);
+			if (nidr_keyword(nidrtext)) {
+				unput_string(nidrtext, nidrleng);
+				BEGIN INITIAL;
+				return END;
+				}
+			identifier = nidr_identifier(nidrtext);
+
+			if (identifier) {
+				print_token( "identifier", (char*) nidrtext, "<DATA>");
+
+				nidrlval.identifier = identifier;
+				return IDENTIFIER;
+				}
+			else {
+				print_token( "word", (char*) nidrtext, "<DATA>" );
+				fprintf(stderr,"\n\tunrecognized identifier '%s'\n", nidrtext);
+				fprintf(stderr,"\tinput line %d, within %s keyword.\n",
+						nidrLineNumber, nidr_keyword_name());
+				fprintf(stderr, "%s\n", nidr_please_refer);
+				nidr_abort();
+				nidrlval.string = nidr_KWscopy(nidrtext);
+				return STRING;
+				}
+			}
+	YY_BREAK
+case 12:
+YY_RULE_SETUP
+/* #line 192 "nidrscan.l" */
+{ print_token( "whitespace", (char*) nidrtext, "<DATA>" ); }
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+/* #line 194 "nidrscan.l" */
+{
+			print_token( "opening quote", NULL, "<DATA>" );
+			BEGIN Q_STRING;
+			}
+	YY_BREAK
+case 14:
+YY_RULE_SETUP
+/* #line 198 "nidrscan.l" */
+{
+			print_token( "end", NULL, "<DATA>" );
+			BEGIN INITIAL;
+			return END;
+			}
+	YY_BREAK
+case 15:
+YY_RULE_SETUP
+/* #line 203 "nidrscan.l" */
+{
+			print_token( "double quote", NULL, "<DATA>" );
+			BEGIN DQ_STRING;
+			}
+	YY_BREAK
+case 16:
+YY_RULE_SETUP
+/* #line 207 "nidrscan.l" */
+{
+			print_token( "word", (char*) nidrtext, "<DATA>" );
+			fprintf(stderr, "Input line %d:  '%s' unexpected.\n",
+				nidrLineNumber, nidrtext);
+			nidr_abort();
+			nidrlval.string = nidr_KWscopy(nidrtext);
+			return STRING;
+			}
+	YY_BREAK
+case 17:
+YY_RULE_SETUP
+/* #line 215 "nidrscan.l" */
+{
+			print_token( "q:repeated quote", NULL, "<Q_STRING>" );
+			nidrtext[--nidrleng] = 0;
+			nidrmore();
+			}
+	YY_BREAK
+case 18:
+YY_RULE_SETUP
+/* #line 220 "nidrscan.l" */
+{
+			nidrmore();
+			print_token( "q:text", (char*) nidrtext, "<Q_STRING>" );
+			}
+	YY_BREAK
+case 19:
+YY_RULE_SETUP
+/* #line 224 "nidrscan.l" */
+{
+			print_token( "closing quote", NULL, "<Q_STRING>" );
+			if (nidrtext[--nidrleng] == '\n')
+				unput('\n');
+			nidrtext[nidrleng] = 0;
+			print_token( "quoted string", (char*) nidrtext, "<Q_STRING>" );
+			nidrlval.qstring = nidr_KWscopy(nidrtext);
+			BEGIN DATA;
+			return QUOTED_STRING;
+			}
+	YY_BREAK
+case 20:
+YY_RULE_SETUP
+/* #line 234 "nidrscan.l" */
+{
+			print_token( "q:repeated double quote", NULL, "<DQ_STRING>" );
+			nidrtext[--nidrleng] = 0;
+			nidrmore();
+			}
+	YY_BREAK
+case 21:
+YY_RULE_SETUP
+/* #line 239 "nidrscan.l" */
+{
+			nidrmore();
+			print_token( "q:text", (char*) nidrtext, "<DQ_STRING>" );
+			}
+	YY_BREAK
+case 22:
+YY_RULE_SETUP
+/* #line 243 "nidrscan.l" */
+{
+			print_token( "closing double quote", NULL, "<DQ_STRING>" );
+			if (nidrtext[--nidrleng] == '\n')
+				unput('\n');
+			nidrtext[nidrleng] = 0;
+			print_token( "quoted string", (char*) nidrtext, "<DQ_STRING>" );
+			nidrlval.qstring = nidr_KWscopy(nidrtext);
+			BEGIN DATA;
+			return QUOTED_STRING;
+			}
+	YY_BREAK
+case 23:
+YY_RULE_SETUP
+/* #line 253 "nidrscan.l" */
+{
+			print_token( "newline", NULL, NULL );
+			if (nidr_comment)
+				nidr_comment(nidrtext);
+			nidrLineNumber++;
+			}
+	YY_BREAK
+case 24:
+YY_RULE_SETUP
+/* #line 259 "nidrscan.l" */
+{
+			if (nidr_comment)
+				nidr_comment(nidrtext);
+			print_token( "comment - escaped newline", (char*) nidrtext, "<INITIAL>" );
+			unput( '\\' );
+			}
+	YY_BREAK
+case 25:
+YY_RULE_SETUP
+/* #line 265 "nidrscan.l" */
+{
+			if (nidr_comment)
+				nidr_comment(nidrtext);
+			print_token( "comment", (char*) nidrtext, "<INITIAL>" );
+			}
+	YY_BREAK
+case 26:
+YY_RULE_SETUP
+/* #line 270 "nidrscan.l" */
+{ return nidrtext[0]; }
+	YY_BREAK
+case 27:
+YY_RULE_SETUP
+/* #line 272 "nidrscan.l" */
+ECHO;
+	YY_BREAK
+/* #line 1074 "nidr-scanner.c" */
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(DATA):
+case YY_STATE_EOF(DQ_STRING):
+case YY_STATE_EOF(Q_STRING):
+	nidrterminate();
+
+	case YY_END_OF_BUFFER:
+		{
+		/* Amount of text matched not including the EOB char. */
+		int nidr_amount_of_matched_text = (int) (nidr_cp - nidrtext_ptr) - 1;
+
+		/* Undo the effects of YY_DO_BEFORE_ACTION. */
+		*nidr_cp = nidr_hold_char;
+		YY_RESTORE_YY_MORE_OFFSET
+
+		if ( nidr_current_buffer->nidr_buffer_status == YY_BUFFER_NEW )
+			{
+			/* We're scanning a new file or input source.  It's
+			 * possible that this happened because the user
+			 * just pointed nidrin at a new source and called
+			 * nidrlex().  If so, then we have to assure
+			 * consistency between nidr_current_buffer and our
+			 * globals.  Here is the right place to do so, because
+			 * this is the first action (other than possibly a
+			 * back-up) that will match for the new input source.
+			 */
+			nidr_n_chars = nidr_current_buffer->nidr_n_chars;
+			nidr_current_buffer->nidr_input_file = nidrin;
+			nidr_current_buffer->nidr_buffer_status = YY_BUFFER_NORMAL;
+			}
+
+		/* Note that here we test for nidr_c_buf_p "<=" to the position
+		 * of the first EOB in the buffer, since nidr_c_buf_p will
+		 * already have been incremented past the NUL character
+		 * (since all states make transitions on EOB to the
+		 * end-of-buffer state).  Contrast this with the test
+		 * in input().
+		 */
+		if ( nidr_c_buf_p <= &nidr_current_buffer->nidr_ch_buf[nidr_n_chars] )
+			{ /* This was really a NUL. */
+			nidr_state_type nidr_next_state;
+
+			nidr_c_buf_p = nidrtext_ptr + nidr_amount_of_matched_text;
+
+			nidr_current_state = nidr_get_previous_state();
+
+			/* Okay, we're now positioned to make the NUL
+			 * transition.  We couldn't have
+			 * nidr_get_previous_state() go ahead and do it
+			 * for us because it doesn't know how to deal
+			 * with the possibility of jamming (and we don't
+			 * want to build jamming into it because then it
+			 * will run more slowly).
+			 */
+
+			nidr_next_state = nidr_try_NUL_trans( nidr_current_state );
+
+			nidr_bp = nidrtext_ptr + YY_MORE_ADJ;
+
+			if ( nidr_next_state )
+				{
+				/* Consume the NUL. */
+				nidr_cp = ++nidr_c_buf_p;
+				nidr_current_state = nidr_next_state;
+				goto nidr_match;
+				}
+
+			else
+				{
+				nidr_cp = nidr_c_buf_p;
+				goto nidr_find_action;
+				}
+			}
+
+		else switch ( nidr_get_next_buffer() )
+			{
+			case EOB_ACT_END_OF_FILE:
+				{
+				nidr_did_buffer_switch_on_eof = 0;
+
+				if ( nidrwrap() )
+					{
+					/* Note: because we've taken care in
+					 * nidr_get_next_buffer() to have set up
+					 * nidrtext, we can now set up
+					 * nidr_c_buf_p so that if some total
+					 * hoser (like flex itself) wants to
+					 * call the scanner after we return the
+					 * YY_NULL, it'll still work - another
+					 * YY_NULL will get returned.
+					 */
+					nidr_c_buf_p = nidrtext_ptr + YY_MORE_ADJ;
+
+					nidr_act = YY_STATE_EOF(YY_START);
+					goto do_action;
+					}
+
+				else
+					{
+					if ( ! nidr_did_buffer_switch_on_eof )
+						YY_NEW_FILE;
+					}
+				break;
+				}
+
+			case EOB_ACT_CONTINUE_SCAN:
+				nidr_c_buf_p =
+					nidrtext_ptr + nidr_amount_of_matched_text;
+
+				nidr_current_state = nidr_get_previous_state();
+
+				nidr_cp = nidr_c_buf_p;
+				nidr_bp = nidrtext_ptr + YY_MORE_ADJ;
+				goto nidr_match;
+
+			case EOB_ACT_LAST_MATCH:
+				nidr_c_buf_p =
+				&nidr_current_buffer->nidr_ch_buf[nidr_n_chars];
+
+				nidr_current_state = nidr_get_previous_state();
+
+				nidr_cp = nidr_c_buf_p;
+				nidr_bp = nidrtext_ptr + YY_MORE_ADJ;
+				goto nidr_find_action;
+			}
+		break;
+		}
+
+	default:
+		YY_FATAL_ERROR(
+			"fatal flex scanner internal error--no action found" );
+	} /* end of action switch */
+		} /* end of scanning one token */
+	} /* end of nidrlex */
+
+
+/* nidr_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *	EOB_ACT_LAST_MATCH -
+ *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *	EOB_ACT_END_OF_FILE - end of file
+ */
+
+static int nidr_get_next_buffer()
+	{
+	register char *dest = nidr_current_buffer->nidr_ch_buf;
+	register char *source = nidrtext_ptr;
+	register int number_to_move, i;
+	int ret_val;
+
+	if ( nidr_c_buf_p > &nidr_current_buffer->nidr_ch_buf[nidr_n_chars + 1] )
+		YY_FATAL_ERROR(
+		"fatal flex scanner internal error--end of buffer missed" );
+
+	if ( nidr_current_buffer->nidr_fill_buffer == 0 )
+		{ /* Don't try to fill the buffer, so this is an EOF. */
+		if ( nidr_c_buf_p - nidrtext_ptr - YY_MORE_ADJ == 1 )
+			{
+			/* We matched a single character, the EOB, so
+			 * treat this as a final EOF.
+			 */
+			return EOB_ACT_END_OF_FILE;
+			}
+
+		else
+			{
+			/* We matched some text prior to the EOB, first
+			 * process it.
+			 */
+			return EOB_ACT_LAST_MATCH;
+			}
+		}
+
+	/* Try to read more data. */
+
+	/* First move last chars to start of buffer. */
+	number_to_move = (int) (nidr_c_buf_p - nidrtext_ptr) - 1;
+
+	for ( i = 0; i < number_to_move; ++i )
+		*(dest++) = *(source++);
+
+	if ( nidr_current_buffer->nidr_buffer_status == YY_BUFFER_EOF_PENDING )
+		/* don't do the read, it's not guaranteed to return an EOF,
+		 * just force an EOF
+		 */
+		nidr_current_buffer->nidr_n_chars = nidr_n_chars = 0;
+
+	else
+		{
+		int num_to_read =
+			nidr_current_buffer->nidr_buf_size - number_to_move - 1;
+
+		while ( num_to_read <= 0 )
+			{ /* Not enough room in the buffer - grow it. */
+#ifdef YY_USES_REJECT
+			YY_FATAL_ERROR(
+"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
+#else
+
+			/* just a shorter name for the current buffer */
+			YY_BUFFER_STATE b = nidr_current_buffer;
+
+			int nidr_c_buf_p_offset =
+				(int) (nidr_c_buf_p - b->nidr_ch_buf);
+
+			if ( b->nidr_is_our_buffer )
+				{
+				int new_size = b->nidr_buf_size * 2;
+
+				if ( new_size <= 0 )
+					b->nidr_buf_size += b->nidr_buf_size / 8;
+				else
+					b->nidr_buf_size *= 2;
+
+				b->nidr_ch_buf = (char *)
+					/* Include room in for 2 EOB chars. */
+					nidr_flex_realloc( (void *) b->nidr_ch_buf,
+							 b->nidr_buf_size + 2 );
+				}
+			else
+				/* Can't grow it, we don't own it. */
+				b->nidr_ch_buf = 0;
+
+			if ( ! b->nidr_ch_buf )
+				YY_FATAL_ERROR(
+				"fatal error - scanner input buffer overflow" );
+
+			nidr_c_buf_p = &b->nidr_ch_buf[nidr_c_buf_p_offset];
+
+			num_to_read = nidr_current_buffer->nidr_buf_size -
+						number_to_move - 1;
+#endif
+			}
+
+		if ( num_to_read > YY_READ_BUF_SIZE )
+			num_to_read = YY_READ_BUF_SIZE;
+
+		/* Read in more data. */
+		YY_INPUT( (&nidr_current_buffer->nidr_ch_buf[number_to_move]),
+			nidr_n_chars, num_to_read );
+
+		nidr_current_buffer->nidr_n_chars = nidr_n_chars;
+		}
+
+	if ( nidr_n_chars == 0 )
+		{
+		if ( number_to_move == YY_MORE_ADJ )
+			{
+			ret_val = EOB_ACT_END_OF_FILE;
+			nidrrestart( nidrin );
+			}
+
+		else
+			{
+			ret_val = EOB_ACT_LAST_MATCH;
+			nidr_current_buffer->nidr_buffer_status =
+				YY_BUFFER_EOF_PENDING;
+			}
+		}
+
+	else
+		ret_val = EOB_ACT_CONTINUE_SCAN;
+
+	nidr_n_chars += number_to_move;
+	nidr_current_buffer->nidr_ch_buf[nidr_n_chars] = YY_END_OF_BUFFER_CHAR;
+	nidr_current_buffer->nidr_ch_buf[nidr_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+	nidrtext_ptr = &nidr_current_buffer->nidr_ch_buf[0];
+
+	return ret_val;
+	}
+
+
+/* nidr_get_previous_state - get the state just before the EOB char was reached */
+
+static nidr_state_type nidr_get_previous_state()
+	{
+	register nidr_state_type nidr_current_state;
+	register char *nidr_cp;
+
+	nidr_current_state = nidr_start;
+
+	for ( nidr_cp = nidrtext_ptr + YY_MORE_ADJ; nidr_cp < nidr_c_buf_p; ++nidr_cp )
+		{
+		register YY_CHAR nidr_c = (*nidr_cp ? nidr_ec[YY_SC_TO_UI(*nidr_cp)] : 1);
+		if ( nidr_accept[nidr_current_state] )
+			{
+			nidr_last_accepting_state = nidr_current_state;
+			nidr_last_accepting_cpos = nidr_cp;
+			}
+		while ( nidr_chk[nidr_base[nidr_current_state] + nidr_c] != nidr_current_state )
+			{
+			nidr_current_state = (int) nidr_def[nidr_current_state];
+			if ( nidr_current_state >= 125 )
+				nidr_c = nidr_meta[(unsigned int) nidr_c];
+			}
+		nidr_current_state = nidr_nxt[nidr_base[nidr_current_state] + (unsigned int) nidr_c];
+		}
+
+	return nidr_current_state;
+	}
+
+
+/* nidr_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *	next_state = nidr_try_NUL_trans( current_state );
+ */
+
+#ifdef YY_USE_PROTOS
+static nidr_state_type nidr_try_NUL_trans( nidr_state_type nidr_current_state )
+#else
+static nidr_state_type nidr_try_NUL_trans( nidr_current_state )
+nidr_state_type nidr_current_state;
+#endif
+	{
+	register int nidr_is_jam;
+	register char *nidr_cp = nidr_c_buf_p;
+
+	register YY_CHAR nidr_c = 1;
+	if ( nidr_accept[nidr_current_state] )
+		{
+		nidr_last_accepting_state = nidr_current_state;
+		nidr_last_accepting_cpos = nidr_cp;
+		}
+	while ( nidr_chk[nidr_base[nidr_current_state] + nidr_c] != nidr_current_state )
+		{
+		nidr_current_state = (int) nidr_def[nidr_current_state];
+		if ( nidr_current_state >= 125 )
+			nidr_c = nidr_meta[(unsigned int) nidr_c];
+		}
+	nidr_current_state = nidr_nxt[nidr_base[nidr_current_state] + (unsigned int) nidr_c];
+	nidr_is_jam = (nidr_current_state == 124);
+
+	return nidr_is_jam ? 0 : nidr_current_state;
+	}
+
+
+#ifndef YY_NO_UNPUT
+#ifdef YY_USE_PROTOS
+static void nidrunput( int c, register char *nidr_bp )
+#else
+static void nidrunput( c, nidr_bp )
+int c;
+register char *nidr_bp;
+#endif
+	{
+	register char *nidr_cp = nidr_c_buf_p;
+
+	/* undo effects of setting up nidrtext */
+	*nidr_cp = nidr_hold_char;
+
+	if ( nidr_cp < nidr_current_buffer->nidr_ch_buf + 2 )
+		{ /* need to shift things up to make room */
+		/* +2 for EOB chars. */
+		register int number_to_move = nidr_n_chars + 2;
+		register char *dest = &nidr_current_buffer->nidr_ch_buf[
+					nidr_current_buffer->nidr_buf_size + 2];
+		register char *source =
+				&nidr_current_buffer->nidr_ch_buf[number_to_move];
+
+		while ( source > nidr_current_buffer->nidr_ch_buf )
+			*--dest = *--source;
+
+		nidr_cp += (int) (dest - source);
+		nidr_bp += (int) (dest - source);
+		nidr_current_buffer->nidr_n_chars =
+			nidr_n_chars = nidr_current_buffer->nidr_buf_size;
+
+		if ( nidr_cp < nidr_current_buffer->nidr_ch_buf + 2 )
+			YY_FATAL_ERROR( "flex scanner push-back overflow" );
+		}
+
+	*--nidr_cp = (char) c;
+
+
+	nidrtext_ptr = nidr_bp;
+	nidr_hold_char = *nidr_cp;
+	nidr_c_buf_p = nidr_cp;
+	}
+#endif	/* ifndef YY_NO_UNPUT */
+
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+static int nidrinput()
+#else
+static int input()
+#endif
+	{
+	int c;
+
+	*nidr_c_buf_p = nidr_hold_char;
+
+	if ( *nidr_c_buf_p == YY_END_OF_BUFFER_CHAR )
+		{
+		/* nidr_c_buf_p now points to the character we want to return.
+		 * If this occurs *before* the EOB characters, then it's a
+		 * valid NUL; if not, then we've hit the end of the buffer.
+		 */
+		if ( nidr_c_buf_p < &nidr_current_buffer->nidr_ch_buf[nidr_n_chars] )
+			/* This was really a NUL. */
+			*nidr_c_buf_p = '\0';
+
+		else
+			{ /* need more input */
+			int offset = nidr_c_buf_p - nidrtext_ptr;
+			++nidr_c_buf_p;
+
+			switch ( nidr_get_next_buffer() )
+				{
+				case EOB_ACT_LAST_MATCH:
+					/* This happens because nidr_g_n_b()
+					 * sees that we've accumulated a
+					 * token and flags that we need to
+					 * try matching the token before
+					 * proceeding.  But for input(),
+					 * there's no matching to consider.
+					 * So convert the EOB_ACT_LAST_MATCH
+					 * to EOB_ACT_END_OF_FILE.
+					 */
+
+					/* Reset buffer status. */
+					nidrrestart( nidrin );
+
+					/* fall through */
+
+				case EOB_ACT_END_OF_FILE:
+					{
+					if ( nidrwrap() )
+						return EOF;
+
+					if ( ! nidr_did_buffer_switch_on_eof )
+						YY_NEW_FILE;
+#ifdef __cplusplus
+					return nidrinput();
+#else
+					return input();
+#endif
+					}
+
+				case EOB_ACT_CONTINUE_SCAN:
+					nidr_c_buf_p = nidrtext_ptr + offset;
+					break;
+				}
+			}
+		}
+
+	c = *(unsigned char *) nidr_c_buf_p;	/* cast for 8-bit char's */
+	*nidr_c_buf_p = '\0';	/* preserve nidrtext */
+	nidr_hold_char = *++nidr_c_buf_p;
+
+
+	return c;
+	}
+#endif /* YY_NO_INPUT */
+
+#ifdef YY_USE_PROTOS
+void nidrrestart( FILE *input_file )
+#else
+void nidrrestart( input_file )
+FILE *input_file;
+#endif
+	{
+	if ( ! nidr_current_buffer )
+		nidr_current_buffer = nidr_create_buffer( nidrin, YY_BUF_SIZE );
+
+	nidr_init_buffer( nidr_current_buffer, input_file );
+	nidr_load_buffer_state();
+	}
+
+
+#ifdef YY_USE_PROTOS
+void nidr_switch_to_buffer( YY_BUFFER_STATE new_buffer )
+#else
+void nidr_switch_to_buffer( new_buffer )
+YY_BUFFER_STATE new_buffer;
+#endif
+	{
+	if ( nidr_current_buffer == new_buffer )
+		return;
+
+	if ( nidr_current_buffer )
+		{
+		/* Flush out information for old buffer. */
+		*nidr_c_buf_p = nidr_hold_char;
+		nidr_current_buffer->nidr_buf_pos = nidr_c_buf_p;
+		nidr_current_buffer->nidr_n_chars = nidr_n_chars;
+		}
+
+	nidr_current_buffer = new_buffer;
+	nidr_load_buffer_state();
+
+	/* We don't actually know whether we did this switch during
+	 * EOF (nidrwrap()) processing, but the only time this flag
+	 * is looked at is after nidrwrap() is called, so it's safe
+	 * to go ahead and always set it.
+	 */
+	nidr_did_buffer_switch_on_eof = 1;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void nidr_load_buffer_state( void )
+#else
+void nidr_load_buffer_state()
+#endif
+	{
+	nidr_n_chars = nidr_current_buffer->nidr_n_chars;
+	nidrtext_ptr = nidr_c_buf_p = nidr_current_buffer->nidr_buf_pos;
+	nidrin = nidr_current_buffer->nidr_input_file;
+	nidr_hold_char = *nidr_c_buf_p;
+	}
+
+
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE nidr_create_buffer( FILE *file, int size )
+#else
+YY_BUFFER_STATE nidr_create_buffer( file, size )
+FILE *file;
+int size;
+#endif
+	{
+	YY_BUFFER_STATE b;
+
+	b = (YY_BUFFER_STATE) nidr_flex_alloc( sizeof( struct nidr_buffer_state ) );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in nidr_create_buffer()" );
+
+	b->nidr_buf_size = size;
+
+	/* nidr_ch_buf has to be 2 characters longer than the size given because
+	 * we need to put in 2 end-of-buffer characters.
+	 */
+	b->nidr_ch_buf = (char *) nidr_flex_alloc( b->nidr_buf_size + 2 );
+	if ( ! b->nidr_ch_buf )
+		YY_FATAL_ERROR( "out of dynamic memory in nidr_create_buffer()" );
+
+	b->nidr_is_our_buffer = 1;
+
+	nidr_init_buffer( b, file );
+
+	return b;
+	}
+
+
+#ifdef YY_USE_PROTOS
+void nidr_delete_buffer( YY_BUFFER_STATE b )
+#else
+void nidr_delete_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+	{
+	if ( ! b )
+		return;
+
+	if ( b == nidr_current_buffer )
+		nidr_current_buffer = (YY_BUFFER_STATE) 0;
+
+	if ( b->nidr_is_our_buffer )
+		nidr_flex_free( (void *) b->nidr_ch_buf );
+
+	nidr_flex_free( (void *) b );
+	}
+
+/* Fix for C99 */
+#ifndef __cplusplus
+extern int isatty(int);
+#endif /* __cplusplus */
+
+#ifdef YY_USE_PROTOS
+void nidr_init_buffer( YY_BUFFER_STATE b, FILE *file )
+#else
+void nidr_init_buffer( b, file )
+YY_BUFFER_STATE b;
+FILE *file;
+#endif
+
+
+	{
+	nidr_flush_buffer( b );
+
+	b->nidr_input_file = file;
+	b->nidr_fill_buffer = 1;
+
+#if YY_ALWAYS_INTERACTIVE
+	b->nidr_is_interactive = 1;
+#else
+#if YY_NEVER_INTERACTIVE
+	b->nidr_is_interactive = 0;
+#else
+	b->nidr_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+#endif
+#endif
+	}
+
+
+#ifdef YY_USE_PROTOS
+void nidr_flush_buffer( YY_BUFFER_STATE b )
+#else
+void nidr_flush_buffer( b )
+YY_BUFFER_STATE b;
+#endif
+
+	{
+	if ( ! b )
+		return;
+
+	b->nidr_n_chars = 0;
+
+	/* We always need two end-of-buffer characters.  The first causes
+	 * a transition to the end-of-buffer state.  The second causes
+	 * a jam in that state.
+	 */
+	b->nidr_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+	b->nidr_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+	b->nidr_buf_pos = &b->nidr_ch_buf[0];
+
+	b->nidr_at_bol = 1;
+	b->nidr_buffer_status = YY_BUFFER_NEW;
+
+	if ( b == nidr_current_buffer )
+		nidr_load_buffer_state();
+	}
+
+
+#ifndef YY_NO_SCAN_BUFFER
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE nidr_scan_buffer( char *base, nidr_size_t size )
+#else
+YY_BUFFER_STATE nidr_scan_buffer( base, size )
+char *base;
+nidr_size_t size;
+#endif
+	{
+	YY_BUFFER_STATE b;
+
+	if ( size < 2 ||
+	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
+	     base[size-1] != YY_END_OF_BUFFER_CHAR )
+		/* They forgot to leave room for the EOB's. */
+		return 0;
+
+	b = (YY_BUFFER_STATE) nidr_flex_alloc( sizeof( struct nidr_buffer_state ) );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in nidr_scan_buffer()" );
+
+	b->nidr_buf_size = size - 2;	/* "- 2" to take care of EOB's */
+	b->nidr_buf_pos = b->nidr_ch_buf = base;
+	b->nidr_is_our_buffer = 0;
+	b->nidr_input_file = 0;
+	b->nidr_n_chars = b->nidr_buf_size;
+	b->nidr_is_interactive = 0;
+	b->nidr_at_bol = 1;
+	b->nidr_fill_buffer = 0;
+	b->nidr_buffer_status = YY_BUFFER_NEW;
+
+	nidr_switch_to_buffer( b );
+
+	return b;
+	}
+#endif
+
+
+#ifndef YY_NO_SCAN_STRING
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE nidr_scan_string( nidrconst char *nidr_str )
+#else
+YY_BUFFER_STATE nidr_scan_string( nidr_str )
+nidrconst char *nidr_str;
+#endif
+	{
+	int len;
+	for ( len = 0; nidr_str[len]; ++len )
+		;
+
+	return nidr_scan_bytes( nidr_str, len );
+	}
+#endif
+
+
+#ifndef YY_NO_SCAN_BYTES
+#ifdef YY_USE_PROTOS
+YY_BUFFER_STATE nidr_scan_bytes( nidrconst char *bytes, int len )
+#else
+YY_BUFFER_STATE nidr_scan_bytes( bytes, len )
+nidrconst char *bytes;
+int len;
+#endif
+	{
+	YY_BUFFER_STATE b;
+	char *buf;
+	nidr_size_t n;
+	int i;
+
+	/* Get memory for full buffer, including space for trailing EOB's. */
+	n = len + 2;
+	buf = (char *) nidr_flex_alloc( n );
+	if ( ! buf )
+		YY_FATAL_ERROR( "out of dynamic memory in nidr_scan_bytes()" );
+
+	for ( i = 0; i < len; ++i )
+		buf[i] = bytes[i];
+
+	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+
+	b = nidr_scan_buffer( buf, n );
+	if ( ! b )
+		YY_FATAL_ERROR( "bad buffer in nidr_scan_bytes()" );
+
+	/* It's okay to grow etc. this buffer, and we should throw it
+	 * away when we're done.
+	 */
+	b->nidr_is_our_buffer = 1;
+
+	return b;
+	}
+#endif
+
+
+#ifndef YY_NO_PUSH_STATE
+#ifdef YY_USE_PROTOS
+static void nidr_push_state( int new_state )
+#else
+static void nidr_push_state( new_state )
+int new_state;
+#endif
+	{
+	if ( nidr_start_stack_ptr >= nidr_start_stack_depth )
+		{
+		nidr_size_t new_size;
+
+		nidr_start_stack_depth += YY_START_STACK_INCR;
+		new_size = nidr_start_stack_depth * sizeof( int );
+
+		if ( ! nidr_start_stack )
+			nidr_start_stack = (int *) nidr_flex_alloc( new_size );
+
+		else
+			nidr_start_stack = (int *) nidr_flex_realloc(
+					(void *) nidr_start_stack, new_size );
+
+		if ( ! nidr_start_stack )
+			YY_FATAL_ERROR(
+			"out of memory expanding start-condition stack" );
+		}
+
+	nidr_start_stack[nidr_start_stack_ptr++] = YY_START;
+
+	BEGIN(new_state);
+	}
+#endif
+
+
+#ifndef YY_NO_POP_STATE
+static void nidr_pop_state()
+	{
+	if ( --nidr_start_stack_ptr < 0 )
+		YY_FATAL_ERROR( "start-condition stack underflow" );
+
+	BEGIN(nidr_start_stack[nidr_start_stack_ptr]);
+	}
+#endif
+
+
+#ifndef YY_NO_TOP_STATE
+static int nidr_top_state()
+	{
+	return nidr_start_stack[nidr_start_stack_ptr - 1];
+	}
+#endif
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+#ifdef YY_USE_PROTOS
+static void nidr_fatal_error( nidrconst char msg[] )
+#else
+static void nidr_fatal_error( msg )
+char msg[];
+#endif
+	{
+	(void) fprintf( stderr, "%s\n", msg );
+	exit( YY_EXIT_FAILURE );
+	}
+
+
+
+/* Redefine nidrless() so it works in section 3 code. */
+
+#undef nidrless
+#define nidrless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up nidrtext. */ \
+		nidrtext[nidrleng] = nidr_hold_char; \
+		nidr_c_buf_p = nidrtext + n; \
+		nidr_hold_char = *nidr_c_buf_p; \
+		*nidr_c_buf_p = '\0'; \
+		nidrleng = n; \
+		} \
+	while ( 0 )
+
+
+/* Internal utility routines. */
+
+#ifndef nidrtext_ptr
+#ifdef YY_USE_PROTOS
+static void nidr_flex_strncpy( char *s1, nidrconst char *s2, int n )
+#else
+static void nidr_flex_strncpy( s1, s2, n )
+char *s1;
+nidrconst char *s2;
+int n;
+#endif
+	{
+	register int i;
+	for ( i = 0; i < n; ++i )
+		s1[i] = s2[i];
+	}
+#endif
+
+#ifdef YY_NEED_STRLEN
+#ifdef YY_USE_PROTOS
+static int nidr_flex_strlen( nidrconst char *s )
+#else
+static int nidr_flex_strlen( s )
+nidrconst char *s;
+#endif
+	{
+	register int n;
+	for ( n = 0; s[n]; ++n )
+		;
+
+	return n;
+	}
+#endif
+
+
+#ifdef YY_USE_PROTOS
+static void *nidr_flex_alloc( nidr_size_t size )
+#else
+static void *nidr_flex_alloc( size )
+nidr_size_t size;
+#endif
+	{
+	return (void *) malloc( size );
+	}
+
+#ifdef YY_USE_PROTOS
+static void *nidr_flex_realloc( void *ptr, nidr_size_t size )
+#else
+static void *nidr_flex_realloc( ptr, size )
+void *ptr;
+nidr_size_t size;
+#endif
+	{
+	/* The cast to (char *) in the following accommodates both
+	 * implementations that use char* generic pointers, and those
+	 * that use void* generic pointers.  It works with the latter
+	 * because both ANSI C and C++ allow castless assignment from
+	 * any pointer type to void*, and deal with argument conversions
+	 * as though doing an assignment.
+	 */
+	return (void *) realloc( (char *) ptr, size );
+	}
+
+#ifdef YY_USE_PROTOS
+static void nidr_flex_free( void *ptr )
+#else
+static void nidr_flex_free( ptr )
+void *ptr;
+#endif
+	{
+	free( ptr );
+	}
+
+#if YY_MAIN
+int main()
+	{
+	nidrlex();
+	return 0;
+	}
+#endif
+/* #line 272 "nidrscan.l" */
+
+
+ static int nidr_ateof = 0;
+ static const char *nidr_instring = 0;
+
+ void
+bad_number(const char *s)
+{
+	fprintf(stderr, "\n*** Invalid number \"%s\" on input line %d within "
+			"%s keyword.\n", s, nidrLineNumber, nidr_keyword_name());
+	nidr_abort();
+	}
+
+ void
+nidr_set_input_string(const char *s)
+{
+	nidr_instring = s;
+	}
+
+ static int
+my_nidr_input(char *buf, int bmax)
+{
+	int c, n;
+
+	if (nidr_ateof)
+		return 0;
+	n = 0;
+	if (nidr_instring) {
+		while(n < bmax && (c = *nidr_instring)) {
+			++nidr_instring;
+			if (c != '\r')
+				buf[n++] = c;
+			if (c == '\n')
+				break;
+			}
+		}
+	else if (nidr_current_buffer->nidr_is_interactive)
+		while(n < bmax) {
+		if ((c = getc(nidrin)) == EOF)
+			break;
+		if (c != '\r')
+			buf[n++] = c;
+		if (c == '\n')
+			break;
+		}
+	else
+		while(n < bmax) {
+		if ((c = getc(nidrin)) == EOF)
+			break;
+		if (c != '\r')
+			buf[n++] = c;
+		}
+	if (n <= 0) {
+		nidr_ateof = n = 1;
+		if (c == EOF) {
+			fclose(nidrin);
+			nidrin = NULL;
+			}
+		buf[0] = ';';
+		}
+	return n;
+	}
+
+ void
+reset_nidrlex_state(void)
+{
+	BEGIN INITIAL;
+	nidr_abort();
+	}
+
+ void
+unput_string(char *s, int len)
+{
+	while(--len >= 0)
+		unput(s[len]);
+	}
+
+ void
+nidr_reinit(void)
+{
+	nidr_init = 1;
+	nidr_ateof = 0;
+	if (nidr_current_buffer) {
+		free(nidr_current_buffer->nidr_ch_buf);
+		free(nidr_current_buffer);
+		nidr_current_buffer = 0;
+		}
+	}
+
+ int
+nidrwrap(void)
+{ return 1; }
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/nidr/nidr.c
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/nidr/nidr.c	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/mac/static/packages/nidr/nidr.c	(revision 27955)
@@ -0,0 +1,2427 @@
+/*********************************************************************
+Copyright 2008, 2010 Sandia Corporation.  Under the terms of Contract
+DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government
+retains certain rights in this software.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+* Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+* 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.
+
+* Neither the name of Sandia Corporation 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
+OWNER 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.
+***********************************************************************/
+
+/* nidr.c */
+
+#ifndef NIDR_H	/* for $DAKOTA/src/nidr.c */
+#include "nidr.h"
+#endif
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include "avltree.h"
+
+#ifndef NIDR_SQUAWKMAX
+#define NIDR_SQUAWKMAX 10
+#endif
+
+#ifndef NO_NIDR_DYNLIB /*{*/
+typedef KeyWord *(*KW_ADD)(void);
+static KeyWord *kwfind(const char *, KeyWord *, int, int *);
+static KeyWord *toomany(const char *, KeyWord *, int);
+#ifdef _WIN32 /*{{*/
+#include <windows.h>
+#define dlopen(x,y) LoadLibrary(x)
+#define find_dlsym(a,b,c) (a = (KW_ADD)GetProcAddress((HINSTANCE)(b),c))
+#define dlclose(x) FreeLibrary((HMODULE)x)
+#define NO_DLERROR
+#else /*}{*/
+#include <dlfcn.h>
+#include <unistd.h>
+#define find_dlsym(a,b,c) (a = (KW_ADD)dlsym(b,c))
+#undef NO_DLERROR
+#endif /*}}*/
+#endif /*}*/
+
+ extern KeyWord Dakota_Keyword_Top;
+ extern int nidrLineNumber;
+ static KeyWord* Keyword_Top = &Dakota_Keyword_Top;
+ static void *KW_g;
+ void (*nidr_comment)(const char*);
+ static void nidr_keyword_finish(void);
+ static Comment *OutsideComment;
+ static void kw_finish2(void), kw_finish3(void);
+ static void kw_setup1(KeyWord *);
+ static FILE *dumpfile;
+ static KeyWord **ToClear, **ToClear0, **ToClearEnd;
+ static int dumplev, nsquawk, nparse_errors, primary, strict;
+
+ int NIDR_disallow_missing_start = 1;
+
+ enum {n_KWStack0 = 64};
+
+ static KWinfo KWStack0[n_KWStack0];
+
+ static Uint n_KWStack = n_KWStack0;
+
+ static KeyWord *curid, *curkw;
+ static KWinfo	*KWStack = KWStack0,
+		*KWStackBot = KWStack0,
+		*KWStackEnd = KWStack0 + n_KWStack0;
+
+ static Values KWval, KWvalmax;
+ static Real *KWvalbuf;
+ static Uint nKWvalbuf;
+
+ typedef struct Sbuf Sbuf;
+ enum { n_KWsbuf = 8192 };
+ struct Sbuf {
+	char buf[n_KWsbuf];
+	Sbuf *next;
+	};
+
+ typedef struct KWseen KWseen;
+
+ struct
+KWseen {
+	const char *name;
+	KeyWord *kw;
+	KWseen *mnext, *mprev;	/* for identifiers so far unrequited when kw == 0 */
+				/* kw != 0 ==> mprev = first child, and mnext = next sibling */
+	KWseen *parent;
+	KWseen **lcn;		/* &mprev field of last child; lcn == 0 when this */
+				/* keyword was entered into the AVL tree because */
+				/* its parent was seen. */
+	Comment *comment;
+	char **svals;
+	Real *rvals;
+	size_t nvals;
+	};
+
+ static KWseen *KW_cur;
+ NIDR_KWlib *NIDR_Libs;
+
+ void
+nidr_lib_cleanup(void)
+{
+	KeyWord *kw;
+	NIDR_KWlib *L, *L1;
+
+	L1 = NIDR_Libs;
+	NIDR_Libs = 0;
+	while((L = L1)) {
+		if (L->oldtop)
+			Keyword_Top = L->oldtop;
+		if ((kw = L->kw0)) {
+			kw->f.vs = 0;
+			kw->kind &= ~KWKind_Loaded;
+			}
+#ifndef NO_NIDR_DYNLIB /*{{*/
+		dlclose(L->h);
+#else  /*}{*/
+		/* botch("dlclose is NOT SUPPORTED for current configuration"); */
+		fprintf(stderr, "\ndlclose is NOT SUPPORTED for current configuration");
+#endif /*}}*/
+		L1 = L->next;
+		free(L);
+		}
+	}
+
+ static Sbuf KWsbuf0, *KWsbuf = &KWsbuf0;
+ static char *KWsbuf1 = KWsbuf0.buf, *KWsbufe = KWsbuf0.buf + n_KWsbuf;
+ static KWseen *curkws;
+ static const char *valkind[3] = {"integer","numeric","string"};
+
+ int
+nidr_parse_error(void)
+{
+	int n;
+	if ((n = nsquawk - NIDR_SQUAWKMAX) > 0)
+		fprintf(stderr, "\n%d error message%s suppressed.\n",
+			n, "s" + (n == 1));
+	return nsquawk + nparse_errors;
+	}
+
+ void
+nidr_signal_parse_error(void)
+{ ++nparse_errors; }
+
+ void
+nidr_tolower(char *s)
+{
+	for(; *s; ++s)
+		*s = tolower(*s);
+	}
+
+ static void
+botch(const char *fmt, ...)
+{
+	va_list ap;
+	va_start(ap, fmt);
+	fprintf(stderr, "\nBotch:  ");
+	vfprintf(stderr, fmt, ap);
+	fputs(".\n", stderr);
+	va_end(ap);
+	exit(1);
+	}
+
+ static void
+squawk(const char *fmt, ...)
+{
+	va_list ap;
+	if (++nsquawk <= NIDR_SQUAWKMAX) {
+		fprintf(stderr, "Input line %d: ", nidrLineNumber);
+		va_start(ap, fmt);
+		vfprintf(stderr, fmt, ap);
+		fputs(".\n", stderr);
+		va_end(ap);
+		}
+	}
+
+#ifdef NIDR_MALLOC_DEBUG
+ typedef struct MallocDebug MallocDebug;
+ struct MallocDebug
+{
+	MallocDebug *next, *prev;
+	char *where;
+	int nalloc;
+	};
+
+ static MallocDebug MDtop = {&MDtop, &MDtop, 0, 0};
+ int MallocDebugCount, MallocDebugCount1;
+
+ static void*
+Alloc(const char *where, size_t len)
+{
+	MallocDebug *md = malloc(len + sizeof(MallocDebug));
+	if (!md) {
+		fprintf(stderr, "malloc(%lu) failure in %s\n", (unsigned long)len, where);
+		exit(1);
+		}
+	(md->next = MDtop.next)->prev = md;
+	(md->prev = &MDtop)->next = md;
+	md->where = where;
+	if ((md->nalloc = ++MallocDebugCount) == MallocDebugCount1)
+		printf("Hit %d\n", md->nalloc);
+	return (void*)(md + 1);
+	}
+
+ static void
+MallocDebugFree(void *v)
+{
+	MallocDebug *md = (MallocDebug *)v - 1;
+	md->next->prev = md->prev;
+	md->prev->next = md->next;
+	free(md);
+	}
+#define free MallocDebugFree
+
+#else //!NIDR_MALLOC_DEBUG
+ static void*
+Alloc(const char *where, size_t len)
+{
+	void *rv = malloc(len);
+	if (!rv) {
+		fprintf(stderr, "malloc(%lu) failure in %s\n", (unsigned long)len, where);
+		exit(1);
+		}
+	return rv;
+	}
+#endif //NIDR_MALLOC_DEBUG
+
+ const char *
+nidr_basename(const char *p)
+{
+	const char *b;
+
+#ifdef _WIN32
+	if (p[0] && p[1] == ':')
+		p += 2;
+	else if (p[0] == '\\' && p[1] == '\\')
+		for(p += 2; *p; )
+			switch(*p++) {
+			 case '/':
+			 case '\\':
+				goto break2;
+			}
+ break2:
+#endif
+	b = p;
+	while(*p)
+		switch(*p++) {
+		 case '/':
+#ifdef _WIN32
+		 case '\\':
+#endif
+			b = p;
+		}
+	return b;
+	}
+
+ const char *nidr_exedir;
+ int nidr_exedir_len = -1; /* allow resetting to -1 for debugging */
+
+#ifndef _WIN32
+ static int
+Is_executable(uid_t myuid, gid_t mygid, struct stat *sb)
+{
+	if (sb->st_uid == myuid) {
+		if (sb->st_mode & S_IXUSR)
+			return 1;
+		}
+	else if (sb->st_gid == mygid) {
+		if (sb->st_mode & S_IXGRP)
+			return 1;
+		}
+	else if (sb->st_mode & S_IXOTH)
+		return 1;
+	return 0;
+	}
+#endif
+
+ int
+nidr_save_exedir(const char *argv0, int pathadj)
+{
+	/* pathadj & 1 ==> add exedir to $PATH */
+	/* pathadj & 2 ==> add . to $PATH */
+	/* (in both cases if not already there) */
+
+    /* These conditionals don't seem to work (perhaps expected) for Cygwin 
+	   binaries run from Windows command prompt as the compile-time is 
+	   unix-style, but runtime the path is windows-like.  For now comment
+	   out warning when on Cygwin build */
+#ifdef _WIN32
+#define Pathname "Path"
+#define Sep ';'
+#define Slash '\\'
+#define Executable(x) !stat(x,&sb)
+#else
+#define Pathname "PATH"
+#define Sep ':'
+#define Slash '/'
+#define Executable(x) !stat(x,&sb) && Is_executable(myuid, mygid, &sb)
+#endif
+	char *buf, buf0[4096], *s;
+	const char *av0, *p, *p0, *p1, *p2;
+	int dotseen, finaldot, rc;
+	size_t buflen, L, L1, L2, L3;
+	struct stat sb;
+	static const char dotslash[3] = { '.', Slash, 0 };
+#ifdef _WIN32
+	int c;
+	pathadj &= 1;	/* . is implicitly in $PATH under _WIN32 */
+#else
+	gid_t mygid;
+	uid_t myuid;
+#endif
+	if (nidr_exedir_len != -1) {
+		fprintf(stderr, "\nIgnoring extra call on nidr_save_argv0()\n");
+		return 1;
+		}
+	nidr_exedir_len = 0;
+	if (!(av0 = argv0))
+		return 2;
+	if (!(p = getenv(Pathname))) {
+		fprintf(stderr, "\nnidr_save_exedir: no $%s\n", Pathname);
+		return 3;
+		}
+	dotseen = finaldot = rc = 0;
+	buf = buf0;
+	buflen = sizeof(buf0);
+	p0 = p2 = p;
+	p1 = nidr_basename(av0);
+	if ((L = p1 - av0) > 0) {
+		memcpy(s = (char*)Alloc("nidr_save_argv0", L+1), av0, L);
+		s[L] = 0;
+		nidr_exedir = s;
+		nidr_exedir_len = (int)L;
+#ifdef _WIN32
+		for(L1 = 0; L1 < L; ++L1)
+			if (s[L1] == '/')
+				s[L1] = '\\';
+#endif
+		if (!pathadj)
+			return 0;
+		if (*p == Sep)
+			dotseen = 1;
+		while(*p) {
+			if (*p == Sep && (p[1] == Sep || p[1] == 0)) {
+				dotseen = 1;
+				break;
+				}
+			++p;
+			}
+		if (s[0] == '.' && s[1] == Slash && L == 2) {
+#ifdef _WIN32
+			return 0;
+#else
+			if (!dotseen)
+				goto dot_add;
+#endif
+			}
+		L1 = L - 1;
+		for(p = p0;;) {
+			while(*p == Sep)
+				++p;
+			if (!*p)
+				break;
+			if (!strncmp(p, s, L1)) {
+#ifdef _WIN32
+				return 0;
+#else
+				if (!(pathadj &= ~1) || *p0 == Sep)
+					return 0;
+				for(p = p0;;) {
+					if (*p == Sep || (*p == '.' && p[1] == Sep))
+						return 0;
+					while(*p != Sep) {
+						if (!*p)
+							goto dot_add;
+						++p;
+						}
+					if (!*++p)
+						return 0;
+					}
+#endif
+				}
+			while(*++p != Sep)
+				if (!*p)
+					goto break2;
+			if (!*++p) {
+#ifdef _WIN32
+				finaldot = 1; /* leave at 0 for !_WIN32 */
+#endif
+				break;
+				}
+			}
+ break2:
+		L1 = strlen(Pathname);
+		L2 = strlen(p0);
+		if (!pathadj & 2)
+			dotseen = 1;
+		L3 = L1 + L2 + L + 3;
+		s = (char*)Alloc("nidr_save_argv0", L3);
+		memcpy(s, Pathname, L1);
+		s[L1++] = '=';
+		memcpy(s+L1, p0, L2);
+		L1 += L2;
+		if (!finaldot)
+			s[L1++] = Sep;
+		memcpy(s+L1, nidr_exedir, --L);
+		L1 += L;
+		if (!dotseen)
+			s[L1++] = Sep;
+		s[L1] = 0;	/* omit final slash */
+		putenv(s);
+		return 0;
+		}
+	L = strlen(av0);
+#ifdef _WIN32
+	if (L < 5 || av0[L-4] != '.'
+	|| ((c = av0[L-3]) != 'e' && c != 'E')
+	|| ((c = av0[L-2]) != 'x' && c != 'X')
+	|| ((c = av0[L-1]) != 'e' && c != 'E')) {
+		memcpy(s = (char*)Alloc("nidr_save_argv0", L + 5), av0, L);
+		strcpy(s+L, ".exe");
+		L += 4;
+		av0 = s;
+		}
+	if (Executable(av0)) {
+		/* handle implicit . */
+		dotseen = 1;
+		nidr_exedir = dotslash;
+		}
+	else /* do for loop */
+#else
+
+/* Fix for C99 */
+#ifndef __cplusplus
+extern uid_t geteuid(void);
+extern uid_t getegid(void);
+#endif /* __cplusplus */
+
+	myuid = geteuid();
+	mygid = getegid();
+#endif
+	for(; *p; p = p2) {
+		for(p1 = p;; ++p1) {
+			if (*p1 == Sep) {
+				p2 = p1 + 1;
+				if (!*p2)
+					finaldot = 1;
+				break;
+				}
+			if (!*p1) {
+				p2 = p1;
+				break;
+				}
+			}
+		if (p1 == p || (*p == '.' && p1 == p + 1)) {
+			if (!dotseen) {
+				dotseen = 1;
+				if (Executable(av0)) {
+					nidr_exedir = dotslash;
+					break;
+					}
+				}
+			}
+		else {
+			L1 = p1 - p;
+			L2 = L + L1 + 2;
+			if (L2 > buflen) {
+				if (buf != buf0)
+					free(buf);
+				buf = (char*)Alloc("nidr_save_argv0", L2);
+				buflen = L2;
+				}
+			memcpy(buf, p, L1);
+			buf[L1++] = Slash;
+			strcpy(buf+L1, av0);
+			if (Executable(buf)) {
+				s = (char*)Alloc("nidr_save_argv0", L1+1);
+				memcpy(s, buf, L1);
+				s[L1] = 0;
+				nidr_exedir = s;
+				nidr_exedir_len = (int)L1;
+				pathadj &= ~1;
+				break;
+				}
+			}
+		}
+	if (dotseen)
+		pathadj &= ~2;
+	if (!finaldot && *p2) {
+		while(p2[1])
+			++p2;
+		if (*p2 == Sep)
+			finaldot = 1;
+		}
+	if (finaldot && !dotseen && !nidr_exedir) {
+		dotseen = 1;
+		if (Executable(av0))
+			nidr_exedir = dotslash;
+		}
+	if (nidr_exedir == dotslash)
+		nidr_exedir_len = 2;
+	else {
+		if (pathadj & 2 && !finaldot) {
+#ifndef _WIN32
+ dot_add:
+#endif
+			L = strlen(p0);
+			L1 = strlen(Pathname);
+			L2 = L + L1 + 3;
+			s = (char*)Alloc("nidr_save_argv0", L2);
+			memcpy(s, Pathname, L1);
+			s[L1++] = '=';
+			memcpy(s+L1, p0, L);
+			s[L += L1] = Sep;
+			s[L+1] = 0;
+			putenv(s);
+			}
+		if (!nidr_exedir) {
+/* Suppress warning for Cygwin and Windows, where path isn't resolved correctly above */
+#if !defined(__CYGWIN__) && !defined(_MSC_VER)
+			fprintf(stderr, "\nnidr_save_exedir: could not find \"%s\" in $%s\n",
+				av0, Pathname);
+#endif
+			rc = 4;
+			}
+		}
+	if (buf != buf0)
+		free(buf);
+	return rc;
+	}
+
+ void *
+nidr_dlopen(const char *libname)
+{
+#ifdef NO_NIDR_DYNLIB /*{{*/
+	botch("dlopen for \"%s\" is NOT SUPPORTED", libname);
+	return (void*)libname;
+#else /*}{*/
+	char buf0[4096], *buf;
+	const char *b;
+	size_t buflen, L, L1;
+	void *h;
+
+	b = nidr_basename(libname);
+	if (b > libname)
+		return dlopen(libname, RTLD_NOW);
+	buf = buf0;
+	buflen = sizeof(buf0);
+	L = strlen(libname);
+	if (nidr_exedir) {
+		L1 = L + nidr_exedir_len + 1;
+		if (L1 > buflen) {
+			buf = (char*)Alloc("nidr_dlopen", L1);
+			buflen = L1;
+			}
+		memcpy(buf, nidr_exedir, nidr_exedir_len);
+		strcpy(buf + nidr_exedir_len, libname);
+		if ((h = dlopen(buf, RTLD_NOW)))
+			goto ret;
+		}
+	if (!(h = dlopen(libname, RTLD_NOW))) {
+		L1 = L + 3;
+		if (L1 > buflen) {
+			buf = (char*)Alloc("nidr_dlopen", L1);
+			buflen = L1;
+			}
+		buf[0] = '.';
+		buf[1] = Slash;
+		strcpy(buf+2, libname);
+		if (!(h = dlopen(buf, RTLD_NOW)))
+			h = dlopen(libname, RTLD_NOW); 	/* for dlerror */
+		}
+ ret:
+	if (buf != buf0)
+		free(buf);
+	return h;
+#endif  /*}}*/
+	}
+
+#undef Executable
+#undef Slash
+#undef Sep
+#undef Pathname
+
+
+ struct
+Comment {
+	int k;		/* subscript for comfree */
+	size_t avail;	/* bytes left (from tnext) */
+	char *text;	/* text of comment */
+	char *tnext;	/* null byte at end of comment */
+	Comment *fnext;	/* next free Comment */
+	};
+
+ enum { Comment_kmax = 7 };
+
+ static Comment *comfree[Comment_kmax+1];
+ static size_t Comment_maxlen[Comment_kmax+1];
+
+ static void
+comment_free(Comment *c)
+{
+	int k = c->k;
+
+	if (k > Comment_kmax)
+		free(c);
+	else {
+		c->fnext = comfree[k];
+		comfree[k] = c;
+		}
+	}
+
+ static Comment*
+alloc_comment(int k, size_t L)
+{
+	Comment *c;
+
+	for(; k <= Comment_kmax; ++k) {
+		if (L <= Comment_maxlen[k]) {
+			L = Comment_maxlen[k];
+			if ((c = comfree[k])) {
+				comfree[k] = c->fnext;
+				goto have_c;
+				}
+			break;
+			}
+		}
+	c = (Comment*)Alloc("save_comment", L + sizeof(Comment) + 1);
+	c->k = k;
+	c->text = (char*)(c+1);
+ have_c:
+	c->avail = L;
+	c->tnext = c->text;
+	return c;
+	}
+
+ static void
+save_comment(const char *s)
+{
+	Comment *c, *c1, **cp;
+	size_t L, L1;
+
+	L = strlen(s);
+	cp = curid ? &curid->comment : curkws ? &curkws->comment : &OutsideComment;
+	if ((c = *cp)) {
+		if (c->avail >= L)
+			goto cupdate;
+		L1 = c->tnext - c->text;
+		c1 = alloc_comment(c->k + 1, L + L1);
+		memcpy(c1->text, c->text, L1);
+		c1->tnext = c1->text + L1;
+		c1->avail -= L1;
+		comment_free(c);
+		c = c1;
+		}
+ 	else
+		c = alloc_comment(0, L);
+ cupdate:
+	memcpy(c->tnext, s, L+1);
+	c->tnext += L;
+	c->avail -= L;
+	*cp = c;
+	}
+
+ static void
+comment_setup(void)
+{
+	int i;
+	size_t L;
+	nidr_comment = save_comment;
+	/* "- 1" to allow for terminating '\0' */
+	for(L = 64; L <= sizeof(Comment) - 1; L <<= 1);
+	for(i = 0; i <= Comment_kmax; ++i, L <<= 1)
+		Comment_maxlen[i] = L - sizeof(Comment) - 1;
+	}
+
+ static void
+comment_reset(void)
+{
+	Comment *c, *c1;
+	int i;
+
+	for(i = 0; i <= Comment_kmax; ++i) {
+		c1 = comfree[i];
+		comfree[i] = 0;
+		while((c = c1)) {
+			c1 = c->fnext;
+			free(c);
+			}
+		}
+	nidr_comment = 0;
+	}
+
+ static void
+dumpcomment(Comment **cp)
+{
+	Comment *c = *cp;
+	*cp = 0;
+	fprintf(dumpfile, "%s", c->text);
+	comment_free(c);
+	}
+
+ static void
+dumpname(int hasval, KeyWord *kw)
+{
+	const char *fmt[2] = { "%s", "%s =" };
+	int i;
+	if (OutsideComment)
+		dumpcomment(&OutsideComment);
+	if (primary)
+		kw += kw->paoff;
+	for(i = 0; i < dumplev; ++i)
+		putc(' ', dumpfile);
+	fprintf(dumpfile,fmt[hasval],kw->name);
+	if (!hasval) {
+		if (kw->comment)
+			dumpcomment(&kw->comment);
+		else if (kw != curkw)
+			putc('\n', dumpfile);
+		}
+	}
+
+ static void
+dumpstring(const char *s0)
+{
+	const char *s;
+	int c, n1, n2, q;
+
+	n1 = n2 = 0;
+	for(s = s0;;)
+		switch(*s++) {
+		  case 0: goto break2;
+		  case '\'':
+			++n1;
+			break;
+		  case '"':
+			++n2;
+		  }
+ break2:
+	q = '\'';
+	if (n1 > n2)
+		q = '"';
+	putc(' ', dumpfile);
+	putc(q, dumpfile);
+	s = s0;
+	while((c = *s++)) {
+		if (c == q)
+			putc(q, dumpfile);
+		putc(c, dumpfile);
+		}
+	putc(q, dumpfile);
+	}
+
+ static void
+dumpvals0(KeyWord *kw)
+{
+	Real *r;
+	const char **sp;
+	int i, *ip, indent, j, n;
+
+	ip = 0; /* shut up warning of possible use without initialization */
+	sp = 0; /* ditto */
+	if (!(r = KWval.r) && !(ip = KWval.i) && !(sp = KWval.s))
+		return;
+	n = KWval.n;
+	putc((indent = n > 1) ? '\n' : ' ', dumpfile);
+	for(i = 0;;) {
+		if (indent) {
+			putc('\t', dumpfile);
+			for(j = 0; j < dumplev; ++j)
+				putc(' ', dumpfile);
+			}
+		if (r)
+			fprintf(dumpfile, "%.15g", r[i]);
+		else if (ip)
+			fprintf(dumpfile, "%d", ip[i]);
+		else
+			dumpstring(sp[i]);
+		if (++i >= n)
+			break;
+		indent = 1;
+		putc('\n', dumpfile);
+		}
+	if (kw->comment)
+		dumpcomment(&kw->comment);
+	else
+		putc('\n', dumpfile);
+	}
+
+ static void (*dumpvals)(KeyWord *kw) = dumpvals0;
+
+ static void
+dumpvals1(KeyWord *kw)
+{
+	Real *r;
+	const char **sp;
+	int i, *ip, n;
+
+	ip = 0; /* shut up warning of possible use without initialization */
+	sp = 0; /* ditto */
+	if ((r = KWval.r) || (ip = KWval.i) || (sp = KWval.s)) {
+		n = KWval.n;
+		for(i = 0; i < n; ++i) {
+			if (r)
+				fprintf(dumpfile, " %.15g", r[i]);
+			else if (ip)
+				fprintf(dumpfile, " %d", ip[i]);
+			else
+				dumpstring(sp[i]);
+			}
+		}
+	if (kw->comment)
+		dumpcomment(&kw->comment);
+	else
+		putc('\n', dumpfile);
+	}
+
+ char *
+nidr_KWscopy(const char *s)
+{
+	Sbuf *sb;
+	char *rv;
+
+	size_t L = strlen(s) + 1;
+	if (L >= n_KWsbuf)
+		botch("String too long in KWscopy");
+	if (KWsbufe - KWsbuf1 < L) {
+		if (!KWsbuf->next) {
+			KWsbuf->next = sb = (Sbuf*)Alloc("KWscopy", sizeof(Sbuf));
+			sb->next = 0;
+			}
+		KWsbuf = KWsbuf->next;
+		KWsbuf1 = KWsbuf->buf;
+		KWsbufe = KWsbuf1 + n_KWsbuf;
+		}
+	strcpy(KWsbuf1, s);
+	rv = KWsbuf1;
+	KWsbuf1 += L;
+	return rv;
+	}
+
+ static void
+KWvalbuf_inc(void)
+{
+	Real *r;
+	Uint n;
+
+	n = nKWvalbuf << 1;
+	r = (Real*)Alloc("KWvalbuf", n*sizeof(Real));
+	memcpy(r, KWvalbuf, nKWvalbuf*sizeof(Real));
+	free(KWvalbuf);
+	KWvalbuf = r;
+	nKWvalbuf = n;
+	KWvalmax.n <<= 1;
+	if (KWval.r) {
+		KWval.r = r;
+		KWvalmax.r = r + n;
+		}
+	else if (KWval.i) {
+		KWval.i = (int*) r;
+		KWvalmax.i = (int*)(r + n);
+		}
+	else if (KWval.s) {
+		KWval.s = (const char**)r;
+		KWvalmax.s = (const char**)(r + n);
+		}
+	else
+		botch("Unexpected case in KWvalbuf_inc");
+	}
+
+/* KWval.rstate values...
+ *	value	form seen
+ *	0	v
+ *	1	L:u
+ *	2	L:s:u
+ *	3	n*v
+ *	4	n*L:u
+ *	5	n*L:s:u
+ */
+
+ static void
+finish_rexpand(void)
+{
+	int i, k, n, os;
+	Real sgn, st, u, v, x;
+
+	os = KWval.rstate;
+	KWval.rstate = 0;
+	n = KWval.n;
+	k = 1;
+	if (os >= 3) {
+		KWval.n = n -= os-1;
+		k = KWval.r[n];
+		if (k != KWval.r[n]) {
+			squawk("Noninteger replication factor %.17g", KWval.r[n]);
+			return;
+			}
+		else if (k < 1) {
+			squawk("Nonpositive replication factor %d", k);
+			return;
+			}
+		++n;
+		os -= 3;
+		}
+	else
+		KWval.n = n -= os + 1;
+	v = KWval.r[n++];
+	u = st = 0.;	/* Shut up warning of not being initialized. */
+			/* Both will be assigned before being used. */
+	switch(os) {
+	  case 0:
+		n = KWval.n;
+		for(i = 0; i < k; ++i) {
+			if (n >= KWvalmax.n)
+				KWvalbuf_inc();
+			KWval.r[n++] = v;
+			}
+		KWval.n = n;
+		return;
+	  case 1:
+		st = 1;
+		u = KWval.r[n];
+		break;
+	  case 2:
+		st = KWval.r[n];
+		if (st == 0.) {
+			squawk("Invalid stride == zero.");
+			return;
+			}
+		u = KWval.r[n+1];
+	  }
+	sgn = 1.;
+	if (st < 0.)
+		sgn = -1.;
+	if (sgn*(u - v) < 0.) {
+		squawk("Empty sequence.");
+		return;
+		}
+	n = KWval.n;
+	do {
+		for(i = 0; sgn*(u - (x = v + i*st)) >= 0.; ++i) {
+			if (n >= KWvalmax.n)
+				KWvalbuf_inc();
+			KWval.r[n++] = x;
+			}
+		}
+		while(--k > 0);
+	KWval.n = n;
+	}
+
+ static void
+rexpand(int state)
+{
+	int os;
+
+	os = KWval.rstate;
+	KWval.rstate = 0;
+	switch(state) {
+	  case 1: /* just saw *v */
+		if (os == 0)
+			KWval.rstate = 3;
+		else
+			squawk("Unexpected '*'");
+		break;
+	  case 2: /* just saw :v */
+		if (os == 2 || os == 5)
+			squawk("Unexpected ':'");
+		else
+			KWval.rstate = os + 1;
+		break;
+	  }
+	}
+
+ static void
+nidr_bufr_strict(Real r, int state)
+{
+	int k, n;
+
+	if (KWval.s) {
+		squawk("expected a quoted string, but found a number");
+		return;
+		}
+	if (KWval.rstate && !state)
+		finish_rexpand();
+	if (!KWval.r && !KWval.i) {
+		squawk("No values may be specified for %s", KWStack->kw->name);
+		return;
+		}
+	if ((n = KWval.n) >= KWvalmax.n)
+		KWvalbuf_inc();
+	if (KWval.r)
+		KWval.r[n] = r;
+	else {
+		k = (int)r;
+		if (k != r)
+			squawk("truncating %.17g to %d", r, k);
+		KWval.i[n] = k;
+		}
+	++KWval.n;
+	if (state | KWval.rstate)
+		rexpand(state);
+	}
+
+ static void
+nidr_bufs_strict(const char *s)
+{
+	if (!KWval.s) {
+		if (KWval.r)
+			squawk("Expected a number, but found a quoted string");
+		else
+			squawk("Misplaced quoted string");
+		return;
+		}
+	if (KWval.n >= KWvalmax.n)
+		KWvalbuf_inc();
+	KWval.s[KWval.n++] = s;
+	}
+
+ void
+nidr_reset(void)
+{
+	/* Originally did this in case KWKind_Str of kw_setup(), */
+	/* but this leads to confusion with erroneous input. */
+	if (curkw)
+		nidr_keyword_finish();
+	KWsbuf = &KWsbuf0;
+	KWsbuf1 = KWsbuf0.buf;
+	KWsbufe = KWsbuf0.buf + n_KWsbuf;
+	}
+
+ NIDR_KWlib *
+nidr_lib_record(void *h, const char *libname)
+{
+	NIDR_KWlib *Lib;
+	size_t L;
+
+	L = strlen(libname) + 1;
+	Lib = (NIDR_KWlib*)Alloc("NIDR_lib_record", sizeof(NIDR_KWlib) + L);
+	memset(Lib, 0, sizeof(NIDR_KWlib));
+	memcpy(Lib->libname = (char*)(Lib+1), libname, L);
+	if (!(Lib->next = NIDR_Libs))
+		atexit(nidr_lib_cleanup);
+	NIDR_Libs = Lib;
+	Lib->h = h;
+	return Lib;
+	}
+
+ static KeyWord*
+kw_insert(KeyWord *kw, int *tryagain)
+{
+#ifdef NO_NIDR_DYNLIB /*{{*/
+	botch("Loading library \"%s\" for %s is disallowed",
+		kw->f.vf, kw->name);
+#else /*}{*/
+	KW_ADD kwa;
+	KeyWord *kw0, *kw1, *kw2;
+	NIDR_KWlib *Lib;
+	Uint u1, ui;
+	const char *lname, *s;
+	int newtop, nmatch;
+	void *h;
+
+	if (tryagain)
+		*tryagain = 0;
+	if (kw->kind & KWKind_Loaded)
+		return (KeyWord*)kw->f.vs;
+	h = nidr_dlopen(lname = (const char*)kw->f.vf);
+	if (!h) {
+#ifndef NO_DLERROR
+		if ((s = dlerror()))
+			botch("Cannot open library \"%s\" for %s:\n\t%s",
+				lname, kw->name, s);
+		else
+#endif
+			botch("Cannot open library \"%s\" for %s",
+				lname, kw->name);
+		}
+	if (!find_dlsym(kwa, h, "keyword_add"))
+		botch("dlsym(\"keyword_add\") failed for %s", lname);
+	kw1 = (*kwa)();
+	if (!(s = kw1->name)) {
+		s = "<NULL>";
+		goto namebotch;
+		}
+	newtop = 0;
+	if (strcmp(s, kw->name)) {
+		if (!KW_cur && !strcmp(s,"KeywordTop") && kw1->kind & KWKind_Dynmult)
+			newtop = 1;
+		else if (tryagain && kw1->nkw > 0
+		 && (kw2 = kwfind(kw->name, kw1->kw, kw1->nkw, &nmatch))) {
+			if (nmatch > 1) {
+				toomany(kw->name, kw1, nmatch);
+				botch("Too many matches in library %s", lname);
+				}
+			*tryagain = 1;
+			}
+		else
+ namebotch:
+			botch("Library %s: expected top keyword to be %s but got %s",
+				lname, kw->name, s);
+		}
+	ui = kw->kind  & (KWKind_Mask|KWKind_List);
+	u1 = kw1->kind & (KWKind_Mask|KWKind_List);
+	if (ui != u1)
+		botch("Library %s: expected kind %u for %s, but got %u",
+			lname, ui, s, u1);
+	Lib = nidr_lib_record(h, lname);
+	Lib->kw0 = kw0 = kw;
+	memcpy(&Lib->kw, kw, sizeof(KeyWord));
+	kw = &Lib->kw;
+	kw->kw = kw1->kw;
+	kw->nkw = kw1->nkw;
+	kw->f = kw1->f;
+	kw0->f.vs = (void*)kw;
+	kw0->kind |= KWKind_Loaded;
+	if (newtop) {
+		Lib->oldtop = Keyword_Top;
+		Keyword_Top = kw;
+		kw->kind |= KWKind_Dynmult;
+		}
+#endif	/*}}*/
+	return kw;
+	}
+
+ static void
+kwnext_setup(KeyWord *kw, Uint n)
+{
+	KeyWord *kwe;
+
+	if (kw->kwnext || (n <= 1 && kw->name))
+		return;
+#ifndef NO_NIDR_DYNLIB /*{*/
+	if (kw->kind & KWKind_Extended) {
+		KeyWordx *kx1, *kxe;
+		for(kx1 = (KeyWordx*)kw; !kx1->kw.name; ++kx1)
+			kx1->kw.kwnext = (KeyWord*)(kx1 + 1);
+		for(kxe = kx1 + n - 1; kx1 < kxe; ++kx1)
+			kx1->kw.kwnext = (KeyWord*)(kx1 + 1);
+		return;
+		}
+#endif
+	for(; !kw->name; ++kw)
+		kw->kwnext = kw + 1;
+	for(kwe = kw + n - 1; kw < kwe; ++kw)
+		kw->kwnext = kw + 1;
+	}
+
+ static void
+KWStack_inc(void)
+{
+	KWinfo *kwi;
+	Uint nn;
+	size_t len;
+
+	nn = n_KWStack << 1;
+	kwi = (KWinfo*)Alloc("kw_setup", len = nn*sizeof(KWinfo));
+	memcpy(kwi, KWStackBot, len >> 1);
+	if (KWStackBot != KWStack0)
+		free(KWStackBot);
+	KWStackBot = kwi;
+	KWStackEnd = kwi + nn;
+	KWStack = kwi + n_KWStack;
+	n_KWStack = nn;
+	}
+
+ static KeyWord*
+kw_setup(KeyWord *kw, void *g, const char *name)
+{
+	KWinfo *kwi;
+	KeyWord **alt, *kw1, **req;
+
+	Uint k, nalt, nn, nreq;
+	int *altct, deferred;
+	size_t len;
+
+	deferred = 0;
+	if (kw->kind & KWKind_Dynlib) {
+		if (kw->kw)
+			deferred = 1;
+		else
+			kw = kw_insert(kw, 0);
+		}
+ top:
+	if ((kw1 = kw->kw)) {
+		kwnext_setup(kw1, kw->nkw);
+		if (kw->kind & KWKind_Dynmult)
+			return kw;
+		while(!kw1->name) {
+			if (!(kw1->kind & KWKind_Stacked)) {
+				kw1->kind |= KWKind_Stacked;
+				kw_setup(kw1, g, name);
+				}
+			kw1 = kw1->kwnext;
+			}
+		}
+	if (!curkw) {
+		KWStack = KWStackBot = KWStack0;
+		KWStackEnd = KWStack0 + n_KWStack0;
+		curkw = kw;
+		}
+	else if (++KWStack >= KWStackEnd)
+		KWStack_inc();
+	kwi = KWStack;
+	kwi->name = name;
+	kwi->kw = kw;
+	kwi->kw1 = kw1;
+	nalt = nreq = 0;
+	if (kw1)
+		for(; kw1; kw1 = kw1->kwnext) {
+			if (nalt < kw1->alt)
+				nalt = kw1->alt;
+			if (nreq < kw1->req)
+				nreq = kw1->req;
+			}
+	kwi->nalt = nalt;
+	kwi->nreq = nreq;
+	alt = req = 0;
+	altct = 0;
+	if ((nn = nalt + nreq) > 0) {
+		nn += 2;
+		alt = (KeyWord**)Alloc("kw_setup(alt)",
+				len = nn*sizeof(KeyWord*) + (nalt+1)*sizeof(int));
+		memset(alt, 0, len);
+		req = alt + nalt + 1;
+		altct = (int*)(req + nreq + 1);
+		/* altct[0], alt[0] and req[0] = "don't care" slots */
+		}
+	kwi->alt = alt;
+	kwi->req = req;
+	kwi->altct = altct;
+	if (nreq)
+		for(kw1 = kwi->kw1; kw1; kw1 = kw1->kwnext)
+			req[kw1->req] = kw1;
+	if (nalt)
+		for(kw1 = kwi->kw1; kw1; kw1 = kw1->kwnext)
+			if (kw1->kind & KWKind_primary)
+				++altct[kw1->alt];
+	kwi->g = g;
+	KWval.n = 0;
+	KWval.i = 0;
+	KWval.r = 0;
+	KWval.s = 0;
+	if ((k = kw->kind & KWKind_Mask)) {
+		if (!KWvalmax.r)
+			KWvalbuf = (Real *)Alloc("kw_setup(KWvalbuf)",
+						(nKWvalbuf = 128)*sizeof(Real));
+		switch(k) {
+
+		  case KWKind_Int:
+			KWval.i = (int*)KWvalbuf;
+			KWvalmax.n = (nKWvalbuf*sizeof(Real))/sizeof(int);
+			KWvalmax.i = KWval.i + KWvalmax.n;
+			break;
+
+		  case KWKind_Real:
+			KWval.r = KWvalbuf;
+			KWvalmax.r = KWvalbuf + (KWvalmax.n = nKWvalbuf);
+			break;
+
+		  case KWKind_Str:
+			KWval.s = (const char**)KWvalbuf;
+			KWvalmax.n = (nKWvalbuf*sizeof(Real))/sizeof(char*);
+			KWvalmax.s = KWval.s + KWvalmax.n;
+		  }
+		}
+	if (deferred) {
+		kw = kw_insert(kw, 0);
+		deferred = 0;
+		goto top;
+		}
+	if (!(kwi->needstart = kw->kind & KWKind_Mask)) {
+		if (kw->name) {
+			if (dumpfile)
+				dumpname(0, kw);
+			++dumplev;
+			}
+		if (kw->f.start)
+			(*kw->f.start)(kw->name, 0, &KWStack->g, kw->f.vs);
+		}
+	else if (!kw->f.start && NIDR_disallow_missing_start)
+		botch("No start routine for %s", kw->name);
+	return kw;
+	}
+
+ static KeyWord *
+kwfind(const char *name, KeyWord *keywds, int n, int *nmatch)
+{
+	KeyWord *kn, *kn1;
+	int k, n0, n1, n2, nn;
+	size_t L;
+
+	*nmatch = 0;
+	if (n <= 0)
+		return 0;
+	L = strlen(name);
+	n0 = 0;
+	nn = n;
+#ifndef NO_NIDR_DYNLIB /*{*/
+	if (n > 0 && keywds->kind & KWKind_Extended) {
+	    while(n > 0) {
+		n1 = n >> 1;
+		kn = (KeyWord*)((KeyWordx*)keywds + n1);
+		k = strncmp(name, kn->name, L);
+		if (k < 0)
+			n = n1;
+		else if (k > 0) {
+			n -= ++n1;
+			n0 += n1;
+			keywds = (KeyWord*)((KeyWordx*)kn + 1);
+			}
+		else {
+			/* Found -- check for range of matches. */
+			/* Here we use linear search, as we expect */
+			/* the range to be small. */
+			n = n1 + n0;
+			n2 = n + 1;
+			if (kn->name[L]) {
+				for(kn1 = kn; n2 < nn; ++n2) {
+					kn1 = (KeyWord*)((KeyWordx*)kn1 + 1);
+					if (strncmp(name, kn1->name, L))
+						break;
+					if (!kn1->name[L])
+						goto found1;
+					}
+				kn1 = kn;
+				while(n > 0) {
+					kn1 = (KeyWord*)((KeyWordx*)kn1 - 1);
+					if (strncmp(name, kn1->name, L))
+						break;
+					if (!kn1->name[L])
+						goto found1;
+					--n;
+					kn = kn1;
+					}
+				}
+			*nmatch = n2 - n;
+			return kn;
+			}
+		}
+	    }
+	else
+#endif	/*}*/
+	while(n > 0) {
+		n1 = n >> 1;
+		kn = keywds + n1;
+		k = strncmp(name, kn->name, L);
+		if (k < 0)
+			n = n1;
+		else if (k > 0) {
+			n -= ++n1;
+			n0 += n1;
+			keywds = kn + 1;
+			}
+		else {
+			/* Found -- check for range of matches. */
+			/* Here we use linear search, as we expect */
+			/* the range to be small. */
+			n = n1 + n0;
+			n2 = n + 1;
+			if (kn->name[L]) {
+				for(kn1 = kn; n2 < nn; ++n2) {
+					++kn1;
+					if (strncmp(name, kn1->name, L))
+						break;
+					if (!kn1->name[L])
+						goto found1;
+					}
+				kn1 = kn;
+				while(n > 0) {
+					--kn1;
+					if (strncmp(name, kn1->name, L))
+						break;
+					if (!kn1->name[L]) {
+ found1:
+						*nmatch = 1;
+						return kn1;
+						}
+					--n;
+					kn = kn1;
+					}
+				}
+			*nmatch = n2 - n;
+			return kn;
+			}
+		}
+	return 0;	/* not found */
+	}
+
+ static KeyWord *
+toomany(const char *name, KeyWord *kw, int nmatch)
+{
+	int i;
+	squawk("\"%s\" is ambiguous; possible matches..", name);
+	if (nsquawk <=  NIDR_SQUAWKMAX)
+		for(i = 0; i < nmatch; i++, kw++)
+			fprintf(stderr, "\t%s\n", kw->name);
+	return 0;
+	}
+
+ KeyWord *
+nidr_keyword(const char *name)
+{
+	int nmatch;
+	KeyWord *kw, *kw1;
+
+	kw = kwfind(name, Keyword_Top->kw, Keyword_Top->nkw, &nmatch);
+	if (nmatch > 1)
+		return toomany(name, kw, nmatch);
+	else if (kw) {
+		if (!(kw1 = curkw)) {
+			kw = kw_setup(kw, KW_g, name);
+			if (kw->kind & KWKind_Dynmult)
+				return kw;
+			}
+		if (!strict) {
+			if (kw1)
+				nidr_keyword_finish();
+			kw_setup1(kw);
+			}
+		}
+	return kw;
+	}
+
+ static void
+valcheck(KeyWord *kw)
+{
+	Real *r;
+	int *z;
+	int i, k, n;
+
+	n = KWval.n;
+	switch(k = kw->kind & KWKind_Mask) {
+	  case KWKind_Int:
+		z = KWval.i;
+		if (kw->kind & KWKind_strictLb) {
+			for(i = 0; i < n; ++i)
+				if (z[i] <= kw->Lb) {
+					squawk("%s must be > %.0f", kw->name, kw->Lb);
+					break;
+					}
+				}
+		else if (kw->kind & KWKind_caneqLb) {
+			for(i = 0; i < n; ++i)
+				if (z[i] < kw->Lb) {
+					squawk("%s must be >= %.0f", kw->name, kw->Lb);
+					break;
+					}
+				}
+		if (kw->kind & KWKind_strictUb) {
+			for(i = 0; i < n; ++i)
+				if (z[i] >= kw->Ub) {
+					squawk("%s must be < %.0f", kw->name, kw->Ub);
+					break;
+					}
+				}
+		else if (kw->kind & KWKind_caneqUb) {
+			for(i = 0; i < n; ++i)
+				if (z[i] > kw->Ub) {
+					squawk("%s must be >= %.0f", kw->name, kw->Ub);
+					break;
+					}
+				}
+		break;
+	  case KWKind_Real:
+		r = KWval.r;
+		if (kw->kind & KWKind_strictLb) {
+			for(i = 0; i < n; ++i)
+				if (r[i] <= kw->Lb) {
+					squawk("%s must be > %g", kw->name, kw->Lb);
+					break;
+					}
+				}
+		else if (kw->kind & KWKind_caneqLb) {
+			for(i = 0; i < n; ++i)
+				if (r[i] < kw->Lb) {
+					squawk("%s must be >= %g", kw->name, kw->Lb);
+					break;
+					}
+				}
+		if (kw->kind & KWKind_strictUb) {
+			for(i = 0; i < n; ++i)
+				if (r[i] >= kw->Ub) {
+					squawk("%s must be < %g", kw->name, kw->Ub);
+					break;
+					}
+				}
+		else if (kw->kind & KWKind_caneqUb) {
+			for(i = 0; i < n; ++i)
+				if (r[i] > kw->Ub) {
+					squawk("%s must be >= %g", kw->name, kw->Ub);
+					break;
+					}
+				}
+		break;
+	  default:
+		botch("Bug: unexpected (kw->kind & KWKind_Mask) = %d in valcheck",n);
+	  }
+	}
+
+ static void
+read_lib(const char *libname, KeyWord *kw)
+{
+#ifdef NO_NIDR_DYNLIB /*{{*/
+	botch("LIBNAME is disallowed: cannot read \"%s\"", libname);
+#else /*}{*/
+	KeyWord *kw1;
+	KW_ADD kwa;
+	NIDR_KWlib *Lib;
+	void *h;
+
+	h = nidr_dlopen(libname);
+	if (!h) {
+#ifndef NO_DLERROR
+		const char *s;
+		if ((s = dlerror()))
+			botch("Cannot open library \"%s\":\n\t%s", libname, s);
+		else
+#endif
+			botch("Cannot open library \"%s\"", libname);
+		}
+	if (!find_dlsym(kwa, h, "keyword_add"))
+		botch("dlsym(\"keyword_add\") failed for %s", libname);
+	kw1 = (*kwa)();
+	Lib = nidr_lib_record(h, libname);
+	kw->nkw = kw1->nkw;
+	kw->kw = kw1->kw;
+	kw->f = kw1->f;
+	kw->kind |= KWKind_Loaded;
+#endif	/*}}*/
+	}
+
+ static void
+nidr_id_strict_finish(KWinfo *kwi, KeyWord *kw, const char *name)
+{
+	KeyWord *kw1;
+	int n;
+
+	if (kw->alt) {
+		if ((kw1 = kwi->alt[n = kw->alt])) {
+			if (strcmp(kw1->name, name))
+				squawk("%s and %s are mutually exclusive",
+					kw1->name, name);
+			else
+				squawk("%s was already specified", name);
+			}
+		else
+			kwi->alt[n] = kw;
+		}
+	if (kw->req) {
+		if (kwi->req[n = kw->req])
+			kwi->req[n] = 0;
+		else if (!kw->alt)
+			squawk("%s specified more than once", name);
+		}
+	}
+
+ static KWinfo *
+dispatch_val(KWinfo *kwi)
+{
+	KeyWord *kw = kwi->kw;
+
+	kwi->needstart = 0;
+	if (KWval.n) {
+		if (KWval.rstate)
+			finish_rexpand();
+		if (dumpfile) {
+			dumpname(1, kw);
+			dumpvals(kw);
+			}
+		if (kw->kind & (KWKind_Lb|KWKind_Ub))
+			valcheck(kw);
+		if (kw->f.start)
+			(*kw->f.start)(kw->name, &KWval, &kwi->g, kw->f.vs);
+		else if ((kw->kind & (KWKind_Libname | KWKind_Loaded)) == KWKind_Libname) {
+			read_lib(KWval.s[0], kw);
+			kw = kw_setup(kw, kwi->g, kw->name);
+			if (kw->f.start)
+				(*kw->f.start)(kw->name, &KWval, &kwi->g, kw->f.vs);
+			if (kw == kwi->kw) {
+				*kwi = *KWStack;
+				--KWStack;
+				}
+			else
+				kwi = KWStack;
+			}
+		KWval.n = 0;
+		}
+	else if ((kw->kind & (KWKind_Libname|KWKind_Loaded))
+			  != (KWKind_Libname|KWKind_Loaded))
+		squawk("expected %sone %s value for %s",
+			kw->kind & KWKind_List ? "at least " : "",
+			valkind[(kw->kind & KWKind_Mask)-1], kw->name);
+	++dumplev;
+	return kwi;
+	}
+
+ static void
+oneof(KeyWord *kw, int alt, int n)
+{
+	KeyWord *kw1;
+
+	squawk("One of the following %d entities\nmust be specified for %s..",
+		n, kw->name);
+	for(kw1 = kw->kw; !kw1->name; kw1 = kw1->kwnext);
+	for(; kw1; kw1 = kw1->kwnext)
+		if (kw1->alt == alt && kw1->kind & KWKind_primary)
+			fprintf(stderr, "\t%s\n", kw1->name);
+	}
+
+ static void
+missing_chk(KeyWord *kw1, KWinfo *kwi)
+{
+	KeyWord *kw0, *kw2, **req;
+	Uint a;
+	char seen0[1024], *seen;
+	const char *kwname;
+	int n;
+	size_t nreq;
+
+	/* only issue one error message per missing keyword */
+
+	nreq = 0;
+	for(kw0 = kw1; kw1; kw1 = kw1->kwnext)
+		if (nreq < kw1->req)
+			nreq = kw1->req;
+	seen = seen0;
+	if (++nreq > sizeof(seen0))
+		seen = (char*)Alloc("missing_chk", nreq);
+	memset(seen, 0, nreq);
+	req = kwi->req;
+	for(kw1 = kw0; kw1; kw1 = kw1->kwnext) {
+		if (kw1->req && req[kw1->req] && !seen[kw1->req] && kw1->kind & KWKind_primary) {
+			seen[kw1->req] = 1;
+			a = -1;
+			if (!kw1->alt || (n = kwi->altct[a = kw1->alt]) <= 1) {
+				if (!(kwname = kwi->name))
+					kwname = "<NIDRBUG>";
+				for(kw2 = kw1;;) {
+					if (kw2->alt == a && kw2->kind & KWKind_primary)
+						break;
+					if (!(kw2 = kw2->kwnext))
+						botch("Bug in missing_chk");
+					}
+				squawk("%s must be specified for %s",
+					kw2->name, kwname);
+				}
+			else
+				oneof(kwi->kw, kw1->alt, n);
+			}
+		}
+	if (seen != seen0)
+		free(seen);
+	}
+
+ static void
+finalize(KWinfo *kwi)
+{
+	KeyWord *kw, *kw1, **req;
+
+	kw = kwi->kw;
+	kw->kind &= ~KWKind_Stacked;
+	if (kwi->needstart)
+		kwi = dispatch_val(kwi);
+	if (kw->name)
+		--dumplev;
+	if (kw->f.final)
+		(*kw->f.final)(kw->name, 0, &kwi->g, kw->f.vf);
+	if (kwi->alt) {
+		if (kwi->nreq) {
+			req = kwi->req;
+			for(kw1 = kwi->kw1; kw1; kw1 = kw1->kwnext)
+				if (kw1->req && req[kw1->req]) {
+					missing_chk(kw1, kwi);
+					break;
+					}
+			}
+		free(kwi->alt);
+		}
+	}
+
+ static KeyWord *
+nidr_identifier_strict(const char *name)
+{
+	KWinfo *kwi, *kwi1;
+	KeyWord *kw, *kw1;
+	int nmatch;
+	size_t height;
+
+	if (!curkw)
+		botch("curkw = 0 in nidr_identifier");
+	kwi = KWStack;
+	if (kwi->needstart)
+		kwi = dispatch_val(kwi);
+	for(kwi1 = kwi;;) {
+		kw1 = kwi->kw;
+		if ((kw = kwfind(name, kwi->kw1, kw1->nkw, &nmatch)))
+			break;
+		if (kwi == KWStackBot)
+			return 0;
+		if ((--kwi)->kw->name && !(kwi->kw->kind & KWKind_Loaded))
+			kwi1 = kwi;
+		}
+	if (nmatch > 1)
+		return toomany(name, kw, nmatch);
+	while(KWStack > kwi1)
+		finalize(KWStack--);
+	if ((kw->kind & (KWKind_Libname | KWKind_Loaded)) == KWKind_Libname) {
+		nidr_id_strict_finish(kwi, kw, name);
+		if (!KWvalmax.r)
+			KWvalbuf = (Real *)Alloc("nidr_identifier_strict",
+						(nKWvalbuf = 128)*sizeof(Real));
+		if (++KWStack >= KWStackEnd)
+			KWStack_inc();
+		kwi = KWStack;
+		kwi->kw = kw;
+		kwi->needstart = 1;
+		KWval.s = (const char**)KWvalbuf;
+		KWvalmax.n = (nKWvalbuf*sizeof(Real))/sizeof(char*);
+		KWvalmax.s = KWval.s + KWvalmax.n;
+		}
+	else {
+		height = kwi - KWStackBot;
+		kw = kw_setup(kw, kwi->g, name);
+		kwi = KWStackBot + height; /* in case kw_setup reallocated KWStack */
+		nidr_id_strict_finish(kwi, kw, name);
+		}
+	return kw;
+	}
+
+ static void
+nidr_keyword_finish(void)
+{
+	if (!strict)
+		kw_finish2();
+	for(;;--KWStack) {
+		finalize(KWStack);
+		if (KWStack == KWStackBot)
+			break;
+		}
+	if (!strict)
+		kw_finish3();
+	curid = curkw = 0;
+	}
+
+ const char*
+nidr_keyword_name(void)
+{ return curkw ? curkw->name : "<none>"; }
+
+/* Some of the above assumes strict nesting according to dakota.input.nspec. */
+/* Code here is meant to relax this assumption, allowing more flexibility in */
+/* the order of identifiers within a DAKOTA "keyword". */
+
+ typedef struct KWpair KWpair;
+ typedef struct KWmblk KWmblk;
+
+ struct
+KWmblk {
+	KWmblk *next;
+	size_t len;
+	/* memory of length len immediately follows */
+	};
+
+ struct
+KWpair {
+	KeyWord *kw;
+	KWseen *kws;
+	};
+
+ enum{ KWmblk_gulp = 32000 };
+
+ static AVL_Tree *AVLT, *AVLKWP;
+ static KWseen **KW_p, **KW_pe, KWmissing, *KWs0;
+ static KWmblk *KWmblk0, *KWmblk1;
+ static const char *KWmem0, *KWmem1;
+
+ typedef struct
+AVLCmpInfo {
+	KWseen **found[2];
+	int nfound;
+	int inexact;
+	} AVLCmpInfo;
+
+ static int
+avlcmp(void *v, KWseen **a, KWseen **b)
+{
+	AVLCmpInfo *AI = (AVLCmpInfo*)v;
+	KWseen *ksa, *ksb;
+	const char *s, *t;
+
+	s = (ksa = *a)->name;
+	t = (ksb = *b)->name;
+	for(; *s == *t; ++s, ++t)
+		if (!*s)
+			return 0;
+	if ((!*s && !ksa->kw && ksb->kw)
+	  ||(!*t && !ksb->kw && ksa->kw)) {
+		/* inexact match */
+		if (AI->nfound == 0
+		|| (AI->nfound == 1 && AI->found[0] != b))
+			AI->found[AI->nfound++] = b;
+		return AI->inexact;
+		}
+	return *s - *t;
+	}
+
+ static int
+kwpcmp(void *v, KWpair *a, KWpair *b)
+{
+	if (a->kw == b->kw)
+		return 0;
+	return a->kw > b->kw ? 1 : -1;
+	}
+
+ static void
+KWmeminit(void)
+{
+	KWmblk0 = KWmblk1 = (KWmblk*)Alloc("KWmeminit",
+			sizeof(KWmblk) + KWmblk_gulp);
+	KWmem0 = (char*)(KWmblk0 + 1);
+	KWmem1 = KWmem0 + KWmblk_gulp;
+	KWmblk0->len = KWmblk_gulp;
+	KWmblk0->next = 0;
+	KWmissing.mnext = KWmissing.mprev = &KWmissing;
+	KW_cur = 0;
+	memset(&KWval, 0, sizeof(KWval));
+	KWvalbuf = (Real *)Alloc("kw_setup(KWValbuf)", (nKWvalbuf = 128)*sizeof(Real));
+	ToClear = ToClear0 = (KeyWord**)Alloc("kw_setup(ToClear)", 256*sizeof(KeyWord*));
+	ToClearEnd = ToClear0 + 256;
+	}
+
+ static void
+KWmembump(size_t L)
+{
+	KWmblk *mb, *mb1;
+	size_t L1;
+
+	for(L1 = KWmblk_gulp; L1 < L; L1 <<= 1);
+	if ((mb = mb1 = KWmblk1->next) && L1 <= mb->len)
+		L1 = mb->len;
+	else {
+		KWmblk1->next = mb = (KWmblk*)Alloc("KWmembump", L1 + sizeof(KWmblk));
+		mb->len = L1;
+		mb->next = mb1;
+		}
+	KWmblk1 = mb;
+	KWmem0 = (char*)(mb+1);
+	KWmem1 = KWmem0 + L1;
+	}
+
+ static void *
+KWgetmem(size_t L)	/* for aligned memory */
+{
+	void *rv;
+
+	L = (L + sizeof(Real) - 1) & ~(sizeof(Real) - 1);
+	if (KWmem1 - KWmem0 < L)
+		KWmembump(L);
+	rv = (void*)KWmem0;
+	KWmem0 += L;
+	return rv;
+	}
+
+ static KWseen **
+KWhash(const char *s, KeyWord *kw)
+{
+	AVLCmpInfo AI;
+	KWseen KW0, *KW0p, *kws, **kwsp;
+	char **ps;
+	const char *sa, *sb;
+
+	AI.nfound = 0;
+	AI.inexact = -1;
+	AVL_setv(AVLT, &AI);
+	KW0.name = s;
+	KW0.kw = kw;
+	KW0p = &KW0;
+	curkws = 0;
+	if ((kwsp = (KWseen**)AVL_find((const Element*)&KW0p, AVLT)))
+		return kwsp;
+	if (AI.nfound) {
+		if (AI.nfound == 1) {
+			AI.inexact = 1;
+			AVL_find((const Element*)&KW0p, AVLT);
+			if (AI.nfound == 1) {
+				if (kw && (kw->kind & (KWKind_Libname | KWKind_Loaded))
+						== KWKind_Libname
+				 && (ps = (*AI.found[0])->svals))
+					read_lib(ps[0], kw);
+				return AI.found[0];
+				}
+			}
+		sa = (*AI.found[0])->name;
+		sb = (*AI.found[1])->name;
+		if (kw)
+			squawk("Both '%s' and '%s' match '%s'",
+				sa, sb, s);
+		else
+			squawk("'%s' is ambiguous:\n\tit matches both '%s' and '%s'",
+				s, sa, sb);
+		return AI.found[0];
+		}
+	kws = (KWseen*)KWgetmem(sizeof(KWseen));
+	memset(kws, 0, sizeof(KWseen));
+	if ((kws->kw = kw))
+		s = kw->name;
+	else {
+		curkws = kws;
+		kws->mnext = &KWmissing;
+		KWmissing.mprev = (kws->mprev = KWmissing.mprev)->mnext = kws;
+		s = nidr_KWscopy(s);
+		}
+	kws->name = s;
+	if (KW_p >= KW_pe) {
+		KW_p = (KWseen**)KWgetmem(32*sizeof(KWseen*));
+		KW_pe = KW_p + 32;
+		}
+	*(kwsp = KW_p++) = kws;
+	AVL_insert((const Element*)kwsp, AVLT);
+	return kwsp;
+	}
+
+ static void
+mixed_squawk(void)
+{
+	squawk("values for %s cannot be both strings and numbers",
+		KW_cur->name);
+	}
+
+ static void
+nidr_bufr_relaxed(Real r, int state)
+{
+	int n;
+
+	if (KWval.rstate && !state)
+		finish_rexpand();
+	if (!(n = KWval.n)) {
+		KWval.r = KWvalbuf;
+		KWvalmax.r = KWvalbuf + (KWvalmax.n = nKWvalbuf);
+		}
+	else if (KWval.s) {
+		mixed_squawk();
+		return;
+		}
+	if (n >= KWvalmax.n)
+		KWvalbuf_inc();
+	KWval.r[KWval.n++] = r;
+	if (state | KWval.rstate)
+		rexpand(state);
+	}
+
+ static void
+nidr_bufs_relaxed(const char *s)
+{
+	int n;
+
+	if (!(n = KWval.n)) {
+		KWval.s = (const char**)KWvalbuf;
+		KWvalmax.n = (nKWvalbuf*sizeof(Real))/sizeof(char*);
+		KWvalmax.s = KWval.s + KWvalmax.n;
+		}
+	else if (KWval.r) {
+		mixed_squawk();
+		return;
+		}
+	if (n >= KWvalmax.n)
+		KWvalbuf_inc();
+	KWval.s[KWval.n++] = s;
+	}
+
+ static void kw_setup2(KWseen*);
+
+ static void
+kw_finish1(KWseen *kws)
+{
+	KeyWord *kw;
+	int n;
+	size_t L;
+
+	if (KWval.rstate)
+		finish_rexpand();
+	kws->nvals = n = KWval.n;
+	KWval.n = 0;
+	if (KWval.r) {
+		L = n*sizeof(Real);
+		memcpy(kws->rvals = (Real*)KWgetmem(L), KWval.r, L);
+		KWval.r = 0;
+		}
+	else if (KWval.s) {
+		L = n*sizeof(char*);
+		memcpy(kws->svals = (char**)KWgetmem(L), KWval.s, L);
+		if ((kw = kws->kw) && kw->kind & KWKind_Libname) {
+			read_lib(KWval.s[0], kw);
+			if (kw->kw)
+				kw_setup2(kws);
+			}
+		KWval.s = 0;
+		}
+	}
+
+ static void*
+Alloc1(size_t len)
+{
+	void *rv = malloc(len);
+	if (!rv) {
+		fprintf(stderr, "malloc(%lu) failure in Alloc1\n", (unsigned long)len);
+		exit(1);
+		}
+	return rv;
+	}
+
+ static void
+AVL_Clear(void)
+{
+	while(ToClear > ToClear0)
+		(*--ToClear)->kind &= ~KWKind_Hashed;
+	AVL_Tree_free(&AVLT);
+	if (AVLKWP)
+		AVL_Tree_free(&AVLKWP);
+	}
+
+ static void
+kw_setup1(KeyWord *kw)
+{
+	KWseen *kws, *kws1;
+	KeyWord *kw1;
+
+	if ((kw1 = kw->kw))
+		kwnext_setup(kw1, kw->nkw);
+	if (!KWmblk0)
+		KWmeminit();
+	if (AVLT)
+		AVL_Clear();
+	AVLT = AVL_Tree_alloc(0, (AVL_Elcomp)avlcmp, Alloc1);
+	KW_cur = KWs0 = kws = (KWseen*)KWgetmem(sizeof(KWseen));
+	memset(kws, 0, sizeof(KWseen));
+	kws->name = kw->name;
+	kws->kw = kw;
+	kws->lcn = &kws->mprev;
+	if (kw1) {
+		while(!kw1->name)
+			kw1 = kw1->kwnext;
+		for(; kw1; kw1 = kw1->kwnext) {
+			kws1 = *KWhash(kw1->name, kw1);
+			kws1->parent = kws;
+			}
+		}
+	}
+
+ static KWseen**
+kw_setup3(KWseen **kwtodo1, KWseen *kws, KeyWord *kw)
+{
+	KWseen *kws1, **kwsp;
+
+	for(; kw; kw = kw->kwnext) {
+		kwsp = KWhash(kw->name, kw);
+		kws1 = *kwsp;
+		if (kws1->comment) {
+			kw->comment = kws1->comment;
+			kws1->comment = 0;
+			}
+		if (kws1->parent) {
+			kws1 = (KWseen*)KWgetmem(sizeof(KWseen));
+			memset(kws1, 0, sizeof(KWseen));
+			kws1->kw = kw;
+			kws1->name = kw->name;
+			*kwsp = kws1;
+			}
+		kws1->parent = kws;
+		if (!kws1->kw) {
+			kws1->mprev->mnext = kws1->mnext;
+			kws1->mnext->mprev = kws1->mprev;
+			*kwtodo1 = kws1;
+			kwtodo1 = kws1->lcn = &kws1->mprev;
+			*kws->lcn = kws1;
+			kws->lcn = &kws1->mnext;
+			}
+		kws1->kw = kw;
+		}
+	return kwtodo1;
+	}
+
+ static void
+bumpToClear(void)
+{
+	KeyWord **ntc;
+	size_t L, L1;
+
+	L = ToClearEnd - ToClear0;
+	L1 = L << 1;
+	ntc = (KeyWord**)Alloc("bumpToClear", L1*sizeof(KeyWord*));
+	memcpy(ntc, ToClear0, L*sizeof(KeyWord*));
+	free(ToClear0);
+	ToClear0 = ntc;
+	ToClear  = ntc + L;
+	ToClearEnd = ntc + L1;
+	}
+
+ static void
+kw_setup2(KWseen *kws)
+{
+	KWpair kwp, *pkwp;
+	KWseen *kws1, *kws2, *kws3, *kwtodo, **kwtodo1, **pkws;
+	KeyWord *kw, *kw1;
+
+	kwtodo1 = &kwtodo;
+	for(;;) {
+		kw = kws->kw;
+		if ((kw1 = kw->kw)) {
+			kwnext_setup(kw1, kw->nkw);
+			kws2 = kws;
+			while(!kw1->name) {
+				if (!AVLKWP)
+					AVLKWP = AVL_Tree_alloc(0, (AVL_Elcomp)kwpcmp, Alloc1);
+				if (kw1->kind & KWKind_Hashed) {
+					kwp.kw = kw1->kw;
+					kwp.kws = 0;
+					pkwp = (KWpair*)AVL_find((const Element*)&kwp, AVLKWP);
+					kws2 = pkwp->kws;
+					}
+				else {
+					if (ToClear >= ToClearEnd)
+						bumpToClear();
+					*ToClear++ = kw1;
+					kw1->kind |= KWKind_Hashed;
+					pkwp = (KWpair*)KWgetmem(sizeof(KWpair) + sizeof(KWseen));
+					kws1 = (KWseen*)(pkwp + 1);
+					pkwp->kw = kw1->kw;
+					pkwp->kws = kws1;
+					memset(kws1, 0, sizeof(KWseen));
+					kws1->kw = kw1;
+					kws1->name = kws->name;
+					kws1->lcn = &kws1->mprev;
+					kws1->parent = kws2;
+					*kws2->lcn = 0;
+					for(pkws = &kws2->mprev;
+						(kws3 = *pkws) && !kws3->name;
+						pkws = &kws3->mnext);
+					kws1->mnext = *pkws;
+					if (pkws == kws2->lcn)
+						kws2->lcn = &kws1->mnext;
+					kws2 = *pkws = kws1;
+					kwnext_setup(kw1->kw, kw1->nkw);
+					kwtodo1 = kw_setup3(kwtodo1, kws1, kw1->kw);
+					AVL_insert((const Element*)pkwp, AVLKWP);
+					}
+				kw1 = kw1->kwnext;
+				}
+			if (kw->nkw)
+				kwtodo1 = kw_setup3(kwtodo1, kws2, kw1);
+			}
+		*kwtodo1 = 0;
+		if (!kwtodo)
+			break;
+		kws = kwtodo;
+		kw = kws->kw;
+		if (!(kwtodo = kwtodo->mprev))
+			kwtodo1 = &kwtodo;
+		}
+	}
+
+ static KeyWord *
+nidr_identifier_relaxed(const char *name)
+{
+	KWseen *kws, *kws1;
+	KeyWord *kw;
+	int tryagain;
+
+	kw_finish1(KW_cur);
+ top:
+	KW_cur = kws = *KWhash(name, 0);
+	if ((kw = kws->kw)) {
+		curid = kw;
+		if (kws->lcn)
+			squawk("'%s' already seen", kw->name);
+		else {
+			if (kws->comment) {
+				kw->comment = kws->comment;
+				kws->comment = 0;
+				}
+			kws->lcn = &kws->mprev;
+			kws1 = kws->parent;
+			*kws1->lcn = kws;
+			kws1->lcn = &kws->mnext;
+			if (kw->kw)
+				kw_setup2(kws);
+			if (kw->kind & KWKind_Dynlib) {
+				kw = kw_insert(kw, &tryagain);
+				if (kw->kw) {
+					kws->kw = kw;
+					kw_setup2(kws);
+					}
+				if (tryagain)
+					goto top;
+				}
+			}
+		}
+	return (KeyWord*)kws;	/* just needs to be nonzero; won't be dereferenced */
+	}
+
+ static void
+num_expected(KeyWord *kw, int n)
+{
+	squawk("expected numerical value%s for %s, not quoted strings",
+		"s" + (n == 1), kw->name);
+	}
+
+ static void
+kw_process(KWseen *kws)
+{
+	KWseen *kws1;
+	KeyWord *kw;
+	Real *r;
+	Uint k;
+	int i, n;
+
+	kw = kws->kw;
+	if (kw->name) {
+		if (kws != KWs0 && !nidr_identifier_strict(kw->name))
+			botch("nidr_identifier_strict did not find \"%s\"", kw->name);
+		if ((n = KWval.n = kws->nvals)) {
+			KWval.i = 0;
+			KWval.r = 0;
+			KWval.s = 0;
+			KWval.rstate = 0;
+			switch(k = kw->kind & KWKind_Mask) {
+			  case 0:
+				squawk("No values may be specified for %s", kw->name);
+				break;
+
+			  case KWKind_Int:
+				if (!(r = kws->rvals)) {
+					num_expected(kw,n);
+					break;
+					}
+				KWval.i = (int*)KWvalbuf;
+				for(i = 0; i < n; i++)
+					KWval.i[i] = (int)r[i];
+				break;
+
+			  case KWKind_Real:
+				if (!(r = kws->rvals)) {
+					num_expected(kw,n);
+					break;
+					}
+				KWval.r = r;
+				break;
+
+			  case KWKind_Str:
+				if (!(KWval.s = (const char **)kws->svals))
+					squawk("expected string value%s for %s",
+						"s" + (n == 1), kw->name);
+			  }
+			}
+		}
+	*kws->lcn = 0;
+	for(kws1 = kws->mprev; kws1; kws1 = kws1->mnext)
+		kw_process(kws1);
+	}
+
+ static void
+kw_finish2(void)
+{
+	KWseen *kws, *kwe;
+
+	kw_finish1(KW_cur);
+	kwe = &KWmissing;
+	for(kws = KWmissing.mnext; kws != kwe; kws = kws->mnext) {
+		squawk("unrecognized identifier '%s'", kws->name);
+		}
+	KWmissing.mnext = KWmissing.mprev = &KWmissing;
+	kw_process(KWs0);
+	KWs0 = 0;
+	AVL_Clear();
+	}
+
+ static void
+kw_finish3(void)
+{
+	KWmblk1 = KWmblk0;
+	KWmem0 = (char*)(KWmblk0 + 1);
+	KWmem1 = KWmem0 + KWmblk_gulp;
+	KW_p = KW_pe = 0;
+	}
+
+ void (*nidr_bufr)(Real,int) = nidr_bufr_relaxed;
+ void (*nidr_bufs)(const char*) = nidr_bufs_relaxed;
+ KeyWord *(*nidr_identifier)(const char*) = nidr_identifier_relaxed;
+
+ void
+nidr_set_strict(int n)
+{
+	if ((strict = n)) {
+		nidr_bufr = nidr_bufr_strict;
+		nidr_bufs = nidr_bufs_strict;
+		nidr_identifier = nidr_identifier_strict;
+		}
+	else {
+		nidr_bufr = nidr_bufr_relaxed;
+		nidr_bufs = nidr_bufs_relaxed;
+		nidr_identifier = nidr_identifier_relaxed;
+		}
+	}
+
+ int
+nidr_cleanup(void)
+{
+	KWmblk *mb, *mb1;
+	Sbuf *sb, *sb1;
+
+	if (curkw)
+		nidr_keyword_finish();
+	if (dumpfile) {
+		if (OutsideComment)
+			dumpcomment(&OutsideComment);
+		if (dumpfile != stdout) {
+			fclose(dumpfile);
+			dumpfile = 0;
+			}
+		if (nidr_comment)
+			comment_reset();
+		}
+	if (ToClear0) {
+		free(ToClear0);
+		ToClear = ToClear0 = 0;
+		}
+	if ((mb1 = KWmblk0)) {
+		KWmblk0 = 0;
+		do {
+			mb = mb1;
+			mb1 = mb->next;
+			free(mb);
+			} while(mb1);
+		}
+	if (KWvalbuf) {
+		free(KWvalbuf);
+		KWvalbuf = 0;
+		}
+	if ((sb1 = KWsbuf0.next)) {
+		KWsbuf0.next = 0;
+		do {
+			sb = sb1;
+			sb1 = sb->next;
+			free(sb);
+			} while(sb1);
+		}
+	if (AVLT)
+		AVL_Clear();
+	return nidr_parse_error();
+	}
+
+ void
+nidr_setup(const char *parser, FILE *df)
+{
+	const char *s;
+	int comkeep, oneline;
+
+	if (!(s = parser))
+		return;
+	if (!strncmp(s,"nidr",4))
+		s += 4;
+	if (!strncmp(parser,"strict",6)) {
+		nidr_set_strict(1);
+		s += 6;
+		}
+	comkeep = oneline = 0;
+	if (*s == '-') for(;;) {
+		switch(*++s) {
+		  case '1':
+			++oneline;
+			continue;
+		  case 'p':
+			++primary;
+			continue;
+		  case 'c':
+			++comkeep;
+			continue;
+		  }
+		break;
+		}
+	if (df)
+		dumpfile = df;
+	else if (s[0] == ':' && s[1]) {
+		if (s[1] == '-' && !s[2])
+			dumpfile = df = stdout;
+		else {
+			dumpfile = df = fopen(++s,"w");
+			if (!dumpfile) {
+				fprintf(stderr, "Cannot open \"%s\"\n", s);
+				exit(1);
+				}
+			}
+		}
+	if (df) {
+		if (oneline)
+			dumpvals = dumpvals1;
+		if (comkeep)
+			comment_setup();
+		}
+	}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/packages/DDACE/src/Analyzer/MainEffectsExcelOutput.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/packages/DDACE/src/Analyzer/MainEffectsExcelOutput.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/packages/DDACE/src/Analyzer/MainEffectsExcelOutput.cpp	(revision 27955)
@@ -0,0 +1,284 @@
+#include "MainEffectsExcelOutput.h"
+
+    std::ostringstream ss;
+
+    MainEffectsExcelOutput::MainEffectsExcelOutput(){;}
+
+    MainEffectsExcelOutput::~MainEffectsExcelOutput(){;}
+
+    std::string MainEffectsExcelOutput::outputColumnHeaders
+                    (int numInputs, int numOutputs) {
+
+        std::ostringstream ss;
+
+         /* input variables */
+         for (int i=0; i<numInputs; i++) {
+         	if (ss.str()!="") ss << ",";
+         	ss << "in(" << i << ")";
+         }
+
+         /* output variables */
+         for (int i=0; i<numOutputs; i++) {
+         	if (ss.str()!="") ss << ",";
+         	ss << "out(" << i << ")";
+         }
+
+         /* number of observations */
+         ss << ",nObservations";
+
+         /* sum of all observations */
+         ss << ",sumOfAllObservations";
+
+         /* average of all observations */
+         ss << ",avgOfAllObservation";
+
+         /* sum of squares of all observations */
+         ss << ",sumOfSquaresOfAllObservations";
+
+         /* degrees of freedom of all observations */
+         ss << ",degreesOfFreedomOfAllObservations";
+
+         /* variance of all Observations */
+         ss << ",varianceOfAllObservations";
+
+         /* sum */
+         ss << ",sum";
+
+         /* average */
+         ss << ",average";
+
+         /* sum of squares */
+         ss << ",sumOfSquares";
+
+         /* variance */
+         ss << ",variance";
+
+         /* sum of squares between groups */
+         ss << ",sumOfSquaresBetweenGroups";
+
+         /* degrees of freedom between groups */
+         ss << ",degreesOfFreedomBetweenGroups";
+
+         /* variance between groups */
+         ss << ",varianceBetweenGroups";
+
+         /* sum of squares between groups */
+         ss << ",sumOfSquaresWithinGroups";
+
+         /* degrees of freedom between groups */
+         ss << ",degreesOfFreedomWithinGroups";
+
+         /* variance between groups */
+         ss << ",varianceWithinGroups";
+
+         /* F */
+         ss << ",F";
+
+         ss << "\n";
+
+         return(ss.str());
+    }
+
+
+    std::string MainEffectsExcelOutput::outputMainEffects
+         (int inputVarIndex, int numInputs,
+          int outputVarIndex, int numOutputs,
+          DDaceMainEffects::Factor factor) {
+
+        std::ostringstream ss;
+        int numberOfLevels =
+            factor.getNumberOfLevels();
+
+        for (int i=0; i<numberOfLevels; i++) {
+        	ss << outputMainEffects (inputVarIndex, numInputs,
+                   outputVarIndex, numOutputs, factor, i);
+        }
+
+        return(ss.str());
+     }
+
+    std::string MainEffectsExcelOutput::outputMainEffects
+         (int inputVarIndex, int numInputs,
+          int outputVarIndex, int numOutputs,
+          DDaceMainEffects::Factor factor,
+          int indexOfInputValue) {
+
+        std::ostringstream ss;
+
+         /* put an F under the input variable */
+         for (int i=0; i<numInputs; i++) {
+         	if (ss.str()!="") ss << ",";
+         	if (i==inputVarIndex) ss << "F";
+         }
+
+         /* put an R under the output variable */
+         for (int i=0; i<numOutputs; i++) {
+         	if (ss.str()!="") ss << ",";
+         	if (i==outputVarIndex) ss << "R";
+         }
+
+         /* number of observations */
+         ss << ",";
+         if (indexOfInputValue==0) {
+             ss << factor.getNumberOfObservations();
+         }
+
+
+         /* sum of all observations */
+         ss << ",";
+         if (indexOfInputValue==0) {
+             DDaceMainEffects::Response response = factor.getResponse();
+             std::vector<double> responses = response.responses_;
+             ss << response.getSumPop();
+         }
+
+         /* average of all Observation */
+         ss << ",";
+         if (indexOfInputValue==0) {
+          	 DDaceMainEffects::Response response = factor.getResponse();
+             ss << response.getAveragePop();
+         }
+
+         /* sum of squares for Observation */
+         ss << ",";
+         if (indexOfInputValue==0) {
+          	 DDaceMainEffects::Response response = factor.getResponse();
+             ss << response.getSumOfSquaresPop();
+         }
+
+         /* degrees of freedom for all Observation*/
+         ss << ",";
+         if (indexOfInputValue==0) {
+             int dTotal = factor.getNumberOfObservations() - 1;
+             ss << dTotal;
+         }
+
+         /* variance for all Observations */
+         ss << ",";
+         if (indexOfInputValue==0) {
+         	DDaceMainEffects::Response response = factor.getResponse();
+             ss << response.getVariancePop();
+         }
+
+         /* sum */
+         ss << "," << factor.getLevelSum(indexOfInputValue);
+
+         /* average */
+         ss << "," << factor.getLevelAverage(indexOfInputValue);
+
+         /* sum of squares */
+         ss << "," << factor.getLevelSumOfSquares(indexOfInputValue);
+
+         /* variance */
+         ss << "," << factor.getLevelVariance(indexOfInputValue);
+
+         /* sum of squares between groups */
+         ss << ",";
+         if (indexOfInputValue==0) {
+             ss << factor.sumOfSquaresBetweenGroups();
+         }
+
+         /* degrees of freedom between groups */
+         ss << ",";
+         if (indexOfInputValue==0) {
+             ss << factor.doFBetween();
+         }
+
+         /* variance between groups */
+         ss << ",";
+         if (indexOfInputValue==0) {
+             ss << factor.varianceBetweenGroups();
+         }
+
+         /* sum of squares within groups */
+         ss << ",";
+         if (indexOfInputValue==0) {
+             ss << factor.sumOfSquaresWithinGroups();
+         }
+
+         /* degrees of freedom within groups */
+         ss << ",";
+         if (indexOfInputValue==0) {
+             ss << factor.doFWithin();
+         }
+
+         /* variance within groups */
+         ss << ",";
+         if (indexOfInputValue==0) {
+             ss << factor.varianceWithinGroups();
+         }
+
+         /* F */
+         ss << ",";
+         if (indexOfInputValue==0) {
+             ss << factor.Fdata();
+         }
+
+
+         ss << "\n";
+
+         return(ss.str());
+     }
+
+    std::string MainEffectsExcelOutput::computeExcelOutput
+        (std::vector<std::vector<double> > vectorInputData,
+         std::vector<std::vector<double> > vectorOutputData){
+
+        std::ostringstream ss;
+
+    	/* error check */
+    	if (vectorInputData.size() == 0) return("");
+    	if (vectorOutputData.size() == 0) return("");
+
+
+    	MainEffectsConverter converter;
+
+         /* Replace every INPUT data value with a counting number */
+         VectorCountingNumbersAndCount vectorCountingNumbersAndCount =
+             converter.convertAllDoublesToCountingNumbers(vectorInputData);
+         std::vector<std::vector<int> > vectorInputIndicies =
+                vectorCountingNumbersAndCount.vectorCountingNumbers;
+         int numberOfCountingNumbers = vectorCountingNumbersAndCount.count;
+
+        /* How many columns are in the input table? */
+        int numInputs = vectorInputData[0].size();
+
+        /* How many columns are in the output table? */
+        int numOutputs = vectorOutputData[0].size();
+
+        /* output the column headers */
+        ss << outputColumnHeaders (numInputs, numOutputs);
+
+        /* pair input column 1 with output column 1 */
+        /* pair input column 1 with output column 2 */
+        /* pair input column 1 with output column 3 */
+        /* etc.                                     */
+        /* pair input column 2 with output column 1 */
+        /* pair input column 2 with output column 2 */
+        /* pair input column 2 with output column 3 */
+        /* etc.                                     */
+        for (int indexInput=0; indexInput<numInputs; indexInput++) {
+        for (int indexOutput=0; indexOutput<numOutputs; indexOutput++) {
+
+             /* slice out the selected input var & selected output var */
+             DDaceMainEffects::Factor factor =
+                 converter.sliceOutOneInputVarAndOneOutputVar
+                      (vectorInputIndicies,    //data from all input vars
+                       vectorOutputData, //data from all output vars
+                       indexInput,             //slice out this input var
+                       indexOutput,            //slice out this output var
+                       numberOfCountingNumbers);  //# of different input values
+
+
+
+             ss << outputMainEffects (indexInput, numInputs, indexOutput,
+                    numOutputs, factor);
+	     std::cout << ss.str() << std::endl;
+
+
+        }//for indexOutput
+        }//for indexInput
+
+
+    	return(ss.str());
+    }
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/packages/VPISparseGrid/src/sandia_rules.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/packages/VPISparseGrid/src/sandia_rules.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/packages/VPISparseGrid/src/sandia_rules.cpp	(revision 27955)
@@ -0,0 +1,25739 @@
+# include "sandia_rules.hpp"
+
+# include <cstdlib>
+# include <iomanip>
+# include <iostream>
+# include <cmath>
+# include <ctime>
+
+namespace webbur
+{
+//****************************************************************************80
+
+void binary_vector_next ( int n, int bvec[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    BINARY_VECTOR_NEXT generates the next binary vector.
+//
+//  Discussion:
+//
+//    A binary vector is a vector whose entries are 0 or 1.
+//
+//    The user inputs an initial zero vector to start.  The program returns
+//    the "next" vector.
+//
+//    The vectors are produced in the order:
+//
+//    ( 0, 0, 0, ..., 0 )
+//    ( 1, 0, 0, ..., 0 )
+//    ( 0, 1, 0, ..., 0 )
+//    ( 1, 1, 0, ..., 0 )
+//    ( 0, 0, 1, ..., 0 )
+//    ( 1, 0, 1, ..., 0 )
+//               ...
+//    ( 1, 1, 1, ..., 1)
+//
+//    and the "next" vector after (1,1,...,1) is (0,0,...,0).  That is,
+//    we allow wrap around.
+//
+//  Example:
+//
+//    N = 3
+//
+//    Input      Output
+//    -----      ------
+//    0 0 0  =>  1 0 0
+//    1 0 0  =>  0 1 0
+//    0 1 0  =>  1 1 0
+//    1 1 0  =>  0 0 1
+//    0 0 1  =>  1 0 1
+//    1 0 1  =>  0 1 1
+//    0 1 1  =>  1 1 1
+//    1 1 1  =>  0 0 0
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    04 September 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the dimension of the vectors.
+//
+//    Input/output, int BVEC[N], on output, the successor
+//    to the input vector.
+//
+{
+  int i;
+
+  for ( i = 0; i < n; i++ )
+  {
+    if ( bvec[i] == 1 )
+    {
+      bvec[i] = 0;
+    }
+    else
+    {
+      bvec[i] = 1;
+      break;
+    }
+  }
+  return;
+}
+//****************************************************************************80
+
+void ccn_compute ( int n, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CCN_COMPUTE computes a nested Clenshaw Curtis quadrature rule.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    07 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::ccn_compute_points ( n, x );
+  webbur::ccn_compute_weights ( n, w );
+
+  return;
+}
+//****************************************************************************80
+
+void ccn_compute_np ( int n, int np, double p[], double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CCN_COMPUTE_NP computes a nested Clenshaw Curtis quadrature rule.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    07 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::ccn_compute_points ( n, x );
+  webbur::ccn_compute_weights ( n, w );
+
+  return;
+}
+//****************************************************************************80
+
+void ccn_compute_points ( int n, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CCN_COMPUTE_POINTS: compute nested Clenshaw Curtis points.
+//
+//  Discussion:
+//
+//    We want to compute the following sequence:
+//
+//    1/2,
+//    0, 1
+//    1/4, 3/4
+//    1/8, 3/8, 5/8, 7/8,
+//    1/16, 3/16, 5/16, 7/16, 9/16, 11/16, 13/16, 15/16, and so on.
+//
+//    But we would prefer that the numbers in each row be regrouped in pairs
+//    that are symmetric about 1/2, with the number above 1/2 coming first.
+//    Thus, the last row might become:
+//    (9/16, 7/16), (11/16, 5/16), ..., (15/16, 1/16).
+//
+//    Once we have our sequence, we apply the Chebyshev transformation
+//    which maps [0,1] to [-1,+1].
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    06 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of elements to compute.
+//
+//    Output, double X[N], the elements of the sequence.
+//
+{
+  int d;
+  int i;
+  int k;
+  int m;
+  double pi = 3.141592653589793;
+  int td;
+  int tu;
+//
+//  Handle first three entries specially.
+//
+  if ( 1 <= n )
+  {
+    x[0] = 0.5;
+  }
+
+  if ( 2 <= n )
+  {
+    x[1] = 1.0;
+  }
+
+  if ( 3 <= n )
+  {
+    x[2] = 0.0;
+  }
+
+  m = 3;
+  d = 2;
+
+  while ( m < n )
+  {
+    tu = d + 1;
+    td = d - 1;
+
+    k = webbur::i4_min ( d, n - m );
+
+    for ( i = 1; i <= k; i++ )
+    {
+      if ( ( i % 2 ) == 1 )
+      {
+        x[m+i-1] = tu / 2.0 / ( double ) ( k );
+        tu = tu + 2;
+      }
+      else
+      {
+        x[m+i-1] = td / 2.0 / ( double ) ( k );
+        td = td - 2;
+      }
+    }
+    m = m + k;
+    d = d * 2;
+  }
+//
+//  Apply the Chebyshev transformation.
+//
+  for ( i = 0; i < n; i++ )
+  {
+    x[i] = std::cos ( x[i] * pi );
+  }
+  x[0] = 0.0;
+
+  if ( 2 <= n )
+  {
+    x[1] = -1.0;
+  }
+
+  if ( 3 <= n )
+  {
+    x[2] = +1.0;
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void ccn_compute_points_np ( int n, int np, double p[], double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CCN_COMPUTE_POINTS_NP: nested Clenshaw Curtis quadrature points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    07 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  webbur::ccn_compute_points ( n, x );
+
+  return;
+}
+//****************************************************************************80
+
+void ccn_compute_weights ( int n, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CCN_COMPUTE_WEIGHTS: weights for nested Clenshaw Curtis rule.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    07 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order of the rule.
+//
+//    Output, double W[N], the weights.
+//
+{
+  double *x;
+  double x_max;
+  double x_min;
+
+  x = new double[n];
+
+  webbur::ccn_compute_points ( n, x );
+//
+//  Get the weights.
+//
+  x_min = -1.0;
+  x_max = +1.0;
+
+  webbur::nc_compute ( n, x_min, x_max, x, w );
+
+  delete [] x;
+
+  return;
+}
+//****************************************************************************80
+
+void ccn_compute_weights_np ( int n, int np, double p[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CCN_COMPUTE_WEIGHTS_NP: nested Clenshaw Curtis quadrature weights.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    07 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::ccn_compute_weights ( n, w );
+
+  return;
+}
+//****************************************************************************80
+
+void chebyshev1_compute ( int n, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CHEBYSHEV1_COMPUTE computes a Chebyshev type 1 quadrature rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      Integral ( -1 <= X <= 1 ) F(X) / sqrt ( 1 - x^2 ) dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= N ) W(I) * F ( X(I) )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Philip Davis, Philip Rabinowitz,
+//    Methods of Numerical Integration,
+//    Second Edition,
+//    Dover, 2007,
+//    ISBN: 0486453391,
+//    LC: QA299.3.D28.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  int i;
+  double pi = 3.141592653589793;
+
+  if ( n < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "CHEBYSHEV1_COMPUTE - Fatal error!\n";
+    std::cerr << "  Illegal value of N = " << n << "\n";
+    std::exit ( 1 );
+  }
+
+  for ( i = 0; i < n; i++ )
+  {
+    w[i] = pi / ( double ) ( n );
+  }
+  for ( i = 0; i < n; i++ )
+  {
+    x[i] = std::cos ( pi * ( double ) ( 2 * n - 1 - 2 * i )
+                         / ( double ) ( 2 * n ) );
+  }
+  if ( ( n % 2 ) == 1 )
+  {
+    x[(n-1)/2] = 0.0;
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void chebyshev1_compute_np ( int n, int np, double p[], double x[],
+  double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CHEBYSHEV1_COMPUTE_NP computes a Chebyshev type 1 quadrature rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      Integral ( -1 <= X <= 1 ) F(X) / sqrt ( 1 - x^2 ) dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= N ) W(I) * F ( X(I) )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Philip Davis, Philip Rabinowitz,
+//    Methods of Numerical Integration,
+//    Second Edition,
+//    Dover, 2007,
+//    ISBN: 0486453391,
+//    LC: QA299.3.D28.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::chebyshev1_compute ( n, x, w );
+
+  return;
+}
+//****************************************************************************80
+
+void chebyshev1_compute_points ( int n, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CHEBYSHEV1_COMPUTE_POINTS computes Chebyshev type 1 quadrature points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Philip Davis, Philip Rabinowitz,
+//    Methods of Numerical Integration,
+//    Second Edition,
+//    Dover, 2007,
+//    ISBN: 0486453391,
+//    LC: QA299.3.D28.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  int i;
+  double pi = 3.141592653589793;
+
+  if ( n < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "CHEBYSHEV1_COMPUTE_POINTS - Fatal error!\n";
+    std::cerr << "  Illegal value of N = " << n << "\n";
+    std::exit ( 1 );
+  }
+
+  for ( i = 0; i < n; i++ )
+  {
+    x[i] =  std::cos ( pi * ( double ) ( 2 * n - 1 - 2 * i )
+                          / ( double ) ( 2 * n ) );
+  }
+  if ( ( n % 2 ) == 1 )
+  {
+    x[(n-1)/2] = 0.0;
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void chebyshev1_compute_points_np ( int n, int np, double p[], double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CHEBYSHEV1_COMPUTE_POINTS_NP computes Chebyshev type 1 quadrature points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Philip Davis, Philip Rabinowitz,
+//    Methods of Numerical Integration,
+//    Second Edition,
+//    Dover, 2007,
+//    ISBN: 0486453391,
+//    LC: QA299.3.D28.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  webbur::chebyshev1_compute_points ( n, x );
+
+  return;
+}
+//****************************************************************************80
+
+void chebyshev1_compute_weights ( int n, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CHEBYSHEV1_COMPUTE_WEIGHTS computes Chebyshev type 1 quadrature weights.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Philip Davis, Philip Rabinowitz,
+//    Methods of Numerical Integration,
+//    Second Edition,
+//    Dover, 2007,
+//    ISBN: 0486453391,
+//    LC: QA299.3.D28.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Output, double W[N], the weights.
+//
+{
+  int i;
+  double pi = 3.141592653589793;
+
+  if ( n < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "CHEBYSHEV1_COMPUTE_WEIGHTS - Fatal error!\n";
+    std::cerr << "  Illegal value of N = " << n << "\n";
+    std::exit ( 1 );
+  }
+
+  for ( i = 0; i < n; i++ )
+  {
+    w[i] = pi / ( double ) ( n );
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void chebyshev1_compute_weights_np ( int n, int np, double p[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CHEBYSHEV1_COMPUTE_WEIGHTS_NP: Chebyshev type 1 quadrature weights.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Philip Davis, Philip Rabinowitz,
+//    Methods of Numerical Integration,
+//    Second Edition,
+//    Dover, 2007,
+//    ISBN: 0486453391,
+//    LC: QA299.3.D28.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::chebyshev1_compute_weights ( n, w );
+
+  return;
+}
+//****************************************************************************80
+
+double chebyshev1_integral ( int expon )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CHEBYSHEV1_INTEGRAL evaluates a monomial Chebyshev type 1 integral.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      integral ( -1 <= x <= +1 ) x^n / sqrt ( 1 - x^2 ) dx
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    26 February 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int EXPON, the exponent.
+//
+//    Output, double CHEBYSHEV1_INTEGRAL, the value of the exact integral.
+//
+{
+  double bot;
+  double exact;
+  int i;
+  double pi = 3.141592653589793;
+  double top;
+//
+//  Get the exact value of the integral.
+//
+  if ( ( expon % 2 ) == 0 )
+  {
+    top = 1;
+    bot = 1;
+    for ( i = 2; i <= expon; i = i + 2 )
+    {
+      top = top * ( i - 1 );
+      bot = bot *   i;
+    }
+
+    exact = pi * ( double ) ( top ) / ( double ) ( bot );
+  }
+  else
+  {
+    exact = 0.0;
+  }
+
+  return exact;
+}
+//****************************************************************************80
+
+void chebyshev2_compute ( int n, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CHEBYSHEV2_COMPUTE computes a Chebyshev type 2 quadrature rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      integral ( -1 <= x <= 1 ) f(x)  sqrt ( 1 - x^2 )  dx
+//
+//    The quadrature rule:
+//
+//      sum ( 1 <= i <= n ) w(i) * f ( x(i) )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Philip Davis, Philip Rabinowitz,
+//    Methods of Numerical Integration,
+//    Second Edition,
+//    Dover, 2007,
+//    ISBN: 0486453391,
+//    LC: QA299.3.D28.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  double angle;
+  int i;
+  double pi = 3.141592653589793;
+
+  if ( n < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "CHEBYSHEV2_COMPUTE - Fatal error!\n";
+    std::cerr << "  Illegal value of N = " << n << "\n";
+    std::exit ( 1 );
+  }
+
+  for ( i = 0; i < n; i++ )
+  {
+    angle = pi * ( double ) ( n - i ) / ( double ) ( n + 1 );
+    w[i] = pi / ( double ) ( n + 1 ) * std::pow ( std::sin ( angle ), 2 );
+    x[i] = std::cos ( angle );
+  }
+
+  if ( ( n % 2 ) == 1 )
+  {
+    x[(n-1)/2] = 0.0;
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void chebyshev2_compute_np ( int n, int np, double p[], double x[],
+  double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CHEBYSHEV2_COMPUTE_NP computes a Chebyshev type 2 quadrature rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      Integral ( -1 <= X <= 1 ) F(X)  sqrt ( 1 - x^2 )  dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= N ) W(I) * F ( X(I) )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Philip Davis, Philip Rabinowitz,
+//    Methods of Numerical Integration,
+//    Second Edition,
+//    Dover, 2007,
+//    ISBN: 0486453391,
+//    LC: QA299.3.D28.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::chebyshev2_compute ( n, x, w );
+
+  return;
+}
+//****************************************************************************80
+
+void chebyshev2_compute_points ( int n, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CHEBYSHEV2_COMPUTE_POINTS computes Chebyshev type 2 quadrature points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Philip Davis, Philip Rabinowitz,
+//    Methods of Numerical Integration,
+//    Second Edition,
+//    Dover, 2007,
+//    ISBN: 0486453391,
+//    LC: QA299.3.D28.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  double angle;
+  int i;
+  double pi = 3.141592653589793;
+
+  if ( n < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "CHEBYSHEV2_COMPUTE_POINTS - Fatal error!\n";
+    std::cerr << "  Illegal value of N = " << n << "\n";
+    std::exit ( 1 );
+  }
+
+  for ( i = 0; i < n; i++ )
+  {
+    angle = pi * ( double ) ( n - i ) / ( double ) ( n + 1 );
+    x[i] =  std::cos ( angle );
+  }
+
+  if ( ( n % 2 ) == 1 )
+  {
+    x[(n-1)/2] = 0.0;
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void chebyshev2_compute_points_np ( int n, int np, double p[], double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CHEBYSHEV2_COMPUTE_POINTS_NP computes Chebyshev type 2 quadrature points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    03 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Philip Davis, Philip Rabinowitz,
+//    Methods of Numerical Integration,
+//    Second Edition,
+//    Dover, 2007,
+//    ISBN: 0486453391,
+//    LC: QA299.3.D28.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  webbur::chebyshev2_compute_points ( n, x );
+
+  return;
+}
+//****************************************************************************80
+
+void chebyshev2_compute_weights ( int n, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CHEBYSHEV2_COMPUTE_WEIGHTS computes Chebyshev type 2 quadrature weights.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Philip Davis, Philip Rabinowitz,
+//    Methods of Numerical Integration,
+//    Second Edition,
+//    Dover, 2007,
+//    ISBN: 0486453391,
+//    LC: QA299.3.D28.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Output, double W[N], the weights.
+//
+{
+  double angle;
+  int i;
+  double pi = 3.141592653589793;
+
+  if ( n < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "CHEBYSHEV2_COMPUTE_WEIGHTS - Fatal error!\n";
+    std::cerr << "  Illegal value of N = " << n << "\n";
+    std::exit ( 1 );
+  }
+
+  for ( i = 0; i < n; i++ )
+  {
+    angle = pi * ( double ) ( n - i ) / ( double ) ( n + 1 );
+    w[i] = pi / ( double ) ( n + 1 ) * std::pow ( std::sin ( angle ), 2 );
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void chebyshev2_compute_weights_np ( int n, int np, double p[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CHEBYSHEV2_COMPUTE_WEIGHTS_NP: Chebyshev type 2 quadrature weights.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Philip Davis, Philip Rabinowitz,
+//    Methods of Numerical Integration,
+//    Second Edition,
+//    Dover, 2007,
+//    ISBN: 0486453391,
+//    LC: QA299.3.D28.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::chebyshev2_compute_weights ( n, w );
+
+  return;
+}
+//****************************************************************************80
+
+double chebyshev2_integral ( int expon )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CHEBYSHEV2_INTEGRAL evaluates a monomial Chebyshev type 2 integral.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      integral ( -1 <= x <= +1 ) x^n * sqrt ( 1 - x^2 ) dx
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    26 February 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int EXPON, the exponent.
+//
+//    Output, double CHEBYSHEV2_INTEGRAL, the value of the exact integral.
+//
+{
+  double bot;
+  double exact;
+  int i;
+  double pi = 3.141592653589793;
+  double top;
+//
+//  Get the exact value of the integral.
+//
+  if ( ( expon % 2 ) == 0 )
+  {
+    top = 1;
+    bot = 1;
+    for ( i = 2; i <= expon; i = i + 2 )
+    {
+      top = top * ( i - 1 );
+      bot = bot *   i;
+    }
+
+	bot = bot * ( double ) ( expon + 2 );
+
+    exact = pi * ( double ) ( top ) / ( double ) ( bot );
+  }
+  else
+  {
+    exact = 0.0;
+  }
+  return exact;
+}
+//****************************************************************************80
+
+void clenshaw_curtis_compute ( int n, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CLENSHAW_CURTIS_COMPUTE computes a Clenshaw Curtis quadrature rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      Integral ( -1 <= X <= 1 ) F(X) dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= N ) W(I) * F ( X(I) )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    19 March 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  double b;
+  int i;
+  int j;
+  double pi = 3.141592653589793;
+  double theta;
+
+  if ( n < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "CLENSHAW_CURTIS_COMPUTE - Fatal error!\n";
+    std::cerr << "  Illegal value of N = " << n << "\n";
+    std::exit ( 1 );
+  }
+  else if ( n == 1 )
+  {
+    x[0] = 0.0;
+    w[0] = 2.0;
+  }
+  else
+  {
+    for ( i = 0; i < n; i++ )
+    {
+      x[i] =  std::cos ( ( double ) ( n - 1 - i ) * pi
+                       / ( double ) ( n - 1     ) );
+    }
+    x[0] = -1.0;
+    if ( ( n % 2 ) == 1 )
+    {
+      x[(n-1)/2] = 0.0;
+    }
+    x[n-1] = +1.0;
+
+    for ( i = 0; i < n; i++ )
+    {
+      theta = ( double ) ( i ) * pi / ( double ) ( n - 1 );
+
+      w[i] = 1.0;
+
+      for ( j = 1; j <= ( n - 1 ) / 2; j++ )
+      {
+        if ( 2 * j == ( n - 1 ) )
+        {
+          b = 1.0;
+        }
+        else
+        {
+          b = 2.0;
+        }
+
+        w[i] = w[i] - b *  std::cos ( 2.0 * ( double ) ( j ) * theta )
+          / ( double ) ( 4 * j * j - 1 );
+      }
+    }
+
+    w[0] = w[0] / ( double ) ( n - 1 );
+    for ( i = 1; i < n - 1; i++ )
+    {
+      w[i] = 2.0 * w[i] / ( double ) ( n - 1 );
+    }
+    w[n-1] = w[n-1] / ( double ) ( n - 1 );
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void clenshaw_curtis_compute_np ( int n, int np, double p[], double x[],
+  double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CLENSHAW_CURTIS_COMPUTE_NP computes a Clenshaw Curtis quadrature rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      Integral ( -1 <= X <= 1 ) F(X) dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= N ) W(I) * F ( X(I) )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::clenshaw_curtis_compute ( n, x, w );
+
+  return;
+}
+//****************************************************************************80
+
+void clenshaw_curtis_compute_points ( int n, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CLENSHAW_CURTIS_COMPUTE_POINTS computes Clenshaw Curtis quadrature points.
+//
+//  Discussion:
+//
+//    Our convention is that the abscissas are numbered from left to right.
+//
+//    This rule is defined on [-1,1].
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  int index;
+  double pi = 3.141592653589793;
+
+  if ( n < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "CLENSHAW_CURTIS_COMPUTE_POINTS - Fatal error!\n";
+    std::cerr << "  N < 1.\n";
+    std::exit ( 1 );
+  }
+  else if ( n == 1 )
+  {
+    x[0] = 0.0;
+  }
+  else
+  {
+    for ( index = 1; index <= n; index++ )
+    {
+      x[index-1] =  std::cos ( ( double ) ( n - index ) * pi
+                             / ( double ) ( n - 1     ) );
+    }
+    x[0] = -1.0;
+    if ( ( n % 2 ) == 1 )
+    {
+      x[(n-1)/2] = 0.0;
+    }
+    x[n-1] = +1.0;
+  }
+  return;
+}
+//****************************************************************************80
+
+void clenshaw_curtis_compute_points_np ( int n, int np, double p[], double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CLENSHAW_CURTIS_COMPUTE_POINTS_NP: Clenshaw Curtis quadrature points.
+//
+//  Discussion:
+//
+//    Our convention is that the abscissas are numbered from left to right.
+//
+//    This rule is defined on [-1,1].
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  webbur::clenshaw_curtis_compute_points ( n, x );
+
+  return;
+}
+//****************************************************************************80
+
+void clenshaw_curtis_compute_weights ( int n, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CLENSHAW_CURTIS_COMPUTE_WEIGHTS computes Clenshaw Curtis quadrature weights.
+//
+//  Discussion:
+//
+//    The user must preallocate space for the output array W.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Charles Clenshaw, Alan Curtis,
+//    A Method for Numerical Integration on an Automatic Computer,
+//    Numerische Mathematik,
+//    Volume 2, Number 1, December 1960, pages 197-205.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Output, double W[N], the weights.
+//
+{
+  double b;
+  int i;
+  int j;
+  double pi = 3.141592653589793;
+  double theta;
+
+  if ( n < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "CLENSHAW_CURTIS_COMPUTE_WEIGHTS - Fatal error!\n";
+    std::cerr << "  N < 1.\n";
+    std::exit ( 1 );
+  }
+  else if ( n == 1 )
+  {
+    w[0] = 2.0;
+    return;
+  }
+
+  for ( i = 1; i <= n; i++ )
+  {
+    theta = ( double ) ( i - 1 ) * pi / ( double ) ( n - 1 );
+
+    w[i-1] = 1.0;
+
+    for ( j = 1; j <= ( n - 1 ) / 2; j++ )
+    {
+      if ( 2 * j == ( n - 1 ) )
+      {
+        b = 1.0;
+      }
+      else
+      {
+        b = 2.0;
+      }
+
+      w[i-1] = w[i-1] - b *  std::cos ( 2.0 * ( double ) ( j ) * theta )
+           / ( double ) ( 4 * j * j - 1 );
+    }
+  }
+
+  w[0] = w[0] / ( double ) ( n - 1 );
+  for ( i = 1; i < n - 1; i++ )
+  {
+    w[i] = 2.0 * w[i] / ( double ) ( n - 1 );
+  }
+  w[n-1] = w[n-1] / ( double ) ( n - 1 );
+
+  return;
+}
+//****************************************************************************80
+
+void clenshaw_curtis_compute_weights_np ( int n, int np, double p[],
+  double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CLENSHAW_CURTIS_COMPUTE_WEIGHTS_NP: Clenshaw Curtis quadrature weights.
+//
+//  Discussion:
+//
+//    The user must preallocate space for the output array W.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Charles Clenshaw, Alan Curtis,
+//    A Method for Numerical Integration on an Automatic Computer,
+//    Numerische Mathematik,
+//    Volume 2, Number 1, December 1960, pages 197-205.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::clenshaw_curtis_compute_weights ( n, w );
+
+  return;
+}
+//****************************************************************************80
+
+void comp_next ( int n, int k, int a[], bool *more, int *h, int *t )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    COMP_NEXT computes the compositions of the integer N into K parts.
+//
+//  Discussion:
+//
+//    A composition of the integer N into K parts is an ordered sequence
+//    of K nonnegative integers which sum to N.  The compositions (1,2,1)
+//    and (1,1,2) are considered to be distinct.
+//
+//    The routine computes one composition on each call until there are no more.
+//    For instance, one composition of 6 into 3 parts is
+//    3+2+1, another would be 6+0+0.
+//
+//    On the first call to this routine, set MORE = FALSE.  The routine
+//    will compute the first element in the sequence of compositions, and
+//    return it, as well as setting MORE = TRUE.  If more compositions
+//    are desired, call again, and again.  Each time, the routine will
+//    return with a new composition.
+//
+//    However, when the LAST composition in the sequence is computed
+//    and returned, the routine will reset MORE to FALSE, signaling that
+//    the end of the sequence has been reached.
+//
+//    This routine originally used a SAVE statement to maintain the
+//    variables H and T.  I have decided that it is safer
+//    to pass these variables as arguments, even though the user should
+//    never alter them.  This allows this routine to safely shuffle
+//    between several ongoing calculations.
+//
+//
+//    There are 28 compositions of 6 into three parts.  This routine will
+//    produce those compositions in the following order:
+//
+//     I         A
+//     -     ---------
+//     1     6   0   0
+//     2     5   1   0
+//     3     4   2   0
+//     4     3   3   0
+//     5     2   4   0
+//     6     1   5   0
+//     7     0   6   0
+//     8     5   0   1
+//     9     4   1   1
+//    10     3   2   1
+//    11     2   3   1
+//    12     1   4   1
+//    13     0   5   1
+//    14     4   0   2
+//    15     3   1   2
+//    16     2   2   2
+//    17     1   3   2
+//    18     0   4   2
+//    19     3   0   3
+//    20     2   1   3
+//    21     1   2   3
+//    22     0   3   3
+//    23     2   0   4
+//    24     1   1   4
+//    25     0   2   4
+//    26     1   0   5
+//    27     0   1   5
+//    28     0   0   6
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    02 July 2008
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Albert Nijenhuis, Herbert Wilf.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Albert Nijenhuis, Herbert Wilf,
+//    Combinatorial Algorithms for Computers and Calculators,
+//    Second Edition,
+//    Academic Press, 1978,
+//    ISBN: 0-12-519260-6,
+//    LC: QA164.N54.
+//
+//  Parameters:
+//
+//    Input, int N, the integer whose compositions are desired.
+//
+//    Input, int K, the number of parts in the composition.
+//
+//    Input/output, int A[K], the parts of the composition.
+//
+//    Input/output, bool *MORE.
+//    Set MORE = FALSE on first call.  It will be reset to TRUE on return
+//    with a new composition.  Each new call returns another composition until
+//    MORE is set to FALSE when the last composition has been computed
+//    and returned.
+//
+//    Input/output, int *H, *T, two internal parameters needed for the
+//    computation.  The user should allocate space for these in the calling
+//    program, include them in the calling sequence, but never alter them!
+//
+{
+  int i;
+
+  if ( !( *more ) )
+  {
+    *t = n;
+    *h = 0;
+    a[0] = n;
+    for ( i = 1; i < k; i++ )
+    {
+       a[i] = 0;
+    }
+  }
+  else
+  {
+    if ( 1 < *t )
+    {
+      *h = 0;
+    }
+    *h = *h + 1;
+    *t = a[*h-1];
+    a[*h-1] = 0;
+    a[0] = *t - 1;
+    a[*h] = a[*h] + 1;
+  }
+
+  *more = ( a[k-1] != n );
+
+  return;
+}
+//****************************************************************************80
+
+double cpu_time ( )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    CPU_TIME reports the elapsed CPU time.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    26 July 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Output, double CPU_TIME, the current total elapsed CPU time in second.
+//
+{
+  double value;
+
+  value = ( double ) std::clock ( ) / ( double ) CLOCKS_PER_SEC;
+
+  return value;
+}
+//****************************************************************************80
+
+void dif_deriv ( int nd, double xd[], double yd[], int *ndp, double xdp[],
+  double ydp[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    DIF_DERIV computes the derivative of a polynomial in divided difference form.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    23 June 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Carl deBoor,
+//    A Practical Guide to Splines,
+//    Springer, 2001,
+//    ISBN: 0387953663,
+//    LC: QA1.A647.v27.
+//
+//  Parameters:
+//
+//    Input, int ND, the size of the input table.
+//
+//    Input, double XD[ND], the abscissas for the divided
+//    difference table.
+//
+//    Input, double YD[ND], the divided difference table.
+//
+//    Output, int *NDP, the size of the output table, which is ND-1.
+//
+//    Input, double XDP[NP], the abscissas for the divided
+//    difference table for the derivative.
+//
+//    Output, double YDP[NDP], the divided difference
+//    table for the derivative.
+//
+{
+  int i;
+  double *xd_temp;
+  double *yd_temp;
+//
+//  Using a temporary copy of the difference table, shift the
+//  abscissas to zero.
+//
+  xd_temp = new double[nd];
+  yd_temp = new double[nd];
+
+  for ( i = 0; i < nd; i++ )
+  {
+    xd_temp[i] = xd[i];
+  }
+  for ( i = 0; i < nd; i++ )
+  {
+    yd_temp[i] = yd[i];
+  }
+
+  webbur::dif_shift_zero ( nd, xd_temp, yd_temp );
+//
+//  Construct the derivative.
+//
+  *ndp = nd - 1;
+
+  for ( i = 0; i < *ndp; i++ )
+  {
+    xdp[i] = 0.0;
+  }
+
+  for ( i = 0; i < *ndp; i++ )
+  {
+    ydp[i] = ( double ) ( i + 1 ) * yd_temp[i+1];
+  }
+
+  delete [] xd_temp;
+  delete [] yd_temp;
+
+  return;
+}
+//****************************************************************************80
+
+void dif_shift_x ( int nd, double xd[], double yd[], double xv )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    DIF_SHIFT_X replaces one abscissa of a divided difference table with a new one.
+//
+//  Discussion:
+//
+//    This routine shifts the representation of a divided difference polynomial by
+//    dropping the last X value in XD, and adding a new X value to the
+//    beginning of the Xd array, suitably modifying the coefficients stored
+//    in YD.
+//
+//    The representation of the polynomial is changed, but the polynomial itself
+//    should be identical.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    23 June 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Carl deBoor,
+//    A Practical Guide to Splines,
+//    Springer, 2001,
+//    ISBN: 0387953663,
+//    LC: QA1.A647.v27.
+//
+//  Parameters:
+//
+//    Input, int ND, the number of divided difference coefficients, and
+//    the number of entries in XD.
+//
+//    Input/output, double XD[ND], the X values used in the representation of
+//    the divided difference polynomial.  After a call to this routine, the
+//    last entry of XD has been dropped, the other
+//    entries have shifted up one index, and XV has been inserted at the
+//    beginning of the array.
+//
+//    Input/output, double YD[ND], the divided difference coefficients
+//    corresponding to the XD array.  On output, this array has been
+//    adjusted.
+//
+//    Input, double XV, a new X value which is to be used in the representation
+//    of the polynomial.  On output, XD[0] equals XV and the representation
+//    of the polynomial has been suitably changed.
+//    Note that XV does not have to be distinct from any of the original XD
+//    values.
+//
+{
+  int i;
+//
+//  Recompute the divided difference coefficients.
+//
+  for ( i = nd - 2; 0 <= i; i-- )
+  {
+    yd[i] = yd[i] + ( xv - xd[i] ) * yd[i+1];
+  }
+//
+//  Shift the X values up one position and insert XV.
+//
+  for ( i = nd - 1; 0 < i; i-- )
+  {
+    xd[i] = xd[i-1];
+  }
+
+  xd[0] = xv;
+
+  return;
+}
+//****************************************************************************80
+
+void dif_shift_zero ( int nd, double xd[], double yd[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    DIF_SHIFT_ZERO shifts a divided difference table so that all abscissas are zero.
+//
+//  Discussion:
+//
+//    When the abscissas are changed, the coefficients naturally
+//    must also be changed.
+//
+//    The resulting pair (XD, YD) still represents the
+//    same polynomial, but the entries in YD are now the
+//    standard polynomial coefficients.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    23 June 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Carl deBoor,
+//    A Practical Guide to Splines,
+//    Springer, 2001,
+//    ISBN: 0387953663,
+//    LC: QA1.A647.v27.
+//
+//  Parameters:
+//
+//    Input, int ND, the length of the XD and YD arrays.
+//
+//    Input/output, double XD[ND], the X values that correspond to the
+//    divided difference table.  On output, XD contains only zeroes.
+//
+//    Input/output, double YD[ND], the divided difference table
+//    for the polynomial.  On output, YD is also
+//    the coefficient array for the standard representation
+//    of the polynomial.
+//
+{
+  int i;
+  double xv;
+
+  xv = 0.0;
+
+  for ( i = 1; i <= nd; i++ )
+  {
+    webbur::dif_shift_x ( nd, xd, yd, xv );
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void dif_to_r8poly ( int nd, double xd[], double yd[], double c[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    DIF_TO_R8POLY converts a divided difference table to a standard polynomial.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    21 February 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Carl deBoor,
+//    A Practical Guide to Splines,
+//    Springer, 2001,
+//    ISBN: 0387953663,
+//    LC: QA1.A647.v27.
+//
+//  Parameters:
+//
+//    Input, int ND, the number of coefficients, and abscissas.
+//
+//    Input, double XD[ND], the X values used in the divided difference
+//    representation of the polynomial.
+//
+//    Input, double YD[ND], the divided difference table.
+//
+//    Output, double C[ND], the standard form polyomial coefficients.
+//    C[0] is the constant term, and C[ND-1] is the coefficient
+//    of X^(ND-1).
+//
+{
+  int i;
+  int j;
+
+  for ( i = 0; i < nd; i++ )
+  {
+    c[i] = yd[i];
+  }
+//
+//  Recompute the divided difference coefficients.
+//
+  for ( j = 1; j <= nd - 1; j++ )
+  {
+    for ( i = 1; i <= nd - j; i++ )
+    {
+      c[nd-i-1] = c[nd-i-1] - xd[nd-i-j] * c[nd-i];
+    }
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void fejer2_compute ( int n, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    FEJER2_COMPUTE computes a Fejer type 2 rule.
+//
+//  Discussion:
+//
+//    Our convention is that the abscissas are numbered from left to right.
+//
+//    The rule is defined on [-1,1].
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  int i;
+  int j;
+  double p;
+  double pi = 3.141592653589793;
+  double theta;
+
+  if ( n < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "FEJER2_COMPUTE - Fatal error!\n";
+    std::cerr << "  Illegal value of N = " << n << "\n";
+    std::exit ( 1 );
+  }
+  else if ( n == 1 )
+  {
+    x[0] = 0.0;
+    w[0] = 2.0;
+    return;
+  }
+
+  for ( i = 0; i < n; i++ )
+  {
+    x[i] =  std::cos ( ( double ) ( n - i ) * pi
+                     / ( double ) ( n + 1 ) );
+  }
+  if ( ( n % 2 ) == 1 )
+  {
+    x[(n-1)/2] = 0.0;
+  }
+
+  if ( n == 2 )
+  {
+    w[0] = 1.0;
+    w[1] = 1.0;
+  }
+  else
+  {
+    for ( i = 0; i < n; i++ )
+    {
+      theta = ( double ) ( n - i ) * pi
+            / ( double ) ( n + 1 );
+
+      w[i] = 1.0;
+
+      for ( j = 1; j <= ( ( n - 1 ) / 2 ); j++ )
+      {
+        w[i] = w[i] - 2.0 *  std::cos ( 2.0 * ( double ) ( j ) * theta )
+          / ( double ) ( 4 * j * j - 1 );
+      }
+      p = 2.0 * ( double ) ( ( ( n + 1 ) / 2 ) ) - 1.0;
+      w[i] = w[i] -  std::cos ( ( p + 1.0 ) * theta ) / p;
+    }
+    for ( i = 0; i < n; i++ )
+    {
+      w[i] = 2.0 * w[i] / ( double ) ( n + 1 );
+    }
+  }
+  return;
+}
+//****************************************************************************80
+
+void fejer2_compute_np ( int n, int np, double p[], double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    FEJER2_COMPUTE_NP computes a Fejer type 2 rule.
+//
+//  Discussion:
+//
+//    Our convention is that the abscissas are numbered from left to right.
+//
+//    The rule is defined on [-1,1].
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::fejer2_compute ( n, x, w );
+
+  return;
+}
+//****************************************************************************80
+
+void fejer2_compute_points ( int n, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    FEJER2_COMPUTE_POINTS computes Fejer type 2 quadrature points.
+//
+//  Discussion:
+//
+//    Our convention is that the abscissas are numbered from left to right.
+//
+//    The rule is defined on [-1,1].
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  int i;
+  double pi = 3.141592653589793;
+
+  if ( n < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "FEJER2_COMPUTE_POINTS - Fatal error!\n";
+    std::cerr << "  N < 1.\n";
+    std::exit ( 1 );
+  }
+  else if ( n == 1 )
+  {
+    x[0] = 0.0;
+  }
+  else
+  {
+    for ( i = 1; i <= n; i++ )
+    {
+      x[i-1] =  std::cos ( ( double ) ( n + 1 - i ) * pi
+                         / ( double ) ( n + 1 ) );
+    }
+    if ( ( n % 2 ) == 1 )
+    {
+      x[(n-1)/2] = 0.0;
+    }
+  }
+  return;
+}
+//****************************************************************************80
+
+void fejer2_compute_points_np ( int n, int np, double p[], double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    FEJER2_COMPUTE_POINTS_NP computes Fejer type 2 quadrature points.
+//
+//  Discussion:
+//
+//    Our convention is that the abscissas are numbered from left to right.
+//
+//    The rule is defined on [-1,1].
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  webbur::fejer2_compute_points ( n, x );
+
+  return;
+}
+//****************************************************************************80
+
+void fejer2_compute_weights ( int n, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    FEJER2_COMPUTE_WEIGHTS computes Fejer type 2 quadrature weights.
+//
+//  Discussion:
+//
+//    The user must preallocate space for the output array W.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Philip Davis, Philip Rabinowitz,
+//    Methods of Numerical Integration,
+//    Second Edition,
+//    Dover, 2007,
+//    ISBN: 0486453391,
+//    LC: QA299.3.D28.
+//
+//    Walter Gautschi,
+//    Numerical Quadrature in the Presence of a Singularity,
+//    SIAM Journal on Numerical Analysis,
+//    Volume 4, Number 3, 1967, pages 357-362.
+//
+//    Joerg Waldvogel,
+//    Fast Construction of the Fejer and Clenshaw-Curtis Quadrature Rules,
+//    BIT Numerical Mathematics,
+//    Volume 43, Number 1, 2003, pages 1-18.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Output, double W[N], the weights.
+//
+{
+  int i;
+  int j;
+  double p;
+  double pi = 3.141592653589793;
+  double theta;
+
+  if ( n < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "FEJER2_COMPUTE_WEIGHTS - Fatal error!\n";
+    std::cerr << "  N < 1.\n";
+    std::exit ( 1 );
+  }
+  else if ( n == 1 )
+  {
+    w[0] = 2.0;
+  }
+  else if ( n == 2 )
+  {
+    w[0] = 1.0;
+    w[1] = 1.0;
+  }
+  else
+  {
+    for ( i = 1; i <= n; i++ )
+    {
+      theta = ( double ) ( n + 1 - i ) * pi
+            / ( double ) ( n + 1 );
+
+      w[i-1] = 1.0;
+
+      for ( j = 1; j <= ( ( n - 1 ) / 2 ); j++ )
+      {
+        w[i-1] = w[i-1] - 2.0 *  std::cos ( 2.0 * ( double ) ( j ) * theta )
+          / ( double ) ( 4 * j * j - 1 );
+      }
+      p = 2.0 * ( double ) ( ( ( n + 1 ) / 2 ) ) - 1.0;
+      w[i-1] = w[i-1] -  std::cos ( ( p + 1.0 ) * theta ) / p;
+    }
+    for ( i = 0; i < n; i++ )
+    {
+      w[i] = 2.0 * w[i] / ( double ) ( n + 1 );
+    }
+  }
+  return;
+}
+//****************************************************************************80
+
+void fejer2_compute_weights_np ( int n, int np, double p[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    FEJER2_COMPUTE_WEIGHTS_NP computes Fejer type 2 quadrature weights.
+//
+//  Discussion:
+//
+//    The user must preallocate space for the output array W.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Philip Davis, Philip Rabinowitz,
+//    Methods of Numerical Integration,
+//    Second Edition,
+//    Dover, 2007,
+//    ISBN: 0486453391,
+//    LC: QA299.3.D28.
+//
+//    Walter Gautschi,
+//    Numerical Quadrature in the Presence of a Singularity,
+//    SIAM Journal on Numerical Analysis,
+//    Volume 4, Number 3, 1967, pages 357-362.
+//
+//    Joerg Waldvogel,
+//    Fast Construction of the Fejer and Clenshaw-Curtis Quadrature Rules,
+//    BIT Numerical Mathematics,
+//    Volume 43, Number 1, 2003, pages 1-18.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::fejer2_compute_weights ( n, w );
+
+  return;
+}
+//****************************************************************************80
+
+void gegenbauer_compute ( int order, double alpha, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEGENBAUER_COMPUTE computes a Gegenbauer quadrature rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      Integral ( -1 <= X <= 1 ) (1-X^2)^ALPHA * F(X) dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= ORDER ) W(I) * F ( X(I) )
+//
+//    Thanks to Janiki Raman for pointing out a problem in an earlier
+//    version of the code that occurred when ALPHA was -0.5.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//    1 <= ORDER.
+//
+//    Input, double ALPHA, the exponent of (1-X^2).  -1.0 < ALPHA is required.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double an;
+  double *c;
+  double cc;
+  double delta;
+  double dp2;
+  int i;
+  double p1;
+  double prod;
+  double r1;
+  double r2;
+  double r3;
+  double temp;
+  double x0;
+//
+//  Check ORDER.
+//
+  if ( order < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "GEGENBAUER_COMPUTE - Fatal error!\n";
+    std::cerr << "  1 <= ORDER is required.\n";
+    std::exit ( 1 );
+  }
+  c = new double[order];
+//
+//  Check ALPHA.
+//
+  if ( alpha <= -1.0 )
+  {
+    std::cerr << "\n";
+    std::cerr << "GEGENBAUER_COMPUTE - Fatal error!\n";
+    std::cerr << "  -1.0 < ALPHA is required.\n";
+    std::exit ( 1 );
+  }
+//
+//  Set the recursion coefficients.
+//
+  c[0] = 0.0;
+  if ( 2 <= order )
+  {
+    c[1] = 1.0 / ( 2.0 * alpha + 3.0 );
+  }
+
+  for ( i = 3; i <= order; i++ )
+  {
+    c[i-1] = ( double ) ( i - 1 )
+          * ( alpha + alpha + ( double ) ( i - 1 ) ) /
+          ( ( alpha + alpha + ( double ) ( 2 * i - 1 ) )
+          * ( alpha + alpha + ( double ) ( 2 * i - 3 ) ) );
+  }
+
+  delta = webbur::r8_gamma ( alpha         + 1.0 )
+        * webbur::r8_gamma (         alpha + 1.0 )
+        / webbur::r8_gamma ( alpha + alpha + 2.0 );
+
+  prod = 1.0;
+  for ( i = 2; i <= order; i++ )
+  {
+    prod = prod * c[i-1];
+  }
+  cc = delta * std::pow ( 2.0, alpha + alpha + 1.0 ) * prod;
+
+  for ( i = 1; i <= order; i++ )
+  {
+    if ( i == 1 )
+    {
+      an = alpha / ( double ) ( order );
+
+      r1 = ( 1.0 + alpha )
+        * ( 2.78 / ( 4.0 + ( double ) ( order * order ) )
+        + 0.768 * an / ( double ) ( order ) );
+
+      r2 = 1.0 + 2.44 * an + 1.282 * an * an;
+
+      x0 = ( r2 - r1 ) / r2;
+    }
+    else if ( i == 2 )
+    {
+      r1 = ( 4.1 + alpha ) /
+        ( ( 1.0 + alpha ) * ( 1.0 + 0.156 * alpha ) );
+
+      r2 = 1.0 + 0.06 * ( ( double ) ( order ) - 8.0 ) *
+        ( 1.0 + 0.12 * alpha ) / ( double ) ( order );
+
+      r3 = 1.0 + 0.012 * alpha *
+        ( 1.0 + 0.25 * r8_abs ( alpha ) ) / ( double ) ( order );
+
+      x0 = x0 - r1 * r2 * r3 * ( 1.0 - x0 );
+    }
+    else if ( i == 3 )
+    {
+      r1 = ( 1.67 + 0.28 * alpha ) / ( 1.0 + 0.37 * alpha );
+
+      r2 = 1.0 + 0.22 * ( ( double ) ( order ) - 8.0 )
+        / ( double ) ( order );
+
+      r3 = 1.0 + 8.0 * alpha /
+        ( ( 6.28 + alpha ) * ( double ) ( order * order ) );
+
+      x0 = x0 - r1 * r2 * r3 * ( x[0] - x0 );
+    }
+    else if ( i < order - 1 )
+    {
+      x0 = 3.0 * x[i-2] - 3.0 * x[i-3] + x[i-4];
+    }
+    else if ( i == order - 1 )
+    {
+      r1 = ( 1.0 + 0.235 * alpha ) / ( 0.766 + 0.119 * alpha );
+
+      r2 = 1.0 / ( 1.0 + 0.639
+        * ( ( double ) ( order ) - 4.0 )
+        / ( 1.0 + 0.71 * ( ( double ) ( order ) - 4.0 ) ) );
+
+      r3 = 1.0 / ( 1.0 + 20.0 * alpha / ( ( 7.5 + alpha ) *
+        ( double ) ( order * order ) ) );
+
+      x0 = x0 + r1 * r2 * r3 * ( x0 - x[i-3] );
+    }
+    else if ( i == order )
+    {
+      r1 = ( 1.0 + 0.37 * alpha ) / ( 1.67 + 0.28 * alpha );
+
+      r2 = 1.0 /
+        ( 1.0 + 0.22 * ( ( double ) ( order ) - 8.0 )
+        / ( double ) ( order ) );
+
+      r3 = 1.0 / ( 1.0 + 8.0 * alpha /
+        ( ( 6.28 + alpha ) * ( double ) ( order * order ) ) );
+
+      x0 = x0 + r1 * r2 * r3 * ( x0 - x[i-3] );
+    }
+
+    webbur::gegenbauer_root ( &x0, order, alpha, &dp2, &p1, c );
+
+    x[i-1] = x0;
+    w[i-1] = cc / ( dp2 * p1 );
+  }
+//
+//  Reverse the order of the values.
+//
+  for ( i = 1; i <= order/2; i++ )
+  {
+    temp       = x[i-1];
+    x[i-1]     = x[order-i];
+    x[order-i] = temp;
+  }
+
+  for ( i = 1; i <=order/2; i++ )
+  {
+    temp       = w[i-1];
+    w[i-1]     = w[order-i];
+    w[order-i] = temp;
+  }
+
+  delete [] c;
+
+  return;
+}
+//****************************************************************************80
+
+void gegenbauer_compute_np ( int order, int np, double p[], double x[],
+  double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEGENBAUER_COMPUTE_NP computes a Gegenbauer quadrature rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      Integral ( -1 <= X <= 1 ) (1-X^2)^ALPHA * F(X) dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= ORDER ) W(I) * F ( X(I) )
+//
+//    Thanks to Janiki Raman for pointing out a problem in an earlier
+//    version of the code that occurred when ALPHA was -0.5.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//    1 <= ORDER.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], contains parameters.
+//    P[0] = ALPHA = the exponent of (1-X^2).  -1.0 < ALPHA is required.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double alpha;
+
+  alpha = p[0];
+
+  webbur::gegenbauer_compute ( order, alpha, x, w );
+
+  return;
+}
+//****************************************************************************80
+
+void gegenbauer_compute_points ( int order, double alpha, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEGENBAUER_COMPUTE_POINTS computes Gegenbauer quadrature points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//    1 <= ORDER.
+//
+//    Input, double ALPHA, the exponent of (1-X^2).  -1.0 < ALPHA is required.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+{
+  double *w;
+
+  w = new double[order];
+
+  webbur::gegenbauer_compute ( order, alpha, x, w );
+
+  delete [] w;
+
+  return;
+}
+//****************************************************************************80
+
+void gegenbauer_compute_points_np ( int order, int np, double p[], double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEGENBAUER_COMPUTE_POINTS_NP computes Gegenbauer quadrature points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//    1 <= ORDER.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], contains parameters.
+//    P[0] = ALPHA = the exponent of (1-X^2).  -1.0 < ALPHA is required.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+{
+  double alpha;
+
+  alpha = p[0];
+
+  webbur::gegenbauer_compute_points ( order, alpha, x );
+
+  return;
+}
+//****************************************************************************80
+
+void gegenbauer_compute_weights ( int order, double alpha, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEGENBAUER_COMPUTE_WEIGHTS computes Gegenbauer quadrature weights.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//    1 <= ORDER.
+//
+//    Input, double ALPHA, the exponent of (1-X^2).  -1.0 < ALPHA is required.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double *x;
+
+  x = new double[order];
+
+  webbur::gegenbauer_compute ( order, alpha, x, w );
+
+  delete [] x;
+
+  return;
+}
+//****************************************************************************80
+
+void gegenbauer_compute_weights_np ( int order, int np, double p[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEGENBAUER_COMPUTE_WEIGHTS_NP computes Gegenbauer quadrature weights.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//    1 <= ORDER.
+//
+//    Input, double P[1], contains parameters.
+//    P[0] = ALPHA = the exponent of (1-X^2).  -1.0 < ALPHA is required.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double alpha;
+
+  alpha = p[0];
+
+  webbur::gegenbauer_compute_weights ( order, alpha, w );
+
+  return;
+}
+//****************************************************************************80
+
+double gegenbauer_integral ( int expon, double alpha )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEGENBAUER_INTEGRAL integrates a monomial with Gegenbauer weight.
+//
+//  Discussion:
+//
+//    VALUE = Integral ( -1 <= X <= +1 ) x^EXPON (1-x^2)^ALPHA dx
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    26 February 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int EXPON, the exponent.
+//
+//    Input, double ALPHA, the exponent of (1-X^2) in the weight factor.
+//
+//    Output, double GEGENBAUER_INTEGRAL, the value of the integral.
+//
+{
+  double arg1;
+  double arg2;
+  double arg3;
+  double arg4;
+  double c;
+  double value;
+  double value1;
+
+  if ( ( expon % 2 ) == 1 )
+  {
+    value = 0.0;
+    return value;
+  }
+
+  c = ( double ) ( expon );
+
+  arg1 = - alpha;
+  arg2 =   1.0 + c;
+  arg3 =   2.0 + alpha + c;
+  arg4 = - 1.0;
+
+  value1 = webbur::r8_hyper_2f1 ( arg1, arg2, arg3, arg4 );
+
+  value = webbur::r8_gamma ( 1.0 + c ) * 2.0
+    * webbur::r8_gamma ( 1.0 + alpha  ) * value1
+    / webbur::r8_gamma ( 2.0 + alpha  + c );
+
+  return value;
+}
+//****************************************************************************80
+
+void gegenbauer_recur ( double *p2, double *dp2, double *p1, double x,
+  int order, double alpha, double c[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEGENBAUER_RECUR evaluates a Gegenbauer polynomial.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    26 February 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Output, double *P2, the value of J(ORDER)(X).
+//
+//    Output, double *DP2, the value of J'(ORDER)(X).
+//
+//    Output, double *P1, the value of J(ORDER-1)(X).
+//
+//    Input, double X, the point at which polynomials are evaluated.
+//
+//    Input, int ORDER, the order of the polynomial.
+//
+//    Input, double ALPHA, the exponents of (1-X^2).
+//
+//    Input, double C[ORDER], the recursion coefficients.
+//
+{
+  double dp0;
+  double dp1;
+  int i;
+  double p0;
+
+  *p1 = 1.0;
+  dp1 = 0.0;
+
+  *p2 = x;
+  *dp2 = 1.0;
+
+  for ( i = 2; i <= order; i++ )
+  {
+    p0 = *p1;
+    dp0 = dp1;
+
+    *p1 = *p2;
+    dp1 = *dp2;
+
+    *p2 = x *  ( *p1 ) - c[i-1] * p0;
+    *dp2 = x * dp1 + ( *p1 ) - c[i-1] * dp0;
+  }
+  return;
+}
+//****************************************************************************80
+
+void gegenbauer_root ( double *x, int order, double alpha, double *dp2,
+  double *p1, double c[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEGENBAUER_ROOT improves an approximate root of a Gegenbauer polynomial.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    26 February 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input/output, double *X, the approximate root, which
+//    should be improved on output.
+//
+//    Input, int ORDER, the order of the polynomial.
+//
+//    Input, double ALPHA, the exponents of (1-X^2).
+//
+//    Output, double *DP2, the value of J'(ORDER)(X).
+//
+//    Output, double *P1, the value of J(ORDER-1)(X).
+//
+//    Input, double C[ORDER], the recursion coefficients.
+//
+{
+  double d;
+  double eps;
+  double p2;
+  int step;
+  int step_max = 10;
+
+  eps = webbur::r8_epsilon ( );
+
+  for ( step = 1; step <= step_max; step++ )
+  {
+    webbur::gegenbauer_recur ( &p2, dp2, p1, *x, order, alpha, c );
+
+    d = p2 / ( *dp2 );
+    *x = *x - d;
+
+    if ( webbur::r8_abs ( d ) <= eps * ( webbur::r8_abs ( *x ) + 1.0 ) )
+    {
+      return;
+    }
+  }
+  return;
+}
+//****************************************************************************80
+
+void gen_hermite_compute ( int n, double alpha, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEN_HERMITE_COMPUTE computes a generalized Gauss-Hermite quadrature rule.
+//
+//  Discussion:
+//
+//    The code uses an algorithm by Elhay and Kautsky.
+//
+//    The integral:
+//
+//      integral ( -oo < x < +oo ) |x|^alpha exp(-x^2) f(x) dx
+//
+//    The quadrature rule:
+//
+//      sum ( 1 <= i <= n ) w(i) * f ( x(i) )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    30 April 2011
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Sylvan Elhay, Jaroslav Kautsky.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Sylvan Elhay, Jaroslav Kautsky,
+//    Algorithm 655: IQPACK, FORTRAN Subroutines for the Weights of
+//    Interpolatory Quadrature,
+//    ACM Transactions on Mathematical Software,
+//    Volume 13, Number 4, December 1987, pages 399-415.
+//
+//  Parameters:
+//
+//    Input, int N, the number of abscissas.
+//
+//    Input, double ALPHA, the parameter.
+//    -1.0 < ALPHA.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  double *bj;
+  int i;
+  double i_r8;
+  double zemu;
+//
+//  Define the zero-th moment.
+//
+  zemu = webbur::r8_gamma ( ( alpha + 1.0 ) / 2.0 );
+//
+//  Define the Jacobi matrix.
+//
+  bj = new double[n];
+
+  for ( i = 0; i < n; i++ )
+  {
+    i_r8 = ( double ) ( i + 1 );
+    if ( ( i % 2 ) == 0 )
+    {
+      bj[i] = ( i_r8 + alpha ) / 2.0;
+    }
+    else
+    {
+      bj[i] = i_r8 / 2.0;
+    }
+  }
+
+  for ( i = 0; i < n; i++ )
+  {
+    bj[i] = std::sqrt ( bj[i] );
+  }
+
+  for ( i = 0; i < n; i++ )
+  {
+    x[i] = 0.0;
+  }
+
+  w[0] = std::sqrt ( zemu );
+  for ( i = 1; i < n; i++ )
+  {
+    w[i] = 0.0;
+  }
+//
+//  Diagonalize the Jacobi matrix.
+//
+  webbur::imtqlx ( n, x, bj, w );
+
+  for ( i = 0; i < n; i++ )
+  {
+    w[i] = w[i] * w[i];
+  }
+
+  delete [] bj;
+
+  return;
+}
+//****************************************************************************80
+
+void gen_hermite_compute_np ( int order, int np, double p[], double x[],
+  double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEN_HERMITE_COMPUTE_NP computes a Generalized Hermite quadrature rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      Integral ( -oo < x < +oo ) |x|^ALPHA exp(-x^2) f(x) dx
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Philip Davis, Philip Rabinowitz,
+//    Methods of Numerical Integration,
+//    Second Edition,
+//    Dover, 2007,
+//    ISBN: 0486453391,
+//    LC: QA299.3.D28.
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//    1 <= ORDER.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], contains parameters.
+//    P[0] = ALPHA, the exponent of the X factor. -1.0 < ALPHA.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double alpha;
+
+  alpha = p[0];
+
+  webbur::gen_hermite_compute ( order, alpha, x, w );
+
+  return;
+}
+//****************************************************************************80
+
+void gen_hermite_compute_points ( int order, double alpha, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEN_HERMITE_COMPUTE_POINTS computes Generalized Hermite quadrature points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Input, double ALPHA, the exponent of the X factor.
+//    -1.0 < ALPHA.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+{
+  double *w;
+
+  w = new double[order];
+
+  webbur::gen_hermite_compute ( order, alpha, x, w );
+
+  delete [] w;
+
+  return;
+}
+//****************************************************************************80
+
+void gen_hermite_compute_points_np ( int order, int np, double p[], double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEN_HERMITE_COMPUTE_POINTS_NP: Generalized Hermite quadrature points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], contains parameters.
+//    P[0] = ALPHA, the exponent of the X factor. -1.0 < ALPHA.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+{
+  double alpha;
+
+  alpha = p[0];
+
+  webbur::gen_hermite_compute_points ( order, alpha, x );
+
+  return;
+}
+//****************************************************************************80
+
+void gen_hermite_compute_weights ( int order, double alpha, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEN_HERMITE_COMPUTE_WEIGHTS computes Generalized Hermite quadrature weights.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Input, double ALPHA, the exponent of the X factor.
+//    -1.0 < ALPHA.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double *x;
+
+  x = new double[order];
+
+  webbur::gen_hermite_compute ( order, alpha, x, w );
+
+  delete [] x;
+
+  return;
+}
+//****************************************************************************80
+
+void gen_hermite_compute_weights_np ( int order, int np, double p[],
+  double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEN_HERMITE_COMPUTE_WEIGHTS_NP: Generalized Hermite quadrature weights.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], contains parameters.
+//    P[0] = ALPHA, the exponent of the X factor. -1.0 < ALPHA.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double alpha;
+
+  alpha = p[0];
+
+  webbur::gen_hermite_compute_weights ( order, alpha, w );
+
+  return;
+}
+//****************************************************************************80
+
+void gen_hermite_dr_compute ( int order, double alpha, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEN_HERMITE_DR_COMPUTE computes a Generalized Hermite quadrature rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      Integral ( -oo < x < +oo ) |x|^ALPHA exp(-x^2) f(x) dx
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Philip Davis, Philip Rabinowitz,
+//    Methods of Numerical Integration,
+//    Second Edition,
+//    Dover, 2007,
+//    ISBN: 0486453391,
+//    LC: QA299.3.D28.
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//    1 <= ORDER.
+//
+//    Input, double ALPHA, the exponent of the X factor.
+//    -1.0 < ALPHA.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double alpha_laguerre;
+  double arg;
+  int i;
+  int order_laguerre;
+  double *w_laguerre;
+  double *x_laguerre;
+
+  if ( order < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "GEN_HERMITE_DR_COMPUTE - Fatal error!\n";
+    std::cerr << "  Illegal value of ORDER = " << order << "\n";
+    std::exit ( 1 );
+  }
+
+  if ( order == 1 )
+  {
+    arg = ( alpha + 1.0 ) / 2.0;
+    x[0] = 0.0;
+    w[0] = webbur::r8_gamma ( arg );
+    return;
+  }
+
+  if ( ( order % 2 ) == 0 )
+  {
+    order_laguerre = order / 2;
+    alpha_laguerre = ( alpha - 1.0 ) / 2.0;
+  }
+  else
+  {
+    order_laguerre = ( order - 1 ) / 2;
+    alpha_laguerre = ( alpha + 1.0 ) / 2.0;
+  }
+
+  w_laguerre = new double[order_laguerre];
+  x_laguerre = new double[order_laguerre];
+
+  webbur::gen_laguerre_ss_compute ( order_laguerre, alpha_laguerre, x_laguerre,
+    w_laguerre );
+
+  if ( ( order % 2 ) == 0 )
+  {
+    for ( i = 0; i < order_laguerre; i++ )
+    {
+      x[i] = - std::sqrt ( x_laguerre[order_laguerre-1-i] );
+    }
+    for ( i = 0; i < order_laguerre; i++ )
+    {
+      x[order_laguerre+i] = std::sqrt ( x_laguerre[i] );
+	}
+    for ( i = 0; i < order_laguerre; i++ )
+    {
+      w[i] = 0.5 * w_laguerre[order_laguerre-1-i];
+    }
+    for ( i = 0; i < order_laguerre; i++ )
+    {
+      w[order_laguerre+i] = 0.5 * w_laguerre[i];
+    }
+  }
+  else if ( ( order % 2 ) == 1 )
+  {
+    for ( i = 0; i < order_laguerre; i++ )
+    {
+      x[i] = - std::sqrt ( x_laguerre[order_laguerre-1-i] );
+    }
+    x[order_laguerre] = 0.0;
+    for ( i = 0; i < order_laguerre; i++ )
+    {
+      x[order_laguerre+1+i] = std::sqrt ( x_laguerre[i] );
+	}
+    for ( i = 0; i < order_laguerre; i++ )
+    {
+      w[i] = 0.5 * w_laguerre[order_laguerre-1-i] / x_laguerre[order_laguerre-1-i];
+    }
+
+    arg = ( alpha + 1.0 ) / 2.0;
+    w[order_laguerre] = webbur::r8_gamma ( arg );
+    for ( i = 0; i < order_laguerre; i++ )
+    {
+      w[order_laguerre] = w[order_laguerre] - w_laguerre[i] / x_laguerre[i];
+    }
+
+    for ( i = 0; i < order_laguerre; i++ )
+    {
+      w[order_laguerre+1+i] = 0.5 * w_laguerre[i] / x_laguerre[i];
+    }
+  }
+  delete [] w_laguerre;
+  delete [] x_laguerre;
+
+  return;
+}
+//****************************************************************************80
+
+double gen_hermite_integral ( int expon, double alpha )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEN_HERMITE_INTEGRAL evaluates a monomial Generalized Hermite integral.
+//
+//  Discussion:
+//
+//    H(n,alpha) = Integral ( -oo < x < +oo ) x^n |x|^alpha exp(-x^2) dx
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    19 February 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int EXPON, the exponent of the monomial.
+//    0 <= EXPON.
+//
+//    Input, double ALPHA, the exponent of |X| in the weight function.
+//    -1.0 < ALPHA.
+//
+//    Output, double GEN_HERMITE_INTEGRAL, the value of the integral.
+//
+{
+  double a;
+  double arg;
+  double value;
+
+  if ( ( expon % 2 ) == 1 )
+  {
+    value = 0.0;
+  }
+  else
+  {
+    a = alpha + ( double ) ( expon );
+    if ( a <= - 1.0 )
+    {
+      value = - webbur::r8_huge ( );
+    }
+    else
+    {
+      arg = ( a + 1.0 ) / 2.0;
+      value = webbur::r8_gamma ( arg );
+    }
+  }
+  return value;
+}
+//****************************************************************************80
+
+void gen_laguerre_compute ( int n, double alpha, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEN_LAGUERRE_COMPUTE: generalized Gauss-Laguerre quadrature rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      integral ( 0 <= x < +oo ) exp ( - x ) * x^alpha * f(x) dx
+//
+//    The quadrature rule:
+//
+//      sum ( 1 <= i <= n ) w(i) * f ( x(i) )
+//
+//    The integral:
+//
+//      integral ( 0 <= x < +oo ) x^alpha * f(x) dx
+//
+//    The quadrature rule:
+//
+//      sum ( 1 <= i <= n ) w(i) * exp ( x(i) ) * f ( x(i) )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    23 April 2011
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Sylvan Elhay, Jaroslav Kautsky.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Sylvan Elhay, Jaroslav Kautsky,
+//    Algorithm 655: IQPACK, FORTRAN Subroutines for the Weights of
+//    Interpolatory Quadrature,
+//    ACM Transactions on Mathematical Software,
+//    Volume 13, Number 4, December 1987, pages 399-415.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Input, double ALPHA, the exponent of the X factor.
+//    ALPHA must be nonnegative.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  double *bj;
+  int i;
+  double i_r8;
+  double zemu;
+//
+//  Define the zero-th moment.
+//
+  zemu = webbur::r8_gamma ( alpha + 1.0 );
+//
+//  Define the Jacobi matrix.
+//
+  bj = new double[n];
+
+  for ( i = 0; i < n; i++ )
+  {
+    i_r8 = ( double ) ( i + 1 );
+    bj[i] = std::sqrt ( i_r8 * ( i_r8 + alpha ) );
+  }
+
+  for ( i = 0; i < n; i++ )
+  {
+    i_r8 = ( double ) ( i + 1 );
+    x[i] = 2.0 * i_r8 - 1.0 + alpha;
+  }
+
+  w[0] = std::sqrt ( zemu );
+
+  for ( i = 1; i < n; i++ )
+  {
+    w[i] = 0.0;
+  }
+//
+//  Diagonalize the Jacobi matrix.
+//
+  imtqlx ( n, x, bj, w );
+
+  for ( i = 0; i < n; i++ )
+  {
+    w[i] = w[i] * w[i];
+  }
+
+  delete [] bj;
+
+  return;
+}
+//****************************************************************************80
+
+void gen_laguerre_compute_np ( int order, int np, double p[], double x[],
+  double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEN_LAGUERRE_COMPUTE_NP computes a Generalized Laguerre quadrature rule.
+//
+//  Discussion:
+//
+//    In the simplest case, ALPHA is 0, and we are approximating the
+//    integral from 0 to +oo of exp(-X) * F(X).  When this is so,
+//    it is easy to modify the rule to approximate the integral from
+//    A to +oo as well.
+//
+//    If ALPHA is nonzero, then there is no simple way to extend the
+//    rule to approximate the integral from A to +oo.  The simplest
+//    procedures would be to approximate the integral from 0 to A.
+//
+//    If the integral to approximate is:
+//
+//        Integral ( A <= X < +oo ) exp ( - X ) * F(X) dX
+//      or
+//        Integral ( 0 <= X < +oo ) exp ( - X ) * X^ALPHA * F(X) dX
+//
+//    then the quadrature rule is:
+//
+//      exp ( - A ) * Sum ( 1 <= I <= ORDER ) W(I) * F ( A+X(I) )
+//    or
+//      Sum ( 1 <= I <= ORDER ) W(I) * F ( X(I) )
+//
+//
+//    If the integral to approximate is:
+//
+//        Integral ( A <= X < +oo ) F(X) dX
+//      or
+//        Integral ( 0 <= X < +oo ) X^ALPHA * F(X) dX
+//
+//    then the quadrature rule is:
+//
+//      exp ( - A ) * Sum ( 1 <= I <= ORDER )
+//        W(I) * exp(A+X(I)) * F ( A+X(I) )
+//    or
+//      Sum ( 1 <= I <= ORDER ) W(I) * exp(X(I)) * F ( X(I) )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Arthur Stroud, Don Secrest.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//    1 <= ORDER.
+//
+//    Input, double P[1], contains parameters.
+//    P[0] = ALPHA, the exponent of the X factor.
+//    Set ALPHA = 0.0 for the simplest rule.
+//    ALPHA must be nonnegative.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double alpha;
+
+  alpha = p[0];
+
+  webbur::gen_laguerre_compute ( order, alpha, x, w );
+
+  return;
+}
+//****************************************************************************80
+
+void gen_laguerre_compute_points ( int order, double alpha, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEN_LAGUERRE_COMPUTE_POINTS: Generalized Laguerre quadrature points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    19 March 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Input, double ALPHA, the exponent of the X factor.
+//    Set ALPHA = 0.0 for the simplest rule.
+//    ALPHA must be nonnegative.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+{
+  double *w;
+
+  w = new double[order];
+
+  webbur::gen_laguerre_compute ( order, alpha, x, w );
+
+  delete [] w;
+
+  return;
+}
+//****************************************************************************80
+
+void gen_laguerre_compute_points_np ( int order, int np, double p[],
+  double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEN_LAGUERRE_COMPUTE_POINTS_NP: Generalized Laguerre quadrature points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], contains parameters.
+//    P[0] = ALPHA, the exponent of the X factor.
+//    Set ALPHA = 0.0 for the simplest rule.
+//    ALPHA must be nonnegative.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+{
+  double alpha;
+
+  alpha = p[0];
+
+  webbur::gen_laguerre_compute_points ( order, alpha, x );
+
+  return;
+}
+//****************************************************************************80
+
+void gen_laguerre_compute_weights ( int order, double alpha, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEN_LAGUERRE_COMPUTE_WEIGHTS: Generalized Laguerre quadrature weights.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Input, double ALPHA, the exponent of the X factor.
+//    Set ALPHA = 0.0 for the simplest rule.
+//    ALPHA must be nonnegative.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double *x;
+
+  x = new double[order];
+
+  webbur::gen_laguerre_compute ( order, alpha, x, w );
+
+  delete [] x;
+
+  return;
+}
+//****************************************************************************80
+
+void gen_laguerre_compute_weights_np ( int order, int np, double p[],
+  double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEN_LAGUERRE_COMPUTE_WEIGHTS_NP: Generalized Laguerre quadrature weights.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], contains parameters.
+//    P[0] = ALPHA, the exponent of the X factor.
+//    Set ALPHA = 0.0 for the simplest rule.
+//    ALPHA must be nonnegative.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double alpha;
+
+  alpha = p[0];
+
+  webbur::gen_laguerre_compute_weights ( order, alpha, w );
+
+  return;
+}
+//****************************************************************************80
+
+double gen_laguerre_integral ( int expon, double alpha )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEN_LAGUERRE_INTEGRAL evaluates a monomial Generalized Laguerre integral.
+//
+//  Discussion:
+//
+//    L(n,alpha) = Integral ( 0 <= x < +oo ) x^n * x^alpha exp(-x) dx
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    20 February 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int EXPON, the exponent of the monomial.
+//    0 <= EXPON.
+//
+//    Input, double ALPHA, the exponent of X in the weight function.
+//    -1.0 < ALPHA.
+//
+//    Output, double GEN_LAGUERRE_INTEGRAL, the value of the integral.
+//
+{
+  double arg;
+  double value;
+
+  arg = alpha + ( double ) ( expon + 1.0 );
+  value = webbur::r8_gamma ( arg );
+
+  return value;
+}
+//****************************************************************************80
+
+void gen_laguerre_ss_compute ( int order, double alpha, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEN_LAGUERRE_SS_COMPUTE computes a Generalized Laguerre quadrature rule.
+//
+//  Discussion:
+//
+//    In the simplest case, ALPHA is 0, and we are approximating the
+//    integral from 0 to +oo of exp(-X) * F(X).  When this is so,
+//    it is easy to modify the rule to approximate the integral from
+//    A to +oo as well.
+//
+//    If ALPHA is nonzero, then there is no simple way to extend the
+//    rule to approximate the integral from A to +oo.  The simplest
+//    procedures would be to approximate the integral from 0 to A.
+//
+//    If the integral to approximate is:
+//
+//        Integral ( A <= X < +oo ) exp ( - X ) * F(X) dX
+//      or
+//        Integral ( 0 <= X < +oo ) exp ( - X ) * X^ALPHA * F(X) dX
+//
+//    then the quadrature rule is:
+//
+//      exp ( - A ) * Sum ( 1 <= I <= ORDER ) W(I) * F ( A+X(I) )
+//    or
+//      Sum ( 1 <= I <= ORDER ) W(I) * F ( X(I) )
+//
+//
+//    If the integral to approximate is:
+//
+//        Integral ( A <= X < +oo ) F(X) dX
+//      or
+//        Integral ( 0 <= X < +oo ) X^ALPHA * F(X) dX
+//
+//    then the quadrature rule is:
+//
+//      exp ( - A ) * Sum ( 1 <= I <= ORDER )
+//        W(I) * exp(A+X(I)) * F ( A+X(I) )
+//    or
+//      Sum ( 1 <= I <= ORDER ) W(I) * exp(X(I)) * F ( X(I) )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Arthur Stroud, Don Secrest.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//    1 <= ORDER.
+//
+//    Input, double ALPHA, the exponent of the X factor.
+//    Set ALPHA = 0.0 for the simplest rule.
+//    ALPHA must be nonnegative.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double *b;
+  double *c;
+  double cc;
+  double dp2;
+  int i;
+  double p1;
+  double prod;
+  double r1;
+  double r2;
+  double ratio;
+  double x0;
+
+  if ( order < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "GEN_LAGUERRE_SS_COMPUTE - Fatal error!\n";
+    std::cerr << "  Illegal value of ORDER = " << order << "\n";
+    std::exit ( 1 );
+  }
+
+  b = new double[order];
+  c = new double[order];
+//
+//  Set the recursion coefficients.
+//
+  for ( i = 0; i < order; i++ )
+  {
+    b[i] = ( alpha + ( double ) ( 2 * i + 1 ) );
+  }
+
+  for ( i = 0; i < order; i++ )
+  {
+    c[i] = ( double ) ( i ) * ( alpha + ( double ) ( i ) );
+  }
+  prod = 1.0;
+  for ( i = 1; i < order; i++ )
+  {
+    prod = prod * c[i];
+  }
+  cc = webbur::r8_gamma ( alpha + 1.0 ) * prod;
+
+  for ( i = 0; i < order; i++ )
+  {
+//
+//  Compute an estimate for the root.
+//
+    if ( i == 0 )
+    {
+      x0 = ( 1.0 + alpha ) * ( 3.0+ 0.92 * alpha ) /
+        ( 1.0 + 2.4 * ( double ) ( order ) + 1.8 * alpha );
+    }
+    else if ( i == 1 )
+    {
+      x0 = x0 + ( 15.0 + 6.25 * alpha ) /
+        ( 1.0 + 0.9 * alpha + 2.5 * ( double ) ( order ) );
+    }
+    else
+    {
+      r1 = ( 1.0 + 2.55 * ( double ) ( i - 1 ) )
+        / ( 1.9 * ( double ) ( i - 1 ) );
+
+      r2 = 1.26 * ( double ) ( i - 1 ) * alpha /
+        ( 1.0 + 3.5 * ( double ) ( i - 1 ) );
+
+      ratio = ( r1 + r2 ) / ( 1.0 + 0.3 * alpha );
+
+      x0 = x0 + ratio * ( x0 - x[i-2] );
+    }
+//
+//  Use iteration to find the root.
+//
+    webbur::gen_laguerre_ss_root ( &x0, order, alpha, &dp2, &p1, b, c );
+//
+//  Set the abscissa and weight.
+//
+    x[i] = x0;
+    w[i] = ( cc / dp2 ) / p1;
+  }
+
+  delete [] b;
+  delete [] c;
+
+  return;
+}
+//****************************************************************************80
+
+void gen_laguerre_ss_recur ( double *p2, double *dp2, double *p1, double x,
+  int order, double alpha, double b[], double c[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEN_LAGUERRE_SS_RECUR evaluates a Generalized Laguerre polynomial.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    18 February 2008
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Arthur Stroud, Don Secrest.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Output, double *P2, the value of L(ORDER)(X).
+//
+//    Output, double *DP2, the value of L'(ORDER)(X).
+//
+//    Output, double *P1, the value of L(ORDER-1)(X).
+//
+//    Input, double X, the point at which polynomials are evaluated.
+//
+//    Input, int ORDER, the order of the polynomial.
+//
+//    Input, double ALPHA, the exponent of the X factor in the
+//    integrand.
+//
+//    Input, double B[ORDER], C[ORDER], the recursion coefficients.
+//
+{
+  double dp0;
+  double dp1;
+  int i;
+  double p0;
+
+  *p1 = 1.0;
+  dp1 = 0.0;
+
+  *p2 = x - alpha - 1.0;
+  *dp2 = 1.0;
+
+  for ( i = 1; i < order; i++ )
+  {
+    p0 = *p1;
+    dp0 = dp1;
+
+    *p1 = *p2;
+    dp1 = *dp2;
+
+    *p2  = ( x - b[i] ) * ( *p1 ) - c[i] * p0;
+    *dp2 = ( x - b[i] ) * dp1 + ( *p1 ) - c[i] * dp0;
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void gen_laguerre_ss_root ( double *x, int order, double alpha, double *dp2,
+  double *p1, double b[], double c[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    GEN_LAGUERRE_SS_ROOT improves a root of a Generalized Laguerre polynomial.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    18 February 2008
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Arthur Stroud, Don Secrest.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input/output, double *X, the approximate root, which
+//    should be improved on output.
+//
+//    Input, int ORDER, the order of the polynomial.
+//
+//    Input, double ALPHA, the exponent of the X factor.
+//
+//    Output, double *DP2, the value of L'(ORDER)(X).
+//
+//    Output, double *P1, the value of L(ORDER-1)(X).
+//
+//    Input, double B[ORDER], C[ORDER], the recursion coefficients.
+//
+{
+  double d;
+  double eps;
+  double p2;
+  int step;
+  int step_max = 10;
+
+  eps = webbur::r8_epsilon ( );
+
+  for ( step = 1; step <= step_max; step++ )
+  {
+    webbur::gen_laguerre_ss_recur ( &p2, dp2, p1, *x, order, alpha, b, c );
+
+    d = p2 / ( *dp2 );
+    *x = *x - d;
+
+    if ( webbur::r8_abs ( d ) <= eps * ( webbur::r8_abs ( *x ) + 1.0 ) )
+    {
+      break;
+    }
+  }
+  return;
+}
+//****************************************************************************80
+
+void hc_compute_weights_from_points ( int nhalf, double xhalf[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HC_COMPUTE_WEIGHTS_FROM_POINTS: Hermite-Cubic weights, user-supplied points.
+//
+//  Discussion:
+//
+//    An interval [A,B] has been divided by NHALF points X; at each
+//    point both function and derivative information is available.
+//
+//    The piecewise cubic Hermite interpolant is constructed for this data.
+//
+//    A quadrature rule is determined for the interpolant.
+//
+//    There will be N=2*NHALF weights.  If the quadrature rule is to be written
+//    out, one would normally list each point twice, so that the number of points
+//    and weights are equal.  The listing of the same point value twice is an
+//    implicit indication that both function and derivative values should be
+//    used.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    28 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int NHALF, the number of points, not counting repetitions.
+//
+//    Input, double XHALF[NHALF], the points, without repetition.
+//
+//    Output, double W[2*NHALF], the weights.  The first two weights are
+//    associated with the first point, and so on.
+//
+{
+  int j;
+
+  w[0+0*2] =    0.5 * ( xhalf[1] - xhalf[0] );
+  w[1+0*2] = std::pow ( xhalf[1] - xhalf[0], 2 ) / 12.0;
+
+  for ( j = 1; j < nhalf - 1; j++ )
+  {
+    w[0+j*2] = 0.5 * ( xhalf[j+1] - xhalf[j-1] );
+    w[1+j*2] =       ( xhalf[j+1] - xhalf[j-1] )
+                   * ( xhalf[j+1] - 2.0 * xhalf[j] + xhalf[j-1] ) / 12.0;
+  }
+
+  w[0+(nhalf-1)*2] =      0.5 * ( xhalf[nhalf-1] - xhalf[nhalf-2]   );
+  w[1+(nhalf-1)*2] = - std::pow ( xhalf[nhalf-2] - xhalf[nhalf-1], 2 ) / 12.0;
+
+  return;
+}
+//****************************************************************************80
+
+void hcc_compute ( int n, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HCC_COMPUTE computes a Hermite-Cubic-Chebyshev-Spacing quadrature rule.
+//
+//  Discussion:
+//
+//    For the HCE rule, we assume that an interval has been divided by
+//    M nodes X into Chebyshev-spaced subintervals, and that at each
+//    abscissa both function and derivative information is available.
+//    The piecewise cubic Hermite interpolant is constructed for this data.
+//    The quadrature rule uses N = 2 * M abscissas, where each node is
+//    listed twice, and the weights occur in pairs, with the first multiplying
+//    the function value and the second the derivative.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    24 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  int nhalf;
+  double *xhalf;
+
+  nhalf = n / 2;
+  xhalf = new double[nhalf];
+
+  webbur::clenshaw_curtis_compute_points ( nhalf, xhalf );
+  webbur::r8vec_stutter ( nhalf, xhalf, 2, x );
+  webbur::hc_compute_weights_from_points ( nhalf, xhalf, w );
+
+  delete [] xhalf;
+
+  return;
+}
+//****************************************************************************80
+
+void hcc_compute_np ( int n, int np, double p[], double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HCC_COMPUTE_NP computes a Hermite-Cubic-Chebyshev-Spacing quadrature rule.
+//
+//  Discussion:
+//
+//    For the HCE rule, we assume that an interval has been divided by
+//    M nodes X into Chebyshev-spaced subintervals, and that at each
+//    abscissa both function and derivative information is available.
+//    The piecewise cubic Hermite interpolant is constructed for this data.
+//    The quadrature rule uses N = 2 * M abscissas, where each node is
+//    listed twice, and the weights occur in pairs, with the first multiplying
+//    the function value and the second the derivative.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    17 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::hcc_compute ( n, x, w );
+
+  return;
+}
+//****************************************************************************80
+
+void hcc_compute_points ( int n, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HCC_COMPUTE_POINTS computes Hermite-Cubic-Chebyshev-Spacing quadrature points.
+//
+//  Discussion:
+//
+//    For the HCE rule, we assume that an interval has been divided by
+//    M nodes X into Chebyshev-spaced subintervals, and that at each
+//    abscissa both function and derivative information is available.
+//    The piecewise cubic Hermite interpolant is constructed for this data.
+//    The quadrature rule uses N = 2 * M abscissas, where each node is
+//    listed twice, and the weights occur in pairs, with the first multiplying
+//    the function value and the second the derivative.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    24 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  int nhalf;
+  double *xhalf;
+
+  if ( ( n % 2 ) != 0 )
+  {
+    std::cerr << "\n";
+    std::cerr << "HCC_COMPUTE_POINTS - Fatal error!\n";
+    std::cerr << "  Order of rule N is not even.\n";
+    std::exit ( 1 );
+  }
+
+  nhalf = n / 2;
+  xhalf = new double[nhalf];
+
+  webbur::clenshaw_curtis_compute_points ( nhalf, xhalf );
+  webbur::r8vec_stutter ( nhalf, xhalf, 2, x );
+
+  delete [] xhalf;
+
+  return;
+}
+//****************************************************************************80
+
+void hcc_compute_points_np ( int n, int np, double p[], double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HCC_COMPUTE_POINTS_NP: Hermite-Cubic-Chebyshev-Spacing quadrature points.
+//
+//  Discussion:
+//
+//    For the HCE rule, we assume that an interval has been divided by
+//    M nodes X into Chebyshev-spaced subintervals, and that at each
+//    abscissa both function and derivative information is available.
+//    The piecewise cubic Hermite interpolant is constructed for this data.
+//    The quadrature rule uses N = 2 * M abscissas, where each node is
+//    listed twice, and the weights occur in pairs, with the first multiplying
+//    the function value and the second the derivative.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    17 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  webbur::hcc_compute_points ( n, x );
+
+  return;
+}
+//****************************************************************************80
+
+void hcc_compute_weights ( int n, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HCC_COMPUTE_WEIGHTS: Hermite-Cubic-Chebyshev-Spacing quadrature weights.
+//
+//  Discussion:
+//
+//    For the HCE rule, we assume that an interval has been divided by
+//    M nodes X into Chebyshev-spaced subintervals, and that at each
+//    abscissa both function and derivative information is available.
+//    The piecewise cubic Hermite interpolant is constructed for this data.
+//    The quadrature rule uses N = 2 * M abscissas, where each node is
+//    listed twice, and the weights occur in pairs, with the first multiplying
+//    the function value and the second the derivative.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    24 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Output, double W[N], the weights.
+//
+{
+  int nhalf;
+  double *xhalf;
+
+  if ( ( n % 2 ) != 0 )
+  {
+    std::cerr << "\n";
+    std::cerr << "HCC_COMPUTE_WEIGHTS - Fatal error!\n";
+    std::cerr << "  Order of rule N is not even.\n";
+    std::exit ( 1 );
+  }
+
+  nhalf = n / 2;
+  xhalf = new double[nhalf];
+
+  webbur::hc_compute_weights_from_points ( nhalf, xhalf, w );
+
+  delete [] xhalf;
+
+  return;
+}
+//****************************************************************************80
+
+void hcc_compute_weights_np ( int n, int np, double p[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HCC_COMPUTE_WEIGHTS_NP: Hermite-Cubic-Chebyshev-Spacing quadrature weights.
+//
+//  Discussion:
+//
+//    For the HCE rule, we assume that an interval has been divided by
+//    M nodes X into Chebyshev-spaced subintervals, and that at each
+//    abscissa both function and derivative information is available.
+//    The piecewise cubic Hermite interpolant is constructed for this data.
+//    The quadrature rule uses N = 2 * M abscissas, where each node is
+//    listed twice, and the weights occur in pairs, with the first multiplying
+//    the function value and the second the derivative.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    17 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::hcc_compute_weights ( n, w );
+
+  return;
+}
+//****************************************************************************80
+
+void hce_compute ( int n, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HCE_COMPUTE computes a Hermite-Cubic-Equal-Spacing quadrature rule.
+//
+//  Discussion:
+//
+//    For the HCE rule, we assume that an interval has been divided by
+//    M nodes X into equally spaced subintervals, and that at each
+//    abscissa both function and derivative information is available.
+//    The piecewise cubic Hermite interpolant is constructed for this data.
+//    The quadrature rule uses N = 2 * M abscissas, where each node is
+//    listed twice, and the weights occur in pairs, with the first multiplying
+//    the function value and the second the derivative.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    28 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  double a_high = 1.0;
+  double a_low = 0.0;
+  int nhalf;
+  double *xhalf;
+
+  a_low = 0.0;
+  a_high = 1.0;
+
+  nhalf = n / 2;
+
+  xhalf = webbur::r8vec_linspace_new ( nhalf, a_low, a_high );
+  webbur::r8vec_stutter ( nhalf, xhalf, 2, x );
+  webbur::hc_compute_weights_from_points ( nhalf, xhalf, w );
+
+  delete [] xhalf;
+
+  return;
+}
+//****************************************************************************80
+
+void hce_compute_np ( int n, int np, double p[], double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HCE_COMPUTE_NP computes a Hermite-Cubic-Equal-Spacing quadrature rule.
+//
+//  Discussion:
+//
+//    For the HCE rule, we assume that an interval has been divided by
+//    M nodes X into equally spaced subintervals, and that at each
+//    abscissa both function and derivative information is available.
+//    The piecewise cubic Hermite interpolant is constructed for this data.
+//    The quadrature rule uses N = 2 * M abscissas, where each node is
+//    listed twice, and the weights occur in pairs, with the first multiplying
+//    the function value and the second the derivative.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    07 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::hce_compute ( n, x, w );
+
+  return;
+}
+//****************************************************************************80
+
+void hce_compute_points ( int n, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HCE_COMPUTE_POINTS computes Hermite-Cubic-Equal-Spacing quadrature points.
+//
+//  Discussion:
+//
+//    For the HCE rule, we assume that an interval has been divided by
+//    M nodes X into equally spaced subintervals, and that at each
+//    abscissa both function and derivative information is available.
+//    The piecewise cubic Hermite interpolant is constructed for this data.
+//    The quadrature rule uses N = 2 * M abscissas, where each node is
+//    listed twice, and the weights occur in pairs, with the first multiplying
+//    the function value and the second the derivative.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    07 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  int i;
+  int j;
+  int m;
+  double x_value;
+
+  if ( ( n % 2 ) != 0 )
+  {
+    std::cerr << "\n";
+    std::cerr << "HCE_COMPUTE_POINTS - Fatal error!\n";
+    std::cerr << "  Order of rule N is not even.\n";
+    std::exit ( 1 );
+  }
+  m = n / 2;
+
+  for ( j = 0; j < m; j++ )
+  {
+    x_value = ( double ) ( 2 * j + 1 - m ) / ( double ) ( m - 1 );
+    for ( i = 0; i < 2; i++ )
+    {
+      x[i+j*2] = x_value;
+    }
+  }
+  return;
+}
+//****************************************************************************80
+
+void hce_compute_points_np ( int n, int np, double p[], double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HCE_COMPUTE_POINTS_NP: Hermite-Cubic-Equal-Spacing quadrature points.
+//
+//  Discussion:
+//
+//    For the HCE rule, we assume that an interval has been divided by
+//    M nodes X into equally spaced subintervals, and that at each
+//    abscissa both function and derivative information is available.
+//    The piecewise cubic Hermite interpolant is constructed for this data.
+//    The quadrature rule uses N = 2 * M abscissas, where each node is
+//    listed twice, and the weights occur in pairs, with the first multiplying
+//    the function value and the second the derivative.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    07 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  webbur::hce_compute_points ( n, x );
+
+  return;
+}
+//****************************************************************************80
+
+void hce_compute_weights ( int n, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HCE_COMPUTE_WEIGHTS: Hermite-Cubic-Equal-Spacing quadrature weights.
+//
+//  Discussion:
+//
+//    For the HCE rule, we assume that an interval has been divided by
+//    M nodes X into equally spaced subintervals, and that at each
+//    abscissa both function and derivative information is available.
+//    The piecewise cubic Hermite interpolant is constructed for this data.
+//    The quadrature rule uses N = 2 * M abscissas, where each node is
+//    listed twice, and the weights occur in pairs, with the first multiplying
+//    the function value and the second the derivative.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    24 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Output, double W[N], the weights.
+//
+{
+  int nhalf;
+  double *xhalf;
+
+  if ( ( n % 2 ) != 0 )
+  {
+    std::cerr << "\n";
+    std::cerr << "HCE_COMPUTE_WEIGHTS - Fatal error!\n";
+    std::cerr << "  Order of rule N is not even.\n";
+    std::exit ( 1 );
+  }
+
+  nhalf = n / 2;
+  xhalf = new double[nhalf];
+
+  webbur::hc_compute_weights_from_points ( nhalf, xhalf, w );
+
+  delete [] xhalf;
+
+  return;
+}
+//****************************************************************************80
+
+void hce_compute_weights_np ( int n, int np, double p[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HCE_COMPUTE_WEIGHTS_NP: Hermite-Cubic-Equal-Spacing quadrature weights.
+//
+//  Discussion:
+//
+//    For the HCE rule, we assume that an interval has been divided by
+//    M nodes X into equally spaced subintervals, and that at each
+//    abscissa both function and derivative information is available.
+//    The piecewise cubic Hermite interpolant is constructed for this data.
+//    The quadrature rule uses N = 2 * M abscissas, where each node is
+//    listed twice, and the weights occur in pairs, with the first multiplying
+//    the function value and the second the derivative.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    07 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::hce_compute_weights ( n, w );
+
+  return;
+}
+//****************************************************************************80
+
+void hermite_compute ( int n, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_COMPUTE computes a Gauss-Hermite quadrature rule.
+//
+//  Discussion:
+//
+//    The code uses an algorithm by Elhay and Kautsky.
+//
+//    The abscissas are the zeros of the N-th order Hermite polynomial.
+//
+//    The integral:
+//
+//      integral ( -oo < x < +oo ) exp ( - x * x ) * f(x) dx
+//
+//    The quadrature rule:
+//
+//      sum ( 1 <= i <= n ) w(i) * f ( x(i) )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    19 April 2011
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Sylvan Elhay, Jaroslav Kautsky.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Sylvan Elhay, Jaroslav Kautsky,
+//    Algorithm 655: IQPACK, FORTRAN Subroutines for the Weights of
+//    Interpolatory Quadrature,
+//    ACM Transactions on Mathematical Software,
+//    Volume 13, Number 4, December 1987, pages 399-415.
+//
+//  Parameters:
+//
+//    Input, int N, the number of abscissas.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  double arg;
+  double *bj;
+  int i;
+  double zemu;
+//
+//  Define the zero-th moment.
+//
+  arg = 0.5;
+  zemu = webbur::r8_gamma ( arg );
+//
+//  Define the Jacobi matrix.
+//
+  bj = new double[n];
+
+  for ( i = 0; i < n; i++ )
+  {
+    bj[i] = std::sqrt ( ( double ) ( i + 1 ) / 2.0 );
+  }
+
+  for ( i = 0; i < n; i++ )
+  {
+    x[i] = 0.0;
+  }
+
+  w[0] = std::sqrt ( zemu );
+  for ( i = 1; i < n; i++ )
+  {
+    w[i] = 0.0;
+  }
+//
+//  Diagonalize the Jacobi matrix.
+//
+  webbur::imtqlx ( n, x, bj, w );
+
+  for ( i = 0; i < n; i++ )
+  {
+    w[i] = w[i] * w[i];
+  }
+
+  delete [] bj;
+
+  return;
+}
+//****************************************************************************80
+
+void hermite_compute_np ( int order, int np, double p[], double x[],
+  double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_COMPUTE_NP computes a Hermite quadrature rule.
+//
+//  Discussion:
+//
+//    The abscissas are the zeros of the N-th order Hermite polynomial.
+//
+//    The integral:
+//
+//      Integral ( -oo < X < +oo ) exp ( - X * X ) * F(X) dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= ORDER ) W(I) * F ( X(I) )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Arthur Stroud, Don Secrest.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//    1 <= ORDER.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  webbur::hermite_compute ( order, x, w );
+
+  return;
+}
+//****************************************************************************80
+
+void hermite_compute_points ( int order, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_COMPUTE_POINTS computes Hermite quadrature points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+{
+  double *w;
+
+  w = new double[order];
+
+  webbur::hermite_compute ( order, x, w );
+
+  delete [] w;
+
+  return;
+}
+//****************************************************************************80
+
+void hermite_compute_points_np ( int order, int np, double p[], double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_COMPUTE_POINTS_NP computes Hermite quadrature points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+{
+  webbur::hermite_compute_points ( order, x );
+
+  return;
+}
+//****************************************************************************80
+
+void hermite_compute_weights ( int order, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_COMPUTE_WEIGHTS computes Hermite quadrature weights.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double *x;
+
+  x = new double[order];
+
+  webbur::hermite_compute ( order, x, w );
+
+  delete [] x;
+
+  return;
+}
+//****************************************************************************80
+
+void hermite_compute_weights_np ( int order, int np, double p[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_COMPUTE_WEIGHTS_NP computes Hermite quadrature weights.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  webbur::hermite_compute_weights ( order, w );
+
+  return;
+}
+//****************************************************************************80
+
+void hermite_genz_keister_lookup ( int n, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_GENZ_KEISTER_LOOKUP looks up a Genz-Keister Hermite rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      integral ( -oo <= x <= +oo ) f(x) exp ( - x * x ) dx
+//
+//    The quadrature rule:
+//
+//      sum ( 1 <= i <= n ) w(i) * f ( x(i) )
+//
+//    A nested family of rules for the Hermite integration problem
+//    was produced by Genz and Keister.  The structure of the nested
+//    family was denoted by 1+2+6+10+16, that is, it comprised rules
+//    of successive orders O = 1, 3, 9, 19, and 35.
+//
+//    The precisions of these rules are P = 1, 5, 15, 29, and 51.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    07 June 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Alan Genz, Bradley Keister,
+//    Fully symmetric interpolatory rules for multiple integrals
+//    over infinite regions with Gaussian weight,
+//    Journal of Computational and Applied Mathematics,
+//    Volume 71, 1996, pages 299-309
+//
+//    Florian Heiss, Viktor Winschel,
+//    Likelihood approximation by numerical integration on sparse grids,
+//    Journal of Econometrics,
+//    Volume 144, 2008, pages 62-80.
+//
+//    Thomas Patterson,
+//    The Optimal Addition of Points to Quadrature Formulae,
+//    Mathematics of Computation,
+//    Volume 22, Number 104, October 1968, pages 847-856.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    N must be 1, 3, 9, 19, 35, 37, 41 or 43.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::hermite_genz_keister_lookup_points ( n, x );
+  webbur::hermite_genz_keister_lookup_weights ( n, w );
+
+  return;
+}
+//****************************************************************************80
+
+void hermite_genz_keister_lookup_points ( int n, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_GENZ_KEISTER_LOOKUP_POINTS looks up Genz-Keister Hermite abscissas.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      integral ( -oo <= x <= +oo ) f(x) exp ( - x * x ) dx
+//
+//    The quadrature rule:
+//
+//      sum ( 1 <= i <= n ) w(i) * f ( x(i) )
+//
+//    A nested family of rules for the Hermite integration problem
+//    was produced by Genz and Keister.  The structure of the nested
+//    family was denoted by 1+2+6+10+?, that is, it comprised rules
+//    of successive orders O = 1, 3, 9, 19, and a final rule of order
+//    35, 37, 41 or 43.
+//
+//    The precisions of these rules are P = 1, 5, 15, 29,
+//    with the final rule of precision 51, 55, 63 or 67.
+//
+//    Three related families begin the same way, but end with a different final
+//    rule.  As a convenience, this function includes these final rules as well:
+//
+//    Designation  Orders       Precisions
+//
+//    1+2+6+10+16, 1,3,9,19,35  1,5,15,29,51
+//    1+2+6+10+18  1,3,9,19,37  1,5,15,29,55
+//    1+2+6+10+22  1,3,9,19,41  1,5,15,29,63
+//    1+2+6+10+24  1,3,9,19,43  1,5,15,29,67
+//
+//    Some of the data in this function was kindly supplied directly by
+//    Alan Genz on 24 April 2011.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    04 October 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Alan Genz, Bradley Keister,
+//    Fully symmetric interpolatory rules for multiple integrals
+//    over infinite regions with Gaussian weight,
+//    Journal of Computational and Applied Mathematics,
+//    Volume 71, 1996, pages 299-309
+//
+//    Florian Heiss, Viktor Winschel,
+//    Likelihood approximation by numerical integration on sparse grids,
+//    Journal of Econometrics,
+//    Volume 144, 2008, pages 62-80.
+//
+//    Thomas Patterson,
+//    The Optimal Addition of Points to Quadrature Formulae,
+//    Mathematics of Computation,
+//    Volume 22, Number 104, October 1968, pages 847-856.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    N must be 1, 3, 9, 19, 35, 37, 41, or 43.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  if ( n == 1 )
+  {
+    x[ 0] =   0.0000000000000000E+00;
+  }
+  else if ( n == 3 )
+  {
+    x[ 0] =  -1.2247448713915889E+00;
+    x[ 1] =   0.0000000000000000E+00;
+    x[ 2] =   1.2247448713915889E+00;
+  }
+  else if ( n == 9 )
+  {
+    x[ 0] =  -2.9592107790638380E+00;
+    x[ 1] =  -2.0232301911005157E+00;
+    x[ 2] =  -1.2247448713915889E+00;
+    x[ 3] =  -5.2403354748695763E-01;
+    x[ 4] =   0.0000000000000000E+00;
+    x[ 5] =   5.2403354748695763E-01;
+    x[ 6] =   1.2247448713915889E+00;
+    x[ 7] =   2.0232301911005157E+00;
+    x[ 8] =   2.9592107790638380E+00;
+  }
+  else if ( n == 19 )
+  {
+    x[ 0] =  -4.4995993983103881E+00;
+    x[ 1] =  -3.6677742159463378E+00;
+    x[ 2] =  -2.9592107790638380E+00;
+    x[ 3] =  -2.2665132620567876E+00;
+    x[ 4] =  -2.0232301911005157E+00;
+    x[ 5] =  -1.8357079751751868E+00;
+    x[ 6] =  -1.2247448713915889E+00;
+    x[ 7] =  -8.7004089535290285E-01;
+    x[ 8] =  -5.2403354748695763E-01;
+    x[ 9] =   0.0000000000000000E+00;
+    x[10] =   5.2403354748695763E-01;
+    x[11] =   8.7004089535290285E-01;
+    x[12] =   1.2247448713915889E+00;
+    x[13] =   1.8357079751751868E+00;
+    x[14] =   2.0232301911005157E+00;
+    x[15] =   2.2665132620567876E+00;
+    x[16] =   2.9592107790638380E+00;
+    x[17] =   3.6677742159463378E+00;
+    x[18] =   4.4995993983103881E+00;
+  }
+  else if ( n == 35 )
+  {
+    x[ 0] =  -6.3759392709822356E+00;
+    x[ 1] =  -5.6432578578857449E+00;
+    x[ 2] =  -5.0360899444730940E+00;
+    x[ 3] =  -4.4995993983103881E+00;
+    x[ 4] =  -4.0292201405043713E+00;
+    x[ 5] =  -3.6677742159463378E+00;
+    x[ 6] =  -3.3491639537131945E+00;
+    x[ 7] =  -2.9592107790638380E+00;
+    x[ 8] =  -2.5705583765842968E+00;
+    x[ 9] =  -2.2665132620567876E+00;
+    x[10] =  -2.0232301911005157E+00;
+    x[11] =  -1.8357079751751868E+00;
+    x[12] =  -1.5794121348467671E+00;
+    x[13] =  -1.2247448713915889E+00;
+    x[14] =  -8.7004089535290285E-01;
+    x[15] =  -5.2403354748695763E-01;
+    x[16] =  -1.7606414208200893E-01;
+    x[17] =   0.0000000000000000E+00;
+    x[18] =   1.7606414208200893E-01;
+    x[19] =   5.2403354748695763E-01;
+    x[20] =   8.7004089535290285E-01;
+    x[21] =   1.2247448713915889E+00;
+    x[22] =   1.5794121348467671E+00;
+    x[23] =   1.8357079751751868E+00;
+    x[24] =   2.0232301911005157E+00;
+    x[25] =   2.2665132620567876E+00;
+    x[26] =   2.5705583765842968E+00;
+    x[27] =   2.9592107790638380E+00;
+    x[28] =   3.3491639537131945E+00;
+    x[29] =   3.6677742159463378E+00;
+    x[30] =   4.0292201405043713E+00;
+    x[31] =   4.4995993983103881E+00;
+    x[32] =   5.0360899444730940E+00;
+    x[33] =   5.6432578578857449E+00;
+    x[34] =   6.3759392709822356E+00;
+  }
+  else if ( n == 37 )
+  {
+    x[ 0] =  -6.853200069757519;
+    x[ 1] =  -6.124527854622158;
+    x[ 2] =  -5.521865209868350;
+    x[ 3] =  -4.986551454150765;
+    x[ 4] =  -4.499599398310388;
+    x[ 5] =  -4.057956316089741;
+    x[ 6] =  -3.667774215946338;
+    x[ 7] =  -3.315584617593290;
+    x[ 8] =  -2.959210779063838;
+    x[ 9] =  -2.597288631188366;
+    x[10] =  -2.266513262056788;
+    x[11] =  -2.023230191100516;
+    x[12] =  -1.835707975175187;
+    x[13] =  -1.561553427651873;
+    x[14] =  -1.224744871391589;
+    x[15] =  -0.870040895352903;
+    x[16] =  -0.524033547486958;
+    x[17] =  -0.214618180588171;
+    x[18] =   0.000000000000000;
+    x[19] =   0.214618180588171;
+    x[20] =   0.524033547486958;
+    x[21] =   0.870040895352903;
+    x[22] =   1.224744871391589;
+    x[23] =   1.561553427651873;
+    x[24] =   1.835707975175187;
+    x[25] =   2.023230191100516;
+    x[26] =   2.266513262056788;
+    x[27] =   2.597288631188366;
+    x[28] =   2.959210779063838;
+    x[29] =   3.315584617593290;
+    x[30] =   3.667774215946338;
+    x[31] =   4.057956316089741;
+    x[32] =   4.499599398310388;
+    x[33] =   4.986551454150765;
+    x[34] =   5.521865209868350;
+    x[35] =   6.124527854622158;
+    x[36] =   6.853200069757519;
+  }
+  else if ( n == 41 )
+  {
+    x[ 0] =  -7.251792998192644;
+    x[ 1] =  -6.547083258397540;
+    x[ 2] =  -5.961461043404500;
+    x[ 3] =  -5.437443360177798;
+    x[ 4] =  -4.953574342912980;
+    x[ 5] =  -4.4995993983103881;
+    x[ 6] =  -4.070919267883068;
+    x[ 7] =  -3.6677742159463378;
+    x[ 8] =  -3.296114596212218;
+    x[ 9] =  -2.9592107790638380;
+    x[10] =  -2.630415236459871;
+    x[11] =  -2.2665132620567876;
+    x[12] =  -2.043834754429505;
+    x[13] =  -2.0232301911005157;
+    x[14] =  -1.8357079751751868;
+    x[15] =  -1.585873011819188;
+    x[16] =  -1.2247448713915889;
+    x[17] =  -0.87004089535290285;
+    x[18] =  -0.52403354748695763;
+    x[19] =  -0.195324784415805;
+    x[20] =   0.0000000000000000;
+    x[21] =   0.195324784415805;
+    x[22] =   0.52403354748695763;
+    x[23] =   0.87004089535290285;
+    x[24] =   1.2247448713915889;
+    x[25] =   1.585873011819188;
+    x[26] =   1.8357079751751868;
+    x[27] =   2.0232301911005157;
+    x[28] =   2.043834754429505;
+    x[29] =   2.2665132620567876;
+    x[30] =   2.630415236459871;
+    x[31] =   2.9592107790638380;
+    x[32] =   3.296114596212218;
+    x[33] =   3.6677742159463378;
+    x[34] =   4.070919267883068;
+    x[35] =   4.4995993983103881;
+    x[36] =   4.953574342912980;
+    x[37] =   5.437443360177798;
+    x[38] =   5.961461043404500;
+    x[39] =   6.547083258397540;
+    x[40] =   7.251792998192644;
+  }
+  else if ( n == 43 )
+  {
+    x[ 0] = -10.167574994881873;
+    x[ 1] =  -7.231746029072501;
+    x[ 2] =  -6.535398426382995;
+    x[ 3] =  -5.954781975039809;
+    x[ 4] =  -5.434053000365068;
+    x[ 5] =  -4.952329763008589;
+    x[ 6] =  -4.4995993983103881;
+    x[ 7] =  -4.071335874253583;
+    x[ 8] =  -3.6677742159463378;
+    x[ 9] =  -3.295265921534226;
+    x[10] =  -2.9592107790638380;
+    x[11] =  -2.633356763661946;
+    x[12] =  -2.2665132620567876;
+    x[13] =  -2.089340389294661;
+    x[14] =  -2.0232301911005157;
+    x[15] =  -1.8357079751751868;
+    x[16] =  -1.583643465293944;
+    x[17] =  -1.2247448713915889;
+    x[18] =  -0.87004089535290285;
+    x[19] =  -0.52403354748695763;
+    x[20] =  -0.196029453662011;
+    x[21] =   0.0000000000000000;
+    x[22] =   0.196029453662011;
+    x[23] =   0.52403354748695763;
+    x[24] =   0.87004089535290285;
+    x[25] =   1.2247448713915889;
+    x[26] =   1.583643465293944;
+    x[27] =   1.8357079751751868;
+    x[28] =   2.0232301911005157;
+    x[29] =   2.089340389294661;
+    x[30] =   2.2665132620567876;
+    x[31] =   2.633356763661946;
+    x[32] =   2.9592107790638380;
+    x[33] =   3.295265921534226;
+    x[34] =   3.6677742159463378;
+    x[35] =   4.071335874253583;
+    x[36] =   4.4995993983103881;
+    x[37] =   4.952329763008589;
+    x[38] =   5.434053000365068;
+    x[39] =   5.954781975039809;
+    x[40] =   6.535398426382995;
+    x[41] =   7.231746029072501;
+    x[42] =  10.167574994881873;
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "HERMITE_GENZ_KEISTER_LOOKUP_POINTS - Fatal error!\n";
+    std::cerr << "  Illegal input value of N.\n";
+    std::cerr << "  N must be 1, 3, 9, 19, 35, 37, 41 or 43.\n";
+    std::exit ( 1 );
+  }
+  return;
+}
+//****************************************************************************80
+
+void hermite_genz_keister_lookup_points_np ( int n, int np, double p[],
+  double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_GENZ_KEISTER_LOOKUP_POINTS_NP looks up Genz-Keister Hermite abscissas.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      integral ( -oo <= x <= +oo ) f(x) exp ( - x * x ) dx
+//
+//    The quadrature rule:
+//
+//      sum ( 1 <= i <= n ) w(i) * f ( x(i) )
+//
+//    A nested family of rules for the Hermite integration problem
+//    was produced by Genz and Keister.  The structure of the nested
+//    family was denoted by 1+2+6+10+?, that is, it comprised rules
+//    of successive orders O = 1, 3, 9, 19, and a final rule of order
+//    35, 37, 41 or 43.
+//
+//    The precisions of these rules are P = 1, 5, 15, 29,
+//    with the final rule of precision 51, 55, 63 or 67.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    04 October 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Alan Genz, Bradley Keister,
+//    Fully symmetric interpolatory rules for multiple integrals
+//    over infinite regions with Gaussian weight,
+//    Journal of Computational and Applied Mathematics,
+//    Volume 71, 1996, pages 299-309
+//
+//    Florian Heiss, Viktor Winschel,
+//    Likelihood approximation by numerical integration on sparse grids,
+//    Journal of Econometrics,
+//    Volume 144, 2008, pages 62-80.
+//
+//    Thomas Patterson,
+//    The Optimal Addition of Points to Quadrature Formulae,
+//    Mathematics of Computation,
+//    Volume 22, Number 104, October 1968, pages 847-856.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    N must be 1, 3, 9, 19, 35, 37, 41 or 43.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  webbur::hermite_genz_keister_lookup_points ( n, x );
+
+  return;
+}
+//****************************************************************************80
+
+void hermite_genz_keister_lookup_weights ( int n, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_GENZ_KEISTER_LOOKUP_WEIGHTS looks up Genz-Keister Hermite weights.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      integral ( -oo <= x <= +oo ) f(x) exp ( - x * x ) dx
+//
+//    The quadrature rule:
+//
+//      sum ( 1 <= i <= n ) w(i) * f ( x(i) )
+//
+//    A nested family of rules for the Hermite integration problem
+//    was produced by Genz and Keister.  The structure of the nested
+//    family was denoted by 1+2+6+10+?, that is, it comprised rules
+//    of successive orders O = 1, 3, 9, 19, and a final rule of order
+//    35, 37, 41 or 43.
+//
+//    The precisions of these rules are P = 1, 5, 15, 29,
+//    with the final rule of precision 51, 55, 63 or 67.
+//
+//    Three related families begin the same way, but end with a different final
+//    rule.  As a convenience, this function includes these final rules as well:
+//
+//    Designation  Orders       Precisions
+//
+//    1+2+6+10+16, 1,3,9,19,35  1,5,15,29,51
+//    1+2+6+10+18  1,3,9,19,37  1,5,15,29,55
+//    1+2+6+10+22  1,3,9,19,41  1,5,15,29,63
+//    1+2+6+10+24  1,3,9,19,43  1,5,15,29,67
+//
+//    Some of the data in this function was kindly supplied directly by
+//    Alan Genz on 24 April 2011.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    04 October 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Alan Genz, Bradley Keister,
+//    Fully symmetric interpolatory rules for multiple integrals
+//    over infinite regions with Gaussian weight,
+//    Journal of Computational and Applied Mathematics,
+//    Volume 71, 1996, pages 299-309
+//
+//    Florian Heiss, Viktor Winschel,
+//    Likelihood approximation by numerical integration on sparse grids,
+//    Journal of Econometrics,
+//    Volume 144, 2008, pages 62-80.
+//
+//    Thomas Patterson,
+//    The Optimal Addition of Points to Quadrature Formulae,
+//    Mathematics of Computation,
+//    Volume 22, Number 104, October 1968, pages 847-856.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    N must be 1, 3, 9, 19, 35, 37, 41, or 43.
+//
+//    Output, double W[N], the weights.
+//
+{
+  static double sqrtpi = 1.7724538509055159;
+
+  if ( n == 1 )
+  {
+    w[ 0] =   1.7724538509055159E+00;
+  }
+  else if ( n == 3 )
+  {
+    w[ 0] =   2.9540897515091930E-01;
+    w[ 1] =   1.1816359006036772E+00;
+    w[ 2] =   2.9540897515091930E-01;
+  }
+  else if ( n == 9 )
+  {
+    w[ 0] =   1.6708826306882348E-04;
+    w[ 1] =   1.4173117873979098E-02;
+    w[ 2] =   1.6811892894767771E-01;
+    w[ 3] =   4.7869428549114124E-01;
+    w[ 4] =   4.5014700975378197E-01;
+    w[ 5] =   4.7869428549114124E-01;
+    w[ 6] =   1.6811892894767771E-01;
+    w[ 7] =   1.4173117873979098E-02;
+    w[ 8] =   1.6708826306882348E-04;
+  }
+  else if ( n == 19 )
+  {
+    w[ 0] =   1.5295717705322357E-09;
+    w[ 1] =   1.0802767206624762E-06;
+    w[ 2] =   1.0656589772852267E-04;
+    w[ 3] =   5.1133174390883855E-03;
+    w[ 4] =  -1.1232438489069229E-02;
+    w[ 5] =   3.2055243099445879E-02;
+    w[ 6] =   1.1360729895748269E-01;
+    w[ 7] =   1.0838861955003017E-01;
+    w[ 8] =   3.6924643368920851E-01;
+    w[ 9] =   5.3788160700510168E-01;
+    w[10] =   3.6924643368920851E-01;
+    w[11] =   1.0838861955003017E-01;
+    w[12] =   1.1360729895748269E-01;
+    w[13] =   3.2055243099445879E-02;
+    w[14] =  -1.1232438489069229E-02;
+    w[15] =   5.1133174390883855E-03;
+    w[16] =   1.0656589772852267E-04;
+    w[17] =   1.0802767206624762E-06;
+    w[18] =   1.5295717705322357E-09;
+  }
+  else if ( n == 35 )
+  {
+    w[ 0] =   1.8684014894510604E-18;
+    w[ 1] =   9.6599466278563243E-15;
+    w[ 2] =   5.4896836948499462E-12;
+    w[ 3] =   8.1553721816916897E-10;
+    w[ 4] =   3.7920222392319532E-08;
+    w[ 5] =   4.3737818040926989E-07;
+    w[ 6] =   4.8462799737020461E-06;
+    w[ 7] =   6.3328620805617891E-05;
+    w[ 8] =   4.8785399304443770E-04;
+    w[ 9] =   1.4515580425155904E-03;
+    w[10] =   4.0967527720344047E-03;
+    w[11] =   5.5928828911469180E-03;
+    w[12] =   2.7780508908535097E-02;
+    w[13] =   8.0245518147390893E-02;
+    w[14] =   1.6371221555735804E-01;
+    w[15] =   2.6244871488784277E-01;
+    w[16] =   3.3988595585585218E-01;
+    w[17] =   9.1262675363737921E-04;
+    w[18] =   3.3988595585585218E-01;
+    w[19] =   2.6244871488784277E-01;
+    w[20] =   1.6371221555735804E-01;
+    w[21] =   8.0245518147390893E-02;
+    w[22] =   2.7780508908535097E-02;
+    w[23] =   5.5928828911469180E-03;
+    w[24] =   4.0967527720344047E-03;
+    w[25] =   1.4515580425155904E-03;
+    w[26] =   4.8785399304443770E-04;
+    w[27] =   6.3328620805617891E-05;
+    w[28] =   4.8462799737020461E-06;
+    w[29] =   4.3737818040926989E-07;
+    w[30] =   3.7920222392319532E-08;
+    w[31] =   8.1553721816916897E-10;
+    w[32] =   5.4896836948499462E-12;
+    w[33] =   9.6599466278563243E-15;
+    w[34] =   1.8684014894510604E-18;
+  }
+  else if ( n == 37 )
+  {
+    w[ 0] = 0.337304188079177058E-20;
+    w[ 1] = 0.332834739632930463E-16;
+    w[ 2] = 0.323016866782871498E-13;
+    w[ 3] = 0.809333688669950037E-11;
+    w[ 4] = 0.748907559239519284E-09;
+    w[ 5] = 0.294146671497083432E-07;
+    w[ 6] = 0.524482423744884136E-06;
+    w[ 7] = 0.586639457073896277E-05;
+    w[ 8] = 0.571885531470621903E-04;
+    w[ 9] = 0.41642095727577091E-03;
+    w[10] = 0.174733389581099482E-02;
+    w[11] = 0.313373786000304381E-02;
+    w[12] = 0.768092665770660459E-02;
+    w[13] = 0.274962713372148476E-01;
+    w[14] = 0.783630990508037449E-01;
+    w[15] = 0.16611584261479281E+00;
+    w[16] = 0.253636910481387185E+00;
+    w[17] = 0.261712932511430884E+00;
+    w[18] = 0.171719680968980257E+00;
+    w[19] = 0.261712932511430884E+00;
+    w[20] = 0.253636910481387185E+00;
+    w[21] = 0.16611584261479281E+00;
+    w[22] = 0.783630990508037449E-01;
+    w[23] = 0.274962713372148476E-01;
+    w[24] = 0.768092665770660459E-02;
+    w[25] = 0.313373786000304381E-02;
+    w[26] = 0.174733389581099482E-02;
+    w[27] = 0.41642095727577091E-03;
+    w[28] = 0.571885531470621903E-04;
+    w[29] = 0.586639457073896277E-05;
+    w[30] = 0.524482423744884136E-06;
+    w[31] = 0.294146671497083432E-07;
+    w[32] = 0.748907559239519284E-09;
+    w[33] = 0.809333688669950037E-11;
+    w[34] = 0.323016866782871498E-13;
+    w[35] = 0.332834739632930463E-16;
+    w[36] = 0.337304188079177058E-20;
+  }
+  else if ( n == 41 )
+  {
+    w[ 0] =   0.117725656974405367E-22;
+    w[ 1] =   0.152506745534300636E-18;
+    w[ 2] =   0.202183949965101288E-15;
+    w[ 3] =   0.724614869051195508E-13;
+    w[ 4] =   0.103121966469463034E-10;
+    w[ 5] =   0.710371395169350952E-09;
+    w[ 6] =   0.264376044449260516E-07;
+    w[ 7] =   0.558982787078644997E-06;
+    w[ 8] =   0.675628907134744976E-05;
+    w[ 9] =   0.512198007019776873E-04;
+    w[10] =   0.335013114947200879E-03;
+    w[11] =   0.249379691096933139E-02;
+    w[12] = - 0.25616995850607458E-01;
+    w[13] =   0.317007878644325588E-01;
+    w[14] =   0.125041498584003435E-02;
+    w[15] =   0.293244560924894295E-01;
+    w[16] =   0.799536390803302298E-01;
+    w[17] =   0.164543666806555251E+00;
+    w[18] =   0.258718519718241095E+00;
+    w[19] =   0.293588795735908566E+00;
+    w[20] =   0.997525375254611951E-01;
+    w[21] =   0.293588795735908566E+00;
+    w[22] =   0.258718519718241095E+00;
+    w[23] =   0.164543666806555251E+00;
+    w[24] =   0.799536390803302298E-01;
+    w[25] =   0.293244560924894295E-01;
+    w[26] =   0.125041498584003435E-02;
+    w[27] =   0.317007878644325588E-01;
+    w[28] = - 0.25616995850607458E-01;
+    w[29] =   0.249379691096933139E-02;
+    w[30] =   0.335013114947200879E-03;
+    w[31] =   0.512198007019776873E-04;
+    w[32] =   0.675628907134744976E-05;
+    w[33] =   0.558982787078644997E-06;
+    w[34] =   0.264376044449260516E-07;
+    w[35] =   0.710371395169350952E-09;
+    w[36] =   0.103121966469463034E-10;
+    w[37] =   0.724614869051195508E-13;
+    w[38] =   0.202183949965101288E-15;
+    w[39] =   0.152506745534300636E-18;
+    w[40] =   0.117725656974405367E-22;
+  }
+  else if ( n == 43 )
+  {
+    w[ 0] =   0.968100020641528185E-37;
+    w[ 1] =   0.15516931262860431E-22;
+    w[ 2] =   0.175937309107750992E-18;
+    w[ 3] =   0.217337608710893738E-15;
+    w[ 4] =   0.747837010380540069E-13;
+    w[ 5] =   0.104028132097205732E-10;
+    w[ 6] =   0.70903573389336778E-09;
+    w[ 7] =   0.263481722999966618E-07;
+    w[ 8] =   0.560127964848432175E-06;
+    w[ 9] =   0.680410934802210232E-05;
+    w[10] =   0.508343873102544037E-04;
+    w[11] =   0.32753080006610181E-03;
+    w[12] =   0.267479828788552937E-02;
+    w[13] = - 0.687704270963253854E-02;
+    w[14] =   0.119383201790913588E-01;
+    w[15] =   0.248083722871002796E-02;
+    w[16] =   0.29000335749726387E-01;
+    w[17] =   0.798689557875757008E-01;
+    w[18] =   0.164609842422580606E+00;
+    w[19] =   0.258535954731607738E+00;
+    w[20] =   0.292243810406117141E+00;
+    w[21] =   0.102730713753441829E+00;
+    w[22] =   0.292243810406117141E+00;
+    w[23] =   0.258535954731607738E+00;
+    w[24] =   0.164609842422580606E+00;
+    w[25] =   0.798689557875757008E-01;
+    w[26] =   0.29000335749726387E-01;
+    w[27] =   0.248083722871002796E-02;
+    w[28] =   0.119383201790913588E-01;
+    w[29] = - 0.687704270963253854E-02;
+    w[30] =   0.267479828788552937E-02;
+    w[31] =   0.32753080006610181E-03;
+    w[32] =   0.508343873102544037E-04;
+    w[33] =   0.680410934802210232E-05;
+    w[34] =   0.560127964848432175E-06;
+    w[35] =   0.263481722999966618E-07;
+    w[36] =   0.70903573389336778E-09;
+    w[37] =   0.104028132097205732E-10;
+    w[38] =   0.747837010380540069E-13;
+    w[39] =   0.217337608710893738E-15;
+    w[40] =   0.175937309107750992E-18;
+    w[41] =   0.15516931262860431E-22;
+    w[42] =   0.968100020641528185E-37;
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "HERMITE_GENZ_KEISTER_LOOKUP_WEIGHTS - Fatal error!\n";
+    std::cerr << "  Illegal input value of N.\n";
+    std::cerr << "  N must be 1, 3, 9, 19, 35, 37, 41 or 43.\n";
+    std::exit ( 1 );
+  }
+  return;
+}
+//****************************************************************************80
+
+void hermite_genz_keister_lookup_weights_np ( int n, int np, double p[],
+  double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_GENZ_KEISTER_LOOKUP_WEIGHTS_NP looks up Genz-Keister Hermite weights.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      integral ( -oo <= x <= +oo ) f(x) exp ( - x * x ) dx
+//
+//    The quadrature rule:
+//
+//      sum ( 1 <= i <= n ) w(i) * f ( x(i) )
+//
+//    A nested family of rules for the Hermite integration problem
+//    was produced by Genz and Keister.  The structure of the nested
+//    family was denoted by 1+2+6+10+?, that is, it comprised rules
+//    of successive orders O = 1, 3, 9, 19, and a final rule of order
+//    35, 37, 41 or 43.
+//
+//    The precisions of these rules are P = 1, 5, 15, 29,
+//    with the final rule of precision 51, 55, 63 or 67.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    04 October 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Alan Genz, Bradley Keister,
+//    Fully symmetric interpolatory rules for multiple integrals
+//    over infinite regions with Gaussian weight,
+//    Journal of Computational and Applied Mathematics,
+//    Volume 71, 1996, pages 299-309
+//
+//    Florian Heiss, Viktor Winschel,
+//    Likelihood approximation by numerical integration on sparse grids,
+//    Journal of Econometrics,
+//    Volume 144, 2008, pages 62-80.
+//
+//    Thomas Patterson,
+//    The Optimal Addition of Points to Quadrature Formulae,
+//    Mathematics of Computation,
+//    Volume 22, Number 104, October 1968, pages 847-856.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    N must be 1, 3, 9, 19, 35, 37, 41 or 43.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::hermite_genz_keister_lookup_weights ( n, w );
+
+  return;
+}
+//****************************************************************************80
+
+void hermite_gk18_lookup_points ( int n, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_GK18_LOOKUP_POINTS: abscissas of a Hermite Genz-Keister 18 rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      integral ( -oo <= x <= +oo ) f(x) exp ( - x * x ) dx
+//
+//    The quadrature rule:
+//
+//      sum ( 1 <= i <= n ) w(i) * f ( x(i) )
+//
+//    A nested family of rules for the Hermite integration problem
+//    was produced by Genz and Keister.  The structure of the nested
+//    family was denoted by 1+2+6+10+18, that is, it comprised rules
+//    of successive orders O = 1, 3, 9, 19, and 37.
+//
+//    The precisions of these rules are P = 1, 5, 15, 29, and 55.
+//
+//    Some of the data in this function was kindly supplied directly by
+//    Alan Genz on 24 April 2011.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    30 April 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Alan Genz, Bradley Keister,
+//    Fully symmetric interpolatory rules for multiple integrals
+//    over infinite regions with Gaussian weight,
+//    Journal of Computational and Applied Mathematics,
+//    Volume 71, 1996, pages 299-309
+//
+//    Florian Heiss, Viktor Winschel,
+//    Likelihood approximation by numerical integration on sparse grids,
+//    Journal of Econometrics,
+//    Volume 144, 2008, pages 62-80.
+//
+//    Thomas Patterson,
+//    The Optimal Addition of Points to Quadrature Formulae,
+//    Mathematics of Computation,
+//    Volume 22, Number 104, October 1968, pages 847-856.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    N must be 1, 3, 9, 19, or 37.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  if ( n == 1 )
+  {
+    x[ 0] =   0.0000000000000000E+00;
+  }
+  else if ( n == 3 )
+  {
+    x[ 0] =  -1.2247448713915889E+00;
+    x[ 1] =   0.0000000000000000E+00;
+    x[ 2] =   1.2247448713915889E+00;
+  }
+  else if ( n == 9 )
+  {
+    x[ 0] =  -2.9592107790638380E+00;
+    x[ 1] =  -2.0232301911005157E+00;
+    x[ 2] =  -1.2247448713915889E+00;
+    x[ 3] =  -5.2403354748695763E-01;
+    x[ 4] =   0.0000000000000000E+00;
+    x[ 5] =   5.2403354748695763E-01;
+    x[ 6] =   1.2247448713915889E+00;
+    x[ 7] =   2.0232301911005157E+00;
+    x[ 8] =   2.9592107790638380E+00;
+  }
+  else if ( n == 19 )
+  {
+    x[ 0] =  -4.4995993983103881E+00;
+    x[ 1] =  -3.6677742159463378E+00;
+    x[ 2] =  -2.9592107790638380E+00;
+    x[ 3] =  -2.2665132620567876E+00;
+    x[ 4] =  -2.0232301911005157E+00;
+    x[ 5] =  -1.8357079751751868E+00;
+    x[ 6] =  -1.2247448713915889E+00;
+    x[ 7] =  -8.7004089535290285E-01;
+    x[ 8] =  -5.2403354748695763E-01;
+    x[ 9] =   0.0000000000000000E+00;
+    x[10] =   5.2403354748695763E-01;
+    x[11] =   8.7004089535290285E-01;
+    x[12] =   1.2247448713915889E+00;
+    x[13] =   1.8357079751751868E+00;
+    x[14] =   2.0232301911005157E+00;
+    x[15] =   2.2665132620567876E+00;
+    x[16] =   2.9592107790638380E+00;
+    x[17] =   3.6677742159463378E+00;
+    x[18] =   4.4995993983103881E+00;
+  }
+  else if ( n == 35 )
+  {
+    x[ 0] =  -6.853200069757519;
+    x[ 1] =  -6.124527854622158;
+    x[ 2] =  -5.521865209868350;
+    x[ 3] =  -4.986551454150765;
+    x[ 4] =  -4.499599398310388;
+    x[ 5] =  -4.057956316089741;
+    x[ 6] =  -3.667774215946338;
+    x[ 7] =  -3.315584617593290;
+    x[ 8] =  -2.959210779063838;
+    x[ 9] =  -2.597288631188366;
+    x[10] =  -2.266513262056788;
+    x[11] =  -2.023230191100516;
+    x[12] =  -1.835707975175187;
+    x[13] =  -1.561553427651873;
+    x[14] =  -1.224744871391589;
+    x[15] =  -0.870040895352903;
+    x[16] =  -0.524033547486958;
+    x[17] =  -0.214618180588171;
+    x[18] =   0.000000000000000;
+    x[19] =   0.214618180588171;
+    x[20] =   0.524033547486958;
+    x[21] =   0.870040895352903;
+    x[22] =   1.224744871391589;
+    x[23] =   1.561553427651873;
+    x[24] =   1.835707975175187;
+    x[25] =   2.023230191100516;
+    x[26] =   2.266513262056788;
+    x[27] =   2.597288631188366;
+    x[28] =   2.959210779063838;
+    x[29] =   3.315584617593290;
+    x[30] =   3.667774215946338;
+    x[31] =   4.057956316089741;
+    x[32] =   4.499599398310388;
+    x[33] =   4.986551454150765;
+    x[34] =   5.521865209868350;
+    x[35] =   6.124527854622158;
+    x[36] =   6.853200069757519;
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "HERMITE_GK18_LOOKUP_POINTS - Fatal error!\n";
+    std::cerr << "  Illegal input value of N.\n";
+    std::cerr << "  N must be 1, 3, 9, 19, or 37.\n";
+    std::exit ( 1 );
+  }
+  return;
+}
+//****************************************************************************80
+
+void hermite_gk22_lookup_points ( int n, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_GK22_LOOKUP_POINTS looks up Hermite Genz-Keister 22 points.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      integral ( -oo <= x <= +oo ) f(x) exp ( - x * x ) dx
+//
+//    The quadrature rule:
+//
+//      sum ( 1 <= i <= n ) w(i) * f ( x(i) )
+//
+//    A nested family of rules for the Hermite integration problem
+//    was produced by Genz and Keister.  The structure of the nested
+//    family was denoted by 1+2+6+10+16, that is, it comprised rules
+//    of successive orders O = 1, 3, 9, 19, and 41.
+//
+//    The precisions of these rules are P = 1, 5, 15, 29, and 63.
+//
+//    Some of the data in this function was kindly supplied directly by
+//    Alan Genz on 24 April 2011.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    26 April 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Alan Genz, Bradley Keister,
+//    Fully symmetric interpolatory rules for multiple integrals
+//    over infinite regions with Gaussian weight,
+//    Journal of Computational and Applied Mathematics,
+//    Volume 71, 1996, pages 299-309
+//
+//    Thomas Patterson,
+//    The Optimal Addition of Points to Quadrature Formulae,
+//    Mathematics of Computation,
+//    Volume 22, Number 104, October 1968, pages 847-856.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    N must be 1, 3, 9, 19, or 41.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  if ( n == 1 )
+  {
+    x[ 0] =   0.0000000000000000E+00;
+  }
+  else if ( n == 3 )
+  {
+    x[ 0] =  -1.2247448713915889E+00;
+    x[ 1] =   0.0000000000000000E+00;
+    x[ 2] =   1.2247448713915889E+00;
+  }
+  else if ( n == 9 )
+  {
+    x[ 0] =  -2.9592107790638380E+00;
+    x[ 1] =  -2.0232301911005157E+00;
+    x[ 2] =  -1.2247448713915889E+00;
+    x[ 3] =  -5.2403354748695763E-01;
+    x[ 4] =   0.0000000000000000E+00;
+    x[ 5] =   5.2403354748695763E-01;
+    x[ 6] =   1.2247448713915889E+00;
+    x[ 7] =   2.0232301911005157E+00;
+    x[ 8] =   2.9592107790638380E+00;
+  }
+  else if ( n == 19 )
+  {
+    x[ 0] =  -4.4995993983103881E+00;
+    x[ 1] =  -3.6677742159463378E+00;
+    x[ 2] =  -2.9592107790638380E+00;
+    x[ 3] =  -2.2665132620567876E+00;
+    x[ 4] =  -2.0232301911005157E+00;
+    x[ 5] =  -1.8357079751751868E+00;
+    x[ 6] =  -1.2247448713915889E+00;
+    x[ 7] =  -8.7004089535290285E-01;
+    x[ 8] =  -5.2403354748695763E-01;
+    x[ 9] =   0.0000000000000000E+00;
+    x[10] =   5.2403354748695763E-01;
+    x[11] =   8.7004089535290285E-01;
+    x[12] =   1.2247448713915889E+00;
+    x[13] =   1.8357079751751868E+00;
+    x[14] =   2.0232301911005157E+00;
+    x[15] =   2.2665132620567876E+00;
+    x[16] =   2.9592107790638380E+00;
+    x[17] =   3.6677742159463378E+00;
+    x[18] =   4.4995993983103881E+00;
+  }
+  else if ( n == 41 )
+  {
+    x[ 0] =  -7.251792998192644;
+    x[ 1] =  -6.547083258397540;
+    x[ 2] =  -5.961461043404500;
+    x[ 3] =  -5.437443360177798;
+    x[ 4] =  -4.953574342912980;
+    x[ 5] =  -4.4995993983103881;
+    x[ 6] =  -4.070919267883068;
+    x[ 7] =  -3.6677742159463378;
+    x[ 8] =  -3.296114596212218;
+    x[ 9] =  -2.9592107790638380;
+    x[10] =  -2.630415236459871;
+    x[11] =  -2.2665132620567876;
+    x[12] =  -2.043834754429505;
+    x[13] =  -2.0232301911005157;
+    x[14] =  -1.8357079751751868;
+    x[15] =  -1.585873011819188;
+    x[16] =  -1.2247448713915889;
+    x[17] =  -0.87004089535290285;
+    x[18] =  -0.52403354748695763;
+    x[19] =  -0.195324784415805;
+    x[20] =   0.0000000000000000;
+    x[21] =   0.195324784415805;
+    x[22] =   0.52403354748695763;
+    x[23] =   0.87004089535290285;
+    x[24] =   1.2247448713915889;
+    x[25] =   1.585873011819188;
+    x[26] =   1.8357079751751868;
+    x[27] =   2.0232301911005157;
+    x[28] =   2.043834754429505;
+    x[29] =   2.2665132620567876;
+    x[30] =   2.630415236459871;
+    x[31] =   2.9592107790638380;
+    x[32] =   3.296114596212218;
+    x[33] =   3.6677742159463378;
+    x[34] =   4.070919267883068;
+    x[35] =   4.4995993983103881;
+    x[36] =   4.953574342912980;
+    x[37] =   5.437443360177798;
+    x[38] =   5.961461043404500;
+    x[39] =   6.547083258397540;
+    x[40] =   7.251792998192644;
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "HERMITE_GK22_LOOKUP_POINTS - Fatal error!\n";
+    std::cerr << "  Illegal input value of N.\n";
+    std::cerr << "  N must be 1, 3, 9, 19, or 41.\n";
+    std::exit ( 1 );
+  }
+  return;
+}
+//****************************************************************************80
+
+void hermite_gk24_lookup_points ( int n, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_GK24_LOOKUP_POINTS looks up Hermite Genz-Keister 24 points.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      integral ( -oo <= x <= +oo ) f(x) exp ( - x * x ) dx
+//
+//    The quadrature rule:
+//
+//      sum ( 1 <= i <= n ) w(i) * f ( x(i) )
+//
+//    A nested family of rules for the Hermite integration problem
+//    was produced by Genz and Keister.  The structure of the nested
+//    family was denoted by 1+2+6+10+16, that is, it comprised rules
+//    of successive orders O = 1, 3, 9, 19, and 43.
+//
+//    The precisions of these rules are P = 1, 5, 15, 29, and 67.
+//
+//    Some of the data in this function was kindly supplied directly by
+//    Alan Genz on 24 April 2011.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    26 April 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Alan Genz, Bradley Keister,
+//    Fully symmetric interpolatory rules for multiple integrals
+//    over infinite regions with Gaussian weight,
+//    Journal of Computational and Applied Mathematics,
+//    Volume 71, 1996, pages 299-309
+//
+//    Thomas Patterson,
+//    The Optimal Addition of Points to Quadrature Formulae,
+//    Mathematics of Computation,
+//    Volume 22, Number 104, October 1968, pages 847-856.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    N must be 1, 3, 9 19, or 43.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  if ( n == 1 )
+  {
+    x[ 0] =   0.0000000000000000E+00;
+  }
+  else if ( n == 3 )
+  {
+    x[ 0] =  -1.2247448713915889E+00;
+    x[ 1] =   0.0000000000000000E+00;
+    x[ 2] =   1.2247448713915889E+00;
+  }
+  else if ( n == 9 )
+  {
+    x[ 0] =  -2.9592107790638380E+00;
+    x[ 1] =  -2.0232301911005157E+00;
+    x[ 2] =  -1.2247448713915889E+00;
+    x[ 3] =  -5.2403354748695763E-01;
+    x[ 4] =   0.0000000000000000E+00;
+    x[ 5] =   5.2403354748695763E-01;
+    x[ 6] =   1.2247448713915889E+00;
+    x[ 7] =   2.0232301911005157E+00;
+    x[ 8] =   2.9592107790638380E+00;
+  }
+  else if ( n == 19 )
+  {
+    x[ 0] =  -4.4995993983103881E+00;
+    x[ 1] =  -3.6677742159463378E+00;
+    x[ 2] =  -2.9592107790638380E+00;
+    x[ 3] =  -2.2665132620567876E+00;
+    x[ 4] =  -2.0232301911005157E+00;
+    x[ 5] =  -1.8357079751751868E+00;
+    x[ 6] =  -1.2247448713915889E+00;
+    x[ 7] =  -8.7004089535290285E-01;
+    x[ 8] =  -5.2403354748695763E-01;
+    x[ 9] =   0.0000000000000000E+00;
+    x[10] =   5.2403354748695763E-01;
+    x[11] =   8.7004089535290285E-01;
+    x[12] =   1.2247448713915889E+00;
+    x[13] =   1.8357079751751868E+00;
+    x[14] =   2.0232301911005157E+00;
+    x[15] =   2.2665132620567876E+00;
+    x[16] =   2.9592107790638380E+00;
+    x[17] =   3.6677742159463378E+00;
+    x[18] =   4.4995993983103881E+00;
+  }
+  else if ( n == 43 )
+  {
+    x[ 0] = -10.167574994881873;
+    x[ 1] =  -7.231746029072501;
+    x[ 2] =  -6.535398426382995;
+    x[ 3] =  -5.954781975039809;
+    x[ 4] =  -5.434053000365068;
+    x[ 5] =  -4.952329763008589;
+    x[ 6] =  -4.4995993983103881;
+    x[ 7] =  -4.071335874253583;
+    x[ 8] =  -3.6677742159463378;
+    x[ 9] =  -3.295265921534226;
+    x[10] =  -2.9592107790638380;
+    x[11] =  -2.633356763661946;
+    x[12] =  -2.2665132620567876;
+    x[13] =  -2.089340389294661;
+    x[14] =  -2.0232301911005157;
+    x[15] =  -1.8357079751751868;
+    x[16] =  -1.583643465293944;
+    x[17] =  -1.2247448713915889;
+    x[18] =  -0.87004089535290285;
+    x[19] =  -0.52403354748695763;
+    x[20] =  -0.196029453662011;
+    x[21] =   0.0000000000000000;
+    x[22] =   0.196029453662011;
+    x[23] =   0.52403354748695763;
+    x[24] =   0.87004089535290285;
+    x[25] =   1.2247448713915889;
+    x[26] =   1.583643465293944;
+    x[27] =   1.8357079751751868;
+    x[28] =   2.0232301911005157;
+    x[29] =   2.089340389294661;
+    x[30] =   2.2665132620567876;
+    x[31] =   2.633356763661946;
+    x[32] =   2.9592107790638380;
+    x[33] =   3.295265921534226;
+    x[34] =   3.6677742159463378;
+    x[35] =   4.071335874253583;
+    x[36] =   4.4995993983103881;
+    x[37] =   4.952329763008589;
+    x[38] =   5.434053000365068;
+    x[39] =   5.954781975039809;
+    x[40] =   6.535398426382995;
+    x[41] =   7.231746029072501;
+    x[42] =  10.167574994881873;
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "HERMITE_GK24_LOOKUP_POINTS - Fatal error!\n";
+    std::cerr << "  Illegal input value of N.\n";
+    std::cerr << "  N must be 1, 3, 9, 19, or 43.\n";
+    std::exit ( 1 );
+  }
+  return;
+}
+//****************************************************************************80
+
+double hermite_integral ( int n )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_INTEGRAL evaluates a monomial Hermite integral.
+//
+//  Discussion:
+//
+//    H(n) = Integral ( -oo < x < +oo ) x^n exp(-x^2) dx
+//
+//    H(n) is 0 for n odd.
+//
+//    H(n) = (n-1)!! * sqrt(pi) / 2^(n/2) for n even.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    19 February 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order of the integral.
+//    0 <= N.
+//
+//    Output, double VALUE, the value of the integral.
+//
+{
+  double pi = 3.141592653589793;
+  double value;
+
+  if ( n < 0 )
+  {
+    value = - webbur::r8_huge ( );
+  }
+  else if ( ( n % 2 ) == 1 )
+  {
+    value = 0.0;
+  }
+  else
+  {
+    value = webbur::r8_factorial2 ( n - 1 ) * std::sqrt ( pi )
+      / std::pow ( 2.0, n / 2 );
+  }
+
+  return value;
+}
+//****************************************************************************80
+
+void hermite_interpolant ( int n, double x[], double y[], double yp[],
+  double xd[], double yd[], double xdp[], double ydp[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_INTERPOLANT sets up a divided difference table from Hermite data.
+//
+//  Discussion:
+//
+//    The polynomial represented by the divided difference table can be
+//    evaluated by calling DIF_VALS.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    31 October 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Carl deBoor,
+//    A Practical Guide to Splines,
+//    Springer, 2001,
+//    ISBN: 0387953663,
+//    LC: QA1.A647.v27.
+//
+//  Parameters:
+//
+//    Input, int N, of items of data
+//    ( X(I), Y(I), YP(I) ).
+//
+//    Input, double X[N], the abscissas.
+//    These values must be distinct.
+//
+//    Input, double Y[N], YP[N], the function and derivative values.
+//
+//    Output, double XD[2*N], YD[2*N], the divided difference table
+//    for the interpolant value.
+//
+//    Output, double XDP[2*N-1], YDP[2*N-1], the divided difference
+//    table for the interpolant derivative.
+//
+{
+  int i;
+  int j;
+  int nd;
+  int ndp;
+//
+//  Copy the data.
+//
+  nd = 2 * n;
+
+  for ( i = 0; i < n; i++ )
+  {
+    xd[0+i*2] = x[i];
+    xd[1+i*2] = x[i];
+  }
+//
+//  Carry out the first step of differencing.
+//
+  yd[0] = y[0];
+  for ( i = 1; i < n; i++ )
+  {
+    yd[0+2*i] = ( y[i] - y[i-1] ) / ( x[i] - x[i-1] );
+  }
+  for ( i = 0; i < n; i++ )
+  {
+    yd[1+2*i] = yp[i];
+  }
+//
+//  Carry out the remaining steps in the usual way.
+//
+  for ( i = 2; i < nd; i++ )
+  {
+    for ( j = nd - 1; i <= j; j-- )
+    {
+      yd[j] = ( yd[j] - yd[j-1] ) / ( xd[j] - xd[j-i] );
+    }
+  }
+//
+//  Compute the difference table for the derivative.
+//
+  webbur::dif_deriv ( nd, xd, yd, &ndp, xdp, ydp );
+
+  return;
+}
+//****************************************************************************80
+
+void hermite_interpolant_rule ( int n, double a, double b, double x[],
+  double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_INTERPOLANT_RULE: quadrature rule for a Hermite interpolant.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    23 October 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of abscissas.
+//
+//    Input, double A, B, the integration limits.
+//
+//    Input, double X[N], the abscissas.
+//
+//    Output, double W[2*N], the quadrature
+//    coefficients, given as pairs for function and derivative values
+//    at each abscissa.
+//
+{
+  double a_value;
+  double b_value;
+  double *c;
+  int i;
+  int j;
+  int k;
+  int nd;
+  int ndp;
+  double *xd;
+  double *xdp;
+  double *y;
+  double *yd;
+  double *ydp;
+  double *yp;
+
+  y = new double[n];
+  yp = new double[n];
+
+  nd = 2 * n;
+  c = new double[nd];
+  xd = new double[nd];
+  yd = new double[nd];
+
+  ndp = 2 * n - 1;
+  xdp = new double[ndp];
+  ydp = new double[ndp];
+
+  for ( i = 0; i < n; i++ )
+  {
+    y[i] = 0.0;
+    yp[i] = 0.0;
+  }
+
+  k = 0;
+
+  for ( i = 0; i < n; i++ )
+  {
+    y[i] = 1.0;
+    webbur::hermite_interpolant ( n, x, y, yp, xd, yd, xdp, ydp );
+    webbur::dif_to_r8poly ( nd, xd, yd, c );
+    a_value = webbur::r8poly_ant_val ( n, c, a );
+    b_value = webbur::r8poly_ant_val ( n, c, b );
+    w[k] = b_value - a_value;
+    y[i] = 0.0;
+    k = k + 1;
+
+    yp[i] = 1.0;
+    webbur::hermite_interpolant ( n, x, y, yp, xd, yd, xdp, ydp );
+    webbur::dif_to_r8poly ( nd, xd, yd, c );
+    a_value = webbur::r8poly_ant_val ( n, c, a );
+    b_value = webbur::r8poly_ant_val ( n, c, b );
+    w[k] = b_value - a_value;
+    yp[i] = 0.0;
+    k = k + 1;
+  }
+
+  delete [] c;
+  delete [] xd;
+  delete [] xdp;
+  delete [] y;
+  delete [] yd;
+  delete [] ydp;
+  delete [] yp;
+
+  return;
+}
+//****************************************************************************80
+
+void hermite_interpolant_value ( int nd, double xd[], double yd[], double xdp[],
+  double ydp[], int nv, double xv[], double yv[], double yvp[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_INTERPOLANT_VALUE evaluates the Hermite interpolant polynomial.
+//
+//  Discussion:
+//
+//    In fact, this function will evaluate an arbitrary polynomial that is
+//    represented by a difference table.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    31 October 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Carl deBoor,
+//    A Practical Guide to Splines,
+//    Springer, 2001,
+//    ISBN: 0387953663,
+//    LC: QA1.A647.v27.
+//
+//  Parameters:
+//
+//    Input, int ND, the order of the difference table.
+//
+//    Input, double XD[ND], YD[ND], the difference table for the
+//    interpolant value.
+//
+//    Input, double XDP[ND-1], YDP[ND-1], the difference table for
+//    the interpolant derivative.
+//
+//    Input, int NV, the number of evaluation points.
+//
+//    Input, double XV[NV], the evaluation points.
+//
+//    Output, double YV[NV], YVP[NV], the value of the interpolant and
+//    its derivative at the evaluation points.
+//
+{
+  int i;
+  int j;
+  int ndp;
+
+  ndp = nd - 1;
+
+  for ( j = 0; j < nv; j++ )
+  {
+    yv[j] = yd[nd-1];
+    for ( i = nd - 2; 0 <= i; i-- )
+    {
+      yv[j] = yd[i] + ( xv[j] - xd[i] ) * yv[j];
+    }
+
+    yvp[j] = ydp[ndp-1];
+    for ( i = ndp - 2; 0 <= i; i-- )
+    {
+      yvp[j] = ydp[i] + ( xv[j] - xdp[i] ) * yvp[j];
+    }
+  }
+  return;
+}
+//****************************************************************************80
+
+void hermite_lookup ( int n, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_LOOKUP looks up abscissas and weights for Gauss-Hermite quadrature.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    27 April 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Milton Abramowitz, Irene Stegun,
+//    Handbook of Mathematical Functions,
+//    National Bureau of Standards, 1964,
+//    ISBN: 0-486-61272-4,
+//    LC: QA47.A34.
+//
+//    Vladimir Krylov,
+//    Approximate Calculation of Integrals,
+//    Dover, 2006,
+//    ISBN: 0486445798.
+//    LC: QA311.K713.
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//    Stephen Wolfram,
+//    The Mathematica Book,
+//    Fourth Edition,
+//    Cambridge University Press, 1999,
+//    ISBN: 0-521-64314-7,
+//    LC: QA76.95.W65.
+//
+//    Daniel Zwillinger, editor,
+//    CRC Standard Mathematical Tables and Formulae,
+//    30th Edition,
+//    CRC Press, 1996,
+//    ISBN: 0-8493-2479-3,
+//    LC: QA47.M315.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    N must be between 1 and 20.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::hermite_lookup_points ( n, x );
+
+  webbur::hermite_lookup_weights ( n, w );
+
+  return;
+}
+//****************************************************************************80
+
+void hermite_lookup_points ( int n, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_LOOKUP_POINTS looks up abscissas for Hermite quadrature.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      integral ( -oo < x < +oo ) exp ( - x * x ) * f(x) dx
+//
+//    The quadrature rule:
+//
+//      sum ( 1 <= i <= n ) w(i) * f ( x(i) ).
+//
+//    Mathematica can numerically estimate the abscissas
+//    of order N to P digits by the command:
+//
+//      NSolve [ HermiteH [ n, x ] == 0, x, p ]
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    27 April 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Milton Abramowitz, Irene Stegun,
+//    Handbook of Mathematical Functions,
+//    National Bureau of Standards, 1964,
+//    ISBN: 0-486-61272-4,
+//    LC: QA47.A34.
+//
+//    Vladimir Krylov,
+//    Approximate Calculation of Integrals,
+//    Dover, 2006,
+//    ISBN: 0486445798,
+//    LC: QA311.K713.
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//    Stephen Wolfram,
+//    The Mathematica Book,
+//    Fourth Edition,
+//    Cambridge University Press, 1999,
+//    ISBN: 0-521-64314-7,
+//    LC: QA76.95.W65.
+//
+//    Daniel Zwillinger, editor,
+//    CRC Standard Mathematical Tables and Formulae,
+//    30th Edition,
+//    CRC Press, 1996,
+//    ISBN: 0-8493-2479-3,
+//    LC: QA47.M315.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    N must be between 1 and 20.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  if ( n == 1 )
+  {
+    x[0] = 0.0;
+  }
+  else if ( n == 2 )
+  {
+    x[0] = - 0.707106781186547524400844362105E+00;
+    x[1] =   0.707106781186547524400844362105E+00;
+  }
+  else if ( n == 3 )
+  {
+    x[0] = - 0.122474487139158904909864203735E+01;
+    x[1] =   0.0E+00;
+    x[2] =   0.122474487139158904909864203735E+01;
+  }
+  else if ( n == 4 )
+  {
+    x[0] = - 0.165068012388578455588334111112E+01;
+    x[1] = - 0.524647623275290317884060253835E+00;
+    x[2] =   0.524647623275290317884060253835E+00;
+    x[3] =   0.165068012388578455588334111112E+01;
+  }
+  else if ( n == 5 )
+  {
+    x[0] = - 0.202018287045608563292872408814E+01;
+    x[1] = - 0.958572464613818507112770593893E+00;
+    x[2] =   0.0E+00;
+    x[3] =   0.958572464613818507112770593893E+00;
+    x[4] =   0.202018287045608563292872408814E+01;
+  }
+  else if ( n == 6 )
+  {
+    x[0] = - 0.235060497367449222283392198706E+01;
+    x[1] = - 0.133584907401369694971489528297E+01;
+    x[2] = - 0.436077411927616508679215948251E+00;
+    x[3] =   0.436077411927616508679215948251E+00;
+    x[4] =   0.133584907401369694971489528297E+01;
+    x[5] =   0.235060497367449222283392198706E+01;
+  }
+  else if ( n == 7 )
+  {
+    x[0] = - 0.265196135683523349244708200652E+01;
+    x[1] = - 0.167355162876747144503180139830E+01;
+    x[2] = - 0.816287882858964663038710959027E+00;
+    x[3] =   0.0E+00;
+    x[4] =   0.816287882858964663038710959027E+00;
+    x[5] =   0.167355162876747144503180139830E+01;
+    x[6] =   0.265196135683523349244708200652E+01;
+  }
+  else if ( n == 8 )
+  {
+    x[0] = - 0.293063742025724401922350270524E+01;
+    x[1] = - 0.198165675669584292585463063977E+01;
+    x[2] = - 0.115719371244678019472076577906E+01;
+    x[3] = - 0.381186990207322116854718885584E+00;
+    x[4] =   0.381186990207322116854718885584E+00;
+    x[5] =   0.115719371244678019472076577906E+01;
+    x[6] =   0.198165675669584292585463063977E+01;
+    x[7] =   0.293063742025724401922350270524E+01;
+  }
+  else if ( n == 9 )
+  {
+    x[0] = - 0.319099320178152760723004779538E+01;
+    x[1] = - 0.226658058453184311180209693284E+01;
+    x[2] = - 0.146855328921666793166701573925E+01;
+    x[3] = - 0.723551018752837573322639864579E+00;
+    x[4] =   0.0E+00;
+    x[5] =   0.723551018752837573322639864579E+00;
+    x[6] =   0.146855328921666793166701573925E+01;
+    x[7] =   0.226658058453184311180209693284E+01;
+    x[8] =   0.319099320178152760723004779538E+01;
+  }
+  else if ( n == 10 )
+  {
+    x[0] =  - 0.343615911883773760332672549432E+01;
+    x[1] =  - 0.253273167423278979640896079775E+01;
+    x[2] =  - 0.175668364929988177345140122011E+01;
+    x[3] =  - 0.103661082978951365417749191676E+01;
+    x[4] =  - 0.342901327223704608789165025557E+00;
+    x[5] =    0.342901327223704608789165025557E+00;
+    x[6] =    0.103661082978951365417749191676E+01;
+    x[7] =    0.175668364929988177345140122011E+01;
+    x[8] =    0.253273167423278979640896079775E+01;
+    x[9] =    0.343615911883773760332672549432E+01;
+  }
+  else if ( n == 11 )
+  {
+    x[0] =  - 0.366847084655958251845837146485E+01;
+    x[1] =  - 0.278329009978165177083671870152E+01;
+    x[2] =  - 0.202594801582575533516591283121E+01;
+    x[3] =  - 0.132655708449493285594973473558E+01;
+    x[4] =  - 0.656809566882099765024611575383E+00;
+    x[5] =    0.0E+00;
+    x[6] =    0.656809566882099765024611575383E+00;
+    x[7] =    0.132655708449493285594973473558E+01;
+    x[8] =    0.202594801582575533516591283121E+01;
+    x[9] =    0.278329009978165177083671870152E+01;
+    x[10] =   0.366847084655958251845837146485E+01;
+  }
+  else if ( n == 12 )
+  {
+    x[0] =  - 0.388972489786978191927164274724E+01;
+    x[1] =  - 0.302063702512088977171067937518E+01;
+    x[2] =  - 0.227950708050105990018772856942E+01;
+    x[3] =  - 0.159768263515260479670966277090E+01;
+    x[4] =  - 0.947788391240163743704578131060E+00;
+    x[5] =  - 0.314240376254359111276611634095E+00;
+    x[6] =    0.314240376254359111276611634095E+00;
+    x[7] =    0.947788391240163743704578131060E+00;
+    x[8] =    0.159768263515260479670966277090E+01;
+    x[9] =    0.227950708050105990018772856942E+01;
+    x[10] =   0.302063702512088977171067937518E+01;
+    x[11] =   0.388972489786978191927164274724E+01;
+  }
+  else if ( n == 13 )
+  {
+    x[0] =  - 0.410133759617863964117891508007E+01;
+    x[1] =  - 0.324660897837240998812205115236E+01;
+    x[2] =  - 0.251973568567823788343040913628E+01;
+    x[3] =  - 0.185310765160151214200350644316E+01;
+    x[4] =  - 0.122005503659074842622205526637E+01;
+    x[5] =  - 0.605763879171060113080537108602E+00;
+    x[6] =    0.0E+00;
+    x[7] =    0.605763879171060113080537108602E+00;
+    x[8] =    0.122005503659074842622205526637E+01;
+    x[9] =    0.185310765160151214200350644316E+01;
+    x[10] =   0.251973568567823788343040913628E+01;
+    x[11] =   0.324660897837240998812205115236E+01;
+    x[12] =   0.410133759617863964117891508007E+01;
+  }
+  else if ( n == 14 )
+  {
+    x[0] =  - 0.430444857047363181262129810037E+01;
+    x[1] =  - 0.346265693360227055020891736115E+01;
+    x[2] =  - 0.274847072498540256862499852415E+01;
+    x[3] =  - 0.209518325850771681573497272630E+01;
+    x[4] =  - 0.147668273114114087058350654421E+01;
+    x[5] =  - 0.878713787329399416114679311861E+00;
+    x[6] =  - 0.291745510672562078446113075799E+00;
+    x[7] =    0.291745510672562078446113075799E+00;
+    x[8] =    0.878713787329399416114679311861E+00;
+    x[9] =    0.147668273114114087058350654421E+01;
+    x[10] =   0.209518325850771681573497272630E+01;
+    x[11] =   0.274847072498540256862499852415E+01;
+    x[12] =   0.346265693360227055020891736115E+01;
+    x[13] =   0.430444857047363181262129810037E+01;
+  }
+  else if ( n == 15 )
+  {
+    x[0] =  - 0.449999070730939155366438053053E+01;
+    x[1] =  - 0.366995037340445253472922383312E+01;
+    x[2] =  - 0.296716692790560324848896036355E+01;
+    x[3] =  - 0.232573248617385774545404479449E+01;
+    x[4] =  - 0.171999257518648893241583152515E+01;
+    x[5] =  - 0.113611558521092066631913490556E+01;
+    x[6] =  - 0.565069583255575748526020337198E+00;
+    x[7] =    0.0E+00;
+    x[8] =    0.565069583255575748526020337198E+00;
+    x[9] =    0.113611558521092066631913490556E+01;
+    x[10] =   0.171999257518648893241583152515E+01;
+    x[11] =   0.232573248617385774545404479449E+01;
+    x[12] =   0.296716692790560324848896036355E+01;
+    x[13] =   0.366995037340445253472922383312E+01;
+    x[14] =   0.449999070730939155366438053053E+01;
+  }
+  else if ( n == 16 )
+  {
+    x[0] =  - 0.468873893930581836468849864875E+01;
+    x[1] =  - 0.386944790486012269871942409801E+01;
+    x[2] =  - 0.317699916197995602681399455926E+01;
+    x[3] =  - 0.254620215784748136215932870545E+01;
+    x[4] =  - 0.195178799091625397743465541496E+01;
+    x[5] =  - 0.138025853919888079637208966969E+01;
+    x[6] =  - 0.822951449144655892582454496734E+00;
+    x[7] =  - 0.273481046138152452158280401965E+00;
+    x[8] =    0.273481046138152452158280401965E+00;
+    x[9] =    0.822951449144655892582454496734E+00;
+    x[10] =   0.138025853919888079637208966969E+01;
+    x[11] =   0.195178799091625397743465541496E+01;
+    x[12] =   0.254620215784748136215932870545E+01;
+    x[13] =   0.317699916197995602681399455926E+01;
+    x[14] =   0.386944790486012269871942409801E+01;
+    x[15] =   0.468873893930581836468849864875E+01;
+  }
+  else if ( n == 17 )
+  {
+    x[0] =  - 0.487134519367440308834927655662E+01;
+    x[1] =  - 0.406194667587547430689245559698E+01;
+    x[2] =  - 0.337893209114149408338327069289E+01;
+    x[3] =  - 0.275776291570388873092640349574E+01;
+    x[4] =  - 0.217350282666662081927537907149E+01;
+    x[5] =  - 0.161292431422123133311288254454E+01;
+    x[6] =  - 0.106764872574345055363045773799E+01;
+    x[7] =  - 0.531633001342654731349086553718E+00;
+    x[8] =    0.0E+00;
+    x[9] =    0.531633001342654731349086553718E+00;
+    x[10] =   0.106764872574345055363045773799E+01;
+    x[11] =   0.161292431422123133311288254454E+01;
+    x[12] =   0.217350282666662081927537907149E+01;
+    x[13] =   0.275776291570388873092640349574E+01;
+    x[14] =   0.337893209114149408338327069289E+01;
+    x[15] =   0.406194667587547430689245559698E+01;
+    x[16] =   0.487134519367440308834927655662E+01;
+  }
+  else if ( n == 18 )
+  {
+    x[0] =  - 0.504836400887446676837203757885E+01;
+    x[1] =  - 0.424811787356812646302342016090E+01;
+    x[2] =  - 0.357376906848626607950067599377E+01;
+    x[3] =  - 0.296137750553160684477863254906E+01;
+    x[4] =  - 0.238629908916668600026459301424E+01;
+    x[5] =  - 0.183553160426162889225383944409E+01;
+    x[6] =  - 0.130092085838961736566626555439E+01;
+    x[7] =  - 0.776682919267411661316659462284E+00;
+    x[8] =  - 0.258267750519096759258116098711E+00;
+    x[9] =    0.258267750519096759258116098711E+00;
+    x[10] =   0.776682919267411661316659462284E+00;
+    x[11] =   0.130092085838961736566626555439E+01;
+    x[12] =   0.183553160426162889225383944409E+01;
+    x[13] =   0.238629908916668600026459301424E+01;
+    x[14] =   0.296137750553160684477863254906E+01;
+    x[15] =   0.357376906848626607950067599377E+01;
+    x[16] =   0.424811787356812646302342016090E+01;
+    x[17] =   0.504836400887446676837203757885E+01;
+  }
+  else if ( n == 19 )
+  {
+    x[0] =  - 0.522027169053748216460967142500E+01;
+    x[1] =  - 0.442853280660377943723498532226E+01;
+    x[2] =  - 0.376218735196402009751489394104E+01;
+    x[3] =  - 0.315784881834760228184318034120E+01;
+    x[4] =  - 0.259113378979454256492128084112E+01;
+    x[5] =  - 0.204923170985061937575050838669E+01;
+    x[6] =  - 0.152417061939353303183354859367E+01;
+    x[7] =  - 0.101036838713431135136859873726E+01;
+    x[8] =  - 0.503520163423888209373811765050E+00;
+    x[9] =    0.0E+00;
+    x[10] =   0.503520163423888209373811765050E+00;
+    x[11] =   0.101036838713431135136859873726E+01;
+    x[12] =   0.152417061939353303183354859367E+01;
+    x[13] =   0.204923170985061937575050838669E+01;
+    x[14] =   0.259113378979454256492128084112E+01;
+    x[15] =   0.315784881834760228184318034120E+01;
+    x[16] =   0.376218735196402009751489394104E+01;
+    x[17] =   0.442853280660377943723498532226E+01;
+    x[18] =   0.522027169053748216460967142500E+01;
+  }
+  else if ( n == 20 )
+  {
+    x[0] =  - 0.538748089001123286201690041068E+01;
+    x[1] =  - 0.460368244955074427307767524898E+01;
+    x[2] =  - 0.394476404011562521037562880052E+01;
+    x[3] =  - 0.334785456738321632691492452300E+01;
+    x[4] =  - 0.278880605842813048052503375640E+01;
+    x[5] =  - 0.225497400208927552308233334473E+01;
+    x[6] =  - 0.173853771211658620678086566214E+01;
+    x[7] =  - 0.123407621539532300788581834696E+01;
+    x[8] =  - 0.737473728545394358705605144252E+00;
+    x[9] =  - 0.245340708300901249903836530634E+00;
+    x[10] =   0.245340708300901249903836530634E+00;
+    x[11] =   0.737473728545394358705605144252E+00;
+    x[12] =   0.123407621539532300788581834696E+01;
+    x[13] =   0.173853771211658620678086566214E+01;
+    x[14] =   0.225497400208927552308233334473E+01;
+    x[15] =   0.278880605842813048052503375640E+01;
+    x[16] =   0.334785456738321632691492452300E+01;
+    x[17] =   0.394476404011562521037562880052E+01;
+    x[18] =   0.460368244955074427307767524898E+01;
+    x[19] =   0.538748089001123286201690041068E+01;
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "HERMITE_LOOKUP_POINTS - Fatal error!\n";
+    std::cerr << "  Illegal value of N = " << n << "\n";
+    std::cerr << "  Legal values are 1 through 20.\n";
+    std::exit ( 1 );
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void hermite_lookup_weights ( int n, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_LOOKUP_WEIGHTS looks up weights for Hermite quadrature.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      integral ( -oo < x < +oo ) exp ( - x * x ) * f(x) dx
+//
+//    The quadrature rule:
+//
+//      sum ( 1 <= i <= n ) w(i) * f ( x(i) ).
+//
+//    Mathematica can numerically estimate the abscissas
+//    of order N to P digits by the command:
+//
+//      NSolve [ HermiteH [ n, x ] == 0, x, p ]
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    27 April 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Milton Abramowitz, Irene Stegun,
+//    Handbook of Mathematical Functions,
+//    National Bureau of Standards, 1964,
+//    ISBN: 0-486-61272-4,
+//    LC: QA47.A34.
+//
+//    Vladimir Krylov,
+//    Approximate Calculation of Integrals,
+//    Dover, 2006,
+//    ISBN: 0486445798,
+//    LC: QA311.K713.
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//    Stephen Wolfram,
+//    The Mathematica Book,
+//    Fourth Edition,
+//    Cambridge University Press, 1999,
+//    ISBN: 0-521-64314-7,
+//    LC: QA76.95.W65.
+//
+//    Daniel Zwillinger, editor,
+//    CRC Standard Mathematical Tables and Formulae,
+//    30th Edition,
+//    CRC Press, 1996,
+//    ISBN: 0-8493-2479-3,
+//    LC: QA47.M315.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    N must be between 1 and 20.
+//
+//    Output, double W[N], the weights.
+//
+{
+  if ( n == 1 )
+  {
+    w[0] = 1.77245385090551602729816748334;
+  }
+  else if ( n == 2 )
+  {
+    w[0] = 0.886226925452758013649083741671E+00;
+    w[1] = 0.886226925452758013649083741671E+00;
+  }
+  else if ( n == 3 )
+  {
+    w[0] = 0.295408975150919337883027913890E+00;
+    w[1] = 0.118163590060367735153211165556E+01;
+    w[2] = 0.295408975150919337883027913890E+00;
+  }
+  else if ( n == 4 )
+  {
+    w[0] = 0.813128354472451771430345571899E-01;
+    w[1] = 0.804914090005512836506049184481E+00;
+    w[2] = 0.804914090005512836506049184481E+00;
+    w[3] = 0.813128354472451771430345571899E-01;
+  }
+  else if ( n == 5 )
+  {
+    w[0] = 0.199532420590459132077434585942E-01;
+    w[1] = 0.393619323152241159828495620852E+00;
+    w[2] = 0.945308720482941881225689324449E+00;
+    w[3] = 0.393619323152241159828495620852E+00;
+    w[4] = 0.199532420590459132077434585942E-01;
+  }
+  else if ( n == 6 )
+  {
+    w[0] = 0.453000990550884564085747256463E-02;
+    w[1] = 0.157067320322856643916311563508E+00;
+    w[2] = 0.724629595224392524091914705598E+00;
+    w[3] = 0.724629595224392524091914705598E+00;
+    w[4] = 0.157067320322856643916311563508E+00;
+    w[5] = 0.453000990550884564085747256463E-02;
+  }
+  else if ( n == 7 )
+  {
+    w[0] = 0.971781245099519154149424255939E-03;
+    w[1] = 0.545155828191270305921785688417E-01;
+    w[2] = 0.425607252610127800520317466666E+00;
+    w[3] = 0.810264617556807326764876563813E+00;
+    w[4] = 0.425607252610127800520317466666E+00;
+    w[5] = 0.545155828191270305921785688417E-01;
+    w[6] = 0.971781245099519154149424255939E-03;
+  }
+  else if ( n == 8 )
+  {
+    w[0] = 0.199604072211367619206090452544E-03;
+    w[1] = 0.170779830074134754562030564364E-01;
+    w[2] = 0.207802325814891879543258620286E+00;
+    w[3] = 0.661147012558241291030415974496E+00;
+    w[4] = 0.661147012558241291030415974496E+00;
+    w[5] = 0.207802325814891879543258620286E+00;
+    w[6] = 0.170779830074134754562030564364E-01;
+    w[7] = 0.199604072211367619206090452544E-03;
+  }
+  else if ( n == 9 )
+  {
+    w[0] = 0.396069772632643819045862946425E-04;
+    w[1] = 0.494362427553694721722456597763E-02;
+    w[2] = 0.884745273943765732879751147476E-01;
+    w[3] = 0.432651559002555750199812112956E+00;
+    w[4] = 0.720235215606050957124334723389E+00;
+    w[5] = 0.432651559002555750199812112956E+00;
+    w[6] = 0.884745273943765732879751147476E-01;
+    w[7] = 0.494362427553694721722456597763E-02;
+    w[8] = 0.396069772632643819045862946425E-04;
+  }
+  else if ( n == 10 )
+  {
+    w[0] =  0.764043285523262062915936785960E-05;
+    w[1] =  0.134364574678123269220156558585E-02;
+    w[2] =  0.338743944554810631361647312776E-01;
+    w[3] =  0.240138611082314686416523295006E+00;
+    w[4] =  0.610862633735325798783564990433E+00;
+    w[5] =  0.610862633735325798783564990433E+00;
+    w[6] =  0.240138611082314686416523295006E+00;
+    w[7] =  0.338743944554810631361647312776E-01;
+    w[8] =  0.134364574678123269220156558585E-02;
+    w[9] =  0.764043285523262062915936785960E-05;
+  }
+  else if ( n == 11 )
+  {
+    w[0] =  0.143956039371425822033088366032E-05;
+    w[1] =  0.346819466323345510643413772940E-03;
+    w[2] =  0.119113954449115324503874202916E-01;
+    w[3] =  0.117227875167708503381788649308E+00;
+    w[4] =  0.429359752356125028446073598601E+00;
+    w[5] =  0.654759286914591779203940657627E+00;
+    w[6] =  0.429359752356125028446073598601E+00;
+    w[7] =  0.117227875167708503381788649308E+00;
+    w[8] =  0.119113954449115324503874202916E-01;
+    w[9] =  0.346819466323345510643413772940E-03;
+    w[10] = 0.143956039371425822033088366032E-05;
+  }
+  else if ( n == 12 )
+  {
+    w[0] =  0.265855168435630160602311400877E-06;
+    w[1] =  0.857368704358785865456906323153E-04;
+    w[2] =  0.390539058462906185999438432620E-02;
+    w[3] =  0.516079856158839299918734423606E-01;
+    w[4] =  0.260492310264161129233396139765E+00;
+    w[5] =  0.570135236262479578347113482275E+00;
+    w[6] =  0.570135236262479578347113482275E+00;
+    w[7] =  0.260492310264161129233396139765E+00;
+    w[8] =  0.516079856158839299918734423606E-01;
+    w[9] =  0.390539058462906185999438432620E-02;
+    w[10] = 0.857368704358785865456906323153E-04;
+    w[11] = 0.265855168435630160602311400877E-06;
+  }
+  else if ( n == 13 )
+  {
+    w[0] =  0.482573185007313108834997332342E-07;
+    w[1] =  0.204303604027070731248669432937E-04;
+    w[2] =  0.120745999271938594730924899224E-02;
+    w[3] =  0.208627752961699392166033805050E-01;
+    w[4] =  0.140323320687023437762792268873E+00;
+    w[5] =  0.421616296898543221746893558568E+00;
+    w[6] =  0.604393187921161642342099068579E+00;
+    w[7] =  0.421616296898543221746893558568E+00;
+    w[8] =  0.140323320687023437762792268873E+00;
+    w[9] =  0.208627752961699392166033805050E-01;
+    w[10] = 0.120745999271938594730924899224E-02;
+    w[11] = 0.204303604027070731248669432937E-04;
+    w[12] = 0.482573185007313108834997332342E-07;
+  }
+  else if ( n == 14 )
+  {
+    w[0] =  0.862859116812515794532041783429E-08;
+    w[1] =  0.471648435501891674887688950105E-05;
+    w[2] =  0.355092613551923610483661076691E-03;
+    w[3] =  0.785005472645794431048644334608E-02;
+    w[4] =  0.685055342234652055387163312367E-01;
+    w[5] =  0.273105609064246603352569187026E+00;
+    w[6] =  0.536405909712090149794921296776E+00;
+    w[7] =  0.536405909712090149794921296776E+00;
+    w[8] =  0.273105609064246603352569187026E+00;
+    w[9] =  0.685055342234652055387163312367E-01;
+    w[10] = 0.785005472645794431048644334608E-02;
+    w[11] = 0.355092613551923610483661076691E-03;
+    w[12] = 0.471648435501891674887688950105E-05;
+    w[13] = 0.862859116812515794532041783429E-08;
+  }
+  else if ( n == 15 )
+  {
+    w[0] =  0.152247580425351702016062666965E-08;
+    w[1] =  0.105911554771106663577520791055E-05;
+    w[2] =  0.100004441232499868127296736177E-03;
+    w[3] =  0.277806884291277589607887049229E-02;
+    w[4] =  0.307800338725460822286814158758E-01;
+    w[5] =  0.158488915795935746883839384960E+00;
+    w[6] =  0.412028687498898627025891079568E+00;
+    w[7] =  0.564100308726417532852625797340E+00;
+    w[8] =  0.412028687498898627025891079568E+00;
+    w[9] =  0.158488915795935746883839384960E+00;
+    w[10] = 0.307800338725460822286814158758E-01;
+    w[11] = 0.277806884291277589607887049229E-02;
+    w[12] = 0.100004441232499868127296736177E-03;
+    w[13] = 0.105911554771106663577520791055E-05;
+    w[14] = 0.152247580425351702016062666965E-08;
+  }
+  else if ( n == 16 )
+  {
+    w[0] =  0.265480747401118224470926366050E-09;
+    w[1] =  0.232098084486521065338749423185E-06;
+    w[2] =  0.271186009253788151201891432244E-04;
+    w[3] =  0.932284008624180529914277305537E-03;
+    w[4] =  0.128803115355099736834642999312E-01;
+    w[5] =  0.838100413989858294154207349001E-01;
+    w[6] =  0.280647458528533675369463335380E+00;
+    w[7] =  0.507929479016613741913517341791E+00;
+    w[8] =  0.507929479016613741913517341791E+00;
+    w[9] =  0.280647458528533675369463335380E+00;
+    w[10] = 0.838100413989858294154207349001E-01;
+    w[11] = 0.128803115355099736834642999312E-01;
+    w[12] = 0.932284008624180529914277305537E-03;
+    w[13] = 0.271186009253788151201891432244E-04;
+    w[14] = 0.232098084486521065338749423185E-06;
+    w[15] = 0.265480747401118224470926366050E-09;
+  }
+  else if ( n == 17 )
+  {
+    w[0] =  0.458057893079863330580889281222E-10;
+    w[1] =  0.497707898163079405227863353715E-07;
+    w[2] =  0.711228914002130958353327376218E-05;
+    w[3] =  0.298643286697753041151336643059E-03;
+    w[4] =  0.506734995762753791170069495879E-02;
+    w[5] =  0.409200341495762798094994877854E-01;
+    w[6] =  0.172648297670097079217645196219E+00;
+    w[7] =  0.401826469470411956577635085257E+00;
+    w[8] =  0.530917937624863560331883103379E+00;
+    w[9] =  0.401826469470411956577635085257E+00;
+    w[10] = 0.172648297670097079217645196219E+00;
+    w[11] = 0.409200341495762798094994877854E-01;
+    w[12] = 0.506734995762753791170069495879E-02;
+    w[13] = 0.298643286697753041151336643059E-03;
+    w[14] = 0.711228914002130958353327376218E-05;
+    w[15] = 0.497707898163079405227863353715E-07;
+    w[16] = 0.458057893079863330580889281222E-10;
+  }
+  else if ( n == 18 )
+  {
+    w[0] =  0.782819977211589102925147471012E-11;
+    w[1] =  0.104672057957920824443559608435E-07;
+    w[2] =  0.181065448109343040959702385911E-05;
+    w[3] =  0.918112686792940352914675407371E-04;
+    w[4] =  0.188852263026841789438175325426E-02;
+    w[5] =  0.186400423875446519219315221973E-01;
+    w[6] =  0.973017476413154293308537234155E-01;
+    w[7] =  0.284807285669979578595606820713E+00;
+    w[8] =  0.483495694725455552876410522141E+00;
+    w[9] =  0.483495694725455552876410522141E+00;
+    w[10] = 0.284807285669979578595606820713E+00;
+    w[11] = 0.973017476413154293308537234155E-01;
+    w[12] = 0.186400423875446519219315221973E-01;
+    w[13] = 0.188852263026841789438175325426E-02;
+    w[14] = 0.918112686792940352914675407371E-04;
+    w[15] = 0.181065448109343040959702385911E-05;
+    w[16] = 0.104672057957920824443559608435E-07;
+    w[17] = 0.782819977211589102925147471012E-11;
+  }
+  else if ( n == 19 )
+  {
+    w[0] =  0.132629709449851575185289154385E-11;
+    w[1] =  0.216305100986355475019693077221E-08;
+    w[2] =  0.448824314722312295179447915594E-06;
+    w[3] =  0.272091977631616257711941025214E-04;
+    w[4] =  0.670877521407181106194696282100E-03;
+    w[5] =  0.798886677772299020922211491861E-02;
+    w[6] =  0.508103869090520673569908110358E-01;
+    w[7] =  0.183632701306997074156148485766E+00;
+    w[8] =  0.391608988613030244504042313621E+00;
+    w[9] =  0.502974888276186530840731361096E+00;
+    w[10] = 0.391608988613030244504042313621E+00;
+    w[11] = 0.183632701306997074156148485766E+00;
+    w[12] = 0.508103869090520673569908110358E-01;
+    w[13] = 0.798886677772299020922211491861E-02;
+    w[14] = 0.670877521407181106194696282100E-03;
+    w[15] = 0.272091977631616257711941025214E-04;
+    w[16] = 0.448824314722312295179447915594E-06;
+    w[17] = 0.216305100986355475019693077221E-08;
+    w[18] = 0.132629709449851575185289154385E-11;
+  }
+  else if ( n == 20 )
+  {
+    w[0] =  0.222939364553415129252250061603E-12;
+    w[1] =  0.439934099227318055362885145547E-09;
+    w[2] =  0.108606937076928169399952456345E-06;
+    w[3] =  0.780255647853206369414599199965E-05;
+    w[4] =  0.228338636016353967257145917963E-03;
+    w[5] =  0.324377334223786183218324713235E-02;
+    w[6] =  0.248105208874636108821649525589E-01;
+    w[7] =  0.109017206020023320013755033535E+00;
+    w[8] =  0.286675505362834129719659706228E+00;
+    w[9] =  0.462243669600610089650328639861E+00;
+    w[10] = 0.462243669600610089650328639861E+00;
+    w[11] = 0.286675505362834129719659706228E+00;
+    w[12] = 0.109017206020023320013755033535E+00;
+    w[13] = 0.248105208874636108821649525589E-01;
+    w[14] = 0.324377334223786183218324713235E-02;
+    w[15] = 0.228338636016353967257145917963E-03;
+    w[16] = 0.780255647853206369414599199965E-05;
+    w[17] = 0.108606937076928169399952456345E-06;
+    w[18] = 0.439934099227318055362885145547E-09;
+    w[19] = 0.222939364553415129252250061603E-12;
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "HERMITE_LOOKUP_WEIGHTS - Fatal error!\n";
+    std::cerr << "  Illegal value of N = " << n << "\n";
+    std::cerr << "  Legal values are 1 through 20.\n";
+    std::exit ( 1 );
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void hermite_ss_compute ( int order, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_SS_COMPUTE computes a Hermite quadrature rule.
+//
+//  Discussion:
+//
+//    The abscissas are the zeros of the N-th order Hermite polynomial.
+//
+//    The integral:
+//
+//      Integral ( -oo < X < +oo ) exp ( - X * X ) * F(X) dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= ORDER ) W(I) * F ( X(I) )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    19 April 2011
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Arthur Stroud, Don Secrest.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//    1 <= ORDER.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double cc;
+  double dp2;
+  int i;
+  double p1;
+  double s;
+  double temp;
+  double x0;
+
+  if ( order < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "HERMITE_SS_COMPUTE - Fatal error!\n";
+    std::cerr << "  Illegal value of ORDER = " << order << "\n";
+    std::exit ( 1 );
+  }
+
+  cc = 1.7724538509 * webbur::r8_gamma ( ( double ) ( order ) )
+    / std::pow ( 2.0, order - 1 );
+
+  s = std::pow ( 2.0 * ( double ) ( order ) + 1.0, 1.0 / 6.0 );
+
+  for ( i = 0; i < ( order + 1 ) / 2; i++ )
+  {
+    if ( i == 0 )
+    {
+      x0 = s * s * s - 1.85575 / s;
+    }
+    else if ( i == 1 )
+    {
+      x0 = x0 - 1.14 * std::pow ( ( double ) ( order ), 0.426 ) / x0;
+    }
+    else if ( i == 2 )
+    {
+      x0 = 1.86 * x0 - 0.86 * x[0];
+    }
+    else if ( i == 3 )
+    {
+      x0 = 1.91 * x0 - 0.91 * x[1];
+    }
+    else
+    {
+      x0 = 2.0 * x0 - x[i-2];
+    }
+
+    webbur::hermite_ss_root ( &x0, order, &dp2, &p1 );
+
+    x[i] = x0;
+    w[i] = ( cc / dp2 ) / p1;
+
+    x[order-i-1] = -x0;
+    w[order-i-1] = w[i];
+  }
+//
+//  Reverse the order of the abscissas.
+//
+  for ( i = 1; i <= order/2; i++ )
+  {
+    temp       = x[i-1];
+    x[i-1]     = x[order-i];
+    x[order-i] = temp;
+  }
+
+  if ( ( order % 2 ) == 1 )
+  {
+    x[(order-1)/2] = 0.0;
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void hermite_ss_recur ( double *p2, double *dp2, double *p1, double x, int order )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_SS_RECUR finds the value and derivative of a Hermite polynomial.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    19 April 2011
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Arthur Stroud, Don Secrest.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Output, double *P2, the value of H(ORDER)(X).
+//
+//    Output, double *DP2, the value of H'(ORDER)(X).
+//
+//    Output, double *P1, the value of H(ORDER-1)(X).
+//
+//    Input, double X, the point at which polynomials are evaluated.
+//
+//    Input, int ORDER, the order of the polynomial.
+//
+{
+  int i;
+  double dq0;
+  double dq1;
+  double dq2;
+  double q0;
+  double q1;
+  double q2;
+
+  q1 = 1.0;
+  dq1 = 0.0;
+
+  q2 = x;
+  dq2 = 1.0;
+
+  for ( i = 2; i <= order; i++ )
+  {
+    q0 = q1;
+    dq0 = dq1;
+
+    q1 = q2;
+    dq1 = dq2;
+
+    q2  = x * q1 - 0.5 * ( ( double ) ( i ) - 1.0 ) * q0;
+    dq2 = x * dq1 + q1 - 0.5 * ( ( double ) ( i ) - 1.0 ) * dq0;
+  }
+
+  *p2 = q2;
+  *dp2 = dq2;
+  *p1 = q1;
+
+  return;
+}
+//****************************************************************************80
+
+void hermite_ss_root ( double *x, int order, double *dp2, double *p1 )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    HERMITE_SS_ROOT improves an approximate root of a Hermite polynomial.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    19 April 2011
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Arthur Stroud, Don Secrest.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input/output, double *X, the approximate root, which
+//    should be improved on output.
+//
+//    Input, int ORDER, the order of the Hermite polynomial.
+//
+//    Output, double *DP2, the value of H'(ORDER)(X).
+//
+//    Output, double *P1, the value of H(ORDER-1)(X).
+//
+{
+  double d;
+  double eps;
+  double p2;
+  int step;
+  int step_max = 10;
+
+  eps = webbur::r8_epsilon ( );
+
+  for ( step = 1; step <= step_max; step++ )
+  {
+    webbur::hermite_ss_recur ( &p2, dp2, p1, *x, order );
+
+    d = p2 / ( *dp2 );
+    *x = *x - d;
+
+    if ( webbur::r8_abs ( d ) <= eps * ( webbur::r8_abs ( *x ) + 1.0 ) )
+    {
+      return;
+    }
+  }
+  return;
+}
+//****************************************************************************80
+
+int i4_choose ( int n, int k )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4_CHOOSE computes the binomial coefficient C(N,K).
+//
+//  Discussion:
+//
+//    The value is calculated in such a way as to avoid overflow and
+//    roundoff.  The calculation is done in integer arithmetic.
+//
+//    The formula used is:
+//
+//      C(N,K) = N! / ( K! * (N-K)! )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    09 November 2007
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    ML Wolfson, HV Wright,
+//    Algorithm 160:
+//    Combinatorial of M Things Taken N at a Time,
+//    Communications of the ACM,
+//    Volume 6, Number 4, April 1963, page 161.
+//
+//  Parameters:
+//
+//    Input, int N, K, the values of N and K.
+//
+//    Output, int I4_CHOOSE, the number of combinations of N
+//    things taken K at a time.
+//
+{
+  int i;
+  int mn;
+  int mx;
+  int value;
+
+  mn = i4_min ( k, n - k );
+
+  if ( mn < 0 )
+  {
+    value = 0;
+  }
+  else if ( mn == 0 )
+  {
+    value = 1;
+  }
+  else
+  {
+    mx = i4_max ( k, n - k );
+    value = mx + 1;
+
+    for ( i = 2; i <= mn; i++ )
+    {
+      value = ( value * ( mx + i ) ) / i;
+    }
+  }
+
+  return value;
+}
+//****************************************************************************80
+
+int i4_log_2 ( int i )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4_LOG_2 returns the integer part of the logarithm base 2 of an I4.
+//
+//  Example:
+//
+//        I  I4_LOG_10
+//    -----  --------
+//        0    0
+//        1    0
+//        2    1
+//        3    1
+//        4    2
+//        5    2
+//        7    2
+//        8    3
+//        9    3
+//     1000    9
+//     1024   10
+//
+//  Discussion:
+//
+//    I4_LOG_2 ( I ) + 1 is the number of binary digits in I.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    04 January 2004
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int I, the number whose logarithm base 2 is desired.
+//
+//    Output, int I4_LOG_2, the integer part of the logarithm base 2 of
+//    the absolute value of X.
+//
+{
+  int i_abs;
+  int two_pow;
+  int value;
+
+  if ( i == 0 )
+  {
+    value = 0;
+  }
+  else
+  {
+    value = 0;
+    two_pow = 2;
+
+    i_abs = std::abs ( i );
+
+    while ( two_pow <= i_abs )
+    {
+      value = value + 1;
+      two_pow = two_pow * 2;
+    }
+  }
+
+  return value;
+}
+//****************************************************************************80
+
+int i4_max ( int i1, int i2 )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4_MAX returns the maximum of two I4's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 October 1998
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int I1, I2, are two integers to be compared.
+//
+//    Output, int I4_MAX, the larger of I1 and I2.
+//
+{
+  int value;
+
+  if ( i2 < i1 )
+  {
+    value = i1;
+  }
+  else
+  {
+    value = i2;
+  }
+  return value;
+}
+//****************************************************************************80
+
+int i4_min ( int i1, int i2 )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4_MIN returns the minimum of two I4's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 October 1998
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int I1, I2, two integers to be compared.
+//
+//    Output, int I4_MIN, the smaller of I1 and I2.
+//
+{
+  int value;
+
+  if ( i1 < i2 )
+  {
+    value = i1;
+  }
+  else
+  {
+    value = i2;
+  }
+  return value;
+}
+//****************************************************************************80
+
+int i4_power ( int i, int j )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4_POWER returns the value of I^J.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    01 April 2004
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int I, J, the base and the power.  J should be nonnegative.
+//
+//    Output, int I4_POWER, the value of I^J.
+//
+{
+  int k;
+  int value;
+
+  if ( j < 0 )
+  {
+    if ( i == 1 )
+    {
+      value = 1;
+    }
+    else if ( i == 0 )
+    {
+      std::cerr << "\n";
+      std::cerr << "I4_POWER - Fatal error!\n";
+      std::cerr << "  I^J requested, with I = 0 and J negative.\n";
+      std::exit ( 1 );
+    }
+    else
+    {
+      value = 0;
+    }
+  }
+  else if ( j == 0 )
+  {
+    if ( i == 0 )
+    {
+      std::cerr << "\n";
+      std::cerr << "I4_POWER - Fatal error!\n";
+      std::cerr << "  I^J requested, with I = 0 and J = 0.\n";
+      std::exit ( 1 );
+    }
+    else
+    {
+      value = 1;
+    }
+  }
+  else if ( j == 1 )
+  {
+    value = i;
+  }
+  else
+  {
+    value = 1;
+    for ( k = 1; k <= j; k++ )
+    {
+      value = value * i;
+    }
+  }
+  return value;
+}
+//****************************************************************************80
+
+void i4mat_copy ( int m, int n, int a1[], int a2[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4MAT_COPY copies one I4MAT to another.
+//
+//  Discussion:
+//
+//    An I4MAT is an MxN array of I4's, stored by (I,J) -> [I+J*M].
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    27 August 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, N, the number of rows and columns.
+//
+//    Input, int A1[M*N], the matrix to be copied.
+//
+//    Output, int A2[M*N], the copy of A1.
+//
+{
+  int i;
+  int j;
+
+  for ( j = 0; j < n; j++ )
+  {
+    for ( i = 0; i < m; i++ )
+    {
+      a2[i+j*m] = a1[i+j*m];
+    }
+  }
+  return;
+}
+//****************************************************************************80
+
+int *i4mat_copy_new ( int m, int n, int a1[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4MAT_COPY_NEW copies an I4MAT to a "new" I4MAT.
+//
+//  Discussion:
+//
+//    An I4MAT is an MxN array of I4's, stored by (I,J) -> [I+J*M].
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    27 August 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, N, the number of rows and columns.
+//
+//    Input, int A1[M*N], the matrix to be copied.
+//
+//    Output, int I4MAT_COPY_NEW[M*N], the copy of A1.
+//
+{
+  int *a2;
+  int i;
+  int j;
+
+  a2 = new int[m*n];
+
+  for ( j = 0; j < n; j++ )
+  {
+    for ( i = 0; i < m; i++ )
+    {
+      a2[i+j*m] = a1[i+j*m];
+    }
+  }
+  return a2;
+}
+//****************************************************************************80
+
+void i4mat_transpose_print ( int m, int n, int a[], std::string title )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4MAT_TRANSPOSE_PRINT prints an I4MAT, transposed.
+//
+//  Discussion:
+//
+//    An I4MAT is an MxN array of I4's, stored by (I,J) -> [I+J*M].
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    31 January 2005
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, the number of rows in A.
+//
+//    Input, int N, the number of columns in A.
+//
+//    Input, int A[M*N], the M by N matrix.
+//
+//    Input, string TITLE, a title.
+//
+{
+  i4mat_transpose_print_some ( m, n, a, 1, 1, m, n, title );
+
+  return;
+}
+//****************************************************************************80
+
+void i4mat_transpose_print_some ( int m, int n, int a[], int ilo, int jlo,
+  int ihi, int jhi, std::string title )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4MAT_TRANSPOSE_PRINT_SOME prints some of an I4MAT, transposed.
+//
+//  Discussion:
+//
+//    An I4MAT is an MxN array of I4's, stored by (I,J) -> [I+J*M].
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    14 June 2005
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, the number of rows of the matrix.
+//    M must be positive.
+//
+//    Input, int N, the number of columns of the matrix.
+//    N must be positive.
+//
+//    Input, int A[M*N], the matrix.
+//
+//    Input, int ILO, JLO, IHI, JHI, designate the first row and
+//    column, and the last row and column to be printed.
+//
+//    Input, string TITLE, a title.
+//
+{
+# define INCX 10
+
+  int i;
+  int i2hi;
+  int i2lo;
+  int j;
+  int j2hi;
+  int j2lo;
+
+  std::cout << "\n";
+  std::cout << title << "\n";
+//
+//  Print the columns of the matrix, in strips of INCX.
+//
+  for ( i2lo = ilo; i2lo <= ihi; i2lo = i2lo + INCX )
+  {
+    i2hi = i2lo + INCX - 1;
+    i2hi = webbur::i4_min ( i2hi, m );
+    i2hi = webbur::i4_min ( i2hi, ihi );
+
+    std::cout << "\n";
+//
+//  For each row I in the current range...
+//
+//  Write the header.
+//
+    std::cout << "  Row: ";
+    for ( i = i2lo; i <= i2hi; i++ )
+    {
+      std::cout << std::setw(6) << i - 1 << "  ";
+    }
+    std::cout << "\n";
+    std::cout << "  Col\n";
+    std::cout << "\n";
+//
+//  Determine the range of the rows in this strip.
+//
+    j2lo = webbur::i4_max ( jlo, 1 );
+    j2hi = webbur::i4_min ( jhi, n );
+
+    for ( j = j2lo; j <= j2hi; j++ )
+    {
+//
+//  Print out (up to INCX) entries in column J, that lie in the current strip.
+//
+      std::cout << std::setw(5) << j - 1 << ":";
+      for ( i = i2lo; i <= i2hi; i++ )
+      {
+        std::cout << std::setw(6) << a[i-1+(j-1)*m] << "  ";
+      }
+      std::cout << "\n";
+    }
+  }
+
+  return;
+# undef INCX
+}
+//****************************************************************************80
+
+void i4mat_write ( std::string output_filename, int m, int n, int table[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4MAT_WRITE writes an I4MAT file.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    01 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, string OUTPUT_FILENAME, the output filename.
+//
+//    Input, int M, the spatial dimension.
+//
+//    Input, int N, the number of points.
+//
+//    Input, int TABLE[M*N], the table data.
+//
+{
+  int i;
+  int j;
+  std::ofstream output;
+//
+//  Open the file.
+//
+  output.open ( output_filename.c_str ( ) );
+
+  if ( !output )
+  {
+    std::cerr << "\n";
+    std::cerr << "I4MAT_WRITE - Fatal error!\n";
+    std::cerr << "  Could not open the output file.\n";
+    return;
+  }
+//
+//  Write the data.
+//
+  for ( j = 0; j < n; j++ )
+  {
+    for ( i = 0; i < m; i++ )
+    {
+      output << std::setw(10) << table[i+j*m] << "  ";
+    }
+    output << "\n";
+  }
+//
+//  Close the file.
+//
+  output.close ( );
+
+  return;
+}
+//****************************************************************************80
+
+int *i4vec_add_new ( int n, int a[], int b[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4VEC_ADD_NEW computes C = A + B for I4VEC's.
+//
+//  Discussion:
+//
+//    An I4VEC is a vector of I4's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    28 April 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries.
+//
+//    Input, int A[N], the first vector.
+//
+//    Input, int B[N], the second vector.
+//
+//    Output, int I4VEC_ADD_NEW[N], the sum of the vectors.
+//
+{
+  int *c;
+  int i;
+
+  c = new int[n];
+
+  for ( i = 0; i < n; i++ )
+  {
+    c[i] = a[i] + b[i];
+  }
+  return c;
+}
+//****************************************************************************80
+
+bool i4vec_any_lt ( int n, int a[], int b[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4VEC_ANY_LT: ( any ( A < B ) ) for I4VEC's.
+//
+//  Discussion:
+//
+//    An I4VEC is a vector of I4's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    28 April 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries.
+//
+//    Input, int A[N], the first vector.
+//
+//    Input, int B[N], the second vector.
+//
+//    Output, bool I4VEC_ANY_LT is TRUE if any entry
+//    of A is less than the corresponding entry of B.
+//
+{
+  int i;
+  bool value;
+
+  for ( i = 0; i < n; i++ )
+  {
+    if ( a[i] < b[i] )
+    {
+      value = true;
+      return value;
+    }
+  }
+  value = false;
+
+  return value;
+}
+//****************************************************************************80
+
+void i4vec_copy ( int n, int a1[], int a2[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4VEC_COPY copies an I4VEC.
+//
+//  Discussion:
+//
+//    An I4VEC is a vector of I4's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    25 April 2007
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the vectors.
+//
+//    Input, int A1[N], the vector to be copied.
+//
+//    Output, int A2[N], the copy of A1.
+//
+{
+  int i;
+
+  for ( i = 0; i < n; i++ )
+  {
+    a2[i] = a1[i];
+  }
+  return;
+}
+//****************************************************************************80
+
+int *i4vec_copy_new ( int n, int a1[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4VEC_COPY_NEW copies an I4VEC to a "new" I4VEC.
+//
+//  Discussion:
+//
+//    An I4VEC is a vector of I4's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    04 July 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the vectors.
+//
+//    Input, int A1[N], the vector to be copied.
+//
+//    Output, int I4VEC_COPY_NEW[N], the copy of A1.
+//
+{
+  int *a2;
+  int i;
+
+  a2 = new int[n];
+
+  for ( i = 0; i < n; i++ )
+  {
+    a2[i] = a1[i];
+  }
+  return a2;
+}
+//****************************************************************************80
+
+void i4vec_min_mv ( int m, int n, int u[], int v[], int w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4VEC_MIN_MV determines U(1:N) /\ V for vectors U and a single vector V.
+//
+//  Discussion:
+//
+//    For two vectors U and V, each of length M, we define
+//
+//      ( U /\ V ) (I) = min ( U(I), V(I) ).
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    12 January 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, the dimension of the vectors.
+//
+//    Input, int N, the number of vectors in U.
+//
+//    Input, int U[M*N], N vectors, each of length M.
+//
+//    Input, int V[M], a vector of length M.
+//
+//    Output, int W[M*N], the value of U /\ W.
+//
+{
+  int i;
+  int j;
+
+  for ( j = 0; j < n; j++ )
+  {
+    for ( i = 0; i < m; i++ )
+    {
+      w[i+j*m] = i4_min ( u[i+j*m], v[i] );
+    }
+  }
+  return;
+}
+//****************************************************************************80
+
+void i4vec_print ( int n, int a[], std::string title )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4VEC_PRINT prints an I4VEC.
+//
+//  Discussion:
+//
+//    An I4VEC is a vector of I4's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    14 November 2003
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of components of the vector.
+//
+//    Input, int A[N], the vector to be printed.
+//
+//    Input, string TITLE, a title.
+//
+{
+  int i;
+
+  std::cout << "\n";
+  std::cout << title << "\n";
+  std::cout << "\n";
+  for ( i = 0; i < n; i++ )
+  {
+    std::cout << "  " << std::setw(8) << i
+              << ": " << std::setw(8) << a[i]  << "\n";
+  }
+  return;
+}
+//****************************************************************************80
+
+int i4vec_product ( int n, int a[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4VEC_PRODUCT multiplies the entries of an I4VEC.
+//
+//  Discussion:
+//
+//    An I4VEC is a vector of integer values.
+//
+//  Example:
+//
+//    Input:
+//
+//      A = ( 1, 2, 3, 4 )
+//
+//    Output:
+//
+//      I4VEC_PRODUCT = 24
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    17 May 2003
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the vector.
+//
+//    Input, int A[N], the vector
+//
+//    Output, int I4VEC_PRODUCT, the product of the entries of A.
+//
+{
+  int i;
+  int product;
+
+  product = 1;
+  for ( i = 0; i < n; i++ )
+  {
+    product = product * a[i];
+  }
+
+  return product;
+}
+//****************************************************************************80
+
+int i4vec_sum ( int n, int a[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4VEC_SUM sums the entries of an I4VEC.
+//
+//  Discussion:
+//
+//    An I4VEC is a vector of I4's.
+//
+//  Example:
+//
+//    Input:
+//
+//      A = ( 1, 2, 3, 4 )
+//
+//    Output:
+//
+//      I4VEC_SUM = 10
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    04 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the vector.
+//
+//    Input, int A[N], the vector to be summed.
+//
+//    Output, int I4VEC_SUM, the sum of the entries of A.
+//
+{
+  int i;
+  int sum;
+
+  sum = 0;
+  for ( i = 0; i < n; i++ )
+  {
+    sum = sum + a[i];
+  }
+
+  return sum;
+}
+//****************************************************************************80
+
+void i4vec_zero ( int n, int a[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4VEC_ZERO zeroes an I4VEC.
+//
+//  Discussion:
+//
+//    An I4VEC is a vector of I4's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    01 August 2005
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the vector.
+//
+//    Output, int A[N], a vector of zeroes.
+//
+{
+  int i;
+
+  for ( i = 0; i < n; i++ )
+  {
+    a[i] = 0;
+  }
+  return;
+}
+//****************************************************************************80
+
+int *i4vec_zero_new ( int n )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    I4VEC_ZERO_NEW creates and zeroes an I4VEC.
+//
+//  Discussion:
+//
+//    An I4VEC is a vector of I4's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    11 July 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the vector.
+//
+//    Output, int I4VEC_ZERO_NEW[N], a vector of zeroes.
+//
+{
+  int *a;
+  int i;
+
+  a = new int[n];
+
+  for ( i = 0; i < n; i++ )
+  {
+    a[i] = 0;
+  }
+  return a;
+}
+//****************************************************************************80
+
+void imtqlx ( int n, double d[], double e[], double z[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    IMTQLX diagonalizes a symmetric tridiagonal matrix.
+//
+//  Discussion:
+//
+//    This routine is a slightly modified version of the EISPACK routine to
+//    perform the implicit QL algorithm on a symmetric tridiagonal matrix.
+//
+//    The authors thank the authors of EISPACK for permission to use this
+//    routine.
+//
+//    It has been modified to produce the product Q' * Z, where Z is an input
+//    vector and Q is the orthogonal matrix diagonalizing the input matrix.
+//    The changes consist (essentially) of applying the orthogonal transformations
+//    directly to Z as they are generated.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    08 January 2010
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Sylvan Elhay, Jaroslav Kautsky.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Sylvan Elhay, Jaroslav Kautsky,
+//    Algorithm 655: IQPACK, FORTRAN Subroutines for the Weights of
+//    Interpolatory Quadrature,
+//    ACM Transactions on Mathematical Software,
+//    Volume 13, Number 4, December 1987, pages 399-415.
+//
+//    Roger Martin, James Wilkinson,
+//    The Implicit QL Algorithm,
+//    Numerische Mathematik,
+//    Volume 12, Number 5, December 1968, pages 377-383.
+//
+//  Parameters:
+//
+//    Input, int N, the order of the matrix.
+//
+//    Input/output, double D(N), the diagonal entries of the matrix.
+//    On output, the information in D has been overwritten.
+//
+//    Input/output, double E(N), the subdiagonal entries of the
+//    matrix, in entries E(1) through E(N-1).  On output, the information in
+//    E has been overwritten.
+//
+//    Input/output, double Z(N).  On input, a vector.  On output,
+//    the value of Q' * Z, where Q is the matrix that diagonalizes the
+//    input symmetric tridiagonal matrix.
+//
+{
+  double b;
+  double c;
+  double f;
+  double g;
+  int i;
+  int ii;
+  int itn = 30;
+  int j;
+  int k;
+  int l;
+  int m;
+  int mml;
+  double p;
+  double prec;
+  double r;
+  double s;
+
+  prec = webbur::r8_epsilon ( );
+
+  if ( n == 1 )
+  {
+    return;
+  }
+
+  e[n-1] = 0.0;
+
+  for ( l = 1; l <= n; l++ )
+  {
+    j = 0;
+    for ( ; ; )
+    {
+      for ( m = l; m <= n; m++ )
+      {
+        if ( m == n )
+        {
+          break;
+        }
+
+        if ( webbur::r8_abs ( e[m-1] ) <=
+          prec * ( webbur::r8_abs ( d[m-1] ) + webbur::r8_abs ( d[m] ) ) )
+        {
+          break;
+        }
+      }
+      p = d[l-1];
+      if ( m == l )
+      {
+        break;
+      }
+      if ( itn <= j )
+      {
+        std::cerr << "\n";
+        std::cerr << "IMTQLX - Fatal error!\n";
+        std::cerr << "  Iteration limit exceeded\n";
+        std::exit ( 1 );
+      }
+      j = j + 1;
+      g = ( d[l] - p ) / ( 2.0 * e[l-1] );
+      r = std::sqrt ( g * g + 1.0 );
+      g = d[m-1] - p + e[l-1] / ( g + webbur::r8_abs ( r ) * webbur::r8_sign ( g ) );
+      s = 1.0;
+      c = 1.0;
+      p = 0.0;
+      mml = m - l;
+
+      for ( ii = 1; ii <= mml; ii++ )
+      {
+        i = m - ii;
+        f = s * e[i-1];
+        b = c * e[i-1];
+
+        if ( webbur::r8_abs ( g ) <= webbur::r8_abs ( f ) )
+        {
+          c = g / f;
+          r = std::sqrt ( c * c + 1.0 );
+          e[i] = f * r;
+          s = 1.0 / r;
+          c = c * s;
+        }
+        else
+        {
+          s = f / g;
+          r = std::sqrt ( s * s + 1.0 );
+          e[i] = g * r;
+          c = 1.0 / r;
+          s = s * c;
+        }
+        g = d[i] - p;
+        r = ( d[i-1] - g ) * s + 2.0 * c * b;
+        p = s * r;
+        d[i] = g + p;
+        g = c * r - b;
+        f = z[i];
+        z[i] = s * z[i-1] + c * f;
+        z[i-1] = c * z[i-1] - s * f;
+      }
+      d[l-1] = d[l-1] - p;
+      e[l-1] = g;
+      e[m-1] = 0.0;
+    }
+  }
+//
+//  Sorting.
+//
+  for ( ii = 2; ii <= m; ii++ )
+  {
+    i = ii - 1;
+    k = i;
+    p = d[i-1];
+
+    for ( j = ii; j <= n; j++ )
+    {
+      if ( d[j-1] < p )
+      {
+         k = j;
+         p = d[j-1];
+      }
+    }
+
+    if ( k != i )
+    {
+      d[k-1] = d[i-1];
+      d[i-1] = p;
+      p = z[i-1];
+      z[i-1] = z[k-1];
+      z[k-1] = p;
+    }
+  }
+  return;
+}
+//****************************************************************************80
+
+void jacobi_compute ( int n, double alpha, double beta, double x[],
+  double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    JACOBI_COMPUTE: Elhay-Kautsky method for Gauss-Jacobi quadrature rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      Integral ( -1 <= X <= 1 ) (1-X)**ALPHA * (1+X)**BETA * F(X) dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= ORDER ) WEIGHT(I) * F ( XTAB(I) )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    30 April 2011
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Sylvan Elhay, Jaroslav Kautsky.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Sylvan Elhay, Jaroslav Kautsky,
+//    Algorithm 655: IQPACK, FORTRAN Subroutines for the Weights of
+//    Interpolatory Quadrature,
+//    ACM Transactions on Mathematical Software,
+//    Volume 13, Number 4, December 1987, pages 399-415.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Input, double ALPHA, BETA, the exponents of (1-X) and
+//    (1+X) in the quadrature rule.  For simple Gauss-Legendre quadrature,
+//    set ALPHA = BETA = 0.0.  -1.0 < ALPHA and -1.0 < BETA are required.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  double abi;
+  double *bj;
+  int i;
+  double i_r8;
+  double zemu;
+//
+//  Define the zero-th moment.
+//
+  zemu = std::pow ( 2.0, alpha + beta + 1.0 )
+    * webbur::r8_gamma ( alpha + 1.0 )
+    * webbur::r8_gamma ( beta + 1.0 )
+    / webbur::r8_gamma ( 2.0 + alpha + beta );
+//
+//  Define the Jacobi matrix.
+//
+  bj = new double[n];
+
+  x[0] = ( beta - alpha ) / ( 2.0 + alpha + beta );
+
+  bj[0] = 4.0 * ( 1.0 + alpha ) * ( 1.0 + beta )
+    / ( ( 3.0 + alpha + beta )
+      * ( 2.0 + alpha + beta ) * ( 2.0 + alpha + beta ) );
+
+  for ( i = 1; i < n; i++ )
+  {
+    i_r8 = ( double ) ( i + 1 );
+    abi = 2.0 * i_r8 + alpha + beta;
+    x[i] = ( beta + alpha ) * ( beta - alpha ) / ( ( abi - 2.0 ) * abi );
+    bj[i] = 4.0 * i_r8 * ( i_r8 + alpha ) * ( i_r8 + beta )
+      * ( i_r8 + alpha + beta )
+      / ( ( abi - 1.0 ) * ( abi + 1.0 ) * abi * abi );
+  }
+
+  for ( i = 0; i < n; i++ )
+  {
+    bj[i] = std::sqrt ( bj[i] );
+  }
+
+  w[0] = std::sqrt ( zemu );
+
+  for ( i = 1; i < n; i++ )
+  {
+    w[i] = 0.0;
+  }
+//
+//  Diagonalize the Jacobi matrix.
+//
+  webbur::imtqlx ( n, x, bj, w );
+
+  for ( i = 0; i < n; i++ )
+  {
+    w[i] = w[i] * w[i];
+  }
+
+  delete [] bj;
+
+  return;
+}
+//****************************************************************************80
+
+void jacobi_compute_np ( int order, int np, double p[], double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    JACOBI_COMPUTE_NP computes a Jacobi quadrature rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      Integral ( -1 <= X <= 1 ) (1-X)^ALPHA * (1+X)^BETA * F(X) dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= ORDER ) W(I) * F ( X(I) )
+//
+//    Thanks to Xu Xiang of Fudan University for pointing out that
+//    an earlier implementation of this routine was incorrect!
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Arthur Stroud, Don Secrest.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//    1 <= ORDER.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameter values.
+//    P[0] = ALPHA, the exponent of (1-X)
+//    P[1] = BETA,  the exponent of (1+X).
+//    -1.0 < ALPHA and -1.0 < BETA are required.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double alpha;
+  double beta;
+
+  alpha = p[0];
+  beta = p[1];
+
+  webbur::jacobi_compute ( order, alpha, beta, x, w );
+
+  return;
+}
+//****************************************************************************80
+
+void jacobi_compute_points ( int order, double alpha, double beta,
+  double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    JACOBI_COMPUTE_POINTS computes Jacobi quadrature points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    14 October 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Input, double ALPHA, BETA, the exponents of the (1-X) and (1+X) factors.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+{
+  double *w;
+
+  w = new double[order];
+
+  webbur::jacobi_compute ( order, alpha, beta, x, w );
+
+  delete [] w;
+
+  return;
+}
+//****************************************************************************80
+
+void jacobi_compute_points_np ( int order, int np, double p[], double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    JACOBI_COMPUTE_POINTS_NP computes Jacobi quadrature points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameter values.
+//    P[0] = ALPHA, the exponent of (1-X)
+//    P[1] = BETA,  the exponent of (1+X).
+//    -1.0 < ALPHA and -1.0 < BETA are required.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+{
+  double alpha;
+  double beta;
+
+  alpha = p[0];
+  beta = p[1];
+
+  webbur::jacobi_compute_points ( order, alpha, beta, x );
+
+  return;
+}
+//****************************************************************************80
+
+void jacobi_compute_weights ( int order, double alpha, double beta,
+  double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    JACOBI_COMPUTE_WEIGHTS computes Jacobi quadrature weights.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    14 October 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Input, double ALPHA, BETA, the exponents of the (1-X) and (1+X) factors.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double *x;
+
+  x = new double[order];
+
+  webbur::jacobi_compute ( order, alpha, beta, x, w );
+
+  delete [] x;
+
+  return;
+}
+//****************************************************************************80
+
+void jacobi_compute_weights_np ( int order, int np, double p[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    JACOBI_COMPUTE_WEIGHTS_NP computes Jacobi quadrature weights.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameter values.
+//    P[0] = ALPHA, the exponent of (1-X)
+//    P[1] = BETA,  the exponent of (1+X).
+//    -1.0 < ALPHA and -1.0 < BETA are required.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double alpha;
+  double beta;
+
+  alpha = p[0];
+  beta = p[1];
+
+  webbur::jacobi_compute_weights ( order, alpha, beta, w );
+
+  return;
+}
+//****************************************************************************80
+
+double jacobi_integral ( int expon, double alpha, double beta )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    JACOBI_INTEGRAL integrates a monomial with Jacobi weight.
+//
+//  Discussion:
+//
+//    VALUE = Integral ( -1 <= X <= +1 ) x^EXPON (1-x)^ALPHA (1+x)^BETA dx
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    08 September 2007
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int EXPON, the exponent.
+//
+//    Input, double ALPHA, the exponent of (1-X) in the weight factor.
+//
+//    Input, double BETA, the exponent of (1+X) in the weight factor.
+//
+//    Output, double JACOBI_INTEGRAL, the value of the integral.
+//
+{
+  double arg1;
+  double arg2;
+  double arg3;
+  double arg4;
+  double c;
+  double s;
+  double value;
+  double value1;
+  double value2;
+
+  c = ( double ) ( expon );
+
+  if ( ( expon % 2 ) == 0 )
+  {
+    s = +1.0;
+  }
+  else
+  {
+    s = -1.0;
+  }
+
+  arg1 = - alpha;
+  arg2 =   1.0 + c;
+  arg3 =   2.0 + beta + c;
+  arg4 = - 1.0;
+
+  value1 = webbur::r8_hyper_2f1 ( arg1, arg2, arg3, arg4 );
+
+  arg1 = - beta;
+  arg2 =   1.0 + c;
+  arg3 =   2.0 + alpha + c;
+  arg4 = - 1.0;
+
+  value2 = webbur::r8_hyper_2f1 ( arg1, arg2, arg3, arg4 );
+
+  value = webbur::r8_gamma ( 1.0 + c ) * (
+      s * webbur::r8_gamma ( 1.0 + beta  ) * value1
+    / webbur::r8_gamma ( 2.0 + beta  + c )
+    +     webbur::r8_gamma ( 1.0 + alpha ) * value2
+    / webbur::r8_gamma ( 2.0 + alpha + c ) );
+
+  return value;
+}
+//****************************************************************************80
+
+void jacobi_ss_compute ( int order, double alpha, double beta, double x[],
+  double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    JACOBI_SS_COMPUTE computes a Jacobi quadrature rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      Integral ( -1 <= X <= 1 ) (1-X)^ALPHA * (1+X)^BETA * F(X) dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= ORDER ) W(I) * F ( X(I) )
+//
+//    Thanks to Xu Xiang of Fudan University for pointing out that
+//    an earlier implementation of this routine was incorrect!
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    18 February 2008
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Arthur Stroud, Don Secrest.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//    1 <= ORDER.
+//
+//    Input, double ALPHA, BETA, the exponents of (1-X) and
+//    (1+X) in the quadrature rule.  For simple Legendre quadrature,
+//    set ALPHA = BETA = 0.0.  -1.0 < ALPHA and -1.0 < BETA are required.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double an;
+  double *b;
+  double bn;
+  double *c;
+  double cc;
+  double delta;
+  double dp2;
+  int i;
+  double p1;
+  double prod;
+  double r1;
+  double r2;
+  double r3;
+  double temp;
+  double x0;
+
+  if ( order < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "JACOBI_SS_COMPUTE - Fatal error!\n";
+    std::cerr << "  Illegal value of ORDER = " << order << "\n";
+    std::exit ( 1 );
+  }
+
+  b = new double[order];
+  c = new double[order];
+//
+//  Check ALPHA and BETA.
+//
+  if ( alpha <= -1.0 )
+  {
+    std::cerr << "\n";
+    std::cerr << "JACOBI_SS_COMPUTE - Fatal error!\n";
+    std::cerr << "  -1.0 < ALPHA is required.\n";
+    std::exit ( 1 );
+  }
+
+  if ( beta <= -1.0 )
+  {
+    std::cerr << "\n";
+    std::cerr << "JACOBI_SS_COMPUTE - Fatal error!\n";
+    std::cerr << "  -1.0 < BETA is required.\n";
+    std::exit ( 1 );
+  }
+//
+//  Set the recursion coefficients.
+//
+  for ( i = 1; i <= order; i++ )
+  {
+    if ( alpha + beta == 0.0 || beta - alpha == 0.0 )
+    {
+      b[i-1] = 0.0;
+    }
+    else
+    {
+      b[i-1] = ( alpha + beta ) * ( beta - alpha ) /
+             ( ( alpha + beta + ( double ) ( 2 * i ) )
+             * ( alpha + beta + ( double ) ( 2 * i - 2 ) ) );
+    }
+
+    if ( i == 1 )
+    {
+      c[i-1] = 0.0;
+    }
+    else
+    {
+      c[i-1] = 4.0 * ( double ) ( i - 1 )
+         * ( alpha + ( double ) ( i - 1 ) )
+          * ( beta + ( double ) ( i - 1 ) )
+            * ( alpha + beta + ( double ) ( i - 1 ) ) /
+            ( ( alpha + beta + ( double ) ( 2 * i - 1 ) )
+            * std::pow ( alpha + beta + ( double ) ( 2 * i - 2 ), 2 )
+            * ( alpha + beta + ( double ) ( 2 * i - 3 ) ) );
+    }
+  }
+
+  delta = webbur::r8_gamma ( alpha        + 1.0 )
+        * webbur::r8_gamma (         beta + 1.0 )
+        / webbur::r8_gamma ( alpha + beta + 2.0 );
+
+  prod = 1.0;
+  for ( i = 2; i <= order; i++ )
+  {
+    prod = prod * c[i-1];
+  }
+  cc = delta * std::pow ( 2.0, alpha + beta + 1.0 ) * prod;
+
+  for ( i = 1; i <= order; i++ )
+  {
+    if ( i == 1 )
+    {
+      an = alpha / ( double ) ( order );
+      bn = beta / ( double ) ( order );
+
+      r1 = ( 1.0 + alpha )
+        * ( 2.78 / ( 4.0 + ( double ) ( order * order ) )
+        + 0.768 * an / ( double ) ( order ) );
+
+      r2 = 1.0 + 1.48 * an + 0.96 * bn
+        + 0.452 * an * an + 0.83 * an * bn;
+
+      x0 = ( r2 - r1 ) / r2;
+    }
+    else if ( i == 2 )
+    {
+      r1 = ( 4.1 + alpha ) /
+        ( ( 1.0 + alpha ) * ( 1.0 + 0.156 * alpha ) );
+
+      r2 = 1.0 + 0.06 * ( ( double ) ( order ) - 8.0 ) *
+        ( 1.0 + 0.12 * alpha ) / ( double ) ( order );
+
+      r3 = 1.0 + 0.012 * beta *
+        ( 1.0 + 0.25 * r8_abs ( alpha ) ) / ( double ) ( order );
+
+      x0 = x0 - r1 * r2 * r3 * ( 1.0 - x0 );
+    }
+    else if ( i == 3 )
+    {
+      r1 = ( 1.67 + 0.28 * alpha ) / ( 1.0 + 0.37 * alpha );
+
+      r2 = 1.0 + 0.22 * ( ( double ) ( order ) - 8.0 )
+        / ( double ) ( order );
+
+      r3 = 1.0 + 8.0 * beta /
+        ( ( 6.28 + beta ) * ( double ) ( order * order ) );
+
+      x0 = x0 - r1 * r2 * r3 * ( x[0] - x0 );
+    }
+    else if ( i < order - 1 )
+    {
+      x0 = 3.0 * x[i-2] - 3.0 * x[i-3] + x[i-4];
+    }
+    else if ( i == order - 1 )
+    {
+      r1 = ( 1.0 + 0.235 * beta ) / ( 0.766 + 0.119 * beta );
+
+      r2 = 1.0 / ( 1.0 + 0.639
+        * ( ( double ) ( order ) - 4.0 )
+        / ( 1.0 + 0.71 * ( ( double ) ( order ) - 4.0 ) ) );
+
+      r3 = 1.0 / ( 1.0 + 20.0 * alpha / ( ( 7.5 + alpha ) *
+        ( double ) ( order * order ) ) );
+
+      x0 = x0 + r1 * r2 * r3 * ( x0 - x[i-3] );
+    }
+    else if ( i == order )
+    {
+      r1 = ( 1.0 + 0.37 * beta ) / ( 1.67 + 0.28 * beta );
+
+      r2 = 1.0 /
+        ( 1.0 + 0.22 * ( ( double ) ( order ) - 8.0 )
+        / ( double ) ( order ) );
+
+      r3 = 1.0 / ( 1.0 + 8.0 * alpha /
+        ( ( 6.28 + alpha ) * ( double ) ( order * order ) ) );
+
+      x0 = x0 + r1 * r2 * r3 * ( x0 - x[i-3] );
+    }
+
+    webbur::jacobi_ss_root ( &x0, order, alpha, beta, &dp2, &p1, b, c );
+
+    x[i-1] = x0;
+    w[i-1] = cc / ( dp2 * p1 );
+  }
+//
+//  Reverse the order of the values.
+//
+  for ( i = 1; i <= order/2; i++ )
+  {
+    temp       = x[i-1];
+    x[i-1]     = x[order-i];
+    x[order-i] = temp;
+  }
+
+  for ( i = 1; i <=order/2; i++ )
+  {
+    temp       = w[i-1];
+    w[i-1]     = w[order-i];
+    w[order-i] = temp;
+  }
+
+  delete [] b;
+  delete [] c;
+
+  return;
+}
+//****************************************************************************80
+
+void jacobi_ss_recur ( double *p2, double *dp2, double *p1, double x, int order,
+  double alpha, double beta, double b[], double c[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    JACOBI_SS_RECUR evaluates a Jacobi polynomial.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    18 February 2008
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Arthur Stroud, Don Secrest.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Output, double *P2, the value of J(ORDER)(X).
+//
+//    Output, double *DP2, the value of J'(ORDER)(X).
+//
+//    Output, double *P1, the value of J(ORDER-1)(X).
+//
+//    Input, double X, the point at which polynomials are evaluated.
+//
+//    Input, int ORDER, the order of the polynomial.
+//
+//    Input, double ALPHA, BETA, the exponents of (1-X) and
+//    (1+X) in the quadrature rule.
+//
+//    Input, double B[ORDER], C[ORDER], the recursion coefficients.
+//
+{
+  double dp0;
+  double dp1;
+  int i;
+  double p0;
+
+  *p1 = 1.0;
+  dp1 = 0.0;
+
+  *p2 = x + ( alpha - beta ) / ( alpha + beta + 2.0 );
+  *dp2 = 1.0;
+
+  for ( i = 2; i <= order; i++ )
+  {
+    p0 = *p1;
+    dp0 = dp1;
+
+    *p1 = *p2;
+    dp1 = *dp2;
+
+    *p2 = ( x - b[i-1] ) *  ( *p1 ) - c[i-1] * p0;
+    *dp2 = ( x - b[i-1] ) * dp1 + ( *p1 ) - c[i-1] * dp0;
+  }
+  return;
+}
+//****************************************************************************80
+
+void jacobi_ss_root ( double *x, int order, double alpha, double beta,
+  double *dp2, double *p1, double b[], double c[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    JACOBI_SS_ROOT improves an approximate root of a Jacobi polynomial.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    18 February 2008
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Arthur Stroud, Don Secrest.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input/output, double *X, the approximate root, which
+//    should be improved on output.
+//
+//    Input, int ORDER, the order of the polynomial.
+//
+//    Input, double ALPHA, BETA, the exponents of (1-X) and
+//    (1+X) in the quadrature rule.
+//
+//    Output, double *DP2, the value of J'(ORDER)(X).
+//
+//    Output, double *P1, the value of J(ORDER-1)(X).
+//
+//    Input, double B[ORDER], C[ORDER], the recursion coefficients.
+//
+{
+  double d;
+  double eps;
+  double p2;
+  int step;
+  int step_max = 10;
+
+  eps = webbur::r8_epsilon ( );
+
+  for ( step = 1; step <= step_max; step++ )
+  {
+    webbur::jacobi_ss_recur ( &p2, dp2, p1, *x, order, alpha, beta, b, c );
+
+    d = p2 / ( *dp2 );
+    *x = *x - d;
+
+    if ( webbur::r8_abs ( d ) <= eps * ( webbur::r8_abs ( *x ) + 1.0 ) )
+    {
+      return;
+    }
+  }
+  return;
+}
+//****************************************************************************80
+
+void laguerre_compute ( int n, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LAGUERRE_COMPUTE: Laguerre quadrature rule by the Elhay-Kautsky method.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    23 April 2011
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Sylvan Elhay, Jaroslav Kautsky.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Sylvan Elhay, Jaroslav Kautsky,
+//    Algorithm 655: IQPACK, FORTRAN Subroutines for the Weights of
+//    Interpolatory Quadrature,
+//    ACM Transactions on Mathematical Software,
+//    Volume 13, Number 4, December 1987, pages 399-415.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  double *bj;
+  int i;
+  double zemu;
+//
+//  Define the zero-th moment.
+//
+  zemu = 1.0;
+//
+//  Define the Jacobi matrix.
+//
+  bj = new double[n];
+
+  for ( i = 0; i < n; i++ )
+  {
+    bj[i] = ( double ) ( i + 1 );
+  }
+
+  for ( i = 0; i < n; i++ )
+  {
+    x[i] = ( double ) ( 2 * i + 1 );
+  }
+
+  w[0] = std::sqrt ( zemu );
+
+  for ( i = 1; i < n; i++ )
+  {
+    w[i] = 0.0;
+  }
+//
+//  Diagonalize the Jacobi matrix.
+//
+  webbur::imtqlx ( n, x, bj, w );
+
+  for ( i = 0; i < n; i++ )
+  {
+    w[i] = w[i] * w[i];
+  }
+
+  delete [] bj;
+
+  return;
+}
+//****************************************************************************80
+
+void laguerre_compute_np ( int order, int np, double p[], double x[],
+  double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LAGUERRE_COMPUTE_NP computes a Laguerre quadrature rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      Integral ( 0 <= X < +oo ) exp ( - X ) * F(X) dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= ORDER ) W(I) * F ( X(I) )
+//
+//    The integral:
+//
+//      Integral ( A <= X < +oo ) F(X) dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= ORDER ) W(I) * exp ( X(I) ) * F ( X(I) )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Arthur Stroud, Don Secrest.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//    1 <= ORDER.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  webbur::laguerre_compute ( order, x, w );
+
+  return;
+}
+//****************************************************************************80
+
+void laguerre_compute_points ( int order, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LAGUERRE_COMPUTE_POINTS computes Laguerre quadrature points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+{
+  double *w;
+
+  w = new double[order];
+
+  webbur::laguerre_compute ( order, x, w );
+
+  delete [] w;
+
+  return;
+}
+//****************************************************************************80
+
+void laguerre_compute_points_np ( int order, int np, double p[], double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LAGUERRE_COMPUTE_POINTS_NP computes Laguerre quadrature points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+{
+  webbur::laguerre_compute_points ( order, x );
+
+  return;
+}
+//****************************************************************************80
+
+void laguerre_compute_weights ( int order, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LAGUERRE_COMPUTE_WEIGHTS computes Laguerre quadrature weights.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double *x;
+
+  x = new double[order];
+
+  webbur::laguerre_compute ( order, x, w );
+
+  delete [] x;
+
+  return;
+}
+//****************************************************************************80
+
+void laguerre_compute_weights_np ( int order, int np, double p[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LAGUERRE_COMPUTE_WEIGHTS_NP computes Laguerre quadrature weights.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  webbur::laguerre_compute_weights ( order, w );
+
+  return;
+}
+//****************************************************************************80
+
+double laguerre_integral ( int expon )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LAGUERRE_INTEGRAL evaluates a monomial Laguerre integral.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      integral ( 0 <= x < +oo ) x^n * exp ( -x ) dx
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    19 February 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int EXPON, the exponent.
+//    0 <= EXPON.
+//
+//    Output, double EXACT, the value of the integral.
+//
+{
+  double exact;
+
+  exact = webbur::r8_factorial ( expon );
+
+  return exact;
+}
+//****************************************************************************80
+
+void laguerre_lookup ( int n, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LAGUERRE_LOOKUP looks up abscissas and weights for Laguerre quadrature.
+//
+//  Discussion:
+//
+//    The abscissas are the zeroes of the Laguerre polynomial L(N)(X).
+//
+//    The integral:
+//
+//      Integral ( 0 <= X < +oo ) exp ( -X ) * F(X) dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= N ) W(I) * f ( X(I) )
+//
+//    The integral:
+//
+//      Integral ( 0 <= X < +oo ) F(X) dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= N ) W(I) * exp ( X(I) ) * f ( X(I) )
+//
+//    Mathematica can numerically estimate the abscissas for the
+//    n-th order polynomial to p digits of precision by the command:
+//
+//      NSolve [ LaguerreL[n,x] == 0, x, p ]
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    27 April 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Milton Abramowitz, Irene Stegun,
+//    Handbook of Mathematical Functions,
+//    National Bureau of Standards, 1964,
+//    ISBN: 0-486-61272-4,
+//    LC: QA47.A34.
+//
+//    Vladimir Krylov,
+//    Approximate Calculation of Integrals,
+//    Dover, 2006,
+//    ISBN: 0486445798,
+//    LC: QA311.K713.
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//    Stephen Wolfram,
+//    The Mathematica Book,
+//    Fourth Edition,
+//    Cambridge University Press, 1999,
+//    ISBN: 0-521-64314-7,
+//    LC: QA76.95.W65.
+//
+//    Daniel Zwillinger, editor,
+//    CRC Standard Mathematical Tables and Formulae,
+//    30th Edition,
+//    CRC Press, 1996,
+//    ISBN: 0-8493-2479-3.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    N must be between 1 and 20.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::laguerre_lookup_points ( n, x );
+
+  webbur::laguerre_lookup_weights ( n, w );
+
+  return;
+}
+//****************************************************************************80
+
+void laguerre_lookup_points ( int n, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LAGUERRE_LOOKUP_POINTS looks up abscissas for Laguerre quadrature.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    27 April 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Milton Abramowitz, Irene Stegun,
+//    Handbook of Mathematical Functions,
+//    National Bureau of Standards, 1964,
+//    ISBN: 0-486-61272-4,
+//    LC: QA47.A34.
+//
+//    Vladimir Krylov,
+//    Approximate Calculation of Integrals,
+//    Dover, 2006,
+//    ISBN: 0486445798,
+//    LC: QA311.K713.
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//    Stephen Wolfram,
+//    The Mathematica Book,
+//    Fourth Edition,
+//    Cambridge University Press, 1999,
+//    ISBN: 0-521-64314-7,
+//    LC: QA76.95.W65.
+//
+//    Daniel Zwillinger, editor,
+//    CRC Standard Mathematical Tables and Formulae,
+//    30th Edition,
+//    CRC Press, 1996,
+//    ISBN: 0-8493-2479-3.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    N must be between 1 and 20.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  if ( n == 1 )
+  {
+    x[0] =  1.00000000000000000000000000000E+00;
+  }
+  else if ( n == 2 )
+  {
+    x[0] = 0.585786437626904951198311275790E+00;
+    x[1] = 3.41421356237309504880168872421E+00;
+  }
+  else if ( n == 3 )
+  {
+    x[0] = 0.415774556783479083311533873128E+00;
+    x[1] = 2.29428036027904171982205036136E+00;
+    x[2] = 6.28994508293747919686641576551E+00;
+  }
+  else if ( n == 4 )
+  {
+    x[0] = 0.322547689619392311800361459104E+00;
+    x[1] = 1.74576110115834657568681671252E+00;
+    x[2] = 4.53662029692112798327928538496E+00;
+    x[3] = 9.39507091230113312923353644342E+00;
+  }
+  else if ( n == 5 )
+  {
+    x[0] = 0.263560319718140910203061943361E+00;
+    x[1] = 1.41340305910651679221840798019E+00;
+    x[2] = 3.59642577104072208122318658878E+00;
+    x[3] = 7.08581000585883755692212418111E+00;
+    x[4] = 12.6408008442757826594332193066E+00;
+  }
+  else if ( n == 6 )
+  {
+    x[0] = 0.222846604179260689464354826787E+00;
+    x[1] = 1.18893210167262303074315092194E+00;
+    x[2] = 2.99273632605931407769132528451E+00;
+    x[3] = 5.77514356910451050183983036943E+00;
+    x[4] = 9.83746741838258991771554702994E+00;
+    x[5] = 15.9828739806017017825457915674E+00;
+  }
+  else if ( n == 7 )
+  {
+    x[0] = 0.193043676560362413838247885004E+00;
+    x[1] = 1.02666489533919195034519944317E+00;
+    x[2] = 2.56787674495074620690778622666E+00;
+    x[3] = 4.90035308452648456810171437810E+00;
+    x[4] = 8.18215344456286079108182755123E+00;
+    x[5] = 12.7341802917978137580126424582E+00;
+    x[6] = 19.3957278622625403117125820576E+00;
+  }
+  else if ( n == 8 )
+  {
+    x[0] = 0.170279632305100999788861856608E+00;
+    x[1] = 0.903701776799379912186020223555E+00;
+    x[2] = 2.25108662986613068930711836697E+00;
+    x[3] = 4.26670017028765879364942182690E+00;
+    x[4] = 7.04590540239346569727932548212E+00;
+    x[5] = 10.7585160101809952240599567880E+00;
+    x[6] = 15.7406786412780045780287611584E+00;
+    x[7] = 22.8631317368892641057005342974E+00;
+  }
+  else if ( n == 9 )
+  {
+    x[0] = 0.152322227731808247428107073127E+00;
+    x[1] = 0.807220022742255847741419210952E+00;
+    x[2] = 2.00513515561934712298303324701E+00;
+    x[3] = 3.78347397333123299167540609364E+00;
+    x[4] = 6.20495677787661260697353521006E+00;
+    x[5] = 9.37298525168757620180971073215E+00;
+    x[6] = 13.4662369110920935710978818397E+00;
+    x[7] = 18.8335977889916966141498992996E+00;
+    x[8] = 26.3740718909273767961410072937E+00;
+  }
+  else if ( n == 10 )
+  {
+    x[0] = 0.137793470540492430830772505653E+00;
+    x[1] = 0.729454549503170498160373121676E+00;
+    x[2] = 1.80834290174031604823292007575E+00;
+    x[3] = 3.40143369785489951448253222141E+00;
+    x[4] = 5.55249614006380363241755848687E+00;
+    x[5] = 8.33015274676449670023876719727E+00;
+    x[6] = 11.8437858379000655649185389191E+00;
+    x[7] = 16.2792578313781020995326539358E+00;
+    x[8] = 21.9965858119807619512770901956E+00;
+    x[9] = 29.9206970122738915599087933408E+00;
+  }
+  else if ( n == 11 )
+  {
+    x[0] = 0.125796442187967522675794577516E+00;
+    x[1] = 0.665418255839227841678127839420E+00;
+    x[2] = 1.64715054587216930958700321365E+00;
+    x[3] = 3.09113814303525495330195934259E+00;
+    x[4] = 5.02928440157983321236999508366E+00;
+    x[5] = 7.50988786380661681941099714450E+00;
+    x[6] = 10.6059509995469677805559216457E+00;
+    x[7] = 14.4316137580641855353200450349E+00;
+    x[8] = 19.1788574032146786478174853989E+00;
+    x[9] = 25.2177093396775611040909447797E+00;
+    x[10] = 33.4971928471755372731917259395E+00;
+  }
+  else if ( n == 12 )
+  {
+    x[0] = 0.115722117358020675267196428240E+00;
+    x[1] = 0.611757484515130665391630053042E+00;
+    x[2] = 1.51261026977641878678173792687E+00;
+    x[3] = 2.83375133774350722862747177657E+00;
+    x[4] = 4.59922763941834848460572922485E+00;
+    x[5] = 6.84452545311517734775433041849E+00;
+    x[6] = 9.62131684245686704391238234923E+00;
+    x[7] = 13.0060549933063477203460524294E+00;
+    x[8] = 17.1168551874622557281840528008E+00;
+    x[9] = 22.1510903793970056699218950837E+00;
+    x[10] = 28.4879672509840003125686072325E+00;
+    x[11] = 37.0991210444669203366389142764E+00;
+  }
+  else if ( n == 13 )
+  {
+    x[0] = 0.107142388472252310648493376977E+00;
+    x[1] = 0.566131899040401853406036347177E+00;
+    x[2] = 1.39856433645101971792750259921E+00;
+    x[3] = 2.61659710840641129808364008472E+00;
+    x[4] = 4.23884592901703327937303389926E+00;
+    x[5] = 6.29225627114007378039376523025E+00;
+    x[6] = 8.81500194118697804733348868036E+00;
+    x[7] = 11.8614035888112425762212021880E+00;
+    x[8] = 15.5107620377037527818478532958E+00;
+    x[9] = 19.8846356638802283332036594634E+00;
+    x[10] = 25.1852638646777580842970297823E+00;
+    x[11] = 31.8003863019472683713663283526E+00;
+    x[12] = 40.7230086692655795658979667001E+00;
+  }
+  else if ( n == 14 )
+  {
+    x[0] = 0.0997475070325975745736829452514E+00;
+    x[1] = 0.526857648851902896404583451502E+00;
+    x[2] = 1.30062912125149648170842022116E+00;
+    x[3] = 2.43080107873084463616999751038E+00;
+    x[4] = 3.93210282229321888213134366778E+00;
+    x[5] = 5.82553621830170841933899983898E+00;
+    x[6] = 8.14024014156514503005978046052E+00;
+    x[7] = 10.9164995073660188408130510904E+00;
+    x[8] = 14.2108050111612886831059780825E+00;
+    x[9] = 18.1048922202180984125546272083E+00;
+    x[10] = 22.7233816282696248232280886985E+00;
+    x[11] = 28.2729817232482056954158923218E+00;
+    x[12] = 35.1494436605924265828643121364E+00;
+    x[13] = 44.3660817111174230416312423666E+00;
+  }
+  else if ( n == 15 )
+  {
+    x[0] = 0.0933078120172818047629030383672E+00;
+    x[1] = 0.492691740301883908960101791412E+00;
+    x[2] = 1.21559541207094946372992716488E+00;
+    x[3] = 2.26994952620374320247421741375E+00;
+    x[4] = 3.66762272175143727724905959436E+00;
+    x[5] = 5.42533662741355316534358132596E+00;
+    x[6] = 7.56591622661306786049739555812E+00;
+    x[7] = 10.1202285680191127347927394568E+00;
+    x[8] = 13.1302824821757235640991204176E+00;
+    x[9] = 16.6544077083299578225202408430E+00;
+    x[10] = 20.7764788994487667729157175676E+00;
+    x[11] = 25.6238942267287801445868285977E+00;
+    x[12] = 31.4075191697539385152432196202E+00;
+    x[13] = 38.5306833064860094162515167595E+00;
+    x[14] = 48.0260855726857943465734308508E+00;
+  }
+  else if ( n == 16 )
+  {
+    x[0] = 0.0876494104789278403601980973401E+00;
+    x[1] = 0.462696328915080831880838260664E+00;
+    x[2] = 1.14105777483122685687794501811E+00;
+    x[3] = 2.12928364509838061632615907066E+00;
+    x[4] = 3.43708663389320664523510701675E+00;
+    x[5] = 5.07801861454976791292305830814E+00;
+    x[6] = 7.07033853504823413039598947080E+00;
+    x[7] = 9.43831433639193878394724672911E+00;
+    x[8] = 12.2142233688661587369391246088E+00;
+    x[9] = 15.4415273687816170767647741622E+00;
+    x[10] = 19.1801568567531348546631409497E+00;
+    x[11] = 23.5159056939919085318231872752E+00;
+    x[12] = 28.5787297428821403675206137099E+00;
+    x[13] = 34.5833987022866258145276871778E+00;
+    x[14] = 41.9404526476883326354722330252E+00;
+    x[15] = 51.7011603395433183643426971197E+00;
+  }
+  else if ( n == 17 )
+  {
+    x[0] = 0.0826382147089476690543986151980E+00;
+    x[1] = 0.436150323558710436375959029847E+00;
+    x[2] = 1.07517657751142857732980316755E+00;
+    x[3] = 2.00519353164923224070293371933E+00;
+    x[4] = 3.23425612404744376157380120696E+00;
+    x[5] = 4.77351351370019726480932076262E+00;
+    x[6] = 6.63782920536495266541643929703E+00;
+    x[7] = 8.84668551116980005369470571184E+00;
+    x[8] = 11.4255293193733525869726151469E+00;
+    x[9] = 14.4078230374813180021982874959E+00;
+    x[10] = 17.8382847307011409290658752412E+00;
+    x[11] = 21.7782682577222653261749080522E+00;
+    x[12] = 26.3153178112487997766149598369E+00;
+    x[13] = 31.5817716804567331343908517497E+00;
+    x[14] = 37.7960938374771007286092846663E+00;
+    x[15] = 45.3757165339889661829258363215E+00;
+    x[16] = 55.3897517898396106640900199790E+00;
+  }
+  else if ( n == 18 )
+  {
+    x[0] = 0.0781691666697054712986747615334E+00;
+    x[1] = 0.412490085259129291039101536536E+00;
+    x[2] = 1.01652017962353968919093686187E+00;
+    x[3] = 1.89488850996976091426727831954E+00;
+    x[4] = 3.05435311320265975115241130719E+00;
+    x[5] = 4.50420553888989282633795571455E+00;
+    x[6] = 6.25672507394911145274209116326E+00;
+    x[7] = 8.32782515660563002170470261564E+00;
+    x[8] = 10.7379900477576093352179033397E+00;
+    x[9] = 13.5136562075550898190863812108E+00;
+    x[10] = 16.6893062819301059378183984163E+00;
+    x[11] = 20.3107676262677428561313764553E+00;
+    x[12] = 24.4406813592837027656442257980E+00;
+    x[13] = 29.1682086625796161312980677805E+00;
+    x[14] = 34.6279270656601721454012429438E+00;
+    x[15] = 41.0418167728087581392948614284E+00;
+    x[16] = 48.8339227160865227486586093290E+00;
+    x[17] = 59.0905464359012507037157810181E+00;
+  }
+  else if ( n == 19 )
+  {
+    x[0] = 0.0741587837572050877131369916024E+00;
+    x[1] = 0.391268613319994607337648350299E+00;
+    x[2] = 0.963957343997958058624878377130E+00;
+    x[3] = 1.79617558206832812557725825252E+00;
+    x[4] = 2.89365138187378399116494713237E+00;
+    x[5] = 4.26421553962776647436040018167E+00;
+    x[6] = 5.91814156164404855815360191408E+00;
+    x[7] = 7.86861891533473373105668358176E+00;
+    x[8] = 10.1324237168152659251627415800E+00;
+    x[9] = 12.7308814638423980045092979656E+00;
+    x[10] = 15.6912783398358885454136069861E+00;
+    x[11] = 19.0489932098235501532136429732E+00;
+    x[12] = 22.8508497608294829323930586693E+00;
+    x[13] = 27.1606693274114488789963947149E+00;
+    x[14] = 32.0691222518622423224362865906E+00;
+    x[15] = 37.7129058012196494770647508283E+00;
+    x[16] = 44.3173627958314961196067736013E+00;
+    x[17] = 52.3129024574043831658644222420E+00;
+    x[18] = 62.8024231535003758413504690673E+00;
+  }
+  else if ( n == 20 )
+  {
+    x[0] = 0.0705398896919887533666890045842E+00;
+    x[1] = 0.372126818001611443794241388761E+00;
+    x[2] = 0.916582102483273564667716277074E+00;
+    x[3] = 1.70730653102834388068768966741E+00;
+    x[4] = 2.74919925530943212964503046049E+00;
+    x[5] = 4.04892531385088692237495336913E+00;
+    x[6] = 5.61517497086161651410453988565E+00;
+    x[7] = 7.45901745367106330976886021837E+00;
+    x[8] = 9.59439286958109677247367273428E+00;
+    x[9] = 12.0388025469643163096234092989E+00;
+    x[10] = 14.8142934426307399785126797100E+00;
+    x[11] = 17.9488955205193760173657909926E+00;
+    x[12] = 21.4787882402850109757351703696E+00;
+    x[13] = 25.4517027931869055035186774846E+00;
+    x[14] = 29.9325546317006120067136561352E+00;
+    x[15] = 35.0134342404790000062849359067E+00;
+    x[16] = 40.8330570567285710620295677078E+00;
+    x[17] = 47.6199940473465021399416271529E+00;
+    x[18] = 55.8107957500638988907507734445E+00;
+    x[19] = 66.5244165256157538186403187915E+00;
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "LAGUERRE_LOOKUP_POINTS - Fatal error!\n";
+    std::cerr << "  Illegal value of N = " << n << "\n";
+    std::cerr << "  Legal values are 1 through 20.\n";
+    std::exit ( 1 );
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void laguerre_lookup_weights ( int n, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LAGUERRE_LOOKUP_WEIGHTS looks up weights for Laguerre quadrature.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    27 April 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Milton Abramowitz, Irene Stegun,
+//    Handbook of Mathematical Functions,
+//    National Bureau of Standards, 1964,
+//    ISBN: 0-486-61272-4,
+//    LC: QA47.A34.
+//
+//    Vladimir Krylov,
+//    Approximate Calculation of Integrals,
+//    Dover, 2006,
+//    ISBN: 0486445798,
+//    LC: QA311.K713.
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//    Stephen Wolfram,
+//    The Mathematica Book,
+//    Fourth Edition,
+//    Cambridge University Press, 1999,
+//    ISBN: 0-521-64314-7,
+//    LC: QA76.95.W65.
+//
+//    Daniel Zwillinger, editor,
+//    CRC Standard Mathematical Tables and Formulae,
+//    30th Edition,
+//    CRC Press, 1996,
+//    ISBN: 0-8493-2479-3.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    N must be between 1 and 20.
+//
+//    Output, double W[N], the weights.
+//
+{
+  if ( n == 1 )
+  {
+    w[0] =  1.00000000000000000000000000000E+00;
+  }
+  else if ( n == 2 )
+  {
+    w[0] = 0.85355339059327376220042218105E+00;
+    w[1] = 0.146446609406726237799577818948E+00;
+  }
+  else if ( n == 3 )
+  {
+    w[0] = 0.71109300992917301544959019114E+00;
+    w[1] = 0.27851773356924084880144488846E+00;
+    w[2] = 0.010389256501586135748964920401E+00;
+  }
+  else if ( n == 4 )
+  {
+    w[0] = 0.60315410434163360163596602382E+00;
+    w[1] = 0.35741869243779968664149201746E+00;
+    w[2] = 0.03888790851500538427243816816E+00;
+    w[3] = 0.0005392947055613274501037905676E+00;
+  }
+  else if ( n == 5 )
+  {
+    w[0] = 0.52175561058280865247586092879E+00;
+    w[1] = 0.3986668110831759274541333481E+00;
+    w[2] = 0.0759424496817075953876533114E+00;
+    w[3] = 0.00361175867992204845446126257E+00;
+    w[4] = 0.00002336997238577622789114908455E+00;
+  }
+  else if ( n == 6 )
+  {
+    w[0] = 0.45896467394996359356828487771E+00;
+    w[1] = 0.4170008307721209941133775662E+00;
+    w[2] = 0.1133733820740449757387061851E+00;
+    w[3] = 0.01039919745314907489891330285E+00;
+    w[4] = 0.000261017202814932059479242860E+00;
+    w[5] = 8.98547906429621238825292053E-07;
+  }
+  else if ( n == 7 )
+  {
+    w[0] = 0.40931895170127390213043288002E+00;
+    w[1] = 0.4218312778617197799292810054E+00;
+    w[2] = 0.1471263486575052783953741846E+00;
+    w[3] = 0.0206335144687169398657056150E+00;
+    w[4] = 0.00107401014328074552213195963E+00;
+    w[5] = 0.0000158654643485642012687326223E+00;
+    w[6] = 3.17031547899558056227132215E-08;
+  }
+  else if ( n == 8 )
+  {
+    w[0] = 0.36918858934163752992058283938E+00;
+    w[1] = 0.4187867808143429560769785813E+00;
+    w[2] = 0.175794986637171805699659867E+00;
+    w[3] = 0.033343492261215651522132535E+00;
+    w[4] = 0.0027945362352256725249389241E+00;
+    w[5] = 0.00009076508773358213104238501E+00;
+    w[6] = 8.4857467162725315448680183E-07;
+    w[7] = 1.04800117487151038161508854E-09;
+  }
+  else if ( n == 9 )
+  {
+    w[0] = 0.336126421797962519673467717606E+00;
+    w[1] = 0.411213980423984387309146942793E+00;
+    w[2] = 0.199287525370885580860575607212E+00;
+    w[3] = 0.0474605627656515992621163600479E+00;
+    w[4] = 0.00559962661079458317700419900556E+00;
+    w[5] = 0.000305249767093210566305412824291E+00;
+    w[6] = 6.59212302607535239225572284875E-06;
+    w[7] = 4.1107693303495484429024104033E-08;
+    w[8] = 3.29087403035070757646681380323E-11;
+  }
+  else if ( n == 10 )
+  {
+    w[0] = 0.30844111576502014154747083468E+00;
+    w[1] = 0.4011199291552735515157803099E+00;
+    w[2] = 0.218068287611809421588648523E+00;
+    w[3] = 0.062087456098677747392902129E+00;
+    w[4] = 0.009501516975181100553839072E+00;
+    w[5] = 0.0007530083885875387754559644E+00;
+    w[6] = 0.00002825923349599565567422564E+00;
+    w[7] = 4.249313984962686372586577E-07;
+    w[8] = 1.839564823979630780921535E-09;
+    w[9] = 9.911827219609008558377547E-13;
+  }
+  else if ( n == 11 )
+  {
+    w[0] = 0.28493321289420060505605102472E+00;
+    w[1] = 0.3897208895278493779375535080E+00;
+    w[2] = 0.232781831848991333940223796E+00;
+    w[3] = 0.076564453546196686400854179E+00;
+    w[4] = 0.014393282767350695091863919E+00;
+    w[5] = 0.001518880846484873069847776E+00;
+    w[6] = 0.0000851312243547192259720424E+00;
+    w[7] = 2.29240387957450407857683E-06;
+    w[8] = 2.48635370276779587373391E-08;
+    w[9] = 7.71262693369132047028153E-11;
+    w[10] = 2.883775868323623861597778E-14;
+  }
+  else if ( n == 12 )
+  {
+    w[0] = 0.26473137105544319034973889206E+00;
+    w[1] = 0.3777592758731379820244905567E+00;
+    w[2] = 0.244082011319877564254870818E+00;
+    w[3] = 0.09044922221168093072750549E+00;
+    w[4] = 0.02010238115463409652266129E+00;
+    w[5] = 0.002663973541865315881054158E+00;
+    w[6] = 0.000203231592662999392121433E+00;
+    w[7] = 8.3650558568197987453363E-06;
+    w[8] = 1.66849387654091026116990E-07;
+    w[9] = 1.34239103051500414552392E-09;
+    w[10] = 3.06160163503502078142408E-12;
+    w[11] = 8.148077467426241682473119E-16;
+  }
+  else if ( n == 13 )
+  {
+    w[0] = 0.24718870842996262134624918596E+00;
+    w[1] = 0.3656888229005219453067175309E+00;
+    w[2] = 0.252562420057658502356824289E+00;
+    w[3] = 0.10347075802418370511421863E+00;
+    w[4] = 0.02643275441556161577815877E+00;
+    w[5] = 0.00422039604025475276555209E+00;
+    w[6] = 0.000411881770472734774892473E+00;
+    w[7] = 0.0000235154739815532386882897E+00;
+    w[8] = 7.3173116202490991040105E-07;
+    w[9] = 1.10884162570398067979151E-08;
+    w[10] = 6.7708266922058988406462E-11;
+    w[11] = 1.15997995990507606094507E-13;
+    w[12] = 2.245093203892758415991872E-17;
+  }
+  else if ( n == 14 )
+  {
+    w[0] = 0.23181557714486497784077486110E+00;
+    w[1] = 0.3537846915975431518023313013E+00;
+    w[2] = 0.258734610245428085987320561E+00;
+    w[3] = 0.11548289355692321008730499E+00;
+    w[4] = 0.03319209215933736003874996E+00;
+    w[5] = 0.00619286943700661021678786E+00;
+    w[6] = 0.00073989037786738594242589E+00;
+    w[7] = 0.000054907194668416983785733E+00;
+    w[8] = 2.4095857640853774967578E-06;
+    w[9] = 5.801543981676495180886E-08;
+    w[10] = 6.819314692484974119616E-10;
+    w[11] = 3.2212077518948479398089E-12;
+    w[12] = 4.2213524405165873515980E-15;
+    w[13] = 6.05237502228918880839871E-19;
+  }
+  else if ( n == 15 )
+  {
+    w[0] = 0.21823488594008688985641323645E+00;
+    w[1] = 0.3422101779228833296389489568E+00;
+    w[2] = 0.263027577941680097414812275E+00;
+    w[3] = 0.12642581810593053584303055E+00;
+    w[4] = 0.04020686492100091484158548E+00;
+    w[5] = 0.00856387780361183836391576E+00;
+    w[6] = 0.00121243614721425207621921E+00;
+    w[7] = 0.00011167439234425194199258E+00;
+    w[8] = 6.459926762022900924653E-06;
+    w[9] = 2.226316907096272630332E-07;
+    w[10] = 4.227430384979365007351E-09;
+    w[11] = 3.921897267041089290385E-11;
+    w[12] = 1.4565152640731264063327E-13;
+    w[13] = 1.4830270511133013354616E-16;
+    w[14] = 1.60059490621113323104998E-20;
+  }
+  else if ( n == 16 )
+  {
+    w[0] = 0.20615171495780099433427363674E+00;
+    w[1] = 0.3310578549508841659929830987E+00;
+    w[2] = 0.265795777644214152599502021E+00;
+    w[3] = 0.13629693429637753997554751E+00;
+    w[4] = 0.0473289286941252189780623E+00;
+    w[5] = 0.0112999000803394532312490E+00;
+    w[6] = 0.0018490709435263108642918E+00;
+    w[7] = 0.00020427191530827846012602E+00;
+    w[8] = 0.00001484458687398129877135E+00;
+    w[9] = 6.828319330871199564396E-07;
+    w[10] = 1.881024841079673213882E-08;
+    w[11] = 2.862350242973881619631E-10;
+    w[12] = 2.127079033224102967390E-12;
+    w[13] = 6.297967002517867787174E-15;
+    w[14] = 5.050473700035512820402E-18;
+    w[15] = 4.1614623703728551904265E-22;
+  }
+  else if ( n == 17 )
+  {
+    w[0] = 0.19533220525177083214592729770E+00;
+    w[1] = 0.3203753572745402813366256320E+00;
+    w[2] = 0.267329726357171097238809604E+00;
+    w[3] = 0.14512985435875862540742645E+00;
+    w[4] = 0.0544369432453384577793806E+00;
+    w[5] = 0.0143572977660618672917767E+00;
+    w[6] = 0.0026628247355727725684324E+00;
+    w[7] = 0.0003436797271562999206118E+00;
+    w[8] = 0.00003027551783782870109437E+00;
+    w[9] = 1.768515053231676895381E-06;
+    w[10] = 6.57627288681043332199E-08;
+    w[11] = 1.469730932159546790344E-09;
+    w[12] = 1.81691036255544979555E-11;
+    w[13] = 1.095401388928687402976E-13;
+    w[14] = 2.617373882223370421551E-16;
+    w[15] = 1.6729356931461546908502E-19;
+    w[16] = 1.06562631627404278815253E-23;
+  }
+  else if ( n == 18 )
+  {
+    w[0] = 0.18558860314691880562333775228E+00;
+    w[1] = 0.3101817663702252936495975957E+00;
+    w[2] = 0.267866567148536354820854395E+00;
+    w[3] = 0.15297974746807490655384308E+00;
+    w[4] = 0.0614349178609616527076780E+00;
+    w[5] = 0.0176872130807729312772600E+00;
+    w[6] = 0.0036601797677599177980266E+00;
+    w[7] = 0.0005406227870077353231284E+00;
+    w[8] = 0.0000561696505121423113818E+00;
+    w[9] = 4.01530788370115755859E-06;
+    w[10] = 1.91466985667567497969E-07;
+    w[11] = 5.8360952686315941292E-09;
+    w[12] = 1.07171126695539012773E-10;
+    w[13] = 1.08909871388883385562E-12;
+    w[14] = 5.38666474837830887608E-15;
+    w[15] = 1.049865978035703408779E-17;
+    w[16] = 5.405398451631053643566E-21;
+    w[17] = 2.6916532692010286270838E-25;
+  }
+  else if ( n == 19 )
+  {
+    w[0] = 0.17676847491591250225103547981E+00;
+    w[1] = 0.3004781436072543794821568077E+00;
+    w[2] = 0.267599547038175030772695441E+00;
+    w[3] = 0.15991337213558021678551215E+00;
+    w[4] = 0.0682493799761491134552355E+00;
+    w[5] = 0.0212393076065443249244062E+00;
+    w[6] = 0.0048416273511483959672501E+00;
+    w[7] = 0.0008049127473813667665946E+00;
+    w[8] = 0.0000965247209315350170843E+00;
+    w[9] = 8.20730525805103054409E-06;
+    w[10] = 4.8305667247307725394E-07;
+    w[11] = 1.90499136112328569994E-08;
+    w[12] = 4.8166846309280615577E-10;
+    w[13] = 7.3482588395511443768E-12;
+    w[14] = 6.2022753875726163989E-14;
+    w[15] = 2.54143084301542272372E-16;
+    w[16] = 4.07886129682571235007E-19;
+    w[17] = 1.707750187593837061004E-22;
+    w[18] = 6.715064649908189959990E-27;
+  }
+  else if ( n == 20 )
+  {
+    w[0] = 0.168746801851113862149223899689E+00;
+    w[1] = 0.291254362006068281716795323812E+00;
+    w[2] = 0.266686102867001288549520868998E+00;
+    w[3] = 0.166002453269506840031469127816E+00;
+    w[4] = 0.0748260646687923705400624639615E+00;
+    w[5] = 0.0249644173092832210728227383234E+00;
+    w[6] = 0.00620255084457223684744754785395E+00;
+    w[7] = 0.00114496238647690824203955356969E+00;
+    w[8] = 0.000155741773027811974779809513214E+00;
+    w[9] = 0.0000154014408652249156893806714048E+00;
+    w[10] = 1.08648636651798235147970004439E-06;
+    w[11] = 5.33012090955671475092780244305E-08;
+    w[12] = 1.7579811790505820035778763784E-09;
+    w[13] = 3.72550240251232087262924585338E-11;
+    w[14] = 4.76752925157819052449488071613E-13;
+    w[15] = 3.37284424336243841236506064991E-15;
+    w[16] = 1.15501433950039883096396247181E-17;
+    w[17] = 1.53952214058234355346383319667E-20;
+    w[18] = 5.28644272556915782880273587683E-24;
+    w[19] = 1.65645661249902329590781908529E-28;
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "LAGUERRE_LOOKUP_WEIGHTS - Fatal error!\n";
+    std::cerr << "  Illegal value of N = " << n << "\n";
+    std::cerr << "  Legal values are 1 through 20.\n";
+    std::exit ( 1 );
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void laguerre_ss_compute ( int order, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LAGUERRE_SS_COMPUTE computes a Laguerre quadrature rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      Integral ( 0 <= X < +oo ) exp ( - X ) * F(X) dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= ORDER ) W(I) * F ( X(I) )
+//
+//    The integral:
+//
+//        Integral ( A <= X < +oo ) F(X) dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= ORDER ) W(I) * exp ( X(I) ) * F ( X(I) )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    23 April 2011
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Arthur Stroud, Don Secrest.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//    1 <= ORDER.
+//
+//    Output, double X[ORDER], the abscissas.
+//
+//    Output, double W[ORDER], the weights.
+//
+{
+  double *b;
+  double *c;
+  double cc;
+  double dp2;
+  int i;
+  int j;
+  double p1;
+  double prod;
+  double r1;
+  double x0;
+
+  if ( order < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "LAGUERRE_COMPUTE - Fatal error!\n";
+    std::cerr << "  Illegal value of ORDER = " << order << "\n";
+    std::exit ( 1 );
+  }
+
+  b = new double[order];
+  c = new double[order];
+//
+//  Set the recursion coefficients.
+//
+  for ( i = 0; i < order; i++ )
+  {
+    b[i] = ( double ) ( 2 * i + 1 );
+  }
+
+  for ( i = 0; i < order; i++ )
+  {
+    c[i] = ( double ) ( i * i );
+  }
+  prod = 1.0;
+  for ( i = 1; i < order; i++ )
+  {
+    prod = prod * c[i];
+  }
+  cc = prod;
+
+  for ( i = 0; i < order; i++ )
+  {
+//
+//  Compute an estimate for the root.
+//
+    if ( i == 0 )
+    {
+      x0 =  3.0 / ( 1.0 + 2.4 * ( double ) ( order ) );
+    }
+    else if ( i == 1 )
+    {
+      x0 = x0 + 15.0 / ( 1.0 + 2.5 * ( double ) ( order ) );
+    }
+    else
+    {
+      r1 = ( 1.0 + 2.55 * ( double ) ( i - 1 ) )
+        / ( 1.9 * ( double ) ( i - 1 ) );
+
+      x0 = x0 + r1 * ( x0 - x[i-2] );
+    }
+//
+//  Use iteration to find the root.
+//
+    webbur::laguerre_ss_root ( &x0, order, &dp2, &p1, b, c );
+//
+//  Set the abscissa and weight.
+//
+    x[i] = x0;
+//
+//  Because of the huge values involved, this calculation breaks down
+//  for ORDER = 127.
+//
+//  It was originally w[i] = ( cc / dp2 ) / p1, which breaks down sooner.
+//
+    w[i] = ( 1.0 / dp2 );
+    for ( j = 2; j <= order; j++ )
+    {
+      w[i] = w[i] * ( double ) ( j - 1 );
+    }
+    w[i] = w[i] / p1;
+    for ( j = 2; j <= order; j++ )
+    {
+      w[i] = w[i] * ( double ) ( j - 1 );
+    }
+
+//  w[i] = ( cc / dp2 ) / p1;
+  }
+
+  delete [] b;
+  delete [] c;
+
+  return;
+}
+//****************************************************************************80
+
+void laguerre_ss_recur ( double *p2, double *dp2, double *p1, double x,
+  int order, double b[], double c[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LAGUERRE_SS_RECUR evaluates a Laguerre polynomial.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    23 April 2011
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Arthur Stroud, Don Secrest.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Output, double *P2, the value of L(ORDER)(X).
+//
+//    Output, double *DP2, the value of L'(ORDER)(X).
+//
+//    Output, double *P1, the value of L(ORDER-1)(X).
+//
+//    Input, double X, the point at which polynomials are evaluated.
+//
+//    Input, int ORDER, the order of the polynomial.
+//
+//    Input, double B[ORDER], C[ORDER], the recursion coefficients.
+//
+{
+  double dp0;
+  double dp1;
+  int i;
+  double p0;
+
+  *p1 = 1.0;
+  dp1 = 0.0;
+
+  *p2 = x - 1.0;
+  *dp2 = 1.0;
+
+  for ( i = 1; i < order; i++ )
+  {
+    p0 = *p1;
+    dp0 = dp1;
+
+    *p1 = *p2;
+    dp1 = *dp2;
+
+    *p2  = ( x - b[i] ) * ( *p1 ) - c[i] * p0;
+    *dp2 = ( x - b[i] ) * dp1 + ( *p1 ) - c[i] * dp0;
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void laguerre_ss_root ( double *x, int order, double *dp2, double *p1,
+  double b[], double c[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LAGUERRE_SS_ROOT improves a root of a Laguerre polynomial.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    23 April 2011
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Arthur Stroud, Don Secrest.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input/output, double *X, the approximate root, which
+//    should be improved on output.
+//
+//    Input, int ORDER, the order of the polynomial.
+//
+//    Output, double *DP2, the value of L'(ORDER)(X).
+//
+//    Output, double *P1, the value of L(ORDER-1)(X).
+//
+//    Input, double B[ORDER], C[ORDER], the recursion coefficients.
+//
+{
+  double d;
+  double eps;
+  double p2;
+  int step;
+  int step_max = 10;
+
+  eps = webbur::r8_epsilon ( );
+
+  for ( step = 1; step <= step_max; step++ )
+  {
+    webbur::laguerre_ss_recur ( &p2, dp2, p1, *x, order, b, c );
+
+    d = p2 / ( *dp2 );
+    *x = *x - d;
+
+    if ( webbur::r8_abs ( d ) <= eps * ( webbur::r8_abs ( *x ) + 1.0 ) )
+    {
+      break;
+    }
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void legendre_compute ( int n, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEGENDRE_COMPUTE: Legendre quadrature rule by the Elhay-Kautsky method.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    19 April 2011
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Sylvan Elhay, Jaroslav Kautsky.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Sylvan Elhay, Jaroslav Kautsky,
+//    Algorithm 655: IQPACK, FORTRAN Subroutines for the Weights of
+//    Interpolatory Quadrature,
+//    ACM Transactions on Mathematical Software,
+//    Volume 13, Number 4, December 1987, pages 399-415.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  double *bj;
+  int i;
+  double zemu;
+//
+//  Define the zero-th moment.
+//
+  zemu = 2.0;
+//
+//  Define the Jacobi matrix.
+//
+  bj = new double[n];
+
+  for ( i = 0; i < n; i++ )
+  {
+    bj[i] = ( double ) ( ( i + 1 ) * ( i + 1 ) )
+          / ( double ) ( 4 * ( i + 1 ) * ( i + 1 ) - 1 );
+    bj[i] = std::sqrt ( bj[i] );
+  }
+
+  for ( i = 0; i < n; i++ )
+  {
+    x[i] = 0.0;
+  }
+
+  w[0] = std::sqrt ( zemu );
+
+  for ( i = 1; i < n; i++ )
+  {
+    w[i] = 0.0;
+  }
+//
+//  Diagonalize the Jacobi matrix.
+//
+  webbur::imtqlx ( n, x, bj, w );
+
+  for ( i = 0; i < n; i++ )
+  {
+    w[i] = w[i] * w[i];
+  }
+
+  delete [] bj;
+
+  return;
+}
+//****************************************************************************80
+
+void legendre_compute_np ( int n, int np, double p[], double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEGENDRE_COMPUTE_NP computes a Legendre quadrature rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      Integral ( -1 <= X <= 1 ) F(X) dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= N ) W(I) * F ( X(I) )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Philip Davis, Philip Rabinowitz.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Philip Davis, Philip Rabinowitz,
+//    Methods of Numerical Integration,
+//    Second Edition,
+//    Dover, 2007,
+//    ISBN: 0486453391,
+//    LC: QA299.3.D28.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::legendre_compute ( n, x, w );
+
+  return;
+}
+//****************************************************************************80
+
+void legendre_compute_points ( int n, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEGENDRE_COMPUTE_POINTS computes Legendre quadrature points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  double *w;
+
+  w= new double[n];
+
+  webbur::legendre_compute ( n, x, w );
+
+  delete [] w;
+
+  return;
+}
+//****************************************************************************80
+
+void legendre_compute_points_np ( int n, int np, double p[], double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEGENDRE_COMPUTE_POINTS_NP computes Legendre quadrature points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  webbur::legendre_compute_points ( n, x );
+
+  return;
+}
+//****************************************************************************80
+
+void legendre_compute_weights ( int n, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEGENDRE_COMPUTE_WEIGHTS computes Legendre quadrature weights.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Output, double W[N], the weights.
+//
+{
+  double *x;
+
+  x = new double[n];
+
+  webbur::legendre_compute ( n, x, w );
+
+  delete [] x;
+
+  return;
+}
+//****************************************************************************80
+
+void legendre_compute_weights_np ( int n, int np, double p[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEGENDRE_COMPUTE_WEIGHTS_NP computes Legendre quadrature weights.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double W[N], the weights.
+//
+{
+  webbur::legendre_compute_weights ( n, w );
+
+  return;
+}
+//****************************************************************************80
+
+void legendre_dr_compute ( int n, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEGENDRE_DR_COMPUTE computes a Legendre quadrature rule.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      Integral ( -1 <= X <= 1 ) F(X) dX
+//
+//    The quadrature rule:
+//
+//      Sum ( 1 <= I <= N ) W(I) * F ( X(I) )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 June 2009
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Philip Davis, Philip Rabinowitz.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Philip Davis, Philip Rabinowitz,
+//    Methods of Numerical Integration,
+//    Second Edition,
+//    Dover, 2007,
+//    ISBN: 0486453391,
+//    LC: QA299.3.D28.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    1 <= N.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  double d1;
+  double d2pn;
+  double d3pn;
+  double d4pn;
+  double dp;
+  double dpn;
+  double e1;
+  double fx;
+  double h;
+  int i;
+  int iback;
+  int k;
+  int m;
+  int mp1mi;
+  int ncopy;
+  int nmove;
+  double p;
+  double pi = 3.141592653589793;
+  double pk;
+  double pkm1;
+  double pkp1;
+  double t;
+  double u;
+  double v;
+  double x0;
+  double xtemp;
+
+  if ( n < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "LEGENDRE_DR_COMPUTE - Fatal error!\n";
+    std::cerr << "  Illegal value of N = " << n << "\n";
+    std::exit ( 1 );
+  }
+
+  e1 = ( double ) ( n * ( n + 1 ) );
+
+  m = ( n + 1 ) / 2;
+
+  for ( i = 1; i <= m; i++ )
+  {
+    mp1mi = m + 1 - i;
+
+    t = ( double ) ( 4 * i - 1 ) * pi / ( double ) ( 4 * n + 2 );
+
+    x0 =  std::cos ( t ) * ( 1.0 - ( 1.0 - 1.0 / ( double ) ( n ) )
+      / ( double ) ( 8 * n * n ) );
+
+    pkm1 = 1.0;
+    pk = x0;
+
+    for ( k = 2; k <= n; k++ )
+    {
+      pkp1 = 2.0 * x0 * pk - pkm1 - ( x0 * pk - pkm1 ) / ( double ) ( k );
+      pkm1 = pk;
+      pk = pkp1;
+    }
+
+    d1 = ( double ) ( n ) * ( pkm1 - x0 * pk );
+
+    dpn = d1 / ( 1.0 - x0 * x0 );
+
+    d2pn = ( 2.0 * x0 * dpn - e1 * pk ) / ( 1.0 - x0 * x0 );
+
+    d3pn = ( 4.0 * x0 * d2pn + ( 2.0 - e1 ) * dpn ) / ( 1.0 - x0 * x0 );
+
+    d4pn = ( 6.0 * x0 * d3pn + ( 6.0 - e1 ) * d2pn ) / ( 1.0 - x0 * x0 );
+
+    u = pk / dpn;
+    v = d2pn / dpn;
+//
+//  Initial approximation H:
+//
+    h = -u * ( 1.0 + 0.5 * u * ( v + u * ( v * v - d3pn / ( 3.0 * dpn ) ) ) );
+//
+//  Refine H using one step of Newton's method:
+//
+    p = pk + h * ( dpn + 0.5 * h * ( d2pn + h / 3.0
+      * ( d3pn + 0.25 * h * d4pn ) ) );
+
+    dp = dpn + h * ( d2pn + 0.5 * h * ( d3pn + h * d4pn / 3.0 ) );
+
+    h = h - p / dp;
+
+    xtemp = x0 + h;
+
+    x[mp1mi-1] = xtemp;
+
+    fx = d1 - h * e1 * ( pk + 0.5 * h * ( dpn + h / 3.0
+      * ( d2pn + 0.25 * h * ( d3pn + 0.2 * h * d4pn ) ) ) );
+
+    w[mp1mi-1] = 2.0 * ( 1.0 - xtemp * xtemp ) / ( fx * fx );
+  }
+
+  if ( ( n % 2 ) == 1 )
+  {
+    x[0] = 0.0;
+  }
+//
+//  Shift the data up.
+//
+  nmove = ( n + 1 ) / 2;
+  ncopy = n - nmove;
+
+  for ( i = 1; i <= nmove; i++ )
+  {
+    iback = n + 1 - i;
+    x[iback-1] = x[iback-ncopy-1];
+    w[iback-1] = w[iback-ncopy-1];
+  }
+//
+//  Reflect values for the negative abscissas.
+//
+  for ( i = 1; i <= n - nmove; i++ )
+  {
+    x[i-1] = - x[n-i];
+    w[i-1] = w[n-i];
+  }
+
+  return;
+}
+//****************************************************************************80
+
+double legendre_integral ( int expon )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEGENDRE_INTEGRAL evaluates a monomial Legendre integral.
+//
+//  Discussion:
+//
+//    The integral:
+//
+//      integral ( -1 <= x <= +1 ) x^n dx
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    19 February 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int EXPON, the exponent.
+//
+//    Output, double LEGENDRE_INTEGRAL, the value of the exact integral.
+//
+{
+  double exact;
+//
+//  Get the exact value of the integral.
+//
+  if ( ( expon % 2 ) == 0 )
+  {
+    exact = 2.0 / ( double ) ( expon + 1 );
+  }
+  else
+  {
+    exact = 0.0;
+  }
+
+  return exact;
+}
+//****************************************************************************80
+
+void legendre_lookup ( int n, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEGENDRE_LOOKUP looks up abscissas and weights for Gauss-Legendre quadrature.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    27 April 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Milton Abramowitz, Irene Stegun,
+//    Handbook of Mathematical Functions,
+//    National Bureau of Standards, 1964,
+//    ISBN: 0-486-61272-4,
+//    LC: QA47.A34.
+//
+//    Vladimir Krylov,
+//    Approximate Calculation of Integrals,
+//    Dover, 2006,
+//    ISBN: 0486445798.
+//    LC: QA311.K713.
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//    Stephen Wolfram,
+//    The Mathematica Book,
+//    Fourth Edition,
+//    Cambridge University Press, 1999,
+//    ISBN: 0-521-64314-7,
+//    LC: QA76.95.W65.
+//
+//    Daniel Zwillinger, editor,
+//    CRC Standard Mathematical Tables and Formulae,
+//    30th Edition,
+//    CRC Press, 1996,
+//    ISBN: 0-8493-2479-3,
+//    LC: QA47.M315.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    N must be between 1 and 33.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the abscissas.
+//
+{
+  webbur::legendre_lookup_points ( n, x );
+
+  webbur::legendre_lookup_weights ( n, w );
+
+  return;
+}
+//****************************************************************************80
+
+void legendre_lookup_points ( int n, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEGENDRE_LOOKUP_POINTS looks up abscissas for Gauss-Legendre quadrature.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    27 April 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Milton Abramowitz, Irene Stegun,
+//    Handbook of Mathematical Functions,
+//    National Bureau of Standards, 1964,
+//    ISBN: 0-486-61272-4,
+//    LC: QA47.A34.
+//
+//    Vladimir Krylov,
+//    Approximate Calculation of Integrals,
+//    Dover, 2006,
+//    ISBN: 0486445798.
+//    LC: QA311.K713.
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//    Stephen Wolfram,
+//    The Mathematica Book,
+//    Fourth Edition,
+//    Cambridge University Press, 1999,
+//    ISBN: 0-521-64314-7,
+//    LC: QA76.95.W65.
+//
+//    Daniel Zwillinger, editor,
+//    CRC Standard Mathematical Tables and Formulae,
+//    30th Edition,
+//    CRC Press, 1996,
+//    ISBN: 0-8493-2479-3,
+//    LC: QA47.M315.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    N must be between 1 and 33.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  if ( n == 1 )
+  {
+    x[0] = 0.000000000000000000000000000000;
+  }
+  else if ( n == 2 )
+  {
+    x[0] = -0.577350269189625764509148780502;
+    x[1] = 0.577350269189625764509148780502;
+  }
+  else if ( n == 3 )
+  {
+    x[0] = -0.774596669241483377035853079956;
+    x[1] = 0.000000000000000000000000000000;
+    x[2] = 0.774596669241483377035853079956;
+  }
+  else if ( n == 4 )
+  {
+    x[0] = -0.861136311594052575223946488893;
+    x[1] = -0.339981043584856264802665759103;
+    x[2] = 0.339981043584856264802665759103;
+    x[3] = 0.861136311594052575223946488893;
+  }
+  else if ( n == 5 )
+  {
+    x[0] = -0.906179845938663992797626878299;
+    x[1] = -0.538469310105683091036314420700;
+    x[2] = 0.000000000000000000000000000000;
+    x[3] = 0.538469310105683091036314420700;
+    x[4] = 0.906179845938663992797626878299;
+  }
+  else if ( n == 6 )
+  {
+    x[0] = -0.932469514203152027812301554494;
+    x[1] = -0.661209386466264513661399595020;
+    x[2] = -0.238619186083196908630501721681;
+    x[3] = 0.238619186083196908630501721681;
+    x[4] = 0.661209386466264513661399595020;
+    x[5] = 0.932469514203152027812301554494;
+  }
+  else if ( n == 7 )
+  {
+    x[0] = -0.949107912342758524526189684048;
+    x[1] = -0.741531185599394439863864773281;
+    x[2] = -0.405845151377397166906606412077;
+    x[3] = 0.000000000000000000000000000000;
+    x[4] = 0.405845151377397166906606412077;
+    x[5] = 0.741531185599394439863864773281;
+    x[6] = 0.949107912342758524526189684048;
+  }
+  else if ( n == 8 )
+  {
+    x[0] = -0.960289856497536231683560868569;
+    x[1] = -0.796666477413626739591553936476;
+    x[2] = -0.525532409916328985817739049189;
+    x[3] = -0.183434642495649804939476142360;
+    x[4] = 0.183434642495649804939476142360;
+    x[5] = 0.525532409916328985817739049189;
+    x[6] = 0.796666477413626739591553936476;
+    x[7] = 0.960289856497536231683560868569;
+  }
+  else if ( n == 9 )
+  {
+    x[0] = -0.968160239507626089835576203;
+    x[1] = -0.836031107326635794299429788;
+    x[2] = -0.613371432700590397308702039;
+    x[3] = -0.324253423403808929038538015;
+    x[4] = 0.000000000000000000000000000;
+    x[5] = 0.324253423403808929038538015;
+    x[6] = 0.613371432700590397308702039;
+    x[7] = 0.836031107326635794299429788;
+    x[8] = 0.968160239507626089835576203;
+  }
+  else if ( n == 10 )
+  {
+    x[0] = -0.973906528517171720077964012;
+    x[1] = -0.865063366688984510732096688;
+    x[2] = -0.679409568299024406234327365;
+    x[3] = -0.433395394129247190799265943;
+    x[4] = -0.148874338981631210884826001;
+    x[5] = 0.148874338981631210884826001;
+    x[6] = 0.433395394129247190799265943;
+    x[7] = 0.679409568299024406234327365;
+    x[8] = 0.865063366688984510732096688;
+    x[9] = 0.973906528517171720077964012;
+  }
+  else if ( n == 11 )
+  {
+    x[0] = -0.978228658146056992803938001;
+    x[1] = -0.887062599768095299075157769;
+    x[2] = -0.730152005574049324093416252;
+    x[3] = -0.519096129206811815925725669;
+    x[4] = -0.269543155952344972331531985;
+    x[5] = 0.000000000000000000000000000;
+    x[6] = 0.269543155952344972331531985;
+    x[7] = 0.519096129206811815925725669;
+    x[8] = 0.730152005574049324093416252;
+    x[9] = 0.887062599768095299075157769;
+    x[10] = 0.978228658146056992803938001;
+  }
+  else if ( n == 12 )
+  {
+    x[0] = -0.981560634246719250690549090;
+    x[1] = -0.904117256370474856678465866;
+    x[2] = -0.769902674194304687036893833;
+    x[3] = -0.587317954286617447296702419;
+    x[4] = -0.367831498998180193752691537;
+    x[5] = -0.125233408511468915472441369;
+    x[6] = 0.125233408511468915472441369;
+    x[7] = 0.367831498998180193752691537;
+    x[8] = 0.587317954286617447296702419;
+    x[9] = 0.769902674194304687036893833;
+    x[10] = 0.904117256370474856678465866;
+    x[11] = 0.981560634246719250690549090;
+  }
+  else if ( n == 13 )
+  {
+    x[0] = -0.984183054718588149472829449;
+    x[1] = -0.917598399222977965206547837;
+    x[2] = -0.801578090733309912794206490;
+    x[3] = -0.642349339440340220643984607;
+    x[4] = -0.448492751036446852877912852;
+    x[5] = -0.230458315955134794065528121;
+    x[6] = 0.000000000000000000000000000;
+    x[7] = 0.230458315955134794065528121;
+    x[8] = 0.448492751036446852877912852;
+    x[9] = 0.642349339440340220643984607;
+    x[10] = 0.80157809073330991279420649;
+    x[11] = 0.91759839922297796520654784;
+    x[12] = 0.98418305471858814947282945;
+  }
+  else if ( n == 14 )
+  {
+    x[0] = -0.986283808696812338841597267;
+    x[1] = -0.928434883663573517336391139;
+    x[2] = -0.827201315069764993189794743;
+    x[3] = -0.687292904811685470148019803;
+    x[4] = -0.515248636358154091965290719;
+    x[5] = -0.319112368927889760435671824;
+    x[6] = -0.108054948707343662066244650;
+    x[7] = 0.108054948707343662066244650;
+    x[8] = 0.31911236892788976043567182;
+    x[9] = 0.51524863635815409196529072;
+    x[10] = 0.68729290481168547014801980;
+    x[11] = 0.82720131506976499318979474;
+    x[12] = 0.92843488366357351733639114;
+    x[13] = 0.98628380869681233884159727;
+  }
+  else if ( n == 15 )
+  {
+    x[0] = -0.987992518020485428489565719;
+    x[1] = -0.937273392400705904307758948;
+    x[2] = -0.848206583410427216200648321;
+    x[3] = -0.724417731360170047416186055;
+    x[4] = -0.570972172608538847537226737;
+    x[5] = -0.394151347077563369897207371;
+    x[6] = -0.201194093997434522300628303;
+    x[7] = 0.00000000000000000000000000;
+    x[8] = 0.20119409399743452230062830;
+    x[9] = 0.39415134707756336989720737;
+    x[10] = 0.57097217260853884753722674;
+    x[11] = 0.72441773136017004741618605;
+    x[12] = 0.84820658341042721620064832;
+    x[13] = 0.93727339240070590430775895;
+    x[14] = 0.98799251802048542848956572;
+  }
+  else if ( n == 16 )
+  {
+    x[0] = -0.989400934991649932596154173;
+    x[1] = -0.944575023073232576077988416;
+    x[2] = -0.865631202387831743880467898;
+    x[3] = -0.755404408355003033895101195;
+    x[4] = -0.617876244402643748446671764;
+    x[5] = -0.458016777657227386342419443;
+    x[6] = -0.281603550779258913230460501;
+    x[7] = -0.09501250983763744018531934;
+    x[8] = 0.09501250983763744018531934;
+    x[9] = 0.28160355077925891323046050;
+    x[10] = 0.45801677765722738634241944;
+    x[11] = 0.61787624440264374844667176;
+    x[12] = 0.75540440835500303389510119;
+    x[13] = 0.86563120238783174388046790;
+    x[14] = 0.94457502307323257607798842;
+    x[15] = 0.98940093499164993259615417;
+  }
+  else if ( n == 17 )
+  {
+    x[0] = -0.990575475314417335675434020;
+    x[1] = -0.950675521768767761222716958;
+    x[2] = -0.880239153726985902122955694;
+    x[3] = -0.781514003896801406925230056;
+    x[4] = -0.657671159216690765850302217;
+    x[5] = -0.512690537086476967886246569;
+    x[6] = -0.35123176345387631529718552;
+    x[7] = -0.17848418149584785585067749;
+    x[8] = 0.00000000000000000000000000;
+    x[9] = 0.17848418149584785585067749;
+    x[10] = 0.35123176345387631529718552;
+    x[11] = 0.51269053708647696788624657;
+    x[12] = 0.65767115921669076585030222;
+    x[13] = 0.78151400389680140692523006;
+    x[14] = 0.88023915372698590212295569;
+    x[15] = 0.95067552176876776122271696;
+    x[16] = 0.99057547531441733567543402;
+  }
+  else if ( n == 18 )
+  {
+    x[0] = -0.991565168420930946730016005;
+    x[1] = -0.955823949571397755181195893;
+    x[2] = -0.892602466497555739206060591;
+    x[3] = -0.803704958972523115682417455;
+    x[4] = -0.691687043060353207874891081;
+    x[5] = -0.55977083107394753460787155;
+    x[6] = -0.41175116146284264603593179;
+    x[7] = -0.25188622569150550958897285;
+    x[8] = -0.08477501304173530124226185;
+    x[9] = 0.08477501304173530124226185;
+    x[10] = 0.25188622569150550958897285;
+    x[11] = 0.41175116146284264603593179;
+    x[12] = 0.55977083107394753460787155;
+    x[13] = 0.69168704306035320787489108;
+    x[14] = 0.80370495897252311568241746;
+    x[15] = 0.89260246649755573920606059;
+    x[16] = 0.95582394957139775518119589;
+    x[17] = 0.99156516842093094673001600;
+  }
+  else if ( n == 19 )
+  {
+    x[0] = -0.992406843843584403189017670;
+    x[1] = -0.960208152134830030852778841;
+    x[2] = -0.903155903614817901642660929;
+    x[3] = -0.822714656537142824978922487;
+    x[4] = -0.72096617733522937861709586;
+    x[5] = -0.60054530466168102346963816;
+    x[6] = -0.46457074137596094571726715;
+    x[7] = -0.31656409996362983199011733;
+    x[8] = -0.16035864564022537586809612;
+    x[9] = 0.00000000000000000000000000;
+    x[10] = 0.16035864564022537586809612;
+    x[11] = 0.31656409996362983199011733;
+    x[12] = 0.46457074137596094571726715;
+    x[13] = 0.60054530466168102346963816;
+    x[14] = 0.72096617733522937861709586;
+    x[15] = 0.82271465653714282497892249;
+    x[16] = 0.90315590361481790164266093;
+    x[17] = 0.96020815213483003085277884;
+    x[18] = 0.99240684384358440318901767;
+  }
+  else if ( n == 20 )
+  {
+    x[0] = -0.993128599185094924786122388;
+    x[1] = -0.963971927277913791267666131;
+    x[2] = -0.912234428251325905867752441;
+    x[3] = -0.83911697182221882339452906;
+    x[4] = -0.74633190646015079261430507;
+    x[5] = -0.63605368072651502545283670;
+    x[6] = -0.51086700195082709800436405;
+    x[7] = -0.37370608871541956067254818;
+    x[8] = -0.22778585114164507808049620;
+    x[9] = -0.07652652113349733375464041;
+    x[10] = 0.07652652113349733375464041;
+    x[11] = 0.22778585114164507808049620;
+    x[12] = 0.37370608871541956067254818;
+    x[13] = 0.51086700195082709800436405;
+    x[14] = 0.63605368072651502545283670;
+    x[15] = 0.74633190646015079261430507;
+    x[16] = 0.83911697182221882339452906;
+    x[17] = 0.91223442825132590586775244;
+    x[18] = 0.96397192727791379126766613;
+    x[19] = 0.99312859918509492478612239;
+  }
+  else if ( n == 21 )
+  {
+    x[ 0] =  -0.99375217062038950026024204;
+    x[ 1] =  -0.96722683856630629431662221;
+    x[ 2] =  -0.92009933415040082879018713;
+    x[ 3] =  -0.85336336458331728364725064;
+    x[ 4] =  -0.76843996347567790861587785;
+    x[ 5] =  -0.66713880419741231930596667;
+    x[ 6] =  -0.55161883588721980705901880;
+    x[ 7] =  -0.42434212020743878357366889;
+    x[ 8] =  -0.28802131680240109660079252;
+    x[9] =  -0.14556185416089509093703098;
+    x[10] =   0.00000000000000000000000000;
+    x[11] =  +0.14556185416089509093703098;
+    x[12] =  +0.28802131680240109660079252;
+    x[13] =  +0.42434212020743878357366889;
+    x[14] =  +0.55161883588721980705901880;
+    x[15] =  +0.66713880419741231930596667;
+    x[16] =  +0.76843996347567790861587785;
+    x[17] =  +0.85336336458331728364725064;
+    x[18] =  +0.92009933415040082879018713;
+    x[19] =  +0.96722683856630629431662221;
+    x[20] =  +0.99375217062038950026024204;
+  }
+  else if ( n == 22 )
+  {
+    x[0] = -0.99429458548239929207303142;
+    x[1] = -0.97006049783542872712395099;
+    x[2] = -0.92695677218717400052069294;
+    x[3] = -0.86581257772030013653642564;
+    x[4] = -0.78781680597920816200427796;
+    x[5] = -0.69448726318668278005068984;
+    x[6] = -0.58764040350691159295887693;
+    x[7] = -0.46935583798675702640633071;
+    x[8] = -0.34193582089208422515814742;
+    x[9] = -0.20786042668822128547884653;
+    x[10] = -0.06973927331972222121384180;
+    x[11] = 0.06973927331972222121384180;
+    x[12] = 0.20786042668822128547884653;
+    x[13] = 0.34193582089208422515814742;
+    x[14] = 0.46935583798675702640633071;
+    x[15] = 0.58764040350691159295887693;
+    x[16] = 0.69448726318668278005068984;
+    x[17] = 0.78781680597920816200427796;
+    x[18] = 0.86581257772030013653642564;
+    x[19] = 0.92695677218717400052069294;
+    x[20] = 0.97006049783542872712395099;
+    x[21] = 0.99429458548239929207303142;
+  }
+  else if ( n == 23 )
+  {
+    x[0] = -0.99476933499755212352392572;
+    x[1] = -0.97254247121811523195602408;
+    x[2] = -0.93297108682601610234919699;
+    x[3] = -0.87675235827044166737815689;
+    x[4] = -0.80488840161883989215111841;
+    x[5] = -0.71866136313195019446162448;
+    x[6] = -0.61960987576364615638509731;
+    x[7] = -0.50950147784600754968979305;
+    x[8] = -0.39030103803029083142148887;
+    x[9] = -0.26413568097034493053386954;
+    x[10] = -0.13325682429846611093174268;
+    x[11] = 0.00000000000000000000000000;
+    x[12] = 0.13325682429846611093174268;
+    x[13] = 0.26413568097034493053386954;
+    x[14] = 0.39030103803029083142148887;
+    x[15] = 0.50950147784600754968979305;
+    x[16] = 0.61960987576364615638509731;
+    x[17] = 0.71866136313195019446162448;
+    x[18] = 0.80488840161883989215111841;
+    x[19] = 0.87675235827044166737815689;
+    x[20] = 0.93297108682601610234919699;
+    x[21] = 0.97254247121811523195602408;
+    x[22] = 0.99476933499755212352392572;
+  }
+  else if ( n == 24 )
+  {
+    x[0] = -0.99518721999702136017999741;
+    x[1] = -0.97472855597130949819839199;
+    x[2] = -0.93827455200273275852364900;
+    x[3] = -0.88641552700440103421315434;
+    x[4] = -0.82000198597390292195394987;
+    x[5] = -0.74012419157855436424382810;
+    x[6] = -0.64809365193697556925249579;
+    x[7] = -0.54542147138883953565837562;
+    x[8] = -0.43379350762604513848708423;
+    x[9] = -0.31504267969616337438679329;
+    x[10] = -0.19111886747361630915863982;
+    x[11] = -0.06405689286260562608504308;
+    x[12] = 0.06405689286260562608504308;
+    x[13] = 0.19111886747361630915863982;
+    x[14] = 0.31504267969616337438679329;
+    x[15] = 0.43379350762604513848708423;
+    x[16] = 0.54542147138883953565837562;
+    x[17] = 0.64809365193697556925249579;
+    x[18] = 0.74012419157855436424382810;
+    x[19] = 0.82000198597390292195394987;
+    x[20] = 0.88641552700440103421315434;
+    x[21] = 0.93827455200273275852364900;
+    x[22] = 0.97472855597130949819839199;
+    x[23] = 0.99518721999702136017999741;
+  }
+  else if ( n == 25 )
+  {
+    x[0] = -0.99555696979049809790878495;
+    x[1] = -0.97666392145951751149831539;
+    x[2] = -0.94297457122897433941401117;
+    x[3] = -0.89499199787827536885104201;
+    x[4] = -0.83344262876083400142102111;
+    x[5] = -0.75925926303735763057728287;
+    x[6] = -0.67356636847346836448512063;
+    x[7] = -0.57766293024122296772368984;
+    x[8] = -0.47300273144571496052218212;
+    x[9] = -0.36117230580938783773582173;
+    x[10] = -0.24386688372098843204519036;
+    x[11] = -0.12286469261071039638735982;
+    x[12] = 0.00000000000000000000000000;
+    x[13] = 0.12286469261071039638735982;
+    x[14] = 0.24386688372098843204519036;
+    x[15] = 0.36117230580938783773582173;
+    x[16] = 0.47300273144571496052218212;
+    x[17] = 0.57766293024122296772368984;
+    x[18] = 0.67356636847346836448512063;
+    x[19] = 0.75925926303735763057728287;
+    x[20] = 0.83344262876083400142102111;
+    x[21] = 0.89499199787827536885104201;
+    x[22] = 0.94297457122897433941401117;
+    x[23] = 0.97666392145951751149831539;
+    x[24] = 0.99555696979049809790878495;
+  }
+  else if ( n == 26 )
+  {
+    x[0] = -0.99588570114561692900321696;
+    x[1] = -0.97838544595647099110058035;
+    x[2] = -0.94715906666171425013591528;
+    x[3] = -0.90263786198430707421766560;
+    x[4] = -0.84544594278849801879750706;
+    x[5] = -0.77638594882067885619296725;
+    x[6] = -0.69642726041995726486381391;
+    x[7] = -0.60669229301761806323197875;
+    x[8] = -0.50844071482450571769570306;
+    x[9] = -0.40305175512348630648107738;
+    x[10] = -0.29200483948595689514283538;
+    x[11] = -0.17685882035689018396905775;
+    x[12] = -0.05923009342931320709371858;
+    x[13] = 0.05923009342931320709371858;
+    x[14] = 0.17685882035689018396905775;
+    x[15] = 0.29200483948595689514283538;
+    x[16] = 0.40305175512348630648107738;
+    x[17] = 0.50844071482450571769570306;
+    x[18] = 0.60669229301761806323197875;
+    x[19] = 0.69642726041995726486381391;
+    x[20] = 0.77638594882067885619296725;
+    x[21] = 0.84544594278849801879750706;
+    x[22] = 0.90263786198430707421766560;
+    x[23] = 0.94715906666171425013591528;
+    x[24] = 0.97838544595647099110058035;
+    x[25] = 0.99588570114561692900321696;
+  }
+  else if ( n == 27 )
+  {
+    x[0] = -0.99617926288898856693888721;
+    x[1] = -0.97992347596150122285587336;
+    x[2] = -0.95090055781470500685190803;
+    x[3] = -0.90948232067749110430064502;
+    x[4] = -0.85620790801829449030273722;
+    x[5] = -0.79177163907050822714439734;
+    x[6] = -0.71701347373942369929481621;
+    x[7] = -0.63290797194649514092773464;
+    x[8] = -0.54055156457945689490030094;
+    x[9] = -0.44114825175002688058597416;
+    x[10] = -0.33599390363850889973031903;
+    x[11] = -0.22645936543953685885723911;
+    x[12] = -0.11397258560952996693289498;
+    x[13] = 0.00000000000000000000000000;
+    x[14] = 0.11397258560952996693289498;
+    x[15] = 0.22645936543953685885723911;
+    x[16] = 0.33599390363850889973031903;
+    x[17] = 0.44114825175002688058597416;
+    x[18] = 0.54055156457945689490030094;
+    x[19] = 0.63290797194649514092773464;
+    x[20] = 0.71701347373942369929481621;
+    x[21] = 0.79177163907050822714439734;
+    x[22] = 0.85620790801829449030273722;
+    x[23] = 0.90948232067749110430064502;
+    x[24] = 0.95090055781470500685190803;
+    x[25] = 0.97992347596150122285587336;
+    x[26] = 0.99617926288898856693888721;
+  }
+  else if ( n == 28 )
+  {
+    x[0] = -0.99644249757395444995043639;
+    x[1] = -0.98130316537087275369455995;
+    x[2] = -0.95425928062893819725410184;
+    x[3] = -0.91563302639213207386968942;
+    x[4] = -0.86589252257439504894225457;
+    x[5] = -0.80564137091717917144788596;
+    x[6] = -0.73561087801363177202814451;
+    x[7] = -0.65665109403886496121989818;
+    x[8] = -0.56972047181140171930800328;
+    x[9] = -0.47587422495511826103441185;
+    x[10] = -0.37625151608907871022135721;
+    x[11] = -0.27206162763517807767682636;
+    x[12] = -0.16456928213338077128147178;
+    x[13] = -0.05507928988403427042651653;
+    x[14] = 0.05507928988403427042651653;
+    x[15] = 0.16456928213338077128147178;
+    x[16] = 0.27206162763517807767682636;
+    x[17] = 0.37625151608907871022135721;
+    x[18] = 0.47587422495511826103441185;
+    x[19] = 0.56972047181140171930800328;
+    x[20] = 0.65665109403886496121989818;
+    x[21] = 0.73561087801363177202814451;
+    x[22] = 0.80564137091717917144788596;
+    x[23] = 0.86589252257439504894225457;
+    x[24] = 0.91563302639213207386968942;
+    x[25] = 0.95425928062893819725410184;
+    x[26] = 0.98130316537087275369455995;
+    x[27] = 0.99644249757395444995043639;
+  }
+  else if ( n == 29 )
+  {
+    x[0] = -0.99667944226059658616319153;
+    x[1] = -0.98254550526141317487092602;
+    x[2] = -0.95728559577808772579820804;
+    x[3] = -0.92118023295305878509375344;
+    x[4] = -0.87463780492010279041779342;
+    x[5] = -0.81818548761525244498957221;
+    x[6] = -0.75246285173447713391261008;
+    x[7] = -0.67821453760268651515618501;
+    x[8] = -0.59628179713822782037958621;
+    x[9] = -0.50759295512422764210262792;
+    x[10] = -0.41315288817400866389070659;
+    x[11] = -0.31403163786763993494819592;
+    x[12] = -0.21135228616600107450637573;
+    x[13] = -0.10627823013267923017098239;
+    x[14] = 0.00000000000000000000000000;
+    x[15] = 0.10627823013267923017098239;
+    x[16] = 0.21135228616600107450637573;
+    x[17] = 0.31403163786763993494819592;
+    x[18] = 0.41315288817400866389070659;
+    x[19] = 0.50759295512422764210262792;
+    x[20] = 0.59628179713822782037958621;
+    x[21] = 0.67821453760268651515618501;
+    x[22] = 0.75246285173447713391261008;
+    x[23] = 0.81818548761525244498957221;
+    x[24] = 0.87463780492010279041779342;
+    x[25] = 0.92118023295305878509375344;
+    x[26] = 0.95728559577808772579820804;
+    x[27] = 0.98254550526141317487092602;
+    x[28] = 0.99667944226059658616319153;
+  }
+  else if ( n == 30 )
+  {
+    x[0] = -0.99689348407464954027163005;
+    x[1] = -0.98366812327974720997003258;
+    x[2] = -0.96002186496830751221687103;
+    x[3] = -0.92620004742927432587932428;
+    x[4] = -0.88256053579205268154311646;
+    x[5] = -0.82956576238276839744289812;
+    x[6] = -0.76777743210482619491797734;
+    x[7] = -0.69785049479331579693229239;
+    x[8] = -0.62052618298924286114047756;
+    x[9] = -0.53662414814201989926416979;
+    x[10] = -0.44703376953808917678060990;
+    x[11] = -0.35270472553087811347103721;
+    x[12] = -0.25463692616788984643980513;
+    x[13] = -0.15386991360858354696379467;
+    x[14] = -0.05147184255531769583302521;
+    x[15] = 0.05147184255531769583302521;
+    x[16] = 0.15386991360858354696379467;
+    x[17] = 0.25463692616788984643980513;
+    x[18] = 0.35270472553087811347103721;
+    x[19] = 0.44703376953808917678060990;
+    x[20] = 0.53662414814201989926416979;
+    x[21] = 0.62052618298924286114047756;
+    x[22] = 0.69785049479331579693229239;
+    x[23] = 0.76777743210482619491797734;
+    x[24] = 0.82956576238276839744289812;
+    x[25] = 0.88256053579205268154311646;
+    x[26] = 0.92620004742927432587932428;
+    x[27] = 0.96002186496830751221687103;
+    x[28] = 0.98366812327974720997003258;
+    x[29] = 0.99689348407464954027163005;
+  }
+  else if ( n == 31 )
+  {
+    x[0] = -0.99708748181947707405562655;
+    x[1] = -0.98468590966515248400246517;
+    x[2] = -0.96250392509294966178905240;
+    x[3] = -0.93075699789664816495694576;
+    x[4] = -0.88976002994827104337419201;
+    x[5] = -0.83992032014626734008690454;
+    x[6] = -0.78173314841662494040636002;
+    x[7] = -0.71577678458685328390597087;
+    x[8] = -0.64270672292426034618441820;
+    x[9] = -0.56324916140714926272094492;
+    x[10] = -0.47819378204490248044059404;
+    x[11] = -0.38838590160823294306135146;
+    x[12] = -0.29471806998170161661790390;
+    x[13] = -0.19812119933557062877241300;
+    x[14] = -0.09955531215234152032517479;
+    x[15] = 0.00000000000000000000000000;
+    x[16] = 0.09955531215234152032517479;
+    x[17] = 0.19812119933557062877241300;
+    x[18] = 0.29471806998170161661790390;
+    x[19] = 0.38838590160823294306135146;
+    x[20] = 0.47819378204490248044059404;
+    x[21] = 0.56324916140714926272094492;
+    x[22] = 0.64270672292426034618441820;
+    x[23] = 0.71577678458685328390597087;
+    x[24] = 0.78173314841662494040636002;
+    x[25] = 0.83992032014626734008690454;
+    x[26] = 0.88976002994827104337419201;
+    x[27] = 0.93075699789664816495694576;
+    x[28] = 0.96250392509294966178905240;
+    x[29] = 0.98468590966515248400246517;
+    x[30] = 0.99708748181947707405562655;
+  }
+  else if ( n == 32 )
+  {
+    x[0] = -0.99726386184948156354498113;
+    x[1] = -0.98561151154526833540017504;
+    x[2] = -0.96476225558750643077381193;
+    x[3] = -0.93490607593773968917091913;
+    x[4] = -0.89632115576605212396530724;
+    x[5] = -0.84936761373256997013369300;
+    x[6] = -0.79448379596794240696309730;
+    x[7] = -0.73218211874028968038742667;
+    x[8] = -0.66304426693021520097511517;
+    x[9] = -0.58771575724076232904074548;
+    x[10] = -0.50689990893222939002374747;
+    x[11] = -0.42135127613063534536411944;
+    x[12] = -0.33186860228212764977991681;
+    x[13] = -0.23928736225213707454460321;
+    x[14] = -0.14447196158279649348518637;
+    x[15] = -0.04830766568773831623481257;
+    x[16] = 0.04830766568773831623481257;
+    x[17] = 0.14447196158279649348518637;
+    x[18] = 0.23928736225213707454460321;
+    x[19] = 0.33186860228212764977991681;
+    x[20] = 0.42135127613063534536411944;
+    x[21] = 0.50689990893222939002374747;
+    x[22] = 0.58771575724076232904074548;
+    x[23] = 0.66304426693021520097511517;
+    x[24] = 0.73218211874028968038742667;
+    x[25] = 0.79448379596794240696309730;
+    x[26] = 0.84936761373256997013369300;
+    x[27] = 0.89632115576605212396530724;
+    x[28] = 0.93490607593773968917091913;
+    x[29] = 0.96476225558750643077381193;
+    x[30] = 0.98561151154526833540017504;
+    x[31] = 0.99726386184948156354498113;
+  }
+  else if ( n == 33 )
+  {
+    x[0] = -0.99742469424645521726616802;
+    x[1] = -0.98645572623064248811037570;
+    x[2] = -0.96682290968999276892837771;
+    x[3] = -0.93869437261116835035583512;
+    x[4] = -0.90231676774343358304053133;
+    x[5] = -0.85800965267650406464306148;
+    x[6] = -0.80616235627416658979620087;
+    x[7] = -0.74723049644956215785905512;
+    x[8] = -0.68173195996974278626821595;
+    x[9] = -0.61024234583637902730728751;
+    x[10] = -0.53338990478634764354889426;
+    x[11] = -0.45185001727245069572599328;
+    x[12] = -0.36633925774807334107022062;
+    x[13] = -0.27760909715249702940324807;
+    x[14] = -0.18643929882799157233579876;
+    x[15] = -0.09363106585473338567074292;
+    x[16] = 0.00000000000000000000000000;
+    x[17] = 0.09363106585473338567074292;
+    x[18] = 0.18643929882799157233579876;
+    x[19] = 0.27760909715249702940324807;
+    x[20] = 0.36633925774807334107022062;
+    x[21] = 0.45185001727245069572599328;
+    x[22] = 0.53338990478634764354889426;
+    x[23] = 0.61024234583637902730728751;
+    x[24] = 0.68173195996974278626821595;
+    x[25] = 0.74723049644956215785905512;
+    x[26] = 0.80616235627416658979620087;
+    x[27] = 0.85800965267650406464306148;
+    x[28] = 0.90231676774343358304053133;
+    x[29] = 0.93869437261116835035583512;
+    x[30] = 0.96682290968999276892837771;
+    x[31] = 0.98645572623064248811037570;
+    x[32] = 0.99742469424645521726616802;
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "LEGENDRE_LOOKUP_POINTS - Fatal error!\n";
+    std::cerr << "  Illegal value of N = " << n << "\n";
+    std::cerr << "  Legal values are 1 through 33.\n";
+    std::exit ( 1 );
+  }
+  return;
+}
+//****************************************************************************80
+
+void legendre_lookup_weights ( int n, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEGENDRE_LOOKUP_WEIGHTS looks up weights for Gauss-Legendre quadrature.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    27 April 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Milton Abramowitz, Irene Stegun,
+//    Handbook of Mathematical Functions,
+//    National Bureau of Standards, 1964,
+//    ISBN: 0-486-61272-4,
+//    LC: QA47.A34.
+//
+//    Vladimir Krylov,
+//    Approximate Calculation of Integrals,
+//    Dover, 2006,
+//    ISBN: 0486445798.
+//    LC: QA311.K713.
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//    Stephen Wolfram,
+//    The Mathematica Book,
+//    Fourth Edition,
+//    Cambridge University Press, 1999,
+//    ISBN: 0-521-64314-7,
+//    LC: QA76.95.W65.
+//
+//    Daniel Zwillinger, editor,
+//    CRC Standard Mathematical Tables and Formulae,
+//    30th Edition,
+//    CRC Press, 1996,
+//    ISBN: 0-8493-2479-3,
+//    LC: QA47.M315.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    N must be between 1 and 33.
+//
+//    Output, double W[N], the weights.
+//
+{
+  if ( n == 1 )
+  {
+    w[0] = 2.000000000000000000000000000000;
+  }
+  else if ( n == 2 )
+  {
+    w[0] = 1.000000000000000000000000000000;
+    w[1] = 1.000000000000000000000000000000;
+  }
+  else if ( n == 3 )
+  {
+    w[0] = 0.555555555555555555555555555556;
+    w[1] = 0.888888888888888888888888888889;
+    w[2] = 0.555555555555555555555555555556;
+  }
+  else if ( n == 4 )
+  {
+    w[0] = 0.347854845137453857373063949222;
+    w[1] = 0.652145154862546142626936050778;
+    w[2] = 0.652145154862546142626936050778;
+    w[3] = 0.347854845137453857373063949222;
+  }
+  else if ( n == 5 )
+  {
+    w[0] = 0.236926885056189087514264040720;
+    w[1] = 0.478628670499366468041291514836;
+    w[2] = 0.568888888888888888888888888889;
+    w[3] = 0.478628670499366468041291514836;
+    w[4] = 0.236926885056189087514264040720;
+  }
+  else if ( n == 6 )
+  {
+    w[0] = 0.171324492379170345040296142173;
+    w[1] = 0.360761573048138607569833513838;
+    w[2] = 0.467913934572691047389870343990;
+    w[3] = 0.467913934572691047389870343990;
+    w[4] = 0.360761573048138607569833513838;
+    w[5] = 0.171324492379170345040296142173;
+  }
+  else if ( n == 7 )
+  {
+    w[0] = 0.129484966168869693270611432679;
+    w[1] = 0.279705391489276667901467771424;
+    w[2] = 0.381830050505118944950369775489;
+    w[3] = 0.417959183673469387755102040816;
+    w[4] = 0.381830050505118944950369775489;
+    w[5] = 0.279705391489276667901467771424;
+    w[6] = 0.129484966168869693270611432679;
+  }
+  else if ( n == 8 )
+  {
+    w[0] = 0.101228536290376259152531354310;
+    w[1] = 0.222381034453374470544355994426;
+    w[2] = 0.313706645877887287337962201987;
+    w[3] = 0.362683783378361982965150449277;
+    w[4] = 0.362683783378361982965150449277;
+    w[5] = 0.313706645877887287337962201987;
+    w[6] = 0.222381034453374470544355994426;
+    w[7] = 0.101228536290376259152531354310;
+  }
+  else if ( n == 9 )
+  {
+    w[0] = 0.081274388361574411971892158111;
+    w[1] = 0.18064816069485740405847203124;
+    w[2] = 0.26061069640293546231874286942;
+    w[3] = 0.31234707704000284006863040658;
+    w[4] = 0.33023935500125976316452506929;
+    w[5] = 0.31234707704000284006863040658;
+    w[6] = 0.26061069640293546231874286942;
+    w[7] = 0.18064816069485740405847203124;
+    w[8] = 0.081274388361574411971892158111;
+  }
+  else if ( n == 10 )
+  {
+    w[0] = 0.066671344308688137593568809893;
+    w[1] = 0.14945134915058059314577633966;
+    w[2] = 0.21908636251598204399553493423;
+    w[3] = 0.26926671930999635509122692157;
+    w[4] = 0.29552422471475287017389299465;
+    w[5] = 0.29552422471475287017389299465;
+    w[6] = 0.26926671930999635509122692157;
+    w[7] = 0.21908636251598204399553493423;
+    w[8] = 0.14945134915058059314577633966;
+    w[9] = 0.066671344308688137593568809893;
+  }
+  else if ( n == 11 )
+  {
+    w[0] = 0.055668567116173666482753720443;
+    w[1] = 0.12558036946490462463469429922;
+    w[2] = 0.18629021092773425142609764143;
+    w[3] = 0.23319376459199047991852370484;
+    w[4] = 0.26280454451024666218068886989;
+    w[5] = 0.27292508677790063071448352834;
+    w[6] = 0.26280454451024666218068886989;
+    w[7] = 0.23319376459199047991852370484;
+    w[8] = 0.18629021092773425142609764143;
+    w[9] = 0.12558036946490462463469429922;
+    w[10] = 0.055668567116173666482753720443;
+  }
+  else if ( n == 12 )
+  {
+    w[0] = 0.047175336386511827194615961485;
+    w[1] = 0.10693932599531843096025471819;
+    w[2] = 0.16007832854334622633465252954;
+    w[3] = 0.20316742672306592174906445581;
+    w[4] = 0.23349253653835480876084989892;
+    w[5] = 0.24914704581340278500056243604;
+    w[6] = 0.24914704581340278500056243604;
+    w[7] = 0.23349253653835480876084989892;
+    w[8] = 0.20316742672306592174906445581;
+    w[9] = 0.16007832854334622633465252954;
+    w[10] = 0.10693932599531843096025471819;
+    w[11] = 0.047175336386511827194615961485;
+  }
+  else if ( n == 13 )
+  {
+    w[0] = 0.040484004765315879520021592201;
+    w[1] = 0.092121499837728447914421775954;
+    w[2] = 0.13887351021978723846360177687;
+    w[3] = 0.17814598076194573828004669200;
+    w[4] = 0.20781604753688850231252321931;
+    w[5] = 0.22628318026289723841209018604;
+    w[6] = 0.23255155323087391019458951527;
+    w[7] = 0.22628318026289723841209018604;
+    w[8] = 0.20781604753688850231252321931;
+    w[9] = 0.17814598076194573828004669200;
+    w[10] = 0.13887351021978723846360177687;
+    w[11] = 0.092121499837728447914421775954;
+    w[12] = 0.040484004765315879520021592201;
+  }
+  else if ( n == 14 )
+  {
+    w[0] = 0.035119460331751863031832876138;
+    w[1] = 0.08015808715976020980563327706;
+    w[2] = 0.12151857068790318468941480907;
+    w[3] = 0.15720316715819353456960193862;
+    w[4] = 0.18553839747793781374171659013;
+    w[5] = 0.20519846372129560396592406566;
+    w[6] = 0.21526385346315779019587644332;
+    w[7] = 0.21526385346315779019587644332;
+    w[8] = 0.20519846372129560396592406566;
+    w[9] = 0.18553839747793781374171659013;
+    w[10] = 0.15720316715819353456960193862;
+    w[11] = 0.12151857068790318468941480907;
+    w[12] = 0.08015808715976020980563327706;
+    w[13] = 0.035119460331751863031832876138;
+  }
+  else if ( n == 15 )
+  {
+    w[0] = 0.030753241996117268354628393577;
+    w[1] = 0.070366047488108124709267416451;
+    w[2] = 0.107159220467171935011869546686;
+    w[3] = 0.13957067792615431444780479451;
+    w[4] = 0.16626920581699393355320086048;
+    w[5] = 0.18616100001556221102680056187;
+    w[6] = 0.19843148532711157645611832644;
+    w[7] = 0.20257824192556127288062019997;
+    w[8] = 0.19843148532711157645611832644;
+    w[9] = 0.18616100001556221102680056187;
+    w[10] = 0.16626920581699393355320086048;
+    w[11] = 0.13957067792615431444780479451;
+    w[12] = 0.107159220467171935011869546686;
+    w[13] = 0.070366047488108124709267416451;
+    w[14] = 0.030753241996117268354628393577;
+  }
+  else if ( n == 16 )
+  {
+    w[0] = 0.027152459411754094851780572456;
+    w[1] = 0.062253523938647892862843836994;
+    w[2] = 0.09515851168249278480992510760;
+    w[3] = 0.12462897125553387205247628219;
+    w[4] = 0.14959598881657673208150173055;
+    w[5] = 0.16915651939500253818931207903;
+    w[6] = 0.18260341504492358886676366797;
+    w[7] = 0.18945061045506849628539672321;
+    w[8] = 0.18945061045506849628539672321;
+    w[9] = 0.18260341504492358886676366797;
+    w[10] = 0.16915651939500253818931207903;
+    w[11] = 0.14959598881657673208150173055;
+    w[12] = 0.12462897125553387205247628219;
+    w[13] = 0.09515851168249278480992510760;
+    w[14] = 0.062253523938647892862843836994;
+    w[15] = 0.027152459411754094851780572456;
+  }
+  else if ( n == 17 )
+  {
+    w[0] = 0.024148302868547931960110026288;
+    w[1] = 0.055459529373987201129440165359;
+    w[2] = 0.085036148317179180883535370191;
+    w[3] = 0.111883847193403971094788385626;
+    w[4] = 0.13513636846852547328631998170;
+    w[5] = 0.15404576107681028808143159480;
+    w[6] = 0.16800410215645004450997066379;
+    w[7] = 0.17656270536699264632527099011;
+    w[8] = 0.17944647035620652545826564426;
+    w[9] = 0.17656270536699264632527099011;
+    w[10] = 0.16800410215645004450997066379;
+    w[11] = 0.15404576107681028808143159480;
+    w[12] = 0.13513636846852547328631998170;
+    w[13] = 0.111883847193403971094788385626;
+    w[14] = 0.085036148317179180883535370191;
+    w[15] = 0.055459529373987201129440165359;
+    w[16] = 0.024148302868547931960110026288;
+  }
+  else if ( n == 18 )
+  {
+    w[0] = 0.021616013526483310313342710266;
+    w[1] = 0.049714548894969796453334946203;
+    w[2] = 0.07642573025488905652912967762;
+    w[3] = 0.10094204410628716556281398492;
+    w[4] = 0.12255520671147846018451912680;
+    w[5] = 0.14064291467065065120473130375;
+    w[6] = 0.15468467512626524492541800384;
+    w[7] = 0.16427648374583272298605377647;
+    w[8] = 0.16914238296314359184065647013;
+    w[9] = 0.16914238296314359184065647013;
+    w[10] = 0.16427648374583272298605377647;
+    w[11] = 0.15468467512626524492541800384;
+    w[12] = 0.14064291467065065120473130375;
+    w[13] = 0.12255520671147846018451912680;
+    w[14] = 0.10094204410628716556281398492;
+    w[15] = 0.07642573025488905652912967762;
+    w[16] = 0.049714548894969796453334946203;
+    w[17] = 0.021616013526483310313342710266;
+  }
+  else if ( n == 19 )
+  {
+    w[0] = 0.019461788229726477036312041464;
+    w[1] = 0.044814226765699600332838157402;
+    w[2] = 0.069044542737641226580708258006;
+    w[3] = 0.091490021622449999464462094124;
+    w[4] = 0.111566645547333994716023901682;
+    w[5] = 0.12875396253933622767551578486;
+    w[6] = 0.14260670217360661177574610944;
+    w[7] = 0.15276604206585966677885540090;
+    w[8] = 0.15896884339395434764995643946;
+    w[9] = 0.16105444984878369597916362532;
+    w[10] = 0.15896884339395434764995643946;
+    w[11] = 0.15276604206585966677885540090;
+    w[12] = 0.14260670217360661177574610944;
+    w[13] = 0.12875396253933622767551578486;
+    w[14] = 0.111566645547333994716023901682;
+    w[15] = 0.091490021622449999464462094124;
+    w[16] = 0.069044542737641226580708258006;
+    w[17] = 0.044814226765699600332838157402;
+    w[18] = 0.019461788229726477036312041464;
+  }
+  else if ( n == 20 )
+  {
+    w[0] = 0.017614007139152118311861962352;
+    w[1] = 0.040601429800386941331039952275;
+    w[2] = 0.062672048334109063569506535187;
+    w[3] = 0.08327674157670474872475814322;
+    w[4] = 0.10193011981724043503675013548;
+    w[5] = 0.11819453196151841731237737771;
+    w[6] = 0.13168863844917662689849449975;
+    w[7] = 0.14209610931838205132929832507;
+    w[8] = 0.14917298647260374678782873700;
+    w[9] = 0.15275338713072585069808433195;
+    w[10] = 0.15275338713072585069808433195;
+    w[11] = 0.14917298647260374678782873700;
+    w[12] = 0.14209610931838205132929832507;
+    w[13] = 0.13168863844917662689849449975;
+    w[14] = 0.11819453196151841731237737771;
+    w[15] = 0.10193011981724043503675013548;
+    w[16] = 0.08327674157670474872475814322;
+    w[17] = 0.062672048334109063569506535187;
+    w[18] = 0.040601429800386941331039952275;
+    w[19] = 0.017614007139152118311861962352;
+  }
+  else if ( n == 21 )
+  {
+    w[ 0] =   0.016017228257774333324224616858;
+    w[ 1] =   0.036953789770852493799950668299;
+    w[ 2] =   0.057134425426857208283635826472;
+    w[ 3] =   0.076100113628379302017051653300;
+    w[ 4] =   0.093444423456033861553289741114;
+    w[ 5] =   0.108797299167148377663474578070;
+    w[ 6] =   0.12183141605372853419536717713;
+    w[ 7] =   0.13226893863333746178105257450;
+    w[ 8] =   0.13988739479107315472213342387;
+    w[9] =   0.14452440398997005906382716655;
+    w[10] =   0.14608113364969042719198514768;
+    w[11] =   0.14452440398997005906382716655;
+    w[12] =   0.13988739479107315472213342387;
+    w[13] =   0.13226893863333746178105257450;
+    w[14] =   0.12183141605372853419536717713;
+    w[15] =   0.108797299167148377663474578070;
+    w[16] =   0.093444423456033861553289741114;
+    w[17] =   0.076100113628379302017051653300;
+    w[18] =   0.057134425426857208283635826472;
+    w[19] =   0.036953789770852493799950668299;
+    w[20] =   0.016017228257774333324224616858;
+  }
+  else if ( n == 22 )
+  {
+    w[0] = 0.014627995298272200684991098047;
+    w[1] = 0.033774901584814154793302246866;
+    w[2] = 0.052293335152683285940312051273;
+    w[3] = 0.06979646842452048809496141893;
+    w[4] = 0.08594160621706772741444368137;
+    w[5] = 0.10041414444288096493207883783;
+    w[6] = 0.11293229608053921839340060742;
+    w[7] = 0.12325237681051242428556098615;
+    w[8] = 0.13117350478706237073296499253;
+    w[9] = 0.13654149834601517135257383123;
+    w[10] = 0.13925187285563199337541024834;
+    w[11] = 0.13925187285563199337541024834;
+    w[12] = 0.13654149834601517135257383123;
+    w[13] = 0.13117350478706237073296499253;
+    w[14] = 0.12325237681051242428556098615;
+    w[15] = 0.11293229608053921839340060742;
+    w[16] = 0.10041414444288096493207883783;
+    w[17] = 0.08594160621706772741444368137;
+    w[18] = 0.06979646842452048809496141893;
+    w[19] = 0.052293335152683285940312051273;
+    w[20] = 0.033774901584814154793302246866;
+    w[21] = 0.014627995298272200684991098047;
+  }
+  else if ( n == 23 )
+  {
+    w[0] = 0.013411859487141772081309493459;
+    w[1] = 0.030988005856979444310694219642;
+    w[2] = 0.048037671731084668571641071632;
+    w[3] = 0.064232421408525852127169615159;
+    w[4] = 0.079281411776718954922892524742;
+    w[5] = 0.092915766060035147477018617370;
+    w[6] = 0.104892091464541410074086185015;
+    w[7] = 0.11499664022241136494164351293;
+    w[8] = 0.12304908430672953046757840067;
+    w[9] = 0.12890572218808214997859533940;
+    w[10] = 0.13246203940469661737164246470;
+    w[11] = 0.13365457218610617535145711055;
+    w[12] = 0.13246203940469661737164246470;
+    w[13] = 0.12890572218808214997859533940;
+    w[14] = 0.12304908430672953046757840067;
+    w[15] = 0.11499664022241136494164351293;
+    w[16] = 0.104892091464541410074086185015;
+    w[17] = 0.092915766060035147477018617370;
+    w[18] = 0.079281411776718954922892524742;
+    w[19] = 0.064232421408525852127169615159;
+    w[20] = 0.048037671731084668571641071632;
+    w[21] = 0.030988005856979444310694219642;
+    w[22] = 0.013411859487141772081309493459;
+  }
+  else if ( n == 24 )
+  {
+    w[0] = 0.012341229799987199546805667070;
+    w[1] = 0.028531388628933663181307815952;
+    w[2] = 0.044277438817419806168602748211;
+    w[3] = 0.059298584915436780746367758500;
+    w[4] = 0.07334648141108030573403361525;
+    w[5] = 0.08619016153195327591718520298;
+    w[6] = 0.09761865210411388826988066446;
+    w[7] = 0.10744427011596563478257734245;
+    w[8] = 0.11550566805372560135334448391;
+    w[9] = 0.12167047292780339120446315348;
+    w[10] = 0.12583745634682829612137538251;
+    w[11] = 0.12793819534675215697405616522;
+    w[12] = 0.12793819534675215697405616522;
+    w[13] = 0.12583745634682829612137538251;
+    w[14] = 0.12167047292780339120446315348;
+    w[15] = 0.11550566805372560135334448391;
+    w[16] = 0.10744427011596563478257734245;
+    w[17] = 0.09761865210411388826988066446;
+    w[18] = 0.08619016153195327591718520298;
+    w[19] = 0.07334648141108030573403361525;
+    w[20] = 0.059298584915436780746367758500;
+    w[21] = 0.044277438817419806168602748211;
+    w[22] = 0.028531388628933663181307815952;
+    w[23] = 0.012341229799987199546805667070;
+  }
+  else if ( n == 25 )
+  {
+    w[0] = 0.0113937985010262879479029641132;
+    w[1] = 0.026354986615032137261901815295;
+    w[2] = 0.040939156701306312655623487712;
+    w[3] = 0.054904695975835191925936891541;
+    w[4] = 0.068038333812356917207187185657;
+    w[5] = 0.080140700335001018013234959669;
+    w[6] = 0.091028261982963649811497220703;
+    w[7] = 0.100535949067050644202206890393;
+    w[8] = 0.108519624474263653116093957050;
+    w[9] = 0.11485825914571164833932554587;
+    w[10] = 0.11945576353578477222817812651;
+    w[11] = 0.12224244299031004168895951895;
+    w[12] = 0.12317605372671545120390287308;
+    w[13] = 0.12224244299031004168895951895;
+    w[14] = 0.11945576353578477222817812651;
+    w[15] = 0.11485825914571164833932554587;
+    w[16] = 0.108519624474263653116093957050;
+    w[17] = 0.100535949067050644202206890393;
+    w[18] = 0.091028261982963649811497220703;
+    w[19] = 0.080140700335001018013234959669;
+    w[20] = 0.068038333812356917207187185657;
+    w[21] = 0.054904695975835191925936891541;
+    w[22] = 0.040939156701306312655623487712;
+    w[23] = 0.026354986615032137261901815295;
+    w[24] = 0.0113937985010262879479029641132;
+  }
+  else if ( n == 26 )
+  {
+    w[0] = 0.010551372617343007155651187685;
+    w[1] = 0.024417851092631908789615827520;
+    w[2] = 0.037962383294362763950303141249;
+    w[3] = 0.050975825297147811998319900724;
+    w[4] = 0.063274046329574835539453689907;
+    w[5] = 0.07468414976565974588707579610;
+    w[6] = 0.08504589431348523921044776508;
+    w[7] = 0.09421380035591414846366488307;
+    w[8] = 0.10205916109442542323841407025;
+    w[9] = 0.10847184052857659065657942673;
+    w[10] = 0.11336181654631966654944071844;
+    w[11] = 0.11666044348529658204466250754;
+    w[12] = 0.11832141527926227651637108570;
+    w[13] = 0.11832141527926227651637108570;
+    w[14] = 0.11666044348529658204466250754;
+    w[15] = 0.11336181654631966654944071844;
+    w[16] = 0.10847184052857659065657942673;
+    w[17] = 0.10205916109442542323841407025;
+    w[18] = 0.09421380035591414846366488307;
+    w[19] = 0.08504589431348523921044776508;
+    w[20] = 0.07468414976565974588707579610;
+    w[21] = 0.063274046329574835539453689907;
+    w[22] = 0.050975825297147811998319900724;
+    w[23] = 0.037962383294362763950303141249;
+    w[24] = 0.024417851092631908789615827520;
+    w[25] = 0.010551372617343007155651187685;
+  }
+  else if ( n == 27 )
+  {
+    w[0] = 0.0097989960512943602611500550912;
+    w[1] = 0.022686231596180623196034206447;
+    w[2] = 0.035297053757419711022578289305;
+    w[3] = 0.047449412520615062704096710114;
+    w[4] = 0.058983536859833599110300833720;
+    w[5] = 0.069748823766245592984322888357;
+    w[6] = 0.079604867773057771263074959010;
+    w[7] = 0.088423158543756950194322802854;
+    w[8] = 0.096088727370028507565652646558;
+    w[9] = 0.102501637817745798671247711533;
+    w[10] = 0.107578285788533187212162984427;
+    w[11] = 0.111252488356845192672163096043;
+    w[12] = 0.113476346108965148620369948092;
+    w[13] = 0.11422086737895698904504573690;
+    w[14] = 0.113476346108965148620369948092;
+    w[15] = 0.111252488356845192672163096043;
+    w[16] = 0.107578285788533187212162984427;
+    w[17] = 0.102501637817745798671247711533;
+    w[18] = 0.096088727370028507565652646558;
+    w[19] = 0.088423158543756950194322802854;
+    w[20] = 0.079604867773057771263074959010;
+    w[21] = 0.069748823766245592984322888357;
+    w[22] = 0.058983536859833599110300833720;
+    w[23] = 0.047449412520615062704096710114;
+    w[24] = 0.035297053757419711022578289305;
+    w[25] = 0.022686231596180623196034206447;
+    w[26] = 0.0097989960512943602611500550912;
+  }
+  else if ( n == 28 )
+  {
+    w[0] = 0.009124282593094517738816153923;
+    w[1] = 0.021132112592771259751500380993;
+    w[2] = 0.032901427782304379977630819171;
+    w[3] = 0.044272934759004227839587877653;
+    w[4] = 0.055107345675716745431482918227;
+    w[5] = 0.06527292396699959579339756678;
+    w[6] = 0.07464621423456877902393188717;
+    w[7] = 0.08311341722890121839039649824;
+    w[8] = 0.09057174439303284094218603134;
+    w[9] = 0.09693065799792991585048900610;
+    w[10] = 0.10211296757806076981421663851;
+    w[11] = 0.10605576592284641791041643700;
+    w[12] = 0.10871119225829413525357151930;
+    w[13] = 0.11004701301647519628237626560;
+    w[14] = 0.11004701301647519628237626560;
+    w[15] = 0.10871119225829413525357151930;
+    w[16] = 0.10605576592284641791041643700;
+    w[17] = 0.10211296757806076981421663851;
+    w[18] = 0.09693065799792991585048900610;
+    w[19] = 0.09057174439303284094218603134;
+    w[20] = 0.08311341722890121839039649824;
+    w[21] = 0.07464621423456877902393188717;
+    w[22] = 0.06527292396699959579339756678;
+    w[23] = 0.055107345675716745431482918227;
+    w[24] = 0.044272934759004227839587877653;
+    w[25] = 0.032901427782304379977630819171;
+    w[26] = 0.021132112592771259751500380993;
+    w[27] = 0.009124282593094517738816153923;
+  }
+  else if ( n == 29 )
+  {
+    w[0] = 0.0085169038787464096542638133022;
+    w[1] = 0.019732085056122705983859801640;
+    w[2] = 0.030740492202093622644408525375;
+    w[3] = 0.041402062518682836104830010114;
+    w[4] = 0.051594826902497923912594381180;
+    w[5] = 0.061203090657079138542109848024;
+    w[6] = 0.070117933255051278569581486949;
+    w[7] = 0.078238327135763783828144888660;
+    w[8] = 0.085472257366172527545344849297;
+    w[9] = 0.091737757139258763347966411077;
+    w[10] = 0.096963834094408606301900074883;
+    w[11] = 0.101091273759914966121820546907;
+    w[12] = 0.104073310077729373913328471285;
+    w[13] = 0.105876155097320941406591327852;
+    w[14] = 0.10647938171831424424651112691;
+    w[15] = 0.105876155097320941406591327852;
+    w[16] = 0.104073310077729373913328471285;
+    w[17] = 0.101091273759914966121820546907;
+    w[18] = 0.096963834094408606301900074883;
+    w[19] = 0.091737757139258763347966411077;
+    w[20] = 0.085472257366172527545344849297;
+    w[21] = 0.078238327135763783828144888660;
+    w[22] = 0.070117933255051278569581486949;
+    w[23] = 0.061203090657079138542109848024;
+    w[24] = 0.051594826902497923912594381180;
+    w[25] = 0.041402062518682836104830010114;
+    w[26] = 0.030740492202093622644408525375;
+    w[27] = 0.019732085056122705983859801640;
+    w[28] = 0.0085169038787464096542638133022;
+  }
+  else if ( n == 30 )
+  {
+    w[0] = 0.007968192496166605615465883475;
+    w[1] = 0.018466468311090959142302131912;
+    w[2] = 0.028784707883323369349719179611;
+    w[3] = 0.038799192569627049596801936446;
+    w[4] = 0.048402672830594052902938140423;
+    w[5] = 0.057493156217619066481721689402;
+    w[6] = 0.06597422988218049512812851512;
+    w[7] = 0.07375597473770520626824385002;
+    w[8] = 0.08075589522942021535469493846;
+    w[9] = 0.08689978720108297980238753072;
+    w[10] = 0.09212252223778612871763270709;
+    w[11] = 0.09636873717464425963946862635;
+    w[12] = 0.09959342058679526706278028210;
+    w[13] = 0.10176238974840550459642895217;
+    w[14] = 0.10285265289355884034128563671;
+    w[15] = 0.10285265289355884034128563671;
+    w[16] = 0.10176238974840550459642895217;
+    w[17] = 0.09959342058679526706278028210;
+    w[18] = 0.09636873717464425963946862635;
+    w[19] = 0.09212252223778612871763270709;
+    w[20] = 0.08689978720108297980238753072;
+    w[21] = 0.08075589522942021535469493846;
+    w[22] = 0.07375597473770520626824385002;
+    w[23] = 0.06597422988218049512812851512;
+    w[24] = 0.057493156217619066481721689402;
+    w[25] = 0.048402672830594052902938140423;
+    w[26] = 0.038799192569627049596801936446;
+    w[27] = 0.028784707883323369349719179611;
+    w[28] = 0.018466468311090959142302131912;
+    w[29] = 0.007968192496166605615465883475;
+  }
+  else if ( n == 31 )
+  {
+    w[0] = 0.0074708315792487758586968750322;
+    w[1] = 0.017318620790310582463157996087;
+    w[2] = 0.027009019184979421800608708092;
+    w[3] = 0.036432273912385464024392010468;
+    w[4] = 0.045493707527201102902315857895;
+    w[5] = 0.054103082424916853711666259087;
+    w[6] = 0.062174786561028426910343543687;
+    w[7] = 0.069628583235410366167756126255;
+    w[8] = 0.076390386598776616426357674901;
+    w[9] = 0.082392991761589263903823367432;
+    w[10] = 0.087576740608477876126198069695;
+    w[11] = 0.091890113893641478215362871607;
+    w[12] = 0.095290242912319512807204197488;
+    w[13] = 0.097743335386328725093474010979;
+    w[14] = 0.099225011226672307874875514429;
+    w[15] = 0.09972054479342645142753383373;
+    w[16] = 0.099225011226672307874875514429;
+    w[17] = 0.097743335386328725093474010979;
+    w[18] = 0.095290242912319512807204197488;
+    w[19] = 0.091890113893641478215362871607;
+    w[20] = 0.087576740608477876126198069695;
+    w[21] = 0.082392991761589263903823367432;
+    w[22] = 0.076390386598776616426357674901;
+    w[23] = 0.069628583235410366167756126255;
+    w[24] = 0.062174786561028426910343543687;
+    w[25] = 0.054103082424916853711666259087;
+    w[26] = 0.045493707527201102902315857895;
+    w[27] = 0.036432273912385464024392010468;
+    w[28] = 0.027009019184979421800608708092;
+    w[29] = 0.017318620790310582463157996087;
+    w[30] = 0.0074708315792487758586968750322;
+  }
+  else if ( n == 32 )
+  {
+    w[0] = 0.007018610009470096600407063739;
+    w[1] = 0.016274394730905670605170562206;
+    w[2] = 0.025392065309262059455752589789;
+    w[3] = 0.034273862913021433102687732252;
+    w[4] = 0.042835898022226680656878646606;
+    w[5] = 0.050998059262376176196163244690;
+    w[6] = 0.058684093478535547145283637300;
+    w[7] = 0.06582222277636184683765006371;
+    w[8] = 0.07234579410884850622539935648;
+    w[9] = 0.07819389578707030647174091883;
+    w[10] = 0.08331192422694675522219907460;
+    w[11] = 0.08765209300440381114277146275;
+    w[12] = 0.09117387869576388471286857711;
+    w[13] = 0.09384439908080456563918023767;
+    w[14] = 0.09563872007927485941908200220;
+    w[15] = 0.09654008851472780056676483006;
+    w[16] = 0.09654008851472780056676483006;
+    w[17] = 0.09563872007927485941908200220;
+    w[18] = 0.09384439908080456563918023767;
+    w[19] = 0.09117387869576388471286857711;
+    w[20] = 0.08765209300440381114277146275;
+    w[21] = 0.08331192422694675522219907460;
+    w[22] = 0.07819389578707030647174091883;
+    w[23] = 0.07234579410884850622539935648;
+    w[24] = 0.06582222277636184683765006371;
+    w[25] = 0.058684093478535547145283637300;
+    w[26] = 0.050998059262376176196163244690;
+    w[27] = 0.042835898022226680656878646606;
+    w[28] = 0.034273862913021433102687732252;
+    w[29] = 0.025392065309262059455752589789;
+    w[30] = 0.016274394730905670605170562206;
+    w[31] = 0.007018610009470096600407063739;
+  }
+  else if ( n == 33 )
+  {
+    w[0] = 0.0066062278475873780586492352085;
+    w[1] = 0.015321701512934676127945768534;
+    w[2] = 0.023915548101749480350533257529;
+    w[3] = 0.032300358632328953281561447250;
+    w[4] = 0.040401541331669591563409790527;
+    w[5] = 0.048147742818711695670146880138;
+    w[6] = 0.055470846631663561284944495439;
+    w[7] = 0.062306482530317480031627725771;
+    w[8] = 0.068594572818656712805955073015;
+    w[9] = 0.074279854843954149342472175919;
+    w[10] = 0.079312364794886738363908384942;
+    w[11] = 0.083647876067038707613928014518;
+    w[12] = 0.087248287618844337607281670945;
+    w[13] = 0.090081958660638577239743705500;
+    w[14] = 0.092123986643316846213240977717;
+    w[15] = 0.093356426065596116160999126274;
+    w[16] = 0.09376844616020999656730454155;
+    w[17] = 0.093356426065596116160999126274;
+    w[18] = 0.092123986643316846213240977717;
+    w[19] = 0.090081958660638577239743705500;
+    w[20] = 0.087248287618844337607281670945;
+    w[21] = 0.083647876067038707613928014518;
+    w[22] = 0.079312364794886738363908384942;
+    w[23] = 0.074279854843954149342472175919;
+    w[24] = 0.068594572818656712805955073015;
+    w[25] = 0.062306482530317480031627725771;
+    w[26] = 0.055470846631663561284944495439;
+    w[27] = 0.048147742818711695670146880138;
+    w[28] = 0.040401541331669591563409790527;
+    w[29] = 0.032300358632328953281561447250;
+    w[30] = 0.023915548101749480350533257529;
+    w[31] = 0.015321701512934676127945768534;
+    w[32] = 0.0066062278475873780586492352085;
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "LEGENDRE_LOOKUP_WEIGHTS - Fatal error!\n";
+    std::cerr << "  Illegal value of N = " << n << "\n";
+    std::cerr << "  Legal values are 1 through 33.\n";
+    std::exit ( 1 );
+  }
+  return;
+}
+//****************************************************************************80
+
+double *legendre_zeros ( int order )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEGENDRE_ZEROS returns the zeros of the Legendre polynomial of degree N.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    17 June 2011
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Philip Davis, Philip Rabinowitz.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Philip Davis, Philip Rabinowitz,
+//    Methods of Numerical Integration,
+//    Second Edition,
+//    Dover, 2007,
+//    ISBN: 0486453391,
+//    LC: QA299.3.D28.
+//
+//  Parameters:
+//
+//    Input, int ORDER, the order.
+//    ORDER must be greater than 0.
+//
+//    Output, double LEGENDRE_ZEROS[ORDER], the zeros.
+//
+{
+  double d1;
+  double d2pn;
+  double d3pn;
+  double d4pn;
+  double dp;
+  double dpn;
+  double e1;
+  double fx;
+  double h;
+  int i;
+  int iback;
+  int k;
+  int m;
+  int mp1mi;
+  int ncopy;
+  int nmove;
+  double p;
+  double pi = 3.141592653589793;
+  double pk;
+  double pkm1;
+  double pkp1;
+  double t;
+  double u;
+  double v;
+  double x0;
+  double *xtab;
+  double xtemp;
+
+  xtab = new double[order];
+
+  e1 = ( double ) ( order * ( order + 1 ) );
+
+  m = ( order + 1 ) / 2;
+
+  for ( i = 1; i <= m; i++ )
+  {
+    mp1mi = m + 1 - i;
+
+    t = ( double ) ( 4 * i - 1 ) * pi / ( double ) ( 4 * order + 2 );
+
+    x0 = std::cos ( t ) * ( 1.0 - ( 1.0 - 1.0 / ( double ) ( order ) )
+      / ( double ) ( 8 * order * order ) );
+
+    pkm1 = 1.0;
+    pk = x0;
+
+    for ( k = 2; k <= order; k++ )
+    {
+      pkp1 = 2.0 * x0 * pk - pkm1 - ( x0 * pk - pkm1 ) / ( double ) ( k );
+      pkm1 = pk;
+      pk = pkp1;
+    }
+
+    d1 = ( double ) ( order ) * ( pkm1 - x0 * pk );
+
+    dpn = d1 / ( 1.0 - x0 * x0 );
+
+    d2pn = ( 2.0 * x0 * dpn - e1 * pk ) / ( 1.0 - x0 * x0 );
+
+    d3pn = ( 4.0 * x0 * d2pn + ( 2.0 - e1 ) * dpn ) / ( 1.0 - x0 * x0 );
+
+    d4pn = ( 6.0 * x0 * d3pn + ( 6.0 - e1 ) * d2pn ) / ( 1.0 - x0 * x0 );
+
+    u = pk / dpn;
+    v = d2pn / dpn;
+//
+//  Initial approximation H:
+//
+    h = - u * ( 1.0 + 0.5 * u * ( v + u * ( v * v - d3pn / ( 3.0 * dpn ) ) ) );
+//
+//  Refine H using one step of Newton's method:
+//
+    p = pk + h * ( dpn + 0.5 * h * ( d2pn + h / 3.0
+      * ( d3pn + 0.25 * h * d4pn ) ) );
+
+    dp = dpn + h * ( d2pn + 0.5 * h * ( d3pn + h * d4pn / 3.0 ) );
+
+    h = h - p / dp;
+
+    xtemp = x0 + h;
+
+    xtab[mp1mi-1] = xtemp;
+
+    fx = d1 - h * e1 * ( pk + 0.5 * h * ( dpn + h / 3.0
+      * ( d2pn + 0.25 * h * ( d3pn + 0.2 * h * d4pn ) ) ) );
+  }
+
+  if ( ( order % 2 ) == 1 )
+  {
+    xtab[0] = 0.0;
+  }
+//
+//  Shift the data up.
+//
+  nmove = ( order + 1 ) / 2;
+  ncopy = order - nmove;
+
+  for ( i = 1; i <= nmove; i++ )
+  {
+    iback = order + 1 - i;
+    xtab[iback-1] = xtab[iback-ncopy-1];
+  }
+//
+//  Reflect values for the negative abscissas.
+//
+  for ( i = 1; i <= order - nmove; i++ )
+  {
+    xtab[i-1] = - xtab[order-i];
+  }
+
+  return xtab;
+}
+//****************************************************************************80
+
+void level_growth_to_order ( int dim_num, int level[], int rule[],
+  int growth[], int order[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEVEL_GROWTH_TO_ORDER: convert Level and Growth to Order.
+//
+//  Discussion:
+//
+//    This function is given level, rule, and growth information
+//    for each dimension of a quadrature rule, and determines the
+//    corresponding order of the rule in each dimension.
+//
+//    This is a revised version of LEVEL_GROWTH_TO_ORDER.
+//
+//    In particular, it revises the interpretation of the RULE vector as
+//    far as the values 10, 11, and 12 are concerned.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    16 October 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int DIM_NUM, the spatial dimension.
+//
+//    Input, int LEVEL[DIM_NUM], the 1D levels.
+//
+//    Input, int RULE[DIM_NUM], the rule in each dimension.
+//     1, "CC",  Clenshaw Curtis, Closed Fully Nested.
+//     2, "F2",  Fejer Type 2, Open Fully Nested.
+//     3, "GP",  Gauss Patterson, Open Fully Nested.
+//     4, "GL",  Gauss Legendre, Open Weakly Nested.
+//     5, "GH",  Gauss Hermite, Open Weakly Nested.
+//     6, "GGH", Generalized Gauss Hermite, Open Weakly Nested.
+//     7, "LG",  Gauss Laguerre, Open Non Nested.
+//     8, "GLG", Generalized Gauss Laguerre, Open Non Nested.
+//     9, "GJ",  Gauss Jacobi, Open Non Nested.
+//    10, "HGK", Hermite Genz-Keister, Open Fully Nested.
+//    11, "UO",  User supplied Open, presumably Non Nested.
+//    12, "UC",  User supplied Closed, presumably Non Nested.
+//
+//    Input, int GROWTH[DIM_NUM], the desired growth in each dimension.
+//    0, "DF", default growth associated with this quadrature rule;
+//    1, "SL", slow linear, L+1;
+//    2  "SO", slow linear odd, O=1+2((L+1)/2)
+//    3, "ML", moderate linear, 2L+1;
+//    4, "SE", slow exponential;
+//    5, "ME", moderate exponential;
+//    6, "FE", full exponential.
+//
+//    Output, int ORDER[DIM_NUM], the 1D orders (number of points).
+//
+{
+  int dim;
+  int l;
+  int o;
+  static int o_hgk[6] = { 1, 3, 9, 19, 35, 43 };
+  int p;
+  static int p_hgk[6] = { 1, 5, 15, 29, 51, 67 };
+//
+//  Check the input.
+//
+  for ( dim = 0; dim < dim_num; dim++ )
+  {
+    if ( level[dim] < 0 )
+    {
+      std::cerr << "\n";
+      std::cerr << "LEVEL_GROWTH_TO_ORDER - Fatal error!\n";
+      std::cerr << "  Negative value of LEVEL[DIM]!\n";
+      std::cerr << "  LEVEL[" << dim << "] = " << level[dim] << "\n";
+      std::exit ( 1 );
+    }
+
+    if ( rule[dim] < 1 || 12 < rule[dim] )
+    {
+      std::cerr << "\n";
+      std::cerr << "LEVEL_GROWTH_TO_ORDER - Fatal error!\n";
+      std::cerr << "  Illegal value of RULE[DIM]!\n";
+      std::cerr << "  RULE[" << dim << "] = " << rule[dim] << "\n";
+      std::exit ( 1 );
+    }
+
+    if ( growth[dim] < 0 || 6 < growth[dim] )
+    {
+      std::cerr << "\n";
+      std::cerr << "LEVEL_GROWTH_TO_ORDER - Fatal error!\n";
+      std::cerr << "  Illegal value of GROWTH[DIM]!\n";
+      std::cerr << "  GROWTH[" << dim << "] = " << growth[dim] << "\n";
+      std::exit ( 1 );
+    }
+  }
+//
+//  Compute the order vector.
+//
+  for ( dim = 0; dim < dim_num; dim++ )
+  {
+//
+//  CC
+//  Default is Moderate Exponential Growth.
+//
+    if ( rule[dim] == 1 )
+    {
+      if ( growth[dim] == 1 )
+      {
+        o = level[dim] + 1;
+      }
+      else if ( growth[dim] == 2 )
+      {
+        o = 2 * ( ( level[dim] + 1 ) / 2 ) + 1;
+      }
+      else if ( growth[dim] == 3 )
+      {
+        o = 2 * level[dim] + 1;
+      }
+      else if ( growth[dim] == 4 )
+      {
+        if ( level[dim] == 0 )
+        {
+          o = 1;
+        }
+        else
+        {
+          o = 2;
+          while ( o < 2 * level[dim] + 1 )
+          {
+            o = 2 * ( o - 1 ) + 1;
+          }
+        }
+      }
+      else if ( growth[dim] == 5 || growth[dim] == 0 )
+      {
+        if ( level[dim] == 0 )
+        {
+          o = 1;
+        }
+        else
+        {
+          o = 2;
+          while ( o < 4 * level[dim] + 1 )
+          {
+            o = 2 * ( o - 1 ) + 1;
+          }
+        }
+      }
+      else if ( growth[dim] == 6 )
+      {
+        if ( level[dim] == 0 )
+        {
+          o = 1;
+        }
+        else
+        {
+          o = webbur::i4_power ( 2, level[dim] ) + 1;
+        }
+      }
+    }
+//
+//  F2
+//  Default is Moderate Exponential Growth.
+//
+    else if ( rule[dim] == 2 )
+    {
+      if ( growth[dim] == 1 )
+      {
+        o = level[dim] + 1;
+      }
+      else if ( growth[dim] == 2 )
+      {
+        o = 2 * ( ( level[dim] + 1 ) / 2 ) + 1;
+      }
+      else if ( growth[dim] == 3 )
+      {
+        o = 2 * level[dim] + 1;
+      }
+      else if ( growth[dim] == 4 )
+      {
+        o = 1;
+        while ( o < 2 * level[dim] + 1 )
+        {
+          o = 2 * o + 1;
+        }
+      }
+      else if ( growth[dim] == 5 || growth[dim] == 0 )
+      {
+        o = 1;
+        while ( o < 4 * level[dim] + 1 )
+        {
+          o = 2 * o + 1;
+        }
+      }
+      else if ( growth[dim] == 6 )
+      {
+        o = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+      }
+    }
+//
+//  GP
+//  Default is Moderate Exponential Growth.
+//
+    else if ( rule[dim] == 3 )
+    {
+      if ( growth[dim] == 1 )
+      {
+        std::cerr << "\n";
+        std::cerr << "LEVEL_GROWTH_TO_ORDER - Fatal error!\n";
+        std::cerr << "  Growth rate 1 for rule 3 not available!\n";
+        std::exit ( 1 );
+      }
+      else if ( growth[dim] == 2 )
+      {
+        std::cerr << "\n";
+        std::cerr << "LEVEL_GROWTH_TO_ORDER - Fatal error!\n";
+        std::cerr << "  Growth rate 2 for rule 3 not available!\n";
+        std::exit ( 1 );
+      }
+      else if ( growth[dim] == 3 )
+      {
+        std::cerr << "\n";
+        std::cerr << "LEVEL_GROWTH_TO_ORDER - Fatal error!\n";
+        std::cerr << "  Growth rate 3 for rule 3 not available!\n";
+        std::exit ( 1 );
+      }
+      else if ( growth[dim] == 4 )
+      {
+        if ( level[dim] == 0 )
+        {
+          o = 1;
+        }
+        else
+        {
+          p = 5;
+          o = 3;
+          while ( p < 2 * level[dim] + 1 )
+          {
+            p = 2 * p + 1;
+            o = 2 * o + 1;
+          }
+        }
+      }
+      else if ( growth[dim] == 5 || growth[dim] == 0 )
+      {
+        if ( level[dim] == 0 )
+        {
+          o = 1;
+        }
+        else
+        {
+          p = 5;
+          o = 3;
+          while ( p < 4 * level[dim] + 1 )
+          {
+            p = 2 * p + 1;
+            o = 2 * o + 1;
+          }
+        }
+      }
+      else if ( growth[dim] == 6 )
+      {
+        o = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+      }
+    }
+//
+//  GL
+//  Default is Moderate Linear Growth.
+//
+    else if ( rule[dim] == 4 )
+    {
+      if ( growth[dim] == 1 )
+      {
+        o = level[dim] + 1;
+      }
+      else if ( growth[dim] == 2 )
+      {
+        o = 2 * ( ( level[dim] + 1 ) / 2 ) + 1;
+      }
+      else if ( growth[dim] == 3 || growth[dim] == 0 )
+      {
+        o = 2 * level[dim] + 1;
+      }
+      else if ( growth[dim] == 4 )
+      {
+        o = 1;
+        while ( 2 * o - 1 < 2 * level[dim] + 1 )
+        {
+          o = 2 * o + 1;
+        }
+      }
+      else if ( growth[dim] == 5 )
+      {
+        o = 1;
+        while ( 2 * o - 1 < 4 * level[dim] + 1 )
+        {
+          o = 2 * o + 1;
+        }
+      }
+      else if ( growth[dim] == 6 )
+      {
+        o = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+      }
+    }
+//
+//  GH
+//  Default is Moderate Linear Growth.
+//
+    else if ( rule[dim] == 5 )
+    {
+      if ( growth[dim] == 1 )
+      {
+        o = level[dim] + 1;
+      }
+      else if ( growth[dim] == 2 )
+      {
+        o = 2 * ( ( level[dim] + 1 ) / 2 ) + 1;
+      }
+      else if ( growth[dim] == 3 || growth[dim] == 0 )
+      {
+        o = 2 * level[dim] + 1;
+      }
+      else if ( growth[dim] == 4 )
+      {
+        o = 1;
+        while ( 2 * o - 1 < 2 * level[dim] + 1 )
+        {
+          o = 2 * o + 1;
+        }
+      }
+      else if ( growth[dim] == 5 )
+      {
+        o = 1;
+        while ( 2 * o - 1 < 4 * level[dim] + 1 )
+        {
+          o = 2 * o + 1;
+        }
+      }
+      else if ( growth[dim] == 6 )
+      {
+        o = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+      }
+    }
+//
+//  GGH
+//  Default is Moderate Linear Growth.
+//
+    else if ( rule[dim] == 6 )
+    {
+      if ( growth[dim] == 1 )
+      {
+        o = level[dim] + 1;
+      }
+      else if ( growth[dim] == 2 )
+      {
+        o = 2 * ( ( level[dim] + 1 ) / 2 ) + 1;
+      }
+      else if ( growth[dim] == 3 || growth[dim] == 0 )
+      {
+        o = 2 * level[dim] + 1;
+      }
+      else if ( growth[dim] == 4 )
+      {
+        o = 1;
+        while ( 2 * o - 1 < 2 * level[dim] + 1 )
+        {
+          o = 2 * o + 1;
+        }
+      }
+      else if ( growth[dim] == 5 )
+      {
+        o = 1;
+        while ( 2 * o - 1 < 4 * level[dim] + 1 )
+        {
+          o = 2 * o + 1;
+        }
+      }
+      else if ( growth[dim] == 6 )
+      {
+        o = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+      }
+    }
+//
+//  LG
+//  Default is Moderate Linear Growth.
+//
+    else if ( rule[dim] == 7 )
+    {
+      if ( growth[dim] == 1 )
+      {
+        o = level[dim] + 1;
+      }
+      else if ( growth[dim] == 2 )
+      {
+        o = 2 * ( ( level[dim] + 1 ) / 2 ) + 1;
+      }
+      else if ( growth[dim] == 3 || growth[dim] == 0 )
+      {
+        o = 2 * level[dim] + 1;
+      }
+      else if ( growth[dim] == 4 )
+      {
+        o = 1;
+        while ( 2 * o - 1 < 2 * level[dim] + 1 )
+        {
+          o = 2 * o + 1;
+        }
+      }
+      else if ( growth[dim] == 5 )
+      {
+        o = 1;
+        while ( 2 * o - 1 < 4 * level[dim] + 1 )
+        {
+          o = 2 * o + 1;
+        }
+      }
+      else if ( growth[dim] == 6 )
+      {
+        o = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+      }
+    }
+//
+//  GLG
+//  Default is Moderate Linear Growth.
+//
+    else if ( rule[dim] == 8 )
+    {
+      if ( growth[dim] == 1 )
+      {
+        o = level[dim] + 1;
+      }
+      else if ( growth[dim] == 2 )
+      {
+        o = 2 * ( ( level[dim] + 1 ) / 2 ) + 1;
+      }
+      else if ( growth[dim] == 3 || growth[dim] == 0 )
+      {
+        o = 2 * level[dim] + 1;
+      }
+      else if ( growth[dim] == 4 )
+      {
+        o = 1;
+        while ( 2 * o - 1 < 2 * level[dim] + 1 )
+        {
+          o = 2 * o + 1;
+        }
+      }
+      else if ( growth[dim] == 5 )
+      {
+        o = 1;
+        while ( 2 * o - 1 < 4 * level[dim] + 1 )
+        {
+          o = 2 * o + 1;
+        }
+      }
+      else if ( growth[dim] == 6 )
+      {
+        o = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+      }
+    }
+//
+//  GJ
+//  Default is Moderate Linear Growth.
+//
+    else if ( rule[dim] == 9 )
+    {
+      if ( growth[dim] == 1 )
+      {
+        o = level[dim] + 1;
+      }
+      else if ( growth[dim] == 2 )
+      {
+        o = 2 * ( ( level[dim] + 1 ) / 2 ) + 1;
+      }
+      else if ( growth[dim] == 3 || growth[dim] == 0 )
+      {
+        o = 2 * level[dim] + 1;
+      }
+      else if ( growth[dim] == 4 )
+      {
+        o = 1;
+        while ( 2 * o - 1 < 2 * level[dim] + 1 )
+        {
+          o = 2 * o + 1;
+        }
+      }
+      else if ( growth[dim] == 5 )
+      {
+        o = 1;
+        while ( 2 * o - 1 < 4 * level[dim] + 1 )
+        {
+          o = 2 * o + 1;
+        }
+      }
+      else if ( growth[dim] == 6 )
+      {
+        o = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+      }
+    }
+//
+//  HGK
+//  Default is Moderate Exponential Growth.
+//  Exponential growth is interpreted to mean simply take successive rules.
+//
+    else if ( rule[dim] == 10 )
+    {
+      if ( growth[dim] == 1 )
+      {
+        std::cerr << "\n";
+        std::cerr << "LEVEL_GROWTH_TO_ORDER - Fatal error!\n";
+        std::cerr << "  Growth rate 1 for rule 10 not available!\n";
+        std::exit ( 1 );
+      }
+      else if ( growth[dim] == 2 )
+      {
+        std::cerr << "\n";
+        std::cerr << "LEVEL_GROWTH_TO_ORDER - Fatal error!\n";
+        std::cerr << "  Growth rate 2 for rule 10 not available!\n";
+        std::exit ( 1 );
+      }
+      else if ( growth[dim] == 3 )
+      {
+        std::cerr << "\n";
+        std::cerr << "LEVEL_GROWTH_TO_ORDER - Fatal error!\n";
+        std::cerr << "  Growth rate 3 for rule 10 not available!\n";
+        std::exit ( 1 );
+      }
+      else if ( growth[dim] == 4 )
+      {
+        l = 0;
+        p = p_hgk[l];
+        o = o_hgk[l];
+        while ( p < 2 * level[dim] + 1 )
+        {
+          l = l + 1;
+          if ( 5 < l )
+          {
+            std::cerr << "\n";
+            std::cerr << "LEVEL_GROWTH_TO_ORDER - Fatal error!\n";
+            std::cerr << "  Hermite Genz-Keister maximum level exceeded.\n";
+            std::exit ( 1 );
+          }
+          p = p_hgk[l];
+          o = o_hgk[l];
+        }
+      }
+      else if ( growth[dim] == 5 || growth[dim] == 0 )
+      {
+        l = 0;
+        p = p_hgk[l];
+        o = o_hgk[l];
+        while ( p < 4 * level[dim] + 1 )
+        {
+          l = l + 1;
+          if ( 5 < l )
+          {
+            std::cerr << "\n";
+            std::cerr << "LEVEL_GROWTH_TO_ORDER - Fatal error!\n";
+            std::cerr << "  Hermite Genz-Keister maximum level exceeded.\n";
+            std::exit ( 1 );
+          }
+          p = p_hgk[l];
+          o = o_hgk[l];
+        }
+      }
+      else if ( growth[dim] == 6 )
+      {
+        l = level[dim];
+        l = webbur::i4_max ( l, 0 );
+        if ( 5 < l )
+        {
+          std::cerr << "\n";
+          std::cerr << "LEVEL_GROWTH_TO_ORDER - Fatal error!\n";
+          std::cerr << "  Hermite Genz-Keister maximum level exceeded.\n";
+          std::exit ( 1 );
+        }
+        o = o_hgk[l];
+      }
+    }
+//
+//  UO
+//  Default is Moderate Linear Growth.
+//  We assume the rule is of OPEN type and that it
+//  has a precision typical of Gauss rules.
+//
+    else if ( rule[dim] == 11 )
+    {
+      if ( growth[dim] == 1 )
+      {
+        o = level[dim] + 1;
+      }
+      else if ( growth[dim] == 2 )
+      {
+        o = 2 * ( ( level[dim] + 1 ) / 2 ) + 1;
+      }
+      else if ( growth[dim] == 3 || growth[dim] == 0 )
+      {
+        o = 2 * level[dim] + 1;
+      }
+      else if ( growth[dim] == 4 )
+      {
+        o = 1;
+        while ( 2 * o - 1 < 2 * level[dim] + 1 )
+        {
+          o = 2 * o + 1;
+        }
+      }
+      else if ( growth[dim] == 5 )
+      {
+        o = 1;
+        while ( 2 * o - 1 < 4 * level[dim] + 1 )
+        {
+          o = 2 * o + 1;
+        }
+      }
+      else if ( growth[dim] == 6 )
+      {
+        o = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+      }
+    }
+//
+//  UC
+//  Default is Moderate Linear Growth.
+//  We assume the rule is of CLOSED type and that it
+//  has a precision typical of Clenshaw-Curtis rules.
+//
+    else if ( rule[dim] == 12 )
+    {
+      if ( growth[dim] == 1 )
+      {
+        o = level[dim] + 1;
+      }
+      else if ( growth[dim] == 2 )
+      {
+        o = 2 * ( ( level[dim] + 1 ) / 2 ) + 1;
+      }
+      else if ( growth[dim] == 3 || growth[dim] == 0 )
+      {
+        o = 2 * level[dim] + 1;
+      }
+      else if ( growth[dim] == 4 )
+      {
+        if ( level[dim] == 0 )
+        {
+          o = 1;
+        }
+        else
+        {
+          o = 2;
+          while ( o < 2 * level[dim] + 1 )
+          {
+            o = 2 * ( o - 1 ) + 1;
+          }
+        }
+      }
+      else if ( growth[dim] == 5 )
+      {
+        if ( level[dim] == 0 )
+        {
+          o = 1;
+        }
+        else
+        {
+          o = 2;
+          while ( o < 4 * level[dim] + 1 )
+          {
+            o = 2 * ( o - 1 ) + 1;
+          }
+        }
+      }
+      else if ( growth[dim] == 6 )
+      {
+        if ( level[dim] == 0 )
+        {
+          o = 1;
+        }
+        else
+        {
+          o = webbur::i4_power ( 2, level[dim] ) + 1;
+        }
+      }
+    }
+    order[dim] = o;
+  }
+  return;
+}
+//****************************************************************************80
+
+void level_to_order_default ( int dim_num, int level[], int rule[],
+  int order[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEVEL_TO_ORDER_DEFAULT: default growth.
+//
+//  Discussion:
+//
+//    This function uses:
+//
+//    * exponential growth rates for fully nested quadrature rules,
+//      ( "CC", "F2", "GP");
+//
+//    * linear growth rates for other rules.
+//      ( "GL", "GH", "GGH", "LG", "GLG", "GJ", "GW" ).
+//
+//    * slow exponential growth alternative for fully nested rules:
+//      ("CC_SE", "F2_SE", "GP_SE").
+//
+//    * moderate exponential growth alternative for fully nested rules:
+//      ("CC_ME", "F2_ME", "GP_ME").
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    07 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int DIM_NUM, the spatial dimension.
+//
+//    Input, int LEVEL[DIM_NUM], the 1D levels.
+//
+//    Input, int RULE[DIM_NUM], the rule in each dimension.
+//     1, "CC",  Clenshaw Curtis, Closed Fully Nested rule.
+//     2, "F2",  Fejer Type 2, Open Fully Nested rule.
+//     3, "GP",  Gauss Patterson, Open Fully Nested rule.
+//     4, "GL",  Gauss Legendre, Open Weakly Nested rule.
+//     5, "GH",  Gauss Hermite, Open Weakly Nested rule.
+//     6, "GGH", Generalized Gauss Hermite, Open Weakly Nested rule.
+//     7, "LG",  Gauss Laguerre, Open Non Nested rule.
+//     8, "GLG", Generalized Gauss Laguerre, Open Non Nested rule.
+//     9, "GJ",  Gauss Jacobi, Open Non Nested rule.
+//    10, "GW",  Golub Welsch, (presumed) Open Non Nested rule.
+//    11, "CC_SE", Clenshaw Curtis Slow Exponential, Closed Fully Nested rule.
+//    12, "F2_SE", Fejer Type 2 Slow Exponential, Open Fully Nested rule.
+//    13, "GP_SE", Gauss Patterson Slow Exponential, Open Fully Nested rule.
+//    14, "CC_ME", Clenshaw Curtis Moderate Exponential, Closed Fully Nested rule.
+//    15, "F2_ME", Fejer Type 2 Moderate Exponential, Open Fully Nested rule.
+//    16, "GP_ME", Gauss Patterson Moderate Exponential, Open Fully Nested rule.
+//    17, "CCN", Clenshaw Curtis Nested, Linear, Closed Fully Nested rule.
+//
+//    Output, int ORDER[DIM_NUM], the 1D orders (number of points).
+//
+{
+  int dim;
+  int o;
+  int p;
+
+  for ( dim = 0; dim < dim_num; dim++ )
+  {
+    if ( level[dim] < 0 )
+    {
+      std::cerr << "\n";
+      std::cerr << "LEVEL_TO_ORDER_DEFAULT - Fatal error!\n";
+      std::cerr << "  Negative value of LEVEL[DIM]!\n";
+      std::cerr << "  LEVEL[" << dim << "] = " << level[dim] << "\n";
+      std::exit ( 1 );
+    }
+    else if ( rule[dim] == 1 )
+    {
+      if ( level[dim] == 0 )
+      {
+        order[dim] = 1;
+      }
+      else
+      {
+        order[dim] = webbur::i4_power ( 2, level[dim] ) + 1;
+      }
+    }
+    else if ( rule[dim] == 2 )
+    {
+      order[dim] = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+    }
+    else if ( rule[dim] == 3 )
+    {
+      order[dim] = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+    }
+    else if ( rule[dim] == 4 )
+    {
+      order[dim] = 2 * level[dim] + 1;
+    }
+    else if ( rule[dim] == 5 )
+    {
+      order[dim] = 2 * level[dim] + 1;
+    }
+    else if ( rule[dim] == 6 )
+    {
+      order[dim] = 2 * level[dim] + 1;
+    }
+    else if ( rule[dim] == 7 )
+    {
+      order[dim] = 2 * level[dim] + 1;
+    }
+    else if ( rule[dim] == 8 )
+    {
+      order[dim] = 2 * level[dim] + 1;
+    }
+    else if ( rule[dim] == 9 )
+    {
+      order[dim] = 2 * level[dim] + 1;
+    }
+    else if ( rule[dim] == 10 )
+    {
+      order[dim] = 2 * level[dim] + 1;
+    }
+    else if ( rule[dim] == 11 )
+    {
+      if ( level[dim] == 0 )
+      {
+        o = 1;
+      }
+      else
+      {
+        o = 2;
+        while ( o < 2 * level[dim] + 1 )
+        {
+          o = 2 * ( o - 1 ) + 1;
+        }
+      }
+      order[dim] = o;
+    }
+    else if ( rule[dim] == 12 )
+    {
+      o = 1;
+      while ( o < 2 * level[dim] + 1 )
+      {
+        o = 2 * o + 1;
+      }
+      order[dim] = o;
+    }
+    else if ( rule[dim] == 13 )
+    {
+      if ( level[dim] == 0 )
+      {
+        order[dim] = 1;
+      }
+      else
+      {
+        p = 5;
+        o = 3;
+        while ( p < 2 * level[dim] + 1 )
+        {
+          p = 2 * p + 1;
+          o = 2 * o + 1;
+        }
+        order[dim] = o;
+      }
+    }
+    else if ( rule[dim] == 14 )
+    {
+      if ( level[dim] == 0 )
+      {
+        o = 1;
+      }
+      else
+      {
+        o = 2;
+        while ( o < 4 * level[dim] + 1 )
+        {
+          o = 2 * ( o - 1 ) + 1;
+        }
+      }
+      order[dim] = o;
+    }
+    else if ( rule[dim] == 15 )
+    {
+      o = 1;
+      while ( o < 4 * level[dim] + 1 )
+      {
+        o = 2 * o + 1;
+      }
+      order[dim] = o;
+    }
+    else if ( rule[dim] == 16 )
+    {
+      if ( level[dim] == 0 )
+      {
+        order[dim] = 1;
+      }
+      else
+      {
+        p = 5;
+        o = 3;
+        while ( p < 4 * level[dim] + 1 )
+        {
+          p = 2 * p + 1;
+          o = 2 * o + 1;
+        }
+        order[dim] = o;
+      }
+    }
+    else if ( rule[dim] == 17 )
+    {
+      order[dim] = 2 * level[dim] + 1;
+    }
+    else
+    {
+      std::cerr << "\n";
+      std::cerr << "LEVEL_TO_ORDER_DEFAULT - Fatal error!\n";
+      std::cerr << "  Unexpected value of RULE["
+           << dim << "] = " << rule[dim] << ".\n";
+      std::exit ( 1 );
+    }
+  }
+  return;
+}
+//****************************************************************************80
+
+void level_to_order_exponential ( int dim_num, int level[], int rule[],
+  int order[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEVEL_TO_ORDER_EXPONENTIAL: exponential growth.
+//
+//  Discussion:
+//
+//    The user must preallocate space for the output array ORDER.
+//
+//    Closed rules:
+//
+//      O(0) = 1
+//      O(L) = 2^L + 1;
+//
+//      O = 1, 3, 5, 9, 17, 33, ...
+//
+//    Open rules:
+//
+//      O(L) = 2^(L+1) - 1;
+//
+//      O = 1, 3, 7, 15, 31, 63, ...
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    07 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int DIM_NUM, the spatial dimension.
+//
+//    Input, int LEVEL[DIM_NUM], the 1D levels.
+//
+//    Input, int RULE[DIM_NUM], the rule in each dimension.
+//     1, "CC",  Clenshaw Curtis, Closed Fully Nested rule.
+//     2, "F2",  Fejer Type 2, Open Fully Nested rule.
+//     3, "GP",  Gauss Patterson, Open Fully Nested rule.
+//     4, "GL",  Gauss Legendre, Open Weakly Nested rule.
+//     5, "GH",  Gauss Hermite, Open Weakly Nested rule.
+//     6, "GGH", Generalized Gauss Hermite, Open Weakly Nested rule.
+//     7, "LG",  Gauss Laguerre, Open Non Nested rule.
+//     8, "GLG", Generalized Gauss Laguerre, Open Non Nested rule.
+//     9, "GJ",  Gauss Jacobi, Open Non Nested rule.
+//    10, "GW",  Golub Welsch, (presumed) Open Non Nested rule.
+//    11, "CC_SE", Clenshaw Curtis Slow Exponential, Closed Fully Nested rule.
+//    12, "F2_SE", Fejer Type 2 Slow Exponential, Open Fully Nested rule.
+//    13, "GP_SE", Gauss Patterson Slow Exponential, Open Fully Nested rule.
+//    14, "CC_ME", Clenshaw Curtis Moderate Exponential, Closed Fully Nested rule.
+//    15, "F2_ME", Fejer Type 2 Moderate Exponential, Open Fully Nested rule.
+//    16, "GP_ME", Gauss Patterson Moderate Exponential, Open Fully Nested rule.
+//    17, "CCN", Clenshaw Curtis Nested, Linear, Closed Fully Nested rule.
+//
+//    Output, int ORDER[DIM_NUM], the 1D orders (number of points).
+//
+{
+  int dim;
+
+  for ( dim = 0; dim < dim_num; dim++ )
+  {
+    if ( level[dim] < 0 )
+    {
+      std::cerr << "\n";
+      std::cerr << "LEVEL_TO_ORDER_EXPONENTIAL - Fatal error!\n";
+      std::cerr << "  Negative value of LEVEL[DIM]!\n";
+      std::cerr << "  LEVEL[" << dim << "] = " << level[dim] << "\n";
+      std::exit ( 1 );
+    }
+    else if ( rule[dim] == 1 )
+    {
+      if ( level[dim] == 0 )
+      {
+        order[dim] = 1;
+      }
+      else
+      {
+        order[dim] = webbur::i4_power ( 2, level[dim] ) + 1;
+      }
+    }
+    else if ( rule[dim] == 2 )
+    {
+      order[dim] = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+    }
+    else if ( rule[dim] == 3 )
+    {
+      order[dim] = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+    }
+    else if ( rule[dim] == 4 )
+    {
+      order[dim] = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+    }
+    else if ( rule[dim] == 5 )
+    {
+      order[dim] = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+    }
+    else if ( rule[dim] == 6 )
+    {
+      order[dim] = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+    }
+    else if ( rule[dim] == 7 )
+    {
+      order[dim] = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+    }
+    else if ( rule[dim] == 8 )
+    {
+      order[dim] = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+    }
+    else if ( rule[dim] == 9 )
+    {
+      order[dim] = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+    }
+    else if ( rule[dim] == 10 )
+    {
+      order[dim] = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+    }
+    else if ( rule[dim] == 11 )
+    {
+      if ( level[dim] == 0 )
+      {
+        order[dim] = 1;
+      }
+      else
+      {
+        order[dim] = webbur::i4_power ( 2, level[dim] ) + 1;
+      }
+    }
+    else if ( rule[dim] == 12 )
+    {
+      order[dim] = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+    }
+    else if ( rule[dim] == 13 )
+    {
+      order[dim] = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+    }
+    else if ( rule[dim] == 14 )
+    {
+      if ( level[dim] == 0 )
+      {
+        order[dim] = 1;
+      }
+      else
+      {
+        order[dim] = webbur::i4_power ( 2, level[dim] ) + 1;
+      }
+    }
+    else if ( rule[dim] == 15 )
+    {
+      order[dim] = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+    }
+    else if ( rule[dim] == 16 )
+    {
+      order[dim] = webbur::i4_power ( 2, level[dim] + 1 ) - 1;
+    }
+    else if ( rule[dim] == 17 )
+    {
+      order[dim] = webbur::i4_power ( 2, level[dim] + 1 );
+    }
+    else
+    {
+      std::cerr << "\n";
+      std::cerr << "LEVEL_TO_ORDER_EXPONENTIAL - Fatal error!\n";
+      std::cerr << "  Unexpected value of RULE["
+           << dim << "] = " << rule[dim] << ".\n";
+      std::exit ( 1 );
+    }
+  }
+  return;
+}
+//****************************************************************************80
+
+void level_to_order_exponential_slow ( int dim_num, int level[], int rule[],
+  int order[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEVEL_TO_ORDER_EXPONENTIAL_SLOW: slow exponential growth;
+//
+//  Discussion:
+//
+//    We seek a sequence of quadrature rules with two opposing constraints:
+//    * a measured rise in polynomial precision with increasing level;
+//    * a control on the increase in (new) points per level;
+//
+//    Essentially, we are trying to keep some of the advantages of nesting,
+//    while moderating the cost of the explosive growth in order that occurs
+//    due to the repeated order doubling of nesting.
+//
+//    We wish the number of points at a given level L to be "about" 2 * L + 1,
+//    but we also wish the rules to be completely nested.
+//
+//    One way to do this is to start with a nested family of rules, whose
+//    order will tend to grow exponentially (doubling from one to the next),
+//    but simply to REPEAT each rule as many times as possible.  We move to
+//    the next rule only when the desired precision 2 * L + 1 exceeds the
+//    precision of the current rule.
+//
+//    For both the Clenshaw Curtis and Fejer Type 2 rules, the order and
+//    precision are the same if the order is odd.   That is, an 11 point rule
+//    will integrate exactly all polynomials up to and including degree 11.
+//
+//    For Gauss Patterson rules, the relationship between order and precision
+//    is somewhat more complicated.  For that rule, we take the philosophy
+//    that at each level L, we wish to choose the rule of smallest order
+//    so that the precision of 2 * L + 1 is guaranteed.
+//
+//     L    2*L+1  CC Order    F2 Order    GP Order/Precision
+//
+//     0        1         1           1        1/1
+//     1        3         3           3        3/5
+//     2        5         5           7        3/5
+//     3        7         9           7        7/11
+//     4        9         9          15        7/11
+//     5       11        17          15        7/11
+//     6       13        17          15       15/23
+//     7       15        17          15       15/23
+//     8       17        17          31       15/23
+//     9       19        33          31       15/23
+//    10       21        33          31       15/23
+//    11       23        33          31       15/23
+//    12       25        33          31       31/47
+//    13       27        33          31       31/47
+//    14       29        33          31       31/47
+//    15       31        33          31       31/47
+//    16       33        33          63       31/47
+//    17       35        65          63       31/47
+//    18       37        65          63       31/47
+//    19       39        65          63       31/47
+//    20       41        65          63       31/47
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    07 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Knut Petras,
+//    Smolyak Cubature of Given Polynomial Degree with Few Nodes
+//    for Increasing Dimension,
+//    Numerische Mathematik,
+//    Volume 93, Number 4, February 2003, pages 729-753.
+//
+//  Parameters:
+//
+//    Input, int DIM_NUM, the spatial dimension.
+//
+//    Input, int LEVEL[DIM_NUM], the 1D levels.
+//
+//    Input, int RULE[DIM_NUM], the rule in each dimension.
+//     1, "CC",  Clenshaw Curtis, Closed Fully Nested rule.
+//     2, "F2",  Fejer Type 2, Open Fully Nested rule.
+//     3, "GP",  Gauss Patterson, Open Fully Nested rule.
+//     4, "GL",  Gauss Legendre, Open Weakly Nested rule.
+//     5, "GH",  Gauss Hermite, Open Weakly Nested rule.
+//     6, "GGH", Generalized Gauss Hermite, Open Weakly Nested rule.
+//     7, "LG",  Gauss Laguerre, Open Non Nested rule.
+//     8, "GLG", Generalized Gauss Laguerre, Open Non Nested rule.
+//     9, "GJ",  Gauss Jacobi, Open Non Nested rule.
+//    10, "GW",  Golub Welsch, (presumed) Open Non Nested rule.
+//    11, "CC_SE", Clenshaw Curtis Slow Exponential, Closed Fully Nested rule.
+//    12, "F2_SE", Fejer Type 2 Slow Exponential, Open Fully Nested rule.
+//    13, "GP_SE", Gauss Patterson Slow Exponential, Open Fully Nested rule.
+//    14, "CC_ME", Clenshaw Curtis Moderate Exponential, Closed Fully Nested rule.
+//    15, "F2_ME", Fejer Type 2 Moderate Exponential, Open Fully Nested rule.
+//    16, "GP_ME", Gauss Patterson Moderate Exponential, Open Fully Nested rule.
+//    17, "CCN", Clenshaw Curtis Nested, Linear, Closed Fully Nested rule.
+//
+//    Output, int ORDER[DIM_NUM], the 1D orders (number of points).
+//
+{
+  int dim;
+  int o;
+  int p;
+
+  for ( dim = 0; dim < dim_num; dim++ )
+  {
+    if ( level[dim] < 0 )
+    {
+      std::cerr << "\n";
+      std::cerr << "LEVEL_TO_ORDER_EXPONENTIAL_SLOW - Fatal error!\n";
+      std::cerr << "  Negative value of LEVEL[DIM]!\n";
+      std::cerr << "  LEVEL[" << dim << "] = " << level[dim] << "\n";
+      std::exit ( 1 );
+    }
+  }
+
+  for ( dim = 0; dim < dim_num; dim++ )
+  {
+    if ( rule[dim] == 1 || rule[dim] == 11 || rule[dim] == 14 || rule[dim] == 17 )
+    {
+      if ( level[dim] == 0 )
+      {
+        o = 1;
+      }
+      else
+      {
+        o = 2;
+        while ( o < 2 * level[dim] + 1 )
+        {
+          o = 2 * ( o - 1 ) + 1;
+        }
+      }
+    }
+    else if ( rule[dim] == 3 || rule[dim] == 13 || rule[dim] == 16 )
+    {
+      if ( level[dim] == 0 )
+      {
+        o = 1;
+      }
+      else
+      {
+        p = 5;
+        o = 3;
+        while ( p < 2 * level[dim] + 1 )
+        {
+          p = 2 * p + 1;
+          o = 2 * o + 1;
+        }
+      }
+    }
+    else
+    {
+      o = 1;
+      while ( o < 2 * level[dim] + 1 )
+      {
+        o = 2 * o + 1;
+      }
+    }
+    order[dim] = o;
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void level_to_order_linear ( int dim_num, int level[], int rule[],
+  int order[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEVEL_TO_ORDER_LINEAR: linear growth.
+//
+//  Discussion:
+//
+//    The user must preallocate space for the output array ORDER.
+//
+//      O(L) = 2 * L + 1;
+//
+//      O = 1, 3, 5, 7, 9, ...
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    07 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int DIM_NUM, the spatial dimension.
+//
+//    Input, int LEVEL[DIM_NUM], the 1D levels.
+//
+//    Input, int RULE[DIM_NUM], the rule in each dimension.
+//     1, "CC",  Clenshaw Curtis, Closed Fully Nested rule.
+//     2, "F2",  Fejer Type 2, Open Fully Nested rule.
+//     3, "GP",  Gauss Patterson, Open Fully Nested rule.
+//     4, "GL",  Gauss Legendre, Open Weakly Nested rule.
+//     5, "GH",  Gauss Hermite, Open Weakly Nested rule.
+//     6, "GGH", Generalized Gauss Hermite, Open Weakly Nested rule.
+//     7, "LG",  Gauss Laguerre, Open Non Nested rule.
+//     8, "GLG", Generalized Gauss Laguerre, Open Non Nested rule.
+//     9, "GJ",  Gauss Jacobi, Open Non Nested rule.
+//    10, "GW",  Golub Welsch, (presumed) Open Non Nested rule.
+//    11, "CC_SE", Clenshaw Curtis Slow Exponential, Closed Fully Nested rule.
+//    12, "F2_SE", Fejer Type 2 Slow Exponential, Open Fully Nested rule.
+//    13, "GP_SE", Gauss Patterson Slow Exponential, Open Fully Nested rule.
+//    14, "CC_ME", Clenshaw Curtis Moderate Exponential, Closed Fully Nested rule.
+//    15, "F2_ME", Fejer Type 2 Moderate Exponential, Open Fully Nested rule.
+//    16, "GP_ME", Gauss Patterson Moderate Exponential, Open Fully Nested rule.
+//    17, "CCN", Clenshaw Curtis Nested, Linear, Closed Fully Nested rule.
+//
+//    Output, int ORDER[DIM_NUM], the 1D orders (number of points).
+//
+{
+  int dim;
+
+  for ( dim = 0; dim < dim_num; dim++ )
+  {
+    if ( level[dim] < 0 )
+    {
+      std::cerr << "\n";
+      std::cerr << "LEVEL_TO_ORDER_LINEAR - Fatal error!\n";
+      std::cerr << "  Negative value of LEVEL[DIM]!\n";
+      std::cerr << "  LEVEL[" << dim << "] = " << level[dim] << "\n";
+      std::exit ( 1 );
+    }
+  }
+
+  for ( dim = 0; dim < dim_num; dim++ )
+  {
+    order[dim] = 2 * level[dim] + 1;
+  }
+
+  return;
+}
+//****************************************************************************80
+
+int level_to_order_exp_cc ( int level, int growth )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEVEL_TO_ORDER_EXP_CC is used for Clenshaw-Curtis type rules.
+//
+//  Discussion:
+//
+//    Rules of this type are assumed to be closed (including both endpoints
+//    except for the level 0 rule) and having a precision
+//    behavior typical of Clenshaw Curtis rules, namely, the ORDER-point
+//    rule is exact for polynomials of degree less than ORDER, and if
+//    ORDER is odd, then the exactness includes polynomials of degree ORDER
+//    as well.
+//
+//    LEVEL  ORDER  ORDER  ORDER
+//           G = 0  G = 1  G = 2
+//    -----  -----  -----  -----
+//        0      1      1      1
+//        1      3      5      3
+//        2      5      9      5
+//        3      9     17      9
+//        4      9     17     17
+//        5     17     33     33
+//        6     17     33     65
+//        7     17     33    129
+//        8     17     33    257
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    31 December 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int LEVEL, the level of the rule.
+//
+//    Input, int GROWTH, the growth policy:
+//    0, slow growth;
+//    1, moderate growth;
+//    2, full growth.
+//
+//    Output, int LEVEL_TO_ORDER_EXP_CC, the order of the rule.
+//
+{
+  int o;
+//
+//  Slow exponential growth.
+//
+  if ( growth == 0 )
+  {
+    if ( level == 0 )
+    {
+      o = 1;
+    }
+    else
+    {
+      o = 2;
+      while ( o < 2 * level + 1 )
+      {
+        o = 2 * ( o - 1 ) + 1;
+      }
+    }
+  }
+//
+//  Moderate Exponential Growth.
+//
+  else if ( growth == 1 )
+  {
+    if ( level == 0 )
+    {
+      o = 1;
+    }
+    else
+    {
+      o = 2;
+      while ( o < 4 * level + 1 )
+      {
+        o = 2 * ( o - 1 ) + 1;
+      }
+    }
+  }
+//
+//  Full Exponential Growth.
+//
+  else if ( growth == 2 )
+  {
+    if ( level == 0 )
+    {
+      o = 1;
+    }
+    else
+    {
+      o = webbur::i4_power ( 2, level ) + 1;
+    }
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "LEVEL_TO_ORDER_EXP_CC - Fatal error!\n";
+    std::cerr << "  Illegal value of GROWTH = " << growth << "\n";
+    std::exit ( 1 );
+  }
+  return o;
+}
+//****************************************************************************80
+
+int level_to_order_exp_f2 ( int level, int growth )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEVEL_TO_ORDER_EXP_F2 is used for Fejer 2 type rules.
+//
+//  Discussion:
+//
+//    Rules of this type are assumed to be open (not including either endpoint)
+//    and having a precision behavior typical of Fejer Type 2
+//    rules, namely, the ORDER-point rule is exact for polynomials of degree
+//    less than ORDER, and if ORDER is odd, then the exactness includes
+//    polynomials of degree ORDER as well.
+//
+//    LEVEL  ORDER  ORDER  ORDER
+//           G = 0  G = 1  G = 2
+//
+//        0      1      1      1
+//        1      3      7      3
+//        2      7     15      7
+//        3      7     15     15
+//        4     15     31     31
+//        5     15     31     63
+//        6     15     31    127
+//        7     15     31    255
+//        8     31     63    511
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    31 December 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int LEVEL, the level of the rule.
+//
+//    Input, int GROWTH, the growth policy:
+//    0, slow growth;
+//    1, moderate growth;
+//    2, full growth.
+//
+//    Output, int LEVEL_TO_ORDER_EXP_F2, the order of the rule.
+//
+{
+  int o;
+//
+//  Slow exponential growth.
+//
+  if ( growth == 0 )
+  {
+    if ( level == 0 )
+    {
+      o = 1;
+    }
+    else
+    {
+      o = 1;
+      while ( o < 2 * level + 1 )
+      {
+        o = 2 * o + 1;
+      }
+    }
+  }
+//
+//  Moderate Exponential Growth.
+//
+  else if ( growth == 1 )
+  {
+    if ( level == 0 )
+    {
+      o = 1;
+    }
+    else
+    {
+      o = 1;
+      while ( o < 4 * level + 1 )
+      {
+        o = 2 * o + 1;
+      }
+    }
+  }
+//
+//  Full Exponential Growth.
+//
+  else if ( growth == 2 )
+  {
+    if ( level == 0 )
+    {
+      o = 1;
+    }
+    else
+    {
+      o = webbur::i4_power ( 2, level + 1 ) - 1;
+    }
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "LEVEL_TO_ORDER_EXP_F2 - Fatal error!\n";
+    std::cerr << "  Illegal value of GROWTH = " << growth << "\n";
+    std::exit ( 1 );
+  }
+  return o;
+}
+//****************************************************************************80
+
+int level_to_order_exp_gauss ( int level, int growth )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEVEL_TO_ORDER_EXP_GAUSS is used for Gauss type rules.
+//
+//  Discussion:
+//
+//    Rules of this type are assumed to be open (not including either endpoint),
+//    and having a precision behavior typical of Gauss rules, namely, the
+//    ORDER-point rule is exact for polynomials of degree less than 2 * ORDER.
+//
+//    LEVEL  ORDER  ORDER  ORDER
+//           G = 0  G = 1  G = 2
+//
+//        0      1      1      1
+//        1      3      3      3
+//        2      3      7      7
+//        3      7      7     15
+//        4      7     15     31
+//        5      7     15     63
+//        6      7     15    127
+//        7     15     15    255
+//        8     15     31    511
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    31 December 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int LEVEL, the level of the rule.
+//
+//    Input, int GROWTH, the growth policy:
+//    0, slow growth;
+//    1, moderate growth;
+//    2, full growth.
+//
+//    Output, int LEVEL_TO_ORDER_EXP_GAUSS, the order of the rule.
+//
+{
+  int o;
+//
+//  Slow exponential growth.
+//
+  if ( growth == 0 )
+  {
+    if ( level == 0 )
+    {
+      o = 1;
+    }
+    else
+    {
+      o = 1;
+      while ( 2 * o - 1 < 2 * level + 1 )
+      {
+        o = 2 * o + 1;
+      }
+    }
+  }
+//
+//  Moderate Exponential Growth.
+//
+  else if ( growth == 1 )
+  {
+    if ( level == 0 )
+    {
+      o = 1;
+    }
+    else
+    {
+      o = 1;
+      while ( 2 * o - 1 < 4 * level + 1 )
+      {
+        o = 2 * o + 1;
+      }
+    }
+  }
+//
+//  Full Exponential Growth.
+//
+  else if ( growth == 2 )
+  {
+    if ( level == 0 )
+    {
+      o = 1;
+    }
+    else
+    {
+      o = webbur::i4_power ( 2, level + 1 ) - 1;
+    }
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "LEVEL_TO_ORDER_EXP_GAUSS - Fatal error!\n";
+    std::cerr << "  Illegal value of GROWTH = " << growth << "\n";
+    std::exit ( 1 );
+  }
+
+  return o;
+}
+//****************************************************************************80
+
+int level_to_order_exp_gp ( int level, int growth )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEVEL_TO_ORDER_EXP_GP is used for Gauss-Patterson type rules.
+//
+//  Discussion:
+//
+//    Rules of this type are assumed to be open (not including either endpoint)
+//    and having a precision behavior typical of Gauss Patterson rules.
+//
+//    Note that there are onlly 9 rules in the family, and so it is possible to
+//    specify input for which the function will fail.
+//
+//    LEVEL  ORDER  ORDER  ORDER
+//           G = 0  G = 1  G = 2
+//
+//        0      1      1      1
+//        1      3      3      3
+//        2      3      7      7
+//        3      7     15     15
+//        4      7     15     31
+//        5      7     15     63
+//        6     15     31    127
+//        7     15     31    255
+//        8     15     31    511
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    31 December 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int LEVEL, the level of the rule.
+//
+//    Input, int GROWTH, the growth policy:
+//    0, slow growth;
+//    1, moderate growth;
+//    2, full growth.
+//
+//    Output, int LEVEL_TO_ORDER_EXP_GP, the order of the rule.
+//
+{
+  int o;
+  int p;
+//
+//  Slow exponential growth.
+//
+  if ( growth == 0 )
+  {
+    if ( level == 0 )
+    {
+      o = 1;
+    }
+    else
+    {
+      p = 5;
+      o = 3;
+      while ( p < 2 * level + 1 )
+      {
+        p = 2 * p + 1;
+        o = 2 * o + 1;
+        if ( 511 < o )
+        {
+          std::cerr << "\n";
+          std::cerr << "LEVEL_TO_ORDER_EXP_GP - Fatal error!\n";
+          std::cerr << "  Request for unavailable Patterson rule.\n";
+          std::exit ( 1 );
+        }
+      }
+    }
+  }
+//
+//  Moderate Exponential Growth.
+//
+  else if ( growth == 1 )
+  {
+    if ( level == 0 )
+    {
+      o = 1;
+    }
+    else
+    {
+      p = 5;
+      o = 3;
+      while ( p < 4 * level + 1 )
+      {
+        p = 2 * p + 1;
+        o = 2 * o + 1;
+        if ( 511 < o )
+        {
+          std::cerr << "\n";
+          std::cerr << "LEVEL_TO_ORDER_EXP_GP - Fatal error!\n";
+          std::cerr << "  Request for unavailable Patterson rule.\n";
+          std::exit ( 1 );
+        }
+      }
+    }
+  }
+//
+//  Full Exponential Growth.
+//
+  else if ( growth == 2 )
+  {
+    if ( level == 0 )
+    {
+      o = 1;
+    }
+    else
+    {
+      o = webbur::i4_power ( 2, level + 1 ) - 1;
+      if ( 511 < o )
+      {
+        std::cerr << "\n";
+        std::cerr << "LEVEL_TO_ORDER_EXP_GP - Fatal error!\n";
+        std::cerr << "  Request for unavailable Patterson rule.\n";
+        std::exit ( 1 );
+      }
+    }
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "LEVEL_TO_ORDER_EXP_GP - Fatal error!\n";
+    std::cerr << "  Illegal value of GROWTH = " << growth << "\n";
+    std::exit ( 1 );
+  }
+
+  return o;
+}
+//****************************************************************************80
+
+int level_to_order_exp_hgk ( int level, int growth )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEVEL_TO_ORDER_EXP_HGK is used for Hermite Genz-Keister type rules.
+//
+//  Discussion:
+//
+//    Rules of this type are assumed to be open (not including either endpoint)
+//    and having a precision behavior typical of Hermite Genz-Keister rules.
+//
+//    Note that there are only 6 rules in the family, and so it is possible to
+//    specify input for which the function will fail.
+//
+//    LEVEL  ORDER  ORDER  ORDER
+//           G = 0  G = 1  G = 2
+//
+//        0      1      1      1
+//        1      3      3      3
+//        2      3      9      9
+//        3      9      9     19
+//        4      9     19     35
+//        5      9     19     43
+//        6      9     19     --
+//        7      9     19     --
+//        8     19     35     --
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    31 December 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int LEVEL, the level of the rule.
+//
+//    Input, int GROWTH, the growth policy:
+//    0, slow growth;
+//    1, moderate growth;
+//    2, full growth.
+//
+//    Output, int LEVEL_TO_ORDER_EXP_HGK, the order of the rule.
+//
+{
+  int l;
+  int o;
+  static int o_hgk[6] = { 1, 3, 9, 19, 35, 43 };
+  int p;
+  static int p_hgk[6] = { 1, 5, 15, 29, 51, 67 };
+//
+//  Slow exponential growth.
+//
+  if ( growth == 0 )
+  {
+    l = 0;
+    p = p_hgk[l];
+    o = o_hgk[l];
+    while ( p < 2 * level + 1 )
+    {
+      l = l + 1;
+      if ( 5 < l )
+      {
+        std::cerr << "\n";
+        std::cerr << "LEVEL_TO_ORDER_EXP_HGK - Fatal error!\n";
+        std::cerr << "  Hermite Genz-Keister maximum level exceeded.\n";
+        std::exit ( 1 );
+      }
+      p = p_hgk[l];
+      o = o_hgk[l];
+    }
+  }
+  else if ( growth == 1 )
+  {
+    l = 0;
+    p = p_hgk[l];
+    o = o_hgk[l];
+    while ( p < 4 * level + 1 )
+    {
+      l = l + 1;
+      if ( 5 < l )
+      {
+        std::cerr << "\n";
+        std::cerr << "LEVEL_TO_ORDER_EXP_HGK - Fatal error!\n";
+        std::cerr << "  Hermite Genz-Keister maximum level exceeded.\n";
+        std::exit ( 1 );
+      }
+      p = p_hgk[l];
+      o = o_hgk[l];
+    }
+  }
+  else if ( growth == 2 )
+  {
+    l = level;
+    l = webbur::i4_max ( l, 0 );
+    if ( 5 < l )
+    {
+      std::cerr << "\n";
+      std::cerr << "LEVEL_TO_ORDER_EXP_HGK - Fatal error!\n";
+      std::cerr << "  Hermite Genz-Keister maximum level exceeded.\n";
+      std::exit ( 1 );
+    }
+    o = o_hgk[l];
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "LEVEL_TO_ORDER_EXP_HGK - Fatal error!\n";
+    std::cerr << "  Illegal value of GROWTH = " << growth << "\n";
+    std::exit ( 1 );
+  }
+
+  return o;
+}
+//****************************************************************************80
+
+int level_to_order_linear_nn ( int level, int growth )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEVEL_TO_ORDER_LINEAR_NN is used for non-nested Gauss type rules.
+//
+//  Discussion:
+//
+//    Rules of this type are assumed to be open (not including either endpoint),
+//    non-nested, and having a precision behavior typical of Gauss rules.
+//
+//    LEVEL  ORDER  ORDER
+//           G = 0  G = 1
+//
+//        0      1      1
+//        1      2      3
+//        2      3      5
+//        3      4      7
+//        4      5      9
+//        5      6     11
+//        6      7     13
+//        7      8     15
+//        8      9     17
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    31 December 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int LEVEL, the level of the rule.
+//
+//    Input, int GROWTH, the growth policy:
+//    0, slow growth;
+//    1, moderate growth;
+//
+//    Output, int LEVEL_TO_ORDER_LINEAR_NN, the order of the rule.
+//
+{
+  int o;
+//
+//  Slow linear growth.
+//
+  if ( growth == 0 )
+  {
+    o = level + 1;
+  }
+//
+//  Moderate linear growth.
+//
+  else if ( growth == 1 )
+  {
+    o = 2 * level + 1;
+  }
+  else if ( growth == 2 )
+  {
+    o = 2 * level + 1;
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "LEVEL_TO_ORDER_LINEAR_NN - Fatal error!\n";
+    std::cerr << "  Illegal value of GROWTH = " << growth << "\n";
+    std::exit ( 1 );
+  }
+  return o;
+}
+//****************************************************************************80
+
+int level_to_order_linear_wn ( int level, int growth )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    LEVEL_TO_ORDER_LINEAR_WN is used for weakly-nested Gauss type rules.
+//
+//  Discussion:
+//
+//    Rules of this type are assumed to be open (not including either endpoint),
+//    nested, and having a precision behavior typical of Gauss rules.
+//
+//    We assume the rules are to be generated with an odd number of points,
+//    and that all the rules will share a single point, namely 0.
+//
+//    Note that the "moderate growth" option for this function results in the
+//    same values as the moderate growth option for LEVEL_TO_ORDER_LINEAR_NN.
+//
+//    LEVEL  ORDER  ORDER
+//           G = 0  G = 1
+//
+//        0      1      1
+//        1      3      3
+//        2      3      5
+//        3      5      7
+//        4      5      9
+//        5      7     11
+//        6      7     13
+//        7      9     15
+//        8      9     17
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    31 December 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int LEVEL, the level of the rule.
+//
+//    Input, int GROWTH, the growth policy:
+//    0, slow growth;
+//    1, moderate growth;
+//
+//    Output, int LEVEL_TO_ORDER_LINEAR_WN, the order of the rule.
+//
+{
+  int o;
+//
+//  Slow growth.
+//
+  if ( growth == 0 )
+  {
+    o = 2 * ( ( level + 1 ) / 2 ) + 1;
+  }
+  else if ( growth == 1 )
+  {
+    o = 2 * level + 1;
+  }
+  else if ( growth == 2 )
+  {
+    o = 2 * level + 1;
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "LEVEL_TO_ORDER_LINEAR_WN - Fatal error!\n";
+    std::cerr << "  Illegal value of GROWTH = " << growth << "\n";
+    std::exit ( 1 );
+  }
+  return o;
+}
+//****************************************************************************80
+
+void nc_compute ( int n, double x_min, double x_max, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    NC_COMPUTE computes a Newton-Cotes quadrature rule.
+//
+//  Discussion:
+//
+//    For the interval [X_MIN,X_MAX], the Newton-Cotes quadrature rule
+//    estimates
+//
+//      Integral ( X_MIN <= X <= X_MAX ) F(X) dX
+//
+//    using N abscissas X and weights W:
+//
+//      Sum ( 1 <= I <= N ) W(I) * F ( X(I) ).
+//
+//    For the CLOSED rule, the abscissas include the end points.
+//    For the OPEN rule, the abscissas do not include the end points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    17 November 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Input, double X_MIN, X_MAX, the endpoints of the interval.
+//
+//    Input, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  double *d;
+  int i;
+  int j;
+  int k;
+  double yvala;
+  double yvalb;
+
+  d = new double[n];
+
+  for ( i = 0; i < n; i++ )
+  {
+//
+//  Compute the Lagrange basis polynomial which is 1 at XTAB(I),
+//  and zero at the other nodes.
+//
+    for ( j = 0; j < n; j++ )
+    {
+      d[j] = 0.0;
+    }
+    d[i] = 1.0;
+
+    for ( j = 2; j <= n; j++ )
+    {
+      for ( k = j; k <= n; k++ )
+      {
+        d[n+j-k-1] = ( d[n+j-k-1-1] - d[n+j-k-1] ) / ( x[n+1-k-1] - x[n+j-k-1] );
+      }
+    }
+
+    for ( j = 1; j <= n - 1; j++ )
+    {
+      for ( k = 1; k <= n - j; k++ )
+      {
+        d[n-k-1] = d[n-k-1] - x[n-k-j] * d[n-k];
+      }
+    }
+//
+//  Evaluate the antiderivative of the polynomial at the left and
+//  right endpoints.
+//
+    yvala = d[n-1] / ( double ) ( n );
+    for ( j = n - 2; 0 <= j; j-- )
+    {
+      yvala = yvala * x_min + d[j] / ( double ) ( j + 1 );
+    }
+    yvala = yvala * x_min;
+
+    yvalb = d[n-1] / ( double ) ( n );
+    for ( j = n - 2; 0 <= j; j-- )
+    {
+      yvalb = yvalb * x_max + d[j] / ( double ) ( j + 1 );
+    }
+    yvalb = yvalb * x_max;
+
+    w[i] = yvalb - yvala;
+  }
+
+  delete [] d;
+
+  return;
+}
+//****************************************************************************80
+
+double *nc_compute_new ( int n, double x_min, double x_max, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    NC_COMPUTE_NEW computes a Newton-Cotes quadrature rule.
+//
+//  Discussion:
+//
+//    For the interval [X_MIN,X_MAX], the Newton-Cotes quadrature rule
+//    estimates
+//
+//      Integral ( X_MIN <= X <= X_MAX ) F(X) dX
+//
+//    using N abscissas X and weights W:
+//
+//      Sum ( 1 <= I <= N ) W(I) * F ( X(I) ).
+//
+//    For the CLOSED rule, the abscissas include the end points.
+//    For the OPEN rule, the abscissas do not include the end points.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    17 November 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Input, double X_MIN, X_MAX, the endpoints of the interval.
+//
+//    Input, double X[N], the abscissas.
+//
+//    Output, double NC_COMPUTE_NEW[N], the weights.
+//
+{
+  double *d;
+  int i;
+  int j;
+  int k;
+  double *w;
+  double yvala;
+  double yvalb;
+
+  d = new double[n];
+  w = new double[n];
+
+  for ( i = 0; i < n; i++ )
+  {
+//
+//  Compute the Lagrange basis polynomial which is 1 at XTAB(I),
+//  and zero at the other nodes.
+//
+    for ( j = 0; j < n; j++ )
+    {
+      d[j] = 0.0;
+    }
+    d[i] = 1.0;
+
+    for ( j = 2; j <= n; j++ )
+    {
+      for ( k = j; k <= n; k++ )
+      {
+        d[n+j-k-1] = ( d[n+j-k-1-1] - d[n+j-k-1] ) / ( x[n+1-k-1] - x[n+j-k-1] );
+      }
+    }
+
+    for ( j = 1; j <= n - 1; j++ )
+    {
+      for ( k = 1; k <= n - j; k++ )
+      {
+        d[n-k-1] = d[n-k-1] - x[n-k-j] * d[n-k];
+      }
+    }
+//
+//  Evaluate the antiderivative of the polynomial at the left and
+//  right endpoints.
+//
+    yvala = d[n-1] / ( double ) ( n );
+    for ( j = n - 2; 0 <= j; j-- )
+    {
+      yvala = yvala * x_min + d[j] / ( double ) ( j + 1 );
+    }
+    yvala = yvala * x_min;
+
+    yvalb = d[n-1] / ( double ) ( n );
+    for ( j = n - 2; 0 <= j; j-- )
+    {
+      yvalb = yvalb * x_max + d[j] / ( double ) ( j + 1 );
+    }
+    yvalb = yvalb * x_max;
+
+    w[i] = yvalb - yvala;
+  }
+
+  delete [] d;
+
+  return w;
+}
+//****************************************************************************80
+
+void ncc_compute_points ( int n, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    NCC_COMPUTE_POINTS: points of a Newton-Cotes Closed quadrature rule.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    16 November 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  int i;
+  double x_max = 1.0;
+  double x_min = -1.0;
+
+  if ( n == 1 )
+  {
+    x[0] = ( x_max + x_min ) / 2.0;
+  }
+  else
+  {
+    for ( i = 0; i < n; i++ )
+    {
+      x[i] = ( ( double ) ( n - i - 1 ) * x_min
+             + ( double ) (     i     ) * x_max )
+             / ( double ) ( n     - 1 );
+    }
+  }
+  return;
+}
+//****************************************************************************80
+
+void ncc_compute_weights ( int n, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    NCC_COMPUTE_WEIGHTS: weights of a Newton-Cotes Closed quadrature rule.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    16 November 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Output, double W[N], the weights.
+//
+{
+  int i;
+  double *x;
+  double x_max = 1.0;
+  double x_min = -1.0;
+
+  if ( n == 1 )
+  {
+    w[0] = x_max - x_min;
+  }
+  else
+  {
+    x = new double[n];
+
+    for ( i = 0; i < n; i++ )
+    {
+      x[i] = ( ( double ) ( n - i - 1 ) * x_min
+             + ( double ) (     i     ) * x_max )
+             / ( double ) ( n     - 1 );
+    }
+    webbur::nc_compute ( n, x_min, x_max, x, w );
+
+    delete [] x;
+  }
+  return;
+}
+//****************************************************************************80
+
+void nco_compute_points ( int n, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    NCO_COMPUTE_POINTS: points for a Newton-Cotes Open quadrature rule.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    17 November 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  int i;
+  double x_max = 1.0;
+  double x_min = -1.0;
+
+  for ( i = 0; i < n; i++ )
+  {
+    x[i] = ( ( double ) ( n - i     ) * x_min
+           + ( double ) (   + i + 1 ) * x_max )
+           / ( double ) ( n     + 1 );
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void nco_compute_weights ( int n, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    NCO_COMPUTE_WEIGHTS: weights for a Newton-Cotes Open quadrature rule.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    17 November 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Output, double W[N], the weights.
+//
+{
+  int i;
+  double *x;
+  double x_max = 1.0;
+  double x_min = -1.0;
+
+  x = new double[n];
+
+  webbur::nco_compute_points ( n, x );
+
+  webbur::nc_compute ( n, x_min, x_max, x, w );
+
+  delete [] x;
+
+  return;
+}
+//****************************************************************************80
+
+void ncoh_compute_points ( int n, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    NCOH_COMPUTE_POINTS computes points for a Newton-Cotes "open half" quadrature rule.
+//
+//  Discussion:
+//
+//    The input value N is used to define N equal subintervals of [-1,+1].
+//    The I-th abscissa is the center of the I-th subinterval.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    03 July 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  int i;
+  const double x_max = 1.0;
+  const double x_min = -1.0;
+
+  for ( i = 0; i < n; i++ )
+  {
+    x[i] = ( ( double ) ( 2 * n - 2 * i - 1 ) * x_min
+           + ( double ) (         2 * i + 1 ) * x_max )
+           / ( double ) ( 2 * n             );
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void ncoh_compute_weights ( int n, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    NCOH_COMPUTE_WEIGHTS computes weights for a Newton-Cotes "open half" quadrature rule.
+//
+//  Discussion:
+//
+//    The input value N is used to define N equal subintervals of [-1,+1].
+//    The I-th abscissa is the center of the I-th subinterval.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    03 July 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//
+//    Output, double W[N], the weights.
+//
+{
+  int i;
+  double *x;
+  const double x_max = 1.0;
+  const double x_min = -1.0;
+
+  x = new double[n];
+
+  webbur::ncoh_compute_points ( n, x );
+
+  webbur::nc_compute ( n, x_min, x_max, x, w );
+
+  delete [] x;
+
+  return;
+}
+//****************************************************************************80
+
+void patterson_lookup ( int n, double x[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    PATTERSON_LOOKUP looks up Patterson quadrature points and weights.
+//
+//  Discussion:
+//
+//    Our convention is that the abscissas are numbered from left to right.
+//
+//    The rule is defined on [-1,1],
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    11 February 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Prem Kythe, Michael Schaeferkotter,
+//    Handbook of Computational Methods for Integration,
+//    Chapman and Hall, 2004,
+//    ISBN: 1-58488-428-2,
+//    LC: QA299.3.K98.
+//
+//    Thomas Patterson,
+//    The Optimal Addition of Points to Quadrature Formulae,
+//    Mathematics of Computation,
+//    Volume 22, Number 104, October 1968, pages 847-856.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    Legal values are 1, 3, 7, 15, 31, 63, 127, 255 and 511.
+//
+//    Output, double X[N], the abscissas.
+//
+//    Output, double W[N], the weights.
+//
+{
+  patterson_lookup_points ( n, x );
+  patterson_lookup_weights ( n, w );
+
+  return;
+}
+//****************************************************************************80
+
+void patterson_lookup_points ( int n, double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    PATTERSON_LOOKUP_POINTS looks up Patterson quadrature points.
+//
+//  Discussion:
+//
+//    Our convention is that the abscissas are numbered from left to right.
+//
+//    The rule is defined on [-1,1],
+//
+//    These rules constitute a nested family.  The rules can integrate exactly
+//    any polynomial of degree 1, 5, 11, 23, 47, 95, 191, 383 or 767,
+//    respectively.
+//
+//    The data for N = 511 was supplied by Dirk Laurie, and is derived
+//    from a NAG Library function d01arf.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    14 September 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Prem Kythe, Michael Schaeferkotter,
+//    Handbook of Computational Methods for Integration,
+//    Chapman and Hall, 2004,
+//    ISBN: 1-58488-428-2,
+//    LC: QA299.3.K98.
+//
+//    NAG Library Documentation,
+//    D01ARF,
+//    The Numerical Algorithms Group.
+//
+//    Thomas Patterson,
+//    The Optimal Addition of Points to Quadrature Formulae,
+//    Mathematics of Computation,
+//    Volume 22, Number 104, October 1968, pages 847-856.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    Legal values are 1, 3, 7, 15, 31, 63, 127, 255 and 511.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  static double x_001[1] =
+  {
+     0.0
+  };
+  static double x_003[3] =
+  {
+    -0.77459666924148337704,
+     0.0,
+     0.77459666924148337704
+  };
+  static double x_007[7] =
+  {
+    -0.96049126870802028342,
+    -0.77459666924148337704,
+    -0.43424374934680255800,
+     0.0,
+     0.43424374934680255800,
+     0.77459666924148337704,
+     0.96049126870802028342
+  };
+  static double x_015[15] =
+  {
+    -0.99383196321275502221,
+    -0.96049126870802028342,
+    -0.88845923287225699889,
+    -0.77459666924148337704,
+    -0.62110294673722640294,
+    -0.43424374934680255800,
+    -0.22338668642896688163,
+     0.0,
+     0.22338668642896688163,
+     0.43424374934680255800,
+     0.62110294673722640294,
+     0.77459666924148337704,
+     0.88845923287225699889,
+     0.96049126870802028342,
+     0.99383196321275502221
+  };
+  static double x_031[31] =
+  {
+    -0.99909812496766759766,
+    -0.99383196321275502221,
+    -0.98153114955374010687,
+    -0.96049126870802028342,
+    -0.92965485742974005667,
+    -0.88845923287225699889,
+    -0.83672593816886873550,
+    -0.77459666924148337704,
+    -0.70249620649152707861,
+    -0.62110294673722640294,
+    -0.53131974364437562397,
+    -0.43424374934680255800,
+    -0.33113539325797683309,
+    -0.22338668642896688163,
+    -0.11248894313318662575,
+     0.0,
+     0.11248894313318662575,
+     0.22338668642896688163,
+     0.33113539325797683309,
+     0.43424374934680255800,
+     0.53131974364437562397,
+     0.62110294673722640294,
+     0.70249620649152707861,
+     0.77459666924148337704,
+     0.83672593816886873550,
+     0.88845923287225699889,
+     0.92965485742974005667,
+     0.96049126870802028342,
+     0.98153114955374010687,
+     0.99383196321275502221,
+     0.99909812496766759766
+  };
+  static double x_063[63] =
+  {
+    -0.99987288812035761194,
+    -0.99909812496766759766,
+    -0.99720625937222195908,
+    -0.99383196321275502221,
+    -0.98868475754742947994,
+    -0.98153114955374010687,
+    -0.97218287474858179658,
+    -0.96049126870802028342,
+    -0.94634285837340290515,
+    -0.92965485742974005667,
+    -0.91037115695700429250,
+    -0.88845923287225699889,
+    -0.86390793819369047715,
+    -0.83672593816886873550,
+    -0.80694053195021761186,
+    -0.77459666924148337704,
+    -0.73975604435269475868,
+    -0.70249620649152707861,
+    -0.66290966002478059546,
+    -0.62110294673722640294,
+    -0.57719571005204581484,
+    -0.53131974364437562397,
+    -0.48361802694584102756,
+    -0.43424374934680255800,
+    -0.38335932419873034692,
+    -0.33113539325797683309,
+    -0.27774982202182431507,
+    -0.22338668642896688163,
+    -0.16823525155220746498,
+    -0.11248894313318662575,
+    -0.056344313046592789972,
+     0.0,
+     0.056344313046592789972,
+     0.11248894313318662575,
+     0.16823525155220746498,
+     0.22338668642896688163,
+     0.27774982202182431507,
+     0.33113539325797683309,
+     0.38335932419873034692,
+     0.43424374934680255800,
+     0.48361802694584102756,
+     0.53131974364437562397,
+     0.57719571005204581484,
+     0.62110294673722640294,
+     0.66290966002478059546,
+     0.70249620649152707861,
+     0.73975604435269475868,
+     0.77459666924148337704,
+     0.80694053195021761186,
+     0.83672593816886873550,
+     0.86390793819369047715,
+     0.88845923287225699889,
+     0.91037115695700429250,
+     0.92965485742974005667,
+     0.94634285837340290515,
+     0.96049126870802028342,
+     0.97218287474858179658,
+     0.98153114955374010687,
+     0.98868475754742947994,
+     0.99383196321275502221,
+     0.99720625937222195908,
+     0.99909812496766759766,
+     0.99987288812035761194
+  };
+  static double x_127[127] =
+  {
+    -0.99998243035489159858,
+    -0.99987288812035761194,
+    -0.99959879967191068325,
+    -0.99909812496766759766,
+    -0.99831663531840739253,
+    -0.99720625937222195908,
+    -0.99572410469840718851,
+    -0.99383196321275502221,
+    -0.99149572117810613240,
+    -0.98868475754742947994,
+    -0.98537149959852037111,
+    -0.98153114955374010687,
+    -0.97714151463970571416,
+    -0.97218287474858179658,
+    -0.96663785155841656709,
+    -0.96049126870802028342,
+    -0.95373000642576113641,
+    -0.94634285837340290515,
+    -0.93832039777959288365,
+    -0.92965485742974005667,
+    -0.92034002547001242073,
+    -0.91037115695700429250,
+    -0.89974489977694003664,
+    -0.88845923287225699889,
+    -0.87651341448470526974,
+    -0.86390793819369047715,
+    -0.85064449476835027976,
+    -0.83672593816886873550,
+    -0.82215625436498040737,
+    -0.80694053195021761186,
+    -0.79108493379984836143,
+    -0.77459666924148337704,
+    -0.75748396638051363793,
+    -0.73975604435269475868,
+    -0.72142308537009891548,
+    -0.70249620649152707861,
+    -0.68298743109107922809,
+    -0.66290966002478059546,
+    -0.64227664250975951377,
+    -0.62110294673722640294,
+    -0.59940393024224289297,
+    -0.57719571005204581484,
+    -0.55449513263193254887,
+    -0.53131974364437562397,
+    -0.50768775753371660215,
+    -0.48361802694584102756,
+    -0.45913001198983233287,
+    -0.43424374934680255800,
+    -0.40897982122988867241,
+    -0.38335932419873034692,
+    -0.35740383783153215238,
+    -0.33113539325797683309,
+    -0.30457644155671404334,
+    -0.27774982202182431507,
+    -0.25067873030348317661,
+    -0.22338668642896688163,
+    -0.19589750271110015392,
+    -0.16823525155220746498,
+    -0.14042423315256017459,
+    -0.11248894313318662575,
+    -0.084454040083710883710,
+    -0.056344313046592789972,
+    -0.028184648949745694339,
+     0.0,
+     0.028184648949745694339,
+     0.056344313046592789972,
+     0.084454040083710883710,
+     0.11248894313318662575,
+     0.14042423315256017459,
+     0.16823525155220746498,
+     0.19589750271110015392,
+     0.22338668642896688163,
+     0.25067873030348317661,
+     0.27774982202182431507,
+     0.30457644155671404334,
+     0.33113539325797683309,
+     0.35740383783153215238,
+     0.38335932419873034692,
+     0.40897982122988867241,
+     0.43424374934680255800,
+     0.45913001198983233287,
+     0.48361802694584102756,
+     0.50768775753371660215,
+     0.53131974364437562397,
+     0.55449513263193254887,
+     0.57719571005204581484,
+     0.59940393024224289297,
+     0.62110294673722640294,
+     0.64227664250975951377,
+     0.66290966002478059546,
+     0.68298743109107922809,
+     0.70249620649152707861,
+     0.72142308537009891548,
+     0.73975604435269475868,
+     0.75748396638051363793,
+     0.77459666924148337704,
+     0.79108493379984836143,
+     0.80694053195021761186,
+     0.82215625436498040737,
+     0.83672593816886873550,
+     0.85064449476835027976,
+     0.86390793819369047715,
+     0.87651341448470526974,
+     0.88845923287225699889,
+     0.89974489977694003664,
+     0.91037115695700429250,
+     0.92034002547001242073,
+     0.92965485742974005667,
+     0.93832039777959288365,
+     0.94634285837340290515,
+     0.95373000642576113641,
+     0.96049126870802028342,
+     0.96663785155841656709,
+     0.97218287474858179658,
+     0.97714151463970571416,
+     0.98153114955374010687,
+     0.98537149959852037111,
+     0.98868475754742947994,
+     0.99149572117810613240,
+     0.99383196321275502221,
+     0.99572410469840718851,
+     0.99720625937222195908,
+     0.99831663531840739253,
+     0.99909812496766759766,
+     0.99959879967191068325,
+     0.99987288812035761194,
+     0.99998243035489159858
+  };
+  static double x_255[255] =
+  {
+    -0.99999759637974846462,
+    -0.99998243035489159858,
+    -0.99994399620705437576,
+    -0.99987288812035761194,
+    -0.99976049092443204733,
+    -0.99959879967191068325,
+    -0.99938033802502358193,
+    -0.99909812496766759766,
+    -0.99874561446809511470,
+    -0.99831663531840739253,
+    -0.99780535449595727456,
+    -0.99720625937222195908,
+    -0.99651414591489027385,
+    -0.99572410469840718851,
+    -0.99483150280062100052,
+    -0.99383196321275502221,
+    -0.99272134428278861533,
+    -0.99149572117810613240,
+    -0.99015137040077015918,
+    -0.98868475754742947994,
+    -0.98709252795403406719,
+    -0.98537149959852037111,
+    -0.98351865757863272876,
+    -0.98153114955374010687,
+    -0.97940628167086268381,
+    -0.97714151463970571416,
+    -0.97473445975240266776,
+    -0.97218287474858179658,
+    -0.96948465950245923177,
+    -0.96663785155841656709,
+    -0.96364062156981213252,
+    -0.96049126870802028342,
+    -0.95718821610986096274,
+    -0.95373000642576113641,
+    -0.95011529752129487656,
+    -0.94634285837340290515,
+    -0.94241156519108305981,
+    -0.93832039777959288365,
+    -0.93406843615772578800,
+    -0.92965485742974005667,
+    -0.92507893290707565236,
+    -0.92034002547001242073,
+    -0.91543758715576504064,
+    -0.91037115695700429250,
+    -0.90514035881326159519,
+    -0.89974489977694003664,
+    -0.89418456833555902286,
+    -0.88845923287225699889,
+    -0.88256884024734190684,
+    -0.87651341448470526974,
+    -0.87029305554811390585,
+    -0.86390793819369047715,
+    -0.85735831088623215653,
+    -0.85064449476835027976,
+    -0.84376688267270860104,
+    -0.83672593816886873550,
+    -0.82952219463740140018,
+    -0.82215625436498040737,
+    -0.81462878765513741344,
+    -0.80694053195021761186,
+    -0.79909229096084140180,
+    -0.79108493379984836143,
+    -0.78291939411828301639,
+    -0.77459666924148337704,
+    -0.76611781930376009072,
+    -0.75748396638051363793,
+    -0.74869629361693660282,
+    -0.73975604435269475868,
+    -0.73066452124218126133,
+    -0.72142308537009891548,
+    -0.71203315536225203459,
+    -0.70249620649152707861,
+    -0.69281376977911470289,
+    -0.68298743109107922809,
+    -0.67301883023041847920,
+    -0.66290966002478059546,
+    -0.65266166541001749610,
+    -0.64227664250975951377,
+    -0.63175643771119423041,
+    -0.62110294673722640294,
+    -0.61031811371518640016,
+    -0.59940393024224289297,
+    -0.58836243444766254143,
+    -0.57719571005204581484,
+    -0.56590588542365442262,
+    -0.55449513263193254887,
+    -0.54296566649831149049,
+    -0.53131974364437562397,
+    -0.51955966153745702199,
+    -0.50768775753371660215,
+    -0.49570640791876146017,
+    -0.48361802694584102756,
+    -0.47142506587165887693,
+    -0.45913001198983233287,
+    -0.44673538766202847374,
+    -0.43424374934680255800,
+    -0.42165768662616330006,
+    -0.40897982122988867241,
+    -0.39621280605761593918,
+    -0.38335932419873034692,
+    -0.37042208795007823014,
+    -0.35740383783153215238,
+    -0.34430734159943802278,
+    -0.33113539325797683309,
+    -0.31789081206847668318,
+    -0.30457644155671404334,
+    -0.29119514851824668196,
+    -0.27774982202182431507,
+    -0.26424337241092676194,
+    -0.25067873030348317661,
+    -0.23705884558982972721,
+    -0.22338668642896688163,
+    -0.20966523824318119477,
+    -0.19589750271110015392,
+    -0.18208649675925219825,
+    -0.16823525155220746498,
+    -0.15434681148137810869,
+    -0.14042423315256017459,
+    -0.12647058437230196685,
+    -0.11248894313318662575,
+    -0.098482396598119202090,
+    -0.084454040083710883710,
+    -0.070406976042855179063,
+    -0.056344313046592789972,
+    -0.042269164765363603212,
+    -0.028184648949745694339,
+    -0.014093886410782462614,
+    0.0,
+    0.014093886410782462614,
+    0.028184648949745694339,
+    0.042269164765363603212,
+    0.056344313046592789972,
+    0.070406976042855179063,
+    0.084454040083710883710,
+    0.098482396598119202090,
+    0.11248894313318662575,
+    0.12647058437230196685,
+    0.14042423315256017459,
+    0.15434681148137810869,
+    0.16823525155220746498,
+    0.18208649675925219825,
+    0.19589750271110015392,
+    0.20966523824318119477,
+    0.22338668642896688163,
+    0.23705884558982972721,
+    0.25067873030348317661,
+    0.26424337241092676194,
+    0.27774982202182431507,
+    0.29119514851824668196,
+    0.30457644155671404334,
+    0.31789081206847668318,
+    0.33113539325797683309,
+    0.34430734159943802278,
+    0.35740383783153215238,
+    0.37042208795007823014,
+    0.38335932419873034692,
+    0.39621280605761593918,
+    0.40897982122988867241,
+    0.42165768662616330006,
+    0.43424374934680255800,
+    0.44673538766202847374,
+    0.45913001198983233287,
+    0.47142506587165887693,
+    0.48361802694584102756,
+    0.49570640791876146017,
+    0.50768775753371660215,
+    0.51955966153745702199,
+    0.53131974364437562397,
+    0.54296566649831149049,
+    0.55449513263193254887,
+    0.56590588542365442262,
+    0.57719571005204581484,
+    0.58836243444766254143,
+    0.59940393024224289297,
+    0.61031811371518640016,
+    0.62110294673722640294,
+    0.63175643771119423041,
+    0.64227664250975951377,
+    0.65266166541001749610,
+    0.66290966002478059546,
+    0.67301883023041847920,
+    0.68298743109107922809,
+    0.69281376977911470289,
+    0.70249620649152707861,
+    0.71203315536225203459,
+    0.72142308537009891548,
+    0.73066452124218126133,
+    0.73975604435269475868,
+    0.74869629361693660282,
+    0.75748396638051363793,
+    0.76611781930376009072,
+    0.77459666924148337704,
+    0.78291939411828301639,
+    0.79108493379984836143,
+    0.79909229096084140180,
+    0.80694053195021761186,
+    0.81462878765513741344,
+    0.82215625436498040737,
+    0.82952219463740140018,
+    0.83672593816886873550,
+    0.84376688267270860104,
+    0.85064449476835027976,
+    0.85735831088623215653,
+    0.86390793819369047715,
+    0.87029305554811390585,
+    0.87651341448470526974,
+    0.88256884024734190684,
+    0.88845923287225699889,
+    0.89418456833555902286,
+    0.89974489977694003664,
+    0.90514035881326159519,
+    0.91037115695700429250,
+    0.91543758715576504064,
+    0.92034002547001242073,
+    0.92507893290707565236,
+    0.92965485742974005667,
+    0.93406843615772578800,
+    0.93832039777959288365,
+    0.94241156519108305981,
+    0.94634285837340290515,
+    0.95011529752129487656,
+    0.95373000642576113641,
+    0.95718821610986096274,
+    0.96049126870802028342,
+    0.96364062156981213252,
+    0.96663785155841656709,
+    0.96948465950245923177,
+    0.97218287474858179658,
+    0.97473445975240266776,
+    0.97714151463970571416,
+    0.97940628167086268381,
+    0.98153114955374010687,
+    0.98351865757863272876,
+    0.98537149959852037111,
+    0.98709252795403406719,
+    0.98868475754742947994,
+    0.99015137040077015918,
+    0.99149572117810613240,
+    0.99272134428278861533,
+    0.99383196321275502221,
+    0.99483150280062100052,
+    0.99572410469840718851,
+    0.99651414591489027385,
+    0.99720625937222195908,
+    0.99780535449595727456,
+    0.99831663531840739253,
+    0.99874561446809511470,
+    0.99909812496766759766,
+    0.99938033802502358193,
+    0.99959879967191068325,
+    0.99976049092443204733,
+    0.99987288812035761194,
+    0.99994399620705437576,
+    0.99998243035489159858,
+    0.99999759637974846462
+  };
+  static double x_511[511] =
+  {
+    -0.999999672956734384381,
+    -0.999997596379748464620,
+    -0.999992298136257588028,
+    -0.999982430354891598580,
+    -0.999966730098486276883,
+    -0.999943996207054375764,
+    -0.999913081144678282800,
+    -0.999872888120357611938,
+    -0.999822363679787739196,
+    -0.999760490924432047330,
+    -0.999686286448317731776,
+    -0.999598799671910683252,
+    -0.999497112467187190535,
+    -0.999380338025023581928,
+    -0.999247618943342473599,
+    -0.999098124967667597662,
+    -0.998931050830810562236,
+    -0.998745614468095114704,
+    -0.998541055697167906027,
+    -0.998316635318407392531,
+    -0.998071634524930323302,
+    -0.997805354495957274562,
+    -0.997517116063472399965,
+    -0.997206259372221959076,
+    -0.996872143485260161299,
+    -0.996514145914890273849,
+    -0.996131662079315037786,
+    -0.995724104698407188509,
+    -0.995290903148810302261,
+    -0.994831502800621000519,
+    -0.994345364356723405931,
+    -0.993831963212755022209,
+    -0.993290788851684966211,
+    -0.992721344282788615328,
+    -0.992123145530863117683,
+    -0.991495721178106132399,
+    -0.990838611958294243677,
+    -0.990151370400770159181,
+    -0.989433560520240838716,
+    -0.988684757547429479939,
+    -0.987904547695124280467,
+    -0.987092527954034067190,
+    -0.986248305913007552681,
+    -0.985371499598520371114,
+    -0.984461737328814534596,
+    -0.983518657578632728762,
+    -0.982541908851080604251,
+    -0.981531149553740106867,
+    -0.980486047876721339416,
+    -0.979406281670862683806,
+    -0.978291538324758539526,
+    -0.977141514639705714156,
+    -0.975955916702011753129,
+    -0.974734459752402667761,
+    -0.973476868052506926773,
+    -0.972182874748581796578,
+    -0.970852221732792443256,
+    -0.969484659502459231771,
+    -0.968079947017759947964,
+    -0.966637851558416567092,
+    -0.965158148579915665979,
+    -0.963640621569812132521,
+    -0.962085061904651475741,
+    -0.960491268708020283423,
+    -0.958859048710200221356,
+    -0.957188216109860962736,
+    -0.955478592438183697574,
+    -0.953730006425761136415,
+    -0.951942293872573589498,
+    -0.950115297521294876558,
+    -0.948248866934137357063,
+    -0.946342858373402905148,
+    -0.944397134685866648591,
+    -0.942411565191083059813,
+    -0.940386025573669721370,
+    -0.938320397779592883655,
+    -0.936214569916450806625,
+    -0.934068436157725787999,
+    -0.931881896650953639345,
+    -0.929654857429740056670,
+    -0.927387230329536696843,
+    -0.925078932907075652364,
+    -0.922729888363349241523,
+    -0.920340025470012420730,
+    -0.917909278499077501636,
+    -0.915437587155765040644,
+    -0.912924896514370590080,
+    -0.910371156957004292498,
+    -0.907776324115058903624,
+    -0.905140358813261595189,
+    -0.902463227016165675048,
+    -0.899744899776940036639,
+    -0.896985353188316590376,
+    -0.894184568335559022859,
+    -0.891342531251319871666,
+    -0.888459232872256998890,
+    -0.885534668997285008926,
+    -0.882568840247341906842,
+    -0.879561752026556262568,
+    -0.876513414484705269742,
+    -0.873423842480859310192,
+    -0.870293055548113905851,
+    -0.867121077859315215614,
+    -0.863907938193690477146,
+    -0.860653669904299969802,
+    -0.857358310886232156525,
+    -0.854021903545468625813,
+    -0.850644494768350279758,
+    -0.847226135891580884381,
+    -0.843766882672708601038,
+    -0.840266795261030442350,
+    -0.836725938168868735503,
+    -0.833144380243172624728,
+    -0.829522194637401400178,
+    -0.825859458783650001088,
+    -0.822156254364980407373,
+    -0.818412667287925807395,
+    -0.814628787655137413436,
+    -0.810804709738146594361,
+    -0.806940531950217611856,
+    -0.803036356819268687782,
+    -0.799092290960841401800,
+    -0.795108445051100526780,
+    -0.791084933799848361435,
+    -0.787021875923539422170,
+    -0.782919394118283016385,
+    -0.778777615032822744702,
+    -0.774596669241483377036,
+    -0.770376691217076824278,
+    -0.766117819303760090717,
+    -0.761820195689839149173,
+    -0.757483966380513637926,
+    -0.753109281170558142523,
+    -0.748696293616936602823,
+    -0.744245161011347082309,
+    -0.739756044352694758677,
+    -0.735229108319491547663,
+    -0.730664521242181261329,
+    -0.726062455075389632685,
+    -0.721423085370098915485,
+    -0.716746591245747095767,
+    -0.712033155362252034587,
+    -0.707282963891961103412,
+    -0.702496206491527078610,
+    -0.697673076273711232906,
+    -0.692813769779114702895,
+    -0.687918486947839325756,
+    -0.682987431091079228087,
+    -0.678020808862644517838,
+    -0.673018830230418479199,
+    -0.667981708447749702165,
+    -0.662909660024780595461,
+    -0.657802904699713735422,
+    -0.652661665410017496101,
+    -0.647486168263572388782,
+    -0.642276642509759513774,
+    -0.637033320510492495071,
+    -0.631756437711194230414,
+    -0.626446232611719746542,
+    -0.621102946737226402941,
+    -0.615726824608992638014,
+    -0.610318113715186400156,
+    -0.604877064481584353319,
+    -0.599403930242242892974,
+    -0.593898967210121954393,
+    -0.588362434447662541434,
+    -0.582794593837318850840,
+    -0.577195710052045814844,
+    -0.571566050525742833992,
+    -0.565905885423654422623,
+    -0.560215487612728441818,
+    -0.554495132631932548866,
+    -0.548745098662529448608,
+    -0.542965666498311490492,
+    -0.537157119515795115982,
+    -0.531319743644375623972,
+    -0.525453827336442687395,
+    -0.519559661537457021993,
+    -0.513637539655988578507,
+    -0.507687757533716602155,
+    -0.501710613415391878251,
+    -0.495706407918761460170,
+    -0.489675444004456155436,
+    -0.483618026945841027562,
+    -0.477534464298829155284,
+    -0.471425065871658876934,
+    -0.465290143694634735858,
+    -0.459130011989832332874,
+    -0.452944987140767283784,
+    -0.446735387662028473742,
+    -0.440501534168875795783,
+    -0.434243749346802558002,
+    -0.427962357921062742583,
+    -0.421657686626163300056,
+    -0.415330064175321663764,
+    -0.408979821229888672409,
+    -0.402607290368737092671,
+    -0.396212806057615939183,
+    -0.389796704618470795479,
+    -0.383359324198730346916,
+    -0.376901004740559344802,
+    -0.370422087950078230138,
+    -0.363922917266549655269,
+    -0.357403837831532152376,
+    -0.350865196458001209011,
+    -0.344307341599438022777,
+    -0.337730623318886219621,
+    -0.331135393257976833093,
+    -0.324522004605921855207,
+    -0.317890812068476683182,
+    -0.311242171836871800300,
+    -0.304576441556714043335,
+    -0.297893980296857823437,
+    -0.291195148518246681964,
+    -0.284480308042725577496,
+    -0.277749822021824315065,
+    -0.271004054905512543536,
+    -0.264243372410926761945,
+    -0.257468141491069790481,
+    -0.250678730303483176613,
+    -0.243875508178893021593,
+    -0.237058845589829727213,
+    -0.230229114119222177156,
+    -0.223386686428966881628,
+    -0.216531936228472628081,
+    -0.209665238243181194766,
+    -0.202786968183064697557,
+    -0.195897502711100153915,
+    -0.188997219411721861059,
+    -0.182086496759252198246,
+    -0.175165714086311475707,
+    -0.168235251552207464982,
+    -0.161295490111305257361,
+    -0.154346811481378108692,
+    -0.147389598111939940054,
+    -0.140424233152560174594,
+    -0.133451100421161601344,
+    -0.126470584372301966851,
+    -0.119483070065440005133,
+    -0.112488943133186625746,
+    -0.105488589749541988533,
+    -0.984823965981192020903E-01,
+    -0.914707508403553909095E-01,
+    -0.844540400837108837102E-01,
+    -0.774326523498572825675E-01,
+    -0.704069760428551790633E-01,
+    -0.633773999173222898797E-01,
+    -0.563443130465927899720E-01,
+    -0.493081047908686267156E-01,
+    -0.422691647653636032124E-01,
+    -0.352278828084410232603E-01,
+    -0.281846489497456943394E-01,
+    -0.211398533783310883350E-01,
+    -0.140938864107824626142E-01,
+    -0.704713845933674648514E-02,
+    +0.000000000000000000000,
+    +0.704713845933674648514E-02,
+    +0.140938864107824626142E-01,
+    +0.211398533783310883350E-01,
+    +0.281846489497456943394E-01,
+    +0.352278828084410232603E-01,
+    +0.422691647653636032124E-01,
+    +0.493081047908686267156E-01,
+    +0.563443130465927899720E-01,
+    +0.633773999173222898797E-01,
+    +0.704069760428551790633E-01,
+    +0.774326523498572825675E-01,
+    +0.844540400837108837102E-01,
+    +0.914707508403553909095E-01,
+    +0.984823965981192020903E-01,
+    +0.105488589749541988533,
+    +0.112488943133186625746,
+    +0.119483070065440005133,
+    +0.126470584372301966851,
+    +0.133451100421161601344,
+    +0.140424233152560174594,
+    +0.147389598111939940054,
+    +0.154346811481378108692,
+    +0.161295490111305257361,
+    +0.168235251552207464982,
+    +0.175165714086311475707,
+    +0.182086496759252198246,
+    +0.188997219411721861059,
+    +0.195897502711100153915,
+    +0.202786968183064697557,
+    +0.209665238243181194766,
+    +0.216531936228472628081,
+    +0.223386686428966881628,
+    +0.230229114119222177156,
+    +0.237058845589829727213,
+    +0.243875508178893021593,
+    +0.250678730303483176613,
+    +0.257468141491069790481,
+    +0.264243372410926761945,
+    +0.271004054905512543536,
+    +0.277749822021824315065,
+    +0.284480308042725577496,
+    +0.291195148518246681964,
+    +0.297893980296857823437,
+    +0.304576441556714043335,
+    +0.311242171836871800300,
+    +0.317890812068476683182,
+    +0.324522004605921855207,
+    +0.331135393257976833093,
+    +0.337730623318886219621,
+    +0.344307341599438022777,
+    +0.350865196458001209011,
+    +0.357403837831532152376,
+    +0.363922917266549655269,
+    +0.370422087950078230138,
+    +0.376901004740559344802,
+    +0.383359324198730346916,
+    +0.389796704618470795479,
+    +0.396212806057615939183,
+    +0.402607290368737092671,
+    +0.408979821229888672409,
+    +0.415330064175321663764,
+    +0.421657686626163300056,
+    +0.427962357921062742583,
+    +0.434243749346802558002,
+    +0.440501534168875795783,
+    +0.446735387662028473742,
+    +0.452944987140767283784,
+    +0.459130011989832332874,
+    +0.465290143694634735858,
+    +0.471425065871658876934,
+    +0.477534464298829155284,
+    +0.483618026945841027562,
+    +0.489675444004456155436,
+    +0.495706407918761460170,
+    +0.501710613415391878251,
+    +0.507687757533716602155,
+    +0.513637539655988578507,
+    +0.519559661537457021993,
+    +0.525453827336442687395,
+    +0.531319743644375623972,
+    +0.537157119515795115982,
+    +0.542965666498311490492,
+    +0.548745098662529448608,
+    +0.554495132631932548866,
+    +0.560215487612728441818,
+    +0.565905885423654422623,
+    +0.571566050525742833992,
+    +0.577195710052045814844,
+    +0.582794593837318850840,
+    +0.588362434447662541434,
+    +0.593898967210121954393,
+    +0.599403930242242892974,
+    +0.604877064481584353319,
+    +0.610318113715186400156,
+    +0.615726824608992638014,
+    +0.621102946737226402941,
+    +0.626446232611719746542,
+    +0.631756437711194230414,
+    +0.637033320510492495071,
+    +0.642276642509759513774,
+    +0.647486168263572388782,
+    +0.652661665410017496101,
+    +0.657802904699713735422,
+    +0.662909660024780595461,
+    +0.667981708447749702165,
+    +0.673018830230418479199,
+    +0.678020808862644517838,
+    +0.682987431091079228087,
+    +0.687918486947839325756,
+    +0.692813769779114702895,
+    +0.697673076273711232906,
+    +0.702496206491527078610,
+    +0.707282963891961103412,
+    +0.712033155362252034587,
+    +0.716746591245747095767,
+    +0.721423085370098915485,
+    +0.726062455075389632685,
+    +0.730664521242181261329,
+    +0.735229108319491547663,
+    +0.739756044352694758677,
+    +0.744245161011347082309,
+    +0.748696293616936602823,
+    +0.753109281170558142523,
+    +0.757483966380513637926,
+    +0.761820195689839149173,
+    +0.766117819303760090717,
+    +0.770376691217076824278,
+    +0.774596669241483377036,
+    +0.778777615032822744702,
+    +0.782919394118283016385,
+    +0.787021875923539422170,
+    +0.791084933799848361435,
+    +0.795108445051100526780,
+    +0.799092290960841401800,
+    +0.803036356819268687782,
+    +0.806940531950217611856,
+    +0.810804709738146594361,
+    +0.814628787655137413436,
+    +0.818412667287925807395,
+    +0.822156254364980407373,
+    +0.825859458783650001088,
+    +0.829522194637401400178,
+    +0.833144380243172624728,
+    +0.836725938168868735503,
+    +0.840266795261030442350,
+    +0.843766882672708601038,
+    +0.847226135891580884381,
+    +0.850644494768350279758,
+    +0.854021903545468625813,
+    +0.857358310886232156525,
+    +0.860653669904299969802,
+    +0.863907938193690477146,
+    +0.867121077859315215614,
+    +0.870293055548113905851,
+    +0.873423842480859310192,
+    +0.876513414484705269742,
+    +0.879561752026556262568,
+    +0.882568840247341906842,
+    +0.885534668997285008926,
+    +0.888459232872256998890,
+    +0.891342531251319871666,
+    +0.894184568335559022859,
+    +0.896985353188316590376,
+    +0.899744899776940036639,
+    +0.902463227016165675048,
+    +0.905140358813261595189,
+    +0.907776324115058903624,
+    +0.910371156957004292498,
+    +0.912924896514370590080,
+    +0.915437587155765040644,
+    +0.917909278499077501636,
+    +0.920340025470012420730,
+    +0.922729888363349241523,
+    +0.925078932907075652364,
+    +0.927387230329536696843,
+    +0.929654857429740056670,
+    +0.931881896650953639345,
+    +0.934068436157725787999,
+    +0.936214569916450806625,
+    +0.938320397779592883655,
+    +0.940386025573669721370,
+    +0.942411565191083059813,
+    +0.944397134685866648591,
+    +0.946342858373402905148,
+    +0.948248866934137357063,
+    +0.950115297521294876558,
+    +0.951942293872573589498,
+    +0.953730006425761136415,
+    +0.955478592438183697574,
+    +0.957188216109860962736,
+    +0.958859048710200221356,
+    +0.960491268708020283423,
+    +0.962085061904651475741,
+    +0.963640621569812132521,
+    +0.965158148579915665979,
+    +0.966637851558416567092,
+    +0.968079947017759947964,
+    +0.969484659502459231771,
+    +0.970852221732792443256,
+    +0.972182874748581796578,
+    +0.973476868052506926773,
+    +0.974734459752402667761,
+    +0.975955916702011753129,
+    +0.977141514639705714156,
+    +0.978291538324758539526,
+    +0.979406281670862683806,
+    +0.980486047876721339416,
+    +0.981531149553740106867,
+    +0.982541908851080604251,
+    +0.983518657578632728762,
+    +0.984461737328814534596,
+    +0.985371499598520371114,
+    +0.986248305913007552681,
+    +0.987092527954034067190,
+    +0.987904547695124280467,
+    +0.988684757547429479939,
+    +0.989433560520240838716,
+    +0.990151370400770159181,
+    +0.990838611958294243677,
+    +0.991495721178106132399,
+    +0.992123145530863117683,
+    +0.992721344282788615328,
+    +0.993290788851684966211,
+    +0.993831963212755022209,
+    +0.994345364356723405931,
+    +0.994831502800621000519,
+    +0.995290903148810302261,
+    +0.995724104698407188509,
+    +0.996131662079315037786,
+    +0.996514145914890273849,
+    +0.996872143485260161299,
+    +0.997206259372221959076,
+    +0.997517116063472399965,
+    +0.997805354495957274562,
+    +0.998071634524930323302,
+    +0.998316635318407392531,
+    +0.998541055697167906027,
+    +0.998745614468095114704,
+    +0.998931050830810562236,
+    +0.999098124967667597662,
+    +0.999247618943342473599,
+    +0.999380338025023581928,
+    +0.999497112467187190535,
+    +0.999598799671910683252,
+    +0.999686286448317731776,
+    +0.999760490924432047330,
+    +0.999822363679787739196,
+    +0.999872888120357611938,
+    +0.999913081144678282800,
+    +0.999943996207054375764,
+    +0.999966730098486276883,
+    +0.999982430354891598580,
+    +0.999992298136257588028,
+    +0.999997596379748464620,
+    +0.999999672956734384381
+  };
+
+  if ( n == 1 )
+  {
+    webbur::r8vec_copy ( n, x_001, x );
+  }
+  else if ( n == 3 )
+  {
+    webbur::r8vec_copy ( n, x_003, x );
+  }
+  else if ( n == 7 )
+  {
+    webbur::r8vec_copy ( n, x_007, x );
+  }
+  else if ( n == 15 )
+  {
+    webbur::r8vec_copy ( n, x_015, x );
+  }
+  else if ( n == 31 )
+  {
+    webbur::r8vec_copy ( n, x_031, x );
+  }
+  else if ( n == 63 )
+  {
+    webbur::r8vec_copy ( n, x_063, x );
+  }
+  else if ( n == 127 )
+  {
+    webbur::r8vec_copy ( n, x_127, x );
+  }
+  else if ( n == 255 )
+  {
+    webbur::r8vec_copy ( n, x_255, x );
+  }
+  else if ( n == 511 )
+  {
+    webbur::r8vec_copy ( n, x_511, x );
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "PATTERSON_LOOKUP_POINTS - Fatal error!\n";
+    std::cerr << "  Unexpected value of N = " << n << "\n";
+    std::exit ( 1 );
+  }
+  return;
+}
+//****************************************************************************80
+
+void patterson_lookup_points_np ( int n, int np, double p[], double x[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    PATTERSON_LOOKUP_POINTS_NP looks up Patterson quadrature points.
+//
+//  Discussion:
+//
+//    Our convention is that the abscissas are numbered from left to right.
+//
+//    The rule is defined on [-1,1],
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    17 December 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Prem Kythe, Michael Schaeferkotter,
+//    Handbook of Computational Methods for Integration,
+//    Chapman and Hall, 2004,
+//    ISBN: 1-58488-428-2,
+//    LC: QA299.3.K98.
+//
+//    Thomas Patterson,
+//    The Optimal Addition of Points to Quadrature Formulae,
+//    Mathematics of Computation,
+//    Volume 22, Number 104, October 1968, pages 847-856.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    Legal values are 1, 3, 7, 15, 31, 63, 127, 255 and 511.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double X[N], the abscissas.
+//
+{
+  patterson_lookup_points ( n, x );
+
+  return;
+}
+//****************************************************************************80
+
+void patterson_lookup_weights ( int n, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    PATTERSON_LOOKUP_WEIGHTS looks up Patterson quadrature weights.
+//
+//  Discussion:
+//
+//    The allowed orders are 1, 3, 7, 15, 31, 63, 127, 255 and 511.
+//
+//    The weights are positive, symmetric and should sum to 2.
+//
+//    The user must preallocate space for the output array W.
+//
+//    These rules constitute a nested family.  The rules can integrate exactly
+//    any polynomial of degree 1, 5, 11, 23, 47, 95, 191, 383 or 767,
+//    respectively.
+//
+//    The data for N = 511 was supplied by Dirk Laurie, and is derived
+//    from a NAG Library function d01arf.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    14 September 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Prem Kythe, Michael Schaeferkotter,
+//    Handbook of Computational Methods for Integration,
+//    Chapman and Hall, 2004,
+//    ISBN: 1-58488-428-2,
+//    LC: QA299.3.K98.
+//
+//    NAG Library Documentation,
+//    D01ARF,
+//    The Numerical Algorithms Group.
+//
+//    Thomas Patterson,
+//    The Optimal Addition of Points to Quadrature Formulae,
+//    Mathematics of Computation,
+//    Volume 22, Number 104, October 1968, pages 847-856.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    Legal values are 1, 3, 7, 15, 31, 63, 127, 255 or 511.
+//
+//    Output, double W[N], the weights.
+//
+{
+  static double w_001[1] =
+  {
+    2.0
+  };
+  static double w_003[3] =
+  {
+    0.555555555555555555556,
+    0.888888888888888888889,
+    0.555555555555555555556
+  };
+  static double w_007[7] =
+  {
+    0.104656226026467265194,
+    0.268488089868333440729,
+    0.401397414775962222905,
+    0.450916538658474142345,
+    0.401397414775962222905,
+    0.268488089868333440729,
+    0.104656226026467265194
+  };
+  static double w_015[15] =
+  {
+    0.0170017196299402603390,
+    0.0516032829970797396969,
+    0.0929271953151245376859,
+    0.134415255243784220360,
+    0.171511909136391380787,
+    0.200628529376989021034,
+    0.219156858401587496404,
+    0.225510499798206687386,
+    0.219156858401587496404,
+    0.200628529376989021034,
+    0.171511909136391380787,
+    0.134415255243784220360,
+    0.0929271953151245376859,
+    0.0516032829970797396969,
+    0.0170017196299402603390
+  };
+  static double w_031[31] =
+  {
+    0.00254478079156187441540,
+    0.00843456573932110624631,
+    0.0164460498543878109338,
+    0.0258075980961766535646,
+    0.0359571033071293220968,
+    0.0464628932617579865414,
+    0.0569795094941233574122,
+    0.0672077542959907035404,
+    0.0768796204990035310427,
+    0.0857559200499903511542,
+    0.0936271099812644736167,
+    0.100314278611795578771,
+    0.105669893580234809744,
+    0.109578421055924638237,
+    0.111956873020953456880,
+    0.112755256720768691607,
+    0.111956873020953456880,
+    0.109578421055924638237,
+    0.105669893580234809744,
+    0.100314278611795578771,
+    0.0936271099812644736167,
+    0.0857559200499903511542,
+    0.0768796204990035310427,
+    0.0672077542959907035404,
+    0.0569795094941233574122,
+    0.0464628932617579865414,
+    0.0359571033071293220968,
+    0.0258075980961766535646,
+    0.0164460498543878109338,
+    0.00843456573932110624631,
+    0.00254478079156187441540
+  };
+  static double w_063[63] =
+  {
+    0.000363221481845530659694,
+    0.00126515655623006801137,
+    0.00257904979468568827243,
+    0.00421763044155885483908,
+    0.00611550682211724633968,
+    0.00822300795723592966926,
+    0.0104982469096213218983,
+    0.0129038001003512656260,
+    0.0154067504665594978021,
+    0.0179785515681282703329,
+    0.0205942339159127111492,
+    0.0232314466399102694433,
+    0.0258696793272147469108,
+    0.0284897547458335486125,
+    0.0310735511116879648799,
+    0.0336038771482077305417,
+    0.0360644327807825726401,
+    0.0384398102494555320386,
+    0.0407155101169443189339,
+    0.0428779600250077344929,
+    0.0449145316536321974143,
+    0.0468135549906280124026,
+    0.0485643304066731987159,
+    0.0501571393058995374137,
+    0.0515832539520484587768,
+    0.0528349467901165198621,
+    0.0539054993352660639269,
+    0.0547892105279628650322,
+    0.0554814043565593639878,
+    0.0559784365104763194076,
+    0.0562776998312543012726,
+    0.0563776283603847173877,
+    0.0562776998312543012726,
+    0.0559784365104763194076,
+    0.0554814043565593639878,
+    0.0547892105279628650322,
+    0.0539054993352660639269,
+    0.0528349467901165198621,
+    0.0515832539520484587768,
+    0.0501571393058995374137,
+    0.0485643304066731987159,
+    0.0468135549906280124026,
+    0.0449145316536321974143,
+    0.0428779600250077344929,
+    0.0407155101169443189339,
+    0.0384398102494555320386,
+    0.0360644327807825726401,
+    0.0336038771482077305417,
+    0.0310735511116879648799,
+    0.0284897547458335486125,
+    0.0258696793272147469108,
+    0.0232314466399102694433,
+    0.0205942339159127111492,
+    0.0179785515681282703329,
+    0.0154067504665594978021,
+    0.0129038001003512656260,
+    0.0104982469096213218983,
+    0.00822300795723592966926,
+    0.00611550682211724633968,
+    0.00421763044155885483908,
+    0.00257904979468568827243,
+    0.00126515655623006801137,
+    0.000363221481845530659694
+  };
+  static double w_127[127] =
+  {
+    0.0000505360952078625176247,
+    0.000180739564445388357820,
+    0.000377746646326984660274,
+    0.000632607319362633544219,
+    0.000938369848542381500794,
+    0.00128952408261041739210,
+    0.00168114286542146990631,
+    0.00210881524572663287933,
+    0.00256876494379402037313,
+    0.00305775341017553113613,
+    0.00357289278351729964938,
+    0.00411150397865469304717,
+    0.00467105037211432174741,
+    0.00524912345480885912513,
+    0.00584344987583563950756,
+    0.00645190005017573692280,
+    0.00707248999543355546805,
+    0.00770337523327974184817,
+    0.00834283875396815770558,
+    0.00898927578406413572328,
+    0.00964117772970253669530,
+    0.0102971169579563555237,
+    0.0109557333878379016480,
+    0.0116157233199551347270,
+    0.0122758305600827700870,
+    0.0129348396636073734547,
+    0.0135915710097655467896,
+    0.0142448773729167743063,
+    0.0148936416648151820348,
+    0.0155367755558439824399,
+    0.0161732187295777199419,
+    0.0168019385741038652709,
+    0.0174219301594641737472,
+    0.0180322163903912863201,
+    0.0186318482561387901863,
+    0.0192199051247277660193,
+    0.0197954950480974994880,
+    0.0203577550584721594669,
+    0.0209058514458120238522,
+    0.0214389800125038672465,
+    0.0219563663053178249393,
+    0.0224572658268160987071,
+    0.0229409642293877487608,
+    0.0234067774953140062013,
+    0.0238540521060385400804,
+    0.0242821652033365993580,
+    0.0246905247444876769091,
+    0.0250785696529497687068,
+    0.0254457699654647658126,
+    0.0257916269760242293884,
+    0.0261156733767060976805,
+    0.0264174733950582599310,
+    0.0266966229274503599062,
+    0.0269527496676330319634,
+    0.0271855132296247918192,
+    0.0273946052639814325161,
+    0.0275797495664818730349,
+    0.0277407021782796819939,
+    0.0278772514766137016085,
+    0.0279892182552381597038,
+    0.0280764557938172466068,
+    0.0281388499156271506363,
+    0.0281763190330166021307,
+    0.0281888141801923586938,
+    0.0281763190330166021307,
+    0.0281388499156271506363,
+    0.0280764557938172466068,
+    0.0279892182552381597038,
+    0.0278772514766137016085,
+    0.0277407021782796819939,
+    0.0275797495664818730349,
+    0.0273946052639814325161,
+    0.0271855132296247918192,
+    0.0269527496676330319634,
+    0.0266966229274503599062,
+    0.0264174733950582599310,
+    0.0261156733767060976805,
+    0.0257916269760242293884,
+    0.0254457699654647658126,
+    0.0250785696529497687068,
+    0.0246905247444876769091,
+    0.0242821652033365993580,
+    0.0238540521060385400804,
+    0.0234067774953140062013,
+    0.0229409642293877487608,
+    0.0224572658268160987071,
+    0.0219563663053178249393,
+    0.0214389800125038672465,
+    0.0209058514458120238522,
+    0.0203577550584721594669,
+    0.0197954950480974994880,
+    0.0192199051247277660193,
+    0.0186318482561387901863,
+    0.0180322163903912863201,
+    0.0174219301594641737472,
+    0.0168019385741038652709,
+    0.0161732187295777199419,
+    0.0155367755558439824399,
+    0.0148936416648151820348,
+    0.0142448773729167743063,
+    0.0135915710097655467896,
+    0.0129348396636073734547,
+    0.0122758305600827700870,
+    0.0116157233199551347270,
+    0.0109557333878379016480,
+    0.0102971169579563555237,
+    0.00964117772970253669530,
+    0.00898927578406413572328,
+    0.00834283875396815770558,
+    0.00770337523327974184817,
+    0.00707248999543355546805,
+    0.00645190005017573692280,
+    0.00584344987583563950756,
+    0.00524912345480885912513,
+    0.00467105037211432174741,
+    0.00411150397865469304717,
+    0.00357289278351729964938,
+    0.00305775341017553113613,
+    0.00256876494379402037313,
+    0.00210881524572663287933,
+    0.00168114286542146990631,
+    0.00128952408261041739210,
+    0.000938369848542381500794,
+    0.000632607319362633544219,
+    0.000377746646326984660274,
+    0.000180739564445388357820,
+    0.0000505360952078625176247
+  };
+  static double w_255[255] =
+  {
+    0.69379364324108267170E-05,
+    0.25157870384280661489E-04,
+    0.53275293669780613125E-04,
+    0.90372734658751149261E-04,
+    0.13575491094922871973E-03,
+    0.18887326450650491366E-03,
+    0.24921240048299729402E-03,
+    0.31630366082226447689E-03,
+    0.38974528447328229322E-03,
+    0.46918492424785040975E-03,
+    0.55429531493037471492E-03,
+    0.64476204130572477933E-03,
+    0.74028280424450333046E-03,
+    0.84057143271072246365E-03,
+    0.94536151685852538246E-03,
+    0.10544076228633167722E-02,
+    0.11674841174299594077E-02,
+    0.12843824718970101768E-02,
+    0.14049079956551446427E-02,
+    0.15288767050877655684E-02,
+    0.16561127281544526052E-02,
+    0.17864463917586498247E-02,
+    0.19197129710138724125E-02,
+    0.20557519893273465236E-02,
+    0.21944069253638388388E-02,
+    0.23355251860571608737E-02,
+    0.24789582266575679307E-02,
+    0.26245617274044295626E-02,
+    0.27721957645934509940E-02,
+    0.29217249379178197538E-02,
+    0.30730184347025783234E-02,
+    0.32259500250878684614E-02,
+    0.33803979910869203823E-02,
+    0.35362449977167777340E-02,
+    0.36933779170256508183E-02,
+    0.38516876166398709241E-02,
+    0.40110687240750233989E-02,
+    0.41714193769840788528E-02,
+    0.43326409680929828545E-02,
+    0.44946378920320678616E-02,
+    0.46573172997568547773E-02,
+    0.48205888648512683476E-02,
+    0.49843645647655386012E-02,
+    0.51485584789781777618E-02,
+    0.53130866051870565663E-02,
+    0.54778666939189508240E-02,
+    0.56428181013844441585E-02,
+    0.58078616599775673635E-02,
+    0.59729195655081658049E-02,
+    0.61379152800413850435E-02,
+    0.63027734490857587172E-02,
+    0.64674198318036867274E-02,
+    0.66317812429018878941E-02,
+    0.67957855048827733948E-02,
+    0.69593614093904229394E-02,
+    0.71224386864583871532E-02,
+    0.72849479805538070639E-02,
+    0.74468208324075910174E-02,
+    0.76079896657190565832E-02,
+    0.77683877779219912200E-02,
+    0.79279493342948491103E-02,
+    0.80866093647888599710E-02,
+    0.82443037630328680306E-02,
+    0.84009692870519326354E-02,
+    0.85565435613076896192E-02,
+    0.87109650797320868736E-02,
+    0.88641732094824942641E-02,
+    0.90161081951956431600E-02,
+    0.91667111635607884067E-02,
+    0.93159241280693950932E-02,
+    0.94636899938300652943E-02,
+    0.96099525623638830097E-02,
+    0.97546565363174114611E-02,
+    0.98977475240487497440E-02,
+    0.10039172044056840798E-01,
+    0.10178877529236079733E-01,
+    0.10316812330947621682E-01,
+    0.10452925722906011926E-01,
+    0.10587167904885197931E-01,
+    0.10719490006251933623E-01,
+    0.10849844089337314099E-01,
+    0.10978183152658912470E-01,
+    0.11104461134006926537E-01,
+    0.11228632913408049354E-01,
+    0.11350654315980596602E-01,
+    0.11470482114693874380E-01,
+    0.11588074033043952568E-01,
+    0.11703388747657003101E-01,
+    0.11816385890830235763E-01,
+    0.11927026053019270040E-01,
+    0.12035270785279562630E-01,
+    0.12141082601668299679E-01,
+    0.12244424981611985899E-01,
+    0.12345262372243838455E-01,
+    0.12443560190714035263E-01,
+    0.12539284826474884353E-01,
+    0.12632403643542078765E-01,
+    0.12722884982732382906E-01,
+    0.12810698163877361967E-01,
+    0.12895813488012114694E-01,
+    0.12978202239537399286E-01,
+    0.13057836688353048840E-01,
+    0.13134690091960152836E-01,
+    0.13208736697529129966E-01,
+    0.13279951743930530650E-01,
+    0.13348311463725179953E-01,
+    0.13413793085110098513E-01,
+    0.13476374833816515982E-01,
+    0.13536035934956213614E-01,
+    0.13592756614812395910E-01,
+    0.13646518102571291428E-01,
+    0.13697302631990716258E-01,
+    0.13745093443001896632E-01,
+    0.13789874783240936517E-01,
+    0.13831631909506428676E-01,
+    0.13870351089139840997E-01,
+    0.13906019601325461264E-01,
+    0.13938625738306850804E-01,
+    0.13968158806516938516E-01,
+    0.13994609127619079852E-01,
+    0.14017968039456608810E-01,
+    0.14038227896908623303E-01,
+    0.14055382072649964277E-01,
+    0.14069424957813575318E-01,
+    0.14080351962553661325E-01,
+    0.14088159516508301065E-01,
+    0.14092845069160408355E-01,
+    0.14094407090096179347E-01,
+    0.14092845069160408355E-01,
+    0.14088159516508301065E-01,
+    0.14080351962553661325E-01,
+    0.14069424957813575318E-01,
+    0.14055382072649964277E-01,
+    0.14038227896908623303E-01,
+    0.14017968039456608810E-01,
+    0.13994609127619079852E-01,
+    0.13968158806516938516E-01,
+    0.13938625738306850804E-01,
+    0.13906019601325461264E-01,
+    0.13870351089139840997E-01,
+    0.13831631909506428676E-01,
+    0.13789874783240936517E-01,
+    0.13745093443001896632E-01,
+    0.13697302631990716258E-01,
+    0.13646518102571291428E-01,
+    0.13592756614812395910E-01,
+    0.13536035934956213614E-01,
+    0.13476374833816515982E-01,
+    0.13413793085110098513E-01,
+    0.13348311463725179953E-01,
+    0.13279951743930530650E-01,
+    0.13208736697529129966E-01,
+    0.13134690091960152836E-01,
+    0.13057836688353048840E-01,
+    0.12978202239537399286E-01,
+    0.12895813488012114694E-01,
+    0.12810698163877361967E-01,
+    0.12722884982732382906E-01,
+    0.12632403643542078765E-01,
+    0.12539284826474884353E-01,
+    0.12443560190714035263E-01,
+    0.12345262372243838455E-01,
+    0.12244424981611985899E-01,
+    0.12141082601668299679E-01,
+    0.12035270785279562630E-01,
+    0.11927026053019270040E-01,
+    0.11816385890830235763E-01,
+    0.11703388747657003101E-01,
+    0.11588074033043952568E-01,
+    0.11470482114693874380E-01,
+    0.11350654315980596602E-01,
+    0.11228632913408049354E-01,
+    0.11104461134006926537E-01,
+    0.10978183152658912470E-01,
+    0.10849844089337314099E-01,
+    0.10719490006251933623E-01,
+    0.10587167904885197931E-01,
+    0.10452925722906011926E-01,
+    0.10316812330947621682E-01,
+    0.10178877529236079733E-01,
+    0.10039172044056840798E-01,
+    0.98977475240487497440E-02,
+    0.97546565363174114611E-02,
+    0.96099525623638830097E-02,
+    0.94636899938300652943E-02,
+    0.93159241280693950932E-02,
+    0.91667111635607884067E-02,
+    0.90161081951956431600E-02,
+    0.88641732094824942641E-02,
+    0.87109650797320868736E-02,
+    0.85565435613076896192E-02,
+    0.84009692870519326354E-02,
+    0.82443037630328680306E-02,
+    0.80866093647888599710E-02,
+    0.79279493342948491103E-02,
+    0.77683877779219912200E-02,
+    0.76079896657190565832E-02,
+    0.74468208324075910174E-02,
+    0.72849479805538070639E-02,
+    0.71224386864583871532E-02,
+    0.69593614093904229394E-02,
+    0.67957855048827733948E-02,
+    0.66317812429018878941E-02,
+    0.64674198318036867274E-02,
+    0.63027734490857587172E-02,
+    0.61379152800413850435E-02,
+    0.59729195655081658049E-02,
+    0.58078616599775673635E-02,
+    0.56428181013844441585E-02,
+    0.54778666939189508240E-02,
+    0.53130866051870565663E-02,
+    0.51485584789781777618E-02,
+    0.49843645647655386012E-02,
+    0.48205888648512683476E-02,
+    0.46573172997568547773E-02,
+    0.44946378920320678616E-02,
+    0.43326409680929828545E-02,
+    0.41714193769840788528E-02,
+    0.40110687240750233989E-02,
+    0.38516876166398709241E-02,
+    0.36933779170256508183E-02,
+    0.35362449977167777340E-02,
+    0.33803979910869203823E-02,
+    0.32259500250878684614E-02,
+    0.30730184347025783234E-02,
+    0.29217249379178197538E-02,
+    0.27721957645934509940E-02,
+    0.26245617274044295626E-02,
+    0.24789582266575679307E-02,
+    0.23355251860571608737E-02,
+    0.21944069253638388388E-02,
+    0.20557519893273465236E-02,
+    0.19197129710138724125E-02,
+    0.17864463917586498247E-02,
+    0.16561127281544526052E-02,
+    0.15288767050877655684E-02,
+    0.14049079956551446427E-02,
+    0.12843824718970101768E-02,
+    0.11674841174299594077E-02,
+    0.10544076228633167722E-02,
+    0.94536151685852538246E-03,
+    0.84057143271072246365E-03,
+    0.74028280424450333046E-03,
+    0.64476204130572477933E-03,
+    0.55429531493037471492E-03,
+    0.46918492424785040975E-03,
+    0.38974528447328229322E-03,
+    0.31630366082226447689E-03,
+    0.24921240048299729402E-03,
+    0.18887326450650491366E-03,
+    0.13575491094922871973E-03,
+    0.90372734658751149261E-04,
+    0.53275293669780613125E-04,
+    0.25157870384280661489E-04,
+    0.69379364324108267170E-05
+  };
+  static double w_511[511] =
+  {
+    0.945715933950007048827E-06,
+    0.345456507169149134898E-05,
+    0.736624069102321668857E-05,
+    0.125792781889592743525E-04,
+    0.190213681905875816679E-04,
+    0.266376412339000901358E-04,
+    0.353751372055189588628E-04,
+    0.451863674126296143105E-04,
+    0.560319507856164252140E-04,
+    0.678774554733972416227E-04,
+    0.806899228014035293851E-04,
+    0.944366322532705527066E-04,
+    0.109085545645741522051E-03,
+    0.124606200241498368482E-03,
+    0.140970302204104791413E-03,
+    0.158151830411132242924E-03,
+    0.176126765545083195474E-03,
+    0.194872642236641146532E-03,
+    0.214368090034216937149E-03,
+    0.234592462123925204879E-03,
+    0.255525589595236862014E-03,
+    0.277147657465187357459E-03,
+    0.299439176850911730874E-03,
+    0.322381020652862389664E-03,
+    0.345954492129903871350E-03,
+    0.370141402122251665232E-03,
+    0.394924138246873704434E-03,
+    0.420285716355361231823E-03,
+    0.446209810101403247488E-03,
+    0.472680758429262691232E-03,
+    0.499683553312800484519E-03,
+    0.527203811431658386125E-03,
+    0.555227733977307579715E-03,
+    0.583742058714979703847E-03,
+    0.612734008012225209294E-03,
+    0.642191235948505088403E-03,
+    0.672101776960108194646E-03,
+    0.702453997827572321358E-03,
+    0.733236554224767912055E-03,
+    0.764438352543882784191E-03,
+    0.796048517297550871506E-03,
+    0.828056364077226302608E-03,
+    0.860451377808527848128E-03,
+    0.893223195879324912340E-03,
+    0.926361595613111283368E-03,
+    0.959856485506936206261E-03,
+    0.993697899638760857945E-03,
+    0.102787599466367326179E-02,
+    0.106238104885340071375E-02,
+    0.109720346268191941940E-02,
+    0.113233376051597664917E-02,
+    0.116776259302858043685E-02,
+    0.120348074001265964881E-02,
+    0.123947911332878396534E-02,
+    0.127574875977346947345E-02,
+    0.131228086370221478128E-02,
+    0.134906674928353113127E-02,
+    0.138609788229672549700E-02,
+    0.142336587141720519900E-02,
+    0.146086246895890987689E-02,
+    0.149857957106456636214E-02,
+    0.153650921735128916170E-02,
+    0.157464359003212166189E-02,
+    0.161297501254393423070E-02,
+    0.165149594771914570655E-02,
+    0.169019899554346019117E-02,
+    0.172907689054461607168E-02,
+    0.176812249885838886701E-02,
+    0.180732881501808930079E-02,
+    0.184668895851282540913E-02,
+    0.188619617015808475394E-02,
+    0.192584380831993546204E-02,
+    0.196562534503150547732E-02,
+    0.200553436203751169944E-02,
+    0.204556454679958293446E-02,
+    0.208570968849203942640E-02,
+    0.212596367401472533045E-02,
+    0.216632048404649142727E-02,
+    0.220677418916003329194E-02,
+    0.224731894601603393082E-02,
+    0.228794899365195972378E-02,
+    0.232865864987842738864E-02,
+    0.236944230779380495146E-02,
+    0.241029443242563417382E-02,
+    0.245120955750556483923E-02,
+    0.249218228238276930060E-02,
+    0.253320726907925325750E-02,
+    0.257427923948908888092E-02,
+    0.261539297272236109225E-02,
+    0.265654330259352828314E-02,
+    0.269772511525294586667E-02,
+    0.273893334695947541201E-02,
+    0.278016298199139435045E-02,
+    0.282140905069222207923E-02,
+    0.286266662764757868253E-02,
+    0.290393082998878368175E-02,
+    0.294519681581857582284E-02,
+    0.298645978275408290247E-02,
+    0.302771496658198544480E-02,
+    0.306895764002069252174E-02,
+    0.311018311158427546158E-02,
+    0.315138672454287935858E-02,
+    0.319256385597434736790E-02,
+    0.323370991590184336368E-02,
+    0.327482034651233969564E-02,
+    0.331589062145094394706E-02,
+    0.335691624518616761342E-02,
+    0.339789275244138669739E-02,
+    0.343881570768790591876E-02,
+    0.347968070469521146972E-02,
+    0.352048336613417922682E-02,
+    0.356121934322919357659E-02,
+    0.360188431545532431869E-02,
+    0.364247399027690353194E-02,
+    0.368298410292403911967E-02,
+    0.372341041620379550870E-02,
+    0.376374872034296338241E-02,
+    0.380399483285952829161E-02,
+    0.384414459846013158917E-02,
+    0.388419388896099560998E-02,
+    0.392413860322995774660E-02,
+    0.396397466714742455513E-02,
+    0.400369803358421688562E-02,
+    0.404330468239442998549E-02,
+    0.408279062042157838350E-02,
+    0.412215188151643401528E-02,
+    0.416138452656509745764E-02,
+    0.420048464352596631772E-02,
+    0.423944834747438184434E-02,
+    0.427827178065384480959E-02,
+    0.431695111253279479928E-02,
+    0.435548253986604343679E-02,
+    0.439386228676004195260E-02,
+    0.443208660474124713206E-02,
+    0.447015177282692726900E-02,
+    0.450805409759782158001E-02,
+    0.454578991327213285488E-02,
+    0.458335558178039420335E-02,
+    0.462074749284080687482E-02,
+    0.465796206403469754658E-02,
+    0.469499574088179046532E-02,
+    0.473184499691503264714E-02,
+    0.476850633375474925263E-02,
+    0.480497628118194150483E-02,
+    0.484125139721057135214E-02,
+    0.487732826815870573054E-02,
+    0.491320350871841897367E-02,
+    0.494887376202437487201E-02,
+    0.498433569972103029914E-02,
+    0.501958602202842039909E-02,
+    0.505462145780650125058E-02,
+    0.508943876461803986674E-02,
+    0.512403472879005351831E-02,
+    0.515840616547381084096E-02,
+    0.519254991870341614863E-02,
+    0.522646286145300596306E-02,
+    0.526014189569259311205E-02,
+    0.529358395244259896547E-02,
+    0.532678599182711857974E-02,
+    0.535974500312596681161E-02,
+    0.539245800482555593606E-02,
+    0.542492204466865704951E-02,
+    0.545713419970309863995E-02,
+    0.548909157632945623482E-02,
+    0.552079131034778706457E-02,
+    0.555223056700346326850E-02,
+    0.558340654103215637610E-02,
+    0.561431645670402467678E-02,
+    0.564495756786715368885E-02,
+    0.567532715799029830087E-02,
+    0.570542254020497332312E-02,
+    0.573524105734693719020E-02,
+    0.576478008199711142954E-02,
+    0.579403701652197628421E-02,
+    0.582300929311348057702E-02,
+    0.585169437382850155033E-02,
+    0.588008975062788803205E-02,
+    0.590819294541511788161E-02,
+    0.593600151007459827614E-02,
+    0.596351302650963502011E-02,
+    0.599072510668009471472E-02,
+    0.601763539263978131522E-02,
+    0.604424155657354634589E-02,
+    0.607054130083414983949E-02,
+    0.609653235797888692923E-02,
+    0.612221249080599294931E-02,
+    0.614757949239083790214E-02,
+    0.617263118612191922727E-02,
+    0.619736542573665996342E-02,
+    0.622178009535701763157E-02,
+    0.624587310952490748541E-02,
+    0.626964241323744217671E-02,
+    0.629308598198198836688E-02,
+    0.631620182177103938227E-02,
+    0.633898796917690165912E-02,
+    0.636144249136619145314E-02,
+    0.638356348613413709795E-02,
+    0.640534908193868098342E-02,
+    0.642679743793437438922E-02,
+    0.644790674400605734710E-02,
+    0.646867522080231481688E-02,
+    0.648910111976869964292E-02,
+    0.650918272318071200827E-02,
+    0.652891834417652442012E-02,
+    0.654830632678944064054E-02,
+    0.656734504598007641819E-02,
+    0.658603290766824937794E-02,
+    0.660436834876456498276E-02,
+    0.662234983720168509457E-02,
+    0.663997587196526532519E-02,
+    0.665724498312454708217E-02,
+    0.667415573186258997654E-02,
+    0.669070671050613006584E-02,
+    0.670689654255504925648E-02,
+    0.672272388271144108036E-02,
+    0.673818741690825799086E-02,
+    0.675328586233752529078E-02,
+    0.676801796747810680683E-02,
+    0.678238251212300746082E-02,
+    0.679637830740619795480E-02,
+    0.681000419582894688374E-02,
+    0.682325905128564571420E-02,
+    0.683614177908911221841E-02,
+    0.684865131599535812903E-02,
+    0.686078663022780697951E-02,
+    0.687254672150094831613E-02,
+    0.688393062104341470995E-02,
+    0.689493739162046825872E-02,
+    0.690556612755588354803E-02,
+    0.691581595475321433825E-02,
+    0.692568603071643155621E-02,
+    0.693517554456992049848E-02,
+    0.694428371707782549438E-02,
+    0.695300980066273063177E-02,
+    0.696135307942366551493E-02,
+    0.696931286915342540213E-02,
+    0.697688851735519545845E-02,
+    0.698407940325846925786E-02,
+    0.699088493783425207545E-02,
+    0.699730456380953992594E-02,
+    0.700333775568106572820E-02,
+    0.700898401972830440494E-02,
+    0.701424289402572916425E-02,
+    0.701911394845431165171E-02,
+    0.702359678471225911031E-02,
+    0.702769103632498213858E-02,
+    0.703139636865428709508E-02,
+    0.703471247890678765907E-02,
+    0.703763909614153052319E-02,
+    0.704017598127683066242E-02,
+    0.704232292709631209597E-02,
+    0.704407975825415053266E-02,
+    0.704544633127951476780E-02,
+    0.704642253458020417748E-02,
+    0.704700828844548013730E-02,
+    0.704720354504808967346E-02,
+    0.704700828844548013730E-02,
+    0.704642253458020417748E-02,
+    0.704544633127951476780E-02,
+    0.704407975825415053266E-02,
+    0.704232292709631209597E-02,
+    0.704017598127683066242E-02,
+    0.703763909614153052319E-02,
+    0.703471247890678765907E-02,
+    0.703139636865428709508E-02,
+    0.702769103632498213858E-02,
+    0.702359678471225911031E-02,
+    0.701911394845431165171E-02,
+    0.701424289402572916425E-02,
+    0.700898401972830440494E-02,
+    0.700333775568106572820E-02,
+    0.699730456380953992594E-02,
+    0.699088493783425207545E-02,
+    0.698407940325846925786E-02,
+    0.697688851735519545845E-02,
+    0.696931286915342540213E-02,
+    0.696135307942366551493E-02,
+    0.695300980066273063177E-02,
+    0.694428371707782549438E-02,
+    0.693517554456992049848E-02,
+    0.692568603071643155621E-02,
+    0.691581595475321433825E-02,
+    0.690556612755588354803E-02,
+    0.689493739162046825872E-02,
+    0.688393062104341470995E-02,
+    0.687254672150094831613E-02,
+    0.686078663022780697951E-02,
+    0.684865131599535812903E-02,
+    0.683614177908911221841E-02,
+    0.682325905128564571420E-02,
+    0.681000419582894688374E-02,
+    0.679637830740619795480E-02,
+    0.678238251212300746082E-02,
+    0.676801796747810680683E-02,
+    0.675328586233752529078E-02,
+    0.673818741690825799086E-02,
+    0.672272388271144108036E-02,
+    0.670689654255504925648E-02,
+    0.669070671050613006584E-02,
+    0.667415573186258997654E-02,
+    0.665724498312454708217E-02,
+    0.663997587196526532519E-02,
+    0.662234983720168509457E-02,
+    0.660436834876456498276E-02,
+    0.658603290766824937794E-02,
+    0.656734504598007641819E-02,
+    0.654830632678944064054E-02,
+    0.652891834417652442012E-02,
+    0.650918272318071200827E-02,
+    0.648910111976869964292E-02,
+    0.646867522080231481688E-02,
+    0.644790674400605734710E-02,
+    0.642679743793437438922E-02,
+    0.640534908193868098342E-02,
+    0.638356348613413709795E-02,
+    0.636144249136619145314E-02,
+    0.633898796917690165912E-02,
+    0.631620182177103938227E-02,
+    0.629308598198198836688E-02,
+    0.626964241323744217671E-02,
+    0.624587310952490748541E-02,
+    0.622178009535701763157E-02,
+    0.619736542573665996342E-02,
+    0.617263118612191922727E-02,
+    0.614757949239083790214E-02,
+    0.612221249080599294931E-02,
+    0.609653235797888692923E-02,
+    0.607054130083414983949E-02,
+    0.604424155657354634589E-02,
+    0.601763539263978131522E-02,
+    0.599072510668009471472E-02,
+    0.596351302650963502011E-02,
+    0.593600151007459827614E-02,
+    0.590819294541511788161E-02,
+    0.588008975062788803205E-02,
+    0.585169437382850155033E-02,
+    0.582300929311348057702E-02,
+    0.579403701652197628421E-02,
+    0.576478008199711142954E-02,
+    0.573524105734693719020E-02,
+    0.570542254020497332312E-02,
+    0.567532715799029830087E-02,
+    0.564495756786715368885E-02,
+    0.561431645670402467678E-02,
+    0.558340654103215637610E-02,
+    0.555223056700346326850E-02,
+    0.552079131034778706457E-02,
+    0.548909157632945623482E-02,
+    0.545713419970309863995E-02,
+    0.542492204466865704951E-02,
+    0.539245800482555593606E-02,
+    0.535974500312596681161E-02,
+    0.532678599182711857974E-02,
+    0.529358395244259896547E-02,
+    0.526014189569259311205E-02,
+    0.522646286145300596306E-02,
+    0.519254991870341614863E-02,
+    0.515840616547381084096E-02,
+    0.512403472879005351831E-02,
+    0.508943876461803986674E-02,
+    0.505462145780650125058E-02,
+    0.501958602202842039909E-02,
+    0.498433569972103029914E-02,
+    0.494887376202437487201E-02,
+    0.491320350871841897367E-02,
+    0.487732826815870573054E-02,
+    0.484125139721057135214E-02,
+    0.480497628118194150483E-02,
+    0.476850633375474925263E-02,
+    0.473184499691503264714E-02,
+    0.469499574088179046532E-02,
+    0.465796206403469754658E-02,
+    0.462074749284080687482E-02,
+    0.458335558178039420335E-02,
+    0.454578991327213285488E-02,
+    0.450805409759782158001E-02,
+    0.447015177282692726900E-02,
+    0.443208660474124713206E-02,
+    0.439386228676004195260E-02,
+    0.435548253986604343679E-02,
+    0.431695111253279479928E-02,
+    0.427827178065384480959E-02,
+    0.423944834747438184434E-02,
+    0.420048464352596631772E-02,
+    0.416138452656509745764E-02,
+    0.412215188151643401528E-02,
+    0.408279062042157838350E-02,
+    0.404330468239442998549E-02,
+    0.400369803358421688562E-02,
+    0.396397466714742455513E-02,
+    0.392413860322995774660E-02,
+    0.388419388896099560998E-02,
+    0.384414459846013158917E-02,
+    0.380399483285952829161E-02,
+    0.376374872034296338241E-02,
+    0.372341041620379550870E-02,
+    0.368298410292403911967E-02,
+    0.364247399027690353194E-02,
+    0.360188431545532431869E-02,
+    0.356121934322919357659E-02,
+    0.352048336613417922682E-02,
+    0.347968070469521146972E-02,
+    0.343881570768790591876E-02,
+    0.339789275244138669739E-02,
+    0.335691624518616761342E-02,
+    0.331589062145094394706E-02,
+    0.327482034651233969564E-02,
+    0.323370991590184336368E-02,
+    0.319256385597434736790E-02,
+    0.315138672454287935858E-02,
+    0.311018311158427546158E-02,
+    0.306895764002069252174E-02,
+    0.302771496658198544480E-02,
+    0.298645978275408290247E-02,
+    0.294519681581857582284E-02,
+    0.290393082998878368175E-02,
+    0.286266662764757868253E-02,
+    0.282140905069222207923E-02,
+    0.278016298199139435045E-02,
+    0.273893334695947541201E-02,
+    0.269772511525294586667E-02,
+    0.265654330259352828314E-02,
+    0.261539297272236109225E-02,
+    0.257427923948908888092E-02,
+    0.253320726907925325750E-02,
+    0.249218228238276930060E-02,
+    0.245120955750556483923E-02,
+    0.241029443242563417382E-02,
+    0.236944230779380495146E-02,
+    0.232865864987842738864E-02,
+    0.228794899365195972378E-02,
+    0.224731894601603393082E-02,
+    0.220677418916003329194E-02,
+    0.216632048404649142727E-02,
+    0.212596367401472533045E-02,
+    0.208570968849203942640E-02,
+    0.204556454679958293446E-02,
+    0.200553436203751169944E-02,
+    0.196562534503150547732E-02,
+    0.192584380831993546204E-02,
+    0.188619617015808475394E-02,
+    0.184668895851282540913E-02,
+    0.180732881501808930079E-02,
+    0.176812249885838886701E-02,
+    0.172907689054461607168E-02,
+    0.169019899554346019117E-02,
+    0.165149594771914570655E-02,
+    0.161297501254393423070E-02,
+    0.157464359003212166189E-02,
+    0.153650921735128916170E-02,
+    0.149857957106456636214E-02,
+    0.146086246895890987689E-02,
+    0.142336587141720519900E-02,
+    0.138609788229672549700E-02,
+    0.134906674928353113127E-02,
+    0.131228086370221478128E-02,
+    0.127574875977346947345E-02,
+    0.123947911332878396534E-02,
+    0.120348074001265964881E-02,
+    0.116776259302858043685E-02,
+    0.113233376051597664917E-02,
+    0.109720346268191941940E-02,
+    0.106238104885340071375E-02,
+    0.102787599466367326179E-02,
+    0.993697899638760857945E-03,
+    0.959856485506936206261E-03,
+    0.926361595613111283368E-03,
+    0.893223195879324912340E-03,
+    0.860451377808527848128E-03,
+    0.828056364077226302608E-03,
+    0.796048517297550871506E-03,
+    0.764438352543882784191E-03,
+    0.733236554224767912055E-03,
+    0.702453997827572321358E-03,
+    0.672101776960108194646E-03,
+    0.642191235948505088403E-03,
+    0.612734008012225209294E-03,
+    0.583742058714979703847E-03,
+    0.555227733977307579715E-03,
+    0.527203811431658386125E-03,
+    0.499683553312800484519E-03,
+    0.472680758429262691232E-03,
+    0.446209810101403247488E-03,
+    0.420285716355361231823E-03,
+    0.394924138246873704434E-03,
+    0.370141402122251665232E-03,
+    0.345954492129903871350E-03,
+    0.322381020652862389664E-03,
+    0.299439176850911730874E-03,
+    0.277147657465187357459E-03,
+    0.255525589595236862014E-03,
+    0.234592462123925204879E-03,
+    0.214368090034216937149E-03,
+    0.194872642236641146532E-03,
+    0.176126765545083195474E-03,
+    0.158151830411132242924E-03,
+    0.140970302204104791413E-03,
+    0.124606200241498368482E-03,
+    0.109085545645741522051E-03,
+    0.944366322532705527066E-04,
+    0.806899228014035293851E-04,
+    0.678774554733972416227E-04,
+    0.560319507856164252140E-04,
+    0.451863674126296143105E-04,
+    0.353751372055189588628E-04,
+    0.266376412339000901358E-04,
+    0.190213681905875816679E-04,
+    0.125792781889592743525E-04,
+    0.736624069102321668857E-05,
+    0.345456507169149134898E-05,
+    0.945715933950007048827E-06,
+  };
+
+  if ( n == 1 )
+  {
+    webbur::r8vec_copy ( n, w_001, w );
+  }
+  else if ( n == 3 )
+  {
+    webbur::r8vec_copy ( n, w_003, w );
+  }
+  else if ( n == 7 )
+  {
+    webbur::r8vec_copy ( n, w_007, w );
+  }
+  else if ( n == 15 )
+  {
+    webbur::r8vec_copy ( n, w_015, w );
+  }
+  else if ( n == 31 )
+  {
+    webbur::r8vec_copy ( n, w_031, w );
+  }
+  else if ( n == 63 )
+  {
+    webbur::r8vec_copy ( n, w_063, w );
+  }
+  else if ( n == 127 )
+  {
+    webbur::r8vec_copy ( n, w_127, w );
+  }
+  else if ( n == 255 )
+  {
+    webbur::r8vec_copy ( n, w_255, w );
+  }
+  else if ( n == 511 )
+  {
+    webbur::r8vec_copy ( n, w_511, w );
+  }
+  else
+  {
+    std::cerr << "\n";
+    std::cerr << "PATTERSON_LOOKUP_WEIGHTS - Fatal error!\n";
+    std::cerr << "  Unexpected value of N = " << n << ".\n";
+    std::exit ( 1 );
+  }
+  return;
+}
+//****************************************************************************80
+
+void patterson_lookup_weights_np ( int n, int np, double p[], double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    PATTERSON_LOOKUP_WEIGHTS_NP looks up Patterson quadrature weights.
+//
+//  Discussion:
+//
+//    The allowed orders are 1, 3, 7, 15, 31, 63, 127, 255 and 511.
+//
+//    The weights are positive, symmetric and should sum to 2.
+//
+//    The user must preallocate space for the output array W.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    25 April 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Milton Abramowitz, Irene Stegun,
+//    Handbook of Mathematical Functions,
+//    National Bureau of Standards, 1964,
+//    ISBN: 0-486-61272-4,
+//    LC: QA47.A34.
+//
+//    Arthur Stroud, Don Secrest,
+//    Gaussian Quadrature Formulas,
+//    Prentice Hall, 1966,
+//    LC: QA299.4G3S7.
+//
+//  Parameters:
+//
+//    Input, int N, the order.
+//    Legal values are 1, 3, 7, 15, 31, 63, 127, 255 or 511.
+//
+//    Input, int NP, the number of parameters.
+//
+//    Input, double P[NP], parameters which are not needed by this function.
+//
+//    Output, double W[N], the weights.
+//
+{
+  patterson_lookup_weights ( n, w );
+
+  return;
+}
+//****************************************************************************80
+
+int point_radial_tol_unique_count ( int m, int n, double a[], double tol,
+  int *seed )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    POINT_RADIAL_TOL_UNIQUE_COUNT counts the tolerably unique points.
+//
+//  Discussion:
+//
+//    The input data is an M x N array A, representing the M-dimensional
+//    coordinates of N points.
+//
+//    The output is the number of tolerably unique points in the list.
+//
+//    This program performs the same task as POINT_TOL_UNIQUE_COUNT.
+//    But that program is guaranteed to use N^2 comparisons.
+//
+//    It is hoped that this function, on the other hand, will tend
+//    to use O(N) comparisons after an O(NLog(N)) sort.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    24 July 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, the number of rows.
+//
+//    Input, int N, the number of columns.
+//
+//    Input, double A[M*N], the array of N columns of data.
+//
+//    Input, double TOL, a tolerance for equality.
+//
+//    Input/output, int *SEED, a seed for the random
+//    number generator.
+//
+//    Output, int POINT_RADIAL_TOL_UNIQUE_COUNT, the number of tolerably
+//    unique points.
+//
+{
+  double dist;
+  int hi;
+  int i;
+  int *indx;
+  int j;
+  int k;
+  double *r;
+  bool *unique;
+  int unique_num;
+  double *w;
+  double w_sum;
+  double *z;
+
+  if ( n <= 0 )
+  {
+    unique_num = 0;
+    return unique_num;
+  }
+//
+//  Assign a base point Z randomly in the convex hull.
+//
+  w = webbur::r8vec_uniform_01_new ( n, seed );
+  w_sum = webbur::r8vec_sum ( n, w );
+  for ( j = 0; j < n; j++ )
+  {
+    w[j] = w[j] / w_sum;
+  }
+
+  z = new double[m];
+  for ( i = 0; i < m; i++ )
+  {
+    z[i] = 0.0;
+    for ( j = 0; j < n; j++ )
+    {
+      z[i] = z[i] + a[i+j*m] * w[j];
+    }
+  }
+//
+//  Compute the radial distance R of each point to Z.
+//
+  r = new double[n];
+
+  for ( j = 0; j < n; j++ )
+  {
+    r[j] = 0.0;
+    for ( i = 0; i < m; i++ )
+    {
+      r[j] = r[j] + std::pow ( a[i+j*m] - z[i], 2 );
+    }
+    r[j] = std::sqrt ( r[j] );
+  }
+//
+//  Implicitly sort the R array.
+//
+  indx = webbur::r8vec_sort_heap_index_a_new ( n, r );
+//
+//  To determine if a point I is tolerably unique, we only have to check
+//  whether it is distinct from all points J such that R(I) <= R(J) <= R(J)+TOL.
+//
+  unique_num = 0;
+
+  unique = new bool[n];
+  for ( i = 0; i < n; i++ )
+  {
+    unique[i] = true;
+  }
+
+  for ( i = 0; i < n; i++ )
+  {
+    if ( unique[indx[i]] )
+    {
+//
+//  Point INDX(I) is unique, in that no earlier point is near it.
+//
+      unique_num = unique_num + 1;
+//
+//  Look for later points which are close to point INDX(I)
+//  in terms of R.
+//
+      hi = i;
+
+      while ( hi < n - 1 )
+      {
+        if ( r[indx[i]] + tol < r[indx[hi+1]] )
+        {
+          break;
+        }
+        hi = hi + 1;
+      }
+//
+//  Points INDX(I+1) through INDX(HI) have an R value close to
+//  point INDX(I).  Are they truly close to point INDEX(I)?
+//
+      for ( j = i + 1; j <= hi; j++ )
+      {
+        if ( unique[indx[j]] )
+        {
+          dist = 0.0;
+          for ( k = 0; k < m; k++ )
+          {
+            dist = dist + std::pow ( a[k+indx[i]*m] - a[k+indx[j]*m], 2 );
+          }
+          dist = std::sqrt ( dist );
+
+          if ( dist <= tol )
+          {
+            unique[indx[j]] = false;
+          }
+        }
+      }
+    }
+  }
+
+  delete [] indx;
+  delete [] r;
+  delete [] unique;
+  delete [] w;
+  delete [] z;
+
+  return unique_num;
+}
+//****************************************************************************80
+
+void point_radial_tol_unique_count_inc1 ( int m, int n1, double a1[],
+  double tol, int *seed, double z[], double r1[], int indx1[], bool unique1[],
+  int *unique_num1 )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    POINT_RADIAL_TOL_UNIQUE_COUNT_INC1 counts the tolerably unique points.
+//
+//  Discussion:
+//
+//    The input data includes an M x N1 array A1 of a set of N1
+//    "permanent" points and N2 "temporary" points.
+//
+//    This is a two step version of POINT_RADIAL_TOL_UNIQUE_COUNT_INC.
+//
+//    This means that we want to identify the tolerably unique points
+//    among the permanent points before processing the temporary points.
+//
+//    If many sets of temporary data are considered, this function will
+//    do a lot of unnecessary work resorting the permanent data; it would
+//    be possible to avoid repetitions of that work at the expense of saving
+//    various work vectors.  This function accepts the overhead of the
+//    repeated calculations for the benefit of only having to "remember"
+//    the number of unique points discovered.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    01 October 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, the number of rows.
+//
+//    Input, int N1, the number of permanent points.
+//
+//    Input, double A1[M*N1], the permanent points.
+//
+//    Input, double TOL, a tolerance for equality.
+//
+//    Input/output, int *SEED, a seed for the random
+//    number generator.
+//
+//    Output, double Z[M], a random base vector used to
+//    linearly sort the data.
+//
+//    Output, double R1[N1], the scalar values assigned to
+//    the data for sorting.
+//
+//    Output, int INDX1[N1], the ascending sort index
+//    for A1.
+//
+//    Output, bool UNIQUE1[N1], is TRUE for each unique permanent point.
+//
+//    Output, int *UNIQUE_NUM1, the number of tolerably
+//    unique permanent points.
+//
+{
+  double dist;
+  int hi;
+  int i;
+  int j;
+  int j1;
+  int k1;
+  double *w;
+  double w_sum;
+//
+//  Assign a base point Z randomly in the convex hull of the permanent points.
+//
+  w = webbur::r8vec_uniform_01_new ( n1, seed );
+  w_sum = webbur::r8vec_sum ( n1, w );
+  for ( j1 = 0; j1 < n1; j1++ )
+  {
+    w[j1] = w[j1] / w_sum;
+  }
+  for ( i = 0; i < m; i++ )
+  {
+    z[i] = 0.0;
+    for ( j1 = 0; j1 < n1; j1++ )
+    {
+      z[i] = z[i] + a1[i+j1*m] * w[j1];
+    }
+  }
+//
+//  Initialize the permanent point data.
+//
+  for ( j1 = 0; j1 < n1; j1++ )
+  {
+    r1[j1] = 0.0;
+    for ( i = 0; i < m; i++ )
+    {
+      r1[j1] = r1[j1] + std::pow ( a1[i+j1*m] - z[i], 2 );
+    }
+    r1[j1] = std::sqrt ( r1[j1] );
+  }
+  webbur::r8vec_sort_heap_index_a ( n1, r1, indx1 );
+
+  *unique_num1 = 0;
+  for ( j1 = 0; j1 < n1; j1++ )
+  {
+    unique1[j1] = true;
+  }
+//
+//  STEP 1:
+//  Compare PERMANENT POINTS to PERMANENT POINTS.
+//
+  for ( j1 = 0; j1 < n1; j1++ )
+  {
+    if ( unique1[indx1[j1]] )
+    {
+      *unique_num1 = *unique_num1 + 1;
+
+      hi = j1;
+
+      while ( hi < n1 - 1 )
+      {
+        if ( r1[indx1[j1]] + tol < r1[indx1[hi+1]] )
+        {
+          break;
+        }
+        hi = hi + 1;
+      }
+
+      for ( k1 = j1 + 1; k1 <= hi; k1++ )
+      {
+        if ( unique1[indx1[k1]] )
+        {
+          dist = 0.0;
+          for ( i = 0; i < m; i++ )
+          {
+            dist = dist + std::pow ( a1[i+indx1[j1]*m] - a1[i+indx1[k1]*m], 2 );
+          }
+          dist = std::sqrt ( dist );
+
+          if ( dist <= tol )
+          {
+            unique1[indx1[k1]] = false;
+          }
+        }
+      }
+    }
+  }
+
+  delete [] w;
+
+  return;
+}
+//****************************************************************************80
+
+void point_radial_tol_unique_count_inc2 ( int m, int n1, double a1[], int n2,
+  double a2[], double tol, double z[], double r1[], int indx1[], bool unique1[],
+  int *unique_num2 )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    POINT_RADIAL_TOL_UNIQUE_COUNT_INC2 counts the tolerably unique points.
+//
+//  Discussion:
+//
+//    The input data includes an M x N1 array A1 and an M x N2 array A2,
+//    representing the M-dimensional coordinates of a set of N1
+//    "permanent" points and N2 "temporary" points.
+//
+//    This is an "incremental" version of POINT_RADIAL_TOL_UNIQUE_COUNT.
+//
+//    This means that we want to identify the tolerably unique points
+//    among the permanent points before processing the temporary points.
+//
+//    If many sets of temporary data are considered, this function will
+//    do a lot of unnecessary work resorting the permanent data; it would
+//    be possible to avoid repetitions of that work at the expense of saving
+//    various work vectors.  This function accepts the overhead of the
+//    repeated calculations for the benefit of only having to "remember"
+//    the number of unique points discovered.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    01 October 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, the number of rows.
+//
+//    Input, int N1, the number of permanent points.
+//
+//    Input, double A1[M*N1], the permanent points.
+//
+//    Input, int N2, the number of temporary points.
+//
+//    Input, double A2[M*N2], the temporary points.
+//
+//    Input, double TOL, a tolerance for equality.
+//
+//    Input, double Z[M], a random base vector used to
+//    linearly sort the data.
+//
+//    Input, double R1[N1], the scalar values assigned to
+//    the data for sorting.
+//
+//    Input, int INDX1[N1], the ascending sort index
+//    for A1.
+//
+//    Input, bool UNIQUE1[N1], is TRUE for each unique permanent point.
+//
+//    Output, int *UNIQUE_NUM2, the number of additional
+//    tolerably unique points if the temporary points are included.
+//
+{
+  double dist;
+  int hi;
+  int i;
+  int *indx2;
+  int j;
+  int j1;
+  int j2;
+  int j2_hi;
+  int j2_lo;
+  int k1;
+  int k2;
+  double r_hi;
+  double r_lo;
+  double *r2;
+  bool *unique2;
+//
+//  Initialize the temporary point data.
+//
+  r2 = new double[n2];
+  for ( j2 = 0; j2 < n2; j2++ )
+  {
+    r2[j2] = 0.0;
+    for ( i = 0; i < m; i++ )
+    {
+      r2[j2] = r2[j2] + std::pow ( a2[i+j2*m] - z[i], 2 );
+    }
+    r2[j2] = std::sqrt ( r2[j2] );
+  }
+
+  indx2 = new int[n2];
+  webbur::r8vec_sort_heap_index_a ( n2, r2, indx2 );
+
+  unique2 = new bool[n2];
+  for ( j2 = 0; j2 < n2; j2++ )
+  {
+    unique2[j2] = true;
+  }
+
+  *unique_num2 = 0;
+//
+//  STEP 2:
+//  Use PERMANENT points to eliminate TEMPORARY points.
+//
+  for ( j1 = 0; j1 < n1; j1++ )
+  {
+    if ( unique1[indx1[j1]] )
+    {
+      r_lo = r1[indx1[j1]] - tol;
+      r_hi = r1[indx1[j1]] + tol;
+
+      webbur::r8vec_index_sorted_range ( n2, r2, indx2, r_lo, r_hi,
+        &j2_lo, &j2_hi );
+
+      for ( j2 = j2_lo; j2 <= j2_hi; j2++ )
+      {
+        if ( unique2[indx2[j2]] )
+        {
+          dist = 0.0;
+          for ( i = 0; i < m; i++ )
+          {
+            dist = dist + std::pow ( a1[i+indx1[j1]*m]
+                                   - a2[i+indx2[j2]*m], 2 );
+          }
+          dist = std::sqrt ( dist );
+          if ( dist <= tol )
+          {
+            unique2[indx2[j2]] = false;
+          }
+        }
+      }
+    }
+  }
+//
+//  STEP 3:
+//  Use TEMPORARY points to eliminate TEMPORARY points.
+//
+  for ( j2 = 0; j2 < n2; j2++ )
+  {
+    if ( unique2[indx2[j2]] )
+    {
+      *unique_num2 = *unique_num2 + 1;
+
+      hi = j2;
+
+      while ( hi < n2 - 1 )
+      {
+        if ( r2[indx2[j2]] + tol < r2[indx2[hi+1]] )
+        {
+          break;
+        }
+        hi = hi + 1;
+      }
+
+      for ( k2 = j2 + 1; k2 <= hi; k2++ )
+      {
+        if ( unique2[indx2[k2]] )
+        {
+          dist = 0.0;
+          for ( i = 0; i < m; i++ )
+          {
+            dist = dist + std::pow ( a2[i+indx2[j2]*m] - a2[i+indx2[k2]*m], 2 );
+          }
+          dist = std::sqrt ( dist );
+
+          if ( dist <= tol )
+          {
+            unique2[indx2[k2]] = false;
+          }
+        }
+      }
+    }
+  }
+  delete [] indx2;
+  delete [] r2;
+  delete [] unique2;
+
+  return;
+}
+//****************************************************************************80
+
+int point_radial_tol_unique_index ( int m, int n, double a[], double tol,
+  int *seed, int undx[], int xdnu[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    POINT_RADIAL_TOL_UNIQUE_INDEX indexes the tolerably unique points.
+//
+//  Discussion:
+//
+//    The input data is an M x N array A, representing the M-dimensional
+//    coordinates of N points.
+//
+//    The output is:
+//    * the number of tolerably unique points in the list;
+//    * the index, in the list of unique items, of the representatives
+//      of each point;
+//    * the index, in A, of the tolerably unique representatives.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    28 July 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, the number of rows.
+//
+//    Input, int N, the number of columns.
+//
+//    Input, double A[M*N], the array of N columns of data.
+//
+//    Input, double TOL, a tolerance for equality.
+//
+//    Input/output, int SEED, a seed for the random
+//    number generator.
+//
+//    Output, int UNDX[UNIQUE_NUM], the index, in A, of the
+//    tolerably unique points.
+//
+//    Output, int XDNU[N], the index, in UNDX, of the
+//    tolerably unique point that "represents" this point.
+//
+//    Output, int POINT_RADIAL_TOL_UNIQUE_INDEX, the number of tolerably
+//    unique points.
+//
+{
+  double dist;
+  int hi;
+  int i;
+  int *indx;
+  int j;
+  int k;
+  double *r;
+  bool *unique;
+  int unique_num;
+  double *w;
+  double w_sum;
+  double *z;
+
+  if ( n <= 0 )
+  {
+    unique_num = 0;
+    return unique_num;
+  }
+//
+//  Assign a base point Z randomly in the convex hull.
+//
+  w = webbur::r8vec_uniform_01_new ( n, seed );
+  w_sum = webbur::r8vec_sum ( n, w );
+  for ( j = 0; j < n; j++ )
+  {
+    w[j] = w[j] / w_sum;
+  }
+
+  z = new double[m];
+  for ( i = 0; i < m; i++ )
+  {
+    z[i] = 0.0;
+    for ( j = 0; j < n; j++ )
+    {
+      z[i] = z[i] + a[i+j*m] * w[j];
+    }
+  }
+//
+//  Compute the radial distance R of each point to Z.
+//
+  r = new double[n];
+
+  for ( j = 0; j < n; j++ )
+  {
+    r[j] = 0.0;
+    for ( i = 0; i < m; i++ )
+    {
+      r[j] = r[j] + std::pow ( a[i+j*m] - z[i], 2 );
+    }
+    r[j] = std::sqrt ( r[j] );
+  }
+//
+//  Implicitly sort the R array.
+//
+  indx = webbur::r8vec_sort_heap_index_a_new ( n, r );
+//
+//  To determine if a point I is tolerably unique, we only have to check
+//  whether it is distinct from all points J such that R(I) <= R(J) <= R(J)+TOL.
+//
+  unique_num = 0;
+
+  unique = new bool[n];
+  for ( i = 0; i < n; i++ )
+  {
+    unique[i] = true;
+  }
+
+  for ( i = 0; i < n; i++ )
+  {
+    if ( unique[indx[i]] )
+    {
+//
+//  Point INDX(I) is unique, in that no earlier point is near it.
+//
+      xdnu[indx[i]] = unique_num;
+      undx[unique_num] = indx[i];
+      unique_num = unique_num + 1;
+//
+//  Look for later points which are close to point INDX(I)
+//  in terms of R.
+//
+      hi = i;
+
+      while ( hi < n - 1 )
+      {
+        if ( r[indx[i]] + tol < r[indx[hi+1]] )
+        {
+          break;
+        }
+        hi = hi + 1;
+      }
+//
+//  Points INDX(I+1) through INDX(HI) have an R value close to
+//  point INDX(I).  Are they truly close to point INDEX(I)?
+//
+      for ( j = i + 1; j <= hi; j++ )
+      {
+        if ( unique[indx[j]] )
+        {
+          dist = 0.0;
+          for ( k = 0; k < m; k++ )
+          {
+            dist = dist + std::pow ( a[k+indx[i]*m] - a[k+indx[j]*m], 2 );
+          }
+          dist = std::sqrt ( dist );
+
+          if ( dist <= tol )
+          {
+            unique[indx[j]] = false;
+            xdnu[indx[j]] = xdnu[indx[i]];
+          }
+        }
+      }
+    }
+  }
+
+  delete [] indx;
+  delete [] r;
+  delete [] unique;
+  delete [] w;
+  delete [] z;
+
+  return unique_num;
+}
+//****************************************************************************80
+
+void point_radial_tol_unique_index_inc1 ( int m, int n1, double a1[],
+  double tol, int *seed, double z[], double r1[], int indx1[], bool unique1[],
+  int *unique_num1, int undx1[], int xdnu1[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    POINT_RADIAL_TOL_UNIQUE_INDEX_INC1 indexes the tolerably unique points.
+//
+//  Discussion:
+//
+//    The input data includes an M x N1 array A1 of
+//    "permanent" points.
+//
+//    This is a two step version of POINT_RADIAL_TOL_UNIQUE_INDEX_INC.
+//
+//    The output is:
+//    * the number of tolerably unique points in the list;
+//    * the index, in the list of unique items, of the representatives
+//      of each point;
+//    * the index, in A1, of the tolerably unique representatives.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    02 October 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, the number of rows.
+//
+//    Input, int N1, the number of permanent points.
+//
+//    Input, double A1[M*N1], the permanent points.
+//
+//    Input, double TOL, a tolerance for equality.
+//
+//    Input/output, int *SEED, a seed for the random
+//    number generator.
+//
+//    Output, double Z[M], a random base vector used to
+//    linearly sort the data.
+//
+//    Output, double R1[N1], the scalar values assigned to
+//    the data for sorting.
+//
+//    Output, int INDX1[N1], the ascending sort index for A1.
+//
+//    Output, bool UNIQUE1[N1], is TRUE for unique permanent points.
+//
+//    Output, int *UNIQUE_NUM1, the number of tolerably unique points
+//    with just the permanent points.
+//
+//    Output, int UNDX1[UNIQUE_NUM1], the index, in A1, of the tolerably
+//    unique points.
+//
+//    Output, int XDNU1[N1], the index, in UNDX1, of the tolerably unique
+//    point that "represents" this point.
+//
+{
+  double dist;
+  int hi;
+  int i;
+  int j;
+  int j1;
+  int k1;
+  double *w;
+  double w_sum;
+//
+//  Assign a base point Z randomly in the convex hull of the permanent points.
+//
+  w = webbur::r8vec_uniform_01_new ( n1, seed );
+  w_sum = webbur::r8vec_sum ( n1, w );
+  for ( j1 = 0; j1 < n1; j1++ )
+  {
+    w[j1] = w[j1] / w_sum;
+  }
+
+  for ( i = 0; i < m; i++ )
+  {
+    z[i] = 0.0;
+    for ( j1 = 0; j1 < n1; j1++ )
+    {
+      z[i] = z[i] + a1[i+j1*m] * w[j1];
+    }
+  }
+//
+//  Initialize the permanent point data.
+//
+  for ( j1 = 0; j1 < n1; j1++ )
+  {
+    r1[j1] = 0.0;
+    for ( i = 0; i < m; i++ )
+    {
+      r1[j1] = r1[j1] + std::pow ( a1[i+j1*m] - z[i], 2 );
+    }
+    r1[j1] = std::sqrt ( r1[j1] );
+  }
+  webbur::r8vec_sort_heap_index_a ( n1, r1, indx1 );
+
+  *unique_num1 = 0;
+  for ( j1 = 0; j1 < n1; j1++ )
+  {
+    unique1[j1] = true;
+  }
+//
+//  STEP 1:
+//  Compare PERMANENT POINTS to PERMANENT POINTS.
+//
+  for ( j1 = 0; j1 < n1; j1++ )
+  {
+    if ( unique1[indx1[j1]] )
+    {
+      xdnu1[indx1[j1]] = *unique_num1;
+      undx1[*unique_num1] = indx1[j1];
+      *unique_num1 = *unique_num1 + 1;
+
+      hi = j1;
+
+      while ( hi < n1 - 1 )
+      {
+        if ( r1[indx1[j1]] + tol < r1[indx1[hi+1]] )
+        {
+          break;
+        }
+        hi = hi + 1;
+      }
+
+      for ( k1 = j1 + 1; k1 <= hi; k1++ )
+      {
+        if ( unique1[indx1[k1]] )
+        {
+          dist = 0.0;
+          for ( i = 0; i < m; i++ )
+          {
+            dist = dist + std::pow ( a1[i+indx1[j1]*m] - a1[i+indx1[k1]*m], 2 );
+          }
+          dist = std::sqrt ( dist );
+
+          if ( dist <= tol )
+          {
+            unique1[indx1[k1]] = false;
+            xdnu1[indx1[k1]] = xdnu1[indx1[j1]];
+          }
+        }
+      }
+    }
+  }
+
+  delete [] w;
+
+  return;
+}
+//****************************************************************************80
+
+void point_radial_tol_unique_index_inc2 ( int m, int n1, double a1[], int n2,
+  double a2[], double tol, double z[], double r1[], int indx1[], bool unique1[],
+  int unique_num1, int undx1[], int xdnu1[], double r2[],
+  int indx2[], bool unique2[], int *unique_num2, int undx2[], int xdnu2[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    POINT_RADIAL_TOL_UNIQUE_INDEX_INC2 indexes unique temporary points.
+//
+//  Discussion:
+//
+//    The input data includes an M x N1 array A1 and an M x N2 array A2,
+//    representing the M-dimensional coordinates of a set of N1
+//    "permanent" points and N2 "temporary" points.
+//
+//    For notation, we use "A" to describe the M x (N1+N2) array that would be
+//    formed by starting with A1 and appending A2.
+//
+//    The output is:
+//    * the number of tolerably unique points in the list;
+//    * the index, in the list of unique items, of the representatives
+//      of each point;
+//    * the index, in A, of the tolerably unique representatives.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    08 October 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, the number of rows.
+//
+//    Input, int N1, the number of permanent points.
+//
+//    Input, double A1[M*N1], the permanent points.
+//
+//    Input, int N2, the number of temporary points.
+//
+//    Input, double A2[M*N2], the temporary points.
+//
+//    Input, double TOL, a tolerance for equality.
+//
+//    Input, double Z[M], a random base vector used to
+//    linearly sort the data.
+//
+//    Input, double R1[N1], the scalar values assigned to
+//    A1 for sorting.
+//
+//    Input, int INDX1[N1], the ascending sort index for A1.
+//
+//    Input, bool UNIQUE1[N1], is TRUE for unique permanent points.
+//
+//    Input, int UNIQUE_NUM1, the number of tolerably unique permanent points.
+//
+//    Input, int UNDX1[UNIQUE_NUM1],
+//    the index in A1 of the tolerably unique permanent points.
+//
+//    Input, int XDNU1[N1], the index in UNDX1
+//    of the tolerably unique permanent point that "represents" this point.
+//
+//    Output, double R2[N2], the scalar values assigned to
+//    A2 for sorting.
+//
+//    Output, int INDX2[N2], the ascending sort index for A2.
+//
+//    Output, bool UNIQUE2[N2], is TRUE for unique temporary points.
+//
+//    Output, int *UNIQUE_NUM2, the number
+//    of tolerably unique temporary points.
+//
+//    Output, int UNDX2[UNIQUE_NUM2],
+//    the index in A2 of the tolerably unique points, incremented by N1.
+//
+//    Output, int XDNU2[N2], the index, in UNDX1
+//    or UNDX2, of the tolerably unique point that "represents" this
+//    temporary point.  If the value represents an index in UNDX2, this
+//    can be inferred by the fact that its value is greater than or
+//    equal to UNIQUE_NUM1.  To reference UNDX2, the value should then be
+//    decremented by UNIQUE_NUM1.
+//
+{
+  double dist;
+  int hi;
+  int i;
+  int j;
+  int j1;
+  int j2;
+  int j2_hi;
+  int j2_lo;
+  int k1;
+  int k2;
+  double r_hi;
+  double r_lo;
+//
+//  Initialize the temporary point data.
+//
+  for ( j2 = 0; j2 < n2; j2++ )
+  {
+    r2[j2] = 0.0;
+    for ( i = 0; i < m; i++ )
+    {
+      r2[j2] = r2[j2] + std::pow ( a2[i+j2*m] - z[i], 2 );
+    }
+    r2[j2] = std::sqrt ( r2[j2] );
+  }
+
+  webbur::r8vec_sort_heap_index_a ( n2, r2, indx2 );
+
+  for ( j2 = 0; j2 < n2; j2++ )
+  {
+    unique2[j2] = true;
+  }
+
+  *unique_num2 = 0;
+//
+//  STEP 2:
+//  Use PERMANENT points to eliminate TEMPORARY points.
+//
+  for ( j1 = 0; j1 < n1; j1++ )
+  {
+    if ( unique1[indx1[j1]] )
+    {
+      r_lo = r1[indx1[j1]] - tol;
+      r_hi = r1[indx1[j1]] + tol;
+
+      webbur::r8vec_index_sorted_range ( n2, r2, indx2, r_lo, r_hi,
+        &j2_lo, &j2_hi );
+
+      for ( j2 = j2_lo; j2 <= j2_hi; j2++ )
+      {
+        if ( unique2[indx2[j2]] )
+        {
+          dist = 0.0;
+          for ( i = 0; i < m; i++ )
+          {
+            dist = dist + std::pow ( a1[i+indx1[j1]*m]
+                                   - a2[i+indx2[j2]*m], 2 );
+          }
+          dist = std::sqrt ( dist );
+          if ( dist <= tol )
+          {
+            unique2[indx2[j2]] = false;
+            xdnu2[indx2[j2]] = xdnu1[indx1[j1]];
+          }
+        }
+      }
+    }
+  }
+//
+//  STEP 3:
+//  Use TEMPORARY points to eliminate TEMPORARY points.
+//
+  for ( j2 = 0; j2 < n2; j2++ )
+  {
+    if ( unique2[indx2[j2]] )
+    {
+      xdnu2[indx2[j2]] = unique_num1 + *unique_num2;
+      undx2[*unique_num2] = indx2[j2] + n1;
+      *unique_num2 = *unique_num2 + 1;
+
+      hi = j2;
+
+      while ( hi < n2 - 1 )
+      {
+        if ( r2[indx2[j2]] + tol < r2[indx2[hi+1]] )
+        {
+          break;
+        }
+        hi = hi + 1;
+      }
+
+      for ( k2 = j2 + 1; k2 <= hi; k2++ )
+      {
+        if ( unique2[indx2[k2]] )
+        {
+          dist = 0.0;
+          for ( i = 0; i < m; i++ )
+          {
+            dist = dist + std::pow ( a2[i+indx2[j2]*m] - a2[i+indx2[k2]*m], 2 );
+          }
+          dist = std::sqrt ( dist );
+
+          if ( dist <= tol )
+          {
+            unique2[indx2[k2]] = false;
+            xdnu2[indx2[k2]] = xdnu2[indx2[j2]];
+          }
+        }
+      }
+    }
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void point_radial_tol_unique_index_inc3 ( int m, int n1, double a1[],
+  double r1[], int indx1[], bool unique1[], int unique_num1, int undx1[],
+  int xdnu1[], int n2, double a2[], double r2[], int indx2[], bool unique2[],
+  int unique_num2, int undx2[], int xdnu2[], int *n3, double a3[], double r3[],
+  int indx3[], bool unique3[], int *unique_num3, int undx3[], int xdnu3[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    POINT_RADIAL_TOL_UNIQUE_INDEX_INC3 merges index data.
+//
+//  Discussion:
+//
+//    This function may be called after *INDEX_INC1 has created index
+//    information for the permanent data, and *INDEX_INC2 has created
+//    augmenting information for a set of temporary data which now is
+//    to be merged with the permanent data.
+//
+//    The function merges the data and index information to create a
+//    new "permanent" data set.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    08 October 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, the number of rows.
+//
+//    Input, int N1, the number of permanent points.
+//
+//    Input, double A1[M*N1], the permanent points.
+//
+//    Input, double R1[N1], the scalar values assigned to
+//    the data for sorting.
+//
+//    Input, int INDX1[N1], the ascending sort index
+//    for A1.
+//
+//    Input, bool UNIQUE1[N1], is TRUE for each unique permanent point.
+//
+//    Input, int UNIQUE_NUM1, the number
+//    of tolerably unique points with just the permanent points.
+//
+//    Input, int UNDX1[UNIQUE_NUM1],
+//    the index in A1 of the tolerably unique points.
+//
+//    Input, int XDNU1[N1], the index in UNDX1
+//    of the tolerably unique point that "represents" this point.
+//
+//    Input, int N2, the number of temporary points.
+//
+//    Input, double A2[M,N2], the temporary points.
+//
+//    Input, double R2[N2], the scalar values assigned to
+//    the data for sorting.
+//
+//    Input, int INDX2[N2], the ascending sort index
+//    for A2.
+//
+//    Input, bool UNIQUE2[N2], is TRUE for each unique temporary point.
+//
+//    Input, int UNIQUE_NUM2, the number
+//    of tolerably unique temporary points.
+//
+//    Input, int UNDX2[UNIQUE_NUM2],
+//    the index in A2 of the tolerably unique points, incremented by UNIQUE_NUM1.
+//
+//    Input, int XDNU2[N2], the index in UNDX1 or UNDX2
+//    of the tolerably unique point that "represents" this point.
+//
+//    Output, int *N3, the number of permanent points.
+//
+//    Output, double A3[M,N3], the permanent points.
+//
+//    Output, double R3[N3], the scalar values assigned to
+//    the data for sorting.
+//
+//    Output, int INDX3[N3], the ascending sort index
+//    for A3.
+//
+//    Output, bool UNIQUE3[N3], is TRUE for each unique permanent point.
+//
+//    Output, int *UNIQUE_NUM3, the number
+//    of tolerably unique points.
+//
+//    Output, int UNDX3[UNIQUE_NUM3],
+//    the index in A3 of the tolerably unique points.
+//
+//    Output, int XDNU3[N3], the index in UNDX3
+//    of the tolerably unique point that "represents" this point.
+//
+{
+  int i;
+  int i1;
+  int i2;
+  int i3;
+  double v1;
+  double v2;
+
+  *n3 = n1 + n2;
+
+  for ( i1 = 0; i1 < n1; i1++ )
+  {
+    for ( i = 0; i < m; i++ )
+    {
+      a3[i+i1*m] = a1[i+i1*m];
+    }
+  }
+  for ( i2 = 0; i2 < n2; i2++ )
+  {
+    i3 = n1 + i2;
+    for ( i = 0; i < m; i++ )
+    {
+      a3[i+i3*m] = a2[i+i2*m];
+    }
+  }
+  for ( i1 = 0; i1 < n1; i1++ )
+  {
+    r3[i1]= r1[i1];
+  }
+  for ( i2 = 0; i2 < n2; i2++ )
+  {
+    i3 = n1 + i2;
+    r3[i3] = r2[i2];
+  }
+//
+//  Interleave the two INDX arrays so that INDX3 presents the entries
+//  of A3 in ascending R3 order.
+//
+  i1 = 0;
+  i2 = 0;
+
+  for ( i3 = 0; i3 < *n3; i3++ )
+  {
+    if ( i1 < n1 )
+    {
+      v1 = r1[indx1[i1]];
+    }
+    else
+    {
+      v1 = r8_huge ( );
+    }
+
+    if ( i2 < n2 )
+    {
+      v2 = r2[indx2[i2]];
+    }
+    else
+    {
+      v2 = r8_huge ( );
+    }
+
+    if ( v1 <= v2 )
+    {
+      indx3[i3] = indx1[i1];
+      i1 = i1 + 1;
+    }
+    else
+    {
+      indx3[i3] = indx2[i2] + n1;
+      i2 = i2 + 1;
+    }
+  }
+
+  *unique_num3 = unique_num1 + unique_num2;
+
+  for ( i1 = 0; i1 < n1; i1++ )
+  {
+    unique3[i1] = unique1[i1];
+  }
+  for ( i2 = 0; i2 < n2; i2++ )
+  {
+    i3 = n1 + i2;
+    unique3[i3] = unique2[i2];
+  }
+//
+//  The entries in UNDX2 were already incremented by N2 if they pointed
+//  to an entry of A2, so all entries in UNDX2 correctly index A3.
+//
+  for ( i1 = 0; i1 < unique_num1; i1++ )
+  {
+    undx3[i1] = undx1[i1];
+  }
+  for ( i2 = 0; i2 < unique_num2; i2++ )
+  {
+    i3 = unique_num1 + i2;
+    undx3[i3] = undx2[i2];
+  }
+//
+//  Note that the entries of XDNU2 were already incremented by N2
+//  so that they correctly index A3, not A2.
+//
+  for ( i1 = 0; i1 < n1; i1++ )
+  {
+    xdnu3[i1] = xdnu1[i1];
+  }
+  for ( i2 = 0; i2 < n2; i2++ )
+  {
+    i3 = n1 + i2;
+    xdnu3[i3] = xdnu2[i2];
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void point_unique_index ( int m, int n, double a[], int unique_num, int undx[],
+  int xdnu[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    POINT_UNIQUE_INDEX indexes unique points.
+//
+//  Discussion:
+//
+//    An R8COL is an M by N array of R8's, regarded as an array of N columns,
+//    each of length M.
+//
+//    The goal of this routine is to determine a vector UNDX,
+//    which points to the unique elements of A, in sorted order,
+//    and a vector XDNU, which identifies, for each entry of A, the index of
+//    the unique sorted element of A.
+//
+//    This is all done with index vectors, so that the elements of
+//    A are never moved.
+//
+//    The first step of the algorithm requires the indexed sorting
+//    of A, which creates arrays INDX and XDNI.  (If all the entries
+//    of A are unique, then these arrays are the same as UNDX and XDNU.)
+//
+//    We then use INDX to examine the entries of A in sorted order,
+//    noting the unique entries, creating the entries of XDNU and
+//    UNDX as we go.
+//
+//    Once this process has been completed, the vector A could be
+//    replaced by a compressed vector XU, containing the unique entries
+//    of A in sorted order, using the formula
+//
+//      XU(*) = A(UNDX(*)).
+//
+//    We could then, if we wished, reconstruct the entire vector A, or
+//    any element of it, by index, as follows:
+//
+//      A(I) = XU(XDNU(I)).
+//
+//    We could then replace A by the combination of XU and XDNU.
+//
+//    Later, when we need the I-th entry of A, we can locate it as
+//    the XDNU(I)-th entry of XU.
+//
+//    Here is an example of a vector A, the sort and inverse sort
+//    index vectors, and the unique sort and inverse unique sort vectors
+//    and the compressed unique sorted vector.
+//
+//      I     A  Indx  Xdni       XU  Undx  Xdnu
+//    ----+-----+-----+-----+--------+-----+-----+
+//      0 | 11.     0     0 |    11.     0     0
+//      1 | 22.     2     4 |    22.     1     1
+//      2 | 11.     5     1 |    33.     3     0
+//      3 | 33.     8     7 |    55.     4     2
+//      4 | 55.     1     8 |                  3
+//      5 | 11.     6     2 |                  0
+//      6 | 22.     7     5 |                  1
+//      7 | 22.     3     6 |                  1
+//      8 | 11.     4     3 |                  0
+//
+//    INDX(2) = 3 means that sorted item(2) is A(3).
+//    XDNI(2) = 5 means that A(2) is sorted item(5).
+//
+//    UNDX(3) = 4 means that unique sorted item(3) is at A(4).
+//    XDNU(8) = 2 means that A(8) is at unique sorted item(2).
+//
+//    XU(XDNU(I))) = A(I).
+//    XU(I)        = A(UNDX(I)).
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    19 July 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, the dimension of the data values.
+//
+//    Input, int N, the number of data values,
+//
+//    Input, double A[M*N], the data values.
+//
+//    Input, int UNIQUE_NUM, the number of unique values in A.
+//    This value is only required for languages in which the size of
+//    UNDX must be known in advance.
+//
+//    Output, int UNDX[UNIQUE_NUM], the UNDX vector.
+//
+//    Output, int XDNU[N], the XDNU vector.
+//
+{
+  double diff;
+  int i;
+  int *indx;
+  int j;
+  int k;
+//
+//  Implicitly sort the array.
+//
+  indx = webbur::r8col_sort_heap_index_a ( m, n, a );
+//
+//  Walk through the implicitly sorted array.
+//
+  i = 0;
+
+  j = 0;
+  undx[j] = indx[i];
+
+  xdnu[indx[i]] = j;
+
+  for ( i = 1; i < n; i++ )
+  {
+    diff = 0.0;
+    for ( k = 0; k < m; k++ )
+    {
+      diff = webbur::r8_max ( diff,
+        webbur::r8_abs ( a[k+indx[i]*m] - a[k+undx[j]*m] ) );
+    }
+    if ( 0.0 < diff )
+    {
+      j = j + 1;
+      undx[j] = indx[i];
+    }
+    xdnu[indx[i]] = j;
+  }
+  delete [] indx;
+
+  return;
+}
+//****************************************************************************80
+
+void product_mixed_weight ( int dim_num, int order_1d[], int order_nd,
+  int rule[], double alpha[], double beta[], double weight_nd[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    PRODUCT_MIXED_WEIGHT computes the weights of a mixed product rule.
+//
+//  Discussion:
+//
+//    This routine computes the weights for a quadrature rule which is
+//    a product of 1D rules of varying order and kind.
+//
+//    The user must preallocate space for the output array WEIGHT_ND.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    11 February 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int DIM_NUM, the spatial dimension.
+//
+//    Input, int ORDER_1D[DIM_NUM], the order of the 1D rules.
+//
+//    Input, int ORDER_ND, the order of the product rule.
+//
+//    Input, int RULE[DIM_NUM], the rule in each dimension.
+//     1, "CC",  Clenshaw Curtis, Closed Fully Nested rule.
+//     2, "F2",  Fejer Type 2, Open Fully Nested rule.
+//     3, "GP",  Gauss Patterson, Open Fully Nested rule.
+//     4, "GL",  Gauss Legendre, Open Weakly Nested rule.
+//     5, "GH",  Gauss Hermite, Open Weakly Nested rule.
+//     6, "GGH", Generalized Gauss Hermite, Open Weakly Nested rule.
+//     7, "LG",  Gauss Laguerre, Open Non Nested rule.
+//     8, "GLG", Generalized Gauss Laguerre, Open Non Nested rule.
+//     9, "GJ",  Gauss Jacobi, Open Non Nested rule.
+//    10, "GW",  Golub Welsch, (presumed) Open Non Nested rule.
+//    11, "CC_SE", Clenshaw Curtis Slow Exponential, Closed Fully Nested rule.
+//    12, "F2_SE", Fejer Type 2 Slow Exponential, Open Fully Nested rule.
+//    13, "GP_SE", Gauss Patterson Slow Exponential, Open Fully Nested rule.
+//    14, "CC_ME", Clenshaw Curtis Moderate Exponential, Closed Fully Nested rule.
+//    15, "F2_ME", Fejer Type 2 Moderate Exponential, Open Fully Nested rule.
+//    16, "GP_ME", Gauss Patterson Moderate Exponential, Open Fully Nested rule.
+//    17, "CCN", Clenshaw Curtis Nested, Linear, Closed Fully Nested rule.
+//
+//    Input, double ALPHA[DIM_NUM], BETA[DIM_NUM], parameters used for
+//    Generalized Gauss Hermite, Generalized Gauss Laguerre,
+//    and Gauss Jacobi rules.
+//
+//    Output, double WEIGHT_ND[ORDER_ND], the product rule weights.
+//
+{
+  int dim;
+  int i;
+  double *weight_1d;
+
+  for ( i = 0; i < order_nd; i++ )
+  {
+    weight_nd[i] = 1.0;
+  }
+
+  for ( dim = 0; dim < dim_num; dim++ )
+  {
+    weight_1d = new double[order_1d[dim]];
+
+    if ( rule[dim] == 1 )
+    {
+      webbur::clenshaw_curtis_compute_weights ( order_1d[dim], weight_1d );
+    }
+    else if ( rule[dim] == 2 )
+    {
+      webbur::fejer2_compute_weights ( order_1d[dim], weight_1d );
+    }
+    else if ( rule[dim] == 3 )
+    {
+      webbur::patterson_lookup_weights ( order_1d[dim], weight_1d );
+    }
+    else if ( rule[dim] == 4 )
+    {
+      webbur::legendre_compute_weights ( order_1d[dim], weight_1d );
+    }
+    else if ( rule[dim] == 5 )
+    {
+      webbur::hermite_compute_weights ( order_1d[dim], weight_1d );
+    }
+    else if ( rule[dim] == 6 )
+    {
+      webbur::gen_hermite_compute_weights ( order_1d[dim], alpha[dim], weight_1d );
+    }
+    else if ( rule[dim] == 7 )
+    {
+      webbur::laguerre_compute_weights ( order_1d[dim], weight_1d );
+    }
+    else if ( rule[dim] == 8 )
+    {
+      webbur::gen_laguerre_compute_weights ( order_1d[dim], alpha[dim], weight_1d );
+    }
+    else if ( rule[dim] == 9 )
+    {
+      webbur::jacobi_compute_weights ( order_1d[dim], alpha[dim], beta[dim], weight_1d );
+    }
+    else if ( rule[dim] == 10 )
+    {
+      std::cerr << "\n";
+      std::cerr << "PRODUCT_MIXED_WEIGHT - Fatal error!\n";
+      std::cerr << "  Do not know how to set weights for rule 10.\n";
+      std::exit ( 1 );
+    }
+    else if ( rule[dim] == 11 )
+    {
+      webbur::clenshaw_curtis_compute_weights ( order_1d[dim], weight_1d );
+    }
+    else if ( rule[dim] == 12 )
+    {
+      webbur::fejer2_compute_weights ( order_1d[dim], weight_1d );
+    }
+    else if ( rule[dim] == 13 )
+    {
+      webbur::patterson_lookup_weights ( order_1d[dim], weight_1d );
+    }
+    else if ( rule[dim] == 14 )
+    {
+      webbur::clenshaw_curtis_compute_weights ( order_1d[dim], weight_1d );
+    }
+    else if ( rule[dim] == 15 )
+    {
+      webbur::fejer2_compute_weights ( order_1d[dim], weight_1d );
+    }
+    else if ( rule[dim] == 16 )
+    {
+      webbur::patterson_lookup_weights ( order_1d[dim], weight_1d );
+    }
+    else if ( rule[dim] == 17 )
+    {
+      webbur::ccn_compute_weights ( order_1d[dim], weight_1d );
+    }
+    else
+    {
+      std::cerr << "\n";
+      std::cerr << "PRODUCT_MIXED_WEIGHT - Fatal error!\n";
+      std::cerr << "  Unexpected value of RULE[" << dim << "] = "
+           << rule[dim] << ".\n";
+      std::exit ( 1 );
+    }
+
+    webbur::r8vec_direct_product2 ( dim, order_1d[dim], weight_1d,
+      dim_num, order_nd, weight_nd );
+
+    delete [] weight_1d;
+  }
+  return;
+}
+//****************************************************************************80
+
+double r8_abs ( double x )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8_ABS returns the absolute value of an R8.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    18 February 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, double X, the quantity whose absolute value is desired.
+//
+//    Output, double R8_ABS, the absolute value of X.
+//
+{
+  double value;
+
+  if ( 0.0 <= x )
+  {
+    value = x;
+  }
+  else
+  {
+    value = -x;
+  }
+  return value;
+}
+//****************************************************************************80
+
+double r8_ceiling ( double x )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8_CEILING rounds an R8 "up" (towards +oo) to the next integer.
+//
+//  Example:
+//
+//    X        R8_CEILING(X)
+//
+//   -1.1      -1.0
+//   -1.0      -1.0
+//   -0.9       0.0
+//   -0.1       0.0
+//    0.0       0.0
+//    0.1       1.0
+//    0.9       1.0
+//    1.0       1.0
+//    1.1       2.0
+//    2.9       3.0
+//    3.0       3.0
+//    3.14159   4.0
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    01 April 2004
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, double X, the number whose ceiling is desired.
+//
+//    Output, double R8_CEILING, the ceiling of X.
+//
+{
+  double value;
+
+  value = ( int ) x;
+
+  if ( value < x )
+  {
+    value = value + 1.0;
+  }
+
+  return value;
+}
+//****************************************************************************80
+
+double r8_choose ( int n, int k )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8_CHOOSE computes the binomial coefficient C(N,K) as an R8.
+//
+//  Discussion:
+//
+//    The value is calculated in such a way as to avoid overflow and
+//    roundoff.  The calculation is done in R8 arithmetic.
+//
+//    The formula used is:
+//
+//      C(N,K) = N! / ( K! * (N-K)! )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    24 March 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    ML Wolfson, HV Wright,
+//    Algorithm 160:
+//    Combinatorial of M Things Taken N at a Time,
+//    Communications of the ACM,
+//    Volume 6, Number 4, April 1963, page 161.
+//
+//  Parameters:
+//
+//    Input, int N, K, the values of N and K.
+//
+//    Output, double R8_CHOOSE, the number of combinations of N
+//    things taken K at a time.
+//
+{
+  int i;
+  int mn;
+  int mx;
+  int value;
+
+  mn = webbur::i4_min ( k, n - k );
+
+  if ( mn < 0 )
+  {
+    value = 0.0;
+  }
+  else if ( mn == 0 )
+  {
+    value = 1.0;
+  }
+  else
+  {
+    mx = webbur::i4_max ( k, n - k );
+    value = ( double ) ( mx + 1 );
+
+    for ( i = 2; i <= mn; i++ )
+    {
+      value = ( value * ( double ) ( mx + i ) ) / ( double ) i;
+    }
+  }
+  return value;
+}
+//****************************************************************************80
+
+double r8_epsilon ( )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8_EPSILON returns the R8 roundoff unit.
+//
+//  Discussion:
+//
+//    The roundoff unit is a number R which is a power of 2 with the
+//    property that, to the precision of the computer's arithmetic,
+//      1 < 1 + R
+//    but
+//      1 = ( 1 + R / 2 )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    18 February 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Output, double R8_EPSILON, the R8 round-off unit.
+//
+{
+  double value;
+
+  value = 1.0;
+
+  while ( 1.0 < ( double ) ( 1.0 + value )  )
+  {
+    value = value / 2.0;
+  }
+
+  value = 2.0 * value;
+
+  return value;
+}
+//****************************************************************************80
+
+double r8_factorial ( int n )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8_FACTORIAL computes the factorial of N.
+//
+//  Discussion:
+//
+//    factorial ( N ) = product ( 1 <= I <= N ) I
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    16 January 1999
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the argument of the factorial function.
+//    If N is less than 1, the function value is returned as 1.
+//
+//    Output, double R8_FACTORIAL, the factorial function.
+//
+{
+  int i;
+  double value;
+
+  value = 1.0;
+
+  for ( i = 1; i <= n; i++ )
+  {
+    value = value * ( double ) ( i );
+  }
+
+  return value;
+}
+//****************************************************************************80
+
+double r8_factorial2 ( int n )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8_FACTORIAL2 computes the double factorial function.
+//
+//  Discussion:
+//
+//    FACTORIAL2( N ) = Product ( N * (N-2) * (N-4) * ... * 2 )  (N even)
+//                    = Product ( N * (N-2) * (N-4) * ... * 1 )  (N odd)
+//
+//  Example:
+//
+//     N    FACTORIAL2(N)
+//
+//     0     1
+//     1     1
+//     2     2
+//     3     3
+//     4     8
+//     5    15
+//     6    48
+//     7   105
+//     8   384
+//     9   945
+//    10  3840
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 January 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the argument of the double factorial
+//    function.  If N is less than 1, R8_FACTORIAL2 is returned as 1.0.
+//
+//    Output, double R8_FACTORIAL2, the double factorial function.
+//
+{
+  int n_copy;
+  double value;
+
+  value = 1.0;
+
+  if ( n < 1 )
+  {
+    return value;
+  }
+
+  n_copy = n;
+
+  while ( 1 < n_copy )
+  {
+    value = value * ( double ) n_copy;
+    n_copy = n_copy - 2;
+  }
+
+  return value;
+}
+//****************************************************************************80
+
+double r8_floor ( double x )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8_FLOOR rounds an R8 "down" (towards -infinity) to the next integer.
+//
+//  Example:
+//
+//    X        R8_FLOOR(X)
+//
+//   -1.1      -2.0
+//   -1.0      -1.0
+//   -0.9      -1.0
+//   -0.1      -1.0
+//    0.0       0.0
+//    0.1       0.0
+//    0.9       0.0
+//    1.0       1.0
+//    1.1       1.0
+//    2.9       2.0
+//    3.0       3.0
+//    3.14159   3.0
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    15 April 2007
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, double X, the number whose floor is desired.
+//
+//    Output, double R8_FLOOR, the floor of X.
+//
+{
+  double value;
+
+  value = ( int ) x;
+
+  if ( x < value )
+  {
+    value = value - 1.0;
+  }
+
+  return value;
+}
+//****************************************************************************80
+
+double r8_gamma ( double x )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8_GAMMA evaluates Gamma(X) for a real argument.
+//
+//  Discussion:
+//
+//    This routine calculates the gamma function for a real argument X.
+//
+//    Computation is based on an algorithm outlined in reference 1.
+//    The program uses rational functions that approximate the gamma
+//    function to at least 20 significant decimal digits.  Coefficients
+//    for the approximation over the interval (1,2) are unpublished.
+//    Those for the approximation for 12 <= X are from reference 2.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    18 January 2008
+//
+//  Author:
+//
+//    Original FORTRAN77 version by William Cody, Laura Stoltz.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    William Cody,
+//    An Overview of Software Development for Special Functions,
+//    in Numerical Analysis Dundee, 1975,
+//    edited by GA Watson,
+//    Lecture Notes in Mathematics 506,
+//    Springer, 1976.
+//
+//    John Hart, Ward Cheney, Charles Lawson, Hans Maehly,
+//    Charles Mesztenyi, John Rice, Henry Thatcher,
+//    Christoph Witzgall,
+//    Computer Approximations,
+//    Wiley, 1968,
+//    LC: QA297.C64.
+//
+//  Parameters:
+//
+//    Input, double X, the argument of the function.
+//
+//    Output, double R8_GAMMA, the value of the function.
+//
+{
+//
+//  Coefficients for minimax approximation over (12, INF).
+//
+  double c[7] = {
+   -1.910444077728E-03,
+    8.4171387781295E-04,
+   -5.952379913043012E-04,
+    7.93650793500350248E-04,
+   -2.777777777777681622553E-03,
+    8.333333333333333331554247E-02,
+    5.7083835261E-03 };
+  double eps = 2.22E-16;
+  double fact;
+  int i;
+  int n;
+  double one = 1.0;
+  double p[8] = {
+  -1.71618513886549492533811E+00,
+   2.47656508055759199108314E+01,
+  -3.79804256470945635097577E+02,
+   6.29331155312818442661052E+02,
+   8.66966202790413211295064E+02,
+  -3.14512729688483675254357E+04,
+  -3.61444134186911729807069E+04,
+   6.64561438202405440627855E+04 };
+  bool parity;
+  double pi = 3.1415926535897932384626434;
+  double q[8] = {
+  -3.08402300119738975254353E+01,
+   3.15350626979604161529144E+02,
+  -1.01515636749021914166146E+03,
+  -3.10777167157231109440444E+03,
+   2.25381184209801510330112E+04,
+   4.75584627752788110767815E+03,
+  -1.34659959864969306392456E+05,
+  -1.15132259675553483497211E+05 };
+  double res;
+  double sqrtpi = 0.9189385332046727417803297;
+  double sum;
+  double twelve = 12.0;
+  double two = 2.0;
+  double value;
+  double xbig = 171.624;
+  double xden;
+  double xinf = 1.79E+308;
+  double xminin = 2.23E-308;
+  double xnum;
+  double y;
+  double y1;
+  double ysq;
+  double z;
+
+  parity = false;
+  fact = one;
+  n = 0;
+  y = x;
+//
+//  Argument is negative.
+//
+  if ( y <= 0.0 )
+  {
+    y = - x;
+    y1 = ( double ) ( int ) ( y );
+    res = y - y1;
+
+    if ( res != 0.0 )
+    {
+      if ( y1 != ( double ) ( int ) ( y1 * 0.5 ) * two )
+      {
+        parity = true;
+      }
+
+      fact = - pi / std::sin ( pi * res );
+      y = y + one;
+    }
+    else
+    {
+      res = xinf;
+      value = res;
+      return value;
+    }
+  }
+//
+//  Argument is positive.
+//
+  if ( y < eps )
+  {
+//
+//  Argument < EPS.
+//
+    if ( xminin <= y )
+    {
+      res = one / y;
+    }
+    else
+    {
+      res = xinf;
+      value = res;
+      return value;
+    }
+  }
+  else if ( y < twelve )
+  {
+    y1 = y;
+//
+//  0.0 < argument < 1.0.
+//
+    if ( y < one )
+    {
+      z = y;
+      y = y + one;
+    }
+//
+//  1.0 < argument < 12.0.
+//  Reduce argument if necessary.
+//
+    else
+    {
+      n = ( int ) ( y ) - 1;
+      y = y - ( double ) ( n );
+      z = y - one;
+    }
+//
+//  Evaluate approximation for 1.0 < argument < 2.0.
+//
+    xnum = 0.0;
+    xden = one;
+    for ( i = 0; i < 8; i++ )
+    {
+      xnum = ( xnum + p[i] ) * z;
+      xden = xden * z + q[i];
+    }
+    res = xnum / xden + one;
+//
+//  Adjust result for case  0.0 < argument < 1.0.
+//
+    if ( y1 < y )
+    {
+      res = res / y1;
+    }
+//
+//  Adjust result for case 2.0 < argument < 12.0.
+//
+    else if ( y < y1 )
+    {
+      for ( i = 1; i <= n; i++ )
+      {
+        res = res * y;
+        y = y + one;
+      }
+    }
+  }
+  else
+  {
+//
+//  Evaluate for 12.0 <= argument.
+//
+    if ( y <= xbig )
+    {
+      ysq = y * y;
+      sum = c[6];
+      for ( i = 0; i < 6; i++ )
+      {
+        sum = sum / ysq + c[i];
+      }
+      sum = sum / y - y + sqrtpi;
+      sum = sum + ( y - 0.5 ) * std::log ( y );
+      res = std::exp ( sum );
+    }
+    else
+    {
+      res = xinf;
+      value = res;
+      return value;
+    }
+  }
+//
+//  Final adjustments and return.
+//
+  if ( parity )
+  {
+    res = - res;
+  }
+
+  if ( fact != one )
+  {
+    res = fact / res;
+  }
+
+  value = res;
+
+  return value;
+}
+//****************************************************************************80
+
+double r8_huge ( )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8_HUGE returns a "huge" R8.
+//
+//  Discussion:
+//
+//    The value returned by this function is NOT required to be the
+//    maximum representable R8.  This value varies from machine to machine,
+//    from compiler to compiler, and may cause problems when being printed.
+//    We simply want a "very large" but non-infinite number.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    06 October 2007
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Output, double R8_HUGE, a "huge" R8 value.
+//
+{
+  double value;
+
+  value = 1.0E+30;
+
+  return value;
+}
+//****************************************************************************80
+
+double r8_hyper_2f1 ( double a, double b, double c, double x )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8_HYPER_2F1 evaluates the hypergeometric function 2F1(A,B,C,X).
+//
+//  Discussion:
+//
+//    A bug was corrected.  A line which read
+//      c1 = - ( - 1.0, m ) * gc / ( gam * gbm * rm );
+//    was corrected to read
+//      c1 = - std::pow ( - 1.0, m ) * gc / ( gam * gbm * rm );
+//    JVB, 05 July 2009.
+//
+//    A minor bug was corrected.  The HW variable, used in several places as
+//    the "old" value of a quantity being iteratively improved, was not
+//    being initialized.  JVB, 11 February 2008.
+//
+//    The FORTRAN77 original version of this routine is copyrighted by
+//    Shanjie Zhang and Jianming Jin.  However, they give permission to
+//    incorporate this routine into a user program provided that the copyright
+//    is acknowledged.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    05 July 2009
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Shanjie Zhang, Jianming Jin.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    Shanjie Zhang, Jianming Jin,
+//    Computation of Special Functions,
+//    Wiley, 1996,
+//    ISBN: 0-471-11963-6,
+//    LC: QA351.C45
+//
+//  Parameters:
+//
+//    Input, double A, B, C, X, the arguments of the function.
+//    C must not be equal to a nonpositive integer.
+//    X < 1.
+//
+//    Output, double R8_HYPER_2F1, the value of the function.
+//
+{
+  double a0;
+  double aa;
+  double bb;
+  double c0;
+  double c1;
+  double el = 0.5772156649015329;
+  double eps;
+  double f0;
+  double f1;
+  double g0;
+  double g1;
+  double g2;
+  double g3;
+  double ga;
+  double gabc;
+  double gam;
+  double gb;
+  double gbm;
+  double gc;
+  double gca;
+  double gcab;
+  double gcb;
+  double gm;
+  double hf;
+  double hw;
+  int j;
+  int k;
+  bool l0;
+  bool l1;
+  bool l2;
+  bool l3;
+  bool l4;
+  bool l5;
+  int m;
+  int nm;
+  double pa;
+  double pb;
+  double pi = 3.141592653589793;
+  double r;
+  double r0;
+  double r1;
+  double rm;
+  double rp;
+  double sm;
+  double sp;
+  double sp0;
+  double x1;
+
+  l0 = ( c == ( int ) ( c ) ) && ( c < 0.0 );
+  l1 = ( 1.0 - x < 1.0E-15 ) && ( c - a - b <= 0.0 );
+  l2 = ( a == ( int ) ( a ) ) && ( a < 0.0 );
+  l3 = ( b == ( int ) ( b ) ) && ( b < 0.0 );
+  l4 = ( c - a == ( int ) ( c - a ) ) && ( c - a <= 0.0 );
+  l5 = ( c - b == ( int ) ( c - b ) ) && ( c - b <= 0.0 );
+
+  if ( l0 )
+  {
+    std::cerr << "\n";
+    std::cerr << "R8_HYPER_2F1 - Fatal error!\n";
+    std::cerr << "  The hypergeometric series is divergent.\n";
+    std::cerr << "  C is integral and negative.\n";
+    std::cerr << "  C = " << c << "\n";
+    std::exit ( 1 );
+  }
+
+  if ( l1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "R8_HYPER_2F1 - Fatal error!\n";
+    std::cerr << "  The hypergeometric series is divergent.\n";
+    std::cerr << "  1 - X < 0, C - A - B <= 0\n";
+    std::cerr << "  A = " << a << "\n";
+    std::cerr << "  B = " << b << "\n";
+    std::cerr << "  C = " << c << "\n";
+    std::cerr << "  X = " << x << "\n";
+    std::exit ( 1 );
+  }
+
+  if ( 0.95 < x )
+  {
+    eps = 1.0E-08;
+  }
+  else
+  {
+    eps = 1.0E-15;
+  }
+
+  if ( x == 0.0 || a == 0.0 || b == 0.0 )
+  {
+    hf = 1.0;
+    return hf;
+  }
+  else if ( 1.0 - x == eps && 0.0 < c - a - b )
+  {
+    gc = webbur::r8_gamma ( c );
+    gcab = webbur::r8_gamma ( c - a - b );
+    gca = webbur::r8_gamma ( c - a );
+    gcb = webbur::r8_gamma ( c - b );
+    hf = gc * gcab / ( gca * gcb );
+    return hf;
+  }
+  else if ( 1.0 + x <= eps && r8_abs ( c - a + b - 1.0 ) <= eps )
+  {
+    g0 = std::sqrt ( pi ) * std::pow ( 2.0, - a );
+    g1 = webbur::r8_gamma ( c );
+    g2 = webbur::r8_gamma ( 1.0 + a / 2.0 - b );
+    g3 = webbur::r8_gamma ( 0.5 + 0.5 * a );
+    hf = g0 * g1 / ( g2 * g3 );
+    return hf;
+  }
+  else if ( l2 || l3 )
+  {
+    if ( l2 )
+    {
+      nm = ( int ) ( webbur::r8_abs ( a ) );
+    }
+
+    if ( l3 )
+    {
+      nm = ( int ) ( webbur::r8_abs ( b ) );
+    }
+
+    hf = 1.0;
+    r = 1.0;
+
+    for ( k = 1; k <= nm; k++ )
+    {
+      r = r * ( a + k - 1.0 ) * ( b + k - 1.0 )
+        / ( k * ( c + k - 1.0 ) ) * x;
+      hf = hf + r;
+    }
+
+    return hf;
+  }
+  else if ( l4 || l5 )
+  {
+    if ( l4 )
+    {
+      nm = ( int ) ( webbur::r8_abs ( c - a ) );
+    }
+
+    if ( l5 )
+    {
+      nm = ( int ) ( webbur::r8_abs ( c - b ) );
+    }
+
+    hf = 1.0;
+    r  = 1.0;
+    for ( k = 1; k <= nm; k++ )
+    {
+      r = r * ( c - a + k - 1.0 ) * ( c - b + k - 1.0 )
+        / ( k * ( c + k - 1.0 ) ) * x;
+      hf = hf + r;
+    }
+    hf = std::pow ( 1.0 - x, c - a - b ) * hf;
+    return hf;
+  }
+
+  aa = a;
+  bb = b;
+  x1 = x;
+
+  if ( x < 0.0 )
+  {
+    x = x / ( x - 1.0 );
+    if ( a < c && b < a && 0.0 < b )
+    {
+      a = bb;
+      b = aa;
+    }
+    b = c - b;
+  }
+
+  if ( 0.75 <= x )
+  {
+    gm = 0.0;
+
+    if ( webbur::r8_abs ( c - a - b - ( int ) ( c - a - b ) ) < 1.0E-15 )
+    {
+      m = ( int ) ( c - a - b );
+      ga = webbur::r8_gamma ( a );
+      gb = webbur::r8_gamma ( b );
+      gc = webbur::r8_gamma ( c );
+      gam = webbur::r8_gamma ( a + m );
+      gbm = webbur::r8_gamma ( b + m );
+
+      pa = webbur::r8_psi ( a );
+      pb = webbur::r8_psi ( b );
+
+      if ( m != 0 )
+      {
+        gm = 1.0;
+      }
+
+      for ( j = 1; j <= std::abs ( m ) - 1; j++ )
+      {
+        gm = gm * j;
+      }
+
+      rm = 1.0;
+      for ( j = 1; j <= std::abs ( m ); j++ )
+      {
+        rm = rm * j;
+      }
+
+      f0 = 1.0;
+      r0 = 1.0;;
+      r1 = 1.0;
+      sp0 = 0.0;;
+      sp = 0.0;
+
+      if ( 0 <= m )
+      {
+        c0 = gm * gc / ( gam * gbm );
+        c1 = - gc * std::pow ( x - 1.0, m ) / ( ga * gb * rm );
+
+        for ( k = 1; k <= m - 1; k++ )
+        {
+          r0 = r0 * ( a + k - 1.0 ) * ( b + k - 1.0 )
+            / ( k * ( k - m ) ) * ( 1.0 - x );
+          f0 = f0 + r0;
+        }
+
+        for ( k = 1; k <= m; k++ )
+        {
+          sp0 = sp0 + 1.0 / ( a + k - 1.0 ) + 1.0 / ( b + k - 1.0 )
+          - 1.0 / ( double ) ( k );
+        }
+
+        f1 = pa + pb + sp0 + 2.0 * el + std::log ( 1.0 - x );
+        hw = f1;
+
+        for ( k = 1; k <= 250; k++ )
+        {
+          sp = sp + ( 1.0 - a ) / ( k * ( a + k - 1.0 ) )
+            + ( 1.0 - b ) / ( k * ( b + k - 1.0 ) );
+
+          sm = 0.0;
+          for ( j = 1; j <= m; j++ )
+          {
+            sm = sm + ( 1.0 - a )
+              / ( ( j + k ) * ( a + j + k - 1.0 ) )
+              + 1.0 / ( b + j + k - 1.0 );
+          }
+
+          rp = pa + pb + 2.0 * el + sp + sm + std::log ( 1.0 - x );
+
+          r1 = r1 * ( a + m + k - 1.0 ) * ( b + m + k - 1.0 )
+            / ( k * ( m + k ) ) * ( 1.0 - x );
+
+          f1 = f1 + r1 * rp;
+
+          if ( r8_abs ( f1 - hw ) < r8_abs ( f1 ) * eps )
+          {
+            break;
+          }
+          hw = f1;
+        }
+        hf = f0 * c0 + f1 * c1;
+      }
+      else if ( m < 0 )
+      {
+        m = - m;
+        c0 = gm * gc / ( ga * gb * std::pow ( 1.0 - x, m ) );
+        c1 = - std::pow ( - 1.0, m ) * gc / ( gam * gbm * rm );
+
+        for ( k = 1; k <= m - 1; k++ )
+        {
+          r0 = r0 * ( a - m + k - 1.0 ) * ( b - m + k - 1.0 )
+            / ( k * ( k - m ) ) * ( 1.0 - x );
+          f0 = f0 + r0;
+        }
+
+        for ( k = 1; k <= m; k++ )
+        {
+          sp0 = sp0 + 1.0 / ( double ) ( k );
+        }
+
+        f1 = pa + pb - sp0 + 2.0 * el + std::log ( 1.0 - x );
+        hw = f1;
+
+        for ( k = 1; k <= 250; k++ )
+        {
+          sp = sp + ( 1.0 - a )
+            / ( k * ( a + k - 1.0 ) )
+            + ( 1.0 - b ) / ( k * ( b + k - 1.0 ) );
+
+          sm = 0.0;
+          for ( j = 1; j <= m; j++ )
+          {
+            sm = sm + 1.0 / ( double ) ( j + k );
+          }
+
+          rp = pa + pb + 2.0 * el + sp - sm + std::log ( 1.0 - x );
+
+          r1 = r1 * ( a + k - 1.0 ) * ( b + k - 1.0 )
+            / ( k * ( m + k ) ) * ( 1.0 - x );
+
+          f1 = f1 + r1 * rp;
+
+          if ( webbur::r8_abs ( f1 - hw ) < webbur::r8_abs ( f1 ) * eps )
+          {
+            break;
+          }
+
+          hw = f1;
+        }
+
+        hf = f0 * c0 + f1 * c1;
+      }
+    }
+    else
+    {
+      ga = webbur::r8_gamma ( a );
+      gb = webbur::r8_gamma ( b );
+      gc = webbur::r8_gamma ( c );
+      gca = webbur::r8_gamma ( c - a );
+      gcb = webbur::r8_gamma ( c - b );
+      gcab = webbur::r8_gamma ( c - a - b );
+      gabc = webbur::r8_gamma ( a + b - c );
+      c0 = gc * gcab / ( gca * gcb );
+      c1 = gc * gabc / ( ga * gb ) * std::pow ( 1.0 - x, c - a - b );
+      hf = 0.0;
+      hw = hf;
+      r0 = c0;
+      r1 = c1;
+
+      for ( k = 1; k <= 250; k++ )
+      {
+        r0 = r0 * ( a + k - 1.0 ) * ( b + k - 1.0 )
+          / ( k * ( a + b - c + k ) ) * ( 1.0 - x );
+
+        r1 = r1 * ( c - a + k - 1.0 ) * ( c - b + k - 1.0 )
+          / ( k * ( c - a - b + k ) ) * ( 1.0 - x );
+
+        hf = hf + r0 + r1;
+
+        if ( webbur::r8_abs ( hf - hw ) < webbur::r8_abs ( hf ) * eps )
+        {
+          break;
+        }
+        hw = hf;
+      }
+      hf = hf + c0 + c1;
+    }
+  }
+  else
+  {
+    a0 = 1.0;
+
+    if ( a < c && c < 2.0 * a && b < c && c < 2.0 * b )
+    {
+      a0 = std::pow ( 1.0 - x, c - a - b );
+      a = c - a;
+      b = c - b;
+    }
+
+    hf = 1.0;
+    hw = hf;
+    r = 1.0;
+
+    for ( k = 1; k <= 250; k++ )
+    {
+      r = r * ( a + k - 1.0 ) * ( b + k - 1.0 )
+        / ( k * ( c + k - 1.0 ) ) * x;
+
+      hf = hf + r;
+
+      if ( webbur::r8_abs ( hf - hw ) <= webbur::r8_abs ( hf ) * eps )
+      {
+        break;
+      }
+
+      hw = hf;
+    }
+    hf = a0 * hf;
+  }
+
+  if ( x1 < 0.0 )
+  {
+    x = x1;
+    c0 = 1.0 / std::pow ( 1.0 - x, aa );
+    hf = c0 * hf;
+  }
+
+  a = aa;
+  b = bb;
+
+  if ( 120 < k )
+  {
+    std::cerr << "\n";
+    std::cerr << "R8_HYPER_2F1 - Warning!\n";
+    std::cerr << "  A large number of iterations were needed.\n";
+    std::cerr << "  The accuracy of the results should be checked.\n";
+  }
+
+  return hf;
+}
+//****************************************************************************80
+
+double r8_max ( double x, double y )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8_MAX returns the maximum of two R8's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    18 August 2004
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, double X, Y, the quantities to compare.
+//
+//    Output, double R8_MAX, the maximum of X and Y.
+//
+{
+  double value;
+
+  if ( y < x )
+  {
+    value = x;
+  }
+  else
+  {
+    value = y;
+  }
+  return value;
+}
+//****************************************************************************80
+
+double r8_min ( double x, double y )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8_MIN returns the minimum of two R8's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    31 August 2004
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, double X, Y, the quantities to compare.
+//
+//    Output, double R8_MIN, the minimum of X and Y.
+//
+{
+  double value;
+
+  if ( y < x )
+  {
+    value = y;
+  }
+  else
+  {
+    value = x;
+  }
+  return value;
+}
+//****************************************************************************80
+
+double r8_mop ( int i )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8_MOP returns the I-th power of -1 as an R8 value.
+//
+//  Discussion:
+//
+//    An R8 is an double value.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    16 November 2007
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int I, the power of -1.
+//
+//    Output, double R8_MOP, the I-th power of -1.
+//
+{
+  double value;
+
+  if ( ( i % 2 ) == 0 )
+  {
+    value = 1.0;
+  }
+  else
+  {
+    value = -1.0;
+  }
+
+  return value;
+}
+//****************************************************************************80
+
+double r8_psi ( double xx )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8_PSI evaluates the function Psi(X).
+//
+//  Discussion:
+//
+//    This routine evaluates the logarithmic derivative of the
+//    Gamma function,
+//
+//      PSI(X) = d/dX ( GAMMA(X) ) / GAMMA(X)
+//             = d/dX LN ( GAMMA(X) )
+//
+//    for real X, where either
+//
+//      - XMAX1 < X < - XMIN, and X is not a negative integer,
+//
+//    or
+//
+//      XMIN < X.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    09 February 2008
+//
+//  Author:
+//
+//    Original FORTRAN77 version by William Cody.
+//    C++ version by John Burkardt.
+//
+//  Reference:
+//
+//    William Cody, Anthony Strecok, Henry Thacher,
+//    Chebyshev Approximations for the Psi Function,
+//    Mathematics of Computation,
+//    Volume 27, Number 121, January 1973, pages 123-127.
+//
+//  Parameters:
+//
+//    Input, double XX, the argument of the function.
+//
+//    Output, double R8_PSI, the value of the function.
+//
+{
+  double aug;
+  double den;
+  int i;
+  int n;
+  int nq;
+  double one = 1.0;
+  double p1[9] = {
+   4.5104681245762934160E-03,
+   5.4932855833000385356,
+   3.7646693175929276856E+02,
+   7.9525490849151998065E+03,
+   7.1451595818951933210E+04,
+   3.0655976301987365674E+05,
+   6.3606997788964458797E+05,
+   5.8041312783537569993E+05,
+   1.6585695029761022321E+05 };
+  double p2[7] = {
+  -2.7103228277757834192,
+  -1.5166271776896121383E+01,
+  -1.9784554148719218667E+01,
+  -8.8100958828312219821,
+  -1.4479614616899842986,
+  -7.3689600332394549911E-02,
+  -6.5135387732718171306E-21 };
+  double piov4 = 0.78539816339744830962;
+  double q1[8] = {
+   9.6141654774222358525E+01,
+   2.6287715790581193330E+03,
+   2.9862497022250277920E+04,
+   1.6206566091533671639E+05,
+   4.3487880712768329037E+05,
+   5.4256384537269993733E+05,
+   2.4242185002017985252E+05,
+   6.4155223783576225996E-08 };
+  double q2[6] = {
+   4.4992760373789365846E+01,
+   2.0240955312679931159E+02,
+   2.4736979003315290057E+02,
+   1.0742543875702278326E+02,
+   1.7463965060678569906E+01,
+   8.8427520398873480342E-01 };
+  double sgn;
+  double three = 3.0;
+  double upper;
+  double value;
+  double w;
+  double x;
+  double x01 = 187.0;
+  double x01d = 128.0;
+  double x02 = 6.9464496836234126266E-04;
+  double xinf = 1.70E+38;
+  double xlarge = 2.04E+15;
+  double xmax1 = 3.60E+16;
+  double xmin1 = 5.89E-39;
+  double xsmall = 2.05E-09;
+  double z;
+
+  x = xx;
+  w = webbur::r8_abs ( x );
+  aug = 0.0;
+//
+//  Check for valid arguments, then branch to appropriate algorithm.
+//
+  if ( xmax1 <= - x || w < xmin1 )
+  {
+    if ( 0.0 < x )
+    {
+      value = - xinf;
+    }
+    else
+    {
+      value = xinf;
+    }
+    return value;
+  }
+
+  if ( x < 0.5 )
+  {
+//
+//  X < 0.5, use reflection formula: psi(1-x) = psi(x) + pi * cot(pi*x)
+//  Use 1/X for PI*COTAN(PI*X)  when  XMIN1 < |X| <= XSMALL.
+//
+    if ( w <= xsmall )
+    {
+      aug = - one / x;
+    }
+//
+//  Argument reduction for cotangent.
+//
+    else
+    {
+      if ( x < 0.0 )
+      {
+        sgn = piov4;
+      }
+      else
+      {
+        sgn = - piov4;
+      }
+
+      w = w - ( double ) ( ( int ) ( w ) );
+      nq = ( int ) ( w * 4.0 );
+      w = 4.0 * ( w - ( double ) ( nq ) * 0.25 );
+//
+//  W is now related to the fractional part of 4.0 * X.
+//  Adjust argument to correspond to values in the first
+//  quadrant and determine the sign.
+//
+      n = nq / 2;
+
+      if ( n + n != nq )
+      {
+        w = one - w;
+      }
+
+      z = piov4 * w;
+
+      if ( ( n % 2 ) != 0 )
+      {
+        sgn = - sgn;
+      }
+//
+//  Determine the final value for  -pi * cotan(pi*x).
+//
+      n = ( nq + 1 ) / 2;
+      if ( ( n % 2 ) == 0 )
+      {
+//
+//  Check for singularity.
+//
+        if ( z == 0.0 )
+        {
+          if ( 0.0 < x )
+          {
+            value = -xinf;
+          }
+          else
+          {
+            value = xinf;
+          }
+          return value;
+        }
+        aug = sgn * ( 4.0 / std::tan ( z ) );
+      }
+      else
+      {
+        aug = sgn * ( 4.0 * std::tan ( z ) );
+      }
+    }
+    x = one - x;
+  }
+//
+//  0.5 <= X <= 3.0.
+//
+  if ( x <= three )
+  {
+    den = x;
+    upper = p1[0] * x;
+    for ( i = 1; i <= 7; i++ )
+    {
+      den = ( den + q1[i-1] ) * x;
+      upper = ( upper + p1[i]) * x;
+    }
+    den = ( upper + p1[8] ) / ( den + q1[7] );
+    x = ( x - x01 / x01d ) - x02;
+    value = den * x + aug;
+    return value;
+  }
+//
+//  3.0 < X.
+//
+  if ( x < xlarge )
+  {
+    w = one / ( x * x );
+    den = w;
+    upper = p2[0] * w;
+    for ( i = 1; i <= 5; i++ )
+    {
+      den = ( den + q2[i-1] ) * w;
+      upper = ( upper + p2[i] ) * w;
+    }
+    aug = ( upper + p2[6] ) / ( den + q2[5] ) - 0.5 / x + aug;
+  }
+
+  value = aug + std::log ( x );
+
+  return value;
+}
+//****************************************************************************80
+
+double r8_sign ( double x )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8_SIGN returns the sign of an R8.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    18 October 2004
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, double X, the number whose sign is desired.
+//
+//    Output, double R8_SIGN, the sign of X.
+//
+{
+  double value;
+
+  if ( x < 0.0 )
+  {
+    value = -1.0;
+  }
+  else
+  {
+    value = 1.0;
+  }
+  return value;
+}
+//****************************************************************************80
+
+int r8col_compare ( int m, int n, double a[], int i, int j )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8COL_COMPARE compares two columns in an R8COL.
+//
+//  Discussion:
+//
+//    An R8COL is an M by N array of R8's, regarded as an array of N columns,
+//    each of length M.
+//
+//  Example:
+//
+//    Input:
+//
+//      M = 3, N = 4, I = 2, J = 4
+//
+//      A = (
+//        1.  2.  3.  4.
+//        5.  6.  7.  8.
+//        9. 10. 11. 12. )
+//
+//    Output:
+//
+//      R8COL_COMPARE = -1
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    13 September 2005
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, N, the number of rows and columns.
+//
+//    Input, double A[M*N], the M by N array.
+//
+//    Input, int I, J, the columns to be compared.
+//    I and J must be between 1 and N.
+//
+//    Output, int R8COL_COMPARE, the results of the comparison:
+//    -1, column I < column J,
+//     0, column I = column J,
+//    +1, column J < column I.
+//
+{
+  int k;
+  int value;
+//
+//  Check.
+//
+  if ( i < 1 || n < i )
+  {
+    std::cerr << "\n";
+    std::cerr << "R8COL_COMPARE - Fatal error!\n";
+    std::cerr << "  Column index I is out of bounds.\n";
+    std::cerr << "  I = " << i << "\n";
+    std::exit ( 1 );
+  }
+
+  if ( j < 1 || n < j )
+  {
+    std::cerr << "\n";
+    std::cerr << "R8COL_COMPARE - Fatal error!\n";
+    std::cerr << "  Column index J is out of bounds.\n";
+    std::cerr << "  J = " << j << "\n";
+    std::exit ( 1 );
+  }
+
+  value = 0;
+
+  if ( i == j )
+  {
+    return value;
+  }
+
+  k = 0;
+
+  while ( k < m )
+  {
+    if ( a[k+(i-1)*m] < a[k+(j-1)*m] )
+    {
+      value = -1;
+      return value;
+    }
+    else if ( a[k+(j-1)*m] < a[k+(i-1)*m] )
+    {
+      value = +1;
+      return value;
+    }
+    k = k + 1;
+  }
+
+  return value;
+}
+//****************************************************************************80
+
+void r8col_sort_heap_a ( int m, int n, double a[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8COL_SORT_HEAP_A ascending heapsorts an R8COL.
+//
+//  Discussion:
+//
+//    An R8COL is an M by N array of R8's, regarded as an array of N columns,
+//    each of length M.
+//
+//    In lexicographic order, the statement "X < Y", applied to two real
+//    vectors X and Y of length M, means that there is some index I, with
+//    1 <= I <= M, with the property that
+//
+//      X(J) = Y(J) for J < I,
+//    and
+//      X(I) < Y(I).
+//
+//    In other words, the first time they differ, X is smaller.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    15 September 2005
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, N, the number of rows and columns.
+//
+//    Input/output, double A[M*N].
+//    On input, the array of N columns of M-vectors.
+//    On output, the columns of A have been sorted in lexicographic order.
+//
+{
+  int i;
+  int indx;
+  int isgn;
+  int j;
+
+  if ( m <= 0 )
+  {
+    return;
+  }
+
+  if ( n <= 1 )
+  {
+    return;
+  }
+//
+//  Initialize.
+//
+  i = 0;
+  indx = 0;
+  isgn = 0;
+  j = 0;
+//
+//  Call the external heap sorter.
+//
+  for ( ; ; )
+  {
+    webbur::sort_heap_external ( n, &indx, &i, &j, isgn );
+//
+//  Interchange the I and J objects.
+//
+    if ( 0 < indx )
+    {
+      webbur::r8col_swap ( m, n, a, i, j );
+    }
+//
+//  Compare the I and J objects.
+//
+    else if ( indx < 0 )
+    {
+      isgn = webbur::r8col_compare ( m, n, a, i, j );
+    }
+    else if ( indx == 0 )
+    {
+      break;
+    }
+  }
+
+  return;
+}
+//****************************************************************************80
+
+int *r8col_sort_heap_index_a ( int m, int n, double a[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8COL_SORT_HEAP_INDEX_A does an indexed heap ascending sort of an R8COL.
+//
+//  Discussion:
+//
+//    An R8COL is an M by N array of R8's, regarded as an array of N columns,
+//    each of length M.
+//
+//    The sorting is not actually carried out.  Rather an index array is
+//    created which defines the sorting.  This array may be used to sort
+//    or index the array, or to sort or index related arrays keyed on the
+//    original array.
+//
+//    A(*,J1) < A(*,J2) if the first nonzero entry of A(*,J1)-A(*,J2)
+//    is negative.
+//
+//    Once the index array is computed, the sorting can be carried out
+//    "implicitly:
+//
+//      A(*,INDX(*)) is sorted,
+//
+//    Note that the index vector is 0-based.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    01 November 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, the number of rows in each column of A.
+//
+//    Input, int N, the number of columns in A.
+//
+//    Input, double A[M*N], the array.
+//
+//    Output, int R8COL_SORT_HEAP_INDEX_A[N], contains the sort index.  The
+//    I-th column of the sorted array is A(*,INDX(I)).
+//
+{
+  double *column;
+  int i;
+  int *indx;
+  int indxt;
+  int ir;
+  int isgn;
+  int j;
+  int k;
+  int l;
+
+  if ( n < 1 )
+  {
+    return NULL;
+  }
+
+  indx = new int[n];
+
+  for ( i = 0; i < n; i++ )
+  {
+    indx[i] = i;
+  }
+
+  if ( n == 1 )
+  {
+    return indx;
+  }
+
+  column = new double[m];
+
+  l = n / 2 + 1;
+  ir = n;
+
+  for ( ; ; )
+  {
+    if ( 1 < l )
+    {
+      l = l - 1;
+      indxt = indx[l-1];
+      for ( k = 0; k < m; k++ )
+      {
+        column[k] = a[k+indxt*m];
+      }
+    }
+    else
+    {
+      indxt = indx[ir-1];
+      for ( k = 0; k < m; k++ )
+      {
+        column[k] = a[k+indxt*m];
+      }
+      indx[ir-1] = indx[0];
+      ir = ir - 1;
+
+      if ( ir == 1 )
+      {
+        indx[0] = indxt;
+        break;
+      }
+    }
+
+    i = l;
+    j = l + l;
+
+    while ( j <= ir )
+    {
+      if ( j < ir )
+      {
+        isgn = webbur::r8vec_compare ( m, a+indx[j-1]*m, a+indx[j]*m );
+
+        if ( isgn < 0 )
+        {
+          j = j + 1;
+        }
+      }
+
+      isgn = webbur::r8vec_compare ( m, column, a+indx[j-1]*m );
+
+      if ( isgn < 0 )
+      {
+        indx[i-1] = indx[j-1];
+        i = j;
+        j = j + j;
+      }
+      else
+      {
+        j = ir + 1;
+      }
+    }
+    indx[i-1] = indxt;
+  }
+  delete [] column;
+
+  return indx;
+}
+//****************************************************************************80
+
+int r8col_sorted_unique_count ( int m, int n, double a[], double tol )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8COL_SORTED_UNIQUE_COUNT counts unique elements in a sorted R8COL.
+//
+//  Discussion:
+//
+//    An R8COL is an M by N array of R8's, regarded as an array of N columns,
+//    each of length M.
+//
+//    The columns of the array may be ascending or descending sorted.
+//
+//    If the tolerance is large enough, then the concept of uniqueness
+//    can become ambiguous.  If we have a tolerance of 1.5, then in the
+//    list ( 1, 2, 3, 4, 5, 6, 7, 8, 9 ) is it fair to say we have only
+//    one unique entry?  That would be because 1 may be regarded as unique,
+//    and then 2 is too close to 1 to be unique, and 3 is too close to 2 to
+//    be unique and so on.
+//
+//    This seems wrongheaded.  So I prefer the idea that an item is not
+//    unique under a tolerance only if it is close to something that IS unique.
+//    Thus, the unique items are guaranteed to cover the space if we include
+//    a disk of radius TOL around each one.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    01 November 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, N, the number of rows and columns.
+//
+//    Input, double A[M*N], a sorted array, containing
+//    N columns of data.
+//
+//    Input, double TOL, a tolerance for equality.
+//
+//    Output, int R8COL_SORTED_UNIQUE_COUNT, the number of unique columns.
+//
+{
+  double diff;
+  int i;
+  int j1;
+  int j2;
+  int unique_num;
+
+  unique_num = 0;
+
+  if ( n <= 0 )
+  {
+    return unique_num;
+  }
+
+  unique_num = 1;
+  j1 = 0;
+
+  for ( j2 = 1; j2 < n; j2++ )
+  {
+    diff = 0.0;
+    for ( i = 0; i < m; i++ )
+    {
+      diff = webbur::r8_max ( diff, webbur::r8_abs ( a[i+j1*m] - a[i+j2*m] ) );
+    }
+    if ( tol < diff )
+    {
+      unique_num = unique_num + 1;
+      j1 = j2;
+    }
+  }
+
+  return unique_num;
+}
+//****************************************************************************80
+
+void r8col_swap ( int m, int n, double a[], int j1, int j2 )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8COL_SWAP swaps columns J1 and J2 of an R8COL.
+//
+//  Discussion:
+//
+//    An R8COL is an M by N array of R8's, regarded as an array of N columns,
+//    each of length M.
+//
+//  Example:
+//
+//    Input:
+//
+//      M = 3, N = 4, J1 = 2, J2 = 4
+//
+//      A = (
+//        1.  2.  3.  4.
+//        5.  6.  7.  8.
+//        9. 10. 11. 12. )
+//
+//    Output:
+//
+//      A = (
+//        1.  4.  3.  2.
+//        5.  8.  7.  6.
+//        9. 12. 11. 10. )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    23 October 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, N, the number of rows and columns.
+//
+//    Input/output, double A[M*N], the M by N array.
+//
+//    Input, int J1, J2, the columns to be swapped.
+//    These columns are 1-based.
+//
+{
+  int i;
+  double temp;
+
+  if ( j1 < 1 || n < j1 || j2 < 1 || n < j2 )
+  {
+    std::cerr << "\n";
+    std::cerr << "R8COL_SWAP - Fatal error!\n";
+    std::cerr << "  J1 or J2 is out of bounds.\n";
+    std::cerr << "  J1 =   " << j1 << "\n";
+    std::cerr << "  J2 =   " << j2 << "\n";
+    std::cerr << "  NCOL = " << n << "\n";
+    std::exit ( 1 );
+  }
+
+  if ( j1 == j2 )
+  {
+    return;
+  }
+
+  for ( i = 0; i < m; i++ )
+  {
+    temp          = a[i+(j1-1)*m];
+    a[i+(j1-1)*m] = a[i+(j2-1)*m];
+    a[i+(j2-1)*m] = temp;
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void r8col_tol_undex ( int m, int n, double a[], int unique_num, double tol,
+  int undx[], int xdnu[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8COL_TOL_UNDEX indexes tolerably unique entries of an R8COL.
+//
+//  Discussion:
+//
+//    An R8COL is an M by N array of R8's, regarded as an array of N columns,
+//    each of length M.
+//
+//    The goal of this routine is to determine a vector UNDX,
+//    which points to the unique elements of A, in sorted order,
+//    and a vector XDNU, which identifies, for each entry of A, the index of
+//    the unique sorted element of A.
+//
+//    This is all done with index vectors, so that the elements of
+//    A are never moved.
+//
+//    The first step of the algorithm requires the indexed sorting
+//    of A, which creates arrays INDX and XDNI.  (If all the entries
+//    of A are unique, then these arrays are the same as UNDX and XDNU.)
+//
+//    We then use INDX to examine the entries of A in sorted order,
+//    noting the unique entries, creating the entries of XDNU and
+//    UNDX as we go.
+//
+//    Once this process has been completed, the vector A could be
+//    replaced by a compressed vector XU, containing the unique entries
+//    of A in sorted order, using the formula
+//
+//      XU(*) = A(UNDX(*)).
+//
+//    We could then, if we wished, reconstruct the entire vector A, or
+//    any element of it, by index, as follows:
+//
+//      A(I) = XU(XDNU(I)).
+//
+//    We could then replace A by the combination of XU and XDNU.
+//
+//    Later, when we need the I-th entry of A, we can locate it as
+//    the XDNU(I)-th entry of XU.
+//
+//    Here is an example of a vector A, the sort and inverse sort
+//    index vectors, and the unique sort and inverse unique sort vectors
+//    and the compressed unique sorted vector.
+//
+//      I     A  Indx  Xdni       XU  Undx  Xdnu
+//    ----+-----+-----+-----+--------+-----+-----+
+//      0 | 11.     0     0 |    11.     0     0
+//      1 | 22.     2     4 |    22.     1     1
+//      2 | 11.     5     1 |    33.     3     0
+//      3 | 33.     8     7 |    55.     4     2
+//      4 | 55.     1     8 |                  3
+//      5 | 11.     6     2 |                  0
+//      6 | 22.     7     5 |                  1
+//      7 | 22.     3     6 |                  1
+//      8 | 11.     4     3 |                  0
+//
+//    INDX(2) = 3 means that sorted item(2) is A(3).
+//    XDNI(2) = 5 means that A(2) is sorted item(5).
+//
+//    UNDX(3) = 4 means that unique sorted item(3) is at A(4).
+//    XDNU(8) = 2 means that A(8) is at unique sorted item(2).
+//
+//    XU(XDNU(I))) = X(I).
+//    XU(I)        = X(UNDX(I)).
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    19 July 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, the dimension of the data values.
+//
+//    Input, int N, the number of data values,
+//
+//    Input, double A[M*N], the data values.
+//
+//    Input, int UNIQUE_NUM, the number of unique values in A.
+//    This value is only required for languages in which the size of
+//    UNDX must be known in advance.
+//
+//    Input, double TOL, a tolerance for equality.
+//
+//    Output, int UNDX[UNIQUE_NUM], the UNDX vector.
+//
+//    Output, int XDNU[N], the XDNU vector.
+//
+{
+  double diff;
+  int i;
+  int i2;
+  int *indx;
+  int j;
+  int k;
+  bool unique;
+//
+//  Implicitly sort the array.
+//
+  indx = webbur::r8col_sort_heap_index_a ( m, n, a );
+//
+//  Consider entry I = 0.
+//  It is unique, so set the number of unique items to K.
+//  Set the K-th unique item to I.
+//  Set the representative of item I to the K-th unique item.
+//
+  i = 0;
+  k = 0;
+  undx[k] = indx[i];
+  xdnu[indx[i]] = k;
+//
+//  Consider entry I.
+//
+//  If it is unique, increase the unique count K, set the
+//  K-th unique item to I, and set the representative of I to K.
+//
+//  If it is not unique, set the representative of item I to a
+//  previously determined unique item that is close to it.
+//
+  for ( i = 1; i < n; i++ )
+  {
+    unique = true;
+    for ( j = 0; j <= k; j++ )
+    {
+      diff = 0.0;
+      for ( i2 = 0; i2 < m; i2++ )
+      {
+        diff = webbur::r8_max ( diff,
+          webbur::r8_abs ( a[i2+indx[i]*m] - a[i2+undx[j]*m] ) );
+      }
+      if ( diff <= tol )
+      {
+        unique = false;
+        xdnu[indx[i]] = j;
+        break;
+      }
+    }
+    if ( unique )
+    {
+      k = k + 1;
+      undx[k] = indx[i];
+      xdnu[indx[i]] = k;
+    }
+  }
+  delete [] indx;
+
+  return;
+}
+//****************************************************************************80
+
+int r8col_tol_unique_count ( int m, int n, double a[], double tol )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8COL_TOL_UNIQUE_COUNT counts tolerably unique entries in an R8COL.
+//
+//  Discussion:
+//
+//    An R8COL is an M by N array of R8's, regarded as an array of N columns,
+//    each of length M.
+//
+//    The columns of the array may be ascending or descending sorted.
+//
+//    If the tolerance is large enough, then the concept of uniqueness
+//    can become ambiguous.  If we have a tolerance of 1.5, then in the
+//    list ( 1, 2, 3, 4, 5, 6, 7, 8, 9 ) is it fair to say we have only
+//    one unique entry?  That would be because 1 may be regarded as unique,
+//    and then 2 is too close to 1 to be unique, and 3 is too close to 2 to
+//    be unique and so on.
+//
+//    This seems wrongheaded.  So I prefer the idea that an item is not
+//    unique under a tolerance only if it is close to something that IS unique.
+//    Thus, the unique items are guaranteed to cover the space if we include
+//    a disk of radius TOL around each one.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    19 July 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, N, the number of rows and columns.
+//
+//    Input, double A[M*N], the array of N columns of data.
+//
+//    Input, double TOL, a tolerance for equality.
+//
+//    Output, int R8COL_TOL_UNIQUE_COUNT, the number of unique columns.
+//
+{
+  double diff;
+  int i;
+  int i2;
+  int *indx;
+  int j;
+  int k;
+  bool unique;
+  int *undx;
+
+  undx = new int[n];
+//
+//  Implicitly sort the array.
+//
+  indx = webbur::r8col_sort_heap_index_a ( m, n, a );
+//
+//  Consider entry I = 0.
+//  It is unique, so set the number of unique items to K.
+//  Set the K-th unique item to I.
+//  Set the representative of item I to the K-th unique item.
+//
+  i = 0;
+  k = 0;
+  undx[k] = indx[i];
+//
+//  Consider entry I.
+//
+//  If it is unique, increase the unique count K, set the
+//  K-th unique item to I, and set the representative of I to K.
+//
+//  If it is not unique, set the representative of item I to a
+//  previously determined unique item that is close to it.
+//
+  for ( i = 1; i < n; i++ )
+  {
+    unique = true;
+    for ( j = 0; j <= k; j++ )
+    {
+      diff = 0.0;
+      for ( i2 = 0; i2 < m; i2++ )
+      {
+        diff = webbur::r8_max ( diff,
+          webbur::r8_abs ( a[i2+indx[i]*m] - a[i2+undx[j]*m] ) );
+      }
+      if ( diff <= tol )
+      {
+        unique = false;
+        break;
+      }
+    }
+    if ( unique )
+    {
+      k = k + 1;
+      undx[k] = indx[i];
+    }
+  }
+  delete [] indx;
+  delete [] undx;
+
+  k = k + 1;
+
+  return k;
+}
+//****************************************************************************80
+
+void r8col_undex ( int x_dim, int x_num, double x_val[], int x_unique_num,
+  double tol, int undx[], int xdnu[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8COL_UNDEX returns unique sorted indexes for an R8COL.
+//
+//  Discussion:
+//
+//    An R8COL is an M by N array of R8's, regarded as an array of N columns,
+//    each of length M.
+//
+//    The goal of this routine is to determine a vector UNDX,
+//    which points to the unique elements of X, in sorted order,
+//    and a vector XDNU, which identifies, for each entry of X, the index of
+//    the unique sorted element of X.
+//
+//    This is all done with index vectors, so that the elements of
+//    X are never moved.
+//
+//    The first step of the algorithm requires the indexed sorting
+//    of X, which creates arrays INDX and XDNI.  (If all the entries
+//    of X are unique, then these arrays are the same as UNDX and XDNU.)
+//
+//    We then use INDX to examine the entries of X in sorted order,
+//    noting the unique entries, creating the entries of XDNU and
+//    UNDX as we go.
+//
+//    Once this process has been completed, the vector X could be
+//    replaced by a compressed vector XU, containing the unique entries
+//    of X in sorted order, using the formula
+//
+//      XU(*) = X(UNDX(*)).
+//
+//    We could then, if we wished, reconstruct the entire vector X, or
+//    any element of it, by index, as follows:
+//
+//      X(I) = XU(XDNU(I)).
+//
+//    We could then replace X by the combination of XU and XDNU.
+//
+//    Later, when we need the I-th entry of X, we can locate it as
+//    the XDNU(I)-th entry of XU.
+//
+//    Here is an example of a vector X, the sort and inverse sort
+//    index vectors, and the unique sort and inverse unique sort vectors
+//    and the compressed unique sorted vector.
+//
+//      I     X  Indx  Xdni       XU  Undx  Xdnu
+//    ----+-----+-----+-----+--------+-----+-----+
+//      0 | 11.     0     0 |    11.     0     0
+//      1 | 22.     2     4 |    22.     1     1
+//      2 | 11.     5     1 |    33.     3     0
+//      3 | 33.     8     7 |    55.     4     2
+//      4 | 55.     1     8 |                  3
+//      5 | 11.     6     2 |                  0
+//      6 | 22.     7     5 |                  1
+//      7 | 22.     3     6 |                  1
+//      8 | 11.     4     3 |                  0
+//
+//    INDX(2) = 3 means that sorted item(2) is X(3).
+//    XDNI(2) = 5 means that X(2) is sorted item(5).
+//
+//    UNDX(3) = 4 means that unique sorted item(3) is at X(4).
+//    XDNU(8) = 2 means that X(8) is at unique sorted item(2).
+//
+//    XU(XDNU(I))) = X(I).
+//    XU(I)        = X(UNDX(I)).
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    02 November 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int X_DIM, the dimension of the data values.
+//    (the number of rows in the R8COL).
+//
+//    Input, int X_NUM, the number of data values,
+//    (the number of columns in the R8COL).
+//
+//    Input, double X_VAL[X_DIM*X_NUM], the data values.
+//
+//    Input, int X_UNIQUE_NUM, the number of unique values in X_VAL.
+//    This value is only required for languages in which the size of
+//    UNDX must be known in advance.
+//
+//    Input, double TOL, a tolerance for equality.
+//
+//    Output, int UNDX[X_UNIQUE_NUM], the UNDX vector.
+//
+//    Output, int XDNU[X_NUM], the XDNU vector.
+//
+{
+  double diff;
+  int i;
+  int *indx;
+  int j;
+  int k;
+//
+//  Implicitly sort the array.
+//
+  indx = webbur::r8col_sort_heap_index_a ( x_dim, x_num, x_val );
+//
+//  Walk through the implicitly sorted array X.
+//
+  i = 0;
+
+  j = 0;
+  undx[j] = indx[i];
+
+  xdnu[indx[i]] = j;
+
+  for ( i = 1; i < x_num; i++ )
+  {
+    diff = 0.0;
+    for ( k = 0; k < x_dim; k++ )
+    {
+      diff = r8_max ( diff,
+        webbur::r8_abs ( x_val[k+indx[i]*x_dim] - x_val[k+undx[j]*x_dim] ) );
+    }
+    if ( tol < diff )
+    {
+      j = j + 1;
+      undx[j] = indx[i];
+    }
+    xdnu[indx[i]] = j;
+  }
+  delete [] indx;
+
+  return;
+}
+//****************************************************************************80
+
+void r8col_unique_index ( int m, int n, double a[], double tol,
+  int unique_index[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8COL_UNIQUE_INDEX indexes the first occurrence of values in an R8COL.
+//
+//  Discussion:
+//
+//    An R8COL is an M by N array of R8 values.
+//    It is regarded as an array of N columns of length M.
+//
+//    For element A(1:M,J) of the matrix, UNIQUE_INDEX(J) is the uniqueness
+//   index of A(1:M,J).  That is, if A_UNIQUE contains the unique elements
+//    of A, gathered in order, then
+//
+//      A_UNIQUE ( 1:M, UNIQUE_INDEX(J) ) = A(1:M,J)
+//
+//    The user must preallocate space for the output array UNIQUE_INDEX.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    24 November 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, N, the number of rows and columns of A.
+//    The length of an "element" of A, and the number of "elements".
+//
+//    Input, double A[M*N], the array.
+//
+//    Input, double TOL, a tolerance for equality.
+//
+//    Output, int UNIQUE_INDEX[N], the unique index.
+//
+{
+  double diff;
+  int i;
+  int j1;
+  int j2;
+  int unique_num;
+
+  for ( j1 = 0; j1 < n; j1++ )
+  {
+    unique_index[j1] = -1;
+  }
+  unique_num = 0;
+
+  for ( j1 = 0; j1 < n; j1++ )
+  {
+    if ( unique_index[j1] == -1 )
+    {
+      unique_index[j1] = unique_num;
+
+      for ( j2 = j1 + 1; j2 < n; j2++ )
+      {
+        diff = 0.0;
+        for ( i = 0; i < m; i++ )
+        {
+          diff = webbur::r8_max ( diff,
+            webbur::r8_abs ( a[i+j1*m] - a[i+j2*m] ) );
+        }
+        if ( diff <= tol )
+        {
+          unique_index[j2] = unique_num;
+        }
+      }
+      unique_num = unique_num + 1;
+    }
+  }
+  return;
+}
+//****************************************************************************80
+
+void r8mat_transpose_print ( int m, int n, double a[], std::string title )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8MAT_TRANSPOSE_PRINT prints an R8MAT, transposed.
+//
+//  Discussion:
+//
+//    An R8MAT is a doubly dimensioned array of R8 values, stored as a vector
+//    in column-major order.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    10 September 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, N, the number of rows and columns.
+//
+//    Input, double A[M*N], an M by N matrix to be printed.
+//
+//    Input, string TITLE, a title.
+//
+{
+  r8mat_transpose_print_some ( m, n, a, 1, 1, m, n, title );
+
+  return;
+}
+//****************************************************************************80
+
+void r8mat_transpose_print_some ( int m, int n, double a[], int ilo, int jlo,
+  int ihi, int jhi, std::string title )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8MAT_TRANSPOSE_PRINT_SOME prints some of an R8MAT, transposed.
+//
+//  Discussion:
+//
+//    An R8MAT is a doubly dimensioned array of R8 values, stored as a vector
+//    in column-major order.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    10 September 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int M, N, the number of rows and columns.
+//
+//    Input, double A[M*N], an M by N matrix to be printed.
+//
+//    Input, int ILO, JLO, the first row and column to print.
+//
+//    Input, int IHI, JHI, the last row and column to print.
+//
+//    Input, string TITLE, a title.
+//
+{
+# define INCX 5
+
+  int i;
+  int i2;
+  int i2hi;
+  int i2lo;
+  int inc;
+  int j;
+  int j2hi;
+  int j2lo;
+
+  std::cout << "\n";
+  std::cout << title << "\n";
+
+  for ( i2lo = i4_max ( ilo, 1 ); i2lo <= i4_min ( ihi, m ); i2lo = i2lo + INCX )
+  {
+    i2hi = i2lo + INCX - 1;
+    i2hi = i4_min ( i2hi, m );
+    i2hi = i4_min ( i2hi, ihi );
+
+    inc = i2hi + 1 - i2lo;
+
+    std::cout << "\n";
+    std::cout << "  Row: ";
+    for ( i = i2lo; i <= i2hi; i++ )
+    {
+      std::cout << std::setw(7) << i - 1 << "       ";
+    }
+    std::cout << "\n";
+    std::cout << "  Col\n";
+    std::cout << "\n";
+
+    j2lo = i4_max ( jlo, 1 );
+    j2hi = i4_min ( jhi, n );
+
+    for ( j = j2lo; j <= j2hi; j++ )
+    {
+      std::cout << std::setw(5) << j - 1 << ":";
+      for ( i2 = 1; i2 <= inc; i2++ )
+      {
+        i = i2lo - 1 + i2;
+        std::cout << std::setw(14) << a[(i-1)+(j-1)*m];
+      }
+      std::cout << "\n";
+    }
+  }
+
+  return;
+# undef INCX
+}
+//****************************************************************************80
+
+void r8mat_write ( std::string output_filename, int m, int n, double table[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8MAT_WRITE writes an R8MAT file.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    11 August 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, string OUTPUT_FILENAME, the output filename.
+//
+//    Input, int M, the spatial dimension.
+//
+//    Input, int N, the number of points.
+//
+//    Input, double TABLE[M*N], the table data.
+//
+{
+  int i;
+  int j;
+  std::ofstream output;
+//
+//  Open the file.
+//
+  output.open ( output_filename.c_str ( ) );
+
+  if ( !output )
+  {
+    std::cerr << "\n";
+    std::cerr << "R8MAT_WRITE - Fatal error!\n";
+    std::cerr << "  Could not open the output file.\n";
+    return;
+  }
+//
+//  Write the data.
+//
+  for ( j = 0; j < n; j++ )
+  {
+    for ( i = 0; i < m; i++ )
+    {
+      output << "  " << std::setw(24) << std::setprecision(16) << table[i+j*m];
+    }
+    output << "\n";
+  }
+//
+//  Close the file.
+//
+  output.close ( );
+
+  return;
+}
+//****************************************************************************80
+
+double r8poly_ant_val ( int n, double poly_cof[], double xval )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8POLY_ANT_VAL evaluates the antiderivative of an R8POLY in standard form.
+//
+//  Discussion:
+//
+//    The constant term of the antiderivative is taken to be zero.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    17 June 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the order of the polynomial.
+//
+//    Input, double POLY_COF[N], the polynomial coefficients.  POLY_COF[0]
+//    is the constant term, and POLY_COF[N-1] is the coefficient of X**(N-1).
+//
+//    Input, double XVAL, the point where the antiderivative is to be
+//    evaluated.
+//
+//    Output, double R8POLY_ANT_VAL, the value of the antiderivative of the polynomial
+//    at XVAL.
+//
+{
+  int i;
+  double value;
+
+  value = 0.0;
+
+  for ( i = n - 1; 0 <= i; i-- )
+  {
+    value = ( value + poly_cof[i] / ( double ) ( i + 1 ) ) * xval;
+  }
+
+  return value;
+}
+//****************************************************************************80
+
+double *r8vec_chebyshev_new ( int n, double a_first, double a_last )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_CHEBYSHEV_NEW creates a vector of Chebyshev spaced values.
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    08 June 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the vector.
+//
+//    Input, double A_FIRST, A_LAST, the first and last entries.
+//
+//    Output, double R8VEC_CHEBYSHEV_NEW[N], a vector of Chebyshev spaced data.
+//
+{
+  double *a;
+  double c;
+  int i;
+  double pi = 3.141592653589793;
+  double theta;
+
+  a = new double[n];
+
+  if ( n == 1 )
+  {
+    a[0] = ( a_first + a_last ) / 2.0;
+  }
+  else
+  {
+    for ( i = 0; i < n; i++ )
+    {
+      theta = ( double ) ( n - i - 1 ) * pi / ( double ) ( n - 1 );
+
+      c = std::cos ( theta );
+
+      if ( ( n % 2 ) == 1 )
+      {
+        if ( 2 * i + 1 == n )
+        {
+          c = 0.0;
+        }
+      }
+
+      a[i] = ( ( 1.0 - c ) * a_first
+             + ( 1.0 + c ) * a_last )
+             /   2.0;
+    }
+  }
+  return a;
+}
+//****************************************************************************80
+
+int r8vec_compare ( int n, double a[], double b[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_COMPARE compares two R8VEC's.
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//    The lexicographic ordering is used.
+//
+//  Example:
+//
+//    Input:
+//
+//      A1 = ( 2.0, 6.0, 2.0 )
+//      A2 = ( 2.0, 8.0, 12.0 )
+//
+//    Output:
+//
+//      ISGN = -1
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    23 September 2005
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the vectors.
+//
+//    Input, double A[N], B[N], the vectors to be compared.
+//
+//    Output, int R8VEC_COMPARE, the results of the comparison:
+//    -1, A is lexicographically less than B,
+//     0, A is equal to B,
+//    +1, A is lexicographically greater than B.
+//
+{
+  int isgn;
+  int k;
+
+  isgn = 0;
+
+  for ( k = 0; k < n; k++ )
+  {
+    if ( a[k] < b[k] )
+    {
+      isgn = -1;
+      return isgn;
+    }
+    else if ( b[k] < a[k] )
+    {
+      isgn = +1;
+      return isgn;
+    }
+  }
+  return isgn;
+}
+//****************************************************************************80
+
+void r8vec_copy ( int n, double a1[], double a2[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_COPY copies an R8VEC.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    03 July 2005
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the vectors.
+//
+//    Input, double A1[N], the vector to be copied.
+//
+//    Output, double A2[N], the copy of A1.
+//
+{
+  int i;
+
+  for ( i = 0; i < n; i++ )
+  {
+    a2[i] = a1[i];
+  }
+  return;
+}
+//****************************************************************************80
+
+double *r8vec_copy_new ( int n, double a1[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_COPY_NEW copies an R8VEC to a "new" R8VEC.
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    03 July 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the vectors.
+//
+//    Input, double A1[N], the vector to be copied.
+//
+//    Output, double R8VEC_COPY_NEW[N], the copy of A1.
+//
+{
+  double *a2;
+  int i;
+
+  a2 = new double[n];
+
+  for ( i = 0; i < n; i++ )
+  {
+    a2[i] = a1[i];
+  }
+  return a2;
+}
+//****************************************************************************80
+
+double r8vec_diff_norm_li ( int n, double a[], double b[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_DIFF_NORM_LI returns the L-oo norm of the difference of R8VEC's.
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//    The vector L-oo norm is defined as:
+//
+//      R8VEC_NORM_LI = max ( 1 <= I <= N ) abs ( A(I) ).
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    02 April 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in A.
+//
+//    Input, double A[N], B[N], the vectors.
+//
+//    Output, double R8VEC_DIFF_NORM_LI, the L-oo norm of A - B.
+//
+{
+  int i;
+  double value;
+
+  value = 0.0;
+
+  for ( i = 0; i < n; i++ )
+  {
+    value = webbur::r8_max ( value, webbur::r8_abs ( a[i] - b[i] ) );
+  }
+  return value;
+}
+//****************************************************************************80
+
+void r8vec_direct_product2 ( int factor_index, int factor_order,
+  double factor_value[], int factor_num, int point_num, double w[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_DIRECT_PRODUCT2 creates a direct product of R8VEC's.
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//    To explain what is going on here, suppose we had to construct
+//    a multidimensional quadrature rule as the product of K rules
+//    for 1D quadrature.
+//
+//    The product rule will be represented as a list of points and weights.
+//
+//    The J-th item in the product rule will be associated with
+//      item J1 of 1D rule 1,
+//      item J2 of 1D rule 2,
+//      ...,
+//      item JK of 1D rule K.
+//
+//    In particular,
+//      X(J) = ( X(1,J1), X(2,J2), ..., X(K,JK))
+//    and
+//      W(J) = W(1,J1) * W(2,J2) * ... * W(K,JK)
+//
+//    So we can construct the quadrature rule if we can properly
+//    distribute the information in the 1D quadrature rules.
+//
+//    This routine carries out that task for the weights W.
+//
+//    Another way to do this would be to compute, one by one, the
+//    set of all possible indices (J1,J2,...,JK), and then index
+//    the appropriate information.  An advantage of the method shown
+//    here is that you can process the K-th set of information and
+//    then discard it.
+//
+//  Example:
+//
+//    Rule 1:
+//      Order = 4
+//      W(1:4) = ( 2, 3, 5, 7 )
+//
+//    Rule 2:
+//      Order = 3
+//      W(1:3) = ( 11, 13, 17 )
+//
+//    Rule 3:
+//      Order = 2
+//      W(1:2) = ( 19, 23 )
+//
+//    Product Rule:
+//      Order = 24
+//      W(1:24) =
+//        ( 2 * 11 * 19 )
+//        ( 3 * 11 * 19 )
+//        ( 4 * 11 * 19 )
+//        ( 7 * 11 * 19 )
+//        ( 2 * 13 * 19 )
+//        ( 3 * 13 * 19 )
+//        ( 5 * 13 * 19 )
+//        ( 7 * 13 * 19 )
+//        ( 2 * 17 * 19 )
+//        ( 3 * 17 * 19 )
+//        ( 5 * 17 * 19 )
+//        ( 7 * 17 * 19 )
+//        ( 2 * 11 * 23 )
+//        ( 3 * 11 * 23 )
+//        ( 5 * 11 * 23 )
+//        ( 7 * 11 * 23 )
+//        ( 2 * 13 * 23 )
+//        ( 3 * 13 * 23 )
+//        ( 5 * 13 * 23 )
+//        ( 7 * 13 * 23 )
+//        ( 2 * 17 * 23 )
+//        ( 3 * 17 * 23 )
+//        ( 5 * 17 * 23 )
+//        ( 7 * 17 * 23 )
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    18 April 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int FACTOR_INDEX, the index of the factor being processed.
+//    The first factor processed must be factor 0.
+//
+//    Input, int FACTOR_ORDER, the order of the factor.
+//
+//    Input, double FACTOR_VALUE[FACTOR_ORDER], the factor values for
+//    factor FACTOR_INDEX.
+//
+//    Input, int FACTOR_NUM, the number of factors.
+//
+//    Input, int POINT_NUM, the number of elements in the direct product.
+//
+//    Input/output, double W[POINT_NUM], the elements of the
+//    direct product, which are built up gradually.
+//
+//  Local Parameters:
+//
+//    Local, integer START, the first location of a block of values to set.
+//
+//    Local, integer CONTIG, the number of consecutive values to set.
+//
+//    Local, integer SKIP, the distance from the current value of START
+//    to the next location of a block of values to set.
+//
+//    Local, integer REP, the number of blocks of values to set.
+//
+{
+  static int contig = 0;
+  int i;
+  int j;
+  int k;
+  static int rep = 0;
+  static int skip = 0;
+  int start;
+
+  if ( factor_index == 0 )
+  {
+    contig = 1;
+    skip = 1;
+    rep = point_num;
+    for ( i = 0; i < point_num; i++ )
+    {
+      w[i] = 1.0;
+    }
+  }
+
+  rep = rep / factor_order;
+  skip = skip * factor_order;
+
+  for ( j = 0; j < factor_order; j++ )
+  {
+    start = 0 + j * contig;
+
+    for ( k = 1; k <= rep; k++ )
+    {
+      for ( i = start; i < start + contig; i++ )
+      {
+        w[i] = w[i] * factor_value[j];
+      }
+      start = start + skip;
+    }
+  }
+
+  contig = contig * factor_order;
+
+  return;
+}
+//****************************************************************************80
+
+double r8vec_dot_product ( int n, double a1[], double a2[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_DOT_PRODUCT computes the dot product of a pair of R8VEC's.
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    03 July 2005
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the vectors.
+//
+//    Input, double A1[N], A2[N], the two vectors to be considered.
+//
+//    Output, double R8VEC_DOT_PRODUCT, the dot product of the vectors.
+//
+{
+  int i;
+  double value;
+
+  value = 0.0;
+  for ( i = 0; i < n; i++ )
+  {
+    value = value + a1[i] * a2[i];
+  }
+  return value;
+}
+//****************************************************************************80
+
+double r8vec_i4vec_dot_product ( int n, double r8vec[], int i4vec[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_I4VEC_DOT_PRODUCT computes the dot product of an R8VEC and an I4VEC.
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//    An I4VEC is a vector of I4's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    30 June 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the vectors.
+//
+//    Input, double R8VEC[N], the first vector.
+//
+//    Input, int I4VEC[N], the second vector.
+//
+//    Output, double R8VEC_I4VEC_DOT_PRODUCT, the dot product of the vectors.
+//
+{
+  int i;
+  double value;
+
+  value = 0.0;
+  for ( i = 0; i < n; i++ )
+  {
+    value = value + r8vec[i] * ( double ) ( i4vec[i] );
+  }
+  return value;
+}
+//****************************************************************************80
+
+void r8vec_index_sorted_range ( int n, double r[], int indx[], double r_lo,
+  double r_hi, int *i_lo, int *i_hi )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_INDEX_SORTED_RANGE: search index sorted vector for elements in a range.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    27 September 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of items in the vector.
+//
+//    Input, double R[N], the index sorted vector.
+//
+//    Input, int INDX[N], the vector used to sort R.
+//    The vector R[INDX[*]] is sorted.
+//
+//    Input, double R_LO, R_HI, the limits of the range.
+//
+//    Output, int *I_LO, *I_HI, the range of indices
+//    so that I_LO <= I <= I_HI => R_LO <= R[INDX[I]] <= R_HI.  If no
+//    values in R lie in the range, then I_HI < I_LO will be returned.
+//
+{
+  int i1;
+  int i2;
+  int j1;
+  int j2;
+//
+//  Cases we can handle immediately.
+//
+  if ( r[indx[n-1]] < r_lo )
+  {
+    *i_lo = n;
+    *i_hi = n - 1;
+    return;
+  }
+
+  if ( r_hi < r[indx[0]] )
+  {
+    *i_lo = 0;
+    *i_hi = -1;
+    return;
+  }
+//
+//  Are there are least two intervals?
+//
+  if ( n == 1 )
+  {
+    if ( r_lo <= r[indx[0]] && r[indx[0]] <= r_hi )
+    {
+      *i_lo = 0;
+      *i_hi = 0;
+    }
+    else
+    {
+      *i_lo = -1;
+      *i_hi = -2;
+    }
+    return;
+  }
+//
+//  Bracket R_LO.
+//
+  if ( r_lo <= r[indx[0]] )
+  {
+    *i_lo = 0;
+  }
+  else
+  {
+//
+//  R_LO is in one of the intervals spanned by R(INDX(J1)) to R(INDX(J2)).
+//  Examine the intermediate interval [R(INDX(I1)), R(INDX(I1+1))].
+//  Does R_LO lie here, or below or above?
+//
+    j1 = 0;
+    j2 = n - 1;
+    i1 = ( j1 + j2 - 1 ) / 2;
+    i2 = i1 + 1;
+
+    for ( ; ; )
+    {
+      if ( r_lo < r[indx[i1]] )
+      {
+        j2 = i1;
+        i1 = ( j1 + j2 - 1 ) / 2;
+        i2 = i1 + 1;
+      }
+      else if ( r[indx[i2]] < r_lo )
+      {
+        j1 = i2;
+        i1 = ( j1 + j2 - 1 ) / 2;
+        i2 = i1 + 1;
+      }
+      else
+      {
+        *i_lo = i1;
+        break;
+      }
+    }
+  }
+//
+//  Bracket R_HI.
+//
+  if ( r[indx[n-1]] <= r_hi )
+  {
+    *i_hi = n - 1;
+  }
+  else
+  {
+    j1 = *i_lo;
+    j2 = n - 1;
+    i1 = ( j1 + j2 - 1 ) / 2;
+    i2 = i1 + 1;
+
+    for ( ; ; )
+    {
+      if ( r_hi < r[indx[i1]] )
+      {
+        j2 = i1;
+        i1 = ( j1 + j2 - 1 ) / 2;
+        i2 = i1 + 1;
+      }
+      else if ( r[indx[i2]] < r_hi )
+      {
+        j1 = i2;
+        i1 = ( j1 + j2 - 1 ) / 2;
+        i2 = i1 + 1;
+      }
+      else
+      {
+        *i_hi = i2;
+        break;
+      }
+    }
+  }
+//
+//  We expect to have computed the largest I_LO and smallest I_HI such that
+//    R(INDX(I_LO)) <= R_LO <= R_HI <= R(INDX(I_HI))
+//  but what we want is actually
+//    R_LO <= R(INDX(I_LO)) <= R(INDX(I_HI)) <= R_HI
+//  which we can usually get simply by incrementing I_LO and decrementing I_HI.
+//
+  if ( r[indx[*i_lo]] < r_lo )
+  {
+    *i_lo = *i_lo + 1;
+    if ( n - 1 < *i_lo )
+    {
+      *i_hi = *i_lo - 1;
+    }
+  }
+
+  if ( r_hi < r[indx[*i_hi]] )
+  {
+    *i_hi = *i_hi - 1;
+    if ( *i_hi < 0 )
+    {
+      *i_lo = *i_hi + 1;
+    }
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void r8vec_indexed_heap_d ( int n, double a[], int indx[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_INDEXED_HEAP_D creates a descending heap from an indexed R8VEC.
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//    An indexed R8VEC is an R8VEC of data values, and an R8VEC of N indices,
+//    each referencing an entry of the data vector.
+//
+//    The function adjusts the index vector INDX so that, for 1 <= J <= N/2,
+//    we have:
+//      A[INDX[2*J+1]]   <= A[INDX[J]]
+//    and
+//      A[INDX[2*J+2]] <= A[INDX[J]]
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    18 August 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Albert Nijenhuis, Herbert Wilf,
+//    Combinatorial Algorithms for Computers and Calculators,
+//    Academic Press, 1978,
+//    ISBN: 0-12-519260-6,
+//    LC: QA164.N54.
+//
+//  Parameters:
+//
+//    Input, int N, the size of the index array.
+//
+//    Input, double A[*], the data vector.
+//
+//    Input/output, int INDX[N], the index array.
+//    Each entry of INDX must be a valid index for the array A.
+//    On output, the indices have been reordered into a descending heap.
+//
+{
+  int i;
+  int ifree;
+  int key;
+  int m;
+//
+//  Only nodes N/2 - 1 down to 0 can be "parent" nodes.
+//
+  for ( i = ( n / 2 ) - 1; 0 <= i; i-- )
+  {
+//
+//  Copy the value out of the parent node.
+//  Position IFREE is now "open".
+//
+    key = indx[i];
+    ifree = i;
+
+    for ( ; ; )
+    {
+//
+//  Positions 2*IFREE+1 and 2*IFREE+2 are the descendants of position
+//  IFREE.  (One or both may not exist because they exceed N-1.)
+//
+      m = 2 * ifree + 1;
+//
+//  Does the first position exist?
+//
+      if ( n - 1 < m )
+      {
+        break;
+      }
+//
+//  Does the second position exist?
+//
+      if ( m + 1 <= n - 1 )
+      {
+//
+//  If both positions exist, take the larger of the two values,
+//  and update M if necessary.
+//
+        if ( a[indx[m]] < a[indx[m+1]] )
+        {
+          m = m + 1;
+        }
+      }
+//
+//  If the large descendant is larger than KEY, move it up,
+//  and update IFREE, the location of the free position, and
+//  consider the descendants of THIS position.
+//
+      if ( a[indx[m]] <= a[key] )
+      {
+        break;
+      }
+
+      indx[ifree] = indx[m];
+      ifree = m;
+    }
+//
+//  Once there is no more shifting to do, KEY moves into the free spot IFREE.
+//
+    indx[ifree] = key;
+  }
+
+  return;
+}
+//****************************************************************************80
+
+int r8vec_indexed_heap_d_extract ( int *n, double a[], int indx[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_INDEXED_HEAP_D_EXTRACT: extract from heap descending indexed R8VEC.
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//    An indexed R8VEC is an R8VEC of data values, and an R8VEC of N indices,
+//    each referencing an entry of the data vector.
+//
+//    The routine finds the maximum value in the heap, returns that value to the
+//    user, deletes that value from the heap, and restores the heap to its
+//    proper form.
+//
+//    Note that the argument N must be a variable, which will be decremented
+//    before return, and that INDX will hold one less value on output than it
+//    held on input.
+//
+//    This is one of three functions needed to model a priority queue.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    18 August 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Thomas Cormen, Charles Leiserson, Ronald Rivest,
+//    Introduction to Algorithms,
+//    MIT Press, 2001,
+//    ISBN: 0262032937,
+//    LC: QA76.C662.
+//
+//  Parameters:
+//
+//    Input/output, int *N, the number of items in the index vector.
+//
+//    Input, double A[*], the data vector.
+//
+//    Input/output, int INDX[N], the index vector.
+//
+//    Output, int R8VEC_INDEXED_HEAP_D_EXTRACT, the index in A of the item of
+//    maximum value, which has now been removed from the heap.
+//
+{
+  int indx_extract;
+
+  if ( *n < 1 )
+  {
+    std::cerr << "\n";
+    std::cerr << "R8VEC_INDEXED_HEAP_D_EXTRACT - Fatal error!\n";
+    std::cerr << "  The heap is empty.\n";
+    std::exit ( 1 );
+  }
+//
+//  Get the index of the maximum value.
+//
+  indx_extract = indx[0];
+
+  if ( *n == 1 )
+  {
+    *n = 0;
+    return indx_extract;
+  }
+//
+//  Shift the last index down.
+//
+  indx[0] = indx[*n-1];
+//
+//  Restore the heap structure.
+//
+  *n = *n - 1;
+  webbur::r8vec_indexed_heap_d ( *n, a, indx );
+
+  return indx_extract;
+}
+//****************************************************************************80
+
+void r8vec_indexed_heap_d_insert ( int *n, double a[], int indx[],
+  int indx_insert )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_INDEXED_HEAP_D_INSERT: insert value into heap descending indexed R8VEC.
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//    An indexed R8VEC is an R8VEC of data values, and an R8VEC of N indices,
+//    each referencing an entry of the data vector.
+//
+//    Note that the argument N must be a variable, and will be incremented before
+//    return, and that INDX must be able to hold one more entry on output than
+//    it held on input.
+//
+//    This is one of three functions needed to model a priority queue.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    18 August 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Thomas Cormen, Charles Leiserson, Ronald Rivest,
+//    Introduction to Algorithms,
+//    MIT Press, 2001,
+//    ISBN: 0262032937,
+//    LC: QA76.C662.
+//
+//  Parameters:
+//
+//    Input/output, int *N, the number of items in the index vector.
+//
+//    Input, double A[*], the data vector.
+//
+//    Input/output, int INDX[N], the index vector.
+//
+//    Input, int INDX_INSERT, the index in A of the value
+//    to be inserted into the heap.
+//
+{
+  int i;
+  int parent;
+
+  *n = *n + 1;
+  i = *n - 1;
+
+  while ( 0 < i )
+  {
+    parent = ( i - 1 ) / 2;
+
+    if ( a[indx_insert] <= a[indx[parent]] )
+    {
+      break;
+    }
+
+    indx[i] = indx[parent];
+    i = parent;
+  }
+
+  indx[i] = indx_insert;
+
+  return;
+}
+//****************************************************************************80
+
+int r8vec_indexed_heap_d_max ( int n, double a[], int indx[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_INDEXED_HEAP_D_MAX: maximum value in heap descending indexed R8VEC.
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//    An indexed R8VEC is an R8VEC of data values, and an R8VEC of N indices,
+//    each referencing an entry of the data vector.
+//
+//    This is one of three functions needed to model a priority queue.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    18 August 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Thomas Cormen, Charles Leiserson, Ronald Rivest,
+//    Introduction to Algorithms,
+//    MIT Press, 2001,
+//    ISBN: 0262032937,
+//    LC: QA76.C662.
+//
+//  Parameters:
+//
+//    Input, int N, the number of items in the index vector.
+//
+//    Input, double A[*], the data vector.
+//
+//    Input, int INDX[N], the index vector.
+//
+//    Output, int R8VEC_INDEXED_HEAP_D_MAX, the index in A of the maximum value
+//    in the heap.
+//
+{
+  int indx_max;
+
+  indx_max = indx[0];
+
+  return indx_max;
+}
+//****************************************************************************80
+
+double *r8vec_legendre_new ( int n, double a_first, double a_last )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_LEGENDRE_NEW creates a vector of Chebyshev spaced values.
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    17 June 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the vector.
+//
+//    Input, double A_FIRST, A_LAST, the first and last entries.
+//
+//    Output, double R8VEC_LEGENDRE_NEW[N], a vector of Legendre spaced data.
+//
+{
+  double *a;
+  int i;
+
+  a = webbur::legendre_zeros ( n );
+
+  for ( i = 0; i < n; i++ )
+  {
+    a[i] = ( ( 1.0 - a[i] ) * a_first
+           + ( 1.0 + a[i] ) * a_last )
+           /   2.0;
+  }
+  return a;
+}
+//****************************************************************************80
+
+double *r8vec_linspace_new ( int n, double a_first, double a_last )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_LINSPACE_NEW creates a vector of linearly spaced values.
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    14 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the vector.
+//
+//    Input, double A_FIRST, A_LAST, the first and last entries.
+//
+//    Output, double R8VEC_LINSPACE_NEW[N], a vector of linearly spaced data.
+//
+{
+  double *a;
+  int i;
+
+  a = new double[n];
+
+  if ( n == 1 )
+  {
+    a[0] = ( a_first + a_last ) / 2.0;
+  }
+  else
+  {
+    for ( i = 0; i < n; i++ )
+    {
+      a[i] = ( ( double ) ( n - 1 - i ) * a_first
+             + ( double ) (         i ) * a_last )
+             / ( double ) ( n - 1     );
+    }
+  }
+  return a;
+}
+//****************************************************************************80
+
+double r8vec_min ( int n, double r8vec[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_MIN returns the value of the minimum element in an R8VEC.
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    02 July 2005
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the array.
+//
+//    Input, double R8VEC[N], the array to be checked.
+//
+//    Output, double R8VEC_MIN, the value of the minimum element.
+//
+{
+  int i;
+  double value;
+
+  value = r8vec[0];
+
+  for ( i = 1; i < n; i++ )
+  {
+    if ( r8vec[i] < value )
+    {
+      value = r8vec[i];
+    }
+  }
+  return value;
+}
+//****************************************************************************80
+
+double r8vec_min_pos ( int n, double a[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_MIN_POS returns the minimum positive value of an R8VEC.
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    08 November 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries.
+//
+//    Input, double A[N], the array.
+//
+//    Output, double R8VEC_MIN_POS, the smallest positive entry,
+//    or R8_HUGE if no entry is positive.
+//
+{
+  int i;
+  double r8_huge = 1.0E+30;
+  double value;
+
+  value = r8_huge;
+
+  for ( i = 0; i < n; i++ )
+  {
+    if ( 0.0 < a[i] )
+    {
+      if ( a[i] < value )
+      {
+        value = a[i];
+      }
+    }
+  }
+  return value;
+}
+//****************************************************************************80
+
+void r8vec_print ( int n, double a[], std::string title )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_PRINT prints an R8VEC.
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    16 August 2004
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of components of the vector.
+//
+//    Input, double A[N], the vector to be printed.
+//
+//    Input, string TITLE, a title.
+//
+{
+  int i;
+
+  std::cout << "\n";
+  std::cout << title << "\n";
+  std::cout << "\n";
+  for ( i = 0; i < n; i++ )
+  {
+    std::cout << "  " << std::setw(8)  << i
+              << ": " << std::setw(14) << a[i]  << "\n";
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void r8vec_scale ( double s, int n, double a[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_SCALE multiples an R8VEC by a scale factor.
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    22 September 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, double S, the scale factor.
+//
+//    Input, int N, the number of entries in the vectors.
+//
+//    Input/output, double A[N], the vector to be scaled.
+//    On output, A[] = S * A[].
+//
+{
+  int i;
+
+  for ( i = 0; i < n; i++ )
+  {
+    a[i] = s * a[i];
+  }
+  return;
+}
+//****************************************************************************80
+
+void r8vec_sort_heap_index_a ( int n, double a[], int indx[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_SORT_HEAP_INDEX_A does an indexed heap ascending sort of an R8VEC
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//    The sorting is not actually carried out.  Rather an index array is
+//    created which defines the sorting.  This array may be used to sort
+//    or index the array, or to sort or index related arrays keyed on the
+//    original array.
+//
+//    Once the index array is computed, the sorting can be carried out
+//    "implicitly:
+//
+//      a(indx(*))
+//
+//    or explicitly, by the call
+//
+//      r8vec_permute ( n, indx, 0, a )
+//
+//    after which a(*) is sorted.
+//
+//    Note that the index vector is 0-based.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    02 October 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the array.
+//
+//    Input, double A[N], an array to be index-sorted.
+//
+//    Output, int INDX[N], contains the sort index.  The
+//    I-th element of the sorted array is A(INDX(I)).
+//
+{
+  double aval;
+  int i;
+  int indxt;
+  int ir;
+  int j;
+  int l;
+
+  if ( n < 1 )
+  {
+    return;
+  }
+
+  for ( i = 0; i < n; i++ )
+  {
+    indx[i] = i;
+  }
+
+  if ( n == 1 )
+  {
+    return;
+  }
+
+  l = n / 2 + 1;
+  ir = n;
+
+  for ( ; ; )
+  {
+    if ( 1 < l )
+    {
+      l = l - 1;
+      indxt = indx[l-1];
+      aval = a[indxt];
+    }
+    else
+    {
+      indxt = indx[ir-1];
+      aval = a[indxt];
+      indx[ir-1] = indx[0];
+      ir = ir - 1;
+
+      if ( ir == 1 )
+      {
+        indx[0] = indxt;
+        break;
+      }
+    }
+
+    i = l;
+    j = l + l;
+
+    while ( j <= ir )
+    {
+      if ( j < ir )
+      {
+        if ( a[indx[j-1]] < a[indx[j]] )
+        {
+          j = j + 1;
+        }
+      }
+
+      if ( aval < a[indx[j-1]] )
+      {
+        indx[i-1] = indx[j-1];
+        i = j;
+        j = j + j;
+      }
+      else
+      {
+        j = ir + 1;
+      }
+    }
+    indx[i-1] = indxt;
+  }
+
+  return;
+}
+//****************************************************************************80
+
+int *r8vec_sort_heap_index_a_new ( int n, double a[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_SORT_HEAP_INDEX_A_NEW does an indexed heap ascending sort of an R8VEC
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//    The sorting is not actually carried out.  Rather an index array is
+//    created which defines the sorting.  This array may be used to sort
+//    or index the array, or to sort or index related arrays keyed on the
+//    original array.
+//
+//    Once the index array is computed, the sorting can be carried out
+//    "implicitly:
+//
+//      a(indx(*))
+//
+//    or explicitly, by the call
+//
+//      r8vec_permute ( n, indx, 0, a )
+//
+//    after which a(*) is sorted.
+//
+//    Note that the index vector is 0-based.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    02 October 2010
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the array.
+//
+//    Input, double A[N], an array to be index-sorted.
+//
+//    Output, int R8VEC_SORT_HEAP_INDEX_A_NEW[N], contains the sort index.  The
+//    I-th element of the sorted array is A(INDX(I)).
+//
+{
+  double aval;
+  int i;
+  int *indx;
+  int indxt;
+  int ir;
+  int j;
+  int l;
+
+  if ( n < 1 )
+  {
+    return NULL;
+  }
+
+  indx = new int[n];
+
+  for ( i = 0; i < n; i++ )
+  {
+    indx[i] = i;
+  }
+
+  if ( n == 1 )
+  {
+    return indx;
+  }
+
+  l = n / 2 + 1;
+  ir = n;
+
+  for ( ; ; )
+  {
+    if ( 1 < l )
+    {
+      l = l - 1;
+      indxt = indx[l-1];
+      aval = a[indxt];
+    }
+    else
+    {
+      indxt = indx[ir-1];
+      aval = a[indxt];
+      indx[ir-1] = indx[0];
+      ir = ir - 1;
+
+      if ( ir == 1 )
+      {
+        indx[0] = indxt;
+        break;
+      }
+    }
+
+    i = l;
+    j = l + l;
+
+    while ( j <= ir )
+    {
+      if ( j < ir )
+      {
+        if ( a[indx[j-1]] < a[indx[j]] )
+        {
+          j = j + 1;
+        }
+      }
+
+      if ( aval < a[indx[j-1]] )
+      {
+        indx[i-1] = indx[j-1];
+        i = j;
+        j = j + j;
+      }
+      else
+      {
+        j = ir + 1;
+      }
+    }
+    indx[i-1] = indxt;
+  }
+
+  return indx;
+}
+//****************************************************************************80
+
+void r8vec_stutter ( int n, double a[], int m, double am[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_STUTTER makes a "stuttering" copy of an R8VEC.
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//    Applying a stuttering factor M of 3, the vector A = ( 1, 5, 8 ) becomes
+//    AM = ( 1, 1, 1, 5, 5, 5, 8, 8, 8 ).
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    28 March 2011
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the size of the input vector.
+//
+//    Input, double A[N], the vector.
+//
+//    Input, int M, the "stuttering factor".
+//
+//    Output, double AM[M*N], the stuttering vector.
+//
+{
+  int i;
+  int j;
+  int k;
+
+  k = 0;
+  for ( i = 0; i < n; i++ )
+  {
+    for ( j = 0; j < m; j++ )
+    {
+      am[k] = a[i];
+      k = k + 1;
+    }
+  }
+  return;
+}
+//****************************************************************************80
+
+double r8vec_sum ( int n, double a[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_SUM returns the sum of an R8VEC.
+//
+//  Discussion:
+//
+//    An R8VEC is a double precision vector.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    15 October 2004
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the vector.
+//
+//    Input, double A[N], the vector.
+//
+//    Output, double R8VEC_SUM, the sum of the vector.
+//
+{
+  int i;
+  double value;
+
+  value = 0.0;
+  for ( i = 0; i < n; i++ )
+  {
+    value = value + a[i];
+  }
+
+  return value;
+}
+//****************************************************************************80
+
+void r8vec_uniform_01 ( int n, int *seed, double r[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_UNIFORM_01 returns a unit pseudorandom R8VEC.
+//
+//  Discussion:
+//
+//    This routine implements the recursion
+//
+//      seed = ( 16807 * seed ) mod ( 2^31 - 1 )
+//      u = seed / ( 2^31 - 1 )
+//
+//    The integer arithmetic never requires more than 32 bits,
+//    including a sign bit.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    19 August 2004
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Paul Bratley, Bennett Fox, Linus Schrage,
+//    A Guide to Simulation,
+//    Second Edition,
+//    Springer, 1987,
+//    ISBN: 0387964673,
+//    LC: QA76.9.C65.B73.
+//
+//    Bennett Fox,
+//    Algorithm 647:
+//    Implementation and Relative Efficiency of Quasirandom
+//    Sequence Generators,
+//    ACM Transactions on Mathematical Software,
+//    Volume 12, Number 4, December 1986, pages 362-376.
+//
+//    Pierre L'Ecuyer,
+//    Random Number Generation,
+//    in Handbook of Simulation,
+//    edited by Jerry Banks,
+//    Wiley, 1998,
+//    ISBN: 0471134031,
+//    LC: T57.62.H37.
+//
+//    Peter Lewis, Allen Goodman, James Miller,
+//    A Pseudo-Random Number Generator for the System/360,
+//    IBM Systems Journal,
+//    Volume 8, Number 2, 1969, pages 136-143.
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the vector.
+//
+//    Input/output, int *SEED, a seed for the random number generator.
+//
+//    Output, double R[N], the vector of pseudorandom values.
+//
+{
+  int i;
+  int i4_huge = 2147483647;
+  int k;
+
+  if ( *seed == 0 )
+  {
+    std::cerr << "\n";
+    std::cerr << "R8VEC_UNIFORM_01 - Fatal error!\n";
+    std::cerr << "  Input value of SEED = 0.\n";
+    std::exit ( 1 );
+  }
+
+  for ( i = 0; i < n; i++ )
+  {
+    k = *seed / 127773;
+
+    *seed = 16807 * ( *seed - k * 127773 ) - k * 2836;
+
+    if ( *seed < 0 )
+    {
+      *seed = *seed + i4_huge;
+    }
+
+    r[i] = ( double ) ( *seed ) * 4.656612875E-10;
+  }
+
+  return;
+}
+//****************************************************************************80
+
+double *r8vec_uniform_01_new ( int n, int *seed )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_UNIFORM_01_NEW returns a new unit pseudorandom R8VEC.
+//
+//  Discussion:
+//
+//    This routine implements the recursion
+//
+//      seed = ( 16807 * seed ) mod ( 2^31 - 1 )
+//      u = seed / ( 2^31 - 1 )
+//
+//    The integer arithmetic never requires more than 32 bits,
+//    including a sign bit.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    19 August 2004
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Reference:
+//
+//    Paul Bratley, Bennett Fox, Linus Schrage,
+//    A Guide to Simulation,
+//    Second Edition,
+//    Springer, 1987,
+//    ISBN: 0387964673,
+//    LC: QA76.9.C65.B73.
+//
+//    Bennett Fox,
+//    Algorithm 647:
+//    Implementation and Relative Efficiency of Quasirandom
+//    Sequence Generators,
+//    ACM Transactions on Mathematical Software,
+//    Volume 12, Number 4, December 1986, pages 362-376.
+//
+//    Pierre L'Ecuyer,
+//    Random Number Generation,
+//    in Handbook of Simulation,
+//    edited by Jerry Banks,
+//    Wiley, 1998,
+//    ISBN: 0471134031,
+//    LC: T57.62.H37.
+//
+//    Peter Lewis, Allen Goodman, James Miller,
+//    A Pseudo-Random Number Generator for the System/360,
+//    IBM Systems Journal,
+//    Volume 8, Number 2, 1969, pages 136-143.
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the vector.
+//
+//    Input/output, int *SEED, a seed for the random number generator.
+//
+//    Output, double R8VEC_UNIFORM_01_NEW[N], the vector of pseudorandom values.
+//
+{
+  int i;
+  int i4_huge = 2147483647;
+  int k;
+  double *r;
+
+  if ( *seed == 0 )
+  {
+    std::cerr << "\n";
+    std::cerr << "R8VEC_UNIFORM_01_NEW - Fatal error!\n";
+    std::cerr << "  Input value of SEED = 0.\n";
+    std::exit ( 1 );
+  }
+
+  r = new double[n];
+
+  for ( i = 0; i < n; i++ )
+  {
+    k = *seed / 127773;
+
+    *seed = 16807 * ( *seed - k * 127773 ) - k * 2836;
+
+    if ( *seed < 0 )
+    {
+      *seed = *seed + i4_huge;
+    }
+
+    r[i] = ( double ) ( *seed ) * 4.656612875E-10;
+  }
+
+  return r;
+}
+//****************************************************************************80
+
+void r8vec_zero ( int n, double a[] )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    R8VEC_ZERO zeroes an R8VEC.
+//
+//  Discussion:
+//
+//    An R8VEC is a vector of R8's.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    03 July 2005
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int N, the number of entries in the vector.
+//
+//    Output, double A[N], a vector of zeroes.
+//
+{
+  int i;
+
+  for ( i = 0; i < n; i++ )
+  {
+    a[i] = 0.0;
+  }
+  return;
+}
+//****************************************************************************80
+
+void sort_heap_external ( int n, int *indx, int *i, int *j, int isgn )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    SORT_HEAP_EXTERNAL externally sorts a list of items into ascending order.
+//
+//  Discussion:
+//
+//    The actual list is not passed to the routine.  Hence it may
+//    consist of integers, reals, numbers, names, etc.  The user,
+//    after each return from the routine, will be asked to compare or
+//    interchange two items.
+//
+//    The current version of this code mimics the FORTRAN version,
+//    so the values of I and J, in particular, are FORTRAN indices.
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    05 February 2004
+//
+//  Author:
+//
+//    Original FORTRAN77 version by Albert Nijenhuis, Herbert Wilf.
+//    C++ version by John Burkardt
+//
+//  Reference:
+//
+//    Albert Nijenhuis, Herbert Wilf,
+//    Combinatorial Algorithms,
+//    Academic Press, 1978, second edition,
+//    ISBN 0-12-519260-6.
+//
+//  Parameters:
+//
+//    Input, int N, the length of the input list.
+//
+//    Input/output, int *INDX.
+//    The user must set INDX to 0 before the first call.
+//    On return,
+//      if INDX is greater than 0, the user must interchange
+//      items I and J and recall the routine.
+//      If INDX is less than 0, the user is to compare items I
+//      and J and return in ISGN a negative value if I is to
+//      precede J, and a positive value otherwise.
+//      If INDX is 0, the sorting is done.
+//
+//    Output, int *I, *J.  On return with INDX positive,
+//    elements I and J of the user's list should be
+//    interchanged.  On return with INDX negative, elements I
+//    and J are to be compared by the user.
+//
+//    Input, int ISGN. On return with INDX negative, the
+//    user should compare elements I and J of the list.  If
+//    item I is to precede item J, set ISGN negative,
+//    otherwise set ISGN positive.
+//
+{
+  static int i_save = 0;
+  static int j_save = 0;
+  static int k = 0;
+  static int k1 = 0;
+  static int n1 = 0;
+//
+//  INDX = 0: This is the first call.
+//
+  if ( *indx == 0 )
+  {
+
+    i_save = 0;
+    j_save = 0;
+    k = n / 2;
+    k1 = k;
+    n1 = n;
+  }
+//
+//  INDX < 0: The user is returning the results of a comparison.
+//
+  else if ( *indx < 0 )
+  {
+    if ( *indx == -2 )
+    {
+      if ( isgn < 0 )
+      {
+        i_save = i_save + 1;
+      }
+      j_save = k1;
+      k1 = i_save;
+      *indx = -1;
+      *i = i_save;
+      *j = j_save;
+      return;
+    }
+
+    if ( 0 < isgn )
+    {
+      *indx = 2;
+      *i = i_save;
+      *j = j_save;
+      return;
+    }
+
+    if ( k <= 1 )
+    {
+      if ( n1 == 1 )
+      {
+        i_save = 0;
+        j_save = 0;
+        *indx = 0;
+      }
+      else
+      {
+        i_save = n1;
+        j_save = 1;
+        n1 = n1 - 1;
+        *indx = 1;
+      }
+      *i = i_save;
+      *j = j_save;
+      return;
+    }
+    k = k - 1;
+    k1 = k;
+  }
+//
+//  0 < INDX: the user was asked to make an interchange.
+//
+  else if ( *indx == 1 )
+  {
+    k1 = k;
+  }
+
+  for ( ; ; )
+  {
+
+    i_save = 2 * k1;
+
+    if ( i_save == n1 )
+    {
+      j_save = k1;
+      k1 = i_save;
+      *indx = -1;
+      *i = i_save;
+      *j = j_save;
+      return;
+    }
+    else if ( i_save <= n1 )
+    {
+      j_save = i_save + 1;
+      *indx = -2;
+      *i = i_save;
+      *j = j_save;
+      return;
+    }
+
+    if ( k <= 1 )
+    {
+      break;
+    }
+
+    k = k - 1;
+    k1 = k;
+  }
+
+  if ( n1 == 1 )
+  {
+    i_save = 0;
+    j_save = 0;
+    *indx = 0;
+    *i = i_save;
+    *j = j_save;
+  }
+  else
+  {
+    i_save = n1;
+    j_save = 1;
+    n1 = n1 - 1;
+    *indx = 1;
+    *i = i_save;
+    *j = j_save;
+  }
+
+  return;
+}
+//****************************************************************************80
+
+void timestamp ( )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    TIMESTAMP prints the current YMDHMS date as a time stamp.
+//
+//  Example:
+//
+//    31 May 2001 09:45:54 AM
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    08 July 2009
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    None
+//
+{
+# define TIME_SIZE 40
+
+  static char time_buffer[TIME_SIZE];
+  const struct std::tm *tm_ptr;
+  size_t len;
+  std::time_t now;
+
+  now = std::time ( NULL );
+  tm_ptr = std::localtime ( &now );
+
+  len = std::strftime ( time_buffer, TIME_SIZE, "%d %B %Y %I:%M:%S %p", tm_ptr );
+
+  std::cout << time_buffer << "\n";
+
+  return;
+# undef TIME_SIZE
+}
+//****************************************************************************80
+
+void vec_colex_next3 ( int dim_num, int base[], int a[], bool *more )
+
+//****************************************************************************80
+//
+//  Purpose:
+//
+//    VEC_COLEX_NEXT3 generates vectors in colex order.
+//
+//  Discussion:
+//
+//    The vectors are produced in colexical order, starting with
+//
+//    (1,        1,        ...,1),
+//    (2,        1,        ...,1),
+//     ...
+//    (BASE(1),  1,        ...,1)
+//
+//    (1,        2,        ...,1)
+//    (2,        2,        ...,1)
+//    ...
+//    (BASE(1),  2,        ...,1)
+//
+//    (1,        3,        ...,1)
+//    (2,        3,        ...,1)
+//    ...
+//    (BASE(1),  BASE(2), ...,BASE(DIM_NUM)).
+//
+//  Example:
+//
+//    DIM_NUM = 2,
+//    BASE = { 3, 3 }
+//
+//    1   1
+//    2   1
+//    3   1
+//    1   2
+//    2   2
+//    3   2
+//    1   3
+//    2   3
+//    3   3
+//
+//  Licensing:
+//
+//    This code is distributed under the GNU LGPL license.
+//
+//  Modified:
+//
+//    19 August 2008
+//
+//  Author:
+//
+//    John Burkardt
+//
+//  Parameters:
+//
+//    Input, int DIM_NUM, the spatial dimension.
+//
+//    Input, int BASE[DIM_NUM], the bases to be used in each dimension.
+//    In dimension I, entries will range from 1 to BASE[I].
+//
+//    Output, int A[DIM_NUM], the next vector.
+//
+//    Input/output, bool *MORE.  Set this variable false before
+//    the first call.  On return, MORE is TRUE if another vector has
+//    been computed.  If MORE is returned FALSE, ignore the output
+//    vector and stop calling the routine.
+//
+{
+  int i;
+
+  if ( !( *more ) )
+  {
+    for ( i = 0; i < dim_num; i++ )
+    {
+      a[i] = 1;
+    }
+    *more = true;
+  }
+  else
+  {
+    for ( i = 0; i < dim_num; i++ )
+    {
+      a[i] = a[i] + 1;
+
+      if ( a[i] <= base[i] )
+      {
+        return;
+      }
+      a[i] = 1;
+    }
+    *more = false;
+  }
+
+  return;
+}
+
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/packages/queso/src/misc/src/1DQuadrature.C
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/packages/queso/src/misc/src/1DQuadrature.C	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/packages/queso/src/misc/src/1DQuadrature.C	(revision 27955)
@@ -0,0 +1,755 @@
+//-----------------------------------------------------------------------bl-
+//--------------------------------------------------------------------------
+//
+// QUESO - a library to support the Quantification of Uncertainty
+// for Estimation, Simulation and Optimization
+//
+// Copyright (C) 2008-2015 The PECOS Development Team
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the Version 2.1 GNU Lesser General
+// Public License as published by the Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc. 51 Franklin Street, Fifth Floor,
+// Boston, MA  02110-1301  USA
+//
+//-----------------------------------------------------------------------el-
+
+#include <queso/1DQuadrature.h>
+
+namespace QUESO {
+
+//*****************************************************
+// Base 1D quadrature class
+//*****************************************************
+Base1DQuadrature::Base1DQuadrature(
+  double minDomainValue,
+  double maxDomainValue,
+  unsigned int order)
+  :
+  m_minDomainValue(minDomainValue),
+  m_maxDomainValue(maxDomainValue),
+  m_order         (order),
+  m_positions     (0),
+  m_weights       (0)
+{
+  UQ_FATAL_TEST_MACRO(m_minDomainValue >= m_maxDomainValue,
+                      UQ_UNAVAILABLE_RANK,
+                      "Base1DQuadrature::constructor()",
+                      "min >= max");
+  //UQ_FATAL_TEST_MACRO(order == 0, // eep2011
+  //                    UQ_UNAVAILABLE_RANK,
+  //                    "Base1DQuadrature::constructor()",
+  //                    "order = 0");
+}
+
+Base1DQuadrature::~Base1DQuadrature()
+{
+}
+
+double
+Base1DQuadrature::minDomainValue() const
+{
+  return m_minDomainValue;
+}
+
+double
+Base1DQuadrature::maxDomainValue() const
+{
+  return m_maxDomainValue;
+}
+
+unsigned int
+Base1DQuadrature::order() const
+{
+  return m_order;
+}
+
+const std::vector<double>&
+Base1DQuadrature::positions() const
+{
+  UQ_FATAL_TEST_MACRO(m_positions.size() == 0,
+                      UQ_UNAVAILABLE_RANK,
+                      "Base1DQuadrature::positions()",
+                      "size = 0");
+  return m_positions;
+}
+
+const std::vector<double>&
+Base1DQuadrature::weights() const
+{
+  UQ_FATAL_TEST_MACRO(m_weights.size() == 0,
+                      UQ_UNAVAILABLE_RANK,
+                      "Base1DQuadrature::weights()",
+                      "size = 0");
+  return m_weights;
+}
+
+//*****************************************************
+// Generic 1D quadrature class
+//*****************************************************
+Generic1DQuadrature::Generic1DQuadrature(
+  double minDomainValue,
+  double maxDomainValue,
+  const std::vector<double>& positions,
+  const std::vector<double>& weights)
+  :
+  Base1DQuadrature(minDomainValue,maxDomainValue,positions.size()-1)
+{
+  m_positions = positions;
+  m_weights   = weights;
+
+  UQ_FATAL_TEST_MACRO(m_positions.size() == 0,
+                      UQ_UNAVAILABLE_RANK,
+                      "Generic1DQuadrature::constructor()",
+                      "invalid positions");
+
+  UQ_FATAL_TEST_MACRO(m_positions.size() != m_weights.size(),
+                      UQ_UNAVAILABLE_RANK,
+                      "Generic1DQuadrature::constructor()",
+                      "inconsistent positions and weight");
+}
+
+Generic1DQuadrature::~Generic1DQuadrature()
+{
+}
+
+void
+Generic1DQuadrature::dumbRoutine() const
+{
+  return;
+}
+
+//*****************************************************
+// UniformLegendre 1D quadrature class
+//*****************************************************
+UniformLegendre1DQuadrature::UniformLegendre1DQuadrature(
+  double       minDomainValue,
+  double       maxDomainValue,
+  unsigned int order,
+  bool         densityIsNormalized)
+  :
+  Base1DQuadrature(minDomainValue,maxDomainValue,order)
+{
+  m_positions.resize(m_order+1,0.); // Yes, '+1'
+  m_weights.resize  (m_order+1,0.); // Yes, '+1'
+
+  // http://www.holoborodko.com/pavel/?page_id=679
+  switch (m_order) { // eep2011
+    case 1:
+      m_weights  [0] =  1.;
+      m_weights  [1] =  1.;
+
+      m_positions[0] = -1./sqrt(3.);
+      m_positions[1] =  1./sqrt(3.);
+    break;
+
+    case 2:
+      m_weights  [0] =  5./9.;
+      m_weights  [1] =  8./9.;
+      m_weights  [2] =  5./9.;
+
+      m_positions[0] = -sqrt(.6);
+      m_positions[1] =  0.;
+      m_positions[2] =  sqrt(.6);
+    break;
+
+    case 3:
+      m_weights  [0] =  0.5 - sqrt(30.)/36.;
+      m_weights  [1] =  0.5 + sqrt(30.)/36.;
+      m_weights  [2] =  0.5 + sqrt(30.)/36.;
+      m_weights  [3] =  0.5 - sqrt(30.)/36.;
+
+      m_positions[0] = -sqrt(3.+2.*sqrt(1.2))/sqrt(7.);
+      m_positions[1] = -sqrt(3.-2.*sqrt(1.2))/sqrt(7.);
+      m_positions[2] =  sqrt(3.-2.*sqrt(1.2))/sqrt(7.);
+      m_positions[3] =  sqrt(3.+2.*sqrt(1.2))/sqrt(7.);
+    break;
+
+    case 4:
+      m_weights  [0] =  (322.-13.*sqrt(70.))/900.; // 0.236926885
+      m_weights  [1] =  (322.+13.*sqrt(70.))/900.; // 0.478628670
+      m_weights  [2] =  128./225.;                 // 0.568888889
+      m_weights  [3] =  (322.+13.*sqrt(70.))/900.;
+      m_weights  [4] =  (322.-13.*sqrt(70.))/900.;
+
+      m_positions[0] = -sqrt(5.+2.*sqrt(10./7.))/3.;
+      m_positions[1] = -sqrt(5.-2.*sqrt(10./7.))/3.;
+      m_positions[2] =  0.;
+      m_positions[3] =  sqrt(5.-2.*sqrt(10./7.))/3.;
+      m_positions[4] =  sqrt(5.+2.*sqrt(10./7.))/3.;
+    break;
+
+    case 5:
+      m_weights  [0] =  0.1713244923791703450402961;
+      m_weights  [1] =  0.3607615730481386075698335;
+      m_weights  [2] =  0.4679139345726910473898703;
+      m_weights  [3] =  0.4679139345726910473898703;
+      m_weights  [4] =  0.3607615730481386075698335;
+      m_weights  [5] =  0.1713244923791703450402961;
+
+      m_positions[0] = -0.9324695142031520278123016;
+      m_positions[1] = -0.6612093864662645136613996;
+      m_positions[2] = -0.2386191860831969086305017;
+      m_positions[3] =  0.2386191860831969086305017;
+      m_positions[4] =  0.6612093864662645136613996;
+      m_positions[5] =  0.9324695142031520278123016;
+    break;
+
+    case 6:
+      m_weights  [0] =  0.1294849661688696932706114;
+      m_weights  [1] =  0.2797053914892766679014678;
+      m_weights  [2] =  0.3818300505051189449503698;
+      m_weights  [3] =  0.4179591836734693877551020;
+      m_weights  [4] =  0.3818300505051189449503698;
+      m_weights  [5] =  0.2797053914892766679014678;
+      m_weights  [6] =  0.1294849661688696932706114;
+
+      m_positions[0] = -0.9491079123427585245261897;
+      m_positions[1] = -0.7415311855993944398638648;
+      m_positions[2] = -0.4058451513773971669066064;
+      m_positions[3] =  0.;
+      m_positions[4] =  0.4058451513773971669066064;
+      m_positions[5] =  0.7415311855993944398638648;
+      m_positions[6] =  0.9491079123427585245261897;
+    break;
+
+    case 7:
+      m_weights  [0] =  0.10122854;
+      m_weights  [1] =  0.22238103;
+      m_weights  [2] =  0.31370665;
+      m_weights  [3] =  0.36268378;
+      m_weights  [4] =  0.36268378;
+      m_weights  [5] =  0.31370665;
+      m_weights  [6] =  0.22238103;
+      m_weights  [7] =  0.10122854;
+
+      m_positions[0] = -0.96028986;
+      m_positions[1] = -0.79666648;
+      m_positions[2] = -0.52553241;
+      m_positions[3] = -0.18343464;
+      m_positions[4] =  0.18343464;
+      m_positions[5] =  0.52553241;
+      m_positions[6] =  0.79666648;
+      m_positions[7] =  0.96028986;
+    break;
+
+    case 10:
+      m_weights  [ 0] =  0.0556685671161736664827537;
+      m_weights  [ 1] =  0.1255803694649046246346943;
+      m_weights  [ 2] =  0.1862902109277342514260976;
+      m_weights  [ 3] =  0.2331937645919904799185237;
+      m_weights  [ 4] =  0.2628045445102466621806889;
+      m_weights  [ 5] =  0.2729250867779006307144835;
+      m_weights  [ 6] =  0.2628045445102466621806889;
+      m_weights  [ 7] =  0.2331937645919904799185237;
+      m_weights  [ 8] =  0.1862902109277342514260976;
+      m_weights  [ 9] =  0.1255803694649046246346943;
+      m_weights  [10] =  0.0556685671161736664827537;
+
+      m_positions[ 0] = -0.9782286581460569928039380;
+      m_positions[ 1] = -0.8870625997680952990751578;
+      m_positions[ 2] = -0.7301520055740493240934163;
+      m_positions[ 3] = -0.5190961292068118159257257;
+      m_positions[ 4] = -0.2695431559523449723315320;
+      m_positions[ 5] =  0.;
+      m_positions[ 6] =  0.2695431559523449723315320;
+      m_positions[ 7] =  0.5190961292068118159257257;
+      m_positions[ 8] =  0.7301520055740493240934163;
+      m_positions[ 9] =  0.8870625997680952990751578;
+      m_positions[10] =  0.9782286581460569928039380;
+    break;
+
+    case 11:
+      m_weights  [ 0] =  0.0471753363865118271946160;
+      m_weights  [ 1] =  0.1069393259953184309602547;
+      m_weights  [ 2] =  0.1600783285433462263346525;
+      m_weights  [ 3] =  0.2031674267230659217490645;
+      m_weights  [ 4] =  0.2334925365383548087608499;
+      m_weights  [ 5] =  0.2491470458134027850005624;
+      m_weights  [ 6] =  0.2491470458134027850005624;
+      m_weights  [ 7] =  0.2334925365383548087608499;
+      m_weights  [ 8] =  0.2031674267230659217490645;
+      m_weights  [ 9] =  0.1600783285433462263346525;
+      m_weights  [10] =  0.1069393259953184309602547;
+      m_weights  [11] =  0.0471753363865118271946160;
+
+      m_positions[ 0] = -0.9815606342467192506905491;
+      m_positions[ 1] = -0.9041172563704748566784659;
+      m_positions[ 2] = -0.7699026741943046870368938;
+      m_positions[ 3] = -0.5873179542866174472967024;
+      m_positions[ 4] = -0.3678314989981801937526915;
+      m_positions[ 5] = -0.1252334085114689154724414;
+      m_positions[ 6] =  0.1252334085114689154724414;
+      m_positions[ 7] =  0.3678314989981801937526915;
+      m_positions[ 8] =  0.5873179542866174472967024;
+      m_positions[ 9] =  0.7699026741943046870368938;
+      m_positions[10] =  0.9041172563704748566784659;
+      m_positions[11] =  0.9815606342467192506905491;
+    break;
+
+    case 12:
+      m_weights  [ 0] =  0.0404840047653158795200216;
+      m_weights  [ 1] =  0.0921214998377284479144218;
+      m_weights  [ 2] =  0.1388735102197872384636018;
+      m_weights  [ 3] =  0.1781459807619457382800467;
+      m_weights  [ 4] =  0.2078160475368885023125232;
+      m_weights  [ 5] =  0.2262831802628972384120902;
+      m_weights  [ 6] =  0.2325515532308739101945895;
+      m_weights  [ 7] =  0.2262831802628972384120902;
+      m_weights  [ 8] =  0.2078160475368885023125232;
+      m_weights  [ 9] =  0.1781459807619457382800467;
+      m_weights  [10] =  0.1388735102197872384636018;
+      m_weights  [11] =  0.0921214998377284479144218;
+      m_weights  [12] =  0.0404840047653158795200216;
+
+      m_positions[ 0] = -0.9841830547185881494728294;
+      m_positions[ 1] = -0.9175983992229779652065478;
+      m_positions[ 2] = -0.8015780907333099127942065;
+      m_positions[ 3] = -0.6423493394403402206439846;
+      m_positions[ 4] = -0.4484927510364468528779129;
+      m_positions[ 5] = -0.2304583159551347940655281;
+      m_positions[ 6] =  0.;
+      m_positions[ 7] =  0.2304583159551347940655281;
+      m_positions[ 8] =  0.4484927510364468528779129;
+      m_positions[ 9] =  0.6423493394403402206439846;
+      m_positions[10] =  0.8015780907333099127942065;
+      m_positions[11] =  0.9175983992229779652065478;
+      m_positions[12] =  0.9841830547185881494728294;
+    break;
+#if 0
+    case 13:
+      m_weights  [ 0] =  ;
+      m_weights  [ 1] =  ;
+      m_weights  [ 2] =  ;
+      m_weights  [ 3] =  ;
+      m_weights  [ 4] =  ;
+      m_weights  [ 5] =  ;
+      m_weights  [ 6] =  ;
+      m_weights  [ 7] =  ;
+      m_weights  [ 8] =  ;
+      m_weights  [ 9] =  ;
+      m_weights  [10] =  ;
+      m_weights  [11] =  ;
+      m_weights  [12] =  ;
+      m_weights  [13] =  ;
+
+      m_positions[ 0] = -;
+      m_positions[ 1] = -;
+      m_positions[ 2] = -;
+      m_positions[ 3] = -;
+      m_positions[ 4] = -;
+      m_positions[ 5] = -;
+      m_positions[ 6] = -;
+      m_positions[ 7] =  ;
+      m_positions[ 8] =  ;
+      m_positions[ 9] =  ;
+      m_positions[10] =  ;
+      m_positions[11] =  ;
+      m_positions[12] =  ;
+      m_positions[13] =  ;
+    break;
+#endif
+/*
+    14 ±0.1080549487073436620662447 0.2152638534631577901958764
+    ±0.3191123689278897604356718 0.2051984637212956039659241
+    ±0.5152486363581540919652907 0.1855383974779378137417166
+    ±0.6872929048116854701480198 0.1572031671581935345696019
+    ±0.8272013150697649931897947 0.1215185706879031846894148
+    ±0.9284348836635735173363911 0.0801580871597602098056333
+    ±0.9862838086968123388415973 0.0351194603317518630318329
+*/
+
+    case 16:
+      m_weights  [ 0] =  0.0241483028685479319601100;
+      m_weights  [ 1] =  0.0554595293739872011294402;
+      m_weights  [ 2] =  0.0850361483171791808835354;
+      m_weights  [ 3] =  0.1118838471934039710947884;
+      m_weights  [ 4] =  0.1351363684685254732863200;
+      m_weights  [ 5] =  0.1540457610768102880814316;
+      m_weights  [ 6] =  0.1680041021564500445099707;
+      m_weights  [ 7] =  0.1765627053669926463252710;
+      m_weights  [ 8] =  0.1794464703562065254582656;
+      m_weights  [ 9] =  0.1765627053669926463252710;
+      m_weights  [10] =  0.1680041021564500445099707;
+      m_weights  [11] =  0.1540457610768102880814316;
+      m_weights  [12] =  0.1351363684685254732863200;
+      m_weights  [13] =  0.1118838471934039710947884;
+      m_weights  [14] =  0.0850361483171791808835354;
+      m_weights  [15] =  0.0554595293739872011294402;
+      m_weights  [16] =  0.0241483028685479319601100;
+
+      m_positions[ 0] = -0.9905754753144173356754340;
+      m_positions[ 1] = -0.9506755217687677612227170;
+      m_positions[ 2] = -0.8802391537269859021229557;
+      m_positions[ 3] = -0.7815140038968014069252301;
+      m_positions[ 4] = -0.6576711592166907658503022;
+      m_positions[ 5] = -0.5126905370864769678862466;
+      m_positions[ 6] = -0.3512317634538763152971855;
+      m_positions[ 7] = -0.1784841814958478558506775;
+      m_positions[ 8] =  0.;
+      m_positions[ 9] =  0.1784841814958478558506775;
+      m_positions[10] =  0.3512317634538763152971855;
+      m_positions[11] =  0.5126905370864769678862466;
+      m_positions[12] =  0.6576711592166907658503022;
+      m_positions[13] =  0.7815140038968014069252301;
+      m_positions[14] =  0.8802391537269859021229557;
+      m_positions[15] =  0.9506755217687677612227170;
+      m_positions[16] =  0.9905754753144173356754340;
+    break;
+
+    default:
+      std::cerr << "In UniformLegendre1DQuadrature::constructor()"
+                << ": m_order = " << m_order
+                << std::endl;
+      UQ_FATAL_TEST_MACRO(true,
+                          UQ_UNAVAILABLE_RANK,
+                          "UniformLegendre1DQuadrature::constructor()",
+                          "order not supported");
+    break;
+  }
+
+  // Scale positions from the interval [-1, 1] to the interval [min,max]
+  for (unsigned int j = 0; j < m_positions.size(); ++j) {
+    m_positions[j] = .5*(m_maxDomainValue - m_minDomainValue)*m_positions[j] + .5*(m_maxDomainValue + m_minDomainValue);
+    if (densityIsNormalized) {
+      // Since \rho is "1/\Delta", we just multiply by ".5"
+      m_weights[j] *= .5;
+    }
+    else {
+      // Since \rho is "1", we multiply by ".5 * \Delta"
+      m_weights[j] *= .5*(m_maxDomainValue - m_minDomainValue);
+    }
+  }
+}
+
+UniformLegendre1DQuadrature::~UniformLegendre1DQuadrature()
+{
+}
+
+void
+UniformLegendre1DQuadrature::dumbRoutine() const
+{
+  return;
+}
+
+//*****************************************************
+// GaussianHermite 1D quadrature class
+//*****************************************************
+GaussianHermite1DQuadrature::GaussianHermite1DQuadrature(
+  double mean,
+  double stddev,
+  unsigned int order)
+  :
+  Base1DQuadrature(-INFINITY,INFINITY,order),
+  m_mean  (mean),
+  m_stddev(stddev)
+{
+  // FIX ME: prepare code for mean != 0 and stddev != 1
+  m_positions.resize(m_order+1,0.); // Yes, '+1'
+  m_weights.resize  (m_order+1,0.); // Yes, '+1'
+
+  // http://www.efunda.com/math/num_integration/findgausshermite.cfm
+  switch (m_order) { // eep2011
+    case 1:
+      m_weights  [0] =  sqrt(M_PI)/2.;
+      m_weights  [1] =  sqrt(M_PI)/2.;
+
+      m_positions[0] = -1./sqrt(2.);
+      m_positions[1] =  1./sqrt(2.);
+    break;
+
+    case 2:
+      m_weights  [0] =  sqrt(M_PI)/6.;
+      m_weights  [1] =  2.*sqrt(M_PI)/3.;
+      m_weights  [2] =  sqrt(M_PI)/6.;
+
+      m_positions[0] = -sqrt(1.5);
+      m_positions[1] =  0.;
+      m_positions[2] =  sqrt(1.5);
+    break;
+
+    case 3:
+      m_weights  [0] =  sqrt(M_PI)/4./(3.-sqrt(6.));
+      m_weights  [1] =  sqrt(M_PI)/4./(3.+sqrt(6.));
+      m_weights  [2] =  sqrt(M_PI)/4./(3.+sqrt(6.));
+      m_weights  [3] =  sqrt(M_PI)/4./(3.-sqrt(6.));
+
+      m_positions[0] = -sqrt(1.5+sqrt(1.5));
+      m_positions[1] = -sqrt(1.5-sqrt(1.5));
+      m_positions[2] =  sqrt(1.5-sqrt(1.5));
+      m_positions[3] =  sqrt(1.5+sqrt(1.5));
+    break;
+
+    case 4:
+      m_weights  [0] =  0.019953242049;
+      m_weights  [1] =  0.393619323152;
+      m_weights  [2] =  0.945308720483;
+      m_weights  [3] =  0.393619323152;
+      m_weights  [4] =  0.019953242059;
+
+      m_positions[0] = -sqrt(2.5+sqrt(2.5));
+      m_positions[1] = -sqrt(2.5-sqrt(2.5));
+      m_positions[2] =  0.;
+      m_positions[3] =  sqrt(2.5-sqrt(2.5));
+      m_positions[4] =  sqrt(2.5+sqrt(2.5));
+    break;
+
+    case 5:
+      m_weights   [0] = 0.00453000990551;
+      m_weights   [1] = 0.157067320323;
+      m_weights   [2] = 0.724629595224;
+      m_weights   [3] = 0.724629595224;
+      m_weights   [4] = 0.157067320323;
+      m_weights   [5] = 0.00453000990551;
+
+      m_positions [0] = -2.35060497367;
+      m_positions [1] = -1.33584907401;
+      m_positions [2] = -0.436077411928;
+      m_positions [3] =  0.436077411928;
+      m_positions [4] =  1.33584907401;
+      m_positions [5] =  2.35060497367;
+    break;
+
+    case 6:
+      m_weights   [0] = 0.0009717812451;
+      m_weights   [1] = 0.0545155828191;
+      m_weights   [2] = 0.42560725261;
+      m_weights   [3] = 0.810264617557;
+      m_weights   [4] = 0.42560725261;
+      m_weights   [5] = 0.0545155828191;
+      m_weights   [6] = 0.0009717812451;
+
+      m_positions [0] = -2.65196135684;
+      m_positions [1] = -1.67355162877;
+      m_positions [2] = -0.816287882859;
+      m_positions [3] =  0.;
+      m_positions [4] =  0.816287882859;
+      m_positions [5] =  1.67355162877;
+      m_positions [6] =  2.65196135684;
+    break;
+
+    case 7:
+      m_weights   [0] = 0.000199604072211;
+      m_weights   [1] = 0.0170779830074;
+      m_weights   [2] = 0.207802325815;
+      m_weights   [3] = 0.661147012558;
+      m_weights   [4] = 0.661147012558;
+      m_weights   [5] = 0.207802325815;
+      m_weights   [6] = 0.0170779830074;
+      m_weights   [7] = 0.000199604072211;
+
+      m_positions [0] = -2.93063742026;
+      m_positions [1] = -1.9816567567;
+      m_positions [2] = -1.15719371245;
+      m_positions [3] = -0.381186990207;
+      m_positions [4] =  0.381186990207;
+      m_positions [5] =  1.15719371245;
+      m_positions [6] =  1.9816567567;
+      m_positions [7] =  2.93063742026;
+    break;
+
+    case 8:
+      m_weights   [0] = 3.96069772633e-5;
+      m_weights   [1] = 0.00494362427554;
+      m_weights   [2] = 0.0884745273944;
+      m_weights   [3] = 0.432651559003;
+      m_weights   [4] = 0.720235215606;
+      m_weights   [5] = 0.432651559003;
+      m_weights   [6] = 0.0884745273944;
+      m_weights   [7] = 0.00494362427554;
+      m_weights   [8] = 3.96069772633e-5;
+
+      m_positions [0] = -3.19099320178;
+      m_positions [1] = -2.26658058453;
+      m_positions [2] = -1.46855328922;
+      m_positions [3] = -0.723551018753;
+      m_positions [4] =  0.;
+      m_positions [5] =  0.723551018753;
+      m_positions [6] =  1.46855328922;
+      m_positions [7] =  2.26658058453;
+      m_positions [8] =  3.19099320178;
+    break;
+
+    case 9:
+      m_weights   [0] = 7.64043285523e-6;
+      m_weights   [1] = 0.00134364574678;
+      m_weights   [2] = 0.0338743944555;
+      m_weights   [3] = 0.240138611082;
+      m_weights   [4] = 0.610862633735;
+      m_weights   [5] = 0.610862633735;
+      m_weights   [6] = 0.240138611082;
+      m_weights   [7] = 0.0338743944555;
+      m_weights   [8] = 0.00134364574678;
+      m_weights   [9] = 7.64043285523e-6;
+
+      m_positions [0] = -3.43615911884;
+      m_positions [1] = -2.53273167423;
+      m_positions [2] = -1.7566836493;
+      m_positions [3] = -1.03661082979;
+      m_positions [4] = -0.342901327224;
+      m_positions [5] =  0.342901327224;
+      m_positions [6] =  1.03661082979;
+      m_positions [7] =  1.7566836493;
+      m_positions [8] =  2.53273167423;
+      m_positions [9] =  3.43615911884;
+    break;
+
+    case 19:
+      m_weights   [0] =  2.22939364554e-13;
+      m_weights   [1] =  4.39934099226e-10;
+      m_weights   [2] =  1.08606937077e-7;
+      m_weights   [3] =  7.8025564785e-6;
+      m_weights   [4] =  0.000228338636017;
+      m_weights   [5] =  0.00324377334224;
+      m_weights   [6] =  0.0248105208875;
+      m_weights   [7] =  0.10901720602;
+      m_weights   [8] =  0.286675505363;
+      m_weights   [9] =  0.462243669601;
+      m_weights  [10] =  0.462243669601;
+      m_weights  [11] =  0.286675505363;
+      m_weights  [12] =  0.10901720602;
+      m_weights  [13] =  0.0248105208875;
+      m_weights  [14] =  0.00324377334224;
+      m_weights  [15] =  0.000228338636017;
+      m_weights  [16] =  7.8025564785e-6;
+      m_weights  [17] =  1.08606937077e-7;
+      m_weights  [18] =  4.39934099226e-10;
+      m_weights  [19] =  2.22939364554e-13;
+
+      m_positions [0] = -5.38748089001;
+      m_positions [1] = -4.60368244955;
+      m_positions [2] = -3.94476404012;
+      m_positions [3] = -3.34785456738;
+      m_positions [4] = -2.78880605843;
+      m_positions [5] = -2.25497400209;
+      m_positions [6] = -1.73853771212;
+      m_positions [7] = -1.2340762154;
+      m_positions [8] = -0.737473728545;
+      m_positions [9] = -0.245340708301;
+      m_positions[10] =  0.245340708301;
+      m_positions[11] =  0.737473728545;
+      m_positions[12] =  1.2340762154;
+      m_positions[13] =  1.73853771212;
+      m_positions[14] =  2.25497400209;
+      m_positions[15] =  2.78880605843;
+      m_positions[16] =  3.34785456738;
+      m_positions[17] =  3.94476404012;
+      m_positions[18] =  4.60368244955;
+      m_positions[19] =  5.38748089001;
+    break;
+
+    default:
+      std::cerr << "In GaussianHermite1DQuadrature::constructor()"
+                << ": m_order = " << m_order
+                << std::endl;
+      UQ_FATAL_TEST_MACRO(true,
+                          UQ_UNAVAILABLE_RANK,
+                          "GaussianHermite1DQuadrature::constructor()",
+                          "order not supported");
+    break;
+  }
+  for (unsigned int j = 0; j < (m_order+1); ++j) {
+    m_weights  [j] *= sqrt(2.);
+    m_positions[j] *= sqrt(2.);
+  }
+}
+
+GaussianHermite1DQuadrature::~GaussianHermite1DQuadrature()
+{
+}
+
+void
+GaussianHermite1DQuadrature::dumbRoutine() const
+{
+  return;
+}
+
+//*****************************************************
+// WignerInverseChebyshev1st 1D quadrature class
+//*****************************************************
+WignerInverseChebyshev1st1DQuadrature::WignerInverseChebyshev1st1DQuadrature(
+  double       minDomainValue,
+  double       maxDomainValue,
+  unsigned int order)
+  :
+  Base1DQuadrature(minDomainValue,maxDomainValue,order)
+{
+  m_positions.resize(m_order+1,0.); // Yes, '+1'
+  m_weights.resize  (m_order+1,0.); // Yes, '+1'
+
+  // http://en.wikipedia.org/wiki/Chebyshev-Gauss_quadrature
+  switch (m_order) {
+    default:
+      UQ_FATAL_TEST_MACRO(true,
+                          UQ_UNAVAILABLE_RANK,
+                          "WignerInverseChebyshev1st1DQuadrature::constructor()",
+                          "order not supported");
+    break;
+  }
+
+  // Scale positions from the interval [-1, 1] to the interval [min,max]
+  for (unsigned int j = 0; j < m_positions.size(); ++j) {
+    m_positions[j] = .5*(m_maxDomainValue - m_minDomainValue)*m_positions[j] + .5*(m_maxDomainValue + m_minDomainValue);
+    m_weights[j] *= .5*(m_maxDomainValue - m_minDomainValue);
+  }
+}
+
+WignerInverseChebyshev1st1DQuadrature::~WignerInverseChebyshev1st1DQuadrature()
+{
+}
+
+void
+WignerInverseChebyshev1st1DQuadrature::dumbRoutine() const
+{
+  return;
+}
+
+//*****************************************************
+// WignerChebyshev2nd 1D quadrature class
+//*****************************************************
+WignerChebyshev2nd1DQuadrature::WignerChebyshev2nd1DQuadrature(
+  double       minDomainValue,
+  double       maxDomainValue,
+  unsigned int order)
+  :
+  Base1DQuadrature(minDomainValue,maxDomainValue,order)
+{
+  m_positions.resize(m_order+1,0.); // Yes, '+1'
+  m_weights.resize  (m_order+1,0.); // Yes, '+1'
+
+  // http://en.wikipedia.org/wiki/Chebyshev-Gauss_quadrature
+  unsigned int n = m_order+1;
+  for (unsigned int i = 0; i < n; ++i) {
+    double angle = M_PI*((double)(i+1))/((double)(n+1));
+    double cosValue = cos(angle);
+    double sinValue = sin(angle);
+    m_positions[i] = cosValue;
+    m_weights[i] = ( M_PI/((double)(n+1)) )*sinValue*sinValue;
+  }
+
+  // Scale positions from the interval [-1, 1] to the interval [min,max]
+  for (unsigned int j = 0; j < m_positions.size(); ++j) {
+    m_positions[j] = .5*(m_maxDomainValue - m_minDomainValue)*m_positions[j] + .5*(m_maxDomainValue + m_minDomainValue);
+    m_weights[j] *= .5*(m_maxDomainValue - m_minDomainValue);
+  }
+}
+
+WignerChebyshev2nd1DQuadrature::~WignerChebyshev2nd1DQuadrature()
+{
+}
+
+void
+WignerChebyshev2nd1DQuadrature::dumbRoutine() const
+{
+  return;
+}
+
+}  // End namespace QUESO
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/packages/surfpack/src/surfaces/nkm/NKM_KrigingModel.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/packages/surfpack/src/surfaces/nkm/NKM_KrigingModel.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/packages/surfpack/src/surfaces/nkm/NKM_KrigingModel.cpp	(revision 27955)
@@ -0,0 +1,4681 @@
+#include "NKM_SurfPack.hpp"
+#include "NKM_KrigingModel.hpp"
+//#include "Accel.hpp"
+//#include "NKM_LinearRegressionModel.hpp"
+#include <math.h>
+#include <iostream>
+#include <cfloat>
+
+
+#ifdef SURFPACK_HAVE_BOOST_SERIALIZATION
+BOOST_CLASS_EXPORT(nkm::KrigingModel)
+#endif
+
+
+namespace nkm {
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::ostringstream;
+
+
+//#define __KRIG_ERR_CHECK__
+#define __NKM_UNBIASED_LIKE__
+
+
+
+// typical constructor
+KrigingModel::KrigingModel(const SurfData& sd, const ParamMap& params)
+  : SurfPackModel(sd,sd.getIOut()), numVarsr(sd.getNVarsr()),
+    numTheta(numVarsr), numPoints(sdBuild.getNPts()), XR(sdBuild.xr)
+{
+  //printf("calling the right KrigingModel constructor\n"); fflush(stdout);
+
+  //if the SurfDataScaler class does what it's supposed to (the only private content in sdBuild that a Model can access are the scaling bits and then only through SurfDataScaler, and only the model can see inside the scaler) the next line will cause an error when you try to compile with it uncommented, that is intentional
+  //printf("scaler->mySd.iout=%d\n",scaler.mySd.iout);
+
+  // OPTIONS PARSING
+  ParamMap::const_iterator param_it;
+
+  // *************************************************************
+  // control verbosity outputLevel
+  // *************************************************************
+  param_it = params.find("verbosity");
+  if (param_it != params.end() && param_it->second.size() > 0)
+    outputLevel=static_cast<short>(std::atoi(param_it->second.c_str()));
+  // outputLevel is a member of nkm::SurfPackModel which nkm::KrigingModel
+  // is derived from
+
+  // ********************************************************************
+  // does the user want to use derivative information to build the
+  // Kriging model (e.g. Gradient Enhanced Kriging)
+  // ********************************************************************
+
+  buildDerOrder=0; //default is regular Kriging (i.e. not GEK)
+  param_it = params.find("derivative_order");
+  if(param_it != params.end() && param_it->second.size() > 0)
+    buildDerOrder = std::atoi(param_it->second.c_str());
+  if(buildDerOrder==0) {//Kriging
+    numEqnAvail=numPoints;
+    nDer=1;
+    Der.newSize(numVarsr,nDer); Der.zero();
+  } else if(buildDerOrder==1) { //Gradient Enhanced Kriging (GEK)
+    numEqnAvail=(1+numVarsr)*numPoints;
+    multi_dim_poly_power(Der, numVarsr, 1);  //use all mixed partial
+    //derivatives, up to first order, of the basis functions
+    nDer=Der.getNCols(); //for GradKrigingModel nDer=(1+numVarsr);
+    //printf("nDer=%d\n",nDer);
+    int data_der_order=sdBuild.getDerOrder();
+    if(data_der_order<1) {
+      std::cerr << "the order of derivative information available in the "
+		<< "build data is " << data_der_order << "\n"
+		<< "You need to supply gradients of the output in order to "
+		<< "construct a\nGradient Enhanced Kriging (GEK) Model."
+		<< std::endl;
+      assert(false);
+    }
+  }
+  else{
+    std::cerr << "derivative_order=" << buildDerOrder
+	      << " in the nkm::KrigingModel constructor.\n"
+	      << "For Kriging you must use derivative_order=0.\n"
+	      << "For Gradient Enhanced Kriging (GEK) you must use "
+	      << "derivative_order=1.\nHigher order derivative "
+	      << "enhanced Kriging (e.g. Hessian Enhanced Kriging)\n"
+	      << "has not been implemented." << std::endl;
+    assert(false);
+  }
+
+  // *************************************************************
+  // detect an anchor point if present this is the one point that
+  // we make sure that the equationSelectingCholR does not discard
+  // *************************************************************
+  iAnchorPoint=0;
+  ifHaveAnchorPoint=false;
+  param_it = params.find("anchor_index");
+  if (param_it != params.end() && param_it->second.size() > 0) {
+    ifHaveAnchorPoint=true;
+    //printf("nkm::KrigingModel() sees an anchor point\n");
+    //fflush(stdout);
+    iAnchorPoint=std::atoi(param_it->second.c_str());
+    //printf("iAnchorPoint=%d\n",iAnchorPoint);
+    //fflush(stdout);
+    if(!((0<=iAnchorPoint)&&(iAnchorPoint<numPoints))) {
+      std::cerr << "You can't specify an anchor point that isn't one of "
+		<< "the build points" << std::endl;
+      assert(false);
+    }
+  }
+
+  // *************************************************************
+  // this starts the input section about scaling the data
+  // *************************************************************
+
+  MtxDbl min_max_xr(numVarsr, 2);
+  bool if_user_specified_lower_bounds=false;
+  param_it = params.find("lower_bounds");
+  if (param_it != params.end() && param_it->second.size() > 0) {
+    if_user_specified_lower_bounds=true;
+    if(min_max_xr.putCols(param_it->second,0)) {
+      std::cerr << "You didn't enter the right number of lower bounds"
+		<< std::endl;
+      assert(false);
+    }
+  }
+
+  bool if_user_specified_upper_bounds=false;
+  param_it = params.find("upper_bounds");
+  if (param_it != params.end() && param_it->second.size() > 0) {
+    if_user_specified_upper_bounds=true;
+    if(min_max_xr.putCols(param_it->second,1)) {
+      std::cerr << "You didn't enter the right number of upper bounds"
+		<< std::endl;
+      assert(false);
+    }
+  }
+
+  if(!(if_user_specified_lower_bounds==if_user_specified_upper_bounds)) {
+    std::cerr << "Your options are to\n(A) specify both the upper and lower, or\n(B) specify neither the upper nor lower,\nbounds of the domain of the Kriging Model\n";
+    assert(false);
+  }
+
+  if(if_user_specified_lower_bounds==true) {
+    for(int ixr=0; ixr<numVarsr; ++ixr)
+      if(!(min_max_xr(ixr,0)<=min_max_xr(ixr,1))) {
+	std::cerr << "The lower bound of the domain of the Kriging Model must be less than or equal to the upper bound of the domain of the Kriging Model\n";
+	assert(min_max_xr(ixr,0)<=min_max_xr(ixr,1));
+      }
+    //printf("lower_bounds = [%g",min_max_xr(0,0));
+    //for(int ixr=1; ixr<numVarsr; ++ixr)
+    //printf(", %g",min_max_xr(ixr,0));
+    //printf("]^T, upper_bounds = [%g",min_max_xr(0,1));
+    //for(int ixr=1; ixr<numVarsr; ++ixr)
+    //printf(", %g",min_max_xr(ixr,1));
+    //printf("]^T\n");
+    sdBuild.setUnscaledDomainSize(min_max_xr);
+  }
+
+  //printf("KrigingModel constructor should have just written out domain bounds\n");
+
+  param_it = params.find("dimension_groups");
+  if (param_it != params.end() && param_it->second.size() > 0) {
+    MtxInt dim_groups(numVarsr,1);
+    if(dim_groups.putCols(param_it->second,0)) {
+      std::cerr << "If you specify dimension_groups for any dimensions, "
+		<< "you must specify groups\nfor all dimensions. If you "
+		<< "don't want some of the dimensions to be grouped\n"
+		<< "with other dimensions during scaling, give each of "
+		<< "them their own group." << std::endl;
+      assert(false);
+    }
+    sdBuild.setDimGroups(dim_groups);
+  }
+
+  scaler.scaleToDefault(); //scale outputs to -0.5<=Y<=0.5 and scale
+  //real inputs to volume 1 hyper-rectangle centered at 0 if real
+  //input dimensions are locked or the unit hypercube centered at 0 if
+  //no dimensions are locked.  The scaling is done to let us define
+  //the feasible region simply (region is defined in create);
+
+  if(buildDerOrder==0) {
+    sdBuild.getY(Yall);
+    Yall.reshape(numPoints,1);
+  }
+  else if(buildDerOrder==1) {
+    sdBuild.getUpToDerY(Yall,1);
+    Yall.reshape(numEqnAvail,1);
+    //Yall is now a column vector that contains
+    //[y0, dy_0/dxr_0, ..., dy_0/dxr_{numVarsr-1}, y1, dy_1/dxr_0, ..., y2, ...
+    // y_{numPoints-1}, dy_{numPoints-1}/dxr_0, ...,
+    // dy_{numPoints-1}/dx_{numVarsr-1}]^T
+  }
+
+  // *************************************************************
+  // this starts the input section about optimizing or directly
+  // specifying correlation lengths, it must come after the
+  // scaling section
+  // *************************************************************
+
+  // current options are none (fixed correl) | sampling (guess) | local |
+  // global | global_local
+  optimizationMethod = "global"; //the default
+  //optimizationMethod = "none"; //the default
+  param_it = params.find("optimization_method");
+  if (param_it != params.end() && param_it->second.size() > 0)
+    optimizationMethod = param_it->second;
+
+  if(optimizationMethod.compare("none")==0)
+    maxTrials=1;
+  else if(optimizationMethod.compare("local")==0)
+    maxTrials=20;
+  else if(optimizationMethod.compare("sampling")==0)
+    maxTrials=2*numVarsr+1;
+  else if(optimizationMethod.compare("global")==0)
+    maxTrials = 10000;
+  else if(optimizationMethod.compare("global_local")==0) {
+    maxTrials = 10000; //ensure it has non-zero as a fail safe but this
+    //shouldn't be used
+    maxTrialsGlobal = 500;
+    maxTrialsLocal = 20;
+  }
+  else{ //error checking the input
+    std::cerr << "KrigingModel() unknown optimization_method [" << optimizationMethod << "]  aborting\n";
+    assert(false);
+  }
+
+  //std::cout << "optimization_method=\"" << optimizationMethod << "\"\n";
+
+  //numStarts is the number of starting locations in a multi-start local search
+  numStarts=1; //default is a single starting location
+  param_it = params.find("num_starts");
+  if (param_it != params.end() && param_it->second.size() > 0) {
+    numStarts = std::atoi(param_it->second.c_str());
+    if(numStarts<1) {
+      std::cerr << "You can't specify fewer than one starting location "
+		<< "for the optimization\nof correlation lenghts"
+		<< std::endl;
+      assert(false);
+    }
+  }
+
+  if(!((numStarts==1)||(optimizationMethod.compare("local")==0))) {
+    std::cerr << "Local optimization is the only optimization method for Kriging that uses the \"num_starts\" key word. Check your input file for errors.\n";
+    assert(false);
+  }
+
+  //std::cout << "num_starts=" << numStarts << "\n";
+
+
+  // does the user want to specify correlation lengths directly?
+  ifUserSpecifiedCorrLengths=false; //the default is no
+  param_it = params.find("correlation_lengths");
+  if (param_it != params.end() && param_it->second.size() > 0) {
+    ifUserSpecifiedCorrLengths=true;
+    //printf("User specifying correlation lengths\n"); fflush(stdout);
+
+    // make sure that the user didn't
+    // * say they want to global optimize __AND__
+    // * specify correlation lengths
+    if(optimizationMethod.compare("global")==0) {
+      std::cerr << "You can't both \n (A) use the global optimization method to choose, and \n (B) directly specify \n correlation lengths for the Kriging model.\n";
+      assert(false);
+    }
+    else if(optimizationMethod.compare("global_local")==0) {
+      //they can't coarse global followed by local either
+      std::cerr << "You can't both \n (A) use the coarse global polished by local optimization method to choose, and \n (B) directly specify \n correlation lengths for the Kriging model.\n";
+      assert(false);
+    }
+    else if(optimizationMethod.compare("sampling")==0) {
+      // this is only the default number of samples/maxTrials; the user can
+      // still overide this below
+      maxTrials+=1;
+    }
+
+    natLogCorrLen.newSize(numVarsr,1); //allocate space
+
+    //read the correlation lengths in from the string
+    if(natLogCorrLen.putCols(param_it->second,0)) {
+      std::cerr << "The specified correlation lengths had the wrong "
+		<< "number of input dimensions." << std::endl;
+      assert(false);
+    }
+    // "natLogCorrLen" currently holds the unscaled correlation LENGTHS, not
+    // the natural log of the scaled correlation length, we need to fix that
+    // but first we need to check the input for errors
+    for(int ixr=0; ixr<numVarsr; ++ixr)
+      if(!(natLogCorrLen(ixr,0)>0.0)) {
+	std::cerr << "For the Kriging Model, correlation lengths must be strictly positive\n.";
+	assert(false);
+      }
+
+    //printf("unscaled corr lens = [%12.6g",natLogCorrLen(0,0));
+    //for(int ixr=1; ixr<numVarsr; ++ixr)
+    //printf(", %12.6g",natLogCorrLen(ixr,0));
+    //printf("]\n");
+
+    scaler.scaleXrDist(natLogCorrLen); //scale the lengths
+    //scaler.scaleXrOther(natLogCorrLen); //error
+    //printf("scaled corr lens = [%12.6g",natLogCorrLen(0,0));
+    //for(int ixr=1; ixr<numVarsr; ++ixr)
+    // printf(", %12.6g",natLogCorrLen(ixr,0));
+    //printf("]\n");
+    //fflush(stdout);
+
+    //compute the natural log of the correlation lengths
+    for(int ixr=0; ixr<numVarsr; ++ixr)
+      natLogCorrLen(ixr,0)=std::log(natLogCorrLen(ixr,0));
+
+    natLogCorrLen.reshape(numVarsr,1);
+    //natLogCorrLen will be the first of the initial iterates (guesses), this happens in the create() function below
+  }
+  //printf("If user specified correlationlengths we should have just printed them\n");
+
+  // maximum objective evals for optimization or guess
+  param_it = params.find("max_trials");
+  if (param_it != params.end() && param_it->second.size() > 0) {
+    maxTrials = std::atoi(param_it->second.c_str());
+  }
+
+  if(!(maxTrials > 0)) {
+    std::cerr << "You can't specify a maximum number of trials that is "
+	      << "less than or equal\nto zero." << std::endl;
+    assert(false);
+  }
+
+  //printf("maxTrials=%d\n",maxTrials);
+
+
+  // *************************************************************
+  // this starts the input section about the trend function
+  // *************************************************************
+  polyOrderRequested = 2;
+  ifReducedPoly=false;
+  param_it = params.find("order");
+  if (param_it != params.end() && param_it->second.size() > 0) {
+    polyOrderRequested = std::atoi(param_it->second.c_str());
+    //ssstd::cerr << "polyOrderRequested=" << polyOrderRequested << std::endl;
+    if(!(polyOrderRequested >= 0)) {
+      std::cerr << "You can't use a trend function with a polynomial "
+		<< "order less than zero." << std::endl;
+      assert(false);
+    }
+  }
+  else{
+    //if they don't specify a polynomial order use a main effects
+    //polynomial with order 2 for the trend function, (if they do
+    //specify a polynomial order assume they mean a full polynomial
+    //order unless they specify that it's a reduced_polynomial)
+    ifReducedPoly=true;
+  }
+  numTrend.newSize(polyOrderRequested+1,1);
+
+  //cout << "order=" << polyOrder << "\n";
+
+  //polyOrder = 2; //for debug
+  //main_effects_poly_power(Poly, numVarsr, polyOrder); //for debug
+  //commented out for debug
+
+  param_it = params.find("reduced_polynomial");
+  if (param_it != params.end() && param_it->second.size() > 0)
+    if((std::atoi(param_it->second.c_str()))!=0)
+      ifReducedPoly=true;
+
+  //cout << "ifReducedPoly=" << ifReducedPoly << "\n";
+
+  if(ifReducedPoly) {
+    for(polyOrder=0; polyOrder<=polyOrderRequested; ++polyOrder)
+      numTrend(polyOrder,0)=polyOrder*numVarsr+1;
+    main_effects_poly_power(Poly, numVarsr, polyOrderRequested);
+  }
+  else{
+    for(polyOrder=0; polyOrder<=polyOrderRequested; ++polyOrder)
+      numTrend(polyOrder,0)=num_multi_dim_poly_coef(numVarsr, polyOrder);
+    multi_dim_poly_power(Poly, numVarsr, polyOrderRequested);
+  }
+
+
+  // ********************************************************************
+  // this starts the section about the choice of correlation functions
+  // need to do build derivative order before this
+  // ********************************************************************
+  corrFunc=DEFAULT_CORR_FUNC;
+
+  //POW_EXP_CORR_FUNC
+  powExpCorrFuncPow=0.0; //only 1.0<=powExpCorrFunc<=2.0 are allowed
+  //later if corrFunc==POW_EXP_CORR_FUNC and powExpCorrFuncPow==0.0 we know
+  //we have an error
+  param_it = params.find("powered_exponential");
+  if(param_it != params.end() && param_it->second.size() > 0) {
+    if(corrFunc!=DEFAULT_CORR_FUNC) {
+      std::cerr << "You can only specify one correlation function\n";
+      assert(false);
+    }
+    corrFunc=POW_EXP_CORR_FUNC;
+    powExpCorrFuncPow=std::atof(param_it->second.c_str());
+    if(!((1.0<=powExpCorrFuncPow)&&(powExpCorrFuncPow<=2.0))){
+      std::cerr << "The powered exponential correlation function must have 1.0<=power<=2.0\n";
+      assert(false);
+    }
+    //need to require 1<powExpCorrFuncPow if first derivatives are used
+    //(otherwise no derivative is continuous at build points
+    //will need to require powExpCorrFuncPow==2 of 2nd or higher order
+    //derivatives are used
+    if(powExpCorrFuncPow==1.0)
+      corrFunc=EXP_CORR_FUNC;
+    else if(powExpCorrFuncPow==2.0)
+      corrFunc=GAUSSIAN_CORR_FUNC;
+  }
+
+  //MATERN_CORR_FUNC
+  maternCorrFuncNu=0.0; //only 0.5, 1.5, 2.5, and infinity will be allowed
+  //later if corrFunc==MATERN_CORR_FUNC and maternCorrFuncNu=0.0 we know
+  //we have an error
+  param_it = params.find("matern");
+  if(param_it != params.end() && param_it->second.size() > 0) {
+    if(corrFunc!=DEFAULT_CORR_FUNC) {
+      std::cerr << "You can only specify one correlation function\n";
+      assert(false);
+    }
+    if(param_it->second.compare("infinity")==0) {
+      corrFunc=GAUSSIAN_CORR_FUNC;
+      //matern nu=infinty is the Gaussian correlation function
+    }
+    else{
+      corrFunc=MATERN_CORR_FUNC;
+      maternCorrFuncNu=std::atof(param_it->second.c_str());
+      if(!((maternCorrFuncNu==0.5)||(maternCorrFuncNu==1.5)||
+	   (maternCorrFuncNu==2.5))) {
+	//could allow more later if 3rd+ order derivatives are enabled later
+	std::cerr << "For the Matern correlation function the only allowed values for nu are 0.5, 1.5, 2.5, and infinity\n";
+	assert(false);
+      }
+      if(maternCorrFuncNu==0.5) {
+	corrFunc=EXP_CORR_FUNC; //matern nu=0.5 is the exponential correlation function
+	//need to disallow maternCorrFuncNu=0.5 if gradients or higher order derivatives are used to construct the Kriging model
+      }
+      //need to disallow maternCorrFuncNu=1.5 it hessians or higher order derivatives are used to construct the Kriging model
+    }
+  }
+
+  if(corrFunc==DEFAULT_CORR_FUNC)
+    corrFunc=GAUSSIAN_CORR_FUNC;
+
+  // *************************************************************
+  // this starts the input section HOW to bound the condition
+  // number, this determines which derivatives of the constraint
+  // function can be computed analytically so handle that here too
+  // *************************************************************
+  //constraintType="rcond"; //rcond is now the only option for type of
+  //constraint against ill conditioning
+  numConFunc=1;
+
+  //convert to the Dakota bitflag convention for derivative orders
+  int num_analytic_obj_ders_in=0; //analytical derivatives have been removed
+  int num_analytic_con_ders_in=0; //analytical derivatives have been removed
+  maxObjDerMode=(static_cast<int>(std::pow(2.0,num_analytic_obj_ders_in+1)))-1; //analytical gradients of objective function
+  maxConDerMode=(static_cast<int> (std::pow(2.0,num_analytic_con_ders_in+1)))-1; //analytical gradients of constraint function(s)
+
+  maxCondNum=std::pow(1024.0,4);
+
+  // *************************************************************
+  // this starts the input section about the nugget which can be
+  // used to smooth the data and also decrease the condition
+  // number
+  // *************************************************************
+
+  ifChooseNug = false;
+  //ifChooseNug = true;
+  ifAssumeRcondZero=false;
+  param_it = params.find("find_nugget");
+  if (param_it != params.end() && param_it->second.size() > 0) {
+    ifChooseNug = true;
+    int zero_or_one = std::atoi(param_it->second.c_str());
+    if(zero_or_one==0)
+      ifAssumeRcondZero=true;
+  }
+  //ifChooseNug = true ; std::cout << "ifChooseNug=" << ifChooseNug << "\n";
+
+  // fixed value for now
+  nug = 0.0; //default
+  ifPrescribedNug=false;
+  param_it = params.find("nugget");
+  if (param_it != params.end() && param_it->second.size() > 0) {
+    if(!(ifChooseNug==false)) {
+      std::cerr << "You can do at most 1 of the following (A) auto-select "
+		<< "the nugget\n(approximately the minimum needed to "
+		<< "satisfy the condition number bound)\n(B) directly "
+		<< "specify a nugget.  The default is not to use a nugget "
+		<< "at all\n(i.e. use a nugget of zero)." << std::endl;
+      assert(false);
+    }
+    nug = std::atof(param_it->second.c_str());
+    if(!(nug >= 0.0)) {
+      std::cerr << "The nugget must be greater than or equal to zero."
+		<< std::endl;
+      assert(false);
+    }
+    ifPrescribedNug=true;
+  }
+
+  // *************************************************************
+  // this ends the input parsing now finish up the prep work
+  // *************************************************************
+  preAllocateMaxMemory(); //so we don't have to constantly dynamically
+  //allocate, the SurfMat class can use a subset of the allocated memory
+  //without using dynamic reallocation
+
+  // precompute and store the trend function for all build points
+  if(buildDerOrder==0) //for Kriging
+    eval_trend_fn(Gall, XR);
+  else if(buildDerOrder>=1) { //for GEK
+    //actually this is generic to higher order derivative enhanced Kriging
+    //(e.g. Hessian Enhanced Kriging) provided that Der is appropriately
+    //defined
+    eval_der_trend_fn(Gall, Der, XR);
+  } else{
+    std::cerr << "bogus buildDerOrder=" << buildDerOrder
+	      << " in the constructor when evaluating Gall" << std::endl;
+    assert(false);
+  }
+
+  if((ifChooseNug==true)||(ifPrescribedNug==true)) {
+    //if we're using a nugget then we aren't using pivoted cholesky to
+    //select an optimal subset of points, that means that the order of
+    //points aren't going to change so we'll set Y and Gtran to what
+    //we know they need to be
+    iPtsKeep.newSize(numPoints,1);
+    for(int ipt=0; ipt<numPoints; ++ipt)
+      iPtsKeep(ipt,0)=ipt;
+
+    Y.copy(Yall);
+
+    //polyOrder=polyOrderRequested;
+    nTrend=numTrend(polyOrderRequested,0);
+    Gtran.newSize(numEqnAvail,nTrend);
+    for(int itrend=0; itrend<nTrend; ++itrend)
+      for(int i=0; i<numEqnAvail; ++i)
+	Gtran(i,itrend)=Gall(itrend,i);
+
+    if(buildDerOrder==0)
+      numExtraDerKeep=0;
+    else if(buildDerOrder==1)
+      numExtraDerKeep=numVarsr;
+    else{
+      std::cerr << "buildDerOrder=" << buildDerOrder
+		<< " in void KrigingModel::nuggetSelectingCholR(); "
+		<< "for Kriging buildDerOrder must be 0; "
+		<< "for Gradient Enhanced Kriging buildDerOrder must be 1; "
+		<< "Higher order derivative enhanced Kriging "
+		<< "(e.g Hessian Enhanced Kriging) has not been implemented"
+		<< std::endl;
+      assert(false);
+    }
+    numPointsKeep=numPoints;
+    numRowsR=numEqnAvail;
+  }
+
+  gen_Z_matrix();  //initializes deltaXR and Z matrices (what the Z
+  // matrix contains depends on the choose of correlation function but
+  // as of 2012.06.25 all correlation functions involve an
+  // coefficient*exp(Z^T*theta) (reshaped to the lower triangular part of R)
+  // for the powered Exponential family of correlation functions that
+  // coefficient is 1.0, for Matern 1.5 and Matern 2.5 correlation functions
+  // it's not 1.0 and we only do the multiplcation when the coefficient isn't
+  // 1.0 to save computation.
+
+  //printf("completed the KrigingModel constructor\n"); fflush(stdout);
+}
+
+void KrigingModel::create()
+{
+  //printf("entered create()\n"); fflush(stdout);
+
+  prevObjDerMode=prevConDerMode=0; //tells us not to reuse previous work used
+  //to calculate the objective, constraints and their derivatives the first
+  //time they are asked for
+  prevTheta.newSize(numTheta,1);
+  prevTheta.zero(); //not necessary just useful to debug
+
+  //printf("KM.create():1: nug=%g\n",nug);
+
+  // -
+  // solve the optimization problem for the correlations
+  // -
+
+  //printf("numVarsr=%d\n",numVarsr); fflush(stdout);
+  OptimizationProblem opt(*this, numVarsr, numConFunc);
+
+
+  // set the bounds for the plausible region for correlation lengths
+  // (assumes input space has a volume of 1, and data points are
+  // uniformly distributed)
+  aveDistBetweenPts=std::pow(numPoints,-1.0/numVarsr);
+
+  // note: we should explore different bounds on the correlation lengths
+  // for different choices of the correlation function, but this has not
+  // been done yet, the "procedure" for determining how far the lengths
+  // should extend is to say that X% probability mass is located a
+  // certain distance away (5% at 16 neighbors for the upper bound, and
+  // for the lower bound you want the nearest neighbor to be
+  // "essentially uncorrelated" while halfway between nearest neigbors
+  // is slightly correlated)
+
+  // For the maximum correlation length = aveDistBetweenPts*8.0
+  // the Gaussian Correlation function (the original one this GP a.k.a.
+  // Kriging model was developed for) has about ~5% confidence (2 std
+  // devs away) in what points 16 neighbors away have to say. If points
+  // are correlated well at even greater distances then either
+  // * that same information will be contained in nearby points OR
+  // * you shouldn't be using a Gaussian process error model
+  double max_corr_length = aveDistBetweenPts*8.0;
+  maxNatLogCorrLen=std::log(max_corr_length);
+
+  // For the minimum correlation length = aveDistBetweenPts/4.0
+  // the Gaussian Correlation function (the original one this GP a.k.a.
+  // Kriging model was developed for) has about ~5% confidence (2 std
+  // midway between neighboring points... i.e. you're 4 std devs away
+  // from your nearest neighbor so all sample points are treated as being
+  // essentially uncorrelated
+  double min_corr_length = aveDistBetweenPts/4.0;
+  minNatLogCorrLen=std::log(min_corr_length);
+
+  //Choose dead center (in log(correlation length)) of the feasible region
+  //as the default initial guess for the Gaussian Process error model
+  double init_guess=0.5*(maxNatLogCorrLen+minNatLogCorrLen);
+
+  ///set the bounds and the initial iterates
+  if(ifUserSpecifiedCorrLengths==true) {
+    // the first guess is what the user told us he/she wanted to use
+    for(int ixr=0; ixr<numVarsr; ++ixr) {
+      opt.lower_bound(ixr, minNatLogCorrLen);
+      opt.upper_bound(ixr, maxNatLogCorrLen);
+      opt.initial_iterate(ixr, natLogCorrLen(ixr,0));
+    }
+    // the second guess is the center of the small feasible region
+    MtxDbl the_second_guess(numVarsr,1);
+    for(int ixr=0; ixr<numVarsr; ++ixr)
+      the_second_guess(ixr,0)=init_guess;
+    opt.add_initial_iterates(the_second_guess);
+  } else {
+
+    // since the user didn't specify an initial guess we will use the center
+    // of the small feasible region as our first initial guess
+    for(int ixr=0; ixr< numVarsr; ++ixr) {
+      opt.lower_bound(ixr, minNatLogCorrLen);
+      opt.upper_bound(ixr, maxNatLogCorrLen);
+      opt.initial_iterate(ixr, init_guess);
+    }
+  }
+
+  // add a binning optimal (read as space filling) random design with
+  // 2*numVars more guesses
+  // bins are the endpoints of a randomly rotated axis
+  MtxDbl axes_of_guesses(numVarsr,2*numVarsr);
+  gen_rand_axis_bin_opt_samples_0to1(axes_of_guesses,numVarsr);
+  for(int iguess=0; iguess<2*numVarsr; ++iguess) {
+    for(int ixr=0; ixr<numVarsr; ++ixr) {
+      axes_of_guesses(ixr,iguess)=(maxNatLogCorrLen-minNatLogCorrLen)*axes_of_guesses(ixr,iguess)+minNatLogCorrLen;
+    }
+  }
+  opt.add_initial_iterates(axes_of_guesses);
+
+  //choose the optimizer you want to use
+  if(optimizationMethod.compare("none")==0) {
+    natLogCorrLen.resize(numVarsr,1);
+    opt.retrieve_initial_iterate(0,natLogCorrLen);
+  }
+  else{
+    if(optimizationMethod.compare("local")==0) {
+      //local optimization
+      if(numStarts==1)
+	//from a single starting location
+	opt.conmin_optimize();
+      else{
+	//doing multi-start local optimization
+	opt.multistart_conmin_optimize(numStarts);
+      }
+    }
+    else if(optimizationMethod.compare("global")==0)
+      //global optimization via the "DIvision of RECTangles" method
+      opt.direct_optimize();
+    else if(optimizationMethod.compare("sampling")==0)
+      //randomly generate candidates and pick the best guess
+      opt.best_guess_optimize(maxTrials);
+    else if(optimizationMethod.compare("global_local")==0){
+      //a coarse global optimization that is polished by
+      //local optimization
+      maxTrials=maxTrialsGlobal;
+      opt.direct_optimize();
+      natLogCorrLen = opt.best_point();
+      maxTrials=maxTrialsLocal;
+      opt.conmin_optimize();
+    }
+    else{
+      std::cerr << "KrigingModel:create() unknown optimization_method [" << optimizationMethod << "]\naborting" << std::endl;
+      assert(false);
+    }
+    natLogCorrLen = opt.best_point();
+  }
+
+  MtxDbl corr_len(numVarsr,1);
+  for(int ixr=0; ixr<numVarsr; ++ixr)
+    corr_len(ixr,0)=std::exp(natLogCorrLen(ixr,0));
+  correlations.newSize(numVarsr,1);
+  get_theta_from_corr_len(correlations,corr_len);
+
+  //printf("}\n");
+
+  //printf("scaled correlations=[%12.6g",correlations(0,0));
+  //for(int ixr=1; ixr<numVarsr; ++ixr)
+  //printf(", %12.6g",correlations(ixr,0));
+  //printf("]\n");
+
+  masterObjectiveAndConstraints(correlations, 1, 0);
+
+  //keep only the "optimal" subset of trend basis function in Poly that was
+  //selected by the pivoted Cholesky factorization of G*R^-1*G^
+  if(nTrend<numTrend(polyOrderRequested,0)) {
+    //for this to work, the basis function indicices in iTrendKeep must
+    //be in monotonically increasing order
+
+    //we are guaranteed to keep the constant term of the trend function so
+    //start loop from 1 not zero
+    for(int itrend=1; itrend<nTrend; ++itrend) {
+      int isrc=iTrendKeep(itrend,0);
+      if(itrend<isrc)
+	for(int ixr=0; ixr<numVarsr; ++ixr)
+	   Poly(ixr,itrend)=Poly(ixr,isrc);
+    }
+
+    //now reduce the size of Poly
+    Poly.resize(numVarsr,nTrend);
+  }
+
+  //determine the maximum total order of any term in the part of the
+  //trend that was retained
+  polyOrder=Poly(0,nTrend-1);
+  for(int ixr=1; ixr<numVarsr; ++ixr)
+    polyOrder+=Poly(ixr,nTrend-1);
+
+
+
+  //make a reordered copy of (the retained portion of) XR for evaluation speed
+  XRreorder.newSize(numVarsr,numPointsKeep);
+  for(int ipt=0; ipt<numPointsKeep; ++ipt) {
+    int isrc=iPtsKeep(ipt,0);
+    for(int ixr=0; ixr<numVarsr; ++ixr)
+      XRreorder(ixr,ipt)=XR(ixr,isrc);
+  }
+
+  if(outputLevel >= NORMAL_OUTPUT) {
+    std::cout << model_summary_string();
+    //std::cout << std::endl;
+  }
+
+
+  //variables whose values needed to be retained between sequential call to masterObjectiveAndConstraints for precompute and store strategy to work
+  prevObjDerMode=prevConDerMode=0;
+
+  //deallocate matrices we no longer need after emulator has been created
+  //these were made member variables (instead of local variables) to avoid
+  //the cost of dynamic allocation and deallocation each cycle of the
+  //optimization of the correlation parameters
+  scaleRChol.clear(); //matrix
+  sumAbsColR.clear(); //vector
+  oneNormR.clear(); //vector
+  lapackRcondR.clear(); //vector
+  rcondDblWork.clear();  //vector
+  rcondIntWork.clear(); //vector
+  Yall.clear(); //vector
+  Gall.clear(); //matrix
+  Gtran.clear(); //matrix
+  iTrendKeep.clear(); //vector
+  Z.clear(); //matrix
+  Ztran_theta.clear(); //vector
+  deltaXR.clear(); //matrix
+  R.clear(); //matrix
+  G_Rinv_Gtran.clear(); //matrix
+  G_Rinv_Gtran_Chol_Scale.clear(); //vector
+  G_Rinv_Gtran_Chol_DblWork.clear(); //vector
+  G_Rinv_Gtran_Chol_IntWork.clear(); //vector
+  G_Rinv_Y.clear(); //vector
+  eps.clear(); //vector
+  prevTheta.clear(); //vector
+  con.clear(); //vector
+}
+
+std::string KrigingModel::get_corr_func() const {
+  std::ostringstream oss;
+
+  switch(corrFunc) {
+  case GAUSSIAN_CORR_FUNC:
+    oss << "Gaussian";
+    break;
+  case EXP_CORR_FUNC:
+    oss << "exponential";
+    break;
+  case POW_EXP_CORR_FUNC:
+    oss << "powered exponential with power=" << powExpCorrFuncPow;
+    break;
+  case MATERN_CORR_FUNC:
+    oss << "Matern " << static_cast<int>(maternCorrFuncNu*2.0) << "/2";
+    break;
+  default:
+    std::cerr << "unknown correlation function enumerated as " << corrFunc
+	      << std::endl;
+    assert(false);
+  }
+  return (oss.str());
+}
+
+
+std::string KrigingModel::model_summary_string() const {
+  MtxDbl temp_out_corr_lengths(numVarsr,1);
+  get_corr_len_from_theta(temp_out_corr_lengths,correlations);
+  scaler.unScaleXrDist(temp_out_corr_lengths);
+
+  //printf("numPoints=%d numTrend=%d numPointsKeep=%d numWholePointsKeep=%d numExtraDerKeep=%d\n",numPoints,numTrend(polyOrder,0),numPointsKeep,numWholePointsKeep,numExtraDerKeep);
+
+  std::ostringstream oss;
+  oss << "--- Surfpack Kriging Diagnostics ---\n";
+  if(buildDerOrder==0)
+    oss << "KM: #real inputs=" << numVarsr << "; #pts=" << numPoints
+	<< "; used " << numPointsKeep << "/" << numPoints << " pts;\n";
+  else if(buildDerOrder==1)
+    oss << "GEK: #real inputs=" << numVarsr << "; #pts=" << numPoints
+	<< "; #eqns=" << numEqnAvail << "; used "
+	<< numRowsR << "/" << numEqnAvail << " eqns;\n";
+  else{
+    oss << "error std::string KrigingModel::model_summary_string() const\n"
+	<< "buildDerOrder=" << buildDerOrder << "; it should be 0 for Kriging"
+	<< " or 1 for Gradient Enhanced Kriging (GEK);"
+	<< " the model_summary_string() function will need to be modified "
+	<< "to handle other build derivative orders.\n";
+  }
+  oss << "using the ";
+  if(corrFunc==GAUSSIAN_CORR_FUNC)
+    oss << "Gaussian";
+  else if(corrFunc==EXP_CORR_FUNC)
+    oss << "exponential";
+  else if(corrFunc==POW_EXP_CORR_FUNC)
+    oss << "powered exponential (with power = " << powExpCorrFuncPow << ")";
+  else if(corrFunc==MATERN_CORR_FUNC)
+    oss << "Matern " << maternCorrFuncNu;
+  else{
+    std::cerr << "unknown corr func in model_summary_string()" << std::endl;
+    assert(false);
+  }
+  oss << " correlation function with (unscaled)\n"
+      << "Correlation lengths=[" << temp_out_corr_lengths(0,0);
+  for(int ixr=1; ixr<numVarsr; ++ixr)
+    oss << ", " << temp_out_corr_lengths(ixr,0);
+  oss << "]^T\nfound by the \"" << optimizationMethod
+      << "\" optimization_method;\nunadjusted variance="
+      << estVarianceMLE * scaler.unScaleFactorVarY()
+      << "; \"per equation\" log(likelihood)=" << likelihood << ";\n"
+      << "rcond(R)=" << rcondR << "; rcond(G_Rinv_Gtran)="
+      << rcond_G_Rinv_Gtran << "; [if either rcond is less\n"
+      << "than 2^-40 (approx 9.095*10^-13) then the matrix is ill-conditioned "
+      << "and\nthat \"voids the warranty\" of the Kriging Model]; nugget="
+      << nug << ".  A ";
+  if(polyOrder>1) {
+    if(ifReducedPoly==true)
+      oss << "reduced_";
+    else oss <<"full ";
+  }
+  oss << "polynomial\nof order " << polyOrderRequested << " (with "
+      << numTrend(polyOrderRequested,0) << " terms) was requested "
+      << "for the trend function; the build\ndata was ";
+  if(nTrend<numTrend(polyOrderRequested,0) )
+    oss << "NOT ";
+  oss << "sufficient to use the requested trend function; "
+      << "the highest total\npolynomial order of any term in the "
+      << "utlized trend function is " << polyOrder << ";\n"
+      << "for SCALED inputs and outputs the utilized trend function is\n"
+      << "betaHat^T*g(x)=";
+  int nterm_on_this_line=0;
+  for(int itrend=0; itrend<nTrend; ++itrend) {
+    ++nterm_on_this_line;
+    oss << betaHat(itrend,0);
+    for(int ixr=0; ixr<numVarsr; ++ixr)
+      if(Poly(ixr,itrend)>0) {
+	oss << "*x" << ixr;
+	if(Poly(ixr,itrend)>1)
+	  oss << "^" << Poly(ixr,itrend);
+      }
+    if(itrend<nTrend-1) {
+      oss << " ";
+      if(betaHat(itrend+1,0)>=0.0)
+	oss << "+ ";
+      if(nterm_on_this_line==3) {
+	oss << "...\n               ";
+	nterm_on_this_line=0;
+      }
+    }
+  }
+  oss << "\n------------------------------------\n";
+  return (oss.str());
+}
+
+void KrigingModel::preAllocateMaxMemory() {
+  //this preallocates the maximum sizce of arrays whose size depends on how many equations were discarded by pivoted Cholesky and they could possibly be allocated to a different size than their maximum the first time they are allocated.
+
+  nTrend=numTrend(polyOrderRequested,0);
+  Y.newSize(numEqnAvail,1);
+  Gtran.newSize(numEqnAvail,nTrend);
+  Rinv_Gtran.newSize(numEqnAvail,nTrend);
+  G_Rinv_Gtran.newSize(nTrend,nTrend);
+  G_Rinv_Gtran_Chol.newSize(nTrend,nTrend);
+  rhs.newSize(numEqnAvail,1);
+  betaHat.newSize(nTrend,1);
+  G_Rinv_Y.newSize(nTrend,1);
+  eps.newSize(numEqnAvail,1);
+  iPtsKeep.newSize(numPoints,1);
+  RChol.newSize(numEqnAvail,numEqnAvail);
+  int nrows = nTrend;
+  if((ifChooseNug==false)&&(ifPrescribedNug==false)&&(numEqnAvail>nTrend))
+    nrows=numEqnAvail;
+  scaleRChol.newSize(nrows,3);
+  lapackRcondR.newSize(nrows,1);
+
+  return;
+}
+
+// BMA TODO: combine these two functions?
+
+/// evaluate (y) the Kriging Model at a single point (xr)
+double KrigingModel::evaluate(const MtxDbl& xr)
+{
+  if(buildDerOrder==0) {
+    //you wouldn't want to do this for Gradient Enhanced Kriging
+    //i.e. if gradients of y were used as inputs
+    double singular_y;
+    if(scaler.isYSingular(0,singular_y))
+      return singular_y;
+  }
+
+  //assert( (numVarsr == xr.getNCols()) && (xr.getNRows() == 1) );
+  MtxDbl g(nTrend,1), r(numRowsR,1);
+
+  /*
+  printf("double evaluate()\n");
+  printf("xr=[%20.14g", xr(0,0));
+  for(int ixr=1; ixr<numVarsr; ++ixr)
+    printf(", %20.14g",xr(ixr,0));
+    printf("]^T\n");
+  */
+
+  if(scaler.isUnScaled()) {
+    eval_trend_fn(g, xr);
+    correlation_matrix(r, xr);
+  }
+  else{
+    MtxDbl xr_scaled(xr);
+    scaler.scaleXrOther(xr_scaled);
+    eval_trend_fn(g, xr_scaled);
+    correlation_matrix(r, xr_scaled);
+  }
+
+  double y = dot_product(g, betaHat) + dot_product(r, rhs);
+
+  //double yus=scaler.unScaleYOther(y);
+  //printf("y=%g yunscaled=%g\n",y,yus);
+  //return yus;
+
+  return (scaler.unScaleYOther(y));
+}
+
+
+/// evaluate (y) the Kriging Model at a collection of points (xr)
+MtxDbl& KrigingModel::evaluate(MtxDbl& y, const MtxDbl& xr)
+{
+  int nptsxr=xr.getNCols();
+  //printf("nptsxr=%d nvarsrxr=%d",nptsxr,xr.getNCols());
+
+  y.newSize(1,nptsxr);
+  if(buildDerOrder==0) {
+    //you wouldn't want to do this for Gradient Enhanced Kriging
+    //i.e. if gradients of y were used as inputs
+    double singular_y;
+    if(scaler.isYSingular(0,singular_y)) {
+      for(int ipt=0; ipt<nptsxr; ++ipt)
+	y(0,ipt)=singular_y;
+      return y;
+    }
+  }
+  //assert(numVarsr == xr.getNRows());
+  MtxDbl g(nTrend, nptsxr), r(numRowsR, nptsxr);
+
+  if(scaler.isUnScaled()) {
+    eval_trend_fn(g, xr);
+    correlation_matrix(r, xr);
+  }
+  else{
+    MtxDbl xr_scaled(xr);
+    scaler.scaleXrOther(xr_scaled);
+    eval_trend_fn(g, xr_scaled);
+    correlation_matrix(r, xr_scaled);
+  }
+
+  //y=0.0*y+1.0*betaHat^T*g => y = betaHat^T*g
+  matrix_mult(y, betaHat, g, 0.0, 1.0,'T','N');
+
+  //y=1.0*y+1.0*r*rhs where rhs=R^-1*(Y-G(XR)^T*betaHat), initial y=betaHat^T*g => y=betaHat^T*g+rhs^T*r
+  matrix_mult(y, rhs    , r, 1.0, 1.0,'T','N');
+
+  scaler.unScaleYOther(y);
+
+  //printf("y is correct for ValidateMain because it isn't being unscaled\n");
+
+  return y;
+}
+
+MtxDbl& KrigingModel::evaluate_d1y(MtxDbl& d1y, const MtxDbl& xr)
+{
+  int nptsxr=xr.getNCols();
+#ifdef __KRIG_ERR_CHECK__
+  assert((numVarsr == xr.getNRows())&&(0<nptsxr));
+#endif
+  d1y.newSize(numVarsr, nptsxr);
+  if(buildDerOrder==0) {
+    //you wouldn't want to do this for Gradient Enhanced Kriging
+    //i.e. if gradients of y were used as inputs
+    double singular_y;
+    if(scaler.isYSingular(0,singular_y)) {
+      d1y.zero();
+      return d1y;
+    }
+  }
+
+  /*
+  printf("evaluate_d1y()\n");
+  for(int ipt=0; ipt<numPoints; ++ipt) {
+    printf("XR(:,%3d)=[%12.6g",ipt,XR(0,ipt));
+    for(int ixr=1; ixr<numVarsr; ++ixr)
+      printf(", %12.6g",XR(ixr,ipt));
+    printf("]^T Y(%3d)=%12.6g\n",ipt,Y(0,ipt));
+  }
+  */
+
+  MtxDbl xr_scaled(xr);
+  if(~(scaler.isUnScaled())) {
+    //printf("scaling xr_scaled\n");
+    scaler.scaleXrOther(xr_scaled);
+  }
+
+  /*
+  printf("xr       =[%12.6g, %12.6g]\n",xr(0,0),xr(1,0));
+  printf("xr_scaled=[%12.6g, %12.6g]\n",xr_scaled(0,0),xr_scaled(1,0));
+  */
+
+  int nder=num_multi_dim_poly_coef(numVarsr,-1);
+  MtxInt der(numVarsr,nder);
+  multi_dim_poly_power(der,numVarsr,-1); //equivalent to der.identity();
+
+  evaluate_poly_der(d1y,flyPoly,derivBetaHat,Poly,der,betaHat,xr_scaled);
+
+  MtxDbl r(numRowsR,nptsxr);
+  correlation_matrix(r, xr_scaled);
+  //apply_nugget_eval(r);
+  MtxDbl d1r(numRowsR,nptsxr);
+  MtxDbl temp_vec(1,nptsxr);
+
+  for(int ider=0; ider<nder; ++ider) {
+
+    //find the single dimension we are taking the first derviative of
+    int ixr;
+    for(ixr=0; ixr<numVarsr; ++ixr)
+      if(der(ixr,ider)>0)
+	break;
+    //printf("ixr=%d ",ixr);
+#ifdef __KRIG_ERR_CHECK__
+    assert(ixr==ider);
+#endif
+
+    double d1y_unscale_factor=scaler.unScaleFactorDerY(ixr);
+    //printf("d1y_usf=%g\n",d1y_unscale_factor);
+
+    dcorrelation_matrix_dxI(d1r, r, xr_scaled, ixr);
+    matrix_mult(temp_vec,rhs,d1r,0.0,1.0,'T');
+
+    for(int ipt=0; ipt<nptsxr; ++ipt)
+      d1y(ider,ipt)=(d1y(ider,ipt)+temp_vec(0,ipt))*d1y_unscale_factor;
+  }
+  /*
+  printf("d1y(:,0)=[%g",d1y(0,0));
+  for(int ider=1; ider<numVarsr; ++ider)
+    printf(", %g",d1y(ider,0));
+  printf("]\n");
+  */
+  return d1y;
+}
+
+MtxDbl& KrigingModel::evaluate_d2y(MtxDbl& d2y, const MtxDbl& xr)
+{
+  int nptsxr=xr.getNCols();
+  int nder=num_multi_dim_poly_coef(numVarsr,-2);
+  d2y.newSize(nder,nptsxr);
+  if(buildDerOrder==0) {
+    double singular_y;
+    if(scaler.isYSingular(0,singular_y)) {
+      //you wouldn't want to do this for gradient based Kriging
+      //if gradients of y were used as inputs
+      d2y.zero();
+      return d2y;
+    }
+  }
+
+  MtxDbl xr_scaled(xr);
+  if(~(scaler.isUnScaled()))
+    scaler.scaleXrOther(xr_scaled);
+  //assert(numVarsr == xr.getNCols());
+
+  MtxInt der(numVarsr,nder);
+  MtxInt thisder(numVarsr,1);
+  multi_dim_poly_power(der,numVarsr,-2);
+
+  evaluate_poly_der(d2y,flyPoly,derivBetaHat,Poly,der,betaHat,xr_scaled);
+
+  MtxDbl r(numRowsR,nptsxr);
+  correlation_matrix(r, xr);
+  //apply_nugget_eval(r);
+  MtxDbl d1r(numRowsR,nptsxr);
+  MtxDbl d2r(numRowsR,nptsxr);
+  MtxDbl temp_vec(1,nptsxr);
+
+  for(int ider=0; ider<nder; ++ider) {
+    int ixr, jxr, ixrold=-1;
+
+    der.getCols(thisder,ider);
+    double d2y_unscale_factor=scaler.unScaleFactorDerY(thisder);
+    //std::cout << "thisder=[" << thisder(0,0) << ", " << thisder(1,0)
+    //<< "]^T unscalefactor=" << d2y_unscale_factor << std::endl;
+
+    //find the first dimension we are taking a first derviative of
+    for(ixr=0; ixr<numVarsr; ++ixr)
+      if(der(ixr,ider)>0)
+	break;
+
+    if(ixr!=ixrold) {
+      ixrold=ixr;
+      dcorrelation_matrix_dxI(d1r, r, xr_scaled, ixr);
+    }
+
+    //find the second dimension we are taking a first derivative of
+    if(der(ixr,ider)==2)
+      jxr=ixr;
+    else
+      for(jxr=ixr+1; jxr<numVarsr; ++jxr)
+	if(der(jxr,ider)>0)
+	  break;
+#ifdef __KRIG_ERR_CHECK__
+    assert(jxr<numVarsr);
+#endif
+
+    //dcorrelation_matrix_dxI(d2r, d1r, xr_scaled, jvar);
+    d2correlation_matrix_dxIdxJ(d2r, d1r, r, xr_scaled, ixr, jxr);
+    //std::cout << "ider=" << ider << " size(d2r)=[" << d2r.getNRows()
+    //	      << ", " << d2r.getNCols() << "]" << std::endl;
+    matrix_mult(temp_vec,rhs,d2r,0.0,1.0,'T','N');
+
+    for(int ipt=0; ipt<nptsxr; ++ipt)
+      d2y(ider,ipt)=(d2y(ider,ipt)+temp_vec(0,ipt))*d2y_unscale_factor;
+  }
+
+  return d2y;
+}
+
+
+
+/** matrix Ops evaluation of adjusted variance at a single point
+    adj_var=unadjvar*
+            (1-r^T*R^-1*r+(g-G*R^-1*r)^T*(G*R^-1*G^T)^-1*(g-G*R^-1*r))
+    on a point by point basis */
+double KrigingModel::eval_variance(const MtxDbl& xr)
+{
+#ifdef __KRIG_ERR_CHECK__
+  assert( (numVarsr==xr.getNRows()) && (xr.getNCols()==1) );
+#endif
+  MtxDbl g_minus_G_Rinv_r(nTrend,1), r(numRowsR,1);
+
+  double unscaled_unadj_var=estVarianceMLE;
+  if(scaler.isUnScaled()) {
+    eval_trend_fn(g_minus_G_Rinv_r, xr);
+    correlation_matrix(r, xr);
+  }
+  else{
+    unscaled_unadj_var*=scaler.unScaleFactorVarY();
+    MtxDbl xr_scaled(xr);
+    scaler.scaleXrOther(xr_scaled);
+    eval_trend_fn(g_minus_G_Rinv_r, xr_scaled);
+    correlation_matrix(r, xr_scaled);
+  }
+  //at this point g_minus_G_Rinv_r holds g
+
+  MtxDbl Rinv_r(numRowsR,1);
+  MtxDbl G_Rinv_Gtran_inv_g_minus_G_Rinv_r(nTrend,1);
+
+
+  solve_after_Chol_fact(Rinv_r,RChol,r);
+
+  matrix_mult(g_minus_G_Rinv_r,Rinv_Gtran,r,1.0,-1.0,'T','N');
+  //at this point g_minus_G_Rinv_r holds g-G*R^-*r (i.e. the name is correct)
+
+  solve_after_Chol_fact(G_Rinv_Gtran_inv_g_minus_G_Rinv_r,
+			G_Rinv_Gtran_Chol,g_minus_G_Rinv_r);
+
+
+  double adj_var=unscaled_unadj_var*
+    (1.0-dot_product(Rinv_r,r)+
+     dot_product(G_Rinv_Gtran_inv_g_minus_G_Rinv_r,g_minus_G_Rinv_r));
+  //if(!(adj_var>0.0)) {
+  //printf("adj_var=%g unscaled_unadj_var=%g rcondR=%g\n",adj_var,unscaled_unadj_var,rcondR);
+  //fflush(stdout);
+  //}
+  adj_var=std::fabs(adj_var); //hack to handle "negative zero" variance (numerical precision round off error)
+  if(adj_var<0.0) {
+    printf("NKM setting adj_var to zero adj_var=%g unadj_var=%g rcondR=%g\n",adj_var,unscaled_unadj_var,rcondR);
+    adj_var=0.0;
+  }
+  else if(adj_var==0.0)
+    printf("NKM adj_var is zero =%g\n",adj_var);
+  else if(!(adj_var>=0.0))
+    printf("double NKM_KrigingModel::eval_variance(...) adj_var=nan rcondR=%g\n",rcondR);
+
+  return adj_var;
+}
+
+/** Evaluate the adjusted variance for a collection of points using matrix
+    ops (i.e. BLAS and LAPACK) as much as possible)
+    adj_var=unadjvar*
+            (1-r^T*R^-1*r+(g-G*R^-1*r)^T*(G*R^-1*G^T)^-1*(g-G*R^-1*r))
+    on a point by point basis */
+MtxDbl& KrigingModel:: eval_variance(MtxDbl& adj_var, const MtxDbl& xr)
+{
+#ifdef __KRIG_ERR_CHECK__
+  assert(numVarsr==xr.getNRows());
+#endif
+  int nptsxr=xr.getNCols();
+  adj_var.newSize(1,nptsxr);
+  MtxDbl g_minus_G_Rinv_r(nTrend,nptsxr), r(numRowsR,nptsxr);
+
+  double unscaled_unadj_var=estVarianceMLE;
+  if(scaler.isUnScaled()) {
+    eval_trend_fn(g_minus_G_Rinv_r, xr);
+    correlation_matrix(r, xr);
+  }
+  else{
+    unscaled_unadj_var*=scaler.unScaleFactorVarY();
+    MtxDbl xr_scaled(xr);
+    scaler.scaleXrOther(xr_scaled);
+    eval_trend_fn(g_minus_G_Rinv_r, xr_scaled);
+    correlation_matrix(r, xr_scaled);
+  }
+  //right now g_minus_G_Rinv_r actually holds g
+
+  MtxDbl Rinv_r(numRowsR,nptsxr);
+  MtxDbl G_Rinv_Gtran_inv_g_minus_G_Rinv_r(nTrend,nptsxr);
+
+  solve_after_Chol_fact(Rinv_r,RChol,r);
+  matrix_mult(g_minus_G_Rinv_r,Rinv_Gtran,r,1.0,-1.0,'T','N');
+  //g_minus_G_Rinv_r now holds g-G*R^-1*r (i.e. it's name is correct)
+
+  solve_after_Chol_fact(G_Rinv_Gtran_inv_g_minus_G_Rinv_r,
+			G_Rinv_Gtran_Chol,g_minus_G_Rinv_r);
+
+  for(int ipt=0; ipt<nptsxr; ++ipt) {
+    //saved 2*nptsxr loops
+    adj_var(0,ipt)=1.0-r(0,ipt)*Rinv_r(0,ipt)+
+      g_minus_G_Rinv_r(0,ipt)*G_Rinv_Gtran_inv_g_minus_G_Rinv_r(0,ipt);
+
+    //looks a lot like matrix mult but only N^2 ops... it's the diagonal
+    //of a matrix matrix multiply
+    for(int iR=1; iR<numRowsR; ++iR)
+      adj_var(0,ipt)-=r(iR,ipt)*Rinv_r(iR,ipt);
+
+    //looks a lot like matrix mult but only N^2 ops ... it's the diagonal
+    //of a matrix matrix multiply
+    for(int itrend=1; itrend<nTrend; ++itrend)
+      adj_var(0,ipt)+=g_minus_G_Rinv_r(itrend,ipt)*
+	G_Rinv_Gtran_inv_g_minus_G_Rinv_r(itrend,ipt);
+
+    adj_var(0,ipt)*=unscaled_unadj_var;
+
+    if(adj_var(0,ipt)<0.0)
+      adj_var(0,ipt)=std::fabs(adj_var(0,ipt)); //zero to within round off and the magnitude of the negative value will give us an idea of how big round off is
+    else if(!(adj_var(0,ipt)>=0.0))
+      printf("MtxDbl& NKM_KrigingModel::eval_variance(...) adj_var(%d)=nan rcondR=%g\n",ipt,rcondR);
+  }
+
+  return adj_var;
+}
+
+/** set R=(R+nug*I), where the original R is the correlation matrix for the
+    data that the model is built from.  For GEK this generalizes to
+    R(i,i)=R(i,i)*(1+nug); Modifying the correlation matrix by the inclusion
+    of a nugget causes the KrigingModel to smooth the data, i.e. approximate
+    it rather than interpolate it (which is good if you know how big your
+    measurement noise is), it can also be used to fix an ill conditioned
+    correlation matrix.  The convention is that capital matrices are for
+    data the model is built from, lower case matrices are for arbitrary
+    points to evaluate the model at */
+void KrigingModel::apply_nugget_build() {
+  if(!(nug>0.0)) return;
+  //printf("applying nugget=%22.16g\n",nug);
+
+  int nrowsR=R.getNRows();
+#ifdef __KRIG_ERR_CHECK__
+  assert(nrowsR==R.getNCols());
+#endif
+
+  double one_plus_nug=1.0+nug;
+  for(int i=0; i<nrowsR; ++i)
+    R(i,i)*=one_plus_nug;
+
+  return;
+}
+
+// convert from correlation lengths to theta (a.k.a. correlation parameters)
+MtxDbl& KrigingModel::get_theta_from_corr_len(MtxDbl& theta,
+					      const MtxDbl& corr_len) const{
+  theta.newSize(numVarsr,1);
+  if(corrFunc==GAUSSIAN_CORR_FUNC)
+    for(int ixr=0; ixr<numVarsr; ++ixr)
+      theta(ixr,0)=0.5/(corr_len(ixr,0)*corr_len(ixr,0));
+  else if(corrFunc==EXP_CORR_FUNC) {
+#ifdef __KRIG_ERR_CHECK__
+    assert(buildDerOrder==0);
+#endif
+    for(int ixr=0; ixr<numVarsr; ++ixr)
+      theta(ixr,0)=1.0/corr_len(ixr,0);
+  }
+  else if(corrFunc==POW_EXP_CORR_FUNC) {
+#ifdef __KRIG_ERR_CHECK__
+    assert(buildDerOrder==0);
+#endif
+    for(int ixr=0; ixr<numVarsr; ++ixr)
+      theta(ixr,0)=1.0/
+	(powExpCorrFuncPow*std::pow(corr_len(ixr,0),powExpCorrFuncPow));
+  }
+  else if(corrFunc==MATERN_CORR_FUNC)
+    for(int ixr=0; ixr<numVarsr; ++ixr)
+      theta(ixr,0)=std::sqrt(2.0*maternCorrFuncNu)/corr_len(ixr,0);
+  else{
+    std::cerr << "unknown corrFunc in get_theta_from_corr_len()\n";
+    assert(false);
+  }
+  return theta;
+}
+
+// convert from theta (a.k.a. correlation parameters) to correlation lengths
+MtxDbl& KrigingModel::get_corr_len_from_theta(MtxDbl& corr_len,
+					      const MtxDbl& theta) const{
+  corr_len.newSize(numVarsr,1);
+  if(corrFunc==GAUSSIAN_CORR_FUNC)
+    for(int ixr=0; ixr<numVarsr; ++ixr)
+      corr_len(ixr,0)=std::sqrt(0.5/theta(ixr,0));
+  else if(corrFunc==EXP_CORR_FUNC) {
+#ifdef __KRIG_ERR_CHECK__
+    assert(buildDerOrder==0);
+#endif
+    for(int ixr=0; ixr<numVarsr; ++ixr)
+      corr_len(ixr,0)=1.0/theta(ixr,0);
+  }
+  else if(corrFunc==POW_EXP_CORR_FUNC) {
+#ifdef __KRIG_ERR_CHECK__
+    assert(buildDerOrder==0);
+#endif
+    for(int ixr=0; ixr<numVarsr; ++ixr)
+      corr_len(ixr,0)=
+	std::pow(powExpCorrFuncPow*theta(ixr,0),-1.0/powExpCorrFuncPow);
+  }
+  else if(corrFunc==MATERN_CORR_FUNC)
+    for(int ixr=0; ixr<numVarsr; ++ixr)
+      corr_len(ixr,0)=std::sqrt(2.0*maternCorrFuncNu)/theta(ixr,0);
+  else{
+    std::cerr << "unknown corrFunc in get_theta_from_corr_len()\n";
+    assert(false);
+  }
+  return corr_len;
+}
+
+
+
+
+/** the inline function
+    MtxDbl& KrigingModel::correlation_matrix(MtxDbl& r, const MtxDbl& xr) const
+    calls either
+    MtxDbl& KrigingModel::eval_kriging_correlation_matrix(MtxDbl& r, const MtxDbl& xr) const (i.e. this function)
+    OR
+    MtxDbl& KrigingModel::eval_gek_correlation_matrix(MtxDbl& r, const MtxDbl& xr) const
+
+    r (lower case r) is the Kriging correlation matrix between the
+    interpolation points and build data points, it used to EVALUATE but
+    not construct the emulator's Gaussian process error model
+    i.e. E(y(xr)|Y(XR))=betaHat^T*g(xr)+rhs^T*r  where
+    rhs=R^-1*(Y-G(XR)^T*betaHat)
+    choices for correlation function are gaussian, exponential,
+    powered exponential with 1<power<2, matern with nu=1.5 or 2.5
+    KRD wrote this */
+MtxDbl& KrigingModel::eval_kriging_correlation_matrix(MtxDbl& r, const MtxDbl& xr) const
+{
+  if(buildDerOrder!=0) {
+    std::cerr << "You should only call eval_kriging_correlation_matrix when you want to evaluate regular Kriging (not GEK)\n";
+    assert(buildDerOrder==0);
+  }
+
+  int nptsxr=xr.getNCols(); //points at which we are evalutating the model
+#ifdef __KRIG_ERR_CHECK__
+  //  std::cerr<< "xr.getNRows()=" << xr.getNRows()
+  //	   << " numVarsr=" << numVarsr
+  //	   << " nptsxr=" << nptsxr << std::endl;
+
+  assert((xr.getNRows()==numVarsr)&&(0<nptsxr));
+#endif
+  r.newSize(numRowsR,nptsxr);
+  int i; //row index of the Kriging r matrix (also reorderd XR point index)
+  int j; //column index of the Kriging r matrix (also xr point index)
+  int k; //dimension index
+  double deltax;
+
+  if(corrFunc==GAUSSIAN_CORR_FUNC) {
+    // ******************************************************************
+    // the Gaussian Correlation function
+    // ******************************************************************
+    if(numVarsr==1) {
+      //special case for when there is only 1 input variable
+      double theta=correlations(0,0);
+      for(j=0; j<nptsxr; ++j)
+	for(i=0; i<numPointsKeep; ++i) {
+	  deltax=xr(0,j)-XRreorder(0,i);
+	  r(i,j)=std::exp(-theta*deltax*deltax);
+	}
+    } else {
+      //general case there is more than 1 input variable
+      //even if nptsxr==1 outer looping once isn't a big performance hit
+      //so don't duplicate the code; smallest, i.e. k, loop is inside but
+      //that enables a single writing pass through the output array "r"
+      double sum_neg_theta_dx_squared;
+      for(j=0; j<nptsxr; ++j)
+	for(i=0; i<numPointsKeep; ++i) {
+	  deltax=xr(0,j)-XRreorder(0,i);
+	  sum_neg_theta_dx_squared=-correlations(0,0)* //=- is correct
+	    deltax*deltax;
+	  for(k=1; k<numVarsr-1; ++k) {
+	    deltax=xr(k,j)-XRreorder(k,i);
+	    sum_neg_theta_dx_squared-=correlations(k,0)* //-= is correct
+	      deltax*deltax;
+	  }
+	  k=numVarsr-1;
+	  deltax=xr(k,j)-XRreorder(k,i);
+	  r(i,j)=std::exp(sum_neg_theta_dx_squared
+			  -correlations(k,0)*deltax*deltax);
+
+	}
+    }
+  } else if(corrFunc==EXP_CORR_FUNC) {
+    // ******************************************************************
+    // the exponential correlation function
+    // ******************************************************************
+    if(numVarsr==1) {
+      //special case for when there is only 1 input variable
+      double theta=correlations(0,0);
+      for(j=0; j<nptsxr; ++j)
+	for(i=0; i<numPointsKeep; ++i)
+	  r(i,j)=std::exp(-theta*std::fabs(xr(0,j)-XRreorder(0,i)));
+    }
+    else {
+      //general case there is more than 1 input variable
+      //even if nptsxr==1 outer looping once isn't a big performance hit
+      //so don't duplicate the code; smallest, i.e. k, loop is inside but
+      //that enables a single writing pass through the output array "r"
+      double sum_neg_theta_abs_dx;
+      for(j=0; j<nptsxr; ++j)
+	for(i=0; i<numPointsKeep; ++i) {
+	  sum_neg_theta_abs_dx=-correlations(0,0)* //=- is correct
+	    std::fabs(xr(0,j)-XRreorder(0,i));
+	  for(k=1; k<numVarsr-1; ++k)
+	    sum_neg_theta_abs_dx-=correlations(k,0)* //-= is correct
+	      std::fabs(xr(k,j)-XRreorder(k,i));
+	  k=numVarsr-1;
+	  r(i,j)=std::exp(sum_neg_theta_abs_dx
+			  -correlations(k,0)*std::fabs(xr(k,j)-XRreorder(k,i)));
+	}
+    }
+  } else if(corrFunc==POW_EXP_CORR_FUNC) {
+    // ******************************************************************
+    // the powered exponential correlation function 1<powExpCorrFuncPow<2
+    // because exponention and Gaussian (a.k.a. squared exponential) were
+    // pulled out
+    // ******************************************************************
+    if(numVarsr==1) {
+      //special case for when there is only 1 input variable
+      double theta=correlations(0,0);
+      for(i=0; i<numPointsKeep; ++i)
+	for(j=0; j<nptsxr; ++j)
+	  r(i,j)=std::exp(-theta*std::pow(std::fabs(xr(0,j)-XRreorder(0,i)),
+					  powExpCorrFuncPow));
+    } else {
+      //general case there is more than 1 input variable
+      //even if nptsxr==1 outer looping once isn't a big performance hit
+      //so don't duplicate the code; smallest, i.e. k, loop is inside but
+      //that enables a single writing pass through the output array "r"
+      double sum_neg_theta_abs_dx_pow;
+      for(j=0; j<nptsxr; ++j)
+	for(i=0; i<numPointsKeep; ++i) {
+	  sum_neg_theta_abs_dx_pow=-correlations(0,0)* //=- is correct
+	    std::pow(std::fabs(xr(0,j)-XRreorder(0,i)),powExpCorrFuncPow);
+	  for(k=1; k<numVarsr-1; ++k)
+	    sum_neg_theta_abs_dx_pow-=correlations(k,0)* //-= is correct
+	      std::pow(std::fabs(xr(k,j)-XRreorder(k,i)),powExpCorrFuncPow);
+	  k=numVarsr-1;
+	  r(i,j)=std::exp(sum_neg_theta_abs_dx_pow-correlations(k,0)*
+			  std::pow(std::fabs(xr(k,j)-XRreorder(k,i)),
+				   powExpCorrFuncPow));
+	}
+    }
+  } else if((corrFunc==MATERN_CORR_FUNC)&&(maternCorrFuncNu==1.5)) {
+    // ******************************************************************
+    // the Matern 3/2 Correlation function
+    // ******************************************************************
+    double theta_abs_dx;
+    if(numVarsr==1) {
+      //special case for when there is only 1 input variable
+      double theta=correlations(0,0);
+      for(i=0; i<numPointsKeep; ++i)
+	for(j=0; j<nptsxr; ++j) {
+	  theta_abs_dx=theta*std::fabs(xr(0,j)-XRreorder(0,i));
+	  r(i,j)=(1.0+theta_abs_dx)*std::exp(-theta_abs_dx);
+	}
+    } else {
+      //general case there is more than 1 input variable
+      //even if nptsxr==1 outer looping once isn't a big performance hit
+      //so don't duplicate the code; smallest, i.e. k, loop is inside but
+      //that enables a single writing pass through the output array "r"
+      double sum_neg_theta_abs_dx;
+      double matern_coef_prod;
+      for(j=0; j<nptsxr; ++j)
+	for(i=0; i<numPointsKeep; ++i) {
+	  theta_abs_dx=correlations(0,0)*std::fabs(xr(0,j)-XRreorder(0,i));
+	  matern_coef_prod=1.0+theta_abs_dx;
+	  sum_neg_theta_abs_dx=-theta_abs_dx; //=- is correct
+	  for(k=1; k<numVarsr-1; ++k) {
+	    theta_abs_dx=correlations(k,0)*std::fabs(xr(k,j)-XRreorder(k,i));
+	    matern_coef_prod*=(1.0+theta_abs_dx);
+	    sum_neg_theta_abs_dx-=theta_abs_dx; //-= is correct
+	  }
+	  k=numVarsr-1;
+	  theta_abs_dx=correlations(k,0)*std::fabs(xr(k,j)-XRreorder(k,i));
+	  r(i,j)=matern_coef_prod*(1.0+theta_abs_dx)*
+	    std::exp(sum_neg_theta_abs_dx-theta_abs_dx);
+	}
+    }
+  } else if((corrFunc==MATERN_CORR_FUNC)&&(maternCorrFuncNu==2.5)) {
+    // ******************************************************************
+    // the Matern 5/2 Correlation function
+    // ******************************************************************
+    double theta_abs_dx;
+    const double one_third=1.0/3.0;
+    if(numVarsr==1) {
+      //special case for when there is only 1 input variable
+      double theta=correlations(0,0);
+      for(i=0; i<numPointsKeep; ++i)
+	for(j=0; j<nptsxr; ++j) {
+	  theta_abs_dx=theta*std::fabs(xr(0,j)-XRreorder(0,i));
+	  r(i,j)=(1.0+theta_abs_dx+theta_abs_dx*theta_abs_dx*one_third)*
+	    std::exp(-theta_abs_dx);
+	}
+    } else {
+      //general case there is more than 1 input variable
+      //even if nptsxr==1 outer looping once isn't a big performance hit
+      //so don't duplicate the code; smallest, i.e. k, loop is inside but
+      //that enables a single writing pass through the output array "r"
+      double sum_neg_theta_abs_dx;
+      double matern_coef_prod;
+      for(j=0; j<nptsxr; ++j)
+	for(i=0; i<numPointsKeep; ++i) {
+	  theta_abs_dx=correlations(0,0)*std::fabs(xr(0,j)-XRreorder(0,i));
+	  matern_coef_prod=1.0+theta_abs_dx+theta_abs_dx*theta_abs_dx*one_third;
+	  sum_neg_theta_abs_dx=-theta_abs_dx; //=- is correct
+	  for(k=1; k<numVarsr-1; ++k) {
+	    theta_abs_dx=correlations(k,0)*std::fabs(xr(k,j)-XRreorder(k,i));
+	    matern_coef_prod*=
+	      (1.0+theta_abs_dx+theta_abs_dx*theta_abs_dx*one_third);
+	    sum_neg_theta_abs_dx-=theta_abs_dx; //-= is correct
+	  }
+	  k=numVarsr-1;
+	  theta_abs_dx=correlations(k,0)*std::fabs(xr(k,j)-XRreorder(k,i));
+	  r(i,j)=matern_coef_prod*
+	    (1.0+theta_abs_dx+theta_abs_dx*theta_abs_dx*one_third)*
+	    std::exp(sum_neg_theta_abs_dx-theta_abs_dx);
+	}
+    }
+  } else{
+      std::cerr << "unknown corrFunc in MtxDbl& eval_kriging_correlation_matrix(MtxDbl& r, const MtxDbl& xr) const\n";
+      assert(false);
+  }
+
+  return r;
+}
+
+
+/** the inline function
+    MtxDbl& KrigingModel::correlation_matrix(MtxDbl& r, const MtxDbl& xr) const
+    calls either
+    MtxDbl& KrigingModel::eval_kriging_correlation_matrix(MtxDbl& r, const MtxDbl& xr) const
+    OR
+    MtxDbl& KrigingModel::eval_gek_correlation_matrix(MtxDbl& r, const MtxDbl& xr) const (i.e. this function)
+
+    r (lower case r) is the GEK correlation matrix between the
+    interpolation points and build data points, it used to EVALUATE but
+    not construct the emulator's Gaussian process error model
+    i.e. E(y(xr)|Y(XR))=g(xr)^T*betaHat+r^T*R^-1*eps where
+    eps=(Y-G(XR)^T*betaHat)
+    choices for correlation function are gaussian, and matern with
+    nu=1.5 or 2.5 KRD wrote this */
+MtxDbl& KrigingModel::eval_gek_correlation_matrix(MtxDbl& r, const MtxDbl& xr) const
+{
+  if(buildDerOrder!=1) {
+    std::cerr << "You should only call eval_gek_correlation_matrix when you want to evaluate Gradient Enhanced Kriging\n";
+    assert(buildDerOrder==1);
+  }
+
+  int nptsxr=xr.getNCols(); //points at which we are evalutating the model
+#ifdef __KRIG_ERR_CHECK__
+  assert((xr.getNCols()==numVarsr)&&(0<nptsxr));
+#endif
+
+  r.newSize(numRowsR,nptsxr);
+  int i; //row index of the GEK r matrix 0<=i<numRowsR
+  int j; //column index of the GEK r matrix 0<=j<nptsxr also the xr point index
+  int k; //dimension index 0<=k<numVarsr (num real variables)
+  int ipt; //XRreorder point index
+  double deltax;  //xr(k,j)-XRreorder(k,ipt)
+  double krig_r;
+
+  //note to future developers on a point that may be confusing otherwise (you
+  //might otherwise mistake this for a bug) all of the derivatives in this
+  //file are with respect to XR not xr, the matern_1pt5_d1_mult_r and
+  //matern_2pt5_d1_mult_r functions in the .hpp file would be for derivatives
+  //with respect to xr (assuming deltax=xr-XR), the difference is here I've
+  //absorbed the negative into deltax going from -deltax (where deltax=XR-xr)
+  //to deltax=xr-XR;
+  int neqn_per_pt=numVarsr+1;
+
+  if(corrFunc==GAUSSIAN_CORR_FUNC) {
+    if(numVarsr==1) {
+      double theta=correlations(0,0); //save matrix access lookup
+      double two_theta = 2.0*theta;
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=2) {
+	  deltax=(xr(0,j)-XRreorder(0,ipt));
+	  krig_r=std::exp(-theta*deltax*deltax);
+	  r(i  ,j)=krig_r;
+	  r(i+1,j)=two_theta*deltax*krig_r; //this is a first
+	  //derivative with respect to XR not xr
+	}
+	if(numPointsKeep>numWholePointsKeep) {
+	  //since there's part of another point left and we know that
+	  //there is only one derivative it means that were missing that
+	  //derivative and only have the function value
+#ifdef __KRIG_ERR_CHECK__
+	  assert((ipt==numWholePointsKeep)&&
+		 (ipt==numPointsKeep-1)&&
+		 (i==neqn_per_pt*numWholePointsKeep)&&
+		 (i==numRowsR-1));
+#endif
+	  deltax=(xr(0,j)-XRreorder(0,ipt));
+	  r(i,j)=std::exp(-theta*deltax*deltax);
+	}
+      }
+    } else{ //there is more than 1 dimensions and more than one
+      //evaluation point
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=neqn_per_pt) {
+	  deltax=xr(0,j)-XRreorder(0,ipt);
+	  r(i+1,j)=correlations(0,0)*deltax; //dr_dXR/(2*r)
+	  krig_r=-correlations(0,0)*deltax*deltax; //=- is correct
+	  for(k=1; k<numVarsr-1; ++k) {
+	    deltax=xr(k,j)-XRreorder(k,ipt);
+	    r(i+1+k,j)=correlations(k,0)*deltax; //dr_dXR/(2*r)
+	    krig_r-=correlations(k,0)*deltax*deltax; //-= is correct
+	  }
+	  k=numVarsr-1;
+	  deltax=xr(k,j)-XRreorder(k,ipt);
+	  krig_r=std::exp(krig_r-correlations(k,0)*deltax*deltax);
+	  r(i,j)=krig_r; //r(XR(i,:),xr(j,:)) (the correlation function)
+	  krig_r*=2.0; //now it's 2*kriging's correlation function to save
+	  //some ops
+	  //dr_dXR_k=2*theta(k)*(xr(k,j)-XRreorder(k,ipt))*r(xr(k,j),XRreorder(k,ipt))
+	  r(i+1+k,j)=correlations(k,0)*deltax*krig_r; //dr_dXR
+	  for(k=0; k<numVarsr-1; ++k)
+	    r(i+1+k,j)*=krig_r; //dr_dXR
+	}
+	if(numPointsKeep>numWholePointsKeep) {
+	  //the last XR point isn't a "whole point" we dropped some derivatives
+	  //out of its gradient to meet the bound on rcond, numExtraDerKeep
+	  //is the number of derivatives kept for the last point.  The
+	  //derivatives of the last point have NOT been reordered, they appear
+	  //in the same order as the input variables
+#ifdef __KRIG_ERR_CHECK__
+	  assert((ipt==numWholePointsKeep)&&
+		 (ipt==numPointsKeep-1)&&
+		 (i==neqn_per_pt*numWholePointsKeep));
+#endif
+	  //printf("deltax=xr(0,%d)-XRreorder(0,%d);\n",j,ipt);
+	  deltax=xr(0,j)-XRreorder(0,ipt);
+	  krig_r=-correlations(0,0)*deltax*deltax; //=- is correct
+	  for(k=1; k<numVarsr-1; ++k) {
+	    deltax=xr(k,j)-XRreorder(k,ipt);
+	    krig_r-=correlations(k,0)*deltax*deltax; //-= is correct
+	  }
+	  k=numVarsr-1;
+	  deltax=xr(k,j)-XRreorder(k,ipt);
+	  krig_r=std::exp(krig_r-correlations(k,0)*deltax*deltax);
+	  r(i,j)=krig_r; //r(XR(i,:),xr) (the correlation function)
+	  krig_r*=2.0; //now it's 2*kriging's correlation function to save
+	  //some ops
+	  //dr_dXR_k=2*theta(k)*(xr(k,j)-XRreorder(k,ipt))*r(xr(k,j),XRreorder(k,ipt))
+	  for(k=0; k<numExtraDerKeep; ++k)
+	    r(i+1+k,j)=correlations(k,0)*(xr(k,j)-XRreorder(k,ipt))*krig_r; //dr_dXR
+	}
+      }
+    }
+  } else if((corrFunc==MATERN_CORR_FUNC)&&(maternCorrFuncNu==1.5)) {
+    //this starts the section for the Matern 3/2 correlation function
+
+    double theta_abs_dx;
+    if(numVarsr==1) {
+      double theta=correlations(0,0); //save array access lookup
+      double theta_squared= theta*theta;
+      double exp_neg_theta_abs_dx;
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=2) {
+	  deltax=(xr(0,j)-XRreorder(0,ipt));
+	  theta_abs_dx=theta*std::fabs(deltax);
+	  exp_neg_theta_abs_dx=std::exp(-theta_abs_dx);
+	  r(i  ,j)=(1.0+theta_abs_dx)*exp_neg_theta_abs_dx; //1D correlation
+	  //function
+	  r(i+1,j)=theta_squared*deltax*exp_neg_theta_abs_dx; //this is a first
+	  //derivative with respect to XR not xr
+	}
+	if(numPointsKeep>numWholePointsKeep) {
+	  //since there's part of another point left and we know that
+	  //there is only one derivative it means that were missing that
+	  //derivative and only have the function value
+#ifdef __KRIG_ERR_CHECK__
+	  assert((ipt==numWholePointsKeep)&&
+		 (ipt==numPointsKeep-1)&&
+		 (i==neqn_per_pt*numWholePointsKeep)&&
+		 (i==numRowsR-1));
+#endif
+	  theta_abs_dx=theta*std::fabs(xr(0,j)-XRreorder(0,ipt));
+	  r(i,j)=(1.0+theta_abs_dx)*std::exp(-theta_abs_dx); //1D correlation
+	  //function
+	}
+      }
+    }
+    else{ //there is more than 1 dimension
+      double matern_coef, matern_coef_prod, sum_neg_theta_abs_dx;
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=neqn_per_pt) {
+	  deltax=xr(0,j)-XRreorder(0,ipt);
+	  theta_abs_dx=correlations(0,0)*std::fabs(deltax);
+	  matern_coef=1.0+theta_abs_dx;
+	  matern_coef_prod=matern_coef;
+	  r(i+1,j)= //dr_dXR/r
+	    correlations(0,0)*correlations(0,0)*deltax/matern_coef;
+	  sum_neg_theta_abs_dx=-theta_abs_dx; //=- is correct
+	  for(k=1; k<numVarsr-1; ++k) {
+	    deltax=xr(k,j)-XRreorder(k,ipt);
+	    theta_abs_dx=correlations(k,0)*std::fabs(deltax);
+	    matern_coef=1.0+theta_abs_dx;
+	    matern_coef_prod*=matern_coef;
+	    r(i+1+k,j)= //dr_dXR/r
+	      correlations(k,0)*correlations(k,0)*deltax/matern_coef;
+	    sum_neg_theta_abs_dx-=theta_abs_dx; //-= is correct
+	  }
+	  k=numVarsr-1;
+	  deltax=xr(k,j)-XRreorder(k,ipt);
+	  theta_abs_dx=correlations(k,0)*std::fabs(deltax);
+	  matern_coef=1.0+theta_abs_dx;
+	  krig_r=matern_coef_prod*matern_coef*
+	    std::exp(sum_neg_theta_abs_dx-theta_abs_dx);
+	  r(i,j)=krig_r; //r(XR(i,:),xr) (the correlation function)
+	  r(i+1+k,j)= //dr_dXR
+	    correlations(k,0)*correlations(k,0)*deltax/matern_coef*krig_r;
+	  for(k=0; k<numVarsr-1; ++k)
+	    r(i+1+k,j)*=krig_r; //dr_dXR
+	}
+	if(numPointsKeep>numWholePointsKeep) {
+	  //the last XR point isn't a "whole point" we dropped some derivatives
+	  //out of its gradient to meet the bound on rcond, numExtraDerKeep
+	  //is the number of derivatives kept for the last point.  The
+	  //derivatives of the last point have NOT been reordered, they appear
+	  //in the same order as the input variables
+#ifdef __KRIG_ERR_CHECK__
+	  assert((ipt==numWholePointsKeep)&&
+		 (ipt==numPointsKeep-1)&&
+		 (i==neqn_per_pt*numWholePointsKeep));
+#endif
+	  theta_abs_dx=correlations(0,0)*std::fabs(xr(0,j)-XRreorder(0,ipt));
+	  matern_coef_prod=1.0+theta_abs_dx;
+	  sum_neg_theta_abs_dx=-theta_abs_dx; //=- is correct
+	  for(k=1; k<numVarsr-1; ++k) {
+	    theta_abs_dx=correlations(k,0)*std::fabs(xr(k,j)-XRreorder(k,ipt));
+	    matern_coef_prod*=(1.0+theta_abs_dx);
+	    sum_neg_theta_abs_dx-=theta_abs_dx; //-= is correct
+	  }
+	  k=numVarsr-1;
+	  theta_abs_dx=correlations(k,0)*std::fabs(xr(k,j)-XRreorder(k,ipt));
+	  krig_r=matern_coef_prod*(1.0+theta_abs_dx)*
+	    std::exp(sum_neg_theta_abs_dx-theta_abs_dx);
+	  r(i,j)=krig_r; //r(XR(i,:),xr) (the correlation function)
+	  for(k=0; k<numExtraDerKeep; ++k) {
+	    deltax=xr(k,j)-XRreorder(k,ipt);
+	    r(i+1+k,j)=krig_r * //r(i+1+k,j)=dr_dXR
+	      correlations(k,0)*correlations(k,0)*deltax/
+	      (1.0+correlations(k,0)*std::fabs(deltax));
+	  }
+	}
+      }
+    }
+  } else if((corrFunc==MATERN_CORR_FUNC)&&(maternCorrFuncNu==2.5)) {
+    //this starts the section for the Matern 5/2 correlation function
+
+    const double one_third=1.0/3.0;
+    double theta_abs_dx;
+    if(numVarsr==1) {
+      double theta=correlations(0,0); //save array access lookup
+      double theta_squared= theta*theta;
+      double exp_neg_theta_abs_dx;
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=2) {
+	  deltax=(xr(0,j)-XRreorder(0,ipt));
+	  theta_abs_dx=theta*std::fabs(deltax);
+	  exp_neg_theta_abs_dx=std::exp(-theta_abs_dx);
+	  r(i  ,j)=(1.0+theta_abs_dx+theta_abs_dx*theta_abs_dx*one_third)*
+	    exp_neg_theta_abs_dx; //1D correlation function
+	  r(i+1,j)=theta_squared*deltax*(1.0+theta_abs_dx)*one_third*
+	    exp_neg_theta_abs_dx; //this is a first derivative with respect
+	  //to XR not xr
+	}
+	if(numPointsKeep>numWholePointsKeep) {
+	  //since there's part of another point left and we know that
+	  //there is only one derivative it means that were missing that
+	  //derivative and only have the function value
+#ifdef __KRIG_ERR_CHECK__
+	  assert((ipt==numWholePointsKeep)&&
+		 (ipt==numPointsKeep-1)&&
+		 (i==neqn_per_pt*numWholePointsKeep)&&
+		 (i==numRowsR-1));
+#endif
+	  theta_abs_dx=theta*std::fabs(xr(0,j)-XRreorder(0,ipt));
+	  r(i  ,j)=(1.0+theta_abs_dx+theta_abs_dx*theta_abs_dx*one_third)*
+	    std::exp(-theta_abs_dx); //1D correlation function
+	}
+      }
+    }
+    else{ //there is more than 1 dimension
+      double matern_coef, matern_coef_prod, sum_neg_theta_abs_dx;
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=neqn_per_pt) {
+	  deltax=xr(0,j)-XRreorder(0,ipt);
+	  theta_abs_dx=correlations(0,0)*std::fabs(deltax);
+	  matern_coef=1.0+theta_abs_dx+theta_abs_dx*theta_abs_dx*one_third;
+	  matern_coef_prod=matern_coef;
+	  r(i+1,j)= //dr_dXR/r
+	    correlations(0,0)*correlations(0,0)*deltax*(1.0+theta_abs_dx)*
+	    one_third/matern_coef;
+	  sum_neg_theta_abs_dx=-theta_abs_dx; //=- is correct
+	  for(k=1; k<numVarsr-1; ++k) {
+	    deltax=xr(k,j)-XRreorder(k,ipt);
+	    theta_abs_dx=correlations(k,0)*std::fabs(deltax);
+	    matern_coef=1.0+theta_abs_dx+theta_abs_dx*theta_abs_dx*one_third;
+	    matern_coef_prod*=matern_coef;
+	    r(i+1+k,j)= //dr_dXR/r
+	      correlations(k,0)*correlations(k,0)*deltax*(1.0+theta_abs_dx)*
+	      one_third/matern_coef;
+	    sum_neg_theta_abs_dx-=theta_abs_dx; //-= is correct
+	  }
+	  k=numVarsr-1;
+	  deltax=xr(k,j)-XRreorder(k,ipt);
+	  theta_abs_dx=correlations(k,0)*std::fabs(deltax);
+	  matern_coef=1.0+theta_abs_dx+theta_abs_dx*theta_abs_dx*one_third;
+	  krig_r=matern_coef_prod*matern_coef*
+	    std::exp(sum_neg_theta_abs_dx-theta_abs_dx);
+	  r(i,j)=krig_r; //r(XR(i,:),xr) (the correlation function)
+	  r(i+1+k,j)= //dr_dXR
+	    correlations(k,0)*correlations(k,0)*deltax*(1.0+theta_abs_dx)*
+	    one_third/matern_coef*krig_r;
+	  for(k=0; k<numVarsr-1; ++k)
+	    r(i+1+k,j)*=krig_r; //dr_dXR
+	}
+	if(numPointsKeep>numWholePointsKeep) {
+	  //the last XR point isn't a "whole point" we dropped some derivatives
+	  //out of its gradient to meet the bound on rcond, numExtraDerKeep
+	  //is the number of derivatives kept for the last point.  The
+	  //derivatives of the last point have NOT been reordered, they appear
+	  //in the same order as the input variables
+#ifdef __KRIG_ERR_CHECK__
+	  assert((ipt==numWholePointsKeep)&&
+		 (ipt==numPointsKeep-1)&&
+		 (i==neqn_per_pt*numWholePointsKeep));
+#endif
+	  theta_abs_dx=correlations(0,0)*std::fabs(xr(0,j)-XRreorder(0,ipt));
+	  matern_coef_prod=1.0+theta_abs_dx+theta_abs_dx*theta_abs_dx*one_third;
+	  sum_neg_theta_abs_dx=-theta_abs_dx; //=- is correct
+	  for(k=1; k<numVarsr-1; ++k) {
+	    theta_abs_dx=correlations(k,0)*std::fabs(xr(k,j)-XRreorder(k,ipt));
+	    matern_coef_prod*=
+	      (1.0+theta_abs_dx+theta_abs_dx*theta_abs_dx*one_third);
+	    sum_neg_theta_abs_dx-=theta_abs_dx; //-= is correct
+	  }
+	  k=numVarsr-1;
+	  theta_abs_dx=correlations(k,0)*std::fabs(xr(k,j)-XRreorder(k,ipt));
+	  krig_r=matern_coef_prod*
+	    (1.0+theta_abs_dx+theta_abs_dx*theta_abs_dx*one_third)*
+	    std::exp(sum_neg_theta_abs_dx-theta_abs_dx);
+	  r(i,j)=krig_r; //r(XR(i,:),xr) (the correlation function)
+	  for(k=0; k<numExtraDerKeep; ++k) {
+	    deltax=xr(k,j)-XRreorder(k,ipt);
+	    theta_abs_dx=correlations(k,0)*std::fabs(deltax);
+	    r(i+1+k,j)=krig_r * //r(i+1+k,j)=dr_dXR
+	      correlations(k,0)*correlations(k,0)*deltax*(1.0+theta_abs_dx)/
+	      (3.0*(1.0+theta_abs_dx)+theta_abs_dx*theta_abs_dx);
+
+	  }
+	}
+      }
+    }
+  } else{
+    std::cerr << "Unknown or Invalid Correlation function for Gradient Enhanced Kriging in MtxDbl& KrigingModel::eval_gek_correlation_matrix(MtxDbl& r, const MtxDbl& xr) const\n";
+    assert(false);
+  }
+
+
+  return r;
+}
+
+
+///Ider is the variable/dimension not the point
+MtxDbl& KrigingModel::eval_kriging_dcorrelation_matrix_dxI(MtxDbl& dr, const MtxDbl& r, const MtxDbl& xr, int Ider) const
+{
+  if(buildDerOrder!=0) {
+    std::cerr << "You should only call eval_kriging_dcorrelation_matrix_dxI when you want to evaluate regular Kriging's (not GEK's) first derivative.\n";
+    assert(buildDerOrder==0);
+  }
+  int nptsxr=xr.getNCols();
+#ifdef __KRIG_ERR_CHECK__
+  assert((r.getNCols()==nptsxr)&&(r.getNRows()==numRowsR)&&
+	 (xr.getNRows()==numVarsr)&&(0<=Ider)&&(Ider<numVarsr));
+#endif
+  dr.newSize(numRowsR,nptsxr);
+  int i; //row index of r & dr, also the point index of reordered XR
+  int j; //column index of r & dr, also the point index of xr
+
+  if(corrFunc==GAUSSIAN_CORR_FUNC) {
+    // *******************************************************************
+    // Gaussian Correlation Function
+    // GAUSSIAN_CORR_FUNC is infinitely differentiable
+    // *******************************************************************
+    double neg_two_theta=-2.0*correlations(Ider,0); //save matrix dereference
+    //for speed
+    for(j=0; j<nptsxr; ++j)
+      for(i=0; i<numPointsKeep; ++i)
+	dr(i,j)=r(i,j)*neg_two_theta*(xr(Ider,j)-XRreorder(Ider,i));
+  } else if(corrFunc==EXP_CORR_FUNC) {
+    // *******************************************************************
+    // Exponential Correlation Function
+    // 1D EXP_CORR_FUNC r(x1,x2) is differentiable except where x1==x2
+    // this is correct for x1!=x2
+    // *******************************************************************
+    double neg_theta=-correlations(Ider,0); //save matrix dereference for
+    //speed
+    for(j=0; j<nptsxr; ++j)
+      for(i=0; i<numPointsKeep; ++i)
+	dr(i,j)=r(i,j)*neg_theta*dsign(xr(Ider,j)-XRreorder(Ider,i));
+  } else if(corrFunc==POW_EXP_CORR_FUNC) {
+    // *******************************************************************
+    // Powered Exponential Correlation Function with 1<power<2
+    // 1D POW_EXP_CORR_FUNC r(x1,x2) is once differential everywhere (and
+    // twice+ differentiable where x1!=x2)
+    // *******************************************************************
+    double neg_theta_pow=-powExpCorrFuncPow*correlations(Ider,0); //save
+    //matrix dereference for speed
+    double pow_m_1=powExpCorrFuncPow-1.0; //for speed
+    double delta_x;
+    for(int j=0; j<nptsxr; ++j)
+      for(int i=0; i<numPointsKeep; ++i) {
+	delta_x=xr(Ider,j)-XRreorder(Ider,i);
+	dr(i,j)=r(i,j)*dsign(delta_x)*neg_theta_pow*
+	  std::pow(std::fabs(delta_x),pow_m_1);
+      }
+  } else if((corrFunc==MATERN_CORR_FUNC)&&(maternCorrFuncNu==1.5)) {
+    // *******************************************************************
+    // Matern 3/2 Correlation Function
+    // 1D MATERN_CORR_FUNC 1.5 is once differentiable everywhere (and
+    // twice+ differentiable where x1!=x2, while not twice differentiable
+    // at x1==x2 the limit of the 2nd derivative is defined and is the
+    // same from both sides see Lockwood and Anitescu)
+    // *******************************************************************
+    double theta=correlations(Ider,0); //save matrix dereference for speed
+    for(j=0; j<nptsxr; ++j)
+      for(i=0; i<numPointsKeep; ++i)
+	dr(i,j)=r(i,j)*
+	  matern_1pt5_d1_mult_r(theta,xr(Ider,j)-XRreorder(Ider,i));
+  } else if((corrFunc==MATERN_CORR_FUNC)&&(maternCorrFuncNu==2.5)) {
+    // *******************************************************************
+    // Matern 5/2 Correlation Function
+    // 1D MATERN_CORR_FUNC 2.5 is twice differentiable everywhere (and
+    // twice+ differentiable where x1!=x2)
+    // *******************************************************************
+    double theta=correlations(Ider,0); //save matrix dereference for speed
+    for(j=0; j<nptsxr; ++j)
+      for(i=0; i<numPointsKeep; ++i)
+	dr(i,j)=r(i,j)*
+	  matern_2pt5_d1_mult_r(theta,xr(Ider,j)-XRreorder(Ider,i));
+  } else{
+    std::cerr << "unknown corrFunc in MtxDbl& KrigingModel::eval_kriging_dcorrelation_matrix_dxI(MtxDbl& dr, const MtxDbl& r, const MtxDbl& xr, int Ider) const\n";
+    assert(false);
+  }
+  return dr;
+}
+///Ider is the variable/dimension not the point
+MtxDbl& KrigingModel::eval_gek_dcorrelation_matrix_dxI(MtxDbl& dr, const MtxDbl& r, const MtxDbl& xr, int Ider) const
+{
+  if(buildDerOrder!=1) {
+    std::cerr << "You should only call eval_gek_dcorrelation_matrix_dxI when you want to evaluate Gradient Enhanced Kriging's first derivative\n";
+    assert(buildDerOrder==1);
+  }
+  int nptsxr=xr.getNCols();
+#ifdef __KRIG_ERR_CHECK__
+  assert((r.getNCols()==nptsxr)&&(r.getNRows()==numRowsR)&&
+	 (xr.getNRows()==numVarsr)&&(0<=Ider)&&(Ider<numVarsr));
+#endif
+  dr.newSize(numRowsR,nptsxr);
+  int neqn_per_pt=1+numVarsr;
+  int i; //row index of r & dr
+  int j; //column index of r & dr, also the point index of xr
+  int k; //dimension index
+  int ipt; //point index of reordered XR
+
+  if(corrFunc==GAUSSIAN_CORR_FUNC) {
+    // *******************************************************************
+    // Gaussian Correlation Function
+    // GAUSSIAN_CORR_FUNC is infinitely differentiable
+    // *******************************************************************
+    double two_theta=2.0*correlations(Ider,0); //save matrix dereference for speed
+    double neg_two_theta_dx;
+    if(numVarsr==1)
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=2) {
+	  neg_two_theta_dx=two_theta*(XRreorder(Ider,ipt)-xr(Ider,j));
+	  dr(i  ,j)=r(i,j)*neg_two_theta_dx;
+	  dr(i+1,j)=r(i,j)*two_theta + r(i+1,j)*neg_two_theta_dx;
+	}
+	// since there is only one dimension if there is a partial point
+	// it will be a function value only, and actually recalculating it
+	// will likely be faster on average then checking if there's a
+	// partial point and calculating it if needed
+	ipt=numPointsKeep-1;
+	i=ipt*2;
+	dr(i  ,j)=r(i,j)*two_theta*(XRreorder(Ider,ipt)-xr(Ider,j));
+      }
+    else{
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=neqn_per_pt) {
+	  neg_two_theta_dx=two_theta*(XRreorder(Ider,ipt)-xr(Ider,j));
+	  dr(i,j)=r(i,j)*neg_two_theta_dx;
+	  for(k=0; k<numVarsr; ++k)
+	    dr(i+1+k,j)=r(i+1+k,j)*neg_two_theta_dx;
+	  dr(i+1+Ider,j)+=r(i,j)*two_theta;
+	}
+	if(numPointsKeep>numWholePointsKeep) {
+	  //ipt and i should be what we need them to be
+#ifdef __KRIG_ERR_CHECK__
+	  assert((ipt==numWholePointsKeep)&&
+		 (ipt==numPointsKeep-1)&&
+		 (i==neqn_per_pt*numWholePointsKeep));
+#endif
+	  neg_two_theta_dx=two_theta*(XRreorder(Ider,ipt)-xr(Ider,j));
+	  dr(i,j)=r(i,j)*neg_two_theta_dx;
+	  for(k=0; k<numExtraDerKeep; ++k)
+	    dr(i+1+k,j)=r(i+1+k,j)*neg_two_theta_dx;
+	  if(Ider<numExtraDerKeep)
+	    dr(i+1+Ider,j)+=r(i,j)*two_theta;
+	}
+      }
+    }
+  } else if(corrFunc==EXP_CORR_FUNC) {
+    std::cerr << "The exponential correlation function is not a valid correlation function for gradient enhanced Kriging\n";
+      assert(false);
+  } else if(corrFunc==POW_EXP_CORR_FUNC) {
+    std::cerr << "The powered exponential (with power < 2) correlation function is not a valid correlation function for gradient enhanced Kriging\n";
+      assert(false);
+  } else if((corrFunc==MATERN_CORR_FUNC)&&(maternCorrFuncNu==1.5)) {
+    // *******************************************************************
+    // Matern 3/2 Correlation Function
+    // 1D MATERN_CORR_FUNC 1.5 is once differentiable everywhere (and
+    // twice+ differentiable where x1!=x2, while not twice differentiable
+    // at x1==x2 the limit of the 2nd derivative is defined and is the
+    // same from both sides see Lockwood and Anitescu)
+    // *******************************************************************
+    double theta=correlations(Ider,0); //save matrix dereference for speed
+    double neg_theta_squared=-theta*theta;
+    double deltax;
+    double matern_coef;
+    if(numVarsr==1)
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=2) {
+	  deltax=(xr(Ider,j)-XRreorder(Ider,ipt));
+	  matern_coef=1.0+theta*std::fabs(deltax);
+	  dr(i  ,j)=r(i,j)*neg_theta_squared*deltax/matern_coef;
+	  dr(i+1,j)=r(i,j)*neg_theta_squared*(1.0-2.0/matern_coef);
+	}
+	// since there is only one dimension if there is a partial point
+	// it will be a function value only, and actually recalculating it
+	// will likely be faster on average then checking if there's a
+	// partial point and calculating it if needed
+	ipt=numPointsKeep-1;
+	i=ipt*2;
+	deltax=(xr(Ider,j)-XRreorder(Ider,ipt));
+	dr(i,j)=r(i,j)*neg_theta_squared*deltax/(1.0+theta*std::fabs(deltax));
+      }
+    else{
+      double matern_d1_mult_r;
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=neqn_per_pt) {
+	  deltax=(xr(Ider,j)-XRreorder(Ider,ipt));
+	  matern_coef=1.0+theta*std::fabs(deltax);
+	  matern_d1_mult_r=neg_theta_squared*deltax/matern_coef;
+	  dr(i  ,j)=r(i,j)*matern_d1_mult_r;
+	  for(k=0; k<numVarsr; ++k)
+	    dr(i+1+k,j)=r(i+1+k,j)*matern_d1_mult_r;
+	  dr(i+1+Ider,j)=r(i,j)*neg_theta_squared*(1.0-2.0/matern_coef);
+	}
+	if(numPointsKeep>numWholePointsKeep) {
+	  //ipt and i should be what we need them to be
+#ifdef __KRIG_ERR_CHECK__
+	  assert((ipt==numWholePointsKeep)&&
+		 (ipt==numPointsKeep-1)&&
+		 (i==neqn_per_pt*numWholePointsKeep));
+#endif
+	  deltax=(xr(Ider,j)-XRreorder(Ider,ipt));
+	  matern_coef=1.0+theta*std::fabs(deltax);
+	  matern_d1_mult_r=neg_theta_squared*deltax/matern_coef;
+	  dr(i  ,j)=r(i,j)*matern_d1_mult_r;
+	  for(k=0; k<numExtraDerKeep; ++k)
+	    dr(i+1+k,j)=r(i+1+k,j)*matern_d1_mult_r;
+	  if(Ider<numExtraDerKeep)
+	    dr(i+1+Ider,j)=r(i,j)*neg_theta_squared*(1.0-2.0/matern_coef);
+	}
+      }
+    }
+  } else if((corrFunc==MATERN_CORR_FUNC)&&(maternCorrFuncNu==2.5)) {
+    // *******************************************************************
+    // Matern 5/2 Correlation Function
+    // 1D MATERN_CORR_FUNC 2.5 is twice differentiable everywhere (and
+    // twice+ differentiable where x1!=x2)
+    // *******************************************************************
+    double theta=correlations(Ider,0); //save matrix dereference for speed
+    double theta_squared=theta*theta;
+    double theta_abs_dx;
+    double deltax;
+    if(numVarsr==1) {
+      double r_theta_squared_div_3_matern_coef;
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=2) {
+	  deltax=(xr(Ider,j)-XRreorder(Ider,ipt));
+	  theta_abs_dx=theta*std::fabs(deltax);
+	  r_theta_squared_div_3_matern_coef=r(i,j)*theta_squared/
+	    (3.0*(1.0+theta_abs_dx)+theta_abs_dx*theta_abs_dx);
+	  dr(i  ,j)=-r_theta_squared_div_3_matern_coef*
+	    deltax*(1.0+theta_abs_dx);
+	  dr(i+1,j)=r_theta_squared_div_3_matern_coef*
+	    (1.0+theta_abs_dx-theta_abs_dx*theta_abs_dx);
+	}
+	// since there is only one dimension if there is a partial point
+	// it will be a function value only, and actually recalculating it
+	// will likely be faster on average then checking if there's a
+	// partial point and calculating it if needed
+	ipt=numPointsKeep-1;
+	i=ipt*2;
+	deltax=(xr(Ider,j)-XRreorder(Ider,ipt));
+	theta_abs_dx=theta*std::fabs(deltax);
+	dr(i,j)=-r(i,j)*theta_squared/
+	  (3.0*(1.0+theta_abs_dx)+theta_abs_dx*theta_abs_dx)*
+	  deltax*(1.0+theta_abs_dx);
+      }
+    } else{
+      double theta_squared_div_3_matern_coef;
+      double matern_d1_mult_r;
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=neqn_per_pt) {
+	  deltax=xr(Ider,j)-XRreorder(Ider,ipt);
+	  theta_abs_dx=theta*std::fabs(deltax);
+	  theta_squared_div_3_matern_coef=theta_squared/
+	    (3.0*(1.0+theta_abs_dx)+theta_abs_dx*theta_abs_dx);
+	  matern_d1_mult_r=-theta_squared_div_3_matern_coef*
+	    deltax*(1.0+theta_abs_dx);
+	  dr(i  ,j)=r(i,j)*matern_d1_mult_r;
+	  for(k=0; k<numVarsr; ++k)
+	    dr(i+1+k,j)=r(i+1+k,j)*matern_d1_mult_r;
+	  dr(i+1+Ider,j)=r(i,j)*theta_squared_div_3_matern_coef*
+	    (1.0+theta_abs_dx-theta_abs_dx*theta_abs_dx);
+	}
+	if(numPointsKeep>numWholePointsKeep) {
+	  //ipt and i should be what we need them to be
+#ifdef __KRIG_ERR_CHECK__
+	  assert((ipt==numWholePointsKeep)&&
+		 (ipt==numPointsKeep-1)&&
+		 (i==neqn_per_pt*numWholePointsKeep));
+#endif
+	  deltax=xr(Ider,j)-XRreorder(Ider,ipt);
+	  theta_abs_dx=theta*std::fabs(deltax);
+	  theta_squared_div_3_matern_coef=theta_squared/
+	    (3.0*(1.0+theta_abs_dx)+theta_abs_dx*theta_abs_dx);
+	  matern_d1_mult_r=-theta_squared_div_3_matern_coef*
+	    deltax*(1.0+theta_abs_dx);
+	  dr(i  ,j)=r(i,j)*matern_d1_mult_r;
+	  for(k=0; k<numExtraDerKeep; ++k)
+	    dr(i+1+k,j)=r(i+1+k,j)*matern_d1_mult_r;
+	  if(Ider<numExtraDerKeep)
+	    dr(i+1+Ider,j)=r(i,j)*theta_squared_div_3_matern_coef*
+	      (1.0+theta_abs_dx-theta_abs_dx*theta_abs_dx);
+	}
+      }
+    }
+  } else{
+    std::cerr << "unknown corrFunc in MtxDbl& KrigingModel::eval_gek_dcorrelation_matrix_dxI(MtxDbl& dr, const MtxDbl& r, const MtxDbl& xr, int Ider) const\n";
+    assert(false);
+  }
+
+  return dr;
+}
+
+
+
+MtxDbl& KrigingModel::eval_kriging_d2correlation_matrix_dxIdxJ(MtxDbl& d2r, const MtxDbl& drI, const MtxDbl& r, const MtxDbl& xr, int Ider, int Jder) const
+{
+  if(buildDerOrder!=0) {
+    std::cerr << "You should only call eval_kriging_correlation_matrix when you want to evaluate regular Kriging (not GEK)\n";
+    assert(buildDerOrder==0);
+  }
+
+  int nptsxr=xr.getNCols(); //points at which we are evalutating the model
+  d2r.newSize(numPointsKeep,nptsxr);
+
+#ifdef __KRIG_ERR_CHECK__
+  assert((r.getNCols()==nptsxr)&&(r.getNRows()==numPointsKeep)&&
+	 (xr.getNRows()==numVarsr)&&(0<=Jder)&&(Jder<numVarsr));
+#endif
+
+  int i; //row index of r, d1r, & d2r; also the point index of reordered XR
+  int j; //column index of r, d1r, & d2r; also the point index of xr
+
+  if(corrFunc==GAUSSIAN_CORR_FUNC) {
+    // *********************************************************************
+    // The GAUSSIAN CORRELATION FUNCTION
+    // is infinitely differentiable, i.e. is C^infinity continuous
+    // *********************************************************************
+    double neg_two_theta_J=-2.0*correlations(Jder,0);
+    if(Ider==Jder) {
+      // taking the 2nd derivative of the 1D correlation function
+      for(j=0; j<nptsxr; ++j)
+	for(i=0; i<numPointsKeep; ++i)
+	  d2r(i,j)=neg_two_theta_J*
+	    ((xr(Jder,j)-XRreorder(Jder,i))*drI(i,j)+r(i,j));
+    } else {
+      // taking the product of the 1st derivative of 2 independent 1D
+      // correlation functions
+      for(j=0; j<nptsxr; ++j)
+	for(i=0; i<numPointsKeep; ++i)
+	  d2r(i,j)=neg_two_theta_J*
+	    (xr(Jder,j)-XRreorder(Jder,i))*drI(i,j);
+    }
+  } else if(corrFunc==EXP_CORR_FUNC) {
+    // *********************************************************************
+    // The EXPONENTIAL CORRELATION FUNCTION
+    // the first derivative WRT theta(J) is
+    //     drJ=-theta(J)*sign(xr(J)-XR(J))*r
+    // if away from xr(J)==XR(J) then d(sign(xr(J)-XR(J))/dxr(J)=0
+    // it at xr(J)==XR(J) then derivative of sign (a.k.a step function) is
+    // two times the delta function (or a rectangle with area 2, whose base
+    // width is a point, i.e. zero, meaning the delta function is infinite).
+    // The following is correct as long as xr(J)=/=XR(J), i.e. as long as
+    // the evaluation point doesn't share a coordinate with any build point.
+    // *********************************************************************
+    double neg_theta_J=-correlations(Jder,0);
+    for(j=0; j<nptsxr; ++j)
+      for(i=0; i<numPointsKeep; ++i)
+	d2r(i,j)=neg_theta_J*dsign(xr(Jder,j)-XRreorder(Jder,i))*drI(i,j);
+  } else if(corrFunc==POW_EXP_CORR_FUNC) {
+    // *********************************************************************
+    // The POWERED EXPONENTIAL CORRELATION FUNCTION with 1<power<2
+    //
+    // the 1st derivative with respect to xr of the 1D correlation function
+    // is defined
+    //
+    // The 2nd derivative with respect to xr of the 1D correlation function
+    // *is undefined at xr==XR,
+    // *approaches negative infinity as xr approaches XR from below, and
+    // *approaches positive infinity as xr approaches XR from above
+    // when xr==XR we use the average of the second derivative from above and
+    // the second derivative from below, that average is exactly zero
+    // *********************************************************************
+    double neg_thetaJ_pow=-correlations(Jder,0)*powExpCorrFuncPow;
+    double pow_minus_1=powExpCorrFuncPow-1.0;
+    double abs_dx;
+    double deltax;
+    if(Ider==Jder) {
+      // taking the 2nd derivative of the 1D correlation function
+      double pow_minus_2=powExpCorrFuncPow-2.0;
+      for(j=0; j<nptsxr; ++j)
+	for(i=0; i<numPointsKeep; ++i) {
+	  deltax=xr(Jder,j)-XRreorder(Jder,i);
+	  if(deltax==0) {
+	    d2r(i,j)=0.0;
+	    std::cerr << "the 2nd derivative of the powered exponential correlation function (with 1<power<2) is undefined when a coordinate of the evaluation point equals the coordinate of a build point, using the zero as the average of + infinity (from above) and - infinity (from below)\n";
+	  }
+	  else{
+	    abs_dx=std::fabs(deltax);
+	    d2r(i,j)=neg_thetaJ_pow*dsign(deltax)*
+	      (pow_minus_1*std::pow(abs_dx,pow_minus_2)*r(i,j)+
+	       std::pow(abs_dx,pow_minus_1)*drI(i,j));
+	  }
+	}
+    } else {
+      //we are taking the product of the first derivatives of 2 independent
+      //1D correlation functions so we don't have to worry about the 2nd
+      //derivative of a 1D correlation function being undefined
+      for(j=0; j<nptsxr; ++j)
+	for(i=0; i<numPointsKeep; ++i) {
+	  deltax=xr(Jder,j)-XRreorder(Jder,i);
+	  d2r(i,j)=neg_thetaJ_pow*dsign(deltax)*
+	    std::pow(std::fabs(deltax),pow_minus_1)*drI(i,j);
+	}
+    }
+  } else if((corrFunc==MATERN_CORR_FUNC)&&(maternCorrFuncNu==1.5)) {
+    // *********************************************************************
+    // The MATERN 3/2 CORRELATION FUNCTION
+    //
+    // the 1st derivative with respect to xr of the 1D correlation function
+    // is defined
+    //
+    // The 2nd derivative with respect to xr of the 1D correlation function
+    // *is undefined at xr==XR,
+    // *is -theta^2*(1-theta*|xr-XR|)*exp(-theta*|xr-XR|) at xr=/=XR
+    // *approaches -theta^2 from above and below
+    // when xr==XR we use the limit, -theta^2
+    // this follows the approach of
+    //   Lockwood, Brian A. and Anitescu, Mihai, "Gradient-Enhanced
+    //      Universal Kriging for Uncertainty Proagation"
+    //      Preprint ANL/MCS-P1808-1110
+    // *********************************************************************
+    double thetaJ=correlations(Jder,0);
+    double neg_thetaJ_squared=-thetaJ*thetaJ;
+    double deltax;
+    if(Ider==Jder) {
+      // taking the 2nd derivative of the 1D correlation function
+      for(j=0; j<nptsxr; ++j)
+	for(i=0; i<numPointsKeep; ++i) {
+	  deltax=xr(Jder,j)-XRreorder(Jder,i);
+	  d2r(i,j)=neg_thetaJ_squared*
+	    (2.0/(1.0+thetaJ*std::fabs(deltax))-1.0)*r(i,j);
+	}
+    }else{
+      // taking the product of the 1st derivative of 2 independent 1D
+      // correlation functions
+      for(j=0; j<nptsxr; ++j)
+	for(i=0; i<numPointsKeep; ++i) {
+	  deltax=xr(Jder,j)-XRreorder(Jder,i);
+	  d2r(i,j)=neg_thetaJ_squared*deltax/(1.0+thetaJ*std::fabs(deltax))*
+	    drI(i,j);
+	}
+    }
+  } else if((corrFunc==MATERN_CORR_FUNC)&&(maternCorrFuncNu==2.5)) {
+    // *********************************************************************
+    // The MATERN 5/2 CORRELATION FUNCTION
+    //
+    // the 1st and 2nd derivatives with respect to xr of the 1D correlation
+    // function are defined, no special treatment is required
+    // *********************************************************************
+    double thetaJ=correlations(Jder,0);
+    double neg_thetaJ_squared=-thetaJ*thetaJ;
+    double deltax;
+    double thetaJ_abs_dx;
+    if(Ider==Jder) {
+      // taking the 2nd derivative of the 1D correlation function
+      for(j=0; j<nptsxr; ++j)
+	for(i=0; i<numPointsKeep; ++i) {
+	  deltax=xr(Jder,j)-XRreorder(Jder,i);
+	  thetaJ_abs_dx=thetaJ*std::fabs(deltax);
+	  d2r(i,j)=neg_thetaJ_squared*
+	    (1.0+thetaJ_abs_dx-thetaJ_abs_dx*thetaJ_abs_dx)/
+	    (3.0*(1.0+thetaJ_abs_dx)+thetaJ_abs_dx*thetaJ_abs_dx)*
+	    r(i,j);
+	}
+    }
+    else {
+      // taking the product of the 1st derivative of 2 independent 1D
+      // correlation functions
+      for(j=0; j<nptsxr; ++j)
+	for(i=0; i<numPointsKeep; ++i) {
+	  deltax=xr(Jder,j)-XRreorder(Jder,i);
+	  thetaJ_abs_dx=thetaJ*std::fabs(deltax);
+	  d2r(i,j)=neg_thetaJ_squared*deltax*(1.0+thetaJ_abs_dx)/
+	    (3.0*(1.0+thetaJ_abs_dx)+thetaJ_abs_dx*thetaJ_abs_dx)*
+	    drI(i,j);
+	}
+    }
+  } else{
+    std::cerr << "unknown corrFunc in MtxDbl& KrigingModel::eval_kriging_d2correlation_matrix_dxIdxJ(MtxDbl& d2r, const MtxDbl& drI, const MtxDbl& r, const MtxDbl& xr, int Ider, int Jder) const\n";
+    assert(false);
+  }
+  return d2r;
+}
+MtxDbl& KrigingModel::eval_gek_d2correlation_matrix_dxIdxJ(MtxDbl& d2r, const MtxDbl& drI, const MtxDbl& r, const MtxDbl& xr, int Ider, int Jder) const
+{
+  if(buildDerOrder!=1) {
+    std::cerr << "You should only call eval_gek_dcorrelation_matrix_dxI when you want to evaluate Gradient Enhanced Kriging's second derivative\n";
+    assert(buildDerOrder==1);
+  }
+  int nptsxr=xr.getNCols(); //points at which we are evalutating the model
+  d2r.newSize(numRowsR,nptsxr);
+
+#ifdef __KRIG_ERR_CHECK__
+  assert((r.getNCols()==nptsxr)&&(r.getNRows()==numPointsKeep)&&
+	 (xr.getNRows()==numVarsr)&&(0<=Jder)&&(Jder<numVarsr));
+#endif
+
+  int i; //row index of r, d1r, & d2r
+  int j; //column index of r, d1r, & d2r; also the point index of xr
+  int k; //dimension index
+  int ipt; //point index of reordered XR
+  int neqn_per_pt=numVarsr+1;
+  double deltax;
+
+  if(corrFunc==GAUSSIAN_CORR_FUNC) {
+    // *********************************************************************
+    // The GAUSSIAN CORRELATION FUNCTION
+    // is infinitely differentiable, i.e. is C^infinity continuous
+    // the reuse lower order derivates formulas are derived by taking
+    // derivatives in the reverse order of occurance and not expanding
+    // derivatives or r of d1r (here called drI)
+    // *********************************************************************
+    double neg_two_thetaJ=-2.0*correlations(Jder,0);
+    if(numVarsr==1) {
+      // if there is only one input variable we are taking the 2nd derivative
+      // of the 1D correlation function
+      // AND WE KNOW THAT Ider=Jder=k so we don't have to "if" to add the
+      // the extra terms
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=2) {
+	  deltax=xr(Jder,j)-XRreorder(Jder,ipt);
+	  d2r(i  ,j)=neg_two_thetaJ*(deltax*drI(i  ,j)+r(i  ,j));
+	  d2r(i+1,j)=neg_two_thetaJ*(deltax*drI(i+1,j)+r(i+1,j)-drI(i,j));
+	}
+	// since there is only one dimension if there is a partial point
+	// it will be a function value only, and actually recalculating it
+	// will likely be faster on average then checking if there's a
+	// partial point and calculating it if needed
+	ipt=numPointsKeep-1;
+	i=ipt*2;
+	d2r(i,j)=neg_two_thetaJ*
+	  ((xr(Jder,j)-XRreorder(Jder,ipt))*drI(i,j)+r(i,j));
+      }
+    } else if(Ider==Jder) {
+      // taking the 2nd derivative of the 1D correlation function
+      // the extra term is -2*theta(J)*r (remember r is for GEK so
+      // the k loop part of it contains derivatives of the Kriging
+      // correlation function with respect to XR)
+      //      std::cout << "size(r)=[" << r.getNRows() << "," << r.getNCols() << "]\n"
+      //		<< "size(drI)=[" << drI.getNRows() << "," << drI.getNCols() << "\n"
+      //	<< "size(d2r)=[" << d2r.getNRows() << "," << d2r.getNCols()
+      //	<< std::endl;
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=neqn_per_pt) {
+	  deltax=xr(Jder,j)-XRreorder(Jder,ipt);
+	  d2r(i,j)=neg_two_thetaJ*(deltax*drI(i,j)+r(i,j));
+	  for(k=0; k<numVarsr; ++k) {
+	    //std::cout << "i=" << i << " j=" << j << " k=" << k << std::endl;
+	    d2r(i+1+k,j)=neg_two_thetaJ*(deltax*drI(i+1+k,j)+r(i+1+k,j));
+	  }
+	  d2r(i+1+Jder,j)-=neg_two_thetaJ*drI(i,j); //minus a negative is
+	  //a positive is correct, this extra term is for Jder=k
+	}
+	if(numPointsKeep>numWholePointsKeep) {
+	  //ipt and i should already have the values we need them to
+#ifdef __KRIG_ERR_CHECK__
+	  assert((ipt==numWholePointsKeep)&&
+		 (ipt==numPointsKeep-1)&&
+		 (i==neqn_per_pt*numWholePointsKeep));
+#endif
+	  deltax=xr(Jder,j)-XRreorder(Jder,ipt);
+	  d2r(i,j)=neg_two_thetaJ*(deltax*drI(i,j)+r(i,j));
+	  for(k=0; k<numExtraDerKeep; ++k)
+	    d2r(i+1+k,j)=neg_two_thetaJ*(deltax*drI(i+1+k,j)+r(i+1+k,j));
+	  if(Jder<numExtraDerKeep)
+	    d2r(i+1+Jder,j)-=neg_two_thetaJ*drI(i,j); //minus a negative is
+  	    //a positive is correct, this extra term is for Jder=k
+	}
+      }
+    } else {
+      // taking the product of the 1st derivative of 2 independent 1D
+      // correlation functions, (actually because this is for GEK, the
+      // k loop is 2nd derivative of the Kriging r, in dimensions
+      // independent of the one we're now taking the 1st derivative of)
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=neqn_per_pt) {
+	  deltax=xr(Jder,j)-XRreorder(Jder,ipt);
+	  d2r(i,j)=neg_two_thetaJ*deltax*drI(i,j);
+	  for(k=0; k<numVarsr; ++k)
+	    d2r(i+1+k,j)=neg_two_thetaJ*deltax*drI(i+1+k,j);
+	  d2r(i+1+Jder,j)-=neg_two_thetaJ*drI(i,j); //actually one element
+	  //of the k loop is the dimension we're taking a derivative with
+	  //respect to, it gets an extra term added to it. minus a negative
+	  //is a positive is correct, this extra term is for Jder=k
+	}
+	if(numPointsKeep>numWholePointsKeep) {
+	  //ipt and i should already have the values we need them to
+#ifdef __KRIG_ERR_CHECK__
+	  assert((ipt==numWholePointsKeep)&&
+		 (ipt==numPointsKeep-1)&&
+		 (i==neqn_per_pt*numWholePointsKeep));
+#endif
+	  deltax=xr(Jder,j)-XRreorder(Jder,ipt);
+	  d2r(i,j)=neg_two_thetaJ*deltax*drI(i,j);
+	  for(k=0; k<numExtraDerKeep; ++k)
+	    d2r(i+1+k,j)=neg_two_thetaJ*deltax*drI(i+1+k,j);
+	  if(Jder<numExtraDerKeep)
+	    d2r(i+1+Jder,j)-=neg_two_thetaJ*drI(i,j); //minus a negative is
+ 	    //a positive is correct, this extra term is for Jder=k
+	}
+      }
+    }
+  } else if(corrFunc==EXP_CORR_FUNC) {
+    std::cerr << "The exponential correlation function is not a valid correlation function for gradient enhanced Kriging\n";
+      assert(false);
+  } else if(corrFunc==POW_EXP_CORR_FUNC) {
+    std::cerr << "The powered exponential (with power < 2) correlation function is not a valid correlation function for gradient enhanced Kriging\n";
+      assert(false);
+  } else if((corrFunc==MATERN_CORR_FUNC)&&(maternCorrFuncNu==1.5)) {
+    // *********************************************************************
+    // The MATERN 3/2 CORRELATION FUNCTION
+    //
+    // the 1st derivative with respect to xr of the 1D correlation function
+    // is defined
+    //
+    // The 2nd derivative with respect to xr of the 1D correlation function
+    // *is undefined at xr==XR,
+    // *is -theta^2*(1-theta*|xr-XR|)*exp(-theta*|xr-XR|) at xr=/=XR
+    // *approaches -theta^2 from above and below
+    // when xr==XR we use the limit, -theta^2
+    // this follows the approach of
+    //   Lockwood, Brian A. and Anitescu, Mihai, "Gradient-Enhanced
+    //      Universal Kriging for Uncertainty Proagation"
+    //      Preprint ANL/MCS-P1808-1110
+    // *********************************************************************
+    double thetaJ=correlations(Jder,0);
+    double thetaJ_squared=thetaJ*thetaJ;
+    double thetaJ_abs_dx;
+    if(numVarsr==1) {
+      // if there is only one input variable we are taking the 2nd derivative
+      // of the 1D GEK correlation function (which contains first derivatives
+      // of the Kriging r with respect to XR) AND WE KNOW THAT Ider=Jder=k so
+      // we don't have to "if" to known when to give the 2nd derivative of
+      // GEK r = 3rd derivative of Kriging r, special treatment
+      double thetaJ_cubed=thetaJ_squared*thetaJ;
+      double r_div_matern_coef;
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=2) {
+	  deltax=xr(Jder,j)-XRreorder(Jder,ipt);
+	  thetaJ_abs_dx=thetaJ*std::fabs(deltax);
+	  r_div_matern_coef=r(i,j)/(1.0+thetaJ_abs_dx);
+	  d2r(i  ,j)=r_div_matern_coef*thetaJ_squared*(thetaJ_abs_dx-1.0);
+	  d2r(i+1,j)=r_div_matern_coef*thetaJ_cubed*dsign(deltax)*
+	    (thetaJ_abs_dx-2.0);
+	}
+	// since there is only one dimension if there is a partial point
+	// it will be a function value only, and actually recalculating it
+	// will likely be faster on average then checking if there's a
+	// partial point and calculating it if needed
+	ipt=numPointsKeep-1;
+	i=ipt*2;
+	thetaJ_abs_dx=thetaJ*std::fabs(xr(Jder,j)-XRreorder(Jder,ipt));
+	d2r(i,j)=r(i,j)/(1.0+thetaJ_abs_dx)*thetaJ_squared*(thetaJ_abs_dx-1.0);
+      }
+    } else if(Ider==Jder) {
+      // taking the 2nd derivative of the 1D correlation function of the GEK
+      // (not Kriging) r, which itself contains derivative of the Kriging r
+      // with respect to XR, but this 2nd derivative is indepedent of those
+      // first derivatives in all but one dimension
+      double thetaJ_cubed=thetaJ_squared*thetaJ;
+      double matern_coef;
+      double d2_mult_r;
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=neqn_per_pt) {
+	  deltax=xr(Jder,j)-XRreorder(Jder,ipt);
+	  thetaJ_abs_dx=thetaJ*std::fabs(deltax);
+	  matern_coef=(1.0+thetaJ_abs_dx);
+	  d2_mult_r=thetaJ_squared*(thetaJ_abs_dx-1.0)/matern_coef;
+	  d2r(i,j)=r(i,j)*d2_mult_r;
+	  for(k=0; k<numVarsr; ++k) //this k loop assumes that the current
+	    //dimension is independent of the one that the XR derivative was
+	    //taken with respect to, it's correct for all but one k
+	    d2r(i+1+k,j)=r(i+1+k,j)*d2_mult_r;
+	  //rather than having an if inside the loop which is slow, we're just
+	  //going to reassign the d2r for k==Jder like this
+	  d2r(i+1+Jder,j)=r(i,j)* //indexes of r(i,j) are correct
+	    (thetaJ_cubed*dsign(deltax)*(thetaJ_abs_dx-2.0)/matern_coef);
+	}
+
+	if(numPointsKeep>numWholePointsKeep) {
+	  //ipt and i should already have the values we need them to
+#ifdef __KRIG_ERR_CHECK__
+	  assert((ipt==numWholePointsKeep)&&
+		 (ipt==numPointsKeep-1)&&
+		 (i==neqn_per_pt*numWholePointsKeep));
+#endif
+	  deltax=xr(Jder,j)-XRreorder(Jder,ipt);
+	  thetaJ_abs_dx=thetaJ*std::fabs(deltax);
+	  matern_coef=(1.0+thetaJ_abs_dx);
+	  d2_mult_r=thetaJ_squared*(thetaJ_abs_dx-1.0)/matern_coef;
+	  d2r(i,j)=r(i,j)*d2_mult_r;
+	  for(k=0; k<numExtraDerKeep; ++k) //this k loop assumes that the
+	    //current dimension is independent of the one that the XR
+	    //derivative was taken with respect to
+	    d2r(i+1+k,j)=r(i+1+k,j)*d2_mult_r;
+	  if(Jder<numExtraDerKeep) //if the dimension we're now taking a
+	    //derivative with respect to wasn't clipped from the partial point
+	    //we need to correct/reassign it for k==Jder
+	    d2r(i+1+Jder,j)=r(i,j)* //indexes of r(i,j) are correct
+	      (thetaJ_cubed*dsign(deltax)*(thetaJ_abs_dx-2.0)/matern_coef);
+	}
+      }
+    } else {
+      // taking the product of the 1st derivative (for GEK) of 2 independent
+      // 1D correlation functions (they're independent because Jder!=Ider).
+      // But since the GEK r contains first derivatives of the Kriging r,
+      // there is one dimension, k==Jder, that needs special treatment
+      double matern_coef;
+      double d1_mult_r;
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=neqn_per_pt) {
+	  deltax=xr(Jder,j)-XRreorder(Jder,ipt);
+	  thetaJ_abs_dx=thetaJ*std::fabs(deltax);
+	  matern_coef=1.0+thetaJ_abs_dx;
+	  d1_mult_r=-thetaJ_squared*deltax/matern_coef;
+	  d2r(i,j)=drI(i,j)*d1_mult_r;
+	  for(k=0; k<numVarsr; ++k)  //this k loop assumes that the
+	    //current dimension is independent of the one that the XR
+	    //derivative was taken with respect to
+	    d2r(i+1+k,j)=drI(i+1+k,j)*d1_mult_r;
+	  //rather than having an if inside the loop which is slow, we're just
+	  //going to reassign the d2r for k==Jder like this
+	  d2r(i+1+Jder,j)=drI(i,j)* //indexes of drI(i,j) are correct
+	    thetaJ_squared*(1.0-thetaJ_abs_dx)/matern_coef; //sign is
+	    //opposite the numVarsr==1 d2r(i,j) because one of the 2
+	    //derivatives is taken with respect to XR instead of xr
+	}
+	if(numPointsKeep>numWholePointsKeep) {
+	  //ipt and i should already have the values we need them to
+#ifdef __KRIG_ERR_CHECK__
+	  assert((ipt==numWholePointsKeep)&&
+		 (ipt==numPointsKeep-1)&&
+		 (i==neqn_per_pt*numWholePointsKeep));
+#endif
+	  deltax=xr(Jder,j)-XRreorder(Jder,ipt);
+	  thetaJ_abs_dx=thetaJ*std::fabs(deltax);
+	  matern_coef=1.0+thetaJ_abs_dx;
+	  d1_mult_r=-thetaJ_squared*deltax/matern_coef;
+	  d2r(i,j)=drI(i,j)*d1_mult_r;
+	  for(k=0; k<numExtraDerKeep; ++k) //this k loop assumes that the
+	    //current dimension is independent of the one that the XR
+	    //derivative was taken with respect to
+	    d2r(i+1+k,j)=drI(i+1+k,j)*d1_mult_r;
+	  if(Jder<numExtraDerKeep)  //if the dimension we're now taking a
+	    //derivative with respect to wasn't clipped from the partial point
+	    //we need to correct/reassign it for k==Jder
+	    d2r(i+1+Jder,j)=drI(i,j)* //indexes of drI(i,j) are correct
+	      thetaJ_squared*(1.0-thetaJ_abs_dx)/matern_coef;
+	}
+      }
+    }
+  } else if((corrFunc==MATERN_CORR_FUNC)&&(maternCorrFuncNu==2.5)) {
+    // *********************************************************************
+    // The MATERN 5/2 CORRELATION FUNCTION
+    //
+    // the 1st and 2nd derivatives with respect to xr of the 1D correlation
+    // function are defined,
+    // 3rd derivative of Kriging r technically not defined at xr==XR (it is
+    // defined everywhere else) but the limit from both sides is defined and
+    // goes to zero at xr==XR (which means the limit from both sides agree)
+    // so we'll use the else where defined 3rd derivative even at xr==XR
+    // *********************************************************************
+    double thetaJ=correlations(Jder,0);
+    double thetaJ_squared=thetaJ*thetaJ;
+    double thetaJ_abs_dx;
+    if(numVarsr==1) {
+      // if there is only one input variable we are taking the 2nd derivative
+      // of the 1D GEK correlation function (which contains first derivatives
+      // of the Kriging r with respect to XR) AND WE KNOW THAT Ider=Jder=k so
+      // we don't have to "if" to known when to give the 2nd derivative of
+      // GEK r = 3rd derivative of Kriging r, special treatment
+      double r_thetaJ_squared_div_3_matern_coef;
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=2) {
+	  deltax=xr(Jder,j)-XRreorder(Jder,ipt);
+	  thetaJ_abs_dx=thetaJ*std::fabs(deltax);
+	  r_thetaJ_squared_div_3_matern_coef=r(i,j)*thetaJ_squared/
+	    (3.0*(1.0+thetaJ_abs_dx)+thetaJ_abs_dx*thetaJ_abs_dx);
+	  d2r(i  ,j)=r_thetaJ_squared_div_3_matern_coef*
+	    -(1.0+thetaJ_abs_dx-thetaJ_abs_dx*thetaJ_abs_dx);
+	  d2r(i+1,j)=r_thetaJ_squared_div_3_matern_coef*
+	    -thetaJ_squared*deltax*(3.0-thetaJ_abs_dx);
+	}
+	// since there is only one dimension, if there is a partial point
+	// it will be a function value only, and actually recalculating it
+	// will likely be faster on average then checking if there's a
+	// partial point and calculating it if needed
+	ipt=numPointsKeep-1;
+	i=ipt*2;
+	thetaJ_abs_dx=thetaJ*std::fabs(xr(Jder,j)-XRreorder(Jder,ipt));
+	d2r(i,j)=r(i,j)*thetaJ_squared/
+	  (3.0*(1.0+thetaJ_abs_dx)+thetaJ_abs_dx*thetaJ_abs_dx)*
+	  -(1.0+thetaJ_abs_dx-thetaJ_abs_dx*thetaJ_abs_dx);
+      }
+    } else if(Ider==Jder) {
+      // taking the 2nd derivative of the 1D correlation function of the GEK
+      // (not Kriging) r, which itself contains derivative of the Kriging r
+      // with respect to XR, but this 2nd derivative is indepedent of those
+      // first derivatives in all but one dimension
+      double neg_thetaJ_squared_div_3_matern_coef;
+      double d2_mult_r;
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=neqn_per_pt) {
+	  deltax=xr(Jder,j)-XRreorder(Jder,ipt);
+	  thetaJ_abs_dx=thetaJ*std::fabs(deltax);
+	  neg_thetaJ_squared_div_3_matern_coef=-thetaJ_squared/
+	    (3.0*(1.0+thetaJ_abs_dx)+thetaJ_abs_dx*thetaJ_abs_dx);
+	  d2_mult_r=neg_thetaJ_squared_div_3_matern_coef*
+	    (1.0+thetaJ_abs_dx-thetaJ_abs_dx*thetaJ_abs_dx);
+	  d2r(i,j)=r(i,j)*d2_mult_r;
+	  for(k=0; k<numVarsr; ++k) //this k loop assumes that the current
+	    //dimension is independent of the one that the XR derivative was
+	    //taken with respect to, it's correct for all but one k
+	    d2r(i+1+k,j)=r(i+1+k,j)*d2_mult_r;
+	  //rather than having an if inside the loop which is slow, we're just
+	  //going to reassign the d2r for k==Jder like this
+	  d2r(i+1+Jder,j)=r(i,j)* //indexes of r(i,j) are correct
+	    neg_thetaJ_squared_div_3_matern_coef*
+	    thetaJ_squared*deltax*(3.0-thetaJ_abs_dx);
+	}
+
+	if(numPointsKeep>numWholePointsKeep) {
+	  //ipt and i should already have the values we need them to
+#ifdef __KRIG_ERR_CHECK__
+	  assert((ipt==numWholePointsKeep)&&
+		 (ipt==numPointsKeep-1)&&
+		 (i==neqn_per_pt*numWholePointsKeep));
+#endif
+	  deltax=xr(Jder,j)-XRreorder(Jder,ipt);
+	  thetaJ_abs_dx=thetaJ*std::fabs(deltax);
+	  neg_thetaJ_squared_div_3_matern_coef=-thetaJ_squared/
+	    (3.0*(1.0+thetaJ_abs_dx)+thetaJ_abs_dx*thetaJ_abs_dx);
+	  d2_mult_r=neg_thetaJ_squared_div_3_matern_coef*
+	    (1.0+thetaJ_abs_dx-thetaJ_abs_dx*thetaJ_abs_dx);
+	  d2r(i,j)=r(i,j)*d2_mult_r;
+	  for(k=0; k<numExtraDerKeep; ++k) //this k loop assumes that the
+	    //current dimension is independent of the one that the XR
+	    //derivative was taken with respect to
+	    d2r(i+1+k,j)=r(i+1+k,j)*d2_mult_r;
+	  if(Jder<numExtraDerKeep) //if the dimension we're now taking a
+	    //derivative with respect to wasn't clipped from the partial point
+	    //we need to correct/reassign it for k==Jder
+	    d2r(i+1+Jder,j)=r(i,j)* //indexes of r(i,j) are correct
+	      neg_thetaJ_squared_div_3_matern_coef*
+	      thetaJ_squared*deltax*(3.0-thetaJ_abs_dx);
+	}
+      }
+    } else {
+      // taking the product of the 1st derivative (for GEK) of 2 independent
+      // 1D correlation functions (they're independent because Jder!=Ider).
+      // But since the GEK r contains first derivatives of the Kriging r,
+      // there is one dimension, k==Jder, that needs special treatment
+      double thetaJ_squared_div_3_matern_coef;
+      double d1_mult_r;
+      for(j=0; j<nptsxr; ++j) {
+	for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt, i+=neqn_per_pt) {
+	  deltax=xr(Jder,j)-XRreorder(Jder,ipt);
+	  thetaJ_abs_dx=thetaJ*std::fabs(deltax);
+	  thetaJ_squared_div_3_matern_coef=thetaJ_squared/
+	    (3.0*(1.0+thetaJ_abs_dx)+thetaJ_abs_dx*thetaJ_abs_dx);
+	  d1_mult_r=-thetaJ_squared_div_3_matern_coef*
+	    deltax*(1.0+thetaJ_abs_dx);
+	  d2r(i,j)=drI(i,j)*d1_mult_r;
+	  for(k=0; k<numVarsr; ++k)  //this k loop assumes that the
+	    //current dimension is independent of the one that the XR
+	    //derivative was taken with respect to
+	    d2r(i+1+k,j)=drI(i+1+k,j)*d1_mult_r;
+	  //rather than having an if inside the loop which is slow, we're just
+	  //going to reassign the d2r for k==Jder like this
+	  d2r(i+1+Jder,j)=drI(i,j)* //indexes of drI(i,j) are correct
+	    thetaJ_squared_div_3_matern_coef*
+	    (1.0+thetaJ_abs_dx-thetaJ_abs_dx*thetaJ_abs_dx); //sign is
+	    //opposite the numVarsr==1 d2r(i,j) because one of the 2
+	    //derivatives is taken with respect to XR instead of xr
+	}
+	if(numPointsKeep>numWholePointsKeep) {
+	  //ipt and i should already have the values we need them to
+#ifdef __KRIG_ERR_CHECK__
+	  assert((ipt==numWholePointsKeep)&&
+		 (ipt==numPointsKeep-1)&&
+		 (i==neqn_per_pt*numWholePointsKeep));
+#endif
+	  deltax=xr(Jder,j)-XRreorder(Jder,ipt);
+	  thetaJ_abs_dx=thetaJ*std::fabs(deltax);
+	  thetaJ_squared_div_3_matern_coef=thetaJ_squared/
+	    (3.0*(1.0+thetaJ_abs_dx)+thetaJ_abs_dx*thetaJ_abs_dx);
+	  d1_mult_r=-thetaJ_squared_div_3_matern_coef*
+	    deltax*(1.0+thetaJ_abs_dx);
+	  d2r(i,j)=drI(i,j)*d1_mult_r;
+	  for(k=0; k<numExtraDerKeep; ++k) //this k loop assumes that the
+	    //current dimension is independent of the one that the XR
+	    //derivative was taken with respect to
+	    d2r(i+1+k,j)=drI(i+1+k,j)*d1_mult_r;
+	  if(Jder<numExtraDerKeep)  //if the dimension we're now taking a
+	    //derivative with respect to wasn't clipped from the partial point
+	    //we need to correct/reassign it for k==Jder
+	    d2r(i+1+Jder,j)=drI(i,j)* //indexes of drI(i,j) are correct
+	      thetaJ_squared_div_3_matern_coef*
+	      (1.0+thetaJ_abs_dx-thetaJ_abs_dx*thetaJ_abs_dx);
+	}
+      }
+    }
+  } else{
+    std::cerr << "unknown corrFunc in MtxDbl& KrigingModel::eval_gek_d2correlation_matrix_dxIdxJ(MtxDbl& d2r, const MtxDbl& drI, const MtxDbl& r, const MtxDbl& xr, int Ider, int Jder) const\n";
+    assert(false);
+  }
+  return d2r;
+}
+
+
+
+/** this function is typically used during emulator construction, the below
+    the diagonal portion of R = exp(Z^T*theta), where R is symmetric with 1's
+    on the diagonal, theta is the vector of correlations and the Z matrix is
+    defined as Z(k,ij)=-(XR(k,i)-XR(k,j))^2 where ij counts downward within
+    columns of R starting from the element below the diagonal and continues
+    from one column to the next, Z^T*theta is matrix vector multiplication to
+    be performed efficiently by BLAS, V=Z^T*theta is a vector with
+    nchoosek(numPoints,2) elements.  We need to copy exp(V(ij)) to R(i,j)
+    and R(j,i) to produce R. The Z matrix is produced by
+    KrigingModel::gen_Z_matrix()     KRD wrote this */
+void KrigingModel::correlation_matrix(const MtxDbl& theta)
+{
+  int ncolsZ=Z.getNCols();
+  //printf("nrowsZ=%d; numPoints=%d; ''half'' numPoints^2=%d; numVarsr=%d; theta.getNRows()=%d\n",
+  //	 ncolsZ,numPoints,nchoosek(numPoints,2),numVarsr,theta.getNRows());
+  //fflush(stdout);
+#ifdef __KRIG_ERR_CHECK__
+  assert((ncolsZ==nchoosek(numPoints,2))&&
+	 (numVarsr==Z.getNRows())&&
+	 (numVarsr==theta.getNRows())&&
+	 (1==theta.getNCols()));
+#endif
+
+  Ztran_theta.newSize(ncolsZ,1); //Z transpose because subsequent access of a
+  //column vector should be marginally faster than a row vector
+  matrix_mult(Ztran_theta,Z,theta,0.0,1.0,'T','N');
+
+  if(buildDerOrder==0)
+    numRowsR=numPoints;
+  else if(buildDerOrder==1)
+    numRowsR=numPoints*nDer;
+  else{
+    std::cerr << "buildDerOrder=" << buildDerOrder << " in void KrigingModel::correlation_matrix(const MtxDbl& theta).  It must either be 0 for Kriging or 1 for Gradient Enhanced Kriging.  Higher order build derivatives, (e.g. Hessian Enhanced Kriging) have not been implemented." << std::endl;
+    assert(false);
+  }
+  R.newSize(numRowsR,numRowsR);
+
+  //Do the regular (Der0) Kriging Portion of the Correlation matrix first
+  double Rij_temp;
+  int ij=0;
+  if((corrFunc==GAUSSIAN_CORR_FUNC)||
+     (corrFunc==EXP_CORR_FUNC)||
+     (corrFunc==POW_EXP_CORR_FUNC)) {
+    for(int j=0; j<numPoints-1; ++j) {
+      R(j,j)=1.0;
+      for(int i=j+1; i<numPoints; ++i, ++ij) {
+	Rij_temp=std::exp(Ztran_theta(ij,0));
+	R(i,j)=Rij_temp;
+	R(j,i)=Rij_temp;
+      }
+    }
+  } else if((corrFunc==MATERN_CORR_FUNC)&&(maternCorrFuncNu==1.5)){
+    //for matern Z(k,ij)=-|XR(k,i)-XR(k,j)| we want to feed
+    //theta(k,0)*|XR(k,i)-XR(k,j)| to matern_1pt5_coef so we need to
+    //negate the already negative quantity
+    if(numVarsr==1)
+      for(int j=0; j<numPoints-1; ++j) {
+	R(j,j)=1.0;
+	for(int i=j+1; i<numPoints; ++i, ++ij) {
+	  Rij_temp=std::exp(Ztran_theta(ij,0))*
+	    matern_1pt5_coef(-Ztran_theta(ij,0));
+	  R(i,j)=Rij_temp;
+	  R(j,i)=Rij_temp;
+	}
+      }
+    else
+      for(int j=0; j<numPoints-1; ++j) {
+	R(j,j)=1.0;
+	for(int i=j+1; i<numPoints; ++i, ++ij) {
+	  Rij_temp=std::exp(Ztran_theta(ij,0))*
+	    matern_1pt5_coef(-Z(0,ij)*theta(0,0));
+	  for(int k=1; k<numVarsr; ++k)
+	    Rij_temp*=matern_1pt5_coef(-Z(k,ij)*theta(k,0));
+	  R(i,j)=Rij_temp;
+	  R(j,i)=Rij_temp;
+	}
+      }
+  } else if((corrFunc==MATERN_CORR_FUNC)&&(maternCorrFuncNu==2.5)){
+    //for matern Z(k,ij)=-|XR(k,i)-XR(k,j)| we want to feed
+    //theta(k,0)*|XR(k,i)-XR(k,j)| to matern_2pt5_coef so we need to
+    //negate the already negative quantity
+    if(numVarsr==1)
+      for(int j=0; j<numPoints-1; ++j) {
+	R(j,j)=1.0;
+	for(int i=j+1; i<numPoints; ++i, ++ij) {
+	  Rij_temp=std::exp(Ztran_theta(ij,0))*
+	    matern_2pt5_coef(-Ztran_theta(ij,0));
+	  R(i,j)=Rij_temp;
+	  R(j,i)=Rij_temp;
+	}
+      }
+    else
+      for(int j=0; j<numPoints-1; ++j) {
+	R(j,j)=1.0;
+	for(int i=j+1; i<numPoints; ++i, ++ij) {
+	  Rij_temp=std::exp(Ztran_theta(ij,0))*
+	    matern_2pt5_coef(-Z(0,ij)*theta(0,0));
+	  for(int k=1; k<numVarsr; ++k)
+	    Rij_temp*=matern_2pt5_coef(-Z(k,ij)*theta(k,0));
+	  R(i,j)=Rij_temp;
+	  R(j,i)=Rij_temp;
+	}
+      }
+  }else{
+    std::cerr << "unknown corrFunc in void KrigingModel::correlation_matrix(const MtxDbl& theta)\n";
+    assert(false);
+  }
+  R(numPoints-1,numPoints-1)=1.0;
+
+  /*
+  FILE *fp=fopen("km_Rmat_check.txt","w");
+  for(int i=0; i<numPoints; ++i) {
+      fprintf(fp,"%-12.6g", R(i,0));
+      for(int j=1; j<numPoints; ++j)
+	fprintf(fp," %-12.6g", R(i,j));
+      fprintf(fp,"\n");
+  }
+  fclose(fp);
+  */
+
+  if(buildDerOrder>0) {
+    //Gaussian Matern1.5 and Matern2.5 are valid correlation functions for
+    //Gradient Enhanced Kriging
+    double temp_double;
+    int zij, j;
+
+
+    if(corrFunc==GAUSSIAN_CORR_FUNC) {
+      //now handle the first order derivative submatrices, indiviually the first
+      //order derivative SUBmatrices are anti-symmetric but the whole matrix is
+      //symmetric
+      int Ii, Ij, Jj, Ji; //first letter identifies index OF derivative submatrix
+      //second letter identifies index INTO derivative SUBmatrix
+      for(int Ider=0; Ider<numVarsr; ++Ider) {
+	zij=0;
+	double two_theta_Ider=2.0*theta(Ider,0);
+	for(j=0; j<numPoints-1; ++j) {//j<numPoints-1 avoids an i loop of length 0
+	  //diagonal (_j,_j) of off diagonal (I_, _) submatrix
+	  Ij=(Ider+1)*numPoints+j;
+	  R(Ij, j)=0.0;
+	  R( j,Ij)=0.0;
+	  //Ij=(Ider+1)*numPoints+j;
+	  for(int i=j+1; i<numPoints; ++i, ++zij) {
+	    //off diagonal (_i,_j) of off-diagonal (I_, _) submatrix
+	    Ii=(Ider+1)*numPoints+i;
+	    temp_double=-two_theta_Ider*deltaXR(zij,Ider)*R( i, j);
+	    //here  temp_double=
+	    //                  R(Ii, j) = dR(i,j)/dXR1(Ider,i)
+	    //                  R( j,Ii) = dR(i,j)/dXR2(Ider,j)
+	    //and  -temp_double=
+	    //                  R(Ij, i) = dR(i,j)/dXR1(Ider,j)
+	    //                  R( i,Ij) = dR(i,j)/dXR2(Ider,i)
+	    //where XR1 is the first argument of the correlation function
+	    //and XR2 is the second argument of the correlation function
+	    R(Ii, j)= temp_double;
+	    R( j,Ii)= temp_double; //whole R matrix is symmetric
+	    R(Ij, i)=-temp_double;
+	    R( i,Ij)=-temp_double; //off-diagonal 1st order (actually all odd
+	    //order) derivative SUBmatrices are anti-symmetric
+	  }
+	}
+	//diagonal (_j,_j) of off diagonal (I_, _) submatrix
+	j=numPoints-1; //avoids an i loop of length 0
+	Ij=(Ider+1)*numPoints+j;
+	R(Ij,j)=0.0;
+	R(j,Ij)=0.0;
+      }
+
+      //note that all 2nd order (actually all even order) derivative SUBmatrices
+      //are symmetric because the hadamard product of 2 (actually any even
+      //number of) anti-symmetric matrices is a symmetric matrix
+      double two_theta_Jder;
+      for(int Jder=0; Jder<numVarsr; ++Jder) {
+	//do the on diagonal (J_,J_) submatrix
+	two_theta_Jder=2.0*theta(Jder,0);
+	zij=0;
+	for(j=0; j<numPoints-1; ++j) { //j<numPoints-1 avoids an i loop of length 0
+	  //diagonal (_j,_j) of on diagonal (J_,J_) submatrix
+	  Jj=(Jder+1)*numPoints+j;
+	  R(Jj,Jj)=two_theta_Jder; //R(Jj,Jj)=2*theta(Jder,0)*R(j,j); R(j,j)=1;
+	  for(int i=j+1; i<numPoints; ++i) {
+	    //off diagonal (_i,_j) of on-diagonal (J_,J_) submatrix
+	    Ji=(Jder+1)*numPoints+i;
+	    temp_double=two_theta_Jder*deltaXR(zij,Jder)*R(Ji, j)+
+	    two_theta_Jder*R( i, j);
+	    R(Ji,Jj)=temp_double;
+	    R(Jj,Ji)=temp_double;
+	    ++zij;
+	  }
+	}
+	//diagonal (_j,_j) of on diagonal (J_,J_) submatrix
+	j=numPoints-1; //avoids an i loop of length 0
+	Jj=(Jder+1)*numPoints+j;
+	R(Jj,Jj)=two_theta_Jder; //R(j,j)=1 R(Jj,Jj)=2*theta(Jder,0)*R(j,j)
+
+
+	//do the off diagonal (I_,J_) submatrices
+	for(int Ider=Jder+1; Ider<numVarsr; ++Ider) {
+	  //off diagonal (I_,J_) submatrix
+	  zij=0;
+	  for(j=0; j<numPoints-1; ++j) {//j<numPoints-1 avoids an i loop of length 0
+	    //diagonal (_j,_j) of off-diagonal (I_,J_) submatrix
+	    Jj=(Jder+1)*numPoints+j;
+	    Ij=(Ider+1)*numPoints+j;
+	    R(Ij,Jj)=0.0;
+	    R(Jj,Ij)=0.0;
+
+
+	    for(int i=j+1; i<numPoints; ++i) {
+	      //off diagonal (_i,_j) of off-diagonal (I_,J_) submatrix
+	      Ii=(Ider+1)*numPoints+i;
+	      Ji=(Jder+1)*numPoints+i;
+	      temp_double=two_theta_Jder*deltaXR(zij,Jder)*R(Ii, j);
+	      R(Ii,Jj)= temp_double;
+	      R(Ij,Ji)= temp_double;
+	      R(Ji,Ij)= temp_double;
+	      R(Jj,Ii)= temp_double;
+	      ++zij;
+	    }
+	  }
+	  //diagonal (_j,_j) of off-diagonal (I_,J_) submatrix
+	  j=numPoints-1; //avoids an i loop of length 0
+	  Ij=(Ider+1)*numPoints+j;
+	  Jj=(Jder+1)*numPoints+j;
+	  R(Ij,Jj)=0.0;
+	  R(Jj,Ij)=0.0;
+	}
+      }
+    } else if((corrFunc==MATERN_CORR_FUNC)&&(maternCorrFuncNu==1.5)) {
+      //The second derivative of the Matern1.5 correlation function
+      //is not strictly defined at XR(i,Ider)==XR(j,Jder) but the limit
+      //of the second derivative from both sides is defined and is the same
+      //this follows
+      //Lockwood, Brian A. and Anitescu, Mihai, "Gradient-Enhanced
+      //    Universal Kriging for Uncertainty Proagation"
+      //    Preprint ANL/MCS-P1808-1110
+      //
+      //d2r_dXIdXJ with Ider==Jder
+      // = theta^2*exp(-theta*|XI-XJ|)-theta^3*|XI-XJ|*exp(-theta*|XI-XJ|)
+      // = -theta^2*(1-2/matern_1pt5_coef)*r(XI,XJ)
+      // = -matern_1pt5_d2_mult_r(theta,+/-(XI-XJ))*r(XI,XJ) (note the
+      //    negative sign, it should be here, but does not appear when
+      //    evalutation 2nd derivative of GP, because there it is second
+      //    derivative with respect to the SAME argument, here it is the
+      //    second derivative with respect to different arguments)
+
+      //now handle the first order derivative submatrices, indiviually the first
+      //order derivative SUBmatrices are anti-symmetric but the whole matrix is
+      //symmetric
+      int Ii, Ij, Jj, Ji; //first letter identifies index OF derivative
+      //submatrix second letter identifies index INTO derivative SUBmatrix
+      for(int Ider=0; Ider<numVarsr; ++Ider) {
+	zij=0;
+	double theta_Ider=theta(Ider,0);
+	for(j=0; j<numPoints-1; ++j) {//j<numPoints-1 avoids an i loop of
+	  //length 0
+
+	  //diagonal (_j,_j) of off diagonal (I_, _) submatrix
+	  Ij=(Ider+1)*numPoints+j;
+	  R(Ij, j)=0.0;
+	  R( j,Ij)=0.0;
+	  //Ij=(Ider+1)*numPoints+j;
+	  for(int i=j+1; i<numPoints; ++i) {
+	    //off diagonal (_i,_j) of off-diagonal (I_, _) submatrix
+	    Ii=(Ider+1)*numPoints+i;
+	    temp_double=
+	      matern_1pt5_d1_mult_r(theta_Ider,deltaXR(zij,Ider))*R( i, j);
+	    R(Ii, j)= temp_double;
+	    R( j,Ii)= temp_double; //whole R matrix is symmetric
+	    R(Ij, i)=-temp_double;
+	    R( i,Ij)=-temp_double; //off-diagonal 1st order (actually all odd
+	    //order) derivative SUBmatrices are anti-symmetric
+	    ++zij;
+	  }
+	}
+	//diagonal (_j,_j) of off diagonal (I_, _) submatrix
+	j=numPoints-1; //avoids an i loop of length 0
+	Ij=(Ider+1)*numPoints+j;
+	R(Ij, j)=0.0;
+	R( j,Ij)=0.0;
+      }
+
+      //note that all 2nd order (actually all even order) derivative SUBmatrices
+      //are symmetric because the hadamard product of 2 (actually any even
+      //number of) anti-symmetric matrices is a symmetric matrix
+      double theta_Jder;
+      double theta_Jder_squared;
+      for(int Jder=0; Jder<numVarsr; ++Jder) {
+	//do the on diagonal (J_,J_) submatrix
+	theta_Jder=theta(Jder,0);
+	theta_Jder_squared=theta_Jder*theta_Jder;
+	zij=0;
+	for(j=0; j<numPoints-1; ++j) { //j<numPoints-1 avoids an i loop of length 0
+	  //diagonal (_j,_j) of on diagonal (J_,J_) submatrix
+	  Jj=(Jder+1)*numPoints+j;
+	  R(Jj,Jj)=theta_Jder_squared;
+	  for(int i=j+1; i<numPoints; ++i) {
+	    //off diagonal (_i,_j) of on-diagonal (J_,J_) submatrix
+	    Ji=(Jder+1)*numPoints+i;
+	    temp_double=//neg sign because d^2/dXR1dXR2 instead of d^2/dXR1^2
+	      -matern_1pt5_d2_mult_r(theta_Jder,deltaXR(zij,Jder))*R( i, j);
+	    R(Ji,Jj)=temp_double;
+	    R(Jj,Ji)=temp_double;
+	    ++zij;
+	  }
+	}
+	//diagonal (_j,_j) of on diagonal (J_,J_) submatrix
+	j=numPoints-1; //avoids an i loop of length 0
+	Jj=(Jder+1)*numPoints+j;
+	R(Jj,Jj)=theta_Jder_squared;
+
+
+	//do the off diagonal (I_,J_) submatrices
+	for(int Ider=Jder+1; Ider<numVarsr; ++Ider) {
+	  //off diagonal (I_,J_) submatrix
+	  zij=0;
+	  for(j=0; j<numPoints-1; ++j) {//j<numPoints-1 avoids an i loop of length 0
+	    //diagonal (_j,_j) of off-diagonal (I_,J_) submatrix
+	    Jj=(Jder+1)*numPoints+j;
+	    Ij=(Ider+1)*numPoints+j;
+	    R(Ij,Jj)=0.0;
+	    R(Jj,Ij)=0.0;
+
+	    for(int i=j+1; i<numPoints; ++i) {
+	      //off diagonal (_i,_j) of off-diagonal (I_,J_) submatrix
+	      Ii=(Ider+1)*numPoints+i;
+	      Ji=(Jder+1)*numPoints+i;
+	      temp_double=
+		matern_1pt5_d1_mult_r(theta_Jder,-deltaXR(zij,Jder))*R(Ii, j);
+	      R(Ii,Jj)= temp_double;
+	      R(Ij,Ji)= temp_double;
+	      R(Ji,Ij)= temp_double;
+	      R(Jj,Ii)= temp_double;
+	      ++zij;
+	    }
+	  }
+	  //diagonal (_j,_j) of off-diagonal (I_,J_) submatrix
+	  j=numPoints-1; //avoids an i loop of length 0
+	  Ij=(Ider+1)*numPoints+j;
+	  Jj=(Jder+1)*numPoints+j;
+	  R(Ij,Jj)=0.0;
+	  R(Jj,Ij)=0.0;
+	}
+      }
+
+    } else if((corrFunc==MATERN_CORR_FUNC)&&(maternCorrFuncNu==2.5)) {
+      //now handle the first order derivative submatrices, indiviually the first
+      //order derivative SUBmatrices are anti-symmetric but the whole matrix is
+      //symmetric
+      int Ii, Ij, Jj, Ji; //first letter identifies index OF derivative
+      //submatrix second letter identifies index INTO derivative SUBmatrix
+      for(int Ider=0; Ider<numVarsr; ++Ider) {
+	zij=0;
+	double theta_Ider=theta(Ider,0);
+	for(j=0; j<numPoints-1; ++j) {//j<numPoints-1 avoids an i loop of
+	  //length 0
+
+	  //diagonal (_j,_j) of off diagonal (I_, _) submatrix
+	  Ij=(Ider+1)*numPoints+j;
+	  R(Ij, j)=0.0;
+	  R( j,Ij)=0.0;
+	  //Ij=(Ider+1)*numPoints+j;
+	  for(int i=j+1; i<numPoints; ++i) {
+	    //off diagonal (_i,_j) of off-diagonal (I_, _) submatrix
+	    Ii=(Ider+1)*numPoints+i;
+	    temp_double=
+	      matern_2pt5_d1_mult_r(theta_Ider,deltaXR(zij,Ider))*R( i, j);
+	    R(Ii, j)= temp_double;
+	    R( j,Ii)= temp_double; //whole R matrix is symmetric
+	    R(Ij, i)=-temp_double;
+	    R( i,Ij)=-temp_double; //off-diagonal 1st order (actually all odd
+	    //order) derivative SUBmatrices are anti-symmetric
+	    ++zij;
+	  }
+	}
+	//diagonal (_j,_j) of off diagonal (I_, _) submatrix
+	j=numPoints-1; //avoids an i loop of length 0
+	Ij=(Ider+1)*numPoints+j;
+	R(Ij, j)=0.0;
+	R( j,Ij)=0.0;
+      }
+
+      //note that all 2nd order (actually all even order) derivative SUBmatrices
+      //are symmetric because the hadamard product of 2 (actually any even
+      //number of) anti-symmetric matrices is a symmetric matrix
+      double theta_Jder;
+      double theta_Jder_squared_div_3;
+      for(int Jder=0; Jder<numVarsr; ++Jder) {
+	//do the on diagonal (J_,J_) submatrix
+	theta_Jder=theta(Jder,0);
+	theta_Jder_squared_div_3=theta_Jder*theta_Jder/3.0;
+	zij=0;
+	for(j=0; j<numPoints-1; ++j) { //j<numPoints-1 avoids an i loop of length 0
+	  //diagonal (_j,_j) of on diagonal (J_,J_) submatrix
+	  Jj=(Jder+1)*numPoints+j;
+	  R(Jj,Jj)=theta_Jder_squared_div_3;
+	  for(int i=j+1; i<numPoints; ++i) {
+	    //off diagonal (_i,_j) of on-diagonal (J_,J_) submatrix
+	    Ji=(Jder+1)*numPoints+i;
+	    temp_double=//neg sign because d^2/dXR1dXR2 instead of d^2/dXR1^2
+	      -matern_2pt5_d2_mult_r(theta_Jder,deltaXR(zij,Jder))*R( i, j);
+	    R(Ji,Jj)=temp_double;
+	    R(Jj,Ji)=temp_double;
+	    ++zij;
+	  }
+	}
+	//diagonal (_j,_j) of on diagonal (J_,J_) submatrix
+	j=numPoints-1; //avoids an i loop of length 0
+	Jj=(Jder+1)*numPoints+j;
+	R(Jj,Jj)=theta_Jder_squared_div_3;
+
+
+      	//do the off diagonal (I_,J_) submatrices
+	for(int Ider=Jder+1; Ider<numVarsr; ++Ider) {
+	  //off diagonal (I_,J_) submatrix
+	  zij=0;
+	  for(j=0; j<numPoints-1; ++j) {//j<numPoints-1 avoids an i loop of length 0
+	    //diagonal (_j,_j) of off-diagonal (I_,J_) submatrix
+	    Jj=(Jder+1)*numPoints+j;
+	    Ij=(Ider+1)*numPoints+j;
+	    R(Ij,Jj)=0.0;
+	    R(Jj,Ij)=0.0;
+
+	    for(int i=j+1; i<numPoints; ++i) {
+	      //off diagonal (_i,_j) of off-diagonal (I_,J_) submatrix
+	      Ii=(Ider+1)*numPoints+i;
+	      Ji=(Jder+1)*numPoints+i;
+	      temp_double=
+		matern_2pt5_d1_mult_r(theta_Jder,-deltaXR(zij,Jder))*R(Ii, j);
+	      R(Ii,Jj)= temp_double;
+	      R(Ij,Ji)= temp_double;
+	      R(Ji,Ij)= temp_double;
+	      R(Jj,Ii)= temp_double;
+	      ++zij;
+	    }
+	  }
+	  //diagonal (_j,_j) of off-diagonal (I_,J_) submatrix
+	  j=numPoints-1; //avoids an i loop of length 0
+	  Ij=(Ider+1)*numPoints+j;
+	  Jj=(Jder+1)*numPoints+j;
+	  R(Ij,Jj)=0.0;
+	  R(Jj,Ij)=0.0;
+	}
+      }
+    } else{
+      std::cerr << "Unknown or Invalid Correlation function for Gradient Enhanced Kriging in void KrigingModel::correlation_matrix(const MtxDbl& theta)\n";
+      assert(false);
+    }
+    /*
+    printf("theta=[%14.8g",theta(0,0));
+    for(int k=1; k<numVarsr; ++k)
+      printf(" %14.8g",theta(k,0));
+    printf("]^T\n");
+    printf("M3/2 GEK R=\n");
+    for(int i=0; i<numEqnAvail; ++i) {
+      for(int j=0; j<numEqnAvail; ++j)
+	printf("%14.8g ",R(i,j));
+      printf("\n");
+    }
+    printf("\n\n");
+    */
+
+  }
+
+  return;
+}
+
+/** the Z matrix is defined as Z(k,ij)=-(XR(i,k)-XR(j,k))^2 where
+    ij=i+j*XR.getNRows(), it enables the efficient repeated calculation
+    of the R matrix during model construction:
+    R=reshape(exp(Z*theta),XR.getNRows(),XR.getNRows()) where theta is
+    the vector of correlations and * is matrix vector multiplication,
+    note that the Z matrix is independent of the correlation vector so
+    it can be formed once and later during the search for a good
+    correlation vector, the matrix vector product Z*theta can be
+    performed efficiently (for each member of the set of candidate
+    theta vectors) by calling BLAS. Z and XR are member variables so
+    they don't need to be passed in, KRD wrote this,  */
+MtxDbl& KrigingModel::gen_Z_matrix()
+{
+#ifdef __KRIG_ERR_CHECK__
+  assert((XR.getNRows()==numVarsr)&&(XR.getNCols()==numPoints));
+#endif
+  int ncolsZ=nchoosek(numPoints,2);
+  Z.newSize(numVarsr,ncolsZ);
+
+  if(buildDerOrder>0) {
+    //deltaXR is only needed for GEK
+    deltaXR.newSize(ncolsZ,numVarsr); //this ordering (transpose of Z)
+    //is useful for constructing the GEK R matrix
+  }
+
+  int ij=0;
+  if(corrFunc==GAUSSIAN_CORR_FUNC)  {
+    // ****************************************************************
+    // The Gausssian Correlation Function
+    // can be used for Gradient Enhanced Kriging (GEK)
+    // (or more generally, for derivative enhanced Kriging) because
+    // it is C infinity continuous.
+    // It uses Z(k,ij) = -(XR(k,i)-XR(k,j))^2
+    // if GEK is used we will also compute and store
+    // deltaXR(ij,k) = XR(k,i)-XR(k,j), the order of indexes is correct
+    // this transposed ordering is useful for efficient computation of
+    // the GEK R matrix (using the SUBmatrix construction process)
+    // ****************************************************************
+    double dXR; //a temporary variable to make squaring easier
+    if(buildDerOrder>0)
+      for(int j=0; j<numPoints-1; ++j)
+	for(int i=j+1; i<numPoints; ++i, ++ij)
+	  for(int k=0; k<numVarsr; k++) {
+	    dXR=XR(k,i)-XR(k,j);
+	    deltaXR(ij,k)=dXR;
+	    Z(k,ij)=-dXR*dXR;
+	  }
+    else
+      for(int j=0; j<numPoints-1; ++j)
+	for(int i=j+1; i<numPoints; ++i, ++ij)
+	  for(int k=0; k<numVarsr; k++) {
+	    dXR=XR(k,i)-XR(k,j);
+	    Z(k,ij)=-dXR*dXR;
+	  }
+  } else if((corrFunc==EXP_CORR_FUNC)||(corrFunc==MATERN_CORR_FUNC)) {
+    // ****************************************************************
+    // The Exponential and Matern 3/2 and 5/2 Correlation Functions
+    // all use Z(k,ij) = -|XR(k,i)-XR(k,j)|
+    // the Exponential Correlation Function
+    //     can NOT be used for Gradient Enhanced Kriging (GEK)
+    // the Matern 3/2 and 5/2 Correlation Functions
+    //     CAN be used for Gradient Enhanced Kriging (GEK)
+    // if GEK is used we will also compute and store
+    //     deltaXR(ij,k) = XR(k,i)-XR(k,j), the order of indexes is
+    //     correct this transposed ordering is useful for efficient
+    //     computation of the GEK R matrix (using the SUBmatrix
+    //     construction process)
+    // ****************************************************************
+    if(buildDerOrder>0) {
+      if(corrFunc==EXP_CORR_FUNC) {
+	std::cerr << "the exponential correlation function is not a valid choice for Gradient Enhanced Kriging\n";
+	assert(!((corrFunc==EXP_CORR_FUNC)&&(buildDerOrder>0)));
+      }
+      for(int j=0; j<numPoints-1; ++j)
+	for(int i=j+1; i<numPoints; ++i, ++ij)
+	  for(int k=0; k<numVarsr; k++) {
+	    deltaXR(ij,k)=XR(k,i)-XR(k,j);
+	    Z(k,ij)=-std::fabs(deltaXR(ij,k));
+	  }
+    } else
+      for(int j=0; j<numPoints-1; ++j)
+	for(int i=j+1; i<numPoints; ++i, ++ij)
+	  for(int k=0; k<numVarsr; k++)
+	    Z(k,ij)=-std::fabs(XR(k,i)-XR(k,j));
+  } else if(corrFunc==POW_EXP_CORR_FUNC) {
+    // ****************************************************************
+    // The Powered Exponential Correlation Function
+    // uses Z(k,ij) = -(|XR(k,i)-XR(k,j)|^powExpCorrFuncPow)
+    // where 1.0<powExpCorrFuncPow<2.0
+    // It can NOT be used for Gradient Enhanced Kriging (GEK)
+    // ****************************************************************
+    if(buildDerOrder>0) {
+      std::cerr << "the powered exponential correlation function is not a valid choice for Gradient Enhanced Kriging\n";
+      assert(!((corrFunc==POW_EXP_CORR_FUNC)&&(buildDerOrder>0)));
+    }
+    for(int j=0; j<numPoints-1; ++j)
+      for(int i=j+1; i<numPoints; ++i, ++ij)
+	for(int k=0; k<numVarsr; k++)
+	  Z(k,ij)=-std::pow(std::fabs(XR(k,i)-XR(k,j)),powExpCorrFuncPow);
+  } else{
+    std::cerr << "unknown Correlation Function in MtxDbl& KrigingModel::gen_Z_matrix()\n";
+    assert(false);
+  }
+  return Z;
+}
+
+void KrigingModel::reorderCopyRtoRChol() {
+  numRowsR=numEqnAvail;
+  RChol.newSize(numRowsR,numRowsR);
+
+  if(buildDerOrder==0) {
+    //Kriging
+    for(int jpt=0; jpt<numPoints; ++jpt) {
+      int jsrc=iPtsKeep(jpt,0);
+      for(int ipt=0; ipt<numPoints; ++ipt)
+	RChol(ipt,jpt)=R(iPtsKeep(ipt,0),jsrc);
+    }
+  } else if(buildDerOrder==1) {
+    //Gradient Enhanced Kriging, R is blocked into (1+numVarsr) by (1+numVarsr)
+    //submatrices.  Each submatrix has numPoints by numPoints elements, i.e.
+    //the same size as the Kriging R matrix, in fact the upper-left-most
+    //submatrix is the Kriging R matrix, we need to reorder this so that
+    //"Whole Points" (a function value immediately followed by its gradient)
+    //are listed in the order given in iPtsKeep
+
+    int i, j;
+    for(int jpt=0, j=0; jpt<numPoints; ++jpt)
+      for(int jder=-1; jder<numVarsr; ++jder, ++j) {
+	int jsrc=iPtsKeep(jpt,0)+(jder+1)*numPoints;
+	for(int ipt=0, i=0; ipt<numPoints; ++ipt)
+	  for(int ider=-1; ider<numVarsr; ++ider, ++i)
+	    RChol(i,j)=R(iPtsKeep(ipt,0)+(ider+1)*numPoints,jsrc);
+      }
+  } else {
+    std::cerr << "buildDerOrder=" << buildDerOrder
+	      << " in void KrigingModel::reorderCopyRtoRChol(); "
+	      << "for Kriging buildDerOrder must be 0; "
+	      << "for Gradient Enhanced Kriging buildDerOrder must be 1; "
+	      << "Higher order derivative enhanced Kriging "
+	      << "(e.g Hessian Enhanced Kriging) has not been implemented"
+	      << std::endl;
+    assert(false);
+  }
+  return;
+}
+
+void KrigingModel::nuggetSelectingCholR(){
+  if(buildDerOrder==0)
+    numExtraDerKeep=0;
+  else if(buildDerOrder==1)
+    numExtraDerKeep=numVarsr; //the last point will have all of the gradient
+  else{
+    std::cerr << "buildDerOrder=" << buildDerOrder
+	      << " in void KrigingModel::nuggetSelectingCholR(); "
+	      << "for Kriging buildDerOrder must be 0; "
+	      << "for Gradient Enhanced Kriging buildDerOrder must be 1; "
+	      << "Higher order derivative enhanced Kriging "
+	      << "(e.g Hessian Enhanced Kriging) has not been implemented"
+	      << std::endl;
+    assert(false);
+  }
+  numWholePointsKeep=numPointsKeep=numPoints;
+
+  double min_allowed_rcond=1.0/maxCondNum;
+  int ld_RChol=RChol.getNRowsAct();
+  rcondDblWork.newSize(3*ld_RChol,1);
+  rcondIntWork.newSize(ld_RChol,1);
+  scaleRChol.newSize(numEqnAvail,1); //scaling/equilibrating is only
+  //necessary if GEK is used (because Kriging already has all ones on
+  //the diagonal of R; GEK doesn't) but the generic Cholesky
+  //factorization won't know in advance whether it's needed or not
+  //you can calculate rcond essentially "for free" if you do it at the
+  //same time as the Cholesky factorization
+  int chol_info;
+
+  //point order is the default point order
+  for(int ipt=0; ipt<numPointsKeep; ++ipt)
+    iPtsKeep(ipt,0)=ipt;
+  if(ifAssumeRcondZero==true)
+    rcondR=0.0;
+  else {
+    //but if GEK is used I still need to reorder from derivative submatrix
+    //blocks to whole point order
+    reorderCopyRtoRChol();
+
+    //See the end of the KrigingModel constructor for why Y and Gtran are
+    //what we already need them to be.
+    //the maximumAllowedPolyOrder given the number of Points is already
+    //selected, and Gtran is already what we need it to be
+
+    nug=0.0;
+    Chol_fact_workspace(RChol,scaleRChol,rcondDblWork,rcondIntWork,
+			chol_info,rcondR);
+  }
+
+  //this rcondR is for the equilibrated R/RChol (so pretend it has all
+  //ones on the diagonal)
+  if(rcondR<=min_allowed_rcond) {
+    double dbl_num_eqn=static_cast<double>(numEqnAvail);
+    double sqrt_num_eqn=std::sqrt(dbl_num_eqn);
+    min_allowed_rcond*=sqrt_num_eqn; //one norm is within a factor of N^0.5
+    //of 2 norm
+    rcondR/=sqrt_num_eqn; //one norm is within a factor of N^0.5 of 2 norm
+    double min_eig_worst=(rcondR*dbl_num_eqn)/(1.0+(dbl_num_eqn-1.0)*rcondR);
+    double max_eig_worst=dbl_num_eqn-(dbl_num_eqn-1.0)*min_eig_worst;
+    nug=(min_allowed_rcond*max_eig_worst-min_eig_worst)/
+      (1.0-min_allowed_rcond);
+    //this nugget will make the worst case scenario meet (with an ==)
+    //the maxCondNum constraint, I (KRD) don't expect this to
+    //ever == fail because I don't expect rcond to be *N^-0.5 without
+    //nugget and be *N^0.5 with nugget while the maximum eigen value
+    //of R (without nugget) is N-(N-1)*min_eigval (that comes from
+    //assumming all eigenvalues except the largest are the smallest
+    //possible for the given rcond) note that rcond is the LAPACK
+    //ESTIMATE of the 1 norm condition number so there are no 100%
+    //guarantees.
+    apply_nugget_build(); //multiply the diagonal elements by (1.0+nug)
+    reorderCopyRtoRChol();
+
+    Chol_fact_workspace(RChol,scaleRChol,rcondDblWork,rcondIntWork,
+			chol_info,rcondR);
+  }
+  return;
+}
+
+
+/* use Pivoted Cholesky to efficiently select an optimal subset
+   of available build points from which to construct the Gaussian
+   Process.  Here "optimal" means that, given the current set of
+   assumed correlation parameters, this subset maximizes the
+   amount of unique information content in R, note that this is
+   equivalent to a "best spaced" (for the chosen correlation
+   function and its parameters) set of points and the output at
+   those points does is not considered.  Thus if you have 2 points
+   that are very close together but on opposite sides of a
+   discontinutity it is highly likely that at least one of them
+   will get discarded */
+void KrigingModel::equationSelectingCholR(){
+  if(!((buildDerOrder==0)||(buildDerOrder==1))) {
+    std::cerr << "buildDerOrder=" << buildDerOrder
+	      << " in void KrigingModel::equationSelectingCholR().  "
+	      << "For Kriging buildDerOrder must equal 0.  "
+	      << "For Gradient Enhanced Kriging (GEK) buildDerOrder "
+	      << "must equal 1.  Higher order derivative enhanced "
+	      << "Kriging (e.g. Hessian Enhanced Kriging) has not "
+	      << "been implemented." << std::endl;
+    assert(false);
+  }
+
+  //polyOrder=polyOrderRequested;
+  nTrend=numTrend(polyOrderRequested,0);
+  Rinv_Gtran.newSize(numEqnAvail,nTrend);
+
+
+  //printf("Entered equationSelectingCholR()\n");
+  double min_allowed_rcond=1.0/maxCondNum;
+  //printf("min_allowed_rcond=%g\n",min_allowed_rcond);
+  //exit(0);
+  //double min_allowed_pivot_est_rcond=256.0/maxCondNum;
+
+  int ld_RChol=RChol.getNRowsAct();
+  //printf("ld_RChol=%d\n",ld_RChol);
+  int chol_info;
+  RChol.newSize(numPoints,numPoints);
+  scaleRChol.newSize(numEqnAvail,3); //maximum space needed
+  rcondDblWork.newSize(3*ld_RChol,1);
+  rcondIntWork.newSize(ld_RChol,1);
+  ld_RChol=RChol.getNRowsAct();
+
+  iPtsKeep.newSize(numPoints,1);
+  //assign the default order to points
+  for(int ipt=0; ipt<numPoints; ++ipt)
+    iPtsKeep(ipt,0)=ipt;
+
+  if(buildDerOrder==0) {
+    //We're using regular Kriging not GEK and for large matrices
+    //the pivoted Cholesky algorithm is nowhere close to as fast
+    //as the highly optimized level 3 LAPACK Cholesky so to make
+    //this run faster on average we're going to attempt to use
+    //the LAPACK cholesky take a look at the rcondR and then only
+    //do Pivoted Cholesky if we actually need to
+    RChol.copy(R);
+
+    //no scaling is necessary since have all ones on the diagonal
+    //of the Kriging R but the generic equilibrated Cholesky
+    //factoriztion function doesn't know that in advance
+    Chol_fact_workspace(RChol,scaleRChol,rcondDblWork,rcondIntWork,
+			chol_info,rcondR);
+    if(min_allowed_rcond<rcondR) {
+      numRowsR=numWholePointsKeep=numPointsKeep=numPoints;
+
+      Y.copy(Yall);
+
+      nTrend=numTrend(polyOrderRequested,0);
+      Gtran.newSize(numPoints,nTrend);
+      for(int itrend=0; itrend<nTrend; ++itrend)
+	for(int ipt=0; ipt<numPoints; ++ipt)
+	  Gtran(ipt,itrend)=Gall(itrend,ipt);
+
+      return;
+    }
+  }
+
+  // *******************************************************************
+  // in this section I need to get an optimally reordered Cholesky
+  // factorization of the Kriging or GEK R matrix and I need to compute
+  // the one norm for all sizes of that optimally reordered R matrix
+  // *******************************************************************
+  // We got here in one of two ways
+  //
+  // 1) We're doing Kriging and we actually need to do Pivoted Cholesky
+  //
+  // 2) We're doing Gradient Enhanced Kriging, and reordering "whole
+  //    points" (function value immediately followed by its derivatives)
+  //    according to the order of the Pivoted Cholesky on the Kriging R
+  //    works a lot better and is a lot faster than doing Pivoted
+  //    Cholesky on the GEK R.  In fact because the GEK R is so much
+  //    larger than the Kriging R, the cost of doing pivoted Cholesky on
+  //    the Kriging R will be insignificant compared to the cost of
+  //    doing LAPACK Cholesky on the GEK R so I'm just going to go ahead
+  //    and reorder the GEK R whether I need to or not (which I don't
+  //    know at this point anyway) rather than risk having to do the
+  //    LAPACK Cholesky twice
+
+  //if the user specifies an anchor point it must be the first point to
+  //prevent it from being pivoted away
+  if(ifHaveAnchorPoint&&(iAnchorPoint!=0)) {
+    iPtsKeep(iAnchorPoint,0)=0;
+    iPtsKeep(0,0)=iAnchorPoint;
+  }
+  else iAnchorPoint=0;
+
+  for(int jpt=0; jpt<numPoints; ++jpt) {
+    int jsrc=iPtsKeep(jpt,0);
+    for(int ipt=0; ipt<numPoints; ++ipt)
+      RChol(ipt,jpt)=R(iPtsKeep(ipt,0),jsrc);
+  }
+
+  int info=0;
+  char uplo='B'; //'B' means we have both halves of R in RChol so the
+  //fortran doesn't have to copy one half to the other, having both
+  //halves makes the memory access faster (can always go down columns)
+  numPointsKeep=numPoints;
+  PIVOTCHOL_F77(&uplo, &numPoints, RChol.ptr(0,0), &ld_RChol,
+    		iPtsKeep.ptr(0,0), &numPointsKeep, &min_allowed_rcond,
+		&info);
+
+  //for(int ipt=0; ipt<numPoints; ++ipt)
+  //printf("F77 iPtsKeep(%d)=%d\n",ipt,iPtsKeep(ipt,0));
+  //printf("\n");
+
+  //printf("*********************************\n");
+
+  if(ifHaveAnchorPoint&&(iAnchorPoint!=0)) {
+    iPtsKeep(0,0)=iAnchorPoint;
+    for(int ipt=1; ipt<numPoints; ++ipt) {
+      iPtsKeep(ipt,0)-=1; //Fortran indices start at 1 not zero so
+      //we have to convert to C++ indices which start from 0
+      if(iPtsKeep(ipt,0)==iAnchorPoint)
+	iPtsKeep(ipt,0)=0;
+    }
+  }
+  else {
+    for(int ipt=0; ipt<numPoints; ++ipt) {
+      iPtsKeep(ipt,0)-=1; //Fortran indices start at 1 not zero so
+      //we have to convert to C++ indices which start from 0
+      //printf("iPtsKeep(%2d,0)=%d\n",ipt,iPtsKeep(ipt,0));
+    }
+    //printf("\n");
+  }
+
+  //if I feed LAPACK a one norm of R and a Cholesky factorization of
+  //R it will give me back an rcond for O(N^2) ops which is practically
+  //free compared to the O(N^3) ops that the Cholesky factorization
+  //costs, the wonderful thing is if I just drop equations off the end
+  //of a pivoted Cholesky factorization I can get the rcondR for any
+  //number of rows/columns of the pivoted R matrix, but to make this
+  //efficient I need to get the one norms of R cheaply (easily doable,
+  //that's what happens in the next if Kriging els if GEK statement)
+  //and I'll use bisection to find the last equation I can retain
+  int iprev_lapack_rcondR;
+  int icurr_lapack_rcondR=numEqnAvail-1;
+  int num_eqn_keep=numEqnAvail;
+  oneNormR.newSize(numEqnAvail,1);
+  sumAbsColR.newSize(numEqnAvail,1);
+  if(buildDerOrder==0) {
+    //Kriging we need to compute the one-norms for the reordered Kriging
+    //R matrix
+    //the one norm is the largest of the sums of the absolute value of
+    //any of the columns, of course how many rows there are affects what
+    //the sums of absolute value of the columns are and how many columns
+    //there are affects which is the largest but we can build this up in
+    //such a way as to reuse the information from smaller numbers of
+    //rows/columns for larger numbers of rows/columns
+
+    int jsrc=iPtsKeep(0,0);
+    for(int ipt=0; ipt<numPoints; ++ipt)
+      sumAbsColR(ipt,0)=std::fabs(R(iPtsKeep(ipt,0),jsrc));
+    oneNormR(0,0)=sumAbsColR(0,0); //this is the one norm for the 1 by
+    //1 reordered R matrix
+
+    double tempdouble;
+    for(int jpt=1; jpt<numPoints; ++jpt) {
+      jsrc=iPtsKeep(jpt,0);
+      for(int ipt=0; ipt<numPoints; ++ipt)
+	sumAbsColR(ipt,0)+=std::fabs(R(iPtsKeep(ipt,0),jsrc));
+      tempdouble=sumAbsColR(0,0);
+      for(int ipt=1; ipt<=jpt; ++ipt)
+	if(tempdouble<sumAbsColR(ipt,0))
+	  tempdouble=sumAbsColR(ipt,0);
+      oneNormR(jpt,0)=tempdouble; //this is the one norm for the
+      //jpt by jpt reordered R matrix
+    }
+    uplo='L'; //get it into the same state as GEK
+    iprev_lapack_rcondR=0; //a 1 by 1 matrix has a condition number of 1
+
+  } else if(buildDerOrder==1){
+    //Gradient Enhanced Kriging
+    //it works better (and is a lot faster) if we reorder whole points
+    //according to the Pivoted Cholesky ON THE KRIGING R order in iPtsKeep
+    //so we'll calculate the one norm for all sizes of the reordered
+    //GEK R and then Cholesky factorize the GEK R
+    reorderCopyRtoRChol();
+    /*
+    printf("R=\n");
+    for(int i=0; i<numEqnAvail; ++i) {
+      for(int j=0; j<numEqnAvail; ++j)
+	printf("%14.8g ",RChol(i,j));
+      printf("\n");
+    }
+    printf("\n");
+    */
+    scaleRChol.newSize(numEqnAvail,2);
+    for(int i=0; i<numEqnAvail; ++i) {
+      scaleRChol(i,1)=std::sqrt(RChol(i,i));
+      scaleRChol(i,0)=1.0/scaleRChol(i,1);
+    }
+
+    //equilibrate RChol
+    for(int j=0; j<numEqnAvail; ++j) {
+      for(int i=0; i<numEqnAvail; ++i)
+	RChol(i,j)*=scaleRChol(i,0)*scaleRChol(j,0);
+      RChol(j,j)=1.0; //there is zero correlation between an individual
+      //point's function value and its derivatives so we know how to fix
+      //round of error so just do it
+    }
+    /*
+    printf("RE=\n");
+    for(int i=0; i<numEqnAvail; ++i) {
+      for(int j=0; j<numEqnAvail; ++j)
+	printf("%14.8g ",RChol(i,j));
+      printf("\n");
+    }
+    printf("\n");
+    */
+    //the one norm number is the largest of the sums of the absolute
+    //value of any of the columns of the matrix, of course how many rows
+    //there are affects what the sums of absolute value of the columns
+    //are and how many columns there are affects which is the largest
+    //but we can build this up in such a way as to reuse the information
+    //from smaller numbers of rows/columns for larger numbers of rows/
+    //columns
+
+    //right now RChol holds the reordered R matrix
+    for(int i=0; i<numEqnAvail; ++i)
+      sumAbsColR(i,0)=std::fabs(RChol(i,0));
+    oneNormR(0,0)=sumAbsColR(0,0); //this is the one norm for the 1 by
+    //1 reordered R matrix
+
+    double tempdouble;
+    for(int j=1; j<numEqnAvail; ++j) {
+      for(int i=0; i<numEqnAvail; ++i)
+	sumAbsColR(i,0)+=std::fabs(RChol(i,j));
+      tempdouble=sumAbsColR(0,0);
+      for(int i=1; i<=j; ++i)
+	if(tempdouble<sumAbsColR(i,0))
+	  tempdouble=sumAbsColR(i,0);
+      oneNormR(j,0)=tempdouble;  //this is the one norm for the
+      //j by j reordered R matrix
+    }
+
+    //do the (highly optimized) LAPACK Cholesky Decomposition of all
+    //the equations (but sorted into the point order determined by
+    //the pivoting cholesky above)
+    uplo='L';
+    DPOTRF_F77(&uplo,&numEqnAvail,RChol.ptr(0,0),&ld_RChol,&info);
+
+    //Kriging already has the rcondR so to get GEK into an equivalent
+    //state we will feed LAPACK the one norm of the full GEK R (after
+    //the reordering and equilibration) and it will give me back GEK's
+    //rcondR
+    DPOCON_F77(&uplo,&numEqnAvail,RChol.ptr(0,0),&ld_RChol,
+	       oneNormR.ptr(icurr_lapack_rcondR,0),
+	       &rcondR,rcondDblWork.ptr(0,0),rcondIntWork.ptr(0,0),
+	       &info);
+
+    //printf("rcond(RE)=%g icurr_lapack_rcondR=%d\n",rcondR,icurr_lapack_rcondR);
+
+    //the first derivatives of the correlation at a point are uncorrelated
+    //with the correlation function at the same point, i.e. the (1+numVarsr)
+    //by (1+numVarsr) correlation matrix has a condition number of 1
+    iprev_lapack_rcondR=numVarsr; //no 1+ because C++ indexes start at zero
+  }
+
+  // *****************************************************************
+  // in this section we will efficiently determine the maximum number
+  // of equations that we can retain by doing a bisection search using
+  // O(log2(N)) calls of LAPACK's rcond estimate (each of which cost
+  // only O(n^2) ops where n is the number of eqns in the current
+  // subset
+  // *****************************************************************
+
+  lapackRcondR.newSize(numEqnAvail,1);
+  lapackRcondR(iprev_lapack_rcondR,0)=1.0; //since the condition number
+  //is one at iprev_lapack_rcondR we know we can keep at least this many
+  //equations
+
+  lapackRcondR(icurr_lapack_rcondR,0)=rcondR; //the maximum number
+  //of equations we can keep is icurr_lapack_rcondR=numEqnAvail-1
+  //and we know the rcondR for that many equations
+
+  //note num_eqn_keep is now numEqnAvail
+  int inext_lapack_rcondR=icurr_lapack_rcondR; //the last available eqn
+  if((rcondR<=min_allowed_rcond)&&
+     (inext_lapack_rcondR-iprev_lapack_rcondR==1)) {
+    //at this point the previous lapack rcondR==1.0
+    rcondR=1.0;
+    inext_lapack_rcondR=iprev_lapack_rcondR;
+    //printf("if1\n");
+  }
+
+  //do the bisection search if necessary, at most ceil(log2()) more
+  //calls to the LAPACK rcond function
+  int rcond_iter=0;
+  int max_rcond_iter=
+    std::ceil(std::log(static_cast<double>
+		       (inext_lapack_rcondR-iprev_lapack_rcondR))
+	      /std::log(2.0));
+  while((lapackRcondR(inext_lapack_rcondR,0)<=min_allowed_rcond)&&
+        (inext_lapack_rcondR>iprev_lapack_rcondR)) {
+    //printf("inWhile\n");
+    ++rcond_iter;
+    icurr_lapack_rcondR=(iprev_lapack_rcondR+inext_lapack_rcondR)/2;
+    num_eqn_keep=icurr_lapack_rcondR+1;
+
+    //the LAPACK rcond function
+    DPOCON_F77(&uplo,&num_eqn_keep,RChol.ptr(0,0),&ld_RChol,
+	       oneNormR.ptr(icurr_lapack_rcondR,0),
+	       &rcondR,rcondDblWork.ptr(0,0),rcondIntWork.ptr(0,0),
+	       &info);
+    lapackRcondR(icurr_lapack_rcondR,0)=rcondR;
+    //printf("rcond_iter=%d icurr_lapack_rcondR=%d rcondR=%g\n",
+    //rcond_iter,icurr_lapack_rcondR,rcondR);
+
+    if(rcondR<min_allowed_rcond)
+      inext_lapack_rcondR=icurr_lapack_rcondR;
+    else if(min_allowed_rcond<rcondR)
+      iprev_lapack_rcondR=icurr_lapack_rcondR;
+    else if(min_allowed_rcond==rcondR) {
+      //num_eqn_keep=icurr_lapack_rcondR+1;
+      break;
+    }
+    if((inext_lapack_rcondR-iprev_lapack_rcondR==1)||
+       (max_rcond_iter<rcond_iter)) {
+      num_eqn_keep=iprev_lapack_rcondR+1;
+      rcondR=lapackRcondR(iprev_lapack_rcondR,0);
+      break;
+    }
+  }
+  //printf(" pivoted_rcondR=%g numRowsR=%d\n",rcondR,num_eqn_keep);
+
+  numRowsR=num_eqn_keep; //this is the maximum number of equations that
+  //we can keep
+
+  // ***************************************************************
+  // in this section we downsize the arrays being retained and keep
+  // only the optimal subset, in or working copies
+  // ***************************************************************
+
+  RChol.resize(num_eqn_keep,num_eqn_keep); //resize() instead of newSize()
+  //because we want to keep the current contents in the same 2D
+  //order
+  /*
+  if(num_eqn_keep>=10) {
+    printf("RChol(1:10,1:10)=\n");
+    for(int i=0; i<10; ++i) {
+      for(int j=0; j<10; ++j)
+	printf("%12.6g ",RChol(i,j));
+      printf("\n");
+    }
+    printf("\n\n");
+  }
+  */
+
+  //polyOrder=polyOrderRequested; //redundant but for clarity
+
+  //the following while loop was commented out when adaptive selection of
+  //the trend basis functions via pivote cholesky factorization of G*R^-1*G^T
+  //was implemented
+  //while((numRowsR<=numTrend(polyOrder,0))&&(polyOrder>0))
+  //--polyOrder;
+
+  //nTrend=numTrend(polyOrder,0); //commented out because we now select a subset of Poly based using a Pivoted Cholesky factorization of G*R^-1*G^T which happens when trendSelectingPivotedCholesy is called by materObjectiveAndConstraints() (we no longer select SOLELY on polynomial order and number of points
+
+  nTrend=numTrend(polyOrderRequested,0);
+
+  //printf("num_eqn_keep=%d numRowsR=%d polyOrder=%d nTrend=%d rcondR=%g lapackRcondR(num_eqn_keep-1,0)=%g\n",num_eqn_keep,numRowsR,polyOrder,nTrend,rcondR,lapackRcondR(num_eqn_keep-1,0));
+
+  //we need to downsize Gtran now but we only need to downsize Poly at
+  //the end of create()
+  Gtran.newSize(num_eqn_keep,nTrend); //newSize() because we don't care
+ //about the current contents of Gtran
+
+  Y.newSize(num_eqn_keep,1); //newSize() because we don't care about
+  //the current contents of Y
+
+  if(buildDerOrder==0) {
+    // keep only the useful parts for Kriging
+    numWholePointsKeep=numPointsKeep=num_eqn_keep;
+    numExtraDerKeep=0;
+
+    /*
+    if(numPointsKeep>10) {
+
+      MtxDbl RCholDEBUG(numPointsKeep,numPointsKeep);
+      for(int jpt=0; jpt<numPointsKeep; ++jpt) {
+	int jsrc=iPtsKeep(jpt,0);
+	for(int ipt=0; ipt<numPointsKeep; ++ipt)
+	  RCholDEBUG(ipt,jpt)=R(iPtsKeep(ipt,0),jsrc);
+      }
+      double rcondRDEBUG;
+      int chol_info_debug;
+
+      printf("Rreorder(1:10,1:10)=\n");
+      for(int ipt=0; ipt<10; ++ipt) {
+	for(int jpt=0; jpt<10; ++jpt)
+	  printf("%12.6g ",RCholDEBUG(ipt,jpt));
+	printf("\n");
+      }
+      printf("\n\n");
+
+      Chol_fact_workspace(RCholDEBUG,scaleRChol,rcondDblWork,rcondIntWork,
+			  chol_info_debug,rcondRDEBUG);
+
+      printf("RChol(1:10,1:10)=\n");
+      for(int ipt=0; ipt<10; ++ipt) {
+	for(int jpt=0; jpt<10; ++jpt)
+	  printf("%12.6g ",RChol(ipt,jpt));
+	printf("\n");
+      }
+      printf("\n\n");
+
+      printf("RCholDEBUG(1:10,1:10)=\n");
+      for(int ipt=0; ipt<10; ++ipt) {
+	for(int jpt=0; jpt<10; ++jpt)
+	  printf("%12.6g ",RCholDEBUG(ipt,jpt));
+	printf("\n");
+      }
+      printf("\n\n");
+
+      printf("[RChol-RCholDEBUG](1:10,1:10)=\n");
+      for(int ipt=0; ipt<10; ++ipt) {
+	for(int jpt=0; jpt<10; ++jpt)
+	  printf("%12.6g ",RChol(ipt,jpt)-RCholDEBUG(ipt,jpt));
+	printf("\n");
+      }
+      printf("\n\n");
+
+      printf("rcondR=%g rcondRDEBUG=%g numPointsKeep=%d\nErrorRChol=\n",
+	     rcondR,rcondRDEBUG,numPointsKeep);
+
+    }
+    */
+
+    //keep the useful part of Y
+    for(int ipt=0; ipt<numPointsKeep; ++ipt)
+      Y(ipt,0)=Yall(iPtsKeep(ipt,0),0);
+
+    //keep the useful part of G (actually G^T)
+    for(int itrend=0; itrend<nTrend; ++itrend)
+      for(int ipt=0; ipt<numPointsKeep; ++ipt)
+	Gtran(ipt,itrend)=Gall(itrend,iPtsKeep(ipt,0));
+
+    /*
+    for(int ipt=0; ipt<numPointsKeep; ++ipt) {
+      printf("Gtran(%3d,:)=[%12.6g",ipt,Gtran(ipt,0));
+      for(int itrend=1; itrend<nTrend; ++itrend)
+	printf(", %12.6g",Gtran(ipt,itrend));
+      printf("] XR(:,%3d)=[%12.6g",ipt,XR(0,iPtsKeep(ipt,0)));
+      for(int k=1; k<numVarsr; ++k)
+	printf(", %12.6g",XR(k,iPtsKeep(ipt,0)));
+      printf("]^T Y(%3d,0)=%12.6g\n",ipt,Y(ipt,0));
+    }
+    printf("\n");
+    */
+
+
+  } else if(buildDerOrder==1) {
+    // keep on the useful parts for Gradient Ehanced Kriging
+
+    //integer division automatically rounds down
+    numWholePointsKeep=num_eqn_keep/(1+numVarsr);
+
+    //we also need to round up
+    numPointsKeep=
+      static_cast<int>(std::ceil(static_cast<double>(num_eqn_keep)/
+				 static_cast<double>(1+numVarsr)));
+
+    if(numPointsKeep==numWholePointsKeep) {
+      //perhaps a better name would be numLastDerKeep... this is the number
+      //of derivatives retained for the last point.
+      numExtraDerKeep==numVarsr;
+    } else
+      numExtraDerKeep=num_eqn_keep-(1+numWholePointsKeep*(1+numVarsr));
+
+    //we need to undo the equilibration of RChol, recall that scaleRChol
+    //is already in the pivoted Cholesky order
+    for(int j=0; j<num_eqn_keep; ++j)
+      for(int i=j; i<num_eqn_keep; ++i)
+	RChol(i,j)*=scaleRChol(i,1); //note that this assumes that the
+    //nkm::SurfMat class uses the lower triangular part of of RChol
+    //otherwise (if this function uses the lower triangular part but
+    //surfmat uses the upper triangular part) you'd need
+    //RChol(j,i)=RChol(i,j)*scaleRChol(i,j) but you could do a
+    //RChol(j,i)=RChol(i,j)*=ScaleRChol(i,1); just to be safe
+
+    //keep the useful part of G (actually G^T)
+    for(int itrend=0; itrend<nTrend; ++itrend) {
+      int i, ipt;
+      for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt) {
+	int isrc=iPtsKeep(ipt,0)*(1+numVarsr);
+	for(int k=0; k<1+numVarsr; ++k, ++isrc, ++i)
+	  Gtran(i,itrend)=Gall(itrend,isrc);
+      }
+      if(numPointsKeep>numWholePointsKeep) {
+#ifdef __KRIG_ERR_CHECK__
+	assert((ipt==numWholePointsKeep)&&
+	       (i==(numWholePointsKeep*(1+numVarsr)))&&
+	       (numWholePointsKeep+1==numPointsKeep));
+#endif
+	int isrc=iPtsKeep(ipt,0)*(1+numVarsr);
+	Gtran(i,itrend)=Gall(itrend,isrc);
+	++i;
+	++isrc;
+	for(int k=0; k<numExtraDerKeep; ++k, ++isrc, ++i)
+	  Gtran(i,itrend)=Gall(itrend,isrc);
+      }
+    }
+
+    //keep the useful part of Y, also we need to undo the
+    //equilibration of RChol
+    { //{ to impose scope
+      int i, ipt;
+      for(ipt=0, i=0; ipt<numWholePointsKeep; ++ipt) {
+	int isrc=iPtsKeep(ipt,0)*(1+numVarsr);
+	for(int k=0; k<1+numVarsr; ++k, ++isrc, ++i)
+	  Y(i,0)=Yall(isrc,0);
+      }
+      if(numPointsKeep>numWholePointsKeep) {
+#ifdef __KRIG_ERR_CHECK__
+	assert((ipt==numWholePointsKeep)&&
+	       (i==(numWholePointsKeep*(1+numVarsr)))&&
+	       (numWholePointsKeep+1==numPointsKeep));
+#endif
+	int isrc=iPtsKeep(ipt,0)*(1+numVarsr);
+	Y(i,0)=Yall(isrc,0);
+	++i;
+	++isrc;
+	for(int k=0; k<numExtraDerKeep; ++k, ++isrc, ++i)
+	  Y(i,0)=Yall(isrc,0);
+      }
+    } //{} to impose scope
+  } //else if(buildDerOrder==1) {
+
+  iPtsKeep.resize(numPointsKeep,1);
+
+  return;
+}
+
+/** G_Rinv_Gtran must be filled with G*R^-1*G^T prior to calling
+    void KrigingModel::trendSelectingPivotedCholesky() */
+void KrigingModel::trendSelectingPivotedCholesky(){
+
+  //nTrend=numTrend(polyOrderRequested,0);
+  iTrendKeep.newSize(nTrend,1);
+  double min_allowed_rcond=1.0/maxCondNum;
+  int num_trend_want=numTrend(polyOrderRequested,0);
+
+  int max_trend_to_keep=numRowsR-1-2*numVarsr;
+  if(numRowsR/2<max_trend_to_keep)
+    max_trend_to_keep=numRowsR/2;
+  if(num_trend_want<max_trend_to_keep)
+    max_trend_to_keep=num_trend_want;
+  if(max_trend_to_keep<1)
+    max_trend_to_keep=1;
+
+  //std::cout << "numRowrR=" << numRowsR << " nTrend=" << nTrend << " max_trend_to_keep=" << max_trend_to_keep << std::endl;
+
+  if(nTrend<=max_trend_to_keep) {
+    //do a LAPACK cholesky first
+    G_Rinv_Gtran_Chol.copy(G_Rinv_Gtran);
+    int chol_info;
+    Chol_fact_workspace(G_Rinv_Gtran_Chol,G_Rinv_Gtran_Chol_Scale,
+			G_Rinv_Gtran_Chol_DblWork,G_Rinv_Gtran_Chol_IntWork,
+			chol_info,rcond_G_Rinv_Gtran);
+    if(min_allowed_rcond<rcond_G_Rinv_Gtran) {
+      //the LAPACK Cholesky was not ill-conditioned with the desired
+      //full set of trend basis functions so we'll use them all
+      for(int itrend=0; itrend<nTrend; ++itrend)
+	iTrendKeep(itrend,0)=itrend;
+      return;
+    }
+  }
+
+  // *****************************************************************
+  // if we got here we need to do a Pivoted Cholesky factorization of
+  // G*R^-1*G^T to select an optimal subset of trend basis functions
+  // *****************************************************************
+
+  // we have a slight problem, basically the one trend function that
+  // is guaranteed to be selected is the one that has the largest
+  // diagonal element in G*R^-1*G^T, or if they are all the same it
+  // will be the first one.  we want to guarantee that the constant
+  // basis function (polynomial of order 0) is retained so we need to
+  // equilibrate G_Rinv_Gtran so that it has all ones on the diagonal
+  // and therefore that the constant trend basis function will be
+  // retained
+
+  // I realize this has R in the name but I don't want to allocate another
+  // variable
+  scaleRChol.newSize(nTrend,3);
+  for(int itrend=0; itrend<nTrend; ++itrend) {
+    scaleRChol(itrend,1)=std::sqrt(G_Rinv_Gtran(itrend,itrend));
+    scaleRChol(itrend,0)=1.0/scaleRChol(itrend,1);
+  }
+
+
+  for(int jtrend=0; jtrend<nTrend; ++jtrend) {
+    double tempdouble=scaleRChol(jtrend,0);
+    for(int itrend=0; itrend<nTrend; ++itrend)
+      G_Rinv_Gtran(itrend,jtrend)*=scaleRChol(itrend,0)*tempdouble;
+    G_Rinv_Gtran(jtrend,jtrend)=1.0; //numerical round off error could
+    //kill our guarantee of keeping the constant trend basis function
+    //so we'll just assign the right correct answer which is 1.0
+  }
+
+  G_Rinv_Gtran_Chol.copy(G_Rinv_Gtran);
+
+  int ld_G_Rinv_Gtran_Chol=G_Rinv_Gtran_Chol.getNRowsAct();
+  int info=0;
+  char uplo='B'; //'B' means we have both halves of G*R^-1*G^T in
+  //G_Rinv_Gtran_Chol so the FORTRAN doesn't have to copy one half to the
+  //other, having both halves makes the memory access faster (can always
+  //go down columns)
+  int num_trend_keep=-max_trend_to_keep; //RANK<0 on input tells PIVOTCHOL_F77
+  //that we only want to keep the first abs(RANK) entries so it can stop early
+  PIVOTCHOL_F77(&uplo, &nTrend, G_Rinv_Gtran_Chol.ptr(0,0),
+		&ld_G_Rinv_Gtran_Chol, iTrendKeep.ptr(0,0), &num_trend_keep,
+		&min_allowed_rcond, &info);
+
+  nTrend=num_trend_keep; //this is the maximum number of trend functions
+  //we could keep, we might not be able to keep this many
+
+  //FORTRAN indices start at 1 not zero so we have to convert to C++ indices
+  //which start at zero
+  for(int itrend=0; itrend<nTrend; ++itrend)
+    iTrendKeep(itrend,0)-=1;
+
+  // ************************************************************
+  // in this section I need to calculate the one norm for subsets
+  // of the first jtrend (reordered) rows/columns of the
+  // equilibrated G*R^-1*G^T , for jtrend=1 to nTrend
+  // ************************************************************
+
+  //I realize that this says R but I don't want to allocate another variable
+  oneNormR.newSize(nTrend,1);
+  //I realize that this says R but I don't want to allocate another variable
+  sumAbsColR.newSize(nTrend,1);
+  int jsrc=iTrendKeep(0,0);
+  for(int itrend=0; itrend<nTrend; ++itrend)
+    sumAbsColR(itrend,0)=std::fabs(G_Rinv_Gtran(iTrendKeep(itrend,0),jsrc));
+  oneNormR(0,0)=sumAbsColR(0,0); //this is the one norm for the 1 by
+  //1 reordered G_Rinv_Gtran matrix
+
+  double tempdouble;
+  for(int jtrend=1; jtrend<nTrend; ++jtrend) {
+    jsrc=iTrendKeep(jtrend,0);
+    for(int itrend=0; itrend<nTrend; ++itrend)
+      sumAbsColR(itrend,0)+=std::fabs(G_Rinv_Gtran(iTrendKeep(itrend,0),jsrc));
+    tempdouble=sumAbsColR(0,0);
+    for(int itrend=1; itrend<=jtrend; ++itrend)
+      if(tempdouble<sumAbsColR(itrend,0))
+	tempdouble=sumAbsColR(itrend,0);
+    oneNormR(jtrend,0)=tempdouble; //this is the one norm for the
+    //jtrend by jtrend reordered G_Rinv_Gtran matrix
+  }
+
+  ld_G_Rinv_Gtran_Chol=G_Rinv_Gtran_Chol.getNRowsAct(); //this probably hasn't changed
+  //but better safe than sorry
+  rcondDblWork.newSize(3*ld_G_Rinv_Gtran_Chol,1);
+  rcondIntWork.newSize(ld_G_Rinv_Gtran_Chol,1);
+  int icurr_lapack_rcond=nTrend-1;
+  uplo='L';
+  DPOCON_F77(&uplo,&nTrend,G_Rinv_Gtran_Chol.ptr(0,0),&ld_G_Rinv_Gtran_Chol,
+	     oneNormR.ptr(icurr_lapack_rcond,0),&rcond_G_Rinv_Gtran,
+	     rcondDblWork.ptr(0,0),rcondIntWork.ptr(0,0),&info);
+
+  //need to do a bisection search for the last trend function that we can keep
+  lapackRcondR(icurr_lapack_rcond,0)=rcond_G_Rinv_Gtran; //the maximum number
+  //of trend basis functions we can keep is icurr_lapack_rcond=nTrend-1
+  //and we know the rcond for that many equations
+  int iprev_lapack_rcond=0;
+  lapackRcondR(iprev_lapack_rcond,0)=1.0; //the constant trend funcation by
+  //itself is guaranteed to have condition # = 1.0
+
+  //note num_trend_keep is now nTrend
+  int inext_lapack_rcond=icurr_lapack_rcond; //the last available basis
+  //function
+  if((rcond_G_Rinv_Gtran<=min_allowed_rcond)&&
+     (inext_lapack_rcond-iprev_lapack_rcond==1)) {
+    //at this point the previous lapack rcondR==1.0
+    rcond_G_Rinv_Gtran=1.0;
+    inext_lapack_rcond=iprev_lapack_rcond;
+    //printf("if1\n");
+  }
+
+  //do the bisection search if necessary, at most ceil(log2()) more
+  //calls to the LAPACK rcond function
+  int rcond_iter=0;
+  int max_rcond_iter=
+    std::ceil(std::log(static_cast<double>
+		       (inext_lapack_rcond-iprev_lapack_rcond))
+	      /std::log(2.0));
+  while((lapackRcondR(inext_lapack_rcond,0)<=min_allowed_rcond)&&
+        (inext_lapack_rcond>iprev_lapack_rcond)) {
+    //printf("inWhile\n");
+    ++rcond_iter;
+    icurr_lapack_rcond=(iprev_lapack_rcond+inext_lapack_rcond)/2;
+    num_trend_keep=icurr_lapack_rcond+1;
+
+    //the LAPACK rcond function
+    DPOCON_F77(&uplo,&num_trend_keep,G_Rinv_Gtran_Chol.ptr(0,0),
+	       &ld_G_Rinv_Gtran_Chol,oneNormR.ptr(icurr_lapack_rcond,0),
+	       &rcond_G_Rinv_Gtran,rcondDblWork.ptr(0,0),
+	       rcondIntWork.ptr(0,0),&info);
+    lapackRcondR(icurr_lapack_rcond,0)=rcond_G_Rinv_Gtran;
+    //printf("rcond_iter=%d icurr_lapack_rcondR=%d rcondR=%g\n",
+    //rcond_iter,icurr_lapack_rcondR,rcondR);
+
+    if(rcond_G_Rinv_Gtran<min_allowed_rcond)
+      inext_lapack_rcond=icurr_lapack_rcond;
+    else if(min_allowed_rcond<rcond_G_Rinv_Gtran)
+      iprev_lapack_rcond=icurr_lapack_rcond;
+    else if(min_allowed_rcond==rcond_G_Rinv_Gtran) {
+      //num_trend_keep=icurr_lapack_rcond+1;
+      break;
+    }
+    if((inext_lapack_rcond-iprev_lapack_rcond==1)||
+       (max_rcond_iter<rcond_iter)) {
+      num_trend_keep=iprev_lapack_rcond+1;
+      rcond_G_Rinv_Gtran=lapackRcondR(iprev_lapack_rcond,0);
+      break;
+    }
+  }
+  //printf(" pivoted_rcondR=%g numRowsR=%d\n",rcondR,num_eqn_keep);
+
+  nTrend=num_trend_keep; //this is the maximum number of trend basis functions
+  //that we can keep
+
+  iTrendKeep.resize(nTrend,1);
+  //we don't want the basis functions in their optimal order we want them
+  //in their logical order, minus the ones we couldn't keep
+  iTrendKeep.sortRows();
+
+  //were going to copy the portion of the equilibrated G*R^-1*G^T matrix
+  //that were keeping, in its logical order, into G_Rinv_Gtran_Chol and then
+  //do a LAPACK cholesky on it, and then undo the equilibration
+  G_Rinv_Gtran_Chol.newSize(nTrend,nTrend);
+  for(int jtrend=0; jtrend<nTrend; ++jtrend) {
+    int jsrc=iTrendKeep(jtrend,0);
+    scaleRChol(jtrend,2)=scaleRChol(jsrc,1);
+    for(int itrend=0; itrend<nTrend; ++itrend)
+      G_Rinv_Gtran_Chol(itrend,jtrend)=G_Rinv_Gtran(iTrendKeep(itrend,0),jsrc);
+  }
+
+  //do the LAPACK cholesky factorization
+  int chol_info;
+  Chol_fact_workspace(G_Rinv_Gtran_Chol,G_Rinv_Gtran_Chol_Scale,
+		      G_Rinv_Gtran_Chol_DblWork,G_Rinv_Gtran_Chol_IntWork,
+		      chol_info,rcond_G_Rinv_Gtran);
+
+  //we still need to undo the equilbration because we copied the
+  //equilibrated G*R^-1*G^T matrix into G_Rinv_Gtran_Chol before doing
+  //the cholesky factorization
+  for(int jtrend=0; jtrend<nTrend; ++jtrend)
+    for(int itrend=jtrend; itrend<nTrend; ++itrend)
+      G_Rinv_Gtran_Chol(itrend,jtrend)*=scaleRChol(itrend,2);
+
+
+
+  for(int itrend=1; itrend<nTrend; ++itrend) {
+    int isrc=iTrendKeep(itrend,0);
+    if(itrend<isrc)
+      for(int i=0; i<numRowsR; ++i) {
+	Gtran(i,itrend)=Gtran(i,isrc);
+	Rinv_Gtran(i,itrend)=Rinv_Gtran(i,isrc);
+      }
+  }
+  Gtran.resize(numRowsR,nTrend);
+  Rinv_Gtran.resize(numRowsR,nTrend);
+
+  //and were done with the pivoted cholesky, but at the end of the optimization
+  //we will still need to discard the subset of Poly that was not selected by
+  //trendSelectingPivotedCholesky()
+  return;
+}
+
+
+
+
+
+/** this function calculates the objective function (negative "per equation"
+    log likelihood) and/or the constraint (reciprocal condition number)
+    functions using a precompute and store (store across sequential calls
+    to this function) strategy to reduce the computational cost, make sure
+    only to COPY OUT results from member variables so the state is not
+    changed
+*/
+void KrigingModel::masterObjectiveAndConstraints(const MtxDbl& theta, int obj_der_mode, int con_der_mode)
+{
+  // if(obj_der_mode=1) (1=2^0=> 0th derivative) calculate objective function
+  // if(con_der_mode=1) (1=2^0=> 0th derivative) calculate the constraint
+  //functions
+  // ERROR if(con_der_mode>=2) (2=2^1 = 1st derivative) this function does not
+  //                           support analytical derivatives of the objective
+  //                           function
+  // ERROR if(con_der_mode>=2) (2=2^1 = 1st derivative) this function does not
+  //                           support analytical derivatives of the constraint
+  //                           function
+
+  //printf("maxConDerMode=%d con_der_mode=%d maxObjDerMode=%d obj_der_mode=%d\n",
+  //maxConDerMode,con_der_mode,maxObjDerMode,obj_der_mode);
+
+  //might want to replace this with a thrown exception
+  assert((maxObjDerMode<=1)&&(maxConDerMode<=1)&&
+	 (0<=obj_der_mode)&&(obj_der_mode<=maxObjDerMode)&&
+	 (0<=con_der_mode)&&(con_der_mode<=maxConDerMode)&&
+	 ((1<=obj_der_mode)||(1<=con_der_mode)));
+
+  //if theta was the same as the last time we called this function than we can reuse some of the things we calculated last time
+
+  if(prevTheta.getNElems()!=numTheta) {
+    //different number of elements means we can't reuse
+    prevTheta.newSize(numTheta,1);
+    prevObjDerMode=prevConDerMode=0;
+  }
+  else
+    for(int k=0; k<numTheta; ++k)
+      if(prevTheta(k,0)!=theta(k,0)) {
+	//some parameter changed so we can't reuse
+	prevObjDerMode=prevConDerMode=0;
+	break;
+      }
+
+  if((obj_der_mode<=prevObjDerMode)&&
+     (con_der_mode<=prevConDerMode)) {
+    //we've already calculated everything you just asked for so reuse it
+    return;
+  }
+
+  //record the current theta as the previous theta so next time we can tell
+  //if we should reuse the stuff we calculate this time
+  if((prevObjDerMode==0)&&(prevConDerMode==0))
+    for(int k=0; k<numTheta; ++k)
+      prevTheta(k,0)=theta(k,0);
+
+  if(prevObjDerMode==0) {
+    //fill R with the build data "correlation matrix" (R is a member variable)
+    //for Kriging R is actually a correlation matrix (it is real, symmetric,
+    //positive definite and has all ones on the diagonal) for GEK it is
+    //real symmetric, and positive definite but does not have all ones on the
+    //diagonal, but the GEK R can be equilibrated/scaled to an honest to
+    //goodness correlation matrix.
+    correlation_matrix(theta);
+
+    //we need to perform a LU decomposition of R and calculate the
+    //determinant of R, I have replaced LU with Cholesky because it's
+    //better/faster, see
+    //http://en.wikipedia.org/wiki/Determinant#Determinant_from_LU_decomposition
+    //for how to efficiently compute the determinant from an LU factorization
+
+    int chol_info=0;
+    if(ifPrescribedNug==true) {
+      //the user prescribed a nugget for us to use, e.g. for when there is
+      //measurement error of known magnitude
+      apply_nugget_build(); //modify R by a nugget in place
+      reorderCopyRtoRChol();
+
+      Chol_fact_workspace(RChol,scaleRChol,rcondDblWork,rcondIntWork,
+			  chol_info,rcondR);
+      //Pivoted Cholesky o G*R^-1*G^T does not require pivoted Cholesky of R
+      //so the size of Gtran could have changed
+      nTrend=numTrend(polyOrderRequested,0);
+      if(Gtran.getNCols() < nTrend) {
+	Gtran.newSize(numEqnAvail,nTrend);
+	for(int itrend=0; itrend<nTrend; ++itrend)
+	  for(int i=0; i<numEqnAvail; ++i)
+	    Gtran(i,itrend)=Gall(itrend,i);
+      }
+
+    } else if(ifChooseNug==true) {
+      //the user wants us to select a small nugget to fix ill-conditioning of R
+      nuggetSelectingCholR();
+      //Pivoted Cholesky o G*R^-1*G^T does not require pivoted Cholesky of R
+      //so the size of Gtran could have changed
+      nTrend=numTrend(polyOrderRequested,0);
+      if(Gtran.getNCols() < nTrend) {
+	Gtran.newSize(numEqnAvail,nTrend);
+	for(int itrend=0; itrend<nTrend; ++itrend)
+	  for(int i=0; i<numEqnAvail; ++i)
+	    Gtran(i,itrend)=Gall(itrend,i);
+      }
+    }else {
+      //the user wants us to fix ill-conditioning of R by using Pivoted Cholesky
+      //to select an optimal subset of points from which to build the Kriging
+      //(or Gradient Enhanced Kriging) model
+      equationSelectingCholR();
+    }
+    double min_allowed_rcond=1.0/maxCondNum;
+    //nTrend=numTrend(polyOrder,0);
+    nTrend=numTrend(polyOrderRequested,0);
+
+    if((rcondR<=min_allowed_rcond)) { //||(numRowsR<=nTrend)) {
+      printf("singular correlation matrix rcondR=%g numRowsR=%d numTrend=%d numEqnAvail=%d\n",
+	     rcondR,numRowsR,nTrend,numEqnAvail);
+      MtxDbl corr_len_temp(numVarsr,1);
+      get_corr_len_from_theta(corr_len_temp, theta);
+      printf("corr_len=[%g",corr_len_temp(0,0));
+      for(int kk=1; kk<numVarsr; ++kk)
+	printf(",%g",corr_len_temp(kk,0));
+      printf("]^T\n");
+
+      obj=HUGE_VAL; //the objective would actually be infinite, but it might
+      //say nan if we let it continue and we don't want to trust the optimizer
+      //to handle nan's correctly
+
+      con.newSize(numConFunc,1);
+      con(0,0)=1.0-rcondR*maxCondNum;
+      //there should only be 1 constraint but just in case we'll fill the rest
+      //as being violated
+      for(int i=1; i<numConFunc; ++i)
+	con(i,0)=1.0; //say the constraints are violated,
+
+      //no point in wasting computation on something useless by continuing so
+      //return early
+      return;
+    }
+
+    double log_determinant_R = 0.0; //need to do this to avoid underflow error for large numbers of points, log(0)=-inf
+    for (int i = 0; i < numRowsR; ++i)
+      log_determinant_R += std::log(RChol(i,i));
+    log_determinant_R *= 2.0; //only multiply by 2 for Cholesky factorization
+    //of R because det(L)=det(U) and det(R)=det(L)*det(U)=det(L)^2
+    //so log(det(R))=2*log(det(L))
+
+    //if a future developer wants to switch back from cholesky to LU (and I
+    //strongly recommend against that) you'll need to do a
+    //determinant_R=std::fabs(determinant_R); //for LU factorization
+    //because "The determinant of a positive definite matrix is always
+    //positive" http://mathworld.wolfram.com/PositiveDefiniteMatrix.html and
+    //det(R)=det(pivot Mtx)*det(L)*det(U); det(L)=1, det(U) is what we'd
+    //calculated above for LU and det(pivot Mtx)= +/- 1, which is why you'd
+    //need to do the fabs(det(U)) if you used LU decomp instead of Cholesky
+
+    //Do the generalized (by R^-1) least squares using min # of ops
+    //printf("numPoints=%d numPointsKeep=%d numRowsR=%d nTrend=%d\n",
+    //   numPoints,numPointsKeep,numRowsR,nTrend);
+
+
+    Rinv_Gtran.newSize(numRowsR,nTrend); //precompute and store
+    solve_after_Chol_fact(Rinv_Gtran,RChol,Gtran);
+
+    G_Rinv_Gtran.newSize(nTrend,nTrend);
+    matrix_mult(G_Rinv_Gtran,Gtran,Rinv_Gtran,0.0,1.0,'T','N');
+
+    trendSelectingPivotedCholesky();
+    //Chol_fact_workspace(G_Rinv_Gtran_Chol,G_Rinv_Gtran_Chol_Scale,G_Rinv_Gtran_Chol_DblWork,G_Rinv_Gtran_Chol_IntWork,chol_info,rcond_G_Rinv_Gtran);
+    if((rcond_G_Rinv_Gtran<min_allowed_rcond)||(numRowsR<=nTrend)) {
+      //we could instead use pivoted cholesky to adaptively selected an optimal
+      //subset of trend basis functions (i.e. it could be lower in some
+      //dimensions than in others or have quadratic but not linear in certain
+      //dimensions etc) then we wouldn't have to worry about this
+
+      std::cerr << "R is not singular but G*R^-1*G^T is numerically "
+		<< "singular.  This is probably\ndue to you not having "
+		<< "enough UNIQUE values in one of your input dimensions\n"
+		<< "to support the utilized trend function even though "
+		<< "the total number of\npoints would normally be "
+		<< "sufficient for the selected trend." << std::endl;
+      obj=HUGE_VAL; //the objective would actually be infinite, but it might
+      //say nan if we let it continue and we don't want to trust the optimizer
+      //to handle nan's correctly
+
+      con.newSize(numConFunc,1);
+
+      //there should only be 1 constraint but just in case we'll fill them all
+      //as being violated
+      for(int i=0; i<numConFunc; ++i)
+	con(i,0)=1.0; //say the constraints are violated,
+
+      //no point in wasting computation on something useless by continuing so
+      //return early
+      return;
+    }
+
+#ifdef __KRIG_ERR_CHECK__
+    assert(chol_info==0);  //for debug, do something else for production
+#endif
+
+    double log_determinant_G_Rinv_Gtran=0.0;
+    for (int itrend = 0; itrend < nTrend; ++itrend)
+      log_determinant_G_Rinv_Gtran +=
+	std::log(G_Rinv_Gtran_Chol(itrend,itrend));
+    log_determinant_G_Rinv_Gtran *= 2.0; //only for Cholesky factorization
+
+    G_Rinv_Y.newSize(nTrend,1);
+    matrix_mult(G_Rinv_Y, Rinv_Gtran, Y, 0.0, 1.0, 'T', 'N');
+    betaHat.newSize(nTrend,1);
+
+    solve_after_Chol_fact(betaHat,G_Rinv_Gtran_Chol,G_Rinv_Y); //O(nTrend^2) ops
+    eps.copy(Y); //this will be eps=epsilon=Y-G(XR)^T*betaHat
+    matrix_mult(eps, Gtran, betaHat, 1.0, -1.0, 'N', 'N'); //eps=Y-G(XR)^T*betaHat
+    rhs.newSize(numRowsR,1);
+    solve_after_Chol_fact(rhs,RChol,eps);
+
+
+    //it's actually the log likelihood, which we want to maximize
+    //likelihood = -0.5*(numPoints*(std::log(4.0*std::acos(0.0))+std::log(estVarianceMLE)+1)
+    //		       +std::log(determinant_R)); //from Koehler and Owen
+
+#ifdef __NKM_UNBIASED_LIKE__
+    //derived following: C. E. Rasmussen & C. K. I. Williams, Gaussian Processes for Machine Learning, the MIT Press, 2006, ISBN 026218253X. c 2006 Massachusetts Institute of Technology. www.GaussianProcess.org/gpml...  we assume a "vague prior" (i.e. that we don't know anything) for betaHat, then like "Koehler and Owen" we replace the covariance matrix K with (unadjusted variance)*R (where R is the correlation matrix) and find unadjusted variance and betaHat through maximum likelihood.
+
+    //the unbiased estimate of unadjusted variance
+    estVarianceMLE = dot_product(eps,rhs)/(numRowsR-nTrend);
+
+    //the "per equationt" unbiased log(likelihood)
+    likelihood = -0.5*(std::log(estVarianceMLE)+(log_determinant_R+log_determinant_G_Rinv_Gtran)/(numRowsR-nTrend));
+#else
+    //derived the "Koehler and Owen" way (assumes we know the trend function, and is therefore biased
+
+    //the estimate of unadjusted variance
+    estVarianceMLE = dot_product(eps,rhs)/numRowsR; //the "Koehler and Owen" way
+
+    //the "per equation" log(likelihood)
+    likelihood = -0.5*(std::log(estVarianceMLE)+log_determinant_R/numRowsR);
+#endif
+
+    //if(likelihood>=DBL_MAX)
+    //printf("[estVarianceMLE=%g determinant_R=%g]",estVarianceMLE,determinant_R);
+
+    //the objective function being MINIMIZED is the negative of the log
+    //likelihood (on a per equation basis so numbers will be comparable
+    //regardless of how many equations there are)
+    obj=-likelihood;
+    //printf("[obj=%g]",obj);
+
+    prevObjDerMode=1; //increase prevObjDerMode to the current value
+    if((obj_der_mode==1)&&(con_der_mode<=prevConDerMode)) {
+      //we have everything we need so exit early
+      return;
+    }
+  }
+
+  if((prevConDerMode==0)&&(1<=con_der_mode)) {
+    //calculate the constraint on reciprocal condition number that ensures
+    //that the correlation matrix is well conditioned.
+    con.newSize(numConFunc,1);
+
+    if(!(1<=prevObjDerMode))
+      std::cerr << "We need to have already calculated rcondR (during the "
+		<< "calculation of the\nobjective function) in order to "
+		<< "calculate the constraint (on rcondR)\nfunction (where "
+		<< "rcondR is the reciprocal of the condition number of R,\n"
+		<< "and R is the ''correlation matrix'')." << std::endl;
+    else if(!(numConFunc==1))
+      std::cerr << "The calling function is asking us for more than one "
+		<< "constraint function\nbut we only have one constraint "
+		<< "function; only rcondR (the reciprocal of\nthe "
+		<< "condition number of the ''correlation matrix'', R) is "
+		<< "constrained." << std::endl;
+    assert((1<=prevObjDerMode)&&(numConFunc==1));
+
+    //the matrix is considered "ill-conditioned" if the following constraint
+    //equation is greater than zero
+    con(0,0)=1.0-rcondR*maxCondNum;
+
+    prevConDerMode=1; //increase prevConDerMode to current value
+    if((con_der_mode==1)&&(obj_der_mode<=prevObjDerMode)) {
+      //we have everything we need so exit early
+      return;
+    }
+  }
+
+  return;
+}
+
+
+void KrigingModel::getRandGuess(MtxDbl& guess) const
+{
+  int mymod = 1048576; //2^20 instead of 10^6 to be kind to the computer
+  guess.newSize(numVarsr,1);
+  for(int k=0; k<numVarsr; k++) {
+    guess(k,0) = (std::rand() % mymod)*(maxNatLogCorrLen-minNatLogCorrLen)/mymod+
+      minNatLogCorrLen; //this returns a random nat_log_corr_len which is the space we need to search in
+  }
+  return;
+}
+
+// BMA TODO: These need to be moved to optimizer and then any defauls
+// overridden here
+
+void KrigingModel::set_conmin_parameters(OptimizationProblem& opt) const
+{
+  //set conmin specific parameters for this problem
+  if((maxObjDerMode==1)&&(maxConDerMode==1)) {
+    //use numerical  gradients of objective and constraints
+    opt.conminData.nfdg = 0;
+  } else {
+    std::cerr << "This Kriging/Gradient-Enhanced-Kriging model does not "
+	      << "support analytical\nderivatives of the objective "
+	      << "(negative per equation log likelihood) or\nconstraint "
+	      << "(reciprocal condition number) functions." << std::endl;
+    assert(false);
+  }
+
+  opt.conminData.iprint = 0; //ammount of to screen output from Conmin
+  opt.conminData.itmax  = maxTrials; //maximum # of Conmin iterations
+  opt.conminData.fdch   = 1.0e-2; //Relative finite difference step size.
+  opt.conminData.fdchm  = 1.0e-2; //Absolute finite difference step size.
+  opt.conminData.ct     = -0.1; // Constraint thickness parameter, The absolute value of CT decreases in magnitude during optimization.
+  opt.conminData.ctmin  = 0.004; //Minimum absolute value of CT used during optimization.
+  opt.conminData.ctl    = -0.01; //Constraint thickness parameter for linear and side constraints.
+  opt.conminData.ctlmin = 0.001; //Minimum value of CTL used during optimization.
+  opt.conminData.delfun = 0.001; //Relative convergence criterion threshold, Threshold for the minimum relative change in the objective function
+  opt.conminData.dabfun = 0.001; //Absolute convergence criterion threshold. Threshold for the minimum relative change in the objective function
+  opt.conminData.nside  = 1; //side constraints parameter
+  opt.conminData.itrm   = 3; //diminishing return criterion iteration number
+  opt.conminData.icndir = numTheta+1; //conjugate direction restart parameter
+}
+
+void KrigingModel::set_direct_parameters(OptimizationProblem& opt) const
+{
+  opt.directData.minBoxSize = -1.0;
+  opt.directData.volBoxSize = -1.0;
+  //opt.directData.minBoxSize = 1.0e-15;
+  //opt.directData.volBoxSize = 1.0e-15;
+  //opt.directData.minBoxSize = 1.0e-3;
+  //opt.directData.volBoxSize = 1.0e-5;
+  opt.directData.solutionTarget = -DBL_MAX;
+  opt.directData.convergenceTol = 1.0e-4;
+  opt.directData.maxFunctionEvals = maxTrials;
+  opt.directData.maxIterations = 1000;
+  opt.directData.verboseOutput = false;
+  opt.directData.constraintsPresent = true;
+}
+
+} // end namespace nkm
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/pecos_global_defs.hpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/pecos_global_defs.hpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/pecos_global_defs.hpp.patch	(revision 27955)
@@ -0,0 +1,4 @@
+24a25
+> #ifndef PI
+25a27
+> #endif
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/sandia_rules.cpp.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/sandia_rules.cpp.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/sandia_rules.cpp.patch	(revision 27955)
@@ -0,0 +1,4 @@
+24145c24145
+<     if ( i_hi < 0 )
+---
+>     if ( *i_hi < 0 )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/src/DakotaInterface.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/src/DakotaInterface.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/src/DakotaInterface.cpp	(revision 27955)
@@ -0,0 +1,1358 @@
+/*  _______________________________________________________________________
+
+    DAKOTA: Design Analysis Kit for Optimization and Terascale Applications
+    Copyright 2014 Sandia Corporation.
+    This software is distributed under the GNU Lesser General Public License.
+    For more information, see the README file in the top Dakota directory.
+    _______________________________________________________________________ */
+
+//- Class:        Interface
+//- Description:  Class implementation for abstract interface base class
+//- Owner:        Michael Eldred
+
+#include "DakotaInterface.hpp"
+#include "ProblemDescDB.hpp"
+#include "DakotaVariables.hpp"
+
+#include "SysCallApplicInterface.hpp"
+
+#if defined(HAVE_SYS_WAIT_H) && defined(HAVE_UNISTD_H)
+#include "ForkApplicInterface.hpp"
+#elif defined(_WIN32) // or _MSC_VER (native MSVS compilers)
+#include "SpawnApplicInterface.hpp"
+#endif // HAVE_SYS_WAIT_H, HAVE_UNISTD_H
+
+// Direct interfaces
+#ifdef DAKOTA_GRID
+#include "GridApplicInterface.hpp"
+#endif // DAKOTA_GRID
+#ifdef DAKOTA_MATLAB
+#include "MatlabInterface.hpp"
+#endif // DAKOTA_MATLAB
+#ifdef DAKOTA_PYTHON
+#include "PythonInterface.hpp"
+#endif // DAKOTA_PYTHON
+#ifdef DAKOTA_SCILAB
+#include "ScilabInterface.hpp"
+#endif // DAKOTA_SCILAB
+#include "TestDriverInterface.hpp"
+
+#include "ApproximationInterface.hpp"
+
+#ifdef HAVE_AMPL
+#undef NO // avoid name collision from UTILIB
+#include "ampl/asl.h"
+#endif // HAVE_AMPL
+
+//#define DEBUG
+//#define REFCOUNT_DEBUG
+
+namespace Dakota {
+
+
+/** This constructor is the one which must build the base class data for all
+    inherited interfaces.  get_interface() instantiates a derived class letter
+    and the derived constructor selects this base class constructor in its
+    initialization list (to avoid the recursion of the base class constructor
+    calling get_interface() again).  Since this is the letter and the letter
+    IS the representation, interfaceRep is set to NULL (an uninitialized
+    pointer causes problems in ~Interface). */
+Interface::Interface(BaseConstructor, const ProblemDescDB& problem_db):
+  interfaceType(problem_db.get_ushort("interface.type")),
+  interfaceId(problem_db.get_string("interface.id")), algebraicMappings(false),
+  coreMappings(true), outputLevel(problem_db.get_short("method.output")),
+  currEvalId(0), fineGrainEvalCounters(outputLevel > NORMAL_OUTPUT),
+  evalIdCntr(0), newEvalIdCntr(0), evalIdRefPt(0), newEvalIdRefPt(0),
+  multiProcEvalFlag(false), ieDedMasterFlag(false),
+  // See base constructor in DakotaIterator.cpp for full discussion of output
+  // verbosity.  Interfaces support the full granularity in verbosity.
+  appendIfaceId(true), interfaceRep(NULL), referenceCount(1), asl(NULL)
+{
+#ifdef DEBUG
+  outputLevel = DEBUG_OUTPUT;
+#endif // DEBUG
+
+  // Process the algebraic_mappings file (an AMPL .nl file) to get the number
+  // of variables/responses (currently, the tags are converted to index arrays
+  // at evaluation time, using the passed vars and response).
+  // TO DO: parallel bcast of data or very proc reads file?
+  const String& ampl_file_name
+    = problem_db.get_string("interface.algebraic_mappings");
+  if (!ampl_file_name.empty()) {
+#ifdef HAVE_AMPL
+    algebraicMappings = true;
+    bool hess_flag
+      = (problem_db.get_string("responses.hessian_type") == "analytic");
+    asl = (hess_flag) ? ASL_alloc(ASL_read_pfgh) : ASL_alloc(ASL_read_fg);
+    // allow user input of either stub or stub.nl
+    String stub = (strends(ampl_file_name, ".nl")) ?
+      String(ampl_file_name, 0, ampl_file_name.size() - 3) : ampl_file_name;
+    //std::ifstream ampl_nl(ampl_file_name);
+    fint stub_str_len = stub.size();
+    // BMA NOTE: casting away the constness as done historically in DakotaString
+    char* nonconst_stub = (char*) stub.c_str();
+    FILE* ampl_nl = jac0dim(nonconst_stub, stub_str_len);
+    if (!ampl_nl) {
+      Cerr << "\nError: failure opening " << ampl_file_name << std::endl;
+      abort_handler(IO_ERROR);
+    }
+    int rtn = (hess_flag) ? pfgh_read(ampl_nl, ASL_return_read_err)
+                          :   fg_read(ampl_nl, ASL_return_read_err);
+    if (rtn) {
+      Cerr << "\nError: AMPL processing problem with " << ampl_file_name
+	   << std::endl;
+      abort_handler(IO_ERROR);
+    }
+
+    // extract input/output tag lists
+    String row = stub + ".row", col = stub + ".col", ampl_tag;
+
+    std::ifstream ampl_col(col.c_str());
+    if (!ampl_col) {
+      Cerr << "\nError: failure opening " << col.c_str() << std::endl;
+      abort_handler(IO_ERROR);
+    }
+    algebraicVarTags.resize(n_var);
+    for (size_t i=0; i<n_var; i++) {
+      std::getline(ampl_col, ampl_tag);
+      if (ampl_col.good())
+	algebraicVarTags[i] = ampl_tag;
+      else {
+	Cerr << "\nError: failure reading AMPL col file " << col.c_str()
+	     << std::endl;
+	abort_handler(IO_ERROR);
+      }
+    }
+
+    std::ifstream ampl_row(row.c_str());
+    if (!ampl_row) {
+      Cerr << "\nError: failure opening " << row.c_str() << std::endl;
+      abort_handler(IO_ERROR);
+    }
+    algebraicFnTags.resize(n_obj+n_con);
+    algebraicFnTypes.resize(n_obj+n_con);
+    algebraicConstraintWeights.resize(n_con);
+    for (size_t i=0; i<n_obj+n_con; i++) {
+      getline(ampl_row, ampl_tag);
+      if (ampl_row.good()) {
+	algebraicFnTags[i] = ampl_tag;
+	algebraicFnTypes[i] = algebraic_function_type(ampl_tag);
+      }
+      else {
+	Cerr << "\nError: failure reading AMPL row file " << row.c_str()
+	     << std::endl;
+	abort_handler(IO_ERROR);
+      }
+    }
+
+#ifdef DEBUG
+    Cout << ">>>>> algebraicVarTags =\n" << algebraicVarTags
+	 << "\n>>>>> algebraicFnTags =\n" << algebraicFnTags
+	 << "\n>>>>> algebraicFnTypes =\n" << algebraicFnTypes << std::endl;
+#endif
+
+#else
+    Cerr << "\nError: algebraic_mappings not supported without the AMPL solver "
+	 << "library provided with the Acro package." << std::endl;
+    abort_handler(-1);
+#endif // HAVE_AMPL
+  }
+
+#ifdef REFCOUNT_DEBUG
+  Cout << "Interface::Interface(BaseConstructor, ProblemDescDB&) called to "
+       << "build base class data for letter object." << std::endl;
+#endif
+}
+
+
+Interface::Interface(NoDBBaseConstructor, size_t num_fns, short output_level):
+  interfaceId("NO_SPECIFICATION"), algebraicMappings(false), coreMappings(true),
+  outputLevel(output_level), currEvalId(0),
+  fineGrainEvalCounters(outputLevel > NORMAL_OUTPUT), evalIdCntr(0),
+  newEvalIdCntr(0), evalIdRefPt(0), newEvalIdRefPt(0), multiProcEvalFlag(false),
+  ieDedMasterFlag(false), appendIfaceId(true), interfaceRep(NULL),
+  referenceCount(1)
+{
+#ifdef DEBUG
+  outputLevel = DEBUG_OUTPUT;
+#endif // DEBUG
+
+#ifdef REFCOUNT_DEBUG
+  Cout << "Interface::Interface(NoDBBaseConstructor) called to build base "
+       << "class data for letter object." << std::endl;
+#endif
+}
+
+
+/** used in Model envelope class instantiations */
+Interface::Interface(): interfaceRep(NULL), referenceCount(1)
+{ }
+
+
+/** Used in Model instantiation to build the envelope.  This constructor
+    only needs to extract enough data to properly execute get_interface, since
+    Interface::Interface(BaseConstructor, problem_db) builds the
+    actual base class data inherited by the derived interfaces. */
+Interface::Interface(ProblemDescDB& problem_db): referenceCount(1)
+{
+#ifdef REFCOUNT_DEBUG
+  Cout << "Interface::Interface(ProblemDescDB&) called to instantiate envelope."
+       << std::endl;
+#endif
+
+  // Set the rep pointer to the appropriate interface type
+  interfaceRep = get_interface(problem_db);
+  if (!interfaceRep) // bad type or insufficient memory
+    abort_handler(-1);
+}
+
+
+/** used only by the envelope constructor to initialize interfaceRep
+    to the appropriate derived type. */
+Interface* Interface::get_interface(ProblemDescDB& problem_db)
+{
+  const unsigned short interface_type = problem_db.get_ushort("interface.type");
+#ifdef REFCOUNT_DEBUG
+  Cout << "Envelope instantiating letter: Getting interface "
+       << interface_enum_to_string(interface_type) << std::endl;
+#endif
+
+  // In the case where a derived interface type has been selected for managing
+  // analysis_drivers, then this determines the letter instantiation and any
+  // algebraic mappings are overlayed by ApplicationInterface.
+  const String& algebraic_map_file
+    = problem_db.get_string("interface.algebraic_mappings");
+  if (interface_type == SYSTEM_INTERFACE)
+    return new SysCallApplicInterface(problem_db);
+
+  else if (interface_type == FORK_INTERFACE) {
+#if defined(HAVE_SYS_WAIT_H) && defined(HAVE_UNISTD_H) // includes CYGWIN/MINGW
+    return new ForkApplicInterface(problem_db);
+#elif defined(_WIN32) // or _MSC_VER (native MSVS compilers)
+    return new SpawnApplicInterface(problem_db);
+#else
+    Cerr << "Fork interface requested, but not enabled in this DAKOTA "
+	 << "executable." << std::endl;
+    return NULL;
+#endif
+  }
+
+  else if (interface_type == TEST_INTERFACE)
+    return new TestDriverInterface(problem_db);
+  // Note: in the case of a plug-in direct interface, this object gets replaced
+  // using Interface::assign_rep().  Error checking in DirectApplicInterface::
+  // derived_map_ac() should catch if this replacement fails to occur properly.
+
+#ifdef DAKOTA_GRID
+  else if (interface_type == GRID_INTERFACE)
+    return new GridApplicInterface(problem_db);
+#endif
+
+  else if (interface_type == MATLAB_INTERFACE) {
+#ifdef DAKOTA_MATLAB
+    return new MatlabInterface(problem_db);
+#else
+    Cerr << "Direct Matlab interface requested, but not enabled in this "
+	 << "DAKOTA executable." << std::endl;
+      return NULL;
+#endif
+  }
+
+  else if (interface_type == PYTHON_INTERFACE) {
+#ifdef DAKOTA_PYTHON
+    return new PythonInterface(problem_db);
+#else
+    Cerr << "Direct Python interface requested, but not enabled in this "
+	 << "DAKOTA executable." << std::endl;
+    return NULL;
+#endif
+  }
+
+  else if (interface_type == SCILAB_INTERFACE) {
+#ifdef DAKOTA_SCILAB
+    return new ScilabInterface(problem_db);
+#else
+    Cerr << "Direct Scilab interface requested, but not enabled in this "
+	 << "DAKOTA executable." << std::endl;
+    return NULL;
+#endif
+  }
+
+  // Should not be needed since ApproximationInterface is plugged-in from
+  // DataFitSurrModel using Interface::assign_rep().
+  //else if (interface_type == APPROX_INTERFACE)
+  //  return new ApproximationInterface(problem_db, num_acv, num_fns);
+
+  // In the case where only algebraic mappings are used, then no derived map
+  // functionality is needed and ApplicationInterface is used for the letter.
+  else if (!algebraic_map_file.empty()) {
+#ifdef DEBUG
+    Cout << ">>>>> new ApplicationInterface: " << algebraic_map_file
+	 << std::endl;
+#endif // DEBUG
+    return new ApplicationInterface(problem_db);
+  }
+
+  // If the interface type is empty (e.g., from default DataInterface creation
+  // in ProblemDescDB::check_input()), then ApplicationInterface is the letter.
+  else if (interface_type == DEFAULT_INTERFACE) {
+    Cerr << "Warning: empty interface type in Interface::get_interface()."
+	 << std::endl;
+    return new ApplicationInterface(problem_db);
+  }
+
+  else {
+    Cerr << "Invalid interface: " << interface_enum_to_string(interface_type)
+	 << std::endl;
+    return NULL;
+  }
+}
+
+
+/** Copy constructor manages sharing of interfaceRep and incrementing
+    of referenceCount. */
+Interface::Interface(const Interface& interface_in)
+{
+  // Increment new (no old to decrement)
+  interfaceRep = interface_in.interfaceRep;
+  if (interfaceRep) // Check for an assignment of NULL
+    ++interfaceRep->referenceCount;
+
+#ifdef REFCOUNT_DEBUG
+  Cout << "Interface::Interface(Interface&)" << std::endl;
+  if (interfaceRep)
+    Cout << "interfaceRep referenceCount = " << interfaceRep->referenceCount
+	 << std::endl;
+#endif
+}
+
+
+/** Assignment operator decrements referenceCount for old interfaceRep, assigns
+    new interfaceRep, and increments referenceCount for new interfaceRep. */
+Interface Interface::operator=(const Interface& interface_in)
+{
+  if (interfaceRep != interface_in.interfaceRep) { // normal case: old != new
+    // Decrement old
+    if (interfaceRep) // Check for NULL
+      if ( --interfaceRep->referenceCount == 0 )
+	delete interfaceRep;
+    // Assign and increment new
+    interfaceRep = interface_in.interfaceRep;
+    if (interfaceRep) // Check for NULL
+      ++interfaceRep->referenceCount;
+  }
+  // else if assigning same rep, then do nothing since referenceCount
+  // should already be correct
+
+#ifdef REFCOUNT_DEBUG
+  Cout << "Interface::operator=(Interface&)" << std::endl;
+  if (interfaceRep)
+    Cout << "interfaceRep referenceCount = " << interfaceRep->referenceCount
+	 << std::endl;
+#endif
+
+  return *this; // calls copy constructor since returned by value
+}
+
+
+/** Destructor decrements referenceCount and only deletes interfaceRep
+    if referenceCount is zero. */
+Interface::~Interface()
+{
+  // Check for NULL pointer
+  if (interfaceRep) {
+    --interfaceRep->referenceCount;
+#ifdef REFCOUNT_DEBUG
+    Cout << "interfaceRep referenceCount decremented to "
+         << interfaceRep->referenceCount << std::endl;
+#endif
+    if (interfaceRep->referenceCount == 0) {
+#ifdef REFCOUNT_DEBUG
+      Cout << "deleting interfaceRep" << std::endl;
+#endif
+      delete interfaceRep;
+    }
+  }
+}
+
+
+/** Similar to the assignment operator, the assign_rep() function
+    decrements referenceCount for the old interfaceRep and assigns the
+    new interfaceRep.  It is different in that it is used for
+    publishing derived class letters to existing envelopes, as opposed
+    to sharing representations among multiple envelopes (in particular,
+    assign_rep is passed a letter object and operator= is passed an
+    envelope object).  Letter assignment supports two models as
+    governed by ref_count_incr:
+
+    \li ref_count_incr = true (default): the incoming letter belongs to
+    another envelope.  In this case, increment the reference count in the
+    normal manner so that deallocation of the letter is handled properly.
+
+    \li ref_count_incr = false: the incoming letter is instantiated on the
+    fly and has no envelope.  This case is modeled after get_interface():
+    a letter is dynamically allocated using new and passed into assign_rep,
+    the letter's reference count is not incremented, and the letter is not
+    remotely deleted (its memory management is passed over to the envelope). */
+void Interface::assign_rep(Interface* interface_rep, bool ref_count_incr)
+{
+  if (interfaceRep == interface_rep) {
+    // if ref_count_incr = true (rep from another envelope), do nothing as
+    // referenceCount should already be correct (see also operator= logic).
+    // if ref_count_incr = false (rep from on the fly), then this is an error.
+    if (!ref_count_incr) {
+      Cerr << "Error: duplicated interface_rep pointer assignment without "
+	   << "reference count increment in Interface::assign_rep()."
+	   << std::endl;
+      abort_handler(-1);
+    }
+  }
+  else { // normal case: old != new
+    // Decrement old
+    if (interfaceRep) // Check for NULL
+      if ( --interfaceRep->referenceCount == 0 )
+	delete interfaceRep;
+    // Assign new
+    interfaceRep = interface_rep;
+    // Increment new
+    if (interfaceRep && ref_count_incr) // Check for NULL & honor ref_count_incr
+      interfaceRep->referenceCount++;
+  }
+
+#ifdef REFCOUNT_DEBUG
+  Cout << "Interface::assign_rep(Interface*)" << std::endl;
+  if (interfaceRep)
+    Cout << "interfaceRep referenceCount = " << interfaceRep->referenceCount
+	 << std::endl;
+#endif
+}
+
+
+void Interface::fine_grained_evaluation_counters(size_t num_fns)
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->fine_grained_evaluation_counters(num_fns);
+  else if (!fineGrainEvalCounters) { // letter (not virtual)
+    init_evaluation_counters(num_fns);
+    fineGrainEvalCounters = true;
+  }
+}
+
+
+void Interface::init_evaluation_counters(size_t num_fns)
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->init_evaluation_counters(num_fns);
+  else { // letter (not virtual)
+    //if (fnLabels.empty()) {
+    //  fnLabels.resize(num_fns);
+    //  build_labels(fnLabels, "response_fn_"); // generic resp fn labels
+    //}
+    if (fnValCounter.size() != num_fns) {
+      fnValCounter.assign(num_fns, 0);     fnGradCounter.assign(num_fns, 0);
+      fnHessCounter.assign(num_fns, 0);    newFnValCounter.assign(num_fns, 0);
+      newFnGradCounter.assign(num_fns, 0); newFnHessCounter.assign(num_fns, 0);
+      fnValRefPt.assign(num_fns, 0);       fnGradRefPt.assign(num_fns, 0);
+      fnHessRefPt.assign(num_fns, 0);      newFnValRefPt.assign(num_fns, 0);
+      newFnGradRefPt.assign(num_fns, 0);   newFnHessRefPt.assign(num_fns, 0);
+    }
+  }
+}
+
+
+void Interface::set_evaluation_reference()
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->set_evaluation_reference();
+  else { // letter (not virtual)
+
+    evalIdRefPt    = evalIdCntr;
+    newEvalIdRefPt = newEvalIdCntr;
+
+    if (fineGrainEvalCounters) {
+      size_t i, num_fns = fnValCounter.size();
+      for (i=0; i<num_fns; i++) {
+	fnValRefPt[i]     =     fnValCounter[i];
+	newFnValRefPt[i]  =  newFnValCounter[i];
+	fnGradRefPt[i]    =    fnGradCounter[i];
+	newFnGradRefPt[i] = newFnGradCounter[i];
+	fnHessRefPt[i]    =    fnHessCounter[i];
+	newFnHessRefPt[i] = newFnHessCounter[i];
+      }
+    }
+  }
+}
+
+
+void Interface::
+print_evaluation_summary(std::ostream& s, bool minimal_header,
+			 bool relative_count) const
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->print_evaluation_summary(s, minimal_header, relative_count);
+  else { // letter (not virtual)
+
+    // standard evaluation summary
+    if (minimal_header) {
+      if (interfaceId.empty())
+	s << "  Interface evaluations";
+      else
+	s << "  " << interfaceId << " evaluations";
+    }
+    else {
+      s << "<<<<< Function evaluation summary";
+      if (!interfaceId.empty())
+	s << " (" << interfaceId << ')';
+    }
+    int     fn_evals = (relative_count) ? evalIdCntr - evalIdRefPt
+                                        : evalIdCntr;
+    int new_fn_evals = (relative_count) ? newEvalIdCntr - newEvalIdRefPt
+                                        : newEvalIdCntr;
+    s << ": " << fn_evals << " total (" << new_fn_evals << " new, "
+      << fn_evals - new_fn_evals << " duplicate)\n";
+
+    // detailed evaluation summary
+    if (fineGrainEvalCounters) {
+      size_t i, num_fns = std::min(fnValCounter.size(), fnLabels.size());
+      for (i=0; i<num_fns; i++) {
+	int t_v = (relative_count) ?     fnValCounter[i] -     fnValRefPt[i]
+	                           :     fnValCounter[i];
+	int n_v = (relative_count) ?  newFnValCounter[i] -  newFnValRefPt[i]
+	                           :  newFnValCounter[i];
+	int t_g = (relative_count) ?    fnGradCounter[i] -    fnGradRefPt[i]
+	                           :    fnGradCounter[i];
+	int n_g = (relative_count) ? newFnGradCounter[i] - newFnGradRefPt[i]
+	                           : newFnGradCounter[i];
+	int t_h = (relative_count) ?    fnHessCounter[i] -    fnHessRefPt[i]
+	                           :    fnHessCounter[i];
+	int n_h = (relative_count) ? newFnHessCounter[i] - newFnHessRefPt[i]
+	                           : newFnHessCounter[i];
+	s << std::setw(15) << fnLabels[i] << ": "
+	  << t_v << " val ("  << n_v << " n, " << t_v - n_v << " d), "
+	  << t_g << " grad (" << n_g << " n, " << t_g - n_g << " d), "
+	  << t_h << " Hess (" << n_h << " n, " << t_h - n_h << " d)\n";
+      }
+    }
+  }
+}
+
+
+/// default implementation just sets the list of eval ID tags;
+/// derived classes containing additional models or interfaces should
+/// override (currently no use cases)
+void Interface::
+eval_tag_prefix(const String& eval_id_str, bool append_iface_id)
+{
+  if (interfaceRep)
+    interfaceRep->eval_tag_prefix(eval_id_str, append_iface_id);
+  else {
+    evalTagPrefix = eval_id_str;
+    appendIfaceId = append_iface_id;
+  }
+}
+
+
+void Interface::map(const Variables& vars, const ActiveSet& set,
+		    Response& response, bool asynch_flag)
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->map(vars, set, response, asynch_flag);
+  else { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual map function.\n"
+         << "No default map defined at Interface base class." << std::endl;
+    abort_handler(-1);
+  }
+}
+
+
+void Interface::
+init_algebraic_mappings(const Variables& vars, const Response& response)
+{
+  size_t i, num_alg_vars = algebraicVarTags.size(),
+    num_alg_fns = algebraicFnTags.size();
+
+  algebraicACVIndices.resize(num_alg_vars);
+  algebraicACVIds.resize(num_alg_vars);
+  StringMultiArrayConstView acv_labels = vars.all_continuous_variable_labels();
+  SizetMultiArrayConstView  acv_ids    = vars.all_continuous_variable_ids();
+  for (i=0; i<num_alg_vars; ++i) {
+    // Note: variable mappings only support continuous variables.
+    //       discrete variables are not directly supported by ASL interface.
+    size_t acv_index = find_index(acv_labels, algebraicVarTags[i]);
+    //size_t adv_index = find_index(adv_labels, algebraicVarTags[i]);
+    if (acv_index == _NPOS) { // && adv_index == _NPOS) {
+      Cerr << "\nError: AMPL column label " << algebraicVarTags[i] << " does "
+	   <<"not exist in DAKOTA continuous variable descriptors.\n"
+	   << std::endl;
+      abort_handler(INTERFACE_ERROR);
+    }
+    else {
+      algebraicACVIndices[i] = acv_index;
+      //algebraicADVIndices[i] = adv_index;
+      algebraicACVIds[i] = acv_ids[acv_index];
+    }
+  }
+
+  algebraicFnIndices.resize(num_alg_fns);
+  const StringArray& fn_labels = response.function_labels();
+  for (size_t i=0; i<num_alg_fns; ++i) {
+    size_t fn_index = Pecos::find_index(fn_labels, algebraicFnTags[i]);
+    if (fn_index == _NPOS) {
+      Cerr << "\nError: AMPL row label " << algebraicFnTags[i] << " does not "
+	   <<"exist in DAKOTA response descriptors.\n" << std::endl;
+      abort_handler(INTERFACE_ERROR);
+    }
+    else
+      algebraicFnIndices[i] = fn_index;
+  }
+}
+
+
+void Interface::
+asv_mapping(const ActiveSet& total_set, ActiveSet& algebraic_set,
+	    ActiveSet& core_set)
+{
+  const ShortArray& total_asv = total_set.request_vector();
+  const SizetArray& total_dvv = total_set.derivative_vector();
+
+  // algebraic_asv/dvv:
+
+  // the algebraic active set is defined over reduced algebraic function
+  // and variable spaces, rather than the original spaces.  This simplifies
+  // algebraic_mappings() and allows direct copies of data from AMPL.
+  size_t i, num_alg_fns = algebraicFnTags.size(),
+    num_alg_vars = algebraicVarTags.size();
+  ShortArray algebraic_asv(num_alg_fns);
+  SizetArray algebraic_dvv(num_alg_vars);
+  for (i=0; i<num_alg_fns; i++) // map total_asv to algebraic_asv
+    algebraic_asv[i] = total_asv[algebraicFnIndices[i]];
+
+  algebraic_set.request_vector(algebraic_asv);
+  algebraic_set.derivative_vector(algebraic_dvv);
+  algebraic_set.derivative_start_value(1);
+
+  // core_asv/dvv:
+
+  // for now, core_asv is the same as total_asv, since there is no mechanism
+  // yet to determine if the algebraic_mapping portion is the complete
+  // definition (for which core_asv requests could be turned off).
+  core_set.request_vector(total_asv);
+  core_set.derivative_vector(total_dvv);
+}
+
+
+void Interface::
+asv_mapping(const ActiveSet& algebraic_set, ActiveSet& total_set)
+{
+  const ShortArray& algebraic_asv = algebraic_set.request_vector();
+  size_t i, num_alg_fns = algebraicFnTags.size();
+  for (i=0; i<num_alg_fns; i++) // map algebraic_asv to total_asv
+    total_set.request_value(algebraic_asv[i], algebraicFnIndices[i]);
+}
+
+
+void Interface::
+algebraic_mappings(const Variables& vars, const ActiveSet& algebraic_set,
+		   Response& algebraic_response)
+{
+#ifdef HAVE_AMPL
+  // make sure cur_ASL is pointing to the ASL of this interface
+  // this is important for problems with multiple interfaces
+  set_cur_ASL(asl);
+  const ShortArray& algebraic_asv = algebraic_set.request_vector();
+  const SizetArray& algebraic_dvv = algebraic_set.derivative_vector();
+  size_t i, num_alg_fns = algebraic_asv.size(),
+    num_alg_vars = algebraic_dvv.size();
+  bool grad_flag = false, hess_flag = false;
+  for (i=0; i<num_alg_fns; ++i) {
+    if (algebraic_asv[i] & 2)
+      grad_flag = true;
+    if (algebraic_asv[i] & 4)
+      hess_flag = true;
+  }
+
+  // dak_a_c_vars (DAKOTA space) -> nl_vars (reduced AMPL space)
+  const RealVector& dak_a_c_vars = vars.all_continuous_variables();
+  //IntVector  dak_a_d_vars = vars.all_discrete_variables();
+  Real* nl_vars = new Real [num_alg_vars];
+  for (i=0; i<num_alg_vars; i++)
+    nl_vars[i] = dak_a_c_vars[algebraicACVIndices[i]];
+
+  // nl_vars -> algebraic_response
+  algebraic_response.reset_inactive(); // zero inactive data
+  Real fn_val; RealVector fn_grad; RealSymMatrix fn_hess;
+  fint err = 0;
+  for (i=0; i<num_alg_fns; i++) {
+    // nl_vars -> response fns via AMPL
+    if (algebraic_asv[i] & 1) {
+      if (algebraicFnTypes[i] > 0)
+	fn_val = objval(algebraicFnTypes[i]-1, nl_vars, &err);
+      else
+	fn_val = conival(-1-algebraicFnTypes[i], nl_vars, &err);
+      if (err) {
+	Cerr << "\nError: AMPL processing failure in objval().\n" << std::endl;
+	abort_handler(INTERFACE_ERROR);
+      }
+      algebraic_response.function_value(fn_val, i);
+    }
+    // nl_vars -> response grads via AMPL
+    if (algebraic_asv[i] & 6) { // need grad for Hessian
+      fn_grad = algebraic_response.function_gradient_view(i);
+      if (algebraicFnTypes[i] > 0)
+	objgrd(algebraicFnTypes[i]-1, nl_vars, fn_grad.values(), &err);
+      else
+	congrd(-1-algebraicFnTypes[i], nl_vars, fn_grad.values(), &err);
+      if (err) {
+	Cerr << "\nError: AMPL processing failure in objgrad().\n" << std::endl;
+	abort_handler(INTERFACE_ERROR);
+      }
+    }
+    // nl_vars -> response Hessians via AMPL
+    if (algebraic_asv[i] & 4) {
+      fn_hess = algebraic_response.function_hessian_view(i);
+      // the fullhess calls must follow corresp call to objgrad/congrad
+      if (algebraicFnTypes[i] > 0)
+	fullhes(fn_hess.values(), num_alg_vars, algebraicFnTypes[i]-1,
+		NULL, NULL);
+      else {
+	algebraicConstraintWeights.assign(algebraicConstraintWeights.size(), 0);
+	algebraicConstraintWeights[-1-algebraicFnTypes[i]] = 1;
+	fullhes(fn_hess.values(), num_alg_vars, num_alg_vars, NULL,
+		&algebraicConstraintWeights[0]);
+      }
+    }
+  }
+  delete [] nl_vars;
+  algebraic_response.function_labels(algebraicFnTags);
+#ifdef DEBUG
+  Cout << ">>>>> algebraic_response.fn_labels\n"
+       << algebraic_response.function_labels() << std::endl;
+#endif // DEBUG
+
+  if (outputLevel > NORMAL_OUTPUT)
+    Cout << "Algebraic mapping applied.\n";
+#endif // HAVE_AMPL
+}
+
+
+/** This function will get invoked even when only algebraic mappings are
+    active (no core mappings from derived_map), since the AMPL
+    algebraic_response may be ordered differently from the total_response.
+    In this case, the core_response object is unused. */
+void Interface::
+response_mapping(const Response& algebraic_response,
+		 const Response& core_response, Response& total_response)
+{
+  const ShortArray& total_asv = total_response.active_set_request_vector();
+  const SizetArray& total_dvv = total_response.active_set_derivative_vector();
+  size_t i, j, k, num_total_fns = total_asv.size(),
+    num_total_vars = total_dvv.size();
+  bool grad_flag = false, hess_flag = false;
+  for (i=0; i<num_total_fns; ++i) {
+    if (total_asv[i] & 2)
+      grad_flag = true;
+    if (total_asv[i] & 4)
+      hess_flag = true;
+  }
+
+  // core_response contributions to total_response:
+
+  if (coreMappings) {
+    total_response.reset_inactive();
+    const ShortArray& core_asv = core_response.active_set_request_vector();
+    size_t num_core_fns = core_asv.size();
+    for (i=0; i<num_core_fns; ++i) {
+      if (core_asv[i] & 1)
+	total_response.function_value(core_response.function_value(i), i);
+      if (core_asv[i] & 2)
+	total_response.function_gradient(
+	  core_response.function_gradient_view(i), i);
+      if (core_asv[i] & 4)
+	total_response.function_hessian(core_response.function_hessian(i), i);
+    }
+  }
+  else {
+    // zero all response data before adding algebraic data to it
+    total_response.reset();
+  }
+
+  // algebraic_response contributions to total_response:
+
+  const ShortArray& algebraic_asv
+    = algebraic_response.active_set_request_vector();
+  size_t num_alg_fns = algebraic_asv.size(),
+    num_alg_vars = algebraic_response.active_set_derivative_vector().size();
+  if (num_alg_fns > num_total_fns) {
+    Cerr << "Error: response size mismatch in Interface::response_mapping()."
+	 << std::endl;
+    abort_handler(-1);
+  }
+  if ( (grad_flag || hess_flag) && num_alg_vars > num_total_vars) {
+    Cerr << "Error: derivative variables size mismatch in Interface::"
+         << "response_mapping()." << std::endl;
+    abort_handler(-1);
+  }
+  SizetArray algebraic_dvv_indices;
+  if (grad_flag || hess_flag) {
+    algebraic_dvv_indices.resize(num_alg_vars);
+    using Pecos::find_index;
+    for (i=0; i<num_alg_vars; ++i)
+      algebraic_dvv_indices[i] = find_index(total_dvv, algebraicACVIds[i]);
+      // Note: _NPOS return is handled below
+  }
+  // augment total_response
+  const RealVector& algebraic_fn_vals = algebraic_response.function_values();
+  const RealMatrix& algebraic_fn_grads
+    = algebraic_response.function_gradients();
+  const RealSymMatrixArray& algebraic_fn_hessians
+    = algebraic_response.function_hessians();
+  RealVector total_fn_vals = total_response.function_values_view();
+  for (i=0; i<num_alg_fns; ++i) {
+    size_t fn_index = algebraicFnIndices[i];
+    if (algebraic_asv[i] & 1)
+      total_fn_vals[fn_index] += algebraic_fn_vals[i];
+    if (algebraic_asv[i] & 2) {
+      const Real* algebraic_fn_grad = algebraic_fn_grads[i];
+      RealVector total_fn_grad
+	= total_response.function_gradient_view(fn_index);
+      for (j=0; j<num_alg_vars; j++) {
+	size_t dvv_index = algebraic_dvv_indices[j];
+	if (dvv_index != _NPOS)
+	  total_fn_grad[dvv_index] += algebraic_fn_grad[j];
+      }
+    }
+    if (algebraic_asv[i] & 4) {
+      const RealSymMatrix& algebraic_fn_hess = algebraic_fn_hessians[i];
+      RealSymMatrix total_fn_hess
+	= total_response.function_hessian_view(fn_index);
+      for (j=0; j<num_alg_vars; ++j) {
+	size_t dvv_index_j = algebraic_dvv_indices[j];
+	if (dvv_index_j != _NPOS) {
+	  for (k=0; k<=j; ++k) {
+	    size_t dvv_index_k = algebraic_dvv_indices[k];
+	    if (dvv_index_k != _NPOS)
+	      total_fn_hess(dvv_index_j,dvv_index_k) +=	algebraic_fn_hess(j,k);
+	  }
+	}
+      }
+    }
+  }
+
+  // output response sets:
+
+  if (outputLevel == DEBUG_OUTPUT) {
+    if (coreMappings) Cout << "core_response:\n" << core_response;
+    Cout << "algebraic_response:\n" << algebraic_response
+	 << "total_response:\n"     << total_response << '\n';
+  }
+}
+
+
+String Interface::final_eval_id_tag(int iface_eval_id)
+{
+  if (interfaceRep)
+    return interfaceRep->final_eval_id_tag(iface_eval_id);
+
+  if (appendIfaceId)
+    return evalTagPrefix + "." + boost::lexical_cast<std::string>(iface_eval_id);
+  return evalTagPrefix;
+}
+
+
+int Interface::algebraic_function_type(String functionTag)
+{
+#ifdef HAVE_AMPL
+  int i;
+  for (i=0; i<n_obj; i++)
+    if (strcontains(functionTag, obj_name(i)))
+      return i+1;
+  for (i=0; i<n_con; i++)
+    if (strcontains(functionTag, con_name(i)))
+      return -(i+1);
+
+  Cerr << "Error: No function type available for \'" << functionTag << "\' "
+       << "via algebraic_mappings interface." << std::endl;
+  abort_handler(INTERFACE_ERROR);
+#else
+  return 0;
+#endif // HAVE_AMPL
+}
+
+const IntResponseMap& Interface::synch()
+{
+  if (!interfaceRep) { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual synch function.\n"
+         << "No default synch defined at Interface base class." << std::endl;
+    abort_handler(-1);
+  }
+
+  return interfaceRep->synch();
+}
+
+
+const IntResponseMap& Interface::synch_nowait()
+{
+  if (!interfaceRep) { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual synch_nowait "
+	 << "function.\nNo default synch_nowait defined at Interface base "
+	 << "class." << std::endl;
+    abort_handler(-1);
+  }
+
+  return interfaceRep->synch_nowait();
+}
+
+
+void Interface::serve_evaluations()
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->serve_evaluations();
+  else { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual serve_evaluations "
+	 << "function.\nNo default serve_evaluations defined at Interface"
+	 << " base class." << std::endl;
+    abort_handler(-1);
+  }
+}
+
+
+void Interface::stop_evaluation_servers()
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->stop_evaluation_servers();
+  else { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual stop_evaluation_"
+	 << "servers fn.\nNo default stop_evaluation_servers defined at "
+	 << "Interface base class." << std::endl;
+    abort_handler(-1);
+  }
+}
+
+
+void Interface::init_communicators(const IntArray& message_lengths,
+				   int max_eval_concurrency)
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->init_communicators(message_lengths, max_eval_concurrency);
+  else { // letter lacking redefinition of virtual fn.
+    // ApproximationInterfaces: do nothing
+  }
+}
+
+
+void Interface::set_communicators(const IntArray& message_lengths,
+				  int max_eval_concurrency)
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->set_communicators(message_lengths, max_eval_concurrency);
+  else { // letter lacking redefinition of virtual fn.
+    // ApproximationInterfaces: do nothing
+  }
+}
+
+
+/*
+void Interface::free_communicators()
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->free_communicators();
+  else { // letter lacking redefinition of virtual fn.
+    // default is no-op
+  }
+}
+*/
+
+
+void Interface::init_serial()
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->init_serial();
+  else { // letter lacking redefinition of virtual fn.
+    // ApproximationInterfaces: do nothing
+  }
+}
+
+
+int Interface::asynch_local_evaluation_concurrency() const
+{
+  if (interfaceRep) // envelope fwd to letter
+    return interfaceRep->asynch_local_evaluation_concurrency();
+  else // letter lacking redefinition of virtual fn.
+    return 0; // default (redefined only for ApplicationInterfaces)
+}
+
+
+short Interface::interface_synchronization() const
+{
+  if (interfaceRep) // envelope fwd to letter
+    return interfaceRep->interface_synchronization(); // ApplicationInterfaces
+  else // letter lacking redefinition of virtual fn.
+    return SYNCHRONOUS_INTERFACE; // default (ApproximationInterfaces)
+}
+
+
+int Interface::minimum_points(bool constraint_flag) const
+{
+  if (interfaceRep) // envelope fwd to letter
+    return interfaceRep->minimum_points(constraint_flag);
+  else // letter lacking redefinition of virtual fn.
+    return 0; // default (currently redefined only for ApproximationInterfaces)
+}
+
+
+int Interface::recommended_points(bool constraint_flag) const
+{
+  if (interfaceRep) // envelope fwd to letter
+    return interfaceRep->recommended_points(constraint_flag);
+  else // letter lacking redefinition of virtual fn.
+    return 0; // default (currently redefined only for ApproximationInterfaces)
+}
+
+
+void Interface::approximation_function_indices(const IntSet& approx_fn_indices)
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->approximation_function_indices(approx_fn_indices);
+  // else: default implementation is no-op
+}
+
+
+void Interface::
+update_approximation(const Variables& vars, const IntResponsePair& response_pr)
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->update_approximation(vars, response_pr);
+  else { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual update_approximation"
+         << "(Variables, IntResponsePair) function.\n       This interface "
+	 << "does not support approximation updating." << std::endl;
+    abort_handler(-1);
+  }
+}
+
+
+void Interface::
+update_approximation(const RealMatrix& samples, const IntResponseMap& resp_map)
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->update_approximation(samples, resp_map);
+  else { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual update_approximation"
+         << "(RealMatrix, IntResponseMap) function.\n       This interface "
+	 << "does not support approximation updating." << std::endl;
+    abort_handler(-1);
+  }
+}
+
+
+void Interface::
+update_approximation(const VariablesArray& vars_array,
+		     const IntResponseMap& resp_map)
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->update_approximation(vars_array, resp_map);
+  else { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual update_approximation"
+         << "(VariablesArray, IntResponseMap) function.\n       This interface "
+	 << "does not support approximation updating." << std::endl;
+    abort_handler(-1);
+  }
+}
+
+
+void Interface::
+append_approximation(const Variables& vars, const IntResponsePair& response_pr)
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->append_approximation(vars, response_pr);
+  else { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual append_approximation"
+	 << "(Variables, IntResponsePair) function.\n       This interface "
+	 << "does not support approximation appending." << std::endl;
+    abort_handler(-1);
+  }
+}
+
+
+void Interface::
+append_approximation(const RealMatrix& samples, const IntResponseMap& resp_map)
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->append_approximation(samples, resp_map);
+  else { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual append_approximation"
+         << "(RealMatrix, IntResponseMap) function.\n       This interface "
+	 << "does not support approximation appending." << std::endl;
+    abort_handler(-1);
+  }
+}
+
+
+void Interface::
+append_approximation(const VariablesArray& vars_array,
+		     const IntResponseMap& resp_map)
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->append_approximation(vars_array, resp_map);
+  else { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual append_approximation"
+         << "(VariablesArray, IntResponseMap) function.\n       This interface "
+	 << "does not support approximation appending." << std::endl;
+    abort_handler(-1);
+  }
+}
+
+
+void Interface::
+build_approximation(const RealVector&  c_l_bnds, const RealVector&  c_u_bnds,
+		    const IntVector&  di_l_bnds, const IntVector&  di_u_bnds,
+		    const RealVector& dr_l_bnds, const RealVector& dr_u_bnds)
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->build_approximation(c_l_bnds, c_u_bnds, di_l_bnds, di_u_bnds,
+				      dr_l_bnds, dr_u_bnds);
+  else { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual build_approximation"
+         << "() function.\n       This interface does not support "
+	 << "approximations." << std::endl;
+    abort_handler(-1);
+  }
+}
+
+
+void Interface::
+rebuild_approximation(const BoolDeque& rebuild_deque)
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->rebuild_approximation(rebuild_deque);
+  else { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual rebuild_"
+	 << "approximation() function.\n       This interface does not "
+	 << "support approximations." << std::endl;
+    abort_handler(-1);
+  }
+}
+
+
+void Interface::pop_approximation(bool save_surr_data)
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->pop_approximation(save_surr_data);
+  else { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual pop_approximation"
+	 << "(bool)\n       function. This interface does not support "
+	 << "approximation\n       data removal." << std::endl;
+    abort_handler(-1);
+  }
+}
+
+
+void Interface::restore_approximation()
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->restore_approximation();
+  else { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual restore_"
+	 << "approximation() function.\n       This interface does not "
+	 << "support approximation restoration." << std::endl;
+    abort_handler(-1);
+  }
+}
+
+
+bool Interface::restore_available()
+{
+  if (!interfaceRep) { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual restore_"
+	 << "available() function.\n       This interface does not "
+	 << "support approximation restoration queries." << std::endl;
+    abort_handler(-1);
+  }
+  return interfaceRep->restore_available();
+}
+
+
+void Interface::finalize_approximation()
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->finalize_approximation();
+  else { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual finalize_"
+	 << "approximation() function.\n       This interface does not "
+	 << "support approximation finalization." << std::endl;
+    abort_handler(-1);
+  }
+}
+
+
+void Interface::store_approximation()
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->store_approximation();
+  else { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual store_"
+	 << "approximation() function.\n       This interface does not "
+	 << "support approximation storage." << std::endl;
+    abort_handler(-1);
+  }
+}
+
+
+void Interface::combine_approximation(short corr_type)
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->combine_approximation(corr_type);
+  else { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual combine_"
+	 << "approximation() function.\n       This interface does not "
+	 << "support approximation combination." << std::endl;
+    abort_handler(-1);
+  }
+}
+
+
+void Interface::clear_current()
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->clear_current();
+  else { // letter lacking redefinition of virtual fn.
+    // ApplicationInterfaces: do nothing
+  }
+}
+
+
+void Interface::clear_all()
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->clear_all();
+  else { // letter lacking redefinition of virtual fn.
+    // ApplicationInterfaces: do nothing
+  }
+}
+
+
+void Interface::clear_saved()
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->clear_saved();
+  else { // letter lacking redefinition of virtual fn.
+    // ApplicationInterfaces: do nothing
+  }
+}
+
+
+SharedApproxData& Interface::shared_approximation()
+{
+  if (!interfaceRep) { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual shared_approximation"
+         << "() function.\nThis interface does not support approximations."
+	 << std::endl;
+    abort_handler(-1);
+  }
+
+  // envelope fwd to letter
+  return interfaceRep->shared_approximation();
+}
+
+
+std::vector<Approximation>& Interface::approximations()
+{
+  if (!interfaceRep) { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual approximations() "
+	 << "function.\n       This interface does not support approximations."
+	 << std::endl;
+    abort_handler(-1);
+  }
+
+  // envelope fwd to letter
+  return interfaceRep->approximations();
+}
+
+
+const Pecos::SurrogateData& Interface::approximation_data(size_t index)
+{
+  if (!interfaceRep) { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual approximation_data "
+	 << "function.\n       This interface does not support approximations."
+	 << std::endl;
+    abort_handler(-1);
+  }
+
+  // envelope fwd to letter
+  return interfaceRep->approximation_data(index);
+}
+
+
+const RealVectorArray& Interface::approximation_coefficients(bool normalized)
+{
+  if (!interfaceRep) { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual approximation_"
+	 << "coefficients function.\n       This interface does not support "
+         << "approximations." << std::endl;
+    abort_handler(-1);
+  }
+
+  // envelope fwd to letter
+  return interfaceRep->approximation_coefficients(normalized);
+}
+
+
+void Interface::
+approximation_coefficients(const RealVectorArray& approx_coeffs,
+			   bool normalized)
+{
+  if (interfaceRep) // envelope fwd to letter
+    interfaceRep->approximation_coefficients(approx_coeffs, normalized);
+  else { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual approximation_"
+	 << "coefficients function.\n       This interface does not support "
+         << "approximations." << std::endl;
+    abort_handler(-1);
+  }
+}
+
+
+const RealVector& Interface::approximation_variances(const Variables& vars)
+{
+  if (!interfaceRep) { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual approximation_"
+	 << "variances function.\n       This interface does not support "
+         << "approximations." << std::endl;
+    abort_handler(-1);
+  }
+
+  // envelope fwd to letter
+  return interfaceRep->approximation_variances(vars);
+}
+
+
+const StringArray& Interface::analysis_drivers() const
+{
+  if (!interfaceRep) { // letter lacking redefinition of virtual fn.
+    Cerr << "Error: Letter lacking redefinition of virtual analysis_drivers "
+	 << "function." << std::endl;
+    abort_handler(-1);
+  }
+
+  // envelope fwd to letter
+  return interfaceRep->analysis_drivers();
+}
+
+
+bool Interface::evaluation_cache() const
+{
+  if (interfaceRep)
+    return interfaceRep->evaluation_cache();
+  else // letter lacking redefinition of virtual fn.
+    return false; // default
+}
+
+
+void Interface::file_cleanup() const
+{
+  if (interfaceRep)
+    interfaceRep->file_cleanup();
+  // else no-op
+}
+
+} // namespace Dakota
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/src/NonDLocalReliability.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/src/NonDLocalReliability.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/src/NonDLocalReliability.cpp	(revision 27955)
@@ -0,0 +1,2704 @@
+/*  _______________________________________________________________________
+
+    DAKOTA: Design Analysis Kit for Optimization and Terascale Applications
+    Copyright 2014 Sandia Corporation.
+    This software is distributed under the GNU Lesser General Public License.
+    For more information, see the README file in the top Dakota directory.
+    _______________________________________________________________________ */
+
+//- Class:	 NonDLocalReliability
+//- Description: Implementation code for NonDLocalReliability class
+//- Owner:       Mike Eldred
+//- Checked by:
+//- Version:
+
+#include "dakota_system_defs.hpp"
+#include "DakotaResponse.hpp"
+#include "ParamResponsePair.hpp"
+#include "PRPMultiIndex.hpp"
+#include "ProblemDescDB.hpp"
+#include "DakotaGraphics.hpp"
+#include "NonDLocalReliability.hpp"
+#include "NonDAdaptImpSampling.hpp"
+#ifdef HAVE_NPSOL
+#include "NPSOLOptimizer.hpp"
+#endif
+#ifdef HAVE_OPTPP
+#include "SNLLOptimizer.hpp"
+using OPTPP::NLPFunction;
+using OPTPP::NLPGradient;
+#endif
+#include "RecastModel.hpp"
+#include "DataFitSurrModel.hpp"
+#include "NestedModel.hpp"
+#include "Teuchos_LAPACK.hpp"
+#include "Teuchos_SerialDenseHelpers.hpp"
+#include <algorithm>
+#include "dakota_data_io.hpp"
+
+//#define MPP_CONVERGE_RATE
+//#define DEBUG
+
+static const char rcsId[] = "@(#) $Id: NonDLocalReliability.cpp 4058 2006-10-25 01:39:40Z mseldre $";
+
+namespace Dakota {
+extern PRPCache data_pairs; // global container
+
+
+// define special values for componentParallelMode
+//#define SURROGATE_MODEL 1
+#define TRUTH_MODEL 2
+
+
+// initialization of statics
+NonDLocalReliability* NonDLocalReliability::nondLocRelInstance(NULL);
+
+
+NonDLocalReliability::
+NonDLocalReliability(ProblemDescDB& problem_db, Model& model):
+  NonDReliability(problem_db, model),
+  initialPtUserSpec(
+    probDescDB.get_bool("variables.uncertain.initial_point_flag")),
+  warmStartFlag(true), nipModeOverrideFlag(true),
+  curvatureDataAvailable(false), kappaUpdated(false),
+  secondOrderIntType(HOHENRACK), curvatureThresh(1.e-10), warningBits(0)
+{
+  // check for suitable gradient and variables specifications
+  if (iteratedModel.gradient_type() == "none") {
+    Cerr << "\nError: local_reliability requires a gradient specification."
+	 << std::endl;
+    abort_handler(-1);
+  }
+  if (numEpistemicUncVars) {
+    Cerr << "Error: epistemic variables are not supported in local "
+	 << "reliability methods." << std::endl;
+    abort_handler(-1);
+  }
+
+  if (mppSearchType) { // default is MV = 0
+
+    // Map MPP search NIP/SQP algorithm specification into an NPSOL/OPT++
+    // selection based on configuration availability.
+#if !defined(HAVE_NPSOL) && !defined(HAVE_OPTPP)
+    Cerr << "Error: this executable not configured with NPSOL or OPT++.\n"
+	 << "       NonDLocalReliability cannot perform MPP search."
+         << std::endl;
+    abort_handler(-1);
+#endif
+    unsigned short mpp_optimizer = probDescDB.get_ushort("method.sub_method");
+    if (mpp_optimizer == SUBMETHOD_SQP) {
+#ifdef HAVE_NPSOL
+      npsolFlag = true;
+#else
+      Cerr << "\nError: this executable not configured with NPSOL SQP.\n"
+	   << "         Please select OPT++ NIP within local_reliability."
+	   << std::endl;
+      abort_handler(-1);
+#endif
+    }
+    else if (mpp_optimizer == SUBMETHOD_NIP) {
+#ifdef HAVE_OPTPP
+      npsolFlag = false;
+#else
+      Cerr << "\nError: this executable not configured with OPT++ NIP.\n"
+	   << "         please select NPSOL SQP within local_reliability."
+	   << std::endl;
+      abort_handler(-1);
+#endif
+    }
+    else if (mpp_optimizer == SUBMETHOD_DEFAULT) {
+#ifdef HAVE_NPSOL
+      npsolFlag = true;
+#elif HAVE_OPTPP
+      npsolFlag = false;
+#endif
+    }
+
+    // Error check for a specification of at least 1 level for MPP methods
+    if (!totalLevelRequests) {
+      Cerr << "\nError: An MPP search method requires the specification of at "
+	   << "least one response, probability, or reliability level."
+	   << std::endl;
+      abort_handler(-1);
+    }
+  }
+
+  // Prevent nesting of an instance of a Fortran iterator within another
+  // instance of the same iterator (which would result in data clashes since
+  // Fortran does not support object independence).  Recurse through all
+  // sub-models and test each sub-iterator for SOL presence.
+  // Note 1: This check is performed for DOT, CONMIN, and SOLBase, but not
+  //         for LHS since it is only active in pre-processing.
+  // Note 2: NPSOL/NLSSOL on the outer loop with NonDLocalReliability on the
+  //         inner loop precludes all NPSOL-based MPP searches;
+  //         NonDLocalReliability on the outer loop with NPSOL/NLSSOL on an
+  //         inner loop is only a problem for the no_approx MPP search (since
+  //         iteratedModel is not invoked w/i an approx-based MPP search).
+  if (mppSearchType == NO_APPROX && npsolFlag) {
+    Iterator sub_iterator = iteratedModel.subordinate_iterator();
+    if (!sub_iterator.is_null() &&
+	( sub_iterator.method_name() ==  NPSOL_SQP ||
+	  sub_iterator.method_name() == NLSSOL_SQP ||
+	  sub_iterator.uses_method() ==  NPSOL_SQP ||
+	  sub_iterator.uses_method() == NLSSOL_SQP ) )
+      sub_iterator.method_recourse();
+    ModelList& sub_models = iteratedModel.subordinate_models();
+    for (ModelLIter ml_iter = sub_models.begin();
+	 ml_iter != sub_models.end(); ml_iter++) {
+      sub_iterator = ml_iter->subordinate_iterator();
+      if (!sub_iterator.is_null() &&
+	  ( sub_iterator.method_name() ==  NPSOL_SQP ||
+	    sub_iterator.method_name() == NLSSOL_SQP ||
+	    sub_iterator.uses_method() ==  NPSOL_SQP ||
+	    sub_iterator.uses_method() == NLSSOL_SQP ) )
+	sub_iterator.method_recourse();
+    }
+  }
+
+  // Map response Hessian specification into taylorOrder for use by MV/AMV/AMV+
+  // variants.  Note that taylorOrder and integrationOrder are independent
+  // (although the Hessian specification required for 2nd-order integration
+  // means that taylorOrder = 2 will be used for MV/AMV/AMV+; taylorOrder = 2
+  // may however be used with 1st-order integration).
+  const String& hess_type = iteratedModel.hessian_type();
+  taylorOrder = (hess_type != "none" && mppSearchType <= AMV_PLUS_U) ? 2 : 1;
+
+  // assign iterator-specific defaults for approximation-based MPP searches
+  if (maxIterations <  0          && // DataMethod default = -1
+      mppSearchType >= AMV_PLUS_X && mppSearchType < NO_APPROX) // approx-based
+    maxIterations = 25;
+
+  // The model of the limit state in u-space (uSpaceModel) is constructed here
+  // one time.  The RecastModel for the RIA/PMA formulations varies with the
+  // level requests and is constructed for each level within mpp_search().
+
+  // Instantiate the Nataf Recast and any DataFit model recursions.  Recast is
+  // bounded to 10 std devs in u space.  This is particularly important for PMA
+  // since an SQP-based optimizer will not enforce the constraint immediately
+  // and min +/-g has been observed to have significant excursions early on
+  // prior to the u'u = beta^2 constraint enforcement bringing it back.  A
+  // large excursion can cause overflow; a medium excursion can cause poor
+  // performance since far-field info is introduced into the BFGS Hessian.
+  if (mppSearchType ==  AMV_X || mppSearchType == AMV_PLUS_X ||
+      mppSearchType == TANA_X) { // Recast( DataFit( iteratedModel ) )
+
+    // Construct g-hat(x) using a local/multipoint approximation over the
+    // uncertain variables (using the same view as iteratedModel).
+    Model g_hat_x_model;
+    String sample_reuse, approx_type = (mppSearchType == TANA_X) ?
+      "multipoint_tana" : "local_taylor";
+    UShortArray approx_order(1, taylorOrder);
+    short corr_order = -1, corr_type = NO_CORRECTION,
+      data_order = (taylorOrder == 2) ? 7 : 3;
+    int samples = 0, seed = 0;
+    Iterator dace_iterator;
+    //const Variables& curr_vars = iteratedModel.current_variables();
+    ActiveSet surr_set = iteratedModel.current_response().active_set(); // copy
+    surr_set.request_values(3); // surrogate gradient evals
+    g_hat_x_model.assign_rep(new DataFitSurrModel(dace_iterator, iteratedModel,
+      surr_set, approx_type, approx_order, corr_type, corr_order, data_order,
+      outputLevel, sample_reuse), false);
+
+    // transform g_hat_x_model from x-space to u-space
+    transform_model(g_hat_x_model, uSpaceModel, true); // globally bounded
+  }
+  else if (mppSearchType ==  AMV_U || mppSearchType == AMV_PLUS_U ||
+	   mppSearchType == TANA_U) { // DataFit( Recast( iteratedModel ) )
+
+    // Recast g(x) to G(u)
+    Model g_u_model;
+    transform_model(iteratedModel, g_u_model, true); // globally bounded
+
+    // Construct G-hat(u) using a local/multipoint approximation over the
+    // uncertain variables (using the same view as iteratedModel/g_u_model).
+    String sample_reuse, approx_type = (mppSearchType == TANA_U) ?
+      "multipoint_tana" : "local_taylor";
+    UShortArray approx_order(1, taylorOrder);
+    short corr_order = -1, corr_type = NO_CORRECTION,
+      data_order = (taylorOrder == 2) ? 7 : 3;
+    int samples = 0, seed = 0;
+    Iterator dace_iterator;
+    //const Variables& g_u_vars = g_u_model.current_variables();
+    ActiveSet surr_set = g_u_model.current_response().active_set(); // copy
+    surr_set.request_values(3); // surrogate gradient evals
+    uSpaceModel.assign_rep(new DataFitSurrModel(dace_iterator, g_u_model,
+      surr_set, approx_type, approx_order, corr_type, corr_order, data_order,
+      outputLevel, sample_reuse), false);
+  }
+  else if (mppSearchType == NO_APPROX) // Recast( iteratedModel )
+    // Recast g(x) to G(u)
+    transform_model(iteratedModel, uSpaceModel, true); // globally bounded
+
+  // configure a RecastModel with one objective and one equality constraint
+  // using the alternate minimalist constructor
+  if (mppSearchType) {
+    SizetArray recast_vars_comps_total;  // default: empty; no change in size
+    BitArray all_relax_di, all_relax_dr; // default: empty; no discrete relax
+    mppModel.assign_rep(
+      new RecastModel(uSpaceModel, recast_vars_comps_total,
+		      all_relax_di, all_relax_dr, 1, 1, 0), false);
+    RealVector nln_eq_targets(1, false); nln_eq_targets = 0.;
+    mppModel.nonlinear_eq_constraint_targets(nln_eq_targets);
+
+    // Use NPSOL/OPT++ in "user_functions" mode to perform the MPP search
+    if (npsolFlag) {
+      // NPSOL deriv level: 1 = supplied grads of objective fn, 2 = supplied
+      // grads of constraints, 3 = supplied grads of both.  Always use the
+      // supplied grads of u'u (deriv level = 1 for RIA, deriv level = 2 for
+      // PMA).  In addition, use supplied gradients of G(u) in most cases.
+      // Exception: deriv level = 3 results in a gradient-based line search,
+      // which could be too expensive for FORM with numerical grads unless
+      // seeking parallel load balance.
+      //int npsol_deriv_level;
+      //if ( mppSearchType == NO_APPROX && !iteratedModel.asynch_flag()
+      //     && iteratedModel.gradient_type() != "analytic" )
+      //  npsol_deriv_level = (ria_flag) ? 1 : 2;
+      //else
+      //  npsol_deriv_level = 3;
+      //Cout << "Derivative level = " << npsol_deriv_level << '\n';
+
+      // The gradient-based line search (deriv. level = 3) appears to be
+      // outperforming the value-based line search in PMA testing.  In
+      // addition, the RIA warm start needs fnGradU so deriv. level = 3 has
+      // superior performance there as well.  Therefore, deriv level = 3 can
+      // be used for all cases.
+      int npsol_deriv_level = 3;
+
+      // run a tighter tolerance on approximation-based MPP searches
+      //Real conv_tol = (mppSearchType == NO_APPROX) ? 1.e-4 : 1.e-6;
+      Real conv_tol = -1.; // use NPSOL default
+
+#ifdef HAVE_NPSOL
+      mppOptimizer.assign_rep(new NPSOLOptimizer(mppModel, npsol_deriv_level,
+	conv_tol), false);
+#endif
+    }
+#ifdef HAVE_OPTPP
+    else
+      mppOptimizer.assign_rep(new SNLLOptimizer("optpp_q_newton", mppModel),
+	false);
+#endif
+  }
+
+  // Map integration specification into integrationOrder.  Second-order
+  // integration requires an MPP search in u-space, and is not warranted for
+  // unconverged MPP's (AMV variants).  In addition, AMV variants only compute
+  // verification function values at u* (no Hessians).  For an AMV-like
+  // approach with 2nd-order integration, use AMV+ with max_iterations = 1.
+  const String& integration_method
+    = probDescDB.get_string("method.nond.reliability_integration");
+  if (integration_method.empty() || integration_method == "first_order")
+    integrationOrder = 1;
+  else if (integration_method == "second_order") {
+    if (hess_type == "none") {
+      Cerr << "\nError: second-order integration requires Hessian "
+	   << "specification." << std::endl;
+      abort_handler(-1);
+    }
+    else if (mppSearchType <= AMV_U) {
+      Cerr << "\nError: second-order integration only supported for fully "
+	   << "converged MPP methods." << std::endl;
+      abort_handler(-1);
+    }
+    else
+      integrationOrder = 2;
+  }
+  else {
+    Cerr << "Error: bad integration selection in NonDLocalReliability."
+	 << std::endl;
+    abort_handler(-1);
+  }
+
+  if (integrationRefinement) {
+    for (size_t i=0; i<numFunctions; i++)
+      if (!requestedProbLevels[i].empty() || !requestedRelLevels[i].empty() ||
+	  !requestedGenRelLevels[i].empty()) {
+	Cerr << "\nError: importance sampling methods only supported for RIA."
+	     << "\n\n";
+	abort_handler(-1);
+      }
+    // integration refinement requires an MPP, but it may be unconverged (AMV)
+    if (!mppSearchType) {
+      Cerr << "\nError: integration refinement only supported for MPP methods."
+	   << std::endl;
+      abort_handler(-1);
+    }
+
+    // For NonDLocal, integration refinement is applied to the original model
+    int refine_samples = probDescDB.get_int("method.nond.refinement_samples"),
+        refine_seed    = probDescDB.get_int("method.random_seed");
+    if (!refine_samples) refine_samples = 1000; // context-specific default
+
+    unsigned short sample_type = SUBMETHOD_DEFAULT;
+    String rng; // empty string: use default
+
+    // Note: global bounds definition in transform_model() can be true
+    // (to bound an optimizer search) with AIS use_model_bounds = false
+    // (AIS will ignore these global bounds).
+    bool x_model_flag = false, use_model_bounds = false, vary_pattern = true;
+
+    // AIS is performed in u-space WITHOUT a surrogate: pass a truth u-space
+    // model when available, construct one when not.
+    switch (mppSearchType) {
+    case AMV_X: case AMV_PLUS_X: case TANA_X: {
+      Model g_u_model;
+      transform_model(iteratedModel, g_u_model); // global bounds not needed
+      importanceSampler.assign_rep(new
+        NonDAdaptImpSampling(g_u_model, sample_type, refine_samples,
+	  refine_seed, rng, vary_pattern, integrationRefinement, cdfFlag,
+	  x_model_flag, use_model_bounds), false);
+      break;
+    }
+    case AMV_U: case AMV_PLUS_U: case TANA_U:
+      importanceSampler.assign_rep(new
+	NonDAdaptImpSampling(uSpaceModel.truth_model(), sample_type,
+	  refine_samples, refine_seed, rng, vary_pattern, integrationRefinement,
+	  cdfFlag, x_model_flag, use_model_bounds), false);
+      break;
+    case NO_APPROX:
+      importanceSampler.assign_rep(new
+        NonDAdaptImpSampling(uSpaceModel, sample_type, refine_samples,
+	  refine_seed, rng, vary_pattern, integrationRefinement, cdfFlag,
+	  x_model_flag, use_model_bounds), false);
+      break;
+    }
+  }
+
+  // Size the output arrays.  Relative to sampling methods, the output storage
+  // for reliability methods is more substantial since there may be differences
+  // between requested and computed levels for the same measure (the request is
+  // not always achieved) and since probability and reliability are carried
+  // along in parallel (due to their direct correspondence).
+  computedRelLevels.resize(numFunctions);
+  for (size_t i=0; i<numFunctions; i++) {
+    size_t num_levels = requestedRespLevels[i].length() +
+      requestedProbLevels[i].length() + requestedRelLevels[i].length() +
+      requestedGenRelLevels[i].length();
+    computedRespLevels[i].resize(num_levels);
+    computedProbLevels[i].resize(num_levels);
+    computedRelLevels[i].resize(num_levels);
+    computedGenRelLevels[i].resize(num_levels);
+  }
+
+  // Size class-scope arrays.
+  mostProbPointX.sizeUninitialized(numUncertainVars);
+  mostProbPointU.sizeUninitialized(numUncertainVars);
+  fnGradX.sizeUninitialized(numUncertainVars);
+  fnGradU.sizeUninitialized(numUncertainVars);
+  if (taylorOrder == 2 || integrationOrder == 2) {
+    fnHessX.shapeUninitialized(numUncertainVars);
+    fnHessU.shapeUninitialized(numUncertainVars);
+    if (hess_type == "quasi") {
+      // Note: fnHess=0 in both spaces is not self-consistent for nonlinear
+      // transformations.  However, the point is to use a first-order
+      // approximation in either space prior to curvature accumulation.
+      fnHessX = 0.;
+      fnHessU = 0.;
+    }
+    kappaU.sizeUninitialized(numUncertainVars-1);
+  }
+}
+
+
+NonDLocalReliability::~NonDLocalReliability()
+{ }
+
+
+void NonDLocalReliability::derived_init_communicators(ParLevLIter pl_iter)
+{
+  iteratedModel.init_communicators(pl_iter, maxEvalConcurrency);
+  if (mppSearchType) {
+    // uSpaceModel, mppOptimizer, and importanceSampler use NoDBBaseConstructor,
+    // so no need to manage DB list nodes at this level
+
+    // maxEvalConcurrency defined from the derivative concurrency in the
+    // responses specification.  For FORM/SORM, the NPSOL/OPT++ concurrency
+    // is the same, but for approximate methods, the concurrency is dictated
+    // by the gradType/hessType logic in the instantiate on-the-fly
+    // DataFitSurrModel constructor.
+    uSpaceModel.init_communicators(pl_iter, maxEvalConcurrency);
+    // TO DO: distinguish gradient concurrency for truth vs. surrogate?
+    //        (probably doesn't matter for surrogate)
+
+    mppOptimizer.init_communicators(pl_iter);
+
+    if (integrationRefinement)
+      importanceSampler.init_communicators(pl_iter);
+  }
+}
+
+
+void NonDLocalReliability::derived_set_communicators(ParLevLIter pl_iter)
+{
+  NonD::derived_set_communicators(pl_iter);
+
+  if (mppSearchType) {
+    uSpaceModel.set_communicators(pl_iter, maxEvalConcurrency);
+    mppOptimizer.set_communicators(pl_iter);
+    if (integrationRefinement)
+      importanceSampler.set_communicators(pl_iter);
+  }
+}
+
+
+void NonDLocalReliability::derived_free_communicators(ParLevLIter pl_iter)
+{
+  if (mppSearchType) {
+    if (integrationRefinement)
+      importanceSampler.free_communicators(pl_iter);
+    mppOptimizer.free_communicators(pl_iter);
+    uSpaceModel.free_communicators(pl_iter, maxEvalConcurrency);
+  }
+  iteratedModel.free_communicators(pl_iter, maxEvalConcurrency);
+}
+
+
+void NonDLocalReliability::quantify_uncertainty()
+{
+  if (mppSearchType) mpp_search();
+  else               mean_value();
+
+  numRelAnalyses++;
+}
+
+
+void NonDLocalReliability::mean_value()
+{
+  // For MV, compute approximate mean, standard deviation, and requested
+  // CDF/CCDF data points for each response function and store in
+  // finalStatistics.  Additionally, if uncorrelated variables, compute
+  // importance factors.
+
+  initialize_random_variable_parameters();
+  initial_taylor_series();
+
+  // initialize arrays
+  impFactor.shapeUninitialized(numUncertainVars, numFunctions);
+  statCount = 0;
+  initialize_final_statistics_gradients();
+
+  // local reliability data aren't output to tabular, so send directly
+  // to graphics window only
+  Graphics& dakota_graphics = parallelLib.output_manager().graphics();
+
+  // loop over response functions
+  size_t i;
+  const ShortArray& final_asv = finalStatistics.active_set_request_vector();
+  for (respFnCount=0; respFnCount<numFunctions; respFnCount++) {
+    Real& mean    = momentStats(0,respFnCount);
+    Real& std_dev = momentStats(1,respFnCount);
+
+    // approximate response means already computed
+    finalStatistics.function_value(mean, statCount);
+    // sensitivity of response mean
+    if (final_asv[statCount] & 2) {
+      RealVector fn_grad_mean_x(numUncertainVars, false);
+      for (i=0; i<numUncertainVars; i++)
+	fn_grad_mean_x[i] = fnGradsMeanX(i,respFnCount);
+      // evaluate dg/ds at the variable means and store in finalStatistics
+      RealVector final_stat_grad;
+      dg_ds_eval(natafTransform.x_means(), fn_grad_mean_x, final_stat_grad);
+      finalStatistics.function_gradient(final_stat_grad, statCount);
+    }
+    statCount++;
+
+    // approximate response std deviations already computed
+    finalStatistics.function_value(std_dev, statCount);
+    // sensitivity of response std deviation
+    if (final_asv[statCount] & 2) {
+      // Differentiating the first-order second-moment expression leads to
+      // 2nd-order d^2g/dxds sensitivities which would be awkward to compute
+      // (nonstandard DVV containing active and inactive vars)
+      Cerr << "Error: response std deviation sensitivity not yet supported."
+           << std::endl;
+      abort_handler(-1);
+    }
+    statCount++;
+
+    // if inputs are uncorrelated, compute importance factors
+    if (!natafTransform.x_correlation() && std_dev > Pecos::SMALL_NUMBER) {
+      const Pecos::RealVector& x_std_devs = natafTransform.x_std_deviations();
+      for (i=0; i<numUncertainVars; i++)
+        impFactor(i,respFnCount) = std::pow(x_std_devs[i] / std_dev *
+					    fnGradsMeanX(i,respFnCount), 2);
+    }
+
+    // compute probability/reliability levels for requested response levels and
+    // compute response levels for requested probability/reliability levels.
+    // For failure defined as g<0, beta is simply mean/sigma.  This is extended
+    // to compute general cumulative probabilities for g<z or general
+    // complementary cumulative probabilities for g>z.
+    size_t rl_len = requestedRespLevels[respFnCount].length(),
+           pl_len = requestedProbLevels[respFnCount].length(),
+           bl_len = requestedRelLevels[respFnCount].length(),
+           gl_len = requestedGenRelLevels[respFnCount].length();
+    for (levelCount=0; levelCount<rl_len; levelCount++) {
+      // computed = requested in MV case since no validation fn evals
+      Real z = computedRespLevels[respFnCount][levelCount]
+	= requestedRespLevels[respFnCount][levelCount];
+      // compute beta and p from z
+      Real beta, p;
+      if (std_dev > Pecos::SMALL_NUMBER) {
+	Real ratio = (mean - z)/std_dev;
+        beta = computedRelLevels[respFnCount][levelCount]
+	  = computedGenRelLevels[respFnCount][levelCount]
+	  = (cdfFlag) ? ratio : -ratio;
+        p = computedProbLevels[respFnCount][levelCount] = probability(beta);
+      }
+      else {
+        if ( ( cdfFlag && mean <= z) ||
+	     (!cdfFlag && mean >  z) ) {
+          beta = computedRelLevels[respFnCount][levelCount]
+	    = computedGenRelLevels[respFnCount][levelCount]
+	    = -Pecos::LARGE_NUMBER;
+          p = computedProbLevels[respFnCount][levelCount] = 1.;
+	}
+	else {
+          beta = computedRelLevels[respFnCount][levelCount]
+	    = computedGenRelLevels[respFnCount][levelCount]
+	    = Pecos::LARGE_NUMBER;
+          p = computedProbLevels[respFnCount][levelCount] = 0.;
+	}
+      }
+      switch (respLevelTarget) {
+      case PROBABILITIES:
+	finalStatistics.function_value(p, statCount);    break;
+      case RELIABILITIES: case GEN_RELIABILITIES:
+	finalStatistics.function_value(beta, statCount); break;
+      }
+      if (final_asv[statCount] & 2) {
+	Cerr << "Error: response probability/reliability/gen_reliability level "
+	     << "sensitivity not supported for Mean Value." << std::endl;
+	abort_handler(-1);
+      }
+      statCount++;
+      // Update specialty graphics
+      if (!subIteratorFlag)
+	dakota_graphics.add_datapoint(respFnCount, z, p);
+    }
+    for (i=0; i<pl_len; i++) {
+      levelCount = i+rl_len;
+      // computed = requested in MV case since no validation fn evals
+      Real p = computedProbLevels[respFnCount][levelCount]
+	= requestedProbLevels[respFnCount][i];
+      // compute beta and z from p
+      Real beta = computedRelLevels[respFnCount][levelCount]
+	= computedGenRelLevels[respFnCount][levelCount]	= reliability(p);
+      Real z = computedRespLevels[respFnCount][levelCount] = (cdfFlag)
+        ? mean - beta * std_dev : mean + beta * std_dev;
+      finalStatistics.function_value(z, statCount);
+      if (final_asv[statCount] & 2) {
+	Cerr << "Error: response level sensitivity not supported for Mean "
+	     << "Value." << std::endl;
+	abort_handler(-1);
+      }
+      statCount++;
+      // Update specialty graphics
+      if (!subIteratorFlag)
+	dakota_graphics.add_datapoint(respFnCount, z, p);
+    }
+    for (i=0; i<bl_len+gl_len; i++) {
+      levelCount = i+rl_len+pl_len;
+      // computed = requested in MV case since no validation fn evals
+      Real beta = (i<bl_len) ? requestedRelLevels[respFnCount][i] :
+	requestedGenRelLevels[respFnCount][i-bl_len];
+      computedRelLevels[respFnCount][levelCount]
+	= computedGenRelLevels[respFnCount][levelCount] = beta;
+      // compute p and z from beta
+      Real p = computedProbLevels[respFnCount][levelCount] = probability(beta);
+      Real z = computedRespLevels[respFnCount][levelCount] = (cdfFlag)
+        ? mean - beta * std_dev	: mean + beta * std_dev;
+      finalStatistics.function_value(z, statCount);
+      if (final_asv[statCount] & 2) {
+	Cerr << "Error: response level sensitivity not supported for Mean "
+	     << "Value." << std::endl;
+	abort_handler(-1);
+      }
+      statCount++;
+      // Update specialty graphics
+      if (!subIteratorFlag)
+	dakota_graphics.add_datapoint(respFnCount, z, p);
+    }
+  }
+}
+
+
+void NonDLocalReliability::mpp_search()
+{
+  // set the object instance pointer for use within the static member fns
+  NonDLocalReliability* prev_instance = nondLocRelInstance;
+  nondLocRelInstance = this;
+
+  // The following 2 calls must precede use of natafTransform.trans_X_to_U()
+  initialize_random_variable_parameters();
+  // Modify the correlation matrix (Nataf) and compute its Cholesky factor.
+  // Since the uncertain variable distributions (means, std devs, correlations)
+  // may change among NonDLocalReliability invocations (e.g., RBDO with design
+  // variable insertion), this code block is performed on every invocation.
+  transform_correlations();
+
+  // initialize initialPtUSpec on first reliability analysis; needs to precede
+  // iteratedModel.continuous_variables() assignment in initial_taylor_series()
+  if (numRelAnalyses == 0) {
+    if (initialPtUserSpec)
+      natafTransform.trans_X_to_U(iteratedModel.continuous_variables(),
+				  initialPtUSpec);
+    else {
+      // don't use the mean uncertain variable defaults from the parser
+      // since u ~= 0 can cause problems for some formulations
+      initialPtUSpec.sizeUninitialized(numUncertainVars);
+      initialPtUSpec = 1.;
+    }
+  }
+
+  // sets iteratedModel.continuous_variables() to mean values
+  initial_taylor_series();
+
+  // Initialize local arrays
+  statCount = 0;
+  initialize_final_statistics_gradients();
+
+  // Initialize class scope arrays, modify the correlation matrix, and
+  // evaluate median responses
+  initialize_class_data();
+
+  // Loop over each response function in the responses specification.  It is
+  // important to note that the MPP iteration is different for each response
+  // function, and it is not possible to combine the model evaluations for
+  // multiple response functions.
+  size_t i;
+  const ShortArray& final_asv = finalStatistics.active_set_request_vector();
+  for (respFnCount=0; respFnCount<numFunctions; respFnCount++) {
+
+    // approximate response means already computed
+    finalStatistics.function_value(momentStats(0,respFnCount), statCount);
+    // sensitivity of response mean
+    if (final_asv[statCount] & 2) {
+      RealVector fn_grad_mean_x(numUncertainVars, false);
+      for (i=0; i<numUncertainVars; i++)
+	fn_grad_mean_x[i] = fnGradsMeanX(i,respFnCount);
+      // evaluate dg/ds at the variable means and store in finalStatistics
+      RealVector final_stat_grad;
+      dg_ds_eval(natafTransform.x_means(), fn_grad_mean_x, final_stat_grad);
+      finalStatistics.function_gradient(final_stat_grad, statCount);
+    }
+    statCount++;
+
+    // approximate response std deviations already computed
+    finalStatistics.function_value(momentStats(1,respFnCount), statCount);
+    // sensitivity of response std deviation
+    if (final_asv[statCount] & 2) {
+      // Differentiating the first-order second-moment expression leads to
+      // 2nd-order d^2g/dxds sensitivities which would be awkward to compute
+      // (nonstandard DVV containing active and inactive vars)
+      Cerr << "Error: response std deviation sensitivity not yet supported."
+           << std::endl;
+      abort_handler(-1);
+    }
+    statCount++;
+
+    // The most general case is to allow a combination of response, probability,
+    // reliability, and generalized reliability level specifications for each
+    // response function.
+    size_t rl_len = requestedRespLevels[respFnCount].length(),
+           pl_len = requestedProbLevels[respFnCount].length(),
+           bl_len = requestedRelLevels[respFnCount].length(),
+           gl_len = requestedGenRelLevels[respFnCount].length(),
+           index, num_levels = rl_len + pl_len + bl_len + gl_len;
+
+    // Initialize (or warm-start for repeated reliability analyses) initialPtU,
+    // mostProbPointX/U, computedRespLevel, fnGradX/U, and fnHessX/U.
+    curvatureDataAvailable = false; // no data (yet) for this response function
+    if (num_levels)
+      initialize_level_data();
+
+    // Loop over response/probability/reliability levels
+    for (levelCount=0; levelCount<num_levels; levelCount++) {
+
+      // The rl_len response levels are performed first using the RIA
+      // formulation, followed by the pl_len probability levels and the
+      // bl_len reliability levels using the PMA formulation.
+      bool ria_flag = (levelCount < rl_len),
+	pma2_flag = ( integrationOrder == 2 && ( levelCount < rl_len + pl_len ||
+		      levelCount >= rl_len + pl_len + bl_len ) );
+      if (ria_flag) {
+        requestedTargetLevel = requestedRespLevels[respFnCount][levelCount];
+	Cout << "\n>>>>> Reliability Index Approach (RIA) for response level "
+	     << levelCount+1 << " = " << requestedTargetLevel << '\n';
+      }
+      else if (levelCount < rl_len + pl_len) {
+	index  = levelCount - rl_len;
+	Real p = requestedProbLevels[respFnCount][index];
+	Cout << "\n>>>>> Performance Measure Approach (PMA) for probability "
+	     << "level " << index + 1 << " = " << p << '\n';
+	// gen beta target for 2nd-order PMA; beta target for 1st-order PMA:
+	requestedTargetLevel = reliability(p);
+
+	// CDF probability < 0.5  -->  CDF beta > 0  -->  minimize g
+	// CDF probability > 0.5  -->  CDF beta < 0  -->  maximize g
+	// CDF probability = 0.5  -->  CDF beta = 0  -->  compute g
+	// Note: "compute g" means that min/max is irrelevant since there is
+	// a single G(u) value when the radius beta collapses to the origin
+	Real p_cdf   = (cdfFlag) ? p : 1. - p;
+	pmaMaximizeG = (p_cdf > 0.5); // updated in update_pma_maximize()
+      }
+      else if (levelCount < rl_len + pl_len + bl_len) {
+	index = levelCount - rl_len - pl_len;
+	requestedTargetLevel = requestedRelLevels[respFnCount][index];
+	Cout << "\n>>>>> Performance Measure Approach (PMA) for reliability "
+	     << "level " << index + 1 << " = " << requestedTargetLevel << '\n';
+	Real beta_cdf = (cdfFlag) ?
+	  requestedTargetLevel : -requestedTargetLevel;
+	pmaMaximizeG = (beta_cdf < 0.);
+      }
+      else {
+	index = levelCount - rl_len - pl_len - bl_len;
+	requestedTargetLevel = requestedGenRelLevels[respFnCount][index];
+	Cout << "\n>>>>> Performance Measure Approach (PMA) for generalized "
+	     << "reliability level " << index + 1 << " = "
+	     << requestedTargetLevel << '\n';
+	Real gen_beta_cdf = (cdfFlag) ?
+	  requestedTargetLevel : -requestedTargetLevel;
+	pmaMaximizeG = (gen_beta_cdf < 0.); // updated in update_pma_maximize()
+      }
+
+      // Assign cold/warm-start values for initialPtU, mostProbPointX/U,
+      // computedRespLevel, fnGradX/U, and fnHessX/U.
+      if (levelCount)
+	initialize_mpp_search_data();
+
+#ifdef DERIV_DEBUG
+      // numerical verification of analytic Jacobian/Hessian routines
+      if (mppSearchType == NO_APPROX && levelCount == 0)
+        mostProbPointU = ranVarMeansU;//mostProbPointX = ranVarMeansX;
+      //natafTransform.verify_trans_jacobian_hessian(mostProbPointU);
+      //natafTransform.verify_trans_jacobian_hessian(mostProbPointX);
+      natafTransform.verify_design_jacobian(mostProbPointU);
+#endif // DERIV_DEBUG
+
+      // For AMV+/TANA approximations, iterate until current expansion point
+      // converges to the MPP.
+      approxIters = 0;
+      approxConverged = false;
+      while (!approxConverged) {
+
+	Sizet2DArray vars_map, primary_resp_map, secondary_resp_map;
+	BoolDequeArray nonlinear_resp_map(2);
+	RecastModel* mpp_model_rep = (RecastModel*)mppModel.model_rep();
+	if (ria_flag) { // RIA: g is in constraint
+	  primary_resp_map.resize(1);   // one objective, no contributors
+	  secondary_resp_map.resize(1); // one constraint, one contributor
+	  secondary_resp_map[0].resize(1);
+	  secondary_resp_map[0][0] = respFnCount;
+	  nonlinear_resp_map[1] = BoolDeque(1, false);
+	  mpp_model_rep->initialize(vars_map, false, NULL, NULL,
+	    primary_resp_map, secondary_resp_map, nonlinear_resp_map,
+	    RIA_objective_eval, RIA_constraint_eval);
+	}
+	else { // PMA: g is in objective
+	  primary_resp_map.resize(1);   // one objective, one contributor
+	  primary_resp_map[0].resize(1);
+	  primary_resp_map[0][0] = respFnCount;
+	  secondary_resp_map.resize(1); // one constraint, no contributors
+	  nonlinear_resp_map[0] = BoolDeque(1, false);
+	  // If 2nd-order PMA with p-level or generalized beta-level, use
+	  // PMA2_set_mapping() & PMA2_constraint_eval().  For approx-based
+	  // 2nd-order PMA, we utilize curvature of the surrogate (if any)
+	  // to update beta*
+	  if (pma2_flag)
+	    mpp_model_rep->initialize(vars_map, false, NULL, PMA2_set_mapping,
+	      primary_resp_map, secondary_resp_map, nonlinear_resp_map,
+	      PMA_objective_eval, PMA2_constraint_eval);
+	  else
+	    mpp_model_rep->initialize(vars_map, false, NULL, NULL,
+	      primary_resp_map, secondary_resp_map, nonlinear_resp_map,
+	      PMA_objective_eval, PMA_constraint_eval);
+	}
+	mppModel.continuous_variables(initialPtU);
+
+        // Execute MPP search and retrieve u-space results
+        Cout << "\n>>>>> Initiating search for most probable point (MPP)\n";
+	ParLevLIter pl_iter
+	  = methodPCIter->mi_parallel_level_iterator(miPLIndex);
+	mppOptimizer.run(pl_iter);
+        const Variables& vars_star = mppOptimizer.variables_results();
+        const Response&  resp_star = mppOptimizer.response_results();
+	const RealVector& fns_star = resp_star.function_values();
+        Cout << "\nResults of MPP optimization:\nInitial point (u-space) =\n"
+             << initialPtU << "Final point (u-space)   =\n";
+	write_data(Cout, vars_star.continuous_variables());
+	if (ria_flag)
+	  Cout << "RIA optimum             =\n                     "
+	       << std::setw(write_precision+7) << fns_star[0] << " [u'u]\n"
+	       << "                     " << std::setw(write_precision+7)
+	       << fns_star[1] << " [G(u) - z]\n";
+	else {
+	  Cout << "PMA optimum             =\n                     "
+	       << std::setw(write_precision+7) << fns_star[0] << " [";
+	  if (pmaMaximizeG) Cout << '-';
+	  Cout << "G(u)]\n                     " << std::setw(write_precision+7)
+	       << fns_star[1];
+	  if (pma2_flag) Cout << " [B* - bar-B*]\n";
+	  else           Cout << " [u'u - B^2]\n";
+	}
+
+	// Update MPP search data
+	update_mpp_search_data(vars_star, resp_star);
+
+      } // end AMV+ while loop
+
+      // Update response/probability/reliability level data
+      update_level_data();
+
+      statCount++;
+    } // end loop over levels
+  } // end loop over response fns
+
+  // Update warm-start data
+  if (warmStartFlag && subIteratorFlag) // view->copy
+    copy_data(iteratedModel.inactive_continuous_variables(), prevICVars);
+
+  // This function manages either component or system reliability metrics
+  // via post-processing of computed{Resp,Prob,Rel,GenRel}Levels
+  update_final_statistics();
+
+  // restore in case of recursion
+  nondLocRelInstance = prev_instance;
+}
+
+
+/** An initial first- or second-order Taylor-series approximation is
+    required for MV/AMV/AMV+/TANA or for the case where momentStats
+    (from MV) are required within finalStatistics for subIterator
+    usage of NonDLocalReliability. */
+void NonDLocalReliability::initial_taylor_series()
+{
+  bool init_ts_flag = (mppSearchType < NO_APPROX); // updated below
+  const String& hess_type = iteratedModel.hessian_type();
+  size_t i, j, k;
+  ShortArray asrv(numFunctions, 0);
+  short mode = 3;
+  if (taylorOrder == 2 && hess_type != "quasi") // no data yet in quasiHess
+    mode |= 4;
+
+  const ShortArray& final_asv = finalStatistics.active_set_request_vector();
+  switch (mppSearchType) {
+  case MV:
+    asrv.assign(numFunctions, mode);
+    break;
+  case AMV_X:      case AMV_U:
+  case AMV_PLUS_X: case AMV_PLUS_U:
+  case TANA_X:     case TANA_U:
+    for (i=0; i<numFunctions; ++i)
+      if (!requestedRespLevels[i].empty() || !requestedProbLevels[i].empty() ||
+	  !requestedRelLevels[i].empty()  || !requestedGenRelLevels[i].empty() )
+	asrv[i] = mode;
+    // no break: fall through
+  case NO_APPROX:
+    if (subIteratorFlag) {
+      // check final_asv for active mean and std deviation stats
+      size_t cntr = 0;
+      for (i=0; i<numFunctions; i++) {
+	for (j=0; j<2; j++) {
+	  if (final_asv[cntr++]) { // mean, std deviation
+	    asrv[i] = mode;
+	    init_ts_flag = true;
+	  }
+	}
+	cntr += requestedRespLevels[i].length() +
+	  requestedProbLevels[i].length() + requestedRelLevels[i].length() +
+	  requestedGenRelLevels[i].length();
+      }
+    }
+    break;
+  }
+
+  momentStats.shape(2, numFunctions); // init to 0
+  if (init_ts_flag) {
+    bool correlation_flag = natafTransform.x_correlation();
+    // Evaluate response values/gradients at the mean values of the uncertain
+    // vars for the (initial) Taylor series expansion in MV/AMV/AMV+.
+    Cout << "\n>>>>> Evaluating response at mean values\n";
+    if (mppSearchType && mppSearchType < NO_APPROX)
+      uSpaceModel.component_parallel_mode(TRUTH_MODEL);
+    iteratedModel.continuous_variables(natafTransform.x_means());
+    activeSet.request_vector(asrv);
+    iteratedModel.compute_response(activeSet);
+    const Response& curr_resp = iteratedModel.current_response();
+    fnValsMeanX       = curr_resp.function_values();
+    fnGradsMeanX      = curr_resp.function_gradients();
+    if (mode & 4)
+      fnHessiansMeanX = curr_resp.function_hessians();
+
+    // compute the covariance matrix from the correlation matrix
+    RealSymMatrix covariance;
+    const Pecos::RealVector& x_std_devs = natafTransform.x_std_deviations();
+    if (correlation_flag) {
+      covariance.shapeUninitialized(numUncertainVars);
+      const Pecos::RealSymMatrix& x_corr_mat
+	= natafTransform.x_correlation_matrix();
+      for (i=0; i<numUncertainVars; i++) {
+	for (j=0; j<=i; j++) {
+	  covariance(i,j) = x_std_devs[i]*x_std_devs[j]*x_corr_mat(i,j);
+	  //if (i != j)
+	  //  covariance(j,i) = covariance(i,j);
+	}
+      }
+    }
+    else {
+      covariance.shape(numUncertainVars); // inits to 0
+      for (i=0; i<numUncertainVars; i++)
+	covariance(i,i) = std::pow(x_std_devs[i], 2);
+    }
+
+    // MVFOSM computes a first-order mean, which is just the response evaluated
+    // at the input variable means.  If Hessian data is available, compute a
+    // second-order mean including the effect of input variable correlations.
+    // MVFOSM computes a first-order variance including the effect of input
+    // variable correlations.  Second-order variance requires skewness/kurtosis
+    // of the inputs and is not practical.  NOTE: if fnGradsMeanX is zero, then
+    // std_dev will be zero --> bad for MV CDF estimates.
+    bool t2nq = (taylorOrder == 2 && hess_type != "quasi"); // 2nd-order mean
+    for (i=0; i<numFunctions; ++i) {
+      if (asrv[i]) {
+	Real& mean = momentStats(0,i); Real& std_dev = momentStats(1,i);
+	mean = fnValsMeanX[i]; // first-order mean
+	Real v1 = 0., v2 = 0.;
+	for (j=0; j<numUncertainVars; ++j) {
+	  Real fn_grad_ji = fnGradsMeanX(j,i);
+	  if (correlation_flag)
+	    for (k=0; k<numUncertainVars; ++k) {
+	      Real cov_jk = covariance(j,k);
+	      if (t2nq) v1 += cov_jk * fnHessiansMeanX[i](j,k);
+	      v2 += cov_jk * fn_grad_ji * fnGradsMeanX(k,i);
+	    }
+	  else {
+	    Real cov_jj = covariance(j,j);
+	    if (t2nq) v1 += cov_jj * fnHessiansMeanX[i](j,j);
+	    v2 += cov_jj * std::pow(fn_grad_ji, 2);
+	  }
+	}
+	if (t2nq) mean += v1/2.;
+	std_dev = std::sqrt(v2);
+      }
+    }
+
+    // Teuchos/BLAS-based approach.  As a matrix triple-product, this has some
+    // unneeded FLOPs.  A vector-matrix triple product would be preferable, but
+    // requires vector extractions from fnGradsMeanX.
+    //RealSymMatrix variance(numFunctions, false);
+    //Teuchos::symMatTripleProduct(Teuchos::NO_TRANS, 1., covariance,
+    //                             fnGradsMeanX, variance);
+    //for (i=0; i<numFunctions; i++)
+    //  momentStats(1,i) = sqrt(variance(i,i));
+    //Cout << "\nvariance = " << variance << "\nmomentStats = " << momentStats;
+  }
+}
+
+
+/** Initialize class-scope arrays and perform other start-up
+    activities, such as evaluating median limit state responses. */
+void NonDLocalReliability::initialize_class_data()
+{
+  // Initialize class-scope arrays used to warm-start multiple reliability
+  // analyses within a strategy such as bi-level/sequential RBDO.  Cannot be
+  // performed in constructor due to late availability of subIteratorFlag.
+  if (warmStartFlag && subIteratorFlag && numRelAnalyses == 0) {
+    size_t num_final_grad_vars
+      = finalStatistics.active_set_derivative_vector().size();
+    prevMPPULev0.resize(numFunctions);
+    prevCumASVLev0.assign(numFunctions, 0);
+    prevFnGradDLev0.shape(num_final_grad_vars, numFunctions);
+    prevFnGradULev0.shape(numUncertainVars, numFunctions);
+  }
+
+  // define ranVarMeansU for use in the transformed AMV option
+  //if (mppSearchType == AMV_U)
+  natafTransform.trans_X_to_U(natafTransform.x_means(), ranVarMeansU);
+  // must follow transform_correlations()
+
+  /*
+  // Determine median limit state values for AMV/AMV+/FORM/SORM by evaluating
+  // response fns at u = 0 (used for determining signs of reliability indices).
+  Cout << "\n>>>>> Evaluating response at median values\n";
+  if (mppSearchType && mppSearchType < NO_APPROX)
+    uSpaceModel.component_parallel_mode(TRUTH_MODEL);
+  RealVector ep_median_u(numUncertainVars), // inits vals to 0
+             ep_median_x(numUncertainVars, false);
+  natafTransform.trans_U_to_X(ep_median_u, ep_median_x);
+  iteratedModel.continuous_variables(ep_median_x);
+  activeSet.request_values(0); // initialize
+  for (size_t i=0; i<numFunctions; i++)
+    if (!requestedRespLevels[i].empty() || !requestedProbLevels[i].empty() ||
+	!requestedRelLevels[i].empty()  || !requestedGenRelLevels[i].empty())
+      activeSet.request_value(1, i); // only fn vals needed at median unc vars
+  iteratedModel.compute_response(activeSet);
+  medianFnVals = iteratedModel.current_response().function_values();
+  */
+
+  // now that vars/labels/bounds/targets have flowed down at run-time from any
+  // higher level recursions, propagate them up the instantiate-on-the-fly
+  // Model recursion so that they are correct when they propagate back down.
+  mppModel.update_from_subordinate_model(); // recurse_flag = true
+
+  // set up the x-space data within the importance sampler
+  if (integrationRefinement) { // IS/AIS/MMAIS
+    // rep needed for access to functions not mapped to Iterator level
+    NonDAdaptImpSampling* importance_sampler_rep
+      = (NonDAdaptImpSampling*)importanceSampler.iterator_rep();
+    importance_sampler_rep->initialize_random_variables(natafTransform);
+  }
+}
+
+
+/** For a particular response function prior to the first z/p/beta level,
+    initialize/warm-start optimizer initial guess (initialPtU),
+    expansion point (mostProbPointX/U), and associated response
+    data (computedRespLevel, fnGradX/U, and fnHessX/U). */
+void NonDLocalReliability::initialize_level_data()
+{
+  // All reliability methods need initialization of initialPtU; AMV/AMV+/TANA
+  // methods additionally need initialization of fnGradX/U; and AMV+/TANA
+  // methods additionally need initialization of mostProbPointX/U and
+  // computedRespLevel.
+
+  // If warm-starting across multiple NonDLocalReliability invocations (e.g.,
+  // for modified design parameters in RBDO), warm-start using the level 0 final
+  // results for the corresponding response fn.  For all subsequent levels,
+  // the warm-start procedure is self-contained (i.e., no data from the
+  // previous NonDLocalReliability invocation is used).
+
+  // For AMV+ across multiple NonDLocalReliability invocations, the previous
+  // level 0 converged MPP provides the basis for the initial expansion point.
+  // If inactive variable design sensitivities are available, a projection
+  // from the previous MPP is used.  In either case, re-evaluation of response
+  // data is required to capture the effect of inactive variable changes
+  // (design variables in RBDO).  Since the mean expansion at the new d
+  // has already been computed, one could also use this since it may predict
+  // an MPP estimate (after one opt cycle, prior to the expense of the second
+  // expansion evaluation) as good as the converged/projected MPP at the
+  // old d.  However, the former approach has been observed to be preferable
+  // in practice (even without projection).
+
+  if (warmStartFlag && subIteratorFlag && numRelAnalyses) {
+    // level 0 of each response fn in subsequent UQ analysis: initial
+    // optimizer guess and initial expansion point are the converged
+    // MPP from the previous UQ analysis, for which the computedRespLevel
+    // and fnGradX/U must be re-evaluated due to design variable changes.
+
+    // simplest approach
+    initialPtU = prevMPPULev0[respFnCount]; // AMV/AMV+/FORM
+
+    // If inactive var sensitivities are available, then apply a correction
+    // to initialPtU using a design sensitivity projection (Burton & Hajela).
+    // Note 1: only valid for RIA.
+    // Note 2: when the top level RBDO optimizer is performing a value-based
+    // line search, it is possible for prevFnGradDLev0 to be older than
+    // prevICVars/prevMPPULev0/prevFnGradULev0.  In testing, this appears to
+    // be OK and preferable to bypassing the projection when prevFnGradDLev0
+    // is out of date (which is why the previous ASV test is cumulative: if
+    // prevFnGradDLev0 has been populated, use it whether or not it was from
+    // the last analysis).
+    bool inactive_grads = (prevCumASVLev0[respFnCount] & 2)    ? true : false;
+    bool lev0_ria = (requestedRespLevels[respFnCount].empty()) ? false : true;
+    if (inactive_grads && lev0_ria) {
+      RealVector fn_grad_d = Teuchos::getCol(Teuchos::View, prevFnGradDLev0,
+                                             respFnCount);
+      RealVector fn_grad_u = Teuchos::getCol(Teuchos::View, prevFnGradULev0,
+                                             respFnCount);
+      const RealVector& d_k_plus_1
+	= iteratedModel.inactive_continuous_variables(); // view
+      Real grad_d_delta_d = 0., norm_grad_u_sq = 0.;
+      size_t i, num_icv = d_k_plus_1.length();
+      for (i=0; i<num_icv; i++)
+	grad_d_delta_d += fn_grad_d[i]*( d_k_plus_1[i] - prevICVars[i] );
+      for (i=0; i<numUncertainVars; i++)
+	norm_grad_u_sq += std::pow(fn_grad_u[i], 2);
+      Real factor = grad_d_delta_d / norm_grad_u_sq;
+      for (i=0; i<numUncertainVars; i++)
+	initialPtU[i] -= factor * fn_grad_u[i];
+    }
+
+    if (mppSearchType == AMV_X || mppSearchType == AMV_U) {
+      // Reevaluation for new des vars already performed at uncertain var means
+      // in initial_taylor_series()
+      assign_mean_data();
+    }
+    else if (mppSearchType == AMV_PLUS_X || mppSearchType == AMV_PLUS_U ||
+	     mppSearchType == TANA_X     || mppSearchType == TANA_U) {
+      mostProbPointU = initialPtU;
+      natafTransform.trans_U_to_X(mostProbPointU, mostProbPointX);
+      if (inactive_grads)
+	Cout << "\n>>>>> Evaluating new response at projected MPP\n";
+      else
+	Cout << "\n>>>>> Evaluating new response at previous MPP\n";
+      uSpaceModel.component_parallel_mode(TRUTH_MODEL);
+      // set active/uncertain vars augmenting inactive design vars
+      iteratedModel.continuous_variables(mostProbPointX);
+      short mode = (taylorOrder == 2) ? 7 : 3;
+      activeSet.request_values(0); activeSet.request_value(mode, respFnCount);
+
+      iteratedModel.compute_response(activeSet);
+      const Response& curr_resp = iteratedModel.current_response();
+      computedRespLevel = curr_resp.function_value(respFnCount);
+      fnGradX = curr_resp.function_gradient_copy(respFnCount);
+
+      SizetMultiArrayConstView cv_ids = iteratedModel.continuous_variable_ids();
+      SizetArray x_dvv; copy_data(cv_ids, x_dvv);
+      natafTransform.trans_grad_X_to_U(fnGradX, fnGradU, mostProbPointX,
+				       x_dvv, cv_ids);
+      if (mode & 4) {
+	fnHessX = curr_resp.function_hessian(respFnCount);
+	natafTransform.trans_hess_X_to_U(fnHessX, fnHessU, mostProbPointX,
+					 fnGradX, x_dvv, cv_ids);
+	curvatureDataAvailable = true; kappaUpdated = false;
+      }
+    }
+  }
+  else { // level 0 of each response fn in first or only UQ analysis
+
+    // initial fnGradX/U for AMV/AMV+ = grads at mean x values, initial
+    // expansion point for AMV+ = mean x values.
+    if (mppSearchType < NO_APPROX) { // AMV/AMV+/TANA
+      // update mostProbPointX/U, computedRespLevel, fnGradX/U, fnHessX/U
+      assign_mean_data();
+#ifdef MPP_CONVERGE_RATE
+      if (mppSearchType >= AMV_PLUS_X)
+	Cout << "u'u = "  << mostProbPointU.dot(mostProbPointU)
+	     << " G(u) = " << computedRespLevel << '\n';
+#endif // MPP_CONVERGE_RATE
+    }
+
+    // initial optimizer guess in u-space (initialPtU)
+    initialPtU = initialPtUSpec; // initialPtUSpec set in ctor
+
+    /*
+    // fall back if projection is unavailable (or numerics don't work out).
+    initialPtU = (ria_flag) ? initialPtUSpec :
+      std::fabs(requestedCDFRelLevel)/std::sqrt((Real)numUncertainVars);
+
+    // if fnValsMeanX/fnGradU are available, then warm start initialPtU using
+    // a projection from the means.
+    if (warmStartFlag && mv_flag) {
+      Real alpha, norm_grad_u_sq = fnGradU.dot(fnGradU);
+      if (ria_flag) {
+	// use same projection idea as for a z level change,
+	// but project from means
+	if ( norm_grad_u_sq > 1.e-10 ) {
+	  alpha = (requestedRespLevel - fnValsMeanX[respFnCount])
+	        / norm_grad_u_sq;
+	  for (i=0; i<numUncertainVars; i++)
+	    initialPtU[i] = ranVarMeansU[i] + alpha*fnGradU[i];
+	}
+      }
+      else { // pma
+	// the simple projection for a beta level change does not work here
+	// since beta at means will be near-zero (zero if x-space is normally
+	// distributed).  Therefore, solve for the alpha value in
+	// u = u_mean + alpha*dg/du which yields ||u|| = beta.  This requires
+	// solving the quadratic expression a alpha^2 + b alpha + c = 0 with
+	// a = dg/du^T dg/du, b = 2 dg/du^T u_mean, and
+	// c = u_mean^T u_mean - beta^2
+	Real b = 2. * ranVarMeansU.dot(fnGradU),
+	     c = ranVarMeansU.dot(ranVarMeansU) - pow(requestedCDFRelLevel, 2);
+	Real b2m4ac = b*b - 4.*norm_grad_u_sq*c;
+	if (b2m4ac >= 0. && norm_grad_u_sq > 1.e-10) {
+	  Real alpha1 = (-b + std::sqrt(b2m4ac))/2./norm_grad_u_sq,
+	       alpha2 = (-b - std::sqrt(b2m4ac))/2./norm_grad_u_sq,
+	       g_est1 = fnValsMeanX[respFnCount] + alpha1*norm_grad_u_sq;
+	  // Select the correct root based on sign convention involving beta
+	  // and relationship of projected G to G(0):
+	  if (requestedCDFRelLevel >= 0.)
+	    // if beta_cdf >= 0, then projected G should be <= G(0)
+	    alpha = (g_est1 <= medianFnVals[respFnCount]) ? alpha1 : alpha2;
+	  else
+	    // if beta_cdf <  0, then projected G should be >  G(0)
+	    alpha = (g_est1 >  medianFnVals[respFnCount]) ? alpha1 : alpha2;
+	  for (i=0; i<numUncertainVars; i++)
+	    initialPtU[i] = ranVarMeansU[i] + alpha*fnGradU[i];
+	}
+      }
+    }
+    */
+  }
+
+  // Create the initial Taylor series approximation used by AMV/AMV+/TANA
+  if (mppSearchType < NO_APPROX) {
+    // restrict the approximation index set
+    IntSet surr_fn_indices;
+    surr_fn_indices.insert(respFnCount);
+    uSpaceModel.surrogate_function_indices(surr_fn_indices);
+    // construct the approximation
+    update_limit_state_surrogate();
+  }
+}
+
+
+/** For a particular response function at a particular z/p/beta level,
+    warm-start or reset the optimizer initial guess (initialPtU),
+    expansion point (mostProbPointX/U), and associated response
+    data (computedRespLevel, fnGradX/U, and fnHessX/U). */
+void NonDLocalReliability::initialize_mpp_search_data()
+{
+  if (warmStartFlag) {
+    // For subsequent levels (including an RIA to PMA switch), warm start by
+    // using the MPP from the previous level as the initial expansion
+    // point.  The initial guess for the next MPP optimization is warm
+    // started either by a simple copy of the MPP in the case of unconverged
+    // AMV+ iterations (see AMV+ convergence assessment below) or, in the
+    // case of an advance to the next level, by projecting from the current
+    // MPP out to the new beta radius or response level.
+    // NOTE: premature opt. termination can occur if the RIA/PMA 1st-order
+    // optimality conditions (u + lamba*grad_g = 0 or grad_g + lambda*u = 0)
+    // remain satisfied for the new level, even though the new equality
+    // constraint will be violated.  The projection addresses this concern.
+
+    // No action is required for warm start of mostProbPointX/U, fnGradX/U,
+    // and computedRespLevel (not indexed by level)
+
+    // Warm start initialPtU for the next level using a projection.
+    size_t rl_len = requestedRespLevels[respFnCount].length();
+    if (levelCount < rl_len) {
+      // For RIA case, project along fnGradU to next g level using
+      // linear Taylor series:  g2 = g1 + dg/du^T (u2 - u1) where
+      // u2 - u1 = alpha*dg/du gives alpha = (g2 - g1)/(dg/du^T dg/du).
+      // NOTE 1: the requested and computed response levels will differ in
+      // the AMV case.  While the previous computed response level could be
+      // used in the alpha calculation, the ratio of requested levels should
+      // be a more accurate predictor of the next linearized AMV MPP.
+      // NOTE 2: this projection could bypass the need for fnGradU with
+      // knowledge of the Lagrange multipliers at the previous MPP
+      // (u + lamba*grad_g = 0 or grad_g + lambda*u = 0).
+      Real norm_grad_u_sq = fnGradU.dot(fnGradU);
+      if ( norm_grad_u_sq > 1.e-10 ) { // also handles NPSOL numerical case
+	Real alpha = (requestedTargetLevel -
+          requestedRespLevels[respFnCount][levelCount-1])/norm_grad_u_sq;
+	for (size_t i=0; i<numUncertainVars; i++)
+	  initialPtU[i] = mostProbPointU[i] + alpha * fnGradU[i];
+      }
+      else
+	initialPtU = initialPtUSpec;//mostProbPointU: premature conv w/ some opt
+    }
+    else {
+      // For PMA case, scale mostProbPointU so that its magnitude equals
+      // the next beta_target.
+      // NOTE 1: use of computed levels instead of requested levels handles
+      // an RIA/PMA switch (the observed reliability from the RIA soln is
+      // scaled to the requested reliability of the next PMA level).
+      // NOTE 2: requested and computed reliability levels should agree very
+      // closely in all cases since it is the g term that is linearized, not the
+      // u'u term (which defines beta).  However, if the optimizer fails to
+      // satisfy the PMA constraint, then using the computed level is preferred.
+      //Real prev_pl = (levelCount == rl_len)
+      //  ? computedProbLevels[respFnCount][levelCount-1]
+      //  : requestedProbLevels[respFnCount][levelCount-rl_len-1];
+      size_t pl_len = requestedProbLevels[respFnCount].length(),
+	     bl_len = requestedRelLevels[respFnCount].length();
+      Real prev_bl = ( integrationOrder == 2 &&
+		       ( levelCount <  rl_len + pl_len ||
+			 levelCount >= rl_len + pl_len + bl_len ) ) ?
+	computedGenRelLevels[respFnCount][levelCount-1] :
+	computedRelLevels[respFnCount][levelCount-1];
+      // Note: scaling is applied to mppU, so we want best est of new beta.
+      // Don't allow excessive init pt scaling if secant Hessian updating.
+      Real high_tol = 1.e+3,
+	low_tol = ( ( taylorOrder == 2 || integrationOrder == 2 ) &&
+		    iteratedModel.hessian_type() == "quasi" ) ? 1.e-3 : 1.e-10;
+      if ( std::abs(prev_bl) > low_tol && std::abs(prev_bl) < high_tol &&
+	   std::abs(requestedTargetLevel) > low_tol &&
+	   std::abs(requestedTargetLevel) < high_tol ) {
+	// CDF or CCDF does not matter for scale_factor so long as it is
+	// consistent (CDF/CDF or CCDF/CCDF).
+	Real scale_factor = requestedTargetLevel / prev_bl;
+#ifdef DEBUG
+	Cout << "PMA warm start: previous = " << prev_bl
+	     << " current = " << requestedTargetLevel
+	     << " scale_factor = " << scale_factor << std::endl;
+#endif // DEBUG
+	for (size_t i=0; i<numUncertainVars; i++)
+	  initialPtU[i] = mostProbPointU[i] * scale_factor;
+      }
+      else
+	initialPtU = initialPtUSpec;//mostProbPointU: premature conv w/ some opt
+    }
+  }
+  else { // cold start: reset to mean inputs/outputs
+    // initial fnGradX/U for AMV/AMV+ = grads at mean x values, initial
+    // expansion point for AMV+ = mean x values.
+    if (mppSearchType < NO_APPROX) // AMV/AMV+/TANA
+      assign_mean_data();
+    // initial optimizer guess in u-space (initialPtU)
+    initialPtU = initialPtUSpec; // initialPtUSpec set in ctor
+  }
+}
+
+
+/** Includes case-specific logic for updating MPP search data for the
+    AMV/AMV+/TANA/NO_APPROX methods. */
+void NonDLocalReliability::
+update_mpp_search_data(const Variables& vars_star, const Response& resp_star)
+{
+  size_t rl_len = requestedRespLevels[respFnCount].length(),
+         pl_len = requestedProbLevels[respFnCount].length(),
+         bl_len = requestedRelLevels[respFnCount].length();
+  bool ria_flag = (levelCount < rl_len);
+  const RealVector&    mpp_u = vars_star.continuous_variables(); // view
+  const RealVector& fns_star = resp_star.function_values();
+
+  // Update MPP arrays from optimization results
+  Real conv_metric;
+  switch (mppSearchType) {
+  case AMV_PLUS_X: case AMV_PLUS_U: case TANA_X: case TANA_U:
+    RealVector del_u(numUncertainVars, false);
+    for (size_t i=0; i<numUncertainVars; i++)
+      del_u[i] = mpp_u[i] - mostProbPointU[i];
+    conv_metric = del_u.normFrobenius();
+    break;
+  }
+  copy_data(mpp_u, mostProbPointU); // view -> copy
+  natafTransform.trans_U_to_X(mostProbPointU, mostProbPointX);
+
+  // Set computedRespLevel to the current g(x) value by either performing
+  // a validation function evaluation (AMV/AMV+) or retrieving data from
+  // resp_star (FORM).  Also update approximations and convergence tols.
+  SizetMultiArrayConstView cv_ids = iteratedModel.continuous_variable_ids();
+  SizetArray x_dvv; copy_data(cv_ids, x_dvv);
+  switch (mppSearchType) {
+  case AMV_X: case AMV_U: {
+    approxConverged = true; // break out of while loop
+    uSpaceModel.component_parallel_mode(TRUTH_MODEL);
+    activeSet.request_values(0); activeSet.request_value(1, respFnCount);
+    iteratedModel.continuous_variables(mostProbPointX);
+    iteratedModel.compute_response(activeSet);
+    computedRespLevel
+      = iteratedModel.current_response().function_value(respFnCount);
+    break;
+  }
+  case AMV_PLUS_X: case AMV_PLUS_U: case TANA_X: case TANA_U: {
+    // Assess AMV+/TANA iteration convergence.  ||del_u|| is not a perfect
+    // metric since cycling between MPP estimates can occur.  Therefore,
+    // a maximum number of iterations is also enforced.
+    //conv_metric = std::fabs(fn_vals[respFnCount] - requestedRespLevel);
+    ++approxIters;
+    if (conv_metric < convergenceTol)
+      approxConverged = true;
+    else if (approxIters >= maxIterations) {
+      Cerr << "\nWarning: maximum number of limit state approximation cycles "
+	   << "exceeded.\n";
+      warningBits |= 1; // first warning in output summary
+      approxConverged = true;
+    }
+    // Update response data for local/multipoint MPP approximation
+    short mode = 1;
+    if (approxConverged) {
+      Cout << "\n>>>>> Approximate MPP iterations converged.  "
+	   << "Evaluating final response.\n";
+      // fnGradX/U needed for warm starting by projection, final_stat_grad,
+      // and/or 2nd-order integration.
+      const ShortArray& final_asv = finalStatistics.active_set_request_vector();
+      if ( warmStartFlag || ( final_asv[statCount] & 2 ) )
+	mode |= 2;
+      if (integrationOrder == 2) {
+	mode |= 4;
+	if (numUncertainVars != numNormalVars)
+	  mode |= 2; // fnGradX needed to transform fnHessX to fnHessU
+      }
+    }
+    else { // not converged
+      Cout << "\n>>>>> Updating approximation for MPP iteration "
+	   << approxIters+1 << "\n";
+      mode |= 2;            // update AMV+/TANA approximation
+      if (taylorOrder == 2) // update AMV^2+ approximation
+	mode |= 4;
+      if (warmStartFlag) // warm start initialPtU for next AMV+ iteration
+	initialPtU = mostProbPointU;
+    }
+    // evaluate new expansion point
+    uSpaceModel.component_parallel_mode(TRUTH_MODEL);
+    activeSet.request_values(0);
+    activeSet.request_value(mode, respFnCount);
+    iteratedModel.continuous_variables(mostProbPointX);
+    iteratedModel.compute_response(activeSet);
+    const Response& curr_resp = iteratedModel.current_response();
+    computedRespLevel = curr_resp.function_value(respFnCount);
+#ifdef MPP_CONVERGE_RATE
+    Cout << "u'u = "  << mostProbPointU.dot(mostProbPointU)
+	 << " G(u) = " << computedRespLevel << '\n';
+#endif // MPP_CONVERGE_RATE
+    if (mode & 2) {
+      fnGradX = curr_resp.function_gradient_copy(respFnCount);
+      natafTransform.trans_grad_X_to_U(fnGradX, fnGradU, mostProbPointX,
+				       x_dvv, cv_ids);
+    }
+    if (mode & 4) {
+      fnHessX = curr_resp.function_hessian(respFnCount);
+      natafTransform.trans_hess_X_to_U(fnHessX, fnHessU, mostProbPointX,
+				       fnGradX, x_dvv, cv_ids);
+      curvatureDataAvailable = true; kappaUpdated = false;
+    }
+
+    // Update the limit state surrogate model
+    update_limit_state_surrogate();
+
+    // Update pmaMaximizeG if 2nd-order PMA for specified p / beta* level
+    if ( !approxConverged && !ria_flag && integrationOrder == 2 )
+      update_pma_maximize(mostProbPointU, fnGradU, fnHessU);
+
+    break;
+  }
+  case NO_APPROX: { // FORM/SORM
+
+    // direct optimization converges to MPP: no new approximation to compute
+    approxConverged = true; // break out of while loop
+    if (ria_flag) // RIA computed response = eq_con_star + response target
+      computedRespLevel = fns_star[1] + requestedTargetLevel;
+    else          // PMA computed response = +/- obj_fn_star
+      computedRespLevel = (pmaMaximizeG) ? -fns_star[0] : fns_star[0];
+
+    // fnGradX/U needed for warm starting by projection, final_stat_grad, and/or
+    // 2nd-order integration (for nonlinear transformations), and should be
+    // retrievable from previous evals.  If second-order integration for RIA,
+    // fnHessX/U also needed, but not retrievable.  If second-order PMA with
+    // specified p-level, Hessian should be retrievable since it was computed
+    // during the update of requestedCDFRelLevel from requestedCDFProbLevel.
+    // When data should be retrievable, we cannot in general assume that the
+    // last grad/Hessian eval corresponds to the converged MPP; therefore, we
+    // use a DB search.  If the DB search fails (e.g., the eval cache is
+    // deactivated), then we resort to reevaluation.
+    short mode = 0, found_mode = 0; // computedRespLevel already retrieved
+    const ShortArray& final_asv = finalStatistics.active_set_request_vector();
+    if ( warmStartFlag || ( final_asv[statCount] & 2 ) )
+      mode |= 2;
+    if ( integrationOrder == 2 ) {// apply 2nd-order integr in all RIA/PMA cases
+      mode |= 4;
+      if (numUncertainVars != numNormalVars)
+	mode |= 2; // fnGradX needed to transform fnHessX to fnHessU
+    }
+
+    // retrieve previously evaluated gradient information, if possible
+    if (mode & 2) { // avail in all RIA/PMA cases (exception: numerical grads)
+      // query data_pairs to retrieve the fn gradient at the MPP
+      Variables search_vars = iteratedModel.current_variables().copy();
+      search_vars.continuous_variables(mostProbPointX);
+      ActiveSet search_set = resp_star.active_set();
+      ShortArray search_asv(numFunctions, 0);
+      search_asv[respFnCount] = 2;
+      search_set.request_vector(search_asv);
+      PRPCacheHIter cache_it = lookup_by_val(data_pairs,
+	iteratedModel.interface_id(), search_vars, search_set);
+      if (cache_it != data_pairs.get<hashed>().end()) {
+	fnGradX = cache_it->response().function_gradient_copy(respFnCount);
+	found_mode |= 2;
+      }
+    }
+    // retrieve previously evaluated Hessian information, if possible
+    // > RIA and std PMA beta-level: Hessian not avail since not yet evaluated
+    // > PMA p-level and generalized beta-level: Hessian should be available
+    if ( ( mode & 4 ) && !ria_flag &&
+	 ( levelCount <  rl_len + pl_len ||
+	   levelCount >= rl_len + pl_len + bl_len ) ) {
+      // query data_pairs to retrieve the fn Hessian at the MPP
+      Variables search_vars = iteratedModel.current_variables().copy();
+      search_vars.continuous_variables(mostProbPointX);
+      ActiveSet search_set = resp_star.active_set();
+      ShortArray search_asv(numFunctions, 0);
+      search_asv[respFnCount] = 4;
+      search_set.request_vector(search_asv);
+      PRPCacheHIter cache_it = lookup_by_val(data_pairs,
+	iteratedModel.interface_id(), search_vars, search_set);
+      if (cache_it != data_pairs.get<hashed>().end()) {
+        fnHessX = cache_it->response().function_hessian(respFnCount);
+	found_mode |= 4;
+      }
+    }
+    // evaluate any remaining required data which could not be retrieved
+    short remaining_mode = mode - found_mode;
+    if (remaining_mode) {
+      Cout << "\n>>>>> Evaluating limit state derivatives at MPP\n";
+      iteratedModel.continuous_variables(mostProbPointX);
+      activeSet.request_values(0);
+      activeSet.request_value(remaining_mode, respFnCount);
+      iteratedModel.compute_response(activeSet);
+      const Response& curr_resp = iteratedModel.current_response();
+      if (remaining_mode & 2)
+	fnGradX = curr_resp.function_gradient_copy(respFnCount);
+      if (remaining_mode & 4)
+        fnHessX = curr_resp.function_hessian(respFnCount);
+    }
+    if (mode & 2)
+      natafTransform.trans_grad_X_to_U(fnGradX, fnGradU, mostProbPointX,
+				       x_dvv, cv_ids);
+    if (mode & 4) {
+      natafTransform.trans_hess_X_to_U(fnHessX, fnHessU, mostProbPointX,
+				       fnGradX, x_dvv, cv_ids);
+      curvatureDataAvailable = true; kappaUpdated = false;
+    }
+    break;
+  }
+  }
+
+  // set computedRelLevel using u'u from fns_star; must follow fnGradU update
+  if (ria_flag)
+    computedRelLevel = signed_norm(std::sqrt(fns_star[0]));
+  else if (integrationOrder == 2) { // second-order PMA
+    // no op: computed{Rel,GenRel}Level updated in PMA2_constraint_eval()
+  }
+  else { // first-order PMA
+    Real norm_u_sq = fns_star[1] + std::pow(requestedTargetLevel, 2);
+    computedRelLevel = signed_norm(std::sqrt(norm_u_sq));
+  }
+}
+
+
+/** Updates computedRespLevels/computedProbLevels/computedRelLevels,
+    finalStatistics, warm start, and graphics data. */
+void NonDLocalReliability::update_level_data()
+{
+  // local reliability data aren't output to tabular, so send directly
+  // to graphics window only
+  Graphics& dakota_graphics = parallelLib.output_manager().graphics();
+
+  bool ria_flag = (levelCount < requestedRespLevels[respFnCount].length());
+
+  // Update computed Resp/Prob/Rel/GenRel levels arrays.  finalStatistics
+  // is updated within update_final_statistics() for all resp fns & levels.
+  computedRespLevels[respFnCount][levelCount] = computedRespLevel;
+  computedRelLevels[respFnCount][levelCount]  = computedRelLevel;
+  Real computed_prob_level;
+  if (!ria_flag && integrationOrder == 2) {
+    computedGenRelLevels[respFnCount][levelCount] = computedGenRelLevel;
+    computedProbLevels[respFnCount][levelCount] = computed_prob_level =
+      probability(computedGenRelLevel);
+  }
+  else {
+    computedProbLevels[respFnCount][levelCount] = computed_prob_level =
+      probability(computedRelLevel, cdfFlag, mostProbPointU, fnGradU, fnHessU);
+    computedGenRelLevels[respFnCount][levelCount] = computedGenRelLevel =
+      reliability(computed_prob_level);
+  }
+
+  // Final statistic gradients are dz/ds, dbeta/ds, or dp/ds
+  const ShortArray& final_asv = finalStatistics.active_set_request_vector();
+  bool system_grad_contrib = false;
+  if (respLevelTargetReduce &&
+      levelCount < requestedRespLevels[respFnCount].length()) {
+    size_t sys_stat_count = 2*numFunctions + totalLevelRequests + levelCount;
+    if (final_asv[sys_stat_count] & 2)
+      system_grad_contrib = true;
+  }
+  if ( (final_asv[statCount] & 2) || system_grad_contrib ) {
+
+    // evaluate dg/ds at the MPP and store in final_stat_grad
+    RealVector final_stat_grad;
+    dg_ds_eval(mostProbPointX, fnGradX, final_stat_grad);
+
+    // for warm-starting next run
+    if (warmStartFlag && subIteratorFlag && levelCount == 0)
+      Teuchos::setCol(final_stat_grad, respFnCount, prevFnGradDLev0);
+
+    // RIA: sensitivity of beta/p/beta* w.r.t. inactive variables
+    //   dbeta/ds     = 1/norm_grad_u * dg/ds       (first-order)
+    //   dp/ds        = -phi(-beta) * dbeta/ds      (first-order)
+    //   dp_2/ds      = [Phi(-beta_corr)*sum - phi(-beta_corr)*prod] * dbeta/ds
+    //                                              (second-order)
+    //   dbeta*/ds    = -1/phi(-beta*) * dp_2/ds    (second-order)
+    // PMA: sensitivity of g function w.r.t. inactive variables
+    //   dz/ds        = dg/ds
+    if (ria_flag) {
+      // beta_cdf = -beta_ccdf, p_cdf = 1. - p_ccdf
+      // -->> dbeta_cdf/ds = -dbeta_ccdf/ds, dp_cdf/ds = -dp_ccdf/ds
+      Real norm_grad_u = fnGradU.normFrobenius();
+      // factor for first-order dbeta/ds:
+      Real factor = (cdfFlag) ? 1./norm_grad_u : -1./norm_grad_u;
+      if (integrationOrder == 2 && respLevelTarget != RELIABILITIES) {
+	factor *= dp2_dbeta_factor(computedRelLevel, cdfFlag);
+	// factor for second-order dbeta*/ds
+	if (respLevelTarget == GEN_RELIABILITIES)
+	  factor *= -1. / Pecos::phi(-computedGenRelLevel);
+      }
+      else if (respLevelTarget == PROBABILITIES) // factor for first-order dp/ds
+	factor *= -Pecos::phi(-computedRelLevel);
+
+      // apply factor:
+      size_t i, num_final_grad_vars
+	= finalStatistics.active_set_derivative_vector().size();
+      for (i=0; i<num_final_grad_vars; ++i)
+	final_stat_grad[i] *= factor;
+    }
+    finalStatistics.function_gradient(final_stat_grad, statCount);
+  }
+
+  // Update warm-start data and graphics
+  if (warmStartFlag && subIteratorFlag && levelCount == 0) {
+    // for warm-starting next run
+    prevMPPULev0[respFnCount] = mostProbPointU;
+    prevCumASVLev0[respFnCount] |= final_asv[statCount];
+    for (size_t i=0; i<numUncertainVars; i++)
+      prevFnGradULev0(i,respFnCount) = fnGradU[i];
+  }
+  if (!subIteratorFlag) {
+    dakota_graphics.add_datapoint(respFnCount, computedRespLevel,
+				  computed_prob_level);
+    for (size_t i=0; i<numUncertainVars; i++) {
+      dakota_graphics.add_datapoint(numFunctions+i, computedRespLevel,
+				    mostProbPointX[i]);
+      if (numFunctions > 1 && respFnCount < numFunctions-1 &&
+	  levelCount == requestedRespLevels[respFnCount].length() +
+	                requestedProbLevels[respFnCount].length() +
+	                requestedRelLevels[respFnCount].length() +
+	                requestedGenRelLevels[respFnCount].length() - 1)
+	dakota_graphics.new_dataset(numFunctions+i);
+    }
+  }
+}
+
+
+void NonDLocalReliability::update_limit_state_surrogate()
+{
+  bool x_space = (mppSearchType ==  AMV_X || mppSearchType == AMV_PLUS_X ||
+		  mppSearchType == TANA_X);
+
+  // construct local Variables object
+  Variables mpp_vars(iteratedModel.current_variables().shared_data());
+  if (x_space) mpp_vars.continuous_variables(mostProbPointX);
+  else         mpp_vars.continuous_variables(mostProbPointU);
+
+  // construct Response object
+  ShortArray asv(numFunctions, 0);
+  asv[respFnCount] = (taylorOrder == 2) ? 7 : 3;
+  ActiveSet set;//(numFunctions, numUncertainVars);
+  set.request_vector(asv);
+  set.derivative_vector(iteratedModel.continuous_variable_ids());
+  Response response(SIMULATION_RESPONSE, set);
+  response.function_value(computedRespLevel, respFnCount);
+  if (x_space) {
+    response.function_gradient(fnGradX, respFnCount);
+    if (taylorOrder == 2)
+      response.function_hessian(fnHessX, respFnCount);
+  }
+  else {
+    response.function_gradient(fnGradU, respFnCount);
+    if (taylorOrder == 2)
+      response.function_hessian(fnHessU, respFnCount);
+  }
+  IntResponsePair response_pr(0, response); // dummy eval id
+
+  // After a design variable change, history data (e.g., TANA) needs
+  // to be cleared (build_approximation() only calls clear_current())
+  if (numRelAnalyses && levelCount == 0)
+    uSpaceModel.approximations()[respFnCount].clear_all();
+  // build the new local/multipoint approximation
+  uSpaceModel.build_approximation(mpp_vars, response_pr);
+}
+
+
+void NonDLocalReliability::
+update_pma_maximize(const RealVector& mpp_u, const RealVector& fn_grad_u,
+		    const RealSymMatrix& fn_hess_u)
+{
+  Real p_cdf; bool update = false;
+  size_t rl_len  = requestedRespLevels[respFnCount].length(),
+    rl_pl_len    = rl_len + requestedProbLevels[respFnCount].length(),
+    rl_pl_bl_len = rl_pl_len + requestedRelLevels[respFnCount].length();
+  if (levelCount <  rl_pl_len) {
+    Real p = requestedProbLevels[respFnCount][levelCount-rl_len];
+    p_cdf = (cdfFlag) ? p : 1. - p;
+    update = true;
+  }
+  else if (levelCount >= rl_pl_bl_len) {
+    Real gen_beta = requestedGenRelLevels[respFnCount][levelCount-rl_pl_bl_len];
+    Real gen_beta_cdf = (cdfFlag) ? gen_beta : -gen_beta;
+    p_cdf = probability(gen_beta_cdf);
+    update = true;
+  }
+  if (update) {
+    Real beta_cdf = reliability(p_cdf, true, mpp_u, fn_grad_u, fn_hess_u);
+    pmaMaximizeG = (beta_cdf < 0.);
+  }
+}
+
+
+void NonDLocalReliability::assign_mean_data()
+{
+  const Pecos::RealVector& x_means = natafTransform.x_means();
+  mostProbPointX = x_means;
+  mostProbPointU = ranVarMeansU;
+  computedRespLevel = fnValsMeanX(respFnCount);
+  for (size_t i=0; i<numUncertainVars; i++)
+    fnGradX[i] = fnGradsMeanX(i,respFnCount);
+  SizetMultiArrayConstView cv_ids = iteratedModel.continuous_variable_ids();
+  SizetArray x_dvv; copy_data(cv_ids, x_dvv);
+  natafTransform.trans_grad_X_to_U(fnGradX, fnGradU, x_means, x_dvv, cv_ids);
+  if (taylorOrder == 2 && iteratedModel.hessian_type() != "quasi") {
+    fnHessX = fnHessiansMeanX[respFnCount];
+    natafTransform.trans_hess_X_to_U(fnHessX, fnHessU, x_means, fnGradX,
+				     x_dvv, cv_ids);
+    curvatureDataAvailable = true; kappaUpdated = false;
+  }
+}
+
+
+/** This function recasts a G(u) response set (already transformed and
+    approximated in other recursions) into an RIA objective function. */
+void NonDLocalReliability::
+RIA_objective_eval(const Variables& sub_model_vars,
+		   const Variables& recast_vars,
+		   const Response& sub_model_response,
+		   Response& recast_response)
+{
+  // ----------------------------------------
+  // The RIA objective function is (norm u)^2
+  // ----------------------------------------
+
+  short       asv_val = recast_response.active_set_request_vector()[0];
+  const RealVector& u = recast_vars.continuous_variables();
+  size_t i, num_vars = u.length();
+  if (asv_val & 1) {
+    Real f = 0.;
+    for (i=0; i<num_vars; i++)
+      f += std::pow(u[i], 2); // f = u'u
+    recast_response.function_value(f, 0);
+  }
+  if (asv_val & 2) {
+    RealVector grad_f = recast_response.function_gradient_view(0);
+    for (i=0; i<num_vars; ++i)
+      grad_f[i] = 2.*u[i]; // grad f = 2u
+  }
+  if (asv_val & 4) {
+    RealSymMatrix hess_f = recast_response.function_hessian_view(0);
+    hess_f = 0.;
+    for (i=0; i<num_vars; i++)
+      hess_f(i,i) = 2.; // hess f = 2's on diagonal
+  }
+
+  // Using f = norm u is a poor choice, since grad f is undefined at u = 0.
+  //Real sqrt_sum_sq = std::sqrt(sum_sq);
+  //if (sqrt_sum_sq > 0.)
+  //  grad_f[i] = u[i]/sqrt_sum_sq;
+  //else // gradient undefined at origin, use 0. to keep optimizer happy
+  //  grad_f[i] = 0.;
+}
+
+
+/** This function recasts a G(u) response set (already transformed and
+    approximated in other recursions) into an RIA equality constraint. */
+void NonDLocalReliability::
+RIA_constraint_eval(const Variables& sub_model_vars,
+		    const Variables& recast_vars,
+		    const Response& sub_model_response,
+		    Response& recast_response)
+{
+  // --------------------------------------------------------
+  // The RIA equality constraint is G(u) - response level = 0
+  // --------------------------------------------------------
+
+  short asv_val = recast_response.active_set_request_vector()[1];
+  int   resp_fn = nondLocRelInstance->respFnCount;
+  if (asv_val & 1) {
+    const Real& sub_model_fn = sub_model_response.function_value(resp_fn);
+    recast_response.function_value(
+      sub_model_fn - nondLocRelInstance->requestedTargetLevel, 1);
+  }
+  if (asv_val & 2) // dG/du: no additional transformation needed
+    recast_response.function_gradient(
+      sub_model_response.function_gradient_view(resp_fn), 1);
+  if (asv_val & 4) // d^2G/du^2: no additional transformation needed
+    recast_response.function_hessian(
+      sub_model_response.function_hessian(resp_fn), 1);
+}
+
+
+/** This function recasts a G(u) response set (already transformed and
+    approximated in other recursions) into an PMA objective function. */
+void NonDLocalReliability::
+PMA_objective_eval(const Variables& sub_model_vars,
+		   const Variables& recast_vars,
+		   const Response& sub_model_response,
+		   Response& recast_response)
+{
+  // ----------------------------------
+  // The PMA objective function is G(u)
+  // ----------------------------------
+
+  int   resp_fn    = nondLocRelInstance->respFnCount;
+  short sm_asv_val = sub_model_response.active_set_request_vector()[resp_fn];
+  Real fn; RealVector fn_grad_u; RealSymMatrix fn_hess_u;
+  if (sm_asv_val & 2)
+    fn_grad_u = sub_model_response.function_gradient_view(resp_fn);
+  if (sm_asv_val & 4)
+    fn_hess_u = sub_model_response.function_hessian_view(resp_fn);
+
+  // Due to RecastModel, objective_eval always called before constraint_eval,
+  // so perform NO_APPROX updates here.
+  if (nondLocRelInstance->mppSearchType == NO_APPROX &&
+      nondLocRelInstance->integrationOrder == 2) {
+    nondLocRelInstance->curvatureDataAvailable = true;
+    nondLocRelInstance->kappaUpdated = false; // new fn_{grad,hess}_u data
+    nondLocRelInstance->update_pma_maximize(recast_vars.continuous_variables(),
+					    fn_grad_u, fn_hess_u);
+  }
+
+  short asv_val = recast_response.active_set_request_vector()[0];
+  bool  pma_max = nondLocRelInstance->pmaMaximizeG;
+  if (asv_val & 1) {
+    fn = sub_model_response.function_value(resp_fn);
+    if (pma_max) recast_response.function_value(-fn, 0);
+    else         recast_response.function_value( fn, 0);
+  }
+  if (asv_val & 2) { // dG/du: no additional transformation needed
+    if (pma_max) {
+      RealVector recast_grad = recast_response.function_gradient_view(0);
+      size_t i, num_vars = fn_grad_u.length();
+      for (i=0; i<num_vars; ++i)
+	recast_grad[i] = -fn_grad_u[i];
+    }
+    else
+      recast_response.function_gradient(fn_grad_u, 0);
+  }
+  if (asv_val & 4) { // d^2G/du^2: no additional transformation needed
+    if (pma_max) {
+      RealSymMatrix recast_hess	= recast_response.function_hessian_view(0);
+      size_t i, j, num_vars = fn_hess_u.numRows();
+      for (i=0; i<num_vars; ++i)
+	for (j=0; j<=i; ++j)
+	  recast_hess(i,j) = -fn_hess_u(i,j);
+    }
+    else
+      recast_response.function_hessian(fn_hess_u, 0);
+  }
+
+#ifdef DEBUG
+  if (asv_val & 1)
+    Cout << "PMA_objective_eval(): sub-model function = " << fn << std::endl;
+  if (asv_val & 2) { // dG/du: no additional transformation needed
+    Cout << "PMA_objective_eval(): sub-model gradient:\n";
+    write_data(Cout, fn_grad_u);
+  }
+  if (asv_val & 4) { // d^2G/du^2: no additional transformation needed
+    Cout << "PMA_objective_eval(): sub-model Hessian:\n";
+    write_data(Cout, fn_hess_u, true, true, true);
+  }
+#endif // DEBUG
+}
+
+
+/** This function recasts a G(u) response set (already transformed and
+    approximated in other recursions) into a first-order PMA equality
+    constraint on reliability index beta. */
+void NonDLocalReliability::
+PMA_constraint_eval(const Variables& sub_model_vars,
+		    const Variables& recast_vars,
+		    const Response& sub_model_response,
+		    Response& recast_response)
+{
+  // ------------------------------------------------------
+  // The PMA equality constraint is (norm u)^2 - beta^2 = 0
+  // ------------------------------------------------------
+
+  short       asv_val = recast_response.active_set_request_vector()[1];
+  const RealVector& u = recast_vars.continuous_variables();
+  size_t i, num_vars = u.length();
+  if (asv_val & 1) {
+    // calculate the reliability index (beta)
+    Real beta_sq = 0.;
+    for (i=0; i<num_vars; ++i)
+      beta_sq += std::pow(u[i], 2); //use beta^2 to avoid singular grad @ origin
+    // calculate the equality constraint: u'u - beta_target^2
+    Real c = beta_sq - std::pow(nondLocRelInstance->requestedTargetLevel, 2);
+    recast_response.function_value(c, 1);
+  }
+  if (asv_val & 2) {
+    RealVector grad_f = recast_response.function_gradient_view(1);
+    for (i=0; i<num_vars; ++i)
+      grad_f[i] = 2.*u[i]; // grad f = 2u
+  }
+  if (asv_val & 4) {
+    RealSymMatrix hess_f = recast_response.function_hessian_view(1);
+    hess_f = 0.;
+    for (i=0; i<num_vars; i++)
+      hess_f(i,i) = 2.; // hess f = 2's on diagonal
+  }
+}
+
+
+/** This function recasts a G(u) response set (already transformed and
+    approximated in other recursions) into a second-order PMA equality
+    constraint on generalized reliability index beta-star. */
+void NonDLocalReliability::
+PMA2_constraint_eval(const Variables& sub_model_vars,
+		     const Variables& recast_vars,
+		     const Response& sub_model_response,
+		     Response& recast_response)
+{
+  // -----------------------------------------------------
+  // The PMA SORM equality constraint is beta* = beta*-bar
+  // -----------------------------------------------------
+
+  const RealVector& u = recast_vars.continuous_variables();
+  short    asv_val = recast_response.active_set_request_vector()[1];
+  int      resp_fn = nondLocRelInstance->respFnCount;
+  short sm_asv_val = sub_model_response.active_set_request_vector()[resp_fn];
+  bool         cdf = nondLocRelInstance->cdfFlag;
+
+  // Calculate beta --> p --> beta*.  Use up-to-date mpp/grad/Hessian info,
+  // including surrogate-based data, within signed_norm(), but disallow
+  // surrogate-based curvature corrections due to their sensitivity.  The
+  // presence of fn_grad_u/fn_hess_u data is enforced in PMA2_set_mapping().
+  RealVector fn_grad_u = sub_model_response.function_gradient_view(resp_fn);
+  Real comp_rel = nondLocRelInstance->computedRelLevel =
+    nondLocRelInstance->signed_norm(u, fn_grad_u, cdf);
+  // Don't update curvature correction when nonlinear transformation
+  // induces additional curvature on top of a low-order approximation.
+  // Note: if linear transformation or u-space AMV^2+, then Hessian is
+  // consistent with the previous truth and is constant over the surrogate.
+  Real computed_prob_level = (nondLocRelInstance->mppSearchType == NO_APPROX) ?
+    nondLocRelInstance->probability(comp_rel, cdf, u, fn_grad_u,
+      sub_model_response.function_hessian(resp_fn)) :
+    nondLocRelInstance->probability(comp_rel, cdf,
+      nondLocRelInstance->mostProbPointU, nondLocRelInstance->fnGradU,
+      nondLocRelInstance->fnHessU);
+  Real comp_gen_rel = nondLocRelInstance->computedGenRelLevel =
+    nondLocRelInstance->reliability(computed_prob_level);
+
+  if (asv_val & 1) { // calculate the equality constraint: beta* - bar-beta*
+    Real c = comp_gen_rel - nondLocRelInstance->requestedTargetLevel;
+#ifdef DEBUG
+    Cout << "In PMA2_constraint_eval, beta* = " << comp_gen_rel
+	 << " bar-beta* = " << nondLocRelInstance->requestedTargetLevel
+	 << " eq constr = " << c << std::endl;
+#endif
+    recast_response.function_value(c, 1);
+  }
+  if (asv_val & 2) {
+    // Note: for second-order integrations, beta* is a function of p and
+    // kappa(u).  dbeta*/du involves dkappa/du, but these terms are neglected
+    // as in dbeta*/ds (design sensitivities).
+    //   dbeta/du_i  = u_i/beta (in factor below)
+    //   dp_2/du_i   = [Phi(-beta_corr)*sum - phi(-beta_corr)*prod] * dbeta/du_i
+    //                 (term in brackets computed in dp2_dbeta_factor())
+    //   dbeta*/du_i = -1/phi(-beta*) * dp_2/du (in factor below)
+    Real factor = -nondLocRelInstance->dp2_dbeta_factor(comp_rel, cdf)
+                / comp_rel / Pecos::phi(-comp_gen_rel);
+    size_t i, num_vars = u.length();
+    RealVector grad_f = recast_response.function_gradient_view(1);
+    for (i=0; i<num_vars; ++i)
+      grad_f[i] = factor * u[i];
+#ifdef DEBUG
+    Cout << "In PMA2_constraint_eval, gradient of beta*:\n";
+    write_data(Cout, grad_f);
+#endif
+  }
+  if (asv_val & 4) {
+    Cerr << "Error: Hessian data not supported in NonDLocalReliability::"
+	 << "PMA2_constraint_eval()" << std::endl;
+    abort_handler(-1);
+    /*
+    RealSymMatrix hess_f = recast_response.function_hessian_view(1);
+    hess_f = 0.;
+    for (i=0; i<num_vars; i++)
+      hess_f(i,i) = ;
+    */
+  }
+}
+
+
+void NonDLocalReliability::
+PMA2_set_mapping(const Variables& recast_vars, const ActiveSet& recast_set,
+		 ActiveSet& sub_model_set)
+{
+  // if the constraint value/grad is requested for second-order PMA, then
+  // the sub-model response grad/Hessian are required to update beta*
+  short recast_request = recast_set.request_vector()[1];
+  if (recast_request & 3) { // value/grad request share beta-->p-->beta* calcs
+    int   sm_index          = nondLocRelInstance->respFnCount;
+    short sub_model_request = sub_model_set.request_value(sm_index);
+
+    // all cases require latest fn_grad_u (either truth-based or approx-based)
+    sub_model_request |= 2;
+    // PMA SORM requires latest fn_hess_u (truth-based)
+    if (nondLocRelInstance->mppSearchType == NO_APPROX)
+      sub_model_request |= 4;
+    // else value/grad request utilizes most recent truth fnGradU/fnHessU
+
+    sub_model_set.request_value(sub_model_request, sm_index);
+  }
+}
+
+
+/** Computes dg/ds where s = design variables.  Supports potentially
+    overlapping cases of design variable augmentation and insertion. */
+void NonDLocalReliability::
+dg_ds_eval(const RealVector& x_vars, const RealVector& fn_grad_x,
+	   RealVector& final_stat_grad)
+{
+  const SizetArray& final_dvv = finalStatistics.active_set_derivative_vector();
+  size_t i, num_final_grad_vars = final_dvv.size();
+  if (final_stat_grad.empty())
+    final_stat_grad.resize(num_final_grad_vars);
+
+  // For design vars that are distribution parameters of the uncertain vars,
+  // dg/ds = dg/dx * dx/ds where dx/ds is the design Jacobian.  Since dg/dx is
+  // already available (passed in as fn_grad_x), these sensitivities do not
+  // require additional response evaluations.
+  bool dist_param_deriv = false;
+  size_t num_outer_cv = secondaryACVarMapTargets.size();
+  for (i=0; i<num_outer_cv; i++)
+    if (secondaryACVarMapTargets[i] != Pecos::NO_TARGET) // dist param insertion
+      { dist_param_deriv = true; break; }
+  if (dist_param_deriv) {
+    SizetMultiArrayConstView cv_ids = iteratedModel.continuous_variable_ids();
+    SizetArray x_dvv; copy_data(cv_ids, x_dvv);
+    SizetMultiArrayConstView acv_ids
+      = iteratedModel.all_continuous_variable_ids();
+    RealVector fn_grad_s(num_final_grad_vars, false);
+    natafTransform.trans_grad_X_to_S(fn_grad_x, fn_grad_s, x_vars, x_dvv,
+				     cv_ids, acv_ids, primaryACVarMapIndices,
+				     secondaryACVarMapTargets);
+    final_stat_grad = fn_grad_s;
+  }
+
+  // For design vars that are separate from the uncertain vars, perform a new
+  // fn eval for dg/ds, where s = inactive/design vars.  This eval must be
+  // performed at (s, x_vars) for each response fn for each level as
+  // required by final_asv.  RBDO typically specifies one level for 1 or
+  // more limit states, so the number of additional evals will usually be small.
+  if (secondaryACVarMapTargets.empty() ||
+      contains(secondaryACVarMapTargets, Pecos::NO_TARGET)) {
+    Cout << "\n>>>>> Evaluating sensitivity with respect to augmented inactive "
+	 << "variables\n";
+    if (mppSearchType && mppSearchType < NO_APPROX)
+      uSpaceModel.component_parallel_mode(TRUTH_MODEL);
+    iteratedModel.continuous_variables(x_vars);
+    ActiveSet inactive_grad_set = activeSet;
+    inactive_grad_set.request_values(0);
+    inactive_grad_set.request_value(2, respFnCount);
+    // final_dvv is mapped from the top-level DVV in NestedModel::set_mapping()
+    // and includes augmented and inserted variable ids.  Since we only want the
+    // augmented ids in this case, the UQ-level inactive ids are sufficient.
+    SizetMultiArrayConstView icv_ids
+      = iteratedModel.inactive_continuous_variable_ids();
+    inactive_grad_set.derivative_vector(icv_ids);
+    /* More rigorous with reqd deriv vars, but equivalent in practice:
+    // Filter final_dvv to contain only inactive continuous variable ids:
+    SizetArray filtered_final_dvv;
+    for (i=0; i<num_final_grad_vars; i++) {
+      size_t final_dvv_i = final_dvv[i];
+      if (contains(icv_ids, final_dvv_i))
+	filtered_final_dvv.push_back(final_dvv_i);
+    }
+    inactive_grad_set.derivative_vector(filtered_final_dvv);
+    */
+    iteratedModel.compute_response(inactive_grad_set);
+    const Response& curr_resp = iteratedModel.current_response();
+    if (secondaryACVarMapTargets.empty())
+      final_stat_grad = curr_resp.function_gradient_copy(respFnCount);
+    else {
+      const RealMatrix& fn_grads = curr_resp.function_gradients();
+      size_t cntr = 0;
+      for (i=0; i<num_final_grad_vars; i++)
+	if (secondaryACVarMapTargets[i] == Pecos::NO_TARGET)
+	  final_stat_grad[i] = fn_grads(cntr++, respFnCount);
+    }
+  }
+}
+
+
+Real NonDLocalReliability::
+signed_norm(Real norm_mpp_u, const RealVector& mpp_u,
+	    const RealVector& fn_grad_u, bool cdf_flag)
+{
+  // z>median: CDF p(g<=z)>0.5, CDF beta<0, CCDF p(g>z)<0.5, CCDF beta>0
+  // z<median: CDF p(g<=z)<0.5, CDF beta>0, CCDF p(g>z)>0.5, CCDF beta<0
+  // z=median: CDF p(g<=z) = CCDF p(g>z) = 0.5, CDF beta = CCDF beta = 0
+  //Real beta_cdf = (computedRespLevel > medianFnVals[respFnCount])
+  //              ? -std::sqrt(norm_u_sq) : std::sqrt(norm_u_sq);
+
+  // This approach avoids the need to evaluate medianFnVals.  Thanks to
+  // Barron Bichon for suggesting it.
+  // if <mppU, fnGradU> > 0, then G is increasing along u and G(u*) > G(0)
+  // if <mppU, fnGradU> < 0, then G is decreasing along u and G(u*) < G(0)
+  Real beta_cdf = (mpp_u.dot(fn_grad_u) > 0.) ? -norm_mpp_u : norm_mpp_u;
+#ifdef DEBUG
+  Cout << "\nSign of <mppU, fnGradU> is ";
+  if (mpp_u.dot(fn_grad_u) > 0.) Cout << " 1.\n\n";
+  else                           Cout << "-1.\n\n";
+#endif
+  return (cdf_flag) ? beta_cdf : -beta_cdf;
+}
+
+
+/** Converts beta into a probability using either first-order (FORM) or
+    second-order (SORM) integration.  The SORM calculation first calculates
+    the principal curvatures at the MPP (using the approach in Ch. 8 of
+    Haldar & Mahadevan), and then applies correction formulations from the
+    literature (Breitung, Hohenbichler-Rackwitz, or Hong). */
+Real NonDLocalReliability::
+probability(Real beta, bool cdf_flag, const RealVector& mpp_u,
+	    const RealVector& fn_grad_u, const RealSymMatrix& fn_hess_u)
+{
+  Real p = probability(beta); // FORM approximation
+  int wpp7;
+  if (outputLevel > NORMAL_OUTPUT) {
+    wpp7 = write_precision+7;
+    Cout << "Probability:"// << " beta = " << beta
+	 << " first-order = " << std::setw(wpp7) << p;
+  }
+
+  if (integrationOrder == 2 && curvatureDataAvailable) {
+
+    if (!kappaUpdated) {
+      principal_curvatures(mpp_u, fn_grad_u, fn_hess_u, kappaU);
+      kappaUpdated = true;
+    }
+
+    // The correction to p is applied for beta >= 0 (FORM p <= 0.5).
+    // For beta < 0, apply correction to complementary problem (Tvedt 1990).
+    //   > beta changes sign
+    //   > p becomes complement
+    //   > principal curvature sign convention defined for CDF beta > 0
+    //     (negate for CDF beta < 0 or CCDF beta > 0, OK for CCDF beta < 0)
+    Real beta_corr = std::abs(beta);
+    Real p_corr    = (beta >= 0.) ? p : 1. - p;
+    RealVector kappa; scale_curvature(beta, cdf_flag, kappaU, kappa);
+
+    // Test for numerical exceptions in sqrt.  Problematic kappa are large and
+    // negative (kterm is always positive).  Skipping individual kappa means
+    // neglecting a primary curvature and including secondary curvatures, which
+    // may be counter-productive (potentially less accurate than FORM).
+    // Therefore, the entire correction is skipped if any curvature is
+    // problematic.  A consistent approach must be used in reliability().
+    bool apply_correction = true;
+    Real psi_m_beta;
+    if (secondOrderIntType != BREITUNG)
+      psi_m_beta = Pecos::phi(-beta_corr) / Pecos::Phi(-beta_corr);
+    Real kterm = (secondOrderIntType == BREITUNG) ? beta_corr : psi_m_beta;
+    int i, num_kappa = numUncertainVars - 1;
+    for (i=0; i<num_kappa; i++) {
+      //Cout << "1 + kterm*kappa = " << 1. + kterm * kappa[i] << std::endl;
+      // Numerical exception happens for 1+ktk <= 0., but inaccuracy can happen
+      // earlier.  Empirical evidence to date suggests a threshold of 0.5
+      // (1/std::sqrt(0.5) = 1.414 multiplier = 41.4% increase in p.
+      if (1. + kterm * kappa[i] <= curvatureThresh)
+	apply_correction = false;
+    }
+
+    if (apply_correction) {
+      // compute SORM estimate (Breitung, Hohenbichler-Rackwitz, or Hong).
+      Real C1 = 0., ktk;
+      for (i=0; i<num_kappa; i++) {
+	// Breitung 1984:              p_corr /= std::sqrt(1+beta_corr*kappa)
+	// Hohenbichler-Rackwitz 1988: p_corr /= std::sqrt(1+psi_m_beta*kappa)
+	// > Note that psi(-beta) -> beta as beta increases: HR -> Breitung
+	// Hong 1999, P3 formulation:  p_corr =  C1 * p_HR
+	ktk = kterm * kappa[i];
+	p_corr /= std::sqrt(1. + ktk);
+	if (secondOrderIntType == HONG) {
+	  Real hterm = num_kappa * kappa[i] / 2. / (1. + ktk);
+	  C1 += Pecos::Phi(-beta_corr-hterm) / Pecos::Phi(-beta_corr)
+	     *  exp(psi_m_beta*hterm);
+	}
+      }
+      if (secondOrderIntType == HONG) {
+	C1 /= num_kappa;
+	p_corr *= C1;
+      }
+      if (p_corr >= 0. && p_corr <= 1.) { // verify p_corr within valid range
+	p = (beta >= 0.) ? p_corr : 1. - p_corr;
+	if (outputLevel > NORMAL_OUTPUT)
+	  Cout << " second-order = " << std::setw(wpp7) << p;
+      }
+      else {
+	Cerr << "\nWarning: second-order probability integration bypassed due "
+	     << "to numerical issues (corrected p outside [0,1]).\n";
+	warningBits |= 2; // second warning in output summary
+      }
+    }
+    else {
+      Cerr << "\nWarning: second-order probability integration bypassed due "
+	   << "to numerical issues (curvature threshold exceeded).\n";
+      warningBits |= 2; // second warning in output summary
+    }
+  }
+
+  if (integrationRefinement) { // IS/AIS/MMAIS
+    // rep needed for access to functions not mapped to Iterator level
+    NonDAdaptImpSampling* importance_sampler_rep
+      = (NonDAdaptImpSampling*)importanceSampler.iterator_rep();
+    bool x_data_flag = false;
+    importance_sampler_rep->
+      initialize(mpp_u, x_data_flag, respFnCount, p, requestedTargetLevel);
+    ParLevLIter pl_iter = methodPCIter->mi_parallel_level_iterator(miPLIndex);
+    importanceSampler.run(pl_iter);
+    p = importance_sampler_rep->final_probability();
+    if (outputLevel > NORMAL_OUTPUT)
+      Cout << " refined = " << std::setw(wpp7) << p;
+  }
+  if (outputLevel > NORMAL_OUTPUT)
+    Cout << '\n';
+#ifdef DEBUG
+  if (integrationOrder == 2 && curvatureDataAvailable)
+    { Cout << "In probability(), kappaU:\n"; write_data(Cout, kappaU); }
+#endif
+
+  return p;
+}
+
+
+/** Compute sensitivity of second-order probability w.r.t. beta for use
+    in derivatives of p_2 or beta* w.r.t. auxilliary parameters s (design,
+    epistemic) or derivatives of beta* w.r.t. u in PMA2_constraint_eval(). */
+Real NonDLocalReliability::dp2_dbeta_factor(Real beta, bool cdf_flag)
+{
+  //   dp/ds     = -phi(-beta) * dbeta/ds
+  //               (fall back to first-order, if needed)
+  //   dp_2/ds   = [Phi(-beta_corr)*sum - phi(-beta_corr)*prod] * dbeta/ds
+  //               (this function computes term in brackets)
+  //   dbeta*/ds = -1/phi(-beta*) * dp_2/ds    (second-order)
+
+  // For beta < 0, beta_corr = -beta and p_corr = 1 - p:
+  // dp/ds = -dp_corr/ds = -(dp_corr/dbeta_corr * dbeta_corr/ds)
+  //       = -(dp_corr/dbeta_corr * -dbeta/ds)
+  //       = dp_corr/dbeta_corr * dbeta/ds
+
+  bool apply_correction; size_t i, j, num_kappa;
+  Real kterm, dpsi_m_beta_dbeta, beta_corr; RealVector kappa;
+  if (curvatureDataAvailable) {
+
+    //if (!kappaUpdated) { // should already be up to date
+    //  principal_curvatures(mpp_u, fn_grad_u, fn_hess_u, kappaU);
+    //  kappaUpdated = true;
+    //}
+
+    scale_curvature(beta, cdf_flag, kappaU, kappa);
+    beta_corr = (beta >= 0.) ? beta : -beta;
+
+    switch (secondOrderIntType) {
+    case HONG: // addtnl complexity not warranted
+      Cerr << "\nError: final statistic gradients not implemented for Hong."
+	   << std::endl;
+      abort_handler(-1); break;
+    case BREITUNG:
+      kterm = beta_corr; break;
+    case HOHENRACK:
+      // Psi(beta) = phi(beta) / Phi(beta)
+      // dPsi/dbeta = (Phi dphi/dbeta - phi^2)/Phi^2
+      //   where dphi/dbeta = -beta phi
+      // dPsi/dbeta = -phi (beta Phi + phi) / Phi^2
+      //            = -Psi (beta + Psi)
+      // --> dPsi/dbeta(-beta_corr)
+      //       = -Psi(-beta_corr) (-beta_corr + Psi(-beta_corr) )
+      //       =  Psi(-beta_corr) ( beta_corr - Psi(-beta_corr) )
+      kterm = Pecos::phi(-beta_corr) / Pecos::Phi(-beta_corr); // psi_m_beta
+      dpsi_m_beta_dbeta = kterm*(beta_corr - kterm); // orig (kterm + beta_corr)
+      break;
+    }
+
+    num_kappa = numUncertainVars - 1;
+    apply_correction = true;
+    for (i=0; i<num_kappa; ++i)
+      if (1. + kterm * kappa[i] <= curvatureThresh)
+	apply_correction = false;
+
+    if (apply_correction) {
+      Real sum = 0., ktk, prod1, prod2 = 1.;
+      for (i=0; i<num_kappa; ++i) {
+	ktk = kterm * kappa[i];
+	prod2 /= std::sqrt(1. + ktk);
+	prod1 = 1.;
+	for (j=0; j<num_kappa; ++j)
+	  if (j != i)
+	    prod1 /= std::sqrt(1. + kterm * kappa[j]);
+	prod1 *= kappa[i] / 2. / std::pow(1. + ktk, 1.5);
+	if (secondOrderIntType != BREITUNG)
+	  prod1 *= dpsi_m_beta_dbeta;
+	sum -= prod1;
+      }
+
+      // verify p_corr within (0,1) for consistency with probability()
+      Real p1_corr = probability(beta_corr), p2_corr = p1_corr * prod2;
+      if (p2_corr >= 0. && p2_corr <= 1.) // factor for second-order dp/ds:
+	return p1_corr * sum - Pecos::phi(-beta_corr) * prod2;
+    }
+
+    // if not returned, then there was an exception
+    Cerr << "\nWarning: second-order probability sensitivity bypassed.\n";
+    warningBits |= 2; // second warning in output summary
+  }
+
+  return -Pecos::phi(-beta);
+}
+
+
+// Converts a probability into a reliability using the inverse of the
+// first-order or second-order integrations implemented in
+// NonDLocalReliability::probability().
+Real NonDLocalReliability::
+reliability(Real p, bool cdf_flag, const RealVector& mpp_u,
+	    const RealVector& fn_grad_u, const RealSymMatrix& fn_hess_u)
+{
+  Real beta = reliability(p); // FORM approximation
+
+  if (integrationOrder == 2 && curvatureDataAvailable) {
+
+    if (!kappaUpdated) {
+      principal_curvatures(mpp_u, fn_grad_u, fn_hess_u, kappaU);
+      kappaUpdated = true;
+    }
+
+    // NOTE: these conversions are currently done once.  It may be necessary
+    // to redo them for each beta estimate (when inverting near beta = zero).
+    Real beta_corr = (beta >= 0.) ? beta : -beta;
+    Real p_corr    = (beta >= 0.) ? p    : 1. - p;
+    RealVector kappa; scale_curvature(beta, cdf_flag, kappaU, kappa);
+
+    // SORM correction to FORM: direct inversion of the SORM formulas is
+    // infeasible due to the multiple instances of beta on the RHS, even for
+    // the simplest case (Breitung).  Therefore, use Newton's method to solve
+    // for beta(p) using Phi_inverse() as an initial guess.
+    // > Newton's method uses reliability_residual() to compute the residual f
+    //   and reliability_residual_derivative() to compute df/dbeta.
+    // > Newton step is then beta -= f(beta)/[df/dbeta(beta)].
+    // > Other options include using an inexact df/dbeta = phi(-beta) from
+    //   FORM or using a quasi-Newton (Broyden update) or FD Newton approach.
+
+    // evaluate residual
+    Real res;
+    bool terminate = reliability_residual(p_corr, beta_corr, kappa, res);
+
+    size_t newton_iters = 0, max_iters = 20; // usually converges in ~3 iters
+    bool converged = false;
+    while (!terminate && !converged) {
+
+      // evaluate derivative of residual w.r.t. beta
+      Real dres_dbeta
+	= reliability_residual_derivative(p_corr, beta_corr, kappa);
+
+      // compute Newton step
+      Real delta_beta;
+      if (std::fabs(dres_dbeta) > DBL_MIN) {
+	delta_beta = -res/dres_dbeta; // full Newton step
+	// assess convergence using delta_beta, rather than residual,
+	// since this should be better scaled.
+	if (std::fabs(delta_beta) < convergenceTol)
+	  converged = true; // but go ahead and take the step, if beneficial
+      }
+      else
+	terminate = true;
+
+      // Simple backtracking line search globalization
+      bool reduction = false;
+      size_t backtrack_iters = 0;
+      while (!reduction && !terminate) { // enter loop even if converged
+	Real beta_step = beta_corr + delta_beta;
+
+	// verify that new beta_step doesn't violate safeguards.  If not,
+	// evaluate residual res_step at beta_step.
+	Real res_step;
+	terminate = reliability_residual(p_corr, beta_step, kappa, res_step);
+
+	if (!terminate) {
+	  if ( std::fabs(res_step) < std::fabs(res) ) { // accept step
+	    reduction = true;
+	    beta_corr = beta_step;
+	    res       = res_step;
+	    //Cout << "residual = " << res << " delta = " << delta_beta
+	    //     << " beta = " << beta_corr <<'\n';
+	  }
+	  else if (converged)
+	    terminate = true; // kick out of inner while
+	  else { // backtrack
+	    //Cout << "Backtracking\n";
+	    delta_beta /= 2.; // halve the step
+	    if (backtrack_iters++ >= max_iters) {// backtrack iter must complete
+	      Cerr << "\nWarning: maximum back-tracking iterations exceeded in "
+		   << "second-order reliability inversion.\n";
+	      warningBits |= 4; // third warning in output summary
+	      terminate = true;
+	    }
+	  }
+	}
+      }
+      if (++newton_iters >= max_iters && !converged) { // Newton iter completed
+	Cerr << "\nWarning: maximum Newton iterations exceeded in second-order "
+	     << "reliability inversion.\n";
+	warningBits |= 8; // fourth warning in output summary
+	terminate = true;
+      }
+    }
+    return (beta >= 0.) ? beta_corr : -beta_corr;
+  }
+  return beta;
+}
+
+
+bool NonDLocalReliability::
+reliability_residual(const Real& p, const Real& beta,
+		     const RealVector& kappa, Real& res)
+{
+  int i, num_kappa = numUncertainVars - 1;
+
+  // Test for numerical exceptions in sqrt.  Problematic kappa are large and
+  // negative (kterm is always positive).  Skipping individual kappa means
+  // neglecting a primary curvature and including secondary curvatures, which
+  // may be counter-productive (potentially less accurate than FORM).  Since
+  // the Newton solve can be problematic on its own, skip the entire solve in
+  // this case.
+  Real psi_m_beta;
+  if (secondOrderIntType != BREITUNG)
+    psi_m_beta = Pecos::phi(-beta) / Pecos::Phi(-beta);
+  Real kterm = (secondOrderIntType == BREITUNG) ? beta : psi_m_beta;
+  for (i=0; i<num_kappa; i++)
+    if (1. + kterm * kappa[i] <= curvatureThresh) {
+      Cerr << "\nWarning: second-order probability integration bypassed due to "
+	   << "numerical issues.\n";
+      warningBits |= 2; // second warning in output summary
+      return true;
+    }
+
+  // evaluate residual of f(beta,p) = 0 where p is a prescribed constant:
+  //   Breitung: f = 0 = p * Prod_i(sqrt(1+beta*kappa)) - Phi(-beta)
+  //   HohRack:  f = 0 = p * Prod_i(sqrt(1+psi(-beta)*kappa)) - Phi(-beta)
+  //   Hong:     f = 0 = p * Prod_i(sqrt(1+psi(-beta)*kappa)) - C1*Phi(-beta)
+  Real prod = 1., ktk, C1 = 0.;
+  for (i=0; i<num_kappa; i++) {
+    ktk = kterm * kappa[i];
+    prod *= std::sqrt(1. + ktk);
+    if (secondOrderIntType == HONG) {
+      Real hterm = num_kappa * kappa[i] / 2. / (1. + ktk);
+      C1 += Pecos::Phi(-beta - hterm) / Pecos::Phi(-beta)
+	 *  exp(psi_m_beta * hterm);
+    }
+  }
+  if (secondOrderIntType == HONG)
+    res = p * prod - C1 * Pecos::Phi(-beta);
+  else
+    res = p * prod - Pecos::Phi(-beta);
+
+  return false;
+}
+
+
+Real NonDLocalReliability::
+reliability_residual_derivative(const Real& p, const Real& beta,
+				const RealVector& kappa)
+{
+  int i, j, num_kappa = numUncertainVars - 1;
+  Real psi_m_beta, dpsi_m_beta_dbeta;
+  if (secondOrderIntType != BREITUNG) {
+    psi_m_beta = Pecos::phi(-beta) / Pecos::Phi(-beta);
+    dpsi_m_beta_dbeta = psi_m_beta*(beta + psi_m_beta);
+  }
+
+  // evaluate derivative of residual w.r.t. beta
+  Real prod, dres_dbeta, sum = 0.;
+  Real kterm = (secondOrderIntType == BREITUNG) ? beta : psi_m_beta;
+  for (i=0; i<num_kappa; i++) {
+    prod = 1.;
+    for (j=0; j<num_kappa; j++)
+      if (j != i)
+	prod *= std::sqrt(1. + kterm*kappa[j]);
+    prod *= kappa[i]/2./std::sqrt(1. + kterm*kappa[i]);
+    if (secondOrderIntType != BREITUNG)
+      prod *= dpsi_m_beta_dbeta;
+    sum += prod;
+  }
+  if (secondOrderIntType == HONG) { // addtnl complexity may not be warranted
+    Cerr << "\nError: reliability residual derivative not implemented for Hong."
+	 << std::endl;
+    abort_handler(-1);
+    //dres_dbeta = p * sum + C1 * phi(-beta) - Phi(-beta) * dC1_dbeta;
+  }
+  else
+    dres_dbeta = p * sum + Pecos::phi(-beta);
+
+  return dres_dbeta;
+}
+
+
+void NonDLocalReliability::
+principal_curvatures(const RealVector& mpp_u, const RealVector& fn_grad_u,
+		     const RealSymMatrix& fn_hess_u, RealVector& kappa_u)
+{
+  // fn_grad_u, fn_hess_u, and possibly mpp_u (alternate R0 initialization)
+  // must be in synch and be a reasonable approximation to converged MPP data.
+
+  // compute R matrix
+  int i, j, k, num_vars = mpp_u.length(), num_kappa = num_vars - 1;
+  RealMatrix R0(num_vars, num_vars);// init to 0
+  // initialize R0: last row values are direction cosines
+  for (i=0; i<num_kappa; i++)
+    R0(i, i) = 1.;
+  // Haldar & Mahadevan, p.227: last row = unit gradient vector of limit state
+  Real norm_grad_u = fn_grad_u.normFrobenius();
+  if (norm_grad_u > DBL_MIN)
+    for (i=0; i<num_vars; i++)
+      R0(num_kappa, i) = fn_grad_u[i]/norm_grad_u;
+  else { // fallback: try to use +/- mPPU[i]/norm(mPPU)
+    Real norm_mpp_u = mpp_u.normFrobenius(); // unsigned beta
+    if (norm_mpp_u > DBL_MIN) {
+      // Can match the sign of fn_grad_u[i]/norm_grad_u in PMA case (align for
+      // max G, oppose for min G), but can't in general in RIA case (vectors
+      // may align or oppose).  Fortunately, the R0 sign does not appear to
+      // matter since R is applied twice in R fn_hess_u R^T.
+      bool pma_max = (levelCount >= requestedRespLevels[respFnCount].length() &&
+		      pmaMaximizeG) ? true : false;
+      for (i=0; i<num_vars; i++)
+	R0(num_kappa, i) = (pma_max) ?  mpp_u[i]/norm_mpp_u  // aligned
+	                             : -mpp_u[i]/norm_mpp_u; // opposed
+    }
+    else {
+      // Note: for Breitung, kappa_i do not matter if beta = 0.
+      Cerr << "\nError: unable to initialize R0 in principal_curvatures() "
+	   << "calculation." << std::endl;
+      abort_handler(-1);
+    }
+  }
+  //Cout << "\nR0:" << R0;
+
+  // orthogonalize using Gram-Schmidt
+  RealMatrix R(R0);
+  for (i=num_vars-2; i>=0; i--) {  // update the ith row vector
+    for (j=i+1; j<num_vars; j++) { // orthogonalize to jth row vector
+      Real scale1 = 0., scale2 = 0.;
+      for (k=0; k<num_vars; k++) { // kth column
+	scale1 += R(j, k) * R0(i, k);
+	scale2 += std::pow(R(j, k), 2);
+      }
+      Real scale = scale1 / scale2;
+      for (k=0; k<num_vars; k++)   // kth column
+	R(i, k) -= scale * R(j, k);
+    }
+    // renormalize ith row vector to unit length
+    Real len = 0.;
+    for (j=0; j<num_vars; j++)
+      len += std::pow(R(i, j), 2);
+    len = std::sqrt(len);
+    for (j=0; j<num_vars; j++)
+      R(i, j) /= len;
+  }
+  //Cout << "\nR:" << R;
+
+  // compute A matrix = (R fn_hess_u R^T)/norm(fn_grad_u)
+  RealSymMatrix A(num_vars, false);
+  Teuchos::symMatTripleProduct(Teuchos::NO_TRANS, 1./norm_grad_u, fn_hess_u,
+			       R, A);
+  //Cout << "\nA:" << A;
+  A.reshape(num_kappa); // upper left portion of matrix
+  //Cout << "\nReshaped A:" << A;
+
+  // compute eigenvalues of A --> principal curvatures
+  Teuchos::LAPACK<int, Real> la;
+  int info, lwork = 3*num_kappa - 1;
+  double* work = new double [lwork];
+  // LAPACK eigenvalue solution for real, symmetric A
+  if (kappa_u.length() != num_kappa)
+    kappa_u.sizeUninitialized(num_kappa);
+  la.SYEV('N', A.UPLO(), num_kappa, A.values(), A.stride(), kappa_u.values(),
+	  work, lwork, &info);
+  delete [] work;
+  if (info) {
+    Cerr << "\nError: internal error in LAPACK eigenvalue routine."
+         << std::endl;
+    abort_handler(-1);
+  }
+  //Cout << "\nkappa_u:" << kappa_u;
+}
+
+
+void NonDLocalReliability::print_results(std::ostream& s)
+{
+  size_t i, j, width = write_precision+7;
+  StringMultiArrayConstView uv_labels
+    = iteratedModel.continuous_variable_labels();
+  const StringArray& fn_labels = iteratedModel.response_labels();
+  s << "-----------------------------------------------------------------\n";
+
+  if (warningBits) {
+    s << "Warnings accumulated during solution for one or more levels:\n";
+    if (warningBits & 1)
+      s << "  Maximum number of limit state approximation cycles exceeded.\n";
+    if (warningBits & 2)
+      s << "  Second-order probability integration bypassed due to numerical "
+	<< "issues.\n";
+    if (warningBits & 4)
+      s << "  Maximum back-tracking iterations exceeded in second-order "
+	<< "reliability inversion.\n";
+    if (warningBits & 8)
+      s << "  Maximum Newton iterations exceeded in second-order reliability "
+	<< "inversion.\n";
+    s << "Please interpret results with care.\n";
+    s << "-----------------------------------------------------------------\n";
+  }
+
+  for (i=0; i<numFunctions; i++) {
+
+    // output MV-specific statistics
+    if (!mppSearchType) {
+      s << "MV Statistics for " << fn_labels[i] << ":\n";
+      // approximate response means and std deviations and importance factors
+      Real& std_dev = momentStats(1,i);
+      s << "  Approximate Mean Response                  = " << std::setw(width)
+	<< momentStats(0,i) << "\n  Approximate Standard Deviation of Response"
+	<< " = " << std::setw(width)<< std_dev << '\n';
+      if (natafTransform.x_correlation() || std_dev < Pecos::SMALL_NUMBER)
+	s << "  Importance Factors not available.\n";
+      else
+	for (j=0; j<numUncertainVars; j++)
+	  s << "  Importance Factor for variable "
+	    << std::setiosflags(std::ios::left) << std::setw(11)
+	    << uv_labels[j].data() << " = "
+	    << std::resetiosflags(std::ios::adjustfield)
+	    << std::setw(width) << impFactor(j,i)
+      // Added sensitivity output to importance factors
+      << "  Sensitivity = "
+      << std::resetiosflags(std::ios::adjustfield)
+      << std::setw(width) << fnGradsMeanX(j,i) << '\n';
+    }
+
+    // output CDF/CCDF response/probability pairs
+    size_t num_levels = computedRespLevels[i].length();
+    if (num_levels) {
+      if (!mppSearchType && momentStats(1,i) < Pecos::SMALL_NUMBER)
+        s << "\nWarning: negligible standard deviation renders CDF results "
+          << "suspect.\n\n";
+      if (cdfFlag)
+        s << "Cumulative Distribution Function (CDF) for ";
+      else
+        s << "Complementary Cumulative Distribution Function (CCDF) for ";
+
+      s << fn_labels[i] << ":\n     Response Level  Probability Level  "
+	<< "Reliability Index  General Rel Index\n     --------------  "
+	<< "-----------------  -----------------  -----------------\n";
+      for (j=0; j<num_levels; j++)
+        s << "  " << std::setw(width) << computedRespLevels[i][j]
+	  << "  " << std::setw(width) << computedProbLevels[i][j]
+	  << "  " << std::setw(width) << computedRelLevels[i][j]
+	  << "  " << std::setw(width) << computedGenRelLevels[i][j] << '\n';
+    }
+  }
+
+  //s << "Final statistics:\n" << finalStatistics;
+
+  s << "-----------------------------------------------------------------"
+    << std::endl;
+}
+
+
+void NonDLocalReliability::method_recourse()
+{
+  Cerr << "\nWarning: method recourse invoked in NonDLocalReliability due to "
+       << "detected method conflict.\n\n";
+  if (mppSearchType && npsolFlag) {
+#ifdef HAVE_OPTPP
+    mppOptimizer.assign_rep(
+      new SNLLOptimizer("optpp_q_newton", mppModel), false);
+#else
+    Cerr << "\nError: method recourse not possible in NonDLocalReliability "
+	 << "(OPT++ NIP unavailable).\n";
+    abort_handler(-1);
+#endif
+    npsolFlag = false;
+  }
+}
+
+} // namespace Dakota
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/src/NonDSampling.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/src/NonDSampling.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/configs/6.2/src/NonDSampling.cpp	(revision 27955)
@@ -0,0 +1,1389 @@
+/*  _______________________________________________________________________
+
+    DAKOTA: Design Analysis Kit for Optimization and Terascale Applications
+    Copyright 2014 Sandia Corporation.
+    This software is distributed under the GNU Lesser General Public License.
+    For more information, see the README file in the top Dakota directory.
+    _______________________________________________________________________ */
+
+//- Class:	 NonDSampling
+//- Description: Implementation code for NonDSampling class
+//- Owner:       Mike Eldred
+//- Checked by:
+//- Version:
+
+#include "dakota_data_types.hpp"
+#include "dakota_system_defs.hpp"
+#include "DakotaModel.hpp"
+#include "DakotaResponse.hpp"
+#include "NonDSampling.hpp"
+#include "ProblemDescDB.hpp"
+#include "SensAnalysisGlobal.hpp"
+#include "pecos_data_types.hpp"
+#include "pecos_stat_util.hpp"
+#include <algorithm>
+
+#include <boost/math/special_functions/fpclassify.hpp>
+
+static const char rcsId[]="@(#) $Id: NonDSampling.cpp 7036 2010-10-22 23:20:24Z mseldre $";
+
+
+namespace Dakota {
+
+
+/** This constructor is called for a standard letter-envelope iterator
+    instantiation.  In this case, set_db_list_nodes has been called and
+    probDescDB can be queried for settings from the method specification. */
+NonDSampling::NonDSampling(ProblemDescDB& problem_db, Model& model):
+  NonD(problem_db, model), seedSpec(probDescDB.get_int("method.random_seed")),
+  randomSeed(seedSpec), samplesSpec(probDescDB.get_int("method.samples")),
+  samplesRef(samplesSpec), numSamples(samplesSpec),
+  rngName(probDescDB.get_string("method.random_number_generator")),
+  sampleType(probDescDB.get_ushort("method.sample_type")),
+  statsFlag(true), allDataFlag(false), samplingVarsMode(ACTIVE),
+  sampleRanksMode(IGNORE_RANKS),
+  varyPattern(!probDescDB.get_bool("method.fixed_seed")),
+  backfillFlag(probDescDB.get_bool("method.backfill")),
+  numLHSRuns(0)
+{
+  if (epistemicStats && totalLevelRequests) {
+    Cerr << "\nError: sampling does not support level requests for "
+	 << "analyses containing epistemic uncertainties." << std::endl;
+    abort_handler(-1);
+  }
+
+  // Since the sampleType is shared with other iterators for other purposes,
+  // its default in DataMethod.cpp is SUBMETHOD_DEFAULT (0).  Enforce an LHS
+  // default here.
+  if (!sampleType)
+    sampleType = SUBMETHOD_LHS;
+
+  // initialize finalStatistics using the default statistics set
+  initialize_final_statistics();
+
+  // update concurrency
+  if (numSamples) // samples is optional (default = 0)
+    maxEvalConcurrency *= numSamples;
+}
+
+
+/** This alternate constructor is used for generation and evaluation
+    of on-the-fly sample sets. */
+NonDSampling::
+NonDSampling(unsigned short method_name, Model& model,
+	     unsigned short sample_type, int samples, int seed,
+	     const String& rng, bool vary_pattern, short sampling_vars_mode):
+  NonD(method_name, model), seedSpec(seed), randomSeed(seed),
+  samplesSpec(samples), samplesRef(samples), numSamples(samples), rngName(rng),
+  sampleType(sample_type), statsFlag(false), allDataFlag(true),
+  samplingVarsMode(sampling_vars_mode), sampleRanksMode(IGNORE_RANKS),
+  varyPattern(vary_pattern), backfillFlag(false), numLHSRuns(0)
+{
+  subIteratorFlag = true; // suppress some output
+
+  // override default epistemicStats setting from NonD ctor
+  bool aleatory_mode = (samplingVarsMode == ALEATORY_UNCERTAIN ||
+			samplingVarsMode == ALEATORY_UNCERTAIN_UNIFORM);
+  epistemicStats = (numEpistemicUncVars && !aleatory_mode);
+
+  // enforce LHS as default sample type
+  if (!sampleType)
+    sampleType = SUBMETHOD_LHS;
+
+  // not used but included for completeness
+  if (numSamples) // samples is optional (default = 0)
+    maxEvalConcurrency *= numSamples;
+}
+
+
+/** This alternate constructor is used by ConcurrentStrategy for
+    generation of uniform, uncorrelated sample sets. */
+NonDSampling::
+NonDSampling(unsigned short sample_type, int samples, int seed,
+	     const String& rng, const RealVector& lower_bnds,
+	     const RealVector& upper_bnds):
+  NonD(RANDOM_SAMPLING, lower_bnds, upper_bnds), seedSpec(seed),
+  randomSeed(seed), samplesSpec(samples), samplesRef(samples),
+  numSamples(samples), rngName(rng), sampleType(sample_type), statsFlag(false),
+  allDataFlag(true), samplingVarsMode(ACTIVE_UNIFORM),
+  sampleRanksMode(IGNORE_RANKS), varyPattern(true), backfillFlag(false),
+  numLHSRuns(0)
+{
+  subIteratorFlag = true; // suppress some output
+
+  // enforce LHS as default sample type
+  if (!sampleType)
+    sampleType = SUBMETHOD_LHS;
+
+  // not used but included for completeness
+  if (numSamples) // samples is optional (default = 0)
+    maxEvalConcurrency *= numSamples;
+}
+
+
+NonDSampling::~NonDSampling()
+{ }
+
+
+/** This version of get_parameter_sets() extracts data from the
+    user-defined model in any of the four sampling modes. */
+void NonDSampling::get_parameter_sets(Model& model)
+{
+  initialize_lhs(true);
+
+  short model_view = model.current_variables().view().first;
+  switch (samplingVarsMode) {
+  case ACTIVE_UNIFORM: case ALL_UNIFORM: case UNCERTAIN_UNIFORM:
+  case ALEATORY_UNCERTAIN_UNIFORM: case EPISTEMIC_UNCERTAIN_UNIFORM:
+    // Use LHSDriver::generate_uniform_samples() between lower/upper bounds
+    if ( samplingVarsMode == ACTIVE_UNIFORM ||
+	 ( samplingVarsMode == ALL_UNIFORM &&
+	   ( model_view == RELAXED_ALL || model_view == MIXED_ALL ) ) ||
+	 ( samplingVarsMode == UNCERTAIN_UNIFORM &&
+	   ( model_view == RELAXED_UNCERTAIN ||
+	     model_view == MIXED_UNCERTAIN ) ) ||
+	 ( samplingVarsMode == ALEATORY_UNCERTAIN_UNIFORM &&
+	   ( model_view == RELAXED_ALEATORY_UNCERTAIN ||
+	     model_view == MIXED_ALEATORY_UNCERTAIN ) ) ||
+	 ( samplingVarsMode == EPISTEMIC_UNCERTAIN_UNIFORM &&
+	   ( model_view == RELAXED_EPISTEMIC_UNCERTAIN ||
+	     model_view == MIXED_EPISTEMIC_UNCERTAIN ) ) ) {
+      // sample uniformly from ACTIVE lower/upper bounds (regardless of model
+      // view), from UNCERTAIN lower/upper bounds (with model in DISTINCT view),
+      // or from ALL lower/upper bounds (with model in ALL view).
+      // loss of sampleRanks control is OK since NonDIncremLHS uses ACTIVE mode.
+      // TO DO: add support for uniform discrete
+      lhsDriver.generate_uniform_samples(model.continuous_lower_bounds(),
+					 model.continuous_upper_bounds(),
+					 numSamples, allSamples, backfillFlag);
+    }
+    else if (samplingVarsMode == ALL_UNIFORM) {
+      // sample uniformly from ALL lower/upper bnds with model in distinct view.
+      // loss of sampleRanks control is OK since NonDIncremLHS uses ACTIVE mode.
+      // TO DO: add support for uniform discrete
+      lhsDriver.generate_uniform_samples(model.all_continuous_lower_bounds(),
+					 model.all_continuous_upper_bounds(),
+					 numSamples, allSamples, backfillFlag);
+    }
+    else { // A, E, A+E UNCERTAIN
+      // sample uniformly from {A,E,A+E} UNCERTAIN lower/upper bounds
+      // with model using a non-corresponding view (corresponding views
+      // handled in first case above)
+      size_t start_acv, num_acv, dummy;
+      mode_counts(model, start_acv, num_acv, dummy, dummy, dummy, dummy,
+		  dummy, dummy);
+      if (!num_acv) {
+	Cerr << "Error: no active continuous variables for sampling in "
+	     << "uniform mode" << std::endl;
+	abort_handler(-1);
+      }
+      const RealVector& all_c_l_bnds = model.all_continuous_lower_bounds();
+      const RealVector& all_c_u_bnds = model.all_continuous_upper_bounds();
+      RealVector uncertain_c_l_bnds(Teuchos::View,
+	const_cast<Real*>(&all_c_l_bnds[start_acv]), num_acv);
+      RealVector uncertain_c_u_bnds(Teuchos::View,
+	const_cast<Real*>(&all_c_u_bnds[start_acv]), num_acv);
+      // loss of sampleRanks control is OK since NonDIncremLHS uses ACTIVE mode
+      // TO DO: add support for uniform discrete
+      lhsDriver.generate_uniform_samples(uncertain_c_l_bnds,
+					 uncertain_c_u_bnds,
+					 numSamples, allSamples, backfillFlag);
+    }
+    break;
+  case ALEATORY_UNCERTAIN:
+    {
+      lhsDriver.generate_samples(model.aleatory_distribution_parameters(),
+				 numSamples, allSamples, backfillFlag);
+      break;
+    }
+  case EPISTEMIC_UNCERTAIN:
+    {
+      lhsDriver.generate_samples(model.epistemic_distribution_parameters(),
+				 numSamples, allSamples, backfillFlag);
+      break;
+    }
+  case UNCERTAIN:
+    {
+      lhsDriver.generate_samples(model.aleatory_distribution_parameters(),
+				 model.epistemic_distribution_parameters(),
+				 numSamples, allSamples, backfillFlag);
+      break;
+    }
+  case ACTIVE: case ALL: {
+    // extract design and state bounds
+    RealVector  cdv_l_bnds,   cdv_u_bnds,   csv_l_bnds,   csv_u_bnds;
+    IntVector ddriv_l_bnds, ddriv_u_bnds, dsriv_l_bnds, dsriv_u_bnds;
+    const RealVector& all_c_l_bnds = model.all_continuous_lower_bounds();
+    const RealVector& all_c_u_bnds = model.all_continuous_upper_bounds();
+    if (numContDesVars) {
+      cdv_l_bnds
+	= RealVector(Teuchos::View, all_c_l_bnds.values(), numContDesVars);
+      cdv_u_bnds
+	= RealVector(Teuchos::View, all_c_u_bnds.values(), numContDesVars);
+    }
+    if (numContStateVars) {
+      size_t cv_start = model.acv() - numContStateVars;
+      csv_l_bnds = RealVector(Teuchos::View,
+	const_cast<Real*>(&all_c_l_bnds[cv_start]), numContStateVars);
+      csv_u_bnds = RealVector(Teuchos::View,
+	const_cast<Real*>(&all_c_u_bnds[cv_start]), numContStateVars);
+    }
+    const IntVector& all_di_l_bnds = model.all_discrete_int_lower_bounds();
+    const IntVector& all_di_u_bnds = model.all_discrete_int_upper_bounds();
+    size_t num_ddriv = (numDiscIntDesVars) ?
+      numDiscIntDesVars - model.discrete_design_set_int_values().size() : 0;
+    if (num_ddriv) {
+      ddriv_l_bnds = IntVector(Teuchos::View, all_di_l_bnds.values(),num_ddriv);
+      ddriv_u_bnds = IntVector(Teuchos::View, all_di_u_bnds.values(),num_ddriv);
+    }
+    size_t num_dsriv = (numDiscIntStateVars) ?
+      numDiscIntStateVars - model.discrete_state_set_int_values().size() : 0;
+    if (num_dsriv) {
+      size_t di_start = model.adiv() - numDiscIntStateVars;
+      dsriv_l_bnds = IntVector(Teuchos::View,
+	const_cast<int*>(&all_di_l_bnds[di_start]), num_dsriv);
+      dsriv_u_bnds = IntVector(Teuchos::View,
+	const_cast<int*>(&all_di_u_bnds[di_start]), num_dsriv);
+    }
+    IntSetArray empty_isa; StringSetArray empty_ssa; RealSetArray empty_rsa;
+    const IntSetArray&    di_design_sets = (numDiscIntDesVars) ?
+      model.discrete_design_set_int_values()    : empty_isa;
+    const StringSetArray& ds_design_sets = (numDiscStringDesVars) ?
+      model.discrete_design_set_string_values() : empty_ssa;
+    const RealSetArray&   dr_design_sets = (numDiscRealDesVars) ?
+      model.discrete_design_set_real_values()   : empty_rsa;
+    const IntSetArray&    di_state_sets  = (numDiscIntStateVars) ?
+      model.discrete_state_set_int_values()     : empty_isa;
+    const StringSetArray& ds_state_sets  = (numDiscStringStateVars) ?
+      model.discrete_state_set_string_values()  : empty_ssa;
+    const RealSetArray&   dr_state_sets  = (numDiscRealStateVars) ?
+      model.discrete_state_set_real_values()    : empty_rsa;
+
+    // Call LHS to generate the specified samples within the specified
+    // distributions.  Use model distribution parameters unless ACTIVE
+    // excludes {aleatory,epistemic,both} uncertain variables.
+    if ( samplingVarsMode == ACTIVE &&
+	 ( model_view == RELAXED_DESIGN || model_view == RELAXED_STATE ||
+	   model_view ==   MIXED_DESIGN || model_view ==   MIXED_STATE ) ) {
+      Pecos::AleatoryDistParams empty_adp; Pecos::EpistemicDistParams empty_edp;
+      if ( !backfillFlag )
+	lhsDriver.generate_samples(cdv_l_bnds, cdv_u_bnds, ddriv_l_bnds,
+	  ddriv_u_bnds, di_design_sets, ds_design_sets, dr_design_sets,
+	  csv_l_bnds, csv_u_bnds, dsriv_l_bnds, dsriv_u_bnds, di_state_sets,
+   	  ds_state_sets, dr_state_sets, empty_adp, empty_edp, numSamples,
+	  allSamples, sampleRanks);
+      else
+	lhsDriver.generate_unique_samples(cdv_l_bnds, cdv_u_bnds, ddriv_l_bnds,
+	  ddriv_u_bnds, di_design_sets, ds_design_sets, dr_design_sets,
+	  csv_l_bnds, csv_u_bnds, dsriv_l_bnds, dsriv_u_bnds, di_state_sets,
+   	  ds_state_sets, dr_state_sets, empty_adp, empty_edp, numSamples,
+	  allSamples, sampleRanks);
+    }
+    else if ( samplingVarsMode == ACTIVE &&
+	      ( model_view == RELAXED_ALEATORY_UNCERTAIN ||
+		model_view == MIXED_ALEATORY_UNCERTAIN ) ) {
+      Pecos::EpistemicDistParams empty_edp;
+      if ( !backfillFlag )
+	lhsDriver.generate_samples(cdv_l_bnds, cdv_u_bnds, ddriv_l_bnds,
+  	  ddriv_u_bnds, di_design_sets, ds_design_sets, dr_design_sets,
+	  csv_l_bnds, csv_u_bnds, dsriv_l_bnds, dsriv_u_bnds, di_state_sets,
+	  ds_state_sets, dr_state_sets, model.aleatory_distribution_parameters(),
+	  empty_edp, numSamples, allSamples, sampleRanks);
+      else
+	lhsDriver.generate_unique_samples(cdv_l_bnds, cdv_u_bnds, ddriv_l_bnds,
+  	  ddriv_u_bnds, di_design_sets, ds_design_sets, dr_design_sets,
+	  csv_l_bnds, csv_u_bnds, dsriv_l_bnds, dsriv_u_bnds, di_state_sets,
+	  ds_state_sets, dr_state_sets, model.aleatory_distribution_parameters(),
+	  empty_edp, numSamples, allSamples, sampleRanks);
+    }
+    else if ( samplingVarsMode == ACTIVE &&
+	      ( model_view == RELAXED_EPISTEMIC_UNCERTAIN ||
+		model_view == MIXED_EPISTEMIC_UNCERTAIN ) ) {
+      Pecos::AleatoryDistParams empty_adp;
+      if ( !backfillFlag )
+	lhsDriver.generate_samples(cdv_l_bnds, cdv_u_bnds, ddriv_l_bnds,
+  	  ddriv_u_bnds, di_design_sets, ds_design_sets, dr_design_sets,
+	  csv_l_bnds, csv_u_bnds, dsriv_l_bnds, dsriv_u_bnds, di_state_sets,
+	  ds_state_sets, dr_state_sets, empty_adp,
+	  model.epistemic_distribution_parameters(), numSamples, allSamples,
+	  sampleRanks);
+      else
+	lhsDriver.generate_unique_samples(cdv_l_bnds, cdv_u_bnds, ddriv_l_bnds,
+  	  ddriv_u_bnds, di_design_sets, ds_design_sets, dr_design_sets,
+	  csv_l_bnds, csv_u_bnds, dsriv_l_bnds, dsriv_u_bnds, di_state_sets,
+	  ds_state_sets, dr_state_sets, empty_adp,
+	  model.epistemic_distribution_parameters(), numSamples, allSamples,
+	  sampleRanks);
+    }
+    else
+      {
+	if ( !backfillFlag )
+	  lhsDriver.generate_samples(cdv_l_bnds, cdv_u_bnds, ddriv_l_bnds,
+	  ddriv_u_bnds, di_design_sets, ds_design_sets, dr_design_sets,
+	  csv_l_bnds, csv_u_bnds, dsriv_l_bnds, dsriv_u_bnds, di_state_sets,
+	  ds_state_sets, dr_state_sets, model.aleatory_distribution_parameters(),
+	  model.epistemic_distribution_parameters(), numSamples, allSamples,
+	  sampleRanks);
+	else
+	  lhsDriver.generate_unique_samples(cdv_l_bnds, cdv_u_bnds, ddriv_l_bnds,
+	  ddriv_u_bnds, di_design_sets, ds_design_sets, dr_design_sets,
+	  csv_l_bnds, csv_u_bnds, dsriv_l_bnds, dsriv_u_bnds, di_state_sets,
+	  ds_state_sets, dr_state_sets, model.aleatory_distribution_parameters(),
+	  model.epistemic_distribution_parameters(), numSamples, allSamples,
+	  sampleRanks);
+	  // warning sampleRanks will empty.
+	  // See comment in lhs_driver.cpp generate_unique_samples()
+      }
+    break;
+  }
+  }
+}
+
+
+/** This version of get_parameter_sets() does not extract data from the
+    user-defined model, but instead relies on the incoming bounded region
+    definition.  It only support a UNIFORM sampling mode, where the
+    distinction of ACTIVE_UNIFORM vs. ALL_UNIFORM is handled elsewhere. */
+void NonDSampling::
+get_parameter_sets(const RealVector& lower_bnds,
+		   const RealVector& upper_bnds)
+{
+  initialize_lhs(true);
+  lhsDriver.generate_uniform_samples(lower_bnds, upper_bnds,
+				     numSamples, allSamples);
+}
+
+
+void NonDSampling::
+update_model_from_sample(Model& model, const Real* sample_vars)
+{
+  size_t i, cntr = 0, cv_start, num_cv, div_start, num_div, dsv_start, num_dsv,
+    drv_start, num_drv;
+  mode_counts(model, cv_start, num_cv, div_start, num_div, dsv_start, num_dsv,
+	      drv_start, num_drv);
+
+  // sampled continuous vars (by value)
+  size_t end = cv_start + num_cv;
+  for (i=cv_start; i<end; ++i, ++cntr)
+    model.all_continuous_variable(sample_vars[cntr], i);
+  // sampled discrete int vars (by value cast from Real)
+  end = div_start + num_div;
+  for (i=div_start; i<end; ++i, ++cntr)
+    model.all_discrete_int_variable((int)sample_vars[cntr], i);
+  // sampled discrete string vars (by index cast from Real)
+  short active_view = model.current_variables().view().first;
+  bool relax = (active_view == RELAXED_ALL ||
+    ( active_view >= RELAXED_DESIGN && active_view <= RELAXED_STATE ) );
+  short all_view = (relax) ? RELAXED_ALL : MIXED_ALL;
+  const StringSetArray& all_dss_values
+    = model.discrete_set_string_values(all_view);
+  end = dsv_start + num_dsv;
+  for (i=dsv_start; i<end; ++i, ++cntr)
+    model.all_discrete_string_variable(set_index_to_value(
+      (size_t)sample_vars[cntr], all_dss_values[i]), i);
+  // sampled discrete real vars (by value)
+  end = drv_start + num_drv;
+  for (i=drv_start; i<end; ++i, ++cntr)
+    model.all_discrete_real_variable(sample_vars[cntr], i);
+}
+
+
+// BMA TODO: consolidate with other use cases
+void NonDSampling::
+sample_to_variables(const Real* sample_vars, Variables& vars)
+{
+  size_t i, cntr = 0, cv_start, num_cv, div_start, num_div, dsv_start, num_dsv,
+    drv_start, num_drv;
+  mode_counts(iteratedModel, cv_start, num_cv, div_start, num_div, dsv_start, num_dsv,
+	      drv_start, num_drv);
+
+  // BMA TODO: make sure inactive get updated too as needed?
+
+  // sampled continuous vars (by value)
+  size_t end = cv_start + num_cv;
+  for (i=cv_start; i<end; ++i, ++cntr)
+    vars.all_continuous_variable(sample_vars[cntr], i);
+  // sampled discrete int vars (by value cast from Real)
+  end = div_start + num_div;
+  for (i=div_start; i<end; ++i, ++cntr)
+    vars.all_discrete_int_variable((int)sample_vars[cntr], i);
+  // sampled discrete string vars (by index cast from Real)
+  short active_view = vars.view().first;
+  bool relax = (active_view == RELAXED_ALL ||
+    ( active_view >= RELAXED_DESIGN && active_view <= RELAXED_STATE ) );
+  short all_view = (relax) ? RELAXED_ALL : MIXED_ALL;
+  const StringSetArray& all_dss_values
+    = iteratedModel.discrete_set_string_values(all_view);
+  end = dsv_start + num_dsv;
+  for (i=dsv_start; i<end; ++i, ++cntr)
+    vars.all_discrete_string_variable(set_index_to_value(
+      (size_t)sample_vars[cntr], all_dss_values[i]), i);
+  // sampled discrete real vars (by value)
+  end = drv_start + num_drv;
+  for (i=drv_start; i<end; ++i, ++cntr)
+    vars.all_discrete_real_variable(sample_vars[cntr], i);
+}
+
+
+// BMA TODO: consolidate with other use cases
+/** Map the active variables from vars to sample_vars (column in allSamples) */
+void NonDSampling::
+variables_to_sample(const Variables& vars, Real* sample_vars)
+{
+  size_t cntr = 0;
+
+  const RealVector& c_vars = vars.continuous_variables();
+  for (size_t j=0; j<numContinuousVars; ++j, ++cntr)
+    sample_vars[cntr] = c_vars[j]; // jth row of samples_matrix
+
+  const IntVector& di_vars = vars.discrete_int_variables();
+  for (size_t j=0; j<numDiscreteIntVars; ++j, ++cntr)
+    sample_vars[cntr] = (Real) di_vars[j]; // jth row of samples_matrix
+
+  // to help with mapping string variables
+  // sampled discrete string vars (by index cast from Real)
+  short active_view = vars.view().first;
+  bool relax = (active_view == RELAXED_ALL ||
+    ( active_view >= RELAXED_DESIGN && active_view <= RELAXED_STATE ) );
+  short all_view = (relax) ? RELAXED_ALL : MIXED_ALL;
+  const StringSetArray& all_dss_values
+    = iteratedModel.discrete_set_string_values(all_view);
+
+  // is care needed to manage active vs. all string variables?
+
+  StringMultiArrayConstView ds_vars = vars.discrete_string_variables();
+  for (size_t j=0; j<numDiscreteStringVars; ++j, ++cntr)
+    sample_vars[cntr] =
+      (Real) set_value_to_index(ds_vars[j], all_dss_values[j]); // jth row of samples_matrix
+
+  const RealVector& dr_vars = vars.discrete_real_variables();
+  for (size_t j=0; j<numDiscreteRealVars; ++j, ++cntr)
+    sample_vars[cntr] = (Real) dr_vars[j]; // jth row of samples_matrix
+}
+
+
+/** This function and its helpers to follow are needed since NonDSampling
+    supports a richer set of sampling modes than just the active variable
+    subset.  mode_counts() manages the samplingVarsMode setting, while its
+    helper functions (view_{design,aleatory_uncertain,epistemic_uncertain,
+    uncertain,state}_counts) manage the active variables view.  Similar
+    to the computation of starts and counts in creating active variable
+    views, the results of this function are starts and counts for use
+    within model.all_*() set/get functions. */
+void NonDSampling::
+mode_counts(const Model& model, size_t& cv_start,  size_t& num_cv,
+	    size_t& div_start,  size_t& num_div,   size_t& dsv_start,
+	    size_t& num_dsv,    size_t& drv_start, size_t& num_drv) const
+{
+  cv_start = div_start = dsv_start = drv_start = 0;
+  num_cv   = num_div   = num_dsv   = num_drv   = 0;
+  switch (samplingVarsMode) {
+  case ALEATORY_UNCERTAIN:
+    // design vars define starting indices
+    view_design_counts(model, cv_start, div_start, dsv_start, drv_start);
+    // A uncertain vars define counts
+    view_aleatory_uncertain_counts(model, num_cv, num_div, num_dsv, num_drv);
+    break;
+  case ALEATORY_UNCERTAIN_UNIFORM: {
+    // UNIFORM views do not currently support non-relaxed discrete
+    size_t dummy;
+    // continuous design vars define starting indices
+    view_design_counts(model, cv_start, dummy, dummy, dummy);
+    // continuous A uncertain vars define counts
+    view_aleatory_uncertain_counts(model, num_cv, dummy, dummy, dummy);   break;
+  }
+  case EPISTEMIC_UNCERTAIN: {
+    // design + A uncertain vars define starting indices
+    size_t num_cdv,  num_ddiv,  num_ddsv,  num_ddrv,
+           num_cauv, num_dauiv, num_dausv, num_daurv;
+    view_design_counts(model, num_cdv, num_ddiv, num_ddsv, num_ddrv);
+    view_aleatory_uncertain_counts(model, num_cauv, num_dauiv, num_dausv,
+				   num_daurv);
+    cv_start  = num_cdv  + num_cauv;  div_start = num_ddiv + num_dauiv;
+    dsv_start = num_ddsv + num_dausv; drv_start = num_ddrv + num_daurv;
+    // E uncertain vars define counts
+    view_epistemic_uncertain_counts(model, num_cv, num_div, num_dsv, num_drv);
+    break;
+  }
+  case EPISTEMIC_UNCERTAIN_UNIFORM: {
+    // UNIFORM views do not currently support non-relaxed discrete
+    // continuous design + A uncertain vars define starting indices
+    size_t num_cdv, num_cauv, dummy;
+    view_design_counts(model, num_cdv, dummy, dummy, dummy);
+    view_aleatory_uncertain_counts(model, num_cauv, dummy, dummy, dummy);
+    cv_start = num_cdv + num_cauv;
+    // continuous E uncertain vars define counts
+    view_epistemic_uncertain_counts(model, num_cv, dummy, dummy, dummy);  break;
+  }
+  case UNCERTAIN:
+    // design vars define starting indices
+    view_design_counts(model, cv_start, div_start, dsv_start, drv_start);
+    // A+E uncertain vars define counts
+    view_uncertain_counts(model, num_cv, num_div, num_dsv, num_drv);      break;
+  case UNCERTAIN_UNIFORM: {
+    // UNIFORM views do not currently support non-relaxed discrete
+    size_t dummy;
+    // continuous design vars define starting indices
+    view_design_counts(model, cv_start, dummy, dummy, dummy);
+    // continuous A+E uncertain vars define counts
+    view_uncertain_counts(model, num_cv, dummy, dummy, dummy);            break;
+  }
+  case ACTIVE: {
+    const Variables& vars = model.current_variables();
+    cv_start  = vars.cv_start();  num_cv  = vars.cv();
+    div_start = vars.div_start(); num_div = vars.div();
+    dsv_start = vars.dsv_start(); num_dsv = vars.dsv();
+    drv_start = vars.drv_start(); num_drv = vars.drv();                   break;
+  }
+  case ACTIVE_UNIFORM: {
+    // UNIFORM views do not currently support non-relaxed discrete
+    const Variables& vars = model.current_variables();
+    cv_start = vars.cv_start(); num_cv = vars.cv();                       break;
+  }
+  case ALL:
+    num_cv  = model.acv();  num_div = model.adiv();
+    num_dsv = model.adsv(); num_drv = model.adrv();                       break;
+  case ALL_UNIFORM:
+    // UNIFORM views do not currently support non-relaxed discrete
+    num_cv = model.acv();                                                 break;
+  }
+}
+
+
+/** This function computes total design variable counts, not active counts,
+    for use in defining offsets and counts within all variables arrays. */
+void NonDSampling::
+view_design_counts(const Model& model, size_t& num_cdv, size_t& num_ddiv,
+		   size_t& num_ddsv, size_t& num_ddrv) const
+{
+  const Variables& vars = model.current_variables();
+  short active_view = vars.view().first;
+  switch (active_view) {
+  case RELAXED_ALL: case MIXED_ALL: case RELAXED_DESIGN: case MIXED_DESIGN:
+    // design vars are included in active counts from NonD and relaxation
+    // counts have already been applied
+    num_cdv  = numContDesVars;       num_ddiv = numDiscIntDesVars;
+    num_ddsv = numDiscStringDesVars; num_ddrv = numDiscRealDesVars; break;
+  case RELAXED_EPISTEMIC_UNCERTAIN: case RELAXED_STATE:
+  case MIXED_EPISTEMIC_UNCERTAIN: case MIXED_STATE:
+    // design vars are not included in active counts from NonD
+    vars.shared_data().design_counts(num_cdv, num_ddiv, num_ddsv, num_ddrv);
+    break;
+  case RELAXED_UNCERTAIN: case RELAXED_ALEATORY_UNCERTAIN:
+  case   MIXED_UNCERTAIN: case   MIXED_ALEATORY_UNCERTAIN:
+    num_cdv  = vars.cv_start();  num_ddiv = vars.div_start();
+    num_ddsv = vars.dsv_start(); num_ddrv = vars.drv_start(); break;
+  }
+}
+
+
+/** This function computes total aleatory uncertain variable counts,
+    not active counts, for use in defining offsets and counts within
+    all variables arrays. */
+void NonDSampling::
+view_aleatory_uncertain_counts(const Model& model, size_t& num_cauv,
+			       size_t& num_dauiv, size_t& num_dausv,
+			       size_t& num_daurv) const
+{
+  const Variables& vars = model.current_variables();
+  short active_view = vars.view().first;
+  switch (active_view) {
+  case RELAXED_ALL: case RELAXED_UNCERTAIN: case RELAXED_ALEATORY_UNCERTAIN:
+  case   MIXED_ALL: case   MIXED_UNCERTAIN: case   MIXED_ALEATORY_UNCERTAIN:
+    // aleatory vars are included in active counts from NonD and relaxation
+    // counts have already been applied
+    num_cauv  = numContAleatUncVars;       num_dauiv = numDiscIntAleatUncVars;
+    num_dausv = numDiscStringAleatUncVars; num_daurv = numDiscRealAleatUncVars;
+    break;
+  case RELAXED_DESIGN: case RELAXED_STATE: case RELAXED_EPISTEMIC_UNCERTAIN:
+  case MIXED_DESIGN:   case MIXED_STATE:   case MIXED_EPISTEMIC_UNCERTAIN:
+    vars.shared_data().aleatory_uncertain_counts(num_cauv,  num_dauiv,
+						 num_dausv, num_daurv);
+    break;
+  }
+}
+
+
+/** This function computes total epistemic uncertain variable counts,
+    not active counts, for use in defining offsets and counts within
+    all variables arrays. */
+void NonDSampling::
+view_epistemic_uncertain_counts(const Model& model, size_t& num_ceuv,
+				size_t& num_deuiv, size_t& num_deusv,
+				size_t& num_deurv) const
+{
+  const Variables& vars = model.current_variables();
+  short active_view = vars.view().first;
+  switch (active_view) {
+  case RELAXED_ALL: case RELAXED_UNCERTAIN: case RELAXED_EPISTEMIC_UNCERTAIN:
+  case   MIXED_ALL: case   MIXED_UNCERTAIN: case   MIXED_EPISTEMIC_UNCERTAIN:
+    num_ceuv  = numContEpistUncVars;       num_deuiv = numDiscIntEpistUncVars;
+    num_deusv = numDiscStringEpistUncVars; num_deurv = numDiscRealEpistUncVars;
+    break;
+  case RELAXED_DESIGN: case RELAXED_ALEATORY_UNCERTAIN: case RELAXED_STATE:
+  case MIXED_DESIGN:   case MIXED_ALEATORY_UNCERTAIN:   case MIXED_STATE:
+    vars.shared_data().epistemic_uncertain_counts(num_ceuv,  num_deuiv,
+						  num_deusv, num_deurv);
+    break;
+  }
+}
+
+
+/** This function computes total uncertain variable counts, not active counts,
+    for use in defining offsets and counts within all variables arrays. */
+void NonDSampling::
+view_uncertain_counts(const Model& model, size_t& num_cuv, size_t& num_duiv,
+		      size_t& num_dusv, size_t& num_durv) const
+{
+  const Variables& vars = model.current_variables();
+  short active_view = vars.view().first;
+  switch (active_view) {
+  case RELAXED_ALL: case MIXED_ALL: // UNCERTAIN = subset of ACTIVE
+    num_cuv  = numContAleatUncVars       + numContEpistUncVars;
+    num_duiv = numDiscIntAleatUncVars    + numDiscIntEpistUncVars;
+    num_dusv = numDiscStringAleatUncVars + numDiscStringEpistUncVars;
+    num_durv = numDiscRealAleatUncVars   + numDiscRealEpistUncVars;      break;
+  case RELAXED_DESIGN:             case RELAXED_STATE:
+  case RELAXED_ALEATORY_UNCERTAIN: case RELAXED_EPISTEMIC_UNCERTAIN:
+  case MIXED_DESIGN:               case MIXED_STATE:
+  case MIXED_ALEATORY_UNCERTAIN:   case MIXED_EPISTEMIC_UNCERTAIN:
+    vars.shared_data().uncertain_counts(num_cuv, num_duiv, num_dusv, num_durv);
+    break;
+  case RELAXED_UNCERTAIN: case MIXED_UNCERTAIN: // UNCERTAIN = same as ACTIVE
+    num_cuv  = vars.cv();  num_duiv = vars.div();
+    num_dusv = vars.dsv(); num_durv = vars.drv(); break;
+  }
+}
+
+
+void NonDSampling::
+view_state_counts(const Model& model, size_t& num_csv, size_t& num_dsiv,
+		  size_t& num_dssv, size_t& num_dsrv) const
+{
+  const Variables& vars = model.current_variables();
+  short active_view = vars.view().first;
+  switch (active_view) {
+  case RELAXED_ALL: case MIXED_ALL: case RELAXED_STATE: case MIXED_STATE:
+    // state vars are included in active counts from NonD and relaxation
+    // counts have already been applied
+    num_csv  = numContStateVars;       num_dsiv = numDiscIntStateVars;
+    num_dssv = numDiscStringStateVars; num_dsrv = numDiscRealStateVars; break;
+  case RELAXED_ALEATORY_UNCERTAIN: case RELAXED_DESIGN:
+  case   MIXED_ALEATORY_UNCERTAIN: case   MIXED_DESIGN:
+    // state vars are not included in active counts from NonD
+    vars.shared_data().state_counts(num_csv, num_dsiv, num_dssv, num_dsrv);
+    break;
+  case RELAXED_UNCERTAIN: case RELAXED_EPISTEMIC_UNCERTAIN:
+  case   MIXED_UNCERTAIN: case   MIXED_EPISTEMIC_UNCERTAIN:
+    num_csv  = vars.acv()  - vars.cv_start()  - vars.cv();
+    num_dsiv = vars.adiv() - vars.div_start() - vars.div();
+    num_dssv = vars.adsv() - vars.dsv_start() - vars.dsv();
+    num_dsrv = vars.adrv() - vars.drv_start() - vars.drv(); break;
+  }
+}
+
+
+void NonDSampling::initialize_lhs(bool write_message)
+{
+  // keep track of number of LHS executions for this object
+  ++numLHSRuns;
+
+  // Set seed value for input to LHS's random number generator.  Emulate DDACE
+  // behavior in which a user-specified seed gives you repeatable behavior but
+  // no specification gives you random behavior.  A system clock is used to
+  // randomize in the no user specification case.  For cases where
+  // get_parameter_sets() may be called multiple times for the same sampling
+  // iterator (e.g., SBO), support a deterministic sequence of seed values.
+  // This renders the study repeatable but the sampling pattern varies from
+  // one run to the next.
+  if (numLHSRuns == 1) { // set initial seed
+    lhsDriver.rng(rngName);
+    if (!seedSpec) // no user specification --> nonrepeatable behavior
+      randomSeed = generate_system_seed();
+    lhsDriver.seed(randomSeed);
+  }
+  else if (varyPattern) // define sequence of seed values for numLHSRuns > 1
+    lhsDriver.advance_seed_sequence();
+  else // fixed_seed
+    lhsDriver.seed(randomSeed); // reset original/machine-generated seed
+
+  // Needed a way to turn this off when LHS sampling is being used in
+  // NonDAdaptImpSampling because it gets written a _LOT_
+  String sample_string = submethod_enum_to_string(sampleType);
+  if (write_message) {
+    Cout << "\nNonD " << sample_string << " Samples = " << numSamples;
+    if (numLHSRuns == 1 || !varyPattern) {
+      if (seedSpec) Cout << " Seed (user-specified) = ";
+      else          Cout << " Seed (system-generated) = ";
+      Cout << randomSeed << '\n';
+    }
+    else if (rngName == "rnum2") {
+      if (seedSpec) Cout << " Seed (sequence from user-specified) = ";
+      else          Cout << " Seed (sequence from system-generated) = ";
+      Cout << lhsDriver.seed() << '\n';
+    }
+    else // default Boost Mersenne twister
+      Cout << " Seed not reset from previous LHS execution\n";
+  }
+
+  lhsDriver.initialize(sample_string, sampleRanksMode, !subIteratorFlag);
+}
+
+
+void NonDSampling::
+compute_statistics(const RealMatrix&     vars_samples,
+		   const IntResponseMap& resp_samples)
+{
+  StringMultiArrayConstView
+    acv_labels  = iteratedModel.all_continuous_variable_labels(),
+    adiv_labels = iteratedModel.all_discrete_int_variable_labels(),
+    adsv_labels = iteratedModel.all_discrete_string_variable_labels(),
+    adrv_labels = iteratedModel.all_discrete_real_variable_labels();
+  size_t cv_start, num_cv, div_start, num_div, dsv_start, num_dsv,
+    drv_start, num_drv;
+  mode_counts(iteratedModel, cv_start, num_cv, div_start, num_div,
+	      dsv_start, num_dsv, drv_start, num_drv);
+  StringMultiArrayConstView
+    cv_labels  =
+      acv_labels[boost::indices[idx_range(cv_start, cv_start+num_cv)]],
+    div_labels =
+      adiv_labels[boost::indices[idx_range(div_start, div_start+num_div)]],
+    dsv_labels =
+      adsv_labels[boost::indices[idx_range(dsv_start, dsv_start+num_dsv)]],
+    drv_labels =
+      adrv_labels[boost::indices[idx_range(drv_start, drv_start+num_drv)]];
+
+  // archive the active variables with the results
+  if (resultsDB.active()) {
+    if (num_cv)
+      resultsDB.insert(run_identifier(), resultsNames.cv_labels, cv_labels);
+    if (num_div)
+      resultsDB.insert(run_identifier(), resultsNames.div_labels, div_labels);
+    if (num_dsv)
+      resultsDB.insert(run_identifier(), resultsNames.dsv_labels, dsv_labels);
+    if (num_drv)
+      resultsDB.insert(run_identifier(), resultsNames.drv_labels, drv_labels);
+    resultsDB.insert(run_identifier(), resultsNames.fn_labels,
+		     iteratedModel.response_labels());
+  }
+
+  if (epistemicStats) // Epistemic/mixed
+    compute_intervals(resp_samples); // compute min/max response intervals
+  else { // Aleatory
+    // compute means and std deviations with confidence intervals
+    compute_moments(resp_samples);
+    // compute CDF/CCDF mappings of z to p/beta and p/beta to z
+    if (totalLevelRequests)
+      compute_distribution_mappings(resp_samples);
+  }
+
+  // Don't compute for now: too expensive
+  // if (!subIteratorFlag) {
+  //   nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+  //   // archive the correlations to the results DB
+  //   nonDSampCorr.archive_correlations(run_identifier(), resultsDB, cv_labels,
+		// 		      div_labels, dsv_labels, drv_labels,
+		// 		      iteratedModel.response_labels());
+  // }
+  if (!finalStatistics.is_null())
+    update_final_statistics();
+}
+
+
+void NonDSampling::compute_intervals(const IntResponseMap& samples)
+{
+  // For the samples array, calculate min/max response intervals
+
+  using boost::math::isfinite;
+  size_t i, j, num_obs = samples.size(), num_samp;
+  const StringArray& resp_labels = iteratedModel.response_labels();
+
+  if (extremeValues.empty()) extremeValues.shapeUninitialized(2, numFunctions);
+  IntRespMCIter it;
+  for (i=0; i<numFunctions; ++i) {
+    num_samp = 0;
+    Real min = DBL_MAX, max = -DBL_MAX;
+    for (it=samples.begin(); it!=samples.end(); ++it) {
+      const Real& sample = it->second.function_value(i);
+      if (isfinite(sample)) { // neither NaN nor +/-Inf
+	if (sample < min) min = sample;
+	if (sample > max) max = sample;
+	++num_samp;
+      }
+    }
+    extremeValues(0, i) = min;
+    extremeValues(1, i) = max;
+    if (num_samp != num_obs)
+      Cerr << "Warning: sampling statistics for " << resp_labels[i] << " omit "
+	   << num_obs-num_samp << " failed evaluations out of " << num_obs
+	   << " samples.\n";
+  }
+
+  if (resultsDB.active()) {
+    MetaDataType md;
+    md["Row Labels"] = make_metadatavalue("Min", "Max");
+    md["Column Labels"] = make_metadatavalue(resp_labels);
+    resultsDB.insert(run_identifier(), resultsNames.extreme_values,
+		     extremeValues, md);
+  }
+}
+
+
+void NonDSampling::compute_moments(const IntResponseMap& samples)
+{
+  // For the samples array, calculate means and standard deviations
+  // with confidence intervals
+
+  using boost::math::isfinite;
+  size_t i, j, num_obs = samples.size(), num_samp;
+  Real sum, var, skew, kurt;
+  const StringArray& resp_labels = iteratedModel.response_labels();
+
+  if (momentStats.empty()) momentStats.shapeUninitialized(4, numFunctions);
+  if (momentCIs.empty()) momentCIs.shapeUninitialized(4, numFunctions);
+
+  IntRespMCIter it;
+  for (i=0; i<numFunctions; ++i) {
+
+    num_samp  = 0;
+    sum = var = skew = kurt = 0.;
+    // means
+    for (it=samples.begin(); it!=samples.end(); ++it) {
+      const Real& sample = it->second.function_value(i);
+      if (isfinite(sample)) { // neither NaN nor +/-Inf
+	sum += sample;
+	++num_samp;
+      }
+    }
+
+    if (num_samp != num_obs)
+      Cerr << "Warning: sampling statistics for " << resp_labels[i] << " omit "
+	   << num_obs-num_samp << " failed evaluations out of " << num_obs
+	   << " samples.\n";
+    if (!num_samp) {
+      Cerr << "Error: Number of samples for " << resp_labels[i]
+	   << " must be nonzero for moment calculation in NonDSampling::"
+	   << "compute_statistics()." << std::endl;
+      abort_handler(-1);
+    }
+
+    Real* moments_i = momentStats[i];
+    Real& mean = moments_i[0];
+    mean = sum/((Real)num_samp);
+
+    // accumulate variance, skewness, and kurtosis
+    Real centered_fn, pow_fn;
+    for (it=samples.begin(); it!=samples.end(); ++it) {
+      const Real& sample = it->second.function_value(i);
+      if (isfinite(sample)) { // neither NaN nor +/-Inf
+	pow_fn  = centered_fn = sample - mean;
+	pow_fn *= centered_fn; var  += pow_fn;
+	pow_fn *= centered_fn; skew += pow_fn;
+	pow_fn *= centered_fn; kurt += pow_fn;
+      }
+    }
+
+    // sample std deviation
+    Real& std_dev = moments_i[1];
+    std_dev = (num_samp > 1) ? std::sqrt(var/(Real)(num_samp-1)) : 0.;
+
+    // skewness
+    moments_i[2] = (num_samp > 2 && var > 0.) ?
+      // sample skewness
+      skew/(Real)num_samp/std::pow(var/(Real)num_samp,1.5) *
+      // population skewness
+      std::sqrt((Real)(num_samp*(num_samp-1)))/(Real)(num_samp-2) :
+      // for no variation, central moment is zero
+      0.;
+
+    // kurtosis
+    moments_i[3] = (num_samp > 3 && var > 0.) ?
+      // sample kurtosis
+      (Real)((num_samp+1)*num_samp*(num_samp-1))*kurt/
+      (Real)((num_samp-2)*(num_samp-3)*var*var) -
+      // population kurtosis
+      3.*std::pow((Real)(num_samp-1),2)/(Real)((num_samp-2)*(num_samp-3)) :
+      // for no variation, central moment is zero minus excess kurtosis
+      -3.;
+
+    if (num_samp > 1) {
+      // 95% confidence intervals (2-sided interval, not 1-sided limit)
+      Real dof = num_samp - 1;
+//#ifdef HAVE_BOOST
+      // mean: the better formula does not assume known variance but requires
+      // a function for the Student's t-distr. with (num_samp-1) degrees of
+      // freedom (Haldar & Mahadevan, p. 127).
+      Pecos::students_t_dist t_dist(dof);
+      Real mean_ci_delta =
+	std_dev*bmth::quantile(t_dist,0.975)/std::sqrt((Real)num_samp);
+      momentCIs(0,i) = mean - mean_ci_delta;
+      momentCIs(1,i) = mean + mean_ci_delta;
+      // std dev: chi-square distribution with (num_samp-1) degrees of freedom
+      // (Haldar & Mahadevan, p. 132).
+      Pecos::chi_squared_dist chisq(dof);
+      momentCIs(2,i) = std_dev*std::sqrt(dof/bmth::quantile(chisq, 0.975));
+      momentCIs(3,i) = std_dev*std::sqrt(dof/bmth::quantile(chisq, 0.025));
+/*
+#elif HAVE_GSL
+      // mean: the better formula does not assume known variance but requires
+      // a function for the Student's t-distr. with (num_samp-1) degrees of
+      // freedom (Haldar & Mahadevan, p. 127).
+      mean95CIDeltas[i]
+	= std_dev*gsl_cdf_tdist_Pinv(0.975,dof)/std::sqrt((Real)num_samp);
+      // std dev: chi-square distribution with (num_samp-1) degrees of freedom
+      // (Haldar & Mahadevan, p. 132).
+      stdDev95CILowerBnds[i]
+        = std_dev*std::sqrt(dof/gsl_cdf_chisq_Pinv(0.975, dof));
+      stdDev95CIUpperBnds[i]
+        = std_dev*std::sqrt(dof/gsl_cdf_chisq_Pinv(0.025, dof));
+#else
+      // mean: k_(alpha/2) = Phi^(-1)(0.975) = 1.96 (Haldar & Mahadevan,
+      // p. 123).  This simple formula assumes a known variance, which
+      // requires a sample of sufficient size (i.e., greater than 10).
+      mean95CIDeltas[i] = 1.96*std_dev/std::sqrt((Real)num_samp);
+#endif // HAVE_BOOST
+*/
+    }
+    else
+      momentCIs(0,i) = momentCIs(1,i) = momentCIs(2,i) = momentCIs(3,i) = 0.0;
+  }
+
+  if (resultsDB.active()) {
+    // archive the moments to results DB
+    MetaDataType md_moments;
+    md_moments["Row Labels"] =
+      make_metadatavalue("Mean", "Standard Deviation", "Skewness", "Kurtosis");
+    md_moments["Column Labels"] = make_metadatavalue(resp_labels);
+    resultsDB.insert(run_identifier(), resultsNames.moments_std,
+		     momentStats, md_moments);
+    // archive the confidence intervals to results DB
+    MetaDataType md;
+    md["Row Labels"] =
+      make_metadatavalue("LowerCI_Mean", "UpperCI_Mean", "LowerCI_StdDev",
+			 "UpperCI_StdDev");
+    md["Column Labels"] = make_metadatavalue(resp_labels);
+    resultsDB.insert(run_identifier(), resultsNames.moment_cis, momentCIs, md);
+  }
+}
+
+
+void NonDSampling::compute_distribution_mappings(const IntResponseMap& samples)
+{
+  // Size the output arrays here instead of in the ctor in order to support
+  // alternate sampling ctors.
+  initialize_distribution_mappings();
+  archive_allocate_mappings();
+  if (pdfOutput) {
+    computedPDFAbscissas.resize(numFunctions);
+    computedPDFOrdinates.resize(numFunctions);
+    archive_allocate_pdf();
+  }
+
+  // For the samples array, calculate the following statistics:
+  // > CDF/CCDF mappings of response levels to probability/reliability levels
+  // > CDF/CCDF mappings of probability/reliability levels to response levels
+  using boost::math::isfinite;
+  size_t i, j, k, num_obs = samples.size(), num_samp, bin_accumulator;
+  const StringArray& resp_labels = iteratedModel.response_labels();
+  RealArray sorted_samples; // STL-based array for sorting
+  SizetArray bins; Real min, max;
+
+  // check if moments are required, and if so, compute them now
+  if (momentStats.empty()) {
+    bool need_moments = false;
+    for (i=0; i<numFunctions; ++i)
+      if ( !requestedRelLevels[i].empty() ||
+	   ( !requestedRespLevels[i].empty() &&
+	     respLevelTarget == RELIABILITIES ) )
+	{ need_moments = true; break; }
+    if (need_moments) {
+      Cerr << "Error: required moments not available in compute_distribution_"
+	   << "mappings().  Call compute_moments() first." << std::endl;
+      abort_handler(-1);
+      // Issue with the following approach is that subsequent invocations of
+      // compute_distribution_mappings() without compute_moments() would not
+      // be detected and old moments would be used.  Performing more rigorous
+      // bookkeeping of moment updates is overkill for current use cases.
+      //Cerr << "Warning: moments not available in compute_distribution_"
+      //     << "mappings(); computing them now." << std::endl;
+      //compute_moments(samples);
+    }
+  }
+
+  IntRespMCIter it;
+  for (i=0; i<numFunctions; ++i) {
+
+    // CDF/CCDF mappings: z -> p/beta/beta* and p/beta/beta* -> z
+    size_t rl_len = requestedRespLevels[i].length(),
+           pl_len = requestedProbLevels[i].length(),
+           bl_len = requestedRelLevels[i].length(),
+           gl_len = requestedGenRelLevels[i].length();
+
+    // ----------------------------------------------------------------------
+    // Preliminaries: define finite subset, sort (if needed), and bin samples
+    // ----------------------------------------------------------------------
+    num_samp = 0;
+    if (pl_len || gl_len) { // sort samples array for p/beta* -> z mappings
+      sorted_samples.clear(); sorted_samples.reserve(num_obs);
+      for (it=samples.begin(); it!=samples.end(); ++it) {
+	const Real& sample = it->second.function_value(i);
+	if (isfinite(sample))
+	  { ++num_samp; sorted_samples.push_back(sample); }
+      }
+      // sort in ascending order
+      std::sort(sorted_samples.begin(), sorted_samples.end());
+      if (pdfOutput)
+	{ min = sorted_samples[0]; max = sorted_samples[num_samp-1]; }
+      // in case of rl_len mixed with pl_len/gl_len, bin using sorted array.
+      // Note: all bins open on right end due to use of less than.
+      if (rl_len && respLevelTarget != RELIABILITIES) {
+	const RealVector& req_rl_i = requestedRespLevels[i];
+        bins.assign(rl_len+1, 0); size_t samp_cntr = 0;
+	for (j=0; j<rl_len; ++j)
+	  while (samp_cntr<num_samp && sorted_samples[samp_cntr]<req_rl_i[j])
+	    { ++bins[j]; ++samp_cntr; }
+	if (num_samp > samp_cntr)
+	  bins[rl_len] += num_samp - samp_cntr;
+      }
+    }
+    else if (rl_len && respLevelTarget != RELIABILITIES) {
+      // in case of rl_len without pl_len/gl_len, bin from original sample set
+      const RealVector& req_rl_i = requestedRespLevels[i];
+      bins.assign(rl_len+1, 0); min = DBL_MAX; max = -DBL_MAX;
+      for (it=samples.begin(); it!=samples.end(); ++it) {
+	const Real& sample = it->second.function_value(i);
+	if (isfinite(sample)) {
+	  ++num_samp;
+	  if (pdfOutput) {
+	    if (sample < min) min = sample;
+	    if (sample > max) max = sample;
+	  }
+	  // 1st PDF bin from -inf to 1st resp lev; last PDF bin from last resp
+	  // lev to +inf. Note: all bins open on right end due to use of <.
+	  bool found = false;
+	  for (k=0; k<rl_len; ++k)
+	    if (sample < req_rl_i[k])
+	      { ++bins[k]; found = true; break; }
+	  if (!found)
+	    ++bins[rl_len];
+	}
+      }
+    }
+
+    // ----------------
+    // Process mappings
+    // ----------------
+    if (rl_len) {
+      switch (respLevelTarget) {
+      case PROBABILITIES: case GEN_RELIABILITIES: {
+	// z -> p/beta* (based on binning)
+	bin_accumulator = 0;
+	for (j=0; j<rl_len; ++j) { // compute CDF/CCDF p/beta*
+	  bin_accumulator += bins[j];
+	  Real cdf_prob = (Real)bin_accumulator/(Real)num_samp;
+	  Real computed_prob = (cdfFlag) ? cdf_prob : 1. - cdf_prob;
+	  if (respLevelTarget == PROBABILITIES)
+	    computedProbLevels[i][j]   =  computed_prob;
+	  else
+	    computedGenRelLevels[i][j] = -Pecos::Phi_inverse(computed_prob);
+	}
+	break;
+      }
+      case RELIABILITIES: { // z -> beta (based on moment projection)
+	Real& mean = momentStats(0,i); Real& std_dev = momentStats(1,i);
+	for (j=0; j<rl_len; j++) {
+	  const Real& z = requestedRespLevels[i][j];
+	  if (std_dev > Pecos::SMALL_NUMBER) {
+	    Real ratio = (mean - z)/std_dev;
+	    computedRelLevels[i][j] = (cdfFlag) ? ratio : -ratio;
+	  }
+	  else
+	    computedRelLevels[i][j]
+	      = ( (cdfFlag && mean <= z) || (!cdfFlag && mean > z) )
+	      ? -Pecos::LARGE_NUMBER : Pecos::LARGE_NUMBER;
+	}
+	break;
+      }
+      }
+    }
+    for (j=0; j<pl_len+gl_len; j++) { // p/beta* -> z
+      Real p = (j<pl_len) ? requestedProbLevels[i][j] :
+	Pecos::Phi(-requestedGenRelLevels[i][j-pl_len]);
+      // since each sample has 1/N probability, a probability level can be
+      // directly converted to an index within a sorted array (index =~ p * N)
+      Real cdf_p_x_obs = (cdfFlag) ? p*(Real)num_samp : (1.-p)*(Real)num_samp;
+      // convert to an int and round down using std::floor().  Apply a small
+      // numerical adjustment so that probabilities on the boundaries
+      // (common with round probabilities and factor of 10 samples)
+      // are consistently rounded down (consistent with CDF p(g<=z)).
+      Real order = (cdf_p_x_obs > .9)
+	         ? std::pow(10., ceil(std::log10(cdf_p_x_obs))) : 0.;
+      int index = (int)std::floor(cdf_p_x_obs - order*DBL_EPSILON);
+      // clip at array ends due to possible roundoff effects
+      if (index < 0)         index = 0;
+      if (index >= num_samp) index = num_samp - 1;
+      if (j<pl_len)
+	computedRespLevels[i][j] = sorted_samples[index];
+      else
+	computedRespLevels[i][j+bl_len] = sorted_samples[index];
+    }
+    if (bl_len) {
+      Real& mean = momentStats(0,i); Real& std_dev = momentStats(1,i);
+      for (j=0; j<bl_len; j++) { // beta -> z
+	const Real& beta = requestedRelLevels[i][j];
+	computedRespLevels[i][j+pl_len] = (cdfFlag) ?
+	  mean - beta * std_dev : mean + beta * std_dev;
+      }
+    }
+
+    // archive the mappings from response levels
+    archive_from_resp(i);
+    // archive the mappings to response levels
+    archive_to_resp(i);
+
+    // ---------------------------------------------------------------------
+    // Post-process for PDF incorporating all requested/computed resp levels
+    // ---------------------------------------------------------------------
+    if (pdfOutput) {
+      size_t req_comp_rl_len = pl_len + gl_len;
+      if (respLevelTarget != RELIABILITIES) req_comp_rl_len += rl_len;
+      if (req_comp_rl_len) {
+	RealVector pdf_all_rlevs;
+	if (pl_len || gl_len) {
+	  // merge all requested & computed rlevs into pdf rlevs and sort
+	  pdf_all_rlevs.sizeUninitialized(req_comp_rl_len);
+	  // merge requested/computed --> pdf_all_rlevs
+	  int offset = 0;
+	  if (rl_len && respLevelTarget != RELIABILITIES) {
+	    copy_data_partial(requestedRespLevels[i], pdf_all_rlevs, 0);
+	    offset += rl_len;
+	  }
+	  if (pl_len) {
+	    copy_data_partial(computedRespLevels[i], 0, (int)pl_len,
+			      pdf_all_rlevs, offset);
+	    offset += pl_len;
+	  }
+	  if (gl_len)
+	    copy_data_partial(computedRespLevels[i], (int)(pl_len+bl_len),
+			      (int)gl_len, pdf_all_rlevs, offset);
+	  // sort combined array; retain unique entries; update req_comp_rl_len
+	  Real* start = pdf_all_rlevs.values();
+	  std::sort(start, start+req_comp_rl_len);
+	  req_comp_rl_len = std::distance(start,
+	    std::unique(start, start+req_comp_rl_len));
+	  // (re)compute bins from sorted_samples.  Note that these bins are
+	  // open on right end due to use of strictly less than.
+	  bins.assign(req_comp_rl_len+1, 0); size_t samp_cntr = 0;
+	  for (j=0; j<req_comp_rl_len; ++j)
+	    while (samp_cntr < num_samp &&
+		   sorted_samples[samp_cntr] < pdf_all_rlevs[j])
+	      { ++bins[j]; ++samp_cntr; }
+	  if (num_samp > samp_cntr)
+	    bins[req_comp_rl_len] += num_samp - samp_cntr;
+	}
+	RealVector& pdf_rlevs = (pl_len || gl_len) ?
+	  pdf_all_rlevs : requestedRespLevels[i];
+	size_t last_rl_index = req_comp_rl_len-1;
+	const Real& lev_0    = pdf_rlevs[0];
+	const Real& lev_last = pdf_rlevs[last_rl_index];
+	// to properly sum to 1, final PDF bin must be closed on right end.
+	// --> where the max sample value defines the last response level,
+	//     move any max samples on right boundary inside last PDF bin.
+	if (max <= lev_last && bins[req_comp_rl_len]) {
+	  bins[req_comp_rl_len-1] += bins[req_comp_rl_len];
+	  bins[req_comp_rl_len]    = 0;
+	}
+
+	// compute computedPDF{Abscissas,Ordinates} from bin counts and widths
+	size_t pdf_size = last_rl_index;
+	if (min < lev_0)    ++pdf_size;
+	if (max > lev_last) ++pdf_size;
+	RealVector& abs_i = computedPDFAbscissas[i]; abs_i.resize(pdf_size+1);
+	RealVector& ord_i = computedPDFOrdinates[i]; ord_i.resize(pdf_size);
+	size_t offset = 0;
+	if (min < lev_0) {
+	  abs_i[0] = min;
+	  ord_i[0] = (Real)bins[0]/(Real)num_samp/(lev_0 - min);
+	  offset = 1;
+	}
+	for (j=0; j<last_rl_index; ++j) {
+	  abs_i[j+offset] = pdf_rlevs[j];
+	  ord_i[j+offset]
+	    = (Real)bins[j+1]/(Real)num_samp/(pdf_rlevs[j+1] - pdf_rlevs[j]);
+	}
+	if (max > lev_last) {
+	  abs_i[pdf_size-1] = pdf_rlevs[last_rl_index];
+	  abs_i[pdf_size]   = max;
+	  ord_i[pdf_size-1]
+	    = (Real)bins[req_comp_rl_len]/(Real)num_samp/(max - lev_last);
+	}
+	else
+	  abs_i[pdf_size] = pdf_rlevs[last_rl_index];
+      }
+      archive_pdf(i);
+    }
+  }
+}
+
+
+void NonDSampling::update_final_statistics()
+{
+  //if (finalStatistics.is_null())
+  //  initialize_final_statistics();
+
+  if (epistemicStats) {
+    size_t i, cntr = 0;
+    for (i=0; i<numFunctions; ++i) {
+      finalStatistics.function_value(extremeValues(0, i), cntr++);
+      finalStatistics.function_value(extremeValues(1, i), cntr++);
+    }
+  }
+  else // moments + level mappings
+    NonD::update_final_statistics();
+}
+
+
+void NonDSampling::print_statistics(std::ostream& s) const
+{
+  if (epistemicStats) // output only min & max values in the epistemic case
+    print_intervals(s);
+  else {
+    print_moments(s);
+    if (totalLevelRequests) {
+      print_distribution_mappings(s);
+      if (pdfOutput)
+	print_pdf_mappings(s);
+      print_system_mappings(s);
+    }
+  }
+  if (!subIteratorFlag) {
+    StringMultiArrayConstView
+      acv_labels  = iteratedModel.all_continuous_variable_labels(),
+      adiv_labels = iteratedModel.all_discrete_int_variable_labels(),
+      adsv_labels = iteratedModel.all_discrete_string_variable_labels(),
+      adrv_labels = iteratedModel.all_discrete_real_variable_labels();
+    size_t cv_start, num_cv, div_start, num_div, dsv_start, num_dsv,
+      drv_start, num_drv;
+    mode_counts(iteratedModel, cv_start, num_cv, div_start, num_div,
+		dsv_start, num_dsv, drv_start, num_drv);
+    StringMultiArrayConstView
+      cv_labels  =
+        acv_labels[boost::indices[idx_range(cv_start, cv_start+num_cv)]],
+      div_labels =
+        adiv_labels[boost::indices[idx_range(div_start, div_start+num_div)]],
+      dsv_labels =
+        adsv_labels[boost::indices[idx_range(dsv_start, dsv_start+num_dsv)]],
+      drv_labels =
+        adrv_labels[boost::indices[idx_range(drv_start, drv_start+num_drv)]];
+    // Don't output for now
+    // nonDSampCorr.print_correlations(s, cv_labels, div_labels, dsv_labels,
+				//     drv_labels,iteratedModel.response_labels());
+  }
+}
+
+
+void NonDSampling::print_intervals(std::ostream& s) const
+{
+  const StringArray& resp_labels = iteratedModel.response_labels();
+
+  s << std::scientific << std::setprecision(write_precision)
+    << "\nMin and Max values for each response function:\n";
+  for (size_t i=0; i<numFunctions; ++i)
+    s << resp_labels[i] << ":  Min = " << extremeValues(0, i)
+      << "  Max = " << extremeValues(1, i) << '\n';
+}
+
+
+void NonDSampling::print_moments(std::ostream& s) const
+{
+  const StringArray& resp_labels = iteratedModel.response_labels();
+
+  s << std::scientific << std::setprecision(write_precision);
+
+  size_t i, j, width = write_precision+7;
+
+  s << "\nMoment-based statistics for each response function:\n"
+    << std::setw(width+15) << "Mean"     << std::setw(width+1) << "Std Dev"
+    << std::setw(width+1)  << "Skewness" << std::setw(width+2) << "Kurtosis\n";
+  //<< std::setw(width+2)  << "Coeff of Var\n";
+  for (i=0; i<numFunctions; ++i) {
+    const Real* moments_i = momentStats[i];
+    s << std::setw(14) << resp_labels[i];
+    for (j=0; j<4; ++j)
+      s << ' ' << std::setw(width) << moments_i[j];
+    s << '\n';
+  }
+  if (numSamples > 1) {
+    // output 95% confidence intervals as (,) interval
+    s << "\n95% confidence intervals for each response function:\n"
+      << std::setw(width+15) << "LowerCI_Mean" << std::setw(width+1)
+      << "UpperCI_Mean" << std::setw(width+1)  << "LowerCI_StdDev"
+      << std::setw(width+2) << "UpperCI_StdDev\n";
+    for (i=0; i<numFunctions; ++i)
+      s << std::setw(14) << resp_labels[i]
+	<< ' ' << std::setw(width) << momentCIs(0, i)
+	<< ' ' << std::setw(width) << momentCIs(1, i)
+	<< ' ' << std::setw(width) << momentCIs(2, i)
+	<< ' ' << std::setw(width) << momentCIs(3, i) << '\n';
+  }
+}
+
+
+void NonDSampling::print_pdf_mappings(std::ostream& s) const
+{
+  const StringArray& resp_labels = iteratedModel.response_labels();
+
+  // output CDF/CCDF probabilities resulting from binning or CDF/CCDF
+  // reliabilities resulting from number of std devs separating mean & target
+  s << std::scientific << std::setprecision(write_precision)
+    << "\nProbability Density Function (PDF) histograms for each response "
+    << "function:\n";
+  size_t i, j, width = write_precision+7;
+  for (i=0; i<numFunctions; ++i) {
+    if (!requestedRespLevels[i].empty() || !computedRespLevels[i].empty()) {
+      s << "PDF for " << resp_labels[i] << ":\n"
+	<< "          Bin Lower          Bin Upper      Density Value\n"
+	<< "          ---------          ---------      -------------\n";
+
+      size_t pdf_len = computedPDFOrdinates[i].length();
+      for (j=0; j<pdf_len; ++j)
+	s << "  " << std::setw(width) << computedPDFAbscissas[i][j] << "  "
+	  << std::setw(width) << computedPDFAbscissas[i][j+1] << "  "
+	  << std::setw(width) << computedPDFOrdinates[i][j] << '\n';
+    }
+  }
+}
+
+
+void NonDSampling::archive_allocate_pdf() // const
+{
+  if (!resultsDB.active())  return;
+
+  // pdf per function, possibly empty
+  MetaDataType md;
+  md["Array Spans"] = make_metadatavalue("Response Functions");
+  md["Row Labels"] =
+    make_metadatavalue("Bin Lower", "Bin Upper", "Density Value");
+  resultsDB.array_allocate<RealMatrix>
+    (run_identifier(), resultsNames.pdf_histograms, numFunctions, md);
+}
+
+
+void NonDSampling::archive_pdf(size_t i) // const
+{
+  if (!resultsDB.active()) return;
+
+  size_t pdf_len = computedPDFOrdinates[i].length();
+  RealMatrix pdf(3, pdf_len);
+  for (size_t j=0; j<pdf_len; ++j) {
+    pdf(0, j) = computedPDFAbscissas[i][j];
+    pdf(1, j) = computedPDFAbscissas[i][j+1];
+    pdf(2, j) = computedPDFOrdinates[i][j];
+  }
+
+  resultsDB.array_insert<RealMatrix>
+    (run_identifier(), resultsNames.pdf_histograms, i, pdf);
+}
+
+} // namespace Dakota
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-4.2-altix64-cosmos.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-4.2-altix64-cosmos.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-4.2-altix64-cosmos.sh	(revision 27955)
@@ -0,0 +1,97 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+
+#Untar 
+tar -zxvf  Dakota_4_3.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
+patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
+patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+
+#Configure dakota
+cd src
+./configure \ 
+	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
+	--without-graphics  \
+	--with-pic \
+	--disable-mpi \
+	--with-blas=/opt/intel/mkl/9.1.023/lib/64/libmkl.so \
+	--with-lapack=/opt/intel/mkl/9.1.023/lib/64/libmkl_lapack.so 
+cd ..
+
+#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+#flag to the compilation.
+cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+mv temp ./src/methods/NCSUOpt/Makefile
+
+cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+
+cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-nappspack/Makefile
+
+cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-cddlib/Makefile 
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile 
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile 
+
+cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-conveyor/Makefile 
+
+cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-appspack/Makefile 
+
+cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/colin/src/Makefile
+
+cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/coliny/src/Makefile
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+
+cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/packages/ampl/Makefile 
+
+#Compile and install dakota
+cd src 
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+cd install/lib
+mv libamplsolver.a libamplsolver.a.bak
+ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-4.2-discover.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-4.2-discover.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-4.2-discover.sh	(revision 27955)
@@ -0,0 +1,97 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src
+rm -rf install
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+
+#Untar 
+tar -zxvf  Dakota_4_3.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
+patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
+patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+
+#Configure dakota
+cd src
+./configure \
+--prefix="$ISSM_DIR/externalpackages/dakota/install/" \
+--without-graphics  \
+--with-pic \
+--disable-mpi \
+--with-blas="-L/usr/local/intel/mkl/10.1.2.024/lib/64 -lmkl_lapack -lmkl -lguide -lpthread" \
+--with-lapack="-L/usr/local/intel/mkl/10.1.2.024/lib/64 -lmkl_lapack -lmkl -lguide -lpthread"
+cd ..
+
+#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+#flag to the compilation.
+cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+mv temp ./src/methods/NCSUOpt/Makefile
+
+cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+
+cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-nappspack/Makefile
+
+cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-cddlib/Makefile
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile
+
+cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-conveyor/Makefile
+
+cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-appspack/Makefile
+
+cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/colin/src/Makefile
+
+cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/coliny/src/Makefile
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile
+
+cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/packages/ampl/Makefile
+
+#Compile and install dakota
+cd src
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+cd install/lib
+mv libamplsolver.a libamplsolver.a.bak
+ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-4.2-linux64-cloud.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-4.2-linux64-cloud.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-4.2-linux64-cloud.sh	(revision 27955)
@@ -0,0 +1,97 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+
+#Untar 
+tar -zxvf  Dakota_4_3.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
+patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
+patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+
+#Configure dakota
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
+	--without-graphics  \
+	--with-pic \
+	--disable-mpi \
+	--with-blas=/usr/lib/libblas.so \
+	--with-lapack=/usr/lib/liblapack.so
+cd ..
+
+#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+#flag to the compilation.
+cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+mv temp ./src/methods/NCSUOpt/Makefile
+
+cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+
+cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-nappspack/Makefile
+
+cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-cddlib/Makefile 
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile 
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile 
+
+cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-conveyor/Makefile 
+
+cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-appspack/Makefile 
+
+cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/colin/src/Makefile
+
+cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/coliny/src/Makefile
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+
+cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/packages/ampl/Makefile 
+
+#Compile and install dakota
+cd src 
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+cd install/lib
+mv libamplsolver.a libamplsolver.a.bak
+ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-4.2-linux64-murdo.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-4.2-linux64-murdo.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-4.2-linux64-murdo.sh	(revision 27955)
@@ -0,0 +1,97 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+
+#Untar 
+tar -zxvf  Dakota_4_3.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
+patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
+patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+
+#Configure dakota
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
+	--without-graphics  \
+	--with-pic \
+	--disable-mpi \
+	--with-blas=/usr/lib64/libblas.so.3.1.1 \
+	--with-lapack=/usr/lib64/liblapack.so.3.1.1
+cd ..
+
+#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+#flag to the compilation.
+cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+mv temp ./src/methods/NCSUOpt/Makefile
+
+cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+
+cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-nappspack/Makefile
+
+cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-cddlib/Makefile 
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile 
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile 
+
+cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-conveyor/Makefile 
+
+cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2  -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-appspack/Makefile 
+
+cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/colin/src/Makefile
+
+cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/coliny/src/Makefile
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+
+cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/packages/ampl/Makefile 
+
+#Compile and install dakota
+cd src 
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+cd install/lib
+mv libamplsolver.a libamplsolver.a.bak
+ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-4.2-macosx64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-4.2-macosx64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-4.2-macosx64.sh	(revision 27955)
@@ -0,0 +1,97 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/Dakota_4_3.src.tar.gz' 'Dakota_4_3.src.tar.gz'
+
+#Untar 
+tar -zxvf  Dakota_4_3.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/4.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/4.2/ParallelLibrary.H.patch
+patch src/src/NIDRProblemDescDB.C configs/4.2/NIDRProblemDescDB.C.patch
+patch src/src/NonDSampling.C configs/4.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/4.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/4.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+#patch -R src/packages/Pecos/src/LHSDriver.cpp configs/4.2/LHSDriver.cpp.patch
+
+#Configure dakota
+cd src
+./configure \
+   --prefix="$ISSM_DIR/externalpackages/dakota/install" \
+   --without-graphics  \
+   --with-pic \
+   --disable-mpi \
+   --with-blas="-L$ISSM_DIR/externalpackages/petsc/install/lib -lfblas " \
+   --with-lapack="-L$ISSM_DIR/externalpackages/petsc/install/lib -lflapack "
+cd ..
+
+#Before compiling, if running on 64 bits, we need to active fPIC compilation. Some packages 
+#do not register -fPIC in Dakota, which is a problem. Edit the faulty Makefiles and add the -fPIC 
+#flag to the compilation.
+cat ./src/methods/NCSUOpt/Makefile | sed 's/FFLAGS = -g -O2/FFLAGS = -g -O2 -fPIC/g' >  temp
+mv temp ./src/methods/NCSUOpt/Makefile
+
+cat ./src/methods/acro/packages/pebbl/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/pebbl/src/Makefile
+
+cat ./src/methods/hopspack/src-nappspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-nappspack/Makefile
+
+cat ./src/methods/hopspack/src-cddlib/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-cddlib/Makefile 
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CFLAGS = -g -O2/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile 
+
+cat ./src/methods/hopspack/src-shared/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-shared/Makefile 
+
+cat ./src/methods/hopspack/src-conveyor/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/methods/hopspack/src-conveyor/Makefile 
+
+cat ./src/methods/hopspack/src-appspack/Makefile | sed 's/CXXFLAGS = -g -O2/CXXFLAGS = -g -O2 -fPIC/g' > temp
+mv temp ./src/methods/hopspack/src-appspack/Makefile 
+
+cat ./src/methods/acro/packages/colin/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/colin/src/Makefile
+
+cat ./src/methods/acro/packages/coliny/src/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CXXFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp ./src/methods/acro/packages/coliny/src/Makefile
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CFLAGS = -O2/CFLAGS = -O2 -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+
+cat ./src/methods/acro/packages/tpl/3po/Makefile | sed 's/CXXFLAGS = -O2 -fpermissive/CFLAGS = -O2 -fpermissive -fPIC/g' > temp
+mv temp  ./src/methods/acro/packages/tpl/3po/Makefile 
+
+cat ./src/packages/ampl/Makefile | sed 's/CFLAGS = -g -O2 -D_NONSTD_SOURCE/CFLAGS = -g -O2 -fPIC/g' > temp
+mv temp  ./src/packages/ampl/Makefile 
+
+#Compile and install dakota
+cd src 
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
+
+#Weird behaviour of Dakota: libamplsolver.a and amplsolver.a are not the same thing!
+cd install/lib
+mv libamplsolver.a libamplsolver.a.bak
+ln -s ../../src/packages/ampl/amplsolver.a ./libamplsolver.a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.2-discover.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.2-discover.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.2-discover.sh	(revision 27955)
@@ -0,0 +1,52 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src
+rm -rf install
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/Dakota_5_2.src.tar.gz' 'Dakota_5_2.src.tar.gz'
+
+#Untar 
+tar -zxvf Dakota_5_2.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/5.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/5.2/ParallelLibrary.H.patch
+#patch src/src/NIDRProblemDescDB.C configs/5.2/NIDRProblemDescDB.C.patch    #  causes segfault in 5.2
+patch src/src/NonDSampling.C configs/5.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/5.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/5.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.2/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd src
+./configure \
+--prefix="$ISSM_DIR/externalpackages/dakota/install/" \
+--without-graphics  \
+--with-pic \
+--disable-mpi \
+--with-plugin \
+--with-blas="-L/usr/local/intel/mkl/10.1.2.024/lib/64 -lmkl_lapack -lmkl -lguide -lpthread" \
+--with-lapack="-L/usr/local/intel/mkl/10.1.2.024/lib/64 -lmkl_lapack -lmkl -lguide -lpthread"
+
+cd ..
+
+#Compile and install dakota
+cd src
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.2-linux64-caladan.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.2-linux64-caladan.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.2-linux64-caladan.sh	(revision 27955)
@@ -0,0 +1,48 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/Dakota_5_2.src.tar.gz' 'Dakota_5_2.src.tar.gz'
+
+#Untar 
+tar -zxvf Dakota_5_2.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/5.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/5.2/ParallelLibrary.H.patch
+patch src/src/NonDSampling.C configs/5.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/5.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/5.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.2/pecos_global_defs.hpp.patch
+patch src/packages/teuchos/src/Teuchos_ConfigDefs.hpp configs/5.2/Teuchos_ConfigDefs.hpp.patch
+
+#Configure dakota
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
+	--without-graphics  \
+	--with-pic \
+	--disable-mpi \
+	--with-blas="$ISSM_DIR/externalpackages/petsc/install/lib/libfblas.a" \
+	--with-lapack="$ISSM_DIR/externalpackages/petsc/install/lib/libflapack.a"
+
+#Compile and install dakota
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.2-linux64-larsen.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.2-linux64-larsen.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.2-linux64-larsen.sh	(revision 27955)
@@ -0,0 +1,49 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/Dakota_5_2.src.tar.gz' 'Dakota_5_2.src.tar.gz'
+
+#Untar 
+tar -zxvf Dakota_5_2.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/5.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/5.2/ParallelLibrary.H.patch
+patch src/src/NonDSampling.C configs/5.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/5.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/5.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.2/pecos_global_defs.hpp.patch
+patch src/packages/teuchos/src/Teuchos_ConfigDefs.hpp configs/5.2/Teuchos_ConfigDefs.hpp.patch
+
+#Configure dakota
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
+	--without-graphics  \
+	--with-pic \
+	--disable-mpi \
+	--with-plugin \
+	--with-blas="$ISSM_DIR/externalpackages/petsc/install/lib/libfblas.a" \
+	--with-lapack="$ISSM_DIR/externalpackages/petsc/install/lib/libflapack.a"
+
+#Compile and install dakota
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.2-macosx64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.2-macosx64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.2-macosx64.sh	(revision 27955)
@@ -0,0 +1,51 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/Dakota_5_2.src.tar.gz' 'Dakota_5_2.src.tar.gz'
+
+#Untar 
+tar -zxvf Dakota_5_2.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/5.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/5.2/ParallelLibrary.H.patch
+#patch src/src/NIDRProblemDescDB.C configs/5.2/NIDRProblemDescDB.C.patch    #  causes segfault in 5.2
+patch src/src/NonDSampling.C configs/5.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/5.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/5.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.2/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
+	--without-graphics  \
+	--with-pic \
+	--disable-mpi \
+	--with-plugin \
+	--with-blas="-L$ISSM_DIR/externalpackages/petsc/install/lib -lfblas " \
+	--with-lapack="-L$ISSM_DIR/externalpackages/petsc/install/lib -lflapack "
+cd ..
+
+#Compile and install dakota
+cd src 
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.3.1-linux64-caladan.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.3.1-linux64-caladan.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.3.1-linux64-caladan.sh	(revision 27955)
@@ -0,0 +1,51 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/dakota-5.3.1-public-src.tar.gz' 'dakota-5.3.1-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-5.3.1-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-5.3.1.src/* src
+rm -rf dakota-5.3.1.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/5.3.1/BuildDakotaCustom.cmake.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/5.3.1/DakotaDev.cmake.patch
+#patch $DAK_SRC/CMakeLists.txt configs/5.3.1/CMakeLists.txt.patch
+
+#Apply patches
+patch src/src/ParallelLibrary.cpp configs/5.3.1/ParallelLibrary.cpp.patch
+patch src/src/ParallelLibrary.hpp configs/5.3.1/ParallelLibrary.hpp.patch
+patch src/src/NonDSampling.cpp configs/5.3.1/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/5.3.1/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.3.1/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+cmake -C $DAK_SRC/cmake/BuildDakotaCustom.cmake -C $DAK_SRC/cmake/DakotaDev.cmake $DAK_SRC -DBLAS_LIBS=$ISSM_DIR/externalpackages/petsc/install/lib/libfblas.a -DLAPACK_LIBS=$ISSM_DIR/externalpackages/petsc/install/lib/libflapack.a
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.3.1-linux64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.3.1-linux64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.3.1-linux64.sh	(revision 27955)
@@ -0,0 +1,51 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/dakota-5.3.1-public-src.tar.gz' 'dakota-5.3.1-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-5.3.1-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-5.3.1.src/* src
+rm -rf dakota-5.3.1.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/5.3.1/BuildDakotaCustom.cmake.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/5.3.1/DakotaDev.cmake.patch
+#patch $DAK_SRC/CMakeLists.txt configs/5.3.1/CMakeLists.txt.patch
+
+#Apply patches
+patch src/src/ParallelLibrary.cpp configs/5.3.1/ParallelLibrary.cpp.patch
+patch src/src/ParallelLibrary.hpp configs/5.3.1/ParallelLibrary.hpp.patch
+patch src/src/NonDSampling.cpp configs/5.3.1/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/5.3.1/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.3.1/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+cmake -C $DAK_SRC/cmake/BuildDakotaCustom.cmake -C $DAK_SRC/cmake/DakotaDev.cmake $DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.3.1-lonestar.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.3.1-lonestar.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.3.1-lonestar.sh	(revision 27955)
@@ -0,0 +1,51 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/dakota-5.3.1-public-src.tar.gz' 'dakota-5.3.1-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-5.3.1-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-5.3.1.src/* src
+rm -rf dakota-5.3.1.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/5.3.1/BuildDakotaCustom.cmake.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/5.3.1/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/5.3.1/CMakeLists.txt.lonestar.patch
+
+#Apply patches
+patch src/src/ParallelLibrary.cpp configs/5.3.1/ParallelLibrary.cpp.patch
+patch src/src/ParallelLibrary.hpp configs/5.3.1/ParallelLibrary.hpp.patch
+patch src/src/NonDSampling.cpp configs/5.3.1/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/5.3.1/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.3.1/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+cmake -C $DAK_SRC/cmake/BuildDakotaCustom.cmake -C $DAK_SRC/cmake/DakotaDev.cmake $DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.3.1-macosx64-snowleopard.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.3.1-macosx64-snowleopard.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.3.1-macosx64-snowleopard.sh	(revision 27955)
@@ -0,0 +1,62 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/dakota-5.3.1-public-src.tar.gz' 'dakota-5.3.1-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-5.3.1-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-5.3.1.src/* src
+rm -rf dakota-5.3.1.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/5.3.1/BuildDakotaCustom.cmake.mac.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/5.3.1/DakotaDev.cmake.patch
+
+#Apply patches
+patch src/src/ParallelLibrary.cpp configs/5.3.1/ParallelLibrary.cpp.patch
+patch src/src/ParallelLibrary.hpp configs/5.3.1/ParallelLibrary.hpp.patch
+patch src/src/NonDSampling.cpp configs/5.3.1/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/5.3.1/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.3.1/pecos_global_defs.hpp.patch
+
+export BOOST_ROOT=$ISSM_DIR/externalpackages/boost/install
+
+#Configure dakota
+# Set your local gcc compiler here
+cd $DAK_BUILD
+cmake -DBoost_NO_BOOST_CMAKE=TRUE \
+    -DBoost_NO_SYSTEM_PATHS=TRUE \
+    -DBOOST_ROOT:PATHNAME=$BOOST_ROOT \
+    -DBoost_LIBRARY_DIRS:FILEPATH=${BOOST_ROOT}/lib \
+	 -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCMAKE_CC_COMPILER=/usr/bin/gcc \
+	 -DCMAKE_Fortran_COMPILER=/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran \
+    -C $DAK_SRC/cmake/BuildDakotaCustom.cmake -C $DAK_SRC/cmake/DakotaDev.cmake $DAK_SRC
+
+#-DCMAKE_CXX_COMPILER=/usr/local/gfortran/bin/x86_64-apple-darwin10-g++ -DCMAKE_Fortran_COMPILER=/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran
+
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.3.1-macosx64-yosemite.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.3.1-macosx64-yosemite.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.3.1-macosx64-yosemite.sh	(revision 27955)
@@ -0,0 +1,51 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/dakota-5.3.1-public-src.tar.gz' 'dakota-5.3.1-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-5.3.1-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-5.3.1.src/* src
+rm -rf dakota-5.3.1.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/5.3.1/BuildDakotaCustom.cmake.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/5.3.1/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/5.3.1/CMakeLists.txt.patch
+
+#Apply patches
+patch src/src/ParallelLibrary.cpp configs/5.3.1/ParallelLibrary.cpp.patch
+patch src/src/ParallelLibrary.hpp configs/5.3.1/ParallelLibrary.hpp.patch
+patch src/src/NonDSampling.cpp configs/5.3.1/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/5.3.1/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.3.1/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+cmake -D CMAKE_C_COMPILER=/usr/local/gfortran/bin/gcc -D CMAKE_CXX_COMPILER=/usr/local/gfortran/bin/g++ -D CMAKE_Fortran_COMPILER=/usr/local/gfortran/bin/gfortran -D LDFLAGS="-std=gnu++0x" -C $DAK_SRC/cmake/BuildDakotaCustom.cmake -C $DAK_SRC/cmake/DakotaDev.cmake $DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.3.1-macosx64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.3.1-macosx64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-5.3.1-macosx64.sh	(revision 27955)
@@ -0,0 +1,62 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/dakota-5.3.1-public-src.tar.gz' 'dakota-5.3.1-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-5.3.1-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-5.3.1.src/* src
+rm -rf dakota-5.3.1.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/5.3.1/BuildDakotaCustom.cmake.mac.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/5.3.1/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/5.3.1/CMakeLists.txt.patch
+
+#Apply patches
+patch src/src/ParallelLibrary.cpp configs/5.3.1/ParallelLibrary.cpp.patch
+patch src/src/ParallelLibrary.hpp configs/5.3.1/ParallelLibrary.hpp.patch
+patch src/src/NonDSampling.cpp configs/5.3.1/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/5.3.1/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.3.1/pecos_global_defs.hpp.patch
+
+export BOOST_ROOT=$ISSM_DIR/externalpackages/boost/install
+
+#Configure dakota
+# Set your local gcc compiler here
+cd $DAK_BUILD
+cmake -DBoost_NO_BOOST_CMAKE=TRUE \
+    -DBoost_NO_SYSTEM_PATHS=TRUE \
+    -DBOOST_ROOT:PATHNAME=$BOOST_ROOT \
+    -DBoost_LIBRARY_DIRS:FILEPATH=${BOOST_ROOT}/lib \
+	 -DCMAKE_CXX_COMPILER=g++ -DCMAKE_CC_COMPILER=gcc \
+    -C $DAK_SRC/cmake/BuildDakotaCustom.cmake -C $DAK_SRC/cmake/DakotaDev.cmake $DAK_SRC
+
+#-DCMAKE_CXX_COMPILER=/usr/local/gfortran/bin/x86_64-apple-darwin10-g++ -DCMAKE_Fortran_COMPILER=/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran
+
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-discover.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-discover.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-discover.sh	(revision 27955)
@@ -0,0 +1,64 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/dakota-6.2-public.src.tar.gz' 'dakota-6.2-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-6.2-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-6.2.0.src/* src
+rm -rf dakota-6.2.0.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+export MPIHOME=$ISSM_DIR/externalpackages/mpich/install
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/6.2/BuildDakotaCustom.cmake.discover.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/6.2/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/6.2/CMakeLists.txt.discover20.patch
+
+#Apply patches
+patch src/src/NonDSampling.cpp configs/6.2/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/6.2/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/6.2/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+
+cmake -D CMAKE_C_COMPILER=mpicc \
+	-D CMAKE_CXX_COMPILER=mpicxx \
+	-D CMAKE_Fortran_COMPILER=/usr/bin/gfortran \
+	-DCMAKE_CXX_FLAGS="-lstdc++ -lirc -lsvml -limf" \
+	-DBUILD_SHARED_LIBS=ON \
+	-DBUILD_STATIC_LIBS=OFF \
+	-DBoost_NO_BOOST_CMAKE=TRUE \
+	-DHAVE_ACRO=OFF \
+	-DHAVE_JEGA=OFF \
+	-DHAVE_QUESO=ON \
+	-DDAKOTA_HAVE_GSL=ON \
+	-C $DAK_SRC/cmake/BuildDakotaCustom.cmake \
+	-C $DAK_SRC/cmake/DakotaDev.cmake \
+	$DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-linux-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-linux-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-linux-static.sh	(revision 27955)
@@ -0,0 +1,94 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="6.2"
+
+PREFIX="${ISSM_DIR}/externalpackages/dakota/install" # Set to location where external package should be installed
+
+# Find libgfortran and libgcc so we do not have to hardcode them
+#
+# TODO:
+# - Move this to etc/environment.sh
+# - Test if -static-libgfortran flag will avoid all of this.
+# - Otherwise, refactor this to work with other gfortran installations.
+#
+echo "Finding libgfortran..."
+LIBGFORTRAN=$(find /usr -name libgfortran* 2>/dev/null | egrep -n libgfortran.a | sed "s/[0-9]*://g" | head -1)
+LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+LIBGCC=$(find ${LIBGFORTRAN_ROOT} -name libgcc* 2>/dev/null | egrep -n libgcc.a | sed "s/[0-9]*://g" | head -1)
+
+## Environment
+#
+export BLAS_LIBS="-L${BLAS_ROOT}/lib -lfblas ${LIBGFORTRAN_ROOT}/libgfortran.a ${LIBGFORTRAN_ROOT}/libquadmath.a ${LIBGCC}" # Need to export BLAS_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+export DAK_BUILD=${ISSM_DIR}/externalpackages/dakota/build # DO NOT CHANGE THIS
+export DAK_INSTALL=${PREFIX} # DO NOT CHANGE THIS
+export DAK_SRC=${ISSM_DIR}/externalpackages/dakota/src # DO NOT CHANGE THIS
+export LAPACK_LIBS="-L${LAPACK_ROOT}/lib -lflapack -L/usr/lib/x86_64-linux-gnu ${LIBGFORTRAN_ROOT}/libgfortran.a ${LIBGFORTRAN_ROOT}/libquadmath.a ${LIBGCC}" # Need to export LAPACK_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+
+# Cleanup
+rm -rf ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
+mkdir -p ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
+
+# Download source
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/dakota-${VER}-public.src.tar.gz" "dakota-${VER}-public-src.tar.gz"
+
+# Unpack source
+tar -zxvf dakota-${VER}-public-src.tar.gz
+
+# Move source to 'src' directory
+mv dakota-${VER}.0.src/* ${DAK_SRC}
+rm -rf dakota-${VER}.0.src
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/${VER}/packages/DDACE/src/Analyzer/MainEffectsExcelOutput.cpp ${DAK_SRC}/packages/DDACE/src/Analyzer
+cp configs/${VER}/packages/queso/src/misc/src/1DQuadrature.C ${DAK_SRC}/packages/queso/src/misc/src
+cp configs/${VER}/packages/surfpack/src/surfaces/nkm/NKM_KrigingModel.cpp ${DAK_SRC}/packages/surfpack/src/surfaces/nkm
+cp configs/${VER}/packages/VPISparseGrid/src/sandia_rules.cpp ${DAK_SRC}/packages/VPISparseGrid/src
+cp configs/${VER}/src/DakotaInterface.cpp ${DAK_SRC}/src
+cp configs/${VER}/src/NonDLocalReliability.cpp ${DAK_SRC}/src
+cp configs/${VER}/src/NonDSampling.cpp ${DAK_SRC}/src
+
+# Copy customized source and configuration files specific to Linux to 'src' directory
+cp configs/${VER}/linux/cmake/BuildDakotaCustom.cmake ${DAK_SRC}/cmake
+cp configs/${VER}/linux/cmake/DakotaDev.cmake ${DAK_SRC}/cmake
+
+# Disable requirement of Python 2 for TriBITS
+sed -i'' -e 's|SET(PythonInterp_FIND_VERSION|#SET(PythonInterp_FIND_VERSION|' ${DAK_SRC}/packages/teuchos/cmake/tribits/package_arch/TribitsFindPythonInterp.cmake
+
+# Configure
+cd ${DAK_BUILD}
+cmake \
+	-DBUILD_SHARED_LIBS=OFF \
+	-DBUILD_STATIC_LIBS=ON \
+	-DCMAKE_C_COMPILER=${MPI_HOME}/bin/mpicc \
+	-DCMAKE_C_FLAGS="-fPIC -Wno-error=implicit-function-declaration" \
+	-DCMAKE_CXX_COMPILER=${MPI_HOME}/bin/mpicxx \
+	-DCMAKE_CXX_FLAGS="-fPIC" \
+	-DCMAKE_CXX_STANDARD="11" \
+	-DCMAKE_Fortran_COMPILER=${MPI_HOME}/bin/mpif77 \
+	-DBoost_NO_BOOST_CMAKE=TRUE \
+	-DHAVE_ACRO=OFF \
+	-DHAVE_JEGA=OFF \
+	-DHAVE_QUESO=ON \
+	-DDAKOTA_HAVE_GSL=ON \
+	-C${DAK_SRC}/cmake/BuildDakotaCustom.cmake \
+	-C${DAK_SRC}/cmake/DakotaDev.cmake \
+	${DAK_SRC}
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+
+cd ${DAK_INSTALL}
+
+# Comment out definition of HAVE_MPI in Teuchos config header file in order to
+# avoid conflict with our definition
+sed -i -e "s/#define HAVE_MPI/\/* #define HAVE_MPI *\//g" include/Teuchos_config.h
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-linux.sh	(revision 27955)
@@ -0,0 +1,90 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="6.2"
+
+PREFIX="${ISSM_DIR}/externalpackages/dakota/install" # Set to location where external package should be installed
+
+# Find libgfortran so that we do not have to hardcode it.
+#
+# TODO:
+# - Move this to etc/environment.sh
+#
+echo "Finding libgfortran..."
+LIBGFORTRAN=$(find /usr -name libgfortran* 2>/dev/null | egrep -n libgfortran.a | sed "s/[0-9]*://g" | head -1)
+LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+
+## Environment
+#
+export BLAS_LIBS="-L${BLAS_ROOT}/lib -lfblas -L${LIBGFORTRAN_ROOT} -lgfortran" # Need to export BLAS_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+export DAK_BUILD=${ISSM_DIR}/externalpackages/dakota/build # DO NOT CHANGE THIS
+export DAK_INSTALL=${PREFIX} # DO NOT CHANGE THIS
+export DAK_SRC=${ISSM_DIR}/externalpackages/dakota/src # DO NOT CHANGE THIS
+export LAPACK_LIBS="-L${LAPACK_ROOT}/lib -lflapack -L${LIBGFORTRAN_ROOT} -lgfortran" # Need to export LAPACK_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+
+# Cleanup
+rm -rf ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
+mkdir -p ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
+
+# Download source
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/dakota-${VER}-public.src.tar.gz" "dakota-${VER}-public-src.tar.gz"
+
+# Unpack source
+tar -zxvf dakota-${VER}-public-src.tar.gz
+
+# Move source to 'src' directory
+mv dakota-${VER}.0.src/* ${DAK_SRC}
+rm -rf dakota-${VER}.0.src
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/${VER}/packages/DDACE/src/Analyzer/MainEffectsExcelOutput.cpp ${DAK_SRC}/packages/DDACE/src/Analyzer
+cp configs/${VER}/packages/queso/src/misc/src/1DQuadrature.C ${DAK_SRC}/packages/queso/src/misc/src
+cp configs/${VER}/packages/surfpack/src/surfaces/nkm/NKM_KrigingModel.cpp ${DAK_SRC}/packages/surfpack/src/surfaces/nkm
+cp configs/${VER}/packages/VPISparseGrid/src/sandia_rules.cpp ${DAK_SRC}/packages/VPISparseGrid/src
+cp configs/${VER}/src/DakotaInterface.cpp ${DAK_SRC}/src
+cp configs/${VER}/src/NonDLocalReliability.cpp ${DAK_SRC}/src
+cp configs/${VER}/src/NonDSampling.cpp ${DAK_SRC}/src
+
+# Copy customized source and configuration files specific to Linux to 'src' directory
+cp configs/${VER}/linux/cmake/BuildDakotaCustom.cmake ${DAK_SRC}/cmake
+cp configs/${VER}/linux/cmake/DakotaDev.cmake ${DAK_SRC}/cmake
+
+# Disable requirement of Python 2 for TriBITS
+sed -i'' -e 's|SET(PythonInterp_FIND_VERSION|#SET(PythonInterp_FIND_VERSION|' ${DAK_SRC}/packages/teuchos/cmake/tribits/package_arch/TribitsFindPythonInterp.cmake
+
+# Configure
+cd ${DAK_BUILD}
+cmake \
+	-DBUILD_SHARED_LIBS=ON \
+	-DBUILD_STATIC_LIBS=OFF \
+	-DCMAKE_C_COMPILER=${MPI_HOME}/bin/mpicc \
+	-DCMAKE_C_FLAGS="-Wno-error=implicit-function-declaration" \
+	-DCMAKE_CXX_COMPILER=${MPI_HOME}/bin/mpicxx \
+	-DCMAKE_CXX_STANDARD="11" \
+	-DCMAKE_Fortran_COMPILER=${MPI_HOME}/bin/mpif77 \
+	-DBoost_NO_BOOST_CMAKE=TRUE \
+	-DHAVE_ACRO=OFF \
+	-DHAVE_JEGA=OFF \
+	-DHAVE_QUESO=ON \
+	-DDAKOTA_HAVE_GSL=ON \
+	-C${DAK_SRC}/cmake/BuildDakotaCustom.cmake \
+	-C${DAK_SRC}/cmake/DakotaDev.cmake \
+	${DAK_SRC}
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+
+cd ${DAK_INSTALL}
+
+# Comment out definition of HAVE_MPI in Teuchos config header file in order to
+# avoid conflict with our definition
+sed -i -e "s/#define HAVE_MPI/\/* #define HAVE_MPI *\//g" include/Teuchos_config.h
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-lonestar.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-lonestar.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-lonestar.sh	(revision 27955)
@@ -0,0 +1,63 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/dakota-6.2-public.src.tar.gz' 'dakota-6.2-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-6.2-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-6.2.0.src/* src
+rm -rf dakota-6.2.0.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+export MPIHOME=/opt/cray/pe/mpt/7.7.3/gni/mpich-intel/16.0/
+
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/6.2/BuildDakotaCustom.cmake.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/6.2/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/6.2/CMakeLists.txt.lonestar.patch
+
+#Apply patches
+patch src/src/NonDSampling.cpp configs/6.2/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/6.2/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/6.2/pecos_global_defs.hpp.patch
+patch src/packages/surfpack/src/surfaces/nkm/NKM_KrigingModel.cpp configs/6.2/NKM_KrigingModel.patch
+patch src/packages/DDACE/src/Analyzer/MainEffectsExcelOutput.cpp configs/6.2/MainEffectsExcelOutput.patch
+patch src/src/DakotaInterface.cpp configs/6.2/DakotaInterface.patch
+
+#Configure dakota
+cd $DAK_BUILD
+
+cmake -D CMAKE_C_COMPILER=mpicc \
+	   -D CMAKE_CXX_COMPILER=mpicxx \
+	   -D CMAKE_Fortran_COMPILER=mpif77 \
+		-D MPIEXEC_EXECUTABLE=/opt/apps/tacc/bin/ibrun \
+		-DHAVE_ACRO=off \
+		-DHAVE_JEGA=off \
+		-C $DAK_SRC/cmake/BuildDakotaCustom.cmake \
+		-C $DAK_SRC/cmake/DakotaDev.cmake \
+		$DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-mac-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-mac-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-mac-static.sh	(revision 27955)
@@ -0,0 +1,115 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="6.2"
+
+PREFIX="${ISSM_DIR}/externalpackages/dakota/install" # Set to location where external package should be installed
+
+# Find libgfortran and libgcc so we do not have to hardcode them
+#
+# TODO:
+# - Move this to etc/environment.sh
+# - Test if -static-libgfortran flag will avoid all of this.
+# - Otherwise, refactor this to work with other gfortran installations.
+#
+echo "Finding libgfortran..."
+LIBGFORTRAN=$(find /usr /opt -name libgfortran* 2>/dev/null | egrep -n libgfortran.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
+LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+LIBGCC=$(find ${LIBGFORTRAN_ROOT} -name libgcc* 2>/dev/null | egrep -n libgcc.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
+
+## Environment
+#
+export BLAS_LIBS="-L${BLAS_ROOT}/lib -lfblas ${LIBGFORTRAN_ROOT}/libgfortran.a ${LIBGFORTRAN_ROOT}/libquadmath.a ${LIBGCC}" # Need to export BLAS_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+export DAK_BUILD=${ISSM_DIR}/externalpackages/dakota/build # DO NOT CHANGE THIS
+export DAK_INSTALL=${PREFIX} # DO NOT CHANGE THIS
+export DAK_SRC=${ISSM_DIR}/externalpackages/dakota/src # DO NOT CHANGE THIS
+export LAPACK_LIBS="-L${LAPACK_ROOT}/lib -lflapack ${LIBGFORTRAN_ROOT}/libgfortran.a ${LIBGFORTRAN_ROOT}/libquadmath.a ${LIBGCC}" # Need to export LAPACK_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+export LDFLAGS="-framework CoreFoundation"
+
+# Cleanup
+rm -rf ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
+mkdir -p ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
+
+# Download source
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/dakota-${VER}-public.src.tar.gz" "dakota-${VER}-public-src.tar.gz"
+
+# Unpack source
+tar -zxvf dakota-${VER}-public-src.tar.gz
+
+# Move source to 'src' directory
+mv dakota-${VER}.0.src/* ${DAK_SRC}
+rm -rf dakota-${VER}.0.src
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/${VER}/packages/DDACE/src/Analyzer/MainEffectsExcelOutput.cpp ${DAK_SRC}/packages/DDACE/src/Analyzer
+cp configs/${VER}/packages/queso/src/misc/src/1DQuadrature.C ${DAK_SRC}/packages/queso/src/misc/src
+cp configs/${VER}/packages/surfpack/src/surfaces/nkm/NKM_KrigingModel.cpp ${DAK_SRC}/packages/surfpack/src/surfaces/nkm
+cp configs/${VER}/packages/VPISparseGrid/src/sandia_rules.cpp ${DAK_SRC}/packages/VPISparseGrid/src
+cp configs/${VER}/src/DakotaInterface.cpp ${DAK_SRC}/src
+cp configs/${VER}/src/NonDLocalReliability.cpp ${DAK_SRC}/src
+cp configs/${VER}/src/NonDSampling.cpp ${DAK_SRC}/src
+
+# Copy customized source and configuration files specific to Mac to 'src' directory
+cp configs/${VER}/mac/cmake/BuildDakotaCustom.cmake ${DAK_SRC}/cmake
+cp configs/${VER}/mac/cmake/DakotaDev.cmake ${DAK_SRC}/cmake
+cp configs/${VER}/mac/cmake/InstallDarwinDylibs.cmake ${DAK_SRC}/cmake
+
+# Uncomment to copy the following customized source files if using C99 or later 
+# standard. If uncommented, adding -Wno-error=implicit-function-declaration 
+# option to CFLAGS is not needed.
+# cp configs/${VER}/mac/static/packages/DDACE/include/xtndispatch.h ${DAK_SRC}/packages/DDACE/include
+# cp configs/${VER}/mac/static/packages/DDACE/src/Bose/Boselink.c ${DAK_SRC}/packages/DDACE/src/Bose
+# cp configs/${VER}/mac/static/packages/DDACE/src/Bose/construct.c ${DAK_SRC}/packages/DDACE/src/Bose
+# cp configs/${VER}/mac/static/packages/DDACE/src/Bose/galois.c ${DAK_SRC}/packages/DDACE/src/Bose
+# cp configs/${VER}/mac/static/packages/DDACE/src/Bose/gfields.c ${DAK_SRC}/packages/DDACE/src/Bose
+# cp configs/${VER}/mac/static/packages/DDACE/src/Bose/oa.c ${DAK_SRC}/packages/DDACE/src/Bose
+# cp configs/${VER}/mac/static/packages/nidr/nidr.c ${DAK_SRC}/packages/nidr
+# cp configs/${VER}/mac/static/packages/nidr/nidr-scanner.c ${DAK_SRC}/packages/nidr
+
+# Disable requirement of Python 2 for TriBITS
+sed -i'' -e 's|SET(PythonInterp_FIND_VERSION|#SET(PythonInterp_FIND_VERSION|' ${DAK_SRC}/packages/teuchos/cmake/tribits/package_arch/TribitsFindPythonInterp.cmake
+
+# Configure
+#
+# NOTE:
+# - The -w option has been added to CMAKE_C_FLAGS, CMAKE_CXX_FLAGS, and 
+#	CMAKE_Fortran_FLAGS. This should be removed for more recent versions of 
+#	Dakota.
+#
+cd ${DAK_BUILD}
+cmake \
+	-DBUILD_SHARED_LIBS=OFF \
+	-DBUILD_STATIC_LIBS=ON \
+	-DCMAKE_C_COMPILER=${MPI_HOME}/bin/mpicc \
+	-DCMAKE_C_FLAGS="-fPIC -Wno-error=implicit-function-declaration -w" \
+	-DCMAKE_CXX_COMPILER=${MPI_HOME}/bin/mpicxx \
+	-DCMAKE_CXX_FLAGS="-fPIC -fdelayed-template-parsing -w" \
+	-DCMAKE_CXX_STANDARD="11" \
+	-DCMAKE_Fortran_COMPILER=${MPI_HOME}/bin/mpif77 \
+	-DCMAKE_Fortran_FLAGS="-fPIC -fallow-argument-mismatch -w" \
+	-DBoost_NO_BOOST_CMAKE=TRUE \
+	-DHAVE_ACRO=OFF \
+	-DHAVE_JEGA=OFF \
+	-DHAVE_QUESO=ON \
+	-DDAKOTA_HAVE_GSL=ON \
+	-C${DAK_SRC}/cmake/BuildDakotaCustom.cmake \
+	-C${DAK_SRC}/cmake/DakotaDev.cmake \
+	${DAK_SRC}
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+
+cd ${DAK_INSTALL}
+
+# Comment out definition of HAVE_MPI in Teuchos config header file in order to
+# avoid conflict with our definition
+sed -i -e "s/#define HAVE_MPI/\/* #define HAVE_MPI *\//g" include/Teuchos_config.h
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-mac.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-mac.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-mac.sh	(revision 27955)
@@ -0,0 +1,141 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="6.2"
+
+PREFIX="${ISSM_DIR}/externalpackages/dakota/install" # Set to location where external package should be installed
+
+# Find libgfortran so that we do not have to hardcode it.
+#
+# TODO:
+# - Move this to etc/environment.sh
+#
+echo "Finding libgfortran..."
+LIBGFORTRAN=$(find /usr /opt -name libgfortran* 2>/dev/null | egrep -n libgfortran.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
+LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+
+## Environment
+#
+export BLAS_LIBS="-L${BLAS_ROOT}/lib -lfblas -L${LIBGFORTRAN_ROOT} -lgfortran" # Need to export BLAS_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+export DAK_BUILD=${ISSM_DIR}/externalpackages/dakota/build # DO NOT CHANGE THIS
+export DAK_INSTALL=${PREFIX} # DO NOT CHANGE THIS
+export DAK_SRC=${ISSM_DIR}/externalpackages/dakota/src # DO NOT CHANGE THIS
+export LAPACK_LIBS="-L${LAPACK_ROOT}/lib -lflapack -L${LIBGFORTRAN_ROOT} -lgfortran" # Need to export LAPACK_LIBS *and* pass it as an option to CMake to ensure that external packages also find it
+export LDFLAGS="-framework CoreFoundation"
+
+# Cleanup
+rm -rf ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
+mkdir -p ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
+
+# Download source
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/dakota-${VER}-public.src.tar.gz" "dakota-${VER}-public-src.tar.gz"
+
+# Unpack source
+tar -zxvf dakota-${VER}-public-src.tar.gz
+
+# Move source to 'src' directory
+mv dakota-${VER}.0.src/* ${DAK_SRC}
+rm -rf dakota-${VER}.0.src
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/${VER}/packages/DDACE/src/Analyzer/MainEffectsExcelOutput.cpp ${DAK_SRC}/packages/DDACE/src/Analyzer
+cp configs/${VER}/packages/queso/src/misc/src/1DQuadrature.C ${DAK_SRC}/packages/queso/src/misc/src
+cp configs/${VER}/packages/surfpack/src/surfaces/nkm/NKM_KrigingModel.cpp ${DAK_SRC}/packages/surfpack/src/surfaces/nkm
+cp configs/${VER}/packages/VPISparseGrid/src/sandia_rules.cpp ${DAK_SRC}/packages/VPISparseGrid/src
+cp configs/${VER}/src/DakotaInterface.cpp ${DAK_SRC}/src
+cp configs/${VER}/src/NonDLocalReliability.cpp ${DAK_SRC}/src
+cp configs/${VER}/src/NonDSampling.cpp ${DAK_SRC}/src
+
+# Copy customized source and configuration files specific to Mac to 'src' directory
+cp configs/${VER}/mac/cmake/BuildDakotaCustom.cmake ${DAK_SRC}/cmake
+cp configs/${VER}/mac/cmake/DakotaDev.cmake ${DAK_SRC}/cmake
+cp configs/${VER}/mac/cmake/InstallDarwinDylibs.cmake ${DAK_SRC}/cmake
+
+# Disable requirement of Python 2 for TriBITS
+sed -i'' -e 's|SET(PythonInterp_FIND_VERSION|#SET(PythonInterp_FIND_VERSION|' ${DAK_SRC}/packages/teuchos/cmake/tribits/package_arch/TribitsFindPythonInterp.cmake
+
+echo "Debug:"
+echo "GSL_HOME : ${GSL_HOME}"
+echo "CPATH : ${CPATH}"
+
+# Configure
+#
+# NOTE:
+# - The -w option has been added to CMAKE_C_FLAGS, CMAKE_CXX_FLAGS, and 
+#	CMAKE_Fortran_FLAGS. This should be removed for more recent versions of 
+#	Dakota.
+#
+cd ${DAK_BUILD}
+cmake \
+	-DBUILD_SHARED_LIBS=ON \
+	-DBUILD_STATIC_LIBS=OFF \
+	-DCMAKE_C_COMPILER=${MPI_HOME}/bin/mpicc \
+	-DCMAKE_C_FLAGS="-w" \
+	-DCMAKE_CXX_COMPILER=${MPI_HOME}/bin/mpicxx \
+	-DCMAKE_CXX_FLAGS="-fdelayed-template-parsing -w" \
+	-DCMAKE_CXX_STANDARD="11" \
+	-DCMAKE_Fortran_COMPILER=${MPI_HOME}/bin/mpif77 \
+	-DBoost_NO_BOOST_CMAKE=TRUE \
+	-DHAVE_ACRO=OFF \
+	-DHAVE_JEGA=OFF \
+	-DHAVE_QUESO=ON \
+	-DDAKOTA_HAVE_GSL=ON \
+	-C${DAK_SRC}/cmake/BuildDakotaCustom.cmake \
+	-C${DAK_SRC}/cmake/DakotaDev.cmake \
+	${DAK_SRC}
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+
+cd ${DAK_INSTALL}
+
+# Comment out definition of HAVE_MPI in Teuchos config header file in order to
+# avoid conflict with our definition
+sed -i -e "s/#define HAVE_MPI/\/* #define HAVE_MPI *\//g" include/Teuchos_config.h
+
+# Set install_name for all shared libraries
+cd ${DAK_INSTALL}/lib
+for name in *.dylib; do
+	install_name_tool -id ${DAK_INSTALL}/lib/${name} ${name}
+done
+
+## Patch install names for certain libraries
+#
+# TODO: Figure out how to reconfigure source to apply these install names at 
+# 		compile time
+#
+install_name_tool -change libdakota_src_fortran.dylib ${DAK_INSTALL}/lib/libdakota_src_fortran.dylib libdakota_src.dylib
+install_name_tool -change liblhs_mod.dylib ${DAK_INSTALL}/lib/liblhs_mod.dylib liblhs.dylib
+install_name_tool -change liblhs_mods.dylib ${DAK_INSTALL}/lib/liblhs_mods.dylib liblhs.dylib
+install_name_tool -change liblhs_mod.dylib ${DAK_INSTALL}/lib/liblhs_mod.dylib liblhs_mods.dylib
+install_name_tool -change libteuchos.dylib ${DAK_INSTALL}/lib/libteuchos.dylib liboptpp.dylib
+install_name_tool -change libdfftpack.dylib ${DAK_INSTALL}/lib/libdfftpack.dylib libpecos.dylib
+install_name_tool -change liblhs.dylib ${DAK_INSTALL}/lib/liblhs.dylib libpecos.dylib
+install_name_tool -change liblhs_mod.dylib ${DAK_INSTALL}/lib/liblhs_mod.dylib libpecos.dylib
+install_name_tool -change liblhs_mods.dylib ${DAK_INSTALL}/lib/liblhs_mods.dylib libpecos.dylib
+install_name_tool -change libpecos_src.dylib ${DAK_INSTALL}/lib/libpecos_src.dylib libpecos.dylib
+install_name_tool -change libteuchos.dylib ${DAK_INSTALL}/lib/libteuchos.dylib libpecos.dylib
+install_name_tool -change libdfftpack.dylib ${DAK_INSTALL}/lib/libdfftpack.dylib libpecos_src.dylib
+install_name_tool -change liblhs.dylib ${DAK_INSTALL}/lib/liblhs.dylib libpecos_src.dylib
+install_name_tool -change liblhs_mod.dylib ${DAK_INSTALL}/lib/liblhs_mod.dylib libpecos_src.dylib
+install_name_tool -change liblhs_mods.dylib ${DAK_INSTALL}/lib/liblhs_mods.dylib libpecos_src.dylib
+install_name_tool -change libteuchos.dylib ${DAK_INSTALL}/lib/libteuchos.dylib libpecos_src.dylib
+install_name_tool -change libsurfpack_fortran.dylib ${DAK_INSTALL}/lib/libsurfpack_fortran.dylib libsurfpack.dylib
+
+## Add LIBGFORTRAN_ROOT to rpath for libraries that need it
+#
+# TODO: Figure out how to reconfigure source to add to rpath at compile time
+#
+install_name_tool -add_rpath ${LIBGFORTRAN_ROOT} libpecos.dylib
+install_name_tool -add_rpath ${LIBGFORTRAN_ROOT} libteuchos.dylib
+install_name_tool -add_rpath ${LIBGFORTRAN_ROOT} liboptpp.dylib
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-pleiades.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-pleiades.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-pleiades.sh	(revision 27955)
@@ -0,0 +1,78 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="6.2"
+
+PREFIX="${ISSM_DIR}/externalpackages/dakota/install" # Set to location where external package should be installed
+
+## Environment
+#
+export BLAS_LIBS="-L/nasa/intel/Compiler/2018.3.222/compilers_and_libraries_2018.3.222/linux/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core" # Need to export BLAS_LIBS *and* pass it as an option to CMake to ensure that external packages also find it; should upate to /nasa/intel/Compiler/2021.4.0/mkl/2021.4.0/lib/intel64
+export CXXFLAGS='-std=c++11'
+export DAK_BUILD=${ISSM_DIR}/externalpackages/dakota/build # DO NOT CHANGE THIS
+export DAK_INSTALL=${PREFIX} # DO NOT CHANGE THIS
+export DAK_SRC=${ISSM_DIR}/externalpackages/dakota/src # DO NOT CHANGE THIS
+export LAPACK_LIBS="-L/nasa/intel/Compiler/2018.3.222/compilers_and_libraries_2018.3.222/linux/mkl/lib/intel64/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core" # Need to export LAPACK_LIBS *and* pass it as an option to CMake to ensure that external packages also find it; should upate to /nasa/intel/Compiler/2021.4.0/mkl/2021.4.0/lib/intel64
+
+# Cleanup
+rm -rf ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
+mkdir -p ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
+
+# Download source
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/dakota-${VER}-public.src.tar.gz" "dakota-${VER}-public-src.tar.gz"
+
+# Unpack source
+tar -zxvf dakota-${VER}-public-src.tar.gz
+
+# Move source to 'src' directory
+mv dakota-${VER}.0.src/* ${DAK_SRC}
+rm -rf dakota-${VER}.0.src
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/${VER}/packages/DDACE/src/Analyzer/MainEffectsExcelOutput.cpp ${DAK_SRC}/packages/DDACE/src/Analyzer
+cp configs/${VER}/packages/queso/src/misc/src/1DQuadrature.C ${DAK_SRC}/packages/queso/src/misc/src
+cp configs/${VER}/packages/surfpack/src/surfaces/nkm/NKM_KrigingModel.cpp ${DAK_SRC}/packages/surfpack/src/surfaces/nkm
+cp configs/${VER}/packages/VPISparseGrid/src/sandia_rules.cpp ${DAK_SRC}/packages/VPISparseGrid/src
+cp configs/${VER}/src/DakotaInterface.cpp ${DAK_SRC}/src
+cp configs/${VER}/src/NonDLocalReliability.cpp ${DAK_SRC}/src
+cp configs/${VER}/src/NonDSampling.cpp ${DAK_SRC}/src
+
+# Copy customized source and configuration files specific to Linux to 'src' directory
+cp configs/${VER}/linux/cmake/BuildDakotaCustom.pleiades.cmake ${DAK_SRC}/cmake/BuildDakotaCustom.cmake
+cp configs/${VER}/linux/cmake/DakotaDev.cmake ${DAK_SRC}/cmake
+
+# Configure
+cd ${DAK_BUILD}
+cmake \
+	-DBUILD_SHARED_LIBS=ON \
+	-DBUILD_STATIC_LIBS=OFF \
+	-DCMAKE_C_COMPILER=mpicc \
+	-DCMAKE_C_FLAGS="-Wno-error=implicit-function-declaration" \
+	-DCMAKE_CXX_COMPILER=mpicxx \
+	-DCMAKE_Fortran_COMPILER=/usr/bin/gfortran \
+	-DBoost_NO_BOOST_CMAKE=TRUE \
+	-DHAVE_ACRO=OFF \
+	-DHAVE_JEGA=OFF \
+	-DHAVE_QUESO=ON \
+	-DDAKOTA_HAVE_GSL=ON \
+	-C${DAK_SRC}/cmake/BuildDakotaCustom.cmake \
+	-C${DAK_SRC}/cmake/DakotaDev.cmake \
+	${DAK_SRC}
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+
+cd ${DAK_INSTALL}
+
+# Comment out definition of HAVE_MPI in Teuchos config header file in order to
+# avoid conflict with our definition
+sed -i -e "s/#define HAVE_MPI/\/* #define HAVE_MPI *\//g" include/Teuchos_config.h
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-pleiades_toss4.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-pleiades_toss4.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-pleiades_toss4.sh	(revision 27955)
@@ -0,0 +1,78 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="6.2"
+
+PREFIX="${ISSM_DIR}/externalpackages/dakota/install" # Set to location where external package should be installed
+
+## Environment
+#
+export BLAS_LIBS="-L/nasa/intel/Compiler/2018.3.222/compilers_and_libraries_2018.3.222/linux/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core" # Need to export BLAS_LIBS *and* pass it as an option to CMake to ensure that external packages also find it; should upate to /nasa/intel/Compiler/2021.4.0/mkl/2021.4.0/lib/intel64
+export CXXFLAGS='-std=c++98'
+export DAK_BUILD=${ISSM_DIR}/externalpackages/dakota/build # DO NOT CHANGE THIS
+export DAK_INSTALL=${PREFIX} # DO NOT CHANGE THIS
+export DAK_SRC=${ISSM_DIR}/externalpackages/dakota/src # DO NOT CHANGE THIS
+export LAPACK_LIBS="-L/nasa/intel/Compiler/2018.3.222/compilers_and_libraries_2018.3.222/linux/mkl/lib/intel64/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core" # Need to export LAPACK_LIBS *and* pass it as an option to CMake to ensure that external packages also find it; should upate to /nasa/intel/Compiler/2021.4.0/mkl/2021.4.0/lib/intel64
+
+# Cleanup
+rm -rf ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
+mkdir -p ${DAK_BUILD} ${DAK_INSTALL} ${DAK_SRC}
+
+# Download source
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/dakota-${VER}-public.src.tar.gz" "dakota-${VER}-public-src.tar.gz"
+
+# Unpack source
+tar -zxvf dakota-${VER}-public-src.tar.gz
+
+# Move source to 'src' directory
+mv dakota-${VER}.0.src/* ${DAK_SRC}
+rm -rf dakota-${VER}.0.src
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/${VER}/packages/DDACE/src/Analyzer/MainEffectsExcelOutput.cpp ${DAK_SRC}/packages/DDACE/src/Analyzer
+cp configs/${VER}/packages/queso/src/misc/src/1DQuadrature.C ${DAK_SRC}/packages/queso/src/misc/src
+cp configs/${VER}/packages/surfpack/src/surfaces/nkm/NKM_KrigingModel.cpp ${DAK_SRC}/packages/surfpack/src/surfaces/nkm
+cp configs/${VER}/packages/VPISparseGrid/src/sandia_rules.cpp ${DAK_SRC}/packages/VPISparseGrid/src
+cp configs/${VER}/src/DakotaInterface.cpp ${DAK_SRC}/src
+cp configs/${VER}/src/NonDLocalReliability.cpp ${DAK_SRC}/src
+cp configs/${VER}/src/NonDSampling.cpp ${DAK_SRC}/src
+
+# Copy customized source and configuration files specific to Linux to 'src' directory
+cp configs/${VER}/linux/cmake/BuildDakotaCustom.pleiades.cmake ${DAK_SRC}/cmake/BuildDakotaCustom.cmake
+cp configs/${VER}/linux/cmake/DakotaDev.cmake ${DAK_SRC}/cmake
+
+# Configure
+cd ${DAK_BUILD}
+cmake \
+	-DBUILD_SHARED_LIBS=ON \
+	-DBUILD_STATIC_LIBS=OFF \
+	-DCMAKE_C_COMPILER=mpicc \
+	-DCMAKE_C_FLAGS="-Wno-error=implicit-function-declaration" \
+	-DCMAKE_CXX_COMPILER=mpicxx \
+	-DCMAKE_Fortran_COMPILER=gfortran \
+	-DBoost_NO_BOOST_CMAKE=TRUE \
+	-DHAVE_ACRO=OFF \
+	-DHAVE_JEGA=OFF \
+	-DHAVE_QUESO=ON \
+	-DDAKOTA_HAVE_GSL=ON \
+	-C${DAK_SRC}/cmake/BuildDakotaCustom.cmake \
+	-C${DAK_SRC}/cmake/DakotaDev.cmake \
+	${DAK_SRC}
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+
+cd ${DAK_INSTALL}
+
+# Comment out definition of HAVE_MPI in Teuchos config header file in order to
+# avoid conflict with our definition
+sed -i -e "s/#define HAVE_MPI/\/* #define HAVE_MPI *\//g" include/Teuchos_config.h
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-stallo.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-stallo.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/install-6.2-stallo.sh	(revision 27955)
@@ -0,0 +1,63 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+#$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/dakota-6.2-public.src.tar.gz' 'dakota-6.2-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-6.2-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-6.2.0.src/* src
+rm -rf dakota-6.2.0.src
+
+#Set up Dakota cmake variables and config
+#export PATH="/usr/bin":$PATH
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+export MPIHOME=/global/hds/software/cpu/eb3/impi/5.0.3.048-iccifort-2015.3.187-GNU-4.9.3-2.25/
+
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/6.2/BuildDakotaCustom.cmake.stallo.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/6.2/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/6.2/CMakeLists.txt.stallo.patch
+
+#Apply patches
+patch src/src/NonDSampling.cpp configs/6.2/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/6.2/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/6.2/pecos_global_defs.hpp.patch
+patch src/packages/surfpack/src/surfaces/nkm/NKM_KrigingModel.cpp configs/6.2/NKM_KrigingModel.patch
+patch src/packages/DDACE/src/Analyzer/MainEffectsExcelOutput.cpp configs/6.2/MainEffectsExcelOutput.patch
+patch src/src/DakotaInterface.cpp configs/6.2/DakotaInterface.patch
+
+#Configure dakota
+cd $DAK_BUILD
+
+cmake -D CMAKE_C_COMPILER=/global/hds/software/cpu/eb3/impi/5.0.3.048-iccifort-2015.3.187-GNU-4.9.3-2.25/bin64/mpicc \
+	   -D CMAKE_CXX_COMPILER=/global/hds/software/cpu/eb3/impi/5.0.3.048-iccifort-2015.3.187-GNU-4.9.3-2.25/bin64/mpicxx \
+	   -D CMAKE_Fortran_COMPILER=gfortran \
+		-DHAVE_ACRO=off \
+		-DHAVE_JEGA=off \
+		-C $DAK_SRC/cmake/BuildDakotaCustom.cmake \
+		-C $DAK_SRC/cmake/DakotaDev.cmake \
+		$DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/tests/test.in
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/tests/test.in	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/tests/test.in	(revision 27955)
@@ -0,0 +1,36 @@
+method,
+	nond_sampling
+	  seed             = 1234
+	  rng                rnum2
+	  samples          = 2000
+	  sample_type        lhs
+	  distribution cumulative
+	  num_probability_levels = 9 
+	  probability_levels =
+	    0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999
+	    0.9999
+
+model,
+	single
+
+variables,
+	normal_uncertain = 2
+	  nuv_means =
+	    1 1 
+	  nuv_std_deviations =
+	    0.1 0.1 
+	  nuv_descriptors =
+	    'x1' 'x2'
+
+interface,
+	direct
+	  analysis_driver = 'plugin_text_book'
+       evaluation_scheduling master 
+       processors_per_evaluation = 3
+
+responses,
+	num_response_functions = 1
+	response_descriptors =
+	  'MaxVel' 
+	no_gradients
+	no_hessians
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/tests/test2.in
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/tests/test2.in	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dakota/tests/test2.in	(revision 27955)
@@ -0,0 +1,36 @@
+method,
+	nond_sampling
+	  seed             = 1234
+	  rng                rnum2
+	  samples          = 3
+	  sample_type        lhs
+	  distribution cumulative
+	  num_probability_levels = 9 
+	  probability_levels =
+	    0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999
+	    0.9999
+
+model,
+	single
+
+variables,
+	normal_uncertain = 2
+	  nuv_means =
+	    1 1 
+	  nuv_std_deviations =
+	    0.1 0.1 
+	  nuv_descriptors =
+	    'x1' 'x2'
+
+interface,
+	direct
+	  analysis_driver = 'plugin_text_book'
+       evaluation_scheduling master 
+       processors_per_evaluation = 1
+
+responses,
+	num_response_functions = 1
+	response_descriptors =
+	  'MaxVel' 
+	no_gradients
+	no_hessians
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dem/dem.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dem/dem.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dem/dem.m	(revision 27955)
@@ -0,0 +1,1081 @@
+function varargout=dem(x,y,z,varargin)
+%DEM Shaded relief image plot
+%
+%	DEM(X,Y,Z) plots the Digital Elevation Model defined by X and Y 
+%	coordinate vectors and elevation matrix Z, as a lighted image using
+%	specific "landcolor" and "seacolor" colormaps. DEM uses IMAGESC 
+%	function which is much faster than SURFL when dealing with large 
+%	high-resolution DEM. It produces also high-quality and moderate-size 
+%	Postscript image adapted for publication.
+%
+%	DEM(X,Y,Z,'Param1',Value1,'Param2',Value2,...) specifies options or
+%	parameter/value couple (case insensitive):
+%
+%	[H,I] = DEM(...); returns graphic handle H and optional illuminated 
+%	image as I, a MxNx3 matrix (if Z is MxN and DECIM is 1).
+%
+%	I = DEM(...,'noplot') returns a structure I containing fields x, y, z,
+%	and illuminated image .rgb without producing a graph on current figure.
+%
+%
+%	--- Lighting options ---
+%
+%	'Azimuth',A
+%		Light azimuth in degrees clockwise relative to North. Default is
+%		A = -45 for	a natural northwestern illumination.
+%
+%	'Contrast',C
+%		Light contrast, as the exponent of the gradient value:
+%			C = 1 for linear contrast (default),
+%			C = 0 to remove lighting,
+%			C = 0.5 for moderate lighting,
+%			C = 2 or more for strong contrast.
+%
+%	'LCut',LC
+%		Lighting scale saturation cut with a median-style filter in % of 
+%	    elements, such as LC% of maximum gradient values are ignored:
+%			LC = 0.2 is default, 
+%			LC = 0 for full scale gradient.
+%
+%	'km'
+%		Stands that X and Y coordinates are in km instead of m (default).
+%		This allows correct lighting. Ignored if LATLON option is used.
+%
+%
+%	--- Elevation colorscale options ---
+%
+%	'ZLim',[ZMIN,ZMAX]
+%		Fixes min and max elevation values for colormap. Use NaN to keep 
+%		real min and/or max data values.
+%
+%	'ZCut',ZC
+%		Median-style filter to cut extremes values of Z (in % of elements),
+%		such that ZC% of most min/max elevation values are ignored in the
+%		colormap application:
+%			ZC = 0.5 is default, 
+%			ZC = 0 for full scale.
+%
+%
+%	--- "No Value" elevation options ---
+%
+%	'NoValue',NOVALUE
+%		Defines the values that will be replaced by NaN. Note that values 
+%		equal to minimum of Z class are automatically detected as NaN 
+%		(e.g., -32768 for int16 class).
+%
+%	'NaNColor',[R,G,B]
+%		Sets the RGB color for NaN/NoValue pixels (default is a dark gray).
+%		Note that your must specify a valid 3-scalar vector (between 0 and
+%		1);	color characters like 'w' or 'k' are not allowed, use [1,1,1]
+%		or [0,0,0] instead.
+%
+%	'Interp'
+%		Interpolates linearly all NaN values (fills the gaps using linear 
+%		triangulation), using an optimized algorithm.
+%
+%
+%	--- Colormap options ---
+%
+%	'LandColor',LMAP
+%		Uses LMAP colormap instead of default (landcolor, if exists or 
+%		jet) for Z > 0 elevations.
+%
+%	'SeaColor',SMAP
+%		Sets the colormap used for Z <= 0 elevations. Default is seacolor 
+%		(if exists) or single color [0.7,0.9,1] (a light cyan) to simulate
+%		sea color.
+%
+%	'ColorMap',CMAP
+%		Uses CMAP colormap for full range of elevations, instead of default 
+%		land/sea. This option overwrites LANDCOLOR/SEACOLOR options.
+%
+%	'Lake'
+%		Detects automaticaly flat areas different from sea level (non-zero 
+%		elevations) and colors them as lake surfaces.
+%
+%	'Watermark',N
+%		Makes the whole image lighter by a factor of N.
+%
+%
+%	--- Basemap and scale options ---
+%
+%	'Legend'
+%		Adds legends to the right of graph: elevation scale (colorbar)
+%		and a distance scale (in km).
+%
+%	'Cartesian'
+%		Plots classic basemap-style axis, considering coordinates X and Y 
+%		as cartesian in meters. Use parameter "km' for X/Y in km.
+%
+%	'LatLon'
+%		Plots geographic basemap-style axis in deg/min/sec, considering 
+%		coordinates X as longitude and Y as latitude. Axis aspect ratio 
+%		will be adjusted to approximatively preserve distances (this is  
+%		not a real projection!). This overwrites ZRatio option.
+%
+%	'AxisEqual', 'auto' (default) | 'manual' | 'off'
+%		When 'Cartesian' or 'LatLon' option is used, automatic axes scaling
+%		is applied to respect data aspect ratio. Default mode is 'auto' and
+%		uses AXIS EQUAL and DASPECT functions. The 'manual' mode modifies
+%		axes width or height with respect to the paper size in order to
+%		produce correct data scaling at print (but not necessarily at 
+%		screen). The 'off' mode disables any scaling.
+%
+%	Additionnal options for basemap CARTESIAN or LATLON:
+%
+%	'BorderWidth',BW
+%		Border width of the basemap axis, in % of axis height. Default is
+%		BW = 1%.
+%
+%	'XTick',DX
+%	'YTick',DY
+%		X and Y Tick length (same unit as X and Y). Default is automatic.
+%		Tick labels are every 2 ticks.
+%
+%	'FontSize',FS
+%		Font size for X and Y tick labels. Default is FS = 10.
+%
+%	'FontBold'
+%		Font weight bold for tick labels.
+%
+%	'Position',P
+%		Position of the tick labels: 'southwest' (default), 'southeast',
+%		'northwest','northeast'
+%
+%
+%	--- Decimation options ---
+%
+%	For optimization purpose, DEM will automatically decimate data to limit
+%	to a total of 1500x1500 pixels images. To avoid this, use following
+%	options, but be aware that large grids may require huge computer 
+%	ressources or induce disk swap or memory errors.
+%
+%	'Decim',N
+%		Decimates matrix Z at 1/N times of the original sampling.
+%
+%	'NoDecim'
+%		Forces full resolution of Z, no decimation.
+%
+%
+%
+%	--- Informations ---
+%
+%	Colormaps are Mx3 RGB matrix so it is easy to modify saturation 
+%	(CMAP.^N), set darker (CMAP/N), lighter (1 - 1/N + CMAP/N), inverse
+%	it (flipud(CMAP)), etc...
+%
+%	To get free worldwide topographic data (SRTM), see READHGT function.
+%
+%	For backward compatibility, the former syntax is still accepted:
+%	DEM(X,Y,Z,OPT,CMAP,NOVALUE,SEACOLOR) where OPT = [A,C,LC,ZMIN,ZMAX,ZC],
+%	also option aliases DEC, DMS and SCALE, but there is no argument 
+%	checking. Please prefer the param/value syntax.
+%
+%	Author: François Beauducel <beauducel@ipgp.fr>
+%	Created: 2007-05-17 in Guadeloupe, French West Indies
+%	Updated: 2016-01-31
+
+%	History:
+%	[2016-04-19] v2.3
+%		- major update (thanks to mas Wiwit)
+%	[2016-01-31] v2.2
+%		- adds option 'Position' for tick labels
+%	[2015-08-22] v2.1
+%		- minor fix (former versions of Matlab compatibility)
+%	[2015-08-19] v2.0
+%		- image is now 100% true color (including the legend colorbar), 
+%	      thus completely independent from the figure colormap
+%	[2014-10-14]
+%		- 'decim' option allows oversampling (negative value)
+%	[2014-06-06]
+%		- improves backward compatibility (adds strjoin subfunction)
+%	[2014-03-18]
+%		- adds new axisequal option
+%	[2013-03-11]
+%		- new options: 'km', 'watermark', 'fontsize', 'bordersize'
+%		- improve legend colorbar
+%		- all options now passed as param/value
+%	[2013-01-14]
+%		- improved light rendering (using surface normals instead of gradient)
+%		- improved 'lake' detection algorithm
+%		- new 'nancolor' option to set NaN color
+%		- adds a length scale with 'dec' option
+%		- minor code improvements
+%	[2013-01-07]
+%		- adds 'interp' option (fill the gaps)
+%		- adds 'seacolor' colormap for negative elevations (bathymetry)
+%	[2013-01-02]
+%		- adds a 'lake' option
+%		- minor bug correction
+%	[2012-09-26]
+%		- now accepts row/column vectors for X and/or Y.
+%	[2012-05-29]
+%		- adds basemap-style axis in decimal or lat/lon modes
+%		- adds elevation and distance scales
+%	[2012-05-18]
+%		- new landcolor.m colormap function
+%		- new arguments to control colormap scaling
+%		- median-style filters for light and colormap
+%	[2012-04-26]
+%		- Optimizations: adds a decimation for large DEM grids.
+
+%
+%	Copyright (c) 2016, François Beauducel, covered by BSD License.
+%	All rights reserved.
+%
+%	Redistribution and use in source and binary forms, with or without 
+%	modification, are permitted provided that the following conditions are 
+%	met:
+%
+%	   * Redistributions of source code must retain the above copyright 
+%	     notice, this list of conditions and the following disclaimer.
+%	   * 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
+%	                           
+%	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 OWNER 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.
+
+if nargin < 3
+	error('Not enough input arguments.');
+end
+
+holdon = ishold;
+
+degkm = 6378*pi/180; % one latitude degree in km
+sea_color = [.7,.9,1]; % default sea color (light cyan)
+grey = 0.2*[1,1,1]; % a dark gray
+
+
+% -------------------------------------------------------------------------
+% --- Manage input arguments
+
+% number of arguments param/value
+nargs = 0;
+
+if ~isnumeric(x) || ~isnumeric(y) || ~isnumeric(z)
+	error('X,Y and Z must be numeric.')
+end
+
+if all(size(x) ~= 1) || all(size(y) ~= 1)
+	error('X and Y must be vectors, not matrix.')
+end
+
+if length(x) ~= size(z,2) || length(y) ~= size(z,1)
+	error('If Z has a size of [M,N], X must have a length of N, and Y a length of M.')
+end
+
+% OPTIONS and PARAM/VALUE arguments
+			
+% AZIMUTH param/value
+[s,az] = checkparam(varargin,'azimuth',@isscalar);
+nargs = nargs + 2;
+if s==0
+	az = -45; % default
+end
+
+% ELEVATION param/value
+[s,el] = checkparam(varargin,'elevation',@isscalar);
+nargs = nargs + 2;
+if s==0
+	el = 0; % default
+end
+
+% CONTRAST param/value
+[s,ct] = checkparam(varargin,'contrast',@isscalar);
+nargs = nargs + 2;
+if s
+	ct = abs(ct);
+else
+	ct = 1; % default
+end
+
+% LCUT param/value
+[s,lcut] = checkparam(varargin,'lcut',@isperc);
+nargs = nargs + 2;
+if s==0
+	lcut = .2; % default
+end
+
+% NOVALUE param/value
+[s,novalue] = checkparam(varargin,'novalue',@isscalar);
+nargs = nargs + 2;
+if s==0
+	% default: min value for integer class / NaN for float
+	S = whos('z');
+	if strfind(S.class,'int')
+		novalue = intmin(S.class);
+	else
+		novalue = NaN;
+	end
+end
+
+% NANCOLOR param/value
+[s,novalue_color] = checkparam(varargin,'nancolor',@isrgb);
+nargs = nargs + 2;
+if s==0
+	novalue_color = grey; % default
+end
+
+% LANDCOLOR param/value
+[s,cland] = checkparam(varargin,'landcolor',@isrgb);
+nargs = nargs + 2;
+if s==0
+	% default: landcolor or jet
+	if exist('landcolor','file')
+		cland = landcolor.^1.3;
+	else
+		cland = jet(256);
+	end
+end
+
+% SEACOLOR param/value
+[s,csea] = checkparam(varargin,'seacolor',@isrgb);
+nargs = nargs + 2;
+if s==0
+	% default: seacolor or single color
+	if exist('seacolor','file')
+		csea = seacolor;
+	else
+		csea = sea_color;
+	end
+end
+
+% COLORMAP param/value
+[s,cmap] = checkparam(varargin,'colormap',@isrgb);
+nargs = nargs + 2;
+if s
+	cland = [];
+	csea = [];
+else
+	% default
+	cmap = cland;
+end
+
+% ZLIM param/value
+[s,zmm] = checkparam(varargin,'zlim',@isvec);
+nargs = nargs + 2;
+if s
+	zmin = min(zmm);
+	zmax = max(zmm);
+else
+	zmin = NaN; % default
+	zmax = NaN; % default
+end
+
+% ZCUT param/value
+[s,zcut] = checkparam(varargin,'zcut',@isperc);
+nargs = nargs + 2;
+if s==0
+	zcut = .5; % default
+end
+
+% ZRATIO param/value
+[s,zratio] = checkparam(varargin,'zratio',@isscalar);
+nargs = nargs + 2;
+if s==0
+	zratio = 1; % default
+end
+
+% WATERMARK param/value
+[s,wmark] = checkparam(varargin,'watermark',@isscalar);
+nargs = nargs + 2;
+if s
+	wmark = abs(wmark);
+else
+	wmark = 0; % default
+end
+
+% DECIM param/value and NODECIM option
+[s,decim] = checkparam(varargin,'decim',@isscalar);
+if s
+	decim = round(decim);
+	nargs = nargs + 2;
+else
+	decim = any(strcmpi(varargin,'nodecim')); % default
+	nargs = nargs + 1;
+end
+
+% FONTSIZE param/value
+[s,fs] = checkparam(varargin,'fontsize',@isscalar);
+nargs = nargs + 2;
+if s==0
+	fs = 10; % default
+end
+
+% BORDERWIDTH param/value
+[s,bw] = checkparam(varargin,'borderwidth',@isperc);
+nargs = nargs + 2;
+if s==0
+	bw = 1; % default
+end
+
+% XTICK param/value
+[s,ddx] = checkparam(varargin,'xtick',@isscalar);
+nargs = nargs + 2;
+if s==0
+	ddx = 0; % default (automatic)
+end
+
+% YTICK param/value
+[s,ddy] = checkparam(varargin,'ytick',@isscalar);
+nargs = nargs + 2;
+if s==0
+	ddy = 0; % default (automatic)
+end
+
+% POSITION param/value
+[s,tpos] = checkparam(varargin,'position',@ischar,{'southwest','southeast','northwest','northeast'});
+nargs = nargs + 2;
+if s==0
+	tpos = 'southwest'; % default
+end
+
+% AXISEQUAL param/value
+[s,axeq] = checkparam(varargin,'axisequal',@ischar,{'auto','manual','off'});
+nargs = nargs + 2;
+if s==0 || ~any(strcmpi(axeq,{'manual','off'}))
+	axeq = 'auto'; % default (automatic)
+end
+
+% CROP param/value
+[s,crop] = checkparam(varargin,'crop',@isvec,4);
+nargs = nargs + 2;
+
+% options without argument value
+km = any(strcmpi(varargin,'km'));
+dec = any(strcmpi(varargin,'cartesian') | strcmpi(varargin,'dec'));
+dms = any(strcmpi(varargin,'latlon') | strcmpi(varargin,'dms'));
+scale = any(strcmpi(varargin,'legend') | strcmpi(varargin,'scale'));
+inter = any(strcmpi(varargin,'interp'));
+lake = any(strcmpi(varargin,'lake'));
+fbold = any(strcmpi(varargin,'fontbold'));
+noplot = any(strcmpi(varargin,'noplot'));
+
+
+% for backward compatibility (former syntax)...
+nargs = nargs + dec + dms + scale + lake + inter + km + fbold + noplot;
+
+if (nargin - nargs) > 3 && ~isempty(varargin{1})
+	opt = varargin{1};
+	if ~isnumeric(opt)
+		error('OPT = [A,C,S,ZMIN,ZMAX,ZCUT] argument must be numeric.');
+	end
+	if ~isempty(opt)
+		az = opt(1);
+	end
+	if length(opt) > 1
+		ct = opt(2);
+	end
+	if length(opt) > 2
+		lcut = opt(3);
+	end
+	if length(opt) > 4
+		zmin = opt(4);
+		zmax = opt(5);
+	end
+	if length(opt) > 5
+		zcut = opt(6);
+	end
+end
+
+if (nargin - nargs) > 4 && ~isempty(varargin{2})
+	cmap = varargin{2};
+	csea = [];
+end
+
+if (nargin - nargs) > 5 && ~isempty(varargin{3})
+	novalue = varargin{3};
+end
+
+if (nargin - nargs) > 6 && ~isempty(varargin{4})
+	csea = varargin{4};
+end
+
+
+% further test of input arguments
+if dms && any(abs(y) > 91)
+	error('With LATLON option Y must be in valid latitudes interval (decimal degrees).')
+end
+
+if km
+	zratio = 1000;
+end
+
+
+% -------------------------------------------------------------------------
+% --- Pre-process DEM data
+
+% crops data if needed
+if numel(crop)==4
+	fprintf('DEM: crops original data from [%g,%g,%g,%g] to [%g,%g,%g,%g]...\n', ...
+		min(x(:)),max(x(:)),min(y(:)),max(y(:)),crop);
+	kx = find(x >= crop(1) & x <= crop(2));
+	ky = find(y >= crop(3) & y <= crop(4));
+	x = x(kx);
+	y = y(ky);
+	z = z(ky,kx);
+end
+
+% decimates data to avoid disk swap/out of memory...
+nmax = 1500;
+if decim
+	n = decim;
+else
+	n = ceil(sqrt(numel(z))/nmax);
+end
+if n > 1
+	x = x(1:n:end);
+	y = y(1:n:end);
+	z = z(1:n:end,1:n:end);
+	fprintf('DEM: data has been decimated by a factor of %d...\n',n);
+end
+
+z = double(z); % necessary for most of the following calculations...
+z(z==novalue) = NaN;
+
+if isempty(csea)
+	k = (z~=0 & ~isnan(z));
+else
+	k = ~isnan(z);
+end
+
+if isnan(zmin)
+	zmin = nmedian(z(k),zcut/100);
+end
+if isnan(zmax)
+	zmax = nmedian(z(k),1 - zcut/100);
+end
+dz = zmax - zmin;
+
+if decim & n < 0
+	xi = linspace(x(1),x(end),-n*length(x));
+	yi = linspace(y(1),y(end),-n*length(y))';
+	[xx,yy] = meshgrid(xi,yi);
+	z = interp2(x,y,z,xx,yy,'*cubic');
+	x = xi;
+	y = yi;
+	fprintf('DEM: data has been oversampled by a factor of %d...\n',-n);
+end
+
+if inter
+	z = fillgap(x,y,z);
+end
+
+% -------------------------------------------------------------------------
+% --- Process lighting
+
+if dz > 0
+	% builds the colormap: concatenates seacolor and landcolor around 0
+	if ~isempty(csea)
+		l = size(csea,1);
+		if zmin < 0 && zmax > 0
+			r = size(cland,1)*abs(zmin)/zmax/l;
+			cmap = cat(1,interp1(1:l,csea,linspace(1,l,ceil(l*r)),'*linear'),cland);
+		elseif zmax <=0
+			cmap = csea;
+		end
+	end
+	
+	% normalisation of Z using CMAP and convertion to RGB
+	I = ind2rgb(uint16(round((z - zmin)*(size(cmap,1) - 1)/dz) + 1),cmap);
+	
+	if ct > 0
+		% computes lighting from elevation gradient
+		%[fx,fy] = gradient(z,x,y);
+		if dms
+			ryz = degkm*1000;
+			rxz = degkm*1000*cosd(mean(y));
+		else
+			rxz = zratio;
+			ryz = zratio;
+		end
+		[xx,yy] = meshgrid(x*rxz,y*ryz);
+		[fx,fy,fz] = surfnorm(xx,yy,z);
+		[ux,uy,uz] = sph2cart((90-az)*pi/180,el*pi/180,1);
+		fxy = fx*ux + fy*uy + fz*uz;
+		clear xx yy fx fy fz	% free some memory...
+		
+		fxy(isnan(fxy)) = 0;
+
+		% computes maximum absolute gradient (median-style), normalizes,
+		% saturates and duplicates in 3-D matrix
+		li = 1 - abs(sind(el)); % light amplitude (experimental)
+		r = repmat(max(min(li*fxy/nmedian(abs(fxy),1 - lcut/100),1),-1),[1,1,3]);
+		rp = (1 - abs(r)).^ct;
+	
+		% applies contrast using exponent
+		I = I.*rp;
+	
+		% lighter for positive gradient
+		I(r>0) = I(r>0) + (1 - rp(r>0));
+				
+	end
+
+	% set novalues / NaN to nancolor
+	[i,j] = find(isnan(z));
+	if ~isempty(i)
+		I(sub2ind(size(I),repmat(i,1,3),repmat(j,1,3),repmat(1:3,size(i,1),1))) = repmat(novalue_color,size(i,1),1);
+	end
+	
+	% lake option
+	if lake
+		klake = islake(z);
+	else
+		klake = 0;
+	end
+	
+	% set the seacolor for 0 values
+	if ~isempty(csea)
+		[i,j] = find(z==0 | klake);
+		if ~isempty(i)
+			I(sub2ind(size(I),repmat(i,1,3),repmat(j,1,3),repmat(1:3,size(i,1),1))) = repmat(csea(end,:),size(i,1),1);
+		end
+	end
+
+	if wmark
+		I = watermark(I,wmark);
+	end
+	txt = '';
+	
+else
+	
+	I = repmat(shiftdim(sea_color,-1),size(z));
+	cmap = repmat(sea_color,[256,1]);
+	txt = 'Mak Byur!';	% Splash !
+end
+
+% -------------------------------------------------------------------------
+% --- ends the function when 'noplot' option is on
+if noplot
+	varargout{1} = struct('x',x,'y',y,'z',z,'rgb',I);
+	return
+end
+
+% -------------------------------------------------------------------------
+% --- plots the RGB image
+hh = imagesc(x,y,I);
+
+if ~isempty(txt)
+	text(mean(x),mean(y),txt,'Color',sea_color/4, ...
+		'FontWeight','bold','HorizontalAlignment','center')
+end
+
+orient tall; axis xy
+if strcmpi(axeq,'auto')
+	axis equal
+end
+axis tight
+xlim = [min(x),max(x)];
+ylim = [min(y),max(y)];
+zlim = [min([z(z(:) ~= novalue);zmin]),max([z(z(:) ~= novalue);zmax])];
+
+if dms
+	% approximates X-Y aspect ratio for this latitude (< 20-m precision for 1x1° grid)
+	xyr = cos(mean(y)*pi/180);
+else
+	xyr = 1;
+end
+
+bw0 = max(diff(xlim)*xyr,diff(ylim))/100;
+bwy = bw*bw0; % Y border width = 1%
+bwx = bwy/xyr; % border width (in degree of longitude)
+
+
+% -------------------------------------------------------------------------
+% --- Axis basemap style
+if dec || dms
+	axis off
+
+	if strcmpi(axeq,'manual')
+		ppos = get(gcf,'PaperPosition');
+		apos = get(gca,'Position');
+		xyf = (xyr*diff(xlim)/apos(3)/ppos(3))/(diff(ylim)/apos(4)/ppos(4));
+		if xyf >= 1
+			set(gca,'Position',[apos(1),apos(2),apos(3),apos(4)/xyf]);
+		else
+			set(gca,'Position',[apos(1),apos(2),apos(3)*xyf,apos(4)]);
+		end
+	end
+	if strcmpi(axeq,'auto')
+		if diff(xlim)*xyr <= diff(ylim)
+			set(gca,'DataAspectRatio',[1,xyr,1])
+		else
+			set(gca,'DataAspectRatio',[1/xyr,1,1])
+		end
+	end
+
+	if bw > 0
+		% transparent borders
+		patch([xlim(1)-bwx,xlim(2)+bwx,xlim(2)+bwx,xlim(1)-bwx],ylim(1) - bwy*[0,0,1,1],'k','FaceColor','none','clipping','off')
+		patch([xlim(1)-bwx,xlim(2)+bwx,xlim(2)+bwx,xlim(1)-bwx],ylim(2) + bwy*[0,0,1,1],'k','FaceColor','none','clipping','off')
+		patch(xlim(1) - bwx*[0,0,1,1],[ylim(1)-bwy,ylim(2)+bwy,ylim(2)+bwy,ylim(1)-bwy],'k','FaceColor','none','clipping','off')
+		patch(xlim(2) + bwx*[0,0,1,1],[ylim(1)-bwy,ylim(2)+bwy,ylim(2)+bwy,ylim(1)-bwy],'k','FaceColor','none','clipping','off')
+	end
+	dlon = {'E','W'};
+	dlat = {'N','S'};
+	if fbold
+		fw = 'bold';
+	else
+		fw = 'normal';
+	end
+	
+	if ddx == 0
+		ddx = dtick(diff(xlim),dms);
+	end
+	if ddy == 0
+		ddy = dtick(diff(ylim),dms);
+	end
+	xtick = (ddx*ceil(xlim(1)/ddx)):ddx:xlim(2);
+	for xt = xtick(1:2:end)
+		dt = ddx - max(0,xt + ddx - xlim(2));
+		patch(repmat(xt + dt*[0,1,1,0]',[1,2]),[ylim(1) - bwy*[0,0,1,1];ylim(2) + bwy*[0,0,1,1]]','k','clipping','off')
+		if fs > 0
+			if ~isempty(regexp(tpos,'north','once'))
+				text(xt,ylim(2) + 1.2*bwy,deg2dms(xt,dlon,dec),'FontSize',fs,'FontWeight',fw, ...
+					'HorizontalAlignment','center','VerticalAlignment','bottom');
+			else
+				text(xt,ylim(1) - 1.2*bwy,deg2dms(xt,dlon,dec),'FontSize',fs,'FontWeight',fw, ...
+					'HorizontalAlignment','center','VerticalAlignment','top');
+			end
+		end
+	end
+
+	ytick = (ddy*ceil(ylim(1)/ddy)):ddy:ylim(2);
+	for yt = ytick(1:2:end)
+		dt = ddy - max(0,yt + ddy - ylim(2));
+		patch([xlim(1) - bwx*[0,0,1,1];xlim(2) + bwx*[0,0,1,1]]',repmat(yt + dt*[0,1,1,0]',[1,2]),'k','clipping','off')
+		if fs > 0
+			if ~isempty(regexp(tpos,'east','once'))
+				text(xlim(2) + 1.2*bwx,yt,deg2dms(yt,dlat,dec),'FontSize',fs,'FontWeight',fw, ...
+					'HorizontalAlignment','center','VerticalAlignment','top','rotation',90);
+			else
+				text(xlim(1) - 1.2*bwx,yt,deg2dms(yt,dlat,dec),'FontSize',fs,'FontWeight',fw, ...
+					'HorizontalAlignment','center','VerticalAlignment','bottom','rotation',90);
+			end
+		end
+	end
+end
+
+% -------------------------------------------------------------------------
+% --- Scales legend
+if scale
+	%wsc = diff(xlim)*0.01;
+	wsc = bw0;
+	xsc = xlim(2) + wsc*2 + bwx;
+
+	if wmark
+		cmap = watermark(cmap,wmark);
+	end
+
+	% -- elevation scale (colorbar)
+	zscale = linspace(zmin,zmax,length(cmap))';
+	yscale = linspace(0,diff(ylim)/2,length(cmap));
+	ddz = dtick(dz*max(0.5*xyr*diff(xlim)/yscale(end),1));
+	ztick = (ddz*ceil(zscale(1)/ddz)):ddz:zscale(end);
+ 	rgbscale = ind2rgb(uint16(round((zscale - zmin)*(size(cmap,1) - 1)/dz) + 1),cmap);
+	ysc = ylim(1);
+	hold on
+	imagesc(xsc + wsc*[-1,1]/2,ysc + yscale,repmat(rgbscale,1,2),'clipping','off');
+	patch(xsc + wsc*[-1,1,1,-1],ysc + yscale(end)*[0,0,1,1],'k','FaceColor','none','Clipping','off')
+	text(xsc + 2*wsc + zeros(size(ztick)),ysc + (ztick - zscale(1))*0.5*diff(ylim)/diff(zscale([1,end])),num2str(ztick'), ...
+		'HorizontalAlignment','left','VerticalAlignment','middle','FontSize',6)
+	% indicates min and max Z values
+	text(xsc,ysc - bwy/2,sprintf('%g m',roundsd(zlim(1),3)),'FontWeight','bold', ...
+		'HorizontalAlignment','left','VerticalAlignment','top','FontSize',6)
+	text(xsc,ysc + .5*diff(ylim) + bwy/2,sprintf('%g m',roundsd(zlim(2),3)),'FontWeight','bold', ...
+		'HorizontalAlignment','left','VerticalAlignment','bottom','FontSize',6)
+	
+	% frees axes only if not hold on
+	if ~holdon
+		hold off
+	end
+	
+	% -- distance scale (in km)
+	if dms
+		fsc = degkm;
+	else
+		fsc = zratio/1e3;
+	end
+	dkm = dtick(diff(ylim)*fsc);
+	ysc = ylim(2) - 0.5*dkm/fsc;
+	patch(xsc + wsc*[-1,-1,0,0],ysc + dkm*0.5*[-1,1,1,-1]/fsc,'k','FaceColor',grey,'clipping','off')
+	if dkm > 1
+		skm = sprintf('%g km',dkm);
+	else
+		skm = sprintf('%g m',dkm*1000);
+	end
+	text(xsc,ysc,skm,'rotation',-90,'HorizontalAlignment','center','VerticalAlignment','bottom', ...
+			'Color',grey,'FontWeight','bold','FontSize',6)
+end
+
+
+if nargout > 0
+	varargout{1} = hh;
+end
+if nargout > 1
+	varargout{2} = I;
+end
+if nargout > 2
+	varargout{3} = z;
+end
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function y = nmedian(x,n)
+%NMEDIAN Generalized median filter
+%	NMEDIAN(X,N) sorts elemets of X and returns N-th value (N normalized).
+%	So:
+%	   N = 0 is minimum value
+%	   N = 0.5 is median value
+%	   N = 1 is maximum value
+
+if nargin < 2
+	n = 0.5;
+end
+y = sort(x(:));
+y = interp1(sort(y),n*(length(y)-1) + 1);
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function dd = dtick(dlim,deg)
+%DTICK Tick intervals
+
+if nargin < 2
+	deg = 0;
+end
+
+if deg && dlim <= 2/60
+	% less than 2 minutes: base 36
+	m = 10^floor(log10(dlim*36))/36;
+elseif deg && dlim <= 2
+	% less than 2 degrees: base 6
+	m = 10^floor(log10(dlim*6))/6;
+else
+	% more than few degrees or not degrees: decimal rules
+	m = 10^floor(log10(dlim));
+end
+p = ceil(dlim/m);
+if p <= 1
+	dd = .1*m;
+elseif p == 2
+	dd = .2*m;
+elseif p <= 5
+	dd = .5*m;
+else
+	dd = m;
+end
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function s = deg2dms(x,ll,dec)
+%DEG2DMS Degree/minute/second display
+
+if dec
+	s = sprintf('%7.7g',x);
+else
+	xa = abs(x) + 1/360000;
+	%sd = sprintf('%d%c',floor(xa),176);	% ASCII char 176 is the degree sign
+	sd = sprintf('%d°',floor(xa));
+	sm = '';
+	ss = '';
+	if mod(x,1)
+		sm = sprintf('%02d''',floor(mod(60*xa,60)));
+		sa = floor(mod(3600*xa,60));
+		if sa
+			ss = sprintf('%02d"',sa);
+		else
+			if strcmp(sm,'00''')
+				sm = '';
+			end
+		end
+	end
+	s = [sd,sm,ss,ll{1+int8(x<0)}];
+end
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function z = fillgap(x,y,z)
+% GRIDDATA is not efficient for large arrays, but has great advantage to be
+% included in Matlab's core functions! To optimize interpolation, we
+% reduce the amount of relevant data by building a mask of all surrounding
+% pixels of novalue areas... playing with linear index!
+
+sz = size(z);
+k = find(isnan(z));
+k(k == 1 | k == numel(z)) = []; % removes first and last index (if exist)
+if ~isempty(k)
+	[xx,yy] = meshgrid(x,y);
+	mask = zeros(sz,'int8');
+	k2 = ind90(sz,k); % k2 is linear index in the row order
+	% sets to 1 every previous and next index, both in column and row order
+	mask([k-1;k+1;ind90(fliplr(sz),[k2-1;k2+1])]) = 1; 
+	mask(k) = 0; % removes the novalue index
+	kb = find(mask); % keeps only border values
+	z(k) = griddata(xx(kb),yy(kb),z(kb),xx(k),yy(k));
+end
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function k2 = ind90(sz,k)
+
+[i,j] = ind2sub(sz,k);
+k2 = sub2ind(fliplr(sz),j,i); % switched i and j: k2 is linear index in row order
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function k = islake(z)
+% ISLAKE mask of zero gradient on 3x3 tiles
+% We use diff matrix in row and column directions, and shift it to build
+% a single vectorized test of surrounding pixels. To do this we must
+% concatenate unit vectors in different combinations...
+
+dx = diff(z,1,2);	% differences in X direction
+dy = diff(z,1,1);	% differences in Y direction
+u1 = ones(size(z,1),1);	% row unit vector 
+u2 = ones(1,size(z,2));	% column unit vector
+u2r = u2(2:end);
+
+% index of the tiles center pixel
+k = ( ...
+	[u2;dy] == 0 & [dy;u2] == 0 & ...
+	[u1,dx] == 0 & [dx,u1] == 0 & ...
+	[u1,[dx(2:end,:);u2r]] == 0 & [[dx(2:end,:);u2r],u1] == 0 & ...
+	[u1,[u2r;dx(1:end-1,:)]] == 0 & [[u2r;dx(1:end-1,:)],u1] == 0 ...
+);
+
+% now extends it to surrounding pixels
+k(1:end-1,:) = (k(1:end-1,:) | k(2:end,:));
+k(2:end,:) = (k(2:end,:) | k(1:end-1,:));
+k(:,1:end-1) = (k(:,1:end-1) | k(:,2:end));
+k(:,2:end) = (k(:,2:end) | k(:,1:end-1));
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function s = isrgb(x,n)
+
+if nargin < 2
+	n = 0;
+end
+if isnumeric(x) && (n == 1 && all(size(x) == [1,3]) || n == 0 && size(x,2) == 3) ...
+		&& all(x(:) >= 0 & x(:) <= 1)
+	s = 1;
+else
+	s = 0;
+end
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function s = isperc(x)
+
+if isnumeric(x) && isscalar(x) && x >= 0 && x <= 100
+	s = 1;
+else
+	s = 0;
+end
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function s = isvec(x,n)
+
+if nargin < 2
+	n = 2;
+end
+if isnumeric(x) && numel(x) == n
+	s = 1;
+else
+	s = 0;
+end
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function y=roundsd(x,n)
+
+og = 10.^(floor(log10(abs(x)) - n + 1));
+y = round(x./og).*og;
+y(x==0) = 0;
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function y = watermark(x,n)
+
+if nargin < 2
+	n = 2;
+end
+
+if n == 0
+    y = x;
+else
+    y = (x/n + 1 - 1/n);
+end
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function [s,v] = checkparam(arg,nam,func,val)
+
+switch func2str(func)
+	case 'isscalar'
+		num = 1;
+		mes = 'scalar value';
+	case 'isperc'
+		num = 1;
+		mes = 'percentage scalar value';
+	case 'isvec'
+		num = 1;
+		if nargin < 4
+			val = 2;
+		end
+		mes = sprintf('%d-element vector',val);
+	case 'isrgb'
+		num = 1;
+		mes = '[R,G,B] vector with 0.0 to 1.0 values';
+	case 'ischar'
+		num = 0;
+		mes = 'string';
+		if nargin > 3
+			mes = sprintf('%s (%s)',mes,strjoin(val,' or '));
+		end
+	otherwise
+		num = 1;
+		mes = 'value';
+end
+
+s = 0;
+v = [];
+k = find(strcmpi(arg,nam));
+if ~isempty(k)
+	if (k + 1) <= length(arg) ...
+			&& (~num || isnumeric(arg{k+1})) ...
+			&& (nargin < 4 && func(arg{k+1}) ...
+				|| (nargin > 3 && (strcmp(func2str(func),'ischar') && ismember(arg{k+1},val)) ...
+					 || strcmp(func2str(func),'isvec') && func(arg{k+1},val)))
+		v = arg{k+1};
+		s = 1;
+	else
+		error('%s option must be followed by a valid %s.',upper(nam),mes)
+	end
+end
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function s=strjoin(c,d)
+%STRJOIN Join cell array of strings
+%(this is for Matlab versions < 2013a backward compatibility)
+
+if nargin < 2
+	d = '';
+end
+n = numel(c);
+ss = cell(2,n);
+ss(1,:) = reshape(c,1,n);
+ss(2,1:n-1) = {d};
+s = [ss{:}];
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dem/landcolor.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dem/landcolor.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dem/landcolor.m	(revision 27955)
@@ -0,0 +1,78 @@
+function y = landcolor(n)
+%LANDCOLOR Land colormap
+%
+%	Author: Francois Beauducel <beauducel@ipgp.fr>
+%	$Revision: 1.0.0 $   $Date: 2012/05/17 11:22:44 $
+
+J = [ ...
+0.095678 0.53427 0.21682 
+0.15785 0.5979 0.23274 
+0.21286 0.64673 0.2514 
+0.26411 0.68789 0.27268 
+0.32959 0.72416 0.31308 
+0.39794 0.75695 0.36038 
+0.46153 0.7871 0.40624 
+0.52108 0.81516 0.45135 
+0.57702 0.84152 0.49547 
+0.62973 0.86645 0.53891 
+0.67946 0.89016 0.58187 
+0.72647 0.91282 0.62427 
+0.77095 0.93455 0.66619 
+0.81306 0.95546 0.70772 
+0.85292 0.97563 0.7489 
+0.89066 0.99514 0.78976 
+0.88379 0.98595 0.77038 
+0.86389 0.96758 0.73236 
+0.84615 0.94972 0.69623 
+0.8303 0.93233 0.66186 
+0.81612 0.91536 0.6291 
+0.80341 0.8988 0.59784 
+0.79201 0.8826 0.56795 
+0.78191 0.86676 0.53946 
+0.7729 0.85123 0.51224 
+0.76479 0.83602 0.48615 
+0.75747 0.8211 0.46111 
+0.75084 0.80645 0.43704 
+0.74506 0.79206 0.41414 
+0.73981 0.77792 0.39211 
+0.73501 0.76401 0.37089 
+0.73068 0.75033 0.35052 
+0.72683 0.73685 0.33106 
+0.72042 0.72074 0.31228 
+0.71032 0.70085 0.29417 
+0.69761 0.67821 0.27694 
+0.68489 0.65558 0.26026 
+0.67235 0.63313 0.24418 
+0.65997 0.61082 0.22889 
+0.64775 0.58874 0.21406 
+0.63568 0.56689 0.19983 
+0.62376 0.54527 0.18622 
+0.61197 0.52391 0.17299 
+0.60033 0.50283 0.16046 
+0.58881 0.48203 0.14832 
+0.57742 0.46151 0.13667 
+0.56616 0.44133 0.12555 
+0.55502 0.4214 0.11472 
+0.54398 0.4019 0.10456 
+0.53306 0.38266 0.094633 
+0.52226 0.36382 0.085242 
+0.51155 0.3453 0.076179 
+0.50095 0.32714 0.067515 
+0.49045 0.30938 0.059259 
+0.48005 0.29193 0.051294 
+0.46973 0.27495 0.043796 
+0.45951 0.25823 0.0365 
+0.44938 0.24206 0.029715 
+0.43934 0.22609 0.023063 
+0.42938 0.21074 0.016949 
+0.41951 0.19556 0.010917 
+0.40971 0.18105 0.0054326 
+0.4 0.16667 0 
+];
+
+l = length(J);
+if nargin < 1
+	n = 256;
+end
+y = interp1(1:l,J,linspace(1,l,n),'*linear');
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dem/license.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dem/license.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dem/license.txt	(revision 27955)
@@ -0,0 +1,24 @@
+Copyright (c) 2016, François Beauducel
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * 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
+
+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 OWNER 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.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dem/seacolor.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dem/seacolor.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dem/seacolor.m	(revision 27955)
@@ -0,0 +1,58 @@
+function y = seacolor(n)
+%SEACOLOR Sea colormap adapted from NGDC ETOPO1
+%
+%	Author: Francois Beauducel <beauducel@ipgp.fr>
+
+J = [ ...
+    0.0392         0    0.4745
+    0.1020         0    0.5373
+    0.1020         0    0.5373
+    0.1490         0    0.5961
+    0.1490         0    0.5961
+    0.1059    0.0118    0.6510
+    0.1059    0.0118    0.6510
+    0.0627    0.0235    0.7059
+    0.0627    0.0235    0.7059
+    0.0196    0.0353    0.7569
+    0.0196    0.0353    0.7569
+         0    0.0549    0.7961
+         0    0.0549    0.7961
+         0    0.0863    0.8235
+         0    0.0863    0.8235
+         0    0.1176    0.8471
+         0    0.1176    0.8471
+         0    0.1529    0.8745
+         0    0.1529    0.8745
+    0.0471    0.2667    0.9059
+    0.0471    0.2667    0.9059
+    0.1020    0.4000    0.9412
+    0.1020    0.4000    0.9412
+    0.0745    0.4588    0.9569
+    0.0745    0.4588    0.9569
+    0.0549    0.5216    0.9765
+    0.0549    0.5216    0.9765
+    0.0824    0.6196    0.9882
+    0.0824    0.6196    0.9882
+    0.1176    0.6980    1.0000
+    0.1176    0.6980    1.0000
+    0.1686    0.7294    1.0000
+    0.1686    0.7294    1.0000
+    0.2157    0.7569    1.0000
+    0.2157    0.7569    1.0000
+    0.2549    0.7843    1.0000
+    0.2549    0.7843    1.0000
+    0.3098    0.8235    1.0000
+    0.3098    0.8235    1.0000
+    0.3686    0.8745    1.0000
+    0.3686    0.8745    1.0000
+    0.5412    0.8902    1.0000
+    0.5412    0.8902    1.0000
+    0.7373    0.9020    1.0000
+];
+
+l = length(J);
+if nargin < 1
+	n = 256;
+end
+y = interp1(1:l,J,linspace(1,l,n),'*linear');
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/distribute/README
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/distribute/README	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/distribute/README	(revision 27955)
@@ -0,0 +1,9 @@
+At: https://pypi.python.org/pypi/setuptools
+
+Installation Instructions
+
+The recommended way to bootstrap setuptools on any system is to download ez_setup.py and run it using the target Python environment. Different operating systems have different recommended techniques to accomplish this basic routine, so below are some examples to get you started.
+
+Setuptools requires Python 2.6 or later. To install setuptools on Python 2.4 or Python 2.5, use the bootstrap script for Setuptools 1.x.
+
+The link provided to ez_setup.py is a bookmark to bootstrap script for the latest known stable release.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/distribute/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/distribute/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/distribute/install.sh	(revision 27955)
@@ -0,0 +1,6 @@
+#!/bin/bash
+set -eu
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'http://python-distribute.org/distribute_setup.py' 'distribute_setup.py'
+python distribute_setup.py
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/doxygen/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/doxygen/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/doxygen/install.sh	(revision 27955)
@@ -0,0 +1,22 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+mkdir install
+
+#Download latest version
+git clone https://github.com/doxygen/doxygen.git install
+
+#Configure doxygen
+cd install 
+mkdir build
+cd build
+cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$ISSM_DIR/externalpackages/doxygen/install" ..
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dyson/ldap.pl
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dyson/ldap.pl	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dyson/ldap.pl	(revision 27955)
@@ -0,0 +1,25 @@
+#!/usr/bin/perl
+#
+# LDAP.PL - Acquire JPL LDAP data and pare down to user IDs - 2011-08-01
+#
+$cat="/bin/cat"; $srt="/bin/sort"; $ldb="/usr/bin/ldapsearch";                 # Binary locations (change as needed)
+$lds="ldap.jpl.nasa.gov"; $ou="ou=personnel,dc=dir,dc=jpl,dc=nasa,dc=gov"; # Define LDAP server & organization
+$bn="jplbadgenumber"; $txt="$bn".".txt"; $db="jplusers.db";                # Initialize values
+#
+system(`$ldb -x -h $lds -b $ou uid=* uid > $txt`);                         # Execute LDAPsearch, write to file
+#
+open(I,"<$txt");                                                           # Open input file handle
+  open(O,">badges.tmp");                                                   # Open output file handle
+    while (<I>) { chomp($_);                                               # Spool through input file
+      if ($_ =~ "^uid: ") {                                                # If line begins with UID value,
+        $_=~s/uid: //; $_=~s/,(.*)$//; $_=~s/\n//;                         #   strip line of extraneous data
+        if (!($_=~/^\d\d\d\d\d\d/)) { print O "$_\n"; }                    # If UID is non-numeric, print output
+      }                                                                    # Close condition
+    }                                                                      # Close spool
+  close(O);                                                                # Close output file handle
+close(I);                                                                  # Close input file handle
+#
+system(`$cat badges.tmp |$srt -u > $db 2>/dev/null`);                      # Sort output
+unlink("badges.tmp"); unlink("$txt");                                      # Unlink temp files
+#
+# EOF - 2011-08-01 - Jay Dyson <jdyson@jpl.nasa.gov>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dyson/readme.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dyson/readme.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dyson/readme.txt	(revision 27955)
@@ -0,0 +1,38 @@
+-- ARCHIVE MANIFEST ------------------------------------------ 2011-08-19 --
+
+  Filename        Description
+  --------------  ----------------------------------------------------------
+  readme.txt      This file: describes script functions.
+  ldap.pl         PERL script for acquiring JPL user IDs via cron job.
+  source_seek.sh  Code-scanning script.  Surveys scripts for hard-coded IP
+                  addresses, password callouts, and user IDs.
+
+-- SCRIPT INFORMATION ------------------------------------------------------
+
+  LDAP.PL (requires PERL, UNIX ldapsearch, and related utilities)
+  --------------------------------------------------------------------------
+  The LDAP.PL script is intended solely for twice-daily invocation via cron.
+  This script should be run once at noon, once at midnight.  This script 
+  generates the jplusers.db file on which the SOURCE_SEEK.SH shell script 
+  relies for its scanning of source files.
+
+  SOURCE_SEEK.SH (requires UNIX shell and related utilities)
+  --------------------------------------------------------------------------
+  The SOURCE_SEEK.SH shell script is intended for regular cron invocation,
+  but may be run at system administrator discretion.  This script uses UNIX
+  'find' and 'grep' utilities to scan code files for hard-coded JPL Internet
+  Protocol (IP) addresses, password callouts, and JPL user IDs.  This script
+  accepts the path where source code files reside as a command line
+  argument (e.g., ./source_seek.sh /path/to/sourcecode/files).
+
+-- AUTHOR CONTACT INFO -----------------------------------------------------
+
+  Please direct questions regarding these files to the developer.
+ 
+  Name   : Jay Dyson, CISSP
+  Role   : IT Security Engineer
+  Group  : JPL IT Security
+  E-mail : jdyson@jpl.nasa.gov
+  Phone  : 818-397-4960
+
+------------------------------------------------ LAST UPDATED: 2011-08-19 --
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/dyson/source_seek.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/dyson/source_seek.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/dyson/source_seek.sh	(revision 27955)
@@ -0,0 +1,26 @@
+#!/bin/sh
+#
+# SOURCE_SEEK.SH - Look for IP addresses and mention of 'password' in source files - 2009-10-05
+#
+if [ -n "${1}" ]; then
+  clear
+  echo "Checking for IP addresses"
+  echo "--------------------------------------------"
+  find $1 -name "*" -exec grep -il "128\.149\." {} \;
+  find $1 -name "*" -exec grep -il "137\.78\."  {} \;
+  find $1 -name "*" -exec grep -il "137\.79\."  {} \;
+  find $1 -name "*" -exec grep -il "137\.228\." {} \;
+  echo "--------------------------------------------"
+  echo "\nChecking for 'password'"
+  echo "--------------------------------------------"
+  find $1 -name "*" -exec grep -il "password"   {} \;
+  echo "--------------------------------------------"
+  echo "\nChecking for JPL user IDs"
+  echo "--------------------------------------------"
+  find $1 -name "*" -exec grep -ilf jplusers.db {} \;
+  echo "--------------------------------------------"
+else
+  echo -e "\nUSE: $0 <directory_of_source_files>\n";
+fi
+#
+# EOF - 2011-08-05 - Jay Dyson <jdyson@jpl.nasa.gov>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/ec2ami/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/ec2ami/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/ec2ami/install.sh	(revision 27955)
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf ec2-api-tools.zip
+rm -rf ec2-api-tools-1.4.0.7
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/ec2-api-tools.zip' 'ec2-api-tools.zip'
+
+#Untar 
+unzip ec2-api-tools.zip
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/ec2api/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/ec2api/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/ec2api/install.sh	(revision 27955)
@@ -0,0 +1,13 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf ec2-api-tools.zip
+rm -rf ec2-api-tools-1.6.3.1
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/ec2-api-tools.zip' 'ec2-api-tools.zip'
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/docs/ec2-ug.pdf' 'ec2-ug.pdf'
+
+#Untar 
+unzip ec2-api-tools.zip
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/emscripten/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/emscripten/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/emscripten/install.sh	(revision 27955)
@@ -0,0 +1,42 @@
+#!/bin/bash
+set -eu
+
+
+# TODO:
+# - Introduce build step to $ISSM_DIR/jenkins/jenkins.sh to compile Fortran code in $ISSM_DIR/src/c/modules/GiaDefelectionCorex/ to C with f2c
+#       - Then, revert $ISSM_DIR/externalpackages/emscripten/install.sh to r24306 and test clean build
+#       - When builtin support for Fortran is available, remove build step
+#
+
+## Constants
+#
+VER="latest" # Set this to "latest", or last tag that works in case of failure
+
+## Environment
+#
+PREFIX="${ISSM_DIR}/externalpackages/emscripten/install"
+
+# Cleanup
+rm -rf ${PREFIX}
+
+# Get the emsdk repo
+git clone https://github.com/emscripten-core/emsdk.git
+
+# Create $PREFIX directory
+mkdir -p ${PREFIX}
+
+# Move source to $PREFIX directory
+mv emsdk/* ${PREFIX}
+rm -rf emsdk
+
+cd ${PREFIX}
+
+# Download and install the latest SDK tools.
+./emsdk install ${VER}
+
+# Make the "latest" SDK "active" for the current user. (writes ~/.emscripten
+# file)
+./emsdk activate ${VER}
+
+# Activate PATH and other environment variables in the current terminal
+source ./emsdk_env.sh
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/esmf/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/esmf/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/esmf/install.sh	(revision 27955)
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -eu
+
+#DOC: https://earthsystemmodeling.org/docs/nightly/develop/ESMC_crefdoc/node5.html#SECTION05063000000000000000
+# https://cpp.hotexamples.com/examples/-/-/ESMC_MeshAddNodes/cpp-esmc_meshaddnodes-function-examples.html
+
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/ESMF_8_0_1.tar.gz" "ESMF_8_0_1.tar.gz"
+tar -zxvf ESMF_8_0_1.tar.gz
+mv ESMF_8_0_1 esmf
+export ESMF_DIR=$ISSM_DIR/externalpackages/esmf/esmf
+export ESMF_INSTALL_PREFIX=$ISSM_DIR/externalpackages/esmf/install
+
+#Compile and install esmf
+cd esmf
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/ImageSelection.java
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/ImageSelection.java	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/ImageSelection.java	(revision 27955)
@@ -0,0 +1,38 @@
+/*
+ * Based on code snippet from
+ * http://java.sun.com/developer/technicalArticles/releases/data/
+ *
+ * Copyright © 2008, 2010 Oracle and/or its affiliates. All rights reserved. Use is subject to license terms.
+ */
+
+import java.awt.image.BufferedImage;
+import java.awt.datatransfer.*;
+
+public class ImageSelection implements Transferable {
+    
+    private static final DataFlavor flavors[] =
+    {DataFlavor.imageFlavor};
+    
+    private BufferedImage image;
+    
+    public ImageSelection(BufferedImage image) {
+        this.image = image;
+    }
+    
+    // Transferable
+    public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException {
+        if (flavor.equals(flavors[0]) == false) {
+            throw new UnsupportedFlavorException(flavor);
+        }
+        return image;
+    }
+    
+    public DataFlavor[] getTransferDataFlavors() {
+        return flavors;
+    }
+    
+    public boolean isDataFlavorSupported(DataFlavor
+    flavor) {
+        return flavor.equals(flavors[0]);
+    }
+}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/LICENSE
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/LICENSE	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/LICENSE	(revision 27955)
@@ -0,0 +1,27 @@
+Copyright (c) 2014, Oliver J. Woodford, Yair M. Altman
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* 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.
+
+* Neither the name of the {organization} 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.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/README.md
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/README.md	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/README.md	(revision 27955)
@@ -0,0 +1,272 @@
+export_fig
+==========
+
+A toolbox for exporting figures from MATLAB to standard image and document formats nicely.
+
+### Overview
+Exporting a figure from MATLAB the way you want it (hopefully the way it looks on screen), can be a real headache for the unitiated, thanks to all the settings that are required, and also due to some eccentricities (a.k.a. features and bugs) of functions such as `print`. The first goal of export_fig is to make transferring a plot from screen to document, just the way you expect (again, assuming that's as it appears on screen), a doddle.
+  
+The second goal is to make the output media suitable for publication, allowing you to publish your results in the full glory that you originally intended. This includes embedding fonts, setting image compression levels (including lossless), anti-aliasing, cropping, setting the colourspace, alpha-blending and getting the right resolution.
+
+Perhaps the best way to demonstrate what export_fig can do is with some examples.
+
+*Note: `export_fig` currently supports only figures created with the `figure` function, or GUIDE. Figures created using `uifigure` or AppDesigner are only partially supported. See issues [#287](https://github.com/altmany/export_fig/issues/287), [#261](https://github.com/altmany/export_fig/issues/261) for details.*
+  
+### Examples
+**Visual accuracy** - MATLAB's exporting functions, namely `saveas` and `print`, change many visual properties of a figure, such as size, axes limits and ticks, and background colour, in unexpected and unintended ways. Export_fig aims to faithfully reproduce the figure as it appears on screen. For example:  
+```Matlab
+plot(cos(linspace(0, 7, 1000)));
+set(gcf, 'Position', [100 100 150 150]);
+saveas(gcf, 'test.png');
+export_fig test2.png
+```
+generates the following:
+
+| Figure: | test.png: | test2.png: |
+|:-------:|:---------:|:----------:|
+|![](https://farm6.staticflickr.com/5616/15589249291_16e485c29a_o_d.png)|![](https://farm4.staticflickr.com/3944/15406302850_4d2e1c7afa_o_d.png)|![](https://farm6.staticflickr.com/5607/15568225476_8ce9bd5f6b_o_d.png)|
+
+Note that the size and background colour of test2.png (the output of export_fig) are the same as those of the on screen figure, in contrast to test.png. Of course, if you want the figure background to be white (or any other colour) in the exported file then you can set this prior to exporting using:
+```Matlab
+set(gcf, 'Color', 'w');
+```
+  
+Notice also that export_fig crops and anti-aliases (smooths, for bitmaps only) the output by default. However, these options can be disabled; see the Tips section below for details.
+  
+**Resolution** - by default, export_fig exports bitmaps at screen resolution. However, you may wish to save them at a different resolution. You can do this using either of two options: `-m<val>`, where <val> is a positive real number, magnifies the figure by the factor <val> for export, e.g. `-m2` produces an image double the size (in pixels) of the on screen figure; `-r<val>`, again where <val> is a positive real number, specifies the output bitmap to have <val> pixels per inch, the dimensions of the figure (in inches) being those of the on screen figure. For example, using:  
+```Matlab
+export_fig test.png -m2.5
+```
+on the figure from the example above generates:
+
+![](https://farm4.staticflickr.com/3937/15591910915_dc7040c477_o_d.png)
+
+Sometimes you might have a figure with an image in. For example:
+```Matlab
+imshow(imread('cameraman.tif'))
+hold on
+plot(0:255, sin(linspace(0, 10, 256))*127+128);
+set(gcf, 'Position', [100 100 150 150]);
+```
+generates this figure:
+
+![](https://farm4.staticflickr.com/3942/15589249581_ff87a56a3f_o_d.png)
+  
+Here the image is displayed in the figure at resolution lower than its native resolution. However, you might want to export the figure at a resolution such that the image is output at its native (i.e. original) size (in pixels). Ordinarily this would require some non-trivial computation to work out what that resolution should be, but export_fig has an option to do this for you. Using:
+```Matlab
+export_fig test.png -native
+```
+produces:
+
+![](https://farm6.staticflickr.com/5604/15589249591_da2b2652e4_o_d.png)
+
+with the image being the size (in pixels) of the original image. Note that if you want an image to be a particular size, in pixels, in the output (other than its original size) then you can resize it to this size and use the `-native` option to achieve this.
+
+All resolution options (`-m<val>`, `-q<val>` and `-native`) correctly set the resolution information in PNG and TIFF files, as if the image were the dimensions of the on screen figure.
+
+**Shrinking dots & dashes** - when exporting figures with dashed or dotted lines using either the ZBuffer or OpenGL (default for bitmaps) renderers, the dots and dashes can appear much shorter, even non-existent, in the output file, especially if the lines are thick and/or the resolution is high. For example:  
+```Matlab
+plot(sin(linspace(0, 10, 1000)), 'b:', 'LineWidth', 4);
+hold on
+plot(cos(linspace(0, 7, 1000)), 'r--', 'LineWidth', 3);
+grid on
+export_fig test.png
+```
+generates:
+
+![](https://farm4.staticflickr.com/3956/15592747732_f943d4aa0a_o_d.png)
+
+This problem can be overcome by using the painters renderer. For example:
+```Matlab
+export_fig test.png -painters
+```
+used on the same figure generates:
+
+![](https://farm4.staticflickr.com/3945/14971168504_77692f11f5_o_d.png)
+
+Note that not only are the plot lines correct, but the grid lines are too.
+
+**Transparency** - sometimes you might want a figure and axes' backgrounds to be transparent, so that you can see through them to a document (for example a presentation slide, with coloured or textured background) that the exported figure is placed in. To achieve this, first (optionally) set the axes' colour to 'none' prior to exporting, using:  
+```Matlab
+set(gca, 'Color', 'none'); % Sets axes background
+```
+    
+then use export_fig's `-transparent` option when exporting:
+```Matlab
+export_fig test.png -transparent
+```
+
+This will make the background transparent in PDF, EPS and PNG outputs. You can additionally save fully alpha-blended semi-transparent patch objects to the PNG format. For example:
+
+```Matlab
+logo;
+alpha(0.5);
+```
+
+generates a figure like this:
+
+![](https://farm4.staticflickr.com/3933/15405290339_b08de33528_o_d.png)
+
+If you then export this to PNG using the `-transparent` option you can then put the resulting image into, for example, a presentation slide with fancy, textured background, like so:
+
+![](https://farm6.staticflickr.com/5599/15406302920_59beaefff1_o_d.png)
+
+and the image blends seamlessly with the background.
+
+**Image quality** - when publishing images of your results, you want them to look as good as possible. By default, when outputting to lossy file formats (PDF, EPS and JPEG), export_fig uses a high quality setting, i.e. low compression, for images, so little information is lost. This is in contrast to MATLAB's print and saveas functions, whose default quality settings are poor. For example:
+```Matlab
+A = im2double(imread('peppers.png'));
+B = randn(ceil(size(A, 1)/6), ceil(size(A, 2)/6), 3) * 0.1;
+B = cat(3, kron(B(:,:,1), ones(6)), kron(B(:,:,2), ones(6)), kron(B(:,:,3), ones(6)));
+B = A + B(1:size(A, 1),1:size(A, 2),:);
+imshow(B);
+print -dpdf test.pdf
+```
+generates a PDF file, a sub-window of which looks (when zoomed in) like this:
+
+![](https://farm6.staticflickr.com/5613/15405290309_881b2774d6_o_d.png)
+
+while the command
+
+```Matlab
+export_fig test.pdf
+```
+on the same figure produces this:
+
+![](https://farm4.staticflickr.com/3947/14971168174_687473133f_o_d.png)
+
+While much better, the image still contains some compression artifacts (see the low level noise around the edge of the pepper). You may prefer to export with no artifacts at all, i.e. lossless compression. Alternatively, you might need a smaller file, and be willing to accept more compression. Either way, export_fig has an option that can suit your needs: `-q<val>`, where <val> is a number from 0-100, will set the level of lossy image compression (again in PDF, EPS and JPEG outputs only; other formats are lossless), from high compression (0) to low compression/high quality (100). If you want lossless compression in any of those formats then specify a <val> greater than 100. For example:
+```Matlab
+export_fig test.pdf -q101
+```
+again on the same figure, produces this:
+
+![](https://farm6.staticflickr.com/5608/15405803908_934512c1fe_o_d.png)
+
+Notice that all the noise has gone.
+
+### Tips
+**Anti-aliasing** - the anti-aliasing which export_fig applies to bitmap outputs by default makes the images look nice, but it can also blur images and increase exporting time and memory requirements, so you might not always want it. You can set the level of anti-aliasing by using the `-a<val>` option, where <val> is 1 (no anti-aliasing), 2, 3 (default) or 4 (maximum anti-aliasing).  
+  
+**Cropping** - by default, export_fig crops its output to minimize the amount of empty space around the figure. If you'd prefer the figure to be uncropped, and instead have the same appearance (in terms of border width) as the on screen figure, then use the `-nocrop` option.  
+  
+**Colourspace** - by default, export_fig generates files in the RGB [colourspace](https://en.wikipedia.org/wiki/Color_space). However, you can also export in greyscale or the CMYK colourspace, using the `-grey` (or `-gray`) and `-cmyk` options respectively. The CMYK option is useful for publishers who require documents in this colourspace, but the option is only supported for PDF, EPS and TIFF files.
+
+**Specifying a target directory** - you can get export_fig to save output files to any directory (for which you have write permission), simply by specifying the full or relative path in the filename. For example:
+```Matlab
+export_fig ../subdir/fig.png;
+export_fig('C:/Users/Me/Documents/figures/myfig', '-pdf', '-png');
+```
+
+**Variable file names** - often you might want to save a series of figures in a for loop, each with a different name. For this you can use the functional form of input arguments, i.e. `export_fig(arg1, arg2)`,  and construct the filename string in a variable. Here's an example of this:  
+```Matlab
+for a = 1:5
+    plot(rand(5, 2));
+    export_fig(sprintf('plot%d.png', a));
+end
+```
+When using the functional form like this, be sure to put string variables in quotes:
+```Matlab
+export_fig(sprintf('plot%d', a), '-a1', '-pdf', '-png');
+```
+
+**Specifying the figure/axes** - if you have multiple figures open you can specify which figure to export using its handle:  
+```Matlab
+export_fig(figure_handle, filename);
+```
+Equally, if your figure contains several subplots then you can export just one of them by giving export_fig the handle to the relevant axes:
+```Matlab
+export_fig(axes_handle, filename);
+```
+
+**Multiple formats** - save time by exporting to multiple formats simultaneously. E.g.: 
+```Matlab
+export_fig filename -pdf -eps -png -jpg -tiff
+```
+
+**Other file formats** - if you'd like to save your figure to a bitmap format that is not supported by export_fig, e.g. animated GIF, PPM file or a frame in a movie, then you can use export_fig to output the image, and optionally an alpha-matte, to the workspace. E.g.:  
+```Matlab
+frame = export_fig;
+```
+or
+```Matlab
+[frame, alpha] = export_fig;
+```
+These variables can then be saved to other image formats using other functions, such as imwrite.
+
+**Appending to a file** - you can use the `-append` option to append the figure to the end of an image/document, if it already exists. This is supported for PDF and TIFF files only. Note that if you wish to append a lot of figures consecutively to a PDF, it can be more efficient to save all the figures to PDF separately then append them all in one go at the end (e.g. using [append_pdfs](http://www.mathworks.com/matlabcentral/fileexchange/31215-appendpdfs)).  
+  
+**Output to clipboard** - you can use the `-clipboard` option to copy the specified figure or axes to the system clipboard, for easy paste into other documents (e.g., Word or PowerPoint). Note that the image is copied in bitmap (not vector) format.  
+  
+**Font size** - if you want to place an exported figure in a document with the font a particular size then you need to set the font to that size in the figure, and not resize the output of export_fig in the document. To avoid resizing, simply make sure that the on screen figure is the size you want the output to be in the document before exporting.  
+  
+**Renderers** - MATLAB has three renderers for displaying and exporting figures: painters, OpenGL and ZBuffer. The different renderers have different [features](http://www.mathworks.com/access/helpdesk/help/techdoc/creating_plots/f3-84337.html#f3-102410), so if you aren't happy with the result from one renderer try another. By default, vector formats (i.e. PDF and EPS outputs) use the painters renderer, while other formats use the OpenGL renderer. Non-default renderers can be selected by using one of these three export_fig input options: `-painters`, `-opengl`, `-zbuffer`:  
+```Matlab
+export_fig test.png -painters
+```
+  
+**Artifacts** - sometimes the output that you get from export_fig is not what you expected. If an output file contains artifacts that aren't in the on screen figure then make sure that the renderer used for rendering the figure on screen is the same as that used for exporting. To set the renderer used to display the figure, use:  
+```Matlab
+set(figure_handle, 'Renderer', 'opengl');
+```
+After matching the two renderers, if the artifact appears in the on screen figure then you'll need to fix that before exporting. Alternatively you can try changing the renderer used by export_fig. Finally check that it isn't one of the known issues mentioned in the section below.
+
+**Smoothed/interpolated images in output PDF** - if you produce a PDF using export_fig and images in the PDF look overly smoothed or interpolated, this is because the software you are using to view the PDF is smoothing or interpolating the image data. The image is not smoothed in the PDF file itself. If the software has an option to disable this feature, you should select it. Alternatively, use another PDF viewer that doesn't exhibit this problem.  
+  
+**Locating Ghostscript/pdftops** - You may find a dialogue box appears when using export_fig, asking you to locate either [Ghostscript](http://www.ghostscript.com) or [pdftops (part of the Xpdf package)](http://www.xpdfreader.com). These are separate applications which export_fig requires to perform certain functions. If such a dialogue appears it is because export_fig can't find the application automatically. This is because you either haven't installed it, or it isn't in the normal place. Make sure you install the applications correctly first. They can be downloaded from the following places:  
+ 1. Ghostscript:     [www.ghostscript.com](http://www.ghostscript.com)
+ 2. pdftops (install the Xpdf package): [www.xpdfreader.com](http://www.xpdfreader.com)
+
+If you choose to install them in a non-default location then point export_fig
+to this location using the dialogue box.
+
+**Undefined function errors** - If you download and run export_fig and get an error similar to this:  
+```
+??? Undefined function or method 'print2array' for input arguments of type 'double'.
+```
+then you are missing one or more of the files that come in the export_fig package. Make sure that you click the "Get from GitHub" button at the top-right of the download [page](http://www.mathworks.co.uk/matlabcentral/fileexchange/23629-exportfig), then extract all the files in the zip file to the same directory. You should then have all the necessary files.
+  
+### Known issues
+There are lots of problems with MATLAB's exporting functions, especially `print`. Export_fig is simply a glorified wrapper for MATLAB's `print` function, and doesn't solve all of its bugs (yet?). Some of the problems I know about are:
+  
+**Fonts** - when using the painters renderer, MATLAB can only export a small number of fonts, details of which can be found [here](http://www.mathworks.com/help/releases/R2014a/matlab/creating_plots/choosing-a-printer-driver.html#f3-96545). Export_fig attempts to correct font names in the resulting EPS file (up to a maximum of 11 different fonts in one figure), but this is not always guaranteed to work. In particular, the text positions will be affected. It also does not work for text blocks where the 'Interpreter' property is set to 'latex'.
+
+Also, when using the painters renderer, ghostscript will sometimes throw an error such as `Error: /undefined in /findfont`. This suggests that ghostscript could not find a definition file for one of your fonts. One possible fix for this is to make sure the file `EXPORT_FIG_PATH/.ignore/gs_font_path.txt` exists and contains a list of paths to the folder(s) containing the necessary font definitions (make sure that they are TrueType definitions!), separated by a semicolon.
+
+**RGB color data not yet supported in Painter's mode** - you will see this as a warning if you try to export a figure which contains patch objects whose face or vertex colors are specified as an RGB colour, rather than an index into the colormap, using the painters renderer (the default renderer for vector output). This problem can arise if you use `pcolor`, for example. This is a problem with MATLAB's painters renderer, which also affects `print`; there is currently no fix available in export_fig (other than to export to bitmap). The suggested workaround is to avoid colouring patches using RGB. First, try to use colours in the figure's colourmap (instructions [here](http://www.mathworks.co.uk/support/solutions/en/data/1-6OTPQE/)) - change the colourmap, if necessary. If you are using `pcolor`, try using [uimagesc](http://www.mathworks.com/matlabcentral/fileexchange/11368) (on the file exchange) instead.  
+
+**Dashed contour lines appear solid** - when using the painters renderer, MATLAB cannot generate dashed lines using the `contour` function (either on screen or in exported PDF and EPS files). Details can be found [here](http://www.mathworks.com/support/solutions/en/data/1-14PPHB/?solution=1-14PPHB).  
+  
+**Text size** - when using the OpenGL or ZBuffer renderers, large text can be resized relative to the figure when exporting at non-screen-resolution (including using anti-alising at screen resolution). This is a feature of MATLAB's `print `function. In this case, try using the `-painters` option.  
+  
+**Lighting and transparency** - when using the painters renderer, transparency and lighting effects are not supported. Sorry, but this is an inherent feature of MATLAB's painters renderer. To find out more about the capabilities of each rendering method, see [here](http://www.mathworks.com/access/helpdesk/help/techdoc/creating_plots/f3-84337.html#f3-102410). You can still export transparent objects to vector format (SVG) using the excellent [plot2svg](http://www.mathworks.com/matlabcentral/fileexchange/7401) package, then convert this to PDF, for example using [Inkscape](http://inkscape.org/). However, it can't handle lighting.  
+  
+**Lines in patch objects** - when exporting patch objects to PDF using the painters renderer (default), sometimes the output can appear to have lines across the middle of rectangular patches; these lines are the colour of the background, as if there is a crack in the patch, allowing you to see through. This appears to be due to bugs in MATLAB's internal vector rendering code. These lines can often be removed from the PDF using software such as [InkScape](https://inkscape.org). Sometimes disabling anti-aliasing in the PDF-reader software can get rid of the lines ([discussion](https://github.com/altmany/export_fig/issues/44)).  
+  
+**Out of memory** - if you run into memory issues when using export_fig, some ways to get round this are:  
+ 1. Reduce the level of anti-aliasing.
+ 2. Reduce the size of the figure.
+ 3. Reduce the export resolution (dpi). 
+ 4. Change the renderer to painters or ZBuffer.  
+  
+**Errors** - the other common type of errors people get with export_fig are OpenGL errors. This isn't a fault of export_fig, but either a bug in MATLAB's `print`, or your graphics driver getting itself into a state. Always make sure your graphics driver is up-to-date. If it still doesn't work, try using the ZBuffer renderer.  
+  
+### Raising issues
+If you think you have found a genuine error or issue with export_fig **that is not listed above**, first ensure that the figure looks correct on screen when rendered using the renderer that export_fig is set to use (e.g. if exporting to PDF or EPS, does the figure look correct on screen using the painters renderer, or if exporting to bitmap, does the figure look correct on screen using the OpenGL renderer?). If it looks wrong then the problem is there, and I cannot help (other than to suggest you try exporting using a different renderer).
+
+Secondly, if exporting to bitmap, do try all the renderers (i.e. try the options `-opengl`, `-zbuffer` and `-painters` separately), to see if one of them does produce an acceptable output, and if so, use that.
+
+If this still does not help, then ensure that you are using the latest version of export_fig, which is available [here](https://github.com/altmany/export_fig/archive/master.zip).  
+ 
+If the figure looks correct on screen, but an error exists in the exported output (which cannot be solved using a different renderer) then please feel free to raise an [issue](https://github.com/altmany/export_fig/issues). Please be sure to include the .fig file, the export_fig command you use, the output you get, and a description of what you expected. I can't promise anything, but if it's easy to fix I may indeed do it. Often I will find that the error is due to a bug in MATLAB's `print` function, in which case I will suggest you submit it as a bug to TheMathWorks, and inform me of any fix they suggest. Also, if there's a feature you'd like that isn't supported please tell me what it is and I'll consider implementing it.
+
+### And finally...
+
+![](https://farm4.staticflickr.com/3956/15591911455_b9008bd77e_o_d.jpg)
+
+If you've ever wondered what's going on in the logo on the export_fig download page (reproduced here), then this explanantion is for you. The logo is designed to demonstrate as many of export_fig's features as possible: 
+ 
+Given a figure containing a translucent mesh (top right), export_fig can export to pdf (bottom centre), which allows the figure to be zoomed-in without losing quality (because it's a vector graphic), but isn't able to reproduce the translucency. Also, depending on the PDF viewer program, small gaps appear between the patches, which are seen here as thin white lines. 
+ 
+By contrast, when exporting to png (top left), translucency is preserved (see how the graphic below shows through), and the figure is anti-aliased. However, zooming-in does not reveal more detail since png is a bitmap format. Also, lines appear less sharp than in the pdf output.
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/append_pdfs.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/append_pdfs.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/append_pdfs.m	(revision 27955)
@@ -0,0 +1,124 @@
+%APPEND_PDFS Appends/concatenates multiple PDF files
+%
+% Example:
+%   append_pdfs(output, input1, input2, ...)
+%   append_pdfs(output, input_list{:})
+%   append_pdfs test.pdf temp1.pdf temp2.pdf
+%
+% This function appends multiple PDF files to an existing PDF file, or
+% concatenates them into a PDF file if the output file doesn't yet exist.
+%
+% This function requires that you have ghostscript installed on your
+% system. Ghostscript can be downloaded from: http://www.ghostscript.com
+%
+% IN:
+%    output - string of output file name (including the extension, .pdf).
+%             If it exists it is appended to; if not, it is created.
+%    input1 - string of an input file name (including the extension, .pdf).
+%             All input files are appended in order.
+%    input_list - cell array list of input file name strings. All input
+%                 files are appended in order.
+
+% Copyright: Oliver Woodford, 2011
+
+% Thanks to Reinhard Knoll for pointing out that appending multiple pdfs in
+% one go is much faster than appending them one at a time.
+
+% Thanks to Michael Teo for reporting the issue of a too long command line.
+% Issue resolved on 5/5/2011, by passing gs a command file.
+
+% Thanks to Martin Wittmann for pointing out the quality issue when
+% appending multiple bitmaps.
+% Issue resolved (to best of my ability) 1/6/2011, using the prepress
+% setting
+
+% 26/02/15: If temp dir is not writable, use the output folder for temp
+%           files when appending (Javier Paredes); sanity check of inputs
+% 24/01/18: Fixed error in case of existing output file (append mode)
+% 24/01/18: Fixed issue #213: non-ASCII characters in folder names on Windows
+% 06/12/18: Avoid an "invalid escape-char" warning upon error
+
+function append_pdfs(varargin)
+
+    if nargin < 2,  return;  end  % sanity check
+
+    % Are we appending or creating a new file
+    append = exist(varargin{1}, 'file') == 2;
+    output = [tempname '.pdf'];
+    try
+        % Ensure that the temp dir is writable (Javier Paredes 26/2/15)
+        fid = fopen(output,'w');
+        fwrite(fid,1);
+        fclose(fid);
+        delete(output);
+        isTempDirOk = true;
+    catch
+        % Temp dir is not writable, so use the output folder
+        [dummy,fname,fext] = fileparts(output); %#ok<ASGLU>
+        fpath = fileparts(varargin{1});
+        output = fullfile(fpath,[fname fext]);
+        isTempDirOk = false;
+    end
+    if ~append
+        output = varargin{1};
+        varargin = varargin(2:end);
+    end
+
+    % Create the command file
+    if isTempDirOk
+        cmdfile = [tempname '.txt'];
+    else
+        cmdfile = fullfile(fpath,[fname '.txt']);
+    end
+    prepareCmdFile(cmdfile, output, varargin{:});
+
+    % Call ghostscript
+    [status, errMsg] = ghostscript(['@"' cmdfile '"']);
+
+    % Check for ghostscript execution errors
+    if status && ~isempty(strfind(errMsg,'undefinedfile')) && ispc %#ok<STREMP>
+        % Fix issue #213: non-ASCII characters in folder names on Windows
+        for fileIdx = 2 : numel(varargin)
+            [fpath,fname,fext] = fileparts(varargin{fileIdx});
+            varargin{fileIdx} = fullfile(normalizePath(fpath),[fname fext]);
+        end
+        % Rerun ghostscript with the normalized folder names
+        prepareCmdFile(cmdfile, output, varargin{:});
+        [status, errMsg] = ghostscript(['@"' cmdfile '"']);
+    end
+
+    % Delete the command file
+    delete(cmdfile);
+
+    % Check for ghostscript execution errors
+    if status
+        errMsg = strrep(errMsg,'\','\\');  % Avoid an "invalid escape-char" warning
+        error('YMA:export_fig:append_pdf',errMsg);
+    end
+
+    % Rename the file if needed
+    if append
+        movefile(output, varargin{1}, 'f');
+    end
+end
+
+% Prepare a text file with ghostscript directives
+function prepareCmdFile(cmdfile, output, varargin)
+    fh = fopen(cmdfile, 'w');
+    fprintf(fh, '-q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile="%s" -f', output);
+    fprintf(fh, ' "%s"', varargin{:});
+    fclose(fh);
+end
+
+% Convert long/non-ASCII folder names into their short ASCII equivalents
+function pathStr = normalizePath(pathStr)
+    [fpath,fname,fext] = fileparts(pathStr);
+    if isempty(fpath) || strcmpi(fpath,pathStr), return, end
+    dirOutput = evalc(['system(''dir /X /AD "' pathStr '*"'')']);
+    shortName = strtrim(regexprep(dirOutput,{'.*> *',[fname fext '.*']},''));
+    if isempty(shortName)
+        shortName = [fname fext];
+    end
+    fpath = normalizePath(fpath);  %recursive until entire fpath is processed
+    pathStr = fullfile(fpath, shortName);
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/copyfig.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/copyfig.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/copyfig.m	(revision 27955)
@@ -0,0 +1,59 @@
+function fh = copyfig(fh)
+%COPYFIG Create a copy of a figure, without changing the figure
+%
+% Examples:
+%   fh_new = copyfig(fh_old)
+%
+% This function will create a copy of a figure, but not change the figure,
+% as copyobj sometimes does, e.g. by changing legends.
+%
+% IN:
+%    fh_old - The handle of the figure to be copied. Default: gcf.
+%
+% OUT:
+%    fh_new - The handle of the created figure.
+
+% Copyright (C) Oliver Woodford 2012, Yair Altman 2015
+
+% 26/02/15: If temp dir is not writable, use the dest folder for temp
+%           destination files (Javier Paredes)
+% 15/04/15: Suppress warnings during copyobj (Dun Kirk comment on FEX page 2013-10-02)
+% 09/09/18: Fix issue #252: Workaround for cases where copyobj() fails for any reason
+
+    % Set the default
+    if nargin == 0
+        fh = gcf;
+    end
+    % Is there a legend?
+    useCopyobj = isempty(findall(fh, 'Type', 'axes', 'Tag', 'legend'));
+    if useCopyobj
+        % Safe to copy using copyobj
+        oldWarn = warning('off'); %Suppress warnings during copyobj (Dun Kirk comment on FEX page 2013-10-02)
+        try
+            fh = copyobj(fh, 0);
+        catch
+            % Fix issue #252: Workaround for cases where copyobj() fails for any reason
+            useCopyobj = false;  % if copyobj() croaks, use file save/load below
+        end
+        warning(oldWarn);
+    end
+    if ~useCopyobj
+        % copyobj will change the figure, so save and then load it instead
+        tmp_nam = [tempname '.fig'];
+        try
+            % Ensure that the temp dir is writable (Javier Paredes 26/2/15)
+            fid = fopen(tmp_nam,'w');
+            fwrite(fid,1);
+            fclose(fid);
+            delete(tmp_nam);  % cleanup
+        catch
+            % Temp dir is not writable, so use the current folder
+            [dummy,fname,fext] = fileparts(tmp_nam); %#ok<ASGLU>
+            fpath = pwd;
+            tmp_nam = fullfile(fpath,[fname fext]);
+        end
+        hgsave(fh, tmp_nam);
+        fh = hgload(tmp_nam);
+        delete(tmp_nam);
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/crop_borders.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/crop_borders.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/crop_borders.m	(revision 27955)
@@ -0,0 +1,157 @@
+function [A, vA, vB, bb_rel] = crop_borders(A, bcol, padding, crop_amounts)
+%CROP_BORDERS Crop the borders of an image or stack of images
+%
+%   [B, vA, vB, bb_rel] = crop_borders(A, bcol, [padding])
+%
+%IN:
+%   A - HxWxCxN stack of images.
+%   bcol - Cx1 background colour vector.
+%   padding - scalar indicating how much padding to have in relation to
+%             the cropped-image-size (0<=padding<=1). Default: 0
+%   crop_amounts - 4-element vector of crop amounts: [top,right,bottom,left]
+%             where NaN/Inf indicate auto-cropping, 0 means no cropping,
+%             and any other value mean cropping in pixel amounts.
+%
+%OUT:
+%   B - JxKxCxN cropped stack of images.
+%   vA     - coordinates in A that contain the cropped image
+%   vB     - coordinates in B where the cropped version of A is placed
+%   bb_rel - relative bounding box (used for eps-cropping)
+
+%{
+% 06/03/15: Improved image cropping thanks to Oscar Hartogensis
+% 08/06/15: Fixed issue #76: case of transparent figure bgcolor
+% 21/02/16: Enabled specifying non-automated crop amounts
+% 04/04/16: Fix per Luiz Carvalho for old Matlab releases
+% 23/10/16: Fixed issue #175: there used to be a 1px minimal padding in case of crop, now removed
+%}
+
+    if nargin < 3
+        padding = 0;
+    end
+    if nargin < 4
+        crop_amounts = nan(1,4);  % =auto-cropping
+    end
+    crop_amounts(end+1:4) = NaN;  % fill missing values with NaN
+
+    [h, w, c, n] = size(A);
+    if isempty(bcol)  % case of transparent bgcolor
+        bcol = A(ceil(end/2),1,:,1);
+    end
+    if isscalar(bcol)
+        bcol = bcol(ones(c, 1));
+    end
+
+    % Crop margin from left
+    if ~isfinite(crop_amounts(4))
+        bail = false;
+        for l = 1:w
+            for a = 1:c
+                if ~all(col(A(:,l,a,:)) == bcol(a))
+                    bail = true;
+                    break;
+                end
+            end
+            if bail
+                break;
+            end
+        end
+    else
+        l = 1 + abs(crop_amounts(4));
+    end
+
+    % Crop margin from right
+    if ~isfinite(crop_amounts(2))
+        bcol = A(ceil(end/2),w,:,1);
+        bail = false;
+        for r = w:-1:l
+            for a = 1:c
+                if ~all(col(A(:,r,a,:)) == bcol(a))
+                    bail = true;
+                    break;
+                end
+            end
+            if bail
+                break;
+            end
+        end
+    else
+        r = w - abs(crop_amounts(2));
+    end
+
+    % Crop margin from top
+    if ~isfinite(crop_amounts(1))
+        bcol = A(1,ceil(end/2),:,1);
+        bail = false;
+        for t = 1:h
+            for a = 1:c
+                if ~all(col(A(t,:,a,:)) == bcol(a))
+                    bail = true;
+                    break;
+                end
+            end
+            if bail
+                break;
+            end
+        end
+    else
+        t = 1 + abs(crop_amounts(1));
+    end
+
+    % Crop margin from bottom
+    bcol = A(h,ceil(end/2),:,1);
+    if ~isfinite(crop_amounts(3))
+        bail = false;
+        for b = h:-1:t
+            for a = 1:c
+                if ~all(col(A(b,:,a,:)) == bcol(a))
+                    bail = true;
+                    break;
+                end
+            end
+            if bail
+                break;
+            end
+        end
+    else
+        b = h - abs(crop_amounts(3));
+    end
+
+    if padding == 0  % no padding
+        % Issue #175: there used to be a 1px minimal padding in case of crop, now removed
+        %{
+        if ~isequal([t b l r], [1 h 1 w]) % Check if we're actually croppping
+            padding = 1; % Leave one boundary pixel to avoid bleeding on resize
+            bcol(:) = nan;  % make the 1px padding transparent
+        end
+        %}
+    elseif abs(padding) < 1  % pad value is a relative fraction of image size
+        padding = sign(padding)*round(mean([b-t r-l])*abs(padding)); % ADJUST PADDING
+    else  % pad value is in units of 1/72" points
+        padding = round(padding);  % fix cases of non-integer pad value
+    end
+
+    if padding > 0  % extra padding
+        % Create an empty image, containing the background color, that has the
+        % cropped image size plus the padded border
+        B = repmat(bcol,[(b-t)+1+padding*2,(r-l)+1+padding*2,1,n]);  % Fix per Luiz Carvalho
+        % vA - coordinates in A that contain the cropped image
+        vA = [t b l r];
+        % vB - coordinates in B where the cropped version of A will be placed
+        vB = [padding+1, (b-t)+1+padding, padding+1, (r-l)+1+padding];
+        % Place the original image in the empty image
+        B(vB(1):vB(2), vB(3):vB(4), :, :) = A(vA(1):vA(2), vA(3):vA(4), :, :);
+        A = B;
+    else  % extra cropping
+        vA = [t-padding b+padding l-padding r+padding];
+        A = A(vA(1):vA(2), vA(3):vA(4), :, :);
+        vB = [NaN NaN NaN NaN];
+    end
+
+    % For EPS cropping, determine the relative BoundingBox - bb_rel
+    bb_rel = [l-1 h-b-1 r+1 h-t+1]./[w h w h];
+end
+
+function A = col(A)
+    A = A(:);
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/eps2pdf.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/eps2pdf.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/eps2pdf.m	(revision 27955)
@@ -0,0 +1,223 @@
+function eps2pdf(source, dest, crop, append, gray, quality, gs_options)
+%EPS2PDF  Convert an eps file to pdf format using ghostscript
+%
+% Examples:
+%   eps2pdf source dest
+%   eps2pdf(source, dest, crop)
+%   eps2pdf(source, dest, crop, append)
+%   eps2pdf(source, dest, crop, append, gray)
+%   eps2pdf(source, dest, crop, append, gray, quality)
+%   eps2pdf(source, dest, crop, append, gray, quality, gs_options)
+%
+% This function converts an eps file to pdf format. The output can be
+% optionally cropped and also converted to grayscale. If the output pdf
+% file already exists then the eps file can optionally be appended as a new
+% page on the end of the eps file. The level of bitmap compression can also
+% optionally be set.
+%
+% This function requires that you have ghostscript installed on your
+% system. Ghostscript can be downloaded from: http://www.ghostscript.com
+%
+% Inputs:
+%   source  - filename of the source eps file to convert. The filename is
+%             assumed to already have the extension ".eps".
+%   dest    - filename of the destination pdf file. The filename is assumed
+%             to already have the extension ".pdf".
+%   crop    - boolean indicating whether to crop the borders off the pdf.
+%             Default: true.
+%   append  - boolean indicating whether the eps should be appended to the
+%             end of the pdf as a new page (if the pdf exists already).
+%             Default: false.
+%   gray    - boolean indicating whether the output pdf should be grayscale
+%             or not. Default: false.
+%   quality - scalar indicating the level of image bitmap quality to
+%             output. A larger value gives a higher quality. quality > 100
+%             gives lossless output. Default: ghostscript prepress default.
+%   gs_options - optional ghostscript options (e.g.: '-dNoOutputFonts'). If
+%                multiple options are needed, enclose in call array: {'-a','-b'}
+
+% Copyright (C) Oliver Woodford 2009-2014, Yair Altman 2015-
+
+% Suggestion of appending pdf files provided by Matt C at:
+% http://www.mathworks.com/matlabcentral/fileexchange/23629
+
+% Thank you Fabio Viola for pointing out compression artifacts, leading to the quality setting.
+% Thank you Scott for pointing out the subsampling of very small images, which was fixed for lossless compression settings.
+
+% 09/12/11: Pass font path to ghostscript
+% 26/02/15: If temp dir is not writable, use the dest folder for temp destination files (Javier Paredes)
+% 28/02/15: Enable users to specify optional ghostscript options (issue #36)
+% 01/03/15: Upon GS error, retry without the -sFONTPATH= option (this might solve
+%           some /findfont errors according to James Rankin, FEX Comment 23/01/15)
+% 23/06/15: Added extra debug info in case of ghostscript error; code indentation
+% 04/10/15: Suggest a workaround for issue #41 (missing font path; thanks Mariia Fedotenkova)
+% 22/02/16: Bug fix from latest release of this file (workaround for issue #41)
+% 20/03/17: Added informational message in case of GS croak (issue #186)
+% 16/01/18: Improved appending of multiple EPS files into single PDF (issue #233; thanks @shartjen)
+% 18/10/19: Workaround for GS 9.51+ .setpdfwrite removal problem (issue #285)
+% 18/10/19: Warn when ignoring GS fontpath or quality options; clarified error messages
+
+    % Intialise the options string for ghostscript
+    options = ['-q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile="' dest '"'];
+
+    % Set crop option
+    if nargin < 3 || crop
+        options = [options ' -dEPSCrop'];
+    end
+
+    % Set the font path
+    fp = font_path();
+    if ~isempty(fp)
+        options = [options ' -sFONTPATH="' fp '"'];
+    end
+
+    % Set the grayscale option
+    if nargin > 4 && gray
+        options = [options ' -sColorConversionStrategy=Gray -dProcessColorModel=/DeviceGray'];
+    end
+
+    % Set the bitmap quality
+    qualityOptions = '';
+    if nargin > 5 && ~isempty(quality)
+        qualityOptions = ' -dAutoFilterColorImages=false -dAutoFilterGrayImages=false';
+        if quality > 100
+            qualityOptions = [qualityOptions ' -dColorImageFilter=/FlateEncode -dGrayImageFilter=/FlateEncode'];
+            qualityOptions = [qualityOptions ' -c ".setpdfwrite << /ColorImageDownsampleThreshold 10 /GrayImageDownsampleThreshold 10 >> setdistillerparams"'];
+        else
+            qualityOptions = [qualityOptions ' -dColorImageFilter=/DCTEncode -dGrayImageFilter=/DCTEncode'];
+            v = 1 + (quality < 80);
+            quality = 1 - quality / 100;
+            s = sprintf('<< /QFactor %.2f /Blend 1 /HSample [%d 1 1 %d] /VSample [%d 1 1 %d] >>', quality, v, v, v, v);
+            qualityOptions = [qualityOptions ' -c ".setpdfwrite << /ColorImageDict ' s ' /GrayImageDict ' s ' >> setdistillerparams"'];
+        end
+        options = [options qualityOptions];
+    end
+
+    % Enable users to specify optional ghostscript options (issue #36)
+    if nargin > 6 && ~isempty(gs_options)
+        if iscell(gs_options)
+            gs_options = sprintf(' %s',gs_options{:});
+        elseif ~ischar(gs_options)
+            error('gs_options input argument must be a string or cell-array of strings');
+        else
+            gs_options = [' ' gs_options];
+        end
+        options = [options gs_options];
+    end
+
+    % Check if the output file exists
+    if nargin > 3 && append && exist(dest, 'file') == 2
+        % File exists - append current figure to the end
+        tmp_nam = [tempname '.pdf'];
+        [fpath,fname,fext] = fileparts(tmp_nam);
+        try
+            % Ensure that the temp dir is writable (Javier Paredes 26/2/15)
+            fid = fopen(tmp_nam,'w');
+            fwrite(fid,1);
+            fclose(fid);
+            delete(tmp_nam);
+        catch
+            % Temp dir is not writable, so use the dest folder
+            fpath = fileparts(dest);
+            tmp_nam = fullfile(fpath,[fname fext]);
+        end
+        % Copy the existing (dest) pdf file to temporary folder
+        copyfile(dest, tmp_nam);
+        % Produce an interim pdf of the source eps, rather than adding the eps directly (issue #233)
+        ghostscript([options ' -f "' source '"']);
+        [~,fname] = fileparts(tempname);
+        tmp_nam2 = fullfile(fpath,[fname fext]); % ensure using a writable folder (not necessarily tempdir)
+        copyfile(dest, tmp_nam2);
+        % Add the existing pdf and interim pdf as inputs to ghostscript
+        %options = [options ' -f "' tmp_nam '" "' source '"'];  % append the source eps to dest pdf
+        options = [options ' -f "' tmp_nam '" "' tmp_nam2 '"']; % append the interim pdf to dest pdf
+        try
+            % Convert to pdf using ghostscript
+            [status, message] = ghostscript(options);
+        catch me
+            % Delete the intermediate files and rethrow the error
+            delete(tmp_nam);
+            delete(tmp_nam2);
+            rethrow(me);
+        end
+        % Delete the intermediate (temporary) files
+        delete(tmp_nam);
+        delete(tmp_nam2);
+    else
+        % File doesn't exist or should be over-written
+        % Add the source eps file as input to ghostscript
+        options = [options ' -f "' source '"'];
+        % Convert to pdf using ghostscript
+        [status, message] = ghostscript(options);
+    end
+
+    % Check for error
+    if status
+        % Retry without the -sFONTPATH= option (this might solve some GS
+        % /findfont errors according to James Rankin, FEX Comment 23/01/15)
+        orig_options = options;
+        if ~isempty(fp)
+            options = regexprep(options, ' -sFONTPATH=[^ ]+ ',' ');
+            status = ghostscript(options);
+            if ~status % hurray! (no error)
+                warning('export_fig:GS:fontpath','Export_fig font option is ignored - not supported by your Ghostscript version')
+                return
+            end
+        end
+
+        % Retry without quality options (may solve problems with GS 9.51+, issue #285)
+        if ~isempty(qualityOptions)
+            options = strrep(orig_options, qualityOptions, '');
+            [status, message] = ghostscript(options);
+            if ~status % hurray! (no error)
+                warning('export_fig:GS:quality','Export_fig quality option is ignored - not supported by your Ghostscript version')
+                return
+            end
+        end
+
+        % Report error
+        if isempty(message)
+            error('Unable to generate pdf. Ensure that the destination folder is writable.');
+        elseif ~isempty(strfind(message,'/typecheck in /findfont')) %#ok<STREMP>
+            % Suggest a workaround for issue #41 (missing font path)
+            font_name = strtrim(regexprep(message,'.*Operand stack:\s*(.*)\s*Execution.*','$1'));
+            fprintf(2, 'Ghostscript error: could not find the following font(s): %s\n', font_name);
+            fpath = fileparts(mfilename('fullpath'));
+            gs_fonts_file = fullfile(fpath, '.ignore', 'gs_font_path.txt');
+            fprintf(2, '  try to add the font''s folder to your %s file\n\n', gs_fonts_file);
+            error('export_fig error');
+        else
+            fprintf(2, '\nGhostscript error: perhaps %s is open by another application\n', dest);
+            if ~isempty(gs_options)
+                fprintf(2, '  or maybe your Ghostscript version does not accept the extra "%s" option(s) that you requested\n', gs_options);
+            end
+            fprintf(2, '  or maybe you have another gs executable in your system''s path\n');
+            fprintf(2, 'Ghostscript options: %s\n\n', orig_options);
+            error(message);
+        end
+    end
+end
+
+% Function to return (and create, where necessary) the font path
+function fp = font_path()
+    fp = user_string('gs_font_path');
+    if ~isempty(fp)
+        return
+    end
+    % Create the path
+    % Start with the default path
+    fp = getenv('GS_FONTPATH');
+    % Add on the typical directories for a given OS
+    if ispc
+        if ~isempty(fp)
+            fp = [fp ';'];
+        end
+        fp = [fp getenv('WINDIR') filesep 'Fonts'];
+    else
+        if ~isempty(fp)
+            fp = [fp ':'];
+        end
+        fp = [fp '/usr/share/fonts:/usr/local/share/fonts:/usr/share/fonts/X11:/usr/local/share/fonts/X11:/usr/share/fonts/truetype:/usr/local/share/fonts/truetype'];
+    end
+    user_string('gs_font_path', fp);
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/export_fig.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/export_fig.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/export_fig.m	(revision 27955)
@@ -0,0 +1,1645 @@
+function [imageData, alpha] = export_fig(varargin) %#ok<*STRCL1>
+%EXPORT_FIG  Exports figures in a publication-quality format
+%
+% Examples:
+%   imageData = export_fig
+%   [imageData, alpha] = export_fig
+%   export_fig filename
+%   export_fig filename -format1 -format2
+%   export_fig ... -nocrop
+%   export_fig ... -c[<val>,<val>,<val>,<val>]
+%   export_fig ... -transparent
+%   export_fig ... -native
+%   export_fig ... -m<val>
+%   export_fig ... -r<val>
+%   export_fig ... -a<val>
+%   export_fig ... -q<val>
+%   export_fig ... -p<val>
+%   export_fig ... -d<gs_option>
+%   export_fig ... -depsc
+%   export_fig ... -<renderer>
+%   export_fig ... -<colorspace>
+%   export_fig ... -append
+%   export_fig ... -bookmark
+%   export_fig ... -clipboard
+%   export_fig ... -update
+%   export_fig ... -nofontswap
+%   export_fig ... -font_space <char>
+%   export_fig ... -linecaps
+%   export_fig ... -noinvert
+%   export_fig ... -preserve_size
+%   export_fig ... -options <optionsStruct>
+%   export_fig(..., handle)
+%
+% This function saves a figure or single axes to one or more vector and/or
+% bitmap file formats, and/or outputs a rasterized version to the workspace,
+% with the following properties:
+%   - Figure/axes reproduced as it appears on screen
+%   - Cropped borders (optional)
+%   - Embedded fonts (vector formats)
+%   - Improved line and grid line styles
+%   - Anti-aliased graphics (bitmap formats)
+%   - Render images at native resolution (optional for bitmap formats)
+%   - Transparent background supported (pdf, eps, png, tif)
+%   - Semi-transparent patch objects supported (png, tif)
+%   - RGB, CMYK or grayscale output (CMYK only with pdf, eps, tif)
+%   - Variable image compression, including lossless (pdf, eps, jpg)
+%   - Optional rounded line-caps (pdf, eps)
+%   - Optionally append to file (pdf, tif)
+%   - Vector formats: pdf, eps, svg
+%   - Bitmap formats: png, tif, jpg, bmp, export to workspace
+%
+% This function is especially suited to exporting figures for use in
+% publications and presentations, because of the high quality and
+% portability of media produced.
+%
+% Note that the background color and figure dimensions are reproduced
+% (the latter approximately, and ignoring cropping & magnification) in the
+% output file. For transparent background (and semi-transparent patch
+% objects), use the -transparent option or set the figure 'Color' property
+% to 'none'. To make axes transparent set the axes 'Color' property to
+% 'none'. PDF, EPS, TIF & PNG are the only formats that support a transparent
+% background; only TIF & PNG formats support transparency of patch objects.
+%
+% The choice of renderer (opengl/zbuffer/painters) has a large impact on the
+% output quality. The default value (opengl for bitmaps, painters for vector
+% formats) generally gives good results, but if you aren't satisfied
+% then try another renderer.  Notes:
+%   1) For vector formats (EPS,PDF), only painters generates vector graphics
+%   2) For bitmap formats, only opengl correctly renders transparent patches
+%   3) For bitmap formats, only painters correctly scales line dash and dot
+%      lengths when magnifying or anti-aliasing
+%   4) Fonts may be substitued with Courier when using painters
+%
+% When exporting to vector format (PDF & EPS) and bitmap format using the
+% painters renderer, this function requires that ghostscript is installed
+% on your system. You can download this from:
+%   http://www.ghostscript.com
+% When exporting to EPS it additionally requires pdftops, from the Xpdf
+% suite of functions. You can download this from: http://xpdfreader.com
+%
+% SVG output uses the fig2svg (https://github.com/kupiqu/fig2svg) or plot2svg
+% (https://github.com/jschwizer99/plot2svg) utilities, or Matlab's built-in
+% SVG export if neither of these utilities are available on Matlab's path.
+% Note: cropping/padding are not supported in export_fig's SVG output.
+%
+% Inputs:
+%   filename - string containing the name (optionally including full or
+%             relative path) of the file the figure is to be saved as. If
+%             a path is not specified, the figure is saved in the current
+%             directory. If no name and no output arguments are specified,
+%             the default name, 'export_fig_out', is used. If neither a
+%             file extension nor a format are specified, a ".png" is added
+%             and the figure saved in that format.
+%   -<format> - string(s) containing the output file extension(s). Options:
+%             '-pdf', '-eps', '-svg', '-png', '-tif', '-jpg' and '-bmp'.
+%             Multiple formats can be specified, without restriction.
+%             For example: export_fig('-jpg', '-pdf', '-png', ...)
+%             Either '-tif','-tiff' can be specified, and either '-jpg','-jpeg'.
+%   -nocrop - option indicating that empty margins should not be cropped.
+%   -c[<val>,<val>,<val>,<val>] - option indicating crop amounts. Must be
+%             a 4-element vector of numeric values: [top,right,bottom,left]
+%             where NaN/Inf indicate auto-cropping, 0 means no cropping,
+%             and any other value mean cropping in pixel amounts.
+%   -transparent - option indicating that the figure background is to be made
+%             transparent (PNG,PDF,TIF,EPS formats only). Implies -noinvert.
+%   -m<val> - option where val indicates the factor to magnify the
+%             on-screen figure pixel dimensions by when generating bitmap
+%             outputs (does not affect vector formats). Default: '-m1'.
+%   -r<val> - option val indicates the resolution (in pixels per inch) to
+%             export bitmap and vector outputs at, keeping the dimensions
+%             of the on-screen figure. Default: '-r864' (for vector output
+%             only). Note that the -m option overides the -r option for
+%             bitmap outputs only.
+%   -native - option indicating that the output resolution (when outputting
+%             a bitmap format) should be such that the vertical resolution
+%             of the first suitable image found in the figure is at the
+%             native resolution of that image. To specify a particular
+%             image to use, give it the tag 'export_fig_native'. Notes:
+%             This overrides any value set with the -m and -r options. It
+%             also assumes that the image is displayed front-to-parallel
+%             with the screen. The output resolution is approximate and
+%             should not be relied upon. Anti-aliasing can have adverse
+%             effects on image quality (disable with the -a1 option).
+%   -a1, -a2, -a3, -a4 - option indicating the amount of anti-aliasing to
+%             use for bitmap outputs. '-a1' means no anti-aliasing;
+%             '-a4' is the maximum amount (default).
+%   -<renderer> - option to force a particular renderer (painters, opengl or
+%             zbuffer). Default value: opengl for bitmap formats or
+%             figures with patches and/or transparent annotations;
+%             painters for vector formats without patches/transparencies.
+%   -<colorspace> - option indicating which colorspace color figures should
+%             be saved in: RGB (default), CMYK or gray. Usage example: '-gray'.
+%             Note: CMYK is only supported in PDF, EPS and TIF formats.
+%   -q<val> - option to vary bitmap image quality (PDF, EPS, JPG formats only).
+%             A larger val, in the range 0-100, produces higher quality and
+%             lower compression. val > 100 results in lossless compression.
+%             Default: '-q95' for JPG, ghostscript prepress default for PDF,EPS.
+%             Note: lossless compression can sometimes give a smaller file size
+%             than the default lossy compression, depending on the image type.
+%   -p<val> - option to pad a border of width val to exported files, where
+%             val is either a relative size with respect to cropped image
+%             size (i.e. p=0.01 adds a 1% border). For EPS & PDF formats,
+%             val can also be integer in units of 1/72" points (abs(val)>1).
+%             val can be positive (padding) or negative (extra cropping).
+%             If used, the -nocrop flag will be ignored, i.e. the image will
+%             always be cropped and then padded. Default: 0 (i.e. no padding).
+%   -append - option indicating that if the file already exists the figure is to
+%             be appended as a new page, instead of being overwritten (default).
+%             PDF & TIF output formats only.
+%   -bookmark - option to indicate that a bookmark with the name of the
+%             figure is to be created in the output file (PDF format only).
+%   -clipboard - option to save output as an image on the system clipboard.
+%             Note: background transparency is not preserved in clipboard
+%   -d<gs_option> - option to indicate a ghostscript setting. For example,
+%             -dMaxBitmap=0 or -dNoOutputFonts (Ghostscript 9.15+).
+%   -depsc -  option to use EPS level-3 rather than the default level-2 print
+%             device. This solves some bugs with Matlab's default -depsc2 device
+%             such as discolored subplot lines on images (vector formats only).
+%   -update - option to download and install the latest version of export_fig
+%   -nofontswap - option to avoid font swapping. Font swapping is automatically
+%             done in vector formats (only): 11 standard Matlab fonts are
+%             replaced by the original figure fonts. This option prevents this.
+%   -font_space <char> - option to set a spacer character for font-names that
+%             contain spaces, used by EPS/PDF. Default: ''
+%   -linecaps - option to create rounded line-caps (vector formats only).
+%   -noinvert - option to avoid setting figure's InvertHardcopy property to
+%             'off' during output (this solves some problems of empty outputs).
+%   -preserve_size - option to preserve the figure's PaperSize property in output
+%             file (PDF/EPS formats only; default is to not preserve it).
+%   -options <optionsStruct> - format-specific parameters as defined in Matlab's
+%             documentation of the imwrite function, contained in a struct under
+%             the format name. For example to specify the JPG Comment parameter,
+%             pass a struct such as this: options.JPG.Comment='abc'. Similarly,
+%             options.PNG.BitDepth=4. Valid only for PNG,TIF,JPG output formats.
+%   handle -  The handle of the figure, axes or uipanels (can be an array of
+%             handles, but the objects must be in the same figure) which is
+%             to be saved. Default: gcf (handle of current figure).
+%
+% Outputs:
+%   imageData - MxNxC uint8 image array of the exported image.
+%   alpha     - MxN single array of alphamatte values in the range [0,1],
+%               for the case when the background is transparent.
+%
+%   Some helpful examples and tips can be found at:
+%      https://github.com/altmany/export_fig
+%
+%   See also PRINT, SAVEAS, ScreenCapture (on the Matlab File Exchange)
+
+%{
+% Copyright (C) Oliver Woodford 2008-2014, Yair Altman 2015-
+
+% The idea of using ghostscript is inspired by Peder Axensten's SAVEFIG
+% (fex id: 10889) which is itself inspired by EPS2PDF (fex id: 5782).
+% The idea for using pdftops came from the MATLAB newsgroup (id: 168171).
+% The idea of editing the EPS file to change line styles comes from Jiro
+% Doke's FIXPSLINESTYLE (fex id: 17928).
+% The idea of changing dash length with line width came from comments on
+% fex id: 5743, but the implementation is mine :)
+% The idea of anti-aliasing bitmaps came from Anders Brun's MYAA (fex id:
+% 20979).
+% The idea of appending figures in pdfs came from Matt C in comments on the
+% FEX (id: 23629)
+
+% Thanks to Roland Martin for pointing out the colour MATLAB
+% bug/feature with colorbar axes and transparent backgrounds.
+% Thanks also to Andrew Matthews for describing a bug to do with the figure
+% size changing in -nodisplay mode. I couldn't reproduce it, but included a
+% fix anyway.
+% Thanks to Tammy Threadgill for reporting a bug where an axes is not
+% isolated from gui objects.
+%}
+%{
+% 23/02/12: Ensure that axes limits don't change during printing
+% 14/03/12: Fix bug in fixing the axes limits (thanks to Tobias Lamour for reporting it).
+% 02/05/12: Incorporate patch of Petr Nechaev (many thanks), enabling bookmarking of figures in pdf files.
+% 09/05/12: Incorporate patch of Arcelia Arrieta (many thanks), to keep tick marks fixed.
+% 12/12/12: Add support for isolating uipanels. Thanks to michael for suggesting it.
+% 25/09/13: Add support for changing resolution in vector formats. Thanks to Jan Jaap Meijer for suggesting it.
+% 07/05/14: Add support for '~' at start of path. Thanks to Sally Warner for suggesting it.
+% 24/02/15: Fix Matlab R2014b bug (issue #34): plot markers are not displayed when ZLimMode='manual'
+% 25/02/15: Fix issue #4 (using HG2 on R2014a and earlier)
+% 25/02/15: Fix issue #21 (bold TeX axes labels/titles in R2014b)
+% 26/02/15: If temp dir is not writable, use the user-specified folder for temporary EPS/PDF files (Javier Paredes)
+% 27/02/15: Modified repository URL from github.com/ojwoodford to /altmany
+%           Indented main function
+%           Added top-level try-catch block to display useful workarounds
+% 28/02/15: Enable users to specify optional ghostscript options (issue #36)
+% 06/03/15: Improved image padding & cropping thanks to Oscar Hartogensis
+% 26/03/15: Fixed issue #49 (bug with transparent grayscale images); fixed out-of-memory issue
+% 26/03/15: Fixed issue #42: non-normalized annotations on HG1
+% 26/03/15: Fixed issue #46: Ghostscript crash if figure units <> pixels
+% 27/03/15: Fixed issue #39: bad export of transparent annotations/patches
+% 28/03/15: Fixed issue #50: error on some Matlab versions with the fix for issue #42
+% 29/03/15: Fixed issue #33: bugs in Matlab's print() function with -cmyk
+% 29/03/15: Improved processing of input args (accept space between param name & value, related to issue #51)
+% 30/03/15: When exporting *.fig files, then saveas *.fig if figure is open, otherwise export the specified fig file
+% 30/03/15: Fixed edge case bug introduced yesterday (commit #ae1755bd2e11dc4e99b95a7681f6e211b3fa9358)
+% 09/04/15: Consolidated header comment sections; initialize output vars only if requested (nargout>0)
+% 14/04/15: Workaround for issue #45: lines in image subplots are exported in invalid color
+% 15/04/15: Fixed edge-case in parsing input parameters; fixed help section to show the -depsc option (issue #45)
+% 21/04/15: Bug fix: Ghostscript croaks on % chars in output PDF file (reported by Sven on FEX page, 15-Jul-2014)
+% 22/04/15: Bug fix: Pdftops croaks on relative paths (reported by Tintin Milou on FEX page, 19-Jan-2015)
+% 04/05/15: Merged fix #63 (Kevin Mattheus Moerman): prevent tick-label changes during export
+% 07/05/15: Partial fix for issue #65: PDF export used painters rather than opengl renderer (thanks Nguyenr)
+% 08/05/15: Fixed issue #65: bad PDF append since commit #e9f3cdf 21/04/15 (thanks Robert Nguyen)
+% 12/05/15: Fixed issue #67: exponent labels cropped in export, since fix #63 (04/05/15)
+% 28/05/15: Fixed issue #69: set non-bold label font only if the string contains symbols (\beta etc.), followup to issue #21
+% 29/05/15: Added informative error message in case user requested SVG output (issue #72)
+% 09/06/15: Fixed issue #58: -transparent removed anti-aliasing when exporting to PNG
+% 19/06/15: Added -update option to download and install the latest version of export_fig
+% 07/07/15: Added -nofontswap option to avoid font-swapping in EPS/PDF
+% 16/07/15: Fixed problem with anti-aliasing on old Matlab releases
+% 11/09/15: Fixed issue #103: magnification must never become negative; also fixed reported error msg in parsing input params
+% 26/09/15: Alert if trying to export transparent patches/areas to non-PNG outputs (issue #108)
+% 04/10/15: Do not suggest workarounds for certain errors that have already been handled previously
+% 01/11/15: Fixed issue #112: use same renderer in print2eps as export_fig (thanks to Jesús Pestana Puerta)
+% 10/11/15: Custom GS installation webpage for MacOS. Thanks to Andy Hueni via FEX
+% 19/11/15: Fixed clipboard export in R2015b (thanks to Dan K via FEX)
+% 21/02/16: Added -c option for indicating specific crop amounts (idea by Cedric Noordam on FEX)
+% 08/05/16: Added message about possible error reason when groot.Units~=pixels (issue #149)
+% 17/05/16: Fixed case of image YData containing more than 2 elements (issue #151)
+% 08/08/16: Enabled exporting transparency to TIF, in addition to PNG/PDF (issue #168)
+% 11/12/16: Added alert in case of error creating output PDF/EPS file (issue #179)
+% 13/12/16: Minor fix to the commit for issue #179 from 2 days ago
+% 22/03/17: Fixed issue #187: only set manual ticks when no exponent is present
+% 09/04/17: Added -linecaps option (idea by Baron Finer, issue #192)
+% 15/09/17: Fixed issue #205: incorrect tick-labels when Ticks number don't match the TickLabels number
+% 15/09/17: Fixed issue #210: initialize alpha map to ones instead of zeros when -transparent is not used
+% 18/09/17: Added -font_space option to replace font-name spaces in EPS/PDF (workaround for issue #194)
+% 18/09/17: Added -noinvert option to solve some export problems with some graphic cards (workaround for issue #197)
+% 08/11/17: Fixed issue #220: axes exponent is removed in HG1 when TickMode is 'manual' (internal Matlab bug)
+% 08/11/17: Fixed issue #221: alert if the requested folder does not exist
+% 19/11/17: Workaround for issue #207: alert when trying to use transparent bgcolor with -opengl
+% 29/11/17: Workaround for issue #206: warn if exporting PDF/EPS for a figure that contains an image
+% 11/12/17: Fixed issue #230: use OpenGL renderer when exported image contains transparency (also see issue #206)
+% 30/01/18: Updated SVG message to point to https://github.com/kupiqu/plot2svg and display user-selected filename if available
+% 27/02/18: Fixed issue #236: axes exponent cropped from output if on right-hand axes
+% 29/05/18: Fixed issue #245: process "string" inputs just like 'char' inputs
+% 13/08/18: Fixed issue #249: correct black axes color to off-black to avoid extra cropping with -transparent
+% 27/08/18: Added a possible file-open reason in EPS/PDF write-error message (suggested by "craq" on FEX page)
+% 22/09/18: Xpdf website changed to xpdfreader.com
+% 23/09/18: Fixed issue #243: only set non-bold font (workaround for issue #69) in R2015b or earlier; warn if changing font
+% 23/09/18: Workaround for issue #241: don't use -r864 in EPS/PDF outputs when -native is requested (solves black lines problem)
+% 18/11/18: Issue #261: Added informative alert when trying to export a uifigure (which is not currently supported)
+% 13/12/18: Issue #261: Fixed last commit for cases of specifying axes/panel handle as input, rather than a figure handle
+% 13/01/19: Issue #72: Added basic SVG output support
+% 04/02/19: Workaround for issues #207 and #267: -transparent implies -noinvert
+% 08/03/19: Issue #269: Added ability to specify format-specific options for PNG,TIF,JPG outputs; fixed help section
+% 21/03/19: Fixed the workaround for issues #207 and #267 from 4/2/19 (-transparent now does *NOT* imply -noinvert; -transparent output should now be ok in all formats)
+% 12/06/19: Issue #277: Enabled preservation of figure's PaperSize in output PDF/EPS file
+% 06/08/19: Remove warning message about obsolete JavaFrame in R2019b
+% 30/10/19: Fixed issue #261: added support for exporting uifigures and uiaxes (thanks to idea by @MarvinILA)
+%}
+
+    if nargout
+        [imageData, alpha] = deal([]);
+    end
+    hadError = false;
+    displaySuggestedWorkarounds = true;
+
+    % Ensure the figure is rendered correctly _now_ so that properties like axes limits are up-to-date
+    drawnow;
+    pause(0.05);  % this solves timing issues with Java Swing's EDT (http://undocumentedmatlab.com/blog/solving-a-matlab-hang-problem)
+
+    % Parse the input arguments
+    fig = get(0, 'CurrentFigure');
+    [fig, options] = parse_args(nargout, fig, varargin{:});
+
+    % Ensure that we have a figure handle
+    if isequal(fig,-1)
+        return  % silent bail-out
+    elseif isempty(fig)
+        error('No figure found');
+    else
+        oldWarn = warning('off','MATLAB:HandleGraphics:ObsoletedProperty:JavaFrame');
+        warning off MATLAB:ui:javaframe:PropertyToBeRemoved
+        uifig = handle(ancestor(fig,'figure'));
+        try jf = get(uifig,'JavaFrame'); catch, jf=1; end
+        warning(oldWarn);
+        if isempty(jf)  % this is a uifigure
+            %error('Figures created using the uifigure command or App Designer are not supported by export_fig. See <a href="https://github.com/altmany/export_fig/issues/261">issue #261</a> for details.');
+            if numel(fig) > 1
+                error('export_fig:uifigure:multipleHandles', 'export_fig only supports exporting a single uifigure handle at a time; array of handles is not currently supported.')
+            elseif ~any(strcmpi(fig.Type,{'figure','axes'}))
+                error('export_fig:uifigure:notFigureOrAxes', 'export_fig only supports exporting a uifigure or uiaxes handle; other handles of a uifigure are not currently supported.')
+            end
+            % fig is either a uifigure or uiaxes handle
+            isUiaxes = strcmpi(fig.Type,'axes');
+            if isUiaxes
+                % Label the specified axes so that we can find it in the legacy figure
+                oldUserData = fig.UserData;
+                tempStr = tempname;
+                fig.UserData = tempStr;
+            end
+            try
+                % Create an invisible legacy figure at the same position/size as the uifigure
+                hNewFig = figure('Units',uifig.Units, 'Position',uifig.Position, 'MenuBar','none', 'ToolBar','none', 'Visible','off');
+                % Copy the uifigure contents onto the new invisible legacy figure
+                try
+                    hChildren = allchild(uifig); %=uifig.Children;
+                    copyobj(hChildren,hNewFig);
+                catch
+                    warning('export_fig:uifigure:controls', 'Some uifigure controls cannot be exported by export_fig and will not appear in the generated output.');
+                end
+                try fig.UserData = oldUserData; catch, end  % restore axes UserData, if modified above
+                % Replace the uihandle in the input args with the legacy handle
+                if isUiaxes  % uiaxes
+                    % Locate the corresponding axes handle in the new legacy figure
+                    hAxes = findall(hNewFig,'type','axes','UserData',tempStr);
+                    if isempty(hAxes) % should never happen, check just in case
+                        hNewHandle = hNewFig;  % export the figure instead of the axes
+                    else
+                        hNewHandle = hAxes;  % new axes handle found: use it instead of the uiaxes
+                    end
+                else  % uifigure
+                    hNewHandle = hNewFig;
+                end
+                varargin(cellfun(@(c)isequal(c,fig),varargin)) = {hNewHandle};
+                % Rerun export_fig on the legacy figure (with the replaced handle)
+                [imageData, alpha] = export_fig(varargin{:});
+                % Delete the temp legacy figure and bail out
+                try delete(hNewFig); catch, end
+                return
+            catch err
+                % Clean up the temp legacy figure and report the error
+                try delete(hNewFig); catch, end
+                rethrow(err)
+            end
+        end
+    end
+
+    % Isolate the subplot, if it is one
+    cls = all(ismember(get(fig, 'Type'), {'axes', 'uipanel'}));
+    if cls
+        % Given handles of one or more axes, so isolate them from the rest
+        fig = isolate_axes(fig);
+    else
+        % Check we have a figure
+        if ~isequal(get(fig, 'Type'), 'figure')
+            error('Handle must be that of a figure, axes or uipanel');
+        end
+        % Get the old InvertHardcopy mode
+        old_mode = get(fig, 'InvertHardcopy');
+    end
+
+    % Hack the font units where necessary (due to a font rendering bug in print?).
+    % This may not work perfectly in all cases.
+    % Also it can change the figure layout if reverted, so use a copy.
+    magnify = options.magnify * options.aa_factor;
+    if isbitmap(options) && magnify ~= 1
+        fontu = findall(fig, 'FontUnits', 'normalized');
+        if ~isempty(fontu)
+            % Some normalized font units found
+            if ~cls
+                fig = copyfig(fig);
+                set(fig, 'Visible', 'off');
+                fontu = findall(fig, 'FontUnits', 'normalized');
+                cls = true;
+            end
+            set(fontu, 'FontUnits', 'points');
+        end
+    end
+
+    try
+        % MATLAB "feature": axes limits and tick marks can change when printing
+        Hlims = findall(fig, 'Type', 'axes');
+        if ~cls
+            % Record the old axes limit and tick modes
+            Xlims = make_cell(get(Hlims, 'XLimMode'));
+            Ylims = make_cell(get(Hlims, 'YLimMode'));
+            Zlims = make_cell(get(Hlims, 'ZLimMode'));
+            Xtick = make_cell(get(Hlims, 'XTickMode'));
+            Ytick = make_cell(get(Hlims, 'YTickMode'));
+            Ztick = make_cell(get(Hlims, 'ZTickMode'));
+            Xlabel = make_cell(get(Hlims, 'XTickLabelMode')); 
+            Ylabel = make_cell(get(Hlims, 'YTickLabelMode')); 
+            Zlabel = make_cell(get(Hlims, 'ZTickLabelMode')); 
+        end
+
+        % Set all axes limit and tick modes to manual, so the limits and ticks can't change
+        % Fix Matlab R2014b bug (issue #34): plot markers are not displayed when ZLimMode='manual'
+        set(Hlims, 'XLimMode', 'manual', 'YLimMode', 'manual');
+        set_tick_mode(Hlims, 'X');
+        set_tick_mode(Hlims, 'Y');
+        if ~using_hg2(fig)
+            set(Hlims,'ZLimMode', 'manual');
+            set_tick_mode(Hlims, 'Z');
+        end
+    catch
+        % ignore - fix issue #4 (using HG2 on R2014a and earlier)
+    end
+
+    % Fix issue #21 (bold TeX axes labels/titles in R2014b when exporting to EPS/PDF)
+    try
+        if using_hg2(fig) && isvector(options)
+            % Set the FontWeight of axes labels/titles to 'normal'
+            % Fix issue #69: set non-bold font only if the string contains symbols (\beta etc.)
+            % Issue #243: only set non-bold font (workaround for issue #69) in R2015b or earlier
+            try isPreR2016a = verLessThan('matlab','8.7'); catch, isPreR2016a = true; end
+            if isPreR2016a
+                texLabels = findall(fig, 'type','text', 'FontWeight','bold');
+                symbolIdx = ~cellfun('isempty',strfind({texLabels.String},'\'));
+                if ~isempty(symbolIdx)
+                    set(texLabels(symbolIdx), 'FontWeight','normal');
+                    warning('export_fig:BoldTexLabels', 'Bold labels with Tex symbols converted into non-bold in export_fig (fix for issue #69)');
+                end
+            end
+        end
+    catch
+        % ignore
+    end
+
+    % Fix issue #42: non-normalized annotations on HG1 (internal Matlab bug)
+    annotationHandles = [];
+    try
+        if ~using_hg2(fig)
+            annotationHandles = findall(fig,'Type','hggroup','-and','-property','Units','-and','-not','Units','norm');
+            try  % suggested by Jesús Pestana Puerta (jespestana) 30/9/2015
+                originalUnits = get(annotationHandles,'Units');
+                set(annotationHandles,'Units','norm');
+            catch
+            end
+        end
+    catch
+        % should never happen, but ignore in any case - issue #50
+    end
+
+    % Fix issue #46: Ghostscript crash if figure units <> pixels
+    oldFigUnits = get(fig,'Units');
+    set(fig,'Units','pixels');
+
+    % Set to print exactly what is there
+    if options.invert_hardcopy
+        try set(fig, 'InvertHardcopy', 'off'); catch, end  % fail silently in uifigures
+    end
+
+    % Set the renderer
+    switch options.renderer
+        case 1
+            renderer = '-opengl';
+        case 2
+            renderer = '-zbuffer';
+        case 3
+            renderer = '-painters';
+        otherwise
+            renderer = '-opengl'; % Default for bitmaps
+    end
+
+    hImages = findall(fig,'type','image');
+
+    % Handle transparent patches
+    hasTransparency = ~isempty(findall(fig,'-property','FaceAlpha','-and','-not','FaceAlpha',1));
+    hasPatches      = ~isempty(findall(fig,'type','patch'));
+    if hasTransparency
+        % Alert if trying to export transparent patches/areas to non-supported outputs (issue #108)
+        % http://www.mathworks.com/matlabcentral/answers/265265-can-export_fig-or-else-draw-vector-graphics-with-transparent-surfaces
+        % TODO - use transparency when exporting to PDF by not passing via print2eps
+        msg = 'export_fig currently supports transparent patches/areas only in PNG output. ';
+        if options.pdf
+            warning('export_fig:transparency', '%s\nTo export transparent patches/areas to PDF, use the print command:\n print(gcf, ''-dpdf'', ''%s.pdf'');', msg, options.name);
+        elseif ~options.png && ~options.tif  % issue #168
+            warning('export_fig:transparency', '%s\nTo export the transparency correctly, try using the ScreenCapture utility on the Matlab File Exchange: http://bit.ly/1QFrBip', msg);
+        end
+    elseif ~isempty(hImages)
+        % Fix for issue #230: use OpenGL renderer when exported image contains transparency
+        for idx = 1 : numel(hImages)
+            cdata = get(hImages(idx),'CData');
+            if any(isnan(cdata(:)))
+                hasTransparency = true;
+                break
+            end
+        end
+    end
+
+    try
+        % Do the bitmap formats first
+        if isbitmap(options)
+            if abs(options.bb_padding) > 1
+                displaySuggestedWorkarounds = false;
+                error('For bitmap output (png,jpg,tif,bmp) the padding value (-p) must be between -1<p<1')
+            end
+            % Get the background colour
+            if options.transparent && (options.png || options.alpha)
+                % Get out an alpha channel
+                % MATLAB "feature": black colorbar axes can change to white and vice versa!
+                hCB = findall(fig, 'Type','axes', 'Tag','Colorbar');
+                if isempty(hCB)
+                    yCol = [];
+                    xCol = [];
+                else
+                    yCol = get(hCB, 'YColor');
+                    xCol = get(hCB, 'XColor');
+                    if iscell(yCol)
+                        yCol = cell2mat(yCol);
+                        xCol = cell2mat(xCol);
+                    end
+                    yCol = sum(yCol, 2);
+                    xCol = sum(xCol, 2);
+                end
+                % MATLAB "feature": apparently figure size can change when changing
+                % colour in -nodisplay mode
+                pos = get(fig, 'Position');
+                % Set the background colour to black, and set size in case it was
+                % changed internally
+                tcol = get(fig, 'Color');
+                set(fig, 'Color', 'k', 'Position', pos);
+                % Correct the colorbar axes colours
+                set(hCB(yCol==0), 'YColor', [0 0 0]);
+                set(hCB(xCol==0), 'XColor', [0 0 0]);
+                % Correct black axes color to off-black (issue #249)
+                hAxes = findall(fig, 'Type','axes');
+                hXs = fixBlackAxle(hAxes, 'XColor');
+                hYs = fixBlackAxle(hAxes, 'YColor');
+                hZs = fixBlackAxle(hAxes, 'ZColor');
+
+                % The following code might cause out-of-memory errors
+                try
+                    % Print large version to array
+                    B = print2array(fig, magnify, renderer);
+                    % Downscale the image
+                    B = downsize(single(B), options.aa_factor);
+                catch
+                    % This is more conservative in memory, but kills transparency (issue #58)
+                    B = single(print2array(fig, magnify/options.aa_factor, renderer));
+                end
+
+                % Set background to white (and set size)
+                set(fig, 'Color', 'w', 'Position', pos);
+                % Correct the colorbar axes colours
+                set(hCB(yCol==3), 'YColor', [1 1 1]);
+                set(hCB(xCol==3), 'XColor', [1 1 1]);
+                % Revert the black axes colors
+                set(hXs, 'XColor', [0,0,0]);
+                set(hYs, 'YColor', [0,0,0]);
+                set(hZs, 'ZColor', [0,0,0]);
+
+                % The following code might cause out-of-memory errors
+                try
+                    % Print large version to array
+                    A = print2array(fig, magnify, renderer);
+                    % Downscale the image
+                    A = downsize(single(A), options.aa_factor);
+                catch
+                    % This is more conservative in memory, but kills transparency (issue #58)
+                    A = single(print2array(fig, magnify/options.aa_factor, renderer));
+                end
+
+                % Set the background colour (and size) back to normal
+                set(fig, 'Color', tcol, 'Position', pos);
+                % Compute the alpha map
+                alpha = round(sum(B - A, 3)) / (255 * 3) + 1;
+                A = alpha;
+                A(A==0) = 1;
+                A = B ./ A(:,:,[1 1 1]);
+                clear B
+                % Convert to greyscale
+                if options.colourspace == 2
+                    A = rgb2grey(A);
+                end
+                A = uint8(A);
+                % Crop the background
+                if options.crop
+                    %[alpha, v] = crop_borders(alpha, 0, 1, options.crop_amounts);
+                    %A = A(v(1):v(2),v(3):v(4),:);
+                    [alpha, vA, vB] = crop_borders(alpha, 0, options.bb_padding, options.crop_amounts);
+                    if ~any(isnan(vB)) % positive padding
+                        B = repmat(uint8(zeros(1,1,size(A,3))),size(alpha));
+                        B(vB(1):vB(2), vB(3):vB(4), :) = A(vA(1):vA(2), vA(3):vA(4), :); % ADDED BY OH
+                        A = B;
+                    else  % negative padding
+                        A = A(vA(1):vA(2), vA(3):vA(4), :);
+                    end
+                end
+                if options.png
+                    % Compute the resolution
+                    res = options.magnify * get(0, 'ScreenPixelsPerInch') / 25.4e-3;
+                    % Save the png
+                    [format_options, bitDepth] = getFormatOptions(options, 'png');  %Issue #269
+                    if ~isempty(bitDepth) && bitDepth < 16 && size(A,3) == 3
+                        % BitDepth specification requires using a color-map
+                        [A, map] = rgb2ind(A, 256);
+                        imwrite(A, map, [options.name '.png'], 'Alpha',double(alpha), 'ResolutionUnit','meter', 'XResolution',res, 'YResolution',res, format_options{:});
+                    else
+                        imwrite(A, [options.name '.png'], 'Alpha',double(alpha), 'ResolutionUnit','meter', 'XResolution',res, 'YResolution',res, format_options{:});
+                    end
+                    % Clear the png bit
+                    options.png = false;
+                end
+                % Return only one channel for greyscale
+                if isbitmap(options)
+                    A = check_greyscale(A);
+                end
+                if options.alpha
+                    % Store the image
+                    imageData = A;
+                    % Clear the alpha bit
+                    options.alpha = false;
+                end
+                % Get the non-alpha image
+                if isbitmap(options)
+                    alph = alpha(:,:,ones(1, size(A, 3)));
+                    A = uint8(single(A) .* alph + 255 * (1 - alph));
+                    clear alph
+                end
+                if options.im
+                    % Store the new image
+                    imageData = A;
+                end
+            else
+                % Print large version to array
+                if options.transparent
+                    % MATLAB "feature": apparently figure size can change when changing
+                    % colour in -nodisplay mode
+                    pos = get(fig, 'Position');
+                    tcol = get(fig, 'Color');
+                    set(fig, 'Color', 'w', 'Position', pos);
+                    A = print2array(fig, magnify, renderer);
+                    set(fig, 'Color', tcol, 'Position', pos);
+                    tcol = 255;
+                else
+                    [A, tcol] = print2array(fig, magnify, renderer);
+                end
+                % Crop the background
+                if options.crop
+                    A = crop_borders(A, tcol, options.bb_padding, options.crop_amounts);
+                end
+                % Downscale the image
+                A = downsize(A, options.aa_factor);
+                if options.colourspace == 2
+                    % Convert to greyscale
+                    A = rgb2grey(A);
+                else
+                    % Return only one channel for greyscale
+                    A = check_greyscale(A);
+                end
+                % Outputs
+                if options.im
+                    imageData = A;
+                end
+                if options.alpha
+                    imageData = A;
+                    alpha = ones(size(A, 1), size(A, 2), 'single');
+                end
+            end
+            % Save the images
+            if options.png
+                res = options.magnify * get(0, 'ScreenPixelsPerInch') / 25.4e-3;
+                [format_options, bitDepth] = getFormatOptions(options, 'png');  %Issue #269
+                if ~isempty(bitDepth) && bitDepth < 16 && size(A,3) == 3
+                    % BitDepth specification requires using a color-map
+                    [A, map] = rgb2ind(A, 256);
+                    imwrite(A, map, [options.name '.png'], 'ResolutionUnit','meter', 'XResolution',res, 'YResolution',res, format_options{:});
+                else
+                    imwrite(A, [options.name '.png'], 'ResolutionUnit','meter', 'XResolution',res, 'YResolution',res, format_options{:});
+                end
+            end
+            if options.bmp
+                imwrite(A, [options.name '.bmp']);
+            end
+            % Save jpeg with given quality
+            if options.jpg
+                quality = options.quality;
+                if isempty(quality)
+                    quality = 95;
+                end
+                format_options = getFormatOptions(options, 'jpg');  %Issue #269
+                if quality > 100
+                    imwrite(A, [options.name '.jpg'], 'Mode','lossless', format_options{:});
+                else
+                    imwrite(A, [options.name '.jpg'], 'Quality',quality, format_options{:});
+                end
+            end
+            % Save tif images in cmyk if wanted (and possible)
+            if options.tif
+                if options.colourspace == 1 && size(A, 3) == 3
+                    A = double(255 - A);
+                    K = min(A, [], 3);
+                    K_ = 255 ./ max(255 - K, 1);
+                    C = (A(:,:,1) - K) .* K_;
+                    M = (A(:,:,2) - K) .* K_;
+                    Y = (A(:,:,3) - K) .* K_;
+                    A = uint8(cat(3, C, M, Y, K));
+                    clear C M Y K K_
+                end
+                append_mode = {'overwrite', 'append'};
+                format_options = getFormatOptions(options, 'tif');  %Issue #269
+                imwrite(A, [options.name '.tif'], 'Resolution',options.magnify*get(0,'ScreenPixelsPerInch'), 'WriteMode',append_mode{options.append+1}, format_options{:});
+            end
+        end
+
+        % Now do the vector formats
+        if isvector(options)
+            % Set the default renderer to painters
+            if ~options.renderer
+                if hasTransparency || hasPatches
+                    % This is *MUCH* slower, but more accurate for patches and transparent annotations (issue #39)
+                    renderer = '-opengl';
+                else
+                    renderer = '-painters';
+                end
+            end
+            options.rendererStr = renderer;  % fix for issue #112
+            % Generate some filenames
+            tmp_nam = [tempname '.eps'];
+            try
+                % Ensure that the temp dir is writable (Javier Paredes 30/1/15)
+                fid = fopen(tmp_nam,'w');
+                fwrite(fid,1);
+                fclose(fid);
+                delete(tmp_nam);
+                isTempDirOk = true;
+            catch
+                % Temp dir is not writable, so use the user-specified folder
+                [dummy,fname,fext] = fileparts(tmp_nam); %#ok<ASGLU>
+                fpath = fileparts(options.name);
+                tmp_nam = fullfile(fpath,[fname fext]);
+                isTempDirOk = false;
+            end
+            if isTempDirOk
+                pdf_nam_tmp = [tempname '.pdf'];
+            else
+                pdf_nam_tmp = fullfile(fpath,[fname '.pdf']);
+            end
+            if options.pdf
+                pdf_nam = [options.name '.pdf'];
+                try copyfile(pdf_nam, pdf_nam_tmp, 'f'); catch, end  % fix for issue #65
+            else
+                pdf_nam = pdf_nam_tmp;
+            end
+            % Generate the options for print
+            printArgs = {renderer};
+            if ~isempty(options.resolution)  % issue #241
+                printArgs{end+1} = sprintf('-r%d', options.resolution);
+            end
+            if options.colourspace == 1  % CMYK
+                % Issue #33: due to internal bugs in Matlab's print() function, we can't use its -cmyk option
+                %printArgs{end+1} = '-cmyk';
+            end
+            if ~options.crop
+                % Issue #56: due to internal bugs in Matlab's print() function, we can't use its internal cropping mechanism,
+                % therefore we always use '-loose' (in print2eps.m) and do our own cropping (in crop_borders)
+                %printArgs{end+1} = '-loose';
+            end
+            if any(strcmpi(varargin,'-depsc'))
+                % Issue #45: lines in image subplots are exported in invalid color.
+                % The workaround is to use the -depsc parameter instead of the default -depsc2
+                printArgs{end+1} = '-depsc';
+            end
+            try
+                % Remove background if requested (issue #207)
+                originalBgColor = get(fig, 'Color');
+                [hXs, hYs, hZs] = deal([]);
+                if options.transparent %&& ~isequal(get(fig, 'Color'), 'none')
+                    if options.renderer == 1  % OpenGL
+                        warning('export_fig:openglTransparentBG', '-opengl sometimes fails to produce transparent backgrounds; in such a case, try to use -painters instead');
+                    end
+
+                    % Fix for issue #207, #267 (corrected)
+                    set(fig,'Color','none');
+
+                    % Correct black axes color to off-black (issue #249)
+                    hAxes = findall(fig, 'Type','axes');
+                    hXs = fixBlackAxle(hAxes, 'XColor');
+                    hYs = fixBlackAxle(hAxes, 'YColor');
+                    hZs = fixBlackAxle(hAxes, 'ZColor');
+                end
+                % Generate an eps
+                print2eps(tmp_nam, fig, options, printArgs{:});
+                % {
+                % Remove the background, if desired
+                if options.transparent %&& ~isequal(get(fig, 'Color'), 'none')
+                    eps_remove_background(tmp_nam, 1 + using_hg2(fig));
+
+                    % Revert the black axes colors
+                    set(hXs, 'XColor', [0,0,0]);
+                    set(hYs, 'YColor', [0,0,0]);
+                    set(hZs, 'ZColor', [0,0,0]);
+                end
+                %}
+                % Restore the figure's previous background color (if modified)
+                try set(fig,'Color',originalBgColor); drawnow; catch, end
+                % Fix colorspace to CMYK, if requested (workaround for issue #33)
+                if options.colourspace == 1  % CMYK
+                    % Issue #33: due to internal bugs in Matlab's print() function, we can't use its -cmyk option
+                    change_rgb_to_cmyk(tmp_nam);
+                end
+                % Add a bookmark to the PDF if desired
+                if options.bookmark
+                    fig_nam = get(fig, 'Name');
+                    if isempty(fig_nam)
+                        warning('export_fig:EmptyBookmark', 'Bookmark requested for figure with no name. Bookmark will be empty.');
+                    end
+                    add_bookmark(tmp_nam, fig_nam);
+                end
+                % Generate a pdf
+                eps2pdf(tmp_nam, pdf_nam_tmp, 1, options.append, options.colourspace==2, options.quality, options.gs_options);
+                % Ghostscript croaks on % chars in the output PDF file, so use tempname and then rename the file
+                try
+                    % Rename the file (except if it is already the same)
+                    % Abbie K's comment on the commit for issue #179 (#commitcomment-20173476)
+                    if ~isequal(pdf_nam_tmp, pdf_nam)
+                        movefile(pdf_nam_tmp, pdf_nam, 'f');
+                    end
+                catch
+                    % Alert in case of error creating output PDF/EPS file (issue #179)
+                    if exist(pdf_nam_tmp, 'file')
+                        errMsg = ['Could not create ' pdf_nam ' - perhaps the folder does not exist, or you do not have write permissions, or the file is open in another application'];
+                        error(errMsg);
+                    else
+                        error('Could not generate the intermediary EPS file.');
+                    end
+                end
+            catch ex
+                % Restore the figure's previous background color (in case it was not already restored)
+                try set(fig,'Color',originalBgColor); drawnow; catch, end
+                % Delete the eps
+                delete(tmp_nam);
+                % Rethrow the EPS/PDF-generation error
+                rethrow(ex);
+            end
+            % Delete the eps
+            delete(tmp_nam);
+            if options.eps || options.linecaps
+                try
+                    % Generate an eps from the pdf
+                    % since pdftops can't handle relative paths (e.g., '..\'), use a temp file
+                    eps_nam_tmp = strrep(pdf_nam_tmp,'.pdf','.eps');
+                    pdf2eps(pdf_nam, eps_nam_tmp);
+
+                    % Issue #192: enable rounded line-caps
+                    if options.linecaps
+                        fstrm = read_write_entire_textfile(eps_nam_tmp);
+                        fstrm = regexprep(fstrm, '[02] J', '1 J');
+                        read_write_entire_textfile(eps_nam_tmp, fstrm);
+                        if options.pdf
+                            eps2pdf(eps_nam_tmp, pdf_nam, 1, options.append, options.colourspace==2, options.quality, options.gs_options);
+                        end
+                    end
+
+                    if options.eps
+                        movefile(eps_nam_tmp, [options.name '.eps'], 'f');
+                    else  % if options.pdf
+                        try delete(eps_nam_tmp); catch, end
+                    end
+                catch ex
+                    if ~options.pdf
+                        % Delete the pdf
+                        delete(pdf_nam);
+                    end
+                    try delete(eps_nam_tmp); catch, end
+                    rethrow(ex);
+                end
+                if ~options.pdf
+                    % Delete the pdf
+                    delete(pdf_nam);
+                end
+            end
+            % Issue #206: warn if the figure contains an image
+            if ~isempty(hImages) && strcmpi(renderer,'-opengl')  % see addendum to issue #206
+                warnMsg = ['exporting images to PDF/EPS may result in blurry images on some viewers. ' ...
+                           'If so, try to change viewer, or increase the image''s CData resolution, or use -opengl renderer, or export via the print function. ' ...
+                           'See <a href="matlab:web(''https://github.com/altmany/export_fig/issues/206'',''-browser'');">issue #206</a> for details.'];
+                warning('export_fig:pdf_eps:blurry_image', warnMsg);
+            end
+        end
+
+        % SVG format
+        if options.svg
+            oldUnits = get(fig,'Units');
+            filename = [options.name '.svg'];
+            % Adapted from Dan Joshea's https://github.com/djoshea/matlab-save-figure :
+            try %if verLessThan('matlab', '8.4')
+                % Try using the fig2svg/plot2svg utilities
+                try
+                    fig2svg(filename, fig);  %https://github.com/kupiqu/fig2svg
+                catch
+                    plot2svg(filename, fig); %https://github.com/jschwizer99/plot2svg
+                    warning('export_fig:SVG:plot2svg', 'export_fig used the plot2svg utility for SVG output. Better results may be gotten via the fig2svg utility (https://github.com/kupiqu/fig2svg).');
+                end
+            catch %else  % (neither fig2svg nor plot2svg are available)
+                % Try Matlab's built-in svg engine (from Batik Graphics2D for java)
+                try
+                    set(fig,'Units','pixels');   % All data in the svg-file is saved in pixels
+                    printArgs = {renderer};
+                    if ~isempty(options.resolution)
+                        printArgs{end+1} = sprintf('-r%d', options.resolution);
+                    end
+                    print(fig, '-dsvg', printArgs{:}, filename);
+                    warning('export_fig:SVG:print', 'export_fig used Matlab''s built-in SVG output engine. Better results may be gotten via the fig2svg utility (https://github.com/kupiqu/fig2svg).');
+                catch err  % built-in print() failed - maybe an old Matlab release (no -dsvg)
+                    set(fig,'Units',oldUnits);
+                    filename = strrep(filename,'export_fig_out','filename');
+                    msg = ['SVG output is not supported for your figure: ' err.message '\n' ...
+                        'Try one of the following alternatives:\n' ...
+                        '  1. saveas(gcf,''' filename ''')\n' ...
+                        '  2. fig2svg utility: https://github.com/kupiqu/fig2svg\n' ...  % Note: replaced defunct https://github.com/jschwizer99/plot2svg with up-to-date fork on https://github.com/kupiqu/fig2svg
+                        '  3. export_fig to EPS/PDF, then convert to SVG using non-Matlab tools\n'];
+                    error(sprintf(msg)); %#ok<SPERR>
+                end
+            end
+            % SVG output was successful if we reached this point
+            % Restore original figure units
+            set(fig,'Units',oldUnits);
+            % Add warning about unsupported export_fig options with SVG output
+            if any(~isnan(options.crop_amounts)) || any(options.bb_padding)
+                warning('export_fig:SVG:options', 'export_fig''s SVG output does not [currently] support cropping/padding.');
+            end
+        end
+
+        % Revert the figure or close it (if requested)
+        if cls || options.closeFig
+            % Close the created figure
+            close(fig);
+        else
+            % Reset the hardcopy mode
+            try set(fig, 'InvertHardcopy', old_mode); catch, end  % fail silently in uifigures
+            % Reset the axes limit and tick modes
+            for a = 1:numel(Hlims)
+                try
+                    set(Hlims(a), 'XLimMode', Xlims{a}, 'YLimMode', Ylims{a}, 'ZLimMode', Zlims{a},... 
+                                  'XTickMode', Xtick{a}, 'YTickMode', Ytick{a}, 'ZTickMode', Ztick{a},...
+                                  'XTickLabelMode', Xlabel{a}, 'YTickLabelMode', Ylabel{a}, 'ZTickLabelMode', Zlabel{a}); 
+                catch
+                    % ignore - fix issue #4 (using HG2 on R2014a and earlier)
+                end
+            end
+            % Revert the tex-labels font weights
+            try set(texLabels, 'FontWeight','bold'); catch, end
+            % Revert annotation units
+            for handleIdx = 1 : numel(annotationHandles)
+                try
+                    oldUnits = originalUnits{handleIdx};
+                catch
+                    oldUnits = originalUnits;
+                end
+                try set(annotationHandles(handleIdx),'Units',oldUnits); catch, end
+            end
+            % Revert figure units
+            set(fig,'Units',oldFigUnits);
+        end
+
+        % Output to clipboard (if requested)
+        if options.clipboard
+            % Delete the output file if unchanged from the default name ('export_fig_out.png')
+            if strcmpi(options.name,'export_fig_out')
+                try
+                    fileInfo = dir('export_fig_out.png');
+                    if ~isempty(fileInfo)
+                        timediff = now - fileInfo.datenum;
+                        ONE_SEC = 1/24/60/60;
+                        if timediff < ONE_SEC
+                            delete('export_fig_out.png');
+                        end
+                    end
+                catch
+                    % never mind...
+                end
+            end
+
+            % Save the image in the system clipboard
+            % credit: Jiro Doke's IMCLIPBOARD: http://www.mathworks.com/matlabcentral/fileexchange/28708-imclipboard
+            try
+                error(javachk('awt', 'export_fig -clipboard output'));
+            catch
+                warning('export_fig:clipboardJava', 'export_fig -clipboard output failed: requires Java to work');
+                return;
+            end
+            try
+                % Import necessary Java classes
+                import java.awt.Toolkit
+                import java.awt.image.BufferedImage
+                import java.awt.datatransfer.DataFlavor
+
+                % Get System Clipboard object (java.awt.Toolkit)
+                cb = Toolkit.getDefaultToolkit.getSystemClipboard();
+
+                % Add java class (ImageSelection) to the path
+                if ~exist('ImageSelection', 'class')
+                    javaaddpath(fileparts(which(mfilename)), '-end');
+                end
+
+                % Get image size
+                ht = size(imageData, 1);
+                wd = size(imageData, 2);
+
+                % Convert to Blue-Green-Red format
+                try
+                    imageData2 = imageData(:, :, [3 2 1]);
+                catch
+                    % Probably gray-scaled image (2D, without the 3rd [RGB] dimension)
+                    imageData2 = imageData(:, :, [1 1 1]);
+                end
+
+                % Convert to 3xWxH format
+                imageData2 = permute(imageData2, [3, 2, 1]);
+
+                % Append Alpha data (unused - transparency is not supported in clipboard copy)
+                alphaData2 = uint8(permute(255*alpha,[3,2,1])); %=255*ones(1,wd,ht,'uint8')
+                imageData2 = cat(1, imageData2, alphaData2);
+
+                % Create image buffer
+                imBuffer = BufferedImage(wd, ht, BufferedImage.TYPE_INT_RGB);
+                imBuffer.setRGB(0, 0, wd, ht, typecast(imageData2(:), 'int32'), 0, wd);
+
+                % Create ImageSelection object from the image buffer
+                imSelection = ImageSelection(imBuffer);
+
+                % Set clipboard content to the image
+                cb.setContents(imSelection, []);
+            catch
+                warning('export_fig:clipboardFailed', 'export_fig -clipboard output failed: %s', lasterr); %#ok<LERR>
+            end
+        end
+
+        % Don't output the data to console unless requested
+        if ~nargout
+            clear imageData alpha
+        end
+    catch err
+        % Display possible workarounds before the error message
+        if displaySuggestedWorkarounds && ~strcmpi(err.message,'export_fig error')
+            if ~hadError,  fprintf(2, 'export_fig error. ');  end
+            fprintf(2, 'Please ensure:\n');
+            fprintf(2, '  that you are using the <a href="https://github.com/altmany/export_fig/archive/master.zip">latest version</a> of export_fig\n');
+            if isvector(options)
+                if ismac
+                    fprintf(2, '  and that you have <a href="http://pages.uoregon.edu/koch">Ghostscript</a> installed\n');
+                else
+                    fprintf(2, '  and that you have <a href="http://www.ghostscript.com">Ghostscript</a> installed\n');
+                end
+            end
+            try
+                if options.eps
+                    fprintf(2, '  and that you have <a href="http://xpdfreader.com/download.html">pdftops</a> installed\n');
+                end
+            catch
+                % ignore - probably an error in parse_args
+            end
+            fprintf(2, '  and that you do not have <a href="matlab:which export_fig -all">multiple versions</a> of export_fig installed by mistake\n');
+            fprintf(2, '  and that you did not made a mistake in the <a href="matlab:help export_fig">expected input arguments</a>\n');
+            try
+                % Alert per issue #149
+                if ~strncmpi(get(0,'Units'),'pixel',5)
+                    fprintf(2, '  or try to set groot''s Units property back to its default value of ''pixels'' (<a href="matlab:web(''https://github.com/altmany/export_fig/issues/149'',''-browser'');">details</a>)\n');
+                end
+            catch
+                % ignore - maybe an old MAtlab release
+            end
+            fprintf(2, '\nIf the problem persists, then please <a href="https://github.com/altmany/export_fig/issues">report a new issue</a>.\n\n');
+        end
+        rethrow(err)
+    end
+end
+
+function options = default_options()
+    % Default options used by export_fig
+    options = struct(...
+        'name',            'export_fig_out', ...
+        'crop',            true, ...
+        'crop_amounts',    nan(1,4), ...  % auto-crop all 4 image sides
+        'transparent',     false, ...
+        'renderer',        0, ...         % 0: default, 1: OpenGL, 2: ZBuffer, 3: Painters
+        'pdf',             false, ...
+        'eps',             false, ...
+        'svg',             false, ...
+        'png',             false, ...
+        'tif',             false, ...
+        'jpg',             false, ...
+        'bmp',             false, ...
+        'clipboard',       false, ...
+        'colourspace',     0, ...         % 0: RGB/gray, 1: CMYK, 2: gray
+        'append',          false, ...
+        'im',              false, ...
+        'alpha',           false, ...
+        'aa_factor',       0, ...
+        'bb_padding',      0, ...
+        'magnify',         [], ...
+        'resolution',      [], ...
+        'bookmark',        false, ...
+        'closeFig',        false, ...
+        'quality',         [], ...
+        'update',          false, ...
+        'fontswap',        true, ...
+        'font_space',      '', ...
+        'linecaps',        false, ...
+        'invert_hardcopy', true, ...
+        'format_options',  struct, ...
+        'preserve_size',   false, ...
+        'gs_options',      {{}});
+end
+
+function [fig, options] = parse_args(nout, fig, varargin)
+    % Parse the input arguments
+
+    % Convert strings => chars
+    varargin = cellfun(@str2char,varargin,'un',false);
+
+    % Set the defaults
+    native = false; % Set resolution to native of an image
+    options = default_options();
+    options.im =    (nout == 1);  % user requested imageData output
+    options.alpha = (nout == 2);  % user requested alpha output
+
+    % Go through the other arguments
+    skipNext = false;
+    for a = 1:nargin-2
+        if skipNext
+            skipNext = false;
+            continue;
+        end
+        if all(ishandle(varargin{a}))
+            fig = varargin{a};
+        elseif ischar(varargin{a}) && ~isempty(varargin{a})
+            if varargin{a}(1) == '-'
+                switch lower(varargin{a}(2:end))
+                    case 'nocrop'
+                        options.crop = false;
+                        options.crop_amounts = [0,0,0,0];
+                    case {'trans', 'transparent'}
+                        options.transparent = true;
+                    case 'opengl'
+                        options.renderer = 1;
+                    case 'zbuffer'
+                        options.renderer = 2;
+                    case 'painters'
+                        options.renderer = 3;
+                    case 'pdf'
+                        options.pdf = true;
+                    case 'eps'
+                        options.eps = true;
+                    case 'svg'
+                        options.svg = true;
+                    case 'png'
+                        options.png = true;
+                    case {'tif', 'tiff'}
+                        options.tif = true;
+                    case {'jpg', 'jpeg'}
+                        options.jpg = true;
+                    case 'bmp'
+                        options.bmp = true;
+                    case 'rgb'
+                        options.colourspace = 0;
+                    case 'cmyk'
+                        options.colourspace = 1;
+                    case {'gray', 'grey'}
+                        options.colourspace = 2;
+                    case {'a1', 'a2', 'a3', 'a4'}
+                        options.aa_factor = str2double(varargin{a}(3));
+                    case 'append'
+                        options.append = true;
+                    case 'bookmark'
+                        options.bookmark = true;
+                    case 'native'
+                        native = true;
+                    case 'clipboard'
+                        options.clipboard = true;
+                        options.im = true;
+                        options.alpha = true;
+                    case 'update'
+                        % Download the latest version of export_fig into the export_fig folder
+                        try
+                            zipFileName = 'https://github.com/altmany/export_fig/archive/master.zip';
+                            folderName = fileparts(which(mfilename('fullpath')));
+                            targetFileName = fullfile(folderName, datestr(now,'yyyy-mm-dd.zip'));
+                            urlwrite(zipFileName,targetFileName); %#ok<URLWR>
+                        catch
+                            error('Could not download %s into %s\n',zipFileName,targetFileName);
+                        end
+
+                        % Unzip the downloaded zip file in the export_fig folder
+                        try
+                            unzip(targetFileName,folderName);
+                        catch
+                            error('Could not unzip %s\n',targetFileName);
+                        end
+                    case 'nofontswap'
+                        options.fontswap = false;
+                    case 'font_space'
+                        options.font_space = varargin{a+1};
+                        skipNext = true;
+                    case 'linecaps'
+                        options.linecaps = true;
+                    case 'noinvert'
+                        options.invert_hardcopy = false;
+                    case 'preserve_size'
+                        options.preserve_size = true;
+                    case 'options'
+                        % Issue #269: format-specific options
+                        inputOptions = varargin{a+1};
+                        %options.format_options  = inputOptions;
+                        if isempty(inputOptions), continue, end
+                        formats = fieldnames(inputOptions(1));
+                        for idx = 1 : numel(formats)
+                            optionsStruct = inputOptions.(formats{idx});
+                            %optionsCells = [fieldnames(optionsStruct) struct2cell(optionsStruct)]';
+                            formatName = regexprep(lower(formats{idx}),{'tiff','jpeg'},{'tif','jpg'});
+                            options.format_options.(formatName) = optionsStruct; %=optionsCells(:)';
+                        end
+                        skipNext = true;
+                    otherwise
+                        try
+                            wasError = false;
+                            if strcmpi(varargin{a}(1:2),'-d')
+                                varargin{a}(2) = 'd';  % ensure lowercase 'd'
+                                options.gs_options{end+1} = varargin{a};
+                            elseif strcmpi(varargin{a}(1:2),'-c')
+                                if numel(varargin{a})==2
+                                    skipNext = true;
+                                    vals = str2num(varargin{a+1}); %#ok<ST2NM>
+                                else
+                                    vals = str2num(varargin{a}(3:end)); %#ok<ST2NM>
+                                end
+                                if numel(vals)~=4
+                                    wasError = true;
+                                    error('option -c cannot be parsed: must be a 4-element numeric vector');
+                                end
+                                options.crop_amounts = vals;
+                                options.crop = true;
+                            else  % scalar parameter value
+                                val = str2double(regexp(varargin{a}, '(?<=-(m|M|r|R|q|Q|p|P))-?\d*.?\d+', 'match'));
+                                if isempty(val) || isnan(val)
+                                    % Issue #51: improved processing of input args (accept space between param name & value)
+                                    val = str2double(varargin{a+1});
+                                    if isscalar(val) && ~isnan(val)
+                                        skipNext = true;
+                                    end
+                                end
+                                if ~isscalar(val) || isnan(val)
+                                    wasError = true;
+                                    error('option %s is not recognised or cannot be parsed', varargin{a});
+                                end
+                                switch lower(varargin{a}(2))
+                                    case 'm'
+                                        % Magnification may never be negative
+                                        if val <= 0
+                                            wasError = true;
+                                            error('Bad magnification value: %g (must be positive)', val);
+                                        end
+                                        options.magnify = val;
+                                    case 'r'
+                                        options.resolution = val;
+                                    case 'q'
+                                        options.quality = max(val, 0);
+                                    case 'p'
+                                        options.bb_padding = val;
+                                end
+                            end
+                        catch err
+                            % We might have reached here by raising an intentional error
+                            if wasError  % intentional raise
+                                rethrow(err)
+                            else  % unintentional
+                                error(['Unrecognized export_fig input option: ''' varargin{a} '''']);
+                            end
+                        end
+                end
+            else
+                [p, options.name, ext] = fileparts(varargin{a});
+                if ~isempty(p)
+                    % Issue #221: alert if the requested folder does not exist
+                    if ~exist(p,'dir'),  error(['Folder ' p ' does not exist!']);  end
+                    options.name = [p filesep options.name];
+                end
+                switch lower(ext)
+                    case {'.tif', '.tiff'}
+                        options.tif = true;
+                    case {'.jpg', '.jpeg'}
+                        options.jpg = true;
+                    case '.png'
+                        options.png = true;
+                    case '.bmp'
+                        options.bmp = true;
+                    case '.eps'
+                        options.eps = true;
+                    case '.pdf'
+                        options.pdf = true;
+                    case '.fig'
+                        % If no open figure, then load the specified .fig file and continue
+                        if isempty(fig)
+                            fig = openfig(varargin{a},'invisible');
+                            varargin{a} = fig;
+                            options.closeFig = true;
+                        else
+                            % save the current figure as the specified .fig file and exit
+                            saveas(fig(1),varargin{a});
+                            fig = -1;
+                            return
+                        end
+                    case '.svg'
+                        options.svg = true;
+                    otherwise
+                        options.name = varargin{a};
+                end
+            end
+        end
+    end
+
+    % Quick bail-out if no figure found
+    if isempty(fig),  return;  end
+
+    % Do border padding with repsect to a cropped image
+    if options.bb_padding
+        options.crop = true;
+    end
+
+    % Set default anti-aliasing now we know the renderer
+    if options.aa_factor == 0
+        try isAA = strcmp(get(ancestor(fig, 'figure'), 'GraphicsSmoothing'), 'on'); catch, isAA = false; end
+        options.aa_factor = 1 + 2 * (~(using_hg2(fig) && isAA) | (options.renderer == 3));
+    end
+
+    % Convert user dir '~' to full path
+    if numel(options.name) > 2 && options.name(1) == '~' && (options.name(2) == '/' || options.name(2) == '\')
+        options.name = fullfile(char(java.lang.System.getProperty('user.home')), options.name(2:end));
+    end
+
+    % Compute the magnification and resolution
+    if isempty(options.magnify)
+        if isempty(options.resolution)
+            options.magnify = 1;
+            options.resolution = 864;
+        else
+            options.magnify = options.resolution ./ get(0, 'ScreenPixelsPerInch');
+        end
+    elseif isempty(options.resolution)
+        options.resolution = 864;
+    end
+
+    % Set the default format
+    if ~isvector(options) && ~isbitmap(options)
+        options.png = true;
+    end
+
+    % Check whether transparent background is wanted (old way)
+    if isequal(get(ancestor(fig(1), 'figure'), 'Color'), 'none')
+        options.transparent = true;
+    end
+
+    % If requested, set the resolution to the native vertical resolution of the
+    % first suitable image found
+    if native
+        if isbitmap(options)
+            % Find a suitable image
+            list = findall(fig, 'Type','image', 'Tag','export_fig_native');
+            if isempty(list)
+                list = findall(fig, 'Type','image', 'Visible','on');
+            end
+            for hIm = list(:)'
+                % Check height is >= 2
+                height = size(get(hIm, 'CData'), 1);
+                if height < 2
+                    continue
+                end
+                % Account for the image filling only part of the axes, or vice versa
+                yl = get(hIm, 'YData');
+                if isscalar(yl)
+                    yl = [yl(1)-0.5 yl(1)+height+0.5];
+                else
+                    yl = [min(yl), max(yl)];  % fix issue #151 (case of yl containing more than 2 elements)
+                    if ~diff(yl)
+                        continue
+                    end
+                    yl = yl + [-0.5 0.5] * (diff(yl) / (height - 1));
+                end
+                hAx = get(hIm, 'Parent');
+                yl2 = get(hAx, 'YLim');
+                % Find the pixel height of the axes
+                oldUnits = get(hAx, 'Units');
+                set(hAx, 'Units', 'pixels');
+                pos = get(hAx, 'Position');
+                set(hAx, 'Units', oldUnits);
+                if ~pos(4)
+                    continue
+                end
+                % Found a suitable image
+                % Account for stretch-to-fill being disabled
+                pbar = get(hAx, 'PlotBoxAspectRatio');
+                pos = min(pos(4), pbar(2)*pos(3)/pbar(1));
+                % Set the magnification to give native resolution
+                options.magnify = abs((height * diff(yl2)) / (pos * diff(yl)));  % magnification must never be negative: issue #103
+                break
+            end
+        elseif options.resolution == 864  % don't use -r864 in vector mode if user asked for -native
+            options.resolution = []; % issue #241 (internal Matlab bug produces black lines with -r864)
+        end
+    end
+end
+
+% Convert a possible string => char (issue #245)
+function value = str2char(value)
+    if isa(value,'string')
+        value = char(value);
+    end
+end
+
+function A = downsize(A, factor)
+    % Downsample an image
+    if factor == 1
+        % Nothing to do
+        return
+    end
+    try
+        % Faster, but requires image processing toolbox
+        A = imresize(A, 1/factor, 'bilinear');
+    catch
+        % No image processing toolbox - resize manually
+        % Lowpass filter - use Gaussian as is separable, so faster
+        % Compute the 1d Gaussian filter
+        filt = (-factor-1:factor+1) / (factor * 0.6);
+        filt = exp(-filt .* filt);
+        % Normalize the filter
+        filt = single(filt / sum(filt));
+        % Filter the image
+        padding = floor(numel(filt) / 2);
+        for a = 1:size(A, 3)
+            A(:,:,a) = conv2(filt, filt', single(A([ones(1, padding) 1:end repmat(end, 1, padding)],[ones(1, padding) 1:end repmat(end, 1, padding)],a)), 'valid');
+        end
+        % Subsample
+        A = A(1+floor(mod(end-1, factor)/2):factor:end,1+floor(mod(end-1, factor)/2):factor:end,:);
+    end
+end
+
+function A = rgb2grey(A)
+    A = cast(reshape(reshape(single(A), [], 3) * single([0.299; 0.587; 0.114]), size(A, 1), size(A, 2)), class(A)); % #ok<ZEROLIKE>
+end
+
+function A = check_greyscale(A)
+    % Check if the image is greyscale
+    if size(A, 3) == 3 && ...
+            all(reshape(A(:,:,1) == A(:,:,2), [], 1)) && ...
+            all(reshape(A(:,:,2) == A(:,:,3), [], 1))
+        A = A(:,:,1); % Save only one channel for 8-bit output
+    end
+end
+
+function eps_remove_background(fname, count)
+    % Remove the background of an eps file
+    % Open the file
+    fh = fopen(fname, 'r+');
+    if fh == -1
+        error('Not able to open file %s.', fname);
+    end
+    % Read the file line by line
+    while count
+        % Get the next line
+        l = fgets(fh);
+        if isequal(l, -1)
+            break; % Quit, no rectangle found
+        end
+        % Check if the line contains the background rectangle
+        if isequal(regexp(l, ' *0 +0 +\d+ +\d+ +r[fe] *[\n\r]+', 'start'), 1)
+            % Set the line to whitespace and quit
+            l(1:regexp(l, '[\n\r]', 'start', 'once')-1) = ' ';
+            fseek(fh, -numel(l), 0);
+            fprintf(fh, l);
+            % Reduce the count
+            count = count - 1;
+        end
+    end
+    % Close the file
+    fclose(fh);
+end
+
+function b = isvector(options)
+    b = options.pdf || options.eps;
+end
+
+function b = isbitmap(options)
+    b = options.png || options.tif || options.jpg || options.bmp || options.im || options.alpha;
+end
+
+% Helper function
+function A = make_cell(A)
+    if ~iscell(A)
+        A = {A};
+    end
+end
+
+function add_bookmark(fname, bookmark_text)
+    % Adds a bookmark to the temporary EPS file after %%EndPageSetup
+    % Read in the file
+    fh = fopen(fname, 'r');
+    if fh == -1
+        error('File %s not found.', fname);
+    end
+    try
+        fstrm = fread(fh, '*char')';
+    catch ex
+        fclose(fh);
+        rethrow(ex);
+    end
+    fclose(fh);
+
+    % Include standard pdfmark prolog to maximize compatibility
+    fstrm = strrep(fstrm, '%%BeginProlog', sprintf('%%%%BeginProlog\n/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse'));
+    % Add page bookmark
+    fstrm = strrep(fstrm, '%%EndPageSetup', sprintf('%%%%EndPageSetup\n[ /Title (%s) /OUT pdfmark',bookmark_text));
+
+    % Write out the updated file
+    fh = fopen(fname, 'w');
+    if fh == -1
+        error('Unable to open %s for writing.', fname);
+    end
+    try
+        fwrite(fh, fstrm, 'char*1');
+    catch ex
+        fclose(fh);
+        rethrow(ex);
+    end
+    fclose(fh);
+end
+
+function set_tick_mode(Hlims, ax)
+    % Set the tick mode of linear axes to manual
+    % Leave log axes alone as these are tricky
+    M = get(Hlims, [ax 'Scale']);
+    if ~iscell(M)
+        M = {M};
+    end
+    %idx = cellfun(@(c) strcmp(c, 'linear'), M);
+    idx = find(strcmp(M,'linear'));
+    %set(Hlims(idx), [ax 'TickMode'], 'manual');  % issue #187
+    %set(Hlims(idx), [ax 'TickLabelMode'], 'manual');  % this hides exponent label in HG2!
+    for idx2 = 1 : numel(idx)
+        try
+            % Fix for issue #187 - only set manual ticks when no exponent is present
+            hAxes = Hlims(idx(idx2));
+            props = {[ax 'TickMode'],'manual', [ax 'TickLabelMode'],'manual'};
+            tickVals = get(hAxes,[ax 'Tick']);
+            tickStrs = get(hAxes,[ax 'TickLabel']);
+            try % Fix issue #236
+                exponents = [hAxes.([ax 'Axis']).SecondaryLabel];
+            catch
+                exponents = [hAxes.([ax 'Ruler']).SecondaryLabel];
+            end
+            if isempty([exponents.String])
+                % Fix for issue #205 - only set manual ticks when the Ticks number match the TickLabels number
+                if numel(tickVals) == numel(tickStrs)
+                    set(hAxes, props{:});  % no exponent and matching ticks, so update both ticks and tick labels to manual
+                end
+            end
+        catch  % probably HG1
+            % Fix for issue #220 - exponent is removed in HG1 when TickMode is 'manual' (internal Matlab bug)
+            if isequal(tickVals, str2num(tickStrs)') %#ok<ST2NM>
+                set(hAxes, props{:});  % revert back to old behavior
+            end
+        end
+    end
+end
+
+function change_rgb_to_cmyk(fname)  % convert RGB => CMYK within an EPS file
+    % Do post-processing on the eps file
+    try
+        % Read the EPS file into memory
+        fstrm = read_write_entire_textfile(fname);
+
+        % Replace all gray-scale colors
+        fstrm = regexprep(fstrm, '\n([\d.]+) +GC\n', '\n0 0 0 ${num2str(1-str2num($1))} CC\n');
+        
+        % Replace all RGB colors
+        fstrm = regexprep(fstrm, '\n[0.]+ +[0.]+ +[0.]+ +RC\n', '\n0 0 0 1 CC\n');  % pure black
+        fstrm = regexprep(fstrm, '\n([\d.]+) +([\d.]+) +([\d.]+) +RC\n', '\n${sprintf(''%.4g '',[1-[str2num($1),str2num($2),str2num($3)]/max([str2num($1),str2num($2),str2num($3)]),1-max([str2num($1),str2num($2),str2num($3)])])} CC\n');
+
+        % Overwrite the file with the modified contents
+        read_write_entire_textfile(fname, fstrm);
+    catch
+        % never mind - leave as is...
+    end
+end
+
+function hBlackAxles = fixBlackAxle(hAxes, axleName)
+    hBlackAxles = [];
+    for idx = 1 : numel(hAxes)
+        ax = hAxes(idx);
+        axleColor = get(ax, axleName);
+        if isequal(axleColor,[0,0,0]) || isequal(axleColor,'k')
+            hBlackAxles(end+1) = ax; %#ok<AGROW>
+        end
+    end
+    set(hBlackAxles, axleName, [0,0,0.01]);  % off-black
+end
+
+% Issue #269: format-specific options
+function [optionsCells, bitDepth] = getFormatOptions(options, formatName)
+    bitDepth = [];
+    try
+        optionsStruct = options.format_options.(lower(formatName));
+    catch
+        % User did not specify any extra parameters for this format
+        optionsCells = {};
+        return
+    end
+    optionNames = fieldnames(optionsStruct);
+    optionVals  = struct2cell(optionsStruct);
+    optionsCells = [optionNames, optionVals]';
+    if nargout < 2, return, end  % bail out if BitDepth is not required
+    try
+        idx = find(strcmpi(optionNames,'BitDepth'), 1, 'last');
+        if ~isempty(idx)
+            bitDepth = optionVals{idx};
+        end
+    catch
+        % never mind - ignore
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/fix_lines.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/fix_lines.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/fix_lines.m	(revision 27955)
@@ -0,0 +1,151 @@
+%FIX_LINES  Improves the line style of eps files generated by print
+%
+% Examples:
+%   fix_lines fname
+%   fix_lines fname fname2
+%   fstrm_out = fixlines(fstrm_in)
+%
+% This function improves the style of lines in eps files generated by
+% MATLAB's print function, making them more similar to those seen on
+% screen. Grid lines are also changed from a dashed style to a dotted
+% style, for greater differentiation from dashed lines.
+% 
+% The function also places embedded fonts after the postscript header, in
+% versions of MATLAB which place the fonts first (R2006b and earlier), in
+% order to allow programs such as Ghostscript to find the bounding box
+% information.
+%
+%IN:
+%   fname - Name or path of source eps file.
+%   fname2 - Name or path of destination eps file. Default: same as fname.
+%   fstrm_in - File contents of a MATLAB-generated eps file.
+%
+%OUT:
+%   fstrm_out - Contents of the eps file with line styles fixed.
+
+% Copyright: (C) Oliver Woodford, 2008-2014
+
+% The idea of editing the EPS file to change line styles comes from Jiro
+% Doke's FIXPSLINESTYLE (fex id: 17928)
+% The idea of changing dash length with line width came from comments on
+% fex id: 5743, but the implementation is mine :)
+
+% Thank you to Sylvain Favrot for bringing the embedded font/bounding box
+% interaction in older versions of MATLAB to my attention.
+% Thank you to D Ko for bringing an error with eps files with tiff previews
+% to my attention.
+% Thank you to Laurence K for suggesting the check to see if the file was
+% opened.
+
+% 01/03/15: Issue #20: warn users if using this function in HG2 (R2014b+)
+% 27/03/15: Fixed out of memory issue with enormous EPS files (generated by print() with OpenGL renderer), related to issue #39
+
+function fstrm = fix_lines(fstrm, fname2)
+
+% Issue #20: warn users if using this function in HG2 (R2014b+)
+if using_hg2
+    warning('export_fig:hg2','The fix_lines function should not be used in this Matlab version.');
+end
+    
+if nargout == 0 || nargin > 1
+    if nargin < 2
+        % Overwrite the input file
+        fname2 = fstrm;
+    end
+    % Read in the file
+    fstrm = read_write_entire_textfile(fstrm);
+end
+
+% Move any embedded fonts after the postscript header
+if strcmp(fstrm(1:15), '%!PS-AdobeFont-')
+    % Find the start and end of the header
+    ind = regexp(fstrm, '[\n\r]%!PS-Adobe-');
+    [ind2, ind2] = regexp(fstrm, '[\n\r]%%EndComments[\n\r]+');
+    % Put the header first
+    if ~isempty(ind) && ~isempty(ind2) && ind(1) < ind2(1)
+        fstrm = fstrm([ind(1)+1:ind2(1) 1:ind(1) ind2(1)+1:end]);
+    end
+end
+
+% Make sure all line width commands come before the line style definitions,
+% so that dash lengths can be based on the correct widths
+% Find all line style sections
+ind = [regexp(fstrm, '[\n\r]SO[\n\r]'),... % This needs to be here even though it doesn't have dots/dashes!
+       regexp(fstrm, '[\n\r]DO[\n\r]'),...
+       regexp(fstrm, '[\n\r]DA[\n\r]'),...
+       regexp(fstrm, '[\n\r]DD[\n\r]')];
+ind = sort(ind);
+% Find line width commands
+[ind2, ind3] = regexp(fstrm, '[\n\r]\d* w[\n\r]');
+% Go through each line style section and swap with any line width commands
+% near by
+b = 1;
+m = numel(ind);
+n = numel(ind2);
+for a = 1:m
+    % Go forwards width commands until we pass the current line style
+    while b <= n && ind2(b) < ind(a)
+        b = b + 1;
+    end
+    if b > n
+        % No more width commands
+        break;
+    end
+    % Check we haven't gone past another line style (including SO!)
+    if a < m && ind2(b) > ind(a+1)
+        continue;
+    end
+    % Are the commands close enough to be confident we can swap them?
+    if (ind2(b) - ind(a)) > 8
+        continue;
+    end
+    % Move the line style command below the line width command
+    fstrm(ind(a)+1:ind3(b)) = [fstrm(ind(a)+4:ind3(b)) fstrm(ind(a)+1:ind(a)+3)];
+    b = b + 1;
+end
+
+% Find any grid line definitions and change to GR format
+% Find the DO sections again as they may have moved
+ind = int32(regexp(fstrm, '[\n\r]DO[\n\r]'));
+if ~isempty(ind)
+    % Find all occurrences of what are believed to be axes and grid lines
+    ind2 = int32(regexp(fstrm, '[\n\r] *\d* *\d* *mt *\d* *\d* *L[\n\r]'));
+    if ~isempty(ind2)
+        % Now see which DO sections come just before axes and grid lines
+        ind2 = repmat(ind2', [1 numel(ind)]) - repmat(ind, [numel(ind2) 1]);
+        ind2 = any(ind2 > 0 & ind2 < 12); % 12 chars seems about right
+        ind = ind(ind2);
+        % Change any regions we believe to be grid lines to GR
+        fstrm(ind+1) = 'G';
+        fstrm(ind+2) = 'R';
+    end
+end
+
+% Define the new styles, including the new GR format
+% Dot and dash lengths have two parts: a constant amount plus a line width
+% variable amount. The constant amount comes after dpi2point, and the
+% variable amount comes after currentlinewidth. If you want to change
+% dot/dash lengths for a one particular line style only, edit the numbers
+% in the /DO (dotted lines), /DA (dashed lines), /DD (dot dash lines) and
+% /GR (grid lines) lines for the style you want to change.
+new_style = {'/dom { dpi2point 1 currentlinewidth 0.08 mul add mul mul } bdef',... % Dot length macro based on line width
+             '/dam { dpi2point 2 currentlinewidth 0.04 mul add mul mul } bdef',... % Dash length macro based on line width
+             '/SO { [] 0 setdash 0 setlinecap } bdef',... % Solid lines
+             '/DO { [1 dom 1.2 dom] 0 setdash 0 setlinecap } bdef',... % Dotted lines
+             '/DA { [4 dam 1.5 dam] 0 setdash 0 setlinecap } bdef',... % Dashed lines
+             '/DD { [1 dom 1.2 dom 4 dam 1.2 dom] 0 setdash 0 setlinecap } bdef',... % Dot dash lines
+             '/GR { [0 dpi2point mul 4 dpi2point mul] 0 setdash 1 setlinecap } bdef'}; % Grid lines - dot spacing remains constant
+
+% Construct the output
+% This is the original (memory-intensive) code:
+%first_sec = strfind(fstrm, '% line types:'); % Isolate line style definition section
+%[second_sec, remaining] = strtok(fstrm(first_sec+1:end), '/');
+%[remaining, remaining] = strtok(remaining, '%');
+%fstrm = [fstrm(1:first_sec) second_sec sprintf('%s\r', new_style{:}) remaining];
+fstrm = regexprep(fstrm,'(% line types:.+?)/.+?%',['$1',sprintf('%s\r',new_style{:}),'%']);
+
+% Write the output file
+if nargout == 0 || nargin > 1
+    read_write_entire_textfile(fname2, fstrm);
+end
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/ghostscript.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/ghostscript.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/ghostscript.m	(revision 27955)
@@ -0,0 +1,196 @@
+function varargout = ghostscript(cmd)
+%GHOSTSCRIPT  Calls a local GhostScript executable with the input command
+%
+% Example:
+%   [status result] = ghostscript(cmd)
+%
+% Attempts to locate a ghostscript executable, finally asking the user to
+% specify the directory ghostcript was installed into. The resulting path
+% is stored for future reference.
+% 
+% Once found, the executable is called with the input command string.
+%
+% This function requires that you have Ghostscript installed on your
+% system. You can download this from: http://www.ghostscript.com
+%
+% IN:
+%   cmd - Command string to be passed into ghostscript.
+%
+% OUT:
+%   status - 0 iff command ran without problem.
+%   result - Output from ghostscript.
+
+% Copyright: Oliver Woodford, 2009-2015, Yair Altman 2015-
+%{
+% Thanks to Jonas Dorn for the fix for the title of the uigetdir window on Mac OS.
+% Thanks to Nathan Childress for the fix to default location on 64-bit Windows systems.
+% 27/04/11 - Find 64-bit Ghostscript on Windows. Thanks to Paul Durack and
+%            Shaun Kline for pointing out the issue
+% 04/05/11 - Thanks to David Chorlian for pointing out an alternative
+%            location for gs on linux.
+% 12/12/12 - Add extra executable name on Windows. Thanks to Ratish
+%            Punnoose for highlighting the issue.
+% 28/06/13 - Fix error using GS 9.07 in Linux. Many thanks to Jannick
+%            Steinbring for proposing the fix.
+% 24/10/13 - Fix error using GS 9.07 in Linux. Many thanks to Johannes 
+%            for the fix.
+% 23/01/14 - Add full path to ghostscript.txt in warning. Thanks to Koen
+%            Vermeer for raising the issue.
+% 27/02/15 - If Ghostscript croaks, display suggested workarounds
+% 30/03/15 - Improved performance by caching status of GS path check, if ok
+% 14/05/15 - Clarified warning message in case GS path could not be saved
+% 29/05/15 - Avoid cryptic error in case the ghostscipt path cannot be saved (issue #74)
+% 10/11/15 - Custom GS installation webpage for MacOS. Thanks to Andy Hueni via FEX
+%}
+
+    try
+        % Call ghostscript
+        [varargout{1:nargout}] = system([gs_command(gs_path()) cmd]);
+    catch err
+        % Display possible workarounds for Ghostscript croaks
+        url1 = 'https://github.com/altmany/export_fig/issues/12#issuecomment-61467998';  % issue #12
+        url2 = 'https://github.com/altmany/export_fig/issues/20#issuecomment-63826270';  % issue #20
+        hg2_str = ''; if using_hg2, hg2_str = ' or Matlab R2014a'; end
+        fprintf(2, 'Ghostscript error. Rolling back to GS 9.10%s may possibly solve this:\n * <a href="%s">%s</a> ',hg2_str,url1,url1);
+        if using_hg2
+            fprintf(2, '(GS 9.10)\n * <a href="%s">%s</a> (R2014a)',url2,url2);
+        end
+        fprintf('\n\n');
+        if ismac || isunix
+            url3 = 'https://github.com/altmany/export_fig/issues/27';  % issue #27
+            fprintf(2, 'Alternatively, this may possibly be due to a font path issue:\n * <a href="%s">%s</a>\n\n',url3,url3);
+            % issue #20
+            fpath = which(mfilename);
+            if isempty(fpath), fpath = [mfilename('fullpath') '.m']; end
+            fprintf(2, 'Alternatively, if you are using csh, modify shell_cmd from "export..." to "setenv ..."\nat the bottom of <a href="matlab:opentoline(''%s'',174)">%s</a>\n\n',fpath,fpath);
+        end
+        rethrow(err);
+    end
+end
+
+function path_ = gs_path
+    % Return a valid path
+    % Start with the currently set path
+    path_ = user_string('ghostscript');
+    % Check the path works
+    if check_gs_path(path_)
+        return
+    end
+    % Check whether the binary is on the path
+    if ispc
+        bin = {'gswin32c.exe', 'gswin64c.exe', 'gs'};
+    else
+        bin = {'gs'};
+    end
+    for a = 1:numel(bin)
+        path_ = bin{a};
+        if check_store_gs_path(path_)
+            return
+        end
+    end
+    % Search the obvious places
+    if ispc
+        default_location = 'C:\Program Files\gs\';
+        dir_list = dir(default_location);
+        if isempty(dir_list)
+            default_location = 'C:\Program Files (x86)\gs\'; % Possible location on 64-bit systems
+            dir_list = dir(default_location);
+        end
+        executable = {'\bin\gswin32c.exe', '\bin\gswin64c.exe'};
+        ver_num = 0;
+        % If there are multiple versions, use the newest
+        for a = 1:numel(dir_list)
+            ver_num2 = sscanf(dir_list(a).name, 'gs%g');
+            if ~isempty(ver_num2) && ver_num2 > ver_num
+                for b = 1:numel(executable)
+                    path2 = [default_location dir_list(a).name executable{b}];
+                    if exist(path2, 'file') == 2
+                        path_ = path2;
+                        ver_num = ver_num2;
+                    end
+                end
+            end
+        end
+        if check_store_gs_path(path_)
+            return
+        end
+    else
+        executable = {'/usr/bin/gs', '/usr/local/bin/gs'};
+        for a = 1:numel(executable)
+            path_ = executable{a};
+            if check_store_gs_path(path_)
+                return
+            end
+        end
+    end
+    % Ask the user to enter the path
+    while true
+        if strncmp(computer, 'MAC', 3) % Is a Mac
+            % Give separate warning as the uigetdir dialogue box doesn't have a
+            % title
+            uiwait(warndlg('Ghostscript not found. Please locate the program.'))
+        end
+        base = uigetdir('/', 'Ghostcript not found. Please locate the program.');
+        if isequal(base, 0)
+            % User hit cancel or closed window
+            break;
+        end
+        base = [base filesep]; %#ok<AGROW>
+        bin_dir = {'', ['bin' filesep], ['lib' filesep]};
+        for a = 1:numel(bin_dir)
+            for b = 1:numel(bin)
+                path_ = [base bin_dir{a} bin{b}];
+                if exist(path_, 'file') == 2
+                    if check_store_gs_path(path_)
+                        return
+                    end
+                end
+            end
+        end
+    end
+    if ismac
+        error('Ghostscript not found. Have you installed it (http://pages.uoregon.edu/koch)?');
+    else
+        error('Ghostscript not found. Have you installed it from www.ghostscript.com?');
+    end
+end
+
+function good = check_store_gs_path(path_)
+    % Check the path is valid
+    good = check_gs_path(path_);
+    if ~good
+        return
+    end
+    % Update the current default path to the path found
+    if ~user_string('ghostscript', path_)
+        filename = fullfile(fileparts(which('user_string.m')), '.ignore', 'ghostscript.txt');
+        warning('Path to ghostscript installation could not be saved in %s (perhaps a permissions issue). You can manually create this file and set its contents to %s, to improve performance in future invocations (this warning is safe to ignore).', filename, path_);
+        return
+    end
+end
+
+function good = check_gs_path(path_)
+    persistent isOk
+    if isempty(path_)
+        isOk = false;
+    elseif ~isequal(isOk,true)
+        % Check whether the path is valid
+        [status, message] = system([gs_command(path_) '-h']); %#ok<ASGLU>
+        isOk = status == 0;
+    end
+    good = isOk;
+end
+
+function cmd = gs_command(path_)
+    % Initialize any required system calls before calling ghostscript
+    % TODO: in Unix/Mac, find a way to determine whether to use "export" (bash) or "setenv" (csh/tcsh)
+    shell_cmd = '';
+    if isunix
+        shell_cmd = 'export LD_LIBRARY_PATH=""; '; % Avoids an error on Linux with GS 9.07
+    end
+    if ismac
+        shell_cmd = 'export DYLD_LIBRARY_PATH=""; ';  % Avoids an error on Mac with GS 9.07
+    end
+    % Construct the command string
+    cmd = sprintf('%s"%s" ', shell_cmd, path_);
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/im2gif.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/im2gif.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/im2gif.m	(revision 27955)
@@ -0,0 +1,205 @@
+%IM2GIF Convert a multiframe image to an animated GIF file
+%
+% Examples:
+%   im2gif infile
+%   im2gif infile outfile
+%   im2gif(A, outfile)
+%   im2gif(..., '-nocrop')
+%   im2gif(..., '-nodither')
+%   im2gif(..., '-ncolors', n)
+%   im2gif(..., '-loops', n)
+%   im2gif(..., '-delay', n) 
+%   
+% This function converts a multiframe image to an animated GIF.
+%
+% To create an animation from a series of figures, export to a multiframe
+% TIFF file using export_fig, then convert to a GIF, as follows:
+%
+%    for a = 2 .^ (3:6)
+%       peaks(a);
+%       export_fig test.tif -nocrop -append
+%    end
+%    im2gif('test.tif', '-delay', 0.5);
+%
+%IN:
+%   infile - string containing the name of the input image.
+%   outfile - string containing the name of the output image (must have the
+%             .gif extension). Default: infile, with .gif extension.
+%   A - HxWxCxN array of input images, stacked along fourth dimension, to
+%       be converted to gif.
+%   -nocrop - option indicating that the borders of the output are not to
+%             be cropped.
+%   -nodither - option indicating that dithering is not to be used when
+%               converting the image.
+%   -ncolors - option pair, the value of which indicates the maximum number
+%              of colors the GIF can have. This can also be a quantization
+%              tolerance, between 0 and 1. Default/maximum: 256.
+%   -loops - option pair, the value of which gives the number of times the
+%            animation is to be looped. Default: 65535.
+%   -delay - option pair, the value of which gives the time, in seconds,
+%            between frames. Default: 1/15.
+
+% Copyright (C) Oliver Woodford 2011
+
+%{
+% 14/02/18: Merged issue #235: reduced memory usage, improved performance (thanks to @numb7rs)
+% 30/11/19: Merged issue #288: Fix im2gif.m for greyscale TIFF images (thanks @Blackbelt1221)
+%}
+
+function im2gif(A, varargin)
+
+    % Parse the input arguments
+    [A, options] = parse_args(A, varargin{:});
+
+    if options.crop ~= 0
+        % Crop
+        A = crop_borders(A, A(ceil(end/2),1,:,1));
+    end
+
+    % Convert to indexed image
+    [h, w, c, n] = size(A);
+
+    % Issue #235: Using unique(A,'rows') on the whole image stack at once causes
+    % massive memory usage when dealing with large images (at least on Matlab 2017b).
+    % Running unique(...) on individual frames, then again on the results drastically
+    % reduces the memory usage & slightly improves the execution time (@numb7rs).
+    uns = cell(1,size(A,4));
+    for nn=1:size(A,4)
+        uns{nn}=unique(reshape(A(:,:,:,nn), h*w, c),'rows');
+    end
+    map=unique(cell2mat(uns'),'rows');
+
+    A = reshape(permute(A, [1 2 4 3]), h, w*n, c);
+
+    if size(map, 1) > 256
+        dither_str = {'dither', 'nodither'};
+        dither_str = dither_str{1+(options.dither==0)};
+        if options.ncolors <= 1
+            [B, map] = rgb2ind(A, options.ncolors, dither_str);
+            if size(map, 1) > 256
+                [B, map] = rgb2ind(A, 256, dither_str);
+            end
+        else
+            [B, map] = rgb2ind(A, min(round(options.ncolors), 256), dither_str);
+        end
+    else
+        if max(map(:)) > 1
+            map = double(map) / 255;
+            A = double(A) / 255;
+        end
+        B = rgb2ind(im2double(A), map);
+    end
+    B = reshape(B, h, w, 1, n);
+
+    % Bug fix to rgb2ind
+    map(B(1)+1,:) = im2double(A(1,1,:));
+
+    % Save as a gif
+    imwrite(B, map, options.outfile, 'LoopCount', round(options.loops(1)), 'DelayTime', options.delay);
+end
+
+%% Parse the input arguments
+function [A, options] = parse_args(A, varargin)
+    % Set the defaults
+    options = struct('outfile', '', ...
+                     'dither', true, ...
+                     'crop', true, ...
+                     'ncolors', 256, ...
+                     'loops', 65535, ...
+                     'delay', 1/15);
+
+    % Go through the arguments
+    a = 0;
+    n = numel(varargin);
+    while a < n
+        a = a + 1;
+        if ischar(varargin{a}) && ~isempty(varargin{a})
+            if varargin{a}(1) == '-'
+                opt = lower(varargin{a}(2:end));
+                switch opt
+                    case 'nocrop'
+                        options.crop = false;
+                    case 'nodither'
+                        options.dither = false;
+                    otherwise
+                        if ~isfield(options, opt)
+                            error('Option %s not recognized', varargin{a});
+                        end
+                        a = a + 1;
+                        if ischar(varargin{a}) && ~ischar(options.(opt))
+                            options.(opt) = str2double(varargin{a});
+                        else
+                            options.(opt) = varargin{a};
+                        end
+                end
+            else
+                options.outfile = varargin{a};
+            end
+        end
+    end
+
+    if isempty(options.outfile)
+        if ~ischar(A)
+            error('No output filename given.');
+        end
+        % Generate the output filename from the input filename
+        [path, outfile] = fileparts(A);
+        options.outfile = fullfile(path, [outfile '.gif']);
+    end
+
+    if ischar(A)
+        % Read in the image
+        A = imread_rgb(A);
+    end
+end
+
+%% Read image to uint8 rgb array
+function [A, alpha] = imread_rgb(name)
+    % Get file info
+    info = imfinfo(name);
+    % Special case formats
+    switch lower(info(1).Format)
+        case 'gif'
+            [A, map] = imread(name, 'frames', 'all');
+            if ~isempty(map)
+                map = uint8(map * 256 - 0.5); % Convert to uint8 for storage
+                A = reshape(map(uint32(A)+1,:), [size(A) size(map, 2)]); % Assume indexed from 0
+                A = permute(A, [1 2 5 4 3]);
+            end
+        case {'tif', 'tiff'}
+            A = cell(numel(info), 1);
+            for a = 1:numel(A)
+                [A{a}, map] = imread(name, 'Index', a, 'Info', info);
+                if ~isempty(map)
+                    map = uint8(map * 256 - 0.5); % Convert to uint8 for storage
+                    A{a} = reshape(map(uint32(A{a})+1,:), [size(A) size(map, 2)]); % Assume indexed from 0
+                end
+                if size(A{a}, 3) == 4
+                    % TIFF in CMYK colourspace - convert to RGB
+                    if isfloat(A{a})
+                        A{a} = A{a} * 255;
+                    else
+                        A{a} = single(A{a});
+                    end
+                    A{a} = 255 - A{a};
+                    A{a}(:,:,4) = A{a}(:,:,4) / 255;
+                    A{a} = uint8(A(:,:,1:3) .* A{a}(:,:,[4 4 4]));
+                elseif size(A{a}, 3) < 3 %Check whether TIFF has been read in as greyscale
+                    %Convert from greyscale to RGB colorspace (issue #288)
+                    A{a} = cat(3, A{a}, A{a}, A{a});
+                end
+            end
+            A = cat(4, A{:});
+        otherwise
+            [A, map, alpha] = imread(name);
+            A = A(:,:,:,1); % Keep only first frame of multi-frame files
+            if ~isempty(map)
+                map = uint8(map * 256 - 0.5); % Convert to uint8 for storage
+                A = reshape(map(uint32(A)+1,:), [size(A) size(map, 2)]); % Assume indexed from 0
+            elseif size(A, 3) == 4
+                % Assume 4th channel is an alpha matte
+                alpha = A(:,:,4);
+                A = A(:,:,1:3);
+            end
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/isolate_axes.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/isolate_axes.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/isolate_axes.m	(revision 27955)
@@ -0,0 +1,130 @@
+function fh = isolate_axes(ah, vis)
+%ISOLATE_AXES Isolate the specified axes in a figure on their own
+%
+% Examples:
+%   fh = isolate_axes(ah)
+%   fh = isolate_axes(ah, vis)
+%
+% This function will create a new figure containing the axes/uipanels
+% specified, and also their associated legends and colorbars. The objects
+% specified must all be in the same figure, but they will generally only be
+% a subset of the objects in the figure.
+%
+% IN:
+%    ah - An array of axes and uipanel handles, which must come from the
+%         same figure.
+%    vis - A boolean indicating whether the new figure should be visible.
+%          Default: false.
+%
+% OUT:
+%    fh - The handle of the created figure.
+
+% Copyright (C) Oliver Woodford 2011-2013
+
+% Thank you to Rosella Blatt for reporting a bug to do with axes in GUIs
+% 16/03/12: Moved copyfig to its own function. Thanks to Bob Fratantonio
+%           for pointing out that the function is also used in export_fig.m
+% 12/12/12: Add support for isolating uipanels. Thanks to michael for suggesting it
+% 08/10/13: Bug fix to allchildren suggested by Will Grant (many thanks!)
+% 05/12/13: Bug fix to axes having different units. Thanks to Remington Reid for reporting
+% 21/04/15: Bug fix for exporting uipanels with legend/colorbar on HG1 (reported by Alvaro
+%           on FEX page as a comment on 24-Apr-2014); standardized indentation & help section
+% 22/04/15: Bug fix: legends and colorbars were not exported when exporting axes handle in HG2
+
+    % Make sure we have an array of handles
+    if ~all(ishandle(ah))
+        error('ah must be an array of handles');
+    end
+    % Check that the handles are all for axes or uipanels, and are all in the same figure
+    fh = ancestor(ah(1), 'figure');
+    nAx = numel(ah);
+    for a = 1:nAx
+        if ~ismember(get(ah(a), 'Type'), {'axes', 'uipanel'})
+            error('All handles must be axes or uipanel handles.');
+        end
+        if ~isequal(ancestor(ah(a), 'figure'), fh)
+            error('Axes must all come from the same figure.');
+        end
+    end
+    % Tag the objects so we can find them in the copy
+    old_tag = get(ah, 'Tag');
+    if nAx == 1
+        old_tag = {old_tag};
+    end
+    set(ah, 'Tag', 'ObjectToCopy');
+    % Create a new figure exactly the same as the old one
+    fh = copyfig(fh); %copyobj(fh, 0);
+    if nargin < 2 || ~vis
+        set(fh, 'Visible', 'off');
+    end
+    % Reset the object tags
+    for a = 1:nAx
+        set(ah(a), 'Tag', old_tag{a});
+    end
+    % Find the objects to save
+    ah = findall(fh, 'Tag', 'ObjectToCopy');
+    if numel(ah) ~= nAx
+        close(fh);
+        error('Incorrect number of objects found.');
+    end
+    % Set the axes tags to what they should be
+    for a = 1:nAx
+        set(ah(a), 'Tag', old_tag{a});
+    end
+    % Keep any legends and colorbars which overlap the subplots
+    % Note: in HG1 these are axes objects; in HG2 they are separate objects, therefore we
+    %       don't test for the type, only the tag (hopefully nobody but Matlab uses them!)
+    lh = findall(fh, 'Tag', 'legend', '-or', 'Tag', 'Colorbar');
+    nLeg = numel(lh);
+    if nLeg > 0
+        set([ah(:); lh(:)], 'Units', 'normalized');
+        try
+            ax_pos = get(ah, 'OuterPosition'); % axes and figures have the OuterPosition property
+        catch
+            ax_pos = get(ah, 'Position'); % uipanels only have Position, not OuterPosition
+        end
+        if nAx > 1
+            ax_pos = cell2mat(ax_pos(:));
+        end
+        ax_pos(:,3:4) = ax_pos(:,3:4) + ax_pos(:,1:2);
+        try
+            leg_pos = get(lh, 'OuterPosition');
+        catch
+            leg_pos = get(lh, 'Position');  % No OuterPosition in HG2, only in HG1
+        end
+        if nLeg > 1;
+            leg_pos = cell2mat(leg_pos);
+        end
+        leg_pos(:,3:4) = leg_pos(:,3:4) + leg_pos(:,1:2);
+        ax_pos = shiftdim(ax_pos, -1);
+        % Overlap test
+        M = bsxfun(@lt, leg_pos(:,1), ax_pos(:,:,3)) & ...
+            bsxfun(@lt, leg_pos(:,2), ax_pos(:,:,4)) & ...
+            bsxfun(@gt, leg_pos(:,3), ax_pos(:,:,1)) & ...
+            bsxfun(@gt, leg_pos(:,4), ax_pos(:,:,2));
+        ah = [ah; lh(any(M, 2))];
+    end
+    % Get all the objects in the figure
+    axs = findall(fh);
+    % Delete everything except for the input objects and associated items
+    delete(axs(~ismember(axs, [ah; allchildren(ah); allancestors(ah)])));
+end
+
+function ah = allchildren(ah)
+    ah = findall(ah);
+    if iscell(ah)
+        ah = cell2mat(ah);
+    end
+    ah = ah(:);
+end
+
+function ph = allancestors(ah)
+    ph = [];
+    for a = 1:numel(ah)
+        h = get(ah(a), 'parent');
+        while h ~= 0
+            ph = [ph; h];
+            h = get(h, 'parent');
+        end
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/pdf2eps.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/pdf2eps.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/pdf2eps.m	(revision 27955)
@@ -0,0 +1,55 @@
+%PDF2EPS  Convert a pdf file to eps format using pdftops
+%
+% Examples:
+%   pdf2eps source dest
+%
+% This function converts a pdf file to eps format.
+%
+% This function requires that you have pdftops, from the Xpdf suite of
+% functions, installed on your system. This can be downloaded from:
+% http://xpdfreader.com
+%
+% Inputs:
+%   source - filename of the source pdf file to convert. The filename is
+%            assumed to already have the extension ".pdf".
+%   dest - filename of the destination eps file. The filename is assumed to
+%          already have the extension ".eps".
+
+% Copyright (C) Oliver Woodford 2009-2010, Yair Altman 2015-
+
+% Thanks to Aldebaro Klautau for reporting a bug when saving to
+% non-existant directories.
+
+% 22/09/2018 - Xpdf website changed to xpdfreader.com
+
+function pdf2eps(source, dest)
+    % Construct the options string for pdftops
+    options = ['-q -paper match -eps -level2 "' source '" "' dest '"'];
+
+    % Convert to eps using pdftops
+    [status, message] = pdftops(options);
+
+    % Check for error
+    if status
+        % Report error
+        if isempty(message)
+            error('Unable to generate eps. Check destination directory is writable.');
+        else
+            error(message);
+        end
+    end
+
+    % Fix the DSC error created by pdftops
+    fid = fopen(dest, 'r+');
+    if fid == -1
+        % Cannot open the file
+        return
+    end
+    fgetl(fid); % Get the first line
+    str = fgetl(fid); % Get the second line
+    if strcmp(str(1:min(13, end)), '% Produced by')
+        fseek(fid, -numel(str)-1, 'cof');
+        fwrite(fid, '%'); % Turn ' ' into '%'
+    end
+    fclose(fid);
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/pdftops.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/pdftops.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/pdftops.m	(revision 27955)
@@ -0,0 +1,170 @@
+function varargout = pdftops(cmd)
+%PDFTOPS  Calls a local pdftops executable with the input command
+%
+% Example:
+%   [status result] = pdftops(cmd)
+%
+% Attempts to locate a pdftops executable, finally asking the user to
+% specify the directory pdftops was installed into. The resulting path is
+% stored for future reference.
+% 
+% Once found, the executable is called with the input command string.
+%
+% This function requires that you have pdftops (from the Xpdf package)
+% installed on your system. You can download this from: http://xpdfreader.com
+%
+% IN:
+%   cmd - Command string to be passed into pdftops (e.g. '-help').
+%
+% OUT:
+%   status - 0 iff command ran without problem.
+%   result - Output from pdftops.
+
+% Copyright: Oliver Woodford, 2009-2010
+
+% Thanks to Jonas Dorn for the fix for the title of the uigetdir window on Mac OS.
+% Thanks to Christoph Hertel for pointing out a bug in check_xpdf_path under linux.
+% 23/01/2014 - Add full path to pdftops.txt in warning.
+% 27/05/2015 - Fixed alert in case of missing pdftops; fixed code indentation
+% 02/05/2016 - Added possible error explanation suggested by Michael Pacer (issue #137)
+% 02/05/2016 - Search additional possible paths suggested by Jonas Stein (issue #147)
+% 03/05/2016 - Display the specific error message if pdftops fails for some reason (issue #148)
+% 22/09/2018 - Xpdf website changed to xpdfreader.com; improved popup logic
+% 03/02/2019 - Fixed one-off 'pdftops not found' error after install (Mac/Linux) (issue #266)
+
+    % Call pdftops
+    [varargout{1:nargout}] = system([xpdf_command(xpdf_path()) cmd]);
+end
+
+function path_ = xpdf_path
+    % Return a valid path
+    % Start with the currently set path
+    path_ = user_string('pdftops');
+    % Check the path works
+    if check_xpdf_path(path_)
+        return
+    end
+    % Check whether the binary is on the path
+    if ispc
+        bin = 'pdftops.exe';
+    else
+        bin = 'pdftops';
+    end
+    if check_store_xpdf_path(bin)
+        path_ = bin;
+        return
+    end
+    % Search the obvious places
+    if ispc
+        paths = {'C:\Program Files\xpdf\pdftops.exe', 'C:\Program Files (x86)\xpdf\pdftops.exe'};
+    else
+        paths = {'/usr/bin/pdftops', '/usr/local/bin/pdftops'};
+    end
+    for a = 1:numel(paths)
+        path_ = paths{a};
+        if check_store_xpdf_path(path_)
+            return
+        end
+    end
+
+    % Ask the user to enter the path
+    errMsg1 = 'Pdftops not found. Please locate the program, or install xpdf-tools from ';
+    url1 = 'http://xpdfreader.com/download.html'; %='http://foolabs.com/xpdf';
+    fprintf(2, '%s\n', [errMsg1 '<a href="matlab:web(''-browser'',''' url1 ''');">' url1 '</a>']);
+    errMsg1 = [errMsg1 url1];
+    %if strncmp(computer,'MAC',3) % Is a Mac
+    %    % Give separate warning as the MacOS uigetdir dialogue box doesn't have a title
+    %    uiwait(warndlg(errMsg1))
+    %end
+
+    % Provide an alternative possible explanation as per issue #137
+    errMsg2 = 'If you have pdftops installed, perhaps Matlab is shaddowing it as described in ';
+    url2 = 'https://github.com/altmany/export_fig/issues/137';
+    fprintf(2, '%s\n', [errMsg2 '<a href="matlab:web(''-browser'',''' url2 ''');">issue #137</a>']);
+    errMsg2 = [errMsg2 url1];
+
+    state = 1;
+    while 1
+        if state
+            option1 = 'Install pdftops';
+        else
+            option1 = 'Issue #137';
+        end
+        answer = questdlg({errMsg1,'',errMsg2},'Pdftops error',option1,'Locate pdftops','Cancel','Cancel');
+        drawnow;  % prevent a Matlab hang: http://undocumentedmatlab.com/blog/solving-a-matlab-hang-problem
+        switch answer
+            case 'Install pdftops'
+                web('-browser',url1);
+                state = 0;
+            case 'Issue #137'
+                web('-browser',url2);
+                state = 1;
+            case 'Locate pdftops'
+                base = uigetdir('/', errMsg1);
+                if isequal(base, 0)
+                    % User hit cancel or closed window
+                    break
+                end
+                base = [base filesep]; %#ok<AGROW>
+                bin_dir = {'', ['bin' filesep], ['lib' filesep]};
+                for a = 1:numel(bin_dir)
+                    path_ = [base bin_dir{a} bin];
+                    if exist(path_, 'file') == 2
+                        break
+                    end
+                end
+                if check_store_xpdf_path(path_)
+                    return
+                end
+
+            otherwise  % User hit Cancel or closed window
+                break
+        end
+    end
+    error('pdftops executable not found.');
+end
+
+function good = check_store_xpdf_path(path_)
+    % Check the path is valid
+    good = check_xpdf_path(path_);
+    if ~good
+        return
+    end
+    % Update the current default path to the path found
+    if ~user_string('pdftops', path_)
+        warning('Path to pdftops executable could not be saved. Enter it manually in %s.', fullfile(fileparts(which('user_string.m')), '.ignore', 'pdftops.txt'));
+        return
+    end
+end
+
+function good = check_xpdf_path(path_)
+    % Check the path is valid
+    [good, message] = system([xpdf_command(path_) '-h']); %#ok<ASGLU>
+    % system returns good = 1 even when the command runs
+    % Look for something distinct in the help text
+    good = ~isempty(strfind(message, 'PostScript')); %#ok<STREMP>
+
+    % Display the error message if the pdftops executable exists but fails for some reason
+    % Note: on Mac/Linux, exist('pdftops','file') will always return 2 due to pdftops.m => check for '/','.' (issue #266)
+    if ~good && exist(path_,'file') && ~isempty(regexp(path_,'[/.]')) %#ok<RGXP1> % file exists but generates an error
+        fprintf('Error running %s:\n', path_);
+        fprintf(2,'%s\n\n',message);
+    end
+end
+
+function cmd = xpdf_command(path_)
+    % Initialize any required system calls before calling ghostscript
+    % TODO: in Unix/Mac, find a way to determine whether to use "export" (bash) or "setenv" (csh/tcsh)
+    shell_cmd = '';
+    if isunix
+        % Avoids an error on Linux with outdated MATLAB lib files
+        % R20XXa/bin/glnxa64/libtiff.so.X
+        % R20XXa/sys/os/glnxa64/libstdc++.so.X
+        shell_cmd = 'export LD_LIBRARY_PATH=""; ';
+    end
+    if ismac
+        shell_cmd = 'export DYLD_LIBRARY_PATH=""; ';
+    end
+    % Construct the command string
+    cmd = sprintf('%s"%s" ', shell_cmd, path_);
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/print2array.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/print2array.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/print2array.m	(revision 27955)
@@ -0,0 +1,261 @@
+function [A, bcol] = print2array(fig, res, renderer, gs_options)
+%PRINT2ARRAY  Exports a figure to an image array
+%
+% Examples:
+%   A = print2array
+%   A = print2array(figure_handle)
+%   A = print2array(figure_handle, resolution)
+%   A = print2array(figure_handle, resolution, renderer)
+%   A = print2array(figure_handle, resolution, renderer, gs_options)
+%   [A bcol] = print2array(...)
+%
+% This function outputs a bitmap image of the given figure, at the desired
+% resolution.
+%
+% If renderer is '-painters' then ghostcript needs to be installed. This
+% can be downloaded from: http://www.ghostscript.com
+%
+% IN:
+%   figure_handle - The handle of the figure to be exported. Default: gcf.
+%   resolution - Resolution of the output, as a factor of screen
+%                resolution. Default: 1.
+%   renderer - string containing the renderer paramater to be passed to
+%              print. Default: '-opengl'.
+%   gs_options - optional ghostscript options (e.g.: '-dNoOutputFonts'). If
+%                multiple options are needed, enclose in call array: {'-a','-b'}
+%
+% OUT:
+%   A - MxNx3 uint8 image of the figure.
+%   bcol - 1x3 uint8 vector of the background color
+
+% Copyright (C) Oliver Woodford 2008-2014, Yair Altman 2015-
+%{
+% 05/09/11: Set EraseModes to normal when using opengl or zbuffer
+%           renderers. Thanks to Pawel Kocieniewski for reporting the issue.
+% 21/09/11: Bug fix: unit8 -> uint8! Thanks to Tobias Lamour for reporting it.
+% 14/11/11: Bug fix: stop using hardcopy(), as it interfered with figure size
+%           and erasemode settings. Makes it a bit slower, but more reliable.
+%           Thanks to Phil Trinh and Meelis Lootus for reporting the issues.
+% 09/12/11: Pass font path to ghostscript.
+% 27/01/12: Bug fix affecting painters rendering tall figures. Thanks to
+%           Ken Campbell for reporting it.
+% 03/04/12: Bug fix to median input. Thanks to Andy Matthews for reporting it.
+% 26/10/12: Set PaperOrientation to portrait. Thanks to Michael Watts for
+%           reporting the issue.
+% 26/02/15: If temp dir is not writable, use the current folder for temp
+%           EPS/TIF files (Javier Paredes)
+% 27/02/15: Display suggested workarounds to internal print() error (issue #16)
+% 28/02/15: Enable users to specify optional ghostscript options (issue #36)
+% 10/03/15: Fixed minor warning reported by Paul Soderlind; fixed code indentation
+% 28/05/15: Fixed issue #69: patches with LineWidth==0.75 appear wide (internal bug in Matlab's print() func)
+% 07/07/15: Fixed issue #83: use numeric handles in HG1
+% 11/12/16: Fixed cropping issue reported by Harry D.
+% 29/09/18: Fixed issue #254: error in print2array>read_tif_img
+%}
+
+    % Generate default input arguments, if needed
+    if nargin < 2
+        res = 1;
+        if nargin < 1
+            fig = gcf;
+        end
+    end
+    % Warn if output is large
+    old_mode = get(fig, 'Units');
+    set(fig, 'Units', 'pixels');
+    px = get(fig, 'Position');
+    set(fig, 'Units', old_mode);
+    npx = prod(px(3:4)*res)/1e6;
+    if npx > 30
+        % 30M pixels or larger!
+        warning('MATLAB:LargeImage', 'print2array generating a %.1fM pixel image. This could be slow and might also cause memory problems.', npx);
+    end
+    % Retrieve the background colour
+    bcol = get(fig, 'Color');
+    % Set the resolution parameter
+    res_str = ['-r' num2str(ceil(get(0, 'ScreenPixelsPerInch')*res))];
+    % Generate temporary file name
+    tmp_nam = [tempname '.tif'];
+    try
+        % Ensure that the temp dir is writable (Javier Paredes 26/2/15)
+        fid = fopen(tmp_nam,'w');
+        fwrite(fid,1);
+        fclose(fid);
+        delete(tmp_nam);  % cleanup
+        isTempDirOk = true;
+    catch
+        % Temp dir is not writable, so use the current folder
+        [dummy,fname,fext] = fileparts(tmp_nam); %#ok<ASGLU>
+        fpath = pwd;
+        tmp_nam = fullfile(fpath,[fname fext]);
+        isTempDirOk = false;
+    end
+    % Enable users to specify optional ghostscript options (issue #36)
+    if nargin > 3 && ~isempty(gs_options)
+        if iscell(gs_options)
+            gs_options = sprintf(' %s',gs_options{:});
+        elseif ~ischar(gs_options)
+            error('gs_options input argument must be a string or cell-array of strings');
+        else
+            gs_options = [' ' gs_options];
+        end
+    else
+        gs_options = '';
+    end
+    if nargin > 2 && strcmp(renderer, '-painters')
+        % First try to print directly to tif file
+        try
+            % Print the file into a temporary TIF file and read it into array A
+            [A, err, ex] = read_tif_img(fig, res_str, renderer, tmp_nam);
+            if err, rethrow(ex); end
+        catch  % error - try to print to EPS and then using Ghostscript to TIF
+            % Print to eps file
+            if isTempDirOk
+                tmp_eps = [tempname '.eps'];
+            else
+                tmp_eps = fullfile(fpath,[fname '.eps']);
+            end
+            print2eps(tmp_eps, fig, 0, renderer, '-loose');
+            try
+                % Initialize the command to export to tiff using ghostscript
+                cmd_str = ['-dEPSCrop -q -dNOPAUSE -dBATCH ' res_str ' -sDEVICE=tiff24nc'];
+                % Set the font path
+                fp = font_path();
+                if ~isempty(fp)
+                    cmd_str = [cmd_str ' -sFONTPATH="' fp '"'];
+                end
+                % Add the filenames
+                cmd_str = [cmd_str ' -sOutputFile="' tmp_nam '" "' tmp_eps '"' gs_options];
+                % Execute the ghostscript command
+                ghostscript(cmd_str);
+            catch me
+                % Delete the intermediate file
+                delete(tmp_eps);
+                rethrow(me);
+            end
+            % Delete the intermediate file
+            delete(tmp_eps);
+            % Read in the generated bitmap
+            A = imread(tmp_nam);
+            % Delete the temporary bitmap file
+            delete(tmp_nam);
+        end
+        % Set border pixels to the correct colour
+        if isequal(bcol, 'none')
+            bcol = [];
+        elseif isequal(bcol, [1 1 1])
+            bcol = uint8([255 255 255]);
+        else
+            for l = 1:size(A, 2)
+                if ~all(reshape(A(:,l,:) == 255, [], 1))
+                    break;
+                end
+            end
+            for r = size(A, 2):-1:l
+                if ~all(reshape(A(:,r,:) == 255, [], 1))
+                    break;
+                end
+            end
+            for t = 1:size(A, 1)
+                if ~all(reshape(A(t,:,:) == 255, [], 1))
+                    break;
+                end
+            end
+            for b = size(A, 1):-1:t
+                if ~all(reshape(A(b,:,:) == 255, [], 1))
+                    break;
+                end
+            end
+            bcol = uint8(median(single([reshape(A(:,[l r],:), [], size(A, 3)); reshape(A([t b],:,:), [], size(A, 3))]), 1));
+            for c = 1:size(A, 3)
+                A(:,[1:l-1, r+1:end],c) = bcol(c);
+                A([1:t-1, b+1:end],:,c) = bcol(c);
+            end
+        end
+    else
+        if nargin < 3
+            renderer = '-opengl';
+        end
+        % Print the file into a temporary TIF file and read it into array A
+        [A, err, ex] = read_tif_img(fig, res_str, renderer, tmp_nam);
+        % Throw any error that occurred
+        if err
+            % Display suggested workarounds to internal print() error (issue #16)
+            fprintf(2, 'An error occured with Matlab''s builtin print function.\nTry setting the figure Renderer to ''painters'' or use opengl(''software'').\n\n');
+            rethrow(ex);
+        end
+        % Set the background color
+        if isequal(bcol, 'none')
+            bcol = [];
+        else
+            bcol = bcol * 255;
+            if isequal(bcol, round(bcol))
+                bcol = uint8(bcol);
+            else
+                bcol = squeeze(A(1,1,:));
+            end
+        end
+    end
+    % Check the output size is correct
+    if isequal(res, round(res))
+        px = round([px([4 3])*res 3]);  % round() to avoid an indexing warning below
+        if ~isequal(size(A), px)
+            % Correct the output size
+            A = A(1:min(end,px(1)),1:min(end,px(2)),:);
+        end
+    end
+end
+
+% Function to create a TIF image of the figure and read it into an array
+function [A, err, ex] = read_tif_img(fig, res_str, renderer, tmp_nam)
+    A =  [];  % fix for issue #254
+    err = false;
+    ex = [];
+    % Temporarily set the paper size
+    old_pos_mode    = get(fig, 'PaperPositionMode');
+    old_orientation = get(fig, 'PaperOrientation');
+    set(fig, 'PaperPositionMode','auto', 'PaperOrientation','portrait');
+    try
+        % Workaround for issue #69: patches with LineWidth==0.75 appear wide (internal bug in Matlab's print() function)
+        fp = [];  % in case we get an error below
+        fp = findall(fig, 'Type','patch', 'LineWidth',0.75);
+        set(fp, 'LineWidth',0.5);
+        % Fix issue #83: use numeric handles in HG1
+        if ~using_hg2(fig),  fig = double(fig);  end
+        % Print to tiff file
+        print(fig, renderer, res_str, '-dtiff', tmp_nam);
+        % Read in the printed file
+        A = imread(tmp_nam);
+        % Delete the temporary file
+        delete(tmp_nam);
+    catch ex
+        err = true;
+    end
+    set(fp, 'LineWidth',0.75);  % restore original figure appearance
+    % Reset the paper size
+    set(fig, 'PaperPositionMode',old_pos_mode, 'PaperOrientation',old_orientation);
+end
+
+% Function to return (and create, where necessary) the font path
+function fp = font_path()
+    fp = user_string('gs_font_path');
+    if ~isempty(fp)
+        return
+    end
+    % Create the path
+    % Start with the default path
+    fp = getenv('GS_FONTPATH');
+    % Add on the typical directories for a given OS
+    if ispc
+        if ~isempty(fp)
+            fp = [fp ';'];
+        end
+        fp = [fp getenv('WINDIR') filesep 'Fonts'];
+    else
+        if ~isempty(fp)
+            fp = [fp ':'];
+        end
+        fp = [fp '/usr/share/fonts:/usr/local/share/fonts:/usr/share/fonts/X11:/usr/local/share/fonts/X11:/usr/share/fonts/truetype:/usr/local/share/fonts/truetype'];
+    end
+    user_string('gs_font_path', fp);
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/print2eps.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/print2eps.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/print2eps.m	(revision 27955)
@@ -0,0 +1,638 @@
+function print2eps(name, fig, export_options, varargin)
+%PRINT2EPS  Prints figures to eps with improved line styles
+%
+% Examples:
+%   print2eps filename
+%   print2eps(filename, fig_handle)
+%   print2eps(filename, fig_handle, export_options)
+%   print2eps(filename, fig_handle, export_options, print_options)
+%
+% This function saves a figure as an eps file, with two improvements over
+% MATLAB's print command. First, it improves the line style, making dashed
+% lines more like those on screen and giving grid lines a dotted line style.
+% Secondly, it substitutes original font names back into the eps file,
+% where these have been changed by MATLAB, for up to 11 different fonts.
+%
+% Inputs:
+%   filename - string containing the name (optionally including full or
+%              relative path) of the file the figure is to be saved as. A
+%              ".eps" extension is added if not there already. If a path is
+%              not specified, the figure is saved in the current directory.
+%   fig_handle - The handle of the figure to be saved. Default: gcf().
+%   export_options - array or struct of optional scalar values:
+%       bb_padding - Scalar value of amount of padding to add to border around
+%                    the cropped image, in points (if >1) or percent (if <1).
+%                    Can be negative as well as positive; Default: 0
+%       crop       - Cropping flag. Deafult: 0
+%       fontswap   - Whether to swap non-default fonts in figure. Default: true
+%       preserve_size - Whether to preserve the figure's PaperSize. Default: false
+%       font_space - Character used to separate font-name terms in the EPS output
+%                    e.g. "Courier New" => "Courier-New". Default: ''
+%                    (available only via the struct alternative)
+%       renderer   - Renderer used to generate bounding-box. Default: 'opengl'
+%                    (available only via the struct alternative)
+%       crop_amounts - 4-element vector of crop amounts: [top,right,bottom,left]
+%                    (available only via the struct alternative)
+%   print_options - Additional parameter strings to be passed to the print command
+
+%{
+% Copyright (C) Oliver Woodford 2008-2014, Yair Altman 2015-
+
+% The idea of editing the EPS file to change line styles comes from Jiro
+% Doke's FIXPSLINESTYLE (fex id: 17928)
+% The idea of changing dash length with line width came from comments on
+% fex id: 5743, but the implementation is mine :)
+%}
+%{
+% 14/11/11: Fix a MATLAB bug rendering black or white text incorrectly.
+%           Thanks to Mathieu Morlighem for reporting the issue and
+%           obtaining a fix from TMW.
+% 08/12/11: Added ability to correct fonts. Several people have requested
+%           this at one time or another, and also pointed me to printeps
+%           (fex id: 7501), so thank you to them. My implementation (which
+%           was not inspired by printeps - I'd already had the idea for my
+%           approach) goes slightly further in that it allows multiple
+%           fonts to be swapped.
+% 14/12/11: Fix bug affecting font names containing spaces. Thanks to David
+%           Szwer for reporting the issue.
+% 25/01/12: Add a font not to be swapped. Thanks to Anna Rafferty and Adam
+%           Jackson for reporting the issue. Also fix a bug whereby using a
+%           font alias can lead to another font being swapped in.
+% 10/04/12: Make the font swapping case insensitive.
+% 26/10/12: Set PaperOrientation to portrait. Thanks to Michael Watts for
+%           reporting the issue.
+% 26/10/12: Fix issue to do with swapping fonts changing other fonts and
+%           sizes we don't want, due to listeners. Thanks to Malcolm Hudson
+%           for reporting the issue.
+% 22/03/13: Extend font swapping to axes labels. Thanks to Rasmus Ischebeck
+%           for reporting the issue.
+% 23/07/13: Bug fix to font swapping. Thanks to George for reporting the
+%           issue.
+% 13/08/13: Fix MATLAB feature of not exporting white lines correctly.
+%           Thanks to Sebastian Hesslinger for reporting it.
+% 24/02/15: Fix for Matlab R2014b bug (issue #31): LineWidths<0.75 are not
+%           set in the EPS (default line width is used)
+% 25/02/15: Fixed issue #32: BoundingBox problem caused uncropped EPS/PDF files
+% 05/03/15: Fixed issue #43: Inability to perform EPS file post-processing
+% 06/03/15: Improved image padding & cropping thanks to Oscar Hartogensis
+% 21/03/15: Fixed edge-case of missing handles having a 'FontName' property
+% 26/03/15: Attempt to fix issue #45: white lines in subplots do not print correctly
+% 27/03/15: Attempt to fix issue #44: white artifact lines appearing in patch exports
+% 30/03/15: Fixed issue #52: improved performance on HG2 (R2014b+)
+% 09/04/15: Comment blocks consolidation and minor code cleanup (no real code change)
+% 12/04/15: Fixed issue #56: bad cropping
+% 14/04/15: Workaround for issue #45: lines in image subplots are exported in invalid color
+% 07/07/15: Added option to avoid font-swapping in EPS/PDF
+% 07/07/15: Fixed issue #83: use numeric handles in HG1
+% 22/07/15: Fixed issue #91 (thanks to Carlos Moffat)
+% 28/09/15: Fixed issue #108 (thanks to JacobD10)
+% 01/11/15: Fixed issue #112: optional renderer for bounding-box computation (thanks to Jesús Pestana Puerta)
+% 21/02/16: Enabled specifying non-automated crop amounts
+% 22/02/16: Better support + backward compatibility for transparency (issue #108)
+% 10/06/16: Fixed issue #159: text handles get cleared by Matlab in the print() command
+% 12/06/16: Improved the fix for issue #159 (in the previous commit)
+% 12/06/16: Fixed issue #158: transparent patch color in PDF/EPS
+% 18/09/17: Fixed issue #194: incorrect fonts in EPS/PDF output
+% 18/09/17: Fixed issue #195: relaxed too-tight cropping in EPS/PDF
+% 14/11/17: Workaround for issue #211: dashed/dotted lines in 3D axes appear solid
+% 15/11/17: Updated issue #211: only set SortMethod='ChildOrder' in HG2, and when it looks the same onscreen; support multiple figure axes
+% 18/11/17: Fixed issue #225: transparent/translucent dashed/dotted lines appear solid in EPS/PDF
+% 24/03/18: Fixed issue #239: black title meshes with temporary black background figure bgcolor, causing bad cropping
+% 21/03/19: Improvement for issue #258: missing fonts in output EPS/PDF (still *NOT* fully solved)
+% 21/03/19: Fixed issues #166,#251: Arial font is no longer replaced with Helvetica but rather treated as a non-standard user font
+% 14/05/19: Made Helvetica the top default font-swap, replacing Courier
+% 12/06/19: Issue #277: Enabled preservation of figure's PaperSize in output PDF/EPS file
+% 06/08/19: Issue #281: only fix patch/textbox color if it's not opaque
+%}
+
+    options = {'-loose'};
+    if nargin > 3
+        options = [options varargin];
+    elseif nargin < 3
+        export_options = 0;
+        if nargin < 2
+            fig = gcf();
+        end
+    end
+
+    % Retrieve padding, crop & font-swap values
+    crop_amounts = nan(1,4);  % auto-crop all 4 sides by default
+    if isstruct(export_options)
+        try preserve_size = export_options.preserve_size; catch, preserve_size = false; end
+        try fontswap      = export_options.fontswap;      catch, fontswap = true;       end
+        try font_space    = export_options.font_space;    catch, font_space = '';       end
+        font_space(2:end) = '';
+        try bb_crop       = export_options.crop;          catch, bb_crop = 0;           end
+        try crop_amounts  = export_options.crop_amounts;  catch,                        end
+        try bb_padding    = export_options.bb_padding;    catch, bb_padding = 0;        end
+        try renderer      = export_options.rendererStr;   catch, renderer = 'opengl';   end  % fix for issue #110
+        if renderer(1)~='-',  renderer = ['-' renderer];  end
+    else
+        if numel(export_options) > 3  % preserve_size
+            preserve_size = export_options(4);
+        else
+            preserve_size = false;
+        end
+        if numel(export_options) > 2  % font-swapping
+            fontswap = export_options(3);
+        else
+            fontswap = true;
+        end
+        if numel(export_options) > 1  % cropping
+            bb_crop = export_options(2);
+        else
+            bb_crop = 0;  % scalar value, so use default bb_crop value of 0
+        end
+        if numel(export_options) > 0  % padding
+            bb_padding = export_options(1);
+        else
+            bb_padding = 0;
+        end
+        renderer = '-opengl';
+        font_space = '';
+    end
+
+    % Construct the filename
+    if numel(name) < 5 || ~strcmpi(name(end-3:end), '.eps')
+        name = [name '.eps']; % Add the missing extension
+    end
+
+    % Set paper size
+    old_pos_mode    = get(fig, 'PaperPositionMode');
+    old_orientation = get(fig, 'PaperOrientation');
+    old_paper_units = get(fig, 'PaperUnits');
+    set(fig, 'PaperPositionMode','auto', 'PaperOrientation','portrait', 'PaperUnits','points');
+
+    % Find all the used fonts in the figure
+    font_handles = findall(fig, '-property', 'FontName');
+    fonts = get(font_handles, 'FontName');
+    if isempty(fonts)
+        fonts = {};
+    elseif ~iscell(fonts)
+        fonts = {fonts};
+    end
+
+    % Map supported font aliases onto the correct name
+    fontsl = lower(fonts);
+    for a = 1:numel(fonts)
+        f = fontsl{a};
+        f(f==' ') = [];
+        switch f
+            case {'times', 'timesnewroman', 'times-roman'}
+                fontsl{a} = 'times';
+            %case {'arial', 'helvetica'}  % issues #166, #251
+            %    fontsl{a} = 'helvetica';
+            case {'newcenturyschoolbook', 'newcenturyschlbk'}
+                fontsl{a} = 'newcenturyschlbk';
+            otherwise
+        end
+    end
+    fontslu = unique(fontsl);
+
+    % Determine the font swap table
+    if fontswap
+        % Issue #258: Rearrange standard fonts list based on decending "problematicness"
+        % The issue is still *NOT* fully solved because I cannot figure out how to force
+        % the EPS postscript engine to look for the user's font on disk
+        % Also see: https://stat.ethz.ch/pipermail/r-help/2005-January/064374.html
+        matlab_fonts = {'Helvetica', 'Times', 'Courier', 'Symbol', 'ZapfDingbats', ...
+                        'Palatino', 'Bookman', 'ZapfChancery', 'AvantGarde', ...
+                        'NewCenturySchlbk', 'Helvetica-Narrow'};
+        matlab_fontsl = lower(matlab_fonts);
+        require_swap = find(~ismember(fontslu, matlab_fontsl));
+        unused_fonts = find(~ismember(matlab_fontsl, fontslu));
+        font_swap = cell(3, min(numel(require_swap), numel(unused_fonts)));
+        fonts_new = fonts;
+        for a = 1:size(font_swap, 2)
+            font_swap{1,a} = find(strcmp(fontslu{require_swap(a)}, fontsl));
+            font_swap{2,a} = matlab_fonts{unused_fonts(a)};
+            font_swap{3,a} = fonts{font_swap{1,a}(1)};
+            fonts_new(font_swap{1,a}) = font_swap(2,a);
+        end
+    else
+        font_swap = [];
+    end
+
+    % Swap the fonts
+    if ~isempty(font_swap)
+        fonts_size = get(font_handles, 'FontSize');
+        if iscell(fonts_size)
+            fonts_size = cell2mat(fonts_size);
+        end
+        M = false(size(font_handles));
+
+        % Loop because some changes may not stick first time, due to listeners
+        c = 0;
+        update = zeros(1000, 1);
+        for b = 1:10 % Limit number of loops to avoid infinite loop case
+            for a = 1:numel(M)
+                M(a) = ~isequal(get(font_handles(a), 'FontName'), fonts_new{a}) || ~isequal(get(font_handles(a), 'FontSize'), fonts_size(a));
+                if M(a)
+                    set(font_handles(a), 'FontName', fonts_new{a}, 'FontSize', fonts_size(a));
+                    c = c + 1;
+                    update(c) = a;
+                end
+            end
+            if ~any(M)
+                break;
+            end
+        end
+
+        % Compute the order to revert fonts later, without the need of a loop
+        [update, M] = unique(update(1:c));
+        [dummy, M] = sort(M); %#ok<ASGLU>
+        update = reshape(update(M), 1, []);
+    end
+
+    % MATLAB bug fix - black and white text can come out inverted sometimes
+    % Find the white and black text
+    black_text_handles = findall(fig, 'Type', 'text', 'Color', [0 0 0]);
+    white_text_handles = findall(fig, 'Type', 'text', 'Color', [1 1 1]);
+    % Set the font colors slightly off their correct values
+    set(black_text_handles, 'Color', [0 0 0] + eps);
+    set(white_text_handles, 'Color', [1 1 1] - eps);
+
+    % MATLAB bug fix - white lines can come out funny sometimes
+    % Find the white lines
+    white_line_handles = findall(fig, 'Type', 'line', 'Color', [1 1 1]);
+    % Set the line color slightly off white
+    set(white_line_handles, 'Color', [1 1 1] - 0.00001);
+
+    % MATLAB bug fix (issue #211): dashed/dotted lines in 3D axes appear solid
+    % Note: this "may limit other functionality in plotting such as hidden line/surface removal"
+    % reference: Technical Support Case #02838114, https://mail.google.com/mail/u/0/#inbox/15fb7659f70e7bd8
+    hAxes = findall(fig, 'Type', 'axes');
+    if using_hg2 && ~isempty(hAxes)  % issue #211 presumably happens only in HG2, not HG1
+        try
+            % If there are any axes using SortMethod~='ChildOrder'
+            oldSortMethods = get(hAxes,{'SortMethod'});  % use {'SortMethod'} to ensure we get a cell array, even for single axes
+            if any(~strcmpi('ChildOrder',oldSortMethods))  % i.e., any oldSortMethods=='depth'
+                % Check if the axes look visually different onscreen when SortMethod='ChildOrder'
+                imgBefore = print2array(fig);
+                set(hAxes,'SortMethod','ChildOrder');
+                imgAfter  = print2array(fig);
+                if isequal(imgBefore, imgAfter)
+                    % They look the same, so use SortMethod='ChildOrder' when generating the EPS
+                else
+                    % They look different, so revert SortMethod and issue a warning message
+                    warning('YMA:export_fig:issue211', ...
+                            ['You seem to be using axes that have overlapping/hidden graphic elements. ' 10 ...
+                             'Setting axes.SortMethod=''ChildOrder'' may solve potential problems in EPS/PDF export. ' 10 ...
+                             'Additional info: https://github.com/altmany/export_fig/issues/211'])
+                    set(hAxes,{'SortMethod'},oldSortMethods);
+                end
+            end
+        catch err
+            % ignore
+            a=err;  %#ok<NASGU> % debug breakpoint
+        end
+    end
+
+    % Workaround for issue #45: lines in image subplots are exported in invalid color
+    % In this case the -depsc driver solves the problem, but then all the other workarounds
+    % below (for all the other issues) will fail, so it's better to let the user decide by
+    % just issuing a warning and accepting the '-depsc' input parameter
+    epsLevel2 = ~any(strcmpi(options,'-depsc'));
+    if epsLevel2
+        % Use -depsc2 (EPS color level-2) if -depsc (EPS color level-3) was not specifically requested
+        options{end+1} = '-depsc2';
+        % Issue a warning if multiple images & lines were found in the figure, and HG1 with painters renderer is used
+        isPainters = any(strcmpi(options,'-painters'));
+        if isPainters && ~using_hg2 && numel(findall(fig,'Type','image'))>1 && ~isempty(findall(fig,'Type','line'))
+            warning('YMA:export_fig:issue45', ...
+                    ['Multiple images & lines detected. In such cases, the lines might \n' ...
+                     'appear with an invalid color due to an internal MATLAB bug (fixed in R2014b). \n' ...
+                     'Possible workaround: add a ''-depsc'' or ''-opengl'' parameter to the export_fig command.']);
+        end
+    end
+
+    % Fix issue #83: use numeric handles in HG1
+    if ~using_hg2(fig),  fig = double(fig);  end
+
+    % Workaround for when transparency is lost through conversion fig>EPS>PDF (issue #108)
+    % Replace transparent patch RGB values with an ID value (rare chance that ID color is being used already)
+    if using_hg2
+        origAlphaColors = eps_maintainAlpha(fig);
+    end
+
+    % Print to eps file
+    print(fig, options{:}, name);
+
+    % Restore the original axes SortMethods (if updated)
+    try set(hAxes,{'SortMethod'},oldSortMethods); catch, end
+
+    % Do post-processing on the eps file
+    try
+        % Read the EPS file into memory
+        fstrm = read_write_entire_textfile(name);
+    catch
+        fstrm = '';
+    end
+
+    % Restore colors for transparent patches/lines and apply the
+    % setopacityalpha setting in the EPS file (issue #108)
+    if using_hg2
+        [~,fstrm,foundFlags] = eps_maintainAlpha(fig, fstrm, origAlphaColors);
+
+        % If some of the transparencies were not found in the EPS file, then rerun the
+        % export with only the found transparencies modified (backward compatibility)
+        if ~isempty(fstrm) && ~all(foundFlags)
+            foundIdx = find(foundFlags);
+            for objIdx = 1 : sum(foundFlags)
+                colorsIdx = foundIdx(objIdx);
+                colorsData = origAlphaColors{colorsIdx};
+                hObj     = colorsData{1};
+                propName = colorsData{2};
+                newColor = colorsData{4};
+                hObj.(propName).ColorData = newColor;
+            end
+            delete(name);
+            print(fig, options{:}, name);
+            fstrm = read_write_entire_textfile(name);
+            [~,fstrm] = eps_maintainAlpha(fig, fstrm, origAlphaColors(foundFlags));
+        end
+    end
+
+    % Bail out if EPS post-processing is not possible
+    if isempty(fstrm)
+        warning('Loading EPS file failed, so unable to perform post-processing. This is usually because the figure contains a large number of patch objects. Consider exporting to a bitmap format in this case.');
+        return
+    end
+
+    % Fix for Matlab R2014b bug (issue #31): LineWidths<0.75 are not set in the EPS (default line width is used)
+    try
+        if using_hg2(fig)
+            % Convert miter joins to line joins
+            %fstrm = regexprep(fstrm, '\n10.0 ML\n', '\n1 LJ\n');
+            % This is faster (the original regexprep could take many seconds when the axes contains many lines):
+            fstrm = strrep(fstrm, sprintf('\n10.0 ML\n'), sprintf('\n1 LJ\n'));
+
+            % In HG2, grid lines and axes Ruler Axles have a default LineWidth of 0.5 => replace en-bulk (assume that 1.0 LineWidth = 1.333 LW)
+            %   hAxes=gca; hAxes.YGridHandle.LineWidth, hAxes.YRuler.Axle.LineWidth
+            %fstrm = regexprep(fstrm, '(GC\n2 setlinecap\n1 LJ)\nN', '$1\n0.667 LW\nN');
+            % This is faster:
+            fstrm = strrep(fstrm, sprintf('GC\n2 setlinecap\n1 LJ\nN'), sprintf('GC\n2 setlinecap\n1 LJ\n0.667 LW\nN'));
+
+            % This is more accurate but *MUCH* slower (issue #52)
+            %{
+            % Modify all thin lines in the figure to have 10x LineWidths
+            hLines = findall(fig,'Type','line');
+            hThinLines = [];
+            for lineIdx = 1 : numel(hLines)
+                thisLine = hLines(lineIdx);
+                if thisLine.LineWidth < 0.75 && strcmpi(thisLine.Visible,'on')
+                    hThinLines(end+1) = thisLine; %#ok<AGROW>
+                    thisLine.LineWidth = thisLine.LineWidth * 10;
+                end
+            end
+
+            % If any thin lines were found
+            if ~isempty(hThinLines)
+                % Prepare an EPS with large-enough line widths
+                print(fig, options{:}, name);
+                % Restore the original LineWidths in the figure
+                for lineIdx = 1 : numel(hThinLines)
+                    thisLine = handle(hThinLines(lineIdx));
+                    thisLine.LineWidth = thisLine.LineWidth / 10;
+                end
+
+                % Compare the original and the new EPS files and correct the original stream's LineWidths
+                fstrm_new = read_write_entire_textfile(name);
+                idx = 500;  % skip heading with its possibly-different timestamp
+                markerStr = sprintf('10.0 ML\nN');
+                markerLen = length(markerStr);
+                while ~isempty(idx) && idx < length(fstrm)
+                    lastIdx = min(length(fstrm), length(fstrm_new));
+                    delta = fstrm(idx+1:lastIdx) - fstrm_new(idx+1:lastIdx);
+                    idx = idx + find(delta,1);
+                    if ~isempty(idx) && ...
+                            isequal(fstrm(idx-markerLen+1:idx), markerStr) && ...
+                            ~isempty(regexp(fstrm_new(idx-markerLen+1:idx+12),'10.0 ML\n[\d\.]+ LW\nN')) %#ok<RGXP1>
+                        value = str2double(regexprep(fstrm_new(idx:idx+12),' .*',''));
+                        if isnan(value), break; end  % something's wrong... - bail out
+                        newStr = sprintf('%0.3f LW\n',value/10);
+                        fstrm = [fstrm(1:idx-1) newStr fstrm(idx:end)];
+                        idx = idx + 12;
+                    else
+                        break;
+                    end
+                end
+            end
+            %}
+
+            % This is much faster although less accurate: fix all non-gray lines to have a LineWidth of 0.75 (=1 LW)
+            % Note: This will give incorrect LineWidth of 075 for lines having LineWidth<0.75, as well as for non-gray grid-lines (if present)
+            %       However, in practice these edge-cases are very rare indeed, and the difference in LineWidth should not be noticeable
+            %fstrm = regexprep(fstrm, '([CR]C\n2 setlinecap\n1 LJ)\nN', '$1\n1 LW\nN');
+            % This is faster (the original regexprep could take many seconds when the axes contains many lines):
+            fstrm = strrep(fstrm, sprintf('\n2 setlinecap\n1 LJ\nN'), sprintf('\n2 setlinecap\n1 LJ\n1 LW\nN'));
+        end
+    catch err
+        fprintf(2, 'Error fixing LineWidths in EPS file: %s\n at %s:%d\n', err.message, err.stack(1).file, err.stack(1).line);
+    end
+
+    % Reset the font and line colors
+    try
+        set(black_text_handles, 'Color', [0 0 0]);
+        set(white_text_handles, 'Color', [1 1 1]);
+    catch
+        % Fix issue #159: redo findall() '*text_handles'
+        black_text_handles = findall(fig, 'Type', 'text', 'Color', [0 0 0]+eps);
+        white_text_handles = findall(fig, 'Type', 'text', 'Color', [1 1 1]-eps);
+        set(black_text_handles, 'Color', [0 0 0]);
+        set(white_text_handles, 'Color', [1 1 1]);
+    end
+    set(white_line_handles, 'Color', [1 1 1]);
+
+    % Preserve the figure's PaperSize in the output file, if requested (issue #277)
+    if preserve_size
+        % https://stackoverflow.com/questions/19646329/postscript-document-size
+        paper_size = get(fig, 'PaperSize');  % in [points]
+        fstrm = sprintf('<< /PageSize [%d %d] >> setpagedevice\n%s', paper_size, fstrm);
+    end
+
+    % Reset paper size
+    set(fig, 'PaperPositionMode',old_pos_mode, 'PaperOrientation',old_orientation, 'PaperUnits',old_paper_units);
+
+    % Reset the font names in the figure
+    if ~isempty(font_swap)
+        for a = update
+            set(font_handles(a), 'FontName', fonts{a}, 'FontSize', fonts_size(a));
+        end
+    end
+
+    % Replace the font names
+    if ~isempty(font_swap)
+        for a = 1:size(font_swap, 2)
+            fontName = font_swap{3,a};
+            %fontName = fontName(~isspace(font_swap{3,a}));
+            if length(fontName) > 29
+                warning('YMA:export_fig:font_name','Font name ''%s'' is longer than 29 characters. This might cause problems in some EPS/PDF readers. Consider using a different font.',fontName);
+            end
+            if isempty(font_space)
+                fontName(fontName==' ') = '';
+            else
+                fontName(fontName==' ') = char(font_space);
+            end
+
+            % Replace all instances of the standard Matlab fonts with the original user's font names
+            %fstrm = regexprep(fstrm, [font_swap{1,a} '-?[a-zA-Z]*\>'], fontName);
+            %fstrm = regexprep(fstrm, [font_swap{2,a} '([ \n])'], [fontName '$1']);
+            %fstrm = regexprep(fstrm, font_swap{2,a}, fontName);  % also replace -Bold, -Italic, -BoldItalic
+
+            % Times-Roman's Bold/Italic fontnames don't include '-Roman'
+            fstrm = regexprep(fstrm, [font_swap{2,a} '(\-Roman)?'], fontName);
+        end
+    end
+
+    % Move the bounding box to the top of the file (HG2 only), or fix the line styles (HG1 only)
+    if using_hg2(fig)
+        % Move the bounding box to the top of the file (HG2 only)
+        [s, e] = regexp(fstrm, '%%BoundingBox: [^%]*%%');
+        if numel(s) == 2
+            fstrm = fstrm([1:s(1)-1 s(2):e(2)-2 e(1)-1:s(2)-1 e(2)-1:end]);
+        end
+    else
+        % Fix the line styles (HG1 only)
+        fstrm = fix_lines(fstrm);
+    end
+
+    % Apply the bounding box padding & cropping, replacing Matlab's print()'s bounding box
+    if bb_crop
+        % Calculate a new bounding box based on a bitmap print using crop_border.m
+        % 1. Determine the Matlab BoundingBox and PageBoundingBox
+        [s,e] = regexp(fstrm, '%%BoundingBox: [^%]*%%'); % location BB in eps file
+        if numel(s)==2, s=s(2); e=e(2); end
+        aa = fstrm(s+15:e-3); % dimensions bb - STEP1
+        bb_matlab = cell2mat(textscan(aa,'%f32%f32%f32%f32'));  % dimensions bb - STEP2
+
+        [s,e] = regexp(fstrm, '%%PageBoundingBox: [^%]*%%'); % location bb in eps file
+        if numel(s)==2, s=s(2); e=e(2); end
+        aa = fstrm(s+19:e-3); % dimensions bb - STEP1
+        pagebb_matlab = cell2mat(textscan(aa,'%f32%f32%f32%f32'));  % dimensions bb - STEP2
+
+        % 1b. Fix issue #239: black title meshes with temporary black background figure bgcolor, causing bad cropping
+        hTitles = [];
+        if isequal(get(fig,'Color'),'none')
+            hAxes = findall(fig,'type','axes');
+            for idx = 1 : numel(hAxes)
+                hAx = hAxes(idx);
+                try
+                    hTitle = hAx.Title;
+                    oldColor = hTitle.Color;
+                    if all(oldColor < 5*eps) || (ischar(oldColor) && lower(oldColor(1))=='k')
+                        hTitles(end+1) = hTitle; %#ok<AGROW>
+                        hTitle.Color = [0,0,.01];
+                    end
+                catch
+                end
+            end
+        end
+
+        % 2. Create a bitmap image and use crop_borders to create the relative
+        %    bb with respect to the PageBoundingBox
+        [A, bcol] = print2array(fig, 1, renderer);
+        [aa, aa, aa, bb_rel] = crop_borders(A, bcol, bb_padding, crop_amounts); %#ok<ASGLU>
+
+        try set(hTitles,'Color','k'); catch, end
+
+        % 3. Calculate the new Bounding Box
+        pagew = pagebb_matlab(3)-pagebb_matlab(1);
+        pageh = pagebb_matlab(4)-pagebb_matlab(2);
+        %bb_new = [pagebb_matlab(1)+pagew*bb_rel(1) pagebb_matlab(2)+pageh*bb_rel(2) ...
+        %          pagebb_matlab(1)+pagew*bb_rel(3) pagebb_matlab(2)+pageh*bb_rel(4)];
+        bb_new = pagebb_matlab([1,2,1,2]) + [pagew,pageh,pagew,pageh].*bb_rel;  % clearer
+        bb_offset = (bb_new-bb_matlab) + [-2,-2,2,2];  % 2px margin so that cropping is not TOO tight (issue #195)
+
+        % Apply the bounding box padding
+        if bb_padding
+            if abs(bb_padding)<1
+                bb_padding = round((mean([bb_new(3)-bb_new(1) bb_new(4)-bb_new(2)])*bb_padding)/0.5)*0.5; % ADJUST BB_PADDING
+            end
+            add_padding = @(n1, n2, n3, n4) sprintf(' %.0f', str2double({n1, n2, n3, n4}) + bb_offset + bb_padding*[-1,-1,1,1]); %#ok<NASGU>
+        else
+            add_padding = @(n1, n2, n3, n4) sprintf(' %.0f', str2double({n1, n2, n3, n4}) + bb_offset); %#ok<NASGU> % fix small but noticeable bounding box shift
+        end
+        fstrm = regexprep(fstrm, '%%BoundingBox:[ ]+([-]?\d+)[ ]+([-]?\d+)[ ]+([-]?\d+)[ ]+([-]?\d+)', '%%BoundingBox:${add_padding($1, $2, $3, $4)}');
+    end
+
+    % Fix issue #44: white artifact lines appearing in patch exports
+    % Note: the problem is due to the fact that Matlab's print() function exports patches
+    %       as a combination of filled triangles, and a white line appears where the triangles touch
+    % In the workaround below, we will modify such dual-triangles into a filled rectangle.
+    % We are careful to only modify regexps that exactly match specific patterns - it's better to not
+    % correct some white-line artifacts than to change the geometry of a patch, or to corrupt the EPS.
+    %   e.g.: '0 -450 937 0 0 450 3 MP PP 937 0 0 -450 0 450 3 MP PP' => '0 -450 937 0 0 450 0 0 4 MP'
+    fstrm = regexprep(fstrm, '\n([-\d.]+ [-\d.]+) ([-\d.]+ [-\d.]+) ([-\d.]+ [-\d.]+) 3 MP\nPP\n\2 \1 \3 3 MP\nPP\n','\n$1 $2 $3 0 0 4 MP\nPP\n');
+    fstrm = regexprep(fstrm, '\n([-\d.]+ [-\d.]+) ([-\d.]+ [-\d.]+) ([-\d.]+ [-\d.]+) 3 MP\nPP\n\2 \3 \1 3 MP\nPP\n','\n$1 $2 $3 0 0 4 MP\nPP\n');
+    fstrm = regexprep(fstrm, '\n([-\d.]+ [-\d.]+) ([-\d.]+ [-\d.]+) ([-\d.]+ [-\d.]+) 3 MP\nPP\n\3 \1 \2 3 MP\nPP\n','\n$1 $2 $3 0 0 4 MP\nPP\n');
+    fstrm = regexprep(fstrm, '\n([-\d.]+ [-\d.]+) ([-\d.]+ [-\d.]+) ([-\d.]+ [-\d.]+) 3 MP\nPP\n\3 \2 \1 3 MP\nPP\n','\n$1 $2 $3 0 0 4 MP\nPP\n');
+
+    % Write out the fixed eps file
+    read_write_entire_textfile(name, fstrm);
+end
+
+function [StoredColors, fstrm, foundFlags] = eps_maintainAlpha(fig, fstrm, StoredColors)
+    if nargin == 1  % in: convert transparency in Matlab figure into unique RGB colors
+        hObjs = findall(fig); %findobj(fig,'Type','Area');
+        StoredColors = {};
+        propNames = {'Face','Edge'};
+        for objIdx = 1:length(hObjs)
+            hObj = hObjs(objIdx);
+            for propIdx = 1 : numel(propNames)
+                try
+                    propName = propNames{propIdx};
+                    if strcmp(hObj.(propName).ColorType, 'truecoloralpha')
+                        oldColor = hObj.(propName).ColorData;
+                        if numel(oldColor)>3 && oldColor(4)~=255  % issue #281: only fix patch/textbox color if it's not opaque
+                            nColors = length(StoredColors);
+                            newColor = uint8([101; 102+floor(nColors/255); mod(nColors,255); 255]);
+                            StoredColors{end+1} = {hObj, propName, oldColor, newColor}; %#ok<AGROW>
+                            hObj.(propName).ColorData = newColor;
+                        end
+                    end
+                catch
+                    % Never mind - ignore (either doesn't have the property or cannot change it)
+                end
+            end
+        end
+    else  % restore transparency in Matlab figure by converting back from the unique RGBs
+        %Find the transparent patches
+        wasError = false;
+        nColors = length(StoredColors);
+        foundFlags = false(1,nColors);
+        for objIdx = 1 : nColors
+            colorsData = StoredColors{objIdx};
+            hObj      = colorsData{1};
+            propName  = colorsData{2};
+            origColor = colorsData{3};
+            newColor  = colorsData{4};
+            try
+                %Restore the EPS files patch color
+                colorID   = num2str(round(double(newColor(1:3)') /255,3),'%.3g %.3g %.3g'); %ID for searching
+                origRGB   = num2str(round(double(origColor(1:3)')/255,3),'%.3g %.3g %.3g'); %Replace with original color
+                origAlpha = num2str(round(double(origColor(end)) /255,3),'%.3g'); %Convert alpha value for EPS
+
+                %Find and replace the RGBA values within the EPS text fstrm
+                if strcmpi(propName,'Face')
+                    oldStr = sprintf(['\n' colorID ' RC\n']);  % ...N\n (removed to fix issue #225)
+                    newStr = sprintf(['\n' origRGB ' RC\n' origAlpha ' .setopacityalpha true\n']);  % ...N\n
+                else  %'Edge'
+                    oldStr = sprintf(['\n' colorID ' RC\n']);  % ...1 LJ\n (removed to fix issue #225)
+                    newStr = sprintf(['\n' origRGB ' RC\n' origAlpha ' .setopacityalpha true\n']);
+                end
+                foundFlags(objIdx) = ~isempty(strfind(fstrm, oldStr)); %#ok<STREMP>
+                fstrm = strrep(fstrm, oldStr, newStr);
+
+                %Restore the figure object's original color
+                hObj.(propName).ColorData = origColor;
+            catch err
+                % something is wrong - cannot restore transparent color...
+                if ~wasError
+                    fprintf(2, 'Error maintaining transparency in EPS file: %s\n at %s:%d\n', err.message, err.stack(1).file, err.stack(1).line);
+                    wasError = true;
+                end
+            end
+        end
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/read_write_entire_textfile.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/read_write_entire_textfile.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/read_write_entire_textfile.m	(revision 27955)
@@ -0,0 +1,37 @@
+%READ_WRITE_ENTIRE_TEXTFILE Read or write a whole text file to/from memory
+%
+% Read or write an entire text file to/from memory, without leaving the
+% file open if an error occurs.
+%
+% Reading:
+%   fstrm = read_write_entire_textfile(fname)
+% Writing:
+%   read_write_entire_textfile(fname, fstrm)
+%
+%IN:
+%   fname - Pathname of text file to be read in.
+%   fstrm - String to be written to the file, including carriage returns.
+%
+%OUT:
+%   fstrm - String read from the file. If an fstrm input is given the
+%           output is the same as that input. 
+
+function fstrm = read_write_entire_textfile(fname, fstrm)
+modes = {'rt', 'wt'};
+writing = nargin > 1;
+fh = fopen(fname, modes{1+writing});
+if fh == -1
+    error('Unable to open file %s.', fname);
+end
+try
+    if writing
+        fwrite(fh, fstrm, 'char*1');
+    else
+        fstrm = fread(fh, '*char')';
+    end
+catch ex
+    fclose(fh);
+    rethrow(ex);
+end
+fclose(fh);
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/user_string.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/user_string.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/user_string.m	(revision 27955)
@@ -0,0 +1,111 @@
+function string = user_string(string_name, string)
+%USER_STRING  Get/set a user specific string
+%
+% Examples:
+%   string  = user_string(string_name)
+%   isSaved = user_string(string_name, new_string)
+%
+% Function to get and set a string in a system or user specific file. This
+% enables, for example, system specific paths to binaries to be saved.
+%
+% The specified string will be saved in a file named <string_name>.txt,
+% either in a subfolder named .ignore under this file's folder, or in the
+% user's prefdir folder (in case this file's folder is non-writable).
+%
+% IN:
+%   string_name - String containing the name of the string required, which
+%                 sets the filename storing the string: <string_name>.txt
+%   new_string  - The new string to be saved in the <string_name>.txt file
+%
+% OUT:
+%   string  - The currently saved string. Default: ''
+%   isSaved - Boolean indicating whether the save was succesful
+
+% Copyright (C) Oliver Woodford 2011-2014, Yair Altman 2015-
+
+% This method of saving paths avoids changing .m files which might be in a
+% version control system. Instead it saves the user dependent paths in
+% separate files with a .txt extension, which need not be checked in to
+% the version control system. Thank you to Jonas Dorn for suggesting this
+% approach.
+
+% 10/01/2013 - Access files in text, not binary mode, as latter can cause
+%              errors. Thanks to Christian for pointing this out.
+% 29/05/2015 - Save file in prefdir if current folder is non-writable (issue #74)
+% 09/01/2018 - Fix issue #232: if the string looks like a file/folder path, ensure it actually exists
+
+    if ~ischar(string_name)
+        error('string_name must be a string.');
+    end
+    % Create the full filename
+    fname = [string_name '.txt'];
+    dname = fullfile(fileparts(mfilename('fullpath')), '.ignore');
+    file_name = fullfile(dname, fname);
+    if nargin > 1
+        % Set string
+        if ~ischar(string)
+            error('new_string must be a string.');
+        end
+        % Make sure the save directory exists
+        %dname = fileparts(file_name);
+        if ~exist(dname, 'dir')
+            % Create the directory
+            try
+                if ~mkdir(dname)
+                    string = false;
+                    return
+                end
+            catch
+                string = false;
+                return
+            end
+            % Make it hidden
+            try
+                fileattrib(dname, '+h');
+            catch
+            end
+        end
+        % Write the file
+        fid = fopen(file_name, 'wt');
+        if fid == -1
+            % file cannot be created/updated - use prefdir if file does not already exist
+            % (if file exists but is simply not writable, don't create a duplicate in prefdir)
+            if ~exist(file_name,'file')
+                file_name = fullfile(prefdir, fname);
+                fid = fopen(file_name, 'wt');
+            end
+            if fid == -1
+                string = false;
+                return;
+            end
+        end
+        try
+            fprintf(fid, '%s', string);
+        catch
+            fclose(fid);
+            string = false;
+            return
+        end
+        fclose(fid);
+        string = true;
+    else
+        % Get string
+        fid = fopen(file_name, 'rt');
+        if fid == -1
+            % file cannot be read, try to read the file in prefdir
+            file_name = fullfile(prefdir, fname);
+            fid = fopen(file_name, 'rt');
+            if fid == -1
+                string = '';
+                return
+            end
+        end
+        string = fgetl(fid);
+        fclose(fid);
+
+        % Fix issue #232: if the string looks like a file/folder path, ensure it actually exists
+        if ~isempty(string) && any(string=='\' | string=='/') && ~exist(string) %#ok<EXIST>
+            string = '';
+        end
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/using_hg2.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/using_hg2.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/export_fig/using_hg2.m	(revision 27955)
@@ -0,0 +1,36 @@
+%USING_HG2 Determine if the HG2 graphics engine is used
+%
+%   tf = using_hg2(fig)
+%
+%IN:
+%   fig - handle to the figure in question.
+%
+%OUT:
+%   tf - boolean indicating whether the HG2 graphics engine is being used
+%        (true) or not (false).
+
+% 19/06/2015 - Suppress warning in R2015b; cache result for improved performance
+% 06/06/2016 - Fixed issue #156 (bad return value in R2016b)
+
+function tf = using_hg2(fig)
+    persistent tf_cached
+    if isempty(tf_cached)
+        try
+            if nargin < 1,  fig = figure('visible','off');  end
+            oldWarn = warning('off','MATLAB:graphicsversion:GraphicsVersionRemoval');
+            try
+                % This generates a [supressed] warning in R2015b:
+                tf = ~graphicsversion(fig, 'handlegraphics');
+            catch
+                tf = ~verLessThan('matlab','8.4');  % =R2014b
+            end
+            warning(oldWarn);
+        catch
+            tf = false;
+        end
+        if nargin < 1,  delete(fig);  end
+        tf_cached = tf;
+    else
+        tf = tf_cached;
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/ffmpeg/install-macosx64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/ffmpeg/install-macosx64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/ffmpeg/install-macosx64.sh	(revision 27955)
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install ffmpeg-1.1.2
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/ffmpeg-1.1.2.tar.gz' 'ffmpeg-1.1.2.tar.gz'
+
+#Untar 
+tar -zxvf  ffmpeg-1.1.2.tar.gz
+
+#Move ffmpeg into src directory
+mv ffmpeg-1.1.2/* src
+rm -rf ffmpeg-1.1.2
+
+#Configure ffmpeg
+cd src
+
+export CFLAGS=" -arch x86_64"
+
+./configure --prefix="$ISSM_DIR/externalpackages/ffmpeg/install" --disable-yasm
+
+#Compile ffmpeg
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/findbugs/README
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/findbugs/README	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/findbugs/README	(revision 27955)
@@ -0,0 +1,2 @@
+Fingbugs for Java programs. 
+Downloaded from http://findbugs.sourceforge.net/downloads.html
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/findbugs/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/findbugs/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/findbugs/install.sh	(revision 27955)
@@ -0,0 +1,13 @@
+#!/bin/bash
+set -eu
+
+#Erase install
+rm -rf install  findbugs-1.3.9
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/findbugs-1.3.9.tar.gz' 'findbugs-1.3.9.tar.gz'
+tar -zxvf findbugs-1.3.9.tar.gz 
+
+mv findbugs-1.3.9/* install
+rm -rf findbugs-1.3.9
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/fisoc/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/fisoc/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/fisoc/install.sh	(revision 27955)
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+git clone https://github.com/RupertGladstone/FISOC.git 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/flaim/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/flaim/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/flaim/install.sh	(revision 27955)
@@ -0,0 +1,8 @@
+#!/bin/bash
+set -eu
+
+#Erase symlink
+rm -rf install
+
+#symlink to flaim directory
+ln -s /home/jschierm/flaim/svn/trunk ./install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/freetype/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/freetype/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/freetype/install.sh	(revision 27955)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf freetype-2.5.0
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/freetype-2.5.0.tar.gz' 'freetype-2.5.0.tar.gz'
+
+#Untar 
+tar -zxvf  freetype-2.5.0.tar.gz
+
+#Move freetype into src directory
+mv freetype-2.5.0/* src
+rm -rf freetype-2.5.0
+
+#Configure freetype
+cd src
+sudo ./configure 
+
+#Compile and install freetype
+if [ $# -eq 0 ]; then
+	sudo make
+else
+	sudo make -j $1
+fi
+sudo make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/fti/Makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/fti/Makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/fti/Makefile	(revision 27955)
@@ -0,0 +1,90 @@
+## * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+##* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+##=======================================================================
+##Copyright (C) 2010-2013 Leonardo A. BAUTISTA GOMEZ
+##This program is free software; you can redistribute it and/or modify
+##it under the terms of the GNU General Public License (GPL) as published
+##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.
+##
+##To read the license please visit http://www.gnu.org/copyleft/gpl.html
+##=======================================================================
+
+##=======================================================================
+##   PLEASE SET THESE VARIABLES BEFORE COMPILING
+##=======================================================================
+
+FTIPATH		= $(ISSM_DIR)/externalpackages/fti/install
+MPIPATH		= $(ISSM_DIR)/externalpackages/mpich/install
+
+##=======================================================================
+##   DIRECTORY TREE
+##=======================================================================
+
+LIB 		= lib
+OBJ		= obj
+SRC		= src
+DOC		= doc
+INC		= include
+
+##=======================================================================
+##   COMPILERS
+##=======================================================================
+
+CC 		= gcc
+MPICC 		= mpicc
+
+##=======================================================================
+##   FLAGS
+##=======================================================================
+
+FTIFLAGS	= -fPIC -g -Iinclude/ -c
+MPIFLAGS	= -I$(MPIPATH)/include -L$(MPIPATH)/lib -lmpich -lpmpich
+
+##=======================================================================
+##   TARGETS
+##=======================================================================
+
+
+OBJS		= $(OBJ)/galois.o $(OBJ)/jerasure.o $(OBJ)/dictionary.o $(OBJ)/iniparser.o \
+		$(OBJ)/recover.o $(OBJ)/tools.o $(OBJ)/checkpoint.o $(OBJ)/topo.o \
+		$(OBJ)/api.o
+
+SHARED		= libfti.so
+STATIC		= libfti.a
+
+all: 		$(SHARED) $(STATIC)
+
+doc:
+		doxygen $(DOC)/Doxyfile
+
+$(OBJ)/%.o:	$(SRC)/%.c
+		$(MPICC) $(FTIFLAGS) $< -o $@
+
+$(SHARED):	$(OBJS)
+		$(CC) $(MPIFLAGS) -shared -o $(LIB)/$(SHARED) $(OBJS) -lc
+
+$(STATIC):	$(OBJS)
+		$(AR) -cvq $(LIB)/$(STATIC) $(OBJS)
+install:
+		if [ ! -d "$(FTIPATH)/FTI" ]; then mkdir $(FTIPATH)/FTI; fi
+		if [ ! -d "$(FTIPATH)/FTI/$(LIB)" ]; then mkdir $(FTIPATH)/FTI/$(LIB); fi
+		if [ ! -d "$(FTIPATH)/FTI/$(INC)" ]; then mkdir $(FTIPATH)/FTI/$(INC); fi
+		rm -f $(FTIPATH)/FTI/$(LIB)/* $(FTIPATH)/FTI/$(INC)/*
+		cp $(INC)/* $(FTIPATH)/FTI/$(INC)/
+		cp $(LIB)/* $(FTIPATH)/FTI/$(LIB)/
+
+uninstall:
+		rm -f $(FTIPATH)/FTI/$(LIB)/* $(FTIPATH)/FTI/$(INC)/*
+		if [ -d "$(FTIPATH)/FTI/$(LIB)" ]; then rmdir $(FTIPATH)/FTI/$(LIB); fi
+		if [ -d "$(FTIPATH)/FTI/$(INC)" ]; then rmdir $(FTIPATH)/FTI/$(INC); fi
+		if [ -d "$(FTIPATH)/FTI" ]; then rmdir $(FTIPATH)/FTI; fi
+
+clean:
+		rm -f $(OBJ)/* $(LIB)/*
+
+.PHONY:		$(SHARED) $(STATIC) doc install uninstall clean
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/fti/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/fti/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/fti/install.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install fti-0.9.2
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/fti-0.9.2.tgz' 'fti-0.9.2.tgz'
+
+#Untar 
+tar -zxvf  fti-0.9.2.tgz
+
+#Move mpich into src directory
+mv fti/* install
+rm -rf fti
+
+#Configure mpich
+cd install
+cp ../Makefile .
+
+#Compile mpich (this new version supports parallel make)
+make
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/configs/1.10/linux/debian/frmts/wms/dataset.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/configs/1.10/linux/debian/frmts/wms/dataset.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/configs/1.10/linux/debian/frmts/wms/dataset.cpp	(revision 27955)
@@ -0,0 +1,676 @@
+/******************************************************************************
+ * $Id: dataset.cpp 25776 2013-03-20 20:46:48Z rouault $
+ *
+ * Project:  WMS Client Driver
+ * Purpose:  Implementation of Dataset and RasterBand classes for WMS
+ *           and other similar services.
+ * Author:   Adam Nowacki, nowak@xpam.de
+ *
+ ******************************************************************************
+ * Copyright (c) 2007, Adam Nowacki
+ *
+ * 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.
+ ****************************************************************************
+ *
+ * dataset.cpp:
+ * Initialization of the GDALWMSdriver, parsing the XML configuration file,
+ * instantiation of the minidrivers and accessors used by minidrivers
+ *
+ ***************************************************************************/
+
+
+#include "stdinc.h"
+
+GDALWMSDataset::GDALWMSDataset() {
+    m_mini_driver = 0;
+    m_cache = 0;
+    m_hint.m_valid = false;
+    m_data_type = GDT_Byte;
+    m_clamp_requests = true;
+    m_unsafeSsl = false;
+    m_data_window.m_sx = -1;
+    nBands = 0;
+    m_default_block_size_x = 1024;
+    m_default_block_size_y = 1024;
+    m_bNeedsDataWindow = TRUE;
+    m_default_tile_count_x = 1;
+    m_default_tile_count_y = 1;
+    m_default_overview_count = -1;
+    m_zeroblock_on_serverexceptions = 0;
+    m_poColorTable = NULL;
+}
+
+GDALWMSDataset::~GDALWMSDataset() {
+    if (m_mini_driver) delete m_mini_driver;
+    if (m_cache) delete m_cache;
+    if (m_poColorTable) delete m_poColorTable;
+}
+
+CPLErr GDALWMSDataset::Initialize(CPLXMLNode *config) {
+    CPLErr ret = CE_None;
+
+    char* pszXML = CPLSerializeXMLTree( config );
+    if (pszXML)
+    {
+        m_osXML = pszXML;
+        CPLFree(pszXML);
+    }
+
+    // Initialize the minidriver, which can set parameters for the dataset using member functions
+    CPLXMLNode *service_node = CPLGetXMLNode(config, "Service");
+    if (service_node != NULL)
+    {
+        const CPLString service_name = CPLGetXMLValue(service_node, "name", "");
+        if (!service_name.empty())
+        {
+            GDALWMSMiniDriverManager *const mdm = GetGDALWMSMiniDriverManager();
+            GDALWMSMiniDriverFactory *const mdf = mdm->Find(service_name);
+            if (mdf != NULL)
+            {
+                m_mini_driver = mdf->New();
+                m_mini_driver->m_parent_dataset = this;
+                if (m_mini_driver->Initialize(service_node) == CE_None)
+                {
+                    m_mini_driver_caps.m_capabilities_version = -1;
+                    m_mini_driver->GetCapabilities(&m_mini_driver_caps);
+                    if (m_mini_driver_caps.m_capabilities_version == -1)
+                    {
+                        CPLError(CE_Failure, CPLE_AppDefined, "GDALWMS: Internal error, mini-driver capabilities version not set.");
+                        ret = CE_Failure;
+                    }
+                }
+                else
+                {
+                    delete m_mini_driver;
+                    m_mini_driver = NULL;
+
+                    CPLError(CE_Failure, CPLE_AppDefined, "GDALWMS: Failed to initialize minidriver.");
+                    ret = CE_Failure;
+                }
+            }
+            else
+            {
+                CPLError(CE_Failure, CPLE_AppDefined,
+                                "GDALWMS: No mini-driver registered for '%s'.", service_name.c_str());
+                ret = CE_Failure;
+            }
+        }
+        else
+        {
+            CPLError(CE_Failure, CPLE_AppDefined, "GDALWMS: No Service specified.");
+            ret = CE_Failure;
+        }
+    }
+    else
+    {
+        CPLError(CE_Failure, CPLE_AppDefined, "GDALWMS: No Service specified.");
+        ret = CE_Failure;
+    }
+
+
+    /*
+    Parameters that could be set by minidriver already, based on server side information.
+    If the size is set, minidriver has done this already
+    A "server" side minidriver needs to set at least:
+      - Blocksize (x and y)
+      - Clamp flag (defaults to true)
+      - DataWindow
+      - Band Count
+      - Data Type
+    It should also initialize and register the bands and overviews.
+    */
+
+    if (m_data_window.m_sx<1)
+    {
+        int nOverviews = 0;
+
+        if (ret == CE_None)
+        {
+            m_block_size_x = atoi(CPLGetXMLValue(config, "BlockSizeX", CPLString().Printf("%d", m_default_block_size_x)));
+            m_block_size_y = atoi(CPLGetXMLValue(config, "BlockSizeY", CPLString().Printf("%d", m_default_block_size_y)));
+            if (m_block_size_x <= 0 || m_block_size_y <= 0)
+            {
+                CPLError( CE_Failure, CPLE_AppDefined, "GDALWMS: Invalid value in BlockSizeX or BlockSizeY" );
+                ret = CE_Failure;
+            }
+        }
+
+        if (ret == CE_None)
+        {
+            m_clamp_requests = StrToBool(CPLGetXMLValue(config, "ClampRequests", "true"));
+            if (m_clamp_requests<0)
+            {
+                CPLError(CE_Failure, CPLE_AppDefined, "GDALWMS: Invalid value of ClampRequests, true/false expected.");
+                ret = CE_Failure;
+            }
+        }
+
+        if (ret == CE_None)
+        {
+            CPLXMLNode *data_window_node = CPLGetXMLNode(config, "DataWindow");
+            if (data_window_node == NULL && m_bNeedsDataWindow)
+            {
+                CPLError(CE_Failure, CPLE_AppDefined, "GDALWMS: DataWindow missing.");
+                ret = CE_Failure;
+            }
+            else
+            {
+                CPLString osDefaultX0, osDefaultX1, osDefaultY0, osDefaultY1;
+                CPLString osDefaultTileCountX, osDefaultTileCountY, osDefaultTileLevel;
+                CPLString osDefaultOverviewCount;
+                osDefaultX0.Printf("%.8f", m_default_data_window.m_x0);
+                osDefaultX1.Printf("%.8f", m_default_data_window.m_x1);
+                osDefaultY0.Printf("%.8f", m_default_data_window.m_y0);
+                osDefaultY1.Printf("%.8f", m_default_data_window.m_y1);
+                osDefaultTileCountX.Printf("%d", m_default_tile_count_x);
+                osDefaultTileCountY.Printf("%d", m_default_tile_count_y);
+                if (m_default_data_window.m_tlevel >= 0)
+                    osDefaultTileLevel.Printf("%d", m_default_data_window.m_tlevel);
+                if (m_default_overview_count >= 0)
+                    osDefaultOverviewCount.Printf("%d", m_default_overview_count);
+                const char *overview_count = CPLGetXMLValue(config, "OverviewCount", osDefaultOverviewCount);
+                const char *ulx = CPLGetXMLValue(data_window_node, "UpperLeftX", osDefaultX0);
+                const char *uly = CPLGetXMLValue(data_window_node, "UpperLeftY", osDefaultY0);
+                const char *lrx = CPLGetXMLValue(data_window_node, "LowerRightX", osDefaultX1);
+                const char *lry = CPLGetXMLValue(data_window_node, "LowerRightY", osDefaultY1);
+                const char *sx = CPLGetXMLValue(data_window_node, "SizeX", "");
+                const char *sy = CPLGetXMLValue(data_window_node, "SizeY", "");
+                const char *tx = CPLGetXMLValue(data_window_node, "TileX", "0");
+                const char *ty = CPLGetXMLValue(data_window_node, "TileY", "0");
+                const char *tlevel = CPLGetXMLValue(data_window_node, "TileLevel", osDefaultTileLevel);
+                const char *str_tile_count_x = CPLGetXMLValue(data_window_node, "TileCountX", osDefaultTileCountX);
+                const char *str_tile_count_y = CPLGetXMLValue(data_window_node, "TileCountY", osDefaultTileCountY);
+                const char *y_origin = CPLGetXMLValue(data_window_node, "YOrigin", "default");
+
+                if (ret == CE_None)
+                {
+                    if ((ulx[0] != '\0') && (uly[0] != '\0') && (lrx[0] != '\0') && (lry[0] != '\0'))
+                    {
+                        m_data_window.m_x0 = atof(ulx);
+                        m_data_window.m_y0 = atof(uly);
+                        m_data_window.m_x1 = atof(lrx);
+                        m_data_window.m_y1 = atof(lry);
+                    }
+                    else
+                    {
+                        CPLError(CE_Failure, CPLE_AppDefined,
+                                 "GDALWMS: Mandatory elements of DataWindow missing: UpperLeftX, UpperLeftY, LowerRightX, LowerRightY.");
+                        ret = CE_Failure;
+                    }
+                }
+
+                m_data_window.m_tlevel = atoi(tlevel);
+
+                if (ret == CE_None)
+                {
+                    if ((sx[0] != '\0') && (sy[0] != '\0'))
+                    {
+                        m_data_window.m_sx = atoi(sx);
+                        m_data_window.m_sy = atoi(sy);
+                    }
+                    else if ((tlevel[0] != '\0') && (str_tile_count_x[0] != '\0') && (str_tile_count_y[0] != '\0'))
+                    {
+                        int tile_count_x = atoi(str_tile_count_x);
+                        int tile_count_y = atoi(str_tile_count_y);
+                        m_data_window.m_sx = tile_count_x * m_block_size_x * (1 << m_data_window.m_tlevel);
+                        m_data_window.m_sy = tile_count_y * m_block_size_y * (1 << m_data_window.m_tlevel);
+                    }
+                    else
+                    {
+                        CPLError(CE_Failure, CPLE_AppDefined,
+                                 "GDALWMS: Mandatory elements of DataWindow missing: SizeX, SizeY.");
+                        ret = CE_Failure;
+                    }
+                }
+                if (ret == CE_None)
+                {
+                    if ((tx[0] != '\0') && (ty[0] != '\0'))
+                    {
+                        m_data_window.m_tx = atoi(tx);
+                        m_data_window.m_ty = atoi(ty);
+                    }
+                    else
+                    {
+                        CPLError(CE_Failure, CPLE_AppDefined,
+                                 "GDALWMS: Mandatory elements of DataWindow missing: TileX, TileY.");
+                        ret = CE_Failure;
+                    }
+                }
+
+                if (ret == CE_None)
+                {
+                    if (overview_count[0] != '\0')
+                    {
+                        nOverviews = atoi(overview_count);
+                    }
+                    else if (tlevel[0] != '\0')
+                    {
+                        nOverviews = m_data_window.m_tlevel;
+                    }
+                    else
+                    {
+                        const int min_overview_size = MAX(32, MIN(m_block_size_x, m_block_size_y));
+                        double a = log(static_cast<double>(MIN(m_data_window.m_sx, m_data_window.m_sy))) / log(2.0)
+                            - log(static_cast<double>(min_overview_size)) / log(2.0);
+                        nOverviews = MAX(0, MIN(static_cast<int>(ceil(a)), 32));
+                    }
+                }
+                if (ret == CE_None)
+                {
+                    CPLString y_origin_str = y_origin;
+                    if (y_origin_str == "top") {
+                        m_data_window.m_y_origin = GDALWMSDataWindow::TOP;
+                    } else if (y_origin_str == "bottom") {
+                        m_data_window.m_y_origin = GDALWMSDataWindow::BOTTOM;
+                    } else if (y_origin_str == "default") {
+                        m_data_window.m_y_origin = GDALWMSDataWindow::DEFAULT;
+                    } else {
+                        CPLError(CE_Failure, CPLE_AppDefined, "GDALWMS: DataWindow YOrigin must be set to "
+                            "one of 'default', 'top', or 'bottom', not '%s'.", y_origin_str.c_str());
+                        ret = CE_Failure;
+                    }
+                }
+            }
+        }
+
+        if (ret == CE_None)
+        {
+            if (nBands<1)
+                nBands=atoi(CPLGetXMLValue(config,"BandsCount","3"));
+            if (nBands<1)
+            {
+                CPLError(CE_Failure, CPLE_AppDefined,
+                         "GDALWMS: Bad number of bands.");
+                ret = CE_Failure;
+            }
+        }
+
+        if (ret == CE_None)
+        {
+            const char *data_type = CPLGetXMLValue(config, "DataType", "Byte");
+            m_data_type = GDALGetDataTypeByName( data_type );
+            if ( m_data_type == GDT_Unknown || m_data_type >= GDT_TypeCount )
+            {
+                CPLError( CE_Failure, CPLE_AppDefined,
+                          "GDALWMS: Invalid value in DataType. Data type \"%s\" is not supported.", data_type );
+                ret = CE_Failure;
+            }
+        }
+
+        // Initialize the bands and the overviews.  Assumes overviews are powers of two
+        if (ret == CE_None)
+        {
+            nRasterXSize = m_data_window.m_sx;
+            nRasterYSize = m_data_window.m_sy;
+
+            if (!GDALCheckDatasetDimensions(nRasterXSize, nRasterYSize) ||
+                !GDALCheckBandCount(nBands, TRUE))
+            {
+                return CE_Failure;
+            }
+
+            GDALColorInterp default_color_interp[4][4] = {
+                { GCI_GrayIndex, GCI_Undefined, GCI_Undefined, GCI_Undefined },
+                { GCI_GrayIndex, GCI_AlphaBand, GCI_Undefined, GCI_Undefined },
+                { GCI_RedBand, GCI_GreenBand, GCI_BlueBand, GCI_Undefined },
+                { GCI_RedBand, GCI_GreenBand, GCI_BlueBand, GCI_AlphaBand }
+            };
+            for (int i = 0; i < nBands; ++i)
+            {
+                GDALColorInterp color_interp = (nBands <= 4 && i <= 3 ? default_color_interp[nBands - 1][i] : GCI_Undefined);
+                GDALWMSRasterBand *band = new GDALWMSRasterBand(this, i, 1.0);
+                band->m_color_interp = color_interp;
+                SetBand(i + 1, band);
+                double scale = 0.5;
+                for (int j = 0; j < nOverviews; ++j)
+                {
+                    band->AddOverview(scale);
+                    band->m_color_interp = color_interp;
+                    scale *= 0.5;
+                }
+            }
+        }
+    }
+
+    // UserPwd
+    const char *pszUserPwd = CPLGetXMLValue(config, "UserPwd", "");
+    if (pszUserPwd[0] != '\0')
+        m_osUserPwd = pszUserPwd;
+
+    const char *pszUserAgent = CPLGetXMLValue(config, "UserAgent", "");
+    if (pszUserAgent[0] != '\0')
+        m_osUserAgent = pszUserAgent;
+
+    const char *pszReferer = CPLGetXMLValue(config, "Referer", "");
+    if (pszReferer[0] != '\0')
+        m_osReferer = pszReferer;
+
+    if (ret == CE_None) {
+        const char *pszHttpZeroBlockCodes = CPLGetXMLValue(config, "ZeroBlockHttpCodes", "");
+        if(pszHttpZeroBlockCodes[0] == '\0') {
+            m_http_zeroblock_codes.push_back(204);
+        } else {
+            char **kv = CSLTokenizeString2(pszHttpZeroBlockCodes,",",CSLT_HONOURSTRINGS);
+            int nCount = CSLCount(kv);
+            for(int i=0; i<nCount; i++) {
+                int code = atoi(kv[i]);
+                if(code <= 0) {
+                    CPLError(CE_Failure, CPLE_AppDefined, "GDALWMS: Invalid value of ZeroBlockHttpCodes \"%s\", comma separated HTTP response codes expected.",
+                            kv[i]);
+                    ret = CE_Failure;
+                    break;
+                }
+                m_http_zeroblock_codes.push_back(code);
+            }
+            CSLDestroy(kv);
+        }
+    }
+
+    if (ret == CE_None) {
+        const char *pszZeroExceptions = CPLGetXMLValue(config, "ZeroBlockOnServerException", "");
+        if(pszZeroExceptions[0] != '\0') {
+            m_zeroblock_on_serverexceptions = StrToBool(pszZeroExceptions);
+            if (m_zeroblock_on_serverexceptions == -1) {
+                CPLError(CE_Failure, CPLE_AppDefined, "GDALWMS: Invalid value of ZeroBlockOnServerException \"%s\", true/false expected.",
+                     pszZeroExceptions);
+                ret = CE_Failure;
+            }
+        }
+    }
+
+    if (ret == CE_None) {
+        const char *max_conn = CPLGetXMLValue(config, "MaxConnections", "");
+        if (max_conn[0] != '\0') {
+            m_http_max_conn = atoi(max_conn);
+        } else {
+            m_http_max_conn = 2;
+        }
+    }
+    if (ret == CE_None) {
+        const char *timeout = CPLGetXMLValue(config, "Timeout", "");
+        if (timeout[0] != '\0') {
+            m_http_timeout = atoi(timeout);
+        } else {
+            m_http_timeout = 300;
+        }
+    }
+    if (ret == CE_None) {
+        const char *offline_mode = CPLGetXMLValue(config, "OfflineMode", "");
+        if (offline_mode[0] != '\0') {
+            const int offline_mode_bool = StrToBool(offline_mode);
+            if (offline_mode_bool == -1) {
+                CPLError(CE_Failure, CPLE_AppDefined, "GDALWMS: Invalid value of OfflineMode, true / false expected.");
+                ret = CE_Failure;
+            } else {
+                m_offline_mode = offline_mode_bool;
+            }
+        } else {
+            m_offline_mode = 0;
+        }
+    }
+
+    if (ret == CE_None) {
+        const char *advise_read = CPLGetXMLValue(config, "AdviseRead", "");
+        if (advise_read[0] != '\0') {
+            const int advise_read_bool = StrToBool(advise_read);
+            if (advise_read_bool == -1) {
+                CPLError(CE_Failure, CPLE_AppDefined, "GDALWMS: Invalid value of AdviseRead, true / false expected.");
+                ret = CE_Failure;
+            } else {
+                m_use_advise_read = advise_read_bool;
+            }
+        } else {
+            m_use_advise_read = 0;
+        }
+    }
+
+    if (ret == CE_None) {
+        const char *verify_advise_read = CPLGetXMLValue(config, "VerifyAdviseRead", "");
+        if (m_use_advise_read) {
+            if (verify_advise_read[0] != '\0') {
+                const int verify_advise_read_bool = StrToBool(verify_advise_read);
+                if (verify_advise_read_bool == -1) {
+                    CPLError(CE_Failure, CPLE_AppDefined, "GDALWMS: Invalid value of VerifyAdviseRead, true / false expected.");
+                    ret = CE_Failure;
+                } else {
+                    m_verify_advise_read = verify_advise_read_bool;
+                }
+            } else {
+                m_verify_advise_read = 1;
+            }
+        }
+    }
+
+    // Let the local configuration override the minidriver supplied projection
+
+    if (ret == CE_None) {
+        const char *proj = CPLGetXMLValue(config, "Projection", "");
+        if (proj[0] != '\0') {
+            m_projection = ProjToWKT(proj);
+            if (m_projection.size() == 0) {
+                CPLError(CE_Failure, CPLE_AppDefined, "GDALWMS: Bad projection specified.");
+                ret = CE_Failure;
+            }
+        }
+    }
+
+    // Same for Min, Max and NoData, defined per band or per dataset
+    // If they are set as null strings, they clear the server declared values
+    if (ret == CE_None) {
+       // Data values are attributes, they include NoData Min and Max
+       // TODO: document those options
+       if (0!=CPLGetXMLNode(config,"DataValues")) {
+           const char *nodata=CPLGetXMLValue(config,"DataValues.NoData",NULL);
+           if (nodata!=NULL) WMSSetNoDataValue(nodata);
+           const char *min=CPLGetXMLValue(config,"DataValues.min",NULL);
+           if (min!=NULL) WMSSetMinValue(min);
+           const char *max=CPLGetXMLValue(config,"DataValues.max",NULL);
+           if (max!=NULL) WMSSetMaxValue(max);
+       }
+    }
+
+    if (ret == CE_None) {
+        CPLXMLNode *cache_node = CPLGetXMLNode(config, "Cache");
+        if (cache_node != NULL) {
+            m_cache = new GDALWMSCache();
+            if (m_cache->Initialize(cache_node) != CE_None) {
+                delete m_cache;
+                m_cache = NULL;
+                CPLError(CE_Failure, CPLE_AppDefined, "GDALWMS: Failed to initialize cache.");
+                ret = CE_Failure;
+            }
+        }
+    }
+
+    if (ret == CE_None) {
+    	const int v = StrToBool(CPLGetXMLValue(config, "UnsafeSSL", "false"));
+    	if (v == -1) {
+	    CPLError(CE_Failure, CPLE_AppDefined, "GDALWMS: Invalid value of UnsafeSSL: true or false expected.");
+	    ret = CE_Failure;
+	} else {
+	    m_unsafeSsl = v;
+	}
+    }
+
+    if (ret == CE_None) {
+        /* If we dont have projection already set ask mini-driver. */
+        if (!m_projection.size()) {
+            const char *proj = m_mini_driver->GetProjectionInWKT();
+            if (proj != NULL) {
+                m_projection = proj;
+            }
+        }
+    }
+
+    return ret;
+}
+
+CPLErr GDALWMSDataset::IRasterIO(GDALRWFlag rw, int x0, int y0, int sx, int sy, void *buffer, int bsx, int bsy, GDALDataType bdt, int band_count, int *band_map, int pixel_space, int line_space, int band_space) {
+    CPLErr ret;
+
+    if (rw != GF_Read) return CE_Failure;
+    if (buffer == NULL) return CE_Failure;
+    if ((sx == 0) || (sy == 0) || (bsx == 0) || (bsy == 0) || (band_count == 0)) return CE_None;
+
+    m_hint.m_x0 = x0;
+    m_hint.m_y0 = y0;
+    m_hint.m_sx = sx;
+    m_hint.m_sy = sy;
+    m_hint.m_overview = -1;
+    m_hint.m_valid = true;
+    //	printf("[%p] GDALWMSDataset::IRasterIO(x0: %d, y0: %d, sx: %d, sy: %d, bsx: %d, bsy: %d, band_count: %d, band_map: %p)\n", this, x0, y0, sx, sy, bsx, bsy, band_count, band_map);
+    ret = GDALDataset::IRasterIO(rw, x0, y0, sx, sy, buffer, bsx, bsy, bdt, band_count, band_map, pixel_space, line_space, band_space);
+    m_hint.m_valid = false;
+
+    return ret;
+}
+
+const char *GDALWMSDataset::GetProjectionRef() {
+    return m_projection.c_str();
+}
+
+CPLErr GDALWMSDataset::SetProjection(const char *proj) {
+    return CE_Failure;
+}
+
+CPLErr GDALWMSDataset::GetGeoTransform(double *gt) {
+    gt[0] = m_data_window.m_x0;
+    gt[1] = (m_data_window.m_x1 - m_data_window.m_x0) / static_cast<double>(m_data_window.m_sx);
+    gt[2] = 0.0;
+    gt[3] = m_data_window.m_y0;
+    gt[4] = 0.0;
+    gt[5] = (m_data_window.m_y1 - m_data_window.m_y0) / static_cast<double>(m_data_window.m_sy);
+    return CE_None;
+}
+
+CPLErr GDALWMSDataset::SetGeoTransform(double *gt) {
+    return CE_Failure;
+}
+
+const GDALWMSDataWindow *GDALWMSDataset::WMSGetDataWindow() const {
+    return &m_data_window;
+}
+
+void GDALWMSDataset::WMSSetBlockSize(int x, int y) {
+    m_block_size_x=x;
+    m_block_size_y=y;
+}
+
+void GDALWMSDataset::WMSSetRasterSize(int x, int y) {
+    nRasterXSize=x;
+    nRasterYSize=y;
+}
+
+void GDALWMSDataset::WMSSetBandsCount(int count) {
+    nBands=count;
+}
+
+void GDALWMSDataset::WMSSetClamp(bool flag=true) {
+    m_clamp_requests=flag;
+}
+
+void GDALWMSDataset::WMSSetDataType(GDALDataType type) {
+    m_data_type=type;
+}
+
+void GDALWMSDataset::WMSSetDataWindow(GDALWMSDataWindow &window) {
+    m_data_window=window;
+}
+
+void GDALWMSDataset::WMSSetDefaultBlockSize(int x, int y) {
+    m_default_block_size_x=x;
+    m_default_block_size_y=y;
+}
+
+void GDALWMSDataset::WMSSetDefaultDataWindowCoordinates(double x0, double y0, double x1, double y1)
+{
+    m_default_data_window.m_x0 = x0;
+    m_default_data_window.m_y0 = y0;
+    m_default_data_window.m_x1 = x1;
+    m_default_data_window.m_y1 = y1;
+}
+
+void GDALWMSDataset::WMSSetDefaultTileCount(int tilecountx, int tilecounty)
+{
+    m_default_tile_count_x = tilecountx;
+    m_default_tile_count_y = tilecounty;
+}
+
+void GDALWMSDataset::WMSSetDefaultTileLevel(int tlevel)
+{
+    m_default_data_window.m_tlevel = tlevel;
+}
+
+void GDALWMSDataset::WMSSetDefaultOverviewCount(int overview_count)
+{
+    m_default_overview_count = overview_count;
+}
+
+void GDALWMSDataset::WMSSetNeedsDataWindow(int flag)
+{
+    m_bNeedsDataWindow = flag;
+}
+
+static void list2vec(std::vector<double> &v,const char *pszList)
+{
+    if ((pszList==NULL)||(pszList[0]==0)) return;
+    char **papszTokens=CSLTokenizeString2(pszList," \t\n\r",
+        CSLT_STRIPLEADSPACES|CSLT_STRIPENDSPACES);
+    v.clear();
+    for (int i=0;i<CSLCount(papszTokens);i++)
+        v.push_back(CPLStrtod(papszTokens[i],NULL));
+    CSLDestroy(papszTokens);
+}
+
+void GDALWMSDataset::WMSSetNoDataValue(const char * pszNoData)
+{
+    list2vec(vNoData,pszNoData);
+}
+
+void GDALWMSDataset::WMSSetMinValue(const char * pszMin)
+{
+    list2vec(vMin,pszMin);
+}
+
+void GDALWMSDataset::WMSSetMaxValue(const char * pszMax)
+{
+    list2vec(vMax,pszMax);
+}
+
+CPLErr GDALWMSDataset::AdviseRead(int x0, int y0, int sx, int sy, int bsx, int bsy, GDALDataType bdt, int band_count, int *band_map, char **options) {
+//    printf("AdviseRead(%d, %d, %d, %d)\n", x0, y0, sx, sy);
+    if (m_offline_mode || !m_use_advise_read) return CE_None;
+    if (m_cache == NULL) return CE_Failure;
+
+    GDALRasterBand *band = GetRasterBand(1);
+    if (band == NULL) return CE_Failure;
+    return band->AdviseRead(x0, y0, sx, sy, bsx, bsy, bdt, options);
+}
+
+const char *GDALWMSDataset::GetMetadataItem( const char * pszName,
+                                             const char * pszDomain )
+{
+    if( pszName != NULL && EQUAL(pszName, "XML") &&
+        pszDomain != NULL && EQUAL(pszDomain, "WMS") )
+    {
+        return (m_osXML.size()) ? m_osXML.c_str() : NULL;
+    }
+
+    return GDALPamDataset::GetMetadataItem(pszName, pszDomain);
+}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/configs/1.10/linux/debian/ogr/ogrsf_frmts/vfk/vfkfeature.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/configs/1.10/linux/debian/ogr/ogrsf_frmts/vfk/vfkfeature.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/configs/1.10/linux/debian/ogr/ogrsf_frmts/vfk/vfkfeature.cpp	(revision 27955)
@@ -0,0 +1,560 @@
+/******************************************************************************
+ * $Id: vfkfeature.cpp 25702 2013-03-07 17:17:54Z martinl $
+ *
+ * Project:  VFK Reader - Feature definition
+ * Purpose:  Implements IVFKFeature/VFKFeature class.
+ * Author:   Martin Landa, landa.martin gmail.com
+ *
+ ******************************************************************************
+ * Copyright (c) 2009-2010, 2012-2013, Martin Landa <landa.martin gmail.com>
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ ****************************************************************************/
+
+#include "vfkreader.h"
+#include "vfkreaderp.h"
+
+#include "cpl_conv.h"
+#include "cpl_error.h"
+
+/*!
+  \brief IVFKFeature constructor
+
+  \param poDataBlock pointer to VFKDataBlock instance
+*/
+IVFKFeature::IVFKFeature(IVFKDataBlock *poDataBlock)
+{
+    CPLAssert(NULL != poDataBlock);
+    m_poDataBlock   = poDataBlock;
+
+    m_nFID          = -1;
+    m_nGeometryType = poDataBlock->GetGeometryType();
+    m_bGeometry     = FALSE;
+    m_bValid        = FALSE;
+    m_paGeom        = NULL;
+}
+
+/*!
+  \brief IVFKFeature destructor
+*/
+IVFKFeature::~IVFKFeature()
+{
+    if (m_paGeom)
+        delete m_paGeom;
+
+    m_poDataBlock = NULL;
+}
+
+/*!
+  \brief Set feature geometry type
+*/
+void IVFKFeature::SetGeometryType(OGRwkbGeometryType nGeomType)
+{
+    m_nGeometryType = nGeomType;
+}
+
+/*!
+  \brief Set feature id
+
+  FID: 0 for next, -1 for same
+
+  \param nFID feature id
+*/
+void IVFKFeature::SetFID(long nFID)
+{
+    if (m_nFID > 0) {
+        m_nFID = nFID;
+    }
+    else {
+        m_nFID = m_poDataBlock->GetFeatureCount() + 1;
+    }
+}
+
+/*!
+  \brief Set feature geometry
+
+  Also checks if given geometry is valid
+
+  \param poGeom pointer to OGRGeometry
+
+  \return TRUE on valid feature or otherwise FALSE
+*/
+bool IVFKFeature::SetGeometry(OGRGeometry *poGeom)
+{
+    m_bGeometry = TRUE;
+
+    delete m_paGeom;
+    m_paGeom = NULL;
+    m_bValid = TRUE;
+
+    if (!poGeom) {
+	return m_bValid;
+    }
+
+    /* check empty geometries */
+    if (m_nGeometryType == wkbNone && poGeom->IsEmpty()) {
+	CPLDebug("OGR-VFK", "%s: empty geometry fid = %ld",
+		 m_poDataBlock->GetName(), m_nFID);
+        m_bValid = FALSE;
+    }
+
+    /* check coordinates */
+    if (m_nGeometryType == wkbPoint) {
+        double x, y;
+        x = ((OGRPoint *) poGeom)->getX();
+        y = ((OGRPoint *) poGeom)->getY();
+        if (x > -430000 || x < -910000 ||
+            y > -930000 || y < -1230000) {
+            CPLDebug("OGR-VFK", "%s: invalid point fid = %ld",
+                     m_poDataBlock->GetName(), m_nFID);
+            m_bValid = FALSE;
+        }
+    }
+
+    /* check degenerated linestrings */
+    if (m_nGeometryType == wkbLineString &&
+        ((OGRLineString *) poGeom)->getNumPoints() < 2) {
+        CPLDebug("OGR-VFK", "%s: invalid linestring fid = %ld",
+		 m_poDataBlock->GetName(), m_nFID);
+        m_bValid = FALSE;
+    }
+
+    /* check degenerated polygons */
+    if (m_nGeometryType == wkbPolygon) {
+        OGRLinearRing *poRing;
+        poRing = ((OGRPolygon *) poGeom)->getExteriorRing();
+        if (!poRing || poRing->getNumPoints() < 3) {
+	    CPLDebug("OGR-VFK", "%s: invalid polygon fid = %ld",
+		     m_poDataBlock->GetName(), m_nFID);
+            m_bValid = FALSE;
+	}
+    }
+
+    if (m_bValid)
+        m_paGeom = (OGRGeometry *) poGeom->clone(); /* make copy */
+
+    return m_bValid;
+}
+
+/*!
+  \brief Get feature geometry
+
+  \return pointer to OGRGeometry or NULL on error
+*/
+OGRGeometry *IVFKFeature::GetGeometry()
+{
+    if (m_nGeometryType != wkbNone && !m_bGeometry)
+        LoadGeometry();
+
+    return m_paGeom;
+}
+
+
+/*!
+  \brief Load geometry
+
+  \return TRUE on success or FALSE on failure
+*/
+bool IVFKFeature::LoadGeometry()
+{
+    const char *pszName;
+    CPLString osSQL;
+
+    if (m_bGeometry)
+        return TRUE;
+
+    pszName  = m_poDataBlock->GetName();
+
+    if (EQUAL (pszName, "SOBR") ||
+        EQUAL (pszName, "OBBP") ||
+        EQUAL (pszName, "SPOL") ||
+        EQUAL (pszName, "OB") ||
+        EQUAL (pszName, "OP") ||
+        EQUAL (pszName, "OBPEJ")) {
+        /* -> wkbPoint */
+
+        return LoadGeometryPoint();
+    }
+    else if (EQUAL (pszName, "SBP")) {
+        /* -> wkbLineString */
+        return LoadGeometryLineStringSBP();
+    }
+    else if (EQUAL (pszName, "HP") ||
+             EQUAL (pszName, "DPM")) {
+        /* -> wkbLineString */
+        return LoadGeometryLineStringHP();
+    }
+    else if (EQUAL (pszName, "PAR") ||
+             EQUAL (pszName, "BUD")) {
+        /* -> wkbPolygon */
+        return LoadGeometryPolygon();
+    }
+
+    return FALSE;
+}
+
+/*!
+  \brief VFKFeature constructor
+
+  \param poDataBlock pointer to VFKDataBlock instance
+*/
+VFKFeature::VFKFeature(IVFKDataBlock *poDataBlock, long iFID) : IVFKFeature(poDataBlock)
+{
+    m_nFID = iFID;
+    m_propertyList.assign(poDataBlock->GetPropertyCount(), VFKProperty());
+    CPLAssert(size_t (poDataBlock->GetPropertyCount()) == m_propertyList.size());
+}
+
+/*!
+  \brief Set feature properties
+
+  \param pszLine pointer to line containing feature definition
+
+  \return TRUE on success or FALSE on failure
+*/
+bool VFKFeature::SetProperties(const char *pszLine)
+{
+    unsigned int iIndex, nLength;
+    const char *poChar, *poProp;
+    char* pszProp;
+    bool inString;
+
+    std::vector<CPLString> oPropList;
+
+    pszProp = NULL;
+
+    for (poChar = pszLine; *poChar != '\0' && *poChar != ';'; poChar++)
+        /* skip data block name */
+        ;
+    if( *poChar == '\0' )
+        return FALSE; /* nothing to read */
+
+    poChar++; /* skip ';' after data block name*/
+
+    /* read properties into the list */
+    poProp = poChar;
+    iIndex = nLength = 0;
+    inString = FALSE;
+    while(*poChar != '\0') {
+        if (*poChar == '"' &&
+            (*(poChar-1) == ';' || *(poChar+1) == ';' || *(poChar+1) == '\0')) {
+            poChar++; /* skip '"' */
+            inString = inString ? FALSE : TRUE;
+            if (inString) {
+                poProp = poChar;
+                if (*poChar == '"') {
+                    poChar++;
+                    inString = FALSE;
+                }
+            }
+            if (*poChar == '\0')
+                break;
+        }
+        if (*poChar == ';' && !inString) {
+            pszProp = (char *) CPLRealloc(pszProp, nLength + 1);
+            if (nLength > 0)
+                strncpy(pszProp, poProp, nLength);
+            pszProp[nLength] = '\0';
+            oPropList.push_back(pszProp);
+            iIndex++;
+            poProp = ++poChar;
+            nLength = 0;
+        }
+        else {
+            poChar++;
+            nLength++;
+        }
+    }
+    /* append last property */
+    if (inString) {
+        nLength--; /* ignore '"' */
+    }
+    pszProp = (char *) CPLRealloc(pszProp, nLength + 1);
+    if (nLength > 0)
+        strncpy(pszProp, poProp, nLength);
+    pszProp[nLength] = '\0';
+    oPropList.push_back(pszProp);
+
+    /* set properties from the list */
+    if (oPropList.size() != (size_t) m_poDataBlock->GetPropertyCount()) {
+        /* try to read also invalid records */
+        CPLDebug("OGR-VFK", "%s: invalid number of properties %d should be %d",
+                 m_poDataBlock->GetName(),
+		 (int) oPropList.size(), m_poDataBlock->GetPropertyCount());
+        return FALSE;
+   }
+    iIndex = 0;
+    for (std::vector<CPLString>::iterator ip = oPropList.begin();
+	 ip != oPropList.end(); ++ip) {
+	SetProperty(iIndex++, (*ip).c_str());
+    }
+
+    /* set fid
+    if (EQUAL(m_poDataBlock->GetName(), "SBP")) {
+        GUIntBig id;
+        const VFKProperty *poVfkProperty;
+
+        poVfkProperty = GetProperty("PORADOVE_CISLO_BODU");
+        if (poVfkProperty)
+        {
+            id = strtoul(poVfkProperty->GetValueS(), NULL, 0);
+            if (id == 1)
+                SetFID(0);
+            else
+                SetFID(-1);
+        }
+    }
+    else {
+        SetFID(0);
+    }
+    */
+    CPLFree(pszProp);
+
+    return TRUE;
+}
+
+/*!
+  \brief Set feature property
+
+  \param iIndex property index
+  \param pszValue property value
+
+  \return TRUE on success
+  \return FALSE on failure
+*/
+bool VFKFeature::SetProperty(int iIndex, const char *pszValue)
+{
+    if (iIndex < 0 || iIndex >= m_poDataBlock->GetPropertyCount() ||
+	size_t(iIndex) >= m_propertyList.size())
+        return FALSE;
+
+    if (strlen(pszValue) < 1)
+        m_propertyList[iIndex] = VFKProperty();
+    else {
+        OGRFieldType fType;
+
+        const char *pszEncoding;
+        char       *pszValueEnc;
+
+        fType = m_poDataBlock->GetProperty(iIndex)->GetType();
+        switch (fType) {
+        case OFTInteger:
+            m_propertyList[iIndex] = VFKProperty(atoi(pszValue));
+            break;
+        case OFTReal:
+            m_propertyList[iIndex] = VFKProperty(CPLAtof(pszValue));
+            break;
+        default:
+            pszEncoding = m_poDataBlock->GetProperty(iIndex)->GetEncoding();
+            if (pszEncoding) {
+                pszValueEnc = CPLRecode(pszValue, pszEncoding,
+                                        CPL_ENC_UTF8);
+                m_propertyList[iIndex] = VFKProperty(pszValueEnc);
+                CPLFree(pszValueEnc);
+            }
+            else {
+                m_propertyList[iIndex] = VFKProperty(pszValue);
+            }
+            break;
+        }
+    }
+    return TRUE;
+}
+
+/*!
+  \brief Get property value by index
+
+  \param iIndex property index
+
+  \return property value
+  \return NULL on error
+*/
+const VFKProperty *VFKFeature::GetProperty(int iIndex) const
+{
+    if (iIndex < 0 || iIndex >= m_poDataBlock->GetPropertyCount() ||
+	size_t(iIndex) >= m_propertyList.size())
+        return NULL;
+
+    const VFKProperty* poProperty = &m_propertyList[iIndex];
+    return poProperty;
+}
+
+/*!
+  \brief Get property value by name
+
+  \param pszName property name
+
+  \return property value
+  \return NULL on error
+*/
+const VFKProperty *VFKFeature::GetProperty(const char *pszName) const
+{
+    return GetProperty(m_poDataBlock->GetPropertyIndex(pszName));
+}
+
+/*!
+  \brief Load geometry (point layers)
+
+  \todo Really needed?
+
+  \return TRUE on success
+  \return FALSE on failure
+*/
+bool VFKFeature::LoadGeometryPoint()
+{
+    double x, y;
+    int i_idxX, i_idxY;
+
+    i_idxY = m_poDataBlock->GetPropertyIndex("SOURADNICE_Y");
+    i_idxX = m_poDataBlock->GetPropertyIndex("SOURADNICE_X");
+    if (i_idxY < 0 || i_idxX < 0)
+        return FALSE;
+
+    x = -1.0 * GetProperty(i_idxY)->GetValueD();
+    y = -1.0 * GetProperty(i_idxX)->GetValueD();
+    OGRPoint pt(x, y);
+    SetGeometry(&pt);
+
+    return TRUE;
+}
+
+/*!
+  \brief Load geometry (linestring SBP layer)
+
+  \todo Really needed?
+
+  \return TRUE on success or FALSE on failure
+*/
+bool VFKFeature::LoadGeometryLineStringSBP()
+{
+    int id, idxId, idxBp_Id, idxPCB, ipcb;
+
+    VFKDataBlock *poDataBlockPoints;
+    VFKFeature   *poPoint, *poLine;
+
+    OGRLineString OGRLine;
+
+    poDataBlockPoints = (VFKDataBlock *) m_poDataBlock->GetReader()->GetDataBlock("SOBR");
+    if (!poDataBlockPoints)
+        return FALSE;
+
+    idxId    = poDataBlockPoints->GetPropertyIndex("ID");
+    idxBp_Id = m_poDataBlock->GetPropertyIndex("BP_ID");
+    idxPCB   = m_poDataBlock->GetPropertyIndex("PORADOVE_CISLO_BODU");
+    if (idxId < 0 || idxBp_Id < 0 || idxPCB < 0)
+        return false;
+
+    poLine = this;
+    while (TRUE)
+    {
+        id   = poLine->GetProperty(idxBp_Id)->GetValueI();
+        ipcb = poLine->GetProperty(idxPCB)->GetValueI();
+        if (OGRLine.getNumPoints() > 0 && ipcb == 1)
+        {
+            m_poDataBlock->GetPreviousFeature(); /* push back */
+            break;
+        }
+
+        poPoint = poDataBlockPoints->GetFeature(idxId, id);
+        if (!poPoint)
+        {
+            continue;
+        }
+        OGRPoint *pt = (OGRPoint *) poPoint->GetGeometry();
+        OGRLine.addPoint(pt);
+
+        poLine = (VFKFeature *) m_poDataBlock->GetNextFeature();
+        if (!poLine)
+            break;
+    };
+
+    OGRLine.setCoordinateDimension(2); /* force 2D */
+    SetGeometry(&OGRLine);
+
+    /* reset reading */
+    poDataBlockPoints->ResetReading();
+
+    return TRUE;
+}
+
+/*!
+  \brief Load geometry (linestring HP/DPM layer)
+
+  \todo Really needed?
+
+  \return TRUE on success or FALSE on failure
+*/
+bool VFKFeature::LoadGeometryLineStringHP()
+{
+    int           id, idxId, idxHp_Id;
+    VFKDataBlock *poDataBlockLines;
+    VFKFeature   *poLine;
+
+    poDataBlockLines = (VFKDataBlock *) m_poDataBlock->GetReader()->GetDataBlock("SBP");
+    if (!poDataBlockLines)
+        return FALSE;
+
+    idxId    = m_poDataBlock->GetPropertyIndex("ID");
+    idxHp_Id = poDataBlockLines->GetPropertyIndex("HP_ID");
+    if (idxId < 0 || idxHp_Id < 0)
+        return FALSE;
+
+    id = GetProperty(idxId)->GetValueI();
+    poLine = poDataBlockLines->GetFeature(idxHp_Id, id);
+    if (!poLine || !poLine->GetGeometry())
+        return FALSE;
+
+    SetGeometry(poLine->GetGeometry());
+    poDataBlockLines->ResetReading();
+
+    return TRUE;
+}
+
+/*!
+  \brief Load geometry (polygon BUD/PAR layers)
+
+  \todo Implement (really needed?)
+
+  \return TRUE on success or FALSE on failure
+*/
+bool VFKFeature::LoadGeometryPolygon()
+{
+    return FALSE;
+}
+OGRErr VFKFeature::LoadProperties(OGRFeature *poFeature)
+{
+    for (int iField = 0; iField < m_poDataBlock->GetPropertyCount(); iField++) {
+        if (GetProperty(iField)->IsNull())
+            continue;
+        OGRFieldType fType = poFeature->GetDefnRef()->GetFieldDefn(iField)->GetType();
+        if (fType == OFTInteger)
+            poFeature->SetField(iField,
+                                GetProperty(iField)->GetValueI());
+        else if (fType == OFTReal)
+            poFeature->SetField(iField,
+                                GetProperty(iField)->GetValueD());
+        else
+            poFeature->SetField(iField,
+                                GetProperty(iField)->GetValueS());
+    }
+
+    return OGRERR_NONE;
+}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/configs/1.10/linux/debian/port/cplkeywordparser.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/configs/1.10/linux/debian/port/cplkeywordparser.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/configs/1.10/linux/debian/port/cplkeywordparser.cpp	(revision 27955)
@@ -0,0 +1,368 @@
+/******************************************************************************
+ * $Id: cplkeywordparser.cpp 20996 2010-10-28 18:38:15Z rouault $
+ *
+ * Project:  Common Portability Library
+ * Purpose:  Implementation of CPLKeywordParser - a class for parsing
+ *           the keyword format used for files like QuickBird .RPB files.
+ *           This is a slight variation on the NASAKeywordParser used for
+ *           the PDS/ISIS2/ISIS3 formats.
+ * Author:   Frank Warmerdam <warmerdam@pobox.com
+ *
+ ******************************************************************************
+ * Copyright (c) 2008, Frank Warmerdam <warmerdam@pobox.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ ****************************************************************************/
+
+#include "cpl_string.h"
+#include "cplkeywordparser.h"
+
+CPL_CVSID("$Id");
+
+/************************************************************************/
+/* ==================================================================== */
+/*                          CPLKeywordParser                           */
+/* ==================================================================== */
+/************************************************************************/
+
+/************************************************************************/
+/*                         CPLKeywordParser()                          */
+/************************************************************************/
+
+CPLKeywordParser::CPLKeywordParser()
+
+{
+    papszKeywordList = NULL;
+}
+
+/************************************************************************/
+/*                        ~CPLKeywordParser()                          */
+/************************************************************************/
+
+CPLKeywordParser::~CPLKeywordParser()
+
+{
+    CSLDestroy( papszKeywordList );
+    papszKeywordList = NULL;
+}
+
+/************************************************************************/
+/*                               Ingest()                               */
+/************************************************************************/
+
+int CPLKeywordParser::Ingest( VSILFILE *fp )
+
+{
+/* -------------------------------------------------------------------- */
+/*      Read in buffer till we find END all on it's own line.           */
+/* -------------------------------------------------------------------- */
+    for( ; TRUE; )
+    {
+        const char *pszCheck;
+        char szChunk[513];
+
+        int nBytesRead = VSIFReadL( szChunk, 1, 512, fp );
+
+        szChunk[nBytesRead] = '\0';
+        osHeaderText += szChunk;
+
+        if( nBytesRead < 512 )
+            break;
+
+        if( osHeaderText.size() > 520 )
+            pszCheck = osHeaderText.c_str() + (osHeaderText.size() - 520);
+        else
+            pszCheck = szChunk;
+
+        if( strstr(pszCheck,"\r\nEND;\r\n") != NULL
+            || strstr(pszCheck,"\nEND;\n") != NULL )
+            break;
+    }
+
+    pszHeaderNext = osHeaderText.c_str();
+
+/* -------------------------------------------------------------------- */
+/*      Process name/value pairs, keeping track of a "path stack".      */
+/* -------------------------------------------------------------------- */
+    return ReadGroup( "" );
+}
+
+/************************************************************************/
+/*                             ReadGroup()                              */
+/************************************************************************/
+
+int CPLKeywordParser::ReadGroup( const char *pszPathPrefix )
+
+{
+    CPLString osName, osValue;
+
+    for( ; TRUE; )
+    {
+        if( !ReadPair( osName, osValue ) )
+            return FALSE;
+
+        if( EQUAL(osName,"BEGIN_GROUP") )
+        {
+            if( !ReadGroup( (CPLString(pszPathPrefix) + osValue + ".").c_str() ) )
+                return FALSE;
+        }
+        else if( EQUALN(osName,"END",3) )
+        {
+            return TRUE;
+        }
+        else
+        {
+            osName = pszPathPrefix + osName;
+            papszKeywordList = CSLSetNameValue( papszKeywordList,
+                                                osName, osValue );
+        }
+    }
+}
+
+/************************************************************************/
+/*                              ReadPair()                              */
+/*                                                                      */
+/*      Read a name/value pair from the input stream.  Strip off        */
+/*      white space, ignore comments, split on '='.                     */
+/************************************************************************/
+
+int CPLKeywordParser::ReadPair( CPLString &osName, CPLString &osValue )
+
+{
+    osName = "";
+    osValue = "";
+
+    if( !ReadWord( osName ) )
+        return FALSE;
+
+    SkipWhite();
+
+    if( EQUAL(osName,"END") )
+        return TRUE;
+
+    if( *pszHeaderNext != '=' )
+    {
+        // ISIS3 does not have anything after the end group/object keyword.
+        if( EQUAL(osName,"End_Group") || EQUAL(osName,"End_Object") )
+            return TRUE;
+        else
+            return FALSE;
+    }
+
+    pszHeaderNext++;
+
+    SkipWhite();
+
+    osValue = "";
+
+    // Handle value lists like:     Name   = (Red, Red)
+    // or list of lists like : TLCList = ( (0,  0.000000), (8299,  4.811014) );
+    if( *pszHeaderNext == '(' )
+    {
+        CPLString osWord;
+        int nDepth = 0;
+        const char* pszLastPos = pszHeaderNext;
+
+        while( ReadWord( osWord ) && pszLastPos != pszHeaderNext)
+        {
+            SkipWhite();
+            pszLastPos = pszHeaderNext;
+
+            osValue += osWord;
+            const char* pszIter = osWord.c_str();
+            int bInQuote = FALSE;
+            while(*pszIter != '\0')
+            {
+                if (*pszIter == '"')
+                    bInQuote = !bInQuote;
+                else if (!bInQuote)
+                {
+                    if (*pszIter == '(')
+                        nDepth ++;
+                    else if (*pszIter == ')')
+                    {
+                        nDepth --;
+                        if (nDepth == 0)
+                            break;
+                    }
+                }
+                pszIter ++;
+            }
+            if (*pszIter == ')' && nDepth == 0)
+                break;
+        }
+    }
+
+    else // Handle more normal "single word" values.
+    {
+        if( !ReadWord( osValue ) )
+            return FALSE;
+
+    }
+
+    SkipWhite();
+
+    // No units keyword?
+    if( *pszHeaderNext != '<' )
+        return TRUE;
+
+    // Append units keyword.  For lines that like like this:
+    //  MAP_RESOLUTION               = 4.0 <PIXEL/DEGREE>
+
+    CPLString osWord;
+
+    osValue += " ";
+
+    while( ReadWord( osWord ) )
+    {
+        SkipWhite();
+
+        osValue += osWord;
+        if( osWord[strlen(osWord)-1] == '>' )
+            break;
+    }
+
+    return TRUE;
+}
+
+/************************************************************************/
+/*                              ReadWord()                              */
+/************************************************************************/
+
+int CPLKeywordParser::ReadWord( CPLString &osWord )
+
+{
+    osWord = "";
+
+    SkipWhite();
+
+    if( *pszHeaderNext == '\0' || *pszHeaderNext == '=' )
+        return FALSE;
+
+    while( *pszHeaderNext != '\0'
+           && *pszHeaderNext != '='
+           && *pszHeaderNext != ';'
+           && !isspace((unsigned char)*pszHeaderNext) )
+    {
+        if( *pszHeaderNext == '"' )
+        {
+            osWord += *(pszHeaderNext++);
+            while( *pszHeaderNext != '"' )
+            {
+                if( *pszHeaderNext == '\0' )
+                    return FALSE;
+
+                osWord += *(pszHeaderNext++);
+            }
+            osWord += *(pszHeaderNext++);
+        }
+        else if( *pszHeaderNext == '\'' )
+        {
+            osWord += *(pszHeaderNext++);
+            while( *pszHeaderNext != '\'' )
+            {
+                if( *pszHeaderNext == '\0' )
+                    return FALSE;
+
+                osWord += *(pszHeaderNext++);
+            }
+            osWord += *(pszHeaderNext++);
+        }
+        else
+        {
+            osWord += *pszHeaderNext;
+            pszHeaderNext++;
+        }
+    }
+
+    if( *pszHeaderNext == ';' )
+        pszHeaderNext++;
+
+    return TRUE;
+}
+
+/************************************************************************/
+/*                             SkipWhite()                              */
+/************************************************************************/
+
+void CPLKeywordParser::SkipWhite()
+
+{
+    for( ; TRUE; )
+    {
+        // Skip white space (newline, space, tab, etc )
+        if( isspace( (unsigned char)*pszHeaderNext ) )
+        {
+            pszHeaderNext++;
+            continue;
+        }
+
+        // Skip C style comments
+        if( *pszHeaderNext == '/' && pszHeaderNext[1] == '*' )
+        {
+            pszHeaderNext += 2;
+
+            while( *pszHeaderNext != '\0'
+                   && (*pszHeaderNext != '*'
+                       || pszHeaderNext[1] != '/' ) )
+            {
+                pszHeaderNext++;
+            }
+
+            pszHeaderNext += 2;
+            continue;
+        }
+
+        // Skip # style comments
+        if( *pszHeaderNext == '#'  )
+        {
+            pszHeaderNext += 1;
+
+            // consume till end of line.
+            while( *pszHeaderNext != '\0'
+                   && *pszHeaderNext != 10
+                   && *pszHeaderNext != 13 )
+            {
+                pszHeaderNext++;
+            }
+            continue;
+        }
+
+        // not white space, return.
+        return;
+    }
+}
+
+/************************************************************************/
+/*                             GetKeyword()                             */
+/************************************************************************/
+
+const char *CPLKeywordParser::GetKeyword( const char *pszPath,
+                                            const char *pszDefault )
+
+{
+    const char *pszResult;
+
+    pszResult = CSLFetchNameValue( papszKeywordList, pszPath );
+    if( pszResult == NULL )
+        return pszDefault;
+    else
+        return pszResult;
+}
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/configs/GDALmake.opt.patch.murdo
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/configs/GDALmake.opt.patch.murdo	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/configs/GDALmake.opt.patch.murdo	(revision 27955)
@@ -0,0 +1,8 @@
+31c31
+< LIBS	=	$(SDE_LIB) -I/usr/include -lsqlite3 -L/usr/lib -lexpat -ljpeg -lpng -lz  -lm -lrt -ldl  $(KAK_LIBS) $(DWG_LIBS) $(CURL_LIB) \
+---
+> LIBS	=	$(SDE_LIB) -I/usr/include -lsqlite3 -L/usr/lib64 -lexpat -ljpeg -lpng -lz  -lm -lrt -ldl  $(KAK_LIBS) $(DWG_LIBS) $(CURL_LIB) \
+225c225
+< CURL_LIB	=	-L/usr/kerberos/lib64 -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz  
+---
+> CURL_LIB	=	-L/usr/lib64 -lcurl -ldl -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lidn -lssl -lcrypto -lz  
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/install-3-python-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/install-3-python-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/install-3-python-static.sh	(revision 27955)
@@ -0,0 +1,63 @@
+#!/bin/bash
+set -eu
+
+
+## TODO
+#	- May want to supply path to Python instead of, effectively, using result of `which python`
+#
+
+## Constants
+#
+VER="3.5.3"
+
+## Environment
+#
+export CC=mpicc
+export CXXFLAGS="-std=c++11"
+export CXX=mpicxx
+export LIBS="-lsqlite3 -lhdf5_hl -lhdf5"
+export PREFIX="${ISSM_DIR}/externalpackages/gdal/install" # Need this to properly set destination root for Python libraries on macOS (should not affect Linux build; do not need for this configuration, but including it for consistency)
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gdal-${VER}.tar.gz" "gdal-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf gdal-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv gdal-${VER}/* src
+rm -rf gdal-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--enable-fast-install \
+	--disable-shared \
+	--without-ld-shared \
+	--enable-static \
+	--with-pic \
+	--with-python="python3" \
+	--with-curl="${CURL_ROOT}/bin/curl-config" \
+	--with-hdf5="${HDF5_ROOT}" \
+	--with-jpeg=internal \
+	--with-libz="${ZLIB_ROOT}" \
+	--with-netcdf="${NETCDF_ROOT}" \
+	--with-pcre=no \
+	--with-pg=no \
+	--with-png=internal \
+	--with-proj="${PROJ_ROOT}" \
+	--with-zstd=no
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/install-3-python.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/install-3-python.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/install-3-python.sh	(revision 27955)
@@ -0,0 +1,50 @@
+#!/bin/bash
+set -eu
+
+
+## TODO
+#	- May want to supply path to Python instead of, effectively, using result of `which python`
+#
+
+## Constants
+#
+VER="3.5.3"
+
+## Environment
+#
+export PREFIX="${ISSM_DIR}/externalpackages/gdal/install" # NOTE: Need to export this to properly set destination root for Python libraries on macOS (should not affect Linux build). Set to location where external package should be installed.
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gdal-${VER}.tar.gz" "gdal-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf gdal-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv gdal-${VER}/* src
+rm -rf gdal-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--enable-fast-install \
+	--with-python="python3" \
+	--with-curl="${CURL_ROOT}/bin/curl-config" \
+	--with-hdf5="${HDF5_ROOT}" \
+	--with-libz="${ZLIB_ROOT}" \
+	--with-netcdf="${NETCDF_ROOT}" \
+	--with-proj="${PROJ_ROOT}"
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/install-3-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/install-3-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/install-3-static.sh	(revision 27955)
@@ -0,0 +1,62 @@
+#!/bin/bash
+set -eu
+
+
+## TODO
+#	- May want to supply path to Python instead of, effectively, using result of `which python`
+#
+
+## Constants
+#
+VER="3.5.3"
+
+## Environment
+#
+export CC=mpicc
+export CXXFLAGS="-std=c++11"
+export CXX=mpicxx
+export LIBS="-lsqlite3 -lhdf5_hl -lhdf5"
+export PREFIX="${ISSM_DIR}/externalpackages/gdal/install" # NOTE: Need to export this to properly set destination root for Python libraries on macOS (should not affect Linux build). Set to location where external package should be installed.
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gdal-${VER}.tar.gz" "gdal-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf gdal-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv gdal-${VER}/* src
+rm -rf gdal-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--enable-fast-install \
+	--disable-shared \
+	--without-ld-shared \
+	--enable-static \
+	--with-pic \
+	--with-curl="${CURL_ROOT}/bin/curl-config" \
+	--with-hdf5="${HDF5_ROOT}" \
+	--with-jpeg=internal \
+	--with-libz="${ZLIB_ROOT}" \
+	--with-netcdf="${NETCDF_ROOT}" \
+	--with-pcre=no \
+	--with-pg=no \
+	--with-png=internal \
+	--with-proj="${PROJ_ROOT}" \
+	--with-zstd=no
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/install-3.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/install-3.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gdal/install-3.sh	(revision 27955)
@@ -0,0 +1,43 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.5.3"
+
+## Environment
+#
+export PREFIX="${ISSM_DIR}/externalpackages/gdal/install" # NOTE: Need to export this to properly set destination root for Python libraries on macOS (should not affect Linux build). Set to location where external package should be installed.
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gdal-${VER}.tar.gz" "gdal-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf gdal-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv gdal-${VER}/* src
+rm -rf gdal-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--enable-fast-install \
+	--with-libz="${ZLIB_ROOT}" \
+	--with-netcdf="${NETCDF_ROOT}" \
+	--with-proj="${PROJ_ROOT}"
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/geocode/geoCode.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/geocode/geoCode.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/geocode/geoCode.m	(revision 27955)
@@ -0,0 +1,180 @@
+function [c] = geoCode(address, service, key)
+%GEOCODE look up the latitude and longitude of a an address
+%
+%   COORDS = GEOCODE( ADDRESS ) returns the geocoded latitude and longitude 
+%   of the input address. 
+%
+%   COORDS = GEOCODE( ADDRESS, SERVICE) performs the look up using the
+%   specified SERVICE. Valid services are
+%       google  - Google Maps  (default service)
+%       osm     - OpenStreetMap
+%       yahoo   - Yahoo! Place Finder 
+%
+%   COORDS = GEOCODE( ..., SERVICE, APIKEY) allows the specifcation of an AppId
+%   API key if needed.
+
+% Copyright(c) 2012, Stuart P. Layton <stuart.layton@gmail.com>
+% http://stuartlayton.com
+%
+% Revision History
+%   2012/08/20 - Initial Release
+%   2012/08/20 - Simplified XML parsing code
+
+
+% Validate the input arguments
+
+% Check to see if address is a valid string
+if isempty(address) || ~ischar(address) || ~isvector(address)
+    error('Invalid address provided, must be a string');
+end
+
+% if no service is specified or an empty service is specified use google
+if nargin<2 || isempty(service) 
+    service = 'google';
+end
+
+% if no key is specified then set it to empty, also check to see if char array
+if nargin<3 
+    key = [];
+end
+
+%replace white spaces in the address with '+'
+address = regexprep(address, ' ', '+');
+
+% Switch on the specified service, construct the Query URL, and specify the
+% function that will be used to parse the resulting XML 
+switch lower(service)
+    case('google')
+        SERVER_URL = 'http://maps.google.com';
+        queryUrl = sprintf('%s/maps/geo?output=xml&q=%s',SERVER_URL, address);
+        parseFcn = @parseGoogleMapsXML;
+
+    case('yahoo')
+      
+        SERVER_URL = 'http://where.yahooapis.com/geocode';
+        queryUrl = sprintf('%s?location=%s',SERVER_URL, address);
+       
+% The Yahoo docs say that an AppID is required although
+% it appears that responses are given without a valid appid 
+% If an AppId is provided include it in the URL
+        if ~isempty(key)
+            queryUrl = sprintf('%s&appid=%s', queryUrl, key);
+        end
+        
+        parseFcn = @parseYahooLocalXML;
+        
+    
+    case {'osm', 'openstreetmaps', 'open street maps'}
+        
+		SERVER_URL = 'https://nominatim.openstreetmap.org/search';
+        queryUrl = sprintf('%s?format=xml&q=%s', SERVER_URL, address);
+        parseFcn = @parseOpenStreetMapXML;
+
+    otherwise
+        error('Invalid geocoding service specified:%s', service);
+end
+
+    try
+        docNode = xmlread(queryUrl);
+    catch  %#ok<CTCH>
+        error('Error, could not reach %s, is it a valid URL?', SERVER_URL);
+    end
+   
+    c = parseFcn(docNode);
+end
+
+% Function to parse the XML response from Google Maps
+function [c] = parseGoogleMapsXML(docNode)
+    
+    %check the response code to see if we got a valid response
+    codeEl = docNode.getElementsByTagName('code');
+    errCode = str2double( char( codeEl.item(0).getTextContent ) );
+    % code 200 is associated with a valid geocode xml file
+    if errCode~=200
+        fprintf('No data received from server! Received code:%d\n', errCode)
+        c = nan(2,1);
+        return;
+    end
+
+    %get the 'coordinates' element from the document
+    cordEl = docNode.getElementsByTagName('coordinates');
+    
+    %make sure the xml actually included a coordinates tag
+    if cordEl.length<1
+        c = nan(2,1);
+        warning('No coordinates returned for the specified address');
+        return;
+    end
+        
+    % get the coordinates from the first node, convert them to numbers
+    coords = cellfun(@str2double, regexp( char( cordEl.item(0).getTextContent), ',', 'split'));
+    
+    c = coords([2, 1]); % return the latitude and longitude
+end
+
+% Function to parse the XML response from Yahoo Local
+function [c] = parseYahooLocalXML(docNode)
+    
+    %check the response code to see if we got a valid response
+    codeEl = docNode.getElementsByTagName('Error');
+    errCode = str2double( char( codeEl.item(0).getTextContent ) );
+    
+    % code 0 is associated with a valid geocode xml file
+    if errCode~=0
+        fprintf('No data received from server! Received code:%d\n', errCode)
+        c = nan(2,1);
+        return;
+    end
+    
+    %check to see if a location was actually found
+    foundEl = docNode.getElementsByTagName('Found');
+    found = str2double( char( foundEl.item(0).getTextContent) );
+    % 
+    if found<1
+        disp('A location with that address was not found!');
+        c = nan(2,1);
+        return;
+    end
+    
+    
+    latEl = docNode.getElementsByTagName('latitude');
+    lonEl = docNode.getElementsByTagName('longitude');
+    
+    %make sure the xml actually included latitude and longitude tags
+    if latEl.length==0 || lonEl.length==0
+        c = nan(2,1);
+        disp('No coordinates were found for that address');   
+        return;
+    end
+    
+    c(1) = str2double( char( latEl.item(0).getTextContent) );
+    c(2) = str2double( char( lonEl.item(0).getTextContent) );
+    
+end
+
+% Function to parse the XML response from OpenStreetMap
+function [c] = parseOpenStreetMapXML(docNode)
+    
+    serverResponse = docNode.getElementsByTagName('searchresults').item(0);
+    placeTag = serverResponse.getElementsByTagName('place').item(0);
+    
+    if isempty(placeTag)
+        disp('OpenStreeMap returned no data for that address');%#ok
+        c = nan(2,1);
+        return;
+    end
+    
+    c(1) = str2double( char( placeTag.getAttribute('lat') ) );
+    c(2) = str2double( char( placeTag.getAttribute('lon') ) );
+    
+end
+
+
+function elementText = GetElementText(resultNode,elementName)
+% GETELEMENTTEXT given a result node and an element name
+% returns the text within that node as a Matlab CHAR array
+
+elementText = ...
+    char( resultNode.getElementsByTagName(elementName).item(0).getTextContent );
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/geocode/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/geocode/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/geocode/install.sh	(revision 27955)
@@ -0,0 +1,2 @@
+#/bin/bash
+unzip geoCode.zip
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/geocode/license.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/geocode/license.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/geocode/license.txt	(revision 27955)
@@ -0,0 +1,24 @@
+Copyright (c) 2012, Stuart Layton
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * 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
+
+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 OWNER 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.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/geos5/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/geos5/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/geos5/install.sh	(revision 27955)
@@ -0,0 +1,7 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf  GEOSagcm
+#svn download
+svn --username eric.larour@jpl.nasa.gov checkout http://geos5.org/svn/branches/Fortuna-2_5_p1 GEOSagcm
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/git/install-macosx64-sierra.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/git/install-macosx64-sierra.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/git/install-macosx64-sierra.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install git-1.7.10.2
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/git-1.7.10.2.tar.gz' 'git-1.7.10.2.tar.gz'
+
+#Untar 
+tar -zxvf  git-1.7.10.2.tar.gz
+
+#Move git into install directory
+mv git-1.7.10.2/* src
+rm -rf git-1.7.10.2
+
+#install
+cd src 
+./configure  CFLAGS="-I/usr/local/include" --prefix="$ISSM_DIR/externalpackages/git/install" 
+# --with-python="$ISSM_DIR/externalpackages/python/install/bin/python" #Do we really need this line?
+	
+#Compile
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/git/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/git/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/git/install.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install git-1.7.10.2
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/git-1.7.10.2.tar.gz' 'git-1.7.10.2.tar.gz'
+
+#Untar 
+tar -zxvf  git-1.7.10.2.tar.gz
+
+#Move git into install directory
+mv git-1.7.10.2/* src
+rm -rf git-1.7.10.2
+
+#install
+cd src 
+./configure  --prefix="$ISSM_DIR/externalpackages/git/install" 
+#--with-python="$ISSM_DIR/externalpackages/python/install/bin/python" #Do we really need this line?
+	
+#Compile
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmake/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmake/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmake/install.sh	(revision 27955)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src make-3.82
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/make-3.82.tar.gz' 'make-3.82.tar.gz'
+
+#Untar 
+tar -zxvf  make-3.82.tar.gz
+
+#Move make into install directory
+mv make-3.82/* src
+rm -rf make-3.82
+
+#Apply patches
+cd src 
+
+#Configure and compile: 
+./configure --prefix=$ISSM_DIR/externalpackages/gmake/install
+
+if [ $# -eq 0 ]; then
+	make
+	make install
+else 
+	make -j $1; 
+	make -j $1 install;
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmp/install-linux64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmp/install-linux64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmp/install-linux64.sh	(revision 27955)
@@ -0,0 +1,29 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install gmp-5.0.5 
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/gmp-5.0.5.tar.bz2' 'gmp-5.0.5.tar.bz2'
+
+#Untar 
+bunzip2 gmp-5.0.5.tar.bz2
+tar -xvf  gmp-5.0.5.tar
+
+#Move gmp into install directory
+mv gmp-5.0.5/* src
+rm -rf gmp-5.0.5
+
+#install
+cd src 
+./configure --prefix="$ISSM_DIR/externalpackages/gmp/install" 
+
+#Compile and install gmp
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/configs/4.10.5/mac/CMakeLists.txt.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/configs/4.10.5/mac/CMakeLists.txt.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/configs/4.10.5/mac/CMakeLists.txt.patch	(revision 27955)
@@ -0,0 +1,4 @@
+284c284
+<       set(CMAKE_INSTALL_RPATH "@executable_path/../lib")
+---
+>       set(CMAKE_INSTALL_RPATH "@executable_path/../lib;${LIBGFORTRAN_ROOT}")
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/configs/4.10.5/static/CMakeLists.txt.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/configs/4.10.5/static/CMakeLists.txt.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/configs/4.10.5/static/CMakeLists.txt.patch	(revision 27955)
@@ -0,0 +1,9 @@
+858,861c860,862
+<     find_library(METIS_LIB metis PATH_SUFFIXES lib)
+<     find_path(METIS_INC "metis.h" PATH_SUFFIXES include)
+<     if(ENABLE_SYSTEM_CONTRIB AND METIS_LIB AND METIS_INC)
+<       message(STATUS "Using system version of METIS")
+---
+>     if(METIS_ROOT)
+>       find_library(METIS_LIB metis PATHS ${METIS_ROOT} PATH_SUFFIXES lib)
+>       find_path(METIS_INC "metis.h" PATHS ${METIS_ROOT} PATH_SUFFIXES include)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/configs/4.10.5/static/mac/CMakeLists.txt.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/configs/4.10.5/static/mac/CMakeLists.txt.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/configs/4.10.5/static/mac/CMakeLists.txt.patch	(revision 27955)
@@ -0,0 +1,4 @@
+207a208
+>   set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".so")
+226a228
+>   set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".so")
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/configs/4.5.6/static/CMakeLists.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/configs/4.5.6/static/CMakeLists.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/configs/4.5.6/static/CMakeLists.txt	(revision 27955)
@@ -0,0 +1,2141 @@
+# Gmsh - Copyright (C) 1997-2020 C. Geuzaine, J.-F. Remacle
+#
+# See the LICENSE.txt file for license information. Please report all
+# issues on https://gitlab.onelab.info/gmsh/gmsh/issues.
+
+cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
+
+# do not warn about non-definition of WIN32 on Cygwin
+set(CMAKE_LEGACY_CYGWIN_WIN32 0)
+
+# if CMAKE_BUILD_TYPE is specified use it; otherwise set the default
+# build type to "RelWithDebInfo" ("-O2 -g" with gcc) prior to calling
+# project()
+if(DEFINED CMAKE_BUILD_TYPE)
+  set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Choose build type")
+else()
+  set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose build type")
+endif()
+
+project(gmsh CXX C)
+
+# this variable controls the default value of the options which are normally set
+# to ON (useful if you want to configure a minimal version of Gmsh: e.g. "cmake
+# -DDEFAULT=0 -DENABLE_POST=1 -DENABLE_PARSER=1")
+set(DEFAULT ON CACHE INTERNAL "Default value for enabled-by-default options")
+
+macro(opt OPTION HELP VALUE)
+  option(ENABLE_${OPTION} ${HELP} ${VALUE})
+  set(OPT_TEXI "${OPT_TEXI}\n@item ENABLE_${OPTION}\n${HELP} (default: ${VALUE})")
+endmacro()
+
+opt(3M "Enable proprietary 3M extension" OFF)
+opt(ACIS "Enable ACIS geometrical models (experimental)" ${DEFAULT})
+opt(ALGLIB "Enable ALGLIB (used by some mesh optimizers)" ${DEFAULT})
+opt(ANN "Enable ANN (used for fast point search in mesh/post)" ${DEFAULT})
+opt(BAMG "Enable Bamg 2D anisotropic mesh generator" ${DEFAULT})
+opt(BLAS_LAPACK "Enable BLAS/Lapack for linear algebra (required for meshing)" ON)
+opt(BLOSSOM "Enable Blossom algorithm (needed for full quad meshing)" ${DEFAULT})
+opt(BUILD_LIB "Enable 'lib' target for building static Gmsh library" OFF)
+opt(BUILD_SHARED "Enable 'shared' target for building shared Gmsh library" OFF)
+opt(BUILD_DYNAMIC "Enable dynamic Gmsh executable (linked with shared library)" OFF)
+opt(BUILD_ANDROID "Enable Android NDK library target (experimental)" OFF)
+opt(BUILD_IOS "Enable iOS library target (experimental)" OFF)
+opt(CGNS "Enable CGNS import/export (experimental)" ${DEFAULT})
+opt(CGNS_CPEX0045 "Enable high-order CGNS import/export following CPEX0045 (experimental)" OFF)
+opt(CAIRO "Enable Cairo to render fonts (experimental)" ${DEFAULT})
+opt(CXX11 "Enable C++11" ON)
+opt(C99 "Enable C99" ON)
+opt(PROFILE "Enable profiling compiler flags" OFF)
+opt(DINTEGRATION "Enable discrete integration (needed for levelsets)" ${DEFAULT})
+opt(DOMHEX "Enable experimental DOMHEX code" ${DEFAULT})
+opt(FLTK "Enable FLTK graphical user interface (requires mesh/post)" ${DEFAULT})
+opt(GETDP "Enable GetDP solver (linked as a library, experimental)" ${DEFAULT})
+opt(GMM "Enable GMM linear solvers (simple alternative to PETSc)" ${DEFAULT})
+opt(GMP "Enable GMP for Kbipack (advanced)" ON)
+opt(GRAPHICS "Enable building graphics lib even without GUI (advanced)" OFF)
+opt(HXT "Enable HXT library (for reparametrization and meshing)" ${DEFAULT})
+opt(KBIPACK "Enable Kbipack (neeeded by homology solver)" ${DEFAULT})
+opt(MATHEX "Enable Mathex expression parser (used by plugins and options)" ${DEFAULT})
+opt(MED "Enable MED mesh and post file formats" ${DEFAULT})
+opt(MESH "Enable mesh module (required by GUI)" ${DEFAULT})
+opt(METIS "Enable Metis mesh partitioner" ${DEFAULT})
+opt(MMG3D "Enable MMG3D 3D anisotropic mesh refinement" ${DEFAULT})
+opt(MPEG_ENCODE "Enable built-in MPEG movie encoder" ${DEFAULT})
+opt(MPI "Enable MPI (experimental, not used for meshing)" OFF)
+opt(MSVC_STATIC_RUNTIME "Enable static Visual C++ runtime" OFF)
+opt(MUMPS "Enable MUMPS sparse direct linear solver" OFF)
+opt(NETGEN "Enable Netgen 3D frontal mesh generator" ${DEFAULT})
+opt(NUMPY "Enable fullMatrix and numpy array conversion for private API" OFF)
+opt(PETSC4PY "Enable petsc4py wrappers for petsc matrices for private API" OFF)
+opt(OCC "Enable OpenCASCADE CAD kernel" ${DEFAULT})
+opt(OCC_CAF "Enable OpenCASCADE CAF module (for STEP/IGES attributes)" ${DEFAULT})
+opt(OCC_STATIC "Link OpenCASCADE static instead of dynamic libraries (requires ENABLE_OCC)" OFF)
+opt(OCC_TBB "Add TBB libraries in list of OCC libraries" OFF)
+opt(ONELAB "Enable ONELAB solver interface" ${DEFAULT})
+opt(ONELAB_METAMODEL "Enable ONELAB metamodels (experimental)" ${DEFAULT})
+opt(OPENACC "Enable OpenACC" OFF)
+opt(OPENMP "Enable OpenMP" OFF)
+opt(OPTHOM "Enable high-order mesh optimization tools" ${DEFAULT})
+opt(OS_SPECIFIC_INSTALL "Enable OS-specific (e.g. app bundle) installation" OFF)
+opt(OSMESA "Enable OSMesa for offscreen rendering (experimental)" OFF)
+opt(P4EST "Enable p4est for enabling automatic mesh size firld (experimental)" OFF)
+opt(PACKAGE_STRIP "Strip symbols in install packages to reduce install size" ON)
+opt(PARSER "Enable GEO file parser (required for .geo/.pos files)" ${DEFAULT})
+opt(PETSC "Enable PETSc linear solvers (required for SLEPc)" OFF)
+opt(PLUGINS "Enable post-processing plugins" ${DEFAULT})
+opt(POST "Enable post-processing module (required by GUI)" ${DEFAULT})
+opt(POPPLER "Enable Poppler for displaying PDF documents (experimental)" OFF)
+opt(PRIVATE_API "Enable private API" OFF)
+opt(QUADTRI "Enable QuadTri structured meshing extensions" ${DEFAULT})
+opt(REVOROPT "Enable Revoropt (used for CVT remeshing)" OFF)
+opt(SLEPC "Enable SLEPc eigensolvers" OFF)
+opt(SOLVER "Enable built-in finite element solvers (required for compounds)" ${DEFAULT})
+opt(SYSTEM_CONTRIB "Use system versions of contrib libraries, when possible" OFF)
+opt(TCMALLOC "Enable libtcmalloc (fast malloc that does not release memory)" OFF)
+opt(TOUCHBAR "Enable Apple Touch bar" ${DEFAULT})
+opt(VISUDEV "Enable additional visualization capabilities for development purposes" OFF)
+opt(VOROPP "Enable voro++ (for hex meshing, experimental)" ${DEFAULT})
+opt(WRAP_JAVA "Enable generation of Java wrappers for private API" OFF)
+opt(WRAP_PYTHON "Enable generation of Python wrappers for private API" OFF)
+opt(ZIPPER "Enable Zip file compression/decompression" OFF)
+
+set(GMSH_MAJOR_VERSION 4)
+set(GMSH_MINOR_VERSION 5)
+set(GMSH_PATCH_VERSION 6)
+set(GMSH_EXTRA_VERSION "")
+set(GMSH_EXTRA_VERSION_TEXI "${GMSH_EXTRA_VERSION}")
+
+if(NOT GMSH_RELEASE)
+  find_package(Git)
+  if(GIT_FOUND)
+    execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%h
+                    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ERROR_QUIET
+                    OUTPUT_VARIABLE GIT_COMMIT_HASH
+                    OUTPUT_STRIP_TRAILING_WHITESPACE)
+  endif()
+  if(GIT_COMMIT_HASH)
+    set(GMSH_EXTRA_VERSION "${GMSH_EXTRA_VERSION}-git-${GIT_COMMIT_HASH}")
+  endif()
+  set(GMSH_EXTRA_VERSION_TEXI "${GMSH_EXTRA_VERSION_TEXI} (development version)")
+endif()
+
+set(GMSH_VERSION "${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}")
+set(GMSH_VERSION "${GMSH_VERSION}.${GMSH_PATCH_VERSION}${GMSH_EXTRA_VERSION}")
+set(GMSH_SHORT_LICENSE "GNU General Public License")
+
+set(GMSH_API api/gmsh.h api/gmshc.h api/gmsh.h_cwrap)
+
+if(ENABLE_PRIVATE_API)
+  message(WARNING "The private API is unsupported and undocumented. It is meant "
+          "for expert Gmsh developers, not for regular Gmsh users, who should rely "
+          "on the stable public API (gmsh/api) instead. If you are repackaging Gmsh, "
+          "e.g. for a Linux distribution, please DO NOT distribute the private API "
+          "(i.e. all the internal headers) and ship the stable public API instead "
+          "(i.e. only the headers and modules in gmsh/api).")
+  file(GLOB_RECURSE HEADERS Common/*.h Numeric/*.h Geo/*.h Mesh/*.h Solver/*.h
+    Post/*.h Graphics/*.h contrib/kbipack/*.h contrib/DiscreteIntegration/*.h
+    contrib/HighOrderMeshOptimizer/*.h contrib/MeshOptimizer/*.h
+    contrib/MeshQualityOptimizer/*.h)
+  set(GMSH_PRIVATE_API ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshConfig.h
+      ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshVersion.h ${HEADERS})
+  get_property(IAMCHILD DIRECTORY PROPERTY PARENT_DIRECTORY)
+  if(IAMCHILD)
+    set(GMSH_PRIVATE_API ${GMSH_PRIVATE_API} PARENT_SCOPE)
+  endif()
+endif()
+
+set(ONELAB_PY contrib/onelab/python/onelab.py)
+set(GMSH_PY api/gmsh.py)
+set(GMSH_JL api/gmsh.jl)
+
+if(${CMAKE_MAJOR_VERSION} GREATER 2)
+  string(TIMESTAMP DATE "%Y%m%d")
+else()
+  execute_process(COMMAND date "+%Y%m%d" OUTPUT_VARIABLE DATE
+                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+endif()
+
+if(NOT DATE)
+  set(DATE "unknown")
+endif()
+set(GMSH_DATE "${DATE}")
+
+if(NOT GMSH_HOST)
+  execute_process(COMMAND hostname OUTPUT_VARIABLE HOSTNAME
+                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+  if(NOT HOSTNAME)
+    set(HOSTNAME "unknown")
+  endif()
+  set(GMSH_HOST "${HOSTNAME}")
+endif()
+
+if(NOT GMSH_PACKAGER)
+  execute_process(COMMAND whoami OUTPUT_VARIABLE PACKAGER
+                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+  if(NOT PACKAGER)
+    set(PACKAGER "unknown")
+  endif()
+  string(REPLACE "\\" " " PACKAGER ${PACKAGER})
+  set(GMSH_PACKAGER "${PACKAGER}")
+endif()
+
+if(APPLE)
+  set(GMSH_OS "MacOSX")
+elseif(CYGWIN OR MSYS)
+  # detect if we use the MinGW compilers on Cygwin - if we do, handle the build
+  # as a pure Windows build
+  if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR
+     CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+    execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine
+                    OUTPUT_VARIABLE CXX_COMPILER_MACHINE
+                    OUTPUT_STRIP_TRAILING_WHITESPACE)
+    if(CXX_COMPILER_MACHINE MATCHES "mingw")
+      set(GMSH_OS "Windows")
+      set(WIN32 1)
+      add_definitions(-DWIN32)
+    endif()
+  endif()
+else()
+  set(GMSH_OS "${CMAKE_SYSTEM_NAME}")
+endif()
+
+include(CheckTypeSize)
+include(CheckFunctionExists)
+include(CheckIncludeFile)
+include(CheckCXXCompilerFlag)
+include(CheckCCompilerFlag)
+
+macro(set_config_option VARNAME STRING)
+  set(${VARNAME} TRUE)
+  list(APPEND CONFIG_OPTIONS ${STRING})
+  message(STATUS "Found " ${STRING})
+endmacro()
+
+# check if the machine is 64 bits (this is more reliable than using
+# CMAKE_SIZEOF_VOID_P, which does not seem to work e.g. on some Suse
+# machines)
+check_type_size("void*" SIZEOF_VOID_P)
+if(SIZEOF_VOID_P EQUAL 8)
+  set_config_option(HAVE_64BIT_SIZE_T "64Bit")
+endif()
+
+# append 32/64 to the build name on Linux and Windows
+if(NOT APPLE)
+  if(HAVE_64BIT_SIZE_T)
+    set(GMSH_OS "${GMSH_OS}64")
+  else()
+    set(GMSH_OS "${GMSH_OS}32")
+  endif()
+endif()
+
+if(NOT ENABLE_BUILD_SHARED)
+  if(ENABLE_WRAP_PYTHON OR ENABLE_WRAP_JAVA)
+    set(ENABLE_BUILD_DYNAMIC ON)
+  endif()
+endif()
+
+if(ENABLE_BUILD_DYNAMIC)
+  set(GMSH_OS "${GMSH_OS}-sdk")
+endif()
+
+if(APPLE)
+  # FIXME: change this once we understand rpaths - the options below do not work
+  set(CMAKE_MACOSX_RPATH 0)
+else()
+  # make sure that dynamic libraries can be found when installing/ displacing the
+  # binaries: from https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/
+  # RPATH-handling:
+
+  # use, i.e. don't skip the full RPATH for the build tree
+  set(CMAKE_SKIP_BUILD_RPATH  FALSE)
+
+  # when building, don't use the install RPATH already (but later on when
+  # installing)
+  set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
+  set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
+
+  # add the automatically determined parts of the RPATH which point to
+  # directories outside the build tree to the install RPATH
+  set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+
+  # the RPATH to be used when installing, but only if it's not a system directory
+  list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib"
+       isSystemDir)
+  if("${isSystemDir}" STREQUAL "-1")
+     set(CMAKE_INSTALL_RPATH "\\\$ORIGIN/../lib")
+  endif()
+endif()
+
+if(MSVC)
+  # remove annoying warning about bool/int cast performance
+  set(GMSH_CONFIG_PRAGMAS "#pragma warning(disable:4800 4244 4267)")
+  foreach(VAR
+          CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
+          CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO
+          CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
+          CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
+    if(ENABLE_MSVC_STATIC_RUNTIME AND ${VAR} MATCHES "/MD")
+      string(REGEX REPLACE "/MD" "/MT" ${VAR} "${${VAR}}")
+    endif()
+    if(NOT ${VAR} MATCHES "/MP") # enable parallel compilation
+      set(${VAR} "${${VAR}} /MP")
+    endif()
+  endforeach()
+  if(ENABLE_PRIVATE_API)
+    if(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED)
+      # automatically export .def file with all symbols (requires CMake 3.4);
+      # depending on the compiling options this might lead to more than 64k export
+      # symbols; just trim the .def file to keep the ones you need
+      set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
+    endif()
+  endif()
+endif()
+
+if(ENABLE_OPENMP)
+  find_package(OpenMP)
+  if(OpenMP_FOUND)
+    set_config_option(HAVE_OPENMP "OpenMP")
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
+  elseif(APPLE AND EXISTS "/opt/local/lib/libomp")
+    # just for testing the official Apple compiler with macports' libomp
+    set_config_option(HAVE_OPENMP "OpenMP[MacPorts]")
+    set(CMAKE_C_FLAGS
+        "${CMAKE_C_FLAGS} -Xpreprocessor -fopenmp -I/opt/local/include/libomp")
+    set(CMAKE_CXX_FLAGS
+        "${CMAKE_CXX_FLAGS} -Xpreprocessor -fopenmp -I/opt/local/include/libomp")
+    list(APPEND EXTERNAL_LIBRARIES "-L/opt/local/lib/libomp -lomp")
+  elseif(APPLE AND EXISTS "/usr/local/lib/libomp.dylib")
+    set_config_option(HAVE_OPENMP "OpenMP[usr/local]")
+    set(CMAKE_C_FLAGS
+        "${CMAKE_C_FLAGS} -Xpreprocessor -fopenmp")
+    set(CMAKE_CXX_FLAGS
+        "${CMAKE_CXX_FLAGS} -Xpreprocessor -fopenmp")
+    list(APPEND EXTERNAL_LIBRARIES "-lomp")
+  endif()
+endif()
+
+if(ENABLE_OPENACC)
+  find_package(OpenACC)
+  if(OpenACC_C_FOUND AND OpenACC_CXX_FOUND)
+    set_config_option(HAVE_OPENACC "OpenACC")
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenACC_C_FLAGS}")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenACC_CXX_FLAGS}")
+  endif()
+endif()
+
+if(ENABLE_CXX11)
+  # in recent cmake versions we could do e.g. set(CMAKE_CXX_STANDARD 11)
+  check_cxx_compiler_flag("-std=c++11" STDCXX11)
+  if(STDCXX11)
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+  endif()
+endif()
+
+if(ENABLE_C99)
+  # in recent cmake versions we could do e.g. set(CMAKE_C_STANDARD 99)
+  check_c_compiler_flag("-std=c99" STDC99)
+  if(STDC99)
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
+  endif()
+endif()
+
+if(ENABLE_PROFILE)
+    # Using the perf set of profiling tools doesn't work without the frame
+    # pointer and a common optimisation is to remove it
+    check_cxx_compiler_flag("-fno-omit-frame-pointer" FNOFP)
+    if(FNOFP)
+        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer")
+    endif()
+endif()
+
+macro(append_gmsh_src DIRNAME FILES)
+  foreach(FILE ${FILES})
+    list(APPEND LIST ${DIRNAME}/${FILE})
+  endforeach()
+  set(GMSH_SRC ${GMSH_SRC};${LIST} PARENT_SCOPE)
+  set(GMSH_DIRS ${GMSH_DIRS};${DIRNAME} PARENT_SCOPE)
+endmacro()
+
+macro(find_all_libraries VARNAME LISTNAME PATH SUFFIX)
+  set(${VARNAME})
+  list(LENGTH ${LISTNAME} NUM_LIST)
+  foreach(LIB ${${LISTNAME}})
+    if("${PATH}" STREQUAL "")
+      find_library(FOUND_LIB ${LIB} PATH_SUFFIXES ${SUFFIX})
+    else()
+      find_library(FOUND_LIB ${LIB} PATHS ${PATH} NO_DEFAULT_PATH)
+    endif()
+    if(FOUND_LIB)
+      list(APPEND ${VARNAME} ${FOUND_LIB})
+    endif()
+    unset(FOUND_LIB CACHE)
+  endforeach()
+  list(LENGTH ${VARNAME} NUM_FOUND_LIBRARIES)
+  if(NUM_FOUND_LIBRARIES LESS NUM_LIST)
+    set(${VARNAME})
+  endif()
+endmacro()
+
+macro(set_compile_flags LISTNAME FLAGS)
+  foreach(FILE ${${LISTNAME}})
+    get_source_file_property(PROP ${FILE} COMPILE_FLAGS)
+    if(PROP)
+      set_source_files_properties(${FILE} PROPERTIES COMPILE_FLAGS "${PROP} ${FLAGS}")
+    else()
+      set_source_files_properties(${FILE} PROPERTIES COMPILE_FLAGS "${FLAGS}")
+    endif()
+  endforeach()
+endmacro()
+
+if(ENABLE_BLAS_LAPACK)
+  if(BLAS_LAPACK_LIBRARIES)
+    # use libs as specified in the BLAS_LAPACK_LIBRARIES variable
+    set_config_option(HAVE_BLAS "Blas[custom]")
+    set_config_option(HAVE_LAPACK "Lapack[custom]")
+    set(LAPACK_LIBRARIES ${BLAS_LAPACK_LIBRARIES})
+  else()
+    if(MSVC)
+      # on Windows with Visual C++ try really hard to find blas/lapack *without*
+      # requiring a Fortran compiler: 1) try to find the Intel MKL libs using
+      # the standard search path; if not found 2) try to get the reference
+      # blas/lapack libs (useful for users with no Fortran compiler and no MKL
+      # license, who can just download our precompiled "gmsh-dep" package)
+      if(HAVE_64BIT_SIZE_T)
+        set(MKL_PATH em64t/lib)
+        set(MKL_LIBS_REQUIRED libguide40 mkl_intel_lp64 mkl_intel_thread mkl_core)
+      else()
+        set(MKL_PATH ia32/lib)
+        set(MKL_LIBS_REQUIRED libguide40 mkl_intel_c mkl_intel_thread mkl_core)
+      endif()
+      find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH})
+      if(LAPACK_LIBRARIES)
+        set_config_option(HAVE_BLAS "Blas[mkl]")
+        set_config_option(HAVE_LAPACK "Lapack[mkl]")
+      else()
+        set(REFLAPACK_LIBS_REQUIRED lapack blas g2c gcc)
+        find_all_libraries(LAPACK_LIBRARIES REFLAPACK_LIBS_REQUIRED "" "")
+        if(LAPACK_LIBRARIES)
+          set_config_option(HAVE_BLAS "Blas[ref]")
+          set_config_option(HAVE_LAPACK "Lapack[ref]")
+        endif()
+      endif()
+    elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+      # on Linux try to find the Intel MKL without a Fortran compiler
+      if(HAVE_64BIT_SIZE_T)
+        set(MKL_PATH lib/em64t)
+      else()
+        set(MKL_PATH lib/32)
+      endif()
+      set(MKL_LIBS_REQUIRED mkl_gf_lp64 iomp5 mkl_gnu_thread mkl_core guide pthread)
+      find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH})
+      if(NOT LAPACK_LIBRARIES)
+        # match lapack 9.0 on 64bit
+        set(MKL_LIBS_REQUIRED mkl_lapack mkl_em64t guide)
+        find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH})
+      endif()
+      if(LAPACK_LIBRARIES)
+        set_config_option(HAVE_BLAS "Blas[mkl]")
+        set_config_option(HAVE_LAPACK "Lapack[mkl]")
+      else()
+        # on Linux also try to find ATLAS without a Fortran compiler, because
+        # cmake ships with a buggy FindBLAS e.g. on Ubuntu Lucid Lynx
+        set(ATLAS_LIBS_REQUIRED lapack f77blas cblas atlas)
+        find_all_libraries(LAPACK_LIBRARIES ATLAS_LIBS_REQUIRED "" "")
+        if(LAPACK_LIBRARIES)
+          set_config_option(HAVE_BLAS "Blas[atlas]")
+          set_config_option(HAVE_LAPACK "Lapack[atlas]")
+        else()
+          # try with generic names
+          set(GENERIC_LIBS_REQUIRED lapack blas pthread)
+          find_all_libraries(LAPACK_LIBRARIES GENERIC_LIBS_REQUIRED "" "")
+          if(LAPACK_LIBRARIES)
+            set_config_option(HAVE_BLAS "Blas[generic]")
+            set_config_option(HAVE_LAPACK "Lapack[generic]")
+            find_library(GFORTRAN_LIB gfortran)
+            if(GFORTRAN_LIB)
+              list(APPEND LAPACK_LIBRARIES ${GFORTRAN_LIB})
+            endif()
+          endif()
+        endif()
+      endif()
+    elseif(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
+      # on SunOS we know blas and lapack are available in sunperf
+      set(LAPACK_LIBRARIES -library=sunperf)
+      set_config_option(HAVE_BLAS "Blas[sunperf]")
+      set_config_option(HAVE_LAPACK "Lapack[sunperf]")
+    elseif(APPLE)
+      # on Mac we also know that blas and lapack are available
+      set(LAPACK_LIBRARIES "-llapack -lblas")
+      set_config_option(HAVE_BLAS "Blas[veclib]")
+      set_config_option(HAVE_LAPACK "Lapack[veclib]")
+    endif()
+
+    if(NOT HAVE_BLAS OR NOT HAVE_LAPACK)
+      # if we haven't found blas and lapack check for OpenBlas
+      set(OPENBLAS_LIBS_REQUIRED openblas)
+      find_all_libraries(LAPACK_LIBRARIES OPENBLAS_LIBS_REQUIRED "" "")
+      if(LAPACK_LIBRARIES)
+        set_config_option(HAVE_BLAS "Blas[openblas]")
+        set_config_option(HAVE_LAPACK "Lapack[openblas]")
+        find_library(GFORTRAN_LIB gfortran)
+        if(GFORTRAN_LIB)
+          list(APPEND LAPACK_LIBRARIES ${GFORTRAN_LIB})
+        endif()
+      endif()
+    endif()
+
+    if(NOT HAVE_BLAS OR NOT HAVE_LAPACK)
+      # if we still haven't found blas and lapack, use the standard cmake tests,
+      # which require a working Fortran compiler
+      enable_language(Fortran)
+      find_package(BLAS)
+      if(BLAS_FOUND)
+        set_config_option(HAVE_BLAS "Blas")
+        find_package(LAPACK)
+        if(LAPACK_FOUND)
+          set_config_option(HAVE_LAPACK "Lapack")
+        else()
+          set(LAPACK_LIBRARIES ${BLAS_LIBRARIES})
+        endif()
+        if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
+          if(CMAKE_Fortran_COMPILER MATCHES "gfortran")
+            list(APPEND LAPACK_LIBRARIES gfortran)
+          elseif(CMAKE_Fortran_COMPILER MATCHES "f95")
+            list(APPEND LAPACK_LIBRARIES gfortran)
+          elseif(CMAKE_Fortran_COMPILER MATCHES "g77")
+            list(APPEND LAPACK_LIBRARIES g2c)
+          endif()
+        elseif(CMAKE_Fortran_COMPILER MATCHES "pgi")
+          list(APPEND LAPACK_LIBRARIES -pgf77libs)
+        endif()
+      endif()
+    endif()
+
+    if(NOT HAVE_BLAS OR NOT HAVE_LAPACK)
+      message(WARNING "Could not find Blas or Lapack: most meshing algorithms "
+              "will not be functional")
+    endif()
+
+  endif()
+endif()
+
+if(ENABLE_TCMALLOC)
+  find_library(TCMALLOC tcmalloc)
+  if(TCMALLOC)
+    set_config_option(HAVE_TCMALLOC "TCMalloc")
+    list(APPEND EXTERNAL_LIBRARIES ${TCMALLOC})
+  endif()
+endif()
+
+add_subdirectory(Common)
+add_subdirectory(Numeric)
+add_subdirectory(Geo)
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Mesh AND ENABLE_MESH)
+  add_subdirectory(Mesh)
+  set_config_option(HAVE_MESH "Mesh")
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Solver AND ENABLE_SOLVER)
+  add_subdirectory(Solver)
+  set_config_option(HAVE_SOLVER "Solver")
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Post AND ENABLE_POST)
+  add_subdirectory(Post)
+  set_config_option(HAVE_POST "Post")
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Plugin AND ENABLE_PLUGINS)
+    add_subdirectory(Plugin)
+    set_config_option(HAVE_PLUGINS "Plugins")
+  endif()
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Parser AND ENABLE_PARSER)
+  add_subdirectory(Parser)
+  set_config_option(HAVE_PARSER "Parser")
+endif()
+
+if(ENABLE_VISUDEV)
+  set_config_option(HAVE_VISUDEV "VisuDev")
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Fltk AND ENABLE_FLTK)
+  # first, try to use fltk-config for fltk >= 1.3 (FindFLTK is buggy on Unix,
+  # where e.g. xft and xinerama options are not dealt with)
+  find_program(FLTK_CONFIG_SCRIPT fltk-config)
+  if(FLTK_CONFIG_SCRIPT)
+    execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --api-version
+                    OUTPUT_VARIABLE FLTK_VERSION)
+    string(STRIP "${FLTK_VERSION}" FLTK_VERSION)
+    if(FLTK_VERSION VERSION_GREATER 1.1)
+      add_subdirectory(Fltk)
+      set_config_option(HAVE_FLTK "Fltk")
+      message(STATUS "Using fltk-config script for Fltk " ${FLTK_VERSION})
+      execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --use-gl --use-images --includedir
+                      OUTPUT_VARIABLE FLTK_INCLUDE_DIR)
+      string(STRIP ${FLTK_INCLUDE_DIR} FLTK_INCLUDE_DIR)
+      list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR})
+      # On linux (at least OpenSuSE) the following directories are
+      # not existing (everything is in /usr/include). To avoid warnings
+      # check existance of these directories before adding them
+      if(EXISTS ${FLTK_INCLUDE_DIR}/FL/images)
+        list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/FL/images)
+      endif()
+      if(EXISTS ${FLTK_INCLUDE_DIR}/jpeg)
+        list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/jpeg)
+      endif()
+      if(EXISTS ${FLTK_INCLUDE_DIR}/zlib)
+        list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/zlib)
+      endif()
+      if(EXISTS ${FLTK_INCLUDE_DIR}/png)
+        list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/png)
+      endif()
+      execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --use-gl --use-images --ldflags
+                      OUTPUT_VARIABLE FLTK_LIBRARIES)
+      string(STRIP ${FLTK_LIBRARIES} FLTK_LIBRARIES)
+      string(REGEX MATCH "fltk[_ ]jpeg" FLTK_JPEG ${FLTK_LIBRARIES})
+      string(REGEX MATCH "fltk[_ ]z" FLTK_Z ${FLTK_LIBRARIES})
+      string(REGEX MATCH "fltk[_ ]png" FLTK_PNG ${FLTK_LIBRARIES})
+    endif()
+  endif()
+  # then try the built-in FindFLTK module
+  if(NOT HAVE_FLTK)
+    set(FLTK_SKIP_FORMS TRUE)
+    set(FLTK_SKIP_FLUID TRUE)
+    find_package(FLTK)
+    if(FLTK_FOUND)
+      add_subdirectory(Fltk)
+      set_config_option(HAVE_FLTK "Fltk")
+      list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR})
+      # find fltk jpeg
+      find_library(FLTK_JPEG NAMES fltk_jpeg fltkjpeg)
+      if(FLTK_JPEG)
+        list(APPEND EXTERNAL_LIBRARIES ${FLTK_JPEG})
+        foreach(DIR ${FLTK_INCLUDE_DIR})
+          list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/jpeg)
+        endforeach()
+      endif()
+      # find fltk zlib
+      find_library(FLTK_Z NAMES fltk_z fltkz)
+      if(FLTK_Z)
+        list(APPEND EXTERNAL_LIBRARIES ${FLTK_Z})
+        foreach(DIR ${FLTK_INCLUDE_DIR})
+          list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/zlib)
+        endforeach()
+      endif()
+      # find fltk png
+      find_library(FLTK_PNG NAMES fltk_png fltkpng)
+      if(FLTK_PNG)
+        list(APPEND EXTERNAL_LIBRARIES ${FLTK_PNG})
+        foreach(DIR ${FLTK_INCLUDE_DIR})
+          list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/png)
+        endforeach()
+      endif()
+    endif()
+  endif()
+  # workaround for Fedora/Suse messing up fltk-config (see issue #417)
+  if(HAVE_FLTK AND ${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+    string(REGEX MATCH "X11" FLTK_X11 ${FLTK_LIBRARIES})
+    if(NOT FLTK_X11)
+      find_package(X11)
+      if(X11_FOUND)
+        list(APPEND EXTERNAL_INCLUDES ${X11_INCLUDE_DIR})
+        list(APPEND EXTERNAL_LIBRARIES ${X11_LIBRARIES})
+      endif()
+    endif()
+  endif()
+endif()
+
+if(APPLE AND HAVE_FLTK AND ENABLE_TOUCHBAR)
+  if(CMAKE_OSX_DEPLOYMENT_TARGET)
+    if(${CMAKE_OSX_DEPLOYMENT_TARGET} VERSION_GREATER 10.11)
+      set(GMSH_SRC ${GMSH_SRC};Fltk/touchBar.mm)
+      set_config_option(HAVE_TOUCHBAR "TouchBar")
+    endif()
+  endif()
+endif()
+
+if(ENABLE_ONELAB)
+  set_config_option(HAVE_ONELAB "ONELAB")
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/onelab)
+    if(ENABLE_ONELAB_METAMODEL)
+      add_subdirectory(contrib/onelab)
+      include_directories(contrib/onelab)
+      set_config_option(HAVE_ONELAB_METAMODEL "ONELABMetamodel")
+    endif()
+    file(COPY ${ONELAB_PY} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+  endif()
+endif()
+
+if(ENABLE_BUILD_IOS)
+  find_file(CMAKE_TOOLCHAIN_FILE "ios.cmake")
+  if(NOT CMAKE_TOOLCHAIN_FILE)
+    message(FATAL_ERROR "Cannot compile Gmsh for iOS without a toolchain")
+  endif()
+  add_definitions(-DBUILD_IOS)
+endif()
+
+if(HAVE_FLTK OR ENABLE_GRAPHICS)
+  if(NOT HAVE_MESH OR NOT HAVE_POST OR NOT HAVE_PLUGINS OR NOT HAVE_ONELAB)
+    message(SEND_ERROR "Cannot compile GUI without Mesh, Post, Plugin and ONELAB")
+  endif()
+
+  if(FLTK_JPEG)
+    set_config_option(HAVE_LIBJPEG "Jpeg[fltk]")
+  else()
+    find_package(JPEG)
+    if(JPEG_FOUND)
+      set_config_option(HAVE_LIBJPEG "Jpeg")
+      list(APPEND EXTERNAL_LIBRARIES ${JPEG_LIBRARIES})
+      list(APPEND EXTERNAL_INCLUDES ${JPEG_INCLUDE_DIR})
+    endif()
+  endif()
+
+  if(FLTK_Z)
+    set_config_option(HAVE_LIBZ "Zlib[fltk]")
+  else()
+    find_package(ZLIB)
+    if(ZLIB_FOUND)
+      set_config_option(HAVE_LIBZ "Zlib")
+      list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES})
+      list(APPEND EXTERNAL_INCLUDES ${ZLIB_INCLUDE_DIR})
+    endif()
+  endif()
+
+  if(HAVE_LIBZ)
+    if(FLTK_PNG)
+      set_config_option(HAVE_LIBPNG "Png[fltk]")
+    else()
+      find_package(PNG)
+      if(PNG_FOUND)
+        set_config_option(HAVE_LIBPNG "Png")
+        list(APPEND EXTERNAL_LIBRARIES ${PNG_LIBRARIES})
+        list(APPEND EXTERNAL_INCLUDES ${PNG_INCLUDE_DIR})
+      endif()
+    endif()
+  endif()
+
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/mpeg_encode AND
+     ENABLE_MPEG_ENCODE)
+    add_subdirectory(contrib/mpeg_encode)
+    include_directories(contrib/mpeg_encode/headers)
+    set_config_option(HAVE_MPEG_ENCODE "Mpeg")
+  endif()
+
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/3M AND ENABLE_3M)
+    add_subdirectory(contrib/3M)
+    include_directories(contrib/3M)
+    set_config_option(HAVE_3M "3M")
+  endif()
+
+  if(ENABLE_OSMESA)
+    find_library(OSMESA_LIB OSMesa)
+    if(OSMESA_LIB)
+      set_config_option(HAVE_OSMESA "OSMesa")
+      list(APPEND EXTERNAL_LIBRARIES ${OSMESA_LIB})
+    endif()
+  endif()
+
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Graphics)
+    set(OpenGL_GL_PREFERENCE "LEGACY")
+    find_package(OpenGL REQUIRED)
+    if(OPENGL_GLU_FOUND AND OPENGL_FOUND)
+      add_subdirectory(Graphics)
+      set_config_option(HAVE_OPENGL "OpenGL")
+    else()
+      message(SEND_ERROR "Could not find GLU: disabling OpenGL support")
+    endif()
+  endif()
+endif()
+
+if(ENABLE_ANN)
+  find_library(ANN_LIB ANN PATH_SUFFIXES lib)
+  find_path(ANN_INC "ANN.h" PATH_SUFFIXES src include ANN)
+  if(ENABLE_SYSTEM_CONTRIB AND ANN_LIB AND ANN_INC)
+    message(STATUS "Using system version of ANN")
+    list(APPEND EXTERNAL_LIBRARIES ${ANN_LIB})
+    list(APPEND EXTERNAL_INCLUDES ${ANN_INC})
+    set_config_option(HAVE_ANN "Ann[system]")
+  elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/ANN)
+    add_subdirectory(contrib/ANN)
+    include_directories(contrib/ANN/include)
+    set_config_option(HAVE_ANN "Ann")
+  endif()
+endif()
+
+if(ENABLE_ALGLIB)
+  find_library(ALGLIB_LIB alglib PATH_SUFFIXES lib)
+  find_path(ALGLIB_INC "stdafx.h" PATH_SUFFIXES include)
+  if(ENABLE_SYSTEM_CONTRIB AND ALGLIB_LIB AND ALGLIB_INC)
+    list(APPEND EXTERNAL_LIBRARIES ${ALGLIB_LIB})
+    list(APPEND EXTERNAL_INCLUDES ${ALGLIB_INC})
+    set_config_option(HAVE_ALGLIB "ALGLIB[system]")
+  elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/ALGLIB)
+    add_subdirectory(contrib/ALGLIB)
+    include_directories(contrib/ALGLIB)
+    set_config_option(HAVE_ALGLIB "ALGLIB")
+  endif()
+endif()
+
+if(HAVE_FLTK AND ENABLE_CAIRO)
+  find_library(CAIRO_LIB cairo)
+  find_path(CAIRO_INC "cairo/cairo.h" PATH_SUFFIXES include)
+  if(CAIRO_INC AND CAIRO_LIB)
+     set_config_option(HAVE_CAIRO "Cairo")
+     list(APPEND EXTERNAL_LIBRARIES ${CAIRO_LIB})
+     list(APPEND EXTERNAL_INCLUDES ${CAIRO_INC})
+  endif()
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/DiscreteIntegration AND
+   ENABLE_DINTEGRATION)
+  add_subdirectory(contrib/DiscreteIntegration)
+  include_directories(contrib/DiscreteIntegration)
+  set_config_option(HAVE_DINTEGRATION "DIntegration")
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/HighOrderMeshOptimizer AND
+   EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MeshOptimizer AND
+   EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MeshQualityOptimizer AND
+   ENABLE_OPTHOM AND HAVE_MESH)
+  add_subdirectory(contrib/HighOrderMeshOptimizer)
+  include_directories(contrib/HighOrderMeshOptimizer)
+  add_subdirectory(contrib/MeshOptimizer)
+  include_directories(contrib/MeshOptimizer)
+  include_directories(${CMAKE_CURRENT_BINARY_DIR}/contrib/MeshOptimizer)
+  add_subdirectory(contrib/MeshQualityOptimizer)
+  include_directories(contrib/MeshQualityOptimizer)
+  set_config_option(HAVE_OPTHOM "OptHom")
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/domhex AND
+   ENABLE_DOMHEX AND HAVE_MESH)
+  add_subdirectory(contrib/domhex)
+  include_directories(contrib/domhex)
+  set_config_option(HAVE_DOMHEX "DomHex")
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/QuadTri AND
+   ENABLE_QUADTRI AND HAVE_MESH)
+  add_subdirectory(contrib/QuadTri)
+  include_directories(contrib/QuadTri)
+  set_config_option(HAVE_QUADTRI "QuadTri")
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/kbipack AND ENABLE_KBIPACK)
+  set_config_option(HAVE_KBIPACK "Kbipack")
+  add_subdirectory(contrib/kbipack)
+  include_directories(contrib/kbipack)
+  if(ENABLE_GMP)
+    find_library(GMP_LIB libgmp.a)
+    find_path(GMP_INC "gmp.h" PATH_SUFFIXES src include)
+  endif()
+  if(GMP_LIB AND GMP_INC)
+    set_config_option(HAVE_GMP "GMP")
+    list(APPEND EXTERNAL_LIBRARIES ${GMP_LIB})
+    list(APPEND EXTERNAL_INCLUDES ${GMP_INC})
+  else()
+    message(STATUS "GMP not found: Kbipack uses long int")
+  endif()
+endif()
+
+if(ENABLE_MATHEX)
+  find_library(MATHEX_LIB mathex PATH_SUFFIXES lib)
+  find_path(MATHEX_INC "mathex.h" PATH_SUFFIXES src include)
+  if(ENABLE_SYSTEM_CONTRIB AND MATHEX_LIB AND MATHEX_INC)
+    list(APPEND EXTERNAL_LIBRARIES ${MATHEX_LIB})
+    list(APPEND EXTERNAL_INCLUDES ${MATHEX_INC})
+    set_config_option(HAVE_MATHEX "MathEx[system]")
+  elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MathEx)
+    add_subdirectory(contrib/MathEx)
+    include_directories(contrib/MathEx)
+    set_config_option(HAVE_MATHEX "MathEx")
+  endif()
+endif()
+
+if(ENABLE_MPI)
+  find_package(MPI)
+  if(MPI_FOUND)
+    set_config_option(HAVE_MPI "MPI")
+    list(APPEND EXTERNAL_INCLUDES ${MPI_CXX_INCLUDE_PATH})
+    list(APPEND EXTERNAL_LIBRARIES ${MPI_CXX_LIBRARIES})
+    set(CMAKE_C_COMPILER ${MPI_C_COMPILER})
+    set(CMAKE_CXX_COMPILER ${MPI_CXX_COMPILER})
+    set(CMAKE_Fortran_COMPILER ${MPI_Fortran_COMPILER})
+  endif()
+endif()
+
+if(ENABLE_POPPLER)
+  find_library(POPPLER_LIB poppler)
+  find_library(POPPLER_CPP_LIB poppler-cpp)
+  find_path(POPPLER_INC "poppler/cpp/poppler-document.h" PATH_SUFFIXES src include)
+  if(POPPLER_LIB AND POPPLER_INC)
+    set_config_option(HAVE_POPPLER "Poppler")
+    list(APPEND EXTERNAL_LIBRARIES ${POPPLER_LIB})
+    list(APPEND EXTERNAL_LIBRARIES ${POPPLER_CPP_LIB})
+    list(APPEND EXTERNAL_INCLUDES ${POPPLER_INC})
+  endif()
+endif()
+
+if(ENABLE_P4EST)
+  find_library(P4EST_LIB p4est)
+  find_path(P4EST_INC "p4est.h" PATH_SUFFIXES src)
+  find_library(SC_LIB sc)
+  if(P4EST_LIB AND P4EST_INC AND SC_LIB)
+    set_config_option(HAVE_P4EST "P4est")
+    list(APPEND EXTERNAL_LIBRARIES ${P4EST_LIB} ${SC_LIB})
+    list(APPEND EXTERNAL_INCLUDES ${P4EST_INC})
+  endif()
+endif()
+
+if(HAVE_MESH OR HAVE_SOLVER)
+  if(ENABLE_METIS)
+    if(METIS_ROOT)
+      find_library(METIS_LIB metis PATHS ${METIS_ROOT} PATH_SUFFIXES lib)
+      find_path(METIS_INC "metis.h" PATHS ${METIS_ROOT} PATH_SUFFIXES include)
+      list(APPEND EXTERNAL_LIBRARIES ${METIS_LIB})
+      list(APPEND EXTERNAL_INCLUDES ${METIS_INC})
+      set_config_option(HAVE_METIS "Metis")
+    else()
+      find_library(METIS_LIB metis PATH_SUFFIXES lib)
+      find_path(METIS_INC "metis.h" PATH_SUFFIXES include)
+      if(ENABLE_SYSTEM_CONTRIB AND METIS_LIB AND METIS_INC)
+        message(STATUS "Using system version of METIS")
+        list(APPEND EXTERNAL_LIBRARIES ${METIS_LIB})
+        list(APPEND EXTERNAL_INCLUDES ${METIS_INC})
+        set_config_option(HAVE_METIS "Metis[system]")
+      elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/metis)
+        add_definitions(-DUSE_GKREGEX)
+        add_subdirectory(contrib/metis)
+        include_directories(contrib/metis/include contrib/metis/libmetis
+                          contrib/metis/GKlib)
+        set_config_option(HAVE_METIS "Metis")
+      endif()
+    endif()
+  endif()
+endif()
+
+if(HAVE_MESH)
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Mesh/tetgenBR.cxx)
+    set_config_option(HAVE_TETGENBR "TetGen/BR")
+  endif()
+
+  if(ENABLE_VOROPP)
+    find_library(VOROPP_LIB voro++ PATH_SUFFIXES lib)
+    find_path(VOROPP_INC "voro++.hh" PATH_SUFFIXES include)
+    if(ENABLE_SYSTEM_CONTRIB AND VOROPP_LIB AND VOROPP_INC)
+      message(STATUS "Using system version of voro++")
+      list(APPEND EXTERNAL_LIBRARIES ${VOROPP_LIB})
+      list(APPEND EXTERNAL_INCLUDES ${VOROPP_INC})
+      set_config_option(HAVE_VOROPP "Voro++[system]")
+    elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/voro++)
+      add_subdirectory(contrib/voro++)
+      include_directories(contrib/voro++/src)
+      set_config_option(HAVE_VOROPP "Voro++")
+    endif()
+  endif()
+
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/blossom AND ENABLE_BLOSSOM)
+    add_subdirectory(contrib/blossom)
+    include_directories(contrib/blossom/MATCH contrib/blossom/concorde97
+                        contrib/blossom/concorde97/INCLUDE)
+    set_config_option(HAVE_BLOSSOM "Blossom")
+  endif()
+
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/Netgen AND ENABLE_NETGEN)
+    add_subdirectory(contrib/Netgen)
+    include_directories(contrib/Netgen contrib/Netgen/libsrc/include
+                        contrib/Netgen/nglib)
+    set_config_option(HAVE_NETGEN "Netgen")
+    add_definitions(-DNO_PARALLEL_THREADS -DNOTCL)
+  endif()
+
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/bamg AND ENABLE_BAMG)
+    add_subdirectory(contrib/bamg)
+    include_directories(contrib/bamg contrib/bamg/bamglib)
+    set_config_option(HAVE_BAMG "Bamg")
+  endif()
+
+  if(ENABLE_MMG3D)
+    find_library(MMG3D_LIB mmg3d PATH_SUFFIXES lib)
+    find_path(MMG3D_INC "libmmg3d.h" PATH_SUFFIXES src include)
+    if(ENABLE_SYSTEM_CONTRIB AND MMG3D_LIB AND MMG3D_INC)
+      list(APPEND EXTERNAL_LIBRARIES ${MMG3D_LIB})
+      list(APPEND EXTERNAL_INCLUDES ${MMG3D_INC})
+      set_config_option(HAVE_MMG3D "Mmg3d[system]")
+    elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/mmg3d)
+      add_subdirectory(contrib/mmg3d)
+      include_directories(contrib/mmg3d/build/sources)
+      set_config_option(HAVE_MMG3D "Mmg3d")
+    endif()
+  endif()
+endif()
+
+if(ENABLE_MED OR ENABLE_CGNS)
+  find_package(HDF5)
+  if(HDF5_FOUND)
+    set(HDF5_LIB "${HDF5_C_LIBRARIES}")
+    list(APPEND EXTERNAL_INCLUDES ${HDF5_INCLUDE_DIRS})
+    if(ENABLE_MED)
+      find_library(MED_LIB medC)
+      if(MED_LIB)
+        set_config_option(HAVE_MED "Med")
+        list(APPEND EXTERNAL_LIBRARIES ${MED_LIB})
+      endif()
+    endif()
+    if(ENABLE_CGNS)
+      find_library(CGNS_LIB cgns HINTS ENV CGNS_ROOT PATH_SUFFIXES lib)
+      find_path(CGNS_INC "cgnslib.h" HINTS ENV CGNS_ROOT PATH_SUFFIXES include)
+      if(CGNS_LIB AND CGNS_INC)
+        set_config_option(HAVE_LIBCGNS "Cgns")
+        list(APPEND EXTERNAL_LIBRARIES ${CGNS_LIB})
+        list(APPEND EXTERNAL_INCLUDES ${CGNS_INC})
+        if(ENABLE_CGNS_CPEX0045)
+          set_config_option(HAVE_LIBCGNS_CPEX0045 "Cgns_CPEX0045")
+        endif()
+      endif()
+    endif()
+    if(MED_LIB OR CGNS_LIB)
+      list(APPEND EXTERNAL_LIBRARIES ${HDF5_LIB})
+      find_library(SZ_LIB NAMES szlib sz)
+      if(SZ_LIB)
+        list(APPEND EXTERNAL_LIBRARIES ${SZ_LIB})
+      endif()
+      if(NOT HAVE_LIBZ) # necessary for non-GUI builds
+        find_package(ZLIB)
+        if(ZLIB_FOUND)
+          set_config_option(HAVE_LIBZ "Zlib")
+          list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES})
+        endif()
+      endif()
+    endif()
+  else()
+    message(STATUS "HDF5 not found")
+  endif()
+endif()
+
+if(HAVE_SOLVER)
+  if(ENABLE_GMM)
+    find_path(GMM_INC "gmm.h" PATH_SUFFIXES src include include/gmm)
+    if(ENABLE_SYSTEM_CONTRIB AND GMM_INC)
+      message(STATUS "Using system version of GMM")
+      list(APPEND EXTERNAL_INCLUDES ${GMM_INC})
+      set_config_option(HAVE_GMM "Gmm[system]")
+    elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/gmm)
+      include_directories(contrib/gmm)
+      set_config_option(HAVE_GMM "Gmm")
+    endif()
+  endif()
+
+  if(ENABLE_PETSC)
+    if(PETSC_DIR)
+      set(ENV_PETSC_DIR ${PETSC_DIR})
+    else()
+      set(ENV_PETSC_DIR $ENV{PETSC_DIR})
+    endif()
+    if(PETSC_ARCH)
+      set(ENV_PETSC_ARCH ${PETSC_ARCH})
+    else()
+      set(ENV_PETSC_ARCH $ENV{PETSC_ARCH})
+    endif()
+    set(PETSC_POSSIBLE_CONF_FILES
+        ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables
+        ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib/petsc-conf/petscvariables
+        ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib/petsc/conf/petscvariables)
+    foreach(FILE ${PETSC_POSSIBLE_CONF_FILES})
+      if(EXISTS ${FILE})
+        # old-style PETSc installations (using PETSC_DIR and PETSC_ARCH)
+        message(STATUS "Using PETSc dir: ${ENV_PETSC_DIR}")
+        message(STATUS "Using PETSc arch: ${ENV_PETSC_ARCH}")
+        # find includes by parsing the petscvariables file
+        file(STRINGS ${FILE} PETSC_VARIABLES NEWLINE_CONSUME)
+      endif()
+    endforeach()
+    if(PETSC_VARIABLES)
+      # try to find PETSC_CC_INCLUDES for PETSc >= 3.4
+      string(REGEX MATCH "PETSC_CC_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES
+             ${PETSC_VARIABLES})
+      if(PETSC_PACKAGES_INCLUDES)
+        string(REPLACE "PETSC_CC_INCLUDES = " "" PETSC_PACKAGES_INCLUDES
+               ${PETSC_PACKAGES_INCLUDES})
+      else()
+        # try to find PETSC_PACKAGES_INCLUDES in older versions
+        list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/include)
+        list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/include)
+        string(REGEX MATCH "PACKAGES_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES
+               ${PETSC_VARIABLES})
+        string(REPLACE "PACKAGES_INCLUDES = " "" PETSC_PACKAGES_INCLUDES
+               ${PETSC_PACKAGES_INCLUDES})
+      endif()
+      if(PETSC_PACKAGES_INCLUDES)
+        if(PETSC_PACKAGES_INCLUDES)
+          string(REPLACE "-I" "" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES})
+          string(REPLACE " " ";" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES})
+          foreach(VAR ${PETSC_PACKAGES_INCLUDES})
+            # seem to include unexisting directories (/usr/include/lib64)
+	    # check to avoid warnings
+	    if(EXISTS ${VAR})
+	      list(APPEND EXTERNAL_INCLUDES ${VAR})
+            endif()
+          endforeach()
+        endif()
+      endif()
+      # find libraries (<= 3.0)
+      set(PETSC_LIBS_REQUIRED petscksp petscdm petscmat petscvec petsc)
+      find_all_libraries(PETSC_LIBS PETSC_LIBS_REQUIRED
+                         ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib "")
+      # petsc 3.1 creates only one library (libpetsc)
+      if(NOT PETSC_LIBS)
+        find_library(PETSC_LIBS petsc PATHS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib
+                     NO_DEFAULT_PATH)
+      endif()
+      if(PETSC_LIBS)
+        set_config_option(HAVE_PETSC "PETSc")
+	if(NOT HAVE_BLAS)
+          set_config_option(HAVE_BLAS "Blas[petsc]")
+        endif()
+	if(NOT HAVE_LAPACK)
+          set_config_option(HAVE_LAPACK "Lapack[petsc]")
+        endif()
+      endif()
+      # find slepc (needs to be linked in before petsc)
+      if(ENABLE_SLEPC)
+        if(SLEPC_DIR)
+          set(ENV_SLEPC_DIR ${SLEPC_DIR})
+         else()
+          set(ENV_SLEPC_DIR $ENV{SLEPC_DIR})
+        endif()
+        find_library(SLEPC_LIB slepc PATHS ${ENV_SLEPC_DIR}/${ENV_PETSC_ARCH}/lib
+                     NO_DEFAULT_PATH)
+        if(SLEPC_LIB)
+          find_path(SLEPC_INC "slepc.h" PATHS ${ENV_SLEPC_DIR} PATH_SUFFIXES include
+                    ${ENV_PETSC_ARCH}/include include/slepc NO_DEFAULT_PATH)
+          if(SLEPC_INC)
+            message(STATUS "Using SLEPc dir: ${ENV_SLEPC_DIR}")
+            set_config_option(HAVE_SLEPC "SLEPc")
+            list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB})
+            list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC})
+            find_path(SLEPC_INC2 "slepcconf.h" PATHS ${ENV_SLEPC_DIR}
+                      PATH_SUFFIXES ${ENV_PETSC_ARCH}/include NO_DEFAULT_PATH)
+            if(SLEPC_INC2)
+              list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC2})
+            endif()
+          endif()
+        endif()
+      endif()
+      list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS})
+      # find additional libraries to link with
+      string(REGEX MATCH "PACKAGES_LIBS = [^\n\r]*" PLIBS ${PETSC_VARIABLES})
+      if(PLIBS)
+        string(REPLACE "PACKAGES_LIBS = " "" PLIBS ${PLIBS})
+        string(STRIP ${PLIBS} PLIBS)
+        list(APPEND EXTERNAL_LIBRARIES "${PLIBS}")
+      endif()
+      string(REGEX MATCH "PETSC_EXTERNAL_LIB_BASIC = [^\n\r]*" PLIBS_BASIC ${PETSC_VARIABLES})
+      if(PLIBS_BASIC)
+        string(REPLACE "PETSC_EXTERNAL_LIB_BASIC = " "" PLIBS_BASIC ${PLIBS_BASIC})
+        string(STRIP ${PLIBS_BASIC} PLIBS_BASIC)
+        separate_arguments(PLIBS_BASIC)
+        list(APPEND EXTERNAL_LIBRARIES "${PLIBS_BASIC}")
+      endif()
+      string(REGEX MATCH "PCC_LINKER_LIBS = [^\n\r]*" LLIBS ${PETSC_VARIABLES})
+      if(LLIBS)
+        string(REPLACE "PCC_LINKER_LIBS = " "" LLIBS ${LLIBS})
+        string(STRIP ${LLIBS} LLIBS)
+        list(APPEND EXTERNAL_LIBRARIES "${LLIBS}")
+      endif()
+    else()
+      # new-style PETSc installations (in standard system directories)
+      find_library(PETSC_LIBS petsc)
+      find_path(PETSC_INC "petsc.h" PATH_SUFFIXES include/petsc)
+      if(PETSC_LIBS AND PETSC_INC)
+        set_config_option(HAVE_PETSC "PETSc")
+        if(ENABLE_SLEPC)
+          find_library(SLEPC_LIB slepc)
+          find_path(SLEPC_INC "slepc.h" PATH_SUFFIXES include/slepc)
+          if(SLEPC_LIB AND SLEPC_INC)
+            set_config_option(HAVE_SLEPC "SLEPc")
+            list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB})
+            list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC})
+          endif()
+        endif()
+        list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS})
+        list(APPEND EXTERNAL_INCLUDES ${PETSC_INC})
+      endif()
+    endif()
+  endif()
+
+  if(ENABLE_MUMPS AND HAVE_BLAS AND HAVE_LAPACK)
+    set(MUMPS_LIBS_REQUIRED smumps dmumps cmumps zmumps mumps_common pord)
+    if(NOT ENABLE_MPI)
+      list(APPEND MUMPS_LIBS_REQUIRED mpiseq)
+    endif()
+    find_all_libraries(MUMPS_LIBRARIES MUMPS_LIBS_REQUIRED "" "lib")
+    find_path(SMUMPS_INC "smumps_c.h" PATH_SUFFIXES src include)
+    find_path(DMUMPS_INC "dmumps_c.h" PATH_SUFFIXES src include)
+    find_path(CMUMPS_INC "cmumps_c.h" PATH_SUFFIXES src include)
+    find_path(ZMUMPS_INC "zmumps_c.h" PATH_SUFFIXES src include)
+    if(MUMPS_LIBRARIES AND SMUMPS_INC AND DMUMPS_INC AND CMUMPS_INC AND ZMUMPS_INC)
+      set_config_option(HAVE_MUMPS "MUMPS")
+      list(APPEND EXTERNAL_LIBRARIES ${MUMPS_LIBRARIES})
+      list(APPEND EXTERNAL_INCLUDES ${SMUMPS_INC})
+      list(APPEND EXTERNAL_INCLUDES ${DMUMPS_INC})
+      list(APPEND EXTERNAL_INCLUDES ${CMUMPS_INC})
+      list(APPEND EXTERNAL_INCLUDES ${ZMUMPS_INC})
+      find_library(GFORTRAN_LIB gfortran)
+      if(GFORTRAN_LIB)
+        list(APPEND EXTERNAL_LIBRARIES ${GFORTRAN_LIB})
+      endif()
+      if(ENABLE_GMM) # use GMM/MUMPS interface
+        add_definitions(-DGMM_USES_MUMPS)
+      endif()
+    endif()
+  endif()
+
+  if(ENABLE_GETDP)
+    find_library(GETDP_LIB GetDP)
+    find_path(GETDP_INC "GetDP.h" PATH_SUFFIXES getdp)
+    if(GETDP_LIB AND GETDP_INC)
+      set_config_option(HAVE_GETDP "GetDP")
+      list(APPEND EXTERNAL_LIBRARIES ${GETDP_LIB})
+      list(APPEND EXTERNAL_INCLUDES ${GETDP_INC})
+    endif()
+  endif()
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt AND
+   ENABLE_HXT AND HAVE_METIS)
+  set_config_option(HAVE_HXT "Hxt")
+  add_subdirectory(contrib/hxt)
+  include_directories(BEFORE contrib/hxt)
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt/hxt_tetDelaunay.c)
+    set_config_option(HAVE_HXT3D "Hxt3D")
+  endif()
+  if(MSVC)
+    # Visual C++ does not support C99 - force compilation as C++ code
+    file(GLOB_RECURSE HXT_SRC contrib/hxt/*.c)
+    set_compile_flags(HXT_SRC "/TP")
+  endif()
+  check_include_file("immintrin.h" HAVE_IMMINTRIN_H)
+  if(NOT HAVE_IMMINTRIN_H)
+    add_definitions(-DHAVE_NO_IMMINTRIN_H)
+  endif()
+  if(HAVE_PETSC)
+    add_definitions(-DHXT_HAVE_PETSC)
+  endif()
+  if(CMAKE_C_COMPILER MATCHES "pgi")
+    add_definitions(-DHAVE_NO_OPENMP_SIMD)
+  endif()
+endif()
+
+if(ENABLE_OCC)
+  set(OCC_MINIMAL_VERSION "6.9.1")
+  if(WIN32)
+    if(HAVE_64BIT_SIZE_T)
+      set(OCC_SYS_NAME win64)
+    else()
+      set(OCC_SYS_NAME win32)
+    endif()
+  else()
+    set(OCC_SYS_NAME ${CMAKE_SYSTEM_NAME})
+  endif()
+  find_path(OCC_INC "Standard_Version.hxx" HINTS ENV CASROOT PATH_SUFFIXES
+            inc include include/oce opencascade include/opencascade
+            occt include/occt)
+  if(OCC_INC)
+    file(STRINGS ${OCC_INC}/Standard_Version.hxx
+         OCC_MAJOR REGEX "#define OCC_VERSION_MAJOR.*")
+    file(STRINGS ${OCC_INC}/Standard_Version.hxx
+         OCC_MINOR REGEX "#define OCC_VERSION_MINOR.*")
+    file(STRINGS ${OCC_INC}/Standard_Version.hxx
+         OCC_MAINT REGEX "#define OCC_VERSION_MAINTENANCE.*")
+    if(OCC_MAJOR AND OCC_MINOR AND OCC_MAINT)
+      string(REGEX MATCH "[0-9]+" OCC_MAJOR "${OCC_MAJOR}")
+      string(REGEX MATCH "[0-9]+" OCC_MINOR "${OCC_MINOR}")
+      string(REGEX MATCH "[0-9]+" OCC_MAINT "${OCC_MAINT}")
+      set(OCC_VERSION "${OCC_MAJOR}.${OCC_MINOR}.${OCC_MAINT}")
+      message(STATUS "Found OpenCASCADE version ${OCC_VERSION} in ${OCC_INC}")
+    endif()
+  endif()
+  if(OCC_VERSION AND OCC_VERSION STRLESS ${OCC_MINIMAL_VERSION})
+    message(WARNING "Gmsh requires OpenCASCADE >= ${OCC_MINIMAL_VERSION}. "
+        "Use CMAKE_PREFIX_PATH or the CASROOT environment variable "
+        "to explicitely specify the installation path of OpenCASCADE")
+  elseif(OCC_INC)
+    set(OCC_LIBS_REQUIRED
+	# subset of DataExchange
+      	TKSTEP TKSTEP209 TKSTEPAttr TKSTEPBase TKIGES TKXSBase
+      	# ModelingAlgorithms
+      	TKOffset TKFeat TKFillet TKBool TKMesh TKHLR TKBO TKPrim TKShHealing
+      	TKTopAlgo TKGeomAlgo
+      	# ModelingData
+      	TKBRep TKGeomBase TKG3d TKG2d
+      	# FoundationClasses
+      	TKMath TKernel)
+    if(ENABLE_OCC_TBB)
+      list(APPEND OCC_LIBS_REQUIRED tbb tbbmalloc)
+    endif()
+    list(LENGTH OCC_LIBS_REQUIRED NUM_OCC_LIBS_REQUIRED)
+    if(OCC_LIBS)
+      message(STATUS "OCC libraries specified explicitly: " ${OCC_LIBS})
+      list(LENGTH OCC_LIBS_REQUIRED NUM_OCC_LIBS)
+    else()
+      set(OCC_LIBS)
+      foreach(OCC ${OCC_LIBS_REQUIRED})
+        if(ENABLE_OCC_STATIC)
+          set(LIBNAME lib${OCC}.a)
+        else()
+          set(LIBNAME ${OCC})
+        endif()
+        find_library(OCC_LIB ${LIBNAME} HINTS ENV CASROOT PATH_SUFFIXES
+                     lib ${OCC_SYS_NAME}/lib ${OCC_SYS_NAME}/vc8/lib)
+        if(OCC_LIB)
+	  list(APPEND OCC_LIBS ${OCC_LIB})
+        else()
+          message(STATUS "OCC lib " ${LIBNAME} " not Found")
+        endif()
+        unset(OCC_LIB CACHE)
+      endforeach()
+      list(LENGTH OCC_LIBS NUM_OCC_LIBS)
+    endif()
+  endif()
+
+  # additional OCC libraries to handle reading of STEP/IGES attributes. Oh my...
+  if(ENABLE_OCC_CAF)
+    find_package(Freetype)
+    if(FREETYPE_FOUND)
+      set(OCC_CAF_LIBS_REQUIRED
+          TKXDESTEP TKXDEIGES TKXCAF TKLCAF TKVCAF TKCAF TKV3d TKService TKCDF)
+      list(LENGTH OCC_CAF_LIBS_REQUIRED NUM_OCC_CAF_LIBS_REQUIRED)
+      set(OCC_CAF_LIBS)
+      foreach(OCC ${OCC_CAF_LIBS_REQUIRED})
+        find_library(OCC_CAF_LIB ${OCC} HINTS ENV CASROOT PATH_SUFFIXES
+                     lib ${OCC_SYS_NAME}/lib ${OCC_SYS_NAME}/vc8/lib)
+        if(OCC_CAF_LIB)
+          list(APPEND OCC_CAF_LIBS ${OCC_CAF_LIB})
+        else()
+          message(STATUS "OCC CAF lib " ${OCC} " not Found")
+        endif()
+        unset(OCC_CAF_LIB CACHE)
+      endforeach()
+      list(LENGTH OCC_CAF_LIBS NUM_OCC_CAF_LIBS)
+    endif()
+  endif()
+
+  # append OCC CAF libraries first...
+  if(NUM_OCC_CAF_LIBS EQUAL NUM_OCC_CAF_LIBS_REQUIRED)
+    set_config_option(HAVE_OCC_CAF "OpenCASCADE-CAF")
+    list(APPEND EXTERNAL_LIBRARIES ${OCC_CAF_LIBS} ${FREETYPE_LIBRARIES})
+    list(APPEND EXTERNAL_INCLUDES ${FREETYPE_INCLUDE_DIRS})
+    if(WIN32)
+      list(APPEND EXTERNAL_LIBRARIES "windowscodecs")
+      list(APPEND EXTERNAL_LIBRARIES "ole32")
+    endif()
+  endif()
+
+  # then append OCC libraries
+  if(NUM_OCC_LIBS EQUAL NUM_OCC_LIBS_REQUIRED)
+    set_config_option(HAVE_OCC "OpenCASCADE")
+    list(APPEND EXTERNAL_LIBRARIES ${OCC_LIBS})
+    list(APPEND EXTERNAL_INCLUDES ${OCC_INC})
+    if(HAVE_64BIT_SIZE_T)
+      add_definitions(-D_OCC64)
+    endif()
+    if(WIN32)
+      list(APPEND EXTERNAL_LIBRARIES "winspool")
+      add_definitions(-DOCC_CONVERT_SIGNALS)
+    elseif(MSVC)
+      add_definitions(-DWNT)
+    endif()
+  endif()
+endif()
+
+if(ENABLE_ACIS)
+  find_library(ACIS_LIB SpaACIS PATH_SUFFIXES bin/maci386)
+  if(ACIS_LIB)
+    find_path(ACIS_INC "kernapi.hxx" PATH_SUFFIXES include)
+    if(ACIS_INC)
+      set_config_option(HAVE_ACIS "Acis")
+      list(APPEND EXTERNAL_LIBRARIES ${ACIS_LIB})
+      list(APPEND EXTERNAL_INCLUDES ${ACIS_INC})
+    endif()
+  endif()
+endif()
+
+if(ENABLE_ZIPPER)
+  if(ENABLE_BUILD_IOS)
+    set_config_option(HAVE_LIBZ "Zlib")
+  endif()
+  if(NOT HAVE_LIBZ) # necessary for non-GUI builds
+    find_package(ZLIB)
+    if(ZLIB_FOUND)
+      set_config_option(HAVE_LIBZ "Zlib")
+      list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES})
+      list(APPEND EXTERNAL_INCLUDES ${ZLIB_INCLUDE_DIR})
+    endif()
+  endif()
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/zipper AND HAVE_LIBZ)
+    add_subdirectory(contrib/zipper)
+    include_directories(contrib/zipper)
+    set_config_option(HAVE_ZIPPER "Zipper")
+  endif()
+endif()
+
+if(ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON)
+  find_package(SWIG REQUIRED)
+  include(${SWIG_USE_FILE})
+  find_package(PythonLibs)
+  if(SWIG_FOUND AND PYTHONLIBS_FOUND)
+    message(STATUS "Found SWIG version " ${SWIG_VERSION})
+    find_package(PythonInterp)
+    string(SUBSTRING ${SWIG_VERSION} 0 1 SWIG_MAJOR_VERSION)
+    if(SWIG_MAJOR_VERSION EQUAL 1)
+      message(WARNING "Python bindings require SWIG >= 2: disabling Python")
+    else()
+      set_config_option(HAVE_PYTHON "Python")
+      mark_as_advanced(CLEAR PYTHON_LIBRARY PYTHON_INCLUDE_DIR)
+      if(ENABLE_NUMPY)
+        if (NOT NUMPY_INC)
+          EXEC_PROGRAM (${PYTHON_EXECUTABLE}
+            ARGS "-c \"import numpy; print(numpy.get_include())\""
+            OUTPUT_VARIABLE NUMPY_INC
+            RETURN_VALUE NUMPY_NOT_FOUND)
+        endif()
+        if(NUMPY_INC)
+          list(APPEND EXTERNAL_INCLUDES ${NUMPY_INC})
+          set_config_option(HAVE_NUMPY "Numpy")
+        endif()
+      endif()
+      if(HAVE_PETSC)
+        if(ENABLE_PETSC4PY)
+          EXECUTE_PROCESS(
+            COMMAND ${PYTHON_EXECUTABLE} -c "import petsc4py; print(petsc4py.get_include())"
+            OUTPUT_VARIABLE PETSC4PY_INC
+            RESULT_VARIABLE PETSC4PY_NOT_FOUND
+            ERROR_QUIET
+            OUTPUT_STRIP_TRAILING_WHITESPACE)
+          if(PETSC4PY_INC)
+            list(APPEND EXTERNAL_INCLUDES ${PETSC4PY_INC})
+            set_config_option(HAVE_PETSC4PY "PETSc4py")
+          endif()
+        endif()
+      endif()
+    endif()
+  endif()
+endif()
+
+check_function_exists(vsnprintf HAVE_VSNPRINTF)
+if(NOT HAVE_VSNPRINTF AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID)
+  set_config_option(HAVE_NO_VSNPRINTF "NoVsnprintf")
+endif()
+
+check_include_file(sys/socket.h HAVE_SYS_SOCKET_H)
+if(HAVE_SYS_SOCKET_H)
+  set(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h)
+endif()
+check_type_size(socklen_t SOCKLEN_T_SIZE)
+set(CMAKE_EXTRA_INCLUDE_FILES)
+if(NOT SOCKLEN_T_SIZE AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID)
+  set_config_option(HAVE_NO_SOCKLEN_T "NoSocklenT")
+endif()
+
+check_include_file(stdint.h HAVE_STDINT_H)
+if(HAVE_STDINT_H)
+  set(CMAKE_EXTRA_INCLUDE_FILES stdint.h)
+else()
+  set_config_option(HAVE_NO_STDINT_H "NoStdintH")
+endif()
+check_type_size(intptr_t INTPTR_T_SIZE)
+set(CMAKE_EXTRA_INCLUDE_FILES)
+if(NOT INTPTR_T_SIZE AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID)
+  set_config_option(HAVE_NO_INTPTR_T "NoIntptrT")
+endif()
+
+check_include_file(dlfcn.h DLFCN_H)
+if(DLFCN_H)
+  set_config_option(HAVE_DLOPEN "Dlopen")
+  list(APPEND EXTERNAL_LIBRARIES ${CMAKE_DL_LIBS})
+endif()
+
+if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+  check_include_file(linux/joystick.h LINUX_JOYSTICK_H)
+  if(LINUX_JOYSTICK_H)
+    set_config_option(HAVE_LINUX_JOYSTICK "LinuxJoystick")
+  endif()
+endif()
+
+if(WIN32)
+  add_definitions(-D_USE_MATH_DEFINES)
+  list(APPEND EXTERNAL_LIBRARIES winmm wsock32 ws2_32 psapi)
+endif()
+
+if(MSVC)
+  add_definitions(-DNOMINMAX -D_CRT_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_DEPRECATE)
+endif()
+
+# add C functions API
+set(GMSH_SRC ${GMSH_SRC};api/gmshc.cpp)
+
+# force full warnings to encourage everybody to write clean(er) code
+check_cxx_compiler_flag("-Wall" WALL)
+if(WALL AND NOT MSVC)
+  file(GLOB_RECURSE WALL_SRC Common/*.cpp Fltk/*.cpp FunctionSpace/*.cpp
+       Geo/*.cpp Graphics/*.cpp Mesh/*.cpp Numeric/*.cpp Parser/*.cpp
+       Plugin/*.cpp Post/*.cpp Solver/*.cpp)
+  set(WF "-Wall")
+  check_cxx_compiler_flag("-Wint-to-void-pointer-cast" WCAST)
+  if(WCAST)
+    set(WF "${WF} -Wno-int-to-void-pointer-cast")
+  endif()
+  check_cxx_compiler_flag("-Wdeprecated-declarations" WDEPREC)
+  if(WDEPREC)
+    # FIXME: remove this when we have fixed the deprecated GLU code for OpenGL3
+    set(WF "${WF} -Wno-deprecated-declarations")
+  endif()
+  check_cxx_compiler_flag("-Wmisleading-indentation" WIND)
+  if(WIND)
+    set(WF "${WF} -Wno-misleading-indentation")
+  endif()
+  set_compile_flags(WALL_SRC ${WF})
+endif()
+
+# don't issue warnings for contributed libraries
+check_cxx_compiler_flag("-w" NOWARN)
+if(NOWARN)
+  file(GLOB_RECURSE NOWARN_SRC contrib/*.cpp contrib/*.cc contrib/*.cxx contrib/*.c)
+  set_compile_flags(NOWARN_SRC "-w")
+endif()
+
+# disable compile optimization on some known problematic files
+check_cxx_compiler_flag("-O0" NOOPT)
+if(NOOPT OR ENABLE_BUILD_IOS)
+  if(ENABLE_BUILD_IOS) # optimized iOS 10 64 bits screws somewhere in Geo
+    file(GLOB_RECURSE NOOPT_SRC Numeric/robustPredicates.cpp Geo/G*.cpp Mesh/BDS.cpp
+         Parser/Gmsh.tab.cpp contrib/blossom/* Mesh/Background*)
+  else()
+    file(GLOB_RECURSE NOOPT_SRC Numeric/robustPredicates.cpp Mesh/BDS.cpp
+         Parser/Gmsh.tab.cpp contrib/blossom/* contrib/bamg/* Mesh/Background*)
+  endif()
+  set_compile_flags(NOOPT_SRC "-O0")
+endif()
+
+# do not use arithmetic contraction in predicates.cpp
+# if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")
+#   set_source_files_properties(Numeric/robustPredicates.cpp PROPERTIES
+#     COMPILE_FLAGS "/fp:strict")
+# elseif(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang")
+#   set_source_files_properties(Numeric/robustPredicates.cpp PROPERTIES
+#     COMPILE_FLAGS "-fno-unsafe-math-optimizations -ffp-contract=off")
+# elseif(CMAKE_C_COMPILER_ID STREQUAL "Intel")
+#   set_source_files_properties(Numeric/robustPredicates.cpp PROPERTIES
+#     COMPILE_FLAGS "-fp-model strict")
+# endif()
+
+# enable Revoropt and set compile flags for the corresponding plugin
+if(ENABLE_REVOROPT)
+  find_path(EIGEN3_INC "eigen3/Eigen/Dense")
+  if(EIGEN3_INC AND HAVE_MESH AND HAVE_PLUGINS AND HAVE_ANN AND HAVE_ALGLIB)
+    list(APPEND EXTERNAL_INCLUDES ${EIGEN3_INC} contrib/Revoropt/include)
+    message(STATUS "using contrib/Revoropt")
+    set_config_option(HAVE_REVOROPT "Revoropt")
+    add_definitions(-DUSE_ANN)
+    get_source_file_property(PROP Plugin/CVTRemesh.cpp COMPILE_FLAGS)
+    if(PROP)
+      set_source_files_properties(Plugin/CVTRemesh.cpp PROPERTIES
+                                  COMPILE_FLAGS "${PROP} -std=c++11")
+    else()
+      set_source_files_properties(Plugin/CVTRemesh.cpp PROPERTIES
+                                  COMPILE_FLAGS "-std=c++11")
+    endif()
+  else()
+    message(WARNING "Revoropt requires Eigen3, Mesh, Plugins, ANN and ALGLIB")
+  endif()
+endif()
+
+list(SORT CONFIG_OPTIONS)
+set(GMSH_CONFIG_OPTIONS "")
+foreach(OPT ${CONFIG_OPTIONS})
+  set(GMSH_CONFIG_OPTIONS "${GMSH_CONFIG_OPTIONS} ${OPT}")
+endforeach()
+
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Common/GmshConfig.h.in
+               ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshConfig.h)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Common/GmshVersion.h.in
+               ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshVersion.h)
+
+# the texi version file is modified in the source directory (not ideal, but
+# since git tracks the contents of the file this is acceptable as it will only
+# change when the actual version is changed - not for each git hash)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo/version.texi.in
+               ${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo/version.texi)
+
+file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/version.txt
+     ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}.${GMSH_PATCH_VERSION})
+
+# process cmake environment variables so we can append them to the -I include
+# commands. This is not recommended (we should only use the cache variables) but
+# it is very convenient: otherwise we have to remember providing the
+# -D... options to cmake for each new build.
+set(ENV_CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH})
+set(ENV_CMAKE_INCLUDE_PATH $ENV{CMAKE_INCLUDE_PATH})
+if(UNIX)
+  if(ENV_CMAKE_PREFIX_PATH)
+    string(REPLACE ":" ";" ENV_CMAKE_PREFIX_PATH ${ENV_CMAKE_PREFIX_PATH})
+  endif()
+  if(ENV_CMAKE_INCLUDE_PATH)
+    string(REPLACE ":" ";" ENV_CMAKE_INCLUDE_PATH ${ENV_CMAKE_INCLUDE_PATH})
+  endif()
+endif()
+list(APPEND EXTERNAL_INCLUDES ${CMAKE_INCLUDE_PATH} ${ENV_CMAKE_INCLUDE_PATH})
+list(APPEND EXTERNAL_INCLUDES ${CMAKE_PREFIX_PATH} ${ENV_CMAKE_PREFIX_PATH})
+foreach(DIR ${CMAKE_PREFIX_PATH} ${ENV_CMAKE_PREFIX_PATH})
+  list(APPEND EXTERNAL_INCLUDES ${DIR}/include)
+endforeach()
+
+if(EXTERNAL_INCLUDES)
+  list(REMOVE_DUPLICATES EXTERNAL_INCLUDES)
+endif()
+
+if(HAVE_FLTK)
+  set(LINK_LIBRARIES ${FLTK_LIBRARIES} ${EXTERNAL_LIBRARIES}
+                     ${OPENGL_LIBRARIES} ${LAPACK_LIBRARIES})
+elseif(HAVE_OPENGL)
+  set(LINK_LIBRARIES ${EXTERNAL_LIBRARIES} ${OPENGL_LIBRARIES}
+                     ${LAPACK_LIBRARIES})
+else()
+  set(LINK_LIBRARIES ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES})
+endif()
+
+# try to use static gfortran on static builds (cannot do this on dynamic builds
+# as e.g. Debian compiles libgfortran.a without -fPIC: sigh...)
+if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENABLE_BUILD_SHARED)
+  find_library(GFORTRAN_STATIC libgfortran.a)
+  if(GFORTRAN_STATIC)
+    set(CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES)
+    message(STATUS "Using static libgfortran")
+    foreach(STR ${LINK_LIBRARIES})
+      string(REPLACE "-lgfortran" ${GFORTRAN_STATIC} STR2 ${STR})
+      list(APPEND LINK_LIBRARIES2 ${STR2})
+    endforeach()
+    set(LINK_LIBRARIES ${LINK_LIBRARIES2})
+  endif()
+endif()
+
+# Linux-specific linking
+if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+  if(HAVE_OCC)
+    find_library(RT_LIB rt)
+    if(RT_LIB)
+      list(APPEND LINK_LIBRARIES ${RT_LIB})
+    endif()
+  endif()
+  if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Intel")
+    add_definitions(-fPIC)
+  endif()
+endif()
+
+# we could specify include dirs more selectively, but this is simpler
+include_directories(Common Fltk Geo Graphics Mesh Solver Numeric Parser
+  Plugin Post api ${EXTERNAL_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}/Common)
+
+# set this for external codes that might include this CMakeList file
+set(GMSH_EXTERNAL_INCLUDE_DIRS ${EXTERNAL_INCLUDES} CACHE
+    STRING "External include directories" FORCE)
+set(GMSH_EXTERNAL_LIBRARIES ${LINK_LIBRARIES} CACHE
+    STRING "External libraries" FORCE)
+
+# group sources for easier navigation in IDEs
+foreach(DIR ${GMSH_DIRS})
+  string(REGEX REPLACE "\\+" "\\\\+" DIR ${DIR})
+  source_group(${DIR} REGULAR_EXPRESSION ${DIR}/.*)
+endforeach()
+
+# static library target
+if(ENABLE_BUILD_LIB)
+  add_library(lib STATIC ${GMSH_SRC})
+  set_target_properties(lib PROPERTIES OUTPUT_NAME gmsh)
+  if(MSVC)
+    set_target_properties(lib PROPERTIES DEBUG_POSTFIX d)
+    if(ENABLE_MSVC_STATIC_RUNTIME)
+      set_target_properties(lib PROPERTIES LINK_FLAGS_RELEASE "/nodefaultlib:LIBCMT")
+    endif()
+  endif()
+endif()
+
+# shared library target
+if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
+  add_library(shared SHARED ${GMSH_SRC})
+  set_target_properties(shared PROPERTIES OUTPUT_NAME gmsh
+     VERSION ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}.${GMSH_PATCH_VERSION}
+     SOVERSION ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION})
+  if(WIN32)
+    set_target_properties(shared PROPERTIES PREFIX "" IMPORT_PREFIX ""
+      IMPORT_SUFFIX ".lib" COMPILE_FLAGS "-DGMSH_DLL -DGMSH_DLL_EXPORT")
+  endif()
+  target_link_libraries(shared ${LINK_LIBRARIES})
+  if(MSVC AND ENABLE_MSVC_STATIC_RUNTIME)
+    message(STATUS "Note: By enabling ENABLE_MSVC_STATIC_RUNTIME, shared library "
+            "won't link. In MSVC change /MT to /MD in the shared project properties")
+  endif()
+endif()
+
+# binary targets
+if(HAVE_FLTK)
+  if(ENABLE_BUILD_DYNAMIC)
+    add_executable(gmsh WIN32 Common/Main.cpp)
+    target_link_libraries(gmsh shared)
+  else()
+    add_executable(gmsh WIN32 Common/Main.cpp ${GMSH_SRC})
+  endif()
+  # we could add this to create a minimal app bundle even without install
+  # if(APPLE AND NOT ENABLE_OS_SPECIFIC_INSTALL)
+  #  set_target_properties(gmsh PROPERTIES MACOSX_BUNDLE ON
+  #    MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_dev.plist)
+  # endif()
+else()
+  if(ENABLE_BUILD_DYNAMIC)
+    add_executable(gmsh Common/Main.cpp)
+    target_link_libraries(gmsh shared)
+  else()
+    add_executable(gmsh Common/Main.cpp ${GMSH_SRC})
+  endif()
+endif()
+target_link_libraries(gmsh ${LINK_LIBRARIES})
+
+# Windows specific linker options
+if(WIN32 AND NOT MSVC)
+  set(FLAGS "-Wl,--stack,16777216 -mwindows")
+  if(HAVE_64BIT_SIZE_T)
+    set(FLAGS "${FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/Win64Icon.res")
+  else()
+    set(FLAGS "${FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/Win32Icon.res")
+  endif()
+  set_target_properties(gmsh PROPERTIES LINK_FLAGS "${FLAGS} -static")
+  if(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED)
+    set_target_properties(shared PROPERTIES LINK_FLAGS -static)
+  endif()
+  # remove -Wl,-Bdynamic flags
+  set(CMAKE_EXE_LINK_DYNAMIC_C_FLAGS)
+  set(CMAKE_EXE_LINK_DYNAMIC_CXX_FLAGS)
+elseif(MSVC)
+  set_target_properties(gmsh PROPERTIES LINK_FLAGS "/STACK:16777216 /SAFESEH:NO")
+endif()
+
+# android target
+if(ENABLE_BUILD_ANDROID)
+  find_file(CMAKE_TOOLCHAIN_FILE "android.toolchain.cmake")
+  if(NOT CMAKE_TOOLCHAIN_FILE)
+    message(FATAL_ERROR "Cannot compile Gmsh for android without android-cmake")
+  endif()
+  add_definitions(-D_GLIBCXX_USE_C99_MATH=1)
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+  set(CMAKE_BUILD_TYPE Release)
+  set(LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_CURRENT_BINARY_DIR})
+  set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/libs/)
+  add_definitions(-DBUILD_ANDROID)
+  add_definitions(-DPICOJSON_USE_LOCALE=0)
+  add_library(androidGmsh SHARED ${GMSH_SRC})
+  set_target_properties(androidGmsh PROPERTIES OUTPUT_NAME gmsh)
+  target_link_libraries(androidGmsh ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES})
+  add_custom_command(TARGET androidGmsh POST_BUILD COMMAND
+                     ${CMAKE_STRIP} ${LIBRARY_OUTPUT_PATH}/libgmsh.so)
+endif()
+
+# parser target
+find_program(BISON bison)
+find_program(FLEX flex)
+if(BISON AND FLEX)
+  add_custom_target(parser
+                    COMMAND ${BISON} -p gmsh_yy --output Gmsh.tab.cpp -d Gmsh.y
+                    COMMAND ${FLEX} -P gmsh_yy -o Gmsh.yy.cpp Gmsh.l
+                    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Parser)
+endif()
+
+if(UNIX)
+  # cannot use cmake's file search functions here (they would only find files
+  # existing at configuration time)
+  add_custom_target(purge
+                    COMMAND rm -f `find . -name *~ -o -name *~~`
+                    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+  add_custom_target(etags
+                    COMMAND etags `find . -name *.cpp -o -name *.h -o -name *.y`
+                    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+endif()
+
+if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR
+   CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+  execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion
+                  OUTPUT_VARIABLE CXX_COMPILER_VERSION
+                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+else()
+  set(CXX_COMPILER_VERSION "Unknown")
+endif()
+
+set(WELCOME_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/WELCOME.txt)
+set(SDK_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/SDK.txt)
+set(LICENSE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt)
+set(CREDITS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CREDITS.txt)
+set(CHANGELOG_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CHANGELOG.txt)
+file(GLOB TUTORIAL_GEO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/?*.*)
+file(GLOB TUTORIAL_CPP_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/c++/?*.*)
+file(GLOB TUTORIAL_C_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/c/?*.*)
+file(GLOB TUTORIAL_PY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/python/?*.*)
+file(GLOB TUTORIAL_JL_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/julia/?*.*)
+file(GLOB DEMOS ${CMAKE_CURRENT_SOURCE_DIR}/demos/*)
+foreach(SUBDIR ${DEMOS})
+  if(IS_DIRECTORY ${SUBDIR})
+    list(APPEND DEMOS_DIRS ${SUBDIR})
+  endif()
+endforeach()
+set(TEX_DIR ${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo)
+file(GLOB TEX_SRC ${TEX_DIR}/*.texi)
+set(TEX_OBJ ${TEX_DIR}/gmsh.aux ${TEX_DIR}/gmsh.cp ${TEX_DIR}/gmsh.cps
+    ${TEX_DIR}/gmsh.fn ${TEX_DIR}/gmsh.html ${TEX_DIR}/gmsh.info ${TEX_DIR}/gmsh.ky
+    ${TEX_DIR}/gmsh.log ${TEX_DIR}/gmsh.pdf ${TEX_DIR}/gmsh.pg ${TEX_DIR}/gmsh.toc
+    ${TEX_DIR}/gmsh.tp ${TEX_DIR}/gmsh.tps ${TEX_DIR}/gmsh.txt ${TEX_DIR}/gmsh.vr)
+
+macro(unix2dos VARNAME)
+  file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unix2dos)
+  set(UNIX2DOS_FILES)
+  foreach(FILE ${${VARNAME}})
+    file(READ ${FILE} F0)
+    get_filename_component(N ${FILE} NAME)
+    if(CYGWIN)
+      string(REGEX REPLACE "\n" "\r\n" F1 "${F0}")
+      file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${N} "${F1}")
+    else() # if not in Cygwin, cmake adds '\r's automatically
+      file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${N} "${F0}")
+    endif()
+    list(APPEND UNIX2DOS_FILES ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${N})
+  endforeach()
+  set(${VARNAME} ${UNIX2DOS_FILES})
+endmacro()
+
+if(WIN32)
+  if(ENABLE_OS_SPECIFIC_INSTALL)
+    set(GMSH_BIN .)
+    set(GMSH_LIB .)
+    set(GMSH_DOC .)
+    set(GMSH_MAN .)
+    set(GMSH_INC .)
+  else()
+    include(GNUInstallDirs)
+    set(GMSH_BIN ${CMAKE_INSTALL_BINDIR})
+    set(GMSH_LIB ${CMAKE_INSTALL_LIBDIR})
+    set(GMSH_DOC ${CMAKE_INSTALL_DOCDIR})
+    set(GMSH_MAN ${CMAKE_INSTALL_MANDIR}/man1)
+    set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR})
+  endif()
+  if(CYGWIN)
+    unix2dos(GMSH_API)
+    if(ENABLE_PRIVATE_API)
+      unix2dos(GMSH_PRIVATE_API)
+    endif()
+    unix2dos(WELCOME_FILE)
+    unix2dos(SDK_FILE)
+    unix2dos(LICENSE_FILE)
+    unix2dos(CREDITS_FILE)
+    unix2dos(CHANGELOG_FILE)
+    unix2dos(TUTORIAL_GEO_FILES)
+    unix2dos(TUTORIAL_CPP_FILES)
+    unix2dos(TUTORIAL_C_FILES)
+    unix2dos(TUTORIAL_PY_FILES)
+    unix2dos(TUTORIAL_JL_FILES)
+    foreach(DIR ${DEMOS_DIRS})
+      file(GLOB DEMO_FILES ${DIR}/?*.*)
+      unix2dos(DEMO_FILES)
+    endforeach()
+  endif()
+elseif(APPLE AND ENABLE_OS_SPECIFIC_INSTALL)
+  # set these so that the files get installed nicely in the MacOSX
+  # .app bundle
+  set(GMSH_BIN ../MacOS)
+  set(GMSH_LIB ../MacOS)
+  set(GMSH_DOC ../../..)
+  set(GMSH_MAN ../../..)
+  set(GMSH_INC ../MacOS)
+else()
+  include(GNUInstallDirs)
+  set(GMSH_BIN ${CMAKE_INSTALL_BINDIR})
+  set(GMSH_LIB ${CMAKE_INSTALL_LIBDIR})
+  set(GMSH_DOC ${CMAKE_INSTALL_DOCDIR})
+  set(GMSH_MAN ${CMAKE_INSTALL_MANDIR}/man1)
+  set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR})
+endif()
+
+# FIXME: change this once we understand rpaths
+if(APPLE)
+  if(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED)
+    set_target_properties(shared PROPERTIES INSTALL_NAME_DIR
+                          ${CMAKE_INSTALL_PREFIX}/${GMSH_LIB})
+  endif()
+endif()
+
+# mark targets as optional so we can install them separately if needed
+# (e.g. "make lib" or "make shared" followed by "make install/fast")
+install(TARGETS gmsh DESTINATION ${GMSH_BIN} OPTIONAL)
+if(ENABLE_BUILD_LIB)
+  install(TARGETS lib DESTINATION ${GMSH_LIB} OPTIONAL)
+endif()
+if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
+  install(TARGETS shared DESTINATION ${GMSH_LIB} OPTIONAL)
+endif()
+
+if(ENABLE_ONELAB)
+  install(FILES ${ONELAB_PY} DESTINATION ${GMSH_BIN})
+endif()
+if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
+  install(FILES ${GMSH_API} DESTINATION ${GMSH_INC})
+  install(FILES ${GMSH_PY} DESTINATION ${GMSH_LIB})
+  install(FILES ${GMSH_JL} DESTINATION ${GMSH_LIB})
+  if(ENABLE_PRIVATE_API)
+    install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh)
+  endif()
+endif()
+if(INSTALL_SDK_README)
+  configure_file(${SDK_FILE} ${CMAKE_CURRENT_BINARY_DIR}/README.txt)
+  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/README.txt DESTINATION .)
+endif()
+install(FILES ${WELCOME_FILE} DESTINATION ${GMSH_DOC} RENAME README.txt)
+install(FILES ${LICENSE_FILE} DESTINATION ${GMSH_DOC})
+install(FILES ${CREDITS_FILE} DESTINATION ${GMSH_DOC})
+install(FILES ${CHANGELOG_FILE} DESTINATION ${GMSH_DOC})
+install(FILES ${TUTORIAL_GEO_FILES} DESTINATION ${GMSH_DOC}/tutorial)
+install(FILES ${TUTORIAL_CPP_FILES} DESTINATION ${GMSH_DOC}/tutorial/c++)
+install(FILES ${TUTORIAL_C_FILES} DESTINATION ${GMSH_DOC}/tutorial/c)
+install(FILES ${TUTORIAL_PY_FILES} DESTINATION ${GMSH_DOC}/tutorial/python)
+install(FILES ${TUTORIAL_JL_FILES} DESTINATION ${GMSH_DOC}/tutorial/julia)
+foreach(DIR ${DEMOS_DIRS})
+  get_filename_component(DEMOS_DIR_NAME ${DIR} NAME)
+  file(GLOB DEMO_FILES ${DIR}/?*.*)
+  install(FILES ${DEMO_FILES} DESTINATION ${GMSH_DOC}/demos/${DEMOS_DIR_NAME})
+endforeach()
+if(UNIX AND NOT CYGWIN)
+  install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/doc/gmsh.1 DESTINATION ${GMSH_MAN})
+endif()
+
+add_custom_target(get_headers
+  COMMAND ${CMAKE_COMMAND} -E make_directory Headers/gmsh
+  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+foreach(FILE ${GMSH_API})
+  add_custom_command(TARGET get_headers POST_BUILD COMMAND ${CMAKE_COMMAND}
+    -E copy_if_different ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/Headers/
+    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+endforeach()
+if(ENABLE_PRIVATE_API)
+  foreach(FILE ${GMSH_PRIVATE_API})
+    add_custom_command(TARGET get_headers POST_BUILD COMMAND ${CMAKE_COMMAND}
+      -E copy_if_different ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/Headers/gmsh/
+      WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+  endforeach()
+endif()
+
+find_program(MAKEINFO makeinfo)
+if(MAKEINFO)
+  add_custom_command(OUTPUT ${TEX_DIR}/gmsh.info DEPENDS ${TEX_SRC}
+                     COMMAND ${MAKEINFO} --split-size 1000000
+                     ARGS ${TEX_DIR}/gmsh.texi WORKING_DIRECTORY ${TEX_DIR})
+  add_custom_target(info DEPENDS ${TEX_DIR}/gmsh.info)
+  add_custom_command(OUTPUT ${TEX_DIR}/gmsh.txt DEPENDS ${TEX_SRC}
+                     COMMAND ${MAKEINFO} --plaintext -o gmsh.txt
+                     ARGS ${TEX_DIR}/gmsh.texi WORKING_DIRECTORY ${TEX_DIR})
+  add_custom_target(txt DEPENDS ${TEX_DIR}/gmsh.txt)
+  add_custom_command(OUTPUT ${TEX_DIR}/gmsh.html DEPENDS ${TEX_SRC}
+    COMMAND ${MAKEINFO} --html --css-ref=http://gmsh.info/gmsh.css
+    --no-split --set-customization-variable
+    EXTRA_HEAD='<meta name="viewport" content="width=device-width,initial-scale=1.0">'
+    ARGS ${TEX_DIR}/gmsh.texi WORKING_DIRECTORY ${TEX_DIR})
+  add_custom_target(html DEPENDS ${TEX_DIR}/gmsh.html)
+  install(FILES ${TEX_DIR}/gmsh.html DESTINATION ${GMSH_DOC} OPTIONAL)
+else()
+  add_custom_target(html COMMAND ${CMAKE_COMMAND} -E touch ${TEX_DIR}/gmsh.html)
+endif()
+
+find_program(TEXI2PDF texi2pdf)
+if(TEXI2PDF)
+  add_custom_command(OUTPUT ${TEX_DIR}/gmsh.pdf DEPENDS ${TEX_SRC}
+                     COMMAND ${TEXI2PDF} ARGS gmsh.texi
+                     WORKING_DIRECTORY ${TEX_DIR})
+  add_custom_target(pdf DEPENDS ${TEX_DIR}/gmsh.pdf)
+  install(FILES ${TEX_DIR}/gmsh.pdf DESTINATION ${GMSH_DOC} OPTIONAL)
+endif()
+
+execute_process(COMMAND ${CMAKE_COMMAND} -E echo
+  "@c This file was generated by cmake: do not edit manually!\n${OPT_TEXI}"
+  OUTPUT_FILE cmake_options.texi)
+
+if(MAKEINFO AND TEXI2PDF)
+  add_custom_target(doc COMMAND ${CMAKE_COMMAND} -E tar zcf
+                    ${CMAKE_CURRENT_BINARY_DIR}/gmsh-${GMSH_VERSION}-doc.tgz
+                    CREDITS.txt LICENSE.txt CHANGELOG.txt
+                    doc/gmsh.1 doc/texinfo/gmsh.html doc/texinfo/gmsh.info
+                    doc/texinfo/gmsh.pdf doc/texinfo/gmsh.txt
+                    COMMAND ${CMAKE_COMMAND} -E remove ${TEX_OBJ}
+                    DEPENDS ${TEX_DIR}/gmsh.info ${TEX_DIR}/gmsh.txt
+                    ${TEX_DIR}/gmsh.html ${TEX_DIR}/gmsh.pdf
+                    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+endif()
+
+if(MAKEINFO OR TEXI2PDF)
+  add_custom_target(clean_doc COMMAND ${CMAKE_COMMAND} -E remove ${TEX_OBJ})
+endif()
+
+if(APPLE AND ENABLE_BUILD_LIB)
+  file(READ ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_framework.plist F0)
+  string(REPLACE GMSH_VERSION "${GMSH_VERSION}" F1 "${F0}")
+  file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Info_framework.plist "${F1}")
+  get_target_property(LIBNAME lib LOCATION) # depracated
+  #set(LIBNAME $<TARGET_FILE:lib>) # FIXME: use this in the future
+  add_custom_target(framework DEPENDS lib
+    COMMAND ${CMAKE_COMMAND} -E remove_directory gmsh.framework
+    COMMAND ${CMAKE_COMMAND} -E make_directory gmsh.framework/Headers
+    COMMAND ${CMAKE_COMMAND} -E make_directory gmsh.framework/Resources
+    COMMAND ${CMAKE_COMMAND} -E copy ${LIBNAME} gmsh.framework/gmsh
+    COMMAND ${CMAKE_COMMAND} -E copy Info_framework.plist
+                                     gmsh.framework/Resources/Info.plist
+    COMMAND ${CMAKE_COMMAND} -E create_symlink . gmsh.framework/Headers/gmsh
+    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+  foreach(FILE ${GMSH_API})
+    add_custom_command(TARGET framework POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy
+        ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/gmsh.framework/Headers/
+        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+  endforeach()
+  if(ENABLE_PRIVATE_API)
+    foreach(FILE ${GMSH_PRIVATE_API})
+      add_custom_command(TARGET framework POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy
+          ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/gmsh.framework/Headers/
+          WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+    endforeach()
+  endif()
+endif()
+
+set(CPACK_PACKAGE_VENDOR "Christophe Geuzaine and Jean-Francois Remacle")
+set(CPACK_PACKAGE_VERSION_MAJOR ${GMSH_MAJOR_VERSION})
+set(CPACK_PACKAGE_VERSION_MINOR ${GMSH_MINOR_VERSION})
+set(CPACK_PACKAGE_VERSION_PATCH ${GMSH_PATCH_VERSION})
+set(CPACK_PACKAGE_DESCRIPTION_FILE ${WELCOME_FILE})
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
+    "3D finite element mesh generator with built-in CAD engine and post-processor")
+if(GMSH_EXTRA_VERSION MATCHES "-git.*") # so that we'll overwrite the archives
+  set(CPACK_PACKAGE_FILE_NAME gmsh-git-${GMSH_OS})
+  set(CPACK_SOURCE_PACKAGE_FILE_NAME gmsh-git-source)
+else()
+  set(CPACK_PACKAGE_FILE_NAME gmsh-${GMSH_VERSION}-${GMSH_OS})
+  set(CPACK_SOURCE_PACKAGE_FILE_NAME gmsh-${GMSH_VERSION}-source)
+endif()
+set(CPACK_PACKAGE_INSTALL_DIRECTORY "gmsh")
+set(CPACK_RESOURCE_FILE_LICENSE ${LICENSE_FILE})
+set(CPACK_RESOURCE_FILE_README ${WELCOME_FILE})
+set(CPACK_RESOURCE_FILE_WELCOME ${WELCOME_FILE})
+set(CPACK_PACKAGE_EXECUTABLE "gmsh")
+if(ENABLE_PACKAGE_STRIP)
+  set(CPACK_STRIP_FILES TRUE)
+else()
+  set(CPACK_STRIP_FILES FALSE)
+endif()
+set(CPACK_SOURCE_GENERATOR TGZ)
+set(CPACK_SOURCE_IGNORE_FILES "${CMAKE_CURRENT_BINARY_DIR}" "/CVS/" "/.svn" "/.git"
+    "~$" "DS_Store$" "GmshConfig.h$" "GmshVersion.h$" "/benchmarks/" "/tmp/"
+    "/bin/" "/lib/" "/nightly/" "GPATH" "GRTAGS" "GSYMS" "GTAGS" "/HTML/"
+    "/contrib/3M/" "/contrib/Parasolid/")
+
+if(UNIX)
+  # make sure we remove previous installs before doing the next one (on Mac for
+  # example "make package; make package_source" would lead to huge file lists
+  # getting generated due to the 'Applications' symlink in the bundle)
+  set(CPACK_INSTALL_COMMANDS "rm -rf ${CMAKE_CURRENT_BINARY_DIR}/_CPack_Packages")
+endif()
+
+if(APPLE AND ENABLE_OS_SPECIFIC_INSTALL)
+  set(CPACK_GENERATOR Bundle)
+  set(CPACK_BUNDLE_NAME Gmsh)
+  file(READ ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_app.plist F0)
+  string(REPLACE GMSH_VERSION "${GMSH_VERSION}" F1 "${F0}")
+  file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Info.plist "${F1}")
+  set(CPACK_BUNDLE_PLIST ${CMAKE_CURRENT_BINARY_DIR}/Info.plist)
+  set(CPACK_BUNDLE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIcons.icns)
+  if(PACKAGER STREQUAL "geuzaine - removed: we sign on a separate machine")
+    # codesigning requires CMake >= 3.2
+    set(CPACK_BUNDLE_APPLE_CERT_APP "Developer ID Application: Christophe Geuzaine")
+  endif()
+  install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsGeo.icns DESTINATION .
+          RENAME GmshGeo.icns)
+  install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsMsh.icns DESTINATION .
+          RENAME GmshMsh.icns)
+  install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsSol.icns DESTINATION .
+          RENAME GmshSol.icns)
+  install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsPos.icns DESTINATION .
+          RENAME GmshPos.icns)
+  set(CPACK_PACKAGE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIcons.icns)
+elseif(WIN32)
+  set(CPACK_GENERATOR ZIP)
+else()
+  set(CPACK_GENERATOR TGZ)
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/utils/wrappers/gmshpy AND
+   ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON AND HAVE_PYTHON)
+  add_subdirectory(utils/wrappers/gmshpy)
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/utils/wrappers/java AND
+   ENABLE_PRIVATE_API AND ENABLE_WRAP_JAVA)
+  add_subdirectory(utils/wrappers/java)
+endif()
+
+include(CPack)
+
+if(NOT DISABLE_GMSH_TESTS)
+  # disabling tests is useful when including this CMakeLists in an external project
+  include(CTest)
+  file(GLOB_RECURSE TESTFILES
+       tutorial/*.geo demos/*.geo benchmarks/?d/*.geo benchmarks/extrude/*.geo
+       benchmarks/occ/*.geo)
+  # disable this test for now on our Linux32 machine - the current config
+  # crashes on the OCC STL generation
+  if(${GMSH_OS} MATCHES "Linux32")
+    list(REMOVE_ITEM TESTFILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/t18.geo)
+  endif()
+  foreach(TESTFILE ${TESTFILES})
+    # use relative path for Cygwin/MinGW (the pure win exe built with the MinGW
+    # compilers does not understand a full Cygwin-style path)
+    FILE(RELATIVE_PATH TEST ${CMAKE_CURRENT_BINARY_DIR} ${TESTFILE})
+    if(HAVE_OCC OR NOT ${TEST} MATCHES "boolean" OR NOT ${TEST} MATCHES "occ")
+      add_test(${TEST} ./gmsh ${TEST} -3 -nopopup -o ./tmp.msh)
+    endif()
+  endforeach()
+  # test c++ api tutorials with dynamic builds (except on 32 bit windows for
+  # now: our win32 setup does not currently handle exceptions)
+  if(ENABLE_BUILD_DYNAMIC AND NOT ${GMSH_OS} MATCHES "Windows32")
+    file(GLOB_RECURSE TESTFILES tutorial/c++/*.cpp)
+    foreach(TESTFILE ${TESTFILES})
+      get_filename_component(TEST ${TESTFILE} NAME_WE)
+      add_executable(${TEST} WIN32 ${TESTFILE})
+      target_link_libraries(${TEST} shared)
+      if(WIN32 AND NOT MSVC)
+        set_target_properties(${TEST} PROPERTIES LINK_FLAGS "-mwindows -static")
+      endif()
+      add_test(${TEST}_cpp ${TEST})
+    endforeach()
+  endif()
+endif()
+
+message(STATUS "")
+message(STATUS "Gmsh ${GMSH_VERSION} has been configured for ${GMSH_OS}")
+message(STATUS "")
+message(STATUS " * Build options:" ${GMSH_CONFIG_OPTIONS})
+message(STATUS " * Build type: " ${CMAKE_BUILD_TYPE})
+message(STATUS " * C compiler: " ${CMAKE_C_COMPILER})
+message(STATUS " * C++ compiler: " ${CMAKE_CXX_COMPILER})
+message(STATUS " * Install prefix: " ${CMAKE_INSTALL_PREFIX})
+message(STATUS "")
+
+mark_as_advanced(GMSH_EXTRA_VERSION
+                 ACIS_LIB ANN_INC ANN_LIB CAIRO_LIB CAIRO_INC CGNS_INC GMM_INC
+                 GMP_INC GMP_LIB MMG3D_INC MMG3D_LIB HDF5_LIB
+                 MED_LIB OCC_INC SZ_LIB
+                 PETSC_LIBS SLEPC_INC SLEPC_INC2 SLEPC_LIB
+                 BISON FLEX MAKEINFO TEXI2PDF FLTK_CONFIG_SCRIPT
+                 GMSH_EXTERNAL_INCLUDE_DIRS GMSH_EXTERNAL_LIBRARIES)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/configs/4.7.0/static/CMakeLists.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/configs/4.7.0/static/CMakeLists.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/configs/4.7.0/static/CMakeLists.txt	(revision 27955)
@@ -0,0 +1,2191 @@
+# Gmsh - Copyright (C) 1997-2020 C. Geuzaine, J.-F. Remacle
+#
+# See the LICENSE.txt file for license information. Please report all
+# issues on https://gitlab.onelab.info/gmsh/gmsh/issues.
+
+cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
+
+# if CMAKE_BUILD_TYPE is specified use it; otherwise set the default
+# build type to "RelWithDebInfo" ("-O2 -g" with gcc) prior to calling
+# project()
+if(DEFINED CMAKE_BUILD_TYPE)
+  set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Choose build type")
+else()
+  set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose build type")
+endif()
+
+project(gmsh CXX C)
+
+# require C++11 and request C99
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_C_STANDARD 99)
+
+# this variable controls the default value of the options which are normally set
+# to ON (useful if you want to configure a minimal version of Gmsh: e.g. "cmake
+# -DDEFAULT=0 -DENABLE_POST=1 -DENABLE_PARSER=1")
+set(DEFAULT ON CACHE INTERNAL "Default value for enabled-by-default options")
+
+macro(opt OPTION HELP VALUE)
+  option(ENABLE_${OPTION} ${HELP} ${VALUE})
+  set(OPT_TEXI "${OPT_TEXI}\n@item ENABLE_${OPTION}\n${HELP} (default: ${VALUE})")
+endmacro()
+
+opt(3M "Enable proprietary 3M extension" OFF)
+opt(ALGLIB "Enable ALGLIB (used by some mesh optimizers)" ${DEFAULT})
+opt(ANN "Enable ANN (used for fast point search in mesh/post)" ${DEFAULT})
+opt(BAMG "Enable Bamg 2D anisotropic mesh generator" ${DEFAULT})
+opt(BLAS_LAPACK "Enable BLAS/Lapack for linear algebra (if Eigen if disabled)" OFF)
+opt(BLOSSOM "Enable Blossom algorithm (needed for full quad meshing)" ${DEFAULT})
+opt(BUILD_LIB "Enable 'lib' target for building static Gmsh library" OFF)
+opt(BUILD_SHARED "Enable 'shared' target for building shared Gmsh library" OFF)
+opt(BUILD_DYNAMIC "Enable dynamic Gmsh executable (linked with shared library)" OFF)
+opt(BUILD_ANDROID "Enable Android NDK library target (experimental)" OFF)
+opt(BUILD_IOS "Enable iOS library target (experimental)" OFF)
+opt(CGNS "Enable CGNS import/export (experimental)" ${DEFAULT})
+opt(CGNS_CPEX0045 "Enable high-order CGNS import/export following CPEX0045 (experimental)" OFF)
+opt(CAIRO "Enable Cairo to render fonts (experimental)" ${DEFAULT})
+opt(PROFILE "Enable profiling compiler flags" OFF)
+opt(DINTEGRATION "Enable discrete integration (needed for levelsets)" ${DEFAULT})
+opt(DOMHEX "Enable experimental DOMHEX code" ${DEFAULT})
+opt(EIGEN "Enable Eigen for linear algebra (instead of Blas/Lapack)" ON)
+opt(FLTK "Enable FLTK graphical user interface (requires mesh/post)" ${DEFAULT})
+opt(GETDP "Enable GetDP solver (linked as a library, experimental)" ${DEFAULT})
+opt(GMM "Enable GMM linear solvers (simple alternative to PETSc)" ${DEFAULT})
+opt(GMP "Enable GMP for Kbipack (advanced)" ON)
+opt(GRAPHICS "Enable building graphics lib even without GUI (advanced)" OFF)
+opt(HXT "Enable HXT library (for reparametrization and meshing)" ${DEFAULT})
+opt(KBIPACK "Enable Kbipack (neeeded by homology solver)" ${DEFAULT})
+opt(MATHEX "Enable Mathex expression parser (used by plugins and options)" ${DEFAULT})
+opt(MED "Enable MED mesh and post file formats" ${DEFAULT})
+opt(MESH "Enable mesh module (required by GUI)" ${DEFAULT})
+opt(METIS "Enable Metis mesh partitioner" ${DEFAULT})
+opt(MMG "Enable Mmg mesh adaptation interface" ${DEFAULT})
+opt(MPEG_ENCODE "Enable built-in MPEG movie encoder" ${DEFAULT})
+opt(MPI "Enable MPI (experimental, not used for meshing)" OFF)
+opt(MSVC_STATIC_RUNTIME "Enable static Visual C++ runtime" OFF)
+opt(MUMPS "Enable MUMPS sparse direct linear solver" OFF)
+opt(NETGEN "Enable Netgen 3D frontal mesh generator" ${DEFAULT})
+opt(NUMPY "Enable fullMatrix and numpy array conversion for private API" OFF)
+opt(PETSC4PY "Enable petsc4py wrappers for petsc matrices for private API" OFF)
+opt(OCC "Enable OpenCASCADE CAD kernel" ${DEFAULT})
+opt(OCC_CAF "Enable OpenCASCADE CAF module (for STEP/IGES attributes)" ${DEFAULT})
+opt(OCC_STATIC "Link OpenCASCADE static instead of dynamic libraries (requires ENABLE_OCC)" OFF)
+opt(OCC_TBB "Add TBB libraries in list of OCC libraries" OFF)
+opt(ONELAB "Enable ONELAB solver interface" ${DEFAULT})
+opt(ONELAB_METAMODEL "Enable ONELAB metamodels (experimental)" ${DEFAULT})
+opt(OPENACC "Enable OpenACC" OFF)
+opt(OPENMP "Enable OpenMP" OFF)
+opt(OPTHOM "Enable high-order mesh optimization tools" ${DEFAULT})
+opt(OS_SPECIFIC_INSTALL "Enable OS-specific (e.g. app bundle) installation" OFF)
+opt(OSMESA "Enable OSMesa for offscreen rendering (experimental)" OFF)
+opt(P4EST "Enable p4est for enabling automatic mesh size field (experimental)" OFF)
+opt(PACKAGE_STRIP "Strip symbols in install packages to reduce install size" ON)
+opt(PARSER "Enable GEO file parser (required for .geo/.pos scripts)" ${DEFAULT})
+opt(PETSC "Enable PETSc linear solvers (required for SLEPc)" OFF)
+opt(PLUGINS "Enable post-processing plugins" ${DEFAULT})
+opt(POST "Enable post-processing module (required by GUI)" ${DEFAULT})
+opt(POPPLER "Enable Poppler for displaying PDF documents (experimental)" OFF)
+opt(PRIVATE_API "Enable private API" OFF)
+opt(PRO "Enable PRO extensions" ${DEFAULT})
+opt(QUADTRI "Enable QuadTri structured meshing extensions" ${DEFAULT})
+opt(REVOROPT "Enable Revoropt (used for CVT remeshing)" OFF)
+opt(RPATH "Use RPATH in dynamically linked targets" ON)
+opt(SLEPC "Enable SLEPc eigensolvers" OFF)
+opt(SOLVER "Enable built-in finite element solvers (required for reparametrization)" ${DEFAULT})
+opt(SYSTEM_CONTRIB "Use system versions of contrib libraries, when possible" OFF)
+opt(TCMALLOC "Enable libtcmalloc (fast malloc that does not release memory)" OFF)
+opt(TOUCHBAR "Enable Apple Touch bar" ${DEFAULT})
+opt(VISUDEV "Enable additional visualization capabilities for development purposes" OFF)
+opt(VOROPP "Enable voro++ (for hex meshing, experimental)" ${DEFAULT})
+opt(WRAP_JAVA "Generate SWIG Java wrappers for private API" OFF)
+opt(WRAP_PYTHON "Generate SWIG Python wrappers for private API (not used by public API)" OFF)
+opt(ZIPPER "Enable Zip file compression/decompression" OFF)
+
+set(GMSH_MAJOR_VERSION 4)
+set(GMSH_MINOR_VERSION 7)
+set(GMSH_PATCH_VERSION 0)
+if(NOT GMSH_EXTRA_VERSION)
+  set(GMSH_EXTRA_VERSION "")
+endif()
+set(GMSH_EXTRA_VERSION_TEXI "${GMSH_EXTRA_VERSION}")
+set(GMSH_EXTRA_VERSION_ORIG ${GMSH_EXTRA_VERSION})
+
+if(NOT GMSH_RELEASE)
+  find_package(Git)
+  if(GIT_FOUND)
+    execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%h
+                    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ERROR_QUIET
+                    OUTPUT_VARIABLE GIT_COMMIT_HASH
+                    OUTPUT_STRIP_TRAILING_WHITESPACE)
+  endif()
+  if(GIT_COMMIT_HASH)
+    set(GMSH_EXTRA_VERSION "${GMSH_EXTRA_VERSION}-git-${GIT_COMMIT_HASH}")
+  endif()
+  set(GMSH_EXTRA_VERSION_TEXI "${GMSH_EXTRA_VERSION_TEXI} (development version)")
+endif()
+
+set(GMSH_SHORT_VERSION
+    "${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}.${GMSH_PATCH_VERSION}")
+set(GMSH_VERSION "${GMSH_SHORT_VERSION}${GMSH_EXTRA_VERSION}")
+set(GMSH_SHORT_LICENSE "GNU General Public License")
+
+set(GMSH_GITLAB_PREFIX "https://gitlab.onelab.info/gmsh/gmsh")
+if(GMSH_RELEASE)
+  set(GMSH_GITLAB_PREFIX "${GMSH_GITLAB_PREFIX}/blob/gmsh_${GMSH_SHORT_VERSION}")
+else()
+  set(GMSH_GITLAB_PREFIX "${GMSH_GITLAB_PREFIX}/blob/master")
+endif()
+
+set(GMSH_API api/gmsh.h api/gmshc.h api/gmsh.h_cwrap)
+
+if(ENABLE_PRIVATE_API)
+  message(WARNING "The private API is unsupported and undocumented. It is meant "
+          "for expert Gmsh developers, not for regular Gmsh users, who should rely "
+          "on the stable public API (gmsh/api) instead.")
+  file(GLOB_RECURSE HEADERS Common/*.h Numeric/*.h Geo/*.h Mesh/*.h Solver/*.h
+    Post/*.h Plugin/*.h Graphics/*.h contrib/kbipack/*.h
+    contrib/DiscreteIntegration/*.h contrib/HighOrderMeshOptimizer/*.h
+    contrib/MeshOptimizer/*.h contrib/MeshQualityOptimizer/*.h)
+  set(GMSH_PRIVATE_API ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshConfig.h
+      ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshVersion.h ${HEADERS})
+  get_property(IAMCHILD DIRECTORY PROPERTY PARENT_DIRECTORY)
+  if(IAMCHILD)
+    set(GMSH_PRIVATE_API ${GMSH_PRIVATE_API} PARENT_SCOPE)
+  endif()
+  if(ENABLE_WRAP_PYTHON OR ENABLE_WRAP_JAVA)
+    set(ENABLE_BUILD_DYNAMIC ON)
+    message(WARNING "SWIG wrappers for the private API are unsupported and "
+            "undocumented. The stable public Python API does not required SWIG.")
+  endif()
+endif()
+
+set(ONELAB_PY contrib/onelab/python/onelab.py)
+set(GMSH_PY api/gmsh.py)
+set(GMSH_JL api/gmsh.jl)
+
+if(${CMAKE_MAJOR_VERSION} GREATER 2)
+  string(TIMESTAMP DATE "%Y%m%d")
+else()
+  execute_process(COMMAND date "+%Y%m%d" OUTPUT_VARIABLE DATE
+                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+endif()
+
+if(NOT DATE)
+  set(DATE "unknown")
+endif()
+set(GMSH_DATE "${DATE}")
+
+if(NOT GMSH_HOST)
+  execute_process(COMMAND hostname OUTPUT_VARIABLE HOST
+                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+  if(NOT HOST)
+    set(HOST "unknown")
+  endif()
+  set(GMSH_HOST "${HOST}")
+endif()
+
+if(NOT GMSH_PACKAGER)
+  execute_process(COMMAND whoami OUTPUT_VARIABLE PACKAGER
+                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+  if(NOT PACKAGER)
+    set(PACKAGER "unknown")
+  endif()
+  string(REPLACE "\\" " " PACKAGER ${PACKAGER})
+  set(GMSH_PACKAGER "${PACKAGER}")
+endif()
+
+if(APPLE)
+  set(GMSH_OS "MacOSX")
+elseif(CYGWIN OR MSYS)
+  # detect if we use the MinGW compilers on Cygwin - if we do, handle the build
+  # as a pure Windows build and make cmake find pure Windows import libraries
+  # (.lib)
+  if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR
+     CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+    execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine
+                    OUTPUT_VARIABLE CXX_COMPILER_MACHINE
+                    OUTPUT_STRIP_TRAILING_WHITESPACE)
+    if(CXX_COMPILER_MACHINE MATCHES "mingw")
+      set(GMSH_OS "Windows")
+      set(WIN32 1)
+      add_definitions(-DWIN32)
+      set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "")
+      set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".so" ".lib" ".LIB" ".dll" ".DLL" ".dll.a")
+    endif()
+  endif()
+else()
+  set(GMSH_OS "${CMAKE_SYSTEM_NAME}")
+endif()
+
+include(CheckTypeSize)
+include(CheckFunctionExists)
+include(CheckIncludeFile)
+include(CheckCXXCompilerFlag)
+include(CheckCCompilerFlag)
+
+macro(set_config_option VARNAME STRING)
+  set(${VARNAME} TRUE)
+  list(APPEND CONFIG_OPTIONS ${STRING})
+  message(STATUS "Found " ${STRING})
+endmacro()
+
+# check the size of size_t
+check_type_size("size_t" SIZEOF_SIZE_T)
+if(SIZEOF_SIZE_T EQUAL 8)
+  set_config_option(HAVE_64BIT_SIZE_T "64Bit")
+endif()
+
+# append 32/64 to the build name on Linux and Windows
+if(NOT APPLE)
+  if(HAVE_64BIT_SIZE_T)
+    set(GMSH_OS "${GMSH_OS}64")
+  else()
+    set(GMSH_OS "${GMSH_OS}32")
+  endif()
+endif()
+
+if(ENABLE_BUILD_DYNAMIC)
+  set(GMSH_OS "${GMSH_OS}-sdk")
+endif()
+
+if(ENABLE_RPATH)
+  set(CMAKE_MACOSX_RPATH 1)
+
+  # make sure that dynamic libraries can be found when installing/ displacing
+  # the binaries: from https://gitlab.kitware.com/cmake/community/wikis/doc/
+  # cmake/RPATH-handling:
+
+  # use, i.e. don't skip the full RPATH for the build tree
+  set(CMAKE_SKIP_BUILD_RPATH FALSE)
+
+  # when building, don't use the install RPATH already (but later on when
+  # installing)
+  set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
+  set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
+
+  # add the automatically determined parts of the RPATH which point to
+  # directories outside the build tree to the install RPATH
+  set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+
+  # the RPATH to be used when installing, but only if it's not a system directory
+  list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib"
+       isSystemDir)
+  if("${isSystemDir}" STREQUAL "-1")
+    if(APPLE)
+      set(CMAKE_INSTALL_RPATH "@executable_path/../lib")
+    else()
+      set(CMAKE_INSTALL_RPATH "\\\$ORIGIN/../lib")
+    endif()
+  endif()
+else()
+  set(CMAKE_MACOSX_RPATH 0)
+  set(CMAKE_SKIP_BUILD_RPATH TRUE)
+endif()
+
+if(MSVC)
+  # remove annoying warning about bool/int cast performance
+  set(GMSH_CONFIG_PRAGMAS "#pragma warning(disable:4800 4244 4267)")
+  foreach(VAR
+          CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
+          CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO
+          CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
+          CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
+    if(ENABLE_MSVC_STATIC_RUNTIME AND ${VAR} MATCHES "/MD")
+      string(REGEX REPLACE "/MD" "/MT" ${VAR} "${${VAR}}")
+    endif()
+    if(NOT ${VAR} MATCHES "/MP") # enable parallel compilation
+      set(${VAR} "${${VAR}} /MP")
+    endif()
+  endforeach()
+  if(ENABLE_PRIVATE_API)
+    if(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED)
+      # automatically export .def file with all symbols (requires CMake 3.4);
+      # depending on the compiling options this might lead to more than 64k export
+      # symbols; just trim the .def file to keep the ones you need
+      set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
+    endif()
+  endif()
+endif()
+
+# reduce memory usage of GCC on 32 bit systems
+if(NOT HAVE_64BIT_SIZE_T AND CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+  set(CMAKE_CXX_FLAGS
+      "${CMAKE_CXX_FLAGS} --param ggc-min-expand=1 --param ggc-min-heapsize=512000")
+endif()
+
+if(ENABLE_OPENMP)
+  find_package(OpenMP)
+  if(OpenMP_FOUND OR OPENMP_FOUND)
+    set_config_option(HAVE_OPENMP "OpenMP")
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
+  elseif(APPLE AND EXISTS "/opt/local/lib/libomp")
+    # official Apple compiler with macports' libomp
+    set_config_option(HAVE_OPENMP "OpenMP[MacPorts]")
+    set(CMAKE_C_FLAGS
+        "${CMAKE_C_FLAGS} -Xpreprocessor -fopenmp -I/opt/local/include/libomp")
+    set(CMAKE_CXX_FLAGS
+        "${CMAKE_CXX_FLAGS} -Xpreprocessor -fopenmp -I/opt/local/include/libomp")
+    list(APPEND EXTERNAL_LIBRARIES "-L/opt/local/lib/libomp -lomp")
+  elseif(APPLE AND EXISTS "/usr/local/lib/libomp.dylib")
+    # official Apple compiler with homebrew's libomp
+    set_config_option(HAVE_OPENMP "OpenMP[Homebrew]")
+    set(CMAKE_C_FLAGS
+        "${CMAKE_C_FLAGS} -Xpreprocessor -fopenmp")
+    set(CMAKE_CXX_FLAGS
+        "${CMAKE_CXX_FLAGS} -Xpreprocessor -fopenmp")
+    list(APPEND EXTERNAL_LIBRARIES "-L/usr/local/lib -lomp")
+  endif()
+endif()
+
+if(ENABLE_OPENACC)
+  find_package(OpenACC)
+  if(OpenACC_C_FOUND AND OpenACC_CXX_FOUND)
+    set_config_option(HAVE_OPENACC "OpenACC")
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenACC_C_FLAGS}")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenACC_CXX_FLAGS}")
+  endif()
+endif()
+
+if(ENABLE_PROFILE)
+    # Using the perf set of profiling tools doesn't work without the frame
+    # pointer and a common optimisation is to remove it
+    check_cxx_compiler_flag("-fno-omit-frame-pointer" FNOFP)
+    if(FNOFP)
+        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer")
+    endif()
+endif()
+
+macro(append_gmsh_src DIRNAME FILES)
+  foreach(FILE ${FILES})
+    list(APPEND LIST ${DIRNAME}/${FILE})
+  endforeach()
+  set(GMSH_SRC ${GMSH_SRC};${LIST} PARENT_SCOPE)
+  set(GMSH_DIRS ${GMSH_DIRS};${DIRNAME} PARENT_SCOPE)
+endmacro()
+
+macro(find_all_libraries VARNAME LISTNAME PATH SUFFIX)
+  set(${VARNAME})
+  list(LENGTH ${LISTNAME} NUM_LIST)
+  foreach(LIB ${${LISTNAME}})
+    if("${PATH}" STREQUAL "")
+      find_library(FOUND_LIB ${LIB} PATH_SUFFIXES ${SUFFIX})
+    else()
+      find_library(FOUND_LIB ${LIB} PATHS ${PATH} NO_DEFAULT_PATH)
+    endif()
+    if(FOUND_LIB)
+      list(APPEND ${VARNAME} ${FOUND_LIB})
+    endif()
+    unset(FOUND_LIB CACHE)
+  endforeach()
+  list(LENGTH ${VARNAME} NUM_FOUND_LIBRARIES)
+  if(NUM_FOUND_LIBRARIES LESS NUM_LIST)
+    set(${VARNAME})
+  endif()
+endmacro()
+
+macro(set_compile_flags LISTNAME FLAGS)
+  foreach(FILE ${${LISTNAME}})
+    get_source_file_property(PROP ${FILE} COMPILE_FLAGS)
+    if(PROP)
+      set_source_files_properties(${FILE} PROPERTIES COMPILE_FLAGS "${PROP} ${FLAGS}")
+    else()
+      set_source_files_properties(${FILE} PROPERTIES COMPILE_FLAGS "${FLAGS}")
+    endif()
+  endforeach()
+endmacro()
+
+if(ENABLE_EIGEN)
+  if(ENABLE_SYSTEM_CONTRIB)
+    find_path(EIGEN_INC "Eigen/Dense" HINTS eigen3)
+    if(EIGEN_INC)
+      include_directories(${EIGEN_INC})
+      set_config_option(HAVE_EIGEN "Eigen[system]")
+    endif()
+  endif()
+  if(NOT HAVE_EIGEN)
+    include_directories(contrib/eigen)
+    set_config_option(HAVE_EIGEN "Eigen")
+  endif()
+  # We could also add an option to use BLAS with Eigen
+  # add_definitions(-DEIGEN_USE_BLAS)
+elseif(ENABLE_BLAS_LAPACK)
+  if(BLAS_LAPACK_LIBRARIES)
+    # use libs as specified in the BLAS_LAPACK_LIBRARIES variable
+    set_config_option(HAVE_BLAS "Blas[custom]")
+    set_config_option(HAVE_LAPACK "Lapack[custom]")
+    set(LAPACK_LIBRARIES ${BLAS_LAPACK_LIBRARIES})
+  else()
+    if(MSVC)
+      # on Windows with Visual C++ try really hard to find blas/lapack *without*
+      # requiring a Fortran compiler: 1) try to find the Intel MKL libs using
+      # the standard search path; if not found 2) try to get the reference
+      # blas/lapack libs (useful for users with no Fortran compiler and no MKL
+      # license, who can just download our precompiled "gmsh-dep" package)
+      if(HAVE_64BIT_SIZE_T)
+        set(MKL_PATH em64t/lib)
+        set(MKL_LIBS_REQUIRED libguide40 mkl_intel_lp64 mkl_intel_thread mkl_core)
+      else()
+        set(MKL_PATH ia32/lib)
+        set(MKL_LIBS_REQUIRED libguide40 mkl_intel_c mkl_intel_thread mkl_core)
+      endif()
+      find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH})
+      if(LAPACK_LIBRARIES)
+        set_config_option(HAVE_BLAS "Blas[mkl]")
+        set_config_option(HAVE_LAPACK "Lapack[mkl]")
+      else()
+        set(REFLAPACK_LIBS_REQUIRED lapack blas g2c gcc)
+        find_all_libraries(LAPACK_LIBRARIES REFLAPACK_LIBS_REQUIRED "" "")
+        if(LAPACK_LIBRARIES)
+          set_config_option(HAVE_BLAS "Blas[ref]")
+          set_config_option(HAVE_LAPACK "Lapack[ref]")
+        endif()
+      endif()
+    elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+      # on Linux try to find the Intel MKL without a Fortran compiler
+      if(HAVE_64BIT_SIZE_T)
+        set(MKL_PATH lib/em64t)
+      else()
+        set(MKL_PATH lib/32)
+      endif()
+      set(MKL_LIBS_REQUIRED mkl_gf_lp64 iomp5 mkl_gnu_thread mkl_core guide pthread)
+      find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH})
+      if(NOT LAPACK_LIBRARIES)
+        # match lapack 9.0 on 64bit
+        set(MKL_LIBS_REQUIRED mkl_lapack mkl_em64t guide)
+        find_all_libraries(LAPACK_LIBRARIES MKL_LIBS_REQUIRED "" ${MKL_PATH})
+      endif()
+      if(LAPACK_LIBRARIES)
+        set_config_option(HAVE_BLAS "Blas[mkl]")
+        set_config_option(HAVE_LAPACK "Lapack[mkl]")
+      else()
+        # on Linux also try to find ATLAS without a Fortran compiler, because
+        # cmake ships with a buggy FindBLAS e.g. on Ubuntu Lucid Lynx
+        set(ATLAS_LIBS_REQUIRED lapack f77blas cblas atlas)
+        find_all_libraries(LAPACK_LIBRARIES ATLAS_LIBS_REQUIRED "" "")
+        if(LAPACK_LIBRARIES)
+          set_config_option(HAVE_BLAS "Blas[atlas]")
+          set_config_option(HAVE_LAPACK "Lapack[atlas]")
+        else()
+          # try with generic names
+          set(GENERIC_LIBS_REQUIRED lapack blas pthread)
+          find_all_libraries(LAPACK_LIBRARIES GENERIC_LIBS_REQUIRED "" "")
+          if(LAPACK_LIBRARIES)
+            set_config_option(HAVE_BLAS "Blas[generic]")
+            set_config_option(HAVE_LAPACK "Lapack[generic]")
+            find_library(GFORTRAN_LIB gfortran)
+            if(GFORTRAN_LIB)
+              list(APPEND LAPACK_LIBRARIES ${GFORTRAN_LIB})
+            endif()
+          endif()
+        endif()
+      endif()
+    elseif(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
+      # on SunOS we know blas and lapack are available in sunperf
+      set(LAPACK_LIBRARIES -library=sunperf)
+      set_config_option(HAVE_BLAS "Blas[sunperf]")
+      set_config_option(HAVE_LAPACK "Lapack[sunperf]")
+    elseif(APPLE)
+      # on Mac we also know that blas and lapack are available
+      set(LAPACK_LIBRARIES "-llapack -lblas")
+      set_config_option(HAVE_BLAS "Blas[veclib]")
+      set_config_option(HAVE_LAPACK "Lapack[veclib]")
+    endif()
+
+    if(NOT HAVE_BLAS OR NOT HAVE_LAPACK)
+      # if we haven't found blas and lapack check for OpenBlas
+      set(OPENBLAS_LIBS_REQUIRED openblas)
+      find_all_libraries(LAPACK_LIBRARIES OPENBLAS_LIBS_REQUIRED "" "")
+      if(LAPACK_LIBRARIES)
+        set_config_option(HAVE_BLAS "Blas[openblas]")
+        set_config_option(HAVE_LAPACK "Lapack[openblas]")
+        find_library(GFORTRAN_LIB gfortran)
+        if(GFORTRAN_LIB)
+          list(APPEND LAPACK_LIBRARIES ${GFORTRAN_LIB})
+        endif()
+      endif()
+    endif()
+
+    if(NOT HAVE_BLAS OR NOT HAVE_LAPACK)
+      # if we still haven't found blas and lapack, use the standard cmake tests,
+      # which require a working Fortran compiler
+      enable_language(Fortran)
+      find_package(BLAS)
+      if(BLAS_FOUND)
+        set_config_option(HAVE_BLAS "Blas")
+        find_package(LAPACK)
+        if(LAPACK_FOUND)
+          set_config_option(HAVE_LAPACK "Lapack")
+        else()
+          set(LAPACK_LIBRARIES ${BLAS_LIBRARIES})
+        endif()
+        if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
+          if(CMAKE_Fortran_COMPILER MATCHES "gfortran")
+            list(APPEND LAPACK_LIBRARIES gfortran)
+          elseif(CMAKE_Fortran_COMPILER MATCHES "f95")
+            list(APPEND LAPACK_LIBRARIES gfortran)
+          elseif(CMAKE_Fortran_COMPILER MATCHES "g77")
+            list(APPEND LAPACK_LIBRARIES g2c)
+          endif()
+        elseif(CMAKE_Fortran_COMPILER MATCHES "pgi")
+          list(APPEND LAPACK_LIBRARIES -pgf77libs)
+        endif()
+      endif()
+    endif()
+  endif()
+endif()
+
+if(ENABLE_TCMALLOC)
+  find_library(TCMALLOC tcmalloc)
+  if(TCMALLOC)
+    set_config_option(HAVE_TCMALLOC "TCMalloc")
+    list(APPEND EXTERNAL_LIBRARIES ${TCMALLOC})
+  endif()
+endif()
+
+add_subdirectory(Common)
+add_subdirectory(Numeric)
+add_subdirectory(Geo)
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Mesh AND ENABLE_MESH)
+  add_subdirectory(Mesh)
+  set_config_option(HAVE_MESH "Mesh")
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Solver AND ENABLE_SOLVER)
+  add_subdirectory(Solver)
+  set_config_option(HAVE_SOLVER "Solver")
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Post AND ENABLE_POST)
+  add_subdirectory(Post)
+  set_config_option(HAVE_POST "Post")
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Plugin AND ENABLE_PLUGINS)
+    add_subdirectory(Plugin)
+    set_config_option(HAVE_PLUGINS "Plugins")
+  endif()
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Parser AND ENABLE_PARSER)
+  add_subdirectory(Parser)
+  set_config_option(HAVE_PARSER "Parser")
+endif()
+
+if(ENABLE_VISUDEV)
+  set_config_option(HAVE_VISUDEV "VisuDev")
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Fltk AND ENABLE_FLTK)
+  # first, try to use fltk-config for fltk >= 1.3 (FindFLTK is buggy on Unix,
+  # where e.g. xft and xinerama options are not dealt with)
+  find_program(FLTK_CONFIG_SCRIPT fltk-config)
+  if(FLTK_CONFIG_SCRIPT)
+    execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --api-version
+                    OUTPUT_VARIABLE FLTK_VERSION)
+    string(STRIP "${FLTK_VERSION}" FLTK_VERSION)
+    if(FLTK_VERSION VERSION_GREATER 1.1)
+      add_subdirectory(Fltk)
+      set_config_option(HAVE_FLTK "Fltk")
+      message(STATUS "Using fltk-config script for Fltk " ${FLTK_VERSION})
+      execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --use-gl --use-images --includedir
+                      OUTPUT_VARIABLE FLTK_INCLUDE_DIR)
+      string(STRIP ${FLTK_INCLUDE_DIR} FLTK_INCLUDE_DIR)
+      list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR})
+      # On linux (at least OpenSuSE) the following directories are
+      # not existing (everything is in /usr/include). To avoid warnings
+      # check existance of these directories before adding them
+      if(EXISTS ${FLTK_INCLUDE_DIR}/FL/images)
+        list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/FL/images)
+      endif()
+      if(EXISTS ${FLTK_INCLUDE_DIR}/jpeg)
+        list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/jpeg)
+      endif()
+      if(EXISTS ${FLTK_INCLUDE_DIR}/zlib)
+        list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/zlib)
+      endif()
+      if(EXISTS ${FLTK_INCLUDE_DIR}/png)
+        list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}/png)
+      endif()
+      execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --use-gl --use-images --ldflags
+                      OUTPUT_VARIABLE FLTK_LIBRARIES)
+      string(STRIP ${FLTK_LIBRARIES} FLTK_LIBRARIES)
+      string(REGEX MATCH "fltk[_ ]jpeg" FLTK_JPEG ${FLTK_LIBRARIES})
+      string(REGEX MATCH "fltk[_ ]z" FLTK_Z ${FLTK_LIBRARIES})
+      string(REGEX MATCH "fltk[_ ]png" FLTK_PNG ${FLTK_LIBRARIES})
+    endif()
+  endif()
+  # then try the built-in FindFLTK module
+  if(NOT HAVE_FLTK)
+    set(FLTK_SKIP_FORMS TRUE)
+    set(FLTK_SKIP_FLUID TRUE)
+    find_package(FLTK)
+    if(FLTK_FOUND)
+      add_subdirectory(Fltk)
+      set_config_option(HAVE_FLTK "Fltk")
+      list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR})
+      # find fltk jpeg
+      find_library(FLTK_JPEG NAMES fltk_jpeg fltkjpeg)
+      if(FLTK_JPEG)
+        list(APPEND EXTERNAL_LIBRARIES ${FLTK_JPEG})
+        foreach(DIR ${FLTK_INCLUDE_DIR})
+          list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/jpeg)
+        endforeach()
+      endif()
+      # find fltk zlib
+      find_library(FLTK_Z NAMES fltk_z fltkz)
+      if(FLTK_Z)
+        list(APPEND EXTERNAL_LIBRARIES ${FLTK_Z})
+        foreach(DIR ${FLTK_INCLUDE_DIR})
+          list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/zlib)
+        endforeach()
+      endif()
+      # find fltk png
+      find_library(FLTK_PNG NAMES fltk_png fltkpng)
+      if(FLTK_PNG)
+        list(APPEND EXTERNAL_LIBRARIES ${FLTK_PNG})
+        foreach(DIR ${FLTK_INCLUDE_DIR})
+          list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/png)
+        endforeach()
+      endif()
+    endif()
+  endif()
+  # workaround for Fedora/Suse messing up fltk-config (see issue #417)
+  if(HAVE_FLTK AND ${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+    string(REGEX MATCH "X11" FLTK_X11 ${FLTK_LIBRARIES})
+    if(NOT FLTK_X11)
+      find_package(X11)
+      if(X11_FOUND)
+        list(APPEND EXTERNAL_INCLUDES ${X11_INCLUDE_DIR})
+        list(APPEND EXTERNAL_LIBRARIES ${X11_LIBRARIES})
+      endif()
+    endif()
+  endif()
+endif()
+
+if(APPLE AND HAVE_FLTK AND ENABLE_TOUCHBAR)
+  STRING(REGEX MATCH "([0-9]+.[0-9]+)" OSX_SDK_VERSION "${CMAKE_OSX_SYSROOT}")
+  if(OSX_SDK_VERSION)
+    if(${OSX_SDK_VERSION} VERSION_GREATER 10.11)
+      set(GMSH_SRC ${GMSH_SRC};Fltk/touchBar.mm)
+      set_config_option(HAVE_TOUCHBAR "TouchBar")
+    endif()
+  endif()
+endif()
+
+if(ENABLE_ONELAB)
+  set_config_option(HAVE_ONELAB "ONELAB")
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/onelab)
+    if(ENABLE_ONELAB_METAMODEL)
+      add_subdirectory(contrib/onelab)
+      include_directories(contrib/onelab)
+      set_config_option(HAVE_ONELAB_METAMODEL "ONELABMetamodel")
+    endif()
+    file(COPY ${ONELAB_PY} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+  endif()
+endif()
+
+if(ENABLE_BUILD_IOS)
+  find_file(CMAKE_TOOLCHAIN_FILE "ios.cmake")
+  if(NOT CMAKE_TOOLCHAIN_FILE)
+    message(FATAL_ERROR "Cannot compile Gmsh for iOS without a toolchain")
+  endif()
+  add_definitions(-DBUILD_IOS)
+endif()
+
+if(HAVE_FLTK OR ENABLE_GRAPHICS)
+  if(NOT HAVE_MESH OR NOT HAVE_POST OR NOT HAVE_PLUGINS OR NOT HAVE_ONELAB)
+    message(SEND_ERROR "Cannot compile GUI without Mesh, Post, Plugin and ONELAB")
+  endif()
+
+  if(FLTK_JPEG)
+    set_config_option(HAVE_LIBJPEG "Jpeg[fltk]")
+  else()
+    find_package(JPEG)
+    if(JPEG_FOUND)
+      set_config_option(HAVE_LIBJPEG "Jpeg")
+      list(APPEND EXTERNAL_LIBRARIES ${JPEG_LIBRARIES})
+      list(APPEND EXTERNAL_INCLUDES ${JPEG_INCLUDE_DIR})
+    endif()
+  endif()
+
+  if(FLTK_Z)
+    set_config_option(HAVE_LIBZ "Zlib[fltk]")
+  else()
+    find_package(ZLIB)
+    if(ZLIB_FOUND)
+      set_config_option(HAVE_LIBZ "Zlib")
+      list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES})
+      list(APPEND EXTERNAL_INCLUDES ${ZLIB_INCLUDE_DIR})
+    endif()
+  endif()
+
+  if(HAVE_LIBZ)
+    if(FLTK_PNG)
+      set_config_option(HAVE_LIBPNG "Png[fltk]")
+    else()
+      find_package(PNG)
+      if(PNG_FOUND)
+        set_config_option(HAVE_LIBPNG "Png")
+        list(APPEND EXTERNAL_LIBRARIES ${PNG_LIBRARIES})
+        list(APPEND EXTERNAL_INCLUDES ${PNG_INCLUDE_DIR})
+      endif()
+    endif()
+  endif()
+
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/mpeg_encode AND
+     ENABLE_MPEG_ENCODE)
+    add_subdirectory(contrib/mpeg_encode)
+    include_directories(contrib/mpeg_encode/headers)
+    set_config_option(HAVE_MPEG_ENCODE "Mpeg")
+  endif()
+
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/3M AND ENABLE_3M)
+    add_subdirectory(contrib/3M)
+    include_directories(contrib/3M)
+    set_config_option(HAVE_3M "3M")
+  endif()
+
+  if(ENABLE_OSMESA)
+    find_library(OSMESA_LIB OSMesa)
+    if(OSMESA_LIB)
+      set_config_option(HAVE_OSMESA "OSMesa")
+      list(APPEND EXTERNAL_LIBRARIES ${OSMESA_LIB})
+    endif()
+  endif()
+
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Graphics)
+    set(OpenGL_GL_PREFERENCE "LEGACY")
+    find_package(OpenGL REQUIRED)
+    if(OPENGL_GLU_FOUND AND OPENGL_FOUND)
+      add_subdirectory(Graphics)
+      set_config_option(HAVE_OPENGL "OpenGL")
+    else()
+      message(SEND_ERROR "Could not find GLU: disabling OpenGL support")
+    endif()
+  endif()
+endif()
+
+if(ENABLE_ANN)
+  find_library(ANN_LIB ANN PATH_SUFFIXES lib)
+  find_path(ANN_INC "ANN.h" PATH_SUFFIXES src include ANN)
+  if(ENABLE_SYSTEM_CONTRIB AND ANN_LIB AND ANN_INC)
+    message(STATUS "Using system version of ANN")
+    list(APPEND EXTERNAL_LIBRARIES ${ANN_LIB})
+    list(APPEND EXTERNAL_INCLUDES ${ANN_INC})
+    set_config_option(HAVE_ANN "ANN[system]")
+  elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/ANN)
+    add_subdirectory(contrib/ANN)
+    include_directories(contrib/ANN/include)
+    set_config_option(HAVE_ANN "ANN")
+  endif()
+endif()
+
+if(ENABLE_ALGLIB)
+  find_library(ALGLIB_LIB alglib)
+  find_path(ALGLIB_INC "stdafx.h" PATH_SUFFIXES libalglib)
+  if(ENABLE_SYSTEM_CONTRIB AND ALGLIB_LIB AND ALGLIB_INC)
+    list(APPEND EXTERNAL_LIBRARIES ${ALGLIB_LIB})
+    list(APPEND EXTERNAL_INCLUDES ${ALGLIB_INC})
+    set_config_option(HAVE_ALGLIB "ALGLIB[system]")
+  elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/ALGLIB)
+    add_subdirectory(contrib/ALGLIB)
+    include_directories(contrib/ALGLIB)
+    set_config_option(HAVE_ALGLIB "ALGLIB")
+  endif()
+endif()
+
+if(HAVE_FLTK AND ENABLE_CAIRO)
+  find_library(CAIRO_LIB cairo)
+  find_path(CAIRO_INC "cairo/cairo.h" PATH_SUFFIXES include)
+  if(CAIRO_INC AND CAIRO_LIB)
+     set_config_option(HAVE_CAIRO "Cairo")
+     list(APPEND EXTERNAL_LIBRARIES ${CAIRO_LIB})
+     list(APPEND EXTERNAL_INCLUDES ${CAIRO_INC})
+  endif()
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/DiscreteIntegration AND
+   ENABLE_DINTEGRATION)
+  add_subdirectory(contrib/DiscreteIntegration)
+  include_directories(contrib/DiscreteIntegration)
+  set_config_option(HAVE_DINTEGRATION "DIntegration")
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/HighOrderMeshOptimizer AND
+   EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MeshOptimizer AND
+   EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MeshQualityOptimizer AND
+   ENABLE_OPTHOM AND HAVE_MESH)
+  add_subdirectory(contrib/HighOrderMeshOptimizer)
+  include_directories(contrib/HighOrderMeshOptimizer)
+  add_subdirectory(contrib/MeshOptimizer)
+  include_directories(contrib/MeshOptimizer)
+  include_directories(${CMAKE_CURRENT_BINARY_DIR}/contrib/MeshOptimizer)
+  add_subdirectory(contrib/MeshQualityOptimizer)
+  include_directories(contrib/MeshQualityOptimizer)
+  set_config_option(HAVE_OPTHOM "OptHom")
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/domhex AND
+   ENABLE_DOMHEX AND HAVE_MESH)
+  add_subdirectory(contrib/domhex)
+  include_directories(contrib/domhex)
+  set_config_option(HAVE_DOMHEX "DomHex")
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/QuadTri AND
+   ENABLE_QUADTRI AND HAVE_MESH)
+  add_subdirectory(contrib/QuadTri)
+  include_directories(contrib/QuadTri)
+  set_config_option(HAVE_QUADTRI "QuadTri")
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/kbipack AND ENABLE_KBIPACK)
+  set_config_option(HAVE_KBIPACK "Kbipack")
+  add_subdirectory(contrib/kbipack)
+  include_directories(contrib/kbipack)
+  if(ENABLE_GMP)
+    find_library(GMP_LIB libgmp.a)
+    find_path(GMP_INC "gmp.h" PATH_SUFFIXES src include)
+  endif()
+  if(GMP_LIB AND GMP_INC)
+    set_config_option(HAVE_GMP "GMP")
+    list(APPEND EXTERNAL_LIBRARIES ${GMP_LIB})
+    list(APPEND EXTERNAL_INCLUDES ${GMP_INC})
+  else()
+    message(STATUS "GMP not found: Kbipack uses long int")
+  endif()
+endif()
+
+if(ENABLE_MATHEX)
+  find_library(MATHEX_LIB mathex PATH_SUFFIXES lib)
+  find_path(MATHEX_INC "mathex.h" PATH_SUFFIXES src include)
+  if(ENABLE_SYSTEM_CONTRIB AND MATHEX_LIB AND MATHEX_INC)
+    list(APPEND EXTERNAL_LIBRARIES ${MATHEX_LIB})
+    list(APPEND EXTERNAL_INCLUDES ${MATHEX_INC})
+    set_config_option(HAVE_MATHEX "MathEx[system]")
+  elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/MathEx)
+    add_subdirectory(contrib/MathEx)
+    include_directories(contrib/MathEx)
+    set_config_option(HAVE_MATHEX "MathEx")
+  endif()
+endif()
+
+if(ENABLE_MPI)
+  find_package(MPI)
+  if(MPI_FOUND)
+    set_config_option(HAVE_MPI "MPI")
+    list(APPEND EXTERNAL_INCLUDES ${MPI_CXX_INCLUDE_PATH})
+    list(APPEND EXTERNAL_LIBRARIES ${MPI_CXX_LIBRARIES})
+    set(CMAKE_C_COMPILER ${MPI_C_COMPILER})
+    set(CMAKE_CXX_COMPILER ${MPI_CXX_COMPILER})
+    set(CMAKE_Fortran_COMPILER ${MPI_Fortran_COMPILER})
+  endif()
+endif()
+
+if(ENABLE_POPPLER)
+  find_library(POPPLER_LIB poppler)
+  find_library(POPPLER_CPP_LIB poppler-cpp)
+  find_path(POPPLER_INC "poppler/cpp/poppler-document.h" PATH_SUFFIXES src include)
+  if(POPPLER_LIB AND POPPLER_INC)
+    set_config_option(HAVE_POPPLER "Poppler")
+    list(APPEND EXTERNAL_LIBRARIES ${POPPLER_LIB})
+    list(APPEND EXTERNAL_LIBRARIES ${POPPLER_CPP_LIB})
+    list(APPEND EXTERNAL_INCLUDES ${POPPLER_INC})
+  endif()
+endif()
+
+if(ENABLE_P4EST)
+  find_library(P4EST_LIB p4est)
+  find_path(P4EST_INC "p4est.h" PATH_SUFFIXES src)
+  find_library(SC_LIB sc)
+  if(P4EST_LIB AND P4EST_INC AND SC_LIB)
+    set_config_option(HAVE_P4EST "P4est")
+    list(APPEND EXTERNAL_LIBRARIES ${P4EST_LIB} ${SC_LIB})
+    list(APPEND EXTERNAL_INCLUDES ${P4EST_INC})
+  endif()
+endif()
+
+if(HAVE_MESH OR HAVE_SOLVER)
+  if(ENABLE_METIS)
+    if(METIS_LIB AND METIS_INC)
+      list(APPEND EXTERNAL_LIBRARIES ${METIS_LIB})
+      list(APPEND EXTERNAL_INCLUDES ${METIS_INC})
+      set_config_option(HAVE_METIS "Metis")
+    else()
+      find_library(METIS_LIB metis PATH_SUFFIXES lib)
+      find_path(METIS_INC "metis.h" PATH_SUFFIXES include)
+      if(ENABLE_SYSTEM_CONTRIB AND METIS_LIB AND METIS_INC)
+        message(STATUS "Using system version of METIS")
+        list(APPEND EXTERNAL_LIBRARIES ${METIS_LIB})
+        list(APPEND EXTERNAL_INCLUDES ${METIS_INC})
+        set_config_option(HAVE_METIS "Metis[system]")
+      elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/metis)
+        add_definitions(-DUSE_GKREGEX)
+        add_subdirectory(contrib/metis)
+        include_directories(contrib/metis/include contrib/metis/libmetis
+                          contrib/metis/GKlib)
+        set_config_option(HAVE_METIS "Metis")
+      endif()
+    endif()
+  endif()
+endif()
+
+if(HAVE_MESH)
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Mesh/tetgenBR.cxx)
+    set_config_option(HAVE_TETGENBR "TetGen/BR")
+  endif()
+
+  if(ENABLE_VOROPP)
+    find_library(VOROPP_LIB voro++)
+    find_path(VOROPP_INC "voro++.hh" PATH_SUFFIXES voro++)
+    if(ENABLE_SYSTEM_CONTRIB AND VOROPP_LIB AND VOROPP_INC)
+      message(STATUS "Using system version of voro++")
+      list(APPEND EXTERNAL_LIBRARIES ${VOROPP_LIB})
+      list(APPEND EXTERNAL_INCLUDES ${VOROPP_INC})
+      set_config_option(HAVE_VOROPP "Voro++[system]")
+    elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/voro++)
+      add_subdirectory(contrib/voro++)
+      include_directories(contrib/voro++/src)
+      set_config_option(HAVE_VOROPP "Voro++")
+    endif()
+  endif()
+
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/blossom AND ENABLE_BLOSSOM)
+    add_subdirectory(contrib/blossom)
+    include_directories(contrib/blossom/MATCH contrib/blossom/concorde97
+                        contrib/blossom/concorde97/INCLUDE)
+    set_config_option(HAVE_BLOSSOM "Blossom")
+  endif()
+
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/Netgen AND ENABLE_NETGEN)
+    add_subdirectory(contrib/Netgen)
+    include_directories(contrib/Netgen contrib/Netgen/libsrc/include
+                        contrib/Netgen/nglib)
+    set_config_option(HAVE_NETGEN "Netgen")
+    add_definitions(-DNO_PARALLEL_THREADS -DNOTCL)
+  endif()
+
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/bamg AND ENABLE_BAMG)
+    add_subdirectory(contrib/bamg)
+    include_directories(contrib/bamg contrib/bamg/bamglib)
+    set_config_option(HAVE_BAMG "Bamg")
+  endif()
+
+  if(ENABLE_MMG)
+    find_library(MMG_LIB NAMES Mmg mmg)
+    find_path(MMG_INC "libmmg.h" PATH_SUFFIXES mmg)
+    if(MMG_LIB AND MMG_INC)
+      list(APPEND EXTERNAL_LIBRARIES ${MMG_LIB})
+      list(APPEND EXTERNAL_INCLUDES ${MMG_INC})
+      set_config_option(HAVE_MMG "Mmg")
+    endif()
+  endif()
+endif()
+
+if(ENABLE_MED OR ENABLE_CGNS)
+  find_package(HDF5)
+  if(HDF5_FOUND)
+    set(HDF5_LIB "${HDF5_C_LIBRARIES}")
+    list(APPEND EXTERNAL_INCLUDES ${HDF5_INCLUDE_DIRS})
+    if(ENABLE_MED)
+      find_library(MED_LIB medC)
+      if(MED_LIB)
+        set_config_option(HAVE_MED "Med")
+        list(APPEND EXTERNAL_LIBRARIES ${MED_LIB})
+      endif()
+    endif()
+    if(ENABLE_CGNS)
+      find_library(CGNS_LIB cgns HINTS ENV CGNS_ROOT PATH_SUFFIXES lib)
+      find_path(CGNS_INC "cgnslib.h" HINTS ENV CGNS_ROOT PATH_SUFFIXES include)
+      if(CGNS_LIB AND CGNS_INC)
+        set_config_option(HAVE_LIBCGNS "Cgns")
+        list(APPEND EXTERNAL_LIBRARIES ${CGNS_LIB})
+        list(APPEND EXTERNAL_INCLUDES ${CGNS_INC})
+        if(ENABLE_CGNS_CPEX0045)
+          set_config_option(HAVE_LIBCGNS_CPEX0045 "Cgns_CPEX0045")
+        endif()
+      endif()
+    endif()
+    if(MED_LIB OR CGNS_LIB)
+      list(APPEND EXTERNAL_LIBRARIES ${HDF5_LIB})
+      find_library(SZ_LIB NAMES szlib sz)
+      if(SZ_LIB)
+        list(APPEND EXTERNAL_LIBRARIES ${SZ_LIB})
+      endif()
+      if(NOT HAVE_LIBZ) # necessary for non-GUI builds
+        find_package(ZLIB)
+        if(ZLIB_FOUND)
+          set_config_option(HAVE_LIBZ "Zlib")
+          list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES})
+        endif()
+      endif()
+    endif()
+  else()
+    message(STATUS "HDF5 not found")
+  endif()
+endif()
+
+if(HAVE_SOLVER)
+  if(ENABLE_GMM)
+    find_path(GMM_INC "gmm.h" PATH_SUFFIXES src include include/gmm)
+    if(ENABLE_SYSTEM_CONTRIB AND GMM_INC)
+      message(STATUS "Using system version of GMM")
+      list(APPEND EXTERNAL_INCLUDES ${GMM_INC})
+      set_config_option(HAVE_GMM "Gmm[system]")
+    elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/gmm)
+      include_directories(contrib/gmm)
+      set_config_option(HAVE_GMM "Gmm")
+    endif()
+  endif()
+
+  if(ENABLE_PETSC)
+    if(PETSC_DIR)
+      set(ENV_PETSC_DIR ${PETSC_DIR})
+    else()
+      set(ENV_PETSC_DIR $ENV{PETSC_DIR})
+    endif()
+    if(PETSC_ARCH)
+      set(ENV_PETSC_ARCH ${PETSC_ARCH})
+    else()
+      set(ENV_PETSC_ARCH $ENV{PETSC_ARCH})
+    endif()
+    set(PETSC_POSSIBLE_CONF_FILES
+        ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables
+        ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib/petsc-conf/petscvariables
+        ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib/petsc/conf/petscvariables)
+    foreach(FILE ${PETSC_POSSIBLE_CONF_FILES})
+      if(EXISTS ${FILE})
+        # old-style PETSc installations (using PETSC_DIR and PETSC_ARCH)
+        message(STATUS "Using PETSc dir: ${ENV_PETSC_DIR}")
+        message(STATUS "Using PETSc arch: ${ENV_PETSC_ARCH}")
+        # find includes by parsing the petscvariables file
+        file(STRINGS ${FILE} PETSC_VARIABLES NEWLINE_CONSUME)
+      endif()
+    endforeach()
+    if(PETSC_VARIABLES)
+      # try to find PETSC_CC_INCLUDES for PETSc >= 3.4
+      string(REGEX MATCH "PETSC_CC_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES
+             ${PETSC_VARIABLES})
+      if(PETSC_PACKAGES_INCLUDES)
+        string(REPLACE "PETSC_CC_INCLUDES = " "" PETSC_PACKAGES_INCLUDES
+               ${PETSC_PACKAGES_INCLUDES})
+      else()
+        # try to find PETSC_PACKAGES_INCLUDES in older versions
+        list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/include)
+        list(APPEND EXTERNAL_INCLUDES ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/include)
+        string(REGEX MATCH "PACKAGES_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES
+               ${PETSC_VARIABLES})
+        string(REPLACE "PACKAGES_INCLUDES = " "" PETSC_PACKAGES_INCLUDES
+               ${PETSC_PACKAGES_INCLUDES})
+      endif()
+      if(PETSC_PACKAGES_INCLUDES)
+        if(PETSC_PACKAGES_INCLUDES)
+          string(REPLACE "-I" "" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES})
+          string(REPLACE " " ";" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES})
+          foreach(VAR ${PETSC_PACKAGES_INCLUDES})
+            # seem to include unexisting directories (/usr/include/lib64)
+	    # check to avoid warnings
+	    if(EXISTS ${VAR})
+	      list(APPEND EXTERNAL_INCLUDES ${VAR})
+            endif()
+          endforeach()
+        endif()
+      endif()
+      # find libraries (<= 3.0)
+      set(PETSC_LIBS_REQUIRED petscksp petscdm petscmat petscvec petsc)
+      find_all_libraries(PETSC_LIBS PETSC_LIBS_REQUIRED
+                         ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib "")
+      # petsc 3.1 creates only one library (libpetsc)
+      if(NOT PETSC_LIBS)
+        find_library(PETSC_LIBS petsc PATHS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib
+                     NO_DEFAULT_PATH)
+      endif()
+      if(PETSC_LIBS)
+        set_config_option(HAVE_PETSC "PETSc")
+	if(NOT HAVE_BLAS)
+          set_config_option(HAVE_BLAS "Blas[petsc]")
+        endif()
+	if(NOT HAVE_LAPACK)
+          set_config_option(HAVE_LAPACK "Lapack[petsc]")
+        endif()
+      endif()
+      # find slepc (needs to be linked in before petsc)
+      if(ENABLE_SLEPC)
+        if(SLEPC_DIR)
+          set(ENV_SLEPC_DIR ${SLEPC_DIR})
+         else()
+          set(ENV_SLEPC_DIR $ENV{SLEPC_DIR})
+        endif()
+        find_library(SLEPC_LIB slepc PATHS ${ENV_SLEPC_DIR}/${ENV_PETSC_ARCH}/lib
+                     NO_DEFAULT_PATH)
+        if(SLEPC_LIB)
+          find_path(SLEPC_INC "slepc.h" PATHS ${ENV_SLEPC_DIR} PATH_SUFFIXES include
+                    ${ENV_PETSC_ARCH}/include include/slepc NO_DEFAULT_PATH)
+          if(SLEPC_INC)
+            message(STATUS "Using SLEPc dir: ${ENV_SLEPC_DIR}")
+            set_config_option(HAVE_SLEPC "SLEPc")
+            list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB})
+            list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC})
+            find_path(SLEPC_INC2 "slepcconf.h" PATHS ${ENV_SLEPC_DIR}
+                      PATH_SUFFIXES ${ENV_PETSC_ARCH}/include NO_DEFAULT_PATH)
+            if(SLEPC_INC2)
+              list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC2})
+            endif()
+          endif()
+        endif()
+      endif()
+      list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS})
+      # find additional libraries to link with
+      string(REGEX MATCH "PACKAGES_LIBS = [^\n\r]*" PLIBS ${PETSC_VARIABLES})
+      if(PLIBS)
+        string(REPLACE "PACKAGES_LIBS = " "" PLIBS ${PLIBS})
+        string(STRIP ${PLIBS} PLIBS)
+        list(APPEND EXTERNAL_LIBRARIES "${PLIBS}")
+      endif()
+      string(REGEX MATCH "PETSC_EXTERNAL_LIB_BASIC = [^\n\r]*" PLIBS_BASIC ${PETSC_VARIABLES})
+      if(PLIBS_BASIC)
+        string(REPLACE "PETSC_EXTERNAL_LIB_BASIC = " "" PLIBS_BASIC ${PLIBS_BASIC})
+        string(STRIP ${PLIBS_BASIC} PLIBS_BASIC)
+        separate_arguments(PLIBS_BASIC)
+        list(APPEND EXTERNAL_LIBRARIES "${PLIBS_BASIC}")
+      endif()
+      string(REGEX MATCH "PCC_LINKER_LIBS = [^\n\r]*" LLIBS ${PETSC_VARIABLES})
+      if(LLIBS)
+        string(REPLACE "PCC_LINKER_LIBS = " "" LLIBS ${LLIBS})
+        string(STRIP ${LLIBS} LLIBS)
+        list(APPEND EXTERNAL_LIBRARIES "${LLIBS}")
+      endif()
+    else()
+      # new-style PETSc installations (in standard system directories)
+      find_library(PETSC_LIBS petsc)
+      find_path(PETSC_INC "petsc.h" PATH_SUFFIXES include/petsc)
+      if(PETSC_LIBS AND PETSC_INC)
+        set_config_option(HAVE_PETSC "PETSc")
+        if(ENABLE_SLEPC)
+          find_library(SLEPC_LIB slepc)
+          find_path(SLEPC_INC "slepc.h" PATH_SUFFIXES include/slepc)
+          if(SLEPC_LIB AND SLEPC_INC)
+            set_config_option(HAVE_SLEPC "SLEPc")
+            list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB})
+            list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC})
+          endif()
+        endif()
+        list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS})
+        list(APPEND EXTERNAL_INCLUDES ${PETSC_INC})
+      endif()
+    endif()
+  endif()
+
+  if(ENABLE_MUMPS AND HAVE_BLAS AND HAVE_LAPACK)
+    set(MUMPS_LIBS_REQUIRED smumps dmumps cmumps zmumps mumps_common pord)
+    if(NOT ENABLE_MPI)
+      list(APPEND MUMPS_LIBS_REQUIRED mpiseq)
+    endif()
+    find_all_libraries(MUMPS_LIBRARIES MUMPS_LIBS_REQUIRED "" "lib")
+    find_path(SMUMPS_INC "smumps_c.h" PATH_SUFFIXES src include)
+    find_path(DMUMPS_INC "dmumps_c.h" PATH_SUFFIXES src include)
+    find_path(CMUMPS_INC "cmumps_c.h" PATH_SUFFIXES src include)
+    find_path(ZMUMPS_INC "zmumps_c.h" PATH_SUFFIXES src include)
+    if(MUMPS_LIBRARIES AND SMUMPS_INC AND DMUMPS_INC AND CMUMPS_INC AND ZMUMPS_INC)
+      set_config_option(HAVE_MUMPS "MUMPS")
+      list(APPEND EXTERNAL_LIBRARIES ${MUMPS_LIBRARIES})
+      list(APPEND EXTERNAL_INCLUDES ${SMUMPS_INC})
+      list(APPEND EXTERNAL_INCLUDES ${DMUMPS_INC})
+      list(APPEND EXTERNAL_INCLUDES ${CMUMPS_INC})
+      list(APPEND EXTERNAL_INCLUDES ${ZMUMPS_INC})
+      find_library(GFORTRAN_LIB gfortran)
+      if(GFORTRAN_LIB)
+        list(APPEND EXTERNAL_LIBRARIES ${GFORTRAN_LIB})
+      endif()
+      if(ENABLE_GMM) # use GMM/MUMPS interface
+        add_definitions(-DGMM_USES_MUMPS)
+      endif()
+    endif()
+  endif()
+
+  if(ENABLE_GETDP)
+    find_library(GETDP_LIB GetDP)
+    find_path(GETDP_INC "GetDP.h" PATH_SUFFIXES getdp)
+    if(GETDP_LIB AND GETDP_INC)
+      set_config_option(HAVE_GETDP "GetDP")
+      list(APPEND EXTERNAL_LIBRARIES ${GETDP_LIB})
+      list(APPEND EXTERNAL_INCLUDES ${GETDP_INC})
+    endif()
+  endif()
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt AND ENABLE_HXT)
+  add_subdirectory(contrib/hxt)
+  include_directories(BEFORE ${HXT_INC_DIRS})
+  set_config_option(HAVE_HXT "Hxt")
+  # do not use arithmetic contraction in predicates.c
+  if(MSVC OR (CMAKE_C_COMPILER_ID STREQUAL "Intel" AND WIN32))
+    set_source_files_properties(
+        "${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt/predicates/src/predicates.c"
+        PROPERTIES COMPILE_FLAGS "/fp:strict")
+  elseif(CMAKE_C_COMPILER_ID STREQUAL "Intel")
+    set_source_files_properties(
+        "${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt/predicates/src/predicates.c"
+        PROPERTIES COMPILE_FLAGS "-fp-model strict")
+  elseif(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang")
+    set_source_files_properties(
+        "${CMAKE_CURRENT_SOURCE_DIR}/contrib/hxt/predicates/src/predicates.c"
+        PROPERTIES COMPILE_FLAGS  "-fno-unsafe-math-optimizations -ffp-contract=off")
+  else()
+    message(WARNING
+      "Unsupported compiler !
+       Make sure compiled functions from predicates.c
+       do NOT use extended double precision and follow IEEE754 standard.
+       It is crucial for the robustness of geometric predicates.")
+  endif()
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/pro AND ENABLE_PRO)
+  add_subdirectory(pro)
+endif()
+
+if(ENABLE_OCC)
+  set(OCC_MINIMAL_VERSION "6.9.1")
+  if(WIN32)
+    if(HAVE_64BIT_SIZE_T)
+      set(OCC_SYS_NAME win64)
+    else()
+      set(OCC_SYS_NAME win32)
+    endif()
+  else()
+    set(OCC_SYS_NAME ${CMAKE_SYSTEM_NAME})
+  endif()
+  find_path(OCC_INC "Standard_Version.hxx" HINTS ENV CASROOT PATH_SUFFIXES
+            inc include include/oce opencascade include/opencascade
+            occt include/occt)
+  if(OCC_INC)
+    file(STRINGS ${OCC_INC}/Standard_Version.hxx
+         OCC_MAJOR REGEX "#define OCC_VERSION_MAJOR.*")
+    file(STRINGS ${OCC_INC}/Standard_Version.hxx
+         OCC_MINOR REGEX "#define OCC_VERSION_MINOR.*")
+    file(STRINGS ${OCC_INC}/Standard_Version.hxx
+         OCC_MAINT REGEX "#define OCC_VERSION_MAINTENANCE.*")
+    if(OCC_MAJOR AND OCC_MINOR AND OCC_MAINT)
+      string(REGEX MATCH "[0-9]+" OCC_MAJOR "${OCC_MAJOR}")
+      string(REGEX MATCH "[0-9]+" OCC_MINOR "${OCC_MINOR}")
+      string(REGEX MATCH "[0-9]+" OCC_MAINT "${OCC_MAINT}")
+      set(OCC_VERSION "${OCC_MAJOR}.${OCC_MINOR}.${OCC_MAINT}")
+      message(STATUS "Found OpenCASCADE version ${OCC_VERSION} in ${OCC_INC}")
+    endif()
+  endif()
+  if(OCC_VERSION AND OCC_VERSION STRLESS ${OCC_MINIMAL_VERSION})
+    message(WARNING "Gmsh requires OpenCASCADE >= ${OCC_MINIMAL_VERSION}. "
+        "Use CMAKE_PREFIX_PATH or the CASROOT environment variable "
+        "to explicitely specify the installation path of OpenCASCADE")
+  elseif(OCC_INC)
+    set(OCC_LIBS_REQUIRED
+	# subset of DataExchange
+      	TKSTEP TKSTEP209 TKSTEPAttr TKSTEPBase TKIGES TKXSBase
+      	# ModelingAlgorithms
+      	TKOffset TKFeat TKFillet TKBool TKMesh TKHLR TKBO TKPrim TKShHealing
+      	TKTopAlgo TKGeomAlgo
+      	# ModelingData
+      	TKBRep TKGeomBase TKG3d TKG2d
+      	# FoundationClasses
+      	TKMath TKernel)
+    if(ENABLE_OCC_TBB)
+      list(APPEND OCC_LIBS_REQUIRED tbb tbbmalloc)
+    endif()
+    list(LENGTH OCC_LIBS_REQUIRED NUM_OCC_LIBS_REQUIRED)
+    if(OCC_LIBS)
+      message(STATUS "OCC libraries specified explicitly: " ${OCC_LIBS})
+      list(LENGTH OCC_LIBS_REQUIRED NUM_OCC_LIBS)
+    else()
+      set(OCC_LIBS)
+      foreach(OCC ${OCC_LIBS_REQUIRED})
+        find_library(OCC_LIB ${OCC} HINTS ENV CASROOT PATH_SUFFIXES
+                     lib ${OCC_SYS_NAME}/lib ${OCC_SYS_NAME}/vc8/lib
+                     ${OCC_SYS_NAME}/gcc/lib ${OCC_SYS_NAME}/gcc/bin)
+        if(OCC_LIB)
+	  list(APPEND OCC_LIBS ${OCC_LIB})
+        else()
+          message(STATUS "OCC lib " ${OCC} " not Found")
+        endif()
+        unset(OCC_LIB CACHE)
+      endforeach()
+      list(LENGTH OCC_LIBS NUM_OCC_LIBS)
+    endif()
+  endif()
+
+  # additional OCC libraries to handle reading of STEP/IGES attributes. Oh my...
+  if(ENABLE_OCC_CAF)
+    find_package(Freetype)
+    if(FREETYPE_FOUND)
+      set(OCC_CAF_LIBS_REQUIRED
+          TKXDESTEP TKXDEIGES TKXCAF TKLCAF TKVCAF TKCAF TKV3d TKService TKCDF)
+      list(LENGTH OCC_CAF_LIBS_REQUIRED NUM_OCC_CAF_LIBS_REQUIRED)
+      set(OCC_CAF_LIBS)
+      foreach(OCC ${OCC_CAF_LIBS_REQUIRED})
+        find_library(OCC_CAF_LIB ${OCC} HINTS ENV CASROOT PATH_SUFFIXES
+                     lib ${OCC_SYS_NAME}/lib ${OCC_SYS_NAME}/vc8/lib
+                     ${OCC_SYS_NAME}/gcc/lib ${OCC_SYS_NAME}/gcc/bin)
+        if(OCC_CAF_LIB)
+          list(APPEND OCC_CAF_LIBS ${OCC_CAF_LIB})
+        else()
+          message(STATUS "OCC CAF lib " ${OCC} " not Found")
+        endif()
+        unset(OCC_CAF_LIB CACHE)
+      endforeach()
+      list(LENGTH OCC_CAF_LIBS NUM_OCC_CAF_LIBS)
+    endif()
+  endif()
+
+  if(NUM_OCC_LIBS EQUAL NUM_OCC_LIBS_REQUIRED)
+    # append OCC CAF libraries first...
+    if(NUM_OCC_CAF_LIBS EQUAL NUM_OCC_CAF_LIBS_REQUIRED)
+      set_config_option(HAVE_OCC_CAF "OpenCASCADE-CAF")
+      list(APPEND EXTERNAL_LIBRARIES ${OCC_CAF_LIBS} ${FREETYPE_LIBRARIES})
+      list(APPEND EXTERNAL_INCLUDES ${FREETYPE_INCLUDE_DIRS})
+      if(WIN32)
+        list(APPEND EXTERNAL_LIBRARIES "windowscodecs")
+        list(APPEND EXTERNAL_LIBRARIES "ole32")
+      endif()
+    endif()
+    # then append OCC libraries
+    set_config_option(HAVE_OCC "OpenCASCADE")
+    list(APPEND EXTERNAL_LIBRARIES ${OCC_LIBS})
+    list(APPEND EXTERNAL_INCLUDES ${OCC_INC})
+    if(HAVE_64BIT_SIZE_T)
+      add_definitions(-D_OCC64)
+    endif()
+    if(WIN32)
+      list(APPEND EXTERNAL_LIBRARIES "winspool")
+      add_definitions(-DOCC_CONVERT_SIGNALS)
+    elseif(MSVC)
+      add_definitions(-DWNT)
+    endif()
+  endif()
+endif()
+
+if(ENABLE_ZIPPER)
+  if(ENABLE_BUILD_IOS)
+    set_config_option(HAVE_LIBZ "Zlib")
+  endif()
+  if(NOT HAVE_LIBZ) # necessary for non-GUI builds
+    find_package(ZLIB)
+    if(ZLIB_FOUND)
+      set_config_option(HAVE_LIBZ "Zlib")
+      list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES})
+      list(APPEND EXTERNAL_INCLUDES ${ZLIB_INCLUDE_DIR})
+    endif()
+  endif()
+  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/zipper AND HAVE_LIBZ)
+    add_subdirectory(contrib/zipper)
+    include_directories(contrib/zipper)
+    set_config_option(HAVE_ZIPPER "Zipper")
+  endif()
+endif()
+
+if(ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON)
+  find_package(SWIG REQUIRED)
+  include(${SWIG_USE_FILE})
+  find_package(PythonLibs)
+  if(SWIG_FOUND AND PYTHONLIBS_FOUND)
+    message(STATUS "Found SWIG version " ${SWIG_VERSION})
+    find_package(PythonInterp)
+    string(SUBSTRING ${SWIG_VERSION} 0 1 SWIG_MAJOR_VERSION)
+    if(SWIG_MAJOR_VERSION EQUAL 1)
+      message(WARNING "Python bindings require SWIG >= 2: disabling Python")
+    else()
+      set_config_option(HAVE_PYTHON "Python")
+      mark_as_advanced(CLEAR PYTHON_LIBRARY PYTHON_INCLUDE_DIR)
+      if(ENABLE_NUMPY)
+        if (NOT NUMPY_INC)
+          EXEC_PROGRAM (${PYTHON_EXECUTABLE}
+            ARGS "-c \"import numpy; print(numpy.get_include())\""
+            OUTPUT_VARIABLE NUMPY_INC
+            RETURN_VALUE NUMPY_NOT_FOUND)
+        endif()
+        if(NUMPY_INC)
+          list(APPEND EXTERNAL_INCLUDES ${NUMPY_INC})
+          set_config_option(HAVE_NUMPY "Numpy")
+        endif()
+      endif()
+      if(HAVE_PETSC)
+        if(ENABLE_PETSC4PY)
+          EXECUTE_PROCESS(
+            COMMAND ${PYTHON_EXECUTABLE} -c "import petsc4py; print(petsc4py.get_include())"
+            OUTPUT_VARIABLE PETSC4PY_INC
+            RESULT_VARIABLE PETSC4PY_NOT_FOUND
+            ERROR_QUIET
+            OUTPUT_STRIP_TRAILING_WHITESPACE)
+          if(PETSC4PY_INC)
+            list(APPEND EXTERNAL_INCLUDES ${PETSC4PY_INC})
+            set_config_option(HAVE_PETSC4PY "PETSc4py")
+          endif()
+        endif()
+      endif()
+    endif()
+  endif()
+endif()
+
+check_function_exists(vsnprintf HAVE_VSNPRINTF)
+if(NOT HAVE_VSNPRINTF AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID)
+  set_config_option(HAVE_NO_VSNPRINTF "NoVsnprintf")
+endif()
+
+check_include_file(sys/socket.h HAVE_SYS_SOCKET_H)
+if(HAVE_SYS_SOCKET_H)
+  set(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h)
+endif()
+check_type_size(socklen_t SOCKLEN_T_SIZE)
+set(CMAKE_EXTRA_INCLUDE_FILES)
+if(NOT SOCKLEN_T_SIZE AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID)
+  set_config_option(HAVE_NO_SOCKLEN_T "NoSocklenT")
+endif()
+
+check_include_file(stdint.h HAVE_STDINT_H)
+if(HAVE_STDINT_H)
+  set(CMAKE_EXTRA_INCLUDE_FILES stdint.h)
+else()
+  set_config_option(HAVE_NO_STDINT_H "NoStdintH")
+endif()
+check_type_size(intptr_t INTPTR_T_SIZE)
+set(CMAKE_EXTRA_INCLUDE_FILES)
+if(NOT INTPTR_T_SIZE AND NOT ENABLE_BUILD_IOS AND NOT ENABLE_BUILD_ANDROID)
+  set_config_option(HAVE_NO_INTPTR_T "NoIntptrT")
+endif()
+
+check_include_file(dlfcn.h DLFCN_H)
+if(DLFCN_H)
+  set_config_option(HAVE_DLOPEN "Dlopen")
+  list(APPEND EXTERNAL_LIBRARIES ${CMAKE_DL_LIBS})
+endif()
+
+if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+  check_include_file(linux/joystick.h LINUX_JOYSTICK_H)
+  if(LINUX_JOYSTICK_H)
+    set_config_option(HAVE_LINUX_JOYSTICK "LinuxJoystick")
+  endif()
+endif()
+
+if(WIN32)
+  add_definitions(-D_USE_MATH_DEFINES)
+  list(APPEND EXTERNAL_LIBRARIES winmm wsock32 ws2_32 psapi)
+endif()
+
+if(MSVC)
+  add_definitions(-DNOMINMAX -D_CRT_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_DEPRECATE)
+endif()
+
+# add C functions API
+set(GMSH_SRC ${GMSH_SRC};api/gmshc.cpp)
+
+# force full warnings to encourage everybody to write clean(er) code
+check_cxx_compiler_flag("-Wall" WALL)
+if(WALL AND NOT MSVC)
+  file(GLOB_RECURSE WALL_SRC Common/*.cpp Fltk/*.cpp FunctionSpace/*.cpp
+       Geo/*.cpp Graphics/*.cpp Mesh/*.cpp Numeric/*.cpp Parser/*.cpp
+       Plugin/*.cpp Post/*.cpp Solver/*.cpp)
+  set(WF "-Wall")
+  check_cxx_compiler_flag("-Wint-to-void-pointer-cast" WCAST)
+  if(WCAST)
+    set(WF "${WF} -Wno-int-to-void-pointer-cast")
+  endif()
+  check_cxx_compiler_flag("-Wdeprecated-declarations" WDEPREC)
+  if(WDEPREC)
+    # FIXME: remove this when we have fixed the deprecated GLU code for OpenGL3
+    set(WF "${WF} -Wno-deprecated-declarations")
+  endif()
+  check_cxx_compiler_flag("-Wmisleading-indentation" WIND)
+  if(WIND)
+    set(WF "${WF} -Wno-misleading-indentation")
+  endif()
+  check_cxx_compiler_flag("-Wno-attributes" WATTR)
+  if(WATTR)
+    # FIXME: remove this when GCC behaves more intelligently
+    set(WF "${WF} -Wno-attributes")
+  endif()
+  set_compile_flags(WALL_SRC ${WF})
+endif()
+
+# don't issue warnings for contributed libraries
+check_cxx_compiler_flag("-w" NOWARN)
+if(NOWARN)
+  file(GLOB_RECURSE NOWARN_SRC contrib/*.cpp contrib/*.cc contrib/*.cxx contrib/*.c)
+  set_compile_flags(NOWARN_SRC "-w")
+endif()
+
+# disable compile optimization on some known problematic files
+check_cxx_compiler_flag("-O0" NOOPT)
+if(NOOPT OR ENABLE_BUILD_IOS)
+  if(ENABLE_BUILD_IOS) # optimized iOS 10 64 bits screws somewhere in Geo
+    file(GLOB_RECURSE NOOPT_SRC Numeric/robustPredicates.cpp Geo/G*.cpp Mesh/BDS.cpp
+         Parser/Gmsh.tab.cpp contrib/blossom/* Mesh/Background*)
+  else()
+    file(GLOB_RECURSE NOOPT_SRC Numeric/robustPredicates.cpp Mesh/BDS.cpp
+         Parser/Gmsh.tab.cpp contrib/blossom/* contrib/bamg/* Mesh/Background*)
+  endif()
+  set_compile_flags(NOOPT_SRC "-O0")
+endif()
+
+# do not use arithmetic contraction in predicates.cpp
+# if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")
+#   set_source_files_properties(Numeric/robustPredicates.cpp PROPERTIES
+#     COMPILE_FLAGS "/fp:strict")
+# elseif(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang")
+#   set_source_files_properties(Numeric/robustPredicates.cpp PROPERTIES
+#     COMPILE_FLAGS "-fno-unsafe-math-optimizations -ffp-contract=off")
+# elseif(CMAKE_C_COMPILER_ID STREQUAL "Intel")
+#   set_source_files_properties(Numeric/robustPredicates.cpp PROPERTIES
+#     COMPILE_FLAGS "-fp-model strict")
+# endif()
+
+# enable Revoropt and set compile flags for the corresponding plugin
+if(ENABLE_REVOROPT)
+  if(HAVE_EIGEN AND HAVE_MESH AND HAVE_PLUGINS AND HAVE_ANN AND HAVE_ALGLIB)
+    list(APPEND EXTERNAL_INCLUDES contrib/Revoropt/include)
+    set_config_option(HAVE_REVOROPT "Revoropt")
+    add_definitions(-DUSE_ANN)
+  else()
+    message(WARNING "Revoropt requires Eigen, Mesh, Plugins, ANN and ALGLIB")
+  endif()
+endif()
+
+if(HAVE_MESH AND NOT HAVE_EIGEN AND NOT HAVE_LAPACK)
+  message(WARNING "Most meshing algorithms will not be functional without "
+          "Eigen or Lapack")
+endif()
+
+list(SORT CONFIG_OPTIONS)
+set(GMSH_CONFIG_OPTIONS "")
+foreach(OPT ${CONFIG_OPTIONS})
+  set(GMSH_CONFIG_OPTIONS "${GMSH_CONFIG_OPTIONS} ${OPT}")
+endforeach()
+
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Common/GmshConfig.h.in
+               ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshConfig.h)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Common/GmshVersion.h.in
+               ${CMAKE_CURRENT_BINARY_DIR}/Common/GmshVersion.h)
+
+# the texi and pypi version files are modified in the source directory (not
+# ideal for version.texi, but since git tracks the contents of the file this is
+# acceptable as it will only change when the actual version is changed - not for
+# each git hash; setup.py is not under version control)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo/version.texi.in
+               ${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo/version.texi)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/utils/pypi/gmsh/setup.py.in
+               ${CMAKE_CURRENT_SOURCE_DIR}/utils/pypi/gmsh/setup.py)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/utils/pypi/gmsh-dev/setup.py.in
+               ${CMAKE_CURRENT_SOURCE_DIR}/utils/pypi/gmsh-dev/setup.py)
+
+file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/version.txt ${GMSH_SHORT_VERSION})
+
+# process cmake environment variables so we can append them to the -I include
+# commands. This is not recommended (we should only use the cache variables) but
+# it is very convenient: otherwise we have to remember providing the
+# -D... options to cmake for each new build.
+set(ENV_CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH})
+set(ENV_CMAKE_INCLUDE_PATH $ENV{CMAKE_INCLUDE_PATH})
+if(UNIX)
+  if(ENV_CMAKE_PREFIX_PATH)
+    string(REPLACE ":" ";" ENV_CMAKE_PREFIX_PATH ${ENV_CMAKE_PREFIX_PATH})
+  endif()
+  if(ENV_CMAKE_INCLUDE_PATH)
+    string(REPLACE ":" ";" ENV_CMAKE_INCLUDE_PATH ${ENV_CMAKE_INCLUDE_PATH})
+  endif()
+endif()
+list(APPEND EXTERNAL_INCLUDES ${CMAKE_INCLUDE_PATH} ${ENV_CMAKE_INCLUDE_PATH})
+list(APPEND EXTERNAL_INCLUDES ${CMAKE_PREFIX_PATH} ${ENV_CMAKE_PREFIX_PATH})
+foreach(DIR ${CMAKE_PREFIX_PATH} ${ENV_CMAKE_PREFIX_PATH})
+  list(APPEND EXTERNAL_INCLUDES ${DIR}/include)
+endforeach()
+
+if(EXTERNAL_INCLUDES)
+  list(REMOVE_DUPLICATES EXTERNAL_INCLUDES)
+endif()
+
+if(HAVE_FLTK)
+  set(LINK_LIBRARIES ${FLTK_LIBRARIES} ${EXTERNAL_LIBRARIES}
+                     ${OPENGL_LIBRARIES} ${LAPACK_LIBRARIES})
+elseif(HAVE_OPENGL)
+  set(LINK_LIBRARIES ${EXTERNAL_LIBRARIES} ${OPENGL_LIBRARIES}
+                     ${LAPACK_LIBRARIES})
+else()
+  set(LINK_LIBRARIES ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES})
+endif()
+
+# try to use static gfortran on static builds (cannot do this on dynamic builds
+# as e.g. Debian compiles libgfortran.a without -fPIC: sigh...)
+if(NOT ENABLE_BUILD_DYNAMIC AND NOT ENABLE_BUILD_SHARED)
+  find_library(GFORTRAN_STATIC libgfortran.a)
+  if(GFORTRAN_STATIC)
+    set(CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES)
+    message(STATUS "Using static libgfortran")
+    foreach(STR ${LINK_LIBRARIES})
+      string(REPLACE "-lgfortran" ${GFORTRAN_STATIC} STR2 ${STR})
+      list(APPEND LINK_LIBRARIES2 ${STR2})
+    endforeach()
+    set(LINK_LIBRARIES ${LINK_LIBRARIES2})
+  endif()
+endif()
+
+# Linux-specific linker options
+if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+  if(HAVE_OCC)
+    find_library(RT_LIB rt)
+    if(RT_LIB)
+      list(APPEND LINK_LIBRARIES ${RT_LIB})
+    endif()
+  endif()
+  if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Intel")
+    add_definitions(-fPIC)
+  endif()
+endif()
+
+# we could specify include dirs more selectively, but this is simpler
+include_directories(Common Fltk Geo Graphics Mesh Solver Numeric Parser
+  Plugin Post api ${EXTERNAL_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}/Common)
+
+# set this for external codes that might include this CMakeList file
+set(GMSH_EXTERNAL_INCLUDE_DIRS ${EXTERNAL_INCLUDES} CACHE
+    STRING "External include directories" FORCE)
+set(GMSH_EXTERNAL_LIBRARIES ${LINK_LIBRARIES} CACHE
+    STRING "External libraries" FORCE)
+
+# group sources for easier navigation in IDEs
+foreach(DIR ${GMSH_DIRS})
+  string(REGEX REPLACE "\\+" "\\\\+" DIR ${DIR})
+  source_group(${DIR} REGULAR_EXPRESSION ${DIR}/.*)
+endforeach()
+
+# static library target
+if(ENABLE_BUILD_LIB)
+  add_library(lib STATIC ${GMSH_SRC})
+  set_target_properties(lib PROPERTIES OUTPUT_NAME gmsh)
+  if(MSVC)
+    set_target_properties(lib PROPERTIES DEBUG_POSTFIX d)
+    if(ENABLE_MSVC_STATIC_RUNTIME)
+      set_target_properties(lib PROPERTIES LINK_FLAGS_RELEASE "/nodefaultlib:LIBCMT")
+    endif()
+  endif()
+endif()
+
+# shared library target
+if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
+  add_library(shared SHARED ${GMSH_SRC})
+  set_target_properties(shared PROPERTIES OUTPUT_NAME gmsh
+     VERSION ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION}.${GMSH_PATCH_VERSION}
+     SOVERSION ${GMSH_MAJOR_VERSION}.${GMSH_MINOR_VERSION})
+  if(WIN32)
+    set_target_properties(shared PROPERTIES PREFIX "" IMPORT_PREFIX ""
+      IMPORT_SUFFIX ".lib" COMPILE_FLAGS "-DGMSH_DLL -DGMSH_DLL_EXPORT")
+  endif()
+  target_link_libraries(shared ${LINK_LIBRARIES})
+  # don't define LC_RPATH in dylib for development, to not get endless warnings
+  # about code signing
+  if(APPLE AND NOT GMSH_RELEASE)
+    set_target_properties(shared PROPERTIES INSTALL_RPATH "")
+  endif()
+  if(MSVC AND ENABLE_MSVC_STATIC_RUNTIME)
+    message(STATUS "Note: By enabling ENABLE_MSVC_STATIC_RUNTIME, shared library "
+            "won't link. In MSVC change /MT to /MD in the shared project properties")
+  endif()
+endif()
+
+# binary targets
+if(HAVE_FLTK)
+  if(ENABLE_BUILD_DYNAMIC)
+    add_executable(gmsh WIN32 Common/Main.cpp)
+    target_link_libraries(gmsh shared)
+  else()
+    add_executable(gmsh WIN32 Common/Main.cpp ${GMSH_SRC})
+  endif()
+  # we could add this to create a minimal app bundle even without install
+  # if(APPLE AND NOT ENABLE_OS_SPECIFIC_INSTALL)
+  #  set_target_properties(gmsh PROPERTIES MACOSX_BUNDLE ON
+  #    MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_dev.plist)
+  # endif()
+else()
+  if(ENABLE_BUILD_DYNAMIC)
+    add_executable(gmsh Common/Main.cpp)
+    target_link_libraries(gmsh shared)
+  else()
+    add_executable(gmsh Common/Main.cpp ${GMSH_SRC})
+  endif()
+endif()
+target_link_libraries(gmsh ${LINK_LIBRARIES})
+
+# Windows specific linker options
+if(WIN32 AND NOT MSVC)
+  set(FLAGS "-Wl,--stack,16777216 -static -municode")
+  if(HAVE_FLTK)
+    set(FLAGS "${FLAGS} -mwindows")
+  else()
+    set(FLAGS "${FLAGS} -mconsole")
+  endif()
+  if(HAVE_64BIT_SIZE_T)
+    set(FLAGS "${FLAGS} \"${CMAKE_CURRENT_SOURCE_DIR}/Fltk/Win64Icon.res\"")
+  else()
+    set(FLAGS "${FLAGS} \"${CMAKE_CURRENT_SOURCE_DIR}/Fltk/Win32Icon.res\"")
+  endif()
+  set_target_properties(gmsh PROPERTIES LINK_FLAGS "${FLAGS}")
+  if(ENABLE_BUILD_DYNAMIC OR ENABLE_BUILD_SHARED)
+    set_target_properties(shared PROPERTIES LINK_FLAGS -static)
+  endif()
+  # remove -Wl,-Bdynamic flags
+  set(CMAKE_EXE_LINK_DYNAMIC_C_FLAGS)
+  set(CMAKE_EXE_LINK_DYNAMIC_CXX_FLAGS)
+elseif(MSVC)
+  set_target_properties(gmsh PROPERTIES LINK_FLAGS "/STACK:16777216 /SAFESEH:NO")
+endif()
+
+# android target
+if(ENABLE_BUILD_ANDROID)
+  find_file(CMAKE_TOOLCHAIN_FILE "android.toolchain.cmake")
+  if(NOT CMAKE_TOOLCHAIN_FILE)
+    message(FATAL_ERROR "Cannot compile Gmsh for android without android-cmake")
+  endif()
+  add_definitions(-D_GLIBCXX_USE_C99_MATH=1)
+  set(CMAKE_BUILD_TYPE Release)
+  set(LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_CURRENT_BINARY_DIR})
+  set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/libs/)
+  add_definitions(-DBUILD_ANDROID)
+  add_definitions(-DPICOJSON_USE_LOCALE=0)
+  add_library(androidGmsh SHARED ${GMSH_SRC})
+  set_target_properties(androidGmsh PROPERTIES OUTPUT_NAME gmsh)
+  target_link_libraries(androidGmsh ${EXTERNAL_LIBRARIES} ${LAPACK_LIBRARIES})
+  add_custom_command(TARGET androidGmsh POST_BUILD COMMAND
+                     ${CMAKE_STRIP} ${LIBRARY_OUTPUT_PATH}/libgmsh.so)
+endif()
+
+# parser target
+find_program(BISON bison)
+find_program(FLEX flex)
+if(BISON AND FLEX)
+  add_custom_target(parser
+                    COMMAND ${BISON} -p gmsh_yy --output Gmsh.tab.cpp -d Gmsh.y
+                    COMMAND ${FLEX} -P gmsh_yy -o Gmsh.yy.cpp Gmsh.l
+                    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Parser)
+endif()
+
+if(UNIX)
+  # cannot use cmake's file search functions here (they would only find files
+  # existing at configuration time)
+  add_custom_target(purge
+                    COMMAND rm -f `find . -name *~ -o -name *~~`
+                    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+  add_custom_target(etags
+                    COMMAND etags `find . -name *.cpp -o -name *.h -o -name *.y`
+                    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+endif()
+
+if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR
+   CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+  execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion
+                  OUTPUT_VARIABLE CXX_COMPILER_VERSION
+                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+else()
+  set(CXX_COMPILER_VERSION "Unknown")
+endif()
+
+set(WELCOME_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/WELCOME.txt)
+set(SDK_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/SDK.txt)
+set(LICENSE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt)
+set(CREDITS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CREDITS.txt)
+set(CHANGELOG_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CHANGELOG.txt)
+file(GLOB TUTORIAL_GEO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/?*.*)
+file(GLOB TUTORIAL_CPP_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/c++/?*.*)
+file(GLOB TUTORIAL_C_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/c/?*.*)
+file(GLOB TUTORIAL_PY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/python/?*.*)
+file(GLOB TUTORIAL_JL_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tutorial/julia/?*.*)
+file(GLOB DEMOS ${CMAKE_CURRENT_SOURCE_DIR}/demos/*)
+foreach(SUBDIR ${DEMOS})
+  if(IS_DIRECTORY ${SUBDIR})
+    list(APPEND DEMOS_DIRS ${SUBDIR})
+  endif()
+endforeach()
+set(TEX_DIR ${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo)
+file(GLOB TEX_SRC ${TEX_DIR}/*.texi)
+set(TEX_OBJ ${TEX_DIR}/gmsh.aux ${TEX_DIR}/gmsh.cp ${TEX_DIR}/gmsh.cps
+    ${TEX_DIR}/gmsh.fn ${TEX_DIR}/gmsh.html ${TEX_DIR}/gmsh.info ${TEX_DIR}/gmsh.ky
+    ${TEX_DIR}/gmsh.log ${TEX_DIR}/gmsh.pdf ${TEX_DIR}/gmsh.pg ${TEX_DIR}/gmsh.toc
+    ${TEX_DIR}/gmsh.tp ${TEX_DIR}/gmsh.tps ${TEX_DIR}/gmsh.txt ${TEX_DIR}/gmsh.vr)
+
+macro(unix2dos VARNAME)
+  file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unix2dos)
+  set(UNIX2DOS_FILES)
+  foreach(FILE ${${VARNAME}})
+    file(READ ${FILE} F0)
+    get_filename_component(N ${FILE} NAME)
+    if(CYGWIN)
+      string(REGEX REPLACE "\n" "\r\n" F1 "${F0}")
+      file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${N} "${F1}")
+    else() # if not in Cygwin, cmake adds '\r's automatically
+      file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${N} "${F0}")
+    endif()
+    list(APPEND UNIX2DOS_FILES ${CMAKE_CURRENT_BINARY_DIR}/unix2dos/${N})
+  endforeach()
+  set(${VARNAME} ${UNIX2DOS_FILES})
+endmacro()
+
+if(WIN32)
+  if(ENABLE_OS_SPECIFIC_INSTALL)
+    set(GMSH_BIN .)
+    set(GMSH_LIB .)
+    set(GMSH_DOC .)
+    set(GMSH_MAN .)
+    set(GMSH_INC .)
+  else()
+    include(GNUInstallDirs)
+    set(GMSH_BIN ${CMAKE_INSTALL_BINDIR})
+    set(GMSH_LIB ${CMAKE_INSTALL_LIBDIR})
+    set(GMSH_DOC ${CMAKE_INSTALL_DOCDIR})
+    set(GMSH_MAN ${CMAKE_INSTALL_MANDIR}/man1)
+    set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR})
+  endif()
+  if(CYGWIN)
+    unix2dos(GMSH_API)
+    if(ENABLE_PRIVATE_API)
+      unix2dos(GMSH_PRIVATE_API)
+    endif()
+    unix2dos(WELCOME_FILE)
+    unix2dos(SDK_FILE)
+    unix2dos(LICENSE_FILE)
+    unix2dos(CREDITS_FILE)
+    unix2dos(CHANGELOG_FILE)
+    unix2dos(TUTORIAL_GEO_FILES)
+    unix2dos(TUTORIAL_CPP_FILES)
+    unix2dos(TUTORIAL_C_FILES)
+    unix2dos(TUTORIAL_PY_FILES)
+    unix2dos(TUTORIAL_JL_FILES)
+    foreach(DIR ${DEMOS_DIRS})
+      file(GLOB DEMO_FILES ${DIR}/?*.*)
+      unix2dos(DEMO_FILES)
+    endforeach()
+  endif()
+elseif(APPLE AND ENABLE_OS_SPECIFIC_INSTALL)
+  # set these so that the files get installed nicely in the MacOSX
+  # .app bundle
+  set(GMSH_BIN ../MacOS)
+  set(GMSH_LIB ../MacOS)
+  set(GMSH_DOC ../../..)
+  set(GMSH_MAN ../../..)
+  set(GMSH_INC ../MacOS)
+else()
+  include(GNUInstallDirs)
+  set(GMSH_BIN ${CMAKE_INSTALL_BINDIR})
+  set(GMSH_LIB ${CMAKE_INSTALL_LIBDIR})
+  set(GMSH_DOC ${CMAKE_INSTALL_DOCDIR})
+  set(GMSH_MAN ${CMAKE_INSTALL_MANDIR}/man1)
+  set(GMSH_INC ${CMAKE_INSTALL_INCLUDEDIR})
+endif()
+
+# mark targets as optional so we can install them separately if needed
+# (e.g. "make lib" or "make shared" followed by "make install/fast")
+install(TARGETS gmsh DESTINATION ${GMSH_BIN} OPTIONAL)
+if(ENABLE_BUILD_LIB)
+  install(TARGETS lib DESTINATION ${GMSH_LIB} OPTIONAL)
+endif()
+if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
+  install(TARGETS shared DESTINATION ${GMSH_LIB} OPTIONAL)
+endif()
+
+if(ENABLE_ONELAB)
+  install(FILES ${ONELAB_PY} DESTINATION ${GMSH_BIN})
+endif()
+if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC)
+  install(FILES ${GMSH_API} DESTINATION ${GMSH_INC})
+  install(FILES ${GMSH_PY} DESTINATION ${GMSH_LIB})
+  install(FILES ${GMSH_JL} DESTINATION ${GMSH_LIB})
+  if(ENABLE_PRIVATE_API)
+    install(FILES ${GMSH_PRIVATE_API} DESTINATION ${GMSH_INC}/gmsh)
+  endif()
+endif()
+if(INSTALL_SDK_README)
+  configure_file(${SDK_FILE} ${CMAKE_CURRENT_BINARY_DIR}/README.txt)
+  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/README.txt DESTINATION .)
+endif()
+install(FILES ${WELCOME_FILE} DESTINATION ${GMSH_DOC} RENAME README.txt)
+install(FILES ${LICENSE_FILE} DESTINATION ${GMSH_DOC})
+install(FILES ${CREDITS_FILE} DESTINATION ${GMSH_DOC})
+install(FILES ${CHANGELOG_FILE} DESTINATION ${GMSH_DOC})
+install(FILES ${TUTORIAL_GEO_FILES} DESTINATION ${GMSH_DOC}/tutorial)
+install(FILES ${TUTORIAL_CPP_FILES} DESTINATION ${GMSH_DOC}/tutorial/c++)
+install(FILES ${TUTORIAL_C_FILES} DESTINATION ${GMSH_DOC}/tutorial/c)
+install(FILES ${TUTORIAL_PY_FILES} DESTINATION ${GMSH_DOC}/tutorial/python)
+install(FILES ${TUTORIAL_JL_FILES} DESTINATION ${GMSH_DOC}/tutorial/julia)
+foreach(DIR ${DEMOS_DIRS})
+  get_filename_component(DEMOS_DIR_NAME ${DIR} NAME)
+  file(GLOB DEMO_FILES ${DIR}/?*.*)
+  install(FILES ${DEMO_FILES} DESTINATION ${GMSH_DOC}/demos/${DEMOS_DIR_NAME})
+endforeach()
+if(UNIX AND NOT CYGWIN)
+  install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/doc/gmsh.1 DESTINATION ${GMSH_MAN})
+endif()
+
+add_custom_target(get_headers
+  COMMAND ${CMAKE_COMMAND} -E make_directory Headers/gmsh
+  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+foreach(FILE ${GMSH_API})
+  add_custom_command(TARGET get_headers POST_BUILD COMMAND ${CMAKE_COMMAND}
+    -E copy_if_different ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/Headers/
+    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+endforeach()
+if(ENABLE_PRIVATE_API)
+  foreach(FILE ${GMSH_PRIVATE_API})
+    add_custom_command(TARGET get_headers POST_BUILD COMMAND ${CMAKE_COMMAND}
+      -E copy_if_different ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/Headers/gmsh/
+      WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+  endforeach()
+endif()
+
+find_program(MAKEINFO makeinfo)
+if(MAKEINFO)
+  add_custom_command(OUTPUT ${TEX_DIR}/gmsh.info DEPENDS ${TEX_SRC}
+                     COMMAND ${MAKEINFO} --split-size 1000000
+                     ARGS ${TEX_DIR}/gmsh.texi WORKING_DIRECTORY ${TEX_DIR})
+  add_custom_target(info DEPENDS ${TEX_DIR}/gmsh.info)
+  add_custom_command(OUTPUT ${TEX_DIR}/gmsh.txt DEPENDS ${TEX_SRC}
+                     COMMAND ${MAKEINFO} --plaintext -o gmsh.txt
+                     ARGS ${TEX_DIR}/gmsh.texi WORKING_DIRECTORY ${TEX_DIR})
+  add_custom_target(txt DEPENDS ${TEX_DIR}/gmsh.txt)
+  add_custom_command(OUTPUT ${TEX_DIR}/gmsh.html DEPENDS ${TEX_SRC}
+    COMMAND ${MAKEINFO} --html --css-ref=/gmsh.css
+    --no-split --set-customization-variable
+    EXTRA_HEAD='<meta name="viewport" content="width=device-width,initial-scale=1.0">'
+    ARGS ${TEX_DIR}/gmsh.texi WORKING_DIRECTORY ${TEX_DIR})
+  add_custom_target(html DEPENDS ${TEX_DIR}/gmsh.html)
+  install(FILES ${TEX_DIR}/gmsh.html DESTINATION ${GMSH_DOC} OPTIONAL)
+else()
+  add_custom_target(html COMMAND ${CMAKE_COMMAND} -E touch ${TEX_DIR}/gmsh.html)
+endif()
+
+find_program(TEXI2PDF texi2pdf)
+if(TEXI2PDF)
+  add_custom_command(OUTPUT ${TEX_DIR}/gmsh.pdf DEPENDS ${TEX_SRC}
+                     COMMAND ${TEXI2PDF} ARGS gmsh.texi
+                     WORKING_DIRECTORY ${TEX_DIR})
+  add_custom_target(pdf DEPENDS ${TEX_DIR}/gmsh.pdf)
+  install(FILES ${TEX_DIR}/gmsh.pdf DESTINATION ${GMSH_DOC} OPTIONAL)
+endif()
+
+execute_process(COMMAND ${CMAKE_COMMAND} -E echo
+  "@c This file was generated by cmake: do not edit manually!\n${OPT_TEXI}"
+  OUTPUT_FILE cmake_options.texi)
+
+if(MAKEINFO AND TEXI2PDF)
+  add_custom_target(doc COMMAND ${CMAKE_COMMAND} -E tar zcf
+                    ${CMAKE_CURRENT_BINARY_DIR}/gmsh-${GMSH_VERSION}-doc.tgz
+                    CREDITS.txt LICENSE.txt CHANGELOG.txt
+                    doc/gmsh.1 doc/texinfo/gmsh.html doc/texinfo/gmsh.info
+                    doc/texinfo/gmsh.pdf doc/texinfo/gmsh.txt
+                    COMMAND ${CMAKE_COMMAND} -E remove ${TEX_OBJ}
+                    DEPENDS ${TEX_DIR}/gmsh.info ${TEX_DIR}/gmsh.txt
+                    ${TEX_DIR}/gmsh.html ${TEX_DIR}/gmsh.pdf
+                    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+endif()
+
+if(MAKEINFO OR TEXI2PDF)
+  add_custom_target(clean_doc COMMAND ${CMAKE_COMMAND} -E remove ${TEX_OBJ})
+endif()
+
+if(APPLE AND ENABLE_BUILD_LIB)
+  file(READ ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_framework.plist F0)
+  string(REPLACE GMSH_VERSION "${GMSH_VERSION}" F1 "${F0}")
+  file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Info_framework.plist "${F1}")
+  set(LIBNAME $<TARGET_FILE:lib>)
+  add_custom_target(framework DEPENDS lib
+    COMMAND ${CMAKE_COMMAND} -E remove_directory gmsh.framework
+    COMMAND ${CMAKE_COMMAND} -E make_directory gmsh.framework/Headers
+    COMMAND ${CMAKE_COMMAND} -E make_directory gmsh.framework/Resources
+    COMMAND ${CMAKE_COMMAND} -E copy ${LIBNAME} gmsh.framework/gmsh
+    COMMAND ${CMAKE_COMMAND} -E copy Info_framework.plist
+                                     gmsh.framework/Resources/Info.plist
+    COMMAND ${CMAKE_COMMAND} -E create_symlink . gmsh.framework/Headers/gmsh
+    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+  foreach(FILE ${GMSH_API})
+    add_custom_command(TARGET framework POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy
+        ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/gmsh.framework/Headers/
+        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+  endforeach()
+  if(ENABLE_PRIVATE_API)
+    foreach(FILE ${GMSH_PRIVATE_API})
+      add_custom_command(TARGET framework POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy
+          ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/gmsh.framework/Headers/
+          WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+    endforeach()
+  endif()
+endif()
+
+set(CPACK_PACKAGE_VENDOR "Christophe Geuzaine and Jean-Francois Remacle")
+set(CPACK_PACKAGE_VERSION_MAJOR ${GMSH_MAJOR_VERSION})
+set(CPACK_PACKAGE_VERSION_MINOR ${GMSH_MINOR_VERSION})
+set(CPACK_PACKAGE_VERSION_PATCH ${GMSH_PATCH_VERSION})
+set(CPACK_PACKAGE_DESCRIPTION_FILE ${WELCOME_FILE})
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
+    "3D finite element mesh generator with built-in CAD engine and post-processor")
+if(GMSH_EXTRA_VERSION MATCHES "-git.*") # so that we'll overwrite the archives
+  set(CPACK_PACKAGE_FILE_NAME gmsh${GMSH_EXTRA_VERSION_ORIG}-git-${GMSH_OS})
+  set(CPACK_SOURCE_PACKAGE_FILE_NAME gmsh${GMSH_EXTRA_VERSION_ORIG}-git-source)
+else()
+  set(CPACK_PACKAGE_FILE_NAME gmsh-${GMSH_VERSION}-${GMSH_OS})
+  set(CPACK_SOURCE_PACKAGE_FILE_NAME gmsh-${GMSH_VERSION}-source)
+endif()
+set(CPACK_PACKAGE_INSTALL_DIRECTORY "gmsh")
+set(CPACK_RESOURCE_FILE_LICENSE ${LICENSE_FILE})
+set(CPACK_RESOURCE_FILE_README ${WELCOME_FILE})
+set(CPACK_RESOURCE_FILE_WELCOME ${WELCOME_FILE})
+set(CPACK_PACKAGE_EXECUTABLE "gmsh")
+if(ENABLE_PACKAGE_STRIP)
+  set(CPACK_STRIP_FILES TRUE)
+else()
+  set(CPACK_STRIP_FILES FALSE)
+endif()
+set(CPACK_SOURCE_GENERATOR TGZ)
+set(CPACK_SOURCE_IGNORE_FILES "${CMAKE_CURRENT_BINARY_DIR}" "/CVS/" "/.svn" "/.git"
+    "~$" "DS_Store$" "GmshConfig.h$" "GmshVersion.h$" "/benchmarks/" "/tmp/"
+    "/bin/" "/lib/" "/nightly/" "GPATH" "GRTAGS" "GSYMS" "GTAGS" "/HTML/"
+    "/contrib/3M/" "/contrib/Parasolid/")
+
+if(UNIX)
+  # make sure we remove previous installs before doing the next one (on Mac for
+  # example "make package; make package_source" would lead to huge file lists
+  # getting generated due to the 'Applications' symlink in the bundle)
+  set(CPACK_INSTALL_COMMANDS "rm -rf ${CMAKE_CURRENT_BINARY_DIR}/_CPack_Packages")
+endif()
+
+if(APPLE AND ENABLE_OS_SPECIFIC_INSTALL)
+  set(CPACK_GENERATOR Bundle)
+  set(CPACK_BUNDLE_NAME Gmsh)
+  file(READ ${CMAKE_CURRENT_SOURCE_DIR}/utils/misc/gmsh_app.plist F0)
+  string(REPLACE GMSH_VERSION "${GMSH_VERSION}" F1 "${F0}")
+  file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Info.plist "${F1}")
+  set(CPACK_BUNDLE_PLIST ${CMAKE_CURRENT_BINARY_DIR}/Info.plist)
+  set(CPACK_BUNDLE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIcons.icns)
+  if(PACKAGER STREQUAL "geuzaine - removed: we sign on a separate machine")
+    # codesigning requires CMake >= 3.2
+    set(CPACK_BUNDLE_APPLE_CERT_APP "Developer ID Application: Christophe Geuzaine")
+  endif()
+  install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsGeo.icns DESTINATION .
+          RENAME GmshGeo.icns)
+  install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsMsh.icns DESTINATION .
+          RENAME GmshMsh.icns)
+  install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsSol.icns DESTINATION .
+          RENAME GmshSol.icns)
+  install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsPos.icns DESTINATION .
+          RENAME GmshPos.icns)
+  set(CPACK_PACKAGE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIcons.icns)
+elseif(WIN32)
+  set(CPACK_GENERATOR ZIP)
+else()
+  set(CPACK_GENERATOR TGZ)
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/utils/wrappers/gmshpy AND
+   ENABLE_PRIVATE_API AND ENABLE_WRAP_PYTHON AND HAVE_PYTHON)
+  add_subdirectory(utils/wrappers/gmshpy)
+endif()
+
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/utils/wrappers/java AND
+   ENABLE_PRIVATE_API AND ENABLE_WRAP_JAVA)
+  add_subdirectory(utils/wrappers/java)
+endif()
+
+include(CPack)
+
+macro(filter_tests IN OUT)
+  unset(${OUT})
+  foreach(FILE ${IN})
+    unset(BAD1)
+    unset(BAD2)
+    unset(BAD3)
+    # OS-specific
+    if(${GMSH_OS} MATCHES "Linux32")
+      # OCC STL generation crashes on our Linux32 docker
+      string(REGEX MATCH "t18" BAD1 ${FILE})
+    endif()
+    # OpenCASCADE
+    if(NOT HAVE_OCC AND NOT BAD1 AND NOT BAD2 AND NOT BAD3)
+      file(STRINGS ${FILE} BAD1 REGEX "^SetFactory.*OpenCASCADE.*")
+      file(STRINGS ${FILE} BAD2 REGEX ".*occ\\.synchronize.*")
+      file(STRINGS ${FILE} BAD3 REGEX ".*occ::synchronize.*")
+    endif()
+    # Metis
+    if(NOT HAVE_METIS AND NOT BAD1 AND NOT BAD2 AND NOT BAD3)
+      file(STRINGS ${FILE} BAD1 REGEX ".*PartitionMesh.*")
+      file(STRINGS ${FILE} BAD2 REGEX ".*mesh\\.partition.*")
+      file(STRINGS ${FILE} BAD3 REGEX ".*mesh::partition.*")
+    endif()
+    if(BAD1 OR BAD2 OR BAD3)
+      message("Skipping test " ${FILE})
+    else()
+      list(APPEND ${OUT} ${FILE})
+    endif()
+  endforeach()
+endmacro()
+
+if(NOT DISABLE_GMSH_TESTS)
+  # disabling tests is useful when including this CMakeLists in an external project
+  include(CTest)
+  file(GLOB_RECURSE ALLFILES
+       tutorial/*.geo demos/*.geo benchmarks/?d/*.geo benchmarks/extrude/*.geo
+       benchmarks/occ/*.geo)
+  filter_tests("${ALLFILES}" TESTFILES)
+  foreach(TESTFILE ${TESTFILES})
+    # use relative path for Cygwin/MinGW (the pure win exe built with the MinGW
+    # compilers does not understand a full Cygwin-style path)
+    FILE(RELATIVE_PATH TEST ${CMAKE_CURRENT_BINARY_DIR} ${TESTFILE})
+    add_test(${TEST} ./gmsh ${TEST} -3 -nopopup -o ./tmp.msh)
+  endforeach()
+  # test c++ api tutorials with dynamic builds (except on 32 bit windows for
+  # now: our win32 setup does not currently handle exceptions)
+  if(ENABLE_BUILD_DYNAMIC AND NOT ${GMSH_OS} MATCHES "Windows32")
+    file(GLOB_RECURSE ALLFILES tutorial/c++/*.cpp)
+    filter_tests("${ALLFILES}" TESTFILES)
+    foreach(TESTFILE ${TESTFILES})
+      get_filename_component(TEST ${TESTFILE} NAME_WE)
+      add_executable(${TEST} WIN32 ${TESTFILE})
+      target_link_libraries(${TEST} shared)
+      if(WIN32 AND NOT MSVC)
+        set(FLAGS "-static")
+        if(HAVE_FLTK)
+          set(FLAGS "${FLAGS} -mwindows")
+        else()
+          set(FLAGS "${FLAGS} -mconsole")
+        endif()
+        set_target_properties(${TEST} PROPERTIES LINK_FLAGS "${FLAGS}")
+      endif()
+      add_test(${TEST}_cpp ${TEST} -nopopup)
+    endforeach()
+  endif()
+  # enable this once we have worked out the path issues on the build machines
+  if(0 AND ENABLE_BUILD_DYNAMIC)
+    find_package(PythonInterp)
+    if(PYTHONINTERP_FOUND)
+      file(GLOB_RECURSE ALLFILES tutorial/python/*.py demos/api/*.py)
+      filter_tests("${ALLFILES}" TESTFILES)
+      foreach(TESTFILE ${TESTFILES})
+        get_filename_component(TEST ${TESTFILE} NAME_WE)
+        add_test(NAME ${TEST}_py COMMAND ${PYTHON_EXECUTABLE} ${TESTFILE} -nopopup)
+        set_property(TEST ${TEST}_py APPEND PROPERTY ENVIRONMENT
+                     "PYTHONPATH=${CMAKE_SOURCE_DIR}/api")
+        set_property(TEST ${TEST}_py APPEND PROPERTY ENVIRONMENT
+                     "LD_LIBRARY_PATH=${CMAKE_CURRENT_BINARY_DIR}")
+        endforeach()
+    endif()
+  endif()
+endif()
+
+message(STATUS "")
+message(STATUS "Gmsh ${GMSH_VERSION} has been configured for ${GMSH_OS}")
+message(STATUS "")
+message(STATUS " * Build options:" ${GMSH_CONFIG_OPTIONS})
+message(STATUS " * Build type: " ${CMAKE_BUILD_TYPE})
+message(STATUS " * C compiler: " ${CMAKE_C_COMPILER})
+message(STATUS " * C++ compiler: " ${CMAKE_CXX_COMPILER})
+message(STATUS " * Install prefix: " ${CMAKE_INSTALL_PREFIX})
+message(STATUS "")
+
+mark_as_advanced(ANN_INC ANN_LIB CAIRO_LIB CAIRO_INC CGNS_INC GMM_INC
+                 GMP_INC GMP_LIB MMG_INC MMG_LIB HDF5_LIB
+                 MED_LIB OCC_INC SZ_LIB
+                 PETSC_LIBS SLEPC_INC SLEPC_INC2 SLEPC_LIB
+                 BISON FLEX MAKEINFO TEXI2PDF FLTK_CONFIG_SCRIPT
+                 GMSH_EXTERNAL_INCLUDE_DIRS GMSH_EXTERNAL_LIBRARIES)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/install-3.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/install-3.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/install-3.sh	(revision 27955)
@@ -0,0 +1,44 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.0.5"
+
+# Cleanup
+rm -rf install src
+mkdir install src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmsh-${VER}-source.tgz" "gmsh-${VER}-source.tgz"
+
+# Untar source
+tar -xvzf gmsh-${VER}-source.tgz
+
+# Move source to 'src' directory
+mv gmsh-${VER}-source/* src
+rm -rf gmsh-${VER}-source
+
+# Configure
+cd install
+cmake ../src \
+	-DCMAKE_INSTALL_PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" \
+	-DENABLE_MPI=1 \
+	-DENABLE_BUILD_DYNAMIC=1 \
+	-DENABLE_BUILD_SHARED=1
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+
+# Make necessary link on RHEL
+if [[ -d ${PREFIX}/lib64 && ! -d ${PREFIX}/lib ]]; then
+	cd ${PREFIX}
+	ln -s ./lib64 ./lib
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/install-4-linux-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/install-4-linux-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/install-4-linux-static.sh	(revision 27955)
@@ -0,0 +1,88 @@
+#!/bin/bash
+set -eu
+
+
+# TODO:
+# - Add support for,
+#	- MUMPS
+#	- PETSc
+# 
+# See Also:
+# - configs/4/static/CMakeLists.txt
+# - http://gmsh.info/doc/texinfo/gmsh.html#Compiling-the-source-code
+#
+
+## Constants
+#
+VER="4.10.5"
+
+PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
+
+# Find libgfortran and libgcc so we do not have to hardcode them
+#
+# TODO:
+# - Move this to etc/environment.sh
+#
+echo "Finding libgfortran..."
+LIBGFORTRAN=$(find /usr -name libgfortran* 2>/dev/null | egrep -n libgfortran.a | sed "s/[0-9]*://g" | head -1)
+LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+LIBGCC=$(find ${LIBGFORTRAN_ROOT} -name libgcc* 2>/dev/null | egrep -n libgcc.a | sed "s/[0-9]*://g" | head -1)
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmsh-${VER}-source.tgz" "gmsh-${VER}-source.tgz"
+
+# Unpack source
+tar -xvzf gmsh-${VER}-source.tgz
+
+# Move source to 'src' directory
+mv gmsh-${VER}-source/* src
+rm -rf gmsh-${VER}-source
+
+# Apply patches
+patch src/CMakeLists.txt < configs/${VER}/static/CMakeLists.txt.patch
+
+# Configure
+#
+# NOTE:
+# - Option -DENABLE_FLTK=0 is used because we do not need GUI.
+# - Option -DENABLE_MPEG_ENCODE=0 is used because we do not need to record MPEG 
+#	movies.
+# - Option -DENABLE_OCC=0 is used because we do not need CAD kernel and are not 
+#	importing STEP/IGES files.
+# - Option -DENABLE_TOUCHBAR=0 is used because we do not have GUI, therefore we 
+#	do not need to support Apple Touch bar (does not affect compilation on 
+#	Linux).
+#
+cd src
+cmake \
+	-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
+	-DCMAKE_BUILD_TYPE=Release \
+	-DENABLE_BUILD_LIB=1 \
+	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas ${LIBGFORTRAN_ROOT}/libgfortran.a ${LIBGFORTRAN_ROOT}/libquadmath.a ${LIBGCC}" \
+	-DENABLE_BLAS_LAPACK=1 \
+	-DENABLE_EIGEN=0 \
+	-DENABLE_FLTK=0 \
+	-DENABLE_MPEG_ENCODE=0 \
+	-DENABLE_MPI=1 \
+	-DENABLE_OCC=0 \
+	-DENABLE_TOUCHBAR=0 \
+	-DMETIS_ROOT="${METIS_ROOT}"
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+
+# Make necessary link on RHEL
+if [[ -d ${PREFIX}/lib64 && ! -d ${PREFIX}/lib ]]; then
+	cd ${PREFIX}
+	ln -s ./lib64 ./lib
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/install-4-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/install-4-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/install-4-linux.sh	(revision 27955)
@@ -0,0 +1,86 @@
+#!/bin/bash
+set -eu
+
+
+# TODO:
+# - Add support for,
+#	- MUMPS
+#	- PETSc
+# 
+# See Also:
+# - configs/4/static/CMakeLists.txt
+# - http://gmsh.info/doc/texinfo/gmsh.html#Compiling-the-source-code
+#
+
+## Constants
+#
+VER="4.10.5"
+
+PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
+
+# Find libgfortran so that we do not have to hardcode it.
+#
+# TODO:
+# - Move this to etc/environment.sh
+#
+echo "Finding libgfortran..."
+LIBGFORTRAN=$(find /usr -name libgfortran* 2>/dev/null | egrep -n libgfortran.a | sed "s/[0-9]*://g" | head -1)
+LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmsh-${VER}-source.tgz" "gmsh-${VER}-source.tgz"
+
+# Unpack source
+tar -xvzf gmsh-${VER}-source.tgz
+
+# Move source to 'src' directory
+mv gmsh-${VER}-source/* src
+rm -rf gmsh-${VER}-source
+
+# Configure
+#
+# NOTE:
+# - Option -DENABLE_FLTK=0 is used because we do not need GUI.
+# - Option -DENABLE_MPEG_ENCODE=0 is used because we do not need to record MPEG 
+#	movies.
+# - Option -DENABLE_OCC=0 is used because we do not need CAD kernel and are not 
+#	importing STEP/IGES files.
+# - Option -DENABLE_TOUCHBAR=0 is used because we do not have GUI, therefore we 
+#	do not need to support Apple Touch bar (does not affect compilation on 
+#	Linux).
+#
+cd src
+cmake \
+	-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
+	-DCMAKE_INSTALL_RPATH="${PREFIX}/lib" \
+	-DCMAKE_BUILD_TYPE=Release \
+	-DENABLE_BUILD_DYNAMIC=1 \
+	-DENABLE_BUILD_SHARED=1 \
+	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas -L${LIBGFORTRAN_ROOT} -lgfortran" \
+	-DENABLE_BLAS_LAPACK=1 \
+	-DENABLE_EIGEN=0 \
+	-DENABLE_FLTK=0 \
+	-DENABLE_MPEG_ENCODE=0 \
+	-DENABLE_MPI=1 \
+	-DENABLE_OCC=0 \
+	-DENABLE_TOUCHBAR=0 \
+	-DMETIS_ROOT="${METIS_ROOT}"
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+
+# Make necessary link on RHEL
+if [[ -d ${PREFIX}/lib64 && ! -d ${PREFIX}/lib ]]; then
+	cd ${PREFIX}
+	ln -s ./lib64 ./lib
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/install-4-mac-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/install-4-mac-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/install-4-mac-static.sh	(revision 27955)
@@ -0,0 +1,85 @@
+#!/bin/bash
+set -eu
+
+
+# TODO:
+# - Add support for,
+#	- MUMPS
+#	- PETSc
+# 
+# See Also:
+# - configs/4/static/CMakeLists.txt
+# - http://gmsh.info/doc/texinfo/gmsh.html#Compiling-the-source-code
+#
+
+## Constants
+#
+VER="4.10.5"
+
+PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
+
+# Find libgfortran and libgcc so we do not have to hardcode them
+#
+# TODO:
+# - Move this to etc/environment.sh
+# - Test if -static-libgfortran flag will avoid all of this.
+# - Otherwise, refactor this to work with other gfortran installations.
+#
+echo "Finding libgfortran..."
+LIBGFORTRAN=$(find /usr /opt -name libgfortran* 2>/dev/null | egrep -n libgfortran.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
+LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+LIBGCC=$(find ${LIBGFORTRAN_ROOT} -name libgcc* 2>/dev/null | egrep -n libgcc.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmsh-${VER}-source.tgz" "gmsh-${VER}-source.tgz"
+
+# Unpack source
+tar -xvzf gmsh-${VER}-source.tgz
+
+# Move source to 'src' directory
+mv gmsh-${VER}-source/* src
+rm -rf gmsh-${VER}-source
+
+# Apply patches
+patch src/CMakeLists.txt < configs/${VER}/static/CMakeLists.txt.patch
+patch src/CMakeLists.txt < configs/${VER}/static/mac/CMakeLists.txt.patch
+
+# Configure
+#
+# NOTE:
+# - Option -DENABLE_FLTK=0 is used because we do not need GUI.
+# - Option -DENABLE_MPEG_ENCODE=0 is used because we do not need to record MPEG 
+#	movies.
+# - Option -DENABLE_OCC=0 is used because we do not need CAD kernel and are not 
+#	importing STEP/IGES files.
+# - Option -DENABLE_TOUCHBAR=0 is used because we do not have GUI, therefore we 
+#	do not need to support Apple Touch bar (does not affect compilation on 
+#	Linux).
+#
+cd src
+cmake \
+	-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
+	-DCMAKE_BUILD_TYPE=Release \
+	-DENABLE_BUILD_LIB=1 \
+	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas ${LIBGFORTRAN_ROOT}/libgfortran.a ${LIBGFORTRAN_ROOT}/libquadmath.a ${LIBGCC}" \
+	-DENABLE_BLAS_LAPACK=1 \
+	-DENABLE_EIGEN=0 \
+	-DENABLE_FLTK=0 \
+	-DENABLE_MPEG_ENCODE=0 \
+	-DENABLE_MPI=1 \
+	-DENABLE_OCC=0 \
+	-DENABLE_TOUCHBAR=0 \
+	-DMETIS_ROOT="${METIS_ROOT}"
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/install-4-mac.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/install-4-mac.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmsh/install-4-mac.sh	(revision 27955)
@@ -0,0 +1,85 @@
+#!/bin/bash
+set -eu
+
+
+# TODO:
+# - Add support for,
+#	- MUMPS
+#	- PETSc
+# 
+# See Also:
+# - configs/4/static/CMakeLists.txt
+# - http://gmsh.info/doc/texinfo/gmsh.html#Compiling-the-source-code
+#
+
+## Constants
+#
+VER="4.10.5"
+
+PREFIX="${ISSM_DIR}/externalpackages/gmsh/install" # Set to location where external package should be installed
+
+# Find libgfortran so that we do not have to hardcode it.
+#
+# TODO:
+# - Move this to etc/environment.sh
+#
+echo "Finding libgfortran..."
+LIBGFORTRAN=$(find /usr /opt -name libgfortran* 2>/dev/null | egrep -n libgfortran.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
+LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmsh-${VER}-source.tgz" "gmsh-${VER}-source.tgz"
+
+# Unpack source
+tar -xvzf gmsh-${VER}-source.tgz
+
+# Move source to 'src' directory
+mv gmsh-${VER}-source/* src
+rm -rf gmsh-${VER}-source
+
+# Apply patches
+patch src/CMakeLists.txt < configs/${VER}/mac/CMakeLists.txt.patch
+
+# Configure
+#
+# NOTE:
+# - Option -DENABLE_FLTK=0 is used because we do not need GUI.
+# - Option -DENABLE_MPEG_ENCODE=0 is used because we do not need to record MPEG 
+#	movies.
+# - Option -DENABLE_OCC=0 is used because we do not need CAD kernel and are not 
+#	importing STEP/IGES files.
+# - Option -DENABLE_TOUCHBAR=0 is used because we do not have GUI, therefore we 
+#	do not need to support Apple Touch bar (does not affect compilation on 
+#	Linux).
+#
+cd src
+cmake \
+	-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
+	-DCMAKE_MACOSX_RPATH=ON \
+	-DCMAKE_INSTALL_RPATH="${PREFIX}/lib" \
+	-DCMAKE_BUILD_TYPE=Release \
+	-DENABLE_BUILD_DYNAMIC=1 \
+	-DENABLE_BUILD_SHARED=1 \
+	-DBLAS_LAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -lflapack -L${BLAS_ROOT}/lib -lfblas -L${LIBGFORTRAN_ROOT} -lgfortran" \
+	-DLIBGFORTRAN_ROOT="${LIBGFORTRAN_ROOT}" \
+	-DENABLE_BLAS_LAPACK=1 \
+	-DENABLE_EIGEN=0 \
+	-DENABLE_FLTK=0 \
+	-DENABLE_MPEG_ENCODE=0 \
+	-DENABLE_MPI=1 \
+	-DENABLE_OCC=0 \
+	-DENABLE_TOUCHBAR=0 \
+	-DMETIS_ROOT="${METIS_ROOT}"
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/linux/cmake/ConfigUser.cmake
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/linux/cmake/ConfigUser.cmake	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/linux/cmake/ConfigUser.cmake	(revision 27955)
@@ -0,0 +1,308 @@
+#
+#
+# Copyright (c) 1991-2019 by the GMT Team (https://www.generic-mapping-tools.org/team.html)
+# See LICENSE.TXT file for copying and redistribution conditions.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by the
+# Free Software Foundation; version 3 or 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 Lesser General Public License
+# for more details.
+#
+# Contact info: www.generic-mapping-tools.org
+# ----------------------------------------------------------------------------
+
+# Use this file to override variables in 'ConfigDefault.cmake' on a per-user
+# basis.  First copy 'ConfigUserTemplate.cmake' to 'ConfigUser.cmake', then
+# edit 'ConfigUser.cmake'.  'ConfigUser.cmake' is not version controlled
+# (currently listed in .gitignore).
+#
+# Note: CMake considers an empty string, "FALSE", "OFF", "NO", or any string
+# ending in "-NOTFOUND" to be false (this happens to be case-insensitive, so
+# "False", "off", "no", and "something-NotFound" are all false).  Other values
+# are true.  Thus it does not matter whether you use TRUE and FALSE, ON and
+# OFF, or YES and NO for your booleans.
+
+##
+## Section 1: Installation paths
+##
+
+# ============================================================================
+# Basic setup begins here.  All settings are optional.  In most cases, setting
+# CMAKE_INSTALL_PREFIX should be all you need to do in order to build GMT with
+# reasonable defaults enabled.  Note: If you need to specify directory names
+# with spaces (e.g., on Windows) then you must put them in quotes.
+# ============================================================================
+
+# Installation path (usually defaults to /usr/local) [auto]:
+set (CMAKE_INSTALL_PREFIX "$ENV{PREFIX}")
+
+# Set install name suffix used for directories and gmt executables
+# [undefined]:
+#set (GMT_INSTALL_NAME_SUFFIX "suffix")
+
+# Install into traditional directory structure. Disable to install a
+# distribution type directory structure (doc and share separated) [on]:
+#set (GMT_INSTALL_TRADITIONAL_FOLDERNAMES OFF)
+
+# Install convenience links for GMT modules. Disable to install only the main
+# gmt program and access modules as "gmt modulename options" [TRUE]:
+#set (GMT_INSTALL_MODULE_LINKS FALSE)
+
+# Make executables relocatable on supported platforms (relative RPATH) [FALSE]:
+set (GMT_INSTALL_RELOCATABLE TRUE)
+
+# Exclude optional GDAL, PCRE, PCRE2, FFTW3, LAPACK, BLAS, ZLIB dependencies even if you have them installed [FALSE]
+#set (GMT_EXCLUDE_GDAL TRUE)
+#set (GMT_EXCLUDE_PCRE TRUE)
+#set (GMT_EXCLUDE_PCRE2 TRUE)
+#set (GMT_EXCLUDE_FFTW3 TRUE)
+#set (GMT_EXCLUDE_LAPACK TRUE)
+#set (GMT_EXCLUDE_BLAS TRUE)
+#set (GMT_EXCLUDE_ZLIB TRUE)
+
+# ============================================================================
+# Advanced configuration begins here.  Usually it is not necessary to edit any
+# settings below.  You should know what you are doing if you do though.  Note:
+# installation paths are relative to ${CMAKE_INSTALL_PREFIX} unless absolute
+# path is given.
+# ============================================================================
+
+# Set binary installation path [bin]:
+#set (GMT_BINDIR "bin")
+
+# Set library installation path [lib or lib64]:
+#set (GMT_LIBDIR "lib")
+
+# Set include installation path [include/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_INCLUDEDIR "include/gmt")
+
+# Set share installation path [share or share/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_DATADIR "share/gmt")
+
+# Set doc installation path [share/doc or
+# share/doc/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_DOCDIR "share/doc/gmt")
+
+# Set manpage installation path [share/man or
+# share/doc/gmt${GMT_INSTALL_NAME_SUFFIX}/man]:
+#set (GMT_MANDIR "share/doc/gmt/man")
+
+# Install documentation files from this external location instead of creating
+# new HTML documents from scratch [${GMT_SOURCE_DIR}/doc_release]:
+#set (GMT_INSTALL_EXTERNAL_DOC OFF)
+
+# Install manual pages from this external location instead of creating the
+# manpages from scratch [${GMT_SOURCE_DIR}/man_release]:
+#set (GMT_INSTALL_EXTERNAL_MAN OFF)
+
+##
+## Section 2: Build dependencies (should only be needed if CMake cannot
+## automatically detect the rights version or path.)
+##
+
+# Set URL to GMT Data server [auto]:
+#set (GMT_DATA_SERVER "data_server_url")
+
+# Set path to GSHHG Shoreline Database [auto]:
+set (GSHHG_ROOT "$ENV{GSHHG_ROOT}")
+
+# Copy GSHHG files to ${GMT_DATADIR}/coast [FALSE]:
+#set (COPY_GSHHG TRUE)
+
+# Set path to DCW Digital Chart of the World for GMT [auto]:
+#set (DCW_ROOT "dcw-gmt_path")
+
+# Copy DCW files to ${GMT_DATADIR}/dcw [FALSE]:
+#set (COPY_DCW TRUE)
+
+# Copy GDAL's 'data' directory to ${GMT_DATADIR}/GDAL_DATA [FALSE]:
+#set (GDAL_DATA_PATH C:/programs/compa_libs/gdal_GIT/compileds/VC14_64/data)
+
+# Copy PROJ4's 'share' directory to ${GMT_DATADIR}/GDAL_DATA [FALSE]:
+#set (PROJ_DATA_PATH C:/programs/compa_libs/proj5_GIT/compileds/VC14_64/share/proj)
+
+# FOR WINDOWS ONLY
+# Set path to location of Ghostscript binaries (optional install)
+#set (GHOST_DATA_PATH C:/programs/compa_libs/ghostscript/bin)
+
+# FOR WINDOWS ONLY
+# Set path to location where the gmtmex is located.
+#set (GMTMEX_PATH "C:/progs_cygw/GMTdev/gmtmex/${GMTver}")
+
+# Set location of NetCDF (can be root directory, path to header file or path
+# to nc-config) [auto]:
+set (NETCDF_ROOT "$ENV{NETCDF_ROOT}")
+
+# Set location of GDAL (can be root directory, path to header file or path to
+# gdal-config) [auto]:
+set (GDAL_ROOT "$ENV{GDAL_ROOT}")
+
+# Set location of PCRE (can be root directory, path to header file or path to
+# pcre-config) [auto]:
+#set (PCRE_ROOT "pcre_install_prefix")
+# Alternatively, set location of PCRE2 (can be root directory, path to header file or path to
+# pcre2-config) [auto]:
+#set (PCRE2_ROOT "pcre2_install_prefix")
+
+# Set location of single precision FFTW (can be root directory or path to
+# header file) [auto]:
+#set (FFTW3_ROOT "fftw_install_prefix")
+
+# Set location of ZLIB (can be root directory or path to header file) [auto]:
+set (ZLIB_ROOT "$ENV{ZLIB_ROOT}")
+
+# Set location of CURL (can be root directory or path to header file) [auto]:
+#set (CURL_ROOT "curl_install_prefix")
+
+# Set location of GLIB component gthread [auto].  This is an optional (and
+# experimental) option which you need to enable:
+#set (GMT_USE_THREADS TRUE)
+# If pkg-config is not installed (e.g. on Windows) you need to specify these:
+#set (GLIB_INCLUDE_DIR c:/path/to/glib-dev/include/glib-2.0)
+#set (GLIB_LIBRARIES c:/path/to/glib-dev/lib/glib-2.0.lib)
+
+# Set LAPACK location. Use this when want to link with LAPACK and it's not found automatically
+set (LAPACK_LIBRARY "-L$ENV{LAPACK_ROOT} -lflapack -L/usr/lib/x86_64-linux-gnu -lgfortran")
+set (BLAS_LIBRARY "-L$ENV{BLAS_ROOT} -lfblas -L/usr/lib/x86_64-linux-gnu -lgfortran")
+
+##
+## Section 3: GMT features
+##
+
+# Enforce GPL or LGPL conformity. Use this to disable routines that cannot be
+# redistributed under the terms of the GPL or LGPL such as Shewchuk's
+# triangulation (valid values are GPL, LGPL and off) [off]:
+#set (LICENSE_RESTRICTED GPL)
+
+# Allow building of OpenMP if compiler supports it
+# set (GMT_ENABLE_OPENMP TRUE)
+
+# Configure default units (possible values are SI and US) [SI]:
+#set (UNITS "US")
+
+# Enable building of shared libraries [TRUE] (disable to use static libraries;
+# not recommended; on non-x86 architectures uncomment the next option as well):
+#set (BUILD_SHARED_LIBS FALSE)
+
+# Create position independent code on all targets [auto] (needed for static
+# build on non-x86):
+#set (CMAKE_POSITION_INDEPENDENT_CODE TRUE)
+
+# Build GMT shared lib with supplemental modules [TRUE]:
+#set (BUILD_SUPPLEMENTS FALSE)
+
+# Build/Install GMT Developer include files [TRUE]:
+# This installs the extra include files and configured files needed by 3rd-party
+# developers.  Until we build a separate gmt-devel we include them in the main
+# Distribution.
+#set (BUILD_DEVELOPER FALSE)
+
+##
+## Section 4: Advanced tweaking
+##
+
+#
+# Testing and development
+#
+
+# Enable running examples/tests with "ctest" or "make check" (out-of-source).
+# Need to set either DO_EXAMPLES, DO_TESTS or both and uncomment the following
+# line.
+#enable_testing()
+#set (DO_EXAMPLES TRUE)
+#set (DO_TESTS TRUE)
+#set (DO_ANIMATIONS TRUE)
+# Number of parallel test jobs with "make check":
+#set (N_TEST_JOBS 4)
+
+# Enable this option to run GMT programs from within ${GMT_BINARY_DIR} without
+# installing or setting GMT_SHAREDIR and GMT_USERDIR first. This is required
+# for testing [OFF]:
+#set (SUPPORT_EXEC_IN_BINARY_DIR ON)
+
+# List extra sub-dirs of 'src' with a CMakeList.txt to build non-module codes
+# that link against the full gmt libs (not just the API; for building codes
+# that only need the GMT API, see the gmt-custom project).
+#set (EXTRA_BUILD_DIRS apidemo)
+# Uncomment the following line to enable running low-level C tests of the API
+#set (DO_API_TESTS ON)
+
+# Directory in which to install the release sources per default
+# [${GMT_BINARY_DIR}/gmt-${GMT_PACKAGE_VERSION}]:
+#set (GMT_RELEASE_PREFIX "release-src-prefix")
+
+# If set to false, image conversion from PS images to PNG and PDF does
+# not depend on the gmt binary target. Note: "make gmt" is then required
+# before docs_depends [TRUE].
+#set (GMT_DOCS_DEPEND_ON_GMT FALSE)
+
+#
+# Debugging
+#
+
+# Set build type can be: empty, Debug, Release, RelWithDebInfo or MinSizeRel
+# [Release]:
+#set (CMAKE_BUILD_TYPE Debug)
+
+# Extra debugging for developers:
+#if ( CMAKE_GENERATOR STREQUAL "Xcode" )
+##	So Xcode can find the supplemental plug-ins during debug sessions
+#	add_definitions(-DXCODER)
+#   add_definitions(-DDEBUG_MODERN)			# To set PPID == 0 during Xcode test
+#	message("Add Xcode definition for GMT")
+#endif()
+#add_definitions(-DDEBUG)
+#add_definitions(-DMEMDEBUG) # Turn on memory tracking see gmt_support.c for extra info
+#set (CMAKE_C_FLAGS "-Wall -Wdeclaration-after-statement") # recommended even for release build
+#set (CMAKE_C_FLAGS "-Wextra ${CMAKE_C_FLAGS}")            # extra warnings
+#set (CMAKE_C_FLAGS_DEBUG -ggdb3)                          # gdb debugging symbols
+#set (CMAKE_LINK_DEPENDS_DEBUG_MODE TRUE)                  # debug link dependencies
+if (HAVE_OPENMP)
+	set (CMAKE_C_FLAGS_RELEASE "-ggdb3 -O2 -Wuninitialized -flax-vector-conversions")  # check uninitialized variables
+else (HAVE_OPENMP)
+	set (CMAKE_C_FLAGS_RELEASE "-ggdb3 -O2 -Wuninitialized")  # check uninitialized variables
+endif (HAVE_OPENMP)
+
+#
+# System specific tweaks
+#
+
+# This is for GCC on Solaris to avoid "relocations remain against allocatable
+# but non-writable sections" problems:
+#set (USER_GMTLIB_LINK_FLAGS -mimpure-text)
+
+# This may be needed to enable strdup and extended math functions with GCC and
+# Suncc on Solaris:
+#set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__EXTENSIONS__")
+
+# Do not warn when building with Windows SDK or Visual Studio Express:
+#set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)
+
+# Manually select runtime library when compiling with Windows SDK or Visual
+# Studio Express:
+#set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS c:/Windows/System32/msvcr100.dll)
+
+# If your NetCDF library is static (not recommended, applies to Windows only)
+#set (NETCDF_STATIC TRUE)
+
+# If want to rename the DLLs to something else than the default (e.g. to
+# append the bitness - Windows only)
+# WARNING: if using this option it is mandatory that the suffix starts with an underscore.
+#if (WIN32)
+# set (BITAGE 32)
+# # Detect if we are building a 32 or 64 bits version
+# if (CMAKE_SIZEOF_VOID_P EQUAL 8)
+#   set (BITAGE 64)
+# endif ()
+# set (GMT_DLL_RENAME gmt_w${BITAGE})
+# set (PSL_DLL_RENAME psl_w${BITAGE})
+#endif(WIN32)
+
+# On Windows Visual C 2012 needs _ALLOW_KEYWORD_MACROS to build
+#if(MSVC11)
+#  add_definitions(/D_ALLOW_KEYWORD_MACROS)
+#endif(MSVC11)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/mac/cmake/ConfigUser.cmake
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/mac/cmake/ConfigUser.cmake	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/mac/cmake/ConfigUser.cmake	(revision 27955)
@@ -0,0 +1,308 @@
+#
+#
+# Copyright (c) 1991-2019 by the GMT Team (https://www.generic-mapping-tools.org/team.html)
+# See LICENSE.TXT file for copying and redistribution conditions.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by the
+# Free Software Foundation; version 3 or 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 Lesser General Public License
+# for more details.
+#
+# Contact info: www.generic-mapping-tools.org
+# ----------------------------------------------------------------------------
+
+# Use this file to override variables in 'ConfigDefault.cmake' on a per-user
+# basis.  First copy 'ConfigUserTemplate.cmake' to 'ConfigUser.cmake', then
+# edit 'ConfigUser.cmake'.  'ConfigUser.cmake' is not version controlled
+# (currently listed in .gitignore).
+#
+# Note: CMake considers an empty string, "FALSE", "OFF", "NO", or any string
+# ending in "-NOTFOUND" to be false (this happens to be case-insensitive, so
+# "False", "off", "no", and "something-NotFound" are all false).  Other values
+# are true.  Thus it does not matter whether you use TRUE and FALSE, ON and
+# OFF, or YES and NO for your booleans.
+
+##
+## Section 1: Installation paths
+##
+
+# ============================================================================
+# Basic setup begins here.  All settings are optional.  In most cases, setting
+# CMAKE_INSTALL_PREFIX should be all you need to do in order to build GMT with
+# reasonable defaults enabled.  Note: If you need to specify directory names
+# with spaces (e.g., on Windows) then you must put them in quotes.
+# ============================================================================
+
+# Installation path (usually defaults to /usr/local) [auto]:
+set (CMAKE_INSTALL_PREFIX "$ENV{PREFIX}")
+
+# Set install name suffix used for directories and gmt executables
+# [undefined]:
+#set (GMT_INSTALL_NAME_SUFFIX "suffix")
+
+# Install into traditional directory structure. Disable to install a
+# distribution type directory structure (doc and share separated) [on]:
+#set (GMT_INSTALL_TRADITIONAL_FOLDERNAMES OFF)
+
+# Install convenience links for GMT modules. Disable to install only the main
+# gmt program and access modules as "gmt modulename options" [TRUE]:
+#set (GMT_INSTALL_MODULE_LINKS FALSE)
+
+# Make executables relocatable on supported platforms (relative RPATH) [FALSE]:
+set (GMT_INSTALL_RELOCATABLE TRUE)
+
+# Exclude optional GDAL, PCRE, PCRE2, FFTW3, LAPACK, BLAS, ZLIB dependencies even if you have them installed [FALSE]
+#set (GMT_EXCLUDE_GDAL TRUE)
+#set (GMT_EXCLUDE_PCRE TRUE)
+#set (GMT_EXCLUDE_PCRE2 TRUE)
+#set (GMT_EXCLUDE_FFTW3 TRUE)
+#set (GMT_EXCLUDE_LAPACK TRUE)
+#set (GMT_EXCLUDE_BLAS TRUE)
+#set (GMT_EXCLUDE_ZLIB TRUE)
+
+# ============================================================================
+# Advanced configuration begins here.  Usually it is not necessary to edit any
+# settings below.  You should know what you are doing if you do though.  Note:
+# installation paths are relative to ${CMAKE_INSTALL_PREFIX} unless absolute
+# path is given.
+# ============================================================================
+
+# Set binary installation path [bin]:
+#set (GMT_BINDIR "bin")
+
+# Set library installation path [lib or lib64]:
+#set (GMT_LIBDIR "lib")
+
+# Set include installation path [include/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_INCLUDEDIR "include/gmt")
+
+# Set share installation path [share or share/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_DATADIR "share/gmt")
+
+# Set doc installation path [share/doc or
+# share/doc/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_DOCDIR "share/doc/gmt")
+
+# Set manpage installation path [share/man or
+# share/doc/gmt${GMT_INSTALL_NAME_SUFFIX}/man]:
+#set (GMT_MANDIR "share/doc/gmt/man")
+
+# Install documentation files from this external location instead of creating
+# new HTML documents from scratch [${GMT_SOURCE_DIR}/doc_release]:
+#set (GMT_INSTALL_EXTERNAL_DOC OFF)
+
+# Install manual pages from this external location instead of creating the
+# manpages from scratch [${GMT_SOURCE_DIR}/man_release]:
+#set (GMT_INSTALL_EXTERNAL_MAN OFF)
+
+##
+## Section 2: Build dependencies (should only be needed if CMake cannot
+## automatically detect the rights version or path.)
+##
+
+# Set URL to GMT Data server [auto]:
+#set (GMT_DATA_SERVER "data_server_url")
+
+# Set path to GSHHG Shoreline Database [auto]:
+set (GSHHG_ROOT "$ENV{GSHHG_ROOT}")
+
+# Copy GSHHG files to ${GMT_DATADIR}/coast [FALSE]:
+#set (COPY_GSHHG TRUE)
+
+# Set path to DCW Digital Chart of the World for GMT [auto]:
+#set (DCW_ROOT "dcw-gmt_path")
+
+# Copy DCW files to ${GMT_DATADIR}/dcw [FALSE]:
+#set (COPY_DCW TRUE)
+
+# Copy GDAL's 'data' directory to ${GMT_DATADIR}/GDAL_DATA [FALSE]:
+#set (GDAL_DATA_PATH C:/programs/compa_libs/gdal_GIT/compileds/VC14_64/data)
+
+# Copy PROJ4's 'share' directory to ${GMT_DATADIR}/GDAL_DATA [FALSE]:
+#set (PROJ_DATA_PATH C:/programs/compa_libs/proj5_GIT/compileds/VC14_64/share/proj)
+
+# FOR WINDOWS ONLY
+# Set path to location of Ghostscript binaries (optional install)
+#set (GHOST_DATA_PATH C:/programs/compa_libs/ghostscript/bin)
+
+# FOR WINDOWS ONLY
+# Set path to location where the gmtmex is located.
+#set (GMTMEX_PATH "C:/progs_cygw/GMTdev/gmtmex/${GMTver}")
+
+# Set location of NetCDF (can be root directory, path to header file or path
+# to nc-config) [auto]:
+set (NETCDF_ROOT "$ENV{NETCDF_ROOT}")
+
+# Set location of GDAL (can be root directory, path to header file or path to
+# gdal-config) [auto]:
+set (GDAL_ROOT "$ENV{GDAL_ROOT}")
+
+# Set location of PCRE (can be root directory, path to header file or path to
+# pcre-config) [auto]:
+#set (PCRE_ROOT "pcre_install_prefix")
+# Alternatively, set location of PCRE2 (can be root directory, path to header file or path to
+# pcre2-config) [auto]:
+#set (PCRE2_ROOT "pcre2_install_prefix")
+
+# Set location of single precision FFTW (can be root directory or path to
+# header file) [auto]:
+#set (FFTW3_ROOT "fftw_install_prefix")
+
+# Set location of ZLIB (can be root directory or path to header file) [auto]:
+set (ZLIB_ROOT "$ENV{ZLIB_ROOT}")
+
+# Set location of CURL (can be root directory or path to header file) [auto]:
+#set (CURL_ROOT "curl_install_prefix")
+
+# Set location of GLIB component gthread [auto].  This is an optional (and
+# experimental) option which you need to enable:
+#set (GMT_USE_THREADS TRUE)
+# If pkg-config is not installed (e.g. on Windows) you need to specify these:
+#set (GLIB_INCLUDE_DIR c:/path/to/glib-dev/include/glib-2.0)
+#set (GLIB_LIBRARIES c:/path/to/glib-dev/lib/glib-2.0.lib)
+
+# Set LAPACK location. Use this when want to link with LAPACK and it's not found automatically
+set (LAPACK_LIBRARY "-L$ENV{LAPACK_ROOT} -lflapack")
+set (BLAS_LIBRARY "-L$ENV{BLAS_ROOT} -lfblas")
+
+##
+## Section 3: GMT features
+##
+
+# Enforce GPL or LGPL conformity. Use this to disable routines that cannot be
+# redistributed under the terms of the GPL or LGPL such as Shewchuk's
+# triangulation (valid values are GPL, LGPL and off) [off]:
+#set (LICENSE_RESTRICTED GPL)
+
+# Allow building of OpenMP if compiler supports it
+# set (GMT_ENABLE_OPENMP TRUE)
+
+# Configure default units (possible values are SI and US) [SI]:
+#set (UNITS "US")
+
+# Enable building of shared libraries [TRUE] (disable to use static libraries;
+# not recommended; on non-x86 architectures uncomment the next option as well):
+#set (BUILD_SHARED_LIBS FALSE)
+
+# Create position independent code on all targets [auto] (needed for static
+# build on non-x86):
+#set (CMAKE_POSITION_INDEPENDENT_CODE TRUE)
+
+# Build GMT shared lib with supplemental modules [TRUE]:
+#set (BUILD_SUPPLEMENTS FALSE)
+
+# Build/Install GMT Developer include files [TRUE]:
+# This installs the extra include files and configured files needed by 3rd-party
+# developers.  Until we build a separate gmt-devel we include them in the main
+# Distribution.
+#set (BUILD_DEVELOPER FALSE)
+
+##
+## Section 4: Advanced tweaking
+##
+
+#
+# Testing and development
+#
+
+# Enable running examples/tests with "ctest" or "make check" (out-of-source).
+# Need to set either DO_EXAMPLES, DO_TESTS or both and uncomment the following
+# line.
+#enable_testing()
+#set (DO_EXAMPLES TRUE)
+#set (DO_TESTS TRUE)
+#set (DO_ANIMATIONS TRUE)
+# Number of parallel test jobs with "make check":
+#set (N_TEST_JOBS 4)
+
+# Enable this option to run GMT programs from within ${GMT_BINARY_DIR} without
+# installing or setting GMT_SHAREDIR and GMT_USERDIR first. This is required
+# for testing [OFF]:
+#set (SUPPORT_EXEC_IN_BINARY_DIR ON)
+
+# List extra sub-dirs of 'src' with a CMakeList.txt to build non-module codes
+# that link against the full gmt libs (not just the API; for building codes
+# that only need the GMT API, see the gmt-custom project).
+#set (EXTRA_BUILD_DIRS apidemo)
+# Uncomment the following line to enable running low-level C tests of the API
+#set (DO_API_TESTS ON)
+
+# Directory in which to install the release sources per default
+# [${GMT_BINARY_DIR}/gmt-${GMT_PACKAGE_VERSION}]:
+#set (GMT_RELEASE_PREFIX "release-src-prefix")
+
+# If set to false, image conversion from PS images to PNG and PDF does
+# not depend on the gmt binary target. Note: "make gmt" is then required
+# before docs_depends [TRUE].
+#set (GMT_DOCS_DEPEND_ON_GMT FALSE)
+
+#
+# Debugging
+#
+
+# Set build type can be: empty, Debug, Release, RelWithDebInfo or MinSizeRel
+# [Release]:
+#set (CMAKE_BUILD_TYPE Debug)
+
+# Extra debugging for developers:
+#if ( CMAKE_GENERATOR STREQUAL "Xcode" )
+##	So Xcode can find the supplemental plug-ins during debug sessions
+#	add_definitions(-DXCODER)
+#   add_definitions(-DDEBUG_MODERN)			# To set PPID == 0 during Xcode test
+#	message("Add Xcode definition for GMT")
+#endif()
+#add_definitions(-DDEBUG)
+#add_definitions(-DMEMDEBUG) # Turn on memory tracking see gmt_support.c for extra info
+#set (CMAKE_C_FLAGS "-Wall -Wdeclaration-after-statement") # recommended even for release build
+#set (CMAKE_C_FLAGS "-Wextra ${CMAKE_C_FLAGS}")            # extra warnings
+#set (CMAKE_C_FLAGS_DEBUG -ggdb3)                          # gdb debugging symbols
+#set (CMAKE_LINK_DEPENDS_DEBUG_MODE TRUE)                  # debug link dependencies
+if (HAVE_OPENMP)
+	set (CMAKE_C_FLAGS_RELEASE "-ggdb3 -O2 -Wuninitialized -flax-vector-conversions")  # check uninitialized variables
+else (HAVE_OPENMP)
+	set (CMAKE_C_FLAGS_RELEASE "-ggdb3 -O2 -Wuninitialized")  # check uninitialized variables
+endif (HAVE_OPENMP)
+
+#
+# System specific tweaks
+#
+
+# This is for GCC on Solaris to avoid "relocations remain against allocatable
+# but non-writable sections" problems:
+#set (USER_GMTLIB_LINK_FLAGS -mimpure-text)
+
+# This may be needed to enable strdup and extended math functions with GCC and
+# Suncc on Solaris:
+#set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__EXTENSIONS__")
+
+# Do not warn when building with Windows SDK or Visual Studio Express:
+#set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)
+
+# Manually select runtime library when compiling with Windows SDK or Visual
+# Studio Express:
+#set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS c:/Windows/System32/msvcr100.dll)
+
+# If your NetCDF library is static (not recommended, applies to Windows only)
+#set (NETCDF_STATIC TRUE)
+
+# If want to rename the DLLs to something else than the default (e.g. to
+# append the bitness - Windows only)
+# WARNING: if using this option it is mandatory that the suffix starts with an underscore.
+#if (WIN32)
+# set (BITAGE 32)
+# # Detect if we are building a 32 or 64 bits version
+# if (CMAKE_SIZEOF_VOID_P EQUAL 8)
+#   set (BITAGE 64)
+# endif ()
+# set (GMT_DLL_RENAME gmt_w${BITAGE})
+# set (PSL_DLL_RENAME psl_w${BITAGE})
+#endif(WIN32)
+
+# On Windows Visual C 2012 needs _ALLOW_KEYWORD_MACROS to build
+#if(MSVC11)
+#  add_definitions(/D_ALLOW_KEYWORD_MACROS)
+#endif(MSVC11)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/mac/cmake/modules/ConfigCMake.cmake
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/mac/cmake/modules/ConfigCMake.cmake	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/mac/cmake/modules/ConfigCMake.cmake	(revision 27955)
@@ -0,0 +1,250 @@
+#
+#
+# Useful CMake variables.
+#
+# There are five configuration files:
+#
+#   1) "ConfigDefault.cmake" - is version controlled and used to add new default
+#      variables and set defaults for everyone.
+#   2) "ConfigUser.cmake" in the source tree - is not version controlled
+#      (currently listed in .gitignore) and used to override basic default settings on
+#      a per-user basis.
+#   3) "ConfigUser.cmake" in the build tree - is used to override
+#      "ConfigUser.cmake" in the source tree.
+#   4) "ConfigUserAdvanced.cmake" in the source tree - is not version controlled
+#      (currently listed in .gitignore) and used to override advanced default settings on
+#      a per-user basis.
+#   5) "ConfigUserAdvanced.cmake" in the build tree - is used to override
+#      "ConfigUserAdvanced.cmake" in the source tree.
+#
+# NOTE: If you want to change CMake behaviour just for yourself,
+#       copy "ConfigUserTemplate.cmake" to "ConfigUser.cmake" and then edit
+#       "ConfigUser.cmake" for basic settings. For advanced settings,
+#       copy "ConfigUserAdvancedTemplate.cmake" to "ConfigUserAdvanced.cmake" and edit it.
+#       DO NOT EDIT "ConfigDefault.cmake" or the CMake template files.
+#
+include ("${CMAKE_SOURCE_DIR}/cmake/ConfigDefault.cmake")
+
+# A "ConfigUser.cmake" in the source tree overrides the advanced defaults.
+if (EXISTS "${CMAKE_SOURCE_DIR}/cmake/ConfigUser.cmake")
+	include ("${CMAKE_SOURCE_DIR}/cmake/ConfigUser.cmake")
+endif (EXISTS "${CMAKE_SOURCE_DIR}/cmake/ConfigUser.cmake")
+
+# If you've got a 'ConfigUser.cmake' in the build tree then that overrides the
+# one in the source tree.
+if (EXISTS "${CMAKE_BINARY_DIR}/cmake/ConfigUser.cmake")
+	include ("${CMAKE_BINARY_DIR}/cmake/ConfigUser.cmake")
+endif (EXISTS "${CMAKE_BINARY_DIR}/cmake/ConfigUser.cmake")
+
+# A "ConfigUserAdvanced.cmake" in the source tree overrides the advanced defaults.
+if (EXISTS "${CMAKE_SOURCE_DIR}/cmake/ConfigUserAdvanced.cmake")
+	include ("${CMAKE_SOURCE_DIR}/cmake/ConfigUserAdvanced.cmake")
+endif (EXISTS "${CMAKE_SOURCE_DIR}/cmake/ConfigUserAdvanced.cmake")
+
+# If you've got a 'ConfigUserAdvanced.cmake' in the build tree then that overrides the
+# one in the source tree.
+if (EXISTS "${CMAKE_BINARY_DIR}/cmake/ConfigUserAdvanced.cmake")
+	include ("${CMAKE_BINARY_DIR}/cmake/ConfigUserAdvanced.cmake")
+endif (EXISTS "${CMAKE_BINARY_DIR}/cmake/ConfigUserAdvanced.cmake")
+
+###########################################################
+# Do any needed processing of the configuration variables #
+###########################################################
+
+# Set default build type to 'Release'
+if (NOT CMAKE_BUILD_TYPE)
+	set (CMAKE_BUILD_TYPE Release)
+endif (NOT CMAKE_BUILD_TYPE)
+
+# Here we change it to add the git commit hash for non-public releases
+set (GMT_PACKAGE_VERSION_WITH_GIT_REVISION ${GMT_PACKAGE_VERSION})
+
+# Check if it's a git repository or not
+if (EXISTS ${GMT_SOURCE_DIR}/.git)
+	set (HAVE_GIT_VERSION TRUE)
+endif (EXISTS ${GMT_SOURCE_DIR}/.git)
+
+# Add the last git commit hash and date to the package version if this is a non-public release.
+# A non-public release has a FALSE 'GMT_PUBLIC_RELEASE' variable in 'ConfigDefault.cmake'.
+if (GIT_FOUND AND HAVE_GIT_VERSION AND NOT GMT_PUBLIC_RELEASE)
+	# Get the last git commit hash
+	execute_process (
+		COMMAND ${GIT_EXECUTABLE} describe --abbrev=7 --always --dirty
+		WORKING_DIRECTORY ${GMT_SOURCE_DIR}
+		RESULT_VARIABLE GIT_RETURN_CODE
+		OUTPUT_VARIABLE GIT_COMMIT_HASH
+		OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+	if (GIT_RETURN_CODE)
+		message (STATUS "Unable to determine git commit hash for non-public release - ignoring.")
+	else (GIT_RETURN_CODE)
+		if (GIT_COMMIT_HASH)
+			# For non-public release, add the last git commit hash and date
+			execute_process (
+				COMMAND ${GIT_EXECUTABLE} log -1 --date=short --pretty=format:%cd
+				WORKING_DIRECTORY ${GMT_SOURCE_DIR}
+				RESULT_VARIABLE GIT_DATE_RETURN_CODE
+				OUTPUT_VARIABLE GIT_COMMIT_DATE
+				OUTPUT_STRIP_TRAILING_WHITESPACE)
+			string(REPLACE "-" "." GIT_COMMIT_DATE "${GIT_COMMIT_DATE}")
+			set (GMT_PACKAGE_VERSION_WITH_GIT_REVISION "${GMT_PACKAGE_VERSION}_${GIT_COMMIT_HASH}_${GIT_COMMIT_DATE}")
+		endif (GIT_COMMIT_HASH)
+	endif (GIT_RETURN_CODE)
+endif (GIT_FOUND AND HAVE_GIT_VERSION AND NOT GMT_PUBLIC_RELEASE)
+
+# apply license restrictions
+if (LICENSE_RESTRICTED) # on
+	if (LICENSE_RESTRICTED STREQUAL GPL)
+		# restrict to GPL
+	elseif (LICENSE_RESTRICTED STREQUAL LGPL)
+		# restrict to LGPL
+	else (LICENSE_RESTRICTED STREQUAL GPL)
+		# unknown license
+		message (WARNING "unknown license: ${LICENSE_RESTRICTED}")
+	endif (LICENSE_RESTRICTED STREQUAL GPL)
+	# restrictions that apply to any of the above licenses
+else (LICENSE_RESTRICTED) # off
+	# no restrictions at all
+endif (LICENSE_RESTRICTED)
+
+# reset list of extra license files
+set (GMT_EXTRA_LICENSE_FILES)
+
+# location of GNU license files
+set (COPYING_GPL ${GMT_SOURCE_DIR}/COPYINGv3)
+set (COPYING_LGPL ${GMT_SOURCE_DIR}/COPYING.LESSERv3)
+
+# GMT paths used in the code
+if (NOT GMT_DATADIR)
+	# do not reset user setting
+	if (GMT_INSTALL_TRADITIONAL_FOLDERNAMES)
+		set (GMT_DATADIR "share")
+	else(GMT_INSTALL_TRADITIONAL_FOLDERNAMES)
+		set (GMT_DATADIR "share/gmt${GMT_INSTALL_NAME_SUFFIX}")
+	endif(GMT_INSTALL_TRADITIONAL_FOLDERNAMES)
+endif (NOT GMT_DATADIR)
+
+# Install path GMT_DOCDIR
+if (NOT GMT_DOCDIR)
+	# do not reset user setting
+	if (GMT_INSTALL_TRADITIONAL_FOLDERNAMES)
+		set (GMT_DOCDIR "${GMT_DATADIR}/doc")
+	else(GMT_INSTALL_TRADITIONAL_FOLDERNAMES)
+		set (GMT_DOCDIR "share/doc/gmt${GMT_INSTALL_NAME_SUFFIX}")
+	endif(GMT_INSTALL_TRADITIONAL_FOLDERNAMES)
+endif (NOT GMT_DOCDIR)
+
+# Install path GMT_MANDIR
+if (NOT GMT_MANDIR)
+	# do not reset user setting
+	if (GMT_INSTALL_TRADITIONAL_FOLDERNAMES)
+		set (GMT_MANDIR "${GMT_DATADIR}/man")
+	else(GMT_INSTALL_TRADITIONAL_FOLDERNAMES)
+		set (GMT_MANDIR "${GMT_DOCDIR}/man")
+	endif(GMT_INSTALL_TRADITIONAL_FOLDERNAMES)
+endif (NOT GMT_MANDIR)
+
+# Install path for GMT binaries, headers and libraries
+include (GNUInstallDirs) # defines CMAKE_INSTALL_LIBDIR (lib/lib64)
+if (NOT GMT_LIBDIR)
+	set (GMT_LIBDIR ${CMAKE_INSTALL_LIBDIR})
+endif(NOT GMT_LIBDIR)
+
+if (NOT GMT_BINDIR)
+	set (GMT_BINDIR bin)
+endif(NOT GMT_BINDIR)
+
+if (NOT GMT_INCLUDEDIR)
+	set (GMT_INCLUDEDIR include/gmt${GMT_INSTALL_NAME_SUFFIX})
+endif(NOT GMT_INCLUDEDIR)
+
+if (GMT_DATA_URL) # Backwards compatibility with old ConfigUser.cmake files
+	message (WARNING "CMake variable GMT_DATA_URL is deprecated and will be removed in the future releases. Use GMT_DATA_SERVER instead.")
+	set (GMT_DATA_SERVER ${GMT_DATA_URL})
+endif (GMT_DATA_URL)
+
+# use, i.e. don't skip the full RPATH for the build tree
+set (CMAKE_SKIP_BUILD_RPATH FALSE)
+
+# when building, don't use the install RPATH already
+# (but later on when installing)
+set (CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
+
+# set the RPATH to be used when installing
+if (NOT DEFINED GMT_INSTALL_RELOCATABLE)
+	set (GMT_INSTALL_RELOCATABLE FALSE)
+endif (NOT DEFINED GMT_INSTALL_RELOCATABLE)
+if (GMT_INSTALL_RELOCATABLE)
+	# make executables relocatable on supported platforms (relative RPATH)
+	if (UNIX AND NOT CYGWIN)
+		# find relative libdir from executable dir
+		file (RELATIVE_PATH _rpath /${GMT_BINDIR} /${GMT_LIBDIR})
+		# remove trailing /
+		string (REGEX REPLACE "/$" "" _rpath "${_rpath}")
+		if (APPLE)
+			# relative RPATH on osx
+			# CMP0042: CMake 3.0: MACOSX_RPATH is enabled by default
+			set (CMAKE_MACOSX_RPATH ON)
+			set (CMAKE_INSTALL_NAME_DIR @rpath)
+			set (CMAKE_INSTALL_RPATH "@rpath;@executable_path/${_rpath};${LIBGFORTRAN_ROOT}")
+		else (APPLE)
+			# relative RPATH on Linux, Solaris, etc.
+			set (CMAKE_INSTALL_RPATH "\$ORIGIN/${_rpath}")
+		endif (APPLE)
+	endif (UNIX AND NOT CYGWIN)
+else (GMT_INSTALL_RELOCATABLE)
+	# set absolute RPATH
+	if (APPLE)
+		# CMP0042: CMake 3.0: MACOSX_RPATH is enabled by default
+		set (CMAKE_MACOSX_RPATH OFF)
+		set (CMAKE_INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/${GMT_LIBDIR}")
+	else (APPLE)
+		# the RPATH to be used when installing, but only if it's not a
+		# system directory
+		list (FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
+			"${CMAKE_INSTALL_PREFIX}/${GMT_LIBDIR}" isSystemDir)
+		if ("${isSystemDir}" STREQUAL "-1")
+			set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${GMT_LIBDIR}")
+		endif ("${isSystemDir}" STREQUAL "-1")
+	endif (APPLE)
+endif (GMT_INSTALL_RELOCATABLE)
+
+# add the automatically determined parts of the RPATH
+# which point to directories outside the build tree to the install RPATH
+set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+
+# When running examples/tests with CTest (out-of-source) we need support for
+# running GMT programs from within ${GMT_BINARY_DIR}:
+if (DO_EXAMPLES OR DO_TESTS AND NOT SUPPORT_EXEC_IN_BINARY_DIR)
+	message (WARNING "Enabling SUPPORT_EXEC_IN_BINARY_DIR (required for "
+	"testing). Please disable testing on release builds.")
+	set (SUPPORT_EXEC_IN_BINARY_DIR ON)
+endif (DO_EXAMPLES OR DO_TESTS AND NOT SUPPORT_EXEC_IN_BINARY_DIR)
+
+# Some tests are known to fail, and can be excluded from the test by adding
+# the comment "# GMT_KNOWN_FAILURE".
+if (NOT DEFINED GMT_ENABLE_KNOWN2FAIL)
+	set (GMT_ENABLE_KNOWN2FAIL ON)
+endif (NOT DEFINED GMT_ENABLE_KNOWN2FAIL)
+
+# Make GNU, Intel, Clang and AppleClang compilers default to C99
+if (CMAKE_C_COMPILER_ID MATCHES "(GNU|Intel|Clang)" AND NOT CMAKE_C_FLAGS MATCHES "-std=")
+	set (CMAKE_C_FLAGS "-std=gnu99 ${CMAKE_C_FLAGS}")
+endif ()
+
+# Suppress MSVC deprecation and security warnings
+if (MSVC)
+    set (CMAKE_C_FLAGS "/D_CRT_SECURE_NO_WARNINGS /D_CRT_SECURE_NO_DEPRECATE ${CMAKE_C_FLAGS}")
+    set (CMAKE_C_FLAGS "/D_CRT_NONSTDC_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE ${CMAKE_C_FLAGS}")
+endif (MSVC)
+
+# Handle the special developer option GMT_DOCS_DEPEND_ON_GMT
+# Normally this is ON.
+if (NOT DEFINED GMT_DOCS_DEPEND_ON_GMT)
+	set (GMT_DOCS_DEPEND_ON_GMT TRUE)
+endif (NOT DEFINED GMT_DOCS_DEPEND_ON_GMT)
+if (GMT_DOCS_DEPEND_ON_GMT)
+	add_custom_target (gmt_for_img_convert DEPENDS gmt)
+else (GMT_DOCS_DEPEND_ON_GMT)
+	add_custom_target (gmt_for_img_convert)
+endif (GMT_DOCS_DEPEND_ON_GMT)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/static/cmake/modules/FindGDAL.cmake
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/static/cmake/modules/FindGDAL.cmake	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/static/cmake/modules/FindGDAL.cmake	(revision 27955)
@@ -0,0 +1,189 @@
+#
+#
+# Locate gdal
+#
+# This module accepts the following environment variables:
+#
+#    GDAL_DIR or GDAL_ROOT - Specify the location of GDAL
+#
+# This module defines the following CMake variables:
+#
+#    GDAL_FOUND - True if libgdal is found
+#    GDAL_LIBRARY - A variable pointing to the GDAL library
+#    GDAL_INCLUDE_DIR - Where to find the headers
+
+#=============================================================================
+# Copyright 2007-2009 Kitware, Inc.
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See COPYING-CMAKE-SCRIPTS for more information.
+#=============================================================================
+# Note: this file is not an exact copy of the original file from Kitware.
+#       It has been modified for the needs of GMT.
+
+#
+# $GDAL_DIR is an environment variable that would
+# correspond to the ./configure --prefix=$GDAL_DIR
+# used in building gdal.
+#
+# Created by Eric Wing. I'm not a gdal user, but OpenSceneGraph uses it
+# for osgTerrain so I whipped this module together for completeness.
+# I actually don't know the conventions or where files are typically
+# placed in distros.
+# Any real gdal users are encouraged to correct this (but please don't
+# break the OS X framework stuff when doing so which is what usually seems
+# to happen).
+
+# This makes the presumption that you are include gdal.h like
+#
+#include "gdal.h"
+
+if (DEFINED GDAL_ROOT AND NOT GDAL_ROOT)
+	set (GDAL_LIBRARY "" CACHE INTERNAL "")
+	set (GDAL_INCLUDE_DIR "" CACHE INTERNAL "")
+	return()
+endif (DEFINED GDAL_ROOT AND NOT GDAL_ROOT)
+
+if (UNIX AND NOT GDAL_FOUND)
+	# Use gdal-config to obtain the library version (this should hopefully
+	# allow us to -lgdal1.x.y where x.y are correct version)
+	# For some reason, libgdal development packages do not contain
+	# libgdal.so...
+	find_program (GDAL_CONFIG gdal-config
+		HINTS
+		${GDAL_DIR}
+		${GDAL_ROOT}
+		$ENV{GDAL_DIR}
+		$ENV{GDAL_ROOT}
+		PATH_SUFFIXES bin
+		PATHS
+		/sw # Fink
+		/opt/local # DarwinPorts
+		/opt/csw # Blastwave
+		/opt
+		/usr/local
+	)
+
+	if (GDAL_CONFIG)
+		execute_process (COMMAND ${GDAL_CONFIG} --cflags
+			ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
+			OUTPUT_VARIABLE GDAL_CONFIG_CFLAGS)
+		if (GDAL_CONFIG_CFLAGS)
+			string (REGEX MATCHALL "-I[^ ]+" _gdal_dashI ${GDAL_CONFIG_CFLAGS})
+			string (REGEX REPLACE "-I" "" _gdal_includepath "${_gdal_dashI}")
+			string (REGEX REPLACE "-I[^ ]+" "" _gdal_cflags_other ${GDAL_CONFIG_CFLAGS})
+		endif (GDAL_CONFIG_CFLAGS)
+		execute_process (COMMAND ${GDAL_CONFIG} --libs
+			ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
+			OUTPUT_VARIABLE GDAL_CONFIG_LIBS)
+		if (GDAL_CONFIG_LIBS)
+			string (REGEX MATCHALL "-l[^ ]+" _gdal_dashl ${GDAL_CONFIG_LIBS})
+			string (REGEX REPLACE "-l" "" _gdal_lib "${_gdal_dashl}")
+			string (REGEX MATCHALL "-L[^ ]+" _gdal_dashL ${GDAL_CONFIG_LIBS})
+			string (REGEX REPLACE "-L" "" _gdal_libpath "${_gdal_dashL}")
+		endif (GDAL_CONFIG_LIBS)
+		execute_process (COMMAND ${GDAL_CONFIG} --dep-libs
+			ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
+			OUTPUT_VARIABLE GDAL_CONFIG_DEP_LIBS)
+		if (GDAL_CONFIG_DEP_LIBS)
+			string (REGEX MATCHALL "-l[^ ]+" _gdal_dashl ${GDAL_CONFIG_DEP_LIBS})
+			string (REGEX REPLACE "-l" "" _gdal_dep_lib "${_gdal_dashl}")
+			string (REGEX MATCHALL "-L[^ ]+" _gdal_dashL ${GDAL_CONFIG_DEP_LIBS})
+			string (REGEX REPLACE "-L" "" _gdal_dep_libpath "${_gdal_dashL}")
+		endif (GDAL_CONFIG_DEP_LIBS)
+	endif (GDAL_CONFIG)
+	if (_gdal_dep_lib)
+		list (REMOVE_DUPLICATES _gdal_dep_lib)
+		list (REMOVE_ITEM _gdal_dep_lib gdal)
+	endif (_gdal_dep_lib)
+endif (UNIX AND NOT GDAL_FOUND)
+
+find_path (GDAL_INCLUDE_DIR gdal.h
+	HINTS
+	${_gdal_includepath}
+	${GDAL_DIR}
+	${GDAL_ROOT}
+	$ENV{GDAL_DIR}
+	$ENV{GDAL_ROOT}
+	PATH_SUFFIXES
+	include/gdal
+	include/GDAL
+	include
+	PATHS
+	~/Library/Frameworks/gdal.framework/Headers
+	/Library/Frameworks/gdal.framework/Headers
+	/sw # Fink
+	/opt/local # DarwinPorts
+	/opt/csw # Blastwave
+	/opt
+	/usr/local
+)
+
+find_library (GDAL_LIBRARY
+	NAMES ${_gdal_lib} gdal gdal_i gdal1.5.0 gdal1.4.0 gdal1.3.2 GDAL
+	HINTS
+	${GDAL_DIR}
+	${GDAL_ROOT}
+	$ENV{GDAL_DIR}
+	$ENV{GDAL_ROOT}
+	${_gdal_libpath}
+	PATH_SUFFIXES lib
+	PATHS
+	~/Library/Frameworks/gdal.framework
+	/Library/Frameworks/gdal.framework
+	/sw # Fink
+	/opt/local # DarwinPorts
+	/opt/csw # Blastwave
+	/opt
+	/usr/local
+)
+
+# find all libs that gdal-config --dep-libs reports
+foreach (_extralib ${_gdal_dep_lib})
+	find_library (_found_lib_${_extralib}
+		NAMES ${_extralib}
+		HINTS
+		${HDF5_ROOT}
+		$ENV{HDF5_ROOT}
+		${NETCDF_ROOT}
+		$ENV{NETCDF_ROOT}
+		${ZLIB_ROOT}
+		$ENV{ZLIB_ROOT}
+		${CURL_ROOT}
+		$ENV{CURL_ROOT}
+		PATH_SUFFIXES lib
+		PATHS 
+		${_gdal_dep_libpath}
+	)
+	list (APPEND GDAL_LIBRARY ${_found_lib_${_extralib}})
+endforeach (_extralib)
+
+# append manually-supplied libs
+# find all manually-supplied libs
+if (GDAL_EXTRA_LIBS)
+	# Ensure -l is preceded by whitespace to not match
+	# '-l' in '-L/usr/lib/x86_64-linux-gnu/hdf5/serial'
+	string (REGEX MATCHALL "(^| )-l[^ ]+" _gdal_extra_lib_dashl ${GDAL_EXTRA_LIBS})
+	string (REGEX REPLACE "(^| )-l" "" _gdal_extra_lib "${_gdal_extra_lib_dashl}")
+	string (REGEX MATCHALL "(^| )-L[^ ]+" _gdal_extra_lib_dashL ${GDAL_EXTRA_LIBS})
+	string (REGEX REPLACE "(^| )-L" "" _gdal_extra_libpath "${_gdal_extra_lib_dashL}")
+	foreach (_extralib ${_gdal_extra_lib})
+		find_library (_found_lib_${_extralib}
+			NAMES ${_extralib}
+			PATH_SUFFIXES lib
+			PATHS 
+			${_gdal_extra_libpath}
+		)
+		list (APPEND GDAL_LIBRARY ${_found_lib_${_extralib}})
+	endforeach (_extralib)
+endif (GDAL_EXTRA_LIBS)
+
+include (FindPackageHandleStandardArgs)
+find_package_handle_standard_args (GDAL DEFAULT_MSG GDAL_LIBRARY GDAL_INCLUDE_DIR)
+
+set (GDAL_LIBRARIES ${GDAL_LIBRARY})
+set (GDAL_INCLUDE_DIRS ${GDAL_INCLUDE_DIR})
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/static/cmake/modules/FindGSHHG.cmake
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/static/cmake/modules/FindGSHHG.cmake	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/static/cmake/modules/FindGSHHG.cmake	(revision 27955)
@@ -0,0 +1,95 @@
+#
+#
+# Locate GSHHG shorelines
+#
+# This module accepts the following environment variables:
+#
+#  GSHHG_ROOT, GSHHGDIR - Specify the location of GSHHG
+#
+# This module defines the following CMake variables:
+#
+#    GSHHG_FOUND        - True if GSHHG is found
+#    GSHHG_PATH         - A variable pointing to the GSHHG path
+#    GSHHG_VERSION      - String of the GSHHG version found
+#    GSHHG_MIN_REQUIRED_VERSION_{MAJOR, MINOR, PATCH}
+#                       - Major, minor, and patch version required
+
+# get GSHHG path
+find_path (GSHHG_PATH
+	NAMES binned_GSHHS_c.nc
+	HINTS ${GSHHG_ROOT} $ENV{GSHHG_ROOT} $ENV{GSHHGDIR}
+	PATH_SUFFIXES
+	gmt-gshhg
+	gshhg
+	gshhg-gmt
+	gshhg-gmt-nc4
+	share/gmt/gshhg
+	share/gmt-gshhg
+	share/gshhg
+	share/gshhg-gmt
+	share/gshhg-gmt-nc4
+	PATHS
+	${CMAKE_SOURCE_DIR}
+	/sw # Fink
+	/opt/local # DarwinPorts
+	/opt/csw # Blastwave
+	/opt
+	/usr/local
+	DOC "Global Self-consistent Hierarchical High-resolution Geography"
+)
+
+# get GSHHG file
+if (GSHHG_PATH)
+	find_file (_GSHHG_FILE
+		NAMES binned_GSHHS_c.nc
+		HINTS ${GSHHG_PATH})
+endif (GSHHG_PATH)
+
+# The minimum required GSHHG version
+set (GSHHG_MIN_REQUIRED_VERSION_MAJOR 2 CACHE INTERNAL "GSHHG required version major")
+set (GSHHG_MIN_REQUIRED_VERSION_MINOR 2 CACHE INTERNAL "GSHHG required version minor")
+set (GSHHG_MIN_REQUIRED_VERSION_PATCH 0 CACHE INTERNAL "GSHHG required version patch")
+set (GSHHG_MIN_REQUIRED_VERSION
+	"${GSHHG_MIN_REQUIRED_VERSION_MAJOR}.${GSHHG_MIN_REQUIRED_VERSION_MINOR}.${GSHHG_MIN_REQUIRED_VERSION_PATCH}")
+
+# Temporary hack to bypass failure of compilation of code to find GSHHG
+set (GSHHG_FOUND TRUE)
+set (GSHHG_VERSION "2.3.4" CACHE INTERNAL "GSHHG version")
+
+# check GSHHG version
+if (_GSHHG_FILE AND NOT GSHHG_FOUND)
+	try_run (_EXIT_GSHHG_VERSION _COMPILED_GSHHG_VERSION
+		${CMAKE_BINARY_DIR}/CMakeTmp
+		${CMAKE_CURRENT_SOURCE_DIR}/gshhg_version.c
+		CMAKE_FLAGS
+		-DINCLUDE_DIRECTORIES=${NETCDF_INCLUDE_DIR}
+		-DLINK_LIBRARIES=${NETCDF_LIBRARIES}
+		COMPILE_DEFINITIONS -DSTANDALONE
+		COMPILE_OUTPUT_VARIABLE _GSHHG_VERSION_COMPILE_OUT
+		RUN_OUTPUT_VARIABLE _GSHHG_VERSION_STRING
+		ARGS \"${_GSHHG_FILE}\" ${GSHHG_MIN_REQUIRED_VERSION})
+
+	if (NOT _COMPILED_GSHHG_VERSION OR _EXIT_GSHHG_VERSION STREQUAL FAILED_TO_RUN)
+		message(FATAL_ERROR "Cannot determine GSHHG version:\n
+		${_GSHHG_VERSION_COMPILE_OUT}\n
+		${_GSHHG_VERSION_STRING}")
+	endif ()
+
+	# check version string
+	if (_COMPILED_GSHHG_VERSION)
+		# strip whitespace
+		string (STRIP ${_GSHHG_VERSION_STRING} GSHHG_VERSION)
+		if (_EXIT_GSHHG_VERSION EQUAL 0)
+			# found GSHHG of required version or higher
+			set (GSHHG_VERSION ${GSHHG_VERSION} CACHE INTERNAL "GSHHG version")
+		elseif (_EXIT_GSHHG_VERSION EQUAL -1)
+			# found GSHHG but version is too old
+			message (WARNING "GSHHG found but it is too old (${GSHHG_VERSION}). "
+				"Need at least ${GSHHG_MIN_REQUIRED_VERSION}.")
+		endif (_EXIT_GSHHG_VERSION EQUAL 0)
+	endif (_COMPILED_GSHHG_VERSION)
+endif (_GSHHG_FILE AND NOT GSHHG_FOUND)
+
+include (FindPackageHandleStandardArgs)
+find_package_handle_standard_args (GSHHG DEFAULT_MSG
+	GSHHG_PATH GSHHG_VERSION)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/static/cmake/modules/FindNETCDF.cmake
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/static/cmake/modules/FindNETCDF.cmake	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/static/cmake/modules/FindNETCDF.cmake	(revision 27955)
@@ -0,0 +1,181 @@
+#
+#
+# Locate netcdf
+#
+# This module accepts the following environment variables:
+#
+#    NETCDF_DIR or NETCDF_ROOT - Specify the location of NetCDF
+#
+# This module defines the following CMake variables:
+#
+#    NETCDF_FOUND - True if libnetcdf is found
+#    NETCDF_LIBRARY - A variable pointing to the NetCDF library
+#    NETCDF_INCLUDE_DIR - Where to find the headers
+#    NETCDF_INCLUDE_DIRS - Where to find the headers
+#    NETCDF_DEFINITIONS - Extra compiler flags
+
+#=============================================================================
+# Inspired by FindGDAL
+#
+# Distributed under the OSI-approved bsd license (the "License")
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See COPYING-CMAKE-SCRIPTS for more information.
+#=============================================================================
+
+# This makes the presumption that you are include netcdf.h like
+#
+#include "netcdf.h"
+
+if (UNIX AND NOT NETCDF_FOUND)
+	# Use nc-config to obtain the libraries
+	find_program (NETCDF_CONFIG nc-config
+		HINTS
+		${NETCDF_DIR}
+		${NETCDF_ROOT}
+		$ENV{NETCDF_DIR}
+		$ENV{NETCDF_ROOT}
+		PATH_SUFFIXES bin
+		PATHS
+		/sw # Fink
+		/opt/local # DarwinPorts
+		/opt/csw # Blastwave
+		/opt
+		/usr/local
+	)
+
+	if (NETCDF_CONFIG)
+		execute_process (COMMAND ${NETCDF_CONFIG} --cflags
+			ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
+			OUTPUT_VARIABLE NETCDF_CONFIG_CFLAGS)
+		if (NETCDF_CONFIG_CFLAGS)
+			string (REGEX MATCHALL "(^| )-I[^ ]+" _netcdf_dashI ${NETCDF_CONFIG_CFLAGS})
+			string (REGEX REPLACE "(^| )-I" "" _netcdf_includepath "${_netcdf_dashI}")
+			string (REGEX REPLACE "(^| )-I[^ ]+" "" _netcdf_cflags_other ${NETCDF_CONFIG_CFLAGS})
+		endif (NETCDF_CONFIG_CFLAGS)
+		execute_process (COMMAND ${NETCDF_CONFIG} --libs
+			ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
+			OUTPUT_VARIABLE NETCDF_CONFIG_LIBS)
+		if (NETCDF_CONFIG_LIBS)
+			# Ensure -l is preceded by whitespace to not match
+			# '-l' in '-L/usr/lib/x86_64-linux-gnu/hdf5/serial'
+			string (REGEX MATCHALL "(^| )-l[^ ]+" _netcdf_dashl ${NETCDF_CONFIG_LIBS})
+			string (REGEX REPLACE "(^| )-l" "" _netcdf_lib "${_netcdf_dashl}")
+			string (REGEX MATCHALL "(^| )-L[^ ]+" _netcdf_dashL ${NETCDF_CONFIG_LIBS})
+			string (REGEX REPLACE "(^| )-L" "" _netcdf_libpath "${_netcdf_dashL}")
+		endif (NETCDF_CONFIG_LIBS)
+	endif (NETCDF_CONFIG)
+	if (_netcdf_lib)
+		list (REMOVE_DUPLICATES _netcdf_lib)
+		list (REMOVE_ITEM _netcdf_lib netcdf)
+	endif (_netcdf_lib)
+endif (UNIX AND NOT NETCDF_FOUND)
+
+find_path (NETCDF_INCLUDE_DIR netcdf.h
+	HINTS
+	${_netcdf_includepath}
+	${NETCDF_DIR}
+	${NETCDF_ROOT}
+	$ENV{NETCDF_DIR}
+	$ENV{NETCDF_ROOT}
+	PATH_SUFFIXES
+	include/netcdf
+	include/netcdf-4
+	include/netcdf-3
+	include
+	PATHS
+	/sw # Fink
+	/opt/local # DarwinPorts
+	/opt/csw # Blastwave
+	/opt
+	/usr/local
+)
+
+find_library (NETCDF_LIBRARY
+	NAMES netcdf
+	HINTS
+	${_netcdf_libpath}
+	${NETCDF_DIR}
+	${NETCDF_ROOT}
+	$ENV{NETCDF_DIR}
+	$ENV{NETCDF_ROOT}
+	PATH_SUFFIXES lib
+	PATHS
+	/sw
+	/opt/local
+	/opt/csw
+	/opt
+	/usr/local
+)
+
+# find all libs that nc-config reports
+foreach (_extralib ${_netcdf_lib})
+	find_library (_found_lib_${_extralib}
+		NAMES ${_extralib}
+		HINTS
+		${HDF5_ROOT}
+		$ENV{HDF5_ROOT}
+		${ZLIB_ROOT}
+		$ENV{ZLIB_ROOT}
+		${CURL_ROOT}
+		$ENV{CURL_ROOT}
+		PATH_SUFFIXES lib
+		PATHS 
+		${_netcdf_libpath}
+	)
+	list (APPEND NETCDF_LIBRARY ${_found_lib_${_extralib}})
+endforeach (_extralib)
+
+# find all manually-supplied libs
+if (NETCDF_EXTRA_LIBS)
+	# Ensure -l is preceded by whitespace to not match
+	# '-l' in '-L/usr/lib/x86_64-linux-gnu/hdf5/serial'
+	string (REGEX MATCHALL "(^| )-l[^ ]+" _netcdf_extra_lib_dashl ${NETCDF_EXTRA_LIBS})
+	string (REGEX REPLACE "(^| )-l" "" _netcdf_extra_shared_lib "${_netcdf_extra_lib_dashl}")
+	string (REGEX MATCHALL "(^| )-L[^ ]+" _netcdf_extra_lib_dashL ${NETCDF_EXTRA_LIBS})
+	string (REGEX REPLACE "(^| )-L" "" _netcdf_extra_libpath "${_netcdf_extra_lib_dashL}")
+	foreach (_extralib ${_netcdf_extra_shared_lib})
+		find_library (_found_lib_${_extralib}
+			NAMES ${_extralib}
+			PATH_SUFFIXES lib
+			PATHS 
+			${_netcdf_extra_libpath}
+		)
+		list (APPEND NETCDF_LIBRARY ${_found_lib_${_extralib}})
+	endforeach (_extralib)
+	# Retrieve static library names
+	string(REGEX MATCHALL "[a-zA-Z0-9]+\\.a" _netcdf_extra_static_lib "${NETCDF_EXTRA_LIBS}")
+	foreach (_extralib ${_netcdf_extra_static_lib})
+		find_library (_found_lib_${_extralib}
+			NAMES ${_extralib}
+			PATH_SUFFIXES lib
+			PATHS 
+			${_netcdf_extra_libpath}
+		)
+		list (APPEND NETCDF_LIBRARY ${_found_lib_${_extralib}})
+	endforeach (_extralib)
+endif (NETCDF_EXTRA_LIBS)
+
+if (NETCDF_LIBRARY AND NETCDF_INCLUDE_DIR AND NOT HAVE_NETCDF4)
+	# Ensure that NetCDF with version 4 extensions is installed
+	include (CMakePushCheckState)
+	include (CheckSymbolExists)
+	cmake_push_check_state() # save state of CMAKE_REQUIRED_*
+	set (CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${NETCDF_INCLUDE_DIR})
+	set (CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${NETCDF_LIBRARY})
+	set (HAVE_NETCDF4 HAVE_NETCDF4) # to force check_symbol_exists again
+	check_symbol_exists (nc_def_var_deflate netcdf.h HAVE_NETCDF4)
+	cmake_pop_check_state() # restore state of CMAKE_REQUIRED_*
+	if (NOT HAVE_NETCDF4)
+		message (SEND_ERROR "Library found but netCDF-4/HDF5 format unsupported. Do not configure netCDF-4 with --disable-netcdf-4.")
+	endif (NOT HAVE_NETCDF4)
+endif (NETCDF_LIBRARY AND NETCDF_INCLUDE_DIR AND NOT HAVE_NETCDF4)
+
+include (FindPackageHandleStandardArgs)
+find_package_handle_standard_args (NETCDF
+	DEFAULT_MSG NETCDF_LIBRARY NETCDF_INCLUDE_DIR HAVE_NETCDF4)
+
+set (NETCDF_LIBRARIES ${NETCDF_LIBRARY})
+set (NETCDF_INCLUDE_DIRS ${NETCDF_INCLUDE_DIR})
+string (REPLACE "-DNDEBUG" "" NETCDF_DEFINITIONS "${_netcdf_cflags_other}")
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/static/linux/cmake/ConfigUser.static.cmake
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/static/linux/cmake/ConfigUser.static.cmake	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/static/linux/cmake/ConfigUser.static.cmake	(revision 27955)
@@ -0,0 +1,308 @@
+#
+#
+# Copyright (c) 1991-2019 by the GMT Team (https://www.generic-mapping-tools.org/team.html)
+# See LICENSE.TXT file for copying and redistribution conditions.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by the
+# Free Software Foundation; version 3 or 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 Lesser General Public License
+# for more details.
+#
+# Contact info: www.generic-mapping-tools.org
+# ----------------------------------------------------------------------------
+
+# Use this file to override variables in 'ConfigDefault.cmake' on a per-user
+# basis.  First copy 'ConfigUserTemplate.cmake' to 'ConfigUser.cmake', then
+# edit 'ConfigUser.cmake'.  'ConfigUser.cmake' is not version controlled
+# (currently listed in .gitignore).
+#
+# Note: CMake considers an empty string, "FALSE", "OFF", "NO", or any string
+# ending in "-NOTFOUND" to be false (this happens to be case-insensitive, so
+# "False", "off", "no", and "something-NotFound" are all false).  Other values
+# are true.  Thus it does not matter whether you use TRUE and FALSE, ON and
+# OFF, or YES and NO for your booleans.
+
+##
+## Section 1: Installation paths
+##
+
+# ============================================================================
+# Basic setup begins here.  All settings are optional.  In most cases, setting
+# CMAKE_INSTALL_PREFIX should be all you need to do in order to build GMT with
+# reasonable defaults enabled.  Note: If you need to specify directory names
+# with spaces (e.g., on Windows) then you must put them in quotes.
+# ============================================================================
+
+# Installation path (usually defaults to /usr/local) [auto]:
+set (CMAKE_INSTALL_PREFIX "$ENV{PREFIX}")
+
+# Set install name suffix used for directories and gmt executables
+# [undefined]:
+#set (GMT_INSTALL_NAME_SUFFIX "suffix")
+
+# Install into traditional directory structure. Disable to install a
+# distribution type directory structure (doc and share separated) [on]:
+#set (GMT_INSTALL_TRADITIONAL_FOLDERNAMES OFF)
+
+# Install convenience links for GMT modules. Disable to install only the main
+# gmt program and access modules as "gmt modulename options" [TRUE]:
+#set (GMT_INSTALL_MODULE_LINKS FALSE)
+
+# Make executables relocatable on supported platforms (relative RPATH) [FALSE]:
+set (GMT_INSTALL_RELOCATABLE TRUE)
+
+# Exclude optional GDAL, PCRE, PCRE2, FFTW3, LAPACK, BLAS, ZLIB dependencies even if you have them installed [FALSE]
+#set (GMT_EXCLUDE_GDAL TRUE)
+set (GMT_EXCLUDE_PCRE TRUE)
+set (GMT_EXCLUDE_PCRE2 TRUE)
+#set (GMT_EXCLUDE_FFTW3 TRUE)
+#set (GMT_EXCLUDE_LAPACK TRUE)
+#set (GMT_EXCLUDE_BLAS TRUE)
+#set (GMT_EXCLUDE_ZLIB TRUE)
+
+# ============================================================================
+# Advanced configuration begins here.  Usually it is not necessary to edit any
+# settings below.  You should know what you are doing if you do though.  Note:
+# installation paths are relative to ${CMAKE_INSTALL_PREFIX} unless absolute
+# path is given.
+# ============================================================================
+
+# Set binary installation path [bin]:
+#set (GMT_BINDIR "bin")
+
+# Set library installation path [lib or lib64]:
+#set (GMT_LIBDIR "lib")
+
+# Set include installation path [include/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_INCLUDEDIR "include/gmt")
+
+# Set share installation path [share or share/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_DATADIR "share/gmt")
+
+# Set doc installation path [share/doc or
+# share/doc/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_DOCDIR "share/doc/gmt")
+
+# Set manpage installation path [share/man or
+# share/doc/gmt${GMT_INSTALL_NAME_SUFFIX}/man]:
+#set (GMT_MANDIR "share/doc/gmt/man")
+
+# Install documentation files from this external location instead of creating
+# new HTML documents from scratch [${GMT_SOURCE_DIR}/doc_release]:
+#set (GMT_INSTALL_EXTERNAL_DOC OFF)
+
+# Install manual pages from this external location instead of creating the
+# manpages from scratch [${GMT_SOURCE_DIR}/man_release]:
+#set (GMT_INSTALL_EXTERNAL_MAN OFF)
+
+##
+## Section 2: Build dependencies (should only be needed if CMake cannot
+## automatically detect the rights version or path.)
+##
+
+# Set URL to GMT Data server [auto]:
+#set (GMT_DATA_SERVER "data_server_url")
+
+# Set path to GSHHG Shoreline Database [auto]:
+set (GSHHG_ROOT "$ENV{GSHHG_ROOT}")
+
+# Copy GSHHG files to ${GMT_DATADIR}/coast [FALSE]:
+set (COPY_GSHHG TRUE)
+
+# Set path to DCW Digital Chart of the World for GMT [auto]:
+#set (DCW_ROOT "dcw-gmt_path")
+
+# Copy DCW files to ${GMT_DATADIR}/dcw [FALSE]:
+#set (COPY_DCW TRUE)
+
+# Copy GDAL's 'data' directory to ${GMT_DATADIR}/GDAL_DATA [FALSE]:
+#set (GDAL_DATA_PATH C:/programs/compa_libs/gdal_GIT/compileds/VC14_64/data)
+
+# Copy PROJ4's 'share' directory to ${GMT_DATADIR}/GDAL_DATA [FALSE]:
+#set (PROJ_DATA_PATH C:/programs/compa_libs/proj5_GIT/compileds/VC14_64/share/proj)
+
+# FOR WINDOWS ONLY
+# Set path to location of Ghostscript binaries (optional install)
+#set (GHOST_DATA_PATH C:/programs/compa_libs/ghostscript/bin)
+
+# FOR WINDOWS ONLY
+# Set path to location where the gmtmex is located.
+#set (GMTMEX_PATH "C:/progs_cygw/GMTdev/gmtmex/${GMTver}")
+
+# Set location of NetCDF (can be root directory, path to header file or path
+# to nc-config) [auto]:
+set (NETCDF_ROOT "$ENV{NETCDF_ROOT}")
+
+# Set location of GDAL (can be root directory, path to header file or path to
+# gdal-config) [auto]:
+set (GDAL_ROOT "$ENV{GDAL_ROOT}")
+
+# Set location of PCRE (can be root directory, path to header file or path to
+# pcre-config) [auto]:
+#set (PCRE_ROOT "pcre_install_prefix")
+# Alternatively, set location of PCRE2 (can be root directory, path to header file or path to
+# pcre2-config) [auto]:
+#set (PCRE2_ROOT "pcre2_install_prefix")
+
+# Set location of single precision FFTW (can be root directory or path to
+# header file) [auto]:
+#set (FFTW3_ROOT "fftw_install_prefix")
+
+# Set location of ZLIB (can be root directory or path to header file) [auto]:
+set (ZLIB_ROOT "$ENV{ZLIB_ROOT}")
+
+# Set location of CURL (can be root directory or path to header file) [auto]:
+#set (CURL_ROOT "curl_install_prefix")
+
+# Set location of GLIB component gthread [auto].  This is an optional (and
+# experimental) option which you need to enable:
+#set (GMT_USE_THREADS TRUE)
+# If pkg-config is not installed (e.g. on Windows) you need to specify these:
+#set (GLIB_INCLUDE_DIR c:/path/to/glib-dev/include/glib-2.0)
+#set (GLIB_LIBRARIES c:/path/to/glib-dev/lib/glib-2.0.lib)
+
+# Set LAPACK location. Use this when want to link with LAPACK and it's not found automatically
+set (LAPACK_LIBRARY "-L$ENV{LAPACK_ROOT} -lflapack -L/usr/lib/x86_64-linux-gnu -lgfortran")
+set (BLAS_LIBRARY "-L$ENV{BLAS_ROOT} -lfblas -L/usr/lib/x86_64-linux-gnu -lgfortran")
+
+##
+## Section 3: GMT features
+##
+
+# Enforce GPL or LGPL conformity. Use this to disable routines that cannot be
+# redistributed under the terms of the GPL or LGPL such as Shewchuk's
+# triangulation (valid values are GPL, LGPL and off) [off]:
+#set (LICENSE_RESTRICTED GPL)
+
+# Allow building of OpenMP if compiler supports it
+# set (GMT_ENABLE_OPENMP TRUE)
+
+# Configure default units (possible values are SI and US) [SI]:
+#set (UNITS "US")
+
+# Enable building of shared libraries [TRUE] (disable to use static libraries;
+# not recommended; on non-x86 architectures uncomment the next option as well):
+set (BUILD_SHARED_LIBS FALSE)
+
+# Create position independent code on all targets [auto] (needed for static
+# build on non-x86):
+#set (CMAKE_POSITION_INDEPENDENT_CODE TRUE)
+
+# Build GMT shared lib with supplemental modules [TRUE]:
+set (BUILD_SUPPLEMENTS FALSE)
+
+# Build/Install GMT Developer include files [TRUE]:
+# This installs the extra include files and configured files needed by 3rd-party
+# developers.  Until we build a separate gmt-devel we include them in the main
+# Distribution.
+#set (BUILD_DEVELOPER FALSE)
+
+##
+## Section 4: Advanced tweaking
+##
+
+#
+# Testing and development
+#
+
+# Enable running examples/tests with "ctest" or "make check" (out-of-source).
+# Need to set either DO_EXAMPLES, DO_TESTS or both and uncomment the following
+# line.
+#enable_testing()
+#set (DO_EXAMPLES TRUE)
+#set (DO_TESTS TRUE)
+#set (DO_ANIMATIONS TRUE)
+# Number of parallel test jobs with "make check":
+#set (N_TEST_JOBS 4)
+
+# Enable this option to run GMT programs from within ${GMT_BINARY_DIR} without
+# installing or setting GMT_SHAREDIR and GMT_USERDIR first. This is required
+# for testing [OFF]:
+#set (SUPPORT_EXEC_IN_BINARY_DIR ON)
+
+# List extra sub-dirs of 'src' with a CMakeList.txt to build non-module codes
+# that link against the full gmt libs (not just the API; for building codes
+# that only need the GMT API, see the gmt-custom project).
+#set (EXTRA_BUILD_DIRS apidemo)
+# Uncomment the following line to enable running low-level C tests of the API
+#set (DO_API_TESTS ON)
+
+# Directory in which to install the release sources per default
+# [${GMT_BINARY_DIR}/gmt-${GMT_PACKAGE_VERSION}]:
+#set (GMT_RELEASE_PREFIX "release-src-prefix")
+
+# If set to false, image conversion from PS images to PNG and PDF does
+# not depend on the gmt binary target. Note: "make gmt" is then required
+# before docs_depends [TRUE].
+#set (GMT_DOCS_DEPEND_ON_GMT FALSE)
+
+#
+# Debugging
+#
+
+# Set build type can be: empty, Debug, Release, RelWithDebInfo or MinSizeRel
+# [Release]:
+#set (CMAKE_BUILD_TYPE Debug)
+
+# Extra debugging for developers:
+#if ( CMAKE_GENERATOR STREQUAL "Xcode" )
+##	So Xcode can find the supplemental plug-ins during debug sessions
+#	add_definitions(-DXCODER)
+#   add_definitions(-DDEBUG_MODERN)			# To set PPID == 0 during Xcode test
+#	message("Add Xcode definition for GMT")
+#endif()
+#add_definitions(-DDEBUG)
+#add_definitions(-DMEMDEBUG) # Turn on memory tracking see gmt_support.c for extra info
+#set (CMAKE_C_FLAGS "-Wall -Wdeclaration-after-statement") # recommended even for release build
+#set (CMAKE_C_FLAGS "-Wextra ${CMAKE_C_FLAGS}")            # extra warnings
+#set (CMAKE_C_FLAGS_DEBUG -ggdb3)                          # gdb debugging symbols
+#set (CMAKE_LINK_DEPENDS_DEBUG_MODE TRUE)                  # debug link dependencies
+if (HAVE_OPENMP)
+	set (CMAKE_C_FLAGS_RELEASE "-ggdb3 -O2 -Wuninitialized -flax-vector-conversions")  # check uninitialized variables
+else (HAVE_OPENMP)
+	set (CMAKE_C_FLAGS_RELEASE "-ggdb3 -O2 -Wuninitialized")  # check uninitialized variables
+endif (HAVE_OPENMP)
+
+#
+# System specific tweaks
+#
+
+# This is for GCC on Solaris to avoid "relocations remain against allocatable
+# but non-writable sections" problems:
+#set (USER_GMTLIB_LINK_FLAGS -mimpure-text)
+
+# This may be needed to enable strdup and extended math functions with GCC and
+# Suncc on Solaris:
+#set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__EXTENSIONS__")
+
+# Do not warn when building with Windows SDK or Visual Studio Express:
+#set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)
+
+# Manually select runtime library when compiling with Windows SDK or Visual
+# Studio Express:
+#set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS c:/Windows/System32/msvcr100.dll)
+
+# If your NetCDF library is static (not recommended, applies to Windows only)
+set (NETCDF_STATIC TRUE)
+
+# If want to rename the DLLs to something else than the default (e.g. to
+# append the bitness - Windows only)
+# WARNING: if using this option it is mandatory that the suffix starts with an underscore.
+#if (WIN32)
+# set (BITAGE 32)
+# # Detect if we are building a 32 or 64 bits version
+# if (CMAKE_SIZEOF_VOID_P EQUAL 8)
+#   set (BITAGE 64)
+# endif ()
+# set (GMT_DLL_RENAME gmt_w${BITAGE})
+# set (PSL_DLL_RENAME psl_w${BITAGE})
+#endif(WIN32)
+
+# On Windows Visual C 2012 needs _ALLOW_KEYWORD_MACROS to build
+#if(MSVC11)
+#  add_definitions(/D_ALLOW_KEYWORD_MACROS)
+#endif(MSVC11)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/static/mac/cmake/ConfigUser.static.cmake
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/static/mac/cmake/ConfigUser.static.cmake	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/static/mac/cmake/ConfigUser.static.cmake	(revision 27955)
@@ -0,0 +1,308 @@
+#
+#
+# Copyright (c) 1991-2019 by the GMT Team (https://www.generic-mapping-tools.org/team.html)
+# See LICENSE.TXT file for copying and redistribution conditions.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by the
+# Free Software Foundation; version 3 or 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 Lesser General Public License
+# for more details.
+#
+# Contact info: www.generic-mapping-tools.org
+# ----------------------------------------------------------------------------
+
+# Use this file to override variables in 'ConfigDefault.cmake' on a per-user
+# basis.  First copy 'ConfigUserTemplate.cmake' to 'ConfigUser.cmake', then
+# edit 'ConfigUser.cmake'.  'ConfigUser.cmake' is not version controlled
+# (currently listed in .gitignore).
+#
+# Note: CMake considers an empty string, "FALSE", "OFF", "NO", or any string
+# ending in "-NOTFOUND" to be false (this happens to be case-insensitive, so
+# "False", "off", "no", and "something-NotFound" are all false).  Other values
+# are true.  Thus it does not matter whether you use TRUE and FALSE, ON and
+# OFF, or YES and NO for your booleans.
+
+##
+## Section 1: Installation paths
+##
+
+# ============================================================================
+# Basic setup begins here.  All settings are optional.  In most cases, setting
+# CMAKE_INSTALL_PREFIX should be all you need to do in order to build GMT with
+# reasonable defaults enabled.  Note: If you need to specify directory names
+# with spaces (e.g., on Windows) then you must put them in quotes.
+# ============================================================================
+
+# Installation path (usually defaults to /usr/local) [auto]:
+set (CMAKE_INSTALL_PREFIX "$ENV{PREFIX}")
+
+# Set install name suffix used for directories and gmt executables
+# [undefined]:
+#set (GMT_INSTALL_NAME_SUFFIX "suffix")
+
+# Install into traditional directory structure. Disable to install a
+# distribution type directory structure (doc and share separated) [on]:
+#set (GMT_INSTALL_TRADITIONAL_FOLDERNAMES OFF)
+
+# Install convenience links for GMT modules. Disable to install only the main
+# gmt program and access modules as "gmt modulename options" [TRUE]:
+#set (GMT_INSTALL_MODULE_LINKS FALSE)
+
+# Make executables relocatable on supported platforms (relative RPATH) [FALSE]:
+set (GMT_INSTALL_RELOCATABLE TRUE)
+
+# Exclude optional GDAL, PCRE, PCRE2, FFTW3, LAPACK, BLAS, ZLIB dependencies even if you have them installed [FALSE]
+#set (GMT_EXCLUDE_GDAL TRUE)
+set (GMT_EXCLUDE_PCRE TRUE)
+set (GMT_EXCLUDE_PCRE2 TRUE)
+#set (GMT_EXCLUDE_FFTW3 TRUE)
+#set (GMT_EXCLUDE_LAPACK TRUE)
+#set (GMT_EXCLUDE_BLAS TRUE)
+#set (GMT_EXCLUDE_ZLIB TRUE)
+
+# ============================================================================
+# Advanced configuration begins here.  Usually it is not necessary to edit any
+# settings below.  You should know what you are doing if you do though.  Note:
+# installation paths are relative to ${CMAKE_INSTALL_PREFIX} unless absolute
+# path is given.
+# ============================================================================
+
+# Set binary installation path [bin]:
+#set (GMT_BINDIR "bin")
+
+# Set library installation path [lib or lib64]:
+#set (GMT_LIBDIR "lib")
+
+# Set include installation path [include/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_INCLUDEDIR "include/gmt")
+
+# Set share installation path [share or share/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_DATADIR "share/gmt")
+
+# Set doc installation path [share/doc or
+# share/doc/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_DOCDIR "share/doc/gmt")
+
+# Set manpage installation path [share/man or
+# share/doc/gmt${GMT_INSTALL_NAME_SUFFIX}/man]:
+#set (GMT_MANDIR "share/doc/gmt/man")
+
+# Install documentation files from this external location instead of creating
+# new HTML documents from scratch [${GMT_SOURCE_DIR}/doc_release]:
+#set (GMT_INSTALL_EXTERNAL_DOC OFF)
+
+# Install manual pages from this external location instead of creating the
+# manpages from scratch [${GMT_SOURCE_DIR}/man_release]:
+#set (GMT_INSTALL_EXTERNAL_MAN OFF)
+
+##
+## Section 2: Build dependencies (should only be needed if CMake cannot
+## automatically detect the rights version or path.)
+##
+
+# Set URL to GMT Data server [auto]:
+#set (GMT_DATA_SERVER "data_server_url")
+
+# Set path to GSHHG Shoreline Database [auto]:
+set (GSHHG_ROOT "$ENV{GSHHG_ROOT}")
+
+# Copy GSHHG files to ${GMT_DATADIR}/coast [FALSE]:
+set (COPY_GSHHG TRUE)
+
+# Set path to DCW Digital Chart of the World for GMT [auto]:
+#set (DCW_ROOT "dcw-gmt_path")
+
+# Copy DCW files to ${GMT_DATADIR}/dcw [FALSE]:
+#set (COPY_DCW TRUE)
+
+# Copy GDAL's 'data' directory to ${GMT_DATADIR}/GDAL_DATA [FALSE]:
+#set (GDAL_DATA_PATH C:/programs/compa_libs/gdal_GIT/compileds/VC14_64/data)
+
+# Copy PROJ4's 'share' directory to ${GMT_DATADIR}/GDAL_DATA [FALSE]:
+#set (PROJ_DATA_PATH C:/programs/compa_libs/proj5_GIT/compileds/VC14_64/share/proj)
+
+# FOR WINDOWS ONLY
+# Set path to location of Ghostscript binaries (optional install)
+#set (GHOST_DATA_PATH C:/programs/compa_libs/ghostscript/bin)
+
+# FOR WINDOWS ONLY
+# Set path to location where the gmtmex is located.
+#set (GMTMEX_PATH "C:/progs_cygw/GMTdev/gmtmex/${GMTver}")
+
+# Set location of NetCDF (can be root directory, path to header file or path
+# to nc-config) [auto]:
+set (NETCDF_ROOT "$ENV{NETCDF_ROOT}")
+
+# Set location of GDAL (can be root directory, path to header file or path to
+# gdal-config) [auto]:
+set (GDAL_ROOT "$ENV{GDAL_ROOT}")
+
+# Set location of PCRE (can be root directory, path to header file or path to
+# pcre-config) [auto]:
+#set (PCRE_ROOT "pcre_install_prefix")
+# Alternatively, set location of PCRE2 (can be root directory, path to header file or path to
+# pcre2-config) [auto]:
+#set (PCRE2_ROOT "pcre2_install_prefix")
+
+# Set location of single precision FFTW (can be root directory or path to
+# header file) [auto]:
+#set (FFTW3_ROOT "fftw_install_prefix")
+
+# Set location of ZLIB (can be root directory or path to header file) [auto]:
+set (ZLIB_ROOT "$ENV{ZLIB_ROOT}")
+
+# Set location of CURL (can be root directory or path to header file) [auto]:
+#set (CURL_ROOT "curl_install_prefix")
+
+# Set location of GLIB component gthread [auto].  This is an optional (and
+# experimental) option which you need to enable:
+#set (GMT_USE_THREADS TRUE)
+# If pkg-config is not installed (e.g. on Windows) you need to specify these:
+#set (GLIB_INCLUDE_DIR c:/path/to/glib-dev/include/glib-2.0)
+#set (GLIB_LIBRARIES c:/path/to/glib-dev/lib/glib-2.0.lib)
+
+# Set LAPACK location. Use this when want to link with LAPACK and it's not found automatically
+#set (LAPACK_LIBRARY "-L$ENV{LAPACK_ROOT} -lflapack")
+#set (BLAS_LIBRARY "-L$ENV{BLAS_ROOT} -lfblas")
+
+##
+## Section 3: GMT features
+##
+
+# Enforce GPL or LGPL conformity. Use this to disable routines that cannot be
+# redistributed under the terms of the GPL or LGPL such as Shewchuk's
+# triangulation (valid values are GPL, LGPL and off) [off]:
+#set (LICENSE_RESTRICTED GPL)
+
+# Allow building of OpenMP if compiler supports it
+# set (GMT_ENABLE_OPENMP TRUE)
+
+# Configure default units (possible values are SI and US) [SI]:
+#set (UNITS "US")
+
+# Enable building of shared libraries [TRUE] (disable to use static libraries;
+# not recommended; on non-x86 architectures uncomment the next option as well):
+set (BUILD_SHARED_LIBS FALSE)
+
+# Create position independent code on all targets [auto] (needed for static
+# build on non-x86):
+#set (CMAKE_POSITION_INDEPENDENT_CODE TRUE)
+
+# Build GMT shared lib with supplemental modules [TRUE]:
+set (BUILD_SUPPLEMENTS FALSE)
+
+# Build/Install GMT Developer include files [TRUE]:
+# This installs the extra include files and configured files needed by 3rd-party
+# developers.  Until we build a separate gmt-devel we include them in the main
+# Distribution.
+#set (BUILD_DEVELOPER FALSE)
+
+##
+## Section 4: Advanced tweaking
+##
+
+#
+# Testing and development
+#
+
+# Enable running examples/tests with "ctest" or "make check" (out-of-source).
+# Need to set either DO_EXAMPLES, DO_TESTS or both and uncomment the following
+# line.
+#enable_testing()
+#set (DO_EXAMPLES TRUE)
+#set (DO_TESTS TRUE)
+#set (DO_ANIMATIONS TRUE)
+# Number of parallel test jobs with "make check":
+#set (N_TEST_JOBS 4)
+
+# Enable this option to run GMT programs from within ${GMT_BINARY_DIR} without
+# installing or setting GMT_SHAREDIR and GMT_USERDIR first. This is required
+# for testing [OFF]:
+#set (SUPPORT_EXEC_IN_BINARY_DIR ON)
+
+# List extra sub-dirs of 'src' with a CMakeList.txt to build non-module codes
+# that link against the full gmt libs (not just the API; for building codes
+# that only need the GMT API, see the gmt-custom project).
+#set (EXTRA_BUILD_DIRS apidemo)
+# Uncomment the following line to enable running low-level C tests of the API
+#set (DO_API_TESTS ON)
+
+# Directory in which to install the release sources per default
+# [${GMT_BINARY_DIR}/gmt-${GMT_PACKAGE_VERSION}]:
+#set (GMT_RELEASE_PREFIX "release-src-prefix")
+
+# If set to false, image conversion from PS images to PNG and PDF does
+# not depend on the gmt binary target. Note: "make gmt" is then required
+# before docs_depends [TRUE].
+#set (GMT_DOCS_DEPEND_ON_GMT FALSE)
+
+#
+# Debugging
+#
+
+# Set build type can be: empty, Debug, Release, RelWithDebInfo or MinSizeRel
+# [Release]:
+#set (CMAKE_BUILD_TYPE Debug)
+
+# Extra debugging for developers:
+#if ( CMAKE_GENERATOR STREQUAL "Xcode" )
+##	So Xcode can find the supplemental plug-ins during debug sessions
+#	add_definitions(-DXCODER)
+#   add_definitions(-DDEBUG_MODERN)			# To set PPID == 0 during Xcode test
+#	message("Add Xcode definition for GMT")
+#endif()
+#add_definitions(-DDEBUG)
+#add_definitions(-DMEMDEBUG) # Turn on memory tracking see gmt_support.c for extra info
+#set (CMAKE_C_FLAGS "-Wall -Wdeclaration-after-statement") # recommended even for release build
+#set (CMAKE_C_FLAGS "-Wextra ${CMAKE_C_FLAGS}")            # extra warnings
+#set (CMAKE_C_FLAGS_DEBUG -ggdb3)                          # gdb debugging symbols
+#set (CMAKE_LINK_DEPENDS_DEBUG_MODE TRUE)                  # debug link dependencies
+if (HAVE_OPENMP)
+	set (CMAKE_C_FLAGS_RELEASE "-ggdb3 -O2 -Wuninitialized -flax-vector-conversions")  # check uninitialized variables
+else (HAVE_OPENMP)
+	set (CMAKE_C_FLAGS_RELEASE "-ggdb3 -O2 -Wuninitialized")  # check uninitialized variables
+endif (HAVE_OPENMP)
+
+#
+# System specific tweaks
+#
+
+# This is for GCC on Solaris to avoid "relocations remain against allocatable
+# but non-writable sections" problems:
+#set (USER_GMTLIB_LINK_FLAGS -mimpure-text)
+
+# This may be needed to enable strdup and extended math functions with GCC and
+# Suncc on Solaris:
+#set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__EXTENSIONS__")
+
+# Do not warn when building with Windows SDK or Visual Studio Express:
+#set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)
+
+# Manually select runtime library when compiling with Windows SDK or Visual
+# Studio Express:
+#set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS c:/Windows/System32/msvcr100.dll)
+
+# If your NetCDF library is static (not recommended, applies to Windows only)
+set (NETCDF_STATIC TRUE)
+
+# If want to rename the DLLs to something else than the default (e.g. to
+# append the bitness - Windows only)
+# WARNING: if using this option it is mandatory that the suffix starts with an underscore.
+#if (WIN32)
+# set (BITAGE 32)
+# # Detect if we are building a 32 or 64 bits version
+# if (CMAKE_SIZEOF_VOID_P EQUAL 8)
+#   set (BITAGE 64)
+# endif ()
+# set (GMT_DLL_RENAME gmt_w${BITAGE})
+# set (PSL_DLL_RENAME psl_w${BITAGE})
+#endif(WIN32)
+
+# On Windows Visual C 2012 needs _ALLOW_KEYWORD_MACROS to build
+#if(MSVC11)
+#  add_definitions(/D_ALLOW_KEYWORD_MACROS)
+#endif(MSVC11)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/static/src/CMakeLists.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/static/src/CMakeLists.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/configs/6/static/src/CMakeLists.txt	(revision 27955)
@@ -0,0 +1,730 @@
+#
+#
+# Copyright (c) 1991-2019 by the GMT Team (https://www.generic-mapping-tools.org/team.html)
+# See LICENSE.TXT file for copying and redistribution conditions.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; version 3 or 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 Lesser General Public License for more details.
+#
+# Contact info: www.generic-mapping-tools.org
+#-------------------------------------------------------------------------------
+#
+# To modify the cmake process: Edit your cmake/ConfigUser.cmake file
+#
+# src/CMakeLists.txt
+#
+
+include (ManageString)
+include (GmtHelperMacros)
+
+if (UNIX AND NOT APPLE)
+	set (LINUX TRUE)
+else (UNIX AND NOT APPLE)
+	set (LINUX FALSE)
+endif (UNIX AND NOT APPLE)
+
+# On Windows do not prefix the DLLs with the 'lib' prefix
+if (WIN32)
+	set(LIB_PREFIX "")
+else (WIN32)
+	set(LIB_PREFIX "lib")
+endif (WIN32)
+
+# Include CREATE_DEBUG_SYM macro and set DEBUG_BUILD
+include (CreateDebugSym)
+
+# Find executable needed by gmt
+find_program (OGR2OGR ogr2ogr)
+if (NOT OGR2OGR)
+	message (WARNING "Cannot find program ogr2ogr - gmt will be unable to convert Shapefiles to GMT/OGR format")
+	set (GMT_CONFIG_OGR2OGR_MESSAGE "no" CACHE INTERNAL "OGR2OGR config message")
+else (NOT OGR2OGR)
+	execute_process(COMMAND ogr2ogr --version OUTPUT_VARIABLE answer OUTPUT_STRIP_TRAILING_WHITESPACE)
+	string (REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" answer "${answer}")
+	set (GMT_CONFIG_OGR2OGR_MESSAGE "yes (${answer})" CACHE INTERNAL "OGR2OGR config message")
+endif (NOT OGR2OGR)
+
+# Find executable needed by psconvert
+find_program (GDAL_TRANSLATE gdal_translate)
+if (NOT GDAL_TRANSLATE)
+	message (WARNING "Cannot find program gdal_translate - psconvert will be unable to convert TIFF to GeoTIFF")
+	set (GMT_CONFIG_GDAL_TRANSLATE_MESSAGE "no" CACHE INTERNAL "GDAL_TRANSLATE config message")
+else (NOT GDAL_TRANSLATE)
+	execute_process(COMMAND gdal_translate --version OUTPUT_VARIABLE answer OUTPUT_STRIP_TRAILING_WHITESPACE)
+	string (REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" answer "${answer}")
+	set (GMT_CONFIG_GDAL_TRANSLATE_MESSAGE "yes (${answer})" CACHE INTERNAL "GDAL_TRANSLATE config message")
+endif (NOT GDAL_TRANSLATE)
+
+# Find executables needed by movie
+find_program (GM gm)
+if (NOT GM)
+	message (WARNING "Cannot find GraphicsMagick program gm - gmt movie will be unable to make animated GIFs")
+	set (GMT_CONFIG_GM_MESSAGE "no" CACHE INTERNAL "GM config message")
+else (NOT GM)
+	execute_process(COMMAND gm help OUTPUT_VARIABLE answer OUTPUT_STRIP_TRAILING_WHITESPACE)
+	string (REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" answer "${answer}")
+	set (GMT_CONFIG_GM_MESSAGE "yes (${answer})" CACHE INTERNAL "GM config message")
+endif (NOT GM)
+
+find_program (FFMPEG ffmpeg)
+if (NOT FFMPEG)
+	message (WARNING "Cannot find ffmpeg - gmt movie will be unable to make movies from frames")
+	set (GMT_CONFIG_FFMPEG_MESSAGE "no" CACHE INTERNAL "FFMPEG config message")
+else (NOT FFMPEG)
+	execute_process(COMMAND ffmpeg -version OUTPUT_VARIABLE answer OUTPUT_STRIP_TRAILING_WHITESPACE)
+	string (REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" answer "${answer}")
+	set (GMT_CONFIG_FFMPEG_MESSAGE "yes (${answer})" CACHE INTERNAL "FFMPEG config message")
+endif (NOT FFMPEG)
+
+# Find executable needed by docs
+if (LINUX)
+	find_program (XDGOPEN xdg-open)
+	if (NOT XDGOPEN)
+		message (WARNING "Cannot find program xdg-open - gmt docs will be unable to open the documentation")
+		set (GMT_CONFIG_OPEN_MESSAGE "no" CACHE INTERNAL "OPEN config message")
+	else (NOT XDGOPEN)
+		set (GMT_CONFIG_OPEN_MESSAGE "yes" CACHE INTERNAL "OPEN config message")
+	endif (NOT XDGOPEN)
+else (LINUX)
+	set (GMT_CONFIG_OPEN_MESSAGE "yes" CACHE INTERNAL "OPEN config message")
+endif (LINUX)
+
+# Find executable needed by psconvert
+if (WIN32)
+	set (GMT_CONFIG_GS_MESSAGE "yes" CACHE INTERNAL "GS config message")
+else (WIN32)
+	find_program (GS gs)
+	if (NOT GS)
+		message (WARNING "Cannot find ghostscript program gs - gmt psconvert will be unable to convert PostScript to other formats")
+		set (GMT_CONFIG_GS_MESSAGE "no" CACHE INTERNAL "GS config message")
+	else (NOT GS)
+		execute_process(COMMAND gs --version OUTPUT_VARIABLE answer OUTPUT_STRIP_TRAILING_WHITESPACE)
+		set (GMT_CONFIG_GS_MESSAGE "yes (${answer})" CACHE INTERNAL "GS config message")
+	endif (NOT GS)
+endif (WIN32)
+
+# Find libraries
+message (STATUS "Searching dependent libraries. This may take a few minutes...")
+# NetCDF is required
+find_package (NETCDF REQUIRED)
+include_directories (${NETCDF_INCLUDE_DIR})
+
+# libcurl is required since 5.4
+include_directories ($ENV{CURL_INCLUDE_DIRS})
+list (APPEND GMT_OPTIONAL_LIBRARIES $ENV{CURL_LIBRARIES})
+
+if (NOT DEFINED GMT_EXCLUDE_GDAL)
+	find_package (GDAL)
+endif (NOT DEFINED GMT_EXCLUDE_GDAL)
+if (GDAL_FOUND)
+	set (HAVE_GDAL TRUE CACHE INTERNAL "System has GDAL")
+	include_directories (${GDAL_INCLUDE_DIR})
+	list (APPEND GMT_OPTIONAL_LIBRARIES ${GDAL_LIBRARIES})
+endif (GDAL_FOUND)
+
+if (NOT DEFINED GMT_EXCLUDE_PCRE)
+	find_package (PCRE)
+endif (NOT DEFINED GMT_EXCLUDE_PCRE)
+if (NOT PCRE_FOUND AND NOT DEFINED GMT_EXCLUDE_PCRE2)
+	find_package (PCRE2)
+endif (NOT PCRE_FOUND AND NOT DEFINED GMT_EXCLUDE_PCRE2)
+if (PCRE_FOUND)
+	set (HAVE_PCRE TRUE CACHE INTERNAL "System has PCRE")
+	set (GMT_CONFIG_REGEX_MESSAGE "PCRE (${PCRE_LIBRARIES})"
+		CACHE INTERNAL "Regex config message")
+	include_directories (${PCRE_INCLUDE_DIR})
+	list (APPEND GMT_OPTIONAL_LIBRARIES ${PCRE_LIBRARIES})
+elseif (PCRE2_FOUND)
+	set (HAVE_PCRE2 TRUE CACHE INTERNAL "System has PCRE2")
+	set (GMT_CONFIG_REGEX_MESSAGE "PCRE2 (${PCRE2_LIBRARIES})"
+		CACHE INTERNAL "Regex config message")
+	include_directories (${PCRE2_INCLUDE_DIR})
+	list (APPEND GMT_OPTIONAL_LIBRARIES ${PCRE2_LIBRARIES})
+else (PCRE_FOUND)
+	find_package (REGEX)
+	if (REGEX_FOUND)
+		set (HAVE_POSIX_ERE TRUE CACHE INTERNAL "System has regex.h")
+		set (GMT_CONFIG_REGEX_MESSAGE "POSIX Regex (${REGEX_INCLUDE_DIR}/regex.h)"
+			CACHE INTERNAL "Regex config message")
+		include_directories (${REGEX_INCLUDE_DIR})
+		# I don't think its needed but just in case:
+		list (APPEND GMT_OPTIONAL_LIBRARIES ${REGEX_LIBRARIES})
+	else (REGEX_FOUND)
+		set (GMT_CONFIG_REGEX_MESSAGE "unsupported"
+			CACHE INTERNAL "Regex config message")
+	endif (REGEX_FOUND)
+endif (PCRE_FOUND)
+
+if (NOT DEFINED GMT_EXCLUDE_FFTW3)
+	find_package (FFTW3)
+endif (NOT DEFINED GMT_EXCLUDE_FFTW3)
+if (FFTW3_FOUND)
+	set (HAVE_FFTW3F TRUE CACHE INTERNAL "System has single precision FFTW")
+	if (FFTW3F_THREADS_LIBRARY)
+		set (HAVE_FFTW3F_THREADS TRUE CACHE INTERNAL "System has single precision threaded FFTW")
+	endif (FFTW3F_THREADS_LIBRARY)
+	include_directories (${FFTW3_INCLUDE_DIR})
+	list (APPEND GMT_OPTIONAL_LIBRARIES ${FFTW3F_LIBRARIES})
+endif (FFTW3_FOUND)
+
+if (NOT DEFINED GMT_EXCLUDE_LAPACK)
+	find_package (LAPACK)
+endif (NOT DEFINED GMT_EXCLUDE_LAPACK)
+if (LAPACK_FOUND)
+	set (HAVE_LAPACK TRUE CACHE INTERNAL "System has LAPACK")
+	set (GMT_CONFIG_LAPACK_MESSAGE "yes" CACHE INTERNAL "LAPACK config message")
+	include_directories (${LAPACK_INCLUDE_DIR})
+	list (APPEND GMT_OPTIONAL_LIBRARIES ${LAPACK_LIBRARIES})
+else (LAPACK_FOUND)
+	if (LAPACK_LIBRARY)
+		# Set in ConfigUser.cmake
+		set (HAVE_LAPACK TRUE CACHE INTERNAL "System has LAPACK")
+		set (GMT_CONFIG_LAPACK_MESSAGE "yes" CACHE INTERNAL "LAPACK config message")
+		list (APPEND GMT_OPTIONAL_LIBRARIES ${LAPACK_LIBRARY})
+	else (LAPACK_LIBRARY)
+		set (GMT_CONFIG_LAPACK_MESSAGE "no" CACHE INTERNAL "LAPACK config message")
+	endif (LAPACK_LIBRARY)
+endif (LAPACK_FOUND)
+
+if (NOT DEFINED GMT_EXCLUDE_BLAS)
+	find_package (BLAS)
+endif (NOT DEFINED GMT_EXCLUDE_BLAS)
+if (BLAS_FOUND)
+	set (HAVE_BLAS TRUE CACHE INTERNAL "System has BLAS")
+	set (GMT_CONFIG_BLAS_MESSAGE "yes" CACHE INTERNAL "BLAS config message")
+	include_directories (${BLAS_INCLUDE_DIR})
+	list (APPEND GMT_OPTIONAL_LIBRARIES ${BLAS_LIBRARIES})
+else (BLAS_FOUND)
+	if (BLAS_LIBRARY)
+		# Set in ConfigUser.cmake
+		set (HAVE_BLAS TRUE CACHE INTERNAL "System has BLAS")
+		set (GMT_CONFIG_BLAS_MESSAGE "yes" CACHE INTERNAL "BLAS config message")
+		list (APPEND GMT_OPTIONAL_LIBRARIES ${BLAS_LIBRARY})
+	else (BLAS_LIBRARY)
+		set (GMT_CONFIG_BLAS_MESSAGE "no" CACHE INTERNAL "BLAS config message")
+	endif (BLAS_LIBRARY)
+endif (BLAS_FOUND)
+
+if (NOT DEFINED GMT_EXCLUDE_ZLIB)
+	find_package (ZLIB)
+endif (NOT DEFINED GMT_EXCLUDE_ZLIB)
+if (ZLIB_FOUND)
+	set (HAVE_ZLIB TRUE CACHE INTERNAL "System has ZLIB")
+	include_directories (${ZLIB_INCLUDE_DIRS})
+endif (ZLIB_FOUND)
+
+
+if (APPLE)
+	# Accelerate framework
+	find_library (ACCELERATE_FRAMEWORK Accelerate)
+	mark_as_advanced (ACCELERATE_FRAMEWORK)
+	list (APPEND GMT_OPTIONAL_LIBRARIES ${ACCELERATE_FRAMEWORK})
+endif (APPLE)
+
+if (DEFINED GMT_ENABLE_OPENMP)
+	set (GMT_OPENMP TRUE CACHE INTERNAL "Turn on GMT OpenMP")
+endif (DEFINED GMT_ENABLE_OPENMP)
+find_package (OpenMP)
+if (OPENMP_FOUND AND GMT_OPENMP)
+	set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
+	set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
+	set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${OpenMP_SHARED_LINKER_FLAGS}")
+	set (HAVE_OPENMP TRUE CACHE INTERNAL "OpenMP enabled." FORCE)
+	set (GMT_CONFIG_OPENMP_MESSAGE "enabled"
+		CACHE INTERNAL "OPENMP config message")
+	if (WIN32 AND OMP_DLL_LOC)
+		# UGLY AND RISKY PATCH FOR THE CPACK BUG OF NOT COPYING THE OMP DLL. THIS PATCH RELIES
+		# ON THE SETTING OF THE OMP_DLL_LOC VARIABLE IN ConfigUser.cmake. MINE HAS:
+		# set (OMP_DLL_LOC "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/redist/x64/Microsoft.VC120.OPENMP/vcomp120.dll")
+		install(FILES ${OMP_DLL_LOC} DESTINATION bin COMPONENT Libraries)
+	endif (WIN32 AND OMP_DLL_LOC)
+else (OPENMP_FOUND AND GMT_OPENMP)
+	set (HAVE_OPENMP FALSE CACHE INTERNAL "OpenMP disabled." FORCE)
+	set (GMT_CONFIG_OPENMP_MESSAGE "disabled"
+		CACHE INTERNAL "OPENMP config message")
+endif (OPENMP_FOUND AND GMT_OPENMP)
+if (OPENMP_FOUND AND NOT GMT_OPENMP)
+	message (STATUS "User variable GMT_OPENMP not set: disabling OpenMP.")
+	set (GMT_CONFIG_OPENMP_MESSAGE "disabled (GMT_OPENMP not set)"
+		CACHE INTERNAL "OPENMP config message")
+endif (OPENMP_FOUND AND NOT GMT_OPENMP)
+
+find_package(GLIB COMPONENTS gthread)
+if (GLIB_FOUND AND GMT_USE_THREADS)
+	set (HAVE_GLIB_GTHREAD TRUE CACHE INTERNAL "System has GLIB component gthread")
+	include_directories (${GLIB_INCLUDE_DIRS})
+	list (APPEND GMT_OPTIONAL_LIBRARIES ${GLIB_LIBRARIES})
+	set (GMT_CONFIG_GTHREAD_MESSAGE "enabled"
+		CACHE INTERNAL "GTHREAD config message")
+endif (GLIB_FOUND AND GMT_USE_THREADS)
+if (GLIB_FOUND AND NOT GMT_USE_THREADS)
+	set (HAVE_GLIB_GTHREAD FALSE CACHE INTERNAL "User disabled threads")
+	message (STATUS "User variable GMT_USE_THREADS not set: disabling GThread.")
+	set (GMT_CONFIG_GTHREAD_MESSAGE "disabled"
+		CACHE INTERNAL "GTHREAD config message")
+endif (GLIB_FOUND AND NOT GMT_USE_THREADS)
+if (GMT_USE_THREADS AND NOT GLIB_FOUND)
+	message (FATAL_ERROR "User variable GMT_USE_THREADS set but GLIB component gthread not found.")
+	set (GMT_CONFIG_GTHREAD_MESSAGE "unavailable"
+		CACHE INTERNAL "GTHREAD config message")
+endif (GMT_USE_THREADS AND NOT GLIB_FOUND)
+
+# check for math and POSIX functions
+include(ConfigureChecks)
+
+include_directories (${GMT_SOURCE_DIR}/src)
+include_directories (${CMAKE_CURRENT_BINARY_DIR})
+set(CMAKE_INCLUDE_CURRENT_DIR TRUE)
+
+# Examples and tests depend on Shorelines
+find_package (GSHHG)
+if (DO_EXAMPLES OR DO_TESTS AND NOT GSHHG_FOUND)
+	message (FATAL_ERROR "Cannot proceed without GSHHG Shorelines. "
+		"Need to either set GSHHG_ROOT or disable tests.")
+endif (DO_EXAMPLES OR DO_TESTS AND NOT GSHHG_FOUND)
+
+# Examples and tests depend on DCW
+find_package (DCW)
+if (DO_EXAMPLES OR DO_TESTS AND NOT DCW_FOUND)
+	message (FATAL_ERROR "Cannot proceed without DCW polygons. "
+		"Need to either set DCW_ROOT or disable tests."
+		"Obtain dcw-gmt-<version>.tar.gz or dcw-gmt-<version>.zip from ftp://ftp.soest.hawaii.edu/gmt and make DCW_ROOT variable point to the directory where you unarchived the files")
+endif (DO_EXAMPLES OR DO_TESTS AND NOT DCW_FOUND)
+
+if (DO_API_TESTS)
+	# These lines are temporarily here for the beta release - comment to avoid in the build
+	set (GMT_DEMOS_SRCS testapi.c testpsl.c testgmt.c testgmtshell.c testgmtio.c testgrdio.c testio.c
+		testapiconv.c example1.c testapi_matrix.c testapi_matrix_plot.c testapi_vector.c test_JL.c testapi_mixmatrix.c
+		test_walter.c testapi_usergrid.c testapi_userdataset.c testapi_uservectors.c)
+endif (DO_API_TESTS)
+
+if (NOT LICENSE_RESTRICTED) # off
+	# enable Shewchuk's triangle routine
+	set (GMT_TRIANGULATE "Shewchuk" PARENT_SCOPE)
+	set (GMT_TRIANGLE_SRCS triangle.c triangle.h)
+	list (APPEND GMT_EXTRA_LICENSE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.TRIANGLE)
+	set (GMT_EXTRA_LICENSE_FILES ${GMT_EXTRA_LICENSE_FILES} PARENT_SCOPE)
+else (NOT LICENSE_RESTRICTED) # on
+	# disable Shewchuk's triangle routine
+	set (GMT_TRIANGULATE "Watson" PARENT_SCOPE)
+endif (NOT LICENSE_RESTRICTED)
+
+# Note: Developers can set EXTRA_MODULES in ConfigUser.cmake to test new modules
+set (GMT_PROGS_SRCS blockmean.c blockmedian.c blockmode.c docs.c dimfilter.c filter1d.c grd2kml.c
+	fitcircle.c gmt2kml.c gmtconvert.c gmtlogo.c gmtmath.c gmtselect.c gmtsimplify.c
+	gmtspatial.c gmtconnect.c gmtregress.c gmtvector.c gmtwhich.c grd2cpt.c
+	grd2xyz.c grdblend.c grdclip.c grdcut.c grdedit.c grdfft.c grdfill.c grdfilter.c
+	grdgradient.c grdhisteq.c grdinfo.c grdlandmask.c grdmask.c grdmath.c
+	grdpaste.c grdproject.c grdsample.c grdconvert.c grdtrack.c movie.c
+	grdtrend.c grdvolume.c greenspline.c kml2gmt.c makecpt.c mapproject.c
+	gmtinfo.c nearneighbor.c project.c psconvert.c sample1d.c spectrum1d.c
+	sph2grd.c sphdistance.c sphinterpolate.c sphtriangulate.c splitxyz.c
+	surface.c trend1d.c trend2d.c triangulate.c xyz2grd.c gmtdefaults.c gmtget.c
+	gmtset.c grdcontour.c grdimage.c grdvector.c grdview.c psbasemap.c psclip.c
+	pscoast.c pscontour.c psevents.c pshistogram.c psimage.c psmask.c psrose.c psscale.c
+	pssolar.c psternary.c pstext.c pswiggle.c psxy.c psxyz.c pslegend.c ${EXTRA_MODULES})
+
+# Legacy modules for which to install compatibility links via
+# install_module_symlink
+set (GMT_COMPAT_MODULES minmax gmt2rgb gmtstitch gmtdp grdreformat ps2raster)
+
+# libpslib
+set (GMT_PSL_SRCS postscriptlight.c declspec.h psl_config.h PSL_Standard+.h
+	PSL_Standard.h PSL_ISOLatin1+.h PSL_ISOLatin1.h PSL_ISO-8859-1.h
+	PSL_ISO-8859-2.h PSL_ISO-8859-3.h PSL_ISO-8859-4.h PSL_ISO-8859-5.h
+	PSL_ISO-8859-6.h PSL_ISO-8859-7.h PSL_ISO-8859-8.h PSL_ISO-8859-9.h
+	PSL_ISO-8859-10.h PSL_ISO-8859-13.h PSL_ISO-8859-14.h PSL_ISO-8859-15.h
+	PSL_strings.h PSL_patterns.h)
+
+set (GMT_MBSYSTEM_SRCS gmt_mbsystem_module.c gmt_mbsystem_module.h)
+
+# libgmt
+set (GMT_LIB_SRCS block_subs.h common_byteswap.h common_math.h
+	common_runpath.h common_sighandler.c common_string.h clear.c begin.c
+	gmt_color_rgb.h gmt_colornames.h
+	gmt_modern.c end.c declspec.h gmt_hidden.h gmt_remote.h gmt_remote.c
+	figure.c gmt_dev.h gmt_common.h gmt_constants.h compat/qsort.h
+	gmt_contour.h gmt_customio.h gmt_datums.h gmt_dcw.h gmt_decorate.h gmt_defaults.h
+	gmt_ellipsoids.h gmt_error.h gmt_gdalread.h gmt_glib.h gmt_grd.h gmt_grdio.h gmt_hash.h
+	gmt_internals.h gmt_io.h gmt_macros.h gmt_media_name.h gmt_modern.h
+	gmt_media_size.h gmt_mgg_header2.h gmt_sharedlibs.h gmt_memory.h gmt_mb.h
+	gmt_core_module.h gmt_nan.h gmt_notposix.h gmt_pennames.h gmt_enum_dict.h
+	gmt_plot.h gmt_project.h gmt_prototypes.h gmt_psl.h gmt_shore.h gmt_gsformats.h
+	gmt_symbol.h gmt_synopsis.h gmt_texture.h gmt_time.h gmt_cpt_masters.h
+	gmt_types.h gmt_unique.h gmt_version.h gshhg_version.h postscriptlight.h
+	s_rint.h triangle.h gmt.h gmt_resources.h gmt_private.h subplot.c
+	gmt_error_codes.h gmt_api.c gmt_bcr.c gmt_calclock.c gmt_cdf.c gmt_compat.c
+	gmt_customio.c gmt_dcw.c gmt_error.c gmt_fft.c gmt_grdio.c gmt_io.c
+	gmt_memory.c gmt_nc.c gmt_notposix.c gmt_proj.c gmt_shore.c gmt_sph.c
+	gmt_stat.c gmt_support.c gmt_regexp.c gmt_vector.c gmt_parse.c inset.c
+	gmt_error_codes.c gshhg_version.c gmtread.c gmtwrite.c common_math.c
+	common_runpath.c common_sighandler.c common_string.c compat/qsort.c
+	gmt_sharedlibs.c gmt_core_module.c gmt_init.c gmt_map.c gmt_plot.c
+	kiss_fft/_kiss_fft_guts.h kiss_fft/kiss_fft.c kiss_fft/kiss_fft.h
+	kiss_fft/kiss_fftnd.c kiss_fft/kiss_fftnd.h
+	${GMT_TRIANGLE_SRCS} ${GMT_MBSYSTEM_SRCS})
+
+if (BUILD_SUPPLEMENTS)
+	# Needed in supplib, + supplements themselves
+	set (GMT_SUPPL_SRCS gmt_modern.c gmt_supplements_module.h gmt_supplements_module.c)
+endif (BUILD_SUPPLEMENTS)
+
+# dependencies on generated files
+set (GMT_GEN_HDRS gmt_keycases.h
+	gmt_keywords.h gmt_config.h
+	gmt_dimensions.h
+	CACHE INTERNAL "Autogenerated GMT headers")
+
+# Add commands to create header files
+
+add_custom_command (OUTPUT gmt_keycases.h gmt_keywords.h
+	COMMAND ${CMAKE_COMMAND}
+	-D GENERATE_COMMAND=gen_gmt_keywords_h
+	-D CMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}
+	-D GMT_SRC=${GMT_SOURCE_DIR}
+	-P ${CMAKE_MODULE_PATH}/GmtGenExtraHeaders.cmake
+	DEPENDS gmt_keywords.txt gmt_keywords.d)
+
+add_custom_command (OUTPUT gmt_dimensions.h
+	COMMAND ${CMAKE_COMMAND}
+	-D GENERATE_COMMAND=gen_gmt_dimensions_h
+	-D CMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}
+	-D GMT_SRC=${GMT_SOURCE_DIR}
+	-P ${CMAKE_MODULE_PATH}/GmtGenExtraHeaders.cmake
+	DEPENDS gmt_media_name.h gmt_pennames.h gmt_unique.h gmt_cpt_masters.h
+	gmt_keycases.h)
+	# depends on cached line numbers from these generated files:
+
+# autogenerated files target
+add_custom_target (gen_gmt_headers DEPENDS ${GMT_GEN_HDRS})
+
+# Configure header files to pass some of the CMake settings to the source code
+configure_file (gmt_config.h.in gmt_config.h)
+configure_file (psl_config.h.in psl_config.h)
+configure_file (gmt_version.h.in gmt_version.h)
+configure_file (isogmt.in isogmt${GMT_INSTALL_NAME_SUFFIX} @ONLY)
+configure_file (gmt-config.in gmt-config${GMT_INSTALL_NAME_SUFFIX} @ONLY)
+
+# gmtprogram
+set (GMT_PROGRAM ${GMT_SOURCE_DIR}/src/gmtprogram.c)
+
+# extra ugly definitions for triangle
+set_source_files_properties (triangle.c
+	PROPERTIES
+	COMPILE_DEFINITIONS "NO_TIMER;TRILIBRARY;REDUCED;CDT_ONLY;ANSI_DECLARATORS")
+
+# libpslib
+add_library (pslib
+	${GMT_GEN_HDRS}
+	${GMT_PSL_SRCS})
+
+add_dependencies (pslib gen_gmt_headers) # make pslib after gen_gmt_headers
+
+if (HAVE_M_LIBRARY)
+	# link the math library
+	target_link_libraries (pslib m)
+endif (HAVE_M_LIBRARY)
+
+if (HAVE_ZLIB)
+	# for DEFLATE encoding
+  target_link_libraries (pslib ${ZLIB_LIBRARIES})
+endif (HAVE_ZLIB)
+
+# set the build version (VERSION) and the API version (SOVERSION)
+set_target_properties (pslib
+	PROPERTIES
+	OUTPUT_NAME postscriptlight
+	PREFIX "${LIB_PREFIX}"
+	IMPORT_PREFIX "${LIB_PREFIX}"
+	VERSION ${GMT_LIB_VERSION}
+	SOVERSION ${GMT_LIB_SOVERSION}
+	DEFINE_SYMBOL "LIBRARY_EXPORTS")
+
+# If a renaming of the gmtpslpsl dll has been set in ConfigUser.cmake
+if (WIN32 AND PSL_DLL_RENAME)
+	set_target_properties (pslib PROPERTIES RUNTIME_OUTPUT_NAME ${PSL_DLL_RENAME})
+endif (WIN32 AND PSL_DLL_RENAME)
+
+if (BUILD_SUPPLEMENTS)
+	# supplement directories (only those, which are to be included in gmtlib)
+	# EXTRA_BUILD_DIRS are for testing new supplements that are not yet in
+	# subversion. See cmake/ConfigUserTemplate.cmake for setting this parameter.
+	set (GMT_SUPPL_DIRS geodesy gshhg img mgd77 potential segy seis
+		spotter x2sys ${EXTRA_BUILD_DIRS})
+endif (BUILD_SUPPLEMENTS)
+
+# path to all binary dirs (used to set PATH in test scripts)
+set (GMT_BINARY_DIR_PATH "${CMAKE_CURRENT_BINARY_DIR}/\${CMAKE_CONFIG_TYPE:-.}")
+
+if (BUILD_SUPPLEMENTS)
+	# process supplement directories
+	if (UNIX)
+		set (CMAKE_SHARED_MODULE_SUFFIX .so)
+	endif (UNIX)
+	foreach (_dir ${GMT_SUPPL_DIRS})
+		add_subdirectory (${_dir})
+		list (APPEND GMT_BINARY_DIR_PATH
+			"${CMAKE_CURRENT_BINARY_DIR}/${_dir}/\${CMAKE_CONFIG_TYPE:-.}")
+	endforeach (_dir)
+	# supplement library files
+	get_subdir_var_files (GMT_SUPPL_LIB_SRCS LIB_SRCS ${GMT_SUPPL_DIRS})
+
+	# include supplement directories
+	foreach (_dir ${GMT_SUPPL_DIRS})
+		include_directories (${CMAKE_CURRENT_BINARY_DIR}/${_dir})
+	endforeach (_dir)
+	# libgmtsuppl
+	if (WIN32)
+		add_library (supplib
+			${GMT_GEN_HDRS}
+			${GMT_SUPPL_SRCS}
+			${GMT_SUPPL_LIB_SRCS})
+	else (WIN32)
+		add_library (supplib MODULE
+			${GMT_GEN_HDRS}
+			${GMT_SUPPL_SRCS}
+			${GMT_SUPPL_LIB_SRCS})
+	endif (WIN32)
+
+	add_dependencies (supplib gen_gmt_headers) # make supplib after gen_gmt_headers
+	add_dependencies (supplib pslib) # make supplib after pslib
+	add_dependencies (supplib gmtlib) # make supplib after pslib
+
+	# No SOVERSION & VERSION for a MODULE, only for SHARED libs
+	target_link_libraries (supplib
+		gmtlib
+		pslib)
+
+	# Include any extra files that are listed in EXTRA_INCLUDE_GMTSUPPL defined in ConfigUser.cmake
+	# This include(s) will add new modules to the official GMT supplements
+	if (EXTRA_INCLUDE_GMTSUPPL)
+		foreach (_f ${EXTRA_INCLUDE_GMTSUPPL})
+			include (${_f})
+		endforeach(_f)
+	endif (EXTRA_INCLUDE_GMTSUPPL)
+
+	set_target_properties (supplib
+		PROPERTIES
+		OUTPUT_NAME supplements
+		RUNTIME_OUTPUT_NAME supplements
+		LIBRARY_OUTPUT_DIRECTORY plugins
+		RUNTIME_OUTPUT_DIRECTORY plugins
+		PREFIX ""
+		LINK_FLAGS "${USER_GMTLIB_LINK_FLAGS}"
+		DEFINE_SYMBOL "LIBRARY_EXPORTS")
+
+	if (WIN32 AND SUPP_DLL_RENAME)
+		set_target_properties (supplib PROPERTIES RUNTIME_OUTPUT_NAME ${SUPP_DLL_RENAME})
+	endif (WIN32 AND SUPP_DLL_RENAME)
+
+	if (HAVE_DLADDR AND HAVE_LIBDL)
+		# link the dynamic linking loader library
+		target_link_libraries (supplib dl)
+	endif (HAVE_DLADDR AND HAVE_LIBDL)
+
+	if (HAVE_M_LIBRARY)
+		# link the math library
+		target_link_libraries (supplib m)
+	endif (HAVE_M_LIBRARY)
+
+	# install target
+	install (TARGETS supplib
+		LIBRARY DESTINATION ${GMT_LIBDIR}/gmt${GMT_INSTALL_NAME_SUFFIX}/plugins # UNIX
+		COMPONENT Runtime
+		RUNTIME DESTINATION ${GMT_BINDIR}/gmt_plugins # Windows
+		COMPONENT Runtime)
+endif (BUILD_SUPPLEMENTS)
+
+# Include any extra files that are listed in EXTRA_INCLUDE_NEWSUPPL defined in ConfigUser.cmake
+# This include(s) will create new pluggins
+if (EXTRA_INCLUDE_NEWSUPPL)
+	foreach (_f ${EXTRA_INCLUDE_NEWSUPPL})
+		include (${_f})
+	endforeach(_f)
+endif (EXTRA_INCLUDE_NEWSUPPL)
+
+
+# make UNIX PATH variable
+string (REPLACE ";" ":" GMT_BINARY_DIR_PATH "${GMT_BINARY_DIR_PATH}")
+set (GMT_BINARY_DIR_PATH ${GMT_BINARY_DIR_PATH} CACHE INTERNAL
+	"UNIX PATH to all binary dirs")
+
+# libgmt
+add_library (gmtlib
+	${GMT_GEN_HDRS}
+	${GMT_LIB_SRCS}
+	${GMT_PROGS_SRCS})
+
+add_dependencies (gmtlib gen_gmt_headers) # make gmtlib after gen_gmt_headers
+add_dependencies (gmtlib pslib) # make gmtlib after pslib
+
+target_link_libraries (gmtlib
+	${NETCDF_LIBRARIES}
+	${GMT_OPTIONAL_LIBRARIES}
+	pslib)
+
+if (HAVE_M_LIBRARY)
+	# link the math library
+	target_link_libraries (gmtlib m)
+endif (HAVE_M_LIBRARY)
+
+# set the build version (VERSION) and the API version (SOVERSION)
+set_target_properties (gmtlib
+	PROPERTIES
+	OUTPUT_NAME gmt
+	PREFIX "${LIB_PREFIX}"
+	IMPORT_PREFIX "${LIB_PREFIX}"
+	VERSION ${GMT_LIB_VERSION}
+	SOVERSION ${GMT_LIB_SOVERSION}
+	LINK_FLAGS "${USER_GMTLIB_LINK_FLAGS}"
+	DEFINE_SYMBOL "LIBRARY_EXPORTS")
+
+# If a renaming of the gmt dll has been set in ConfigUser.cmake
+if (WIN32 AND GMT_DLL_RENAME)
+	set_target_properties (gmtlib PROPERTIES RUNTIME_OUTPUT_NAME ${GMT_DLL_RENAME})
+endif (WIN32 AND GMT_DLL_RENAME)
+
+if (HAVE_DLADDR AND HAVE_LIBDL)
+	# link the dynamic linking loader library
+	target_link_libraries (pslib dl)
+	target_link_libraries (gmtlib dl)
+endif (HAVE_DLADDR AND HAVE_LIBDL)
+
+if (MSVC AND FFTW3_FOUND)
+	target_link_libraries (gmtlib ws2_32)
+endif (MSVC AND FFTW3_FOUND)
+
+# build targets for standalone gmt target and demos
+string (REPLACE ".c" "" _gmt_progs "gmt.c;${GMT_DEMOS_SRCS}")
+foreach (_gmt_prog ${_gmt_progs})
+	add_executable (${_gmt_prog} ${_gmt_prog}.c)
+	target_link_libraries (${_gmt_prog} gmtlib)
+endforeach (_gmt_prog)
+
+add_executable (psldemo psldemo.h psldemo.c)
+target_link_libraries (psldemo pslib)
+
+# Rename gmt target to prevent version clash
+set_target_properties (gmt PROPERTIES OUTPUT_NAME gmt${GMT_INSTALL_NAME_SUFFIX})
+
+# generate and install Mac/Windows debugging symbols
+create_debug_sym (${GMT_BINDIR} gmt)
+if (WIN32)
+	create_debug_sym (${GMT_BINDIR} gmtlib pslib)
+	create_debug_sym (${GMT_BINDIR}/gmt_plugins supplib)
+else (WIN32)
+	create_debug_sym (${GMT_LIBDIR} gmtlib pslib)
+	create_debug_sym (${GMT_LIBDIR}/gmt${GMT_INSTALL_NAME_SUFFIX}/plugins supplib)
+endif (WIN32)
+
+# gshhg_version
+add_executable (gshhg_version gshhg_version.h gshhg_version.c)
+set_target_properties (gshhg_version
+	PROPERTIES COMPILE_DEFINITIONS "STANDALONE")
+target_link_libraries (gshhg_version ${NETCDF_LIBRARIES})
+
+# script2verbatim for removing svn keywords, comments etc. from example scripts
+add_executable (script2verbatim script2verbatim.c)
+
+if (BUILD_SUPPLEMENTS)
+	# Tests depend on GMT progs and supplements:
+	add_dependencies (check ${_gmt_progs} psldemo supplib)
+else (BUILD_SUPPLEMENTS)
+	# Tests depend on GMT progs and supplements:
+	add_dependencies (check ${_gmt_progs} psldemo)
+endif (BUILD_SUPPLEMENTS)
+
+if (MSVC)
+	# Disable automatic manifest generation
+	string(REGEX REPLACE "/MANIFEST[^ ]*( |$)" ""
+		CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
+	set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
+
+	# To expand the command line arguments in Windows, see:
+	# http://msdn.microsoft.com/en-us/library/8bch7bkk.aspx
+	set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} setargv.obj")
+endif (MSVC)
+
+# add the install targets
+install (TARGETS gmtlib pslib gmt
+	ARCHIVE DESTINATION ${GMT_LIBDIR}
+	COMPONENT Runtime
+	LIBRARY DESTINATION ${GMT_LIBDIR}
+	COMPONENT Runtime
+	RUNTIME DESTINATION ${GMT_BINDIR}
+	COMPONENT Runtime)
+
+string (REPLACE ".c" "" _gmt_modules "${GMT_PROGS_SRCS}")
+install_module_symlink (${_gmt_modules} ${GMT_COMPAT_MODULES})
+
+# Install public headers
+install (FILES gmt.h gmt_resources.h declspec.h
+	DESTINATION ${GMT_INCLUDEDIR}
+	COMPONENT Runtime)
+
+if (BUILD_DEVELOPER)
+	# Install Developer headers [These are clean and have no #define HAVE_* configuration]
+	install (FILES postscriptlight.h common_math.h common_string.h gmt_common.h gmt_constants.h gmt_contour.h
+		gmt_dcw.h gmt_decorate.h gmt_defaults.h gmt_error.h gmt_error_codes.h gmt_fft.h gmt_gdalread.h gmt_grd.h
+		gmt_grdio.h gmt_hash.h gmt_io.h gmt_macros.h gmt_memory.h gmt_modern.h gmt_nan.h gmt_notposix.h gmt_plot.h
+		gmt_private.h gmt_project.h gmt_prototypes.h gmt_psl.h gmt_shore.h gmt_symbol.h gmt_synopsis.h
+		gmt_texture.h gmt_time.h gmt_types.h gmt_dev.h gmt_customio.h gmt_hidden.h gmt_mb.h
+		gmt_core_module.h gmt_supplements_module.h compat/qsort.h
+		DESTINATION ${GMT_INCLUDEDIR}
+		COMPONENT Runtime)
+	install (FILES compat/qsort.h
+		DESTINATION ${GMT_INCLUDEDIR}/compat
+		COMPONENT Runtime)
+	# Install Configured Developer headers [These are produced by cmake from *.h.in files]
+	install (FILES ${PROJECT_BINARY_DIR}/src/config.h ${PROJECT_BINARY_DIR}/src/gmt_config.h
+		${PROJECT_BINARY_DIR}/src/gmt_dimensions.h ${PROJECT_BINARY_DIR}/src/gmt_version.h
+		${PROJECT_BINARY_DIR}/src/psl_config.h
+		DESTINATION ${GMT_INCLUDEDIR}
+		COMPONENT Runtime)
+endif (BUILD_DEVELOPER)
+
+# symlink to gmt-wrapper in bindir and libdir:
+if (UNIX AND GMT_INSTALL_NAME_SUFFIX)
+	get_target_property(_gmt_wrapper_name gmt OUTPUT_NAME)
+	install (CODE "
+	execute_process (
+		COMMAND ${CMAKE_COMMAND} -E create_symlink
+		\"${_gmt_wrapper_name}\" \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${GMT_BINDIR}/gmt\")
+	")
+endif (UNIX AND GMT_INSTALL_NAME_SUFFIX)
+
+# install extra files
+install (PROGRAMS
+	${CMAKE_CURRENT_BINARY_DIR}/isogmt${GMT_INSTALL_NAME_SUFFIX}
+	${CMAKE_CURRENT_BINARY_DIR}/gmt-config${GMT_INSTALL_NAME_SUFFIX}
+	DESTINATION ${GMT_BINDIR}
+	COMPONENT Runtime)
+
+install (PROGRAMS gmtswitch
+	RENAME gmtswitch${GMT_INSTALL_NAME_SUFFIX}
+	DESTINATION ${GMT_BINDIR}
+	COMPONENT Runtime)
+
+install (PROGRAMS gmt_shell_functions.sh
+	RENAME gmt_shell_functions${GMT_INSTALL_NAME_SUFFIX}.sh
+	DESTINATION ${GMT_BINDIR}
+	COMPONENT Runtime)
+
+if (WIN32)
+	install (PROGRAMS
+		gmtswitch.bat
+		DESTINATION ${GMT_BINDIR}
+		COMPONENT Runtime)
+endif (WIN32)
+
+# this prints out the final version of the compiler/linker flags
+string (TOUPPER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_UPPER)
+string(REGEX REPLACE "[ ]+" " " _using_cflags ${CMAKE_C_FLAGS} " "
+	${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_UPPER}})
+message (STATUS "Using CFLAGS = '${_using_cflags}'")
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/install-6-linux-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/install-6-linux-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/install-6-linux-static.sh	(revision 27955)
@@ -0,0 +1,86 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="6.0.0"
+
+# Find libgfortran and libgcc so we do not have to hardcode them
+#
+# TODO:
+# - Move this to etc/environment.sh
+# - Test if -static-libgfortran flag will avoid all of this.
+# - Otherwise, refactor this to work with other gfortran installations.
+#
+echo "Finding libgfortran..."
+LIBGFORTRAN=$(find /usr -name libgfortran* 2>/dev/null | egrep -n libgfortran.a | sed "s/[0-9]*://g" | head -1)
+LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+LIBGCC=$(find ${LIBGFORTRAN_ROOT} -name libgcc* 2>/dev/null | egrep -n libgcc.a | sed "s/[0-9]*://g" | head -1)
+
+GDAL_EXTRA_LIBS="-lstdc++" # Determined by running `$GDAL_ROOT/bin/gdal-config --dep-libs` then removing duplicate libs
+NETCDF_EXTRA_LIBS="-lm -ldl -lz" # `$NETCDF_ROOT/bin/nc-config --libs` does not report certain dependencies of certain static libraries (see also customized configuration file ./configs/6.0/static/cmake/modules/FindNETCDF.cmake)
+
+# Environment
+#
+export CC=mpicc
+export CURL_INCLUDE_DIRS="${CURL_ROOT}/include"
+export CURL_LIBRARIES="${CURL_ROOT}/lib/libcurl.a;/usr/lib/x86_64-linux-gnu/libssl.a;/usr/lib/x86_64-linux-gnu/libcrypto.a"
+export PREFIX="${ISSM_DIR}/externalpackages/gmt/install" # NOTE: Need to export this to be picked up by customized ConfigUser.cmake (see below). Set to location where external package should be installed.
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmt-${VER}.tar.gz" "gmt-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf gmt-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source to 'src' directory
+mv gmt-${VER}/* src
+rm -rf gmt-${VER}
+
+# Copy custom configuration files
+cp ./configs/6/static/linux/cmake/ConfigUser.static.cmake ./src/cmake/ConfigUser.cmake
+cp ./configs/6/static/cmake/modules/FindGDAL.cmake ./src/cmake/modules
+cp ./configs/6/static/cmake/modules/FindGSHHG.cmake ./src/cmake/modules
+cp ./configs/6/static/cmake/modules/FindNETCDF.cmake ./src/cmake/modules
+cp ./configs/6/static/src/CMakeLists.txt ./src/src
+
+# Configure
+cd src
+mkdir build
+cd build
+
+# NOTE:
+# - The CMake modules used to find and probe the BLAS and LAPACK libraries do
+#	not seem to handle the situation where BLAS_LIBRARY and LAPACK_LIBRARY are
+#	set but we are working with static libraries
+#	(see customized ConfigUser.static.cmake). Using BLAS_LIBRARIES and
+#	LAPACK_LIBRARIES is a workaround.
+#
+cmake \
+	-DBLAS_LIBRARIES="${BLAS_ROOT}/lib/libfblas.a;${LIBGFORTRAN_ROOT}/libgfortran.a;${LIBGFORTRAN_ROOT}/libquadmath.a;${LIBGCC}" \
+	-DCURL_INCLUDE_DIR="${CURL_ROOT}/include" \
+	-DCURL_LIBRARY="${CURL_ROOT}/lib/libcurl.a" \
+	-DGDAL_EXTRA_LIBS="${GDAL_EXTRA_LIBS}" \
+	-DLAPACK_LIBRARIES="${LAPACK_ROOT}/lib/libflapack.a;${LIBGFORTRAN_ROOT}/libgfortran.a;${LIBGFORTRAN_ROOT}/libquadmath.a;${LIBGCC}" \
+	-DNETCDF_EXTRA_LIBS="${NETCDF_EXTRA_LIBS}" \
+	..
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+
+# Make necessary link on RHEL
+if [[ -d ${PREFIX}/lib64 && ! -d ${PREFIX}/lib ]]; then
+	cd ${PREFIX}
+	ln -s ./lib64 ./lib
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/install-6-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/install-6-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/install-6-linux.sh	(revision 27955)
@@ -0,0 +1,72 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="6.4.0"
+
+# Find libgfortran so that we do not have to hardcode it.
+#
+# TODO:
+# - Move this to etc/environment.sh
+#
+echo "Finding libgfortran..."
+LIBGFORTRAN=$(find /usr -name libgfortran* 2>/dev/null | egrep -n libgfortran.a | sed "s/[0-9]*://g" | head -1)
+LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+
+# Environment
+#
+export CC=mpicc
+export PREFIX="${ISSM_DIR}/externalpackages/gmt/install" # NOTE: Need to export this to be picked up by customized ConfigUser.cmake (see below). Set to location where external package should be installed.
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmt-${VER}.tar.gz" "gmt-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf gmt-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source to 'src' directory
+mv gmt-${VER}/* src
+rm -rf gmt-${VER}
+
+# Copy custom configuration files
+cp ./configs/6/linux/cmake/ConfigUser.cmake ./src/cmake
+
+# Configure
+cd src
+mkdir build
+cd build
+
+# NOTE:
+# - There is a CMake variable named CURL_ROOT in src/cmake/ConfigUser.cmake
+#	that, ostensibly, allows for supplying the path to curl when it is in a
+#	non-standard location. That said, newer versions of CMake will ignore said
+#	variable and instead try to find curl itself. Passing in the two options
+#	below overrides this behavior.
+#
+cmake \
+	-DBLAS_LIBRARIES="-L${BLAS_ROOT}/lib;-lfblas;-L${LIBGFORTRAN_ROOT};-lgfortran" \
+	-DCURL_INCLUDE_DIR="${CURL_ROOT}/include" \
+	-DCURL_LIBRARY="-L${CURL_ROOT}/lib;-lcurl" \
+	-DLAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib;-lflapack;-L${LIBGFORTRAN_ROOT};-lgfortran" \
+	..
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+
+# Make necessary link on RHEL
+if [[ -d ${PREFIX}/lib64 && ! -d ${PREFIX}/lib ]]; then
+	cd ${PREFIX}
+	ln -s ./lib64 ./lib
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/install-6-mac-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/install-6-mac-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/install-6-mac-static.sh	(revision 27955)
@@ -0,0 +1,80 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="6.0.0"
+
+# Find libgfortran and libgcc so we do not have to hardcode them
+#
+# TODO:
+# - Move this to etc/environment.sh
+# - Test if -static-libgfortran flag will avoid all of this.
+# - Otherwise, refactor this to work with other gfortran installations.
+#
+echo "Finding libgfortran..."
+LIBGFORTRAN=$(find /usr /opt -name libgfortran* 2>/dev/null | egrep -n libgfortran.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
+LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+LIBGCC=$(find ${LIBGFORTRAN_ROOT} -name libgcc* 2>/dev/null | egrep -n libgcc.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
+
+GDAL_EXTRA_LIBS="-lc++" # `$GDAL_ROOT/bin/gdal-config --dep-libs` does not report need to link to libc++ (see also customized configuration file ./configs/6/static/cmake/modules/FindGDAL.cmake)
+NETCDF_EXTRA_LIBS="-lpthread -ldl -liconv" # `$NETCDF_ROOT/bin/nc-config --libs` does not report certain dependencies of certain static libraries (see also customized configuration file ./configs/6/static/cmake/modules/FindNETCDF.cmake)
+
+# Environment
+#
+export CC=mpicc
+export CURL_INCLUDE_DIRS="${CURL_ROOT}/include"
+export CURL_LIBRARIES="${CURL_ROOT}/lib/libcurl.a;${ZLIB_ROOT}/lib/libz.a"
+export LDFLAGS="-lsqlite3 -framework CoreFoundation -framework Security"
+export PREFIX="${ISSM_DIR}/externalpackages/gmt/install" # NOTE: Need to export this to be picked up by customized ConfigUser.cmake (see below). Set to location where external package should be installed.
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmt-${VER}.tar.gz" "gmt-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf gmt-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source to 'src' directory
+mv gmt-${VER}/* src
+rm -rf gmt-${VER}
+
+# Copy custom configuration files
+cp ./configs/6/static/mac/cmake/ConfigUser.static.cmake ./src/cmake/ConfigUser.cmake
+cp ./configs/6/static/cmake/modules/FindGDAL.cmake ./src/cmake/modules
+cp ./configs/6/static/cmake/modules/FindGSHHG.cmake ./src/cmake/modules
+cp ./configs/6/static/cmake/modules/FindNETCDF.cmake ./src/cmake/modules
+
+# Configure
+cd src
+mkdir build
+cd build
+
+# NOTE:
+# - The CMake modules used to find and probe the BLAS and LAPACK libraries do
+#	not seem to handle the situation where BLAS_LIBRARY and LAPACK_LIBRARY are
+#	set but we are working with static libraries
+#	(see customized ConfigUser.static.cmake). Using BLAS_LIBRARIES and
+#	LAPACK_LIBRARIES is a workaround.
+#
+cmake \
+	-DBLAS_LIBRARIES="${BLAS_ROOT}/lib/libfblas.a;${LIBGFORTRAN_ROOT}/libgfortran.a;${LIBGFORTRAN_ROOT}/libquadmath.a;${LIBGCC}" \
+	-DCURL_INCLUDE_DIR="${CURL_ROOT}/include" \
+	-DCURL_LIBRARY="${CURL_ROOT}/lib/libcurl.a" \
+	-DGDAL_EXTRA_LIBS="${GDAL_EXTRA_LIBS}" \
+	-DLAPACK_LIBRARIES="${LAPACK_ROOT}/lib/libflapack.a;${LIBGFORTRAN_ROOT}/libgfortran.a;${LIBGFORTRAN_ROOT}/libquadmath.a;${LIBGCC}" \
+	-DNETCDF_EXTRA_LIBS="${NETCDF_EXTRA_LIBS}" \
+	..
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/install-6-mac.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/install-6-mac.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gmt/install-6-mac.sh	(revision 27955)
@@ -0,0 +1,68 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="6.4.0"
+
+# Find libgfortran so that we do not have to hardcode it.
+#
+# TODO:
+# - Move this to etc/environment.sh
+#
+echo "Finding libgfortran..."
+LIBGFORTRAN=$(find /usr /opt -name libgfortran* 2>/dev/null | egrep -n libgfortran.a | egrep -v i386 | sed "s/[0-9]*://g" | head -1)
+LIBGFORTRAN_ROOT=${LIBGFORTRAN%/*}
+
+# Environment
+#
+export CC=mpicc
+export PREFIX="${ISSM_DIR}/externalpackages/gmt/install" # NOTE: Need to export this to be picked up by customized ConfigUser.cmake (see below). Set to location where external package should be installed.
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gmt-${VER}.tar.gz" "gmt-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf gmt-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source to 'src' directory
+mv gmt-${VER}/* src
+rm -rf gmt-${VER}
+
+# Copy custom configuration files
+cp ./configs/6/mac/cmake/ConfigUser.cmake ./src/cmake
+cp ./configs/6/mac/cmake/modules/ConfigCMake.cmake ./src/cmake/modules
+
+# Configure
+cd src
+mkdir build
+cd build
+
+# NOTE:
+# - There is a CMake variable named CURL_ROOT in src/cmake/ConfigUser.cmake
+#	that, ostensibly, allows for supplying the path to curl when it is in a
+#	non-standard location. That said, newer versions of CMake will ignore said
+#	variable and instead try to find curl itself. Passing in the two options
+#	below overrides this behavior.
+#
+cmake \
+	-DBLAS_LIBRARIES="-L${BLAS_ROOT}/lib;-lfblas;-L${LIBGFORTRAN_ROOT};-lgfortran" \
+	-DCURL_INCLUDE_DIR="${CURL_ROOT}/include" \
+	-DCURL_LIBRARY="-L${CURL_ROOT}/lib;-lcurl" \
+	-DLAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib;-lflapack;-L${LIBGFORTRAN_ROOT};-lgfortran" \
+	-DLIBGFORTRAN_ROOT="${LIBGFORTRAN_ROOT}" \
+	..
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/googleearthtoolbox/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/googleearthtoolbox/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/googleearthtoolbox/install.sh	(revision 27955)
@@ -0,0 +1,8 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install  
+
+#Download code: 
+svn checkout http://googleearthtoolbox.googlecode.com/svn/trunk/ install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gshhg/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gshhg/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gshhg/install.sh	(revision 27955)
@@ -0,0 +1,22 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="2.3.4"
+
+PREFIX="${ISSM_DIR}/externalpackages/gshhg/install" # Set to location where external package should be installed
+
+# Cleanup
+rm -rf ${PREFIX}
+mkdir -p ${PREFIX}
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gshhg-gmt-${VER}.tar.gz" "gshhg-gmt-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf gshhg-gmt-${VER}.tar.gz
+
+# Install
+mv gshhg-gmt-${VER}/* ${PREFIX}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/Makefile.am.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/Makefile.am.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/Makefile.am.patch	(revision 27955)
@@ -0,0 +1,27 @@
+--- Makefile.am	2011-04-14 08:13:48.000000000 -0700
++++ Makefile.am_tmp	2012-11-12 14:54:02.000000000 -0800
+@@ -24,10 +24,22 @@
+ noinst_HEADERS = templates_on.h templates_off.h build.h
+ 
+ MINGW32_HOST = @MINGW32_HOST@
+-if MINGW32_HOST
++
++# Origional 'Makefile.am' sets 'libgslcblas.la' as a requirement for
++#'libgsl.ls' only if the host system is detected to be MingW32. This
++# is unfortunate as 'libgsl.la' has undefined 'cblas' symbols the
++# result is linking errors at run time. This patch sets the 'cblas'
++# library as a requirement for linking 'libgsl'.
++#
++# Origional script:
++#
++# if MINGW32_HOST
++# libgsl_la_LIBADD += cblas/libgslcblas.la
++# libgsl_la_LDFLAGS += -no-undefined
++# endif
++
+ libgsl_la_LIBADD += cblas/libgslcblas.la
+ libgsl_la_LDFLAGS += -no-undefined
+-endif
+ 
+ m4datadir = $(datadir)/aclocal
+ m4data_DATA = gsl.m4
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/README
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/README	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/README	(revision 27955)
@@ -0,0 +1,1 @@
+GNU Scientfic Library, obtained from: http://www.gnu.org/software/gsl/
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/finite.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/finite.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/finite.patch	(revision 27955)
@@ -0,0 +1,354 @@
+diff -ruN src/gsl_math.h src-mod/gsl_math.h
+--- src/gsl_math.h	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/gsl_math.h	2014-05-27 18:47:26.000000000 -0700
+@@ -116,7 +116,7 @@
+ #define GSL_SIGN(x)    ((x) >= 0.0 ? 1 : -1)
+ 
+ /* Return nonzero if x is a real number, i.e. non NaN or infinite. */
+-#define GSL_IS_REAL(x) (gsl_finite(x))
++#define GSL_IS_REAL(x) (isfinite(x))
+ 
+ /* Definition of an arbitrary function with parameters */
+ 
+diff -ruN src/integration/cquad.c src-mod/integration/cquad.c
+--- src/integration/cquad.c	2011-05-01 11:46:28.000000000 -0700
++++ src-mod/integration/cquad.c	2014-05-27 18:47:26.000000000 -0700
+@@ -235,7 +235,7 @@
+     {
+       iv->fx[i] = GSL_FN_EVAL (f, m + xi[i] * h);
+       neval++;
+-      if (!finite (iv->fx[i]))
++      if (!isfinite (iv->fx[i]))
+ 	{
+ 	  nans[nnans++] = i;
+ 	  iv->fx[i] = 0.0;
+@@ -319,7 +319,7 @@
+ 	  nnans = 0;
+ 	  for (i = 0; i <= 32; i += skip[d])
+ 	    {
+-	      if (!finite (iv->fx[i]))
++	      if (!isfinite (iv->fx[i]))
+ 		{
+ 		  nans[nnans++] = i;
+ 		  iv->fx[i] = 0.0;
+@@ -444,7 +444,7 @@
+ 	  nnans = 0;
+ 	  for (i = 0; i <= 32; i += skip[0])
+ 	    {
+-	      if (!finite (ivl->fx[i]))
++	      if (!isfinite (ivl->fx[i]))
+ 		{
+ 		  nans[nnans++] = i;
+ 		  ivl->fx[i] = 0.0;
+@@ -510,7 +510,7 @@
+ 	  nnans = 0;
+ 	  for (i = 0; i <= 32; i += skip[0])
+ 	    {
+-	      if (!finite (ivr->fx[i]))
++	      if (!isfinite (ivr->fx[i]))
+ 		{
+ 		  nans[nnans++] = i;
+ 		  ivr->fx[i] = 0.0;
+diff -ruN src/linalg/balance.c src-mod/linalg/balance.c
+--- src/linalg/balance.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/linalg/balance.c	2014-05-27 18:47:27.000000000 -0700
+@@ -54,7 +54,7 @@
+       
+       double f = 1.0;
+       
+-      if (s == 0.0 || !gsl_finite(s))
++      if (s == 0.0 || !isfinite(s))
+         {
+           gsl_vector_set (D, j, f);
+           continue;
+diff -ruN src/min/min.h src-mod/min/min.h
+--- src/min/min.h	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/min/min.h	2014-05-27 18:47:27.000000000 -0700
+@@ -20,6 +20,6 @@
+ #define SAFE_FUNC_CALL(f, x, yp) \
+ do { \
+   *yp = GSL_FN_EVAL(f,x); \
+-  if (!gsl_finite(*yp)) \
++  if (!isfinite(*yp)) \
+     GSL_ERROR("computed function value is infinite or NaN", GSL_EBADFUNC); \
+ } while (0)
+diff -ruN src/multimin/simplex.c src-mod/multimin/simplex.c
+--- src/multimin/simplex.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/multimin/simplex.c	2014-05-27 18:47:27.000000000 -0700
+@@ -122,7 +122,7 @@
+ 	     we finish the contraction (and do not abort) to allow the user
+ 	     to handle the situation */
+ 
+-          if(!gsl_finite(newval))
++          if(!isfinite(newval))
+ 	    {
+ 	      status = GSL_EBADFUNC;
+ 	    }
+@@ -260,7 +260,7 @@
+ 
+   val = GSL_MULTIMIN_FN_EVAL (f, x);
+   
+-  if (!gsl_finite(val))
++  if (!isfinite(val))
+     {
+       GSL_ERROR("non-finite function value encountered", GSL_EBADFUNC);
+     }
+@@ -283,7 +283,7 @@
+       gsl_vector_set (xtemp, i, val);
+       val = GSL_MULTIMIN_FN_EVAL (f, xtemp);
+   
+-      if (!gsl_finite(val))
++      if (!isfinite(val))
+         {
+           GSL_ERROR("non-finite function value encountered", GSL_EBADFUNC);
+         }
+@@ -374,14 +374,14 @@
+ 
+   val = nmsimplex_move_corner (-1.0, state, hi, xc, f);
+ 
+-  if (gsl_finite(val) && val < gsl_vector_get (y1, lo))
++  if (isfinite(val) && val < gsl_vector_get (y1, lo))
+     {
+ 
+       /* reflected point becomes lowest point, try expansion */
+ 
+       val2 = nmsimplex_move_corner (-2.0, state, hi, xc2, f);
+ 
+-      if (gsl_finite(val2) && val2 < gsl_vector_get (y1, lo))
++      if (isfinite(val2) && val2 < gsl_vector_get (y1, lo))
+         {
+           gsl_matrix_set_row (x1, hi, xc2);
+           gsl_vector_set (y1, hi, val2);
+@@ -397,9 +397,9 @@
+      or
+      we got a non-finite (illegal) function value */
+ 
+-  else if (!gsl_finite(val) || val > gsl_vector_get (y1, s_hi))
++  else if (!isfinite(val) || val > gsl_vector_get (y1, s_hi))
+     {
+-      if (gsl_finite(val) && val <= gsl_vector_get (y1, hi))
++      if (isfinite(val) && val <= gsl_vector_get (y1, hi))
+         {
+ 
+           /* if trial point is better than highest point, replace 
+@@ -413,7 +413,7 @@
+ 
+       val2 = nmsimplex_move_corner (0.5, state, hi, xc2, f);
+ 
+-      if (gsl_finite(val2) && val2 <= gsl_vector_get (y1, hi))
++      if (isfinite(val2) && val2 <= gsl_vector_get (y1, hi))
+         {
+           gsl_matrix_set_row (state->x1, hi, xc2);
+           gsl_vector_set (y1, hi, val2);
+diff -ruN src/multimin/simplex2.c src-mod/multimin/simplex2.c
+--- src/multimin/simplex2.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/multimin/simplex2.c	2014-05-27 18:47:27.000000000 -0700
+@@ -171,7 +171,7 @@
+ 	     we finish the contraction (and do not abort) to allow the user
+ 	     to handle the situation */
+ 
+-	  if (!gsl_finite (newval))
++	  if (!isfinite (newval))
+ 	    {
+ 	      status = GSL_EBADFUNC;
+ 	    }
+@@ -367,7 +367,7 @@
+ 
+   val = GSL_MULTIMIN_FN_EVAL (f, x);
+ 
+-  if (!gsl_finite (val))
++  if (!isfinite (val))
+     {
+       GSL_ERROR ("non-finite function value encountered", GSL_EBADFUNC);
+     }
+@@ -394,7 +394,7 @@
+ 	val = GSL_MULTIMIN_FN_EVAL (f, xtemp);
+       }
+ 
+-      if (!gsl_finite (val))
++      if (!isfinite (val))
+ 	{
+ 	  GSL_ERROR ("non-finite function value encountered", GSL_EBADFUNC);
+ 	}
+@@ -477,13 +477,13 @@
+ 
+   val = try_corner_move (-1.0, state, hi, xc, f);
+ 
+-  if (gsl_finite (val) && val < gsl_vector_get (y1, lo))
++  if (isfinite (val) && val < gsl_vector_get (y1, lo))
+     {
+       /* reflected point is lowest, try expansion */
+ 
+       val2 = try_corner_move (-2.0, state, hi, xc2, f);
+ 
+-      if (gsl_finite (val2) && val2 < gsl_vector_get (y1, lo))
++      if (isfinite (val2) && val2 < gsl_vector_get (y1, lo))
+ 	{
+ 	  update_point (state, hi, xc2, val2);
+ 	}
+@@ -492,12 +492,12 @@
+ 	  update_point (state, hi, xc, val);
+ 	}
+     }
+-  else if (!gsl_finite (val) || val > gsl_vector_get (y1, s_hi))
++  else if (!isfinite (val) || val > gsl_vector_get (y1, s_hi))
+     {
+       /* reflection does not improve things enough, or we got a
+          non-finite function value */
+ 
+-      if (gsl_finite (val) && val <= gsl_vector_get (y1, hi))
++      if (isfinite (val) && val <= gsl_vector_get (y1, hi))
+ 	{
+ 	  /* if trial point is better than highest point, replace
+ 	     highest point */
+@@ -509,7 +509,7 @@
+ 
+       val2 = try_corner_move (0.5, state, hi, xc2, f);
+ 
+-      if (gsl_finite (val2) && val2 <= gsl_vector_get (y1, hi))
++      if (isfinite (val2) && val2 <= gsl_vector_get (y1, hi))
+ 	{
+ 	  update_point (state, hi, xc2, val2);
+ 	}
+@@ -605,7 +605,7 @@
+ 
+   val = GSL_MULTIMIN_FN_EVAL (f, x);
+ 
+-  if (!gsl_finite (val))
++  if (!isfinite (val))
+     {
+       GSL_ERROR ("non-finite function value encountered", GSL_EBADFUNC);
+     }
+@@ -669,7 +669,7 @@
+ 
+ 	val = GSL_MULTIMIN_FN_EVAL (f, &r_i.vector);
+ 
+-	if (!gsl_finite (val))
++	if (!isfinite (val))
+ 	  {
+ 	    GSL_ERROR ("non-finite function value encountered", GSL_EBADFUNC);
+ 	  }
+diff -ruN src/roots/newton.c src-mod/roots/newton.c
+--- src/roots/newton.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/roots/newton.c	2014-05-27 18:47:27.000000000 -0700
+@@ -83,12 +83,12 @@
+   state->f = f_new ;
+   state->df = df_new ;
+ 
+-  if (!gsl_finite(f_new))
++  if (!isfinite(f_new))
+     {
+       GSL_ERROR ("function value is not finite", GSL_EBADFUNC);
+     }
+ 
+-  if (!gsl_finite (df_new))
++  if (!isfinite (df_new))
+     {
+       GSL_ERROR ("derivative value is not finite", GSL_EBADFUNC);
+     }
+diff -ruN src/roots/roots.h src-mod/roots/roots.h
+--- src/roots/roots.h	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/roots/roots.h	2014-05-27 18:47:27.000000000 -0700
+@@ -28,7 +28,7 @@
+ #define SAFE_FUNC_CALL(f, x, yp) \
+ do { \
+   *yp = GSL_FN_EVAL(f,x); \
+-  if (!gsl_finite(*yp)) \
++  if (!isfinite(*yp)) \
+     GSL_ERROR("function value is not finite", GSL_EBADFUNC); \
+ } while (0)
+ 
+diff -ruN src/roots/secant.c src-mod/roots/secant.c
+--- src/roots/secant.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/roots/secant.c	2014-05-27 18:47:27.000000000 -0700
+@@ -94,12 +94,12 @@
+   state->f = f_new ;
+   state->df = df_new ;
+ 
+-  if (!gsl_finite (f_new))
++  if (!isfinite (f_new))
+     {
+       GSL_ERROR ("function value is not finite", GSL_EBADFUNC);
+     }
+ 
+-  if (!gsl_finite (df_new))
++  if (!isfinite (df_new))
+     {
+       GSL_ERROR ("derivative value is not finite", GSL_EBADFUNC);
+     }
+diff -ruN src/roots/steffenson.c src-mod/roots/steffenson.c
+--- src/roots/steffenson.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/roots/steffenson.c	2014-05-27 18:47:27.000000000 -0700
+@@ -105,7 +105,7 @@
+   state->f = f_new ;
+   state->df = df_new ;
+ 
+-  if (!gsl_finite (f_new))
++  if (!isfinite (f_new))
+     {
+       GSL_ERROR ("function value is not finite", GSL_EBADFUNC);
+     }
+@@ -126,7 +126,7 @@
+         *root = x_1 - u * u / v ;  /* accelerated value */
+     }
+ 
+-  if (!gsl_finite (df_new))
++  if (!isfinite (df_new))
+     {
+       GSL_ERROR ("derivative value is not finite", GSL_EBADFUNC);
+     }
+diff -ruN src/specfunc/hyperg_U.c src-mod/specfunc/hyperg_U.c
+--- src/specfunc/hyperg_U.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/specfunc/hyperg_U.c	2014-05-27 18:47:28.000000000 -0700
+@@ -524,7 +524,7 @@
+         t_err = a0_err + b0_err;
+         dchu_val += t_val;
+         dchu_err += t_err;
+-        if(!finite(t_val) || fabs(t_val) < EPS*fabs(dchu_val)) break;
++        if(!isfinite(t_val) || fabs(t_val) < EPS*fabs(dchu_val)) break;
+       }
+ 
+       result->val  = dchu_val;
+diff -ruN src/sys/ldfrexp.c src-mod/sys/ldfrexp.c
+--- src/sys/ldfrexp.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/sys/ldfrexp.c	2014-05-27 18:47:28.000000000 -0700
+@@ -60,7 +60,7 @@
+       *e = 0;
+       return 0.0;
+     }
+-  else if (!finite (x))
++  else if (!isfinite (x))
+     {
+       *e = 0;
+       return x;
+@@ -85,7 +85,7 @@
+ 
+       f = x * pow (2.0, -ei);
+ 
+-      if (!finite (f))
++      if (!isfinite (f))
+         {
+           /* This should not happen */
+           *e = 0;
+diff -ruN src/test/results.c src-mod/test/results.c
+--- src/test/results.c	2010-12-26 09:57:08.000000000 -0800
++++ src-mod/test/results.c	2014-05-27 18:47:28.000000000 -0700
+@@ -24,7 +24,10 @@
+ #include <stdlib.h>
+ #include <gsl/gsl_sys.h>
+ #include <gsl/gsl_machine.h>
++#include <stdarg.h>
++#define STDC_HEADERS
+ 
++/*
+ #if HAVE_VPRINTF
+ #ifdef STDC_HEADERS
+ #include <stdarg.h>
+@@ -32,6 +35,7 @@
+ #include <varargs.h>
+ #endif
+ #endif
++*/
+ 
+ #include <gsl/gsl_test.h>
+ 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-android.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-android.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-android.sh	(revision 27955)
@@ -0,0 +1,49 @@
+#!/bin/bash
+set -eu
+
+source $ANDROID_DIR/android_aux.sh
+
+if [[ $step == "1" || $step == "0" ]]; then
+
+    #Some cleanup
+    rm -rf src install gsl-1.15
+    mkdir src install
+
+    #Download from ISSM server
+    $ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/gsl-1.' 'gsl-1.15.tar.gz'
+
+    #Untar 
+    tar -zxvf  gsl-1.15.tar.gz
+
+    #Move gsl into src directory
+    mv gsl-1.15/* src
+    rm -rf gsl-1.15
+fi
+
+#Configure gsl
+if [[ $step == "2" || $step == "0" ]]; then
+    cd src
+
+    patch Makefile.am < ./../Makefile.am.patch
+
+    autoreconf -if
+
+    ./configure \
+        --build="i386-apple-darwin10.8.0" \
+        --host=$host_triplet \
+	    --prefix="$ISSM_DIR/externalpackages/gsl/install"
+fi
+
+#Compile gsl
+if [[ $step == "3" || $step == "0" ]]; then
+	cd $ISSM_DIR/externalpackages/gsl/src
+
+    if [ $# -eq 0 ]; then
+	    make 
+    else
+	    make -j $j 
+    fi
+
+    make install
+fi
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-greenplanet.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-greenplanet.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-greenplanet.sh	(revision 27955)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install gsl-1.15
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/gsl-1.15.tar.gz' 'gsl-1.15.tar.gz'
+
+#Untar 
+tar -zxvf  gsl-1.15.tar.gz
+
+#Move gsl into src directory
+mv gsl-1.15/* src
+rm -rf gsl-1.15
+
+#Configure gsl
+cd src
+
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/gsl/install" 
+
+#Compile gsl
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-ios.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-ios.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-ios.sh	(revision 27955)
@@ -0,0 +1,63 @@
+#!/bin/bash
+set -eu
+
+source $ANDROID_DIR/android_aux.sh
+export DEVROOT="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/"
+export SDKROOT="$DEVROOT/SDKs/iPhoneOS6.0.sdk/"
+export CC="$DEVROOT/usr/bin/gcc -arch armv7"
+export CFLAGS="-O -arch armv7 -isysroot $SDKROOT"
+export CXXFLAGS="-O -arch armv7 -isysroot $SDKROOT"
+export CPP=$DEVROOT/usr/bin/cpp
+export CXX=$DEVROOT/usr/bin/g++
+export AR=$DEVROOT/usr/bin/ar
+export AS=$DEVROOT/usr/bin/as
+export LIBTOOL=$DEVROOT/usr/bin/libtool
+export LDFLAGS="-lstdc++ -arch armv7 -isysroot $SDKROOT"
+export STRIP=$DEVROOT/usr/bin/strip
+export RANLIB=$DEVROOT/usr/bin/ranlib
+
+
+if [[ $step == "1" || $step == "0" ]]; then
+
+    #Some cleanup
+    rm -rf src install gsl-1.15
+    mkdir src install
+
+    #Download from ISSM server
+    $ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/gsl-1.' 'gsl-1.15.tar.gz'
+
+    #Untar 
+    tar -zxvf  gsl-1.15.tar.gz
+
+    #Move gsl into src directory
+    mv gsl-1.15/* src
+    rm -rf gsl-1.15
+fi
+
+#Configure gsl
+if [[ $step == "2" || $step == "0" ]]; then
+    cd src
+
+    patch Makefile.am < ./../Makefile.am.patch
+
+    autoreconf -if
+
+    ./configure \
+		--build="i386-apple-darwin10.8.0" \
+		--host="arm-apple-darwin10" \
+	    --prefix="$ISSM_DIR/externalpackages/gsl/install"
+fi
+
+#Compile gsl
+if [[ $step == "3" || $step == "0" ]]; then
+	cd $ISSM_DIR/externalpackages/gsl/src
+
+    if [ $# -eq 0 ]; then
+	    make 
+    else
+	    make -j $j 
+    fi
+
+    make install
+fi
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-javascript.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-javascript.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-javascript.sh	(revision 27955)
@@ -0,0 +1,52 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="2.7"
+
+PREFIX="${ISSM_DIR}/externalpackages/gsl/install" # Set to location where external package should be installed
+
+## Environment
+#
+export CC=emcc
+export CXX=em++
+export AR=emar
+export RANLIB=emranlib
+#export EMCC_DEBUG=1 # Uncomment to enable debugging
+
+# Source Emscripten environment
+source ${EMSCRIPTEN_ROOT}/emsdk_env.sh
+
+# Issue with variadic function signatures.
+#export CFLAGS=-DSTDC_HEADERS
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gsl-${VER}.tar.gz" "gsl-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf gsl-${VER}.tar.gz
+
+# Move source to 'src' directory
+mv gsl-${VER}/* src
+rm -rf gsl-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-shared \
+
+#Compile gsl
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-pleiades.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-pleiades.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-pleiades.sh	(revision 27955)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install gsl-1.15
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/gsl-1.15.tar.gz' 'gsl-1.15.tar.gz'
+
+#Untar 
+tar -zxvf  gsl-1.15.tar.gz
+
+#Move gsl into src directory
+mv gsl-1.15/* src
+rm -rf gsl-1.15
+
+#Configure gsl
+cd src
+
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/gsl/install" 
+
+#Compile gsl
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-static.sh	(revision 27955)
@@ -0,0 +1,39 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="2.7"
+
+PREFIX="${ISSM_DIR}/externalpackages/gsl/install" # Set to location where external package should be installed
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gsl-${VER}.tar.gz" "gsl-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf gsl-${VER}.tar.gz
+
+# Move source to 'src' directory
+mv gsl-${VER}/* src
+rm -rf gsl-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-shared \
+	--with-pic
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-walgreen.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-walgreen.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install-walgreen.sh	(revision 27955)
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install gsl-1.15
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/gsl-1.15.tar.gz' 'gsl-1.15.tar.gz'
+
+#Untar 
+tar -zxvf  gsl-1.15.tar.gz
+
+#Move gsl into src directory
+mv gsl-1.15/* src
+rm -rf gsl-1.15
+
+#Configure gsl
+cd src
+
+export CC=icc
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/gsl/install" 
+
+#Compile gsl
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gsl/install.sh	(revision 27955)
@@ -0,0 +1,38 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="2.7"
+
+PREFIX="${ISSM_DIR}/externalpackages/gsl/install" # Set to location where external package should be installed
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/gsl-${VER}.tar.gz" "gsl-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf gsl-${VER}.tar.gz
+
+# Move source to 'src' directory
+mv gsl-${VER}/* src
+rm -rf gsl-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-static
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/gslib/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/gslib/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/gslib/install.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/gslib90_ls.tar.gz' 'gslib90_ls.tar.gz'
+
+#Untar 
+tar -zxvf  gslib90_ls.tar.gz
+
+#Move gslib into install directory
+mv gslib90/* install
+rm -rf gslib90
+
+#Change compiler to gfortran
+cd install
+cat Makefile | sed -e "s/FC=g95/FC=gfortran/g" > Makefile.bak
+mv Makefile.bak Makefile
+cat gslib/Makefile | sed -e "s/FC=g95/FC=gfortran/g" > Makefile.bak
+mv Makefile.bak gslib/Makefile
+make 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/h5py/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/h5py/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/h5py/install.sh	(revision 27955)
@@ -0,0 +1,25 @@
+#!/bin/bash
+set -eu
+
+#needed further along
+export HDF5_DIR=$ISSM_DIR/externalpackages/hdf5/install
+
+#Some cleanup
+rm -rf install h5py-2.0.1
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/h5py-2.0.1.tar.gz' 'h5py-2.0.1.tar.gz'
+
+#Untar 
+tar -zxvf  h5py-2.0.1.tar.gz
+
+#Move h5py to install directory
+rm -rf install/*
+mv h5py-2.0.1/* install/
+rm -rf h5py-2.0.1
+
+#Configure and compile
+cd install
+python setup.py build –hdf5=$ISSM_DIR/externalpackages/hdf5/install
+python setup.py install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/hdf5/install-1-parallel-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/hdf5/install-1-parallel-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/hdf5/install-1-parallel-static.sh	(revision 27955)
@@ -0,0 +1,47 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="1.8.23"
+
+PREFIX="${ISSM_DIR}/externalpackages/hdf5/install" # Set to location where external package should be installed
+
+## Environnment
+#
+export CC=mpicc
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/hdf5-${VER}.tar.gz" "hdf5-${VER}.tar.gz"
+
+# Untar source
+tar -zxvf hdf5-${VER}.tar.gz
+
+# Cleanup
+rm -rf install src
+mkdir install src
+
+# Move source to 'src' directory
+mv hdf5-${VER}/* src/
+rm -rf hdf5-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-dependency-tracking \
+	--disable-shared \
+	--enable-parallel \
+	--with-zlib="${ZLIB_ROOT}" \
+	--enable-hl
+
+# Compile and install
+#
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/hdf5/install-1-parallel-with_tests.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/hdf5/install-1-parallel-with_tests.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/hdf5/install-1-parallel-with_tests.sh	(revision 27955)
@@ -0,0 +1,49 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="1.8.23"
+
+PREFIX="${ISSM_DIR}/externalpackages/hdf5/install" # Set to location where external package should be installed
+
+## Environnment
+#
+export CC=mpicc
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/hdf5-${VER}.tar.gz" "hdf5-${VER}.tar.gz"
+
+# Untar source
+tar -zxvf hdf5-${VER}.tar.gz
+
+# Cleanup
+rm -rf install src
+mkdir install src
+
+# Move source to 'src' directory
+mv hdf5-${VER}/* src/
+rm -rf hdf5-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-dependency-tracking \
+	--disable-static \
+	--enable-parallel \
+	--with-zlib="${ZLIB_ROOT}" \
+	--enable-hl
+
+# Compile, test, and install
+#
+if [ $# -eq 0 ]; then
+	make
+	make check
+	make install
+else
+	make -j $1
+	make -j $1 check
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/hdf5/install-1-parallel.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/hdf5/install-1-parallel.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/hdf5/install-1-parallel.sh	(revision 27955)
@@ -0,0 +1,47 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="1.8.23"
+
+PREFIX="${ISSM_DIR}/externalpackages/hdf5/install" # Set to location where external package should be installed
+
+## Environnment
+#
+export CC=mpicc
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/hdf5-${VER}.tar.gz" "hdf5-${VER}.tar.gz"
+
+# Untar source
+tar -zxvf hdf5-${VER}.tar.gz
+
+# Cleanup
+rm -rf install src
+mkdir install src
+
+# Move source to 'src' directory
+mv hdf5-${VER}/* src/
+rm -rf hdf5-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-dependency-tracking \
+	--disable-static \
+	--enable-parallel \
+	--with-zlib="${ZLIB_ROOT}" \
+	--enable-hl
+
+# Compile and install
+#
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/hdf5/install-1-with_tests.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/hdf5/install-1-with_tests.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/hdf5/install-1-with_tests.sh	(revision 27955)
@@ -0,0 +1,44 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="1.8.23"
+
+PREFIX="${ISSM_DIR}/externalpackages/hdf5/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/hdf5-${VER}.tar.gz" "hdf5-${VER}.tar.gz"
+
+# Untar source
+tar -zxvf hdf5-${VER}.tar.gz
+
+# Cleanup
+rm -rf install src
+mkdir install src
+
+# Move source to 'src' directory
+mv hdf5-${VER}/* src/
+rm -rf hdf5-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-dependency-tracking \
+	--disable-static \
+	--with-zlib="${ZLIB_ROOT}" \
+	--enable-hl
+
+# Compile, test, and install
+#
+if [ $# -eq 0 ]; then
+	make
+	make check
+	make install
+else
+	make -j $1
+	make -j $1 check
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/hdf5/install-1.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/hdf5/install-1.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/hdf5/install-1.sh	(revision 27955)
@@ -0,0 +1,42 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="1.8.23"
+
+PREFIX="${ISSM_DIR}/externalpackages/hdf5/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/hdf5-${VER}.tar.gz" "hdf5-${VER}.tar.gz"
+
+# Untar source
+tar -zxvf hdf5-${VER}.tar.gz
+
+# Cleanup
+rm -rf install src
+mkdir install src
+
+# Move source to 'src' directory
+mv hdf5-${VER}/* src/
+rm -rf hdf5-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-dependency-tracking \
+	--disable-static \
+	--with-zlib="${ZLIB_ROOT}" \
+	--enable-hl
+
+# Compile and install
+#
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/howatmask/enviread.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/howatmask/enviread.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/howatmask/enviread.m	(revision 27955)
@@ -0,0 +1,323 @@
+function I=enviread(varargin)
+%enviread: Read binary image files using ENVI header information
+%
+%I=enviread('filename') where the header file is named filename.hdr
+%and exists in the same directory. Otherwise use 
+%
+%I=enviread('filename','hdrfilename')
+%
+%The output structure I contains fields I.x, I.y, I.z and I.info
+%containing the x-coordinate vector, y-coordinate vector,
+%images data and header info, respectively. I.z will be in whatever
+%number format (double, int, etc.) as in the envi file.
+%
+%Original version by Ian Howat, Ohio State Universtiy, ihowat@gmail.com
+%Thanks to Yushin Ahn and Ray Jung
+%
+%% Current version 3 - adding subsetting feature to read only parts of
+%% files.
+
+file=varargin{1};
+hdrfile=[deblank(file),'.hdr'];
+info=read_envihdr(hdrfile);
+sub = [1, info.samples, 1, info.lines];
+if nargin==2
+    if varargin{2}=='date'
+        [pathstr, name, ext, versn] = fileparts(file);
+        info.hdrname=hdrfile;
+        info.ipath=pathstr;
+        info.iname=name;
+        info.ipname=file;
+        info.year =name(1:4);
+        info.month=name(5:6);
+        info.day  =name(7:8);
+        info.date =name(1:8);
+        info.sfname=name(1:14);
+        info.datenum=datenum(str2double(info.year),...
+            str2double(info.month),str2double(info.day));
+    end
+end
+
+% subset
+if nargin == 3;
+    if strcmp(varargin{2},'pixel_subset');
+        sub = varargin{3};
+    elseif strcmp(varargin{2},'map_subset');
+        sub = varargin{3};
+        subx = (sub(1:2)-info.map_info.mapx)./info.map_info.dx;
+        suby = (info.map_info.mapy - sub(3:4))./info.map_info.dy;
+        subx = round(subx);
+        suby = round(suby);
+        
+        subx(subx < 1) = 1;
+        suby(suby < 1) = 1;
+        subx(subx > info.samples) = info.samples;
+        suby(suby > info.lines)   = info.lines;
+      
+        sub  = [subx,suby];
+    end
+end
+
+sub(1:2) = sort(sub(1:2));
+sub(3:4) = sort(sub(3:4));
+
+
+%% Make geo-location vectors
+if isfield(info.map_info,'mapx') && isfield(info.map_info,'mapy')
+    xi = info.map_info.image_coords(1);
+    yi = info.map_info.image_coords(2);
+    xm = info.map_info.mapx;
+    ym = info.map_info.mapy;
+    %adjust points to corner (1.5,1.5)
+    if yi > 1.5
+        ym =  ym + ((yi*info.map_info.dy)-info.map_info.dy);
+    end
+    if xi > 1.5
+        xm = xm - ((xi*info.map_info.dy)-info.map_info.dx);
+    end
+
+    I.x = xm + ((0:info.samples-1).*info.map_info.dx);
+    I.y = ym - ((0:info.lines-1).*  info.map_info.dy);
+    %I.x = xm + (subE(1):subE(2)-1).*info.map_info.dx;
+    %I.y = ym - (subE(3):subE(4)-1).*info.map_info.dy;
+end
+
+
+I.x = I.x(sub(1):sub(2));
+I.y = I.y(sub(3):sub(4));
+
+
+%% Set binary format parameters
+switch info.byte_order
+    case {0}
+        machine = 'ieee-le';
+    case {1}
+        machine = 'ieee-be';
+    otherwise
+        machine = 'n';
+end
+switch info.data_type
+    case {1}
+        format = 'uint8';
+    case {2}
+        format= 'int16';
+    case{3}
+        format= 'int32';
+    case {4}
+        format= 'single';
+    case {5}
+        format= 'double';
+    case {6}
+        disp('>> Sorry, Complex (2x32 bits)data currently not supported');
+        disp('>> Importing as double-precision instead');
+        format= 'double';
+    case {9}
+        error('Sorry, double-precision complex (2x64 bits) data currently not supported');
+    case {12}
+        format= 'uint16';
+    case {13}
+        format= 'uint32';
+    case {14}
+        format= 'int64';
+    case {15}
+        format= 'uint64';
+    otherwise
+        error(['File type number: ',num2str(dtype),' not supported']);
+end
+
+%% file read
+% Version 2 code by Yushin Ahn - replaces resize calls with loops (except
+% for BIP formats) to work on big arrays.
+
+        %tmp=zeros(info.lines, info.samples,info.bands,format);
+        tmp=zeros(sub(4)-sub(3)+1,sub(2)-sub(1)+1,info.bands,format);
+        fid=fopen(file,'r');
+
+switch lower(info.interleave)
+
+    case {'bsq'}
+        % Format:
+        % [Band 1]       
+        % R1: C1, C2, C3, ...
+        % R2: C1, C2, C3, ...
+        %  ...
+        % RN: C1, C2, C3, ...
+        %
+        % [Band 2]
+        %  ...
+        % [Band N]
+
+%% Old Script w/out subsetting
+%         for b=1:info.bands
+%             for i=1:info.lines
+%                 t=fread(fid,info.samples,format);
+%                 tmp(i,:,b)=t;    
+%             end
+%         end
+        
+%% New Subsetting script - IMH
+        offset1=(sub(3)-1)*info.samples;
+        fseek(fid,offset1,'bof');
+        for b=1:info.bands
+            for i=sub(3):sub(4)
+                t=fread(fid,info.samples,format);
+                %if i >=  sub(3) && i <= sub(4)
+                    tmp(i-sub(3)+1,:,b)=t(sub(1):sub(2));
+                %end
+            end
+            offset2 = info.samples*info.lines*b+offset1;
+            fseek(fid,offset2,'bof');
+        end
+
+    case {'bil'}
+        % Format:        
+        % [Row 1]      
+        % B1: C1, C2, C3, ...
+        % B2: C1, C2, C3, ...
+        %
+        %  ...
+        % [Row N]
+
+%         for i=1:info.lines
+%             for b=1:info.bands
+%                  t=fread(fid,info.samples,format);
+%                 tmp(i,:,b)=t;       
+%             end
+%         end
+      
+%% New Subsetting script - IMH
+        for i=1:sub(4) 
+            for b=1:info.bands
+                t=fread(fid,info.samples,format);
+                if i >=  sub(3) && i <= sub(4) 
+                    tmp(i-sub(3)+1,:,b)=t(sub(1):sub(2));    
+                end
+            end
+        end
+
+
+
+    case {'bip'}
+    
+        % Row 1
+        % C1: B1 B2 B3, ...
+        % C2: B1 B2 B3, ...
+        % ...
+        % Row N
+        %This section authored by Ray Jung, APL-Johns Hopkins
+        Z = fread(fid,info.samples*info.lines*info.bands,format,0,machine);  
+        Z = reshape(Z, [info.bands, info.samples, info.lines]);
+
+        for k=1:info.bands
+            tmp(:,:,k) = squeeze(Z(k,:,:))';
+        end     
+end
+fclose(fid);
+
+% tmp2=zeros(subE(4)-subE(3)+1,subE(2)-subE(1)+1,info.bands,format);
+% [a,b]=size(tmp);
+% for i=1:info.bands
+%     tmp2(xoff+1:a,yoff+1:b,1)=tmp(1:a,1:b,1);
+% end
+I.z=tmp;
+I.info =info;
+
+
+
+%% sub function
+function info = read_envihdr(hdrfile)
+% READ_ENVIHDR read and return ENVI image file header information.
+%   INFO = READ_ENVIHDR('HDR_FILE') reads the ASCII ENVI-generated image
+%   header file and returns all the information in a structure of
+%   parameters.
+%
+%   Example:
+%   >> info = read_envihdr('my_envi_image.hdr')
+%   info =
+%          description: [1x101 char]
+%              samples: 658
+%                lines: 749
+%                bands: 3
+%        header_offset: 0
+%            file_type: 'ENVI Standard'
+%            data_type: 4
+%           interleave: 'bsq'
+%          sensor_type: 'Unknown'
+%           byte_order: 0
+%             map_info: [1x1 struct]
+%      projection_info: [1x102 char]
+%     wavelength_units: 'Unknown'
+%           pixel_size: [1x1 struct]
+%           band_names: [1x154 char]
+%
+%   NOTE: This function is used by ENVIREAD to import data.
+% Ian M. Howat, Applied Physics Lab, University of Washington
+% ihowat@apl.washington.edu
+% Version 1: 19-Jul-2007 00:50:57
+fid = fopen(hdrfile);
+while fid;
+    line = fgetl(fid);
+    if line == -1
+        break
+    else
+        eqsn = findstr(line,'=');
+        if ~isempty(eqsn)
+            param = strtrim(line(1:eqsn-1));
+            param(findstr(param,' ')) = '_';
+            value = strtrim(line(eqsn+1:end));
+            if isempty(str2num(value))
+                if ~isempty(findstr(value,'{')) && isempty(findstr(value,'}'))
+                    while isempty(findstr(value,'}'))
+                        line = fgetl(fid);
+                        value = [value,strtrim(line)];
+                    end
+                end
+                eval(['info.',param,' = ''',value,''';'])
+            else
+                eval(['info.',param,' = ',value,';'])
+            end
+        end
+    end
+end
+fclose(fid);
+
+if isfield(info,'map_info')
+    line = info.map_info;
+    line(line == '{' | line == '}') = [];
+    line = strtrim(split(line,','));
+    info.map_info = [];
+    info.map_info.projection = line{1};
+    info.map_info.image_coords = [str2num(line{2}),str2num(line{3})];
+    info.map_info.mapx = str2num(line{4});
+    info.map_info.mapy = str2num(line{5});
+    info.map_info.dx  = str2num(line{6});
+    info.map_info.dy  = str2num(line{7});
+    if length(line) == 9
+        info.map_info.datum  = line{8};
+        info.map_info.units  = line{9}(7:end);
+    elseif length(line) == 11
+        info.map_info.zone  = str2num(line{8});
+        info.map_info.hemi  = line{9};
+        info.map_info.datum  = line{10};
+        info.map_info.units  = line{11}(7:end);
+    end
+end
+
+if isfield(info,'pixel_size')
+    line = info.pixel_size;
+    line(line == '{' | line == '}') = [];
+    line = strtrim(split(line,','));
+    info.pixel_size = [];
+    info.pixel_size.x = str2num(line{1});
+    info.pixel_size.y = str2num(line{2});
+    info.pixel_size.units = line{3}(7:end);
+end
+
+%%
+function A = split(s,d)
+%This function by Gerald Dalley (dalleyg@mit.edu), 2004
+A = {};
+while (length(s) > 0)
+    [t,s] = strtok(s,d);
+    A = {A{:}, t};
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/howatmask/subsetGimpIceMask.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/howatmask/subsetGimpIceMask.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/howatmask/subsetGimpIceMask.m	(revision 27955)
@@ -0,0 +1,282 @@
+function [M,Mx,My] = subsetGimpIceMask(x0,x1,y0,y1)
+% subsetGimpIceMask samples mask tiles for a given coordinate range
+%
+%   [M,Mx,My] = subsetGimpIceMask(x0,x1,y0,y1) returns the mask in array M
+%   with map vectors Mx and My within the bounding box specified by
+%   coordinate ranges x0 < x1 and y0 < y1. The function finds tiles
+%   overlappimg the box, samples the tiles and mosaics the samples into one
+%   array.
+%
+% 	Example: Specify the following coordinate range and map the result.
+%   >> x0 = 260000; x1 = 377900;  y0 = -2609400; y1 = -2543000;
+%   >> [M,Mx,My] = subsetGimpIceMask(x0,x1,y0,y1);
+%   >> imagesc(Mx,My,M); axis equal xy; colormap gray;
+%
+%   Ian Howat, Ohio State University, ihowat@gmail.com
+%   The Greenland Ice Mapping Project is funded by NASA.
+%   $Revision: 0 $  $Date: 09-Nov-2011 14:48:24$
+%
+
+%make coordinate index
+nt = 6;
+ps = 15;
+xn0 = -640000 ; %xn1 = 857550;
+yn0 =  -3313350; %yn1 = -665450;
+
+c = 16640;
+r = 29420;
+
+x = xn0:ps:xn0 + c.*ps.*nt;
+y = yn0:ps:yn0 + r.*ps.*nt;
+
+X = cell(1,nt);
+Y = cell(nt,1);
+i=1;
+for i=1:nt;
+    
+    X{i} = [x((i-1)*c+1),x(i*c)];
+    Y{i} = [y((i-1)*r+1),y(i*r)];
+    
+end
+
+X = repmat(X,[nt,1]);
+Y = repmat(Y,[1,nt]);
+N = cell(size(X));
+
+
+i=1;
+for i=1:numel(X)
+    N{i} = [[X{i}(1),Y{i}(2)];...
+        [X{i}(2),Y{i}(2)];...
+        [X{i}(2),Y{i}(1)];...
+        [X{i}(1),Y{i}(1)]];
+end
+
+
+%% find overlapping tiles
+p = [[x0,y1];[x1,y1];[x1,y0];[x0,y0]];
+
+n = zeros(size(N));
+
+i=1;
+for i=1:numel(N)
+    n(i) = any(inpolygon(p(:,1),p(:,2),N{i}(:,1),N{i}(:,2)));
+end
+i=1;
+for i=1:size(n,1)
+    n(i,find(n(i,:),1,'first'):find(n(i,:),1,'last')) = 1;
+end
+i=1;
+for i=1:size(n,2)
+    n(find(n(:,i),1,'first'):find(n(:,i),1,'last'),i) = 1;
+end
+
+[i,j] = find(n);
+row = (min(i):max(i))';
+col = min(j):max(j);
+col = repmat(col,[length(row),1])-1;
+row = repmat(row,[1,size(col,2)])-1;
+
+% make output cells
+M = cell(size(row));
+Mx = M;
+My = M;
+
+% read each overlapping file and populate output cell
+j=1;
+for j=1:size(col,2)
+    i=1;
+    for i=1:size(row,1);
+        m = enviread(['GimpIceMask_15m_tile',num2str(col(i,j)),'_',...
+            num2str(row(i,j))],'map_subset',[x0 x1 y0 y1]);
+        M{end-i+1,j} = m.z;
+        Mx{end-i+1,j} = m.x;
+        My{end-i+1,j} = m.y';
+        
+        
+    end
+end
+
+% put together cells
+M = cell2mat(M);
+Mx =cell2mat(Mx(1,:));
+My =cell2mat(My(:,1));
+
+
+function I=enviread(varargin)
+
+file=varargin{1};
+hdrfile=[deblank(file),'.hdr'];
+info=read_envihdr(hdrfile);
+sub = [1, info.samples, 1, info.lines];
+
+sub = varargin{3};
+subx = (sub(1:2)-info.map_info.mapx)./info.map_info.dx;
+suby = (info.map_info.mapy - sub(3:4))./info.map_info.dy;
+subx = round(subx);
+suby = round(suby);
+
+subx(subx < 1) = 1;
+suby(suby < 1) = 1;
+subx(subx > info.samples) = info.samples;
+suby(suby > info.lines)   = info.lines;
+
+sub  = [subx,suby];
+
+sub(1:2) = sort(sub(1:2));
+sub(3:4) = sort(sub(3:4));
+
+%% Make geo-location vectors
+if isfield(info.map_info,'mapx') && isfield(info.map_info,'mapy')
+    xi = info.map_info.image_coords(1);
+    yi = info.map_info.image_coords(2);
+    xm = info.map_info.mapx;
+    ym = info.map_info.mapy;
+    %adjust points to corner (1.5,1.5)
+    if yi > 1.5
+        ym =  ym + ((yi*info.map_info.dy)-info.map_info.dy);
+    end
+    if xi > 1.5
+        xm = xm - ((xi*info.map_info.dy)-info.map_info.dx);
+    end
+    
+    I.x = xm + ((0:info.samples-1).*info.map_info.dx);
+    I.y = ym - ((0:info.lines-1).*  info.map_info.dy);
+    
+end
+
+I.x = I.x(sub(1):sub(2));
+I.y = I.y(sub(3):sub(4));
+
+%% Set binary format parameters
+switch info.byte_order
+    case {0}
+        machine = 'ieee-le';
+    case {1}
+        machine = 'ieee-be';
+    otherwise
+        machine = 'n';
+end
+
+format = 'uint8';
+
+tmp=zeros(sub(4)-sub(3)+1,sub(2)-sub(1)+1,info.bands,format);
+fid=fopen(file,'r');
+
+offset1=(sub(3)-1)*info.samples;
+fseek(fid,offset1,'bof');
+for b=1:info.bands
+    for i=sub(3):sub(4)
+        t=fread(fid,info.samples,format);
+        tmp(i-sub(3)+1,:,b)=t(sub(1):sub(2));
+    end
+    offset2 = info.samples*info.lines*b+offset1;
+    fseek(fid,offset2,'bof');
+end
+
+fclose(fid);
+
+I.z=tmp;
+I.info =info;
+
+%% sub function
+function info = read_envihdr(hdrfile)
+% READ_ENVIHDR read and return ENVI image file header information.
+%   INFO = READ_ENVIHDR('HDR_FILE') reads the ASCII ENVI-generated image
+%   header file and returns all the information in a structure of
+%   parameters.
+%
+%   Example:
+%   >> info = read_envihdr('my_envi_image.hdr')
+%   info =
+%          description: [1x101 char]
+%              samples: 658
+%                lines: 749
+%                bands: 3
+%        header_offset: 0
+%            file_type: 'ENVI Standard'
+%            data_type: 4
+%           interleave: 'bsq'
+%          sensor_type: 'Unknown'
+%           byte_order: 0
+%             map_info: [1x1 struct]
+%      projection_info: [1x102 char]
+%     wavelength_units: 'Unknown'
+%           pixel_size: [1x1 struct]
+%           band_names: [1x154 char]
+%
+%   NOTE: This function is used by ENVIREAD to import data.
+% Ian M. Howat, Applied Physics Lab, University of Washington
+% ihowat@apl.washington.edu
+% Version 1: 19-Jul-2007 00:50:57
+fid = fopen(hdrfile);
+while fid;
+    line = fgetl(fid);
+    if line == -1
+        break
+    else
+        eqsn = findstr(line,'=');
+        if ~isempty(eqsn)
+            param = strtrim(line(1:eqsn-1));
+            param(findstr(param,' ')) = '_';
+            value = strtrim(line(eqsn+1:end));
+            if isempty(str2num(value))
+                if ~isempty(findstr(value,'{')) && isempty(findstr(value,'}'))
+                    while isempty(findstr(value,'}'))
+                        line = fgetl(fid);
+                        value = [value,strtrim(line)];
+                    end
+                end
+                eval(['info.',param,' = ''',value,''';'])
+            else
+                eval(['info.',param,' = ',value,';'])
+            end
+        end
+    end
+end
+fclose(fid);
+
+if isfield(info,'map_info')
+    line = info.map_info;
+    line(line == '{' | line == '}') = [];
+    line = strtrim(split(line,','));
+    info.map_info = [];
+    info.map_info.projection = line{1};
+    info.map_info.image_coords = [str2num(line{2}),str2num(line{3})];
+    info.map_info.mapx = str2num(line{4});
+    info.map_info.mapy = str2num(line{5});
+    info.map_info.dx  = str2num(line{6});
+    info.map_info.dy  = str2num(line{7});
+    if length(line) == 9
+        info.map_info.datum  = line{8};
+        info.map_info.units  = line{9}(7:end);
+    elseif length(line) == 11
+        info.map_info.zone  = str2num(line{8});
+        info.map_info.hemi  = line{9};
+        info.map_info.datum  = line{10};
+        info.map_info.units  = line{11}(7:end);
+    end
+end
+
+if isfield(info,'pixel_size')
+    line = info.pixel_size;
+    line(line == '{' | line == '}') = [];
+    line = strtrim(split(line,','));
+    info.pixel_size = [];
+    info.pixel_size.x = str2num(line{1});
+    info.pixel_size.y = str2num(line{2});
+    info.pixel_size.units = line{3}(7:end);
+end
+
+%%
+function A = split(s,d)
+%This function by Gerald Dalley (dalleyg@mit.edu), 2004
+A = {};
+while (length(s) > 0)
+    [t,s] = strtok(s,d);
+    A = {A{:}, t};
+end
+
+
+
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/inishell/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/inishell/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/inishell/install.sh	(revision 27955)
@@ -0,0 +1,40 @@
+#!/bin/bash
+#inishell install package:  this package is not distributed by ISSM. Please request access to the code by 
+#contacting Mathias Bavay () or logging onto http://models.slf.ch/ and registering.  Once you have a tarball 
+#of the code, please use this script to install.
+
+#we assume you have a inishell-src-*.tgz  tarball
+set -eu
+
+#Do some inquiry about the names of the tar balls: 
+source_tar=`ls inishell-src-*.tgz`
+source_version=`echo $source_tar | sed 's/inishell-src-//g' | sed 's/.tgz//g'`
+
+if [[ $source_tar == "" ]]; then 
+	echo "Could not identify a tar ball for the source code, name should be inishell-src-*.tgz"
+	exit 1
+fi
+if [[ $source_version == "" ]]; then 
+	echo "Could not identify a tar ball version for the source code"
+	exit 1
+fi
+
+
+#Some cleanup
+rm -rf src install inishell-$source_version
+mkdir install
+
+#First deal with source code 
+tar -zxvf  $source_tar
+mv inishell-$source_version src
+rm -rf inishell-$source_version
+
+#Build inishell
+cd src && ant snowpack
+
+#Put the .jar in the install directory
+cp dist/inishell.jar ../install
+
+#Install script to launch inishell jar file directly
+cd ..
+cp scripts/inishell install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/inishell/scripts/inishell
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/inishell/scripts/inishell	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/inishell/scripts/inishell	(revision 27955)
@@ -0,0 +1,3 @@
+#/bin/bash
+
+java -jar $ISSM_DIR/externalpackages/inishell/install/inishell.jar
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/ipython/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/ipython/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/ipython/install.sh	(revision 27955)
@@ -0,0 +1,22 @@
+#!/bin/bash
+set -eu 
+
+#Some cleanup
+rm -rf src
+rm -rf ipython-1.0.0
+mkdir src 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/ipython-1.0.0.tar.gz' 'ipython-1.0.0.tar.gz'
+
+#Untar 
+tar -zxvf  ipython-1.0.0.tar.gz
+
+#Move ipython into src directory
+mv ipython-1.0.0/* src
+rm -rf ipython-1.0.0
+
+#install  ipython
+cd src
+python setup.py build
+python setup.py install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/README
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/README	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/README	(revision 27955)
@@ -0,0 +1,3 @@
+This directory contains, at the time of this writing, JavaScript modules used
+on the VESL Web site. Arguably, they should just be kept in that project's SVN
+repository if no one is pulling them from here.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/gauge.min.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/gauge.min.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/gauge.min.js	(revision 27955)
@@ -0,0 +1,1 @@
+(function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q={}.hasOwnProperty,r=function(a,b){function c(){this.constructor=a}for(var d in b)q.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};!function(){var a,b,c,d,e,f,g;for(g=["ms","moz","webkit","o"],c=0,e=g.length;e>c&&(f=g[c],!window.requestAnimationFrame);c++)window.requestAnimationFrame=window[f+"RequestAnimationFrame"],window.cancelAnimationFrame=window[f+"CancelAnimationFrame"]||window[f+"CancelRequestAnimationFrame"];return a=null,d=0,b={},requestAnimationFrame?window.cancelAnimationFrame?void 0:(a=window.requestAnimationFrame,window.requestAnimationFrame=function(c,e){var f;return f=++d,a(function(){return b[f]?void 0:c()},e),f},window.cancelAnimationFrame=function(a){return b[a]=!0}):(window.requestAnimationFrame=function(a,b){var c,d,e,f;return c=(new Date).getTime(),f=Math.max(0,16-(c-e)),d=window.setTimeout(function(){return a(c+f)},f),e=c+f,d},window.cancelAnimationFrame=function(a){return clearTimeout(a)})}(),String.prototype.hashCode=function(){var a,b,c,d,e;if(b=0,0===this.length)return b;for(c=d=0,e=this.length;e>=0?e>d:d>e;c=e>=0?++d:--d)a=this.charCodeAt(c),b=(b<<5)-b+a,b&=b;return b},o=function(a){var b,c;for(b=Math.floor(a/3600),c=Math.floor((a-3600*b)/60),a-=3600*b+60*c,a+="",c+="";c.length<2;)c="0"+c;for(;a.length<2;)a="0"+a;return b=b?b+":":"",b+c+":"+a},m=function(a){return k(a.toFixed(0))},p=function(a,b){var c,d;for(c in b)q.call(b,c)&&(d=b[c],a[c]=d);return a},n=function(a,b){var c,d,e;d={};for(c in a)q.call(a,c)&&(e=a[c],d[c]=e);for(c in b)q.call(b,c)&&(e=b[c],d[c]=e);return d},k=function(a){var b,c,d,e;for(a+="",c=a.split("."),d=c[0],e="",c.length>1&&(e="."+c[1]),b=/(\d+)(\d{3})/;b.test(d);)d=d.replace(b,"$1,$2");return d+e},l=function(a){return"#"===a.charAt(0)?a.substring(1,7):a},j=function(){function a(a,b){null==a&&(a=!0),this.clear=null!=b?b:!0,a&&AnimationUpdater.add(this)}return a.prototype.animationSpeed=32,a.prototype.update=function(a){var b;return null==a&&(a=!1),a||this.displayedValue!==this.value?(this.ctx&&this.clear&&this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height),b=this.value-this.displayedValue,Math.abs(b/this.animationSpeed)<=.001?this.displayedValue=this.value:this.displayedValue=this.displayedValue+b/this.animationSpeed,this.render(),!0):!1},a}(),e=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return r(b,a),b.prototype.displayScale=1,b.prototype.setTextField=function(a){return this.textField=a instanceof i?a:new i(a)},b.prototype.setMinValue=function(a,b){var c,d,e,f,g;if(this.minValue=a,null==b&&(b=!0),b){for(this.displayedValue=this.minValue,f=this.gp||[],g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(c.displayedValue=this.minValue);return g}},b.prototype.setOptions=function(a){return null==a&&(a=null),this.options=n(this.options,a),this.textField&&(this.textField.el.style.fontSize=a.fontSize+"px"),this.options.angle>.5&&(this.gauge.options.angle=.5),this.configDisplayScale(),this},b.prototype.configDisplayScale=function(){var a,b,c,d,e;return d=this.displayScale,this.options.highDpiSupport===!1?delete this.displayScale:(b=window.devicePixelRatio||1,a=this.ctx.webkitBackingStorePixelRatio||this.ctx.mozBackingStorePixelRatio||this.ctx.msBackingStorePixelRatio||this.ctx.oBackingStorePixelRatio||this.ctx.backingStorePixelRatio||1,this.displayScale=b/a),this.displayScale!==d&&(e=this.canvas.G__width||this.canvas.width,c=this.canvas.G__height||this.canvas.height,this.canvas.width=e*this.displayScale,this.canvas.height=c*this.displayScale,this.canvas.style.width=e+"px",this.canvas.style.height=c+"px",this.canvas.G__width=e,this.canvas.G__height=c),this},b}(j),i=function(){function a(a){this.el=a}return a.prototype.render=function(a){return this.el.innerHTML=m(a.displayedValue)},a}(),a=function(a){function b(a,b){this.elem=a,this.text=null!=b?b:!1,this.value=1*this.elem.innerHTML,this.text&&(this.value=0)}return r(b,a),b.prototype.displayedValue=0,b.prototype.value=0,b.prototype.setVal=function(a){return this.value=1*a},b.prototype.render=function(){var a;return a=this.text?o(this.displayedValue.toFixed(0)):k(m(this.displayedValue)),this.elem.innerHTML=a},b}(j),b={create:function(b){var c,d,e,f;for(f=[],d=0,e=b.length;e>d;d++)c=b[d],f.push(new a(c));return f}},h=function(a){function b(a){this.gauge=a,this.ctx=this.gauge.ctx,this.canvas=this.gauge.canvas,b.__super__.constructor.call(this,!1,!1),this.setOptions()}return r(b,a),b.prototype.displayedValue=0,b.prototype.value=0,b.prototype.options={strokeWidth:.035,length:.1,color:"#000000"},b.prototype.setOptions=function(a){return null==a&&(a=null),p(this.options,a),this.length=this.canvas.height*this.options.length,this.strokeWidth=this.canvas.height*this.options.strokeWidth,this.maxValue=this.gauge.maxValue,this.minValue=this.gauge.minValue,this.animationSpeed=this.gauge.animationSpeed,this.options.angle=this.gauge.options.angle},b.prototype.render=function(){var a,b,c,d,e,f,g,h,i;return a=this.gauge.getAngle.call(this,this.displayedValue),b=this.canvas.width/2,c=.9*this.canvas.height,h=Math.round(b+this.length*Math.cos(a)),i=Math.round(c+this.length*Math.sin(a)),f=Math.round(b+this.strokeWidth*Math.cos(a-Math.PI/2)),g=Math.round(c+this.strokeWidth*Math.sin(a-Math.PI/2)),d=Math.round(b+this.strokeWidth*Math.cos(a+Math.PI/2)),e=Math.round(c+this.strokeWidth*Math.sin(a+Math.PI/2)),this.ctx.fillStyle=this.options.color,this.ctx.beginPath(),this.ctx.arc(b,c,this.strokeWidth,0,2*Math.PI,!0),this.ctx.fill(),this.ctx.beginPath(),this.ctx.moveTo(f,g),this.ctx.lineTo(h,i),this.ctx.lineTo(d,e),this.ctx.fill()},b}(j),c=function(){function a(a){this.elem=a}return a.prototype.updateValues=function(a){return this.value=a[0],this.maxValue=a[1],this.avgValue=a[2],this.render()},a.prototype.render=function(){var a,b;return this.textField&&this.textField.text(m(this.value)),0===this.maxValue&&(this.maxValue=2*this.avgValue),b=this.value/this.maxValue*100,a=this.avgValue/this.maxValue*100,$(".bar-value",this.elem).css({width:b+"%"}),$(".typical-value",this.elem).css({width:a+"%"})},a}(),g=function(a){function b(a){this.canvas=a,b.__super__.constructor.call(this),this.percentColors=null,"undefined"!=typeof G_vmlCanvasManager&&(this.canvas=window.G_vmlCanvasManager.initElement(this.canvas)),this.ctx=this.canvas.getContext("2d"),this.gp=[new h(this)],this.setOptions(),this.render()}return r(b,a),b.prototype.elem=null,b.prototype.value=[20],b.prototype.maxValue=80,b.prototype.minValue=0,b.prototype.displayedAngle=0,b.prototype.displayedValue=0,b.prototype.lineWidth=40,b.prototype.paddingBottom=.1,b.prototype.percentColors=null,b.prototype.options={colorStart:"#6fadcf",colorStop:void 0,gradientType:0,strokeColor:"#e0e0e0",pointer:{length:.8,strokeWidth:.035},angle:.15,lineWidth:.44,fontSize:40,limitMax:!1},b.prototype.setOptions=function(a){var c,d,e,f;for(null==a&&(a=null),b.__super__.setOptions.call(this,a),this.configPercentColors(),this.lineWidth=this.canvas.height*(1-this.paddingBottom)*this.options.lineWidth,this.radius=this.canvas.height*(1-this.paddingBottom)-this.lineWidth,this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height),this.render(),f=this.gp,d=0,e=f.length;e>d;d++)c=f[d],c.setOptions(this.options.pointer),c.render();return this},b.prototype.configPercentColors=function(){var a,b,c,d,e,f,g;if(this.percentColors=null,void 0!==this.options.percentColors){for(this.percentColors=new Array,f=[],c=d=0,e=this.options.percentColors.length-1;e>=0?e>=d:d>=e;c=e>=0?++d:--d)g=parseInt(l(this.options.percentColors[c][1]).substring(0,2),16),b=parseInt(l(this.options.percentColors[c][1]).substring(2,4),16),a=parseInt(l(this.options.percentColors[c][1]).substring(4,6),16),f.push(this.percentColors[c]={pct:this.options.percentColors[c][0],color:{r:g,g:b,b:a}});return f}},b.prototype.set=function(a){var b,c,d,e,f,g,i;if(a instanceof Array||(a=[a]),a.length>this.gp.length)for(b=c=0,g=a.length-this.gp.length;g>=0?g>c:c>g;b=g>=0?++c:--c)this.gp.push(new h(this));for(b=0,f=!1,d=0,e=a.length;e>d;d++)i=a[d],i>this.maxValue&&(this.maxValue=1.1*this.value,f=!0),this.gp[b].value=i,this.gp[b++].setOptions({maxValue:this.maxValue,angle:this.options.angle});return this.value=a[a.length-1],f&&this.options.limitMax?void 0:AnimationUpdater.run()},b.prototype.getAngle=function(a){return(1+this.options.angle)*Math.PI+(a-this.minValue)/(this.maxValue-this.minValue)*(1-2*this.options.angle)*Math.PI},b.prototype.getColorForPercentage=function(a,b){var c,d,e,f,g,h,i;if(0===a)c=this.percentColors[0].color;else for(c=this.percentColors[this.percentColors.length-1].color,e=f=0,h=this.percentColors.length-1;h>=0?h>=f:f>=h;e=h>=0?++f:--f)if(a<=this.percentColors[e].pct){b===!0?(i=this.percentColors[e-1],d=this.percentColors[e],g=(a-i.pct)/(d.pct-i.pct),c={r:Math.floor(i.color.r*(1-g)+d.color.r*g),g:Math.floor(i.color.g*(1-g)+d.color.g*g),b:Math.floor(i.color.b*(1-g)+d.color.b*g)}):c=this.percentColors[e].color;break}return"rgb("+[c.r,c.g,c.b].join(",")+")"},b.prototype.getColorForValue=function(a,b){var c;return c=(a-this.minValue)/(this.maxValue-this.minValue),this.getColorForPercentage(c,b)},b.prototype.render=function(){var a,b,c,d,e,f,g,h,i;for(i=this.canvas.width/2,d=this.canvas.height*(1-this.paddingBottom),a=this.getAngle(this.displayedValue),this.textField&&this.textField.render(this),this.ctx.lineCap="butt",void 0!==this.options.customFillStyle?b=this.options.customFillStyle(this):null!==this.percentColors?b=this.getColorForValue(this.displayedValue,!0):void 0!==this.options.colorStop?(b=0===this.options.gradientType?this.ctx.createRadialGradient(i,d,9,i,d,70):this.ctx.createLinearGradient(0,0,i,0),b.addColorStop(0,this.options.colorStart),b.addColorStop(1,this.options.colorStop)):b=this.options.colorStart,this.ctx.strokeStyle=b,this.ctx.beginPath(),this.ctx.arc(i,d,this.radius,(1+this.options.angle)*Math.PI,a,!1),this.ctx.lineWidth=this.lineWidth,this.ctx.stroke(),this.ctx.strokeStyle=this.options.strokeColor,this.ctx.beginPath(),this.ctx.arc(i,d,this.radius,a,(2-this.options.angle)*Math.PI,!1),this.ctx.stroke(),g=this.gp,h=[],e=0,f=g.length;f>e;e++)c=g[e],h.push(c.update(!0));return h},b}(e),d=function(a){function b(a){this.canvas=a,b.__super__.constructor.call(this),"undefined"!=typeof G_vmlCanvasManager&&(this.canvas=window.G_vmlCanvasManager.initElement(this.canvas)),this.ctx=this.canvas.getContext("2d"),this.setOptions(),this.render()}return r(b,a),b.prototype.lineWidth=15,b.prototype.displayedValue=0,b.prototype.value=33,b.prototype.maxValue=80,b.prototype.minValue=0,b.prototype.options={lineWidth:.1,colorStart:"#6f6ea0",colorStop:"#c0c0db",strokeColor:"#eeeeee",shadowColor:"#d5d5d5",angle:.35},b.prototype.getAngle=function(a){return(1-this.options.angle)*Math.PI+(a-this.minValue)/(this.maxValue-this.minValue)*(2+this.options.angle-(1-this.options.angle))*Math.PI},b.prototype.setOptions=function(a){return null==a&&(a=null),b.__super__.setOptions.call(this,a),this.lineWidth=this.canvas.height*this.options.lineWidth,this.radius=this.canvas.height/2-this.lineWidth/2,this},b.prototype.set=function(a){return this.value=a,this.value>this.maxValue&&(this.maxValue=1.1*this.value),AnimationUpdater.run()},b.prototype.render=function(){var a,b,c,d,e,f;return a=this.getAngle(this.displayedValue),f=this.canvas.width/2,c=this.canvas.height/2,this.textField&&this.textField.render(this),b=this.ctx.createRadialGradient(f,c,39,f,c,70),b.addColorStop(0,this.options.colorStart),b.addColorStop(1,this.options.colorStop),d=this.radius-this.lineWidth/2,e=this.radius+this.lineWidth/2,this.ctx.strokeStyle=this.options.strokeColor,this.ctx.beginPath(),this.ctx.arc(f,c,this.radius,(1-this.options.angle)*Math.PI,(2+this.options.angle)*Math.PI,!1),this.ctx.lineWidth=this.lineWidth,this.ctx.lineCap="round",this.ctx.stroke(),this.ctx.strokeStyle=b,this.ctx.beginPath(),this.ctx.arc(f,c,this.radius,(1-this.options.angle)*Math.PI,a,!1),this.ctx.stroke()},b}(e),f=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return r(b,a),b.prototype.strokeGradient=function(a,b,c,d){var e;return e=this.ctx.createRadialGradient(a,b,c,a,b,d),e.addColorStop(0,this.options.shadowColor),e.addColorStop(.12,this.options._orgStrokeColor),e.addColorStop(.88,this.options._orgStrokeColor),e.addColorStop(1,this.options.shadowColor),e},b.prototype.setOptions=function(a){var c,d,e,f;return null==a&&(a=null),b.__super__.setOptions.call(this,a),f=this.canvas.width/2,c=this.canvas.height/2,d=this.radius-this.lineWidth/2,e=this.radius+this.lineWidth/2,this.options._orgStrokeColor=this.options.strokeColor,this.options.strokeColor=this.strokeGradient(f,c,d,e),this},b}(d),window.AnimationUpdater={elements:[],animId:null,addAll:function(a){var b,c,d,e;for(e=[],c=0,d=a.length;d>c;c++)b=a[c],e.push(AnimationUpdater.elements.push(b));return e},add:function(a){return AnimationUpdater.elements.push(a)},run:function(){var a,b,c,d,e;for(a=!0,e=AnimationUpdater.elements,c=0,d=e.length;d>c;c++)b=e[c],b.update()&&(a=!1);return a?cancelAnimationFrame(AnimationUpdater.animId):AnimationUpdater.animId=requestAnimationFrame(AnimationUpdater.run)}},"function"==typeof window.define&&null!=window.define.amd?define(function(){return{Gauge:g,Donut:f,BaseDonut:d,TextRenderer:i}}):"undefined"!=typeof module&&null!=module.exports?module.exports={Gauge:g,Donut:f,BaseDonut:d,TextRenderer:i}:(window.Gauge=g,window.Donut=f,window.BaseDonut=d,window.TextRenderer=i)}).call(this);
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/gl-matrix-min.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/gl-matrix-min.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/gl-matrix-min.js	(revision 27955)
@@ -0,0 +1,29 @@
+/**
+ * @fileoverview gl-matrix - High performance matrix and vector operations
+ * @author Brandon Jones
+ * @author Colin MacKenzie IV
+ * @version 2.3.2
+ */
+
+/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.
+
+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. */
+
+!function(t,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define(a);else{var n=a();for(var r in n)("object"==typeof exports?exports:t)[r]=n[r]}}(this,function(){return function(t){function a(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,a),o.loaded=!0,o.exports}var n={};return a.m=t,a.c=n,a.p="",a(0)}([function(t,a,n){a.glMatrix=n(1),a.mat2=n(2),a.mat2d=n(3),a.mat3=n(4),a.mat4=n(5),a.quat=n(6),a.vec2=n(9),a.vec3=n(7),a.vec4=n(8)},function(t,a){var n={};n.EPSILON=1e-6,n.ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array,n.RANDOM=Math.random,n.ENABLE_SIMD=!1,n.SIMD_AVAILABLE=n.ARRAY_TYPE===Float32Array&&"SIMD"in this,n.USE_SIMD=n.ENABLE_SIMD&&n.SIMD_AVAILABLE,n.setMatrixArrayType=function(t){n.ARRAY_TYPE=t};var r=Math.PI/180;n.toRadian=function(t){return t*r},t.exports=n},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(4);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},o.clone=function(t){var a=new r.ARRAY_TYPE(4);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t},o.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},o.transpose=function(t,a){if(t===a){var n=a[1];t[1]=a[2],t[2]=n}else t[0]=a[0],t[1]=a[2],t[2]=a[1],t[3]=a[3];return t},o.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n*l-o*r;return u?(u=1/u,t[0]=l*u,t[1]=-r*u,t[2]=-o*u,t[3]=n*u,t):null},o.adjoint=function(t,a){var n=a[0];return t[0]=a[3],t[1]=-a[1],t[2]=-a[2],t[3]=n,t},o.determinant=function(t){return t[0]*t[3]-t[2]*t[1]},o.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=n[0],M=n[1],i=n[2],s=n[3];return t[0]=r*e+l*M,t[1]=o*e+u*M,t[2]=r*i+l*s,t[3]=o*i+u*s,t},o.mul=o.multiply,o.rotate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=Math.sin(n),M=Math.cos(n);return t[0]=r*M+l*e,t[1]=o*M+u*e,t[2]=r*-e+l*M,t[3]=o*-e+u*M,t},o.scale=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=n[0],M=n[1];return t[0]=r*e,t[1]=o*e,t[2]=l*M,t[3]=u*M,t},o.fromRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=n,t[2]=-n,t[3]=r,t},o.fromScaling=function(t,a){return t[0]=a[0],t[1]=0,t[2]=0,t[3]=a[1],t},o.str=function(t){return"mat2("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},o.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2))},o.LDU=function(t,a,n,r){return t[2]=r[2]/r[0],n[0]=r[0],n[1]=r[1],n[3]=r[3]-t[2]*n[1],[t,a,n]},t.exports=o},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(6);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},o.clone=function(t){var a=new r.ARRAY_TYPE(6);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=t[4],a[5]=t[5],a},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t},o.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},o.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=n*l-r*o;return M?(M=1/M,t[0]=l*M,t[1]=-r*M,t[2]=-o*M,t[3]=n*M,t[4]=(o*e-l*u)*M,t[5]=(r*u-n*e)*M,t):null},o.determinant=function(t){return t[0]*t[3]-t[1]*t[2]},o.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=n[0],s=n[1],c=n[2],D=n[3],S=n[4],I=n[5];return t[0]=r*i+l*s,t[1]=o*i+u*s,t[2]=r*c+l*D,t[3]=o*c+u*D,t[4]=r*S+l*I+e,t[5]=o*S+u*I+M,t},o.mul=o.multiply,o.rotate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=Math.sin(n),s=Math.cos(n);return t[0]=r*s+l*i,t[1]=o*s+u*i,t[2]=r*-i+l*s,t[3]=o*-i+u*s,t[4]=e,t[5]=M,t},o.scale=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=n[0],s=n[1];return t[0]=r*i,t[1]=o*i,t[2]=l*s,t[3]=u*s,t[4]=e,t[5]=M,t},o.translate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=n[0],s=n[1];return t[0]=r,t[1]=o,t[2]=l,t[3]=u,t[4]=r*i+l*s+e,t[5]=o*i+u*s+M,t},o.fromRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=n,t[2]=-n,t[3]=r,t[4]=0,t[5]=0,t},o.fromScaling=function(t,a){return t[0]=a[0],t[1]=0,t[2]=0,t[3]=a[1],t[4]=0,t[5]=0,t},o.fromTranslation=function(t,a){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=a[0],t[5]=a[1],t},o.str=function(t){return"mat2d("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+")"},o.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+1)},t.exports=o},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},o.fromMat4=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[4],t[4]=a[5],t[5]=a[6],t[6]=a[8],t[7]=a[9],t[8]=a[10],t},o.clone=function(t){var a=new r.ARRAY_TYPE(9);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=t[4],a[5]=t[5],a[6]=t[6],a[7]=t[7],a[8]=t[8],a},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t},o.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},o.transpose=function(t,a){if(t===a){var n=a[1],r=a[2],o=a[5];t[1]=a[3],t[2]=a[6],t[3]=n,t[5]=a[7],t[6]=r,t[7]=o}else t[0]=a[0],t[1]=a[3],t[2]=a[6],t[3]=a[1],t[4]=a[4],t[5]=a[7],t[6]=a[2],t[7]=a[5],t[8]=a[8];return t},o.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8],c=s*u-e*i,D=-s*l+e*M,S=i*l-u*M,I=n*c+r*D+o*S;return I?(I=1/I,t[0]=c*I,t[1]=(-s*r+o*i)*I,t[2]=(e*r-o*u)*I,t[3]=D*I,t[4]=(s*n-o*M)*I,t[5]=(-e*n+o*l)*I,t[6]=S*I,t[7]=(-i*n+r*M)*I,t[8]=(u*n-r*l)*I,t):null},o.adjoint=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8];return t[0]=u*s-e*i,t[1]=o*i-r*s,t[2]=r*e-o*u,t[3]=e*M-l*s,t[4]=n*s-o*M,t[5]=o*l-n*e,t[6]=l*i-u*M,t[7]=r*M-n*i,t[8]=n*u-r*l,t},o.determinant=function(t){var a=t[0],n=t[1],r=t[2],o=t[3],l=t[4],u=t[5],e=t[6],M=t[7],i=t[8];return a*(i*l-u*M)+n*(-i*o+u*e)+r*(M*o-l*e)},o.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=n[0],S=n[1],I=n[2],x=n[3],f=n[4],F=n[5],m=n[6],h=n[7],d=n[8];return t[0]=D*r+S*u+I*i,t[1]=D*o+S*e+I*s,t[2]=D*l+S*M+I*c,t[3]=x*r+f*u+F*i,t[4]=x*o+f*e+F*s,t[5]=x*l+f*M+F*c,t[6]=m*r+h*u+d*i,t[7]=m*o+h*e+d*s,t[8]=m*l+h*M+d*c,t},o.mul=o.multiply,o.translate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=n[0],S=n[1];return t[0]=r,t[1]=o,t[2]=l,t[3]=u,t[4]=e,t[5]=M,t[6]=D*r+S*u+i,t[7]=D*o+S*e+s,t[8]=D*l+S*M+c,t},o.rotate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=Math.sin(n),S=Math.cos(n);return t[0]=S*r+D*u,t[1]=S*o+D*e,t[2]=S*l+D*M,t[3]=S*u-D*r,t[4]=S*e-D*o,t[5]=S*M-D*l,t[6]=i,t[7]=s,t[8]=c,t},o.scale=function(t,a,n){var r=n[0],o=n[1];return t[0]=r*a[0],t[1]=r*a[1],t[2]=r*a[2],t[3]=o*a[3],t[4]=o*a[4],t[5]=o*a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t},o.fromTranslation=function(t,a){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=a[0],t[7]=a[1],t[8]=1,t},o.fromRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=n,t[2]=0,t[3]=-n,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},o.fromScaling=function(t,a){return t[0]=a[0],t[1]=0,t[2]=0,t[3]=0,t[4]=a[1],t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},o.fromMat2d=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=0,t[3]=a[2],t[4]=a[3],t[5]=0,t[6]=a[4],t[7]=a[5],t[8]=1,t},o.fromQuat=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n+n,e=r+r,M=o+o,i=n*u,s=r*u,c=r*e,D=o*u,S=o*e,I=o*M,x=l*u,f=l*e,F=l*M;return t[0]=1-c-I,t[3]=s-F,t[6]=D+f,t[1]=s+F,t[4]=1-i-I,t[7]=S-x,t[2]=D-f,t[5]=S+x,t[8]=1-i-c,t},o.normalFromMat4=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8],c=a[9],D=a[10],S=a[11],I=a[12],x=a[13],f=a[14],F=a[15],m=n*e-r*u,h=n*M-o*u,d=n*i-l*u,v=r*M-o*e,z=r*i-l*e,p=o*i-l*M,w=s*x-c*I,A=s*f-D*I,R=s*F-S*I,b=c*f-D*x,Y=c*F-S*x,q=D*F-S*f,y=m*q-h*Y+d*b+v*R-z*A+p*w;return y?(y=1/y,t[0]=(e*q-M*Y+i*b)*y,t[1]=(M*R-u*q-i*A)*y,t[2]=(u*Y-e*R+i*w)*y,t[3]=(o*Y-r*q-l*b)*y,t[4]=(n*q-o*R+l*A)*y,t[5]=(r*R-n*Y-l*w)*y,t[6]=(x*p-f*z+F*v)*y,t[7]=(f*d-I*p-F*h)*y,t[8]=(I*z-x*d+F*m)*y,t):null},o.str=function(t){return"mat3("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+")"},o.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+Math.pow(t[6],2)+Math.pow(t[7],2)+Math.pow(t[8],2))},t.exports=o},function(t,a,n){var r=n(1),o={scalar:{},SIMD:{}};o.create=function(){var t=new r.ARRAY_TYPE(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.clone=function(t){var a=new r.ARRAY_TYPE(16);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=t[4],a[5]=t[5],a[6]=t[6],a[7]=t[7],a[8]=t[8],a[9]=t[9],a[10]=t[10],a[11]=t[11],a[12]=t[12],a[13]=t[13],a[14]=t[14],a[15]=t[15],a},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15],t},o.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.scalar.transpose=function(t,a){if(t===a){var n=a[1],r=a[2],o=a[3],l=a[6],u=a[7],e=a[11];t[1]=a[4],t[2]=a[8],t[3]=a[12],t[4]=n,t[6]=a[9],t[7]=a[13],t[8]=r,t[9]=l,t[11]=a[14],t[12]=o,t[13]=u,t[14]=e}else t[0]=a[0],t[1]=a[4],t[2]=a[8],t[3]=a[12],t[4]=a[1],t[5]=a[5],t[6]=a[9],t[7]=a[13],t[8]=a[2],t[9]=a[6],t[10]=a[10],t[11]=a[14],t[12]=a[3],t[13]=a[7],t[14]=a[11],t[15]=a[15];return t},o.SIMD.transpose=function(t,a){var n,r,o,l,u,e,M,i,s,c;return n=SIMD.Float32x4.load(a,0),r=SIMD.Float32x4.load(a,4),o=SIMD.Float32x4.load(a,8),l=SIMD.Float32x4.load(a,12),u=SIMD.Float32x4.shuffle(n,r,0,1,4,5),e=SIMD.Float32x4.shuffle(o,l,0,1,4,5),M=SIMD.Float32x4.shuffle(u,e,0,2,4,6),i=SIMD.Float32x4.shuffle(u,e,1,3,5,7),SIMD.Float32x4.store(t,0,M),SIMD.Float32x4.store(t,4,i),u=SIMD.Float32x4.shuffle(n,r,2,3,6,7),e=SIMD.Float32x4.shuffle(o,l,2,3,6,7),s=SIMD.Float32x4.shuffle(u,e,0,2,4,6),c=SIMD.Float32x4.shuffle(u,e,1,3,5,7),SIMD.Float32x4.store(t,8,s),SIMD.Float32x4.store(t,12,c),t},o.transpose=r.USE_SIMD?o.SIMD.transpose:o.scalar.transpose,o.scalar.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8],c=a[9],D=a[10],S=a[11],I=a[12],x=a[13],f=a[14],F=a[15],m=n*e-r*u,h=n*M-o*u,d=n*i-l*u,v=r*M-o*e,z=r*i-l*e,p=o*i-l*M,w=s*x-c*I,A=s*f-D*I,R=s*F-S*I,b=c*f-D*x,Y=c*F-S*x,q=D*F-S*f,y=m*q-h*Y+d*b+v*R-z*A+p*w;return y?(y=1/y,t[0]=(e*q-M*Y+i*b)*y,t[1]=(o*Y-r*q-l*b)*y,t[2]=(x*p-f*z+F*v)*y,t[3]=(D*z-c*p-S*v)*y,t[4]=(M*R-u*q-i*A)*y,t[5]=(n*q-o*R+l*A)*y,t[6]=(f*d-I*p-F*h)*y,t[7]=(s*p-D*d+S*h)*y,t[8]=(u*Y-e*R+i*w)*y,t[9]=(r*R-n*Y-l*w)*y,t[10]=(I*z-x*d+F*m)*y,t[11]=(c*d-s*z-S*m)*y,t[12]=(e*A-u*b-M*w)*y,t[13]=(n*b-r*A+o*w)*y,t[14]=(x*h-I*v-f*m)*y,t[15]=(s*v-c*h+D*m)*y,t):null},o.SIMD.invert=function(t,a){var n,r,o,l,u,e,M,i,s,c,D=SIMD.Float32x4.load(a,0),S=SIMD.Float32x4.load(a,4),I=SIMD.Float32x4.load(a,8),x=SIMD.Float32x4.load(a,12);return u=SIMD.Float32x4.shuffle(D,S,0,1,4,5),r=SIMD.Float32x4.shuffle(I,x,0,1,4,5),n=SIMD.Float32x4.shuffle(u,r,0,2,4,6),r=SIMD.Float32x4.shuffle(r,u,1,3,5,7),u=SIMD.Float32x4.shuffle(D,S,2,3,6,7),l=SIMD.Float32x4.shuffle(I,x,2,3,6,7),o=SIMD.Float32x4.shuffle(u,l,0,2,4,6),l=SIMD.Float32x4.shuffle(l,u,1,3,5,7),u=SIMD.Float32x4.mul(o,l),u=SIMD.Float32x4.swizzle(u,1,0,3,2),e=SIMD.Float32x4.mul(r,u),M=SIMD.Float32x4.mul(n,u),u=SIMD.Float32x4.swizzle(u,2,3,0,1),e=SIMD.Float32x4.sub(SIMD.Float32x4.mul(r,u),e),M=SIMD.Float32x4.sub(SIMD.Float32x4.mul(n,u),M),M=SIMD.Float32x4.swizzle(M,2,3,0,1),u=SIMD.Float32x4.mul(r,o),u=SIMD.Float32x4.swizzle(u,1,0,3,2),e=SIMD.Float32x4.add(SIMD.Float32x4.mul(l,u),e),s=SIMD.Float32x4.mul(n,u),u=SIMD.Float32x4.swizzle(u,2,3,0,1),e=SIMD.Float32x4.sub(e,SIMD.Float32x4.mul(l,u)),s=SIMD.Float32x4.sub(SIMD.Float32x4.mul(n,u),s),s=SIMD.Float32x4.swizzle(s,2,3,0,1),u=SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(r,2,3,0,1),l),u=SIMD.Float32x4.swizzle(u,1,0,3,2),o=SIMD.Float32x4.swizzle(o,2,3,0,1),e=SIMD.Float32x4.add(SIMD.Float32x4.mul(o,u),e),i=SIMD.Float32x4.mul(n,u),u=SIMD.Float32x4.swizzle(u,2,3,0,1),e=SIMD.Float32x4.sub(e,SIMD.Float32x4.mul(o,u)),i=SIMD.Float32x4.sub(SIMD.Float32x4.mul(n,u),i),i=SIMD.Float32x4.swizzle(i,2,3,0,1),u=SIMD.Float32x4.mul(n,r),u=SIMD.Float32x4.swizzle(u,1,0,3,2),i=SIMD.Float32x4.add(SIMD.Float32x4.mul(l,u),i),s=SIMD.Float32x4.sub(SIMD.Float32x4.mul(o,u),s),u=SIMD.Float32x4.swizzle(u,2,3,0,1),i=SIMD.Float32x4.sub(SIMD.Float32x4.mul(l,u),i),s=SIMD.Float32x4.sub(s,SIMD.Float32x4.mul(o,u)),u=SIMD.Float32x4.mul(n,l),u=SIMD.Float32x4.swizzle(u,1,0,3,2),M=SIMD.Float32x4.sub(M,SIMD.Float32x4.mul(o,u)),i=SIMD.Float32x4.add(SIMD.Float32x4.mul(r,u),i),u=SIMD.Float32x4.swizzle(u,2,3,0,1),M=SIMD.Float32x4.add(SIMD.Float32x4.mul(o,u),M),i=SIMD.Float32x4.sub(i,SIMD.Float32x4.mul(r,u)),u=SIMD.Float32x4.mul(n,o),u=SIMD.Float32x4.swizzle(u,1,0,3,2),M=SIMD.Float32x4.add(SIMD.Float32x4.mul(l,u),M),s=SIMD.Float32x4.sub(s,SIMD.Float32x4.mul(r,u)),u=SIMD.Float32x4.swizzle(u,2,3,0,1),M=SIMD.Float32x4.sub(M,SIMD.Float32x4.mul(l,u)),s=SIMD.Float32x4.add(SIMD.Float32x4.mul(r,u),s),c=SIMD.Float32x4.mul(n,e),c=SIMD.Float32x4.add(SIMD.Float32x4.swizzle(c,2,3,0,1),c),c=SIMD.Float32x4.add(SIMD.Float32x4.swizzle(c,1,0,3,2),c),u=SIMD.Float32x4.reciprocalApproximation(c),c=SIMD.Float32x4.sub(SIMD.Float32x4.add(u,u),SIMD.Float32x4.mul(c,SIMD.Float32x4.mul(u,u))),(c=SIMD.Float32x4.swizzle(c,0,0,0,0))?(SIMD.Float32x4.store(t,0,SIMD.Float32x4.mul(c,e)),SIMD.Float32x4.store(t,4,SIMD.Float32x4.mul(c,M)),SIMD.Float32x4.store(t,8,SIMD.Float32x4.mul(c,i)),SIMD.Float32x4.store(t,12,SIMD.Float32x4.mul(c,s)),t):null},o.invert=r.USE_SIMD?o.SIMD.invert:o.scalar.invert,o.scalar.adjoint=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8],c=a[9],D=a[10],S=a[11],I=a[12],x=a[13],f=a[14],F=a[15];return t[0]=e*(D*F-S*f)-c*(M*F-i*f)+x*(M*S-i*D),t[1]=-(r*(D*F-S*f)-c*(o*F-l*f)+x*(o*S-l*D)),t[2]=r*(M*F-i*f)-e*(o*F-l*f)+x*(o*i-l*M),t[3]=-(r*(M*S-i*D)-e*(o*S-l*D)+c*(o*i-l*M)),t[4]=-(u*(D*F-S*f)-s*(M*F-i*f)+I*(M*S-i*D)),t[5]=n*(D*F-S*f)-s*(o*F-l*f)+I*(o*S-l*D),t[6]=-(n*(M*F-i*f)-u*(o*F-l*f)+I*(o*i-l*M)),t[7]=n*(M*S-i*D)-u*(o*S-l*D)+s*(o*i-l*M),t[8]=u*(c*F-S*x)-s*(e*F-i*x)+I*(e*S-i*c),t[9]=-(n*(c*F-S*x)-s*(r*F-l*x)+I*(r*S-l*c)),t[10]=n*(e*F-i*x)-u*(r*F-l*x)+I*(r*i-l*e),t[11]=-(n*(e*S-i*c)-u*(r*S-l*c)+s*(r*i-l*e)),t[12]=-(u*(c*f-D*x)-s*(e*f-M*x)+I*(e*D-M*c)),t[13]=n*(c*f-D*x)-s*(r*f-o*x)+I*(r*D-o*c),t[14]=-(n*(e*f-M*x)-u*(r*f-o*x)+I*(r*M-o*e)),t[15]=n*(e*D-M*c)-u*(r*D-o*c)+s*(r*M-o*e),t},o.SIMD.adjoint=function(t,a){var n,r,o,l,u,e,M,i,s,c,D,S,I,n=SIMD.Float32x4.load(a,0),r=SIMD.Float32x4.load(a,4),o=SIMD.Float32x4.load(a,8),l=SIMD.Float32x4.load(a,12);return s=SIMD.Float32x4.shuffle(n,r,0,1,4,5),e=SIMD.Float32x4.shuffle(o,l,0,1,4,5),u=SIMD.Float32x4.shuffle(s,e,0,2,4,6),e=SIMD.Float32x4.shuffle(e,s,1,3,5,7),s=SIMD.Float32x4.shuffle(n,r,2,3,6,7),i=SIMD.Float32x4.shuffle(o,l,2,3,6,7),M=SIMD.Float32x4.shuffle(s,i,0,2,4,6),i=SIMD.Float32x4.shuffle(i,s,1,3,5,7),s=SIMD.Float32x4.mul(M,i),s=SIMD.Float32x4.swizzle(s,1,0,3,2),c=SIMD.Float32x4.mul(e,s),D=SIMD.Float32x4.mul(u,s),s=SIMD.Float32x4.swizzle(s,2,3,0,1),c=SIMD.Float32x4.sub(SIMD.Float32x4.mul(e,s),c),D=SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,s),D),D=SIMD.Float32x4.swizzle(D,2,3,0,1),s=SIMD.Float32x4.mul(e,M),s=SIMD.Float32x4.swizzle(s,1,0,3,2),c=SIMD.Float32x4.add(SIMD.Float32x4.mul(i,s),c),I=SIMD.Float32x4.mul(u,s),s=SIMD.Float32x4.swizzle(s,2,3,0,1),c=SIMD.Float32x4.sub(c,SIMD.Float32x4.mul(i,s)),I=SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,s),I),I=SIMD.Float32x4.swizzle(I,2,3,0,1),s=SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,2,3,0,1),i),s=SIMD.Float32x4.swizzle(s,1,0,3,2),M=SIMD.Float32x4.swizzle(M,2,3,0,1),c=SIMD.Float32x4.add(SIMD.Float32x4.mul(M,s),c),S=SIMD.Float32x4.mul(u,s),s=SIMD.Float32x4.swizzle(s,2,3,0,1),c=SIMD.Float32x4.sub(c,SIMD.Float32x4.mul(M,s)),S=SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,s),S),S=SIMD.Float32x4.swizzle(S,2,3,0,1),s=SIMD.Float32x4.mul(u,e),s=SIMD.Float32x4.swizzle(s,1,0,3,2),S=SIMD.Float32x4.add(SIMD.Float32x4.mul(i,s),S),I=SIMD.Float32x4.sub(SIMD.Float32x4.mul(M,s),I),s=SIMD.Float32x4.swizzle(s,2,3,0,1),S=SIMD.Float32x4.sub(SIMD.Float32x4.mul(i,s),S),I=SIMD.Float32x4.sub(I,SIMD.Float32x4.mul(M,s)),s=SIMD.Float32x4.mul(u,i),s=SIMD.Float32x4.swizzle(s,1,0,3,2),D=SIMD.Float32x4.sub(D,SIMD.Float32x4.mul(M,s)),S=SIMD.Float32x4.add(SIMD.Float32x4.mul(e,s),S),s=SIMD.Float32x4.swizzle(s,2,3,0,1),D=SIMD.Float32x4.add(SIMD.Float32x4.mul(M,s),D),S=SIMD.Float32x4.sub(S,SIMD.Float32x4.mul(e,s)),s=SIMD.Float32x4.mul(u,M),s=SIMD.Float32x4.swizzle(s,1,0,3,2),D=SIMD.Float32x4.add(SIMD.Float32x4.mul(i,s),D),I=SIMD.Float32x4.sub(I,SIMD.Float32x4.mul(e,s)),s=SIMD.Float32x4.swizzle(s,2,3,0,1),D=SIMD.Float32x4.sub(D,SIMD.Float32x4.mul(i,s)),I=SIMD.Float32x4.add(SIMD.Float32x4.mul(e,s),I),SIMD.Float32x4.store(t,0,c),SIMD.Float32x4.store(t,4,D),SIMD.Float32x4.store(t,8,S),SIMD.Float32x4.store(t,12,I),t},o.adjoint=r.USE_SIMD?o.SIMD.adjoint:o.scalar.adjoint,o.determinant=function(t){var a=t[0],n=t[1],r=t[2],o=t[3],l=t[4],u=t[5],e=t[6],M=t[7],i=t[8],s=t[9],c=t[10],D=t[11],S=t[12],I=t[13],x=t[14],f=t[15],F=a*u-n*l,m=a*e-r*l,h=a*M-o*l,d=n*e-r*u,v=n*M-o*u,z=r*M-o*e,p=i*I-s*S,w=i*x-c*S,A=i*f-D*S,R=s*x-c*I,b=s*f-D*I,Y=c*f-D*x;return F*Y-m*b+h*R+d*A-v*w+z*p},o.SIMD.multiply=function(t,a,n){var r=SIMD.Float32x4.load(a,0),o=SIMD.Float32x4.load(a,4),l=SIMD.Float32x4.load(a,8),u=SIMD.Float32x4.load(a,12),e=SIMD.Float32x4.load(n,0),M=SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,0,0,0,0),r),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,1,1,1,1),o),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,2,2,2,2),l),SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,3,3,3,3),u))));SIMD.Float32x4.store(t,0,M);var i=SIMD.Float32x4.load(n,4),s=SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(i,0,0,0,0),r),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(i,1,1,1,1),o),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(i,2,2,2,2),l),SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(i,3,3,3,3),u))));SIMD.Float32x4.store(t,4,s);var c=SIMD.Float32x4.load(n,8),D=SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(c,0,0,0,0),r),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(c,1,1,1,1),o),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(c,2,2,2,2),l),SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(c,3,3,3,3),u))));SIMD.Float32x4.store(t,8,D);var S=SIMD.Float32x4.load(n,12),I=SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(S,0,0,0,0),r),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(S,1,1,1,1),o),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(S,2,2,2,2),l),SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(S,3,3,3,3),u))));return SIMD.Float32x4.store(t,12,I),t},o.scalar.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=a[9],S=a[10],I=a[11],x=a[12],f=a[13],F=a[14],m=a[15],h=n[0],d=n[1],v=n[2],z=n[3];return t[0]=h*r+d*e+v*c+z*x,t[1]=h*o+d*M+v*D+z*f,t[2]=h*l+d*i+v*S+z*F,t[3]=h*u+d*s+v*I+z*m,h=n[4],d=n[5],v=n[6],z=n[7],t[4]=h*r+d*e+v*c+z*x,t[5]=h*o+d*M+v*D+z*f,t[6]=h*l+d*i+v*S+z*F,t[7]=h*u+d*s+v*I+z*m,h=n[8],d=n[9],v=n[10],z=n[11],t[8]=h*r+d*e+v*c+z*x,t[9]=h*o+d*M+v*D+z*f,t[10]=h*l+d*i+v*S+z*F,t[11]=h*u+d*s+v*I+z*m,h=n[12],d=n[13],v=n[14],z=n[15],t[12]=h*r+d*e+v*c+z*x,t[13]=h*o+d*M+v*D+z*f,t[14]=h*l+d*i+v*S+z*F,t[15]=h*u+d*s+v*I+z*m,t},o.multiply=r.USE_SIMD?o.SIMD.multiply:o.scalar.multiply,o.mul=o.multiply,o.scalar.translate=function(t,a,n){var r,o,l,u,e,M,i,s,c,D,S,I,x=n[0],f=n[1],F=n[2];return a===t?(t[12]=a[0]*x+a[4]*f+a[8]*F+a[12],t[13]=a[1]*x+a[5]*f+a[9]*F+a[13],t[14]=a[2]*x+a[6]*f+a[10]*F+a[14],t[15]=a[3]*x+a[7]*f+a[11]*F+a[15]):(r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=a[9],S=a[10],I=a[11],t[0]=r,t[1]=o,t[2]=l,t[3]=u,t[4]=e,t[5]=M,t[6]=i,t[7]=s,t[8]=c,t[9]=D,t[10]=S,t[11]=I,t[12]=r*x+e*f+c*F+a[12],t[13]=o*x+M*f+D*F+a[13],t[14]=l*x+i*f+S*F+a[14],t[15]=u*x+s*f+I*F+a[15]),t},o.SIMD.translate=function(t,a,n){var r=SIMD.Float32x4.load(a,0),o=SIMD.Float32x4.load(a,4),l=SIMD.Float32x4.load(a,8),u=SIMD.Float32x4.load(a,12),e=SIMD.Float32x4(n[0],n[1],n[2],0);a!==t&&(t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11]),r=SIMD.Float32x4.mul(r,SIMD.Float32x4.swizzle(e,0,0,0,0)),o=SIMD.Float32x4.mul(o,SIMD.Float32x4.swizzle(e,1,1,1,1)),l=SIMD.Float32x4.mul(l,SIMD.Float32x4.swizzle(e,2,2,2,2));var M=SIMD.Float32x4.add(r,SIMD.Float32x4.add(o,SIMD.Float32x4.add(l,u)));return SIMD.Float32x4.store(t,12,M),t},o.translate=r.USE_SIMD?o.SIMD.translate:o.scalar.translate,o.scalar.scale=function(t,a,n){var r=n[0],o=n[1],l=n[2];return t[0]=a[0]*r,t[1]=a[1]*r,t[2]=a[2]*r,t[3]=a[3]*r,t[4]=a[4]*o,t[5]=a[5]*o,t[6]=a[6]*o,t[7]=a[7]*o,t[8]=a[8]*l,t[9]=a[9]*l,t[10]=a[10]*l,t[11]=a[11]*l,t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15],t},o.SIMD.scale=function(t,a,n){var r,o,l,u=SIMD.Float32x4(n[0],n[1],n[2],0);return r=SIMD.Float32x4.load(a,0),SIMD.Float32x4.store(t,0,SIMD.Float32x4.mul(r,SIMD.Float32x4.swizzle(u,0,0,0,0))),o=SIMD.Float32x4.load(a,4),SIMD.Float32x4.store(t,4,SIMD.Float32x4.mul(o,SIMD.Float32x4.swizzle(u,1,1,1,1))),l=SIMD.Float32x4.load(a,8),SIMD.Float32x4.store(t,8,SIMD.Float32x4.mul(l,SIMD.Float32x4.swizzle(u,2,2,2,2))),t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15],t},o.scale=r.USE_SIMD?o.SIMD.scale:o.scalar.scale,o.rotate=function(t,a,n,o){var l,u,e,M,i,s,c,D,S,I,x,f,F,m,h,d,v,z,p,w,A,R,b,Y,q=o[0],y=o[1],E=o[2],g=Math.sqrt(q*q+y*y+E*E);return Math.abs(g)<r.EPSILON?null:(g=1/g,q*=g,y*=g,E*=g,l=Math.sin(n),u=Math.cos(n),e=1-u,M=a[0],i=a[1],s=a[2],c=a[3],D=a[4],S=a[5],I=a[6],x=a[7],f=a[8],F=a[9],m=a[10],h=a[11],d=q*q*e+u,v=y*q*e+E*l,z=E*q*e-y*l,p=q*y*e-E*l,w=y*y*e+u,A=E*y*e+q*l,R=q*E*e+y*l,b=y*E*e-q*l,Y=E*E*e+u,t[0]=M*d+D*v+f*z,t[1]=i*d+S*v+F*z,t[2]=s*d+I*v+m*z,t[3]=c*d+x*v+h*z,t[4]=M*p+D*w+f*A,t[5]=i*p+S*w+F*A,t[6]=s*p+I*w+m*A,t[7]=c*p+x*w+h*A,t[8]=M*R+D*b+f*Y,t[9]=i*R+S*b+F*Y,t[10]=s*R+I*b+m*Y,t[11]=c*R+x*b+h*Y,a!==t&&(t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t)},o.scalar.rotateX=function(t,a,n){var r=Math.sin(n),o=Math.cos(n),l=a[4],u=a[5],e=a[6],M=a[7],i=a[8],s=a[9],c=a[10],D=a[11];return a!==t&&(t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t[4]=l*o+i*r,t[5]=u*o+s*r,t[6]=e*o+c*r,t[7]=M*o+D*r,t[8]=i*o-l*r,t[9]=s*o-u*r,t[10]=c*o-e*r,t[11]=D*o-M*r,t},o.SIMD.rotateX=function(t,a,n){var r=SIMD.Float32x4.splat(Math.sin(n)),o=SIMD.Float32x4.splat(Math.cos(n));a!==t&&(t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]);var l=SIMD.Float32x4.load(a,4),u=SIMD.Float32x4.load(a,8);return SIMD.Float32x4.store(t,4,SIMD.Float32x4.add(SIMD.Float32x4.mul(l,o),SIMD.Float32x4.mul(u,r))),SIMD.Float32x4.store(t,8,SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,o),SIMD.Float32x4.mul(l,r))),t},o.rotateX=r.USE_SIMD?o.SIMD.rotateX:o.scalar.rotateX,o.scalar.rotateY=function(t,a,n){var r=Math.sin(n),o=Math.cos(n),l=a[0],u=a[1],e=a[2],M=a[3],i=a[8],s=a[9],c=a[10],D=a[11];return a!==t&&(t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t[0]=l*o-i*r,t[1]=u*o-s*r,t[2]=e*o-c*r,t[3]=M*o-D*r,t[8]=l*r+i*o,t[9]=u*r+s*o,t[10]=e*r+c*o,t[11]=M*r+D*o,t},o.SIMD.rotateY=function(t,a,n){var r=SIMD.Float32x4.splat(Math.sin(n)),o=SIMD.Float32x4.splat(Math.cos(n));a!==t&&(t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]);var l=SIMD.Float32x4.load(a,0),u=SIMD.Float32x4.load(a,8);return SIMD.Float32x4.store(t,0,SIMD.Float32x4.sub(SIMD.Float32x4.mul(l,o),SIMD.Float32x4.mul(u,r))),SIMD.Float32x4.store(t,8,SIMD.Float32x4.add(SIMD.Float32x4.mul(l,r),SIMD.Float32x4.mul(u,o))),t},o.rotateY=r.USE_SIMD?o.SIMD.rotateY:o.scalar.rotateY,o.scalar.rotateZ=function(t,a,n){var r=Math.sin(n),o=Math.cos(n),l=a[0],u=a[1],e=a[2],M=a[3],i=a[4],s=a[5],c=a[6],D=a[7];return a!==t&&(t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t[0]=l*o+i*r,t[1]=u*o+s*r,t[2]=e*o+c*r,t[3]=M*o+D*r,t[4]=i*o-l*r,t[5]=s*o-u*r,t[6]=c*o-e*r,t[7]=D*o-M*r,t},o.SIMD.rotateZ=function(t,a,n){var r=SIMD.Float32x4.splat(Math.sin(n)),o=SIMD.Float32x4.splat(Math.cos(n));a!==t&&(t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]);var l=SIMD.Float32x4.load(a,0),u=SIMD.Float32x4.load(a,4);return SIMD.Float32x4.store(t,0,SIMD.Float32x4.add(SIMD.Float32x4.mul(l,o),SIMD.Float32x4.mul(u,r))),SIMD.Float32x4.store(t,4,SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,o),SIMD.Float32x4.mul(l,r))),t},o.rotateZ=r.USE_SIMD?o.SIMD.rotateZ:o.scalar.rotateZ,o.fromTranslation=function(t,a){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=a[0],t[13]=a[1],t[14]=a[2],t[15]=1,t},o.fromScaling=function(t,a){return t[0]=a[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=a[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.fromRotation=function(t,a,n){var o,l,u,e=n[0],M=n[1],i=n[2],s=Math.sqrt(e*e+M*M+i*i);return Math.abs(s)<r.EPSILON?null:(s=1/s,e*=s,M*=s,i*=s,o=Math.sin(a),l=Math.cos(a),u=1-l,t[0]=e*e*u+l,t[1]=M*e*u+i*o,t[2]=i*e*u-M*o,t[3]=0,t[4]=e*M*u-i*o,t[5]=M*M*u+l,t[6]=i*M*u+e*o,t[7]=0,t[8]=e*i*u+M*o,t[9]=M*i*u-e*o,t[10]=i*i*u+l,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t)},o.fromXRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=r,t[6]=n,t[7]=0,t[8]=0,t[9]=-n,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.fromYRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=0,t[2]=-n,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=n,t[9]=0,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.fromZRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=n,t[2]=0,t[3]=0,t[4]=-n,t[5]=r,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.fromRotationTranslation=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=r+r,M=o+o,i=l+l,s=r*e,c=r*M,D=r*i,S=o*M,I=o*i,x=l*i,f=u*e,F=u*M,m=u*i;return t[0]=1-(S+x),t[1]=c+m,t[2]=D-F,t[3]=0,t[4]=c-m,t[5]=1-(s+x),t[6]=I+f,t[7]=0,t[8]=D+F,t[9]=I-f,t[10]=1-(s+S),t[11]=0,t[12]=n[0],t[13]=n[1],t[14]=n[2],t[15]=1,t},o.fromRotationTranslationScale=function(t,a,n,r){var o=a[0],l=a[1],u=a[2],e=a[3],M=o+o,i=l+l,s=u+u,c=o*M,D=o*i,S=o*s,I=l*i,x=l*s,f=u*s,F=e*M,m=e*i,h=e*s,d=r[0],v=r[1],z=r[2];return t[0]=(1-(I+f))*d,t[1]=(D+h)*d,t[2]=(S-m)*d,t[3]=0,t[4]=(D-h)*v,t[5]=(1-(c+f))*v,t[6]=(x+F)*v,t[7]=0,t[8]=(S+m)*z,t[9]=(x-F)*z,t[10]=(1-(c+I))*z,t[11]=0,t[12]=n[0],t[13]=n[1],t[14]=n[2],t[15]=1,t},o.fromRotationTranslationScaleOrigin=function(t,a,n,r,o){var l=a[0],u=a[1],e=a[2],M=a[3],i=l+l,s=u+u,c=e+e,D=l*i,S=l*s,I=l*c,x=u*s,f=u*c,F=e*c,m=M*i,h=M*s,d=M*c,v=r[0],z=r[1],p=r[2],w=o[0],A=o[1],R=o[2];return t[0]=(1-(x+F))*v,t[1]=(S+d)*v,t[2]=(I-h)*v,t[3]=0,t[4]=(S-d)*z,t[5]=(1-(D+F))*z,t[6]=(f+m)*z,t[7]=0,t[8]=(I+h)*p,t[9]=(f-m)*p,t[10]=(1-(D+x))*p,t[11]=0,t[12]=n[0]+w-(t[0]*w+t[4]*A+t[8]*R),t[13]=n[1]+A-(t[1]*w+t[5]*A+t[9]*R),t[14]=n[2]+R-(t[2]*w+t[6]*A+t[10]*R),t[15]=1,t},o.fromQuat=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n+n,e=r+r,M=o+o,i=n*u,s=r*u,c=r*e,D=o*u,S=o*e,I=o*M,x=l*u,f=l*e,F=l*M;return t[0]=1-c-I,t[1]=s+F,t[2]=D-f,t[3]=0,t[4]=s-F,t[5]=1-i-I,t[6]=S+x,t[7]=0,t[8]=D+f,t[9]=S-x,t[10]=1-i-c,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.frustum=function(t,a,n,r,o,l,u){var e=1/(n-a),M=1/(o-r),i=1/(l-u);return t[0]=2*l*e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*l*M,t[6]=0,t[7]=0,t[8]=(n+a)*e,t[9]=(o+r)*M,t[10]=(u+l)*i,t[11]=-1,t[12]=0,t[13]=0,t[14]=u*l*2*i,t[15]=0,t},o.perspective=function(t,a,n,r,o){var l=1/Math.tan(a/2),u=1/(r-o);return t[0]=l/n,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(o+r)*u,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*o*r*u,t[15]=0,t},o.perspectiveFromFieldOfView=function(t,a,n,r){var o=Math.tan(a.upDegrees*Math.PI/180),l=Math.tan(a.downDegrees*Math.PI/180),u=Math.tan(a.leftDegrees*Math.PI/180),e=Math.tan(a.rightDegrees*Math.PI/180),M=2/(u+e),i=2/(o+l);return t[0]=M,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=i,t[6]=0,t[7]=0,t[8]=-((u-e)*M*.5),t[9]=(o-l)*i*.5,t[10]=r/(n-r),t[11]=-1,t[12]=0,t[13]=0,t[14]=r*n/(n-r),t[15]=0,t},o.ortho=function(t,a,n,r,o,l,u){var e=1/(a-n),M=1/(r-o),i=1/(l-u);return t[0]=-2*e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*M,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*i,t[11]=0,t[12]=(a+n)*e,t[13]=(o+r)*M,t[14]=(u+l)*i,t[15]=1,t},o.lookAt=function(t,a,n,l){var u,e,M,i,s,c,D,S,I,x,f=a[0],F=a[1],m=a[2],h=l[0],d=l[1],v=l[2],z=n[0],p=n[1],w=n[2];return Math.abs(f-z)<r.EPSILON&&Math.abs(F-p)<r.EPSILON&&Math.abs(m-w)<r.EPSILON?o.identity(t):(D=f-z,S=F-p,I=m-w,x=1/Math.sqrt(D*D+S*S+I*I),D*=x,S*=x,I*=x,u=d*I-v*S,e=v*D-h*I,M=h*S-d*D,x=Math.sqrt(u*u+e*e+M*M),x?(x=1/x,u*=x,e*=x,M*=x):(u=0,e=0,M=0),i=S*M-I*e,s=I*u-D*M,c=D*e-S*u,x=Math.sqrt(i*i+s*s+c*c),x?(x=1/x,i*=x,s*=x,c*=x):(i=0,s=0,c=0),t[0]=u,t[1]=i,t[2]=D,t[3]=0,t[4]=e,t[5]=s,t[6]=S,t[7]=0,t[8]=M,t[9]=c,t[10]=I,t[11]=0,t[12]=-(u*f+e*F+M*m),t[13]=-(i*f+s*F+c*m),t[14]=-(D*f+S*F+I*m),t[15]=1,t)},o.str=function(t){return"mat4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+", "+t[9]+", "+t[10]+", "+t[11]+", "+t[12]+", "+t[13]+", "+t[14]+", "+t[15]+")"},o.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+Math.pow(t[6],2)+Math.pow(t[7],2)+Math.pow(t[8],2)+Math.pow(t[9],2)+Math.pow(t[10],2)+Math.pow(t[11],2)+Math.pow(t[12],2)+Math.pow(t[13],2)+Math.pow(t[14],2)+Math.pow(t[15],2))},t.exports=o},function(t,a,n){var r=n(1),o=n(4),l=n(7),u=n(8),e={};e.create=function(){var t=new r.ARRAY_TYPE(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},e.rotationTo=function(){var t=l.create(),a=l.fromValues(1,0,0),n=l.fromValues(0,1,0);return function(r,o,u){var M=l.dot(o,u);return-.999999>M?(l.cross(t,a,o),l.length(t)<1e-6&&l.cross(t,n,o),l.normalize(t,t),e.setAxisAngle(r,t,Math.PI),r):M>.999999?(r[0]=0,r[1]=0,r[2]=0,r[3]=1,r):(l.cross(t,o,u),r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=1+M,e.normalize(r,r))}}(),e.setAxes=function(){var t=o.create();return function(a,n,r,o){return t[0]=r[0],t[3]=r[1],t[6]=r[2],t[1]=o[0],t[4]=o[1],t[7]=o[2],t[2]=-n[0],t[5]=-n[1],t[8]=-n[2],e.normalize(a,e.fromMat3(a,t))}}(),e.clone=u.clone,e.fromValues=u.fromValues,e.copy=u.copy,e.set=u.set,e.identity=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},e.setAxisAngle=function(t,a,n){n=.5*n;var r=Math.sin(n);return t[0]=r*a[0],t[1]=r*a[1],t[2]=r*a[2],t[3]=Math.cos(n),t},e.add=u.add,e.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=n[0],M=n[1],i=n[2],s=n[3];return t[0]=r*s+u*e+o*i-l*M,t[1]=o*s+u*M+l*e-r*i,t[2]=l*s+u*i+r*M-o*e,t[3]=u*s-r*e-o*M-l*i,t},e.mul=e.multiply,e.scale=u.scale,e.rotateX=function(t,a,n){n*=.5;var r=a[0],o=a[1],l=a[2],u=a[3],e=Math.sin(n),M=Math.cos(n);return t[0]=r*M+u*e,t[1]=o*M+l*e,t[2]=l*M-o*e,t[3]=u*M-r*e,t},e.rotateY=function(t,a,n){n*=.5;var r=a[0],o=a[1],l=a[2],u=a[3],e=Math.sin(n),M=Math.cos(n);return t[0]=r*M-l*e,t[1]=o*M+u*e,t[2]=l*M+r*e,t[3]=u*M-o*e,t},e.rotateZ=function(t,a,n){n*=.5;var r=a[0],o=a[1],l=a[2],u=a[3],e=Math.sin(n),M=Math.cos(n);return t[0]=r*M+o*e,t[1]=o*M-r*e,t[2]=l*M+u*e,t[3]=u*M-l*e,t},e.calculateW=function(t,a){var n=a[0],r=a[1],o=a[2];return t[0]=n,t[1]=r,t[2]=o,t[3]=Math.sqrt(Math.abs(1-n*n-r*r-o*o)),t},e.dot=u.dot,e.lerp=u.lerp,e.slerp=function(t,a,n,r){var o,l,u,e,M,i=a[0],s=a[1],c=a[2],D=a[3],S=n[0],I=n[1],x=n[2],f=n[3];return l=i*S+s*I+c*x+D*f,0>l&&(l=-l,S=-S,I=-I,x=-x,f=-f),1-l>1e-6?(o=Math.acos(l),u=Math.sin(o),e=Math.sin((1-r)*o)/u,M=Math.sin(r*o)/u):(e=1-r,M=r),t[0]=e*i+M*S,t[1]=e*s+M*I,t[2]=e*c+M*x,t[3]=e*D+M*f,t},e.sqlerp=function(){var t=e.create(),a=e.create();return function(n,r,o,l,u,M){return e.slerp(t,r,u,M),e.slerp(a,o,l,M),e.slerp(n,t,a,2*M*(1-M)),n}}(),e.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n*n+r*r+o*o+l*l,e=u?1/u:0;
+return t[0]=-n*e,t[1]=-r*e,t[2]=-o*e,t[3]=l*e,t},e.conjugate=function(t,a){return t[0]=-a[0],t[1]=-a[1],t[2]=-a[2],t[3]=a[3],t},e.length=u.length,e.len=e.length,e.squaredLength=u.squaredLength,e.sqrLen=e.squaredLength,e.normalize=u.normalize,e.fromMat3=function(t,a){var n,r=a[0]+a[4]+a[8];if(r>0)n=Math.sqrt(r+1),t[3]=.5*n,n=.5/n,t[0]=(a[5]-a[7])*n,t[1]=(a[6]-a[2])*n,t[2]=(a[1]-a[3])*n;else{var o=0;a[4]>a[0]&&(o=1),a[8]>a[3*o+o]&&(o=2);var l=(o+1)%3,u=(o+2)%3;n=Math.sqrt(a[3*o+o]-a[3*l+l]-a[3*u+u]+1),t[o]=.5*n,n=.5/n,t[3]=(a[3*l+u]-a[3*u+l])*n,t[l]=(a[3*l+o]+a[3*o+l])*n,t[u]=(a[3*u+o]+a[3*o+u])*n}return t},e.str=function(t){return"quat("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t.exports=e},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(3);return t[0]=0,t[1]=0,t[2]=0,t},o.clone=function(t){var a=new r.ARRAY_TYPE(3);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a},o.fromValues=function(t,a,n){var o=new r.ARRAY_TYPE(3);return o[0]=t,o[1]=a,o[2]=n,o},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t},o.set=function(t,a,n,r){return t[0]=a,t[1]=n,t[2]=r,t},o.add=function(t,a,n){return t[0]=a[0]+n[0],t[1]=a[1]+n[1],t[2]=a[2]+n[2],t},o.subtract=function(t,a,n){return t[0]=a[0]-n[0],t[1]=a[1]-n[1],t[2]=a[2]-n[2],t},o.sub=o.subtract,o.multiply=function(t,a,n){return t[0]=a[0]*n[0],t[1]=a[1]*n[1],t[2]=a[2]*n[2],t},o.mul=o.multiply,o.divide=function(t,a,n){return t[0]=a[0]/n[0],t[1]=a[1]/n[1],t[2]=a[2]/n[2],t},o.div=o.divide,o.min=function(t,a,n){return t[0]=Math.min(a[0],n[0]),t[1]=Math.min(a[1],n[1]),t[2]=Math.min(a[2],n[2]),t},o.max=function(t,a,n){return t[0]=Math.max(a[0],n[0]),t[1]=Math.max(a[1],n[1]),t[2]=Math.max(a[2],n[2]),t},o.scale=function(t,a,n){return t[0]=a[0]*n,t[1]=a[1]*n,t[2]=a[2]*n,t},o.scaleAndAdd=function(t,a,n,r){return t[0]=a[0]+n[0]*r,t[1]=a[1]+n[1]*r,t[2]=a[2]+n[2]*r,t},o.distance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1],o=a[2]-t[2];return Math.sqrt(n*n+r*r+o*o)},o.dist=o.distance,o.squaredDistance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1],o=a[2]-t[2];return n*n+r*r+o*o},o.sqrDist=o.squaredDistance,o.length=function(t){var a=t[0],n=t[1],r=t[2];return Math.sqrt(a*a+n*n+r*r)},o.len=o.length,o.squaredLength=function(t){var a=t[0],n=t[1],r=t[2];return a*a+n*n+r*r},o.sqrLen=o.squaredLength,o.negate=function(t,a){return t[0]=-a[0],t[1]=-a[1],t[2]=-a[2],t},o.inverse=function(t,a){return t[0]=1/a[0],t[1]=1/a[1],t[2]=1/a[2],t},o.normalize=function(t,a){var n=a[0],r=a[1],o=a[2],l=n*n+r*r+o*o;return l>0&&(l=1/Math.sqrt(l),t[0]=a[0]*l,t[1]=a[1]*l,t[2]=a[2]*l),t},o.dot=function(t,a){return t[0]*a[0]+t[1]*a[1]+t[2]*a[2]},o.cross=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=n[0],e=n[1],M=n[2];return t[0]=o*M-l*e,t[1]=l*u-r*M,t[2]=r*e-o*u,t},o.lerp=function(t,a,n,r){var o=a[0],l=a[1],u=a[2];return t[0]=o+r*(n[0]-o),t[1]=l+r*(n[1]-l),t[2]=u+r*(n[2]-u),t},o.hermite=function(t,a,n,r,o,l){var u=l*l,e=u*(2*l-3)+1,M=u*(l-2)+l,i=u*(l-1),s=u*(3-2*l);return t[0]=a[0]*e+n[0]*M+r[0]*i+o[0]*s,t[1]=a[1]*e+n[1]*M+r[1]*i+o[1]*s,t[2]=a[2]*e+n[2]*M+r[2]*i+o[2]*s,t},o.bezier=function(t,a,n,r,o,l){var u=1-l,e=u*u,M=l*l,i=e*u,s=3*l*e,c=3*M*u,D=M*l;return t[0]=a[0]*i+n[0]*s+r[0]*c+o[0]*D,t[1]=a[1]*i+n[1]*s+r[1]*c+o[1]*D,t[2]=a[2]*i+n[2]*s+r[2]*c+o[2]*D,t},o.random=function(t,a){a=a||1;var n=2*r.RANDOM()*Math.PI,o=2*r.RANDOM()-1,l=Math.sqrt(1-o*o)*a;return t[0]=Math.cos(n)*l,t[1]=Math.sin(n)*l,t[2]=o*a,t},o.transformMat4=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=n[3]*r+n[7]*o+n[11]*l+n[15];return u=u||1,t[0]=(n[0]*r+n[4]*o+n[8]*l+n[12])/u,t[1]=(n[1]*r+n[5]*o+n[9]*l+n[13])/u,t[2]=(n[2]*r+n[6]*o+n[10]*l+n[14])/u,t},o.transformMat3=function(t,a,n){var r=a[0],o=a[1],l=a[2];return t[0]=r*n[0]+o*n[3]+l*n[6],t[1]=r*n[1]+o*n[4]+l*n[7],t[2]=r*n[2]+o*n[5]+l*n[8],t},o.transformQuat=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=n[0],e=n[1],M=n[2],i=n[3],s=i*r+e*l-M*o,c=i*o+M*r-u*l,D=i*l+u*o-e*r,S=-u*r-e*o-M*l;return t[0]=s*i+S*-u+c*-M-D*-e,t[1]=c*i+S*-e+D*-u-s*-M,t[2]=D*i+S*-M+s*-e-c*-u,t},o.rotateX=function(t,a,n,r){var o=[],l=[];return o[0]=a[0]-n[0],o[1]=a[1]-n[1],o[2]=a[2]-n[2],l[0]=o[0],l[1]=o[1]*Math.cos(r)-o[2]*Math.sin(r),l[2]=o[1]*Math.sin(r)+o[2]*Math.cos(r),t[0]=l[0]+n[0],t[1]=l[1]+n[1],t[2]=l[2]+n[2],t},o.rotateY=function(t,a,n,r){var o=[],l=[];return o[0]=a[0]-n[0],o[1]=a[1]-n[1],o[2]=a[2]-n[2],l[0]=o[2]*Math.sin(r)+o[0]*Math.cos(r),l[1]=o[1],l[2]=o[2]*Math.cos(r)-o[0]*Math.sin(r),t[0]=l[0]+n[0],t[1]=l[1]+n[1],t[2]=l[2]+n[2],t},o.rotateZ=function(t,a,n,r){var o=[],l=[];return o[0]=a[0]-n[0],o[1]=a[1]-n[1],o[2]=a[2]-n[2],l[0]=o[0]*Math.cos(r)-o[1]*Math.sin(r),l[1]=o[0]*Math.sin(r)+o[1]*Math.cos(r),l[2]=o[2],t[0]=l[0]+n[0],t[1]=l[1]+n[1],t[2]=l[2]+n[2],t},o.forEach=function(){var t=o.create();return function(a,n,r,o,l,u){var e,M;for(n||(n=3),r||(r=0),M=o?Math.min(o*n+r,a.length):a.length,e=r;M>e;e+=n)t[0]=a[e],t[1]=a[e+1],t[2]=a[e+2],l(t,t,u),a[e]=t[0],a[e+1]=t[1],a[e+2]=t[2];return a}}(),o.angle=function(t,a){var n=o.fromValues(t[0],t[1],t[2]),r=o.fromValues(a[0],a[1],a[2]);o.normalize(n,n),o.normalize(r,r);var l=o.dot(n,r);return l>1?0:Math.acos(l)},o.str=function(t){return"vec3("+t[0]+", "+t[1]+", "+t[2]+")"},t.exports=o},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t},o.clone=function(t){var a=new r.ARRAY_TYPE(4);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a},o.fromValues=function(t,a,n,o){var l=new r.ARRAY_TYPE(4);return l[0]=t,l[1]=a,l[2]=n,l[3]=o,l},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t},o.set=function(t,a,n,r,o){return t[0]=a,t[1]=n,t[2]=r,t[3]=o,t},o.add=function(t,a,n){return t[0]=a[0]+n[0],t[1]=a[1]+n[1],t[2]=a[2]+n[2],t[3]=a[3]+n[3],t},o.subtract=function(t,a,n){return t[0]=a[0]-n[0],t[1]=a[1]-n[1],t[2]=a[2]-n[2],t[3]=a[3]-n[3],t},o.sub=o.subtract,o.multiply=function(t,a,n){return t[0]=a[0]*n[0],t[1]=a[1]*n[1],t[2]=a[2]*n[2],t[3]=a[3]*n[3],t},o.mul=o.multiply,o.divide=function(t,a,n){return t[0]=a[0]/n[0],t[1]=a[1]/n[1],t[2]=a[2]/n[2],t[3]=a[3]/n[3],t},o.div=o.divide,o.min=function(t,a,n){return t[0]=Math.min(a[0],n[0]),t[1]=Math.min(a[1],n[1]),t[2]=Math.min(a[2],n[2]),t[3]=Math.min(a[3],n[3]),t},o.max=function(t,a,n){return t[0]=Math.max(a[0],n[0]),t[1]=Math.max(a[1],n[1]),t[2]=Math.max(a[2],n[2]),t[3]=Math.max(a[3],n[3]),t},o.scale=function(t,a,n){return t[0]=a[0]*n,t[1]=a[1]*n,t[2]=a[2]*n,t[3]=a[3]*n,t},o.scaleAndAdd=function(t,a,n,r){return t[0]=a[0]+n[0]*r,t[1]=a[1]+n[1]*r,t[2]=a[2]+n[2]*r,t[3]=a[3]+n[3]*r,t},o.distance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1],o=a[2]-t[2],l=a[3]-t[3];return Math.sqrt(n*n+r*r+o*o+l*l)},o.dist=o.distance,o.squaredDistance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1],o=a[2]-t[2],l=a[3]-t[3];return n*n+r*r+o*o+l*l},o.sqrDist=o.squaredDistance,o.length=function(t){var a=t[0],n=t[1],r=t[2],o=t[3];return Math.sqrt(a*a+n*n+r*r+o*o)},o.len=o.length,o.squaredLength=function(t){var a=t[0],n=t[1],r=t[2],o=t[3];return a*a+n*n+r*r+o*o},o.sqrLen=o.squaredLength,o.negate=function(t,a){return t[0]=-a[0],t[1]=-a[1],t[2]=-a[2],t[3]=-a[3],t},o.inverse=function(t,a){return t[0]=1/a[0],t[1]=1/a[1],t[2]=1/a[2],t[3]=1/a[3],t},o.normalize=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n*n+r*r+o*o+l*l;return u>0&&(u=1/Math.sqrt(u),t[0]=n*u,t[1]=r*u,t[2]=o*u,t[3]=l*u),t},o.dot=function(t,a){return t[0]*a[0]+t[1]*a[1]+t[2]*a[2]+t[3]*a[3]},o.lerp=function(t,a,n,r){var o=a[0],l=a[1],u=a[2],e=a[3];return t[0]=o+r*(n[0]-o),t[1]=l+r*(n[1]-l),t[2]=u+r*(n[2]-u),t[3]=e+r*(n[3]-e),t},o.random=function(t,a){return a=a||1,t[0]=r.RANDOM(),t[1]=r.RANDOM(),t[2]=r.RANDOM(),t[3]=r.RANDOM(),o.normalize(t,t),o.scale(t,t,a),t},o.transformMat4=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3];return t[0]=n[0]*r+n[4]*o+n[8]*l+n[12]*u,t[1]=n[1]*r+n[5]*o+n[9]*l+n[13]*u,t[2]=n[2]*r+n[6]*o+n[10]*l+n[14]*u,t[3]=n[3]*r+n[7]*o+n[11]*l+n[15]*u,t},o.transformQuat=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=n[0],e=n[1],M=n[2],i=n[3],s=i*r+e*l-M*o,c=i*o+M*r-u*l,D=i*l+u*o-e*r,S=-u*r-e*o-M*l;return t[0]=s*i+S*-u+c*-M-D*-e,t[1]=c*i+S*-e+D*-u-s*-M,t[2]=D*i+S*-M+s*-e-c*-u,t[3]=a[3],t},o.forEach=function(){var t=o.create();return function(a,n,r,o,l,u){var e,M;for(n||(n=4),r||(r=0),M=o?Math.min(o*n+r,a.length):a.length,e=r;M>e;e+=n)t[0]=a[e],t[1]=a[e+1],t[2]=a[e+2],t[3]=a[e+3],l(t,t,u),a[e]=t[0],a[e+1]=t[1],a[e+2]=t[2],a[e+3]=t[3];return a}}(),o.str=function(t){return"vec4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t.exports=o},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(2);return t[0]=0,t[1]=0,t},o.clone=function(t){var a=new r.ARRAY_TYPE(2);return a[0]=t[0],a[1]=t[1],a},o.fromValues=function(t,a){var n=new r.ARRAY_TYPE(2);return n[0]=t,n[1]=a,n},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t},o.set=function(t,a,n){return t[0]=a,t[1]=n,t},o.add=function(t,a,n){return t[0]=a[0]+n[0],t[1]=a[1]+n[1],t},o.subtract=function(t,a,n){return t[0]=a[0]-n[0],t[1]=a[1]-n[1],t},o.sub=o.subtract,o.multiply=function(t,a,n){return t[0]=a[0]*n[0],t[1]=a[1]*n[1],t},o.mul=o.multiply,o.divide=function(t,a,n){return t[0]=a[0]/n[0],t[1]=a[1]/n[1],t},o.div=o.divide,o.min=function(t,a,n){return t[0]=Math.min(a[0],n[0]),t[1]=Math.min(a[1],n[1]),t},o.max=function(t,a,n){return t[0]=Math.max(a[0],n[0]),t[1]=Math.max(a[1],n[1]),t},o.scale=function(t,a,n){return t[0]=a[0]*n,t[1]=a[1]*n,t},o.scaleAndAdd=function(t,a,n,r){return t[0]=a[0]+n[0]*r,t[1]=a[1]+n[1]*r,t},o.distance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1];return Math.sqrt(n*n+r*r)},o.dist=o.distance,o.squaredDistance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1];return n*n+r*r},o.sqrDist=o.squaredDistance,o.length=function(t){var a=t[0],n=t[1];return Math.sqrt(a*a+n*n)},o.len=o.length,o.squaredLength=function(t){var a=t[0],n=t[1];return a*a+n*n},o.sqrLen=o.squaredLength,o.negate=function(t,a){return t[0]=-a[0],t[1]=-a[1],t},o.inverse=function(t,a){return t[0]=1/a[0],t[1]=1/a[1],t},o.normalize=function(t,a){var n=a[0],r=a[1],o=n*n+r*r;return o>0&&(o=1/Math.sqrt(o),t[0]=a[0]*o,t[1]=a[1]*o),t},o.dot=function(t,a){return t[0]*a[0]+t[1]*a[1]},o.cross=function(t,a,n){var r=a[0]*n[1]-a[1]*n[0];return t[0]=t[1]=0,t[2]=r,t},o.lerp=function(t,a,n,r){var o=a[0],l=a[1];return t[0]=o+r*(n[0]-o),t[1]=l+r*(n[1]-l),t},o.random=function(t,a){a=a||1;var n=2*r.RANDOM()*Math.PI;return t[0]=Math.cos(n)*a,t[1]=Math.sin(n)*a,t},o.transformMat2=function(t,a,n){var r=a[0],o=a[1];return t[0]=n[0]*r+n[2]*o,t[1]=n[1]*r+n[3]*o,t},o.transformMat2d=function(t,a,n){var r=a[0],o=a[1];return t[0]=n[0]*r+n[2]*o+n[4],t[1]=n[1]*r+n[3]*o+n[5],t},o.transformMat3=function(t,a,n){var r=a[0],o=a[1];return t[0]=n[0]*r+n[3]*o+n[6],t[1]=n[1]*r+n[4]*o+n[7],t},o.transformMat4=function(t,a,n){var r=a[0],o=a[1];return t[0]=n[0]*r+n[4]*o+n[12],t[1]=n[1]*r+n[5]*o+n[13],t},o.forEach=function(){var t=o.create();return function(a,n,r,o,l,u){var e,M;for(n||(n=2),r||(r=0),M=o?Math.min(o*n+r,a.length):a.length,e=r;M>e;e+=n)t[0]=a[e],t[1]=a[e+1],l(t,t,u),a[e]=t[0],a[e+1]=t[1];return a}}(),o.str=function(t){return"vec2("+t[0]+", "+t[1]+")"},t.exports=o}])});
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/hammer.min.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/hammer.min.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/hammer.min.js	(revision 27955)
@@ -0,0 +1,6 @@
+/*! Hammer.JS - v2.0.4 - 2014-09-28
+ * http://hammerjs.github.io/
+ *
+ * Copyright (c) 2014 Jorik Tangelder;
+ * Licensed under the MIT license */
+!function(a,b,c,d){"use strict";function e(a,b,c){return setTimeout(k(a,c),b)}function f(a,b,c){return Array.isArray(a)?(g(a,c[b],c),!0):!1}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e<a.length;)b.call(c,a[e],e,a),e++;else for(e in a)a.hasOwnProperty(e)&&b.call(c,a[e],e,a)}function h(a,b,c){for(var e=Object.keys(b),f=0;f<e.length;)(!c||c&&a[e[f]]===d)&&(a[e[f]]=b[e[f]]),f++;return a}function i(a,b){return h(a,b,!0)}function j(a,b,c){var d,e=b.prototype;d=a.prototype=Object.create(e),d.constructor=a,d._super=e,c&&h(d,c)}function k(a,b){return function(){return a.apply(b,arguments)}}function l(a,b){return typeof a==kb?a.apply(b?b[0]||d:d,b):a}function m(a,b){return a===d?b:a}function n(a,b,c){g(r(b),function(b){a.addEventListener(b,c,!1)})}function o(a,b,c){g(r(b),function(b){a.removeEventListener(b,c,!1)})}function p(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function q(a,b){return a.indexOf(b)>-1}function r(a){return a.trim().split(/\s+/g)}function s(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;d<a.length;){if(c&&a[d][c]==b||!c&&a[d]===b)return d;d++}return-1}function t(a){return Array.prototype.slice.call(a,0)}function u(a,b,c){for(var d=[],e=[],f=0;f<a.length;){var g=b?a[f][b]:a[f];s(e,g)<0&&d.push(a[f]),e[f]=g,f++}return c&&(d=b?d.sort(function(a,c){return a[b]>c[b]}):d.sort()),d}function v(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g<ib.length;){if(c=ib[g],e=c?c+f:b,e in a)return e;g++}return d}function w(){return ob++}function x(a){var b=a.ownerDocument;return b.defaultView||b.parentWindow}function y(a,b){var c=this;this.manager=a,this.callback=b,this.element=a.element,this.target=a.options.inputTarget,this.domHandler=function(b){l(a.options.enable,[a])&&c.handler(b)},this.init()}function z(a){var b,c=a.options.inputClass;return new(b=c?c:rb?N:sb?Q:qb?S:M)(a,A)}function A(a,b,c){var d=c.pointers.length,e=c.changedPointers.length,f=b&yb&&d-e===0,g=b&(Ab|Bb)&&d-e===0;c.isFirst=!!f,c.isFinal=!!g,f&&(a.session={}),c.eventType=b,B(a,c),a.emit("hammer.input",c),a.recognize(c),a.session.prevInput=c}function B(a,b){var c=a.session,d=b.pointers,e=d.length;c.firstInput||(c.firstInput=E(b)),e>1&&!c.firstMultiple?c.firstMultiple=E(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=F(d);b.timeStamp=nb(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=J(h,i),b.distance=I(h,i),C(c,b),b.offsetDirection=H(b.deltaX,b.deltaY),b.scale=g?L(g.pointers,d):1,b.rotation=g?K(g.pointers,d):0,D(c,b);var j=a.element;p(b.srcEvent.target,j)&&(j=b.srcEvent.target),b.target=j}function C(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===yb||f.eventType===Ab)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function D(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Bb&&(i>xb||h.velocity===d)){var j=h.deltaX-b.deltaX,k=h.deltaY-b.deltaY,l=G(i,j,k);e=l.x,f=l.y,c=mb(l.x)>mb(l.y)?l.x:l.y,g=H(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function E(a){for(var b=[],c=0;c<a.pointers.length;)b[c]={clientX:lb(a.pointers[c].clientX),clientY:lb(a.pointers[c].clientY)},c++;return{timeStamp:nb(),pointers:b,center:F(b),deltaX:a.deltaX,deltaY:a.deltaY}}function F(a){var b=a.length;if(1===b)return{x:lb(a[0].clientX),y:lb(a[0].clientY)};for(var c=0,d=0,e=0;b>e;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:lb(c/b),y:lb(d/b)}}function G(a,b,c){return{x:b/a||0,y:c/a||0}}function H(a,b){return a===b?Cb:mb(a)>=mb(b)?a>0?Db:Eb:b>0?Fb:Gb}function I(a,b,c){c||(c=Kb);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function J(a,b,c){c||(c=Kb);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function K(a,b){return J(b[1],b[0],Lb)-J(a[1],a[0],Lb)}function L(a,b){return I(b[0],b[1],Lb)/I(a[0],a[1],Lb)}function M(){this.evEl=Nb,this.evWin=Ob,this.allow=!0,this.pressed=!1,y.apply(this,arguments)}function N(){this.evEl=Rb,this.evWin=Sb,y.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function O(){this.evTarget=Ub,this.evWin=Vb,this.started=!1,y.apply(this,arguments)}function P(a,b){var c=t(a.touches),d=t(a.changedTouches);return b&(Ab|Bb)&&(c=u(c.concat(d),"identifier",!0)),[c,d]}function Q(){this.evTarget=Xb,this.targetIds={},y.apply(this,arguments)}function R(a,b){var c=t(a.touches),d=this.targetIds;if(b&(yb|zb)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=t(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return p(a.target,i)}),b===yb)for(e=0;e<f.length;)d[f[e].identifier]=!0,e++;for(e=0;e<g.length;)d[g[e].identifier]&&h.push(g[e]),b&(Ab|Bb)&&delete d[g[e].identifier],e++;return h.length?[u(f.concat(h),"identifier",!0),h]:void 0}function S(){y.apply(this,arguments);var a=k(this.handler,this);this.touch=new Q(this.manager,a),this.mouse=new M(this.manager,a)}function T(a,b){this.manager=a,this.set(b)}function U(a){if(q(a,bc))return bc;var b=q(a,cc),c=q(a,dc);return b&&c?cc+" "+dc:b||c?b?cc:dc:q(a,ac)?ac:_b}function V(a){this.id=w(),this.manager=null,this.options=i(a||{},this.defaults),this.options.enable=m(this.options.enable,!0),this.state=ec,this.simultaneous={},this.requireFail=[]}function W(a){return a&jc?"cancel":a&hc?"end":a&gc?"move":a&fc?"start":""}function X(a){return a==Gb?"down":a==Fb?"up":a==Db?"left":a==Eb?"right":""}function Y(a,b){var c=b.manager;return c?c.get(a):a}function Z(){V.apply(this,arguments)}function $(){Z.apply(this,arguments),this.pX=null,this.pY=null}function _(){Z.apply(this,arguments)}function ab(){V.apply(this,arguments),this._timer=null,this._input=null}function bb(){Z.apply(this,arguments)}function cb(){Z.apply(this,arguments)}function db(){V.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function eb(a,b){return b=b||{},b.recognizers=m(b.recognizers,eb.defaults.preset),new fb(a,b)}function fb(a,b){b=b||{},this.options=i(b,eb.defaults),this.options.inputTarget=this.options.inputTarget||a,this.handlers={},this.session={},this.recognizers=[],this.element=a,this.input=z(this),this.touchAction=new T(this,this.options.touchAction),gb(this,!0),g(b.recognizers,function(a){var b=this.add(new a[0](a[1]));a[2]&&b.recognizeWith(a[2]),a[3]&&b.requireFailure(a[3])},this)}function gb(a,b){var c=a.element;g(a.options.cssProps,function(a,d){c.style[v(c.style,d)]=b?a:""})}function hb(a,c){var d=b.createEvent("Event");d.initEvent(a,!0,!0),d.gesture=c,c.target.dispatchEvent(d)}var ib=["","webkit","moz","MS","ms","o"],jb=b.createElement("div"),kb="function",lb=Math.round,mb=Math.abs,nb=Date.now,ob=1,pb=/mobile|tablet|ip(ad|hone|od)|android/i,qb="ontouchstart"in a,rb=v(a,"PointerEvent")!==d,sb=qb&&pb.test(navigator.userAgent),tb="touch",ub="pen",vb="mouse",wb="kinect",xb=25,yb=1,zb=2,Ab=4,Bb=8,Cb=1,Db=2,Eb=4,Fb=8,Gb=16,Hb=Db|Eb,Ib=Fb|Gb,Jb=Hb|Ib,Kb=["x","y"],Lb=["clientX","clientY"];y.prototype={handler:function(){},init:function(){this.evEl&&n(this.element,this.evEl,this.domHandler),this.evTarget&&n(this.target,this.evTarget,this.domHandler),this.evWin&&n(x(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&o(this.element,this.evEl,this.domHandler),this.evTarget&&o(this.target,this.evTarget,this.domHandler),this.evWin&&o(x(this.element),this.evWin,this.domHandler)}};var Mb={mousedown:yb,mousemove:zb,mouseup:Ab},Nb="mousedown",Ob="mousemove mouseup";j(M,y,{handler:function(a){var b=Mb[a.type];b&yb&&0===a.button&&(this.pressed=!0),b&zb&&1!==a.which&&(b=Ab),this.pressed&&this.allow&&(b&Ab&&(this.pressed=!1),this.callback(this.manager,b,{pointers:[a],changedPointers:[a],pointerType:vb,srcEvent:a}))}});var Pb={pointerdown:yb,pointermove:zb,pointerup:Ab,pointercancel:Bb,pointerout:Bb},Qb={2:tb,3:ub,4:vb,5:wb},Rb="pointerdown",Sb="pointermove pointerup pointercancel";a.MSPointerEvent&&(Rb="MSPointerDown",Sb="MSPointerMove MSPointerUp MSPointerCancel"),j(N,y,{handler:function(a){var b=this.store,c=!1,d=a.type.toLowerCase().replace("ms",""),e=Pb[d],f=Qb[a.pointerType]||a.pointerType,g=f==tb,h=s(b,a.pointerId,"pointerId");e&yb&&(0===a.button||g)?0>h&&(b.push(a),h=b.length-1):e&(Ab|Bb)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Tb={touchstart:yb,touchmove:zb,touchend:Ab,touchcancel:Bb},Ub="touchstart",Vb="touchstart touchmove touchend touchcancel";j(O,y,{handler:function(a){var b=Tb[a.type];if(b===yb&&(this.started=!0),this.started){var c=P.call(this,a,b);b&(Ab|Bb)&&c[0].length-c[1].length===0&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:tb,srcEvent:a})}}});var Wb={touchstart:yb,touchmove:zb,touchend:Ab,touchcancel:Bb},Xb="touchstart touchmove touchend touchcancel";j(Q,y,{handler:function(a){var b=Wb[a.type],c=R.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:tb,srcEvent:a})}}),j(S,y,{handler:function(a,b,c){var d=c.pointerType==tb,e=c.pointerType==vb;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Ab|Bb)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Yb=v(jb.style,"touchAction"),Zb=Yb!==d,$b="compute",_b="auto",ac="manipulation",bc="none",cc="pan-x",dc="pan-y";T.prototype={set:function(a){a==$b&&(a=this.compute()),Zb&&(this.manager.element.style[Yb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){l(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),U(a.join(" "))},preventDefaults:function(a){if(!Zb){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=q(d,bc),f=q(d,dc),g=q(d,cc);return e||f&&c&Hb||g&&c&Ib?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var ec=1,fc=2,gc=4,hc=8,ic=hc,jc=16,kc=32;V.prototype={defaults:{},set:function(a){return h(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(f(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=Y(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=Y(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,"requireFailure",this))return this;var b=this.requireFail;return a=Y(a,this),-1===s(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this))return this;a=Y(a,this);var b=s(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(c.options.event+(b?W(d):""),a)}var c=this,d=this.state;hc>d&&b(!0),b(),d>=hc&&b(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=kc)},canEmit:function(){for(var a=0;a<this.requireFail.length;){if(!(this.requireFail[a].state&(kc|ec)))return!1;a++}return!0},recognize:function(a){var b=h({},a);return l(this.options.enable,[this,b])?(this.state&(ic|jc|kc)&&(this.state=ec),this.state=this.process(b),void(this.state&(fc|gc|hc|jc)&&this.tryEmit(b))):(this.reset(),void(this.state=kc))},process:function(){},getTouchAction:function(){},reset:function(){}},j(Z,V,{defaults:{pointers:1},attrTest:function(a){var b=this.options.pointers;return 0===b||a.pointers.length===b},process:function(a){var b=this.state,c=a.eventType,d=b&(fc|gc),e=this.attrTest(a);return d&&(c&Bb||!e)?b|jc:d||e?c&Ab?b|hc:b&fc?b|gc:fc:kc}}),j($,Z,{defaults:{event:"pan",threshold:10,pointers:1,direction:Jb},getTouchAction:function(){var a=this.options.direction,b=[];return a&Hb&&b.push(dc),a&Ib&&b.push(cc),b},directionTest:function(a){var b=this.options,c=!0,d=a.distance,e=a.direction,f=a.deltaX,g=a.deltaY;return e&b.direction||(b.direction&Hb?(e=0===f?Cb:0>f?Db:Eb,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Cb:0>g?Fb:Gb,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return Z.prototype.attrTest.call(this,a)&&(this.state&fc||!(this.state&fc)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),j(_,Z,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[bc]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&fc)},emit:function(a){if(this._super.emit.call(this,a),1!==a.scale){var b=a.scale<1?"in":"out";this.manager.emit(this.options.event+b,a)}}}),j(ab,V,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[_b]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime>b.time;if(this._input=a,!d||!c||a.eventType&(Ab|Bb)&&!f)this.reset();else if(a.eventType&yb)this.reset(),this._timer=e(function(){this.state=ic,this.tryEmit()},b.time,this);else if(a.eventType&Ab)return ic;return kc},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===ic&&(a&&a.eventType&Ab?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=nb(),this.manager.emit(this.options.event,this._input)))}}),j(bb,Z,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[bc]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&fc)}}),j(cb,Z,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:Hb|Ib,pointers:1},getTouchAction:function(){return $.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Hb|Ib)?b=a.velocity:c&Hb?b=a.velocityX:c&Ib&&(b=a.velocityY),this._super.attrTest.call(this,a)&&c&a.direction&&a.distance>this.options.threshold&&mb(b)>this.options.velocity&&a.eventType&Ab},emit:function(a){var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),j(db,V,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[ac]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime<b.time;if(this.reset(),a.eventType&yb&&0===this.count)return this.failTimeout();if(d&&f&&c){if(a.eventType!=Ab)return this.failTimeout();var g=this.pTime?a.timeStamp-this.pTime<b.interval:!0,h=!this.pCenter||I(this.pCenter,a.center)<b.posThreshold;this.pTime=a.timeStamp,this.pCenter=a.center,h&&g?this.count+=1:this.count=1,this._input=a;var i=this.count%b.taps;if(0===i)return this.hasRequireFailures()?(this._timer=e(function(){this.state=ic,this.tryEmit()},b.interval,this),fc):ic}return kc},failTimeout:function(){return this._timer=e(function(){this.state=kc},this.options.interval,this),kc},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==ic&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),eb.VERSION="2.0.4",eb.defaults={domEvents:!1,touchAction:$b,enable:!0,inputTarget:null,inputClass:null,preset:[[bb,{enable:!1}],[_,{enable:!1},["rotate"]],[cb,{direction:Hb}],[$,{direction:Hb},["swipe"]],[db],[db,{event:"doubletap",taps:2},["tap"]],[ab]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var lc=1,mc=2;fb.prototype={set:function(a){return h(this.options,a),a.touchAction&&this.touchAction.update(),a.inputTarget&&(this.input.destroy(),this.input.target=a.inputTarget,this.input.init()),this},stop:function(a){this.session.stopped=a?mc:lc},recognize:function(a){var b=this.session;if(!b.stopped){this.touchAction.preventDefaults(a);var c,d=this.recognizers,e=b.curRecognizer;(!e||e&&e.state&ic)&&(e=b.curRecognizer=null);for(var f=0;f<d.length;)c=d[f],b.stopped===mc||e&&c!=e&&!c.canRecognizeWith(e)?c.reset():c.recognize(a),!e&&c.state&(fc|gc|hc)&&(e=b.curRecognizer=c),f++}},get:function(a){if(a instanceof V)return a;for(var b=this.recognizers,c=0;c<b.length;c++)if(b[c].options.event==a)return b[c];return null},add:function(a){if(f(a,"add",this))return this;var b=this.get(a.options.event);return b&&this.remove(b),this.recognizers.push(a),a.manager=this,this.touchAction.update(),a},remove:function(a){if(f(a,"remove",this))return this;var b=this.recognizers;return a=this.get(a),b.splice(s(b,a),1),this.touchAction.update(),this},on:function(a,b){var c=this.handlers;return g(r(a),function(a){c[a]=c[a]||[],c[a].push(b)}),this},off:function(a,b){var c=this.handlers;return g(r(a),function(a){b?c[a].splice(s(c[a],b),1):delete c[a]}),this},emit:function(a,b){this.options.domEvents&&hb(a,b);var c=this.handlers[a]&&this.handlers[a].slice();if(c&&c.length){b.type=a,b.preventDefault=function(){b.srcEvent.preventDefault()};for(var d=0;d<c.length;)c[d](b),d++}},destroy:function(){this.element&&gb(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},h(eb,{INPUT_START:yb,INPUT_MOVE:zb,INPUT_END:Ab,INPUT_CANCEL:Bb,STATE_POSSIBLE:ec,STATE_BEGAN:fc,STATE_CHANGED:gc,STATE_ENDED:hc,STATE_RECOGNIZED:ic,STATE_CANCELLED:jc,STATE_FAILED:kc,DIRECTION_NONE:Cb,DIRECTION_LEFT:Db,DIRECTION_RIGHT:Eb,DIRECTION_UP:Fb,DIRECTION_DOWN:Gb,DIRECTION_HORIZONTAL:Hb,DIRECTION_VERTICAL:Ib,DIRECTION_ALL:Jb,Manager:fb,Input:y,TouchAction:T,TouchInput:Q,MouseInput:M,PointerEventInput:N,TouchMouseInput:S,SingleTouchInput:O,Recognizer:V,AttrRecognizer:Z,Tap:db,Pan:$,Swipe:cb,Pinch:_,Rotate:bb,Press:ab,on:n,off:o,each:g,merge:i,extend:h,inherit:j,bindFn:k,prefixed:v}),typeof define==kb&&define.amd?define(function(){return eb}):"undefined"!=typeof module&&module.exports?module.exports=eb:a[c]=eb}(window,document,"Hammer");
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/jquery.min.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/jquery.min.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/jquery.min.js	(revision 27955)
@@ -0,0 +1,4 @@
+/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;
+if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")
+},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.ActiveXObject&&m(a).on("unload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/jsonfn.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/jsonfn.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/jsonfn.js	(revision 27955)
@@ -0,0 +1,84 @@
+/**
+* JSONfn - javascript (both node.js and browser) plugin to stringify, 
+*          parse and clone objects with Functions, Regexp and Date.
+*  
+* Version - 0.60.00
+* Copyright (c) 2012 - 2015 Vadim Kiryukhin
+* vkiryukhin @ gmail.com
+* http://www.eslinstructor.net/jsonfn/
+* 
+* Licensed under the MIT license ( http://www.opensource.org/licenses/mit-license.php )
+*
+*   USAGE:
+*     browser:
+*         JSONfn.stringify(obj);
+*         JSONfn.parse(str[, date2obj]);
+*         JSONfn.clone(obj[, date2obj]);
+*
+*     nodejs:
+*       var JSONfn = require('path/to/json-fn');
+*       JSONfn.stringify(obj);
+*       JSONfn.parse(str[, date2obj]);
+*       JSONfn.clone(obj[, date2obj]);
+*
+*
+*     @obj      -  Object;
+*     @str      -  String, which is returned by JSONfn.stringify() function; 
+*     @date2obj - Boolean (optional); if true, date string in ISO8061 format
+*                 is converted into a Date object; otherwise, it is left as a String.
+*/
+
+"use strict";
+
+(function (exports) {
+
+  exports.stringify = function (obj) {
+
+    return JSON.stringify(obj, function (key, value) {
+      if (value instanceof Function || typeof value == 'function') {
+        return value.toString();
+      }
+      if (value instanceof RegExp) {
+        return '_PxEgEr_' + value;
+      }
+      return value;
+    });
+  };
+
+  exports.parse = function (str, date2obj) {
+
+    var iso8061 = date2obj ? /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/ : false;
+
+    return JSON.parse(str, function (key, value) {
+      var prefix;
+
+      if (typeof value != 'string') {
+        return value;
+      }
+      if (value.length < 8) {
+        return value;
+      }
+
+      prefix = value.substring(0, 8);
+
+      if (iso8061 && value.match(iso8061)) {
+        return new Date(value);
+      }
+      if (prefix === 'function') {
+        return eval('(' + value + ')');
+      }
+      if (prefix === '_PxEgEr_') {
+        return eval(value.slice(8));
+      }
+
+      return value;
+    });
+  };
+
+  exports.clone = function (obj, date2obj) {
+    return exports.parse(exports.stringify(obj), date2obj);
+  };
+
+}(typeof exports === 'undefined' ? (window.JSONfn = {}) : exports));
+
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/sprintf.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/sprintf.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/javascript/sprintf.js	(revision 27955)
@@ -0,0 +1,190 @@
+function sprintf() {
+  //  discuss at: http://phpjs.org/functions/sprintf/
+  // original by: Ash Searle (http://hexmen.com/blog/)
+  // improved by: Michael White (http://getsprink.com)
+  // improved by: Jack
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Dj
+  // improved by: Allidylls
+  //    input by: Paulo Freitas
+  //    input by: Brett Zamir (http://brett-zamir.me)
+  //   example 1: sprintf("%01.2f", 123.1);
+  //   returns 1: 123.10
+  //   example 2: sprintf("[%10s]", 'monkey');
+  //   returns 2: '[    monkey]'
+  //   example 3: sprintf("[%'#10s]", 'monkey');
+  //   returns 3: '[####monkey]'
+  //   example 4: sprintf("%d", 123456789012345);
+  //   returns 4: '123456789012345'
+  //   example 5: sprintf('%-03s', 'E');
+  //   returns 5: 'E00'
+
+  var regex = /%%|%(\d+\$)?([\-+\'#0 ]*)(\*\d+\$|\*|\d+)?(?:\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g;
+  var a = arguments;
+  var i = 0;
+  var format = a[i++];
+
+  // pad()
+  var pad = function(str, len, chr, leftJustify) {
+    if (!chr) {
+      chr = ' ';
+    }
+    var padding = (str.length >= len) ? '' : new Array(1 + len - str.length >>> 0)
+      .join(chr);
+    return leftJustify ? str + padding : padding + str;
+  };
+
+  // justify()
+  var justify = function(value, prefix, leftJustify, minWidth, zeroPad, customPadChar) {
+    var diff = minWidth - value.length;
+    if (diff > 0) {
+      if (leftJustify || !zeroPad) {
+        value = pad(value, minWidth, customPadChar, leftJustify);
+      } else {
+        value = value.slice(0, prefix.length) + pad('', diff, '0', true) + value.slice(prefix.length);
+      }
+    }
+    return value;
+  };
+
+  // formatBaseX()
+  var formatBaseX = function(value, base, prefix, leftJustify, minWidth, precision, zeroPad) {
+    // Note: casts negative numbers to positive ones
+    var number = value >>> 0;
+    prefix = (prefix && number && {
+      '2'  : '0b',
+      '8'  : '0',
+      '16' : '0x'
+    }[base]) || '';
+    value = prefix + pad(number.toString(base), precision || 0, '0', false);
+    return justify(value, prefix, leftJustify, minWidth, zeroPad);
+  };
+
+  // formatString()
+  var formatString = function(value, leftJustify, minWidth, precision, zeroPad, customPadChar) {
+    if (precision !== null && precision !== undefined) {
+      value = value.slice(0, precision);
+    }
+    return justify(value, '', leftJustify, minWidth, zeroPad, customPadChar);
+  };
+
+  // doFormat()
+  var doFormat = function(substring, valueIndex, flags, minWidth, precision, type) {
+    var number, prefix, method, textTransform, value;
+
+    if (substring === '%%') {
+      return '%';
+    }
+
+    // parse flags
+    var leftJustify = false;
+    var positivePrefix = '';
+    var zeroPad = false;
+    var prefixBaseX = false;
+    var customPadChar = ' ';
+    var flagsl = flags.length;
+    var j;
+    for (j = 0; flags && j < flagsl; j++) {
+      switch (flags.charAt(j)) {
+      case ' ':
+        positivePrefix = ' ';
+        break;
+      case '+':
+        positivePrefix = '+';
+        break;
+      case '-':
+        leftJustify = true;
+        break;
+      case "'":
+        customPadChar = flags.charAt(j + 1);
+        break;
+      case '0':
+        zeroPad = true;
+        customPadChar = '0';
+        break;
+      case '#':
+        prefixBaseX = true;
+        break;
+      }
+    }
+
+    // parameters may be null, undefined, empty-string or real valued
+    // we want to ignore null, undefined and empty-string values
+    if (!minWidth) {
+      minWidth = 0;
+    } else if (minWidth === '*') {
+      minWidth = +a[i++];
+    } else if (minWidth.charAt(0) === '*') {
+      minWidth = +a[minWidth.slice(1, -1)];
+    } else {
+      minWidth = +minWidth;
+    }
+
+    // Note: undocumented perl feature:
+    if (minWidth < 0) {
+      minWidth = -minWidth;
+      leftJustify = true;
+    }
+
+    if (!isFinite(minWidth)) {
+      throw new Error('sprintf: (minimum-)width must be finite');
+    }
+
+    if (!precision) {
+      precision = 'fFeE'.indexOf(type) > -1 ? 6 : (type === 'd') ? 0 : undefined;
+    } else if (precision === '*') {
+      precision = +a[i++];
+    } else if (precision.charAt(0) === '*') {
+      precision = +a[precision.slice(1, -1)];
+    } else {
+      precision = +precision;
+    }
+
+    // grab value using valueIndex if required?
+    value = valueIndex ? a[valueIndex.slice(0, -1)] : a[i++];
+
+    switch (type) {
+    case 's':
+      return formatString(String(value), leftJustify, minWidth, precision, zeroPad, customPadChar);
+    case 'c':
+      return formatString(String.fromCharCode(+value), leftJustify, minWidth, precision, zeroPad);
+    case 'b':
+      return formatBaseX(value, 2, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'o':
+      return formatBaseX(value, 8, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'x':
+      return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'X':
+      return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad)
+        .toUpperCase();
+    case 'u':
+      return formatBaseX(value, 10, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'i':
+    case 'd':
+      number = +value || 0;
+      // Plain Math.round doesn't just truncate
+      number = Math.round(number - number % 1);
+      prefix = number < 0 ? '-' : positivePrefix;
+      value = prefix + pad(String(Math.abs(number)), precision, '0', false);
+      return justify(value, prefix, leftJustify, minWidth, zeroPad);
+    case 'e':
+    case 'E':
+    case 'f': // Should handle locales (as per setlocale)
+    case 'F':
+    case 'g':
+    case 'G':
+      number = +value;
+      prefix = number < 0 ? '-' : positivePrefix;
+      method = ['toExponential', 'toFixed', 'toPrecision']['efg'.indexOf(type.toLowerCase())];
+      textTransform = ['toString', 'toUpperCase']['eEfFgG'.indexOf(type) % 2];
+      value = prefix + Math.abs(number)[method](precision);
+      return justify(value, prefix, leftJustify, minWidth, zeroPad)[textTransform]();
+    default:
+      return substring;
+    }
+  };
+
+  return format.replace(regex, doFormat);
+}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/kml/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/kml/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/kml/install.sh	(revision 27955)
@@ -0,0 +1,5 @@
+#!/bin/bash
+set -eu
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/kml_shapefile.zip' 'kml_shapefile.zip'
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/configs/linux64/make.inc
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/configs/linux64/make.inc	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/configs/linux64/make.inc	(revision 27955)
@@ -0,0 +1,71 @@
+####################################################################
+#  LAPACK make include file.                                       #
+#  LAPACK, Version 3.4.0                                           #
+#  April 2012                                                   #
+####################################################################
+#
+SHELL = /bin/sh
+#  
+#  Modify the FORTRAN and OPTS definitions to refer to the
+#  compiler and desired compiler options for your machine.  NOOPT
+#  refers to the compiler options desired when NO OPTIMIZATION is
+#  selected.  Define LOADER and LOADOPTS to refer to the loader and 
+#  desired load options for your machine.
+#
+FORTRAN  = gfortran 
+OPTS     = -fPIC -O2
+DRVOPTS  = $(OPTS)
+NOOPT    = -fPIC -O0
+LOADER   = gfortran
+LOADOPTS =
+#
+# Timer for the SECOND and DSECND routines
+#
+# Default : SECOND and DSECND will use a call to the EXTERNAL FUNCTION ETIME
+#TIMER    = EXT_ETIME
+# For RS6K : SECOND and DSECND will use a call to the EXTERNAL FUNCTION ETIME_
+# TIMER    = EXT_ETIME_
+# For gfortran compiler: SECOND and DSECND will use a call to the INTERNAL FUNCTION ETIME
+TIMER    = INT_ETIME
+# If your Fortran compiler does not provide etime (like Nag Fortran Compiler, etc...)
+# SECOND and DSECND will use a call to the INTERNAL FUNCTION CPU_TIME
+# TIMER    = INT_CPU_TIME
+# If neither of this works...you can use the NONE value... In that case, SECOND and DSECND will always return 0
+# TIMER     = NONE
+#
+#  Configuration LAPACKE: Native C interface to LAPACK
+#  To generate LAPACKE library: type 'make lapackelib'
+#  Configuration file: turned off (default)
+#  Complex types: C99 (default)
+#  Name pattern: mixed case (default)
+#  (64-bit) Data model: LP64 (default)
+#
+# CC is the C compiler, normally invoked with options CFLAGS.
+#
+CC = gcc
+CFLAGS = -O3
+#
+#  The archiver and the flag(s) to use when building archive (library)
+#  If you system has no ranlib, set RANLIB = echo.
+#
+ARCH     = ar
+ARCHFLAGS= cr
+RANLIB   = ranlib
+#
+#  Location of the extended-precision BLAS (XBLAS) Fortran library
+#  used for building and testing extended-precision routines.  The
+#  relevant routines will be compiled and XBLAS will be linked only if
+#  USEXBLAS is defined.
+#
+# USEXBLAS    = Yes
+XBLASLIB     =
+# XBLASLIB    = -lxblas
+#
+#  The location of the libraries to which you will link.  (The 
+#  machine-specific, optimized BLAS library should be used whenever
+#  possible.)
+#
+BLASLIB      = ../../librefblas.a
+LAPACKLIB    = liblapack.a
+TMGLIB       = libtmglib.a
+LAPACKELIB   = liblapacke.a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/configs/mac/3.8/CMakeLists.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/configs/mac/3.8/CMakeLists.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/configs/mac/3.8/CMakeLists.txt	(revision 27955)
@@ -0,0 +1,401 @@
+cmake_minimum_required(VERSION 2.8.12)
+
+project(LAPACK Fortran C)
+
+set(LAPACK_MAJOR_VERSION 3)
+set(LAPACK_MINOR_VERSION 8)
+set(LAPACK_PATCH_VERSION 0)
+set(
+  LAPACK_VERSION
+  ${LAPACK_MAJOR_VERSION}.${LAPACK_MINOR_VERSION}.${LAPACK_PATCH_VERSION}
+  )
+
+# Add the CMake directory for custon CMake modules
+set(CMAKE_MODULE_PATH "${LAPACK_SOURCE_DIR}/CMAKE" ${CMAKE_MODULE_PATH})
+
+# Set a default build type if none was specified
+if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
+  message(STATUS "Setting build type to 'Release' as none was specified.")
+  set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
+  # Set the possible values of build type for cmake-gui
+  set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo" "Coverage")
+endif()
+
+string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UPPER)
+if(${CMAKE_BUILD_TYPE_UPPER} STREQUAL "COVERAGE")
+  message(STATUS "Adding coverage")
+  find_package(codecov)
+endif()
+
+# By default static library
+option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
+
+include(GNUInstallDirs)
+
+# Updated OSX RPATH settings
+# In response to CMake 3.0 generating warnings regarding policy CMP0042,
+# the OSX RPATH settings have been updated per recommendations found
+# in the CMake Wiki:
+#  http://www.cmake.org/Wiki/CMake_RPATH_handling#Mac_OS_X_and_the_RPATH
+set(CMAKE_MACOSX_RPATH OFF)
+set(CMAKE_SKIP_BUILD_RPATH FALSE)
+set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
+list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES ${CMAKE_INSTALL_FULL_LIBDIR} isSystemDir)
+if("${isSystemDir}" STREQUAL "-1")
+  set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR})
+  set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+endif()
+
+
+# Configure the warning and code coverage suppression file
+configure_file(
+  "${LAPACK_SOURCE_DIR}/CTestCustom.cmake.in"
+  "${LAPACK_BINARY_DIR}/CTestCustom.cmake"
+  @ONLY
+)
+
+include(PreventInSourceBuilds)
+include(PreventInBuildInstalls)
+
+if(UNIX)
+  if("${CMAKE_Fortran_COMPILER}" MATCHES "ifort")
+    set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fp-model strict")
+  endif()
+  if("${CMAKE_Fortran_COMPILER}" MATCHES "xlf")
+    set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -qnosave -qstrict=none")
+  endif()
+# Delete libmtsk in linking sequence for Sun/Oracle Fortran Compiler.
+# This library is not present in the Sun package SolarisStudio12.3-linux-x86-bin
+  string(REPLACE \;mtsk\; \; CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES "${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES}")
+endif()
+
+if(CMAKE_Fortran_COMPILER_ID STREQUAL "Compaq")
+  if(WIN32)
+    if(CMAKE_GENERATOR STREQUAL "NMake Makefiles")
+      get_filename_component(CMAKE_Fortran_COMPILER_CMDNAM ${CMAKE_Fortran_COMPILER} NAME_WE)
+      message(STATUS "Using Compaq Fortran compiler with command name ${CMAKE_Fortran_COMPILER_CMDNAM}")
+      set(cmd ${CMAKE_Fortran_COMPILER_CMDNAM})
+      string(TOLOWER "${cmd}" cmdlc)
+      if(cmdlc STREQUAL "df")
+        message(STATUS "Assume the Compaq Visual Fortran Compiler is being used")
+        set(CMAKE_Fortran_USE_RESPONSE_FILE_FOR_OBJECTS 1)
+        set(CMAKE_Fortran_USE_RESPONSE_FILE_FOR_INCLUDES 1)
+        #This is a workaround that is needed to avoid forward-slashes in the
+        #filenames listed in response files from incorrectly being interpreted as
+        #introducing compiler command options
+        if(${BUILD_SHARED_LIBS})
+          message(FATAL_ERROR "Making of shared libraries with CVF has not been tested.")
+        endif()
+        set(str "NMake version 9 or later should be used. NMake version 6.0 which is\n")
+        set(str "${str}   included with the CVF distribution fails to build Lapack because\n")
+        set(str "${str}   the number of source files exceeds the limit for NMake v6.0\n")
+        message(STATUS ${str})
+        set(CMAKE_Fortran_LINK_EXECUTABLE "LINK /out:<TARGET> <LINK_FLAGS> <LINK_LIBRARIES> <OBJECTS>")
+      endif()
+    endif()
+  endif()
+endif()
+
+# Get Python
+message(STATUS "Looking for Python greater than 2.6 - ${PYTHONINTERP_FOUND}")
+find_package(PythonInterp 2.7) # lapack_testing.py uses features from python 2.7 and greater
+if(PYTHONINTERP_FOUND)
+  message(STATUS "Using Python version ${PYTHON_VERSION_STRING}")
+else()
+  message(STATUS "No suitable Python version found, so skipping summary tests.")
+endif()
+# --------------------------------------------------
+
+set(LAPACK_INSTALL_EXPORT_NAME lapack-targets)
+
+macro(lapack_install_library lib)
+  install(TARGETS ${lib}
+    EXPORT ${LAPACK_INSTALL_EXPORT_NAME}
+    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+  )
+endmacro()
+
+set(PKG_CONFIG_DIR ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+
+# --------------------------------------------------
+# Testing
+option(BUILD_TESTING "Build tests" OFF)
+enable_testing()
+include(CTest)
+enable_testing()
+message(STATUS "Build tests: ${BUILD_TESTING}")
+
+# --------------------------------------------------
+# Organize output files.  On Windows this also keeps .dll files next
+# to the .exe files that need them, making tests easy to run.
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LAPACK_BINARY_DIR}/bin)
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LAPACK_BINARY_DIR}/lib)
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LAPACK_BINARY_DIR}/lib)
+
+# --------------------------------------------------
+# Check for any necessary platform specific compiler flags
+include(CheckLAPACKCompilerFlags)
+CheckLAPACKCompilerFlags()
+
+# --------------------------------------------------
+# Check second function
+
+include(CheckTimeFunction)
+set(TIME_FUNC NONE ${TIME_FUNC})
+CHECK_TIME_FUNCTION(NONE TIME_FUNC)
+CHECK_TIME_FUNCTION(INT_CPU_TIME TIME_FUNC)
+CHECK_TIME_FUNCTION(EXT_ETIME TIME_FUNC)
+CHECK_TIME_FUNCTION(EXT_ETIME_ TIME_FUNC)
+CHECK_TIME_FUNCTION(INT_ETIME TIME_FUNC)
+message(STATUS "--> Will use second_${TIME_FUNC}.f and dsecnd_${TIME_FUNC}.f as timing function.")
+
+set(SECOND_SRC ${LAPACK_SOURCE_DIR}/INSTALL/second_${TIME_FUNC}.f)
+set(DSECOND_SRC ${LAPACK_SOURCE_DIR}/INSTALL/dsecnd_${TIME_FUNC}.f)
+
+# deprecated LAPACK and LAPACKE routines
+option(BUILD_DEPRECATED "Build deprecated routines" OFF)
+message(STATUS "Build deprecated routines: ${BUILD_DEPRECATED}")
+
+# --------------------------------------------------
+# Precision to build
+# By default all precisions are generated
+option(BUILD_SINGLE "Build single precision real" ON)
+option(BUILD_DOUBLE "Build double precision real" ON)
+option(BUILD_COMPLEX "Build single precision complex" ON)
+option(BUILD_COMPLEX16 "Build double precision complex" ON)
+message(STATUS "Build single precision real: ${BUILD_SINGLE}")
+message(STATUS "Build double precision real: ${BUILD_DOUBLE}")
+message(STATUS "Build single precision complex: ${BUILD_COMPLEX}")
+message(STATUS "Build double precision complex: ${BUILD_COMPLEX16}")
+
+if(NOT (BUILD_SINGLE OR BUILD_DOUBLE OR BUILD_COMPLEX OR BUILD_COMPLEX16))
+  message(FATAL_ERROR "Nothing to build, no precision selected.
+  Please enable at least one of these:
+  BUILD_SINGLE, BUILD_DOUBLE, BUILD_COMPLEX, BUILD_COMPLEX16.")
+endif()
+
+# --------------------------------------------------
+# Subdirectories that need to be processed
+option(USE_OPTIMIZED_BLAS "Whether or not to use an optimized BLAS library instead of included netlib BLAS" OFF)
+
+# Check the usage of the user provided BLAS libraries
+if(BLAS_LIBRARIES)
+  include(CheckFortranFunctionExists)
+  set(CMAKE_REQUIRED_LIBRARIES ${BLAS_LIBRARIES})
+  CHECK_FORTRAN_FUNCTION_EXISTS("dgemm" BLAS_FOUND)
+  unset(CMAKE_REQUIRED_LIBRARIES)
+  if(BLAS_FOUND)
+    message(STATUS "--> BLAS supplied by user is WORKING, will use ${BLAS_LIBRARIES}.")
+  else()
+    message(ERROR "--> BLAS supplied by user is not WORKING, CANNOT USE ${BLAS_LIBRARIES}.")
+    message(ERROR "-->     Will use REFERENCE BLAS (by default)")
+    message(ERROR "-->     Or Correct your BLAS_LIBRARIES entry ")
+    message(ERROR "-->     Or Consider checking USE_OPTIMIZED_BLAS")
+  endif()
+
+# User did not provide a BLAS Library but specified to search for one
+elseif(USE_OPTIMIZED_BLAS)
+  find_package(BLAS)
+endif()
+
+# Neither user specified or optimized BLAS libraries can be used
+if(NOT BLAS_FOUND)
+  message(STATUS "Using supplied NETLIB BLAS implementation")
+  add_subdirectory(BLAS)
+  set(BLAS_LIBRARIES blas)
+else()
+  set(CMAKE_EXE_LINKER_FLAGS
+    "${CMAKE_EXE_LINKER_FLAGS} ${BLAS_LINKER_FLAGS}"
+    CACHE STRING "Linker flags for executables" FORCE)
+  set(CMAKE_MODULE_LINKER_FLAGS
+    "${CMAKE_MODULE_LINKER_FLAGS} ${BLAS_LINKER_FLAGS}"
+    CACHE STRING "Linker flags for modules" FORCE)
+  set(CMAKE_SHARED_LINKER_FLAGS
+    "${CMAKE_SHARED_LINKER_FLAGS} ${BLAS_LINKER_FLAGS}"
+    CACHE STRING "Linker flags for shared libs" FORCE)
+endif()
+
+
+# --------------------------------------------------
+# CBLAS
+option(CBLAS "Build CBLAS" OFF)
+
+if(CBLAS)
+  add_subdirectory(CBLAS)
+endif()
+
+# --------------------------------------------------
+# XBLAS
+
+option(USE_XBLAS "Build extended precision (needs XBLAS)" OFF)
+if(USE_XBLAS)
+  find_library(XBLAS_LIBRARY NAMES xblas)
+endif()
+
+option(USE_OPTIMIZED_LAPACK "Whether or not to use an optimized LAPACK library instead of included netlib LAPACK" OFF)
+
+# --------------------------------------------------
+# LAPACK
+# User did not provide a LAPACK Library but specified to search for one
+if(USE_OPTIMIZED_LAPACK)
+  find_package(LAPACK)
+endif()
+
+# Check the usage of the user provided or automatically found LAPACK libraries
+if(LAPACK_LIBRARIES)
+  include(CheckFortranFunctionExists)
+  set(CMAKE_REQUIRED_LIBRARIES ${LAPACK_LIBRARIES})
+  # Check if new routine of 3.4.0 is in LAPACK_LIBRARIES
+  CHECK_FORTRAN_FUNCTION_EXISTS("dgeqrt" LATESTLAPACK_FOUND)
+  unset(CMAKE_REQUIRED_LIBRARIES)
+  if(LATESTLAPACK_FOUND)
+    message(STATUS "--> LAPACK supplied by user is WORKING, will use ${LAPACK_LIBRARIES}.")
+  else()
+    message(ERROR "--> LAPACK supplied by user is not WORKING or is older than LAPACK 3.4.0, CANNOT USE ${LAPACK_LIBRARIES}.")
+    message(ERROR "-->     Will use REFERENCE LAPACK (by default)")
+    message(ERROR "-->     Or Correct your LAPACK_LIBRARIES entry ")
+    message(ERROR "-->     Or Consider checking USE_OPTIMIZED_LAPACK")
+  endif()
+endif()
+
+# Neither user specified or optimized LAPACK libraries can be used
+if(NOT LATESTLAPACK_FOUND)
+  message(STATUS "Using supplied NETLIB LAPACK implementation")
+  set(LAPACK_LIBRARIES lapack)
+  add_subdirectory(SRC)
+else()
+  set(CMAKE_EXE_LINKER_FLAGS
+    "${CMAKE_EXE_LINKER_FLAGS} ${LAPACK_LINKER_FLAGS}"
+    CACHE STRING "Linker flags for executables" FORCE)
+  set(CMAKE_MODULE_LINKER_FLAGS
+    "${CMAKE_MODULE_LINKER_FLAGS} ${LAPACK_LINKER_FLAGS}"
+    CACHE STRING "Linker flags for modules" FORCE)
+  set(CMAKE_SHARED_LINKER_FLAGS
+    "${CMAKE_SHARED_LINKER_FLAGS} ${LAPACK_LINKER_FLAGS}"
+    CACHE STRING "Linker flags for shared libs" FORCE)
+endif()
+
+if(BUILD_TESTING)
+  add_subdirectory(TESTING)
+endif()
+
+# --------------------------------------------------
+# LAPACKE
+option(LAPACKE "Build LAPACKE" OFF)
+
+# LAPACKE has also the interface to some routines from tmglib,
+# if LAPACKE_WITH_TMG is selected, we need to add those routines to LAPACKE
+option(LAPACKE_WITH_TMG "Build LAPACKE with tmglib routines" OFF)
+if(LAPACKE_WITH_TMG)
+  set(LAPACKE ON)
+endif()
+if(BUILD_TESTING OR LAPACKE_WITH_TMG) #already included, avoid double inclusion
+  add_subdirectory(TESTING/MATGEN)
+endif()
+
+if(LAPACKE)
+  add_subdirectory(LAPACKE)
+endif()
+
+# --------------------------------------------------
+# CPACK Packaging
+
+set(CPACK_PACKAGE_NAME "LAPACK")
+set(CPACK_PACKAGE_VENDOR "University of Tennessee, Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd")
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "LAPACK- Linear Algebra Package")
+set(CPACK_PACKAGE_VERSION_MAJOR 3)
+set(CPACK_PACKAGE_VERSION_MINOR 5)
+set(CPACK_PACKAGE_VERSION_PATCH 0)
+set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
+set(CPACK_PACKAGE_INSTALL_DIRECTORY "LAPACK")
+if(WIN32 AND NOT UNIX)
+  # There is a bug in NSI that does not handle full unix paths properly. Make
+  # sure there is at least one set of four (4) backlasshes.
+  set(CPACK_NSIS_HELP_LINK "http:\\\\\\\\http://icl.cs.utk.edu/lapack-forum")
+  set(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\www.netlib.org/lapack")
+  set(CPACK_NSIS_CONTACT "lapack@eecs.utk.edu")
+  set(CPACK_NSIS_MODIFY_PATH ON)
+  set(CPACK_NSIS_DISPLAY_NAME "LAPACK-${LAPACK_VERSION}")
+  set(CPACK_PACKAGE_RELOCATABLE "true")
+else()
+  set(CPACK_GENERATOR "TGZ")
+  set(CPACK_SOURCE_GENERATOR TGZ)
+  set(CPACK_SOURCE_PACKAGE_FILE_NAME "lapack-${LAPACK_VERSION}")
+  set(CPACK_SOURCE_IGNORE_FILES ~$ .svn ${CPACK_SOURCE_IGNORE_FILES})
+endif()
+include(CPack)
+
+
+# --------------------------------------------------
+
+if(NOT BLAS_FOUND)
+  set(ALL_TARGETS ${ALL_TARGETS} blas)
+endif()
+
+if(NOT LATESTLAPACK_FOUND)
+  set(ALL_TARGETS ${ALL_TARGETS} lapack)
+endif()
+
+if(BUILD_TESTING OR LAPACKE_WITH_TMG)
+  set(ALL_TARGETS ${ALL_TARGETS} tmglib)
+endif()
+
+# Export lapack targets, not including lapacke, from the
+# install tree, if any.
+set(_lapack_config_install_guard_target "")
+if(ALL_TARGETS)
+  install(EXPORT lapack-targets
+    DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/lapack-${LAPACK_VERSION})
+
+  # Choose one of the lapack targets to use as a guard for
+  # lapack-config.cmake to load targets from the install tree.
+  list(GET ALL_TARGETS 0 _lapack_config_install_guard_target)
+endif()
+
+# Include cblas in targets exported from the build tree.
+if(CBLAS)
+  set(ALL_TARGETS ${ALL_TARGETS} cblas)
+endif()
+
+# Include lapacke in targets exported from the build tree.
+if(LAPACKE)
+  set(ALL_TARGETS ${ALL_TARGETS} lapacke)
+endif()
+
+# Export lapack and lapacke targets from the build tree, if any.
+set(_lapack_config_build_guard_target "")
+if(ALL_TARGETS)
+  export(TARGETS ${ALL_TARGETS} FILE lapack-targets.cmake)
+
+  # Choose one of the lapack or lapacke targets to use as a guard
+  # for lapack-config.cmake to load targets from the build tree.
+  list(GET ALL_TARGETS 0 _lapack_config_build_guard_target)
+endif()
+
+configure_file(${LAPACK_SOURCE_DIR}/CMAKE/lapack-config-build.cmake.in
+  ${LAPACK_BINARY_DIR}/lapack-config.cmake @ONLY)
+
+
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/lapack.pc.in ${CMAKE_CURRENT_BINARY_DIR}/lapack.pc @ONLY)
+  install(FILES
+  ${CMAKE_CURRENT_BINARY_DIR}/lapack.pc
+  DESTINATION ${PKG_CONFIG_DIR}
+  )
+
+configure_file(${LAPACK_SOURCE_DIR}/CMAKE/lapack-config-install.cmake.in
+  ${LAPACK_BINARY_DIR}/CMakeFiles/lapack-config.cmake @ONLY)
+
+include(CMakePackageConfigHelpers)
+write_basic_package_version_file(
+  ${LAPACK_BINARY_DIR}/lapack-config-version.cmake
+  VERSION ${LAPACK_VERSION}
+  COMPATIBILITY SameMajorVersion
+  )
+
+install(FILES
+  ${LAPACK_BINARY_DIR}/CMakeFiles/lapack-config.cmake
+  ${LAPACK_BINARY_DIR}/lapack-config-version.cmake
+  DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/lapack-${LAPACK_VERSION}
+  )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/configs/macosx64/make.inc
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/configs/macosx64/make.inc	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/configs/macosx64/make.inc	(revision 27955)
@@ -0,0 +1,71 @@
+####################################################################
+#  LAPACK make include file.                                       #
+#  LAPACK, Version 3.4.0                                           #
+#  April 2012                                                   #
+####################################################################
+#
+SHELL = /bin/sh
+#  
+#  Modify the FORTRAN and OPTS definitions to refer to the
+#  compiler and desired compiler options for your machine.  NOOPT
+#  refers to the compiler options desired when NO OPTIMIZATION is
+#  selected.  Define LOADER and LOADOPTS to refer to the loader and 
+#  desired load options for your machine.
+#
+FORTRAN  = gfortran 
+OPTS     = -fPIC -O2
+DRVOPTS  = $(OPTS)
+NOOPT    = -fPIC -O0
+LOADER   = gfortran
+LOADOPTS =
+#
+# Timer for the SECOND and DSECND routines
+#
+# Default : SECOND and DSECND will use a call to the EXTERNAL FUNCTION ETIME
+#TIMER    = EXT_ETIME
+# For RS6K : SECOND and DSECND will use a call to the EXTERNAL FUNCTION ETIME_
+# TIMER    = EXT_ETIME_
+# For gfortran compiler: SECOND and DSECND will use a call to the INTERNAL FUNCTION ETIME
+TIMER    = INT_ETIME
+# If your Fortran compiler does not provide etime (like Nag Fortran Compiler, etc...)
+# SECOND and DSECND will use a call to the INTERNAL FUNCTION CPU_TIME
+# TIMER    = INT_CPU_TIME
+# If neither of this works...you can use the NONE value... In that case, SECOND and DSECND will always return 0
+# TIMER     = NONE
+#
+#  Configuration LAPACKE: Native C interface to LAPACK
+#  To generate LAPACKE library: type 'make lapackelib'
+#  Configuration file: turned off (default)
+#  Complex types: C99 (default)
+#  Name pattern: mixed case (default)
+#  (64-bit) Data model: LP64 (default)
+#
+# CC is the C compiler, normally invoked with options CFLAGS.
+#
+CC = gcc
+CFLAGS = -O3
+#
+#  The archiver and the flag(s) to use when building archive (library)
+#  If you system has no ranlib, set RANLIB = echo.
+#
+ARCH     = ar
+ARCHFLAGS= cr
+RANLIB   = ranlib
+#
+#  Location of the extended-precision BLAS (XBLAS) Fortran library
+#  used for building and testing extended-precision routines.  The
+#  relevant routines will be compiled and XBLAS will be linked only if
+#  USEXBLAS is defined.
+#
+# USEXBLAS    = Yes
+XBLASLIB     =
+# XBLASLIB    = -lxblas
+#
+#  The location of the libraries to which you will link.  (The 
+#  machine-specific, optimized BLAS library should be used whenever
+#  possible.)
+#
+BLASLIB      = ../../librefblas.a
+LAPACKLIB    = liblapack.a
+TMGLIB       = libtmglib.a
+LAPACKELIB   = liblapacke.a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-3-win-msys2-gcc.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-3-win-msys2-gcc.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-3-win-msys2-gcc.sh	(revision 27955)
@@ -0,0 +1,49 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.9.0"
+
+PREFIX="${ISSM_DIR}/externalpackages/lapack/install"
+
+# Cleanup
+rm -rf ${PREFIX} build src
+mkdir ${PREFIX} build src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/lapack-${VER}.tar.gz" "lapack-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf lapack-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv lapack-${VER}/* src
+rm -rf lapack-${VER}
+
+# Configure
+#
+cd build
+cmake \
+	-DBUILD_SHARED_LIBS=ON \
+	-DCMAKE_C_COMPILER=/usr/bin/gcc \
+	-DCMAKE_Fortran_COMPILER=/usr/bin/gfortran \
+	-DBLAS_LIBRARIES="-L${BLAS_ROOT}/lib -lblas" \
+	../src
+
+# Compile
+make
+
+# Copy libraries to lib directory (on Windows, CMake installs .dll files next
+# to the .exe files that need them, making tests easy to run, so let's not 
+# change the CMake configuration).
+mkdir ${PREFIX}/lib
+cp bin/msys-* ${PREFIX}/lib
+
+# Create link to versioned library
+cd ${PREFIX}/lib
+ln -s msys-lapack-3.dll msys-lapack.dll
+
+# Create link to shared version of library so that libtool can find it
+ln -s msys-lapack-3.dll liblapack.dll
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-3-win-msys2-mingw.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-3-win-msys2-mingw.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-3-win-msys2-mingw.sh	(revision 27955)
@@ -0,0 +1,54 @@
+#!/bin/bash
+set -eu
+
+
+# TODO:
+# - Modify configuration/makefiles so that dll rather than so is produced.
+#
+
+## Constants
+#
+VER="3.9.0"
+
+PREFIX="${ISSM_DIR}/externalpackages/lapack/install"
+
+# Cleanup
+rm -rf ${PREFIX} build src
+mkdir ${PREFIX} build src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/lapack-${VER}.tar.gz" "lapack-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf lapack-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv lapack-${VER}/* src
+rm -rf lapack-${VER}
+
+# Configure
+#
+cd build
+cmake \
+	-DBUILD_SHARED_LIBS=ON \
+	-DCMAKE_C_COMPILER=/mingw64/bin/gcc \
+	-DCMAKE_Fortran_COMPILER=/mingw64/bin/gfortran \
+	-DBLAS_LIBRARIES="-L${BLAS_ROOT}/lib -lblas" \
+	../src
+
+# Compile
+make
+
+# Copy libraries to lib directory (on Windows, CMake installs .dll files next
+# to the .exe files that need them, making tests easy to run, so let's not 
+# change the CMake configuration).
+mkdir ${PREFIX}/lib
+cp lib/liblapack.* ${PREFIX}/lib
+
+# # Create link to versioned library
+# cd ${PREFIX}/lib
+# ln -s msys-lapack-3.dll msys-lapack.dll
+
+# Create link to shared version of library so that libtool can find it
+cd ${PREFIX}/lib
+ln -s liblapack.so liblapack.dll
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-3.8-linux-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-3.8-linux-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-3.8-linux-static.sh	(revision 27955)
@@ -0,0 +1,42 @@
+#!/bin/bash
+set -eu
+
+
+# NOTE: This installation script will build both BLAS and LAPACK libraries
+#
+
+## Constants
+#
+VER="3.8.0"
+
+## Environment
+#
+export CC="${ISSM_DIR}/externalpackages/mpich/install/bin/mpicc"
+export CXX="${ISSM_DIR}/externalpackages/mpich/install/bin/mpicxx"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/lapack-${VER}.tar.gz" "lapack-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf lapack-${VER}.tar.gz
+
+# Cleanup
+rm -rf build install src
+mkdir build install install/lib src
+
+# Move source to 'src' directory
+mv lapack-${VER}/* src
+rm -rf lapack-${VER}
+
+# Configure
+#
+cd build
+cmake \
+	../src
+
+# Compile
+make
+
+# Install
+cd ..
+cp ./build/lib/* ./install/lib
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-3.8-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-3.8-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-3.8-linux.sh	(revision 27955)
@@ -0,0 +1,44 @@
+#!/bin/bash
+set -eu
+
+
+# NOTE: This installation script will build both BLAS and LAPACK libraries
+#
+
+## Constants
+#
+VER="3.8.0"
+
+## Environment
+#
+export CC="${ISSM_DIR}/externalpackages/mpich/install/bin/mpicc"
+export CXX="${ISSM_DIR}/externalpackages/mpich/install/bin/mpicxx"
+export FC="${ISSM_DIR}/externalpackages/mpich/install/bin/mpif77"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/lapack-${VER}.tar.gz" "lapack-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf lapack-${VER}.tar.gz
+
+# Cleanup
+rm -rf build install src
+mkdir build install install/lib src
+
+# Move source to 'src' directory
+mv lapack-${VER}/* src
+rm -rf lapack-${VER}
+
+# Configure
+#
+cd build
+cmake \
+	-DBUILD_SHARED_LIBS=ON \
+	../src
+
+# Compile
+make
+
+# Install
+cd ..
+cp ./build/lib/* ./install/lib
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-3.8-mac.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-3.8-mac.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-3.8-mac.sh	(revision 27955)
@@ -0,0 +1,41 @@
+#!/bin/bash
+set -eu
+
+
+# NOTE: This installation script will build both BLAS and LAPACK libraries
+#
+
+## Constants
+#
+VER="3.8.0"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/lapack-${VER}.tar.gz" "lapack-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf lapack-$VER.tar.gz
+
+# Cleanup
+rm -rf build install src
+mkdir build install install/lib src
+
+# Move source to 'src' directory
+mv lapack-$VER/* src
+rm -rf lapack-$VER
+
+# Copy customized configuration files to 'src' directory
+cp configs/mac/3.8/CMakeLists.txt src/CMakeLists.txt
+
+# Configure
+#
+cd build
+cmake \
+	-DBUILD_SHARED_LIBS=ON \
+	../src
+
+# Compile
+make
+
+# Install
+cd ..
+cp ./build/lib/* ./install/lib
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-linux64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-linux64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-linux64.sh	(revision 27955)
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install lapack-3.4.1 lapack-3.4.1.tgz
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/lapack-3.4.1.tgz' 'lapack-3.4.1.tgz'
+
+#Untar 
+tar -zxvf  lapack-3.4.1.tgz
+
+#Move lapack into install directory
+mv lapack-3.4.1/* src
+rm -rf lapack-3.4.1
+
+#install
+cd src 
+cp ../configs/linux64/make.inc ./
+
+#Compile and install lapack
+if [ $# -eq 0 ]; then
+	make lib
+else
+	make -j $1 lib
+fi
+
+#Compile 
+cd ../install
+mkdir lib
+cd lib
+cp ../../src/liblapack.a .
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-macosx64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-macosx64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/lapack/install-macosx64.sh	(revision 27955)
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install lapack-3.4.1 lapack-3.4.1.tgz
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/lapack-3.4.1.tgz' 'lapack-3.4.1.tgz'
+
+#Untar 
+tar -zxvf  lapack-3.4.1.tgz
+
+#Move lapack into install directory
+mv lapack-3.4.1/* src
+rm -rf lapack-3.4.1
+
+#install
+cd src 
+cp ../configs/macosx64/make.inc ./
+
+#Compile and install lapack
+if [ $# -eq 0 ]; then
+	make lib
+else
+	make -j $1 lib
+fi
+
+#Compile 
+cd ../install
+mkdir lib
+cd lib
+cp ../../src/liblapack.a .
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/latex2rtf/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/latex2rtf/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/latex2rtf/install.sh	(revision 27955)
@@ -0,0 +1,17 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf latex2rtf-2.0.0 cfg install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/latex2rtf-2.0.0.tar.gz' 'latex2rtf-2.0.0.tar.gz'
+
+#untar 
+tar -zxvf  latex2rtf-2.0.0.tar.gz
+mv latex2rtf-2.0.0 install
+
+#Compile
+cd install
+export PREFIX="$ISSM_DIR/externalpackages/latex2rtf/install/"
+make
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/libermate/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/libermate/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/libermate/install.sh	(revision 27955)
@@ -0,0 +1,17 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+rm -rf libermate-0.4
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/libermate-0.4.tgz' 'libermate-0.4.tgz'
+
+#Untar 
+tar -zxvf  libermate-0.4.tgz
+
+#Move libermate into install directory
+mv libermate-0.4/* install
+rm -rf libermate-0.4
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/libpng/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/libpng/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/libpng/install.sh	(revision 27955)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf libpng-1.5.10
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/libpng-1.5.10.tar.gz' 'libpng-1.5.10.tar.gz'
+
+#Untar 
+tar -zxvf  libpng-1.5.10.tar.gz
+
+#Move libpng into src directory
+mv libpng-1.5.10/* src
+rm -rf libpng-1.5.10
+
+#Configure libpng
+cd src
+sudo ./configure 
+
+#Compile and install libpng
+if [ $# -eq 0 ]; then
+	sudo make
+else
+	sudo make -j $1
+fi
+sudo make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/libtiff/install-4-mac.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/libtiff/install-4-mac.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/libtiff/install-4-mac.sh	(revision 27955)
@@ -0,0 +1,45 @@
+#!/bin/bash
+set -eu
+
+
+# NOTE:
+# - This installation script should work equally well under Linux. If your 
+#	Linux distribution does not include libtiff, please,
+#		- copy this file to install-4-linux.sh
+#		- verify that it successfully compiles and installs libtiff
+#		- commit the new script (including any modifications) to the repo
+#
+
+# Constants
+#
+VER="4.2.0"
+
+PREFIX="${ISSM_EXT_SHARED_DIR}/libtiff/install" # Set to location where external package should be installed
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/libtiff-v${VER}.tar.gz" "libtiff-v${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf libtiff-v${VER}.tar.gz
+
+# Move source into 'src' directory
+mv libtiff-v${VER}/* src
+rm -rf libtiff-v${VER}
+
+# Configure
+cd src
+cmake -S . -B ${PREFIX}
+cd ${PREFIX}
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/m1qn3/install-macosx64-snowleopard.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/m1qn3/install-macosx64-snowleopard.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/m1qn3/install-macosx64-snowleopard.sh	(revision 27955)
@@ -0,0 +1,55 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install src m1qn3-3.3-distrib
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/m1qn3-3.3-distrib.tgz' 'm1qn3-3.3-distrib.tgz'
+
+#Untar 
+tar -xzf m1qn3-3.3-distrib.tgz
+mv m1qn3-3.3-distrib src
+
+FC="gfortran"
+
+#Compile m1qn3
+cd src/src/
+(
+cat << EOF
+LIB_EXT=a
+FC=$FC
+install: libm1qn3.\$(LIB_EXT)
+	cp libm1qn3.\$(LIB_EXT) ../../install/
+OBJECTS= m1qn3.o
+libm1qn3.\$(LIB_EXT): \$(OBJECTS)
+	ar -r libm1qn3.\$(LIB_EXT) \$(OBJECTS) 
+	ranlib libm1qn3.\$(LIB_EXT) 
+%.o: %.f
+	\$(FC) \$(FFLAGS) -fPIC -c $< -o \$@
+clean: 
+	rm -rf *.o *.\$(LIB_EXT)
+EOF
+) > Makefile
+make
+
+#compile ddot
+cd ../blas
+(
+cat << EOF
+LIB_EXT=a
+FC=$FC
+install: libddot.\$(LIB_EXT)
+	cp libddot.\$(LIB_EXT) ../../install/
+OBJECTS= ddot.o
+libddot.\$(LIB_EXT): \$(OBJECTS)
+	ar -r libddot.\$(LIB_EXT) \$(OBJECTS) 
+	ranlib libddot.\$(LIB_EXT) 
+%.o: %.f
+	\$(FC) \$(FFLAGS) -fPIC -c $< -o \$@
+clean: 
+	rm -rf *.o *.\$(LIB_EXT)
+EOF
+) > Makefile
+make
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/m1qn3/install-maui.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/m1qn3/install-maui.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/m1qn3/install-maui.sh	(revision 27955)
@@ -0,0 +1,55 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install src m1qn3-3.3-distrib
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/m1qn3-3.3-distrib.tgz' 'm1qn3-3.3-distrib.tgz'
+
+#Untar 
+tar -xzf m1qn3-3.3-distrib.tgz
+mv m1qn3-3.3-distrib src
+
+FC="ftn"
+
+#Compile m1qn3
+cd src/src/
+(
+cat << EOF
+LIB_EXT=a
+FC=$FC
+install: libm1qn3.\$(LIB_EXT)
+	cp libm1qn3.\$(LIB_EXT) ../../install/
+OBJECTS= m1qn3.o
+libm1qn3.\$(LIB_EXT): \$(OBJECTS)
+	ar -r libm1qn3.\$(LIB_EXT) \$(OBJECTS) 
+	ranlib libm1qn3.\$(LIB_EXT) 
+%.o: %.f
+	\$(FC) \$(FFLAGS) -fPIC -c $< -o \$@
+clean: 
+	rm -rf *.o *.\$(LIB_EXT)
+EOF
+) > Makefile
+make
+
+#compile ddot
+cd ../blas
+(
+cat << EOF
+LIB_EXT=a
+FC=$FC
+install: libddot.\$(LIB_EXT)
+	cp libddot.\$(LIB_EXT) ../../install/
+OBJECTS= ddot.o
+libddot.\$(LIB_EXT): \$(OBJECTS)
+	ar -r libddot.\$(LIB_EXT) \$(OBJECTS) 
+	ranlib libddot.\$(LIB_EXT) 
+%.o: %.f
+	\$(FC) \$(FFLAGS) -fPIC -c $< -o \$@
+clean: 
+	rm -rf *.o *.\$(LIB_EXT)
+EOF
+) > Makefile
+make
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/m1qn3/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/m1qn3/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/m1qn3/install.sh	(revision 27955)
@@ -0,0 +1,79 @@
+#!/bin/bash
+set -eu
+
+## Constants
+#
+VER=3.3
+
+PREFIX="${ISSM_DIR}/externalpackages/m1qn3/install" # Set to location where external package should be installed
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/m1qn3-${VER}-distrib.tgz" "m1qn3-${VER}-distrib.tgz"
+
+# Unpack source
+tar -xzf m1qn3-${VER}-distrib.tgz
+
+# Move source to 'src' directory
+mv m1qn3-${VER}-distrib/* src
+rm -rf m1qn3-${VER}-distrib
+
+#patch
+#patch -u -b src/src/m1qn3.f -i patch/m1qn3.f.patch
+patch src/src/m1qn3.f patch/m1qn3.f.patch
+
+if which ifort >/dev/null; then
+	FC="ifort"
+	FFLAGS="-traceback -check all" # -O2 is default 
+else
+	FC="gfortran"
+	if [ `uname` == "Darwin" ]; then
+		FFLAGS="-arch $(uname -m)"
+	else
+		FFLAGS=""
+	fi
+fi
+
+# Compile and install
+cd src/src/
+(
+cat << EOF
+LIB_EXT=a
+FC=$FC
+FFLAGS=$FFLAGS
+install: libm1qn3.\$(LIB_EXT)
+	cp libm1qn3.\$(LIB_EXT) ${PREFIX}
+OBJECTS= m1qn3.o
+libm1qn3.\$(LIB_EXT): \$(OBJECTS)
+	ar -r libm1qn3.\$(LIB_EXT) \$(OBJECTS) 
+	ranlib libm1qn3.\$(LIB_EXT) 
+%.o: %.f
+	\$(FC) \$(FFLAGS) -fPIC -c $< -o \$@
+clean: 
+	rm -rf *.o *.\$(LIB_EXT)
+EOF
+) > Makefile
+make
+
+cd ../blas
+(
+cat << EOF
+LIB_EXT=a
+FC=$FC
+FFLAGS=$FFLAGS
+install: libddot.\$(LIB_EXT)
+	cp libddot.\$(LIB_EXT) ${PREFIX}
+OBJECTS= ddot.o
+libddot.\$(LIB_EXT): \$(OBJECTS)
+	ar -r libddot.\$(LIB_EXT) \$(OBJECTS) 
+	ranlib libddot.\$(LIB_EXT) 
+%.o: %.f
+	\$(FC) \$(FFLAGS) -fPIC -c $< -o \$@
+clean: 
+	rm -rf *.o *.\$(LIB_EXT)
+EOF
+) > Makefile
+make
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/m1qn3/patch/m1qn3.f.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/m1qn3/patch/m1qn3.f.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/m1qn3/patch/m1qn3.f.patch	(revision 27955)
@@ -0,0 +1,11 @@
+--- src/src/m1qn3.f	2009-10-20 06:39:35.000000000 -0400
++++ m1qn3.f	2021-08-13 14:44:30.276019165 -0400
+@@ -802,7 +802,7 @@
+      &        "  iter  simul  stepsize            f                |g|",
+      &        "       |g|/|g0|"
+           write(io,
+-     &        '(1x,i5,2x,i5,2x,1pd8.2,2x,d21.14,2x,d11.5,2x,d10.4)')
++     &        '(1x,i5,2x,i5,2x,1pd9.2,2x,d21.14,2x,d12.5,2x,d11.4)')
+      &        niter, isim, t, f, gnorm, eps1
+       endif
+       if (impres.ge.5) write (io,940) eps1
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/m2html/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/m2html/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/m2html/install.sh	(revision 27955)
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install m2html
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/m2html.zip' 'm2html.zip'
+
+#uncompress
+unzip m2html.zip
+
+#move to install directory
+mv m2html/* install
+rm -rf m2html
+
+#patch m2html
+cd install
+patch m2html.m ../m2html.m.patch
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/m2html/m2html.m.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/m2html/m2html.m.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/m2html/m2html.m.patch	(revision 27955)
@@ -0,0 +1,114 @@
+*** m2html.m	2011-08-12 10:57:45.000000000 -0700
+--- install/m2html.m	2011-08-12 10:58:26.000000000 -0700
+***************
+*** 306,311 ****
+--- 306,325 ----
+  	end
+  
+  	mdir = unique(mdirs);
++ 
++ 	%add root directories
++ 	for i=1:length(mdir)
++ 		path=strsplit(mdir{i},'/');
++ 		string=path{1};
++ 		mdir{end+1}=string;
++ 		for j=2:length(path),
++ 			string=[string '/' path{j}];
++ 			mdir{end+1}=string;
++ 		end
++ 	end
++ 
++ 	mdir=unique(mdir);
++ 
+  	if options.verbose,
+  		fprintf('Found %d unique Matlab directories.\n',length(mdir));
+  	end
+***************
+*** 423,429 ****
+  %- Set some template variables
+  tpl = set(tpl,'var','DATE',[datestr(now,8) ' ' datestr(now,1) ' ' ...
+  							datestr(now,13)]);
+! tpl = set(tpl,'var','MASTERPATH',       './');
+  tpl = set(tpl,'var','DIRS',    sprintf('%s ',mdir{:}));
+  
+  %- Print list of unique directories
+--- 437,443 ----
+  %- Set some template variables
+  tpl = set(tpl,'var','DATE',[datestr(now,8) ' ' datestr(now,1) ' ' ...
+  							datestr(now,13)]);
+! tpl = set(tpl,'var','MASTERPATH',       '');
+  tpl = set(tpl,'var','DIRS',    sprintf('%s ',mdir{:}));
+  
+  %- Print list of unique directories
+***************
+*** 555,561 ****
+  	tpl = set(tpl,'var','subfold','');
+  	d = dir(mdir{i});
+  	d = {d([d.isdir]).name};
+! 	d = {d{~ismember(d,{'.' '..'})}};
+  	for j=1:length(d)
+  		if ismember(fullfile(mdir{i},d{j}),mdir)
+  			tpl = set(tpl,'var','SUBDIRECTORY',...
+--- 569,575 ----
+  	tpl = set(tpl,'var','subfold','');
+  	d = dir(mdir{i});
+  	d = {d([d.isdir]).name};
+! 	d = {d{~ismember(d,{'.' '..' 'CVS' '.svn'})}};
+  	for j=1:length(d)
+  		if ismember(fullfile(mdir{i},d{j}),mdir)
+  			tpl = set(tpl,'var','SUBDIRECTORY',...
+***************
+*** 687,695 ****
+  % Path should look like:  ...;C:\WINNT\System32;...;C:\GraphViz\bin
+  % (Note that this should have been done automatically during GraphViz installation)
+  
+! 			eval(['!' dot_exec ' -Tcmap -Tpng ' mdotfile ...
+  				' -o ' fullfile(options.htmlDir,mdir{i},[dotbase '.map']) ... 
+! 				' -o ' fullfile(options.htmlDir,mdir{i},[dotbase '.png'])])
+  			% use '!' rather than 'system' for backward compability
+  		catch
+  			fprintf('failed.');
+--- 701,709 ----
+  % Path should look like:  ...;C:\WINNT\System32;...;C:\GraphViz\bin
+  % (Note that this should have been done automatically during GraphViz installation)
+  
+! 			eval(['!' dot_exec ' -Tcmap -Tgif ' mdotfile ...
+  				' -o ' fullfile(options.htmlDir,mdir{i},[dotbase '.map']) ... 
+! 				' -o ' fullfile(options.htmlDir,mdir{i},[dotbase '.gif'])])
+  			% use '!' rather than 'system' for backward compability
+  		catch
+  			fprintf('failed.');
+***************
+*** 700,706 ****
+  		tpl = set(tpl,'var','INDEX',[options.indexFile options.extension]);
+  		tpl = set(tpl,'var','MASTERPATH', backtomaster(mdir{i}));
+  		tpl = set(tpl,'var','MDIR',       mdir{i});
+! 		tpl = set(tpl,'var','GRAPH_IMG',  [dotbase '.png']);
+  		fmap = openfile(fullfile(options.htmlDir,mdir{i},[dotbase '.map']),'r');
+  		tpl = set(tpl,'var','GRAPH_MAP',  fscanf(fmap,'%c'));
+  		fclose(fmap);
+--- 714,720 ----
+  		tpl = set(tpl,'var','INDEX',[options.indexFile options.extension]);
+  		tpl = set(tpl,'var','MASTERPATH', backtomaster(mdir{i}));
+  		tpl = set(tpl,'var','MDIR',       mdir{i});
+! 		tpl = set(tpl,'var','GRAPH_IMG',  [dotbase '.gif']);
+  		fmap = openfile(fullfile(options.htmlDir,mdir{i},[dotbase '.map']),'r');
+  		tpl = set(tpl,'var','GRAPH_MAP',  fscanf(fmap,'%c'));
+  		fclose(fmap);
+***************
+*** 1032,1038 ****
+  			if recursive
+  				d = dir(mdirs{i});
+  				d = {d([d.isdir]).name};
+! 				d = {d{~ismember(d,{'.' '..'})}};
+  				for j=1:length(d)
+  					mfiles = getmfiles(cellstr(fullfile(mdirs{i},d{j})),...
+  									   mfiles,recursive);
+--- 1046,1052 ----
+  			if recursive
+  				d = dir(mdirs{i});
+  				d = {d([d.isdir]).name};
+! 				d = {d{~ismember(d,{'.' '..' 'CVS' '.svn'})}};
+  				for j=1:length(d)
+  					mfiles = getmfiles(cellstr(fullfile(mdirs{i},d{j})),...
+  									   mfiles,recursive);
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/math77/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/math77/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/math77/install.sh	(revision 27955)
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install math77
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/math77.tar.gz' 'math77.tar.gz'
+
+#Untar 
+tar -zxvf  math77.tar.gz
+
+#Move math77 into src directory
+mv math77/* src
+rm -rf math77
+
+#Configure math77
+cd src
+
+#Compile math77
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/matplotlib/install-linux64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/matplotlib/install-linux64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/matplotlib/install-linux64.sh	(revision 27955)
@@ -0,0 +1,14 @@
+#/bin/bash
+set -eu
+export GIT_SSL_NO_VERIFY=true 
+export CC="gcc -fPIC "
+export CXX="g++ -fPIC -L$ISSM_DIR/externalpackages/tcl/install/lib"
+export F77="gfortran -fPIC"
+export FC="gfortran -fPIC"
+export FFLAGS=-ff2c
+
+git clone https://github.com/matplotlib/matplotlib
+mv matplotlib src
+cd src
+python setup.py build 
+python setup.py install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/matplotlib/install-macosx64-snowleopard.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/matplotlib/install-macosx64-snowleopard.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/matplotlib/install-macosx64-snowleopard.sh	(revision 27955)
@@ -0,0 +1,32 @@
+#/bin/bash
+set -eu
+
+rm -rf src deps 
+
+#export C_INCLUDE_PATH="$C_INCLUDE_PATH:/usr/include/c++/4.2.1"
+export GIT_SSL_NO_VERIFY=true 
+export CC="gcc -fPIC -std=c99 -I/usr/local/gfortran/include/c++/4.6.2 -I/usr/local/gfortran/include/c++/4.6.2/x86_64-apple-darwin11/"
+export CXX="g++ -fPIC -std=c99 -I/usr/local/gfortran/include/c++/4.6.2 -I/usr/local/gfortran/include/c++/4.6.2/x86_64-apple-darwin11/"
+export F77="gfortran -fPIC -I/usr/local/gfortran/include/c++/4.6.2 -I/usr/local/gfortran/include/c++/4.6.2/x86_64-apple-darwin11/"
+export FC="gfortran -fPIC -I/usr/local/gfortran/include/c++/4.6.2 -I/usr/local/gfortran/include/c++/4.6.2/x86_64-apple-darwin11/"
+export FFLAGS="-ff2c -I/usr/local/gfortran/include/c++/4.6.2 -I/usr/local/gfortran/include/c++/4.6.2/x86_64-apple-darwin11/"
+export ARCHFLAGS="-I/usr/local/gfortran/include/c++/4.6.2 -I/usr/local/gfortran/include/c++/4.6.2/x86_64-apple-darwin11/"
+
+git clone https://github.com/matplotlib/matplotlib
+mv matplotlib src
+mkdir deps
+cd src
+
+#only try this if the classic python setup.py build approach does not work. The approach in the next 3 lines can 
+#trigger issues of permissions with freetype. Sometimes it is better to independently install freetype2 (from the 
+#issm externalpackages) as sudo (or root), so that the python script can detect its existence automatically.
+#sudo make -f make.osx PREFIX=$ISSM_DIR/externalpackages/matplotlib/deps PYVERSION=$pythonversion fetch deps mpl_install_std
+#sudo make -f make.osx PREFIX=$ISSM_DIR/externalpackages/matplotlib/deps PYVERSION=$pythonversion mpl_install_std
+#python -c "import matplotlib; print 'Installed matplotlib', matplotlib.__version__, matplotlib.__file__"
+
+#comments: try exporting this first before calling python setup.py build
+CFLAGS=-mmacosx-version-min=10.6
+
+#to be tried:  first get freetype and zlib and libpng installed in sudo mode
+python setup.py build
+python setup.py install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/matplotlib/install-macosx64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/matplotlib/install-macosx64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/matplotlib/install-macosx64.sh	(revision 27955)
@@ -0,0 +1,32 @@
+#/bin/bash
+set -eu
+
+rm -rf src deps 
+
+export C_INCLUDE_PATH="$C_INCLUDE_PATH:/usr/include/c++/4.2.1"
+export GIT_SSL_NO_VERIFY=true 
+export CC="gcc -fPIC -arch x86_64 -I/usr/include/c++/4.2.1"
+export CXX="g++ -fPIC -arch x86_64 -I/usr/include/c++/4.2.1"
+export F77="gfortran -fPIC -arch x86_64 -I/usr/include/c++/4.2.1"
+export FC="gfortran -fPIC -arch x86_64 -I/usr/include/c++/4.2.1"
+export FFLAGS="-ff2c -arch x86_64 -I/usr/include/c++/4.2.1"
+export ARCHFLAGS="-arch x86_64 -I/usr/include/c++/4.2.1"
+
+git clone https://github.com/matplotlib/matplotlib
+mv matplotlib src
+mkdir deps
+cd src
+
+#only try this if the classic python setup.py build approach does not work. The approach in the next 3 lines can 
+#trigger issues of permissions with freetype. Sometimes it is better to independently install freetype2 (from the 
+#issm externalpackages) as sudo (or root), so that the python script can detect its existence automatically.
+#sudo make -f make.osx PREFIX=$ISSM_DIR/externalpackages/matplotlib/deps PYVERSION=$pythonversion fetch deps mpl_install_std
+#sudo make -f make.osx PREFIX=$ISSM_DIR/externalpackages/matplotlib/deps PYVERSION=$pythonversion mpl_install_std
+#python -c "import matplotlib; print 'Installed matplotlib', matplotlib.__version__, matplotlib.__file__"
+
+#comments: try exporting this first before calling python setup.py build
+CFLAGS=-mmacosx-version-min=10.7 
+
+#to be tried:  first get freetype and zlib and libpng installed in sudo mode
+python setup.py build
+python setup.py install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/alm2pix_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/alm2pix_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/alm2pix_help.m	(revision 27955)
@@ -0,0 +1,33 @@
+%% alm2pix 
+% Evaluate function, expressed as spherical harmonic expansion
+% coefficients, on HEALPix pixel centers
+
+%% Syntax
+%  v = alm2pix( nSide, alm, 'Param1', Value1, 'Param2', Value2, ...)
+
+%% Input Arguments
+% nSide   HEALPix resolution parameter (power of 2)
+% alm     Spherical harmonic expansion coefficients
+%
+% Param   Value
+% 'lmax'  max order of harmonic to calculate (default floor2*nSide/3)
+% 'nest'  (true | {false})
+
+%% Return Arguments
+%  v       Function values at pixels in either ring or nest indexing
+
+%% Example
+% Shows the gibbs-like error at the poles
+nSide = 2^4;
+alm = pix2alm(ones(1,12*nSide^2));
+v = alm2pix(nSide,alm);
+hp3d(v-1);
+
+%% See also
+% pix2alm
+
+%% Requires
+% ylm
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/alm2spec_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/alm2spec_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/alm2spec_help.m	(revision 27955)
@@ -0,0 +1,39 @@
+%% alm2spec
+% Evaluate angular power spectral density
+
+%% Syntax
+%  cL = alm2spec(alm)
+%  cL = alm2spec(alm, lMax)
+
+%% Input Arguments
+% alm     real valued coefficients
+% lMax    max order of harmonic to calculate (default  20)
+
+%% Return Arguments
+%  cL      angular power spectrum
+
+%% Description
+% The angular power spectrum of the function f, 
+%
+% $$f(\theta,\phi) = \sum a_{\ell m}Y_{\ell m}(\theta,\phi)$$
+%
+% are the coefficients
+%
+% $$c_{\ell} = \frac{\sum_{m=-\ell}^\ell |a_{\ell m}|^2}{2*\ell+1}$$
+
+%% Example
+% Find power spectrum coefficients of dummy data set
+nSide = 2^4;
+nPix = nSide2nPix(nSide);
+pix = 3*(ylm(nSide,4,2) + ylm(nSide,4,1)) + sqrt(17)*ylm(nSide,8,-4) ...
+  + rand(1,nPix);  
+lMax = 10;
+alm = pix2alm(pix,lMax);
+cL = alm2spec(alm,lMax);
+stem(0:lMax,cL);
+
+%% See also
+% pix2alm, alm2pix
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/ang2pix_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/ang2pix_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/ang2pix_help.m	(revision 27955)
@@ -0,0 +1,40 @@
+%% ang2pix
+% Convert spherical coordinate location to HEALPix pixel number
+
+%% Syntax
+%  pix = ang2pix(nSide, v);
+%  pix = ang2pix(nSide, v, nest);
+
+%% Input Arguments
+%  nSide      HEALPix resolution parameter
+%  v          (theta, phi) pairs in radians as either [2,n] or as cellarray
+%             of [2,1] 
+%  nest       (optional) nested pixel number scheme (true | {false})
+
+%% Return Arguments
+%  pix             array of pix numbers:
+%                 v on input     output
+%                 iscell(v)      size(v) cell array of pixel numbers
+%                 isnumeric(v)   size(v,1) numeric array of pixel numbers
+%
+% Note that Matlab numbers pixels from 1
+
+%% Example
+vTheta = acos(2*rand(3,5)-1);
+vPhi = 2*pi*rand(3,5);
+vc = arrayfun(@(x,y)([x;y]),vTheta,vPhi,'UniformOutput',false);
+va = reshape(cell2mat(vc),[2,3,5]);
+nSide = 8;
+size(vc)
+size(va)
+pix = ang2pix(nSide,vc)
+pix = ang2pix(nSide,va)
+
+%% See also
+% vec2pix, pix2ang, pix2vec
+
+%% Requires
+% ring2nest
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/ang2vec_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/ang2vec_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/ang2vec_help.m	(revision 27955)
@@ -0,0 +1,26 @@
+%% ang2vec
+% Convert from spherical to cartesian coordinates
+
+%% Syntax
+% xyz = ang2vec(tp)
+
+%% Input Arguments
+%  tp        cell of [2,1] angular locations (theta; phi)
+
+%% Return Arguments
+%  xyz       size(tp) celll array of [3,1] vectors
+
+%% Example
+tp = [acos(2*rand(1,12)-1); 2*pi*rand(1,12)];
+tp = mat2cell(tp,2,ones(12,1));
+tp = reshape(tp,3,4);
+xyz = ang2vec(tp);
+xyz{2,3}'
+tp23 = tp{2,3};
+[sin(tp23(1))*cos(tp23(2)),sin(tp23(1))*sin(tp23(2)),cos(tp23(1))]
+
+%% See also
+% vec2ang
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/angDist_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/angDist_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/angDist_help.m	(revision 27955)
@@ -0,0 +1,66 @@
+%% angDist 
+% Compute angular distance between pixel centers or points on the sphere 
+
+%% Syntax
+%   rad = angDist(v0,v1,'Param1',Value1,'Param2',Value2,...)
+
+%% Input Arguments
+%  v0, v1      (numerical or cell) array of points on sphere
+%
+%  Param       Value
+%  'nSide'     HEALPix resolution parameter (integer power 2)
+%  'nest'      nested indexing (true | {false})
+
+%% Return Arguments
+%   rad     array of angular distances (radians)
+
+%% Description
+% angDist computes the angular distances between points on the sphere.
+% Points may be specified as MEALPix pixel numbers, spherical coordinate
+% location vectors, or cartesian coordinate vectors. Cartesian coordinate
+% input vectors need not be normalized. 
+%
+% Either or both of v0, v1  may be a scalar; otherwise they must both be
+% the same size. When one is a scalar than the distance is computed between
+% that point and all the points specified in the complementary argument.
+% When pix0 and pix1 are arrays then the distances are returned between the
+% corresponding points in the two arrays.
+%
+% If any location is specified as a pixel number than nSide must be
+% specified. The indexing scheme for pixels center locations defaults to
+% ring; to specify nested indexing set the 'nest' parameter to true. 
+
+%% v0 or v1 specified as numeric arrays
+% If all points in v0 are pixel numbers then v0 may be specified as a
+% numeric array (similarly v1, mutatis mundis). then nSide must be specified.
+% Pixels numbers may be specified in ring indexing or nested indexing. For
+% nested indexing the nest flag must be specified as true. 
+
+%% pix0 or pix1 specified as cell arrays
+% Either or both pix0 or pix1 may be specified as a cell array, in which
+% case each cell specifies a location on the sphere as either a pixel
+% number, a two-component ([theta; phi]) spherical coordinate vector, or a
+% three component ([x;y;z]) cartesian vector. nSide must be specified if
+% any location is identified as a pixel center. 
+
+%% Example
+ % angular distance from pole to equator:
+ v0 = {[0;0;1]}; % north pole
+ v1 = {[1;0;0]}; % point on equator
+ rad = angDist(v0, v1);
+ 
+ % angular distance from pole to pixels 1, 17, 33 for nSide = 4:
+ v0 = {[0;0;1]};
+ rad = angDist([1, 17, 33], v0, 'nSide', 4)
+
+ % angular distance from pixels 1 to 4, 2 to 5, and 3 to 6 for nSide = 8:
+ rad = angDist([1, 2, 3], [4, 5, 6],'nSide',8)
+
+%% See also
+% queryDisc
+
+%% Requires
+% pix2vec, ang2vec
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/corners_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/corners_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/corners_help.m	(revision 27955)
@@ -0,0 +1,37 @@
+%% corners
+% Find pixel corners
+
+%% Syntax
+%  xyz = corners(nSide,nPix,'Param1',Value1,...);
+
+%% Input Arguments
+%  nSide    HEALPix resolution parameter
+%  nPix     (optional) pixel list. Default all pixels.
+%  
+%  Param    Value
+%  'nest'   nested indexing (true | {false})
+
+%% Return Arguments
+%  xyz    size(nPix) cell array of [3,1] cartesian vector pixel corner
+%         locations
+
+%% Example:
+nSide = 2^2;
+% Corners for all 48 nSide=4 pixels in ring-indexed order
+xyzR = corners(nSide);
+size(xyzR)
+xyzR{1} 
+xyzR{end-1}
+
+nPix = randi(nSide2nPix(nSide), 3, 4);
+% Corners for an assortment of pixels in nested index order
+xyzN = corners(nSide,nPix,'nest',true);
+% Convert to pixel list to ring indexing
+r = xyzR{nest2ring(nSide,nPix(2,3))}
+% Corners for same pixels requested via ring indexing
+n = xyzN{2,3}
+% Compare
+all(r == n)
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/helpfuncalpha.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/helpfuncalpha.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/helpfuncalpha.m	(revision 27955)
@@ -0,0 +1,30 @@
+%% Function Alphabetical List
+% * <alm2pix_help.html alm2pix>    - Evaluate spherical harmonic function expansion on HEALPix pixels
+% * <alm2spec_help.html alm2spec>   - valuate angular power spectral density
+% * <ang2pix_help.html ang2pix>    - Convert spherical coordinate location to HEALPix pixel number
+% * <ang2vec_help.html ang2vec>    - Convert from spherical to cartesian coordinates
+% * <angDist_help.html angDist>    - Computes angular distance on the unit sphere
+% * <corners_help.html corners>    - Find pixel corners
+% * <hp3d_help.html hp3d>       - Plots a HEALPix dataset on a 3D sphere
+% * <hpStat_help.html hpStat>     - Compute descriptive statistics of a pixel value list
+% * <inRing_help.html inRing>     - return pixels in ring or ring section
+% * <nPix2nSide_help.html nPix2nSide> - Convert number of pixels to number of facet side subdivisions
+% * <nSide2nPix_help.html nSide2nPix> - Convert resolution parameter to number of pixels
+% * <nSide2res_help.html nSide2res>  - Calculates angular resolution of a HEALPix map in arcsec 
+% * <nest2ring_help.html nest2ring>  - Convert MEALPix pixel numbers from nest to ring indexing
+% * <pix2alm_help.html pix2alm>    - Find spherical harmonic decomposition of function on sphere
+% * <pix2ang_help.html pix2ang>    - Find spherical coordinate location of HEALPix pixels
+% * <pix2vec_help.html pix2vec>    - convert HEALPix pixel numbers to (x,y,z) unit vector
+% * <pix2xy_help.html pix2xy>     - Find pixel cartesian face coordinates
+% * <queryDisc_help.html queryDisc>  - Find all pixels whose centers are within a specified disc
+% * <res2nSide_help.html res2nSide>  - Finds minimum base pixel sub-division for required resolution
+% * <ring2nest_help.html ring2nest>  - Convert MEALPix pixel numbers from ring to nest indexing
+% * <ring2z_help.html ring2z>     - Find HEALPix ring number corresponding to a given z coordinate
+% * <vec2ang_help.html vec2ang>    - Convert cartesian direction vector to position angle on sphere
+% * <vec2pix_help.html vec2pix>    - Convert cartesian direction vectors to MEALPix pixel numbers
+% * <xy2pix_help.html xy2pix>     - Find pixel number from face and coordinates in face
+% * <ylm_help.html ylm>       - Return spherical harmonic basis function $Y_L^M$ on the HEALPix sphere
+% * <z2ring_help.html z2ring>     - Find HEALPix ring numbers from direction vector z coordinate
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/helpfuncbycat.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/helpfuncbycat.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/helpfuncbycat.m	(revision 27955)
@@ -0,0 +1,49 @@
+%% Functions by Category
+% MEALPix Toolbox
+% Version 3.0
+% 21 February 2011
+ 
+%% Coordinate Conversions
+% * <ang2vec_help.html |ang2vec|>    - Convert from spherical to cartesian coordinates
+% * <vec2ang_help.html |vec2ang|>    - Convert cartesian direction vector to position angle on sphere
+
+%% Coordinate-Pixel Conversions
+% * <ang2pix_help.html |ang2pix|>    - Convert spherical coordinate location to HEALPix pixel number
+% * <pix2ang_help.html |pix2ang|>    - Find spherical coordinate location of HEALPix pixels
+% * <pix2vec_help.html |pix2vec|>    - Convert HEALPix pixel numbers to (x,y,z) unit vector
+% * <ring2z_help.html |ring2z|>     - Find HEALPix ring number corresponding to a given z coordinate
+% * <vec2pix_help.html |vec2pix|>    - Convert cartesian direction vectors to MEALPix pixel numbers
+% * <z2ring_help.html |z2ring|>     - Find HEALPix ring numbers from direction vector z coordinate
+
+%% Functions on the sphere
+% * <alm2pix_help.html |alm2pix|>    - Evaluate spherical harmonic function expansion on HEALPix pixels
+% * <angDist_help.html |angDist|>    - Computes angular distance on the unit sphere
+% * <pix2alm_help.html |pix2alm|>    - Find spherical harmonic decomposition of function on sphere
+% * <ylm_help.html |ylm|>        - returns spherical harmonic basis $Y_L^M$ on the HEALPix sphere
+
+%% Map Statistics
+% * <alm2spec_help.html |alm2spec|>   - valuate angular power spectral density
+% * <hpStat_help.html |hpStat|>     - Compute descriptive statistics of a pixel value list
+
+%% Pixel Indexing Conversions
+% * <nest2ring_help.html |nest2ring|>  - Convert MEALPix pixel numbers from nest to ring indexing
+% * <ring2nest_help.html |ring2nest|>  - Convert MEALPix pixel numbers from ring to nest indexing
+
+%% Pixel Topology
+% * <corners_help.html |corners|>    - Find pixel corners
+% * <inRing_help.html |inRing|>     - return pixels in ring or ring section
+% * <pix2xy_help.html |pix2xy|>     - Find pixel cartesian face coordinates
+% * <queryDisc_help.html |queryDisc|>  - Find all pixels whose centers are within a specified disc
+% * <xy2pix_help.html |xy2pix|>     - gives the pixel number ipix (NESTED) of ix, iy and face_num
+
+%% Plotting
+% * <hp3d_help.html |hp3d|>       - Plots a HEALPix dataset on a 3D sphere
+
+%% Resolution Relations
+% * <nPix2nSide_help.html |nPix2nSide|> - Convert number of pixels to number of facet side subdivisions
+% * <nSide2nPix_help.html |nSide2nPix|> - Convert resolution parameter to number of pixels
+% * <nSide2res_help.html |nSide2res|>  - Calculates angular resolution of a HEALPix map in arcsec 
+% * <res2nSide_help.html |res2nSide|>  - Finds minimum base pixel sub-division for required resolution
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/helptoc.xml
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/helptoc.xml	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/helptoc.xml	(revision 27955)
@@ -0,0 +1,119 @@
+<?xml version='1.0' encoding="utf-8"?>
+
+<toc version="2.0">
+  <!-- First tocitem specifies top level in Help browser Contents pane -->
+  <!-- This can be a roadmap page, as shown below, or a content page -->
+  <tocitem target="html/mealpix_product_page.html">MEALPix Toolbox
+    <!-- Nest tocitems to create hierarchical entries in  Contents-->
+    <!-- To include icons, use the following syntax for tocitems: -->
+    <!-- <tocitem target="html/foo.html" image="HelpIcon.NAME"> -->
+    <!-- Title-of-Section </tocitem> -->
+    <!-- where NAME is one of the following (use capital letters): -->
+    <!-- FUNCTION, USER_GUIDE, EXAMPLES, BLOCK, GETTING_STARTED, -->
+    <!-- DEMOS, RELEASE_NOTES --> 
+    <!-- Icon images used for these entries are also stored in -->
+    <!-- matlabroot/toolbox/matlab/icons -->
+    <!-- A Getting Started Guide usually comes first -->
+    <tocitem target="html/mealpix_gs_top.html" image="HelpIcon.GETTING_STARTED">
+      Getting Started with the MEALPix Toolbox
+      <tocitem target="html/mealpix_overview.html">Overview</tocitem>
+      <tocitem target="html/mealpix_reqts.html">System Requirements</tocitem>
+      <tocitem target="html/mealpix_install.html">Installation</tocitem>
+      <tocitem target="html/mealpix_healpix.html">MEALPix for the HEALPix User</tocitem>
+      <tocitem target="html/mealpix_bugreport.html">Reporting problems</tocitem>
+      <tocitem target="html/mealpix_references.html">References</tocitem>
+      <tocitem target="html/mealpix_notices.html">Notices</tocitem>
+    </tocitem>
+    <!-- User Guide comes next -->
+    <!--
+    <tocitem target="html/mealpix_ug_intro.html" 
+             image="HelpIcon.USER_GUIDE">MEALPix Toolbox User Guide
+      <tocitem target="html/mytbx_ch_1.html">Setting Up MEALPix Toolbox
+      </tocitem>
+      <tocitem target="html/mytbx_ch_2.html">Chapter 2
+      </tocitem>
+      <tocitem target="html/mytbx_ch_3.html">Chapter 3
+        <tocitem target="html/mytbx_ch_3a.html">Subsection a
+        </tocitem>
+      </tocitem>
+    </tocitem>
+    -->
+    <!-- Function reference next -->
+    <!-- First item is page describing function categories, if any -->
+    <tocitem target="html/helpfuncbycat.html" 
+             image="HelpIcon.FUNCTION">Function Reference
+      <!-- First category, with link to anchor in above page -->
+      <tocitem target="html/helpfuncbycat.html#1">Coordinate Conversions
+        <!-- Inside category, list its functions alphabetically -->
+        <tocitem target="html/ang2vec_help.html">ang2vec</tocitem>
+        <tocitem target="html/vec2ang_help.html">vec2ang</tocitem>
+      </tocitem>
+      <tocitem target="html/helpfuncbycat.html#2">Coordinate-Pixel Conversions
+        <tocitem target="html/ang2pix_help.html" image="HelpIcon.FUNCTION">ang2pix</tocitem>
+        <tocitem target="html/pix2ang_help.html" image="HelpIcon.FUNCTION">pix2ang</tocitem>
+        <tocitem target="html/pix2vec_help.html" image="HelpIcon.FUNCTION">pix2vec</tocitem>
+        <tocitem target="html/ring2z_help.html" image="HelpIcon.FUNCTION">ring2z</tocitem>
+        <tocitem target="html/vec2pix_help.html" image="HelpIcon.FUNCTION">vec2pix</tocitem>
+        <tocitem target="html/z2ring_help.html" image="HelpIcon.FUNCTION">z2ring</tocitem>
+      </tocitem>
+      <tocitem target="html/helpfuncbycat.html#3">Functions on the sphere
+        <tocitem target="html/alm2pix_help.html" image="HelpIcon.FUNCTION">alm2pix</tocitem>
+        <tocitem target="html/angDist_help.html" image="HelpIcon.FUNCTION">angDist</tocitem>
+        <tocitem target="html/pix2alm_help.html" image="HelpIcon.FUNCTION">pix2alm</tocitem>
+        <tocitem target="html/ylm_help.html" image="HelpIcon.FUNCTION">ylm</tocitem>
+      </tocitem>
+      <tocitem target="html/helpfuncbycat.html#4">Map Statistics        
+        <tocitem target="html/alm2spec_help.html" image="HelpIcon.FUNCTION">alm2spec</tocitem>
+        <tocitem target="html/hpStat_help.html" image="HelpIcon.FUNCTION">hpStat</tocitem>
+      </tocitem>
+      <tocitem target="html/helpfuncbycat.html#5">Pixel Indexing Conversions
+        <!-- Inside category, list its functions alphabetically -->
+        <tocitem target="html/nest2ring_help.html" image="HelpIcon.FUNCTION">nest2ring</tocitem>
+        <tocitem target="html/ring2nest_help.html" image="HelpIcon.FUNCTION">ring2nest</tocitem>
+        <!-- ... -->
+      </tocitem>
+      <tocitem target="html/helpfuncbycat.html#6">Pixel Topology               
+        <tocitem target="html/corners_help.html" image="HelpIcon.FUNCTION">corners</tocitem>
+        <tocitem target="html/inRing_help.html" image="HelpIcon.FUNCTION">inRing</tocitem>
+        <tocitem target="html/pix2xy_help.html" image="HelpIcon.FUNCTION">pix2xy</tocitem>
+        <tocitem target="html/queryDisc_help.html" image="HelpIcon.FUNCTION">queryDisc</tocitem>
+        <!-- 
+        <tocitem target="html/queryPolygon_help.html" image="HelpIcon.FUNCTION">queryPolygon</tocitem>
+        <tocitem target="html/queryStrip_help.html" image="HelpIcon.FUNCTION">queryStrip</tocitem>
+        <tocitem target="html/queryTriangle_help.html" image="HelpIcon.FUNCTION">queryTriangle</tocitem>
+        <tocitem target="html/regrade_help.html" image="HelpIcon.FUNCTION">regrade</tocitem>
+        -->
+        <tocitem target="html/xy2pix_help.html" image="HelpIcon.FUNCTION">xy2pix</tocitem>
+      </tocitem>
+      <tocitem target="html/helpfuncbycat.html#7">Plotting
+        <!-- Inside category, list its functions alphabetically -->
+        <tocitem target="html/hp3d_help.html" image="HelpIcon.FUNCTION">hp3d</tocitem>
+        <!-- ... -->
+      </tocitem>
+      <tocitem target="html/helpfuncbycat.html#8">Resolution relations  
+        <tocitem target="html/nPix2nSide_help.html" image="HelpIcon.FUNCTION">nPix2nSide</tocitem>
+        <tocitem target="html/nSide2nPix_help.html" image="HelpIcon.FUNCTION">nSide2nPix</tocitem>
+        <tocitem target="html/nSide2res_help.html" image="HelpIcon.FUNCTION">nSide2res</tocitem>
+        <tocitem target="html/res2nSide_help.html" image="HelpIcon.FUNCTION">res2nSide</tocitem>
+        <!-- ... -->
+      </tocitem>
+      <!-- Second category, with link to anchor in above page -->
+    </tocitem>
+    <!-- Optional List of Examples, with hyperlinks to examples in other files -->
+    <!-- 
+    <tocitem target="html/mytbx_example.html" 
+             image="HelpIcon.HelpIcon.EXAMPLES">MEALPix Toolbox Examples
+    </tocitem>
+    -->
+    <!-- Optional Release Notes,-->
+    <!--
+    <tocitem target="html/releaseNotes.html" 
+             image="HelpIcon.HelpIcon.RELEASE_NOTES">MEALPix Toolbox Release Notes
+    </tocitem>
+    -->
+    <!-- Optional link or links to your or other Web sites -->
+    <tocitem target="http://gwastro.org" 
+             image="$toolbox/matlab/icons/webicon.gif">MEALPix Toolbox Web Site
+    </tocitem>
+  </tocitem>
+</toc>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/hp3d_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/hp3d_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/hp3d_help.m	(revision 27955)
@@ -0,0 +1,31 @@
+%% hp3d 
+% Plot a HEALPix dataset on a 3D sphere
+
+%% Syntax
+% h = hp3d(vPix,'Param1',Value1,'Param2',Value2,...);
+
+%% Input Arguments
+%  vPix   vector of values at HEALPix pixels
+%
+%  Param      Value
+%  'nest'     vPix in nest index order (true | {false})
+
+%% Return Arguments
+%  h      (optional) array of patch handles for the sphere
+
+%% Description
+% Let $f$ be a (real-valued) function on the sphere and vPix be a vector of
+% function values at pixel $k$, $k=1\ldots12n_{\textrm{side}}^2$.
+% hp3d(vPix,'nest',nest) plots the function on a sphere. The parameter nest
+% indicates whether the values vPix are given in nested index order (true)
+% or ring index order (false and default). 
+
+%% Example
+% plot nested pixel numbers on a sphere
+hp3d(1:768,'nest',true);
+
+%% Requires
+% corners, nPix2nSide
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/hpStat_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/hpStat_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/hpStat_help.m	(revision 27955)
@@ -0,0 +1,30 @@
+%% hpStat 
+% Compute descriptive statistics of a pixel value list
+
+%% Syntax
+%  stats = hpStat(v)
+
+%% Input Arguments
+%  v         array of HEALPix pixel values
+
+%% Output Arguments
+%  stats     struct
+%            field     contents
+%            ntot      total number of data points
+%            nvalid    number n of valid data points
+%            mind      minimum of valid data
+%            maxd      maximum of valid data
+%            average   average of valid points
+%            absdev    absolute deviation
+%            var       variance
+%            stddev    standard deviation
+%            skew      skewness factor
+%            kurt      kurtosis factor
+
+%% Example
+% display stats of Y_3^1
+v = ylm(32,3,1,'real',true);
+stats = hpStat(abs(v))
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/alm2pix_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/alm2pix_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/alm2pix_help.html	(revision 27955)
@@ -0,0 +1,106 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>alm2pix</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="alm2pix_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>alm2pix</h1><!--introduction--><p>Evaluate function, expressed as spherical harmonic expansion coefficients, on HEALPix pixel centers</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Example</a></li><li><a href="#5">See also</a></li><li><a href="#6">Requires</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>v = alm2pix( nSide, alm, 'Param1', Value1, 'Param2', Value2, ...)</pre><h2>Input Arguments<a name="2"></a></h2><p>nSide   HEALPix resolution parameter (power of 2) alm     Spherical harmonic expansion coefficients</p><p>Param   Value 'lmax'  max order of harmonic to calculate (default floor2*nSide/3) 'nest'  (true | {false})</p><h2>Return Arguments<a name="3"></a></h2><pre>v       Function values at pixels in either ring or nest indexing</pre><h2>Example<a name="4"></a></h2><p>Shows the gibbs-like error at the poles</p><pre class="codeinput">nSide = 2^4;
+alm = pix2alm(ones(1,12*nSide^2));
+v = alm2pix(nSide,alm);
+hp3d(v-1);
+</pre><img vspace="5" hspace="5" src="alm2pix_help_01.png" alt=""> <h2>See also<a name="5"></a></h2><p>pix2alm</p><h2>Requires<a name="6"></a></h2><p>ylm</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% alm2pix 
+% Evaluate function, expressed as spherical harmonic expansion
+% coefficients, on HEALPix pixel centers
+
+%% Syntax
+%  v = alm2pix( nSide, alm, 'Param1', Value1, 'Param2', Value2, ...)
+
+%% Input Arguments
+% nSide   HEALPix resolution parameter (power of 2)
+% alm     Spherical harmonic expansion coefficients
+%
+% Param   Value
+% 'lmax'  max order of harmonic to calculate (default floor2*nSide/3)
+% 'nest'  (true | {false})
+
+%% Return Arguments
+%  v       Function values at pixels in either ring or nest indexing
+
+%% Example
+% Shows the gibbs-like error at the poles
+nSide = 2^4;
+alm = pix2alm(ones(1,12*nSide^2));
+v = alm2pix(nSide,alm);
+hp3d(v-1);
+
+%% See also
+% pix2alm
+
+%% Requires
+% ylm
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/alm2spec_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/alm2spec_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/alm2spec_help.html	(revision 27955)
@@ -0,0 +1,117 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>alm2spec</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="alm2spec_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>alm2spec</h1><!--introduction--><p>Evaluate angular power spectral density</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Description</a></li><li><a href="#5">Example</a></li><li><a href="#6">See also</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>cL = alm2spec(alm)
+cL = alm2spec(alm, lMax)</pre><h2>Input Arguments<a name="2"></a></h2><p>alm     real valued coefficients lMax    max order of harmonic to calculate (default  20)</p><h2>Return Arguments<a name="3"></a></h2><pre>cL      angular power spectrum</pre><h2>Description<a name="4"></a></h2><p>The angular power spectrum of the function f,</p><p><img src="alm2spec_help_eq11326.png" alt="$$f(\theta,\phi) = \sum a_{\ell m}Y_{\ell m}(\theta,\phi)$$"></p><p>are the coefficients</p><p><img src="alm2spec_help_eq18680.png" alt="$$c_{\ell} = \frac{\sum_{m=-\ell}^\ell |a_{\ell m}|^2}{2*\ell+1}$$"></p><h2>Example<a name="5"></a></h2><p>Find power spectrum coefficients of dummy data set</p><pre class="codeinput">nSide = 2^4;
+nPix = nSide2nPix(nSide);
+pix = 3*(ylm(nSide,4,2) + ylm(nSide,4,1)) + sqrt(17)*ylm(nSide,8,-4) <span class="keyword">...</span>
+  + rand(1,nPix);
+lMax = 10;
+alm = pix2alm(pix,lMax);
+cL = alm2spec(alm,lMax);
+stem(0:lMax,cL);
+</pre><img vspace="5" hspace="5" src="alm2spec_help_01.png" alt=""> <h2>See also<a name="6"></a></h2><p>pix2alm, alm2pix</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% alm2spec
+% Evaluate angular power spectral density
+
+%% Syntax
+%  cL = alm2spec(alm)
+%  cL = alm2spec(alm, lMax)
+
+%% Input Arguments
+% alm     real valued coefficients
+% lMax    max order of harmonic to calculate (default  20)
+
+%% Return Arguments
+%  cL      angular power spectrum
+
+%% Description
+% The angular power spectrum of the function f, 
+%
+% $$f(\theta,\phi) = \sum a_{\ell m}Y_{\ell m}(\theta,\phi)$$
+%
+% are the coefficients
+%
+% $$c_{\ell} = \frac{\sum_{m=-\ell}^\ell |a_{\ell m}|^2}{2*\ell+1}$$
+
+%% Example
+% Find power spectrum coefficients of dummy data set
+nSide = 2^4;
+nPix = nSide2nPix(nSide);
+pix = 3*(ylm(nSide,4,2) + ylm(nSide,4,1)) + sqrt(17)*ylm(nSide,8,-4) ...
+  + rand(1,nPix);  
+lMax = 10;
+alm = pix2alm(pix,lMax);
+cL = alm2spec(alm,lMax);
+stem(0:lMax,cL);
+
+%% See also
+% pix2alm, alm2pix
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/ang2pix_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/ang2pix_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/ang2pix_help.html	(revision 27955)
@@ -0,0 +1,149 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>ang2pix</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="ang2pix_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>ang2pix</h1><!--introduction--><p>Convert spherical coordinate location to HEALPix pixel number</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Example</a></li><li><a href="#5">See also</a></li><li><a href="#6">Requires</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>pix = ang2pix(nSide, v);
+pix = ang2pix(nSide, v, nest);</pre><h2>Input Arguments<a name="2"></a></h2><pre>nSide      HEALPix resolution parameter
+v          (theta, phi) pairs in radians as either [2,n] or as cellarray
+           of [2,1]
+nest       (optional) nested pixel number scheme (true | {false})</pre><h2>Return Arguments<a name="3"></a></h2><pre>pix             array of pix numbers:
+               v on input     output
+               iscell(v)      size(v) cell array of pixel numbers
+               isnumeric(v)   size(v,1) numeric array of pixel numbers</pre><p>Note that Matlab numbers pixels from 1</p><h2>Example<a name="4"></a></h2><pre class="codeinput">vTheta = acos(2*rand(3,5)-1);
+vPhi = 2*pi*rand(3,5);
+vc = arrayfun(@(x,y)([x;y]),vTheta,vPhi,<span class="string">'UniformOutput'</span>,false);
+va = reshape(cell2mat(vc),[2,3,5]);
+nSide = 8;
+size(vc)
+size(va)
+pix = ang2pix(nSide,vc)
+pix = ang2pix(nSide,va)
+</pre><pre class="codeoutput">
+ans =
+
+     3     5
+
+
+ans =
+
+     2     3     5
+
+
+pix =
+
+   710   602   719   648   504
+   527   167   488    78   610
+   598   437   175   542   152
+
+
+pix =
+
+   710   602   719   648   504
+   527   167   488    78   610
+   598   437   175   542   152
+
+</pre><h2>See also<a name="5"></a></h2><p>vec2pix, pix2ang, pix2vec</p><h2>Requires<a name="6"></a></h2><p>ring2nest</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% ang2pix
+% Convert spherical coordinate location to HEALPix pixel number
+
+%% Syntax
+%  pix = ang2pix(nSide, v);
+%  pix = ang2pix(nSide, v, nest);
+
+%% Input Arguments
+%  nSide      HEALPix resolution parameter
+%  v          (theta, phi) pairs in radians as either [2,n] or as cellarray
+%             of [2,1] 
+%  nest       (optional) nested pixel number scheme (true | {false})
+
+%% Return Arguments
+%  pix             array of pix numbers:
+%                 v on input     output
+%                 iscell(v)      size(v) cell array of pixel numbers
+%                 isnumeric(v)   size(v,1) numeric array of pixel numbers
+%
+% Note that Matlab numbers pixels from 1
+
+%% Example
+vTheta = acos(2*rand(3,5)-1);
+vPhi = 2*pi*rand(3,5);
+vc = arrayfun(@(x,y)([x;y]),vTheta,vPhi,'UniformOutput',false);
+va = reshape(cell2mat(vc),[2,3,5]);
+nSide = 8;
+size(vc)
+size(va)
+pix = ang2pix(nSide,vc)
+pix = ang2pix(nSide,va)
+
+%% See also
+% vec2pix, pix2ang, pix2vec
+
+%% Requires
+% ring2nest
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/ang2vec_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/ang2vec_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/ang2vec_help.html	(revision 27955)
@@ -0,0 +1,112 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>ang2vec</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="ang2vec_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>ang2vec</h1><!--introduction--><p>Convert from spherical to cartesian coordinates</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Example</a></li><li><a href="#5">See also</a></li></ul></div><h2>Syntax<a name="1"></a></h2><p>xyz = ang2vec(tp)</p><h2>Input Arguments<a name="2"></a></h2><pre>tp        cell of [2,1] angular locations (theta; phi)</pre><h2>Return Arguments<a name="3"></a></h2><pre>xyz       size(tp) celll array of [3,1] vectors</pre><h2>Example<a name="4"></a></h2><pre class="codeinput">tp = [acos(2*rand(1,12)-1); 2*pi*rand(1,12)];
+tp = mat2cell(tp,2,ones(12,1));
+tp = reshape(tp,3,4);
+xyz = ang2vec(tp);
+xyz{2,3}'
+tp23 = tp{2,3};
+[sin(tp23(1))*cos(tp23(2)),sin(tp23(1))*sin(tp23(2)),cos(tp23(1))]
+</pre><pre class="codeoutput">
+ans =
+
+   -0.1868    0.1304    0.9737
+
+
+ans =
+
+   -0.1868    0.1304    0.9737
+
+</pre><h2>See also<a name="5"></a></h2><p>vec2ang</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% ang2vec
+% Convert from spherical to cartesian coordinates
+
+%% Syntax
+% xyz = ang2vec(tp)
+
+%% Input Arguments
+%  tp        cell of [2,1] angular locations (theta; phi)
+
+%% Return Arguments
+%  xyz       size(tp) celll array of [3,1] vectors
+
+%% Example
+tp = [acos(2*rand(1,12)-1); 2*pi*rand(1,12)];
+tp = mat2cell(tp,2,ones(12,1));
+tp = reshape(tp,3,4);
+xyz = ang2vec(tp);
+xyz{2,3}'
+tp23 = tp{2,3};
+[sin(tp23(1))*cos(tp23(2)),sin(tp23(1))*sin(tp23(2)),cos(tp23(1))]
+
+%% See also
+% vec2ang
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/angDist_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/angDist_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/angDist_help.html	(revision 27955)
@@ -0,0 +1,158 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>angDist</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="angDist_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>angDist</h1><!--introduction--><p>Compute angular distance between pixel centers or points on the sphere</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Description</a></li><li><a href="#5">v0 or v1 specified as numeric arrays</a></li><li><a href="#6">pix0 or pix1 specified as cell arrays</a></li><li><a href="#7">Example</a></li><li><a href="#8">See also</a></li><li><a href="#9">Requires</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre> rad = angDist(v0,v1,'Param1',Value1,'Param2',Value2,...)</pre><h2>Input Arguments<a name="2"></a></h2><pre>v0, v1      (numerical or cell) array of points on sphere</pre><pre>Param       Value
+'nSide'     HEALPix resolution parameter (integer power 2)
+'nest'      nested indexing (true | {false})</pre><h2>Return Arguments<a name="3"></a></h2><pre> rad     array of angular distances (radians)</pre><h2>Description<a name="4"></a></h2><p>angDist computes the angular distances between points on the sphere. Points may be specified as MEALPix pixel numbers, spherical coordinate location vectors, or cartesian coordinate vectors. Cartesian coordinate input vectors need not be normalized.</p><p>Either or both of v0, v1  may be a scalar; otherwise they must both be the same size. When one is a scalar than the distance is computed between that point and all the points specified in the complementary argument. When pix0 and pix1 are arrays then the distances are returned between the corresponding points in the two arrays.</p><p>If any location is specified as a pixel number than nSide must be specified. The indexing scheme for pixels center locations defaults to ring; to specify nested indexing set the 'nest' parameter to true.</p><h2>v0 or v1 specified as numeric arrays<a name="5"></a></h2><p>If all points in v0 are pixel numbers then v0 may be specified as a numeric array (similarly v1, mutatis mundis). then nSide must be specified. Pixels numbers may be specified in ring indexing or nested indexing. For nested indexing the nest flag must be specified as true.</p><h2>pix0 or pix1 specified as cell arrays<a name="6"></a></h2><p>Either or both pix0 or pix1 may be specified as a cell array, in which case each cell specifies a location on the sphere as either a pixel number, a two-component ([theta; phi]) spherical coordinate vector, or a three component ([x;y;z]) cartesian vector. nSide must be specified if any location is identified as a pixel center.</p><h2>Example<a name="7"></a></h2><pre class="codeinput"> <span class="comment">% angular distance from pole to equator:</span>
+ v0 = {[0;0;1]}; <span class="comment">% north pole</span>
+ v1 = {[1;0;0]}; <span class="comment">% point on equator</span>
+ rad = angDist(v0, v1);
+
+ <span class="comment">% angular distance from pole to pixels 1, 17, 33 for nSide = 4:</span>
+ v0 = {[0;0;1]};
+ rad = angDist([1, 17, 33], v0, <span class="string">'nSide'</span>, 4)
+
+ <span class="comment">% angular distance from pixels 1 to 4, 2 to 5, and 3 to 6 for nSide = 8:</span>
+ rad = angDist([1, 2, 3], [4, 5, 6],<span class="string">'nSide'</span>,8)
+</pre><pre class="codeoutput">
+rad =
+
+    0.2045    0.6224    0.8411
+
+
+rad =
+
+    0.1443    0.2609    0.3013
+
+</pre><h2>See also<a name="8"></a></h2><p>queryDisc</p><h2>Requires<a name="9"></a></h2><p>pix2vec, ang2vec</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% angDist 
+% Compute angular distance between pixel centers or points on the sphere 
+
+%% Syntax
+%   rad = angDist(v0,v1,'Param1',Value1,'Param2',Value2,...)
+
+%% Input Arguments
+%  v0, v1      (numerical or cell) array of points on sphere
+%
+%  Param       Value
+%  'nSide'     HEALPix resolution parameter (integer power 2)
+%  'nest'      nested indexing (true | {false})
+
+%% Return Arguments
+%   rad     array of angular distances (radians)
+
+%% Description
+% angDist computes the angular distances between points on the sphere.
+% Points may be specified as MEALPix pixel numbers, spherical coordinate
+% location vectors, or cartesian coordinate vectors. Cartesian coordinate
+% input vectors need not be normalized. 
+%
+% Either or both of v0, v1  may be a scalar; otherwise they must both be
+% the same size. When one is a scalar than the distance is computed between
+% that point and all the points specified in the complementary argument.
+% When pix0 and pix1 are arrays then the distances are returned between the
+% corresponding points in the two arrays.
+%
+% If any location is specified as a pixel number than nSide must be
+% specified. The indexing scheme for pixels center locations defaults to
+% ring; to specify nested indexing set the 'nest' parameter to true. 
+
+%% v0 or v1 specified as numeric arrays
+% If all points in v0 are pixel numbers then v0 may be specified as a
+% numeric array (similarly v1, mutatis mundis). then nSide must be specified.
+% Pixels numbers may be specified in ring indexing or nested indexing. For
+% nested indexing the nest flag must be specified as true. 
+
+%% pix0 or pix1 specified as cell arrays
+% Either or both pix0 or pix1 may be specified as a cell array, in which
+% case each cell specifies a location on the sphere as either a pixel
+% number, a two-component ([theta; phi]) spherical coordinate vector, or a
+% three component ([x;y;z]) cartesian vector. nSide must be specified if
+% any location is identified as a pixel center. 
+
+%% Example
+ % angular distance from pole to equator:
+ v0 = {[0;0;1]}; % north pole
+ v1 = {[1;0;0]}; % point on equator
+ rad = angDist(v0, v1);
+ 
+ % angular distance from pole to pixels 1, 17, 33 for nSide = 4:
+ v0 = {[0;0;1]};
+ rad = angDist([1, 17, 33], v0, 'nSide', 4)
+
+ % angular distance from pixels 1 to 4, 2 to 5, and 3 to 6 for nSide = 8:
+ rad = angDist([1, 2, 3], [4, 5, 6],'nSide',8)
+
+%% See also
+% queryDisc
+
+%% Requires
+% pix2vec, ang2vec
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/corners_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/corners_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/corners_help.html	(revision 27955)
@@ -0,0 +1,163 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>corners</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="corners_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>corners</h1><!--introduction--><p>Find pixel corners</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Example:</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>xyz = corners(nSide,nPix,'Param1',Value1,...);</pre><h2>Input Arguments<a name="2"></a></h2><pre>nSide    HEALPix resolution parameter
+nPix     (optional) pixel list. Default all pixels.</pre><pre>Param    Value
+'nest'   nested indexing (true | {false})</pre><h2>Return Arguments<a name="3"></a></h2><pre>xyz    size(nPix) cell array of [3,1] cartesian vector pixel corner
+       locations</pre><h2>Example:<a name="4"></a></h2><pre class="codeinput">nSide = 2^2;
+<span class="comment">% Corners for all 48 nSide=4 pixels in ring-indexed order</span>
+xyzR = corners(nSide);
+size(xyzR)
+xyzR{1}
+xyzR{end-1}
+
+nPix = randi(nSide2nPix(nSide), 3, 4);
+<span class="comment">% Corners for an assortment of pixels in nested index order</span>
+xyzN = corners(nSide,nPix,<span class="string">'nest'</span>,true);
+<span class="comment">% Convert to pixel list to ring indexing</span>
+r = xyzR{nest2ring(nSide,nPix(2,3))}
+<span class="comment">% Corners for same pixels requested via ring indexing</span>
+n = xyzN{2,3}
+<span class="comment">% Compare</span>
+all(r == n)
+</pre><pre class="codeoutput">
+ans =
+
+     1   192
+
+
+ans =
+
+         0    0.2031    0.2826    0.0000
+         0         0    0.2826    0.2031
+    1.0000    0.9792    0.9167    0.9792
+
+
+ans =
+
+   -0.2826   -0.2031         0   -0.0000
+   -0.2826    0.0000         0   -0.2031
+   -0.9167   -0.9792   -1.0000   -0.9792
+
+
+r =
+
+    0.5478    0.7071    0.5478    0.3827
+    0.8198    0.7071    0.8198    0.9239
+    0.1667         0   -0.1667         0
+
+
+n =
+
+    0.5478    0.7071    0.5478    0.3827
+    0.8198    0.7071    0.8198    0.9239
+    0.1667         0   -0.1667         0
+
+
+ans =
+
+     1     1     1     1
+
+</pre><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% corners
+% Find pixel corners
+
+%% Syntax
+%  xyz = corners(nSide,nPix,'Param1',Value1,...);
+
+%% Input Arguments
+%  nSide    HEALPix resolution parameter
+%  nPix     (optional) pixel list. Default all pixels.
+%  
+%  Param    Value
+%  'nest'   nested indexing (true | {false})
+
+%% Return Arguments
+%  xyz    size(nPix) cell array of [3,1] cartesian vector pixel corner
+%         locations
+
+%% Example:
+nSide = 2^2;
+% Corners for all 48 nSide=4 pixels in ring-indexed order
+xyzR = corners(nSide);
+size(xyzR)
+xyzR{1} 
+xyzR{end-1}
+
+nPix = randi(nSide2nPix(nSide), 3, 4);
+% Corners for an assortment of pixels in nested index order
+xyzN = corners(nSide,nPix,'nest',true);
+% Convert to pixel list to ring indexing
+r = xyzR{nest2ring(nSide,nPix(2,3))}
+% Corners for same pixels requested via ring indexing
+n = xyzN{2,3}
+% Compare
+all(r == n)
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/helpfuncalpha.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/helpfuncalpha.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/helpfuncalpha.html	(revision 27955)
@@ -0,0 +1,100 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>Function Alphabetical List</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-03-02"><meta name="DC.source" content="helpfuncalpha.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>Function Alphabetical List</h1><!--introduction--><div><ul><li><a href="alm2pix_help.html">alm2pix</a>    - Evaluate spherical harmonic function expansion on HEALPix pixels</li><li><a href="alm2spec_help.html">alm2spec</a>   - valuate angular power spectral density</li><li><a href="ang2pix_help.html">ang2pix</a>    - Convert spherical coordinate location to HEALPix pixel number</li><li><a href="ang2vec_help.html">ang2vec</a>    - Convert from spherical to cartesian coordinates</li><li><a href="angDist_help.html">angDist</a>    - Computes angular distance on the unit sphere</li><li><a href="corners_help.html">corners</a>    - Find pixel corners</li><li><a href="hp3d_help.html">hp3d</a>       - Plots a HEALPix dataset on a 3D sphere</li><li><a href="hpStat_help.html">hpStat</a>     - Compute descriptive statistics of a pixel value list</li><li><a href="inRing_help.html">inRing</a>     - return pixels in ring or ring section</li><li><a href="nPix2nSide_help.html">nPix2nSide</a> - Convert number of pixels to number of facet side subdivisions</li><li><a href="nSide2nPix_help.html">nSide2nPix</a> - Convert resolution parameter to number of pixels</li><li><a href="nSide2res_help.html">nSide2res</a>  - Calculates angular resolution of a HEALPix map in arcsec</li><li><a href="nest2ring_help.html">nest2ring</a>  - Convert MEALPix pixel numbers from nest to ring indexing</li><li><a href="pix2alm_help.html">pix2alm</a>    - Find spherical harmonic decomposition of function on sphere</li><li><a href="pix2ang_help.html">pix2ang</a>    - Find spherical coordinate location of HEALPix pixels</li><li><a href="pix2vec_help.html">pix2vec</a>    - convert HEALPix pixel numbers to (x,y,z) unit vector</li><li><a href="pix2xy_help.html">pix2xy</a>     - Find pixel cartesian face coordinates</li><li><a href="queryDisc_help.html">queryDisc</a>  - Find all pixels whose centers are within a specified disc</li><li><a href="res2nSide_help.html">res2nSide</a>  - Finds minimum base pixel sub-division for required resolution</li><li><a href="ring2nest_help.html">ring2nest</a>  - Convert MEALPix pixel numbers from ring to nest indexing</li><li><a href="ring2z_help.html">ring2z</a>     - Find HEALPix ring number corresponding to a given z coordinate</li><li><a href="vec2ang_help.html">vec2ang</a>    - Convert cartesian direction vector to position angle on sphere</li><li><a href="vec2pix_help.html">vec2pix</a>    - Convert cartesian direction vectors to MEALPix pixel numbers</li><li><a href="xy2pix_help.html">xy2pix</a>     - Find pixel number from face and coordinates in face</li><li><a href="ylm_help.html">ylm</a>       - Return spherical harmonic basis function <img src="helpfuncalpha_eq71008.png" alt="$Y_L^M$"> on the HEALPix sphere</li><li><a href="z2ring_help.html">z2ring</a>     - Find HEALPix ring numbers from direction vector z coordinate</li></ul></div><!--/introduction--><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% Function Alphabetical List
+% * <alm2pix_help.html alm2pix>    - Evaluate spherical harmonic function expansion on HEALPix pixels
+% * <alm2spec_help.html alm2spec>   - valuate angular power spectral density
+% * <ang2pix_help.html ang2pix>    - Convert spherical coordinate location to HEALPix pixel number
+% * <ang2vec_help.html ang2vec>    - Convert from spherical to cartesian coordinates
+% * <angDist_help.html angDist>    - Computes angular distance on the unit sphere
+% * <corners_help.html corners>    - Find pixel corners
+% * <hp3d_help.html hp3d>       - Plots a HEALPix dataset on a 3D sphere
+% * <hpStat_help.html hpStat>     - Compute descriptive statistics of a pixel value list
+% * <inRing_help.html inRing>     - return pixels in ring or ring section
+% * <nPix2nSide_help.html nPix2nSide> - Convert number of pixels to number of facet side subdivisions
+% * <nSide2nPix_help.html nSide2nPix> - Convert resolution parameter to number of pixels
+% * <nSide2res_help.html nSide2res>  - Calculates angular resolution of a HEALPix map in arcsec 
+% * <nest2ring_help.html nest2ring>  - Convert MEALPix pixel numbers from nest to ring indexing
+% * <pix2alm_help.html pix2alm>    - Find spherical harmonic decomposition of function on sphere
+% * <pix2ang_help.html pix2ang>    - Find spherical coordinate location of HEALPix pixels
+% * <pix2vec_help.html pix2vec>    - convert HEALPix pixel numbers to (x,y,z) unit vector
+% * <pix2xy_help.html pix2xy>     - Find pixel cartesian face coordinates
+% * <queryDisc_help.html queryDisc>  - Find all pixels whose centers are within a specified disc
+% * <res2nSide_help.html res2nSide>  - Finds minimum base pixel sub-division for required resolution
+% * <ring2nest_help.html ring2nest>  - Convert MEALPix pixel numbers from ring to nest indexing
+% * <ring2z_help.html ring2z>     - Find HEALPix ring number corresponding to a given z coordinate
+% * <vec2ang_help.html vec2ang>    - Convert cartesian direction vector to position angle on sphere
+% * <vec2pix_help.html vec2pix>    - Convert cartesian direction vectors to MEALPix pixel numbers
+% * <xy2pix_help.html xy2pix>     - Find pixel number from face and coordinates in face
+% * <ylm_help.html ylm>       - Return spherical harmonic basis function $Y_L^M$ on the HEALPix sphere
+% * <z2ring_help.html z2ring>     - Find HEALPix ring numbers from direction vector z coordinate
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/helpfuncbycat.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/helpfuncbycat.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/helpfuncbycat.html	(revision 27955)
@@ -0,0 +1,119 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>Functions by Category</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-20"><meta name="DC.source" content="helpfuncbycat.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>Functions by Category</h1><!--introduction--><p>MEALPix Toolbox Version 3.0 21 February 2011</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Coordinate Conversions</a></li><li><a href="#2">Coordinate-Pixel Conversions</a></li><li><a href="#3">Functions on the sphere</a></li><li><a href="#4">Map Statistics</a></li><li><a href="#5">Pixel Indexing Conversions</a></li><li><a href="#6">Pixel Topology</a></li><li><a href="#7">Plotting</a></li><li><a href="#8">Resolution Relations</a></li></ul></div><h2>Coordinate Conversions<a name="1"></a></h2><div><ul><li><a href="ang2vec_help.html"><tt>ang2vec</tt></a>    - Convert from spherical to cartesian coordinates</li><li><a href="vec2ang_help.html"><tt>vec2ang</tt></a>    - Convert cartesian direction vector to position angle on sphere</li></ul></div><h2>Coordinate-Pixel Conversions<a name="2"></a></h2><div><ul><li><a href="ang2pix_help.html"><tt>ang2pix</tt></a>    - Convert spherical coordinate location to HEALPix pixel number</li><li><a href="pix2ang_help.html"><tt>pix2ang</tt></a>    - Find spherical coordinate location of HEALPix pixels</li><li><a href="pix2vec_help.html"><tt>pix2vec</tt></a>    - Convert HEALPix pixel numbers to (x,y,z) unit vector</li><li><a href="ring2z_help.html"><tt>ring2z</tt></a>     - Find HEALPix ring number corresponding to a given z coordinate</li><li><a href="vec2pix_help.html"><tt>vec2pix</tt></a>    - Convert cartesian direction vectors to MEALPix pixel numbers</li><li><a href="z2ring_help.html"><tt>z2ring</tt></a>     - Find HEALPix ring numbers from direction vector z coordinate</li></ul></div><h2>Functions on the sphere<a name="3"></a></h2><div><ul><li><a href="alm2pix_help.html"><tt>alm2pix</tt></a>    - Evaluate spherical harmonic function expansion on HEALPix pixels</li><li><a href="angDist_help.html"><tt>angDist</tt></a>    - Computes angular distance on the unit sphere</li><li><a href="pix2alm_help.html"><tt>pix2alm</tt></a>    - Find spherical harmonic decomposition of function on sphere</li><li><a href="ylm_help.html"><tt>ylm</tt></a>        - returns spherical harmonic basis <img src="helpfuncbycat_eq71008.png" alt="$Y_L^M$"> on the HEALPix sphere</li></ul></div><h2>Map Statistics<a name="4"></a></h2><div><ul><li><a href="alm2spec_help.html"><tt>alm2spec</tt></a>   - valuate angular power spectral density</li><li><a href="hpStat_help.html"><tt>hpStat</tt></a>     - Compute descriptive statistics of a pixel value list</li></ul></div><h2>Pixel Indexing Conversions<a name="5"></a></h2><div><ul><li><a href="nest2ring_help.html"><tt>nest2ring</tt></a>  - Convert MEALPix pixel numbers from nest to ring indexing</li><li><a href="ring2nest_help.html"><tt>ring2nest</tt></a>  - Convert MEALPix pixel numbers from ring to nest indexing</li></ul></div><h2>Pixel Topology<a name="6"></a></h2><div><ul><li><a href="corners_help.html"><tt>corners</tt></a>    - Find pixel corners</li><li><a href="inRing_help.html"><tt>inRing</tt></a>     - return pixels in ring or ring section</li><li><a href="pix2xy_help.html"><tt>pix2xy</tt></a>     - Find pixel cartesian face coordinates</li><li><a href="queryDisc_help.html"><tt>queryDisc</tt></a>  - Find all pixels whose centers are within a specified disc</li><li><a href="xy2pix_help.html"><tt>xy2pix</tt></a>     - gives the pixel number ipix (NESTED) of ix, iy and face_num</li></ul></div><h2>Plotting<a name="7"></a></h2><div><ul><li><a href="hp3d_help.html"><tt>hp3d</tt></a>       - Plots a HEALPix dataset on a 3D sphere</li></ul></div><h2>Resolution Relations<a name="8"></a></h2><div><ul><li><a href="nPix2nSide_help.html"><tt>nPix2nSide</tt></a> - Convert number of pixels to number of facet side subdivisions</li><li><a href="nSide2nPix_help.html"><tt>nSide2nPix</tt></a> - Convert resolution parameter to number of pixels</li><li><a href="nSide2res_help.html"><tt>nSide2res</tt></a>  - Calculates angular resolution of a HEALPix map in arcsec</li><li><a href="res2nSide_help.html"><tt>res2nSide</tt></a>  - Finds minimum base pixel sub-division for required resolution</li></ul></div><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% Functions by Category
+% MEALPix Toolbox
+% Version 3.0
+% 21 February 2011
+ 
+%% Coordinate Conversions
+% * <ang2vec_help.html |ang2vec|>    - Convert from spherical to cartesian coordinates
+% * <vec2ang_help.html |vec2ang|>    - Convert cartesian direction vector to position angle on sphere
+
+%% Coordinate-Pixel Conversions
+% * <ang2pix_help.html |ang2pix|>    - Convert spherical coordinate location to HEALPix pixel number
+% * <pix2ang_help.html |pix2ang|>    - Find spherical coordinate location of HEALPix pixels
+% * <pix2vec_help.html |pix2vec|>    - Convert HEALPix pixel numbers to (x,y,z) unit vector
+% * <ring2z_help.html |ring2z|>     - Find HEALPix ring number corresponding to a given z coordinate
+% * <vec2pix_help.html |vec2pix|>    - Convert cartesian direction vectors to MEALPix pixel numbers
+% * <z2ring_help.html |z2ring|>     - Find HEALPix ring numbers from direction vector z coordinate
+
+%% Functions on the sphere
+% * <alm2pix_help.html |alm2pix|>    - Evaluate spherical harmonic function expansion on HEALPix pixels
+% * <angDist_help.html |angDist|>    - Computes angular distance on the unit sphere
+% * <pix2alm_help.html |pix2alm|>    - Find spherical harmonic decomposition of function on sphere
+% * <ylm_help.html |ylm|>        - returns spherical harmonic basis $Y_L^M$ on the HEALPix sphere
+
+%% Map Statistics
+% * <alm2spec_help.html |alm2spec|>   - valuate angular power spectral density
+% * <hpStat_help.html |hpStat|>     - Compute descriptive statistics of a pixel value list
+
+%% Pixel Indexing Conversions
+% * <nest2ring_help.html |nest2ring|>  - Convert MEALPix pixel numbers from nest to ring indexing
+% * <ring2nest_help.html |ring2nest|>  - Convert MEALPix pixel numbers from ring to nest indexing
+
+%% Pixel Topology
+% * <corners_help.html |corners|>    - Find pixel corners
+% * <inRing_help.html |inRing|>     - return pixels in ring or ring section
+% * <pix2xy_help.html |pix2xy|>     - Find pixel cartesian face coordinates
+% * <queryDisc_help.html |queryDisc|>  - Find all pixels whose centers are within a specified disc
+% * <xy2pix_help.html |xy2pix|>     - gives the pixel number ipix (NESTED) of ix, iy and face_num
+
+%% Plotting
+% * <hp3d_help.html |hp3d|>       - Plots a HEALPix dataset on a 3D sphere
+
+%% Resolution Relations
+% * <nPix2nSide_help.html |nPix2nSide|> - Convert number of pixels to number of facet side subdivisions
+% * <nSide2nPix_help.html |nSide2nPix|> - Convert resolution parameter to number of pixels
+% * <nSide2res_help.html |nSide2res|>  - Calculates angular resolution of a HEALPix map in arcsec 
+% * <res2nSide_help.html |res2nSide|>  - Finds minimum base pixel sub-division for required resolution
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/hp3d_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/hp3d_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/hp3d_help.html	(revision 27955)
@@ -0,0 +1,102 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>hp3d</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="hp3d_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>hp3d</h1><!--introduction--><p>Plot a HEALPix dataset on a 3D sphere</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Description</a></li><li><a href="#5">Example</a></li><li><a href="#6">Requires</a></li></ul></div><h2>Syntax<a name="1"></a></h2><p>h = hp3d(vPix,'Param1',Value1,'Param2',Value2,...);</p><h2>Input Arguments<a name="2"></a></h2><pre>vPix   vector of values at HEALPix pixels</pre><pre>Param      Value
+'nest'     vPix in nest index order (true | {false})</pre><h2>Return Arguments<a name="3"></a></h2><pre>h      (optional) array of patch handles for the sphere</pre><h2>Description<a name="4"></a></h2><p>Let <img src="hp3d_help_eq85998.png" alt="$f$"> be a (real-valued) function on the sphere and vPix be a vector of function values at pixel <img src="hp3d_help_eq86607.png" alt="$k$">, <img src="hp3d_help_eq76767.png" alt="$k=1\ldots12n_{\textrm{side}}^2$">. hp3d(vPix,'nest',nest) plots the function on a sphere. The parameter nest indicates whether the values vPix are given in nested index order (true) or ring index order (false and default).</p><h2>Example<a name="5"></a></h2><p>plot nested pixel numbers on a sphere</p><pre class="codeinput">hp3d(1:768,<span class="string">'nest'</span>,true);
+</pre><img vspace="5" hspace="5" src="hp3d_help_01.png" alt=""> <h2>Requires<a name="6"></a></h2><p>corners, nPix2nSide</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% hp3d 
+% Plot a HEALPix dataset on a 3D sphere
+
+%% Syntax
+% h = hp3d(vPix,'Param1',Value1,'Param2',Value2,...);
+
+%% Input Arguments
+%  vPix   vector of values at HEALPix pixels
+%
+%  Param      Value
+%  'nest'     vPix in nest index order (true | {false})
+
+%% Return Arguments
+%  h      (optional) array of patch handles for the sphere
+
+%% Description
+% Let $f$ be a (real-valued) function on the sphere and vPix be a vector of
+% function values at pixel $k$, $k=1\ldots12n_{\textrm{side}}^2$.
+% hp3d(vPix,'nest',nest) plots the function on a sphere. The parameter nest
+% indicates whether the values vPix are given in nested index order (true)
+% or ring index order (false and default). 
+
+%% Example
+% plot nested pixel numbers on a sphere
+hp3d(1:768,'nest',true);
+
+%% Requires
+% corners, nPix2nSide
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/hpStat_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/hpStat_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/hpStat_help.html	(revision 27955)
@@ -0,0 +1,126 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>hpStat</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="hpStat_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>hpStat</h1><!--introduction--><p>Compute descriptive statistics of a pixel value list</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Output Arguments</a></li><li><a href="#4">Example</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>stats = hpStat(v)</pre><h2>Input Arguments<a name="2"></a></h2><pre>v         array of HEALPix pixel values</pre><h2>Output Arguments<a name="3"></a></h2><pre>stats     struct
+          field     contents
+          ntot      total number of data points
+          nvalid    number n of valid data points
+          mind      minimum of valid data
+          maxd      maximum of valid data
+          average   average of valid points
+          absdev    absolute deviation
+          var       variance
+          stddev    standard deviation
+          skew      skewness factor
+          kurt      kurtosis factor</pre><h2>Example<a name="4"></a></h2><p>display stats of Y_3^1</p><pre class="codeinput">v = ylm(32,3,1,<span class="string">'real'</span>,true);
+stats = hpStat(abs(v))
+</pre><pre class="codeoutput">
+stats = 
+
+      ntot: 12288
+    nValid: 12288
+      mind: 1.0813e-18
+      maxd: 0.6289
+      mean: 0.2272
+    absdev: 0.1421
+       var: 0.0280
+    stddev: 0.1673
+      skew: 0.5111
+      kurt: 2.2410
+
+</pre><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% hpStat 
+% Compute descriptive statistics of a pixel value list
+
+%% Syntax
+%  stats = hpStat(v)
+
+%% Input Arguments
+%  v         array of HEALPix pixel values
+
+%% Output Arguments
+%  stats     struct
+%            field     contents
+%            ntot      total number of data points
+%            nvalid    number n of valid data points
+%            mind      minimum of valid data
+%            maxd      maximum of valid data
+%            average   average of valid points
+%            absdev    absolute deviation
+%            var       variance
+%            stddev    standard deviation
+%            skew      skewness factor
+%            kurt      kurtosis factor
+
+%% Example
+% display stats of Y_3^1
+v = ylm(32,3,1,'real',true);
+stats = hpStat(abs(v))
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/inRing_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/inRing_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/inRing_help.html	(revision 27955)
@@ -0,0 +1,189 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>inRing</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="inRing_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>inRing</h1><!--introduction--><p>Return list of pixels in a ring or ring section</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Description</a></li><li><a href="#5">Example</a></li><li><a href="#6">See also</a></li><li><a href="#7">Requires</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>pixList = inRing(nSide, nRing, phi0, dPhi, 'Param1', Value1, ...);</pre><h2>Input Arguments<a name="2"></a></h2><pre>nSide       HEALPix resolution parameter
+nRing       Ring number (1 &lt;= nRing &lt;= 4*nSide-1)
+phi0, dPhi  (optional) Ring section longitudes [phi-dPhi,phi+dPhi]</pre><pre>Param       Value
+'nest'      return pixels with nested indexing (true | {false})
+'strict'    return only pixels whose center is in longitude range
+            (true | {false})</pre><h2>Return Arguments<a name="3"></a></h2><pre>pixList     size(nRing) cell array of pixels in ring defined by nRing,
+            phi0, dPhi</pre><h2>Description<a name="4"></a></h2><pre>nRing may be a numeric array, in which case phi0, dPhi and nest may each
+be either scalar or a size(nRing) array. If strict is false (default)
+then all pixels intersected by longitude range are included in pixList.</pre><h2>Example<a name="5"></a></h2><pre class="codeinput"><span class="comment">% All pixels in ring 2 of nSide = 4 pixelization (ring indexed)</span>
+pix = inRing(4,2);
+pix{:}
+
+<span class="comment">% Same, but nested indexing</span>
+pix = inRing(4,2,<span class="string">'nest'</span>,true);
+pix{:}
+nest2ring(4,pix{:})
+
+<span class="comment">% Pixels in rings [2,4;8,10;12,14] and the longitude band</span>
+<span class="comment">% [7*pi/4,9*pi/4]</span>
+nRing = [2,3;5,12;13,14];
+pix = inRing(4,nRing,2*pi,pi/4);
+pix{1}
+pix{end}
+
+<span class="comment">% Same, with strict selection</span>
+pix = inRing(4,nRing,2*pi,pi/4,<span class="string">'strict'</span>,true);
+pix{1}
+pix{end}
+</pre><pre class="codeoutput">
+ans =
+
+     5     6     7     8     9    10    11    12
+
+
+ans =
+
+    65    16    15    32    31    48    47    64
+
+
+ans =
+
+   137     1     5     2     7     3     9     4
+
+
+ans =
+
+    12     5     6
+
+
+ans =
+
+   188   181   182
+
+
+ans =
+
+    12     5
+
+
+ans =
+
+   188   181
+
+</pre><h2>See also<a name="6"></a></h2><p>ringNum</p><h2>Requires<a name="7"></a></h2><p>ring2z, pix2vec</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% inRing 
+% Return list of pixels in a ring or ring section
+
+%% Syntax
+%  pixList = inRing(nSide, nRing, phi0, dPhi, 'Param1', Value1, ...);
+
+%% Input Arguments
+%  nSide       HEALPix resolution parameter
+%  nRing       Ring number (1 <= nRing <= 4*nSide-1)
+%  phi0, dPhi  (optional) Ring section longitudes [phi-dPhi,phi+dPhi]
+%
+%  Param       Value
+%  'nest'      return pixels with nested indexing (true | {false})
+%  'strict'    return only pixels whose center is in longitude range
+%              (true | {false})
+
+%% Return Arguments
+%  pixList     size(nRing) cell array of pixels in ring defined by nRing,
+%              phi0, dPhi
+
+%% Description
+%  nRing may be a numeric array, in which case phi0, dPhi and nest may each
+%  be either scalar or a size(nRing) array. If strict is false (default)
+%  then all pixels intersected by longitude range are included in pixList.
+
+%% Example
+
+% All pixels in ring 2 of nSide = 4 pixelization (ring indexed)
+pix = inRing(4,2);
+pix{:}
+
+% Same, but nested indexing
+pix = inRing(4,2,'nest',true);
+pix{:}
+nest2ring(4,pix{:})
+
+% Pixels in rings [2,4;8,10;12,14] and the longitude band
+% [7*pi/4,9*pi/4] 
+nRing = [2,3;5,12;13,14];
+pix = inRing(4,nRing,2*pi,pi/4);
+pix{1}
+pix{end}
+
+% Same, with strict selection
+pix = inRing(4,nRing,2*pi,pi/4,'strict',true);
+pix{1}
+pix{end}
+
+
+%% See also 
+% ringNum
+
+%% Requires 
+% ring2z, pix2vec
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_bugreport.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_bugreport.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_bugreport.html	(revision 27955)
@@ -0,0 +1,79 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>Reporting bugs</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="mealpix_bugreport.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>Reporting bugs</h1><!--introduction--><p>MEALPix software distributed on an "as is" basis, without warranties or conditions of any kind, and without promise of support. Nevertheless, the <a href="http://gwastro.org">Gravitational Wave Astronomy Group</a> makes extensive use of MEALPix and welcomes any and all bug reports via e-mail to our request-tracking system <a href="mailto:rt-mealpix@gwastro.org">rt-mealpix@gwastro.org</a>. Bugs reports will be investigated and addressed on a best effort basis.</p><!--/introduction--><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% Reporting bugs
+% MEALPix software distributed on an "as is" basis, without warranties
+% or conditions of any kind, and without promise of support. Nevertheless,
+% the <http://gwastro.org Gravitational Wave Astronomy Group> makes
+% extensive use of MEALPix and welcomes any and all bug reports via e-mail
+% to our request-tracking system rt-mealpix@gwastro.org. Bugs reports
+% will be investigated and addressed on a best effort basis.
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_gs_top.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_gs_top.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_gs_top.html	(revision 27955)
@@ -0,0 +1,80 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>Getting Started with MEALPix</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="mealpix_gs_top.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>Getting Started with MEALPix</h1><!--introduction--><div><ul><li><a href="mealpix_overview.html">Product Overview</a></li><li><a href="mealpix_reqts.html">System Requirements</a></li><li><a href="mealpix_install.html">Installation</a></li><li><a href="mealpix_healpix.html">MEALPix for the HEALPix User</a></li><li><a href="mealpix_bugreport.html">Reporting MEALPix Problems</a></li><li><a href="mealpix_references.html">References</a></li><li><a href="mealpix_notices.html">Notices</a></li></ul></div><!--/introduction--><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% Getting Started with MEALPix
+% * <mealpix_overview.html Product Overview>
+% * <mealpix_reqts.html System Requirements>
+% * <mealpix_install.html Installation>
+% * <mealpix_healpix.html MEALPix for the HEALPix User>
+% * <mealpix_bugreport.html Reporting MEALPix Problems>
+% * <mealpix_references.html References>
+% * <mealpix_notices.html Notices>
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_healpix.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_healpix.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_healpix.html	(revision 27955)
@@ -0,0 +1,90 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>MEALPix for the HEALPix User</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="mealpix_healpix.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>MEALPix for the HEALPix User</h1><!--introduction--><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">MEALPix function names are derived from their HEALPix counterparts.</a></li><li><a href="#2">MEALPix functions accept array arguments</a></li><li><a href="#3">MEALPix indexes pixels from 1</a></li></ul></div><h2>MEALPix function names are derived from their HEALPix counterparts.<a name="1"></a></h2><p>MEALPix functions are typically camel-cased (e.g., <a href="angDist_help.html"><tt>angDist</tt></a>, or <a href="nSide2nPix_help.html"><tt>nSide2nPix</tt></a>). Underscores in HEALPix names are dropped in the conversion to MEALPix names.</p><h2>MEALPix functions accept array arguments<a name="2"></a></h2><p>MEALPix functions exploit Matlab(tm)'s vectorization facilities to allow for the processing of arrays of pixels, direction vectors and position angle vectors via a single function call. For example, the MEALPix implementation of <a href="angDist_help.html"><tt>angDist</tt></a> accepts mixed arrays of cartesian direction vectors, angular position vectors, and ring or nest indexed pixels for either argument.</p><h2>MEALPix indexes pixels from 1<a name="3"></a></h2><p>HEALPix pixels are indexed from 0. In keeping with the Matlab standard MEALPix pixels are indexed from 1. MEALPix pixels are indexed from 1: i.e., MEALPix pixel number n corresponds to HEALPix pixel number n-1.</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% MEALPix for the HEALPix User
+%% MEALPix function names are derived from their HEALPix counterparts.
+% MEALPix functions are typically camel-cased (e.g., <angDist_help.html
+% |angDist|>, or <nSide2nPix_help.html |nSide2nPix|>). Underscores in HEALPix
+% names are dropped in the conversion to MEALPix names. 
+
+%% MEALPix functions accept array arguments
+% MEALPix functions exploit Matlab(tm)'s vectorization facilities to
+% allow for the processing of arrays of pixels, direction vectors and
+% position angle vectors via a single function call. For example, the
+% MEALPix implementation of <angDist_help.html |angDist|> accepts mixed arrays of
+% cartesian direction vectors, angular position vectors, and ring or nest
+% indexed pixels for either argument.  
+
+%% MEALPix indexes pixels from 1
+% HEALPix pixels are indexed from 0. In keeping with the Matlab standard
+% MEALPix pixels are indexed from 1. MEALPix pixels are indexed from 1:
+% i.e., MEALPix pixel number n corresponds to HEALPix pixel number n-1.  
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_install.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_install.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_install.html	(revision 27955)
@@ -0,0 +1,85 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>Installation</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="mealpix_install.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>Installation</h1><!--introduction--><div><ul><li>Download MEALPix, which is provided as a gzipped tar file. Un-tar the file and place the MEALPix directory in some appropriate location. Hereafter we will refer to the fully-qualified path to MEALPix as <tt>$MEALPIX</tt>.</li></ul></div><div><ul><li>Add the MEALPix directory tree to your Matlab&#8482; path using, e.g., the Matlab&#8482; command <tt>addpath(genpath('$MEALPIX'))</tt>. You may wish to add this command to your matlab/startup.m file, in which case MEALPix will be available whenever you start-up Matlab&#8482;.</li></ul></div><p>The MEALPix Toolbox includes documentation that will appear in the Matlab Documentation browser when Matlab&#8482; starts-up with MEALPix in its path.</p><!--/introduction--><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% Installation
+% * Download MEALPix, which is provided as a gzipped tar file. Un-tar the
+% file and place the MEALPix directory in some appropriate location.
+% Hereafter we will refer to the fully-qualified path to MEALPix as
+% |$MEALPIX|. 
+%
+% * Add the MEALPix directory tree to your Matlab(TM) path using, e.g., the
+% Matlab(TM) command |addpath(genpath('$MEALPIX'))|. You may wish to add
+% this command to your matlab/startup.m file, in which case MEALPix will be
+% available whenever you start-up Matlab(TM). 
+%
+% The MEALPix Toolbox includes documentation that will appear in the Matlab
+% Documentation browser when Matlab(TM) starts-up with MEALPix in its path. 
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_notices.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_notices.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_notices.html	(revision 27955)
@@ -0,0 +1,86 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>Notices</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="mealpix_notices.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>Notices</h1><p>MEALPix is based on HEALPix. HEALPix is distributed under the terms of the <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public License</a> ("GPL") as published by the Free Software Foundation; either version 2 of the GPL, or (at your option) any later version.</p><p>This Matlab&#8482; expression of HEALPix is Copyright 2010-2011 by Lee Samuel Finn. It is licensed under the Apache License, Version 2.0 (the "License"); you may not use MEALPix except in compliance with the License. You may obtain a copy of the License at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></p><p>Unless required by applicable law or agreed to in writing, MEALPix 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.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% Notices
+% MEALPix is based on HEALPix. HEALPix is distributed under the terms of
+% the <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU General
+% Public License> ("GPL") as published by the Free Software Foundation;
+% either version 2 of the GPL, or (at your option) any later version.  
+%
+% This Matlab(TM) expression of HEALPix is Copyright 2010-2011 by Lee
+% Samuel Finn. It is licensed under the Apache License, Version 2.0 (the 
+% "License"); you may not use MEALPix 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, MEALPix
+% 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.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_overview.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_overview.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_overview.html	(revision 27955)
@@ -0,0 +1,101 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>Product Overview</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="mealpix_overview.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>Product Overview</h1><!--introduction--><p>MEALPix is a native Matlab implementation of a substantial subset of the <a href="http://healpix.jpl.nasa.gov/">HEALPix</a> subroutine library. It supports the fast and accurate statistical and astrophysical analysis of massive full-sky data sets. HEALPix is supported by NASA and ESO, used extensively by the WMAP and PLANCK missions, and is part of the official FITS World Coordinate System.</p><p>MEALPix provides fully vectorized functions for</p><div><ul><li>Conversion between position angles, cartesian direction vectors, and HEALPix ring and nest pixel indexing schemes;</li></ul></div><div><ul><li>Spherical harmonic resolution and analysis of functions on the sphere;</li></ul></div><div><ul><li>Nearest pixel identification (pixels within a given disc, pixels in a ring, pixels in a HEALPix face).</li></ul></div><p>MEALPix was created from the Fortran90 implementation <a href="http://healpix.jpl.nasa.gov">HEALPix</a> via a combination of hand coding and machine assisted conversion of the HEALPix F90 source code. Some routines were hand-coded based on the documented functionality of the F90 subroutines on which they were based. Other routines were hand-coded via inspection of the HEALPix F90 implementation source. Still other routines were machine converted from F90 to Matlab&#8482; using <a href="http://www.mathworks.com/matlabcentral/fileexchange/5260">f2matlab</a>. In this latter case the resulting Matlab&#8482; source was then hand-modified to vectorize the computations and take advantage of Matlab&#8482; data types and other functions.</p><!--/introduction--><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% Product Overview
+% MEALPix is a native Matlab implementation of a substantial subset of the 
+% <http://healpix.jpl.nasa.gov/ HEALPix> subroutine library. It supports
+% the fast and accurate statistical and astrophysical analysis of massive
+% full-sky data sets. HEALPix is supported by NASA and ESO, used
+% extensively by the WMAP and PLANCK missions, and is part of the official 
+% FITS World Coordinate System.
+%
+% MEALPix provides fully vectorized functions for 
+%
+% * Conversion between position angles, cartesian direction vectors, and
+% HEALPix ring and nest pixel indexing schemes; 
+%
+% * Spherical harmonic resolution and analysis of functions on the sphere; 
+%
+% * Nearest pixel identification (pixels within a given disc, pixels in a
+% ring, pixels in a HEALPix face). 
+%
+% MEALPix was created from the Fortran90 implementation
+% <http://healpix.jpl.nasa.gov HEALPix> via a combination of hand coding
+% and machine assisted conversion of the HEALPix F90 source code. Some
+% routines were hand-coded based on the documented functionality of the F90
+% subroutines on which they were based. Other routines were hand-coded via
+% inspection of the HEALPix F90 implementation source. Still other routines
+% were machine converted from F90 to Matlab(TM) using
+% <http://www.mathworks.com/matlabcentral/fileexchange/5260 f2matlab>. In
+% this latter case the resulting Matlab(TM) source was then hand-modified
+% to vectorize the computations and take advantage of Matlab(TM) data types
+% and other functions.
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_product_page.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_product_page.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_product_page.html	(revision 27955)
@@ -0,0 +1,100 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>mealpix_product_page</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="mealpix_product_page.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1></h1><!--introduction--><p>
+<img src=images/logo.jpg alt="Gravitational Wave Astronomy Group Logo"
+width=100%>
+<h1>MEALPix Toolbox</h1>
+</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#2">Functions</a></li><li><a href="#3">Getting Started</a></li></ul></div><p>The MEALPix Toolbox is a native Matlab&#8482; implementation of the Hierarchical Equal Area isoLatitude Pixelization of the sphere (HEALPix). It is derived from the <a href="http://healpix.jpl.nasa.gov">HEALPix</a> package, originally developed by ESO and currently supported by JPL and ESO.</p><h2>Functions<a name="2"></a></h2><div><ul><li><a href="helpfuncbycat.html">By Category</a></li><li><a href="helpfuncalpha.html">Alphabetical List</a></li></ul></div><h2>Getting Started<a name="3"></a></h2><div><ul><li><a href="mealpix_overview.html">Product Overview</a></li><li><a href="mealpix_reqts.html">Requirements</a></li><li><a href="mealpix_install.html">Installation</a></li><li><a href="mealpix_healpix.html">MEALPix for the HEALPix user</a></li><li><a href="mealpix_references.html">References</a></li><li><a href="mealpix_notices.html">Notices</a></li></ul></div><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%%
+% <html>
+% <img src=images/logo.jpg alt="Gravitational Wave Astronomy Group Logo"
+% width=100%> 
+% <h1>MEALPix Toolbox</h1>
+% </html>
+
+%%
+% The MEALPix Toolbox is a native Matlab(TM) implementation of the
+% Hierarchical Equal Area isoLatitude Pixelization of the sphere (HEALPix).
+% It is derived from the <http://healpix.jpl.nasa.gov HEALPix> package,
+% originally developed by ESO and currently supported by JPL and ESO. 
+
+%% Functions
+% * <helpfuncbycat.html By Category>
+% * <helpfuncalpha.html Alphabetical List>
+
+%% Getting Started
+% * <mealpix_overview.html Product Overview>
+% * <mealpix_reqts.html Requirements>
+% * <mealpix_install.html Installation>
+% * <mealpix_healpix.html MEALPix for the HEALPix user>
+% * <mealpix_references.html References>
+% * <mealpix_notices.html Notices>
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_references.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_references.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_references.html	(revision 27955)
@@ -0,0 +1,102 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>References</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="mealpix_references.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>References</h1><!--introduction--><p>K. M. Gorski et al. 2005.  <a href="http://dx.doi.org/10.1086/427976">HEALPix: A Framework for High-Resolution Discretization and Fast Analysis of Data Distributed on the Sphere</a>. The Astrophysical Journal 622 759</p><p>K. M. Gorski et al. 1999. <a href="http://arxiv.org/abs/astro-ph/9905275">The HEALPix Primer</a>. arXiv:astro-ph/9905275</p><p>K. M. Gorski et al. 2002. <a href="http://articles.adsabs.harvard.edu/cgi-bin/nph-iarticle_query?2002ASPC..281..107G&amp;amp;data_type=PDF_HIGH&amp;amp;whole_paper=YES&amp;amp;type=PRINTER&amp;amp;filetype=.pdf">HEALPix - a Framework for High Resolution, Fast Analysis on the Sphere</a>. In Astronomical Data Analysis Software and Systems XI, Bohlender, D. A. et al. ed.  ASP Conference Series Vol 281, pp. 107-111</p><p>Mark R. Calabrettal and Boudewijn F. Roukema. 2007. <a href="http://dx.doi.org/10.1111/j.1365-2966.2007.12297.x">Mapping on the HEALPix grid</a>. Monthly Notices of the Royal Astronomical Society 381:2 pp. 865 - 872.</p><p>W. O'Mullane et al. 2001. <a href="http://dx.doi.org/10.1007/10849171_84">Splitting the Sky - HTM and HEALPix</a>. In Mining The Sky. Anthony Banday et al., Ed. Anthony ESO Astrophysics  Symposia 2001, 638 - 648.</p><p>L. Nicastro and Calderone, G. 2008. <a href="http://aspbooks.org/custom/publications/paper/394-0487.html">Indexing Astronomical Database Tables using HTM and HEALPix</a>. In Astronomical Data Analysis Software and Systems (ADASS) XVII. A. W. Argle et. al, ed. Astronomical Society of the Pacific Conference Series vol. 394 pp. 486-490.</p><!--/introduction--><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% References
+% K. M. Gorski et al. 2005.  <http://dx.doi.org/10.1086/427976 
+% HEALPix: A Framework for High-Resolution Discretization and Fast Analysis
+% of Data Distributed on the Sphere>. The Astrophysical Journal 622 759
+%
+% K. M. Gorski et al. 1999. <http://arxiv.org/abs/astro-ph/9905275 The
+% HEALPix Primer>. arXiv:astro-ph/9905275
+% 
+% K. M. Gorski et al. 2002.
+% <http://articles.adsabs.harvard.edu/cgi-bin/nph-iarticle_query?2002ASPC..281..107G&amp;data_type=PDF_HIGH&amp;whole_paper=YES&amp;type=PRINTER&amp;filetype=.pdf
+% HEALPix - a Framework for High Resolution, Fast Analysis on the Sphere>.
+% In Astronomical Data Analysis Software and Systems XI, Bohlender, D. A.
+% et al. ed.  ASP Conference Series Vol 281, pp. 107-111
+%
+% Mark R. Calabrettal and Boudewijn F. Roukema. 2007. 
+% <http://dx.doi.org/10.1111/j.1365-2966.2007.12297.x Mapping on the
+% HEALPix grid>. Monthly Notices of the Royal Astronomical Society 381:2
+% pp. 865 - 872. 
+%
+% W. O'Mullane et al. 2001. <http://dx.doi.org/10.1007/10849171_84
+% Splitting the Sky - HTM and HEALPix>. In Mining The Sky. Anthony Banday
+% et al., Ed. Anthony ESO Astrophysics  Symposia 2001, 638 - 648. 
+%
+% L. Nicastro and Calderone, G. 2008. 
+% <http://aspbooks.org/custom/publications/paper/394-0487.html Indexing
+% Astronomical Database Tables using HTM and HEALPix>. In Astronomical Data
+% Analysis Software and Systems (ADASS) XVII. A. W. Argle et. al, ed.
+% Astronomical Society of the Pacific Conference Series vol. 394 pp.
+% 486-490.   
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_reqts.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_reqts.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/mealpix_reqts.html	(revision 27955)
@@ -0,0 +1,93 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>System Requirements</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="mealpix_reqts.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>System Requirements</h1><!--introduction--><p>MEALPix is a native Matlab&#8482; implementation of HEALPix: neither a HEALPix installation nor any third-party java or mex files are required to make use of the basic HEALPix functionality.</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Matlab&#8482; requirements</a></li><li><a href="#2">Third-party software requirements</a></li></ul></div><h2>Matlab&#8482; requirements<a name="1"></a></h2><p>MEALPix was developed and tested using Matlab&#8482; R2010a. It should work with any later version.</p><p>MEALPix does not require any Mathworks&#8482; Toolboxes or add-ons. MEALPix will make use of the capabilities of the <a href="http://www.mathworks.com/products/parallel-computing/">Parallel Computing Toolbox</a>, should it be present.</p><h2>Third-party software requirements<a name="2"></a></h2><p>MEALPix also includes functions not found in HEALPix. Some of these additional functions require other toolboxes:</p><div><ul><li><a href="hammer_help.html"><tt>hammer</tt></a> requires the <a href="http://www.eos.ubc.ca/~rich/map.html">M_MAP</a> Toolbox.</li></ul></div><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% System Requirements
+% MEALPix is a native Matlab(TM) implementation of HEALPix: neither a
+% HEALPix installation nor any third-party java or mex files are required
+% to make use of the basic HEALPix functionality. 
+
+%% Matlab(TM) requirements
+% MEALPix was developed and tested using Matlab(TM) R2010a. It should work
+% with any later version. 
+%
+% MEALPix does not require any Mathworks(TM) Toolboxes or add-ons. MEALPix
+% will make use of the capabilities of the
+% <http://www.mathworks.com/products/parallel-computing/ Parallel Computing
+% Toolbox>, should it be present.  
+
+%% Third-party software requirements
+% MEALPix also includes functions not found in HEALPix. Some of these
+% additional functions require other toolboxes: 
+%
+% * <hammer_help.html |hammer|> requires the
+% <http://www.eos.ubc.ca/~rich/map.html M_MAP> Toolbox. 
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/nPix2nSide_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/nPix2nSide_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/nPix2nSide_help.html	(revision 27955)
@@ -0,0 +1,98 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>nPix2nSide</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="nPix2nSide_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>nPix2nSide</h1><!--introduction--><p>Finds number of HEALPix facet side subdivisions from number of pixels on sphere</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Example</a></li><li><a href="#5">See also</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>nSide = nPix2nSide(nPix);</pre><h2>Input Arguments<a name="2"></a></h2><pre>nPix     number of pixels on sphere</pre><h2>Return Arguments<a name="3"></a></h2><pre>nSide    sub-divisions of HEALPix facet side</pre><h2>Example<a name="4"></a></h2><pre class="codeinput">nPix = 12*[1:4].^2;
+nSide = nPix2nSide(nPix)
+</pre><pre class="codeoutput">
+nSide =
+
+     1     2     3     4
+
+</pre><h2>See also<a name="5"></a></h2><p>nSide2nPix</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% nPix2nSide 
+% Finds number of HEALPix facet side subdivisions from number of pixels on
+% sphere
+
+%% Syntax
+%  nSide = nPix2nSide(nPix);
+
+%% Input Arguments
+%  nPix     number of pixels on sphere
+
+%% Return Arguments
+%  nSide    sub-divisions of HEALPix facet side
+
+%% Example
+nPix = 12*[1:4].^2;
+nSide = nPix2nSide(nPix)
+
+%% See also
+% nSide2nPix
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/nSide2nPix_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/nSide2nPix_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/nSide2nPix_help.html	(revision 27955)
@@ -0,0 +1,101 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>nSide2nPix</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="nSide2nPix_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>nSide2nPix</h1><!--introduction--><p>Convert HEALPix resolution parameter to number of pixels on sphere</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Description</a></li><li><a href="#5">Example</a></li><li><a href="#6">See also</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>nPix = nSide2nPix(nSide)</pre><h2>Input Arguments<a name="2"></a></h2><pre>nSide    sub-divisions of facet sides. May be an array.</pre><h2>Return Arguments<a name="3"></a></h2><pre>nPix     size(nSide) number of pixels on sphere corresponding to nSide</pre><h2>Description<a name="4"></a></h2><p>HEALPix divides the sphere into 12 basic facets. Each facet is further divided into nSide sub-divisions for a total of 12*nSide^2 pixels.</p><h2>Example<a name="5"></a></h2><pre class="codeinput">nSide = 2.^[1:4];
+nPix = nSide2nPix(nSide)
+</pre><pre class="codeoutput">
+nPix =
+
+          48         192         768        3072
+
+</pre><h2>See also<a name="6"></a></h2><p>nPix2nSide</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% nSide2nPix
+% Convert HEALPix resolution parameter to number of pixels on sphere
+
+%% Syntax
+%  nPix = nSide2nPix(nSide)
+
+%% Input Arguments
+%  nSide    sub-divisions of facet sides. May be an array. 
+
+%% Return Arguments
+%  nPix     size(nSide) number of pixels on sphere corresponding to nSide
+
+%% Description
+% HEALPix divides the sphere into 12 basic facets. Each facet is further
+% divided into nSide sub-divisions for a total of 12*nSide^2 pixels. 
+
+%% Example
+nSide = 2.^[1:4];
+nPix = nSide2nPix(nSide)
+
+%% See also
+% nPix2nSide
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/nSide2res_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/nSide2res_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/nSide2res_help.html	(revision 27955)
@@ -0,0 +1,97 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>nSide2res</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="nSide2res_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>nSide2res</h1><!--introduction--><p>Determine angular resolution of a HEALPix map</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Example</a></li><li><a href="#5">See also</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>angres = nSide2res(nSide)</pre><h2>Input Arguments<a name="2"></a></h2><pre>nSide   HEALPix resolution parameter (may be an array)</pre><h2>Return Arguments<a name="3"></a></h2><pre>angres  Angular resolution in arcsec</pre><h2>Example<a name="4"></a></h2><pre class="codeinput">nSide = 2.^(8:12);
+nSide2res(nSide)
+</pre><pre class="codeoutput">
+ans =
+
+  824.5167  412.2584  206.1292  103.0646   51.5323
+
+</pre><h2>See also<a name="5"></a></h2><p>res2nSide</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% nSide2res
+% Determine angular resolution of a HEALPix map
+
+%% Syntax
+%  angres = nSide2res(nSide)
+
+%% Input Arguments
+%  nSide   HEALPix resolution parameter (may be an array)
+
+%% Return Arguments
+%  angres  Angular resolution in arcsec
+
+%% Example
+nSide = 2.^(8:12);
+nSide2res(nSide)
+
+%% See also
+% res2nSide
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/nest2ring_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/nest2ring_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/nest2ring_help.html	(revision 27955)
@@ -0,0 +1,106 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>nest2ring</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="nest2ring_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>nest2ring</h1><!--introduction--><p>Convert MEALPix pixel numbers from nest to ring indexing</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Example</a></li><li><a href="#5">See also</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>rPix = nest2ring(nSide,nPix)</pre><h2>Input Arguments<a name="2"></a></h2><pre>nSide     HEALPix resolution parameters
+nPix      numeric array of MEALPix nest indexed pixel numbers</pre><h2>Return Arguments<a name="3"></a></h2><pre>rPix      size(nPix) numeric array of ring indexed pixel numbers</pre><h2>Example<a name="4"></a></h2><pre class="codeinput">nPix = 1:10;
+rPix = nest2ring(2,nPix)
+nPix = ring2nest(2,rPix)
+</pre><pre class="codeoutput">
+rPix =
+
+    14     6     5     1    16     8     7     2    18    10
+
+
+nPix =
+
+     1     2     3     4     5     6     7     8     9    10
+
+</pre><h2>See also<a name="5"></a></h2><p>ring2nest</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% nest2ring
+% Convert MEALPix pixel numbers from nest to ring indexing
+
+%% Syntax
+%  rPix = nest2ring(nSide,nPix)
+
+%% Input Arguments
+%  nSide     HEALPix resolution parameters
+%  nPix      numeric array of MEALPix nest indexed pixel numbers
+
+%% Return Arguments
+%  rPix      size(nPix) numeric array of ring indexed pixel numbers
+
+%% Example
+nPix = 1:10;
+rPix = nest2ring(2,nPix)
+nPix = ring2nest(2,rPix)
+
+%% See also
+% ring2nest
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/pix2alm_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/pix2alm_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/pix2alm_help.html	(revision 27955)
@@ -0,0 +1,132 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>pix2alm</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="pix2alm_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>pix2alm</h1><!--introduction--><p>Find spherical harmonic decomposition of function on sphere</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Description</a></li><li><a href="#5">Example</a></li><li><a href="#6">See also</a></li><li><a href="#7">Requires</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>alm = pix2alm(v)
+alm = pix2alm(v, lmax)</pre><h2>Input Arguments<a name="2"></a></h2><pre>v       array of pixel values
+lMax    (optional) max order of harmonic to calculate</pre><pre>nPix = numel(v), with nPix = 12*nSide^2 for nSide a power of 2.
+lMax defaults to 2*floor(nSide/3)</pre><h2>Return Arguments<a name="3"></a></h2><pre>alm     coefficients of spherical harmonic expansion</pre><h2>Description<a name="4"></a></h2><p>Let <img src="pix2alm_help_eq50101.png" alt="$x_k$"> denote the location of pixel <img src="pix2alm_help_eq86607.png" alt="$k$"> and <img src="pix2alm_help_eq34006.png" alt="$v_k$"> the function value at <img src="pix2alm_help_eq50101.png" alt="$x_k$">. Then</p><p><img src="pix2alm_help_eq70327.png" alt="$$alm(j) = \frac{4\pi}{N}\sum_{k=0}^{N-1} Y_{LM}^{\dagger}(x_k) v_k$$"></p><p>where <img src="pix2alm_help_eq61214.png" alt="$j=(L+1)^2+M-L$"> and <img src="pix2alm_help_eq05153.png" alt="$N$"> is the number of pixels (12*nSide^2)</p><h2>Example<a name="5"></a></h2><p>estimate alm of dummy data</p><pre class="codeinput">ns = 2^4;
+np = 12*ns^2;
+v = ylm(ns,1,1) + ylm(ns,2,-2) + ylm(ns,3,0) + rand(1,np)/10;
+lMax = 4;
+alm = pix2alm(v,lMax);
+<span class="keyword">for</span> L = 0:3
+  fprintf(<span class="string">'L = %d: '</span>,L);
+  fprintf(<span class="string">'%7.3f '</span>,abs(alm((L+1)^2+(-L:L)-L)));
+  fprintf(<span class="string">'\n'</span>);
+<span class="keyword">end</span>
+</pre><pre class="codeoutput">L = 0:   0.176 
+L = 1:   0.001   0.002   1.000 
+L = 2:   1.001   0.002   0.001   0.002   0.003 
+L = 3:   0.003   0.003   0.002   0.998   0.002   0.003   0.003 
+</pre><h2>See also<a name="6"></a></h2><p>alm2pix</p><h2>Requires<a name="7"></a></h2><p>ylm</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% pix2alm 
+% Find spherical harmonic decomposition of function on sphere
+
+%% Syntax
+%  alm = pix2alm(v)
+%  alm = pix2alm(v, lmax)
+
+%% Input Arguments
+%  v       array of pixel values
+%  lMax    (optional) max order of harmonic to calculate
+%
+%  nPix = numel(v), with nPix = 12*nSide^2 for nSide a power of 2. 
+%  lMax defaults to 2*floor(nSide/3)
+
+%% Return Arguments
+%  alm     coefficients of spherical harmonic expansion
+
+%% Description
+% Let $x_k$ denote the location of pixel $k$ and $v_k$ the function value
+% at $x_k$. Then
+%
+% $$alm(j) = \frac{4\pi}{N}\sum_{k=0}^{N-1} Y_{LM}^{\dagger}(x_k) v_k$$
+%
+% where $j=(L+1)^2+M-L$ and $N$ is the number of pixels (12*nSide^2)
+
+%% Example
+% estimate alm of dummy data
+ns = 2^4;
+np = 12*ns^2;
+v = ylm(ns,1,1) + ylm(ns,2,-2) + ylm(ns,3,0) + rand(1,np)/10; 
+lMax = 4;
+alm = pix2alm(v,lMax);
+for L = 0:3
+  fprintf('L = %d: ',L);
+  fprintf('%7.3f ',abs(alm((L+1)^2+(-L:L)-L)));
+  fprintf('\n');
+end
+
+%% See also
+% alm2pix
+
+%% Requires
+% ylm
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/pix2ang_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/pix2ang_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/pix2ang_help.html	(revision 27955)
@@ -0,0 +1,135 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>pix2ang</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="pix2ang_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>pix2ang</h1><!--introduction--><p>Find spherical coordinate location of HEALPix pixels</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Example</a></li><li><a href="#5">See also</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>tp = pix2ang(nSide,pix,'Param1',Value1,...)</pre><h2>Input Arguments<a name="2"></a></h2><pre>nSide    HEALPix resolution parameter (positive integer power of 2)
+pix      (optional) array of pixel values to find coordinates of</pre><pre>Param    Values
+'nest'   pixels are given in nested indexing (true | {false})</pre><h2>Return Arguments<a name="3"></a></h2><pre>tp       cell array of [theta; phi] pixel locations (radians)</pre><h2>Example<a name="4"></a></h2><p>Return [theta; phi] postion angles for all pix of nSide=4, nest scheme</p><pre class="codeinput">nSide = 4;
+tp = pix2ang(nSide,<span class="string">'nest'</span>,true);
+size(tp)
+tp{1}
+<span class="comment">% Return position angles for a random assortment of pixels</span>
+pix = randi(nSide2nPix(nSide),3,4);
+tp = pix2ang(nSide,pix);
+size(tp)
+tp{1}
+</pre><pre class="codeoutput">
+ans =
+
+     1   192
+
+
+ans =
+
+    1.4033
+    0.7854
+
+
+ans =
+
+     3     4
+
+
+ans =
+
+    1.5708
+    6.0868
+
+</pre><h2>See also<a name="5"></a></h2><p>See also ang2pix, pix2vec, vec2pix</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% pix2ang
+% Find spherical coordinate location of HEALPix pixels
+
+%% Syntax
+%  tp = pix2ang(nSide,pix,'Param1',Value1,...)
+
+%% Input Arguments
+%  nSide    HEALPix resolution parameter (positive integer power of 2)
+%  pix      (optional) array of pixel values to find coordinates of
+%
+%  Param    Values
+%  'nest'   pixels are given in nested indexing (true | {false})
+
+%% Return Arguments
+%  tp       cell array of [theta; phi] pixel locations (radians)
+
+%% Example
+% Return [theta; phi] postion angles for all pix of nSide=4, nest scheme
+nSide = 4;
+tp = pix2ang(nSide,'nest',true);
+size(tp)
+tp{1}
+% Return position angles for a random assortment of pixels
+pix = randi(nSide2nPix(nSide),3,4);
+tp = pix2ang(nSide,pix);
+size(tp)
+tp{1}
+
+%% See also
+% See also ang2pix, pix2vec, vec2pix
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/pix2vec_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/pix2vec_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/pix2vec_help.html	(revision 27955)
@@ -0,0 +1,144 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>pix2vec</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="pix2vec_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>pix2vec</h1><!--introduction--><p>Convert MEALPix pixel numbers to cartesian location vectors</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Example</a></li><li><a href="#5">See also</a></li><li><a href="#6">Requires</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>[x,y,z] = pix2vec(nSide,pix,'Param1',Value1,...)
+xyz = pix2vec(nSide,pix,'Param1',Value1,...)</pre><h2>Input Arguments<a name="2"></a></h2><pre>nSide       HEALPix resolution parameter
+pix         (optional) numeric array of pixel numbers</pre><pre>Param       Value
+'nest'      indexing scheme is nested (true | {false})</pre><h2>Return Arguments<a name="3"></a></h2><pre>x,y,z       size(pix) size(pix) numeric array of unit vector coordinate
+            components corresponding to pixels pix
+xyz         size(pix) size(pix) cell array of cartesian unit vectors
+            corresponding to pixels pix</pre><h2>Example<a name="4"></a></h2><pre class="codeinput">nSide = 2^4;
+nPix = nSide2nPix(nSide);
+pix0 = reshape(1:6,3,2);
+pix1 = reshape(nPix+(-5:0),3,2);
+pix = [pix0,pix1];
+xyz = pix2vec(nSide,pix);
+xyzn = pix2vec(nSide,pix,<span class="string">'nest'</span>,true);
+size(xyz)
+[xyz{1},xyz{end}]
+[xyzn{1},xyzn{end}]
+</pre><pre class="codeoutput">
+ans =
+
+     3     4
+
+
+ans =
+
+    0.0361    0.0361
+    0.0361   -0.0361
+    0.9987   -0.9987
+
+
+ans =
+
+    0.7065    0.7065
+    0.7065   -0.7065
+    0.0417   -0.0417
+
+</pre><h2>See also<a name="5"></a></h2><p>ang2pix, pix2ang, vec2pix</p><h2>Requires<a name="6"></a></h2><p>nest2ring</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% pix2vec
+% Convert MEALPix pixel numbers to cartesian location vectors
+
+%% Syntax
+%  [x,y,z] = pix2vec(nSide,pix,'Param1',Value1,...)
+%  xyz = pix2vec(nSide,pix,'Param1',Value1,...)
+
+%% Input Arguments
+%  nSide       HEALPix resolution parameter
+%  pix         (optional) numeric array of pixel numbers
+%
+%  Param       Value
+%  'nest'      indexing scheme is nested (true | {false}) 
+
+%% Return Arguments
+%  x,y,z       size(pix) size(pix) numeric array of unit vector coordinate
+%              components corresponding to pixels pix
+%  xyz         size(pix) size(pix) cell array of cartesian unit vectors
+%              corresponding to pixels pix
+
+%% Example
+nSide = 2^4;
+nPix = nSide2nPix(nSide);
+pix0 = reshape(1:6,3,2);
+pix1 = reshape(nPix+(-5:0),3,2);
+pix = [pix0,pix1];
+xyz = pix2vec(nSide,pix);
+xyzn = pix2vec(nSide,pix,'nest',true);
+size(xyz)
+[xyz{1},xyz{end}]
+[xyzn{1},xyzn{end}]
+
+%% See also
+% ang2pix, pix2ang, vec2pix
+
+%% Requires
+% nest2ring
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/pix2xy_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/pix2xy_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/pix2xy_help.html	(revision 27955)
@@ -0,0 +1,107 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>pix2xy</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="pix2xy_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>pix2xy</h1><!--introduction--><p>Find pixel cartesian face coordinates</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Example</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>xy = pix2xy(nSide,nPix)</pre><h2>Input Arguments<a name="2"></a></h2><pre>nSide     HEALPix resolution parameter
+nPix      nested indexing pixel numbers to find coordinates of</pre><h2>Return Arguments<a name="3"></a></h2><pre>xy        size(nPix) cell array of pixel coordinates on face</pre><h2>Example<a name="4"></a></h2><pre class="codeinput">nPix = reshape(1:24,[4,3,2]);
+xy = pix2xy(2,nPix)
+</pre><pre class="codeoutput">
+xy(:,:,1) = 
+
+    [2x1 double]    [2x1 double]    [2x1 double]
+    [2x1 double]    [2x1 double]    [2x1 double]
+    [2x1 double]    [2x1 double]    [2x1 double]
+    [2x1 double]    [2x1 double]    [2x1 double]
+
+
+xy(:,:,2) = 
+
+    [2x1 double]    [2x1 double]    [2x1 double]
+    [2x1 double]    [2x1 double]    [2x1 double]
+    [2x1 double]    [2x1 double]    [2x1 double]
+    [2x1 double]    [2x1 double]    [2x1 double]
+
+</pre><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% pix2xy
+% Find pixel cartesian face coordinates
+
+%% Syntax
+%  xy = pix2xy(nSide,nPix)
+
+%% Input Arguments
+%  nSide     HEALPix resolution parameter
+%  nPix      nested indexing pixel numbers to find coordinates of
+
+%% Return Arguments
+%  xy        size(nPix) cell array of pixel coordinates on face
+
+%% Example
+nPix = reshape(1:24,[4,3,2]);
+xy = pix2xy(2,nPix)
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/queryDisc_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/queryDisc_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/queryDisc_help.html	(revision 27955)
@@ -0,0 +1,145 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>queryDisc</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="queryDisc_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>queryDisc</h1><!--introduction--><p>Find all pixels whose centers are within a specified disc</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Example</a></li><li><a href="#5">See also</a></li><li><a href="#6">Requires</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>pix = queryDisc(nSide,c0,r,'Param1',Value1,...)</pre><h2>Input Arguments<a name="2"></a></h2><pre>nSide     HEALPix resolution parameter
+c0        disc center. May be specified as a pixel number, spherical
+          coordinate location [theta, phi] in rads, or as a cartesian
+          unit vector [x;y;z].
+r         disc radius (radians)</pre><pre>Param     Value
+'nest'    pixels are returned using nested indexing (true | {false})</pre><h2>Return Arguments<a name="3"></a></h2><pre>pix      list of pixels in disc</pre><h2>Example<a name="4"></a></h2><pre class="codeinput">nSide=32;
+<span class="comment">% Pixels within pi/10 radians of north pole</span>
+pix = queryDisc(nSide,[0;0;1],pi/10);
+numel(pix)
+nSide2nPix(nSide)*((pi/10)/(4*pi))
+<span class="comment">% Pixels within pi/10 radians of south pole</span>
+pix = queryDisc(nSide,[0;0;-1],pi/10);
+numel(pix)
+<span class="comment">% Pixels within pi/10 radians of 0 long, lat</span>
+pix = queryDisc(nSide,[1;0;0],pi/10);
+numel(pix)
+</pre><pre class="codeoutput">
+ans =
+
+   312
+
+
+ans =
+
+  307.2000
+
+
+ans =
+
+   312
+
+
+ans =
+
+   302
+
+</pre><h2>See also<a name="5"></a></h2><p>queryPolygon, queryStrip, queryTriangle</p><h2>Requires<a name="6"></a></h2><p>pix2vec, ang2vec, angDist</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% queryDisc
+% Find all pixels whose centers are within a specified disc
+
+%% Syntax
+%  pix = queryDisc(nSide,c0,r,'Param1',Value1,...)
+
+%% Input Arguments
+%  nSide     HEALPix resolution parameter
+%  c0        disc center. May be specified as a pixel number, spherical
+%            coordinate location [theta, phi] in rads, or as a cartesian
+%            unit vector [x;y;z].   
+%  r         disc radius (radians)
+% 
+%  Param     Value
+%  'nest'    pixels are returned using nested indexing (true | {false})
+
+%% Return Arguments
+%  pix      list of pixels in disc
+
+%% Example
+nSide=32;
+% Pixels within pi/10 radians of north pole
+pix = queryDisc(nSide,[0;0;1],pi/10);
+numel(pix)
+nSide2nPix(nSide)*((pi/10)/(4*pi))
+% Pixels within pi/10 radians of south pole
+pix = queryDisc(nSide,[0;0;-1],pi/10);
+numel(pix)
+% Pixels within pi/10 radians of 0 long, lat
+pix = queryDisc(nSide,[1;0;0],pi/10);
+numel(pix)
+
+%% See also
+% queryPolygon, queryStrip, queryTriangle
+
+%% Requires
+% pix2vec, ang2vec, angDist
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/res2nSide_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/res2nSide_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/res2nSide_help.html	(revision 27955)
@@ -0,0 +1,99 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>res2nSide</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="res2nSide_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>res2nSide</h1><!--introduction--><p>Find minimum HEALPix resolution parameter yielding required resolution</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Example</a></li><li><a href="#5">See also</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>nSide = res2nSide(r)</pre><h2>Input Arguments<a name="2"></a></h2><pre>r        angular resolution (arc seconds)</pre><h2>Return Arguments<a name="3"></a></h2><pre>nSide    minimum base pixel sub-divisions corresponding to resolution r</pre><h2>Example<a name="4"></a></h2><pre class="codeinput">r = 100*rand(3,4);
+nSide = res2nSide(r)
+</pre><pre class="codeoutput">
+nSide =
+
+        8192        4096        4096        4096
+       16384        4096       16384       16384
+        8192        8192        4096       32768
+
+</pre><h2>See also<a name="5"></a></h2><p>nSide2res</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% res2nSide
+% Find minimum HEALPix resolution parameter yielding required resolution
+
+%% Syntax
+%  nSide = res2nSide(r)
+
+%% Input Arguments
+%  r        angular resolution (arc seconds)
+
+%% Return Arguments
+%  nSide    minimum base pixel sub-divisions corresponding to resolution r
+
+%% Example
+r = 100*rand(3,4);
+nSide = res2nSide(r)
+
+%% See also
+% nSide2res
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/ring2nest_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/ring2nest_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/ring2nest_help.html	(revision 27955)
@@ -0,0 +1,106 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>ring2nest</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="ring2nest_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>ring2nest</h1><!--introduction--><p>Convert MEALPix pixel numbers from ring to nest indexing</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Example</a></li><li><a href="#5">See also</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>nPix = ring2nest(nSide,rPix)</pre><h2>Input Arguments<a name="2"></a></h2><pre>nSide      HEALPix resolution parameter
+rPix       ring indexed MEALPix pixel numbers</pre><h2>Return Arguments<a name="3"></a></h2><pre>nPix       next indexed MEALPix pixel numbers</pre><h2>Example<a name="4"></a></h2><pre class="codeinput">nPix = ring2nest(4,reshape(1:6,2,3))
+rPix = nest2ring(4,nPix)
+</pre><pre class="codeoutput">
+nPix =
+
+    16    48    15
+    32    64    14
+
+
+rPix =
+
+     1     3     5
+     2     4     6
+
+</pre><h2>See also<a name="5"></a></h2><p>nest2ring</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% ring2nest
+% Convert MEALPix pixel numbers from ring to nest indexing
+
+%% Syntax
+%  nPix = ring2nest(nSide,rPix)
+
+%% Input Arguments
+%  nSide      HEALPix resolution parameter
+%  rPix       ring indexed MEALPix pixel numbers
+
+%% Return Arguments
+%  nPix       next indexed MEALPix pixel numbers
+
+%% Example
+nPix = ring2nest(4,reshape(1:6,2,3))
+rPix = nest2ring(4,nPix)
+
+%% See also
+% nest2ring
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/ring2z_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/ring2z_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/ring2z_help.html	(revision 27955)
@@ -0,0 +1,108 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>ring2z</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="ring2z_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>ring2z</h1><!--introduction--><p>Find HEALPix ring number corresponding to a given z coordinate</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Example</a></li><li><a href="#5">See also</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>z = ring2z(nSide,nRing)</pre><h2>Input Arguments<a name="2"></a></h2><pre>nSide    HEALPix resolution parameter
+nRing    numeric array of ring numbers (in range [1,4*nSide-1])</pre><h2>Return Arguments<a name="3"></a></h2><pre>z        size(nRing) numeric array of pixel center z coordinates</pre><h2>Example<a name="4"></a></h2><pre class="codeinput">nRing = reshape(1:15,3,5)
+z = ring2z(4,nRing)
+</pre><pre class="codeoutput">
+nRing =
+
+     1     4     7    10    13
+     2     5     8    11    14
+     3     6     9    12    15
+
+
+z =
+
+    0.9792    0.6667    0.1667   -0.3333   -0.8125
+    0.9167    0.5000         0   -0.5000   -0.9167
+    0.8125    0.3333   -0.1667   -0.6667   -0.9792
+
+</pre><h2>See also<a name="5"></a></h2><p>z2ring</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% ring2z
+% Find HEALPix ring number corresponding to a given z coordinate
+
+%% Syntax
+%  z = ring2z(nSide,nRing)
+
+%% Input Arguments
+%  nSide    HEALPix resolution parameter
+%  nRing    numeric array of ring numbers (in range [1,4*nSide-1])
+
+%% Return Arguments
+%  z        size(nRing) numeric array of pixel center z coordinates
+
+%% Example
+nRing = reshape(1:15,3,5)
+z = ring2z(4,nRing)
+
+%% See also
+% z2ring
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/ringNum_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/ringNum_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/ringNum_help.html	(revision 27955)
@@ -0,0 +1,145 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>ringNum</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-18"><meta name="DC.source" content="ringNum_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>ringNum</h1><!--introduction--><p>Find pixel ring numbers</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Description</a></li><li><a href="#5">Algorithm Notes</a></li><li><a href="#6">Example</a></li><li><a href="#7">See also</a></li><li><a href="#8">Requires</a></li><li><a href="#9">References</a></li><li><a href="#10">Notices</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>nRing = ringNum(nSide,pix)</pre><h2>Input Arguments<a name="2"></a></h2><pre>nSide      HEALPix resolution parameter
+pix        (optional) MEALPix pixel number array (ring indexing).
+           Defaults to all pixels</pre><h2>Return Arguments<a name="3"></a></h2><pre>nRing      size(pix) array of ring numbers</pre><h2>Description<a name="4"></a></h2><h2>Algorithm Notes<a name="5"></a></h2><h2>Example<a name="6"></a></h2><pre class="codeinput">ringNum(2)
+</pre><pre class="codeoutput">Undefined function or method 'ringNum' for input arguments of type 'double'.
+
+Error in ==&gt; ringNum_help at 20
+ringNum(2)
+</pre><h2>See also<a name="7"></a></h2><p>inRing</p><h2>Requires<a name="8"></a></h2><p>pix2vec, z2ring</p><h2>References<a name="9"></a></h2><p>K. M. Gorski et al. 2005.  <a href="http://dx.doi.org/10.1086/427976">HEALPix: A Framework for High-Resolution Discretization and Fast Analysis of Data Distributed on the Sphere</a>. The Astrophysical Journal 622 759</p><p>K. M. Gorski et al. 1999. <a href="http://arxiv.org/abs/astro-ph/9905275">The HEALPix Primer</a>. arXiv:astro-ph/9905275</p><p>K. M. Gorski et al. 2002. <a href="http://articles.adsabs.harvard.edu/cgi-bin/nph-iarticle_query?2002ASPC..281..107G&amp;amp;data_type=PDF_HIGH&amp;amp;whole_paper=YES&amp;amp;type=PRINTER&amp;amp;filetype=.pdf">HEALPix - a Framework for High Resolution, Fast Analysis on the Sphere</a>. In Astronomical Data Analysis Software and Systems XI, Bohlender, D. A. et al. ed.  ASP Conference Series Vol 281, pp. 107-111</p><p>Mark R. Calabrettal and Boudewijn F. Roukema. 2007. <a href="http://dx.doi.org/10.1111/j.1365-2966.2007.12297.x">Mapping on the HEALPix grid</a>. Monthly Notices of the Royal Astronomical Society 381:2 pp. 865 - 872.</p><p>W. O'Mullane et al. 2001. <a href="http://dx.doi.org/10.1007/10849171_84">Splitting the Sky - HTM and HEALPix</a>. In Mining The Sky. Anthony Banday et al., Ed. Anthony ESO Astrophysics  Symposia 2001, 638 - 648.</p><p>L. Nicastro and Calderone, G. 2008. <a href="http://aspbooks.org/custom/publications/paper/394-0487.html">Indexing Astronomical Database Tables using HTM and HEALPix</a>. In Astronomical Data Analysis Software and Systems (ADASS) XVII. A. W. Argle et. al, ed. Astronomical Society of the Pacific Conference Series vol. 394 pp. 486-490.</p><h2>Notices<a name="10"></a></h2><p>Copyright 2010-2011 Lee Samuel Finn 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 <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></p><p>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.nSideWarn(nSide,mfilename);</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% ringNum
+% Find pixel ring numbers
+
+%% Syntax
+%  nRing = ringNum(nSide,pix)
+
+%% Input Arguments
+%  nSide      HEALPix resolution parameter
+%  pix        (optional) MEALPix pixel number array (ring indexing).
+%             Defaults to all pixels
+
+%% Return Arguments
+%  nRing      size(pix) array of ring numbers
+
+%% Description
+
+%% Algorithm Notes
+
+%% Example
+ringNum(2)
+
+%% See also
+% inRing
+
+%% Requires
+% pix2vec, z2ring
+
+%% References
+% K. M. Gorski et al. 2005.  <http://dx.doi.org/10.1086/427976 
+% HEALPix: A Framework for High-Resolution Discretization and Fast Analysis
+% of Data Distributed on the Sphere>. The Astrophysical Journal 622 759
+%
+% K. M. Gorski et al. 1999. <http://arxiv.org/abs/astro-ph/9905275 The
+% HEALPix Primer>. arXiv:astro-ph/9905275
+% 
+% K. M. Gorski et al. 2002.
+% <http://articles.adsabs.harvard.edu/cgi-bin/nph-iarticle_query?2002ASPC..281..107G&amp;data_type=PDF_HIGH&amp;whole_paper=YES&amp;type=PRINTER&amp;filetype=.pdf
+% HEALPix - a Framework for High Resolution, Fast Analysis on the Sphere>.
+% In Astronomical Data Analysis Software and Systems XI, Bohlender, D. A.
+% et al. ed.  ASP Conference Series Vol 281, pp. 107-111
+%
+% Mark R. Calabrettal and Boudewijn F. Roukema. 2007. 
+% <http://dx.doi.org/10.1111/j.1365-2966.2007.12297.x Mapping on the
+% HEALPix grid>. Monthly Notices of the Royal Astronomical Society 381:2
+% pp. 865 - 872. 
+%
+% W. O'Mullane et al. 2001. <http://dx.doi.org/10.1007/10849171_84
+% Splitting the Sky - HTM and HEALPix>. In Mining The Sky. Anthony Banday
+% et al., Ed. Anthony ESO Astrophysics  Symposia 2001, 638 - 648. 
+%
+% L. Nicastro and Calderone, G. 2008. 
+% <http://aspbooks.org/custom/publications/paper/394-0487.html Indexing
+% Astronomical Database Tables using HTM and HEALPix>. In Astronomical Data
+% Analysis Software and Systems (ADASS) XVII. A. W. Argle et. al, ed.
+% Astronomical Society of the Pacific Conference Series vol. 394 pp.
+% 486-490.   
+
+%% Notices
+% Copyright 2010-2011 Lee Samuel Finn
+% 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.nSideWarn(nSide,mfilename);
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/synopsis.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/synopsis.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/synopsis.html	(revision 27955)
@@ -0,0 +1,127 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>Synopsis</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="synopsis.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>Synopsis</h1><!--introduction--><pre> alm2pix    - Evaluate spherical harmonic function expansion on HEALPix pixels
+ alm2spec   - valuate angular power spectral density
+ ang2pix    - Convert spherical coordinate location to HEALPix pixel number
+ ang2vec    - Convert from spherical to cartesian coordinates
+ angDist    - Computes angular distance on the unit sphere
+ corners    - Find pixel corners
+ hp3d       - Plots a HEALPix dataset on a 3D sphere
+ hpInterp   - Interpolate data on sphere to MEALPix pixels
+ hpStat     - Compute descriptive statistics of a pixel value list
+ inRing     - return pixels in ring or ring section
+ nPix2nSide - Convert number of pixels to number of facet side subdivisions
+ nSide2nPix - Convert resolution parameter to number of pixels
+ nSide2res  - Calculates angular resolution of a HEALPix map in arcsec
+ nest2ring  - Convert MEALPix pixel numbers from nest to ring indexing
+ pix2alm    - Find spherical harmonic decomposition of function on sphere
+ pix2ang    - Find spherical coordinate location of HEALPix pixels
+ pix2vec    - convert HEALPix pixel numbers to (x,y,z) unit vector
+ pix2xy     - PIX2XY
+ queryDisc  - Find all pixels whose centers are within a specified disc
+ res2nSide  - Finds minimum base pixel sub-division for required resolution
+ ring2nest  - Convert MEALPix pixel numbers from ring to nest indexing
+ ring2z     - Find HEALPix ring number corresponding to a given z coordinate
+ vec2ang    - Convert cartesian direction vector to position angle on sphere
+ vec2pix    - Convert cartesian direction vectors to MEALPix pixel numbers
+ xy2pix     - gives the pixel number ipix (NESTED) of ix, iy and face_num
+ ylm        - returns spherical harmonic basis Y_L^M on the HEALPix sphere
+ z2ring     - Find HEALPix ring numbers from direction vector z coordinate</pre><!--/introduction--><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% Synopsis
+%   alm2pix    - Evaluate spherical harmonic function expansion on HEALPix pixels
+%   alm2spec   - valuate angular power spectral density
+%   ang2pix    - Convert spherical coordinate location to HEALPix pixel number
+%   ang2vec    - Convert from spherical to cartesian coordinates
+%   angDist    - Computes angular distance on the unit sphere
+%   corners    - Find pixel corners
+%   hp3d       - Plots a HEALPix dataset on a 3D sphere
+%   hpInterp   - Interpolate data on sphere to MEALPix pixels
+%   hpStat     - Compute descriptive statistics of a pixel value list
+%   inRing     - return pixels in ring or ring section
+%   nPix2nSide - Convert number of pixels to number of facet side subdivisions
+%   nSide2nPix - Convert resolution parameter to number of pixels
+%   nSide2res  - Calculates angular resolution of a HEALPix map in arcsec 
+%   nest2ring  - Convert MEALPix pixel numbers from nest to ring indexing
+%   pix2alm    - Find spherical harmonic decomposition of function on sphere
+%   pix2ang    - Find spherical coordinate location of HEALPix pixels
+%   pix2vec    - convert HEALPix pixel numbers to (x,y,z) unit vector
+%   pix2xy     - PIX2XY
+%   queryDisc  - Find all pixels whose centers are within a specified disc
+%   res2nSide  - Finds minimum base pixel sub-division for required resolution
+%   ring2nest  - Convert MEALPix pixel numbers from ring to nest indexing
+%   ring2z     - Find HEALPix ring number corresponding to a given z coordinate
+%   vec2ang    - Convert cartesian direction vector to position angle on sphere
+%   vec2pix    - Convert cartesian direction vectors to MEALPix pixel numbers
+%   xy2pix     - gives the pixel number ipix (NESTED) of ix, iy and face_num
+%   ylm        - returns spherical harmonic basis Y_L^M on the HEALPix sphere
+%   z2ring     - Find HEALPix ring numbers from direction vector z coordinate
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/template_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/template_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/template_help.html	(revision 27955)
@@ -0,0 +1,133 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>NAME</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="template_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>NAME</h1><!--introduction--><p>short descr</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Description</a></li><li><a href="#5">Algorithm Notes</a></li><li><a href="#6">Example</a></li><li><a href="#7">See also</a></li><li><a href="#8">Requires</a></li><li><a href="#9">References</a></li><li><a href="#10">Notices</a></li></ul></div><h2>Syntax<a name="1"></a></h2><h2>Input Arguments<a name="2"></a></h2><h2>Return Arguments<a name="3"></a></h2><h2>Description<a name="4"></a></h2><h2>Algorithm Notes<a name="5"></a></h2><h2>Example<a name="6"></a></h2><h2>See also<a name="7"></a></h2><h2>Requires<a name="8"></a></h2><h2>References<a name="9"></a></h2><p>K. M. Gorski et al. 2005.  <a href="http://dx.doi.org/10.1086/427976">HEALPix: A Framework for High-Resolution Discretization and Fast Analysis of Data Distributed on the Sphere</a>. The Astrophysical Journal 622 759</p><p>K. M. Gorski et al. 1999. <a href="http://arxiv.org/abs/astro-ph/9905275">The HEALPix Primer</a>. arXiv:astro-ph/9905275</p><p>K. M. Gorski et al. 2002. <a href="http://articles.adsabs.harvard.edu/cgi-bin/nph-iarticle_query?2002ASPC..281..107G&amp;amp;data_type=PDF_HIGH&amp;amp;whole_paper=YES&amp;amp;type=PRINTER&amp;amp;filetype=.pdf">HEALPix - a Framework for High Resolution, Fast Analysis on the Sphere</a>. In Astronomical Data Analysis Software and Systems XI, Bohlender, D. A. et al. ed.  ASP Conference Series Vol 281, pp. 107-111</p><p>Mark R. Calabrettal and Boudewijn F. Roukema. 2007. <a href="http://dx.doi.org/10.1111/j.1365-2966.2007.12297.x">Mapping on the HEALPix grid</a>. Monthly Notices of the Royal Astronomical Society 381:2 pp. 865 - 872.</p><p>W. O'Mullane et al. 2001. <a href="http://dx.doi.org/10.1007/10849171_84">Splitting the Sky - HTM and HEALPix</a>. In Mining The Sky. Anthony Banday et al., Ed. Anthony ESO Astrophysics  Symposia 2001, 638 - 648.</p><p>L. Nicastro and Calderone, G. 2008. <a href="http://aspbooks.org/custom/publications/paper/394-0487.html">Indexing Astronomical Database Tables using HTM and HEALPix</a>. In Astronomical Data Analysis Software and Systems (ADASS) XVII. A. W. Argle et. al, ed. Astronomical Society of the Pacific Conference Series vol. 394 pp. 486-490.</p><h2>Notices<a name="10"></a></h2><p>Copyright 2010-2011 Lee Samuel Finn 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 <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></p><p>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.</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% NAME
+% short descr
+
+%% Syntax
+
+%% Input Arguments
+
+%% Return Arguments
+
+%% Description
+
+%% Algorithm Notes
+
+%% Example
+
+%% See also
+
+%% Requires
+
+%% References
+% K. M. Gorski et al. 2005.  <http://dx.doi.org/10.1086/427976 
+% HEALPix: A Framework for High-Resolution Discretization and Fast Analysis
+% of Data Distributed on the Sphere>. The Astrophysical Journal 622 759
+%
+% K. M. Gorski et al. 1999. <http://arxiv.org/abs/astro-ph/9905275 The
+% HEALPix Primer>. arXiv:astro-ph/9905275
+% 
+% K. M. Gorski et al. 2002.
+% <http://articles.adsabs.harvard.edu/cgi-bin/nph-iarticle_query?2002ASPC..281..107G&amp;data_type=PDF_HIGH&amp;whole_paper=YES&amp;type=PRINTER&amp;filetype=.pdf
+% HEALPix - a Framework for High Resolution, Fast Analysis on the Sphere>.
+% In Astronomical Data Analysis Software and Systems XI, Bohlender, D. A.
+% et al. ed.  ASP Conference Series Vol 281, pp. 107-111
+%
+% Mark R. Calabrettal and Boudewijn F. Roukema. 2007. 
+% <http://dx.doi.org/10.1111/j.1365-2966.2007.12297.x Mapping on the
+% HEALPix grid>. Monthly Notices of the Royal Astronomical Society 381:2
+% pp. 865 - 872. 
+%
+% W. O'Mullane et al. 2001. <http://dx.doi.org/10.1007/10849171_84
+% Splitting the Sky - HTM and HEALPix>. In Mining The Sky. Anthony Banday
+% et al., Ed. Anthony ESO Astrophysics  Symposia 2001, 638 - 648. 
+%
+% L. Nicastro and Calderone, G. 2008. 
+% <http://aspbooks.org/custom/publications/paper/394-0487.html Indexing
+% Astronomical Database Tables using HTM and HEALPix>. In Astronomical Data
+% Analysis Software and Systems (ADASS) XVII. A. W. Argle et. al, ed.
+% Astronomical Society of the Pacific Conference Series vol. 394 pp.
+% 486-490.   
+
+%% Notices
+% Copyright 2010-2011 Lee Samuel Finn
+% 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.
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/vec2ang_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/vec2ang_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/vec2ang_help.html	(revision 27955)
@@ -0,0 +1,135 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>vec2ang</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="vec2ang_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>vec2ang</h1><!--introduction--><p>Convert from cartesian direction vector to position angle on sphere</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Example</a></li><li><a href="#5">See also</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>tp = vec2ang(xyz)</pre><h2>Input Arguments<a name="2"></a></h2><pre>xyz    cell array of [3,1] cartesian coordinate direction vectors</pre><p>The direction vectors need not be normalized.</p><h2>Return Arguments<a name="3"></a></h2><pre>tp     cell array of [2,1] position angles ([theta, phi]) on sphere</pre><h2>Example<a name="4"></a></h2><p>Create a [3,4] cell array of position angles and manually convert to cartesian direction vectors. Use vec2ang to convert back to position angles and compare with originals</p><pre class="codeinput"><span class="comment">% angular position vectors</span>
+z = 2*rand(3,4)-1;
+th = acos(z);
+ph = 2*pi*rand(3,4)-pi;
+
+<span class="comment">% convert to cartesian coordinate vectors</span>
+x = sqrt(1-z.^2).*cos(ph);
+y = sqrt(1-z.^2).*sin(ph);
+xyz = arrayfun(@(x,y,z)([x,y,z]),x,y,z,<span class="string">'UniformOutput'</span>,false);
+
+<span class="comment">% use vec2ang to convert cartesian coordinate vectors to angular position</span>
+<span class="comment">% vectors</span>
+tp = vec2ang(xyz);
+
+<span class="comment">% Compare original vectors with final vectors</span>
+tp0 = arrayfun(@(t,p)([t;p]),th,ph,<span class="string">'UniformOutput'</span>,false);
+tf = cellfun(@(x,y)(any(abs(x-y)&gt;4*eps)),tp,tp0)
+</pre><pre class="codeoutput">
+tf =
+
+     0     0     0     0
+     0     0     0     0
+     0     0     0     0
+
+</pre><h2>See also<a name="5"></a></h2><p>ang2vec</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% vec2ang
+% Convert from cartesian direction vector to position angle on sphere
+
+%% Syntax
+%  tp = vec2ang(xyz)
+
+%% Input Arguments
+%  xyz    cell array of [3,1] cartesian coordinate direction vectors
+%
+% The direction vectors need not be normalized.
+
+%% Return Arguments
+%  tp     cell array of [2,1] position angles ([theta, phi]) on sphere
+
+%% Example
+% Create a [3,4] cell array of position angles and manually convert to
+% cartesian direction vectors. Use vec2ang to convert back to position
+% angles and compare with originals
+
+% angular position vectors
+z = 2*rand(3,4)-1;
+th = acos(z);
+ph = 2*pi*rand(3,4)-pi;
+
+% convert to cartesian coordinate vectors
+x = sqrt(1-z.^2).*cos(ph);
+y = sqrt(1-z.^2).*sin(ph);
+xyz = arrayfun(@(x,y,z)([x,y,z]),x,y,z,'UniformOutput',false);
+
+% use vec2ang to convert cartesian coordinate vectors to angular position
+% vectors
+tp = vec2ang(xyz);
+
+% Compare original vectors with final vectors
+tp0 = arrayfun(@(t,p)([t;p]),th,ph,'UniformOutput',false);
+tf = cellfun(@(x,y)(any(abs(x-y)>4*eps)),tp,tp0)
+
+%% See also
+% ang2vec
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/vec2pix_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/vec2pix_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/vec2pix_help.html	(revision 27955)
@@ -0,0 +1,133 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>vec2pix</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="vec2pix_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>vec2pix</h1><!--introduction--><p>Convert cartesian direction vectors to MEALPix pixel numbers</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Example</a></li><li><a href="#5">See also</a></li><li><a href="#6">Requires</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>nPix = vec2pix(nSide,xyz,'Param1',Value1,...);</pre><h2>Input Arguments<a name="2"></a></h2><pre>nSide     HEALPix resolution parameter
+xyz       cell array of [3,1] cartesian direction vectors</pre><pre>Param     Value
+'nest'    use nested indexing (true | {false})</pre><h2>Return Arguments<a name="3"></a></h2><pre>nPix      size(xyz) pixel number array</pre><h2>Example<a name="4"></a></h2><p>Find pixels corresponding to a [4,5] set of (unnormalized) cartesian vectors:</p><pre class="codeinput">nSide = 4;
+xyz0 = squeeze(num2cell(2*rand(3,4,5)-1,1));
+nPix = vec2pix(nSide,xyz0)
+
+<span class="comment">% Find the normalized vectors corresponding to the pixels</span>
+xyz1 = pix2vec(nSide,nPix);
+
+<span class="comment">% Find angular distance from vectors to pixels</span>
+d = angDist(xyz0,xyz1)
+</pre><pre class="codeoutput">
+nPix =
+
+    28   157     2   112    58
+   120    37    44   140   153
+    82   121    68   127    25
+   165    29    51   140    42
+
+
+d =
+
+    0.1107    0.0752    0.1586    0.0250    0.1124
+    0.0695    0.1483    0.1005    0.1260    0.1347
+    0.0588    0.0572    0.0838    0.1210    0.0761
+    0.1156    0.1455    0.1688    0.0376    0.1256
+
+</pre><h2>See also<a name="5"></a></h2><p>ang2pix, pix2ang, pix2vec</p><h2>Requires<a name="6"></a></h2><p>ring2nest</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% vec2pix
+% Convert cartesian direction vectors to MEALPix pixel numbers
+
+%% Syntax
+%  nPix = vec2pix(nSide,xyz,'Param1',Value1,...);
+
+%% Input Arguments
+%  nSide     HEALPix resolution parameter
+%  xyz       cell array of [3,1] cartesian direction vectors
+%  
+%  Param     Value
+%  'nest'    use nested indexing (true | {false})
+
+%% Return Arguments
+%  nPix      size(xyz) pixel number array
+
+%% Example
+% Find pixels corresponding to a [4,5] set of (unnormalized) cartesian
+% vectors:
+nSide = 4;
+xyz0 = squeeze(num2cell(2*rand(3,4,5)-1,1));
+nPix = vec2pix(nSide,xyz0)
+
+% Find the normalized vectors corresponding to the pixels
+xyz1 = pix2vec(nSide,nPix);
+
+% Find angular distance from vectors to pixels
+d = angDist(xyz0,xyz1)
+
+%% See also
+% ang2pix, pix2ang, pix2vec
+
+%% Requires
+% ring2nest
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/xy2pix_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/xy2pix_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/xy2pix_help.html	(revision 27955)
@@ -0,0 +1,119 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>xy2pix</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="xy2pix_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>xy2pix</h1><!--introduction--><p>Find (nest indexed) MEALPix pixel number corresponding to a pixel index on a HEALPix face</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Description</a></li><li><a href="#5">Example</a></li><li><a href="#6">See also</a></li></ul></div><h2>Syntax<a name="1"></a></h2><p>ipix = xy2pix(nSide, ix, iy, nFace)</p><h2>Input Arguments<a name="2"></a></h2><pre>nside     HEALPix resolution parameter (power of 2)
+ix,iy     integer pixel location on face (1 &lt;= ix, iy &lt;= nSide)
+nFace     HEALPix face  number (1 &lt;= nFace &lt;= 12)</pre><p>One or both ix and iy may be scalars. If neither is a scalar both must have the same size.</p><h2>Return Arguments<a name="3"></a></h2><pre>ipix      NESTED pixel index for given x,y on the face</pre><h2>Description<a name="4"></a></h2><p>At lowest resolution HEALPix divides the sphere into 12 faces, each with its own coordinate system. Each face is further subdivided in a regular fashion as the resolution parameter is increased. Given a face number (from 1 to 12), a resolution parameter, and a location on the face XY2PIX identifies the pixel number (in the nested indexing scheme).</p><h2>Example<a name="5"></a></h2><pre class="codeinput">nSide = 4;
+nFace = 3;
+ix = [1 2; 1 2];
+iy = [1 1; 2 2];
+nPix = xy2pix(nSide,ix,iy,nFace)
+</pre><pre class="codeoutput">
+nPix =
+
+    49    50
+    51    52
+
+</pre><h2>See also<a name="6"></a></h2><p>pix2xy</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% xy2pix
+% Find (nest indexed) MEALPix pixel number corresponding to a pixel index
+% on a HEALPix face 
+
+%% Syntax
+% ipix = xy2pix(nSide, ix, iy, nFace)
+
+%% Input Arguments
+%  nside     HEALPix resolution parameter (power of 2)
+%  ix,iy     integer pixel location on face (1 <= ix, iy <= nSide)
+%  nFace     HEALPix face  number (1 <= nFace <= 12)
+%
+% One or both ix and iy may be scalars. If neither is a scalar both must
+% have the same size. 
+
+%% Return Arguments
+%  ipix      NESTED pixel index for given x,y on the face
+
+%% Description
+% At lowest resolution HEALPix divides the sphere into 12 faces, each with
+% its own coordinate system. Each face is further subdivided in a regular
+% fashion as the resolution parameter is increased. Given a face number
+% (from 1 to 12), a resolution parameter, and a location on the face XY2PIX
+% identifies the pixel number (in the nested indexing scheme).
+
+%% Example
+nSide = 4;
+nFace = 3;
+ix = [1 2; 1 2]; 
+iy = [1 1; 2 2];
+nPix = xy2pix(nSide,ix,iy,nFace)
+
+%% See also
+% pix2xy
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/ylm_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/ylm_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/ylm_help.html	(revision 27955)
@@ -0,0 +1,103 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>ylm</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="ylm_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>ylm</h1><!--introduction--><p>Evaluate spherical harmonic basis functions <img src="ylm_help_eq99592.png" alt="$Y_{LM}$"> at pixel centers</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Example</a></li><li><a href="#5">Requires</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>v = ylm(nSide,L,M,'Param1',Value1,'Param2',Value2,...);</pre><h2>Input Arguments<a name="2"></a></h2><pre>nSide    HEALPix resolution parameter (power of 2)
+L        spherical harmonic degree (0 &lt;= L)
+M        spherical harmonic order (-M &lt;= L &lt;= M)</pre><pre>Param    Value
+'real'   return real values (true | {false})
+'nest'   nested indexing flag (true | {false})</pre><h2>Return Arguments<a name="3"></a></h2><pre>v       spherical harmonics evaluated at pixel centers</pre><h2>Example<a name="4"></a></h2><p>Plot Ylm for (L,M) = (4,2) on nSide = 16 HEALPix sphere</p><pre class="codeinput">pix = ylm(16,4,2);
+hp3d(pix);
+</pre><img vspace="5" hspace="5" src="ylm_help_01.png" alt=""> <h2>Requires<a name="5"></a></h2><p>pix2ang</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% ylm
+% Evaluate spherical harmonic basis functions $Y_{LM}$ at pixel centers
+
+%% Syntax
+%  v = ylm(nSide,L,M,'Param1',Value1,'Param2',Value2,...);
+
+%% Input Arguments
+%  nSide    HEALPix resolution parameter (power of 2)
+%  L        spherical harmonic degree (0 <= L)
+%  M        spherical harmonic order (-M <= L <= M)
+%
+%  Param    Value
+%  'real'   return real values (true | {false})
+%  'nest'   nested indexing flag (true | {false}) 
+
+%% Return Arguments
+%  v       spherical harmonics evaluated at pixel centers
+
+%% Example
+% Plot Ylm for (L,M) = (4,2) on nSide = 16 HEALPix sphere
+pix = ylm(16,4,2);
+hp3d(pix);
+
+%% Requires
+% pix2ang
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/z2ring_help.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/z2ring_help.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/html/z2ring_help.html	(revision 27955)
@@ -0,0 +1,106 @@
+
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+   <!--
+This HTML was auto-generated from MATLAB code.
+To make changes, update the MATLAB code and republish this document.
+      --><title>z2ring</title><meta name="generator" content="MATLAB 7.12"><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"><meta name="DC.date" content="2011-02-19"><meta name="DC.source" content="z2ring_help.m"><style type="text/css">
+
+body {
+  background-color: white;
+  margin:10px;
+}
+
+h1 {
+  color: #990000; 
+  font-size: x-large;
+}
+
+h2 {
+  color: #990000;
+  font-size: medium;
+}
+
+/* Make the text shrink to fit narrow windows, but not stretch too far in 
+wide windows. */ 
+p,h1,h2,div.content div {
+  max-width: 600px;
+  /* Hack for IE6 */
+  width: auto !important; width: 600px;
+}
+
+pre.codeinput {
+  background: #EEEEEE;
+  padding: 10px;
+}
+@media print {
+  pre.codeinput {word-wrap:break-word; width:100%;}
+} 
+
+span.keyword {color: #0000FF}
+span.comment {color: #228B22}
+span.string {color: #A020F0}
+span.untermstring {color: #B20000}
+span.syscmd {color: #B28C00}
+
+pre.codeoutput {
+  color: #666666;
+  padding: 10px;
+}
+
+pre.error {
+  color: red;
+}
+
+p.footer {
+  text-align: right;
+  font-size: xx-small;
+  font-weight: lighter;
+  font-style: italic;
+  color: gray;
+}
+
+  </style></head><body><div class="content"><h1>z2ring</h1><!--introduction--><p>Return HEALPix ring number for a given z</p><!--/introduction--><h2>Contents</h2><div><ul><li><a href="#1">Syntax</a></li><li><a href="#2">Input Arguments</a></li><li><a href="#3">Return Arguments</a></li><li><a href="#4">Description</a></li><li><a href="#5">Example</a></li><li><a href="#6">See also</a></li></ul></div><h2>Syntax<a name="1"></a></h2><pre>zNum = z2ring(nSide,z)</pre><h2>Input Arguments<a name="2"></a></h2><pre>nSide      HEALPix resolution parameter
+z          numeric array of z values</pre><h2>Return Arguments<a name="3"></a></h2><pre>nRing      size(z) numeric array of ring numbers</pre><h2>Description<a name="4"></a></h2><p>HEALPix pixels centers are arranged in rings of constant z. Each ring spans a given range of z. z2ring returns the ring numbers that cover the input z values.</p><h2>Example<a name="5"></a></h2><pre class="codeinput">nSide = 4;
+zNum = z2ring(nSide,reshape((-7:7)*2/15,3,5))
+</pre><pre class="codeoutput">
+zNum =
+
+    14    11     9     6     4
+    13    10     8     6     3
+    12    10     7     5     2
+
+</pre><h2>See also<a name="6"></a></h2><p>ring2z</p><p>Copyright 2010-2011 Lee Samuel Finn. <a href="mealpix_notices.html">Terms of Use</a>.</p><p class="footer"><br>
+      Published with MATLAB&reg; 7.12<br></p></div><!--
+##### SOURCE BEGIN #####
+%% z2ring
+% Return HEALPix ring number for a given z
+
+%% Syntax
+%  zNum = z2ring(nSide,z)
+
+%% Input Arguments
+%  nSide      HEALPix resolution parameter
+%  z          numeric array of z values
+
+%% Return Arguments
+%  nRing      size(z) numeric array of ring numbers
+
+%% Description
+% HEALPix pixels centers are arranged in rings of constant z. Each ring
+% spans a given range of z. z2ring returns the ring numbers that cover the
+% input z values. 
+
+%% Example
+nSide = 4;
+zNum = z2ring(nSide,reshape((-7:7)*2/15,3,5))
+
+%% See also
+% ring2z
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
+##### SOURCE END #####
+--></body></html>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/inRing_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/inRing_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/inRing_help.m	(revision 27955)
@@ -0,0 +1,57 @@
+%% inRing 
+% Return list of pixels in a ring or ring section
+
+%% Syntax
+%  pixList = inRing(nSide, nRing, phi0, dPhi, 'Param1', Value1, ...);
+
+%% Input Arguments
+%  nSide       HEALPix resolution parameter
+%  nRing       Ring number (1 <= nRing <= 4*nSide-1)
+%  phi0, dPhi  (optional) Ring section longitudes [phi-dPhi,phi+dPhi]
+%
+%  Param       Value
+%  'nest'      return pixels with nested indexing (true | {false})
+%  'strict'    return only pixels whose center is in longitude range
+%              (true | {false})
+
+%% Return Arguments
+%  pixList     size(nRing) cell array of pixels in ring defined by nRing,
+%              phi0, dPhi
+
+%% Description
+%  nRing may be a numeric array, in which case phi0, dPhi and nest may each
+%  be either scalar or a size(nRing) array. If strict is false (default)
+%  then all pixels intersected by longitude range are included in pixList.
+
+%% Example
+
+% All pixels in ring 2 of nSide = 4 pixelization (ring indexed)
+pix = inRing(4,2);
+pix{:}
+
+% Same, but nested indexing
+pix = inRing(4,2,'nest',true);
+pix{:}
+nest2ring(4,pix{:})
+
+% Pixels in rings [2,4;8,10;12,14] and the longitude band
+% [7*pi/4,9*pi/4] 
+nRing = [2,3;5,12;13,14];
+pix = inRing(4,nRing,2*pi,pi/4);
+pix{1}
+pix{end}
+
+% Same, with strict selection
+pix = inRing(4,nRing,2*pi,pi/4,'strict',true);
+pix{1}
+pix{end}
+
+
+%% See also 
+% ringNum
+
+%% Requires 
+% ring2z, pix2vec
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_bugreport.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_bugreport.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_bugreport.m	(revision 27955)
@@ -0,0 +1,10 @@
+%% Reporting bugs
+% MEALPix software distributed on an "as is" basis, without warranties
+% or conditions of any kind, and without promise of support. Nevertheless,
+% the <http://gwastro.org Gravitational Wave Astronomy Group> makes
+% extensive use of MEALPix and welcomes any and all bug reports via e-mail
+% to our request-tracking system rt-mealpix@gwastro.org. Reported bugs
+% will be investigated and addressed on a best effort basis.
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_gs_top.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_gs_top.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_gs_top.m	(revision 27955)
@@ -0,0 +1,11 @@
+%% Getting Started with MEALPix
+% * <mealpix_overview.html Product Overview>
+% * <mealpix_reqts.html System Requirements>
+% * <mealpix_install.html Installation>
+% * <mealpix_healpix.html MEALPix for the HEALPix User>
+% * <mealpix_bugreport.html Reporting MEALPix Problems>
+% * <mealpix_references.html References>
+% * <mealpix_notices.html Notices>
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_healpix.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_healpix.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_healpix.m	(revision 27955)
@@ -0,0 +1,21 @@
+%% MEALPix for the HEALPix User
+%% MEALPix function names are derived from their HEALPix counterparts.
+% MEALPix functions are typically camel-cased (e.g., <angDist_help.html
+% |angDist|>, or <nSide2nPix_help.html |nSide2nPix|>). Underscores in HEALPix
+% names are dropped in the conversion to MEALPix names. 
+
+%% MEALPix functions accept array arguments
+% MEALPix functions exploit Matlab(tm)'s vectorization facilities to
+% allow for the processing of arrays of pixels, direction vectors and
+% position angle vectors via a single function call. For example, the
+% MEALPix implementation of <angDist_help.html |angDist|> accepts mixed arrays of
+% cartesian direction vectors, angular position vectors, and ring or nest
+% indexed pixels for either argument.  
+
+%% MEALPix indexes pixels from 1
+% HEALPix pixels are indexed from 0. In keeping with the Matlab standard
+% MEALPix pixels are indexed from 1. MEALPix pixels are indexed from 1:
+% i.e., MEALPix pixel number n corresponds to HEALPix pixel number n-1.  
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_install.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_install.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_install.m	(revision 27955)
@@ -0,0 +1,16 @@
+%% Installation
+% * Download MEALPix, which is provided as a gzipped tar file. Un-tar the
+% file and place the MEALPix directory in some appropriate location.
+% Hereafter we will refer to the fully-qualified path to MEALPix as
+% |$MEALPIX|. 
+%
+% * Add the MEALPix directory tree to your Matlab(TM) path using, e.g., the
+% Matlab(TM) command |addpath(genpath('$MEALPIX'))|. You may wish to add
+% this command to your matlab/startup.m file, in which case MEALPix will be
+% available whenever you start-up Matlab(TM). 
+%
+% The MEALPix Toolbox includes documentation that will appear in the Matlab
+% Documentation browser when Matlab(TM) starts-up with MEALPix in its path. 
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_notices.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_notices.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_notices.m	(revision 27955)
@@ -0,0 +1,17 @@
+%% Notices
+% MEALPix is based on HEALPix. HEALPix is distributed under the terms of
+% the <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU General
+% Public License> ("GPL") as published by the Free Software Foundation;
+% either version 2 of the GPL, or (at your option) any later version.  
+%
+% This Matlab(TM) expression of HEALPix is Copyright 2010-2011 by Lee
+% Samuel Finn. It is licensed under the Apache License, Version 2.0 (the 
+% "License"); you may not use MEALPix 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, MEALPix
+% 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.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_overview.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_overview.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_overview.m	(revision 27955)
@@ -0,0 +1,32 @@
+%% Product Overview
+% MEALPix is a native Matlab implementation of a substantial subset of the 
+% <http://healpix.jpl.nasa.gov/ HEALPix> subroutine library. It supports
+% the fast and accurate statistical and astrophysical analysis of massive
+% full-sky data sets. HEALPix is supported by NASA and ESO, used
+% extensively by the WMAP and PLANCK missions, and is part of the official 
+% FITS World Coordinate System.
+%
+% MEALPix provides fully vectorized functions for 
+%
+% * Conversion between position angles, cartesian direction vectors, and
+% HEALPix ring and nest pixel indexing schemes; 
+%
+% * Spherical harmonic resolution and analysis of functions on the sphere; 
+%
+% * Nearest pixel identification (pixels within a given disc, pixels in a
+% ring, pixels in a HEALPix face). 
+%
+% MEALPix was created from the Fortran90 implementation
+% <http://healpix.jpl.nasa.gov HEALPix> via a combination of hand coding
+% and machine assisted conversion of the HEALPix F90 source code. Some
+% routines were hand-coded based on the documented functionality of the F90
+% subroutines on which they were based. Other routines were hand-coded via
+% inspection of the HEALPix F90 implementation source. Still other routines
+% were machine converted from F90 to Matlab(TM) using
+% <http://www.mathworks.com/matlabcentral/fileexchange/5260 f2matlab>. In
+% this latter case the resulting Matlab(TM) source was then hand-modified
+% to vectorize the computations and take advantage of Matlab(TM) data types
+% and other functions.
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_product_page.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_product_page.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_product_page.m	(revision 27955)
@@ -0,0 +1,27 @@
+%%
+% <html>
+% <img src=images/logo.jpg alt="Gravitational Wave Astronomy Group Logo"
+% width=100%> 
+% <h1>MEALPix Toolbox</h1>
+% </html>
+
+%%
+% The MEALPix Toolbox is a native Matlab(TM) implementation of the
+% Hierarchical Equal Area isoLatitude Pixelization of the sphere (HEALPix).
+% It is derived from the <http://healpix.jpl.nasa.gov HEALPix> package,
+% originally developed by ESO and currently supported by JPL and ESO. 
+
+%% Functions
+% * <helpfuncbycat.html By Category>
+% * <helpfuncalpha.html Alphabetical List>
+
+%% Getting Started
+% * <mealpix_overview.html Product Overview>
+% * <mealpix_reqts.html Requirements>
+% * <mealpix_install.html Installation>
+% * <mealpix_healpix.html MEALPix for the HEALPix user>
+% * <mealpix_references.html References>
+% * <mealpix_notices.html Notices>
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_references.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_references.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_references.m	(revision 27955)
@@ -0,0 +1,32 @@
+%% References
+% K. M. Gorski et al. 2005.  <http://dx.doi.org/10.1086/427976 
+% HEALPix: A Framework for High-Resolution Discretization and Fast Analysis
+% of Data Distributed on the Sphere>. The Astrophysical Journal 622 759
+%
+% K. M. Gorski et al. 1999. <http://arxiv.org/abs/astro-ph/9905275 The
+% HEALPix Primer>. arXiv:astro-ph/9905275
+% 
+% K. M. Gorski et al. 2002.
+% <http://articles.adsabs.harvard.edu/cgi-bin/nph-iarticle_query?2002ASPC..281..107G&amp;data_type=PDF_HIGH&amp;whole_paper=YES&amp;type=PRINTER&amp;filetype=.pdf
+% HEALPix - a Framework for High Resolution, Fast Analysis on the Sphere>.
+% In Astronomical Data Analysis Software and Systems XI, Bohlender, D. A.
+% et al. ed.  ASP Conference Series Vol 281, pp. 107-111
+%
+% Mark R. Calabrettal and Boudewijn F. Roukema. 2007. 
+% <http://dx.doi.org/10.1111/j.1365-2966.2007.12297.x Mapping on the
+% HEALPix grid>. Monthly Notices of the Royal Astronomical Society 381:2
+% pp. 865 - 872. 
+%
+% W. O'Mullane et al. 2001. <http://dx.doi.org/10.1007/10849171_84
+% Splitting the Sky - HTM and HEALPix>. In Mining The Sky. Anthony Banday
+% et al., Ed. Anthony ESO Astrophysics  Symposia 2001, 638 - 648. 
+%
+% L. Nicastro and Calderone, G. 2008. 
+% <http://aspbooks.org/custom/publications/paper/394-0487.html Indexing
+% Astronomical Database Tables using HTM and HEALPix>. In Astronomical Data
+% Analysis Software and Systems (ADASS) XVII. A. W. Argle et. al, ed.
+% Astronomical Society of the Pacific Conference Series vol. 394 pp.
+% 486-490.   
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_reqts.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_reqts.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/mealpix_reqts.m	(revision 27955)
@@ -0,0 +1,23 @@
+%% System Requirements
+% MEALPix is a native Matlab(TM) implementation of HEALPix: neither a
+% HEALPix installation nor any third-party java or mex files are required
+% to make use of the basic HEALPix functionality. 
+
+%% Matlab(TM) requirements
+% MEALPix was developed and tested using Matlab(TM) R2010a. It should work
+% with any later version. 
+%
+% MEALPix does not require any Mathworks(TM) Toolboxes or add-ons. MEALPix
+% will make use of the capabilities of the
+% <http://www.mathworks.com/products/parallel-computing/ Parallel Computing
+% Toolbox>, should it be present.  
+
+%% Third-party software requirements
+% MEALPix also includes functions not found in HEALPix. Some of these
+% additional functions require other toolboxes: 
+%
+% * <hammer_help.html |hammer|> requires the
+% <http://www.eos.ubc.ca/~rich/map.html M_MAP> Toolbox. 
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/nPix2nSide_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/nPix2nSide_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/nPix2nSide_help.m	(revision 27955)
@@ -0,0 +1,22 @@
+%% nPix2nSide 
+% Finds number of HEALPix facet side subdivisions from number of pixels on
+% sphere
+
+%% Syntax
+%  nSide = nPix2nSide(nPix);
+
+%% Input Arguments
+%  nPix     number of pixels on sphere
+
+%% Return Arguments
+%  nSide    sub-divisions of HEALPix facet side
+
+%% Example
+nPix = 12*[1:4].^2;
+nSide = nPix2nSide(nPix)
+
+%% See also
+% nSide2nPix
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/nSide2nPix_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/nSide2nPix_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/nSide2nPix_help.m	(revision 27955)
@@ -0,0 +1,25 @@
+%% nSide2nPix
+% Convert HEALPix resolution parameter to number of pixels on sphere
+
+%% Syntax
+%  nPix = nSide2nPix(nSide)
+
+%% Input Arguments
+%  nSide    sub-divisions of facet sides. May be an array. 
+
+%% Return Arguments
+%  nPix     size(nSide) number of pixels on sphere corresponding to nSide
+
+%% Description
+% HEALPix divides the sphere into 12 basic facets. Each facet is further
+% divided into nSide sub-divisions for a total of 12*nSide^2 pixels. 
+
+%% Example
+nSide = 2.^[1:4];
+nPix = nSide2nPix(nSide)
+
+%% See also
+% nPix2nSide
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/nSide2res_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/nSide2res_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/nSide2res_help.m	(revision 27955)
@@ -0,0 +1,21 @@
+%% nSide2res
+% Determine angular resolution of a HEALPix map
+
+%% Syntax
+%  angres = nSide2res(nSide)
+
+%% Input Arguments
+%  nSide   HEALPix resolution parameter (may be an array)
+
+%% Return Arguments
+%  angres  Angular resolution in arcsec
+
+%% Example
+nSide = 2.^(8:12);
+nSide2res(nSide)
+
+%% See also
+% res2nSide
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/nest2ring_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/nest2ring_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/nest2ring_help.m	(revision 27955)
@@ -0,0 +1,23 @@
+%% nest2ring
+% Convert MEALPix pixel numbers from nest to ring indexing
+
+%% Syntax
+%  rPix = nest2ring(nSide,nPix)
+
+%% Input Arguments
+%  nSide     HEALPix resolution parameters
+%  nPix      numeric array of MEALPix nest indexed pixel numbers
+
+%% Return Arguments
+%  rPix      size(nPix) numeric array of ring indexed pixel numbers
+
+%% Example
+nPix = 1:10;
+rPix = nest2ring(2,nPix)
+nPix = ring2nest(2,rPix)
+
+%% See also
+% ring2nest
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/pix2alm_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/pix2alm_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/pix2alm_help.m	(revision 27955)
@@ -0,0 +1,46 @@
+%% pix2alm 
+% Find spherical harmonic decomposition of function on sphere
+
+%% Syntax
+%  alm = pix2alm(v)
+%  alm = pix2alm(v, lmax)
+
+%% Input Arguments
+%  v       array of pixel values
+%  lMax    (optional) max order of harmonic to calculate
+%
+%  nPix = numel(v), with nPix = 12*nSide^2 for nSide a power of 2. 
+%  lMax defaults to 2*floor(nSide/3)
+
+%% Return Arguments
+%  alm     coefficients of spherical harmonic expansion
+
+%% Description
+% Let $x_k$ denote the location of pixel $k$ and $v_k$ the function value
+% at $x_k$. Then
+%
+% $$alm(j) = \frac{4\pi}{N}\sum_{k=0}^{N-1} Y_{LM}^{\dagger}(x_k) v_k$$
+%
+% where $j=(L+1)^2+M-L$ and $N$ is the number of pixels (12*nSide^2)
+
+%% Example
+% estimate alm of dummy data
+ns = 2^4;
+np = 12*ns^2;
+v = ylm(ns,1,1) + ylm(ns,2,-2) + ylm(ns,3,0) + rand(1,np)/10; 
+lMax = 4;
+alm = pix2alm(v,lMax);
+for L = 0:3
+  fprintf('L = %d: ',L);
+  fprintf('%7.3f ',abs(alm((L+1)^2+(-L:L)-L)));
+  fprintf('\n');
+end
+
+%% See also
+% alm2pix
+
+%% Requires
+% ylm
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/pix2ang_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/pix2ang_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/pix2ang_help.m	(revision 27955)
@@ -0,0 +1,33 @@
+%% pix2ang
+% Find spherical coordinate location of HEALPix pixels
+
+%% Syntax
+%  tp = pix2ang(nSide,pix,'Param1',Value1,...)
+
+%% Input Arguments
+%  nSide    HEALPix resolution parameter (positive integer power of 2)
+%  pix      (optional) array of pixel values to find coordinates of
+%
+%  Param    Values
+%  'nest'   pixels are given in nested indexing (true | {false})
+
+%% Return Arguments
+%  tp       cell array of [theta; phi] pixel locations (radians)
+
+%% Example
+% Return [theta; phi] postion angles for all pix of nSide=4, nest scheme
+nSide = 4;
+tp = pix2ang(nSide,'nest',true);
+size(tp)
+tp{1}
+% Return position angles for a random assortment of pixels
+pix = randi(nSide2nPix(nSide),3,4);
+tp = pix2ang(nSide,pix);
+size(tp)
+tp{1}
+
+%% See also
+% See also ang2pix, pix2vec, vec2pix
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/pix2vec_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/pix2vec_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/pix2vec_help.m	(revision 27955)
@@ -0,0 +1,40 @@
+%% pix2vec
+% Convert MEALPix pixel numbers to cartesian location vectors
+
+%% Syntax
+%  [x,y,z] = pix2vec(nSide,pix,'Param1',Value1,...)
+%  xyz = pix2vec(nSide,pix,'Param1',Value1,...)
+
+%% Input Arguments
+%  nSide       HEALPix resolution parameter
+%  pix         (optional) numeric array of pixel numbers
+%
+%  Param       Value
+%  'nest'      indexing scheme is nested (true | {false}) 
+
+%% Return Arguments
+%  x,y,z       size(pix) size(pix) numeric array of unit vector coordinate
+%              components corresponding to pixels pix
+%  xyz         size(pix) size(pix) cell array of cartesian unit vectors
+%              corresponding to pixels pix
+
+%% Example
+nSide = 2^4;
+nPix = nSide2nPix(nSide);
+pix0 = reshape(1:6,3,2);
+pix1 = reshape(nPix+(-5:0),3,2);
+pix = [pix0,pix1];
+xyz = pix2vec(nSide,pix);
+xyzn = pix2vec(nSide,pix,'nest',true);
+size(xyz)
+[xyz{1},xyz{end}]
+[xyzn{1},xyzn{end}]
+
+%% See also
+% ang2pix, pix2ang, vec2pix
+
+%% Requires
+% nest2ring
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/pix2xy_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/pix2xy_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/pix2xy_help.m	(revision 27955)
@@ -0,0 +1,19 @@
+%% pix2xy
+% Find pixel cartesian face coordinates
+
+%% Syntax
+%  xy = pix2xy(nSide,nPix)
+
+%% Input Arguments
+%  nSide     HEALPix resolution parameter
+%  nPix      nested indexing pixel numbers to find coordinates of
+
+%% Return Arguments
+%  xy        size(nPix) cell array of pixel coordinates on face
+
+%% Example
+nPix = reshape(1:24,[4,3,2]);
+xy = pix2xy(2,nPix)
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/queryDisc_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/queryDisc_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/queryDisc_help.m	(revision 27955)
@@ -0,0 +1,40 @@
+%% queryDisc
+% Find all pixels whose centers are within a specified disc
+
+%% Syntax
+%  pix = queryDisc(nSide,c0,r,'Param1',Value1,...)
+
+%% Input Arguments
+%  nSide     HEALPix resolution parameter
+%  c0        disc center. May be specified as a pixel number, spherical
+%            coordinate location [theta, phi] in rads, or as a cartesian
+%            unit vector [x;y;z].   
+%  r         disc radius (radians)
+% 
+%  Param     Value
+%  'nest'    pixels are returned using nested indexing (true | {false})
+
+%% Return Arguments
+%  pix      list of pixels in disc
+
+%% Example
+nSide=32;
+% Pixels within pi/10 radians of north pole
+pix = queryDisc(nSide,[0;0;1],pi/10);
+numel(pix)
+nSide2nPix(nSide)*((pi/10)/(4*pi))
+% Pixels within pi/10 radians of south pole
+pix = queryDisc(nSide,[0;0;-1],pi/10);
+numel(pix)
+% Pixels within pi/10 radians of 0 long, lat
+pix = queryDisc(nSide,[1;0;0],pi/10);
+numel(pix)
+
+%% See also
+% queryPolygon, queryStrip, queryTriangle
+
+%% Requires
+% pix2vec, ang2vec, angDist
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/res2nSide_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/res2nSide_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/res2nSide_help.m	(revision 27955)
@@ -0,0 +1,21 @@
+%% res2nSide
+% Find minimum HEALPix resolution parameter yielding required resolution
+
+%% Syntax
+%  nSide = res2nSide(r)
+
+%% Input Arguments
+%  r        angular resolution (arc seconds)
+
+%% Return Arguments
+%  nSide    minimum base pixel sub-divisions corresponding to resolution r
+
+%% Example
+r = 100*rand(3,4);
+nSide = res2nSide(r)
+
+%% See also
+% nSide2res
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/ring2nest_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/ring2nest_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/ring2nest_help.m	(revision 27955)
@@ -0,0 +1,22 @@
+%% ring2nest
+% Convert MEALPix pixel numbers from ring to nest indexing
+
+%% Syntax
+%  nPix = ring2nest(nSide,rPix)
+
+%% Input Arguments
+%  nSide      HEALPix resolution parameter
+%  rPix       ring indexed MEALPix pixel numbers
+
+%% Return Arguments
+%  nPix       next indexed MEALPix pixel numbers
+
+%% Example
+nPix = ring2nest(4,reshape(1:6,2,3))
+rPix = nest2ring(4,nPix)
+
+%% See also
+% nest2ring
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/ring2z_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/ring2z_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/ring2z_help.m	(revision 27955)
@@ -0,0 +1,22 @@
+%% ring2z
+% Find HEALPix ring number corresponding to a given z coordinate
+
+%% Syntax
+%  z = ring2z(nSide,nRing)
+
+%% Input Arguments
+%  nSide    HEALPix resolution parameter
+%  nRing    numeric array of ring numbers (in range [1,4*nSide-1])
+
+%% Return Arguments
+%  z        size(nRing) numeric array of pixel center z coordinates
+
+%% Example
+nRing = reshape(1:15,3,5)
+z = ring2z(4,nRing)
+
+%% See also
+% z2ring
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/template_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/template_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/template_help.m	(revision 27955)
@@ -0,0 +1,64 @@
+%% NAME
+% short descr
+
+%% Syntax
+
+%% Input Arguments
+
+%% Return Arguments
+
+%% Description
+
+%% Algorithm Notes
+
+%% Example
+
+%% See also
+
+%% Requires
+
+%% References
+% K. M. Gorski et al. 2005.  <http://dx.doi.org/10.1086/427976 
+% HEALPix: A Framework for High-Resolution Discretization and Fast Analysis
+% of Data Distributed on the Sphere>. The Astrophysical Journal 622 759
+%
+% K. M. Gorski et al. 1999. <http://arxiv.org/abs/astro-ph/9905275 The
+% HEALPix Primer>. arXiv:astro-ph/9905275
+% 
+% K. M. Gorski et al. 2002.
+% <http://articles.adsabs.harvard.edu/cgi-bin/nph-iarticle_query?2002ASPC..281..107G&amp;data_type=PDF_HIGH&amp;whole_paper=YES&amp;type=PRINTER&amp;filetype=.pdf
+% HEALPix - a Framework for High Resolution, Fast Analysis on the Sphere>.
+% In Astronomical Data Analysis Software and Systems XI, Bohlender, D. A.
+% et al. ed.  ASP Conference Series Vol 281, pp. 107-111
+%
+% Mark R. Calabrettal and Boudewijn F. Roukema. 2007. 
+% <http://dx.doi.org/10.1111/j.1365-2966.2007.12297.x Mapping on the
+% HEALPix grid>. Monthly Notices of the Royal Astronomical Society 381:2
+% pp. 865 - 872. 
+%
+% W. O'Mullane et al. 2001. <http://dx.doi.org/10.1007/10849171_84
+% Splitting the Sky - HTM and HEALPix>. In Mining The Sky. Anthony Banday
+% et al., Ed. Anthony ESO Astrophysics  Symposia 2001, 638 - 648. 
+%
+% L. Nicastro and Calderone, G. 2008. 
+% <http://aspbooks.org/custom/publications/paper/394-0487.html Indexing
+% Astronomical Database Tables using HTM and HEALPix>. In Astronomical Data
+% Analysis Software and Systems (ADASS) XVII. A. W. Argle et. al, ed.
+% Astronomical Society of the Pacific Conference Series vol. 394 pp.
+% 486-490.   
+
+%% Notices
+% Copyright 2010-2011 Lee Samuel Finn
+% 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.
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/vec2ang_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/vec2ang_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/vec2ang_help.m	(revision 27955)
@@ -0,0 +1,42 @@
+%% vec2ang
+% Convert from cartesian direction vector to position angle on sphere
+
+%% Syntax
+%  tp = vec2ang(xyz)
+
+%% Input Arguments
+%  xyz    cell array of [3,1] cartesian coordinate direction vectors
+%
+% The direction vectors need not be normalized.
+
+%% Return Arguments
+%  tp     cell array of [2,1] position angles ([theta, phi]) on sphere
+
+%% Example
+% Create a [3,4] cell array of position angles and manually convert to
+% cartesian direction vectors. Use vec2ang to convert back to position
+% angles and compare with originals
+
+% angular position vectors
+z = 2*rand(3,4)-1;
+th = acos(z);
+ph = 2*pi*rand(3,4)-pi;
+
+% convert to cartesian coordinate vectors
+x = sqrt(1-z.^2).*cos(ph);
+y = sqrt(1-z.^2).*sin(ph);
+xyz = arrayfun(@(x,y,z)([x,y,z]),x,y,z,'UniformOutput',false);
+
+% use vec2ang to convert cartesian coordinate vectors to angular position
+% vectors
+tp = vec2ang(xyz);
+
+% Compare original vectors with final vectors
+tp0 = arrayfun(@(t,p)([t;p]),th,ph,'UniformOutput',false);
+tf = cellfun(@(x,y)(any(abs(x-y)>4*eps)),tp,tp0)
+
+%% See also
+% ang2vec
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/vec2pix_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/vec2pix_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/vec2pix_help.m	(revision 27955)
@@ -0,0 +1,37 @@
+%% vec2pix
+% Convert cartesian direction vectors to MEALPix pixel numbers
+
+%% Syntax
+%  nPix = vec2pix(nSide,xyz,'Param1',Value1,...);
+
+%% Input Arguments
+%  nSide     HEALPix resolution parameter
+%  xyz       cell array of [3,1] cartesian direction vectors
+%  
+%  Param     Value
+%  'nest'    use nested indexing (true | {false})
+
+%% Return Arguments
+%  nPix      size(xyz) pixel number array
+
+%% Example
+% Find pixels corresponding to a [4,5] set of (unnormalized) cartesian
+% vectors:
+nSide = 4;
+xyz0 = squeeze(num2cell(2*rand(3,4,5)-1,1));
+nPix = vec2pix(nSide,xyz0)
+
+% Find the normalized vectors corresponding to the pixels
+xyz1 = pix2vec(nSide,nPix);
+
+% Find angular distance from vectors to pixels
+d = angDist(xyz0,xyz1)
+
+%% See also
+% ang2pix, pix2ang, pix2vec
+
+%% Requires
+% ring2nest
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/xy2pix_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/xy2pix_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/xy2pix_help.m	(revision 27955)
@@ -0,0 +1,37 @@
+%% xy2pix
+% Find (nest indexed) MEALPix pixel number corresponding to a pixel index
+% on a HEALPix face 
+
+%% Syntax
+% ipix = xy2pix(nSide, ix, iy, nFace)
+
+%% Input Arguments
+%  nside     HEALPix resolution parameter (power of 2)
+%  ix,iy     integer pixel location on face (1 <= ix, iy <= nSide)
+%  nFace     HEALPix face  number (1 <= nFace <= 12)
+%
+% One or both ix and iy may be scalars. If neither is a scalar both must
+% have the same size. 
+
+%% Return Arguments
+%  ipix      NESTED pixel index for given x,y on the face
+
+%% Description
+% At lowest resolution HEALPix divides the sphere into 12 faces, each with
+% its own coordinate system. Each face is further subdivided in a regular
+% fashion as the resolution parameter is increased. Given a face number
+% (from 1 to 12), a resolution parameter, and a location on the face XY2PIX
+% identifies the pixel number (in the nested indexing scheme).
+
+%% Example
+nSide = 4;
+nFace = 3;
+ix = [1 2; 1 2]; 
+iy = [1 1; 2 2];
+nPix = xy2pix(nSide,ix,iy,nFace)
+
+%% See also
+% pix2xy
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/ylm_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/ylm_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/ylm_help.m	(revision 27955)
@@ -0,0 +1,28 @@
+%% ylm
+% Evaluate spherical harmonic basis functions $Y_{LM}$ at pixel centers
+
+%% Syntax
+%  v = ylm(nSide,L,M,'Param1',Value1,'Param2',Value2,...);
+
+%% Input Arguments
+%  nSide    HEALPix resolution parameter (power of 2)
+%  L        spherical harmonic degree (0 <= L)
+%  M        spherical harmonic order (-M <= L <= M)
+%
+%  Param    Value
+%  'real'   return real values (true | {false})
+%  'nest'   nested indexing flag (true | {false}) 
+
+%% Return Arguments
+%  v       spherical harmonics evaluated at pixel centers
+
+%% Example
+% Plot Ylm for (L,M) = (4,2) on nSide = 16 HEALPix sphere
+pix = ylm(16,4,2);
+hp3d(pix);
+
+%% Requires
+% pix2ang
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/z2ring_help.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/z2ring_help.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/help/z2ring_help.m	(revision 27955)
@@ -0,0 +1,27 @@
+%% z2ring
+% Return HEALPix ring number for a given z
+
+%% Syntax
+%  zNum = z2ring(nSide,z)
+
+%% Input Arguments
+%  nSide      HEALPix resolution parameter
+%  z          numeric array of z values
+
+%% Return Arguments
+%  nRing      size(z) numeric array of ring numbers
+
+%% Description
+% HEALPix pixels centers are arranged in rings of constant z. Each ring
+% spans a given range of z. z2ring returns the ring numbers that cover the
+% input z values. 
+
+%% Example
+nSide = 4;
+zNum = z2ring(nSide,reshape((-7:7)*2/15,3,5))
+
+%% See also
+% ring2z
+
+%%
+% Copyright 2010-2011 Lee Samuel Finn. <mealpix_notices.html Terms of Use>.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/info.xml
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/info.xml	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/info.xml	(revision 27955)
@@ -0,0 +1,61 @@
+<productinfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+    xsi:noNamespaceSchemaLocation="optional">
+    <?xml-stylesheet type="text/xsl"href="optional"?>
+    <!-- info.xml file for the MEALPix toolbox -->
+    <!-- Version 1.0 -->
+    <!-- Copyright 2010 Lee Samuel Finn.-->
+    
+    <!-- Supply the following six elements in the order specified -->
+    <!-- (Required) element; matlabrelease content is not currently used -->
+    <matlabrelease>2010b</matlabrelease>
+    <!-- (Required) The name element appears in the Contents pane -->
+    <name>MEALPix</name>
+    <!-- (Required) The type elementidentifies your package; pick one: -->
+    <!-- matlab, toolbox, simulink, blockset, links_targets  -->
+    <type>toolbox</type>
+    <!-- (Optional) icon file to display in the Start button -->
+    <icon></icon>
+    <!-- (Required if you supply help) relative path to help (HTML) folder -->
+    <help_location>./help</help_location>
+    <!-- (Required if you supply help) icon used in the Help browser TOC -->
+    <help_contents_icon>$toolbox/matlab/icons/bookicon.gif</help_contents_icon>
+    
+    <!-- - - - - - - - - - - - -  Start menu - - - - - - - - - - - - - - - -->
+    <!-- Optional list of entries to display on Start Menu -->
+    <!-- Callback items are function calls or commands for toolbox -->
+    <!-- Refresh the Start button to see your entries -->
+    <!-- Remove this list if you do not want a Start button entry -->
+    <list>
+         <listitem>
+            <!-- The label provides the text for this menu item --> 
+            <label>MEALPix Toolbox Documentation</label>
+            <!-- This callback is a command to open your documentation -->
+            <callback>web ./helpfiles/mytoolbox_product_page.html -helpbrowser</callback>
+              <!-- Menu item icon (a toolbox icon from the help browser ) -->
+              <icon>$toolbox/matlab/icons/bookicon.gif</icon>
+        </listitem>
+        <!-- <listitem> -->
+            <!-- A menu item label for a opening a GUI  -->
+            <!-- <label>MyToolbox GUI</label> -->
+            <!-- A command to open a GUI, if any -->
+            <!-- <callback>mytoolboxgui</callback> -->
+            <!-- The icon for this menu item -->
+            <!-- <icon>$toolbox/matlab/icons/figureicon.gif</icon> -->
+        <!-- </listitem> -->
+        <!-- <listitem> -->
+            <!-- A menu item label for a opening a demo -->
+            <!-- <label>MyToolbox Demo</label> -->
+            <!-- A command to open a demo if any -->
+            <!-- <callback>mytoolboxdemo</callback> -->
+            <!-- The icon for this menu item -->
+            <!-- <icon>HelpIcon.DEMOS</icon> -->
+        <!-- </listitem> -->
+        <listitem>
+             <!-- Include call to open your Web site, if any -->
+           <label>MEALPix Toolbox Web Site</label>
+            <callback>web http://gwastro.org -browser;</callback>
+            <icon>$docroot/techdoc/matlab_env/examples/webicon.gif</icon>
+        </listitem>
+        <!-- Add listitems for other features of your toolbox... -->
+    </list>
+</productinfo>
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/Contents.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/Contents.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/Contents.m	(revision 27955)
@@ -0,0 +1,28 @@
+% MEALPix
+%   alm2pix    - Evaluate spherical harmonic function expansion on HEALPix pixels
+%   alm2spec   - valuate angular power spectral density
+%   ang2pix    - Convert spherical coordinate location to HEALPix pixel number
+%   ang2vec    - Convert from spherical to cartesian coordinates
+%   angDist    - Computes angular distance on the unit sphere
+%   corners    - Find pixel corners
+%   hp3d       - Plots a HEALPix dataset on a 3D sphere
+%   hpInterp   - Interpolate data on sphere to MEALPix pixels
+%   hpStat     - Compute descriptive statistics of a pixel value list
+%   inRing     - return pixels in ring or ring section
+%   nPix2nSide - Convert number of pixels to number of facet side subdivisions
+%   nSide2nPix - Convert resolution parameter to number of pixels
+%   nSide2res  - Calculates angular resolution of a HEALPix map in arcsec 
+%   nest2ring  - Convert MEALPix pixel numbers from nest to ring indexing
+%   pix2alm    - Find spherical harmonic decomposition of function on sphere
+%   pix2ang    - Find spherical coordinate location of HEALPix pixels
+%   pix2vec    - convert HEALPix pixel numbers to (x,y,z) unit vector
+%   pix2xy     - Find pixel cartesian face coordinates
+%   queryDisc  - Find all pixels whose centers are within a specified disc
+%   res2nSide  - Finds minimum base pixel sub-division for required resolution
+%   ring2nest  - Convert MEALPix pixel numbers from ring to nest indexing
+%   ring2z     - Find HEALPix ring number corresponding to a given z coordinate
+%   vec2ang    - Convert cartesian direction vector to position angle on sphere
+%   vec2pix    - Convert cartesian direction vectors to MEALPix pixel numbers
+%   xy2pix     - gives the pixel number ipix (NESTED) of ix, iy and face_num
+%   ylm        - returns spherical harmonic basis Y_L^M on the HEALPix sphere
+%   z2ring     - Find HEALPix ring numbers from direction vector z coordinate
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/alm2pix.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/alm2pix.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/alm2pix.m	(revision 27955)
@@ -0,0 +1,76 @@
+function v = alm2pix(nSide, alm, varargin)
+% ALM2PIX Evaluate spherical harmonic function expansion on HEALPix pixels
+%
+% v = alm2pix( nSide, alm, 'Param1', Value1, 'Param2', Value2, ...)
+%
+% nSide   HEALPix resolution parameter (power of 2)
+% alm     Spherical harmonic expansion coefficients
+%
+% Param   Value
+% 'lmax'  max order of harmonic to calculate (default floor2*nSide/3)
+% 'nest'  (true | {false})
+%
+% v       array of function values at pixels (numel(v) = 12*nSide^2)
+%
+% Coefficient of Y_{lm} is alm((l+1)*(l+1)+m-1)
+% 
+% Example
+%  % Shows the gibbs-like error at the poles
+%  hp3d(alm2pix(16,pix2alm(16,ones(1,12*16^2)))-1)
+%
+% Requires ylm
+% See also pix2alm
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: alm2pix.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+%% Parse and validate input
+p = inputParser;
+p.addRequired('nSide',@qNSide);
+p.addRequired('alm',@qALM);
+p.addParamValue('lMax', 2*floor(nSide/3),@qLMax); %% SA corrected it on 11/03/2014 
+%p.addParamValue('lMax', floor(2*nSide/3),@qLMax);
+p.addParamValue('nest', false, @islogical)
+
+p.parse(nSide, alm, varargin{:});
+
+nSide = p.Results.nSide;
+alm = p.Results.alm;
+lMax = p.Results.lMax;
+nest = p.Results.nest;
+
+%% 
+nPix = nSide2nPix(nSide);
+v = zeros(1,nPix);
+p = 0; % alm index
+lMax = max(lMax,sqrt(numel(alm))-1); 
+for L = 0:lMax
+  for M = -L:L
+    v = v + alm(1+p).*ylm(nSide,L,M,'nest',nest);
+    p = p + 1;
+  end
+end
+
+return
+
+function tf = qLMax(lMax)
+% QLMAX validate lMax
+%
+% lMax is a non-negative integer-valued scalar
+
+tf = isnumeric(lMax) && isscalar(lMax) && floor(lMax) == lMax && lMax >= 0;
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/alm2spec.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/alm2spec.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/alm2spec.m	(revision 27955)
@@ -0,0 +1,62 @@
+function cL = alm2spec(varargin)
+% ALM2SPEC valuate angular power spectral density
+%
+%  cL = alm2spec(alm)
+%  cL = alm2spec(alm, lMax)
+%
+%  alm     real valued coefficients
+%  lMax    max order of harmonic to calculate (default 20)
+%
+%  cL      angular power spectrum
+%
+% Coefficients alm are arranged such that alm(k) is the coefficient
+% corresponding to k = (L+1)^2 + M - L
+%
+% Example
+%  % Power spectrum estimate of dummy data
+%  pix = ylm(16,4,2) + ylm(16,7,2) + ylm(16,16,-4) + .1.*rand(1,12*16*16);
+%  alm = pix2alm(16,pix,100);
+%  cl = alm2spec(alm,100);
+%  plot(cl);
+%
+% See also pix2alm, alm2pix
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: alm2spec.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+%% Parse and validate input
+p = inputParser;
+p.addRequired('alm',@qAlm);
+p.addOptional('lMax',20,@qLMax);
+p.parse(varargin{:});
+
+alm = p.Results.alm;
+lMax = p.Results.lMax;
+
+%% Compute power spectrum
+% Angular power spectrum for given L is sum over m of (|alm|^2/(2L+1))
+
+% Preallocate
+cL=zeros(1,lMax+1);
+
+cL(1) = abs(alm(1))^2;
+for L = 1:lMax
+  % Coefficients for L run from L^2+1 to (L+1)^2
+  cL(L+1) = sum(abs(alm(L^2+(1:(2*L+1)))).^2);
+end
+cL = cL./(2*(0:L)+1);
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/ang2pix.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/ang2pix.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/ang2pix.m	(revision 27955)
@@ -0,0 +1,175 @@
+function pix = ang2pix(varargin)
+% ANG2PIX Convert spherical coordinate location to HEALPix pixel number
+%
+% pix = ang2pix(nSide, v);
+% pix = ang2pix(nSide, v, nest);
+%
+%  nSide      HEALPix resolution parameter
+%  v          (theta, phi) pairs in radians as either size(v,1) == 2 or as
+%             cellarray of [2,1] 
+%  nest       (optional) nested pixel number scheme (true | {false})
+%
+%  pix        array of pix numbers:
+%             v on input     output
+%             iscell(v)      size(v) cell array of pixel numbers
+%             isnumeric(v)   numeric array of pixel numbers
+%
+% Example
+% vTheta = acos(2*rand(3,5)-1);
+% vPhi = 2*pi*rand(3,5);
+% v = arrayfun(@(x,y)([x,y]),vTheta,vPhi,'UniformOutput',false);
+% nSide = 8;
+% pix = ang2pix(nSide,v);
+%
+% NB: Matlab indexes pixels from 1
+%
+% See also vec2pix, pix2ang, pix2vec
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: ang2pix.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+%% Parse and validate arguments
+p = inputParser;
+p.addRequired('nSide',@qNSide);
+p.addRequired('v',@qV);
+p.addOptional('nest',false,@islogical)
+p.parse(varargin{:});
+nSide = p.Results.nSide;
+v = p.Results.v;
+nest = p.Results.nest;
+
+%% unpack v
+if isnumeric(v)
+  ns = size(v);
+  ns = ns(2:end);
+  vt = reshape(v(1,:),ns);
+  vp = reshape(v(2,:),ns);
+else
+  vt = cellfun(@(x)(x(1)),v);
+  vp = cellfun(@(x)(x(2)),v);
+end
+
+%% Compute pix numbers
+pix = f_ang2pix_ring(nSide,vt,vp);
+
+%% If required convert to nest indexing
+if nest
+  pix = ring2nest(nSide,pix);
+end
+
+return
+
+%% qV
+function tf = qV(v)
+% QV test v for inputParser
+
+if isnumeric(v)
+  tf = 2 == size(v,1);
+elseif iscell(v)
+  nSize = cellfun('prodofsize',v);
+  tf = all(2 == nSize(:));
+else
+  tf = false;
+end
+
+return
+
+%% f_ang2pix_ring
+function ipix = f_ang2pix_ring(nside, theta, phi)
+
+%=======================================================================
+% renders the pixel number ipix (RING scheme) for a pixel which contains
+% a point on a sphere at coordinates theta and phi, given the map
+% resolution parameter nside
+%=======================================================================
+
+%% f90 I/O Check/Init
+if(nside<1 || nside>8192)
+  msgid = [mfilename ':nSide'];
+  error(msgid,'%s nSide (%d) out of range',msgid,nside);
+end;
+if(theta<0 | theta>pi) %#ok<OR2>
+  msgid = [mfilename ':theta'];
+  error(msgid,'%s %e is out of range [0,pi)',msgid,theta);
+end;
+
+z = cos(theta);
+za = abs(z);
+% in [0,4)
+tt = mod(phi,2*pi)/(pi/2);
+
+ip = zeros(size(z));
+ipix = zeros(size(z));
+
+% Logical arrays of pix regions (to remove if statement and vectorize calc)
+emask = za <= 2/3;
+pmask = ~emask;
+
+%% Equatorial Region Calculation
+temp1(emask) = nside*(0.5+tt(emask));
+temp2(emask) = nside*0.75*z(emask);
+
+% index of  ascending edge line
+jp(emask) = fix(temp1(emask)-temp2(emask));
+
+% index of descending edge line
+jm(emask) = fix(temp1(emask)+temp2(emask));
+
+% in {1,2n+1} (ring number counted from z=2/3)
+ir = zeros(size(emask));
+ir(emask) = fix(nside + 1 + jp(emask) - jm(emask));
+
+% kshift=1 if ir even, 0 otherwise
+kshift(emask) = fix(1 - mod(ir(emask),2));
+
+%% What is this all about?
+nl4 = 4*nside;
+% in {0,4n-1}
+ip(emask) = fix(fix((jp(emask)+jm(emask)-nside+kshift(emask)+1)/2));
+% if(ip(q) >= nl4)
+ip(emask & (ip >= nl4)) = fix(ip(emask & (ip >= nl4)) - nl4);
+% end;
+ipix(emask) = fix(2*nside*(nside-1) + nl4*(ir(emask)-1) + ip(emask));
+
+%% NorthSouth Polar Cap Calculation
+%else;
+%tt=mod(tt,1);
+tp(pmask) = tt(pmask) - fix(tt(pmask));
+tmp(pmask) = nside*sqrt(3*(1-za(pmask)));
+% increasing edge line index
+jp(pmask) = fix(tp(pmask).*tmp(pmask));
+% decreasing edge line index
+jm(pmask) = fix((1-tp(pmask)).*tmp(pmask));
+% ring number counted from the closest pole
+ir = zeros(size(pmask));
+ir(pmask) = fix(jp(pmask) + jm(pmask) + 1);
+% in {0,4*ir-1}
+ip(pmask) = fix(fix(tt(pmask).*ir(pmask)));
+newmask1 = (pmask&(ip >= 4*ir));
+%if(ip(pmask) >= 4.*ir(pmask))
+ip(newmask1) = fix(ip(newmask1) - 4*ir(newmask1));
+%end;
+newmask2 = (pmask&(z>0));
+%if(z(pmask)>0.)
+ipix(newmask2) = fix(2*ir(newmask2).*(ir(newmask2)-1) + ip(newmask2));
+newmask3 = (pmask&~(z>0));
+%else;
+nPix = 12*nside^2;
+ipix(newmask3) = fix(nPix-2*ir(newmask3).*(ir(newmask3)+1)+ip(newmask3)); 
+%end;
+
+ipix = ipix+1; %MEALPix numbering
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/ang2vec.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/ang2vec.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/ang2vec.m	(revision 27955)
@@ -0,0 +1,61 @@
+function xyz = ang2vec(tp)
+% ANG2VEC Convert from spherical to cartesian coordinates
+%
+% xyz = ang2vec(tp)
+%
+%  tp        cell of [2,1] angular locations [theta; phi] in radians
+%
+%  xyz       size(tp) celll array of [3,1] vectors
+%
+% Example
+% tp = [acos(2*rand(1,12)-1); 2*pi*rand(1,12)];
+% tp = mat2cell(tp,2,ones(12,1));
+% tp = reshape(tp,3,4);
+% xyz = ang2vec(tp);
+% xyz{2,3}
+% tp{2,3}
+%
+% See also vec2ang
+%
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: ang2vec.m 5831 2011-02-25 23:55:19Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+
+%% IO check
+error(nargchk(1,1,nargin,'struct'));
+error(nargoutchk(1,1,nargout,'struct'));
+
+xyz = cellfun(@dAng2Vec,tp,'UniformOutput',false);
+
+return
+
+function xyz = dAng2Vec(tp)
+% dAng2Vec location on sphere to unit cartesian direction vector
+%
+% xyz = dAng2Vec(tp)
+%
+% tp   [theta, phi] in radians
+%
+% xyz   [3,1]
+
+t = tp(1);
+z = cos(t);
+s = sin(t);
+p = tp(2);
+xyz = [cos(p)*s;sin(p)*s;z];
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/angDist.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/angDist.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/angDist.m	(revision 27955)
@@ -0,0 +1,179 @@
+function rad = angDist(varargin)
+%ANGDIST Computes angular distance on the unit sphere
+%
+%   rad = angDist(v0,v1,'Param1',Value1,'Param2',Value2,...)
+%
+%   v0, v1      (numerical or cell) array of points on sphere
+%
+%   Param       Value
+%   'nSide'     HEALPix resolution parameter (integer power 2)
+%   'nest'      nested indexing (true | {false})
+%
+%   rad         array of angular distances (radians)
+%
+% Description
+% angDist computes the angular distances between points on the sphere.
+% Points may be specified as MEALPix pixel numbers, spherical coordinate
+% location vectors, or cartesian coordinate vectors. Cartesian coordinate
+% input vectors need not be normalized. 
+%
+% Either or both of v0, v1  may be a scalar; otherwise they must both be
+% the same size. When one is a scalar than the distance is computed between
+% that point and all the points specified in the complementary argument.
+% When pix0 and pix1 are arrays then the distances are returned between the
+% corresponding points in the two arrays.
+%
+% If any location is specified as a pixel number then nSide must be
+% specified. The indexing scheme for pixels center locations defaults to
+% ring; to specify nested indexing set the 'nest' parameter to true. 
+%
+% v0 or v1 specified as numeric arrays:
+% If all points in v0 are pixel numbers then v0 may be specified as a
+% numeric array (similarly v1, mutatis mundis). nSide must be specified.
+% Pixels numbers may be specified in ring indexing or nested indexing. For
+% nested indexing the nest parameter must be set to true. 
+%
+% pix0 or pix1 specified as cell arrays:
+% Either or both pix0 or pix1 may be specified as a cell array, in which
+% case each cell specifies a location on the sphere as either a pixel
+% number, a two-component ([theta; phi]) spherical coordinate vector, or a
+% three component ([x;y;z]) cartesian vector. nSide must be specified if
+% any location is identified as a pixel center. 
+%
+% Example
+%  % angular distance from pole to equator:
+%  v0 = {[0;0;1]}; % north pole
+%  v1 = {[1;0;0]}; % point on equator
+%  rad = angDist(v0, v1);
+%  
+%  % angular distance from pole to pixels 1, 17, 33 for nSide = 4:
+%  v0 = {[0;0;1]};
+%  rad = angDist([1, 17, 33], v0, 'nSide', 4);
+% 
+%  % angular distance from pixels 1 to 4, 2 to 5, and 3 to 6 for nSide = 8:
+%  rad = angDist(8, [1, 2, 3], [4, 5, 6]);
+%
+% Requires pix2vec, ang2vec
+%
+% See also queryDisc
+% 
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: angDist.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+
+%% Verify and parse arguments
+error(nargoutchk(1,1,nargout,'struct'));
+
+p = inputParser;
+p.addRequired('v0',@(x)(iscell(x) || isnumeric(x)));
+p.addRequired('v1',@(x)(iscell(x) || isnumeric(x)));
+p.addParamValue('nest',false,@islogical);
+% nSide scalar non-negative integer
+p.addParamValue('nSide',0,...
+  @(x)(isscalar(x) && isnumeric(x) && floor(abs(x)) == x));
+p.parse(varargin{:});
+
+v0 = p.Results.v0;
+v1 = p.Results.v1;
+nest = p.Results.nest;
+nSide = p.Results.nSide;
+
+if ~(1 == numel(v0) || 1 == numel(v1))
+  nV0 = size(v0);
+  nV1 = size(v1);
+  assert(all(nV0 == nV1),[mfilename ':vDim']);
+end
+
+%%
+if isnumeric(v0)
+  v0 = pix2vec(nSide,v0);
+else
+  v0 = cellfun(@(x)(v2vec(x,nSide,nest)),v0,'UniformOutput',false);
+end
+if isnumeric(v1)
+  v1 = pix2vec(nSide,v1);
+else
+  v1 = cellfun(@(x)(v2vec(x,nSide,nest)),v1,'UniformOutput',false);
+end
+
+if 1 == numel(v0)
+  rad = cellfun(@(x)(f_angdist(v0{1},x)),v1);
+elseif 1 == numel(v1)
+  rad = cellfun(@(x)(f_angdist(x,v1{1})),v0);
+else
+  rad = cellfun(@(x,y)(f_angdist(x,y)),v0,v1);
+end
+
+return
+
+function  dist = f_angdist(v1, v2)
+% use pix_tools
+%=======================================================================
+% call angdist(v1, v2, dist)
+% computes the angular distance dist (in rad) between 2 vectors v1 and v2
+% in general dist = acos ( v1 . v2 )
+% except if the 2 vectors are almost aligned.
+%=======================================================================
+% persistent diff r1 r2 sprod vdiff ;
+
+% if isempty(r1), r1=zeros(1,3); end;
+% if isempty(r2), r2=zeros(1,3); end;
+% if isempty(vdiff), vdiff=zeros(1,3); end;
+% if isempty(diff), diff=0; end;
+% if isempty(sprod), sprod=0; end;
+%=======================================================================
+% normalize both vectors
+r1 = v1/norm(v1);
+r2 = v2/norm(v2);
+sprod = dot(r1, r2);
+if(sprod > 0.999)
+  % almost colinear vectors
+  vdiff = r1 - r2;
+  % norm of difference
+  diff = sqrt(dot(vdiff,vdiff));
+  dist = 2*asin(diff/2);
+elseif(sprod < -0.999) ;
+  % almost anti-colinear vectors
+  vdiff = r1 + r2;
+  % norm of sum
+  diff = sqrt(dot(vdiff,vdiff));
+  dist = pi - 2*asin(diff/2);
+else
+  % other cases
+  dist = acos( sprod );
+end;
+return
+
+function v = v2vec(v,nSide,nest)
+% V2VEC pixel, angular locations or vectors to vectors
+
+switch numel(v)
+  case 1, % pixel
+    v = pix2vec(nSide,v,'nest',nest);
+  case 2, % angular coordinate location
+    z = cos(v(1));
+    s = sin(v(1));
+    v = [s*cos(v(2));s*sin(v(2));z];
+  case 3,
+    % nop
+  otherwise,
+    msgid = [mfilename ':v2vec'];
+    error(msgid,msgid);
+end
+v = reshape(v,[],1);
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/corners.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/corners.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/corners.m	(revision 27955)
@@ -0,0 +1,75 @@
+function xyz = corners(nSide,varargin)
+% CORNERS Find pixel corners
+%
+%  xyz = corners(nSide,nPix,'Param1',Value1,...);
+%
+%  nSide    HEALPix resolution parameter
+%  nPix     (optional) pixel list. Default all pixels.
+%  
+%  Param    Value
+%  'nest'   nested indexing (true | {false})
+%
+%  xyz    size(nPix) cell array of [3,1] cartesian vector pixel corner
+%         locations
+%
+% Example:
+% nSide = 2^2;
+% % Corners for all 48 nSide=4 pixels in ring-indexed order
+% xyzR = corners(nSide);
+% size(xyzR)
+% xyzR{1} 
+% xyzR{end-1}
+% 
+% nPix = randi(nSide2nPix(nSide), 3, 4);
+% % Corners for an assortment of pixels in nested index order
+% xyzN = corners(nSide,nPix,'nest',true);
+% % Convert to pixel list to ring indexing
+% r = xyzR{nest2ring(nSide,nPix(2,3))}
+% % Corners for same pixels requested via ring indexing
+% n = xyzN{2,3}
+% % Compare
+% all(r == n)
+%
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: corners.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+%% Validate and parse input
+p = inputParser;
+p.addRequired('nSide',@qNSide);
+p.addOptional('nPix',[],@isnumeric);
+p.addParamValue('nest',false,@islogical);
+
+p.parse(nSide,varargin{:});
+nPix = p.Results.nPix;
+nest = p.Results.nest;
+
+%% Get corners
+if isempty(nPix)
+  nPix = 1:nSide2nPix(nSide);
+end
+if nest
+  % convert to ring indexing
+  nPix = nest2ring(nSide,nPix);
+end
+nPix = nPix - 1;  % convert from MEALPix to HEALPix indexing
+[~,xyzc]=f_pix2vec_ring(nSide,nPix(:));
+
+xyz = reshape(xyzc,12,[]);
+xyz = reshape(num2cell(xyz,1),size(nPix));
+xyz = cellfun(@(x)(reshape(x,3,4)),xyz,'UniformOutput',false);
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/hp3d.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/hp3d.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/hp3d.m	(revision 27955)
@@ -0,0 +1,88 @@
+function varargout = hp3d(vPix, varargin)
+% HP3D Plots a HEALPix dataset on a 3D sphere
+%
+% h = hp3d(vPix,'Param1',Value1,'Param2',Value2,...);
+%
+% vPix   vector of values at HEALPix pixels
+%
+% Param      Value
+% 'nest'     nest indexing (true | {false})
+%
+% h      (optional) array of patch handles for the sphere
+%
+% Example
+%  % plot nested pixel numbers on a sphere
+%  hp3d(1:768,'nest',true);
+%
+% Requires corners, nPix2nSide
+%
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: hp3d.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+%% Parse and validate input
+p = inputParser;
+p.addRequired('vPix',@qVPix);
+p.addParamValue('nest',false,@(x)(isscalar(x) && islogical(x)));
+
+p.parse(vPix,varargin{:});
+nest = p.Results.nest;
+
+nSide = nPix2nSide(numel(vPix));
+vPix = reshape(vPix,[],1);
+
+%% Get pixel corners
+c = corners(nSide,'nest',nest);
+
+%% Plot patches
+patchPlot = @(c,v)(...
+  patch(c(1,:),c(2,:),c(3,:),v,'EdgeColor','none','FaceColor','flat'));
+  % SA :: patch(c(1,:),c(2,:),c(3,:),v,'EdgeColor','black','FaceColor','white'));
+h = cellfun(patchPlot,c,num2cell(reshape(vPix,1,[])));
+
+% Cleanup the plot
+%view(3);
+view([90 90]);
+axis equal off
+colormap(jet(1024));
+colorbar('southoutside');
+
+% slower than opengl, but it doesnt crash X...
+set(gcf, 'renderer', 'painters')
+
+if 1 == nargout
+  varargout{1} = h;
+end
+
+return
+
+function tf = qVPix(vPix)
+% QVPIX validate vPix
+%
+% vPix is a numeric vector of length 12*k^2 for k a non-negative integer
+% power of 2
+
+tf = isnumeric(vPix) && max(size(vPix)) == numel(vPix);
+
+if tf
+  nSide = floor(sqrt(numel(vPix)/12));
+  ln2 = log2(nSide);
+  tf = tf && ...
+    numel(vPix) == 12*nSide^2 && ...
+    floor(ln2) == ln2;
+end
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/hpStat.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/hpStat.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/hpStat.m	(revision 27955)
@@ -0,0 +1,56 @@
+function stats = hpStat(v)
+% HPSTAT Compute descriptive statistics of a pixel value list
+%
+%  stats = hpStat(v)
+%
+%  v         array of HEALPix pixel values
+%
+%  stats     struct
+%            field     contents
+%            ntot      total number of data points
+%            nvalid    number n of valid data points
+%            mind      minimum of valid data
+%            maxd      maximum of valid data
+%            average   average of valid points
+%            absdev    absolute deviation
+%            var       variance
+%            stddev    standard deviation
+%            skew      skewness factor
+%            kurt      kurtosis factor
+%
+% Example
+% % display stats of Y_3^1
+% v = ylm(32,3,1,'real',true);
+% stats = hpStat(abs(v))
+%
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: hpStat.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+stats.ntot = numel(v);
+nValid = sum(~isnan(v));
+stats.nValid = nValid;
+v = v(~isnan(v));
+stats.mind = min(v);
+stats.maxd = max(v);
+stats.mean = mean(v);
+stats.absdev = mean(abs(v-mean(v)));
+stats.var = var(v);
+stats.stddev = std(v);
+stats.skew = skewness(v);
+stats.kurt = kurtosis(v);
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/inRing.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/inRing.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/inRing.m	(revision 27955)
@@ -0,0 +1,229 @@
+function  pixList = inRing(nSide, nRing, varargin)
+% INRING return pixels in ring or ring section
+%
+%  pixList = inRing(nSide, nRing, phi0, dPhi, 'Param1', Value1, ...);
+%
+%  nSide       HEALPix resolution parameter
+%  nRing       Ring number (1 <= nRing <= 4*nSide-1)
+%  phi0, dPhi  (optional) Ring section longitudes [phi-dPhi,phi+dPhi]
+%
+%  Param       Value
+%  'nest'      return pixels with nested indexing (true | {false})
+%  'strict'    return only pixels whose center is in longitude range
+%              (true | {false})
+%
+%  pixList     size(nRing) cell array of MEALPix pixels in ring defined by
+%              nRing, phi0, dPhi
+%
+%  nRing may be a numeric array, in which case phi0, dPhi and nest may each
+%  be either scalar or a size(nRing) array. If strict is false (default)
+%  then all pixels intersected by longitude range are included in pixList.
+%
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: inRing.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+
+%% Parse and validate arguments
+p = inputParser;
+p.addRequired('nSide',@qnSide);
+p.addRequired('nRing',@(n)(qNRing(nSide,n)));
+p.addOptional('phi0',0,@isnumeric);
+p.addOptional('dPhi',2*pi,@isnumeric);
+p.addParamValue('nest',false,@islogical);
+p.addParamValue('strict',false,@islogical);
+
+p.parse(nSide,nRing,varargin{:});
+
+phi0 = p.Results.phi0;
+dPhi = p.Results.dPhi;
+nest = p.Results.nest;
+strict = p.Results.strict;
+
+% Validate dimensions
+szRing = size(nRing);
+
+if 1 == prod(szRing)
+  if all(1 ~= [numel(phi0), numel(dPhi), numel(nest), numel(strict)])
+    msgid = [mfilename ':dims'];
+    error(msgid,msgid);
+  end
+else
+  if 1 < numel(phi0)
+    assert(all(size(phi0) == szRing),[mfilename ':phi0Dims']);
+  else
+    phi0 = repmat(phi0,szRing);
+  end
+  if 1 < numel(dPhi)
+    assert(all(size(dPhi) == szRing),[mfilename ':dPhiDims']);
+  else
+    dPhi = repmat(dPhi,szRing);
+  end
+  if 1 < numel(nest)
+    assert(all(size(nest) == szRing),[mfilename ':nestDims']);
+  else
+    nest = repmat(nest,szRing);
+  end
+  if 1 < numel(strict)
+    assert(all(size(strict) == szRing),[mfilename ':strictDims']);
+  else
+    strict = repmat(strict,szRing);
+  end
+end
+
+%% Initializations
+npix = nSide2nPix(nSide);
+ncap  = 2*nSide*(nSide-1);
+pixList = cell(size(nRing));
+
+%% Put phi0, dPhi in canonical form
+dPhi = abs(dPhi);
+phi_low = mod(phi0 - dPhi,2*pi);
+phi_hi  = mod(phi0 + dPhi,2*pi);
+mLong = dPhi >= pi;
+if 1 == numel(mLong)
+  mLong = repmat(mLong,size(nRing));
+end
+
+%% Identify ring number
+nr = zeros(size(nRing));       % ring number
+iPix1 = zeros(size(nRing));    % lowest pixel number in the ring
+iPix2 = zeros(size(nRing));    % highest pixel number in the ring
+kShift = zeros(size(nRing));
+
+%%% equatorial region rings
+mask = nSide <= nRing & nRing <= 3*nSide;
+mir = nRing(mask) - nSide + 1;
+iPix1(mask) = ncap  + 4*nSide*(mir-1);
+iPix2(mask) = iPix1(mask) + 4*nSide - 1;
+kShift(mask)  = mod(mir,2);
+nr(mask) = 4*nSide;
+
+%%% north pole rings
+mask = nRing < nSide;
+mir = nRing(mask);
+iPix1(mask) = 2*mir.*(mir-1);
+iPix2(mask) = iPix1(mask) + 4*mir - 1;
+kShift(mask) = 1;
+nr(mask) = 4*mir;
+
+%%% south pole rings
+mask = nRing > 3*nSide;
+mir = 4*nSide - nRing(mask);
+iPix1(mask) = npix - 2*mir.*(mir+1);
+iPix2(mask) = iPix1(mask) + 4*mir - 1;
+kShift(mask) = 1;
+nr(mask) = 4*mir;
+
+%% Construct pixel list: Full ring case
+if any(mLong(:))
+  %%% Save all ring pixels: ring indexing
+  temp = arrayfun(...
+    @(i1,i2)(i1:i2),...
+    iPix1(mLong),...
+    iPix2(mLong),...
+    'UniformOutput',false);
+  [pixList{mLong}] = deal(temp{:});
+end
+
+%% Construct pixel list: Partial ring case
+if any(~mLong(:))
+  shift = kShift/2;
+  
+  nip = sum(~mLong(:));
+  ip_low = zeros(nip,1);
+  ip_hi = zeros(nip,1);
+  nList = false(nip,1);
+  
+  if any(~strict(:))
+    % ~strict = conservative : include every intersected pixel,
+    % even if pixel CENTER is not in the range [phi_low, phi_hi]
+    mask = ~strict & ~mLong;
+    mnr = nr(mask);
+    mip_low = round(mnr.*phi_low(mask)/(2*pi) - shift(mask));
+    mip_hi  = round(mnr.*phi_hi(mask)/(2*pi) - shift(mask));
+    ip_low(~strict(~mLong)) = mod(mip_low, mnr);% in {0,nr-1}
+    ip_hi(~strict(~mLong))  = mod(mip_hi, mnr); % in {0,nr-1}
+  end
+  
+  if any(strict)
+    mask = strict & ~mLong;
+    mnr = nr(mask);
+    % strict : include only pixels whose CENTER is in [phi_low, phi_hi]
+    mip_low = ceil(mnr.*phi_low(mask)/(2*pi) - shift(mask));
+    mip_hi  = floor(mnr.*phi_hi(mask)/(2*pi) - shift(mask));
+    df = mod(mip_low - mip_hi, mnr);
+    df(df<0) = df(df<0) + mnr(df<0);
+    
+    % Mark intervals so small (and away from pixel center) that no pixel
+    % is included in it
+    n0 = (df == 1) & (dPhi(mask).*mnr < pi);
+    nList(n0) = true;
+    
+    m0 = mip_low >= mnr;
+    mip_low(m0) = mip_low(m0) - mnr(m0);
+    m0 = mip_hi < 0;
+    mip_hi(m0) = mip_hi(m0) + mnr(m0);
+    
+    ip_low(strict(~mLong)) = mip_low;
+    ip_hi(strict(~mLong)) = mip_hi;
+  end;
+  
+  ip_low = ip_low + iPix1(~mLong(:));
+  ip_hi  = ip_hi  + iPix1(~mLong(:));
+  
+  % identify rings with "wrap-around" longitudinal slices
+  mTop = ip_low > ip_hi;
+  ip2 = iPix2(~mLong(:));
+  ip1 = iPix1(~mLong(:));
+  
+  topList = arrayfun(...
+    @(pLow,p1,p2,pHi)([pLow:p2, p1:pHi]),...
+    ip_low(mTop),ip1(mTop),ip2(mTop),ip_hi(mTop), ...
+    'UniformOutput',false);
+  
+  % rings with simply-connected longitudinal slices
+  nTopList = arrayfun(...
+    @(l,h)(l:h),...
+    ip_low(~mTop),ip_hi(~mTop),...
+    'UniformOutput',false);
+  
+  mList = cell(sum(~mLong(:)),1);
+  [mList{mTop}] = deal(topList{:});
+  [mList{~mTop}] = deal(nTopList{:});
+  [mList{nList}] = deal([]);
+  
+  [pixList{~mLong}] = deal(mList{:});
+  
+end
+
+%% Convert ring indexed to nest index as required
+if any(nest)
+  [nestList{1:sum(nest(:))}] = deal(pixList{nest});
+  nestList = cellfun(...
+    @(n)(ring2nest(nSide,n)),...
+    nestList, 'UniformOutput',false);
+  [pixList{nest}] = deal(nestList{:});
+end
+
+%% Convert to MEALPix indexing
+pixList = cellfun(@(x)(x+1),pixList,'UniformOutput',false);
+
+return
+
+function tf = qNRing(nSide,nRing)
+tf = all(1 <= nRing(:)) && all(nRing(:) < 4*nSide);
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/nPix2nSide.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/nPix2nSide.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/nPix2nSide.m	(revision 27955)
@@ -0,0 +1,36 @@
+function nSide = nPix2nSide(nPix)
+% NPIX2NSIDE Convert number of pixels to number of facet side subdivisions
+%
+%  nSide = nPix2nSide(nPix);
+%
+%  nPix     number of pixels on sphere
+%  nSide    sub-divisions of HEALPix facet side
+%
+% Example
+% nPix = 12*[1:4].^2;
+% nSide = nPix2nSide(nPix)
+%
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: nPix2nSide.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+nSide = sqrt(nPix/12);
+if any(nSide(:) ~= fix(nSide(:)))
+  msgid = [mfilename ':nPix'];
+  error(msgid,msgid);
+end
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/nSide2nPix.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/nSide2nPix.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/nSide2nPix.m	(revision 27955)
@@ -0,0 +1,39 @@
+function nPix = nSide2nPix(nSide)
+% NSIDE2NPIX Convert resolution parameter to number of pixels
+%
+%  nPix = nSide2nPix(nSide)
+%
+%  nSide    integer power-2 sub-divisions of facet sides. May be an array.
+%  nPix     size(nSide) number of pixels on sphere corresponding to nSide.
+%
+% HEALPix divides the sphere into 12 basic facets. Each facet is further
+% divided into nSide sub-divisions for a total of 12*nSide^2 pixels. 
+%
+% Example
+% nPix = nSide2nPix([1:4])
+%
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: nSide2nPix.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+lg = log2(nSide(:));
+if ~all(abs(lg) == fix(lg))
+  msgid = [mfilename ':nSide'];
+  error(msgid,msgid);
+end
+nPix = 12*nSide.^2;
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/nSide2res.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/nSide2res.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/nSide2res.m	(revision 27955)
@@ -0,0 +1,37 @@
+function res = nSide2res(nSide)
+% NSIDE2RES Calculates angular resolution of a HEALPix map in arcsec 
+%
+% angres = nSide2res(nSide)
+%
+% nSide   HEALPix Resolution (or array of nSides)
+%
+% angres  Angular resolution of the given nSide in arcsec
+%
+% See also res2nSide
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: nSide2res.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+
+if ~(all(nSide > 0) && all(2.^fix(log2(nSide)) == nSide))
+  msgid = [mfilename ':nSide'];
+  error(msgid,msgid);
+end
+area = 4*pi*(180*3600/pi)^2;
+nPix = nSide2nPix(nSide);
+res = sqrt(area./nPix); 
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/nest2ring.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/nest2ring.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/nest2ring.m	(revision 27955)
@@ -0,0 +1,57 @@
+function rPix = nest2ring(nSide,nPix)
+% NEST2RING Convert MEALPix pixel numbers from nest to ring indexing
+%
+%  rPix = nest2ring(nSide,nPix)
+%
+%  nSide     HEALPix resolution parameters
+%  nPix      numeric array of MEALPix nest indexed pixel numbers
+%
+%  rPix      size(nPix) numeric array of ring indexed pixel numbers
+%
+% See also ring2nest
+%
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: nest2ring.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+
+%% Parse and validate input
+p = inputParser;
+p.addRequired('nSide',@qNSide);
+p.addRequired('nPix',@(n)(qPix(nSide,n)));
+p.parse(nSide,nPix);
+
+%% Convert
+% Save shape
+% convert HEALPix indexing as vector
+% convert to MEALPix indexing and restore shape 
+
+sz = size(nPix);
+rPix = f_nest2ring(nSide,nPix(:)-1);
+rPix = reshape(rPix+1,sz);
+
+return
+
+function tf = qPix(nSide,nPix)
+tf = isnumeric(nPix);
+if tf
+  nPix = nPix(:);
+  tf = ...
+    all(fix(abs(nPix)) == nPix) && ...
+    all(0 < nPix) && ...
+    all(nSide2nPix(nSide) >= nPix);
+end
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/pix2alm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/pix2alm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/pix2alm.m	(revision 27955)
@@ -0,0 +1,67 @@
+function alm = pix2alm(varargin)
+% PIX2ALM Find spherical harmonic decomposition of function on sphere
+%
+%  alm = pix2alm(v)
+%  alm = pix2alm(v, lmax)
+%
+%  v       array of pixel values
+%  lMax    (optional) max order of harmonic to calculate
+%
+% nPix = numel(v), with nPix = 12*nSide^2 for nSide a power of 2. 
+% lMax defaults to 2*floor(nSide/3)
+%
+%  alm     Spherical harmonic expansion coefficients
+%
+% alm(j) is coefficient corresponding to order L, M with j = (L+1)^2+M-L
+%
+% Example
+% % estimates |a_l^m| of dummy data
+% pix = ylm(16,4,2) + ylm(16,7,2) + ylm(16,16,-4) + .1.*rand(1,12*16*16);
+% alm = pix2alm(16,pix,100);
+% plot(abs(alm));
+%
+% Requires ylm
+% See also alm2pix
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: pix2alm.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+
+%% Parse and validate input
+p = inputParser;
+p.addRequired('v',@qPix);
+hLMax = @(v)(2*floor(nPix2nSide(numel(v))/3));
+p.addOptional('lMax', hLMax(varargin{1}), @qLMax);
+
+p.parse(varargin{:});
+
+v = p.Results.v;
+lMax = p.Results.lMax;
+
+%%
+% Preallocate alm
+alm = zeros(1,(lMax+1)^2);
+
+nSide = sqrt(numel(v)/12);
+for L = 0:lMax
+  ndx = L^2+1;
+  for M = -L:L
+    alm(ndx+L+M) = sum(conj(ylm(nSide,L,M)).*v);
+  end
+end
+alm = alm*4*pi/numel(v);
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/pix2ang.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/pix2ang.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/pix2ang.m	(revision 27955)
@@ -0,0 +1,75 @@
+function tp = pix2ang(nSide, varargin)
+% PIX2ANG Find spherical coordinate location of HEALPix pixels
+%
+%  tp = pix2ang(nSide,pix,'Param1',Value1,...)
+%
+%  nSide    HEALPix resolution parameter (positive integer power of 2)
+%  pix      (optional) array of pixel values to find coordinates of
+%
+%  Param    Values
+%  'nest'   pixels are given in nested indexing (true | {false})
+%
+%  tp       cell array of [theta; phi] pixel locations (radians)
+%
+% Example
+%   % Return theta/phi for all pix of nSide=4, nest scheme
+%   tp = pix2ang(4,'nest')
+%
+% See also ang2pix, pix2vec, vec2pix
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: pix2ang.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+
+%% I/O Check
+p = inputParser;
+p.addRequired('nSide', @qNSide);
+p.addOptional('pix',-1,@(n)(qPix(nSide,n)));
+p.addParamValue('nest',false,@(n)(isscalar(n) && islogical(n)));
+
+p.parse(nSide,varargin{:});
+
+pix = p.Results.pix;
+nest = p.Results.nest;
+
+% Matlab indexes pixels from 1
+if pix < 0
+  pix = 1:nSide2nPix(nSide);
+end
+
+%% Work
+% Save size
+% Convert to HEALPix convention
+% Get pixel location angles
+% Restore size
+
+sz = size(pix);
+pix = reshape(pix - 1,1,[]);
+if nest
+  [tparray(1,:), tparray(2,:)]=f_pix2ang_nest(nSide,pix);
+else
+  [tparray(1,:), tparray(2,:)]=f_pix2ang_ring(nSide,pix);
+end
+tp=reshape(num2cell(tparray,1),sz);
+
+return
+
+function tf = qPix(nSide,n)
+tf = ...
+  isnumeric(n(:)) && ...
+  all(n(:) == fix(abs(n(:)))) && ...
+  all(n(:)<=nSide2nPix(nSide)); 
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/pix2vec.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/pix2vec.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/pix2vec.m	(revision 27955)
@@ -0,0 +1,104 @@
+function varargout = pix2vec(nSide, varargin)
+% PIX2VEC convert HEALPix pixel numbers to (x,y,z) unit vector
+%
+% [x,y,z] = pix2vec(nSide,pix,'Param1',Value1,...)
+% xyz = pix2vec(nSide,pix,'Param1',Value1,...)
+%
+% nSide       HEALPix resolution parameter
+% pix         (optional) numeric array of pixel numbers to find cartesian
+%             coordinate vectors for 
+%
+% Param       Value
+% 'nest'      indexing scheme is nested (true | {false}) 
+%
+%  x,y,z       size(pix) numeric array of unit vector coordinate
+%              components corresponding to pixels pix
+%  xyz         size(pix) cell array of cartesian unit vectors
+%              corresponding to pixels pix
+%
+% Example
+% % 
+% nSide = 2^4;
+% nPix = nSide2nPix(nSide);
+% pix = randi(nPix,2,3);
+% xyz = pix2vec(nSide,pix);
+% xyzn = pix2vec(nSide,pix,'nest',true);
+% 
+% Requires nest2ring
+% Required by angDist, hpInterp, inRing, queryDisc, ringNum
+% See also ang2pix, pix2ang, vec2pix
+%
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: pix2vec.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+
+%% IO Check
+assert(1 == nargout || 3 == nargout,[mfilename ':nargout']);
+
+%%% Setup parser
+p = inputParser;
+p.FunctionName = mfilename;
+p.StructExpand = true;
+
+% Argument declarations
+p.addRequired('nSide',@qNSide);
+p.addOptional('pix',-1,@(n)(isnumeric(n) && all(floor(n(:))==n(:))));
+p.addParamValue('nest',false,@islogical);
+
+%%% parse and validate input
+p.parse(nSide,varargin{:});
+nSide = p.Results.nSide;
+pix = p.Results.pix;
+nest = p.Results.nest;
+
+%% Get pixel vector
+
+if 1 == numel(pix) && pix < 0
+  pix = 1:nSide2nPix(nSide);
+end
+assert(...
+  all(0 < pix(:)) || all(pix(:) <= nSide2nPix(nSide)),...
+  [mfilename ':pix']);
+
+if nest
+  pix = nest2ring(nSide,pix);
+end
+xyz = f_pix2vec_ring(nSide,pix-1);
+
+%% Format return
+switch nargout
+  case 1,
+    nSize = size(xyz);
+    if 2 == numel(nSize)
+      nSize = [nSize 1];
+    end
+    xyz = reshape(xyz,3,[]);
+    xyz = num2cell(xyz,1);
+    varargout{1} = reshape(xyz,nSize(2:end));
+  case 3,
+    nSize = size(xyz);
+    if 2 == numel(nSize);
+      nSize = [nSize 1];
+    end
+    sz = nSize(2:end);
+    xyz = reshape(xyz,3,[]);
+    varargout{1} = reshape(xyz(1,:),sz);
+    varargout{2} = reshape(xyz(2,:),sz);
+    varargout{3} = reshape(xyz(3,:),sz);
+end
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/pix2xy.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/pix2xy.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/pix2xy.m	(revision 27955)
@@ -0,0 +1,64 @@
+function xy = pix2xy(nSide, nPix)
+%% PIX2XY Find pixel cartesian face coordinates
+%
+%  xy = pix2xy(nSide,nPix)
+%
+%  nSide     HEALPix resolution parameter
+%  nPix      nested indexing pixel numbers to find coordinates of
+%
+%  xy        size(nPix) cell array of pixel coordinates on face
+%
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: pix2xy.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+
+if ~qNSide(nSide)
+  msgid = [mfilename ':nSide'];
+  error(msgid,msgid);
+end  
+
+if ~(all(nPix(:) > 0) && all(nPix(:) <= nSide2nPix(nSide)))
+  msgid = [mfilename ':nPix'];
+  error(msgid,msgid);
+end 
+sPix = size(nPix);
+if 2 == numel(sPix)
+  sPix = [sPix, 1];
+end
+ixy = zeros([2,sPix(:)']);
+
+[pix2x,pix2y]=mk_pix2xy;
+
+ipf = nPix(:)-1;
+
+% content of the last 10 bits
+ip_low = fix(mod(ipf,1024));
+
+% truncation of the last 10 bits
+ip_trunc = fix(ipf/1024);
+
+% content of the next 10 bits
+ip_med = fix(mod(ip_trunc,1024));
+
+% content of the high weight 10 bits
+ip_hi  = fix(ip_trunc/1024);
+ixy(1,:) = fix(1024*pix2x(ip_hi+1) + 32*pix2x(ip_med+1) + pix2x(ip_low+1));
+ixy(2,:) = fix(1024*pix2y(ip_hi+1) + 32*pix2y(ip_med+1) + pix2y(ip_low+1));
+
+xy = reshape(num2cell(ixy,1),sPix);
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/correct_ring_phi.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/correct_ring_phi.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/correct_ring_phi.m	(revision 27955)
@@ -0,0 +1,27 @@
+function [iring, iphi] = correct_ring_phi(location, iring, iphi)
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+delta = zeros(size(iphi));
+delta(iphi<0) = 1;
+delta(iphi>4*iring) = -1;
+nzMask = delta ~= 0;
+if any(nzMask)
+  if any(abs(location(nzMask)) ~= 1) 
+    msgid = [mfilename,':location'];
+    error(msgid,msgid);
+  end
+  iring(nzMask) = iring(nzMask) - location(nzMask).*delta(nzMask);
+  iphi(nzMask)  = iphi(nzMask) + delta(nzMask).*(4*iring(nzMask));
+end
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/f_nest2ring.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/f_nest2ring.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/f_nest2ring.m	(revision 27955)
@@ -0,0 +1,104 @@
+function ipring = f_nest2ring(nSide, ipnest)
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+% $Id: f_nest2ring.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+nPix = nSide2nPix(nSide);
+if ~(all(ipnest>=0) && all(ipnest<nPix))
+  msgid = [mfilename ':index'];
+  error(msgid,msgid);
+end
+
+% initializations
+jrll = [ 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4 ]';
+jpll = [ 1, 3, 5, 7, 0, 2, 4, 6, 1, 3, 5, 7 ]';
+[pix2x,pix2y] = mk_pix2xy;
+
+npface = nSide^2;  % number of pixels in each face
+nl4    = 4*nSide;
+
+%% find the face and the number in the face
+% face number in {0,11}
+face_num = fix(ipnest/npface);
+ipf = mod(ipnest,npface);
+
+%     finds the x,y on the face (starting from the lowest corner)
+%     from the pixel number
+ix = 0;
+iy = 0;
+scalemlv = 1;
+ismax = 4;
+
+for i = 0:ismax;
+  ip_low = mod(ipf,1024);
+  ix = fix(ix + scalemlv*pix2x(ip_low+1));
+  iy = fix(iy + scalemlv*pix2y(ip_low+1));
+  scalemlv = scalemlv*32;
+  ipf   = fix(ipf/1024);
+end; 
+ix = fix(ix + scalemlv*pix2x(ipf+1));
+iy = fix(iy + scalemlv*pix2y(ipf+1));
+
+%% transforms to (horizontal, vertical) coordinates
+% 'vertical' in {0,2*(nSide-1)}
+jrt = fix(ix + iy);
+% 'horizontal' in {-nSide+1,nSide-1}
+jpt = fix(ix - iy);
+
+%% Find z coordinate on the sphere
+% ring number in {1,4*nSide-1}
+jr =  fix(jrll(face_num+1)*nSide - jrt - 1);
+
+% initialization
+nr = zeros(size(ipnest));
+kshift = zeros(size(ipnest));
+n_before = zeros(size(ipnest));
+
+% north pole region
+mask = jr < nSide;
+jrN = jr(mask);
+nrN = fix(jrN);
+n_before(mask) = fix(2*nrN.*(nrN - 1));
+kshift(mask) = 0;
+nr(mask) = nrN;
+  
+% equatorial region (the most frequent)
+mask = jr >= nSide & (jr <= 3*nSide);
+jrE = jr(mask);
+nrE = fix(nSide);
+n_before(mask) = fix(2*nrE*(2*jrE - nrE - 1));
+kshift(mask) = mod(jrE - nSide, 2);
+nr(mask) = nrE;
+
+% south pole region
+mask = jr > 3*nSide;
+jrS = jr(mask);
+nrS = fix(nl4 - jrS);
+n_before(mask) = fix(nPix - 2*nrS.*(nrS + 1));
+kshift(mask) = 0;
+nr(mask) = nrS;
+
+% computes the phi coordinate on the sphere, in [0,2Pi]
+% 'phi' number in the ring in {1,4*nr}
+jp = fix((jpll(face_num+1).*nr + jpt + 1 + kshift)/2);
+maskH = jp>nl4;
+maskL = jp<1;
+jp(maskH) = fix(jp(maskH) - nl4);
+jp(maskL) = fix(jp(maskL) + nl4);
+
+% in {0, nPix-1}
+ipring = fix(n_before + jp - 1);
+
+return
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/f_pix2ang_nest.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/f_pix2ang_nest.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/f_pix2ang_nest.m	(revision 27955)
@@ -0,0 +1,108 @@
+function [theta, phi] = f_pix2ang_nest(nSide, ipix)
+
+% Copyright 2010-2011 by Lee Samuel Finn.
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+% $Id: f_pix2ang_nest.m 6016 2011-04-27 02:52:56Z lsf@GRAVITY.PSU.EDU $
+
+% coordinate of the lowest corner of each face
+% in unit of nSide
+jrll =[ 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4 ]';
+% in unit of nSide/2
+jpll =[ 1, 3, 5, 7, 0, 2, 4, 6, 1, 3, 5, 7 ]';
+%-----------------------------------------------------------------------
+% total number of points
+npix = nSide2nPix(nSide);
+if ~(all(ipix>=0) && all(ipix<npix))
+  msgid = [mfilename ':ndx'];
+  error(msgid,msgid);
+end
+
+% initialize the array for the pixel number -> (x,y) mapping
+[pix2x,pix2y] = mk_pix2xy;
+
+npface = nSide^2;
+nl4    = 4*nSide;
+
+% find face and pixel number in the face
+% face number in {0,11}
+face_num = fix(ipix/npface);
+% pixel number in the face {0,npface-1}
+ipf = mod(ipix,npface);
+
+fact1 = 1/(3*nSide^2);
+fact2 = 2/(3*nSide);
+%     finds the x,y on the face (starting from the lowest corner)
+%     from the pixel number
+ix = 0;
+iy = 0;
+scalemlv = 1;
+ismax = 4;
+for i=0: ismax;
+  ip_low = mod(ipf,1024);
+  ix = fix(ix + scalemlv*pix2x(ip_low+1));
+  iy = fix(iy + scalemlv*pix2y(ip_low+1));
+  scalemlv = scalemlv*32;
+  ipf   = fix(ipf/1024);
+end
+ix = fix(ix + scalemlv*pix2x(ipf+1));
+iy = fix(iy + scalemlv*pix2y(ipf+1));
+
+%% transforms to (horizontal, vertical) coordinates
+% 'vertical' in {0,2*(nSide-1)}
+jrt = fix(ix + iy);
+% 'horizontal' in {-nSide+1,nSide-1}
+jpt = fix(ix - iy);
+
+%% compute z coordinate on the sphere
+% ring number in {1,4*nSide-1}
+jr =  fix(jrll(face_num+1)*nSide - jrt - 1);
+
+z = zeros(size(jr));
+nr = zeros(size(jr));
+kshift = zeros(size(jr));
+
+% north pole region
+mask = jr<nSide;
+nrM = fix(jr(mask));
+z(mask) = 1 - nrM.^2*fact1;
+kshift(mask) = 0;
+nr(mask) = nrM;
+
+% equatorial region
+mask = ~mask & jr <= 3*nSide;
+nr(mask) = fix(nSide);
+z(mask)  =(2*nSide-jr(mask))*fact2;
+kshift(mask) = mod(jr(mask)-nSide,2);
+
+% south pole region
+mask = jr > 3*nSide;
+nrM = fix(nl4 - jr(mask));
+z(mask) = - 1 + nrM.^2*fact1;
+kshift(mask) = 0;
+nr(mask) = nrM;
+
+%% Convert z to theta
+theta = acos(z);
+
+%% Compute phi in [0,2*pi)
+% 'phi' number in the ring in {1,4*nr}
+jp =fix(((jpll(face_num+1).*nr) + jpt + 1 + kshift)/2);
+if(jp > nl4)
+  jp = fix(jp - nl4);
+end;
+if(jp < 1)
+  jp = fix(jp + nl4);
+end;
+phi = (pi/2)*(jp -(kshift+1)/2)./nr;
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/f_pix2ang_ring.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/f_pix2ang_ring.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/f_pix2ang_ring.m	(revision 27955)
@@ -0,0 +1,78 @@
+function [theta, phi] = f_pix2ang_ring(nSide, iPix)
+% F_PIX2ANG_RING convert ring-indexed pixel to angular position vector
+%
+% [theta, phi] = f_pix2ang_ring(nSide,iPix)
+%
+% nSide    HEALPix resolution parameter
+% iPix     HEALPix ring-indexed pixel number
+% 
+% Hand conversion of HEALPix distribution f90 code pix2ang_ring
+%
+% Author: Lee Samuel Finn
+% Copyring 2011
+
+% $Id: f_pix2ang_ring.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+
+npix = nSide2nPix(nSide);
+if any(iPix<0) || any(iPix>npix-1)
+  msgid = [mfilename ':ndx'];
+  error(msgid,msgid);
+end
+
+nl2 = 2*nSide;
+
+% points in each polar cap, =0 for nSide =1
+nCap = nl2*(nSide-1);
+
+% preallocate results
+theta = zeros(size(iPix));
+phi = zeros(size(iPix));
+
+%% North Polar cap -------------
+mask = iPix < nCap;
+% counted from North pole
+iPixM = iPix(mask);
+iRingM = round(sqrt((iPixM+1)/2));
+iPhiM  = fix(iPixM - 2*iRingM.*(iRingM - 1));
+% fix round-off error appearing at large nSide
+[iRingM, iPhiM]=correct_ring_phi(1, iRingM, iPhiM);
+theta(mask) = acos(1-(iRingM/nSide).^2/3);
+phi(mask)   = (pi/2)*(iPhiM + 0.5)./iRingM;
+
+%% Equatorial region ------
+mask = ~mask & (iPix < npix-nCap);
+ipM  = fix(iPix(mask) - nCap);
+nl4   = 4*nSide;
+% counted from North pole
+iRingM = fix(ipM/nl4) + nSide;
+iPhiM  = mod(ipM,nl4);
+% 0 if iring+nSide is odd, 1/2 otherwise
+fodd  = 0.5*mod(iRingM+nSide+1,2);
+theta(mask) = acos((nl2 - iRingM)/(1.5*nSide));
+phi(mask)   = (pi/2)*(iPhiM + fodd)/nSide;
+
+%% South Polar cap -----------------------------------
+mask = npix-nCap <= iPix;
+ipM   = fix(npix - iPix(mask));
+% counted from South pole
+iRingM = round(sqrt(ipM/2));
+iPhiM  = fix(2*iRingM.*(iRingM + 1) - ipM);
+% fix round-off error appearing at large nSide
+[iRingM, iPhiM]=correct_ring_phi(-1, iRingM, iPhiM);
+theta(mask) = acos((iRingM/nSide).^2/3 - 1);
+phi(mask)   = (pi/2)*(iPhiM + 0.5)./iRingM;
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/f_pix2vec_ring.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/f_pix2vec_ring.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/f_pix2vec_ring.m	(revision 27955)
@@ -0,0 +1,202 @@
+function varargout = f_pix2vec_ring(nSide, hPix)
+% F_PIX2VEC_RING conversion of f90 PIX2VEC_RING HEALPix code
+%
+% [vector, vertex] = f_pix2vec_ring(nSide,hPix)
+%
+% nSide    (integer) sub-divisions of HEALPix facets
+% hPix     (vector integers) HEALPix pixel numbers 
+%          (0 <= hPix < 12*nSide^2)
+%
+% vector   cell(size(hPix)) of [3,1] unit vectors to pixel centers
+% vertex   (optional) cell(size(hPix)) of [3,4] unit vectors to pixel
+%          vertices (corners)
+% 
+%     renders vector (x,y,z) coordinates of the nominal pixel center
+%     for the pixel number hPix (RING scheme)
+%     given the map resolution parameter nSide
+%     also returns the (x,y,z) position of the 4 pixel vertices (=corners)
+%     in the order N,W,S,E
+%
+% Hand rewrite of f90 code
+%
+% Author: Lee Samuel Finn
+% Copyright 2010
+
+% $Id: f_pix2vec_ring.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+%% I/O Check/Init
+error(nargoutchk(1,2,nargout,'struct'));
+error(nargchk(2,2,nargin,'struct'));
+
+nPix = nSide2nPix(nSide);
+if ~(...
+    all(floor(hPix(:)) == abs(hPix(:))) && all(hPix(:) < nPix))
+  msgid = [mfilename ':hPix'];
+  error(msgid,msgid);
+end
+
+% in {1, nPix}
+hPix1 = fix(hPix + 1);
+nl2 = fix(2*nSide);
+nl4 = fix(4*nSide);
+% points in each polar cap, = 0 for nSide = 1
+nCap = fix(2*nSide*(nSide-1));
+fact1 = 1.5*nSide;
+fact2 = 3.0*nSide^2;
+
+% Calculate corners (vertices)?
+do_vertex = (nargout == 2);
+
+% Associate pixels with regions (north cap, equatorial, south cap)
+ncMask = hPix1 <= nCap;
+eqMask = hPix1 <= nl2*(5*nSide+1) & ~ncMask;
+scMask = ~(eqMask | ncMask);
+
+% Pre-allocate 
+z   = zeros(size(hPix));
+phi = zeros(size(hPix));
+hDelta_Phi = zeros(size(hPix));
+z_nv = zeros(size(hPix));
+z_sv = zeros(size(hPix));
+phi_nv = zeros(size(hPix));
+phi_sv = zeros(size(hPix));
+
+% North polar cap
+if any(ncMask(:))
+  hip = hPix1(ncMask)/2;
+  fihip = fix(hip);
+  iRing = fix(sqrt(hip-sqrt(fihip)))+1;
+  iPhi = hPix1(ncMask) - 2*iRing.*(iRing-1);
+  
+  z(ncMask) = 1-iRing.^2/fact2;
+  phi(ncMask) = (iPhi-0.5).*pi./(2*iRing);
+  
+  if (do_vertex)
+    hDelta_Phi(ncMask) = pi./(4*iRing);     % half pixel width
+    z_nv(ncMask) = 1-(iRing-1).^2/fact2;
+    z_sv(ncMask) = 1-(iRing+1).^2/fact2;
+    iPhi_Mod = mod(iPhi-1,iRing);    % in {0..iRing-1}
+    iPhi_Rat = fix((iPhi-1)./iRing);      % in {0,1,2,3}
+    phi_nv_m = phi_nv(ncMask);
+    ndx = (1 < iRing);
+    phi_nv_m(ndx) = (iPhi_Rat(ndx)+iPhi_Mod(ndx)./(iRing(ndx)-1))*pi/2;
+    phi_nv(ncMask) = phi_nv_m;
+    phi_sv(ncMask) = (iPhi_Rat+(iPhi_Mod+1)./(iRing+1))*pi/2;
+  end
+end
+
+% Equatorial region
+if any(eqMask(:))
+  ip = hPix1(eqMask) - nCap -1;
+  iRing = fix(ip/nl4) + nSide;      % counted from north pole
+  iPhi = mod(ip,nl4)+1;
+  
+  fOdd = 0.5*(1+mod(iRing+nSide,2)); % 1 (1/2) if iRing+nSide is odd (even)
+  z(eqMask) = (nl2-iRing)/fact1;
+  phi(eqMask) = (iPhi-fOdd)*pi/(2*nSide);
+  
+  if (do_vertex)
+    hDelta_Phi(eqMask) = pi./(4*nSide);     % half pixel width
+    phi_nv_m = phi(eqMask);
+    phi_sv_m = phi(eqMask);
+    z_nv_m = (nl2-iRing+1)/fact1;
+    z_sv_m = (nl2-iRing-1)/fact1;
+    nNdx = (iRing == nSide);   % northern transition
+    sNdx = (iRing == 3*nSide); % southern transition
+    ndx = sNdx|nNdx;           % transition
+    z_nv_m(nNdx) =  1-(nSide-1)^2/fact2;
+    z_sv_m(sNdx) = -1+(nSide-1)^2/fact2;
+    iPhi_Mod(ndx) = mod(iPhi(ndx)-1,nSide);   % in {0..nSide-1}
+    iPhi_Rat(ndx) = fix((iPhi(ndx)-1)/nSide);      % in {0..3} 
+    if nSide > 1
+      phi_nv_m(nNdx) = (iPhi_Rat(nNdx)+iPhi_Mod(nNdx)/(nSide-1))*pi/2;
+      phi_sv_m(sNdx) = (iPhi_Rat(sNdx)+iPhi_Mod(sNdx)/(nSide-1))*pi/2;
+    end
+    phi_nv(eqMask) = phi_nv_m;
+    phi_sv(eqMask) = phi_sv_m;
+    z_nv(eqMask) = z_nv_m;
+    z_sv(eqMask) = z_sv_m;
+  end
+end
+
+% South polar cap
+if any(scMask(:))
+  ip = nPix - hPix1(scMask) + 1;
+  hip = ip/2;
+  fihip = fix(hip);
+  iRing = fix(sqrt(hip-sqrt(fihip)))+1;    % counted from south pole
+  iPhi = 4*iRing+1-(ip-2*iRing.*(iRing-1));
+  
+  z(scMask) = -1+iRing.^2/fact2;
+  phi(scMask) = (iPhi-0.5).*pi./(2*iRing);
+  
+  if (do_vertex)
+    hDelta_Phi(scMask) = pi./(4*iRing);
+    z_nv(scMask) = -1+(iRing+1).^2/fact2;
+    z_sv(scMask) = -1+(iRing-1).^2/fact2;
+    iPhi_Mod = mod(iPhi-1,iRing);  % in {0..iRing-1}
+    iPhi_Rat = fix((iPhi-1)./iRing);    % in {0..3}
+    phi_nv(scMask) = (iPhi_Rat+(iPhi_Mod+1)./(iRing+1))*pi/2;
+    ndx = iRing > 1; 
+    phi_sv_m = phi_sv(scMask);
+    phi_sv_m(ndx) = (iPhi_Rat(ndx)+iPhi_Mod(ndx)./(iRing(ndx)-1))*pi/2;
+    phi_sv(scMask) = phi_sv_m;
+  end
+end
+
+sth = sqrt(1-z).*sqrt(1+z);
+
+%% Vertices
+if (do_vertex)
+  v = zeros(horzcat([3,4],size(hPix)));
+  
+  % West vertex
+  phi_wv = phi - hDelta_Phi;
+  v(1,2,:) = sth(:).*cos(phi_wv(:));
+  v(2,2,:) = sth(:).*sin(phi_wv(:));
+  v(3,2,:) = z(:);
+  
+  % East vertex
+  phi_ev = phi + hDelta_Phi;
+  v(1,4,:) = sth(:).*cos(phi_ev(:));
+  v(2,4,:) = sth(:).*sin(phi_ev(:));
+  v(3,4,:) = z(:);
+  
+  % North vertex
+  sth_nv = sqrt(1-z_nv).*sqrt(1+z_nv);
+  v(1,1,:) = sth_nv(:).*cos(phi_nv(:));
+  v(2,1,:) = sth_nv(:).*sin(phi_nv(:));
+  v(3,1,:) = z_nv(:);
+  
+  % South vertex
+  sth_sv = sqrt(1-z_sv).*sqrt(1+z_sv);
+  v(1,3,:) = sth_sv(:).*cos(phi_sv(:));
+  v(2,3,:) = sth_sv(:).*sin(phi_sv(:));
+  v(3,3,:) = z_sv(:);
+  
+  varargout{2} = v;
+end
+
+%% Pixel centers
+sth = reshape(sth,[],1);
+phi = reshape(phi,[],1);
+vector = zeros(horzcat(3,size(hPix)));
+vector(1,:) = sth.*cos(phi);
+vector(2,:) = sth.*sin(phi);
+vector(3,:) = z(:);
+
+varargout{1} = vector;
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/f_ring2nest.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/f_ring2nest.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/f_ring2nest.m	(revision 27955)
@@ -0,0 +1,135 @@
+function ipnest = f_ring2nest(nside, ipring)
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+% $Id: f_ring2nest.m 6224 2011-08-22 18:49:47Z lsf@GRAVITY.PSU.EDU $
+
+npix = nSide2nPix(nside);
+assert(all(ipring>=0) && all(ipring<npix));
+
+% Initializations
+[x2pix, y2pix] = mk_xy2pix;
+jrll = [2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4]'; % in unit of nside
+jpll = [1, 3, 5, 7, 0, 2, 4, 6, 1, 3, 5, 7]'; % in unit of nside/2
+
+nl2 = 2*nside;
+nl4 = 4*nside;
+
+ncap = nl2*(nside-1); % points in each polar cap, =0 for nside =1
+
+%% find ring number, ring position & face number
+
+% Preallocation
+irn = zeros(size(ipring));
+iphi = zeros(size(ipring));
+nr = zeros(size(ipring));
+face_num = zeros(size(ipring));
+kshift = zeros(size(ipring));
+
+%% north polar cap
+mask = ipring < ncap;
+mRing = ipring(mask);
+
+% counted from North pole
+mirn   = round(sqrt((mRing+1)/2));
+miphi  = mRing - 2*mirn.*(mirn - 1);
+[mirn, miphi] = correct_ring_phi(1, mirn, miphi);
+
+kshift(mask) = 0;
+nr(mask) = fix(mirn);
+face_num(mask) = fix(miphi./mirn);
+iphi(mask) = miphi;
+irn(mask) = mirn;
+
+%% equatorial region
+mask = (ncap <= ipring) & (ipring < npix - ncap);
+mRing = ipring(mask);
+
+mip    = fix(mRing - ncap);
+% counted from North pole
+mirn   = fix(mip/nl4) + nside;
+miphi  = mod(mip,nl4);
+kshift(mask)  = mod(mirn+nside,2);
+nr(mask) = nside;
+% in {1, 2*nside +1}
+mire =  mirn - nside + 1;
+mirm =  nl2 + 2 - mire;
+
+% face boundary
+mifm = fix((miphi - fix(mire/2) + nside)/nside);
+mifp = fix((miphi - fix(mirm/2) + nside)/nside);
+
+
+mface = zeros(size(mRing));
+smask = (mifp == mifm);
+mface(smask) = mod(mifp(smask),4)+4; % faces 4 to 7
+
+smask = (mifp < mifm);
+mface(smask) = fix(mifp(smask)); % (half-)faces 0 to 3
+
+smask = (mifp > mifm);
+mface(smask) = fix(mifp(smask)+7); % (half-)faces 8 to 11
+
+face_num(mask) = mface;
+irn(mask) = mirn;
+iphi(mask) = miphi;
+
+%% south polar cap
+mask = ipring >= (npix - ncap);
+mRing = ipring(mask);
+
+mip    = fix(npix - mRing);
+% counted from South pole
+mirs   = round(sqrt(mip/2));
+miphi  = 2*mirs.*(mirs + 1) - mip;
+[mirs, miphi] = correct_ring_phi(1, mirs, miphi);
+kshift(mask) = 0;
+nr(mask) = fix(mirs);
+irn(mask)   = fix(nl4 - mirs);
+face_num(mask) = fix(miphi./mirs) + 8;
+iphi(mask) = miphi;
+
+%% finds the (x,y) on the face
+irt =   irn  - jrll(face_num+1)*nside + 1;          % in {-nside+1,0}
+ipt = 2*iphi - jpll(face_num+1).*nr - kshift + 1;   % in {-nside+1,nside-1}
+
+mask = ipt >= nl2;    % for the face #4
+ipt(mask) = ipt(mask) - 8*nside;
+
+ix =  fix((ipt - irt )/2);
+iy = -fix((ipt + irt )/2);
+
+scalemlv = 1;
+scale_factor = 16384;
+ipf = 0;
+% for nside in [2^14, 2^20]
+ismax = 1;
+if (nside >  1048576)
+  ismax = 3;
+end;
+for i = 0:ismax
+  % last 7 bits
+  ix_low = mod(ix, 128);
+  iy_low = mod(iy, 128);
+  
+  ipf = fix(ipf +(x2pix(ix_low+1)+y2pix(iy_low+1))*scalemlv);
+  scalemlv = scalemlv*scale_factor;
+  % truncate out last 7 bits
+  ix  = fix(ix/128);
+  iy  = fix(iy/128);
+end
+ipf =  fix(ipf +(x2pix(ix+1)+y2pix(iy+1))*scalemlv);
+
+% in {0, 12*nside**2 - 1}
+ipnest = fix(ipf + (face_num.*(fix(npix/12))));
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/f_surface_triangle.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/f_surface_triangle.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/f_surface_triangle.m	(revision 27955)
@@ -0,0 +1,56 @@
+function surface = f_surface_triangle(vec1, vec2, vec3)
+
+% Copyright 2010-2011 by Lee Samuel Finn.
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+% $Id: f_surface_triangle.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% use pix_tools
+%=======================================================================
+% returns the surface in steradians
+%  of the spherical triangle with vertices vec1, vec2, vec3
+%
+% algorithm : finds triangle sides and uses l'Huilier formula to compute
+% 'spherical excess' = surface area of triangle on a sphere of radius one
+% see, eg Bronshtein, Semendyayev Eq 2.86
+%=======================================================================
+%   real(kind=dp), dimension(1:3) :: v1, v2, v3
+% persistent side x0 x1 x2 x3 ;
+%
+% if isempty(side), side=zeros(1,3); end;
+% %  real(kind=dp) :: hp
+% if isempty(x0), x0=0; end;
+% if isempty(x1), x1=0; end;
+% if isempty(x2), x2=0; end;
+% if isempty(x3), x3=0; end;
+%=======================================================================
+% half perimeter
+%   hp = 0.5 * (side1 + side2 + side3)
+%   ! l'Huilier formula
+%   x0 = tan( hp          * 0.5)
+%   x1 = tan((hp - side1) * 0.5)
+%   x2 = tan((hp - side2) * 0.5)
+%   x3 = tan((hp - side3) * 0.5)
+% find triangle sides
+side(1)=f_angdist(vec2, vec3);
+side(2)=f_angdist(vec3, vec1);
+side(3)=f_angdist(vec1, vec2);
+% divide by 4
+side([1:3]) = side([1:3]) .* 0.25;
+% l'Huilier formula
+x0 = tan( side(1) + side(2) + side(3) );
+x1 = tan(-side(1) + side(2) + side(3) );
+x2 = tan( side(1) - side(2) + side(3) );
+x3 = tan( side(1) + side(2) - side(3) );
+surface = 4.0 .* atan( sqrt(x0 .* x1 .* x2 .* x3) );
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/mk_pix2xy.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/mk_pix2xy.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/mk_pix2xy.m	(revision 27955)
@@ -0,0 +1,55 @@
+function [pix2x,pix2y] = mk_pix2xy
+
+%=======================================================================
+% constructs the array giving x and y in the face from pixel number for the
+% nested (quad-cube like) ordering of pixels 
+%
+% the bits corresponding to x and y are interleaved in the pixel number one
+% breaks up the pixel number by even and odd bits 
+%=======================================================================
+
+% $Id: mk_pix2xy.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+pix2x=zeros(1024,1);
+pix2y=zeros(1024,1);
+for kpix=0:1023
+  jpix = kpix;
+  ix = 0;
+  iy = 0;
+  % bit position (in x and y)
+  ip = 1;
+  while (1);
+    % go through all the bits
+    if(jpix == 0)
+      break
+    end
+    % bit value (in kpix), goes in ix
+    id = mod(jpix,2);
+    jpix = fix(jpix/2);
+    ix = id.*ip+ix;
+    % bit value (in kpix), goes in iy
+    id = mod(jpix,2);
+    jpix = fix(jpix/2);
+    iy = id.*ip+iy;
+    % next bit (in x and y)
+    ip = 2*ip;
+  end
+  % in 0,31
+  pix2x(kpix+1) = ix;
+  % in 0,31
+  pix2y(kpix+1) = iy;
+end
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/mk_xy2pix.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/mk_xy2pix.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/mk_xy2pix.m	(revision 27955)
@@ -0,0 +1,48 @@
+function [x2pix y2pix]=mk_xy2pix
+%=======================================================================
+%     sets the array giving the number of the pixel lying in (x,y)
+%     x and y are in {1,128}
+%     the pixel number is in {0,128**2-1}
+%
+%     if  i-1 = sum_p=0  b_p * 2^p
+%     then ix = sum_p=0  b_p * 4^p
+%          iy = 2*ix
+%     ix + iy in {0, 128**2 -1}
+%=======================================================================
+
+% $Id: mk_xy2pix.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+
+%for converting x,y into pixel numbers
+x2pix=zeros(128,1);
+y2pix=zeros(128,1);
+for i = 1:128;
+  j  = (i-1);
+  k  = 0;
+  ip = 1;
+  while (1);
+    if(j==0)
+      x2pix(i) = k;
+      y2pix(i) = 2*k;
+      break;
+    else
+      id = mod(j,2);
+      j  = fix(j/2);
+      k  = ip*id+k;
+      ip = 4*ip;
+    end
+  end
+end
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/qALM.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/qALM.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/qALM.m	(revision 27955)
@@ -0,0 +1,27 @@
+function tf = qALM(alm)
+% QALM validate alm
+%
+% alm is a numeric vector and numel(alm) = k^2 for some
+% postive integer k
+%
+% Required by alm2spec, alm2pix
+% Author: Lee Samuel Finn
+% Copyright 2010-2011
+
+% $Id: qALM.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+tf = isnumeric(alm) && sqrt(numel(alm))^2 == numel(alm); 
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/qLMax.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/qLMax.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/qLMax.m	(revision 27955)
@@ -0,0 +1,14 @@
+function tf = qLMax(lMax)
+% QLMAX validate lMax
+%
+% lMax is a non-negative integer-valued scalar
+%
+% Required by alm2spec, alm2pix
+% Author: Lee Samuel Finn
+% Copyright 2010
+
+% $Id: qLMax.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+tf = isnumeric(lMax) && isscalar(lMax) && floor(lMax) == abs(lMax);
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/qNSide.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/qNSide.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/qNSide.m	(revision 27955)
@@ -0,0 +1,27 @@
+function tf = qNSide(nSide)
+% QNSIDE validate nSide
+%
+% tf = qNSide(nSide)
+%
+% returns true if nSide is a numeric scalar non-negative integer-valued
+% power of 2 
+
+% $Id: qNSide.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+
+tf = isnumeric(nSide) && isscalar(nSide) && 2^floor(log2(nSide)) == nSide;
+
+return
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/qPix.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/qPix.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/qPix.m	(revision 27955)
@@ -0,0 +1,23 @@
+function tf = qPix(pix)
+% QPIX validate list of pixel values
+%
+% pix is a numeric vector with length 12*k^2 for integer k
+
+% $Id: qPix.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+tf = isnumeric(pix) && numel(pix) == max(size(pix));
+tf = tf && floor(sqrt(numel(pix)/12))^2*12 == numel(pix);
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/ringNum.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/ringNum.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/private/ringNum.m	(revision 27955)
@@ -0,0 +1,60 @@
+function nRing = ringNum(nSide, z, varargin) 
+%% RINGNUM Find ring number for given z coordinate
+%
+% ring = ringNum(nSide, z, shift)
+%
+% nSide    HEALPix resolution parameter (integer power 2)
+% z        numeric array of z coordinates on unit sphere
+% shift    (optional) ring number "rounding" mode
+%          shift = 0: return ring number whose center is closest to z
+%          shift < 0: return ring number immediately north of closest ring
+%          shift > 0: return ring number immediately south of closest ring
+%
+% nRing    size(z) numeric array of ring numbers
+%
+% Author: Lee Samuel Finn
+% Copyright: 2011
+
+% $Id: ringNum.m 5792 2011-02-20 03:21:25Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+
+%% Parse and validate input
+p = inputParser;
+p.addRequired('nSide',@qNSide);
+p.addRequired('z',@(x)(all(abs(x(:))<=1)));
+p.addOptional('shift',0,@isnumeric);
+p.parse(nSide,z,varargin{:});
+shift = p.Results.shift/2;
+  
+%% preallocate 
+nRing = zeros(size(z));
+
+%% equatorial regime
+mask = abs(z) <= 2/3;
+nRing(mask) = round(nSide*(2-1.5*z(mask)) + shift);
+
+%% north polar cap
+mask = z > 2/3;
+nTmp = round(nSide*sqrt(3*(1-z(mask))) + shift);
+nTmp(0 == nTmp) = 1;
+nRing(mask) = nTmp;
+
+%% south polar cap
+mask = z < -2/3;
+nTmp = round(nSide*sqrt(3*(1+z(mask))) - shift); % Yes: this is a -shift
+nTmp(0 == nTmp) = 1;
+nRing(mask) = 4*nSide - nTmp;
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/queryDisc.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/queryDisc.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/queryDisc.m	(revision 27955)
@@ -0,0 +1,86 @@
+function pix = queryDisc( nSide, c0, r0, varargin )
+% QUERYDISC Find all pixels whose centers are within a specified disc
+%
+%
+%  pix = queryDisc(nSide,c0,r,'Param1',Value1,...)
+%
+%  nSide
+%  c0        disc center. May be specified as a pixel number, anuglar
+%            position vector [theta, phi] in rads, or as a cartesian unit
+%            vector [x;y;z]. 
+%  r         disc radius (rads)
+%
+%  Param     Value
+%  'nest'    pixel indexing is nested (true | {false})
+%
+%  pix       list of pixels in disc
+%
+% Example
+% nSide=8;
+% pix = queryDisc(nSide,1,pi/10,'nest');
+% numel(pix)
+% nSide2nPix(nSide)*((pi/10)/(4 Pi))
+%
+% See also queryPolygon, queryStrip, queryTriangle
+%
+% Requires pix2vec, ang2vec, angDist
+%
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: queryDisc.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+%% validate and parse arguments
+p = inputParser;
+p.addRequired('nSide',@qNSide);
+p.addRequired('c0',@(x)(isnumeric(x) && any(numel(x) == 1:3)));
+p.addRequired('r0',@(x)(isnumeric(x) && isscalar(x) && x > 0 && x <= pi));
+p.addParamValue('nest',false,@(n)(isscalar(n) && islogical(n)));
+p.parse(nSide,c0,r0,varargin{:});
+nest = p.Results.nest;
+
+%% Setup vIn
+switch numel(c0)
+  case 1 %pix
+    vc = cell2mat(pix2vec(nSide,c0,'nest',nest));
+  case 2 %ang
+    vc = cell2mat(ang2vec(c0));
+  case 3 %vec
+    vc = c0/norm(c0);
+end
+
+%% Computation
+% Find max, min z of disk
+% Find corresponding ring numbers
+% Find pixels in rings
+% Select pixels within ring
+
+th = acos(vc(3));
+zMax = cos(max(th-r0,0));
+zMin = cos(min(th+r0,pi));
+
+ringMin = z2ring(nSide,zMax);
+ringMax = z2ring(nSide,zMin);
+
+rings = min(ringMin,ringMax):max(ringMin,ringMax);
+pix = arrayfun(@(r)(cell2mat(inRing(nSide,r))),rings,'UniformOutput',false);
+pix = cell2mat(pix);
+
+d = angDist(pix,{vc},'nSide',nSide);
+pix = pix(d < r0); % closer than r0
+if nest
+  pix = ring2nest(nSide,pix);
+end
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/res2nSide.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/res2nSide.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/res2nSide.m	(revision 27955)
@@ -0,0 +1,35 @@
+function nSide = res2nSide(r)
+% RES2NSIDE Finds minimum base pixel sub-division for required resolution
+%
+%  nSide = res2nSide(r)
+%
+%  r        angular resolution (arc seconds)
+%
+%  nSide    minimum base pixel sub-divisions corresponding to resolution r
+%
+% See also nSide2res
+% 
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: res2nSide.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+
+nPix0 = 4*pi./(r*pi/(180*3600)).^2;
+nSide0 = realsqrt(nPix0/12);
+nSide = pow2(ceil(log2(nSide0)-2*eps));
+nSide(nSide<1) = 1;
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/ring2nest.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/ring2nest.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/ring2nest.m	(revision 27955)
@@ -0,0 +1,51 @@
+function nPix = ring2nest(nSide,rPix)
+% RING2NEST Convert MEALPix pixel numbers from ring to nest indexing
+%
+%  nPix = ring2nest(nSide,rPix)
+%
+%
+%  nSide      HEALPix resolution parameter
+%  rPix       ring indexed MEALPix pixel numbers
+%
+%  nPix       next indexed MEALPix pixel numbers
+%
+% See also nest2ring
+%
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: ring2nest.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+
+%% Parse and validate input
+error(nargchk(1,2,nargin,'struct'));
+if ~qNSide(nSide)
+  msgid = [mfilename ':nSide'];
+  error(msgid,msgid);
+end
+if isempty(rPix)
+  rPix = 1:(12*nSide^2);
+elseif any(fix(abs(rPix(:))) ~= rPix(:)) || any(rPix(:)<1)
+  msgid = [mfilename ':rPix'];
+  error(msgid,msgid);
+end
+
+% Convert
+sz = size(rPix);
+rPix = rPix - 1;
+nPix = f_ring2nest(nSide,reshape(rPix,[],1));
+nPix = reshape(nPix+1,sz);
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/ring2z.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/ring2z.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/ring2z.m	(revision 27955)
@@ -0,0 +1,69 @@
+function z = ring2z(nSide,nRing)
+% RING2Z Find HEALPix ring number corresponding to a given z coordinate
+%
+%  z = ring2z(nSide,nRing)
+%
+%  nSide    HEALPix base-pixel sub-divisions
+%  nRing    numeric array of ring numbers
+%
+%  z        size(nRing) numeric array of pixel center z coordinates
+%
+% Example
+% z = ring2z(4,reshape(1:15,3,5));
+%
+% See also z2ring
+%
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: ring2z.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+
+%% Parse and validate input
+p = inputParser;
+p.addRequired('nSide',@qNSide);
+p.addRequired('nRing',@(n)(qNRing(nSide,nRing))); 
+p.parse(nSide,nRing);
+
+%% pre-allocate result
+z = zeros(size(nRing));
+
+%% north polar cap
+mask = nRing < nSide;
+z(mask) = 1 - nRing(mask).^2/(3*nSide^2);
+
+%% tropical band
+mask = ~mask & nRing < 3*nSide; 
+z(mask) = (2*nSide-nRing(mask))*2/(3*nSide);
+
+%% south polar cap
+mask = nRing >= 3*nSide;
+z(mask) = -1 + (4*nSide-nRing(mask)).^2/(3*nSide^2);
+
+return
+
+function tf = qNRing(nSide,nRing)
+% QNRING true if valid ring number
+
+tf = isnumeric(nRing);
+if tf
+  nRing = nRing(:);
+  tf = ...
+    all(nRing == fix(abs(nRing))) && ...
+    all(nRing > 0) && ...
+    all(nRing < 4*nSide);
+end
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/vec2ang.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/vec2ang.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/vec2ang.m	(revision 27955)
@@ -0,0 +1,54 @@
+function tp = vec2ang(xyz)
+% VEC2ANG Convert cartesian direction vector to position angle on sphere
+%
+%  tp = vec2ang(xyz)
+%
+%  xyz    cell array of [3,1] cartesian coordinate direction vectors
+%
+% The direction vectors need not be normalized.
+%
+%  tp     cell array of [2,1] position angles ([theta; phi], radians) on
+%         sphere 
+%
+% See also ang2vec
+%
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: vec2ang.m 5831 2011-02-25 23:55:19Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+
+if ~iscell(xyz)
+  msgid = [mfilename ':xyz'];
+  error(msgid,msgid);
+end
+tp = cellfun(@v2a,xyz,'UniformOutput',false);
+
+return
+
+function tp = v2a(xyz)
+% dVec2Ang un-nomralized cartesian vector to position angle on sphere
+%
+% tp = v2a(xyz)
+%
+% xyz   [3,1]
+%
+% tp    [2,1] of [theta, phi]
+
+assert(numel(xyz)==3,[mfilename ':v2a'],[mfilename 'v2a']);
+xyz = xyz/norm(xyz);
+tp = [acos(xyz(3)); atan2(xyz(2),xyz(1))];
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/vec2pix.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/vec2pix.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/vec2pix.m	(revision 27955)
@@ -0,0 +1,147 @@
+function nPix = vec2pix(nSide,xyz,varargin)
+% VEC2PIX Convert cartesian direction vectors to MEALPix pixel numbers
+%
+%  nPix = vec2pix(nSide,xyz,'Param1',Value1,...);
+%
+%  nSide     HEALPix resolution parameter
+%  xyz       cell array of [3,1] cartesian direction vectors
+%
+%  Param     Value
+%  'nest'    use nested indexing (true | {false})
+%
+%  nPix      size(xyz) pixel number array
+%
+% Example
+%   xyz = {[1;0;0],[0;1;0],[0;0;1]};
+%   nPix = vec2pix(4,xyz);
+%
+% See also ang2pix, pix2ang, pix2vec
+%
+% Requires ring2nest
+%
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: vec2pix.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+
+%% Validate and parse input
+p = inputParser;
+
+p.addRequired('nSide', ...
+  @(x)(isscalar(x) && isnumeric(x) && x>0 && nextpow2(x) == log2(x)));
+p.addRequired('xyz',@iscell);
+p.addParamValue('nest',false,@(n)(isscalar(n) && islogical(n)));
+
+p.parse(nSide,xyz,varargin{:});
+nest = p.Results.nest;
+
+%% Convert vector(s) to pixel numbers
+% Process xyz as a vector then restore shape
+
+% Save xyz shape
+sXyz = size(xyz);
+
+% Insure cell vectors are [3,1]
+xyz = cellfun(@(v)(reshape(v,[],1)),xyz,'UniformOutput',false);
+
+% Re-express xyz as a column vector
+xyz = cell2mat(reshape(xyz,1,[]));
+
+% Find pixels
+nPix = f_vec2pix_ring(nSide,xyz(1,:),xyz(2,:),xyz(3,:));
+nPix = nPix + 1;
+if nest
+  nPix = ring2nest(nSide,nPix);
+end
+
+% Restore shape
+nPix = reshape(nPix,sXyz);
+
+return
+
+function  iPix = f_vec2pix_ring(nSide, x, y, zin)
+
+%=======================================================================
+%     renders the pixel number iPix (RING scheme) for a pixel containing
+%     a point on a sphere at coordinate vector (=x,y,z), given the map
+%     resolution parameter nside
+%=======================================================================
+
+dnorm = arrayfun(@(x,y,z)(norm([x,y,z])),x,y,zin);
+z = zin./dnorm;
+
+phi = atan2(y,x);
+za = abs(z);
+% phi(phi < 0.0) = phi(phi < 0.0) + 2*pi;
+phi = mod(phi,2*pi);
+tt = phi/(pi/2);
+nl4 = fix(4*nSide);
+
+%% preallocate result
+iPix = zeros(size(x));
+
+%% Equatorial region
+% Identify pixels
+pixMask = 3*za <= 2;
+if ~isempty(pixMask)
+  ttPix = tt(pixMask);
+  zPix = z(pixMask);
+  
+  temp1 = nSide*(ttPix + 0.5);
+  temp2 = nSide*zPix*0.75;
+  
+  % find ascending, descending line indices
+  jp = fix(temp1-temp2);
+  jm = fix(temp1+temp2);
+  
+  ir = fix(nSide+jp-jm);
+  kShift = fix(bitand(ir,1));
+  ip = fix((jp+jm-nSide+kShift+1)/2);
+  ip(ip>=nl4) = fix(ip(ip>=nl4)-nl4); % can this be replaced by a mod?
+  iPix(pixMask) = fix(2*nSide*(nSide-1) + nl4*fix(ir) + ip);
+end
+%% North, south polar cap
+% Identify pixels
+pixMask = ~pixMask;
+if ~isempty(pixMask)
+  ttPix = tt(pixMask);
+  tp = ttPix - fix(ttPix);
+  tmp = nSide*sqrt(3*(1-za(pixMask)));
+  
+  % find increasing, decreasing edge line indices
+  jp = fix(tp.*tmp);
+  jm = fix((1-tp).*tmp);
+  
+  % ring number counted from the closest pole
+  ir = fix(jp+jm+1);
+  ip = fix(ttPix.*ir);
+  tMask = ip>=4*ir;
+  ip(tMask) = fix(ip(tMask)-4*ir(tMask));
+  
+  % north pole pixels
+  nPixMask = pixMask & z > 0;
+  tMask = z(pixMask) > 0;
+  iPix(nPixMask) = fix(2*ir(tMask).*(ir(tMask)-1) + ip(tMask));
+  
+  % south pole pixels
+  sPixMask = pixMask & z <= 0;
+  tMask = ~tMask;
+  iPix(sPixMask) = fix(...
+    3*nSide*fix(nl4) - 2*ir(tMask).*(ir(tMask)+1)+ip(tMask)...
+    );
+end
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/xy2pix.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/xy2pix.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/xy2pix.m	(revision 27955)
@@ -0,0 +1,72 @@
+function ipix = xy2pix(nSide,ix,iy,nFace)
+% XY2PIX gives the pixel number ipix (NESTED) of ix, iy and face_num
+%
+% ipix = xy2pix(nSide, ix, iy, nFace)
+%
+% nside     HEALPix resolution parameter (power of 2)
+% ix,iy     x,y location on the Healpix face (1 <= ix, iy <= nSide)
+% nFace     HEALPix face  number (1 <= nFace <= 12)
+%
+% ipix      MEALPix NESTED pixel index for given x,y on the face
+%
+% See also pix2xy
+%
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: xy2pix.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+%% Parse and validate arguments
+p = inputParser;
+p.KeepUnmatched = false;
+
+p.addRequired('nSide',@qNSide);
+qNXY = @(n)(all(n(:)>0) && all(n(:)<=nSide));
+p.addRequired('ix',qNXY);
+p.addRequired('iy',qNXY);
+p.addRequired('nFace',...
+  @(n)(isscalar(n) && isnumeric(n) && ...
+  n == fix(n) && 0 < n && n <= 12));
+p.parse(nSide,ix,iy,nFace);
+
+%% Initialization
+[x2pix y2pix]=mk_xy2pix;
+
+%% Convert to HEALPix indexing
+ix = ix - 1;
+iy = iy - 1;
+
+scale = 1;
+scaleFactor = 16384;
+ipf = 0;
+ismax = 1;
+if nSide > 1048576
+  ismax = 3;
+end
+for k = 1:ismax
+  ix_low = mod(ix,128);
+  iy_low = mod(iy,128);
+  ipf = ipf + (x2pix(ix_low+1) + y2pix(iy_low+1))*scale;
+  scale = scale*scaleFactor;
+  ix = fix(ix/128);
+  iy = fix(iy/128);
+end
+ipf = ipf + (x2pix(ix+1) + y2pix(iy+1))*scale;
+
+ipix = ipf + nFace*nSide^2;
+
+ipix = ipix+1; % MEALPix numbering
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/ylm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/ylm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/ylm.m	(revision 27955)
@@ -0,0 +1,109 @@
+function v = ylm(nSide,L,M,varargin)
+% YLM returns spherical harmonic basis Y_L^M on the HEALPix sphere
+%
+%  v = ylm(nSide,L,M,'Param1',Value1,'Param2',Value2,...);
+%
+%  nSide    HEALPix resolution parameter (power of 2)
+%  L        spherical harmonic degree (0 <= L)
+%  M        spherical harmonic order (-M <= L <= M)
+%
+%  Param    Value
+%  'real'   return real values (true | {false})
+%  'nest'   nested indexing flag (true | {false}) 
+%
+%  v        spherical harmonics evaluated at pixel centers
+%
+% Example:
+%
+% % Plot Ylm for (L,M) = (4,2) on nSide = 16 HEALPix sphere
+% pix = ylm(16,4,2);
+% hp3d(pix);
+%
+% Requires pix2ang
+% Required by alm2pix, pix2alm
+% See also hp3d
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: ylm.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+%% Parse and validate input 
+p = inputParser;
+p.KeepUnmatched = false;
+p.FunctionName = mfilename;
+
+p.addRequired('nSide',@qNSide);
+p.addRequired('L',@(x)(isnumeric(x) && round(x) == x && 0 <= x));
+p.addRequired('M',@(x)(isnumeric(x) && round(x) == x));
+p.addParamValue('real',false,@(x)(isscalar(x) && islogical(x)));
+p.addParamValue('nest',false,@(x)(isscalar(x) && islogical(x)));
+
+p.parse(nSide,L,M,varargin{:});
+nSide = p.Results.nSide;
+L = p.Results.L;
+M = p.Results.M;
+real = p.Results.real;
+nest = p.Results.nest;
+
+% Check m is in range
+assert(abs(M)<=L,[mfilename ':M'],[mfilename ':M']);
+
+% Setup HEALPix pixels to solve on
+tp = pix2ang(nSide,'nest',nest);
+
+% Evaluate for positive M, using symmetry to find value for negative M
+signM = sign(M);
+M = abs(M);
+
+% Exploit HEALPix rings for legendre function calc
+th = cellfun(@(tp)(tp(1)),tp);
+[b, ~, n] = unique(th);
+ringLmn = legendre(L,cos(b));
+if L~=0
+  ringLmn = squeeze(ringLmn(M+1,:,:));
+end
+Lmn = ringLmn(n);
+
+% Calculate normalization constant
+%a1 = (2*L+1);       % 4pi normalization 
+a1 = (2*L+1)/(4*pi); % orthonormalization (default) 
+
+% a2 = factorial(L-M)/factorial(L+M);
+a2 = 1/prod((L-M+1):(L+M));
+
+C = sqrt(a1*a2);
+
+% Calculate complex Ymn
+phi = cellfun(@(x)(x(2)),tp);
+Ymn = C*Lmn.*exp(1i*M*phi);
+
+% Use symmetry to find value for negative M
+if 0 > signM
+  Ymn = (-1)^M*conj(Ymn);
+end
+
+% Set v
+v = Ymn;
+
+% Convert to real form if true == real
+if real && 0 ~= M
+  if 0 < signM
+    v = (Ymn+conj(Ymn))/sqrt(2);
+  else % 0 > signM
+    v = (-1)^M*(conj(Ymn)-Ymn)/sqrt(-2);
+  end
+end
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/z2ring.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/z2ring.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mealpix/src/z2ring.m	(revision 27955)
@@ -0,0 +1,55 @@
+function nRing = z2ring(nSide,z)
+%% Z2RING Find HEALPix ring numbers from direction vector z coordinate
+%
+%  nRing = z2ring(nSide,z)
+%
+%  nSide      HEALPix resolution parameter
+%  z          numeric array of z values
+%
+%  nRing      size(z) numeric array of ring numbers
+%
+% Description
+% HEALPix pixels centers are arranged in 4*nSide-1 rings of constant z.
+% Each ring spans a given range of z. z2ring returns the ring numbers that
+% cover the input z values. 
+% 
+% Example:
+% nRing = reshape(1:15,3,5);
+% z = ring2z(4,nRing);
+% 
+% See also ring2z
+%
+% Authors: Lee Samuel Finn, Matthew Kinsey
+% Copyright 2010-2011 Lee Samuel Finn
+
+% $Id: z2ring.m 5795 2011-02-20 04:01:32Z lsf@GRAVITY.PSU.EDU $
+
+% Copyright 2010-2011 by Lee Samuel Finn. 
+% This program file is part of MEALPix. It is licensed under the Apache
+% License, Version 2.0 (the  "License"); you may not use MEALPix 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, MEALPix
+% 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.
+
+%% Parse and validate input
+p = inputParser;
+p.FunctionName = mfilename;
+p.addRequired('nSide',@qNSide);
+p.addRequired('z',@(x)(all(abs(x(:))<=1)));
+p.parse(nSide,z);
+
+%% Work
+% Save input size
+% Flatten input
+% Find ring numbers
+% Reshape ring numbers to reflect input
+
+zSz = size(z);
+nRing = reshape(ringNum(nSide, z(:)),zSz);
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/medipack/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/medipack/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/medipack/install.sh	(revision 27955)
@@ -0,0 +1,8 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+
+#Download development version
+git clone https://github.com/SciCompKL/MeDiPack.git install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mercurial/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mercurial/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mercurial/install.sh	(revision 27955)
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install mercurial-1.7.3
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mercurial-1.7.3.tar.gz' 'mercurial-1.7.3.tar.gz'
+
+#Untar 
+tar -zxvf  mercurial-1.7.3.tar.gz
+
+#Move mercurial into install directory
+mv mercurial-1.7.3/* install
+rm -rf mercurial-1.7.3
+
+#Apply patches
+cd install 
+#patch Lib/Makefile ../lib_Makefile.patch
+
+#Compile mercurial
+make local
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/meteoio/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/meteoio/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/meteoio/install.sh	(revision 27955)
@@ -0,0 +1,39 @@
+#!/bin/bash
+#METEOIO install package:  this package is not distributed by ISSM. Please request access to the code by 
+#contacting Mathias Bavay () or logging onto http://models.slf.ch/ and registering.  Once you have a tarball 
+#of the code, please use this script to install.
+
+#we assume you have a MeteoIO-*-tar.gz  tarball
+set -eu
+
+#Do some inquiry about the names of the tar balls: 
+source_tar=`ls MeteoIO-*.tar.gz`
+source_version=`echo $source_tar | sed 's/MeteoIO-//g' | sed 's/.tar.gz//g'`
+
+if [[ $source_tar == "" ]]; then 
+	echo "Could not identify a tar ball for the source code, name should be MeteoIO-*-tar.gz"
+	exit 1
+fi
+if [[ $source_version == "" ]]; then 
+	echo "Could not identify a tar ball version for the source code"
+	exit 1
+fi
+
+#Some cleanup
+rm -rf src install MeteoIO-$source_version
+
+#First deal with source code 
+tar -zxvf  $source_tar
+mv MeteoIO-$source_version/usr src
+rm -rf MeteoIO-$source_version
+
+#Reset makefile: 
+cd src && rm -rf CMakeCache.txt 
+cmake -DCMAKE_INSTALL_PREFIX:PATH=$ISSM_DIR/externalpackages/meteoio/install .
+
+#Compile 
+if [ $# -eq 0 ]; then
+	make all install
+else
+	make -j $1 all install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/altix64/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/altix64/Makefile.in.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/altix64/Makefile.in.patch	(revision 27955)
@@ -0,0 +1,10 @@
+3c3,5
+< CC = cc
+---
+> CC = gcc
+> OBJ_EXT=o
+> LIB_EXT=a
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -DLINUX -fPIC
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/cosmos/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/cosmos/Makefile.in.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/cosmos/Makefile.in.patch	(revision 27955)
@@ -0,0 +1,10 @@
+3c3,5
+< CC = cc
+---
+> CC = icc
+> OBJ_EXT=o
+> LIB_EXT=a
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -DLINUX -fPIC
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/discover/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/discover/Makefile.in.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/discover/Makefile.in.patch	(revision 27955)
@@ -0,0 +1,10 @@
+3c3,5
+< CC = cc
+---
+> CC = icc
+> OBJ_EXT=o
+> LIB_EXT=a
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -DLINUX -fPIC
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/greenplanet/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/greenplanet/Makefile.in.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/greenplanet/Makefile.in.patch	(revision 27955)
@@ -0,0 +1,10 @@
+3c3,5
+< CC = cc
+---
+> CC = icc
+> OBJ_EXT=o
+> LIB_EXT=a
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -DLINUX -fPIC
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/linux64/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/linux64/Makefile.in.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/linux64/Makefile.in.patch	(revision 27955)
@@ -0,0 +1,10 @@
+3c3,5
+< CC = cc
+---
+> CC = gcc
+> OBJ_EXT=o
+> LIB_EXT=a
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -DLINUX -fPIC
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/macosx32/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/macosx32/Makefile.in.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/macosx32/Makefile.in.patch	(revision 27955)
@@ -0,0 +1,10 @@
+3c3,5
+< CC = cc
+---
+> CC = gcc
+> OBJ_EXT=o
+> LIB_EXT=a
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -O2  -m32
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/macosx64/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/macosx64/Makefile.in.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/macosx64/Makefile.in.patch	(revision 27955)
@@ -0,0 +1,10 @@
+3c3,5
+< CC = cc
+---
+> CC = gcc
+> OBJ_EXT=o
+> LIB_EXT=a
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -O2  -m64
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/pleiades/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/pleiades/Makefile.in.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/pleiades/Makefile.in.patch	(revision 27955)
@@ -0,0 +1,10 @@
+3c3,5
+< CC = cc
+---
+> CC = icc
+> OBJ_EXT=o
+> LIB_EXT=a
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -DLINUX -fPIC
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/win32/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/win32/Makefile.in.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/win32/Makefile.in.patch	(revision 27955)
@@ -0,0 +1,10 @@
+3c3,5
+< CC = cc
+---
+> CC = icl
+> OBJ_EXT=obj
+> LIB_EXT=lib
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -DWIN32 -D__VC__
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/win7/Makefile.in.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/win7/Makefile.in.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/win7/Makefile.in.patch	(revision 27955)
@@ -0,0 +1,21 @@
+3c3,5
+< CC = cc
+---
+> CC = cl
+> OBJ_EXT=obj
+> LIB_EXT=lib
+6c8
+< OPTFLAGS = -O2 
+---
+> OPTFLAGS = -DWIN32 -D__VC__
+14,20c16,17
+< # What archiving to use
+< AR = ar rv
+< 
+< # What to use for indexing the archive
+< RANLIB = ranlib
+< #RANLIB = ar -ts
+< #RANLIB = 
+---
+> # What tool to use to create library
+> LIB=lib.exe
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/win7/Makefile.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/win7/Makefile.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/4.0/win7/Makefile.patch	(revision 27955)
@@ -0,0 +1,5 @@
+24c24,25
+< 	$(LIB) -out:$@ $(OBJS)
+---
+> 	$(AR) $@ $(OBJS)
+> 	$(RANLIB) $@
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/5.1/win/msys2/GKlib/gk_arch.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/5.1/win/msys2/GKlib/gk_arch.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/5.1/win/msys2/GKlib/gk_arch.h	(revision 27955)
@@ -0,0 +1,73 @@
+/*!
+\file gk_arch.h
+\brief This file contains various architecture-specific declerations
+
+\date   Started 3/27/2007
+\author George
+\version\verbatim $Id: gk_arch.h 10711 2011-08-31 22:23:04Z karypis $ \endverbatim
+*/
+
+#ifndef _GK_ARCH_H_
+#define _GK_ARCH_H_
+
+/*************************************************************************
+* Architecture-specific differences in header files
+**************************************************************************/
+#ifdef LINUX
+#if !defined(__USE_XOPEN)
+#define __USE_XOPEN
+#endif
+#if !defined(_XOPEN_SOURCE)
+#define _XOPEN_SOURCE 600
+#endif
+#if !defined(__USE_XOPEN2K)
+#define __USE_XOPEN2K
+#endif
+#endif
+
+
+#ifdef HAVE_EXECINFO_H
+#include <execinfo.h>
+#endif
+
+
+#ifdef __MSC__ 
+  #include "ms_stdint.h"
+  #include "ms_inttypes.h"
+  #include "ms_stat.h"
+#else
+#ifndef SUNOS
+  #include <stdint.h>
+#endif
+  #include <inttypes.h>
+  #include <sys/types.h>
+  #ifndef __MINGW32__
+  #include <sys/resource.h>
+  #endif
+  #include <sys/time.h>
+#endif
+
+
+/*************************************************************************
+* Architecture-specific modifications
+**************************************************************************/
+#ifdef WIN32
+typedef ptrdiff_t ssize_t;
+#endif
+
+
+#ifdef SUNOS
+#define PTRDIFF_MAX  INT64_MAX
+#endif
+
+#ifdef __MSC__
+/* MSC does not have rint() function */
+#define rint(x) ((int)((x)+0.5))  
+
+/* MSC does not have INFINITY defined */
+#ifndef INFINITY
+#define INFINITY FLT_MAX
+#endif
+#endif
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/5.1/win/msys2/GKlib/gk_getopt.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/5.1/win/msys2/GKlib/gk_getopt.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/5.1/win/msys2/GKlib/gk_getopt.h	(revision 27955)
@@ -0,0 +1,53 @@
+/*!
+\file gk_getopt.h
+\brief This file contains GNU's externs/structs/prototypes
+
+\date   Started 3/27/2007
+\author George
+\version\verbatim $Id: gk_getopt.h 10711 2011-08-31 22:23:04Z karypis $ \endverbatim
+*/
+
+#ifndef _GK_GETOPT_H_
+#define _GK_GETOPT_H_
+
+
+/* Externals from getopt.c */
+extern char *gk_optarg;
+extern int gk_optind;
+extern int gk_opterr;
+extern int gk_optopt;
+
+
+/*! \brief The structure that stores the information about the command-line options 
+
+This structure describes a single long option name for the sake of 
+gk_getopt_long(). The argument <tt>long_options</tt> must be an array 
+of these structures, one for each long option. Terminate the array with 
+an element containing all zeros.
+*/
+struct gk_option {
+  char *name;       /*!< This field is the name of the option. */
+  int has_arg;      /*!< This field says whether the option takes an argument. 
+                         It is an integer, and there are three legitimate values: 
+                         no_argument, required_argument and optional_argument. 
+                         */
+  int *flag;        /*!< See the discussion on ::gk_option#val */
+  int val;          /*!< These fields control how to report or act on the option 
+                         when it occurs. 
+                         
+                         If flag is a null pointer, then the val is a value which 
+                         identifies this option. Often these values are chosen 
+                         to uniquely identify particular long options.
+
+                         If flag is not a null pointer, it should be the address 
+                         of an int variable which is the flag for this option. 
+                         The value in val is the value to store in the flag to 
+                         indicate that the option was seen. */
+};
+
+/* Names for the values of the `has_arg' field of `struct gk_option'.  */
+#define no_argument		0
+#define required_argument	1
+#define optional_argument	2
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/5.1/win/msys2/Makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/5.1/win/msys2/Makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/configs/5.1/win/msys2/Makefile	(revision 27955)
@@ -0,0 +1,133 @@
+# Configuration options.
+gdb        = not-set
+assert     = not-set
+assert2    = not-set
+debug      = not-set
+gprof      = not-set
+openmp     = not-set
+prefix     = not-set
+gklib_path = not-set
+windows    = not-set
+shared     = not-set
+cc         = not-set
+cxx        = not-set
+ar         = not-set
+gcc-ar     = not-set
+ranlib     = not-set
+gcc-ranlib = not-set
+linker     = not-set
+nm         = not-set
+objcopy    = not-set
+objdump    = not-set
+rc         = not-set
+strip      = not-set
+
+
+# Basically proxies everything to the builddir cmake.
+
+cputype = $(shell uname -m | sed "s/\\ /_/g")
+systype = $(shell uname -s)
+
+BUILDDIR = build/$(systype)-$(cputype)
+
+# Process configuration options.
+CONFIG_FLAGS = -DCMAKE_VERBOSE_MAKEFILE=1
+ifeq ($(gklib_path), not-set)
+    gklib_path = GKlib
+endif
+CONFIG_FLAGS += -DGKLIB_PATH=$(abspath $(gklib_path))
+ifneq ($(gdb), not-set)
+    CONFIG_FLAGS += -DGDB=$(gdb)
+endif
+ifneq ($(assert), not-set)
+    CONFIG_FLAGS += -DASSERT=$(assert)
+endif
+ifneq ($(assert2), not-set)
+    CONFIG_FLAGS += -DASSERT2=$(assert2)
+endif
+ifneq ($(debug), not-set)
+    CONFIG_FLAGS += -DDEBUG=$(debug)
+endif
+ifneq ($(gprof), not-set)
+    CONFIG_FLAGS += -DGPROF=$(gprof)
+endif
+ifneq ($(openmp), not-set)
+    CONFIG_FLAGS += -DOPENMP=$(openmp)
+endif
+ifneq ($(prefix), not-set)
+    CONFIG_FLAGS += -DCMAKE_INSTALL_PREFIX=$(prefix)
+endif
+ifneq ($(windows), not-set)
+    CONFIG_FLAGS += -DMSVC=0
+endif
+ifneq ($(shared), not-set)
+    CONFIG_FLAGS += -DSHARED=1 -DCMAKE_SHARED_LINKER_FLAGS=-Wl,--no-undefined
+endif
+ifneq ($(cc), not-set)
+    CONFIG_FLAGS += -DCMAKE_C_COMPILER=$(cc)
+endif
+ifneq ($(cxx), not-set)
+    CONFIG_FLAGS += -DCMAKE_CXX_COMPILER=$(cxx)
+endif
+ifneq ($(ar), not-set)
+    CONFIG_FLAGS += -DCMAKE_AR=$(ar)
+endif
+ifneq ($(gcc-ar), not-set)
+    CONFIG_FLAGS += -DCMAKE_C_COMPILER_AR=$(gcc-ar) -DCMAKE_CXX_COMPILER_AR=$(gcc-ar)
+endif
+ifneq ($(ranlib), not-set)
+    CONFIG_FLAGS += -DCMAKE_RANLIB=$(ranlib)
+endif
+ifneq ($(gcc-ranlib), not-set)
+    CONFIG_FLAGS += -DCMAKE_C_COMPILER_RANLIB=$(gcc-ranlib) -DCMAKE_CXX_COMPILER_RANLIB=$(gcc-ranlib)
+endif
+ifneq ($(linker), not-set)
+    CONFIG_FLAGS += -DCMAKE_LINKER=$(linker)
+endif
+ifneq ($(nm), not-set)
+    CONFIG_FLAGS += -DCMAKE_NM=$(nm)
+endif
+ifneq ($(objcopy), not-set)
+    CONFIG_FLAGS += -DCMAKE_OBJCOPY=$(objcopy)
+endif
+ifneq ($(objdump), not-set)
+    CONFIG_FLAGS += -DCMAKE_OBJDUMP=$(objdump)
+endif
+ifneq ($(rc), not-set)
+    CONFIG_FLAGS += -DCMAKE_RC_COMPILER=$(rc)
+endif
+ifneq ($(strip), not-set)
+    CONFIG_FLAGS += -DCMAKE_STRIP=$(strip)
+endif
+
+VERNUM=5.1.0
+PKGNAME=metis-$(VERNUM)
+
+define run-config
+mkdir -p $(BUILDDIR)
+cd $(BUILDDIR) && cmake $(CURDIR) $(CONFIG_FLAGS)
+endef
+
+all clean install:
+	@if [ ! -f $(BUILDDIR)/Makefile ]; then \
+		more BUILD.txt; \
+	else \
+	  	make -C $(BUILDDIR) $@ $(MAKEFLAGS); \
+	fi
+
+uninstall:
+	xargs rm < $(BUILDDIR)/install_manifest.txt
+
+config: distclean
+	$(run-config)
+
+distclean:
+	rm -rf $(BUILDDIR)
+
+remake:
+	find . -name CMakeLists.txt -exec touch {} ';'
+
+dist:
+	utils/mkdist.sh $(PKGNAME)
+
+.PHONY: config distclean all clean install uninstall remake dist
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-altix64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-altix64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-altix64.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/altix64/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-cosmos.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-cosmos.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-cosmos.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/cosmos/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-discover.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-discover.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-discover.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/discover/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-greenplanet.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-greenplanet.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-greenplanet.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/greenplanet/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-hoffman2.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-hoffman2.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-hoffman2.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/pleiades/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-linux64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-linux64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-linux64.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/linux64/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-macosx32.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-macosx32.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-macosx32.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/macosx32/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-macosx64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-macosx64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-macosx64.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/macosx64/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-pleiades.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-pleiades.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-pleiades.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/pleiades/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-win10.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-win10.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-win10.sh	(revision 27955)
@@ -0,0 +1,25 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch -R Lib/Makefile ../configs/4.0/win7/Makefile.patch
+patch Makefile.in ../configs/4.0/win7/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-win32.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-win32.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-4.0-win32.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install metis-4.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/metis-4.0.tar.gz' 'metis-4.0.tar.gz'
+
+#Untar 
+tar -zxvf  metis-4.0.tar.gz
+
+#Move metis into install directory
+mv metis-4.0/* install
+rm -rf metis-4.0
+
+#Apply patches
+cd install 
+patch -p1 < ../metis-4.0.patch
+patch Makefile.in ../configs/4.0/win32/Makefile.in.patch
+
+#Compile
+make
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-5-win-msys2-gcc.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-5-win-msys2-gcc.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-5-win-msys2-gcc.sh	(revision 27955)
@@ -0,0 +1,68 @@
+#!/bin/bash
+set -eu
+
+
+# TODO
+# - Move installation of GKlib to $PREFIX to Makefile instead of simply copying 
+#	it
+#
+
+## Constants
+#
+VER=5.1.0
+
+PREFIX="${ISSM_DIR}/externalpackages/metis/install"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/metis-${VER}.tar.gz" "metis-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf metis-$VER.tar.gz
+
+# Move source into 'src' directory
+mv metis-${VER}/* src
+rm -rf metis-${VER}
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/5.1/win/msys2/Makefile src
+cp configs/5.1/win/msys2/gcc/GKlib/gk_arch.h src/GKlib
+cp configs/5.1/win/msys2/gcc/GKlib/gk_getopt.h src/GKlib
+
+# Configure
+cd src
+make config \
+	prefix=${PREFIX} \
+	shared=1 \
+	cc=/usr/bin/gcc \
+	cxx=/usr/bin/g++
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+
+# Install GKlib
+cp -R GKlib ${PREFIX}
+
+# Create link to shared version of library so that libtool can find it
+#
+# NOTE: MSYS2 needs to be run as administrator for this to work.
+#
+cd ${PREFIX}/lib
+ln -s ./msys-metis.dll ./libmetis.dll
+
+# Create link to lib directory (PETSc, by default, looks for libraries in 
+# lib64/ if it detects that 64-bit integers are being used)
+#
+# NOTE: MSYS2 needs to be run as administrator for this to work.
+#
+cd ${PREFIX}
+ln -s ./lib ./lib64
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-5-win-msys2-mingw.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-5-win-msys2-mingw.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-5-win-msys2-mingw.sh	(revision 27955)
@@ -0,0 +1,65 @@
+#!/bin/bash
+set -eu
+
+
+# TODO
+# - Move installation of GKlib to $PREFIX to Makefile instead of simply copying 
+#	it
+#
+
+## Constants
+#
+VER=5.1.0
+
+PREFIX="${ISSM_DIR}/externalpackages/metis/install"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/metis-${VER}.tar.gz" "metis-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf metis-$VER.tar.gz
+
+# Move source into 'src' directory
+mv metis-${VER}/* src
+rm -rf metis-${VER}
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/5.1/win/msys2/Makefile src
+cp configs/5.1/win/msys2/GKlib/gk_arch.h src/GKlib
+cp configs/5.1/win/msys2/GKlib/gk_getopt.h src/GKlib
+
+# Configure
+cd src
+make config \
+	prefix=${PREFIX} \
+	shared=1 \
+	cc=/mingw64/bin/gcc \
+	cxx=/mingw64/bin/g++
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+
+# Install GKlib
+cp -R GKlib ${PREFIX}
+
+# Create link to lib directory (PETSc, by default, looks for libraries in 
+# lib64/ if it detects that 64-bit integers are being used)
+#
+# NOTE: MSYS2 needs to be run as administrator for this to work.
+#
+cd ${PREFIX}
+ln -s ./lib ./lib64
+
+# Create link to shared version of library so that libtool can find it
+cd ${PREFIX}/lib
+ln -s libmetis.so libmetis.dll
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-5.0.1-linux64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-5.0.1-linux64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/install-5.0.1-linux64.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+#metis 5.0 should be used: srand48 and drand48 are being redefined in conflict to the stdlib equivalent functions.
+
+#Some cleanup
+rm -rf install metis-5.0.1
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/metis-5.0.1.tar.gz' 'metis-5.0.1.tar.gz'
+
+#Untar 
+tar -zxvf  metis-5.0.1.tar.gz
+
+#Move metis into install directory
+mv metis-5.0.1/* install
+rm -rf metis-5.0.1
+
+#Apply patches
+cd install 
+
+#Compile metis
+make config prefix="$ISSM_DIR/externalpackages/metis/install"
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/metis-4.0.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/metis-4.0.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/metis/metis-4.0.patch	(revision 27955)
@@ -0,0 +1,237 @@
+diff -crB install/Lib/kmetis.c install2/Lib/kmetis.c
+*** install/Lib/kmetis.c	1998-11-30 08:26:47.000000000 -0800
+--- install2/Lib/kmetis.c	2011-06-08 15:47:33.911358942 -0700
+***************
+*** 66,72 ****
+      ctrl.dbglvl = options[OPTION_DBGLVL];
+    }
+    ctrl.optype = OP_KMETIS;
+!   ctrl.CoarsenTo = amax((*nvtxs)/(40*log2(*nparts)), 20*(*nparts));
+    ctrl.maxvwgt = 1.5*((graph.vwgt ? idxsum(*nvtxs, graph.vwgt) : (*nvtxs))/ctrl.CoarsenTo);
+  
+    InitRandom(-1);
+--- 66,72 ----
+      ctrl.dbglvl = options[OPTION_DBGLVL];
+    }
+    ctrl.optype = OP_KMETIS;
+!   ctrl.CoarsenTo = amax((*nvtxs)/(40*log2_function(*nparts)), 20*(*nparts));
+    ctrl.maxvwgt = 1.5*((graph.vwgt ? idxsum(*nvtxs, graph.vwgt) : (*nvtxs))/ctrl.CoarsenTo);
+  
+    InitRandom(-1);
+diff -crB install/Lib/kvmetis.c install2/Lib/kvmetis.c
+*** install/Lib/kvmetis.c	1998-11-30 08:26:47.000000000 -0800
+--- install2/Lib/kvmetis.c	2011-06-08 15:47:33.916358976 -0700
+***************
+*** 66,72 ****
+      ctrl.dbglvl = options[OPTION_DBGLVL];
+    }
+    ctrl.optype = OP_KVMETIS;
+!   ctrl.CoarsenTo = amax((*nvtxs)/(40*log2(*nparts)), 20*(*nparts));
+    ctrl.maxvwgt = 1.5*((graph.vwgt ? idxsum(*nvtxs, graph.vwgt) : (*nvtxs))/ctrl.CoarsenTo);
+  
+    InitRandom(-1);
+--- 66,72 ----
+      ctrl.dbglvl = options[OPTION_DBGLVL];
+    }
+    ctrl.optype = OP_KVMETIS;
+!   ctrl.CoarsenTo = amax((*nvtxs)/(40*log2_function(*nparts)), 20*(*nparts));
+    ctrl.maxvwgt = 1.5*((graph.vwgt ? idxsum(*nvtxs, graph.vwgt) : (*nvtxs))/ctrl.CoarsenTo);
+  
+    InitRandom(-1);
+diff -crB install/Lib/Makefile install2/Lib/Makefile
+*** install/Lib/Makefile	1998-09-22 05:08:29.000000000 -0700
+--- install2/Lib/Makefile	2011-06-08 15:19:00.551540482 -0700
+***************
+*** 6,31 ****
+  LD = $(CC) -L. 
+  
+  
+! OBJS = coarsen.o fm.o initpart.o match.o ccgraph.o memory.o \
+!        pmetis.o pqueue.o refine.o util.o timing.o debug.o \
+!        bucketsort.o graph.o stat.o kmetis.o kwayrefine.o \
+!        kwayfm.o balance.o ometis.o srefine.o sfm.o separator.o \
+!        mincover.o mmd.o mesh.o meshpart.o frename.o fortran.o \
+!        myqsort.o compress.o parmetis.o estmem.o \
+!        mpmetis.o mcoarsen.o mmatch.o minitpart.o mbalance.o \
+!        mrefine.o mutil.o mfm.o mkmetis.o mkwayrefine.o mkwayfmh.o \
+!        mrefine2.o minitpart2.o mbalance2.o mfm2.o \
+!        kvmetis.o kwayvolrefine.o kwayvolfm.o subdomains.o
+  
+! .c.o:
+! 	$(CC) $(CFLAGS) -c $*.c
+  
+! ../libmetis.a: $(OBJS)
+  	$(AR) $@ $(OBJS)
+  	$(RANLIB) $@
+  
+  clean:
+! 	rm -f *.o
+  
+  realclean:
+! 	rm -f *.o ; rm -f ../libmetis.a
+--- 6,31 ----
+  LD = $(CC) -L. 
+  
+  
+! OBJS = coarsen.$(OBJ_EXT) fm.$(OBJ_EXT) initpart.$(OBJ_EXT) match.$(OBJ_EXT) ccgraph.$(OBJ_EXT) memory.$(OBJ_EXT) \
+!        pmetis.$(OBJ_EXT) pqueue.$(OBJ_EXT) refine.$(OBJ_EXT) util.$(OBJ_EXT) timing.$(OBJ_EXT) debug.$(OBJ_EXT) \
+!        bucketsort.$(OBJ_EXT) graph.$(OBJ_EXT) stat.$(OBJ_EXT) kmetis.$(OBJ_EXT) kwayrefine.$(OBJ_EXT) \
+!        kwayfm.$(OBJ_EXT) balance.$(OBJ_EXT) ometis.$(OBJ_EXT) srefine.$(OBJ_EXT) sfm.$(OBJ_EXT) separator.$(OBJ_EXT) \
+!        mincover.$(OBJ_EXT) mmd.$(OBJ_EXT) mesh.$(OBJ_EXT) meshpart.$(OBJ_EXT) frename.$(OBJ_EXT) fortran.$(OBJ_EXT) \
+!        myqsort.$(OBJ_EXT) compress.$(OBJ_EXT) parmetis.$(OBJ_EXT) estmem.$(OBJ_EXT) \
+!        mpmetis.$(OBJ_EXT) mcoarsen.$(OBJ_EXT) mmatch.$(OBJ_EXT) minitpart.$(OBJ_EXT) mbalance.$(OBJ_EXT) \
+!        mrefine.$(OBJ_EXT) mutil.$(OBJ_EXT) mfm.$(OBJ_EXT) mkmetis.$(OBJ_EXT) mkwayrefine.$(OBJ_EXT) mkwayfmh.$(OBJ_EXT) \
+!        mrefine2.$(OBJ_EXT) minitpart2.$(OBJ_EXT) mbalance2.$(OBJ_EXT) mfm2.$(OBJ_EXT) \
+!        kvmetis.$(OBJ_EXT) kwayvolrefine.$(OBJ_EXT) kwayvolfm.$(OBJ_EXT) subdomains.$(OBJ_EXT)
+  
+! %.$(OBJ_EXT) : %.c
+! 	$(CC) -c $(CFLAGS) -o $@ $<
+  
+! ../libmetis.$(LIB_EXT): $(OBJS)
+  	$(AR) $@ $(OBJS)
+  	$(RANLIB) $@
+  
+  clean:
+! 	rm -f *.$(OBJ_EXT)
+  
+  realclean:
+! 	rm -f *.$(OBJ_EXT) ; rm -f ../libmetis.$(LIB_EXT)
+diff -crB install/Lib/metis.h install2/Lib/metis.h
+*** install/Lib/metis.h	1998-11-30 08:26:50.000000000 -0800
+--- install2/Lib/metis.h	2011-06-08 15:19:00.544540433 -0700
+***************
+*** 18,24 ****
+--- 18,26 ----
+  #else
+  #include <malloc.h>
+  #endif
++ #ifndef WIN32
+  #include <strings.h>
++ #endif
+  #include <string.h>
+  #include <ctype.h>
+  #include <math.h>
+diff -crB install/Lib/mkmetis.c install2/Lib/mkmetis.c
+*** install/Lib/mkmetis.c	1998-11-30 08:26:48.000000000 -0800
+--- install2/Lib/mkmetis.c	2011-06-08 15:47:33.921359010 -0700
+***************
+*** 47,53 ****
+      ctrl.dbglvl = options[OPTION_DBGLVL];
+    }
+    ctrl.optype = OP_KMETIS;
+!   ctrl.CoarsenTo = amax((*nvtxs)/(20*log2(*nparts)), 30*(*nparts));
+  
+    ctrl.nmaxvwgt = 1.5/(1.0*ctrl.CoarsenTo);
+  
+--- 47,53 ----
+      ctrl.dbglvl = options[OPTION_DBGLVL];
+    }
+    ctrl.optype = OP_KMETIS;
+!   ctrl.CoarsenTo = amax((*nvtxs)/(20*log2_function(*nparts)), 30*(*nparts));
+  
+    ctrl.nmaxvwgt = 1.5/(1.0*ctrl.CoarsenTo);
+  
+diff -crB install/Lib/proto.h install2/Lib/proto.h
+*** install/Lib/proto.h	1998-11-30 08:26:50.000000000 -0800
+--- install2/Lib/proto.h	2011-06-08 15:47:34.009359613 -0700
+***************
+*** 230,237 ****
+--- 230,243 ----
+  void QUADNODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy);
+  
+  /* meshpart.c */
++ #ifdef __cplusplus
++ extern "C" {
++ #endif
+  void METIS_PartMeshNodal(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
+  void METIS_PartMeshDual(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
++ #ifdef __cplusplus
++ }
++ #endif
+  
+  /* mfm.c */
+  void MocFM_2WayEdgeRefine(CtrlType *, GraphType *, float *, int);
+***************
+*** 459,465 ****
+  void srand48(long);
+  int ispow2(int);
+  void InitRandom(int);
+! int log2(int);
+  
+  
+  
+--- 465,471 ----
+  void srand48(long);
+  int ispow2(int);
+  void InitRandom(int);
+! int log2_function(int);
+  
+  
+  
+diff -crB install/Lib/rename.h install2/Lib/rename.h
+*** install/Lib/rename.h	1998-11-30 08:26:50.000000000 -0800
+--- install2/Lib/rename.h	2011-06-08 15:47:34.014359647 -0700
+***************
+*** 410,416 ****
+  #define RandomPermute			__RandomPermute
+  #define ispow2				__ispow2
+  #define InitRandom			__InitRandom
+! #define log2				__log2
+  
+  
+  
+--- 410,417 ----
+  #define RandomPermute			__RandomPermute
+  #define ispow2				__ispow2
+  #define InitRandom			__InitRandom
+! /* Correction bug Nadir SOUALEM*/
+! #define log2_function				__log2_function
+  
+  
+  
+diff -crB install/Lib/util.c install2/Lib/util.c
+*** install/Lib/util.c	1998-11-30 08:26:50.000000000 -0800
+--- install2/Lib/util.c	2011-06-08 15:47:34.018359675 -0700
+***************
+*** 507,515 ****
+  }
+  
+  /*************************************************************************
+! * This function returns the log2(x)
+  **************************************************************************/
+! int log2(int a)
+  {
+    int i;
+  
+--- 507,515 ----
+  }
+  
+  /*************************************************************************
+! * This function returns the log2_function(x)
+  **************************************************************************/
+! int log2_function(int a)
+  {
+    int i;
+  
+diff -crB install/Makefile install2/Makefile
+*** install/Makefile	1998-09-20 11:15:31.000000000 -0700
+--- install2/Makefile	2011-06-08 15:19:00.511540204 -0700
+***************
+*** 2,9 ****
+  
+  default:
+  	(cd Lib ; make ) 
+! 	(cd Programs ; make ) 
+! 	(cd Test ; make ) 
+  
+  clean:
+  	(cd Lib ; make clean )
+--- 2,9 ----
+  
+  default:
+  	(cd Lib ; make ) 
+! #	(cd Programs ; make ) 
+! #	(cd Test ; make ) 
+  
+  clean:
+  	(cd Lib ; make clean )
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mingw-mex/README
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mingw-mex/README	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mingw-mex/README	(revision 27955)
@@ -0,0 +1,55 @@
+This directory contains instructions (this file) and supporting files for 
+setting up mex to use MinGW compilers to produce MEX-files.
+
+NOTE: This does not apply to the 'MATLAB Support for MinGW-w64 C/C++ Compiler' 
+Add-On: what we are concerned with here is setting mex to use external MinGW 
+compilers.
+
+==========================================
+Setup MinGW compilers to produce MEX files
+==========================================
+- Start an instance of MATLAB
+- Navigate to $ISSM_DIR/externalpackages/mingw-mex
+- In the MATLAB Command Window run,
+
+	>> configuremingw
+
+- In the resulting prompt, navigate to the root MinGW gcc directory (if you 
+have followed the Windows installation instructions on our Web site, 
+https://issm.jpl.nasa.gov/download/windows, this should be 
+'C:\msys64\mingw64').
+- Verify that configuration was successful,
+
+	>> mex -setup C
+	MEX configured to use 'MinGW64 Compiler (C)' for C language compilation.
+	>> mex -setup C++
+	MEX configured to use 'MinGW64 Compiler (C++)' for C++ language compilation.
+
+If configuration was unsuccessful, see if a new version of configuremingw.p is 
+available at,
+
+	https://www.mathworks.com/matlabcentral/answers/313298-i-already-have-mingw-on-my-computer-how-do-i-configure-it-to-work-with-matlab
+
+If so, please notify us on the ISSM Forum at https://issm.ess.uci.edu/forum so 
+that we can update the file in our repository.
+
+=========================
+Building yprime.c Example
+=========================
+- Start an instance of MATLAB
+- Navigate to $ISSM_DIR/externalpackages/mingw-mex
+- In the MATLAB Command Window run,
+
+	>> copyfile(fullfile(matlabroot,'extern','examples','mex','yprime.c'),'.','f')
+	>> mex yprime.c
+
+- Test the generate MEX file with,
+
+	>> yprime(1,1:4)
+
+	ans =
+
+	    2.0000    8.9685    4.0000   -1.0947
+
+Sources:
+- https://www.mathworks.com/help/matlab/matlab_external/install-mingw-support-package.html
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mitgcm/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mitgcm/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mitgcm/install.sh	(revision 27955)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+#Do these commands once:
+# cvs -d:pserver:cvsanon@mitgcm.org:/u/gcmpack login
+# ( enter the CVS password: "cvsanon" )
+
+#Some cleanup
+rm -rf install   bin exe
+
+#add cvs repository
+export CVSROOT=':pserver:cvsanon@mitgcm.org:/u/gcmpack'
+
+echo loging into MITgcm cvs: provide password, which is cvsanon
+cvs login
+
+#Download code from server
+cvs login
+cvs co -P MITgcm
+
+#move
+mv MITgcm install
+
+
+#compile code
+cd install
+mkdir bin exe
+cd bin
+../tools/genmake2 -mods=../../code
+make depend
+make -j 8
+
+
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mitgcm/notes
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mitgcm/notes	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mitgcm/notes	(revision 27955)
@@ -0,0 +1,112 @@
+Explanations of the code:  {{{1
+doc:  call Dimitris.
+
+Main code of MITgcm in 3 dir: 
+
+eesupp:  running the code on parallel  clusters. infrastructure for running MPI, shared memory, non-physics part of the code.
+	src: main.F: eeboo  (wrapper initialization)
+			     check_threads
+			     the_model_main
+			     eedie (wrapper termination)
+	inc
+
+
+model:  here is the model main.
+	src: the_model_main.F includes the base MITgcm code.
+	inc:
+
+pkg: do various physics. packages will not be compiled.
+   kpp: vertical mixing  parametization
+   gmred: isopicnel mixing parameterization. 
+  
+   thice: 
+   seaice: sea ice models
+   
+   shelfice: interacting with ice sheets
+   icefront 
+
+   cal: calendar correspondance between model time step and calendar time.
+
+   diagnostics: any physical variable that you want to look at. get output variables into output of the model.
+
+   debug: other kind of diagnostics, various levels of debug.
+
+   frazil: frazil ice.
+
+   atmospherics packages: fizhi, cheapaml
+
+   exch2: fancier way of exchanging data and tiling.
+
+
+jobs: forget about it.
+
+
+lsopt: forget it.
+
+optim: forget it.
+
+
+utils: 
+   matlab: bunch of matlab scripts.
+
+tools: build_options: platform dependent run files to be run with gene_make to generate the correct Makefile. 
+}}}
+How to run : {{{1
+All the verification tests are downloaded if you checkout the MITgcm repository instead of the 
+MITgcm_code: 
+cvs co -P MITgcm
+
+The verification tests are downloaded in MITgcm/verification. They can be run using 
+the testreport utility. Only a subset of the tests can be run if needed, by supplying 
+an option flag to tesstreport. 
+
+
+For our work, the relevant tests are: 
+labsea: sea ice
+ismip: shelf ice
+
+If you run a test like lab_sea: 
+
+./code/packages.conf: list of packages that we want to compile for this specific run.
+For each package, you at least need to modify code/size.h
+
+You can find the runtime parameters in: 
+input/data: runtime parameters  for model source
+input/eedata:runtime parameters  for eesupp source
+input/data.: runtime parameters for all packages
+intput/data.pkg: runtime parameters for packages that need to be run. subset of packages.conf
+
+The build directory holds the source and objects for the current test, with symlinks 
+
+If errors appear during the run, go into: 
+./run and find the STDERR file.
+
+To supply different Makefile templates for testreport:
+testreport -ef -opt Makefile_amd64_gfortran
+
+You can use matlab to plot the results: 
+use readbin from the labsea experiment or MITgcm/tools/matlab/rdmds
+
+There is an MITgcm_contrib repository for code that is not in the main trunk yet: 
+MITgcm_contrib/MPMice/beaufort presents a scenario for a quick coupler.
+
+}}}
+Extra nodes{{{
+cd install/verification/ 
+./testreport -of ../tools/build_options/linux_amd64_gfortran
+
+( results for baseline lab_sea verification
+  experiment are in verification/lab_sea/run )
+
+cd lab_sea/run
+there is routines in lab_sea/matlab
+
+ma
+addpath('../matlab')
+eta=readbin('Eta.0000000001.data',[20 16],1);
+pcolor(eta')
+colorbar
+
+addpath('../../../utils/matlab')
+eta=rdmds('Eta.0000000001');
+}}}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mitgcm/readme_mitgcm.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mitgcm/readme_mitgcm.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mitgcm/readme_mitgcm.txt	(revision 27955)
@@ -0,0 +1,84 @@
+Instructions for getting MITgcm:   http://mitgcm.org/ 
+
+
+(1)
+add to your .bashrc file
+# CVS 
+export CVSROOT=':pserver:cvsanon@mitgcm.org:/u/gcmpack'
+
+source .bashrc
+
+cvs login 
+ ( enter the CVS password: "cvsanon" )
+
+cvs co -P MITgcm
+
+(
+or if you don't want the verification packages
+cvs co -P MITgcm_code
+)
+
+
+(2)
+and if you don't like CVS  go to :
+
+http://mitgcm.org/download/
+
+and download the most recent checkpoint:
+e.g.
+     MITgcm_c62w.tar.gz
+
+
+
+
+
+==========================================================
+Instructions for generating and running a 1-CPU experiment
+==========================================================
+
+  cd MITgcm/verification/lab_sea
+  cd build
+  cp ../code/*.h ../code/packages.conf .
+  ../../../tools/genmake2
+  make depend
+  make
+  cd ../input
+  ../build/mitgcmuv > output.txt
+
+Use matlab script to look at the output
+  cd ../../../verification/lab_sea/matlab
+  matlab
+  lookat_ice  (you might have to modify the script)
+
+
+
+================================================================
+Instructions for running the "weddell" 200x160x50 configuration
+================================================================
+face=6; ix=101:300; jx=290:449; kx=1:50;
+
+1. Obtain copies of following directories:
+ ftp://ecco2.jpl.nasa.gov/data1/weddell/code
+ ftp://ecco2.jpl.nasa.gov/data1/weddell/run_template
+ ftp://ecco2.jpl.nasa.gov/data1/data/era40/era40_ecmwf_blend
+ ftp://ecco2.jpl.nasa.gov/data1/data/blend_forcing/cube59_GPCP
+
+2. Get and compile code:
+ cvs co MITgcm_code
+ cd MITgcm
+ mkdir bin exe
+ cd bin
+ ../tools/genmake2 -mods=../../code
+ make depend
+ make -j
+
+3. Model execution:
+ cd ../exe
+ cp ../../run_template/* .
+ cp ../bin/mitgcmuv .
+ ./mitgcmuv >& output.txt &
+
+
+
+
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/modelE/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/modelE/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/modelE/install.sh	(revision 27955)
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -eu
+#modelE  downloaded from the gis repository of the GISS (Goddard Institute for Space Studies)
+#at  http://www.giss.nasa.gov/tools/modelE/
+
+#Some cleanup
+rm -rf src install  modelE_AR5_branch
+mkdir src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/modelE_AR5_branch.2012.03.13_10.12.21.tgz' 'modelE_AR5_branch.2012.03.13_10.12.21.tgz'
+
+#Untar 
+tar -zxvf  modelE_AR5_branch.2012.03.13_10.12.21.tgz
+
+#Move modelE into install directory
+mv modelE_AR5_branch/* src
+rm -rf modelE_AR5_branch
+
+#Apply patches
+cd src 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/modules/install-macosx64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/modules/install-macosx64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/modules/install-macosx64.sh	(revision 27955)
@@ -0,0 +1,39 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+rm -rf modules-3.2.9c
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/modules-3.2.9c.tar.gz' 'modules-3.2.9c.tar.gz'
+
+#Untar 
+tar -zxvf  modules-3.2.9c.tar.gz
+
+#Move modules into src directory
+
+#Configure modules
+cd modules-3.2.9
+./configure \
+	--prefix=$ISSM_DIR/externalpackages/modules/install\
+	--with-tcl-lib=$ISSM_DIR/externalpackages/tcl/install/lib\
+	--with-tcl-inc=$ISSM_DIR/externalpackages/tcl/install/include\
+	--with-tcl-ver=8.5 \
+	--with-tclx-lib=$ISSM_DIR/externalpackages/tclx/install/lib/tclx8.4\
+    --with-tclx-inc=$ISSM_DIR/externalpackages/tclx/install/include\
+	--with-tclx-ver=8.4 \
+	--with-version-path=/usr/local/modules/versions \
+	--with-skel-path=/usr/local/modules/etc/skel \
+	--with-etc-path=/usr/local/modules/etc \
+	--with-module-path=/usr/local/modules/files \
+	--disable-dependency-tracking
+
+#Compile and install modules
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+sudo make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/modules/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/modules/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/modules/install.sh	(revision 27955)
@@ -0,0 +1,22 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh https://issm.ess.uci.edu/files/externalpackages/modules-3.2.9c.tar.gz modules-3.2.9c.tar.gz
+
+#Untar and move python into install directory
+tar -zxvf  modules-3.2.9c.tar.gz
+mv modules-3.2.9 install
+
+#Configure doxygen
+cd install
+./configure \
+  --prefix "$ISSM_DIR/externalpackages/modules/install" \
+  --without-x
+
+#compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.4-linux64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.4-linux64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.4-linux64.sh	(revision 27955)
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+#Some cleanup
+rm -rf src install mpich2-1.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mpich2-1.4.tar.gz' 'mpich2-1.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich2-1.4.tar.gz
+
+#Move mpich2 into src directory
+mv mpich2-1.4/* src
+rm -rf mpich2-1.4
+
+#Configure mpich2
+cd src
+export -n F90 
+export CFLAGS="$CFLAGS -fPIC"
+export FFLAGS="$FFLAGS -fPIC"
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared \
+	--enable-sharedlibs=gcc \
+	--enable-f91=gfortran 
+
+#Compile mpich2 (parallel make not supported)
+make
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.4-macosx32.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.4-macosx32.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.4-macosx32.sh	(revision 27955)
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+#Some cleanup
+rm -rf src install mpich2-1.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mpich2-1.4.tar.gz' 'mpich2-1.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich2-1.4.tar.gz
+
+#Move mpich2 into src directory
+mv mpich2-1.4/* src
+rm -rf mpich2-1.4
+
+#Configure mpich2
+cd src
+export FFLAGS=" -m32"
+export CFLAGS=" -m32"
+export CXXFLAGS=" -arch i386"
+export CPPFLAGS=" -arch i386"
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-f91=gfortran \
+	--enable-sharedlibs=osx-gcc \
+	--enable-shared \
+	--enable-fc
+
+#Compile mpich2 (parallel make not supported)
+make
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.4-macosx64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.4-macosx64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.4-macosx64.sh	(revision 27955)
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+#Some cleanup
+rm -rf src install mpich2-1.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mpich2-1.4.tar.gz' 'mpich2-1.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich2-1.4.tar.gz
+
+#Move mpich2 into src directory
+mv mpich2-1.4/* src
+rm -rf mpich2-1.4
+
+#Configure mpich2
+cd src
+export FCFLAGS=" -m64"
+export FFLAGS=" -m64"
+export CFLAGS=" -arch x86_64"
+export CXXFLAGS=" -arch x86_64"
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-f91 \
+	--enable-sharedlibs=osx-gcc \
+	--enable-shared \
+	--enable-fc
+
+#Compile mpich2 (parallel make not supported)
+make
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.4.1-p1-win7.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.4.1-p1-win7.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.4.1-p1-win7.sh	(revision 27955)
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+#In order to install MPICH2 on your platform, go to www.mpich.org/downloads 
+#and download the following file (Windows x86_64 for the Windows distribution): 
+#mpich2-1.4.1p1-win-x86-64.msi. This file is also hosted on the ISSM website.
+
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mpich2-1.4.1p1-win-x86-64.msi' 'mpich2-1.4.1p1-win-x86-64.msi'
+
+#once installed, create a symbolic link between the MPICH2 directory 
+#and the install directory. For example: 
+#ln -s /cygdrive/c/Program\ Files/MPICH2 install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.5-linux64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.5-linux64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.5-linux64.sh	(revision 27955)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich2-1.5
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mpich2-1.5.tar.gz' 'mpich2-1.5.tar.gz'
+
+#Untar 
+tar -zxvf  mpich2-1.5.tar.gz
+
+#Move mpich2 into src directory
+mv mpich2-1.5/* src
+rm -rf mpich2-1.5
+
+#Configure mpich2
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared \
+	--enable-sharedlibs=gcc \
+	--enable-f91=gfortran  CC=gcc FC=gfortran
+
+#Compile mpich2 (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.5-macosx64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.5-macosx64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.5-macosx64.sh	(revision 27955)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich2-1.5
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mpich2-1.5.tar.gz' 'mpich2-1.5.tar.gz'
+
+#Untar 
+tar -zxvf  mpich2-1.5.tar.gz
+
+#Move mpich2 into src directory
+mv mpich2-1.5/* src
+rm -rf mpich2-1.5
+
+#Configure mpich2
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared \
+	--enable-sharedlibs=gcc \
+	--enable-f91=gfortran 
+
+#Compile mpich2 (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.5-walgreen.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.5-walgreen.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-2_1.5-walgreen.sh	(revision 27955)
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich2-1.5
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mpich2-1.5.tar.gz' 'mpich2-1.5.tar.gz'
+
+#Untar 
+tar -zxvf  mpich2-1.5.tar.gz
+
+#Move mpich2 into src directory
+mv mpich2-1.5/* src
+rm -rf mpich2-1.5
+
+#Configure mpich2
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared \
+	--with-device=ch3:sock
+
+#Compile mpich2 (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-cyclone.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-cyclone.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-cyclone.sh	(revision 27955)
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared \
+	--enable-sharedlibs=gcc\
+    CC=gcc \
+    CXX=g++
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-linux64-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-linux64-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-linux64-static.sh	(revision 27955)
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -eu
+
+export CXXFLAGS="-fPIC"
+export CFLAGS="-fPIC"
+export FFLAGS="-fPIC"
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install"
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-linux64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-linux64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-linux64.sh	(revision 27955)
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared \
+	--enable-sharedlibs=gcc
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-macosx64-gforker.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-macosx64-gforker.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-macosx64-gforker.sh	(revision 27955)
@@ -0,0 +1,38 @@
+# One way to avoid firewall and host-name issues on El Capitan is
+# to use gforker, instead of default hydra, process manager.
+# Note that gforker will only work with a single-node configuration.
+# https://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4-installguide.pdf
+
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared \
+        --with-pm=gforker
+
+	#CC=llvm-gcc \
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-macosx64-nothreads.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-macosx64-nothreads.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-macosx64-nothreads.sh	(revision 27955)
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+# includes following bug fix:
+# https://issm.ess.uci.edu/forum/viewtopic.php?f=10&t=49
+
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+export "ac_cv_tls=none"
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared
+
+	#CC=llvm-gcc \
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-macosx64-snowleopard-dakota.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-macosx64-snowleopard-dakota.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-macosx64-snowleopard-dakota.sh	(revision 27955)
@@ -0,0 +1,35 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared \
+	CC=/usr/bin/gcc CXX=/usr/bin/g++ \
+	F77=/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran \
+	LDFLAGS="-L/usr/lib/ -lstdc++ -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin10/4.6.2/ -lgfortran"
+
+	#CC=llvm-gcc \
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-macosx64-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-macosx64-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-macosx64-static.sh	(revision 27955)
@@ -0,0 +1,29 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install"
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-macosx64-yosemite-dakota.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-macosx64-yosemite-dakota.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-macosx64-yosemite-dakota.sh	(revision 27955)
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	CC=/usr/local/gfortran/bin/gcc CXX=/usr/local/gfortran/bin/g++ \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared
+
+	#CC=llvm-gcc \
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-macosx64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-macosx64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.0-macosx64.sh	(revision 27955)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared
+
+	#CC=llvm-gcc \
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.2-linux64-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.2-linux64-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.2-linux64-static.sh	(revision 27955)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.2
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mpich-3.2.tar.gz' 'mpich-3.2.tar.gz'
+
+#Untar
+tar -zxvf  mpich-3.2.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.2/* src
+rm -rf mpich-3.2
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--disable-shared \
+	--enable-strict=all \
+	--enable-fast \
+	--with-pic
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.2-linux64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.2-linux64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.2-linux64.sh	(revision 27955)
@@ -0,0 +1,39 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.2"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/mpich-${VER}.tar.gz" "mpich-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf  mpich-$VER.tar.gz
+
+# Cleanup
+rm -rf src install
+mkdir src install
+
+# Move source into 'src' directory
+mv mpich-$VER/* src
+rm -rf mpich-$VER
+
+# Configure
+cd src
+./configure \
+	--prefix="${ISSM_DIR}/externalpackages/mpich/install" \
+	--enable-shared
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+
+# Return to initial directory
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.2-mac-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.2-mac-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.2-mac-static.sh	(revision 27955)
@@ -0,0 +1,37 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.2
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mpich-3.2.tar.gz' 'mpich-3.2.tar.gz'
+
+#Untar
+tar -zxvf  mpich-3.2.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.2/* src
+rm -rf mpich-3.2
+
+#patch from http://lists.mpich.org/pipermail/discuss/2016-May/004764.html
+cat src/src/include/mpiimpl.h | sed -e 's/} MPID_Request ATTRIBUTE((__aligned__(32)));/} ATTRIBUTE((__aligned__(32))) MPID_Request;/g' > TEMP
+mv TEMP src/src/include/mpiimpl.h
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--disable-shared \
+	--enable-strict=all \
+	--enable-fast \
+	--with-pic
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.2-mac.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.2-mac.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.2-mac.sh	(revision 27955)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.2
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mpich-3.2.tar.gz' 'mpich-3.2.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.2.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.2/* src
+rm -rf mpich-3.2
+
+#patch from http://lists.mpich.org/pipermail/discuss/2016-May/004764.html
+cat src/src/include/mpiimpl.h | sed -e 's/} MPID_Request ATTRIBUTE((__aligned__(32)));/} ATTRIBUTE((__aligned__(32))) MPID_Request;/g' > TEMP
+mv TEMP src/src/include/mpiimpl.h
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.2-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.2-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.2-static.sh	(revision 27955)
@@ -0,0 +1,58 @@
+#!/bin/bash
+set -eu
+
+
+## Environment
+#
+export LD_LIBRARY_PATH="" # Ensure that libtool does not hardcode local paths set by running $ISSM_DIR/etc/environment.sh into binaries
+export LD_RUN_PATH="" # Ensure that libtool does not hardcode local paths set by running $ISSM_DIR/etc/environment.sh into binaries
+
+## Constants
+#
+VER="3.2"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/mpich-${VER}.tar.gz" "mpich-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf mpich-${VER}.tar.gz
+
+# Cleanup
+rm -rf install src
+mkdir install src
+
+# Move source into 'src' directory
+mv mpich-${VER}/* src
+rm -rf mpich-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${ISSM_DIR}/externalpackages/mpich/install" \
+	--disable-shared \
+	--disable-dependency-tracking \
+	--enable-fast=all \
+	--with-pic
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+
+# Return to initial directory
+cd ..
+
+# Strip RPATH/RUNPATH entries from executables
+#
+# NOTE:
+# - We are doing this so that we do not ship executables that have hardcoded
+#	local paths in their RPATH/RUNPATH entries
+# - This might otherwise be accomplished with extensive changes to libtool's
+#	handling of rpath
+#
+chrpath -d ./install/bin/hydra_pmi_proxy
+chrpath -d ./install/bin/mpiexec
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.3-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.3-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.3-static.sh	(revision 27955)
@@ -0,0 +1,58 @@
+#!/bin/bash
+set -eu
+
+
+## Environment
+#
+export LD_LIBRARY_PATH="" # Ensure that libtool does not hardcode local paths set by running $ISSM_DIR/etc/environment.sh into binaries
+export LD_RUN_PATH="" # Ensure that libtool does not hardcode local paths set by running $ISSM_DIR/etc/environment.sh into binaries
+
+## Constants
+#
+VER="3.3"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/mpich-${VER}.tar.gz" "mpich-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf mpich-$VER.tar.gz
+
+# Cleanup
+rm -rf install src
+mkdir install src
+
+# Move source into 'src' directory
+mv mpich-${VER}/* src
+rm -rf mpich-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${ISSM_DIR}/externalpackages/mpich/install" \
+	--disable-shared \
+	--disable-dependency-tracking \
+	--enable-fast=all \
+	--with-pic
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+
+# Return to initial directory
+cd ..
+
+# Strip RPATH/RUNPATH entries from executables
+#
+# NOTE:
+# - We are doing this so that we do not ship executables that have hardcoded
+#	local paths in their RPATH/RUNPATH entries
+# - This might otherwise be accomplished with extensive changes to libtool's
+#	handling of rpath
+#
+chrpath -d ./install/bin/hydra_pmi_proxy
+chrpath -d ./install/bin/mpiexec
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.3.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.3.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mpich/install-3.3.sh	(revision 27955)
@@ -0,0 +1,38 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.3"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/mpich-${VER}.tar.gz" "mpich-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf mpich-${VER}.tar.gz
+
+# Cleanup
+rm -rf install src
+mkdir install src
+
+# Move source into 'src' directory
+mv mpich-${VER}/* src
+rm -rf mpich-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${ISSM_DIR}/externalpackages/mpich/install" \
+	--disable-static \
+	--disable-dependency-tracking \
+	--enable-fast=all
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mplapack/install-0-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mplapack/install-0-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mplapack/install-0-linux.sh	(revision 27955)
@@ -0,0 +1,73 @@
+#!/bin/bash
+set -eu
+
+##
+# Source code and installation guidelines available at,
+#
+#	https://github.com/nakatamaho/mplapack
+#
+# Note that original website (for MPACK) at,
+#
+#	http://mplapack.sourceforge.net
+#
+# is not maintained.
+#
+
+## Constants
+#
+VER="0.9.3"
+
+PREFIX="${ISSM_DIR}/externalpackages/mplapack/install" # Set to location where external package should be installed
+
+## Environment
+#
+export CC=gcc
+export CXX=g++
+export FC=gfortran
+export F77=gfortran
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/mplapack-${VER}.tar.gz" "mplapack-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf mplapack-${VER}.tar.gz
+
+# Move source to 'src' directory
+mv mplapack-${VER}/* src
+rm -rf mplapack-${VER}
+
+# Configure
+cd src
+pushd mplapack/debug
+bash gen.Makefile.am.sh
+popd
+autoreconf -ivf
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-static \
+	--enable-fast-install=yes \
+	--disable-dependency-tracking \
+	--enable-debug=yes \
+	--enable-fortranwrapper=yes \
+	--enable-gmp=yes \
+	--enable-mpfr=yes \
+	--enable-qd=yes \
+	--enable-dd=yes \
+	--enable-double=yes \
+	--enable-_Float128=yes \
+	--enable-_Float64x=yes \
+	--with-external-blas="-L${BLAS_ROOT}/lib -lfblas" \
+	--with-external-lapack="-L${LAPACK_ROOT}/lib -lflapack"
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mplapack/install-1-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mplapack/install-1-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mplapack/install-1-linux.sh	(revision 27955)
@@ -0,0 +1,75 @@
+#!/bin/bash
+set -eu
+
+##
+# Source code and installation guidelines available at,
+#
+#	https://github.com/nakatamaho/mplapack
+#
+# Note that original website (for MPACK) at,
+#
+#	http://mplapack.sourceforge.net
+#
+# is not maintained.
+#
+
+## Constants
+#
+VER="1.0.1"
+
+PREFIX="${ISSM_DIR}/externalpackages/mplapack/install" # Set to location where external package should be installed
+
+## Environment
+#
+export CC=gcc
+export CXX=g++
+export FC=gfortran
+export F77=gfortran
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/mplapack-${VER}.tar.gz" "mplapack-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf mplapack-${VER}.tar.gz
+
+# Move source to 'src' directory
+mv mplapack-${VER}/* src
+rm -rf mplapack-${VER}
+
+# Configure
+cd src
+pushd mplapack/test/compare
+bash gen.Makefile.am.sh
+popd
+autoreconf --force --install
+aclocal
+autoconf
+automake --add-missing
+autoreconf --force --install
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-static \
+	--enable-fast-install=yes \
+	--disable-dependency-tracking \
+	--enable-optimization=yes \
+	--enable-fortranwrapper=yes \
+	--enable-gmp=yes \
+	--enable-mpfr=yes \
+	--enable-qd=yes \
+	--enable-dd=yes \
+	--enable-double=yes \
+	--enable-_Float128=yes \
+	--enable-_Float64x=yes
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mplapack/install-2-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mplapack/install-2-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mplapack/install-2-linux.sh	(revision 27955)
@@ -0,0 +1,75 @@
+#!/bin/bash
+set -eu
+
+##
+# Source code and installation guidelines available at,
+#
+#	https://github.com/nakatamaho/mplapack
+#
+# Note that original website (for MPACK) at,
+#
+#	http://mplapack.sourceforge.net
+#
+# is not maintained.
+#
+
+## Constants
+#
+VER="2.0"
+
+PREFIX="${ISSM_DIR}/externalpackages/mplapack/install" # Set to location where external package should be installed
+
+## Environment
+#
+export CC=gcc
+export CXX=g++
+export FC=gfortran
+export F77=gfortran
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/mplapack-${VER}.tar.gz" "mplapack-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf mplapack-${VER}.tar.gz
+
+# Move source to 'src' directory
+mv mplapack-${VER}/* src
+rm -rf mplapack-${VER}
+
+# Configure
+cd src
+pushd mplapack/test/compare
+bash gen.Makefile.am.sh
+popd
+autoreconf --force --install
+aclocal
+autoconf
+automake --add-missing
+autoreconf --force --install
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-static \
+	--enable-fast-install=yes \
+	--disable-dependency-tracking \
+	--enable-optimization=yes \
+	--enable-fortranwrapper=yes \
+	--enable-gmp=yes \
+	--enable-mpfr=yes \
+	--enable-qd=yes \
+	--enable-dd=yes \
+	--enable-double=yes \
+	--enable-_Float128=yes \
+	--enable-_Float64x=yes
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/msmpi/install-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/msmpi/install-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/msmpi/install-static.sh	(revision 27955)
@@ -0,0 +1,65 @@
+#!/bin/bash
+#
+# Creates a local MS-MPI directory to be used for supplying MPI headers files 
+# and libraries to ISSM configuration and certain external packages.
+#
+# Assumes that Microsoft MPI and MPI SDK have been installed. To do so,
+# - Navigate to https://docs.microsoft.com/en-us/message-passing-interface/microsoft-mpi
+# - Under the 'MS-MPI Downloads' heading, click the link for 
+#	'MS-MPI v<version>', where <version> is the latest version available (as of 
+#	this writing, 10.1.2)
+# - Click the 'Download' button
+# - Make sure both boxes are checked
+# - Click the 'Save File' button in each prompt
+# - When the downloads are complete, run each installer
+#
+# TODO:
+# - Commit Microsoft MPI and Microsoft SDK installers or source code to 
+#	external packages source repository, then update this documentation to note 
+#	that they are available
+# - Attempt to download Microsoft MPI and Microsoft SDK installers or source 
+#	code and (compile and) install with this script
+# - Alternatively, instruct users to install MSYS2 MinGW 64-bit MS-MPI package 
+#	with,
+#
+#		pacman -S mingw-w64-x86_64-msmpi
+#
+# remove this script, its parent directory, and references to it from 
+# configuration files in $ISSM_DIR/jenkins directory and documentation
+#
+
+
+## Constants
+#
+PREFIX="${ISSM_DIR}/externalpackages/msmpi/install"
+
+MSMPI_BIN_DIR=$(cygpath -u $(cygpath -ms "/c/Program Files/Microsoft MPI/Bin"))
+MSMPI_INC_DIR=$(cygpath -u $(cygpath -ms "/c/Program Files (x86)/Microsoft SDKs/MPI/Include"))
+MSMPI_LIB="/c/Windows/System32/msmpi.dll"
+MSMPI_LIC_DIR=$(cygpath -u $(cygpath -ms "/c/Program Files (x86)/Microsoft SDKs/MPI/License"))
+
+# Cleanup
+rm -rf ${PREFIX}
+mkdir -p ${PREFIX} ${PREFIX}/bin ${PREFIX}/include ${PREFIX}/lib ${PREFIX}/license
+
+# Copy MS-MPI binaries to 'bin' directory
+cp -R ${MSMPI_BIN_DIR}/* ${PREFIX}/bin
+
+# Copy MS-MPI header files to 'include' directory
+cp ${MSMPI_INC_DIR}/mpi.h ${PREFIX}/include
+cp ${MSMPI_INC_DIR}/mpi.f90 ${PREFIX}/include
+cp ${MSMPI_INC_DIR}/mpif.h ${PREFIX}/include
+cp ${MSMPI_INC_DIR}/mpio.h ${PREFIX}/include
+cp ${MSMPI_INC_DIR}/x64/mpifptr.h ${PREFIX}/include
+
+# Generate static copy of MS-MPI library
+gendef ${MSMPI_LIB}
+dlltool -d msmpi.def -l libmsmpi.a -D ${MSMPI_LIB}
+
+# Copy MS-MPI library to 'lib' directory
+cp libmsmpi.a ${PREFIX}/lib
+cp libmsmpi.a ${PREFIX}/lib/msmpi.a
+cp libmsmpi.a ${PREFIX}/lib/msmpi.lib
+
+# Copy MS-MPI license files to 'license' directory
+cp -R ${MSMPI_LIC_DIR}/* ${PREFIX}/license
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/msmpi/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/msmpi/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/msmpi/install.sh	(revision 27955)
@@ -0,0 +1,56 @@
+#!/bin/bash
+#
+# Creates a local MS-MPI directory to be used for supplying MPI headers files 
+# and libraries to ISSM configuration and certain external packages.
+#
+# Assumes that Microsoft MPI and MPI SDK have been installed. To do so,
+# - Navigate to https://docs.microsoft.com/en-us/message-passing-interface/microsoft-mpi
+# - Under the 'MS-MPI Downloads' heading, click the link for 
+#	'MS-MPI v<version>', where <version> is the latest version available (as of 
+#	this writing, 10.1.2)
+# - Click the 'Download' button
+# - Make sure both boxes are checked
+# - Click the 'Save File' button in each prompt
+# - When the downloads are complete, run each installer
+#
+# TODO:
+# - Commit Microsoft MPI and Microsoft SDK installers or source code to 
+#	external packages source repository, then update this documentation to note 
+#	that they are available
+# - Attempt to download Microsoft MPI and Microsoft SDK installers or source 
+#	code and (compile and) install with this script
+# - Alternatively, instruct users to install MSYS2 MinGW 64-bit MS-MPI package 
+#	with,
+#
+#		pacman -S mingw-w64-x86_64-msmpi
+#
+# remove this script, its parent directory, and references to it from 
+# configuration files in $ISSM_DIR/jenkins directory and documentation
+#
+
+
+## Constants
+#
+PREFIX="${ISSM_DIR}/externalpackages/msmpi/install"
+
+MSMPI_BIN_DIR=$(cygpath -u $(cygpath -ms "/c/Program Files/Microsoft MPI/Bin"))
+MSMPI_INC_DIR=$(cygpath -u $(cygpath -ms "/c/Program Files (x86)/Microsoft SDKs/MPI/Include"))
+MSMPI_LIB="/c/Windows/System32/msmpi.dll"
+
+# Cleanup
+rm -rf ${PREFIX}
+mkdir -p ${PREFIX} ${PREFIX}/bin ${PREFIX}/include ${PREFIX}/lib
+
+# Copy MS-MPI header files to 'include' directory
+cp ${MSMPI_INC_DIR}/mpi.h ${PREFIX}/include
+cp ${MSMPI_INC_DIR}/mpi.f90 ${PREFIX}/include
+cp ${MSMPI_INC_DIR}/mpif.h ${PREFIX}/include
+cp ${MSMPI_INC_DIR}/mpio.h ${PREFIX}/include
+cp ${MSMPI_INC_DIR}/x64/mpifptr.h ${PREFIX}/include
+
+# Copy MS-MPI library to 'lib' directory
+cp ${MSMPI_LIB} ${PREFIX}/lib
+
+# Create link to shared library so that libtool can find it
+cd ${PREFIX}/lib
+ln -s msmpi.dll libmsmpi.dll
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/README
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/README	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/README	(revision 27955)
@@ -0,0 +1,1 @@
+MUMPS install package. Better rely on Petsc to install this, but feel free to try.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.0/linux/Makefile.debian.static.PAR
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.0/linux/Makefile.debian.static.PAR	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.0/linux/Makefile.debian.static.PAR	(revision 27955)
@@ -0,0 +1,72 @@
+#
+#  This file is part of MUMPS 5.0.2, released
+#  on Fri Jul 15 09:12:54 UTC 2016
+#
+# These settings for a PC under Debian/linux with standard packages :
+# metis (parmetis), scotch (ptscotch), openmpi, gfortran
+
+# packages installation :
+# apt-get install libmetis-dev libparmetis-dev libscotch-dev libptscotch-dev libatlas-base-dev openmpi-bin libopenmpi-dev
+
+# Begin orderings
+LSCOTCHDIR = ${ISSM_DIR}/externalpackages/petsc/install/lib
+ISCOTCH   = -I${ISSM_DIR}/externalpackages/petsc/install/include # only needed for ptscotch
+
+LSCOTCH   = -L$(LSCOTCHDIR) -lptesmumps -lptscotch -lptscotcherr -lscotch
+#LSCOTCH   = -L$(LSCOTCHDIR) -lesmumps -lscotch -lscotcherr
+
+LPORDDIR = $(topdir)/PORD/lib/
+IPORD    = -I$(topdir)/PORD/include/
+LPORD    = -L$(LPORDDIR) -lpord
+
+LMETISDIR = ${ISSM_DIR}/externalpackages/petsc/install/lib
+IMETIS    = -I${ISSM_DIR}/externalpackages/petsc/install/include
+#IMETIS    = -I/usr/include/metis
+
+LMETIS    = -L$(LMETISDIR) -lparmetis -lmetis
+#LMETIS    = -L$(LMETISDIR) -lmetis
+
+# Corresponding variables reused later
+#ORDERINGSF = -Dmetis -Dpord -Dparmetis -Dscotch -Dptscotch
+ORDERINGSF = -Dmetis -Dpord -Dscotch
+ORDERINGSC  = $(ORDERINGSF)
+LORDERINGS = $(LMETIS) $(LPORD) $(LSCOTCH)
+IORDERINGSF = $(ISCOTCH)
+IORDERINGSC = $(IMETIS) $(IPORD) $(ISCOTCH)
+# End orderings
+################################################################################
+
+PLAT    =
+LIBEXT  = .a
+OUTC    = -o
+OUTF    = -o
+RM = /bin/rm -f
+CC = ${ISSM_DIR}/externalpackages/mpich/install/bin/mpicc
+FC = ${ISSM_DIR}/externalpackages/mpich/install/bin/mpifort
+FL = ${ISSM_DIR}/externalpackages/mpich/install/bin/mpifort
+AR = ar vr
+RANLIB = ranlib
+SCALAP  = -L${ISSM_DIR}/externalpackages/scalapack/install/lib -lscalapack
+
+INCPAR = -I${ISSM_DIR}/externalpackages/mpich/install/include
+
+LIBPAR = $(SCALAP) -L${ISSM_DIR}/externalpackages/mpich/install/lib -lmpi -lmpifort
+
+INCSEQ = -I$(topdir)/libseq
+LIBSEQ  =  -L$(topdir)/libseq -lmpiseq
+
+LIBBLAS = -L${ISSM_DIR}/externalpackages/openblas/install/lib -lopenblas
+LIBOTHERS = -lpthread
+
+#Preprocessor defs for calling Fortran from C (-DAdd_ or -DAdd__ or -DUPPER)
+CDEFS   = -DAdd_
+
+#Begin Optimized options
+# uncomment -fopenmp in lines below to benefit from OpenMP
+OPTF    = -O  -DALLOW_NON_INIT # -fopenmp
+OPTL    = -O # -fopenmp
+OPTC    = -O # -fopenmp
+#End Optimized options
+INCS = $(INCPAR)
+LIBS = $(LIBPAR)
+LIBSEQNEEDED =
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/gcc/msmpi/Makefile.inc
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/gcc/msmpi/Makefile.inc	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/gcc/msmpi/Makefile.inc	(revision 27955)
@@ -0,0 +1,189 @@
+#
+#  This file is part of MUMPS 5.3.5, released
+#  on Thu Oct 22 09:29:08 UTC 2020
+#
+################################################################################
+#
+#   Makefile.inc.generic
+#
+#   This defines some parameters dependent on your platform; you should
+#   look for the approriate file in the directory ./Make.inc/ and copy it
+#   into a file called Makefile.inc. For example, from the MUMPS root
+#   directory, use 
+#   "cp Make.inc/Makefile.inc.generic ./Makefile.inc"
+#   (see the main README file for details)
+#
+#   If you do not find any suitable Makefile in Makefile.inc, use this file:
+#   "cp Make.inc/Makefile.inc.generic ./Makefile.inc" and modify it according
+#   to the comments given below. If you manage to build MUMPS on a new platform,
+#   and think that this could be useful to others, you may want to send us
+#   the corresponding Makefile.inc file.
+#
+################################################################################
+
+
+########################################################################
+#Begin orderings
+#
+# NOTE that PORD is distributed within MUMPS by default. It is recommended to
+# install other orderings. For that, you need to obtain the corresponding package
+# and modify the variables below accordingly.
+# For example, to have Metis available within MUMPS:
+#          1/ download Metis and compile it
+#          2/ uncomment (suppress # in first column) lines
+#             starting with LMETISDIR,  LMETIS
+#          3/ add -Dmetis in line ORDERINGSF
+#             ORDERINGSF  = -Dpord -Dmetis
+#          4/ Compile and install MUMPS
+#             make clean; make   (to clean up previous installation)
+#
+#          Metis/ParMetis and SCOTCH/PT-SCOTCH (ver 6.0 and later) orderings are recommended.
+#
+
+#SCOTCHDIR  = ${HOME}/scotch_6.0
+#ISCOTCH    = -I$(SCOTCHDIR)/include
+#
+# You have to choose one among the following two lines depending on
+# the type of analysis you want to perform. If you want to perform only
+# sequential analysis choose the first (remember to add -Dscotch in the ORDERINGSF
+# variable below); for both parallel and sequential analysis choose the second 
+# line (remember to add -Dptscotch in the ORDERINGSF variable below)
+
+#LSCOTCH    = -L$(SCOTCHDIR)/lib -lesmumps -lscotch -lscotcherr
+#LSCOTCH    = -L$(SCOTCHDIR)/lib -lptesmumps -lptscotch -lptscotcherr
+
+
+LPORDDIR = $(topdir)/PORD/lib
+IPORD    = -I$(topdir)/PORD/include
+LPORD    = -L$(LPORDDIR) -lpord
+
+LMSMPIDIR = ${MSMPI_ROOT}/lib
+IMSMPIDIR = -I${MSMPI_ROOT}/include
+
+#LMETISDIR = /opt/metis-5.1.0/build/Linux-x86_64/libmetis
+#IMETIS    = /opt/metis-5.1.0/include
+
+# You have to choose one among the following two lines depending on
+# the type of analysis you want to perform. If you want to perform only
+# sequential analysis choose the first (remember to add -Dmetis in the ORDERINGSF
+# variable below); for both parallel and sequential analysis choose the second 
+# line (remember to add -Dparmetis in the ORDERINGSF variable below)
+
+#LMETIS    = -L$(LMETISDIR) -lmetis
+#LMETIS    = -L$(LMETISDIR) -lparmetis -lmetis
+
+LMETISDIR		= ${METIS_ROOT}/lib
+IMETIS			= -I${METIS_ROOT}/include
+LPARMETISDIR	= ${PARMETIS_ROOT}/lib
+IPARMETIS		= -I${PARMETIS_ROOT}/include
+
+LMETIS    = -L$(LPARMETISDIR) -lparmetis -L$(LMSMPIDIR) -lmsmpi -L$(LMETISDIR) -lmetis
+
+# The following variables will be used in the compilation process.
+# Please note that -Dptscotch and -Dparmetis imply -Dscotch and -Dmetis respectively.
+# If you want to use Metis 4.X or an older version, you should use -Dmetis4 instead of -Dmetis
+# or in addition with -Dparmetis (if you are using parmetis 3.X or older).
+#ORDERINGSF = -Dscotch -Dmetis -Dpord -Dptscotch -Dparmetis
+#ORDERINGSF  = -Dpord
+ORDERINGSF  = -Dmetis -Dpord -Dparmetis
+ORDERINGSC  = $(ORDERINGSF)
+
+# LORDERINGS = $(LMETIS) $(LPORD) $(LSCOTCH)
+# IORDERINGSF = $(ISCOTCH)
+# IORDERINGSC = $(IMETIS) $(IPORD) $(ISCOTCH)
+LORDERINGS = $(LPARMETIS) $(LMETIS)  $(LPORD) $(LSCOTCH)
+IORDERINGSF = $(ISCOTCH)
+IORDERINGSC = $(IPARMETIS) $(IMETIS) $(IPORD) $(ISCOTCH)
+
+#End orderings
+########################################################################
+
+########################################################################
+# DEFINE HERE SOME COMMON COMMANDS, THE COMPILER NAMES, ETC...
+
+# PLAT : use it to add a default suffix to the generated libraries
+PLAT    = 
+# Library extension, + C and Fortran "-o" option
+# may be different under Windows
+LIBEXT  = .dll
+OUTC    = -o 
+OUTF    = -o 
+# RM : remove files
+RM      = /usr/bin/rm -f
+# CC : C compiler
+CC      = /usr/bin/gcc
+# FC : Fortran 90 compiler
+FC      = /usr/bin/gfortran
+# FL : Fortran linker
+FL      = /usr/bin/gfortran
+# AR : Archive object in a library
+#      keep a space at the end if options have to be separated from lib name
+AR      = /usr/bin/ar cr 
+# RANLIB : generate index of an archive file
+#   (optionnal use "RANLIB = echo" in case of problem)
+RANLIB  = /usr/bin/ranlib
+#RANLIB  = echo
+
+# DEFINE HERE YOUR LAPACK LIBRARY
+
+LAPACK = -L${LAPACK_ROOT}/lib -llapack
+
+# SCALAP should define the SCALAPACK and BLACS libraries.
+SCALAP  = -L${SCALAPACK_ROOT}/lib -lscalapack
+
+# INCLUDE DIRECTORY FOR MPI
+INCPAR  = $(IMSMPIDIR)
+
+# LIBRARIES USED BY THE PARALLEL VERSION OF MUMPS: $(SCALAP) and MPI
+LIBPAR  = $(SCALAP) $(LAPACK) -L$(LMSMPIDIR) -lmsmpi
+
+# The parallel version is not concerned by the next two lines.
+# They are related to the sequential library provided by MUMPS,
+# to use instead of ScaLAPACK and MPI.
+INCSEQ  = -I$(topdir)/libseq
+LIBSEQ  = $(LAPACK) -L$(topdir)/libseq -lmpiseq
+
+# DEFINE HERE YOUR BLAS LIBRARY
+
+LIBBLAS = -L${BLAS_ROOT}/lib -lblas
+
+# DEFINE HERE YOUR PTHREAD LIBRARY
+LIBOTHERS = -lpthread
+
+# FORTRAN/C COMPATIBILITY:
+#  Use:
+#    -DAdd_ if your Fortran compiler adds an underscore at the end
+#              of symbols,
+#     -DAdd__ if your Fortran compiler adds 2 underscores,
+#
+#     -DUPPER if your Fortran compiler uses uppercase symbols
+#
+#     leave empty if your Fortran compiler does not change the symbols.
+#
+
+CDEFS = -DAdd_
+
+#COMPILER OPTIONS
+#
+# NOTE:
+# - Added -fallow-argument-mismatch option to OPTF in order to clear "Error: 
+#	Rank mismatch between actual argument at [...]"
+# - Added -fallow-invalid-boz option to OPTF in order to clear "Error: BOZ 
+#	literal constant at [...]"
+#
+OPTF    = -O -fPIC -fallow-argument-mismatch -fallow-invalid-boz
+OPTC    = -O -fPIC -I.
+OPTL    = -O
+
+# CHOOSE BETWEEN USING THE SEQUENTIAL OR THE PARALLEL VERSION.
+
+#Sequential:
+#INCS = $(INCSEQ)
+#LIBS = $(LIBSEQ)
+#LIBSEQNEEDED = libseqneeded
+
+#Parallel:
+INCS = $(INCPAR)
+LIBS = $(LIBPAR)
+LIBSEQNEEDED = libseqneeded # NOTE: Create libmpiseq because PETSc looks for it (rather than patching PETSc config tests)
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/gcc/msmpi/PORD/lib/Makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/gcc/msmpi/PORD/lib/Makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/gcc/msmpi/PORD/lib/Makefile	(revision 27955)
@@ -0,0 +1,34 @@
+
+# To compile directly, uncomment the line below.
+# include ../Make.in
+#
+# Otherwise, adequate variables for CC, CFLAGS, AR and RANLIB must be passed to 
+# make.
+#
+
+INCLUDES = -I../include
+
+# NOTE:
+#- CFLAGS = $(OPTC) (see ../../src/Makefile; OPTC is set in ../../Makefile.inc)
+#
+COPTIONS = $(INCLUDES) $(CFLAGS) $(OPTFLAGS)
+
+OBJS = graph.o gbipart.o gbisect.o ddcreate.o ddbisect.o nestdiss.o \
+       multisector.o gelim.o bucket.o tree.o \
+       symbfac.o interface.o sort.o minpriority.o 
+
+# NOTE: numfac.c read.c mapping.c triangular.c matrix.c kernel.c were not 
+# directly used by MUMPS and have been removed from the original SPACE 
+# package.
+
+.c.o:
+	$(CC) $(COPTIONS) -c $*.c $(OUTC) $*.o
+
+libpord$(LIBEXT):$(OBJS)
+	$(CC) -shared $(OUTC) $@ $(OBJS)
+
+clean:
+	$(RM) *.o
+
+realclean:
+	$(RM) *.o libpord*
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/gcc/msmpi/libseq/Makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/gcc/msmpi/libseq/Makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/gcc/msmpi/libseq/Makefile	(revision 27955)
@@ -0,0 +1,25 @@
+#
+#  This file is part of MUMPS 5.3.5, released
+#  on Thu Oct 22 09:29:08 UTC 2020
+#
+all: libmpiseq
+
+.PHONY: all libmpiseq clean
+
+include ../Makefile.inc
+
+libmpiseq: libmpiseq$(PLAT)$(LIBEXT)
+
+# NOTE:
+# - We need to use Fortran compiler or otherwise link in Fortran libraries 
+#   using C compiler (which does not make a lot of sense, but is possible)
+#
+libmpiseq$(PLAT)$(LIBEXT): mpi.o mpic.o elapse.o
+	$(FC) -shared $(OUTF) $@ mpi.o mpic.o elapse.o
+.f.o:
+	$(FC) $(OPTF)              -c $*.f $(OUTF)$*.o
+.c.o:
+	$(CC) $(OPTC) $(CDEFS) -I. -c $*.c $(OUTC)$*.o
+
+clean:
+	$(RM) *.o *$(LIBEXT)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/gcc/msmpi/src/Makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/gcc/msmpi/src/Makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/gcc/msmpi/src/Makefile	(revision 27955)
@@ -0,0 +1,425 @@
+#
+#  This file is part of MUMPS 5.3.5, released
+#  on Thu Oct 22 09:29:08 UTC 2020
+#
+#
+topdir = ..
+libdir = $(topdir)/lib
+incdir = $(topdir)/include
+
+default: d
+
+.PHONY: default s d c z mumps_lib clean
+
+s:
+	$(MAKE) ARITH=s mumps_lib
+d:
+	$(MAKE) ARITH=d mumps_lib
+c:
+	$(MAKE) ARITH=c mumps_lib
+z:
+	$(MAKE) ARITH=z mumps_lib
+
+include $(topdir)/Makefile.inc
+
+mumps_lib:    $(incdir)/mumps_int_def.h \
+              $(libdir)/libmumps_common$(PLAT)$(LIBEXT) \
+              $(libdir)/lib$(ARITH)mumps$(PLAT)$(LIBEXT)
+
+# Build $(incdir)/mumps_int_def.h, needed by mumps_c_types.h
+$(incdir)/mumps_int_def.h: build_mumps_int_def 
+	./build_mumps_int_def > $(incdir)/mumps_int_def.h
+build_mumps_int_def:build_mumps_int_def.o
+	$(CC) $(OPTL) build_mumps_int_def.o -o build_mumps_int_def
+
+OBJS_COMMON_MOD = \
+        ana_omp_m.o\
+        ana_blk_m.o\
+        ana_orderings_wrappers_m.o\
+        double_linked_list.o\
+        fac_asm_build_sort_index_ELT_m.o\
+        fac_asm_build_sort_index_m.o\
+        fac_descband_data_m.o\
+        fac_future_niv2_mod.o\
+        fac_ibct_data_m.o\
+        fac_maprow_data_m.o\
+        front_data_mgt_m.o\
+        lr_common.o \
+        mumps_comm_ibcast.o\
+        mumps_l0_omp_m.o\
+        mumps_memory_mod.o\
+        mumps_mpitoomp_m.o\
+        mumps_ooc_common.o\
+        mumps_static_mapping.o\
+        omp_tps_common_m.o
+
+
+OBJS_COMMON_OTHER = \
+        ana_blk.o\
+        ana_orderings.o\
+        ana_set_ordering.o\
+        ana_AMDMF.o\
+        bcast_errors.o\
+        estim_flops.o\
+        mumps_type_size.o \
+        mumps_type2_blocking.o \
+        mumps_version.o \
+        mumps_print_defined.o \
+        mumps_common.o\
+        mumps_pord.o\
+        mumps_metis.o\
+        mumps_metis64.o\
+        mumps_metis_int.o\
+        mumps_scotch.o\
+        mumps_scotch64.o\
+        mumps_scotch_int.o\
+        mumps_size.o\
+        mumps_io.o\
+        mumps_io_basic.o\
+        mumps_io_thread.o\
+        mumps_io_err.o\
+        mumps_numa.o \
+        mumps_thread.o \
+        mumps_save_restore_C.o \
+        mumps_config_file_C.o \
+        mumps_thread_affinity.o \
+        tools_common.o \
+        sol_common.o
+
+OBJS_MOD =   \
+        $(ARITH)ana_aux.o \
+        $(ARITH)ana_aux_par.o \
+        $(ARITH)ana_lr.o\
+        $(ARITH)fac_asm_master_ELT_m.o\
+        $(ARITH)fac_asm_master_m.o\
+        $(ARITH)fac_front_aux.o\
+        $(ARITH)fac_front_LU_type1.o\
+        $(ARITH)fac_front_LU_type2.o\
+        $(ARITH)fac_front_LDLT_type1.o\
+        $(ARITH)fac_front_LDLT_type2.o\
+        $(ARITH)fac_front_type2_aux.o\
+        $(ARITH)fac_sispointers_m.o\
+        $(ARITH)fac_lr.o\
+        $(ARITH)fac_mem_dynamic.o\
+        $(ARITH)fac_omp_m.o\
+        $(ARITH)fac_par_m.o\
+        $(ARITH)fac_sol_l0omp_m.o\
+        $(ARITH)lr_core.o\
+        $(ARITH)lr_stats.o\
+        $(ARITH)lr_type.o\
+        $(ARITH)mumps_comm_buffer.o\
+        $(ARITH)mumps_config_file.o\
+        $(ARITH)mumps_load.o\
+        $(ARITH)mumps_lr_data_m.o\
+        $(ARITH)mumps_ooc_buffer.o\
+        $(ARITH)mumps_ooc.o\
+        $(ARITH)mumps_sol_es.o\
+        $(ARITH)mumps_save_restore.o\
+        $(ARITH)mumps_save_restore_files.o\
+        $(ARITH)mumps_struc_def.o\
+        $(ARITH)omp_tps_m.o\
+        $(ARITH)sol_lr.o\
+        $(ARITH)sol_omp_m.o\
+        $(ARITH)static_ptr_m.o
+
+OBJS_OTHER = \
+        $(ARITH)ini_driver.o\
+        $(ARITH)ana_driver.o\
+        $(ARITH)fac_driver.o\
+        $(ARITH)sol_driver.o\
+        $(ARITH)sol_distrhs.o\
+        $(ARITH)end_driver.o\
+        $(ARITH)ana_aux_ELT.o\
+        $(ARITH)ana_dist_m.o\
+        $(ARITH)ana_LDLT_preprocess.o\
+        $(ARITH)ana_reordertree.o\
+        $(ARITH)arrowheads.o\
+        $(ARITH)bcast_int.o\
+        $(ARITH)fac_asm_ELT.o\
+        $(ARITH)fac_asm.o\
+        $(ARITH)fac_b.o\
+        $(ARITH)fac_distrib_distentry.o\
+        $(ARITH)fac_distrib_ELT.o\
+        $(ARITH)fac_lastrtnelind.o\
+        $(ARITH)fac_mem_alloc_cb.o\
+        $(ARITH)fac_mem_compress_cb.o\
+        $(ARITH)fac_mem_free_block_cb.o\
+        $(ARITH)fac_mem_stack_aux.o\
+        $(ARITH)fac_mem_stack.o\
+        $(ARITH)fac_process_band.o\
+        $(ARITH)fac_process_blfac_slave.o\
+        $(ARITH)fac_process_blocfacto_LDLT.o\
+        $(ARITH)fac_process_blocfacto.o\
+        $(ARITH)fac_process_bf.o\
+        $(ARITH)fac_process_end_facto_slave.o\
+        $(ARITH)fac_process_contrib_type1.o\
+        $(ARITH)fac_process_contrib_type2.o\
+        $(ARITH)fac_process_contrib_type3.o\
+        $(ARITH)fac_process_maprow.o\
+        $(ARITH)fac_process_master2.o\
+        $(ARITH)fac_process_message.o\
+        $(ARITH)fac_process_root2slave.o\
+        $(ARITH)fac_process_root2son.o\
+        $(ARITH)fac_process_rtnelind.o\
+        $(ARITH)fac_root_parallel.o\
+        $(ARITH)fac_scalings.o\
+        $(ARITH)fac_determinant.o\
+        $(ARITH)fac_scalings_simScaleAbs.o\
+        $(ARITH)fac_scalings_simScale_util.o\
+        $(ARITH)fac_sol_pool.o\
+        $(ARITH)fac_type3_symmetrize.o\
+        $(ARITH)ini_defaults.o\
+        $(ARITH)mumps_c.o\
+        $(ARITH)mumps_driver.o\
+        $(ARITH)mumps_f77.o\
+        $(ARITH)mumps_gpu.o\
+        $(ARITH)mumps_iXamax.o\
+        $(ARITH)ana_mtrans.o\
+        $(ARITH)ooc_panel_piv.o\
+        $(ARITH)rank_revealing.o\
+        $(ARITH)sol_aux.o\
+        $(ARITH)sol_bwd_aux.o\
+        $(ARITH)sol_bwd.o\
+        $(ARITH)sol_c.o\
+        $(ARITH)sol_fwd_aux.o\
+        $(ARITH)sol_fwd.o\
+        $(ARITH)sol_matvec.o\
+        $(ARITH)sol_root_parallel.o\
+        $(ARITH)tools.o\
+        $(ARITH)type3_root.o
+
+# NOTE:
+# - We need to use Fortran compiler or otherwise link in Fortran libraries 
+#	using C compiler (which does not make a lot of sense, but is possible)
+# - In case of "Makefile:[line_number]: *** missing separator.  Stop.", ensure 
+#	that $(FC) is preceded by a tab and not four spaces
+#
+$(libdir)/libmumps_common$(PLAT)$(LIBEXT):      $(OBJS_COMMON_MOD) $(OBJS_COMMON_OTHER)
+	$(FC) -shared $(OUTF) $@ \
+		$? $(LORDERINGS) $(LIBS) $(LIBLAPACK) $(LIBBLAS) $(LIBOTHERS) \
+		-Wl,--out-implib=$(libdir)/libmumps_common$(PLAT).dll.a
+
+$(libdir)/lib$(ARITH)mumps$(PLAT)$(LIBEXT):    $(OBJS_MOD) $(OBJS_OTHER)
+	$(FC) -shared $(OUTF) $@ \
+		$? -L$(libdir) -lmumps_common$(PLAT) $(LORDERINGS) $(LIBS) $(LIBLAPACK) $(LIBBLAS) $(LIBOTHERS) \
+		-Wl,--out-implib=$(libdir)/lib$(ARITH)mumps$(PLAT).dll.a
+
+# Dependencies between modules:
+# i) arithmetic-dependent modules:
+$(ARITH)ana_aux.o:              $(ARITH)mumps_struc_def.o \
+                                mumps_static_mapping.o \
+                                ana_orderings_wrappers_m.o \
+                                ana_blk_m.o
+$(ARITH)ana_aux_par.o:          $(ARITH)mumps_struc_def.o \
+                                mumps_memory_mod.o \
+                                ana_orderings_wrappers_m.o
+$(ARITH)ana_lr.o:                $(ARITH)lr_core.o\
+                                $(ARITH)lr_stats.o\
+                                lr_common.o\
+                                ana_orderings_wrappers_m.o \
+                                ana_blk_m.o 
+$(ARITH)fac_asm_master_ELT_m.o: omp_tps_common_m.o \
+                                fac_ibct_data_m.o \
+                                fac_asm_build_sort_index_ELT_m.o \
+                                lr_common.o \
+                                $(ARITH)fac_mem_dynamic.o \
+                                $(ARITH)lr_core.o \
+                                $(ARITH)ana_lr.o \
+                                $(ARITH)mumps_lr_data_m.o \
+                                $(ARITH)mumps_struc_def.o \
+                                $(ARITH)omp_tps_m.o \
+                                $(ARITH)mumps_comm_buffer.o \
+                                $(ARITH)mumps_load.o
+$(ARITH)fac_asm_master_m.o:     omp_tps_common_m.o \
+                                fac_ibct_data_m.o \
+                                fac_asm_build_sort_index_m.o \
+                                lr_common.o \
+                                $(ARITH)fac_mem_dynamic.o \
+                                $(ARITH)lr_core.o \
+                                $(ARITH)ana_lr.o \
+                                $(ARITH)mumps_lr_data_m.o \
+                                $(ARITH)mumps_struc_def.o \
+                                $(ARITH)omp_tps_m.o \
+                                $(ARITH)mumps_comm_buffer.o \
+                                $(ARITH)mumps_load.o
+
+$(ARITH)fac_front_aux.o:        $(ARITH)lr_type.o\
+                                $(ARITH)lr_stats.o\
+                                $(ARITH)mumps_comm_buffer.o\
+                                $(ARITH)mumps_load.o\
+                                $(ARITH)mumps_ooc.o\
+                                mumps_ooc_common.o\
+                                mumps_l0_omp_m.o
+
+$(ARITH)fac_front_LU_type1.o   : $(ARITH)fac_front_aux.o\
+                                 $(ARITH)mumps_ooc.o\
+                                 $(ARITH)fac_lr.o\
+                                 $(ARITH)lr_type.o\
+                                 $(ARITH)lr_stats.o\
+                                 $(ARITH)ana_lr.o\
+                                 $(ARITH)mumps_lr_data_m.o\
+                                 mumps_l0_omp_m.o
+
+$(ARITH)fac_front_LU_type2.o   : $(ARITH)fac_front_aux.o\
+                                 $(ARITH)fac_front_type2_aux.o\
+                                 $(ARITH)mumps_ooc.o\
+                                 $(ARITH)mumps_comm_buffer.o\
+                                 mumps_comm_ibcast.o\
+                                 $(ARITH)fac_lr.o\
+                                 $(ARITH)lr_core.o\
+                                 $(ARITH)lr_type.o\
+                                 $(ARITH)lr_stats.o\
+                                 $(ARITH)ana_lr.o\
+                                 $(ARITH)mumps_lr_data_m.o\
+                                 $(ARITH)mumps_struc_def.o
+
+$(ARITH)fac_front_LDLT_type1.o : $(ARITH)fac_front_aux.o\
+                                 $(ARITH)mumps_ooc.o\
+                                 $(ARITH)fac_lr.o\
+                                 $(ARITH)lr_type.o\
+                                 $(ARITH)lr_stats.o\
+                                 $(ARITH)ana_lr.o\
+                                 $(ARITH)mumps_lr_data_m.o\
+                                 mumps_l0_omp_m.o
+
+$(ARITH)fac_front_LDLT_type2.o : $(ARITH)fac_front_aux.o\
+                                 $(ARITH)fac_front_type2_aux.o\
+                                 $(ARITH)mumps_ooc.o\
+                                 $(ARITH)mumps_comm_buffer.o\
+                                 $(ARITH)mumps_load.o\
+                                 $(ARITH)fac_lr.o\
+                                 $(ARITH)lr_type.o\
+                                 $(ARITH)lr_stats.o\
+                                 $(ARITH)ana_lr.o\
+                                 $(ARITH)mumps_lr_data_m.o\
+                                 $(ARITH)mumps_struc_def.o
+
+$(ARITH)fac_front_type2_aux.o : mumps_ooc_common.o\
+                                $(ARITH)fac_front_aux.o\
+                                $(ARITH)lr_type.o\
+                                $(ARITH)mumps_struc_def.o\
+                                $(ARITH)mumps_comm_buffer.o\
+                                $(ARITH)mumps_load.o\
+                                mumps_comm_ibcast.o\
+                                fac_ibct_data_m.o
+
+$(ARITH)fac_lr.o:               $(ARITH)lr_core.o\
+                                $(ARITH)lr_type.o\
+                                $(ARITH)mumps_lr_data_m.o\
+                                $(ARITH)lr_stats.o
+
+$(ARITH)fac_mem_dynamic.o:      $(ARITH)mumps_load.o\
+                                $(ARITH)static_ptr_m.o
+
+$(ARITH)fac_omp_m.o:            $(ARITH)fac_asm_master_m.o\
+                                $(ARITH)fac_asm_master_ELT_m.o\
+                                $(ARITH)fac_front_LU_type1.o\
+                                $(ARITH)fac_front_LDLT_type1.o\
+                                $(ARITH)mumps_load.o\
+                                $(ARITH)omp_tps_m.o\
+                                $(ARITH)lr_stats.o\
+                                $(ARITH)mumps_struc_def.o\
+                                omp_tps_common_m.o\
+                                mumps_l0_omp_m.o
+
+$(ARITH)fac_sol_l0omp_m.o:      $(ARITH)mumps_struc_def.o
+
+$(ARITH)fac_omp_m.o:            $(ARITH)mumps_struc_def.o \
+                                $(ARITH)fac_mem_dynamic.o\
+                                $(ARITH)omp_tps_m.o\
+                                omp_tps_common_m.o
+
+$(ARITH)fac_par_m.o:            $(ARITH)mumps_load.o\
+                                $(ARITH)mumps_ooc.o\
+                                $(ARITH)fac_asm_master_m.o\
+                                $(ARITH)fac_asm_master_ELT_m.o\
+                                $(ARITH)omp_tps_m.o\
+                                $(ARITH)fac_front_LU_type1.o\
+                                $(ARITH)fac_front_LU_type2.o\
+                                $(ARITH)fac_front_LDLT_type1.o\
+                                $(ARITH)fac_front_LDLT_type2.o\
+                                $(ARITH)fac_mem_dynamic.o\
+                                $(ARITH)mumps_struc_def.o\
+                                $(ARITH)lr_stats.o\
+                                omp_tps_common_m.o\
+                                mumps_l0_omp_m.o
+
+$(ARITH)lr_core.o:              $(ARITH)lr_type.o\
+                                $(ARITH)mumps_lr_data_m.o\
+                                $(ARITH)lr_stats.o\
+                                lr_common.o
+
+$(ARITH)lr_stats.o:             $(ARITH)lr_type.o
+
+$(ARITH)mumps_comm_buffer.o:    mumps_comm_ibcast.o \
+                                $(ARITH)lr_type.o \
+                                $(ARITH)lr_core.o \
+                                $(ARITH)mumps_lr_data_m.o \
+                                fac_ibct_data_m.o
+
+$(ARITH)mumps_config_file.o:    $(ARITH)mumps_struc_def.o
+
+$(ARITH)mumps_load.o:           $(ARITH)mumps_comm_buffer.o \
+                                $(ARITH)mumps_struc_def.o \
+                                fac_future_niv2_mod.o
+
+$(ARITH)mumps_lr_data_m.o:      $(ARITH)lr_type.o\
+                                front_data_mgt_m.o
+
+$(ARITH)mumps_ooc_buffer.o:     mumps_ooc_common.o
+
+$(ARITH)mumps_ooc.o:            $(ARITH)mumps_struc_def.o \
+                                $(ARITH)mumps_ooc_buffer.o \
+                                mumps_ooc_common.o
+
+$(ARITH)mumps_sol_es.o:         $(ARITH)lr_type.o \
+                                $(ARITH)mumps_lr_data_m.o
+
+$(ARITH)mumps_save_restore.o:   $(ARITH)mumps_struc_def.o \
+                                $(ARITH)mumps_save_restore_files.o \
+                                $(ARITH)mumps_lr_data_m.o \
+                                $(ARITH)mumps_ooc.o \
+                                $(ARITH)fac_sol_l0omp_m.o \
+                                front_data_mgt_m.o
+
+$(ARITH)mumps_save_restore_files.o : $(ARITH)mumps_struc_def.o
+
+$(ARITH)sol_lr.o:               $(ARITH)lr_type.o\
+                                $(ARITH)lr_stats.o\
+                                $(ARITH)mumps_lr_data_m.o
+
+$(ARITH)sol_omp_m.o:            $(ARITH)mumps_struc_def.o
+
+
+
+
+
+# Dependencies between modules:
+# ii) arithmetic-independent modules:
+
+ana_omp_m.o:                     double_linked_list.o
+fac_asm_build_sort_index_ELT_m.o:omp_tps_common_m.o
+fac_asm_build_sort_index_m.o:    omp_tps_common_m.o
+fac_descband_data_m.o:           front_data_mgt_m.o
+fac_ibct_data_m.o:               front_data_mgt_m.o
+fac_maprow_data_m.o:             front_data_mgt_m.o
+mumps_comm_ibcast.o:             fac_future_niv2_mod.o
+mumps_static_mapping.o:          lr_common.o
+
+
+# Compile modules before the rest
+$(OBJS_COMMON_OTHER):$(OBJS_COMMON_MOD)
+$(OBJS_OTHER):$(OBJS_COMMON_MOD) $(OBJS_MOD)
+
+.SUFFIXES: .c .F .o
+.F.o:
+	$(FC) $(OPTF) -I. -I../include $(INCS) $(IORDERINGSF) $(ORDERINGSF) -c $*.F $(OUTF) $*.o
+.c.o:
+	$(CC) $(OPTC) -I../include $(INCS) $(CDEFS) $(IORDERINGSC) $(ORDERINGSC) -c $*.c $(OUTC) $*.o
+
+$(ARITH)mumps_c.o:	mumps_c.c
+	$(CC) $(OPTC) -I../include $(INCS) $(CDEFS) -DMUMPS_ARITH=MUMPS_ARITH_$(ARITH) \
+	      $(IORDERINGSC) $(ORDERINGSC) -c mumps_c.c $(OUTC) $@
+
+clean:
+	$(RM) *.o *.mod $(incdir)/mumps_int_def.h
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/mingw64/msmpi/Makefile.inc
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/mingw64/msmpi/Makefile.inc	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/mingw64/msmpi/Makefile.inc	(revision 27955)
@@ -0,0 +1,189 @@
+#
+#  This file is part of MUMPS 5.3.5, released
+#  on Thu Oct 22 09:29:08 UTC 2020
+#
+################################################################################
+#
+#   Makefile.inc.generic
+#
+#   This defines some parameters dependent on your platform; you should
+#   look for the approriate file in the directory ./Make.inc/ and copy it
+#   into a file called Makefile.inc. For example, from the MUMPS root
+#   directory, use 
+#   "cp Make.inc/Makefile.inc.generic ./Makefile.inc"
+#   (see the main README file for details)
+#
+#   If you do not find any suitable Makefile in Makefile.inc, use this file:
+#   "cp Make.inc/Makefile.inc.generic ./Makefile.inc" and modify it according
+#   to the comments given below. If you manage to build MUMPS on a new platform,
+#   and think that this could be useful to others, you may want to send us
+#   the corresponding Makefile.inc file.
+#
+################################################################################
+
+
+########################################################################
+#Begin orderings
+#
+# NOTE that PORD is distributed within MUMPS by default. It is recommended to
+# install other orderings. For that, you need to obtain the corresponding package
+# and modify the variables below accordingly.
+# For example, to have Metis available within MUMPS:
+#          1/ download Metis and compile it
+#          2/ uncomment (suppress # in first column) lines
+#             starting with LMETISDIR,  LMETIS
+#          3/ add -Dmetis in line ORDERINGSF
+#             ORDERINGSF  = -Dpord -Dmetis
+#          4/ Compile and install MUMPS
+#             make clean; make   (to clean up previous installation)
+#
+#          Metis/ParMetis and SCOTCH/PT-SCOTCH (ver 6.0 and later) orderings are recommended.
+#
+
+#SCOTCHDIR  = ${HOME}/scotch_6.0
+#ISCOTCH    = -I$(SCOTCHDIR)/include
+#
+# You have to choose one among the following two lines depending on
+# the type of analysis you want to perform. If you want to perform only
+# sequential analysis choose the first (remember to add -Dscotch in the ORDERINGSF
+# variable below); for both parallel and sequential analysis choose the second 
+# line (remember to add -Dptscotch in the ORDERINGSF variable below)
+
+#LSCOTCH    = -L$(SCOTCHDIR)/lib -lesmumps -lscotch -lscotcherr
+#LSCOTCH    = -L$(SCOTCHDIR)/lib -lptesmumps -lptscotch -lptscotcherr
+
+
+LPORDDIR = $(topdir)/PORD/lib
+IPORD    = -I$(topdir)/PORD/include
+LPORD    = -L$(LPORDDIR) -lpord
+
+LMSMPIDIR = ${MSMPI_ROOT}/lib
+IMSMPIDIR = -I${MSMPI_ROOT}/include
+
+#LMETISDIR = /opt/metis-5.1.0/build/Linux-x86_64/libmetis
+#IMETIS    = /opt/metis-5.1.0/include
+
+# You have to choose one among the following two lines depending on
+# the type of analysis you want to perform. If you want to perform only
+# sequential analysis choose the first (remember to add -Dmetis in the ORDERINGSF
+# variable below); for both parallel and sequential analysis choose the second 
+# line (remember to add -Dparmetis in the ORDERINGSF variable below)
+
+#LMETIS    = -L$(LMETISDIR) -lmetis
+#LMETIS    = -L$(LMETISDIR) -lparmetis -lmetis
+
+LMETISDIR		= ${METIS_ROOT}/lib
+IMETIS			= -I${METIS_ROOT}/include
+LPARMETISDIR	= ${PARMETIS_ROOT}/lib
+IPARMETIS		= -I${PARMETIS_ROOT}/include
+
+LMETIS    = -L$(LPARMETISDIR) -lparmetis -L$(LMSMPIDIR) -lmsmpi -L$(LMETISDIR) -lmetis
+
+# The following variables will be used in the compilation process.
+# Please note that -Dptscotch and -Dparmetis imply -Dscotch and -Dmetis respectively.
+# If you want to use Metis 4.X or an older version, you should use -Dmetis4 instead of -Dmetis
+# or in addition with -Dparmetis (if you are using parmetis 3.X or older).
+#ORDERINGSF = -Dscotch -Dmetis -Dpord -Dptscotch -Dparmetis
+#ORDERINGSF  = -Dpord
+ORDERINGSF  = -Dmetis -Dpord -Dparmetis
+ORDERINGSC  = $(ORDERINGSF)
+
+# LORDERINGS = $(LMETIS) $(LPORD) $(LSCOTCH)
+# IORDERINGSF = $(ISCOTCH)
+# IORDERINGSC = $(IMETIS) $(IPORD) $(ISCOTCH)
+LORDERINGS = $(LPARMETIS) $(LMETIS)  $(LPORD) $(LSCOTCH)
+IORDERINGSF = $(ISCOTCH)
+IORDERINGSC = $(IPARMETIS) $(IMETIS) $(IPORD) $(ISCOTCH)
+
+#End orderings
+########################################################################
+
+########################################################################
+# DEFINE HERE SOME COMMON COMMANDS, THE COMPILER NAMES, ETC...
+
+# PLAT : use it to add a default suffix to the generated libraries
+PLAT    = 
+# Library extension, + C and Fortran "-o" option
+# may be different under Windows
+LIBEXT  = .dll
+OUTC    = -o 
+OUTF    = -o 
+# RM : remove files
+RM      = /usr/bin/rm -f
+# CC : C compiler
+CC      = /mingw64/bin/gcc
+# FC : Fortran 90 compiler
+FC      = /mingw64/bin/gfortran
+# FL : Fortran linker
+FL      = /mingw64/bin/gfortran
+# AR : Archive object in a library
+#      keep a space at the end if options have to be separated from lib name
+AR      = /mingw64/bin/ar cr 
+# RANLIB : generate index of an archive file
+#   (optionnal use "RANLIB = echo" in case of problem)
+RANLIB  = /mingw64/bin/ranlib
+#RANLIB  = echo
+
+# DEFINE HERE YOUR LAPACK LIBRARY
+
+LAPACK = -L${LAPACK_ROOT}/lib -llapack
+
+# SCALAP should define the SCALAPACK and BLACS libraries.
+SCALAP  = -L${SCALAPACK_ROOT}/lib -lscalapack
+
+# INCLUDE DIRECTORY FOR MPI
+INCPAR  = $(IMSMPIDIR)
+
+# LIBRARIES USED BY THE PARALLEL VERSION OF MUMPS: $(SCALAP) and MPI
+LIBPAR  = $(SCALAP) $(LAPACK) -L$(LMSMPIDIR) -lmsmpi
+
+# The parallel version is not concerned by the next two lines.
+# They are related to the sequential library provided by MUMPS,
+# to use instead of ScaLAPACK and MPI.
+INCSEQ  = -I$(topdir)/libseq
+LIBSEQ  = $(LAPACK) -L$(topdir)/libseq -lmpiseq
+
+# DEFINE HERE YOUR BLAS LIBRARY
+
+LIBBLAS = -L${BLAS_ROOT}/lib -lblas
+
+# DEFINE HERE YOUR PTHREAD LIBRARY
+LIBOTHERS = -lpthread
+
+# FORTRAN/C COMPATIBILITY:
+#  Use:
+#    -DAdd_ if your Fortran compiler adds an underscore at the end
+#              of symbols,
+#     -DAdd__ if your Fortran compiler adds 2 underscores,
+#
+#     -DUPPER if your Fortran compiler uses uppercase symbols
+#
+#     leave empty if your Fortran compiler does not change the symbols.
+#
+
+CDEFS = -DAdd_
+
+#COMPILER OPTIONS
+#
+# NOTE:
+# - Added -fallow-argument-mismatch option to OPTF in order to clear "Error: 
+#	Rank mismatch between actual argument at [...]"
+# - Added -fallow-invalid-boz option to OPTF in order to clear "Error: BOZ 
+#	literal constant at [...]"
+#
+OPTF    = -O -fPIC -fallow-argument-mismatch -fallow-invalid-boz
+OPTC    = -O -fPIC -I.
+OPTL    = -O
+
+# CHOOSE BETWEEN USING THE SEQUENTIAL OR THE PARALLEL VERSION.
+
+#Sequential:
+#INCS = $(INCSEQ)
+#LIBS = $(LIBSEQ)
+#LIBSEQNEEDED = libseqneeded
+
+#Parallel:
+INCS = $(INCPAR)
+LIBS = $(LIBPAR)
+LIBSEQNEEDED = libseqneeded # NOTE: Create libmpiseq because PETSc looks for it (rather than patching PETSc config tests)
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/mingw64/msmpi/PORD/lib/Makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/mingw64/msmpi/PORD/lib/Makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/mingw64/msmpi/PORD/lib/Makefile	(revision 27955)
@@ -0,0 +1,34 @@
+
+# To compile directly, uncomment the line below.
+# include ../Make.in
+#
+# Otherwise, adequate variables for CC, CFLAGS, AR and RANLIB must be passed to 
+# make.
+#
+
+INCLUDES = -I../include
+
+# NOTE:
+#- CFLAGS = $(OPTC) (see ../../src/Makefile; OPTC is set in ../../Makefile.inc)
+#
+COPTIONS = $(INCLUDES) $(CFLAGS) $(OPTFLAGS)
+
+OBJS = graph.o gbipart.o gbisect.o ddcreate.o ddbisect.o nestdiss.o \
+       multisector.o gelim.o bucket.o tree.o \
+       symbfac.o interface.o sort.o minpriority.o 
+
+# NOTE: numfac.c read.c mapping.c triangular.c matrix.c kernel.c were not 
+# directly used by MUMPS and have been removed from the original SPACE 
+# package.
+
+.c.o:
+	$(CC) $(COPTIONS) -c $*.c $(OUTC) $*.o
+
+libpord$(LIBEXT):$(OBJS)
+	$(CC) -shared $(OUTC) $@ $(OBJS)
+
+clean:
+	$(RM) *.o
+
+realclean:
+	$(RM) *.o libpord*
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/mingw64/msmpi/libseq/Makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/mingw64/msmpi/libseq/Makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/mingw64/msmpi/libseq/Makefile	(revision 27955)
@@ -0,0 +1,25 @@
+#
+#  This file is part of MUMPS 5.3.5, released
+#  on Thu Oct 22 09:29:08 UTC 2020
+#
+all: libmpiseq
+
+.PHONY: all libmpiseq clean
+
+include ../Makefile.inc
+
+libmpiseq: libmpiseq$(PLAT)$(LIBEXT)
+
+# NOTE:
+# - We need to use Fortran compiler or otherwise link in Fortran libraries 
+#   using C compiler (which does not make a lot of sense, but is possible)
+#
+libmpiseq$(PLAT)$(LIBEXT): mpi.o mpic.o elapse.o
+	$(FC) -shared $(OUTF) $@ mpi.o mpic.o elapse.o
+.f.o:
+	$(FC) $(OPTF)              -c $*.f $(OUTF)$*.o
+.c.o:
+	$(CC) $(OPTC) $(CDEFS) -I. -c $*.c $(OUTC)$*.o
+
+clean:
+	$(RM) *.o *$(LIBEXT)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/mingw64/msmpi/src/Makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/mingw64/msmpi/src/Makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/5.3/win/msys2/mingw64/msmpi/src/Makefile	(revision 27955)
@@ -0,0 +1,425 @@
+#
+#  This file is part of MUMPS 5.3.5, released
+#  on Thu Oct 22 09:29:08 UTC 2020
+#
+#
+topdir = ..
+libdir = $(topdir)/lib
+incdir = $(topdir)/include
+
+default: d
+
+.PHONY: default s d c z mumps_lib clean
+
+s:
+	$(MAKE) ARITH=s mumps_lib
+d:
+	$(MAKE) ARITH=d mumps_lib
+c:
+	$(MAKE) ARITH=c mumps_lib
+z:
+	$(MAKE) ARITH=z mumps_lib
+
+include $(topdir)/Makefile.inc
+
+mumps_lib:    $(incdir)/mumps_int_def.h \
+              $(libdir)/libmumps_common$(PLAT)$(LIBEXT) \
+              $(libdir)/lib$(ARITH)mumps$(PLAT)$(LIBEXT)
+
+# Build $(incdir)/mumps_int_def.h, needed by mumps_c_types.h
+$(incdir)/mumps_int_def.h: build_mumps_int_def 
+	./build_mumps_int_def > $(incdir)/mumps_int_def.h
+build_mumps_int_def:build_mumps_int_def.o
+	$(CC) $(OPTL) build_mumps_int_def.o -o build_mumps_int_def
+
+OBJS_COMMON_MOD = \
+        ana_omp_m.o\
+        ana_blk_m.o\
+        ana_orderings_wrappers_m.o\
+        double_linked_list.o\
+        fac_asm_build_sort_index_ELT_m.o\
+        fac_asm_build_sort_index_m.o\
+        fac_descband_data_m.o\
+        fac_future_niv2_mod.o\
+        fac_ibct_data_m.o\
+        fac_maprow_data_m.o\
+        front_data_mgt_m.o\
+        lr_common.o \
+        mumps_comm_ibcast.o\
+        mumps_l0_omp_m.o\
+        mumps_memory_mod.o\
+        mumps_mpitoomp_m.o\
+        mumps_ooc_common.o\
+        mumps_static_mapping.o\
+        omp_tps_common_m.o
+
+
+OBJS_COMMON_OTHER = \
+        ana_blk.o\
+        ana_orderings.o\
+        ana_set_ordering.o\
+        ana_AMDMF.o\
+        bcast_errors.o\
+        estim_flops.o\
+        mumps_type_size.o \
+        mumps_type2_blocking.o \
+        mumps_version.o \
+        mumps_print_defined.o \
+        mumps_common.o\
+        mumps_pord.o\
+        mumps_metis.o\
+        mumps_metis64.o\
+        mumps_metis_int.o\
+        mumps_scotch.o\
+        mumps_scotch64.o\
+        mumps_scotch_int.o\
+        mumps_size.o\
+        mumps_io.o\
+        mumps_io_basic.o\
+        mumps_io_thread.o\
+        mumps_io_err.o\
+        mumps_numa.o \
+        mumps_thread.o \
+        mumps_save_restore_C.o \
+        mumps_config_file_C.o \
+        mumps_thread_affinity.o \
+        tools_common.o \
+        sol_common.o
+
+OBJS_MOD =   \
+        $(ARITH)ana_aux.o \
+        $(ARITH)ana_aux_par.o \
+        $(ARITH)ana_lr.o\
+        $(ARITH)fac_asm_master_ELT_m.o\
+        $(ARITH)fac_asm_master_m.o\
+        $(ARITH)fac_front_aux.o\
+        $(ARITH)fac_front_LU_type1.o\
+        $(ARITH)fac_front_LU_type2.o\
+        $(ARITH)fac_front_LDLT_type1.o\
+        $(ARITH)fac_front_LDLT_type2.o\
+        $(ARITH)fac_front_type2_aux.o\
+        $(ARITH)fac_sispointers_m.o\
+        $(ARITH)fac_lr.o\
+        $(ARITH)fac_mem_dynamic.o\
+        $(ARITH)fac_omp_m.o\
+        $(ARITH)fac_par_m.o\
+        $(ARITH)fac_sol_l0omp_m.o\
+        $(ARITH)lr_core.o\
+        $(ARITH)lr_stats.o\
+        $(ARITH)lr_type.o\
+        $(ARITH)mumps_comm_buffer.o\
+        $(ARITH)mumps_config_file.o\
+        $(ARITH)mumps_load.o\
+        $(ARITH)mumps_lr_data_m.o\
+        $(ARITH)mumps_ooc_buffer.o\
+        $(ARITH)mumps_ooc.o\
+        $(ARITH)mumps_sol_es.o\
+        $(ARITH)mumps_save_restore.o\
+        $(ARITH)mumps_save_restore_files.o\
+        $(ARITH)mumps_struc_def.o\
+        $(ARITH)omp_tps_m.o\
+        $(ARITH)sol_lr.o\
+        $(ARITH)sol_omp_m.o\
+        $(ARITH)static_ptr_m.o
+
+OBJS_OTHER = \
+        $(ARITH)ini_driver.o\
+        $(ARITH)ana_driver.o\
+        $(ARITH)fac_driver.o\
+        $(ARITH)sol_driver.o\
+        $(ARITH)sol_distrhs.o\
+        $(ARITH)end_driver.o\
+        $(ARITH)ana_aux_ELT.o\
+        $(ARITH)ana_dist_m.o\
+        $(ARITH)ana_LDLT_preprocess.o\
+        $(ARITH)ana_reordertree.o\
+        $(ARITH)arrowheads.o\
+        $(ARITH)bcast_int.o\
+        $(ARITH)fac_asm_ELT.o\
+        $(ARITH)fac_asm.o\
+        $(ARITH)fac_b.o\
+        $(ARITH)fac_distrib_distentry.o\
+        $(ARITH)fac_distrib_ELT.o\
+        $(ARITH)fac_lastrtnelind.o\
+        $(ARITH)fac_mem_alloc_cb.o\
+        $(ARITH)fac_mem_compress_cb.o\
+        $(ARITH)fac_mem_free_block_cb.o\
+        $(ARITH)fac_mem_stack_aux.o\
+        $(ARITH)fac_mem_stack.o\
+        $(ARITH)fac_process_band.o\
+        $(ARITH)fac_process_blfac_slave.o\
+        $(ARITH)fac_process_blocfacto_LDLT.o\
+        $(ARITH)fac_process_blocfacto.o\
+        $(ARITH)fac_process_bf.o\
+        $(ARITH)fac_process_end_facto_slave.o\
+        $(ARITH)fac_process_contrib_type1.o\
+        $(ARITH)fac_process_contrib_type2.o\
+        $(ARITH)fac_process_contrib_type3.o\
+        $(ARITH)fac_process_maprow.o\
+        $(ARITH)fac_process_master2.o\
+        $(ARITH)fac_process_message.o\
+        $(ARITH)fac_process_root2slave.o\
+        $(ARITH)fac_process_root2son.o\
+        $(ARITH)fac_process_rtnelind.o\
+        $(ARITH)fac_root_parallel.o\
+        $(ARITH)fac_scalings.o\
+        $(ARITH)fac_determinant.o\
+        $(ARITH)fac_scalings_simScaleAbs.o\
+        $(ARITH)fac_scalings_simScale_util.o\
+        $(ARITH)fac_sol_pool.o\
+        $(ARITH)fac_type3_symmetrize.o\
+        $(ARITH)ini_defaults.o\
+        $(ARITH)mumps_c.o\
+        $(ARITH)mumps_driver.o\
+        $(ARITH)mumps_f77.o\
+        $(ARITH)mumps_gpu.o\
+        $(ARITH)mumps_iXamax.o\
+        $(ARITH)ana_mtrans.o\
+        $(ARITH)ooc_panel_piv.o\
+        $(ARITH)rank_revealing.o\
+        $(ARITH)sol_aux.o\
+        $(ARITH)sol_bwd_aux.o\
+        $(ARITH)sol_bwd.o\
+        $(ARITH)sol_c.o\
+        $(ARITH)sol_fwd_aux.o\
+        $(ARITH)sol_fwd.o\
+        $(ARITH)sol_matvec.o\
+        $(ARITH)sol_root_parallel.o\
+        $(ARITH)tools.o\
+        $(ARITH)type3_root.o
+
+# NOTE:
+# - We need to use Fortran compiler or otherwise link in Fortran libraries 
+#	using C compiler (which does not make a lot of sense, but is possible)
+# - In case of "Makefile:[line_number]: *** missing separator.  Stop.", ensure 
+#	that $(FC) is preceded by a tab and not four spaces
+#
+$(libdir)/libmumps_common$(PLAT)$(LIBEXT):      $(OBJS_COMMON_MOD) $(OBJS_COMMON_OTHER)
+	$(FC) -shared $(OUTF) $@ \
+		$? $(LORDERINGS) $(LIBS) $(LIBLAPACK) $(LIBBLAS) $(LIBOTHERS) \
+		-Wl,--out-implib=$(libdir)/libmumps_common$(PLAT).dll.a
+
+$(libdir)/lib$(ARITH)mumps$(PLAT)$(LIBEXT):    $(OBJS_MOD) $(OBJS_OTHER)
+	$(FC) -shared $(OUTF) $@ \
+		$? -L$(libdir) -lmumps_common$(PLAT) $(LORDERINGS) $(LIBS) $(LIBLAPACK) $(LIBBLAS) $(LIBOTHERS) \
+		-Wl,--out-implib=$(libdir)/lib$(ARITH)mumps$(PLAT).dll.a
+
+# Dependencies between modules:
+# i) arithmetic-dependent modules:
+$(ARITH)ana_aux.o:              $(ARITH)mumps_struc_def.o \
+                                mumps_static_mapping.o \
+                                ana_orderings_wrappers_m.o \
+                                ana_blk_m.o
+$(ARITH)ana_aux_par.o:          $(ARITH)mumps_struc_def.o \
+                                mumps_memory_mod.o \
+                                ana_orderings_wrappers_m.o
+$(ARITH)ana_lr.o:                $(ARITH)lr_core.o\
+                                $(ARITH)lr_stats.o\
+                                lr_common.o\
+                                ana_orderings_wrappers_m.o \
+                                ana_blk_m.o 
+$(ARITH)fac_asm_master_ELT_m.o: omp_tps_common_m.o \
+                                fac_ibct_data_m.o \
+                                fac_asm_build_sort_index_ELT_m.o \
+                                lr_common.o \
+                                $(ARITH)fac_mem_dynamic.o \
+                                $(ARITH)lr_core.o \
+                                $(ARITH)ana_lr.o \
+                                $(ARITH)mumps_lr_data_m.o \
+                                $(ARITH)mumps_struc_def.o \
+                                $(ARITH)omp_tps_m.o \
+                                $(ARITH)mumps_comm_buffer.o \
+                                $(ARITH)mumps_load.o
+$(ARITH)fac_asm_master_m.o:     omp_tps_common_m.o \
+                                fac_ibct_data_m.o \
+                                fac_asm_build_sort_index_m.o \
+                                lr_common.o \
+                                $(ARITH)fac_mem_dynamic.o \
+                                $(ARITH)lr_core.o \
+                                $(ARITH)ana_lr.o \
+                                $(ARITH)mumps_lr_data_m.o \
+                                $(ARITH)mumps_struc_def.o \
+                                $(ARITH)omp_tps_m.o \
+                                $(ARITH)mumps_comm_buffer.o \
+                                $(ARITH)mumps_load.o
+
+$(ARITH)fac_front_aux.o:        $(ARITH)lr_type.o\
+                                $(ARITH)lr_stats.o\
+                                $(ARITH)mumps_comm_buffer.o\
+                                $(ARITH)mumps_load.o\
+                                $(ARITH)mumps_ooc.o\
+                                mumps_ooc_common.o\
+                                mumps_l0_omp_m.o
+
+$(ARITH)fac_front_LU_type1.o   : $(ARITH)fac_front_aux.o\
+                                 $(ARITH)mumps_ooc.o\
+                                 $(ARITH)fac_lr.o\
+                                 $(ARITH)lr_type.o\
+                                 $(ARITH)lr_stats.o\
+                                 $(ARITH)ana_lr.o\
+                                 $(ARITH)mumps_lr_data_m.o\
+                                 mumps_l0_omp_m.o
+
+$(ARITH)fac_front_LU_type2.o   : $(ARITH)fac_front_aux.o\
+                                 $(ARITH)fac_front_type2_aux.o\
+                                 $(ARITH)mumps_ooc.o\
+                                 $(ARITH)mumps_comm_buffer.o\
+                                 mumps_comm_ibcast.o\
+                                 $(ARITH)fac_lr.o\
+                                 $(ARITH)lr_core.o\
+                                 $(ARITH)lr_type.o\
+                                 $(ARITH)lr_stats.o\
+                                 $(ARITH)ana_lr.o\
+                                 $(ARITH)mumps_lr_data_m.o\
+                                 $(ARITH)mumps_struc_def.o
+
+$(ARITH)fac_front_LDLT_type1.o : $(ARITH)fac_front_aux.o\
+                                 $(ARITH)mumps_ooc.o\
+                                 $(ARITH)fac_lr.o\
+                                 $(ARITH)lr_type.o\
+                                 $(ARITH)lr_stats.o\
+                                 $(ARITH)ana_lr.o\
+                                 $(ARITH)mumps_lr_data_m.o\
+                                 mumps_l0_omp_m.o
+
+$(ARITH)fac_front_LDLT_type2.o : $(ARITH)fac_front_aux.o\
+                                 $(ARITH)fac_front_type2_aux.o\
+                                 $(ARITH)mumps_ooc.o\
+                                 $(ARITH)mumps_comm_buffer.o\
+                                 $(ARITH)mumps_load.o\
+                                 $(ARITH)fac_lr.o\
+                                 $(ARITH)lr_type.o\
+                                 $(ARITH)lr_stats.o\
+                                 $(ARITH)ana_lr.o\
+                                 $(ARITH)mumps_lr_data_m.o\
+                                 $(ARITH)mumps_struc_def.o
+
+$(ARITH)fac_front_type2_aux.o : mumps_ooc_common.o\
+                                $(ARITH)fac_front_aux.o\
+                                $(ARITH)lr_type.o\
+                                $(ARITH)mumps_struc_def.o\
+                                $(ARITH)mumps_comm_buffer.o\
+                                $(ARITH)mumps_load.o\
+                                mumps_comm_ibcast.o\
+                                fac_ibct_data_m.o
+
+$(ARITH)fac_lr.o:               $(ARITH)lr_core.o\
+                                $(ARITH)lr_type.o\
+                                $(ARITH)mumps_lr_data_m.o\
+                                $(ARITH)lr_stats.o
+
+$(ARITH)fac_mem_dynamic.o:      $(ARITH)mumps_load.o\
+                                $(ARITH)static_ptr_m.o
+
+$(ARITH)fac_omp_m.o:            $(ARITH)fac_asm_master_m.o\
+                                $(ARITH)fac_asm_master_ELT_m.o\
+                                $(ARITH)fac_front_LU_type1.o\
+                                $(ARITH)fac_front_LDLT_type1.o\
+                                $(ARITH)mumps_load.o\
+                                $(ARITH)omp_tps_m.o\
+                                $(ARITH)lr_stats.o\
+                                $(ARITH)mumps_struc_def.o\
+                                omp_tps_common_m.o\
+                                mumps_l0_omp_m.o
+
+$(ARITH)fac_sol_l0omp_m.o:      $(ARITH)mumps_struc_def.o
+
+$(ARITH)fac_omp_m.o:            $(ARITH)mumps_struc_def.o \
+                                $(ARITH)fac_mem_dynamic.o\
+                                $(ARITH)omp_tps_m.o\
+                                omp_tps_common_m.o
+
+$(ARITH)fac_par_m.o:            $(ARITH)mumps_load.o\
+                                $(ARITH)mumps_ooc.o\
+                                $(ARITH)fac_asm_master_m.o\
+                                $(ARITH)fac_asm_master_ELT_m.o\
+                                $(ARITH)omp_tps_m.o\
+                                $(ARITH)fac_front_LU_type1.o\
+                                $(ARITH)fac_front_LU_type2.o\
+                                $(ARITH)fac_front_LDLT_type1.o\
+                                $(ARITH)fac_front_LDLT_type2.o\
+                                $(ARITH)fac_mem_dynamic.o\
+                                $(ARITH)mumps_struc_def.o\
+                                $(ARITH)lr_stats.o\
+                                omp_tps_common_m.o\
+                                mumps_l0_omp_m.o
+
+$(ARITH)lr_core.o:              $(ARITH)lr_type.o\
+                                $(ARITH)mumps_lr_data_m.o\
+                                $(ARITH)lr_stats.o\
+                                lr_common.o
+
+$(ARITH)lr_stats.o:             $(ARITH)lr_type.o
+
+$(ARITH)mumps_comm_buffer.o:    mumps_comm_ibcast.o \
+                                $(ARITH)lr_type.o \
+                                $(ARITH)lr_core.o \
+                                $(ARITH)mumps_lr_data_m.o \
+                                fac_ibct_data_m.o
+
+$(ARITH)mumps_config_file.o:    $(ARITH)mumps_struc_def.o
+
+$(ARITH)mumps_load.o:           $(ARITH)mumps_comm_buffer.o \
+                                $(ARITH)mumps_struc_def.o \
+                                fac_future_niv2_mod.o
+
+$(ARITH)mumps_lr_data_m.o:      $(ARITH)lr_type.o\
+                                front_data_mgt_m.o
+
+$(ARITH)mumps_ooc_buffer.o:     mumps_ooc_common.o
+
+$(ARITH)mumps_ooc.o:            $(ARITH)mumps_struc_def.o \
+                                $(ARITH)mumps_ooc_buffer.o \
+                                mumps_ooc_common.o
+
+$(ARITH)mumps_sol_es.o:         $(ARITH)lr_type.o \
+                                $(ARITH)mumps_lr_data_m.o
+
+$(ARITH)mumps_save_restore.o:   $(ARITH)mumps_struc_def.o \
+                                $(ARITH)mumps_save_restore_files.o \
+                                $(ARITH)mumps_lr_data_m.o \
+                                $(ARITH)mumps_ooc.o \
+                                $(ARITH)fac_sol_l0omp_m.o \
+                                front_data_mgt_m.o
+
+$(ARITH)mumps_save_restore_files.o : $(ARITH)mumps_struc_def.o
+
+$(ARITH)sol_lr.o:               $(ARITH)lr_type.o\
+                                $(ARITH)lr_stats.o\
+                                $(ARITH)mumps_lr_data_m.o
+
+$(ARITH)sol_omp_m.o:            $(ARITH)mumps_struc_def.o
+
+
+
+
+
+# Dependencies between modules:
+# ii) arithmetic-independent modules:
+
+ana_omp_m.o:                     double_linked_list.o
+fac_asm_build_sort_index_ELT_m.o:omp_tps_common_m.o
+fac_asm_build_sort_index_m.o:    omp_tps_common_m.o
+fac_descband_data_m.o:           front_data_mgt_m.o
+fac_ibct_data_m.o:               front_data_mgt_m.o
+fac_maprow_data_m.o:             front_data_mgt_m.o
+mumps_comm_ibcast.o:             fac_future_niv2_mod.o
+mumps_static_mapping.o:          lr_common.o
+
+
+# Compile modules before the rest
+$(OBJS_COMMON_OTHER):$(OBJS_COMMON_MOD)
+$(OBJS_OTHER):$(OBJS_COMMON_MOD) $(OBJS_MOD)
+
+.SUFFIXES: .c .F .o
+.F.o:
+	$(FC) $(OPTF) -I. -I../include $(INCS) $(IORDERINGSF) $(ORDERINGSF) -c $*.F $(OUTF) $*.o
+.c.o:
+	$(CC) $(OPTC) -I../include $(INCS) $(CDEFS) $(IORDERINGSC) $(ORDERINGSC) -c $*.c $(OUTC) $*.o
+
+$(ARITH)mumps_c.o:	mumps_c.c
+	$(CC) $(OPTC) -I../include $(INCS) $(CDEFS) -DMUMPS_ARITH=MUMPS_ARITH_$(ARITH) \
+	      $(IORDERINGSC) $(ORDERINGSC) -c mumps_c.c $(OUTC) $@
+
+clean:
+	$(RM) *.o *.mod $(incdir)/mumps_int_def.h
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/Makefile-macosx64.inc
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/Makefile-macosx64.inc	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/configs/Makefile-macosx64.inc	(revision 27955)
@@ -0,0 +1,32 @@
+LPORDDIR   = $(topdir)/PORD/lib/
+IPORD      = -I$(topdir)/PORD/include/
+LPORD      = -L$(LPORDDIR) -lpord
+IMETIS = -I$(ISSM_DIR)/externalpackages/petsc/install/include/
+LMETIS = -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -lparmetis
+ORDERINGSC = -Dpord -Dmetis -Dparmetis
+ORDERINGSF = -Dprod -Dmetis -Dparmetis
+LORDERINGS  = $(LMETIS) $(LPORD) $(LSCOTCH)
+IORDERINGSC = $(IMETIS) $(IPORD) $(ISCOTCH)
+IORDERINGSF = $(ISCOTCH)
+RM = /bin/rm -f
+CC = $(ISSM_DIR)/externalpackages/mpich2/install/bin/mpicc
+OPTC    =  -PIC  -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -O 
+OUTC = -o 
+FC = $(ISSM_DIR)/externalpackages/mpich2/install/bin/mpif90
+FL = $(ISSM_DIR)/externalpackages/mpich2/install/bin/mpif90
+OPTF    =  -fPIC  -Wno-unused-variable -Wno-unused-dummy-argument -O  
+OUTF = -o 
+CDEFS   = -DAdd_
+AR      = /usr/bin/ar cr 
+LIBEXT  = .a
+RANLIB  = /usr/bin/ranlib -c
+SCALAP  = -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -lscalapack -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -lblacs
+INCPAR  = -I$(ISSM_DIR)/externalpackages/mpich2/install/include -I$(ISSM_DIR)/externalpackages/mpich2/install/include
+LIBPAR  = $(SCALAP) 
+INCSEQ  = -I$(topdir)/libseq
+LIBSEQ  =  $(LAPACK) -L$(topdir)/libseq -lmpiseq
+LIBBLAS = -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -lflapack -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -L$(ISSM_DIR)/externalpackages/petsc/src/macosx-gnu/lib -lfblas -L$(ISSM_DIR)/externalpackages/mpich2/install/lib -L/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1/x86_64 -L/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1/x86_64 -L/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1 -L/usr/llvm-gcc-4.2/lib/gcc -L$(ISSM_DIR)/externalpackages/petsc/src -L$(ISSM_DIR)/externalpackages/hdf5/install/lib -L$(ISSM_DIR)/externalpackages/netcdf/install/lib -L/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1 -L/usr/llvm-gcc-4.2/lib -L/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2/lib -lmpichf90 -lgfortran -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin11/4.6.2 -L/usr/local/gfortran/lib -lgfortran -lgcc_ext.10.5 -lquadmath -lm -lm
+OPTL    = -O -I.
+INCS = $(INCPAR)
+LIBS = $(LIBPAR)
+LIBSEQNEEDED =
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/install-5-win-msys2-gcc-msmpi.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/install-5-win-msys2-gcc-msmpi.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/install-5-win-msys2-gcc-msmpi.sh	(revision 27955)
@@ -0,0 +1,61 @@
+#!/bin/bash
+set -eu
+
+
+# Sources:
+# - https://www.scivision.dev/windows-mpi-msys2/
+#
+# NOTE:
+# - Source is pulled from https://github.com/scivision/mumps/releases, which 
+#	provides patches to the releases from developer (http://mumps-solver.org/)
+#
+# TODO:
+# - Create install alias in Makefiles
+# - Alternatively, use cmake rather than make
+#
+
+## Constants
+#
+VER=5.3.5.2
+
+PREFIX="${ISSM_DIR}/externalpackages/mumps/install"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir ${PREFIX} src src/lib
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/mumps-${VER}.tar.gz" "mumps-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf mumps-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv mumps-${VER}/* src
+rm -rf mumps-${VER}
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/5.3/win/msys2/gcc/msmpi/Makefile.inc src
+cp configs/5.3/win/msys2/gcc/msmpi/libseq/Makefile src/libseq
+cp configs/5.3/win/msys2/gcc/msmpi/PORD/lib/Makefile src/PORD/lib
+cp configs/5.3/win/msys2/gcc/msmpi/src/Makefile src/src
+
+# Compile
+cd src
+if [ $# -eq 0 ]; then
+	make all
+else
+	make -j $1 all
+fi
+
+# Install
+mkdir ${PREFIX}/lib
+cp lib/lib* ${PREFIX}/lib
+cp libseq/lib* ${PREFIX}/lib
+mkdir ${PREFIX}/include
+cp include/* ${PREFIX}/include
+
+# Create link to lib directory (PETSc, by default, looks for libraries in 
+# lib64/ if it detects that 64-bit integers are being used).
+cd ${PREFIX}
+ln -s lib lib64
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/install-5-win-msys2-mingw-msmpi.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/install-5-win-msys2-mingw-msmpi.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/install-5-win-msys2-mingw-msmpi.sh	(revision 27955)
@@ -0,0 +1,61 @@
+#!/bin/bash
+set -eu
+
+
+# Sources:
+# - https://www.scivision.dev/windows-mpi-msys2/
+#
+# NOTE:
+# - Source is pulled from https://github.com/scivision/mumps/releases, which 
+#	provides patches to the releases from developer (http://mumps-solver.org/)
+#
+# TODO:
+# - Create install alias in Makefiles
+# - Alternatively, use cmake rather than make
+#
+
+## Constants
+#
+VER=5.3.5.2
+
+PREFIX="${ISSM_DIR}/externalpackages/mumps/install"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir ${PREFIX} src src/lib
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/mumps-${VER}.tar.gz" "mumps-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf mumps-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv mumps-${VER}/* src
+rm -rf mumps-${VER}
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/5.3/win/msys2/mingw64/msmpi/Makefile.inc src
+cp configs/5.3/win/msys2/mingw64/msmpi/libseq/Makefile src/libseq
+cp configs/5.3/win/msys2/mingw64/msmpi/PORD/lib/Makefile src/PORD/lib
+cp configs/5.3/win/msys2/mingw64/msmpi/src/Makefile src/src
+
+# Compile
+cd src
+if [ $# -eq 0 ]; then
+	make all
+else
+	make -j $1 all
+fi
+
+# Install
+mkdir ${PREFIX}/lib
+cp lib/lib* ${PREFIX}/lib
+cp libseq/lib* ${PREFIX}/lib
+mkdir ${PREFIX}/include
+cp include/* ${PREFIX}/include
+
+# Create link to lib directory (PETSc, by default, looks for libraries in 
+# lib64/ if it detects that 64-bit integers are being used).
+cd ${PREFIX}
+ln -s lib lib64
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/install-5.0-linux-parallel-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/install-5.0-linux-parallel-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/install-5.0-linux-parallel-static.sh	(revision 27955)
@@ -0,0 +1,40 @@
+#!/bin/bash
+set -eu
+
+
+## NOTE: This install script uses make directly rather than CMake and then make
+
+## Constants
+#
+PKG="mumps"
+VER="5.0.2-p2"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/${PKG}-${VER}.tar.gz" "${PKG}-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf ${PKG}-${VER}.tar.gz
+
+# Cleanup
+rm -rf install src
+mkdir install install/include install/lib src
+
+# Move source to 'src' directory
+mv MUMPS_${VER}/* src
+rm -rf MUMPS_${VER}
+
+# Copy customized source and config files to 'src' directory
+cp configs/5.0/linux/Makefile.debian.static.PAR src/Makefile.inc
+
+# Compile
+cd src
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+
+# Install
+cd ..
+cp src/include/* install/include
+cp src/lib/lib*.* install/lib
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/install-macosx64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/install-macosx64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/mumps/install-macosx64.sh	(revision 27955)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mumps-4.10.0-p3
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/mumps-4.10.0-p3.tar.gz' 'mumps-4.10.0-p3.tar.gz'
+
+#Untar 
+tar -zxvf  mumps-4.10.0-p3.tar.gz
+
+#Move mumps into src directory
+mv mumps-4.10.0-p3/* src
+rm -rf mumps-4.10.0-p3
+
+#configuration: 
+cp configs/Makefile-macosx64.inc src/Makefile.inc
+
+#Configure mumps
+cd src
+
+#Compile mumps
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/muq/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/muq/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/muq/install.sh	(revision 27955)
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -eu
+
+# Cleanup from previous installation
+rm -rf install 
+
+#Download development version
+git clone https://bitbucket.org/mituq/muq2 install
+
+#configure
+cd install
+cmake -DCMAKE_INSTALL_PREFIX="${ISSM_DIR}/externalpackages/muq/install"
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/nco/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/nco/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/nco/install.sh	(revision 27955)
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -eu
+#you need hdf5 compiled
+
+#Some cleanup
+rm -rf install 
+mkdir install 
+
+git clone https://github.com/nco/nco.git install
+cd install
+git checkout 4.7.9
+
+#Configure and compile
+./configure \
+ --disable-doc \
+ --prefix="$ISSM_DIR/externalpackages/nco/install" 
+
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/ncview/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/ncview/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/ncview/install.sh	(revision 27955)
@@ -0,0 +1,28 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/ncview-1.93g.tar.gz' 'ncview-1.93g.tar.gz'
+
+#Untar 
+tar -zxvf  ncview-1.93g.tar.gz
+
+#Move doxygen into src directory
+mv ncview-1.93g/* install
+rmdir ncview-1.93g
+
+#Configure doxygen
+cd install
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/ncview/install" \
+	--x-libraries=/usr/X11/lib/ \
+	--x-includes=/usr/X11/include/ \
+	--with-netcdf_incdir="$ISSM_DIR/externalpackages/netcdf/install/include/" \
+	--with-netcdf_libdir="$ISSM_DIR/externalpackages/netcdf/install/lib/"
+
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/neopz/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/neopz/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/neopz/install.sh	(revision 27955)
@@ -0,0 +1,38 @@
+#!/bin/bash
+set -eu
+
+#Erase install
+rm -rf install
+mkdir install
+
+#Download from GitHub server
+#GIT must be installed first. See $ISSM_DIR/externalpackages/git
+git clone https://github.com/labmec/neopz.git
+
+#use these 3 lines if one would like to change to a stable version
+cd neopz
+git checkout 5b1d4fa3cf61dcc500742b8cfdfb01d86ec724b3
+cd ..
+
+#Untar and set src directory
+mv neopz/ install/
+
+#Set neopz CMake variables
+#CMake must be installed first. See $ISSM_DIR/externalpackages/git
+export PROJECT_SOURCE_DIR=$ISSM_DIR/externalpackages/neopz/install/neopz
+export PROJECT_BINARY_DIR=$ISSM_DIR/externalpackages/neopz/install/
+
+#Configure neopz using cmake
+cd $PROJECT_SOURCE_DIR
+cmake -DCMAKE_INSTALL_PREFIX:PATH=$PROJECT_BINARY_DIR -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-g -O3"
+
+cd $PROJECT_SOURCE_DIR
+make
+make install
+
+cd $PROJECT_BINARY_DIR/pzlib
+mv lib ../
+mv include ../
+cd ..
+rm -rf pzlib
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf-cxx/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf-cxx/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf-cxx/install.sh	(revision 27955)
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install netcdf-cxx-4.2
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/netcdf-cxx-4.2.tar.gz' 'netcdf-cxx-4.2.tar.gz'
+
+#Untar 
+tar -zxvf netcdf-cxx-4.2.tar.gz
+
+#Move metis into install directory
+mv netcdf-cxx-4.2/* install
+rm -rf netcdf-cxx-4.2
+
+#Compile
+export CXXFLAGS="-I$ISSM_DIR/externalpackages/netcdf/install/include "
+cd install 
+./configure --prefix="$ISSM_DIR/externalpackages/netcdf-cxx/install" 
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf-python/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf-python/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf-python/install.sh	(revision 27955)
@@ -0,0 +1,43 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+VER="1.5.3"
+
+# Environment
+#
+export HDF5_DIR="${ISSM_DIR}/externalpackages/petsc/install"
+export MPIINC_DIR="${ISSM_DIR}/externalpackages/petsc/install/include"
+export NETCDF_DIR="${ISSM_DIR}/externalpackages/netcdf/install"
+export PYTHONUSERBASE="${ISSM_DIR}/externalpackages/netcdf-python/install" # This variable and '--user' option supplied to 'setup.py install' are required to install to custom location (source: https://setuptools.readthedocs.io/en/latest/easy_install.html#custom-installation-locations)
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/netcdf4-python-${VER}rel.tar.gz" "netcdf4-python-${VER}rel.tar.gz"
+
+# Unpack source
+tar -zxvf netcdf4-python-${VER}rel.tar.gz
+
+# Cleanup
+rm -rf install src
+mkdir install src
+
+# Move source to 'src' directory
+mv netcdf4-python-${VER}rel/* src/
+rm -rf netcdf4-python-${VER}rel
+
+# Compile and install
+cd src
+python setup.py build
+python setup.py install --user
+
+# Unzip eggs
+for egg in $(find "${PYTHONUSERBASE}/lib" -name *.egg); do
+	parent_dir=$(dirname ${egg})
+	filename=$(basename -- ${egg})
+	extension="${filename##*.}"
+	filename="${filename%.*}"
+	src_dir="${parent_dir}/${filename}"
+	unzip ${egg} -d ${src_dir}
+done
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf/install-4.7-parallel-static-with_tests.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf/install-4.7-parallel-static-with_tests.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf/install-4.7-parallel-static-with_tests.sh	(revision 27955)
@@ -0,0 +1,74 @@
+#!/bin/bash
+set -eu
+
+
+# Dependencies
+# - MPI implementation (for parallel I/O support)
+# - hdf5 (1.8.9 / 1.10.1 or later, for netCDF-4 support)
+# - zlib (1.2.5 or later, for netCDF-4 compression)
+# - curl (7.18.0 or later, for DAP remote access client support)
+#
+# Sources:
+# - https://www.unidata.ucar.edu/software/netcdf/documentation/NUG/getting_and_building_netcdf.html#building
+#
+# NOTE:
+# - Certain configuration tests fail if libraries are not supplied explicitly
+#
+# TODO:
+# - Compile and link curl statically (issue with DAP and system libs on macOS 
+#	with more restrictive Gatekeeper; see also --disable-dap option in 
+#	configuration)
+#
+
+# Constants
+#
+VER="4.7.2"
+
+PREFIX="${ISSM_DIR}/externalpackages/netcdf/install" # Set to location where external package should be installed
+
+# Environment
+#
+export CC=mpicc
+export CPPFLAGS="-I${ZLIB_ROOT}/include"
+
+export ZLIB="${ZLIB_ROOT}/lib/libz.a"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/netcdf-c-${VER}.tar.gz" "netcdf-c-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf netcdf-c-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source to 'src' directory
+mv netcdf-c-${VER}/* src
+rm -rf netcdf-c-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-shared \
+	--disable-dependency-tracking \
+	--enable-fast-install \
+	--disable-doxygen \
+	--enable-netcdf4 \
+	--disable-dap \
+	--disable-examples \
+	--disable-filter-testing \
+	--disable-dap-remote-tests \
+	--enable-parallel-tests
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make check
+	make install
+else
+	make -j $1
+	make -j $1 check
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf/install-4.7-parallel-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf/install-4.7-parallel-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf/install-4.7-parallel-static.sh	(revision 27955)
@@ -0,0 +1,71 @@
+#!/bin/bash
+set -eu
+
+
+# Dependencies
+# - MPI implementation (for parallel I/O support)
+# - hdf5 (1.8.9 / 1.10.1 or later, for netCDF-4 support)
+# - zlib (1.2.5 or later, for netCDF-4 compression)
+# - curl (7.18.0 or later, for DAP remote access client support)
+#
+# Sources:
+# - https://www.unidata.ucar.edu/software/netcdf/documentation/NUG/getting_and_building_netcdf.html#building
+#
+# NOTE:
+# - Certain configuration tests fail if libraries are not supplied explicitly
+#
+# TODO:
+# - Compile and link curl statically (issue with DAP and system libs on macOS 
+#	with more restrictive Gatekeeper; see also --disable-dap option in 
+#	configuration)
+#
+
+# Constants
+#
+VER="4.7.2"
+
+PREFIX="${ISSM_DIR}/externalpackages/netcdf/install" # Set to location where external package should be installed
+
+# Environment
+#
+export CC=mpicc
+export CPPFLAGS="-I${ZLIB_ROOT}/include"
+
+export ZLIB="${ZLIB_ROOT}/lib/libz.a"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/netcdf-c-${VER}.tar.gz" "netcdf-c-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf netcdf-c-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source to 'src' directory
+mv netcdf-c-${VER}/* src
+rm -rf netcdf-c-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-shared \
+	--disable-dependency-tracking \
+	--enable-fast-install \
+	--disable-doxygen \
+	--enable-netcdf4 \
+	--disable-dap \
+	--disable-testsets \
+	--disable-examples \
+	--disable-filter-testing
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf/install-4.7-parallel-with_tests.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf/install-4.7-parallel-with_tests.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf/install-4.7-parallel-with_tests.sh	(revision 27955)
@@ -0,0 +1,64 @@
+#!/bin/bash
+set -eu
+
+
+# Dependencies
+# - MPI implementation (for parallel I/O support)
+# - hdf5 (1.8.9 / 1.10.1 or later, for netCDF-4 support)
+# - zlib (1.2.5 or later, for netCDF-4 compression)
+# - curl (7.18.0 or later, for DAP remote access client support)
+#
+# Sources:
+# - https://www.unidata.ucar.edu/software/netcdf/documentation/NUG/getting_and_building_netcdf.html#building
+#
+
+# Constants
+#
+VER="4.7.2"
+
+PREFIX="${ISSM_DIR}/externalpackages/netcdf/install" # Set to location where external package should be installed
+
+# Environment
+#
+export CC=mpicc
+export CPPFLAGS="-I${HDF5_ROOT}/include -I${CURL_ROOT}/include -I${ZLIB_ROOT}/include"
+export LDFLAGS="-L${HDF5_ROOT}/lib -L${CURL_ROOT}/lib -L${ZLIB_ROOT}/lib"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/netcdf-c-${VER}.tar.gz" "netcdf-c-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf netcdf-c-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source to 'src' directory
+mv netcdf-c-${VER}/* src
+rm -rf netcdf-c-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-static \
+	--disable-dependency-tracking \
+	--enable-fast-install \
+	--disable-doxygen \
+	--enable-netcdf4 \
+	--disable-examples \
+	--disable-filter-testing \
+	--disable-dap-remote-tests \
+	--enable-parallel-tests
+
+# Compile, test, and install
+if [ $# -eq 0 ]; then
+	make
+	make check
+	make install
+else
+	make -j $1
+	make -j $1 check
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf/install-4.7-parallel.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf/install-4.7-parallel.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf/install-4.7-parallel.sh	(revision 27955)
@@ -0,0 +1,61 @@
+#!/bin/bash
+set -eu
+
+
+# Dependencies
+# - MPI implementation (for parallel I/O support)
+# - hdf5 (1.8.9 / 1.10.1 or later, for netCDF-4 support)
+# - zlib (1.2.5 or later, for netCDF-4 compression)
+# - curl (7.18.0 or later, for DAP remote access client support)
+#
+# Sources:
+# - https://www.unidata.ucar.edu/software/netcdf/documentation/NUG/getting_and_building_netcdf.html#building
+#
+
+# Constants
+#
+VER="4.7.2"
+
+PREFIX="${ISSM_DIR}/externalpackages/netcdf/install" # Set to location where external package should be installed
+
+# Environment
+#
+export CC=mpicc
+export CPPFLAGS="-I${HDF5_ROOT}/include -I${CURL_ROOT}/include -I${ZLIB_ROOT}/include"
+export LDFLAGS="-L${HDF5_ROOT}/lib -L${CURL_ROOT}/lib -L${ZLIB_ROOT}/lib"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/netcdf-c-${VER}.tar.gz" "netcdf-c-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf netcdf-c-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source to 'src' directory
+mv netcdf-c-${VER}/* src
+rm -rf netcdf-c-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-static \
+	--disable-dependency-tracking \
+	--enable-fast-install \
+	--disable-doxygen \
+	--enable-netcdf4 \
+	--disable-testsets \
+	--disable-examples \
+	--disable-filter-testing
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf/install-4.7-with_tests.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf/install-4.7-with_tests.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf/install-4.7-with_tests.sh	(revision 27955)
@@ -0,0 +1,62 @@
+#!/bin/bash
+set -eu
+
+
+# Dependencies
+# - MPI implementation (for parallel I/O support)
+# - hdf5 (1.8.9 / 1.10.1 or later, for netCDF-4 support)
+# - zlib (1.2.5 or later, for netCDF-4 compression)
+# - curl (7.18.0 or later, for DAP remote access client support)
+#
+# Sources:
+# - https://www.unidata.ucar.edu/software/netcdf/documentation/NUG/getting_and_building_netcdf.html#building
+#
+
+# Constants
+#
+VER="4.7.2"
+
+PREFIX="${ISSM_DIR}/externalpackages/netcdf/install" # Set to location where external package should be installed
+
+# Environment
+#
+export CPPFLAGS="-I${HDF5_ROOT}/include -I${CURL_ROOT}/include -I${ZLIB_ROOT}/include"
+export LDFLAGS="-L${HDF5_ROOT}/lib -L${CURL_ROOT}/lib -L${ZLIB_ROOT}/lib"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/netcdf-c-${VER}.tar.gz" "netcdf-c-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf netcdf-c-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source to 'src' directory
+mv netcdf-c-${VER}/* src
+rm -rf netcdf-c-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-static \
+	--disable-dependency-tracking \
+	--enable-fast-install \
+	--disable-doxygen \
+	--enable-netcdf4 \
+	--disable-filter-testing \
+	--disable-examples \
+	--disable-dap-remote-tests
+
+# Compile, test, and install
+if [ $# -eq 0 ]; then
+	make
+	make check
+	make install
+else
+	make
+	make -j $1 check
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf/install-4.7.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf/install-4.7.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/netcdf/install-4.7.sh	(revision 27955)
@@ -0,0 +1,59 @@
+#!/bin/bash
+set -eu
+
+
+# Dependencies
+# - MPI implementation (for parallel I/O support)
+# - hdf5 (1.8.9 / 1.10.1 or later, for netCDF-4 support)
+# - zlib (1.2.5 or later, for netCDF-4 compression)
+# - curl (7.18.0 or later, for DAP remote access client support)
+#
+# Sources:
+# - https://www.unidata.ucar.edu/software/netcdf/documentation/NUG/getting_and_building_netcdf.html#building
+#
+
+# Constants
+#
+VER="4.7.2"
+
+PREFIX="${ISSM_DIR}/externalpackages/netcdf/install" # Set to location where external package should be installed
+
+# Environment
+#
+export CPPFLAGS="-I${HDF5_ROOT}/include -I${CURL_ROOT}/include -I${ZLIB_ROOT}/include"
+export LDFLAGS="-L${HDF5_ROOT}/lib -L${CURL_ROOT}/lib -L${ZLIB_ROOT}/lib"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/netcdf-c-${VER}.tar.gz" "netcdf-c-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf netcdf-c-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Move source to 'src' directory
+mv netcdf-c-${VER}/* src
+rm -rf netcdf-c-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-static \
+	--disable-dependency-tracking \
+	--enable-fast-install \
+	--disable-doxygen \
+	--disable-testsets \
+	--disable-examples \
+	--enable-netcdf4
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/nose/install-linux64-python2.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/nose/install-linux64-python2.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/nose/install-linux64-python2.sh	(revision 27955)
@@ -0,0 +1,20 @@
+#!/bin/bash
+#Install Python nose module
+
+rm -rf src  install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/nose-1.1.2.tar.gz' 'nose-1.1.2.tar.gz'
+tar -zxvf  nose-1.1.2.tar.gz
+mv nose-1.1.2 src
+rm -rf nose-1.1.2
+
+cd src
+python ./setup.py build
+python ./setup.py install
+
+#to be flagged by jenkins, we create an empty install dir: 
+cd ../
+mkdir install
+touch install/emptyfile
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/nose/install-linux64-python3.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/nose/install-linux64-python3.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/nose/install-linux64-python3.sh	(revision 27955)
@@ -0,0 +1,16 @@
+#!/bin/bash
+#Install Python nose module
+
+rm -rf src  install
+
+svn checkout http://python-nose.googlecode.com/svn/branches/py3k
+mv py3k src
+
+cd src
+python ./setup.py build
+python ./setup.py install
+
+#to be flagged by jenkins, we create an empty install dir: 
+cd ../
+mkdir install
+touch install/emptyfile
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/nose/install-macosx64-python2.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/nose/install-macosx64-python2.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/nose/install-macosx64-python2.sh	(revision 27955)
@@ -0,0 +1,19 @@
+#!/bin/bash
+#Install Python nose module
+
+rm -rf src  install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/nose-1.1.2.tar.gz' 'nose-1.1.2.tar.gz'
+tar -zxvf  nose-1.1.2.tar.gz
+mv nose-1.1.2 src
+rm -rf nose-1.1.2
+
+cd src
+python ./setup.py build
+python ./setup.py install
+
+#to be flagged by jenkins, we create an empty install dir: 
+cd ../
+mkdir install
+touch install/emptyfile
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/nose/install-macosx64-python3.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/nose/install-macosx64-python3.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/nose/install-macosx64-python3.sh	(revision 27955)
@@ -0,0 +1,16 @@
+#!/bin/bash
+#Install Python nose module
+
+rm -rf src  install
+
+svn checkout http://python-nose.googlecode.com/svn/branches/py3k
+mv py3k src
+
+cd src
+python ./setup.py build
+python ./setup.py install
+
+#to be flagged by jenkins, we create an empty install dir: 
+cd ../
+mkdir install
+touch install/emptyfile
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/numpy/README
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/numpy/README	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/numpy/README	(revision 27955)
@@ -0,0 +1,9 @@
+For OSX 10.7 (Lion), the instructions here can be followed:  
+http://www.scipy.org/Installing_SciPy/Mac_OS_X
+
+For OSX 10.6 (Snow Leopard), the scipy folks recommend gcc and g++ version 4.0.
+However, ISSM needs the gfortran version recommended in $ISSM_DIR/externalpackages/gfortran.
+On the webpage listed above, make sure the "export CC" and "export CXX" commands point to the 
+binaries associated with this gfortran version (likely in /usr/local/gfortran/bin by default).
+Once this gfortran is installed, the install script in this directory for Snow Leopard should
+work.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/numpy/install-linux64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/numpy/install-linux64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/numpy/install-linux64.sh	(revision 27955)
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -eu
+
+rm -rf install
+
+export CC="gcc -fPIC"
+export CXX="g++ -fPIC"
+export F77="gfortran -fPIC"
+export FC="gfortran -fPIC"
+export FFLAGS=-ff2c
+
+#clean up
+rm -rf numpy
+rm -rf numpy-1.7.0b2
+
+#download numpy first
+#export GIT_SSL_NO_VERIFY=true 
+#git clone https://github.com/numpy/numpy.git
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/numpy-1.7.0b2.tar.gz' 'numpy-1.7.0b2.tar.gz'
+
+#install numpy
+tar -zxvf numpy-1.7.0b2.tar.gz
+cd numpy-1.7.0b2
+python setup.py build
+python setup.py install
+cd ..
+python -c "import numpy; print 'Installed NumPy', numpy.__version__"
+python -c "import numpy; numpy.test()"
+
+#to be flagged by jenkins, we create an empty install dir: 
+mkdir install
+touch install/emptyfile
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/numpy/install-macosx-lion.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/numpy/install-macosx-lion.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/numpy/install-macosx-lion.sh	(revision 27955)
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -eu
+
+rm -rf install
+
+export CC=gcc
+export CXX=g++
+export FFLAGS=-ff2c
+
+#clean up
+rm -rf numpy
+rm -rf numpy-1.7.0b2
+
+#download numpy first
+#export GIT_SSL_NO_VERIFY=true 
+#git clone https://github.com/numpy/numpy.git
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/numpy-1.7.0b2.tar.gz' 'numpy-1.7.0b2.tar.gz'
+
+#install numpy
+tar -zxvf numpy-1.7.0b2.tar.gz
+cd numpy-1.7.0b2
+python setup.py build
+python setup.py install
+cd ..
+python -c "import numpy; print 'Installed NumPy', numpy.__version__"
+python -c "import numpy; numpy.test()"
+
+#to be flagged by jenkins, we create an empty install dir: 
+mkdir install
+touch install/emptyfile
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/numpy/install-macosx-mlion.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/numpy/install-macosx-mlion.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/numpy/install-macosx-mlion.sh	(revision 27955)
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -eu
+
+rm -rf install
+
+export CC=gcc
+export CXX=g++
+export FFLAGS=-ff2c
+
+#clean up
+rm -rf numpy
+rm -rf numpy-1.7.0b2
+
+#download numpy first
+#export GIT_SSL_NO_VERIFY=true 
+#git clone https://github.com/numpy/numpy.git
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/numpy-1.7.0b2.tar.gz' 'numpy-1.7.0b2.tar.gz'
+
+#install numpy
+tar -zxvf numpy-1.7.0b2.tar.gz
+cd numpy-1.7.0b2
+python setup.py build
+python setup.py install
+cd ..
+python -c "import numpy; print 'Installed NumPy', numpy.__version__"
+python -c "import numpy; numpy.test()"
+
+#to be flagged by jenkins, we create an empty install dir: 
+mkdir install
+touch install/emptyfile
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/numpy/install-macosx-snowleopard.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/numpy/install-macosx-snowleopard.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/numpy/install-macosx-snowleopard.sh	(revision 27955)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+rm -rf install
+
+export F77="/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran"
+export CC="/usr/bin/gcc"
+export CXX="/usr/bin/g++"
+export FFLAGS=-ff2c
+
+#clean up
+rm -rf numpy
+rm -rf numpy-1.7.0b2
+
+#download numpy first
+#export GIT_SSL_NO_VERIFY=true 
+#git clone https://github.com/numpy/numpy.git
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/numpy-1.7.0b2.tar.gz' 'numpy-1.7.0b2.tar.gz'
+
+#install numpy
+tar -zxvf numpy-1.7.0b2.tar.gz
+cd numpy-1.7.0b2
+python setup.py build
+python setup.py install
+cd ..
+python -c "import numpy; print 'Installed NumPy', numpy.__version__"
+python -c "import numpy; numpy.test()"
+
+#to be flagged by jenkins, we create an empty install dir: 
+mkdir install
+touch install/emptyfile
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/octave/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/octave/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/octave/install.sh	(revision 27955)
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install octave-3.6.2 
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/octave-3.6.2.tar.gz" "octave-3.6.2.tar.gz"
+
+#Untar 
+tar -zxvf  octave-3.6.2.tar.gz
+
+#Move octave into install directory
+mv octave-3.6.2/* src
+rm -rf octave-3.6.2
+
+#install
+cd src 
+./configure \
+ --prefix=$ISSM_DIR/externalpackages/octave/install \
+ --disable-readline
+
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/oofem/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/oofem/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/oofem/install.sh	(revision 27955)
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf oofem-2.0
+mkdir src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/oofem-2.0.tar.gz' 'oofem-2.0.tar.gz'
+
+#Untar 
+tar -zxvf  oofem-2.0.tar.gz
+
+#Move oofem into src directory
+mv oofem-2.0/* src
+rm -rf oofem-2.0
+
+# currently a basic serial configuration, see http://www.oofem.org/wiki/doku.php?id=installation 
+# for details on enabling the IML++ and PETSc libraries, and for configuring the parallel version
+cd src
+./configure OOFEM_TARGET=oofem-2.0 --enable-dss
+
+#Compile oofem 
+cd targets/oofem-2.0
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+
+# build verification tools
+cd ../../tools && make all
+
+# testing solver
+cd ../targets/oofem-2.0 && make tests && less ./test_results
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/openanalysis/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/openanalysis/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/openanalysis/install.sh	(revision 27955)
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf openanalysis
+
+#download openanalysis
+svn co http://svn.berlios.de/svnroot/repos/openanalysis/OpenAnalysis/trunk openanalysis
+
+#Configure
+cd openanalysis
+
+make -f Makefile.quick all
+make -f Makefile.quick install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/openblas/install-0.3-linux-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/openblas/install-0.3-linux-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/openblas/install-0.3-linux-static.sh	(revision 27955)
@@ -0,0 +1,44 @@
+#!/bin/bash
+set -eu
+
+
+# NOTE: Full LAPACK implementation is included in OpenBLAS
+#
+
+## Constants
+#
+PKG="OpenBLAS"
+VER="0.3.7"
+
+## Environment
+#
+export CC="${ISSM_DIR}/externalpackages/mpich/install/bin/mpicc"
+export CXX="${ISSM_DIR}/externalpackages/mpich/install/bin/mpicxx"
+export FC="${ISSM_DIR}/externalpackages/mpich/install/bin/mpifort"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/${PKG}-${VER}.tar.gz" "${PKG}-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf ${PKG}-${VER}.tar.gz
+
+# Cleanup
+rm -rf build install src
+mkdir build install install/lib src
+
+# Move source to 'src' directory
+mv ${PKG}-${VER}/* src
+rm -rf ${PKG}-${VER}
+
+# Configure
+#
+cd build
+cmake \
+	../src
+
+# Compile
+make
+
+# Install
+cd ..
+cp ./build/lib/* ./install/lib
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/openssl/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/openssl/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/openssl/install.sh	(revision 27955)
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+
+#Download latest version
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/openssl-0.9.8x.tar.gz' 'openssl-0.9.8x.tar.gz'
+
+#Untar
+tar -xzf openssl-0.9.8x.tar.gz
+mv openssl-0.9.8x src
+mkdir install
+
+#Configure openssl
+cd src
+./config --prefix="$ISSM_DIR/externalpackages/openssl/install" shared
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/packagemaker/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/packagemaker/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/packagemaker/install.sh	(revision 27955)
@@ -0,0 +1,8 @@
+#!/bin/bash
+set -eu
+
+#Erase symlink
+rm -rf install
+
+#Select or create a new simlink
+ln -s /Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/ install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/compil.log
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/compil.log	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/compil.log	(revision 27955)
@@ -0,0 +1,524 @@
+File parmetis-4.0.3.tar.gz already exists and will not be downloaded...
+parmetis-4.0.3/
+parmetis-4.0.3/build/
+parmetis-4.0.3/BUILD.txt
+parmetis-4.0.3/Changelog
+parmetis-4.0.3/CMakeLists.txt
+parmetis-4.0.3/Graphs/
+parmetis-4.0.3/include/
+parmetis-4.0.3/Install.txt
+parmetis-4.0.3/libparmetis/
+parmetis-4.0.3/LICENSE.txt
+parmetis-4.0.3/Makefile
+parmetis-4.0.3/manual/
+parmetis-4.0.3/metis/
+parmetis-4.0.3/programs/
+parmetis-4.0.3/programs/adaptgraph.c
+parmetis-4.0.3/programs/CMakeLists.txt
+parmetis-4.0.3/programs/io.c
+parmetis-4.0.3/programs/mtest.c
+parmetis-4.0.3/programs/otest.c
+parmetis-4.0.3/programs/parmetis.c
+parmetis-4.0.3/programs/parmetisbin.h
+parmetis-4.0.3/programs/plotorder.pl
+parmetis-4.0.3/programs/pometis.c
+parmetis-4.0.3/programs/proto.h
+parmetis-4.0.3/programs/ptest.c
+parmetis-4.0.3/metis/build/
+parmetis-4.0.3/metis/BUILD-Windows.txt
+parmetis-4.0.3/metis/BUILD.txt
+parmetis-4.0.3/metis/Changelog
+parmetis-4.0.3/metis/CMakeLists.txt
+parmetis-4.0.3/metis/GKlib/
+parmetis-4.0.3/metis/include/
+parmetis-4.0.3/metis/Install.txt
+parmetis-4.0.3/metis/libmetis/
+parmetis-4.0.3/metis/LICENSE.txt
+parmetis-4.0.3/metis/Makefile
+parmetis-4.0.3/metis/programs/
+parmetis-4.0.3/metis/vsgen.bat
+parmetis-4.0.3/metis/programs/CMakeLists.txt
+parmetis-4.0.3/metis/programs/cmdline_gpmetis.c
+parmetis-4.0.3/metis/programs/cmdline_m2gmetis.c
+parmetis-4.0.3/metis/programs/cmdline_mpmetis.c
+parmetis-4.0.3/metis/programs/cmdline_ndmetis.c
+parmetis-4.0.3/metis/programs/cmpfillin.c
+parmetis-4.0.3/metis/programs/defs.h
+parmetis-4.0.3/metis/programs/gpmetis.c
+parmetis-4.0.3/metis/programs/graphchk.c
+parmetis-4.0.3/metis/programs/io.c
+parmetis-4.0.3/metis/programs/m2gmetis.c
+parmetis-4.0.3/metis/programs/metisbin.h
+parmetis-4.0.3/metis/programs/mpmetis.c
+parmetis-4.0.3/metis/programs/ndmetis.c
+parmetis-4.0.3/metis/programs/proto.h
+parmetis-4.0.3/metis/programs/smbfactor.c
+parmetis-4.0.3/metis/programs/stat.c
+parmetis-4.0.3/metis/programs/struct.h
+parmetis-4.0.3/metis/libmetis/auxapi.c
+parmetis-4.0.3/metis/libmetis/balance.c
+parmetis-4.0.3/metis/libmetis/bucketsort.c
+parmetis-4.0.3/metis/libmetis/checkgraph.c
+parmetis-4.0.3/metis/libmetis/CMakeLists.txt
+parmetis-4.0.3/metis/libmetis/coarsen.c
+parmetis-4.0.3/metis/libmetis/compress.c
+parmetis-4.0.3/metis/libmetis/contig.c
+parmetis-4.0.3/metis/libmetis/debug.c
+parmetis-4.0.3/metis/libmetis/defs.h
+parmetis-4.0.3/metis/libmetis/fm.c
+parmetis-4.0.3/metis/libmetis/fortran.c
+parmetis-4.0.3/metis/libmetis/frename.c
+parmetis-4.0.3/metis/libmetis/gklib.c
+parmetis-4.0.3/metis/libmetis/gklib_defs.h
+parmetis-4.0.3/metis/libmetis/gklib_rename.h
+parmetis-4.0.3/metis/libmetis/graph.c
+parmetis-4.0.3/metis/libmetis/initpart.c
+parmetis-4.0.3/metis/libmetis/kmetis.c
+parmetis-4.0.3/metis/libmetis/kwayfm.c
+parmetis-4.0.3/metis/libmetis/kwayrefine.c
+parmetis-4.0.3/metis/libmetis/macros.h
+parmetis-4.0.3/metis/libmetis/mcutil.c
+parmetis-4.0.3/metis/libmetis/mesh.c
+parmetis-4.0.3/metis/libmetis/meshpart.c
+parmetis-4.0.3/metis/libmetis/metislib.h
+parmetis-4.0.3/metis/libmetis/minconn.c
+parmetis-4.0.3/metis/libmetis/mincover.c
+parmetis-4.0.3/metis/libmetis/mmd.c
+parmetis-4.0.3/metis/libmetis/ometis.c
+parmetis-4.0.3/metis/libmetis/options.c
+parmetis-4.0.3/metis/libmetis/parmetis.c
+parmetis-4.0.3/metis/libmetis/pmetis.c
+parmetis-4.0.3/metis/libmetis/proto.h
+parmetis-4.0.3/metis/libmetis/refine.c
+parmetis-4.0.3/metis/libmetis/rename.h
+parmetis-4.0.3/metis/libmetis/separator.c
+parmetis-4.0.3/metis/libmetis/sfm.c
+parmetis-4.0.3/metis/libmetis/srefine.c
+parmetis-4.0.3/metis/libmetis/stat.c
+parmetis-4.0.3/metis/libmetis/stdheaders.h
+parmetis-4.0.3/metis/libmetis/struct.h
+parmetis-4.0.3/metis/libmetis/timing.c
+parmetis-4.0.3/metis/libmetis/util.c
+parmetis-4.0.3/metis/libmetis/wspace.c
+parmetis-4.0.3/metis/include/CMakeLists.txt
+parmetis-4.0.3/metis/include/metis.h
+parmetis-4.0.3/metis/GKlib/b64.c
+parmetis-4.0.3/metis/GKlib/blas.c
+parmetis-4.0.3/metis/GKlib/BUILD.txt
+parmetis-4.0.3/metis/GKlib/CMakeLists.txt
+parmetis-4.0.3/metis/GKlib/conf/
+parmetis-4.0.3/metis/GKlib/csr.c
+parmetis-4.0.3/metis/GKlib/error.c
+parmetis-4.0.3/metis/GKlib/evaluate.c
+parmetis-4.0.3/metis/GKlib/fkvkselect.c
+parmetis-4.0.3/metis/GKlib/fs.c
+parmetis-4.0.3/metis/GKlib/getopt.c
+parmetis-4.0.3/metis/GKlib/gk_arch.h
+parmetis-4.0.3/metis/GKlib/gk_defs.h
+parmetis-4.0.3/metis/GKlib/gk_externs.h
+parmetis-4.0.3/metis/GKlib/gk_getopt.h
+parmetis-4.0.3/metis/GKlib/gk_macros.h
+parmetis-4.0.3/metis/GKlib/gk_mkblas.h
+parmetis-4.0.3/metis/GKlib/gk_mkmemory.h
+parmetis-4.0.3/metis/GKlib/gk_mkpqueue.h
+parmetis-4.0.3/metis/GKlib/gk_mkpqueue2.h
+parmetis-4.0.3/metis/GKlib/gk_mkrandom.h
+parmetis-4.0.3/metis/GKlib/gk_mksort.h
+parmetis-4.0.3/metis/GKlib/gk_mkutils.h
+parmetis-4.0.3/metis/GKlib/gk_proto.h
+parmetis-4.0.3/metis/GKlib/gk_struct.h
+parmetis-4.0.3/metis/GKlib/gk_types.h
+parmetis-4.0.3/metis/GKlib/GKlib.h
+parmetis-4.0.3/metis/GKlib/GKlibSystem.cmake
+parmetis-4.0.3/metis/GKlib/gkregex.c
+parmetis-4.0.3/metis/GKlib/gkregex.h
+parmetis-4.0.3/metis/GKlib/graph.c
+parmetis-4.0.3/metis/GKlib/htable.c
+parmetis-4.0.3/metis/GKlib/io.c
+parmetis-4.0.3/metis/GKlib/itemsets.c
+parmetis-4.0.3/metis/GKlib/Makefile
+parmetis-4.0.3/metis/GKlib/mcore.c
+parmetis-4.0.3/metis/GKlib/memory.c
+parmetis-4.0.3/metis/GKlib/ms_inttypes.h
+parmetis-4.0.3/metis/GKlib/ms_stat.h
+parmetis-4.0.3/metis/GKlib/ms_stdint.h
+parmetis-4.0.3/metis/GKlib/omp.c
+parmetis-4.0.3/metis/GKlib/pdb.c
+parmetis-4.0.3/metis/GKlib/pqueue.c
+parmetis-4.0.3/metis/GKlib/random.c
+parmetis-4.0.3/metis/GKlib/rw.c
+parmetis-4.0.3/metis/GKlib/seq.c
+parmetis-4.0.3/metis/GKlib/sort.c
+parmetis-4.0.3/metis/GKlib/string.c
+parmetis-4.0.3/metis/GKlib/test/
+parmetis-4.0.3/metis/GKlib/timers.c
+parmetis-4.0.3/metis/GKlib/tokenizer.c
+parmetis-4.0.3/metis/GKlib/util.c
+parmetis-4.0.3/metis/GKlib/test/CMakeLists.txt
+parmetis-4.0.3/metis/GKlib/test/fis.c
+parmetis-4.0.3/metis/GKlib/test/gkgraph.c
+parmetis-4.0.3/metis/GKlib/test/gksort.c
+parmetis-4.0.3/metis/GKlib/test/Makefile.in.old
+parmetis-4.0.3/metis/GKlib/test/Makefile.old
+parmetis-4.0.3/metis/GKlib/test/rw.c
+parmetis-4.0.3/metis/GKlib/test/strings.c
+parmetis-4.0.3/metis/GKlib/conf/check_thread_storage.c
+parmetis-4.0.3/manual/manual.pdf
+parmetis-4.0.3/libparmetis/akwayfm.c
+parmetis-4.0.3/libparmetis/ametis.c
+parmetis-4.0.3/libparmetis/balancemylink.c
+parmetis-4.0.3/libparmetis/CMakeLists.txt
+parmetis-4.0.3/libparmetis/comm.c
+parmetis-4.0.3/libparmetis/csrmatch.c
+parmetis-4.0.3/libparmetis/ctrl.c
+parmetis-4.0.3/libparmetis/debug.c
+parmetis-4.0.3/libparmetis/defs.h
+parmetis-4.0.3/libparmetis/diffutil.c
+parmetis-4.0.3/libparmetis/frename.c
+parmetis-4.0.3/libparmetis/gkmetis.c
+parmetis-4.0.3/libparmetis/gkmpi.c
+parmetis-4.0.3/libparmetis/graph.c
+parmetis-4.0.3/libparmetis/initbalance.c
+parmetis-4.0.3/libparmetis/initmsection.c
+parmetis-4.0.3/libparmetis/initpart.c
+parmetis-4.0.3/libparmetis/kmetis.c
+parmetis-4.0.3/libparmetis/kwayrefine.c
+parmetis-4.0.3/libparmetis/macros.h
+parmetis-4.0.3/libparmetis/match.c
+parmetis-4.0.3/libparmetis/mdiffusion.c
+parmetis-4.0.3/libparmetis/mesh.c
+parmetis-4.0.3/libparmetis/mmetis.c
+parmetis-4.0.3/libparmetis/move.c
+parmetis-4.0.3/libparmetis/msetup.c
+parmetis-4.0.3/libparmetis/node_refine.c
+parmetis-4.0.3/libparmetis/ometis.c
+parmetis-4.0.3/libparmetis/parmetislib.h
+parmetis-4.0.3/libparmetis/proto.h
+parmetis-4.0.3/libparmetis/pspases.c
+parmetis-4.0.3/libparmetis/redomylink.c
+parmetis-4.0.3/libparmetis/remap.c
+parmetis-4.0.3/libparmetis/rename.h
+parmetis-4.0.3/libparmetis/renumber.c
+parmetis-4.0.3/libparmetis/rmetis.c
+parmetis-4.0.3/libparmetis/selectq.c
+parmetis-4.0.3/libparmetis/serial.c
+parmetis-4.0.3/libparmetis/stat.c
+parmetis-4.0.3/libparmetis/struct.h
+parmetis-4.0.3/libparmetis/timer.c
+parmetis-4.0.3/libparmetis/util.c
+parmetis-4.0.3/libparmetis/wave.c
+parmetis-4.0.3/libparmetis/weird.c
+parmetis-4.0.3/libparmetis/wspace.c
+parmetis-4.0.3/libparmetis/xyzpart.c
+parmetis-4.0.3/include/CMakeLists.txt
+parmetis-4.0.3/include/parmetis.h
+parmetis-4.0.3/Graphs/bricks.hex3d
+parmetis-4.0.3/Graphs/rotor.graph
+parmetis-4.0.3/Graphs/rotor.graph.xyz
+rm -rf build/MSYS_NT-10.0-17763-x86_64
+mkdir -p build/MSYS_NT-10.0-17763-x86_64
+cd build/MSYS_NT-10.0-17763-x86_64 && cmake /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src -DCMAKE_VERBOSE_MAKEFILE=1 -DGKLIB_PATH=/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -DMETIS_PATH=/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install -DLOCAL_MSMPI=1 -DMSMPI_ROOT=/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI -DCMAKE_INSTALL_PREFIX=/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/install -DSHARED=1 -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++
+CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required):
+  Compatibility with CMake < 2.8.12 will be removed from a future version of
+  CMake.
+
+  Update the VERSION argument <min> value or use a ...<max> suffix to tell
+  CMake that the project does not need compatibility with older versions.
+
+
+-- The C compiler identification is GNU 10.2.0
+-- The CXX compiler identification is GNU 10.2.0
+CMake Warning at /usr/share/cmake-3.19.3/Modules/Platform/MSYS.cmake:15 (message):
+  CMake no longer defines WIN32 on MSYS!
+
+  (1) If you are just trying to build this project, ignore this warning or
+  quiet it by setting CMAKE_LEGACY_CYGWIN_WIN32=0 in your environment or in
+  the CMake cache.  If later configuration or build errors occur then this
+  project may have been written under the assumption that MSYS is WIN32.  In
+  that case, set CMAKE_LEGACY_CYGWIN_WIN32=1 instead.
+
+  (2) If you are developing this project, add the line
+
+    set(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required
+
+  at the top of your top-level CMakeLists.txt file or set the minimum
+  required version of CMake to 2.8.4 or higher.  Then teach your project to
+  build on Cygwin without WIN32.
+Call Stack (most recent call first):
+  /usr/share/cmake-3.19.3/Modules/CMakeSystemSpecificInformation.cmake:27 (include)
+  CMakeLists.txt:2 (project)
+
+
+-- Detecting C compiler ABI info
+-- Detecting C compiler ABI info - done
+-- Check for working C compiler: /usr/bin/gcc - skipped
+-- Detecting C compile features
+-- Detecting C compile features - done
+-- Detecting CXX compiler ABI info
+-- Detecting CXX compiler ABI info - done
+-- Check for working CXX compiler: /usr/bin/g++ - skipped
+-- Detecting CXX compile features
+-- Detecting CXX compile features - done
+-- Looking for execinfo.h
+-- Looking for execinfo.h - not found
+-- Looking for getline
+-- Looking for getline - found
+-- checking for thread-local storage - found
+-- Found user-supplied METIS: /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/lib/libmetis.dll
+-- MSMPI: /c/Windows/System32/msmpi.dll
+-- Configuring done
+-- Generating done
+-- Build files have been written to: /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64
+make[1]: warning: -j4 forced in submake: resetting jobserver mode.
+make[1]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+/usr/bin/cmake.exe -S/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src -B/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 --check-build-system CMakeFiles/Makefile.cmake 0
+/usr/bin/cmake.exe -E cmake_progress_start /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/CMakeFiles /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64//CMakeFiles/progress.marks
+make  -f CMakeFiles/Makefile2 all
+make[2]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make  -f libparmetis/CMakeFiles/parmetis.dir/build.make libparmetis/CMakeFiles/parmetis.dir/depend
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 && /usr/bin/cmake.exe -E cmake_depends "Unix Makefiles" /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis/CMakeFiles/parmetis.dir/DependInfo.cmake --color=
+Scanning dependencies of target parmetis
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make  -f libparmetis/CMakeFiles/parmetis.dir/build.make libparmetis/CMakeFiles/parmetis.dir/build
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+[  1%] Building C object libparmetis/CMakeFiles/parmetis.dir/akwayfm.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/akwayfm.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/akwayfm.c
+[  3%] Building C object libparmetis/CMakeFiles/parmetis.dir/ametis.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/ametis.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/ametis.c
+[  5%] Building C object libparmetis/CMakeFiles/parmetis.dir/balancemylink.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/balancemylink.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/balancemylink.c
+[  7%] Building C object libparmetis/CMakeFiles/parmetis.dir/comm.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/comm.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/comm.c
+/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/balancemylink.c: In function ‘libparmetis__BalanceMyLink’:
+/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/balancemylink.c:324:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
+  324 |     if (where[i] != home[i])
+      |     ^~
+/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/balancemylink.c:327:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
+  327 |       for (j=xadj[i]; j<xadj[i+1]; j++) {
+      |       ^~~
+[  9%] Building C object libparmetis/CMakeFiles/parmetis.dir/csrmatch.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/csrmatch.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/csrmatch.c
+[ 11%] Building C object libparmetis/CMakeFiles/parmetis.dir/ctrl.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/ctrl.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/ctrl.c
+[ 12%] Building C object libparmetis/CMakeFiles/parmetis.dir/debug.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/debug.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/debug.c
+[ 14%] Building C object libparmetis/CMakeFiles/parmetis.dir/diffutil.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/diffutil.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/diffutil.c
+[ 16%] Building C object libparmetis/CMakeFiles/parmetis.dir/frename.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/frename.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/frename.c
+[ 18%] Building C object libparmetis/CMakeFiles/parmetis.dir/gkmetis.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/gkmetis.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/gkmetis.c
+[ 20%] Building C object libparmetis/CMakeFiles/parmetis.dir/gkmpi.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/gkmpi.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/gkmpi.c
+[ 22%] Building C object libparmetis/CMakeFiles/parmetis.dir/graph.c.o
+[ 24%] Building C object libparmetis/CMakeFiles/parmetis.dir/initbalance.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/graph.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/graph.c
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/initbalance.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/initbalance.c
+[ 25%] Building C object libparmetis/CMakeFiles/parmetis.dir/initmsection.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/initmsection.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/initmsection.c
+[ 27%] Building C object libparmetis/CMakeFiles/parmetis.dir/initpart.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/initpart.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/initpart.c
+[ 29%] Building C object libparmetis/CMakeFiles/parmetis.dir/kmetis.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/kmetis.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/kmetis.c
+[ 31%] Building C object libparmetis/CMakeFiles/parmetis.dir/kwayrefine.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/kwayrefine.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/kwayrefine.c
+[ 33%] Building C object libparmetis/CMakeFiles/parmetis.dir/match.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/match.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/match.c
+[ 35%] Building C object libparmetis/CMakeFiles/parmetis.dir/mdiffusion.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/mdiffusion.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/mdiffusion.c
+[ 37%] Building C object libparmetis/CMakeFiles/parmetis.dir/mesh.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/mesh.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/mesh.c
+[ 38%] Building C object libparmetis/CMakeFiles/parmetis.dir/mmetis.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/mmetis.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/mmetis.c
+[ 40%] Building C object libparmetis/CMakeFiles/parmetis.dir/move.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/move.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/move.c
+[ 42%] Building C object libparmetis/CMakeFiles/parmetis.dir/msetup.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/msetup.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/msetup.c
+[ 44%] Building C object libparmetis/CMakeFiles/parmetis.dir/node_refine.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/node_refine.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/node_refine.c
+[ 46%] Building C object libparmetis/CMakeFiles/parmetis.dir/ometis.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/ometis.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/ometis.c
+[ 48%] Building C object libparmetis/CMakeFiles/parmetis.dir/pspases.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/pspases.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/pspases.c
+[ 50%] Building C object libparmetis/CMakeFiles/parmetis.dir/redomylink.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/redomylink.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/redomylink.c
+[ 51%] Building C object libparmetis/CMakeFiles/parmetis.dir/remap.c.o
+[ 53%] Building C object libparmetis/CMakeFiles/parmetis.dir/renumber.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/renumber.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/renumber.c
+[ 55%] Building C object libparmetis/CMakeFiles/parmetis.dir/rmetis.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/remap.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/remap.c
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/rmetis.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/rmetis.c
+[ 57%] Building C object libparmetis/CMakeFiles/parmetis.dir/selectq.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/selectq.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/selectq.c
+[ 59%] Building C object libparmetis/CMakeFiles/parmetis.dir/serial.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/serial.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/serial.c
+[ 61%] Building C object libparmetis/CMakeFiles/parmetis.dir/stat.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/stat.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/stat.c
+[ 62%] Building C object libparmetis/CMakeFiles/parmetis.dir/timer.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/timer.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/timer.c
+[ 64%] Building C object libparmetis/CMakeFiles/parmetis.dir/util.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/util.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/util.c
+[ 66%] Building C object libparmetis/CMakeFiles/parmetis.dir/wave.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/wave.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/wave.c
+[ 68%] Building C object libparmetis/CMakeFiles/parmetis.dir/weird.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/weird.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/weird.c
+/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/wave.c: In function ‘libparmetis__WavefrontDiffusion’:
+/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/wave.c:253:1: warning: label ‘CleanUpAndExit’ defined but not used [-Wunused-label]
+  253 | CleanUpAndExit:
+      | ^~~~~~~~~~~~~~
+[ 70%] Building C object libparmetis/CMakeFiles/parmetis.dir/wspace.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/wspace.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/wspace.c
+[ 72%] Building C object libparmetis/CMakeFiles/parmetis.dir/xyzpart.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/gcc -Dparmetis_EXPORTS -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis.dir/xyzpart.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis/xyzpart.c
+[ 74%] Linking C shared library msys-parmetis.dll
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis && /usr/bin/cmake.exe -E cmake_link_script CMakeFiles/parmetis.dir/link.txt --verbose=1
+/usr/bin/gcc  -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -shared -Wl,--enable-auto-import -o msys-parmetis.dll -Wl,--out-implib,libparmetis.dll.a -Wl,--major-image-version,0,--minor-image-version,0 CMakeFiles/parmetis.dir/akwayfm.c.o CMakeFiles/parmetis.dir/ametis.c.o CMakeFiles/parmetis.dir/balancemylink.c.o CMakeFiles/parmetis.dir/comm.c.o CMakeFiles/parmetis.dir/csrmatch.c.o CMakeFiles/parmetis.dir/ctrl.c.o CMakeFiles/parmetis.dir/debug.c.o CMakeFiles/parmetis.dir/diffutil.c.o CMakeFiles/parmetis.dir/frename.c.o CMakeFiles/parmetis.dir/gkmetis.c.o CMakeFiles/parmetis.dir/gkmpi.c.o CMakeFiles/parmetis.dir/graph.c.o CMakeFiles/parmetis.dir/initbalance.c.o CMakeFiles/parmetis.dir/initmsection.c.o CMakeFiles/parmetis.dir/initpart.c.o CMakeFiles/parmetis.dir/kmetis.c.o CMakeFiles/parmetis.dir/kwayrefine.c.o CMakeFiles/parmetis.dir/match.c.o CMakeFiles/parmetis.dir/mdiffusion.c.o CMakeFiles/parmetis.dir/mesh.c.o CMakeFiles/parmetis.dir/mmetis.c.o CMakeFiles/parmetis.dir/move.c.o CMakeFiles/parmetis.dir/msetup.c.o CMakeFiles/parmetis.dir/node_refine.c.o CMakeFiles/parmetis.dir/ometis.c.o CMakeFiles/parmetis.dir/pspases.c.o CMakeFiles/parmetis.dir/redomylink.c.o CMakeFiles/parmetis.dir/remap.c.o CMakeFiles/parmetis.dir/renumber.c.o CMakeFiles/parmetis.dir/rmetis.c.o CMakeFiles/parmetis.dir/selectq.c.o CMakeFiles/parmetis.dir/serial.c.o CMakeFiles/parmetis.dir/stat.c.o CMakeFiles/parmetis.dir/timer.c.o CMakeFiles/parmetis.dir/util.c.o CMakeFiles/parmetis.dir/wave.c.o CMakeFiles/parmetis.dir/weird.c.o CMakeFiles/parmetis.dir/wspace.c.o CMakeFiles/parmetis.dir/xyzpart.c.o  -lmetis /c/Windows/System32/msmpi.dll 
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+[ 74%] Built target parmetis
+make  -f programs/CMakeFiles/pometis.dir/build.make programs/CMakeFiles/pometis.dir/depend
+make  -f programs/CMakeFiles/parmetis_prog.dir/build.make programs/CMakeFiles/parmetis_prog.dir/depend
+make  -f programs/CMakeFiles/mtest.dir/build.make programs/CMakeFiles/mtest.dir/depend
+make  -f programs/CMakeFiles/ptest.dir/build.make programs/CMakeFiles/ptest.dir/depend
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 && /usr/bin/cmake.exe -E cmake_depends "Unix Makefiles" /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs/CMakeFiles/pometis.dir/DependInfo.cmake --color=
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 && /usr/bin/cmake.exe -E cmake_depends "Unix Makefiles" /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs/CMakeFiles/parmetis_prog.dir/DependInfo.cmake --color=
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 && /usr/bin/cmake.exe -E cmake_depends "Unix Makefiles" /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs/CMakeFiles/mtest.dir/DependInfo.cmake --color=
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 && /usr/bin/cmake.exe -E cmake_depends "Unix Makefiles" /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs/CMakeFiles/ptest.dir/DependInfo.cmake --color=
+Scanning dependencies of target pometis
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+Scanning dependencies of target mtest
+make  -f programs/CMakeFiles/pometis.dir/build.make programs/CMakeFiles/pometis.dir/build
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+Scanning dependencies of target parmetis_prog
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make  -f programs/CMakeFiles/mtest.dir/build.make programs/CMakeFiles/mtest.dir/build
+Scanning dependencies of target ptest
+make  -f programs/CMakeFiles/parmetis_prog.dir/build.make programs/CMakeFiles/parmetis_prog.dir/build
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make  -f programs/CMakeFiles/ptest.dir/build.make programs/CMakeFiles/ptest.dir/build
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+[ 75%] Building C object programs/CMakeFiles/pometis.dir/pometis.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs && /usr/bin/gcc  -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/pometis.dir/pometis.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/pometis.c
+[ 77%] Building C object programs/CMakeFiles/mtest.dir/mtest.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs && /usr/bin/gcc  -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/mtest.dir/mtest.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/mtest.c
+[ 79%] Building C object programs/CMakeFiles/ptest.dir/ptest.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs && /usr/bin/gcc  -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/ptest.dir/ptest.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/ptest.c
+[ 81%] Building C object programs/CMakeFiles/parmetis_prog.dir/parmetis.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs && /usr/bin/gcc  -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis_prog.dir/parmetis.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/parmetis.c
+/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/ptest.c: In function ‘TestParMetis_GPart’:
+/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/ptest.c:166:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
+  166 |     if (mype == 0)
+      |     ^~
+/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/ptest.c:169:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
+  169 |       ParMETIS_V3_PartGeom(graph.vtxdist, &ndims, xyz, part, &comm);
+      |       ^~~~~~~~~~~~~~~~~~~~
+[ 83%] Building C object programs/CMakeFiles/pometis.dir/io.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs && /usr/bin/gcc  -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/pometis.dir/io.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/io.c
+[ 85%] Building C object programs/CMakeFiles/mtest.dir/io.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs && /usr/bin/gcc  -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/mtest.dir/io.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/io.c
+[ 87%] Building C object programs/CMakeFiles/parmetis_prog.dir/io.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs && /usr/bin/gcc  -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis_prog.dir/io.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/io.c
+[ 88%] Building C object programs/CMakeFiles/ptest.dir/io.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs && /usr/bin/gcc  -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/ptest.dir/io.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/io.c
+[ 90%] Linking C executable pometis.exe
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs && /usr/bin/cmake.exe -E cmake_link_script CMakeFiles/pometis.dir/link.txt --verbose=1
+/usr/bin/gcc  -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -Wl,--enable-auto-import CMakeFiles/pometis.dir/pometis.c.o CMakeFiles/pometis.dir/io.c.o -o pometis.exe -Wl,--out-implib,libpometis.dll.a -Wl,--major-image-version,0,--minor-image-version,0  ../libparmetis/libparmetis.dll.a -lmetis /c/Windows/System32/msmpi.dll 
+[ 92%] Linking C executable mtest.exe
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs && /usr/bin/cmake.exe -E cmake_link_script CMakeFiles/mtest.dir/link.txt --verbose=1
+/usr/bin/gcc  -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -Wl,--enable-auto-import CMakeFiles/mtest.dir/mtest.c.o CMakeFiles/mtest.dir/io.c.o -o mtest.exe -Wl,--out-implib,libmtest.dll.a -Wl,--major-image-version,0,--minor-image-version,0  ../libparmetis/libparmetis.dll.a -lmetis /c/Windows/System32/msmpi.dll 
+[ 94%] Building C object programs/CMakeFiles/parmetis_prog.dir/adaptgraph.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs && /usr/bin/gcc  -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/parmetis_prog.dir/adaptgraph.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/adaptgraph.c
+[ 96%] Building C object programs/CMakeFiles/ptest.dir/adaptgraph.c.o
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs && /usr/bin/gcc  -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/GKlib -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/metis/install/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/MSMPI/include -I/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -o CMakeFiles/ptest.dir/adaptgraph.c.o -c /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs/adaptgraph.c
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+[ 96%] Built target pometis
+[ 96%] Built target mtest
+[ 98%] Linking C executable parmetis.exe
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs && /usr/bin/cmake.exe -E cmake_link_script CMakeFiles/parmetis_prog.dir/link.txt --verbose=1
+/usr/bin/gcc  -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -Wl,--enable-auto-import CMakeFiles/parmetis_prog.dir/parmetis.c.o CMakeFiles/parmetis_prog.dir/io.c.o CMakeFiles/parmetis_prog.dir/adaptgraph.c.o -o parmetis.exe -Wl,--out-implib,libparmetis.dll.a -Wl,--major-image-version,0,--minor-image-version,0  ../libparmetis/libparmetis.dll.a -lmetis /c/Windows/System32/msmpi.dll 
+[100%] Linking C executable ptest.exe
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs && /usr/bin/cmake.exe -E cmake_link_script CMakeFiles/ptest.dir/link.txt --verbose=1
+/usr/bin/gcc  -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_GETLINE -O3 -Wl,--enable-auto-import CMakeFiles/ptest.dir/ptest.c.o CMakeFiles/ptest.dir/io.c.o CMakeFiles/ptest.dir/adaptgraph.c.o -o ptest.exe -Wl,--out-implib,libptest.dll.a -Wl,--major-image-version,0,--minor-image-version,0  ../libparmetis/libparmetis.dll.a -lmetis /c/Windows/System32/msmpi.dll 
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+[100%] Built target parmetis_prog
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+[100%] Built target ptest
+make[2]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+/usr/bin/cmake.exe -E cmake_progress_start /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/CMakeFiles 0
+make[1]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make[1]: warning: -j4 forced in submake: resetting jobserver mode.
+make[1]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+/usr/bin/cmake.exe -S/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src -B/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 --check-build-system CMakeFiles/Makefile.cmake 0
+/usr/bin/cmake.exe -E cmake_progress_start /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/CMakeFiles /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64//CMakeFiles/progress.marks
+make  -f CMakeFiles/Makefile2 all
+make[2]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make  -f libparmetis/CMakeFiles/parmetis.dir/build.make libparmetis/CMakeFiles/parmetis.dir/depend
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 && /usr/bin/cmake.exe -E cmake_depends "Unix Makefiles" /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/libparmetis /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/libparmetis/CMakeFiles/parmetis.dir/DependInfo.cmake --color=
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make  -f libparmetis/CMakeFiles/parmetis.dir/build.make libparmetis/CMakeFiles/parmetis.dir/build
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make[3]: Nothing to be done for 'libparmetis/CMakeFiles/parmetis.dir/build'.
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+[ 74%] Built target parmetis
+make  -f programs/CMakeFiles/pometis.dir/build.make programs/CMakeFiles/pometis.dir/depend
+make  -f programs/CMakeFiles/parmetis_prog.dir/build.make programs/CMakeFiles/parmetis_prog.dir/depend
+make  -f programs/CMakeFiles/mtest.dir/build.make programs/CMakeFiles/mtest.dir/depend
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 && /usr/bin/cmake.exe -E cmake_depends "Unix Makefiles" /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs/CMakeFiles/pometis.dir/DependInfo.cmake --color=
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 && /usr/bin/cmake.exe -E cmake_depends "Unix Makefiles" /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs/CMakeFiles/parmetis_prog.dir/DependInfo.cmake --color=
+make  -f programs/CMakeFiles/ptest.dir/build.make programs/CMakeFiles/ptest.dir/depend
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 && /usr/bin/cmake.exe -E cmake_depends "Unix Makefiles" /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs/CMakeFiles/ptest.dir/DependInfo.cmake --color=
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+cd /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 && /usr/bin/cmake.exe -E cmake_depends "Unix Makefiles" /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/programs /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64 /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/programs/CMakeFiles/mtest.dir/DependInfo.cmake --color=
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make  -f programs/CMakeFiles/parmetis_prog.dir/build.make programs/CMakeFiles/parmetis_prog.dir/build
+make  -f programs/CMakeFiles/pometis.dir/build.make programs/CMakeFiles/pometis.dir/build
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make[3]: Nothing to be done for 'programs/CMakeFiles/parmetis_prog.dir/build'.
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make[3]: Nothing to be done for 'programs/CMakeFiles/pometis.dir/build'.
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make  -f programs/CMakeFiles/ptest.dir/build.make programs/CMakeFiles/ptest.dir/build
+make  -f programs/CMakeFiles/mtest.dir/build.make programs/CMakeFiles/mtest.dir/build
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make[3]: Nothing to be done for 'programs/CMakeFiles/ptest.dir/build'.
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+[ 79%] Built target pometis
+[ 87%] Built target parmetis_prog
+make[3]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make[3]: Nothing to be done for 'programs/CMakeFiles/mtest.dir/build'.
+make[3]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+[ 94%] Built target ptest
+[100%] Built target mtest
+make[2]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+/usr/bin/cmake.exe -E cmake_progress_start /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64/CMakeFiles 0
+make  -f CMakeFiles/Makefile2 preinstall
+make[2]: Entering directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+make[2]: Nothing to be done for 'preinstall'.
+make[2]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
+Install the project...
+/usr/bin/cmake.exe -P cmake_install.cmake
+-- Install configuration: ""
+-- Installing: /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/install/include/parmetis.h
+-- Installing: /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/install/lib/libparmetis.dll.a
+-- Installing: /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/install/lib/msys-parmetis.dll
+-- Installing: /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/install/bin/ptest.exe
+-- Installing: /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/install/bin/mtest.exe
+-- Installing: /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/install/bin/parmetis.exe
+-- Installing: /c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/install/bin/pometis.exe
+make[1]: Leaving directory '/c/Users/jdq/Repos/issm/issm/trunk-jpl-working/externalpackages/parmetis/src/build/MSYS_NT-10.0-17763-x86_64'
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/configs/4.0/win/msys2/CMakeLists.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/configs/4.0/win/msys2/CMakeLists.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/configs/4.0/win/msys2/CMakeLists.txt	(revision 27955)
@@ -0,0 +1,45 @@
+cmake_minimum_required(VERSION 2.8)
+project(ParMETIS)
+
+set(GKLIB_PATH METIS/GKlib CACHE PATH "path to GKlib")
+set(METIS_PATH METIS CACHE PATH "path to METIS")
+
+# Symlink ./metis to wherever metis is. This allows files to be
+# included from metis/libmetis/.
+#execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${METIS_PATH} metis)
+
+# Search for MPI.
+# GK commented this out as it seems to be creating problems
+# include(FindMPI)
+# if(NOT MPI_FOUND)
+#   message(FATAL_ERROR "mpi is not found")
+# endif()
+# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MPI_COMPILE_FLAGS}")
+
+# Prepare libraries.
+if(SHARED)
+  set(ParMETIS_LIBRARY_TYPE SHARED)
+else()
+  set(ParMETIS_LIBRARY_TYPE STATIC)
+endif()
+
+include(${GKLIB_PATH}/GKlibSystem.cmake)
+
+# List of paths that the compiler will search for header files.
+# i.e., the -I equivalent
+include_directories(include)
+include_directories(${GKLIB_PATH})
+include_directories(${METIS_PATH}/include)
+
+if(LOCAL_MSMPI)
+	include_directories(${MSMPI_ROOT}/include)
+endif()
+
+# List of directories that cmake will look for CMakeLists.txt
+#add_subdirectory(${METIS_PATH}/libmetis ${CMAKE_BINARY_DIR}/libmetis)
+add_subdirectory(include)
+add_subdirectory(libparmetis)
+add_subdirectory(programs)
+
+# This is for testing during development and is not being distributed
+#add_subdirectory(test)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/configs/4.0/win/msys2/Makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/configs/4.0/win/msys2/Makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/configs/4.0/win/msys2/Makefile	(revision 27955)
@@ -0,0 +1,133 @@
+# Configuration options.
+gdb              = not-set
+assert           = not-set
+assert2          = not-set
+debug            = not-set
+openmp           = not-set
+prefix           = not-set
+gklib_path       = not-set
+metis_path       = not-set
+msmpi_root       = not-set
+shared           = not-set
+cc               = mpicc
+cxx              = mpicxx
+ar               = not-set
+gcc-ar           = not-set
+ranlib           = not-set
+gcc-ranlib       = not-set
+linker           = not-set
+nm               = not-set
+objcopy          = not-set
+objdump          = not-set
+rc               = not-set
+strip            = not-set
+
+
+# Basically proxies everything to the builddir cmake.
+
+PKGNAME = parmetis-4.0.3
+
+cputype = $(shell uname -m | sed "s/\\ /_/g")
+systype = $(shell uname -s)
+
+BUILDDIR = build/$(systype)-$(cputype)
+
+# Process configuration options.
+CONFIG_FLAGS = -DCMAKE_VERBOSE_MAKEFILE=1
+ifeq ($(gklib_path), not-set)
+    gklib_path = metis/GKlib
+endif
+ifeq ($(metis_path), not-set)
+    metis_path = metis
+endif
+CONFIG_FLAGS += -DGKLIB_PATH=$(abspath $(gklib_path)) -DMETIS_PATH=$(abspath $(metis_path))
+ifneq ($(local_msmpi), not-set)
+    CONFIG_FLAGS += -DLOCAL_MSMPI=1 -DMSMPI_ROOT=$(abspath $(msmpi_root))
+endif
+ifneq ($(gdb), not-set)
+    CONFIG_FLAGS += -DGDB=$(gdb)
+endif
+ifneq ($(assert), not-set)
+    CONFIG_FLAGS += -DASSERT=$(assert)
+endif
+ifneq ($(assert2), not-set)
+    CONFIG_FLAGS += -DASSERT2=$(assert2)
+endif
+ifneq ($(debug), not-set)
+    CONFIG_FLAGS += -DDEBUG=$(debug)
+endif
+ifneq ($(openmp), not-set)
+    CONFIG_FLAGS += -DOPENMP=$(openmp)
+endif
+ifneq ($(prefix), not-set)
+    CONFIG_FLAGS += -DCMAKE_INSTALL_PREFIX=$(prefix)
+endif
+ifneq ($(shared), not-set)
+    CONFIG_FLAGS += -DSHARED=1
+endif
+ifneq ($(cc), not-set)
+    CONFIG_FLAGS += -DCMAKE_C_COMPILER=$(cc)
+endif
+ifneq ($(cxx), not-set)
+    CONFIG_FLAGS += -DCMAKE_CXX_COMPILER=$(cxx)
+endif
+ifneq ($(ar), not-set)
+    CONFIG_FLAGS += -DCMAKE_AR=$(ar)
+endif
+ifneq ($(gcc-ar), not-set)
+    CONFIG_FLAGS += -DCMAKE_C_COMPILER_AR=$(gcc-ar) -DCMAKE_CXX_COMPILER_AR=$(gcc-ar)
+endif
+ifneq ($(ranlib), not-set)
+    CONFIG_FLAGS += -DCMAKE_RANLIB=$(ranlib)
+endif
+ifneq ($(gcc-ranlib), not-set)
+    CONFIG_FLAGS += -DCMAKE_C_COMPILER_RANLIB=$(gcc-ranlib) -DCMAKE_CXX_COMPILER_RANLIB=$(gcc-ranlib)
+endif
+ifneq ($(linker), not-set)
+    CONFIG_FLAGS += -DCMAKE_LINKER=$(linker)
+endif
+ifneq ($(nm), not-set)
+    CONFIG_FLAGS += -DCMAKE_NM=$(nm)
+endif
+ifneq ($(objcopy), not-set)
+    CONFIG_FLAGS += -DCMAKE_OBJCOPY=$(objcopy)
+endif
+ifneq ($(objdump), not-set)
+    CONFIG_FLAGS += -DCMAKE_OBJDUMP=$(objdump)
+endif
+ifneq ($(rc), not-set)
+    CONFIG_FLAGS += -DCMAKE_RC_COMPILER=$(rc)
+endif
+ifneq ($(strip), not-set)
+    CONFIG_FLAGS += -DCMAKE_STRIP=$(strip)
+endif
+
+define run-config
+mkdir -p $(BUILDDIR)
+cd $(BUILDDIR) && cmake $(CURDIR) $(CONFIG_FLAGS)
+endef
+
+all clean install:
+	@if [ ! -f $(BUILDDIR)/Makefile ]; then \
+		more BUILD.txt; \
+	else \
+	  	make -C $(BUILDDIR) $@ $(MAKEFLAGS); \
+	fi
+
+uninstall:
+	xargs rm < $(BUILDDIR)/install_manifest.txt
+
+config: distclean
+	$(run-config)
+
+distclean:
+	rm -rf $(BUILDDIR)
+
+remake:
+	find . -name CMakeLists.txt -exec touch {} ';'
+
+dist:
+	util/mkdist.sh $(PKGNAME)
+
+
+.PHONY: config distclean dist all clean install uninstall remake
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/configs/4.0/win/msys2/gcc/libparmetis/CMakeLists.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/configs/4.0/win/msys2/gcc/libparmetis/CMakeLists.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/configs/4.0/win/msys2/gcc/libparmetis/CMakeLists.txt	(revision 27955)
@@ -0,0 +1,32 @@
+# Include directories for library code.
+include_directories(.)
+# Find sources.
+file(GLOB parmetis_sources *.c)
+# Create libparmetis
+add_library(parmetis ${ParMETIS_LIBRARY_TYPE} ${parmetis_sources})
+
+# Link with metis and MPI libraries.
+set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "msys-" "")
+set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll" ".so")
+find_library(METIS metis PATHS ${METIS_PATH}/lib)
+if(METIS)
+	message("-- Found user-supplied METIS: ${METIS}")
+	target_link_libraries(parmetis ${METIS})
+else(METIS)
+	target_link_libraries(parmetis metis)
+endif()
+
+if(LOCAL_MSMPI)
+	# Add local MS-MPI libraries
+	find_library(MSMPI msmpi PATHS ${MSMPI_ROOT}/lib)
+	message(STATUS "MSMPI: ${MSMPI}")
+	target_link_libraries(parmetis ${MSMPI})
+else(LOCAL_MSMPI)
+	target_link_libraries(parmetis ${MPI_LIBRARIES})
+	set_target_properties(parmetis PROPERTIES LINK_FLAGS "${MPI_LINK_FLAGS}")
+endif()
+
+install(TARGETS parmetis
+  LIBRARY DESTINATION lib
+  RUNTIME DESTINATION lib
+  ARCHIVE DESTINATION lib)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/configs/4.0/win/msys2/include/parmetis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/configs/4.0/win/msys2/include/parmetis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/configs/4.0/win/msys2/include/parmetis.h	(revision 27955)
@@ -0,0 +1,159 @@
+/*
+ * Copyright 1997-2003, Regents of the University of Minnesota
+ *
+ * parmetis.h
+ *
+ * This file contains function prototypes and constrant definitions for 
+ * ParMETIS
+ *
+ * Started 7/21/03
+ * George
+ *
+ */
+
+#ifndef __parmetis_h__
+#define __parmetis_h__
+
+#include <mpi.h>
+#include <metis.h>
+
+#if IDXTYPEWIDTH == 32
+  /*#define IDX_T         MPI_INT32_T */
+  #define IDX_T         MPI_INT
+  #define KEEP_BIT      0x40000000L
+#elif IDXTYPEWIDTH == 64
+  /*#define IDX_T         MPI_INT64_T */
+  #define IDX_T         MPI_LONG_LONG_INT
+  #define KEEP_BIT      0x4000000000000000LL
+#else
+  #error "Incorrect user-supplied value fo IDXTYPEWIDTH"
+#endif
+
+
+#if REALTYPEWIDTH == 32
+  #define REAL_T        MPI_FLOAT
+#elif REALTYPEWIDTH == 64
+  #define REAL_T        MPI_DOUBLE
+#else
+  #error "Incorrect user-supplied value fo REALTYPEWIDTH"
+#endif
+
+
+
+/*************************************************************************
+* Constants 
+**************************************************************************/
+#define PARMETIS_MAJOR_VERSION        4
+#define PARMETIS_MINOR_VERSION        0
+#define PARMETIS_SUBMINOR_VERSION     3
+
+
+/*************************************************************************
+* Function prototypes
+**************************************************************************/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*-------------------------------------------------------------------
+* API Introduced with Release 3.0 (current API) 
+*--------------------------------------------------------------------*/
+int __cdecl ParMETIS_V3_PartKway(
+             idx_t *vtxdist, idx_t *xadj, idx_t *adjncy, idx_t *vwgt, 
+	     idx_t *adjwgt, idx_t *wgtflag, idx_t *numflag, idx_t *ncon, idx_t *nparts, 
+	     real_t *tpwgts, real_t *ubvec, idx_t *options, idx_t *edgecut, idx_t *part, 
+	     MPI_Comm *comm);
+
+int __cdecl ParMETIS_V3_PartGeomKway(
+             idx_t *vtxdist, idx_t *xadj, idx_t *adjncy, idx_t *vwgt, 
+	     idx_t *adjwgt, idx_t *wgtflag, idx_t *numflag, idx_t *ndims, real_t *xyz, 
+	     idx_t *ncon, idx_t *nparts, real_t *tpwgts, real_t *ubvec, idx_t *options, 
+	     idx_t *edgecut, idx_t *part, MPI_Comm *comm);
+
+int __cdecl ParMETIS_V3_PartGeom(
+             idx_t *vtxdist, idx_t *ndims, real_t *xyz, idx_t *part, MPI_Comm *comm);
+
+int __cdecl ParMETIS_V3_RefineKway(
+             idx_t *vtxdist, idx_t *xadj, idx_t *adjncy, idx_t *vwgt, 
+	     idx_t *adjwgt, idx_t *wgtflag, idx_t *numflag, idx_t *ncon, idx_t *nparts, 
+	     real_t *tpwgts, real_t *ubvec, idx_t *options, idx_t *edgecut, 
+	     idx_t *part, MPI_Comm *comm);
+
+int __cdecl ParMETIS_V3_AdaptiveRepart(
+             idx_t *vtxdist, idx_t *xadj, idx_t *adjncy, idx_t *vwgt, 
+	     idx_t *vsize, idx_t *adjwgt, idx_t *wgtflag, idx_t *numflag, idx_t *ncon, 
+	     idx_t *nparts, real_t *tpwgts, real_t *ubvec, real_t *ipc2redist, 
+	     idx_t *options, idx_t *edgecut, idx_t *part, MPI_Comm *comm);
+
+int __cdecl ParMETIS_V3_Mesh2Dual(
+             idx_t *elmdist, idx_t *eptr, idx_t *eind, idx_t *numflag, 
+	     idx_t *ncommonnodes, idx_t **xadj, idx_t **adjncy, MPI_Comm *comm);
+
+int __cdecl ParMETIS_V3_PartMeshKway(
+             idx_t *elmdist, idx_t *eptr, idx_t *eind, idx_t *elmwgt, 
+	     idx_t *wgtflag, idx_t *numflag, idx_t *ncon, idx_t *ncommonnodes, idx_t *nparts, 
+	     real_t *tpwgts, real_t *ubvec, idx_t *options, idx_t *edgecut, idx_t *part, 
+	     MPI_Comm *comm);
+
+int __cdecl ParMETIS_V3_NodeND(
+             idx_t *vtxdist, idx_t *xadj, idx_t *adjncy, idx_t *numflag, 
+	     idx_t *options, idx_t *order, idx_t *sizes, MPI_Comm *comm);
+
+int __cdecl ParMETIS_V32_NodeND(
+             idx_t *vtxdist, idx_t *xadj, idx_t *adjncy, idx_t *vwgt,
+             idx_t *numflag, idx_t *mtype, idx_t *rtype, idx_t *p_nseps, idx_t *s_nseps,
+             real_t *ubfrac, idx_t *seed, idx_t *dbglvl, idx_t *order, 
+             idx_t *sizes, MPI_Comm *comm);
+
+int __cdecl ParMETIS_SerialNodeND(
+             idx_t *vtxdist, idx_t *xadj, idx_t *adjncy, idx_t *numflag, 
+             idx_t *options, idx_t *order, idx_t *sizes, MPI_Comm *comm);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/*------------------------------------------------------------------------
+* Enum type definitions 
+*-------------------------------------------------------------------------*/
+/*! Operation type codes */
+typedef enum {
+  PARMETIS_OP_KMETIS,
+  PARMETIS_OP_GKMETIS,
+  PARMETIS_OP_GMETIS,
+  PARMETIS_OP_RMETIS,
+  PARMETIS_OP_AMETIS,
+  PARMETIS_OP_OMETIS,
+  PARMETIS_OP_M2DUAL,
+  PARMETIS_OP_MKMETIS
+} pmoptype_et;
+
+
+/*************************************************************************
+* Various constants used for the different parameters
+**************************************************************************/
+/* Matching types */
+#define PARMETIS_MTYPE_LOCAL     1    /* Restrict matching to within processor vertices */
+#define PARMETIS_MTYPE_GLOBAL    2    /* Remote vertices can be matched */
+
+/* Separator refinement types */
+#define PARMETIS_SRTYPE_GREEDY    1    /* Vertices are visted from highest to lowest gain */
+#define PARMETIS_SRTYPE_2PHASE    2    /* Separators are refined in a two-phase fashion using
+                                          PARMETIS_SRTYPE_GREEDY for the 2nd phase */
+
+/* Coupling types for ParMETIS_V3_RefineKway & ParMETIS_V3_AdaptiveRepart */
+#define PARMETIS_PSR_COUPLED    1    /* # of partitions == # of processors */
+#define PARMETIS_PSR_UNCOUPLED  2    /* # of partitions != # of processors */
+
+
+/* Debug levels (fields should be ORed) */
+#define PARMETIS_DBGLVL_TIME        1      /* Perform timing analysis */
+#define PARMETIS_DBGLVL_INFO        2      /* Perform timing analysis */
+#define PARMETIS_DBGLVL_PROGRESS    4      /* Show the coarsening progress */
+#define PARMETIS_DBGLVL_REFINEINFO  8      /* Show info on communication during folding */
+#define PARMETIS_DBGLVL_MATCHINFO   16     /* Show info on matching */
+#define PARMETIS_DBGLVL_RMOVEINFO   32     /* Show info on communication during folding */
+#define PARMETIS_DBGLVL_REMAP       64     /* Determines if remapping will take place */
+
+#endif 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/configs/4.0/win/msys2/mingw64/libparmetis/CMakeLists.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/configs/4.0/win/msys2/mingw64/libparmetis/CMakeLists.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/configs/4.0/win/msys2/mingw64/libparmetis/CMakeLists.txt	(revision 27955)
@@ -0,0 +1,32 @@
+# Include directories for library code.
+include_directories(.)
+# Find sources.
+file(GLOB parmetis_sources *.c)
+# Create libparmetis
+add_library(parmetis ${ParMETIS_LIBRARY_TYPE} ${parmetis_sources})
+
+# Link with metis and MPI libraries.
+set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "msys-" "")
+set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll" ".so")
+find_library(METIS metis PATHS ${METIS_PATH}/lib)
+if(METIS)
+	message("-- Found user-supplied METIS: ${METIS}")
+	target_link_libraries(parmetis ${METIS})
+else(METIS)
+	target_link_libraries(parmetis metis)
+endif()
+
+if(LOCAL_MSMPI)
+	# Add local MS-MPI libraries
+	find_library(MSMPI msmpi PATHS ${MSMPI_ROOT}/lib)
+	message(STATUS "MSMPI: ${MSMPI}")
+	target_link_libraries(parmetis ${MSMPI})
+else(LOCAL_MSMPI)
+	target_link_libraries(parmetis ${MPI_LIBRARIES})
+	set_target_properties(parmetis PROPERTIES LINK_FLAGS "${MPI_LINK_FLAGS}")
+endif()
+
+install(TARGETS parmetis
+  LIBRARY DESTINATION lib
+  RUNTIME DESTINATION lib
+  ARCHIVE DESTINATION lib)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/install-4-win-msys2-gcc-msmpi.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/install-4-win-msys2-gcc-msmpi.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/install-4-win-msys2-gcc-msmpi.sh	(revision 27955)
@@ -0,0 +1,68 @@
+#!/bin/bash
+set -eu
+
+
+# NOTE:
+# - This configuration depends on the successful installation of METIS via 
+# 	$ISSM_DIR/externalpackages/metis/install-5-win-msys2-gcc-msmpi.sh
+# - METIS_ROOT and MSMPI_ROOT should be available after etc/environment.sh is 
+#	sourced
+#
+
+## Constants
+#
+VER=4.0.3
+
+PREFIX="${ISSM_DIR}/externalpackages/parmetis/install"
+
+GKLIB_ROOT="${METIS_ROOT}/GKlib"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/parmetis-${VER}.tar.gz" "parmetis-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf parmetis-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv parmetis-${VER}/* src
+rm -rf parmetis-${VER}
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/4.0/win/msys2/CMakeLists.txt src
+cp configs/4.0/win/msys2/Makefile src
+cp configs/4.0/win/msys2/include/parmetis.h src/include
+cp configs/4.0/win/msys2/gcc/libparmetis/CMakeLists.txt src/libparmetis
+
+# Configure
+cd src
+make config \
+	prefix=${PREFIX} \
+	shared=1 \
+	cc=/usr/bin/gcc \
+	cxx=/usr/bin/g++ \
+	metis_path=${METIS_ROOT} \
+	gklib_path=${GKLIB_ROOT} \
+	local_msmpi=1 \
+	msmpi_root=${MSMPI_ROOT}
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+
+# Create link to shared version of library so that libtool can find it
+cd ${PREFIX}/lib
+ln -s ./msys-parmetis.dll ./libparmetis.dll
+
+# Create link to lib directory (PETSc, by default, looks for libraries in 
+# lib64/ if it detects that 64-bit integers are being used)
+cd ${PREFIX}
+ln -s ./lib ./lib64
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/install-4-win-msys2-mingw-msmpi.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/install-4-win-msys2-mingw-msmpi.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/parmetis/install-4-win-msys2-mingw-msmpi.sh	(revision 27955)
@@ -0,0 +1,68 @@
+#!/bin/bash
+set -eu
+
+
+# NOTE:
+# - This configuration depends on the successful installation of METIS via 
+# 	$ISSM_DIR/externalpackages/metis/install-5-win-msys2-gcc-msmpi.sh
+# - METIS_ROOT and MSMPI_ROOT should be available after etc/environment.sh is 
+#	sourced
+#
+
+## Constants
+#
+VER=4.0.3
+
+PREFIX="${ISSM_DIR}/externalpackages/parmetis/install"
+
+GKLIB_ROOT="${METIS_ROOT}/GKlib"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/parmetis-${VER}.tar.gz" "parmetis-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf parmetis-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv parmetis-${VER}/* src
+rm -rf parmetis-${VER}
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/4.0/win/msys2/CMakeLists.txt src
+cp configs/4.0/win/msys2/Makefile src
+cp configs/4.0/win/msys2/include/parmetis.h src/include
+cp configs/4.0/win/msys2/mingw64/libparmetis/CMakeLists.txt src/libparmetis
+
+# Configure
+cd src
+make config \
+	prefix=${PREFIX} \
+	shared=1 \
+	cc=/mingw64/bin/gcc \
+	cxx=/mingw64/bin/g++ \
+	metis_path=${METIS_ROOT} \
+	gklib_path=${GKLIB_ROOT} \
+	local_msmpi=1 \
+	msmpi_root=${MSMPI_ROOT}
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+
+# Create link to lib directory (PETSc, by default, looks for libraries in 
+# lib64/ if it detects that 64-bit integers are being used)
+cd ${PREFIX}
+ln -s ./lib ./lib64
+
+# Create link to shared version of library so that libtool can find it
+cd ${PREFIX}/lib
+ln -s libparmetis.so libparmetis.dll
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/pcatool/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/pcatool/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/pcatool/install.sh	(revision 27955)
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+#Some cleanup
+rm -rf install pcatool
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/pcatool.tar.gz' 'pcatool.tar.gz'
+
+#Untar  into install
+cd install 
+tar -zxvf  ../pcatool.tar.gz
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/pcre/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/pcre/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/pcre/install.sh	(revision 27955)
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -eu
+
+#Cleaning
+rm -rf install
+rm -rf pcre-8.21
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/pcre-8.21.tar.gz' 'pcre-8.21.tar.gz'
+
+#Untar and move python into install directory
+tar -zxvf  pcre-8.21.tar.gz
+mv pcre-8.21/* install
+rm -rf pcre-8.21
+
+#Configure doxygen
+cd install 
+./configure --prefix "$ISSM_DIR/externalpackages/python/install"
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/configs/3.1/win7/petscfix.h.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/configs/3.1/win7/petscfix.h.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/configs/3.1/win7/petscfix.h.patch	(revision 27955)
@@ -0,0 +1,8 @@
+10c10
+< extern "C" {
+---
+> //extern "C" {
+14c14
+< }
+---
+> //}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/configs/3.14/win/msys2/mingw64/config/configure.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/configs/3.14/win/msys2/mingw64/config/configure.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/configs/3.14/win/msys2/mingw64/config/configure.py	(revision 27955)
@@ -0,0 +1,558 @@
+#!/usr/bin/python3
+from __future__ import print_function
+import os, sys
+
+extraLogs = []
+petsc_arch = ''
+
+# Use en_US as language so that BuildSystem parses compiler messages in english
+def fixLang(lang):
+  if lang in os.environ and os.environ[lang] != '':
+    lv = os.environ[lang]
+    enc = ''
+    try: lv,enc = lv.split('.')
+    except: pass
+    if lv not in ['en_US','C']: lv = 'en_US'
+    if enc: lv = lv+'.'+enc
+    os.environ[lang] = lv
+
+fixLang('LC_LOCAL')
+fixLang('LANG')
+
+
+def check_for_option_mistakes(opts):
+  for opt in opts[1:]:
+    name = opt.split('=')[0]
+    if name.find(' ') >= 0:
+      raise ValueError('The option "'+name+'" has a space character in the name - this is likely incorrect usage.');
+    if name.find('_') >= 0:
+      exception = False
+      for exc in ['mkl_sparse', 'mkl_sparse_optimize', 'mkl_cpardiso', 'mkl_pardiso', 'superlu_dist', 'PETSC_ARCH', 'PETSC_DIR', 'CXX_CXXFLAGS', 'LD_SHARED', 'CC_LINKER_FLAGS', 'CXX_LINKER_FLAGS', 'FC_LINKER_FLAGS', 'AR_FLAGS', 'C_VERSION', 'CXX_VERSION', 'FC_VERSION', 'size_t', 'MPI_Comm','MPI_Fint','int64_t']:
+        if name.find(exc) >= 0:
+          exception = True
+      if not exception:
+        raise ValueError('The option '+name+' should probably be '+name.replace('_', '-'));
+    if opt.find('=') >=0:
+      optval = opt.split('=')[1]
+      if optval == 'ifneeded':
+        raise ValueError('The option '+opt+' should probably be '+opt.replace('ifneeded', '1'));
+    for exc in ['mkl_sparse', 'mkl_sparse_optimize', 'mkl_cpardiso', 'mkl_pardiso', 'superlu_dist']:
+      if name.find(exc.replace('_','-')) > -1:
+        raise ValueError('The option '+opt+' should be '+opt.replace(exc.replace('_','-'),exc));
+  return
+
+def check_for_unsupported_combinations(opts):
+  if '--with-precision=single' in opts and '--with-clanguage=cxx' in opts and '--with-scalar-type=complex' in opts:
+    sys.exit(ValueError('PETSc does not support single precision complex with C++ clanguage, run with --with-clanguage=c'))
+
+def check_for_option_changed(opts):
+# Document changes in command line options here.
+  optMap = [('with-64bit-indices','with-64-bit-indices'),
+            ('with-mpi-exec','with-mpiexec'),
+            ('c-blas-lapack','f2cblaslapack'),
+            ('cholmod','suitesparse'),
+            ('umfpack','suitesparse'),
+            ('matlabengine','matlab-engine'),            
+            ('f-blas-lapack','fblaslapack'),
+            ('with-cuda-arch',
+             'CUDAFLAGS=-arch'),
+            ('with-packages-dir','with-packages-download-dir'),
+            ('with-external-packages-dir','with-packages-build-dir'),
+            ('package-dirs','with-packages-search-path'),
+            ('download-petsc4py-python','with-python-exec'),
+            ('search-dirs','with-executables-search-path')]
+  for opt in opts[1:]:
+    optname = opt.split('=')[0].strip('-')
+    for oldname,newname in optMap:
+      if optname.find(oldname) >=0:
+        raise ValueError('The option '+opt+' should probably be '+opt.replace(oldname,newname))
+  return
+
+def check_petsc_arch(opts):
+  # If PETSC_ARCH not specified - use script name (if not configure.py)
+  global petsc_arch
+  found = 0
+  for name in opts:
+    if name.find('PETSC_ARCH=') >= 0:
+      petsc_arch=name.split('=')[1]
+      found = 1
+      break
+  # If not yet specified - use the filename of script
+  if not found:
+      filename = os.path.basename(sys.argv[0])
+      if not filename.startswith('configure') and not filename.startswith('reconfigure') and not filename.startswith('setup'):
+        petsc_arch=os.path.splitext(os.path.basename(sys.argv[0]))[0]
+        useName = 'PETSC_ARCH='+petsc_arch
+        opts.append(useName)
+  return 0
+
+def chkenable():
+  #Replace all 'enable-'/'disable-' with 'with-'=0/1/tail
+  #enable-fortran is a special case, the resulting --with-fortran is ambiguous.
+  #Would it mean --with-fc=
+  en_dash = u'\N{EN DASH}'
+  if sys.version_info < (3, 0):
+    en_dash = en_dash.encode('utf-8')
+  for l in range(0,len(sys.argv)):
+    name = sys.argv[l]
+
+    if name.find(en_dash)  >= 0:
+      sys.argv[l] = name.replace(en_dash,'-')
+    if name.find('enable-cxx') >= 0:
+      if name.find('=') == -1:
+        sys.argv[l] = name.replace('enable-cxx','with-clanguage=C++')
+      else:
+        head, tail = name.split('=', 1)
+        if tail=='0':
+          sys.argv[l] = head.replace('enable-cxx','with-clanguage=C')
+        else:
+          sys.argv[l] = head.replace('enable-cxx','with-clanguage=C++')
+      continue
+    if name.find('disable-cxx') >= 0:
+      if name.find('=') == -1:
+        sys.argv[l] = name.replace('disable-cxx','with-clanguage=C')
+      else:
+        head, tail = name.split('=', 1)
+        if tail == '0':
+          sys.argv[l] = head.replace('disable-cxx','with-clanguage=C++')
+        else:
+          sys.argv[l] = head.replace('disable-cxx','with-clanguage=C')
+      continue
+
+
+    if name.find('enable-') >= 0:
+      if name.find('=') == -1:
+        sys.argv[l] = name.replace('enable-','with-')+'=1'
+      else:
+        head, tail = name.split('=', 1)
+        sys.argv[l] = head.replace('enable-','with-')+'='+tail
+    if name.find('disable-') >= 0:
+      if name.find('=') == -1:
+        sys.argv[l] = name.replace('disable-','with-')+'=0'
+      else:
+        head, tail = name.split('=', 1)
+        if tail == '1': tail = '0'
+        sys.argv[l] = head.replace('disable-','with-')+'='+tail
+    if name.find('without-') >= 0:
+      if name.find('=') == -1:
+        sys.argv[l] = name.replace('without-','with-')+'=0'
+      else:
+        head, tail = name.split('=', 1)
+        if tail == '1': tail = '0'
+        sys.argv[l] = head.replace('without-','with-')+'='+tail
+
+def chksynonyms():
+  #replace common configure options with ones that PETSc BuildSystem recognizes
+  simplereplacements = {'F77' : 'FC', 'F90' : 'FC'}
+  for l in range(0,len(sys.argv)):
+    name = sys.argv[l]
+
+    name = name.replace('with-openmpi','with-mpi')
+    name = name.replace('with-mpich','with-mpi')
+    name = name.replace('with-blas-lapack','with-blaslapack')
+
+    if name.find('with-debug=') >= 0 or name.endswith('with-debug'):
+      if name.find('=') == -1:
+        name = name.replace('with-debug','with-debugging')+'=1'
+      else:
+        head, tail = name.split('=', 1)
+        name = head.replace('with-debug','with-debugging')+'='+tail
+
+    if name.find('with-shared=') >= 0 or name.endswith('with-shared'):
+      if name.find('=') == -1:
+        name = name.replace('with-shared','with-shared-libraries')+'=1'
+      else:
+        head, tail = name.split('=', 1)
+        name = head.replace('with-shared','with-shared-libraries')+'='+tail
+
+    if name.find('with-index-size=') >=0:
+      head,tail = name.split('=',1)
+      if int(tail)==32:
+        name = '--with-64-bit-indices=0'
+      elif int(tail)==64:
+        name = '--with-64-bit-indices=1'
+      else:
+        raise RuntimeError('--with-index-size= must be 32 or 64')
+
+    if name.find('with-precision=') >=0:
+      head,tail = name.split('=',1)
+      if tail.find('quad')>=0:
+        name='--with-precision=__float128'
+
+    for i,j in simplereplacements.items():
+      if name.find(i+'=') >= 0:
+        name = name.replace(i+'=',j+'=')
+      elif name.find('with-'+i.lower()+'=') >= 0:
+        name = name.replace(i.lower()+'=',j.lower()+'=')
+
+    # restore 'sys.argv[l]' from the intermediate var 'name'
+    sys.argv[l] = name
+
+def chkwincompilerusinglink():
+  for arg in sys.argv:
+    if (arg.find('win32fe') >= 0 and (arg.find('f90') >=0 or arg.find('ifort') >=0 or arg.find('icl') >=0)):
+      return 1
+  return 0
+
+def chkdosfiles():
+  # cygwin - but not a hg clone - so check one of files in bin dir
+  if b"\r\n" in open(os.path.join('lib','petsc','bin','petscmpiexec'),"rb").read():
+    print('===============================================================================')
+    print(' *** Scripts are in DOS mode. Was winzip used to extract petsc sources?    ****')
+    print(' *** Please restart with a fresh tarball and use "tar -xzf petsc.tar.gz"   ****')
+    print('===============================================================================')
+    sys.exit(3)
+  return
+
+def chkcygwinlink():
+  if os.path.exists('/usr/bin/cygcheck.exe') and os.path.exists('/usr/bin/link.exe') and chkwincompilerusinglink():
+      if '--ignore-cygwin-link' in sys.argv: return 0
+      print('===============================================================================')
+      print(' *** Cygwin /usr/bin/link detected! Compiles with Intel icl/ifort can break!  **')
+      print(' *** To workarround do: "mv /usr/bin/link.exe /usr/bin/link-cygwin.exe"     **')
+      print(' *** Or to ignore this check, use configure option: --ignore-cygwin-link. But compiles can fail. **')
+      print('===============================================================================')
+      sys.exit(3)
+  return 0
+
+def chkbrokencygwin():
+  if os.path.exists('/usr/bin/cygcheck.exe'):
+    buf = os.popen('/usr/bin/cygcheck.exe -c cygwin').read()
+    if buf.find('1.5.11-1') > -1:
+      print('===============================================================================')
+      print(' *** cygwin-1.5.11-1 detected. ./configure fails with this version ***')
+      print(' *** Please upgrade to cygwin-1.5.12-1 or newer version. This can  ***')
+      print(' *** be done by running cygwin-setup, selecting "next" all the way.***')
+      print('===============================================================================')
+      sys.exit(3)
+  return 0
+
+def chkusingwindowspython():
+  if sys.platform == 'win32':
+    print('===============================================================================')
+    print(' *** Windows python detected. Please rerun ./configure with cygwin-python. ***')
+    print('===============================================================================')
+    sys.exit(3)
+  return 0
+
+def chkcygwinpython():
+  if sys.platform == 'cygwin' :
+    import platform
+    import re
+    r=re.compile("([0-9]+).([0-9]+).([0-9]+)")
+    m=r.match(platform.release())
+    major=int(m.group(1))
+    minor=int(m.group(2))
+    subminor=int(m.group(3))
+    if ((major < 1) or (major == 1 and minor < 7) or (major == 1 and minor == 7 and subminor < 34)):
+      sys.argv.append('--useThreads=0')
+      extraLogs.append('''\
+===============================================================================
+** Cygwin version is older than 1.7.34. Python threads do not work correctly. ***
+** Disabling thread usage for this run of ./configure *******
+===============================================================================''')
+  return 0
+
+def chkcygwinwindowscompilers():
+  '''Adds win32fe for Microsoft/Intel compilers'''
+  if os.path.exists('/usr/bin/cygcheck.exe'):
+    for l in range(1,len(sys.argv)):
+      option = sys.argv[l]
+      for i in ['cl','icl','ifort']:
+        if option.startswith(i):
+          sys.argv[l] = 'win32fe '+option
+          break
+  return 0
+
+def chkrhl9():
+  if os.path.exists('/etc/redhat-release'):
+    try:
+      file = open('/etc/redhat-release','r')
+      buf = file.read()
+      file.close()
+    except:
+      # can't read file - assume dangerous RHL9
+      buf = 'Shrike'
+    if buf.find('Shrike') > -1:
+      sys.argv.append('--useThreads=0')
+      extraLogs.append('''\
+==============================================================================
+   *** RHL9 detected. Threads do not work correctly with this distribution ***
+   ****** Disabling thread usage for this run of ./configure *********
+===============================================================================''')
+  return 0
+
+def chktmpnoexec():
+  if not hasattr(os,'ST_NOEXEC'): return # novermin
+  if 'TMPDIR' in os.environ: tmpDir = os.environ['TMPDIR']
+  else: tmpDir = '/tmp'
+  if os.statvfs(tmpDir).f_flag & os.ST_NOEXEC: # novermin
+    if os.statvfs(os.path.abspath('.')).f_flag & os.ST_NOEXEC: # novermin
+      print('************************************************************************')
+      print('* TMPDIR '+tmpDir+' has noexec attribute. Same with '+os.path.abspath('.')+' where petsc is built.')
+      print('* Suggest building PETSc in a location without this restriction!')
+      print('* Alternatively, set env variable TMPDIR to a location that is not restricted to run binaries.')
+      print('************************************************************************')
+      sys.exit(4)
+    else:
+      newTmp = os.path.abspath('tmp-petsc')
+      print('************************************************************************')
+      print('* TMPDIR '+tmpDir+' has noexec attribute. Using '+newTmp+' instead.')
+      print('************************************************************************')
+      if not os.path.isdir(newTmp): os.mkdir(os.path.abspath(newTmp))
+      os.environ['TMPDIR'] = newTmp
+  return
+
+def check_cray_modules():
+  import script
+  '''For Cray systems check if the cc, CC, ftn compiler suite modules have been set'''
+  cray = os.getenv('CRAY_SITE_LIST_DIR')
+  if not cray: return
+  cray = os.getenv('CRAYPE_DIR')
+  if not cray:
+   print('************************************************************************')
+   print('* You are on a Cray system but no programming environments have been loaded')
+   print('* Perhaps you need:')
+   print('*       module load intel ; module load PrgEnv-intel')
+   print('*   or  module load PrgEnv-cray')
+   print('*   or  module load PrgEnv-gnu')
+   print('* See https://www.mcs.anl.gov/petsc/documentation/installation.html#doemachines')
+   print('************************************************************************')
+   sys.exit(4)
+
+def check_broken_configure_log_links():
+  '''Sometime symlinks can get broken if the original files are deleted. Delete such broken links'''
+  import os
+  for logfile in ['configure.log','configure.log.bkp']:
+    if os.path.islink(logfile) and not os.path.isfile(logfile): os.remove(logfile)
+  return
+
+def move_configure_log(framework):
+  '''Move configure.log to PETSC_ARCH/lib/petsc/conf - and update configure.log.bkp in both locations appropriately'''
+  global petsc_arch
+
+  if hasattr(framework,'arch'): petsc_arch = framework.arch
+  if hasattr(framework,'logName'): curr_file = framework.logName
+  else: curr_file = 'configure.log'
+
+  if petsc_arch:
+    import shutil
+    import os
+
+    # Just in case - confdir is not created
+    lib_dir = os.path.join(petsc_arch,'lib')
+    petsc_dir = os.path.join(petsc_arch,'lib','petsc')
+    conf_dir = os.path.join(petsc_arch,'lib','petsc','conf')
+    if not os.path.isdir(petsc_arch): os.mkdir(petsc_arch)
+    if not os.path.isdir(lib_dir): os.mkdir(lib_dir)
+    if not os.path.isdir(petsc_dir): os.mkdir(petsc_dir)
+    if not os.path.isdir(conf_dir): os.mkdir(conf_dir)
+
+    curr_bkp  = curr_file + '.bkp'
+    new_file  = os.path.join(conf_dir,curr_file)
+    new_bkp   = new_file + '.bkp'
+
+    # Keep backup in $PETSC_ARCH/lib/petsc/conf location
+    if os.path.isfile(new_bkp): os.remove(new_bkp)
+    if os.path.isfile(new_file): os.rename(new_file,new_bkp)
+    if os.path.isfile(curr_file):
+      shutil.copyfile(curr_file,new_file)
+      os.remove(curr_file)
+    if os.path.isfile(new_file): os.symlink(new_file,curr_file)
+    # If the old bkp is using the same PETSC_ARCH/lib/petsc/conf - then update bkp link
+    if os.path.realpath(curr_bkp) == os.path.realpath(new_file):
+      if os.path.isfile(curr_bkp): os.remove(curr_bkp)
+      if os.path.isfile(new_bkp): os.symlink(new_bkp,curr_bkp)
+  return
+
+def print_final_timestamp(framework):
+  import time
+  framework.log.write(('='*80)+'\n')
+  framework.log.write('Finishing configure run at '+time.strftime('%a, %d %b %Y %H:%M:%S %z')+'\n')
+  framework.log.write(('='*80)+'\n')
+  return
+
+def petsc_configure(configure_options):
+  if 'PETSC_DIR' in os.environ:
+    petscdir = os.environ['PETSC_DIR']
+    if petscdir.find(' ') > -1:
+      raise RuntimeError('Your PETSC_DIR '+petscdir+' has spaces in it; this is not allowed.\n Change the directory with PETSc to not have spaces in it')
+    try:
+      sys.path.append(os.path.join(petscdir,'lib','petsc','bin'))
+      import petscnagupgrade
+      file     = os.path.join(petscdir,'.nagged')
+      if not petscnagupgrade.naggedtoday(file):
+        petscnagupgrade.currentversion(petscdir)
+    except:
+      pass
+  print('===============================================================================')
+  print('             Configuring PETSc to compile on your system                       ')
+  print('===============================================================================')
+
+  try:
+    # Command line arguments take precedence (but don't destroy argv[0])
+    sys.argv = sys.argv[:1] + configure_options + sys.argv[1:]
+    check_for_option_mistakes(sys.argv)
+    check_for_option_changed(sys.argv)
+  except (TypeError, ValueError) as e:
+    emsg = str(e)
+    if not emsg.endswith('\n'): emsg = emsg+'\n'
+    msg ='*******************************************************************************\n'\
+    +'                ERROR in COMMAND LINE ARGUMENT to ./configure \n' \
+    +'-------------------------------------------------------------------------------\n'  \
+    +emsg+'*******************************************************************************\n'
+    sys.exit(msg)
+  # check PETSC_ARCH
+  check_for_unsupported_combinations(sys.argv)
+  check_petsc_arch(sys.argv)
+  check_broken_configure_log_links()
+
+  #rename '--enable-' to '--with-'
+  chkenable()
+  # support a few standard configure option types
+  chksynonyms()
+  # Check for broken cygwin
+  chkbrokencygwin()
+  # Disable threads on RHL9
+  chkrhl9()
+  # Make sure cygwin-python is used on windows
+  chkusingwindowspython()
+  # Threads don't work for cygwin & python...
+  chkcygwinpython()
+  chkcygwinlink()
+  chkdosfiles()
+  chkcygwinwindowscompilers()
+  chktmpnoexec()
+
+  for l in range(1,len(sys.argv)):
+    if sys.argv[l].startswith('--with-fc=') and sys.argv[l].endswith('nagfor'):
+      # need a way to save this value and later CC so that petscnagfor may use them
+      name = sys.argv[l].split('=')[1]
+      sys.argv[l] = '--with-fc='+os.path.join(os.path.abspath('.'),'lib','petsc','bin','petscnagfor')
+      break
+
+
+  # Should be run from the toplevel
+  configDir = os.path.abspath('config')
+  bsDir     = os.path.join(configDir, 'BuildSystem')
+  if not os.path.isdir(configDir):
+    raise RuntimeError('Run configure from $PETSC_DIR, not '+os.path.abspath('.'))
+  sys.path.insert(0, bsDir)
+  sys.path.insert(0, configDir)
+  import config.base
+  import config.framework
+  import pickle
+  import traceback
+
+  # Check Cray without modules
+  check_cray_modules()
+
+  tbo = None
+  framework = None
+  try:
+    framework = config.framework.Framework(['--configModules=PETSc.Configure','--optionsModule=config.compilerOptions']+sys.argv[1:], loadArgDB = 0)
+    framework.setup()
+    framework.logPrint('\n'.join(extraLogs))
+    framework.configure(out = sys.stdout)
+    framework.storeSubstitutions(framework.argDB)
+    framework.argDB['configureCache'] = pickle.dumps(framework)
+    framework.printSummary()
+    framework.argDB.save(force = True)
+    framework.logClear()
+    print_final_timestamp(framework)
+    framework.closeLog()
+    try:
+      move_configure_log(framework)
+    except:
+      # perhaps print an error about unable to shuffle logs?
+      pass
+    return 0
+  except (RuntimeError, config.base.ConfigureSetupError) as e:
+    tbo = sys.exc_info()[2]
+    emsg = str(e)
+    if not emsg.endswith('\n'): emsg = emsg+'\n'
+    msg ='*******************************************************************************\n'\
+    +'         UNABLE to CONFIGURE with GIVEN OPTIONS    (see configure.log for details):\n' \
+    +'-------------------------------------------------------------------------------\n'  \
+    +emsg+'*******************************************************************************\n'
+    se = ''
+  except (TypeError, ValueError) as e:
+    # this exception is automatically deleted by Python so we need to save it to print below
+    tbo = sys.exc_info()[2]
+    emsg = str(e)
+    if not emsg.endswith('\n'): emsg = emsg+'\n'
+    msg ='*******************************************************************************\n'\
+    +'    TypeError or ValueError possibly related to ERROR in COMMAND LINE ARGUMENT while running ./configure \n' \
+    +'-------------------------------------------------------------------------------\n'  \
+    +emsg+'*******************************************************************************\n'
+    se = ''
+  except ImportError as e :
+    # this exception is automatically deleted by Python so we need to save it to print below
+    tbo = sys.exc_info()[2]
+    emsg = str(e)
+    if not emsg.endswith('\n'): emsg = emsg+'\n'
+    msg ='*******************************************************************************\n'\
+    +'                     ImportError while runing ./configure \n' \
+    +'-------------------------------------------------------------------------------\n'  \
+    +emsg+'*******************************************************************************\n'
+    se = ''
+  except OSError as e :
+    tbo = sys.exc_info()[2]
+    emsg = str(e)
+    if not emsg.endswith('\n'): emsg = emsg+'\n'
+    msg ='*******************************************************************************\n'\
+    +'                    OSError while running ./configure \n' \
+    +'-------------------------------------------------------------------------------\n'  \
+    +emsg+'*******************************************************************************\n'
+    se = ''
+  except SystemExit as e:
+    tbo = sys.exc_info()[2]
+    if e.code is None or e.code == 0:
+      return
+    if e.code == 10:
+      sys.exit(10)
+    msg ='*******************************************************************************\n'\
+    +'         CONFIGURATION FAILURE  (Please send configure.log to petsc-maint@mcs.anl.gov)\n' \
+    +'*******************************************************************************\n'
+    se  = str(e)
+  except Exception as e:
+    tbo = sys.exc_info()[2]
+    msg ='*******************************************************************************\n'\
+    +'        CONFIGURATION CRASH  (Please send configure.log to petsc-maint@mcs.anl.gov)\n' \
+    +'*******************************************************************************\n'
+    se  = str(e)
+
+  print(msg)
+  if not framework is None:
+    framework.logClear()
+    if hasattr(framework, 'log'):
+      try:
+        if hasattr(framework,'compilerDefines'):
+          framework.log.write('**** Configure header '+framework.compilerDefines+' ****\n')
+          framework.outputHeader(framework.log)
+        if hasattr(framework,'compilerFixes'):
+          framework.log.write('**** C specific Configure header '+framework.compilerFixes+' ****\n')
+          framework.outputCHeader(framework.log)
+      except Exception as e:
+        framework.log.write('Problem writing headers to log: '+str(e))
+      try:
+        framework.log.write(msg+se)
+        traceback.print_tb(tbo, file = framework.log)
+        print_final_timestamp(framework)
+        if hasattr(framework,'log'): framework.log.close()
+        move_configure_log(framework)
+      except Exception as e:
+        print('Error printing error message from exception or printing the traceback:'+str(e))
+        traceback.print_tb(sys.exc_info()[2])
+      sys.exit(1)
+    else:
+      print(se)
+      traceback.print_tb(tbo)
+  else:
+    print(se)
+    traceback.print_tb(tbo)
+  if hasattr(framework,'log'): framework.log.close()
+
+if __name__ == '__main__':
+  petsc_configure([])
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-discover.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-discover.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-discover.sh	(revision 27955)
@@ -0,0 +1,54 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.14.6"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+cd ${PETSC_DIR}
+./config/configure.py \
+	COPTFLAGS="-g -O3" CXXOPTFLAGS="-g -O3" FOPTFLAGS="-g -O3" \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-pic=1 \
+	--with-blas-lapack-dir="/usr/local/intel/oneapi/2021/mkl/2021.4.0/" \
+	--with-cc="/usr/local/intel/oneapi/2021/mpi/2021.4.0/bin/mpicc" \
+	--with-cxx="/usr/local/intel/oneapi/2021/mpi/2021.4.0/bin/mpicxx" \
+	--with-fc="/usr/local/intel/oneapi/2021/mpi/2021.4.0/bin/mpif90" \
+	--known-mpi-shared-libraries=1 \
+	--known-64-bit-blas-indices \
+	--known-mpi-long-double=1 \
+	--known-mpi-int64_t=1 \
+	--known-mpi-c-double-complex=1 \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-greenplanet.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-greenplanet.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-greenplanet.sh	(revision 27955)
@@ -0,0 +1,54 @@
+#!/bin/bash
+set -eu
+
+
+# WARNING: Make sure you have the right MPI
+
+## Constants
+#
+VER="3.14.0"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+#configure
+cd ${PETSC_DIR}
+./config/configure.py \
+	COPTFLAGS="-g -O3" CXXOPTFLAGS="-g -O3" FOPTFLAGS="-g -O3" \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--with-blas-lapack-dir="/sopt/INTEL/compilers_and_libraries_2018.3.222/linux/mkl/" \
+	--with-mpi-dir="/sopt/OpenMPI/3.1.2/intel-2018.3-slim/" \
+	--known-mpi-shared-libraries=1 \
+	--known-64-bit-blas-indices \
+	--known-mpi-long-double=1 \
+	--known-mpi-int64_t=1 \
+	--known-mpi-c-double-complex=1 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-batch=1  \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1 
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-linux-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-linux-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-linux-static.sh	(revision 27955)
@@ -0,0 +1,58 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.14.6"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+#
+# NOTE:
+# - Cannot use --with-fpic option when compiling static libs,
+#
+#		Cannot determine compiler PIC flags if shared libraries is turned off
+#		Either run using --with-shared-libraries or --with-pic=0 and supply the
+#		compiler PIC flag via CFLAGS, CXXXFLAGS, and FCFLAGS
+#
+cd ${PETSC_DIR}
+./configure.py \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--with-shared-libraries=0 \
+	--CFLAGS="-fPIC" \
+	--CXXFLAGS="-fPIC" \
+	--FFLAGS="-fPIC" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--download-fblaslapack=1 \
+	--download-mpich=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1 \
+	--download-zlib=1 \
+	--download-hdf5=1
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-linux.sh	(revision 27955)
@@ -0,0 +1,47 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.14.6"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+cd ${PETSC_DIR}
+./config/configure.py \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-pic=1 \
+	--download-fblaslapack=1 \
+	--download-mpich=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1 \
+	--download-zlib=1 \
+	--download-hdf5=1
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-mac-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-mac-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-mac-static.sh	(revision 27955)
@@ -0,0 +1,68 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.14.6"
+
+PETSC_DIR=${ISSM_DIR}/externalpackages/petsc/src # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Modify source so that Python 3 can be used to compile PETSc
+sed -i'' 's|#!/usr/bin/env python|#!/usr/bin/env python3|g' ${PETSC_DIR}/config/configure.py
+
+# Modify source so that Python >= 3.9 can be used to compile PETSc
+sed -i'' 's|thread.isAlive|thread.is_alive|g' ${PETSC_DIR}/config/BuildSystem/script.py
+
+# Configure
+#
+# NOTE:
+# - Cannot use --with-fpic option when compiling static libs,
+#
+#		Cannot determine compiler PIC flags if shared libraries is turned off
+#		Either run using --with-shared-libraries or --with-pic=0 and supply the
+#		compiler PIC flag via CFLAGS, CXXXFLAGS, and FCFLAGS
+#
+# - Added -Wno-error=implicit-function-declaration to CFLAGS for Clang >= 12. 
+#	(may need to remove it for earlier versions not using the C99 standard).
+# - Added -static-libgfortran to all macOS static builds, but this will not 
+#	work out of the box on Linux.
+#
+cd ${PETSC_DIR}
+./config/configure.py \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--with-shared-libraries=0 \
+	--CFLAGS="-fPIC -Wno-error=implicit-function-declaration" \
+	--CXXFLAGS="-fPIC" \
+	--FFLAGS="-fPIC -static-libgfortran" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--download-fblaslapack=1 \
+	--download-mpich=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1 \
+	--download-zlib=1
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-mac-with-hdf5-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-mac-with-hdf5-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-mac-with-hdf5-static.sh	(revision 27955)
@@ -0,0 +1,69 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.14.6"
+
+PETSC_DIR=${ISSM_DIR}/externalpackages/petsc/src # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Modify source so that Python 3 can be used to compile PETSc
+sed -i'' 's|#!/usr/bin/env python|#!/usr/bin/env python3|g' ${PETSC_DIR}/config/configure.py
+
+# Modify source so that Python >= 3.9 can be used to compile PETSc
+sed -i'' 's|thread.isAlive|thread.is_alive|g' ${PETSC_DIR}/config/BuildSystem/script.py
+
+# Configure
+#
+# NOTE:
+# - Cannot use --with-fpic option when compiling static libs,
+#
+#		Cannot determine compiler PIC flags if shared libraries is turned off
+#		Either run using --with-shared-libraries or --with-pic=0 and supply the
+#		compiler PIC flag via CFLAGS, CXXXFLAGS, and FCFLAGS
+#
+# - Added -Wno-error=implicit-function-declaration to CFLAGS for Clang >= 12. 
+#	(may need to remove it for earlier versions not using the C99 standard).
+# - Added -static-libgfortran to all macOS static builds, but this will not 
+#	work out of the box on Linux.
+#
+cd ${PETSC_DIR}
+./config/configure.py \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--with-shared-libraries=0 \
+	--CFLAGS="-fPIC -Wno-error=implicit-function-declaration" \
+	--CXXFLAGS="-fPIC" \
+	--FFLAGS="-fPIC -static-libgfortran" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--download-fblaslapack=1 \
+	--download-mpich=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1 \
+	--download-zlib=1 \
+	--download-hdf5=1
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-mac-with-hdf5.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-mac-with-hdf5.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-mac-with-hdf5.sh	(revision 27955)
@@ -0,0 +1,59 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.14.6"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Modify source so that Python 3 can be used to compile PETSc
+sed -i'' 's|#!/usr/bin/env python|#!/usr/bin/env python3|g' ${PETSC_DIR}/config/configure.py
+
+# Modify source so that Python >= 3.9 can be used to compile PETSc
+sed -i'' 's|thread.isAlive|thread.is_alive|g' ${PETSC_DIR}/config/BuildSystem/script.py
+
+# Configure
+#
+# NOTE:
+# - Added -Wno-error=implicit-function-declaration to CFLAGS for Clang >= 12. 
+#	(may need to remove it for earlier versions not using the C99 standard).
+#
+cd ${PETSC_DIR}
+./configure \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--CFLAGS="-Wno-error=implicit-function-declaration" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-pic=1 \
+	--download-fblaslapack=1 \
+	--download-mpich=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1 \
+	--download-zlib=1 \
+	--download-hdf5=1
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-mac.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-mac.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-mac.sh	(revision 27955)
@@ -0,0 +1,58 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.14.6"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Modify source so that Python 3 can be used to compile PETSc
+sed -i'' 's|#!/usr/bin/env python|#!/usr/bin/env python3|g' ${PETSC_DIR}/config/configure.py
+
+# Modify source so that Python >= 3.9 can be used to compile PETSc
+sed -i'' 's|thread.isAlive|thread.is_alive|g' ${PETSC_DIR}/config/BuildSystem/script.py
+
+# Configure
+#
+# NOTE:
+# - Added -Wno-error=implicit-function-declaration to CFLAGS for Clang >= 12. 
+#	(may need to remove it for earlier versions not using the C99 standard).
+#
+cd ${PETSC_DIR}
+./configure \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--CFLAGS="-Wno-error=implicit-function-declaration" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-pic=1 \
+	--download-fblaslapack=1 \
+	--download-mpich=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1 \
+	--download-zlib=1
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-pleiades.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-pleiades.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-pleiades.sh	(revision 27955)
@@ -0,0 +1,50 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.14.6"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+cd ${PETSC_DIR}
+./config/configure.py \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--CFLAGS="-g -O3" \
+	--CXXFLAGS="-g -O3" \
+	--FFLAGS="-g -O3" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-pic=1 \
+	--with-batch=1 \
+	--with-blas-lapack-dir="/nasa/intel/Compiler/2018.3.222/compilers_and_libraries_2018.3.222/linux/mkl" \
+	--with-scalapack-include=/nasa/intel/Compiler/2018.3.222/mkl/include \
+	--with-scalapack-lib="/nasa/intel/Compiler/2018.3.222/mkl/lib/intel64/libmkl_scalapack_lp64.so /nasa/intel/Compiler/2018.3.222/mkl/lib/intel64/libmkl_blacs_intelmpi_lp64.so" \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=0 \
+	--download-mumps=1
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-tetralith.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-tetralith.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-tetralith.sh	(revision 27955)
@@ -0,0 +1,54 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.14.6"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+cd ${PETSC_DIR}
+./config/configure.py \
+	COPTFLAGS="-g -O2" CXXOPTFLAGS="-g -O2" FOPTFLAGS="-g -O2" \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-pic=1 \
+	--with-blas-lapack-dir="/software/sse/easybuild/prefix/software/imkl/2018.1.163-iimpi-2018a/mkl" \
+	--with-cc="/software/sse/easybuild/prefix/software/impi/2018.1.163-iccifort-2018.1.163-GCC-6.4.0-2.28/bin64/mpicc" \
+	--with-cxx="/software/sse/easybuild/prefix/software/impi/2018.1.163-iccifort-2018.1.163-GCC-6.4.0-2.28/bin64/mpicxx" \
+	--with-fc="/software/sse/easybuild/prefix/software/impi/2018.1.163-iccifort-2018.1.163-GCC-6.4.0-2.28/bin64/mpiifort" \
+	--known-mpi-shared-libraries=1 \
+	--known-64-bit-blas-indices \
+	--known-mpi-long-double=1 \
+	--known-mpi-int64_t=1 \
+	--known-mpi-c-double-complex=1 \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-win-msys2-mingw-msmpi-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-win-msys2-mingw-msmpi-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-win-msys2-mingw-msmpi-static.sh	(revision 27955)
@@ -0,0 +1,88 @@
+#!/bin/bash
+set -u # NOTE: Do not set -e as it will cause this script to fail when there are errors in underlying Python scripts
+
+# NOTE:
+# - You must install various needed packages with,
+#
+#		pacman -S mingw-w64-x86_64-toolchain python
+#
+# - You must use MSYS2 MinGW 64-bit version of cmake to be able to install 
+#	external packages correctly,
+#
+#		pacman -R mingw-w64-x86_64-cmake
+#
+# Sources:
+# - https://gitlab.com/petsc/petsc/-/issues/820#note_487483240
+#
+
+## Constants
+#
+VER="3.14.6"
+
+MAKEFILE_GENERATOR='-G "MSYS Makefiles"'
+PETSC_ARCH="arch-mswin-c-opt"
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Patch source
+sed -i -e 's|#!/usr/bin/env python|#!/usr/bin/python3|' ${PETSC_DIR}/config/configure.py
+sed -i 's|  chkusingwindowspython()|#  chkusingwindowspython()|' ${PETSC_DIR}/config/configure.py
+sed -i 's|(MAKEFLAGS)|(MAKEFLAGS:w=)|' ${PETSC_DIR}/makefile ${PETSC_DIR}/lib/petsc/conf/rules # Fix for issue with GNUMake 4.4.1 (https://gitlab.com/petsc/petsc/-/merge_requests/6140)
+
+# Configure
+# - Cannot use --with-fpic option when compiling static libs,
+#
+#		Cannot determine compiler PIC flags if shared libraries is turned off
+#		Either run using --with-shared-libraries or --with-pic=0 and supply the
+#		compiler PIC flag via CFLAGS, CXXXFLAGS, and FCFLAGS
+#
+# - Added -fallow-argument-mismatch option to FFLAGS in order to clear "Error: 
+#	Rank mismatch between actual argument at [...]"
+# - Added -fallow-invalid-boz option to FFLAGS in order to clear "Error: BOZ 
+#	literal constant at [...]"
+# - Argument to --with-mpi-include must be a list or it gets expanded 
+#	incorrectly
+#
+cd ${PETSC_DIR}
+./config/configure.py \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--PETSC_ARCH="${PETSC_ARCH}" \
+	--CFLAGS="-fPIC -Wl,-static -Wno-error=implicit-function-declaration" \
+	--CXXFLAGS="-fPIC -Wl,-static" \
+	--FFLAGS="-fPIC -Wl,-static -fallow-argument-mismatch -fallow-invalid-boz" \
+	--with-shared-libraries=0 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-proc-filesystem=0 \
+	--with-mpiexec="${MPIEXEC_DIR}/mpiexec.exe" \
+	--with-mpi-lib=["-L${MSMPI_ROOT}/lib","-lmsmpi"] \
+	--with-mpi-include=["${MSMPI_ROOT}/include"] \
+	--download-fblaslapack=1 \
+	--download-metis=1 \
+	--download-metis-cmake-arguments="${MAKEFILE_GENERATOR}" \
+	--download-parmetis=1 \
+	--download-parmetis-cmake-arguments="${MAKEFILE_GENERATOR}" \
+	--download-scalapack=1 \
+	--download-scalapack-cmake-arguments="${MAKEFILE_GENERATOR}" \
+	--download-mumps=1
+
+# Compile and install
+make PETSC_DIR="${PETSC_DIR}" PETSC_ARCH="${PETSC_ARCH}" all
+make PETSC_DIR="${PETSC_DIR}" PETSC_ARCH="${PETSC_ARCH}" install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-win-msys2-mingw-msmpi.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-win-msys2-mingw-msmpi.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.14-win-msys2-mingw-msmpi.sh	(revision 27955)
@@ -0,0 +1,87 @@
+#!/bin/bash
+set -u # NOTE: Do not set -e as it will cause this script to fail when there are errors in underlying Python scripts
+
+# NOTE:
+# - You must install various needed packages with,
+#
+#		pacman -S mingw-w64-x86_64-toolchain python
+#
+# - You must use MSYS2 MinGW 64-bit version of cmake to be able to install 
+#	external packages correctly,
+#
+#		pacman -R mingw-w64-x86_64-cmake
+#
+# Sources:
+# - https://gitlab.com/petsc/petsc/-/issues/820#note_487483240
+#
+
+## Constants
+#
+VER="3.14.6"
+
+MAKEFILE_GENERATOR='-G "MSYS Makefiles"'
+PETSC_ARCH="arch-mswin-c-opt"
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Patch source
+sed -i -e 's|#!/usr/bin/env python|#!/usr/bin/python3|' ${PETSC_DIR}/config/configure.py
+sed -i 's|  chkusingwindowspython()|#  chkusingwindowspython()|' ${PETSC_DIR}/config/configure.py
+sed -i 's|(MAKEFLAGS)|(MAKEFLAGS:w=)|' ${PETSC_DIR}/makefile ${PETSC_DIR}/lib/petsc/conf/rules # Fix for issue with GNUMake 4.4.1 (https://gitlab.com/petsc/petsc/-/merge_requests/6140)
+
+# Configure
+# - Cannot use --with-fpic option when compiling static libs,
+#
+#		Cannot determine compiler PIC flags if shared libraries is turned off
+#		Either run using --with-shared-libraries or --with-pic=0 and supply the
+#		compiler PIC flag via CFLAGS, CXXXFLAGS, and FCFLAGS
+#
+# - Added -fallow-argument-mismatch option to FFLAGS in order to clear "Error: 
+#	Rank mismatch between actual argument at [...]"
+# - Added -fallow-invalid-boz option to FFLAGS in order to clear "Error: BOZ 
+#	literal constant at [...]"
+# - Argument to --with-mpi-include must be a list or it gets expanded 
+#	incorrectly
+#
+cd ${PETSC_DIR}
+./config/configure.py \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--CFLAGS="-fPIC -Wno-error=implicit-function-declaration" \
+	--CXXFLAGS="-fPIC" \
+	--FFLAGS="-fPIC -fallow-argument-mismatch -fallow-invalid-boz" \
+	--with-shared-libraries=0 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-proc-filesystem=0 \
+	--with-mpiexec="${MPIEXEC_DIR}/mpiexec.exe" \
+	--with-mpi-lib=["-L${MSMPI_ROOT}/lib","-lmsmpi"] \
+	--with-mpi-include=["${MSMPI_ROOT}/include"] \
+	--download-fblaslapack=1 \
+	--download-metis=1 \
+	--download-metis-cmake-arguments="${MAKEFILE_GENERATOR}" \
+	--download-parmetis=1 \
+	--download-parmetis-cmake-arguments="${MAKEFILE_GENERATOR}" \
+	--download-scalapack=1 \
+	--download-scalapack-cmake-arguments="${MAKEFILE_GENERATOR}" \
+	--download-mumps=1
+
+# Compile and install
+make PETSC_DIR="${PETSC_DIR}" PETSC_ARCH="${PETSC_ARCH}" all
+make PETSC_DIR="${PETSC_DIR}" PETSC_ARCH="${PETSC_ARCH}" install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.15-babylon.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.15-babylon.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.15-babylon.sh	(revision 27955)
@@ -0,0 +1,47 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.15.3"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+cd ${PETSC_DIR}
+./config/configure.py \
+	--with-cc=icc --with-cxx=icpc --with-fc=ifort \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-pic=1 \
+	--download-fblaslapack=1 \
+	--download-mpich=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1 \
+	--download-zlib=1
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.15-discovery.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.15-discovery.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.15-discovery.sh	(revision 27955)
@@ -0,0 +1,50 @@
+#!/bin/bash
+set -eu
+
+## Constants
+#
+VER="3.15.3"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+cd ${PETSC_DIR}
+./config/configure.py \
+	COPTFLAGS="-g -O3" CXXOPTFLAGS="-g -O3" FOPTFLAGS="-g -O3" \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--with-make-np=20 \
+	--with-blas-lapack-dir=$MKL_ROOT \
+	--with-mpi-dir="/optnfs/el7/mpich/3.3-intel19.3/" \
+	--known-mpi-shared-libraries=1 \
+	--known-mpi-long-double=1 \
+	--known-mpi-int64_t=1 \
+	--known-mpi-c-double-complex=1 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-pic=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.15-pleiades.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.15-pleiades.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.15-pleiades.sh	(revision 27955)
@@ -0,0 +1,54 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.15.0"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+#
+# NOTE:
+# - Based on /nasa/petsc/3.7.5/intel_mpt/lib/petsc/conf/petscvariables (look 
+#	for CONFIGURE_OPTIONS)
+#
+cd ${PETSC_DIR}
+./config/configure.py \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--with-blas-lapack-dir="/nasa/intel/Compiler/2018.3.222/compilers_and_libraries_2018.3.222/linux/mkl" \
+	--with-scalapack-include=/nasa/intel/Compiler/2018.3.222/mkl/include \
+	--with-scalapack-lib="/nasa/intel/Compiler/2018.3.222/mkl/lib/intel64/libmkl_scalapack_lp64.so /nasa/intel/Compiler/2018.3.222/mkl/lib/intel64/libmkl_blacs_intelmpi_lp64.so" \
+	--with-make-np=10 \
+	--known-mpi-shared-libraries=1 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-batch=1  \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-scalapack=0
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.16-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.16-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.16-linux.sh	(revision 27955)
@@ -0,0 +1,52 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.16.6"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+#
+# NOTE:
+# - Added -Wno-error=implicit-function-declaration to CFLAGS for Clang >= 12. 
+#	(may need to remove it for earlier versions not using the C99 standard).
+#
+cd ${PETSC_DIR}
+./configure \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--CFLAGS="-Wno-error=implicit-function-declaration" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-pic=1 \
+	--download-fblaslapack=1 \
+	--download-mpich=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1 \
+	--download-zlib=1
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.16-mac.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.16-mac.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.16-mac.sh	(revision 27955)
@@ -0,0 +1,52 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.16.6"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+#
+# NOTE:
+# - Added -Wno-error=implicit-function-declaration to CFLAGS for Clang >= 12. 
+#	(may need to remove it for earlier versions not using the C99 standard).
+#
+cd ${PETSC_DIR}
+./configure \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--CFLAGS="-Wno-error=implicit-function-declaration" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-pic=1 \
+	--download-fblaslapack=1 \
+	--download-mpich=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1 \
+	--download-zlib=1
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.16-pleiades.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.16-pleiades.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.16-pleiades.sh	(revision 27955)
@@ -0,0 +1,55 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.16.6"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+
+# Configure
+#
+# NOTE:
+# - Based on /nasa/petsc/3.7.5/intel_mpt/lib/petsc/conf/petscvariables (look 
+#	for CONFIGURE_OPTIONS)
+#
+cd ${PETSC_DIR}
+./config/configure.py \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--with-blas-lapack-dir="/nasa/intel/Compiler/2018.3.222/compilers_and_libraries_2018.3.222/linux/mkl" \
+	--with-scalapack-include=/nasa/intel/Compiler/2018.3.222/mkl/include \
+	--with-scalapack-lib="/nasa/intel/Compiler/2018.3.222/mkl/lib/intel64/libmkl_scalapack_lp64.so /nasa/intel/Compiler/2018.3.222/mkl/lib/intel64/libmkl_blacs_intelmpi_lp64.so" \
+	--with-make-np=10 \
+	--known-mpi-shared-libraries=1 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-batch=1  \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-scalapack=0
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-discovery.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-discovery.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-discovery.sh	(revision 27955)
@@ -0,0 +1,50 @@
+#!/bin/bash
+set -eu
+
+## Constants
+#
+VER="3.17.4"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+cd ${PETSC_DIR}
+./config/configure.py \
+	COPTFLAGS="-g -O3" CXXOPTFLAGS="-g -O3" FOPTFLAGS="-g -O3" \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--with-make-np=20 \
+	--with-blas-lapack-dir=$MKL_ROOT \
+	--with-mpi-dir="/optnfs/el7/mpich/3.3-intel19.3/" \
+	--known-mpi-shared-libraries=1 \
+	--known-mpi-long-double=1 \
+	--known-mpi-int64_t=1 \
+	--known-mpi-c-double-complex=1 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-pic=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-linux-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-linux-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-linux-static.sh	(revision 27955)
@@ -0,0 +1,57 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.17.4"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+#
+# NOTE:
+# - Cannot use --with-fpic option when compiling static libs,
+#
+#		Cannot determine compiler PIC flags if shared libraries is turned off
+#		Either run using --with-shared-libraries or --with-pic=0 and supply the
+#		compiler PIC flag via CFLAGS, CXXXFLAGS, and FCFLAGS
+#
+cd ${PETSC_DIR}
+./configure \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--with-shared-libraries=0 \
+	--CFLAGS="-fPIC" \
+	--CXXFLAGS="-fPIC" \
+	--FFLAGS="-fPIC" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--download-fblaslapack=1 \
+	--download-mpich=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1 \
+	--download-zlib=1
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-linux.sh	(revision 27955)
@@ -0,0 +1,44 @@
+#!/bin/bash
+set -eu
+
+## Constants
+VER="3.17.4"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+cd ${PETSC_DIR}
+./configure \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-pic=1 \
+	--download-fblaslapack=1 \
+	--download-mpich=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1 \
+	--download-zlib=1
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-mac-intel.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-mac-intel.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-mac-intel.sh	(revision 27955)
@@ -0,0 +1,53 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.17.4"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+#
+# NOTE:
+# - Added -Wno-error=implicit-function-declaration to CFLAGS for Clang >= 12. 
+#	(may need to remove it for earlier versions not using the C99 standard).
+#
+cd ${PETSC_DIR}
+./configure \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--CFLAGS="-Wno-error=implicit-function-declaration" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-pic=1 \
+	--download-fblaslapack=1 \
+	--download-mpich=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1 \
+	--download-zlib=1
+
+# Compile and install
+make
+make install
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-mac-silicon-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-mac-silicon-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-mac-silicon-static.sh	(revision 27955)
@@ -0,0 +1,57 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.17.4"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+#
+# NOTE:
+# - Cannot use --with-fpic option when compiling static libs,
+#
+#		Cannot determine compiler PIC flags if shared libraries is turned off
+#		Either run using --with-shared-libraries or --with-pic=0 and supply the
+#		compiler PIC flag via CFLAGS, CXXXFLAGS, and FCFLAGS
+#
+cd ${PETSC_DIR}
+./configure \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--with-shared-libraries=0 \
+	--CFLAGS="-fPIC" \
+	--CXXFLAGS="-fPIC" \
+	--FFLAGS="-fPIC" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--download-fblaslapack=1 \
+	--download-mpich=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1 \
+	--download-zlib=1 
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-mac-silicon.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-mac-silicon.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-mac-silicon.sh	(revision 27955)
@@ -0,0 +1,46 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.17.4"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+cd ${PETSC_DIR}
+./configure \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-pic=1 \
+	--download-fblaslapack=1 \
+	--download-mpich=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1 \
+	--download-zlib=1 
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-pleiades.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-pleiades.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.17-pleiades.sh	(revision 27955)
@@ -0,0 +1,58 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.17.4"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/petsc-lite-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+#
+# NOTE:
+# - Options from,
+#
+# 		cat /nasa/petsc/3.14.5_toss3/lib/petsc/conf/petscvariables | grep CONF
+#
+cd ${PETSC_DIR}
+./configure \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--with-blas-lapack-dir="/nasa/intel/Compiler/2018.3.222/compilers_and_libraries_2018.3.222/linux/mkl" \
+	--with-scalapack-include="/nasa/intel/Compiler/2018.3.222/mkl/include" \
+	--with-scalapack-lib="/nasa/intel/Compiler/2018.3.222/mkl/lib/intel64/libmkl_scalapack_lp64.so /nasa/intel/Compiler/2018.3.222/mkl/lib/intel64/libmkl_blacs_intelmpi_lp64.so" \
+	--CFLAGS="-g -O3" \
+	--CXXFLAGS="-g -O3" \
+	--FFLAGS="-g -O3" \
+	--with-make-np=10 \
+	--with-batch=1 \
+	--with-pic=1 \
+	--with-shared-libraries=1 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--download-make=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.19-discovery.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.19-discovery.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.19-discovery.sh	(revision 27955)
@@ -0,0 +1,50 @@
+#!/bin/bash
+set -eu
+
+## Constants
+#
+VER="3.19.1"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+cd ${PETSC_DIR}
+./config/configure.py \
+	COPTFLAGS="-g -O3" CXXOPTFLAGS="-g -O3" FOPTFLAGS="-g -O3" \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--with-make-np=20 \
+	--with-blas-lapack-dir=$MKL_ROOT \
+	--with-mpi-dir="/optnfs/el7/mpich/3.3-intel19.3/" \
+	--known-mpi-shared-libraries=1 \
+	--known-mpi-long-double=1 \
+	--known-mpi-int64_t=1 \
+	--known-mpi-c-double-complex=1 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-pic=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1
+
+# Compile and install
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.19-mac-intel.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.19-mac-intel.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/petsc/install-3.19-mac-intel.sh	(revision 27955)
@@ -0,0 +1,54 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="3.19.5"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+#
+# NOTE:
+# - Added -Wno-error=implicit-function-declaration to CFLAGS for Clang >= 12. 
+#	(may need to remove it for earlier versions not using the C99 standard).
+#
+cd ${PETSC_DIR}
+./configure \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--CFLAGS="-Wno-error=implicit-function-declaration" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-pic=1 \
+	--download-fblaslapack=1 \
+	--download-mpich=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-mumps=1 \
+	--download-cmake=1 \
+	--download-zlib=1
+
+# Compile and install
+make
+make install
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/polygonclipper/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/polygonclipper/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/polygonclipper/install.sh	(revision 27955)
@@ -0,0 +1,19 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/PolygonClipper.zip' 'PolygonClipper.zip'
+
+#install
+mkdir install
+cd install
+mv ../PolygonClipper.zip .
+
+#uncompress
+unzip PolygonClipper.zip
+
+#Make
+mex  -compatibleArrayDims gpc.c gpc_mexfile.c -O -output PolygonClip
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/proj/install-6-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/proj/install-6-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/proj/install-6-static.sh	(revision 27955)
@@ -0,0 +1,57 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+VER="6.2.1"
+
+PREFIX="${ISSM_DIR}/externalpackages/proj/install" # Set to location where external package should be installed
+
+## Environment
+#
+export CC=mpicc
+export CXX=mpicxx
+
+# NOTE: On macOS, SQLite3 should be installed by default, but PROJ currently
+# requires,
+#
+#	SQLITE3_LIBS="-lsqlite3".
+#
+# On Ubuntu Linux, install the SQLite3 binary, libraries and headers with,
+#
+#	apt-get install sqlite3 libsqlite3-dev
+#
+export SQLITE3_LIBS="-lsqlite3"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/proj-${VER}.tar.gz" "proj-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf proj-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv proj-${VER}/* src
+rm -rf proj-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-dependency-tracking \
+	--enable-fast-install \
+	--disable-shared \
+	--disable-tiff
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/proj/install-6.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/proj/install-6.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/proj/install-6.sh	(revision 27955)
@@ -0,0 +1,56 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+VER="6.2.1"
+
+PREFIX="${ISSM_DIR}/externalpackages/proj/install" # Set to location where external package should be installed
+
+## Environment
+#
+export CC=mpicc
+export CXX=mpicxx
+
+# NOTE: On macOS, SQLite3 should be installed by default, but PROJ currently
+# requires,
+#
+#	SQLITE3_LIBS="-lsqlite3".
+#
+# On Ubuntu Linux, install the SQLite3 binary, libraries and headers with,
+#
+#	apt-get install sqlite3 libsqlite3-dev
+#
+export SQLITE3_LIBS="-lsqlite3"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/proj-${VER}.tar.gz" "proj-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf proj-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv proj-${VER}/* src
+rm -rf proj-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-dependency-tracking \
+	--enable-fast-install \
+	--disable-tiff
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/proj/install-8-static-with_tests.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/proj/install-8-static-with_tests.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/proj/install-8-static-with_tests.sh	(revision 27955)
@@ -0,0 +1,60 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+VER="8.1.0"
+
+PREFIX="${ISSM_DIR}/externalpackages/proj/install" # Set to location where external package should be installed
+
+## Environment
+#
+export CC=mpicc
+export CXX=mpicxx
+
+# NOTE: On macOS, SQLite3 should be installed by default, but PROJ currently 
+# requires,
+#
+#	SQLITE3_LIBS="-lsqlite3".
+#
+# On Ubuntu Linux, install the SQLite3 binary, libraries and headers with,
+#
+#	apt-get install sqlite3 libsqlite3-dev
+#
+export SQLITE3_LIBS="-lsqlite3"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/proj-${VER}.tar.gz" "proj-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf proj-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv proj-${VER}/* src
+rm -rf proj-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-dependency-tracking \
+	--enable-fast-install \
+	--disable-shared \
+	--disable-tiff
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make check
+	make install
+else
+	make -j $1
+	mack -j $1 check
+	make -j $1 install
+fi
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/proj/install-8-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/proj/install-8-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/proj/install-8-static.sh	(revision 27955)
@@ -0,0 +1,57 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+VER="8.1.0"
+
+PREFIX="${ISSM_DIR}/externalpackages/proj/install" # Set to location where external package should be installed
+
+## Environment
+#
+export CC=mpicc
+export CXX=mpicxx
+
+# NOTE: On macOS, SQLite3 should be installed by default, but PROJ currently 
+# requires,
+#
+#	SQLITE3_LIBS="-lsqlite3".
+#
+# On Ubuntu Linux, install the SQLite3 binary, libraries and headers with,
+#
+#	apt-get install sqlite3 libsqlite3-dev
+#
+export SQLITE3_LIBS="-lsqlite3"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/proj-${VER}.tar.gz" "proj-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf proj-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv proj-${VER}/* src
+rm -rf proj-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-dependency-tracking \
+	--enable-fast-install \
+	--disable-shared \
+	--disable-tiff
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/proj/install-8-with_tests.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/proj/install-8-with_tests.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/proj/install-8-with_tests.sh	(revision 27955)
@@ -0,0 +1,58 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+VER="8.1.0"
+
+PREFIX="${ISSM_DIR}/externalpackages/proj/install" # Set to location where external package should be installed
+
+## Environment
+#
+export CC=mpicc
+export CXX=mpicxx
+
+# NOTE: On macOS, SQLite3 should be installed by default, but PROJ currently 
+# requires,
+#
+#	SQLITE3_LIBS="-lsqlite3".
+#
+# On Ubuntu Linux, install the SQLite3 binary, libraries and headers with,
+#
+#	apt-get install sqlite3 libsqlite3-dev
+#
+export SQLITE3_LIBS="-lsqlite3"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/proj-${VER}.tar.gz" "proj-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf proj-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv proj-${VER}/* src
+rm -rf proj-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-dependency-tracking \
+	--enable-fast-install \
+	--disable-tiff
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make check
+	make install
+else
+	make -j $1
+	mack -j $1 check
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/proj/install-8.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/proj/install-8.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/proj/install-8.sh	(revision 27955)
@@ -0,0 +1,56 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+VER="8.1.0"
+
+PREFIX="${ISSM_DIR}/externalpackages/proj/install" # Set to location where external package should be installed
+
+## Environment
+#
+export CC=mpicc
+export CXX=mpicxx
+
+# NOTE: On macOS, SQLite3 should be installed by default, but PROJ currently 
+# requires,
+#
+#	SQLITE3_LIBS="-lsqlite3".
+#
+# On Ubuntu Linux, install the SQLite3 binary, libraries and headers with,
+#
+#	apt-get install sqlite3 libsqlite3-dev
+#
+export SQLITE3_LIBS="-lsqlite3"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/proj-${VER}.tar.gz" "proj-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf proj-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv proj-${VER}/* src
+rm -rf proj-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--disable-dependency-tracking \
+	--enable-fast-install \
+	--disable-tiff
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/pyclips/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/pyclips/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/pyclips/install.sh	(revision 27955)
@@ -0,0 +1,22 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+rm -rf pyclips-1.0.7.348
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/pyclips-1.0.7.348.tar.gz' 'pyclips-1.0.7.348.tar.gz'
+
+#Untar 
+tar -zxvf  pyclips-1.0.7.348.tar.gz
+
+#Move pyclips into install directory
+mv pyclips/* install
+rm -rf pyclips
+
+#install
+cd install
+python setup.py build
+sudo python setup.py install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/pysvn/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/pysvn/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/pysvn/install.sh	(revision 27955)
@@ -0,0 +1,26 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf pysvn-1.7.6
+mkdir src 
+
+export CC=/usr/local/gfortran/bin/gcc
+export CXX=/usr/local/gfortran/bin/g++
+export FFLAGS=-ff2c
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/pysvn-1.7.6.tar.gz' 'pysvn-1.7.6.tar.gz'
+
+#Untar 
+tar -zxvf  pysvn-1.7.6.tar.gz
+
+#Move pysvn into src directory
+mv pysvn-1.7.6/* src
+rm -rf pysvn-1.7.6
+
+$install
+cd src
+python setup.py build
+python setup.py install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/python/install-2-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/python/install-2-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/python/install-2-linux.sh	(revision 27955)
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+rm -rf Python-2.7.3
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh https://issm.ess.uci.edu/files/externalpackages/Python-2.7.3.tgz Python-2.7.3.tgz
+
+#Untar and move python into install directory
+tar -zxvf  Python-2.7.3.tgz
+mv Python-2.7.3/* src
+rm -rf Python-2.7.3
+
+#Configure python
+cd src 
+./configure \
+ --prefix="$ISSM_DIR/externalpackages/python/install" \
+ --enable-shared
+
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
+
+cd ../install/include
+cp python2.7/* ./
+cd ../lib
+ln -s  libpython2.7.so.1.0 libpython.so
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/python/install-2-mac-snowleopard.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/python/install-2-mac-snowleopard.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/python/install-2-mac-snowleopard.sh	(revision 27955)
@@ -0,0 +1,41 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+rm -rf Python-2.7.3
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh https://issm.ess.uci.edu/files/externalpackages/Python-2.7.3.tgz Python-2.7.3.tgz
+
+#exports
+export MACOSX_DEPLOYMENT_TARGET=10.6
+
+#Untar and move python into install directory
+tar -zxvf  Python-2.7.3.tgz
+mv Python-2.7.3/* src
+rm -rf Python-2.7.3
+
+#Configure doxygen
+cd src 
+# --enable-framework needs to have the form "$SOME_PATH/Library/Frameworks" to avoid installing components in /Applications directory
+# --prefix is recognized as $SOME_PATH as long as this form is taken, so it's not necessary to include
+./configure --enable-framework="$ISSM_DIR/externalpackages/python/install/Library/Frameworks" \
+	LDFLAGS="-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin10/4.6.2/ -lgfortran "
+
+#make
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
+
+cd ../install
+ln -s Library/Frameworks/Python.framework/Headers include
+ln -s Library/Frameworks/Python.framework/Versions/2.7/lib lib
+
+#Patch pyport.h:
+cd include
+patch pyport.h $ISSM_DIR/externalpackages/python/patches/pyport.h.patch
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/python/install-2-mac.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/python/install-2-mac.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/python/install-2-mac.sh	(revision 27955)
@@ -0,0 +1,40 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+rm -rf Python-2.7.3
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh https://issm.ess.uci.edu/files/externalpackages/Python-2.7.3.tgz Python-2.7.3.tgz
+
+#Untar and move python into install directory
+tar -zxvf  Python-2.7.3.tgz
+mv Python-2.7.3/* src
+rm -rf Python-2.7.3
+
+#Configure and compile
+cd src 
+./configure \
+ --enable-framework="$ISSM_DIR/externalpackages/python/install/Library/Frameworks" 
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
+
+cd ../install
+
+#get rid of bin, because it's just a copy of
+#Library/Frameworks/Python.framework/Versions/2.7/bin, and will not reflect
+#new changes being made
+rm -rf bin
+ln -s Library/Frameworks/Python.framework/Headers include
+ln -s Library/Frameworks/Python.framework/Versions/2.7/lib lib
+ln -s Library/Frameworks/Python.framework/Versions/2.7/bin bin
+
+#Patch pyport.h:
+cd include
+patch pyport.h $ISSM_DIR/externalpackages/python/patches/pyport.h.patch
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/python/install-3-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/python/install-3-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/python/install-3-linux.sh	(revision 27955)
@@ -0,0 +1,37 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+rm -rf Python-3.2.2
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh https://issm.ess.uci.edu/files/externalpackages/Python-3.2.2.tgz Python-3.2.2.tgz
+
+#exports
+export CC
+
+#Untar and move python into install directory
+tar -zxvf  Python-3.2.2.tgz
+mv Python-3.2.2/* src
+rm -rf Python-3.2.2
+
+#Configure python
+cd src 
+./configure \
+ --prefix="$ISSM_DIR/externalpackages/python/install" \
+ --enable-shared
+
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
+
+cd ../install/bin
+ln -s python3.2 python 
+cd ../
+ln -s Python.framework/Versions/3.2/include/python3.2m include
+ln -s Python.framework/Versions/3.2/lib/ lib
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/python/install-3-mac-snowleopard.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/python/install-3-mac-snowleopard.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/python/install-3-mac-snowleopard.sh	(revision 27955)
@@ -0,0 +1,41 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+rm -rf Python-3.2.2
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh https://issm.ess.uci.edu/files/externalpackages/Python-3.2.2.tgz Python-3.2.2.tgz
+
+#exports
+export CC
+export MACOSX_DEPLOYMENT_TARGET=10.6
+
+#Untar and move python into install directory
+tar -zxvf  Python-3.2.2.tgz
+mv Python-3.2.2/* src
+rm -rf Python-3.2.2
+
+#Configure doxygen
+cd src 
+# --enable-framework needs to have the form "$SOME_PATH/Library/Frameworks" to avoid installing components in /Applications directory
+# --prefix is recognized as $SOME_PATH as long as this form is taken, so it's not necessary to include
+./configure \
+ --enable-framework="$ISSM_DIR/externalpackages/python/install/Library/Frameworks" 
+
+#make
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
+cd ..
+
+cd install/bin
+ln -s python3.2 python 
+cd ../
+ln -s Python.framework/Versions/3.2/include/python3.2m include
+ln -s Python.framework/Versions/3.2/lib/ lib
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/python/install-3-mac.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/python/install-3-mac.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/python/install-3-mac.sh	(revision 27955)
@@ -0,0 +1,40 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+rm -rf Python-3.2.2
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh https://issm.ess.uci.edu/files/externalpackages/Python-3.2.2.tgz Python-3.2.2.tgz
+
+#exports
+export CC
+
+#Untar and move python into install directory
+tar -zxvf  Python-3.2.2.tgz
+mv Python-3.2.2/* src
+rm -rf Python-3.2.2
+
+#Configure doxygen
+cd src 
+./configure \
+ --enable-framework="$ISSM_DIR/externalpackages/python/install/Library/Frameworks" 
+
+#obsolete? 
+#./configure --prefix="$ISSM_DIR/externalpackages/python/install" --enable-framework="$ISSM_DIR/externalpackages/python/install"
+
+#make
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
+
+cd install/bin
+ln -s python3.2 python 
+cd ../
+ln -s Python.framework/Versions/3.2/include/python3.2m include
+ln -s Python.framework/Versions/3.2/lib/ lib
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/python/patches/pyport.h.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/python/patches/pyport.h.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/python/patches/pyport.h.patch	(revision 27955)
@@ -0,0 +1,22 @@
+680a681
+> #ifdef isalnum
+682a684,685
+> #endif
+> #ifdef isalpha
+684a688,689
+> #endif
+> #ifdef islower
+686a692,693
+> #endif
+> #ifdef isspace
+688a696,697
+> #endif
+> #ifdef isupper
+690a700,701
+> #endif
+> #ifdef tolower
+692a704,705
+> #endif
+> #ifdef toupper
+695a709
+> #endif
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/python/patches/pyport.h.patch.bugreport
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/python/patches/pyport.h.patch.bugreport	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/python/patches/pyport.h.patch.bugreport	(revision 27955)
@@ -0,0 +1,1 @@
+http://bugs.python.org/issue10910
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/qhull/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/qhull/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/qhull/install.sh	(revision 27955)
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install qhull-2003.1
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/qhull-2003.1.tar.gz' 'qhull-2003.1.tar.gz'
+
+#Untar 
+tar -zxvf  qhull-2003.1.tar.gz
+
+#Move qhull to src directory
+rm -rf src/*
+mv qhull-2003.1/* src/
+rm -rf qhull-2003.1
+
+#Configure qhull
+cd src
+./configure --prefix="$ISSM_DIR/externalpackages/qhull/install"
+make
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/rats/README
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/rats/README	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/rats/README	(revision 27955)
@@ -0,0 +1,3 @@
+Rought Auditing Tools for Software
+Obtained code from https://www.fortify.com/ssa-elements/threat-intelligence/rats.html
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/rats/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/rats/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/rats/install.sh	(revision 27955)
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -eu
+
+#Erase install
+rm -rf install  src rats-2.3
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/rats-2.3.tar.gz' 'rats-2.3.tar.gz'
+
+#install directory
+mkdir src
+tar -zxvf rats-2.3.tar.gz 
+mv rats-2.3/* src
+rm -rf rats-2.3
+
+#compile
+cd src
+./configure --prefix=$ISSM_DIR/externalpackages/rats/install
+make
+make install
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/readline/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/readline/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/readline/install.sh	(revision 27955)
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf readline-6.2.2
+mkdir src 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/readline-6.2.2.tar.gz' 'readline-6.2.2.tar.gz'
+
+#Untar 
+tar -zxvf  readline-6.2.2.tar.gz
+
+#Move readline into src directory
+mv readline-6.2.2/* src
+rm -rf readline-6.2.2
+
+#install
+cd src
+python setup.py install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/rose/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/rose/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/rose/install.sh	(revision 27955)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf source build install
+mkdir install source build
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/rose-0.9.5a-13219.tar.gz' 'rose-0.9.5a-13219.tar.gz'
+
+#Untar 
+tar -zxvf  rose-0.9.5a-13219.tar.gz
+
+#Move rose into install directory
+mv rose-0.9.5a-13219/* source
+rm -rf rose-0.9.5a-13219
+
+#Configure
+cd build
+../source/configure \
+	--prefix=$ISSM_DIR/externalpackages/rose/install \
+	--with-boost=$ISSM_DIR/externalpackages/boost/install\
+	--srcdir=$ISSM_DIR/externalpackages/rose/source
+
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/satstress/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/satstress/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/satstress/install.sh	(revision 27955)
@@ -0,0 +1,20 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install SatStress-0.1.2
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/SatStress-0.1.2.tar.gz' 'SatStress-0.1.2.tar.gz'
+
+#Untar 
+tar -zxvf  SatStress-0.1.2.tar.gz
+
+#Move SatStress into install directory
+mv SatStress-0.1.2/* install
+rm -rf SatStress-0.1.2
+
+#Compile SatStress
+cd install 
+make test
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/configs/2.0/linux/SLmake.inc.static
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/configs/2.0/linux/SLmake.inc.static	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/configs/2.0/linux/SLmake.inc.static	(revision 27955)
@@ -0,0 +1,60 @@
+############################################################################
+#
+#  Program:         ScaLAPACK
+#
+#  Module:          SLmake.inc
+#
+#  Purpose:         Top-level Definitions
+#
+#  Creation date:   February 15, 2000
+#
+#  Modified:        October 13, 2011
+#
+#  Send bug reports, comments or suggestions to scalapack@cs.utk.edu
+#
+############################################################################
+#
+#  C preprocessor definitions:  set CDEFS to one of the following:
+#
+#     -DNoChange (fortran subprogram names are lower case without any suffix)
+#     -DUpCase   (fortran subprogram names are upper case without any suffix)
+#     -DAdd_     (fortran subprogram names are lower case with "_" appended)
+
+CDEFS         = -DAdd_
+
+#
+#  The fortran and C compilers, loaders, and their flags
+#
+
+FC            = ${ISSM_DIR}/externalpackages/mpich/install/bin/mpifort
+CC            = ${ISSM_DIR}/externalpackages/mpich/install/bin/mpicc
+NOOPT         = -O0 -fPIC
+FCFLAGS       = -O3 -fPIC
+CCFLAGS       = -O3 -fPIC
+FCLOADER      = $(FC)
+CCLOADER      = $(CC)
+FCLOADFLAGS   = $(FCFLAGS)
+CCLOADFLAGS   = $(CCFLAGS)
+
+#
+#  The archiver and the flag(s) to use when building archive (library)
+#  Also the ranlib routine.  If your system has no ranlib, set RANLIB = echo
+#
+
+ARCH          = ar
+ARCHFLAGS     = cr
+RANLIB        = ranlib
+
+#
+#  The name of the ScaLAPACK library to be created
+#
+
+SCALAPACKLIB  = libscalapack.a
+
+#
+#  BLAS, LAPACK (and possibly other) libraries needed for linking test programs
+#
+
+BLASLIB       = -L${ISSM_DIR}/externalpackages/openblas/install/lib -lopenblas
+LAPACKLIB     = -L${ISSM_DIR}/externalpackages/openblas/install/lib -lopenblas
+LIBS          = $(LAPACKLIB) $(BLASLIB)
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/configs/2.1/win/msys2/gcc/msmpi/CMakeLists.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/configs/2.1/win/msys2/gcc/msmpi/CMakeLists.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/configs/2.1/win/msys2/gcc/msmpi/CMakeLists.txt	(revision 27955)
@@ -0,0 +1,277 @@
+cmake_minimum_required(VERSION 2.8)
+project(SCALAPACK C Fortran)
+# Configure the warning and code coverage suppression file
+configure_file( 
+  "${SCALAPACK_SOURCE_DIR}/CMAKE/CTestCustom.cmake.in"
+  "${SCALAPACK_BINARY_DIR}/CTestCustom.cmake"
+  COPYONLY
+)
+
+# Add the CMake directory for custon CMake modules
+set(CMAKE_MODULE_PATH "${SCALAPACK_SOURCE_DIR}/CMAKE" ${CMAKE_MODULE_PATH})
+
+if (UNIX)
+   if ( "${CMAKE_Fortran_COMPILER}" MATCHES "ifort" )
+  set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fltconsistency -fp_port" )
+   endif ()
+endif ()
+
+#
+#   MPI
+#
+if (LOCAL_MSMPI)
+  set(CMAKE_FIND_LIBRARY_PREFIXES "msys-" "")
+  set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll")
+  find_library(MSMPI msmpi PATHS ${MSMPI_ROOT}/lib)
+  if(MSMPI)
+    message(STATUS "--> Using MS-MPI library ${MSMPI}")
+  else(MSMPI)
+    message(FATAL_ERROR "MS-MPI library not found at ${MSMPI_ROOT}/lib")
+  endif()
+
+  include_directories("${MSMPI_ROOT}/include")
+endif()
+
+if (UNIX)
+   if ( "${CMAKE_Fortran_COMPILER}" MATCHES "ifort" )
+  set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fltconsistency -fp_port" )
+   endif ()
+endif ()
+
+macro(SCALAPACK_install_library lib)
+  install(TARGETS ${lib} EXPORT scalapack-targets
+    ARCHIVE DESTINATION lib${LIB_SUFFIX}
+    LIBRARY DESTINATION lib${LIB_SUFFIX}
+    RUNTIME DESTINATION Testing
+  )
+endmacro()
+
+# --------------------------------------------------
+# Testing
+SET(DART_TESTING_TIMEOUT 600)
+
+enable_testing()
+include(CTest)
+enable_testing()
+# --------------------------------------------------
+
+# Organize output files.  On Windows this also keeps .dll files next
+# to the .exe files that need them, making tests easy to run.
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${SCALAPACK_BINARY_DIR}/TESTING)
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${SCALAPACK_BINARY_DIR}/lib)
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${SCALAPACK_BINARY_DIR}/lib)
+
+# --------------------------------------------------
+# Check for any necessary platform specific compiler flags
+include( CheckBLACSCompilerFlags )
+CheckBLACSCompilerFlags()
+
+set(prefix ${CMAKE_INSTALL_PREFIX})
+set(libdir ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX})
+set(PKG_CONFIG_DIR ${libdir}/pkgconfig)
+
+# --------------------------------------------------
+# BLACS Internal variables
+#
+#   Fortran Mangling, MPI Tests and BLACS settings
+#
+include(FortranMangling)
+COMPILE(install_COMPILED)
+
+FORTRAN_MANGLING(CDEFS)
+#MESSAGE(STATUS "Setting CDEFS = ${CDEFS}")
+#set(CDEFS ${CDEFS} CACHE STRING "Fortran Mangling" FORCE)
+MESSAGE(STATUS "=========")
+
+# --------------------------------------------------
+# Compiler Flags
+ADD_DEFINITIONS( "-D${CDEFS}")
+
+# --------------------------------------------------
+# ScaLAPACK needs BLAS and LAPACK
+
+option(USE_OPTIMIZED_LAPACK_BLAS "Whether or not to search for optimized LAPACK and BLAS libraries on your machine (if not found, Reference LAPACK and BLAS will be downloaded and installed)" ON)
+
+message(STATUS "CHECKING BLAS AND LAPACK LIBRARIES")
+
+IF(BLAS_LIBRARIES)
+  include(CheckFortranFunctionExists)
+  message(STATUS "--> BLAS supplied by user is ${BLAS_LIBRARIES}.")
+  set(CMAKE_REQUIRED_LIBRARIES ${BLAS_LIBRARIES})
+  CHECK_FORTRAN_FUNCTION_EXISTS("dgemm" BLAS_FOUND)
+  unset(CMAKE_REQUIRED_LIBRARIES)
+  message(STATUS "--> BLAS routine dgemm is found: ${BLAS_FOUND}.")
+ENDIF()
+
+IF(LAPACK_LIBRARIES)
+  include(CheckFortranFunctionExists)
+  message(STATUS "--> LAPACK supplied by user is ${LAPACK_LIBRARIES}.")
+  set(CMAKE_REQUIRED_LIBRARIES ${LAPACK_LIBRARIES})
+  CHECK_FORTRAN_FUNCTION_EXISTS("dgesv" LAPACK_FOUND)
+  unset(CMAKE_REQUIRED_LIBRARIES)
+  message(STATUS "--> LAPACK routine dgesv is found: ${LAPACK_FOUND}.")
+ENDIF()
+
+if(BLAS_FOUND AND LAPACK_FOUND)
+  message(STATUS "--> LAPACK supplied by user is WORKING, will use ${LAPACK_LIBRARIES}.")
+else(LAPACK_FOUND)
+   if(USE_OPTIMIZED_LAPACK_BLAS)
+      message(STATUS "--> Searching for optimized LAPACK and BLAS libraries on your machine.")
+      find_package(LAPACK)
+   ENDIF(USE_OPTIMIZED_LAPACK_BLAS)
+   if(NOT LAPACK_FOUND)
+      message(STATUS "--> LAPACK and BLAS were not found. Reference LAPACK and BLAS will be downloaded and installed")
+      include(ExternalProject)
+      ExternalProject_Add(
+		lapack
+		URL http://www.netlib.org/lapack/lapack.tgz
+		CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${SCALAPACK_BINARY_DIR}
+        PREFIX ${SCALAPACK_BINARY_DIR}/dependencies
+      )
+	  if (UNIX)
+         SET(LAPACK_LIBRARIES ${SCALAPACK_BINARY_DIR}/lib/liblapack.a CACHE STRING "LAPACK library" FORCE)
+         SET(BLAS_LIBRARIES ${SCALAPACK_BINARY_DIR}/lib/libblas.a CACHE STRING "BLAS library" FORCE)
+	  else (UNIX) # On Windows
+         SET(LAPACK_LIBRARIES ${SCALAPACK_BINARY_DIR}/lib/liblapack.lib CACHE STRING "LAPACK library" FORCE)
+         SET(BLAS_LIBRARIES ${SCALAPACK_BINARY_DIR}/lib/libblas.lib CACHE STRING "BLAS library" FORCE)
+      endif (UNIX)
+   ENDIF()
+ENDIF()
+
+message(STATUS "BLAS library: ${BLAS_LIBRARIES}")
+message(STATUS "LAPACK library: ${LAPACK_LIBRARIES}")
+
+MESSAGE(STATUS "=========")
+
+# --------------------------------------------------
+# By default static library
+OPTION(BUILD_SHARED_LIBS "Build shared libraries" OFF )
+OPTION(BUILD_STATIC_LIBS "Build static libraries" ON )
+
+# --------------------------------------------------
+# Subdirectories that need to be processed
+   
+macro(append_subdir_files variable dirname)
+get_directory_property(holder DIRECTORY ${dirname} DEFINITION ${variable})
+foreach(depfile ${holder})
+  list(APPEND ${variable} "${dirname}/${depfile}")
+endforeach()
+endmacro()
+
+
+#
+# BLACS
+#
+add_subdirectory(BLACS)
+append_subdir_files(blacs "BLACS/SRC")
+
+#
+# TOOLS
+#
+add_subdirectory(TOOLS)
+append_subdir_files(tools TOOLS)
+append_subdir_files(tools-C TOOLS)
+append_subdir_files(extra_lapack "TOOLS/LAPACK")
+
+#
+# PBLAS
+#
+add_subdirectory(PBLAS)
+append_subdir_files(pblas "PBLAS/SRC")
+append_subdir_files(pblas-F "PBLAS/SRC")
+append_subdir_files(pbblas "PBLAS/SRC/PBBLAS")
+append_subdir_files(ptzblas "PBLAS/SRC/PTZBLAS")
+append_subdir_files(ptools "PBLAS/SRC/PTOOLS")
+
+#
+# REDIST
+#
+add_subdirectory(REDIST)
+append_subdir_files(redist "REDIST/SRC")
+
+#
+# SRC
+#
+add_subdirectory(SRC)
+append_subdir_files(src "SRC")
+append_subdir_files(src-C "SRC")
+
+if (UNIX)
+   add_library(scalapack ${blacs} ${tools} ${tools-C} ${extra_lapack} ${pblas} ${pblas-F} ${ptzblas} ${ptools} ${pbblas} ${redist} ${src} ${src-C})
+   target_link_libraries( scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} ${MSMPI})
+   scalapack_install_library(scalapack)
+else (UNIX) # Need to separate Fortran and C Code
+   OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON )
+   add_library(scalapack ${blacs} ${tools-C} ${pblas} ${ptools} ${redist} ${src-C})
+   target_link_libraries( scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} ${MSMPI})
+   add_library(scalapack-F ${pblas-F} ${pbblas} ${ptzblas} ${tools} ${src} ${extra_lapack})
+   target_link_libraries( scalapack-F ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} ${MSMPI})
+   scalapack_install_library(scalapack)
+   scalapack_install_library(scalapack-F)
+endif (UNIX)
+add_subdirectory(TESTING)
+
+# --------------------------------------------------
+# CPACK Packaging 
+
+SET(CPACK_PACKAGE_NAME "ScaLAPACK")
+SET(CPACK_PACKAGE_VENDOR "University of Tennessee, Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd")
+SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "ScaLAPACK- Linear Algebra Package")
+set(SCALAPACK_VERSION 2.0.2)
+set(CPACK_PACKAGE_VERSION_MAJOR 2)
+set(CPACK_PACKAGE_VERSION_MINOR 0)
+set(CPACK_PACKAGE_VERSION_PATCH 2)
+set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
+SET(CPACK_PACKAGE_INSTALL_DIRECTORY "SCALAPACK")
+IF(WIN32 AND NOT UNIX)
+  # There is a bug in NSI that does not handle full unix paths properly. Make
+  # sure there is at least one set of four (4) backslashes.
+  SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\http://icl.cs.utk.edu/lapack-forum")
+  SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\www.netlib.org/scalapack")
+  SET(CPACK_NSIS_CONTACT "scalapack@eecs.utk.edu")
+  SET(CPACK_NSIS_MODIFY_PATH ON)
+  SET(CPACK_NSIS_DISPLAY_NAME "SCALAPACK-${SCALAPACK_VERSION}")
+  set(CPACK_PACKAGE_RELOCATABLE "true")
+ELSE(WIN32 AND NOT UNIX)
+  SET(CPACK_GENERATOR "TGZ")
+  SET(CPACK_SOURCE_GENERATOR TGZ)
+  SET(CPACK_SOURCE_PACKAGE_FILE_NAME "scalapack-${SCALAPACK_VERSION}" )
+  SET(CPACK_SOURCE_IGNORE_FILES ~$ .svn ${CPACK_SOURCE_IGNORE_FILES} )
+ENDIF(WIN32 AND NOT UNIX)
+INCLUDE(CPack)
+
+
+# --------------------------------------------------
+
+
+export(TARGETS scalapack FILE scalapack-targets.cmake)
+
+if( NOT LAPACK_FOUND )
+ install(FILES
+  ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES}
+  DESTINATION lib
+   )
+endif( NOT LAPACK_FOUND )
+
+configure_file(${SCALAPACK_SOURCE_DIR}/CMAKE/scalapack-config-version.cmake.in
+  ${SCALAPACK_BINARY_DIR}/scalapack-config-version.cmake @ONLY)
+configure_file(${SCALAPACK_SOURCE_DIR}/CMAKE/scalapack-config-build.cmake.in
+  ${SCALAPACK_BINARY_DIR}/scalapack-config.cmake @ONLY)
+
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scalapack.pc.in ${CMAKE_CURRENT_BINARY_DIR}/scalapack.pc)
+ install(FILES
+  ${CMAKE_CURRENT_BINARY_DIR}/scalapack.pc
+  DESTINATION ${PKG_CONFIG_DIR}
+   )
+
+configure_file(${SCALAPACK_SOURCE_DIR}/CMAKE/scalapack-config-install.cmake.in
+  ${SCALAPACK_BINARY_DIR}/CMakeFiles/scalapack-config.cmake @ONLY)
+install(FILES
+  ${SCALAPACK_BINARY_DIR}/CMakeFiles/scalapack-config.cmake
+  ${SCALAPACK_BINARY_DIR}/scalapack-config-version.cmake
+  DESTINATION lib/cmake/scalapack-${SCALAPACK_VERSION}
+  )
+
+install(EXPORT scalapack-targets
+  DESTINATION lib/cmake/scalapack-${SCALAPACK_VERSION})
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/configs/2.1/win/msys2/mingw64/msmpi/BLACS/SRC/src-C.c.in
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/configs/2.1/win/msys2/mingw64/msmpi/BLACS/SRC/src-C.c.in	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/configs/2.1/win/msys2/mingw64/msmpi/BLACS/SRC/src-C.c.in	(revision 27955)
@@ -0,0 +1,2 @@
+#define CallFromC
+#include "./@src@"
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/configs/2.1/win/msys2/mingw64/msmpi/CMakeLists.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/configs/2.1/win/msys2/mingw64/msmpi/CMakeLists.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/configs/2.1/win/msys2/mingw64/msmpi/CMakeLists.txt	(revision 27955)
@@ -0,0 +1,323 @@
+cmake_minimum_required(VERSION 2.8)
+project(SCALAPACK C Fortran)
+# Configure the warning and code coverage suppression file
+configure_file( 
+  "${SCALAPACK_SOURCE_DIR}/CMAKE/CTestCustom.cmake.in"
+  "${SCALAPACK_BINARY_DIR}/CTestCustom.cmake"
+  COPYONLY
+)
+
+# Add the CMake directory for custon CMake modules
+set(CMAKE_MODULE_PATH "${SCALAPACK_SOURCE_DIR}/CMAKE" ${CMAKE_MODULE_PATH})
+
+if (UNIX)
+   if ( "${CMAKE_Fortran_COMPILER}" MATCHES "ifort" )
+  set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fltconsistency -fp_port" )
+   endif ()
+endif ()
+
+#
+#   MPI
+#
+# #set(MPI_BASE_DIR "/Users/julie/opt/openmpi/" CACHE PATH "MPI Path")
+# #set(MPI_BASE_DIR "/Users/julie/opt/mpich2/" CACHE PATH "MPI Path")
+# set(CMAKE_PREFIX_PATH "${MPI_BASE_DIR};${CMAKE_PREFIX_PATH}")
+# #set(MPI_COMPILER ${MPI_BASE_DIR}/bin/mpicc)
+
+# find_package(MPI)
+# if (MPI_FOUND)
+#    message(STATUS "Found MPI_LIBRARY : ${MPI_FOUND} ")
+#    INCLUDE_DIRECTORIES(${MPI_INCLUDE_PATH})
+
+#    find_program(MPI_C_COMPILER
+#       NAMES mpicc
+#       HINTS "${MPI_BASE_DIR}"
+#       PATH_SUFFIXES bin
+#       DOC "MPI C compiler.")
+#    MARK_AS_ADVANCED(MPI_C_COMPILER)
+#    if ("${MPI_C_COMPILER}" STREQUAL "MPI_C_COMPILER-NOTFOUND")
+#       message(ERROR "--> MPI C Compiler NOT FOUND (please set MPI_BASE_DIR accordingly")
+#    else()
+#       message(STATUS "--> MPI C Compiler : ${MPI_C_COMPILER}")
+#       SET(CMAKE_C_COMPILER "${MPI_C_COMPILER}")
+#       message(STATUS "--> C Compiler : ${CMAKE_C_COMPILER}")
+#    endif()
+#    find_program(MPI_Fortran_COMPILER
+#       NAMES mpif77
+#       HINTS "${MPI_BASE_DIR}"
+#       PATH_SUFFIXES bin
+#       DOC "MPI Fortran compiler.")
+#    MARK_AS_ADVANCED(MPI_Fortran_COMPILER)
+   
+   
+
+#    if ("${MPI_Fortran_COMPILER}" STREQUAL "MPI_Fortran_COMPILER-NOTFOUND")
+#       message(ERROR "--> MPI Fortran Compiler NOT FOUND (please set MPI_BASE_DIR accordingly")
+#    else()
+#       message(STATUS "--> MPI Fortran Compiler : ${MPI_Fortran_COMPILER}")
+#       SET(Fortran_COMPILER "${CMAKE_Fortran_COMPILER}")
+#       SET(CMAKE_Fortran_COMPILER "${MPI_Fortran_COMPILER}")
+#       message(STATUS "--> Fortran Compiler : ${CMAKE_Fortran_COMPILER}")
+#    endif()
+   
+# else()
+#    message(STATUS "Found MPI_LIBRARY : ${MPI_FOUND} ")
+#    set(MPI_BASE_DIR ${MPI_BASE_DIR} CACHE PATH "MPI Path")
+#    UNSET(MPIEXEC CACHE)
+#    UNSET(MPIEXEC_POSTFLAGS CACHE)
+#    UNSET(MPIEXEC_PREFLAGS CACHE)
+#    UNSET(MPIEXEC_MAX_NUMPROCS CACHE)
+#    UNSET(MPIEXEC_NUMPROC_FLAG CACHE)
+#    UNSET(MPI_COMPILE_FLAGS CACHE)
+#    UNSET(MPI_LINK_FLAGS CACHE)
+#    UNSET(MPI_INCLUDE_PATH CACHE)
+#    message(FATAL_ERROR "--> MPI Library NOT FOUND -- please set MPI_BASE_DIR accordingly --")
+# endif()
+
+if (LOCAL_MSMPI)
+  set(CMAKE_FIND_LIBRARY_PREFIXES "msys-" "")
+  set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll")
+  find_library(MSMPI msmpi PATHS "${MSMPI_ROOT}/lib")
+  if(MSMPI)
+    message(STATUS "--> Using MS-MPI library ${MSMPI}")
+  else(MSMPI)
+    message(FATAL_ERROR "MS-MPI library not found at ${MSMPI_PATH}/lib")
+  endif()
+
+  include_directories("${MSMPI_ROOT}/include")
+endif()
+
+if (UNIX)
+   if ( "${CMAKE_Fortran_COMPILER}" MATCHES "ifort" )
+  set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fltconsistency -fp_port" )
+   endif ()
+endif ()
+
+macro(SCALAPACK_install_library lib)
+  install(TARGETS ${lib} EXPORT scalapack-targets
+    ARCHIVE DESTINATION lib${LIB_SUFFIX}
+    LIBRARY DESTINATION lib${LIB_SUFFIX}
+    RUNTIME DESTINATION Testing
+  )
+endmacro()
+
+# --------------------------------------------------
+# Testing
+SET(DART_TESTING_TIMEOUT 600)
+
+enable_testing()
+include(CTest)
+enable_testing()
+# --------------------------------------------------
+
+# Organize output files.  On Windows this also keeps .dll files next
+# to the .exe files that need them, making tests easy to run.
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${SCALAPACK_BINARY_DIR}/TESTING)
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${SCALAPACK_BINARY_DIR}/lib)
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${SCALAPACK_BINARY_DIR}/lib)
+
+# --------------------------------------------------
+# Check for any necessary platform specific compiler flags
+include( CheckBLACSCompilerFlags )
+CheckBLACSCompilerFlags()
+
+set(prefix ${CMAKE_INSTALL_PREFIX})
+set(libdir ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX})
+set(PKG_CONFIG_DIR ${libdir}/pkgconfig)
+
+# --------------------------------------------------
+# BLACS Internal variables
+#
+#   Fortran Mangling, MPI Tests and BLACS settings
+#
+include(FortranMangling)
+COMPILE(install_COMPILED)
+
+FORTRAN_MANGLING(CDEFS)
+#MESSAGE(STATUS "Setting CDEFS = ${CDEFS}")
+#set(CDEFS ${CDEFS} CACHE STRING "Fortran Mangling" FORCE)
+MESSAGE(STATUS "=========")
+
+# --------------------------------------------------
+# Compiler Flags
+ADD_DEFINITIONS( "-D${CDEFS}")
+
+# --------------------------------------------------
+# ScaLAPACK needs BLAS and LAPACK
+
+option(USE_OPTIMIZED_LAPACK_BLAS "Whether or not to search for optimized LAPACK and BLAS libraries on your machine (if not found, Reference LAPACK and BLAS will be downloaded and installed)" ON)
+
+message(STATUS "CHECKING BLAS AND LAPACK LIBRARIES")
+
+IF(LAPACK_LIBRARIES)
+  include(CheckFortranFunctionExists)
+  message(STATUS "--> LAPACK supplied by user is ${LAPACK_LIBRARIES}.")
+  set(CMAKE_REQUIRED_LIBRARIES ${LAPACK_LIBRARIES})
+  CHECK_FORTRAN_FUNCTION_EXISTS("dgesv" LAPACK_FOUND)
+  unset( CMAKE_REQUIRED_LIBRARIES )
+  message(STATUS "--> LAPACK routine dgesv is found: ${LAPACK_FOUND}.")
+ENDIF()
+
+if(LAPACK_FOUND)
+      message(STATUS "--> LAPACK supplied by user is WORKING, will use ${LAPACK_LIBRARIES}.")
+else(LAPACK_FOUND)
+   if(USE_OPTIMIZED_LAPACK_BLAS)
+      message(STATUS "--> Searching for optimized LAPACK and BLAS libraries on your machine.")
+      find_package(LAPACK)
+   ENDIF(USE_OPTIMIZED_LAPACK_BLAS)
+   if(NOT LAPACK_FOUND)
+      message(STATUS "--> LAPACK and BLAS were not found. Reference LAPACK and BLAS will be downloaded and installed")
+      include(ExternalProject)
+      ExternalProject_Add(
+		lapack
+		URL http://www.netlib.org/lapack/lapack.tgz
+		CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${SCALAPACK_BINARY_DIR}
+        PREFIX ${SCALAPACK_BINARY_DIR}/dependencies
+      )
+	  if (UNIX)
+         SET(LAPACK_LIBRARIES ${SCALAPACK_BINARY_DIR}/lib/liblapack.a CACHE STRING "LAPACK library" FORCE)
+         SET(BLAS_LIBRARIES ${SCALAPACK_BINARY_DIR}/lib/libblas.a CACHE STRING "BLAS library" FORCE)
+	  else (UNIX) # On Windows
+         SET(LAPACK_LIBRARIES ${SCALAPACK_BINARY_DIR}/lib/liblapack.lib CACHE STRING "LAPACK library" FORCE)
+         SET(BLAS_LIBRARIES ${SCALAPACK_BINARY_DIR}/lib/libblas.lib CACHE STRING "BLAS library" FORCE)
+      endif (UNIX)
+   ENDIF()
+ENDIF()
+
+message(STATUS "BLAS library: ${BLAS_LIBRARIES}")
+message(STATUS "LAPACK library: ${LAPACK_LIBRARIES}")
+
+MESSAGE(STATUS "=========")
+
+# --------------------------------------------------
+# By default static library
+OPTION(BUILD_SHARED_LIBS "Build shared libraries" OFF )
+OPTION(BUILD_STATIC_LIBS "Build static libraries" ON )
+
+# --------------------------------------------------
+# Subdirectories that need to be processed
+   
+macro(append_subdir_files variable dirname)
+get_directory_property(holder DIRECTORY ${dirname} DEFINITION ${variable})
+foreach(depfile ${holder})
+  list(APPEND ${variable} "${dirname}/${depfile}")
+endforeach()
+endmacro()
+
+
+#
+# BLACS
+#
+add_subdirectory(BLACS)
+append_subdir_files(blacs "BLACS/SRC")
+
+#
+# TOOLS
+#
+add_subdirectory(TOOLS)
+append_subdir_files(tools TOOLS)
+append_subdir_files(tools-C TOOLS)
+append_subdir_files(extra_lapack "TOOLS/LAPACK")
+
+#
+# PBLAS
+#
+add_subdirectory(PBLAS)
+append_subdir_files(pblas "PBLAS/SRC")
+append_subdir_files(pblas-F "PBLAS/SRC")
+append_subdir_files(pbblas "PBLAS/SRC/PBBLAS")
+append_subdir_files(ptzblas "PBLAS/SRC/PTZBLAS")
+append_subdir_files(ptools "PBLAS/SRC/PTOOLS")
+
+#
+# REDIST
+#
+add_subdirectory(REDIST)
+append_subdir_files(redist "REDIST/SRC")
+
+#
+# SRC
+#
+add_subdirectory(SRC)
+append_subdir_files(src "SRC")
+append_subdir_files(src-C "SRC")
+
+# if (UNIX)
+   add_library(scalapack ${blacs} ${tools} ${tools-C} ${extra_lapack} ${pblas} ${pblas-F} ${ptzblas} ${ptools} ${pbblas} ${redist} ${src} ${src-C})
+   target_link_libraries( scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} ${MSMPI})
+   scalapack_install_library(scalapack)
+# else (UNIX) # Need to separate Fortran and C Code
+#    OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON )
+#    add_library(scalapack ${blacs} ${tools-C} ${pblas} ${ptools} ${redist} ${src-C})
+#    target_link_libraries( scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
+#    add_library(scalapack-F ${blacs} ${pblas-F} ${pbblas} ${ptzblas} ${tools} ${src} ${extra_lapack} )
+#    target_link_libraries( scalapack-F ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} ${MSMPI})
+#    scalapack_install_library(scalapack)
+#    scalapack_install_library(scalapack-F)
+# endif (UNIX)
+add_subdirectory(TESTING)
+
+# --------------------------------------------------
+# CPACK Packaging 
+
+SET(CPACK_PACKAGE_NAME "ScaLAPACK")
+SET(CPACK_PACKAGE_VENDOR "University of Tennessee, Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd")
+SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "ScaLAPACK- Linear Algebra Package")
+set(SCALAPACK_VERSION 2.1.0)
+set(CPACK_PACKAGE_VERSION_MAJOR 2)
+set(CPACK_PACKAGE_VERSION_MINOR 1)
+set(CPACK_PACKAGE_VERSION_PATCH 0)
+set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
+SET(CPACK_PACKAGE_INSTALL_DIRECTORY "SCALAPACK")
+IF(WIN32 AND NOT UNIX)
+  # There is a bug in NSI that does not handle full unix paths properly. Make
+  # sure there is at least one set of four (4) backlasshes.
+  SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\http://icl.cs.utk.edu/lapack-forum")
+  SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\www.netlib.org/scalapack")
+  SET(CPACK_NSIS_CONTACT "scalapack@eecs.utk.edu")
+  SET(CPACK_NSIS_MODIFY_PATH ON)
+  SET(CPACK_NSIS_DISPLAY_NAME "SCALAPACK-${SCALAPACK_VERSION}")
+  set(CPACK_PACKAGE_RELOCATABLE "true")
+ELSE(WIN32 AND NOT UNIX)
+  SET(CPACK_GENERATOR "TGZ")
+  SET(CPACK_SOURCE_GENERATOR TGZ)
+  SET(CPACK_SOURCE_PACKAGE_FILE_NAME "scalapack-${SCALAPACK_VERSION}" )
+  SET(CPACK_SOURCE_IGNORE_FILES ~$ .svn ${CPACK_SOURCE_IGNORE_FILES} )
+ENDIF(WIN32 AND NOT UNIX)
+INCLUDE(CPack)
+
+
+# --------------------------------------------------
+
+
+export(TARGETS scalapack FILE scalapack-targets.cmake)
+
+if( NOT LAPACK_FOUND )
+ install(FILES
+  ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES}
+  DESTINATION lib
+   )
+endif( NOT LAPACK_FOUND )
+
+configure_file(${SCALAPACK_SOURCE_DIR}/CMAKE/scalapack-config-version.cmake.in
+  ${SCALAPACK_BINARY_DIR}/scalapack-config-version.cmake @ONLY)
+configure_file(${SCALAPACK_SOURCE_DIR}/CMAKE/scalapack-config-build.cmake.in
+  ${SCALAPACK_BINARY_DIR}/scalapack-config.cmake @ONLY)
+
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scalapack.pc.in ${CMAKE_CURRENT_BINARY_DIR}/scalapack.pc)
+ install(FILES
+  ${CMAKE_CURRENT_BINARY_DIR}/scalapack.pc
+  DESTINATION ${PKG_CONFIG_DIR}
+   )
+
+configure_file(${SCALAPACK_SOURCE_DIR}/CMAKE/scalapack-config-install.cmake.in
+  ${SCALAPACK_BINARY_DIR}/CMakeFiles/scalapack-config.cmake @ONLY)
+install(FILES
+  ${SCALAPACK_BINARY_DIR}/CMakeFiles/scalapack-config.cmake
+  ${SCALAPACK_BINARY_DIR}/scalapack-config-version.cmake
+  DESTINATION lib/cmake/scalapack-${SCALAPACK_VERSION}
+  )
+
+install(EXPORT scalapack-targets
+  DESTINATION lib/cmake/scalapack-${SCALAPACK_VERSION})
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/install-2-win-msys2-gcc-msmpi.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/install-2-win-msys2-gcc-msmpi.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/install-2-win-msys2-gcc-msmpi.sh	(revision 27955)
@@ -0,0 +1,70 @@
+#!/bin/bash
+set -eu
+
+
+# NOTE:
+# - This configuration depends on the successful installation of METIS via 
+# 	$ISSM_DIR/externalpackages/metis/install-5-win-msys2-gcc-msmpi.sh
+# - MSMPI_ROOT should be available after etc/environment.sh is 
+#	sourced
+#
+
+## Constants
+#
+VER=2.1.0
+
+PREFIX="${ISSM_DIR}/externalpackages/scalapack/install"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/scalapack-${VER}.tgz" "scalapack-${VER}.tgz"
+
+# Unpack source
+tar -zxvf scalapack-${VER}.tgz
+
+# Move source into 'src' directory
+mv scalapack-${VER}/* src
+rm -rf scalapack-${VER}
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/2.1/win/msys2/gcc/msmpi/CMakeLists.txt src
+
+# Compile
+#
+# NOTE:
+# - The CMakeLists.txt copied above is really just hacked from the original to 
+#	push through library and include paths, especially in the case of the 
+#	MS-MPI assets
+# - Added -fallow-argument-mismatch option to CMAKE_Fortran_FLAGS in order to 
+#	clear "Error: Rank mismatch between actual argument at [...]"
+# - Added -fallow-invalid-boz option to CMAKE_Fortran_FLAGS in order to clear 
+#	"Error: BOZ literal constant at [...]"
+#
+# TODO:
+# - Modify CMakeLists.txt to allow for more flexibility in configuration
+#
+cd src
+cmake \
+	-DCMAKE_INSTALL_PREFIX=${PREFIX} \
+	-DBUILD_SHARED_LIBS=ON \
+	-DCMAKE_C_COMPILER=/usr/bin/gcc \
+	-DCMAKE_Fortran_COMPILER=/usr/bin/gfortran \
+	-DCMAKE_Fortran_FLAGS="-fallow-argument-mismatch -fallow-invalid-boz" \
+	-DLOCAL_MSMPI=1 \
+	-DMSMPI_ROOT="${MSMPI_ROOT}" \
+	-DBLAS_LIBRARIES="-L${BLAS_ROOT}/lib -lblas" \
+	-DLAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -llapack" \
+	.
+
+make
+
+# Install
+mkdir ${PREFIX}/lib
+cp TESTING/msys-scalapack.dll ${PREFIX}/lib
+
+# Create link to shared version of library so that libtool can find it
+cd ${PREFIX}/lib
+ln -s ./msys-scalapack.dll ./libscalapack.dll
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/install-2-win-msys2-mingw-msmpi.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/install-2-win-msys2-mingw-msmpi.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/install-2-win-msys2-mingw-msmpi.sh	(revision 27955)
@@ -0,0 +1,73 @@
+#!/bin/bash
+set -eu
+
+
+# NOTE:
+# - This configuration depends on the successful installation of METIS via 
+# 	$ISSM_DIR/externalpackages/metis/install-5-win-msys2-gcc-msmpi.sh
+# - MSMPI_ROOT should be available after etc/environment.sh is 
+#	sourced
+#
+
+## Constants
+#
+VER=2.1.0
+
+PREFIX="${ISSM_DIR}/externalpackages/scalapack/install"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/scalapack-${VER}.tgz" "scalapack-${VER}.tgz"
+
+# Unpack source
+tar -zxvf scalapack-${VER}.tgz
+
+# Move source into 'src' directory
+mv scalapack-${VER}/* src
+rm -rf scalapack-${VER}
+
+# Copy customized source and configuration files to 'src' directory
+cp configs/2.1/win/msys2/mingw64/msmpi/CMakeLists.txt src
+cp configs/2.1/win/msys2/mingw64/msmpi/BLACS/SRC/src-C.c.in src/BLACS/SRC
+
+# Compile
+#
+# NOTE:
+# - The CMakeLists.txt copied above is really just hacked from the original to 
+#	push through library and include paths, especially in the case of the 
+#	MS-MPI assets
+# - Added -fallow-argument-mismatch option to CMAKE_Fortran_FLAGS in order to 
+#	clear "Error: Rank mismatch between actual argument at [...]"
+# - Added -fallow-invalid-boz option to CMAKE_Fortran_FLAGS in order to clear 
+#	"Error: BOZ literal constant at [...]"
+#
+# TODO:
+# - Modify CMakeLists.txt to allow for more flexibility in configuration
+#
+cd src
+cmake \
+	-DCMAKE_INSTALL_PREFIX=${PREFIX} \
+	-DBUILD_SHARED_LIBS=ON \
+	-DBUILD_STATIC_LIBS=OFF \
+	-DCMAKE_C_COMPILER=/mingw64/bin/gcc \
+	-DCMAKE_C_FLAGS="-Wno-error=implicit-function-declaration" \
+	-DCMAKE_Fortran_COMPILER=/mingw64/bin/gfortran \
+	-DCMAKE_Fortran_FLAGS="-fallow-argument-mismatch -fallow-invalid-boz" \
+	-DLOCAL_MSMPI=1 \
+	-DMSMPI_ROOT="${MSMPI_ROOT}" \
+	-DBLAS_LIBRARIES="-L${BLAS_ROOT}/lib -lblas" \
+	-DLAPACK_LIBRARIES="-L${LAPACK_ROOT}/lib -llapack" \
+	.
+
+make
+
+# Install
+mkdir ${PREFIX}/lib
+cp lib/libscalapack.* ${PREFIX}/lib
+
+# Create link to shared version of library so that libtool can find it
+cd ${PREFIX}/lib
+ln -s liblapack.so liblapack.dll
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/install-2.0-linux-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/install-2.0-linux-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scalapack/install-2.0-linux-static.sh	(revision 27955)
@@ -0,0 +1,43 @@
+#!/bin/bash
+set -eu
+
+
+## NOTE: This install script uses make directly rather than CMake and then make
+
+## Constants
+#
+PKG="scalapack"
+VER="2.0.2"
+
+## Environment
+#
+export MPI_BASE_DIR="${ISSM_DIR}/externalpackages/mpich/install"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/${PKG}-${VER}.tgz" "${PKG}-${VER}.tgz"
+
+# Unpack source
+tar -zxvf ${PKG}-${VER}.tgz
+
+# Cleanup
+rm -rf build install src
+mkdir build install install/lib src
+
+# Move source to 'src' directory
+mv ${PKG}-${VER}/* src
+rm -rf ${PKG}-${VER}
+
+# Copy customized source and config files to 'src' directory
+cp configs/2.0/linux/SLmake.inc.static src/SLmake.inc
+
+# Compile
+cd src
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+
+# Install
+cd ..
+cp ./src/lib*.* ./install/lib
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scipy/README
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scipy/README	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scipy/README	(revision 27955)
@@ -0,0 +1,9 @@
+For OSX 10.7 (Lion), the instructions here can be followed:  
+http://www.scipy.org/Installing_SciPy/Mac_OS_X
+
+For OSX 10.6 (Snow Leopard), the scipy folks recommend gcc and g++ version 4.0.
+However, ISSM needs the gfortran version recommended in $ISSM_DIR/externalpackages/gfortran.
+On the webpage listed above, make sure the "export CC" and "export CXX" commands point to the 
+binaries associated with this gfortran version (likely in /usr/local/gfortran/bin by default).
+Once this gfortran is installed, the install script in this directory for Snow Leopard should
+work.
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scipy/install-linux64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scipy/install-linux64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scipy/install-linux64.sh	(revision 27955)
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -eu
+
+export CC="gcc -fPIC"
+export CXX="g++ -fPIC"
+export F77="gfortran -fPIC"
+export FC="gfortran -fPIC"
+export FFLAGS=-ff2c
+
+#clean up
+rm -rf scipy
+#download scipy
+export GIT_SSL_NO_VERIFY=true 
+git clone https://github.com/scipy/scipy.git
+
+#install scipy
+cd scipy
+export  BLAS_SRC=$ISSM_DIR/externalpackages/blas/install/lib
+export  BLAS=$ISSM_DIR/externalpackages/blas/install/lib
+export  LAPACK_SRC=$ISSM_DIR/externalpackages/lapack/install/lib
+export  LAPACK=$ISSM_DIR/externalpackages/lapack/install/lib
+
+python setup.py build
+python setup.py install
+cd ..
+python -c "import scipy; print 'Installed SciPy', scipy.__version__"
+#python -c "import scipy; scipy.test()"
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scipy/install-macosx-lion.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scipy/install-macosx-lion.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scipy/install-macosx-lion.sh	(revision 27955)
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -eu
+
+export CC=gcc
+export CXX=g++
+export FFLAGS=-ff2c
+	
+#download scipy
+git clone https://github.com/scipy/scipy.git
+
+#install scipy
+cd scipy
+export  BLAS_SRC=$ISSM_DIR/externalpackages/blas/install/lib
+export  BLAS=$ISSM_DIR/externalpackages/blas/install/lib
+export  LAPACK_SRC=$ISSM_DIR/externalpackages/lapack/install/lib
+export  LAPACK=$ISSM_DIR/externalpackages/lapack/install/lib
+
+#install scipy
+python setup.py build
+python setup.py install
+cd ..
+python -c "import scipy; print 'Installed SciPy', scipy.__version__"
+#python -c "import scipy; scipy.test()"
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scipy/install-macosx-mlion.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scipy/install-macosx-mlion.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scipy/install-macosx-mlion.sh	(revision 27955)
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -eu
+
+export CC=gcc
+export CXX=g++
+export FFLAGS=-ff2c
+	
+#download scipy
+git clone https://github.com/scipy/scipy.git
+
+#install scipy
+cd scipy
+export  BLAS_SRC=$ISSM_DIR/externalpackages/blas/install/lib
+export  BLAS=$ISSM_DIR/externalpackages/blas/install/lib
+export  LAPACK_SRC=$ISSM_DIR/externalpackages/lapack/install/lib
+export  LAPACK=$ISSM_DIR/externalpackages/lapack/install/lib
+
+#install scipy
+python setup.py build
+python setup.py install
+cd ..
+python -c "import scipy; print 'Installed SciPy', scipy.__version__"
+#python -c "import scipy; scipy.test()"
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scipy/install-macosx-snowleopard.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scipy/install-macosx-snowleopard.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scipy/install-macosx-snowleopard.sh	(revision 27955)
@@ -0,0 +1,19 @@
+#!/bin/bash
+set -eu
+
+# On OSX 10.6, fgortran gets installed in /usr/local/gfortran 
+#export PATH="/usr/local/gfortran/bin/:$PATH"
+export F77="/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran"
+export CC="/usr/bin/gcc"
+export CXX="/usr/bin/g++"
+
+#download scipy
+git clone https://github.com/scipy/scipy.git
+
+#install scipy
+cd scipy
+python setup.py build
+python setup.py install
+cd ..
+python -c "import scipy; print 'Installed SciPy', scipy.__version__"
+#python -c "import scipy; scipy.test()"
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/Makefile.inc
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/Makefile.inc	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/Makefile.inc	(revision 27955)
@@ -0,0 +1,26 @@
+EXE	=
+LIB	= .a
+OBJ	= .o
+MEX	= .mexa64
+
+MAKE	= make
+AR	= ar
+ARFLAGS	= -ruv
+CAT	= cat
+CCS	= gcc
+CCP     = mpicc
+CCD     = mpicc
+CCM	= ${MATLAB_DIR}/bin/mex
+#CFLAGS	= -m64 -O3 -std=c99 -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t -DCOMMON_TIMING_OLD -DMATLAB -fPIC -I${MATLAB_DIR}/extern/include
+CFLAGS	= -m64 -O3 -std=c99 -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t -DCOMMON_TIMING_OLD -fPIC
+#LDFLAGS	= -lz -lm -lrt -L${MATLAB_DIR}/bin/glnxa64 -lmex -lmat
+#LDFLAGS	= -lz -lm -lrt -Wl,-rpath-link,${MATLAB_DIR}/bin/glnxa64 -L${MATLAB_DIR}/bin/glnxa64 -lmex -lmat
+LDFLAGS	= -lz -lm -lrt
+MFLAGS	= -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t -DCOMMON_TIMING_OLD -DNOFILEIO -DMATLAB -I${MATLAB_DIR}/extern/include -largeArrayDims
+CP	= cp
+LEX	= flex
+LN	= ln
+MKDIR	= mkdir
+MV	= mv
+RANLIB	= ranlib
+YACC	= yacc
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/Makefile.inc.mac
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/Makefile.inc.mac	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/Makefile.inc.mac	(revision 27955)
@@ -0,0 +1,26 @@
+EXE	=
+LIB	= .a
+OBJ	= .o
+MEX	= .mexa64
+
+MAKE	= make
+AR	= ar
+ARFLAGS	= -ruv
+CAT	= cat
+CCS	= gcc
+CCP     = mpicc
+CCD     = mpicc
+CCM	= ${MATLAB_DIR}/bin/mex
+#CFLAGS	= -m64 -O3 -std=c99 -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t -DCOMMON_TIMING_OLD -DMATLAB -fPIC -I${MATLAB_DIR}/extern/include
+CFLAGS	= -m64 -O3 -std=c99 -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t -DCOMMON_TIMING_OLD -fPIC
+#LDFLAGS	= -lz -lm -L${MATLAB_DIR}/bin/glnxa64 -lmex -lmat
+#LDFLAGS	= -lz -lm -Wl,-rpath-link,${MATLAB_DIR}/bin/glnxa64 -L${MATLAB_DIR}/bin/glnxa64 -lmex -lmat
+LDFLAGS	= -lz -lm 
+MFLAGS	= -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t -DCOMMON_TIMING_OLD -DNOFILEIO -DMATLAB -I${MATLAB_DIR}/extern/include -largeArrayDims
+CP	= cp
+LEX	= flex
+LN	= ln
+MKDIR	= mkdir
+MV	= mv
+RANLIB	= ranlib
+YACC	= yacc
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/configs/6.0/linux/Makefile.inc.linux-parallel-static
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/configs/6.0/linux/Makefile.inc.linux-parallel-static	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/configs/6.0/linux/Makefile.inc.linux-parallel-static	(revision 27955)
@@ -0,0 +1,21 @@
+EXE		=
+LIB		= .a
+OBJ		= .o
+
+MAKE		= make
+AR		= ar
+ARFLAGS		= -ruv
+CAT		= cat
+CCS		= gcc
+CCP		= ${ISSM_DIR}/externalpackages/mpich/install/bin/mpicc
+CCD		= gcc
+CFLAGS		= -O3 -fPIC -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_PTHREAD -Drestrict=__restrict -DIDXSIZE64
+CLIBFLAGS	=
+LDFLAGS		= -lz -lm -lrt -pthread
+CP		= cp
+LEX		= flex -Pscotchyy -olex.yy.c
+LN		= ln
+MKDIR		= mkdir -p
+MV		= mv
+RANLIB		= ranlib
+YACC		= bison -pscotchyy -y -b y
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/gmap.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/gmap.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/gmap.m	(revision 27955)
@@ -0,0 +1,66 @@
+%
+%  function to call the gmap module of the scotch partitioner.
+%
+%  [maptab]=gmap(adj_mat,vlist,vwgt,ewgt,atype,apar,...
+%                options)
+%
+%  where the required input is:
+%    adj_mat    (double [sparse nv x nv], vertex adjacency matrix)
+%    vlist      (double [nv], vertex labels or [])
+%    vwgt       (double [nv], vertex weights (integers) or [])
+%    ewgt       (double [sparse nv x nv], edge weights (integers) or [])
+%    atype      (character, architecture type)
+%                 'cmplt'      complete graph
+%                 'cmpltw'     weighted complete graph
+%                 'hcub'       binary hypercube
+%                 'leaf'       tree-leaf architecture
+%                 'mesh2d'     bidimensional array
+%                 'mesh3d'     tridimensional array
+%                 'torus2d'    bidimensional array with wraparound edges
+%                 'torus3d'    tridimensional array with wraparound edges
+%    apars      (double, architecture params (corresponding to atype))
+%                 [size]                     cmplt
+%                 [size load0 load1 ...]     cmpltw
+%                 [dim]                      hcub
+%                 [height cluster weight]    leaf
+%                 [dimX dimY]                mesh2d
+%                 [dimX dimY dimZ]           mesh3d
+%                 [dimX dimY]                torus2d
+%                 [dimX dimY dimZ]           torus3d
+%
+%  the required output is:
+%    maptab     (double [nv x 2], vertex labels and partitions)
+%
+%  the optional input is:
+%    options    (character, options to gmap)
+%               "  -h         : Display this help"
+%               "  -m<strat>  : Set mapping strategy (see user's manual)"
+%               "  -s<obj>    : Force unity weights on <obj>:"
+%               "                 e  : edges"
+%               "                 v  : vertices"
+%               "  -V         : Print program version and copyright"
+%               "  -v<verb>   : Set verbose mode to <verb>:"
+%               "                 m  : mapping information"
+%               "                 s  : strategy information"
+%               "                 t  : timing information"
+%               ""
+%               "See default strategy with option '-vs'"
+%
+function [maptab]=gmap(adj_mat,vlist,vwgt,ewgt,atype,apars,...
+                       varargin)
+
+if ~nargin
+    help gmap
+    return
+end
+
+%  gmap_mex uses static variables, so clear those out before every run
+clear gmap_mex
+
+[maptab]=gmap_mex(adj_mat,vlist,vwgt,ewgt,atype,apars,...
+                  varargin{:});
+
+%  doesn't hurt to clear out after every run, too
+clear gmap_mex
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/gmap_mex.c
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/gmap_mex.c	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/gmap_mex.c	(revision 27955)
@@ -0,0 +1,286 @@
+
+#define THISFUNCTION "Gmap"
+
+/*  Gmap structures and prototypes  */
+
+#ifdef MATLAB
+		#include "mat.h"
+		#include "mex.h"
+		#include "matrix.h"
+
+		#define printf mexPrintf
+		#define fprintf(file,...) (file == stdout || file == stderr ? mexPrintf(__VA_ARGS__) : fprintf(file,__VA_ARGS__))
+		#define malloc mxMalloc
+		#define calloc mxCalloc
+		#define realloc mxRealloc
+		#define free mxFree
+		#define exit(status) mexErrMsgTxt("exit=" #status)
+#endif
+
+void GmapUsage( void );
+
+
+int
+gmapx (
+	int                 (**pmaptabi)[2],
+	int                 argcm,
+	char                *argvm[],
+	int                 nvi,
+	int                 ne2i,
+	int                 *ir,
+	int                 *jc,
+	int                 *vli,
+	int                 *vwi,
+	int                 *ewi,
+	char                archtyp[],
+	int                 nai,
+	int                 *api);
+
+/******************************/
+/*                            */
+/* This is the main function. */
+/*                            */
+/******************************/
+
+void mexFunction( int nlhs,
+				  mxArray *plhs[],
+				  int nrhs,
+				  const mxArray *prhs[] )
+{
+	int     argcm;
+	char    **argvm=NULL;
+	int     nvert =0,nedge2=0,napar =0;
+	mwIndex *ir=NULL,*jc=NULL;
+	int     *adjir=NULL,*adjjc=NULL;
+	double  *vld=NULL,*vwd=NULL,*ewd=NULL,*apd=NULL;
+	int     *vli=NULL,*vwi=NULL,*ewi=NULL,*api=NULL;
+	char    *archtyp=NULL;
+	int     (*maptabi)[2]=NULL;
+	double* maptabd=NULL;
+	int     i,j,k,imi=0,imo=0,isi=0,ierr;
+
+	/* Check for proper number of arguments */
+   
+	if      (nrhs == 0 && nlhs == 0) {
+		GmapUsage();
+		return;
+	}
+	else if (nrhs <  6 || nlhs >  1) {
+		GmapUsage();
+		mexErrMsgTxt(" ");
+	}
+
+/*  load matlab argument list and convert to integer (note that converting here
+	and in the x-layer is inefficient, but it makes the x-layer more general)  */
+
+	argvm = (char **) calloc(nrhs,sizeof(char *));
+
+	if (!(mxIsNumeric(prhs[imi]) &&
+		  (mxGetM(prhs[imi]) == 1 && mxGetN(prhs[imi]) == 1))) {
+		argvm[isi] = (char *) calloc(4+1,sizeof(char));
+		strcpy(argvm[isi],"gmap");
+		mexPrintf("%s -- Using \"%s\" entry point.\n",
+				  THISFUNCTION,argvm[isi]);
+		isi++;
+	}
+	else {
+		argvm[isi] = (char *) calloc(5+1,sizeof(char));
+		strcpy(argvm[isi],"gpart");
+		mexPrintf("%s -- Using \"%s\" entry point.\n",
+				  THISFUNCTION,argvm[isi]);
+		isi++;
+
+		argvm[isi] = (char *) calloc(17,sizeof(char));
+		sprintf(argvm[isi],"%d",(int)mxGetScalar(prhs[imi]));
+		mexPrintf("%s -- Number of parts is %s.\n",
+				  THISFUNCTION,argvm[isi]);
+		isi++;
+		imi++;
+	}
+
+	if (!mxIsNumeric(prhs[imi]) || (!mxIsEmpty(prhs[imi]) && !mxIsSparse(prhs[imi]))) {
+		mexPrintf("%s -- Adjacency matrix must be numeric and sparse.\n",THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		nvert =mxGetM(prhs[imi]);
+		nedge2=mxGetNzmax(prhs[imi]);
+		if (mxGetNzmax(prhs[imi])) {
+			ir    =mxGetIr(prhs[imi]);
+			adjir = (int *) malloc(mxGetNzmax(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetNzmax(prhs[imi]); i++)
+				adjir[i]=(int)ir[i];
+		}
+		if (mxGetN(prhs[imi])) {
+			jc    =mxGetJc(prhs[imi]);
+			adjjc = (int *) malloc((mxGetN(prhs[imi])+1)*sizeof(int));
+			for (i=0; i<(mxGetN(prhs[imi])+1); i++)
+				adjjc[i]=(int)jc[i];
+		}
+		mexPrintf("%s -- Adjacency matrix is of size %d by %d with %d non-zeroes.\n",
+				  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]),mxGetNzmax(prhs[imi]));
+	}
+	imi++;
+
+	if (!mxIsNumeric(prhs[imi])) {
+		mexPrintf("%s -- Vertex label vector must be numeric.\n",THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+			vld=mxGetPr(prhs[imi]);
+			vli = (int *) malloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetM(prhs[imi])*mxGetN(prhs[imi]); i++)
+				vli[i]=(int)vld[i];
+		}
+		mexPrintf("%s -- Vertex label vector is of size %d by %d.\n",
+				  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]));
+	}
+	imi++;
+
+	if (!mxIsNumeric(prhs[imi])) {
+		mexPrintf("%s -- Vertex weight vector must be numeric.\n",THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+			vwd=mxGetPr(prhs[imi]);
+			vwi = (int *) malloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetM(prhs[imi])*mxGetN(prhs[imi]); i++)
+				vwi[i]=(int)vwd[i];
+		}
+		mexPrintf("%s -- Vertex weight vector is of size %d by %d.\n",
+				  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]));
+	}
+	imi++;
+
+	if (!mxIsNumeric(prhs[imi]) || (!mxIsEmpty(prhs[imi]) && !mxIsSparse(prhs[imi]))) {
+		mexPrintf("%s -- Edge weight matrix must be numeric and sparse.\n",THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		if (mxGetM(prhs[imi])) {
+			ewd=mxGetPr(prhs[imi]);
+			ewi = (int *) malloc(mxGetM(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetNzmax(prhs[imi]); i++)
+				ewi[i]=(int)ewd[i];
+		}
+		mexPrintf("%s -- Edge weight matrix is of size %d by %d with %d non-zeroes.\n",
+				  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]),mxGetNzmax(prhs[imi]));
+	}
+	imi++;
+
+	if (!((strlen (argvm[0]) >= 5) &&
+		  (strncmp (argvm[0] + strlen (argvm[0]) - 5, "gpart", 5) == 0))) {
+		if (!mxIsChar(prhs[imi])) {
+			mexPrintf("%s -- Architecture type must be character.\n",THISFUNCTION);
+			mexErrMsgTxt(" ");
+		}
+		else {
+			if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+				archtyp = (char *) calloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])+1,sizeof(char));
+				mxGetString(prhs[imi],archtyp,mxGetM(prhs[imi])*mxGetN(prhs[imi])+1);
+			}
+			mexPrintf("%s -- Architecture type is \"%s\".\n",
+					  THISFUNCTION,archtyp);
+		}
+		imi++;
+
+		if (!mxIsNumeric(prhs[imi])) {
+			mexPrintf("%s -- Architecture parameter vector must be numeric.\n",THISFUNCTION);
+			mexErrMsgTxt(" ");
+		}
+		else {
+			napar =mxGetM(prhs[imi])*mxGetN(prhs[imi]);
+			if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+				apd=mxGetPr(prhs[imi]);
+				api = (int *) malloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])*sizeof(int));
+				for (i=0; i<mxGetM(prhs[imi])*mxGetN(prhs[imi]); i++)
+					api[i]=(int)apd[i];
+			}
+			mexPrintf("%s -- Architecture parameter vector is of size %d by %d.\n",
+					  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]));
+		}
+		imi++;
+	}
+
+	while (imi < nrhs) {
+		if (!mxIsChar(prhs[imi])) {
+			mexPrintf("%s -- prhs[%d] must be character.\n",THISFUNCTION,imi);
+			mexErrMsgTxt(" ");
+		}
+		else {
+			argvm[isi] = (char *) calloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])+1,sizeof(char));
+			mxGetString(prhs[imi],argvm[isi],mxGetM(prhs[imi])*mxGetN(prhs[imi])+1);
+		}
+		isi++;
+		imi++;
+	}
+	argcm=isi;
+	mexPrintf("argcm=%d\n",argcm);
+	for (i=0; i<argcm; i++)
+		mexPrintf("argvm[%d]=\"%s\"\n",i,argvm[i]);
+
+	/* Do the actual computations in a subroutine */
+
+	mexPrintf("Gmapx:\n");
+	ierr=gmapx(&maptabi,
+			   argcm,
+			   argvm,
+			   nvert,
+			   nedge2,
+			   adjir,
+			   adjjc,
+			   vli,
+			   vwi,
+			   ewi,
+			   archtyp,
+			   napar,
+			   api);
+	mexPrintf("%s -- Error %d from Gmapx.\n",THISFUNCTION,ierr);
+
+/*  for (i=0; i<nvert; i++)
+		mexPrintf("maptabi[%d][0]=%d, maptabi[%d][1]=%d\n",
+			 	  i,maptabi[i][0],i,maptabi[i][1]); */
+
+	/* Create matrices for the return arguments */
+
+	if (maptabi) {
+		plhs[imo]=mxCreateDoubleMatrix(nvert, 2, mxREAL);
+		maptabd = mxGetPr(plhs[imo]);
+		k=0;
+		for (j=0; j<2; j++)
+			for (i=0; i<nvert; i++)
+				maptabd[k++]=(double)maptabi[i][j];
+		free(maptabi);
+	}
+	else {
+		plhs[imo]=mxCreateDoubleMatrix(0, 2, mxREAL);
+	}
+	imo++;
+
+	if (argvm)
+		for (i=argcm-1; i>=0; i--)
+			free(argvm[i]);
+	if (api)     free(api);
+	if (archtyp) free(archtyp);
+	if (ewi)     free(ewi);
+	if (vwi)     free(vwi);
+	if (vli)     free(vli);
+	if (adjjc)   free(adjjc);
+	if (adjir)   free(adjir);
+
+	return;
+}
+
+void GmapUsage( void )
+{
+
+    mexPrintf("\n");
+    mexPrintf("Usage: [maptab]=Gmap_mex(adjmat,vertlb,vertwt,edgewt,archtyp,archpar,\n");
+    mexPrintf("                         Scotch-specific parameters);\n");
+    mexPrintf("\n");
+
+    return;
+}
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/gmapx.c
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/gmapx.c	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/gmapx.c	(revision 27955)
@@ -0,0 +1,385 @@
+/* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS
+**
+** This file is part of the Scotch software package for static mapping,
+** graph partitioning and sparse matrix ordering.
+**
+** This software is governed by the CeCILL-C license under French law
+** and abiding by the rules of distribution of free software. You can
+** use, modify and/or redistribute the software under the terms of the
+** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
+** URL: "http://www.cecill.info".
+** 
+** As a counterpart to the access to the source code and 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 have only limited
+** liability.
+** 
+** In this respect, the user's attention is drawn to the risks associated
+** with loading, using, modifying and/or developing or reproducing the
+** software by the user in light of its specific status of free software,
+** that may mean that it is complicated to manipulate, and that also
+** therefore means that it is reserved for developers and experienced
+** professionals having in-depth computer knowledge. Users are therefore
+** encouraged to load and test the software's suitability 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 as regards security.
+** 
+** The fact that you are presently reading this means that you have had
+** knowledge of the CeCILL-C license and that you accept its terms.
+*/
+/************************************************************/
+/**                                                        **/
+/**   NAME       : gmap.c                                  **/
+/**                                                        **/
+/**   AUTHOR     : Francois PELLEGRINI                     **/
+/**                                                        **/
+/**   FUNCTION   : Part of a graph mapping software.       **/
+/**                This module contains the main function. **/
+/**                                                        **/
+/**   DATES      : # Version 0.0  : from : 05 jan 1993     **/
+/**                                 to     12 may 1993     **/
+/**                # Version 1.1  : from : 15 oct 1993     **/
+/**                                 to     15 oct 1993     **/
+/**                # Version 1.3  : from : 06 apr 1994     **/
+/**                                 to     18 may 1994     **/
+/**                # Version 2.0  : from : 06 jun 1994     **/
+/**                                 to     17 nov 1994     **/
+/**                # Version 2.1  : from : 07 apr 1995     **/
+/**                                 to     18 jun 1995     **/
+/**                # Version 3.0  : from : 01 jul 1995     **/
+/**                                 to     02 oct 1995     **/
+/**                # Version 3.1  : from : 07 nov 1995     **/
+/**                                 to     25 apr 1996     **/
+/**                # Version 3.2  : from : 24 sep 1996     **/
+/**                                 to     26 may 1998     **/
+/**                # Version 3.3  : from : 19 oct 1998     **/
+/**                                 to   : 30 mar 1999     **/
+/**                # Version 3.4  : from : 03 feb 2000     **/
+/**                                 to   : 03 feb 2000     **/
+/**                # Version 4.0  : from : 16 jan 2004     **/
+/**                                 to   : 27 dec 2004     **/
+/**                # Version 5.0  : from : 23 dec 2007     **/
+/**                                 to   : 18 jun 2008     **/
+/**                                                        **/
+/************************************************************/
+
+/*
+**  The defines and includes.
+*/
+
+#define GMAP
+
+#include "module.h"
+#include "common.h"
+#include "scotch.h"
+#include "gmap.h"
+
+/*
+**  The static variables.
+*/
+
+static int                  C_partNbr = 2;        /* Default number of parts     */
+static int                  C_paraNum = 0;        /* Number of parameters        */
+static int                  C_paraNbr = 0;        /* No parameters for mapping   */
+static int                  C_fileNum = 0;        /* Number of file in arg list  */
+static int                  C_fileNbr = 4;        /* Number of files for mapping */
+static File                 C_fileTab[C_FILENBR] = { /* File array               */
+                              { "-", NULL, "r" },
+                              { "-", NULL, "r" },
+                              { "-", NULL, "w" },
+                              { "-", NULL, "w" } };
+
+static const char *         C_usageList[] = {     /* Usage */
+  "gmap [<input source file> [<input target file> [<output mapping file> [<output log file>]]]] <options>",
+  "gpart [<nparts>] [<input source file> [<output mapping file> [<output log file>]]] <options>",
+  "  -h         : Display this help",
+  "  -m<strat>  : Set mapping strategy (see user's manual)",
+  "  -s<obj>    : Force unity weights on <obj>:",
+  "                 e  : edges",
+  "                 v  : vertices",
+  "  -V         : Print program version and copyright",
+  "  -v<verb>   : Set verbose mode to <verb>:",
+  "                 m  : mapping information",
+  "                 s  : strategy information",
+  "                 t  : timing information",
+  "",
+  "See default strategy with option '-vs'",
+  NULL };
+
+/******************************/
+/*                            */
+/* This is the main function. */
+/*                            */
+/******************************/
+
+int
+gmapx (
+  int                 (**pmaptabi)[2],
+  int                 argcm,
+  char                *argvm[],
+  int                 nvi,
+  int                 ne2i,
+  int                 *ir,
+  int                 *jc,
+  int                 *vli,
+  int                 *vwi,
+  int                 *ewi,
+  char                archtyp[],
+  int                 nai,
+  int                 *api)
+{
+  SCOTCH_Graph        grafdat;                    /* Source graph            */
+  SCOTCH_Num          grafflag;                   /* Source graph properties */
+  SCOTCH_Arch         archdat;                    /* Target architecture     */
+  SCOTCH_Strat        stradat;                    /* Mapping strategy        */
+  SCOTCH_Mapping      mapdat;                     /* Mapping data            */
+  Clock               runtime[2];                 /* Timing variables        */
+  SCOTCH_Num          nvert =0;
+  SCOTCH_Num          nedge2=0;
+  SCOTCH_Num*         adjir  =NULL;
+  SCOTCH_Num*         adjjc  =NULL;
+  SCOTCH_Num*         vertlab=NULL;
+  SCOTCH_Num*         vertwgt=NULL;
+  SCOTCH_Num*         edgewgt=NULL;
+  SCOTCH_Num          napar =0;
+  SCOTCH_Num*         archpar=NULL;
+  SCOTCH_Num          (*maptab)[2]=NULL;
+  int                 (*maptabi)[2]=NULL;
+  int                 flagval;
+  int                 i,j,k;
+
+/*  reset static variables from previous runs (jes, 4/27/10)  */
+
+  C_partNbr = 2;        /* Default number of parts     */
+  C_paraNum = 0;        /* Number of parameters        */
+  C_paraNbr = 0;        /* No parameters for mapping   */
+  C_fileNum = 0;        /* Number of file in arg list  */
+  C_fileNbr = 4;        /* Number of files for mapping */
+  for (i=0; i<C_FILENBR; i++) {
+    C_fileTab[i].name = "-";
+    C_fileTab[i].pntr = NULL;
+    if (i < 2)
+      C_fileTab[i].mode = "r";
+    else
+      C_fileTab[i].mode = "w";
+  }
+
+/*  convert input arguments to scotch data types  */
+
+  nvert =(SCOTCH_Num)nvi;
+  nedge2=(SCOTCH_Num)ne2i;
+
+  if (ir && jc) {
+    adjir = (SCOTCH_Num *) malloc(nedge2*sizeof(SCOTCH_Num));
+    for (i=0; i<nedge2; i++)
+      adjir[i]=(SCOTCH_Num)ir[i];
+    adjjc = (SCOTCH_Num *) malloc((nvert+1)*sizeof(SCOTCH_Num));
+    for (i=0; i<(nvert+1); i++)
+      adjjc[i]=(SCOTCH_Num)jc[i];
+  }
+
+  if (vli) {
+    vertlab = (SCOTCH_Num *) malloc(nvert*sizeof(SCOTCH_Num));
+    for (i=0; i<nvert; i++)
+      vertlab[i]=(SCOTCH_Num)vli[i];
+  }
+
+  if (vwi) {
+    vertwgt = (SCOTCH_Num *) malloc(nvert*sizeof(SCOTCH_Num));
+    for (i=0; i<nvert; i++)
+      vertwgt[i]=(SCOTCH_Num)vwi[i];
+  }
+
+  if (ewi) {
+    edgewgt = (SCOTCH_Num *) malloc(nedge2*sizeof(SCOTCH_Num));
+    for (i=0; i<nedge2; i++)
+      edgewgt[i]=(SCOTCH_Num)ewi[i];
+  }
+
+  napar =(SCOTCH_Num)nai;
+
+  if (api) {
+    archpar = (SCOTCH_Num *) malloc(nai*sizeof(SCOTCH_Num));
+    for (i=0; i<nai; i++)
+      archpar[i]=(SCOTCH_Num)api[i];
+  }
+
+/*  start scotch processing  */
+
+  flagval = C_FLAGNONE;                           /* Default behavior */
+  i = strlen (argvm[0]);
+  if ((i >= 5) && (strncmp (argvm[0] + i - 5, "gpart", 5) == 0)) {
+    flagval |= C_FLAGPART;
+    C_paraNbr = 1;                                /* One more parameter       */
+    C_fileNbr = 3;                                /* One less file to provide */
+    errorProg ("gpart");
+  }
+  else
+    errorProg ("gmap");
+
+  intRandResetStatic ();
+  intRandInit ();
+
+  if ((argcm >= 2) && (argvm[1][0] == '?')) {       /* If need for help */
+    usagePrint (stdout, C_usageList);
+    return     (0);
+  }
+
+  grafflag = 0;                                   /* Use vertex and edge weights  */
+  SCOTCH_stratInit (&stradat);                    /* Set default mapping strategy */
+
+  for (i = 0; i < C_FILENBR; i ++)                /* Set default stream pointers */
+    C_fileTab[i].pntr = (C_fileTab[i].mode[0] == 'r') ? stdin : stdout;
+  for (i = 1; i < argcm; i ++) {                   /* Loop for all option codes                        */
+    if ((argvm[i][0] != '-') || (argvm[i][1] == '\0') || (argvm[i][1] == '.')) { /* If found a file name */
+      if (C_paraNum < C_paraNbr) {                /* If number of parameters not reached              */
+        if ((C_partNbr = atoi (argvm[i])) < 1)     /* Get the number of parts                          */
+          errorPrint ("main: invalid number of parts (\"%s\")", argvm[i]);
+        C_paraNum ++;
+        continue;                                 /* Process the other parameters */
+      }
+      if (C_fileNum < C_fileNbr)                  /* A file name has been given */
+        C_fileTab[C_fileNum ++].name = argvm[i];
+      else
+        errorPrint ("main: too many file names given");
+    }
+    else {                                        /* If found an option name */
+      switch (argvm[i][1]) {
+        case 'H' :                                /* Give the usage message */
+        case 'h' :
+          usagePrint (stdout, C_usageList);
+          return     (0);
+        case 'M' :
+        case 'm' :
+          SCOTCH_stratExit (&stradat);
+          SCOTCH_stratInit (&stradat);
+          SCOTCH_stratGraphMap (&stradat, &argvm[i][2]);
+          break;
+        case 'S' :
+        case 's' :                                /* Source graph parameters */
+          for (j = 2; argvm[i][j] != '\0'; j ++) {
+            switch (argvm[i][j]) {
+              case 'E' :
+              case 'e' :
+                grafflag |= 2;                    /* Do not load edge weights */
+                break;
+              case 'V' :
+              case 'v' :
+                grafflag |= 1;                    /* Do not load vertex weights */
+                break;
+              default :
+                errorPrint ("main: invalid source graph option (\"%c\")", argvm[i][j]);
+            }
+          }
+          break;
+        case 'V' :
+          fprintf (stderr, "gmap/gpart, version %s - F. Pellegrini\n", SCOTCH_VERSION);
+          fprintf (stderr, "Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS, France\n");
+          fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n");
+          return  (0);
+        case 'v' :                                /* Output control info */
+          for (j = 2; argvm[i][j] != '\0'; j ++) {
+            switch (argvm[i][j]) {
+              case 'M' :
+              case 'm' :
+                flagval |= C_FLAGVERBMAP;
+                break;
+              case 'S' :
+              case 's' :
+                flagval |= C_FLAGVERBSTR;
+                break;
+              case 'T' :
+              case 't' :
+                flagval |= C_FLAGVERBTIM;
+                break;
+              default :
+                errorPrint ("main: unprocessed parameter \"%c\" in \"%s\"", argvm[i][j], argvm[i]);
+            }
+          }
+          break;
+        default :
+          errorPrint ("main: unprocessed option (\"%s\")", argvm[i]);
+      }
+    }
+  }
+  if ((flagval & C_FLAGPART) != 0) {              /* If program run as the partitioner            */
+    C_fileTab[3].name = C_fileTab[2].name;        /* Put provided file names at their right place */
+    C_fileTab[2].name = C_fileTab[1].name;
+    C_fileTab[1].name = "-";
+  }
+
+  fileBlockOpen (C_fileTab, C_FILENBR);           /* Open all files */
+
+  clockInit  (&runtime[0]);
+  clockStart (&runtime[0]);
+
+  SCOTCH_graphInit (&grafdat);                    /* Create graph structure         */
+  SCOTCH_graphLoad (&grafdat, C_filepntrsrcinp, -1, grafflag, nvert, nedge2, adjir, adjjc, vertlab, vertwgt, edgewgt); /* Read source graph */
+
+  SCOTCH_archInit (&archdat);                     /* Create architecture structure          */
+  if ((flagval & C_FLAGPART) != 0)                /* If program run as the partitioner      */
+    SCOTCH_archCmplt (&archdat, C_partNbr);       /* Create a complete graph of proper size */
+  else
+    SCOTCH_archLoad (&archdat, C_filepntrtgtinp, archtyp, napar, archpar); /* Read target architecture */
+
+  clockStop  (&runtime[0]);                       /* Get input time */
+  clockInit  (&runtime[1]);
+  clockStart (&runtime[1]);
+
+  SCOTCH_graphMapInit    (&grafdat, &mapdat, &archdat, NULL);
+  SCOTCH_graphMapCompute (&grafdat, &mapdat, &stradat); /* Perform mapping */
+
+  clockStop  (&runtime[1]);                       /* Get computation time */
+  clockStart (&runtime[0]);
+
+  SCOTCH_graphMapSave (&nvert, &maptab, &grafdat, &mapdat, C_filepntrmapout); /* Write mapping */
+
+/*  convert output arguments from scotch data types  */
+
+  if (maptab) {
+    *pmaptabi = (int (*)[2]) malloc(nvert*2*sizeof(int));
+    maptabi  = *pmaptabi;
+    for (j=0; j<2; j++)
+      for (i=0; i<nvert; i++)
+          maptabi[i][j]=(int)maptab[i][j];
+    free(maptab);
+  }
+
+  clockStop (&runtime[0]);                        /* Get output time */
+
+  if (flagval & C_FLAGVERBSTR) {
+    fprintf (C_filepntrlogout, "S\tStrat=");
+    SCOTCH_stratSave (&stradat, C_filepntrlogout);
+    putc ('\n', C_filepntrlogout);
+  }
+  if (flagval & C_FLAGVERBTIM) {
+    fprintf (C_filepntrlogout, "T\tMapping\t\t%g\nT\tI/O\t\t%g\nT\tTotal\t\t%g\n",
+             (double) clockVal (&runtime[1]),
+             (double) clockVal (&runtime[0]),
+             (double) clockVal (&runtime[0]) +
+             (double) clockVal (&runtime[1]));
+  }
+  if (flagval & C_FLAGVERBMAP)
+    SCOTCH_graphMapView (&grafdat, &mapdat, C_filepntrlogout);
+
+  fileBlockClose (C_fileTab, C_FILENBR);          /* Always close explicitely to end eventual (un)compression tasks */
+
+  SCOTCH_graphMapExit (&grafdat, &mapdat);
+  SCOTCH_graphExit    (&grafdat);
+  SCOTCH_stratExit    (&stradat);
+  SCOTCH_archExit     (&archdat);
+
+  if (archpar) free(archpar);
+  if (edgewgt) free(edgewgt);
+  if (vertwgt) free(vertwgt);
+  if (vertlab) free(vertlab);
+  if (adjjc) free(adjjc);
+  if (adjir) free(adjir);
+
+#ifdef COMMON_PTHREAD
+  pthread_exit ((void *) 0);                      /* Allow potential (un)compression tasks to complete */
+#endif /* COMMON_PTHREAD */
+  return (0);
+}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/gpart.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/gpart.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/gpart.m	(revision 27955)
@@ -0,0 +1,50 @@
+%
+%  function to call the gpart module of the scotch partitioner.
+%  (note that gpart is just a simplied entry into gmap.)
+%
+%  [maptab]=gpart(npart,adj_mat,vlist,vwgt,ewgt,...
+%                 options)
+%
+%  where the required input is:
+%    npart      (double, number of parts for 'cmplt' architecture)
+%    adj_mat    (double [sparse nv x nv], vertex adjacency matrix)
+%    vlist      (double [nv], vertex labels or [])
+%    vwgt       (double [nv], vertex weights (integers) or [])
+%    ewgt       (double [sparse nv x nv], edge weights (integers) or [])
+%
+%  the required output is:
+%    maptab     (double [nv x 2], vertex labels and partitions)
+%
+%  the optional input is:
+%    options    (character, options to gpart)
+%               "  -h         : Display this help"
+%               "  -m<strat>  : Set mapping strategy (see user's manual)"
+%               "  -s<obj>    : Force unity weights on <obj>:"
+%               "                 e  : edges"
+%               "                 v  : vertices"
+%               "  -V         : Print program version and copyright"
+%               "  -v<verb>   : Set verbose mode to <verb>:"
+%               "                 m  : mapping information"
+%               "                 s  : strategy information"
+%               "                 t  : timing information"
+%               ""
+%               "See default strategy with option '-vs'"
+%
+function [maptab]=gpart(npart,adj_mat,vlist,vwgt,ewgt,...
+                        varargin)
+
+if ~nargin
+    help gpart
+    return
+end
+
+%  gmap_mex uses static variables, so clear those out before every run
+clear gmap_mex
+
+[maptab]=gmap_mex(npart,adj_mat,vlist,vwgt,ewgt,...
+                  varargin{:});
+
+%  doesn't hurt to clear out after every run, too
+clear gmap_mex
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/install-6.0-linux-parallel-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/install-6.0-linux-parallel-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/install-6.0-linux-parallel-static.sh	(revision 27955)
@@ -0,0 +1,42 @@
+#!/bin/bash
+set -eu
+
+
+## NOTE: This install script uses make directly rather than CMake and then make
+
+## Constants
+#
+PKG="scotch"
+VER="6.0.9"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/${PKG}_${VER}.tar.gz" "${PKG}_${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf ${PKG}_${VER}.tar.gz
+
+# Cleanup
+rm -rf install src
+mkdir install install/include install/lib src
+
+# Move source to 'src' directory
+mv ${PKG}_${VER}/* src
+rm -rf ${PKG}_${VER}
+
+# Copy customized source and config files to 'src' directory
+cp configs/6.0/linux/Makefile.inc.linux-parallel-static src/src/Makefile.inc
+
+# Compile
+cd src/src
+if [ $# -eq 0 ]; then
+	make ptscotch
+	make ptesmumps
+else
+	make -j $1 ptscotch
+	make -j $1 ptesmumps
+fi
+
+# Install
+cd ../..
+cp src/include/* install/include
+cp src/lib/lib*.* install/lib
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/install.sh	(revision 27955)
@@ -0,0 +1,57 @@
+#!/bin/bash
+set -eu
+
+# Some cleanup
+rm -rf scotch_5.1
+rm -rf src 
+rm -rf install 
+
+# Create src and install directories
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/scotch_5.1.6.tar.gz' 'scotch_5.1.6.tar.gz'
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/docs/ptscotch_user5.1.pdf' 'ptscotch_user5.1.pdf'
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/docs/scotch_user5.1.pdf' 'scotch_user5.1.pdf'
+
+# Untar 
+tar -xvzf scotch_5.1.6.tar.gz
+
+# Apply patches (all at once, since many)
+# (written by diff -rc old_src new_src > scotch.patch)
+patch -p0 < scotch.patch
+
+# Move scotch to src directory
+mv scotch_5.1/* src
+rm -rf scotch_5.1
+
+# Build scotch
+cp -p Makefile.inc src/src
+cp -p gmap_mex.c src/src/scotch
+cp -p gmapx.c src/src/scotch
+cd src/src
+# For stand-alone scotch modules:
+make scotch
+make clean
+# For no-file-io scotch modules:
+make nfioscotch
+# Clean up
+make clean
+cd ../..
+
+# Populate install directory
+cp -pr src/grf install
+cp -pr src/tgt install
+cp -pr src/doc install
+cp -pr src/man install
+mkdir install/include
+cp -p src/src/libscotch/module.h install/include/scotch_module.h
+cp -p src/src/libscotch/common.h install/include/scotch_common.h
+cp -p src/include/scotch.h install/include/
+cp -p src/src/scotch/gmap.h install/include/scotch_gmap.h
+mkdir install/lib
+mv src/lib/* install/lib
+mkdir install/bin
+mv src/bin/* install/bin
+#cp -p gmap.m install/bin
+#cp -p gpart.m install/bin
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/install_macosx64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/install_macosx64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/install_macosx64.sh	(revision 27955)
@@ -0,0 +1,57 @@
+#!/bin/bash
+set -eu
+
+# Some cleanup
+rm -rf scotch_5.1
+rm -rf src 
+rm -rf install 
+
+# Create src and install directories
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/scotch_5.1.6.tar.gz' 'scotch_5.1.6.tar.gz'
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/docs/ptscotch_user5.1.pdf' 'ptscotch_user5.1.pdf'
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/docs/scotch_user5.1.pdf' 'scotch_user5.1.pdf'
+
+# Untar 
+tar -xvzf scotch_5.1.6.tar.gz
+
+# Apply patches (all at once, since many)
+# (written by diff -rc old_src new_src > scotch.patch)
+patch -p0 < scotch.patch
+
+# Move scotch to src directory
+mv scotch_5.1/* src
+rm -rf scotch_5.1
+
+# Build scotch
+cp -p Makefile.inc.mac src/src/Makefile.inc
+cp -p gmap_mex.c src/src/scotch
+cp -p gmapx.c src/src/scotch
+cd src/src
+# For stand-alone scotch modules:
+make scotch
+make clean
+# For no-file-io scotch modules:
+make nfioscotch
+# Clean up
+make clean
+cd ../..
+
+# Populate install directory
+cp -pr src/grf install
+cp -pr src/tgt install
+cp -pr src/doc install
+cp -pr src/man install
+mkdir install/include
+cp -p src/src/libscotch/module.h install/include/scotch_module.h
+cp -p src/src/libscotch/common.h install/include/scotch_common.h
+cp -p src/include/scotch.h install/include/
+cp -p src/src/scotch/gmap.h install/include/scotch_gmap.h
+mkdir install/lib
+mv src/lib/* install/lib
+mkdir install/bin
+mv src/bin/* install/bin
+#cp -p gmap.m install/bin
+#cp -p gpart.m install/bin
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/mex/Gmap.c
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/mex/Gmap.c	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/mex/Gmap.c	(revision 27955)
@@ -0,0 +1,278 @@
+
+#define THISFUNCTION "Gmap"
+
+/*  Gmap structures and prototypes  */
+
+#include "mat.h"
+#include "mex.h"
+#include "matrix.h"
+
+void GmapUsage( void );
+
+
+int
+Gmapx (
+	int                 (**pmaptabi)[2],
+	int                 argcm,
+	char                *argvm[],
+	int                 nvi,
+	int                 ne2i,
+	int                 *ir,
+	int                 *jc,
+	int                 *vli,
+	int                 *vwi,
+	int                 *ewi,
+	char                archtyp[],
+	int                 nai,
+	int                 *api);
+
+/******************************/
+/*                            */
+/* This is the main function. */
+/*                            */
+/******************************/
+
+void mexFunction( int nlhs,
+				  mxArray *plhs[],
+				  int nrhs,
+				  const mxArray *prhs[] )
+{
+	int     argcm;
+	char    **argvm=NULL;
+	int     nvert =0,nedge2=0,napar =0;
+	mwIndex *ir=NULL,*jc=NULL;
+	int     *adjir=NULL,*adjjc=NULL;
+	double  *vld=NULL,*vwd=NULL,*ewd=NULL,*apd=NULL;
+	int     *vli=NULL,*vwi=NULL,*ewi=NULL,*api=NULL;
+	char    *archtyp=NULL;
+	int     (*maptabi)[2]=NULL;
+	double* maptabd=NULL;
+	int     i,j,k,imi=0,imo=0,isi=0,ierr;
+
+	/* Check for proper number of arguments */
+   
+	if      (nrhs == 0 && nlhs == 0) {
+		GmapUsage();
+		return;
+	}
+	else if (nrhs <  6 || nlhs >  1) {
+		GmapUsage();
+		mexErrMsgTxt(" ");
+	}
+
+/*  load matlab argument list and convert to integer (note that converting here
+	and in the x-layer is inefficient, but it makes the x-layer more general)  */
+
+	argvm = (char **) calloc(nrhs,sizeof(char *));
+
+	if (!(mxIsNumeric(prhs[imi]) &&
+		  (mxGetM(prhs[imi]) == 1 && mxGetN(prhs[imi]) == 1))) {
+		argvm[isi] = (char *) calloc(4+1,sizeof(char));
+		strcpy(argvm[isi],"Gmap");
+		mexPrintf("%s -- Using \"%s\" entry point.\n",
+				  THISFUNCTION,argvm[isi]);
+		isi++;
+	}
+	else {
+		argvm[isi] = (char *) calloc(5+1,sizeof(char));
+		strcpy(argvm[isi],"Gpart");
+		mexPrintf("%s -- Using \"%s\" entry point.\n",
+				  THISFUNCTION,argvm[isi]);
+		isi++;
+
+		argvm[isi] = (char *) calloc(17,sizeof(char));
+		sprintf(argvm[isi],"%d",(int)mxGetScalar(prhs[imi]));
+		mexPrintf("%s -- Number of parts is %s.\n",
+				  THISFUNCTION,argvm[isi]);
+		isi++;
+		imi++;
+	}
+
+	if (!mxIsNumeric(prhs[imi]) || (!mxIsEmpty(prhs[imi]) && !mxIsSparse(prhs[imi]))) {
+		mexPrintf("%s -- Adjacency matrix must be numeric and sparse.\n",THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		nvert =mxGetM(prhs[imi]);
+		nedge2=mxGetNzmax(prhs[imi]);
+		if (mxGetNzmax(prhs[imi])) {
+			ir    =mxGetIr(prhs[imi]);
+			adjir = (int *) malloc(mxGetNzmax(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetNzmax(prhs[imi]); i++)
+				adjir[i]=(int)ir[i];
+		}
+		if (mxGetN(prhs[imi])) {
+			jc    =mxGetJc(prhs[imi]);
+			adjjc = (int *) malloc((mxGetN(prhs[imi])+1)*sizeof(int));
+			for (i=0; i<(mxGetN(prhs[imi])+1); i++)
+				adjjc[i]=(int)jc[i];
+		}
+		mexPrintf("%s -- Adjacency matrix is of size %d by %d with %d non-zeroes.\n",
+				  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]),mxGetNzmax(prhs[imi]));
+	}
+	imi++;
+
+	if (!mxIsNumeric(prhs[imi])) {
+		mexPrintf("%s -- Vertex label vector must be numeric.\n",THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+			vld=mxGetPr(prhs[imi]);
+			vli = (int *) malloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetM(prhs[imi])*mxGetN(prhs[imi]); i++)
+				vli[i]=(int)vld[i];
+		}
+		mexPrintf("%s -- Vertex label vector is of size %d by %d.\n",
+				  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]));
+	}
+	imi++;
+
+	if (!mxIsNumeric(prhs[imi])) {
+		mexPrintf("%s -- Vertex weight vector must be numeric.\n",THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+			vwd=mxGetPr(prhs[imi]);
+			vwi = (int *) malloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetM(prhs[imi])*mxGetN(prhs[imi]); i++)
+				vwi[i]=(int)vwd[i];
+		}
+		mexPrintf("%s -- Vertex weight vector is of size %d by %d.\n",
+				  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]));
+	}
+	imi++;
+
+	if (!mxIsNumeric(prhs[imi]) || (!mxIsEmpty(prhs[imi]) && !mxIsSparse(prhs[imi]))) {
+		mexPrintf("%s -- Edge weight matrix must be numeric and sparse.\n",THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		if (mxGetM(prhs[imi])) {
+			ewd=mxGetPr(prhs[imi]);
+			ewi = (int *) malloc(mxGetM(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetNzmax(prhs[imi]); i++)
+				ewi[i]=(int)ewd[i];
+		}
+		mexPrintf("%s -- Edge weight matrix is of size %d by %d with %d non-zeroes.\n",
+				  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]),mxGetNzmax(prhs[imi]));
+	}
+	imi++;
+
+	if (!((strlen (argvm[0]) >= 5) &&
+		  (strncmp (argvm[0] + strlen (argvm[0]) - 5, "Gpart", 5) == 0))) {
+		if (!mxIsChar(prhs[imi])) {
+			mexPrintf("%s -- Architecture type must be character.\n",THISFUNCTION);
+			mexErrMsgTxt(" ");
+		}
+		else {
+			if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+				archtyp = (char *) calloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])+1,sizeof(char));
+				mxGetString(prhs[imi],archtyp,mxGetM(prhs[imi])*mxGetN(prhs[imi])+1);
+			}
+			mexPrintf("%s -- Architecture type is \"%s\".\n",
+					  THISFUNCTION,archtyp);
+		}
+		imi++;
+
+		if (!mxIsNumeric(prhs[imi])) {
+			mexPrintf("%s -- Architecture parameter vector must be numeric.\n",THISFUNCTION);
+			mexErrMsgTxt(" ");
+		}
+		else {
+			napar =mxGetM(prhs[imi])*mxGetN(prhs[imi]);
+			if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+				apd=mxGetPr(prhs[imi]);
+				api = (int *) malloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])*sizeof(int));
+				for (i=0; i<mxGetM(prhs[imi])*mxGetN(prhs[imi]); i++)
+					api[i]=(int)apd[i];
+			}
+			mexPrintf("%s -- Architecture parameter vector is of size %d by %d.\n",
+					  THISFUNCTION,mxGetM(prhs[imi]),mxGetN(prhs[imi]));
+		}
+		imi++;
+	}
+
+	while (imi < nrhs) {
+		if (!mxIsChar(prhs[imi])) {
+			mexPrintf("%s -- prhs[%d] must be character.\n",THISFUNCTION,imi);
+			mexErrMsgTxt(" ");
+		}
+		else {
+			argvm[isi] = (char *) calloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])+1,sizeof(char));
+			mxGetString(prhs[imi],argvm[isi],mxGetM(prhs[imi])*mxGetN(prhs[imi])+1);
+		}
+		isi++;
+		imi++;
+	}
+	argcm=isi;
+	mexPrintf("argcm=%d\n",argcm);
+	for (i=0; i<argcm; i++)
+		mexPrintf("argvm[%d]=\"%s\"\n",i,argvm[i]);
+
+	/* Do the actual computations in a subroutine */
+
+	mexPrintf("Gmapx:\n");
+	ierr=Gmapx(&maptabi,
+			   argcm,
+			   argvm,
+			   nvert,
+			   nedge2,
+			   adjir,
+			   adjjc,
+			   vli,
+			   vwi,
+			   ewi,
+			   archtyp,
+			   napar,
+			   api);
+	mexPrintf("%s -- Error %d from Gmapx.\n",THISFUNCTION,ierr);
+
+/*  for (i=0; i<nvert; i++)
+		mexPrintf("maptabi[%d][0]=%d, maptabi[%d][1]=%d\n",
+			 	  i,maptabi[i][0],i,maptabi[i][1]); */
+
+	/* Create matrices for the return arguments */
+
+	if (maptabi) {
+		plhs[imo]=mxCreateDoubleMatrix(nvert, 2, mxREAL);
+		maptabd = mxGetPr(plhs[imo]);
+		k=0;
+		for (j=0; j<2; j++)
+			for (i=0; i<nvert; i++)
+				maptabd[k++]=(double)maptabi[i][j];
+		free(maptabi);
+	}
+	else {
+		plhs[imo]=mxCreateDoubleMatrix(0, 2, mxREAL);
+	}
+	imo++;
+
+	if (api)     free(api);
+	if (archtyp) free(archtyp);
+	if (ewi)     free(ewi);
+	if (vwi)     free(vwi);
+	if (vli)     free(vli);
+	if (adjjc)   free(adjjc);
+	if (adjir)   free(adjir);
+	if (argvm) {
+		for (i=argcm-1; i>=0; i--)
+			free(argvm[i]);
+		free(argvm);
+	}
+
+	return;
+}
+
+void GmapUsage( void )
+{
+
+    mexPrintf("\n");
+    mexPrintf("Usage: [maptab]=Gmap(adjmat,vertlb,vertwt,edgewt,archtyp,archpar,\n");
+    mexPrintf("                         Scotch-specific parameters);\n");
+    mexPrintf("\n");
+
+    return;
+}
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/mex/Gmapx.c
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/mex/Gmapx.c	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/mex/Gmapx.c	(revision 27955)
@@ -0,0 +1,385 @@
+/* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS
+**
+** This file is part of the Scotch software package for static mapping,
+** graph partitioning and sparse matrix ordering.
+**
+** This software is governed by the CeCILL-C license under French law
+** and abiding by the rules of distribution of free software. You can
+** use, modify and/or redistribute the software under the terms of the
+** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
+** URL: "http://www.cecill.info".
+** 
+** As a counterpart to the access to the source code and 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 have only limited
+** liability.
+** 
+** In this respect, the user's attention is drawn to the risks associated
+** with loading, using, modifying and/or developing or reproducing the
+** software by the user in light of its specific status of free software,
+** that may mean that it is complicated to manipulate, and that also
+** therefore means that it is reserved for developers and experienced
+** professionals having in-depth computer knowledge. Users are therefore
+** encouraged to load and test the software's suitability 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 as regards security.
+** 
+** The fact that you are presently reading this means that you have had
+** knowledge of the CeCILL-C license and that you accept its terms.
+*/
+/************************************************************/
+/**                                                        **/
+/**   NAME       : gmap.c                                  **/
+/**                                                        **/
+/**   AUTHOR     : Francois PELLEGRINI                     **/
+/**                                                        **/
+/**   FUNCTION   : Part of a graph mapping software.       **/
+/**                This module contains the main function. **/
+/**                                                        **/
+/**   DATES      : # Version 0.0  : from : 05 jan 1993     **/
+/**                                 to     12 may 1993     **/
+/**                # Version 1.1  : from : 15 oct 1993     **/
+/**                                 to     15 oct 1993     **/
+/**                # Version 1.3  : from : 06 apr 1994     **/
+/**                                 to     18 may 1994     **/
+/**                # Version 2.0  : from : 06 jun 1994     **/
+/**                                 to     17 nov 1994     **/
+/**                # Version 2.1  : from : 07 apr 1995     **/
+/**                                 to     18 jun 1995     **/
+/**                # Version 3.0  : from : 01 jul 1995     **/
+/**                                 to     02 oct 1995     **/
+/**                # Version 3.1  : from : 07 nov 1995     **/
+/**                                 to     25 apr 1996     **/
+/**                # Version 3.2  : from : 24 sep 1996     **/
+/**                                 to     26 may 1998     **/
+/**                # Version 3.3  : from : 19 oct 1998     **/
+/**                                 to   : 30 mar 1999     **/
+/**                # Version 3.4  : from : 03 feb 2000     **/
+/**                                 to   : 03 feb 2000     **/
+/**                # Version 4.0  : from : 16 jan 2004     **/
+/**                                 to   : 27 dec 2004     **/
+/**                # Version 5.0  : from : 23 dec 2007     **/
+/**                                 to   : 18 jun 2008     **/
+/**                                                        **/
+/************************************************************/
+
+/*
+**  The defines and includes.
+*/
+
+#define GMAP
+
+#include "module.h"
+#include "common.h"
+#include "scotch.h"
+#include "gmap.h"
+
+/*
+**  The static variables.
+*/
+
+static int                  C_partNbr = 2;        /* Default number of parts     */
+static int                  C_paraNum = 0;        /* Number of parameters        */
+static int                  C_paraNbr = 0;        /* No parameters for mapping   */
+static int                  C_fileNum = 0;        /* Number of file in arg list  */
+static int                  C_fileNbr = 4;        /* Number of files for mapping */
+static File                 C_fileTab[C_FILENBR] = { /* File array               */
+                              { "-", NULL, "r" },
+                              { "-", NULL, "r" },
+                              { "-", NULL, "w" },
+                              { "-", NULL, "w" } };
+
+static const char *         C_usageList[] = {     /* Usage */
+  "gmap [<input source file> [<input target file> [<output mapping file> [<output log file>]]]] <options>",
+  "gpart [<nparts>] [<input source file> [<output mapping file> [<output log file>]]] <options>",
+  "  -h         : Display this help",
+  "  -m<strat>  : Set mapping strategy (see user's manual)",
+  "  -s<obj>    : Force unity weights on <obj>:",
+  "                 e  : edges",
+  "                 v  : vertices",
+  "  -V         : Print program version and copyright",
+  "  -v<verb>   : Set verbose mode to <verb>:",
+  "                 m  : mapping information",
+  "                 s  : strategy information",
+  "                 t  : timing information",
+  "",
+  "See default strategy with option '-vs'",
+  NULL };
+
+/******************************/
+/*                            */
+/* This is the main function. */
+/*                            */
+/******************************/
+
+int
+Gmapx (
+  int                 (**pmaptabi)[2],
+  int                 argcm,
+  char                *argvm[],
+  int                 nvi,
+  int                 ne2i,
+  int                 *ir,
+  int                 *jc,
+  int                 *vli,
+  int                 *vwi,
+  int                 *ewi,
+  char                archtyp[],
+  int                 nai,
+  int                 *api)
+{
+  SCOTCH_Graph        grafdat;                    /* Source graph            */
+  SCOTCH_Num          grafflag;                   /* Source graph properties */
+  SCOTCH_Arch         archdat;                    /* Target architecture     */
+  SCOTCH_Strat        stradat;                    /* Mapping strategy        */
+  SCOTCH_Mapping      mapdat;                     /* Mapping data            */
+  Clock               runtime[2];                 /* Timing variables        */
+  SCOTCH_Num          nvert =0;
+  SCOTCH_Num          nedge2=0;
+  SCOTCH_Num*         adjir  =NULL;
+  SCOTCH_Num*         adjjc  =NULL;
+  SCOTCH_Num*         vertlab=NULL;
+  SCOTCH_Num*         vertwgt=NULL;
+  SCOTCH_Num*         edgewgt=NULL;
+  SCOTCH_Num          napar =0;
+  SCOTCH_Num*         archpar=NULL;
+  SCOTCH_Num          (*maptab)[2]=NULL;
+  int                 (*maptabi)[2]=NULL;
+  int                 flagval;
+  int                 i,j,k;
+
+/*  reset static variables from previous runs (jes, 4/27/10)  */
+
+  C_partNbr = 2;        /* Default number of parts     */
+  C_paraNum = 0;        /* Number of parameters        */
+  C_paraNbr = 0;        /* No parameters for mapping   */
+  C_fileNum = 0;        /* Number of file in arg list  */
+  C_fileNbr = 4;        /* Number of files for mapping */
+  for (i=0; i<C_FILENBR; i++) {
+    C_fileTab[i].name = "-";
+    C_fileTab[i].pntr = NULL;
+    if (i < 2)
+      C_fileTab[i].mode = "r";
+    else
+      C_fileTab[i].mode = "w";
+  }
+
+/*  convert input arguments to scotch data types  */
+
+  nvert =(SCOTCH_Num)nvi;
+  nedge2=(SCOTCH_Num)ne2i;
+
+  if (ir && jc) {
+    adjir = (SCOTCH_Num *) malloc(nedge2*sizeof(SCOTCH_Num));
+    for (i=0; i<nedge2; i++)
+      adjir[i]=(SCOTCH_Num)ir[i];
+    adjjc = (SCOTCH_Num *) malloc((nvert+1)*sizeof(SCOTCH_Num));
+    for (i=0; i<(nvert+1); i++)
+      adjjc[i]=(SCOTCH_Num)jc[i];
+  }
+
+  if (vli) {
+    vertlab = (SCOTCH_Num *) malloc(nvert*sizeof(SCOTCH_Num));
+    for (i=0; i<nvert; i++)
+      vertlab[i]=(SCOTCH_Num)vli[i];
+  }
+
+  if (vwi) {
+    vertwgt = (SCOTCH_Num *) malloc(nvert*sizeof(SCOTCH_Num));
+    for (i=0; i<nvert; i++)
+      vertwgt[i]=(SCOTCH_Num)vwi[i];
+  }
+
+  if (ewi) {
+    edgewgt = (SCOTCH_Num *) malloc(nedge2*sizeof(SCOTCH_Num));
+    for (i=0; i<nedge2; i++)
+      edgewgt[i]=(SCOTCH_Num)ewi[i];
+  }
+
+  napar =(SCOTCH_Num)nai;
+
+  if (api) {
+    archpar = (SCOTCH_Num *) malloc(nai*sizeof(SCOTCH_Num));
+    for (i=0; i<nai; i++)
+      archpar[i]=(SCOTCH_Num)api[i];
+  }
+
+/*  start scotch processing  */
+
+  flagval = C_FLAGNONE;                           /* Default behavior */
+  i = strlen (argvm[0]);
+  if ((i >= 5) && (strncmp (argvm[0] + i - 5, "Gpart", 5) == 0)) {
+    flagval |= C_FLAGPART;
+    C_paraNbr = 1;                                /* One more parameter       */
+    C_fileNbr = 3;                                /* One less file to provide */
+    errorProg ("Gpart");
+  }
+  else
+    errorProg ("Gmap");
+
+  intRandResetStatic ();
+  intRandInit ();
+
+  if ((argcm >= 2) && (argvm[1][0] == '?')) {       /* If need for help */
+    usagePrint (stdout, C_usageList);
+    return     (0);
+  }
+
+  grafflag = 0;                                   /* Use vertex and edge weights  */
+  SCOTCH_stratInit (&stradat);                    /* Set default mapping strategy */
+
+  for (i = 0; i < C_FILENBR; i ++)                /* Set default stream pointers */
+    C_fileTab[i].pntr = (C_fileTab[i].mode[0] == 'r') ? stdin : stdout;
+  for (i = 1; i < argcm; i ++) {                   /* Loop for all option codes                        */
+    if ((argvm[i][0] != '-') || (argvm[i][1] == '\0') || (argvm[i][1] == '.')) { /* If found a file name */
+      if (C_paraNum < C_paraNbr) {                /* If number of parameters not reached              */
+        if ((C_partNbr = atoi (argvm[i])) < 1)     /* Get the number of parts                          */
+          errorPrint ("main: invalid number of parts (\"%s\")", argvm[i]);
+        C_paraNum ++;
+        continue;                                 /* Process the other parameters */
+      }
+      if (C_fileNum < C_fileNbr)                  /* A file name has been given */
+        C_fileTab[C_fileNum ++].name = argvm[i];
+      else
+        errorPrint ("main: too many file names given");
+    }
+    else {                                        /* If found an option name */
+      switch (argvm[i][1]) {
+        case 'H' :                                /* Give the usage message */
+        case 'h' :
+          usagePrint (stdout, C_usageList);
+          return     (0);
+        case 'M' :
+        case 'm' :
+          SCOTCH_stratExit (&stradat);
+          SCOTCH_stratInit (&stradat);
+          SCOTCH_stratGraphMap (&stradat, &argvm[i][2]);
+          break;
+        case 'S' :
+        case 's' :                                /* Source graph parameters */
+          for (j = 2; argvm[i][j] != '\0'; j ++) {
+            switch (argvm[i][j]) {
+              case 'E' :
+              case 'e' :
+                grafflag |= 2;                    /* Do not load edge weights */
+                break;
+              case 'V' :
+              case 'v' :
+                grafflag |= 1;                    /* Do not load vertex weights */
+                break;
+              default :
+                errorPrint ("main: invalid source graph option (\"%c\")", argvm[i][j]);
+            }
+          }
+          break;
+        case 'V' :
+          fprintf (stderr, "Gmap/Gpart, version %s - F. Pellegrini\n", SCOTCH_VERSION);
+          fprintf (stderr, "Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS, France\n");
+          fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n");
+          return  (0);
+        case 'v' :                                /* Output control info */
+          for (j = 2; argvm[i][j] != '\0'; j ++) {
+            switch (argvm[i][j]) {
+              case 'M' :
+              case 'm' :
+                flagval |= C_FLAGVERBMAP;
+                break;
+              case 'S' :
+              case 's' :
+                flagval |= C_FLAGVERBSTR;
+                break;
+              case 'T' :
+              case 't' :
+                flagval |= C_FLAGVERBTIM;
+                break;
+              default :
+                errorPrint ("main: unprocessed parameter \"%c\" in \"%s\"", argvm[i][j], argvm[i]);
+            }
+          }
+          break;
+        default :
+          errorPrint ("main: unprocessed option (\"%s\")", argvm[i]);
+      }
+    }
+  }
+  if ((flagval & C_FLAGPART) != 0) {              /* If program run as the partitioner            */
+    C_fileTab[3].name = C_fileTab[2].name;        /* Put provided file names at their right place */
+    C_fileTab[2].name = C_fileTab[1].name;
+    C_fileTab[1].name = "-";
+  }
+
+  fileBlockOpen (C_fileTab, C_FILENBR);           /* Open all files */
+
+  clockInit  (&runtime[0]);
+  clockStart (&runtime[0]);
+
+  SCOTCH_graphInit (&grafdat);                    /* Create graph structure         */
+  SCOTCH_graphLoad (&grafdat, C_filepntrsrcinp, -1, grafflag, nvert, nedge2, adjir, adjjc, vertlab, vertwgt, edgewgt); /* Read source graph */
+
+  SCOTCH_archInit (&archdat);                     /* Create architecture structure          */
+  if ((flagval & C_FLAGPART) != 0)                /* If program run as the partitioner      */
+    SCOTCH_archCmplt (&archdat, C_partNbr);       /* Create a complete graph of proper size */
+  else
+    SCOTCH_archLoad (&archdat, C_filepntrtgtinp, archtyp, napar, archpar); /* Read target architecture */
+
+  clockStop  (&runtime[0]);                       /* Get input time */
+  clockInit  (&runtime[1]);
+  clockStart (&runtime[1]);
+
+  SCOTCH_graphMapInit    (&grafdat, &mapdat, &archdat, NULL);
+  SCOTCH_graphMapCompute (&grafdat, &mapdat, &stradat); /* Perform mapping */
+
+  clockStop  (&runtime[1]);                       /* Get computation time */
+  clockStart (&runtime[0]);
+
+  SCOTCH_graphMapSave (&nvert, &maptab, &grafdat, &mapdat, C_filepntrmapout); /* Write mapping */
+
+/*  convert output arguments from scotch data types  */
+
+  if (maptab) {
+    *pmaptabi = (int (*)[2]) malloc(nvert*2*sizeof(int));
+    maptabi  = *pmaptabi;
+    for (j=0; j<2; j++)
+      for (i=0; i<nvert; i++)
+          maptabi[i][j]=(int)maptab[i][j];
+    free(maptab);
+  }
+
+  clockStop (&runtime[0]);                        /* Get output time */
+
+  if (flagval & C_FLAGVERBSTR) {
+    fprintf (C_filepntrlogout, "S\tStrat=");
+    SCOTCH_stratSave (&stradat, C_filepntrlogout);
+    putc ('\n', C_filepntrlogout);
+  }
+  if (flagval & C_FLAGVERBTIM) {
+    fprintf (C_filepntrlogout, "T\tMapping\t\t%g\nT\tI/O\t\t%g\nT\tTotal\t\t%g\n",
+             (double) clockVal (&runtime[1]),
+             (double) clockVal (&runtime[0]),
+             (double) clockVal (&runtime[0]) +
+             (double) clockVal (&runtime[1]));
+  }
+  if (flagval & C_FLAGVERBMAP)
+    SCOTCH_graphMapView (&grafdat, &mapdat, C_filepntrlogout);
+
+  fileBlockClose (C_fileTab, C_FILENBR);          /* Always close explicitely to end eventual (un)compression tasks */
+
+  SCOTCH_graphMapExit (&grafdat, &mapdat);
+  SCOTCH_graphExit    (&grafdat);
+  SCOTCH_stratExit    (&stradat);
+  SCOTCH_archExit     (&archdat);
+
+  if (archpar) free(archpar);
+  if (edgewgt) free(edgewgt);
+  if (vertwgt) free(vertwgt);
+  if (vertlab) free(vertlab);
+  if (adjjc) free(adjjc);
+  if (adjir) free(adjir);
+
+#ifdef COMMON_PTHREAD
+  pthread_exit ((void *) 0);                      /* Allow potential (un)compression tasks to complete */
+#endif /* COMMON_PTHREAD */
+  return (0);
+}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/mex/Makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/mex/Makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/mex/Makefile	(revision 27955)
@@ -0,0 +1,102 @@
+## Copyright 2004,2007-2009 ENSEIRB, INRIA & CNRS
+##
+## This file is part of the Scotch software package for static mapping,
+## graph partitioning and sparse matrix ordering.
+##
+## This software is governed by the CeCILL-C license under French law
+## and abiding by the rules of distribution of free software. You can
+## use, modify and/or redistribute the software under the terms of the
+## CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
+## URL: "http://www.cecill.info".
+## 
+## As a counterpart to the access to the source code and 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 have only limited
+## liability.
+## 
+## In this respect, the user's attention is drawn to the risks associated
+## with loading, using, modifying and/or developing or reproducing the
+## software by the user in light of its specific status of free software,
+## that may mean that it is complicated to manipulate, and that also
+## therefore means that it is reserved for developers and experienced
+## professionals having in-depth computer knowledge. Users are therefore
+## encouraged to load and test the software's suitability 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 as regards security.
+## 
+## The fact that you are presently reading this means that you have had
+## knowledge of the CeCILL-C license and that you accept its terms.
+##
+
+#bindir		= ../../bin
+#includedir	= ../../include
+#libdir		= ../../lib
+#bindir		= ${SCOTCH_DIR}/../src/bin
+#includedir	= ${SCOTCH_DIR}/../src/include
+#libdir		= ${SCOTCH_DIR}/../src/lib
+bindir		= ${SCOTCH_DIR}/bin
+includedir	= ${SCOTCH_DIR}/include
+libdir		= ${SCOTCH_DIR}/lib
+
+##
+##  General inference rules.
+##
+
+#include ../Makefile.inc
+include ${SCOTCH_DIR}/../src/src/Makefile.inc
+
+%$(OBJ)	:	%.c
+				$(CC) $(CFLAGS) -I${SCOTCH_DIR}/../src/src/scotch -I$(includedir) -I${SCOTCH_DIR}/../src/src/libscotch -DSCOTCH_VERSION=\"$(VERSION)\" -c $(<) -o $(@)
+
+%$(MEX)	:	%.c
+		 		$(CCM) $(MFLAGS) -I${SCOTCH_DIR}/../src/src/scotch -I$(includedir) -I${SCOTCH_DIR}/../src/src/libscotch -DSCOTCH_VERSION=\"$(VERSION)\" $(<) -o $(@) -L$(libdir) -l$(SCOTCHLIB) -l$(SCOTCHLIB)errexit $(LDFLAGS)
+
+##
+##  Project rules.
+##
+
+.PHONY				:	mexscotch	mexinstall	clean	realclean
+
+mexscotch			:	clean
+					$(MAKE) CFLAGS="$(CFLAGS) -DNOFILEIO" CC="$(CCS)" CCD="$(CCS)" SCOTCHLIB=nfioscotch \
+                    Gmapx$(OBJ)
+					$(MAKE) CFLAGS="$(CFLAGS) -DNOFILEIO -DMATLAB -I${MATLAB_DIR}/extern/include" CC="$(CCS)" LDFLAGS="$(LDFLAGS) -Wl,-rpath-link,${MATLAB_DIR}/bin/glnxa64 -L${MATLAB_DIR}/bin/glnxa64 -lmex -lmat Gmapx$(OBJ)" SCOTCHLIB=nfioscotch	\
+					Gmap$(MEX)
+
+mexinstall			:
+					-$(CP) Gmap$(MEX) $(bindir)
+					-$(RM) $(bindir)/Gpart$(MEX)
+					-$(LN) $(bindir)/Gmap$(MEX) $(bindir)/Gpart$(MEX)
+
+clean				:
+					-$(RM) *~ *$(OBJ)
+					-$(RM) Gmap$(MEX)
+
+realclean			:	clean
+
+##
+##  Todo list.
+##
+
+Gmapx$(OBJ)			:	Gmapx.c					\
+					${SCOTCH_DIR}/../src/src/libscotch/module.h			\
+					${SCOTCH_DIR}/../src/src/libscotch/common.h			\
+					$(includedir)/scotch.h			\
+					$(libdir)/libnfioscotch$(LIB)		\
+					$(libdir)/libnfioscotcherrexit$(LIB)	\
+					${SCOTCH_DIR}/../src/src/scotch/gmap.h
+
+Gmap$(MEX)		:	Gmap.c					\
+					${SCOTCH_DIR}/../src/src/libscotch/module.h			\
+					${SCOTCH_DIR}/../src/src/libscotch/common.h			\
+					$(includedir)/scotch.h			\
+					$(libdir)/libnfioscotch$(LIB)		\
+					$(libdir)/libnfioscotcherrexit$(LIB)	\
+					${SCOTCH_DIR}/../src/src/scotch/gmap.h
+
+Gpart$(MEX)		:	Gmap$(MEX)
+					-$(RM) Gpart$(MEX)
+					-$(LN) Gmap$(MEX) Gpart$(MEX)
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/mex/VectorToSparse.c
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/mex/VectorToSparse.c	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/mex/VectorToSparse.c	(revision 27955)
@@ -0,0 +1,138 @@
+
+#define THISFUNCTION "VectorToSparse"
+
+#include <stdio.h>
+#include <string.h>    /*  strcasecmp  */
+#include <time.h>      /*  clock,time,difftime  */
+#include "mex.h"
+
+
+/* Input Arguments */
+
+#define    IR_IN        prhs[0]
+#define    JC_IN        prhs[1]
+#define    PR_IN        prhs[2]
+#define    M_IN         prhs[3]
+#define    N_IN         prhs[4]
+
+/* Output Arguments */
+
+#define    A_OUT        plhs[0]
+
+
+void VectorToSparseUsage( void );
+
+
+void mexFunction( int nlhs,
+				  mxArray *plhs[],
+				  int nrhs,
+				  const mxArray *prhs[] )
+{
+	int     min,nin;
+	mwIndex *ir =NULL,*jc =NULL;
+	double  *ird=NULL,*jcd=NULL,*pr=NULL,*prd=NULL;
+	int     i,mrow;
+
+	/* Check for proper number of arguments */
+   
+	if      (nrhs == 0 && nlhs == 0) {
+		VectorToSparseUsage();
+		return;
+	}
+	else if (nrhs <  2 || nlhs != 1) {
+		VectorToSparseUsage();
+		mexErrMsgTxt(" ");
+	}
+
+	/* Create matrices for the return arguments */
+
+	if (!mxIsNumeric(IR_IN) || !mxIsNumeric(JC_IN)) {
+		mexPrintf("%s -- Input matrices IR and JC must be numeric.\n",THISFUNCTION);
+		mexErrMsgTxt(" ");
+	}
+
+	mrow = 0;
+	ird = mxGetPr(IR_IN);
+	for (i=0; i<mxGetM(IR_IN)*mxGetN(IR_IN); i++)
+		if ((int)ird[i]+1 > mrow)
+			mrow=(int)ird[i]+1;
+
+	if (nrhs >= 4 && mxIsNumeric(M_IN) && !mxIsEmpty(M_IN))
+		min = mxGetScalar(M_IN);
+	else {
+		min = mrow;
+	}
+
+	if (mrow > min) {
+		mexPrintf("%s -- Number of rows specified by M (%d) and IR (%d) is inconsistent.\n",
+				  THISFUNCTION,min,mrow);
+		mexErrMsgTxt(" ");
+	}
+
+	if (nrhs >= 5 && mxIsNumeric(N_IN) && !mxIsEmpty(N_IN))
+		nin = mxGetScalar(N_IN);
+	else
+		nin = mxGetM(JC_IN)*mxGetN(JC_IN)-1;
+
+	if (mxGetM(JC_IN)*mxGetN(JC_IN)-1 != nin) {
+		mexPrintf("%s -- Number of columns specified by N (%d) and JC (%d) is inconsistent.\n",
+				  THISFUNCTION,nin,mxGetM(JC_IN)*mxGetN(JC_IN)-1);
+		mexErrMsgTxt(" ");
+	}
+
+	A_OUT = mxCreateSparse(min, nin, mxGetM(IR_IN)*mxGetN(IR_IN), mxREAL);
+	if (mxGetM(IR_IN)*mxGetN(IR_IN)) {
+		ird = mxGetPr(IR_IN);
+		ir  = mxGetIr(A_OUT);
+		for (i=0; i<mxGetM(IR_IN)*mxGetN(IR_IN); i++)
+			ir[i]=(mwIndex)ird[i];
+	}
+	if (mxGetM(JC_IN)*mxGetN(JC_IN)) {
+		jcd = mxGetPr(JC_IN);
+		jc  = mxGetJc(A_OUT);
+		for (i=0; i<mxGetM(JC_IN)*mxGetN(JC_IN); i++)
+			jc[i]=(mwIndex)jcd[i];
+	}
+
+	if (nrhs >= 3 && mxIsNumeric(PR_IN) && !mxIsEmpty(PR_IN)) {
+		if (mxGetM(PR_IN)*mxGetN(PR_IN) != mxGetM(IR_IN)*mxGetN(IR_IN)) {
+			mexPrintf("%s -- Number of terms specified by IR (%d) and PR (%d) is inconsistent.\n",
+					  THISFUNCTION,mxGetM(IR_IN)*mxGetN(IR_IN),mxGetM(PR_IN)*mxGetN(PR_IN));
+			mexErrMsgTxt(" ");
+		}
+
+		if (mxGetM(PR_IN)*mxGetN(PR_IN)) {
+			prd = mxGetPr(PR_IN);
+			pr  = mxGetPr(A_OUT);
+			for (i=0; i<mxGetM(PR_IN)*mxGetN(PR_IN); i++)
+				pr[i]=prd[i];
+		}
+	}
+
+	else {
+		mexPrintf("%s -- Populating sparse matrix terms with ones.\n",THISFUNCTION);
+		mexWarnMsgTxt(" ");
+
+		if (mxGetM(IR_IN)*mxGetN(IR_IN)) {
+			pr  = mxGetPr(A_OUT);
+			for (i=0; i<mxGetM(IR_IN)*mxGetN(IR_IN); i++)
+				pr[i]=1.;
+		}
+	}
+
+	mexPrintf("%s -- Output matrix is of size %d by %d with %d non-zeroes.\n",
+			  THISFUNCTION,min,nin,mxGetM(IR_IN)*mxGetN(IR_IN));
+
+	return;
+}
+
+void VectorToSparseUsage( void )
+{
+
+    mexPrintf("\n");
+    mexPrintf("Usage: [a]=VectorToSparse(ir,jc,pr,m,n);\n");
+    mexPrintf("\n");
+
+    return;
+}
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/scotch.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/scotch.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/scotch.patch	(revision 27955)
@@ -0,0 +1,2417 @@
+Only in src: bin
+Only in src: include
+Only in src: lib
+diff -crB scotch_5.1/src/libscotch/arch.c src/src/libscotch/arch.c
+*** scotch_5.1/src/libscotch/arch.c	2008-09-27 07:48:01.000000000 -0700
+--- src/src/libscotch/arch.c	2013-05-06 14:14:11.000000000 -0700
+***************
+*** 173,187 ****
+  int
+  archLoad (
+  Arch * restrict const       archptr,
+! FILE * const                stream)
+  {
+    const ArchClass * restrict  class;              /* Pointer to architecture class */
+    char                        name[256];          /* Architecture name string      */
+  
+    if (fscanf (stream, "%255s", name) != 1) {      /* Read architecture name */
+      errorPrint ("archLoad: cannot load architecture type");
+      return     (1);
+    }
+    name[255] = '\0';                               /* Set end of string */
+  
+    if ((class = archClass (name)) == NULL) {       /* Get class from its name */
+--- 173,203 ----
+  int
+  archLoad (
+  Arch * restrict const       archptr,
+! FILE * const                stream
+! #ifdef NOFILEIO
+!                                   ,
+! const char *                archtyp,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+  {
+    const ArchClass * restrict  class;              /* Pointer to architecture class */
+    char                        name[256];          /* Architecture name string      */
+  
++ #ifdef NOFILEIO
++ //  printf("archLoad - stream=%p; archtyp=\"%s\"\n",stream,archtyp);
++ //  printf("archLoad - napar=%d,archpar=%p\n",napar,archpar);
++ #endif /* NOFILEIO */
++ 
++ #ifndef NOFILEIO
+    if (fscanf (stream, "%255s", name) != 1) {      /* Read architecture name */
+      errorPrint ("archLoad: cannot load architecture type");
+      return     (1);
+    }
++ #else /* NOFILEIO */
++   strcpy(name,archtyp);
++ #endif /* NOFILEIO */
+    name[255] = '\0';                               /* Set end of string */
+  
+    if ((class = archClass (name)) == NULL) {       /* Get class from its name */
+***************
+*** 190,196 ****
+--- 206,216 ----
+    }
+  
+    if (class->archLoad != NULL) {                  /* If class has loading function */
++ #ifndef NOFILEIO
+      if (class->archLoad (&archptr->data, stream) != 0) { /* Load class data        */
++ #else /* NOFILEIO */
++     if (class->archLoad (&archptr->data, stream, napar, archpar) != 0) { /* Load class data        */
++ #endif /* NOFILEIO */
+        errorPrint ("archLoad: cannot load architecture data");
+        memset     (archptr, 0, sizeof (Arch));     /* Initialize architecture body */
+        return     (1);
+diff -crB scotch_5.1/src/libscotch/arch_cmplt.c src/src/libscotch/arch_cmplt.c
+*** scotch_5.1/src/libscotch/arch_cmplt.c	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_cmplt.c	2013-05-06 14:14:11.000000000 -0700
+***************
+*** 90,99 ****
+  int
+  archCmpltArchLoad (
+  ArchCmplt * restrict const  archptr,
+! FILE * restrict const       stream)
+  {
+    long                numnbr;
+  
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchCmplt)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchCmpltDom) > sizeof (ArchDomDummy))) {
+--- 90,109 ----
+  int
+  archCmpltArchLoad (
+  ArchCmplt * restrict const  archptr,
+! FILE * restrict const       stream
+! #ifdef NOFILEIO
+!                                   ,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+  {
+    long                numnbr;
+  
++ #ifdef NOFILEIO
++ //  printf("archCmpltArchLoad - napar=%d,archpar=%p\n",napar,archpar);
++ #endif /* NOFILEIO */
++ 
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchCmplt)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchCmpltDom) > sizeof (ArchDomDummy))) {
+***************
+*** 102,109 ****
+--- 112,124 ----
+    }
+  #endif /* SCOTCH_DEBUG_ARCH1 */
+  
++ #ifndef NOFILEIO
+    if ((fscanf (stream, "%ld", &numnbr) != 1) ||
+        (numnbr < 1)) {
++ #else /* NOFILEIO */
++   if ((napar < 1) ||
++       ((numnbr=(long)archpar[0]) < 1)) {
++ #endif /* NOFILEIO */
+      errorPrint ("archCmpltArchLoad: bad input");
+      return     (1);
+    }
+diff -crB scotch_5.1/src/libscotch/arch_cmplt.h src/src/libscotch/arch_cmplt.h
+*** scotch_5.1/src/libscotch/arch_cmplt.h	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_cmplt.h	2013-05-06 14:14:11.000000000 -0700
+***************
+*** 87,93 ****
+--- 87,97 ----
+  #define static
+  #endif
+  
++ #ifndef NOFILEIO
+  int                         archCmpltArchLoad   (ArchCmplt * restrict const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         archCmpltArchLoad   (ArchCmplt * restrict const, FILE * restrict const, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archCmpltArchSave   (const ArchCmplt * const, FILE * restrict const);
+  #define archCmpltArchFree           NULL
+  ArchDomNum                  archCmpltDomNum     (const ArchCmplt * const, const ArchCmpltDom * const);
+diff -crB scotch_5.1/src/libscotch/arch_cmpltw.c src/src/libscotch/arch_cmpltw.c
+*** scotch_5.1/src/libscotch/arch_cmpltw.c	2008-08-27 14:22:22.000000000 -0700
+--- src/src/libscotch/arch_cmpltw.c	2013-05-06 14:14:12.000000000 -0700
+***************
+*** 200,211 ****
+  int
+  archCmpltwArchLoad (
+  ArchCmpltw * restrict const  archptr,
+! FILE * restrict const       stream)
+  {
+    long                vertnbr;
+    Gnum                velosum;
+    Anum                vertnum;
+  
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchCmpltw)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchCmpltwDom) > sizeof (ArchDomDummy))) {
+--- 200,221 ----
+  int
+  archCmpltwArchLoad (
+  ArchCmpltw * restrict const  archptr,
+! FILE * restrict const       stream
+! #ifdef NOFILEIO
+!                                   ,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+  {
+    long                vertnbr;
+    Gnum                velosum;
+    Anum                vertnum;
+  
++ #ifdef NOFILEIO
++ //  printf("archCmpltwArchLoad - napar=%d,archpar=%p\n",napar,archpar);
++ #endif /* NOFILEIO */
++ 
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchCmpltw)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchCmpltwDom) > sizeof (ArchDomDummy))) {
+***************
+*** 214,221 ****
+--- 224,236 ----
+    }
+  #endif /* SCOTCH_DEBUG_ARCH1 */
+  
++ #ifndef NOFILEIO
+    if ((fscanf (stream, "%ld", &vertnbr) != 1) ||
+        (vertnbr < 1)) {
++ #else /* NOFILEIO */
++   if ((napar < 1) ||
++       ((vertnbr=(long)archpar[0]) < 1)) {
++ #endif /* NOFILEIO */
+      errorPrint ("archCmpltwArchLoad: bad input (1)");
+      return     (1);
+    }
+***************
+*** 230,237 ****
+--- 245,257 ----
+      long                veloval;
+      Gnum                velotmp;
+  
++ #ifndef NOFILEIO
+      if ((fscanf (stream, "%ld", &veloval) != 1) ||
+          (veloval < 1)) {
++ #else /* NOFILEIO */
++     if ((napar < 1+(vertnum+1)) ||
++         ((veloval=(long)archpar[1+(vertnum+1)]) < 1)) {
++ #endif /* NOFILEIO */
+        errorPrint ("archCmpltwArchLoad: bad input (2)");
+        return     (1);
+      }
+diff -crB scotch_5.1/src/libscotch/arch_cmpltw.h src/src/libscotch/arch_cmpltw.h
+*** scotch_5.1/src/libscotch/arch_cmpltw.h	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_cmpltw.h	2013-05-06 14:14:12.000000000 -0700
+***************
+*** 86,92 ****
+--- 86,96 ----
+  #endif
+  
+  int                         archCmpltwArchBuild (ArchCmpltw * restrict const archptr, const Gnum, const Gnum * restrict const);
++ #ifndef NOFILEIO
+  int                         archCmpltwArchLoad  (ArchCmpltw * restrict const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         archCmpltwArchLoad  (ArchCmpltw * restrict const, FILE * restrict const, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archCmpltwArchSave  (const ArchCmpltw * const, FILE * restrict const);
+  int                         archCmpltwArchFree  (ArchCmpltw * restrict const);
+  ArchDomNum                  archCmpltwDomNum    (const ArchCmpltw * const, const ArchCmpltwDom * const);
+diff -crB scotch_5.1/src/libscotch/arch_deco.c src/src/libscotch/arch_deco.c
+*** scotch_5.1/src/libscotch/arch_deco.c	2008-09-28 06:35:27.000000000 -0700
+--- src/src/libscotch/arch_deco.c	2013-05-06 14:14:12.000000000 -0700
+***************
+*** 211,217 ****
+  int
+  archDecoArchLoad (
+  ArchDeco * restrict const   archptr,
+! FILE * restrict const       stream)
+  {
+    INT                         decotype;           /* Type of decomposition                            */
+    INT                         termdomnbr;         /* Number of terminal domains (ie processors)       */
+--- 211,223 ----
+  int
+  archDecoArchLoad (
+  ArchDeco * restrict const   archptr,
+! FILE * restrict const       stream
+! #ifdef NOFILEIO
+!                                   ,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+  {
+    INT                         decotype;           /* Type of decomposition                            */
+    INT                         termdomnbr;         /* Number of terminal domains (ie processors)       */
+***************
+*** 220,225 ****
+--- 226,237 ----
+    Anum * restrict             termdisttab;        /* Table of terminal-to-terminal distances          */
+    INT                         i, j;
+  
++ #ifdef NOFILEIO
++ //  printf("archDecoArchLoad - napar=%d,archpar=%p\n",napar,archpar);
++   errorPrint ("archDecoArchLoad - not yet converted to matlab matrices");
++   return     (1);
++ #endif /* NOFILEIO */
++ 
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchDeco)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchDecoDom) > sizeof (ArchDomDummy))) {
+diff -crB scotch_5.1/src/libscotch/arch_deco.h src/src/libscotch/arch_deco.h
+*** scotch_5.1/src/libscotch/arch_deco.h	2008-09-27 07:49:46.000000000 -0700
+--- src/src/libscotch/arch_deco.h	2013-05-06 14:14:13.000000000 -0700
+***************
+*** 113,119 ****
+--- 113,123 ----
+  #endif
+  
+  int                         archDecoArchBuild   (ArchDeco * const, const Anum, const Anum, const ArchDecoTermVert * const, const Anum  * const);
++ #ifndef NOFILEIO
+  int                         archDecoArchLoad    (ArchDeco * const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         archDecoArchLoad    (ArchDeco * const, FILE * restrict const, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archDecoArchSave    (const ArchDeco * const, FILE * restrict const);
+  int                         archDecoArchFree    (ArchDeco * const);
+  Anum                        archDecoArchSize    (ArchDeco * const, const Anum);
+diff -crB scotch_5.1/src/libscotch/arch.h src/src/libscotch/arch.h
+*** scotch_5.1/src/libscotch/arch.h	2009-04-28 08:11:27.000000000 -0700
+--- src/src/libscotch/arch.h	2013-05-06 14:14:13.000000000 -0700
+***************
+*** 175,181 ****
+--- 175,185 ----
+  int                         archInit            (Arch * restrict const);
+  int                         archExit            (Arch * restrict const);
+  int                         archFree            (Arch * restrict const);
++ #ifndef NOFILEIO
+  int                         archLoad            (Arch * restrict const, FILE * const);
++ #else /* NOFILEIO */
++ int                         archLoad            (Arch * restrict const, FILE * const, const char *, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archSave            (const Arch * const, FILE * const);
+  char *                      archName            (const Arch * const);
+  const ArchClass *           archClass           (const char * const);
+diff -crB scotch_5.1/src/libscotch/arch_hcub.c src/src/libscotch/arch_hcub.c
+*** scotch_5.1/src/libscotch/arch_hcub.c	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_hcub.c	2013-05-06 14:14:13.000000000 -0700
+***************
+*** 88,95 ****
+  int
+  archHcubArchLoad (
+  ArchHcub * restrict const   archptr,
+! FILE * restrict const       stream)
+  {
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchHcub)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchHcubDom) > sizeof (ArchDomDummy))) {
+--- 88,105 ----
+  int
+  archHcubArchLoad (
+  ArchHcub * restrict const   archptr,
+! FILE * restrict const       stream
+! #ifdef NOFILEIO
+!                                   ,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+  {
++ #ifdef NOFILEIO
++ //  printf("archHcubArchLoad - napar=%d,archpar=%p\n",napar,archpar);
++ #endif /* NOFILEIO */
++ 
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchHcub)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchHcubDom) > sizeof (ArchDomDummy))) {
+***************
+*** 98,105 ****
+--- 108,120 ----
+    }
+  #endif /* SCOTCH_DEBUG_ARCH1 */
+  
++ #ifndef NOFILEIO
+    if ((intLoad (stream, &archptr->dimmax) != 1) ||
+        (archptr->dimmax < 1)                     ||
++ #else /* NOFILEIO */
++   if ((napar < 1)                        ||
++       ((archptr->dimmax=archpar[0]) < 1) ||
++ #endif /* NOFILEIO */
+        (archptr->dimmax > (sizeof (archptr->dimmax) << 3))) {
+      errorPrint ("archHcubArchLoad: bad input");
+      return     (1);
+diff -crB scotch_5.1/src/libscotch/arch_hcub.h src/src/libscotch/arch_hcub.h
+*** scotch_5.1/src/libscotch/arch_hcub.h	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_hcub.h	2013-05-06 14:14:14.000000000 -0700
+***************
+*** 85,91 ****
+--- 85,95 ----
+  #define static
+  #endif
+  
++ #ifndef NOFILEIO
+  int                         archHcubArchLoad    (ArchHcub * restrict const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         archHcubArchLoad    (ArchHcub * restrict const, FILE * restrict const, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archHcubArchSave    (const ArchHcub * const, FILE * restrict const);
+  #define archHcubArchFree            NULL
+  ArchDomNum                  archHcubDomNum      (const ArchHcub * const, const ArchHcubDom * const);
+diff -crB scotch_5.1/src/libscotch/arch_mesh.c src/src/libscotch/arch_mesh.c
+*** scotch_5.1/src/libscotch/arch_mesh.c	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_mesh.c	2013-05-06 14:14:14.000000000 -0700
+***************
+*** 96,103 ****
+  int
+  archMesh2ArchLoad (
+  ArchMesh2 * restrict const  archptr,
+! FILE * restrict const       stream)
+! {
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchMesh2)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchMesh2Dom) > sizeof (ArchDomDummy))) {
+--- 96,113 ----
+  int
+  archMesh2ArchLoad (
+  ArchMesh2 * restrict const  archptr,
+! FILE * restrict const       stream
+! #ifdef NOFILEIO
+!                                   ,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+! {
+! #ifdef NOFILEIO
+! //  printf("archMesh2ArchLoad - napar=%d,archpar=%p\n",napar,archpar);
+! #endif /* NOFILEIO */
+! 
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchMesh2)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchMesh2Dom) > sizeof (ArchDomDummy))) {
+***************
+*** 106,114 ****
+--- 116,130 ----
+    }
+  #endif /* SCOTCH_DEBUG_ARCH1 */
+  
++ #ifndef NOFILEIO
+    if ((intLoad (stream, &archptr->c[0]) != 1) ||
+        (intLoad (stream, &archptr->c[1]) != 1) ||
+        (archptr->c[0] < 1) || (archptr->c[1] < 1)) {
++ #else /* NOFILEIO */
++   if ((napar < 2)                      ||
++       ((archptr->c[0]=archpar[0]) < 1) ||
++       ((archptr->c[1]=archpar[1]) < 1)) {
++ #endif /* NOFILEIO */
+      errorPrint ("archMesh2ArchLoad: bad input");
+      return     (1);
+    }
+***************
+*** 421,428 ****
+  int
+  archMesh3ArchLoad (
+  ArchMesh3 * restrict const  archptr,
+! FILE * restrict const       stream)
+! {
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchMesh3)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchMesh3Dom) > sizeof (ArchDomDummy))) {
+--- 437,454 ----
+  int
+  archMesh3ArchLoad (
+  ArchMesh3 * restrict const  archptr,
+! FILE * restrict const       stream
+! #ifdef NOFILEIO
+!                                   ,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+! {
+! #ifdef NOFILEIO
+! //  printf("archMesh3ArchLoad - napar=%d,archpar=%p\n",napar,archpar);
+! #endif /* NOFILEIO */
+! 
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchMesh3)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchMesh3Dom) > sizeof (ArchDomDummy))) {
+***************
+*** 431,440 ****
+--- 457,473 ----
+    }
+  #endif /* SCOTCH_DEBUG_ARCH1 */
+  
++ #ifndef NOFILEIO
+    if ((intLoad (stream, &archptr->c[0]) != 1) ||
+        (intLoad (stream, &archptr->c[1]) != 1) ||
+        (intLoad (stream, &archptr->c[2]) != 1) ||
+        (archptr->c[0] < 1) || (archptr->c[1] < 1) || (archptr->c[2] < 1)) {
++ #else /* NOFILEIO */
++   if ((napar < 3)                      ||
++       ((archptr->c[0]=archpar[0]) < 1) ||
++       ((archptr->c[1]=archpar[1]) < 1) ||
++       ((archptr->c[2]=archpar[2]) < 1)) {
++ #endif /* NOFILEIO */
+      errorPrint ("archMesh3ArchLoad: bad input");
+      return     (1);
+    }
+diff -crB scotch_5.1/src/libscotch/arch_mesh.h src/src/libscotch/arch_mesh.h
+*** scotch_5.1/src/libscotch/arch_mesh.h	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_mesh.h	2013-05-06 14:14:14.000000000 -0700
+***************
+*** 96,102 ****
+--- 96,106 ----
+  #define static
+  #endif
+  
++ #ifndef NOFILEIO
+  int                         archMesh2ArchLoad   (ArchMesh2 * restrict const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         archMesh2ArchLoad   (ArchMesh2 * restrict const, FILE * restrict const, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archMesh2ArchSave   (const ArchMesh2 * const, FILE * restrict const);
+  #define archMesh2ArchFree           NULL
+  ArchDomNum                  archMesh2DomNum     (const ArchMesh2 * const, const ArchMesh2Dom * const);
+***************
+*** 114,120 ****
+--- 118,128 ----
+  int                         archMesh2DomMpiType (const ArchMesh2 * const, MPI_Datatype * const);
+  #endif /* SCOTCH_PTSCOTCH */
+  
++ #ifndef NOFILEIO
+  int                         archMesh3ArchLoad   (ArchMesh3 * restrict const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         archMesh3ArchLoad   (ArchMesh3 * restrict const, FILE * restrict const, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archMesh3ArchSave   (const ArchMesh3 * const, FILE * restrict const);
+  #define archMesh3ArchFree           NULL
+  ArchDomNum                  archMesh3DomNum     (const ArchMesh3 * const, const ArchMesh3Dom * const);
+diff -crB scotch_5.1/src/libscotch/arch_tleaf.c src/src/libscotch/arch_tleaf.c
+*** scotch_5.1/src/libscotch/arch_tleaf.c	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_tleaf.c	2013-05-06 14:14:14.000000000 -0700
+***************
+*** 92,99 ****
+  int
+  archTleafArchLoad (
+  ArchTleaf * restrict const  archptr,
+! FILE * restrict const       stream)
+  {
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchTleaf)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchTleafDom) > sizeof (ArchDomDummy))) {
+--- 92,109 ----
+  int
+  archTleafArchLoad (
+  ArchTleaf * restrict const  archptr,
+! FILE * restrict const       stream
+! #ifdef NOFILEIO
+!                                   ,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+  {
++ #ifdef NOFILEIO
++ //  printf("archTleafArchLoad - napar=%d,archpar=%p\n",napar,archpar);
++ #endif /* NOFILEIO */
++ 
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchTleaf)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchTleafDom) > sizeof (ArchDomDummy))) {
+***************
+*** 102,107 ****
+--- 112,118 ----
+    }
+  #endif /* SCOTCH_DEBUG_ARCH1 */
+  
++ #ifndef NOFILEIO
+    if ((intLoad (stream, &archptr->leafdep) != 1) ||
+        (intLoad (stream, &archptr->clusdep) != 1) ||
+        (intLoad (stream, &archptr->linkval) != 1) ||
+***************
+*** 109,114 ****
+--- 120,132 ----
+        (archptr->clusdep < 0)                     ||
+        (archptr->clusdep > archptr->leafdep)      ||
+        (archptr->linkval < 1)) {
++ #else /* NOFILEIO */
++   if ((napar < 3)                            ||
++       ((archptr->leafdep=archpar[0]) < 1)    ||
++       ((archptr->clusdep=archpar[1]) < 0)    ||
++       ( archptr->clusdep > archptr->leafdep) ||
++       ((archptr->linkval=archpar[2]) < 1)) {
++ #endif /* NOFILEIO */
+      errorPrint ("archTleafArchLoad: bad input");
+      return     (1);
+    }
+diff -crB scotch_5.1/src/libscotch/arch_tleaf.h src/src/libscotch/arch_tleaf.h
+*** scotch_5.1/src/libscotch/arch_tleaf.h	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_tleaf.h	2013-05-06 14:14:15.000000000 -0700
+***************
+*** 89,95 ****
+--- 89,99 ----
+  #define static
+  #endif
+  
++ #ifndef NOFILEIO
+  int                         archTleafArchLoad   (ArchTleaf * restrict const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         archTleafArchLoad   (ArchTleaf * restrict const, FILE * restrict const, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archTleafArchSave   (const ArchTleaf * const, FILE * restrict const);
+  #define archTleafArchFree           NULL
+  ArchDomNum                  archTleafDomNum     (const ArchTleaf * const, const ArchTleafDom * const);
+diff -crB scotch_5.1/src/libscotch/arch_torus.c src/src/libscotch/arch_torus.c
+*** scotch_5.1/src/libscotch/arch_torus.c	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_torus.c	2013-05-06 14:14:15.000000000 -0700
+***************
+*** 90,97 ****
+  int
+  archTorus2ArchLoad (
+  ArchTorus2 * restrict const archptr,
+! FILE * restrict const       stream)
+! {
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchTorus2)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchTorus2Dom) > sizeof (ArchDomDummy))) {
+--- 90,107 ----
+  int
+  archTorus2ArchLoad (
+  ArchTorus2 * restrict const archptr,
+! FILE * restrict const       stream
+! #ifdef NOFILEIO
+!                                   ,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+! {
+! #ifdef NOFILEIO
+! //  printf("archTorus2ArchLoad - napar=%d,archpar=%p\n",napar,archpar);
+! #endif /* NOFILEIO */
+! 
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchTorus2)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchTorus2Dom) > sizeof (ArchDomDummy))) {
+***************
+*** 100,108 ****
+--- 110,124 ----
+    }
+  #endif /* SCOTCH_DEBUG_ARCH1 */
+  
++ #ifndef NOFILEIO
+    if ((intLoad (stream, &archptr->c[0]) != 1) ||
+        (intLoad (stream, &archptr->c[1]) != 1) ||
+        (archptr->c[0] < 1) || (archptr->c[1] < 1)) {
++ #else /* NOFILEIO */
++   if ((napar < 2)                      ||
++       ((archptr->c[0]=archpar[0]) < 1) ||
++       ((archptr->c[1]=archpar[1]) < 1)) {
++ #endif /* NOFILEIO */
+      errorPrint ("archTorus2ArchLoad: bad input");
+      return     (1);
+    }
+***************
+*** 363,370 ****
+  int
+  archTorus3ArchLoad (
+  ArchTorus3 * restrict const archptr,
+! FILE * restrict const       stream)
+! {
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchTorus3)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchTorus3Dom) > sizeof (ArchDomDummy))) {
+--- 379,396 ----
+  int
+  archTorus3ArchLoad (
+  ArchTorus3 * restrict const archptr,
+! FILE * restrict const       stream
+! #ifdef NOFILEIO
+!                                   ,
+! const Anum                  napar,
+! const Anum *                archpar
+! #endif /* NOFILEIO */
+!                                    )
+! {
+! #ifdef NOFILEIO
+! //  printf("archTorus3ArchLoad - napar=%d,archpar=%p\n",napar,archpar);
+! #endif /* NOFILEIO */
+! 
+  #ifdef SCOTCH_DEBUG_ARCH1
+    if ((sizeof (ArchTorus3)    > sizeof (ArchDummy)) ||
+        (sizeof (ArchTorus3Dom) > sizeof (ArchDomDummy))) {
+***************
+*** 373,382 ****
+--- 399,415 ----
+    }
+  #endif /* SCOTCH_DEBUG_ARCH1 */
+  
++ #ifndef NOFILEIO
+    if ((intLoad (stream, &archptr->c[0]) != 1) ||
+        (intLoad (stream, &archptr->c[1]) != 1) ||
+        (intLoad (stream, &archptr->c[2]) != 1) ||
+        (archptr->c[0] < 1) || (archptr->c[1] < 1) || (archptr->c[2] < 1)) {
++ #else /* NOFILEIO */
++   if ((napar < 3)                      ||
++       ((archptr->c[0]=archpar[0]) < 1) ||
++       ((archptr->c[1]=archpar[1]) < 1) ||
++       ((archptr->c[2]=archpar[2]) < 1)) {
++ #endif /* NOFILEIO */
+      errorPrint ("archTorus3ArchLoad: bad input");
+      return     (1);
+    }
+diff -crB scotch_5.1/src/libscotch/arch_torus.h src/src/libscotch/arch_torus.h
+*** scotch_5.1/src/libscotch/arch_torus.h	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/arch_torus.h	2013-05-06 14:14:15.000000000 -0700
+***************
+*** 96,102 ****
+--- 96,106 ----
+  #define static
+  #endif
+  
++ #ifndef NOFILEIO
+  int                         archTorus2ArchLoad  (ArchTorus2 * restrict const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         archTorus2ArchLoad  (ArchTorus2 * restrict const, FILE * restrict const, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archTorus2ArchSave  (const ArchTorus2 * const, FILE * restrict const);
+  #define archTorus2ArchFree          NULL
+  ArchDomNum                  archTorus2DomNum    (const ArchTorus2 * const, const ArchTorus2Dom * const);
+***************
+*** 114,120 ****
+--- 118,128 ----
+  int                         archTorus2DomMpiType (const ArchTorus2 * const, MPI_Datatype * const);
+  #endif /* SCOTCH_PTSCOTCH */
+  
++ #ifndef NOFILEIO
+  int                         archTorus3ArchLoad  (ArchTorus3 * restrict const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         archTorus3ArchLoad  (ArchTorus3 * restrict const, FILE * restrict const, const Anum, const Anum *);
++ #endif /* NOFILEIO */
+  int                         archTorus3ArchSave  (const ArchTorus3 * const, FILE * restrict const);
+  #define archTorus3ArchFree          NULL
+  ArchDomNum                  archTorus3DomNum    (const ArchTorus3 * const, const ArchTorus3Dom * const);
+diff -crB scotch_5.1/src/libscotch/common.c src/src/libscotch/common.c
+*** scotch_5.1/src/libscotch/common.c	2008-05-22 06:44:41.000000000 -0700
+--- src/src/libscotch/common.c	2013-05-06 14:14:15.000000000 -0700
+***************
+*** 100,106 ****
+--- 100,112 ----
+  {
+    const char **       cptr;
+  
++ #ifndef MATLAB
+    fprintf (stream, "Usage is:\n");
+    for (cptr = data; *cptr != NULL; cptr ++)
+      fprintf (stream, "  %s\n", *cptr);
++ #else /* MATLAB */
++   mexPrintf ("Usage is:\n");
++   for (cptr = data; *cptr != NULL; cptr ++)
++     mexPrintf ("  %s\n", *cptr);
++ #endif /* MATLAB */
+  }
+diff -crB scotch_5.1/src/libscotch/common.h src/src/libscotch/common.h
+*** scotch_5.1/src/libscotch/common.h	2009-02-06 14:20:55.000000000 -0800
+--- src/src/libscotch/common.h	2013-05-09 11:49:35.317220518 -0700
+***************
+*** 1,3 ****
+--- 1,5 ----
++ #ifndef _SCOTCH_COMMON_H_
++ #define _SCOTCH_COMMON_H_
+  /* Copyright 2004,2007-2009 ENSEIRB, INRIA & CNRS
+  **
+  ** This file is part of the Scotch software package for static mapping,
+***************
+*** 79,84 ****
+--- 81,87 ----
+  #include            <sys/resource.h>
+  #endif /* COMMON_TIMING_OLD */
+  #include            <unistd.h>
++ #include            <sys/param.h>
+  
+  #ifdef SCOTCH_PTSCOTCH
+  #include            <mpi.h>
+***************
+*** 106,113 ****
+  #define memCpy(dst,src,siz)         memcpy((dst),(src),(siz))
+  #define memMov(dst,src,siz)         memmove((dst),(src),(siz))
+  
+- #define MIN(x,y)                    (((x) < (y)) ? (x) : (y))
+- #define MAX(x,y)                    (((x) < (y)) ? (y) : (x))
+  #define ABS(x)                      MAX ((x), -(x))
+  #define SIGN(x)                     (((x) < 0) ? -1 : 1)
+  
+--- 109,114 ----
+***************
+*** 171,179 ****
+  /** The file structure. **/
+  
+  typedef struct File_ {
+!   char *                    name;                 /*+ File name    +*/
+    FILE *                    pntr;                 /*+ File pointer +*/
+!   char *                    mode;                 /*+ Opening mode +*/
+  } File;
+  
+  /*
+--- 172,180 ----
+  /** The file structure. **/
+  
+  typedef struct File_ {
+!   const char *              name;                 /*+ File name    +*/
+    FILE *                    pntr;                 /*+ File pointer +*/
+!   const char *              mode;                 /*+ Opening mode +*/
+  } File;
+  
+  /*
+***************
+*** 190,216 ****
+  size_t                      memMax              ();
+  #endif /* COMMON_MEMORY_TRACE */
+  
+- void                        usagePrint          (FILE * const, const char (* []));
+  
+- int                         fileBlockOpen       (File * const, const int);
+  int                         fileBlockOpenDist   (File * const, const int, const int, const int, const int);
+- void                        fileBlockClose      (File * const, const int);
+  FILE *                      fileCompress        (FILE * const, const int);
+  int                         fileCompressType    (const char * const);
+  FILE *                      fileUncompress      (FILE * const, const int);
+  int                         fileUncompressType  (const char * const);
+  int                         fileNameDistExpand  (char ** const, const int, const int, const int);
+  
+  void                        errorProg           (const char * const);
+  void                        errorPrint          (const char * const, ...);
+  void                        errorPrintW         (const char * const, ...);
+  
+  int                         intLoad             (FILE * const, INT * const);
+  int                         intSave             (FILE * const, const INT);
+  void                        intAscn             (INT * const, const INT, const INT);
+  void                        intPerm             (INT * const, const INT);
+  void                        intRandReset        (void);
+- void                        intRandInit         (void);
+  INT                         intRandVal          (INT);
+  void                        intSort1asc1        (void * const, const INT);
+  void                        intSort2asc1        (void * const, const INT);
+--- 191,227 ----
+  size_t                      memMax              ();
+  #endif /* COMMON_MEMORY_TRACE */
+  
+  
+  int                         fileBlockOpenDist   (File * const, const int, const int, const int, const int);
+  FILE *                      fileCompress        (FILE * const, const int);
+  int                         fileCompressType    (const char * const);
+  FILE *                      fileUncompress      (FILE * const, const int);
+  int                         fileUncompressType  (const char * const);
+  int                         fileNameDistExpand  (char ** const, const int, const int, const int);
+  
++ #ifdef __cplusplus
++ extern "C" {
++ #endif /* __cplusplus */
++ 
+  void                        errorProg           (const char * const);
+  void                        errorPrint          (const char * const, ...);
+  void                        errorPrintW         (const char * const, ...);
++ double                      clockGet            (void);
++ void                        usagePrint          (FILE * const, const char (* []));
++ void                        intRandInit         (void);
++ int                         fileBlockOpen       (File * const, const int);
++ void                        fileBlockClose      (File * const, const int);
++ void                        intRandResetStatic  (void);
++ 
++ #ifdef __cplusplus
++ }
++ #endif /* __cplusplus */
+  
+  int                         intLoad             (FILE * const, INT * const);
+  int                         intSave             (FILE * const, const INT);
+  void                        intAscn             (INT * const, const INT, const INT);
+  void                        intPerm             (INT * const, const INT);
+  void                        intRandReset        (void);
+  INT                         intRandVal          (INT);
+  void                        intSort1asc1        (void * const, const INT);
+  void                        intSort2asc1        (void * const, const INT);
+***************
+*** 221,227 ****
+  void                        clockStart          (Clock * const);
+  void                        clockStop           (Clock * const);
+  double                      clockVal            (Clock * const);
+- double                      clockGet            (void);
+  
+  /*
+  **  Macro definitions.
+--- 232,237 ----
+***************
+*** 249,251 ****
+--- 259,263 ----
+  void nl##__ pl                                   \
+  { nu pc; }                                       \
+  void nu pl
++ 
++ #endif //#ifndef _SCOTCH_COMMON_H_
+diff -crB scotch_5.1/src/libscotch/common_integer.c src/src/libscotch/common_integer.c
+*** scotch_5.1/src/libscotch/common_integer.c	2009-01-21 01:32:32.000000000 -0800
+--- src/src/libscotch/common_integer.c	2013-05-06 14:14:16.000000000 -0700
+***************
+*** 191,196 ****
+--- 191,209 ----
+  static volatile int intrandflag = 0;              /*+ Flag set if generator already initialized +*/
+  static unsigned int intrandseed = 1;              /*+ Random seed                               +*/
+  
++ void
++ intRandResetStatic (void)
++ {
++ #ifdef MATLAB
++ //  printf("intRandResetStatic begin - intrandflag=%d,intrandseed=%d\n",intrandflag,intrandseed);
++ #endif /* MATLAB */
++   intrandflag = 0;              /*+ Flag set if generator already initialized +*/
++   intrandseed = 1;              /*+ Random seed                               +*/
++ #ifdef MATLAB
++ //  printf("intRandResetStatic end   - intrandflag=%d,intrandseed=%d\n",intrandflag,intrandseed);
++ #endif /* MATLAB */
++ }
++ 
+  /* This routine initializes the pseudo-random
+  ** generator if necessary. In order for multi-sequential
+  ** programs to have exactly the same behavior on any
+***************
+*** 205,210 ****
+--- 218,226 ----
+  void
+  intRandInit (void)
+  {
++ #ifdef MATLAB
++ //  printf("intRandInit begin - intrandflag=%d,intrandseed=%d\n",intrandflag,intrandseed);
++ #endif /* MATLAB */
+    if (intrandflag == 0) {                         /* If generator not yet initialized */
+  #if ! ((defined COMMON_DEBUG) || (defined COMMON_RANDOM_FIXED_SEED) || (defined SCOTCH_DETERMINISTIC))
+      intrandseed = time (NULL);                    /* Set random seed if needed */
+***************
+*** 216,221 ****
+--- 232,240 ----
+  #endif /* COMMON_RANDOM_RAND */
+      intrandflag = 1;                              /* Generator has been initialized */
+    }
++ #ifdef MATLAB
++ //  printf("intRandInit end   - intrandflag=%d,intrandseed=%d\n",intrandflag,intrandseed);
++ #endif /* MATLAB */
+  }
+  
+  /* This routine reinitializes the pseudo-random
+***************
+*** 228,233 ****
+--- 247,255 ----
+  void
+  intRandReset (void)
+  {
++ #ifdef MATLAB
++ //  printf("intRandReset begin - intrandflag=%d,intrandseed=%d\n",intrandflag,intrandseed);
++ #endif /* MATLAB */
+    if (intrandflag != 0) {                         /* Keep seed computed during first initialization */
+  #ifdef COMMON_RANDOM_RAND
+      srand (intrandseed);
+***************
+*** 237,242 ****
+--- 259,267 ----
+    }
+    else
+      intRandInit ();
++ #ifdef MATLAB
++ //  printf("intRandReset end   - intrandflag=%d,intrandseed=%d\n",intrandflag,intrandseed);
++ #endif /* MATLAB */
+  }
+  
+  /*********************/
+diff -crB scotch_5.1/src/libscotch/common_memory.c src/src/libscotch/common_memory.c
+*** scotch_5.1/src/libscotch/common_memory.c	2009-01-03 02:16:11.000000000 -0800
+--- src/src/libscotch/common_memory.c	2013-05-06 14:14:16.000000000 -0700
+***************
+*** 87,93 ****
+--- 87,95 ----
+    size_t              newadd;
+    byte *              newptr;
+  
++   printf("memAllocRecord begin -- memorysiz=%d,memorymax=%d\n",memorysiz,memorymax);
+  #if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD))
++   printf("memAllocRecord begin -- muteflag=%d,mutelocdat=%p\n",muteflag,mutelocdat);
+    if (muteflag != 0) {                            /* Unsafe code with respect to race conditions but should work as first allocs are sequential */
+      muteflag = 0;
+      pthread_mutex_init (&mutelocdat, NULL);       /* Initialize local mutex */
+***************
+*** 109,116 ****
+--- 111,120 ----
+  
+  #if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD))
+    pthread_mutex_unlock (&mutelocdat);             /* Unlock local mutex */
++   printf("memAllocRecord end   -- muteflag=%d,mutelocdat=%p\n",muteflag,mutelocdat);
+  #endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */
+  
++   printf("memAllocRecord end   -- memorysiz=%d,memorymax=%d\n",memorysiz,memorymax);
+    return ((void *) newptr);                       /* Return skewed pointer or NULL */
+  }
+  
+***************
+*** 124,133 ****
+--- 128,139 ----
+    size_t              oldsiz;
+    size_t              newadd;
+  
++   printf("memReallocRecord begin -- memorysiz=%d,memorymax=%d\n",memorysiz,memorymax);
+    tmpptr = ((byte *) oldptr) - COMMON_MEMORY_SKEW;
+    oldsiz = *((size_t *) tmpptr);
+  
+  #if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD))
++   printf("memReallocRecord begin -- muteflag=%d,mutelocdat=%p\n",muteflag,mutelocdat);
+    pthread_mutex_lock (&mutelocdat);               /* Lock local mutex */
+  #endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */
+  
+***************
+*** 145,152 ****
+--- 151,160 ----
+  
+  #if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD))
+    pthread_mutex_unlock (&mutelocdat);             /* Unlock local mutex */
++   printf("memReallocRecord end   -- muteflag=%d,mutelocdat=%p\n",muteflag,mutelocdat);
+  #endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */
+  
++   printf("memReallocRecord end   -- memorysiz=%d,memorymax=%d\n",memorysiz,memorymax);
+    return ((void *) newptr);                       /* Return skewed pointer or NULL */
+  }
+  
+***************
+*** 157,166 ****
+--- 165,176 ----
+    byte *              tmpptr;
+    size_t              oldsiz;
+  
++   printf("memFreeRecord begin -- memorysiz=%d,memorymax=%d\n",memorysiz,memorymax);
+    tmpptr = ((byte *) oldptr) - COMMON_MEMORY_SKEW;
+    oldsiz = *((size_t *) tmpptr);
+  
+  #if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD))
++   printf("memFreeRecord begin -- muteflag=%d,mutelocdat=%p\n",muteflag,mutelocdat);
+    pthread_mutex_lock (&mutelocdat);               /* Lock local mutex */
+  #endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */
+  
+***************
+*** 169,175 ****
+--- 179,187 ----
+  
+  #if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD))
+    pthread_mutex_unlock (&mutelocdat);             /* Unlock local mutex */
++   printf("memFreeRecord end   -- muteflag=%d,mutelocdat=%p\n",muteflag,mutelocdat);
+  #endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */
++   printf("memFreeRecord end   -- memorysiz=%d,memorymax=%d\n",memorysiz,memorymax);
+  }
+  
+  size_t
+***************
+*** 177,183 ****
+--- 189,197 ----
+  {
+    size_t              curmax;
+  
++   printf("memMax begin -- memorysiz=%d,memorymax=%d\n",memorysiz,memorymax);
+  #if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD))
++   printf("memMax begin -- muteflag=%d,mutelocdat=%p\n",muteflag,mutelocdat);
+    pthread_mutex_lock (&mutelocdat);               /* Lock local mutex */
+  #endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */
+  
+***************
+*** 185,192 ****
+--- 199,208 ----
+  
+  #if (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD))
+    pthread_mutex_unlock (&mutelocdat);             /* Unlock local mutex */
++   printf("memMax end   -- muteflag=%d,mutelocdat=%p\n",muteflag,mutelocdat);
+  #endif /* (defined (COMMON_PTHREAD) || defined (SCOTCH_PTHREAD)) */
+  
++   printf("memMax end   -- memorysiz=%d,memorymax=%d\n",memorysiz,memorymax);
+    return (curmax);
+  }
+  #endif /* COMMON_MEMORY_TRACE */
+diff -crB scotch_5.1/src/libscotch/dummysizes.c src/src/libscotch/dummysizes.c
+*** scotch_5.1/src/libscotch/dummysizes.c	2009-05-09 16:08:02.000000000 -0700
+--- src/src/libscotch/dummysizes.c	2013-05-06 14:14:16.000000000 -0700
+***************
+*** 267,271 ****
+--- 267,273 ----
+    }
+  #endif /* SCOTCH_DEBUG_MAIN1 */
+  
++ #ifndef MATLAB
+    exit (0);
++ #endif /* MATLAB */
+  }
+diff -crB scotch_5.1/src/libscotch/graph.c src/src/libscotch/graph.c
+*** scotch_5.1/src/libscotch/graph.c	2008-05-22 06:44:42.000000000 -0700
+--- src/src/libscotch/graph.c	2013-05-06 14:14:17.000000000 -0700
+***************
+*** 135,141 ****
+      if ((grafptr->velotax != NULL) &&             /* Free graph tables             */
+          ((grafptr->flagval & GRAPHVERTGROUP) == 0))
+        memFree (grafptr->velotax + grafptr->baseval);
+!     if (grafptr->vlbltax != NULL)
+        memFree (grafptr->vlbltax + grafptr->baseval);
+      if ((grafptr->edlotax != NULL) &&
+          ((grafptr->flagval & GRAPHEDGEGROUP) == 0))
+--- 135,144 ----
+      if ((grafptr->velotax != NULL) &&             /* Free graph tables             */
+          ((grafptr->flagval & GRAPHVERTGROUP) == 0))
+        memFree (grafptr->velotax + grafptr->baseval);
+! /*  vlbltax must also check GRAPHVERTGROUP (jes, 12/11/09)  */
+! //    if (grafptr->vlbltax != NULL)
+!     if ((grafptr->vlbltax != NULL) &&
+!         ((grafptr->flagval & GRAPHVERTGROUP) == 0))
+        memFree (grafptr->vlbltax + grafptr->baseval);
+      if ((grafptr->edlotax != NULL) &&
+          ((grafptr->flagval & GRAPHEDGEGROUP) == 0))
+diff -crB scotch_5.1/src/libscotch/graph.h src/src/libscotch/graph.h
+*** scotch_5.1/src/libscotch/graph.h	2008-06-01 02:49:11.000000000 -0700
+--- src/src/libscotch/graph.h	2013-05-06 14:14:17.000000000 -0700
+***************
+*** 159,165 ****
+--- 159,169 ----
+  int                         graphInit           (Graph * const);
+  void                        graphExit           (Graph * const);
+  void                        graphFree           (Graph * const);
++ #ifndef NOFILEIO
+  int                         graphLoad           (Graph * const, FILE * const, const Gnum, const GraphFlag);
++ #else /* NOFILEIO */
++ int                         graphLoad           (Graph * const, FILE * const, const Gnum, const GraphFlag, const Gnum, const Gnum, const Gnum*, const Gnum*, const Gnum*, const Gnum*, const Gnum*);
++ #endif /* NOFILEIO */
+  int                         graphLoad2          (const Gnum, const Gnum, const Gnum * const, const Gnum * const, Gnum * restrict const, const Gnum, const Gnum * const);
+  int                         graphSave           (const Graph * const, FILE * const);
+  Gnum                        graphBase           (Graph * const, const Gnum);
+diff -crB scotch_5.1/src/libscotch/graph_io.c src/src/libscotch/graph_io.c
+*** scotch_5.1/src/libscotch/graph_io.c	2008-05-22 06:44:42.000000000 -0700
+--- src/src/libscotch/graph_io.c	2013-05-06 14:14:17.000000000 -0700
+***************
+*** 86,92 ****
+  Graph * restrict const      grafptr,              /* Graph structure to fill              */
+  FILE * const                stream,               /* Stream from which to read graph data */
+  const Gnum                  baseval,              /* Base value (-1 means keep file base) */
+! const GraphFlag             flagval)              /* Graph loading flags                  */
+  {
+    Gnum                edgenum;                    /* Number of edges really allocated */
+    Gnum                edgennd;
+--- 86,103 ----
+  Graph * restrict const      grafptr,              /* Graph structure to fill              */
+  FILE * const                stream,               /* Stream from which to read graph data */
+  const Gnum                  baseval,              /* Base value (-1 means keep file base) */
+! const GraphFlag             flagval               /* Graph loading flags                  */
+! #ifdef NOFILEIO
+!                                    ,
+! const Gnum                  nvert,
+! const Gnum                  nedge2,
+! const Gnum*                 adjir,
+! const Gnum*                 adjjc,
+! const Gnum*                 vertlab,
+! const Gnum*                 vertwgt,
+! const Gnum*                 edgewgt
+! #endif /* NOFILEIO */
+!                                    )
+  {
+    Gnum                edgenum;                    /* Number of edges really allocated */
+    Gnum                edgennd;
+***************
+*** 104,120 ****
+--- 115,141 ----
+    char                proptab[4];
+    Gnum                vertnum;
+  
++ #ifdef NOFILEIO
++ //  printf("graphLoad - stream=%p; nvert=%d,nedge2=%d\n",stream,nvert,nedge2);
++ //  printf("graphLoad - adjir=%p,adjjc=%p,vertlab=%p,vertwgt=%p,edgewgt=%p\n",
++ //         adjir,adjjc,vertlab,vertwgt,edgewgt);
++ #endif /* NOFILEIO */
+    memSet (grafptr, 0, sizeof (Graph));
+  
++ #ifndef NOFILEIO
+    if (intLoad (stream, &versval) != 1) {          /* Read version number */
+      errorPrint ("graphLoad: bad input (1)");
+      return     (1);
+    }
++ #else /* NOFILEIO */
++   versval=0;
++ #endif /* NOFILEIO */
+    if (versval != 0) {                             /* If version not zero */
+      errorPrint ("graphLoad: old-style graph format no longer supported");
+      return     (1);
+    }
+  
++ #ifndef NOFILEIO
+    if ((intLoad (stream, &grafptr->vertnbr) != 1) || /* Read rest of header */
+        (intLoad (stream, &grafptr->edgenbr) != 1) ||
+        (intLoad (stream, &baseadj)          != 1) ||
+***************
+*** 124,129 ****
+--- 145,159 ----
+      errorPrint ("graphLoad: bad input (2)");
+      return     (1);
+    }
++ #else /* NOFILEIO */
++   grafptr->vertnbr=nvert;
++   grafptr->edgenbr=nedge2;
++   baseadj=1;
++   propval=0;
++   if (vertlab) propval+=100;
++   if (edgewgt) propval+= 10;
++   if (vertwgt) propval+=  1;
++ #endif /* NOFILEIO */
+    sprintf (proptab, "%3.3d", (int) propval);      /* Compute file properties */
+    proptab[0] -= '0';                              /* Vertex labels flag      */
+    proptab[1] -= '0';                              /* Edge weights flag       */
+***************
+*** 140,145 ****
+--- 170,179 ----
+    }
+    if (proptab[0] != 0)                            /* If vertex labels, no base adjust */
+      baseadj = 0;
++ #ifdef NOFILEIO
++ //  printf("graphLoad - baseadj=%d,baseval=%d,grafptr->baseval=%d\n",
++ //         baseadj,baseval,grafptr->baseval);
++ #endif /* NOFILEIO */
+  
+    velonbr = ((proptab[2] != 0) && ((flagval & GRAPHIONOLOADVERT) == 0)) ? grafptr->vertnbr : 0;
+    vlblnbr = (proptab[0] != 0) ? grafptr->vertnbr : 0;
+***************
+*** 178,188 ****
+--- 212,226 ----
+      if (grafptr->vlbltax != NULL) {               /* If must read label               */
+        Gnum                vlblval;                /* Value where to read vertex label */
+  
++ #ifndef NOFILEIO
+        if (intLoad (stream, &vlblval) != 1) {      /* Read label data */
+          errorPrint ("graphLoad: bad input (3)");
+          graphFree  (grafptr);
+          return     (1);
+        }
++ #else /* NOFILEIO */
++       vlblval=vertlab[vertnum-grafptr->baseval];
++ #endif /* NOFILEIO */
+        grafptr->vlbltax[vertnum] = vlblval;
+        if (grafptr->vlbltax[vertnum] > vlblmax)    /* Get maximum vertex label */
+          vlblmax = grafptr->vlbltax[vertnum];
+***************
+*** 190,209 ****
+--- 228,257 ----
+      if (proptab[2] != 0) {                        /* If must read vertex load        */
+        Gnum                veloval;                /* Value where to read vertex load */
+  
++ #ifndef NOFILEIO
+        if (intLoad (stream, &veloval) != 1) {      /* Read vertex load data    */
+          errorPrint ("graphLoad: bad input (4)");
+          graphFree  (grafptr);
+          return     (1);
+        }
++ #else /* NOFILEIO */
++       veloval=vertwgt[vertnum-grafptr->baseval];
++ #endif /* NOFILEIO */
+        if (grafptr->velotax != NULL)
+          velosum                  +=
+          grafptr->velotax[vertnum] = veloval;
+      }
++ #ifndef NOFILEIO
+      if (intLoad (stream, &degrval) != 1) {        /* Read vertex degree */
+        errorPrint ("graphLoad: bad input (5)");
+        graphFree  (grafptr);
+        return     (1);
+      }
++ #else /* NOFILEIO */
++ //    printf("old degrval=%d; new degrval=%d\n",
++ //           degrval,adjjc[vertnum-grafptr->baseval+1]-adjjc[vertnum-grafptr->baseval]);
++     degrval=adjjc[vertnum-grafptr->baseval+1]-adjjc[vertnum-grafptr->baseval];
++ #endif /* NOFILEIO */
+      if (degrmax < degrval)                        /* Set maximum degree */
+        degrmax = degrval;
+  
+***************
+*** 219,238 ****
+--- 267,301 ----
+        if (proptab[1] != 0) {                      /* If must read edge load        */
+          Gnum                edloval;              /* Value where to read edge load */
+  
++ #ifndef NOFILEIO
+          if (intLoad (stream, &edloval) != 1) {    /* Read edge load data    */
+            errorPrint ("graphLoad: bad input (6)");
+            graphFree  (grafptr);
+            return     (1);
+          }
++ #else /* NOFILEIO */
++         edloval=edgewgt[edgenum-grafptr->baseval];
++ #endif /* NOFILEIO */
+          if (grafptr->edlotax != NULL)
+            edlosum                  +=
+            grafptr->edlotax[edgenum] = (Gnum) edloval;
+        }
++ #ifndef NOFILEIO
+        if (intLoad (stream, &edgeval) != 1) {      /* Read edge data */
+          errorPrint ("graphLoad: bad input (7)");
+          graphFree  (grafptr);
+          return     (1);
+        }
++ #else /* NOFILEIO */
++ //      printf("edgenum=%d: old edgeval=%d; new edgeval[%d]=%d\n",
++ //            edgenum,edgeval,edgenum-grafptr->baseval,adjir[edgenum-grafptr->baseval]+1);
++ /*  if vertex labels are supplied, they must be referenced  (jes, 1/05/10)  */
++ //      edgeval=adjir[edgenum-grafptr->baseval]+1;
++       if (vertlab)
++         edgeval=vertlab[adjir[edgenum-grafptr->baseval]  ];
++       else
++         edgeval=        adjir[edgenum-grafptr->baseval]+1;
++ #endif /* NOFILEIO */
+        grafptr->edgetax[edgenum] = edgeval + baseadj;
+      }
+    }
+***************
+*** 279,284 ****
+--- 342,351 ----
+    Gnum                vertnum;                    /* Number of current vertex        */
+    Gnum * restrict     indxtab;                    /* Vertex label/number index table */
+  
++ #ifdef NOFILEIO
++   printf("graphLoad2 - baseval=%d,vertnnd=%d,vlblmax=%d\n",
++          baseval,vertnnd,vlblmax);
++ #endif /* NOFILEIO */
+    if ((indxtab = (Gnum *) memAlloc ((vlblmax + 1) * sizeof (Gnum))) == NULL) {
+      errorPrint  ("graphLoad2: out of memory");
+      return      (1);
+***************
+*** 286,291 ****
+--- 353,362 ----
+  
+    memSet (indxtab, ~0, (vlblmax + 1) * sizeof (Gnum)); /* Assume labels not used */
+    for (vertnum = baseval; vertnum < vertnnd; vertnum ++) {
++ #ifdef NOFILEIO
++ //    printf("graphLoad2 - vertnum=%d; vlbltax=%d,indxtab=%d\n",
++ //           vertnum,vlbltax[vertnum],indxtab[vlbltax[vertnum]]);
++ #endif /* NOFILEIO */
+      if (indxtab[vlbltax[vertnum]] != ~0) {        /* If vertex label already used */
+        errorPrint  ("graphLoad2: duplicate vertex label");
+        memFree     (indxtab);
+***************
+*** 294,299 ****
+--- 365,374 ----
+      indxtab[vlbltax[vertnum]] = vertnum;          /* Set vertex number index */
+    }
+    for (vertnum = baseval; vertnum < vertnnd; vertnum ++) {
++ #ifdef NOFILEIO
++ //    printf("graphLoad2 - vertnum=%d; vlbltax=%d,indxtab=%d\n",
++ //           vertnum,vlbltax[vertnum],indxtab[vlbltax[vertnum]]);
++ #endif /* NOFILEIO */
+      Gnum                edgenum;                  /* Number of current edge */
+  
+      for (edgenum = verttax[vertnum]; edgenum < vendtax[vertnum]; edgenum ++) {
+***************
+*** 307,313 ****
+--- 382,396 ----
+          memFree    (indxtab);
+          return     (1);
+        }
++ #ifdef NOFILEIO
++ //      printf("graphLoad2 - edgenum=%d; old edgetax=%d,",
++ //             edgenum,edgetax[edgenum]);
++ #endif /* NOFILEIO */
+        edgetax[edgenum] = indxtab[edgetax[edgenum]]; /* Replace label by number */
++ #ifdef NOFILEIO
++ //      printf("new edgetax=%d\n",
++ //             edgetax[edgenum]);
++ #endif /* NOFILEIO */
+      }
+    }
+  
+diff -crB scotch_5.1/src/libscotch/graph_io_scot.c src/src/libscotch/graph_io_scot.c
+*** scotch_5.1/src/libscotch/graph_io_scot.c	2008-05-22 06:44:42.000000000 -0700
+--- src/src/libscotch/graph_io_scot.c	2013-05-06 14:14:17.000000000 -0700
+***************
+*** 89,95 ****
+--- 89,99 ----
+    int                           o;
+  
+    if (filesrcptr != NULL) {
++ #ifndef NOFILEIO
+      if (graphLoad (grafptr, filesrcptr, -1, 0) != 0)
++ #else /* NOFILEIO */
++     if (graphLoad (grafptr, filesrcptr, -1, 0, 0, 0, NULL, NULL, NULL, NULL, NULL) != 0)
++ #endif /* NOFILEIO */
+        return (1);
+    }
+  
+diff -crB scotch_5.1/src/libscotch/library_arch.c src/src/libscotch/library_arch.c
+*** scotch_5.1/src/libscotch/library_arch.c	2008-05-22 06:44:42.000000000 -0700
+--- src/src/libscotch/library_arch.c	2013-05-06 14:14:17.000000000 -0700
+***************
+*** 120,128 ****
+  int
+  SCOTCH_archLoad (
+  SCOTCH_Arch * const         archptr,
+! FILE * const                stream)
+  {
+    return (archLoad ((Arch *) archptr, stream));
+  }
+  
+  /*+ This routine saves the given opaque
+--- 120,139 ----
+  int
+  SCOTCH_archLoad (
+  SCOTCH_Arch * const         archptr,
+! FILE * const                stream
+! #ifdef NOFILEIO
+!                                   ,
+! const char *                archtyp,
+! const SCOTCH_Num            napar,
+! const SCOTCH_Num *          archpar
+! #endif /* NOFILEIO */
+!                                    )
+  {
++ #ifndef NOFILEIO
+    return (archLoad ((Arch *) archptr, stream));
++ #else /* NOFILEIO */
++   return (archLoad ((Arch *) archptr, stream, archtyp, napar, archpar));
++ #endif /* NOFILEIO */
+  }
+  
+  /*+ This routine saves the given opaque
+diff -crB scotch_5.1/src/libscotch/library_arch_f.c src/src/libscotch/library_arch_f.c
+*** scotch_5.1/src/libscotch/library_arch_f.c	2008-05-22 06:44:42.000000000 -0700
+--- src/src/libscotch/library_arch_f.c	2013-05-06 14:14:18.000000000 -0700
+***************
+*** 121,127 ****
+--- 121,131 ----
+    }
+    setbuf (stream, NULL);                          /* Do not buffer on input */
+  
++ #ifndef NOFILEIO
+    o = SCOTCH_archLoad (archptr, stream);
++ #else /* NOFILEIO */
++   o = SCOTCH_archLoad (archptr, stream, "", 0, NULL);
++ #endif /* NOFILEIO */
+  
+    fclose (stream);                                /* This closes filenum too */
+  
+diff -crB scotch_5.1/src/libscotch/library_error_exit.c src/src/libscotch/library_error_exit.c
+*** scotch_5.1/src/libscotch/library_error_exit.c	2009-01-20 00:36:33.000000000 -0800
+--- src/src/libscotch/library_error_exit.c	2013-05-06 14:14:18.000000000 -0700
+***************
+*** 114,119 ****
+--- 114,120 ----
+    int                 proclocnum;
+  #endif /* SCOTCH_PTSCOTCH */
+  
++ #ifndef MATLAB
+    fprintf  (stderr, "%s", _SCOTCHerrorProgName);
+  #ifdef SCOTCH_PTSCOTCH
+    if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) &&
+***************
+*** 131,136 ****
+--- 132,155 ----
+    fprintf  (stderr, "\n");
+    fflush   (stderr);                              /* In case it has been set to buffered mode */
+  
++ #else /* MATLAB */
++   mexPrintf  ("%s", _SCOTCHerrorProgName);
++ #ifdef SCOTCH_PTSCOTCH
++   if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) &&
++       (proclocnum != 0)                              &&
++       (MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum) == MPI_SUCCESS))
++     mexPrintf ("(%d): ", proclocnum);
++ #else /* SCOTCH_PTSCOTCH */
++   if (_SCOTCHerrorProgName[0] != '\0')
++     mexPrintf  (": ");
++ #endif /* SCOTCH_PTSCOTCH */
++   mexPrintf  ("ERROR: ");
++   va_start (errlist, errstr);
++   mexPrintf (errstr, errlist);             /* Print arguments */
++   va_end   (errlist);
++   mexPrintf  ("\n");
++ #endif /* MATLAB */
++ 
+  #ifdef SCOTCH_ERROR_SLEEP
+    sleep (SCOTCH_ERROR_SLEEP);                     /* Wait for messages to be propagated */
+  #endif /* SCOTCH_ERROR_SLEEP */
+***************
+*** 155,160 ****
+--- 174,180 ----
+    int                 proclocnum;
+  #endif /* SCOTCH_PTSCOTCH */
+  
++ #ifndef MATLAB
+    fprintf  (stderr, "%s", _SCOTCHerrorProgName);
+  #ifdef SCOTCH_PTSCOTCH
+    if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) &&
+***************
+*** 171,174 ****
+--- 191,212 ----
+    va_end   (errlist);
+    fprintf  (stderr, "\n");
+    fflush   (stderr);                              /* In case it has been set to buffered mode */
++ 
++ #else /* MATLAB */
++   mexPrintf  ("%s", _SCOTCHerrorProgName);
++ #ifdef SCOTCH_PTSCOTCH
++   if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) &&
++       (proclocnum != 0)                              &&
++       (MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum) == MPI_SUCCESS))
++     mexPrintf ("(%d): ", proclocnum);
++ #else /* SCOTCH_PTSCOTCH */
++   if (_SCOTCHerrorProgName[0] != '\0')
++     mexPrintf  (": ");
++ #endif /* SCOTCH_PTSCOTCH */
++   mexPrintf  ("WARNING: ");
++   va_start (errlist, errstr);
++   mexPrintf (errstr, errlist);             /* Print arguments */
++   va_end   (errlist);
++   mexPrintf  ("\n");
++ #endif /* MATLAB */
+  }
+diff -crB scotch_5.1/src/libscotch/library_graph.c src/src/libscotch/library_graph.c
+*** scotch_5.1/src/libscotch/library_graph.c	2008-05-22 07:28:12.000000000 -0700
+--- src/src/libscotch/library_graph.c	2013-05-06 14:14:18.000000000 -0700
+***************
+*** 137,143 ****
+  SCOTCH_Graph * const        grafptr,
+  FILE * const                stream,
+  const SCOTCH_Num            baseval,
+! const SCOTCH_Num            flagval)
+  {
+    GraphFlag           srcgrafflag;                /* Graph flags */
+  
+--- 137,154 ----
+  SCOTCH_Graph * const        grafptr,
+  FILE * const                stream,
+  const SCOTCH_Num            baseval,
+! const SCOTCH_Num            flagval
+! #ifdef NOFILEIO
+!                                    ,
+! const SCOTCH_Num            nvert,
+! const SCOTCH_Num            nedge2,
+! const SCOTCH_Num*           adjir,
+! const SCOTCH_Num*           adjjc,
+! const SCOTCH_Num*           vertlab,
+! const SCOTCH_Num*           vertwgt,
+! const SCOTCH_Num*           edgewgt
+! #endif /* NOFILEIO */
+!                                    )
+  {
+    GraphFlag           srcgrafflag;                /* Graph flags */
+  
+***************
+*** 153,159 ****
+--- 164,174 ----
+    srcgrafflag = (((flagval & 1) != 0) ? GRAPHIONOLOADVERT : 0) +
+                  (((flagval & 2) != 0) ? GRAPHIONOLOADEDGE : 0);
+  
++ #ifndef NOFILEIO
+    return (graphLoad ((Graph * const) grafptr, stream, (Gnum) baseval, srcgrafflag));
++ #else /* NOFILEIO */
++   return (graphLoad ((Graph * const) grafptr, stream, (Gnum) baseval, srcgrafflag, (const Gnum) nvert, (const Gnum) nedge2, (const Gnum *) adjir, (const Gnum *) adjjc, (const Gnum *) vertlab, (const Gnum *) vertwgt, (const Gnum *) edgewgt));
++ #endif /* NOFILEIO */
+  }
+  
+  /*+ This routine saves the contents of the given
+diff -crB scotch_5.1/src/libscotch/library_graph_f.c src/src/libscotch/library_graph_f.c
+*** scotch_5.1/src/libscotch/library_graph_f.c	2008-05-22 06:44:43.000000000 -0700
+--- src/src/libscotch/library_graph_f.c	2013-05-06 14:14:18.000000000 -0700
+***************
+*** 136,142 ****
+--- 136,146 ----
+    }
+    setbuf (stream, NULL);                          /* Do not buffer on input */
+  
++ #ifndef NOFILEIO
+    o = SCOTCH_graphLoad (grafptr, stream, *baseptr, *flagptr);
++ #else /* NOFILEIO */
++   o = SCOTCH_graphLoad (grafptr, stream, *baseptr, *flagptr, 0, 0, NULL, NULL, NULL, NULL, NULL);
++ #endif /* NOFILEIO */
+  
+    fclose (stream);                                /* This closes filenum too */
+  
+diff -crB scotch_5.1/src/libscotch/library_graph_map.c src/src/libscotch/library_graph_map.c
+*** scotch_5.1/src/libscotch/library_graph_map.c	2008-09-28 04:04:05.000000000 -0700
+--- src/src/libscotch/library_graph_map.c	2013-05-06 14:14:19.000000000 -0700
+***************
+*** 182,192 ****
+--- 182,200 ----
+  
+  int
+  SCOTCH_graphMapSave (
++ #ifdef NOFILEIO
++ Gnum *pnvert,
++ Gnum (**pmaptab)[2],
++ #endif /* NOFILEIO */
+  const SCOTCH_Graph * const    grafptr,            /*+ Graph to order  +*/
+  const SCOTCH_Mapping * const  mappptr,            /*+ Mapping to save +*/
+  FILE * const                  stream)             /*+ Output stream   +*/
+  {
++ #ifndef NOFILEIO
+    return (mapSave (&((LibMapping *) mappptr)->m, ((Graph *) grafptr)->vlbltax, stream));
++ #else /* NOFILEIO */
++   return (mapSave (pnvert, pmaptab, &((LibMapping *) mappptr)->m, ((Graph *) grafptr)->vlbltax, stream));
++ #endif /* NOFILEIO */
+  }
+  
+  /*+ This routine computes a mapping
+diff -crB scotch_5.1/src/libscotch/library_graph_map_f.c src/src/libscotch/library_graph_map_f.c
+*** scotch_5.1/src/libscotch/library_graph_map_f.c	2008-06-28 03:44:26.000000000 -0700
+--- src/src/libscotch/library_graph_map_f.c	2013-05-06 14:14:19.000000000 -0700
+***************
+*** 183,189 ****
+--- 183,193 ----
+      return;
+    }
+  
++ #ifndef NOFILEIO
+    o = SCOTCH_graphMapSave (grafptr, mapptr, stream);
++ #else /* NOFILEIO */
++   o = SCOTCH_graphMapSave (NULL, NULL, grafptr, mapptr, stream);
++ #endif /* NOFILEIO */
+  
+    fclose (stream);                                /* This closes filenum too */
+  
+diff -crB scotch_5.1/src/libscotch/library.h src/src/libscotch/library.h
+*** scotch_5.1/src/libscotch/library.h	2009-05-09 16:08:03.000000000 -0700
+--- src/src/libscotch/library.h	2013-05-06 14:14:19.000000000 -0700
+***************
+*** 1,3 ****
+--- 1,5 ----
++ #ifndef _SCOTCH_H_
++ #define _SCOTCH_H_
+  /* Copyright 2004,2007-2009 ENSEIRB, INRIA & CNRS
+  **
+  ** This file is part of the Scotch software package for static mapping,
+***************
+*** 134,140 ****
+--- 136,146 ----
+  
+  int                         SCOTCH_archInit     (SCOTCH_Arch * const);
+  void                        SCOTCH_archExit     (SCOTCH_Arch * const);
++ #ifndef NOFILEIO
+  int                         SCOTCH_archLoad     (SCOTCH_Arch * const, FILE * const);
++ #else /* NOFILEIO */
++ int                         SCOTCH_archLoad     (SCOTCH_Arch * const, FILE * const, const char *, const SCOTCH_Num, const SCOTCH_Num *);
++ #endif /* NOFILEIO */
+  int                         SCOTCH_archSave     (const SCOTCH_Arch * const, FILE * const);
+  int                         SCOTCH_archBuild    (SCOTCH_Arch * const, const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Strat * const);
+  int                         SCOTCH_archCmplt    (SCOTCH_Arch * const, const SCOTCH_Num);
+***************
+*** 191,197 ****
+--- 197,207 ----
+  int                         SCOTCH_graphInit    (SCOTCH_Graph * const);
+  void                        SCOTCH_graphExit    (SCOTCH_Graph * const);
+  void                        SCOTCH_graphFree    (SCOTCH_Graph * const);
++ #ifndef NOFILEIO
+  int                         SCOTCH_graphLoad    (SCOTCH_Graph * const, FILE * const, const SCOTCH_Num, const SCOTCH_Num);
++ #else /* NOFILEIO */
++ int                         SCOTCH_graphLoad    (SCOTCH_Graph * const, FILE * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num *, const SCOTCH_Num *, const SCOTCH_Num *, const SCOTCH_Num *, const SCOTCH_Num *);
++ #endif /* NOFILEIO */
+  int                         SCOTCH_graphSave    (const SCOTCH_Graph * const, FILE * const);
+  int                         SCOTCH_graphBuild   (SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Num * const);
+  SCOTCH_Num                  SCOTCH_graphBase    (SCOTCH_Graph * const, const SCOTCH_Num baseval);
+***************
+*** 210,216 ****
+--- 220,230 ----
+  int                         SCOTCH_graphMapInit (const SCOTCH_Graph * const, SCOTCH_Mapping * const, const SCOTCH_Arch * const, SCOTCH_Num * const);
+  void                        SCOTCH_graphMapExit (const SCOTCH_Graph * const, SCOTCH_Mapping * const);
+  int                         SCOTCH_graphMapLoad (const SCOTCH_Graph * const, const SCOTCH_Mapping * const, FILE * const);
++ #ifndef NOFILEIO
+  int                         SCOTCH_graphMapSave (const SCOTCH_Graph * const, const SCOTCH_Mapping * const, FILE * const);
++ #else /* NOFILEIO */
++ int                         SCOTCH_graphMapSave (SCOTCH_Num *, SCOTCH_Num (**)[2], const SCOTCH_Graph * const, const SCOTCH_Mapping * const, FILE * const);
++ #endif /* NOFILEIO */
+  int                         SCOTCH_graphMapView (const SCOTCH_Graph * const, const SCOTCH_Mapping * const, FILE * const);
+  int                         SCOTCH_graphMapCompute (const SCOTCH_Graph * const, SCOTCH_Mapping * const, const SCOTCH_Strat * const);
+  int                         SCOTCH_graphMap     (const SCOTCH_Graph * const, const SCOTCH_Arch * const, const SCOTCH_Strat * const, SCOTCH_Num * const);
+***************
+*** 278,280 ****
+--- 292,296 ----
+  #ifdef __cplusplus
+  }
+  #endif /* __cplusplus */
++ 
++ #endif //#ifndef _SCOTCH_H_
+diff -crB scotch_5.1/src/libscotch/Makefile src/src/libscotch/Makefile
+*** scotch_5.1/src/libscotch/Makefile	2009-05-09 16:08:04.000000000 -0700
+--- src/src/libscotch/Makefile	2013-05-06 14:14:19.000000000 -0700
+***************
+*** 49,55 ****
+  ##  Project rules.
+  ##
+  
+! .PHONY				:	ptscotch	scotch	ptinstall	install	clean	realclean
+  
+  scotch				:	clean
+  					$(MAKE) CC="$(CCS)" CCD="$(CCS)" SCOTCHLIB=scotch	\
+--- 49,55 ----
+  ##  Project rules.
+  ##
+  
+! .PHONY				:	ptscotch	scotch	nfioscotch	mexscotch	ptinstall	install	nfioinstall	mexinstall	clean	realclean
+  
+  scotch				:	clean
+  					$(MAKE) CC="$(CCS)" CCD="$(CCS)" SCOTCHLIB=scotch	\
+***************
+*** 68,73 ****
+--- 68,93 ----
+  					libptscotcherr$(LIB)								\
+  					libptscotcherrexit$(LIB)
+  
++ nfioscotch				:	clean
++ 					$(MAKE) CFLAGS="$(CFLAGS)" CC="$(CCS)" CCD="$(CCS)" LDFLAGS="$(LDFLAGS)" SCOTCHLIB=scotch	\
++ 					dummysizes$(EXE)
++ 					$(MAKE) CFLAGS="$(CFLAGS) -DNOFILEIO" CC="$(CCS)" CCD="$(CCS)" SCOTCHLIB=nfioscotch	\
++ 					scotch.h						\
++ 					scotchf.h						\
++ 					libnfioscotch$(LIB)						\
++ 					libnfioscotcherr$(LIB)					\
++ 					libnfioscotcherrexit$(LIB)
++ 
++ mexscotch			:	clean
++ 					$(MAKE) CFLAGS="$(CFLAGS)" CC="$(CCS)" CCD="$(CCS)" LDFLAGS="$(LDFLAGS)" SCOTCHLIB=scotch	\
++ 					dummysizes$(EXE)
++ 					$(MAKE) CFLAGS="$(CFLAGS) -DNOFILEIO -DMATLAB -I${MATLAB_DIR}/extern/include" CC="$(CCS)" CCD="$(CCS)" LDFLAGS="$(LDFLAGS) -Wl,-rpath-link,${MATLAB_DIR}/bin/glnxa64 -L${MATLAB_DIR}/bin/glnxa64 -lmex -lmat" SCOTCHLIB=mexscotch	\
++ 					scotch.h						\
++ 					scotchf.h						\
++ 					libmexscotch$(LIB)						\
++ 					libmexscotcherr$(LIB)					\
++ 					libmexscotcherrexit$(LIB)
++ 
+  install				:
+  					-$(CP) scotch.h scotchf.h $(includedir)
+  					-$(CP) libscotch$(LIB) libscotcherr*$(LIB) $(libdir)
+***************
+*** 77,82 ****
+--- 97,110 ----
+  					-$(CP) scotchf.h $(includedir)/ptscotchf.h
+  					-$(CP) libptscotch*$(LIB) $(libdir)
+  
++ nfioinstall				:
++ 					-$(CP) scotch.h scotchf.h $(includedir)
++ 					-$(CP) libnfioscotch$(LIB) libnfioscotcherr*$(LIB) $(libdir)
++ 
++ mexinstall				:
++ 					-$(CP) scotch.h scotchf.h $(includedir)
++ 					-$(CP) libmexscotch$(LIB) libmexscotcherr*$(LIB) $(libdir)
++ 
+  clean				:
+  					-$(RM) *~ *$(OBJ) lib*$(LIB) common2* parser_yy.c parser_ly.h parser_ll.c *scotch.h *scotchf.h y.output dummysizes$(EXE)
+  
+***************
+*** 2452,2457 ****
+--- 2480,2807 ----
+  					$(AR) $(ARFLAGS) lib$(SCOTCHLIB)$(LIB) $(?)
+  					-$(RANLIB) lib$(SCOTCHLIB)$(LIB)
+  
++ libnfioscotch$(LIB)			:	arch$(OBJ)				\
++ 					arch_build$(OBJ)			\
++ 					arch_cmplt$(OBJ)			\
++ 					arch_cmpltw$(OBJ)			\
++ 					arch_deco$(OBJ)				\
++ 					arch_hcub$(OBJ)				\
++ 					arch_mesh$(OBJ)				\
++ 					arch_tleaf$(OBJ)			\
++ 					arch_torus$(OBJ)			\
++ 					arch_vcmplt$(OBJ)			\
++ 					arch_vhcub$(OBJ)			\
++ 					bgraph$(OBJ)				\
++ 					bgraph_bipart_bd$(OBJ)			\
++ 					bgraph_bipart_df$(OBJ)			\
++ 					bgraph_bipart_ex$(OBJ)			\
++ 					bgraph_bipart_fm$(OBJ)			\
++ 					bgraph_bipart_gg$(OBJ)			\
++ 					bgraph_bipart_gp$(OBJ)			\
++ 					bgraph_bipart_ml$(OBJ)			\
++ 					bgraph_bipart_st$(OBJ)			\
++ 					bgraph_bipart_zr$(OBJ)			\
++ 					bgraph_check$(OBJ)			\
++ 					bgraph_store$(OBJ)			\
++ 					common$(OBJ)				\
++ 					common_file$(OBJ)			\
++ 					common_file_compress$(OBJ)		\
++ 					common_file_uncompress$(OBJ)		\
++ 					common_integer$(OBJ)			\
++ 					common_memory$(OBJ)			\
++ 					common_stub$(OBJ)			\
++ 					gain$(OBJ)				\
++ 					geom$(OBJ)				\
++ 					graph$(OBJ)				\
++ 					graph_base$(OBJ)			\
++ 					graph_check$(OBJ)			\
++ 					graph_coarsen$(OBJ)			\
++ 					graph_induce$(OBJ)			\
++ 					graph_io$(OBJ)				\
++ 					graph_io_chac$(OBJ)			\
++ 					graph_io_habo$(OBJ)			\
++ 					graph_io_mmkt$(OBJ)			\
++ 					graph_io_scot$(OBJ)			\
++ 					graph_list$(OBJ)			\
++ 					hall_order_hd$(OBJ)			\
++ 					hall_order_hf$(OBJ)			\
++ 					hall_order_hx$(OBJ)			\
++ 					hgraph$(OBJ)				\
++ 					hgraph_check$(OBJ)			\
++ 					hgraph_induce$(OBJ)			\
++ 					hgraph_order_bl$(OBJ)			\
++ 					hgraph_order_cp$(OBJ)			\
++ 					hgraph_order_gp$(OBJ)			\
++ 					hgraph_order_hd$(OBJ)			\
++ 					hgraph_order_hf$(OBJ)			\
++ 					hgraph_order_hx$(OBJ)			\
++ 					hgraph_order_nd$(OBJ)			\
++ 					hgraph_order_si$(OBJ)			\
++ 					hgraph_order_st$(OBJ)			\
++ 					hmesh$(OBJ)				\
++ 					hmesh_check$(OBJ)			\
++ 					hmesh_hgraph$(OBJ)			\
++ 					hmesh_induce$(OBJ)			\
++ 					hmesh_mesh$(OBJ)			\
++ 					hmesh_order_bl$(OBJ)			\
++ 					hmesh_order_cp$(OBJ)			\
++ 					hmesh_order_gr$(OBJ)			\
++ 					hmesh_order_gp$(OBJ)			\
++ 					hmesh_order_hd$(OBJ)			\
++ 					hmesh_order_hf$(OBJ)			\
++ 					hmesh_order_hx$(OBJ)			\
++ 					hmesh_order_nd$(OBJ)			\
++ 					hmesh_order_si$(OBJ)			\
++ 					hmesh_order_st$(OBJ)			\
++ 					kgraph$(OBJ)				\
++ 					kgraph_map_rb$(OBJ)			\
++ 					kgraph_map_rb_map$(OBJ)			\
++ 					kgraph_map_rb_part$(OBJ)		\
++ 					kgraph_map_st$(OBJ)			\
++ 					library_arch$(OBJ)			\
++ 					library_arch_f$(OBJ)			\
++ 					library_arch_build$(OBJ)		\
++ 					library_arch_build_f$(OBJ)		\
++ 					library_arch_cmpltw$(OBJ)		\
++ 					library_arch_cmpltw_f$(OBJ)		\
++ 					library_geom$(OBJ)			\
++ 					library_geom_f$(OBJ)			\
++ 					library_graph$(OBJ)			\
++ 					library_graph_f$(OBJ)			\
++ 					library_graph_base$(OBJ)		\
++ 					library_graph_base_f$(OBJ)		\
++ 					library_graph_check$(OBJ)		\
++ 					library_graph_check_f$(OBJ)		\
++ 					library_graph_io_chac$(OBJ)		\
++ 					library_graph_io_chac_f$(OBJ)		\
++ 					library_graph_io_habo$(OBJ)		\
++ 					library_graph_io_habo_f$(OBJ)		\
++ 					library_graph_io_mmkt$(OBJ)		\
++ 					library_graph_io_mmkt_f$(OBJ)		\
++ 					library_graph_io_scot$(OBJ)		\
++ 					library_graph_io_scot_f$(OBJ)		\
++ 					library_graph_map$(OBJ)			\
++ 					library_graph_map_f$(OBJ)		\
++ 					library_graph_map_view$(OBJ)		\
++ 					library_graph_map_view_f$(OBJ)		\
++ 					library_graph_order$(OBJ)		\
++ 					library_graph_order_f$(OBJ)		\
++ 					library_mesh$(OBJ)			\
++ 					library_mesh_f$(OBJ)			\
++ 					library_mesh_graph$(OBJ)		\
++ 					library_mesh_graph_f$(OBJ)		\
++ 					library_mesh_io_habo$(OBJ)		\
++ 					library_mesh_io_habo_f$(OBJ)		\
++ 					library_mesh_io_scot$(OBJ)		\
++ 					library_mesh_io_scot_f$(OBJ)		\
++ 					library_mesh_order$(OBJ)		\
++ 					library_mesh_order_f$(OBJ)		\
++ 					library_parser$(OBJ)			\
++ 					library_parser_f$(OBJ)			\
++ 					library_random$(OBJ)			\
++ 					library_random_f$(OBJ)			\
++ 					mapping$(OBJ)				\
++ 					mapping_io$(OBJ)			\
++ 					mesh$(OBJ)				\
++ 					mesh_check$(OBJ)			\
++ 					mesh_coarsen$(OBJ)			\
++ 					mesh_graph$(OBJ)			\
++ 					mesh_induce_sepa$(OBJ)			\
++ 					mesh_io$(OBJ)				\
++ 					mesh_io_habo$(OBJ)			\
++ 					mesh_io_scot$(OBJ)			\
++ 					order$(OBJ)				\
++ 					order_check$(OBJ)			\
++ 					order_io$(OBJ)				\
++ 					parser$(OBJ)				\
++ 					parser_ll$(OBJ)				\
++ 					parser_yy$(OBJ)				\
++ 					vgraph$(OBJ)				\
++ 					vgraph_check$(OBJ)			\
++ 					vgraph_separate_bd$(OBJ)		\
++ 					vgraph_separate_es$(OBJ)		\
++ 					vgraph_separate_fm$(OBJ)		\
++ 					vgraph_separate_gg$(OBJ)		\
++ 					vgraph_separate_gp$(OBJ)		\
++ 					vgraph_separate_ml$(OBJ)		\
++ 					vgraph_separate_st$(OBJ)		\
++ 					vgraph_separate_th$(OBJ)		\
++ 					vgraph_separate_vw$(OBJ)		\
++ 					vgraph_separate_zr$(OBJ)		\
++ 					vgraph_store$(OBJ)			\
++ 					vmesh$(OBJ)				\
++ 					vmesh_check$(OBJ)			\
++ 					vmesh_separate_fm$(OBJ)			\
++ 					vmesh_separate_gg$(OBJ)			\
++ 					vmesh_separate_gr$(OBJ)			\
++ 					vmesh_separate_ml$(OBJ)			\
++ 					vmesh_separate_zr$(OBJ)			\
++ 					vmesh_separate_st$(OBJ)			\
++ 					vmesh_store$(OBJ)
++ 					$(AR) $(ARFLAGS) lib$(SCOTCHLIB)$(LIB) $(?)
++ 					-$(RANLIB) lib$(SCOTCHLIB)$(LIB)
++ 
++ libmexscotch$(LIB)			:	arch$(OBJ)				\
++ 					arch_build$(OBJ)			\
++ 					arch_cmplt$(OBJ)			\
++ 					arch_cmpltw$(OBJ)			\
++ 					arch_deco$(OBJ)				\
++ 					arch_hcub$(OBJ)				\
++ 					arch_mesh$(OBJ)				\
++ 					arch_tleaf$(OBJ)			\
++ 					arch_torus$(OBJ)			\
++ 					arch_vcmplt$(OBJ)			\
++ 					arch_vhcub$(OBJ)			\
++ 					bgraph$(OBJ)				\
++ 					bgraph_bipart_bd$(OBJ)			\
++ 					bgraph_bipart_df$(OBJ)			\
++ 					bgraph_bipart_ex$(OBJ)			\
++ 					bgraph_bipart_fm$(OBJ)			\
++ 					bgraph_bipart_gg$(OBJ)			\
++ 					bgraph_bipart_gp$(OBJ)			\
++ 					bgraph_bipart_ml$(OBJ)			\
++ 					bgraph_bipart_st$(OBJ)			\
++ 					bgraph_bipart_zr$(OBJ)			\
++ 					bgraph_check$(OBJ)			\
++ 					bgraph_store$(OBJ)			\
++ 					common$(OBJ)				\
++ 					common_file$(OBJ)			\
++ 					common_file_compress$(OBJ)		\
++ 					common_file_uncompress$(OBJ)		\
++ 					common_integer$(OBJ)			\
++ 					common_memory$(OBJ)			\
++ 					common_stub$(OBJ)			\
++ 					gain$(OBJ)				\
++ 					geom$(OBJ)				\
++ 					graph$(OBJ)				\
++ 					graph_base$(OBJ)			\
++ 					graph_check$(OBJ)			\
++ 					graph_coarsen$(OBJ)			\
++ 					graph_induce$(OBJ)			\
++ 					graph_io$(OBJ)				\
++ 					graph_io_chac$(OBJ)			\
++ 					graph_io_habo$(OBJ)			\
++ 					graph_io_mmkt$(OBJ)			\
++ 					graph_io_scot$(OBJ)			\
++ 					graph_list$(OBJ)			\
++ 					hall_order_hd$(OBJ)			\
++ 					hall_order_hf$(OBJ)			\
++ 					hall_order_hx$(OBJ)			\
++ 					hgraph$(OBJ)				\
++ 					hgraph_check$(OBJ)			\
++ 					hgraph_induce$(OBJ)			\
++ 					hgraph_order_bl$(OBJ)			\
++ 					hgraph_order_cp$(OBJ)			\
++ 					hgraph_order_gp$(OBJ)			\
++ 					hgraph_order_hd$(OBJ)			\
++ 					hgraph_order_hf$(OBJ)			\
++ 					hgraph_order_hx$(OBJ)			\
++ 					hgraph_order_nd$(OBJ)			\
++ 					hgraph_order_si$(OBJ)			\
++ 					hgraph_order_st$(OBJ)			\
++ 					hmesh$(OBJ)				\
++ 					hmesh_check$(OBJ)			\
++ 					hmesh_hgraph$(OBJ)			\
++ 					hmesh_induce$(OBJ)			\
++ 					hmesh_mesh$(OBJ)			\
++ 					hmesh_order_bl$(OBJ)			\
++ 					hmesh_order_cp$(OBJ)			\
++ 					hmesh_order_gr$(OBJ)			\
++ 					hmesh_order_gp$(OBJ)			\
++ 					hmesh_order_hd$(OBJ)			\
++ 					hmesh_order_hf$(OBJ)			\
++ 					hmesh_order_hx$(OBJ)			\
++ 					hmesh_order_nd$(OBJ)			\
++ 					hmesh_order_si$(OBJ)			\
++ 					hmesh_order_st$(OBJ)			\
++ 					kgraph$(OBJ)				\
++ 					kgraph_map_rb$(OBJ)			\
++ 					kgraph_map_rb_map$(OBJ)			\
++ 					kgraph_map_rb_part$(OBJ)		\
++ 					kgraph_map_st$(OBJ)			\
++ 					library_arch$(OBJ)			\
++ 					library_arch_f$(OBJ)			\
++ 					library_arch_build$(OBJ)		\
++ 					library_arch_build_f$(OBJ)		\
++ 					library_arch_cmpltw$(OBJ)		\
++ 					library_arch_cmpltw_f$(OBJ)		\
++ 					library_geom$(OBJ)			\
++ 					library_geom_f$(OBJ)			\
++ 					library_graph$(OBJ)			\
++ 					library_graph_f$(OBJ)			\
++ 					library_graph_base$(OBJ)		\
++ 					library_graph_base_f$(OBJ)		\
++ 					library_graph_check$(OBJ)		\
++ 					library_graph_check_f$(OBJ)		\
++ 					library_graph_io_chac$(OBJ)		\
++ 					library_graph_io_chac_f$(OBJ)		\
++ 					library_graph_io_habo$(OBJ)		\
++ 					library_graph_io_habo_f$(OBJ)		\
++ 					library_graph_io_mmkt$(OBJ)		\
++ 					library_graph_io_mmkt_f$(OBJ)		\
++ 					library_graph_io_scot$(OBJ)		\
++ 					library_graph_io_scot_f$(OBJ)		\
++ 					library_graph_map$(OBJ)			\
++ 					library_graph_map_f$(OBJ)		\
++ 					library_graph_map_view$(OBJ)		\
++ 					library_graph_map_view_f$(OBJ)		\
++ 					library_graph_order$(OBJ)		\
++ 					library_graph_order_f$(OBJ)		\
++ 					library_mesh$(OBJ)			\
++ 					library_mesh_f$(OBJ)			\
++ 					library_mesh_graph$(OBJ)		\
++ 					library_mesh_graph_f$(OBJ)		\
++ 					library_mesh_io_habo$(OBJ)		\
++ 					library_mesh_io_habo_f$(OBJ)		\
++ 					library_mesh_io_scot$(OBJ)		\
++ 					library_mesh_io_scot_f$(OBJ)		\
++ 					library_mesh_order$(OBJ)		\
++ 					library_mesh_order_f$(OBJ)		\
++ 					library_parser$(OBJ)			\
++ 					library_parser_f$(OBJ)			\
++ 					library_random$(OBJ)			\
++ 					library_random_f$(OBJ)			\
++ 					mapping$(OBJ)				\
++ 					mapping_io$(OBJ)			\
++ 					mesh$(OBJ)				\
++ 					mesh_check$(OBJ)			\
++ 					mesh_coarsen$(OBJ)			\
++ 					mesh_graph$(OBJ)			\
++ 					mesh_induce_sepa$(OBJ)			\
++ 					mesh_io$(OBJ)				\
++ 					mesh_io_habo$(OBJ)			\
++ 					mesh_io_scot$(OBJ)			\
++ 					order$(OBJ)				\
++ 					order_check$(OBJ)			\
++ 					order_io$(OBJ)				\
++ 					parser$(OBJ)				\
++ 					parser_ll$(OBJ)				\
++ 					parser_yy$(OBJ)				\
++ 					vgraph$(OBJ)				\
++ 					vgraph_check$(OBJ)			\
++ 					vgraph_separate_bd$(OBJ)		\
++ 					vgraph_separate_es$(OBJ)		\
++ 					vgraph_separate_fm$(OBJ)		\
++ 					vgraph_separate_gg$(OBJ)		\
++ 					vgraph_separate_gp$(OBJ)		\
++ 					vgraph_separate_ml$(OBJ)		\
++ 					vgraph_separate_st$(OBJ)		\
++ 					vgraph_separate_th$(OBJ)		\
++ 					vgraph_separate_vw$(OBJ)		\
++ 					vgraph_separate_zr$(OBJ)		\
++ 					vgraph_store$(OBJ)			\
++ 					vmesh$(OBJ)				\
++ 					vmesh_check$(OBJ)			\
++ 					vmesh_separate_fm$(OBJ)			\
++ 					vmesh_separate_gg$(OBJ)			\
++ 					vmesh_separate_gr$(OBJ)			\
++ 					vmesh_separate_ml$(OBJ)			\
++ 					vmesh_separate_zr$(OBJ)			\
++ 					vmesh_separate_st$(OBJ)			\
++ 					vmesh_store$(OBJ)
++ 					$(AR) $(ARFLAGS) lib$(SCOTCHLIB)$(LIB) $(?)
++ 					-$(RANLIB) lib$(SCOTCHLIB)$(LIB)
++ 
+  libptscotcherr$(LIB)		:	library_error$(OBJ)
+  					$(AR) $(ARFLAGS) $(@) $(?)
+  					-$(RANLIB) $(@)
+***************
+*** 2467,2469 ****
+--- 2817,2835 ----
+  libscotcherrexit$(LIB)		:	library_error_exit$(OBJ)
+  					$(AR) $(ARFLAGS) $(@) $(?)
+  					-$(RANLIB) $(@)
++ 
++ libnfioscotcherr$(LIB)		:	library_error$(OBJ)
++ 					$(AR) $(ARFLAGS) $(@) $(?)
++ 					-$(RANLIB) $(@)
++ 
++ libnfioscotcherrexit$(LIB)		:	library_error_exit$(OBJ)
++ 					$(AR) $(ARFLAGS) $(@) $(?)
++ 					-$(RANLIB) $(@)
++ 
++ libmexscotcherr$(LIB)		:	library_error$(OBJ)
++ 					$(AR) $(ARFLAGS) $(@) $(?)
++ 					-$(RANLIB) $(@)
++ 
++ libmexscotcherrexit$(LIB)		:	library_error_exit$(OBJ)
++ 					$(AR) $(ARFLAGS) $(@) $(?)
++ 					-$(RANLIB) $(@)
+diff -crB scotch_5.1/src/libscotch/mapping.h src/src/libscotch/mapping.h
+*** scotch_5.1/src/libscotch/mapping.h	2008-10-27 08:27:47.000000000 -0700
+--- src/src/libscotch/mapping.h	2013-05-06 14:14:20.000000000 -0700
+***************
+*** 106,112 ****
+--- 106,116 ----
+  int                         mapInit2            (Mapping * restrict const, const Gnum, const Gnum, const Arch * restrict const, const ArchDom * restrict const);
+  void                        mapExit             (Mapping * const);
+  int                         mapLoad             (Mapping * restrict const, const Gnum * restrict const, FILE * restrict const);
++ #ifndef NOFILEIO
+  int                         mapSave             (const Mapping * restrict const, const Gnum * restrict const, FILE * restrict const);
++ #else /* NOFILEIO */
++ int                         mapSave             (Gnum *, Gnum (**)[2], const Mapping * restrict const, const Gnum * restrict const, FILE * restrict const);
++ #endif /* NOFILEIO */
+  int                         mapView             (const Mapping * restrict const, const Graph * restrict const, FILE * const);
+  
+  #undef static
+diff -crB scotch_5.1/src/libscotch/mapping_io.c src/src/libscotch/mapping_io.c
+*** scotch_5.1/src/libscotch/mapping_io.c	2008-05-22 06:44:43.000000000 -0700
+--- src/src/libscotch/mapping_io.c	2013-05-06 14:14:20.000000000 -0700
+***************
+*** 199,204 ****
+--- 199,208 ----
+  
+  int
+  mapSave (
++ #ifdef NOFILEIO
++ Gnum *pnvert,
++ Gnum (**pmaptab)[2],
++ #endif /* NOFILEIO */
+  const Mapping * restrict const  mappptr,
+  const Gnum * restrict const     vlbltab,
+  FILE * restrict const           stream)
+***************
+*** 206,226 ****
+    const Gnum * restrict vlbltax;
+    Gnum                  vertnum;
+  
+    vlbltax = (vlbltab != NULL) ? (vlbltab - mappptr->baseval) : NULL;
+  
+    if (fprintf (stream, "%ld\n", (long) mappptr->vertnbr) == EOF) {
+      errorPrint ("mapSave: bad output (1)");
+      return     (1);
+    }
+  
+    for (vertnum = mappptr->baseval; vertnum < (mappptr->vertnbr + mappptr->baseval); vertnum ++) {
+      if (fprintf (stream, "%ld\t%ld\n",
+!                  (long) ((vlbltax != NULL) ? vlbltax[vertnum] : vertnum),
+                   (long) archDomNum (&mappptr->archdat, &mappptr->domntab[mappptr->parttax[vertnum]])) == EOF) {
+        errorPrint ("mapSave: bad output (2)");
+        return     (1);
+      }
+    }
+  
+    return (0);
+  }
+--- 210,258 ----
+    const Gnum * restrict vlbltax;
+    Gnum                  vertnum;
+  
++ #ifdef NOFILEIO
++ //  printf("mapSave - stream=%p\n",stream);
++ #endif /* NOFILEIO */
+    vlbltax = (vlbltab != NULL) ? (vlbltab - mappptr->baseval) : NULL;
+  
++ #ifndef NOFILEIO
+    if (fprintf (stream, "%ld\n", (long) mappptr->vertnbr) == EOF) {
+      errorPrint ("mapSave: bad output (1)");
+      return     (1);
+    }
++ #else /* NOFILEIO */
++   if (pnvert) {
++     *pnvert=mappptr->vertnbr;
++ //    printf("mapSave - nvert=%d\n",*pnvert);
++   }
++   if (pmaptab) {
++     *pmaptab = (Gnum (*)[2]) malloc(mappptr->vertnbr*2*sizeof(Gnum));
++ //    printf("mapSave - maptab=%p\n",*pmaptab);
++   }
++ #endif /* NOFILEIO */
+  
++ #ifndef NOFILEIO
+    for (vertnum = mappptr->baseval; vertnum < (mappptr->vertnbr + mappptr->baseval); vertnum ++) {
+      if (fprintf (stream, "%ld\t%ld\n",
+! /*  not sure why, but need to offset vlbltax in other direction (jes, 12/11/09)  */
+! //                 (long) ((vlbltax != NULL) ? vlbltax[vertnum] : vertnum),
+!                  (long) ((vlbltax != NULL) ? vlbltax[vertnum+mappptr->baseval] : vertnum),
+                   (long) archDomNum (&mappptr->archdat, &mappptr->domntab[mappptr->parttax[vertnum]])) == EOF) {
+        errorPrint ("mapSave: bad output (2)");
+        return     (1);
+      }
+    }
++ #else /* NOFILEIO */
++   if (pmaptab && *pmaptab)
++     for (vertnum = mappptr->baseval; vertnum < (mappptr->vertnbr + mappptr->baseval); vertnum ++) {
++ /*  not sure why, but need to offset vlbltax in other direction (jes, 12/11/09)  */
++ //      (*pmaptab)[vertnum-mappptr->baseval][0]=((vlbltax != NULL) ? vlbltax[vertnum] : vertnum);
++       (*pmaptab)[vertnum-mappptr->baseval][0]=((vlbltax != NULL) ? vlbltax[vertnum+mappptr->baseval] : vertnum);
++       (*pmaptab)[vertnum-mappptr->baseval][1]=archDomNum (&mappptr->archdat, &mappptr->domntab[mappptr->parttax[vertnum]]);
++ //    printf("mapSave - vertnum=%d; vlbltax=%d,archDomNum=%d\n",
++ //           vertnum,((vlbltax != NULL) ? vlbltax[vertnum+mappptr->baseval] : -1),archDomNum (&mappptr->archdat, &mappptr->domntab[mappptr->parttax[vertnum]]));
++     }
++ #endif /* NOFILEIO */
+  
+    return (0);
+  }
+diff -crB scotch_5.1/src/libscotch/mesh_io_scot.c src/src/libscotch/mesh_io_scot.c
+*** scotch_5.1/src/libscotch/mesh_io_scot.c	2008-05-22 06:44:43.000000000 -0700
+--- src/src/libscotch/mesh_io_scot.c	2013-05-06 14:14:20.000000000 -0700
+***************
+*** 85,91 ****
+--- 85,95 ----
+    int                           o;
+  
+    if (filesrcptr != NULL) {
++ #ifndef NOFILEIO
+      if (graphLoad (meshptr, filesrcptr, -1, 0) != 0)
++ #else /* NOFILEIO */
++     if (graphLoad (meshptr, filesrcptr, -1, 0, 0, 0, NULL, NULL, NULL, NULL, NULL) != 0)
++ #endif /* NOFILEIO */
+        return (1);
+    }
+  
+diff -crB scotch_5.1/src/libscotch/module.h src/src/libscotch/module.h
+*** scotch_5.1/src/libscotch/module.h	2009-04-26 23:07:14.000000000 -0700
+--- src/src/libscotch/module.h	2013-05-06 14:14:20.000000000 -0700
+***************
+*** 1,3 ****
+--- 1,5 ----
++ #ifndef _SCOTCH_MODULE_H_
++ #define _SCOTCH_MODULE_H_
+  /* Copyright 2004,2007-2009 ENSEIRB, INRIA & CNRS
+  **
+  ** This file is part of the Scotch software package for static mapping,
+***************
+*** 55,60 ****
+--- 57,65 ----
+  
+  #define MODULE_H
+  
++ /*Don't forget stdint.h:*/
++ #include "stdint.h"
++ 
+  /*
+  ** Collective communication handling.
+  */
+***************
+*** 156,161 ****
+--- 161,167 ----
+  #define intSave                     _SCOTCHintSave
+  #define intAscn                     _SCOTCHintAscn
+  #define intPerm                     _SCOTCHintPerm
++ #define intRandResetStatic          _SCOTCHintRandResetStatic
+  #define intRandReset                _SCOTCHintRandReset
+  #define intRandInit                 _SCOTCHintRandInit
+  /* #define intRandVal               _SCOTCHintRandVal Already a macro */
+***************
+*** 681,683 ****
+--- 687,691 ----
+  #define vmeshStoreSave              _SCOTCHvmeshStoreSave
+  #define vmeshStoreUpdt              _SCOTCHvmeshStoreUpdt
+  #endif /* SCOTCH_RENAME */
++ 
++ #endif //#ifndef _SCOTCH_MODULE_H_
+diff -crB scotch_5.1/src/libscotch/parser_ll.l src/src/libscotch/parser_ll.l
+*** scotch_5.1/src/libscotch/parser_ll.l	2008-05-22 06:44:43.000000000 -0700
+--- src/src/libscotch/parser_ll.l	2013-05-06 14:14:21.000000000 -0700
+***************
+*** 192,197 ****
+--- 192,213 ----
+  stratParserInit (
+  const char * const          string)               /*+ Strategy string to parse +*/
+  {
++ /*  reset static variables from previous runs (jes, 4/29/10)  */
++   yy_hold_char = (char) 0;
++   yy_n_chars=0;          /* number of characters read into yy_ch_buf */
++   yy_c_buf_p = (char *) 0;
++   yy_init = 1;         /* whether we need to initialize */
++   yy_start = 0;        /* start state number */
++   yy_did_buffer_switch_on_eof=0;
++   yy_last_accepting_state=0;
++   yy_last_accepting_cpos = (char *) 0;
++   stratparserstringptr = (char *) 0; /* Pointer to the string to parse */
++ #if YY_STACK_USED
++   yy_start_stack_ptr = 0;
++   yy_start_stack_depth = 0;
++   yy_start_stack = 0;
++ #endif
++ 
+  #ifdef FLEX_SCANNER
+    yyrestart (yyin);                               /* (Re-)initialize the parser */
+  #endif /* FLEX_SCANNER */
+diff -crB scotch_5.1/src/libscotch/parser_yy.y src/src/libscotch/parser_yy.y
+*** scotch_5.1/src/libscotch/parser_yy.y	2008-10-22 15:12:48.000000000 -0700
+--- src/src/libscotch/parser_yy.y	2013-05-06 14:14:21.000000000 -0700
+***************
+*** 774,779 ****
+--- 774,780 ----
+    stratParserInit (string);                       /* Initialize the lexical parser           */
+    parserstrattab  = strattab;                     /* Point to the parsing tables             */
+    parserstratcurr = NULL;                         /* Clear up the temporary strategy pointer */
++   parserparamcurr = NULL;                         /* reset the last static (jes, 4/29/10)    */
+  
+    if (stratParserParse2 () != 0) {                /* Parse the strategy string */
+      if (parserstratcurr != NULL)
+diff -crB scotch_5.1/src/libscotch/vgraph_separate_vw.c src/src/libscotch/vgraph_separate_vw.c
+*** scotch_5.1/src/libscotch/vgraph_separate_vw.c	2008-05-22 06:44:43.000000000 -0700
+--- src/src/libscotch/vgraph_separate_vw.c	2013-05-06 14:14:21.000000000 -0700
+***************
+*** 83,88 ****
+--- 83,89 ----
+    FILE * restrict     fileptr;
+    Gnum                vertnum;                    /* Vertex number */
+  
++   printf("vgraphSeparateVw begin -- vgraphseparatevwfilenum=%d\n",vgraphseparatevwfilenum);
+    sprintf (nametab, "vgraphseparatevw_output_%08d.map", vgraphseparatevwfilenum ++);
+    if ((fileptr = fopen (nametab, "w+")) == NULL) {
+      errorPrint ("vgraphSeparateVw: cannot open partition file");
+***************
+*** 102,106 ****
+--- 103,108 ----
+      }
+    }
+  
++   printf("vgraphSeparateVw end   -- vgraphseparatevwfilenum=%d\n",vgraphseparatevwfilenum);
+    return (0);
+  }
+diff -crB scotch_5.1/src/Makefile src/src/Makefile
+*** scotch_5.1/src/Makefile	2008-09-15 05:50:51.000000000 -0700
+--- src/src/Makefile	2013-05-06 14:14:21.000000000 -0700
+***************
+*** 97,102 ****
+--- 97,109 ----
+  					(cd scotch ;         $(MAKE) VERSION=\"$(VERSION)\" ptscotch && $(MAKE) ptinstall)
+  					(cd libscotchmetis ; $(MAKE)                        ptscotch && $(MAKE) ptinstall)
+  
++ nfioscotch			:	required
++ 					(cd libscotch ;      $(MAKE) VERSION=\"$(VERSION)\" nfioscotch && $(MAKE) nfioinstall)
++ 
++ mexscotch			:	required
++ 					(cd libscotch ;      $(MAKE) VERSION=\"$(VERSION)\" mexscotch && $(MAKE) mexinstall)
++ 					(cd scotch ;         $(MAKE) VERSION=\"$(VERSION)\" mexscotch && $(MAKE) mexinstall)
++ 
+  install				:	required	$(bindir)	$(includedir)	$(libdir)	$(mandir)/man1
+  					-$(CP) -f ../bin/[agm]*$(EXE) $(bindir)
+  					-$(CP) -f ../include/*scotch*.h $(includedir)
+Only in src/src: Makefile.inc
+diff -crB scotch_5.1/src/scotch/gmap.h src/src/scotch/gmap.h
+*** scotch_5.1/src/scotch/gmap.h	2008-06-18 11:05:17.000000000 -0700
+--- src/src/scotch/gmap.h	2013-05-06 14:14:22.000000000 -0700
+***************
+*** 1,3 ****
+--- 1,5 ----
++ #ifndef _SCOTCH_GMAP_H_
++ #define _SCOTCH_GMAP_H_
+  /* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS
+  **
+  ** This file is part of the Scotch software package for static mapping,
+***************
+*** 87,89 ****
+--- 89,93 ----
+  #define C_FLAGVERBSTR               0x0002        /* Verbose flags */
+  #define C_FLAGVERBTIM               0x0004
+  #define C_FLAGVERBMAP               0x0008
++ 
++ #endif //#ifndef _SCOTCH_GMAP_H_
+Only in src/src/scotch: gmap_mex.c
+Only in src/src/scotch: gmapx.c
+diff -crB scotch_5.1/src/scotch/Makefile src/src/scotch/Makefile
+*** scotch_5.1/src/scotch/Makefile	2009-04-27 02:19:43.000000000 -0700
+--- src/src/scotch/Makefile	2013-05-06 14:14:22.000000000 -0700
+***************
+*** 49,59 ****
+  %$(EXE)	:	%.c
+  		 		$(CC) $(CFLAGS) -I$(includedir) -I../libscotch -DSCOTCH_VERSION=\"$(VERSION)\" $(<) -o $(@) -L$(libdir) -l$(SCOTCHLIB) -l$(SCOTCHLIB)errexit $(LDFLAGS)
+  
+  ##
+  ##  Project rules.
+  ##
+  
+! .PHONY				:	ptscotch	scotch	ptinstall	install	clean	realclean
+  
+  scotch				:	clean
+  					$(MAKE) CC="$(CCS)" SCOTCHLIB=scotch	\
+--- 49,62 ----
+  %$(EXE)	:	%.c
+  		 		$(CC) $(CFLAGS) -I$(includedir) -I../libscotch -DSCOTCH_VERSION=\"$(VERSION)\" $(<) -o $(@) -L$(libdir) -l$(SCOTCHLIB) -l$(SCOTCHLIB)errexit $(LDFLAGS)
+  
++ %$(MEX)	:	%.c
++ 		 		$(CCM) $(MFLAGS) -I$(includedir) -I../libscotch -DSCOTCH_VERSION=\"$(VERSION)\" $(<) -o $(@) -L$(libdir) -l$(SCOTCHLIB) -l$(SCOTCHLIB)errexit $(LDFLAGS)
++ 
+  ##
+  ##  Project rules.
+  ##
+  
+! .PHONY				:	ptscotch	scotch	mexscotch	ptinstall	install	mexinstall	clean	realclean
+  
+  scotch				:	clean
+  					$(MAKE) CC="$(CCS)" SCOTCHLIB=scotch	\
+***************
+*** 94,99 ****
+--- 97,108 ----
+  					dgscat$(EXE)				\
+  					dgtst$(EXE)
+  
++ mexscotch			:	clean
++ 					$(MAKE) CFLAGS="$(CFLAGS) -DNOFILEIO -DMATLAB -I${MATLAB_DIR}/extern/include" CC="$(CCS)" CCD="$(CCS)" LDFLAGS="$(LDFLAGS) -Wl,-rpath-link,${MATLAB_DIR}/bin/glnxa64 -L${MATLAB_DIR}/bin/glnxa64 -lmex -lmat" SCOTCHLIB=mexscotch \
++                     gmapx$(OBJ)
++ 					$(MAKE) CFLAGS="$(CFLAGS) -DNOFILEIO -DMATLAB -I${MATLAB_DIR}/extern/include" CC="$(CCS)" LDFLAGS="$(LDFLAGS) -Wl,-rpath-link,${MATLAB_DIR}/bin/glnxa64 -L${MATLAB_DIR}/bin/glnxa64 -lmex -lmat gmapx$(OBJ)" SCOTCHLIB=mexscotch	\
++ 					gmap_mex$(MEX)
++ 
+  install				:
+  					-$(CP) acpl$(EXE) amk_ccc$(EXE) amk_fft2$(EXE) amk_grf$(EXE) amk_hy$(EXE) amk_m2$(EXE) amk_p2$(EXE) atst$(EXE) gbase$(EXE) gcv$(EXE) gmap$(EXE) gmk_hy$(EXE) gmk_m2$(EXE) gmk_m3$(EXE) gmk_msh$(EXE) gmk_ub2$(EXE) gmtst$(EXE) gord$(EXE) gotst$(EXE) gout$(EXE) *gtst$(EXE) gscat$(EXE) mcv$(EXE) mmk_m2$(EXE) mmk_m3$(EXE) mord$(EXE) mtst$(EXE) $(bindir)
+  					-$(RM) $(bindir)/gpart$(EXE)
+***************
+*** 104,111 ****
+--- 113,126 ----
+  					-$(RM) $(bindir)/dgpart$(EXE)
+  					-$(LN) $(bindir)/dgmap$(EXE) $(bindir)/dgpart$(EXE)
+  
++ mexinstall			:
++ 					-$(CP) gmap_mex$(MEX) $(bindir)
++ 					-$(RM) $(bindir)/gpart_mex$(MEX)
++ 					-$(LN) $(bindir)/gmap_mex$(MEX) $(bindir)/gpart_mex$(MEX)
++ 
+  clean				:
+  					-$(RM) *~ *$(OBJ) acpl$(EXE) amk_ccc$(EXE) amk_fft2$(EXE) amk_grf$(EXE) amk_hy$(EXE) amk_m2$(EXE) amk_p2$(EXE) atst$(EXE) gbase$(EXE) gcv$(EXE) *gmap$(EXE) gmk_hy$(EXE) gmk_m2$(EXE) gmk_m3$(EXE) gmk_msh$(EXE) gmk_ub2$(EXE) gmtst$(EXE) *gord$(EXE) gotst$(EXE) gout$(EXE) *gpart$(EXE) *gscat$(EXE) *gtst$(EXE) mcv$(EXE) mmk_m2$(EXE) mmk_m3$(EXE) mord$(EXE) mtst$(EXE)
++ 					-$(RM) gmap_mex$(MEX)
+  
+  realclean			:	clean
+  
+***************
+*** 365,367 ****
+--- 380,403 ----
+  					$(libdir)/libscotch$(LIB)		\
+  					$(libdir)/libscotcherrexit$(LIB)	\
+  					mtst.h
++ 
++ gmapx$(OBJ)			:	gmapx.c					\
++ 					../libscotch/module.h			\
++ 					../libscotch/common.h			\
++ 					$(includedir)/scotch.h			\
++ 					$(libdir)/libmexscotch$(LIB)		\
++ 					$(libdir)/libmexscotcherrexit$(LIB)	\
++ 					gmap.h
++ 
++ gmap_mex$(MEX)		:	gmap_mex.c					\
++ 					../libscotch/module.h			\
++ 					../libscotch/common.h			\
++ 					$(includedir)/scotch.h			\
++ 					$(libdir)/libmexscotch$(LIB)		\
++ 					$(libdir)/libmexscotcherrexit$(LIB)	\
++ 					gmap.h
++ 
++ gpart_mex$(MEX)			:	gmap_mex$(MEX)
++ 					-$(RM) gpart_mex$(MEX)
++ 					-$(LN) gmap_mex$(MEX) gpart_mex$(MEX)
++ 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/scotch_README.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/scotch_README.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/scotch_README.txt	(revision 27955)
@@ -0,0 +1,296 @@
+8/06/09:
+
+following INSTALL.txt:
+- GNU Make 3.81, lex, yacc all present
+
+
+[jschierm@astrid src]$ diff Makefile_old.inc Makefile.inc
+
+- started with Makefile.inc.i686_sun_solaris5
+- changed CCS from cc to gcc
+- removed SCOTCH_PTHREAD, since MPICH2 1.0.2p1 is prior to 1.0.7
+- added -std=c99 to CFLAGS for "restrict" attribute (based on various internet pages)
+- added -DCOMMON_TIMING_OLD to CFLAGS for undeclared CLOCK_REALTIME (based on common2.c)
+- added MEX, CCM, and MFLAGS for Matlab mex modules (as well as Matlab libraries and -largeArrayDims)
+- removed -DCOMMON_PTHREAD from CFLAGS and MFLAGS to eliminate fatal exception at pthread_exit in gmap_mex.c
+- removed -DCOMMON_FILE_COMPRESS_GZ from CFLAGS and MFLAGS since gzip not used
+- added -Wl,-rpath-link,/usr/local/pkgs/matlab-7.6/bin/glnxa64 to LDFLAGS to eliminate missing libhdf5.so.0 in Matlab directories (based on Cielo make)
+
+3a4
+> MEX   = .mexa64
+12,13c13,16
+< CFLAGS        = -m64 -O3 -std=c99 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t -DINTSIZE64 -Dintptr_t="long int" -DCOMMON_TIMING_OLD
+< LDFLAGS       = -lz -lm -lrt
+---
+> CCM   = mex
+> CFLAGS        = -m64 -O3 -std=c99 -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t -DCOMMON_TIMING_OLD -DMATLAB -fPIC -I/usr/local/pkgs/matlab-7.6/extern/include
+> LDFLAGS       = -lz -lm -lrt -Wl,-rpath-link,/usr/local/pkgs/matlab-7.6/bin/glnxa64 -L/usr/local/pkgs/matlab-7.6/bin/glnxa64 -lmex -lmat
+> MFLAGS        = -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t -DCOMMON_TIMING_OLD -DMATLAB -I/usr/local/pkgs/matlab-7.6/extern/include -largeArrayDims
+
+
+[jschierm@astrid libscotch]$ diff common_old.c common.c
+
+- redirect usagePrint to within Matlab
+102a103
+> #ifndef MATLAB
+105a107,111
+> #else /* MATLAB */
+>   mexPrintf ("Usage is:\n");
+>   for (cptr = data; *cptr != NULL; cptr ++)
+>     mexPrintf ("  %s\n", *cptr);
+> #endif /* MATLAB */
+
+
+[jschierm@astrid libscotch]$ diff common_old.h common.h
+
+- fix undeclared type intptr_t
+68a69
+> #include            <stdint.h>                    /* added for intptr_t */
+
+- for running as a matlab mex function
+- add macro for fprintf to capture missing output
+- fix exits to exit within Matlab
+90a92,105
+> #ifdef MATLAB
+>     #include "mat.h"
+>     #include "mex.h"
+>     #include "matrix.h"
+> 
+>     #define printf mexPrintf
+>     #define fprintf(file,...) (file == stdout || file == stderr ? mexPrintf(__VA_ARGS__) : fprintf(file,__VA_ARGS__))
+>     #define malloc mxMalloc
+>     #define calloc mxCalloc
+>     #define realloc mxRealloc
+>     #define free mxFree
+>     #define exit(status) mexErrMsgTxt("exit=" #status)
+> #endif
+> 
+
+
+[jschierm@astrid libscotch]$ diff dummysizes_old.c dummysizes.c
+
+- dummysizes must run by itself during compilation and exit cleanly
+269a270
+> #ifndef MATLAB
+270a272
+> #endif /* MATLAB */
+
+
+[jschierm@astrid libscotch]$ diff library_error_exit_old.c library_error_exit.c
+
+- redirect errorPrint and errorPrintW to within Matlab
+116a117
+> #ifndef MATLAB
+133a135,152
+> #else /* MATLAB */
+>   mexPrintf  ("%s", _SCOTCHerrorProgName);
+> #ifdef SCOTCH_PTSCOTCH
+>   if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) &&
+>       (proclocnum != 0)                              &&
+>       (MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum) == MPI_SUCCESS))
+>     mexPrintf ("(%d): ", proclocnum);
+> #else /* SCOTCH_PTSCOTCH */
+>   if (_SCOTCHerrorProgName[0] != '\0')
+>     mexPrintf  (": ");
+> #endif /* SCOTCH_PTSCOTCH */
+>   mexPrintf  ("ERROR: ");
+>   va_start (errlist, errstr);
+>   mexPrintf (errstr, errlist);             /* Print arguments */
+>   va_end   (errlist);
+>   mexPrintf  ("\n");
+> #endif /* MATLAB */
+> 
+157a177
+> #ifndef MATLAB
+173a194,211
+> 
+> #else /* MATLAB */
+>   mexPrintf  ("%s", _SCOTCHerrorProgName);
+> #ifdef SCOTCH_PTSCOTCH
+>   if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) &&
+>       (proclocnum != 0)                              &&
+>       (MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum) == MPI_SUCCESS))
+>     mexPrintf ("(%d): ", proclocnum);
+> #else /* SCOTCH_PTSCOTCH */
+>   if (_SCOTCHerrorProgName[0] != '\0')
+>     mexPrintf  (": ");
+> #endif /* SCOTCH_PTSCOTCH */
+>   mexPrintf  ("WARNING: ");
+>   va_start (errlist, errstr);
+>   mexPrintf (errstr, errlist);             /* Print arguments */
+>   va_end   (errlist);
+>   mexPrintf  ("\n");
+> #endif /* MATLAB */
+
+
+[jschierm@astrid scotch]$ diff Makefile_old Makefile
+- add MEX rule
+- add gmap_mex into scotch, clean, and install rules
+- add gmap_mex object
+51a52,54
+> %$(MEX)       :       %.c
+>                               $(CCM) $(MFLAGS) -I$(includedir) -I../libscotch -DSCOTCH_VERSION=\"$(VERSION)\" $(<) -o $(@) -L$(libdir) -l$(SCOTCHLIB) -l$(SCOTCHLIB)errexit $(LDFLAGS)
+> 
+70a74
+>                                       gmap_mex$(MEX) \
+98c102
+<                                       -$(CP) acpl$(EXE) amk_ccc$(EXE) amk_fft2$(EXE) amk_grf$(EXE) amk_hy$(EXE) amk_m2$(EXE) amk_p2$(EXE) atst$(EXE) gbase$(EXE) gcv$(EXE) gmap$(EXE) gmk_hy$(EXE) gmk_m2$(EXE) gmk_m3$(EXE) gmk_msh$(EXE) gmk_ub2$(EXE) gmtst$(EXE) gord$(EXE) gotst$(EXE) gout$(EXE) *gtst$(EXE) gscat$(EXE) mcv$(EXE) mmk_m2$(EXE) mmk_m3$(EXE) mord$(EXE) mtst$(EXE) $(bindir)
+---
+>                                       -$(CP) acpl$(EXE) amk_ccc$(EXE) amk_fft2$(EXE) amk_grf$(EXE) amk_hy$(EXE) amk_m2$(EXE) amk_p2$(EXE) atst$(EXE) gbase$(EXE) gcv$(EXE) gmap$(EXE) gmap_mex$(MEX) gmk_hy$(EXE) gmk_m2$(EXE) gmk_m3$(EXE) gmk_msh$(EXE) gmk_ub2$(EXE) gmtst$(EXE) gord$(EXE) gotst$(EXE) gout$(EXE) *gtst$(EXE) gscat$(EXE) mcv$(EXE) mmk_m2$(EXE) mmk_m3$(EXE) mord$(EXE) mtst$(EXE) $(bindir)
+108c112
+<                                       -$(RM) *~ *$(OBJ) acpl$(EXE) amk_ccc$(EXE) amk_fft2$(EXE) amk_grf$(EXE) amk_hy$(EXE) amk_m2$(EXE) amk_p2$(EXE) atst$(EXE) gbase$(EXE) gcv$(EXE) *gmap$(EXE) gmk_hy$(EXE) gmk_m2$(EXE) gmk_m3$(EXE) gmk_msh$(EXE) gmk_ub2$(EXE) gmtst$(EXE) *gord$(EXE) gotst$(EXE) gout$(EXE) *gpart$(EXE) *gscat$(EXE) *gtst$(EXE) mcv$(EXE) mmk_m2$(EXE) mmk_m3$(EXE) mord$(EXE) mtst$(EXE)
+---
+>                                       -$(RM) *~ *$(OBJ) acpl$(EXE) amk_ccc$(EXE) amk_fft2$(EXE) amk_grf$(EXE) amk_hy$(EXE) amk_m2$(EXE) amk_p2$(EXE) atst$(EXE) gbase$(EXE) gcv$(EXE) *gmap$(EXE) gmap_mex$(MEX) gmk_hy$(EXE) gmk_m2$(EXE) gmk_m3$(EXE) gmk_msh$(EXE) gmk_ub2$(EXE) gmtst$(EXE) *gord$(EXE) gotst$(EXE) gout$(EXE) *gpart$(EXE) *gscat$(EXE) *gtst$(EXE) mcv$(EXE) mmk_m2$(EXE) mmk_m3$(EXE) mord$(EXE) mtst$(EXE)
+239a244,251
+> gmap_mex$(MEX)                :       gmap_mex.c \
+>                                       ../libscotch/module.h \
+>                                       ../libscotch/common.h \
+>                                       $(includedir)/scotch.h \
+>                                       $(libdir)/libscotch$(LIB) \
+>                                       $(libdir)/libscotcherrexit$(LIB) \
+>                                       gmap.h
+> 
+
+
+[jschierm@astrid scotch]$ diff gmap.c gmap_mex.c
+- convert gmap to gmap_mex mex function with variable argument list
+117,120c117,120
+< int
+< main (
+< int                         argc,
+< char *                      argv[])
+---
+> void mexFunction( int nlhs,
+>                   mxArray *plhs[],
+>                   int nrhs,
+>                   const mxArray *prhs[] )
+121a122,123
+>   int                         argcm;
+>   char                        argvm[21][257];
+130a133,152
+> /*  check static variables from previous runs  */
+> 
+>   if (C_paraNum > 0 || C_fileNum > 0)
+>     mexErrMsgTxt("gmap_mex still in memory -- clear gmap_mex and try again.\n");
+> 
+> /*  load matlab argument list  */
+> 
+>   argcm=nrhs+1;
+>   mexPrintf("argcm=%d\n",argcm);
+>   strcpy(argvm[0],"gmap");
+>   for (i=0; i<nrhs; i++)
+>     if (!mxIsChar(prhs[i])) {
+>       mexPrintf("%s -- prhs[%d] must be character.\n","gmap",i);
+>       mexErrMsgTxt(" ");
+>     }
+>     else
+>       mxGetString(prhs[i],argvm[i+1],256);
+>   for (i=0; i<nrhs+1; i++)
+>     mexPrintf("argvm[%d]=%s\n",i,argvm[i]);
+> 
+132,133c154,155
+<   i = strlen (argv[0]);
+<   if ((i >= 5) && (strncmp (argv[0] + i - 5, "gpart", 5) == 0)) {
+---
+>   i = strlen (argvm[0]);
+>   if ((i >= 5) && (strncmp (argvm[0] + i - 5, "gpart", 5) == 0)) {
+144c166
+<   if ((argc >= 2) && (argv[1][0] == '?')) {       /* If need for help */
+---
+>   if ((argcm >= 2) && (argvm[1][0] == '?')) {       /* If need for help */
+151a174,175
+>   printf("point 0: C_FILENBR=%d, C_fileNbr=%d, C_paraNbr=%d\n",
+>          C_FILENBR,C_fileNbr,C_paraNbr);
+154,155c178,183
+<   for (i = 1; i < argc; i ++) {                   /* Loop for all option codes                        */
+<     if ((argv[i][0] != '-') || (argv[i][1] == '\0') || (argv[i][1] == '.')) { /* If found a file name */
+---
+>   for (i = 1; i < argcm; i ++) {                   /* Loop for all option codes                        */
+>   printf("point 1: i=%d; C_fileNbr=%d, C_fileNum=%d, C_paraNbr=%d, C_paraNum=%d\n",
+>          i,C_fileNbr,C_fileNum,C_paraNbr,C_paraNum);
+>     if ((argvm[i][0] != '-') || (argvm[i][1] == '\0') || (argvm[i][1] == '.')) { /* If found a file name */
+>   printf("point 2: i=%d; C_fileNbr=%d, C_fileNum=%d, C_paraNbr=%d, C_paraNum=%d\n",
+>          i,C_fileNbr,C_fileNum,C_paraNbr,C_paraNum);
+157,158c185,186
+<         if ((C_partNbr = atoi (argv[i])) < 1)     /* Get the number of parts */
+<           errorPrint ("main: invalid number of parts (\"%s\")", argv[i]);
+---
+>         if ((C_partNbr = atoi (argvm[i])) < 1)     /* Get the number of parts                          */
+>           errorPrint ("main: invalid number of parts (\"%s\")", argvm[i]);
+161a190,191
+>   printf("point 3: i=%d; C_fileNbr=%d, C_fileNum=%d, C_paraNbr=%d, C_paraNum=%d\n",
+>          i,C_fileNbr,C_fileNum,C_paraNbr,C_paraNum);
+163c193
+<         C_fileTab[C_fileNum ++].name = argv[i];
+---
+>         C_fileTab[C_fileNum ++].name = argvm[i];
+165a196,197
+>   printf("point 4: i=%d; C_fileNbr=%d, C_fileNum=%d, C_paraNbr=%d, C_paraNum=%d\n",
+>          i,C_fileNbr,C_fileNum,C_paraNbr,C_paraNum);
+168c200
+<       switch (argv[i][1]) {
+---
+>       switch (argvm[i][1]) {
+177c209
+<           SCOTCH_stratGraphMap (&stradat, &argv[i][2]);
+---
+>           SCOTCH_stratGraphMap (&stradat, &argvm[i][2]);
+181,182c213,214
+<           for (j = 2; argv[i][j] != '\0'; j ++) {
+<             switch (argv[i][j]) {
+---
+>           for (j = 2; argvm[i][j] != '\0'; j ++) {
+>             switch (argvm[i][j]) {
+192c224
+<                 errorPrint ("main: invalid source graph option (\"%c\")", argv[i][j]);
+---
+>                 errorPrint ("main: invalid source graph option (\"%c\")", argvm[i][j]);
+202,203c234,235
+<           for (j = 2; argv[i][j] != '\0'; j ++) {
+<             switch (argv[i][j]) {
+---
+>           for (j = 2; argvm[i][j] != '\0'; j ++) {
+>             switch (argvm[i][j]) {
+217c249
+<                 errorPrint ("main: unprocessed parameter \"%c\" in \"%s\"", argv[i][j], argv[i]);
+---
+>                 errorPrint ("main: unprocessed parameter \"%c\" in \"%s\"", argvm[i][j], argvm[i]);
+222c254
+<           errorPrint ("main: unprocessed option (\"%s\")", argv[i]);
+---
+>           errorPrint ("main: unprocessed option (\"%s\")", argvm[i]);
+225a258
+>   printf("point 5\n");
+230a264
+>   printf("point 6\n");
+232a267
+>   printf("point 7\n");
+235a271
+>   printf("point 8\n");
+239a276
+>   printf("point 9\n");
+244a282
+>   printf("point 10\n");
+251a290
+>   printf("point 11\n");
+256a296
+>   printf("point 12\n");
+264a305
+>   printf("point 13\n");
+271a313
+>   printf("point 14\n");
+273a316
+>   printf("point 15\n");
+276a320
+>   printf("point 16\n");
+277a322
+>   printf("point 16a\n");
+278a324
+>   printf("point 16b\n");
+279a326
+>   printf("point 16c\n");
+280a328
+>   printf("point 17\n");
+284a333
+>   printf("point 18\n");
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/scotch_jes_notes.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/scotch_jes_notes.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/scotch/scotch_jes_notes.txt	(revision 27955)
@@ -0,0 +1,308 @@
+8/06/09:
+
+following INSTALL.txt:
+- GNU Make 3.81, lex, yacc all present
+- started with Makefile.inc.i686_sun_solaris5
+- changed CCS from cc to gcc
+- removed SCOTCH_PTHREAD, since MPICH2 1.0.2p1 is prior to 1.0.7
+
+graph.h:110: error: expected :, ,, ;, ) or __attribute__ before vnumtab
+(and so on for "restrict" attribute in graph.h,geom.h,mesh.h,arch.h,mapping.h,order.h)
+- added -std=c99 to CFLAGS (based on various internet pages)
+
+bgraph_bipart_gg.c:267: error: intptr_t undeclared
+- according to various internet pages, should be included in c99 standard
+- defined in /usr/include/stdint.h (also referenced in inttypes.h), so why not included?
+- added -DINTSIZE64 to CFLAGS, still didn't work (based on INSTALL.txt)
+- added -Dintptr_t="long int" (based on /usr/include/stdint.h)
+
+common2.c:764: error: storage size of tp isn't known
+common2.c:766: error: CLOCK_REALTIME undeclared
+- added -DCOMMON_TIMING_OLD to CFLAGS (based on source code)
+
+8/13/09:
+
+for running as a matlab mex function:
+[jschierm@astrid libscotch]$ diff common_old.h common.h
+90a91,102
+> #ifdef MATLAB
+>     #include "mat.h"
+>     #include "mex.h"
+>     #include "matrix.h"
+> 
+>     #define printf mexPrintf
+>     #define malloc mxMalloc
+>     #define calloc mxCalloc
+>     #define realloc mxRealloc
+>     #define free mxFree
+> #endif
+> 
+
+[jschierm@astrid src]$ diff Makefile_old.inc Makefile.inc
+12,13c12,13
+< CFLAGS        = -m64 -O3 -std=c99 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t -DINTSIZE64 -Dintptr_t="long int" -DCOMMON_TIMING_OLD
+< LDFLAGS       = -lz -lm -lrt
+---
+> CFLAGS        = -m64 -O3 -std=c99 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t -DINTSIZE64 -Dintptr_t="long int" -DCOMMON_TIMING_OLD -DMATLAB -fPIC -I/usr/local/pkgs/matlab-7.6/extern/include
+> LDFLAGS       = -lz -lm -lrt -L/usr/local/pkgs/matlab-7.6/bin/glnxa64 -lmat -lmex
+
+8/19/09:
+
+- still having problems with intptr_t:
+gcc: int: No such file or directory
+In file included from ../libscotch/common.h:81,
+                 from gmap_mex.c:75:
+/usr/include/unistd.h:238: error: two or more data types in declaration specifiers
+- removed -DINTSIZE64 and -Dintptr_t="long int" from CFLAGS above
+[jschierm@astrid libscotch]$ diff common_old.h common.h
+68a69
+> #include            <stdint.h>                    /* added for intptr_t */
+
+8/20/09:
+
+- must fix exits to exit within Matlab:
+[jschierm@astrid libscotch]$ diff common_old.h common.h
+68a69
+> #include            <stdint.h>                    /* added for intptr_t */
+90a92,104
+> #ifdef MATLAB
+>     #include "mat.h"
+>     #include "mex.h"
+>     #include "matrix.h"
+> 
+>     #define printf mexPrintf
+>     #define malloc mxMalloc
+>     #define calloc mxCalloc
+>     #define realloc mxRealloc
+>     #define free mxFree
+>     #define exit(status) mexErrMsgTxt("exit=" #status)
+> #endif
+> 
+
+- however, dummysizes must run by itself during compilation and exit cleanly:
+[jschierm@astrid libscotch]$ diff dummysizes_old.c dummysizes.c
+269a270
+> #ifndef MATLAB
+270a272
+> #endif /* MATLAB */
+
+- redirect errorPrint and errorPrintW to within Matlab:
+[jschierm@astrid libscotch]$ diff library_error_exit_old.c
+library_error_exit.c
+116a117
+> #ifndef MATLAB
+133a135,152
+> #else /* MATLAB */
+>   mexPrintf  ("%s", _SCOTCHerrorProgName);
+> #ifdef SCOTCH_PTSCOTCH
+>   if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) &&
+>       (proclocnum != 0)                              &&
+>       (MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum) == MPI_SUCCESS))
+>     mexPrintf ("(%d): ", proclocnum);
+> #else /* SCOTCH_PTSCOTCH */
+>   if (_SCOTCHerrorProgName[0] != '\0')
+>     mexPrintf  (": ");
+> #endif /* SCOTCH_PTSCOTCH */
+>   mexPrintf  ("ERROR: ");
+>   va_start (errlist, errstr);
+>   mexPrintf (errstr, errlist);             /* Print arguments */
+>   va_end   (errlist);
+>   mexPrintf  ("\n");
+> #endif /* MATLAB */
+> 
+157a177
+> #ifndef MATLAB
+173a194,211
+> 
+> #else /* MATLAB */
+>   mexPrintf  ("%s", _SCOTCHerrorProgName);
+> #ifdef SCOTCH_PTSCOTCH
+>   if ((MPI_Initialized (&proclocnum) == MPI_SUCCESS) &&
+>       (proclocnum != 0)                              &&
+>       (MPI_Comm_rank (MPI_COMM_WORLD, &proclocnum) == MPI_SUCCESS))
+>     mexPrintf ("(%d): ", proclocnum);
+> #else /* SCOTCH_PTSCOTCH */
+>   if (_SCOTCHerrorProgName[0] != '\0')
+>     mexPrintf  (": ");
+> #endif /* SCOTCH_PTSCOTCH */
+>   mexPrintf  ("WARNING: ");
+>   va_start (errlist, errstr);
+>   mexPrintf (errstr, errlist);             /* Print arguments */
+>   va_end   (errlist);
+>   mexPrintf  ("\n");
+> #endif /* MATLAB */
+
+- redirect usagePrint to within Matlab:
+[jschierm@astrid libscotch]$ diff common_old.c common.c  
+102a103
+> #ifndef MATLAB
+105a107,111
+> #else /* MATLAB */
+>   mexPrintf ("Usage is:\n");
+>   for (cptr = data; *cptr != NULL; cptr ++)
+>     mexPrintf ("  %s\n", *cptr);
+> #endif /* MATLAB */
+
+8/21/09:
+
+- removed -DCOMMON_PTHREAD from CFLAGS and MFLAGS to eliminate fatal exception at pthread_exit in gmap_mex.c
+- removed -DCOMMON_FILE_COMPRESS_GZ from CFLAGS and MFLAGS because unused
+
+8/25/09:
+
+added macro for fprintf to capture missing output:
+[jschierm@astrid libscotch]$ diff common_old.h common.h
+68a69
+> #include            <stdint.h>                    /* added for intptr_t */
+90a92,105
+> #ifdef MATLAB
+>     #include "mat.h"
+>     #include "mex.h"
+>     #include "matrix.h"
+> 
+>     #define printf mexPrintf
+>     #define fprintf(file,...) (file == stdout || file == stderr ? mexPrintf(__VA_ARGS__) : fprintf(file,__VA_ARGS__))
+>     #define malloc mxMalloc
+>     #define calloc mxCalloc
+>     #define realloc mxRealloc
+>     #define free mxFree
+>     #define exit(status) mexErrMsgTxt("exit=" #status)
+> #endif
+> 
+
+11/12/09:
+
+- added -Wl,-rpath-link,/usr/local/pkgs/matlab-7.6/bin/glnxa64 to LDFLAGS to eliminate missing libhdf5.so.0 in Matlab directories (based on Cielo make, but why did this not occur before?)
+
+11/18/09:
+
+- changed the following files to allow adjir,adjjc,vertlab,vertwgt,edgewgt rather than graph file
+
+libscotch/library.h
+- argument list for SCOTCH_graphLoad
+libscotch/library_graph.c
+- SCOTCH_graphLoad changes and call to graphLoad
+libscotch/graph.h
+- argument list for graphLoad
+libscotch/graph_io.c
+- graphLoad changes
+libscotch/graph_io_scot.c
+- miscellaneous call to graphLoad
+libscotch/mesh_io_scot.c
+- miscellaneous call to graphLoad
+libscotch/library_graph_f.c
+- miscellaneous call to SCOTCH_graphLoad
+scotch/gmap_mex.c
+- input/processing of Matlab arguments and call to SCOTCH_graphLoad
+
+11/30/09:
+
+- changed the following files to allow nvert,maptab rather than map file
+
+libscotch/library.h
+- argument list for SCOTCH_graphMapSave
+libscotch/library_graph_map.c
+- SCOTCH_graphMapSave changes and call to mapSave
+libscotch/mapping.h
+- argument list for mapSave
+libscotch/mapping_io.c
+- mapSave changes
+libscotch/library_graph_map_f.c
+- miscellaneous call to SCOTCH_graphMapSave
+scotch/gmap_mex.c
+- call to SCOTCH_graphMapSave and processing/output of Matlab arguments
+
+12/08/09:
+
+- changed the following files to allow archtyp,napar,archpar rather than target file
+
+libscotch/library.h
+- argument list for SCOTCH_archLoad
+libscotch/library_arch.c
+- SCOTCH_archLoad changes and call to archLoad
+libscotch/arch.h
+- argument list for archLoad
+libscotch/arch.c
+- archLoad changes and call to class->archLoad
+libscotch/arch_cmplt.h
+libscotch/arch_cmpltw.h
+libscotch/arch_deco.h
+libscotch/arch_hcub.h
+libscotch/arch_mesh.h
+libscotch/arch_tleaf.h
+libscotch/arch_torus.h
+- argument lists for arch*ArchLoad
+libscotch/arch_cmplt.c
+libscotch/arch_cmpltw.c
+libscotch/arch_deco.c
+libscotch/arch_hcub.c
+libscotch/arch_mesh.c
+libscotch/arch_tleaf.c
+libscotch/arch_torus.c
+- arch*ArchLoad changes
+libscotch/library_arch_f.c
+- miscellaneous call to SCOTCH_archLoad
+scotch/gmap_mex.c
+- input/processing of Matlab arguments and call to SCOTCH_archLoad
+
+12/11/09:
+
+- fixed a couple bugs
+
+libscotch/graph.c -- caused crash when trying to free vertex labels
+138c138,141
+<     if (grafptr->vlbltax != NULL)
+---
+> /*  vlbltax must also check GRAPHVERTGROUP (jes, 12/11/09)  */
+> //    if (grafptr->vlbltax != NULL)
+>     if ((grafptr->vlbltax != NULL) &&
+>         ((grafptr->flagval & GRAPHVERTGROUP) == 0))
+
+libscotch/mapping_io.c -- caused first vertex label to be uninitialized
+> /*  not sure why, but need to offset vlbltax in other direction (jes, 12/11/09
+> //                 (long) ((vlbltax != NULL) ? vlbltax[vertnum] : vertnum),
+>                  (long) ((vlbltax != NULL) ? vlbltax[vertnum+mappptr->baseva
+
+1/05/10:
+
+libscotch/graph_io.c -- if vertex labels are supplied, they must be referenced
+263c265,268
+<       edgeval=adjir[edgenum-grafptr->baseval]+1;
+---
+>       if (vertlab)
+>         edgeval=vertlab[adjir[edgenum-grafptr->baseval]  ];
+>       else
+>         edgeval=        adjir[edgenum-grafptr->baseval]+1;
+
+2/08/10:
+
+- modified all source code changes to use the MATLAB compiler conditional, so that both mex and stand-alone modules could be built simultaneously
+
+2/10/10:
+
+- added mexscotch target to makefiles to separate mex from stand-alone modules
+- removed Matlab-specific switches from CFLAGS and LDFLAGS and added them to mexscotch target
+
+3/03/10:
+
+- separated dummysizes within mexscotch target in libscotch/Makefile so that it is built without the matlab flag, includes, and libraries (matlab 7.8 would fail even though matlab 7.6 was okay).
+
+4/26/10:
+
+- separated gmap_mex.c driver into gmap_mex.c matlab-layer (independent of scotch) and gmapx.c x-layer (independent of matlab).
+
+4/29/10:
+
+- made changes to gmapx.c, parser_yy.y/stratParserParse, and parser_ll.l/stratParserInit to reset static variables from previous runs.
+- inserted print statements into common_integer.c/intRand*, common_memory.c/mem*, and vgraph_separate_vw.c/vgraphSeparateVw to monitor static variables in case those have to be reset.
+
+5/03/10:
+
+- implemented gpart functionality in gmap_mex.c, gmapx.c, and new gpart.m.
+- implemented common_integer.c/intRandResetStatic to reset static variables from previous runs.
+
+6/16/10:
+
+- renamed scotch x-layer and separated it from rest of build.
+- set up scotch to build both stand-alone and mex libraries.
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/semic/configs/surface_physics.f90.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/semic/configs/surface_physics.f90.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/semic/configs/surface_physics.f90.patch	(revision 27955)
@@ -0,0 +1,15 @@
+--- surface_physics.f90	2018-12-10 08:27:55.000000000 +0100
++++ my_surface_physics.f90	2018-12-10 08:58:14.000000000 +0100
+@@ -775,9 +775,9 @@
+         n_ksub        = par%n_ksub
+ 
+         ! Read parameters from input namelist file
+-        open(7,file=trim(filename))
+-        read(7,nml=surface_physics)
+-        close(7)
++        !open(7,file=trim(filename))
++        !read(7,nml=surface_physics)
++        !close(7)
+ !         write(*,nml=surface_physics)
+ 
+         ! Store local parameter values in output object
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/semic/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/semic/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/semic/install.sh	(revision 27955)
@@ -0,0 +1,72 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+PREFIX="${ISSM_DIR}/externalpackages/semic/install" # Set to location where external package should be installed
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX}/lib
+
+# Download source
+git clone https://github.com/mkrapp/semic.git src
+
+if which ifort >/dev/null; then
+	FC="ifort"
+	FFLAGS="-traceback -check all" # -O2 is default 
+else
+	FC="gfortran"
+	if [ `uname` == "Darwin" ]; then
+		FFLAGS="-fcheck=all -arch $(uname -m)"
+	else
+		FFLAGS=""
+	fi
+fi
+
+# Compile and install semic module utils.f90
+cd src/
+(
+cat << EOF
+LIB_EXT=a
+FC=$FC
+FFLAGS=$FFLAGS
+install: libutils.\$(LIB_EXT)
+	cp libutils.\$(LIB_EXT) ${PREFIX}/lib
+	cp utils.mod ${PREFIX}
+OBJECTS= utils.o
+libutils.\$(LIB_EXT): \$(OBJECTS)
+	ar -r libutils.\$(LIB_EXT) \$(OBJECTS) 
+	ranlib libutils.\$(LIB_EXT) 
+%.o: %.f90
+	\$(FC) \$(FFLAGS) -fPIC -c $< -o \$@
+clean: 
+	rm -rf *.o *.\$(LIB_EXT)
+EOF
+) > Makefile
+make
+
+# Apply patch surface_physics
+patch surface_physics.f90 < ../configs/surface_physics.f90.patch
+
+# Compile semic module surface_physics.f90
+(
+cat << EOF
+LIB_EXT=a
+FC=$FC
+FFLAGS=$FFLAGS
+install: libsurface_physics.\$(LIB_EXT)
+	cp libsurface_physics.\$(LIB_EXT) ${PREFIX}/lib
+	cp surface_physics.mod ${PREFIX}
+OBJECTS= surface_physics.o
+libsurface_physics.\$(LIB_EXT): \$(OBJECTS)
+	ar -r libsurface_physics.\$(LIB_EXT) \$(OBJECTS) 
+	ranlib libsurface_physics.\$(LIB_EXT) 
+%.o: %.f90
+	\$(FC) \$(FFLAGS) -fPIC -c $< -o \$@
+clean: 
+	rm -rf *.o *.\$(LIB_EXT)
+EOF
+) > Makefile
+make
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/shapelib/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/shapelib/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/shapelib/install.sh	(revision 27955)
@@ -0,0 +1,56 @@
+#!/bin/bash
+set -eu
+
+# Some cleanup
+rm -rf shapelib-1.2.10
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/shapelib-1.2.10.tar.gz' 'shapelib-1.2.10.tar.gz'
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/shape_eg_data.zip'  'shape_eg_data.zip'
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/docs/shapefile.pdf' 'shapefile.pdf'
+
+# Untar 
+tar -xvzf shapelib-1.2.10.tar.gz
+unzip shape_eg_data.zip -d shapelib-1.2.10/eg_data
+
+# Move shapelib to src directory
+mv shapelib-1.2.10/* src
+rm -rf shapelib-1.2.10
+
+# Apply patches (all at once)
+# (written by diff -rc old_src new_src > shapelib.patch)
+patch -p0 < shapelib.patch
+
+# Build shapelib and run self-tests
+cd src
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make test
+
+# Clean up objects (but not library or executable)
+#make clean
+cd ..
+
+# Populate install directory
+cp -p src/README install
+cp -p src/*.html install
+mkdir install/include
+cp -p src/shapefil.h install/include
+mkdir install/lib
+mv src/libshape.a install/lib/libshape.a
+mkdir install/exec
+mv src/shpcreate install/exec
+mv src/shpadd install/exec
+mv src/shpdump install/exec
+mv src/shprewind install/exec
+mv src/dbfcreate install/exec
+mv src/dbfadd install/exec
+mv src/dbfdump install/exec
+mv src/shputils install/exec
+mv src/shptest install/exec
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/shapelib/shapelib.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/shapelib/shapelib.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/shapelib/shapelib.patch	(revision 27955)
@@ -0,0 +1,139 @@
+diff -rc src/Makefile src_new/Makefile
+*** src/Makefile	2003-04-07 06:03:22.000000000 -0700
+--- src_new/Makefile	2011-10-19 11:58:13.993411828 -0700
+***************
+*** 1,20 ****
+  
+  #LINKOPT	=	/usr/local/lib/libdbmalloc.a
+! CFLAGS	=	-g
+  
+  default:	all
+  
+! all:	shpcreate shpadd shpdump shprewind dbfcreate dbfadd dbfdump shptest
+  
+  shpopen.o:	shpopen.c shapefil.h
+  	$(CC) $(CFLAGS) -c shpopen.c
+  
+- shptree.o:	shptree.c shapefil.h
+- 	$(CC) $(CFLAGS) -c shptree.c
+- 
+  dbfopen.o:	dbfopen.c shapefil.h
+  	$(CC) $(CFLAGS) -c dbfopen.c
+  
+  shpcreate:	shpcreate.c shpopen.o
+  	$(CC) $(CFLAGS) shpcreate.c shpopen.o $(LINKOPT) -o shpcreate
+  
+--- 1,24 ----
+  
+  #LINKOPT	=	/usr/local/lib/libdbmalloc.a
+! CC =		gcc
+! #CFLAGS	=	-g
+! CFLAGS	=	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -g
+! AR =		/usr/bin/ar rcv
+! RANLIB =	/usr/bin/ranlib
+  
+  default:	all
+  
+! all:	libshape.a shpcreate shpadd shpdump shprewind dbfcreate dbfadd dbfdump shputils shptest
+  
+  shpopen.o:	shpopen.c shapefil.h
+  	$(CC) $(CFLAGS) -c shpopen.c
+  
+  dbfopen.o:	dbfopen.c shapefil.h
+  	$(CC) $(CFLAGS) -c dbfopen.c
+  
++ libshape.a:    shpopen.o dbfopen.o
++ 	${AR} libshape.a shpopen.o dbfopen.o ; ${RANLIB} libshape.a
++ 
+  shpcreate:	shpcreate.c shpopen.o
+  	$(CC) $(CFLAGS) shpcreate.c shpopen.o $(LINKOPT) -o shpcreate
+  
+***************
+*** 36,58 ****
+  dbfdump:	dbfdump.c dbfopen.o
+  	$(CC) $(CFLAGS) dbfdump.c dbfopen.o $(LINKOPT) -o dbfdump
+  
+  shptest:	shptest.c shpopen.o
+  	$(CC) $(CFLAGS) shptest.c shpopen.o $(LINKOPT) -o shptest
+  
+! shputils:	shputils.c shpopen.o dbfopen.o
+! 	$(CC) $(CFLAGS) shputils.c shpopen.o dbfopen.o $(LINKOPT) -o shputils
+  
+  shptreedump:	shptreedump.c shptree.o shpopen.o
+  	$(CC) $(CFLAGS) shptreedump.c shptree.o shpopen.o $(LINKOPT) \
+  		-o shptreedump
+  
+  clean:
+! 	rm -f *.o dbfdump dbfcreate dbfadd shpdump shpcreate shpadd shputils
+  	rm -f shptreedump
+  	rm -rf *.lo *.la .libs
+- 	rm -f shptest
+  
+! test:	test2 test3
+  
+  #
+  #	Note this stream only works if example data is accessable.
+--- 40,64 ----
+  dbfdump:	dbfdump.c dbfopen.o
+  	$(CC) $(CFLAGS) dbfdump.c dbfopen.o $(LINKOPT) -o dbfdump
+  
++ shputils:	shputils.c shpopen.o dbfopen.o
++ 	$(CC) $(CFLAGS) shputils.c shpopen.o dbfopen.o $(LINKOPT) -o shputils
++ 
+  shptest:	shptest.c shpopen.o
+  	$(CC) $(CFLAGS) shptest.c shpopen.o $(LINKOPT) -o shptest
+  
+! shptree.o:	shptree.c shapefil.h
+! 	$(CC) $(CFLAGS) -c shptree.c
+  
+  shptreedump:	shptreedump.c shptree.o shpopen.o
+  	$(CC) $(CFLAGS) shptreedump.c shptree.o shpopen.o $(LINKOPT) \
+  		-o shptreedump
+  
+  clean:
+! 	rm -f *.o *.a shpcreate shpadd shpdump shprewind dbfcreate dbfadd dbfdump shputils shptest
+  	rm -f shptreedump
+  	rm -rf *.lo *.la .libs
+  
+! test:	test1 test2 test3
+  
+  #
+  #	Note this stream only works if example data is accessable.
+diff -rc src/shputils.c src_new/shputils.c
+*** src/shputils.c	2003-04-07 06:03:22.000000000 -0700
+--- src_new/shputils.c	2011-10-14 14:52:32.179022813 -0700
+***************
+*** 274,280 ****
+                  if (factor == 0)
+                  {
+                    if (infactor ==0)
+!                   { puts("ERROR: Input unit must be defined before output unit"); exit(); }
+                    factor=infactor/outfactor;
+                  }
+                  printf("Output file coordinate values will be factored by %lg\n",factor);
+--- 274,280 ----
+                  if (factor == 0)
+                  {
+                    if (infactor ==0)
+!                   { puts("ERROR: Input unit must be defined before output unit"); exit( 1 ); }
+                    factor=infactor/outfactor;
+                  }
+                  printf("Output file coordinate values will be factored by %lg\n",factor);
+diff -rc src/stream1.sh src_new/stream1.sh
+*** src/stream1.sh	2003-04-07 06:03:22.000000000 -0700
+--- src_new/stream1.sh	2011-10-19 11:45:08.192964291 -0700
+***************
+*** 1,6 ****
+  #!/bin/sh
+  	
+! EG_DATA=/u/www/projects/shapelib/eg_data
+  
+  echo -------------------------------------------------------------------------
+  echo Test 1: dump anno.shp
+--- 1,6 ----
+  #!/bin/sh
+  	
+! EG_DATA=./eg_data
+  
+  echo -------------------------------------------------------------------------
+  echo Test 1: dump anno.shp
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/shell2junit/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/shell2junit/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/shell2junit/install.sh	(revision 27955)
@@ -0,0 +1,25 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+VER="1.0.0"
+
+PREFIX="${ISSM_DIR}/externalpackages/shell2junit/install" # Set to location where external package should be installed
+
+# Cleanup
+rm -rf ${PREFIX}
+mkdir -p ${PREFIX}/bin
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/shell2junit-${VER}.zip" "shell2junit-${VER}.zip"
+
+# Unpack source
+unzip -q shell2junit-${VER}.zip
+
+# Install
+mv shell2junit-${VER}/sh2ju.sh ${PREFIX}/bin
+
+# Cleanup
+rm -rf shell2junit-${VER}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/snowpack/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/snowpack/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/snowpack/install.sh	(revision 27955)
@@ -0,0 +1,56 @@
+#!/bin/bash
+#SNOWPACK install package:  this package is not distributed by ISSM. Please request access to the code by 
+#contacting Mathias Bavay () or logging onto http://models.slf.ch/ and registering.  Once you have a tarball 
+#of the code, please use this script to install.
+
+#we assume you have a Snowpack-*-src.tar.gz  tarball
+set -eu
+
+#Do some inquiry about the names of the tar balls: 
+source_tar=`ls Snowpack-*-src.tar.gz`
+source_version=`echo $source_tar | sed 's/Snowpack-//g' | sed 's/-src.tar.gz//g'`
+
+if [[ $source_tar == "" ]]; then 
+	echo "Could not identify a tar ball for the source code, name should be Snowpack-*-src.tar.gz"
+	exit 1
+fi
+if [[ $source_version == "" ]]; then 
+	echo "Could not identify a tar ball version for the source code"
+	exit 1
+fi
+
+#Some cleanup
+rm -rf src install Snowpack-$source_version
+
+#First deal with source code 
+tar -zxvf  $source_tar
+mv Snowpack-$source_version/usr src
+rm -rf Snowpack-$source_version
+
+#Build library
+cd src && rm -rf CMakeCache.txt 
+cmake -DCMAKE_INSTALL_PREFIX:PATH=$ISSM_DIR/externalpackages/snowpack/install \
+	-DMETEOIO_INCLUDE_DIR:PATH=$ISSM_DIR/externalpackages/meteoio/install/include \
+	-DMETEOIO_LIBRARY:PATH=$ISSM_DIR/externalpackages/meteoio/install/lib/libmeteoio.dylib\
+	.
+	#-DCMAKE_VERBOSE_MAKEFILE=true \
+
+#Compile
+if [ $# -eq 0 ]; then
+	make  all install
+else
+	make -j $1  all install
+fi
+
+#Build binary: 
+cd applications/snowpack
+cmake -DCMAKE_MODULE_PATH:PATH=/Users/larour/issm-uci/trunk-jpl/externalpackages/snowpack/src/tools/cmake/      -DMETEOIO_INCLUDE_DIR:PATH=$ISSM_DIR/externalpackages/meteoio/install/include  .
+
+#Compile
+if [ $# -eq 0 ]; then
+	make  all install
+else
+	make -j $1  all install
+fi
+
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/sqlite/install-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/sqlite/install-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/sqlite/install-static.sh	(revision 27955)
@@ -0,0 +1,43 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+VER="3300100"
+
+PREFIX="${ISSM_DIR}/externalpackages/sqlite/install" # Set to location where external package should be installed
+
+# Environment
+#
+export CFLAGS="-DSQLITE_ENABLE_COLUMN_METADATA=1"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/sqlite-autoconf-${VER}.tar.gz" "sqlite-autoconf-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf sqlite-autoconf-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv sqlite-autoconf-${VER}/* src
+rm -rf sqlite-autoconf-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--enable-fast-install \
+	--enable-shared=no
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/sqlite/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/sqlite/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/sqlite/install.sh	(revision 27955)
@@ -0,0 +1,43 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+VER="3300100"
+
+PREFIX="${ISSM_DIR}/externalpackages/sqlite/install" # Set to location where external package should be installed
+
+# Environment
+#
+export CFLAGS="-DSQLITE_ENABLE_COLUMN_METADATA=1"
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/sqlite-autoconf-${VER}.tar.gz" "sqlite-autoconf-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf sqlite-autoconf-${VER}.tar.gz
+
+# Move source into 'src' directory
+mv sqlite-autoconf-${VER}/* src
+rm -rf sqlite-autoconf-${VER}
+
+# Configure
+cd src
+./configure \
+	--prefix="${PREFIX}" \
+	--enable-fast-install \
+	--enable-static=no
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/starcluster/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/starcluster/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/starcluster/install.sh	(revision 27955)
@@ -0,0 +1,7 @@
+#/bin/bash
+
+git clone git://github.com/jtriley/StarCluster.git
+
+cd StarCluster
+python distribute_setup.py
+python setup.py install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/svn/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/svn/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/svn/install.sh	(revision 27955)
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf subversion-1.6.18
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/subversion-1.6.18.tar.gz' 'subversion-1.6.18.tar.gz'
+
+#Untar 
+tar -zxvf  subversion-1.6.18.tar.gz
+
+#Move subversion into src directory
+mv subversion-1.6.18/* src
+rm -rf subversion-1.6.18
+
+#Configure subversion
+cd src
+./configure --prefix="$ISSM_DIR/externalpackages/svn/install" \
+	--with-swig="$ISSM_DIR/externalpackages/swig/install"  \
+	PYTHON2="$ISSM_DIR/externalpackages/python/install/bin/python" \
+	--with-sqlite="$ISSM_DIR/externalpackages/sqlite/install"
+
+#Compile and install subversion
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/swig/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/swig/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/swig/install.sh	(revision 27955)
@@ -0,0 +1,37 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+rm -rf swig-2.0.4
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/swig-2.0.4.tar.gz' 'swig-2.0.4.tar.gz'
+
+#Untar and move python into install directory
+tar -zxvf  swig-2.0.4.tar.gz
+mv swig-2.0.4/* install
+rm -rf swig-2.0.4
+
+#Copy pcre prototype in include directory
+cd install 
+#cp $ISSM_DIR/externalpackages/pcre/install/pcre.h  ./Source/Include/
+#cp $ISSM_DIR/externalpackages/pcre/install/.libs/*  ./Source/Include/
+export CFLAGS="-I$ISSM_DIR/externalpackages/pcre/install"
+export LDFLAGS="-L$ISSM_DIR/externalpackages/pcre/install/.libs/"
+export LIBS="-lpcre"
+#Configure swig
+./configure \
+ --prefix="$ISSM_DIR/externalpackages/swig/install" \
+ --with-pcre-prefix="$ISSM_DIR/externalpackages/pcre/install" \
+ --with-pcre-exec-prefix="$ISSM_DIR/externalpackages/pcre/install" \
+ --with-python="$ISSM_DIR/externalpackages/python/install/bin/python"
+
+#Compile and install gdal
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/tcl/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/tcl/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/tcl/install.sh	(revision 27955)
@@ -0,0 +1,49 @@
+#!/bin/bash
+set -eu
+
+sudochoice=0;
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf tcl8.5.11
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/tcl8.5.11.tar.gz' 'tcl8.5.11.tar.gz'
+
+#Untar 
+tar -zxvf  tcl8.5.11.tar.gz
+
+#Move tcl into src directory
+mv tcl8.5.11/* src
+rm -rf tcl8.5.11
+
+#Configure tcl
+ver="8.4.12"
+
+cd src/unix
+
+#User mode: 
+if [[ $sudochoice == "0" ]]; 
+then 
+	./configure --prefix=$ISSM_DIR/externalpackages/tcl/install
+	if [ $# -eq 0 ]; then
+		make
+	else
+		make -j $1
+	fi
+	make install 
+fi
+
+#sudo mode: 
+if [[ $sudochoice == "1" ]]; 
+then
+	sudo ./configure 
+	if [ $# -eq 0 ]; then
+		sudo make
+	else
+		sudo make -j $1
+	fi
+	sudo make install 
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/tclx/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/tclx/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/tclx/install.sh	(revision 27955)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf tclx8.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/tclx8.4.tar.gz' 'tclx8.4.tar.gz'
+
+#Untar 
+tar -zxvf  tclx8.4.tar.gz
+
+#Move tclx into src directory
+mv tclx8.4/* src
+rm -rf tclx8.4
+
+#Configure tclx
+cd src
+./configure --prefix="$ISSM_DIR/externalpackages/tclx/install"  \
+			--exec-prefix="$ISSM_DIR/externalpackages/tclx/install"  \
+	        --with-tcl=$ISSM_DIR/externalpackages/tcl/install/lib
+
+#Compile and install tclx
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/tex2im/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/tex2im/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/tex2im/install.sh	(revision 27955)
@@ -0,0 +1,16 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/tex2im-1.8.tar.gz' 'tex2im-1.8.tar.gz'
+
+#Untar 
+tar -zxvf  tex2im-1.8.tar.gz
+
+#Move tex2im into src directory
+mv tex2im-1.8/tex2im install/
+rm -rf tex2im-1.8
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/tk/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/tk/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/tk/install.sh	(revision 27955)
@@ -0,0 +1,46 @@
+#!/bin/bash
+set -eu
+
+sudochoice=0;
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf tk8.5.12
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/tk8.5.12-src.tar.gz' 'tk8.5.12.tar.gz'
+
+#Untar 
+tar -zxvf  tk8.5.12.tar.gz
+
+#Move tk into src directory
+mv tk8.5.12/* src
+rm -rf tk8.5.12
+
+cd src/unix
+
+#User mode: 
+if [[ $sudochoice == "0" ]]; 
+then 
+	./configure --prefix=$ISSM_DIR/externalpackages/tk/install
+	if [ $# -eq 0 ]; then
+		make
+	else
+		make -j $1
+	fi
+	make install 
+fi
+
+#sudo mode: 
+if [[ $sudochoice == "1" ]]; 
+then
+	sudo ./configure 
+	if [ $# -eq 0 ]; then
+		sudo make
+	else
+		sudo make -j $1
+	fi
+	sudo make install 
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/topotoolbox/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/topotoolbox/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/topotoolbox/install.sh	(revision 27955)
@@ -0,0 +1,3 @@
+#!/bin/bash
+rm -rf install
+svn co https://github.com/wschwanghart/topotoolbox.git/trunk install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/altix64/configure.make
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/altix64/configure.make	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/altix64/configure.make	(revision 27955)
@@ -0,0 +1,4 @@
+CC=gcc
+CSWITCHES = $(CFLAGS) -DNO_TIMER -DLINUX -fPIC
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/android/configure.make
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/android/configure.make	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/android/configure.make	(revision 27955)
@@ -0,0 +1,18 @@
+# This makefile configures build process to cross-compile to the android platform.
+# The binary tools referenced below are specifically configured to target armeabi-v7a.
+# Furthermore, the compilers (which are simply wrappers around GNU GCC) are set to
+# produce binaries that are EABI compliant.
+#
+# Note that the AAPCS standard defines 'EABI' as a moniker used to specify
+# a _family_ of similar but distinct ABIs. Android follows the little-endian
+# ARM GNU/Linux ABI as documented in the following document:
+#
+# http://www.codesourcery.com/gnu_toolchains/arm/arm_gnu_linux_abi.pdf
+
+CC=${host_triplet}-gcc
+AR=${host_triplet}-ar
+RANLIB=${host_triplet}-ranlib
+CSWITCHES = $(CFLAGS) -DNO_TIMER 
+TRILIBDEFS = -DTRILIBRARY
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/ios/configure.make
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/ios/configure.make	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/ios/configure.make	(revision 27955)
@@ -0,0 +1,7 @@
+CC=${host_triplet}-clang
+AR=${host-triplet}-ar
+RANLIB=${host-triplet}-ranlib
+CSWITCHES = $(CFLAGS) -DNO_TIMER
+TRILIBDEFS = -DTRILIBRARY
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/javascript/configure.make
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/javascript/configure.make	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/javascript/configure.make	(revision 27955)
@@ -0,0 +1,5 @@
+CXX=em++
+CXXSWITCHES = $(CFLAGS) -DNO_TIMER -fPIC -DANSI_DECLARATORS -DTRILIBRARY 
+TRILIBDEFS = -DTRILIBRARY -DANSI_DECLARATORS
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/javascript/makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/javascript/makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/javascript/makefile	(revision 27955)
@@ -0,0 +1,32 @@
+#Adaptation of Triangle makefile to compile only the triangle.c file, 
+#into a standalone library that can then be used to compile mex modules
+
+include ./configure.make
+
+ifeq "$(origin CC)" "undefined"
+	CC = cc
+endif
+
+ifeq "$(origin AR)" "undefined"
+	AR = ar
+endif
+
+ifeq "$(origin RANLIB)" "undefined"
+	RANLIB = ranlib
+endif
+
+TRILIBDEFS = -DTRILIBRARY
+
+all: triangle.$(LIB_EXT)
+
+OBJECTS=triangle.$(OBJ_EXT)
+
+triangle.$(LIB_EXT): $(OBJECTS)
+	$(AR) cr  triangle.$(LIB_EXT) $(OBJECTS)
+	$(RANLIB) triangle.$(LIB_EXT)
+
+triangle.$(OBJ_EXT): triangle.c triangle.h
+	$(CXX) $(CXXSWITCHES) $(TRILIBDEFS) -c triangle.c
+
+clean: 
+	rm -rf *.$(LIB_EXT) *.$(OBJ_EXT) *.LIB *.LST *.$(OBJ_EXT)bj *.BAK
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/javascript/triangle.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/javascript/triangle.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/javascript/triangle.h	(revision 27955)
@@ -0,0 +1,296 @@
+/*****************************************************************************/
+/*                                                                           */
+/*  (triangle.h)                                                             */
+/*                                                                           */
+/*  Include file for programs that call Triangle.                            */
+/*                                                                           */
+/*  Accompanies Triangle Version 1.6                                         */
+/*  July 28, 2005                                                            */
+/*                                                                           */
+/*  Copyright 1996, 2005                                                     */
+/*  Jonathan Richard Shewchuk                                                */
+/*  2360 Woolsey #H                                                          */
+/*  Berkeley, California  94705-1927                                         */
+/*  jrs@cs.berkeley.edu                                                      */
+/*                                                                           */
+/*****************************************************************************/
+
+/*****************************************************************************/
+/*                                                                           */
+/*  How to call Triangle from another program                                */
+/*                                                                           */
+/*                                                                           */
+/*  If you haven't read Triangle's instructions (run "triangle -h" to read   */
+/*  them), you won't understand what follows.                                */
+/*                                                                           */
+/*  Triangle must be compiled into an object file (triangle.o) with the      */
+/*  TRILIBRARY symbol defined (generally by using the -DTRILIBRARY compiler  */
+/*  switch).  The makefile included with Triangle will do this for you if    */
+/*  you run "make trilibrary".  The resulting object file can be called via  */
+/*  the procedure triangulate().                                             */
+/*                                                                           */
+/*  If the size of the object file is important to you, you may wish to      */
+/*  generate a reduced version of triangle.o.  The REDUCED symbol gets rid   */
+/*  of all features that are primarily of research interest.  Specifically,  */
+/*  the -DREDUCED switch eliminates Triangle's -i, -F, -s, and -C switches.  */
+/*  The CDT_ONLY symbol gets rid of all meshing algorithms above and beyond  */
+/*  constrained Delaunay triangulation.  Specifically, the -DCDT_ONLY switch */
+/*  eliminates Triangle's -r, -q, -a, -u, -D, -Y, -S, and -s switches.       */
+/*                                                                           */
+/*  IMPORTANT:  These definitions (TRILIBRARY, REDUCED, CDT_ONLY) must be    */
+/*  made in the makefile or in triangle.c itself.  Putting these definitions */
+/*  in this file (triangle.h) will not create the desired effect.            */
+/*                                                                           */
+/*                                                                           */
+/*  The calling convention for triangulate() follows.                        */
+/*                                                                           */
+/*      void triangulate(triswitches, in, out, vorout)                       */
+/*      char *triswitches;                                                   */
+/*      struct triangulateio *in;                                            */
+/*      struct triangulateio *out;                                           */
+/*      struct triangulateio *vorout;                                        */
+/*                                                                           */
+/*  `triswitches' is a string containing the command line switches you wish  */
+/*  to invoke.  No initial dash is required.  Some suggestions:              */
+/*                                                                           */
+/*  - You'll probably find it convenient to use the `z' switch so that       */
+/*    points (and other items) are numbered from zero.  This simplifies      */
+/*    indexing, because the first item of any type always starts at index    */
+/*    [0] of the corresponding array, whether that item's number is zero or  */
+/*    one.                                                                   */
+/*  - You'll probably want to use the `Q' (quiet) switch in your final code, */
+/*    but you can take advantage of Triangle's printed output (including the */
+/*    `V' switch) while debugging.                                           */
+/*  - If you are not using the `q', `a', `u', `D', `j', or `s' switches,     */
+/*    then the output points will be identical to the input points, except   */
+/*    possibly for the boundary markers.  If you don't need the boundary     */
+/*    markers, you should use the `N' (no nodes output) switch to save       */
+/*    memory.  (If you do need boundary markers, but need to save memory, a  */
+/*    good nasty trick is to set out->pointlist equal to in->pointlist       */
+/*    before calling triangulate(), so that Triangle overwrites the input    */
+/*    points with identical copies.)                                         */
+/*  - The `I' (no iteration numbers) and `g' (.off file output) switches     */
+/*    have no effect when Triangle is compiled with TRILIBRARY defined.      */
+/*                                                                           */
+/*  `in', `out', and `vorout' are descriptions of the input, the output,     */
+/*  and the Voronoi output.  If the `v' (Voronoi output) switch is not used, */
+/*  `vorout' may be NULL.  `in' and `out' may never be NULL.                 */
+/*                                                                           */
+/*  Certain fields of the input and output structures must be initialized,   */
+/*  as described below.                                                      */
+/*                                                                           */
+/*****************************************************************************/
+
+/*****************************************************************************/
+/*                                                                           */
+/*  The `triangulateio' structure.                                           */
+/*                                                                           */
+/*  Used to pass data into and out of the triangulate() procedure.           */
+/*                                                                           */
+/*                                                                           */
+/*  Arrays are used to store points, triangles, markers, and so forth.  In   */
+/*  all cases, the first item in any array is stored starting at index [0].  */
+/*  However, that item is item number `1' unless the `z' switch is used, in  */
+/*  which case it is item number `0'.  Hence, you may find it easier to      */
+/*  index points (and triangles in the neighbor list) if you use the `z'     */
+/*  switch.  Unless, of course, you're calling Triangle from a Fortran       */
+/*  program.                                                                 */
+/*                                                                           */
+/*  Description of fields (except the `numberof' fields, which are obvious): */
+/*                                                                           */
+/*  `pointlist':  An array of point coordinates.  The first point's x        */
+/*    coordinate is at index [0] and its y coordinate at index [1], followed */
+/*    by the coordinates of the remaining points.  Each point occupies two   */
+/*    REALs.                                                                 */
+/*  `pointattributelist':  An array of point attributes.  Each point's       */
+/*    attributes occupy `numberofpointattributes' REALs.                     */
+/*  `pointmarkerlist':  An array of point markers; one int per point.        */
+/*                                                                           */
+/*  `trianglelist':  An array of triangle corners.  The first triangle's     */
+/*    first corner is at index [0], followed by its other two corners in     */
+/*    counterclockwise order, followed by any other nodes if the triangle    */
+/*    represents a nonlinear element.  Each triangle occupies                */
+/*    `numberofcorners' ints.                                                */
+/*  `triangleattributelist':  An array of triangle attributes.  Each         */
+/*    triangle's attributes occupy `numberoftriangleattributes' REALs.       */
+/*  `trianglearealist':  An array of triangle area constraints; one REAL per */
+/*    triangle.  Input only.                                                 */
+/*  `neighborlist':  An array of triangle neighbors; three ints per          */
+/*    triangle.  Output only.                                                */
+/*                                                                           */
+/*  `segmentlist':  An array of segment endpoints.  The first segment's      */
+/*    endpoints are at indices [0] and [1], followed by the remaining        */
+/*    segments.  Two ints per segment.                                       */
+/*  `segmentmarkerlist':  An array of segment markers; one int per segment.  */
+/*                                                                           */
+/*  `holelist':  An array of holes.  The first hole's x and y coordinates    */
+/*    are at indices [0] and [1], followed by the remaining holes.  Two      */
+/*    REALs per hole.  Input only, although the pointer is copied to the     */
+/*    output structure for your convenience.                                 */
+/*                                                                           */
+/*  `regionlist':  An array of regional attributes and area constraints.     */
+/*    The first constraint's x and y coordinates are at indices [0] and [1], */
+/*    followed by the regional attribute at index [2], followed by the       */
+/*    maximum area at index [3], followed by the remaining area constraints. */
+/*    Four REALs per area constraint.  Note that each regional attribute is  */
+/*    used only if you select the `A' switch, and each area constraint is    */
+/*    used only if you select the `a' switch (with no number following), but */
+/*    omitting one of these switches does not change the memory layout.      */
+/*    Input only, although the pointer is copied to the output structure for */
+/*    your convenience.                                                      */
+/*                                                                           */
+/*  `edgelist':  An array of edge endpoints.  The first edge's endpoints are */
+/*    at indices [0] and [1], followed by the remaining edges.  Two ints per */
+/*    edge.  Output only.                                                    */
+/*  `edgemarkerlist':  An array of edge markers; one int per edge.  Output   */
+/*    only.                                                                  */
+/*  `normlist':  An array of normal vectors, used for infinite rays in       */
+/*    Voronoi diagrams.  The first normal vector's x and y magnitudes are    */
+/*    at indices [0] and [1], followed by the remaining vectors.  For each   */
+/*    finite edge in a Voronoi diagram, the normal vector written is the     */
+/*    zero vector.  Two REALs per edge.  Output only.                        */
+/*                                                                           */
+/*                                                                           */
+/*  Any input fields that Triangle will examine must be initialized.         */
+/*  Furthermore, for each output array that Triangle will write to, you      */
+/*  must either provide space by setting the appropriate pointer to point    */
+/*  to the space you want the data written to, or you must initialize the    */
+/*  pointer to NULL, which tells Triangle to allocate space for the results. */
+/*  The latter option is preferable, because Triangle always knows exactly   */
+/*  how much space to allocate.  The former option is provided mainly for    */
+/*  people who need to call Triangle from Fortran code, though it also makes */
+/*  possible some nasty space-saving tricks, like writing the output to the  */
+/*  same arrays as the input.                                                */
+/*                                                                           */
+/*  Triangle will not free() any input or output arrays, including those it  */
+/*  allocates itself; that's up to you.  You should free arrays allocated by */
+/*  Triangle by calling the trifree() procedure defined below.  (By default, */
+/*  trifree() just calls the standard free() library procedure, but          */
+/*  applications that call triangulate() may replace trimalloc() and         */
+/*  trifree() in triangle.c to use specialized memory allocators.)           */
+/*                                                                           */
+/*  Here's a guide to help you decide which fields you must initialize       */
+/*  before you call triangulate().                                           */
+/*                                                                           */
+/*  `in':                                                                    */
+/*                                                                           */
+/*    - `pointlist' must always point to a list of points; `numberofpoints'  */
+/*      and `numberofpointattributes' must be properly set.                  */
+/*      `pointmarkerlist' must either be set to NULL (in which case all      */
+/*      markers default to zero), or must point to a list of markers.  If    */
+/*      `numberofpointattributes' is not zero, `pointattributelist' must     */
+/*      point to a list of point attributes.                                 */
+/*    - If the `r' switch is used, `trianglelist' must point to a list of    */
+/*      triangles, and `numberoftriangles', `numberofcorners', and           */
+/*      `numberoftriangleattributes' must be properly set.  If               */
+/*      `numberoftriangleattributes' is not zero, `triangleattributelist'    */
+/*      must point to a list of triangle attributes.  If the `a' switch is   */
+/*      used (with no number following), `trianglearealist' must point to a  */
+/*      list of triangle area constraints.  `neighborlist' may be ignored.   */
+/*    - If the `p' switch is used, `segmentlist' must point to a list of     */
+/*      segments, `numberofsegments' must be properly set, and               */
+/*      `segmentmarkerlist' must either be set to NULL (in which case all    */
+/*      markers default to zero), or must point to a list of markers.        */
+/*    - If the `p' switch is used without the `r' switch, then               */
+/*      `numberofholes' and `numberofregions' must be properly set.  If      */
+/*      `numberofholes' is not zero, `holelist' must point to a list of      */
+/*      holes.  If `numberofregions' is not zero, `regionlist' must point to */
+/*      a list of region constraints.                                        */
+/*    - If the `p' switch is used, `holelist', `numberofholes',              */
+/*      `regionlist', and `numberofregions' is copied to `out'.  (You can    */
+/*      nonetheless get away with not initializing them if the `r' switch is */
+/*      used.)                                                               */
+/*    - `edgelist', `edgemarkerlist', `normlist', and `numberofedges' may be */
+/*      ignored.                                                             */
+/*                                                                           */
+/*  `out':                                                                   */
+/*                                                                           */
+/*    - `pointlist' must be initialized (NULL or pointing to memory) unless  */
+/*      the `N' switch is used.  `pointmarkerlist' must be initialized       */
+/*      unless the `N' or `B' switch is used.  If `N' is not used and        */
+/*      `in->numberofpointattributes' is not zero, `pointattributelist' must */
+/*      be initialized.                                                      */
+/*    - `trianglelist' must be initialized unless the `E' switch is used.    */
+/*      `neighborlist' must be initialized if the `n' switch is used.  If    */
+/*      the `E' switch is not used and (`in->numberofelementattributes' is   */
+/*      not zero or the `A' switch is used), `elementattributelist' must be  */
+/*      initialized.  `trianglearealist' may be ignored.                     */
+/*    - `segmentlist' must be initialized if the `p' or `c' switch is used,  */
+/*      and the `P' switch is not used.  `segmentmarkerlist' must also be    */
+/*      initialized under these circumstances unless the `B' switch is used. */
+/*    - `edgelist' must be initialized if the `e' switch is used.            */
+/*      `edgemarkerlist' must be initialized if the `e' switch is used and   */
+/*      the `B' switch is not.                                               */
+/*    - `holelist', `regionlist', `normlist', and all scalars may be ignored.*/
+/*                                                                           */
+/*  `vorout' (only needed if `v' switch is used):                            */
+/*                                                                           */
+/*    - `pointlist' must be initialized.  If `in->numberofpointattributes'   */
+/*      is not zero, `pointattributelist' must be initialized.               */
+/*      `pointmarkerlist' may be ignored.                                    */
+/*    - `edgelist' and `normlist' must both be initialized.                  */
+/*      `edgemarkerlist' may be ignored.                                     */
+/*    - Everything else may be ignored.                                      */
+/*                                                                           */
+/*  After a call to triangulate(), the valid fields of `out' and `vorout'    */
+/*  will depend, in an obvious way, on the choice of switches used.  Note    */
+/*  that when the `p' switch is used, the pointers `holelist' and            */
+/*  `regionlist' are copied from `in' to `out', but no new space is          */
+/*  allocated; be careful that you don't free() the same array twice.  On    */
+/*  the other hand, Triangle will never copy the `pointlist' pointer (or any */
+/*  others); new space is allocated for `out->pointlist', or if the `N'      */
+/*  switch is used, `out->pointlist' remains uninitialized.                  */
+/*                                                                           */
+/*  All of the meaningful `numberof' fields will be properly set; for        */
+/*  instance, `numberofedges' will represent the number of edges in the      */
+/*  triangulation whether or not the edges were written.  If segments are    */
+/*  not used, `numberofsegments' will indicate the number of boundary edges. */
+/*                                                                           */
+/*****************************************************************************/
+
+/*Patch for ISSM*/
+#ifndef REAL
+typedef double REAL;
+typedef void VOID;
+#endif
+/*End patch*/
+
+struct triangulateio {
+  REAL *pointlist;                                               /* In / out */
+  REAL *pointattributelist;                                      /* In / out */
+  int *pointmarkerlist;                                          /* In / out */
+  int numberofpoints;                                            /* In / out */
+  int numberofpointattributes;                                   /* In / out */
+
+  int *trianglelist;                                             /* In / out */
+  REAL *triangleattributelist;                                   /* In / out */
+  REAL *trianglearealist;                                         /* In only */
+  int *neighborlist;                                             /* Out only */
+  int numberoftriangles;                                         /* In / out */
+  int numberofcorners;                                           /* In / out */
+  int numberoftriangleattributes;                                /* In / out */
+
+  int *segmentlist;                                              /* In / out */
+  int *segmentmarkerlist;                                        /* In / out */
+  int numberofsegments;                                          /* In / out */
+
+  REAL *holelist;                        /* In / pointer to array copied out */
+  int numberofholes;                                      /* In / copied out */
+
+  REAL *regionlist;                      /* In / pointer to array copied out */
+  int numberofregions;                                    /* In / copied out */
+
+  int *edgelist;                                                 /* Out only */
+  int *edgemarkerlist;            /* Not used with Voronoi diagram; out only */
+  REAL *normlist;                /* Used only with Voronoi diagram; out only */
+  int numberofedges;                                             /* Out only */
+};
+
+#ifdef ANSI_DECLARATORS
+void triangulate(char *, struct triangulateio *, struct triangulateio *,
+                 struct triangulateio *);
+void trifree(VOID *memptr);
+#else /* not ANSI_DECLARATORS */
+void triangulate();
+void trifree();
+#endif /* not ANSI_DECLARATORS */
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/libtool/Makefile.am
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/libtool/Makefile.am	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/libtool/Makefile.am	(revision 27955)
@@ -0,0 +1,4 @@
+EXTRA_DIST = m4
+SUBDIRS = src
+
+ACLOCAL_AMFLAGS = -I m4
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/libtool/configure.ac
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/libtool/configure.ac	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/libtool/configure.ac	(revision 27955)
@@ -0,0 +1,53 @@
+# Process this file with autoconf to produce a configure script.
+
+#AUTOCONF
+AC_INIT([Triangle],[1.0]) #Initializing configure
+AC_CONFIG_AUX_DIR([./aux-config])         #Put config files in aux-config
+AC_CONFIG_MACRO_DIR([m4])                 #m4 macros are located in m4
+AC_CANONICAL_TARGET                       #Determine the system type
+AC_CANONICAL_HOST                      #Determine the system type
+
+case ${host_os} in
+	*linux* )
+		CPP_LINUX='-DLINUX'
+		;;
+	*)
+		CPP_LINUX=''
+esac
+
+AC_SUBST(CPP_LINUX)
+
+AC_ARG_ENABLE([executables],                                                 dnl feature
+   AS_HELP_STRING([--enable-executables], [build executables]),              dnl help string
+   [enable_executables=$enableval],                                          dnl action if given
+   [enable_executables=yes])                                                 dnl action if not given
+AC_MSG_CHECKING(for executables)
+AM_CONDITIONAL([EXECUTABLES], [test x$enable_executables = xyes])
+AC_MSG_RESULT($enable_executables)
+
+#Compilers
+AC_PROG_CC([icc cccl cl icl gcc])
+AC_PROG_CPP
+AC_PROG_CXX([icpc cccl cl icl g++])
+
+#Libraries and linking
+AC_PATH_XTRA      #figure out X library and include paths
+
+#AUTOMAKE
+#Initialize automake and declare foreign so that we don't need a ChangeLog, INSTALL, etc
+AM_INIT_AUTOMAKE([foreign])
+AC_CONFIG_HEADERS([./config.h])   #Config file must be config.h
+AM_SILENT_RULES([yes])           #Do not show compilation command by default
+AM_PROG_AR
+
+#Libtool
+LT_INIT
+
+#List all Makefiles
+AC_CONFIG_FILES([
+					  Makefile
+					  src/Makefile
+					  ])
+
+#End of configure.ac
+AC_OUTPUT
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/libtool/src/Makefile.am
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/libtool/src/Makefile.am	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/libtool/src/Makefile.am	(revision 27955)
@@ -0,0 +1,22 @@
+ALLCXXFLAGS= -fPIC $(CXXFLAGS) $(CXXOPTFLAGS) 
+
+AM_CPPFLAGS =  -DNO_TIMER ${CPP_LINUX} -DTRILIBRARY
+
+lib_LTLIBRARIES = libtriangle.la
+
+if EXECUTABLES
+bin_PROGRAMS = tricall showme
+endif 
+
+include_HEADERS= ./triangle.h
+
+libtriangle_la_SOURCES = ./triangle.c
+libtriangle_la_LIBADD = -lm
+
+if EXECUTABLES
+tricall_SOURCES = ./tricall.c
+tricall_LDADD = ./libtriangle.la
+
+showme_SOURCES = ./showme.c
+showme_LDADD = -lX11
+endif
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/linux/configure.make
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/linux/configure.make	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/linux/configure.make	(revision 27955)
@@ -0,0 +1,6 @@
+CC=gcc
+CSWITCHES= $(CFLAGS) -DNO_TIMER -fpic
+TRILIBDEFS= -DTRILIBRARY
+STATIC_LIB_EXT=a
+SHARED_LIB_EXT=so
+OBJ_EXT=o
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/linux64/configure.make
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/linux64/configure.make	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/linux64/configure.make	(revision 27955)
@@ -0,0 +1,4 @@
+CC=gcc
+CSWITCHES = $(CFLAGS) -DNO_TIMER -DLINUX -fPIC
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/mac/configure.make
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/mac/configure.make	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/mac/configure.make	(revision 27955)
@@ -0,0 +1,6 @@
+CC=gcc
+CSWITCHES= $(CFLAGS) -DNO_TIMER -fpic
+TRILIBDEFS= -DTRILIBRARY
+STATIC_LIB_EXT=a
+SHARED_LIB_EXT=dylib
+OBJ_EXT=o
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/macosx32/configure.make
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/macosx32/configure.make	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/macosx32/configure.make	(revision 27955)
@@ -0,0 +1,5 @@
+CC=gcc -arch i386
+CSWITCHES = $(CFLAGS) -DNO_TIMER -fPIC 
+TRILIBDEFS = -DTRILIBRARY
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/macosx64/configure.make
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/macosx64/configure.make	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/macosx64/configure.make	(revision 27955)
@@ -0,0 +1,5 @@
+CC=gcc -arch x86_64
+CSWITCHES = $(CFLAGS) -DNO_TIMER -fPIC
+TRILIBDEFS = -DTRILIBRARY
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/macosx64_snowleopard/configure.make
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/macosx64_snowleopard/configure.make	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/macosx64_snowleopard/configure.make	(revision 27955)
@@ -0,0 +1,5 @@
+CC=gcc 
+CSWITCHES = $(CFLAGS) -DNO_TIMER -fPIC
+TRILIBDEFS = -DTRILIBRARY
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/makefile	(revision 27955)
@@ -0,0 +1,46 @@
+include ./configure.make
+
+ifeq "$(origin CC)" "undefined"
+	CC = cc
+endif
+
+ifeq "$(origin AR)" "undefined"
+	AR = ar
+endif
+
+ifeq "$(origin RANLIB)" "undefined"
+	RANLIB = ranlib
+endif
+
+SOURCES=triangle.c triangle.h
+OBJECTS=triangle.$(OBJ_EXT)
+
+all: libtriangle.$(STATIC_LIB_EXT) libtriangle.$(SHARED_LIB_EXT)
+
+objects: $(OBJECTS)
+
+shared: libtriangle.$(SHARED_LIB_EXT)
+
+static: libtriangle.$(STATIC_LIB_EXT)
+
+triangle.$(OBJ_EXT): $(SOURCES)
+	$(CC) $(CSWITCHES) $(TRILIBDEFS) -c triangle.c
+
+libtriangle.a: $(OBJECTS)
+	$(AR) cr $@ $(OBJECTS)
+	$(RANLIB) $@
+
+libtriangle.dll: $(SOURCES)
+	$(CC) $(CSWITCHES) $(TRILIBDEFS) -shared -o $@ triangle.c
+
+libtriangle.dylib: $(OBJECTS)
+	$(CC) $(CSWITCHES) $(TRILIBDEFS) -dynamiclib -install_name ${PREFIX}/lib/$@ -o $@ triangle.c
+
+libtriangle.lib: $(OBJECTS)
+	lib -out:libtriangle.$(STATIC_LIB_EXT) $(OBJECTS)
+
+libtriangle.so: $(SOURCES)
+	$(CC) $(CSWITCHES) $(TRILIBDEFS) -shared -o $@ triangle.c
+
+clean:
+	rm -rf *.$(LIB_EXT) *.$(OBJ_EXT) *.LIB *.LST *.$(OBJ_EXT)bj *.BAK
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/pleiades/configure.make
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/pleiades/configure.make	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/pleiades/configure.make	(revision 27955)
@@ -0,0 +1,4 @@
+CC=gcc
+CSWITCHES = $(CFLAGS) -DNO_TIMER -DLINUX -fPIC
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/triangle.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/triangle.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/triangle.h	(revision 27955)
@@ -0,0 +1,296 @@
+/*****************************************************************************/
+/*                                                                           */
+/*  (triangle.h)                                                             */
+/*                                                                           */
+/*  Include file for programs that call Triangle.                            */
+/*                                                                           */
+/*  Accompanies Triangle Version 1.6                                         */
+/*  July 28, 2005                                                            */
+/*                                                                           */
+/*  Copyright 1996, 2005                                                     */
+/*  Jonathan Richard Shewchuk                                                */
+/*  2360 Woolsey #H                                                          */
+/*  Berkeley, California  94705-1927                                         */
+/*  jrs@cs.berkeley.edu                                                      */
+/*                                                                           */
+/*****************************************************************************/
+
+/*****************************************************************************/
+/*                                                                           */
+/*  How to call Triangle from another program                                */
+/*                                                                           */
+/*                                                                           */
+/*  If you haven't read Triangle's instructions (run "triangle -h" to read   */
+/*  them), you won't understand what follows.                                */
+/*                                                                           */
+/*  Triangle must be compiled into an object file (triangle.o) with the      */
+/*  TRILIBRARY symbol defined (generally by using the -DTRILIBRARY compiler  */
+/*  switch).  The makefile included with Triangle will do this for you if    */
+/*  you run "make trilibrary".  The resulting object file can be called via  */
+/*  the procedure triangulate().                                             */
+/*                                                                           */
+/*  If the size of the object file is important to you, you may wish to      */
+/*  generate a reduced version of triangle.o.  The REDUCED symbol gets rid   */
+/*  of all features that are primarily of research interest.  Specifically,  */
+/*  the -DREDUCED switch eliminates Triangle's -i, -F, -s, and -C switches.  */
+/*  The CDT_ONLY symbol gets rid of all meshing algorithms above and beyond  */
+/*  constrained Delaunay triangulation.  Specifically, the -DCDT_ONLY switch */
+/*  eliminates Triangle's -r, -q, -a, -u, -D, -Y, -S, and -s switches.       */
+/*                                                                           */
+/*  IMPORTANT:  These definitions (TRILIBRARY, REDUCED, CDT_ONLY) must be    */
+/*  made in the makefile or in triangle.c itself.  Putting these definitions */
+/*  in this file (triangle.h) will not create the desired effect.            */
+/*                                                                           */
+/*                                                                           */
+/*  The calling convention for triangulate() follows.                        */
+/*                                                                           */
+/*      void triangulate(triswitches, in, out, vorout)                       */
+/*      char *triswitches;                                                   */
+/*      struct triangulateio *in;                                            */
+/*      struct triangulateio *out;                                           */
+/*      struct triangulateio *vorout;                                        */
+/*                                                                           */
+/*  `triswitches' is a string containing the command line switches you wish  */
+/*  to invoke.  No initial dash is required.  Some suggestions:              */
+/*                                                                           */
+/*  - You'll probably find it convenient to use the `z' switch so that       */
+/*    points (and other items) are numbered from zero.  This simplifies      */
+/*    indexing, because the first item of any type always starts at index    */
+/*    [0] of the corresponding array, whether that item's number is zero or  */
+/*    one.                                                                   */
+/*  - You'll probably want to use the `Q' (quiet) switch in your final code, */
+/*    but you can take advantage of Triangle's printed output (including the */
+/*    `V' switch) while debugging.                                           */
+/*  - If you are not using the `q', `a', `u', `D', `j', or `s' switches,     */
+/*    then the output points will be identical to the input points, except   */
+/*    possibly for the boundary markers.  If you don't need the boundary     */
+/*    markers, you should use the `N' (no nodes output) switch to save       */
+/*    memory.  (If you do need boundary markers, but need to save memory, a  */
+/*    good nasty trick is to set out->pointlist equal to in->pointlist       */
+/*    before calling triangulate(), so that Triangle overwrites the input    */
+/*    points with identical copies.)                                         */
+/*  - The `I' (no iteration numbers) and `g' (.off file output) switches     */
+/*    have no effect when Triangle is compiled with TRILIBRARY defined.      */
+/*                                                                           */
+/*  `in', `out', and `vorout' are descriptions of the input, the output,     */
+/*  and the Voronoi output.  If the `v' (Voronoi output) switch is not used, */
+/*  `vorout' may be NULL.  `in' and `out' may never be NULL.                 */
+/*                                                                           */
+/*  Certain fields of the input and output structures must be initialized,   */
+/*  as described below.                                                      */
+/*                                                                           */
+/*****************************************************************************/
+
+/*****************************************************************************/
+/*                                                                           */
+/*  The `triangulateio' structure.                                           */
+/*                                                                           */
+/*  Used to pass data into and out of the triangulate() procedure.           */
+/*                                                                           */
+/*                                                                           */
+/*  Arrays are used to store points, triangles, markers, and so forth.  In   */
+/*  all cases, the first item in any array is stored starting at index [0].  */
+/*  However, that item is item number `1' unless the `z' switch is used, in  */
+/*  which case it is item number `0'.  Hence, you may find it easier to      */
+/*  index points (and triangles in the neighbor list) if you use the `z'     */
+/*  switch.  Unless, of course, you're calling Triangle from a Fortran       */
+/*  program.                                                                 */
+/*                                                                           */
+/*  Description of fields (except the `numberof' fields, which are obvious): */
+/*                                                                           */
+/*  `pointlist':  An array of point coordinates.  The first point's x        */
+/*    coordinate is at index [0] and its y coordinate at index [1], followed */
+/*    by the coordinates of the remaining points.  Each point occupies two   */
+/*    REALs.                                                                 */
+/*  `pointattributelist':  An array of point attributes.  Each point's       */
+/*    attributes occupy `numberofpointattributes' REALs.                     */
+/*  `pointmarkerlist':  An array of point markers; one int per point.        */
+/*                                                                           */
+/*  `trianglelist':  An array of triangle corners.  The first triangle's     */
+/*    first corner is at index [0], followed by its other two corners in     */
+/*    counterclockwise order, followed by any other nodes if the triangle    */
+/*    represents a nonlinear element.  Each triangle occupies                */
+/*    `numberofcorners' ints.                                                */
+/*  `triangleattributelist':  An array of triangle attributes.  Each         */
+/*    triangle's attributes occupy `numberoftriangleattributes' REALs.       */
+/*  `trianglearealist':  An array of triangle area constraints; one REAL per */
+/*    triangle.  Input only.                                                 */
+/*  `neighborlist':  An array of triangle neighbors; three ints per          */
+/*    triangle.  Output only.                                                */
+/*                                                                           */
+/*  `segmentlist':  An array of segment endpoints.  The first segment's      */
+/*    endpoints are at indices [0] and [1], followed by the remaining        */
+/*    segments.  Two ints per segment.                                       */
+/*  `segmentmarkerlist':  An array of segment markers; one int per segment.  */
+/*                                                                           */
+/*  `holelist':  An array of holes.  The first hole's x and y coordinates    */
+/*    are at indices [0] and [1], followed by the remaining holes.  Two      */
+/*    REALs per hole.  Input only, although the pointer is copied to the     */
+/*    output structure for your convenience.                                 */
+/*                                                                           */
+/*  `regionlist':  An array of regional attributes and area constraints.     */
+/*    The first constraint's x and y coordinates are at indices [0] and [1], */
+/*    followed by the regional attribute at index [2], followed by the       */
+/*    maximum area at index [3], followed by the remaining area constraints. */
+/*    Four REALs per area constraint.  Note that each regional attribute is  */
+/*    used only if you select the `A' switch, and each area constraint is    */
+/*    used only if you select the `a' switch (with no number following), but */
+/*    omitting one of these switches does not change the memory layout.      */
+/*    Input only, although the pointer is copied to the output structure for */
+/*    your convenience.                                                      */
+/*                                                                           */
+/*  `edgelist':  An array of edge endpoints.  The first edge's endpoints are */
+/*    at indices [0] and [1], followed by the remaining edges.  Two ints per */
+/*    edge.  Output only.                                                    */
+/*  `edgemarkerlist':  An array of edge markers; one int per edge.  Output   */
+/*    only.                                                                  */
+/*  `normlist':  An array of normal vectors, used for infinite rays in       */
+/*    Voronoi diagrams.  The first normal vector's x and y magnitudes are    */
+/*    at indices [0] and [1], followed by the remaining vectors.  For each   */
+/*    finite edge in a Voronoi diagram, the normal vector written is the     */
+/*    zero vector.  Two REALs per edge.  Output only.                        */
+/*                                                                           */
+/*                                                                           */
+/*  Any input fields that Triangle will examine must be initialized.         */
+/*  Furthermore, for each output array that Triangle will write to, you      */
+/*  must either provide space by setting the appropriate pointer to point    */
+/*  to the space you want the data written to, or you must initialize the    */
+/*  pointer to NULL, which tells Triangle to allocate space for the results. */
+/*  The latter option is preferable, because Triangle always knows exactly   */
+/*  how much space to allocate.  The former option is provided mainly for    */
+/*  people who need to call Triangle from Fortran code, though it also makes */
+/*  possible some nasty space-saving tricks, like writing the output to the  */
+/*  same arrays as the input.                                                */
+/*                                                                           */
+/*  Triangle will not free() any input or output arrays, including those it  */
+/*  allocates itself; that's up to you.  You should free arrays allocated by */
+/*  Triangle by calling the trifree() procedure defined below.  (By default, */
+/*  trifree() just calls the standard free() library procedure, but          */
+/*  applications that call triangulate() may replace trimalloc() and         */
+/*  trifree() in triangle.c to use specialized memory allocators.)           */
+/*                                                                           */
+/*  Here's a guide to help you decide which fields you must initialize       */
+/*  before you call triangulate().                                           */
+/*                                                                           */
+/*  `in':                                                                    */
+/*                                                                           */
+/*    - `pointlist' must always point to a list of points; `numberofpoints'  */
+/*      and `numberofpointattributes' must be properly set.                  */
+/*      `pointmarkerlist' must either be set to NULL (in which case all      */
+/*      markers default to zero), or must point to a list of markers.  If    */
+/*      `numberofpointattributes' is not zero, `pointattributelist' must     */
+/*      point to a list of point attributes.                                 */
+/*    - If the `r' switch is used, `trianglelist' must point to a list of    */
+/*      triangles, and `numberoftriangles', `numberofcorners', and           */
+/*      `numberoftriangleattributes' must be properly set.  If               */
+/*      `numberoftriangleattributes' is not zero, `triangleattributelist'    */
+/*      must point to a list of triangle attributes.  If the `a' switch is   */
+/*      used (with no number following), `trianglearealist' must point to a  */
+/*      list of triangle area constraints.  `neighborlist' may be ignored.   */
+/*    - If the `p' switch is used, `segmentlist' must point to a list of     */
+/*      segments, `numberofsegments' must be properly set, and               */
+/*      `segmentmarkerlist' must either be set to NULL (in which case all    */
+/*      markers default to zero), or must point to a list of markers.        */
+/*    - If the `p' switch is used without the `r' switch, then               */
+/*      `numberofholes' and `numberofregions' must be properly set.  If      */
+/*      `numberofholes' is not zero, `holelist' must point to a list of      */
+/*      holes.  If `numberofregions' is not zero, `regionlist' must point to */
+/*      a list of region constraints.                                        */
+/*    - If the `p' switch is used, `holelist', `numberofholes',              */
+/*      `regionlist', and `numberofregions' is copied to `out'.  (You can    */
+/*      nonetheless get away with not initializing them if the `r' switch is */
+/*      used.)                                                               */
+/*    - `edgelist', `edgemarkerlist', `normlist', and `numberofedges' may be */
+/*      ignored.                                                             */
+/*                                                                           */
+/*  `out':                                                                   */
+/*                                                                           */
+/*    - `pointlist' must be initialized (NULL or pointing to memory) unless  */
+/*      the `N' switch is used.  `pointmarkerlist' must be initialized       */
+/*      unless the `N' or `B' switch is used.  If `N' is not used and        */
+/*      `in->numberofpointattributes' is not zero, `pointattributelist' must */
+/*      be initialized.                                                      */
+/*    - `trianglelist' must be initialized unless the `E' switch is used.    */
+/*      `neighborlist' must be initialized if the `n' switch is used.  If    */
+/*      the `E' switch is not used and (`in->numberofelementattributes' is   */
+/*      not zero or the `A' switch is used), `elementattributelist' must be  */
+/*      initialized.  `trianglearealist' may be ignored.                     */
+/*    - `segmentlist' must be initialized if the `p' or `c' switch is used,  */
+/*      and the `P' switch is not used.  `segmentmarkerlist' must also be    */
+/*      initialized under these circumstances unless the `B' switch is used. */
+/*    - `edgelist' must be initialized if the `e' switch is used.            */
+/*      `edgemarkerlist' must be initialized if the `e' switch is used and   */
+/*      the `B' switch is not.                                               */
+/*    - `holelist', `regionlist', `normlist', and all scalars may be ignored.*/
+/*                                                                           */
+/*  `vorout' (only needed if `v' switch is used):                            */
+/*                                                                           */
+/*    - `pointlist' must be initialized.  If `in->numberofpointattributes'   */
+/*      is not zero, `pointattributelist' must be initialized.               */
+/*      `pointmarkerlist' may be ignored.                                    */
+/*    - `edgelist' and `normlist' must both be initialized.                  */
+/*      `edgemarkerlist' may be ignored.                                     */
+/*    - Everything else may be ignored.                                      */
+/*                                                                           */
+/*  After a call to triangulate(), the valid fields of `out' and `vorout'    */
+/*  will depend, in an obvious way, on the choice of switches used.  Note    */
+/*  that when the `p' switch is used, the pointers `holelist' and            */
+/*  `regionlist' are copied from `in' to `out', but no new space is          */
+/*  allocated; be careful that you don't free() the same array twice.  On    */
+/*  the other hand, Triangle will never copy the `pointlist' pointer (or any */
+/*  others); new space is allocated for `out->pointlist', or if the `N'      */
+/*  switch is used, `out->pointlist' remains uninitialized.                  */
+/*                                                                           */
+/*  All of the meaningful `numberof' fields will be properly set; for        */
+/*  instance, `numberofedges' will represent the number of edges in the      */
+/*  triangulation whether or not the edges were written.  If segments are    */
+/*  not used, `numberofsegments' will indicate the number of boundary edges. */
+/*                                                                           */
+/*****************************************************************************/
+
+/*Patch for ISSM*/
+#ifndef REAL
+typedef double REAL;
+typedef void VOID;
+#endif
+/*End patch*/
+
+struct triangulateio {
+  REAL *pointlist;                                               /* In / out */
+  REAL *pointattributelist;                                      /* In / out */
+  int *pointmarkerlist;                                          /* In / out */
+  int numberofpoints;                                            /* In / out */
+  int numberofpointattributes;                                   /* In / out */
+
+  int *trianglelist;                                             /* In / out */
+  REAL *triangleattributelist;                                   /* In / out */
+  REAL *trianglearealist;                                         /* In only */
+  int *neighborlist;                                             /* Out only */
+  int numberoftriangles;                                         /* In / out */
+  int numberofcorners;                                           /* In / out */
+  int numberoftriangleattributes;                                /* In / out */
+
+  int *segmentlist;                                              /* In / out */
+  int *segmentmarkerlist;                                        /* In / out */
+  int numberofsegments;                                          /* In / out */
+
+  REAL *holelist;                        /* In / pointer to array copied out */
+  int numberofholes;                                      /* In / copied out */
+
+  REAL *regionlist;                      /* In / pointer to array copied out */
+  int numberofregions;                                    /* In / copied out */
+
+  int *edgelist;                                                 /* Out only */
+  int *edgemarkerlist;            /* Not used with Voronoi diagram; out only */
+  REAL *normlist;                /* Used only with Voronoi diagram; out only */
+  int numberofedges;                                             /* Out only */
+};
+
+#ifdef ANSI_DECLARATORS
+extern "C" void triangulate(char *, struct triangulateio *, struct triangulateio *,
+                 struct triangulateio *);
+void trifree(VOID *memptr);
+#else /* not ANSI_DECLARATORS */
+void triangulate();
+void trifree();
+#endif /* not ANSI_DECLARATORS */
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/win/msys2/gcc/configure.make
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/win/msys2/gcc/configure.make	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/win/msys2/gcc/configure.make	(revision 27955)
@@ -0,0 +1,6 @@
+CC=gcc
+CSWITCHES=$(CFLAGS) -DNO_TIMER -fpic
+TRILIBDEFS=-DTRILIBRARY
+STATIC_LIB_EXT=a
+SHARED_LIB_EXT=dll
+OBJ_EXT=o
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/win/msys2/mingw64/configure.make
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/win/msys2/mingw64/configure.make	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/win/msys2/mingw64/configure.make	(revision 27955)
@@ -0,0 +1,6 @@
+CC=gcc
+CSWITCHES=$(CFLAGS) -DNO_TIMER -fpic
+TRILIBDEFS=-DTRILIBRARY
+STATIC_LIB_EXT=a
+SHARED_LIB_EXT=dll
+OBJ_EXT=o
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/windows/configure.make
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/windows/configure.make	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/configs/windows/configure.make	(revision 27955)
@@ -0,0 +1,6 @@
+CC=cl
+CSWITCHES= $(CFLAGS) -DNO_TIMER
+TRILIBDEFS= -DTRILIBRARY
+STATIC_LIB_EXT=lib
+SHARED_LIB_EXT=dll
+OBJ_EXT=obj
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-altix64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-altix64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-altix64.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#Untar 
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+
+#copy new makefile
+cp ../configs/altix64/configure.make ./
+cp ../makefile ./
+
+#Compile triangle
+make
+
+#Patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-android.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-android.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-android.sh	(revision 27955)
@@ -0,0 +1,26 @@
+#!/bin/bash
+set -eu
+
+source $ANDROID_DIR/android_aux.sh
+
+#Some cleanup 
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#Untar 
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+
+#copy new makefile
+cp ../configs/android/configure.make ./
+cp ../makefile ./
+
+#Compile triangle
+make
+
+#Patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-discover.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-discover.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-discover.sh	(revision 27955)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+export PREFIX="${ISSM_DIR}/externalpackages/triangle/install" # Set to location where external package should be installed
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} ${PREFIX}/include ${PREFIX}/lib src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/triangle.zip" "triangle.zip"
+
+# Unpack source
+unzip triangle.zip -d src
+
+# Copy customized source files to 'src' directory
+cp configs/makefile src
+cp configs/triangle.h src
+cp configs/linux/configure.make src
+
+# Compile
+cd src
+make shared
+
+# Install
+cd ..
+cp src/libtriangle.* ${PREFIX}/lib
+cp src/triangle.h ${PREFIX}/include
+
+# Cleanup
+rm -rf src
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-iosarmv7.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-iosarmv7.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-iosarmv7.sh	(revision 27955)
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -eu
+
+host_triplet="armv7-apple-darwin14.0.0"
+
+#cleanup
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#untar
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+rm triangle.zip
+
+#copy new makefile
+cp ../configs/ios/configure.make ./
+cp ../makefile ./
+
+#compile triangle
+make
+
+#patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-iosarmv7s.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-iosarmv7s.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-iosarmv7s.sh	(revision 27955)
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -eu
+
+host_triplet="armv7s-apple-darwin14.0.0"
+
+#cleanup
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#untar
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+rm triangle.zip
+
+#copy new makefile
+cp ../configs/ios/configure.make ./
+cp ../makefile ./
+
+#compile triangle
+make
+
+#patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-iosi386.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-iosi386.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-iosi386.sh	(revision 27955)
@@ -0,0 +1,27 @@
+#!/bin/bash
+set -eu
+
+host_triplet="i386-apple-darwin13.1.0"
+
+#cleanup
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#untar
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+rm triangle.zip
+
+#copy new makefile
+cp ../configs/ios/configure.make ./
+cp ../makefile ./
+
+#compile triangle
+make
+
+#patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-linux-javascript.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-linux-javascript.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-linux-javascript.sh	(revision 27955)
@@ -0,0 +1,42 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+export PREFIX="${ISSM_DIR}/externalpackages/triangle/install" # Set to location where external package should be installed
+
+# Environment
+#
+export CC=emcc
+export CXX=em++
+export AR=emar
+export RANLIB=emranlib
+#export EMCC_DEBUG=1 # Uncomment to enable debugging
+
+# Source Emscripten environment
+source ${EMSCRIPTEN_ROOT}/emsdk_env.sh
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} ${PREFIX}/include ${PREFIX}/share src
+
+# Download source
+${ISSM_DIR}/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/triangle.zip" "triangle.zip"
+
+# Unpack source
+unzip triangle.zip -d src
+
+# Copy customized source files to 'src' directory
+cp configs/makefile src
+cp configs/javascript/configure.make src
+cp configs/javascript/triangle.h src
+
+# Compile
+cd src
+make objects
+
+# Install
+cd ..
+cp src/triangle.o ${PREFIX}/share
+cp src/triangle.h ${PREFIX}/include
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-linux-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-linux-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-linux-static.sh	(revision 27955)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+export PREFIX="${ISSM_DIR}/externalpackages/triangle/install" # Set to location where external package should be installed
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} ${PREFIX}/include ${PREFIX}/lib src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/triangle.zip" "triangle.zip"
+
+# Unpack source
+unzip triangle.zip -d src
+
+# Copy customized source files to 'src' directory
+cp configs/makefile src
+cp configs/triangle.h src
+cp configs/linux/configure.make src
+
+# Compile
+cd src
+make static
+
+# Install
+cd ..
+cp src/libtriangle.* ${PREFIX}/lib
+cp src/triangle.h ${PREFIX}/include
+
+# Cleanup
+rm -rf src
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-linux.sh	(revision 27955)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+export PREFIX="${ISSM_DIR}/externalpackages/triangle/install" # Set to location where external package should be installed
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} ${PREFIX}/include ${PREFIX}/lib src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/triangle.zip" "triangle.zip"
+
+# Unpack source
+unzip triangle.zip -d src
+
+# Copy customized source files to 'src' directory
+cp configs/makefile src
+cp configs/triangle.h src
+cp configs/linux/configure.make src
+
+# Compile
+cd src
+make shared
+
+# Install
+cd ..
+cp src/libtriangle.* ${PREFIX}/lib
+cp src/triangle.h ${PREFIX}/include
+
+# Cleanup
+rm -rf src
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-mac-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-mac-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-mac-static.sh	(revision 27955)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+export PREFIX="${ISSM_DIR}/externalpackages/triangle/install" # Set to location where external package should be installed
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} ${PREFIX}/include ${PREFIX}/lib src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/triangle.zip" "triangle.zip"
+
+# Unpack source
+unzip triangle.zip -d src
+
+# Copy customized source files to 'src' directory
+cp configs/makefile src
+cp configs/triangle.h src
+cp configs/mac/configure.make src
+
+# Compile
+cd src
+make static
+
+# Install
+cd ..
+cp src/libtriangle.* ${PREFIX}/lib
+cp src/triangle.h ${PREFIX}/include
+
+# Cleanup
+rm -rf src
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-mac.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-mac.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-mac.sh	(revision 27955)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+export PREFIX="${ISSM_DIR}/externalpackages/triangle/install" # Set to location where external package should be installed
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} ${PREFIX}/include ${PREFIX}/lib src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/triangle.zip" "triangle.zip"
+
+# Unpack source
+unzip triangle.zip -d src
+
+# Copy customized source files to 'src' directory
+cp configs/makefile src
+cp configs/triangle.h src
+cp configs/mac/configure.make src
+
+# Compile
+cd src
+make shared
+
+# Install
+cd ..
+cp src/libtriangle.* ${PREFIX}/lib
+cp src/triangle.h ${PREFIX}/include
+
+# Cleanup
+rm -rf src
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-pleiades.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-pleiades.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-pleiades.sh	(revision 27955)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+INSTALL_DIR="install"
+
+# Cleanup
+rm -rf ${INSTALL_DIR} src
+mkdir ${INSTALL_DIR} ${INSTALL_DIR}/include ${INSTALL_DIR}/lib src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/triangle.zip" "triangle.zip"
+
+# Unpack source
+unzip triangle.zip -d src
+
+# Copy customized source files to 'src' directory
+cp configs/makefile src
+cp configs/triangle.h src
+cp configs/linux/configure.make src
+
+# Compile
+cd src
+make shared
+
+# Install
+cd ..
+cp src/libtriangle.* ${INSTALL_DIR}/lib
+cp src/triangle.h ${INSTALL_DIR}/include
+
+# Cleanup
+rm -rf src
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-win-msys2-gcc.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-win-msys2-gcc.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-win-msys2-gcc.sh	(revision 27955)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+export PREFIX="${ISSM_DIR}/externalpackages/triangle/install" # Set to location where external package should be installed
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} ${PREFIX}/include ${PREFIX}/lib src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/triangle.zip" "triangle.zip"
+
+# Unpack source
+unzip triangle.zip -d src
+
+# Copy customized source files to 'src' directory
+cp configs/makefile src
+cp configs/triangle.h src
+cp configs/win/msys2/gcc/configure.make src
+
+# Compile
+cd src
+make shared
+
+# Install
+cd ..
+cp src/libtriangle.* ${PREFIX}/lib
+cp src/triangle.h ${PREFIX}/include
+
+# Cleanup
+rm -rf src
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-win-msys2-mingw-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-win-msys2-mingw-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-win-msys2-mingw-static.sh	(revision 27955)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+export PREFIX="${ISSM_DIR}/externalpackages/triangle/install" # Set to location where external package should be installed
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} ${PREFIX}/include ${PREFIX}/lib src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/triangle.zip" "triangle.zip"
+
+# Unpack source
+unzip triangle.zip -d src
+
+# Copy customized source files to 'src' directory
+cp configs/makefile src
+cp configs/triangle.h src
+cp configs/win/msys2/mingw64/configure.make src
+
+# Compile
+cd src
+make static
+
+# Install
+cd ..
+cp src/libtriangle.* ${PREFIX}/lib
+cp src/triangle.h ${PREFIX}/include
+
+# Cleanup
+rm -rf src
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-win-msys2-mingw.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-win-msys2-mingw.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-win-msys2-mingw.sh	(revision 27955)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+export PREFIX="${ISSM_DIR}/externalpackages/triangle/install" # Set to location where external package should be installed
+
+# Cleanup
+rm -rf ${PREFIX} src
+mkdir -p ${PREFIX} ${PREFIX}/include ${PREFIX}/lib src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/triangle.zip" "triangle.zip"
+
+# Unpack source
+unzip triangle.zip -d src
+
+# Copy customized source files to 'src' directory
+cp configs/makefile src
+cp configs/triangle.h src
+cp configs/win/msys2/mingw64/configure.make src
+
+# Compile
+cd src
+make shared
+
+# Install
+cd ..
+cp src/libtriangle.* ${PREFIX}/lib
+cp src/triangle.h ${PREFIX}/include
+
+# Cleanup
+rm -rf src
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-win10.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-win10.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-win10.sh	(revision 27955)
@@ -0,0 +1,25 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#Untar 
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+
+#copy new makefile
+cp ../configs/win7/configure.make ./
+cp ../configs/win7/makefile ./
+
+#Compile triangle
+make
+
+#Patch triangle.h
+patch triangle.h ../triangle.h.patch
+cat triangle.h
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-win32.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-win32.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-win32.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#Untar 
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+
+#copy new makefile
+cp ../configs/win32/configure.make ./
+cp ../makefile ./
+
+#Compile triangle
+make
+
+#Patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-windows-static.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-windows-static.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-windows-static.sh	(revision 27955)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+INSTALL_DIR="install"
+
+# Cleanup
+rm -rf ${INSTALL_DIR} src
+mkdir ${INSTALL_DIR} ${INSTALL_DIR}/include ${INSTALL_DIR}/lib src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/triangle.zip" "triangle.zip"
+
+# Unpack source
+unzip triangle.zip -d src
+
+# Copy customized source files to 'src' directory
+cp configs/makefile src
+cp configs/triangle.h src
+cp configs/windows/configure.make src
+
+# Compile
+cd src
+make static
+
+# Install
+cd ..
+cp src/libtriangle.* ${INSTALL_DIR}/lib
+cp src/triangle.h ${INSTALL_DIR}/include
+
+# Cleanup
+rm -rf src
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-windows.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-windows.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install-windows.sh	(revision 27955)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+INSTALL_DIR="install"
+
+# Cleanup
+rm -rf ${INSTALL_DIR} src
+mkdir ${INSTALL_DIR} ${INSTALL_DIR}/include ${INSTALL_DIR}/lib src
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/triangle.zip" "triangle.zip"
+
+# Unpack source
+unzip triangle.zip -d src
+
+# Copy customized source files to 'src' directory
+cp configs/makefile src
+cp configs/triangle.h src
+cp configs/windows/configure.make src
+
+# Compile
+cd src
+make shared
+
+# Install
+cd ..
+cp src/libtriangle.* ${INSTALL_DIR}/lib
+cp src/triangle.h ${INSTALL_DIR}/include
+
+# Cleanup
+rm -rf src
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/install.sh	(revision 27955)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install src triangle
+mkdir install src ./src/m4
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#Untar 
+cd src
+mkdir src
+cp ../triangle.zip ./
+unzip triangle.zip
+
+rm ./makefile
+mv ./*.c ./src
+mv ./*.h ./src
+
+cp ./../configs/libtool/configure.ac ./
+cp ./../configs/libtool/Makefile.am ./
+cp ./../configs/libtool/src/Makefile.am ./src/
+
+autoreconf -ivf
+./configure --prefix="${HOME}/externalpackages/triangle/install" --disable-executables
+
+make 
+make install
+
+#Patch triangle.h
+patch ${HOME}/externalpackages/triangle/install/include/triangle.h ${HOME}/externalpackages/triangle/triangle.h.patch
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/makefile	(revision 27955)
@@ -0,0 +1,46 @@
+include ./configure.make
+
+ifeq "$(origin CC)" "undefined"
+	CC = cc
+endif
+
+ifeq "$(origin AR)" "undefined"
+	AR = ar
+endif
+
+ifeq "$(origin RANLIB)" "undefined"
+	RANLIB = ranlib
+endif
+
+SOURCES=triangle.c triangle.h
+OBJECTS=triangle.$(OBJ_EXT)
+
+all: libtriangle.$(STATIC_LIB_EXT) libtriangle.$(SHARED_LIB_EXT)
+
+objects: $(OBJECTS)
+
+shared: libtriangle.$(SHARED_LIB_EXT)
+
+static: libtriangle.$(STATIC_LIB_EXT)
+
+triangle.$(OBJ_EXT): $(SOURCES)
+	$(CC) $(CSWITCHES) $(TRILIBDEFS) -c triangle.c
+
+libtriangle.a: $(OBJECTS)
+	$(AR) cr $@ $(OBJECTS)
+	$(RANLIB) $@
+
+libtriangle.dll: $(SOURCES)
+	$(CC) $(CSWITCHES) $(TRILIBDEFS) -shared -o $@ triangle.c
+
+libtriangle.dylib: $(OBJECTS)
+	$(CC) $(CSWITCHES) $(TRILIBDEFS) -dynamiclib -install_name ${PREFIX}/lib/$@ -o $@ triangle.c
+
+libtriangle.lib: $(OBJECTS)
+	lib -out:libtriangle.$(STATIC_LIB_EXT) $(OBJECTS)
+
+libtriangle.so: $(SOURCES)
+	$(CC) $(CSWITCHES) $(TRILIBDEFS) -shared -o $@ triangle.c
+
+clean:
+	rm -rf *.$(LIB_EXT) *.$(OBJ_EXT) *.LIB *.LST *.$(OBJ_EXT)bj *.BAK
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/triangle.h.patch
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/triangle.h.patch	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/triangle.h.patch	(revision 27955)
@@ -0,0 +1,12 @@
+250a251,257
+> /*Patch for ISSM*/
+> #ifndef REAL
+> typedef double REAL;
+> typedef void VOID;
+> #endif
+> /*End patch*/
+> 
+283c290
+< void triangulate(char *, struct triangulateio *, struct triangulateio *,
+---
+> extern "C" void triangulate(char *, struct triangulateio *, struct triangulateio *,
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/triangle.h.patch.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/triangle.h.patch.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/triangle/triangle.h.patch.js	(revision 27955)
@@ -0,0 +1,8 @@
+250a251,257
+> /*Patch for ISSM*/
+> #ifndef REAL
+> typedef double REAL;
+> typedef void VOID;
+> #endif
+> /*End patch*/
+> 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/valgrind/install-altix64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/valgrind/install-altix64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/valgrind/install-altix64.sh	(revision 27955)
@@ -0,0 +1,28 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install valgrind-3.10.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/valgrind-3.10.0.tar.bz2' 'valgrind-3.10.0.tar.bz2'
+
+#Untar 
+tar -jxvf  valgrind-3.10.0.tar.bz2
+
+#Move valgrind into install directory
+mv valgrind-3.10.0/* install
+rm -rf valgrind-3.10.0
+
+#configure
+cd install
+./configure --prefix="$ISSM_DIR/externalpackages/valgrind/install"
+
+#Compile valgrind
+make  -j 4
+make install
+
+#final thing: if mpi is compiled in, soft link its target to a simpler name
+cd lib
+ln -s valgrind/libmpi*  ./libmpidebug.so
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/valgrind/install-linux.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/valgrind/install-linux.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/valgrind/install-linux.sh	(revision 27955)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+PREFIX="${ISSM_DIR}/externalpackages/valgrind/install" # Set to location where external package should be installed
+
+# Clean up
+rm -rf ${PREFIX} src
+
+# Download development version (the current release never supports the latest 
+# OS X releases)
+git clone git://sourceware.org/git/valgrind.git src
+
+# Configure
+cd src
+./autogen.sh
+./configure \
+	--prefix="${PREFIX}" \
+	--enable-only64bit
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make install -j $1
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/valgrind/install-mac.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/valgrind/install-mac.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/valgrind/install-mac.sh	(revision 27955)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu
+
+
+## Constants
+#
+PREFIX="${ISSM_DIR}/externalpackages/valgrind/install" # Set to location where external package should be installed
+
+# Clean up
+rm -rf ${PREFIX} src
+
+# Download development version (the current release never supports the latest 
+# OS X releases)
+git clone git://sourceware.org/git/valgrind.git src
+
+# Configure
+cd src
+./autogen.sh
+./configure \
+	--prefix="${PREFIX}" \
+	--enable-only64bit
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make install -j $1
+fi
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/valgrind/install-win32.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/valgrind/install-win32.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/valgrind/install-win32.sh	(revision 27955)
@@ -0,0 +1,28 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install valgrind-3.10.0
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/valgrind-3.10.0.tar.bz2' 'valgrind-3.10.0.tar.bz2'
+
+#Untar 
+tar -jxvf  valgrind-3.10.0.tar.bz2
+
+#Move valgrind into install directory
+mv valgrind-3.10.0/* install
+rm -rf valgrind-3.10.0
+
+#configure
+cd install
+./configure  --prefix="$ISSM_DIR/externalpackages/valgrind/install"
+
+#Compile valgrind
+make  -j 4
+make install
+
+#final thing: if mpi is compiled in, soft link its target to a simpler name
+cd lib
+ln -s valgrind/libmpi*  ./libmpidebug.so
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/valgrind/issm.supp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/valgrind/issm.supp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/valgrind/issm.supp	(revision 27955)
@@ -0,0 +1,759 @@
+# This holds the errors to be suppressed from valgrind report for ISSM.
+# See: http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress
+#
+# to add errors:
+#   1. in m/classes/clusters/generic.m,
+#      add: --gen-suppressions=all
+#   2. in the errlog, copy and paste the suppression log
+#      in this file.
+
+#OS specific errors{{{
+#http://stackoverflow.com/questions/14474691/wifstream-with-imbue-locale-produces-valgrind-errors (larsen)
+{
+   <OS1>
+   Memcheck:Addr8
+   fun:wcscmp
+   fun:_ZNSt10moneypunctIwLb1EED1Ev
+   fun:_ZNSt10moneypunctIwLb1EED0Ev
+}
+{
+   <OS0>
+   Memcheck:Addr8
+   fun:wcscmp
+   fun:_ZNSt10moneypunctIwLb0EED1Ev
+   fun:_ZNSt10moneypunctIwLb0EED0Ev
+   fun:_ZNSt6locale5_ImplD1Ev
+   fun:_ZNSt6localeD1Ev
+   fun:__cxa_finalize
+   obj:/u/astrid-r1b/morlighe/issmjpl/cron/trunk-jpl/externalpackages/boost/install/lib/libboost_filesystem.so.1.49.0
+   obj:/u/astrid-r1b/morlighe/issmjpl/cron/trunk-jpl/externalpackages/boost/install/lib/libboost_filesystem.so.1.49.0
+   fun:__run_exit_handlers
+   fun:exit
+   fun:(below main)
+}
+{
+   <OS2>
+   Memcheck:Leak
+   fun:_Znwm
+   fun:_ZNSs4_Rep9_S_createEmmRKSaIcE
+   fun:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag
+   fun:_ZNSsC1EPKcRKSaIcE
+}
+{
+	<Libgfortranronne>
+	  Memcheck:Cond
+	  obj:/usr/lib/x86_64-linux-gnu/libgfortran.so.3.0.0
+	  obj:/usr/lib/x86_64-linux-gnu/libgfortran.so.3.0.0
+	  obj:/usr/lib/x86_64-linux-gnu/libgfortran.so.3.0.0
+	  fun:call_init.part.0
+	  fun:call_init
+	  fun:_dl_init
+	  obj:/lib/x86_64-linux-gnu/ld-2.15.so
+	  obj:*
+	  obj:*
+	  obj:*
+	  obj:*
+	  obj:*
+}
+{
+	<OS3>
+	  Memcheck:Cond
+	  fun:index
+	  fun:expand_dynamic_string_token
+	  fun:_dl_map_object
+	  fun:map_doit
+	  fun:_dl_catch_error
+	  fun:do_preload
+	  fun:handle_ld_preload
+	  fun:dl_main
+	  fun:_dl_sysdep_start
+	  fun:_dl_start_final
+	  fun:_dl_start
+	  obj:/lib/x86_64-linux-gnu/ld-2.19.so
+	  obj:*
+	  obj:*
+}
+{
+	<OS4>
+	  Memcheck:Cond
+	  fun:index
+	  fun:expand_dynamic_string_token
+	  fun:fillin_rpath
+	  fun:_dl_init_paths
+	  fun:dl_main
+	  fun:_dl_sysdep_start
+	  fun:_dl_start_final
+	  fun:_dl_start
+	  obj:/lib/x86_64-linux-gnu/ld-2.19.so
+	  obj:*
+	  obj:*
+	  obj:*
+	  obj:*
+}
+#}}}
+#PETSc {{{
+{
+   <petsc0>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:maybe_complete
+   fun:PMPI_Waitany
+   fun:MatStashScatterGetMesg_Private
+   fun:MatAssemblyEnd_MPIAIJ
+   fun:MatAssemblyEnd
+}
+{
+   <petsc1>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:maybe_complete
+   fun:PMPI_Waitany
+   fun:VecStashScatterGetMesg_Private
+   fun:VecAssemblyEnd_MPI
+   fun:VecAssemblyEnd
+   fun:_ZN8PetscVec8AssembleEv
+}
+{
+   <petsc2>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:PMPI_Recv
+   fun:_Z14VecToMPISerialPPdP6_p_Veci
+   fun:_ZN8PetscVec11ToMPISerialEv
+}
+{
+   <petsc3>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:maybe_complete
+   fun:PMPI_Waitany
+   fun:VecScatterCreate_PtoS
+   fun:VecScatterCreate
+   fun:MatSetUpMultiply_MPIAIJ
+   fun:MatAssemblyEnd_MPIAIJ
+   fun:MatAssemblyEnd
+}
+{
+   <mumps0>
+   Memcheck:Leak
+   fun:malloc
+   fun:mumps_397.3148
+   fun:__mumps_static_mapping_MOD_mumps_369
+   fun:dmumps_537_
+   fun:dmumps_26_
+   fun:dmumps_
+   fun:dmumps_f77_
+   fun:dmumps_c
+   fun:MatLUFactorSymbolic_AIJMUMPS
+   fun:MatLUFactorSymbolic
+   fun:PCSetUp_LU
+   fun:PCSetUp
+}
+{
+   <mumps1>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:PMPI_Recv
+   fun:mpi_recv
+   fun:dmumps_664_
+}
+{
+   <mumps2>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:maybe_complete
+   fun:PMPI_Waitany
+   fun:mpi_waitany
+   fun:dmumps_664_
+}
+{
+   <mumps3>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:PMPI_Recv
+   fun:mpi_recv
+   fun:dmumps_282_
+}
+{
+   <mumps4>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:PMPI_Recv
+   fun:mpi_recv
+   fun:dmumps_255_
+}
+{
+   <mumps5>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:maybe_complete
+   fun:PMPI_Wait
+   fun:PMPI_WAIT
+   fun:dmumps_255_
+}
+{
+   <mump6>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:PMPI_Recv
+   fun:mpi_recv
+   fun:dmumps_638_
+}
+{
+   <mumps7>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:PMPI_Recv
+   fun:mpi_recv
+   fun:dmumps_640.3488
+}
+{
+   <mumps8>
+   Memcheck:User
+   fun:PMPI_Get_count
+   fun:MPI_GET_COUNT
+   fun:dmumps_638_
+}
+{
+   <mumps9>
+   Memcheck:User
+   fun:check_mem_is_defined_untyped
+   fun:PMPI_Pack
+   fun:PMPI_PACK
+   fun:__dmumps_comm_buffer_MOD_dmumps_62
+}
+{
+   <mumps10>
+   Memcheck:User
+   fun:check_mem_is_defined_untyped
+   fun:PMPI_Pack
+   fun:PMPI_PACK
+   fun:__dmumps_comm_buffer_MOD_dmumps_62
+}
+{
+	<mumps11>
+	  Memcheck:User
+	  fun:check_mem_is_defined_untyped
+	  fun:PMPI_Isend
+	  fun:libparmetis__gkMPI_Isend
+	  fun:libparmetis__CommInterfaceData
+	  fun:libparmetis__CompactGraph
+	  fun:libparmetis__MultilevelOrder
+	  fun:ParMETIS_V32_NodeND
+	  fun:ParMETIS_V3_NodeND
+	  fun:mumps_parmetis_
+}
+{
+	<mumps12>
+	  Memcheck:User
+	  fun:check_mem_is_defined_untyped
+	  fun:PMPI_Bcast
+	  fun:MPI_BCAST
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_718
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_717
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_715
+}
+{
+	<mumps13>
+	  Memcheck:Leak
+	  fun:malloc
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_775
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_720
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_715
+}
+{
+	<mump14>
+	  Memcheck:Leak
+	  fun:malloc
+	  fun:mumps_754_
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_781
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_720
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_715
+	  fun:dmumps_26_
+	  fun:dmumps_
+	  fun:dmumps_f77_
+	  fun:dmumps_c
+	  fun:MatLUFactorSymbolic_AIJMUMPS
+	  fun:MatLUFactorSymbolic
+	  fun:PCSetUp_LU
+}
+{
+	<mumps15>
+	  Memcheck:Cond
+	  fun:MPIC_Waitall
+	  fun:MPIR_Alltoall_intra
+	  fun:MPIR_Alltoall
+	  fun:MPIR_Alltoall_impl
+	  fun:PMPI_Alltoall
+	  fun:PMPI_ALLTOALL
+	  fun:dmumps_numvolsndrcv_
+	  fun:dmumps_simscaleabsuns_
+	  fun:dmumps_simscaleabs_
+	  fun:dmumps_fac_driver_
+	  fun:dmumps_
+	  fun:dmumps_f77_
+}
+{
+	<mumps16>
+	  Memcheck:Cond
+	  fun:MPIC_Waitall
+	  fun:MPIR_Alltoall_intra
+	  fun:MPIR_Alltoall
+	  fun:MPIR_Alltoall_impl
+	  fun:PMPI_Alltoall
+	  fun:PMPI_ALLTOALL
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_build_dist_graph
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_parmetis_ord
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_do_par_ord
+	  fun:__dmumps_parallel_analysis_MOD_dmumps_ana_f_par
+	  fun:dmumps_ana_driver_
+	  fun:dmumps_
+}
+
+{
+	<iparmetis1>
+	  Memcheck:Cond
+	  fun:MPIC_Waitall
+	  fun:MPIR_Scatterv
+	  fun:MPIR_Scatterv_impl
+	  fun:PMPI_Scatterv
+	  fun:libparmetis__gkMPI_Scatterv
+	  fun:libparmetis__InitMultisection
+	  fun:libparmetis__Order_Partition
+	  fun:libparmetis__Order_Partition_Multiple
+	  fun:libparmetis__MultilevelOrder
+	  fun:ParMETIS_V32_NodeND
+	  fun:ParMETIS_V3_NodeND
+	  fun:mumps_parmetis_
+}
+#}}}
+{
+   <main1>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   fun:strdup
+   fun:mca_base_var_enum_create_flag
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libopen-pal.so.20.10.1
+   fun:mca_base_framework_register
+   fun:mca_base_framework_open
+   fun:mca_base_framework_open
+   fun:ompi_mpi_init
+   fun:PMPI_Init
+   fun:_Z15EnvironmentInitiPPc
+   fun:main
+}
+{
+   <main2>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   fun:strdup
+   fun:mca_base_var_enum_create_flag
+   fun:ompi_mpi_init
+   fun:PMPI_Init
+   fun:_Z15EnvironmentInitiPPc
+   fun:main
+}
+{
+   <main3>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   fun:mca_base_component_repository_open
+   fun:mca_base_component_find
+   fun:mca_base_framework_components_register
+   fun:mca_base_framework_register
+   fun:mca_base_framework_open
+   fun:opal_init
+   fun:orte_init
+   fun:ompi_mpi_init
+   fun:PMPI_Init
+   fun:_Z15EnvironmentInitiPPc
+   fun:main
+}
+{
+   <main4>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   obj:*
+   obj:*
+   obj:*
+   fun:orte_oob_base_select
+   fun:orte_ess_base_app_setup
+   obj:*
+   fun:orte_init
+   fun:ompi_mpi_init
+   fun:PMPI_Init
+   fun:_Z15EnvironmentInitiPPc
+   fun:main
+}
+{
+   <main5>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   fun:PMIx_Store_internal
+   fun:pmix1_store_local
+   fun:orte_ess_base_app_setup
+   obj:*
+   fun:orte_init
+   fun:ompi_mpi_init
+   fun:PMPI_Init
+   fun:_Z15EnvironmentInitiPPc
+   fun:main
+}
+{
+   <main6>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   obj:*
+   obj:*
+   fun:ompi_mpi_init
+   fun:PMPI_Init
+   fun:_Z15EnvironmentInitiPPc
+   fun:main
+}
+{
+   <main7>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   fun:opal_free_list_grow_st
+   fun:opal_rb_tree_init
+   obj:*
+   obj:*
+   fun:mca_base_framework_components_open
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libopen-pal.so.20.10.1
+   fun:mca_base_framework_open
+   fun:ompi_mpi_init
+   fun:PMPI_Init
+   fun:_Z15EnvironmentInitiPPc
+   fun:main
+}
+{
+   <Z15>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   fun:strdup
+   obj:*
+   obj:*
+   obj:*
+   obj:*
+   fun:ompi_mtl_base_select
+   obj:*
+   fun:mca_pml_base_select
+   fun:ompi_mpi_init
+   fun:PMPI_Init
+   fun:_Z15EnvironmentInitiPPc
+}
+{
+   <clone1>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi/mca_pmix_pmix112.so
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi/mca_pmix_pmix112.so
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi/mca_pmix_pmix112.so
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi/mca_pmix_pmix112.so
+   fun:opal_libevent2022_event_base_loop
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi/mca_pmix_pmix112.so
+   fun:start_thread
+   fun:clone
+}
+{
+   <clone2>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   obj:*
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libopen-rte.so.20.10.1
+   fun:orte_oob_base_set_addr
+   fun:opal_libevent2022_event_base_loop
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libopen-pal.so.20.10.1
+   fun:start_thread
+   fun:clone
+}
+{
+   <clone3>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi/mca_pmix_pmix112.so
+   fun:opal_libevent2022_event_base_loop
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi/mca_pmix_pmix112.so
+   fun:start_thread
+   fun:clone
+}
+{
+   <clone4>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi/mca_pmix_pmix112.so
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi/mca_pmix_pmix112.so
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi/mca_pmix_pmix112.so
+   fun:opal_libevent2022_event_base_loop
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/openmpi/mca_pmix_pmix112.so
+   fun:start_thread
+   fun:clone
+}
+{
+   <dlopen>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   fun:strdup
+   obj:*
+   fun:call_init
+   fun:_dl_init
+   fun:dl_open_worker
+   fun:_dl_catch_exception
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_exception
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.2.5
+}
+{
+   <ompi1>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   obj:*
+   obj:*
+   obj:*
+   obj:*
+   obj:*
+   obj:/usr/lib/x86_64-linux-gnu/libhwloc.so.5.7.6
+   obj:/usr/lib/x86_64-linux-gnu/libhwloc.so.5.7.6
+   fun:hwloc_topology_set_xmlbuffer
+   obj:*
+   fun:orte_init
+   fun:ompi_mpi_init
+}
+{
+   <pmpi1>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   fun:lt__malloc
+   fun:lt__zalloc
+   obj:/usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1
+   fun:lt_dlopenadvise
+   obj:*
+   obj:/usr/lib/x86_64-linux-gnu/libhwloc.so.5.7.6
+   fun:hwloc_topology_init
+   obj:*
+   fun:orte_init
+   fun:ompi_mpi_init
+   fun:PMPI_Init
+}
+{
+   <pmpi2>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   obj:*
+   obj:*
+   obj:*
+   obj:*
+   obj:/usr/lib/x86_64-linux-gnu/libhwloc.so.5.7.6
+   obj:/usr/lib/x86_64-linux-gnu/libhwloc.so.5.7.6
+   fun:hwloc_topology_set_xmlbuffer
+   obj:*
+   fun:orte_init
+   fun:ompi_mpi_init
+   fun:PMPI_Init
+}
+{
+   <hwloc>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   obj:*
+   obj:*
+   fun:__pthread_once_slow
+   obj:*
+   obj:*
+   obj:*
+   obj:*
+   obj:*
+   obj:/usr/lib/x86_64-linux-gnu/libhwloc.so.5.7.6
+   obj:/usr/lib/x86_64-linux-gnu/libhwloc.so.5.7.6
+   fun:hwloc_topology_set_xmlbuffer
+}
+{
+   <petsc4>
+   Memcheck:Leak
+   match-leak-kinds: possible
+   fun:malloc
+   obj:*
+   fun:mca_coll_base_comm_select
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   fun:opal_progress
+   fun:ompi_comm_activate
+   fun:ompi_comm_dup_with_info
+   fun:PMPI_Comm_dup
+   fun:PetscCommDuplicate
+   fun:PetscHeaderCreate_Private
+   fun:MatCreate
+}
+{
+   <petsc5>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   obj:*
+   fun:mca_coll_base_comm_select
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   fun:opal_progress
+   fun:ompi_comm_activate
+   fun:ompi_comm_dup_with_info
+   fun:PMPI_Comm_dup
+   fun:PetscCommDuplicate
+   fun:PetscHeaderCreate_Private
+   fun:MatCreate
+}
+{
+   <petsc6>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   obj:*
+   fun:mca_coll_base_comm_select
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   fun:opal_progress
+   fun:ompi_comm_activate
+   fun:ompi_comm_dup_with_info
+   fun:PMPI_Comm_dup
+   fun:PetscCommDuplicate
+   fun:PetscHeaderCreate_Private
+   fun:VecCreate
+}
+{
+   <petsc7>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   obj:*
+   fun:mca_coll_base_comm_select
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   fun:opal_progress
+   fun:ompi_comm_activate
+   fun:ompi_comm_dup_with_info
+   fun:PMPI_Comm_dup
+   fun:_Z20PetscInitializeMUMPSP6_p_MatP9Mat_MUMPS
+   obj:/usr/lib/x86_64-linux-gnu/libpetsc_real.so.3.7.7
+   fun:MatGetFactor
+}
+{
+   <mumps17>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   obj:*
+   fun:mca_coll_base_comm_select
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   fun:opal_progress
+   fun:ompi_comm_activate
+   fun:ompi_comm_dup_with_info
+   fun:PMPI_Comm_dup
+   fun:MPI_COMM_DUP
+   fun:dmumps_ini_driver_
+   fun:dmumps_
+}
+{
+   <mumps18>
+   Memcheck:Leak
+   match-leak-kinds: possible
+   fun:malloc
+   obj:*
+   fun:mca_coll_base_comm_select
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   fun:opal_progress
+   fun:ompi_comm_activate
+   fun:ompi_comm_dup_with_info
+   fun:PMPI_Comm_dup
+   fun:MPI_COMM_DUP
+   fun:dmumps_ini_driver_
+   fun:dmumps_
+}
+{
+   <mumps19>
+   Memcheck:Leak
+   match-leak-kinds: possible
+   fun:malloc
+   obj:*
+   fun:mca_coll_base_comm_select
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   fun:opal_progress
+   fun:ompi_comm_activate
+   fun:ompi_comm_dup_with_info
+   fun:PMPI_Comm_dup
+   fun:MPI_COMM_DUP
+   fun:dmumps_
+   fun:dmumps_f77_
+}
+{
+   <mumps20>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   obj:*
+   fun:mca_coll_base_comm_select
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   fun:opal_progress
+   fun:ompi_comm_activate
+   fun:ompi_comm_dup_with_info
+   fun:PMPI_Comm_dup
+   fun:MPI_COMM_DUP
+   fun:dmumps_
+   fun:dmumps_f77_
+}
+{
+   <mumps21>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   obj:*
+   fun:mca_coll_base_comm_select
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   fun:opal_progress
+   fun:ompi_comm_activate
+   fun:ompi_comm_split
+   fun:PMPI_Comm_split
+   fun:MPI_COMM_SPLIT
+   fun:dmumps_fac_driver_
+   fun:dmumps_
+}
+{
+   <mumps22>
+   Memcheck:Leak
+   match-leak-kinds: possible
+   fun:malloc
+   obj:*
+   fun:mca_coll_base_comm_select
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   obj:/usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so.20.10.1
+   fun:opal_progress
+   fun:ompi_comm_activate
+   fun:ompi_comm_split
+   fun:PMPI_Comm_split
+   fun:MPI_COMM_SPLIT
+   fun:dmumps_fac_driver_
+   fun:dmumps_
+}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/README
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/README	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/README	(revision 27955)
@@ -0,0 +1,5 @@
+To use ISSM's settings for vim:
+
+1. Add the settings from vimrc to your .vimrc file
+
+2. Add softlinks from vim to your .vim directory
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/Align.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/Align.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/Align.vim	(revision 27955)
@@ -0,0 +1,1029 @@
+" Align: tool to align multiple fields based on one or more separators
+"   Author:		Charles E. Campbell, Jr.
+"   Date:		Mar 03, 2009
+"   Version:	35
+" GetLatestVimScripts: 294 1 :AutoInstall: Align.vim
+" GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim
+" Copyright:    Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1
+"               Permission is hereby granted to use and distribute this code,
+"               with or without modifications, provided that this copyright
+"               notice is copied with it. Like anything else that's free,
+"               Align.vim is provided *as is* and comes with no warranty
+"               of any kind, either expressed or implied. By using this
+"               plugin, you agree that in no event will the copyright
+"               holder be liable for any damages resulting from the use
+"               of this software.
+"
+" Romans 1:16,17a : For I am not ashamed of the gospel of Christ, for it is {{{1
+" the power of God for salvation for everyone who believes; for the Jew first,
+" and also for the Greek.  For in it is revealed God's righteousness from
+" faith to faith.
+
+" ---------------------------------------------------------------------
+" Load Once: {{{1
+if exists("g:loaded_Align") || &cp
+ finish
+endif
+let g:loaded_Align = "v35"
+if v:version < 700
+ echohl WarningMsg
+ echo "***warning*** this version of Align needs vim 7.0"
+ echohl Normal
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+"DechoTabOn
+
+" ---------------------------------------------------------------------
+" Debugging Support: {{{1
+"if !exists("g:loaded_Decho") | runtime plugin/Decho.vim | endif
+
+" ---------------------------------------------------------------------
+" Options: {{{1
+if !exists("g:Align_xstrlen")
+ if &enc == "latin1" || $LANG == "en_US.UTF-8" || !has("multi_byte")
+  let g:Align_xstrlen= 0
+ else
+  let g:Align_xstrlen= 1
+ endif
+endif
+
+" ---------------------------------------------------------------------
+" Align#AlignCtrl: enter alignment patterns here {{{1
+"
+"   Styles   =  all alignment-break patterns are equivalent
+"            C  cycle through alignment-break pattern(s)
+"            l  left-justified alignment
+"            r  right-justified alignment
+"            c  center alignment
+"            -  skip separator, treat as part of field
+"            :  treat rest of line as field
+"            +  repeat previous [lrc] style
+"            <  left justify separators
+"            >  right justify separators
+"            |  center separators
+"
+"   Builds   =  s:AlignPat  s:AlignCtrl  s:AlignPatQty
+"            C  s:AlignPat  s:AlignCtrl  s:AlignPatQty
+"            p  s:AlignPrePad
+"            P  s:AlignPostPad
+"            w  s:AlignLeadKeep
+"            W  s:AlignLeadKeep
+"            I  s:AlignLeadKeep
+"            l  s:AlignStyle
+"            r  s:AlignStyle
+"            -  s:AlignStyle
+"            +  s:AlignStyle
+"            :  s:AlignStyle
+"            c  s:AlignStyle
+"            g  s:AlignGPat
+"            v  s:AlignVPat
+"            <  s:AlignSep
+"            >  s:AlignSep
+"            |  s:AlignSep
+fun! Align#AlignCtrl(...)
+
+"  call Dfunc("AlignCtrl(...) a:0=".a:0)
+
+  " save options that will be changed
+  let keep_search = @/
+  let keep_ic     = &ic
+
+  " turn ignorecase off
+  set noic
+
+  " clear visual mode so that old visual-mode selections don't
+  " get applied to new invocations of Align().
+  if v:version < 602
+   if !exists("s:Align_gavemsg")
+	let s:Align_gavemsg= 1
+    echomsg "Align needs at least Vim version 6.2 to clear visual-mode selection"
+   endif
+  elseif exists("s:dovisclear")
+"   call Decho("clearing visual mode a:0=".a:0." a:1<".a:1.">")
+   let clearvmode= visualmode(1)
+  endif
+
+  " set up a list akin to an argument list
+  if a:0 > 0
+   let A= s:QArgSplitter(a:1)
+  else
+   let A=[0]
+  endif
+
+  if A[0] > 0
+   let style = A[1]
+
+   " Check for bad separator patterns (zero-length matches)
+   " (but zero-length patterns for g/v is ok)
+   if style !~# '[gv]'
+    let ipat= 2
+    while ipat <= A[0]
+     if "" =~ A[ipat]
+      echoerr "AlignCtrl: separator<".A[ipat]."> matches zero-length string"
+	  let &ic= keep_ic
+"      call Dret("AlignCtrl")
+      return
+     endif
+     let ipat= ipat + 1
+    endwhile
+   endif
+  endif
+
+"  call Decho("AlignCtrl() A[0]=".A[0])
+  if !exists("s:AlignStyle")
+   let s:AlignStyle= "l"
+  endif
+  if !exists("s:AlignPrePad")
+   let s:AlignPrePad= 0
+  endif
+  if !exists("s:AlignPostPad")
+   let s:AlignPostPad= 0
+  endif
+  if !exists("s:AlignLeadKeep")
+   let s:AlignLeadKeep= 'w'
+  endif
+
+  if A[0] == 0
+   " ----------------------
+   " List current selection
+   " ----------------------
+   if !exists("s:AlignPatQty")
+	let s:AlignPatQty= 0
+   endif
+   echo "AlignCtrl<".s:AlignCtrl."> qty=".s:AlignPatQty." AlignStyle<".s:AlignStyle."> Padding<".s:AlignPrePad."|".s:AlignPostPad."> LeadingWS=".s:AlignLeadKeep." AlignSep=".s:AlignSep
+"   call Decho("AlignCtrl<".s:AlignCtrl."> qty=".s:AlignPatQty." AlignStyle<".s:AlignStyle."> Padding<".s:AlignPrePad."|".s:AlignPostPad."> LeadingWS=".s:AlignLeadKeep." AlignSep=".s:AlignSep)
+   if      exists("s:AlignGPat") && !exists("s:AlignVPat")
+	echo "AlignGPat<".s:AlignGPat.">"
+   elseif !exists("s:AlignGPat") &&  exists("s:AlignVPat")
+	echo "AlignVPat<".s:AlignVPat.">"
+   elseif exists("s:AlignGPat") &&  exists("s:AlignVPat")
+	echo "AlignGPat<".s:AlignGPat."> AlignVPat<".s:AlignVPat.">"
+   endif
+   let ipat= 1
+   while ipat <= s:AlignPatQty
+	echo "Pat".ipat."<".s:AlignPat_{ipat}.">"
+"	call Decho("Pat".ipat."<".s:AlignPat_{ipat}.">")
+	let ipat= ipat + 1
+   endwhile
+
+  else
+   " ----------------------------------
+   " Process alignment control settings
+   " ----------------------------------
+"   call Decho("process the alignctrl settings")
+"   call Decho("style<".style.">")
+
+   if style ==? "default"
+     " Default:  preserve initial leading whitespace, left-justified,
+     "           alignment on '=', one space padding on both sides
+	 if exists("s:AlignCtrlStackQty")
+	  " clear AlignCtrl stack
+      while s:AlignCtrlStackQty > 0
+	   call Align#AlignPop()
+	  endwhile
+	  unlet s:AlignCtrlStackQty
+	 endif
+	 " Set AlignCtrl to its default value
+     call Align#AlignCtrl("Ilp1P1=<",'=')
+	 call Align#AlignCtrl("g")
+	 call Align#AlignCtrl("v")
+	 let s:dovisclear = 1
+	 let &ic          = keep_ic
+	 let @/           = keep_search
+"     call Dret("AlignCtrl")
+	 return
+   endif
+
+   if style =~# 'm'
+	" map support: Do an AlignPush now and the next call to Align()
+	"              will do an AlignPop at exit
+"	call Decho("style case m: do AlignPush")
+	call Align#AlignPush()
+	let s:DoAlignPop= 1
+   endif
+
+   " = : record a list of alignment patterns that are equivalent
+   if style =~# "="
+"	call Decho("style case =: record list of equiv alignment patterns")
+    let s:AlignCtrl  = '='
+	if A[0] >= 2
+     let s:AlignPatQty= 1
+     let s:AlignPat_1 = A[2]
+     let ipat         = 3
+     while ipat <= A[0]
+      let s:AlignPat_1 = s:AlignPat_1.'\|'.A[ipat]
+      let ipat         = ipat + 1
+     endwhile
+     let s:AlignPat_1= '\('.s:AlignPat_1.'\)'
+"     call Decho("AlignCtrl<".s:AlignCtrl."> AlignPat<".s:AlignPat_1.">")
+	endif
+
+    "c : cycle through alignment pattern(s)
+   elseif style =~# 'C'
+"	call Decho("style case C: cycle through alignment pattern(s)")
+    let s:AlignCtrl  = 'C'
+	if A[0] >= 2
+     let s:AlignPatQty= A[0] - 1
+     let ipat         = 1
+     while ipat < A[0]
+      let s:AlignPat_{ipat}= A[ipat+1]
+"     call Decho("AlignCtrl<".s:AlignCtrl."> AlignQty=".s:AlignPatQty." AlignPat_".ipat."<".s:AlignPat_{ipat}.">")
+      let ipat= ipat + 1
+     endwhile
+	endif
+   endif
+
+   if style =~# 'p'
+    let s:AlignPrePad= substitute(style,'^.*p\(\d\+\).*$','\1','')
+"	call Decho("style case p".s:AlignPrePad.": pre-separator padding")
+    if s:AlignPrePad == ""
+     echoerr "AlignCtrl: 'p' needs to be followed by a numeric argument'
+     let @/ = keep_search
+	 let &ic= keep_ic
+"     call Dret("AlignCtrl")
+     return
+	endif
+   endif
+
+   if style =~# 'P'
+    let s:AlignPostPad= substitute(style,'^.*P\(\d\+\).*$','\1','')
+"	call Decho("style case P".s:AlignPostPad.": post-separator padding")
+    if s:AlignPostPad == ""
+     echoerr "AlignCtrl: 'P' needs to be followed by a numeric argument'
+     let @/ = keep_search
+	 let &ic= keep_ic
+"     call Dret("AlignCtrl")
+     return
+	endif
+   endif
+
+   if     style =~# 'w'
+"	call Decho("style case w: ignore leading whitespace")
+	let s:AlignLeadKeep= 'w'
+   elseif style =~# 'W'
+"	call Decho("style case w: keep leading whitespace")
+	let s:AlignLeadKeep= 'W'
+   elseif style =~# 'I'
+"	call Decho("style case w: retain initial leading whitespace")
+	let s:AlignLeadKeep= 'I'
+   endif
+
+   if style =~# 'g'
+	" first list item is a "g" selector pattern
+"	call Decho("style case g: global selector pattern")
+	if A[0] < 2
+	 if exists("s:AlignGPat")
+	  unlet s:AlignGPat
+"	  call Decho("unlet s:AlignGPat")
+	 endif
+	else
+	 let s:AlignGPat= A[2]
+"	 call Decho("s:AlignGPat<".s:AlignGPat.">")
+	endif
+   elseif style =~# 'v'
+	" first list item is a "v" selector pattern
+"	call Decho("style case v: global selector anti-pattern")
+	if A[0] < 2
+	 if exists("s:AlignVPat")
+	  unlet s:AlignVPat
+"	  call Decho("unlet s:AlignVPat")
+	 endif
+	else
+	 let s:AlignVPat= A[2]
+"	 call Decho("s:AlignVPat<".s:AlignVPat.">")
+	endif
+   endif
+
+    "[-lrc+:] : set up s:AlignStyle
+   if style =~# '[-lrc+:]'
+"	call Decho("style case [-lrc+:]: field justification")
+    let s:AlignStyle= substitute(style,'[^-lrc:+]','','g')
+"    call Decho("AlignStyle<".s:AlignStyle.">")
+   endif
+
+   "[<>|] : set up s:AlignSep
+   if style =~# '[<>|]'
+"	call Decho("style case [-lrc+:]: separator justification")
+	let s:AlignSep= substitute(style,'[^<>|]','','g')
+"	call Decho("AlignSep ".s:AlignSep)
+   endif
+  endif
+
+  " sanity
+  if !exists("s:AlignCtrl")
+   let s:AlignCtrl= '='
+  endif
+
+  " restore search and options
+  let @/ = keep_search
+  let &ic= keep_ic
+
+"  call Dret("AlignCtrl ".s:AlignCtrl.'p'.s:AlignPrePad.'P'.s:AlignPostPad.s:AlignLeadKeep.s:AlignStyle)
+  return s:AlignCtrl.'p'.s:AlignPrePad.'P'.s:AlignPostPad.s:AlignLeadKeep.s:AlignStyle
+endfun
+
+" ---------------------------------------------------------------------
+" s:MakeSpace: returns a string with spacecnt blanks {{{1
+fun! s:MakeSpace(spacecnt)
+"  call Dfunc("MakeSpace(spacecnt=".a:spacecnt.")")
+  let str      = ""
+  let spacecnt = a:spacecnt
+  while spacecnt > 0
+   let str      = str . " "
+   let spacecnt = spacecnt - 1
+  endwhile
+"  call Dret("MakeSpace <".str.">")
+  return str
+endfun
+
+" ---------------------------------------------------------------------
+" Align#Align: align selected text based on alignment pattern(s) {{{1
+fun! Align#Align(hasctrl,...) range
+"  call Dfunc("Align#Align(hasctrl=".a:hasctrl.",...) a:0=".a:0)
+
+  " sanity checks
+  if string(a:hasctrl) != "0" && string(a:hasctrl) != "1"
+   echohl Error|echo 'usage: Align#Align(hasctrl<'.a:hasctrl.'> (should be 0 or 1),"separator(s)"  (you have '.a:0.') )'|echohl None
+"   call Dret("Align#Align")
+   return
+  endif
+  if exists("s:AlignStyle") && s:AlignStyle == ":"
+   echohl Error |echo '(Align#Align) your AlignStyle is ":", which implies "do-no-alignment"!'|echohl None
+"   call Dret("Align#Align")
+   return
+  endif
+
+  " set up a list akin to an argument list
+  if a:0 > 0
+   let A= s:QArgSplitter(a:1)
+  else
+   let A=[0]
+  endif
+
+  " if :Align! was used, then the first argument is (should be!) an AlignCtrl string
+  " Note that any alignment control set this way will be temporary.
+  let hasctrl= a:hasctrl
+"  call Decho("hasctrl=".hasctrl)
+  if a:hasctrl && A[0] >= 1
+"   call Decho("Align! : using A[1]<".A[1]."> for AlignCtrl")
+   if A[1] =~ '[gv]'
+   	let hasctrl= hasctrl + 1
+	call Align#AlignCtrl('m')
+    call Align#AlignCtrl(A[1],A[2])
+"    call Decho("Align! : also using A[2]<".A[2]."> for AlignCtrl")
+   elseif A[1] !~ 'm'
+    call Align#AlignCtrl(A[1]."m")
+   else
+    call Align#AlignCtrl(A[1])
+   endif
+  endif
+
+  " Check for bad separator patterns (zero-length matches)
+  let ipat= 1 + hasctrl
+  while ipat <= A[0]
+   if "" =~ A[ipat]
+	echoerr "Align: separator<".A[ipat]."> matches zero-length string"
+"    call Dret("Align#Align")
+	return
+   endif
+   let ipat= ipat + 1
+  endwhile
+
+  " record current search pattern for subsequent restoration
+  let keep_search= @/
+  let keep_ic    = &ic
+  let keep_report= &report
+  set noic report=10000
+
+  if A[0] > hasctrl
+  " Align will accept a list of separator regexps
+"   call Decho("A[0]=".A[0].": accepting list of separator regexp")
+
+   if s:AlignCtrl =~# "="
+   	"= : consider all separators to be equivalent
+"    call Decho("AlignCtrl: record list of equivalent alignment patterns")
+    let s:AlignCtrl  = '='
+    let s:AlignPat_1 = A[1 + hasctrl]
+    let s:AlignPatQty= 1
+    let ipat         = 2 + hasctrl
+    while ipat <= A[0]
+     let s:AlignPat_1 = s:AlignPat_1.'\|'.A[ipat]
+     let ipat         = ipat + 1
+    endwhile
+    let s:AlignPat_1= '\('.s:AlignPat_1.'\)'
+"    call Decho("AlignCtrl<".s:AlignCtrl."> AlignPat<".s:AlignPat_1.">")
+
+   elseif s:AlignCtrl =~# 'C'
+    "c : cycle through alignment pattern(s)
+"    call Decho("AlignCtrl: cycle through alignment pattern(s)")
+    let s:AlignCtrl  = 'C'
+    let s:AlignPatQty= A[0] - hasctrl
+    let ipat         = 1
+    while ipat <= s:AlignPatQty
+     let s:AlignPat_{ipat}= A[(ipat + hasctrl)]
+"     call Decho("AlignCtrl<".s:AlignCtrl."> AlignQty=".s:AlignPatQty." AlignPat_".ipat."<".s:AlignPat_{ipat}.">")
+     let ipat= ipat + 1
+    endwhile
+   endif
+  endif
+
+  " Initialize so that begline<endline and begcol<endcol.
+  " Ragged right: check if the column associated with '< or '>
+  "               is greater than the line's string length -> ragged right.
+  " Have to be careful about visualmode() -- it returns the last visual
+  " mode used whether or not it was used currently.
+  let begcol   = virtcol("'<")-1
+  let endcol   = virtcol("'>")-1
+  if begcol > endcol
+   let begcol  = virtcol("'>")-1
+   let endcol  = virtcol("'<")-1
+  endif
+"  call Decho("begcol=".begcol." endcol=".endcol)
+  let begline  = a:firstline
+  let endline  = a:lastline
+  if begline > endline
+   let begline = a:lastline
+   let endline = a:firstline
+  endif
+"  call Decho("begline=".begline." endline=".endline)
+  let fieldcnt = 0
+  if (begline == line("'>") && endline == line("'<")) || (begline == line("'<") && endline == line("'>"))
+   let vmode= visualmode()
+"   call Decho("vmode=".vmode)
+   if vmode == "\<c-v>"
+	if exists("g:Align_xstrlen") && g:Align_xstrlen
+     let ragged   = ( col("'>") > s:Strlen(getline("'>")) || col("'<") > s:Strlen(getline("'<")) )
+	else
+     let ragged   = ( col("'>") > strlen(getline("'>")) || col("'<") > strlen(getline("'<")) )
+	endif
+   else
+	let ragged= 1
+   endif
+  else
+   let ragged= 1
+  endif
+  if ragged
+   let begcol= 0
+  endif
+"  call Decho("lines[".begline.",".endline."] col[".begcol.",".endcol."] ragged=".ragged." AlignCtrl<".s:AlignCtrl.">")
+
+  " Keep user options
+  let etkeep   = &l:et
+  let pastekeep= &l:paste
+  setlocal et paste
+
+  " convert selected range of lines to use spaces instead of tabs
+  " but if first line's initial white spaces are to be retained
+  " then use 'em
+  if begcol <= 0 && s:AlignLeadKeep == 'I'
+   " retain first leading whitespace for all subsequent lines
+   let bgntxt= substitute(getline(begline),'^\(\s*\).\{-}$','\1','')
+"   call Decho("retaining 1st leading whitespace: bgntxt<".bgntxt.">")
+   set noet
+  endif
+  exe begline.",".endline."ret"
+
+  " Execute two passes
+  " First  pass: collect alignment data (max field sizes)
+  " Second pass: perform alignment
+  let pass= 1
+  while pass <= 2
+"   call Decho(" ")
+"   call Decho("---- Pass ".pass.": ----")
+
+   let line= begline
+   while line <= endline
+    " Process each line
+    let txt = getline(line)
+"    call Decho(" ")
+"    call Decho("Pass".pass.": Line ".line." <".txt.">")
+
+    " AlignGPat support: allows a selector pattern (akin to g/selector/cmd )
+    if exists("s:AlignGPat")
+"	 call Decho("Pass".pass.": AlignGPat<".s:AlignGPat.">")
+	 if match(txt,s:AlignGPat) == -1
+"	  call Decho("Pass".pass.": skipping")
+	  let line= line + 1
+	  continue
+	 endif
+    endif
+
+    " AlignVPat support: allows a selector pattern (akin to v/selector/cmd )
+    if exists("s:AlignVPat")
+"	 call Decho("Pass".pass.": AlignVPat<".s:AlignVPat.">")
+	 if match(txt,s:AlignVPat) != -1
+"	  call Decho("Pass".pass.": skipping")
+	  let line= line + 1
+	  continue
+	 endif
+    endif
+
+	" Always skip blank lines
+	if match(txt,'^\s*$') != -1
+"	  call Decho("Pass".pass.": skipping")
+	 let line= line + 1
+	 continue
+	endif
+
+    " Extract visual-block selected text (init bgntxt, endtxt)
+	if exists("g:Align_xstrlen") && g:Align_xstrlen
+     let txtlen= s:Strlen(txt)
+	else
+     let txtlen= strlen(txt)
+	endif
+    if begcol > 0
+	 " Record text to left of selected area
+     let bgntxt= strpart(txt,0,begcol)
+"	  call Decho("Pass".pass.": record text to left: bgntxt<".bgntxt.">")
+    elseif s:AlignLeadKeep == 'W'
+	 let bgntxt= substitute(txt,'^\(\s*\).\{-}$','\1','')
+"	  call Decho("Pass".pass.": retaining all leading ws: bgntxt<".bgntxt.">")
+    elseif s:AlignLeadKeep == 'w' || !exists("bgntxt")
+	 " No beginning text
+	 let bgntxt= ""
+"	  call Decho("Pass".pass.": no beginning text")
+    endif
+    if ragged
+	 let endtxt= ""
+    else
+     " Elide any text lying outside selected columnar region
+     let endtxt= strpart(txt,endcol+1,txtlen-endcol)
+     let txt   = strpart(txt,begcol,endcol-begcol+1)
+    endif
+"    call Decho(" ")
+"    call Decho("Pass".pass.": bgntxt<".bgntxt.">")
+"    call Decho("Pass".pass.":    txt<". txt  .">")
+"    call Decho("Pass".pass.": endtxt<".endtxt.">")
+	if !exists("s:AlignPat_{1}")
+	 echohl Error|echo "no separators specified!"|echohl None
+"     call Dret("Align#Align")
+	 return
+	endif
+
+    " Initialize for both passes
+    let seppat      = s:AlignPat_{1}
+    let ifield      = 1
+    let ipat        = 1
+    let bgnfield    = 0
+    let endfield    = 0
+    let alignstyle  = s:AlignStyle
+    let doend       = 1
+	let newtxt      = ""
+    let alignprepad = s:AlignPrePad
+    let alignpostpad= s:AlignPostPad
+	let alignsep    = s:AlignSep
+	let alignophold = " "
+	let alignop     = "l"
+"	call Decho("Pass".pass.": initial alignstyle<".alignstyle."> seppat<".seppat.">")
+
+    " Process each field on the line
+    while doend > 0
+
+	  " C-style: cycle through pattern(s)
+     if s:AlignCtrl == 'C' && doend == 1
+	  let seppat   = s:AlignPat_{ipat}
+"	  call Decho("Pass".pass.": processing field: AlignCtrl=".s:AlignCtrl." ipat=".ipat." seppat<".seppat.">")
+	  let ipat     = ipat + 1
+	  if ipat > s:AlignPatQty
+	   let ipat = 1
+	  endif
+     endif
+
+	 " cyclic alignment/justification operator handling
+	 let alignophold  = alignop
+	 let alignop      = strpart(alignstyle,0,1)
+	 if alignop == '+' || doend == 2
+	  let alignop= alignophold
+	 else
+	  let alignstyle   = strpart(alignstyle,1).strpart(alignstyle,0,1)
+	  let alignopnxt   = strpart(alignstyle,0,1)
+	  if alignop == ':'
+	   let seppat  = '$'
+	   let doend   = 2
+"	   call Decho("Pass".pass.": alignop<:> case: setting seppat<$> doend==2")
+	  endif
+	 endif
+
+	 " cylic separator alignment specification handling
+	 let alignsepop= strpart(alignsep,0,1)
+	 let alignsep  = strpart(alignsep,1).alignsepop
+
+	 " mark end-of-field and the subsequent end-of-separator.
+	 " Extend field if alignop is '-'
+     let endfield = match(txt,seppat,bgnfield)
+	 let sepfield = matchend(txt,seppat,bgnfield)
+     let skipfield= sepfield
+"	 call Decho("Pass".pass.": endfield=match(txt<".txt.">,seppat<".seppat.">,bgnfield=".bgnfield.")=".endfield)
+	 while alignop == '-' && endfield != -1
+	  let endfield  = match(txt,seppat,skipfield)
+	  let sepfield  = matchend(txt,seppat,skipfield)
+	  let skipfield = sepfield
+	  let alignop   = strpart(alignstyle,0,1)
+	  let alignstyle= strpart(alignstyle,1).strpart(alignstyle,0,1)
+"	  call Decho("Pass".pass.": extend field: endfield<".strpart(txt,bgnfield,endfield-bgnfield)."> alignop<".alignop."> alignstyle<".alignstyle.">")
+	 endwhile
+	 let seplen= sepfield - endfield
+"	 call Decho("Pass".pass.": seplen=[sepfield=".sepfield."] - [endfield=".endfield."]=".seplen)
+
+	 if endfield != -1
+	  if pass == 1
+	   " ---------------------------------------------------------------------
+	   " Pass 1: Update FieldSize to max
+"	   call Decho("Pass".pass.": before lead/trail remove: field<".strpart(txt,bgnfield,endfield-bgnfield).">")
+	   let field      = substitute(strpart(txt,bgnfield,endfield-bgnfield),'^\s*\(.\{-}\)\s*$','\1','')
+       if s:AlignLeadKeep == 'W'
+	    let field = bgntxt.field
+	    let bgntxt= ""
+	   endif
+	   if exists("g:Align_xstrlen") && g:Align_xstrlen
+	    let fieldlen   = s:Strlen(field)
+	   else
+	    let fieldlen   = strlen(field)
+	   endif
+	   let sFieldSize = "FieldSize_".ifield
+	   if !exists(sFieldSize)
+	    let FieldSize_{ifield}= fieldlen
+"	    call Decho("Pass".pass.":  set FieldSize_{".ifield."}=".FieldSize_{ifield}." <".field.">")
+	   elseif fieldlen > FieldSize_{ifield}
+	    let FieldSize_{ifield}= fieldlen
+"	    call Decho("Pass".pass.": oset FieldSize_{".ifield."}=".FieldSize_{ifield}." <".field.">")
+	   endif
+	   let sSepSize= "SepSize_".ifield
+	   if !exists(sSepSize)
+		let SepSize_{ifield}= seplen
+"	    call Decho(" set SepSize_{".ifield."}=".SepSize_{ifield}." <".field.">")
+	   elseif seplen > SepSize_{ifield}
+		let SepSize_{ifield}= seplen
+"	    call Decho("Pass".pass.": oset SepSize_{".ifield."}=".SepSize_{ifield}." <".field.">")
+	   endif
+
+	  else
+	   " ---------------------------------------------------------------------
+	   " Pass 2: Perform Alignment
+	   let prepad       = strpart(alignprepad,0,1)
+	   let postpad      = strpart(alignpostpad,0,1)
+	   let alignprepad  = strpart(alignprepad,1).strpart(alignprepad,0,1)
+	   let alignpostpad = strpart(alignpostpad,1).strpart(alignpostpad,0,1)
+	   let field        = substitute(strpart(txt,bgnfield,endfield-bgnfield),'^\s*\(.\{-}\)\s*$','\1','')
+       if s:AlignLeadKeep == 'W'
+	    let field = bgntxt.field
+	    let bgntxt= ""
+	   endif
+	   if doend == 2
+		let prepad = 0
+		let postpad= 0
+	   endif
+	   if exists("g:Align_xstrlen") && g:Align_xstrlen
+	    let fieldlen   = s:Strlen(field)
+	   else
+	    let fieldlen   = strlen(field)
+	   endif
+	   let sep        = s:MakeSpace(prepad).strpart(txt,endfield,sepfield-endfield).s:MakeSpace(postpad)
+	   if seplen < SepSize_{ifield}
+		if alignsepop == "<"
+		 " left-justify separators
+		 let sep       = sep.s:MakeSpace(SepSize_{ifield}-seplen)
+		elseif alignsepop == ">"
+		 " right-justify separators
+		 let sep       = s:MakeSpace(SepSize_{ifield}-seplen).sep
+		else
+		 " center-justify separators
+		 let sepleft   = (SepSize_{ifield} - seplen)/2
+		 let sepright  = SepSize_{ifield} - seplen - sepleft
+		 let sep       = s:MakeSpace(sepleft).sep.s:MakeSpace(sepright)
+		endif
+	   endif
+	   let spaces     = FieldSize_{ifield} - fieldlen
+"	   call Decho("Pass".pass.": Field #".ifield."<".field."> spaces=".spaces." be[".bgnfield.",".endfield."] pad=".prepad.','.postpad." FS_".ifield."<".FieldSize_{ifield}."> sep<".sep."> ragged=".ragged." doend=".doend." alignop<".alignop.">")
+
+	    " Perform alignment according to alignment style justification
+	   if spaces > 0
+	    if     alignop == 'c'
+		 " center the field
+	     let spaceleft = spaces/2
+	     let spaceright= FieldSize_{ifield} - spaceleft - fieldlen
+	     let newtxt    = newtxt.s:MakeSpace(spaceleft).field.s:MakeSpace(spaceright).sep
+	    elseif alignop == 'r'
+		 " right justify the field
+	     let newtxt= newtxt.s:MakeSpace(spaces).field.sep
+	    elseif ragged && doend == 2
+		 " left justify rightmost field (no trailing blanks needed)
+	     let newtxt= newtxt.field
+		else
+		 " left justfiy the field
+	     let newtxt= newtxt.field.s:MakeSpace(spaces).sep
+	    endif
+	   elseif ragged && doend == 2
+		" field at maximum field size and no trailing blanks needed
+	    let newtxt= newtxt.field
+	   else
+		" field is at maximum field size already
+	    let newtxt= newtxt.field.sep
+	   endif
+"	   call Decho("Pass".pass.": newtxt<".newtxt.">")
+	  endif	" pass 1/2
+
+	  " bgnfield indexes to end of separator at right of current field
+	  " Update field counter
+	  let bgnfield= sepfield
+      let ifield  = ifield + 1
+	  if doend == 2
+	   let doend= 0
+	  endif
+	   " handle end-of-text as end-of-field
+	 elseif doend == 1
+	  let seppat  = '$'
+	  let doend   = 2
+	 else
+	  let doend   = 0
+	 endif		" endfield != -1
+    endwhile	" doend loop (as well as regularly separated fields)
+
+	if pass == 2
+	 " Write altered line to buffer
+"     call Decho("Pass".pass.": bgntxt<".bgntxt."> line=".line)
+"     call Decho("Pass".pass.": newtxt<".newtxt.">")
+"     call Decho("Pass".pass.": endtxt<".endtxt.">")
+	 call setline(line,bgntxt.newtxt.endtxt)
+	endif
+
+    let line = line + 1
+   endwhile	" line loop
+
+   let pass= pass + 1
+  endwhile	" pass loop
+"  call Decho("end of two pass loop")
+
+  " Restore user options
+  let &l:et    = etkeep
+  let &l:paste = pastekeep
+
+  if exists("s:DoAlignPop")
+   " AlignCtrl Map support
+   call Align#AlignPop()
+   unlet s:DoAlignPop
+  endif
+
+  " restore current search pattern
+  let @/      = keep_search
+  let &ic     = keep_ic
+  let &report = keep_report
+
+"  call Dret("Align#Align")
+  return
+endfun
+
+" ---------------------------------------------------------------------
+" Align#AlignPush: this command/function pushes an alignment control string onto a stack {{{1
+fun! Align#AlignPush()
+"  call Dfunc("AlignPush()")
+
+  " initialize the stack
+  if !exists("s:AlignCtrlStackQty")
+   let s:AlignCtrlStackQty= 1
+  else
+   let s:AlignCtrlStackQty= s:AlignCtrlStackQty + 1
+  endif
+
+  " construct an AlignCtrlStack entry
+  if !exists("s:AlignSep")
+   let s:AlignSep= ''
+  endif
+  let s:AlignCtrlStack_{s:AlignCtrlStackQty}= s:AlignCtrl.'p'.s:AlignPrePad.'P'.s:AlignPostPad.s:AlignLeadKeep.s:AlignStyle.s:AlignSep
+"  call Decho("AlignPush: AlignCtrlStack_".s:AlignCtrlStackQty."<".s:AlignCtrlStack_{s:AlignCtrlStackQty}.">")
+
+  " push [GV] patterns onto their own stack
+  if exists("s:AlignGPat")
+   let s:AlignGPat_{s:AlignCtrlStackQty}= s:AlignGPat
+  else
+   let s:AlignGPat_{s:AlignCtrlStackQty}=  ""
+  endif
+  if exists("s:AlignVPat")
+   let s:AlignVPat_{s:AlignCtrlStackQty}= s:AlignVPat
+  else
+   let s:AlignVPat_{s:AlignCtrlStackQty}=  ""
+  endif
+
+"  call Dret("AlignPush")
+endfun
+
+" ---------------------------------------------------------------------
+" Align#AlignPop: this command/function pops an alignment pattern from a stack {{{1
+"           and into the AlignCtrl variables.
+fun! Align#AlignPop()
+"  call Dfunc("Align#AlignPop()")
+
+  " sanity checks
+  if !exists("s:AlignCtrlStackQty")
+   echoerr "AlignPush needs to be used prior to AlignPop"
+"   call Dret("Align#AlignPop <> : AlignPush needs to have been called first")
+   return ""
+  endif
+  if s:AlignCtrlStackQty <= 0
+   unlet s:AlignCtrlStackQty
+   echoerr "AlignPush needs to be used prior to AlignPop"
+"   call Dret("Align#AlignPop <> : AlignPop needs to have been called first")
+   return ""
+  endif
+
+  " pop top of AlignCtrlStack and pass value to AlignCtrl
+  let retval=s:AlignCtrlStack_{s:AlignCtrlStackQty}
+  unlet s:AlignCtrlStack_{s:AlignCtrlStackQty}
+  call Align#AlignCtrl(retval)
+
+  " pop G pattern stack
+  if s:AlignGPat_{s:AlignCtrlStackQty} != ""
+   call Align#AlignCtrl('g',s:AlignGPat_{s:AlignCtrlStackQty})
+  else
+   call Align#AlignCtrl('g')
+  endif
+  unlet s:AlignGPat_{s:AlignCtrlStackQty}
+
+  " pop V pattern stack
+  if s:AlignVPat_{s:AlignCtrlStackQty} != ""
+   call Align#AlignCtrl('v',s:AlignVPat_{s:AlignCtrlStackQty})
+  else
+   call Align#AlignCtrl('v')
+  endif
+
+  unlet s:AlignVPat_{s:AlignCtrlStackQty}
+  let s:AlignCtrlStackQty= s:AlignCtrlStackQty - 1
+
+"  call Dret("Align#AlignPop <".retval."> : AlignCtrlStackQty=".s:AlignCtrlStackQty)
+  return retval
+endfun
+
+" ---------------------------------------------------------------------
+" Align#AlignReplaceQuotedSpaces: {{{1
+fun! Align#AlignReplaceQuotedSpaces() 
+"  call Dfunc("AlignReplaceQuotedSpaces()")
+
+  let l:line          = getline(line("."))
+  if exists("g:Align_xstrlen") && g:Align_xstrlen
+   let l:linelen      = s:Strlen(l:line)
+  else
+   let l:linelen      = strlen(l:line)
+  endif
+  let l:startingPos   = 0
+  let l:startQuotePos = 0
+  let l:endQuotePos   = 0
+  let l:spacePos      = 0
+  let l:quoteRe       = '\\\@<!"'
+
+"  "call Decho("in replace spaces.  line=" . line('.'))
+  while (1)
+    let l:startQuotePos = match(l:line, l:quoteRe, l:startingPos)
+    if (l:startQuotePos < 0) 
+"      "call Decho("No more quotes to the end of line")
+      break
+    endif
+    let l:endQuotePos = match(l:line, l:quoteRe, l:startQuotePos + 1)
+    if (l:endQuotePos < 0)
+"      "call Decho("Mismatched quotes")
+      break
+    endif
+    let l:spaceReplaceRe = '^.\{' . (l:startQuotePos + 1) . '}.\{-}\zs\s\ze.*.\{' . (linelen - l:endQuotePos) . '}$'
+"    "call Decho('spaceReplaceRe="' . l:spaceReplaceRe . '"')
+    let l:newStr = substitute(l:line, l:spaceReplaceRe, '%', '')
+    while (l:newStr != l:line)
+"      "call Decho('newstr="' . l:newStr . '"')
+      let l:line = l:newStr
+      let l:newStr = substitute(l:line, l:spaceReplaceRe, '%', '')
+    endwhile
+    let l:startingPos = l:endQuotePos + 1
+  endwhile
+  call setline(line('.'), l:line)
+
+"  call Dret("AlignReplaceQuotedSpaces")
+endfun
+
+" ---------------------------------------------------------------------
+" s:QArgSplitter: to avoid \ processing by <f-args>, <q-args> is needed. {{{1
+" However, <q-args> doesn't split at all, so this function returns a list
+" of arguments which has been:
+"   * split at whitespace
+"   * unless inside "..."s.  One may escape characters with a backslash inside double quotes.
+" along with a leading length-of-list.
+"
+"   Examples:   %Align "\""   will align on "s
+"               %Align " "    will align on spaces
+"
+" The resulting list:  qarglist[0] corresponds to a:0
+"                      qarglist[i] corresponds to a:{i}
+fun! s:QArgSplitter(qarg)
+"  call Dfunc("s:QArgSplitter(qarg<".a:qarg.">)")
+
+  if a:qarg =~ '".*"'
+   " handle "..." args, which may include whitespace
+   let qarglist = []
+   let args     = a:qarg
+"   call Decho("handle quoted arguments: args<".args.">")
+   while args != ""
+	let iarg   = 0
+	let arglen = strlen(args)
+"	call Decho("args[".iarg."]<".args[iarg]."> arglen=".arglen)
+	" find index to first not-escaped '"'
+	while args[iarg] != '"' && iarg < arglen
+	 if args[iarg] == '\'
+	  let args= strpart(args,1)
+	 endif
+	 let iarg= iarg + 1
+	endwhile
+"	call Decho("args<".args."> iarg=".iarg." arglen=".arglen)
+
+	if iarg > 0
+	 " handle left of quote or remaining section
+"	 call Decho("handle left of quote or remaining section")
+	 if args[iarg] == '"'
+	  let qarglist= qarglist + split(strpart(args,0,iarg-1))
+	 else
+	  let qarglist= qarglist + split(strpart(args,0,iarg))
+	 endif
+	 let args    = strpart(args,iarg)
+	 let arglen  = strlen(args)
+
+	elseif iarg < arglen && args[0] == '"'
+	 " handle "quoted" section
+"	 call Decho("handle quoted section")
+	 let iarg= 1
+	 while args[iarg] != '"' && iarg < arglen
+	  if args[iarg] == '\'
+	   let args= strpart(args,1)
+	  endif
+	  let iarg= iarg + 1
+	 endwhile
+"	 call Decho("args<".args."> iarg=".iarg." arglen=".arglen)
+	 if args[iarg] == '"'
+	  call add(qarglist,strpart(args,1,iarg-1))
+	  let args= strpart(args,iarg+1)
+	 else
+	  let qarglist = qarglist + split(args)
+	  let args     = ""
+	 endif
+	endif
+"	call Decho("qarglist".string(qarglist)." iarg=".iarg." args<".args.">")
+   endwhile
+
+  else
+   " split at all whitespace
+   let qarglist= split(a:qarg)
+  endif
+
+  let qarglistlen= len(qarglist)
+  let qarglist   = insert(qarglist,qarglistlen)
+"  call Dret("s:QArgSplitter ".string(qarglist))
+  return qarglist
+endfun
+
+" ---------------------------------------------------------------------
+" s:Strlen: this function returns the length of a string, even if its {{{1
+"           using two-byte etc characters.
+"           Currently, its only used if g:Align_xstrlen is set to a
+"           nonzero value.  Solution from Nicolai Weibull, vim docs
+"           (:help strlen()), Tony Mechelynck, and my own invention.
+fun! s:Strlen(x)
+"  call Dfunc("s:Strlen(x<".a:x.">")
+  if g:Align_xstrlen == 1
+   " number of codepoints (Latin a + combining circumflex is two codepoints)
+   " (comment from TM, solution from NW)
+   let ret= strlen(substitute(a:x,'.','c','g'))
+
+  elseif g:Align_xstrlen == 2
+   " number of spacing codepoints (Latin a + combining circumflex is one spacing 
+   " codepoint; a hard tab is one; wide and narrow CJK are one each; etc.)
+   " (comment from TM, solution from TM)
+   let ret=strlen(substitute(a:x, '.\Z', 'x', 'g')) 
+
+  elseif g:Align_xstrlen == 3
+   " virtual length (counting, for instance, tabs as anything between 1 and 
+   " 'tabstop', wide CJK as 2 rather than 1, Arabic alif as zero when immediately 
+   " preceded by lam, one otherwise, etc.)
+   " (comment from TM, solution from me)
+   let modkeep= &l:mod
+   exe "norm! o\<esc>"
+   call setline(line("."),a:x)
+   let ret= virtcol("$") - 1
+   d
+   let &l:mod= modkeep
+
+  else
+   " at least give a decent default
+   ret= strlen(a:x)
+  endif
+"  call Dret("s:Strlen ".ret)
+  return ret
+endfun
+
+" ---------------------------------------------------------------------
+" Set up default values: {{{1
+"call Decho("-- Begin AlignCtrl Initialization --")
+call Align#AlignCtrl("default")
+"call Decho("-- End AlignCtrl Initialization --")
+
+" ---------------------------------------------------------------------
+"  Restore: {{{1
+let &cpo= s:keepcpo
+unlet s:keepcpo
+" vim: ts=4 fdm=marker
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/AlignMaps.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/AlignMaps.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/AlignMaps.vim	(revision 27955)
@@ -0,0 +1,330 @@
+" AlignMaps.vim : support functions for AlignMaps
+"   Author: Charles E. Campbell, Jr.
+"   Date:   Mar 03, 2009
+" Version:           41
+" ---------------------------------------------------------------------
+"  Load Once: {{{1
+if &cp || exists("g:loaded_AlignMaps")
+ finish
+endif
+let g:loaded_AlignMaps= "v41"
+let s:keepcpo         = &cpo
+set cpo&vim
+
+" =====================================================================
+" Functions: {{{1
+
+" ---------------------------------------------------------------------
+" AlignMaps#WrapperStart: {{{2
+fun! AlignMaps#WrapperStart(vis) range
+"  call Dfunc("AlignMaps#WrapperStart(vis=".a:vis.")")
+
+  if a:vis
+   norm! '<ma'>
+  endif
+
+  if line("'y") == 0 || line("'z") == 0 || !exists("s:alignmaps_wrapcnt") || s:alignmaps_wrapcnt <= 0
+"   call Decho("wrapper initialization")
+   let s:alignmaps_wrapcnt    = 1
+   let s:alignmaps_keepgd     = &gdefault
+   let s:alignmaps_keepsearch = @/
+   let s:alignmaps_keepch     = &ch
+   let s:alignmaps_keepmy     = SaveMark("'y")
+   let s:alignmaps_keepmz     = SaveMark("'z")
+   let s:alignmaps_posn       = SaveWinPosn(0)
+   " set up fencepost blank lines
+   put =''
+   norm! mz'a
+   put! =''
+   ky
+   let s:alignmaps_zline      = line("'z")
+   exe "'y,'zs/@/\177/ge"
+  else
+"   call Decho("embedded wrapper")
+   let s:alignmaps_wrapcnt    = s:alignmaps_wrapcnt + 1
+   norm! 'yjma'zk
+  endif
+
+  " change some settings to align-standard values
+  set nogd
+  set ch=2
+  AlignPush
+  norm! 'zk
+"  call Dret("AlignMaps#WrapperStart : alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z"))
+endfun
+
+" ---------------------------------------------------------------------
+" AlignMaps#WrapperEnd:	{{{2
+fun! AlignMaps#WrapperEnd() range
+"  call Dfunc("AlignMaps#WrapperEnd() alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z"))
+
+  " remove trailing white space introduced by whatever in the modification zone
+  'y,'zs/ \+$//e
+
+  " restore AlignCtrl settings
+  AlignPop
+
+  let s:alignmaps_wrapcnt= s:alignmaps_wrapcnt - 1
+  if s:alignmaps_wrapcnt <= 0
+   " initial wrapper ending
+   exe "'y,'zs/\177/@/ge"
+
+   " if the 'z line hasn't moved, then go ahead and restore window position
+   let zstationary= s:alignmaps_zline == line("'z")
+
+   " remove fencepost blank lines.
+   " restore 'a
+   norm! 'yjmakdd'zdd
+
+   " restore original 'y, 'z, and window positioning
+   call RestoreMark(s:alignmaps_keepmy)
+   call RestoreMark(s:alignmaps_keepmz)
+   if zstationary > 0
+    call RestoreWinPosn(s:alignmaps_posn)
+"    call Decho("restored window positioning")
+   endif
+
+   " restoration of options
+   let &gd= s:alignmaps_keepgd
+   let &ch= s:alignmaps_keepch
+   let @/ = s:alignmaps_keepsearch
+
+   " remove script variables
+   unlet s:alignmaps_keepch
+   unlet s:alignmaps_keepsearch
+   unlet s:alignmaps_keepmy
+   unlet s:alignmaps_keepmz
+   unlet s:alignmaps_keepgd
+   unlet s:alignmaps_posn
+  endif
+
+"  call Dret("AlignMaps#WrapperEnd : alignmaps_wrapcnt=".s:alignmaps_wrapcnt." my=".line("'y")." mz=".line("'z"))
+endfun
+
+" ---------------------------------------------------------------------
+" AlignMaps#StdAlign: some semi-standard align calls {{{2
+fun! AlignMaps#StdAlign(mode) range
+"  call Dfunc("AlignMaps#StdAlign(mode=".a:mode.")")
+  if     a:mode == 1
+   " align on @
+"   call Decho("align on @")
+   AlignCtrl mIp1P1=l @
+   'a,.Align
+  elseif a:mode == 2
+   " align on @, retaining all initial white space on each line
+"   call Decho("align on @, retaining all initial white space on each line")
+   AlignCtrl mWp1P1=l @
+   'a,.Align
+  elseif a:mode == 3
+   " like mode 2, but ignore /* */-style comments
+"   call Decho("like mode 2, but ignore /* */-style comments")
+   AlignCtrl v ^\s*/[/*]
+   AlignCtrl mWp1P1=l @
+   'a,.Align
+  else
+   echoerr "(AlignMaps) AlignMaps#StdAlign doesn't support mode#".a:mode
+  endif
+"  call Dret("AlignMaps#StdAlign")
+endfun
+
+" ---------------------------------------------------------------------
+" AlignMaps#CharJoiner: joins lines which end in the given character (spaces {{{2
+"             at end are ignored)
+fun! AlignMaps#CharJoiner(chr)
+"  call Dfunc("AlignMaps#CharJoiner(chr=".a:chr.")")
+  let aline = line("'a")
+  let rep   = line(".") - aline
+  while rep > 0
+  	norm! 'a
+  	while match(getline(aline),a:chr . "\s*$") != -1 && rep >= 0
+  	  " while = at end-of-line, delete it and join with next
+  	  norm! 'a$
+  	  j!
+  	  let rep = rep - 1
+  	endwhile
+  	" update rep(eat) count
+  	let rep = rep - 1
+  	if rep <= 0
+  	  " terminate loop if at end-of-block
+  	  break
+  	endif
+  	" prepare for next line
+  	norm! jma
+  	let aline = line("'a")
+  endwhile
+"  call Dret("AlignMaps#CharJoiner")
+endfun
+
+" ---------------------------------------------------------------------
+" AlignMaps#Equals: supports \t= and \T= {{{2
+fun! AlignMaps#Equals() range
+"  call Dfunc("AlignMaps#Equals()")
+  'a,'zs/\s\+\([*/+\-%|&\~^]\==\)/ \1/e
+  'a,'zs@ \+\([*/+\-%|&\~^]\)=@\1=@ge
+  'a,'zs/==/\="\<Char-0x0f>\<Char-0x0f>"/ge
+  'a,'zs/\([!<>:]\)=/\=submatch(1)."\<Char-0x0f>"/ge
+  norm g'zk
+  AlignCtrl mIp1P1=l =
+  AlignCtrl g =
+  'a,'z-1Align
+  'a,'z-1s@\([*/+\-%|&\~^!=]\)\( \+\)=@\2\1=@ge
+  'a,'z-1s/\( \+\);/;\1/ge
+  if &ft == "c" || &ft == "cpp"
+"   call Decho("exception for ".&ft)
+   'a,'z-1v/^\s*\/[*/]/s/\/[*/]/@&@/e
+   'a,'z-1v/^\s*\/[*/]/s/\*\//@&/e
+   if exists("g:mapleader")
+    exe "norm 'zk"
+    call AlignMaps#StdAlign(1)
+   else
+    exe "norm 'zk"
+    call AlignMaps#StdAlign(1)
+   endif
+   'y,'zs/^\(\s*\) @/\1/e
+  endif
+  'a,'z-1s/\%x0f/=/ge
+  'y,'zs/ @//eg
+"  call Dret("AlignMaps#Equals")
+endfun
+
+" ---------------------------------------------------------------------
+" AlignMaps#Afnc: useful for splitting one-line function beginnings {{{2
+"            into one line per argument format
+fun! AlignMaps#Afnc()
+"  call Dfunc("AlignMaps#Afnc()")
+
+  " keep display quiet
+  let chkeep = &ch
+  let gdkeep = &gd
+  let vekeep = &ve
+  set ch=2 nogd ve=
+
+  " will use marks y,z ; save current values
+  let mykeep = SaveMark("'y")
+  let mzkeep = SaveMark("'z")
+
+  " Find beginning of function -- be careful to skip over comments
+  let cmmntid  = synIDtrans(hlID("Comment"))
+  let stringid = synIDtrans(hlID("String"))
+  exe "norm! ]]"
+  while search(")","bW") != 0
+"   call Decho("line=".line(".")." col=".col("."))
+   let parenid= synIDtrans(synID(line("."),col("."),1))
+   if parenid != cmmntid && parenid != stringid
+   	break
+   endif
+  endwhile
+  norm! %my
+  s/(\s*\(\S\)/(\r  \1/e
+  exe "norm! `y%"
+  s/)\s*\(\/[*/]\)/)\r\1/e
+  exe "norm! `y%mz"
+  'y,'zs/\s\+$//e
+  'y,'zs/^\s\+//e
+  'y+1,'zs/^/  /
+
+  " insert newline after every comma only one parenthesis deep
+  sil! exe "norm! `y\<right>h"
+  let parens   = 1
+  let cmmnt    = 0
+  let cmmntline= -1
+  while parens >= 1
+"   call Decho("parens=".parens." @a=".@a)
+   exe 'norm! ma "ay`a '
+   if @a == "("
+    let parens= parens + 1
+   elseif @a == ")"
+    let parens= parens - 1
+
+   " comment bypass:  /* ... */  or //...
+   elseif cmmnt == 0 && @a == '/'
+    let cmmnt= 1
+   elseif cmmnt == 1
+	if @a == '/'
+	 let cmmnt    = 2   " //...
+	 let cmmntline= line(".")
+	elseif @a == '*'
+	 let cmmnt= 3   " /*...
+	else
+	 let cmmnt= 0
+	endif
+   elseif cmmnt == 2 && line(".") != cmmntline
+	let cmmnt    = 0
+	let cmmntline= -1
+   elseif cmmnt == 3 && @a == '*'
+	let cmmnt= 4
+   elseif cmmnt == 4
+	if @a == '/'
+	 let cmmnt= 0   " ...*/
+	elseif @a != '*'
+	 let cmmnt= 3
+	endif
+
+   elseif @a == "," && parens == 1 && cmmnt == 0
+	exe "norm! i\<CR>\<Esc>"
+   endif
+  endwhile
+  norm! `y%mz%
+  sil! 'y,'zg/^\s*$/d
+
+  " perform substitutes to mark fields for Align
+  sil! 'y+1,'zv/^\//s/^\s\+\(\S\)/  \1/e
+  sil! 'y+1,'zv/^\//s/\(\S\)\s\+/\1 /eg
+  sil! 'y+1,'zv/^\//s/\* \+/*/ge
+  sil! 'y+1,'zv/^\//s/\w\zs\s*\*/ */ge
+  "                                                 func
+  "                    ws  <- declaration   ->    <-ptr  ->   <-var->    <-[array][]    ->   <-glop->      <-end->
+  sil! 'y+1,'zv/^\//s/^\s*\(\(\K\k*\s*\)\+\)\s\+\([(*]*\)\s*\(\K\k*\)\s*\(\(\[.\{-}]\)*\)\s*\(.\{-}\)\=\s*\([,)]\)\s*$/  \1@#\3@\4\5@\7\8/e
+  sil! 'y+1,'z+1g/^\s*\/[*/]/norm! kJ
+  sil! 'y+1,'z+1s%/[*/]%@&@%ge
+  sil! 'y+1,'z+1s%*/%@&%ge
+  AlignCtrl mIp0P0=l @
+  sil! 'y+1,'zAlign
+  sil! 'y,'zs%@\(/[*/]\)@%\t\1 %e
+  sil! 'y,'zs%@\*/% */%e
+  sil! 'y,'zs/@\([,)]\)/\1/
+  sil! 'y,'zs/@/ /
+  AlignCtrl mIlrp0P0= # @
+  sil! 'y+1,'zAlign
+  sil! 'y+1,'zs/#/ /
+  sil! 'y+1,'zs/@//
+  sil! 'y+1,'zs/\(\s\+\)\([,)]\)/\2\1/e
+
+  " Restore
+  call RestoreMark(mykeep)
+  call RestoreMark(mzkeep)
+  let &ch= chkeep
+  let &gd= gdkeep
+  let &ve= vekeep
+
+"  call Dret("AlignMaps#Afnc")
+endfun
+
+" ---------------------------------------------------------------------
+"  AlignMaps#FixMultiDec: converts a   type arg,arg,arg;   line to multiple lines {{{2
+fun! AlignMaps#FixMultiDec()
+"  call Dfunc("AlignMaps#FixMultiDec()")
+
+  " save register x
+  let xkeep   = @x
+  let curline = getline(".")
+"  call Decho("curline<".curline.">")
+
+  " Get the type.  I'm assuming one type per line (ie.  int x; double y;   on one line will not be handled properly)
+  let @x=substitute(curline,'^\(\s*[a-zA-Z_ \t][a-zA-Z0-9_ \t]*\)\s\+[(*]*\h.*$','\1','')
+"  call Decho("@x<".@x.">")
+
+  " transform line
+  exe 's/,/;\r'.@x.' /ge'
+
+  "restore register x
+  let @x= xkeep
+
+"  call Dret("AlignMaps#FixMultiDec : my=".line("'y")." mz=".line("'z"))
+endfun
+
+" ---------------------------------------------------------------------
+"  Restore: {{{1
+let &cpo= s:keepcpo
+unlet s:keepcpo
+" vim: ts=4 fdm=marker
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/LaTeXtoUnicode.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/LaTeXtoUnicode.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/LaTeXtoUnicode.vim	(revision 27955)
@@ -0,0 +1,755 @@
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+" Support for LaTex-to-Unicode conversion as in the Julia REPL "
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+function! s:L2U_Setup()
+
+  call s:L2U_SetupGlobal()
+
+  " Keep track of whether LaTeX-to-Unicode is activated
+  " (used when filetype changes)
+  let b:l2u_enabled = get(b:, "l2u_enabled", 0)
+  let b:l2u_autodetect_enable = get(b:, "l2u_autodetect_enable", 1)
+
+  " Did we install the L2U tab/as-you-type/keymap... mappings?
+  let b:l2u_tab_set = get(b:, "l2u_tab_set", 0)
+  let b:l2u_cmdtab_set = get(b:, "l2u_cmdtab_set", 0)
+  let b:l2u_autosub_set = get(b:, "l2u_autosub_set", 0)
+  let b:l2u_keymap_set = get(b:, "l2u_keymap_set", 0)
+
+  " Following are some flags used to pass information between the function which
+  " attempts the LaTeX-to-Unicode completion and the fallback function
+
+  " Was a (possibly partial) completion found?
+  let b:l2u_found_completion = 0
+  " Is the cursor just after a single backslash
+  let b:l2u_singlebslash = 0
+  " Are we in the middle of a L2U tab completion?
+  let b:l2u_tab_completing = 0
+  " Are we calling the tab fallback?
+  let b:l2u_in_fallback = 0
+
+endfunction
+
+function! s:L2U_SetupGlobal()
+
+  " Initialization of global and script-local variables
+  " is only performed once
+  if get(g:, "l2u_did_global_setup", 0)
+    return
+  endif
+
+  let g:l2u_did_global_setup = 1
+
+  let g:l2u_symbols_dict = julia_latex_symbols#get_dict()
+
+  call s:L2U_deprecated_options()
+
+  if v:version < 704
+      let g:latex_to_unicode_tab = "off"
+      let g:latex_to_unicode_auto = 0
+  endif
+
+  " YouCompleteMe and neocomplcache/neocomplete/deoplete plug-ins do not work well
+  " with LaTeX symbols suggestions
+  if exists("g:loaded_youcompleteme") ||
+        \ exists("g:loaded_neocomplcache") ||
+        \ exists("g:loaded_neocomplete") ||
+        \ exists("g:loaded_deoplete")
+    let g:latex_to_unicode_suggestions = 0
+  endif
+
+  " Forcibly get out of completion mode: feed
+  " this string with feedkeys(s:l2u_esc_sequence, 'n')
+  let s:l2u_esc_sequence = " \b"
+
+  " Trigger for the previous mapping of <Tab>
+  let s:l2u_fallback_trigger = "\u0091L2UFallbackTab"
+
+  " Trigger for the previous mapping of <CR>
+  let s:l2u_fallback_trigger_cr = "\u0091L2UFallbackCR"
+
+endfunction
+
+" Each time the filetype changes, we may need to enable or
+" disable the LaTeX-to-Unicode functionality
+function! LaTeXtoUnicode#Refresh()
+  call s:L2U_Setup()
+
+  " skip if manually overridden
+  if !b:l2u_autodetect_enable
+    return ''
+  endif
+
+  " by default, LaTeX-to-Unicode is only active on julia files
+  let file_types = s:L2U_file_type_regex(get(g:, "latex_to_unicode_file_types", "julia"))
+  let file_types_blacklist = s:L2U_file_type_regex(get(g:, "latex_to_unicode_file_types_blacklist", "$^"))
+
+  if match(&filetype, file_types) < 0 || match(&filetype, file_types_blacklist) >= 0
+    if b:l2u_enabled
+      call LaTeXtoUnicode#Disable(1)
+    else
+      return ''
+    endif
+  elseif !b:l2u_enabled
+    call LaTeXtoUnicode#Enable(1)
+  endif
+endfunction
+
+function! LaTeXtoUnicode#Enable(...)
+  let auto_set = a:0 > 0 ? a:1 : 0
+
+  if b:l2u_enabled
+    return ''
+  end
+
+  call s:L2U_ResetLastCompletionInfo()
+
+  let b:l2u_enabled = 1
+  let b:l2u_autodetect_enable = auto_set
+
+  " If we're editing the first file upon opening vim, this will only init the
+  " command line mode mapping, and the full initialization will be performed by
+  " the autocmd triggered by InsertEnter, defined in /ftdetect.vim.
+  " Otherwise, if we're opening a file from within a running vim session, this
+  " will actually initialize all the LaTeX-to-Unicode substitutions.
+  call LaTeXtoUnicode#Init()
+  return ''
+endfunction
+
+function! LaTeXtoUnicode#Disable(...)
+  let auto_set = a:0 > 0 ? a:1 : 0
+  if !b:l2u_enabled
+    return ''
+  endif
+  let b:l2u_enabled = 0
+  let b:l2u_autodetect_enable = auto_set
+  call LaTeXtoUnicode#Init()
+  return ''
+endfunction
+
+" Translate old options to their new equivalents
+function! s:L2U_deprecated_options()
+  for [new, old] in [["latex_to_unicode_tab",         "julia_latex_to_unicode"],
+                 \   ["latex_to_unicode_auto",        "julia_auto_latex_to_unicode"],
+                 \   ["latex_to_unicode_suggestions", "julia_latex_suggestions_enabled"],
+                 \   ["latex_to_unicode_eager",       "julia_latex_to_unicode_eager"]]
+    if !has_key(g:, new) && has_key(g:, old)
+      exec "let g:" . new . " = g:" . old
+    endif
+  endfor
+
+  if has_key(g:, "latex_to_unicode_tab")
+    if g:latex_to_unicode_tab is# 1
+      let g:latex_to_unicode_tab = "on"
+    elseif g:latex_to_unicode_tab is# 0
+      let g:latex_to_unicode_tab = "off"
+    endif
+  endif
+endfunction
+
+function! s:L2U_file_type_regex(ft)
+  if type(a:ft) == 3
+    let file_types = "\\%(" . join(a:ft, "\\|") . "\\)"
+  elseif type(a:ft) == 1
+    let file_types = a:ft
+  else
+    echoerr "invalid file_type specification"
+  endif
+  return "^" . file_types . "$"
+endfunction
+
+" Some data used to keep track of the previous completion attempt.
+" Used to detect
+" 1) if we just attempted the same completion, or
+" 2) if backspace was just pressed while completing
+" This function initializes and resets the required info
+
+function! s:L2U_ResetLastCompletionInfo()
+  let b:l2u_completed_once = 0
+  let b:l2u_bs_while_completing = 0
+  let b:l2u_last_compl = {
+        \ 'line': '',
+        \ 'col0': -1,
+        \ 'col1': -1,
+        \ }
+endfunction
+
+" This function only detects whether an exact match is found for a LaTeX
+" symbol in front of the cursor
+function! s:L2U_ismatch()
+  let col1 = col('.')
+  let l = getline('.')
+  let col0 = match(l[0:col1-2], '\\[^[:space:]\\]\+$')
+  if col0 == -1
+    return 0
+  endif
+  let base = l[col0:col1-2]
+  return has_key(g:l2u_symbols_dict, base)
+endfunction
+
+" Helper function to sort suggestion entries
+function! s:L2U_partmatches_sort(p1, p2)
+  return a:p1.word > a:p2.word ? 1 : a:p1.word < a:p2.word ? -1 : 0
+endfunction
+
+" Helper function to fix display of Unicode compose characters
+" in the suggestions menu (they are displayed on top of '◌')
+function! s:L2U_fix_compose_chars(uni)
+  let u = matchstr(a:uni, '^.')
+  let isc = ("\u0300" <= u && u <= "\u036F") ||
+          \ ("\u1DC0" <= u && u <= "\u1DFF") ||
+          \ ("\u20D0" <= u && u <= "\u20FF") ||
+          \ ("\uFE20" <= u && u <= "\uFE2F")
+  return isc ? "\u25CC" . a:uni : a:uni
+endfunction
+
+" Helper function to find the longest common prefix among
+" partial completion matches (used when suggestions are disabled
+" and in command line mode)
+function! s:L2U_longest_common_prefix(partmatches)
+  let common = a:partmatches[0]
+  for i in range(1, len(a:partmatches)-1)
+    let p = a:partmatches[i]
+    if len(p) < len(common)
+      let common = common[0 : len(p)-1]
+    endif
+    for j in range(1, len(common)-1)
+      if p[j] != common[j]
+        let common = common[0 : j-1]
+        break
+      endif
+    endfor
+  endfor
+  return common
+endfunction
+
+" Completion function. Besides the usual two-stage completefunc behaviour,
+" it has the following peculiar features:
+"  *) keeps track of the previous completion attempt
+"  *) sets some info to be used by the fallback function
+"  *) either returns a list of completions if a partial match is found, or a
+"     Unicode char if an exact match is found
+"  *) forces its way out of completion mode through a hack in some cases
+function! LaTeXtoUnicode#completefunc(findstart, base)
+  if a:findstart
+    " first stage
+    " avoid infinite loop if the fallback happens to call completion
+    if b:l2u_in_fallback
+      let b:l2u_in_fallback = 0
+      return -3
+    endif
+    " make sure that the options are still set
+    " (it may happen that <C-X><C-U> itself triggers the fallback before
+    " restarting, thus reseetting them; this happens when the prompt is
+    " waiting for ^U^N^P during a partial completion)
+    call s:L2U_SetCompleteopt()
+    " setup the cleanup/fallback operations when we're done
+    call s:L2U_InsertCompleteDoneAutocommand()
+    call s:L2U_InsertInsertLeaveAutocommand()
+    " set info for the callback
+    let b:l2u_found_completion = 1
+    " analyse current line
+    let col1 = col('.')
+    let l = getline('.')
+    let col0 = match(l[0:col1-2], '\\[^[:space:]\\]\+$')
+    " compare with previous completion attempt
+    let b:l2u_bs_while_completing = 0
+    let b:l2u_completed_once = 0
+    if col0 == b:l2u_last_compl['col0']
+      let prevl = b:l2u_last_compl['line']
+      if col1 == b:l2u_last_compl['col1'] && l ==# prevl
+        let b:l2u_completed_once = 1
+      elseif col1 == b:l2u_last_compl['col1'] - 1 && l ==# prevl[0 : col1-2] . prevl[col1 : -1]
+        let b:l2u_bs_while_completing = 1
+      endif
+    endif
+    " store completion info for next attempt
+    let b:l2u_last_compl['col0'] = col0
+    let b:l2u_last_compl['col1'] = col1
+    let b:l2u_last_compl['line'] = l
+    " is the cursor right after a backslash?
+    let b:l2u_singlebslash = (match(l[0:col1-2], '\\$') >= 0)
+    " completion not found
+    if col0 == -1
+      let b:l2u_found_completion = 0
+      call feedkeys(s:l2u_esc_sequence, 'n')
+      let col0 = -2
+    endif
+    return col0
+  else
+    " read settings (eager mode is implicit when suggestions are disabled)
+    let suggestions = get(g:, "latex_to_unicode_suggestions", 1)
+    let eager = get(g:, "latex_to_unicode_eager", 1) || !suggestions
+    " search for matches
+    let partmatches = []
+    let exact_match = 0
+    for k in keys(g:l2u_symbols_dict)
+      if k ==# a:base
+        let exact_match = 1
+      endif
+      if len(k) >= len(a:base) && k[0 : len(a:base)-1] ==# a:base
+        let menu = s:L2U_fix_compose_chars(g:l2u_symbols_dict[k])
+        if suggestions
+          call add(partmatches, {'word': k, 'menu': menu})
+        else
+          call add(partmatches, k)
+        endif
+      endif
+    endfor
+    " exact matches are replaced with Unicode
+    " exceptions:
+    "  *) we reached an exact match by pressing backspace while completing
+    "  *) the exact match is one among many, and the eager setting is
+    "     disabled, and it's the first time this completion is attempted
+    if exact_match && !b:l2u_bs_while_completing && (len(partmatches) == 1 || eager || b:l2u_completed_once)
+      " the completion is successful: reset the last completion info...
+      call s:L2U_ResetLastCompletionInfo()
+      " ...force our way out of completion mode...
+      call feedkeys(s:l2u_esc_sequence, 'n')
+      " ...return the Unicode symbol
+      return [g:l2u_symbols_dict[a:base]]
+    endif
+    if !empty(partmatches)
+      " here, only partial matches were found; either keep just the longest
+      " common prefix, or pass them on
+      if !suggestions
+        let partmatches = [s:L2U_longest_common_prefix(partmatches)]
+      else
+        call sort(partmatches, "s:L2U_partmatches_sort")
+      endif
+    endif
+    if empty(partmatches)
+      call feedkeys(s:l2u_esc_sequence, 'n')
+      let b:l2u_found_completion = 0
+    endif
+    return partmatches
+  endif
+endfunction
+
+function! LaTeXtoUnicode#PutLiteral(k)
+  call feedkeys(a:k, 'ni')
+  return ''
+endfunction
+
+function! LaTeXtoUnicode#PutLiteralCR()
+  call feedkeys('
+', 'ni')
+  return ''
+endfunction
+
+" Function which saves the current insert-mode mapping of a key sequence `s`
+" and associates it with another key sequence `k` (e.g. stores the current
+" <Tab> mapping into the Fallback trigger).
+" It returns the previous maparg dictionary, so that the previous mapping can
+" be reinstated if needed.
+function! s:L2U_SetFallbackMapping(s, k)
+  let mmdict = maparg(a:s, 'i', 0, 1)
+  if empty(mmdict)
+    exe 'inoremap <buffer> ' . a:k . ' ' . a:s
+    return mmdict
+  endif
+  let rhs = mmdict["rhs"]
+  if rhs =~# '^<Plug>L2U'
+    return mmdict
+  endif
+  let pre = '<buffer>'
+  let pre = pre . (mmdict["silent"] ? '<silent>' : '')
+  let pre = pre . (mmdict["expr"] ? '<expr>' : '')
+  if mmdict["noremap"]
+    let cmd = 'inoremap '
+  else
+    let cmd = 'imap '
+    " This is a nasty hack used to prevent infinite recursion. It's not a
+    " general solution. Also, it doesn't work with <CR> since that stops
+    " parsing of the <C-R>=... expression, so we need to special-case it.
+    " Also, if the original mapping was intended to be recursive, this
+    " will break it.
+    if a:s != "<CR>"
+      let rhs = substitute(rhs, '\c' . a:s, "\<C-R>=LaTeXtoUnicode#PutLiteral('" . a:s . "')\<CR>", 'g')
+    else
+      let rhs = substitute(rhs, '\c' . a:s, "\<C-R>=LaTeXtoUnicode#PutLiteralCR()\<CR>", 'g')
+    endif
+    " Make the mapping silent even if it wasn't originally
+    if !mmdict["silent"]
+      let pre = pre . '<silent>'
+    endif
+  endif
+  exe cmd . pre . ' ' . a:k . ' ' . rhs
+  return mmdict
+endfunction
+
+" Reinstate a mapping from the maparg dict returned by SetFallbackMapping
+" (only if buffer-local, since otherwise it should still be available)
+function! s:L2U_ReinstateMapping(mmdict)
+  if empty(a:mmdict) || !a:mmdict["buffer"]
+    return ''
+  endif
+  let lhs = a:mmdict["lhs"]
+  let rhs = a:mmdict["rhs"]
+  if rhs =~# '^<Plug>L2U'
+    return ''
+  endif
+  let pre = '<buffer>'
+  let pre = pre . (a:mmdict["silent"] ? '<silent>' : '')
+  let pre = pre . (a:mmdict["expr"] ? '<expr>' : '')
+  let cmd = a:mmdict["noremap"] ? 'inoremap ' : 'imap '
+  exe cmd . pre . ' ' . lhs . ' ' . rhs
+endfunction
+
+" This is the function which is mapped to <Tab>
+function! LaTeXtoUnicode#Tab()
+  " the <Tab> is passed through to the fallback mapping if the completion
+  " menu is present, and it hasn't been raised by the L2U tab, and there
+  " isn't an exact match before the cursor
+  if pumvisible() && !b:l2u_tab_completing && !s:L2U_ismatch()
+    call feedkeys(s:l2u_fallback_trigger)
+    return ''
+  endif
+  " ensure that we start completion with some reasonable options
+  call s:L2U_SetCompleteopt()
+  " reset the in_fallback info
+  let b:l2u_in_fallback = 0
+  let b:l2u_tab_completing = 1
+  " invoke completion; failure to perform LaTeX-to-Unicode completion is
+  " handled by the CompleteDone autocommand.
+  call feedkeys("\<C-X>\<C-U>", 'n')
+  return ""
+endfunction
+
+" This function is called at every CompleteDone event, and is meant to handle
+" the failures of LaTeX-to-Unicode completion by calling a fallback
+function! LaTeXtoUnicode#FallbackCallback()
+  call s:L2U_RemoveCompleteDoneAutocommand()
+  call s:L2U_RestoreCompleteopt()
+  if !b:l2u_tab_completing
+    " completion was not initiated by L2U, nothing to do
+    return
+  endif
+  " at this point L2U tab completion is over
+  let b:l2u_tab_completing = 0
+  " if the completion was successful do nothing
+  if b:l2u_found_completion == 1 || b:l2u_singlebslash == 1
+    return
+  endif
+  " fallback
+  let b:l2u_in_fallback = 1
+  call feedkeys(s:l2u_fallback_trigger)
+  return
+endfunction
+
+" This is the function that performs the substitution in command-line mode
+function! LaTeXtoUnicode#CmdTab(trigger)
+  " first stage
+  " analyse command line
+  let col1 = getcmdpos() - 1
+  let l = getcmdline()
+  let col0 = match(l[0:col1-1], '\\[^[:space:]\\]\+$')
+  let b:l2u_singlebslash = (match(l[0:col1-1], '\\$') >= 0)
+  " completion not found
+  if col0 == -1
+    if a:trigger == &wildchar
+      call feedkeys(nr2char(a:trigger), 'nt') " fall-back to the default wildchar
+    elseif a:trigger == char2nr("\<S-Tab>")
+      call feedkeys("\<S-Tab>", 'nt') " fall-back to the default <S-Tab>
+    endif
+    return ''
+  endif
+  let base = l[col0 : col1-1]
+  " search for matches
+  let partmatches = []
+  let exact_match = 0
+  for k in keys(g:l2u_symbols_dict)
+    if k ==# base
+      let exact_match = 1
+      break
+    elseif len(k) >= len(base) && k[0 : len(base)-1] ==# base
+      call add(partmatches, k)
+    endif
+  endfor
+  if !exact_match && len(partmatches) == 0
+    " no matches, call fallbacks
+    if a:trigger == &wildchar
+      call feedkeys(nr2char(a:trigger), 'nt') " fall-back to the default wildchar
+    elseif a:trigger == char2nr("\<S-Tab>")
+      call feedkeys("\<S-Tab>", 'nt') " fall-back to the default <S-Tab>
+    endif
+  elseif exact_match
+    " exact matches are replaced with Unicode
+    let unicode = g:l2u_symbols_dict[base]
+    call feedkeys(repeat("\b", len(base)) . unicode, 'nt')
+  else
+    " no exact match: complete with the longest common prefix
+    let common = s:L2U_longest_common_prefix(partmatches)
+    call feedkeys(common[len(base):], 'nt')
+  endif
+  return ''
+endfunction
+
+function! s:L2U_SetCompleteopt()
+  " temporary change completeopt to use settings which make sense
+  " for L2U
+  let backup_new = 0
+  if !exists('b:l2u_backup_completeopt')
+    let b:l2u_backup_completeopt = &completeopt
+    let backup_new = 1
+  endif
+  noautocmd set completeopt+=longest
+  noautocmd set completeopt-=noinsert
+  noautocmd set completeopt-=noselect
+  noautocmd set completeopt-=menuone
+  if backup_new
+    let b:l2u_modified_completeopt = &completeopt
+  endif
+endfunction
+
+function! s:L2U_RestoreCompleteopt()
+  " restore completeopt, but only if nothing else has
+  " messed with it in the meanwhile
+  if exists('b:l2u_backup_completeopt')
+    if exists('b:l2u_modified_completeopt')
+      if &completeopt ==# b:l2u_modified_completeopt
+        noautocmd let &completeopt = b:l2u_backup_completeopt
+      endif
+      unlet b:l2u_modified_completeopt
+    endif
+    unlet b:l2u_backup_completeopt
+  endif
+endfunction
+
+function! s:L2U_InsertCompleteDoneAutocommand()
+  augroup L2UCompleteDone
+    autocmd! * <buffer>
+    " Every time a L2U completion finishes, the fallback may be invoked
+    autocmd CompleteDone <buffer> call LaTeXtoUnicode#FallbackCallback()
+  augroup END
+endfunction
+
+function! s:L2U_RemoveCompleteDoneAutocommand()
+  augroup L2UCompleteDone
+    autocmd! * <buffer>
+  augroup END
+endfunction
+
+function s:L2U_InsertLeaveClenup()
+    call s:L2U_ResetLastCompletionInfo()
+    augroup L2UInsertLeave
+      autocmd! * <buffer>
+    augroup END
+endfunction
+
+function! s:L2U_InsertInsertLeaveAutocommand()
+  augroup L2UInsertLeave
+    autocmd! * <buffer>
+    autocmd InsertLeave <buffer> call s:L2U_InsertLeaveClenup()
+  augroup END
+endfunction
+
+" Setup the L2U tab mapping
+function! s:L2U_SetTab(wait_insert_enter)
+  let opt_do_cmdtab = index(["on", "command", "cmd"], get(g:, "latex_to_unicode_tab", "on")) != -1
+  let opt_do_instab = index(["on", "insert", "ins"], get(g:, "latex_to_unicode_tab", "on")) != -1
+  if !b:l2u_cmdtab_set && opt_do_cmdtab && b:l2u_enabled
+    let b:l2u_cmdtab_keys = get(g:, "latex_to_unicode_cmd_mapping", ['<Tab>','<S-Tab>'])
+    if type(b:l2u_cmdtab_keys) != type([]) " avoid using v:t_list for backward compatibility
+      let b:l2u_cmdtab_keys = [b:l2u_cmdtab_keys]
+    endif
+    for k in b:l2u_cmdtab_keys
+      exec 'let trigger = char2nr("'.(k[0] == '<' ? '\' : '').k.'")'
+      exec 'cnoremap <buffer><expr> '.k.' LaTeXtoUnicode#CmdTab('.trigger.')'
+    endfor
+    let b:l2u_cmdtab_set = 1
+  endif
+  if b:l2u_tab_set
+    return
+  endif
+  " g:did_insert_enter is set from an autocommand in ftdetect
+  if a:wait_insert_enter && !get(g:, "did_insert_enter", 0)
+    return
+  endif
+  if !opt_do_instab || !b:l2u_enabled
+    return
+  endif
+
+  " Backup the previous completefunc (the check is probably not really needed)
+  if get(b:, "l2u_prev_completefunc", "") != "LaTeXtoUnicode#completefunc"
+    let b:l2u_prev_completefunc = &completefunc
+  endif
+  setlocal completefunc=LaTeXtoUnicode#completefunc
+
+  let b:l2u_prev_map_tab = s:L2U_SetFallbackMapping('<Tab>', s:l2u_fallback_trigger)
+  imap <buffer> <Tab> <Plug>L2UTab
+  inoremap <buffer><expr> <Plug>L2UTab LaTeXtoUnicode#Tab()
+
+  let b:l2u_tab_set = 1
+endfunction
+
+" Revert the LaTeX-to-Unicode tab mapping settings
+function! s:L2U_UnsetTab()
+  if b:l2u_cmdtab_set
+    for k in b:l2u_cmdtab_keys
+      exec 'cunmap <buffer> '.k
+    endfor
+    let b:l2u_cmdtab_set = 0
+  endif
+  if !b:l2u_tab_set
+    return
+  endif
+  exec "setlocal completefunc=" . get(b:, "l2u_prev_completefunc", "")
+  iunmap <buffer> <Tab>
+  if empty(maparg("<Tab>", "i"))
+    call s:L2U_ReinstateMapping(b:l2u_prev_map_tab)
+  endif
+  iunmap <buffer> <Plug>L2UTab
+  exe 'iunmap <buffer> ' . s:l2u_fallback_trigger
+  let b:l2u_tab_set = 0
+endfunction
+
+" Function which looks for viable LaTeX-to-Unicode supstitutions as you type
+function! LaTeXtoUnicode#AutoSub(...)
+  " avoid recursive calls
+  if get(b:, "l2u_in_autosub", 0)
+    return ''
+  endif
+  let vc = a:0 == 0 ? v:char : a:1
+  " for some reason function keys seem to be passed as characters 149 (F1-F12)
+  " or 186 (F13-F37, these are entered with shift/ctrl). In such cases, we
+  " can't really do any better than giving up.
+  if char2nr(vc) == 149 || char2nr(vc) == 186
+    return ''
+  endif
+  let b:l2u_in_autosub = 1
+  let col1 = col('.')
+  let lnum = line('.')
+  if col1 == 1
+    if a:0 > 1
+      call feedkeys(a:2, 'mi')
+    endif
+    let b:l2u_in_autosub = 0
+    return ''
+  endif
+  let bs = (vc != "\n")
+  let l = getline(lnum)[0 : col1-1-bs] . v:char
+  let col0 = match(l, '\\\%([_^]\?[A-Za-z]\+\%' . col1 . 'c\%([^A-Za-z]\|$\)\|[_^]\%([0-9()=+-]\)\%' . col1 .'c\%(.\|$\)\)')
+  if col0 == -1
+    if a:0 > 1
+      call feedkeys(a:2, 'mi')
+    endif
+    let b:l2u_in_autosub = 0
+    return ''
+  endif
+  let base = l[col0 : col1-1-bs]
+  let unicode = get(g:l2u_symbols_dict, base, '')
+  if empty(unicode)
+    if a:0 > 1
+      call feedkeys(a:2, 'mi')
+    endif
+    let b:l2u_in_autosub = 0
+    return ''
+  endif
+
+  " perform the substitution, wrapping it in undo breakpoints so that
+  " we can revert it as a whole
+  " at the end, reset the l2u_in_autosub variable without leaving insert mode
+  " the 'i' mode is the only one that works correctly when executing macros
+  " the 'n' mode is to avoid user-defined mappings of \b, <C-G> and <C-\><C-O>
+  call feedkeys("\<C-G>u" .
+             \  repeat("\b", len(base) + bs) . unicode . vc . s:l2u_esc_sequence .
+             \  "\<C-G>u" .
+             \  "\<C-\>\<C-O>:let b:l2u_in_autosub = 0\<CR>",
+             \  'ni')
+  return ''
+endfunction
+
+" Setup the auto as-you-type LaTeX-to-Unicode substitution
+function! s:L2U_SetAutoSub(wait_insert_enter)
+  if b:l2u_autosub_set
+    return
+  endif
+  " g:did_insert_enter is set from an autocommand in ftdetect
+  if a:wait_insert_enter && !get(g:, "did_insert_enter", 0)
+    return
+  endif
+  if !get(g:, "latex_to_unicode_auto", 0) || !b:l2u_enabled
+    return
+  endif
+  " Viable substitutions are searched at every character insertion via the
+  " autocmd InsertCharPre. The <Enter> key does not seem to be catched in
+  " this way though, so we use a mapping for that case.
+
+  let b:l2u_prev_map_cr = s:L2U_SetFallbackMapping('<CR>', s:l2u_fallback_trigger_cr)
+  imap <buffer> <CR> <Plug>L2UAutoSub
+  exec 'inoremap <buffer><expr> <Plug>L2UAutoSub LaTeXtoUnicode#AutoSub("\n", "' . s:l2u_fallback_trigger_cr . '")'
+
+  augroup L2UAutoSub
+    autocmd! * <buffer>
+    autocmd InsertCharPre <buffer> call LaTeXtoUnicode#AutoSub()
+  augroup END
+
+  let b:l2u_autosub_set = 1
+endfunction
+
+" Revert the auto LaTeX-to-Unicode settings
+function! s:L2U_UnsetAutoSub()
+  if !b:l2u_autosub_set
+    return
+  endif
+
+  iunmap <buffer> <CR>
+  if empty(maparg("<CR>", "i"))
+    call s:L2U_ReinstateMapping(b:l2u_prev_map_cr)
+  endif
+  iunmap <buffer> <Plug>L2UAutoSub
+  exe 'iunmap <buffer> ' . s:l2u_fallback_trigger_cr
+  augroup L2UAutoSub
+    autocmd! * <buffer>
+  augroup END
+  let b:l2u_autosub_set = 0
+endfunction
+
+function! s:L2U_SetKeymap()
+  if !b:l2u_keymap_set && get(g:, "latex_to_unicode_keymap", 0) && b:l2u_enabled
+    setlocal keymap=latex2unicode
+    let b:l2u_keymap_set = 1
+  endif
+endfunction
+
+function! s:L2U_UnsetKeymap()
+  if !b:l2u_keymap_set
+    return
+  endif
+  setlocal keymap=
+  let b:l2u_keymap_set = 0
+endfunction
+
+" Initialization. Can be used to re-init when global settings have changed.
+function! LaTeXtoUnicode#Init(...)
+  let wait_insert_enter = a:0 > 0 ? a:1 : 1
+
+  if !wait_insert_enter
+    augroup L2UInit
+      autocmd!
+    augroup END
+  endif
+
+  call s:L2U_UnsetTab()
+  call s:L2U_UnsetAutoSub()
+  call s:L2U_UnsetKeymap()
+
+  call s:L2U_SetTab(wait_insert_enter)
+  call s:L2U_SetAutoSub(wait_insert_enter)
+  call s:L2U_SetKeymap()
+  return ''
+endfunction
+
+function! LaTeXtoUnicode#Toggle()
+  call s:L2U_Setup()
+  if b:l2u_enabled
+    call LaTeXtoUnicode#Disable()
+    echo "LaTeX-to-Unicode disabled"
+  else
+    call LaTeXtoUnicode#Enable()
+    echo "LaTeX-to-Unicode enabled"
+  endif
+  return ''
+endfunction
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/generate_latex_symbols_table.jl
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/generate_latex_symbols_table.jl	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/generate_latex_symbols_table.jl	(revision 27955)
@@ -0,0 +1,17 @@
+#!/bin/env julia
+
+const filename = "julia_latex_symbols"
+const funcname = "get_dict"
+
+open("$filename.vim","w") do f
+    println(f, "\" This file is autogenerated from the script '$(basename(Base.source_path()))'")
+    println(f, "\" The symbols are based on Julia version $VERSION\n")
+    println(f, "scriptencoding utf-8\n")
+    println(f, "function! $filename#$funcname()\n",
+               "  return {\n",
+               "    \\ ",
+               join([string("'", latex, "': '", unicode, "'") for (latex,unicode) in sort!(vcat(collect(REPL.REPLCompletions.latex_symbols),collect(REPL.REPLCompletions.emoji_symbols)), by=x->x[2])],
+                    ",\n    \\ "),
+               "}")
+    println(f, "endfunction")
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/julia.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/julia.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/julia.vim	(revision 27955)
@@ -0,0 +1,166 @@
+function! julia#set_syntax_version(jvers)
+  echo "The julia#set_syntax_version function is deprecated"
+endfunction
+
+function! julia#toggle_deprecated_syntax()
+  echo "The julia#toggle_deprecated_syntax function is deprecated"
+endfunction
+
+if exists("loaded_matchit")
+
+function! julia#toggle_function_blockassign()
+    let sav_pos = getcurpos()
+    let l = getline('.')
+    let c = match(l, '\C\m\<function\s\+.\+(')
+    if c != -1
+        return julia#function_block2assign()
+    endif
+    let c = match(l, '\C\m)\%(::\S\+\)\?\%(\s\+where\s\+.*\)\?\s*=\s*')
+    if c == -1
+        echohl WarningMsg | echo "Not on a function definition or assignment line" | echohl None
+        return
+    endif
+    return julia#function_assign2block()
+endfunction
+
+function! julia#function_block2assign()
+    let sav_pos = getcurpos()
+    let l = getline('.')
+    let c = match(l, '\C\m\<function\s\+.\+(')
+    if c == -1
+        echohl WarningMsg | echo "Not on a function definition line" | echohl None
+        return
+    endif
+    let fpos = copy(sav_pos)
+    let fpos[2] = c+1
+    call setpos('.', fpos)
+    normal %
+    if line('.') != fpos[1]+2 || match(getline('.'), '\C\m^\s*end\s*$') == -1
+        echohl WarningMsg | echo "Only works with 3-lines functions" | echohl None
+        call setpos('.', sav_pos)
+        return
+    endif
+    call setpos('.', fpos)
+    normal! f(
+    normal %
+    while line('.') == fpos[1] && match(l[col('.')-1:], '\C\m)(') == 0
+        normal! l
+        normal %
+    endwhile
+    if line('.') != fpos[1] || match(l[(col('.')-1):], '\C\m)\%(::\S\+\)\?\%(\s\+where\s\+.*\)\?\s*$') != 0
+        echohl WarningMsg | echo "Unrecognized function definition format" | echohl None
+        call setpos('.', sav_pos)
+        return
+    endif
+
+    call setpos('.', fpos)
+    normal! dwA = J
+    if match(getline('.')[(col('.')-1):], '\C\mreturn\>') == 0
+        normal! dw
+    endif
+    if match(getline('.')[(col('.')-1):], '\C\m\s*$') == 0
+        normal! F=C= nothing
+    endif
+    normal! jddk^
+    return
+endfunction
+
+function! julia#function_assign2block()
+    let sav_pos = getcurpos()
+    let l = getline('.')
+    let c = match(l, '\C\m)\%(::\S\+\)\?\%(\s\+where\s\+.*\)\?\s*=\s*')
+    if c == -1
+        echohl WarningMsg | echo "Not on a function assignment-definition line" | echohl None
+        return
+    endif
+    normal ^
+    while match(l[(col('.')-1):], '\%(\S\+\.\)*@') == 0
+        normal! W
+    endwhile
+    normal! ifunction 
+    let l = getline('.')
+    let c = match(l, '\C\m)\%(::\S\+\)\?\%(\s\+where\s\+.*\)\?\s*\zs=\s*')
+    let eqpos = copy(sav_pos)
+    let eqpos[2] = c+1
+    call setpos('.', eqpos)
+    normal! cw
+oend
+    normal %
+    s/\s*$// | noh
+    return
+endfunction
+
+
+let s:nonid_chars = "\U01-\U07" . "\U0E-\U1F" .
+      \             "\"#$'(,.:;=?@`\\U5B{" .
+      \             "\U80-\UA1" . "\UA7\UA8\UAB\UAD\UAF\UB4" . "\UB6-\UB8" . "\UBB\UBF"
+
+let s:nonidS_chars = "[:space:])\\U5D}" . s:nonid_chars
+
+" the following excludes '!' since it can be used as an identifier,
+" and '$' since it can be used in interpolations
+" note that \U2D is '-'
+let s:uniop_chars = "+\\U2D~¬√∛∜"
+
+let s:binop_chars = "=+\\U2D*/\\%÷^&|⊻<>≤≥≡≠≢∈∉⋅×∪∩⊆⊈⊂⊄⊊←→∋∌⊕⊖⊞⊟∘∧⊗⊘↑↓∨⊠±"
+
+" the following is a list of all remainig valid operator chars,
+" but it's more efficient when expressed with ranges (see below)
+" let s:binop_chars_extra = "↔↚↛↠↣↦↮⇎⇏⇒⇔⇴⇶⇷⇸⇹⇺⇻⇼⇽⇾⇿⟵⟶⟷⟷⟹⟺⟻⟼⟽⟾⟿⤀⤁⤂⤃⤄⤅⤆⤇⤌⤍⤎⤏⤐⤑⤔⤕⤖⤗⤘⤝⤞⤟⤠⥄⥅⥆⥇⥈⥊⥋⥎⥐⥒⥓⥖⥗⥚⥛⥞⥟⥢⥤⥦⥧⥨⥩⥪⥫⥬⥭⥰⧴⬱⬰⬲⬳⬴⬵⬶⬷⬸⬹⬺⬻⬼⬽⬾⬿⭀⭁⭂⭃⭄⭇⭈⭉⭊⭋⭌￩￫" .
+"       \                   "∝∊∍∥∦∷∺∻∽∾≁≃≄≅≆≇≈≉≊≋≌≍≎≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟≣≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊃⊅⊇⊉⊋⊏⊐⊑⊒⊜⊩⊬⊮⊰⊱⊲⊳⊴⊵⊶⊷⋍⋐⋑⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿⟈⟉⟒⦷⧀⧁⧡⧣⧤⧥⩦⩧⩪⩫⩬⩭⩮⩯⩰⩱⩲⩳⩴⩵⩶⩷⩸⩹⩺⩻⩼⩽⩾⩿⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪋⪌⪍⪎⪏⪐⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚⪛⪜⪝⪞⪟⪠⪡⪢⪣⪤⪥⪦⪧⪨⪩⪪⪫⪬⪭⪮⪯⪰⪱⪲⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅⫆⫇⫈⫉⫊⫋⫌⫍⫎⫏⫐⫑⫒⫓⫔⫕⫖⫗⫘⫙⫷⫸⫹⫺⊢⊣" .
+"       \                   "⊔∓∔∸≂≏⊎⊽⋎⋓⧺⧻⨈⨢⨣⨤⨥⨦⨧⨨⨩⨪⨫⨬⨭⨮⨹⨺⩁⩂⩅⩊⩌⩏⩐⩒⩔⩖⩗⩛⩝⩡⩢⩣" .
+"       \                   "⊙⊚⊛⊡⊓∗∙∤⅋≀⊼⋄⋆⋇⋉⋊⋋⋌⋏⋒⟑⦸⦼⦾⦿⧶⧷⨇⨰⨱⨲⨳⨴⨵⨶⨷⨸⨻⨼⨽⩀⩃⩄⩋⩍⩎⩑⩓⩕⩘⩚⩜⩞⩟⩠⫛⊍▷⨝⟕⟖⟗" .
+"       \                   "⇵⟰⟱⤈⤉⤊⤋⤒⤓⥉⥌⥍⥏⥑⥔⥕⥘⥙⥜⥝⥠⥡⥣⥥⥮⥯￪￬"
+
+" same as above, but with character ranges, for performance
+let s:binop_chars_extra = "\\U214B\\U2190-\\U2194\\U219A\\U219B\\U21A0\\U21A3\\U21A6\\U21AE\\U21CE\\U21CF\\U21D2\\U21D4\\U21F4-\\U21FF\\U2208-\\U220D\\U2213\\U2214\\U2217-\\U2219\\U221D\\U2224-\\U222A\\U2237\\U2238\\U223A\\U223B\\U223D\\U223E\\U2240-\\U228B\\U228D-\\U229C\\U229E-\\U22A3\\U22A9\\U22AC\\U22AE\\U22B0-\\U22B7\\U22BB-\\U22BD\\U22C4-\\U22C7\\U22C9-\\U22D3\\U22D5-\\U22ED\\U22F2-\\U22FF\\U25B7\\U27C8\\U27C9\\U27D1\\U27D2\\U27D5-\\U27D7\\U27F0\\U27F1\\U27F5-\\U27F7\\U27F7\\U27F9-\\U27FF\\U2900-\\U2918\\U291D-\\U2920\\U2944-\\U2970\\U29B7\\U29B8\\U29BC\\U29BE-\\U29C1\\U29E1\\U29E3-\\U29E5\\U29F4\\U29F6\\U29F7\\U29FA\\U29FB\\U2A07\\U2A08\\U2A1D\\U2A22-\\U2A2E\\U2A30-\\U2A3D\\U2A40-\\U2A45\\U2A4A-\\U2A58\\U2A5A-\\U2A63\\U2A66\\U2A67\\U2A6A-\\U2AD9\\U2ADB\\U2AF7-\\U2AFA\\U2B30-\\U2B44\\U2B47-\\U2B4C\\UFFE9-\\UFFEC"
+
+" a Julia identifier, sort of
+let s:idregex = '[^' . s:nonidS_chars . '0-9!' . s:uniop_chars . s:binop_chars . '][^' . s:nonidS_chars . s:uniop_chars . s:binop_chars . s:binop_chars_extra . ']*'
+
+let s:operators = '\%(' . '\.\%([-+*/^÷%|&!]\|//\|\\\|<<\|>>>\?\)\?=' .
+      \           '\|'  . '[:$<>]=\|||\|&&\||>\|<|\|<:\|:>\|::\|<<\|>>>\?\|//\|[-=]>\|\.\{3\}' .
+      \           '\|'  . '[' . s:uniop_chars . '!$]' .
+      \           '\|'  . '\.\?[' . s:binop_chars . s:binop_chars_extra . ']' .
+      \           '\)'
+
+function! julia#idundercursor()
+    " TODO...
+    let w = expand('<cword>')
+    " let [l,c] = [line('.'),col('.')]
+    " let ll = getline(l)
+    return w
+endfunction
+
+function! julia#gotodefinition()
+    let w = julia#idundercursor()
+    if empty(w)
+        return ''
+    endif
+    let [l,c] = [line('.'),col('.')]
+    let st = map(synstack(l,c), 'synIDattr(v:val, "name")')
+    let n = len(st)
+    if n > 0 && st[-1] =~# '^julia\%(\%(Range\|Ternary\|CTrans\)\?Operator\|\%(Possible\)\?SymbolS\?\|\%(Bl\|Rep\)\?Keyword\|Conditional\|ParDelim\|Char\|Colon\|Typedef\|Number\|Float\|Const\%(Generic\|Bool\)\|ComplexUnit\|\%(Special\|\%(Octal\|Hex\)Escape\)Char\|UniChar\%(Small\|Large\)\|Comment[LM]\|Todo\|Semicolon\)$'
+        return ''
+    endif
+
+    let comprehension = 0
+    let indollar = 0
+    for i in range(n-1, 0, -1)
+        if st[i] =~# '^juliaDollar\%(Var\|Par\|SqBra\)$'
+            let indollar = 1
+        endif
+        if !indollar && st[i] =~# '^julia\%(\a*String\|QuotedParBlockS\?\)$'
+            return ''
+        endif
+        if st[i] =~# '^julia\%(ParBlock\%(InRange\)\?\|SqBraBlock\|\%(Dollar\|StringVars\)\%(Par\|SqBra\)\)$'
+            let comprehension = 1
+        endif
+    endfor
+
+    let s1 = search('\C\<' . w . '\s*=[^=]', 'bcWzs')
+
+    return
+endfunction
+
+endif
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/julia/doc.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/julia/doc.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/julia/doc.vim	(revision 27955)
@@ -0,0 +1,242 @@
+" path to the julia binary to communicate with
+if has('win32') || has('win64')
+  if exists('g:julia#doc#juliapath')
+    " use assigned g:julia#doc#juliapath
+  elseif executable('julia')
+    " use julia command in PATH
+    let g:julia#doc#juliapath = 'julia'
+  else
+    " search julia binary in the default installation paths
+    let pathlist = sort(glob($LOCALAPPDATA . '\Julia-*\bin\julia.exe', 1, 1))
+    let g:julia#doc#juliapath = get(pathlist, -1, 'julia')
+  endif
+else
+  let g:julia#doc#juliapath = get(g:, 'julia#doc#juliapath', 'julia')
+endif
+
+function! s:version() abort
+  let VERSION = {'major': 0, 'minor': 0}
+  if !executable(g:julia#doc#juliapath)
+    return VERSION
+  endif
+
+  let cmd = printf('%s -v', g:julia#doc#juliapath)
+  let output = system(cmd)
+  let versionstr = matchstr(output, '\C^julia version \zs\d\+\.\d\+\ze')
+  let [major, minor] = map(split(versionstr, '\.'), 'str2nr(v:val)')
+  let VERSION.major = major
+  let VERSION.minor = minor
+  return VERSION
+endfunction
+
+let s:VERSION = s:version()
+let s:NODOCPATTERN = '\C\VNo documentation found.'
+
+function! julia#doc#lookup(keyword, ...) abort
+  let juliapath = get(a:000, 0, g:julia#doc#juliapath)
+  let keyword = escape(a:keyword, '"\')
+  let cmd = printf('%s --compile=min --optimize=0 -E "@doc %s"', juliapath, keyword)
+  return systemlist(cmd)
+endfunction
+
+function! julia#doc#open(keyword) abort
+  if empty(a:keyword)
+    call s:warn('Not an appropriate keyword.')
+    return
+  endif
+
+  if !executable(g:julia#doc#juliapath)
+    call s:warn('%s command is not executable', g:julia#doc#juliapath)
+    return
+  endif
+
+  let doc = julia#doc#lookup(a:keyword, g:julia#doc#juliapath)
+  if empty(doc) || match(doc[0], s:NODOCPATTERN) > -1
+    call s:warn('No documentation found for "%s".', a:keyword)
+    return
+  endif
+
+  " workaround for * and ? since a buffername cannot include them
+  let keyword = a:keyword
+  let keyword = substitute(keyword, '\*', ':asterisk:', 'g')
+  let keyword = substitute(keyword, '?', ':question:', 'g')
+  let buffername = printf('juliadoc: %s', keyword)
+
+  call s:write_to_preview_window(doc, "juliadoc", buffername)
+
+  call filter(s:HELPHISTORY, 'v:val isnot# a:keyword')
+  call add(s:HELPHISTORY, a:keyword)
+endfunction
+
+function! s:write_to_preview_window(content, ftype, buffername)
+  " Are we in the preview window from the outset? If not, best to close any
+  " preview windows that might exist.
+  let pvw = &previewwindow
+  if !pvw
+    silent! pclose!
+  endif
+  execute "silent! pedit +setlocal\\ nobuflisted\\ noswapfile\\"
+        \ "buftype=nofile\\ bufhidden=wipe" a:buffername
+  silent! wincmd P
+  if &previewwindow
+    setlocal modifiable noreadonly
+    silent! %delete _
+    call append(0, a:content)
+    silent! $delete _
+    normal! ggj
+    setlocal nomodified readonly nomodifiable
+    execute "setfiletype" a:ftype
+    " Only return to a normal window if we didn't start in a preview window.
+    if !pvw
+      silent! wincmd p
+    endif
+  else
+    " We couldn't make it to the preview window, so as a fallback we dump the
+    " contents in the status area.
+    echo join(a:content, "\n")
+  endif
+endfunction
+
+function! s:warn(...) abort
+  if a:0 == 0
+    return
+  endif
+
+  echohl WarningMsg
+  try
+    if a:0 == 1
+      echo a:1
+    else
+      echo call('printf', a:000)
+    endif
+  finally
+    echohl None
+  endtry
+endfunction
+
+
+
+let s:KEYWORDPATTERN = '\m@\?\h\k*!\?'
+
+" This function is called in normal mode or visual mode.
+function! julia#doc#keywordprg(word) abort
+  if a:word is# ''
+    return
+  endif
+
+  let word = s:unfnameescape(a:word)
+  if word is# expand('<cword>')
+    " 'K' in normal mode
+    " NOTE: Because ! and @ is not in 'iskeyword' option, this func ignore
+    "       the argument to recognize keywords like "@time" and "push!"
+    let view = winsaveview()
+    let lnum = line('.')
+    let tail = searchpos(s:KEYWORDPATTERN, 'ce', lnum)
+    let head = searchpos(s:KEYWORDPATTERN, 'bc', lnum)
+    call winrestview(view)
+    if head == [0, 0] || tail == [0, 0]
+      return
+    else
+      let start = head[1] - 1
+      let end = tail[1] - 1
+      let word = getline(lnum)[start : end]
+    endif
+  endif
+  call julia#doc#open(word)
+endfunction
+
+if exists('+shellslash')
+  let s:ESCAPEDCHARS = " \t\n\"#%'*<?`|"
+else
+  let s:ESCAPEDCHARS = " \t\n*?[{`$\\%#'\"|!<"
+endif
+let s:FNAMEESCAPEPATTERN = '\\\ze[' . escape(s:ESCAPEDCHARS, ']^-\') . ']'
+
+" this function reproduces an original string escaped by fnameescape()
+function! s:unfnameescape(str) abort
+  if a:str is# ''
+    return ''
+  endif
+
+  " NOTE: We cannot determine the original string if a:str starts from '\-',
+  "       '\+' or '\>' because fnameescape('-') ==# fnameescape('\-').
+  if a:str is# '\-'
+    " Remove escape anyway.
+    return '-'
+  endif
+
+  if a:str =~# '^\\[+>]'
+    let str = a:str[1:]
+  else
+    let str = a:str
+  endif
+  return substitute(str, s:FNAMEESCAPEPATTERN, '', 'g')
+endfunction
+
+
+
+let s:HELPPROMPT = 'help?> '
+let s:HELPHISTORY = []
+
+function! julia#doc#prompt() abort
+  let inputhist = s:savehistory('input')
+  echohl MoreMsg
+  try
+    call s:restorehistory('input', s:HELPHISTORY)
+    let keyword = input(s:HELPPROMPT, '', 'customlist,julia#doc#complete')
+
+    " Clear the last prompt
+    normal! :
+  finally
+    echohl None
+    call s:restorehistory('input', inputhist)
+  endtry
+
+  if empty(keyword)
+    return
+  endif
+
+  call julia#doc#open(keyword)
+endfunction
+
+function! s:savehistory(name) abort
+  if histnr(a:name) == -1
+    return []
+  endif
+
+  let history = []
+  for i in range(1, histnr(a:name))
+    let item = histget(a:name, i)
+    if !empty(item)
+      call add(history, item)
+    endif
+  endfor
+  return history
+endfunction
+
+function! s:restorehistory(name, history) abort
+  call histdel(a:name)
+  for item in a:history
+    call histadd(a:name, item)
+  endfor
+endfunction
+
+
+
+if s:VERSION.major == 0 && s:VERSION.minor <= 6
+  let s:REPL_SEARCH = 'Base.Docs.repl_search'
+else
+  let s:REPL_SEARCH = 'import REPL.repl_search; repl_search'
+endif
+
+function! julia#doc#complete(ArgLead, CmdLine, CursorPos) abort
+  return s:likely(a:ArgLead)
+endfunction
+
+function! s:likely(str) abort
+  " escape twice
+  let str = escape(escape(a:str, '"\'), '"\')
+  let cmd = printf('%s --compile=min --optimize=0 -E "%s(\"%s\")"', g:julia#doc#juliapath, s:REPL_SEARCH, str)
+  let output = systemlist(cmd)
+  return split(matchstr(output[0], '\C^search: \zs.*'))
+endfunction
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/julia_blocks.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/julia_blocks.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/julia_blocks.vim	(revision 27955)
@@ -0,0 +1,794 @@
+" Facilities for moving around Julia blocks (e.g. if/end, function/end etc.)
+" (AKA a collection of horrible hacks)
+
+let s:default_mappings = {
+  \  "moveblock_n" : "]]",
+  \  "moveblock_N" : "][",
+  \  "moveblock_p" : "[[",
+  \  "moveblock_P" : "[]",
+  \
+  \  "move_n" : "]j",
+  \  "move_N" : "]J",
+  \  "move_p" : "[j",
+  \  "move_P" : "[J",
+  \
+  \  "select_a" : "aj",
+  \  "select_i" : "ij",
+  \
+  \  "whereami" : "",
+  \  }
+
+function! s:getmapchars(function)
+  if exists("g:julia_blocks_mappings") && has_key(g:julia_blocks_mappings, a:function)
+    return s:escape(g:julia_blocks_mappings[a:function])
+  else
+    return s:escape(s:default_mappings[a:function])
+  endif
+endfunction
+
+function! s:map_move(function, toend, backwards)
+  let chars = s:getmapchars(a:function)
+  if empty(chars)
+    return
+  endif
+  let fn = "julia_blocks#" . a:function
+  let lhs = "<buffer> <nowait> <silent> " . chars . " "
+  let cnt = ":<C-U>let b:jlblk_count=v:count1"
+  exe "nnoremap " . lhs . cnt
+    \ . " <Bar> call " . fn . "()<CR>"
+  exe "onoremap " . lhs . cnt
+    \ . "<CR><Esc>:call julia_blocks#owrapper_move(v:operator, \"" . fn . "\", " . a:toend . ", " . a:backwards . ")<CR>"
+  exe "xnoremap " . lhs . cnt
+    \ . "<CR>gv<Esc>:call julia_blocks#vwrapper_move(\"" . fn . "\")<CR>"
+  let b:jlblk_mapped[a:function] = 1
+endfunction
+
+function! julia_blocks#owrapper_move(oper, function, toend, backwards)
+  let F = function(a:function)
+
+  let save_redraw = &lazyredraw
+  let save_select = &selection
+
+  let restore_cmds = "\<Esc>"
+    \ . ":let &l:selection = \"" . save_select . "\"\<CR>"
+    \ . ":let &l:lazyredraw = " . save_redraw . "\<CR>"
+    \ . ":\<BS>"
+
+  setlocal lazyredraw
+
+  let start_pos = getpos('.')
+  let b:jlblk_abort_calls_esc = 0
+  call F()
+  let b:jlblk_abort_calls_esc = 1
+  let end_pos = getpos('.')
+  if start_pos == end_pos
+    call feedkeys(restore_cmds, 'n')
+  endif
+
+  let &l:selection = "inclusive"
+  if a:backwards || !a:toend
+    let &l:selection = "exclusive"
+  endif
+  if a:toend && a:backwards
+    let end_pos[2] += 1
+  endif
+
+  if s:compare_pos(start_pos, end_pos) > 0
+    let [start_pos, end_pos] = [end_pos, start_pos]
+  endif
+
+  call setpos("'<", start_pos)
+  call setpos("'>", end_pos)
+
+  " NOTE: the 'c' operator behaves differently, for mysterious reasons. We
+  "       simulate it with 'd' followed by 'i' instead
+  call feedkeys("gv" . (a:oper == "c" ? "d" : a:oper) . restore_cmds . (a:oper == "c" ? "i" : ""), 'n')
+endfunction
+
+function! julia_blocks#vwrapper_move(function)
+  let F = function(a:function)
+
+  let s = getpos('.')
+  let b1 = getpos("'<")
+  let b2 = getpos("'>")
+
+  let b = b1 == s ? b2 : b1
+  call setpos('.', s)
+  let b:jlblk_abort_calls_esc = 0
+  call F()
+  let b:jlblk_abort_calls_esc = 1
+  let e = getpos('.')
+  call setpos('.', b)
+  exe "normal " . visualmode()
+  call setpos('.', e)
+endfunction
+
+function! s:unmap(function)
+  if !get(b:jlblk_mapped, a:function, 0)
+    return
+  endif
+  let chars = s:getmapchars(a:function)
+  if empty(chars)
+    " shouldn't happen
+    return
+  endif
+  let mapids = a:function =~# "^move" ? ["n", "x", "o"] :
+	\      a:function =~# "^select" ? ["x", "o"] :
+	\      ["n"]
+  let fn = "julia_blocks#" . a:function
+  let cmd = "<buffer> " . chars
+  for m in mapids
+    exe m . "unmap " . cmd
+  endfor
+  let b:jlblk_mapped[a:function] = 0
+endfunction
+
+function! s:escape(chars)
+  let c = a:chars
+  let c = substitute(c, '|', '<Bar>', 'g')
+  return c
+endfunction
+
+function! s:map_select(function)
+  let chars = s:getmapchars(a:function)
+  if empty(chars)
+    return
+  endif
+  let fn = "julia_blocks#" . a:function
+  let lhs = "<buffer> <nowait> <silent> " . chars . " "
+  let cnt = ":<C-U>let b:jlblk_inwrapper=1<CR>:let b:jlblk_count=max([v:prevcount,1])<CR>"
+  exe "onoremap " . lhs . "<Esc>" . cnt
+    \ . ":call julia_blocks#owrapper_select(v:operator, \"" . fn . "\")<CR>"
+  exe "xnoremap " . lhs . cnt
+    \ . ":call julia_blocks#vwrapper_select(\"" . fn . "\")<CR>"
+  let b:jlblk_mapped[a:function] = 1
+endfunction
+
+function! julia_blocks#owrapper_select(oper, function) ", toend, backwards)
+  let F = function(a:function)
+
+  let save_redraw = &lazyredraw
+  let save_select = &selection
+
+  let restore_cmds = "\<Esc>"
+    \ . ":let &l:selection = \"" . save_select . "\"\<CR>"
+    \ . ":let &l:lazyredraw = " . save_redraw . "\<CR>"
+    \ . ":\<BS>"
+
+  setlocal lazyredraw
+
+  let b:jlblk_abort_calls_esc = 0
+  let retF = F()
+  let b:jlblk_abort_calls_esc = 1
+  if empty(retF)
+    let b:jlblk_inwrapper = 0
+    call feedkeys(restore_cmds, 'n')
+    return
+  end
+  let [start_pos, end_pos] = retF
+
+  if start_pos == end_pos
+    call feedkeys(restore_cmds, 'n')
+  endif
+
+  let &l:selection = "inclusive"
+
+  call setpos("'<", start_pos)
+  call setpos("'>", end_pos)
+
+  let b:jlblk_inwrapper = 0
+  " NOTE: the 'c' operator behaves differently, for mysterious reasons. We
+  "       simulate it with 'd' followed by 'i' instead
+  call feedkeys("gv" . (a:oper == "c" ? "d" : a:oper) . restore_cmds . (a:oper == "c" ? "i" : ""), 'n')
+endfunction
+
+function! julia_blocks#vwrapper_select(function)
+  let F = function(a:function)
+
+  let b:jlblk_abort_calls_esc = 0
+  let retF = F()
+  let b:jlblk_abort_calls_esc = 1
+  if empty(retF)
+    let b:jlblk_inwrapper = 0
+    return
+  end
+  let [start_pos, end_pos] = retF
+  call setpos("'<", start_pos)
+  call setpos("'>", end_pos)
+  normal! gv
+  let b:jlblk_inwrapper = 0
+endfunction
+
+function! s:map_aux(function)
+  let chars = s:getmapchars(a:function)
+  if empty(chars)
+    return
+  endif
+  let fn = "julia_blocks#" . a:function
+  let lhs = "<buffer> <nowait> <silent> " . chars . " "
+  exe "nnoremap " . lhs . ":<C-U>echo " . fn . "()<CR>"
+  let b:jlblk_mapped[a:function] = 1
+endfunction
+
+let s:julia_blocks_functions = {
+      \  "moveblock_N": [1, 0],
+      \  "moveblock_n": [0, 0],
+      \  "moveblock_p": [0, 1],
+      \  "moveblock_P": [1, 1],
+      \
+      \  "move_N": [1, 0],
+      \  "move_n": [0, 0],
+      \  "move_p": [0, 1],
+      \  "move_P": [1, 1],
+      \
+      \  "select_a": [],
+      \  "select_i": [],
+      \
+      \  "whereami": [],
+      \  }
+
+function! julia_blocks#init_mappings()
+  let b:jlblk_mapped = {}
+  for f in keys(s:julia_blocks_functions)
+    if f =~# "^move"
+      let [te, bw] = s:julia_blocks_functions[f]
+      call s:map_move(f, te, bw)
+    elseif f =~# "^select"
+      call s:map_select(f)
+    else
+      call s:map_aux(f)
+    endif
+  endfor
+  call julia_blocks#select_reset()
+  augroup JuliaBlocks
+    au!
+    au InsertEnter <buffer> call julia_blocks#select_reset()
+    au CursorMoved <buffer> call s:cursor_moved()
+  augroup END
+
+  " we would need some autocmd event associated with exiting from
+  " visual mode, but there isn't any, so we resort to this crude
+  " hack
+  " ACTUALLY this creates more problems than it solves, so the crude hack
+  " is just disabled
+  "vnoremap <buffer><silent><unique> <Esc> <Esc>:call julia_blocks#select_reset()<CR>
+endfunction
+
+function! julia_blocks#remove_mappings()
+  if exists("b:jlblk_mapped")
+    for f in keys(s:julia_blocks_functions)
+      call s:unmap(f)
+    endfor
+  endif
+  unlet! b:jlblk_save_pos b:jlblk_view b:jlblk_count b:jlblk_abort_calls_esc
+  unlet! b:jlblk_inwrapper b:jlblk_did_select b:jlblk_doing_select
+  unlet! b:jlblk_last_start_pos b:jlblk_last_end_pos b:jlblk_last_mode
+  augroup JuliaBlocks
+    au!
+  augroup END
+  augroup! JuliaBlocks
+  let md = maparg("<Esc>", "x", 0, 1)
+  if !empty(md) && md["buffer"]
+    vunmap <buffer> <Esc>
+  endif
+endfunction
+
+function! s:restore_view()
+  "redraw! " would ensure correct behaviour, but is annoying
+  let pos = getpos('.')
+  if pos == b:jlblk_save_pos
+    call winrestview(b:jlblk_view)
+    return
+  endif
+  let oldtopline = b:jlblk_view["topline"]
+  let newtopline = winsaveview()["topline"]
+  let l = pos[1]
+  if l >= oldtopline + &l:scrolloff && l <= oldtopline + winheight(0) - 1 - &l:scrolloff
+    if newtopline > oldtopline
+      exe ":normal! " . (newtopline - oldtopline) . "\<C-Y>"
+    elseif newtopline < oldtopline
+      exe ":normal! " . (oldtopline - newtopline) . "\<C-E>"
+    endif
+  " these reduce the scrolling to the minimum (which is maybe not
+  " standard ViM behaviour?)
+  elseif newtopline < oldtopline && (l - newtopline - &l:scrolloff) > 0
+    exe ":normal! " . (l - newtopline - &l:scrolloff) . "\<C-E>"
+  elseif newtopline > oldtopline && (newtopline + &l:scrolloff - l) > 0
+    exe ":normal! " . (l - newtopline - &l:scrolloff) . "\<C-E>"
+  endif
+  call setpos('.', pos) " make sure we didn't screw up
+                        " (since winsaveview may not be up to date)
+endfunction
+
+function! s:abort()
+  call setpos('.', b:jlblk_save_pos)
+  call s:restore_view()
+  if get(b:, "jlblk_abort_calls_esc", 1)
+    call feedkeys("\<Esc>", 'n')
+  endif
+  return 0
+endfunction
+
+function! s:set_mark_tick(...)
+  " This could be a one-liner:
+  "   call setpos("''", b:jlblk_save_pos)
+  " but we want to append to the jumplist,
+  " which setpos doesn't do
+  let p = getpos('.')
+  call setpos('.', b:jlblk_save_pos)
+  normal! m'
+  call setpos('.', p)
+endfunction
+
+function! s:get_save_pos(...)
+  if !exists("b:jlblk_save_pos") || (a:0 == 0) || (a:0 > 0 && a:1)
+    let b:jlblk_save_pos = getpos('.')
+  endif
+  let b:jlblk_view = winsaveview()
+endfunction
+
+function! s:on_end()
+  return getline('.')[col('.')-1] =~# '\k' && expand("<cword>") =~# b:julia_end_keywords
+endfunction
+
+function! s:on_begin()
+  let [l,c] = [line('.'), col('.')]
+  normal! ^
+  let patt = '\%<'.(c+1).'c\(' . b:julia_begin_keywordsm . '\)\%>'.(c-1).'c'
+  let n = search(patt, 'Wnc', l)
+  call cursor(l, c)
+  return n > 0
+endfunction
+
+function! s:matchit()
+  let lkj = exists(":lockjumps") == 2 ? "lockjumps " : ""
+  exe lkj . "normal %"
+endfunction
+
+function! s:move_before_begin()
+  call search(b:julia_begin_keywordsm, 'Wbc')
+  normal! h
+endfunction
+
+function! s:cycle_until_end()
+  let pos = getpos('.')
+  while !s:on_end()
+    call s:matchit()
+    let c = 0
+    if getpos('.') == pos || c > 1000
+      " shouldn't happen, but let's avoid infinite loops anyway
+      return 0
+    endif
+    let c += 1
+  endwhile
+  return 1
+endfunction
+
+function! s:moveto_block_delim(toend, backwards, ...)
+  let pattern = a:toend ? b:julia_end_keywords : b:julia_begin_keywordsm
+  let flags = a:backwards ? 'Wb' : 'W'
+  let cnt = a:0 > 0 ? a:1 : b:jlblk_count
+  if !a:toend && a:backwards && s:on_begin()
+    call s:move_before_begin()
+  endif
+  let ret = 0
+  for c in range(cnt)
+    if a:toend && a:backwards && s:on_end()
+      normal! l
+      normal! bh
+    endif
+    while 1
+      let searchret = search(pattern, flags)
+      if !searchret
+	return ret
+      endif
+      exe "let skip = " . b:match_skip
+      if !skip
+	let ret = 1
+	break
+      endif
+    endwhile
+  endfor
+  return ret
+endfunction
+
+function! s:compare_pos(pos1, pos2)
+  if a:pos1[1] < a:pos2[1]
+    return -1
+  elseif a:pos1[1] > a:pos2[1]
+    return 1
+  elseif a:pos1[2] < a:pos2[2]
+    return -1
+  elseif a:pos1[2] > a:pos2[2]
+    return 1
+  else
+    return 0
+  endif
+endfunction
+
+function! julia_blocks#move_N()
+  call s:get_save_pos()
+
+  let ret = s:moveto_block_delim(1, 0)
+  if !ret
+    return s:abort()
+  endif
+
+  normal! e
+  call s:set_mark_tick()
+
+  return 1
+endfunction
+
+function! julia_blocks#move_n()
+  call s:get_save_pos()
+
+  let ret = s:moveto_block_delim(0, 0)
+  if !ret
+    return s:abort()
+  endif
+
+  call s:set_mark_tick()
+
+  return 1
+endfunction
+
+function! julia_blocks#move_p()
+  call s:get_save_pos()
+
+  let ret = s:moveto_block_delim(0, 1)
+  if !ret
+    return s:abort()
+  endif
+
+  call s:set_mark_tick()
+
+  return 1
+endfunction
+
+function! julia_blocks#move_P()
+  call s:get_save_pos()
+
+  let ret = s:moveto_block_delim(1, 1)
+  if !ret
+    return s:abort()
+  endif
+
+  normal! e
+  call s:set_mark_tick()
+
+  return 1
+endfunction
+
+function! s:moveto_currentblock_end()
+  let flags = 'W'
+  if s:on_end()
+    let flags .= 'c'
+    " NOTE: using "normal! lb" fails at the end of the file (?!)
+    normal! l
+    normal! b
+  endif
+
+  let ret = searchpair(b:julia_begin_keywordsm, '', b:julia_end_keywords, flags, b:match_skip)
+  if ret <= 0
+    return s:abort()
+  endif
+
+  normal! e
+  return 1
+endfunction
+
+function! julia_blocks#moveblock_N()
+  call s:get_save_pos()
+
+  let ret = 0
+  for c in range(b:jlblk_count)
+    let last_seen_pos = getpos('.')
+    if s:on_end()
+      normal! hel
+      let save_pos = getpos('.')
+      let ret_start = s:moveto_block_delim(0, 0, 1)
+      let start1_pos = ret_start ? getpos('.') : [0,0,0,0]
+      call setpos('.', save_pos)
+      if s:on_end()
+	normal! h
+      endif
+      let ret_end = s:moveto_block_delim(1, 0, 1)
+      let end1_pos = ret_end ? getpos('.')  : [0,0,0,0]
+
+      if ret_start && (!ret_end || s:compare_pos(start1_pos, end1_pos) < 0)
+	call setpos('.', start1_pos)
+      else
+	call setpos('.', save_pos)
+      endif
+    endif
+
+    let moveret = s:moveto_currentblock_end()
+    if !moveret && c == 0
+      let moveret = s:moveto_block_delim(0, 0, 1) && s:cycle_until_end()
+      if moveret
+        normal! e
+      endif
+    endif
+    if !moveret
+      call setpos('.', last_seen_pos)
+      break
+    endif
+
+    let ret = 1
+  endfor
+  if !ret
+    return s:abort()
+  endif
+
+  call s:set_mark_tick()
+
+  return 1
+endfunction
+
+function! julia_blocks#moveblock_n()
+  call s:get_save_pos()
+
+  let ret = 0
+  for c in range(b:jlblk_count)
+    let last_seen_pos = getpos('.')
+
+    call s:moveto_currentblock_end()
+    if s:moveto_block_delim(0, 0, 1)
+      let ret = 1
+    else
+      call setpos('.', last_seen_pos)
+      break
+    endif
+  endfor
+
+  if !ret
+    return s:abort()
+  endif
+
+  call s:set_mark_tick()
+
+  return 1
+endfunction
+
+function! julia_blocks#moveblock_p()
+  call s:get_save_pos()
+
+  let ret = 0
+  for c in range(b:jlblk_count)
+    let last_seen_pos = getpos('.')
+    if s:on_begin()
+      call s:move_before_begin()
+      if s:on_end()
+	normal! l
+      endif
+      let save_pos = getpos('.')
+      let ret_start = s:moveto_block_delim(0, 1, 1)
+      let start1_pos = ret_start ? getpos('.') : [0,0,0,0]
+      call setpos('.', save_pos)
+      let ret_end = s:moveto_block_delim(1, 1, 1)
+      let end1_pos = ret_end ? getpos('.') : [0,0,0,0]
+
+      if ret_end && (!ret_start || s:compare_pos(start1_pos, end1_pos) < 0)
+	call setpos('.', end1_pos)
+      else
+	call setpos('.', save_pos)
+      endif
+    endif
+
+    let moveret = s:moveto_currentblock_end()
+    if !moveret && c == 0
+      let moveret = s:moveto_block_delim(1, 1, 1)
+    endif
+    if !moveret
+      call setpos('.', last_seen_pos)
+      break
+    endif
+
+    call s:matchit()
+    let ret = 1
+  endfor
+  if !ret
+    return s:abort()
+  endif
+
+  call s:set_mark_tick()
+  call s:restore_view()
+
+  return 1
+endfunction
+
+function! julia_blocks#moveblock_P()
+  call s:get_save_pos()
+
+  let ret = 0
+  for c in range(b:jlblk_count)
+    let last_seen_pos = getpos('.')
+
+    call s:moveto_currentblock_end()
+    if s:on_end()
+      call s:matchit()
+    endif
+
+    if s:moveto_block_delim(1, 1, 1)
+      " NOTE: normal! he does not work unless &whichwrap inlcudes h
+      normal! h
+      normal! e
+      let ret = 1
+    else
+      call setpos('.', last_seen_pos)
+    endif
+  endfor
+
+  if !ret
+    return s:abort()
+  endif
+
+  call s:set_mark_tick()
+  call s:restore_view()
+
+  return 1
+endfunction
+
+function! julia_blocks#whereami()
+  let b:jlblk_count = v:count1
+  let save_redraw = &lazyredraw
+  setlocal lazyredraw
+  let pos = getpos('.')
+  let ret = julia_blocks#select_a('w')
+  if empty(ret)
+    call setpos('.', pos)
+    let &l:lazyredraw = save_redraw
+    return ""
+  end
+  let [start_pos, end_pos] = ret
+  let m = getline(start_pos[1])[start_pos[2]-1:]
+
+  " If cursor_moved was not forced from select_a, we force it now
+  " (TODO: this is *really* ugly)
+  if end_pos != pos
+    call s:cursor_moved(1)
+  endif
+  call setpos('.', pos)
+  call s:restore_view()
+  let &l:lazyredraw = save_redraw
+  return m
+endfunction
+
+" Block text objects
+
+function! s:find_block(current_mode)
+
+  let flags = 'W'
+
+  if b:jlblk_did_select
+    call setpos('.', b:jlblk_last_start_pos)
+    if !s:cycle_until_end()
+      return s:abort()
+    endif
+    if !(a:current_mode[0] == 'a' && a:current_mode == b:jlblk_last_mode)
+      let flags .= 'c'
+    endif
+  elseif s:on_end()
+    let flags .= 'c'
+    " NOTE: using "normal! lb" fails at the end of the file (?!)
+    normal! l
+    normal! b
+  endif
+  let searchret = searchpair(b:julia_begin_keywordsm, '', b:julia_end_keywords, flags, b:match_skip)
+  if searchret <= 0
+    if !b:jlblk_did_select
+      return s:abort()
+    else
+     call setpos('.', b:jlblk_last_end_pos)
+    endif
+  endif
+
+  let end_pos = getpos('.')
+  " Jump to match
+  call s:matchit()
+  let start_pos = getpos('.')
+
+  let b:jlblk_last_start_pos = copy(start_pos)
+  let b:jlblk_last_end_pos = copy(end_pos)
+
+  return [start_pos, end_pos]
+endfunction
+
+function! s:repeated_find(ai_mode)
+  let repeat = b:jlblk_count + (a:ai_mode == 'i' && v:count1 > 1 ? 1 : 0)
+  for c in range(repeat)
+    let current_mode = (c < repeat - 1 ? 'a' : a:ai_mode)
+    let ret_find_block = s:find_block(current_mode)
+    if empty(ret_find_block)
+      return 0
+    endif
+    let [start_pos, end_pos] = ret_find_block
+    call setpos('.', end_pos)
+    let b:jlblk_last_mode = current_mode
+    if c < repeat - 1
+      let b:jlblk_doing_select = 0
+      let b:jlblk_did_select = 1
+    endif
+  endfor
+  return [start_pos, end_pos]
+endfunction
+
+function! julia_blocks#select_a(...)
+  let mode_flag = a:0 > 0 ? a:1 : ''
+  call s:get_save_pos(!b:jlblk_did_select)
+  let current_pos = getpos('.')
+  let ret_find_block = s:repeated_find('a' . mode_flag)
+  if empty(ret_find_block)
+    return 0
+  endif
+  let [start_pos, end_pos] = ret_find_block
+
+  call setpos('.', end_pos)
+  normal! e
+  let end_pos = getpos('.')
+
+  let b:jlblk_doing_select = 1
+
+  " CursorMove is only triggered if end_pos
+  " end_pos is different than the staring position;
+  " so when starting from the 'd' in 'end' we need to
+  " force it
+  if current_pos == end_pos
+    call s:cursor_moved(1)
+  endif
+
+  call s:set_mark_tick()
+  return [start_pos, end_pos]
+endfunction
+
+function! julia_blocks#select_i()
+  call s:get_save_pos(!b:jlblk_did_select)
+  let current_pos = getpos('.')
+  let ret_find_block = s:repeated_find('i')
+  if empty(ret_find_block)
+    return 0
+  endif
+  let [start_pos, end_pos] = ret_find_block
+
+  if end_pos[1] <= start_pos[1]+1
+    return s:abort()
+  endif
+
+  call setpos('.', end_pos)
+
+  let b:jlblk_doing_select = 1
+
+  let start_pos[1] += 1
+  call setpos('.', start_pos)
+  normal! ^
+  let start_pos = getpos('.')
+  let end_pos[1] -= 1
+  let end_pos[2] = len(getline(end_pos[1]))
+
+  " CursorMove is only triggered if end_pos
+  " end_pos is different than the staring position;
+  " so when starting from the 'd' in 'end' we need to
+  " force it
+  if current_pos == end_pos
+    call s:cursor_moved(1)
+  endif
+
+  call s:set_mark_tick()
+  return [start_pos, end_pos]
+endfunction
+
+function julia_blocks#select_reset()
+  let b:jlblk_did_select = 0
+  let b:jlblk_doing_select = 0
+  let b:jlblk_inwrapper = 0
+  let b:jlblk_last_mode = ""
+endfunction
+
+function! s:cursor_moved(...)
+  if b:jlblk_inwrapper && !(a:0 > 0 && a:1)
+    return
+  endif
+  let b:jlblk_did_select = b:jlblk_doing_select
+  let b:jlblk_doing_select = 0
+endfunction
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/julia_latex_symbols.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/julia_latex_symbols.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/autoload/julia_latex_symbols.vim	(revision 27955)
@@ -0,0 +1,3332 @@
+" This file is autogenerated from the script 'generate_latex_symbols_table.jl'
+" The symbols are based on Julia version 1.5.0-DEV.67
+
+scriptencoding utf-8
+
+function! julia_latex_symbols#get_dict()
+  return {
+    \ '\exclamdown': '¡',
+    \ '\sterling': '£',
+    \ '\yen': '¥',
+    \ '\brokenbar': '¦',
+    \ '\S': '§',
+    \ '\copyright': '©',
+    \ '\:copyright:': '©',
+    \ '\ordfeminine': 'ª',
+    \ '\neg': '¬',
+    \ '\circledR': '®',
+    \ '\:registered:': '®',
+    \ '\highminus': '¯',
+    \ '\degree': '°',
+    \ '\pm': '±',
+    \ '\^2': '²',
+    \ '\^3': '³',
+    \ '\P': '¶',
+    \ '\cdotp': '·',
+    \ '\^1': '¹',
+    \ '\ordmasculine': 'º',
+    \ '\1/4': '¼',
+    \ '\1/2': '½',
+    \ '\3/4': '¾',
+    \ '\questiondown': '¿',
+    \ '\AA': 'Å',
+    \ '\AE': 'Æ',
+    \ '\DH': 'Ð',
+    \ '\times': '×',
+    \ '\O': 'Ø',
+    \ '\TH': 'Þ',
+    \ '\ss': 'ß',
+    \ '\aa': 'å',
+    \ '\ae': 'æ',
+    \ '\eth': 'ð',
+    \ '\dh': 'ð',
+    \ '\div': '÷',
+    \ '\o': 'ø',
+    \ '\th': 'þ',
+    \ '\DJ': 'Đ',
+    \ '\dj': 'đ',
+    \ '\hbar': 'ħ',
+    \ '\imath': 'ı',
+    \ '\L': 'Ł',
+    \ '\l': 'ł',
+    \ '\NG': 'Ŋ',
+    \ '\ng': 'ŋ',
+    \ '\OE': 'Œ',
+    \ '\oe': 'œ',
+    \ '\hvlig': 'ƕ',
+    \ '\nrleg': 'ƞ',
+    \ '\Zbar': 'Ƶ',
+    \ '\doublepipe': 'ǂ',
+    \ '\jmath': 'ȷ',
+    \ '\trna': 'ɐ',
+    \ '\trnsa': 'ɒ',
+    \ '\openo': 'ɔ',
+    \ '\rtld': 'ɖ',
+    \ '\schwa': 'ə',
+    \ '\pgamma': 'ɣ',
+    \ '\pbgam': 'ɤ',
+    \ '\trnh': 'ɥ',
+    \ '\btdl': 'ɬ',
+    \ '\rtll': 'ɭ',
+    \ '\trnm': 'ɯ',
+    \ '\trnmlr': 'ɰ',
+    \ '\ltlmr': 'ɱ',
+    \ '\ltln': 'ɲ',
+    \ '\rtln': 'ɳ',
+    \ '\clomeg': 'ɷ',
+    \ '\ltphi': 'ɸ',
+    \ '\trnr': 'ɹ',
+    \ '\trnrl': 'ɺ',
+    \ '\rttrnr': 'ɻ',
+    \ '\rl': 'ɼ',
+    \ '\rtlr': 'ɽ',
+    \ '\fhr': 'ɾ',
+    \ '\rtls': 'ʂ',
+    \ '\esh': 'ʃ',
+    \ '\trnt': 'ʇ',
+    \ '\rtlt': 'ʈ',
+    \ '\pupsil': 'ʊ',
+    \ '\pscrv': 'ʋ',
+    \ '\invv': 'ʌ',
+    \ '\invw': 'ʍ',
+    \ '\trny': 'ʎ',
+    \ '\rtlz': 'ʐ',
+    \ '\yogh': 'ʒ',
+    \ '\glst': 'ʔ',
+    \ '\reglst': 'ʕ',
+    \ '\inglst': 'ʖ',
+    \ '\turnk': 'ʞ',
+    \ '\dyogh': 'ʤ',
+    \ '\tesh': 'ʧ',
+    \ '\^h': 'ʰ',
+    \ '\^j': 'ʲ',
+    \ '\^r': 'ʳ',
+    \ '\^w': 'ʷ',
+    \ '\^y': 'ʸ',
+    \ '\rasp': 'ʼ',
+    \ '\verts': 'ˈ',
+    \ '\verti': 'ˌ',
+    \ '\lmrk': 'ː',
+    \ '\hlmrk': 'ˑ',
+    \ '\sbrhr': '˒',
+    \ '\sblhr': '˓',
+    \ '\rais': '˔',
+    \ '\low': '˕',
+    \ '\u': '˘',
+    \ '\tildelow': '˜',
+    \ '\^l': 'ˡ',
+    \ '\^s': 'ˢ',
+    \ '\^x': 'ˣ',
+    \ '\grave': '̀',
+    \ '\acute': '́',
+    \ '\hat': '̂',
+    \ '\tilde': '̃',
+    \ '\bar': '̄',
+    \ '\overbar': '̅',
+    \ '\breve': '̆',
+    \ '\dot': '̇',
+    \ '\ddot': '̈',
+    \ '\ovhook': '̉',
+    \ '\ocirc': '̊',
+    \ '\H': '̋',
+    \ '\check': '̌',
+    \ '\candra': '̐',
+    \ '\oturnedcomma': '̒',
+    \ '\ocommatopright': '̕',
+    \ '\droang': '̚',
+    \ '\palh': '̡',
+    \ '\rh': '̢',
+    \ '\c': '̧',
+    \ '\k': '̨',
+    \ '\sbbrg': '̪',
+    \ '\wideutilde': '̰',
+    \ '\underbar': '̲',
+    \ '\strike': '̶',
+    \ '\sout': '̶',
+    \ '\not': '̸',
+    \ '\underleftrightarrow': '͍',
+    \ '\Alpha': 'Α',
+    \ '\Beta': 'Β',
+    \ '\Gamma': 'Γ',
+    \ '\Delta': 'Δ',
+    \ '\Epsilon': 'Ε',
+    \ '\Zeta': 'Ζ',
+    \ '\Eta': 'Η',
+    \ '\Theta': 'Θ',
+    \ '\Iota': 'Ι',
+    \ '\Kappa': 'Κ',
+    \ '\Lambda': 'Λ',
+    \ '\upMu': 'Μ',
+    \ '\upNu': 'Ν',
+    \ '\Xi': 'Ξ',
+    \ '\upOmicron': 'Ο',
+    \ '\Pi': 'Π',
+    \ '\Rho': 'Ρ',
+    \ '\Sigma': 'Σ',
+    \ '\Tau': 'Τ',
+    \ '\Upsilon': 'Υ',
+    \ '\Phi': 'Φ',
+    \ '\Chi': 'Χ',
+    \ '\Psi': 'Ψ',
+    \ '\Omega': 'Ω',
+    \ '\alpha': 'α',
+    \ '\beta': 'β',
+    \ '\gamma': 'γ',
+    \ '\delta': 'δ',
+    \ '\upepsilon': 'ε',
+    \ '\varepsilon': 'ε',
+    \ '\zeta': 'ζ',
+    \ '\eta': 'η',
+    \ '\theta': 'θ',
+    \ '\iota': 'ι',
+    \ '\kappa': 'κ',
+    \ '\lambda': 'λ',
+    \ '\mu': 'μ',
+    \ '\nu': 'ν',
+    \ '\xi': 'ξ',
+    \ '\upomicron': 'ο',
+    \ '\pi': 'π',
+    \ '\rho': 'ρ',
+    \ '\varsigma': 'ς',
+    \ '\sigma': 'σ',
+    \ '\tau': 'τ',
+    \ '\upsilon': 'υ',
+    \ '\varphi': 'φ',
+    \ '\chi': 'χ',
+    \ '\psi': 'ψ',
+    \ '\omega': 'ω',
+    \ '\upvarbeta': 'ϐ',
+    \ '\vartheta': 'ϑ',
+    \ '\phi': 'ϕ',
+    \ '\varpi': 'ϖ',
+    \ '\upoldKoppa': 'Ϙ',
+    \ '\upoldkoppa': 'ϙ',
+    \ '\Stigma': 'Ϛ',
+    \ '\upstigma': 'ϛ',
+    \ '\Digamma': 'Ϝ',
+    \ '\digamma': 'ϝ',
+    \ '\Koppa': 'Ϟ',
+    \ '\upkoppa': 'ϟ',
+    \ '\Sampi': 'Ϡ',
+    \ '\upsampi': 'ϡ',
+    \ '\varkappa': 'ϰ',
+    \ '\varrho': 'ϱ',
+    \ '\varTheta': 'ϴ',
+    \ '\epsilon': 'ϵ',
+    \ '\backepsilon': '϶',
+    \ '\^A': 'ᴬ',
+    \ '\^B': 'ᴮ',
+    \ '\^D': 'ᴰ',
+    \ '\^E': 'ᴱ',
+    \ '\^G': 'ᴳ',
+    \ '\^H': 'ᴴ',
+    \ '\^I': 'ᴵ',
+    \ '\^J': 'ᴶ',
+    \ '\^K': 'ᴷ',
+    \ '\^L': 'ᴸ',
+    \ '\^M': 'ᴹ',
+    \ '\^N': 'ᴺ',
+    \ '\^O': 'ᴼ',
+    \ '\^P': 'ᴾ',
+    \ '\^R': 'ᴿ',
+    \ '\^T': 'ᵀ',
+    \ '\^U': 'ᵁ',
+    \ '\^W': 'ᵂ',
+    \ '\^a': 'ᵃ',
+    \ '\^alpha': 'ᵅ',
+    \ '\^b': 'ᵇ',
+    \ '\^d': 'ᵈ',
+    \ '\^e': 'ᵉ',
+    \ '\^epsilon': 'ᵋ',
+    \ '\^g': 'ᵍ',
+    \ '\^k': 'ᵏ',
+    \ '\^m': 'ᵐ',
+    \ '\^o': 'ᵒ',
+    \ '\^p': 'ᵖ',
+    \ '\^t': 'ᵗ',
+    \ '\^u': 'ᵘ',
+    \ '\^v': 'ᵛ',
+    \ '\^beta': 'ᵝ',
+    \ '\^gamma': 'ᵞ',
+    \ '\^delta': 'ᵟ',
+    \ '\^phi': 'ᵠ',
+    \ '\^chi': 'ᵡ',
+    \ '\_i': 'ᵢ',
+    \ '\_r': 'ᵣ',
+    \ '\_u': 'ᵤ',
+    \ '\_v': 'ᵥ',
+    \ '\_beta': 'ᵦ',
+    \ '\_gamma': 'ᵧ',
+    \ '\_rho': 'ᵨ',
+    \ '\_phi': 'ᵩ',
+    \ '\_chi': 'ᵪ',
+    \ '\^c': 'ᶜ',
+    \ '\^f': 'ᶠ',
+    \ '\^iota': 'ᶥ',
+    \ '\^Phi': 'ᶲ',
+    \ '\^z': 'ᶻ',
+    \ '\^theta': 'ᶿ',
+    \ '\enspace': ' ',
+    \ '\quad': ' ',
+    \ '\thickspace': ' ',
+    \ '\thinspace': ' ',
+    \ '\hspace': ' ',
+    \ '\endash': '–',
+    \ '\emdash': '—',
+    \ '\Vert': '‖',
+    \ '\lq': '‘',
+    \ '\rq': '’',
+    \ '\reapos': '‛',
+    \ '\quotedblleft': '“',
+    \ '\quotedblright': '”',
+    \ '\dagger': '†',
+    \ '\ddagger': '‡',
+    \ '\bullet': '•',
+    \ '\dots': '…',
+    \ '\ldots': '…',
+    \ '\perthousand': '‰',
+    \ '\pertenthousand': '‱',
+    \ '\prime': '′',
+    \ '\pprime': '″',
+    \ '\ppprime': '‴',
+    \ '\backprime': '‵',
+    \ '\backpprime': '‶',
+    \ '\backppprime': '‷',
+    \ '\guilsinglleft': '‹',
+    \ '\guilsinglright': '›',
+    \ '\:bangbang:': '‼',
+    \ '\tieconcat': '⁀',
+    \ '\:interrobang:': '⁉',
+    \ '\pppprime': '⁗',
+    \ '\tricolon': '⁝',
+    \ '\nolinebreak': '⁠',
+    \ '\^0': '⁰',
+    \ '\^i': 'ⁱ',
+    \ '\^4': '⁴',
+    \ '\^5': '⁵',
+    \ '\^6': '⁶',
+    \ '\^7': '⁷',
+    \ '\^8': '⁸',
+    \ '\^9': '⁹',
+    \ '\^+': '⁺',
+    \ '\^-': '⁻',
+    \ '\^=': '⁼',
+    \ '\^(': '⁽',
+    \ '\^)': '⁾',
+    \ '\^n': 'ⁿ',
+    \ '\_0': '₀',
+    \ '\_1': '₁',
+    \ '\_2': '₂',
+    \ '\_3': '₃',
+    \ '\_4': '₄',
+    \ '\_5': '₅',
+    \ '\_6': '₆',
+    \ '\_7': '₇',
+    \ '\_8': '₈',
+    \ '\_9': '₉',
+    \ '\_+': '₊',
+    \ '\_-': '₋',
+    \ '\_=': '₌',
+    \ '\_(': '₍',
+    \ '\_)': '₎',
+    \ '\_a': 'ₐ',
+    \ '\_e': 'ₑ',
+    \ '\_o': 'ₒ',
+    \ '\_x': 'ₓ',
+    \ '\_schwa': 'ₔ',
+    \ '\_h': 'ₕ',
+    \ '\_k': 'ₖ',
+    \ '\_l': 'ₗ',
+    \ '\_m': 'ₘ',
+    \ '\_n': 'ₙ',
+    \ '\_p': 'ₚ',
+    \ '\_s': 'ₛ',
+    \ '\_t': 'ₜ',
+    \ '\pes': '₧',
+    \ '\euro': '€',
+    \ '\leftharpoonaccent': '⃐',
+    \ '\rightharpoonaccent': '⃑',
+    \ '\vertoverlay': '⃒',
+    \ '\overleftarrow': '⃖',
+    \ '\vec': '⃗',
+    \ '\dddot': '⃛',
+    \ '\ddddot': '⃜',
+    \ '\enclosecircle': '⃝',
+    \ '\enclosesquare': '⃞',
+    \ '\enclosediamond': '⃟',
+    \ '\overleftrightarrow': '⃡',
+    \ '\enclosetriangle': '⃤',
+    \ '\annuity': '⃧',
+    \ '\threeunderdot': '⃨',
+    \ '\widebridgeabove': '⃩',
+    \ '\underrightharpoondown': '⃬',
+    \ '\underleftharpoondown': '⃭',
+    \ '\underleftarrow': '⃮',
+    \ '\underrightarrow': '⃯',
+    \ '\asteraccent': '⃰',
+    \ '\bbC': 'ℂ',
+    \ '\eulermascheroni': 'ℇ',
+    \ '\scrg': 'ℊ',
+    \ '\scrH': 'ℋ',
+    \ '\frakH': 'ℌ',
+    \ '\bbH': 'ℍ',
+    \ '\planck': 'ℎ',
+    \ '\hslash': 'ℏ',
+    \ '\scrI': 'ℐ',
+    \ '\Im': 'ℑ',
+    \ '\scrL': 'ℒ',
+    \ '\ell': 'ℓ',
+    \ '\bbN': 'ℕ',
+    \ '\numero': '№',
+    \ '\wp': '℘',
+    \ '\bbP': 'ℙ',
+    \ '\bbQ': 'ℚ',
+    \ '\scrR': 'ℛ',
+    \ '\Re': 'ℜ',
+    \ '\bbR': 'ℝ',
+    \ '\xrat': '℞',
+    \ '\trademark': '™',
+    \ '\:tm:': '™',
+    \ '\bbZ': 'ℤ',
+    \ '\ohm': 'Ω',
+    \ '\mho': '℧',
+    \ '\frakZ': 'ℨ',
+    \ '\turnediota': '℩',
+    \ '\Angstrom': 'Å',
+    \ '\scrB': 'ℬ',
+    \ '\frakC': 'ℭ',
+    \ '\scre': 'ℯ',
+    \ '\euler': 'ℯ',
+    \ '\scrE': 'ℰ',
+    \ '\scrF': 'ℱ',
+    \ '\Finv': 'Ⅎ',
+    \ '\scrM': 'ℳ',
+    \ '\scro': 'ℴ',
+    \ '\aleph': 'ℵ',
+    \ '\beth': 'ℶ',
+    \ '\gimel': 'ℷ',
+    \ '\daleth': 'ℸ',
+    \ '\:information_source:': 'ℹ',
+    \ '\bbpi': 'ℼ',
+    \ '\bbgamma': 'ℽ',
+    \ '\bbGamma': 'ℾ',
+    \ '\bbPi': 'ℿ',
+    \ '\bbsum': '⅀',
+    \ '\Game': '⅁',
+    \ '\sansLturned': '⅂',
+    \ '\sansLmirrored': '⅃',
+    \ '\Yup': '⅄',
+    \ '\bbiD': 'ⅅ',
+    \ '\bbid': 'ⅆ',
+    \ '\bbie': 'ⅇ',
+    \ '\bbii': 'ⅈ',
+    \ '\bbij': 'ⅉ',
+    \ '\PropertyLine': '⅊',
+    \ '\upand': '⅋',
+    \ '\1/7': '⅐',
+    \ '\1/9': '⅑',
+    \ '\1/10': '⅒',
+    \ '\1/3': '⅓',
+    \ '\2/3': '⅔',
+    \ '\1/5': '⅕',
+    \ '\2/5': '⅖',
+    \ '\3/5': '⅗',
+    \ '\4/5': '⅘',
+    \ '\1/6': '⅙',
+    \ '\5/6': '⅚',
+    \ '\1/8': '⅛',
+    \ '\3/8': '⅜',
+    \ '\5/8': '⅝',
+    \ '\7/8': '⅞',
+    \ '\1/': '⅟',
+    \ '\0/3': '↉',
+    \ '\leftarrow': '←',
+    \ '\uparrow': '↑',
+    \ '\to': '→',
+    \ '\rightarrow': '→',
+    \ '\downarrow': '↓',
+    \ '\leftrightarrow': '↔',
+    \ '\:left_right_arrow:': '↔',
+    \ '\updownarrow': '↕',
+    \ '\:arrow_up_down:': '↕',
+    \ '\nwarrow': '↖',
+    \ '\:arrow_upper_left:': '↖',
+    \ '\nearrow': '↗',
+    \ '\:arrow_upper_right:': '↗',
+    \ '\searrow': '↘',
+    \ '\:arrow_lower_right:': '↘',
+    \ '\swarrow': '↙',
+    \ '\:arrow_lower_left:': '↙',
+    \ '\nleftarrow': '↚',
+    \ '\nrightarrow': '↛',
+    \ '\leftwavearrow': '↜',
+    \ '\rightwavearrow': '↝',
+    \ '\twoheadleftarrow': '↞',
+    \ '\twoheaduparrow': '↟',
+    \ '\twoheadrightarrow': '↠',
+    \ '\twoheaddownarrow': '↡',
+    \ '\leftarrowtail': '↢',
+    \ '\rightarrowtail': '↣',
+    \ '\mapsfrom': '↤',
+    \ '\mapsup': '↥',
+    \ '\mapsto': '↦',
+    \ '\mapsdown': '↧',
+    \ '\updownarrowbar': '↨',
+    \ '\hookleftarrow': '↩',
+    \ '\:leftwards_arrow_with_hook:': '↩',
+    \ '\hookrightarrow': '↪',
+    \ '\:arrow_right_hook:': '↪',
+    \ '\looparrowleft': '↫',
+    \ '\looparrowright': '↬',
+    \ '\leftrightsquigarrow': '↭',
+    \ '\nleftrightarrow': '↮',
+    \ '\downzigzagarrow': '↯',
+    \ '\Lsh': '↰',
+    \ '\Rsh': '↱',
+    \ '\Ldsh': '↲',
+    \ '\Rdsh': '↳',
+    \ '\linefeed': '↴',
+    \ '\carriagereturn': '↵',
+    \ '\curvearrowleft': '↶',
+    \ '\curvearrowright': '↷',
+    \ '\barovernorthwestarrow': '↸',
+    \ '\barleftarrowrightarrowbar': '↹',
+    \ '\circlearrowleft': '↺',
+    \ '\circlearrowright': '↻',
+    \ '\leftharpoonup': '↼',
+    \ '\leftharpoondown': '↽',
+    \ '\upharpoonright': '↾',
+    \ '\upharpoonleft': '↿',
+    \ '\rightharpoonup': '⇀',
+    \ '\rightharpoondown': '⇁',
+    \ '\downharpoonright': '⇂',
+    \ '\downharpoonleft': '⇃',
+    \ '\rightleftarrows': '⇄',
+    \ '\dblarrowupdown': '⇅',
+    \ '\leftrightarrows': '⇆',
+    \ '\leftleftarrows': '⇇',
+    \ '\upuparrows': '⇈',
+    \ '\rightrightarrows': '⇉',
+    \ '\downdownarrows': '⇊',
+    \ '\leftrightharpoons': '⇋',
+    \ '\rightleftharpoons': '⇌',
+    \ '\nLeftarrow': '⇍',
+    \ '\nLeftrightarrow': '⇎',
+    \ '\nRightarrow': '⇏',
+    \ '\Leftarrow': '⇐',
+    \ '\Uparrow': '⇑',
+    \ '\Rightarrow': '⇒',
+    \ '\Downarrow': '⇓',
+    \ '\Leftrightarrow': '⇔',
+    \ '\Updownarrow': '⇕',
+    \ '\Nwarrow': '⇖',
+    \ '\Nearrow': '⇗',
+    \ '\Searrow': '⇘',
+    \ '\Swarrow': '⇙',
+    \ '\Lleftarrow': '⇚',
+    \ '\Rrightarrow': '⇛',
+    \ '\leftsquigarrow': '⇜',
+    \ '\rightsquigarrow': '⇝',
+    \ '\nHuparrow': '⇞',
+    \ '\nHdownarrow': '⇟',
+    \ '\leftdasharrow': '⇠',
+    \ '\updasharrow': '⇡',
+    \ '\rightdasharrow': '⇢',
+    \ '\downdasharrow': '⇣',
+    \ '\barleftarrow': '⇤',
+    \ '\rightarrowbar': '⇥',
+    \ '\leftwhitearrow': '⇦',
+    \ '\upwhitearrow': '⇧',
+    \ '\rightwhitearrow': '⇨',
+    \ '\downwhitearrow': '⇩',
+    \ '\whitearrowupfrombar': '⇪',
+    \ '\circleonrightarrow': '⇴',
+    \ '\DownArrowUpArrow': '⇵',
+    \ '\rightthreearrows': '⇶',
+    \ '\nvleftarrow': '⇷',
+    \ '\nvrightarrow': '⇸',
+    \ '\nvleftrightarrow': '⇹',
+    \ '\nVleftarrow': '⇺',
+    \ '\nVrightarrow': '⇻',
+    \ '\nVleftrightarrow': '⇼',
+    \ '\leftarrowtriangle': '⇽',
+    \ '\rightarrowtriangle': '⇾',
+    \ '\leftrightarrowtriangle': '⇿',
+    \ '\forall': '∀',
+    \ '\complement': '∁',
+    \ '\partial': '∂',
+    \ '\exists': '∃',
+    \ '\nexists': '∄',
+    \ '\varnothing': '∅',
+    \ '\emptyset': '∅',
+    \ '\increment': '∆',
+    \ '\del': '∇',
+    \ '\nabla': '∇',
+    \ '\in': '∈',
+    \ '\notin': '∉',
+    \ '\smallin': '∊',
+    \ '\ni': '∋',
+    \ '\nni': '∌',
+    \ '\smallni': '∍',
+    \ '\QED': '∎',
+    \ '\prod': '∏',
+    \ '\coprod': '∐',
+    \ '\sum': '∑',
+    \ '\minus': '−',
+    \ '\mp': '∓',
+    \ '\dotplus': '∔',
+    \ '\setminus': '∖',
+    \ '\ast': '∗',
+    \ '\circ': '∘',
+    \ '\vysmblkcircle': '∙',
+    \ '\surd': '√',
+    \ '\sqrt': '√',
+    \ '\cbrt': '∛',
+    \ '\fourthroot': '∜',
+    \ '\propto': '∝',
+    \ '\infty': '∞',
+    \ '\rightangle': '∟',
+    \ '\angle': '∠',
+    \ '\measuredangle': '∡',
+    \ '\sphericalangle': '∢',
+    \ '\mid': '∣',
+    \ '\nmid': '∤',
+    \ '\parallel': '∥',
+    \ '\nparallel': '∦',
+    \ '\wedge': '∧',
+    \ '\vee': '∨',
+    \ '\cap': '∩',
+    \ '\cup': '∪',
+    \ '\int': '∫',
+    \ '\iint': '∬',
+    \ '\iiint': '∭',
+    \ '\oint': '∮',
+    \ '\oiint': '∯',
+    \ '\oiiint': '∰',
+    \ '\clwintegral': '∱',
+    \ '\varointclockwise': '∲',
+    \ '\ointctrclockwise': '∳',
+    \ '\therefore': '∴',
+    \ '\because': '∵',
+    \ '\Colon': '∷',
+    \ '\dotminus': '∸',
+    \ '\dotsminusdots': '∺',
+    \ '\kernelcontraction': '∻',
+    \ '\sim': '∼',
+    \ '\backsim': '∽',
+    \ '\lazysinv': '∾',
+    \ '\sinewave': '∿',
+    \ '\wr': '≀',
+    \ '\nsim': '≁',
+    \ '\eqsim': '≂',
+    \ '\neqsim': '≂̸',
+    \ '\simeq': '≃',
+    \ '\nsime': '≄',
+    \ '\cong': '≅',
+    \ '\approxnotequal': '≆',
+    \ '\ncong': '≇',
+    \ '\approx': '≈',
+    \ '\napprox': '≉',
+    \ '\approxeq': '≊',
+    \ '\tildetrpl': '≋',
+    \ '\allequal': '≌',
+    \ '\asymp': '≍',
+    \ '\Bumpeq': '≎',
+    \ '\nBumpeq': '≎̸',
+    \ '\bumpeq': '≏',
+    \ '\nbumpeq': '≏̸',
+    \ '\doteq': '≐',
+    \ '\Doteq': '≑',
+    \ '\fallingdotseq': '≒',
+    \ '\risingdotseq': '≓',
+    \ '\coloneq': '≔',
+    \ '\eqcolon': '≕',
+    \ '\eqcirc': '≖',
+    \ '\circeq': '≗',
+    \ '\arceq': '≘',
+    \ '\wedgeq': '≙',
+    \ '\veeeq': '≚',
+    \ '\starequal': '≛',
+    \ '\triangleq': '≜',
+    \ '\eqdef': '≝',
+    \ '\measeq': '≞',
+    \ '\questeq': '≟',
+    \ '\ne': '≠',
+    \ '\equiv': '≡',
+    \ '\nequiv': '≢',
+    \ '\Equiv': '≣',
+    \ '\le': '≤',
+    \ '\leq': '≤',
+    \ '\ge': '≥',
+    \ '\geq': '≥',
+    \ '\leqq': '≦',
+    \ '\geqq': '≧',
+    \ '\lneqq': '≨',
+    \ '\lvertneqq': '≨︀',
+    \ '\gneqq': '≩',
+    \ '\gvertneqq': '≩︀',
+    \ '\ll': '≪',
+    \ '\NotLessLess': '≪̸',
+    \ '\gg': '≫',
+    \ '\NotGreaterGreater': '≫̸',
+    \ '\between': '≬',
+    \ '\nasymp': '≭',
+    \ '\nless': '≮',
+    \ '\ngtr': '≯',
+    \ '\nleq': '≰',
+    \ '\ngeq': '≱',
+    \ '\lesssim': '≲',
+    \ '\gtrsim': '≳',
+    \ '\nlesssim': '≴',
+    \ '\ngtrsim': '≵',
+    \ '\lessgtr': '≶',
+    \ '\gtrless': '≷',
+    \ '\notlessgreater': '≸',
+    \ '\notgreaterless': '≹',
+    \ '\prec': '≺',
+    \ '\succ': '≻',
+    \ '\preccurlyeq': '≼',
+    \ '\succcurlyeq': '≽',
+    \ '\precsim': '≾',
+    \ '\nprecsim': '≾̸',
+    \ '\succsim': '≿',
+    \ '\nsuccsim': '≿̸',
+    \ '\nprec': '⊀',
+    \ '\nsucc': '⊁',
+    \ '\subset': '⊂',
+    \ '\supset': '⊃',
+    \ '\nsubset': '⊄',
+    \ '\nsupset': '⊅',
+    \ '\subseteq': '⊆',
+    \ '\supseteq': '⊇',
+    \ '\nsubseteq': '⊈',
+    \ '\nsupseteq': '⊉',
+    \ '\subsetneq': '⊊',
+    \ '\varsubsetneqq': '⊊︀',
+    \ '\supsetneq': '⊋',
+    \ '\varsupsetneq': '⊋︀',
+    \ '\cupdot': '⊍',
+    \ '\uplus': '⊎',
+    \ '\sqsubset': '⊏',
+    \ '\NotSquareSubset': '⊏̸',
+    \ '\sqsupset': '⊐',
+    \ '\NotSquareSuperset': '⊐̸',
+    \ '\sqsubseteq': '⊑',
+    \ '\sqsupseteq': '⊒',
+    \ '\sqcap': '⊓',
+    \ '\sqcup': '⊔',
+    \ '\oplus': '⊕',
+    \ '\ominus': '⊖',
+    \ '\otimes': '⊗',
+    \ '\oslash': '⊘',
+    \ '\odot': '⊙',
+    \ '\circledcirc': '⊚',
+    \ '\circledast': '⊛',
+    \ '\circledequal': '⊜',
+    \ '\circleddash': '⊝',
+    \ '\boxplus': '⊞',
+    \ '\boxminus': '⊟',
+    \ '\boxtimes': '⊠',
+    \ '\boxdot': '⊡',
+    \ '\vdash': '⊢',
+    \ '\dashv': '⊣',
+    \ '\top': '⊤',
+    \ '\bot': '⊥',
+    \ '\models': '⊧',
+    \ '\vDash': '⊨',
+    \ '\Vdash': '⊩',
+    \ '\Vvdash': '⊪',
+    \ '\VDash': '⊫',
+    \ '\nvdash': '⊬',
+    \ '\nvDash': '⊭',
+    \ '\nVdash': '⊮',
+    \ '\nVDash': '⊯',
+    \ '\prurel': '⊰',
+    \ '\scurel': '⊱',
+    \ '\vartriangleleft': '⊲',
+    \ '\vartriangleright': '⊳',
+    \ '\trianglelefteq': '⊴',
+    \ '\trianglerighteq': '⊵',
+    \ '\original': '⊶',
+    \ '\image': '⊷',
+    \ '\multimap': '⊸',
+    \ '\hermitconjmatrix': '⊹',
+    \ '\intercal': '⊺',
+    \ '\veebar': '⊻',
+    \ '\xor': '⊻',
+    \ '\barwedge': '⊼',
+    \ '\barvee': '⊽',
+    \ '\rightanglearc': '⊾',
+    \ '\varlrtriangle': '⊿',
+    \ '\bigwedge': '⋀',
+    \ '\bigvee': '⋁',
+    \ '\bigcap': '⋂',
+    \ '\bigcup': '⋃',
+    \ '\diamond': '⋄',
+    \ '\cdot': '⋅',
+    \ '\star': '⋆',
+    \ '\divideontimes': '⋇',
+    \ '\bowtie': '⋈',
+    \ '\ltimes': '⋉',
+    \ '\rtimes': '⋊',
+    \ '\leftthreetimes': '⋋',
+    \ '\rightthreetimes': '⋌',
+    \ '\backsimeq': '⋍',
+    \ '\curlyvee': '⋎',
+    \ '\curlywedge': '⋏',
+    \ '\Subset': '⋐',
+    \ '\Supset': '⋑',
+    \ '\Cap': '⋒',
+    \ '\Cup': '⋓',
+    \ '\pitchfork': '⋔',
+    \ '\equalparallel': '⋕',
+    \ '\lessdot': '⋖',
+    \ '\gtrdot': '⋗',
+    \ '\verymuchless': '⋘',
+    \ '\ggg': '⋙',
+    \ '\lesseqgtr': '⋚',
+    \ '\gtreqless': '⋛',
+    \ '\eqless': '⋜',
+    \ '\eqgtr': '⋝',
+    \ '\curlyeqprec': '⋞',
+    \ '\curlyeqsucc': '⋟',
+    \ '\npreccurlyeq': '⋠',
+    \ '\nsucccurlyeq': '⋡',
+    \ '\nsqsubseteq': '⋢',
+    \ '\nsqsupseteq': '⋣',
+    \ '\sqsubsetneq': '⋤',
+    \ '\sqspne': '⋥',
+    \ '\lnsim': '⋦',
+    \ '\gnsim': '⋧',
+    \ '\precnsim': '⋨',
+    \ '\succnsim': '⋩',
+    \ '\ntriangleleft': '⋪',
+    \ '\ntriangleright': '⋫',
+    \ '\ntrianglelefteq': '⋬',
+    \ '\ntrianglerighteq': '⋭',
+    \ '\vdots': '⋮',
+    \ '\cdots': '⋯',
+    \ '\adots': '⋰',
+    \ '\ddots': '⋱',
+    \ '\disin': '⋲',
+    \ '\varisins': '⋳',
+    \ '\isins': '⋴',
+    \ '\isindot': '⋵',
+    \ '\varisinobar': '⋶',
+    \ '\isinobar': '⋷',
+    \ '\isinvb': '⋸',
+    \ '\isinE': '⋹',
+    \ '\nisd': '⋺',
+    \ '\varnis': '⋻',
+    \ '\nis': '⋼',
+    \ '\varniobar': '⋽',
+    \ '\niobar': '⋾',
+    \ '\bagmember': '⋿',
+    \ '\diameter': '⌀',
+    \ '\house': '⌂',
+    \ '\varbarwedge': '⌅',
+    \ '\vardoublebarwedge': '⌆',
+    \ '\lceil': '⌈',
+    \ '\rceil': '⌉',
+    \ '\lfloor': '⌊',
+    \ '\rfloor': '⌋',
+    \ '\invnot': '⌐',
+    \ '\sqlozenge': '⌑',
+    \ '\profline': '⌒',
+    \ '\profsurf': '⌓',
+    \ '\recorder': '⌕',
+    \ '\viewdata': '⌗',
+    \ '\turnednot': '⌙',
+    \ '\:watch:': '⌚',
+    \ '\:hourglass:': '⌛',
+    \ '\ulcorner': '⌜',
+    \ '\urcorner': '⌝',
+    \ '\llcorner': '⌞',
+    \ '\lrcorner': '⌟',
+    \ '\frown': '⌢',
+    \ '\smile': '⌣',
+    \ '\varhexagonlrbonds': '⌬',
+    \ '\conictaper': '⌲',
+    \ '\topbot': '⌶',
+    \ '\obar': '⌽',
+    \ '\notslash': '⌿',
+    \ '\notbackslash': '⍀',
+    \ '\boxupcaret': '⍓',
+    \ '\boxquestion': '⍰',
+    \ '\hexagon': '⎔',
+    \ '\dlcorn': '⎣',
+    \ '\lmoustache': '⎰',
+    \ '\rmoustache': '⎱',
+    \ '\overbracket': '⎴',
+    \ '\underbracket': '⎵',
+    \ '\bbrktbrk': '⎶',
+    \ '\sqrtbottom': '⎷',
+    \ '\lvboxline': '⎸',
+    \ '\rvboxline': '⎹',
+    \ '\varcarriagereturn': '⏎',
+    \ '\overbrace': '⏞',
+    \ '\underbrace': '⏟',
+    \ '\trapezium': '⏢',
+    \ '\benzenr': '⏣',
+    \ '\strns': '⏤',
+    \ '\fltns': '⏥',
+    \ '\accurrent': '⏦',
+    \ '\elinters': '⏧',
+    \ '\:fast_forward:': '⏩',
+    \ '\:rewind:': '⏪',
+    \ '\:arrow_double_up:': '⏫',
+    \ '\:arrow_double_down:': '⏬',
+    \ '\:alarm_clock:': '⏰',
+    \ '\:hourglass_flowing_sand:': '⏳',
+    \ '\blanksymbol': '␢',
+    \ '\visiblespace': '␣',
+    \ '\:m:': 'Ⓜ',
+    \ '\circledS': 'Ⓢ',
+    \ '\dshfnc': '┆',
+    \ '\sqfnw': '┙',
+    \ '\diagup': '╱',
+    \ '\diagdown': '╲',
+    \ '\blockuphalf': '▀',
+    \ '\blocklowhalf': '▄',
+    \ '\blockfull': '█',
+    \ '\blocklefthalf': '▌',
+    \ '\blockrighthalf': '▐',
+    \ '\blockqtrshaded': '░',
+    \ '\blockhalfshaded': '▒',
+    \ '\blockthreeqtrshaded': '▓',
+    \ '\blacksquare': '■',
+    \ '\square': '□',
+    \ '\squoval': '▢',
+    \ '\blackinwhitesquare': '▣',
+    \ '\squarehfill': '▤',
+    \ '\squarevfill': '▥',
+    \ '\squarehvfill': '▦',
+    \ '\squarenwsefill': '▧',
+    \ '\squareneswfill': '▨',
+    \ '\squarecrossfill': '▩',
+    \ '\smblksquare': '▪',
+    \ '\:black_small_square:': '▪',
+    \ '\smwhtsquare': '▫',
+    \ '\:white_small_square:': '▫',
+    \ '\hrectangleblack': '▬',
+    \ '\hrectangle': '▭',
+    \ '\vrectangleblack': '▮',
+    \ '\vrecto': '▯',
+    \ '\parallelogramblack': '▰',
+    \ '\parallelogram': '▱',
+    \ '\bigblacktriangleup': '▲',
+    \ '\bigtriangleup': '△',
+    \ '\blacktriangle': '▴',
+    \ '\vartriangle': '▵',
+    \ '\blacktriangleright': '▶',
+    \ '\:arrow_forward:': '▶',
+    \ '\triangleright': '▷',
+    \ '\smallblacktriangleright': '▸',
+    \ '\smalltriangleright': '▹',
+    \ '\blackpointerright': '►',
+    \ '\whitepointerright': '▻',
+    \ '\bigblacktriangledown': '▼',
+    \ '\bigtriangledown': '▽',
+    \ '\blacktriangledown': '▾',
+    \ '\triangledown': '▿',
+    \ '\blacktriangleleft': '◀',
+    \ '\:arrow_backward:': '◀',
+    \ '\triangleleft': '◁',
+    \ '\smallblacktriangleleft': '◂',
+    \ '\smalltriangleleft': '◃',
+    \ '\blackpointerleft': '◄',
+    \ '\whitepointerleft': '◅',
+    \ '\mdlgblkdiamond': '◆',
+    \ '\mdlgwhtdiamond': '◇',
+    \ '\blackinwhitediamond': '◈',
+    \ '\fisheye': '◉',
+    \ '\lozenge': '◊',
+    \ '\bigcirc': '○',
+    \ '\dottedcircle': '◌',
+    \ '\circlevertfill': '◍',
+    \ '\bullseye': '◎',
+    \ '\mdlgblkcircle': '●',
+    \ '\cirfl': '◐',
+    \ '\cirfr': '◑',
+    \ '\cirfb': '◒',
+    \ '\circletophalfblack': '◓',
+    \ '\circleurquadblack': '◔',
+    \ '\blackcircleulquadwhite': '◕',
+    \ '\blacklefthalfcircle': '◖',
+    \ '\blackrighthalfcircle': '◗',
+    \ '\rvbull': '◘',
+    \ '\inversewhitecircle': '◙',
+    \ '\invwhiteupperhalfcircle': '◚',
+    \ '\invwhitelowerhalfcircle': '◛',
+    \ '\ularc': '◜',
+    \ '\urarc': '◝',
+    \ '\lrarc': '◞',
+    \ '\llarc': '◟',
+    \ '\topsemicircle': '◠',
+    \ '\botsemicircle': '◡',
+    \ '\lrblacktriangle': '◢',
+    \ '\llblacktriangle': '◣',
+    \ '\ulblacktriangle': '◤',
+    \ '\urblacktriangle': '◥',
+    \ '\smwhtcircle': '◦',
+    \ '\sqfl': '◧',
+    \ '\sqfr': '◨',
+    \ '\squareulblack': '◩',
+    \ '\sqfse': '◪',
+    \ '\boxbar': '◫',
+    \ '\trianglecdot': '◬',
+    \ '\triangleleftblack': '◭',
+    \ '\trianglerightblack': '◮',
+    \ '\lgwhtcircle': '◯',
+    \ '\squareulquad': '◰',
+    \ '\squarellquad': '◱',
+    \ '\squarelrquad': '◲',
+    \ '\squareurquad': '◳',
+    \ '\circleulquad': '◴',
+    \ '\circlellquad': '◵',
+    \ '\circlelrquad': '◶',
+    \ '\circleurquad': '◷',
+    \ '\ultriangle': '◸',
+    \ '\urtriangle': '◹',
+    \ '\lltriangle': '◺',
+    \ '\mdwhtsquare': '◻',
+    \ '\:white_medium_square:': '◻',
+    \ '\mdblksquare': '◼',
+    \ '\:black_medium_square:': '◼',
+    \ '\mdsmwhtsquare': '◽',
+    \ '\:white_medium_small_square:': '◽',
+    \ '\mdsmblksquare': '◾',
+    \ '\:black_medium_small_square:': '◾',
+    \ '\lrtriangle': '◿',
+    \ '\:sunny:': '☀',
+    \ '\:cloud:': '☁',
+    \ '\bigstar': '★',
+    \ '\bigwhitestar': '☆',
+    \ '\astrosun': '☉',
+    \ '\:phone:': '☎',
+    \ '\:ballot_box_with_check:': '☑',
+    \ '\:umbrella:': '☔',
+    \ '\:coffee:': '☕',
+    \ '\:point_up:': '☝',
+    \ '\danger': '☡',
+    \ '\:relaxed:': '☺',
+    \ '\blacksmiley': '☻',
+    \ '\sun': '☼',
+    \ '\rightmoon': '☽',
+    \ '\leftmoon': '☾',
+    \ '\mercury': '☿',
+    \ '\venus': '♀',
+    \ '\female': '♀',
+    \ '\male': '♂',
+    \ '\mars': '♂',
+    \ '\jupiter': '♃',
+    \ '\saturn': '♄',
+    \ '\uranus': '♅',
+    \ '\neptune': '♆',
+    \ '\pluto': '♇',
+    \ '\aries': '♈',
+    \ '\:aries:': '♈',
+    \ '\taurus': '♉',
+    \ '\:taurus:': '♉',
+    \ '\gemini': '♊',
+    \ '\:gemini:': '♊',
+    \ '\cancer': '♋',
+    \ '\:cancer:': '♋',
+    \ '\leo': '♌',
+    \ '\:leo:': '♌',
+    \ '\virgo': '♍',
+    \ '\:virgo:': '♍',
+    \ '\libra': '♎',
+    \ '\:libra:': '♎',
+    \ '\scorpio': '♏',
+    \ '\:scorpius:': '♏',
+    \ '\sagittarius': '♐',
+    \ '\:sagittarius:': '♐',
+    \ '\capricornus': '♑',
+    \ '\:capricorn:': '♑',
+    \ '\aquarius': '♒',
+    \ '\:aquarius:': '♒',
+    \ '\pisces': '♓',
+    \ '\:pisces:': '♓',
+    \ '\spadesuit': '♠',
+    \ '\:spades:': '♠',
+    \ '\heartsuit': '♡',
+    \ '\diamondsuit': '♢',
+    \ '\clubsuit': '♣',
+    \ '\:clubs:': '♣',
+    \ '\varspadesuit': '♤',
+    \ '\varheartsuit': '♥',
+    \ '\:hearts:': '♥',
+    \ '\vardiamondsuit': '♦',
+    \ '\:diamonds:': '♦',
+    \ '\varclubsuit': '♧',
+    \ '\:hotsprings:': '♨',
+    \ '\quarternote': '♩',
+    \ '\eighthnote': '♪',
+    \ '\twonotes': '♫',
+    \ '\flat': '♭',
+    \ '\natural': '♮',
+    \ '\sharp': '♯',
+    \ '\:recycle:': '♻',
+    \ '\acidfree': '♾',
+    \ '\:wheelchair:': '♿',
+    \ '\dicei': '⚀',
+    \ '\diceii': '⚁',
+    \ '\diceiii': '⚂',
+    \ '\diceiv': '⚃',
+    \ '\dicev': '⚄',
+    \ '\dicevi': '⚅',
+    \ '\circledrightdot': '⚆',
+    \ '\circledtwodots': '⚇',
+    \ '\blackcircledrightdot': '⚈',
+    \ '\blackcircledtwodots': '⚉',
+    \ '\:anchor:': '⚓',
+    \ '\:warning:': '⚠',
+    \ '\:zap:': '⚡',
+    \ '\hermaphrodite': '⚥',
+    \ '\mdwhtcircle': '⚪',
+    \ '\:white_circle:': '⚪',
+    \ '\mdblkcircle': '⚫',
+    \ '\:black_circle:': '⚫',
+    \ '\mdsmwhtcircle': '⚬',
+    \ '\neuter': '⚲',
+    \ '\:soccer:': '⚽',
+    \ '\:baseball:': '⚾',
+    \ '\:snowman:': '⛄',
+    \ '\:partly_sunny:': '⛅',
+    \ '\:ophiuchus:': '⛎',
+    \ '\:no_entry:': '⛔',
+    \ '\:church:': '⛪',
+    \ '\:fountain:': '⛲',
+    \ '\:golf:': '⛳',
+    \ '\:boat:': '⛵',
+    \ '\:tent:': '⛺',
+    \ '\:fuelpump:': '⛽',
+    \ '\:scissors:': '✂',
+    \ '\:white_check_mark:': '✅',
+    \ '\:airplane:': '✈',
+    \ '\:email:': '✉',
+    \ '\:fist:': '✊',
+    \ '\:hand:': '✋',
+    \ '\:v:': '✌',
+    \ '\:pencil2:': '✏',
+    \ '\:black_nib:': '✒',
+    \ '\checkmark': '✓',
+    \ '\:heavy_check_mark:': '✔',
+    \ '\:heavy_multiplication_x:': '✖',
+    \ '\maltese': '✠',
+    \ '\:sparkles:': '✨',
+    \ '\circledstar': '✪',
+    \ '\:eight_spoked_asterisk:': '✳',
+    \ '\:eight_pointed_black_star:': '✴',
+    \ '\varstar': '✶',
+    \ '\dingasterisk': '✽',
+    \ '\:snowflake:': '❄',
+    \ '\:sparkle:': '❇',
+    \ '\:x:': '❌',
+    \ '\:negative_squared_cross_mark:': '❎',
+    \ '\:question:': '❓',
+    \ '\:grey_question:': '❔',
+    \ '\:grey_exclamation:': '❕',
+    \ '\:exclamation:': '❗',
+    \ '\:heart:': '❤',
+    \ '\:heavy_plus_sign:': '➕',
+    \ '\:heavy_minus_sign:': '➖',
+    \ '\:heavy_division_sign:': '➗',
+    \ '\draftingarrow': '➛',
+    \ '\:arrow_right:': '➡',
+    \ '\:curly_loop:': '➰',
+    \ '\:loop:': '➿',
+    \ '\threedangle': '⟀',
+    \ '\whiteinwhitetriangle': '⟁',
+    \ '\perp': '⟂',
+    \ '\bsolhsub': '⟈',
+    \ '\suphsol': '⟉',
+    \ '\wedgedot': '⟑',
+    \ '\upin': '⟒',
+    \ '\leftouterjoin': '⟕',
+    \ '\rightouterjoin': '⟖',
+    \ '\fullouterjoin': '⟗',
+    \ '\bigbot': '⟘',
+    \ '\bigtop': '⟙',
+    \ '\llbracket': '⟦',
+    \ '\openbracketleft': '⟦',
+    \ '\openbracketright': '⟧',
+    \ '\rrbracket': '⟧',
+    \ '\langle': '⟨',
+    \ '\rangle': '⟩',
+    \ '\UUparrow': '⟰',
+    \ '\DDownarrow': '⟱',
+    \ '\longleftarrow': '⟵',
+    \ '\longrightarrow': '⟶',
+    \ '\longleftrightarrow': '⟷',
+    \ '\impliedby': '⟸',
+    \ '\Longleftarrow': '⟸',
+    \ '\implies': '⟹',
+    \ '\Longrightarrow': '⟹',
+    \ '\Longleftrightarrow': '⟺',
+    \ '\iff': '⟺',
+    \ '\longmapsfrom': '⟻',
+    \ '\longmapsto': '⟼',
+    \ '\Longmapsfrom': '⟽',
+    \ '\Longmapsto': '⟾',
+    \ '\longrightsquigarrow': '⟿',
+    \ '\nvtwoheadrightarrow': '⤀',
+    \ '\nVtwoheadrightarrow': '⤁',
+    \ '\nvLeftarrow': '⤂',
+    \ '\nvRightarrow': '⤃',
+    \ '\nvLeftrightarrow': '⤄',
+    \ '\twoheadmapsto': '⤅',
+    \ '\Mapsfrom': '⤆',
+    \ '\Mapsto': '⤇',
+    \ '\downarrowbarred': '⤈',
+    \ '\uparrowbarred': '⤉',
+    \ '\Uuparrow': '⤊',
+    \ '\Ddownarrow': '⤋',
+    \ '\leftbkarrow': '⤌',
+    \ '\bkarow': '⤍',
+    \ '\leftdbkarrow': '⤎',
+    \ '\dbkarow': '⤏',
+    \ '\drbkarrow': '⤐',
+    \ '\rightdotarrow': '⤑',
+    \ '\UpArrowBar': '⤒',
+    \ '\DownArrowBar': '⤓',
+    \ '\nvrightarrowtail': '⤔',
+    \ '\nVrightarrowtail': '⤕',
+    \ '\twoheadrightarrowtail': '⤖',
+    \ '\nvtwoheadrightarrowtail': '⤗',
+    \ '\nVtwoheadrightarrowtail': '⤘',
+    \ '\diamondleftarrow': '⤝',
+    \ '\rightarrowdiamond': '⤞',
+    \ '\diamondleftarrowbar': '⤟',
+    \ '\barrightarrowdiamond': '⤠',
+    \ '\hksearow': '⤥',
+    \ '\hkswarow': '⤦',
+    \ '\tona': '⤧',
+    \ '\toea': '⤨',
+    \ '\tosa': '⤩',
+    \ '\towa': '⤪',
+    \ '\rdiagovfdiag': '⤫',
+    \ '\fdiagovrdiag': '⤬',
+    \ '\seovnearrow': '⤭',
+    \ '\neovsearrow': '⤮',
+    \ '\fdiagovnearrow': '⤯',
+    \ '\rdiagovsearrow': '⤰',
+    \ '\neovnwarrow': '⤱',
+    \ '\nwovnearrow': '⤲',
+    \ '\:arrow_heading_up:': '⤴',
+    \ '\:arrow_heading_down:': '⤵',
+    \ '\Rlarr': '⥂',
+    \ '\rLarr': '⥄',
+    \ '\rightarrowplus': '⥅',
+    \ '\leftarrowplus': '⥆',
+    \ '\rarrx': '⥇',
+    \ '\leftrightarrowcircle': '⥈',
+    \ '\twoheaduparrowcircle': '⥉',
+    \ '\leftrightharpoonupdown': '⥊',
+    \ '\leftrightharpoondownup': '⥋',
+    \ '\updownharpoonrightleft': '⥌',
+    \ '\updownharpoonleftright': '⥍',
+    \ '\LeftRightVector': '⥎',
+    \ '\RightUpDownVector': '⥏',
+    \ '\DownLeftRightVector': '⥐',
+    \ '\LeftUpDownVector': '⥑',
+    \ '\LeftVectorBar': '⥒',
+    \ '\RightVectorBar': '⥓',
+    \ '\RightUpVectorBar': '⥔',
+    \ '\RightDownVectorBar': '⥕',
+    \ '\DownLeftVectorBar': '⥖',
+    \ '\DownRightVectorBar': '⥗',
+    \ '\LeftUpVectorBar': '⥘',
+    \ '\LeftDownVectorBar': '⥙',
+    \ '\LeftTeeVector': '⥚',
+    \ '\RightTeeVector': '⥛',
+    \ '\RightUpTeeVector': '⥜',
+    \ '\RightDownTeeVector': '⥝',
+    \ '\DownLeftTeeVector': '⥞',
+    \ '\DownRightTeeVector': '⥟',
+    \ '\LeftUpTeeVector': '⥠',
+    \ '\LeftDownTeeVector': '⥡',
+    \ '\leftharpoonsupdown': '⥢',
+    \ '\upharpoonsleftright': '⥣',
+    \ '\rightharpoonsupdown': '⥤',
+    \ '\downharpoonsleftright': '⥥',
+    \ '\leftrightharpoonsup': '⥦',
+    \ '\leftrightharpoonsdown': '⥧',
+    \ '\rightleftharpoonsup': '⥨',
+    \ '\rightleftharpoonsdown': '⥩',
+    \ '\leftharpoonupdash': '⥪',
+    \ '\dashleftharpoondown': '⥫',
+    \ '\rightharpoonupdash': '⥬',
+    \ '\dashrightharpoondown': '⥭',
+    \ '\UpEquilibrium': '⥮',
+    \ '\ReverseUpEquilibrium': '⥯',
+    \ '\RoundImplies': '⥰',
+    \ '\Vvert': '⦀',
+    \ '\Elroang': '⦆',
+    \ '\ddfnc': '⦙',
+    \ '\measuredangleleft': '⦛',
+    \ '\Angle': '⦜',
+    \ '\rightanglemdot': '⦝',
+    \ '\angles': '⦞',
+    \ '\angdnr': '⦟',
+    \ '\lpargt': '⦠',
+    \ '\sphericalangleup': '⦡',
+    \ '\turnangle': '⦢',
+    \ '\revangle': '⦣',
+    \ '\angleubar': '⦤',
+    \ '\revangleubar': '⦥',
+    \ '\wideangledown': '⦦',
+    \ '\wideangleup': '⦧',
+    \ '\measanglerutone': '⦨',
+    \ '\measanglelutonw': '⦩',
+    \ '\measanglerdtose': '⦪',
+    \ '\measangleldtosw': '⦫',
+    \ '\measangleurtone': '⦬',
+    \ '\measangleultonw': '⦭',
+    \ '\measangledrtose': '⦮',
+    \ '\measangledltosw': '⦯',
+    \ '\revemptyset': '⦰',
+    \ '\emptysetobar': '⦱',
+    \ '\emptysetocirc': '⦲',
+    \ '\emptysetoarr': '⦳',
+    \ '\emptysetoarrl': '⦴',
+    \ '\circledparallel': '⦷',
+    \ '\obslash': '⦸',
+    \ '\odotslashdot': '⦼',
+    \ '\circledwhitebullet': '⦾',
+    \ '\circledbullet': '⦿',
+    \ '\olessthan': '⧀',
+    \ '\ogreaterthan': '⧁',
+    \ '\boxdiag': '⧄',
+    \ '\boxbslash': '⧅',
+    \ '\boxast': '⧆',
+    \ '\boxcircle': '⧇',
+    \ '\Lap': '⧊',
+    \ '\defas': '⧋',
+    \ '\LeftTriangleBar': '⧏',
+    \ '\NotLeftTriangleBar': '⧏̸',
+    \ '\RightTriangleBar': '⧐',
+    \ '\NotRightTriangleBar': '⧐̸',
+    \ '\dualmap': '⧟',
+    \ '\lrtriangleeq': '⧡',
+    \ '\shuffle': '⧢',
+    \ '\eparsl': '⧣',
+    \ '\smeparsl': '⧤',
+    \ '\eqvparsl': '⧥',
+    \ '\blacklozenge': '⧫',
+    \ '\RuleDelayed': '⧴',
+    \ '\dsol': '⧶',
+    \ '\rsolbar': '⧷',
+    \ '\doubleplus': '⧺',
+    \ '\tripleplus': '⧻',
+    \ '\bigodot': '⨀',
+    \ '\bigoplus': '⨁',
+    \ '\bigotimes': '⨂',
+    \ '\bigcupdot': '⨃',
+    \ '\biguplus': '⨄',
+    \ '\bigsqcap': '⨅',
+    \ '\bigsqcup': '⨆',
+    \ '\conjquant': '⨇',
+    \ '\disjquant': '⨈',
+    \ '\bigtimes': '⨉',
+    \ '\modtwosum': '⨊',
+    \ '\sumint': '⨋',
+    \ '\iiiint': '⨌',
+    \ '\intbar': '⨍',
+    \ '\intBar': '⨎',
+    \ '\clockoint': '⨏',
+    \ '\cirfnint': '⨐',
+    \ '\awint': '⨑',
+    \ '\rppolint': '⨒',
+    \ '\scpolint': '⨓',
+    \ '\npolint': '⨔',
+    \ '\pointint': '⨕',
+    \ '\sqrint': '⨖',
+    \ '\intx': '⨘',
+    \ '\intcap': '⨙',
+    \ '\intcup': '⨚',
+    \ '\upint': '⨛',
+    \ '\lowint': '⨜',
+    \ '\Join': '⨝',
+    \ '\join': '⨝',
+    \ '\ringplus': '⨢',
+    \ '\plushat': '⨣',
+    \ '\simplus': '⨤',
+    \ '\plusdot': '⨥',
+    \ '\plussim': '⨦',
+    \ '\plussubtwo': '⨧',
+    \ '\plustrif': '⨨',
+    \ '\commaminus': '⨩',
+    \ '\minusdot': '⨪',
+    \ '\minusfdots': '⨫',
+    \ '\minusrdots': '⨬',
+    \ '\opluslhrim': '⨭',
+    \ '\oplusrhrim': '⨮',
+    \ '\Times': '⨯',
+    \ '\dottimes': '⨰',
+    \ '\timesbar': '⨱',
+    \ '\btimes': '⨲',
+    \ '\smashtimes': '⨳',
+    \ '\otimeslhrim': '⨴',
+    \ '\otimesrhrim': '⨵',
+    \ '\otimeshat': '⨶',
+    \ '\Otimes': '⨷',
+    \ '\odiv': '⨸',
+    \ '\triangleplus': '⨹',
+    \ '\triangleminus': '⨺',
+    \ '\triangletimes': '⨻',
+    \ '\intprod': '⨼',
+    \ '\intprodr': '⨽',
+    \ '\amalg': '⨿',
+    \ '\capdot': '⩀',
+    \ '\uminus': '⩁',
+    \ '\barcup': '⩂',
+    \ '\barcap': '⩃',
+    \ '\capwedge': '⩄',
+    \ '\cupvee': '⩅',
+    \ '\twocups': '⩊',
+    \ '\twocaps': '⩋',
+    \ '\closedvarcup': '⩌',
+    \ '\closedvarcap': '⩍',
+    \ '\Sqcap': '⩎',
+    \ '\Sqcup': '⩏',
+    \ '\closedvarcupsmashprod': '⩐',
+    \ '\wedgeodot': '⩑',
+    \ '\veeodot': '⩒',
+    \ '\And': '⩓',
+    \ '\Or': '⩔',
+    \ '\wedgeonwedge': '⩕',
+    \ '\ElOr': '⩖',
+    \ '\bigslopedvee': '⩗',
+    \ '\bigslopedwedge': '⩘',
+    \ '\wedgemidvert': '⩚',
+    \ '\veemidvert': '⩛',
+    \ '\midbarwedge': '⩜',
+    \ '\midbarvee': '⩝',
+    \ '\perspcorrespond': '⩞',
+    \ '\minhat': '⩟',
+    \ '\wedgedoublebar': '⩠',
+    \ '\varveebar': '⩡',
+    \ '\doublebarvee': '⩢',
+    \ '\veedoublebar': '⩣',
+    \ '\eqdot': '⩦',
+    \ '\dotequiv': '⩧',
+    \ '\dotsim': '⩪',
+    \ '\simrdots': '⩫',
+    \ '\simminussim': '⩬',
+    \ '\congdot': '⩭',
+    \ '\asteq': '⩮',
+    \ '\hatapprox': '⩯',
+    \ '\approxeqq': '⩰',
+    \ '\eqqplus': '⩱',
+    \ '\pluseqq': '⩲',
+    \ '\eqqsim': '⩳',
+    \ '\Coloneq': '⩴',
+    \ '\Equal': '⩵',
+    \ '\eqeqeq': '⩶',
+    \ '\ddotseq': '⩷',
+    \ '\equivDD': '⩸',
+    \ '\ltcir': '⩹',
+    \ '\gtcir': '⩺',
+    \ '\ltquest': '⩻',
+    \ '\gtquest': '⩼',
+    \ '\leqslant': '⩽',
+    \ '\nleqslant': '⩽̸',
+    \ '\geqslant': '⩾',
+    \ '\ngeqslant': '⩾̸',
+    \ '\lesdot': '⩿',
+    \ '\gesdot': '⪀',
+    \ '\lesdoto': '⪁',
+    \ '\gesdoto': '⪂',
+    \ '\lesdotor': '⪃',
+    \ '\gesdotol': '⪄',
+    \ '\lessapprox': '⪅',
+    \ '\gtrapprox': '⪆',
+    \ '\lneq': '⪇',
+    \ '\gneq': '⪈',
+    \ '\lnapprox': '⪉',
+    \ '\gnapprox': '⪊',
+    \ '\lesseqqgtr': '⪋',
+    \ '\gtreqqless': '⪌',
+    \ '\lsime': '⪍',
+    \ '\gsime': '⪎',
+    \ '\lsimg': '⪏',
+    \ '\gsiml': '⪐',
+    \ '\lgE': '⪑',
+    \ '\glE': '⪒',
+    \ '\lesges': '⪓',
+    \ '\gesles': '⪔',
+    \ '\eqslantless': '⪕',
+    \ '\eqslantgtr': '⪖',
+    \ '\elsdot': '⪗',
+    \ '\egsdot': '⪘',
+    \ '\eqqless': '⪙',
+    \ '\eqqgtr': '⪚',
+    \ '\eqqslantless': '⪛',
+    \ '\eqqslantgtr': '⪜',
+    \ '\simless': '⪝',
+    \ '\simgtr': '⪞',
+    \ '\simlE': '⪟',
+    \ '\simgE': '⪠',
+    \ '\NestedLessLess': '⪡',
+    \ '\NotNestedLessLess': '⪡̸',
+    \ '\NestedGreaterGreater': '⪢',
+    \ '\NotNestedGreaterGreater': '⪢̸',
+    \ '\partialmeetcontraction': '⪣',
+    \ '\glj': '⪤',
+    \ '\gla': '⪥',
+    \ '\ltcc': '⪦',
+    \ '\gtcc': '⪧',
+    \ '\lescc': '⪨',
+    \ '\gescc': '⪩',
+    \ '\smt': '⪪',
+    \ '\lat': '⪫',
+    \ '\smte': '⪬',
+    \ '\late': '⪭',
+    \ '\bumpeqq': '⪮',
+    \ '\preceq': '⪯',
+    \ '\npreceq': '⪯̸',
+    \ '\succeq': '⪰',
+    \ '\nsucceq': '⪰̸',
+    \ '\precneq': '⪱',
+    \ '\succneq': '⪲',
+    \ '\preceqq': '⪳',
+    \ '\succeqq': '⪴',
+    \ '\precneqq': '⪵',
+    \ '\succneqq': '⪶',
+    \ '\precapprox': '⪷',
+    \ '\succapprox': '⪸',
+    \ '\precnapprox': '⪹',
+    \ '\succnapprox': '⪺',
+    \ '\Prec': '⪻',
+    \ '\Succ': '⪼',
+    \ '\subsetdot': '⪽',
+    \ '\supsetdot': '⪾',
+    \ '\subsetplus': '⪿',
+    \ '\supsetplus': '⫀',
+    \ '\submult': '⫁',
+    \ '\supmult': '⫂',
+    \ '\subedot': '⫃',
+    \ '\supedot': '⫄',
+    \ '\subseteqq': '⫅',
+    \ '\nsubseteqq': '⫅̸',
+    \ '\supseteqq': '⫆',
+    \ '\nsupseteqq': '⫆̸',
+    \ '\subsim': '⫇',
+    \ '\supsim': '⫈',
+    \ '\subsetapprox': '⫉',
+    \ '\supsetapprox': '⫊',
+    \ '\subsetneqq': '⫋',
+    \ '\supsetneqq': '⫌',
+    \ '\lsqhook': '⫍',
+    \ '\rsqhook': '⫎',
+    \ '\csub': '⫏',
+    \ '\csup': '⫐',
+    \ '\csube': '⫑',
+    \ '\csupe': '⫒',
+    \ '\subsup': '⫓',
+    \ '\supsub': '⫔',
+    \ '\subsub': '⫕',
+    \ '\supsup': '⫖',
+    \ '\suphsub': '⫗',
+    \ '\supdsub': '⫘',
+    \ '\forkv': '⫙',
+    \ '\mlcp': '⫛',
+    \ '\forks': '⫝̸',
+    \ '\forksnot': '⫝',
+    \ '\dashV': '⫣',
+    \ '\Dashv': '⫤',
+    \ '\interleave': '⫴',
+    \ '\tdcol': '⫶',
+    \ '\lllnest': '⫷',
+    \ '\gggnest': '⫸',
+    \ '\leqqslant': '⫹',
+    \ '\geqqslant': '⫺',
+    \ '\:arrow_left:': '⬅',
+    \ '\:arrow_up:': '⬆',
+    \ '\:arrow_down:': '⬇',
+    \ '\squaretopblack': '⬒',
+    \ '\squarebotblack': '⬓',
+    \ '\squareurblack': '⬔',
+    \ '\squarellblack': '⬕',
+    \ '\diamondleftblack': '⬖',
+    \ '\diamondrightblack': '⬗',
+    \ '\diamondtopblack': '⬘',
+    \ '\diamondbotblack': '⬙',
+    \ '\dottedsquare': '⬚',
+    \ '\lgblksquare': '⬛',
+    \ '\:black_large_square:': '⬛',
+    \ '\lgwhtsquare': '⬜',
+    \ '\:white_large_square:': '⬜',
+    \ '\vysmblksquare': '⬝',
+    \ '\vysmwhtsquare': '⬞',
+    \ '\pentagonblack': '⬟',
+    \ '\pentagon': '⬠',
+    \ '\varhexagon': '⬡',
+    \ '\varhexagonblack': '⬢',
+    \ '\hexagonblack': '⬣',
+    \ '\lgblkcircle': '⬤',
+    \ '\mdblkdiamond': '⬥',
+    \ '\mdwhtdiamond': '⬦',
+    \ '\mdblklozenge': '⬧',
+    \ '\mdwhtlozenge': '⬨',
+    \ '\smblkdiamond': '⬩',
+    \ '\smblklozenge': '⬪',
+    \ '\smwhtlozenge': '⬫',
+    \ '\blkhorzoval': '⬬',
+    \ '\whthorzoval': '⬭',
+    \ '\blkvertoval': '⬮',
+    \ '\whtvertoval': '⬯',
+    \ '\circleonleftarrow': '⬰',
+    \ '\leftthreearrows': '⬱',
+    \ '\leftarrowonoplus': '⬲',
+    \ '\longleftsquigarrow': '⬳',
+    \ '\nvtwoheadleftarrow': '⬴',
+    \ '\nVtwoheadleftarrow': '⬵',
+    \ '\twoheadmapsfrom': '⬶',
+    \ '\twoheadleftdbkarrow': '⬷',
+    \ '\leftdotarrow': '⬸',
+    \ '\nvleftarrowtail': '⬹',
+    \ '\nVleftarrowtail': '⬺',
+    \ '\twoheadleftarrowtail': '⬻',
+    \ '\nvtwoheadleftarrowtail': '⬼',
+    \ '\nVtwoheadleftarrowtail': '⬽',
+    \ '\leftarrowx': '⬾',
+    \ '\leftcurvedarrow': '⬿',
+    \ '\equalleftarrow': '⭀',
+    \ '\bsimilarleftarrow': '⭁',
+    \ '\leftarrowbackapprox': '⭂',
+    \ '\rightarrowgtr': '⭃',
+    \ '\rightarrowsupset': '⭄',
+    \ '\LLeftarrow': '⭅',
+    \ '\RRightarrow': '⭆',
+    \ '\bsimilarrightarrow': '⭇',
+    \ '\rightarrowbackapprox': '⭈',
+    \ '\similarleftarrow': '⭉',
+    \ '\leftarrowapprox': '⭊',
+    \ '\leftarrowbsimilar': '⭋',
+    \ '\rightarrowbsimilar': '⭌',
+    \ '\medwhitestar': '⭐',
+    \ '\:star:': '⭐',
+    \ '\medblackstar': '⭑',
+    \ '\smwhitestar': '⭒',
+    \ '\rightpentagonblack': '⭓',
+    \ '\rightpentagon': '⭔',
+    \ '\:o:': '⭕',
+    \ '\_j': 'ⱼ',
+    \ '\^V': 'ⱽ',
+    \ '\postalmark': '〒',
+    \ '\:wavy_dash:': '〰',
+    \ '\:part_alternation_mark:': '〽',
+    \ '\:congratulations:': '㊗',
+    \ '\:secret:': '㊙',
+    \ '\bfA': '𝐀',
+    \ '\bfB': '𝐁',
+    \ '\bfC': '𝐂',
+    \ '\bfD': '𝐃',
+    \ '\bfE': '𝐄',
+    \ '\bfF': '𝐅',
+    \ '\bfG': '𝐆',
+    \ '\bfH': '𝐇',
+    \ '\bfI': '𝐈',
+    \ '\bfJ': '𝐉',
+    \ '\bfK': '𝐊',
+    \ '\bfL': '𝐋',
+    \ '\bfM': '𝐌',
+    \ '\bfN': '𝐍',
+    \ '\bfO': '𝐎',
+    \ '\bfP': '𝐏',
+    \ '\bfQ': '𝐐',
+    \ '\bfR': '𝐑',
+    \ '\bfS': '𝐒',
+    \ '\bfT': '𝐓',
+    \ '\bfU': '𝐔',
+    \ '\bfV': '𝐕',
+    \ '\bfW': '𝐖',
+    \ '\bfX': '𝐗',
+    \ '\bfY': '𝐘',
+    \ '\bfZ': '𝐙',
+    \ '\bfa': '𝐚',
+    \ '\bfb': '𝐛',
+    \ '\bfc': '𝐜',
+    \ '\bfd': '𝐝',
+    \ '\bfe': '𝐞',
+    \ '\bff': '𝐟',
+    \ '\bfg': '𝐠',
+    \ '\bfh': '𝐡',
+    \ '\bfi': '𝐢',
+    \ '\bfj': '𝐣',
+    \ '\bfk': '𝐤',
+    \ '\bfl': '𝐥',
+    \ '\bfm': '𝐦',
+    \ '\bfn': '𝐧',
+    \ '\bfo': '𝐨',
+    \ '\bfp': '𝐩',
+    \ '\bfq': '𝐪',
+    \ '\bfr': '𝐫',
+    \ '\bfs': '𝐬',
+    \ '\bft': '𝐭',
+    \ '\bfu': '𝐮',
+    \ '\bfv': '𝐯',
+    \ '\bfw': '𝐰',
+    \ '\bfx': '𝐱',
+    \ '\bfy': '𝐲',
+    \ '\bfz': '𝐳',
+    \ '\itA': '𝐴',
+    \ '\itB': '𝐵',
+    \ '\itC': '𝐶',
+    \ '\itD': '𝐷',
+    \ '\itE': '𝐸',
+    \ '\itF': '𝐹',
+    \ '\itG': '𝐺',
+    \ '\itH': '𝐻',
+    \ '\itI': '𝐼',
+    \ '\itJ': '𝐽',
+    \ '\itK': '𝐾',
+    \ '\itL': '𝐿',
+    \ '\itM': '𝑀',
+    \ '\itN': '𝑁',
+    \ '\itO': '𝑂',
+    \ '\itP': '𝑃',
+    \ '\itQ': '𝑄',
+    \ '\itR': '𝑅',
+    \ '\itS': '𝑆',
+    \ '\itT': '𝑇',
+    \ '\itU': '𝑈',
+    \ '\itV': '𝑉',
+    \ '\itW': '𝑊',
+    \ '\itX': '𝑋',
+    \ '\itY': '𝑌',
+    \ '\itZ': '𝑍',
+    \ '\ita': '𝑎',
+    \ '\itb': '𝑏',
+    \ '\itc': '𝑐',
+    \ '\itd': '𝑑',
+    \ '\ite': '𝑒',
+    \ '\itf': '𝑓',
+    \ '\itg': '𝑔',
+    \ '\iti': '𝑖',
+    \ '\itj': '𝑗',
+    \ '\itk': '𝑘',
+    \ '\itl': '𝑙',
+    \ '\itm': '𝑚',
+    \ '\itn': '𝑛',
+    \ '\ito': '𝑜',
+    \ '\itp': '𝑝',
+    \ '\itq': '𝑞',
+    \ '\itr': '𝑟',
+    \ '\its': '𝑠',
+    \ '\itt': '𝑡',
+    \ '\itu': '𝑢',
+    \ '\itv': '𝑣',
+    \ '\itw': '𝑤',
+    \ '\itx': '𝑥',
+    \ '\ity': '𝑦',
+    \ '\itz': '𝑧',
+    \ '\biA': '𝑨',
+    \ '\biB': '𝑩',
+    \ '\biC': '𝑪',
+    \ '\biD': '𝑫',
+    \ '\biE': '𝑬',
+    \ '\biF': '𝑭',
+    \ '\biG': '𝑮',
+    \ '\biH': '𝑯',
+    \ '\biI': '𝑰',
+    \ '\biJ': '𝑱',
+    \ '\biK': '𝑲',
+    \ '\biL': '𝑳',
+    \ '\biM': '𝑴',
+    \ '\biN': '𝑵',
+    \ '\biO': '𝑶',
+    \ '\biP': '𝑷',
+    \ '\biQ': '𝑸',
+    \ '\biR': '𝑹',
+    \ '\biS': '𝑺',
+    \ '\biT': '𝑻',
+    \ '\biU': '𝑼',
+    \ '\biV': '𝑽',
+    \ '\biW': '𝑾',
+    \ '\biX': '𝑿',
+    \ '\biY': '𝒀',
+    \ '\biZ': '𝒁',
+    \ '\bia': '𝒂',
+    \ '\bib': '𝒃',
+    \ '\bic': '𝒄',
+    \ '\bid': '𝒅',
+    \ '\bie': '𝒆',
+    \ '\bif': '𝒇',
+    \ '\big': '𝒈',
+    \ '\bih': '𝒉',
+    \ '\bii': '𝒊',
+    \ '\bij': '𝒋',
+    \ '\bik': '𝒌',
+    \ '\bil': '𝒍',
+    \ '\bim': '𝒎',
+    \ '\bin': '𝒏',
+    \ '\bio': '𝒐',
+    \ '\bip': '𝒑',
+    \ '\biq': '𝒒',
+    \ '\bir': '𝒓',
+    \ '\bis': '𝒔',
+    \ '\bit': '𝒕',
+    \ '\biu': '𝒖',
+    \ '\biv': '𝒗',
+    \ '\biw': '𝒘',
+    \ '\bix': '𝒙',
+    \ '\biy': '𝒚',
+    \ '\biz': '𝒛',
+    \ '\scrA': '𝒜',
+    \ '\scrC': '𝒞',
+    \ '\scrD': '𝒟',
+    \ '\scrG': '𝒢',
+    \ '\scrJ': '𝒥',
+    \ '\scrK': '𝒦',
+    \ '\scrN': '𝒩',
+    \ '\scrO': '𝒪',
+    \ '\scrP': '𝒫',
+    \ '\scrQ': '𝒬',
+    \ '\scrS': '𝒮',
+    \ '\scrT': '𝒯',
+    \ '\scrU': '𝒰',
+    \ '\scrV': '𝒱',
+    \ '\scrW': '𝒲',
+    \ '\scrX': '𝒳',
+    \ '\scrY': '𝒴',
+    \ '\scrZ': '𝒵',
+    \ '\scra': '𝒶',
+    \ '\scrb': '𝒷',
+    \ '\scrc': '𝒸',
+    \ '\scrd': '𝒹',
+    \ '\scrf': '𝒻',
+    \ '\scrh': '𝒽',
+    \ '\scri': '𝒾',
+    \ '\scrj': '𝒿',
+    \ '\scrk': '𝓀',
+    \ '\scrl': '𝓁',
+    \ '\scrm': '𝓂',
+    \ '\scrn': '𝓃',
+    \ '\scrp': '𝓅',
+    \ '\scrq': '𝓆',
+    \ '\scrr': '𝓇',
+    \ '\scrs': '𝓈',
+    \ '\scrt': '𝓉',
+    \ '\scru': '𝓊',
+    \ '\scrv': '𝓋',
+    \ '\scrw': '𝓌',
+    \ '\scrx': '𝓍',
+    \ '\scry': '𝓎',
+    \ '\scrz': '𝓏',
+    \ '\bscrA': '𝓐',
+    \ '\bscrB': '𝓑',
+    \ '\bscrC': '𝓒',
+    \ '\bscrD': '𝓓',
+    \ '\bscrE': '𝓔',
+    \ '\bscrF': '𝓕',
+    \ '\bscrG': '𝓖',
+    \ '\bscrH': '𝓗',
+    \ '\bscrI': '𝓘',
+    \ '\bscrJ': '𝓙',
+    \ '\bscrK': '𝓚',
+    \ '\bscrL': '𝓛',
+    \ '\bscrM': '𝓜',
+    \ '\bscrN': '𝓝',
+    \ '\bscrO': '𝓞',
+    \ '\bscrP': '𝓟',
+    \ '\bscrQ': '𝓠',
+    \ '\bscrR': '𝓡',
+    \ '\bscrS': '𝓢',
+    \ '\bscrT': '𝓣',
+    \ '\bscrU': '𝓤',
+    \ '\bscrV': '𝓥',
+    \ '\bscrW': '𝓦',
+    \ '\bscrX': '𝓧',
+    \ '\bscrY': '𝓨',
+    \ '\bscrZ': '𝓩',
+    \ '\bscra': '𝓪',
+    \ '\bscrb': '𝓫',
+    \ '\bscrc': '𝓬',
+    \ '\bscrd': '𝓭',
+    \ '\bscre': '𝓮',
+    \ '\bscrf': '𝓯',
+    \ '\bscrg': '𝓰',
+    \ '\bscrh': '𝓱',
+    \ '\bscri': '𝓲',
+    \ '\bscrj': '𝓳',
+    \ '\bscrk': '𝓴',
+    \ '\bscrl': '𝓵',
+    \ '\bscrm': '𝓶',
+    \ '\bscrn': '𝓷',
+    \ '\bscro': '𝓸',
+    \ '\bscrp': '𝓹',
+    \ '\bscrq': '𝓺',
+    \ '\bscrr': '𝓻',
+    \ '\bscrs': '𝓼',
+    \ '\bscrt': '𝓽',
+    \ '\bscru': '𝓾',
+    \ '\bscrv': '𝓿',
+    \ '\bscrw': '𝔀',
+    \ '\bscrx': '𝔁',
+    \ '\bscry': '𝔂',
+    \ '\bscrz': '𝔃',
+    \ '\frakA': '𝔄',
+    \ '\frakB': '𝔅',
+    \ '\frakD': '𝔇',
+    \ '\frakE': '𝔈',
+    \ '\frakF': '𝔉',
+    \ '\frakG': '𝔊',
+    \ '\frakJ': '𝔍',
+    \ '\frakK': '𝔎',
+    \ '\frakL': '𝔏',
+    \ '\frakM': '𝔐',
+    \ '\frakN': '𝔑',
+    \ '\frakO': '𝔒',
+    \ '\frakP': '𝔓',
+    \ '\frakQ': '𝔔',
+    \ '\frakS': '𝔖',
+    \ '\frakT': '𝔗',
+    \ '\frakU': '𝔘',
+    \ '\frakV': '𝔙',
+    \ '\frakW': '𝔚',
+    \ '\frakX': '𝔛',
+    \ '\frakY': '𝔜',
+    \ '\fraka': '𝔞',
+    \ '\frakb': '𝔟',
+    \ '\frakc': '𝔠',
+    \ '\frakd': '𝔡',
+    \ '\frake': '𝔢',
+    \ '\frakf': '𝔣',
+    \ '\frakg': '𝔤',
+    \ '\frakh': '𝔥',
+    \ '\fraki': '𝔦',
+    \ '\frakj': '𝔧',
+    \ '\frakk': '𝔨',
+    \ '\frakl': '𝔩',
+    \ '\frakm': '𝔪',
+    \ '\frakn': '𝔫',
+    \ '\frako': '𝔬',
+    \ '\frakp': '𝔭',
+    \ '\frakq': '𝔮',
+    \ '\frakr': '𝔯',
+    \ '\fraks': '𝔰',
+    \ '\frakt': '𝔱',
+    \ '\fraku': '𝔲',
+    \ '\frakv': '𝔳',
+    \ '\frakw': '𝔴',
+    \ '\frakx': '𝔵',
+    \ '\fraky': '𝔶',
+    \ '\frakz': '𝔷',
+    \ '\bbA': '𝔸',
+    \ '\bbB': '𝔹',
+    \ '\bbD': '𝔻',
+    \ '\bbE': '𝔼',
+    \ '\bbF': '𝔽',
+    \ '\bbG': '𝔾',
+    \ '\bbI': '𝕀',
+    \ '\bbJ': '𝕁',
+    \ '\bbK': '𝕂',
+    \ '\bbL': '𝕃',
+    \ '\bbM': '𝕄',
+    \ '\bbO': '𝕆',
+    \ '\bbS': '𝕊',
+    \ '\bbT': '𝕋',
+    \ '\bbU': '𝕌',
+    \ '\bbV': '𝕍',
+    \ '\bbW': '𝕎',
+    \ '\bbX': '𝕏',
+    \ '\bbY': '𝕐',
+    \ '\bba': '𝕒',
+    \ '\bbb': '𝕓',
+    \ '\bbc': '𝕔',
+    \ '\bbd': '𝕕',
+    \ '\bbe': '𝕖',
+    \ '\bbf': '𝕗',
+    \ '\bbg': '𝕘',
+    \ '\bbh': '𝕙',
+    \ '\bbi': '𝕚',
+    \ '\bbj': '𝕛',
+    \ '\bbk': '𝕜',
+    \ '\bbl': '𝕝',
+    \ '\bbm': '𝕞',
+    \ '\bbn': '𝕟',
+    \ '\bbo': '𝕠',
+    \ '\bbp': '𝕡',
+    \ '\bbq': '𝕢',
+    \ '\bbr': '𝕣',
+    \ '\bbs': '𝕤',
+    \ '\bbt': '𝕥',
+    \ '\bbu': '𝕦',
+    \ '\bbv': '𝕧',
+    \ '\bbw': '𝕨',
+    \ '\bbx': '𝕩',
+    \ '\bby': '𝕪',
+    \ '\bbz': '𝕫',
+    \ '\bfrakA': '𝕬',
+    \ '\bfrakB': '𝕭',
+    \ '\bfrakC': '𝕮',
+    \ '\bfrakD': '𝕯',
+    \ '\bfrakE': '𝕰',
+    \ '\bfrakF': '𝕱',
+    \ '\bfrakG': '𝕲',
+    \ '\bfrakH': '𝕳',
+    \ '\bfrakI': '𝕴',
+    \ '\bfrakJ': '𝕵',
+    \ '\bfrakK': '𝕶',
+    \ '\bfrakL': '𝕷',
+    \ '\bfrakM': '𝕸',
+    \ '\bfrakN': '𝕹',
+    \ '\bfrakO': '𝕺',
+    \ '\bfrakP': '𝕻',
+    \ '\bfrakQ': '𝕼',
+    \ '\bfrakR': '𝕽',
+    \ '\bfrakS': '𝕾',
+    \ '\bfrakT': '𝕿',
+    \ '\bfrakU': '𝖀',
+    \ '\bfrakV': '𝖁',
+    \ '\bfrakW': '𝖂',
+    \ '\bfrakX': '𝖃',
+    \ '\bfrakY': '𝖄',
+    \ '\bfrakZ': '𝖅',
+    \ '\bfraka': '𝖆',
+    \ '\bfrakb': '𝖇',
+    \ '\bfrakc': '𝖈',
+    \ '\bfrakd': '𝖉',
+    \ '\bfrake': '𝖊',
+    \ '\bfrakf': '𝖋',
+    \ '\bfrakg': '𝖌',
+    \ '\bfrakh': '𝖍',
+    \ '\bfraki': '𝖎',
+    \ '\bfrakj': '𝖏',
+    \ '\bfrakk': '𝖐',
+    \ '\bfrakl': '𝖑',
+    \ '\bfrakm': '𝖒',
+    \ '\bfrakn': '𝖓',
+    \ '\bfrako': '𝖔',
+    \ '\bfrakp': '𝖕',
+    \ '\bfrakq': '𝖖',
+    \ '\bfrakr': '𝖗',
+    \ '\bfraks': '𝖘',
+    \ '\bfrakt': '𝖙',
+    \ '\bfraku': '𝖚',
+    \ '\bfrakv': '𝖛',
+    \ '\bfrakw': '𝖜',
+    \ '\bfrakx': '𝖝',
+    \ '\bfraky': '𝖞',
+    \ '\bfrakz': '𝖟',
+    \ '\sansA': '𝖠',
+    \ '\sansB': '𝖡',
+    \ '\sansC': '𝖢',
+    \ '\sansD': '𝖣',
+    \ '\sansE': '𝖤',
+    \ '\sansF': '𝖥',
+    \ '\sansG': '𝖦',
+    \ '\sansH': '𝖧',
+    \ '\sansI': '𝖨',
+    \ '\sansJ': '𝖩',
+    \ '\sansK': '𝖪',
+    \ '\sansL': '𝖫',
+    \ '\sansM': '𝖬',
+    \ '\sansN': '𝖭',
+    \ '\sansO': '𝖮',
+    \ '\sansP': '𝖯',
+    \ '\sansQ': '𝖰',
+    \ '\sansR': '𝖱',
+    \ '\sansS': '𝖲',
+    \ '\sansT': '𝖳',
+    \ '\sansU': '𝖴',
+    \ '\sansV': '𝖵',
+    \ '\sansW': '𝖶',
+    \ '\sansX': '𝖷',
+    \ '\sansY': '𝖸',
+    \ '\sansZ': '𝖹',
+    \ '\sansa': '𝖺',
+    \ '\sansb': '𝖻',
+    \ '\sansc': '𝖼',
+    \ '\sansd': '𝖽',
+    \ '\sanse': '𝖾',
+    \ '\sansf': '𝖿',
+    \ '\sansg': '𝗀',
+    \ '\sansh': '𝗁',
+    \ '\sansi': '𝗂',
+    \ '\sansj': '𝗃',
+    \ '\sansk': '𝗄',
+    \ '\sansl': '𝗅',
+    \ '\sansm': '𝗆',
+    \ '\sansn': '𝗇',
+    \ '\sanso': '𝗈',
+    \ '\sansp': '𝗉',
+    \ '\sansq': '𝗊',
+    \ '\sansr': '𝗋',
+    \ '\sanss': '𝗌',
+    \ '\sanst': '𝗍',
+    \ '\sansu': '𝗎',
+    \ '\sansv': '𝗏',
+    \ '\sansw': '𝗐',
+    \ '\sansx': '𝗑',
+    \ '\sansy': '𝗒',
+    \ '\sansz': '𝗓',
+    \ '\bsansA': '𝗔',
+    \ '\bsansB': '𝗕',
+    \ '\bsansC': '𝗖',
+    \ '\bsansD': '𝗗',
+    \ '\bsansE': '𝗘',
+    \ '\bsansF': '𝗙',
+    \ '\bsansG': '𝗚',
+    \ '\bsansH': '𝗛',
+    \ '\bsansI': '𝗜',
+    \ '\bsansJ': '𝗝',
+    \ '\bsansK': '𝗞',
+    \ '\bsansL': '𝗟',
+    \ '\bsansM': '𝗠',
+    \ '\bsansN': '𝗡',
+    \ '\bsansO': '𝗢',
+    \ '\bsansP': '𝗣',
+    \ '\bsansQ': '𝗤',
+    \ '\bsansR': '𝗥',
+    \ '\bsansS': '𝗦',
+    \ '\bsansT': '𝗧',
+    \ '\bsansU': '𝗨',
+    \ '\bsansV': '𝗩',
+    \ '\bsansW': '𝗪',
+    \ '\bsansX': '𝗫',
+    \ '\bsansY': '𝗬',
+    \ '\bsansZ': '𝗭',
+    \ '\bsansa': '𝗮',
+    \ '\bsansb': '𝗯',
+    \ '\bsansc': '𝗰',
+    \ '\bsansd': '𝗱',
+    \ '\bsanse': '𝗲',
+    \ '\bsansf': '𝗳',
+    \ '\bsansg': '𝗴',
+    \ '\bsansh': '𝗵',
+    \ '\bsansi': '𝗶',
+    \ '\bsansj': '𝗷',
+    \ '\bsansk': '𝗸',
+    \ '\bsansl': '𝗹',
+    \ '\bsansm': '𝗺',
+    \ '\bsansn': '𝗻',
+    \ '\bsanso': '𝗼',
+    \ '\bsansp': '𝗽',
+    \ '\bsansq': '𝗾',
+    \ '\bsansr': '𝗿',
+    \ '\bsanss': '𝘀',
+    \ '\bsanst': '𝘁',
+    \ '\bsansu': '𝘂',
+    \ '\bsansv': '𝘃',
+    \ '\bsansw': '𝘄',
+    \ '\bsansx': '𝘅',
+    \ '\bsansy': '𝘆',
+    \ '\bsansz': '𝘇',
+    \ '\isansA': '𝘈',
+    \ '\isansB': '𝘉',
+    \ '\isansC': '𝘊',
+    \ '\isansD': '𝘋',
+    \ '\isansE': '𝘌',
+    \ '\isansF': '𝘍',
+    \ '\isansG': '𝘎',
+    \ '\isansH': '𝘏',
+    \ '\isansI': '𝘐',
+    \ '\isansJ': '𝘑',
+    \ '\isansK': '𝘒',
+    \ '\isansL': '𝘓',
+    \ '\isansM': '𝘔',
+    \ '\isansN': '𝘕',
+    \ '\isansO': '𝘖',
+    \ '\isansP': '𝘗',
+    \ '\isansQ': '𝘘',
+    \ '\isansR': '𝘙',
+    \ '\isansS': '𝘚',
+    \ '\isansT': '𝘛',
+    \ '\isansU': '𝘜',
+    \ '\isansV': '𝘝',
+    \ '\isansW': '𝘞',
+    \ '\isansX': '𝘟',
+    \ '\isansY': '𝘠',
+    \ '\isansZ': '𝘡',
+    \ '\isansa': '𝘢',
+    \ '\isansb': '𝘣',
+    \ '\isansc': '𝘤',
+    \ '\isansd': '𝘥',
+    \ '\isanse': '𝘦',
+    \ '\isansf': '𝘧',
+    \ '\isansg': '𝘨',
+    \ '\isansh': '𝘩',
+    \ '\isansi': '𝘪',
+    \ '\isansj': '𝘫',
+    \ '\isansk': '𝘬',
+    \ '\isansl': '𝘭',
+    \ '\isansm': '𝘮',
+    \ '\isansn': '𝘯',
+    \ '\isanso': '𝘰',
+    \ '\isansp': '𝘱',
+    \ '\isansq': '𝘲',
+    \ '\isansr': '𝘳',
+    \ '\isanss': '𝘴',
+    \ '\isanst': '𝘵',
+    \ '\isansu': '𝘶',
+    \ '\isansv': '𝘷',
+    \ '\isansw': '𝘸',
+    \ '\isansx': '𝘹',
+    \ '\isansy': '𝘺',
+    \ '\isansz': '𝘻',
+    \ '\bisansA': '𝘼',
+    \ '\bisansB': '𝘽',
+    \ '\bisansC': '𝘾',
+    \ '\bisansD': '𝘿',
+    \ '\bisansE': '𝙀',
+    \ '\bisansF': '𝙁',
+    \ '\bisansG': '𝙂',
+    \ '\bisansH': '𝙃',
+    \ '\bisansI': '𝙄',
+    \ '\bisansJ': '𝙅',
+    \ '\bisansK': '𝙆',
+    \ '\bisansL': '𝙇',
+    \ '\bisansM': '𝙈',
+    \ '\bisansN': '𝙉',
+    \ '\bisansO': '𝙊',
+    \ '\bisansP': '𝙋',
+    \ '\bisansQ': '𝙌',
+    \ '\bisansR': '𝙍',
+    \ '\bisansS': '𝙎',
+    \ '\bisansT': '𝙏',
+    \ '\bisansU': '𝙐',
+    \ '\bisansV': '𝙑',
+    \ '\bisansW': '𝙒',
+    \ '\bisansX': '𝙓',
+    \ '\bisansY': '𝙔',
+    \ '\bisansZ': '𝙕',
+    \ '\bisansa': '𝙖',
+    \ '\bisansb': '𝙗',
+    \ '\bisansc': '𝙘',
+    \ '\bisansd': '𝙙',
+    \ '\bisanse': '𝙚',
+    \ '\bisansf': '𝙛',
+    \ '\bisansg': '𝙜',
+    \ '\bisansh': '𝙝',
+    \ '\bisansi': '𝙞',
+    \ '\bisansj': '𝙟',
+    \ '\bisansk': '𝙠',
+    \ '\bisansl': '𝙡',
+    \ '\bisansm': '𝙢',
+    \ '\bisansn': '𝙣',
+    \ '\bisanso': '𝙤',
+    \ '\bisansp': '𝙥',
+    \ '\bisansq': '𝙦',
+    \ '\bisansr': '𝙧',
+    \ '\bisanss': '𝙨',
+    \ '\bisanst': '𝙩',
+    \ '\bisansu': '𝙪',
+    \ '\bisansv': '𝙫',
+    \ '\bisansw': '𝙬',
+    \ '\bisansx': '𝙭',
+    \ '\bisansy': '𝙮',
+    \ '\bisansz': '𝙯',
+    \ '\ttA': '𝙰',
+    \ '\ttB': '𝙱',
+    \ '\ttC': '𝙲',
+    \ '\ttD': '𝙳',
+    \ '\ttE': '𝙴',
+    \ '\ttF': '𝙵',
+    \ '\ttG': '𝙶',
+    \ '\ttH': '𝙷',
+    \ '\ttI': '𝙸',
+    \ '\ttJ': '𝙹',
+    \ '\ttK': '𝙺',
+    \ '\ttL': '𝙻',
+    \ '\ttM': '𝙼',
+    \ '\ttN': '𝙽',
+    \ '\ttO': '𝙾',
+    \ '\ttP': '𝙿',
+    \ '\ttQ': '𝚀',
+    \ '\ttR': '𝚁',
+    \ '\ttS': '𝚂',
+    \ '\ttT': '𝚃',
+    \ '\ttU': '𝚄',
+    \ '\ttV': '𝚅',
+    \ '\ttW': '𝚆',
+    \ '\ttX': '𝚇',
+    \ '\ttY': '𝚈',
+    \ '\ttZ': '𝚉',
+    \ '\tta': '𝚊',
+    \ '\ttb': '𝚋',
+    \ '\ttc': '𝚌',
+    \ '\ttd': '𝚍',
+    \ '\tte': '𝚎',
+    \ '\ttf': '𝚏',
+    \ '\ttg': '𝚐',
+    \ '\tth': '𝚑',
+    \ '\tti': '𝚒',
+    \ '\ttj': '𝚓',
+    \ '\ttk': '𝚔',
+    \ '\ttl': '𝚕',
+    \ '\ttm': '𝚖',
+    \ '\ttn': '𝚗',
+    \ '\tto': '𝚘',
+    \ '\ttp': '𝚙',
+    \ '\ttq': '𝚚',
+    \ '\ttr': '𝚛',
+    \ '\tts': '𝚜',
+    \ '\ttt': '𝚝',
+    \ '\ttu': '𝚞',
+    \ '\ttv': '𝚟',
+    \ '\ttw': '𝚠',
+    \ '\ttx': '𝚡',
+    \ '\tty': '𝚢',
+    \ '\ttz': '𝚣',
+    \ '\itimath': '𝚤',
+    \ '\itjmath': '𝚥',
+    \ '\bfAlpha': '𝚨',
+    \ '\bfBeta': '𝚩',
+    \ '\bfGamma': '𝚪',
+    \ '\bfDelta': '𝚫',
+    \ '\bfEpsilon': '𝚬',
+    \ '\bfZeta': '𝚭',
+    \ '\bfEta': '𝚮',
+    \ '\bfTheta': '𝚯',
+    \ '\bfIota': '𝚰',
+    \ '\bfKappa': '𝚱',
+    \ '\bfLambda': '𝚲',
+    \ '\bfMu': '𝚳',
+    \ '\bfNu': '𝚴',
+    \ '\bfXi': '𝚵',
+    \ '\bfOmicron': '𝚶',
+    \ '\bfPi': '𝚷',
+    \ '\bfRho': '𝚸',
+    \ '\bfvarTheta': '𝚹',
+    \ '\bfSigma': '𝚺',
+    \ '\bfTau': '𝚻',
+    \ '\bfUpsilon': '𝚼',
+    \ '\bfPhi': '𝚽',
+    \ '\bfChi': '𝚾',
+    \ '\bfPsi': '𝚿',
+    \ '\bfOmega': '𝛀',
+    \ '\bfnabla': '𝛁',
+    \ '\bfalpha': '𝛂',
+    \ '\bfbeta': '𝛃',
+    \ '\bfgamma': '𝛄',
+    \ '\bfdelta': '𝛅',
+    \ '\bfepsilon': '𝛆',
+    \ '\bfzeta': '𝛇',
+    \ '\bfeta': '𝛈',
+    \ '\bftheta': '𝛉',
+    \ '\bfiota': '𝛊',
+    \ '\bfkappa': '𝛋',
+    \ '\bflambda': '𝛌',
+    \ '\bfmu': '𝛍',
+    \ '\bfnu': '𝛎',
+    \ '\bfxi': '𝛏',
+    \ '\bfomicron': '𝛐',
+    \ '\bfpi': '𝛑',
+    \ '\bfrho': '𝛒',
+    \ '\bfvarsigma': '𝛓',
+    \ '\bfsigma': '𝛔',
+    \ '\bftau': '𝛕',
+    \ '\bfupsilon': '𝛖',
+    \ '\bfvarphi': '𝛗',
+    \ '\bfchi': '𝛘',
+    \ '\bfpsi': '𝛙',
+    \ '\bfomega': '𝛚',
+    \ '\bfpartial': '𝛛',
+    \ '\bfvarepsilon': '𝛜',
+    \ '\bfvartheta': '𝛝',
+    \ '\bfvarkappa': '𝛞',
+    \ '\bfphi': '𝛟',
+    \ '\bfvarrho': '𝛠',
+    \ '\bfvarpi': '𝛡',
+    \ '\itAlpha': '𝛢',
+    \ '\itBeta': '𝛣',
+    \ '\itGamma': '𝛤',
+    \ '\itDelta': '𝛥',
+    \ '\itEpsilon': '𝛦',
+    \ '\itZeta': '𝛧',
+    \ '\itEta': '𝛨',
+    \ '\itTheta': '𝛩',
+    \ '\itIota': '𝛪',
+    \ '\itKappa': '𝛫',
+    \ '\itLambda': '𝛬',
+    \ '\itMu': '𝛭',
+    \ '\itNu': '𝛮',
+    \ '\itXi': '𝛯',
+    \ '\itOmicron': '𝛰',
+    \ '\itPi': '𝛱',
+    \ '\itRho': '𝛲',
+    \ '\itvarTheta': '𝛳',
+    \ '\itSigma': '𝛴',
+    \ '\itTau': '𝛵',
+    \ '\itUpsilon': '𝛶',
+    \ '\itPhi': '𝛷',
+    \ '\itChi': '𝛸',
+    \ '\itPsi': '𝛹',
+    \ '\itOmega': '𝛺',
+    \ '\itnabla': '𝛻',
+    \ '\italpha': '𝛼',
+    \ '\itbeta': '𝛽',
+    \ '\itgamma': '𝛾',
+    \ '\itdelta': '𝛿',
+    \ '\itepsilon': '𝜀',
+    \ '\itzeta': '𝜁',
+    \ '\iteta': '𝜂',
+    \ '\ittheta': '𝜃',
+    \ '\itiota': '𝜄',
+    \ '\itkappa': '𝜅',
+    \ '\itlambda': '𝜆',
+    \ '\itmu': '𝜇',
+    \ '\itnu': '𝜈',
+    \ '\itxi': '𝜉',
+    \ '\itomicron': '𝜊',
+    \ '\itpi': '𝜋',
+    \ '\itrho': '𝜌',
+    \ '\itvarsigma': '𝜍',
+    \ '\itsigma': '𝜎',
+    \ '\ittau': '𝜏',
+    \ '\itupsilon': '𝜐',
+    \ '\itphi': '𝜑',
+    \ '\itchi': '𝜒',
+    \ '\itpsi': '𝜓',
+    \ '\itomega': '𝜔',
+    \ '\itpartial': '𝜕',
+    \ '\itvarepsilon': '𝜖',
+    \ '\itvartheta': '𝜗',
+    \ '\itvarkappa': '𝜘',
+    \ '\itvarphi': '𝜙',
+    \ '\itvarrho': '𝜚',
+    \ '\itvarpi': '𝜛',
+    \ '\biAlpha': '𝜜',
+    \ '\biBeta': '𝜝',
+    \ '\biGamma': '𝜞',
+    \ '\biDelta': '𝜟',
+    \ '\biEpsilon': '𝜠',
+    \ '\biZeta': '𝜡',
+    \ '\biEta': '𝜢',
+    \ '\biTheta': '𝜣',
+    \ '\biIota': '𝜤',
+    \ '\biKappa': '𝜥',
+    \ '\biLambda': '𝜦',
+    \ '\biMu': '𝜧',
+    \ '\biNu': '𝜨',
+    \ '\biXi': '𝜩',
+    \ '\biOmicron': '𝜪',
+    \ '\biPi': '𝜫',
+    \ '\biRho': '𝜬',
+    \ '\bivarTheta': '𝜭',
+    \ '\biSigma': '𝜮',
+    \ '\biTau': '𝜯',
+    \ '\biUpsilon': '𝜰',
+    \ '\biPhi': '𝜱',
+    \ '\biChi': '𝜲',
+    \ '\biPsi': '𝜳',
+    \ '\biOmega': '𝜴',
+    \ '\binabla': '𝜵',
+    \ '\bialpha': '𝜶',
+    \ '\bibeta': '𝜷',
+    \ '\bigamma': '𝜸',
+    \ '\bidelta': '𝜹',
+    \ '\biepsilon': '𝜺',
+    \ '\bizeta': '𝜻',
+    \ '\bieta': '𝜼',
+    \ '\bitheta': '𝜽',
+    \ '\biiota': '𝜾',
+    \ '\bikappa': '𝜿',
+    \ '\bilambda': '𝝀',
+    \ '\bimu': '𝝁',
+    \ '\binu': '𝝂',
+    \ '\bixi': '𝝃',
+    \ '\biomicron': '𝝄',
+    \ '\bipi': '𝝅',
+    \ '\birho': '𝝆',
+    \ '\bivarsigma': '𝝇',
+    \ '\bisigma': '𝝈',
+    \ '\bitau': '𝝉',
+    \ '\biupsilon': '𝝊',
+    \ '\biphi': '𝝋',
+    \ '\bichi': '𝝌',
+    \ '\bipsi': '𝝍',
+    \ '\biomega': '𝝎',
+    \ '\bipartial': '𝝏',
+    \ '\bivarepsilon': '𝝐',
+    \ '\bivartheta': '𝝑',
+    \ '\bivarkappa': '𝝒',
+    \ '\bivarphi': '𝝓',
+    \ '\bivarrho': '𝝔',
+    \ '\bivarpi': '𝝕',
+    \ '\bsansAlpha': '𝝖',
+    \ '\bsansBeta': '𝝗',
+    \ '\bsansGamma': '𝝘',
+    \ '\bsansDelta': '𝝙',
+    \ '\bsansEpsilon': '𝝚',
+    \ '\bsansZeta': '𝝛',
+    \ '\bsansEta': '𝝜',
+    \ '\bsansTheta': '𝝝',
+    \ '\bsansIota': '𝝞',
+    \ '\bsansKappa': '𝝟',
+    \ '\bsansLambda': '𝝠',
+    \ '\bsansMu': '𝝡',
+    \ '\bsansNu': '𝝢',
+    \ '\bsansXi': '𝝣',
+    \ '\bsansOmicron': '𝝤',
+    \ '\bsansPi': '𝝥',
+    \ '\bsansRho': '𝝦',
+    \ '\bsansvarTheta': '𝝧',
+    \ '\bsansSigma': '𝝨',
+    \ '\bsansTau': '𝝩',
+    \ '\bsansUpsilon': '𝝪',
+    \ '\bsansPhi': '𝝫',
+    \ '\bsansChi': '𝝬',
+    \ '\bsansPsi': '𝝭',
+    \ '\bsansOmega': '𝝮',
+    \ '\bsansnabla': '𝝯',
+    \ '\bsansalpha': '𝝰',
+    \ '\bsansbeta': '𝝱',
+    \ '\bsansgamma': '𝝲',
+    \ '\bsansdelta': '𝝳',
+    \ '\bsansepsilon': '𝝴',
+    \ '\bsanszeta': '𝝵',
+    \ '\bsanseta': '𝝶',
+    \ '\bsanstheta': '𝝷',
+    \ '\bsansiota': '𝝸',
+    \ '\bsanskappa': '𝝹',
+    \ '\bsanslambda': '𝝺',
+    \ '\bsansmu': '𝝻',
+    \ '\bsansnu': '𝝼',
+    \ '\bsansxi': '𝝽',
+    \ '\bsansomicron': '𝝾',
+    \ '\bsanspi': '𝝿',
+    \ '\bsansrho': '𝞀',
+    \ '\bsansvarsigma': '𝞁',
+    \ '\bsanssigma': '𝞂',
+    \ '\bsanstau': '𝞃',
+    \ '\bsansupsilon': '𝞄',
+    \ '\bsansphi': '𝞅',
+    \ '\bsanschi': '𝞆',
+    \ '\bsanspsi': '𝞇',
+    \ '\bsansomega': '𝞈',
+    \ '\bsanspartial': '𝞉',
+    \ '\bsansvarepsilon': '𝞊',
+    \ '\bsansvartheta': '𝞋',
+    \ '\bsansvarkappa': '𝞌',
+    \ '\bsansvarphi': '𝞍',
+    \ '\bsansvarrho': '𝞎',
+    \ '\bsansvarpi': '𝞏',
+    \ '\bisansAlpha': '𝞐',
+    \ '\bisansBeta': '𝞑',
+    \ '\bisansGamma': '𝞒',
+    \ '\bisansDelta': '𝞓',
+    \ '\bisansEpsilon': '𝞔',
+    \ '\bisansZeta': '𝞕',
+    \ '\bisansEta': '𝞖',
+    \ '\bisansTheta': '𝞗',
+    \ '\bisansIota': '𝞘',
+    \ '\bisansKappa': '𝞙',
+    \ '\bisansLambda': '𝞚',
+    \ '\bisansMu': '𝞛',
+    \ '\bisansNu': '𝞜',
+    \ '\bisansXi': '𝞝',
+    \ '\bisansOmicron': '𝞞',
+    \ '\bisansPi': '𝞟',
+    \ '\bisansRho': '𝞠',
+    \ '\bisansvarTheta': '𝞡',
+    \ '\bisansSigma': '𝞢',
+    \ '\bisansTau': '𝞣',
+    \ '\bisansUpsilon': '𝞤',
+    \ '\bisansPhi': '𝞥',
+    \ '\bisansChi': '𝞦',
+    \ '\bisansPsi': '𝞧',
+    \ '\bisansOmega': '𝞨',
+    \ '\bisansnabla': '𝞩',
+    \ '\bisansalpha': '𝞪',
+    \ '\bisansbeta': '𝞫',
+    \ '\bisansgamma': '𝞬',
+    \ '\bisansdelta': '𝞭',
+    \ '\bisansepsilon': '𝞮',
+    \ '\bisanszeta': '𝞯',
+    \ '\bisanseta': '𝞰',
+    \ '\bisanstheta': '𝞱',
+    \ '\bisansiota': '𝞲',
+    \ '\bisanskappa': '𝞳',
+    \ '\bisanslambda': '𝞴',
+    \ '\bisansmu': '𝞵',
+    \ '\bisansnu': '𝞶',
+    \ '\bisansxi': '𝞷',
+    \ '\bisansomicron': '𝞸',
+    \ '\bisanspi': '𝞹',
+    \ '\bisansrho': '𝞺',
+    \ '\bisansvarsigma': '𝞻',
+    \ '\bisanssigma': '𝞼',
+    \ '\bisanstau': '𝞽',
+    \ '\bisansupsilon': '𝞾',
+    \ '\bisansphi': '𝞿',
+    \ '\bisanschi': '𝟀',
+    \ '\bisanspsi': '𝟁',
+    \ '\bisansomega': '𝟂',
+    \ '\bisanspartial': '𝟃',
+    \ '\bisansvarepsilon': '𝟄',
+    \ '\bisansvartheta': '𝟅',
+    \ '\bisansvarkappa': '𝟆',
+    \ '\bisansvarphi': '𝟇',
+    \ '\bisansvarrho': '𝟈',
+    \ '\bisansvarpi': '𝟉',
+    \ '\bfDigamma': '𝟊',
+    \ '\bfdigamma': '𝟋',
+    \ '\bfzero': '𝟎',
+    \ '\bfone': '𝟏',
+    \ '\bftwo': '𝟐',
+    \ '\bfthree': '𝟑',
+    \ '\bffour': '𝟒',
+    \ '\bffive': '𝟓',
+    \ '\bfsix': '𝟔',
+    \ '\bfseven': '𝟕',
+    \ '\bfeight': '𝟖',
+    \ '\bfnine': '𝟗',
+    \ '\bbzero': '𝟘',
+    \ '\bbone': '𝟙',
+    \ '\bbtwo': '𝟚',
+    \ '\bbthree': '𝟛',
+    \ '\bbfour': '𝟜',
+    \ '\bbfive': '𝟝',
+    \ '\bbsix': '𝟞',
+    \ '\bbseven': '𝟟',
+    \ '\bbeight': '𝟠',
+    \ '\bbnine': '𝟡',
+    \ '\sanszero': '𝟢',
+    \ '\sansone': '𝟣',
+    \ '\sanstwo': '𝟤',
+    \ '\sansthree': '𝟥',
+    \ '\sansfour': '𝟦',
+    \ '\sansfive': '𝟧',
+    \ '\sanssix': '𝟨',
+    \ '\sansseven': '𝟩',
+    \ '\sanseight': '𝟪',
+    \ '\sansnine': '𝟫',
+    \ '\bsanszero': '𝟬',
+    \ '\bsansone': '𝟭',
+    \ '\bsanstwo': '𝟮',
+    \ '\bsansthree': '𝟯',
+    \ '\bsansfour': '𝟰',
+    \ '\bsansfive': '𝟱',
+    \ '\bsanssix': '𝟲',
+    \ '\bsansseven': '𝟳',
+    \ '\bsanseight': '𝟴',
+    \ '\bsansnine': '𝟵',
+    \ '\ttzero': '𝟶',
+    \ '\ttone': '𝟷',
+    \ '\tttwo': '𝟸',
+    \ '\ttthree': '𝟹',
+    \ '\ttfour': '𝟺',
+    \ '\ttfive': '𝟻',
+    \ '\ttsix': '𝟼',
+    \ '\ttseven': '𝟽',
+    \ '\tteight': '𝟾',
+    \ '\ttnine': '𝟿',
+    \ '\:mahjong:': '🀄',
+    \ '\:black_joker:': '🃏',
+    \ '\:a:': '🅰',
+    \ '\:b:': '🅱',
+    \ '\:o2:': '🅾',
+    \ '\:parking:': '🅿',
+    \ '\:ab:': '🆎',
+    \ '\:cl:': '🆑',
+    \ '\:cool:': '🆒',
+    \ '\:free:': '🆓',
+    \ '\:id:': '🆔',
+    \ '\:new:': '🆕',
+    \ '\:ng:': '🆖',
+    \ '\:ok:': '🆗',
+    \ '\:sos:': '🆘',
+    \ '\:up:': '🆙',
+    \ '\:vs:': '🆚',
+    \ '\:koko:': '🈁',
+    \ '\:sa:': '🈂',
+    \ '\:u7121:': '🈚',
+    \ '\:u6307:': '🈯',
+    \ '\:u7981:': '🈲',
+    \ '\:u7a7a:': '🈳',
+    \ '\:u5408:': '🈴',
+    \ '\:u6e80:': '🈵',
+    \ '\:u6709:': '🈶',
+    \ '\:u6708:': '🈷',
+    \ '\:u7533:': '🈸',
+    \ '\:u5272:': '🈹',
+    \ '\:u55b6:': '🈺',
+    \ '\:ideograph_advantage:': '🉐',
+    \ '\:accept:': '🉑',
+    \ '\:cyclone:': '🌀',
+    \ '\:foggy:': '🌁',
+    \ '\:closed_umbrella:': '🌂',
+    \ '\:night_with_stars:': '🌃',
+    \ '\:sunrise_over_mountains:': '🌄',
+    \ '\:sunrise:': '🌅',
+    \ '\:city_sunset:': '🌆',
+    \ '\:city_sunrise:': '🌇',
+    \ '\:rainbow:': '🌈',
+    \ '\:bridge_at_night:': '🌉',
+    \ '\:ocean:': '🌊',
+    \ '\:volcano:': '🌋',
+    \ '\:milky_way:': '🌌',
+    \ '\:earth_africa:': '🌍',
+    \ '\:earth_americas:': '🌎',
+    \ '\:earth_asia:': '🌏',
+    \ '\:globe_with_meridians:': '🌐',
+    \ '\:new_moon:': '🌑',
+    \ '\:waxing_crescent_moon:': '🌒',
+    \ '\:first_quarter_moon:': '🌓',
+    \ '\:moon:': '🌔',
+    \ '\:full_moon:': '🌕',
+    \ '\:waning_gibbous_moon:': '🌖',
+    \ '\:last_quarter_moon:': '🌗',
+    \ '\:waning_crescent_moon:': '🌘',
+    \ '\:crescent_moon:': '🌙',
+    \ '\:new_moon_with_face:': '🌚',
+    \ '\:first_quarter_moon_with_face:': '🌛',
+    \ '\:last_quarter_moon_with_face:': '🌜',
+    \ '\:full_moon_with_face:': '🌝',
+    \ '\:sun_with_face:': '🌞',
+    \ '\:star2:': '🌟',
+    \ '\:stars:': '🌠',
+    \ '\:chestnut:': '🌰',
+    \ '\:seedling:': '🌱',
+    \ '\:evergreen_tree:': '🌲',
+    \ '\:deciduous_tree:': '🌳',
+    \ '\:palm_tree:': '🌴',
+    \ '\:cactus:': '🌵',
+    \ '\:tulip:': '🌷',
+    \ '\:cherry_blossom:': '🌸',
+    \ '\:rose:': '🌹',
+    \ '\:hibiscus:': '🌺',
+    \ '\:sunflower:': '🌻',
+    \ '\:blossom:': '🌼',
+    \ '\:corn:': '🌽',
+    \ '\:ear_of_rice:': '🌾',
+    \ '\:herb:': '🌿',
+    \ '\:four_leaf_clover:': '🍀',
+    \ '\:maple_leaf:': '🍁',
+    \ '\:fallen_leaf:': '🍂',
+    \ '\:leaves:': '🍃',
+    \ '\:mushroom:': '🍄',
+    \ '\:tomato:': '🍅',
+    \ '\:eggplant:': '🍆',
+    \ '\:grapes:': '🍇',
+    \ '\:melon:': '🍈',
+    \ '\:watermelon:': '🍉',
+    \ '\:tangerine:': '🍊',
+    \ '\:lemon:': '🍋',
+    \ '\:banana:': '🍌',
+    \ '\:pineapple:': '🍍',
+    \ '\:apple:': '🍎',
+    \ '\:green_apple:': '🍏',
+    \ '\:pear:': '🍐',
+    \ '\:peach:': '🍑',
+    \ '\:cherries:': '🍒',
+    \ '\:strawberry:': '🍓',
+    \ '\:hamburger:': '🍔',
+    \ '\:pizza:': '🍕',
+    \ '\:meat_on_bone:': '🍖',
+    \ '\:poultry_leg:': '🍗',
+    \ '\:rice_cracker:': '🍘',
+    \ '\:rice_ball:': '🍙',
+    \ '\:rice:': '🍚',
+    \ '\:curry:': '🍛',
+    \ '\:ramen:': '🍜',
+    \ '\:spaghetti:': '🍝',
+    \ '\:bread:': '🍞',
+    \ '\:fries:': '🍟',
+    \ '\:sweet_potato:': '🍠',
+    \ '\:dango:': '🍡',
+    \ '\:oden:': '🍢',
+    \ '\:sushi:': '🍣',
+    \ '\:fried_shrimp:': '🍤',
+    \ '\:fish_cake:': '🍥',
+    \ '\:icecream:': '🍦',
+    \ '\:shaved_ice:': '🍧',
+    \ '\:ice_cream:': '🍨',
+    \ '\:doughnut:': '🍩',
+    \ '\:cookie:': '🍪',
+    \ '\:chocolate_bar:': '🍫',
+    \ '\:candy:': '🍬',
+    \ '\:lollipop:': '🍭',
+    \ '\:custard:': '🍮',
+    \ '\:honey_pot:': '🍯',
+    \ '\:cake:': '🍰',
+    \ '\:bento:': '🍱',
+    \ '\:stew:': '🍲',
+    \ '\:egg:': '🍳',
+    \ '\:fork_and_knife:': '🍴',
+    \ '\:tea:': '🍵',
+    \ '\:sake:': '🍶',
+    \ '\:wine_glass:': '🍷',
+    \ '\:cocktail:': '🍸',
+    \ '\:tropical_drink:': '🍹',
+    \ '\:beer:': '🍺',
+    \ '\:beers:': '🍻',
+    \ '\:baby_bottle:': '🍼',
+    \ '\:ribbon:': '🎀',
+    \ '\:gift:': '🎁',
+    \ '\:birthday:': '🎂',
+    \ '\:jack_o_lantern:': '🎃',
+    \ '\:christmas_tree:': '🎄',
+    \ '\:santa:': '🎅',
+    \ '\:fireworks:': '🎆',
+    \ '\:sparkler:': '🎇',
+    \ '\:balloon:': '🎈',
+    \ '\:tada:': '🎉',
+    \ '\:confetti_ball:': '🎊',
+    \ '\:tanabata_tree:': '🎋',
+    \ '\:crossed_flags:': '🎌',
+    \ '\:bamboo:': '🎍',
+    \ '\:dolls:': '🎎',
+    \ '\:flags:': '🎏',
+    \ '\:wind_chime:': '🎐',
+    \ '\:rice_scene:': '🎑',
+    \ '\:school_satchel:': '🎒',
+    \ '\:mortar_board:': '🎓',
+    \ '\:carousel_horse:': '🎠',
+    \ '\:ferris_wheel:': '🎡',
+    \ '\:roller_coaster:': '🎢',
+    \ '\:fishing_pole_and_fish:': '🎣',
+    \ '\:microphone:': '🎤',
+    \ '\:movie_camera:': '🎥',
+    \ '\:cinema:': '🎦',
+    \ '\:headphones:': '🎧',
+    \ '\:art:': '🎨',
+    \ '\:tophat:': '🎩',
+    \ '\:circus_tent:': '🎪',
+    \ '\:ticket:': '🎫',
+    \ '\:clapper:': '🎬',
+    \ '\:performing_arts:': '🎭',
+    \ '\:video_game:': '🎮',
+    \ '\:dart:': '🎯',
+    \ '\:slot_machine:': '🎰',
+    \ '\:8ball:': '🎱',
+    \ '\:game_die:': '🎲',
+    \ '\:bowling:': '🎳',
+    \ '\:flower_playing_cards:': '🎴',
+    \ '\:musical_note:': '🎵',
+    \ '\:notes:': '🎶',
+    \ '\:saxophone:': '🎷',
+    \ '\:guitar:': '🎸',
+    \ '\:musical_keyboard:': '🎹',
+    \ '\:trumpet:': '🎺',
+    \ '\:violin:': '🎻',
+    \ '\:musical_score:': '🎼',
+    \ '\:running_shirt_with_sash:': '🎽',
+    \ '\:tennis:': '🎾',
+    \ '\:ski:': '🎿',
+    \ '\:basketball:': '🏀',
+    \ '\:checkered_flag:': '🏁',
+    \ '\:snowboarder:': '🏂',
+    \ '\:runner:': '🏃',
+    \ '\:surfer:': '🏄',
+    \ '\:trophy:': '🏆',
+    \ '\:horse_racing:': '🏇',
+    \ '\:football:': '🏈',
+    \ '\:rugby_football:': '🏉',
+    \ '\:swimmer:': '🏊',
+    \ '\:house:': '🏠',
+    \ '\:house_with_garden:': '🏡',
+    \ '\:office:': '🏢',
+    \ '\:post_office:': '🏣',
+    \ '\:european_post_office:': '🏤',
+    \ '\:hospital:': '🏥',
+    \ '\:bank:': '🏦',
+    \ '\:atm:': '🏧',
+    \ '\:hotel:': '🏨',
+    \ '\:love_hotel:': '🏩',
+    \ '\:convenience_store:': '🏪',
+    \ '\:school:': '🏫',
+    \ '\:department_store:': '🏬',
+    \ '\:factory:': '🏭',
+    \ '\:izakaya_lantern:': '🏮',
+    \ '\:japanese_castle:': '🏯',
+    \ '\:european_castle:': '🏰',
+    \ '\:skin-tone-2:': '🏻',
+    \ '\:skin-tone-3:': '🏼',
+    \ '\:skin-tone-4:': '🏽',
+    \ '\:skin-tone-5:': '🏾',
+    \ '\:skin-tone-6:': '🏿',
+    \ '\:rat:': '🐀',
+    \ '\:mouse2:': '🐁',
+    \ '\:ox:': '🐂',
+    \ '\:water_buffalo:': '🐃',
+    \ '\:cow2:': '🐄',
+    \ '\:tiger2:': '🐅',
+    \ '\:leopard:': '🐆',
+    \ '\:rabbit2:': '🐇',
+    \ '\:cat2:': '🐈',
+    \ '\:dragon:': '🐉',
+    \ '\:crocodile:': '🐊',
+    \ '\:whale2:': '🐋',
+    \ '\:snail:': '🐌',
+    \ '\:snake:': '🐍',
+    \ '\:racehorse:': '🐎',
+    \ '\:ram:': '🐏',
+    \ '\:goat:': '🐐',
+    \ '\:sheep:': '🐑',
+    \ '\:monkey:': '🐒',
+    \ '\:rooster:': '🐓',
+    \ '\:chicken:': '🐔',
+    \ '\:dog2:': '🐕',
+    \ '\:pig2:': '🐖',
+    \ '\:boar:': '🐗',
+    \ '\:elephant:': '🐘',
+    \ '\:octopus:': '🐙',
+    \ '\:shell:': '🐚',
+    \ '\:bug:': '🐛',
+    \ '\:ant:': '🐜',
+    \ '\:bee:': '🐝',
+    \ '\:beetle:': '🐞',
+    \ '\:fish:': '🐟',
+    \ '\:tropical_fish:': '🐠',
+    \ '\:blowfish:': '🐡',
+    \ '\:turtle:': '🐢',
+    \ '\:hatching_chick:': '🐣',
+    \ '\:baby_chick:': '🐤',
+    \ '\:hatched_chick:': '🐥',
+    \ '\:bird:': '🐦',
+    \ '\:penguin:': '🐧',
+    \ '\:koala:': '🐨',
+    \ '\:poodle:': '🐩',
+    \ '\:dromedary_camel:': '🐪',
+    \ '\:camel:': '🐫',
+    \ '\:dolphin:': '🐬',
+    \ '\:mouse:': '🐭',
+    \ '\:cow:': '🐮',
+    \ '\:tiger:': '🐯',
+    \ '\:rabbit:': '🐰',
+    \ '\:cat:': '🐱',
+    \ '\:dragon_face:': '🐲',
+    \ '\:whale:': '🐳',
+    \ '\:horse:': '🐴',
+    \ '\:monkey_face:': '🐵',
+    \ '\:dog:': '🐶',
+    \ '\:pig:': '🐷',
+    \ '\:frog:': '🐸',
+    \ '\:hamster:': '🐹',
+    \ '\:wolf:': '🐺',
+    \ '\:bear:': '🐻',
+    \ '\:panda_face:': '🐼',
+    \ '\:pig_nose:': '🐽',
+    \ '\:feet:': '🐾',
+    \ '\:eyes:': '👀',
+    \ '\:ear:': '👂',
+    \ '\:nose:': '👃',
+    \ '\:lips:': '👄',
+    \ '\:tongue:': '👅',
+    \ '\:point_up_2:': '👆',
+    \ '\:point_down:': '👇',
+    \ '\:point_left:': '👈',
+    \ '\:point_right:': '👉',
+    \ '\:facepunch:': '👊',
+    \ '\:wave:': '👋',
+    \ '\:ok_hand:': '👌',
+    \ '\:+1:': '👍',
+    \ '\:-1:': '👎',
+    \ '\:clap:': '👏',
+    \ '\:open_hands:': '👐',
+    \ '\:crown:': '👑',
+    \ '\:womans_hat:': '👒',
+    \ '\:eyeglasses:': '👓',
+    \ '\:necktie:': '👔',
+    \ '\:shirt:': '👕',
+    \ '\:jeans:': '👖',
+    \ '\:dress:': '👗',
+    \ '\:kimono:': '👘',
+    \ '\:bikini:': '👙',
+    \ '\:womans_clothes:': '👚',
+    \ '\:purse:': '👛',
+    \ '\:handbag:': '👜',
+    \ '\:pouch:': '👝',
+    \ '\:mans_shoe:': '👞',
+    \ '\:athletic_shoe:': '👟',
+    \ '\:high_heel:': '👠',
+    \ '\:sandal:': '👡',
+    \ '\:boot:': '👢',
+    \ '\:footprints:': '👣',
+    \ '\:bust_in_silhouette:': '👤',
+    \ '\:busts_in_silhouette:': '👥',
+    \ '\:boy:': '👦',
+    \ '\:girl:': '👧',
+    \ '\:man:': '👨',
+    \ '\:woman:': '👩',
+    \ '\:family:': '👪',
+    \ '\:couple:': '👫',
+    \ '\:two_men_holding_hands:': '👬',
+    \ '\:two_women_holding_hands:': '👭',
+    \ '\:cop:': '👮',
+    \ '\:dancers:': '👯',
+    \ '\:bride_with_veil:': '👰',
+    \ '\:person_with_blond_hair:': '👱',
+    \ '\:man_with_gua_pi_mao:': '👲',
+    \ '\:man_with_turban:': '👳',
+    \ '\:older_man:': '👴',
+    \ '\:older_woman:': '👵',
+    \ '\:baby:': '👶',
+    \ '\:construction_worker:': '👷',
+    \ '\:princess:': '👸',
+    \ '\:japanese_ogre:': '👹',
+    \ '\:japanese_goblin:': '👺',
+    \ '\:ghost:': '👻',
+    \ '\:angel:': '👼',
+    \ '\:alien:': '👽',
+    \ '\:space_invader:': '👾',
+    \ '\:imp:': '👿',
+    \ '\:skull:': '💀',
+    \ '\:information_desk_person:': '💁',
+    \ '\:guardsman:': '💂',
+    \ '\:dancer:': '💃',
+    \ '\:lipstick:': '💄',
+    \ '\:nail_care:': '💅',
+    \ '\:massage:': '💆',
+    \ '\:haircut:': '💇',
+    \ '\:barber:': '💈',
+    \ '\:syringe:': '💉',
+    \ '\:pill:': '💊',
+    \ '\:kiss:': '💋',
+    \ '\:love_letter:': '💌',
+    \ '\:ring:': '💍',
+    \ '\:gem:': '💎',
+    \ '\:couplekiss:': '💏',
+    \ '\:bouquet:': '💐',
+    \ '\:couple_with_heart:': '💑',
+    \ '\:wedding:': '💒',
+    \ '\:heartbeat:': '💓',
+    \ '\:broken_heart:': '💔',
+    \ '\:two_hearts:': '💕',
+    \ '\:sparkling_heart:': '💖',
+    \ '\:heartpulse:': '💗',
+    \ '\:cupid:': '💘',
+    \ '\:blue_heart:': '💙',
+    \ '\:green_heart:': '💚',
+    \ '\:yellow_heart:': '💛',
+    \ '\:purple_heart:': '💜',
+    \ '\:gift_heart:': '💝',
+    \ '\:revolving_hearts:': '💞',
+    \ '\:heart_decoration:': '💟',
+    \ '\:diamond_shape_with_a_dot_inside:': '💠',
+    \ '\:bulb:': '💡',
+    \ '\:anger:': '💢',
+    \ '\:bomb:': '💣',
+    \ '\:zzz:': '💤',
+    \ '\:boom:': '💥',
+    \ '\:sweat_drops:': '💦',
+    \ '\:droplet:': '💧',
+    \ '\:dash:': '💨',
+    \ '\:hankey:': '💩',
+    \ '\:muscle:': '💪',
+    \ '\:dizzy:': '💫',
+    \ '\:speech_balloon:': '💬',
+    \ '\:thought_balloon:': '💭',
+    \ '\:white_flower:': '💮',
+    \ '\:100:': '💯',
+    \ '\:moneybag:': '💰',
+    \ '\:currency_exchange:': '💱',
+    \ '\:heavy_dollar_sign:': '💲',
+    \ '\:credit_card:': '💳',
+    \ '\:yen:': '💴',
+    \ '\:dollar:': '💵',
+    \ '\:euro:': '💶',
+    \ '\:pound:': '💷',
+    \ '\:money_with_wings:': '💸',
+    \ '\:chart:': '💹',
+    \ '\:seat:': '💺',
+    \ '\:computer:': '💻',
+    \ '\:briefcase:': '💼',
+    \ '\:minidisc:': '💽',
+    \ '\:floppy_disk:': '💾',
+    \ '\:cd:': '💿',
+    \ '\:dvd:': '📀',
+    \ '\:file_folder:': '📁',
+    \ '\:open_file_folder:': '📂',
+    \ '\:page_with_curl:': '📃',
+    \ '\:page_facing_up:': '📄',
+    \ '\:date:': '📅',
+    \ '\:calendar:': '📆',
+    \ '\:card_index:': '📇',
+    \ '\:chart_with_upwards_trend:': '📈',
+    \ '\:chart_with_downwards_trend:': '📉',
+    \ '\:bar_chart:': '📊',
+    \ '\:clipboard:': '📋',
+    \ '\:pushpin:': '📌',
+    \ '\:round_pushpin:': '📍',
+    \ '\:paperclip:': '📎',
+    \ '\:straight_ruler:': '📏',
+    \ '\:triangular_ruler:': '📐',
+    \ '\:bookmark_tabs:': '📑',
+    \ '\:ledger:': '📒',
+    \ '\:notebook:': '📓',
+    \ '\:notebook_with_decorative_cover:': '📔',
+    \ '\:closed_book:': '📕',
+    \ '\:book:': '📖',
+    \ '\:green_book:': '📗',
+    \ '\:blue_book:': '📘',
+    \ '\:orange_book:': '📙',
+    \ '\:books:': '📚',
+    \ '\:name_badge:': '📛',
+    \ '\:scroll:': '📜',
+    \ '\:memo:': '📝',
+    \ '\:telephone_receiver:': '📞',
+    \ '\:pager:': '📟',
+    \ '\:fax:': '📠',
+    \ '\:satellite:': '📡',
+    \ '\:loudspeaker:': '📢',
+    \ '\:mega:': '📣',
+    \ '\:outbox_tray:': '📤',
+    \ '\:inbox_tray:': '📥',
+    \ '\:package:': '📦',
+    \ '\:e-mail:': '📧',
+    \ '\:incoming_envelope:': '📨',
+    \ '\:envelope_with_arrow:': '📩',
+    \ '\:mailbox_closed:': '📪',
+    \ '\:mailbox:': '📫',
+    \ '\:mailbox_with_mail:': '📬',
+    \ '\:mailbox_with_no_mail:': '📭',
+    \ '\:postbox:': '📮',
+    \ '\:postal_horn:': '📯',
+    \ '\:newspaper:': '📰',
+    \ '\:iphone:': '📱',
+    \ '\:calling:': '📲',
+    \ '\:vibration_mode:': '📳',
+    \ '\:mobile_phone_off:': '📴',
+    \ '\:no_mobile_phones:': '📵',
+    \ '\:signal_strength:': '📶',
+    \ '\:camera:': '📷',
+    \ '\:video_camera:': '📹',
+    \ '\:tv:': '📺',
+    \ '\:radio:': '📻',
+    \ '\:vhs:': '📼',
+    \ '\:twisted_rightwards_arrows:': '🔀',
+    \ '\:repeat:': '🔁',
+    \ '\:repeat_one:': '🔂',
+    \ '\:arrows_clockwise:': '🔃',
+    \ '\:arrows_counterclockwise:': '🔄',
+    \ '\:low_brightness:': '🔅',
+    \ '\:high_brightness:': '🔆',
+    \ '\:mute:': '🔇',
+    \ '\:speaker:': '🔈',
+    \ '\:sound:': '🔉',
+    \ '\:loud_sound:': '🔊',
+    \ '\:battery:': '🔋',
+    \ '\:electric_plug:': '🔌',
+    \ '\:mag:': '🔍',
+    \ '\:mag_right:': '🔎',
+    \ '\:lock_with_ink_pen:': '🔏',
+    \ '\:closed_lock_with_key:': '🔐',
+    \ '\:key:': '🔑',
+    \ '\:lock:': '🔒',
+    \ '\:unlock:': '🔓',
+    \ '\:bell:': '🔔',
+    \ '\:no_bell:': '🔕',
+    \ '\:bookmark:': '🔖',
+    \ '\:link:': '🔗',
+    \ '\:radio_button:': '🔘',
+    \ '\:back:': '🔙',
+    \ '\:end:': '🔚',
+    \ '\:on:': '🔛',
+    \ '\:soon:': '🔜',
+    \ '\:top:': '🔝',
+    \ '\:underage:': '🔞',
+    \ '\:keycap_ten:': '🔟',
+    \ '\:capital_abcd:': '🔠',
+    \ '\:abcd:': '🔡',
+    \ '\:1234:': '🔢',
+    \ '\:symbols:': '🔣',
+    \ '\:abc:': '🔤',
+    \ '\:fire:': '🔥',
+    \ '\:flashlight:': '🔦',
+    \ '\:wrench:': '🔧',
+    \ '\:hammer:': '🔨',
+    \ '\:nut_and_bolt:': '🔩',
+    \ '\:hocho:': '🔪',
+    \ '\:gun:': '🔫',
+    \ '\:microscope:': '🔬',
+    \ '\:telescope:': '🔭',
+    \ '\:crystal_ball:': '🔮',
+    \ '\:six_pointed_star:': '🔯',
+    \ '\:beginner:': '🔰',
+    \ '\:trident:': '🔱',
+    \ '\:black_square_button:': '🔲',
+    \ '\:white_square_button:': '🔳',
+    \ '\:red_circle:': '🔴',
+    \ '\:large_blue_circle:': '🔵',
+    \ '\:large_orange_diamond:': '🔶',
+    \ '\:large_blue_diamond:': '🔷',
+    \ '\:small_orange_diamond:': '🔸',
+    \ '\:small_blue_diamond:': '🔹',
+    \ '\:small_red_triangle:': '🔺',
+    \ '\:small_red_triangle_down:': '🔻',
+    \ '\:arrow_up_small:': '🔼',
+    \ '\:arrow_down_small:': '🔽',
+    \ '\:clock1:': '🕐',
+    \ '\:clock2:': '🕑',
+    \ '\:clock3:': '🕒',
+    \ '\:clock4:': '🕓',
+    \ '\:clock5:': '🕔',
+    \ '\:clock6:': '🕕',
+    \ '\:clock7:': '🕖',
+    \ '\:clock8:': '🕗',
+    \ '\:clock9:': '🕘',
+    \ '\:clock10:': '🕙',
+    \ '\:clock11:': '🕚',
+    \ '\:clock12:': '🕛',
+    \ '\:clock130:': '🕜',
+    \ '\:clock230:': '🕝',
+    \ '\:clock330:': '🕞',
+    \ '\:clock430:': '🕟',
+    \ '\:clock530:': '🕠',
+    \ '\:clock630:': '🕡',
+    \ '\:clock730:': '🕢',
+    \ '\:clock830:': '🕣',
+    \ '\:clock930:': '🕤',
+    \ '\:clock1030:': '🕥',
+    \ '\:clock1130:': '🕦',
+    \ '\:clock1230:': '🕧',
+    \ '\:mount_fuji:': '🗻',
+    \ '\:tokyo_tower:': '🗼',
+    \ '\:statue_of_liberty:': '🗽',
+    \ '\:japan:': '🗾',
+    \ '\:moyai:': '🗿',
+    \ '\:grinning:': '😀',
+    \ '\:grin:': '😁',
+    \ '\:joy:': '😂',
+    \ '\:smiley:': '😃',
+    \ '\:smile:': '😄',
+    \ '\:sweat_smile:': '😅',
+    \ '\:laughing:': '😆',
+    \ '\:innocent:': '😇',
+    \ '\:smiling_imp:': '😈',
+    \ '\:wink:': '😉',
+    \ '\:blush:': '😊',
+    \ '\:yum:': '😋',
+    \ '\:relieved:': '😌',
+    \ '\:heart_eyes:': '😍',
+    \ '\:sunglasses:': '😎',
+    \ '\:smirk:': '😏',
+    \ '\:neutral_face:': '😐',
+    \ '\:expressionless:': '😑',
+    \ '\:unamused:': '😒',
+    \ '\:sweat:': '😓',
+    \ '\:pensive:': '😔',
+    \ '\:confused:': '😕',
+    \ '\:confounded:': '😖',
+    \ '\:kissing:': '😗',
+    \ '\:kissing_heart:': '😘',
+    \ '\:kissing_smiling_eyes:': '😙',
+    \ '\:kissing_closed_eyes:': '😚',
+    \ '\:stuck_out_tongue:': '😛',
+    \ '\:stuck_out_tongue_winking_eye:': '😜',
+    \ '\:stuck_out_tongue_closed_eyes:': '😝',
+    \ '\:disappointed:': '😞',
+    \ '\:worried:': '😟',
+    \ '\:angry:': '😠',
+    \ '\:rage:': '😡',
+    \ '\:cry:': '😢',
+    \ '\:persevere:': '😣',
+    \ '\:triumph:': '😤',
+    \ '\:disappointed_relieved:': '😥',
+    \ '\:frowning:': '😦',
+    \ '\:anguished:': '😧',
+    \ '\:fearful:': '😨',
+    \ '\:weary:': '😩',
+    \ '\:sleepy:': '😪',
+    \ '\:tired_face:': '😫',
+    \ '\:grimacing:': '😬',
+    \ '\:sob:': '😭',
+    \ '\:open_mouth:': '😮',
+    \ '\:hushed:': '😯',
+    \ '\:cold_sweat:': '😰',
+    \ '\:scream:': '😱',
+    \ '\:astonished:': '😲',
+    \ '\:flushed:': '😳',
+    \ '\:sleeping:': '😴',
+    \ '\:dizzy_face:': '😵',
+    \ '\:no_mouth:': '😶',
+    \ '\:mask:': '😷',
+    \ '\:smile_cat:': '😸',
+    \ '\:joy_cat:': '😹',
+    \ '\:smiley_cat:': '😺',
+    \ '\:heart_eyes_cat:': '😻',
+    \ '\:smirk_cat:': '😼',
+    \ '\:kissing_cat:': '😽',
+    \ '\:pouting_cat:': '😾',
+    \ '\:crying_cat_face:': '😿',
+    \ '\:scream_cat:': '🙀',
+    \ '\:no_good:': '🙅',
+    \ '\:ok_woman:': '🙆',
+    \ '\:bow:': '🙇',
+    \ '\:see_no_evil:': '🙈',
+    \ '\:hear_no_evil:': '🙉',
+    \ '\:speak_no_evil:': '🙊',
+    \ '\:raising_hand:': '🙋',
+    \ '\:raised_hands:': '🙌',
+    \ '\:person_frowning:': '🙍',
+    \ '\:person_with_pouting_face:': '🙎',
+    \ '\:pray:': '🙏',
+    \ '\:rocket:': '🚀',
+    \ '\:helicopter:': '🚁',
+    \ '\:steam_locomotive:': '🚂',
+    \ '\:railway_car:': '🚃',
+    \ '\:bullettrain_side:': '🚄',
+    \ '\:bullettrain_front:': '🚅',
+    \ '\:train2:': '🚆',
+    \ '\:metro:': '🚇',
+    \ '\:light_rail:': '🚈',
+    \ '\:station:': '🚉',
+    \ '\:tram:': '🚊',
+    \ '\:train:': '🚋',
+    \ '\:bus:': '🚌',
+    \ '\:oncoming_bus:': '🚍',
+    \ '\:trolleybus:': '🚎',
+    \ '\:busstop:': '🚏',
+    \ '\:minibus:': '🚐',
+    \ '\:ambulance:': '🚑',
+    \ '\:fire_engine:': '🚒',
+    \ '\:police_car:': '🚓',
+    \ '\:oncoming_police_car:': '🚔',
+    \ '\:taxi:': '🚕',
+    \ '\:oncoming_taxi:': '🚖',
+    \ '\:car:': '🚗',
+    \ '\:oncoming_automobile:': '🚘',
+    \ '\:blue_car:': '🚙',
+    \ '\:truck:': '🚚',
+    \ '\:articulated_lorry:': '🚛',
+    \ '\:tractor:': '🚜',
+    \ '\:monorail:': '🚝',
+    \ '\:mountain_railway:': '🚞',
+    \ '\:suspension_railway:': '🚟',
+    \ '\:mountain_cableway:': '🚠',
+    \ '\:aerial_tramway:': '🚡',
+    \ '\:ship:': '🚢',
+    \ '\:rowboat:': '🚣',
+    \ '\:speedboat:': '🚤',
+    \ '\:traffic_light:': '🚥',
+    \ '\:vertical_traffic_light:': '🚦',
+    \ '\:construction:': '🚧',
+    \ '\:rotating_light:': '🚨',
+    \ '\:triangular_flag_on_post:': '🚩',
+    \ '\:door:': '🚪',
+    \ '\:no_entry_sign:': '🚫',
+    \ '\:smoking:': '🚬',
+    \ '\:no_smoking:': '🚭',
+    \ '\:put_litter_in_its_place:': '🚮',
+    \ '\:do_not_litter:': '🚯',
+    \ '\:potable_water:': '🚰',
+    \ '\:non-potable_water:': '🚱',
+    \ '\:bike:': '🚲',
+    \ '\:no_bicycles:': '🚳',
+    \ '\:bicyclist:': '🚴',
+    \ '\:mountain_bicyclist:': '🚵',
+    \ '\:walking:': '🚶',
+    \ '\:no_pedestrians:': '🚷',
+    \ '\:children_crossing:': '🚸',
+    \ '\:mens:': '🚹',
+    \ '\:womens:': '🚺',
+    \ '\:restroom:': '🚻',
+    \ '\:baby_symbol:': '🚼',
+    \ '\:toilet:': '🚽',
+    \ '\:wc:': '🚾',
+    \ '\:shower:': '🚿',
+    \ '\:bath:': '🛀',
+    \ '\:bathtub:': '🛁',
+    \ '\:passport_control:': '🛂',
+    \ '\:customs:': '🛃',
+    \ '\:baggage_claim:': '🛄',
+    \ '\:left_luggage:': '🛅'}
+endfunction
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/colors/issm_black.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/colors/issm_black.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/colors/issm_black.vim	(revision 27955)
@@ -0,0 +1,86 @@
+" issm_black color scheme
+" table http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html
+
+"Set up coloring
+hi clear
+if exists("syntax_on")
+  syntax reset
+endif
+syntax on
+let colors_name = "issm_black"
+
+"preferred colors:
+"  0  : black
+"  9  : red
+" 15  : white
+" 69  : blue
+" 87  : cyan
+" 129 : dark purple
+" 202 : orange
+" 214 : light orange
+" 227 : yellow
+" 234 : very dark gray
+" 241 : dark gray
+" 244 : gray
+" 255 : light gray
+
+"                forground    background   style (reverse,bold,..)
+" General colors
+hi Normal        ctermfg=NONE ctermbg=NONE cterm=NONE
+hi NonText       ctermfg=129  ctermbg=NONE cterm=NONE
+hi Cursor        ctermfg=NONE ctermbg=NONE cterm=reverse
+hi LineNr        ctermfg=15   ctermbg=241  cterm=NONE
+hi VertSplit     ctermfg=241  ctermbg=241  cterm=NONE
+hi StatusLine    ctermfg=241  ctermbg=87   cterm=NONE
+hi StatusLineNC  ctermfg=87   ctermbg=241  cterm=NONE
+hi Folded        ctermfg=141  ctermbg=236  cterm=NONE
+hi Title         ctermfg=NONE ctermbg=NONE cterm=NONE
+hi Visual        ctermfg=NONE ctermbg=NONE cterm=reverse
+hi SpecialKey    ctermfg=NONE ctermbg=NONE cterm=NONE
+hi WildMenu      ctermfg=0    ctermbg=227  cterm=NONE
+hi PmenuSbar     ctermfg=0    ctermbg=129  cterm=NONE
+hi Error         ctermfg=15   ctermbg=129  cterm=NONE
+hi ErrorMsg      ctermfg=15   ctermbg=129  cterm=NONE
+hi WarningMsg    ctermfg=15   ctermbg=129  cterm=NONE
+
+" Message displayed in lower left, such as --INSERT--
+hi ModeMsg       ctermfg=0  ctermbg=87   cterm=BOLD
+if version >= 700 " Vim 7.x specific colors
+  hi CursorLine   ctermfg=NONE ctermbg=NONE cterm=BOLD
+  hi CursorColumn ctermfg=NONE ctermbg=NONE cterm=BOLD
+  hi MatchParen   ctermfg=87   ctermbg=241  cterm=reverse "matching parenthesis
+  hi Pmenu        ctermfg=0    ctermbg=15   cterm=NONE    "auto completion panel
+  hi PmenuSel     ctermfg=255  ctermbg=241  cterm=NONE
+  hi Search       ctermfg=0    ctermbg=220  cterm=NONE
+endif
+
+" Syntax highlighting
+hi Comment      ctermfg=244  ctermbg=NONE cterm=NONE
+hi String       ctermfg=120  ctermbg=NONE cterm=NONE
+hi Number       ctermfg=201  ctermbg=NONE cterm=NONE
+hi Keyword      ctermfg=9    ctermbg=NONE cterm=NONE  " matlab function
+hi PreProc      ctermfg=9    ctermbg=NONE cterm=NONE  " def undef include
+hi Conditional  ctermfg=220  ctermbg=NONE cterm=NONE  " if else end
+hi Todo         ctermfg=214  ctermbg=NONE cterm=NONE
+hi Constant     ctermfg=196  ctermbg=NONE cterm=NONE
+hi Identifier   ctermfg=9    ctermbg=NONE cterm=NONE
+hi Function     ctermfg=69   ctermbg=NONE cterm=NONE "functions 69 = pastel blue
+hi Type         ctermfg=87   ctermbg=NONE cterm=NONE "cterm matlab global
+hi Statement    ctermfg=69   ctermbg=NONE cterm=NONE "cd ls sed mv
+hi Special      ctermfg=202  ctermbg=NONE cterm=NONE " matlab '...'
+hi Delimiter    ctermfg=NONE ctermbg=NONE cterm=NONE " [ ]
+hi Operator     ctermfg=202  ctermbg=NONE cterm=NONE " == &
+hi Directory    ctermfg=87   ctermbg=NONE cterm=NONE " == & 
+
+"Specific for diff
+hi DiffAdd      cterm=none ctermfg=0 ctermbg=119
+hi DiffChange   cterm=none ctermfg=0 ctermbg=228
+hi DiffText     cterm=none ctermfg=0 ctermbg=178
+hi DiffDelete   cterm=none ctermfg=0 ctermbg=197
+hi diffLine     cterm=bold ctermfg=241
+hi diffOldLine  cterm=none ctermfg=241
+hi diffOldFile  cterm=none ctermfg=241
+hi diffNewFile  cterm=none ctermfg=241
+hi diffAdded    cterm=none
+hi diffRemoved  cterm=none ctermfg=9
+hi diffChanged  cterm=none ctermfg=69
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/colors/issm_white.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/colors/issm_white.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/colors/issm_white.vim	(revision 27955)
@@ -0,0 +1,86 @@
+" issm_white scheme
+" table http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html
+
+"Set up coloring
+hi clear
+if exists("syntax_on")
+  syntax reset
+endif
+syntax on
+let colors_name = "issm_white"
+
+"preferred colors:
+"  0  : black
+"  9  : red
+" 15  : white
+" 20  : blue
+" 33  : cyan
+" 129 : dark purple
+" 202 : orange
+" 204 : light orange
+" 227 : yellow
+" 234 : very dark gray
+" 241 : dark gray
+" 244 : gray
+" 255 : light gray
+
+"                forground    background   style (reverse,bold,..)
+" General colors
+hi Normal        ctermfg=NONE ctermbg=NONE cterm=NONE
+hi NonText       ctermfg=129  ctermbg=NONE cterm=NONE
+hi Cursor        ctermfg=NONE ctermbg=NONE cterm=reverse
+hi LineNr        ctermfg=15   ctermbg=241  cterm=NONE
+hi VertSplit     ctermfg=241  ctermbg=241  cterm=NONE
+hi StatusLine    ctermfg=241  ctermbg=255  cterm=NONE
+hi StatusLineNC  ctermfg=255  ctermbg=241  cterm=NONE
+hi Folded        ctermfg=93   ctermbg=254  cterm=NONE
+hi Title         ctermfg=NONE ctermbg=NONE cterm=NONE
+hi Visual        ctermfg=NONE ctermbg=NONE cterm=reverse
+hi SpecialKey    ctermfg=NONE ctermbg=NONE cterm=NONE
+hi WildMenu      ctermfg=0    ctermbg=227  cterm=NONE
+hi PmenuSbar     ctermfg=0    ctermbg=129  cterm=NONE
+hi Error         ctermfg=15   ctermbg=129  cterm=NONE
+hi ErrorMsg      ctermfg=15   ctermbg=129  cterm=NONE
+hi WarningMsg    ctermfg=15   ctermbg=129  cterm=NONE
+
+" Message displayed in lower left, such as --INSERT--
+hi ModeMsg       ctermfg=0  ctermbg=227   cterm=BOLD
+if version >= 700 " Vim 7.x specific colors
+  hi CursorLine   ctermfg=NONE ctermbg=NONE cterm=BOLD
+  hi CursorColumn ctermfg=NONE ctermbg=NONE cterm=BOLD
+  hi MatchParen   ctermfg=33   ctermbg=241  cterm=reverse "matching parenthesis
+  hi Pmenu        ctermfg=0    ctermbg=15   cterm=NONE    "auto completion panel
+  hi PmenuSel     ctermfg=255  ctermbg=241  cterm=NONE
+  hi Search       ctermfg=0    ctermbg=220  cterm=NONE
+endif
+
+" Syntax highlighting
+hi Comment      ctermfg=241  ctermbg=NONE cterm=NONE
+hi String       ctermfg=28   ctermbg=NONE cterm=NONE
+hi Number       ctermfg=201  ctermbg=NONE cterm=NONE
+hi Keyword      ctermfg=9    ctermbg=NONE cterm=NONE  " matlab function
+hi PreProc      ctermfg=9    ctermbg=NONE cterm=NONE  " def undef include
+hi Conditional  ctermfg=220  ctermbg=NONE cterm=NONE  " if else end
+hi Todo         ctermfg=204  ctermbg=NONE cterm=NONE
+hi Constant     ctermfg=196  ctermbg=NONE cterm=NONE
+hi Identifier   ctermfg=9    ctermbg=NONE cterm=NONE
+hi Function     ctermfg=20   ctermbg=NONE cterm=NONE "functions 20 = pastel blue
+hi Type         ctermfg=33   ctermbg=NONE cterm=NONE "cterm matlab global
+hi Statement    ctermfg=20   ctermbg=NONE cterm=NONE "cd ls sed mv
+hi Special      ctermfg=202  ctermbg=NONE cterm=NONE " matlab '...'
+hi Delimiter    ctermfg=NONE ctermbg=NONE cterm=NONE " [ ]
+hi Operator     ctermfg=202  ctermbg=NONE cterm=NONE " == &
+hi Directory    ctermfg=33   ctermbg=NONE cterm=NONE " == & 
+
+"Specific for diff
+hi DiffAdd      cterm=none ctermfg=0 ctermbg=119
+hi DiffChange   cterm=none ctermfg=0 ctermbg=228
+hi DiffText     cterm=none ctermfg=0 ctermbg=178
+hi DiffDelete   cterm=none ctermfg=0 ctermbg=197
+hi diffLine     cterm=bold ctermfg=241
+hi diffOldLine  cterm=none ctermfg=241
+hi diffOldFile  cterm=none ctermfg=241
+hi diffNewFile  cterm=none ctermfg=241
+hi diffAdded    cterm=none
+hi diffRemoved  cterm=none ctermfg=9
+hi diffChanged  cterm=none ctermfg=20
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/Align.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/Align.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/Align.txt	(revision 27955)
@@ -0,0 +1,1469 @@
+*align.txt*	The Alignment Tool			Mar 04, 2009
+
+Author:    Charles E. Campbell, Jr.  <NdrOchip@ScampbellPfamily.AbizM>
+           (remove NOSPAM from Campbell's email first)
+Copyright: (c) 2004-2008 by Charles E. Campbell, Jr.	*Align-copyright*
+           The VIM LICENSE applies to Align.vim, AlignMaps.vim, and Align.txt
+           (see |copyright|) except use "Align and AlignMaps" instead of "Vim"
+           NO WARRANTY, EXPRESS OR IMPLIED.  USE AT-YOUR-OWN-RISK.
+
+==============================================================================
+1. Contents					*align* *align-contents* {{{1
+
+	1. Contents.................: |align-contents|
+	2. Alignment Manual.........: |align-manual|
+	3. Alignment Usage..........: |align-usage|
+	   Alignment Concepts.......: |align-concepts|
+	   Alignment Commands.......: |align-commands|
+	   Alignment Control........: |align-control|
+	     Separators.............: |alignctrl-separators|
+	     Initial Whitespace.....: |alignctrl-w| |alignctrl-W| |alignctrl-I|
+	     Justification..........: |alignctrl-l| |alignctrl-r| |alignctrl-c|
+	     Justification Control..: |alignctrl--| |alignctrl-+| |alignctrl-:|
+	     Cyclic/Sequential......: |alignctrl-=| |alignctrl-C|
+	     Separator Justification: |alignctrl-<| |alignctrl->| |alignctrl-||
+	     Line (de)Selection.....: |alignctrl-g| |alignctrl-v|
+	     Temporary Settings.....: |alignctrl-m|
+	     Padding................: |alignctrl-p| |alignctrl-P|
+	     Current Options........: |alignctrl-settings| |alignctrl-|
+	   Alignment................: |align-align|
+	4. Alignment Maps...........: |align-maps|
+	     \a,....................: |alignmap-a,|
+	     \a?....................: |alignmap-a?|
+	     \a<....................: |alignmap-a<|
+	     \abox..................: |alignmap-abox|
+	     \acom..................: |alignmap-acom|
+	     \anum..................: |alignmap-anum|
+	     \ascom.................: |alignmap-ascom|
+	     \adec..................: |alignmap-adec|
+	     \adef..................: |alignmap-adef|
+	     \afnc..................: |alignmap-afnc|
+	     \adcom.................: |alignmap-adcom|
+	     \aocom.................: |alignmap-aocom|
+	     \tsp...................: |alignmap-tsp|
+	     \tsq...................: |alignmap-tsq|
+	     \tt....................: |alignmap-tt|
+	     \t=....................: |alignmap-t=|
+	     \T=....................: |alignmap-T=|
+	     \Htd...................: |alignmap-Htd|
+	5. Alignment Tool History...: |align-history|
+
+==============================================================================
+2. Align Manual			*alignman* *alignmanual* *align-manual* {{{1
+
+	Align comes as a vimball; simply typing >
+		vim Align.vba.gz
+		:so %
+<	should put its components where they belong.  The components are: >
+		.vim/plugin/AlignPlugin.vim
+		.vim/plugin/AlignMapsPlugin.vim
+		.vim/plugin/cecutil.vim
+		.vim/autoload/Align.vim
+		.vim/autoload/AlignMaps.vim
+		.vim/doc/Align.txt
+<	To see a user's guide, see |align-userguide|
+	To see examples, see |alignctrl| and |alignmaps|
+>
+/=============+=========+=====================================================\
+||            \ Default/                                                     ||
+||  Commands   \ Value/                Explanation                           ||
+||              |    |                                                       ||
+++==============+====+=======================================================++
+||  AlignCtrl   |    |  =Clrc-+:pPIWw [..list-of-separator-patterns..]       ||
+||              |    +-------------------------------------------------------+|
+||              |    |  may be called as a command or as a function:         ||
+||              |    |  :AlignCtrl =lp0P0W & \\                              ||
+||              |    |  :call Align#AlignCtrl('=lp0P0W','&','\\')            ||
+||              |    |                                                       ||
+||              |    +-------------------------------------------------------++
+||   1st arg    |  = | =  all separator patterns are equivalent and are      ||
+||              |    |    simultaneously active. Patterns are |regexp|.      ||
+||              |    | C  cycle through separator patterns.  Patterns are    ||
+||              |    |    |regexp| and are active sequentially.              ||
+||              |    |                                                       ||
+||              |  < | <  left justify separator   Separators are justified, ||
+||              |    | >  right justify separator  too.  Separator styles    ||
+||              |    | |  center separator         are cyclic.               ||
+||              |    |                                                       ||
+||              |  l | l  left justify   Justification styles are always     ||
+||              |    | r  right justify  cyclic (ie. lrc would mean left j., ||
+||              |    | c  center         then right j., then center, repeat. ||
+||              |    | -  skip this separator                                ||
+||              |    | +  re-use last justification method                   ||
+||              |    | :  treat rest of text as a field                      ||
+||              |    |                                                       ||
+||              | p1 | p### pad separator on left  by # blanks               ||
+||              | P1 | P### pad separator on right by # blanks               ||
+||              |    |                                                       ||
+||              |  I | I  preserve and apply first line's leading white      ||
+||              |    |    space to all lines                                 ||
+||              |    | W  preserve leading white space on every line, even   ||
+||              |    |    if it varies from line to line                     ||
+||              |    | w  don't preserve leading white space                 ||
+||              |    |                                                       ||
+||              |    | g  second argument is a selection pattern -- only     ||
+||              |    |    align on lines that have a match  (inspired by     ||
+||              |    |    :g/selection pattern/command)                      ||
+||              |    | v  second argument is a selection pattern -- only     ||
+||              |    |    align on lines that _don't_ have a match (inspired ||
+||              |    |    by :v/selection pattern/command)                   ||
+||              |    |                                                       ||
+||              |    | m  Map support: AlignCtrl will immediately do an      ||
+||              |    |    AlignPush() and the next call to Align() will do   ||
+||              |    |    an AlignPop at the end.  This feature allows maps  ||
+||              |    |    to preserve user settings.                         ||
+||              |    |                                                       ||
+||              |    | default                                               ||
+||              |    |    AlignCtrl default                                  ||
+||              |    |    will clear the AlignCtrl                           ||
+||              |    |    stack & set the default:  AlignCtrl "Ilp1P1=" '='  ||
+||              |    |                                                       ||
+||              +----+-------------------------------------------------------+|
+||  More args   |  More arguments are interpreted as describing separators   ||
+||              +------------------------------------------------------------+|
+||   No args    |  AlignCtrl will display its current settings               ||
+||==============+============================================================+|
+||[range]Align  |   [..list-of-separators..]                                 ||
+||[range]Align! |   [AlignCtrl settings] [..list-of-separators..]            ||
+||              +------------------------------------------------------------+|
+||              |  Aligns text over the given range.  The range may be       ||
+||              |  selected via visual mode (v, V, or ctrl-v) or via         ||
+||              |  the command line.  The Align operation may be invoked     ||
+||              |  as a command or as a function; as a function, the first   ||
+||              |  argument is 0=separators only, 1=AlignCtrl option string  ||
+||              |  followed by a list of separators.                         ||
+||              |   :[range]Align                                            ||
+||              |   :[range]Align [list of separators]                       ||
+||              |   :[range]call Align#Align(0)                              ||
+||              |   :[range]call Align#Align(0,"list","of","separators",...) ||
+\=============================================================================/
+
+==============================================================================
+3. Alignment Usage	*alignusage* *align-usage* *align-userguide* {{{1
+
+
+ALIGNMENT CONCEPTS			*align-concept* *align-concepts* {{{2
+
+	The typical text to be aligned is considered to be:
+
+		* composed of two or more fields
+		* separated by one or more separator pattern(s):
+		* two or more lines
+>
+		ws field ws separator ws field ws separator ...
+		ws field ws separator ws field ws separator ...
+<
+	where "ws" stands for "white space" such as blanks and/or tabs,
+	and "fields" are arbitrary text.  For example, consider >
+
+		x= y= z= 3;
+		xx= yy= zz= 4;
+		zzz= yyy= zzz= 5;
+		a= b= c= 3;
+<
+	Assume that it is desired to line up all the "=" signs; these,
+	then, are the separators.  The fields are composed of all the
+	alphameric text.  Assuming they lie on lines 1-4, one may align
+	those "=" signs with: >
+		:AlignCtrl l
+		:1,4Align =
+<	The result is: >
+		x   = y   = z   = 3;
+		xx  = yy  = zz  = 4;
+		zzz = yyy = zzz = 5;
+		a   = b   = c   = 3;
+
+<	Note how each "=" sign is surrounded by a single space; the
+	default padding is p1P1 (p1 means one space before the separator,
+	and P1 means one space after it).  If you wish to change the
+	padding, say to no padding, use  (see |alignctrl-p|) >
+		:AlignCtrl lp0P0
+
+<	Next, note how each field is left justified; that's what the "l"
+	(a small letter "ell") does.  If right-justification of the fields
+	had been desired, an "r" could've been used: >
+		:AlignCtrl r
+<	yielding >
+		  x =   y =   z = 3;
+		 xx =  yy =  zz = 4;
+		zzz = yyy = zzz = 5;
+		  a =   b =   c = 3;
+<	There are many more options available for field justification: see
+	|alignctrl-c| and |alignctrl--|.
+
+	Separators, although commonly only one character long, are actually
+	specified by regular expressions (see |regexp|), and one may left
+	justify, right justify, or center them, too (see |alignctrl-<|).
+
+	Assume that for some reason a left-right-left-right-... justification
+	sequence was wished.  This wish is simply achieved with >
+		:AlignCtrl lr
+		:1,4Align =
+<	because the justification commands are considered to be "cylic"; ie.
+	lr is the same as lrlrlrlrlrlrlr...
+
+	There's a lot more discussed under |alignctrl|; hopefully the examples
+	there will help, too.
+
+
+ALIGNMENT COMMANDS			*align-command* *align-commands* {{{2
+
+        The <Align.vim> script includes two primary commands and two
+	minor commands:
+
+	  AlignCtrl : this command/function sets up alignment options
+	              which persist until changed for later Align calls.
+		      It controls such things as: how to specify field
+		      separators, initial white space, padding about
+		      separators, left/right/center justification, etc. >
+			ex.  AlignCtrl wp0P1
+                             Interpretation: during subsequent alignment
+			     operations, preserve each line's initial
+			     whitespace.  Use no padding before separators
+			     but provide one padding space after separators.
+<
+	  Align     : this command/function operates on the range given it to
+		      align text based on one or more separator patterns.  The
+		      patterns may be provided via AlignCtrl or via Align
+		      itself. >
+
+			ex. :%Align ,
+			    Interpretation: align all commas over the entire
+			    file.
+<		      The :Align! format permits alignment control commands
+		      to precede the alignment patterns. >
+			ex. :%Align! p2P2 =
+<		      This will align all "=" in the file with two padding
+		      spaces on both sides of each "=" sign.
+
+		      NOTE ON USING PATTERNS WITH ALIGN:~
+		      Align and AlignCtrl use |<q-args>| to obtain their
+		      input patterns and they use an internal function to
+		      split arguments at whitespace unless inside "..."s.
+		      One may escape characters inside a double-quote string
+		      by preceding such characters with a backslash.
+
+	  AlignPush : this command/function pushes the current AlignCtrl
+	              state onto an internal stack. >
+			ex. :AlignPush
+			    Interpretation: save the current AlignCtrl
+			    settings, whatever they may be.  They'll
+			    also remain as the current settings until
+			    AlignCtrl is used to change them.
+<
+	  AlignPop  : this command/function pops the current AlignCtrl
+	              state from an internal stack. >
+			ex. :AlignPop
+			    Interpretation: presumably AlignPush was
+			    used (at least once) previously; this command
+			    restores the AlignCtrl settings when AlignPush
+			    was last used.
+<	              Also see |alignctrl-m| for a way to automatically do
+	              an AlignPop after an Align (primarily this is for maps).
+
+ALIGNMENT OPTIONS			*align-option* *align-options* {{{2
+    *align-utf8* *align-utf* *align-codepoint* *align-strlen* *align-multibyte*
+
+	For those of you who are using 2-byte (or more) characters such as are
+	available with utf-8, Align now provides a special option which you
+	may choose based upon your needs:
+
+	Use Built-in strlen() ~
+>
+			let g:Align_xstrlen= 0
+
+<       This is the fastest method, but it doesn't handle multibyte characters
+	well.  It is the default for:
+
+	  enc=latin1
+	  vim compiled without multi-byte support
+	  $LANG is en_US.UTF-8 (assuming USA english)
+
+	Number of codepoints (Latin a + combining circumflex is two codepoints)~
+>
+			let g:Align_xstrlen= 1              (default)
+<
+	Number of spacing codepoints (Latin a + combining circumflex is one~
+	spacing codepoint; a hard tab is one; wide and narrow CJK are one~
+	each; etc.)~
+>
+			let g:Align_xstrlen= 2
+<
+	Virtual length (counting, for instance, tabs as anything between 1 and~
+	'tabstop', wide CJK as 2 rather than 1, Arabic alif as zero when~
+	immediately preceded by lam, one otherwise, etc.)~
+>
+			let g:Align_xstrlen= 3
+<
+	By putting one of these settings into your <.vimrc>, Align will use an
+	internal (interpreted) function to determine a string's length instead
+	of the Vim's built-in |strlen()| function.  Since the function is
+	interpreted, Align will run a bit slower but will handle such strings
+	correctly.  The last setting (g:Align_xstrlen= 3) probably will run
+	the slowest but be the most accurate.  (thanks to Tony Mechelynck for
+	these)
+
+
+ALIGNMENT CONTROL				*alignctrl* *align-control* {{{2
+
+	This command doesn't do the alignment operation itself; instead, it
+	controls subsequent alignment operation(s).
+
+	The first argument to AlignCtrl is a string which may contain one or
+	more alignment control settings.  Most of the settings are specified
+	by single letters; the exceptions are the p# and P# commands which
+	interpret a digit following the p or P as specifying padding about the
+	separator.
+
+	The typical text line is considered to be composed of two or more
+	fields separated by one or more separator pattern(s): >
+
+		ws field ws separator ws field ws separator ...
+<
+	where "ws" stands for "white space" such as blanks and/or tabs.
+
+	
+	SEPARATORS				*alignctrl-separators* {{{3
+
+	As a result, separators may not have white space (tabs or blanks) on
+	their outsides (ie.  ":  :" is fine as a separator, but " :: " is
+	not).  Usually such separators are not needed, although a map has been
+	provided which works around this limitation and aligns on whitespace
+	(see |alignmap-tsp|).
+
+	However, if you really need to have separators with leading or
+	trailing whitespace, consider handling them by performing a substitute
+	first (ie. s/  ::  /@/g), do the alignment on the temporary pattern
+	(ie. @), and then perform a substitute to revert the separators back
+	to their desired condition (ie. s/@/  ::  /g).
+
+	The Align#Align() function will first convert tabs over the region into
+	spaces and then apply alignment control.  Except for initial white
+	space, white space surrounding the fields is ignored.  One has three
+	options just for handling initial white space:
+
+
+	--- 						*alignctrl-w*
+	wWI 	INITIAL WHITE SPACE			*alignctrl-W* {{{3
+	--- 						*alignctrl-I*
+		w : ignore all selected lines' initial white space
+		W : retain all selected lines' initial white space
+		I : retain only the first line's initial white space and
+		    re-use it for subsequent lines
+
+	Example: Leading white space options: >
+                         +---------------+-------------------+-----------------+
+	                 |AlignCtrl w= :=|  AlignCtrl W= :=  | AlignCtrl I= := |
+      +------------------+---------------+-------------------+-----------------+
+      |     Original     |   w option    |     W option      |     I option    |
+      +------------------+---------------+-------------------+-----------------+
+      |   a := baaa      |a     := baaa  |   a      : = baaa |   a     := baaa |
+      | caaaa := deeee   |caaaa := deeee | caaaa    : = deeee|   caaaa := deeee|
+      |       ee := f    |ee    := f     |       ee : = f    |   ee    := f    |
+      +------------------+---------------+-------------------+-----------------+
+<
+	The original has at least one leading white space on every line.
+	Using Align with w eliminated each line's leading white space.
+	Using Align with W preserved  each line's leading white space.
+	Using Align with I applied the first line's leading white space
+	                   (three spaces) to each line.
+
+
+	------						*alignctrl-l*
+	lrc-+:	FIELD JUSTIFICATION			*alignctrl-r* {{{3
+	------						*alignctrl-c*
+
+	With "lrc", the fields will be left-justified, right-justified, or
+	centered as indicated by the justification specifiers (lrc).  The
+	"lrc" options are re-used by cycling through them as needed:
+
+		l   means llllll....
+		r   means rrrrrr....
+		lr  means lrlrlr....
+		llr means llrllr....
+
+     Example: Justification options: Align = >
+     +------------+-------------------+-------------------+-------------------+
+     |  Original  |  AlignCtrl l      | AlignCtrl r       | AlignCtrl lr      |
+     +------------+-------------------+-------------------+-------------------+
+     | a=bb=ccc=1 |a   = bb  = ccc = 1|  a =  bb = ccc = 1|a   =  bb = ccc = 1|
+     | ccc=a=bb=2 |ccc = a   = bb  = 2|ccc =   a =  bb = 2|ccc =   a = bb  = 2|
+     | dd=eee=f=3 |dd  = eee = f   = 3| dd = eee =   f = 3|dd  = eee = f   = 3|
+     +------------+-------------------+-------------------+-------------------+
+     | Alignment  |l     l     l     l|  r     r     r   r|l       r   l     r|
+     +------------+-------------------+-------------------+-------------------+
+<
+		AlignCtrl l : The = separator is repeatedly re-used, as the
+			      cycle only consists of one character (the "l").
+			      Every time left-justification is used for fields.
+		AlignCtrl r : The = separator is repeatedly re-used, as the
+			      cycle only consists of one character (the "l").
+			      Every time right-justification is used for fields
+		AlignCtrl lr: Again, the "=" separator is repeatedly re-used,
+			      but the fields are justified alternately between
+			      left and right.
+
+	Even more separator control is available.  With "-+:":
+
+	    - : skip treating the separator as a separator.   *alignctrl--*
+	    + : repeat use of the last "lrc" justification    *alignctrl-+*
+	    : : treat the rest of the line as a single field  *alignctrl-:*
+
+     Example: More justification options:  Align = >
+     +------------+---------------+--------------------+---------------+
+     |  Original  |  AlignCtrl -l | AlignCtrl rl+      | AlignCtrl l:  |
+     +------------+---------------+--------------------+---------------+
+     | a=bb=ccc=1 |a=bb   = ccc=1 |  a = bb  = ccc = 1 |a   = bb=ccc=1 |
+     | ccc=a=bb=2 |ccc=a  = bb=2  |ccc = a   = bb  = 2 |ccc = a=bb=2   |
+     | dd=eee=f=3 |dd=eee = f=3   | dd = eee = f   = 3 |dd  = eee=f=3  |
+     +------------+---------------+--------------------+---------------+
+     | Alignment  |l        l     |  r   l     l     l |l     l        |
+     +------------+---------------+--------------------+---------------+
+<
+	In the first example in "More justification options":
+
+	  The first "=" separator is skipped by the "-" specification,
+	  and so "a=bb", "ccc=a", and "dd=eee" are considered as single fields.
+
+	  The next "=" separator has its (left side) field left-justified.
+	  Due to the cyclic nature of separator patterns, the "-l"
+	  specification is equivalent to "-l-l-l ...".
+
+	  Hence the next specification is a "skip", so "ccc=1", etc are fields.
+
+	In the second example in "More justification options":
+
+	  The first field is right-justified, the second field is left
+	  justified, and all remaining fields repeat the last justification
+	  command (ie. they are left justified, too).
+
+	  Hence rl+ is equivalent to         rlllllllll ...
+	  (whereas plain rl is equivalent to rlrlrlrlrl ... ).
+
+	In the third example in "More justification options":
+
+	  The text following the first separator is treated as a single field.
+
+	Thus using the - and : operators one can apply justification to a
+	single separator.
+
+	ex. 1st separator only:    AlignCtrl l:
+	    2nd separator only:    AlignCtrl -l:
+	    3rd separator only:    AlignCtrl --l:
+	    etc.
+
+
+	---						     *alignctrl-=*
+	=C	CYCLIC VS ALL-ACTIVE SEPARATORS		     *alignctrl-C* {{{3
+	---
+
+	The separators themselves may be considered as equivalent and
+	simultaneously active ("=") or sequentially cycled through ("C").
+	Separators are regular expressions (|regexp|) and are specified as the
+	second, third, etc arguments.  When the separator patterns are
+	equivalent and simultaneously active, there will be one pattern
+	constructed: >
+
+		AlignCtrl ... pat1 pat2 pat3
+		\(pat1\|pat2\|pat3\)
+<
+	Each separator pattern is thus equivalent and simultaneously active.
+	The cyclic separator AlignCtrl option stores a list of patterns, only
+	one of which is active for each field at a time.
+
+	Example: Equivalent/Simultaneously-Active vs Cyclic Separators >
+ +-------------+------------------+---------------------+----------------------+
+ |   Original  | AlignCtrl = = + -| AlignCtrl = =       | AlignCtrl C = + -    |
+ +-------------+------------------+---------------------+----------------------+
+ |a = b + c - d|a = b + c - d     |a = b + c - d        |a = b         + c - d |
+ |x = y = z + 2|x = y = z + 2     |x = y         = z + 2|x = y = z     + 2     |
+ |w = s - t = 0|w = s - t = 0     |w = s - t     = 0    |w = s - t = 0         |
+ +-------------+------------------+---------------------+----------------------+
+<
+	The original is initially aligned with all operators (=+-) being
+	considered as equivalent and simultaneously active field separators.
+	Thus the "AlignCtrl = = + -" example shows no change.
+
+	The second example only accepts the '=' as a field separator;
+	consequently "b + c - d" is now a single field.
+
+	The third example illustrates cyclic field separators and is analyzed
+	in the following illustration: >
+
+	field1 separator field2    separator field3 separator field4
+	   a      =      b             +       c        -       d
+	   x      =      y = z         +       2
+	   w      =      s - t = 0
+<
+	The word "cyclic" is used because the patterns form a cycle of use; in
+	the above case, its = + - = + - = + - = + -...
+
+	Example: Cyclic separators >
+		Label : this is some text discussing ":"s | ex. abc:def:ghi
+		Label : this is some text with a ":" in it | ex. abc:def
+<
+	  apply AlignCtrl lWC : | |
+	        (select lines)Align >
+                Label : this is some text discussing ":"s  | ex. abc:def:ghi
+                Label : this is some text with a ":" in it | ex. abcd:efg
+<
+	In the current example,
+	  : is the first separator        So the first ":"s are aligned
+	  | is the second separator       but subsequent ":"s are not.
+	  | is the third separator        The "|"s are aligned, too.
+	  : is the fourth separator       Since there aren't two bars,
+	  | is the fifth separator        the subsequent potential cycles
+	  | is the sixth separator        don't appear.
+	 ...
+
+	In this case it would probably have been a better idea to have used >
+		AlignCtrl WCl: : |
+<	as that alignment control would guarantee that no more cycling
+	would be used after the vertical bar.
+
+	Example: Cyclic separators
+
+	    Original: >
+		a| b&c | (d|e) & f-g-h
+		aa| bb&cc | (dd|ee) & ff-gg-hh
+		aaa| bbb&ccc | (ddd|eee) & fff-ggg-hhh
+<
+	    AlignCtrl C | | & - >
+		a   | b&c     | (d|e)     & f   - g-h
+		aa  | bb&cc   | (dd|ee)   & ff  - gg-hh
+		aaa | bbb&ccc | (ddd|eee) & fff - ggg-hhh
+<
+	In this example,
+	the first and second separators are "|",
+	the third            separator  is  "&", and
+	the fourth           separator  is  "-",
+
+	(cycling)
+	the fifth and sixth  separators are "|",
+	the seventh          separator  is  "&", and
+	the eighth           separator  is  "-", etc.
+
+	Thus the first "&"s are (not yet) separators, and hence are treated as
+	part of the field.  Ignoring white space for the moment, the AlignCtrl
+	shown here means that Align will work with >
+
+	field | field | field & field - field | field | field & field - ...
+<
+
+	---						*alignctrl-<*
+	<>|	SEPARATOR JUSTIFICATION			*alignctrl->* {{{3
+	---						*alignctrl-|*
+
+	Separators may be of differing lengths as shown in the example below.
+	Hence they too may be justified left, right, or centered.
+	Furthermore, separator justification specifications are cyclic:
+
+		<  means <<<<<...    justify separator(s) to the left
+		>  means >>>>>...    justify separator(s) to the right
+		|  means |||||...    center separator(s)
+
+	Example: Separator Justification: Align -\+ >
+				+-----------------+
+				|    Original     |
+				+-----------------+
+				| a - bbb - c     |
+				| aa -- bb -- ccc |
+				| aaa --- b --- cc|
+	+---------------------+-+-----------------+-+---------------------+
+	|     AlignCtrl <     |     AlignCtrl >     |     AlignCtrl |     |
+	+---------------------+---------------------+---------------------+
+	| a   -   bbb -   c   | a     - bbb   - c   | a    -  bbb  -  c   |
+	| aa  --  bb  --  ccc | aa   -- bb   -- ccc | aa  --  bb  --  ccc |
+	| aaa --- b   --- cc  | aaa --- b   --- cc  | aaa --- b   --- cc  |
+	+---------------------+---------------------+---------------------+
+<
+
+	---						*alignctrl-g*
+	gv	SELECTIVE APPLICATION			*alignctrl-v* {{{3
+	---
+
+
+	These two options provide a way to select (g) or to deselect (v) lines
+	based on a pattern.  Ideally :g/pat/Align  would work; unfortunately
+	it results in Align#Align() being called on each line satisfying the
+	pattern separately. >
+
+		AlignCtrl g pattern
+<
+	Align will only consider those lines which have the given pattern. >
+
+		AlignCtrl v pattern
+<
+	Align will only consider those lines without the given pattern.  As an
+	example of use, consider the following example: >
+
+				           :AlignCtrl v ^\s*/\*
+	  Original          :Align =       :Align =
+	+----------------+------------------+----------------+
+	|one= 2;         |one     = 2;      |one   = 2;      |
+	|three= 4;       |three   = 4;      |three = 4;      |
+	|/* skip=this */ |/* skip = this */ |/* skip=this */ |
+	|five= 6;        |five    = 6;      |five  = 6;      |
+	+----------------+------------------+----------------+
+<
+	The first "Align =" aligned with all "="s, including that one in the
+	"skip=this" comment.
+
+	The second "Align =" had a AlignCtrl v-pattern which caused it to skip
+	(ignore) the "skip=this" line when aligning.
+	
+	To remove AlignCtrl's g and v patterns, use (as appropriate) >
+
+		AlignCtrl g
+		AlignCtrl v
+<
+	To see what g/v patterns are currently active, just use the reporting
+	capability of an unadorned call to AlignCtrl: >
+
+		AlignCtrl
+<
+
+	---
+	 m	MAP SUPPORT				*alignctrl-m* {{{3
+	---
+
+	This option primarily supports the development of maps.  The
+	Align#AlignCtrl() call will first do an Align#AlignPush() (ie. retain
+	current alignment control settings).  The next Align#Align() will, in
+	addition to its alignment job, finish up with an Align#AlignPop().
+	Thus the Align#AlignCtrl settings that follow the "m" are only
+	temporarily in effect for just the next Align#Align().
+
+
+	---
+	p###						*alignctrl-p*
+	P###	PADDING					*alignctrl-P* {{{3
+	---
+
+	These two options control pre-padding and post-padding with blanks
+	about the separator.  One may pad separators with zero to nine spaces;
+	the padding number(s) is/are treated as a cyclic parameter.  Thus one
+	may specify padding separately for each field or re-use a padding
+	pattern. >
+
+	Example:          AlignCtrl p102P0
+	+---------+----------------------------------+
+	| Original| a=b=c=d=e=f=g=h=1                |
+        | Align = | a =b=c  =d =e=f  =g =h=1         |
+        +---------+----------------------------------+
+	| prepad  |   1 0   2  1 0   2  1 0          |
+        +---------+----------------------------------+
+<
+	This example will cause Align to:
+
+		pre-pad the first  "=" with a single blank,
+		pre-pad the second "=" with no blanks,
+		pre-pad the third  "=" with two blanks,
+		pre-pad the fourth "=" with a single blank,
+		pre-pad the fifth  "=" with no blanks,
+		pre-pad the sixth  "=" with two blanks,
+	        etc.
+
+	---------------				*alignctrl-settings*
+	No option given		DISPLAY STATUS	*alignctrl-*		{{{3
+	---------------				*alignctrl-no-option*
+
+	AlignCtrl, when called with no arguments, will display the current
+	alignment control settings.  A typical display is shown below: >
+
+		AlignCtrl<=> qty=1 AlignStyle<l> Padding<1|1>
+		Pat1<\(=\)>
+<
+	Interpreting, this means that the separator patterns are all
+	equivalent; in this case, there's only one (qty=1).  Fields will be
+	padded on the right with spaces (left justification), and separators
+	will be padded on each side with a single space.
+
+	To change one of these items, see:
+
+	  AlignCtrl......|alignctrl|
+	  qty............|align-concept|
+	  AlignStyle.....|alignctrl--| |alignctrl-+| |alignctrl-:||alignctrl-c|
+	  Padding........|alignctrl-p| |alignctrl-P|
+
+	One may get a string which can be fed back into AlignCtrl: >
+
+		:let alignctrl= Align#AlignCtrl()
+<
+	This form will put a string describing the current AlignCtrl options,
+	except for the "g" and "v" patterns, into a variable.  The
+	Align#AlignCtrl() function will still echo its settings, however.  One
+	can feed any non-supported "option" to AlignCtrl() to prevent this,
+	however: >
+
+		:let alignctrl= Align#AlignCtrl("d")
+<
+
+ALIGNMENT						*align-align* {{{2
+
+	Once the alignment control has been determined, the user specifies a
+	range of lines for the Align command/function to do its thing.
+	Alignment is often done on a line-range basis, but one may also
+	restrict alignment to a visual block using ctrl-v.  For any visual
+	mode, one types the colon (:) and then "Align".  One may, of course,
+	specify a range of lines: >
+
+		:[range]Align [list-of-separators]
+<
+	where the |:range| is the usual Vim-powered set of possibilities; the
+	list of separators is the same as the AlignCtrl capability.  There is
+	only one list of separators, but either AlignCtrl or Align can be used
+	to specify that list.
+
+	An alternative form of the Align command can handle both alignment
+	control and the separator list: >
+
+		:[range]Align! [alignment-control-string] [list-of-separators]
+<
+	The alignment control string will be applied only for this particular
+	application of Align (it uses |alignctrl-m|).  The "g pattern" and
+	"v pattern" alignment controls (see |alignctrl-g| and |alignctrl-v|)
+	are also available via this form of the Align command.
+
+	Align makes two passes over the text to be aligned.  The first pass
+	determines how many fields there are and determines the maximum sizes
+	of each field; these sizes are then stored in a vector.  The second
+	pass pads the field (left/right/centered as specified) to bring its
+	length up to the maximum size of the field.  Then the separator and
+	its AlignCtrl-specified padding is appended.
+
+		Pseudo-Code:~
+		 During pass 1
+		 | For all fields in the current line
+		 || Determine current separator
+		 || Examine field specified by current separator
+		 || Determine length of field and save if largest thus far
+		 Initialize newline based on initial whitespace option (wWI)
+		 During pass 2
+		 | For all fields in current line
+		 || Determine current separator
+		 || Extract field specified by current separator
+		 || Prepend/append padding as specified by AlignCtrl
+		 || (right/left/center)-justify to fit field into max-size field
+		 || Append separator with AlignCtrl-specified separator padding
+		 || Delete current line, install newly aligned line
+
+	The g and v AlignCtrl patterns cause the passes not to consider lines
+	for alignment, either by requiring that the g-pattern be present or
+	that the v-pattern not be present.
+
+	The whitespace on either side of a separator is ignored.
+
+
+==============================================================================
+4. Alignment Maps				*alignmaps* *align-maps* {{{1
+
+	There are a number of maps using Align#AlignCtrl() and Align#Align()
+	in the <AlignMapsPlugin.vim> file.  This file may also be put into the
+	plugins subdirectory.  Since AlignCtrl and Align supercede textab and
+	its <ttalign.vim> file, the maps either have a leading "t" (for
+	"textab") or the more complicated ones an "a" (for "alignment") for
+	backwards compatibility.
+
+	The maps are shown below with a leading backslash (\).  Actually, the
+	<Leader> construct is used (see |mapleader|), so the maps' leading
+	kick-off character is easily customized.
+
+	Furthermore, all AlignMapsPlugin.vim maps use the <Plug> construct (see
+	|<Plug>|and |usr_41.txt|).  Hence, if one wishes to override the
+	mapping entirely, one may do that, too.  As an example: >
+		map <Leader>ACOM	<Plug>AM_acom
+<	would have \ACOM do what \acom previously did (assuming that the
+	mapleader has been left at its default value of a backslash).
+
+	  \a,   : useful for breaking up comma-separated
+	          declarations prior to \adec			|alignmap-a,|
+	  \a(   : aligns ( and , (useful for prototypes)        *alignmap-a(*
+	  \a?   : aligns (...)? ...:... expressions on ? and :	|alignmap-a?|
+	  \a<   : aligns << and >> for c++			|alignmap-a<|
+	  \a=   : aligns := assignments   			|alignmap-a=|
+	  \abox : draw a C-style comment box around text lines	|alignmap-abox|
+	  \acom : useful for aligning comments			|alignmap-acom|
+	  \adcom: useful for aligning comments in declarations  |alignmap-adcom|
+	  \anum : useful for aligning numbers 			|alignmap-anum|
+	          NOTE: For the visual-mode use of \anum, <vis.vim> is needed!
+		    See http://mysite.verizon.net/astronaut/vim/index.html#VIS
+	  \aenum: align a European-style number			|alignmap-anum|
+	  \aunum: align a USA-style number			|alignmap-anum|
+	  \adec : useful for aligning declarations		|alignmap-adec|
+	  \adef : useful for aligning definitions		|alignmap-adef|
+	  \afnc : useful for aligning ansi-c style functions'
+	          argument lists				|alignmap-afnc|
+	  \adcom: a variant of \acom, restricted to comment     |alignmap-adcom|
+	          containing lines only, but also only for
+		  those which don't begin with a comment.
+		  Good for certain declaration styles.
+	  \aocom: a variant of \acom, restricted to comment     |alignmap-aocom|
+	          containing lines only
+	  \tab  : align a table based on tabs			*alignmap-tab*
+	          (converts to spaces)
+	  \tml  : useful for aligning the trailing backslashes	|alignmap-tml|
+	          used to continue lines (shell programming, etc)
+	  \tsp  : use Align to make a table separated by blanks	|alignmap-tsp|
+	          (left justified)
+	  \ts,  : like \t, but swaps whitespace on the right of *alignmap-ts,*
+	          the commas to their left
+	  \ts:  : like \t: but swaps whitespace on the right of *alignmap-ts:*
+	          the colons to their left
+	  \ts<  : like \t< but swaps whitespace on the right of *alignmap-ts<*
+	          the less-than signs to their left
+	  \ts=  : like \t= but swaps whitespace on the right of *alignmap-ts=*
+	          the equals signs to their left
+	  \Tsp  : use Align to make a table separated by blanks	|alignmap-Tsp|
+	          (right justified)
+	  \tsq  : use Align to make a table separated by blanks	|alignmap-tsq|
+	          (left justified) -- "strings" are not split up
+	  \tt   : useful for aligning LaTeX tabular tables	|alignmap-tt|
+	  \Htd  : tabularizes html tables:			|alignmap-Htd|
+	          <TR><TD> ...field... </TD><TD> ...field... </TD></TR>
+
+		  *alignmap-t|* *alignmap-t#* *alignmap-t,* *alignmap-t:*
+		  *alignmap-t;* *alignmap-t<* *alignmap-t?* *alignmap-t~*
+		  *alignmap-m=*
+	  \tx   : make a left-justified  alignment on
+	          character "x" where "x" is: ,:<=@|#		|alignmap-t=|
+	  \Tx   : make a right-justified alignment on
+	          character "x" where "x" is: ,:<=@#		|alignmap-T=|
+	  \m=   : like \t= but aligns with %... style comments
+
+	The leading backslash is actually <leader> (see |mapleader| for how to
+	customize the leader to be whatever you like).  These maps use the
+	<Align.vim> package and are defined in the <AlignMaps.vim> file.
+	Although the maps use AlignCtrl options, they typically use the "m"
+	option which pushes the options (AlignPush).  The associated Align
+	call which follows will then AlignPop the user's original options
+	back.
+
+	ALIGNMENT MAP USE WITH MARK AND MOVE~
+	In the examples below, one may select the text with a "ma" at the
+	first line, move to the last line, then execute the map.
+
+	ALIGNMENT MAP USE WITH VISUAL MODE~
+	Alternatively, one may select the text with the "V" visual mode
+	command.
+
+	ALIGNMENT MAP USE WITH MENUS~
+	One may use the mark-and-move style (ma, move, use the menu) or
+	the visual mode style (use the V visual mode, move, then select
+	the alignment map with menu selection).  The alignment map menu
+	items are under DrChip.AlignMaps .
+
+	One may even change the top level menu name to whatever is wished; by
+	default, its >
+		let g:DrChipTopLvlMenu= "DrChip."
+<	If you set the variable to the empty string (""), then no menu items
+	will be produced.  Of course, one must have a vim with +menu, the gui
+	must be running, and |'go'| must have the menu bar suboption (ie. m
+	must be included).
+
+	COMPLEX ALIGNMENT MAP METHOD~
+
+	For those complex alignment maps which do alignment on constructs
+	(e.g. \acom, \adec, etc), a series of substitutes is used to insert
+	"@" symbols in appropriate locations.  Align#Align() is then used to
+	do alignment directly on "@"s; then it is followed by further
+	substitutes to do clean-up.  However, the maps \WS and \WE, used by
+	every map supported by AlignMaps, protect any original embedded "@"
+	symbols by first converting them to <DEL> characters, doing the
+	requested job, and then converting them back. >
+
+	    \WS  calls AlignMaps#WrapperStart()
+	    \WE  calls AlignMaps#WrapperEnd()
+<
+
+	---------------------------
+	Alignment Map Examples: \a,			*alignmap-a,* {{{3
+	---------------------------
+
+	Original: illustrates comma-separated declaration splitting: >
+		int a,b,c;
+		struct ABC_str abc,def;
+<
+	Becomes: >
+		int a;
+		int b;
+		int c;
+		struct ABC_str abc;
+		struct ABC_str def;
+<
+
+	---------------------------
+	Alignment Map Examples: \a?			*alignmap-a?* {{{3
+	---------------------------
+
+	Original: illustrates ()?: aligning >
+		printf("<%s>\n",
+		  (x == ABC)? "abc" :
+		  (x == DEFG)? "defg" :
+		  (x == HIJKL)? "hijkl" : "???");
+<
+	Becomes:  select "(x == ..." lines, then \a? >
+		printf("<%s>\n",
+		  (x == ABC)?   "abc"   :
+		  (x == DEFG)?  "defg"  :
+		  (x == HIJKL)? "hijkl" : "???");
+<
+
+	---------------------------
+	Alignment Map Examples: \a<			*alignmap-a<* {{{3
+	---------------------------
+
+	Original: illustrating aligning of << and >> >
+		cin << x;
+		cin      << y;
+		cout << "this is x=" << x;
+		cout << "but y=" << y << "is not";
+<
+	Becomes:  select "(x == ..." lines, then \a< >
+		cin  << x;
+		cin  << y;
+		cout << "this is x=" << x;
+		cout << "but y="     << y  << "is not";
+<
+
+	---------------------------
+	Alignment Map Examples: \a=			*alignmap-a=* {{{3
+	---------------------------
+
+	Original: illustrates how to align := assignments >
+		aa:=bb:=cc:=1;
+		a:=b:=c:=1;
+		aaa:=bbb:=ccc:=1;
+<	
+	Bcomes: select the three assignment lines, then \a:= >
+		aa  := bb  := cc  := 1;
+		a   := b   := c   := 1;
+		aaa := bbb := ccc := 1;
+<
+
+	---------------------------
+	Alignment Map Examples: \abox			*alignmap-abox* {{{3
+	---------------------------
+
+	Original: illustrates how to comment-box some text >
+		This is some plain text
+		which will
+		soon be surrounded by a
+		comment box.
+<
+	Becomes:  Select "This..box." with ctrl-v, press \abox >
+		/***************************
+		 * This is some plain text *
+		 * which will              *
+		 * soon be surrounded by a *
+		 * comment box.            *
+		 ***************************/
+<
+
+	---------------------------
+	Alignment Map Examples: \acom			*alignmap-acom* {{{3
+	---------------------------
+
+	Original: illustrates aligning C-style comments (works for //, too) >
+		if(itworks) { /* this */
+			then= dothis; /* is a */
+			} /* set of three comments */
+<
+	Becomes: Select the three lines, press \acom >
+	        if(itworks) {         /* this                  */
+	                then= dothis; /* is a                  */
+	                }             /* set of three comments */
+<
+	Also see |alignmap-aocom|
+
+
+	---------------------------
+	Alignment Map Examples: \anum			*alignmap-anum* {{{3
+	---------------------------
+
+	Original: illustrates how to get numbers lined up >
+		 -1.234 .5678 -.901e-4
+		 1.234 5.678 9.01e-4
+		 12.34 56.78 90.1e-4
+		 123.4 567.8 901.e-4
+<
+	Becomes: Go to first line, ma.  Go to last line, press \anum >
+		  -1.234    .5678   -.901e-4
+		   1.234   5.678    9.01e-4
+		  12.34   56.78    90.1e-4
+		 123.4   567.8    901.e-4
+<
+	Original: >
+		 | -1.234 .5678 -.901e-4 |
+		 | 1.234 5.678 9.01e-4   |
+		 | 12.34 56.78 90.1e-4   |
+		 | 123.4 567.8 901.e-4   |
+<
+	Becomes: Select the numbers with ctrl-v (visual-block mode), >
+	         press \anum
+	         |  -1.234    .5678   -.901e-4 |
+	         |   1.234   5.678    9.01e-4  |
+	         |  12.34   56.78    90.1e-4   |
+	         | 123.4   567.8    901.e-4    |
+<
+	Original: >
+		 -1,234 ,5678 -,901e-4
+		 1,234 5,678 9,01e-4
+		 12,34 56,78 90,1e-4
+		 123,4 567,8 901,e-4
+<
+	Becomes: Go to first line, ma.  Go to last line, press \anum >
+		  -1,234    ,5678   -,901e-4
+		   1,234   5,678    9,01e-4
+		  12,34   56,78    90,1e-4
+		 123,4   567,8    901,e-4
+<
+	In addition:
+	  \aenum is provided to support European-style numbers
+	  \aunum is provided to support USA-style numbers
+
+	One may get \aenum behavior for \anum >
+	  let g:alignmaps_euronumber= 1
+<	or \aunum behavior for \anum if one puts >
+	  let g:alignmaps_usanumber= 1
+<	in one's <.vimrc>.
+
+
+	---------------------------
+	Alignment Map Examples: \ascom			*alignmap-ascom* {{{3
+	---------------------------
+
+	Original: >
+		/* A Title */
+		int x; /* this is a comment */
+		int yzw; /* this is another comment*/
+<
+	Becomes: Select the three lines, press \ascom >
+	        /* A Title */
+	        int x;   /* this is a comment       */
+	        int yzw; /* this is another comment */
+<
+
+	---------------------------
+	Alignment Map Examples: \adec			*alignmap-adec* {{{3
+	---------------------------
+
+	Original: illustrates how to clean up C/C++ declarations >
+		int     a;
+		float   b;
+		double *c=NULL;
+		char x[5];
+		struct  abc_str abc;
+		struct  abc_str *pabc;
+		int     a;              /* a   */
+		float   b;              /* b   */
+		double *c=NULL;              /* b   */
+		char x[5]; /* x[5] */
+		struct  abc_str abc;    /* abc */
+		struct  abc_str *pabc;    /* pabc */
+		static   int     a;              /* a   */
+		static   float   b;              /* b   */
+		static   double *c=NULL;              /* b   */
+		static   char x[5]; /* x[5] */
+		static   struct  abc_str abc;    /* abc */
+		static   struct  abc_str *pabc;    /* pabc */
+<
+	Becomes: Select the declarations text, then \adec >
+		int                    a;
+		float                  b;
+		double                *c    = NULL;
+		char                   x[5];
+		struct abc_str         abc;
+		struct abc_str        *pabc;
+		int                    a;           /* a    */
+		float                  b;           /* b    */
+		double                *c    = NULL; /* b    */
+		char                   x[5];        /* x[5] */
+		struct abc_str         abc;         /* abc  */
+		struct abc_str        *pabc;        /* pabc */
+		static int             a;           /* a    */
+		static float           b;           /* b    */
+		static double         *c    = NULL; /* b    */
+		static char            x[5];        /* x[5] */
+		static struct abc_str  abc;         /* abc  */
+		static struct abc_str *pabc;        /* pabc */
+<
+
+	---------------------------
+	Alignment Map Examples: \adef			*alignmap-adef* {{{3
+	---------------------------
+
+	Original: illustrates how to line up #def'initions >
+		#define ONE 1
+		#define TWO 22
+		#define THREE 333
+		#define FOUR 4444
+<
+	Becomes: Select four definition lines, apply \adef >
+	#	 define ONE   1
+	#	 define TWO   22
+	#	 define THREE 333
+	#	 define FOUR  4444
+<
+
+	---------------------------
+	Alignment Map Examples: \afnc			*alignmap-afnc* {{{3
+	---------------------------
+
+	This map is an exception to the usual selection rules.
+	It uses "]]" to find the function body's leading "{".
+	Just put the cursor anywhere in the function arguments and
+	the entire function declaration should be processed.
+
+	Because "]]" looks for that "{" in the first column, the
+	"original" and "becomes" examples are in the first column,
+	too.
+
+	Original: illustrates lining up ansi-c style function definitions >
+	int f(
+	  struct abc_str ***a, /* one */
+	  long *b, /* two */
+	  int c) /* three */
+	{
+	}
+<
+	Becomes: put cursor anywhere before the '{', press \afnc >
+	int f(
+	  struct abc_str ***a,	/* one   */
+	  long             *b,	/* two   */
+	  int               c)	/* three */
+	{
+	}
+<
+
+	---------------------------
+	Alignment Map Examples: \adcom			*alignmap-adcom* {{{3
+	---------------------------
+
+	Original: illustrates aligning comments that don't begin
+		lines (optionally after some whitespace). >
+		struct {
+			/* this is a test */
+			int x; /* of how */
+			double y; /* to use adcom */
+			};
+<
+	Becomes: Select the inside lines of the structure,
+		then press \adcom.  The comment-only
+		line is ignored but the other two comments
+		get aligned. >
+		struct {
+                        /* this is a test */
+                        int x;    /* of how       */
+                        double y; /* to use adcom */
+			};
+<
+
+	---------------------------
+	Alignment Map Examples: \aocom			*alignmap-aocom* {{{3
+	---------------------------
+
+	Original: illustrates how to align C-style comments (works for //, too)
+	          but restricted only to aligning with those lines containing
+		  comments.  See the difference from \acom (|alignmap-acom|). >
+		if(itworks) { /* this comment */
+			then= dothis;
+			} /* only appears on two lines */
+<
+	Becomes: Select the three lines, press \aocom >
+                if(itworks) { /* this comment              */
+                        then= dothis;
+                        }     /* only appears on two lines */
+<
+	Also see |alignmap-acom|
+
+
+	---------------------------			*alignmap-Tsp*
+	Alignment Map Examples: \tsp			*alignmap-tsp* {{{3
+	---------------------------
+
+	Normally Align can't use white spaces for field separators as such
+	characters are ignored surrounding field separators.  The \tsp and
+	\Tsp maps get around this limitation.
+
+	Original: >
+	 one two three four five
+	 six seven eight nine ten
+	 eleven twelve thirteen fourteen fifteen
+<
+	Becomes: Select the lines, \tsp >
+	 one    two    three    four     five
+	 six    seven  eight    nine     ten
+	 eleven twelve thirteen fourteen fifteen
+<
+	Becomes: Select the lines, \Tsp >
+	    one    two    three     four    five
+	    six  seven    eight     nine     ten
+	 eleven twelve thirteen fourteen fifteen
+<
+
+	---------------------------
+	Alignment Map Examples: \tsq			*alignmap-tsq* {{{3
+	---------------------------
+
+	The \tsp map is useful for aligning tables based on white space,
+	but sometimes one wants double-quoted strings to act as a single
+	object in spite of embedded spaces.  The \tsq map was invented
+	to support this. (thanks to Leif Wickland)
+
+	Original: >
+	 "one two" three
+	 four "five six"
+<
+	Becomes: Select the lines, \tsq >
+	 "one two" three
+	 four      "five six"
+<
+
+	---------------------------
+	Alignment Map Examples: \tt			*alignmap-tt* {{{3
+	---------------------------
+
+	Original: illustrates aligning a LaTex Table >
+	 \begin{tabular}{||c|l|r||}
+	 \hline\hline
+	   one&two&three\\ \hline
+	   four&five&six\\
+	   seven&eight&nine\\
+	 \hline\hline
+	 \end{tabular}
+<
+	Becomes: Select the three lines inside the table >
+	(ie. one..,four..,seven..) and press \tt
+	 \begin{tabular}{||c|l|r||}
+	 \hline\hline
+	   one   & two   & three \\ \hline
+	   four  & five  & six   \\
+	   seven & eight & nine  \\
+	 \hline\hline
+	 \end{tabular}
+<
+
+	----------------------------
+	Alignment Map Examples: \tml			*alignmap-tml* {{{3
+	----------------------------
+
+        Original:  illustrates aligning multi-line continuation marks >
+	one \
+	two three \
+	four five six \
+	seven \\ \
+	eight \nine \
+	ten \
+<
+        Becomes:  >
+        one           \
+        two three     \
+        four five six \
+        seven \\      \
+        eight \nine   \
+        ten           \
+<
+
+	---------------------------
+	Alignment Map Examples: \t=			*alignmap-t=* {{{3
+	---------------------------
+
+	Original: illustrates left-justified aligning of = >
+		aa=bb=cc=1;/*one*/
+		a=b=c=1;/*two*/
+		aaa=bbb=ccc=1;/*three*/
+<
+	Becomes: Select the three equations, press \t= >
+		aa  = bb  = cc  = 1; /* one   */
+		a   = b   = c   = 1; /* two   */
+		aaa = bbb = ccc = 1; /* three */
+<
+
+	---------------------------
+	Alignment Map Examples: \T=			*alignmap-T=* {{{3
+	---------------------------
+
+	Original: illustrates right-justified aligning of = >
+		aa=bb=cc=1; /* one */
+		a=b=c=1; /* two */
+		aaa=bbb=ccc=1; /* three */
+<
+	Becomes: Select the three equations, press \T= >
+                 aa =  bb =  cc = 1; /* one   */
+                  a =   b =   c = 1; /* two   */
+                aaa = bbb = ccc = 1; /* three */
+<
+
+	---------------------------
+	Alignment Map Examples: \Htd			*alignmap-Htd* {{{3
+	---------------------------
+
+	Original: for aligning tables with html >
+	  <TR><TD>...field one...</TD><TD>...field two...</TD></TR>
+	  <TR><TD>...field three...</TD><TD>...field four...</TD></TR>
+<
+	Becomes: Select <TR>... lines, press \Htd >
+	  <TR><TD> ...field one...   </TD><TD> ...field two...  </TD></TR>
+	  <TR><TD> ...field three... </TD><TD> ...field four... </TD></TR>
+<
+==============================================================================
+4. Alignment Tools' History				*align-history* {{{1
+
+ALIGN HISTORY								{{{2
+	35 : Nov 02, 2008 * g:loaded_AlignPlugin testing to prevent re-loading
+			    installed
+	     Nov 19, 2008 * new sanity check for an AlignStyle of just ":"
+	     Jan 08, 2009 * save&restore of |'mod'| now done with local
+			    variant
+	34 : Jul 08, 2008 * using :AlignCtrl before entering any alignment
+			    control commands was causing an error.
+	33 : Sep 20, 2007 * s:Strlen() introduced to support various ways
+			    used to represent characters and their effects
+			    on string lengths.  See |align-strlen|.
+			  * Align now accepts "..." -- so it can accept
+			    whitespace as separators.
+	32 : Aug 18, 2007 * uses |<q-args>| instead of |<f-args>| plus a
+	                    custom argument splitter to allow patterns with
+			    backslashes to slide in unaltered.
+	31 : Aug 06, 2007 * :[range]Align! [AlignCtrl settings] pattern(s)
+	                    implemented.
+	30 : Feb 12, 2007 * now uses |setline()|
+	29 : Jan 18, 2006 * cecutil updated to use keepjumps
+	     Feb 23, 2006 * Align now converted to vim 7.0 style using
+	                    auto-loading functions.
+	28 : Aug 17, 2005 * report option workaround
+	     Oct 24, 2005 * AlignCtrl l:  wasn't behaving as expected; fixed
+	27 : Apr 15, 2005 : cpo workaround
+	                    ignorecase workaround
+	26 : Aug 20, 2004 : loaded_align now also indicates version number
+	                    GetLatestVimScripts :AutoInstall: now supported
+	25 : Jul 27, 2004 : For debugging, uses Dfunc(), Dret(), and Decho()
+	24 : Mar 03, 2004 : (should've done this earlier!) visualmode(1)
+	                    not supported until v6.2, now Align will avoid
+			    calling it for earlier versions.  Visualmode
+			    clearing won't take place then, of course.
+	23 : Oct 07, 2003 : Included Leif Wickland's ReplaceQuotedSpaces()
+	                    function which supports \tsq
+	22 : Jan 29, 2003 : Now requires 6.1.308 or later to clear visualmode()
+	21 : Jan 10, 2003 : BugFix: similar problem to #19; new code
+	                    bypasses "norm! v\<Esc>" until initialization
+	                    is over.
+	20 : Dec 30, 2002 : BugFix: more on "unable to highlight" fixed
+	19 : Nov 21, 2002 : BugFix: some terminals gave an "unable to highlight"
+	                    message at startup; Hari Krishna Dara tracked it
+	                    down; a silent! now included to prevent noise.
+	18 : Nov 04, 2002 : BugFix: re-enabled anti-repeated-loading
+	17 : Nov 04, 2002 : BugFix: forgot to have AlignPush() push s:AlignSep
+	                    AlignCtrl now clears visual-block mode when used so
+	                    that Align won't try to use old visual-block
+	                    selection marks '< '>
+	16 : Sep 18, 2002 : AlignCtrl <>| options implemented (separator
+	                    justification)
+	15 : Aug 22, 2002 : bug fix: AlignCtrl's ":" now acts as a modifier of
+	                             the preceding alignment operator (lrc)
+	14 : Aug 20, 2002 : bug fix: AlignCtrl default now keeps &ic unchanged
+	                    bug fix: Align, on end-field, wasn't using correct
+	                    alignop bug fix: Align, on end-field, was appending
+			    padding
+	13 : Aug 19, 2002 : bug fix: zero-length g/v patterns are accepted
+	                    bug fix: always skip blank lines
+	                    bug fix: AlignCtrl default now also clears g and v
+	                             patterns
+	12 : Aug 16, 2002 : moved keep_ic above zero-length pattern checks
+	                    added "AlignCtrl default"
+	                    fixed bug with last field getting separator spaces
+	                    at end line
+	11 : Jul 08, 2002 : prevent separator patterns which match zero length
+	                    -+: included as additional alignment/justification
+	                    styles
+	10 : Jun 26, 2002 : =~# used instead of =~ (for matching case)
+	                    ignorecase option handled
+	 9 : Jun 25, 2002 : implemented cyclic padding
+
+ALIGNMENT MAP HISTORY					*alignmap-history* {{{2
+       v41    Nov 02, 2008   * g:loaded_AlignMapsPlugin testing to prevent
+			       re-loading installed
+			     * AlignMaps now use 0x0f (ctrl-p) for special
+			       character substitutions (instead of 0xff).
+			       Seems to avoid some problems with having to
+			       use Strlen().
+			     * bug fixed with \ts,
+			     * new maps: \ts; \ts, \ts: \ts< \ts= \a(
+       v40    Oct 21, 2008   * Modified AlignMaps so that its maps use <Plug>s
+			       and <script>s.  \t@ and related maps have been
+			       changed to call StdAlign() instead.  The
+			       WrapperStart function now takes an argument and
+			       handles being called via visual mode.  The
+			       former nmaps and vmaps have thus been replaced
+			       with a simple map.
+	      Oct 24, 2008   * broke AlignMaps into a plugin and autoload
+			       pair of scripts.
+	v39   Mar 06, 2008 : * \t= only does /* ... */ aligning when in *.c
+	                       *.cpp files.
+	v38   Aug 18, 2007 : * \tt altered so that it works with the new
+	                       use of |<q-args>| plus a custom argument
+			       splitter
+	v36   Sep 27, 2006 : * AlignWrapperStart() now has tests that marks
+	                       y and z are not set
+	      May 15, 2007   * \anum and variants improved
+	v35   Sep 01, 2006 : * \t= and cousins used "`"s.  They now use \xff
+	                       characters.
+	                     * \acom now works with doxygen style /// comments
+	                     * <char-0xff> used in \t= \T= \w= and \m= instead
+	                       of backquotes.
+	v34   Feb 23, 2006 : * AlignMaps now converted to vim 7.0 style using
+	                       auto-loading functions.
+	v33   Oct 12, 2005 : * \ts, now uses P1 in its AlignCtrl call
+	v32   Jun 28, 2005 : * s:WrapperStart() changed to AlignWrapperStart()
+	                       s:WrapperEnd() changed to AlignWrapperEnd()
+	                       These changes let the AlignWrapper...()s to be
+	                       used outside of AlignMaps.vim
+	v31   Feb 01, 2005 : * \adcom included, with help
+	                     * \a, now works across multiple lines with
+	                       different types
+	                     * AlignMaps now uses <cecutil.vim> for its mark and
+	                       window-position saving and restoration
+	      Mar 04, 2005   * improved \a,
+	      Apr 06, 2005   * included \aenum, \aunum, and provided
+	              g:alignmaps_{usa|euro]number} options
+	v30   Aug 20, 2004 : * \a, : handles embedded assignments and does \adec
+	                     * \acom  now can handle Doxygen-style comments
+	                     * g:loaded_alignmaps now also indicates version
+	                     * internal maps \WE and \WS are now re-entrant
+	v29   Jul 27, 2004 : * \tml aligns trailing multi-line single
+	                      backslashes (thanks to Raul Benavente!)
+	v28   May 13, 2004 : * \a, had problems with leading blanks; fixed!
+	v27   Mar 31, 2004 : * \T= was having problems with == and !=
+	                     * Fixed more problems with \adec
+	v26   Dec 09, 2003 : * \ascom now also ignores lines without comments
+	                     * \tt  \& now not matched
+	                     * \a< handles both << and >>
+	v25   Nov 14, 2003 : * included \anum (aligns numbers with periods and
+	                       commas).  \anum also supported with ctrl-v mode.
+	                     * \ts, \Ts, : (aligns on commas, then swaps leading
+	                       spaces with commas)
+	                     * \adec ignores preprocessor lines and lines with
+	                       with comments-only
+	v23   Sep 10, 2003 : * Bugfix for \afnc - no longer overwrites marks y,z
+	                     * fixed bug in \tsp, \tab, \Tsp, and \Tab - lines
+	                       containing backslashes were having their
+	                       backslashes removed.  Included Leif Wickland's
+	                       patch for \tsq.
+	                     * \adef now ignores lines holding comments only
+	v18   Aug 22, 2003 :   \a< lines up C++'s << operators
+	                       saves/restores gdefault option (sets to nogd)
+	                       all b:..varname.. are now b:alignmaps_..varname..
+	v17   Nov 04, 2002 :   \afnc now handles // comments correctly and
+	                       commas within comments
+	v16   Sep 10, 2002 :   changed : to :silent! for \adec
+	v15   Aug 27, 2002 :   removed some <c-v>s
+	v14   Aug 20, 2002 :   \WS, \WE mostly moved to functions, marks y and z
+	                       now restored
+	v11   Jul 08, 2002 :   \abox bug fix
+	 v9   Jun 25, 2002 :   \abox now handles leading initial whitespace
+	                   :   various bugfixes to \afnc, \T=, etc
+
+==============================================================================
+Modelines: {{{1
+vim:tw=78:ts=8:ft=help:fdm=marker:
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/generate_latex_symbols_table.jl
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/generate_latex_symbols_table.jl	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/generate_latex_symbols_table.jl	(revision 27955)
@@ -0,0 +1,111 @@
+#!/bin/env julia
+
+const filename = "julia-vim-L2U-table"
+
+# Keeping this from an old revision, just in case:
+# Combining chars ranges, as obtained from https://en.wikipedia.org/wiki/Combining_character:
+# ('\u0300' ≤ u ≤ '\u036F') ||
+# ('\u1AB0' ≤ u ≤ '\u1AFF') ||
+# ('\u1DC0' ≤ u ≤ '\u1DFF') ||
+# ('\u20D0' ≤ u ≤ '\u20FF') ||
+# ('\uFE20' ≤ u ≤ '\uFE2F')
+
+# Most of this code is copy-pasted and slightly adapted from here:
+# JULIA_HOME/doc/src/manual/unicode-input.md
+# except that instead of producing Markdown we want to generate a vim
+# documentation file.
+#
+# Note that this requires to run `make docs` from the julia source root directory to download
+# the UnicodeData.txt file.
+
+function tab_completions(symbols...)
+    completions = Dict{String, Vector{String}}()
+    for each in symbols, (k, v) in each
+        completions[v] = push!(get!(completions, v, String[]), k)
+    end
+    return completions
+end
+
+function unicode_data()
+    file = normpath(Sys.BINDIR, "..", "..", "doc", "UnicodeData.txt")
+    names = Dict{UInt32, String}()
+    open(file) do unidata
+        for line in readlines(unidata)
+            id, name, desc = split(line, ";")[[1, 2, 11]]
+            codepoint = parse(UInt32, "0x$id")
+            names[codepoint] = (name == "" ? desc : desc == "" ? name : "$name / $desc")
+        end
+    end
+    return names
+end
+
+# Prepend a dotted circle ('◌' i.e. '\u25CC') to combining characters
+function fix_combining_chars(char)
+    cat = Base.Unicode.category_code(char)
+    return string(cat == 6 || cat == 8 ? "◌" : "", char)
+end
+
+function table_entries(completions, unicode_dict)
+    code = String[]
+    unicode = String[]
+    latex = String[]
+    desc = String[]
+
+    for (chars, inputs) in sort!(collect(completions), by = first)
+        code_points, unicode_names, characters = String[], String[], String[]
+        for char in chars
+            push!(code_points, "U+$(uppercase(string(UInt32(char), base = 16, pad = 5)))")
+            push!(unicode_names, get(unicode_dict, UInt32(char), "(No Unicode name)"))
+            push!(characters, isempty(characters) ? fix_combining_chars(char) : "$char")
+        end
+        push!(code, join(code_points, " + "))
+        push!(unicode, join(characters))
+        push!(latex, replace(join(inputs, ", "), "\\\\" => "\\"))
+        push!(desc, join(unicode_names, " + "))
+    end
+    return code, unicode, latex, desc
+end
+
+open("$filename.txt","w") do f
+    print(f, """
+        $filename.txt  LaTeX-to-Unicode reference table
+
+        ===================================================================
+        LATEX-TO-UNICODE REFERENCE TABLE    *L2U-ref* *julia-vim-L2U-reference*
+
+          Note: This file is autogenerated from the script '$(basename(Base.source_path()))'
+          The symbols are based on the documentation of Julia version $VERSION
+          See |julia-vim| for the LaTeX-to-Unicode manual.
+
+        """)
+
+    col_headers = ["Code point(s)", "Character(s)", "Tab completion sequence(s)", "Unicode name(s)"]
+
+    code, unicode, latex, desc =
+        table_entries(
+            tab_completions(
+                REPL.REPLCompletions.latex_symbols,
+                REPL.REPLCompletions.emoji_symbols
+                ),
+            unicode_data()
+            )
+
+    cw = max(length(col_headers[1]), maximum(map(length, code)))
+    uw = max(length(col_headers[2]), maximum(map(length, unicode)))
+    lw = max(length(col_headers[3]), maximum(map(length, latex)))
+    dw = max(length(col_headers[4]), maximum(map(length, desc)))
+
+    print_padded(c, u, l, d) = println(f, rpad(c, cw), " ", rpad(u, uw), " ", rpad(l, lw), " ", d)
+
+    print_padded(col_headers[1:3]..., col_headers[4] * "~")
+    print_padded("-"^cw, "-"^uw, "-"^lw, "-"^dw)
+
+    for (c, u, l, d) in zip(code, unicode, latex, desc)
+        print_padded(c, u, l, d)
+    end
+    print_padded("-"^cw, "-"^uw, "-"^lw, "-"^dw)
+
+    println(f)
+    println(f, "  vim", # separated to avoid an error from vim which otherwise tries to parse this line
+               ":tw=$(cw+uw+lw+dw+3):et:ft=help:norl:")
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/julia-vim-L2U-table.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/julia-vim-L2U-table.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/julia-vim-L2U-table.txt	(revision 27955)
@@ -0,0 +1,3278 @@
+julia-vim-L2U-table.txt  LaTeX-to-Unicode reference table
+
+===================================================================
+LATEX-TO-UNICODE REFERENCE TABLE    *L2U-ref* *julia-vim-L2U-reference*
+
+  Note: This file is autogenerated from the script 'generate_latex_symbols_table.jl'
+  The symbols are based on the documentation of Julia version 1.5.0-DEV.67
+  See |julia-vim| for the LaTeX-to-Unicode manual.
+
+Code point(s)     Character(s) Tab completion sequence(s)                   Unicode name(s)~
+----------------- ------------ -------------------------------------------- --------------------------------------------------------------------------------------------------------
+U+000A1           ¡            \exclamdown                                  INVERTED EXCLAMATION MARK
+U+000A3           £            \sterling                                    POUND SIGN
+U+000A5           ¥            \yen                                         YEN SIGN
+U+000A6           ¦            \brokenbar                                   BROKEN BAR / BROKEN VERTICAL BAR
+U+000A7           §            \S                                           SECTION SIGN
+U+000A9           ©            \copyright, \:copyright:                     COPYRIGHT SIGN
+U+000AA           ª            \ordfeminine                                 FEMININE ORDINAL INDICATOR
+U+000AC           ¬            \neg                                         NOT SIGN
+U+000AE           ®            \circledR, \:registered:                     REGISTERED SIGN / REGISTERED TRADE MARK SIGN
+U+000AF           ¯            \highminus                                   MACRON / SPACING MACRON
+U+000B0           °            \degree                                      DEGREE SIGN
+U+000B1           ±            \pm                                          PLUS-MINUS SIGN / PLUS-OR-MINUS SIGN
+U+000B2           ²            \^2                                          SUPERSCRIPT TWO / SUPERSCRIPT DIGIT TWO
+U+000B3           ³            \^3                                          SUPERSCRIPT THREE / SUPERSCRIPT DIGIT THREE
+U+000B6           ¶            \P                                           PILCROW SIGN / PARAGRAPH SIGN
+U+000B7           ·            \cdotp                                       MIDDLE DOT
+U+000B9           ¹            \^1                                          SUPERSCRIPT ONE / SUPERSCRIPT DIGIT ONE
+U+000BA           º            \ordmasculine                                MASCULINE ORDINAL INDICATOR
+U+000BC           ¼            \1/4                                         VULGAR FRACTION ONE QUARTER / FRACTION ONE QUARTER
+U+000BD           ½            \1/2                                         VULGAR FRACTION ONE HALF / FRACTION ONE HALF
+U+000BE           ¾            \3/4                                         VULGAR FRACTION THREE QUARTERS / FRACTION THREE QUARTERS
+U+000BF           ¿            \questiondown                                INVERTED QUESTION MARK
+U+000C5           Å            \AA                                          LATIN CAPITAL LETTER A WITH RING ABOVE / LATIN CAPITAL LETTER A RING
+U+000C6           Æ            \AE                                          LATIN CAPITAL LETTER AE / LATIN CAPITAL LETTER A E
+U+000D0           Ð            \DH                                          LATIN CAPITAL LETTER ETH
+U+000D7           ×            \times                                       MULTIPLICATION SIGN
+U+000D8           Ø            \O                                           LATIN CAPITAL LETTER O WITH STROKE / LATIN CAPITAL LETTER O SLASH
+U+000DE           Þ            \TH                                          LATIN CAPITAL LETTER THORN
+U+000DF           ß            \ss                                          LATIN SMALL LETTER SHARP S
+U+000E5           å            \aa                                          LATIN SMALL LETTER A WITH RING ABOVE / LATIN SMALL LETTER A RING
+U+000E6           æ            \ae                                          LATIN SMALL LETTER AE / LATIN SMALL LETTER A E
+U+000F0           ð            \eth, \dh                                    LATIN SMALL LETTER ETH
+U+000F7           ÷            \div                                         DIVISION SIGN
+U+000F8           ø            \o                                           LATIN SMALL LETTER O WITH STROKE / LATIN SMALL LETTER O SLASH
+U+000FE           þ            \th                                          LATIN SMALL LETTER THORN
+U+00110           Đ            \DJ                                          LATIN CAPITAL LETTER D WITH STROKE / LATIN CAPITAL LETTER D BAR
+U+00111           đ            \dj                                          LATIN SMALL LETTER D WITH STROKE / LATIN SMALL LETTER D BAR
+U+00127           ħ            \hbar                                        LATIN SMALL LETTER H WITH STROKE / LATIN SMALL LETTER H BAR
+U+00131           ı            \imath                                       LATIN SMALL LETTER DOTLESS I
+U+00141           Ł            \L                                           LATIN CAPITAL LETTER L WITH STROKE / LATIN CAPITAL LETTER L SLASH
+U+00142           ł            \l                                           LATIN SMALL LETTER L WITH STROKE / LATIN SMALL LETTER L SLASH
+U+0014A           Ŋ            \NG                                          LATIN CAPITAL LETTER ENG
+U+0014B           ŋ            \ng                                          LATIN SMALL LETTER ENG
+U+00152           Œ            \OE                                          LATIN CAPITAL LIGATURE OE / LATIN CAPITAL LETTER O E
+U+00153           œ            \oe                                          LATIN SMALL LIGATURE OE / LATIN SMALL LETTER O E
+U+00195           ƕ            \hvlig                                       LATIN SMALL LETTER HV / LATIN SMALL LETTER H V
+U+0019E           ƞ            \nrleg                                       LATIN SMALL LETTER N WITH LONG RIGHT LEG
+U+001B5           Ƶ            \Zbar                                        LATIN CAPITAL LETTER Z WITH STROKE / LATIN CAPITAL LETTER Z BAR
+U+001C2           ǂ            \doublepipe                                  LATIN LETTER ALVEOLAR CLICK / LATIN LETTER PIPE DOUBLE BAR
+U+00237           ȷ            \jmath                                       LATIN SMALL LETTER DOTLESS J
+U+00250           ɐ            \trna                                        LATIN SMALL LETTER TURNED A
+U+00252           ɒ            \trnsa                                       LATIN SMALL LETTER TURNED ALPHA / LATIN SMALL LETTER TURNED SCRIPT A
+U+00254           ɔ            \openo                                       LATIN SMALL LETTER OPEN O
+U+00256           ɖ            \rtld                                        LATIN SMALL LETTER D WITH TAIL / LATIN SMALL LETTER D RETROFLEX HOOK
+U+00259           ə            \schwa                                       LATIN SMALL LETTER SCHWA
+U+00263           ɣ            \pgamma                                      LATIN SMALL LETTER GAMMA
+U+00264           ɤ            \pbgam                                       LATIN SMALL LETTER RAMS HORN / LATIN SMALL LETTER BABY GAMMA
+U+00265           ɥ            \trnh                                        LATIN SMALL LETTER TURNED H
+U+0026C           ɬ            \btdl                                        LATIN SMALL LETTER L WITH BELT / LATIN SMALL LETTER L BELT
+U+0026D           ɭ            \rtll                                        LATIN SMALL LETTER L WITH RETROFLEX HOOK / LATIN SMALL LETTER L RETROFLEX HOOK
+U+0026F           ɯ            \trnm                                        LATIN SMALL LETTER TURNED M
+U+00270           ɰ            \trnmlr                                      LATIN SMALL LETTER TURNED M WITH LONG LEG
+U+00271           ɱ            \ltlmr                                       LATIN SMALL LETTER M WITH HOOK / LATIN SMALL LETTER M HOOK
+U+00272           ɲ            \ltln                                        LATIN SMALL LETTER N WITH LEFT HOOK / LATIN SMALL LETTER N HOOK
+U+00273           ɳ            \rtln                                        LATIN SMALL LETTER N WITH RETROFLEX HOOK / LATIN SMALL LETTER N RETROFLEX HOOK
+U+00277           ɷ            \clomeg                                      LATIN SMALL LETTER CLOSED OMEGA
+U+00278           ɸ            \ltphi                                       LATIN SMALL LETTER PHI
+U+00279           ɹ            \trnr                                        LATIN SMALL LETTER TURNED R
+U+0027A           ɺ            \trnrl                                       LATIN SMALL LETTER TURNED R WITH LONG LEG
+U+0027B           ɻ            \rttrnr                                      LATIN SMALL LETTER TURNED R WITH HOOK / LATIN SMALL LETTER TURNED R HOOK
+U+0027C           ɼ            \rl                                          LATIN SMALL LETTER R WITH LONG LEG
+U+0027D           ɽ            \rtlr                                        LATIN SMALL LETTER R WITH TAIL / LATIN SMALL LETTER R HOOK
+U+0027E           ɾ            \fhr                                         LATIN SMALL LETTER R WITH FISHHOOK / LATIN SMALL LETTER FISHHOOK R
+U+00282           ʂ            \rtls                                        LATIN SMALL LETTER S WITH HOOK / LATIN SMALL LETTER S HOOK
+U+00283           ʃ            \esh                                         LATIN SMALL LETTER ESH
+U+00287           ʇ            \trnt                                        LATIN SMALL LETTER TURNED T
+U+00288           ʈ            \rtlt                                        LATIN SMALL LETTER T WITH RETROFLEX HOOK / LATIN SMALL LETTER T RETROFLEX HOOK
+U+0028A           ʊ            \pupsil                                      LATIN SMALL LETTER UPSILON
+U+0028B           ʋ            \pscrv                                       LATIN SMALL LETTER V WITH HOOK / LATIN SMALL LETTER SCRIPT V
+U+0028C           ʌ            \invv                                        LATIN SMALL LETTER TURNED V
+U+0028D           ʍ            \invw                                        LATIN SMALL LETTER TURNED W
+U+0028E           ʎ            \trny                                        LATIN SMALL LETTER TURNED Y
+U+00290           ʐ            \rtlz                                        LATIN SMALL LETTER Z WITH RETROFLEX HOOK / LATIN SMALL LETTER Z RETROFLEX HOOK
+U+00292           ʒ            \yogh                                        LATIN SMALL LETTER EZH / LATIN SMALL LETTER YOGH
+U+00294           ʔ            \glst                                        LATIN LETTER GLOTTAL STOP
+U+00295           ʕ            \reglst                                      LATIN LETTER PHARYNGEAL VOICED FRICATIVE / LATIN LETTER REVERSED GLOTTAL STOP
+U+00296           ʖ            \inglst                                      LATIN LETTER INVERTED GLOTTAL STOP
+U+0029E           ʞ            \turnk                                       LATIN SMALL LETTER TURNED K
+U+002A4           ʤ            \dyogh                                       LATIN SMALL LETTER DEZH DIGRAPH / LATIN SMALL LETTER D YOGH
+U+002A7           ʧ            \tesh                                        LATIN SMALL LETTER TESH DIGRAPH / LATIN SMALL LETTER T ESH
+U+002B0           ʰ            \^h                                          MODIFIER LETTER SMALL H
+U+002B2           ʲ            \^j                                          MODIFIER LETTER SMALL J
+U+002B3           ʳ            \^r                                          MODIFIER LETTER SMALL R
+U+002B7           ʷ            \^w                                          MODIFIER LETTER SMALL W
+U+002B8           ʸ            \^y                                          MODIFIER LETTER SMALL Y
+U+002BC           ʼ            \rasp                                        MODIFIER LETTER APOSTROPHE
+U+002C8           ˈ            \verts                                       MODIFIER LETTER VERTICAL LINE
+U+002CC           ˌ            \verti                                       MODIFIER LETTER LOW VERTICAL LINE
+U+002D0           ː            \lmrk                                        MODIFIER LETTER TRIANGULAR COLON
+U+002D1           ˑ            \hlmrk                                       MODIFIER LETTER HALF TRIANGULAR COLON
+U+002D2           ˒            \sbrhr                                       MODIFIER LETTER CENTRED RIGHT HALF RING / MODIFIER LETTER CENTERED RIGHT HALF RING
+U+002D3           ˓            \sblhr                                       MODIFIER LETTER CENTRED LEFT HALF RING / MODIFIER LETTER CENTERED LEFT HALF RING
+U+002D4           ˔            \rais                                        MODIFIER LETTER UP TACK
+U+002D5           ˕            \low                                         MODIFIER LETTER DOWN TACK
+U+002D8           ˘            \u                                           BREVE / SPACING BREVE
+U+002DC           ˜            \tildelow                                    SMALL TILDE / SPACING TILDE
+U+002E1           ˡ            \^l                                          MODIFIER LETTER SMALL L
+U+002E2           ˢ            \^s                                          MODIFIER LETTER SMALL S
+U+002E3           ˣ            \^x                                          MODIFIER LETTER SMALL X
+U+00300           ◌̀           \grave                                       COMBINING GRAVE ACCENT / NON-SPACING GRAVE
+U+00301           ◌́           \acute                                       COMBINING ACUTE ACCENT / NON-SPACING ACUTE
+U+00302           ◌̂           \hat                                         COMBINING CIRCUMFLEX ACCENT / NON-SPACING CIRCUMFLEX
+U+00303           ◌̃           \tilde                                       COMBINING TILDE / NON-SPACING TILDE
+U+00304           ◌̄           \bar                                         COMBINING MACRON / NON-SPACING MACRON
+U+00305           ◌̅           \overbar                                     COMBINING OVERLINE / NON-SPACING OVERSCORE
+U+00306           ◌̆           \breve                                       COMBINING BREVE / NON-SPACING BREVE
+U+00307           ◌̇           \dot                                         COMBINING DOT ABOVE / NON-SPACING DOT ABOVE
+U+00308           ◌̈           \ddot                                        COMBINING DIAERESIS / NON-SPACING DIAERESIS
+U+00309           ◌̉           \ovhook                                      COMBINING HOOK ABOVE / NON-SPACING HOOK ABOVE
+U+0030A           ◌̊           \ocirc                                       COMBINING RING ABOVE / NON-SPACING RING ABOVE
+U+0030B           ◌̋           \H                                           COMBINING DOUBLE ACUTE ACCENT / NON-SPACING DOUBLE ACUTE
+U+0030C           ◌̌           \check                                       COMBINING CARON / NON-SPACING HACEK
+U+00310           ◌̐           \candra                                      COMBINING CANDRABINDU / NON-SPACING CANDRABINDU
+U+00312           ◌̒           \oturnedcomma                                COMBINING TURNED COMMA ABOVE / NON-SPACING TURNED COMMA ABOVE
+U+00315           ◌̕           \ocommatopright                              COMBINING COMMA ABOVE RIGHT / NON-SPACING COMMA ABOVE RIGHT
+U+0031A           ◌̚           \droang                                      COMBINING LEFT ANGLE ABOVE / NON-SPACING LEFT ANGLE ABOVE
+U+00321           ◌̡           \palh                                        COMBINING PALATALIZED HOOK BELOW / NON-SPACING PALATALIZED HOOK BELOW
+U+00322           ◌̢           \rh                                          COMBINING RETROFLEX HOOK BELOW / NON-SPACING RETROFLEX HOOK BELOW
+U+00327           ◌̧           \c                                           COMBINING CEDILLA / NON-SPACING CEDILLA
+U+00328           ◌̨           \k                                           COMBINING OGONEK / NON-SPACING OGONEK
+U+0032A           ◌̪           \sbbrg                                       COMBINING BRIDGE BELOW / NON-SPACING BRIDGE BELOW
+U+00330           ◌̰           \wideutilde                                  COMBINING TILDE BELOW / NON-SPACING TILDE BELOW
+U+00332           ◌̲           \underbar                                    COMBINING LOW LINE / NON-SPACING UNDERSCORE
+U+00336           ◌̶           \strike, \sout                               COMBINING LONG STROKE OVERLAY / NON-SPACING LONG BAR OVERLAY
+U+00338           ◌̸           \not                                         COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+0034D           ◌͍           \underleftrightarrow                         COMBINING LEFT RIGHT ARROW BELOW
+U+00391           Α            \Alpha                                       GREEK CAPITAL LETTER ALPHA
+U+00392           Β            \Beta                                        GREEK CAPITAL LETTER BETA
+U+00393           Γ            \Gamma                                       GREEK CAPITAL LETTER GAMMA
+U+00394           Δ            \Delta                                       GREEK CAPITAL LETTER DELTA
+U+00395           Ε            \Epsilon                                     GREEK CAPITAL LETTER EPSILON
+U+00396           Ζ            \Zeta                                        GREEK CAPITAL LETTER ZETA
+U+00397           Η            \Eta                                         GREEK CAPITAL LETTER ETA
+U+00398           Θ            \Theta                                       GREEK CAPITAL LETTER THETA
+U+00399           Ι            \Iota                                        GREEK CAPITAL LETTER IOTA
+U+0039A           Κ            \Kappa                                       GREEK CAPITAL LETTER KAPPA
+U+0039B           Λ            \Lambda                                      GREEK CAPITAL LETTER LAMDA / GREEK CAPITAL LETTER LAMBDA
+U+0039C           Μ            \upMu                                        GREEK CAPITAL LETTER MU
+U+0039D           Ν            \upNu                                        GREEK CAPITAL LETTER NU
+U+0039E           Ξ            \Xi                                          GREEK CAPITAL LETTER XI
+U+0039F           Ο            \upOmicron                                   GREEK CAPITAL LETTER OMICRON
+U+003A0           Π            \Pi                                          GREEK CAPITAL LETTER PI
+U+003A1           Ρ            \Rho                                         GREEK CAPITAL LETTER RHO
+U+003A3           Σ            \Sigma                                       GREEK CAPITAL LETTER SIGMA
+U+003A4           Τ            \Tau                                         GREEK CAPITAL LETTER TAU
+U+003A5           Υ            \Upsilon                                     GREEK CAPITAL LETTER UPSILON
+U+003A6           Φ            \Phi                                         GREEK CAPITAL LETTER PHI
+U+003A7           Χ            \Chi                                         GREEK CAPITAL LETTER CHI
+U+003A8           Ψ            \Psi                                         GREEK CAPITAL LETTER PSI
+U+003A9           Ω            \Omega                                       GREEK CAPITAL LETTER OMEGA
+U+003B1           α            \alpha                                       GREEK SMALL LETTER ALPHA
+U+003B2           β            \beta                                        GREEK SMALL LETTER BETA
+U+003B3           γ            \gamma                                       GREEK SMALL LETTER GAMMA
+U+003B4           δ            \delta                                       GREEK SMALL LETTER DELTA
+U+003B5           ε            \upepsilon, \varepsilon                      GREEK SMALL LETTER EPSILON
+U+003B6           ζ            \zeta                                        GREEK SMALL LETTER ZETA
+U+003B7           η            \eta                                         GREEK SMALL LETTER ETA
+U+003B8           θ            \theta                                       GREEK SMALL LETTER THETA
+U+003B9           ι            \iota                                        GREEK SMALL LETTER IOTA
+U+003BA           κ            \kappa                                       GREEK SMALL LETTER KAPPA
+U+003BB           λ            \lambda                                      GREEK SMALL LETTER LAMDA / GREEK SMALL LETTER LAMBDA
+U+003BC           μ            \mu                                          GREEK SMALL LETTER MU
+U+003BD           ν            \nu                                          GREEK SMALL LETTER NU
+U+003BE           ξ            \xi                                          GREEK SMALL LETTER XI
+U+003BF           ο            \upomicron                                   GREEK SMALL LETTER OMICRON
+U+003C0           π            \pi                                          GREEK SMALL LETTER PI
+U+003C1           ρ            \rho                                         GREEK SMALL LETTER RHO
+U+003C2           ς            \varsigma                                    GREEK SMALL LETTER FINAL SIGMA
+U+003C3           σ            \sigma                                       GREEK SMALL LETTER SIGMA
+U+003C4           τ            \tau                                         GREEK SMALL LETTER TAU
+U+003C5           υ            \upsilon                                     GREEK SMALL LETTER UPSILON
+U+003C6           φ            \varphi                                      GREEK SMALL LETTER PHI
+U+003C7           χ            \chi                                         GREEK SMALL LETTER CHI
+U+003C8           ψ            \psi                                         GREEK SMALL LETTER PSI
+U+003C9           ω            \omega                                       GREEK SMALL LETTER OMEGA
+U+003D0           ϐ            \upvarbeta                                   GREEK BETA SYMBOL / GREEK SMALL LETTER CURLED BETA
+U+003D1           ϑ            \vartheta                                    GREEK THETA SYMBOL / GREEK SMALL LETTER SCRIPT THETA
+U+003D5           ϕ            \phi                                         GREEK PHI SYMBOL / GREEK SMALL LETTER SCRIPT PHI
+U+003D6           ϖ            \varpi                                       GREEK PI SYMBOL / GREEK SMALL LETTER OMEGA PI
+U+003D8           Ϙ            \upoldKoppa                                  GREEK LETTER ARCHAIC KOPPA
+U+003D9           ϙ            \upoldkoppa                                  GREEK SMALL LETTER ARCHAIC KOPPA
+U+003DA           Ϛ            \Stigma                                      GREEK LETTER STIGMA / GREEK CAPITAL LETTER STIGMA
+U+003DB           ϛ            \upstigma                                    GREEK SMALL LETTER STIGMA
+U+003DC           Ϝ            \Digamma                                     GREEK LETTER DIGAMMA / GREEK CAPITAL LETTER DIGAMMA
+U+003DD           ϝ            \digamma                                     GREEK SMALL LETTER DIGAMMA
+U+003DE           Ϟ            \Koppa                                       GREEK LETTER KOPPA / GREEK CAPITAL LETTER KOPPA
+U+003DF           ϟ            \upkoppa                                     GREEK SMALL LETTER KOPPA
+U+003E0           Ϡ            \Sampi                                       GREEK LETTER SAMPI / GREEK CAPITAL LETTER SAMPI
+U+003E1           ϡ            \upsampi                                     GREEK SMALL LETTER SAMPI
+U+003F0           ϰ            \varkappa                                    GREEK KAPPA SYMBOL / GREEK SMALL LETTER SCRIPT KAPPA
+U+003F1           ϱ            \varrho                                      GREEK RHO SYMBOL / GREEK SMALL LETTER TAILED RHO
+U+003F4           ϴ            \varTheta                                    GREEK CAPITAL THETA SYMBOL
+U+003F5           ϵ            \epsilon                                     GREEK LUNATE EPSILON SYMBOL
+U+003F6           ϶            \backepsilon                                 GREEK REVERSED LUNATE EPSILON SYMBOL
+U+01D2C           ᴬ            \^A                                          MODIFIER LETTER CAPITAL A
+U+01D2E           ᴮ            \^B                                          MODIFIER LETTER CAPITAL B
+U+01D30           ᴰ            \^D                                          MODIFIER LETTER CAPITAL D
+U+01D31           ᴱ            \^E                                          MODIFIER LETTER CAPITAL E
+U+01D33           ᴳ            \^G                                          MODIFIER LETTER CAPITAL G
+U+01D34           ᴴ            \^H                                          MODIFIER LETTER CAPITAL H
+U+01D35           ᴵ            \^I                                          MODIFIER LETTER CAPITAL I
+U+01D36           ᴶ            \^J                                          MODIFIER LETTER CAPITAL J
+U+01D37           ᴷ            \^K                                          MODIFIER LETTER CAPITAL K
+U+01D38           ᴸ            \^L                                          MODIFIER LETTER CAPITAL L
+U+01D39           ᴹ            \^M                                          MODIFIER LETTER CAPITAL M
+U+01D3A           ᴺ            \^N                                          MODIFIER LETTER CAPITAL N
+U+01D3C           ᴼ            \^O                                          MODIFIER LETTER CAPITAL O
+U+01D3E           ᴾ            \^P                                          MODIFIER LETTER CAPITAL P
+U+01D3F           ᴿ            \^R                                          MODIFIER LETTER CAPITAL R
+U+01D40           ᵀ            \^T                                          MODIFIER LETTER CAPITAL T
+U+01D41           ᵁ            \^U                                          MODIFIER LETTER CAPITAL U
+U+01D42           ᵂ            \^W                                          MODIFIER LETTER CAPITAL W
+U+01D43           ᵃ            \^a                                          MODIFIER LETTER SMALL A
+U+01D45           ᵅ            \^alpha                                      MODIFIER LETTER SMALL ALPHA
+U+01D47           ᵇ            \^b                                          MODIFIER LETTER SMALL B
+U+01D48           ᵈ            \^d                                          MODIFIER LETTER SMALL D
+U+01D49           ᵉ            \^e                                          MODIFIER LETTER SMALL E
+U+01D4B           ᵋ            \^epsilon                                    MODIFIER LETTER SMALL OPEN E
+U+01D4D           ᵍ            \^g                                          MODIFIER LETTER SMALL G
+U+01D4F           ᵏ            \^k                                          MODIFIER LETTER SMALL K
+U+01D50           ᵐ            \^m                                          MODIFIER LETTER SMALL M
+U+01D52           ᵒ            \^o                                          MODIFIER LETTER SMALL O
+U+01D56           ᵖ            \^p                                          MODIFIER LETTER SMALL P
+U+01D57           ᵗ            \^t                                          MODIFIER LETTER SMALL T
+U+01D58           ᵘ            \^u                                          MODIFIER LETTER SMALL U
+U+01D5B           ᵛ            \^v                                          MODIFIER LETTER SMALL V
+U+01D5D           ᵝ            \^beta                                       MODIFIER LETTER SMALL BETA
+U+01D5E           ᵞ            \^gamma                                      MODIFIER LETTER SMALL GREEK GAMMA
+U+01D5F           ᵟ            \^delta                                      MODIFIER LETTER SMALL DELTA
+U+01D60           ᵠ            \^phi                                        MODIFIER LETTER SMALL GREEK PHI
+U+01D61           ᵡ            \^chi                                        MODIFIER LETTER SMALL CHI
+U+01D62           ᵢ            \_i                                          LATIN SUBSCRIPT SMALL LETTER I
+U+01D63           ᵣ            \_r                                          LATIN SUBSCRIPT SMALL LETTER R
+U+01D64           ᵤ            \_u                                          LATIN SUBSCRIPT SMALL LETTER U
+U+01D65           ᵥ            \_v                                          LATIN SUBSCRIPT SMALL LETTER V
+U+01D66           ᵦ            \_beta                                       GREEK SUBSCRIPT SMALL LETTER BETA
+U+01D67           ᵧ            \_gamma                                      GREEK SUBSCRIPT SMALL LETTER GAMMA
+U+01D68           ᵨ            \_rho                                        GREEK SUBSCRIPT SMALL LETTER RHO
+U+01D69           ᵩ            \_phi                                        GREEK SUBSCRIPT SMALL LETTER PHI
+U+01D6A           ᵪ            \_chi                                        GREEK SUBSCRIPT SMALL LETTER CHI
+U+01D9C           ᶜ            \^c                                          MODIFIER LETTER SMALL C
+U+01DA0           ᶠ            \^f                                          MODIFIER LETTER SMALL F
+U+01DA5           ᶥ            \^iota                                       MODIFIER LETTER SMALL IOTA
+U+01DB2           ᶲ            \^Phi                                        MODIFIER LETTER SMALL PHI
+U+01DBB           ᶻ            \^z                                          MODIFIER LETTER SMALL Z
+U+01DBF           ᶿ            \^theta                                      MODIFIER LETTER SMALL THETA
+U+02002                        \enspace                                     EN SPACE
+U+02003                        \quad                                        EM SPACE
+U+02005                        \thickspace                                  FOUR-PER-EM SPACE
+U+02009                        \thinspace                                   THIN SPACE
+U+0200A                        \hspace                                      HAIR SPACE
+U+02013           –            \endash                                      EN DASH
+U+02014           —            \emdash                                      EM DASH
+U+02016           ‖            \Vert                                        DOUBLE VERTICAL LINE / DOUBLE VERTICAL BAR
+U+02018           ‘            \lq                                          LEFT SINGLE QUOTATION MARK / SINGLE TURNED COMMA QUOTATION MARK
+U+02019           ’            \rq                                          RIGHT SINGLE QUOTATION MARK / SINGLE COMMA QUOTATION MARK
+U+0201B           ‛            \reapos                                      SINGLE HIGH-REVERSED-9 QUOTATION MARK / SINGLE REVERSED COMMA QUOTATION MARK
+U+0201C           “            \quotedblleft                                LEFT DOUBLE QUOTATION MARK / DOUBLE TURNED COMMA QUOTATION MARK
+U+0201D           ”            \quotedblright                               RIGHT DOUBLE QUOTATION MARK / DOUBLE COMMA QUOTATION MARK
+U+02020           †            \dagger                                      DAGGER
+U+02021           ‡            \ddagger                                     DOUBLE DAGGER
+U+02022           •            \bullet                                      BULLET
+U+02026           …            \dots, \ldots                                HORIZONTAL ELLIPSIS
+U+02030           ‰            \perthousand                                 PER MILLE SIGN
+U+02031           ‱            \pertenthousand                              PER TEN THOUSAND SIGN
+U+02032           ′            \prime                                       PRIME
+U+02033           ″            \pprime                                      DOUBLE PRIME
+U+02034           ‴            \ppprime                                     TRIPLE PRIME
+U+02035           ‵            \backprime                                   REVERSED PRIME
+U+02036           ‶            \backpprime                                  REVERSED DOUBLE PRIME
+U+02037           ‷            \backppprime                                 REVERSED TRIPLE PRIME
+U+02039           ‹            \guilsinglleft                               SINGLE LEFT-POINTING ANGLE QUOTATION MARK / LEFT POINTING SINGLE GUILLEMET
+U+0203A           ›            \guilsinglright                              SINGLE RIGHT-POINTING ANGLE QUOTATION MARK / RIGHT POINTING SINGLE GUILLEMET
+U+0203C           ‼            \:bangbang:                                  DOUBLE EXCLAMATION MARK
+U+02040           ⁀            \tieconcat                                   CHARACTER TIE
+U+02049           ⁉            \:interrobang:                               EXCLAMATION QUESTION MARK
+U+02057           ⁗            \pppprime                                    QUADRUPLE PRIME
+U+0205D           ⁝            \tricolon                                    TRICOLON
+U+02060           ⁠            \nolinebreak                                 WORD JOINER
+U+02070           ⁰            \^0                                          SUPERSCRIPT ZERO / SUPERSCRIPT DIGIT ZERO
+U+02071           ⁱ            \^i                                          SUPERSCRIPT LATIN SMALL LETTER I
+U+02074           ⁴            \^4                                          SUPERSCRIPT FOUR / SUPERSCRIPT DIGIT FOUR
+U+02075           ⁵            \^5                                          SUPERSCRIPT FIVE / SUPERSCRIPT DIGIT FIVE
+U+02076           ⁶            \^6                                          SUPERSCRIPT SIX / SUPERSCRIPT DIGIT SIX
+U+02077           ⁷            \^7                                          SUPERSCRIPT SEVEN / SUPERSCRIPT DIGIT SEVEN
+U+02078           ⁸            \^8                                          SUPERSCRIPT EIGHT / SUPERSCRIPT DIGIT EIGHT
+U+02079           ⁹            \^9                                          SUPERSCRIPT NINE / SUPERSCRIPT DIGIT NINE
+U+0207A           ⁺            \^+                                          SUPERSCRIPT PLUS SIGN
+U+0207B           ⁻            \^-                                          SUPERSCRIPT MINUS / SUPERSCRIPT HYPHEN-MINUS
+U+0207C           ⁼            \^=                                          SUPERSCRIPT EQUALS SIGN
+U+0207D           ⁽            \^(                                          SUPERSCRIPT LEFT PARENTHESIS / SUPERSCRIPT OPENING PARENTHESIS
+U+0207E           ⁾            \^)                                          SUPERSCRIPT RIGHT PARENTHESIS / SUPERSCRIPT CLOSING PARENTHESIS
+U+0207F           ⁿ            \^n                                          SUPERSCRIPT LATIN SMALL LETTER N
+U+02080           ₀            \_0                                          SUBSCRIPT ZERO / SUBSCRIPT DIGIT ZERO
+U+02081           ₁            \_1                                          SUBSCRIPT ONE / SUBSCRIPT DIGIT ONE
+U+02082           ₂            \_2                                          SUBSCRIPT TWO / SUBSCRIPT DIGIT TWO
+U+02083           ₃            \_3                                          SUBSCRIPT THREE / SUBSCRIPT DIGIT THREE
+U+02084           ₄            \_4                                          SUBSCRIPT FOUR / SUBSCRIPT DIGIT FOUR
+U+02085           ₅            \_5                                          SUBSCRIPT FIVE / SUBSCRIPT DIGIT FIVE
+U+02086           ₆            \_6                                          SUBSCRIPT SIX / SUBSCRIPT DIGIT SIX
+U+02087           ₇            \_7                                          SUBSCRIPT SEVEN / SUBSCRIPT DIGIT SEVEN
+U+02088           ₈            \_8                                          SUBSCRIPT EIGHT / SUBSCRIPT DIGIT EIGHT
+U+02089           ₉            \_9                                          SUBSCRIPT NINE / SUBSCRIPT DIGIT NINE
+U+0208A           ₊            \_+                                          SUBSCRIPT PLUS SIGN
+U+0208B           ₋            \_-                                          SUBSCRIPT MINUS / SUBSCRIPT HYPHEN-MINUS
+U+0208C           ₌            \_=                                          SUBSCRIPT EQUALS SIGN
+U+0208D           ₍            \_(                                          SUBSCRIPT LEFT PARENTHESIS / SUBSCRIPT OPENING PARENTHESIS
+U+0208E           ₎            \_)                                          SUBSCRIPT RIGHT PARENTHESIS / SUBSCRIPT CLOSING PARENTHESIS
+U+02090           ₐ            \_a                                          LATIN SUBSCRIPT SMALL LETTER A
+U+02091           ₑ            \_e                                          LATIN SUBSCRIPT SMALL LETTER E
+U+02092           ₒ            \_o                                          LATIN SUBSCRIPT SMALL LETTER O
+U+02093           ₓ            \_x                                          LATIN SUBSCRIPT SMALL LETTER X
+U+02094           ₔ            \_schwa                                      LATIN SUBSCRIPT SMALL LETTER SCHWA
+U+02095           ₕ            \_h                                          LATIN SUBSCRIPT SMALL LETTER H
+U+02096           ₖ            \_k                                          LATIN SUBSCRIPT SMALL LETTER K
+U+02097           ₗ            \_l                                          LATIN SUBSCRIPT SMALL LETTER L
+U+02098           ₘ            \_m                                          LATIN SUBSCRIPT SMALL LETTER M
+U+02099           ₙ            \_n                                          LATIN SUBSCRIPT SMALL LETTER N
+U+0209A           ₚ            \_p                                          LATIN SUBSCRIPT SMALL LETTER P
+U+0209B           ₛ            \_s                                          LATIN SUBSCRIPT SMALL LETTER S
+U+0209C           ₜ            \_t                                          LATIN SUBSCRIPT SMALL LETTER T
+U+020A7           ₧            \pes                                         PESETA SIGN
+U+020AC           €            \euro                                        EURO SIGN
+U+020D0           ◌⃐           \leftharpoonaccent                           COMBINING LEFT HARPOON ABOVE / NON-SPACING LEFT HARPOON ABOVE
+U+020D1           ◌⃑           \rightharpoonaccent                          COMBINING RIGHT HARPOON ABOVE / NON-SPACING RIGHT HARPOON ABOVE
+U+020D2           ◌⃒           \vertoverlay                                 COMBINING LONG VERTICAL LINE OVERLAY / NON-SPACING LONG VERTICAL BAR OVERLAY
+U+020D6           ◌⃖           \overleftarrow                               COMBINING LEFT ARROW ABOVE / NON-SPACING LEFT ARROW ABOVE
+U+020D7           ◌⃗           \vec                                         COMBINING RIGHT ARROW ABOVE / NON-SPACING RIGHT ARROW ABOVE
+U+020DB           ◌⃛           \dddot                                       COMBINING THREE DOTS ABOVE / NON-SPACING THREE DOTS ABOVE
+U+020DC           ◌⃜           \ddddot                                      COMBINING FOUR DOTS ABOVE / NON-SPACING FOUR DOTS ABOVE
+U+020DD           ◌⃝           \enclosecircle                               COMBINING ENCLOSING CIRCLE / ENCLOSING CIRCLE
+U+020DE           ◌⃞           \enclosesquare                               COMBINING ENCLOSING SQUARE / ENCLOSING SQUARE
+U+020DF           ◌⃟           \enclosediamond                              COMBINING ENCLOSING DIAMOND / ENCLOSING DIAMOND
+U+020E1           ◌⃡           \overleftrightarrow                          COMBINING LEFT RIGHT ARROW ABOVE / NON-SPACING LEFT RIGHT ARROW ABOVE
+U+020E4           ◌⃤           \enclosetriangle                             COMBINING ENCLOSING UPWARD POINTING TRIANGLE
+U+020E7           ◌⃧           \annuity                                     COMBINING ANNUITY SYMBOL
+U+020E8           ◌⃨           \threeunderdot                               COMBINING TRIPLE UNDERDOT
+U+020E9           ◌⃩           \widebridgeabove                             COMBINING WIDE BRIDGE ABOVE
+U+020EC           ◌⃬           \underrightharpoondown                       COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS
+U+020ED           ◌⃭           \underleftharpoondown                        COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS
+U+020EE           ◌⃮           \underleftarrow                              COMBINING LEFT ARROW BELOW
+U+020EF           ◌⃯           \underrightarrow                             COMBINING RIGHT ARROW BELOW
+U+020F0           ◌⃰           \asteraccent                                 COMBINING ASTERISK ABOVE
+U+02102           ℂ            \bbC                                         DOUBLE-STRUCK CAPITAL C / DOUBLE-STRUCK C
+U+02107           ℇ            \eulermascheroni                             EULER CONSTANT / EULERS
+U+0210A           ℊ            \scrg                                        SCRIPT SMALL G
+U+0210B           ℋ            \scrH                                        SCRIPT CAPITAL H / SCRIPT H
+U+0210C           ℌ            \frakH                                       BLACK-LETTER CAPITAL H / BLACK-LETTER H
+U+0210D           ℍ            \bbH                                         DOUBLE-STRUCK CAPITAL H / DOUBLE-STRUCK H
+U+0210E           ℎ            \planck                                      PLANCK CONSTANT
+U+0210F           ℏ            \hslash                                      PLANCK CONSTANT OVER TWO PI / PLANCK CONSTANT OVER 2 PI
+U+02110           ℐ            \scrI                                        SCRIPT CAPITAL I / SCRIPT I
+U+02111           ℑ            \Im                                          BLACK-LETTER CAPITAL I / BLACK-LETTER I
+U+02112           ℒ            \scrL                                        SCRIPT CAPITAL L / SCRIPT L
+U+02113           ℓ            \ell                                         SCRIPT SMALL L
+U+02115           ℕ            \bbN                                         DOUBLE-STRUCK CAPITAL N / DOUBLE-STRUCK N
+U+02116           №            \numero                                      NUMERO SIGN / NUMERO
+U+02118           ℘            \wp                                          SCRIPT CAPITAL P / SCRIPT P
+U+02119           ℙ            \bbP                                         DOUBLE-STRUCK CAPITAL P / DOUBLE-STRUCK P
+U+0211A           ℚ            \bbQ                                         DOUBLE-STRUCK CAPITAL Q / DOUBLE-STRUCK Q
+U+0211B           ℛ            \scrR                                        SCRIPT CAPITAL R / SCRIPT R
+U+0211C           ℜ            \Re                                          BLACK-LETTER CAPITAL R / BLACK-LETTER R
+U+0211D           ℝ            \bbR                                         DOUBLE-STRUCK CAPITAL R / DOUBLE-STRUCK R
+U+0211E           ℞            \xrat                                        PRESCRIPTION TAKE
+U+02122           ™            \trademark, \:tm:                            TRADE MARK SIGN / TRADEMARK
+U+02124           ℤ            \bbZ                                         DOUBLE-STRUCK CAPITAL Z / DOUBLE-STRUCK Z
+U+02126           Ω            \ohm                                         OHM SIGN / OHM
+U+02127           ℧            \mho                                         INVERTED OHM SIGN / MHO
+U+02128           ℨ            \frakZ                                       BLACK-LETTER CAPITAL Z / BLACK-LETTER Z
+U+02129           ℩            \turnediota                                  TURNED GREEK SMALL LETTER IOTA
+U+0212B           Å            \Angstrom                                    ANGSTROM SIGN / ANGSTROM UNIT
+U+0212C           ℬ            \scrB                                        SCRIPT CAPITAL B / SCRIPT B
+U+0212D           ℭ            \frakC                                       BLACK-LETTER CAPITAL C / BLACK-LETTER C
+U+0212F           ℯ            \scre, \euler                                SCRIPT SMALL E
+U+02130           ℰ            \scrE                                        SCRIPT CAPITAL E / SCRIPT E
+U+02131           ℱ            \scrF                                        SCRIPT CAPITAL F / SCRIPT F
+U+02132           Ⅎ            \Finv                                        TURNED CAPITAL F / TURNED F
+U+02133           ℳ            \scrM                                        SCRIPT CAPITAL M / SCRIPT M
+U+02134           ℴ            \scro                                        SCRIPT SMALL O
+U+02135           ℵ            \aleph                                       ALEF SYMBOL / FIRST TRANSFINITE CARDINAL
+U+02136           ℶ            \beth                                        BET SYMBOL / SECOND TRANSFINITE CARDINAL
+U+02137           ℷ            \gimel                                       GIMEL SYMBOL / THIRD TRANSFINITE CARDINAL
+U+02138           ℸ            \daleth                                      DALET SYMBOL / FOURTH TRANSFINITE CARDINAL
+U+02139           ℹ            \:information_source:                        INFORMATION SOURCE
+U+0213C           ℼ            \bbpi                                        DOUBLE-STRUCK SMALL PI
+U+0213D           ℽ            \bbgamma                                     DOUBLE-STRUCK SMALL GAMMA
+U+0213E           ℾ            \bbGamma                                     DOUBLE-STRUCK CAPITAL GAMMA
+U+0213F           ℿ            \bbPi                                        DOUBLE-STRUCK CAPITAL PI
+U+02140           ⅀            \bbsum                                       DOUBLE-STRUCK N-ARY SUMMATION
+U+02141           ⅁            \Game                                        TURNED SANS-SERIF CAPITAL G
+U+02142           ⅂            \sansLturned                                 TURNED SANS-SERIF CAPITAL L
+U+02143           ⅃            \sansLmirrored                               REVERSED SANS-SERIF CAPITAL L
+U+02144           ⅄            \Yup                                         TURNED SANS-SERIF CAPITAL Y
+U+02145           ⅅ            \bbiD                                        DOUBLE-STRUCK ITALIC CAPITAL D
+U+02146           ⅆ            \bbid                                        DOUBLE-STRUCK ITALIC SMALL D
+U+02147           ⅇ            \bbie                                        DOUBLE-STRUCK ITALIC SMALL E
+U+02148           ⅈ            \bbii                                        DOUBLE-STRUCK ITALIC SMALL I
+U+02149           ⅉ            \bbij                                        DOUBLE-STRUCK ITALIC SMALL J
+U+0214A           ⅊            \PropertyLine                                PROPERTY LINE
+U+0214B           ⅋            \upand                                       TURNED AMPERSAND
+U+02150           ⅐            \1/7                                         VULGAR FRACTION ONE SEVENTH
+U+02151           ⅑            \1/9                                         VULGAR FRACTION ONE NINTH
+U+02152           ⅒            \1/10                                        VULGAR FRACTION ONE TENTH
+U+02153           ⅓            \1/3                                         VULGAR FRACTION ONE THIRD / FRACTION ONE THIRD
+U+02154           ⅔            \2/3                                         VULGAR FRACTION TWO THIRDS / FRACTION TWO THIRDS
+U+02155           ⅕            \1/5                                         VULGAR FRACTION ONE FIFTH / FRACTION ONE FIFTH
+U+02156           ⅖            \2/5                                         VULGAR FRACTION TWO FIFTHS / FRACTION TWO FIFTHS
+U+02157           ⅗            \3/5                                         VULGAR FRACTION THREE FIFTHS / FRACTION THREE FIFTHS
+U+02158           ⅘            \4/5                                         VULGAR FRACTION FOUR FIFTHS / FRACTION FOUR FIFTHS
+U+02159           ⅙            \1/6                                         VULGAR FRACTION ONE SIXTH / FRACTION ONE SIXTH
+U+0215A           ⅚            \5/6                                         VULGAR FRACTION FIVE SIXTHS / FRACTION FIVE SIXTHS
+U+0215B           ⅛            \1/8                                         VULGAR FRACTION ONE EIGHTH / FRACTION ONE EIGHTH
+U+0215C           ⅜            \3/8                                         VULGAR FRACTION THREE EIGHTHS / FRACTION THREE EIGHTHS
+U+0215D           ⅝            \5/8                                         VULGAR FRACTION FIVE EIGHTHS / FRACTION FIVE EIGHTHS
+U+0215E           ⅞            \7/8                                         VULGAR FRACTION SEVEN EIGHTHS / FRACTION SEVEN EIGHTHS
+U+0215F           ⅟            \1/                                          FRACTION NUMERATOR ONE
+U+02189           ↉            \0/3                                         VULGAR FRACTION ZERO THIRDS
+U+02190           ←            \leftarrow                                   LEFTWARDS ARROW / LEFT ARROW
+U+02191           ↑            \uparrow                                     UPWARDS ARROW / UP ARROW
+U+02192           →            \to, \rightarrow                             RIGHTWARDS ARROW / RIGHT ARROW
+U+02193           ↓            \downarrow                                   DOWNWARDS ARROW / DOWN ARROW
+U+02194           ↔            \leftrightarrow, \:left_right_arrow:         LEFT RIGHT ARROW
+U+02195           ↕            \updownarrow, \:arrow_up_down:               UP DOWN ARROW
+U+02196           ↖            \nwarrow, \:arrow_upper_left:                NORTH WEST ARROW / UPPER LEFT ARROW
+U+02197           ↗            \nearrow, \:arrow_upper_right:               NORTH EAST ARROW / UPPER RIGHT ARROW
+U+02198           ↘            \searrow, \:arrow_lower_right:               SOUTH EAST ARROW / LOWER RIGHT ARROW
+U+02199           ↙            \swarrow, \:arrow_lower_left:                SOUTH WEST ARROW / LOWER LEFT ARROW
+U+0219A           ↚            \nleftarrow                                  LEFTWARDS ARROW WITH STROKE / LEFT ARROW WITH STROKE
+U+0219B           ↛            \nrightarrow                                 RIGHTWARDS ARROW WITH STROKE / RIGHT ARROW WITH STROKE
+U+0219C           ↜            \leftwavearrow                               LEFTWARDS WAVE ARROW / LEFT WAVE ARROW
+U+0219D           ↝            \rightwavearrow                              RIGHTWARDS WAVE ARROW / RIGHT WAVE ARROW
+U+0219E           ↞            \twoheadleftarrow                            LEFTWARDS TWO HEADED ARROW / LEFT TWO HEADED ARROW
+U+0219F           ↟            \twoheaduparrow                              UPWARDS TWO HEADED ARROW / UP TWO HEADED ARROW
+U+021A0           ↠            \twoheadrightarrow                           RIGHTWARDS TWO HEADED ARROW / RIGHT TWO HEADED ARROW
+U+021A1           ↡            \twoheaddownarrow                            DOWNWARDS TWO HEADED ARROW / DOWN TWO HEADED ARROW
+U+021A2           ↢            \leftarrowtail                               LEFTWARDS ARROW WITH TAIL / LEFT ARROW WITH TAIL
+U+021A3           ↣            \rightarrowtail                              RIGHTWARDS ARROW WITH TAIL / RIGHT ARROW WITH TAIL
+U+021A4           ↤            \mapsfrom                                    LEFTWARDS ARROW FROM BAR / LEFT ARROW FROM BAR
+U+021A5           ↥            \mapsup                                      UPWARDS ARROW FROM BAR / UP ARROW FROM BAR
+U+021A6           ↦            \mapsto                                      RIGHTWARDS ARROW FROM BAR / RIGHT ARROW FROM BAR
+U+021A7           ↧            \mapsdown                                    DOWNWARDS ARROW FROM BAR / DOWN ARROW FROM BAR
+U+021A8           ↨            \updownarrowbar                              UP DOWN ARROW WITH BASE
+U+021A9           ↩            \hookleftarrow, \:leftwards_arrow_with_hook: LEFTWARDS ARROW WITH HOOK / LEFT ARROW WITH HOOK
+U+021AA           ↪            \hookrightarrow, \:arrow_right_hook:         RIGHTWARDS ARROW WITH HOOK / RIGHT ARROW WITH HOOK
+U+021AB           ↫            \looparrowleft                               LEFTWARDS ARROW WITH LOOP / LEFT ARROW WITH LOOP
+U+021AC           ↬            \looparrowright                              RIGHTWARDS ARROW WITH LOOP / RIGHT ARROW WITH LOOP
+U+021AD           ↭            \leftrightsquigarrow                         LEFT RIGHT WAVE ARROW
+U+021AE           ↮            \nleftrightarrow                             LEFT RIGHT ARROW WITH STROKE
+U+021AF           ↯            \downzigzagarrow                             DOWNWARDS ZIGZAG ARROW / DOWN ZIGZAG ARROW
+U+021B0           ↰            \Lsh                                         UPWARDS ARROW WITH TIP LEFTWARDS / UP ARROW WITH TIP LEFT
+U+021B1           ↱            \Rsh                                         UPWARDS ARROW WITH TIP RIGHTWARDS / UP ARROW WITH TIP RIGHT
+U+021B2           ↲            \Ldsh                                        DOWNWARDS ARROW WITH TIP LEFTWARDS / DOWN ARROW WITH TIP LEFT
+U+021B3           ↳            \Rdsh                                        DOWNWARDS ARROW WITH TIP RIGHTWARDS / DOWN ARROW WITH TIP RIGHT
+U+021B4           ↴            \linefeed                                    RIGHTWARDS ARROW WITH CORNER DOWNWARDS / RIGHT ARROW WITH CORNER DOWN
+U+021B5           ↵            \carriagereturn                              DOWNWARDS ARROW WITH CORNER LEFTWARDS / DOWN ARROW WITH CORNER LEFT
+U+021B6           ↶            \curvearrowleft                              ANTICLOCKWISE TOP SEMICIRCLE ARROW
+U+021B7           ↷            \curvearrowright                             CLOCKWISE TOP SEMICIRCLE ARROW
+U+021B8           ↸            \barovernorthwestarrow                       NORTH WEST ARROW TO LONG BAR / UPPER LEFT ARROW TO LONG BAR
+U+021B9           ↹            \barleftarrowrightarrowbar                   LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR / LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR
+U+021BA           ↺            \circlearrowleft                             ANTICLOCKWISE OPEN CIRCLE ARROW
+U+021BB           ↻            \circlearrowright                            CLOCKWISE OPEN CIRCLE ARROW
+U+021BC           ↼            \leftharpoonup                               LEFTWARDS HARPOON WITH BARB UPWARDS / LEFT HARPOON WITH BARB UP
+U+021BD           ↽            \leftharpoondown                             LEFTWARDS HARPOON WITH BARB DOWNWARDS / LEFT HARPOON WITH BARB DOWN
+U+021BE           ↾            \upharpoonright                              UPWARDS HARPOON WITH BARB RIGHTWARDS / UP HARPOON WITH BARB RIGHT
+U+021BF           ↿            \upharpoonleft                               UPWARDS HARPOON WITH BARB LEFTWARDS / UP HARPOON WITH BARB LEFT
+U+021C0           ⇀            \rightharpoonup                              RIGHTWARDS HARPOON WITH BARB UPWARDS / RIGHT HARPOON WITH BARB UP
+U+021C1           ⇁            \rightharpoondown                            RIGHTWARDS HARPOON WITH BARB DOWNWARDS / RIGHT HARPOON WITH BARB DOWN
+U+021C2           ⇂            \downharpoonright                            DOWNWARDS HARPOON WITH BARB RIGHTWARDS / DOWN HARPOON WITH BARB RIGHT
+U+021C3           ⇃            \downharpoonleft                             DOWNWARDS HARPOON WITH BARB LEFTWARDS / DOWN HARPOON WITH BARB LEFT
+U+021C4           ⇄            \rightleftarrows                             RIGHTWARDS ARROW OVER LEFTWARDS ARROW / RIGHT ARROW OVER LEFT ARROW
+U+021C5           ⇅            \dblarrowupdown                              UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW / UP ARROW LEFT OF DOWN ARROW
+U+021C6           ⇆            \leftrightarrows                             LEFTWARDS ARROW OVER RIGHTWARDS ARROW / LEFT ARROW OVER RIGHT ARROW
+U+021C7           ⇇            \leftleftarrows                              LEFTWARDS PAIRED ARROWS / LEFT PAIRED ARROWS
+U+021C8           ⇈            \upuparrows                                  UPWARDS PAIRED ARROWS / UP PAIRED ARROWS
+U+021C9           ⇉            \rightrightarrows                            RIGHTWARDS PAIRED ARROWS / RIGHT PAIRED ARROWS
+U+021CA           ⇊            \downdownarrows                              DOWNWARDS PAIRED ARROWS / DOWN PAIRED ARROWS
+U+021CB           ⇋            \leftrightharpoons                           LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON / LEFT HARPOON OVER RIGHT HARPOON
+U+021CC           ⇌            \rightleftharpoons                           RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON / RIGHT HARPOON OVER LEFT HARPOON
+U+021CD           ⇍            \nLeftarrow                                  LEFTWARDS DOUBLE ARROW WITH STROKE / LEFT DOUBLE ARROW WITH STROKE
+U+021CE           ⇎            \nLeftrightarrow                             LEFT RIGHT DOUBLE ARROW WITH STROKE
+U+021CF           ⇏            \nRightarrow                                 RIGHTWARDS DOUBLE ARROW WITH STROKE / RIGHT DOUBLE ARROW WITH STROKE
+U+021D0           ⇐            \Leftarrow                                   LEFTWARDS DOUBLE ARROW / LEFT DOUBLE ARROW
+U+021D1           ⇑            \Uparrow                                     UPWARDS DOUBLE ARROW / UP DOUBLE ARROW
+U+021D2           ⇒            \Rightarrow                                  RIGHTWARDS DOUBLE ARROW / RIGHT DOUBLE ARROW
+U+021D3           ⇓            \Downarrow                                   DOWNWARDS DOUBLE ARROW / DOWN DOUBLE ARROW
+U+021D4           ⇔            \Leftrightarrow                              LEFT RIGHT DOUBLE ARROW
+U+021D5           ⇕            \Updownarrow                                 UP DOWN DOUBLE ARROW
+U+021D6           ⇖            \Nwarrow                                     NORTH WEST DOUBLE ARROW / UPPER LEFT DOUBLE ARROW
+U+021D7           ⇗            \Nearrow                                     NORTH EAST DOUBLE ARROW / UPPER RIGHT DOUBLE ARROW
+U+021D8           ⇘            \Searrow                                     SOUTH EAST DOUBLE ARROW / LOWER RIGHT DOUBLE ARROW
+U+021D9           ⇙            \Swarrow                                     SOUTH WEST DOUBLE ARROW / LOWER LEFT DOUBLE ARROW
+U+021DA           ⇚            \Lleftarrow                                  LEFTWARDS TRIPLE ARROW / LEFT TRIPLE ARROW
+U+021DB           ⇛            \Rrightarrow                                 RIGHTWARDS TRIPLE ARROW / RIGHT TRIPLE ARROW
+U+021DC           ⇜            \leftsquigarrow                              LEFTWARDS SQUIGGLE ARROW / LEFT SQUIGGLE ARROW
+U+021DD           ⇝            \rightsquigarrow                             RIGHTWARDS SQUIGGLE ARROW / RIGHT SQUIGGLE ARROW
+U+021DE           ⇞            \nHuparrow                                   UPWARDS ARROW WITH DOUBLE STROKE / UP ARROW WITH DOUBLE STROKE
+U+021DF           ⇟            \nHdownarrow                                 DOWNWARDS ARROW WITH DOUBLE STROKE / DOWN ARROW WITH DOUBLE STROKE
+U+021E0           ⇠            \leftdasharrow                               LEFTWARDS DASHED ARROW / LEFT DASHED ARROW
+U+021E1           ⇡            \updasharrow                                 UPWARDS DASHED ARROW / UP DASHED ARROW
+U+021E2           ⇢            \rightdasharrow                              RIGHTWARDS DASHED ARROW / RIGHT DASHED ARROW
+U+021E3           ⇣            \downdasharrow                               DOWNWARDS DASHED ARROW / DOWN DASHED ARROW
+U+021E4           ⇤            \barleftarrow                                LEFTWARDS ARROW TO BAR / LEFT ARROW TO BAR
+U+021E5           ⇥            \rightarrowbar                               RIGHTWARDS ARROW TO BAR / RIGHT ARROW TO BAR
+U+021E6           ⇦            \leftwhitearrow                              LEFTWARDS WHITE ARROW / WHITE LEFT ARROW
+U+021E7           ⇧            \upwhitearrow                                UPWARDS WHITE ARROW / WHITE UP ARROW
+U+021E8           ⇨            \rightwhitearrow                             RIGHTWARDS WHITE ARROW / WHITE RIGHT ARROW
+U+021E9           ⇩            \downwhitearrow                              DOWNWARDS WHITE ARROW / WHITE DOWN ARROW
+U+021EA           ⇪            \whitearrowupfrombar                         UPWARDS WHITE ARROW FROM BAR / WHITE UP ARROW FROM BAR
+U+021F4           ⇴            \circleonrightarrow                          RIGHT ARROW WITH SMALL CIRCLE
+U+021F5           ⇵            \DownArrowUpArrow                            DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW
+U+021F6           ⇶            \rightthreearrows                            THREE RIGHTWARDS ARROWS
+U+021F7           ⇷            \nvleftarrow                                 LEFTWARDS ARROW WITH VERTICAL STROKE
+U+021F8           ⇸            \nvrightarrow                                RIGHTWARDS ARROW WITH VERTICAL STROKE
+U+021F9           ⇹            \nvleftrightarrow                            LEFT RIGHT ARROW WITH VERTICAL STROKE
+U+021FA           ⇺            \nVleftarrow                                 LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE
+U+021FB           ⇻            \nVrightarrow                                RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE
+U+021FC           ⇼            \nVleftrightarrow                            LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE
+U+021FD           ⇽            \leftarrowtriangle                           LEFTWARDS OPEN-HEADED ARROW
+U+021FE           ⇾            \rightarrowtriangle                          RIGHTWARDS OPEN-HEADED ARROW
+U+021FF           ⇿            \leftrightarrowtriangle                      LEFT RIGHT OPEN-HEADED ARROW
+U+02200           ∀            \forall                                      FOR ALL
+U+02201           ∁            \complement                                  COMPLEMENT
+U+02202           ∂            \partial                                     PARTIAL DIFFERENTIAL
+U+02203           ∃            \exists                                      THERE EXISTS
+U+02204           ∄            \nexists                                     THERE DOES NOT EXIST
+U+02205           ∅            \varnothing, \emptyset                       EMPTY SET
+U+02206           ∆            \increment                                   INCREMENT
+U+02207           ∇            \del, \nabla                                 NABLA
+U+02208           ∈            \in                                          ELEMENT OF
+U+02209           ∉            \notin                                       NOT AN ELEMENT OF
+U+0220A           ∊            \smallin                                     SMALL ELEMENT OF
+U+0220B           ∋            \ni                                          CONTAINS AS MEMBER
+U+0220C           ∌            \nni                                         DOES NOT CONTAIN AS MEMBER
+U+0220D           ∍            \smallni                                     SMALL CONTAINS AS MEMBER
+U+0220E           ∎            \QED                                         END OF PROOF
+U+0220F           ∏            \prod                                        N-ARY PRODUCT
+U+02210           ∐            \coprod                                      N-ARY COPRODUCT
+U+02211           ∑            \sum                                         N-ARY SUMMATION
+U+02212           −            \minus                                       MINUS SIGN
+U+02213           ∓            \mp                                          MINUS-OR-PLUS SIGN
+U+02214           ∔            \dotplus                                     DOT PLUS
+U+02216           ∖            \setminus                                    SET MINUS
+U+02217           ∗            \ast                                         ASTERISK OPERATOR
+U+02218           ∘            \circ                                        RING OPERATOR
+U+02219           ∙            \vysmblkcircle                               BULLET OPERATOR
+U+0221A           √            \surd, \sqrt                                 SQUARE ROOT
+U+0221B           ∛            \cbrt                                        CUBE ROOT
+U+0221C           ∜            \fourthroot                                  FOURTH ROOT
+U+0221D           ∝            \propto                                      PROPORTIONAL TO
+U+0221E           ∞            \infty                                       INFINITY
+U+0221F           ∟            \rightangle                                  RIGHT ANGLE
+U+02220           ∠            \angle                                       ANGLE
+U+02221           ∡            \measuredangle                               MEASURED ANGLE
+U+02222           ∢            \sphericalangle                              SPHERICAL ANGLE
+U+02223           ∣            \mid                                         DIVIDES
+U+02224           ∤            \nmid                                        DOES NOT DIVIDE
+U+02225           ∥            \parallel                                    PARALLEL TO
+U+02226           ∦            \nparallel                                   NOT PARALLEL TO
+U+02227           ∧            \wedge                                       LOGICAL AND
+U+02228           ∨            \vee                                         LOGICAL OR
+U+02229           ∩            \cap                                         INTERSECTION
+U+0222A           ∪            \cup                                         UNION
+U+0222B           ∫            \int                                         INTEGRAL
+U+0222C           ∬            \iint                                        DOUBLE INTEGRAL
+U+0222D           ∭            \iiint                                       TRIPLE INTEGRAL
+U+0222E           ∮            \oint                                        CONTOUR INTEGRAL
+U+0222F           ∯            \oiint                                       SURFACE INTEGRAL
+U+02230           ∰            \oiiint                                      VOLUME INTEGRAL
+U+02231           ∱            \clwintegral                                 CLOCKWISE INTEGRAL
+U+02232           ∲            \varointclockwise                            CLOCKWISE CONTOUR INTEGRAL
+U+02233           ∳            \ointctrclockwise                            ANTICLOCKWISE CONTOUR INTEGRAL
+U+02234           ∴            \therefore                                   THEREFORE
+U+02235           ∵            \because                                     BECAUSE
+U+02237           ∷            \Colon                                       PROPORTION
+U+02238           ∸            \dotminus                                    DOT MINUS
+U+0223A           ∺            \dotsminusdots                               GEOMETRIC PROPORTION
+U+0223B           ∻            \kernelcontraction                           HOMOTHETIC
+U+0223C           ∼            \sim                                         TILDE OPERATOR
+U+0223D           ∽            \backsim                                     REVERSED TILDE
+U+0223E           ∾            \lazysinv                                    INVERTED LAZY S
+U+0223F           ∿            \sinewave                                    SINE WAVE
+U+02240           ≀            \wr                                          WREATH PRODUCT
+U+02241           ≁            \nsim                                        NOT TILDE
+U+02242           ≂            \eqsim                                       MINUS TILDE
+U+02242 + U+00338 ≂̸           \neqsim                                      MINUS TILDE + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+02243           ≃            \simeq                                       ASYMPTOTICALLY EQUAL TO
+U+02244           ≄            \nsime                                       NOT ASYMPTOTICALLY EQUAL TO
+U+02245           ≅            \cong                                        APPROXIMATELY EQUAL TO
+U+02246           ≆            \approxnotequal                              APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
+U+02247           ≇            \ncong                                       NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+U+02248           ≈            \approx                                      ALMOST EQUAL TO
+U+02249           ≉            \napprox                                     NOT ALMOST EQUAL TO
+U+0224A           ≊            \approxeq                                    ALMOST EQUAL OR EQUAL TO
+U+0224B           ≋            \tildetrpl                                   TRIPLE TILDE
+U+0224C           ≌            \allequal                                    ALL EQUAL TO
+U+0224D           ≍            \asymp                                       EQUIVALENT TO
+U+0224E           ≎            \Bumpeq                                      GEOMETRICALLY EQUIVALENT TO
+U+0224E + U+00338 ≎̸           \nBumpeq                                     GEOMETRICALLY EQUIVALENT TO + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+0224F           ≏            \bumpeq                                      DIFFERENCE BETWEEN
+U+0224F + U+00338 ≏̸           \nbumpeq                                     DIFFERENCE BETWEEN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+02250           ≐            \doteq                                       APPROACHES THE LIMIT
+U+02251           ≑            \Doteq                                       GEOMETRICALLY EQUAL TO
+U+02252           ≒            \fallingdotseq                               APPROXIMATELY EQUAL TO OR THE IMAGE OF
+U+02253           ≓            \risingdotseq                                IMAGE OF OR APPROXIMATELY EQUAL TO
+U+02254           ≔            \coloneq                                     COLON EQUALS / COLON EQUAL
+U+02255           ≕            \eqcolon                                     EQUALS COLON / EQUAL COLON
+U+02256           ≖            \eqcirc                                      RING IN EQUAL TO
+U+02257           ≗            \circeq                                      RING EQUAL TO
+U+02258           ≘            \arceq                                       CORRESPONDS TO
+U+02259           ≙            \wedgeq                                      ESTIMATES
+U+0225A           ≚            \veeeq                                       EQUIANGULAR TO
+U+0225B           ≛            \starequal                                   STAR EQUALS
+U+0225C           ≜            \triangleq                                   DELTA EQUAL TO
+U+0225D           ≝            \eqdef                                       EQUAL TO BY DEFINITION
+U+0225E           ≞            \measeq                                      MEASURED BY
+U+0225F           ≟            \questeq                                     QUESTIONED EQUAL TO
+U+02260           ≠            \ne                                          NOT EQUAL TO
+U+02261           ≡            \equiv                                       IDENTICAL TO
+U+02262           ≢            \nequiv                                      NOT IDENTICAL TO
+U+02263           ≣            \Equiv                                       STRICTLY EQUIVALENT TO
+U+02264           ≤            \le, \leq                                    LESS-THAN OR EQUAL TO / LESS THAN OR EQUAL TO
+U+02265           ≥            \ge, \geq                                    GREATER-THAN OR EQUAL TO / GREATER THAN OR EQUAL TO
+U+02266           ≦            \leqq                                        LESS-THAN OVER EQUAL TO / LESS THAN OVER EQUAL TO
+U+02267           ≧            \geqq                                        GREATER-THAN OVER EQUAL TO / GREATER THAN OVER EQUAL TO
+U+02268           ≨            \lneqq                                       LESS-THAN BUT NOT EQUAL TO / LESS THAN BUT NOT EQUAL TO
+U+02268 + U+0FE00 ≨︀           \lvertneqq                                   LESS-THAN BUT NOT EQUAL TO / LESS THAN BUT NOT EQUAL TO + VARIATION SELECTOR-1
+U+02269           ≩            \gneqq                                       GREATER-THAN BUT NOT EQUAL TO / GREATER THAN BUT NOT EQUAL TO
+U+02269 + U+0FE00 ≩︀           \gvertneqq                                   GREATER-THAN BUT NOT EQUAL TO / GREATER THAN BUT NOT EQUAL TO + VARIATION SELECTOR-1
+U+0226A           ≪            \ll                                          MUCH LESS-THAN / MUCH LESS THAN
+U+0226A + U+00338 ≪̸           \NotLessLess                                 MUCH LESS-THAN / MUCH LESS THAN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+0226B           ≫            \gg                                          MUCH GREATER-THAN / MUCH GREATER THAN
+U+0226B + U+00338 ≫̸           \NotGreaterGreater                           MUCH GREATER-THAN / MUCH GREATER THAN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+0226C           ≬            \between                                     BETWEEN
+U+0226D           ≭            \nasymp                                      NOT EQUIVALENT TO
+U+0226E           ≮            \nless                                       NOT LESS-THAN / NOT LESS THAN
+U+0226F           ≯            \ngtr                                        NOT GREATER-THAN / NOT GREATER THAN
+U+02270           ≰            \nleq                                        NEITHER LESS-THAN NOR EQUAL TO / NEITHER LESS THAN NOR EQUAL TO
+U+02271           ≱            \ngeq                                        NEITHER GREATER-THAN NOR EQUAL TO / NEITHER GREATER THAN NOR EQUAL TO
+U+02272           ≲            \lesssim                                     LESS-THAN OR EQUIVALENT TO / LESS THAN OR EQUIVALENT TO
+U+02273           ≳            \gtrsim                                      GREATER-THAN OR EQUIVALENT TO / GREATER THAN OR EQUIVALENT TO
+U+02274           ≴            \nlesssim                                    NEITHER LESS-THAN NOR EQUIVALENT TO / NEITHER LESS THAN NOR EQUIVALENT TO
+U+02275           ≵            \ngtrsim                                     NEITHER GREATER-THAN NOR EQUIVALENT TO / NEITHER GREATER THAN NOR EQUIVALENT TO
+U+02276           ≶            \lessgtr                                     LESS-THAN OR GREATER-THAN / LESS THAN OR GREATER THAN
+U+02277           ≷            \gtrless                                     GREATER-THAN OR LESS-THAN / GREATER THAN OR LESS THAN
+U+02278           ≸            \notlessgreater                              NEITHER LESS-THAN NOR GREATER-THAN / NEITHER LESS THAN NOR GREATER THAN
+U+02279           ≹            \notgreaterless                              NEITHER GREATER-THAN NOR LESS-THAN / NEITHER GREATER THAN NOR LESS THAN
+U+0227A           ≺            \prec                                        PRECEDES
+U+0227B           ≻            \succ                                        SUCCEEDS
+U+0227C           ≼            \preccurlyeq                                 PRECEDES OR EQUAL TO
+U+0227D           ≽            \succcurlyeq                                 SUCCEEDS OR EQUAL TO
+U+0227E           ≾            \precsim                                     PRECEDES OR EQUIVALENT TO
+U+0227E + U+00338 ≾̸           \nprecsim                                    PRECEDES OR EQUIVALENT TO + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+0227F           ≿            \succsim                                     SUCCEEDS OR EQUIVALENT TO
+U+0227F + U+00338 ≿̸           \nsuccsim                                    SUCCEEDS OR EQUIVALENT TO + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+02280           ⊀            \nprec                                       DOES NOT PRECEDE
+U+02281           ⊁            \nsucc                                       DOES NOT SUCCEED
+U+02282           ⊂            \subset                                      SUBSET OF
+U+02283           ⊃            \supset                                      SUPERSET OF
+U+02284           ⊄            \nsubset                                     NOT A SUBSET OF
+U+02285           ⊅            \nsupset                                     NOT A SUPERSET OF
+U+02286           ⊆            \subseteq                                    SUBSET OF OR EQUAL TO
+U+02287           ⊇            \supseteq                                    SUPERSET OF OR EQUAL TO
+U+02288           ⊈            \nsubseteq                                   NEITHER A SUBSET OF NOR EQUAL TO
+U+02289           ⊉            \nsupseteq                                   NEITHER A SUPERSET OF NOR EQUAL TO
+U+0228A           ⊊            \subsetneq                                   SUBSET OF WITH NOT EQUAL TO / SUBSET OF OR NOT EQUAL TO
+U+0228A + U+0FE00 ⊊︀           \varsubsetneqq                               SUBSET OF WITH NOT EQUAL TO / SUBSET OF OR NOT EQUAL TO + VARIATION SELECTOR-1
+U+0228B           ⊋            \supsetneq                                   SUPERSET OF WITH NOT EQUAL TO / SUPERSET OF OR NOT EQUAL TO
+U+0228B + U+0FE00 ⊋︀           \varsupsetneq                                SUPERSET OF WITH NOT EQUAL TO / SUPERSET OF OR NOT EQUAL TO + VARIATION SELECTOR-1
+U+0228D           ⊍            \cupdot                                      MULTISET MULTIPLICATION
+U+0228E           ⊎            \uplus                                       MULTISET UNION
+U+0228F           ⊏            \sqsubset                                    SQUARE IMAGE OF
+U+0228F + U+00338 ⊏̸           \NotSquareSubset                             SQUARE IMAGE OF + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+02290           ⊐            \sqsupset                                    SQUARE ORIGINAL OF
+U+02290 + U+00338 ⊐̸           \NotSquareSuperset                           SQUARE ORIGINAL OF + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+02291           ⊑            \sqsubseteq                                  SQUARE IMAGE OF OR EQUAL TO
+U+02292           ⊒            \sqsupseteq                                  SQUARE ORIGINAL OF OR EQUAL TO
+U+02293           ⊓            \sqcap                                       SQUARE CAP
+U+02294           ⊔            \sqcup                                       SQUARE CUP
+U+02295           ⊕            \oplus                                       CIRCLED PLUS
+U+02296           ⊖            \ominus                                      CIRCLED MINUS
+U+02297           ⊗            \otimes                                      CIRCLED TIMES
+U+02298           ⊘            \oslash                                      CIRCLED DIVISION SLASH
+U+02299           ⊙            \odot                                        CIRCLED DOT OPERATOR
+U+0229A           ⊚            \circledcirc                                 CIRCLED RING OPERATOR
+U+0229B           ⊛            \circledast                                  CIRCLED ASTERISK OPERATOR
+U+0229C           ⊜            \circledequal                                CIRCLED EQUALS
+U+0229D           ⊝            \circleddash                                 CIRCLED DASH
+U+0229E           ⊞            \boxplus                                     SQUARED PLUS
+U+0229F           ⊟            \boxminus                                    SQUARED MINUS
+U+022A0           ⊠            \boxtimes                                    SQUARED TIMES
+U+022A1           ⊡            \boxdot                                      SQUARED DOT OPERATOR
+U+022A2           ⊢            \vdash                                       RIGHT TACK
+U+022A3           ⊣            \dashv                                       LEFT TACK
+U+022A4           ⊤            \top                                         DOWN TACK
+U+022A5           ⊥            \bot                                         UP TACK
+U+022A7           ⊧            \models                                      MODELS
+U+022A8           ⊨            \vDash                                       TRUE
+U+022A9           ⊩            \Vdash                                       FORCES
+U+022AA           ⊪            \Vvdash                                      TRIPLE VERTICAL BAR RIGHT TURNSTILE
+U+022AB           ⊫            \VDash                                       DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+U+022AC           ⊬            \nvdash                                      DOES NOT PROVE
+U+022AD           ⊭            \nvDash                                      NOT TRUE
+U+022AE           ⊮            \nVdash                                      DOES NOT FORCE
+U+022AF           ⊯            \nVDash                                      NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+U+022B0           ⊰            \prurel                                      PRECEDES UNDER RELATION
+U+022B1           ⊱            \scurel                                      SUCCEEDS UNDER RELATION
+U+022B2           ⊲            \vartriangleleft                             NORMAL SUBGROUP OF
+U+022B3           ⊳            \vartriangleright                            CONTAINS AS NORMAL SUBGROUP
+U+022B4           ⊴            \trianglelefteq                              NORMAL SUBGROUP OF OR EQUAL TO
+U+022B5           ⊵            \trianglerighteq                             CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
+U+022B6           ⊶            \original                                    ORIGINAL OF
+U+022B7           ⊷            \image                                       IMAGE OF
+U+022B8           ⊸            \multimap                                    MULTIMAP
+U+022B9           ⊹            \hermitconjmatrix                            HERMITIAN CONJUGATE MATRIX
+U+022BA           ⊺            \intercal                                    INTERCALATE
+U+022BB           ⊻            \veebar, \xor                                XOR
+U+022BC           ⊼            \barwedge                                    NAND
+U+022BD           ⊽            \barvee                                      NOR
+U+022BE           ⊾            \rightanglearc                               RIGHT ANGLE WITH ARC
+U+022BF           ⊿            \varlrtriangle                               RIGHT TRIANGLE
+U+022C0           ⋀            \bigwedge                                    N-ARY LOGICAL AND
+U+022C1           ⋁            \bigvee                                      N-ARY LOGICAL OR
+U+022C2           ⋂            \bigcap                                      N-ARY INTERSECTION
+U+022C3           ⋃            \bigcup                                      N-ARY UNION
+U+022C4           ⋄            \diamond                                     DIAMOND OPERATOR
+U+022C5           ⋅            \cdot                                        DOT OPERATOR
+U+022C6           ⋆            \star                                        STAR OPERATOR
+U+022C7           ⋇            \divideontimes                               DIVISION TIMES
+U+022C8           ⋈            \bowtie                                      BOWTIE
+U+022C9           ⋉            \ltimes                                      LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
+U+022CA           ⋊            \rtimes                                      RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
+U+022CB           ⋋            \leftthreetimes                              LEFT SEMIDIRECT PRODUCT
+U+022CC           ⋌            \rightthreetimes                             RIGHT SEMIDIRECT PRODUCT
+U+022CD           ⋍            \backsimeq                                   REVERSED TILDE EQUALS
+U+022CE           ⋎            \curlyvee                                    CURLY LOGICAL OR
+U+022CF           ⋏            \curlywedge                                  CURLY LOGICAL AND
+U+022D0           ⋐            \Subset                                      DOUBLE SUBSET
+U+022D1           ⋑            \Supset                                      DOUBLE SUPERSET
+U+022D2           ⋒            \Cap                                         DOUBLE INTERSECTION
+U+022D3           ⋓            \Cup                                         DOUBLE UNION
+U+022D4           ⋔            \pitchfork                                   PITCHFORK
+U+022D5           ⋕            \equalparallel                               EQUAL AND PARALLEL TO
+U+022D6           ⋖            \lessdot                                     LESS-THAN WITH DOT / LESS THAN WITH DOT
+U+022D7           ⋗            \gtrdot                                      GREATER-THAN WITH DOT / GREATER THAN WITH DOT
+U+022D8           ⋘            \verymuchless                                VERY MUCH LESS-THAN / VERY MUCH LESS THAN
+U+022D9           ⋙            \ggg                                         VERY MUCH GREATER-THAN / VERY MUCH GREATER THAN
+U+022DA           ⋚            \lesseqgtr                                   LESS-THAN EQUAL TO OR GREATER-THAN / LESS THAN EQUAL TO OR GREATER THAN
+U+022DB           ⋛            \gtreqless                                   GREATER-THAN EQUAL TO OR LESS-THAN / GREATER THAN EQUAL TO OR LESS THAN
+U+022DC           ⋜            \eqless                                      EQUAL TO OR LESS-THAN / EQUAL TO OR LESS THAN
+U+022DD           ⋝            \eqgtr                                       EQUAL TO OR GREATER-THAN / EQUAL TO OR GREATER THAN
+U+022DE           ⋞            \curlyeqprec                                 EQUAL TO OR PRECEDES
+U+022DF           ⋟            \curlyeqsucc                                 EQUAL TO OR SUCCEEDS
+U+022E0           ⋠            \npreccurlyeq                                DOES NOT PRECEDE OR EQUAL
+U+022E1           ⋡            \nsucccurlyeq                                DOES NOT SUCCEED OR EQUAL
+U+022E2           ⋢            \nsqsubseteq                                 NOT SQUARE IMAGE OF OR EQUAL TO
+U+022E3           ⋣            \nsqsupseteq                                 NOT SQUARE ORIGINAL OF OR EQUAL TO
+U+022E4           ⋤            \sqsubsetneq                                 SQUARE IMAGE OF OR NOT EQUAL TO
+U+022E5           ⋥            \sqspne                                      SQUARE ORIGINAL OF OR NOT EQUAL TO
+U+022E6           ⋦            \lnsim                                       LESS-THAN BUT NOT EQUIVALENT TO / LESS THAN BUT NOT EQUIVALENT TO
+U+022E7           ⋧            \gnsim                                       GREATER-THAN BUT NOT EQUIVALENT TO / GREATER THAN BUT NOT EQUIVALENT TO
+U+022E8           ⋨            \precnsim                                    PRECEDES BUT NOT EQUIVALENT TO
+U+022E9           ⋩            \succnsim                                    SUCCEEDS BUT NOT EQUIVALENT TO
+U+022EA           ⋪            \ntriangleleft                               NOT NORMAL SUBGROUP OF
+U+022EB           ⋫            \ntriangleright                              DOES NOT CONTAIN AS NORMAL SUBGROUP
+U+022EC           ⋬            \ntrianglelefteq                             NOT NORMAL SUBGROUP OF OR EQUAL TO
+U+022ED           ⋭            \ntrianglerighteq                            DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+U+022EE           ⋮            \vdots                                       VERTICAL ELLIPSIS
+U+022EF           ⋯            \cdots                                       MIDLINE HORIZONTAL ELLIPSIS
+U+022F0           ⋰            \adots                                       UP RIGHT DIAGONAL ELLIPSIS
+U+022F1           ⋱            \ddots                                       DOWN RIGHT DIAGONAL ELLIPSIS
+U+022F2           ⋲            \disin                                       ELEMENT OF WITH LONG HORIZONTAL STROKE
+U+022F3           ⋳            \varisins                                    ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+U+022F4           ⋴            \isins                                       SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+U+022F5           ⋵            \isindot                                     ELEMENT OF WITH DOT ABOVE
+U+022F6           ⋶            \varisinobar                                 ELEMENT OF WITH OVERBAR
+U+022F7           ⋷            \isinobar                                    SMALL ELEMENT OF WITH OVERBAR
+U+022F8           ⋸            \isinvb                                      ELEMENT OF WITH UNDERBAR
+U+022F9           ⋹            \isinE                                       ELEMENT OF WITH TWO HORIZONTAL STROKES
+U+022FA           ⋺            \nisd                                        CONTAINS WITH LONG HORIZONTAL STROKE
+U+022FB           ⋻            \varnis                                      CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+U+022FC           ⋼            \nis                                         SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+U+022FD           ⋽            \varniobar                                   CONTAINS WITH OVERBAR
+U+022FE           ⋾            \niobar                                      SMALL CONTAINS WITH OVERBAR
+U+022FF           ⋿            \bagmember                                   Z NOTATION BAG MEMBERSHIP
+U+02300           ⌀            \diameter                                    DIAMETER SIGN
+U+02302           ⌂            \house                                       HOUSE
+U+02305           ⌅            \varbarwedge                                 PROJECTIVE
+U+02306           ⌆            \vardoublebarwedge                           PERSPECTIVE
+U+02308           ⌈            \lceil                                       LEFT CEILING
+U+02309           ⌉            \rceil                                       RIGHT CEILING
+U+0230A           ⌊            \lfloor                                      LEFT FLOOR
+U+0230B           ⌋            \rfloor                                      RIGHT FLOOR
+U+02310           ⌐            \invnot                                      REVERSED NOT SIGN
+U+02311           ⌑            \sqlozenge                                   SQUARE LOZENGE
+U+02312           ⌒            \profline                                    ARC
+U+02313           ⌓            \profsurf                                    SEGMENT
+U+02315           ⌕            \recorder                                    TELEPHONE RECORDER
+U+02317           ⌗            \viewdata                                    VIEWDATA SQUARE
+U+02319           ⌙            \turnednot                                   TURNED NOT SIGN
+U+0231A           ⌚            \:watch:                                     WATCH
+U+0231B           ⌛            \:hourglass:                                 HOURGLASS
+U+0231C           ⌜            \ulcorner                                    TOP LEFT CORNER
+U+0231D           ⌝            \urcorner                                    TOP RIGHT CORNER
+U+0231E           ⌞            \llcorner                                    BOTTOM LEFT CORNER
+U+0231F           ⌟            \lrcorner                                    BOTTOM RIGHT CORNER
+U+02322           ⌢            \frown                                       FROWN
+U+02323           ⌣            \smile                                       SMILE
+U+0232C           ⌬            \varhexagonlrbonds                           BENZENE RING
+U+02332           ⌲            \conictaper                                  CONICAL TAPER
+U+02336           ⌶            \topbot                                      APL FUNCTIONAL SYMBOL I-BEAM
+U+0233D           ⌽            \obar                                        APL FUNCTIONAL SYMBOL CIRCLE STILE
+U+0233F           ⌿            \notslash                                    APL FUNCTIONAL SYMBOL SLASH BAR
+U+02340           ⍀            \notbackslash                                APL FUNCTIONAL SYMBOL BACKSLASH BAR
+U+02353           ⍓            \boxupcaret                                  APL FUNCTIONAL SYMBOL QUAD UP CARET
+U+02370           ⍰            \boxquestion                                 APL FUNCTIONAL SYMBOL QUAD QUESTION
+U+02394           ⎔            \hexagon                                     SOFTWARE-FUNCTION SYMBOL
+U+023A3           ⎣            \dlcorn                                      LEFT SQUARE BRACKET LOWER CORNER
+U+023B0           ⎰            \lmoustache                                  UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION
+U+023B1           ⎱            \rmoustache                                  UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION
+U+023B4           ⎴            \overbracket                                 TOP SQUARE BRACKET
+U+023B5           ⎵            \underbracket                                BOTTOM SQUARE BRACKET
+U+023B6           ⎶            \bbrktbrk                                    BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET
+U+023B7           ⎷            \sqrtbottom                                  RADICAL SYMBOL BOTTOM
+U+023B8           ⎸            \lvboxline                                   LEFT VERTICAL BOX LINE
+U+023B9           ⎹            \rvboxline                                   RIGHT VERTICAL BOX LINE
+U+023CE           ⏎            \varcarriagereturn                           RETURN SYMBOL
+U+023DE           ⏞            \overbrace                                   TOP CURLY BRACKET
+U+023DF           ⏟            \underbrace                                  BOTTOM CURLY BRACKET
+U+023E2           ⏢            \trapezium                                   WHITE TRAPEZIUM
+U+023E3           ⏣            \benzenr                                     BENZENE RING WITH CIRCLE
+U+023E4           ⏤            \strns                                       STRAIGHTNESS
+U+023E5           ⏥            \fltns                                       FLATNESS
+U+023E6           ⏦            \accurrent                                   AC CURRENT
+U+023E7           ⏧            \elinters                                    ELECTRICAL INTERSECTION
+U+023E9           ⏩            \:fast_forward:                              BLACK RIGHT-POINTING DOUBLE TRIANGLE
+U+023EA           ⏪            \:rewind:                                    BLACK LEFT-POINTING DOUBLE TRIANGLE
+U+023EB           ⏫            \:arrow_double_up:                           BLACK UP-POINTING DOUBLE TRIANGLE
+U+023EC           ⏬            \:arrow_double_down:                         BLACK DOWN-POINTING DOUBLE TRIANGLE
+U+023F0           ⏰            \:alarm_clock:                               ALARM CLOCK
+U+023F3           ⏳            \:hourglass_flowing_sand:                    HOURGLASS WITH FLOWING SAND
+U+02422           ␢            \blanksymbol                                 BLANK SYMBOL / BLANK
+U+02423           ␣            \visiblespace                                OPEN BOX
+U+024C2           Ⓜ            \:m:                                         CIRCLED LATIN CAPITAL LETTER M
+U+024C8           Ⓢ            \circledS                                    CIRCLED LATIN CAPITAL LETTER S
+U+02506           ┆            \dshfnc                                      BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL / FORMS LIGHT TRIPLE DASH VERTICAL
+U+02519           ┙            \sqfnw                                       BOX DRAWINGS UP LIGHT AND LEFT HEAVY / FORMS UP LIGHT AND LEFT HEAVY
+U+02571           ╱            \diagup                                      BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT / FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
+U+02572           ╲            \diagdown                                    BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT / FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
+U+02580           ▀            \blockuphalf                                 UPPER HALF BLOCK
+U+02584           ▄            \blocklowhalf                                LOWER HALF BLOCK
+U+02588           █            \blockfull                                   FULL BLOCK
+U+0258C           ▌            \blocklefthalf                               LEFT HALF BLOCK
+U+02590           ▐            \blockrighthalf                              RIGHT HALF BLOCK
+U+02591           ░            \blockqtrshaded                              LIGHT SHADE
+U+02592           ▒            \blockhalfshaded                             MEDIUM SHADE
+U+02593           ▓            \blockthreeqtrshaded                         DARK SHADE
+U+025A0           ■            \blacksquare                                 BLACK SQUARE
+U+025A1           □            \square                                      WHITE SQUARE
+U+025A2           ▢            \squoval                                     WHITE SQUARE WITH ROUNDED CORNERS
+U+025A3           ▣            \blackinwhitesquare                          WHITE SQUARE CONTAINING BLACK SMALL SQUARE
+U+025A4           ▤            \squarehfill                                 SQUARE WITH HORIZONTAL FILL
+U+025A5           ▥            \squarevfill                                 SQUARE WITH VERTICAL FILL
+U+025A6           ▦            \squarehvfill                                SQUARE WITH ORTHOGONAL CROSSHATCH FILL
+U+025A7           ▧            \squarenwsefill                              SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
+U+025A8           ▨            \squareneswfill                              SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
+U+025A9           ▩            \squarecrossfill                             SQUARE WITH DIAGONAL CROSSHATCH FILL
+U+025AA           ▪            \smblksquare, \:black_small_square:          BLACK SMALL SQUARE
+U+025AB           ▫            \smwhtsquare, \:white_small_square:          WHITE SMALL SQUARE
+U+025AC           ▬            \hrectangleblack                             BLACK RECTANGLE
+U+025AD           ▭            \hrectangle                                  WHITE RECTANGLE
+U+025AE           ▮            \vrectangleblack                             BLACK VERTICAL RECTANGLE
+U+025AF           ▯            \vrecto                                      WHITE VERTICAL RECTANGLE
+U+025B0           ▰            \parallelogramblack                          BLACK PARALLELOGRAM
+U+025B1           ▱            \parallelogram                               WHITE PARALLELOGRAM
+U+025B2           ▲            \bigblacktriangleup                          BLACK UP-POINTING TRIANGLE / BLACK UP POINTING TRIANGLE
+U+025B3           △            \bigtriangleup                               WHITE UP-POINTING TRIANGLE / WHITE UP POINTING TRIANGLE
+U+025B4           ▴            \blacktriangle                               BLACK UP-POINTING SMALL TRIANGLE / BLACK UP POINTING SMALL TRIANGLE
+U+025B5           ▵            \vartriangle                                 WHITE UP-POINTING SMALL TRIANGLE / WHITE UP POINTING SMALL TRIANGLE
+U+025B6           ▶            \blacktriangleright, \:arrow_forward:        BLACK RIGHT-POINTING TRIANGLE / BLACK RIGHT POINTING TRIANGLE
+U+025B7           ▷            \triangleright                               WHITE RIGHT-POINTING TRIANGLE / WHITE RIGHT POINTING TRIANGLE
+U+025B8           ▸            \smallblacktriangleright                     BLACK RIGHT-POINTING SMALL TRIANGLE / BLACK RIGHT POINTING SMALL TRIANGLE
+U+025B9           ▹            \smalltriangleright                          WHITE RIGHT-POINTING SMALL TRIANGLE / WHITE RIGHT POINTING SMALL TRIANGLE
+U+025BA           ►            \blackpointerright                           BLACK RIGHT-POINTING POINTER / BLACK RIGHT POINTING POINTER
+U+025BB           ▻            \whitepointerright                           WHITE RIGHT-POINTING POINTER / WHITE RIGHT POINTING POINTER
+U+025BC           ▼            \bigblacktriangledown                        BLACK DOWN-POINTING TRIANGLE / BLACK DOWN POINTING TRIANGLE
+U+025BD           ▽            \bigtriangledown                             WHITE DOWN-POINTING TRIANGLE / WHITE DOWN POINTING TRIANGLE
+U+025BE           ▾            \blacktriangledown                           BLACK DOWN-POINTING SMALL TRIANGLE / BLACK DOWN POINTING SMALL TRIANGLE
+U+025BF           ▿            \triangledown                                WHITE DOWN-POINTING SMALL TRIANGLE / WHITE DOWN POINTING SMALL TRIANGLE
+U+025C0           ◀            \blacktriangleleft, \:arrow_backward:        BLACK LEFT-POINTING TRIANGLE / BLACK LEFT POINTING TRIANGLE
+U+025C1           ◁            \triangleleft                                WHITE LEFT-POINTING TRIANGLE / WHITE LEFT POINTING TRIANGLE
+U+025C2           ◂            \smallblacktriangleleft                      BLACK LEFT-POINTING SMALL TRIANGLE / BLACK LEFT POINTING SMALL TRIANGLE
+U+025C3           ◃            \smalltriangleleft                           WHITE LEFT-POINTING SMALL TRIANGLE / WHITE LEFT POINTING SMALL TRIANGLE
+U+025C4           ◄            \blackpointerleft                            BLACK LEFT-POINTING POINTER / BLACK LEFT POINTING POINTER
+U+025C5           ◅            \whitepointerleft                            WHITE LEFT-POINTING POINTER / WHITE LEFT POINTING POINTER
+U+025C6           ◆            \mdlgblkdiamond                              BLACK DIAMOND
+U+025C7           ◇            \mdlgwhtdiamond                              WHITE DIAMOND
+U+025C8           ◈            \blackinwhitediamond                         WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
+U+025C9           ◉            \fisheye                                     FISHEYE
+U+025CA           ◊            \lozenge                                     LOZENGE
+U+025CB           ○            \bigcirc                                     WHITE CIRCLE
+U+025CC           ◌            \dottedcircle                                DOTTED CIRCLE
+U+025CD           ◍            \circlevertfill                              CIRCLE WITH VERTICAL FILL
+U+025CE           ◎            \bullseye                                    BULLSEYE
+U+025CF           ●            \mdlgblkcircle                               BLACK CIRCLE
+U+025D0           ◐            \cirfl                                       CIRCLE WITH LEFT HALF BLACK
+U+025D1           ◑            \cirfr                                       CIRCLE WITH RIGHT HALF BLACK
+U+025D2           ◒            \cirfb                                       CIRCLE WITH LOWER HALF BLACK
+U+025D3           ◓            \circletophalfblack                          CIRCLE WITH UPPER HALF BLACK
+U+025D4           ◔            \circleurquadblack                           CIRCLE WITH UPPER RIGHT QUADRANT BLACK
+U+025D5           ◕            \blackcircleulquadwhite                      CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK
+U+025D6           ◖            \blacklefthalfcircle                         LEFT HALF BLACK CIRCLE
+U+025D7           ◗            \blackrighthalfcircle                        RIGHT HALF BLACK CIRCLE
+U+025D8           ◘            \rvbull                                      INVERSE BULLET
+U+025D9           ◙            \inversewhitecircle                          INVERSE WHITE CIRCLE
+U+025DA           ◚            \invwhiteupperhalfcircle                     UPPER HALF INVERSE WHITE CIRCLE
+U+025DB           ◛            \invwhitelowerhalfcircle                     LOWER HALF INVERSE WHITE CIRCLE
+U+025DC           ◜            \ularc                                       UPPER LEFT QUADRANT CIRCULAR ARC
+U+025DD           ◝            \urarc                                       UPPER RIGHT QUADRANT CIRCULAR ARC
+U+025DE           ◞            \lrarc                                       LOWER RIGHT QUADRANT CIRCULAR ARC
+U+025DF           ◟            \llarc                                       LOWER LEFT QUADRANT CIRCULAR ARC
+U+025E0           ◠            \topsemicircle                               UPPER HALF CIRCLE
+U+025E1           ◡            \botsemicircle                               LOWER HALF CIRCLE
+U+025E2           ◢            \lrblacktriangle                             BLACK LOWER RIGHT TRIANGLE
+U+025E3           ◣            \llblacktriangle                             BLACK LOWER LEFT TRIANGLE
+U+025E4           ◤            \ulblacktriangle                             BLACK UPPER LEFT TRIANGLE
+U+025E5           ◥            \urblacktriangle                             BLACK UPPER RIGHT TRIANGLE
+U+025E6           ◦            \smwhtcircle                                 WHITE BULLET
+U+025E7           ◧            \sqfl                                        SQUARE WITH LEFT HALF BLACK
+U+025E8           ◨            \sqfr                                        SQUARE WITH RIGHT HALF BLACK
+U+025E9           ◩            \squareulblack                               SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK
+U+025EA           ◪            \sqfse                                       SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK
+U+025EB           ◫            \boxbar                                      WHITE SQUARE WITH VERTICAL BISECTING LINE
+U+025EC           ◬            \trianglecdot                                WHITE UP-POINTING TRIANGLE WITH DOT / WHITE UP POINTING TRIANGLE WITH DOT
+U+025ED           ◭            \triangleleftblack                           UP-POINTING TRIANGLE WITH LEFT HALF BLACK / UP POINTING TRIANGLE WITH LEFT HALF BLACK
+U+025EE           ◮            \trianglerightblack                          UP-POINTING TRIANGLE WITH RIGHT HALF BLACK / UP POINTING TRIANGLE WITH RIGHT HALF BLACK
+U+025EF           ◯            \lgwhtcircle                                 LARGE CIRCLE
+U+025F0           ◰            \squareulquad                                WHITE SQUARE WITH UPPER LEFT QUADRANT
+U+025F1           ◱            \squarellquad                                WHITE SQUARE WITH LOWER LEFT QUADRANT
+U+025F2           ◲            \squarelrquad                                WHITE SQUARE WITH LOWER RIGHT QUADRANT
+U+025F3           ◳            \squareurquad                                WHITE SQUARE WITH UPPER RIGHT QUADRANT
+U+025F4           ◴            \circleulquad                                WHITE CIRCLE WITH UPPER LEFT QUADRANT
+U+025F5           ◵            \circlellquad                                WHITE CIRCLE WITH LOWER LEFT QUADRANT
+U+025F6           ◶            \circlelrquad                                WHITE CIRCLE WITH LOWER RIGHT QUADRANT
+U+025F7           ◷            \circleurquad                                WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+U+025F8           ◸            \ultriangle                                  UPPER LEFT TRIANGLE
+U+025F9           ◹            \urtriangle                                  UPPER RIGHT TRIANGLE
+U+025FA           ◺            \lltriangle                                  LOWER LEFT TRIANGLE
+U+025FB           ◻            \mdwhtsquare, \:white_medium_square:         WHITE MEDIUM SQUARE
+U+025FC           ◼            \mdblksquare, \:black_medium_square:         BLACK MEDIUM SQUARE
+U+025FD           ◽            \mdsmwhtsquare, \:white_medium_small_square: WHITE MEDIUM SMALL SQUARE
+U+025FE           ◾            \mdsmblksquare, \:black_medium_small_square: BLACK MEDIUM SMALL SQUARE
+U+025FF           ◿            \lrtriangle                                  LOWER RIGHT TRIANGLE
+U+02600           ☀            \:sunny:                                     BLACK SUN WITH RAYS
+U+02601           ☁            \:cloud:                                     CLOUD
+U+02605           ★            \bigstar                                     BLACK STAR
+U+02606           ☆            \bigwhitestar                                WHITE STAR
+U+02609           ☉            \astrosun                                    SUN
+U+0260E           ☎            \:phone:                                     BLACK TELEPHONE
+U+02611           ☑            \:ballot_box_with_check:                     BALLOT BOX WITH CHECK
+U+02614           ☔            \:umbrella:                                  UMBRELLA WITH RAIN DROPS
+U+02615           ☕            \:coffee:                                    HOT BEVERAGE
+U+0261D           ☝            \:point_up:                                  WHITE UP POINTING INDEX
+U+02621           ☡            \danger                                      CAUTION SIGN
+U+0263A           ☺            \:relaxed:                                   WHITE SMILING FACE
+U+0263B           ☻            \blacksmiley                                 BLACK SMILING FACE
+U+0263C           ☼            \sun                                         WHITE SUN WITH RAYS
+U+0263D           ☽            \rightmoon                                   FIRST QUARTER MOON
+U+0263E           ☾            \leftmoon                                    LAST QUARTER MOON
+U+0263F           ☿            \mercury                                     MERCURY
+U+02640           ♀            \venus, \female                              FEMALE SIGN
+U+02642           ♂            \male, \mars                                 MALE SIGN
+U+02643           ♃            \jupiter                                     JUPITER
+U+02644           ♄            \saturn                                      SATURN
+U+02645           ♅            \uranus                                      URANUS
+U+02646           ♆            \neptune                                     NEPTUNE
+U+02647           ♇            \pluto                                       PLUTO
+U+02648           ♈            \aries, \:aries:                             ARIES
+U+02649           ♉            \taurus, \:taurus:                           TAURUS
+U+0264A           ♊            \gemini, \:gemini:                           GEMINI
+U+0264B           ♋            \cancer, \:cancer:                           CANCER
+U+0264C           ♌            \leo, \:leo:                                 LEO
+U+0264D           ♍            \virgo, \:virgo:                             VIRGO
+U+0264E           ♎            \libra, \:libra:                             LIBRA
+U+0264F           ♏            \scorpio, \:scorpius:                        SCORPIUS
+U+02650           ♐            \sagittarius, \:sagittarius:                 SAGITTARIUS
+U+02651           ♑            \capricornus, \:capricorn:                   CAPRICORN
+U+02652           ♒            \aquarius, \:aquarius:                       AQUARIUS
+U+02653           ♓            \pisces, \:pisces:                           PISCES
+U+02660           ♠            \spadesuit, \:spades:                        BLACK SPADE SUIT
+U+02661           ♡            \heartsuit                                   WHITE HEART SUIT
+U+02662           ♢            \diamondsuit                                 WHITE DIAMOND SUIT
+U+02663           ♣            \clubsuit, \:clubs:                          BLACK CLUB SUIT
+U+02664           ♤            \varspadesuit                                WHITE SPADE SUIT
+U+02665           ♥            \varheartsuit, \:hearts:                     BLACK HEART SUIT
+U+02666           ♦            \vardiamondsuit, \:diamonds:                 BLACK DIAMOND SUIT
+U+02667           ♧            \varclubsuit                                 WHITE CLUB SUIT
+U+02668           ♨            \:hotsprings:                                HOT SPRINGS
+U+02669           ♩            \quarternote                                 QUARTER NOTE
+U+0266A           ♪            \eighthnote                                  EIGHTH NOTE
+U+0266B           ♫            \twonotes                                    BEAMED EIGHTH NOTES / BARRED EIGHTH NOTES
+U+0266D           ♭            \flat                                        MUSIC FLAT SIGN / FLAT
+U+0266E           ♮            \natural                                     MUSIC NATURAL SIGN / NATURAL
+U+0266F           ♯            \sharp                                       MUSIC SHARP SIGN / SHARP
+U+0267B           ♻            \:recycle:                                   BLACK UNIVERSAL RECYCLING SYMBOL
+U+0267E           ♾            \acidfree                                    PERMANENT PAPER SIGN
+U+0267F           ♿            \:wheelchair:                                WHEELCHAIR SYMBOL
+U+02680           ⚀            \dicei                                       DIE FACE-1
+U+02681           ⚁            \diceii                                      DIE FACE-2
+U+02682           ⚂            \diceiii                                     DIE FACE-3
+U+02683           ⚃            \diceiv                                      DIE FACE-4
+U+02684           ⚄            \dicev                                       DIE FACE-5
+U+02685           ⚅            \dicevi                                      DIE FACE-6
+U+02686           ⚆            \circledrightdot                             WHITE CIRCLE WITH DOT RIGHT
+U+02687           ⚇            \circledtwodots                              WHITE CIRCLE WITH TWO DOTS
+U+02688           ⚈            \blackcircledrightdot                        BLACK CIRCLE WITH WHITE DOT RIGHT
+U+02689           ⚉            \blackcircledtwodots                         BLACK CIRCLE WITH TWO WHITE DOTS
+U+02693           ⚓            \:anchor:                                    ANCHOR
+U+026A0           ⚠            \:warning:                                   WARNING SIGN
+U+026A1           ⚡            \:zap:                                       HIGH VOLTAGE SIGN
+U+026A5           ⚥            \hermaphrodite                               MALE AND FEMALE SIGN
+U+026AA           ⚪            \mdwhtcircle, \:white_circle:                MEDIUM WHITE CIRCLE
+U+026AB           ⚫            \mdblkcircle, \:black_circle:                MEDIUM BLACK CIRCLE
+U+026AC           ⚬            \mdsmwhtcircle                               MEDIUM SMALL WHITE CIRCLE
+U+026B2           ⚲            \neuter                                      NEUTER
+U+026BD           ⚽            \:soccer:                                    SOCCER BALL
+U+026BE           ⚾            \:baseball:                                  BASEBALL
+U+026C4           ⛄            \:snowman:                                   SNOWMAN WITHOUT SNOW
+U+026C5           ⛅            \:partly_sunny:                              SUN BEHIND CLOUD
+U+026CE           ⛎            \:ophiuchus:                                 OPHIUCHUS
+U+026D4           ⛔            \:no_entry:                                  NO ENTRY
+U+026EA           ⛪            \:church:                                    CHURCH
+U+026F2           ⛲            \:fountain:                                  FOUNTAIN
+U+026F3           ⛳            \:golf:                                      FLAG IN HOLE
+U+026F5           ⛵            \:boat:                                      SAILBOAT
+U+026FA           ⛺            \:tent:                                      TENT
+U+026FD           ⛽            \:fuelpump:                                  FUEL PUMP
+U+02702           ✂            \:scissors:                                  BLACK SCISSORS
+U+02705           ✅            \:white_check_mark:                          WHITE HEAVY CHECK MARK
+U+02708           ✈            \:airplane:                                  AIRPLANE
+U+02709           ✉            \:email:                                     ENVELOPE
+U+0270A           ✊            \:fist:                                      RAISED FIST
+U+0270B           ✋            \:hand:                                      RAISED HAND
+U+0270C           ✌            \:v:                                         VICTORY HAND
+U+0270F           ✏            \:pencil2:                                   PENCIL
+U+02712           ✒            \:black_nib:                                 BLACK NIB
+U+02713           ✓            \checkmark                                   CHECK MARK
+U+02714           ✔            \:heavy_check_mark:                          HEAVY CHECK MARK
+U+02716           ✖            \:heavy_multiplication_x:                    HEAVY MULTIPLICATION X
+U+02720           ✠            \maltese                                     MALTESE CROSS
+U+02728           ✨            \:sparkles:                                  SPARKLES
+U+0272A           ✪            \circledstar                                 CIRCLED WHITE STAR
+U+02733           ✳            \:eight_spoked_asterisk:                     EIGHT SPOKED ASTERISK
+U+02734           ✴            \:eight_pointed_black_star:                  EIGHT POINTED BLACK STAR
+U+02736           ✶            \varstar                                     SIX POINTED BLACK STAR
+U+0273D           ✽            \dingasterisk                                HEAVY TEARDROP-SPOKED ASTERISK
+U+02744           ❄            \:snowflake:                                 SNOWFLAKE
+U+02747           ❇            \:sparkle:                                   SPARKLE
+U+0274C           ❌            \:x:                                         CROSS MARK
+U+0274E           ❎            \:negative_squared_cross_mark:               NEGATIVE SQUARED CROSS MARK
+U+02753           ❓            \:question:                                  BLACK QUESTION MARK ORNAMENT
+U+02754           ❔            \:grey_question:                             WHITE QUESTION MARK ORNAMENT
+U+02755           ❕            \:grey_exclamation:                          WHITE EXCLAMATION MARK ORNAMENT
+U+02757           ❗            \:exclamation:                               HEAVY EXCLAMATION MARK SYMBOL
+U+02764           ❤            \:heart:                                     HEAVY BLACK HEART
+U+02795           ➕            \:heavy_plus_sign:                           HEAVY PLUS SIGN
+U+02796           ➖            \:heavy_minus_sign:                          HEAVY MINUS SIGN
+U+02797           ➗            \:heavy_division_sign:                       HEAVY DIVISION SIGN
+U+0279B           ➛            \draftingarrow                               DRAFTING POINT RIGHTWARDS ARROW / DRAFTING POINT RIGHT ARROW
+U+027A1           ➡            \:arrow_right:                               BLACK RIGHTWARDS ARROW / BLACK RIGHT ARROW
+U+027B0           ➰            \:curly_loop:                                CURLY LOOP
+U+027BF           ➿            \:loop:                                      DOUBLE CURLY LOOP
+U+027C0           ⟀            \threedangle                                 THREE DIMENSIONAL ANGLE
+U+027C1           ⟁            \whiteinwhitetriangle                        WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE
+U+027C2           ⟂            \perp                                        PERPENDICULAR
+U+027C8           ⟈            \bsolhsub                                    REVERSE SOLIDUS PRECEDING SUBSET
+U+027C9           ⟉            \suphsol                                     SUPERSET PRECEDING SOLIDUS
+U+027D1           ⟑            \wedgedot                                    AND WITH DOT
+U+027D2           ⟒            \upin                                        ELEMENT OF OPENING UPWARDS
+U+027D5           ⟕            \leftouterjoin                               LEFT OUTER JOIN
+U+027D6           ⟖            \rightouterjoin                              RIGHT OUTER JOIN
+U+027D7           ⟗            \fullouterjoin                               FULL OUTER JOIN
+U+027D8           ⟘            \bigbot                                      LARGE UP TACK
+U+027D9           ⟙            \bigtop                                      LARGE DOWN TACK
+U+027E6           ⟦            \llbracket, \openbracketleft                 MATHEMATICAL LEFT WHITE SQUARE BRACKET
+U+027E7           ⟧            \openbracketright, \rrbracket                MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+U+027E8           ⟨            \langle                                      MATHEMATICAL LEFT ANGLE BRACKET
+U+027E9           ⟩            \rangle                                      MATHEMATICAL RIGHT ANGLE BRACKET
+U+027F0           ⟰            \UUparrow                                    UPWARDS QUADRUPLE ARROW
+U+027F1           ⟱            \DDownarrow                                  DOWNWARDS QUADRUPLE ARROW
+U+027F5           ⟵            \longleftarrow                               LONG LEFTWARDS ARROW
+U+027F6           ⟶            \longrightarrow                              LONG RIGHTWARDS ARROW
+U+027F7           ⟷            \longleftrightarrow                          LONG LEFT RIGHT ARROW
+U+027F8           ⟸            \impliedby, \Longleftarrow                   LONG LEFTWARDS DOUBLE ARROW
+U+027F9           ⟹            \implies, \Longrightarrow                    LONG RIGHTWARDS DOUBLE ARROW
+U+027FA           ⟺            \Longleftrightarrow, \iff                    LONG LEFT RIGHT DOUBLE ARROW
+U+027FB           ⟻            \longmapsfrom                                LONG LEFTWARDS ARROW FROM BAR
+U+027FC           ⟼            \longmapsto                                  LONG RIGHTWARDS ARROW FROM BAR
+U+027FD           ⟽            \Longmapsfrom                                LONG LEFTWARDS DOUBLE ARROW FROM BAR
+U+027FE           ⟾            \Longmapsto                                  LONG RIGHTWARDS DOUBLE ARROW FROM BAR
+U+027FF           ⟿            \longrightsquigarrow                         LONG RIGHTWARDS SQUIGGLE ARROW
+U+02900           ⤀            \nvtwoheadrightarrow                         RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
+U+02901           ⤁            \nVtwoheadrightarrow                         RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
+U+02902           ⤂            \nvLeftarrow                                 LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE
+U+02903           ⤃            \nvRightarrow                                RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE
+U+02904           ⤄            \nvLeftrightarrow                            LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE
+U+02905           ⤅            \twoheadmapsto                               RIGHTWARDS TWO-HEADED ARROW FROM BAR
+U+02906           ⤆            \Mapsfrom                                    LEFTWARDS DOUBLE ARROW FROM BAR
+U+02907           ⤇            \Mapsto                                      RIGHTWARDS DOUBLE ARROW FROM BAR
+U+02908           ⤈            \downarrowbarred                             DOWNWARDS ARROW WITH HORIZONTAL STROKE
+U+02909           ⤉            \uparrowbarred                               UPWARDS ARROW WITH HORIZONTAL STROKE
+U+0290A           ⤊            \Uuparrow                                    UPWARDS TRIPLE ARROW
+U+0290B           ⤋            \Ddownarrow                                  DOWNWARDS TRIPLE ARROW
+U+0290C           ⤌            \leftbkarrow                                 LEFTWARDS DOUBLE DASH ARROW
+U+0290D           ⤍            \bkarow                                      RIGHTWARDS DOUBLE DASH ARROW
+U+0290E           ⤎            \leftdbkarrow                                LEFTWARDS TRIPLE DASH ARROW
+U+0290F           ⤏            \dbkarow                                     RIGHTWARDS TRIPLE DASH ARROW
+U+02910           ⤐            \drbkarrow                                   RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW
+U+02911           ⤑            \rightdotarrow                               RIGHTWARDS ARROW WITH DOTTED STEM
+U+02912           ⤒            \UpArrowBar                                  UPWARDS ARROW TO BAR
+U+02913           ⤓            \DownArrowBar                                DOWNWARDS ARROW TO BAR
+U+02914           ⤔            \nvrightarrowtail                            RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE
+U+02915           ⤕            \nVrightarrowtail                            RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+U+02916           ⤖            \twoheadrightarrowtail                       RIGHTWARDS TWO-HEADED ARROW WITH TAIL
+U+02917           ⤗            \nvtwoheadrightarrowtail                     RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE
+U+02918           ⤘            \nVtwoheadrightarrowtail                     RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+U+0291D           ⤝            \diamondleftarrow                            LEFTWARDS ARROW TO BLACK DIAMOND
+U+0291E           ⤞            \rightarrowdiamond                           RIGHTWARDS ARROW TO BLACK DIAMOND
+U+0291F           ⤟            \diamondleftarrowbar                         LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND
+U+02920           ⤠            \barrightarrowdiamond                        RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND
+U+02925           ⤥            \hksearow                                    SOUTH EAST ARROW WITH HOOK
+U+02926           ⤦            \hkswarow                                    SOUTH WEST ARROW WITH HOOK
+U+02927           ⤧            \tona                                        NORTH WEST ARROW AND NORTH EAST ARROW
+U+02928           ⤨            \toea                                        NORTH EAST ARROW AND SOUTH EAST ARROW
+U+02929           ⤩            \tosa                                        SOUTH EAST ARROW AND SOUTH WEST ARROW
+U+0292A           ⤪            \towa                                        SOUTH WEST ARROW AND NORTH WEST ARROW
+U+0292B           ⤫            \rdiagovfdiag                                RISING DIAGONAL CROSSING FALLING DIAGONAL
+U+0292C           ⤬            \fdiagovrdiag                                FALLING DIAGONAL CROSSING RISING DIAGONAL
+U+0292D           ⤭            \seovnearrow                                 SOUTH EAST ARROW CROSSING NORTH EAST ARROW
+U+0292E           ⤮            \neovsearrow                                 NORTH EAST ARROW CROSSING SOUTH EAST ARROW
+U+0292F           ⤯            \fdiagovnearrow                              FALLING DIAGONAL CROSSING NORTH EAST ARROW
+U+02930           ⤰            \rdiagovsearrow                              RISING DIAGONAL CROSSING SOUTH EAST ARROW
+U+02931           ⤱            \neovnwarrow                                 NORTH EAST ARROW CROSSING NORTH WEST ARROW
+U+02932           ⤲            \nwovnearrow                                 NORTH WEST ARROW CROSSING NORTH EAST ARROW
+U+02934           ⤴            \:arrow_heading_up:                          ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS
+U+02935           ⤵            \:arrow_heading_down:                        ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS
+U+02942           ⥂            \Rlarr                                       RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW
+U+02944           ⥄            \rLarr                                       SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW
+U+02945           ⥅            \rightarrowplus                              RIGHTWARDS ARROW WITH PLUS BELOW
+U+02946           ⥆            \leftarrowplus                               LEFTWARDS ARROW WITH PLUS BELOW
+U+02947           ⥇            \rarrx                                       RIGHTWARDS ARROW THROUGH X
+U+02948           ⥈            \leftrightarrowcircle                        LEFT RIGHT ARROW THROUGH SMALL CIRCLE
+U+02949           ⥉            \twoheaduparrowcircle                        UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE
+U+0294A           ⥊            \leftrightharpoonupdown                      LEFT BARB UP RIGHT BARB DOWN HARPOON
+U+0294B           ⥋            \leftrightharpoondownup                      LEFT BARB DOWN RIGHT BARB UP HARPOON
+U+0294C           ⥌            \updownharpoonrightleft                      UP BARB RIGHT DOWN BARB LEFT HARPOON
+U+0294D           ⥍            \updownharpoonleftright                      UP BARB LEFT DOWN BARB RIGHT HARPOON
+U+0294E           ⥎            \LeftRightVector                             LEFT BARB UP RIGHT BARB UP HARPOON
+U+0294F           ⥏            \RightUpDownVector                           UP BARB RIGHT DOWN BARB RIGHT HARPOON
+U+02950           ⥐            \DownLeftRightVector                         LEFT BARB DOWN RIGHT BARB DOWN HARPOON
+U+02951           ⥑            \LeftUpDownVector                            UP BARB LEFT DOWN BARB LEFT HARPOON
+U+02952           ⥒            \LeftVectorBar                               LEFTWARDS HARPOON WITH BARB UP TO BAR
+U+02953           ⥓            \RightVectorBar                              RIGHTWARDS HARPOON WITH BARB UP TO BAR
+U+02954           ⥔            \RightUpVectorBar                            UPWARDS HARPOON WITH BARB RIGHT TO BAR
+U+02955           ⥕            \RightDownVectorBar                          DOWNWARDS HARPOON WITH BARB RIGHT TO BAR
+U+02956           ⥖            \DownLeftVectorBar                           LEFTWARDS HARPOON WITH BARB DOWN TO BAR
+U+02957           ⥗            \DownRightVectorBar                          RIGHTWARDS HARPOON WITH BARB DOWN TO BAR
+U+02958           ⥘            \LeftUpVectorBar                             UPWARDS HARPOON WITH BARB LEFT TO BAR
+U+02959           ⥙            \LeftDownVectorBar                           DOWNWARDS HARPOON WITH BARB LEFT TO BAR
+U+0295A           ⥚            \LeftTeeVector                               LEFTWARDS HARPOON WITH BARB UP FROM BAR
+U+0295B           ⥛            \RightTeeVector                              RIGHTWARDS HARPOON WITH BARB UP FROM BAR
+U+0295C           ⥜            \RightUpTeeVector                            UPWARDS HARPOON WITH BARB RIGHT FROM BAR
+U+0295D           ⥝            \RightDownTeeVector                          DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR
+U+0295E           ⥞            \DownLeftTeeVector                           LEFTWARDS HARPOON WITH BARB DOWN FROM BAR
+U+0295F           ⥟            \DownRightTeeVector                          RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR
+U+02960           ⥠            \LeftUpTeeVector                             UPWARDS HARPOON WITH BARB LEFT FROM BAR
+U+02961           ⥡            \LeftDownTeeVector                           DOWNWARDS HARPOON WITH BARB LEFT FROM BAR
+U+02962           ⥢            \leftharpoonsupdown                          LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN
+U+02963           ⥣            \upharpoonsleftright                         UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
+U+02964           ⥤            \rightharpoonsupdown                         RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
+U+02965           ⥥            \downharpoonsleftright                       DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
+U+02966           ⥦            \leftrightharpoonsup                         LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP
+U+02967           ⥧            \leftrightharpoonsdown                       LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
+U+02968           ⥨            \rightleftharpoonsup                         RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP
+U+02969           ⥩            \rightleftharpoonsdown                       RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN
+U+0296A           ⥪            \leftharpoonupdash                           LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
+U+0296B           ⥫            \dashleftharpoondown                         LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
+U+0296C           ⥬            \rightharpoonupdash                          RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
+U+0296D           ⥭            \dashrightharpoondown                        RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
+U+0296E           ⥮            \UpEquilibrium                               UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
+U+0296F           ⥯            \ReverseUpEquilibrium                        DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
+U+02970           ⥰            \RoundImplies                                RIGHT DOUBLE ARROW WITH ROUNDED HEAD
+U+02980           ⦀            \Vvert                                       TRIPLE VERTICAL BAR DELIMITER
+U+02986           ⦆            \Elroang                                     RIGHT WHITE PARENTHESIS
+U+02999           ⦙            \ddfnc                                       DOTTED FENCE
+U+0299B           ⦛            \measuredangleleft                           MEASURED ANGLE OPENING LEFT
+U+0299C           ⦜            \Angle                                       RIGHT ANGLE VARIANT WITH SQUARE
+U+0299D           ⦝            \rightanglemdot                              MEASURED RIGHT ANGLE WITH DOT
+U+0299E           ⦞            \angles                                      ANGLE WITH S INSIDE
+U+0299F           ⦟            \angdnr                                      ACUTE ANGLE
+U+029A0           ⦠            \lpargt                                      SPHERICAL ANGLE OPENING LEFT
+U+029A1           ⦡            \sphericalangleup                            SPHERICAL ANGLE OPENING UP
+U+029A2           ⦢            \turnangle                                   TURNED ANGLE
+U+029A3           ⦣            \revangle                                    REVERSED ANGLE
+U+029A4           ⦤            \angleubar                                   ANGLE WITH UNDERBAR
+U+029A5           ⦥            \revangleubar                                REVERSED ANGLE WITH UNDERBAR
+U+029A6           ⦦            \wideangledown                               OBLIQUE ANGLE OPENING UP
+U+029A7           ⦧            \wideangleup                                 OBLIQUE ANGLE OPENING DOWN
+U+029A8           ⦨            \measanglerutone                             MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
+U+029A9           ⦩            \measanglelutonw                             MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
+U+029AA           ⦪            \measanglerdtose                             MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
+U+029AB           ⦫            \measangleldtosw                             MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
+U+029AC           ⦬            \measangleurtone                             MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
+U+029AD           ⦭            \measangleultonw                             MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
+U+029AE           ⦮            \measangledrtose                             MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
+U+029AF           ⦯            \measangledltosw                             MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
+U+029B0           ⦰            \revemptyset                                 REVERSED EMPTY SET
+U+029B1           ⦱            \emptysetobar                                EMPTY SET WITH OVERBAR
+U+029B2           ⦲            \emptysetocirc                               EMPTY SET WITH SMALL CIRCLE ABOVE
+U+029B3           ⦳            \emptysetoarr                                EMPTY SET WITH RIGHT ARROW ABOVE
+U+029B4           ⦴            \emptysetoarrl                               EMPTY SET WITH LEFT ARROW ABOVE
+U+029B7           ⦷            \circledparallel                             CIRCLED PARALLEL
+U+029B8           ⦸            \obslash                                     CIRCLED REVERSE SOLIDUS
+U+029BC           ⦼            \odotslashdot                                CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN
+U+029BE           ⦾            \circledwhitebullet                          CIRCLED WHITE BULLET
+U+029BF           ⦿            \circledbullet                               CIRCLED BULLET
+U+029C0           ⧀            \olessthan                                   CIRCLED LESS-THAN
+U+029C1           ⧁            \ogreaterthan                                CIRCLED GREATER-THAN
+U+029C4           ⧄            \boxdiag                                     SQUARED RISING DIAGONAL SLASH
+U+029C5           ⧅            \boxbslash                                   SQUARED FALLING DIAGONAL SLASH
+U+029C6           ⧆            \boxast                                      SQUARED ASTERISK
+U+029C7           ⧇            \boxcircle                                   SQUARED SMALL CIRCLE
+U+029CA           ⧊            \Lap                                         TRIANGLE WITH DOT ABOVE
+U+029CB           ⧋            \defas                                       TRIANGLE WITH UNDERBAR
+U+029CF           ⧏            \LeftTriangleBar                             LEFT TRIANGLE BESIDE VERTICAL BAR
+U+029CF + U+00338 ⧏̸           \NotLeftTriangleBar                          LEFT TRIANGLE BESIDE VERTICAL BAR + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+029D0           ⧐            \RightTriangleBar                            VERTICAL BAR BESIDE RIGHT TRIANGLE
+U+029D0 + U+00338 ⧐̸           \NotRightTriangleBar                         VERTICAL BAR BESIDE RIGHT TRIANGLE + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+029DF           ⧟            \dualmap                                     DOUBLE-ENDED MULTIMAP
+U+029E1           ⧡            \lrtriangleeq                                INCREASES AS
+U+029E2           ⧢            \shuffle                                     SHUFFLE PRODUCT
+U+029E3           ⧣            \eparsl                                      EQUALS SIGN AND SLANTED PARALLEL
+U+029E4           ⧤            \smeparsl                                    EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE
+U+029E5           ⧥            \eqvparsl                                    IDENTICAL TO AND SLANTED PARALLEL
+U+029EB           ⧫            \blacklozenge                                BLACK LOZENGE
+U+029F4           ⧴            \RuleDelayed                                 RULE-DELAYED
+U+029F6           ⧶            \dsol                                        SOLIDUS WITH OVERBAR
+U+029F7           ⧷            \rsolbar                                     REVERSE SOLIDUS WITH HORIZONTAL STROKE
+U+029FA           ⧺            \doubleplus                                  DOUBLE PLUS
+U+029FB           ⧻            \tripleplus                                  TRIPLE PLUS
+U+02A00           ⨀            \bigodot                                     N-ARY CIRCLED DOT OPERATOR
+U+02A01           ⨁            \bigoplus                                    N-ARY CIRCLED PLUS OPERATOR
+U+02A02           ⨂            \bigotimes                                   N-ARY CIRCLED TIMES OPERATOR
+U+02A03           ⨃            \bigcupdot                                   N-ARY UNION OPERATOR WITH DOT
+U+02A04           ⨄            \biguplus                                    N-ARY UNION OPERATOR WITH PLUS
+U+02A05           ⨅            \bigsqcap                                    N-ARY SQUARE INTERSECTION OPERATOR
+U+02A06           ⨆            \bigsqcup                                    N-ARY SQUARE UNION OPERATOR
+U+02A07           ⨇            \conjquant                                   TWO LOGICAL AND OPERATOR
+U+02A08           ⨈            \disjquant                                   TWO LOGICAL OR OPERATOR
+U+02A09           ⨉            \bigtimes                                    N-ARY TIMES OPERATOR
+U+02A0A           ⨊            \modtwosum                                   MODULO TWO SUM
+U+02A0B           ⨋            \sumint                                      SUMMATION WITH INTEGRAL
+U+02A0C           ⨌            \iiiint                                      QUADRUPLE INTEGRAL OPERATOR
+U+02A0D           ⨍            \intbar                                      FINITE PART INTEGRAL
+U+02A0E           ⨎            \intBar                                      INTEGRAL WITH DOUBLE STROKE
+U+02A0F           ⨏            \clockoint                                   INTEGRAL AVERAGE WITH SLASH
+U+02A10           ⨐            \cirfnint                                    CIRCULATION FUNCTION
+U+02A11           ⨑            \awint                                       ANTICLOCKWISE INTEGRATION
+U+02A12           ⨒            \rppolint                                    LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE
+U+02A13           ⨓            \scpolint                                    LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE
+U+02A14           ⨔            \npolint                                     LINE INTEGRATION NOT INCLUDING THE POLE
+U+02A15           ⨕            \pointint                                    INTEGRAL AROUND A POINT OPERATOR
+U+02A16           ⨖            \sqrint                                      QUATERNION INTEGRAL OPERATOR
+U+02A18           ⨘            \intx                                        INTEGRAL WITH TIMES SIGN
+U+02A19           ⨙            \intcap                                      INTEGRAL WITH INTERSECTION
+U+02A1A           ⨚            \intcup                                      INTEGRAL WITH UNION
+U+02A1B           ⨛            \upint                                       INTEGRAL WITH OVERBAR
+U+02A1C           ⨜            \lowint                                      INTEGRAL WITH UNDERBAR
+U+02A1D           ⨝            \Join, \join                                 JOIN
+U+02A22           ⨢            \ringplus                                    PLUS SIGN WITH SMALL CIRCLE ABOVE
+U+02A23           ⨣            \plushat                                     PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE
+U+02A24           ⨤            \simplus                                     PLUS SIGN WITH TILDE ABOVE
+U+02A25           ⨥            \plusdot                                     PLUS SIGN WITH DOT BELOW
+U+02A26           ⨦            \plussim                                     PLUS SIGN WITH TILDE BELOW
+U+02A27           ⨧            \plussubtwo                                  PLUS SIGN WITH SUBSCRIPT TWO
+U+02A28           ⨨            \plustrif                                    PLUS SIGN WITH BLACK TRIANGLE
+U+02A29           ⨩            \commaminus                                  MINUS SIGN WITH COMMA ABOVE
+U+02A2A           ⨪            \minusdot                                    MINUS SIGN WITH DOT BELOW
+U+02A2B           ⨫            \minusfdots                                  MINUS SIGN WITH FALLING DOTS
+U+02A2C           ⨬            \minusrdots                                  MINUS SIGN WITH RISING DOTS
+U+02A2D           ⨭            \opluslhrim                                  PLUS SIGN IN LEFT HALF CIRCLE
+U+02A2E           ⨮            \oplusrhrim                                  PLUS SIGN IN RIGHT HALF CIRCLE
+U+02A2F           ⨯            \Times                                       VECTOR OR CROSS PRODUCT
+U+02A30           ⨰            \dottimes                                    MULTIPLICATION SIGN WITH DOT ABOVE
+U+02A31           ⨱            \timesbar                                    MULTIPLICATION SIGN WITH UNDERBAR
+U+02A32           ⨲            \btimes                                      SEMIDIRECT PRODUCT WITH BOTTOM CLOSED
+U+02A33           ⨳            \smashtimes                                  SMASH PRODUCT
+U+02A34           ⨴            \otimeslhrim                                 MULTIPLICATION SIGN IN LEFT HALF CIRCLE
+U+02A35           ⨵            \otimesrhrim                                 MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
+U+02A36           ⨶            \otimeshat                                   CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT
+U+02A37           ⨷            \Otimes                                      MULTIPLICATION SIGN IN DOUBLE CIRCLE
+U+02A38           ⨸            \odiv                                        CIRCLED DIVISION SIGN
+U+02A39           ⨹            \triangleplus                                PLUS SIGN IN TRIANGLE
+U+02A3A           ⨺            \triangleminus                               MINUS SIGN IN TRIANGLE
+U+02A3B           ⨻            \triangletimes                               MULTIPLICATION SIGN IN TRIANGLE
+U+02A3C           ⨼            \intprod                                     INTERIOR PRODUCT
+U+02A3D           ⨽            \intprodr                                    RIGHTHAND INTERIOR PRODUCT
+U+02A3F           ⨿            \amalg                                       AMALGAMATION OR COPRODUCT
+U+02A40           ⩀            \capdot                                      INTERSECTION WITH DOT
+U+02A41           ⩁            \uminus                                      UNION WITH MINUS SIGN
+U+02A42           ⩂            \barcup                                      UNION WITH OVERBAR
+U+02A43           ⩃            \barcap                                      INTERSECTION WITH OVERBAR
+U+02A44           ⩄            \capwedge                                    INTERSECTION WITH LOGICAL AND
+U+02A45           ⩅            \cupvee                                      UNION WITH LOGICAL OR
+U+02A4A           ⩊            \twocups                                     UNION BESIDE AND JOINED WITH UNION
+U+02A4B           ⩋            \twocaps                                     INTERSECTION BESIDE AND JOINED WITH INTERSECTION
+U+02A4C           ⩌            \closedvarcup                                CLOSED UNION WITH SERIFS
+U+02A4D           ⩍            \closedvarcap                                CLOSED INTERSECTION WITH SERIFS
+U+02A4E           ⩎            \Sqcap                                       DOUBLE SQUARE INTERSECTION
+U+02A4F           ⩏            \Sqcup                                       DOUBLE SQUARE UNION
+U+02A50           ⩐            \closedvarcupsmashprod                       CLOSED UNION WITH SERIFS AND SMASH PRODUCT
+U+02A51           ⩑            \wedgeodot                                   LOGICAL AND WITH DOT ABOVE
+U+02A52           ⩒            \veeodot                                     LOGICAL OR WITH DOT ABOVE
+U+02A53           ⩓            \And                                         DOUBLE LOGICAL AND
+U+02A54           ⩔            \Or                                          DOUBLE LOGICAL OR
+U+02A55           ⩕            \wedgeonwedge                                TWO INTERSECTING LOGICAL AND
+U+02A56           ⩖            \ElOr                                        TWO INTERSECTING LOGICAL OR
+U+02A57           ⩗            \bigslopedvee                                SLOPING LARGE OR
+U+02A58           ⩘            \bigslopedwedge                              SLOPING LARGE AND
+U+02A5A           ⩚            \wedgemidvert                                LOGICAL AND WITH MIDDLE STEM
+U+02A5B           ⩛            \veemidvert                                  LOGICAL OR WITH MIDDLE STEM
+U+02A5C           ⩜            \midbarwedge                                 LOGICAL AND WITH HORIZONTAL DASH
+U+02A5D           ⩝            \midbarvee                                   LOGICAL OR WITH HORIZONTAL DASH
+U+02A5E           ⩞            \perspcorrespond                             LOGICAL AND WITH DOUBLE OVERBAR
+U+02A5F           ⩟            \minhat                                      LOGICAL AND WITH UNDERBAR
+U+02A60           ⩠            \wedgedoublebar                              LOGICAL AND WITH DOUBLE UNDERBAR
+U+02A61           ⩡            \varveebar                                   SMALL VEE WITH UNDERBAR
+U+02A62           ⩢            \doublebarvee                                LOGICAL OR WITH DOUBLE OVERBAR
+U+02A63           ⩣            \veedoublebar                                LOGICAL OR WITH DOUBLE UNDERBAR
+U+02A66           ⩦            \eqdot                                       EQUALS SIGN WITH DOT BELOW
+U+02A67           ⩧            \dotequiv                                    IDENTICAL WITH DOT ABOVE
+U+02A6A           ⩪            \dotsim                                      TILDE OPERATOR WITH DOT ABOVE
+U+02A6B           ⩫            \simrdots                                    TILDE OPERATOR WITH RISING DOTS
+U+02A6C           ⩬            \simminussim                                 SIMILAR MINUS SIMILAR
+U+02A6D           ⩭            \congdot                                     CONGRUENT WITH DOT ABOVE
+U+02A6E           ⩮            \asteq                                       EQUALS WITH ASTERISK
+U+02A6F           ⩯            \hatapprox                                   ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT
+U+02A70           ⩰            \approxeqq                                   APPROXIMATELY EQUAL OR EQUAL TO
+U+02A71           ⩱            \eqqplus                                     EQUALS SIGN ABOVE PLUS SIGN
+U+02A72           ⩲            \pluseqq                                     PLUS SIGN ABOVE EQUALS SIGN
+U+02A73           ⩳            \eqqsim                                      EQUALS SIGN ABOVE TILDE OPERATOR
+U+02A74           ⩴            \Coloneq                                     DOUBLE COLON EQUAL
+U+02A75           ⩵            \Equal                                       TWO CONSECUTIVE EQUALS SIGNS
+U+02A76           ⩶            \eqeqeq                                      THREE CONSECUTIVE EQUALS SIGNS
+U+02A77           ⩷            \ddotseq                                     EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW
+U+02A78           ⩸            \equivDD                                     EQUIVALENT WITH FOUR DOTS ABOVE
+U+02A79           ⩹            \ltcir                                       LESS-THAN WITH CIRCLE INSIDE
+U+02A7A           ⩺            \gtcir                                       GREATER-THAN WITH CIRCLE INSIDE
+U+02A7B           ⩻            \ltquest                                     LESS-THAN WITH QUESTION MARK ABOVE
+U+02A7C           ⩼            \gtquest                                     GREATER-THAN WITH QUESTION MARK ABOVE
+U+02A7D           ⩽            \leqslant                                    LESS-THAN OR SLANTED EQUAL TO
+U+02A7D + U+00338 ⩽̸           \nleqslant                                   LESS-THAN OR SLANTED EQUAL TO + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+02A7E           ⩾            \geqslant                                    GREATER-THAN OR SLANTED EQUAL TO
+U+02A7E + U+00338 ⩾̸           \ngeqslant                                   GREATER-THAN OR SLANTED EQUAL TO + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+02A7F           ⩿            \lesdot                                      LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+U+02A80           ⪀            \gesdot                                      GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+U+02A81           ⪁            \lesdoto                                     LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+U+02A82           ⪂            \gesdoto                                     GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+U+02A83           ⪃            \lesdotor                                    LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
+U+02A84           ⪄            \gesdotol                                    GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
+U+02A85           ⪅            \lessapprox                                  LESS-THAN OR APPROXIMATE
+U+02A86           ⪆            \gtrapprox                                   GREATER-THAN OR APPROXIMATE
+U+02A87           ⪇            \lneq                                        LESS-THAN AND SINGLE-LINE NOT EQUAL TO
+U+02A88           ⪈            \gneq                                        GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
+U+02A89           ⪉            \lnapprox                                    LESS-THAN AND NOT APPROXIMATE
+U+02A8A           ⪊            \gnapprox                                    GREATER-THAN AND NOT APPROXIMATE
+U+02A8B           ⪋            \lesseqqgtr                                  LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
+U+02A8C           ⪌            \gtreqqless                                  GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
+U+02A8D           ⪍            \lsime                                       LESS-THAN ABOVE SIMILAR OR EQUAL
+U+02A8E           ⪎            \gsime                                       GREATER-THAN ABOVE SIMILAR OR EQUAL
+U+02A8F           ⪏            \lsimg                                       LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN
+U+02A90           ⪐            \gsiml                                       GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN
+U+02A91           ⪑            \lgE                                         LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
+U+02A92           ⪒            \glE                                         GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
+U+02A93           ⪓            \lesges                                      LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
+U+02A94           ⪔            \gesles                                      GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
+U+02A95           ⪕            \eqslantless                                 SLANTED EQUAL TO OR LESS-THAN
+U+02A96           ⪖            \eqslantgtr                                  SLANTED EQUAL TO OR GREATER-THAN
+U+02A97           ⪗            \elsdot                                      SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
+U+02A98           ⪘            \egsdot                                      SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
+U+02A99           ⪙            \eqqless                                     DOUBLE-LINE EQUAL TO OR LESS-THAN
+U+02A9A           ⪚            \eqqgtr                                      DOUBLE-LINE EQUAL TO OR GREATER-THAN
+U+02A9B           ⪛            \eqqslantless                                DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
+U+02A9C           ⪜            \eqqslantgtr                                 DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
+U+02A9D           ⪝            \simless                                     SIMILAR OR LESS-THAN
+U+02A9E           ⪞            \simgtr                                      SIMILAR OR GREATER-THAN
+U+02A9F           ⪟            \simlE                                       SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
+U+02AA0           ⪠            \simgE                                       SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
+U+02AA1           ⪡            \NestedLessLess                              DOUBLE NESTED LESS-THAN
+U+02AA1 + U+00338 ⪡̸           \NotNestedLessLess                           DOUBLE NESTED LESS-THAN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+02AA2           ⪢            \NestedGreaterGreater                        DOUBLE NESTED GREATER-THAN
+U+02AA2 + U+00338 ⪢̸           \NotNestedGreaterGreater                     DOUBLE NESTED GREATER-THAN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+02AA3           ⪣            \partialmeetcontraction                      DOUBLE NESTED LESS-THAN WITH UNDERBAR
+U+02AA4           ⪤            \glj                                         GREATER-THAN OVERLAPPING LESS-THAN
+U+02AA5           ⪥            \gla                                         GREATER-THAN BESIDE LESS-THAN
+U+02AA6           ⪦            \ltcc                                        LESS-THAN CLOSED BY CURVE
+U+02AA7           ⪧            \gtcc                                        GREATER-THAN CLOSED BY CURVE
+U+02AA8           ⪨            \lescc                                       LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
+U+02AA9           ⪩            \gescc                                       GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
+U+02AAA           ⪪            \smt                                         SMALLER THAN
+U+02AAB           ⪫            \lat                                         LARGER THAN
+U+02AAC           ⪬            \smte                                        SMALLER THAN OR EQUAL TO
+U+02AAD           ⪭            \late                                        LARGER THAN OR EQUAL TO
+U+02AAE           ⪮            \bumpeqq                                     EQUALS SIGN WITH BUMPY ABOVE
+U+02AAF           ⪯            \preceq                                      PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
+U+02AAF + U+00338 ⪯̸           \npreceq                                     PRECEDES ABOVE SINGLE-LINE EQUALS SIGN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+02AB0           ⪰            \succeq                                      SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
+U+02AB0 + U+00338 ⪰̸           \nsucceq                                     SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+02AB1           ⪱            \precneq                                     PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO
+U+02AB2           ⪲            \succneq                                     SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
+U+02AB3           ⪳            \preceqq                                     PRECEDES ABOVE EQUALS SIGN
+U+02AB4           ⪴            \succeqq                                     SUCCEEDS ABOVE EQUALS SIGN
+U+02AB5           ⪵            \precneqq                                    PRECEDES ABOVE NOT EQUAL TO
+U+02AB6           ⪶            \succneqq                                    SUCCEEDS ABOVE NOT EQUAL TO
+U+02AB7           ⪷            \precapprox                                  PRECEDES ABOVE ALMOST EQUAL TO
+U+02AB8           ⪸            \succapprox                                  SUCCEEDS ABOVE ALMOST EQUAL TO
+U+02AB9           ⪹            \precnapprox                                 PRECEDES ABOVE NOT ALMOST EQUAL TO
+U+02ABA           ⪺            \succnapprox                                 SUCCEEDS ABOVE NOT ALMOST EQUAL TO
+U+02ABB           ⪻            \Prec                                        DOUBLE PRECEDES
+U+02ABC           ⪼            \Succ                                        DOUBLE SUCCEEDS
+U+02ABD           ⪽            \subsetdot                                   SUBSET WITH DOT
+U+02ABE           ⪾            \supsetdot                                   SUPERSET WITH DOT
+U+02ABF           ⪿            \subsetplus                                  SUBSET WITH PLUS SIGN BELOW
+U+02AC0           ⫀            \supsetplus                                  SUPERSET WITH PLUS SIGN BELOW
+U+02AC1           ⫁            \submult                                     SUBSET WITH MULTIPLICATION SIGN BELOW
+U+02AC2           ⫂            \supmult                                     SUPERSET WITH MULTIPLICATION SIGN BELOW
+U+02AC3           ⫃            \subedot                                     SUBSET OF OR EQUAL TO WITH DOT ABOVE
+U+02AC4           ⫄            \supedot                                     SUPERSET OF OR EQUAL TO WITH DOT ABOVE
+U+02AC5           ⫅            \subseteqq                                   SUBSET OF ABOVE EQUALS SIGN
+U+02AC5 + U+00338 ⫅̸           \nsubseteqq                                  SUBSET OF ABOVE EQUALS SIGN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+02AC6           ⫆            \supseteqq                                   SUPERSET OF ABOVE EQUALS SIGN
+U+02AC6 + U+00338 ⫆̸           \nsupseteqq                                  SUPERSET OF ABOVE EQUALS SIGN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+U+02AC7           ⫇            \subsim                                      SUBSET OF ABOVE TILDE OPERATOR
+U+02AC8           ⫈            \supsim                                      SUPERSET OF ABOVE TILDE OPERATOR
+U+02AC9           ⫉            \subsetapprox                                SUBSET OF ABOVE ALMOST EQUAL TO
+U+02ACA           ⫊            \supsetapprox                                SUPERSET OF ABOVE ALMOST EQUAL TO
+U+02ACB           ⫋            \subsetneqq                                  SUBSET OF ABOVE NOT EQUAL TO
+U+02ACC           ⫌            \supsetneqq                                  SUPERSET OF ABOVE NOT EQUAL TO
+U+02ACD           ⫍            \lsqhook                                     SQUARE LEFT OPEN BOX OPERATOR
+U+02ACE           ⫎            \rsqhook                                     SQUARE RIGHT OPEN BOX OPERATOR
+U+02ACF           ⫏            \csub                                        CLOSED SUBSET
+U+02AD0           ⫐            \csup                                        CLOSED SUPERSET
+U+02AD1           ⫑            \csube                                       CLOSED SUBSET OR EQUAL TO
+U+02AD2           ⫒            \csupe                                       CLOSED SUPERSET OR EQUAL TO
+U+02AD3           ⫓            \subsup                                      SUBSET ABOVE SUPERSET
+U+02AD4           ⫔            \supsub                                      SUPERSET ABOVE SUBSET
+U+02AD5           ⫕            \subsub                                      SUBSET ABOVE SUBSET
+U+02AD6           ⫖            \supsup                                      SUPERSET ABOVE SUPERSET
+U+02AD7           ⫗            \suphsub                                     SUPERSET BESIDE SUBSET
+U+02AD8           ⫘            \supdsub                                     SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET
+U+02AD9           ⫙            \forkv                                       ELEMENT OF OPENING DOWNWARDS
+U+02ADB           ⫛            \mlcp                                        TRANSVERSAL INTERSECTION
+U+02ADC           ⫝̸            \forks                                       FORKING
+U+02ADD           ⫝            \forksnot                                    NONFORKING
+U+02AE3           ⫣            \dashV                                       DOUBLE VERTICAL BAR LEFT TURNSTILE
+U+02AE4           ⫤            \Dashv                                       VERTICAL BAR DOUBLE LEFT TURNSTILE
+U+02AF4           ⫴            \interleave                                  TRIPLE VERTICAL BAR BINARY RELATION
+U+02AF6           ⫶            \tdcol                                       TRIPLE COLON OPERATOR
+U+02AF7           ⫷            \lllnest                                     TRIPLE NESTED LESS-THAN
+U+02AF8           ⫸            \gggnest                                     TRIPLE NESTED GREATER-THAN
+U+02AF9           ⫹            \leqqslant                                   DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO
+U+02AFA           ⫺            \geqqslant                                   DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO
+U+02B05           ⬅            \:arrow_left:                                LEFTWARDS BLACK ARROW
+U+02B06           ⬆            \:arrow_up:                                  UPWARDS BLACK ARROW
+U+02B07           ⬇            \:arrow_down:                                DOWNWARDS BLACK ARROW
+U+02B12           ⬒            \squaretopblack                              SQUARE WITH TOP HALF BLACK
+U+02B13           ⬓            \squarebotblack                              SQUARE WITH BOTTOM HALF BLACK
+U+02B14           ⬔            \squareurblack                               SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK
+U+02B15           ⬕            \squarellblack                               SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK
+U+02B16           ⬖            \diamondleftblack                            DIAMOND WITH LEFT HALF BLACK
+U+02B17           ⬗            \diamondrightblack                           DIAMOND WITH RIGHT HALF BLACK
+U+02B18           ⬘            \diamondtopblack                             DIAMOND WITH TOP HALF BLACK
+U+02B19           ⬙            \diamondbotblack                             DIAMOND WITH BOTTOM HALF BLACK
+U+02B1A           ⬚            \dottedsquare                                DOTTED SQUARE
+U+02B1B           ⬛            \lgblksquare, \:black_large_square:          BLACK LARGE SQUARE
+U+02B1C           ⬜            \lgwhtsquare, \:white_large_square:          WHITE LARGE SQUARE
+U+02B1D           ⬝            \vysmblksquare                               BLACK VERY SMALL SQUARE
+U+02B1E           ⬞            \vysmwhtsquare                               WHITE VERY SMALL SQUARE
+U+02B1F           ⬟            \pentagonblack                               BLACK PENTAGON
+U+02B20           ⬠            \pentagon                                    WHITE PENTAGON
+U+02B21           ⬡            \varhexagon                                  WHITE HEXAGON
+U+02B22           ⬢            \varhexagonblack                             BLACK HEXAGON
+U+02B23           ⬣            \hexagonblack                                HORIZONTAL BLACK HEXAGON
+U+02B24           ⬤            \lgblkcircle                                 BLACK LARGE CIRCLE
+U+02B25           ⬥            \mdblkdiamond                                BLACK MEDIUM DIAMOND
+U+02B26           ⬦            \mdwhtdiamond                                WHITE MEDIUM DIAMOND
+U+02B27           ⬧            \mdblklozenge                                BLACK MEDIUM LOZENGE
+U+02B28           ⬨            \mdwhtlozenge                                WHITE MEDIUM LOZENGE
+U+02B29           ⬩            \smblkdiamond                                BLACK SMALL DIAMOND
+U+02B2A           ⬪            \smblklozenge                                BLACK SMALL LOZENGE
+U+02B2B           ⬫            \smwhtlozenge                                WHITE SMALL LOZENGE
+U+02B2C           ⬬            \blkhorzoval                                 BLACK HORIZONTAL ELLIPSE
+U+02B2D           ⬭            \whthorzoval                                 WHITE HORIZONTAL ELLIPSE
+U+02B2E           ⬮            \blkvertoval                                 BLACK VERTICAL ELLIPSE
+U+02B2F           ⬯            \whtvertoval                                 WHITE VERTICAL ELLIPSE
+U+02B30           ⬰            \circleonleftarrow                           LEFT ARROW WITH SMALL CIRCLE
+U+02B31           ⬱            \leftthreearrows                             THREE LEFTWARDS ARROWS
+U+02B32           ⬲            \leftarrowonoplus                            LEFT ARROW WITH CIRCLED PLUS
+U+02B33           ⬳            \longleftsquigarrow                          LONG LEFTWARDS SQUIGGLE ARROW
+U+02B34           ⬴            \nvtwoheadleftarrow                          LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
+U+02B35           ⬵            \nVtwoheadleftarrow                          LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
+U+02B36           ⬶            \twoheadmapsfrom                             LEFTWARDS TWO-HEADED ARROW FROM BAR
+U+02B37           ⬷            \twoheadleftdbkarrow                         LEFTWARDS TWO-HEADED TRIPLE DASH ARROW
+U+02B38           ⬸            \leftdotarrow                                LEFTWARDS ARROW WITH DOTTED STEM
+U+02B39           ⬹            \nvleftarrowtail                             LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE
+U+02B3A           ⬺            \nVleftarrowtail                             LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+U+02B3B           ⬻            \twoheadleftarrowtail                        LEFTWARDS TWO-HEADED ARROW WITH TAIL
+U+02B3C           ⬼            \nvtwoheadleftarrowtail                      LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE
+U+02B3D           ⬽            \nVtwoheadleftarrowtail                      LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+U+02B3E           ⬾            \leftarrowx                                  LEFTWARDS ARROW THROUGH X
+U+02B3F           ⬿            \leftcurvedarrow                             WAVE ARROW POINTING DIRECTLY LEFT
+U+02B40           ⭀            \equalleftarrow                              EQUALS SIGN ABOVE LEFTWARDS ARROW
+U+02B41           ⭁            \bsimilarleftarrow                           REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW
+U+02B42           ⭂            \leftarrowbackapprox                         LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO
+U+02B43           ⭃            \rightarrowgtr                               RIGHTWARDS ARROW THROUGH GREATER-THAN
+U+02B44           ⭄            \rightarrowsupset                            RIGHTWARDS ARROW THROUGH SUPERSET
+U+02B45           ⭅            \LLeftarrow                                  LEFTWARDS QUADRUPLE ARROW
+U+02B46           ⭆            \RRightarrow                                 RIGHTWARDS QUADRUPLE ARROW
+U+02B47           ⭇            \bsimilarrightarrow                          REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW
+U+02B48           ⭈            \rightarrowbackapprox                        RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO
+U+02B49           ⭉            \similarleftarrow                            TILDE OPERATOR ABOVE LEFTWARDS ARROW
+U+02B4A           ⭊            \leftarrowapprox                             LEFTWARDS ARROW ABOVE ALMOST EQUAL TO
+U+02B4B           ⭋            \leftarrowbsimilar                           LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
+U+02B4C           ⭌            \rightarrowbsimilar                          RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
+U+02B50           ⭐            \medwhitestar, \:star:                       WHITE MEDIUM STAR
+U+02B51           ⭑            \medblackstar                                BLACK SMALL STAR
+U+02B52           ⭒            \smwhitestar                                 WHITE SMALL STAR
+U+02B53           ⭓            \rightpentagonblack                          BLACK RIGHT-POINTING PENTAGON
+U+02B54           ⭔            \rightpentagon                               WHITE RIGHT-POINTING PENTAGON
+U+02B55           ⭕            \:o:                                         HEAVY LARGE CIRCLE
+U+02C7C           ⱼ            \_j                                          LATIN SUBSCRIPT SMALL LETTER J
+U+02C7D           ⱽ            \^V                                          MODIFIER LETTER CAPITAL V
+U+03012           〒            \postalmark                                  POSTAL MARK
+U+03030           〰            \:wavy_dash:                                 WAVY DASH
+U+0303D           〽            \:part_alternation_mark:                     PART ALTERNATION MARK
+U+03297           ㊗            \:congratulations:                           CIRCLED IDEOGRAPH CONGRATULATION
+U+03299           ㊙            \:secret:                                    CIRCLED IDEOGRAPH SECRET
+U+1D400           𝐀            \bfA                                         MATHEMATICAL BOLD CAPITAL A
+U+1D401           𝐁            \bfB                                         MATHEMATICAL BOLD CAPITAL B
+U+1D402           𝐂            \bfC                                         MATHEMATICAL BOLD CAPITAL C
+U+1D403           𝐃            \bfD                                         MATHEMATICAL BOLD CAPITAL D
+U+1D404           𝐄            \bfE                                         MATHEMATICAL BOLD CAPITAL E
+U+1D405           𝐅            \bfF                                         MATHEMATICAL BOLD CAPITAL F
+U+1D406           𝐆            \bfG                                         MATHEMATICAL BOLD CAPITAL G
+U+1D407           𝐇            \bfH                                         MATHEMATICAL BOLD CAPITAL H
+U+1D408           𝐈            \bfI                                         MATHEMATICAL BOLD CAPITAL I
+U+1D409           𝐉            \bfJ                                         MATHEMATICAL BOLD CAPITAL J
+U+1D40A           𝐊            \bfK                                         MATHEMATICAL BOLD CAPITAL K
+U+1D40B           𝐋            \bfL                                         MATHEMATICAL BOLD CAPITAL L
+U+1D40C           𝐌            \bfM                                         MATHEMATICAL BOLD CAPITAL M
+U+1D40D           𝐍            \bfN                                         MATHEMATICAL BOLD CAPITAL N
+U+1D40E           𝐎            \bfO                                         MATHEMATICAL BOLD CAPITAL O
+U+1D40F           𝐏            \bfP                                         MATHEMATICAL BOLD CAPITAL P
+U+1D410           𝐐            \bfQ                                         MATHEMATICAL BOLD CAPITAL Q
+U+1D411           𝐑            \bfR                                         MATHEMATICAL BOLD CAPITAL R
+U+1D412           𝐒            \bfS                                         MATHEMATICAL BOLD CAPITAL S
+U+1D413           𝐓            \bfT                                         MATHEMATICAL BOLD CAPITAL T
+U+1D414           𝐔            \bfU                                         MATHEMATICAL BOLD CAPITAL U
+U+1D415           𝐕            \bfV                                         MATHEMATICAL BOLD CAPITAL V
+U+1D416           𝐖            \bfW                                         MATHEMATICAL BOLD CAPITAL W
+U+1D417           𝐗            \bfX                                         MATHEMATICAL BOLD CAPITAL X
+U+1D418           𝐘            \bfY                                         MATHEMATICAL BOLD CAPITAL Y
+U+1D419           𝐙            \bfZ                                         MATHEMATICAL BOLD CAPITAL Z
+U+1D41A           𝐚            \bfa                                         MATHEMATICAL BOLD SMALL A
+U+1D41B           𝐛            \bfb                                         MATHEMATICAL BOLD SMALL B
+U+1D41C           𝐜            \bfc                                         MATHEMATICAL BOLD SMALL C
+U+1D41D           𝐝            \bfd                                         MATHEMATICAL BOLD SMALL D
+U+1D41E           𝐞            \bfe                                         MATHEMATICAL BOLD SMALL E
+U+1D41F           𝐟            \bff                                         MATHEMATICAL BOLD SMALL F
+U+1D420           𝐠            \bfg                                         MATHEMATICAL BOLD SMALL G
+U+1D421           𝐡            \bfh                                         MATHEMATICAL BOLD SMALL H
+U+1D422           𝐢            \bfi                                         MATHEMATICAL BOLD SMALL I
+U+1D423           𝐣            \bfj                                         MATHEMATICAL BOLD SMALL J
+U+1D424           𝐤            \bfk                                         MATHEMATICAL BOLD SMALL K
+U+1D425           𝐥            \bfl                                         MATHEMATICAL BOLD SMALL L
+U+1D426           𝐦            \bfm                                         MATHEMATICAL BOLD SMALL M
+U+1D427           𝐧            \bfn                                         MATHEMATICAL BOLD SMALL N
+U+1D428           𝐨            \bfo                                         MATHEMATICAL BOLD SMALL O
+U+1D429           𝐩            \bfp                                         MATHEMATICAL BOLD SMALL P
+U+1D42A           𝐪            \bfq                                         MATHEMATICAL BOLD SMALL Q
+U+1D42B           𝐫            \bfr                                         MATHEMATICAL BOLD SMALL R
+U+1D42C           𝐬            \bfs                                         MATHEMATICAL BOLD SMALL S
+U+1D42D           𝐭            \bft                                         MATHEMATICAL BOLD SMALL T
+U+1D42E           𝐮            \bfu                                         MATHEMATICAL BOLD SMALL U
+U+1D42F           𝐯            \bfv                                         MATHEMATICAL BOLD SMALL V
+U+1D430           𝐰            \bfw                                         MATHEMATICAL BOLD SMALL W
+U+1D431           𝐱            \bfx                                         MATHEMATICAL BOLD SMALL X
+U+1D432           𝐲            \bfy                                         MATHEMATICAL BOLD SMALL Y
+U+1D433           𝐳            \bfz                                         MATHEMATICAL BOLD SMALL Z
+U+1D434           𝐴            \itA                                         MATHEMATICAL ITALIC CAPITAL A
+U+1D435           𝐵            \itB                                         MATHEMATICAL ITALIC CAPITAL B
+U+1D436           𝐶            \itC                                         MATHEMATICAL ITALIC CAPITAL C
+U+1D437           𝐷            \itD                                         MATHEMATICAL ITALIC CAPITAL D
+U+1D438           𝐸            \itE                                         MATHEMATICAL ITALIC CAPITAL E
+U+1D439           𝐹            \itF                                         MATHEMATICAL ITALIC CAPITAL F
+U+1D43A           𝐺            \itG                                         MATHEMATICAL ITALIC CAPITAL G
+U+1D43B           𝐻            \itH                                         MATHEMATICAL ITALIC CAPITAL H
+U+1D43C           𝐼            \itI                                         MATHEMATICAL ITALIC CAPITAL I
+U+1D43D           𝐽            \itJ                                         MATHEMATICAL ITALIC CAPITAL J
+U+1D43E           𝐾            \itK                                         MATHEMATICAL ITALIC CAPITAL K
+U+1D43F           𝐿            \itL                                         MATHEMATICAL ITALIC CAPITAL L
+U+1D440           𝑀            \itM                                         MATHEMATICAL ITALIC CAPITAL M
+U+1D441           𝑁            \itN                                         MATHEMATICAL ITALIC CAPITAL N
+U+1D442           𝑂            \itO                                         MATHEMATICAL ITALIC CAPITAL O
+U+1D443           𝑃            \itP                                         MATHEMATICAL ITALIC CAPITAL P
+U+1D444           𝑄            \itQ                                         MATHEMATICAL ITALIC CAPITAL Q
+U+1D445           𝑅            \itR                                         MATHEMATICAL ITALIC CAPITAL R
+U+1D446           𝑆            \itS                                         MATHEMATICAL ITALIC CAPITAL S
+U+1D447           𝑇            \itT                                         MATHEMATICAL ITALIC CAPITAL T
+U+1D448           𝑈            \itU                                         MATHEMATICAL ITALIC CAPITAL U
+U+1D449           𝑉            \itV                                         MATHEMATICAL ITALIC CAPITAL V
+U+1D44A           𝑊            \itW                                         MATHEMATICAL ITALIC CAPITAL W
+U+1D44B           𝑋            \itX                                         MATHEMATICAL ITALIC CAPITAL X
+U+1D44C           𝑌            \itY                                         MATHEMATICAL ITALIC CAPITAL Y
+U+1D44D           𝑍            \itZ                                         MATHEMATICAL ITALIC CAPITAL Z
+U+1D44E           𝑎            \ita                                         MATHEMATICAL ITALIC SMALL A
+U+1D44F           𝑏            \itb                                         MATHEMATICAL ITALIC SMALL B
+U+1D450           𝑐            \itc                                         MATHEMATICAL ITALIC SMALL C
+U+1D451           𝑑            \itd                                         MATHEMATICAL ITALIC SMALL D
+U+1D452           𝑒            \ite                                         MATHEMATICAL ITALIC SMALL E
+U+1D453           𝑓            \itf                                         MATHEMATICAL ITALIC SMALL F
+U+1D454           𝑔            \itg                                         MATHEMATICAL ITALIC SMALL G
+U+1D456           𝑖            \iti                                         MATHEMATICAL ITALIC SMALL I
+U+1D457           𝑗            \itj                                         MATHEMATICAL ITALIC SMALL J
+U+1D458           𝑘            \itk                                         MATHEMATICAL ITALIC SMALL K
+U+1D459           𝑙            \itl                                         MATHEMATICAL ITALIC SMALL L
+U+1D45A           𝑚            \itm                                         MATHEMATICAL ITALIC SMALL M
+U+1D45B           𝑛            \itn                                         MATHEMATICAL ITALIC SMALL N
+U+1D45C           𝑜            \ito                                         MATHEMATICAL ITALIC SMALL O
+U+1D45D           𝑝            \itp                                         MATHEMATICAL ITALIC SMALL P
+U+1D45E           𝑞            \itq                                         MATHEMATICAL ITALIC SMALL Q
+U+1D45F           𝑟            \itr                                         MATHEMATICAL ITALIC SMALL R
+U+1D460           𝑠            \its                                         MATHEMATICAL ITALIC SMALL S
+U+1D461           𝑡            \itt                                         MATHEMATICAL ITALIC SMALL T
+U+1D462           𝑢            \itu                                         MATHEMATICAL ITALIC SMALL U
+U+1D463           𝑣            \itv                                         MATHEMATICAL ITALIC SMALL V
+U+1D464           𝑤            \itw                                         MATHEMATICAL ITALIC SMALL W
+U+1D465           𝑥            \itx                                         MATHEMATICAL ITALIC SMALL X
+U+1D466           𝑦            \ity                                         MATHEMATICAL ITALIC SMALL Y
+U+1D467           𝑧            \itz                                         MATHEMATICAL ITALIC SMALL Z
+U+1D468           𝑨            \biA                                         MATHEMATICAL BOLD ITALIC CAPITAL A
+U+1D469           𝑩            \biB                                         MATHEMATICAL BOLD ITALIC CAPITAL B
+U+1D46A           𝑪            \biC                                         MATHEMATICAL BOLD ITALIC CAPITAL C
+U+1D46B           𝑫            \biD                                         MATHEMATICAL BOLD ITALIC CAPITAL D
+U+1D46C           𝑬            \biE                                         MATHEMATICAL BOLD ITALIC CAPITAL E
+U+1D46D           𝑭            \biF                                         MATHEMATICAL BOLD ITALIC CAPITAL F
+U+1D46E           𝑮            \biG                                         MATHEMATICAL BOLD ITALIC CAPITAL G
+U+1D46F           𝑯            \biH                                         MATHEMATICAL BOLD ITALIC CAPITAL H
+U+1D470           𝑰            \biI                                         MATHEMATICAL BOLD ITALIC CAPITAL I
+U+1D471           𝑱            \biJ                                         MATHEMATICAL BOLD ITALIC CAPITAL J
+U+1D472           𝑲            \biK                                         MATHEMATICAL BOLD ITALIC CAPITAL K
+U+1D473           𝑳            \biL                                         MATHEMATICAL BOLD ITALIC CAPITAL L
+U+1D474           𝑴            \biM                                         MATHEMATICAL BOLD ITALIC CAPITAL M
+U+1D475           𝑵            \biN                                         MATHEMATICAL BOLD ITALIC CAPITAL N
+U+1D476           𝑶            \biO                                         MATHEMATICAL BOLD ITALIC CAPITAL O
+U+1D477           𝑷            \biP                                         MATHEMATICAL BOLD ITALIC CAPITAL P
+U+1D478           𝑸            \biQ                                         MATHEMATICAL BOLD ITALIC CAPITAL Q
+U+1D479           𝑹            \biR                                         MATHEMATICAL BOLD ITALIC CAPITAL R
+U+1D47A           𝑺            \biS                                         MATHEMATICAL BOLD ITALIC CAPITAL S
+U+1D47B           𝑻            \biT                                         MATHEMATICAL BOLD ITALIC CAPITAL T
+U+1D47C           𝑼            \biU                                         MATHEMATICAL BOLD ITALIC CAPITAL U
+U+1D47D           𝑽            \biV                                         MATHEMATICAL BOLD ITALIC CAPITAL V
+U+1D47E           𝑾            \biW                                         MATHEMATICAL BOLD ITALIC CAPITAL W
+U+1D47F           𝑿            \biX                                         MATHEMATICAL BOLD ITALIC CAPITAL X
+U+1D480           𝒀            \biY                                         MATHEMATICAL BOLD ITALIC CAPITAL Y
+U+1D481           𝒁            \biZ                                         MATHEMATICAL BOLD ITALIC CAPITAL Z
+U+1D482           𝒂            \bia                                         MATHEMATICAL BOLD ITALIC SMALL A
+U+1D483           𝒃            \bib                                         MATHEMATICAL BOLD ITALIC SMALL B
+U+1D484           𝒄            \bic                                         MATHEMATICAL BOLD ITALIC SMALL C
+U+1D485           𝒅            \bid                                         MATHEMATICAL BOLD ITALIC SMALL D
+U+1D486           𝒆            \bie                                         MATHEMATICAL BOLD ITALIC SMALL E
+U+1D487           𝒇            \bif                                         MATHEMATICAL BOLD ITALIC SMALL F
+U+1D488           𝒈            \big                                         MATHEMATICAL BOLD ITALIC SMALL G
+U+1D489           𝒉            \bih                                         MATHEMATICAL BOLD ITALIC SMALL H
+U+1D48A           𝒊            \bii                                         MATHEMATICAL BOLD ITALIC SMALL I
+U+1D48B           𝒋            \bij                                         MATHEMATICAL BOLD ITALIC SMALL J
+U+1D48C           𝒌            \bik                                         MATHEMATICAL BOLD ITALIC SMALL K
+U+1D48D           𝒍            \bil                                         MATHEMATICAL BOLD ITALIC SMALL L
+U+1D48E           𝒎            \bim                                         MATHEMATICAL BOLD ITALIC SMALL M
+U+1D48F           𝒏            \bin                                         MATHEMATICAL BOLD ITALIC SMALL N
+U+1D490           𝒐            \bio                                         MATHEMATICAL BOLD ITALIC SMALL O
+U+1D491           𝒑            \bip                                         MATHEMATICAL BOLD ITALIC SMALL P
+U+1D492           𝒒            \biq                                         MATHEMATICAL BOLD ITALIC SMALL Q
+U+1D493           𝒓            \bir                                         MATHEMATICAL BOLD ITALIC SMALL R
+U+1D494           𝒔            \bis                                         MATHEMATICAL BOLD ITALIC SMALL S
+U+1D495           𝒕            \bit                                         MATHEMATICAL BOLD ITALIC SMALL T
+U+1D496           𝒖            \biu                                         MATHEMATICAL BOLD ITALIC SMALL U
+U+1D497           𝒗            \biv                                         MATHEMATICAL BOLD ITALIC SMALL V
+U+1D498           𝒘            \biw                                         MATHEMATICAL BOLD ITALIC SMALL W
+U+1D499           𝒙            \bix                                         MATHEMATICAL BOLD ITALIC SMALL X
+U+1D49A           𝒚            \biy                                         MATHEMATICAL BOLD ITALIC SMALL Y
+U+1D49B           𝒛            \biz                                         MATHEMATICAL BOLD ITALIC SMALL Z
+U+1D49C           𝒜            \scrA                                        MATHEMATICAL SCRIPT CAPITAL A
+U+1D49E           𝒞            \scrC                                        MATHEMATICAL SCRIPT CAPITAL C
+U+1D49F           𝒟            \scrD                                        MATHEMATICAL SCRIPT CAPITAL D
+U+1D4A2           𝒢            \scrG                                        MATHEMATICAL SCRIPT CAPITAL G
+U+1D4A5           𝒥            \scrJ                                        MATHEMATICAL SCRIPT CAPITAL J
+U+1D4A6           𝒦            \scrK                                        MATHEMATICAL SCRIPT CAPITAL K
+U+1D4A9           𝒩            \scrN                                        MATHEMATICAL SCRIPT CAPITAL N
+U+1D4AA           𝒪            \scrO                                        MATHEMATICAL SCRIPT CAPITAL O
+U+1D4AB           𝒫            \scrP                                        MATHEMATICAL SCRIPT CAPITAL P
+U+1D4AC           𝒬            \scrQ                                        MATHEMATICAL SCRIPT CAPITAL Q
+U+1D4AE           𝒮            \scrS                                        MATHEMATICAL SCRIPT CAPITAL S
+U+1D4AF           𝒯            \scrT                                        MATHEMATICAL SCRIPT CAPITAL T
+U+1D4B0           𝒰            \scrU                                        MATHEMATICAL SCRIPT CAPITAL U
+U+1D4B1           𝒱            \scrV                                        MATHEMATICAL SCRIPT CAPITAL V
+U+1D4B2           𝒲            \scrW                                        MATHEMATICAL SCRIPT CAPITAL W
+U+1D4B3           𝒳            \scrX                                        MATHEMATICAL SCRIPT CAPITAL X
+U+1D4B4           𝒴            \scrY                                        MATHEMATICAL SCRIPT CAPITAL Y
+U+1D4B5           𝒵            \scrZ                                        MATHEMATICAL SCRIPT CAPITAL Z
+U+1D4B6           𝒶            \scra                                        MATHEMATICAL SCRIPT SMALL A
+U+1D4B7           𝒷            \scrb                                        MATHEMATICAL SCRIPT SMALL B
+U+1D4B8           𝒸            \scrc                                        MATHEMATICAL SCRIPT SMALL C
+U+1D4B9           𝒹            \scrd                                        MATHEMATICAL SCRIPT SMALL D
+U+1D4BB           𝒻            \scrf                                        MATHEMATICAL SCRIPT SMALL F
+U+1D4BD           𝒽            \scrh                                        MATHEMATICAL SCRIPT SMALL H
+U+1D4BE           𝒾            \scri                                        MATHEMATICAL SCRIPT SMALL I
+U+1D4BF           𝒿            \scrj                                        MATHEMATICAL SCRIPT SMALL J
+U+1D4C0           𝓀            \scrk                                        MATHEMATICAL SCRIPT SMALL K
+U+1D4C1           𝓁            \scrl                                        MATHEMATICAL SCRIPT SMALL L
+U+1D4C2           𝓂            \scrm                                        MATHEMATICAL SCRIPT SMALL M
+U+1D4C3           𝓃            \scrn                                        MATHEMATICAL SCRIPT SMALL N
+U+1D4C5           𝓅            \scrp                                        MATHEMATICAL SCRIPT SMALL P
+U+1D4C6           𝓆            \scrq                                        MATHEMATICAL SCRIPT SMALL Q
+U+1D4C7           𝓇            \scrr                                        MATHEMATICAL SCRIPT SMALL R
+U+1D4C8           𝓈            \scrs                                        MATHEMATICAL SCRIPT SMALL S
+U+1D4C9           𝓉            \scrt                                        MATHEMATICAL SCRIPT SMALL T
+U+1D4CA           𝓊            \scru                                        MATHEMATICAL SCRIPT SMALL U
+U+1D4CB           𝓋            \scrv                                        MATHEMATICAL SCRIPT SMALL V
+U+1D4CC           𝓌            \scrw                                        MATHEMATICAL SCRIPT SMALL W
+U+1D4CD           𝓍            \scrx                                        MATHEMATICAL SCRIPT SMALL X
+U+1D4CE           𝓎            \scry                                        MATHEMATICAL SCRIPT SMALL Y
+U+1D4CF           𝓏            \scrz                                        MATHEMATICAL SCRIPT SMALL Z
+U+1D4D0           𝓐            \bscrA                                       MATHEMATICAL BOLD SCRIPT CAPITAL A
+U+1D4D1           𝓑            \bscrB                                       MATHEMATICAL BOLD SCRIPT CAPITAL B
+U+1D4D2           𝓒            \bscrC                                       MATHEMATICAL BOLD SCRIPT CAPITAL C
+U+1D4D3           𝓓            \bscrD                                       MATHEMATICAL BOLD SCRIPT CAPITAL D
+U+1D4D4           𝓔            \bscrE                                       MATHEMATICAL BOLD SCRIPT CAPITAL E
+U+1D4D5           𝓕            \bscrF                                       MATHEMATICAL BOLD SCRIPT CAPITAL F
+U+1D4D6           𝓖            \bscrG                                       MATHEMATICAL BOLD SCRIPT CAPITAL G
+U+1D4D7           𝓗            \bscrH                                       MATHEMATICAL BOLD SCRIPT CAPITAL H
+U+1D4D8           𝓘            \bscrI                                       MATHEMATICAL BOLD SCRIPT CAPITAL I
+U+1D4D9           𝓙            \bscrJ                                       MATHEMATICAL BOLD SCRIPT CAPITAL J
+U+1D4DA           𝓚            \bscrK                                       MATHEMATICAL BOLD SCRIPT CAPITAL K
+U+1D4DB           𝓛            \bscrL                                       MATHEMATICAL BOLD SCRIPT CAPITAL L
+U+1D4DC           𝓜            \bscrM                                       MATHEMATICAL BOLD SCRIPT CAPITAL M
+U+1D4DD           𝓝            \bscrN                                       MATHEMATICAL BOLD SCRIPT CAPITAL N
+U+1D4DE           𝓞            \bscrO                                       MATHEMATICAL BOLD SCRIPT CAPITAL O
+U+1D4DF           𝓟            \bscrP                                       MATHEMATICAL BOLD SCRIPT CAPITAL P
+U+1D4E0           𝓠            \bscrQ                                       MATHEMATICAL BOLD SCRIPT CAPITAL Q
+U+1D4E1           𝓡            \bscrR                                       MATHEMATICAL BOLD SCRIPT CAPITAL R
+U+1D4E2           𝓢            \bscrS                                       MATHEMATICAL BOLD SCRIPT CAPITAL S
+U+1D4E3           𝓣            \bscrT                                       MATHEMATICAL BOLD SCRIPT CAPITAL T
+U+1D4E4           𝓤            \bscrU                                       MATHEMATICAL BOLD SCRIPT CAPITAL U
+U+1D4E5           𝓥            \bscrV                                       MATHEMATICAL BOLD SCRIPT CAPITAL V
+U+1D4E6           𝓦            \bscrW                                       MATHEMATICAL BOLD SCRIPT CAPITAL W
+U+1D4E7           𝓧            \bscrX                                       MATHEMATICAL BOLD SCRIPT CAPITAL X
+U+1D4E8           𝓨            \bscrY                                       MATHEMATICAL BOLD SCRIPT CAPITAL Y
+U+1D4E9           𝓩            \bscrZ                                       MATHEMATICAL BOLD SCRIPT CAPITAL Z
+U+1D4EA           𝓪            \bscra                                       MATHEMATICAL BOLD SCRIPT SMALL A
+U+1D4EB           𝓫            \bscrb                                       MATHEMATICAL BOLD SCRIPT SMALL B
+U+1D4EC           𝓬            \bscrc                                       MATHEMATICAL BOLD SCRIPT SMALL C
+U+1D4ED           𝓭            \bscrd                                       MATHEMATICAL BOLD SCRIPT SMALL D
+U+1D4EE           𝓮            \bscre                                       MATHEMATICAL BOLD SCRIPT SMALL E
+U+1D4EF           𝓯            \bscrf                                       MATHEMATICAL BOLD SCRIPT SMALL F
+U+1D4F0           𝓰            \bscrg                                       MATHEMATICAL BOLD SCRIPT SMALL G
+U+1D4F1           𝓱            \bscrh                                       MATHEMATICAL BOLD SCRIPT SMALL H
+U+1D4F2           𝓲            \bscri                                       MATHEMATICAL BOLD SCRIPT SMALL I
+U+1D4F3           𝓳            \bscrj                                       MATHEMATICAL BOLD SCRIPT SMALL J
+U+1D4F4           𝓴            \bscrk                                       MATHEMATICAL BOLD SCRIPT SMALL K
+U+1D4F5           𝓵            \bscrl                                       MATHEMATICAL BOLD SCRIPT SMALL L
+U+1D4F6           𝓶            \bscrm                                       MATHEMATICAL BOLD SCRIPT SMALL M
+U+1D4F7           𝓷            \bscrn                                       MATHEMATICAL BOLD SCRIPT SMALL N
+U+1D4F8           𝓸            \bscro                                       MATHEMATICAL BOLD SCRIPT SMALL O
+U+1D4F9           𝓹            \bscrp                                       MATHEMATICAL BOLD SCRIPT SMALL P
+U+1D4FA           𝓺            \bscrq                                       MATHEMATICAL BOLD SCRIPT SMALL Q
+U+1D4FB           𝓻            \bscrr                                       MATHEMATICAL BOLD SCRIPT SMALL R
+U+1D4FC           𝓼            \bscrs                                       MATHEMATICAL BOLD SCRIPT SMALL S
+U+1D4FD           𝓽            \bscrt                                       MATHEMATICAL BOLD SCRIPT SMALL T
+U+1D4FE           𝓾            \bscru                                       MATHEMATICAL BOLD SCRIPT SMALL U
+U+1D4FF           𝓿            \bscrv                                       MATHEMATICAL BOLD SCRIPT SMALL V
+U+1D500           𝔀            \bscrw                                       MATHEMATICAL BOLD SCRIPT SMALL W
+U+1D501           𝔁            \bscrx                                       MATHEMATICAL BOLD SCRIPT SMALL X
+U+1D502           𝔂            \bscry                                       MATHEMATICAL BOLD SCRIPT SMALL Y
+U+1D503           𝔃            \bscrz                                       MATHEMATICAL BOLD SCRIPT SMALL Z
+U+1D504           𝔄            \frakA                                       MATHEMATICAL FRAKTUR CAPITAL A
+U+1D505           𝔅            \frakB                                       MATHEMATICAL FRAKTUR CAPITAL B
+U+1D507           𝔇            \frakD                                       MATHEMATICAL FRAKTUR CAPITAL D
+U+1D508           𝔈            \frakE                                       MATHEMATICAL FRAKTUR CAPITAL E
+U+1D509           𝔉            \frakF                                       MATHEMATICAL FRAKTUR CAPITAL F
+U+1D50A           𝔊            \frakG                                       MATHEMATICAL FRAKTUR CAPITAL G
+U+1D50D           𝔍            \frakJ                                       MATHEMATICAL FRAKTUR CAPITAL J
+U+1D50E           𝔎            \frakK                                       MATHEMATICAL FRAKTUR CAPITAL K
+U+1D50F           𝔏            \frakL                                       MATHEMATICAL FRAKTUR CAPITAL L
+U+1D510           𝔐            \frakM                                       MATHEMATICAL FRAKTUR CAPITAL M
+U+1D511           𝔑            \frakN                                       MATHEMATICAL FRAKTUR CAPITAL N
+U+1D512           𝔒            \frakO                                       MATHEMATICAL FRAKTUR CAPITAL O
+U+1D513           𝔓            \frakP                                       MATHEMATICAL FRAKTUR CAPITAL P
+U+1D514           𝔔            \frakQ                                       MATHEMATICAL FRAKTUR CAPITAL Q
+U+1D516           𝔖            \frakS                                       MATHEMATICAL FRAKTUR CAPITAL S
+U+1D517           𝔗            \frakT                                       MATHEMATICAL FRAKTUR CAPITAL T
+U+1D518           𝔘            \frakU                                       MATHEMATICAL FRAKTUR CAPITAL U
+U+1D519           𝔙            \frakV                                       MATHEMATICAL FRAKTUR CAPITAL V
+U+1D51A           𝔚            \frakW                                       MATHEMATICAL FRAKTUR CAPITAL W
+U+1D51B           𝔛            \frakX                                       MATHEMATICAL FRAKTUR CAPITAL X
+U+1D51C           𝔜            \frakY                                       MATHEMATICAL FRAKTUR CAPITAL Y
+U+1D51E           𝔞            \fraka                                       MATHEMATICAL FRAKTUR SMALL A
+U+1D51F           𝔟            \frakb                                       MATHEMATICAL FRAKTUR SMALL B
+U+1D520           𝔠            \frakc                                       MATHEMATICAL FRAKTUR SMALL C
+U+1D521           𝔡            \frakd                                       MATHEMATICAL FRAKTUR SMALL D
+U+1D522           𝔢            \frake                                       MATHEMATICAL FRAKTUR SMALL E
+U+1D523           𝔣            \frakf                                       MATHEMATICAL FRAKTUR SMALL F
+U+1D524           𝔤            \frakg                                       MATHEMATICAL FRAKTUR SMALL G
+U+1D525           𝔥            \frakh                                       MATHEMATICAL FRAKTUR SMALL H
+U+1D526           𝔦            \fraki                                       MATHEMATICAL FRAKTUR SMALL I
+U+1D527           𝔧            \frakj                                       MATHEMATICAL FRAKTUR SMALL J
+U+1D528           𝔨            \frakk                                       MATHEMATICAL FRAKTUR SMALL K
+U+1D529           𝔩            \frakl                                       MATHEMATICAL FRAKTUR SMALL L
+U+1D52A           𝔪            \frakm                                       MATHEMATICAL FRAKTUR SMALL M
+U+1D52B           𝔫            \frakn                                       MATHEMATICAL FRAKTUR SMALL N
+U+1D52C           𝔬            \frako                                       MATHEMATICAL FRAKTUR SMALL O
+U+1D52D           𝔭            \frakp                                       MATHEMATICAL FRAKTUR SMALL P
+U+1D52E           𝔮            \frakq                                       MATHEMATICAL FRAKTUR SMALL Q
+U+1D52F           𝔯            \frakr                                       MATHEMATICAL FRAKTUR SMALL R
+U+1D530           𝔰            \fraks                                       MATHEMATICAL FRAKTUR SMALL S
+U+1D531           𝔱            \frakt                                       MATHEMATICAL FRAKTUR SMALL T
+U+1D532           𝔲            \fraku                                       MATHEMATICAL FRAKTUR SMALL U
+U+1D533           𝔳            \frakv                                       MATHEMATICAL FRAKTUR SMALL V
+U+1D534           𝔴            \frakw                                       MATHEMATICAL FRAKTUR SMALL W
+U+1D535           𝔵            \frakx                                       MATHEMATICAL FRAKTUR SMALL X
+U+1D536           𝔶            \fraky                                       MATHEMATICAL FRAKTUR SMALL Y
+U+1D537           𝔷            \frakz                                       MATHEMATICAL FRAKTUR SMALL Z
+U+1D538           𝔸            \bbA                                         MATHEMATICAL DOUBLE-STRUCK CAPITAL A
+U+1D539           𝔹            \bbB                                         MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+U+1D53B           𝔻            \bbD                                         MATHEMATICAL DOUBLE-STRUCK CAPITAL D
+U+1D53C           𝔼            \bbE                                         MATHEMATICAL DOUBLE-STRUCK CAPITAL E
+U+1D53D           𝔽            \bbF                                         MATHEMATICAL DOUBLE-STRUCK CAPITAL F
+U+1D53E           𝔾            \bbG                                         MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+U+1D540           𝕀            \bbI                                         MATHEMATICAL DOUBLE-STRUCK CAPITAL I
+U+1D541           𝕁            \bbJ                                         MATHEMATICAL DOUBLE-STRUCK CAPITAL J
+U+1D542           𝕂            \bbK                                         MATHEMATICAL DOUBLE-STRUCK CAPITAL K
+U+1D543           𝕃            \bbL                                         MATHEMATICAL DOUBLE-STRUCK CAPITAL L
+U+1D544           𝕄            \bbM                                         MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+U+1D546           𝕆            \bbO                                         MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+U+1D54A           𝕊            \bbS                                         MATHEMATICAL DOUBLE-STRUCK CAPITAL S
+U+1D54B           𝕋            \bbT                                         MATHEMATICAL DOUBLE-STRUCK CAPITAL T
+U+1D54C           𝕌            \bbU                                         MATHEMATICAL DOUBLE-STRUCK CAPITAL U
+U+1D54D           𝕍            \bbV                                         MATHEMATICAL DOUBLE-STRUCK CAPITAL V
+U+1D54E           𝕎            \bbW                                         MATHEMATICAL DOUBLE-STRUCK CAPITAL W
+U+1D54F           𝕏            \bbX                                         MATHEMATICAL DOUBLE-STRUCK CAPITAL X
+U+1D550           𝕐            \bbY                                         MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+U+1D552           𝕒            \bba                                         MATHEMATICAL DOUBLE-STRUCK SMALL A
+U+1D553           𝕓            \bbb                                         MATHEMATICAL DOUBLE-STRUCK SMALL B
+U+1D554           𝕔            \bbc                                         MATHEMATICAL DOUBLE-STRUCK SMALL C
+U+1D555           𝕕            \bbd                                         MATHEMATICAL DOUBLE-STRUCK SMALL D
+U+1D556           𝕖            \bbe                                         MATHEMATICAL DOUBLE-STRUCK SMALL E
+U+1D557           𝕗            \bbf                                         MATHEMATICAL DOUBLE-STRUCK SMALL F
+U+1D558           𝕘            \bbg                                         MATHEMATICAL DOUBLE-STRUCK SMALL G
+U+1D559           𝕙            \bbh                                         MATHEMATICAL DOUBLE-STRUCK SMALL H
+U+1D55A           𝕚            \bbi                                         MATHEMATICAL DOUBLE-STRUCK SMALL I
+U+1D55B           𝕛            \bbj                                         MATHEMATICAL DOUBLE-STRUCK SMALL J
+U+1D55C           𝕜            \bbk                                         MATHEMATICAL DOUBLE-STRUCK SMALL K
+U+1D55D           𝕝            \bbl                                         MATHEMATICAL DOUBLE-STRUCK SMALL L
+U+1D55E           𝕞            \bbm                                         MATHEMATICAL DOUBLE-STRUCK SMALL M
+U+1D55F           𝕟            \bbn                                         MATHEMATICAL DOUBLE-STRUCK SMALL N
+U+1D560           𝕠            \bbo                                         MATHEMATICAL DOUBLE-STRUCK SMALL O
+U+1D561           𝕡            \bbp                                         MATHEMATICAL DOUBLE-STRUCK SMALL P
+U+1D562           𝕢            \bbq                                         MATHEMATICAL DOUBLE-STRUCK SMALL Q
+U+1D563           𝕣            \bbr                                         MATHEMATICAL DOUBLE-STRUCK SMALL R
+U+1D564           𝕤            \bbs                                         MATHEMATICAL DOUBLE-STRUCK SMALL S
+U+1D565           𝕥            \bbt                                         MATHEMATICAL DOUBLE-STRUCK SMALL T
+U+1D566           𝕦            \bbu                                         MATHEMATICAL DOUBLE-STRUCK SMALL U
+U+1D567           𝕧            \bbv                                         MATHEMATICAL DOUBLE-STRUCK SMALL V
+U+1D568           𝕨            \bbw                                         MATHEMATICAL DOUBLE-STRUCK SMALL W
+U+1D569           𝕩            \bbx                                         MATHEMATICAL DOUBLE-STRUCK SMALL X
+U+1D56A           𝕪            \bby                                         MATHEMATICAL DOUBLE-STRUCK SMALL Y
+U+1D56B           𝕫            \bbz                                         MATHEMATICAL DOUBLE-STRUCK SMALL Z
+U+1D56C           𝕬            \bfrakA                                      MATHEMATICAL BOLD FRAKTUR CAPITAL A
+U+1D56D           𝕭            \bfrakB                                      MATHEMATICAL BOLD FRAKTUR CAPITAL B
+U+1D56E           𝕮            \bfrakC                                      MATHEMATICAL BOLD FRAKTUR CAPITAL C
+U+1D56F           𝕯            \bfrakD                                      MATHEMATICAL BOLD FRAKTUR CAPITAL D
+U+1D570           𝕰            \bfrakE                                      MATHEMATICAL BOLD FRAKTUR CAPITAL E
+U+1D571           𝕱            \bfrakF                                      MATHEMATICAL BOLD FRAKTUR CAPITAL F
+U+1D572           𝕲            \bfrakG                                      MATHEMATICAL BOLD FRAKTUR CAPITAL G
+U+1D573           𝕳            \bfrakH                                      MATHEMATICAL BOLD FRAKTUR CAPITAL H
+U+1D574           𝕴            \bfrakI                                      MATHEMATICAL BOLD FRAKTUR CAPITAL I
+U+1D575           𝕵            \bfrakJ                                      MATHEMATICAL BOLD FRAKTUR CAPITAL J
+U+1D576           𝕶            \bfrakK                                      MATHEMATICAL BOLD FRAKTUR CAPITAL K
+U+1D577           𝕷            \bfrakL                                      MATHEMATICAL BOLD FRAKTUR CAPITAL L
+U+1D578           𝕸            \bfrakM                                      MATHEMATICAL BOLD FRAKTUR CAPITAL M
+U+1D579           𝕹            \bfrakN                                      MATHEMATICAL BOLD FRAKTUR CAPITAL N
+U+1D57A           𝕺            \bfrakO                                      MATHEMATICAL BOLD FRAKTUR CAPITAL O
+U+1D57B           𝕻            \bfrakP                                      MATHEMATICAL BOLD FRAKTUR CAPITAL P
+U+1D57C           𝕼            \bfrakQ                                      MATHEMATICAL BOLD FRAKTUR CAPITAL Q
+U+1D57D           𝕽            \bfrakR                                      MATHEMATICAL BOLD FRAKTUR CAPITAL R
+U+1D57E           𝕾            \bfrakS                                      MATHEMATICAL BOLD FRAKTUR CAPITAL S
+U+1D57F           𝕿            \bfrakT                                      MATHEMATICAL BOLD FRAKTUR CAPITAL T
+U+1D580           𝖀            \bfrakU                                      MATHEMATICAL BOLD FRAKTUR CAPITAL U
+U+1D581           𝖁            \bfrakV                                      MATHEMATICAL BOLD FRAKTUR CAPITAL V
+U+1D582           𝖂            \bfrakW                                      MATHEMATICAL BOLD FRAKTUR CAPITAL W
+U+1D583           𝖃            \bfrakX                                      MATHEMATICAL BOLD FRAKTUR CAPITAL X
+U+1D584           𝖄            \bfrakY                                      MATHEMATICAL BOLD FRAKTUR CAPITAL Y
+U+1D585           𝖅            \bfrakZ                                      MATHEMATICAL BOLD FRAKTUR CAPITAL Z
+U+1D586           𝖆            \bfraka                                      MATHEMATICAL BOLD FRAKTUR SMALL A
+U+1D587           𝖇            \bfrakb                                      MATHEMATICAL BOLD FRAKTUR SMALL B
+U+1D588           𝖈            \bfrakc                                      MATHEMATICAL BOLD FRAKTUR SMALL C
+U+1D589           𝖉            \bfrakd                                      MATHEMATICAL BOLD FRAKTUR SMALL D
+U+1D58A           𝖊            \bfrake                                      MATHEMATICAL BOLD FRAKTUR SMALL E
+U+1D58B           𝖋            \bfrakf                                      MATHEMATICAL BOLD FRAKTUR SMALL F
+U+1D58C           𝖌            \bfrakg                                      MATHEMATICAL BOLD FRAKTUR SMALL G
+U+1D58D           𝖍            \bfrakh                                      MATHEMATICAL BOLD FRAKTUR SMALL H
+U+1D58E           𝖎            \bfraki                                      MATHEMATICAL BOLD FRAKTUR SMALL I
+U+1D58F           𝖏            \bfrakj                                      MATHEMATICAL BOLD FRAKTUR SMALL J
+U+1D590           𝖐            \bfrakk                                      MATHEMATICAL BOLD FRAKTUR SMALL K
+U+1D591           𝖑            \bfrakl                                      MATHEMATICAL BOLD FRAKTUR SMALL L
+U+1D592           𝖒            \bfrakm                                      MATHEMATICAL BOLD FRAKTUR SMALL M
+U+1D593           𝖓            \bfrakn                                      MATHEMATICAL BOLD FRAKTUR SMALL N
+U+1D594           𝖔            \bfrako                                      MATHEMATICAL BOLD FRAKTUR SMALL O
+U+1D595           𝖕            \bfrakp                                      MATHEMATICAL BOLD FRAKTUR SMALL P
+U+1D596           𝖖            \bfrakq                                      MATHEMATICAL BOLD FRAKTUR SMALL Q
+U+1D597           𝖗            \bfrakr                                      MATHEMATICAL BOLD FRAKTUR SMALL R
+U+1D598           𝖘            \bfraks                                      MATHEMATICAL BOLD FRAKTUR SMALL S
+U+1D599           𝖙            \bfrakt                                      MATHEMATICAL BOLD FRAKTUR SMALL T
+U+1D59A           𝖚            \bfraku                                      MATHEMATICAL BOLD FRAKTUR SMALL U
+U+1D59B           𝖛            \bfrakv                                      MATHEMATICAL BOLD FRAKTUR SMALL V
+U+1D59C           𝖜            \bfrakw                                      MATHEMATICAL BOLD FRAKTUR SMALL W
+U+1D59D           𝖝            \bfrakx                                      MATHEMATICAL BOLD FRAKTUR SMALL X
+U+1D59E           𝖞            \bfraky                                      MATHEMATICAL BOLD FRAKTUR SMALL Y
+U+1D59F           𝖟            \bfrakz                                      MATHEMATICAL BOLD FRAKTUR SMALL Z
+U+1D5A0           𝖠            \sansA                                       MATHEMATICAL SANS-SERIF CAPITAL A
+U+1D5A1           𝖡            \sansB                                       MATHEMATICAL SANS-SERIF CAPITAL B
+U+1D5A2           𝖢            \sansC                                       MATHEMATICAL SANS-SERIF CAPITAL C
+U+1D5A3           𝖣            \sansD                                       MATHEMATICAL SANS-SERIF CAPITAL D
+U+1D5A4           𝖤            \sansE                                       MATHEMATICAL SANS-SERIF CAPITAL E
+U+1D5A5           𝖥            \sansF                                       MATHEMATICAL SANS-SERIF CAPITAL F
+U+1D5A6           𝖦            \sansG                                       MATHEMATICAL SANS-SERIF CAPITAL G
+U+1D5A7           𝖧            \sansH                                       MATHEMATICAL SANS-SERIF CAPITAL H
+U+1D5A8           𝖨            \sansI                                       MATHEMATICAL SANS-SERIF CAPITAL I
+U+1D5A9           𝖩            \sansJ                                       MATHEMATICAL SANS-SERIF CAPITAL J
+U+1D5AA           𝖪            \sansK                                       MATHEMATICAL SANS-SERIF CAPITAL K
+U+1D5AB           𝖫            \sansL                                       MATHEMATICAL SANS-SERIF CAPITAL L
+U+1D5AC           𝖬            \sansM                                       MATHEMATICAL SANS-SERIF CAPITAL M
+U+1D5AD           𝖭            \sansN                                       MATHEMATICAL SANS-SERIF CAPITAL N
+U+1D5AE           𝖮            \sansO                                       MATHEMATICAL SANS-SERIF CAPITAL O
+U+1D5AF           𝖯            \sansP                                       MATHEMATICAL SANS-SERIF CAPITAL P
+U+1D5B0           𝖰            \sansQ                                       MATHEMATICAL SANS-SERIF CAPITAL Q
+U+1D5B1           𝖱            \sansR                                       MATHEMATICAL SANS-SERIF CAPITAL R
+U+1D5B2           𝖲            \sansS                                       MATHEMATICAL SANS-SERIF CAPITAL S
+U+1D5B3           𝖳            \sansT                                       MATHEMATICAL SANS-SERIF CAPITAL T
+U+1D5B4           𝖴            \sansU                                       MATHEMATICAL SANS-SERIF CAPITAL U
+U+1D5B5           𝖵            \sansV                                       MATHEMATICAL SANS-SERIF CAPITAL V
+U+1D5B6           𝖶            \sansW                                       MATHEMATICAL SANS-SERIF CAPITAL W
+U+1D5B7           𝖷            \sansX                                       MATHEMATICAL SANS-SERIF CAPITAL X
+U+1D5B8           𝖸            \sansY                                       MATHEMATICAL SANS-SERIF CAPITAL Y
+U+1D5B9           𝖹            \sansZ                                       MATHEMATICAL SANS-SERIF CAPITAL Z
+U+1D5BA           𝖺            \sansa                                       MATHEMATICAL SANS-SERIF SMALL A
+U+1D5BB           𝖻            \sansb                                       MATHEMATICAL SANS-SERIF SMALL B
+U+1D5BC           𝖼            \sansc                                       MATHEMATICAL SANS-SERIF SMALL C
+U+1D5BD           𝖽            \sansd                                       MATHEMATICAL SANS-SERIF SMALL D
+U+1D5BE           𝖾            \sanse                                       MATHEMATICAL SANS-SERIF SMALL E
+U+1D5BF           𝖿            \sansf                                       MATHEMATICAL SANS-SERIF SMALL F
+U+1D5C0           𝗀            \sansg                                       MATHEMATICAL SANS-SERIF SMALL G
+U+1D5C1           𝗁            \sansh                                       MATHEMATICAL SANS-SERIF SMALL H
+U+1D5C2           𝗂            \sansi                                       MATHEMATICAL SANS-SERIF SMALL I
+U+1D5C3           𝗃            \sansj                                       MATHEMATICAL SANS-SERIF SMALL J
+U+1D5C4           𝗄            \sansk                                       MATHEMATICAL SANS-SERIF SMALL K
+U+1D5C5           𝗅            \sansl                                       MATHEMATICAL SANS-SERIF SMALL L
+U+1D5C6           𝗆            \sansm                                       MATHEMATICAL SANS-SERIF SMALL M
+U+1D5C7           𝗇            \sansn                                       MATHEMATICAL SANS-SERIF SMALL N
+U+1D5C8           𝗈            \sanso                                       MATHEMATICAL SANS-SERIF SMALL O
+U+1D5C9           𝗉            \sansp                                       MATHEMATICAL SANS-SERIF SMALL P
+U+1D5CA           𝗊            \sansq                                       MATHEMATICAL SANS-SERIF SMALL Q
+U+1D5CB           𝗋            \sansr                                       MATHEMATICAL SANS-SERIF SMALL R
+U+1D5CC           𝗌            \sanss                                       MATHEMATICAL SANS-SERIF SMALL S
+U+1D5CD           𝗍            \sanst                                       MATHEMATICAL SANS-SERIF SMALL T
+U+1D5CE           𝗎            \sansu                                       MATHEMATICAL SANS-SERIF SMALL U
+U+1D5CF           𝗏            \sansv                                       MATHEMATICAL SANS-SERIF SMALL V
+U+1D5D0           𝗐            \sansw                                       MATHEMATICAL SANS-SERIF SMALL W
+U+1D5D1           𝗑            \sansx                                       MATHEMATICAL SANS-SERIF SMALL X
+U+1D5D2           𝗒            \sansy                                       MATHEMATICAL SANS-SERIF SMALL Y
+U+1D5D3           𝗓            \sansz                                       MATHEMATICAL SANS-SERIF SMALL Z
+U+1D5D4           𝗔            \bsansA                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL A
+U+1D5D5           𝗕            \bsansB                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL B
+U+1D5D6           𝗖            \bsansC                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL C
+U+1D5D7           𝗗            \bsansD                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL D
+U+1D5D8           𝗘            \bsansE                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL E
+U+1D5D9           𝗙            \bsansF                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL F
+U+1D5DA           𝗚            \bsansG                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL G
+U+1D5DB           𝗛            \bsansH                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL H
+U+1D5DC           𝗜            \bsansI                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL I
+U+1D5DD           𝗝            \bsansJ                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL J
+U+1D5DE           𝗞            \bsansK                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL K
+U+1D5DF           𝗟            \bsansL                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL L
+U+1D5E0           𝗠            \bsansM                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL M
+U+1D5E1           𝗡            \bsansN                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL N
+U+1D5E2           𝗢            \bsansO                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL O
+U+1D5E3           𝗣            \bsansP                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL P
+U+1D5E4           𝗤            \bsansQ                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
+U+1D5E5           𝗥            \bsansR                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL R
+U+1D5E6           𝗦            \bsansS                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL S
+U+1D5E7           𝗧            \bsansT                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL T
+U+1D5E8           𝗨            \bsansU                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL U
+U+1D5E9           𝗩            \bsansV                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL V
+U+1D5EA           𝗪            \bsansW                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL W
+U+1D5EB           𝗫            \bsansX                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL X
+U+1D5EC           𝗬            \bsansY                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
+U+1D5ED           𝗭            \bsansZ                                      MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
+U+1D5EE           𝗮            \bsansa                                      MATHEMATICAL SANS-SERIF BOLD SMALL A
+U+1D5EF           𝗯            \bsansb                                      MATHEMATICAL SANS-SERIF BOLD SMALL B
+U+1D5F0           𝗰            \bsansc                                      MATHEMATICAL SANS-SERIF BOLD SMALL C
+U+1D5F1           𝗱            \bsansd                                      MATHEMATICAL SANS-SERIF BOLD SMALL D
+U+1D5F2           𝗲            \bsanse                                      MATHEMATICAL SANS-SERIF BOLD SMALL E
+U+1D5F3           𝗳            \bsansf                                      MATHEMATICAL SANS-SERIF BOLD SMALL F
+U+1D5F4           𝗴            \bsansg                                      MATHEMATICAL SANS-SERIF BOLD SMALL G
+U+1D5F5           𝗵            \bsansh                                      MATHEMATICAL SANS-SERIF BOLD SMALL H
+U+1D5F6           𝗶            \bsansi                                      MATHEMATICAL SANS-SERIF BOLD SMALL I
+U+1D5F7           𝗷            \bsansj                                      MATHEMATICAL SANS-SERIF BOLD SMALL J
+U+1D5F8           𝗸            \bsansk                                      MATHEMATICAL SANS-SERIF BOLD SMALL K
+U+1D5F9           𝗹            \bsansl                                      MATHEMATICAL SANS-SERIF BOLD SMALL L
+U+1D5FA           𝗺            \bsansm                                      MATHEMATICAL SANS-SERIF BOLD SMALL M
+U+1D5FB           𝗻            \bsansn                                      MATHEMATICAL SANS-SERIF BOLD SMALL N
+U+1D5FC           𝗼            \bsanso                                      MATHEMATICAL SANS-SERIF BOLD SMALL O
+U+1D5FD           𝗽            \bsansp                                      MATHEMATICAL SANS-SERIF BOLD SMALL P
+U+1D5FE           𝗾            \bsansq                                      MATHEMATICAL SANS-SERIF BOLD SMALL Q
+U+1D5FF           𝗿            \bsansr                                      MATHEMATICAL SANS-SERIF BOLD SMALL R
+U+1D600           𝘀            \bsanss                                      MATHEMATICAL SANS-SERIF BOLD SMALL S
+U+1D601           𝘁            \bsanst                                      MATHEMATICAL SANS-SERIF BOLD SMALL T
+U+1D602           𝘂            \bsansu                                      MATHEMATICAL SANS-SERIF BOLD SMALL U
+U+1D603           𝘃            \bsansv                                      MATHEMATICAL SANS-SERIF BOLD SMALL V
+U+1D604           𝘄            \bsansw                                      MATHEMATICAL SANS-SERIF BOLD SMALL W
+U+1D605           𝘅            \bsansx                                      MATHEMATICAL SANS-SERIF BOLD SMALL X
+U+1D606           𝘆            \bsansy                                      MATHEMATICAL SANS-SERIF BOLD SMALL Y
+U+1D607           𝘇            \bsansz                                      MATHEMATICAL SANS-SERIF BOLD SMALL Z
+U+1D608           𝘈            \isansA                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
+U+1D609           𝘉            \isansB                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
+U+1D60A           𝘊            \isansC                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
+U+1D60B           𝘋            \isansD                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
+U+1D60C           𝘌            \isansE                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
+U+1D60D           𝘍            \isansF                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
+U+1D60E           𝘎            \isansG                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
+U+1D60F           𝘏            \isansH                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
+U+1D610           𝘐            \isansI                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
+U+1D611           𝘑            \isansJ                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
+U+1D612           𝘒            \isansK                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
+U+1D613           𝘓            \isansL                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
+U+1D614           𝘔            \isansM                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
+U+1D615           𝘕            \isansN                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
+U+1D616           𝘖            \isansO                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
+U+1D617           𝘗            \isansP                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
+U+1D618           𝘘            \isansQ                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
+U+1D619           𝘙            \isansR                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
+U+1D61A           𝘚            \isansS                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
+U+1D61B           𝘛            \isansT                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
+U+1D61C           𝘜            \isansU                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
+U+1D61D           𝘝            \isansV                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
+U+1D61E           𝘞            \isansW                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
+U+1D61F           𝘟            \isansX                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
+U+1D620           𝘠            \isansY                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
+U+1D621           𝘡            \isansZ                                      MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
+U+1D622           𝘢            \isansa                                      MATHEMATICAL SANS-SERIF ITALIC SMALL A
+U+1D623           𝘣            \isansb                                      MATHEMATICAL SANS-SERIF ITALIC SMALL B
+U+1D624           𝘤            \isansc                                      MATHEMATICAL SANS-SERIF ITALIC SMALL C
+U+1D625           𝘥            \isansd                                      MATHEMATICAL SANS-SERIF ITALIC SMALL D
+U+1D626           𝘦            \isanse                                      MATHEMATICAL SANS-SERIF ITALIC SMALL E
+U+1D627           𝘧            \isansf                                      MATHEMATICAL SANS-SERIF ITALIC SMALL F
+U+1D628           𝘨            \isansg                                      MATHEMATICAL SANS-SERIF ITALIC SMALL G
+U+1D629           𝘩            \isansh                                      MATHEMATICAL SANS-SERIF ITALIC SMALL H
+U+1D62A           𝘪            \isansi                                      MATHEMATICAL SANS-SERIF ITALIC SMALL I
+U+1D62B           𝘫            \isansj                                      MATHEMATICAL SANS-SERIF ITALIC SMALL J
+U+1D62C           𝘬            \isansk                                      MATHEMATICAL SANS-SERIF ITALIC SMALL K
+U+1D62D           𝘭            \isansl                                      MATHEMATICAL SANS-SERIF ITALIC SMALL L
+U+1D62E           𝘮            \isansm                                      MATHEMATICAL SANS-SERIF ITALIC SMALL M
+U+1D62F           𝘯            \isansn                                      MATHEMATICAL SANS-SERIF ITALIC SMALL N
+U+1D630           𝘰            \isanso                                      MATHEMATICAL SANS-SERIF ITALIC SMALL O
+U+1D631           𝘱            \isansp                                      MATHEMATICAL SANS-SERIF ITALIC SMALL P
+U+1D632           𝘲            \isansq                                      MATHEMATICAL SANS-SERIF ITALIC SMALL Q
+U+1D633           𝘳            \isansr                                      MATHEMATICAL SANS-SERIF ITALIC SMALL R
+U+1D634           𝘴            \isanss                                      MATHEMATICAL SANS-SERIF ITALIC SMALL S
+U+1D635           𝘵            \isanst                                      MATHEMATICAL SANS-SERIF ITALIC SMALL T
+U+1D636           𝘶            \isansu                                      MATHEMATICAL SANS-SERIF ITALIC SMALL U
+U+1D637           𝘷            \isansv                                      MATHEMATICAL SANS-SERIF ITALIC SMALL V
+U+1D638           𝘸            \isansw                                      MATHEMATICAL SANS-SERIF ITALIC SMALL W
+U+1D639           𝘹            \isansx                                      MATHEMATICAL SANS-SERIF ITALIC SMALL X
+U+1D63A           𝘺            \isansy                                      MATHEMATICAL SANS-SERIF ITALIC SMALL Y
+U+1D63B           𝘻            \isansz                                      MATHEMATICAL SANS-SERIF ITALIC SMALL Z
+U+1D63C           𝘼            \bisansA                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
+U+1D63D           𝘽            \bisansB                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
+U+1D63E           𝘾            \bisansC                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
+U+1D63F           𝘿            \bisansD                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
+U+1D640           𝙀            \bisansE                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
+U+1D641           𝙁            \bisansF                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
+U+1D642           𝙂            \bisansG                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
+U+1D643           𝙃            \bisansH                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
+U+1D644           𝙄            \bisansI                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
+U+1D645           𝙅            \bisansJ                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
+U+1D646           𝙆            \bisansK                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
+U+1D647           𝙇            \bisansL                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
+U+1D648           𝙈            \bisansM                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
+U+1D649           𝙉            \bisansN                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
+U+1D64A           𝙊            \bisansO                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
+U+1D64B           𝙋            \bisansP                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
+U+1D64C           𝙌            \bisansQ                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
+U+1D64D           𝙍            \bisansR                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
+U+1D64E           𝙎            \bisansS                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
+U+1D64F           𝙏            \bisansT                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
+U+1D650           𝙐            \bisansU                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
+U+1D651           𝙑            \bisansV                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
+U+1D652           𝙒            \bisansW                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
+U+1D653           𝙓            \bisansX                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
+U+1D654           𝙔            \bisansY                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
+U+1D655           𝙕            \bisansZ                                     MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
+U+1D656           𝙖            \bisansa                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A
+U+1D657           𝙗            \bisansb                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B
+U+1D658           𝙘            \bisansc                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C
+U+1D659           𝙙            \bisansd                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D
+U+1D65A           𝙚            \bisanse                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E
+U+1D65B           𝙛            \bisansf                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F
+U+1D65C           𝙜            \bisansg                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G
+U+1D65D           𝙝            \bisansh                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H
+U+1D65E           𝙞            \bisansi                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I
+U+1D65F           𝙟            \bisansj                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
+U+1D660           𝙠            \bisansk                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K
+U+1D661           𝙡            \bisansl                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L
+U+1D662           𝙢            \bisansm                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M
+U+1D663           𝙣            \bisansn                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N
+U+1D664           𝙤            \bisanso                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O
+U+1D665           𝙥            \bisansp                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P
+U+1D666           𝙦            \bisansq                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q
+U+1D667           𝙧            \bisansr                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R
+U+1D668           𝙨            \bisanss                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S
+U+1D669           𝙩            \bisanst                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T
+U+1D66A           𝙪            \bisansu                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U
+U+1D66B           𝙫            \bisansv                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V
+U+1D66C           𝙬            \bisansw                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W
+U+1D66D           𝙭            \bisansx                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X
+U+1D66E           𝙮            \bisansy                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y
+U+1D66F           𝙯            \bisansz                                     MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
+U+1D670           𝙰            \ttA                                         MATHEMATICAL MONOSPACE CAPITAL A
+U+1D671           𝙱            \ttB                                         MATHEMATICAL MONOSPACE CAPITAL B
+U+1D672           𝙲            \ttC                                         MATHEMATICAL MONOSPACE CAPITAL C
+U+1D673           𝙳            \ttD                                         MATHEMATICAL MONOSPACE CAPITAL D
+U+1D674           𝙴            \ttE                                         MATHEMATICAL MONOSPACE CAPITAL E
+U+1D675           𝙵            \ttF                                         MATHEMATICAL MONOSPACE CAPITAL F
+U+1D676           𝙶            \ttG                                         MATHEMATICAL MONOSPACE CAPITAL G
+U+1D677           𝙷            \ttH                                         MATHEMATICAL MONOSPACE CAPITAL H
+U+1D678           𝙸            \ttI                                         MATHEMATICAL MONOSPACE CAPITAL I
+U+1D679           𝙹            \ttJ                                         MATHEMATICAL MONOSPACE CAPITAL J
+U+1D67A           𝙺            \ttK                                         MATHEMATICAL MONOSPACE CAPITAL K
+U+1D67B           𝙻            \ttL                                         MATHEMATICAL MONOSPACE CAPITAL L
+U+1D67C           𝙼            \ttM                                         MATHEMATICAL MONOSPACE CAPITAL M
+U+1D67D           𝙽            \ttN                                         MATHEMATICAL MONOSPACE CAPITAL N
+U+1D67E           𝙾            \ttO                                         MATHEMATICAL MONOSPACE CAPITAL O
+U+1D67F           𝙿            \ttP                                         MATHEMATICAL MONOSPACE CAPITAL P
+U+1D680           𝚀            \ttQ                                         MATHEMATICAL MONOSPACE CAPITAL Q
+U+1D681           𝚁            \ttR                                         MATHEMATICAL MONOSPACE CAPITAL R
+U+1D682           𝚂            \ttS                                         MATHEMATICAL MONOSPACE CAPITAL S
+U+1D683           𝚃            \ttT                                         MATHEMATICAL MONOSPACE CAPITAL T
+U+1D684           𝚄            \ttU                                         MATHEMATICAL MONOSPACE CAPITAL U
+U+1D685           𝚅            \ttV                                         MATHEMATICAL MONOSPACE CAPITAL V
+U+1D686           𝚆            \ttW                                         MATHEMATICAL MONOSPACE CAPITAL W
+U+1D687           𝚇            \ttX                                         MATHEMATICAL MONOSPACE CAPITAL X
+U+1D688           𝚈            \ttY                                         MATHEMATICAL MONOSPACE CAPITAL Y
+U+1D689           𝚉            \ttZ                                         MATHEMATICAL MONOSPACE CAPITAL Z
+U+1D68A           𝚊            \tta                                         MATHEMATICAL MONOSPACE SMALL A
+U+1D68B           𝚋            \ttb                                         MATHEMATICAL MONOSPACE SMALL B
+U+1D68C           𝚌            \ttc                                         MATHEMATICAL MONOSPACE SMALL C
+U+1D68D           𝚍            \ttd                                         MATHEMATICAL MONOSPACE SMALL D
+U+1D68E           𝚎            \tte                                         MATHEMATICAL MONOSPACE SMALL E
+U+1D68F           𝚏            \ttf                                         MATHEMATICAL MONOSPACE SMALL F
+U+1D690           𝚐            \ttg                                         MATHEMATICAL MONOSPACE SMALL G
+U+1D691           𝚑            \tth                                         MATHEMATICAL MONOSPACE SMALL H
+U+1D692           𝚒            \tti                                         MATHEMATICAL MONOSPACE SMALL I
+U+1D693           𝚓            \ttj                                         MATHEMATICAL MONOSPACE SMALL J
+U+1D694           𝚔            \ttk                                         MATHEMATICAL MONOSPACE SMALL K
+U+1D695           𝚕            \ttl                                         MATHEMATICAL MONOSPACE SMALL L
+U+1D696           𝚖            \ttm                                         MATHEMATICAL MONOSPACE SMALL M
+U+1D697           𝚗            \ttn                                         MATHEMATICAL MONOSPACE SMALL N
+U+1D698           𝚘            \tto                                         MATHEMATICAL MONOSPACE SMALL O
+U+1D699           𝚙            \ttp                                         MATHEMATICAL MONOSPACE SMALL P
+U+1D69A           𝚚            \ttq                                         MATHEMATICAL MONOSPACE SMALL Q
+U+1D69B           𝚛            \ttr                                         MATHEMATICAL MONOSPACE SMALL R
+U+1D69C           𝚜            \tts                                         MATHEMATICAL MONOSPACE SMALL S
+U+1D69D           𝚝            \ttt                                         MATHEMATICAL MONOSPACE SMALL T
+U+1D69E           𝚞            \ttu                                         MATHEMATICAL MONOSPACE SMALL U
+U+1D69F           𝚟            \ttv                                         MATHEMATICAL MONOSPACE SMALL V
+U+1D6A0           𝚠            \ttw                                         MATHEMATICAL MONOSPACE SMALL W
+U+1D6A1           𝚡            \ttx                                         MATHEMATICAL MONOSPACE SMALL X
+U+1D6A2           𝚢            \tty                                         MATHEMATICAL MONOSPACE SMALL Y
+U+1D6A3           𝚣            \ttz                                         MATHEMATICAL MONOSPACE SMALL Z
+U+1D6A4           𝚤            \itimath                                     MATHEMATICAL ITALIC SMALL DOTLESS I
+U+1D6A5           𝚥            \itjmath                                     MATHEMATICAL ITALIC SMALL DOTLESS J
+U+1D6A8           𝚨            \bfAlpha                                     MATHEMATICAL BOLD CAPITAL ALPHA
+U+1D6A9           𝚩            \bfBeta                                      MATHEMATICAL BOLD CAPITAL BETA
+U+1D6AA           𝚪            \bfGamma                                     MATHEMATICAL BOLD CAPITAL GAMMA
+U+1D6AB           𝚫            \bfDelta                                     MATHEMATICAL BOLD CAPITAL DELTA
+U+1D6AC           𝚬            \bfEpsilon                                   MATHEMATICAL BOLD CAPITAL EPSILON
+U+1D6AD           𝚭            \bfZeta                                      MATHEMATICAL BOLD CAPITAL ZETA
+U+1D6AE           𝚮            \bfEta                                       MATHEMATICAL BOLD CAPITAL ETA
+U+1D6AF           𝚯            \bfTheta                                     MATHEMATICAL BOLD CAPITAL THETA
+U+1D6B0           𝚰            \bfIota                                      MATHEMATICAL BOLD CAPITAL IOTA
+U+1D6B1           𝚱            \bfKappa                                     MATHEMATICAL BOLD CAPITAL KAPPA
+U+1D6B2           𝚲            \bfLambda                                    MATHEMATICAL BOLD CAPITAL LAMDA
+U+1D6B3           𝚳            \bfMu                                        MATHEMATICAL BOLD CAPITAL MU
+U+1D6B4           𝚴            \bfNu                                        MATHEMATICAL BOLD CAPITAL NU
+U+1D6B5           𝚵            \bfXi                                        MATHEMATICAL BOLD CAPITAL XI
+U+1D6B6           𝚶            \bfOmicron                                   MATHEMATICAL BOLD CAPITAL OMICRON
+U+1D6B7           𝚷            \bfPi                                        MATHEMATICAL BOLD CAPITAL PI
+U+1D6B8           𝚸            \bfRho                                       MATHEMATICAL BOLD CAPITAL RHO
+U+1D6B9           𝚹            \bfvarTheta                                  MATHEMATICAL BOLD CAPITAL THETA SYMBOL
+U+1D6BA           𝚺            \bfSigma                                     MATHEMATICAL BOLD CAPITAL SIGMA
+U+1D6BB           𝚻            \bfTau                                       MATHEMATICAL BOLD CAPITAL TAU
+U+1D6BC           𝚼            \bfUpsilon                                   MATHEMATICAL BOLD CAPITAL UPSILON
+U+1D6BD           𝚽            \bfPhi                                       MATHEMATICAL BOLD CAPITAL PHI
+U+1D6BE           𝚾            \bfChi                                       MATHEMATICAL BOLD CAPITAL CHI
+U+1D6BF           𝚿            \bfPsi                                       MATHEMATICAL BOLD CAPITAL PSI
+U+1D6C0           𝛀            \bfOmega                                     MATHEMATICAL BOLD CAPITAL OMEGA
+U+1D6C1           𝛁            \bfnabla                                     MATHEMATICAL BOLD NABLA
+U+1D6C2           𝛂            \bfalpha                                     MATHEMATICAL BOLD SMALL ALPHA
+U+1D6C3           𝛃            \bfbeta                                      MATHEMATICAL BOLD SMALL BETA
+U+1D6C4           𝛄            \bfgamma                                     MATHEMATICAL BOLD SMALL GAMMA
+U+1D6C5           𝛅            \bfdelta                                     MATHEMATICAL BOLD SMALL DELTA
+U+1D6C6           𝛆            \bfepsilon                                   MATHEMATICAL BOLD SMALL EPSILON
+U+1D6C7           𝛇            \bfzeta                                      MATHEMATICAL BOLD SMALL ZETA
+U+1D6C8           𝛈            \bfeta                                       MATHEMATICAL BOLD SMALL ETA
+U+1D6C9           𝛉            \bftheta                                     MATHEMATICAL BOLD SMALL THETA
+U+1D6CA           𝛊            \bfiota                                      MATHEMATICAL BOLD SMALL IOTA
+U+1D6CB           𝛋            \bfkappa                                     MATHEMATICAL BOLD SMALL KAPPA
+U+1D6CC           𝛌            \bflambda                                    MATHEMATICAL BOLD SMALL LAMDA
+U+1D6CD           𝛍            \bfmu                                        MATHEMATICAL BOLD SMALL MU
+U+1D6CE           𝛎            \bfnu                                        MATHEMATICAL BOLD SMALL NU
+U+1D6CF           𝛏            \bfxi                                        MATHEMATICAL BOLD SMALL XI
+U+1D6D0           𝛐            \bfomicron                                   MATHEMATICAL BOLD SMALL OMICRON
+U+1D6D1           𝛑            \bfpi                                        MATHEMATICAL BOLD SMALL PI
+U+1D6D2           𝛒            \bfrho                                       MATHEMATICAL BOLD SMALL RHO
+U+1D6D3           𝛓            \bfvarsigma                                  MATHEMATICAL BOLD SMALL FINAL SIGMA
+U+1D6D4           𝛔            \bfsigma                                     MATHEMATICAL BOLD SMALL SIGMA
+U+1D6D5           𝛕            \bftau                                       MATHEMATICAL BOLD SMALL TAU
+U+1D6D6           𝛖            \bfupsilon                                   MATHEMATICAL BOLD SMALL UPSILON
+U+1D6D7           𝛗            \bfvarphi                                    MATHEMATICAL BOLD SMALL PHI
+U+1D6D8           𝛘            \bfchi                                       MATHEMATICAL BOLD SMALL CHI
+U+1D6D9           𝛙            \bfpsi                                       MATHEMATICAL BOLD SMALL PSI
+U+1D6DA           𝛚            \bfomega                                     MATHEMATICAL BOLD SMALL OMEGA
+U+1D6DB           𝛛            \bfpartial                                   MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+U+1D6DC           𝛜            \bfvarepsilon                                MATHEMATICAL BOLD EPSILON SYMBOL
+U+1D6DD           𝛝            \bfvartheta                                  MATHEMATICAL BOLD THETA SYMBOL
+U+1D6DE           𝛞            \bfvarkappa                                  MATHEMATICAL BOLD KAPPA SYMBOL
+U+1D6DF           𝛟            \bfphi                                       MATHEMATICAL BOLD PHI SYMBOL
+U+1D6E0           𝛠            \bfvarrho                                    MATHEMATICAL BOLD RHO SYMBOL
+U+1D6E1           𝛡            \bfvarpi                                     MATHEMATICAL BOLD PI SYMBOL
+U+1D6E2           𝛢            \itAlpha                                     MATHEMATICAL ITALIC CAPITAL ALPHA
+U+1D6E3           𝛣            \itBeta                                      MATHEMATICAL ITALIC CAPITAL BETA
+U+1D6E4           𝛤            \itGamma                                     MATHEMATICAL ITALIC CAPITAL GAMMA
+U+1D6E5           𝛥            \itDelta                                     MATHEMATICAL ITALIC CAPITAL DELTA
+U+1D6E6           𝛦            \itEpsilon                                   MATHEMATICAL ITALIC CAPITAL EPSILON
+U+1D6E7           𝛧            \itZeta                                      MATHEMATICAL ITALIC CAPITAL ZETA
+U+1D6E8           𝛨            \itEta                                       MATHEMATICAL ITALIC CAPITAL ETA
+U+1D6E9           𝛩            \itTheta                                     MATHEMATICAL ITALIC CAPITAL THETA
+U+1D6EA           𝛪            \itIota                                      MATHEMATICAL ITALIC CAPITAL IOTA
+U+1D6EB           𝛫            \itKappa                                     MATHEMATICAL ITALIC CAPITAL KAPPA
+U+1D6EC           𝛬            \itLambda                                    MATHEMATICAL ITALIC CAPITAL LAMDA
+U+1D6ED           𝛭            \itMu                                        MATHEMATICAL ITALIC CAPITAL MU
+U+1D6EE           𝛮            \itNu                                        MATHEMATICAL ITALIC CAPITAL NU
+U+1D6EF           𝛯            \itXi                                        MATHEMATICAL ITALIC CAPITAL XI
+U+1D6F0           𝛰            \itOmicron                                   MATHEMATICAL ITALIC CAPITAL OMICRON
+U+1D6F1           𝛱            \itPi                                        MATHEMATICAL ITALIC CAPITAL PI
+U+1D6F2           𝛲            \itRho                                       MATHEMATICAL ITALIC CAPITAL RHO
+U+1D6F3           𝛳            \itvarTheta                                  MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
+U+1D6F4           𝛴            \itSigma                                     MATHEMATICAL ITALIC CAPITAL SIGMA
+U+1D6F5           𝛵            \itTau                                       MATHEMATICAL ITALIC CAPITAL TAU
+U+1D6F6           𝛶            \itUpsilon                                   MATHEMATICAL ITALIC CAPITAL UPSILON
+U+1D6F7           𝛷            \itPhi                                       MATHEMATICAL ITALIC CAPITAL PHI
+U+1D6F8           𝛸            \itChi                                       MATHEMATICAL ITALIC CAPITAL CHI
+U+1D6F9           𝛹            \itPsi                                       MATHEMATICAL ITALIC CAPITAL PSI
+U+1D6FA           𝛺            \itOmega                                     MATHEMATICAL ITALIC CAPITAL OMEGA
+U+1D6FB           𝛻            \itnabla                                     MATHEMATICAL ITALIC NABLA
+U+1D6FC           𝛼            \italpha                                     MATHEMATICAL ITALIC SMALL ALPHA
+U+1D6FD           𝛽            \itbeta                                      MATHEMATICAL ITALIC SMALL BETA
+U+1D6FE           𝛾            \itgamma                                     MATHEMATICAL ITALIC SMALL GAMMA
+U+1D6FF           𝛿            \itdelta                                     MATHEMATICAL ITALIC SMALL DELTA
+U+1D700           𝜀            \itepsilon                                   MATHEMATICAL ITALIC SMALL EPSILON
+U+1D701           𝜁            \itzeta                                      MATHEMATICAL ITALIC SMALL ZETA
+U+1D702           𝜂            \iteta                                       MATHEMATICAL ITALIC SMALL ETA
+U+1D703           𝜃            \ittheta                                     MATHEMATICAL ITALIC SMALL THETA
+U+1D704           𝜄            \itiota                                      MATHEMATICAL ITALIC SMALL IOTA
+U+1D705           𝜅            \itkappa                                     MATHEMATICAL ITALIC SMALL KAPPA
+U+1D706           𝜆            \itlambda                                    MATHEMATICAL ITALIC SMALL LAMDA
+U+1D707           𝜇            \itmu                                        MATHEMATICAL ITALIC SMALL MU
+U+1D708           𝜈            \itnu                                        MATHEMATICAL ITALIC SMALL NU
+U+1D709           𝜉            \itxi                                        MATHEMATICAL ITALIC SMALL XI
+U+1D70A           𝜊            \itomicron                                   MATHEMATICAL ITALIC SMALL OMICRON
+U+1D70B           𝜋            \itpi                                        MATHEMATICAL ITALIC SMALL PI
+U+1D70C           𝜌            \itrho                                       MATHEMATICAL ITALIC SMALL RHO
+U+1D70D           𝜍            \itvarsigma                                  MATHEMATICAL ITALIC SMALL FINAL SIGMA
+U+1D70E           𝜎            \itsigma                                     MATHEMATICAL ITALIC SMALL SIGMA
+U+1D70F           𝜏            \ittau                                       MATHEMATICAL ITALIC SMALL TAU
+U+1D710           𝜐            \itupsilon                                   MATHEMATICAL ITALIC SMALL UPSILON
+U+1D711           𝜑            \itphi                                       MATHEMATICAL ITALIC SMALL PHI
+U+1D712           𝜒            \itchi                                       MATHEMATICAL ITALIC SMALL CHI
+U+1D713           𝜓            \itpsi                                       MATHEMATICAL ITALIC SMALL PSI
+U+1D714           𝜔            \itomega                                     MATHEMATICAL ITALIC SMALL OMEGA
+U+1D715           𝜕            \itpartial                                   MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+U+1D716           𝜖            \itvarepsilon                                MATHEMATICAL ITALIC EPSILON SYMBOL
+U+1D717           𝜗            \itvartheta                                  MATHEMATICAL ITALIC THETA SYMBOL
+U+1D718           𝜘            \itvarkappa                                  MATHEMATICAL ITALIC KAPPA SYMBOL
+U+1D719           𝜙            \itvarphi                                    MATHEMATICAL ITALIC PHI SYMBOL
+U+1D71A           𝜚            \itvarrho                                    MATHEMATICAL ITALIC RHO SYMBOL
+U+1D71B           𝜛            \itvarpi                                     MATHEMATICAL ITALIC PI SYMBOL
+U+1D71C           𝜜            \biAlpha                                     MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
+U+1D71D           𝜝            \biBeta                                      MATHEMATICAL BOLD ITALIC CAPITAL BETA
+U+1D71E           𝜞            \biGamma                                     MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
+U+1D71F           𝜟            \biDelta                                     MATHEMATICAL BOLD ITALIC CAPITAL DELTA
+U+1D720           𝜠            \biEpsilon                                   MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
+U+1D721           𝜡            \biZeta                                      MATHEMATICAL BOLD ITALIC CAPITAL ZETA
+U+1D722           𝜢            \biEta                                       MATHEMATICAL BOLD ITALIC CAPITAL ETA
+U+1D723           𝜣            \biTheta                                     MATHEMATICAL BOLD ITALIC CAPITAL THETA
+U+1D724           𝜤            \biIota                                      MATHEMATICAL BOLD ITALIC CAPITAL IOTA
+U+1D725           𝜥            \biKappa                                     MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
+U+1D726           𝜦            \biLambda                                    MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
+U+1D727           𝜧            \biMu                                        MATHEMATICAL BOLD ITALIC CAPITAL MU
+U+1D728           𝜨            \biNu                                        MATHEMATICAL BOLD ITALIC CAPITAL NU
+U+1D729           𝜩            \biXi                                        MATHEMATICAL BOLD ITALIC CAPITAL XI
+U+1D72A           𝜪            \biOmicron                                   MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
+U+1D72B           𝜫            \biPi                                        MATHEMATICAL BOLD ITALIC CAPITAL PI
+U+1D72C           𝜬            \biRho                                       MATHEMATICAL BOLD ITALIC CAPITAL RHO
+U+1D72D           𝜭            \bivarTheta                                  MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
+U+1D72E           𝜮            \biSigma                                     MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
+U+1D72F           𝜯            \biTau                                       MATHEMATICAL BOLD ITALIC CAPITAL TAU
+U+1D730           𝜰            \biUpsilon                                   MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
+U+1D731           𝜱            \biPhi                                       MATHEMATICAL BOLD ITALIC CAPITAL PHI
+U+1D732           𝜲            \biChi                                       MATHEMATICAL BOLD ITALIC CAPITAL CHI
+U+1D733           𝜳            \biPsi                                       MATHEMATICAL BOLD ITALIC CAPITAL PSI
+U+1D734           𝜴            \biOmega                                     MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+U+1D735           𝜵            \binabla                                     MATHEMATICAL BOLD ITALIC NABLA
+U+1D736           𝜶            \bialpha                                     MATHEMATICAL BOLD ITALIC SMALL ALPHA
+U+1D737           𝜷            \bibeta                                      MATHEMATICAL BOLD ITALIC SMALL BETA
+U+1D738           𝜸            \bigamma                                     MATHEMATICAL BOLD ITALIC SMALL GAMMA
+U+1D739           𝜹            \bidelta                                     MATHEMATICAL BOLD ITALIC SMALL DELTA
+U+1D73A           𝜺            \biepsilon                                   MATHEMATICAL BOLD ITALIC SMALL EPSILON
+U+1D73B           𝜻            \bizeta                                      MATHEMATICAL BOLD ITALIC SMALL ZETA
+U+1D73C           𝜼            \bieta                                       MATHEMATICAL BOLD ITALIC SMALL ETA
+U+1D73D           𝜽            \bitheta                                     MATHEMATICAL BOLD ITALIC SMALL THETA
+U+1D73E           𝜾            \biiota                                      MATHEMATICAL BOLD ITALIC SMALL IOTA
+U+1D73F           𝜿            \bikappa                                     MATHEMATICAL BOLD ITALIC SMALL KAPPA
+U+1D740           𝝀            \bilambda                                    MATHEMATICAL BOLD ITALIC SMALL LAMDA
+U+1D741           𝝁            \bimu                                        MATHEMATICAL BOLD ITALIC SMALL MU
+U+1D742           𝝂            \binu                                        MATHEMATICAL BOLD ITALIC SMALL NU
+U+1D743           𝝃            \bixi                                        MATHEMATICAL BOLD ITALIC SMALL XI
+U+1D744           𝝄            \biomicron                                   MATHEMATICAL BOLD ITALIC SMALL OMICRON
+U+1D745           𝝅            \bipi                                        MATHEMATICAL BOLD ITALIC SMALL PI
+U+1D746           𝝆            \birho                                       MATHEMATICAL BOLD ITALIC SMALL RHO
+U+1D747           𝝇            \bivarsigma                                  MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA
+U+1D748           𝝈            \bisigma                                     MATHEMATICAL BOLD ITALIC SMALL SIGMA
+U+1D749           𝝉            \bitau                                       MATHEMATICAL BOLD ITALIC SMALL TAU
+U+1D74A           𝝊            \biupsilon                                   MATHEMATICAL BOLD ITALIC SMALL UPSILON
+U+1D74B           𝝋            \biphi                                       MATHEMATICAL BOLD ITALIC SMALL PHI
+U+1D74C           𝝌            \bichi                                       MATHEMATICAL BOLD ITALIC SMALL CHI
+U+1D74D           𝝍            \bipsi                                       MATHEMATICAL BOLD ITALIC SMALL PSI
+U+1D74E           𝝎            \biomega                                     MATHEMATICAL BOLD ITALIC SMALL OMEGA
+U+1D74F           𝝏            \bipartial                                   MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+U+1D750           𝝐            \bivarepsilon                                MATHEMATICAL BOLD ITALIC EPSILON SYMBOL
+U+1D751           𝝑            \bivartheta                                  MATHEMATICAL BOLD ITALIC THETA SYMBOL
+U+1D752           𝝒            \bivarkappa                                  MATHEMATICAL BOLD ITALIC KAPPA SYMBOL
+U+1D753           𝝓            \bivarphi                                    MATHEMATICAL BOLD ITALIC PHI SYMBOL
+U+1D754           𝝔            \bivarrho                                    MATHEMATICAL BOLD ITALIC RHO SYMBOL
+U+1D755           𝝕            \bivarpi                                     MATHEMATICAL BOLD ITALIC PI SYMBOL
+U+1D756           𝝖            \bsansAlpha                                  MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
+U+1D757           𝝗            \bsansBeta                                   MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
+U+1D758           𝝘            \bsansGamma                                  MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
+U+1D759           𝝙            \bsansDelta                                  MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
+U+1D75A           𝝚            \bsansEpsilon                                MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
+U+1D75B           𝝛            \bsansZeta                                   MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
+U+1D75C           𝝜            \bsansEta                                    MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
+U+1D75D           𝝝            \bsansTheta                                  MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
+U+1D75E           𝝞            \bsansIota                                   MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
+U+1D75F           𝝟            \bsansKappa                                  MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
+U+1D760           𝝠            \bsansLambda                                 MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
+U+1D761           𝝡            \bsansMu                                     MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
+U+1D762           𝝢            \bsansNu                                     MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
+U+1D763           𝝣            \bsansXi                                     MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
+U+1D764           𝝤            \bsansOmicron                                MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
+U+1D765           𝝥            \bsansPi                                     MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
+U+1D766           𝝦            \bsansRho                                    MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
+U+1D767           𝝧            \bsansvarTheta                               MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
+U+1D768           𝝨            \bsansSigma                                  MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
+U+1D769           𝝩            \bsansTau                                    MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
+U+1D76A           𝝪            \bsansUpsilon                                MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
+U+1D76B           𝝫            \bsansPhi                                    MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
+U+1D76C           𝝬            \bsansChi                                    MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
+U+1D76D           𝝭            \bsansPsi                                    MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
+U+1D76E           𝝮            \bsansOmega                                  MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+U+1D76F           𝝯            \bsansnabla                                  MATHEMATICAL SANS-SERIF BOLD NABLA
+U+1D770           𝝰            \bsansalpha                                  MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA
+U+1D771           𝝱            \bsansbeta                                   MATHEMATICAL SANS-SERIF BOLD SMALL BETA
+U+1D772           𝝲            \bsansgamma                                  MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA
+U+1D773           𝝳            \bsansdelta                                  MATHEMATICAL SANS-SERIF BOLD SMALL DELTA
+U+1D774           𝝴            \bsansepsilon                                MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON
+U+1D775           𝝵            \bsanszeta                                   MATHEMATICAL SANS-SERIF BOLD SMALL ZETA
+U+1D776           𝝶            \bsanseta                                    MATHEMATICAL SANS-SERIF BOLD SMALL ETA
+U+1D777           𝝷            \bsanstheta                                  MATHEMATICAL SANS-SERIF BOLD SMALL THETA
+U+1D778           𝝸            \bsansiota                                   MATHEMATICAL SANS-SERIF BOLD SMALL IOTA
+U+1D779           𝝹            \bsanskappa                                  MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA
+U+1D77A           𝝺            \bsanslambda                                 MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA
+U+1D77B           𝝻            \bsansmu                                     MATHEMATICAL SANS-SERIF BOLD SMALL MU
+U+1D77C           𝝼            \bsansnu                                     MATHEMATICAL SANS-SERIF BOLD SMALL NU
+U+1D77D           𝝽            \bsansxi                                     MATHEMATICAL SANS-SERIF BOLD SMALL XI
+U+1D77E           𝝾            \bsansomicron                                MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON
+U+1D77F           𝝿            \bsanspi                                     MATHEMATICAL SANS-SERIF BOLD SMALL PI
+U+1D780           𝞀            \bsansrho                                    MATHEMATICAL SANS-SERIF BOLD SMALL RHO
+U+1D781           𝞁            \bsansvarsigma                               MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA
+U+1D782           𝞂            \bsanssigma                                  MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA
+U+1D783           𝞃            \bsanstau                                    MATHEMATICAL SANS-SERIF BOLD SMALL TAU
+U+1D784           𝞄            \bsansupsilon                                MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON
+U+1D785           𝞅            \bsansphi                                    MATHEMATICAL SANS-SERIF BOLD SMALL PHI
+U+1D786           𝞆            \bsanschi                                    MATHEMATICAL SANS-SERIF BOLD SMALL CHI
+U+1D787           𝞇            \bsanspsi                                    MATHEMATICAL SANS-SERIF BOLD SMALL PSI
+U+1D788           𝞈            \bsansomega                                  MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+U+1D789           𝞉            \bsanspartial                                MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+U+1D78A           𝞊            \bsansvarepsilon                             MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL
+U+1D78B           𝞋            \bsansvartheta                               MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL
+U+1D78C           𝞌            \bsansvarkappa                               MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL
+U+1D78D           𝞍            \bsansvarphi                                 MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL
+U+1D78E           𝞎            \bsansvarrho                                 MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL
+U+1D78F           𝞏            \bsansvarpi                                  MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
+U+1D790           𝞐            \bisansAlpha                                 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
+U+1D791           𝞑            \bisansBeta                                  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
+U+1D792           𝞒            \bisansGamma                                 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
+U+1D793           𝞓            \bisansDelta                                 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
+U+1D794           𝞔            \bisansEpsilon                               MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
+U+1D795           𝞕            \bisansZeta                                  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
+U+1D796           𝞖            \bisansEta                                   MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
+U+1D797           𝞗            \bisansTheta                                 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
+U+1D798           𝞘            \bisansIota                                  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
+U+1D799           𝞙            \bisansKappa                                 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
+U+1D79A           𝞚            \bisansLambda                                MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
+U+1D79B           𝞛            \bisansMu                                    MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
+U+1D79C           𝞜            \bisansNu                                    MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
+U+1D79D           𝞝            \bisansXi                                    MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
+U+1D79E           𝞞            \bisansOmicron                               MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
+U+1D79F           𝞟            \bisansPi                                    MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
+U+1D7A0           𝞠            \bisansRho                                   MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
+U+1D7A1           𝞡            \bisansvarTheta                              MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
+U+1D7A2           𝞢            \bisansSigma                                 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
+U+1D7A3           𝞣            \bisansTau                                   MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
+U+1D7A4           𝞤            \bisansUpsilon                               MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
+U+1D7A5           𝞥            \bisansPhi                                   MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
+U+1D7A6           𝞦            \bisansChi                                   MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
+U+1D7A7           𝞧            \bisansPsi                                   MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
+U+1D7A8           𝞨            \bisansOmega                                 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+U+1D7A9           𝞩            \bisansnabla                                 MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+U+1D7AA           𝞪            \bisansalpha                                 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA
+U+1D7AB           𝞫            \bisansbeta                                  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA
+U+1D7AC           𝞬            \bisansgamma                                 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA
+U+1D7AD           𝞭            \bisansdelta                                 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA
+U+1D7AE           𝞮            \bisansepsilon                               MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON
+U+1D7AF           𝞯            \bisanszeta                                  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA
+U+1D7B0           𝞰            \bisanseta                                   MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA
+U+1D7B1           𝞱            \bisanstheta                                 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA
+U+1D7B2           𝞲            \bisansiota                                  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA
+U+1D7B3           𝞳            \bisanskappa                                 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA
+U+1D7B4           𝞴            \bisanslambda                                MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA
+U+1D7B5           𝞵            \bisansmu                                    MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU
+U+1D7B6           𝞶            \bisansnu                                    MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU
+U+1D7B7           𝞷            \bisansxi                                    MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI
+U+1D7B8           𝞸            \bisansomicron                               MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON
+U+1D7B9           𝞹            \bisanspi                                    MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI
+U+1D7BA           𝞺            \bisansrho                                   MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO
+U+1D7BB           𝞻            \bisansvarsigma                              MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA
+U+1D7BC           𝞼            \bisanssigma                                 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA
+U+1D7BD           𝞽            \bisanstau                                   MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU
+U+1D7BE           𝞾            \bisansupsilon                               MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON
+U+1D7BF           𝞿            \bisansphi                                   MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI
+U+1D7C0           𝟀            \bisanschi                                   MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI
+U+1D7C1           𝟁            \bisanspsi                                   MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI
+U+1D7C2           𝟂            \bisansomega                                 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+U+1D7C3           𝟃            \bisanspartial                               MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+U+1D7C4           𝟄            \bisansvarepsilon                            MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL
+U+1D7C5           𝟅            \bisansvartheta                              MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL
+U+1D7C6           𝟆            \bisansvarkappa                              MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL
+U+1D7C7           𝟇            \bisansvarphi                                MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL
+U+1D7C8           𝟈            \bisansvarrho                                MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL
+U+1D7C9           𝟉            \bisansvarpi                                 MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
+U+1D7CA           𝟊            \bfDigamma                                   MATHEMATICAL BOLD CAPITAL DIGAMMA
+U+1D7CB           𝟋            \bfdigamma                                   MATHEMATICAL BOLD SMALL DIGAMMA
+U+1D7CE           𝟎            \bfzero                                      MATHEMATICAL BOLD DIGIT ZERO
+U+1D7CF           𝟏            \bfone                                       MATHEMATICAL BOLD DIGIT ONE
+U+1D7D0           𝟐            \bftwo                                       MATHEMATICAL BOLD DIGIT TWO
+U+1D7D1           𝟑            \bfthree                                     MATHEMATICAL BOLD DIGIT THREE
+U+1D7D2           𝟒            \bffour                                      MATHEMATICAL BOLD DIGIT FOUR
+U+1D7D3           𝟓            \bffive                                      MATHEMATICAL BOLD DIGIT FIVE
+U+1D7D4           𝟔            \bfsix                                       MATHEMATICAL BOLD DIGIT SIX
+U+1D7D5           𝟕            \bfseven                                     MATHEMATICAL BOLD DIGIT SEVEN
+U+1D7D6           𝟖            \bfeight                                     MATHEMATICAL BOLD DIGIT EIGHT
+U+1D7D7           𝟗            \bfnine                                      MATHEMATICAL BOLD DIGIT NINE
+U+1D7D8           𝟘            \bbzero                                      MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO
+U+1D7D9           𝟙            \bbone                                       MATHEMATICAL DOUBLE-STRUCK DIGIT ONE
+U+1D7DA           𝟚            \bbtwo                                       MATHEMATICAL DOUBLE-STRUCK DIGIT TWO
+U+1D7DB           𝟛            \bbthree                                     MATHEMATICAL DOUBLE-STRUCK DIGIT THREE
+U+1D7DC           𝟜            \bbfour                                      MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR
+U+1D7DD           𝟝            \bbfive                                      MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE
+U+1D7DE           𝟞            \bbsix                                       MATHEMATICAL DOUBLE-STRUCK DIGIT SIX
+U+1D7DF           𝟟            \bbseven                                     MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN
+U+1D7E0           𝟠            \bbeight                                     MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT
+U+1D7E1           𝟡            \bbnine                                      MATHEMATICAL DOUBLE-STRUCK DIGIT NINE
+U+1D7E2           𝟢            \sanszero                                    MATHEMATICAL SANS-SERIF DIGIT ZERO
+U+1D7E3           𝟣            \sansone                                     MATHEMATICAL SANS-SERIF DIGIT ONE
+U+1D7E4           𝟤            \sanstwo                                     MATHEMATICAL SANS-SERIF DIGIT TWO
+U+1D7E5           𝟥            \sansthree                                   MATHEMATICAL SANS-SERIF DIGIT THREE
+U+1D7E6           𝟦            \sansfour                                    MATHEMATICAL SANS-SERIF DIGIT FOUR
+U+1D7E7           𝟧            \sansfive                                    MATHEMATICAL SANS-SERIF DIGIT FIVE
+U+1D7E8           𝟨            \sanssix                                     MATHEMATICAL SANS-SERIF DIGIT SIX
+U+1D7E9           𝟩            \sansseven                                   MATHEMATICAL SANS-SERIF DIGIT SEVEN
+U+1D7EA           𝟪            \sanseight                                   MATHEMATICAL SANS-SERIF DIGIT EIGHT
+U+1D7EB           𝟫            \sansnine                                    MATHEMATICAL SANS-SERIF DIGIT NINE
+U+1D7EC           𝟬            \bsanszero                                   MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
+U+1D7ED           𝟭            \bsansone                                    MATHEMATICAL SANS-SERIF BOLD DIGIT ONE
+U+1D7EE           𝟮            \bsanstwo                                    MATHEMATICAL SANS-SERIF BOLD DIGIT TWO
+U+1D7EF           𝟯            \bsansthree                                  MATHEMATICAL SANS-SERIF BOLD DIGIT THREE
+U+1D7F0           𝟰            \bsansfour                                   MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR
+U+1D7F1           𝟱            \bsansfive                                   MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE
+U+1D7F2           𝟲            \bsanssix                                    MATHEMATICAL SANS-SERIF BOLD DIGIT SIX
+U+1D7F3           𝟳            \bsansseven                                  MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN
+U+1D7F4           𝟴            \bsanseight                                  MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT
+U+1D7F5           𝟵            \bsansnine                                   MATHEMATICAL SANS-SERIF BOLD DIGIT NINE
+U+1D7F6           𝟶            \ttzero                                      MATHEMATICAL MONOSPACE DIGIT ZERO
+U+1D7F7           𝟷            \ttone                                       MATHEMATICAL MONOSPACE DIGIT ONE
+U+1D7F8           𝟸            \tttwo                                       MATHEMATICAL MONOSPACE DIGIT TWO
+U+1D7F9           𝟹            \ttthree                                     MATHEMATICAL MONOSPACE DIGIT THREE
+U+1D7FA           𝟺            \ttfour                                      MATHEMATICAL MONOSPACE DIGIT FOUR
+U+1D7FB           𝟻            \ttfive                                      MATHEMATICAL MONOSPACE DIGIT FIVE
+U+1D7FC           𝟼            \ttsix                                       MATHEMATICAL MONOSPACE DIGIT SIX
+U+1D7FD           𝟽            \ttseven                                     MATHEMATICAL MONOSPACE DIGIT SEVEN
+U+1D7FE           𝟾            \tteight                                     MATHEMATICAL MONOSPACE DIGIT EIGHT
+U+1D7FF           𝟿            \ttnine                                      MATHEMATICAL MONOSPACE DIGIT NINE
+U+1F004           🀄            \:mahjong:                                   MAHJONG TILE RED DRAGON
+U+1F0CF           🃏            \:black_joker:                               PLAYING CARD BLACK JOKER
+U+1F170           🅰            \:a:                                         NEGATIVE SQUARED LATIN CAPITAL LETTER A
+U+1F171           🅱            \:b:                                         NEGATIVE SQUARED LATIN CAPITAL LETTER B
+U+1F17E           🅾            \:o2:                                        NEGATIVE SQUARED LATIN CAPITAL LETTER O
+U+1F17F           🅿            \:parking:                                   NEGATIVE SQUARED LATIN CAPITAL LETTER P
+U+1F18E           🆎            \:ab:                                        NEGATIVE SQUARED AB
+U+1F191           🆑            \:cl:                                        SQUARED CL
+U+1F192           🆒            \:cool:                                      SQUARED COOL
+U+1F193           🆓            \:free:                                      SQUARED FREE
+U+1F194           🆔            \:id:                                        SQUARED ID
+U+1F195           🆕            \:new:                                       SQUARED NEW
+U+1F196           🆖            \:ng:                                        SQUARED NG
+U+1F197           🆗            \:ok:                                        SQUARED OK
+U+1F198           🆘            \:sos:                                       SQUARED SOS
+U+1F199           🆙            \:up:                                        SQUARED UP WITH EXCLAMATION MARK
+U+1F19A           🆚            \:vs:                                        SQUARED VS
+U+1F201           🈁            \:koko:                                      SQUARED KATAKANA KOKO
+U+1F202           🈂            \:sa:                                        SQUARED KATAKANA SA
+U+1F21A           🈚            \:u7121:                                     SQUARED CJK UNIFIED IDEOGRAPH-7121
+U+1F22F           🈯            \:u6307:                                     SQUARED CJK UNIFIED IDEOGRAPH-6307
+U+1F232           🈲            \:u7981:                                     SQUARED CJK UNIFIED IDEOGRAPH-7981
+U+1F233           🈳            \:u7a7a:                                     SQUARED CJK UNIFIED IDEOGRAPH-7A7A
+U+1F234           🈴            \:u5408:                                     SQUARED CJK UNIFIED IDEOGRAPH-5408
+U+1F235           🈵            \:u6e80:                                     SQUARED CJK UNIFIED IDEOGRAPH-6E80
+U+1F236           🈶            \:u6709:                                     SQUARED CJK UNIFIED IDEOGRAPH-6709
+U+1F237           🈷            \:u6708:                                     SQUARED CJK UNIFIED IDEOGRAPH-6708
+U+1F238           🈸            \:u7533:                                     SQUARED CJK UNIFIED IDEOGRAPH-7533
+U+1F239           🈹            \:u5272:                                     SQUARED CJK UNIFIED IDEOGRAPH-5272
+U+1F23A           🈺            \:u55b6:                                     SQUARED CJK UNIFIED IDEOGRAPH-55B6
+U+1F250           🉐            \:ideograph_advantage:                       CIRCLED IDEOGRAPH ADVANTAGE
+U+1F251           🉑            \:accept:                                    CIRCLED IDEOGRAPH ACCEPT
+U+1F300           🌀            \:cyclone:                                   CYCLONE
+U+1F301           🌁            \:foggy:                                     FOGGY
+U+1F302           🌂            \:closed_umbrella:                           CLOSED UMBRELLA
+U+1F303           🌃            \:night_with_stars:                          NIGHT WITH STARS
+U+1F304           🌄            \:sunrise_over_mountains:                    SUNRISE OVER MOUNTAINS
+U+1F305           🌅            \:sunrise:                                   SUNRISE
+U+1F306           🌆            \:city_sunset:                               CITYSCAPE AT DUSK
+U+1F307           🌇            \:city_sunrise:                              SUNSET OVER BUILDINGS
+U+1F308           🌈            \:rainbow:                                   RAINBOW
+U+1F309           🌉            \:bridge_at_night:                           BRIDGE AT NIGHT
+U+1F30A           🌊            \:ocean:                                     WATER WAVE
+U+1F30B           🌋            \:volcano:                                   VOLCANO
+U+1F30C           🌌            \:milky_way:                                 MILKY WAY
+U+1F30D           🌍            \:earth_africa:                              EARTH GLOBE EUROPE-AFRICA
+U+1F30E           🌎            \:earth_americas:                            EARTH GLOBE AMERICAS
+U+1F30F           🌏            \:earth_asia:                                EARTH GLOBE ASIA-AUSTRALIA
+U+1F310           🌐            \:globe_with_meridians:                      GLOBE WITH MERIDIANS
+U+1F311           🌑            \:new_moon:                                  NEW MOON SYMBOL
+U+1F312           🌒            \:waxing_crescent_moon:                      WAXING CRESCENT MOON SYMBOL
+U+1F313           🌓            \:first_quarter_moon:                        FIRST QUARTER MOON SYMBOL
+U+1F314           🌔            \:moon:                                      WAXING GIBBOUS MOON SYMBOL
+U+1F315           🌕            \:full_moon:                                 FULL MOON SYMBOL
+U+1F316           🌖            \:waning_gibbous_moon:                       WANING GIBBOUS MOON SYMBOL
+U+1F317           🌗            \:last_quarter_moon:                         LAST QUARTER MOON SYMBOL
+U+1F318           🌘            \:waning_crescent_moon:                      WANING CRESCENT MOON SYMBOL
+U+1F319           🌙            \:crescent_moon:                             CRESCENT MOON
+U+1F31A           🌚            \:new_moon_with_face:                        NEW MOON WITH FACE
+U+1F31B           🌛            \:first_quarter_moon_with_face:              FIRST QUARTER MOON WITH FACE
+U+1F31C           🌜            \:last_quarter_moon_with_face:               LAST QUARTER MOON WITH FACE
+U+1F31D           🌝            \:full_moon_with_face:                       FULL MOON WITH FACE
+U+1F31E           🌞            \:sun_with_face:                             SUN WITH FACE
+U+1F31F           🌟            \:star2:                                     GLOWING STAR
+U+1F320           🌠            \:stars:                                     SHOOTING STAR
+U+1F330           🌰            \:chestnut:                                  CHESTNUT
+U+1F331           🌱            \:seedling:                                  SEEDLING
+U+1F332           🌲            \:evergreen_tree:                            EVERGREEN TREE
+U+1F333           🌳            \:deciduous_tree:                            DECIDUOUS TREE
+U+1F334           🌴            \:palm_tree:                                 PALM TREE
+U+1F335           🌵            \:cactus:                                    CACTUS
+U+1F337           🌷            \:tulip:                                     TULIP
+U+1F338           🌸            \:cherry_blossom:                            CHERRY BLOSSOM
+U+1F339           🌹            \:rose:                                      ROSE
+U+1F33A           🌺            \:hibiscus:                                  HIBISCUS
+U+1F33B           🌻            \:sunflower:                                 SUNFLOWER
+U+1F33C           🌼            \:blossom:                                   BLOSSOM
+U+1F33D           🌽            \:corn:                                      EAR OF MAIZE
+U+1F33E           🌾            \:ear_of_rice:                               EAR OF RICE
+U+1F33F           🌿            \:herb:                                      HERB
+U+1F340           🍀            \:four_leaf_clover:                          FOUR LEAF CLOVER
+U+1F341           🍁            \:maple_leaf:                                MAPLE LEAF
+U+1F342           🍂            \:fallen_leaf:                               FALLEN LEAF
+U+1F343           🍃            \:leaves:                                    LEAF FLUTTERING IN WIND
+U+1F344           🍄            \:mushroom:                                  MUSHROOM
+U+1F345           🍅            \:tomato:                                    TOMATO
+U+1F346           🍆            \:eggplant:                                  AUBERGINE
+U+1F347           🍇            \:grapes:                                    GRAPES
+U+1F348           🍈            \:melon:                                     MELON
+U+1F349           🍉            \:watermelon:                                WATERMELON
+U+1F34A           🍊            \:tangerine:                                 TANGERINE
+U+1F34B           🍋            \:lemon:                                     LEMON
+U+1F34C           🍌            \:banana:                                    BANANA
+U+1F34D           🍍            \:pineapple:                                 PINEAPPLE
+U+1F34E           🍎            \:apple:                                     RED APPLE
+U+1F34F           🍏            \:green_apple:                               GREEN APPLE
+U+1F350           🍐            \:pear:                                      PEAR
+U+1F351           🍑            \:peach:                                     PEACH
+U+1F352           🍒            \:cherries:                                  CHERRIES
+U+1F353           🍓            \:strawberry:                                STRAWBERRY
+U+1F354           🍔            \:hamburger:                                 HAMBURGER
+U+1F355           🍕            \:pizza:                                     SLICE OF PIZZA
+U+1F356           🍖            \:meat_on_bone:                              MEAT ON BONE
+U+1F357           🍗            \:poultry_leg:                               POULTRY LEG
+U+1F358           🍘            \:rice_cracker:                              RICE CRACKER
+U+1F359           🍙            \:rice_ball:                                 RICE BALL
+U+1F35A           🍚            \:rice:                                      COOKED RICE
+U+1F35B           🍛            \:curry:                                     CURRY AND RICE
+U+1F35C           🍜            \:ramen:                                     STEAMING BOWL
+U+1F35D           🍝            \:spaghetti:                                 SPAGHETTI
+U+1F35E           🍞            \:bread:                                     BREAD
+U+1F35F           🍟            \:fries:                                     FRENCH FRIES
+U+1F360           🍠            \:sweet_potato:                              ROASTED SWEET POTATO
+U+1F361           🍡            \:dango:                                     DANGO
+U+1F362           🍢            \:oden:                                      ODEN
+U+1F363           🍣            \:sushi:                                     SUSHI
+U+1F364           🍤            \:fried_shrimp:                              FRIED SHRIMP
+U+1F365           🍥            \:fish_cake:                                 FISH CAKE WITH SWIRL DESIGN
+U+1F366           🍦            \:icecream:                                  SOFT ICE CREAM
+U+1F367           🍧            \:shaved_ice:                                SHAVED ICE
+U+1F368           🍨            \:ice_cream:                                 ICE CREAM
+U+1F369           🍩            \:doughnut:                                  DOUGHNUT
+U+1F36A           🍪            \:cookie:                                    COOKIE
+U+1F36B           🍫            \:chocolate_bar:                             CHOCOLATE BAR
+U+1F36C           🍬            \:candy:                                     CANDY
+U+1F36D           🍭            \:lollipop:                                  LOLLIPOP
+U+1F36E           🍮            \:custard:                                   CUSTARD
+U+1F36F           🍯            \:honey_pot:                                 HONEY POT
+U+1F370           🍰            \:cake:                                      SHORTCAKE
+U+1F371           🍱            \:bento:                                     BENTO BOX
+U+1F372           🍲            \:stew:                                      POT OF FOOD
+U+1F373           🍳            \:egg:                                       COOKING
+U+1F374           🍴            \:fork_and_knife:                            FORK AND KNIFE
+U+1F375           🍵            \:tea:                                       TEACUP WITHOUT HANDLE
+U+1F376           🍶            \:sake:                                      SAKE BOTTLE AND CUP
+U+1F377           🍷            \:wine_glass:                                WINE GLASS
+U+1F378           🍸            \:cocktail:                                  COCKTAIL GLASS
+U+1F379           🍹            \:tropical_drink:                            TROPICAL DRINK
+U+1F37A           🍺            \:beer:                                      BEER MUG
+U+1F37B           🍻            \:beers:                                     CLINKING BEER MUGS
+U+1F37C           🍼            \:baby_bottle:                               BABY BOTTLE
+U+1F380           🎀            \:ribbon:                                    RIBBON
+U+1F381           🎁            \:gift:                                      WRAPPED PRESENT
+U+1F382           🎂            \:birthday:                                  BIRTHDAY CAKE
+U+1F383           🎃            \:jack_o_lantern:                            JACK-O-LANTERN
+U+1F384           🎄            \:christmas_tree:                            CHRISTMAS TREE
+U+1F385           🎅            \:santa:                                     FATHER CHRISTMAS
+U+1F386           🎆            \:fireworks:                                 FIREWORKS
+U+1F387           🎇            \:sparkler:                                  FIREWORK SPARKLER
+U+1F388           🎈            \:balloon:                                   BALLOON
+U+1F389           🎉            \:tada:                                      PARTY POPPER
+U+1F38A           🎊            \:confetti_ball:                             CONFETTI BALL
+U+1F38B           🎋            \:tanabata_tree:                             TANABATA TREE
+U+1F38C           🎌            \:crossed_flags:                             CROSSED FLAGS
+U+1F38D           🎍            \:bamboo:                                    PINE DECORATION
+U+1F38E           🎎            \:dolls:                                     JAPANESE DOLLS
+U+1F38F           🎏            \:flags:                                     CARP STREAMER
+U+1F390           🎐            \:wind_chime:                                WIND CHIME
+U+1F391           🎑            \:rice_scene:                                MOON VIEWING CEREMONY
+U+1F392           🎒            \:school_satchel:                            SCHOOL SATCHEL
+U+1F393           🎓            \:mortar_board:                              GRADUATION CAP
+U+1F3A0           🎠            \:carousel_horse:                            CAROUSEL HORSE
+U+1F3A1           🎡            \:ferris_wheel:                              FERRIS WHEEL
+U+1F3A2           🎢            \:roller_coaster:                            ROLLER COASTER
+U+1F3A3           🎣            \:fishing_pole_and_fish:                     FISHING POLE AND FISH
+U+1F3A4           🎤            \:microphone:                                MICROPHONE
+U+1F3A5           🎥            \:movie_camera:                              MOVIE CAMERA
+U+1F3A6           🎦            \:cinema:                                    CINEMA
+U+1F3A7           🎧            \:headphones:                                HEADPHONE
+U+1F3A8           🎨            \:art:                                       ARTIST PALETTE
+U+1F3A9           🎩            \:tophat:                                    TOP HAT
+U+1F3AA           🎪            \:circus_tent:                               CIRCUS TENT
+U+1F3AB           🎫            \:ticket:                                    TICKET
+U+1F3AC           🎬            \:clapper:                                   CLAPPER BOARD
+U+1F3AD           🎭            \:performing_arts:                           PERFORMING ARTS
+U+1F3AE           🎮            \:video_game:                                VIDEO GAME
+U+1F3AF           🎯            \:dart:                                      DIRECT HIT
+U+1F3B0           🎰            \:slot_machine:                              SLOT MACHINE
+U+1F3B1           🎱            \:8ball:                                     BILLIARDS
+U+1F3B2           🎲            \:game_die:                                  GAME DIE
+U+1F3B3           🎳            \:bowling:                                   BOWLING
+U+1F3B4           🎴            \:flower_playing_cards:                      FLOWER PLAYING CARDS
+U+1F3B5           🎵            \:musical_note:                              MUSICAL NOTE
+U+1F3B6           🎶            \:notes:                                     MULTIPLE MUSICAL NOTES
+U+1F3B7           🎷            \:saxophone:                                 SAXOPHONE
+U+1F3B8           🎸            \:guitar:                                    GUITAR
+U+1F3B9           🎹            \:musical_keyboard:                          MUSICAL KEYBOARD
+U+1F3BA           🎺            \:trumpet:                                   TRUMPET
+U+1F3BB           🎻            \:violin:                                    VIOLIN
+U+1F3BC           🎼            \:musical_score:                             MUSICAL SCORE
+U+1F3BD           🎽            \:running_shirt_with_sash:                   RUNNING SHIRT WITH SASH
+U+1F3BE           🎾            \:tennis:                                    TENNIS RACQUET AND BALL
+U+1F3BF           🎿            \:ski:                                       SKI AND SKI BOOT
+U+1F3C0           🏀            \:basketball:                                BASKETBALL AND HOOP
+U+1F3C1           🏁            \:checkered_flag:                            CHEQUERED FLAG
+U+1F3C2           🏂            \:snowboarder:                               SNOWBOARDER
+U+1F3C3           🏃            \:runner:                                    RUNNER
+U+1F3C4           🏄            \:surfer:                                    SURFER
+U+1F3C6           🏆            \:trophy:                                    TROPHY
+U+1F3C7           🏇            \:horse_racing:                              HORSE RACING
+U+1F3C8           🏈            \:football:                                  AMERICAN FOOTBALL
+U+1F3C9           🏉            \:rugby_football:                            RUGBY FOOTBALL
+U+1F3CA           🏊            \:swimmer:                                   SWIMMER
+U+1F3E0           🏠            \:house:                                     HOUSE BUILDING
+U+1F3E1           🏡            \:house_with_garden:                         HOUSE WITH GARDEN
+U+1F3E2           🏢            \:office:                                    OFFICE BUILDING
+U+1F3E3           🏣            \:post_office:                               JAPANESE POST OFFICE
+U+1F3E4           🏤            \:european_post_office:                      EUROPEAN POST OFFICE
+U+1F3E5           🏥            \:hospital:                                  HOSPITAL
+U+1F3E6           🏦            \:bank:                                      BANK
+U+1F3E7           🏧            \:atm:                                       AUTOMATED TELLER MACHINE
+U+1F3E8           🏨            \:hotel:                                     HOTEL
+U+1F3E9           🏩            \:love_hotel:                                LOVE HOTEL
+U+1F3EA           🏪            \:convenience_store:                         CONVENIENCE STORE
+U+1F3EB           🏫            \:school:                                    SCHOOL
+U+1F3EC           🏬            \:department_store:                          DEPARTMENT STORE
+U+1F3ED           🏭            \:factory:                                   FACTORY
+U+1F3EE           🏮            \:izakaya_lantern:                           IZAKAYA LANTERN
+U+1F3EF           🏯            \:japanese_castle:                           JAPANESE CASTLE
+U+1F3F0           🏰            \:european_castle:                           EUROPEAN CASTLE
+U+1F3FB           🏻            \:skin-tone-2:                               EMOJI MODIFIER FITZPATRICK TYPE-1-2
+U+1F3FC           🏼            \:skin-tone-3:                               EMOJI MODIFIER FITZPATRICK TYPE-3
+U+1F3FD           🏽            \:skin-tone-4:                               EMOJI MODIFIER FITZPATRICK TYPE-4
+U+1F3FE           🏾            \:skin-tone-5:                               EMOJI MODIFIER FITZPATRICK TYPE-5
+U+1F3FF           🏿            \:skin-tone-6:                               EMOJI MODIFIER FITZPATRICK TYPE-6
+U+1F400           🐀            \:rat:                                       RAT
+U+1F401           🐁            \:mouse2:                                    MOUSE
+U+1F402           🐂            \:ox:                                        OX
+U+1F403           🐃            \:water_buffalo:                             WATER BUFFALO
+U+1F404           🐄            \:cow2:                                      COW
+U+1F405           🐅            \:tiger2:                                    TIGER
+U+1F406           🐆            \:leopard:                                   LEOPARD
+U+1F407           🐇            \:rabbit2:                                   RABBIT
+U+1F408           🐈            \:cat2:                                      CAT
+U+1F409           🐉            \:dragon:                                    DRAGON
+U+1F40A           🐊            \:crocodile:                                 CROCODILE
+U+1F40B           🐋            \:whale2:                                    WHALE
+U+1F40C           🐌            \:snail:                                     SNAIL
+U+1F40D           🐍            \:snake:                                     SNAKE
+U+1F40E           🐎            \:racehorse:                                 HORSE
+U+1F40F           🐏            \:ram:                                       RAM
+U+1F410           🐐            \:goat:                                      GOAT
+U+1F411           🐑            \:sheep:                                     SHEEP
+U+1F412           🐒            \:monkey:                                    MONKEY
+U+1F413           🐓            \:rooster:                                   ROOSTER
+U+1F414           🐔            \:chicken:                                   CHICKEN
+U+1F415           🐕            \:dog2:                                      DOG
+U+1F416           🐖            \:pig2:                                      PIG
+U+1F417           🐗            \:boar:                                      BOAR
+U+1F418           🐘            \:elephant:                                  ELEPHANT
+U+1F419           🐙            \:octopus:                                   OCTOPUS
+U+1F41A           🐚            \:shell:                                     SPIRAL SHELL
+U+1F41B           🐛            \:bug:                                       BUG
+U+1F41C           🐜            \:ant:                                       ANT
+U+1F41D           🐝            \:bee:                                       HONEYBEE
+U+1F41E           🐞            \:beetle:                                    LADY BEETLE
+U+1F41F           🐟            \:fish:                                      FISH
+U+1F420           🐠            \:tropical_fish:                             TROPICAL FISH
+U+1F421           🐡            \:blowfish:                                  BLOWFISH
+U+1F422           🐢            \:turtle:                                    TURTLE
+U+1F423           🐣            \:hatching_chick:                            HATCHING CHICK
+U+1F424           🐤            \:baby_chick:                                BABY CHICK
+U+1F425           🐥            \:hatched_chick:                             FRONT-FACING BABY CHICK
+U+1F426           🐦            \:bird:                                      BIRD
+U+1F427           🐧            \:penguin:                                   PENGUIN
+U+1F428           🐨            \:koala:                                     KOALA
+U+1F429           🐩            \:poodle:                                    POODLE
+U+1F42A           🐪            \:dromedary_camel:                           DROMEDARY CAMEL
+U+1F42B           🐫            \:camel:                                     BACTRIAN CAMEL
+U+1F42C           🐬            \:dolphin:                                   DOLPHIN
+U+1F42D           🐭            \:mouse:                                     MOUSE FACE
+U+1F42E           🐮            \:cow:                                       COW FACE
+U+1F42F           🐯            \:tiger:                                     TIGER FACE
+U+1F430           🐰            \:rabbit:                                    RABBIT FACE
+U+1F431           🐱            \:cat:                                       CAT FACE
+U+1F432           🐲            \:dragon_face:                               DRAGON FACE
+U+1F433           🐳            \:whale:                                     SPOUTING WHALE
+U+1F434           🐴            \:horse:                                     HORSE FACE
+U+1F435           🐵            \:monkey_face:                               MONKEY FACE
+U+1F436           🐶            \:dog:                                       DOG FACE
+U+1F437           🐷            \:pig:                                       PIG FACE
+U+1F438           🐸            \:frog:                                      FROG FACE
+U+1F439           🐹            \:hamster:                                   HAMSTER FACE
+U+1F43A           🐺            \:wolf:                                      WOLF FACE
+U+1F43B           🐻            \:bear:                                      BEAR FACE
+U+1F43C           🐼            \:panda_face:                                PANDA FACE
+U+1F43D           🐽            \:pig_nose:                                  PIG NOSE
+U+1F43E           🐾            \:feet:                                      PAW PRINTS
+U+1F440           👀            \:eyes:                                      EYES
+U+1F442           👂            \:ear:                                       EAR
+U+1F443           👃            \:nose:                                      NOSE
+U+1F444           👄            \:lips:                                      MOUTH
+U+1F445           👅            \:tongue:                                    TONGUE
+U+1F446           👆            \:point_up_2:                                WHITE UP POINTING BACKHAND INDEX
+U+1F447           👇            \:point_down:                                WHITE DOWN POINTING BACKHAND INDEX
+U+1F448           👈            \:point_left:                                WHITE LEFT POINTING BACKHAND INDEX
+U+1F449           👉            \:point_right:                               WHITE RIGHT POINTING BACKHAND INDEX
+U+1F44A           👊            \:facepunch:                                 FISTED HAND SIGN
+U+1F44B           👋            \:wave:                                      WAVING HAND SIGN
+U+1F44C           👌            \:ok_hand:                                   OK HAND SIGN
+U+1F44D           👍            \:+1:                                        THUMBS UP SIGN
+U+1F44E           👎            \:-1:                                        THUMBS DOWN SIGN
+U+1F44F           👏            \:clap:                                      CLAPPING HANDS SIGN
+U+1F450           👐            \:open_hands:                                OPEN HANDS SIGN
+U+1F451           👑            \:crown:                                     CROWN
+U+1F452           👒            \:womans_hat:                                WOMANS HAT
+U+1F453           👓            \:eyeglasses:                                EYEGLASSES
+U+1F454           👔            \:necktie:                                   NECKTIE
+U+1F455           👕            \:shirt:                                     T-SHIRT
+U+1F456           👖            \:jeans:                                     JEANS
+U+1F457           👗            \:dress:                                     DRESS
+U+1F458           👘            \:kimono:                                    KIMONO
+U+1F459           👙            \:bikini:                                    BIKINI
+U+1F45A           👚            \:womans_clothes:                            WOMANS CLOTHES
+U+1F45B           👛            \:purse:                                     PURSE
+U+1F45C           👜            \:handbag:                                   HANDBAG
+U+1F45D           👝            \:pouch:                                     POUCH
+U+1F45E           👞            \:mans_shoe:                                 MANS SHOE
+U+1F45F           👟            \:athletic_shoe:                             ATHLETIC SHOE
+U+1F460           👠            \:high_heel:                                 HIGH-HEELED SHOE
+U+1F461           👡            \:sandal:                                    WOMANS SANDAL
+U+1F462           👢            \:boot:                                      WOMANS BOOTS
+U+1F463           👣            \:footprints:                                FOOTPRINTS
+U+1F464           👤            \:bust_in_silhouette:                        BUST IN SILHOUETTE
+U+1F465           👥            \:busts_in_silhouette:                       BUSTS IN SILHOUETTE
+U+1F466           👦            \:boy:                                       BOY
+U+1F467           👧            \:girl:                                      GIRL
+U+1F468           👨            \:man:                                       MAN
+U+1F469           👩            \:woman:                                     WOMAN
+U+1F46A           👪            \:family:                                    FAMILY
+U+1F46B           👫            \:couple:                                    MAN AND WOMAN HOLDING HANDS
+U+1F46C           👬            \:two_men_holding_hands:                     TWO MEN HOLDING HANDS
+U+1F46D           👭            \:two_women_holding_hands:                   TWO WOMEN HOLDING HANDS
+U+1F46E           👮            \:cop:                                       POLICE OFFICER
+U+1F46F           👯            \:dancers:                                   WOMAN WITH BUNNY EARS
+U+1F470           👰            \:bride_with_veil:                           BRIDE WITH VEIL
+U+1F471           👱            \:person_with_blond_hair:                    PERSON WITH BLOND HAIR
+U+1F472           👲            \:man_with_gua_pi_mao:                       MAN WITH GUA PI MAO
+U+1F473           👳            \:man_with_turban:                           MAN WITH TURBAN
+U+1F474           👴            \:older_man:                                 OLDER MAN
+U+1F475           👵            \:older_woman:                               OLDER WOMAN
+U+1F476           👶            \:baby:                                      BABY
+U+1F477           👷            \:construction_worker:                       CONSTRUCTION WORKER
+U+1F478           👸            \:princess:                                  PRINCESS
+U+1F479           👹            \:japanese_ogre:                             JAPANESE OGRE
+U+1F47A           👺            \:japanese_goblin:                           JAPANESE GOBLIN
+U+1F47B           👻            \:ghost:                                     GHOST
+U+1F47C           👼            \:angel:                                     BABY ANGEL
+U+1F47D           👽            \:alien:                                     EXTRATERRESTRIAL ALIEN
+U+1F47E           👾            \:space_invader:                             ALIEN MONSTER
+U+1F47F           👿            \:imp:                                       IMP
+U+1F480           💀            \:skull:                                     SKULL
+U+1F481           💁            \:information_desk_person:                   INFORMATION DESK PERSON
+U+1F482           💂            \:guardsman:                                 GUARDSMAN
+U+1F483           💃            \:dancer:                                    DANCER
+U+1F484           💄            \:lipstick:                                  LIPSTICK
+U+1F485           💅            \:nail_care:                                 NAIL POLISH
+U+1F486           💆            \:massage:                                   FACE MASSAGE
+U+1F487           💇            \:haircut:                                   HAIRCUT
+U+1F488           💈            \:barber:                                    BARBER POLE
+U+1F489           💉            \:syringe:                                   SYRINGE
+U+1F48A           💊            \:pill:                                      PILL
+U+1F48B           💋            \:kiss:                                      KISS MARK
+U+1F48C           💌            \:love_letter:                               LOVE LETTER
+U+1F48D           💍            \:ring:                                      RING
+U+1F48E           💎            \:gem:                                       GEM STONE
+U+1F48F           💏            \:couplekiss:                                KISS
+U+1F490           💐            \:bouquet:                                   BOUQUET
+U+1F491           💑            \:couple_with_heart:                         COUPLE WITH HEART
+U+1F492           💒            \:wedding:                                   WEDDING
+U+1F493           💓            \:heartbeat:                                 BEATING HEART
+U+1F494           💔            \:broken_heart:                              BROKEN HEART
+U+1F495           💕            \:two_hearts:                                TWO HEARTS
+U+1F496           💖            \:sparkling_heart:                           SPARKLING HEART
+U+1F497           💗            \:heartpulse:                                GROWING HEART
+U+1F498           💘            \:cupid:                                     HEART WITH ARROW
+U+1F499           💙            \:blue_heart:                                BLUE HEART
+U+1F49A           💚            \:green_heart:                               GREEN HEART
+U+1F49B           💛            \:yellow_heart:                              YELLOW HEART
+U+1F49C           💜            \:purple_heart:                              PURPLE HEART
+U+1F49D           💝            \:gift_heart:                                HEART WITH RIBBON
+U+1F49E           💞            \:revolving_hearts:                          REVOLVING HEARTS
+U+1F49F           💟            \:heart_decoration:                          HEART DECORATION
+U+1F4A0           💠            \:diamond_shape_with_a_dot_inside:           DIAMOND SHAPE WITH A DOT INSIDE
+U+1F4A1           💡            \:bulb:                                      ELECTRIC LIGHT BULB
+U+1F4A2           💢            \:anger:                                     ANGER SYMBOL
+U+1F4A3           💣            \:bomb:                                      BOMB
+U+1F4A4           💤            \:zzz:                                       SLEEPING SYMBOL
+U+1F4A5           💥            \:boom:                                      COLLISION SYMBOL
+U+1F4A6           💦            \:sweat_drops:                               SPLASHING SWEAT SYMBOL
+U+1F4A7           💧            \:droplet:                                   DROPLET
+U+1F4A8           💨            \:dash:                                      DASH SYMBOL
+U+1F4A9           💩            \:hankey:                                    PILE OF POO
+U+1F4AA           💪            \:muscle:                                    FLEXED BICEPS
+U+1F4AB           💫            \:dizzy:                                     DIZZY SYMBOL
+U+1F4AC           💬            \:speech_balloon:                            SPEECH BALLOON
+U+1F4AD           💭            \:thought_balloon:                           THOUGHT BALLOON
+U+1F4AE           💮            \:white_flower:                              WHITE FLOWER
+U+1F4AF           💯            \:100:                                       HUNDRED POINTS SYMBOL
+U+1F4B0           💰            \:moneybag:                                  MONEY BAG
+U+1F4B1           💱            \:currency_exchange:                         CURRENCY EXCHANGE
+U+1F4B2           💲            \:heavy_dollar_sign:                         HEAVY DOLLAR SIGN
+U+1F4B3           💳            \:credit_card:                               CREDIT CARD
+U+1F4B4           💴            \:yen:                                       BANKNOTE WITH YEN SIGN
+U+1F4B5           💵            \:dollar:                                    BANKNOTE WITH DOLLAR SIGN
+U+1F4B6           💶            \:euro:                                      BANKNOTE WITH EURO SIGN
+U+1F4B7           💷            \:pound:                                     BANKNOTE WITH POUND SIGN
+U+1F4B8           💸            \:money_with_wings:                          MONEY WITH WINGS
+U+1F4B9           💹            \:chart:                                     CHART WITH UPWARDS TREND AND YEN SIGN
+U+1F4BA           💺            \:seat:                                      SEAT
+U+1F4BB           💻            \:computer:                                  PERSONAL COMPUTER
+U+1F4BC           💼            \:briefcase:                                 BRIEFCASE
+U+1F4BD           💽            \:minidisc:                                  MINIDISC
+U+1F4BE           💾            \:floppy_disk:                               FLOPPY DISK
+U+1F4BF           💿            \:cd:                                        OPTICAL DISC
+U+1F4C0           📀            \:dvd:                                       DVD
+U+1F4C1           📁            \:file_folder:                               FILE FOLDER
+U+1F4C2           📂            \:open_file_folder:                          OPEN FILE FOLDER
+U+1F4C3           📃            \:page_with_curl:                            PAGE WITH CURL
+U+1F4C4           📄            \:page_facing_up:                            PAGE FACING UP
+U+1F4C5           📅            \:date:                                      CALENDAR
+U+1F4C6           📆            \:calendar:                                  TEAR-OFF CALENDAR
+U+1F4C7           📇            \:card_index:                                CARD INDEX
+U+1F4C8           📈            \:chart_with_upwards_trend:                  CHART WITH UPWARDS TREND
+U+1F4C9           📉            \:chart_with_downwards_trend:                CHART WITH DOWNWARDS TREND
+U+1F4CA           📊            \:bar_chart:                                 BAR CHART
+U+1F4CB           📋            \:clipboard:                                 CLIPBOARD
+U+1F4CC           📌            \:pushpin:                                   PUSHPIN
+U+1F4CD           📍            \:round_pushpin:                             ROUND PUSHPIN
+U+1F4CE           📎            \:paperclip:                                 PAPERCLIP
+U+1F4CF           📏            \:straight_ruler:                            STRAIGHT RULER
+U+1F4D0           📐            \:triangular_ruler:                          TRIANGULAR RULER
+U+1F4D1           📑            \:bookmark_tabs:                             BOOKMARK TABS
+U+1F4D2           📒            \:ledger:                                    LEDGER
+U+1F4D3           📓            \:notebook:                                  NOTEBOOK
+U+1F4D4           📔            \:notebook_with_decorative_cover:            NOTEBOOK WITH DECORATIVE COVER
+U+1F4D5           📕            \:closed_book:                               CLOSED BOOK
+U+1F4D6           📖            \:book:                                      OPEN BOOK
+U+1F4D7           📗            \:green_book:                                GREEN BOOK
+U+1F4D8           📘            \:blue_book:                                 BLUE BOOK
+U+1F4D9           📙            \:orange_book:                               ORANGE BOOK
+U+1F4DA           📚            \:books:                                     BOOKS
+U+1F4DB           📛            \:name_badge:                                NAME BADGE
+U+1F4DC           📜            \:scroll:                                    SCROLL
+U+1F4DD           📝            \:memo:                                      MEMO
+U+1F4DE           📞            \:telephone_receiver:                        TELEPHONE RECEIVER
+U+1F4DF           📟            \:pager:                                     PAGER
+U+1F4E0           📠            \:fax:                                       FAX MACHINE
+U+1F4E1           📡            \:satellite:                                 SATELLITE ANTENNA
+U+1F4E2           📢            \:loudspeaker:                               PUBLIC ADDRESS LOUDSPEAKER
+U+1F4E3           📣            \:mega:                                      CHEERING MEGAPHONE
+U+1F4E4           📤            \:outbox_tray:                               OUTBOX TRAY
+U+1F4E5           📥            \:inbox_tray:                                INBOX TRAY
+U+1F4E6           📦            \:package:                                   PACKAGE
+U+1F4E7           📧            \:e-mail:                                    E-MAIL SYMBOL
+U+1F4E8           📨            \:incoming_envelope:                         INCOMING ENVELOPE
+U+1F4E9           📩            \:envelope_with_arrow:                       ENVELOPE WITH DOWNWARDS ARROW ABOVE
+U+1F4EA           📪            \:mailbox_closed:                            CLOSED MAILBOX WITH LOWERED FLAG
+U+1F4EB           📫            \:mailbox:                                   CLOSED MAILBOX WITH RAISED FLAG
+U+1F4EC           📬            \:mailbox_with_mail:                         OPEN MAILBOX WITH RAISED FLAG
+U+1F4ED           📭            \:mailbox_with_no_mail:                      OPEN MAILBOX WITH LOWERED FLAG
+U+1F4EE           📮            \:postbox:                                   POSTBOX
+U+1F4EF           📯            \:postal_horn:                               POSTAL HORN
+U+1F4F0           📰            \:newspaper:                                 NEWSPAPER
+U+1F4F1           📱            \:iphone:                                    MOBILE PHONE
+U+1F4F2           📲            \:calling:                                   MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT
+U+1F4F3           📳            \:vibration_mode:                            VIBRATION MODE
+U+1F4F4           📴            \:mobile_phone_off:                          MOBILE PHONE OFF
+U+1F4F5           📵            \:no_mobile_phones:                          NO MOBILE PHONES
+U+1F4F6           📶            \:signal_strength:                           ANTENNA WITH BARS
+U+1F4F7           📷            \:camera:                                    CAMERA
+U+1F4F9           📹            \:video_camera:                              VIDEO CAMERA
+U+1F4FA           📺            \:tv:                                        TELEVISION
+U+1F4FB           📻            \:radio:                                     RADIO
+U+1F4FC           📼            \:vhs:                                       VIDEOCASSETTE
+U+1F500           🔀            \:twisted_rightwards_arrows:                 TWISTED RIGHTWARDS ARROWS
+U+1F501           🔁            \:repeat:                                    CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS
+U+1F502           🔂            \:repeat_one:                                CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY
+U+1F503           🔃            \:arrows_clockwise:                          CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS
+U+1F504           🔄            \:arrows_counterclockwise:                   ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS
+U+1F505           🔅            \:low_brightness:                            LOW BRIGHTNESS SYMBOL
+U+1F506           🔆            \:high_brightness:                           HIGH BRIGHTNESS SYMBOL
+U+1F507           🔇            \:mute:                                      SPEAKER WITH CANCELLATION STROKE
+U+1F508           🔈            \:speaker:                                   SPEAKER
+U+1F509           🔉            \:sound:                                     SPEAKER WITH ONE SOUND WAVE
+U+1F50A           🔊            \:loud_sound:                                SPEAKER WITH THREE SOUND WAVES
+U+1F50B           🔋            \:battery:                                   BATTERY
+U+1F50C           🔌            \:electric_plug:                             ELECTRIC PLUG
+U+1F50D           🔍            \:mag:                                       LEFT-POINTING MAGNIFYING GLASS
+U+1F50E           🔎            \:mag_right:                                 RIGHT-POINTING MAGNIFYING GLASS
+U+1F50F           🔏            \:lock_with_ink_pen:                         LOCK WITH INK PEN
+U+1F510           🔐            \:closed_lock_with_key:                      CLOSED LOCK WITH KEY
+U+1F511           🔑            \:key:                                       KEY
+U+1F512           🔒            \:lock:                                      LOCK
+U+1F513           🔓            \:unlock:                                    OPEN LOCK
+U+1F514           🔔            \:bell:                                      BELL
+U+1F515           🔕            \:no_bell:                                   BELL WITH CANCELLATION STROKE
+U+1F516           🔖            \:bookmark:                                  BOOKMARK
+U+1F517           🔗            \:link:                                      LINK SYMBOL
+U+1F518           🔘            \:radio_button:                              RADIO BUTTON
+U+1F519           🔙            \:back:                                      BACK WITH LEFTWARDS ARROW ABOVE
+U+1F51A           🔚            \:end:                                       END WITH LEFTWARDS ARROW ABOVE
+U+1F51B           🔛            \:on:                                        ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE
+U+1F51C           🔜            \:soon:                                      SOON WITH RIGHTWARDS ARROW ABOVE
+U+1F51D           🔝            \:top:                                       TOP WITH UPWARDS ARROW ABOVE
+U+1F51E           🔞            \:underage:                                  NO ONE UNDER EIGHTEEN SYMBOL
+U+1F51F           🔟            \:keycap_ten:                                KEYCAP TEN
+U+1F520           🔠            \:capital_abcd:                              INPUT SYMBOL FOR LATIN CAPITAL LETTERS
+U+1F521           🔡            \:abcd:                                      INPUT SYMBOL FOR LATIN SMALL LETTERS
+U+1F522           🔢            \:1234:                                      INPUT SYMBOL FOR NUMBERS
+U+1F523           🔣            \:symbols:                                   INPUT SYMBOL FOR SYMBOLS
+U+1F524           🔤            \:abc:                                       INPUT SYMBOL FOR LATIN LETTERS
+U+1F525           🔥            \:fire:                                      FIRE
+U+1F526           🔦            \:flashlight:                                ELECTRIC TORCH
+U+1F527           🔧            \:wrench:                                    WRENCH
+U+1F528           🔨            \:hammer:                                    HAMMER
+U+1F529           🔩            \:nut_and_bolt:                              NUT AND BOLT
+U+1F52A           🔪            \:hocho:                                     HOCHO
+U+1F52B           🔫            \:gun:                                       PISTOL
+U+1F52C           🔬            \:microscope:                                MICROSCOPE
+U+1F52D           🔭            \:telescope:                                 TELESCOPE
+U+1F52E           🔮            \:crystal_ball:                              CRYSTAL BALL
+U+1F52F           🔯            \:six_pointed_star:                          SIX POINTED STAR WITH MIDDLE DOT
+U+1F530           🔰            \:beginner:                                  JAPANESE SYMBOL FOR BEGINNER
+U+1F531           🔱            \:trident:                                   TRIDENT EMBLEM
+U+1F532           🔲            \:black_square_button:                       BLACK SQUARE BUTTON
+U+1F533           🔳            \:white_square_button:                       WHITE SQUARE BUTTON
+U+1F534           🔴            \:red_circle:                                LARGE RED CIRCLE
+U+1F535           🔵            \:large_blue_circle:                         LARGE BLUE CIRCLE
+U+1F536           🔶            \:large_orange_diamond:                      LARGE ORANGE DIAMOND
+U+1F537           🔷            \:large_blue_diamond:                        LARGE BLUE DIAMOND
+U+1F538           🔸            \:small_orange_diamond:                      SMALL ORANGE DIAMOND
+U+1F539           🔹            \:small_blue_diamond:                        SMALL BLUE DIAMOND
+U+1F53A           🔺            \:small_red_triangle:                        UP-POINTING RED TRIANGLE
+U+1F53B           🔻            \:small_red_triangle_down:                   DOWN-POINTING RED TRIANGLE
+U+1F53C           🔼            \:arrow_up_small:                            UP-POINTING SMALL RED TRIANGLE
+U+1F53D           🔽            \:arrow_down_small:                          DOWN-POINTING SMALL RED TRIANGLE
+U+1F550           🕐            \:clock1:                                    CLOCK FACE ONE OCLOCK
+U+1F551           🕑            \:clock2:                                    CLOCK FACE TWO OCLOCK
+U+1F552           🕒            \:clock3:                                    CLOCK FACE THREE OCLOCK
+U+1F553           🕓            \:clock4:                                    CLOCK FACE FOUR OCLOCK
+U+1F554           🕔            \:clock5:                                    CLOCK FACE FIVE OCLOCK
+U+1F555           🕕            \:clock6:                                    CLOCK FACE SIX OCLOCK
+U+1F556           🕖            \:clock7:                                    CLOCK FACE SEVEN OCLOCK
+U+1F557           🕗            \:clock8:                                    CLOCK FACE EIGHT OCLOCK
+U+1F558           🕘            \:clock9:                                    CLOCK FACE NINE OCLOCK
+U+1F559           🕙            \:clock10:                                   CLOCK FACE TEN OCLOCK
+U+1F55A           🕚            \:clock11:                                   CLOCK FACE ELEVEN OCLOCK
+U+1F55B           🕛            \:clock12:                                   CLOCK FACE TWELVE OCLOCK
+U+1F55C           🕜            \:clock130:                                  CLOCK FACE ONE-THIRTY
+U+1F55D           🕝            \:clock230:                                  CLOCK FACE TWO-THIRTY
+U+1F55E           🕞            \:clock330:                                  CLOCK FACE THREE-THIRTY
+U+1F55F           🕟            \:clock430:                                  CLOCK FACE FOUR-THIRTY
+U+1F560           🕠            \:clock530:                                  CLOCK FACE FIVE-THIRTY
+U+1F561           🕡            \:clock630:                                  CLOCK FACE SIX-THIRTY
+U+1F562           🕢            \:clock730:                                  CLOCK FACE SEVEN-THIRTY
+U+1F563           🕣            \:clock830:                                  CLOCK FACE EIGHT-THIRTY
+U+1F564           🕤            \:clock930:                                  CLOCK FACE NINE-THIRTY
+U+1F565           🕥            \:clock1030:                                 CLOCK FACE TEN-THIRTY
+U+1F566           🕦            \:clock1130:                                 CLOCK FACE ELEVEN-THIRTY
+U+1F567           🕧            \:clock1230:                                 CLOCK FACE TWELVE-THIRTY
+U+1F5FB           🗻            \:mount_fuji:                                MOUNT FUJI
+U+1F5FC           🗼            \:tokyo_tower:                               TOKYO TOWER
+U+1F5FD           🗽            \:statue_of_liberty:                         STATUE OF LIBERTY
+U+1F5FE           🗾            \:japan:                                     SILHOUETTE OF JAPAN
+U+1F5FF           🗿            \:moyai:                                     MOYAI
+U+1F600           😀            \:grinning:                                  GRINNING FACE
+U+1F601           😁            \:grin:                                      GRINNING FACE WITH SMILING EYES
+U+1F602           😂            \:joy:                                       FACE WITH TEARS OF JOY
+U+1F603           😃            \:smiley:                                    SMILING FACE WITH OPEN MOUTH
+U+1F604           😄            \:smile:                                     SMILING FACE WITH OPEN MOUTH AND SMILING EYES
+U+1F605           😅            \:sweat_smile:                               SMILING FACE WITH OPEN MOUTH AND COLD SWEAT
+U+1F606           😆            \:laughing:                                  SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES
+U+1F607           😇            \:innocent:                                  SMILING FACE WITH HALO
+U+1F608           😈            \:smiling_imp:                               SMILING FACE WITH HORNS
+U+1F609           😉            \:wink:                                      WINKING FACE
+U+1F60A           😊            \:blush:                                     SMILING FACE WITH SMILING EYES
+U+1F60B           😋            \:yum:                                       FACE SAVOURING DELICIOUS FOOD
+U+1F60C           😌            \:relieved:                                  RELIEVED FACE
+U+1F60D           😍            \:heart_eyes:                                SMILING FACE WITH HEART-SHAPED EYES
+U+1F60E           😎            \:sunglasses:                                SMILING FACE WITH SUNGLASSES
+U+1F60F           😏            \:smirk:                                     SMIRKING FACE
+U+1F610           😐            \:neutral_face:                              NEUTRAL FACE
+U+1F611           😑            \:expressionless:                            EXPRESSIONLESS FACE
+U+1F612           😒            \:unamused:                                  UNAMUSED FACE
+U+1F613           😓            \:sweat:                                     FACE WITH COLD SWEAT
+U+1F614           😔            \:pensive:                                   PENSIVE FACE
+U+1F615           😕            \:confused:                                  CONFUSED FACE
+U+1F616           😖            \:confounded:                                CONFOUNDED FACE
+U+1F617           😗            \:kissing:                                   KISSING FACE
+U+1F618           😘            \:kissing_heart:                             FACE THROWING A KISS
+U+1F619           😙            \:kissing_smiling_eyes:                      KISSING FACE WITH SMILING EYES
+U+1F61A           😚            \:kissing_closed_eyes:                       KISSING FACE WITH CLOSED EYES
+U+1F61B           😛            \:stuck_out_tongue:                          FACE WITH STUCK-OUT TONGUE
+U+1F61C           😜            \:stuck_out_tongue_winking_eye:              FACE WITH STUCK-OUT TONGUE AND WINKING EYE
+U+1F61D           😝            \:stuck_out_tongue_closed_eyes:              FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES
+U+1F61E           😞            \:disappointed:                              DISAPPOINTED FACE
+U+1F61F           😟            \:worried:                                   WORRIED FACE
+U+1F620           😠            \:angry:                                     ANGRY FACE
+U+1F621           😡            \:rage:                                      POUTING FACE
+U+1F622           😢            \:cry:                                       CRYING FACE
+U+1F623           😣            \:persevere:                                 PERSEVERING FACE
+U+1F624           😤            \:triumph:                                   FACE WITH LOOK OF TRIUMPH
+U+1F625           😥            \:disappointed_relieved:                     DISAPPOINTED BUT RELIEVED FACE
+U+1F626           😦            \:frowning:                                  FROWNING FACE WITH OPEN MOUTH
+U+1F627           😧            \:anguished:                                 ANGUISHED FACE
+U+1F628           😨            \:fearful:                                   FEARFUL FACE
+U+1F629           😩            \:weary:                                     WEARY FACE
+U+1F62A           😪            \:sleepy:                                    SLEEPY FACE
+U+1F62B           😫            \:tired_face:                                TIRED FACE
+U+1F62C           😬            \:grimacing:                                 GRIMACING FACE
+U+1F62D           😭            \:sob:                                       LOUDLY CRYING FACE
+U+1F62E           😮            \:open_mouth:                                FACE WITH OPEN MOUTH
+U+1F62F           😯            \:hushed:                                    HUSHED FACE
+U+1F630           😰            \:cold_sweat:                                FACE WITH OPEN MOUTH AND COLD SWEAT
+U+1F631           😱            \:scream:                                    FACE SCREAMING IN FEAR
+U+1F632           😲            \:astonished:                                ASTONISHED FACE
+U+1F633           😳            \:flushed:                                   FLUSHED FACE
+U+1F634           😴            \:sleeping:                                  SLEEPING FACE
+U+1F635           😵            \:dizzy_face:                                DIZZY FACE
+U+1F636           😶            \:no_mouth:                                  FACE WITHOUT MOUTH
+U+1F637           😷            \:mask:                                      FACE WITH MEDICAL MASK
+U+1F638           😸            \:smile_cat:                                 GRINNING CAT FACE WITH SMILING EYES
+U+1F639           😹            \:joy_cat:                                   CAT FACE WITH TEARS OF JOY
+U+1F63A           😺            \:smiley_cat:                                SMILING CAT FACE WITH OPEN MOUTH
+U+1F63B           😻            \:heart_eyes_cat:                            SMILING CAT FACE WITH HEART-SHAPED EYES
+U+1F63C           😼            \:smirk_cat:                                 CAT FACE WITH WRY SMILE
+U+1F63D           😽            \:kissing_cat:                               KISSING CAT FACE WITH CLOSED EYES
+U+1F63E           😾            \:pouting_cat:                               POUTING CAT FACE
+U+1F63F           😿            \:crying_cat_face:                           CRYING CAT FACE
+U+1F640           🙀            \:scream_cat:                                WEARY CAT FACE
+U+1F645           🙅            \:no_good:                                   FACE WITH NO GOOD GESTURE
+U+1F646           🙆            \:ok_woman:                                  FACE WITH OK GESTURE
+U+1F647           🙇            \:bow:                                       PERSON BOWING DEEPLY
+U+1F648           🙈            \:see_no_evil:                               SEE-NO-EVIL MONKEY
+U+1F649           🙉            \:hear_no_evil:                              HEAR-NO-EVIL MONKEY
+U+1F64A           🙊            \:speak_no_evil:                             SPEAK-NO-EVIL MONKEY
+U+1F64B           🙋            \:raising_hand:                              HAPPY PERSON RAISING ONE HAND
+U+1F64C           🙌            \:raised_hands:                              PERSON RAISING BOTH HANDS IN CELEBRATION
+U+1F64D           🙍            \:person_frowning:                           PERSON FROWNING
+U+1F64E           🙎            \:person_with_pouting_face:                  PERSON WITH POUTING FACE
+U+1F64F           🙏            \:pray:                                      PERSON WITH FOLDED HANDS
+U+1F680           🚀            \:rocket:                                    ROCKET
+U+1F681           🚁            \:helicopter:                                HELICOPTER
+U+1F682           🚂            \:steam_locomotive:                          STEAM LOCOMOTIVE
+U+1F683           🚃            \:railway_car:                               RAILWAY CAR
+U+1F684           🚄            \:bullettrain_side:                          HIGH-SPEED TRAIN
+U+1F685           🚅            \:bullettrain_front:                         HIGH-SPEED TRAIN WITH BULLET NOSE
+U+1F686           🚆            \:train2:                                    TRAIN
+U+1F687           🚇            \:metro:                                     METRO
+U+1F688           🚈            \:light_rail:                                LIGHT RAIL
+U+1F689           🚉            \:station:                                   STATION
+U+1F68A           🚊            \:tram:                                      TRAM
+U+1F68B           🚋            \:train:                                     TRAM CAR
+U+1F68C           🚌            \:bus:                                       BUS
+U+1F68D           🚍            \:oncoming_bus:                              ONCOMING BUS
+U+1F68E           🚎            \:trolleybus:                                TROLLEYBUS
+U+1F68F           🚏            \:busstop:                                   BUS STOP
+U+1F690           🚐            \:minibus:                                   MINIBUS
+U+1F691           🚑            \:ambulance:                                 AMBULANCE
+U+1F692           🚒            \:fire_engine:                               FIRE ENGINE
+U+1F693           🚓            \:police_car:                                POLICE CAR
+U+1F694           🚔            \:oncoming_police_car:                       ONCOMING POLICE CAR
+U+1F695           🚕            \:taxi:                                      TAXI
+U+1F696           🚖            \:oncoming_taxi:                             ONCOMING TAXI
+U+1F697           🚗            \:car:                                       AUTOMOBILE
+U+1F698           🚘            \:oncoming_automobile:                       ONCOMING AUTOMOBILE
+U+1F699           🚙            \:blue_car:                                  RECREATIONAL VEHICLE
+U+1F69A           🚚            \:truck:                                     DELIVERY TRUCK
+U+1F69B           🚛            \:articulated_lorry:                         ARTICULATED LORRY
+U+1F69C           🚜            \:tractor:                                   TRACTOR
+U+1F69D           🚝            \:monorail:                                  MONORAIL
+U+1F69E           🚞            \:mountain_railway:                          MOUNTAIN RAILWAY
+U+1F69F           🚟            \:suspension_railway:                        SUSPENSION RAILWAY
+U+1F6A0           🚠            \:mountain_cableway:                         MOUNTAIN CABLEWAY
+U+1F6A1           🚡            \:aerial_tramway:                            AERIAL TRAMWAY
+U+1F6A2           🚢            \:ship:                                      SHIP
+U+1F6A3           🚣            \:rowboat:                                   ROWBOAT
+U+1F6A4           🚤            \:speedboat:                                 SPEEDBOAT
+U+1F6A5           🚥            \:traffic_light:                             HORIZONTAL TRAFFIC LIGHT
+U+1F6A6           🚦            \:vertical_traffic_light:                    VERTICAL TRAFFIC LIGHT
+U+1F6A7           🚧            \:construction:                              CONSTRUCTION SIGN
+U+1F6A8           🚨            \:rotating_light:                            POLICE CARS REVOLVING LIGHT
+U+1F6A9           🚩            \:triangular_flag_on_post:                   TRIANGULAR FLAG ON POST
+U+1F6AA           🚪            \:door:                                      DOOR
+U+1F6AB           🚫            \:no_entry_sign:                             NO ENTRY SIGN
+U+1F6AC           🚬            \:smoking:                                   SMOKING SYMBOL
+U+1F6AD           🚭            \:no_smoking:                                NO SMOKING SYMBOL
+U+1F6AE           🚮            \:put_litter_in_its_place:                   PUT LITTER IN ITS PLACE SYMBOL
+U+1F6AF           🚯            \:do_not_litter:                             DO NOT LITTER SYMBOL
+U+1F6B0           🚰            \:potable_water:                             POTABLE WATER SYMBOL
+U+1F6B1           🚱            \:non-potable_water:                         NON-POTABLE WATER SYMBOL
+U+1F6B2           🚲            \:bike:                                      BICYCLE
+U+1F6B3           🚳            \:no_bicycles:                               NO BICYCLES
+U+1F6B4           🚴            \:bicyclist:                                 BICYCLIST
+U+1F6B5           🚵            \:mountain_bicyclist:                        MOUNTAIN BICYCLIST
+U+1F6B6           🚶            \:walking:                                   PEDESTRIAN
+U+1F6B7           🚷            \:no_pedestrians:                            NO PEDESTRIANS
+U+1F6B8           🚸            \:children_crossing:                         CHILDREN CROSSING
+U+1F6B9           🚹            \:mens:                                      MENS SYMBOL
+U+1F6BA           🚺            \:womens:                                    WOMENS SYMBOL
+U+1F6BB           🚻            \:restroom:                                  RESTROOM
+U+1F6BC           🚼            \:baby_symbol:                               BABY SYMBOL
+U+1F6BD           🚽            \:toilet:                                    TOILET
+U+1F6BE           🚾            \:wc:                                        WATER CLOSET
+U+1F6BF           🚿            \:shower:                                    SHOWER
+U+1F6C0           🛀            \:bath:                                      BATH
+U+1F6C1           🛁            \:bathtub:                                   BATHTUB
+U+1F6C2           🛂            \:passport_control:                          PASSPORT CONTROL
+U+1F6C3           🛃            \:customs:                                   CUSTOMS
+U+1F6C4           🛄            \:baggage_claim:                             BAGGAGE CLAIM
+U+1F6C5           🛅            \:left_luggage:                              LEFT LUGGAGE
+----------------- ------------ -------------------------------------------- --------------------------------------------------------------------------------------------------------
+
+  vim:tw=180:et:ft=help:norl:
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/julia-vim-L2U.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/julia-vim-L2U.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/julia-vim-L2U.txt	(revision 27955)
@@ -0,0 +1,410 @@
+*julia-vim-L2U.txt*  Support for LaTeX-to-Unicode substitutions
+
+Author:  Carlo Baldassi <carlobaldassi@gmail.com>
+License: MIT license  {{{
+    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.
+}}}
+CONTENTS					*julia-vim-L2U*
+
+LaTeX-to-Unicode substitutions      |julia-vim-L2U-introdction|
+  Via Tab key                       |julia-vim-L2U-tab|
+  As you type                       |julia-vim-L2U-as-you-type|
+  Via Keymap                        |julia-vim-L2U-keymap|
+  On different file types           |julia-vim-L2U-file-types|
+  Enabling and disabling            |julia-vim-L2U-enable-disable|
+Variables                           |julia-vim-L2U-variables|
+Functions                           |julia-vim-L2U-functions|
+
+==============================================================================
+LATEX TO UNICODE                              *julia-vim-L2U-introduction*
+
+In the Julia REPL, entering a LaTeX-like sequence such as `\alpha` and pressing
+the <Tab> key substitutes it with a Unicode character such as `α`. The Julia
+REPL also provides partial completions, and suggestions for possible
+completions upon repeated pressing of the <Tab> key. Emojis are also
+available, with their names written between colons, e.g. `\:interrobang:`
+produces `⁉`.
+
+See |julia-vim-L2U-reference| for the complete table of substitutions.
+
+This Vim plug-in also provides the functionality needed to convert LaTeX
+input sequences into Unicode characters. There are 3 different methods
+available:
+
+  1. The default one is the most similar to the Julia one: substitutions are
+     triggered by pressing the <Tab> key; if a partial match is found a list
+     of suggested completions is presented in a menu together with their
+     Unicode counterpart. The exact behaviour of this feature can be
+     customized, see |julia-vim-L2U-tab|.
+
+  2. The second one substitutes symbols on the fly as you type, but only in
+     |Insert| mode. See |julia-vim-L2U-as-you-type|.
+
+  3. The third is based on |keymap|. It also substitutes as-you-type, but it
+     doesn't show you the full LaTeX sequence as you're typing it, and there
+     is a time-out. Its main advantage over the previous one is that can be
+     used in more circumstances, e.g. in |Command-line| mode or when searching
+     for a character with |f| or |t|, as explained in |language-mapping|. See
+     |julia-vim-L2U-keymap|.
+
+All of these methods are independent and can be used together without issues.
+
+The default configuration is to use the first method, and it's only active
+when editing Julia files. It only works in |Insert| and |Command-line| modes.
+
+It is possible to enable it with other file types, see
+|julia-vim-L2U-file-types|, and it can be even turned on/off on the fly
+regardless of the file type, see |julia-vim-L2U-enable-disable|.
+
+In |Command-line| mode, e.g. when searching with the |/| or |?| commands, the
+default behavior is very similar to the default |Insert| mode behavior, but
+slightly more limited, see |julia-vim-L2U-cmdmode|.
+
+These features only work as described with Vim version 7.4 or higher. Tab
+completion can still be made available on lower Vim versions, see
+|julia-vim-L2U-workaround|. The keymap mode might work but it hasn't been
+tested.
+
+See |julia-vim| for the general reference about the other features of the
+julia-vim plug-in.
+
+------------------------------------------------------------------------------
+LATEX TO UNICODE VIA TAB KEY                            *julia-vim-L2U-tab*
+
+Substitution of LaTeX sequences when pressing the <Tab> key (in |Insert| mode or
+in |Command-line| modes) is active by default. Use |g:latex_to_unicode_tab| to
+control it.
+
+When this feature is active, the julia-vim plug-in creates a mapping for the
+<Tab> key (in |Insert| mode) which takes precedence on any previously defined
+mapping assigned to it, such that when the <Tab> key is pressed the plug-in
+looks for potential LaTeX symbol matches before the cursor, and if it fails to
+find anything of interest it will fall-back to the previous mapping for <Tab>
+(with default Vim settings, this means it will insert a literal <Tab>; but if
+you have defined some other behavior for that key, e.g. by installing another
+plug-in such as supertab (https://github.com/ervandew/supertab) than that will
+be used).
+
+For example, entering this text in a file:
+>
+    1 + \alpha
+<
+and then pressing <Tab>, results in:
+>
+    1 + α
+<
+
+This feature is associated with 'completefunc' completion, and therefore can
+always be accessed via CTRL-X CTRL-U, even when |g:latex_to_unicode_tab| is
+off.
+
+A literal <Tab> key can always be entered by using CTRL-V before <Tab> (see
+|i_CTRL-V|).
+
+Partial sequence recognition triggers auto-completion (performed as if the
+`longest` setting was used in 'completeopt') and shows a menu of suggestions
+together with their corresponding Unicode symbol (provided the `menu` setting
+is included in 'completeopt', and more then one match is found). So for
+example, entering `\al` and pressing <Tab> will result in the following list:
+>
+    +-------------+
+    | \aleph    ℵ |
+    | \allequal ≌ |
+    | \alpha    α |
+    +-------------+
+>
+Then, pressing `p` will reduce the list to `\alpha`, pressing <Tab> will
+complete it and pressing <Tab> again will perform the substitution.
+
+The completion menu can be disbled, and this will happen automatically if a
+plug-in which is known to be incompatible with this feature is detected: see
+|g:latex_to_unicode_suggestions|.
+
+Some LaTeX sequences can be valid both as they are and as partial matches for
+other sequences, e.g. `\ne` is associated with `≠`, but it is also a partial
+match for `\nequiv` (`≢`). By default, if <Tab> finds an exact match it performs
+the substitution, but this can be controlled by the |g:latex_to_unicode_eager|
+setting.
+
+Command-line mode                                      *julia-vim-L2U-cmdmode*
+
+In |Command-line| mode, the behavior is largely the same except that both
+<Tab> and <S-Tab> are mapped by default, and the functionality is slightly
+more limited. No suggestions are shown for partial completions. Pre-existing
+user-defined mappings of <Tab> are overridden. In order to avoid that, the
+completion can be mapped onto a defferent key combination, see
+|g:latex_to_unicode_cmd_mapping|. When using <Tab>, if no matches are found
+the behavior falls back to the standard Vim command-line completion.
+
+Vim versions lower than 7.4                     *julia-vim-L2U-workaround*
+
+The <Tab> key remapping is not performed by default with Vim versions lower
+than 7.4. However, the functionality is still available via user-defined
+completion, which is accessible by the CTRL-X CTRL-U key combination. You
+can map some other key combination to this by adding something like
+>
+  inoremap <C-Tab> <C-X><C-U>
+<
+in your |.vimrc| file. If you'd map <Tab> directly, then you'd need to use
+CTRL-V <Tab> to insert a literal <Tab>.
+
+The settings |g:latex_to_unicode_eager| and |g:latex_to_unicode_suggestions|
+are still meaningful in this case.
+
+------------------------------------------------------------------------------
+LATEX TO UNICODE AS YOU TYPE                    *julia-vim-L2U-as-you-type*
+
+This feature is disabled by default, see |g:latex_to_unicode_auto|, and it is
+only available with Vim version 7.4 or higher. It consists in substituting
+valid LaTeX sequences with Unicode symbols automatically as the typing
+progresses, as soon as the sequences is unambiguously complete. For example,
+when typing:
+>
+    \chi\^2 = 1
+<
+The result is
+>
+    χ² = 1
+<
+The `\chi` is substituted right when the second backslash is entered, and the
+`\^2` is substituted when the following space is entered, before the equal
+sign.
+
+This feature does not currently work with emojis.
+
+This feature does not interfere with the <Tab> based substitution.
+
+------------------------------------------------------------------------------
+LATEX TO UNICODE VIA KEYMAP                          *julia-vim-L2U-keymap*
+
+This method is somewhat similar to the as-you-type one described above, but it
+uses |keymap| to generate the mappings. This has the advantage that it works
+in more circumstances, e.g. in |Command-line| mode or when searching within a
+line with |f| or |t| (since it uses |language-mapping| underneath). It can
+also be easily turned on or off like any other keymap (see |i_CTRL-^| and
+|c_CTRL-^|). Like the as-you-type feature, it doesn't work with emojis.
+The disadvantage is that you don't see the whole sequence as you're typing
+it, and you can't fix mistakes with backspace, for example.
+Another difference is that there is a |timeout| like for any other mapping.
+
+In order to use this method, set |g:latex_to_unicode_keymap| to `1`.
+You can use it in parallel with the other methods, they don't interfere. For
+example, typing a partial sequence and pressing <Tab> still triggers
+completions and suggestions if |g:latex_to_unicode_tab| is active.
+
+When this feature is active, in insert or replace mode you'll see `(L2U)` in
+the mode indicator. If you use this feature, and you use a GUI, it may also
+be useful to set |lCursor|.
+
+------------------------------------------------------------------------------
+LATEX TO UNICODE ON DIFFERENT FILE TYPES         *julia-vim-L2U-file-types*
+
+By default, the LaTeX-to-Unicode substitutions are only active when editing
+Julia files. However, you can use the variable |g:latex_to_unicode_file_types|
+to specify for which file types this feature is active by default. The
+variable must be set to a string containing a |pattern| (a regular expression)
+which matches the desired file types, or to a list of such patterns. For
+example, to activate the feature on all file types by default, you could put
+this in your |.vimrc| file:
+>
+    let g:latex_to_unicode_file_types = ".*"
+<
+To make it active only on, say, Julia and Lisp files, you could use:
+>
+    let g:latex_to_unicode_file_types = ["julia", "lisp"]
+<
+
+Another option, |g:latex_to_unicode_file_types_blacklist|, can be used to
+exclude certain file types. For example, if you'd wish to enable the feature
+in all cases except for Python and untyped files, you would use:
+>
+    let g:latex_to_unicode_file_types = ".*"
+    let g:latex_to_unicode_file_types_blacklist = ["python", ""]
+<
+
+NOTE: enabling the functionality will override the |'completefunc'| setting,
+which can be undesirable, and interfere with plug-ins for different file types.
+In any case, the previous |'completefunc'| setting is restored when the
+functionality is disabled, see |julia-vim-L2U-enable-disable|.
+
+------------------------------------------------------------------------------
+ENABLING AND DISABLING LATEX TO UNICODE      *julia-vim-L2U-enable-disable*
+
+The LaTeX-to-Unicode functionality can be enabled or disabled at any time,
+regardless of the |'filetype'| of the file you're editing, using the functions
+|LaTeXtoUnicode#Enable()|, |LaTeXtoUnicode#Disable()|, |LaTeXtoUnicode#Toggle()|.
+For example, you could use a mapping like:
+>
+    noremap <expr> <F7> LaTeXtoUnicode#Toggle()
+    noremap! <expr> <F7> LaTeXtoUnicode#Toggle()
+<
+and then use the <F7> key to quickly switch the functionality on and off as
+needed (see |noremap| and |noremap!|).
+
+NOTE: these functions are different from the variables |g:latex_to_unicode_tab|,
+|g:latex_to_unicode_auto| and |g:latex_to_unicode_keymap|: the functions
+enable/disable the functionality as a whole, while the variables control
+individual features (tab, auto and keymap substitution).
+
+==============================================================================
+VARIABLES                                         *julia-vim-L2U-variables*
+
+                                                   *g:latex_to_unicode_tab*
+g:latex_to_unicode_tab
+
+                A string that determines whether to map LaTeX-to-Unicode
+                substitution to the <Tab> key while in |Insert| and |Command-line|
+                modes, see |julia-vim-L2U-tab|. If unspecified, it is `"on"`,
+                meaning it is active in both insert and command-line modes.
+                You can set it to the value `"command"` or `"cmd"` to only
+                activate it in command-line mode. Or you can set it to
+                `"insert"` or `"ins"` to only have the insert mode mapping. Set it
+                to `"off"` or any other value to disable this feature entirely.
+                So for example you can disable the feature for insert mode by
+                adding the line
+>
+                    let g:latex_to_unicode_tab = "command"
+<
+                in your |.vimrc| file. You can change this setting at any moment
+                while editing, but you need to invoke |LaTeXtoUnicode#Init()|
+                for the change to take effect.
+
+                                           *g:latex_to_unicode_suggestions*
+g:latex_to_unicode_suggestions
+
+                Determines whether the <Tab> key mapping produces suggestions
+                for partial matches. By default, this is set to `1` (active),
+                unless a plug-in which is known to be incompatible with it is
+                detected. Currently, known incompatible plug-ins are
+                YouCompleteMe (https://github.com/Valloric/YouCompleteMe),
+                neocomplcache (https://github.com/Shougo/neocomplcache.vim),
+                neocomplete (https://github.com/Shougo/neocomplete.vim) and
+                deoplete (https://github.com/Shougo/deoplete.nvim),
+
+                This variable can be set at any time, changes will immediately
+                take effect.
+
+                                                 *g:latex_to_unicode_eager*
+g:latex_to_unicode_eager
+
+                Determines whether the <Tab> key mapping performs the
+                substitution immediately upon finding an exact match. By
+                default this setting is set to `1` (active), so that e.g. typing
+                `\ne` and pressing the <Tab> key triggers the substitution. If
+                this variable is set to `0`, an exact match which is also a
+                possible partial match to some other sequence triggers the
+                suggestions menu first, but another <Tab> forces the
+                substitution, so that e.g. typing `\ne` and then <Tab>
+                produces a list with `\ne`, `\neg`, `\nequiv` etc., and
+                pressing <Tab> again performs the substitution.
+
+                This variable can be set at any time, changes will immediately
+                take effect. When |g:latex_to_unicode_suggestions| is `0`,
+                this setting has no effect (it's like if it was always on).
+
+                                                  *g:latex_to_unicode_auto*
+g:latex_to_unicode_auto
+
+                Determines whether to activate LaTeX-to-Unicode substitution
+                on the fly as you type (in |Insert| mode), see
+                |julia-vim-L2U-as-you-type|. If unspecified, it is `0` (off).
+                You can enable the feature by default by inserting the line
+>
+                    let g:latex_to_unicode_auto = 1
+<
+                in your |.vimrc| file. You can change this setting at any
+                moment while editing, but you need to invoke
+                |LaTeXtoUnicode#Init()| for the change to take effect.
+
+
+                                                *g:latex_to_unicode_keymap*
+g:latex_to_unicode_keymap
+
+                Determines whether to activate the |keymap|-based
+                LaTeX-to-Unicode substitutions, see |julia-vim-L2U-keymap|.
+                If unspecified, it is `0` (off). You can enable the feature by
+                default by inserting the line
+>
+                    let g:latex_to_unicode_keymap = 1
+<
+                in your |.vimrc| file. You can change this setting at any
+                moment while editing, but you need to invoke
+                |LaTeXtoUnicode#Init()| for the change to take effect.
+
+                                            *g:latex_to_unicode_file_types*
+g:latex_to_unicode_file_types
+
+                Contains a |pattern|, or a list of patterns, which are matched
+                against the |'filetype'| to determine when to enable the
+                LaTeX-to-Unicode functionality, see |julia-vim-L2U-file-types|.
+                By default, its value is `"julia"`. The patterns provided must
+                match the whole filetype name. See also
+                |g:latex_to_unicode_file_types_blacklist|.
+
+                                  *g:latex_to_unicode_file_types_blacklist*
+g:latex_to_unicode_file_types_blacklist
+
+                Same as |g:latex_to_unicode_file_types|, but acts in reverse:
+                it disables the LaTeX-to-Unicode functionality when the
+                |'filetype'| matches the provided pattern (or any of the
+                patterns if a list is provided). By default, it contains an
+                unmatchable pattern, i.e. it is effectively disabled.
+
+                                           *g:latex_to_unicode_cmd_mapping*
+g:latex_to_unicode_cmd_mapping
+
+                Specifies the mapping (or list of mappings) for the
+                substitution in |Command-line| mode. By default, it is
+                `['<Tab>', '<S-Tab>']`, but it can be changed to avoid
+                overriding other user-defined mappings, e.g. to `'<S-Tab>'`
+                (if your terminal suppoorts it) or `'<C-\><Tab>'`.
+                The `'<Tab>'` (or to be more precise the |wildchar| key) and
+                `'<S-Tab>'` mappings are special in that they fall back to
+                performing default Vim completions in case no suitable
+                substitutions are found.
+
+==============================================================================
+FUNCTIONS                                         *julia-vim-L2U-functions*
+
+                                                    *LaTeXtoUnicode#Init()*
+LaTeXtoUnicode#Init()
+
+                Initialize or re-initialize the LaTeX-to-Unicode substitutions
+                (see |julia-vim-L2U-introduction|). Must be invoked after
+                changing |g:latex_to_unicode_tab| or |g:latex_to_unicode_auto|
+                to make the changes take effect.
+
+                                                  *LaTeXtoUnicode#Enable()*
+                                                 *LaTeXtoUnicode#Disable()*
+                                                  *LaTeXtoUnicode#Toggle()*
+LaTeXtoUnicode#Enable()
+LaTeXtoUnicode#Disable()
+LaTeXtoUnicode#Toggle()
+
+                These functions enable/disable/toggle the LaTeX-to-Unicode
+                functionality, regardless of the |'filetype'| specified in
+                |g:latex_to_unicode_file_types| and
+                |g:latex_to_unicode_file_types_blacklist|. See
+                |julia-vim-L2U-enable-disable|. Note that LaTeXtoUnicode#Enable()
+                will override the |'completefunc'| definition, if present.
+                However, LaTeXtoUnicode#Disable() will restore it.
+                These functions implicitly invoke |LaTeXtoUnicode#Init()|.
+
+
+ vim:tw=78:et:ft=help:norl:
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/julia-vim.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/julia-vim.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/julia-vim.txt	(revision 27955)
@@ -0,0 +1,505 @@
+*julia-vim.txt*  Support for Julia in Vim
+
+Author:  Carlo Baldassi <carlobaldassi@gmail.com>
+License: MIT license  {{{
+    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.
+}}}
+
+CONTENTS					*julia-vim*
+
+Introduction	                    |julia-vim-introduction|
+Block-wise movements/objects        |julia-vim-blocks|
+  Keyword-oriented movements        |julia-vim-blocks-move|
+  Block-oriented movements          |julia-vim-blocks-moveblock|
+  Block text objects                |julia-vim-blocks-objects|
+  Variables                         |julia-vim-blocks-variables|
+Referring to documents              |julia-vim-doc|
+Extras                              |julia-vim-extras|
+Customizations                      |julia-vim-options|
+Extra syntax colors                 |julia-vim-extra-colors|
+About                               |julia-vim-about|
+
+==============================================================================
+INTRODUCTION                                       *julia-vim-introduction*
+
+The julia-vim plug-in provides:
+  - basic support for editing Julia files (automatic filetype detection,
+    indentation, syntax highlighting)
+  - support for the |matchit| plugin
+  - support for Julia block-wise movements (i.e. jumping around between
+    Julia blocks like if/end, function/end etc.) and block text-objects
+  - facilities for conversion of LaTeX entries to Unicode symbols which mimic
+    and extend what the Julia REPL and the IJulia notebook interface do.
+    Optionally, this functionality can be used with all file types, not
+    just Julia files. See |julia-vim-L2U|.
+  - a keymapping |K| to refer julia documents.
+
+This help file documents: 1) the block-wise movements and objects, how they
+work and what variables can be used to enable/disable/tweak them; 2) The
+documentation lookup facility; 3) Some extra functions and customization
+options.
+The LaTeX-to-Unicode facilities are documented in |julia-vim-L2U|.
+
+==============================================================================
+BLOCK-WISE MOVEMENTS AND BLOCK TEXT OBJECTS              *julia-vim-blocks*
+
+In Julia, all blocks start with a keyword (`module`, `function`, `if`, `for`,
+`while`, `type`, etc.) and end with the `end` keyword.
+
+This plug-in adds support for the |matchit| plugin, such that pressing |%| while
+on a block keyword will jump to the other keywords pertaining to the same
+block. For example, if the cursor is at the beginning of the following code:
+>
+    if a == 1
+      if b > 0
+        println("yes")
+      end
+    else
+      println("no")
+    end
+<
+then pressing |%| will jump to the `else` keyword, pressing it again will jump
+to `end`, and pressing it again will go back to the first `if`.
+
+Note that the matchit plugin is normally distributed with ViM, but it is
+disabled by default. To enable it, add this line to your |.vimrc| file:
+>
+    runtime macros/matchit.vim
+<
+The julia-vim plug-in also adds commands to jump around block keywords in
+normal, operator-pending and visual modes (see |vim-modes|). These are somehow
+similar to the |]]| and |]m| mappings when used in C and Java files,
+respectively, but are more powerful. These commands also require that the
+matchit plugin is enabled.
+
+There are two families of block movements, keyword-oriented (see
+|julia-vim-blocks-move|) and block-oriented (see
+|julia-vim-blocks-moveblock|).
+
+Finally, this plug-in also adds block |text-objects| special mappings, so that
+whole blocks can be manipulated as a whole when in visual mode or
+operator-pending mode, see |julia-vim-blocks-objects|.
+
+The block movements and block objects mappings can be collectively disabled,
+see |g:julia_blocks|, and customized, see |g:julia_blocks_mappings|.
+
+NOTE: in all cases, macros at the beginning of a block are considered as part
+of the block itself. For example, in this code:
+>
+    @inbounds for i = 1:5
+      s += v[i]
+    end
+<
+the block begins at `@inbounds`.
+
+------------------------------------------------------------------------------
+KEYWORD-ORIENTED MOVEMENTS                          *julia-vim-blocks-move*
+
+These movements jump to the following/preceding block keyword, and they
+differentiate between begin keywords and end keywords. Some block keywords can
+also be used outside blocks (e.g. `for` in comprehensions, or `end` within
+indexing expressions): these instances are ignored by these commands.
+
+The following movements are provided:
+
+                                      *julia_]j* *julia_]J* *julia_[j* *julia_[J*
+move_n : jumps to the next begin keyword. By default, it is mapped to `]j`.
+move_N : jumps to the next end keyword. By default, it is mapped to `]J`.
+move_p : jumps to the preceding begin keyword. By default, it is mapped to `[j`.
+move_P : jumps to the preceding end keyword. By default, it is mapped to `[J`.
+
+Use |g:julia_blocks_mappings| to customize the mappings.
+
+------------------------------------------------------------------------------
+BLOCK-ORIENTED MOVEMENTS                       *julia-vim-blocks-moveblock*
+
+These movements are like keyword-oriented movements (|julia-vim-blocks-move|),
+except that they ignore nested blocks within the block where the cursor is.
+For example, given the following code (with line annotations):
+>
+    1  while true
+    2    a += 1
+    3    if a > 5
+    4      break
+    5    end
+    6  end
+    7  if b == 2
+    8    return
+    9  end
+<
+if the cursor is on line 2, these movements will ignore the inner
+`if/end` block (lines 3 to 5). You would then be able to jump directly
+to lines 1 (with `[[`), 6 (with `][`), 7 (with `]]`), or 9 (with `2][`).
+
+The following movements are provided:
+
+                                      *julia_]]* *julia_][* *julia_[[* *julia_[]*
+moveblock_n : gets out from the current block (if any) and jumps to the next
+              begin keyword. (Similar to |w| for word movements.) By default,
+              it is mapped to `]]`.
+moveblock_N : jumps to the end of the current block, if any. If the cursor is
+              already at the end of a block, jumps to the end of the following
+              block at the same level of the current one, or at the end of the
+              enclosing block. (Similar to |e| for word movements.) By
+              default, it is mapped to `][`.
+moveblock_p : jumps to the beginning of the current block, if any. If the
+              cursor is already at the beginning of a block, jumps to the
+              beginning of the preceding block at the same level of the
+              current one, or at the beginning of the enclosing block.
+              (Similar to |b| for word movements.) By default, it is mapped to
+              `[[`.
+moveblock_P : gets out from the current block (if any) and jumps to the
+              preceding end keyword. (Similar to |ge| for word movements.)
+              By default, it is mapped to `[]`.
+
+Use |g:julia_blocks_mappings| to customize the mappings.
+
+------------------------------------------------------------------------------
+BLOCK TEXT OBJECTS                               *julia-vim-blocks-objects*
+
+The julia-vim plug-in extends the ViM |text-objects| by defining special
+mappings which allow to operate on blocks as a whole when in visual mode
+or operator-pending mode. The default mappings use `aj` and `ij` to refer to
+these objects.
+For example, given the following code (with line annotations):
+>
+    1  while true
+    2    a += 1
+    3    if a > 5
+    4      break
+    5    end
+    6  end
+<
+if the cursor is on `break` on line 4, pressing `vaj` will select the whole
+inner `if` block (lines 3 to 5), and pressing `aj` again will select the whole
+`while` block (lines 1 to 6). The same effect could have been obtained with a
+counter, i.e. using `v2aj`. If the cursor were initially on line 2, the whole
+`while` block would have been selected with the first `vaj`. Using `daj` would
+delete a block, `caj` would delete it and leave ViM in insert mode, `=aj`
+would indent it, etc.
+Starting from line 2, pressing `vij` wuold only select the inner part of the
+`while` block (lines 2 to 5).
+
+The following mappings are provided:
+
+                                                        *julia_aj* *julia_ij*
+select_a : the block which contains the cursor, including its delimiters.
+           By default, this is mapped to `aj`. Repeated application (e.g.
+           `vajaj`) selects the enclosing blocks. A counter can be used to
+           the same effect as repetition (e.g. `v2aj`).
+select_i : same as select_a, but only selects the lines included between the
+           delimiters. Thus, this does not work with single-line blocks.
+           By default, this is mapped to `ij`. Repeated application (e.g.
+           `vijij`) has no effect, but using a counter has the same effect as
+           using "select_a" and then selecting the inner part of the outermost
+           block. For example, with the default mappings, `v3ij` is the same as
+           `v3ajij`, or `vajajajij`.
+
+Use |g:julia_blocks_mappings| to customize the mappings.
+
+The following auxiliary function is only mapped to normal mode:
+
+                                                           *julia_whereami*
+whereami : this mapping prints the first line of the current block on the
+           command line. If invoked repeatedly, or if given a count, it prints
+           the first line of the enclosing blocks, like `select_a`. If followed
+           by `select_a`, the selection, or operation, will refer to the last
+           block printed. By default, it is not mapped to any key, but a
+           mapping can be easily provided in |g:julia_blocks_mappings|. It is
+           possible to obtain the string, instead of having it printed, by
+           calling the function `julia_blocks#whereami()`. In such case, use
+           the function `julia_blocks#select_reset()` to reset the block
+           nesting level.
+
+------------------------------------------------------------------------------
+VARIABLES                                      *julia-vim-blocks-variables*
+
+                                                           *g:julia_blocks*
+g:julia_blocks
+
+                Determines whether to map block-wise movements and objects. If
+                unspecified, it is on. You can disable the feature by default
+                by inserting the line
+>
+                    let g:julia_blocks = 0
+<
+                in your |.vimrc| file.
+
+                                                  *g:julia_blocks_mappings*
+g:julia_blocks_mappings
+
+                Custom mapping for block-wise movements. This must be a |dict|
+                associating movements to key combinations. Use empty strings
+                to disable individual mappings. The following is equivalent
+                to the default mappings (see |julia-vim-blocks-moveblock|,
+                |julia-vim-blocks-move| and |julia-vim-blocks-objects|):
+>
+                  let g:julia_blocks_mappings = {
+                    \  "move_n" : "]j",
+                    \  "move_N" : "]J",
+                    \  "move_p" : "[j",
+                    \  "move_P" : "[J",
+                    \
+                    \  "moveblock_n" : "]]",
+                    \  "moveblock_N" : "][",
+                    \  "moveblock_p" : "[[",
+                    \  "moveblock_P" : "[]",
+                    \
+                    \  "select_a" : "aj",
+                    \  "select_i" : "ij",
+                    \
+                    \  "whereami" : "",
+                    \  }
+<
+                You can change individual mappings by writing something like
+                this in your |.vimrc| file:
+>
+                  let g:julia_blocks_mappings = {
+                    \  "move_N"   : "]n",
+                    \  "move_P"   : "[n",
+                    \  "whereami" : "<Leader>j",
+                    \  }
+<
+                Or you can disable individual mappings by writing something like
+                this in your |.vimrc| file:
+>
+                  let g:julia_blocks_mappings = {
+                    \  "moveblock_n" : "",
+                    \  "moveblock_p" : "",
+                    \  }
+<
+                All unspecified entries keep their default value.
+
+
+==============================================================================
+REFERRING TO DOCUMENTATION                                  *julia-vim-doc*
+
+                                                              *julia-vim-K*
+K
+        Look up documentation for the keyword under the cursor. If found,
+        a preview window with the documentation is opened.
+
+        This also works for keywords within the opened preview window,
+        allowing effortless browsing of the documentation.
+
+        (This is not really a key mapping, but uses the built-in
+        |keywordprg|-mechanism in vim; see |K| if you're curious).
+
+
+                                                   *<Plug>(JuliaDocPrompt)*
+<Plug>(JuliaDocPrompt)
+        Open a prompt for keyword documentation lookup. If you don't use |?|
+        for backward search, you can use the following to make `?` work like
+        in the Julia REPL:
+>
+        autocmd FileType julia nmap <buffer> ? <Plug>(JuliaDocPrompt)
+<
+        Apply |:augroup| as needed.
+
+
+                                                                *:JuliaDoc*
+:JuliaDoc {keyword}
+        Look up documentation for {keyword}.
+
+
+==============================================================================
+EXTRAS                                                   *julia-vim-extras*
+
+
+                                        *julia#toggle_function_blockassign*
+                                        *julia#function_block2assign*
+                                        *julia#function_assign2block*
+julia#toggle_function_blockassign()
+julia#function_block2assign()
+julia#function_assign2block()
+
+                These functions allow to transform function definitions
+                between block format and assignment format. For example,
+                these two definitions are equivalent:
+>
+                function test(x, y)
+                    x + 2y
+                end
+
+                test(x, y) = x + 2y
+<
+                You can use the function `julia#toggle_function_blockassign()`
+                to switch between the two forms (the cursor needs to be on the
+                first line of the block form). This functionality requires
+                that the |matchit| plugin is loaded. Only three-line function
+                blocks like the one in the example are recognized. When
+                changing the block form into the assignment form, `return`
+                statements are removed; if the result is empty, `nothing` is
+                substituted. Leading macros (e.g. `@inline` or `@compat`) are
+                recognized and preserved by the transformation.
+
+                In order to make this functionality practical, it is advisable
+                to map it to some key combination, e.g.:
+>
+                noremap <Leader>fb :call julia#toggle_function_blockassign()<CR>
+<
+
+==============================================================================
+CUSTOMIZATIONS                                          *julia-vim-options*
+
+The following options allows customizing some aspects of the plugin.
+
+                                             *g:julia_spellcheck_docstrings*
+g:julia_spellcheck_docstrings
+
+                Determines whether to enable spell-checking for docstrings,
+                i.e. triple quoted strings that start in the first column. See
+                |spell|. Default: on (set to `1`).
+
+                                               *g:julia_spellcheck_strings*
+g:julia_spellcheck_strings
+
+                Determines whether to enable spell-checking for all strings.
+                See |spell|. Default: off (set to `0`).
+
+                                              *g:julia_spellcheck_comments*
+g:julia_spellcheck_comments
+
+                Determines whether to enable spell-checking for comments. See
+                |spell|. Default: on (set to `1`).
+
+                                              *g:julia_highlight_operators*
+g:julia_highlight_operators
+
+                Determines whether to apply syntax highlighting to operators.
+                Default: on (set to `1`).
+
+                                              *g:julia_indent_align_import*
+g:julia_indent_align_import
+
+                In a multi-line import/using/export statment, the lines after
+                the first one use some special alignment rules by default,
+                e.g.:
+>
+                import X: one,
+                          two,
+                          three
+                export four,
+                       five,
+                       six
+<
+                When `g:julia_indent_align_import` is `0` instead, the usual
+                indentation is used:
+>
+                import X: one,
+                    two,
+                    three
+                export four,
+                    five,
+                    six
+
+                                              *g:julia_indent_align_brackets*
+g:julia_indent_align_brackets
+
+                In a multi-line bracketed expression (except for function
+                arguments, see |g:julia_indent_align_funcargs|), the lines
+                after the first one use some special alignment rules by
+                default, e.g.:
+>
+                matrix = [1 2 3;
+                          4 5 6]
+                tpl = (
+                       abc = Dict(a=>1,
+                                  b=>2),
+                       def = [1 2;
+                              3 4],
+                       xyz = SubArray{eltype(P),
+                                      N, P, I,
+                                      false}
+                      )
+<
+                When `g:julia_indent_align_brackets` is `0` instead, an extra
+                indent is used:
+>
+                matrix = [1 2 3;
+                    4 5 6]
+                tpl = (
+                    abc = Dict(a=>1,
+                        b=>2),
+                    def = [1 2;
+                        3 4],
+                    xyz = SubArray{eltype(P),
+                        N, P, I,
+                        false}
+                )
+<
+
+                                              *g:julia_indent_align_funcargs*
+g:julia_indent_align_funcargs
+
+                In a function definition, when the arguments span multiple
+                lines, the lines after the first one get an extra indentation
+                step by default, e.g.:
+>
+                function functionanme(
+                        arg1, arg2,
+                        arg3, arg4
+                    )
+                    # function body
+                end
+<
+                By setting `g:julia_indent_align_funcargs` to `1`, the
+                arguments are aligned to the bracket instead (they work as any
+                other bracket with the default value of
+                |g:julia_indent_align_brackets|):
+>
+                function functionanme(arg1, arg2,
+                                      arg3, arg4
+                                     )
+                    # function body
+                end
+<
+==============================================================================
+EXTRA SYNTAX COLORS                                *julia-vim-extra-colors*
+
+Some syntax elements are recognized but not highlighted by default:
+
+  juliaParDelim       parentheses
+  juliaSemicolon      semicolons
+  juliaComma          commas
+  juliaFunctionCall   function calls
+
+In order to highlight them, just use the |hi| command in your configuration
+file. To use existing highlight groups (see |group-name|), you can do e.g.:
+>
+  hi link juliaParDelim Delimiter
+  hi link juliaSemicolon Operator
+  hi link juliaFunctionCall Identifier
+<
+
+The above will use the colors specified by your colorscheme, if defined.
+If you want to define a color manually instead, you can use something like
+this:
+>
+  hi juliaFunctionCall guifg=#AB5033 ctermfg=Red
+<
+
+==============================================================================
+ABOUT                                                     *julia-vim-about*
+
+Grab the latest version or report a bug on GitHub:
+
+http://github.com/JuliaEditorSupport/julia-vim
+
+ vim:tw=78:et:ft=help:norl:
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/skeleton.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/skeleton.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/skeleton.txt	(revision 27955)
@@ -0,0 +1,153 @@
+*skeleton.txt*	Skeleton for newly created buffers
+
+Version 0.0.2
+Script ID: 2291
+Copyright (C) 2008 kana <http://whileimautomaton.net/>
+License: MIT license  {{{
+    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.
+}}}
+
+CONTENTS					*skeleton-contents*
+
+Introduction		|skeleton-introduction|
+Interface		|skeleton-interface|
+  Commands		  |skeleton-commands|
+  Events		  |skeleton-events|
+Bugs			|skeleton-bugs|
+Changelog		|skeleton-changelog|
+
+
+
+
+==============================================================================
+INTRODUCTION					*skeleton-introduction*
+
+*skeleton* is a Vim plugin to set up a skeleton for a newly created buffer.
+Once you put skeleton files into specific directories, appropriate ones will
+be automatically expanded for newly created buffers.
+
+- Skeleton files must be put in a directory named "xtr/skeleton/" which is
+  under any directory listed in 'runtimepath'.
+
+  For example: ~/.vim/xtr/skeleton/
+
+- The name of a skeleton file should be "{filetype}" or "{filetype}-{suffix}",
+  where {filetype} is the 'filetype' for a newly created buffer and {suffix}
+  is an arbitrary string.
+
+  The former "{filetype}" is used as the default skeleton file for that
+  'filetype'.  The latter "{filetype}-{suffix}" is used to override the
+  default one for some cases which are speicifed by user.
+
+  For example: ~/.vim/xtr/skeleton/vim ~/.vim/xtr/skeleton/vim-plugin
+
+- Whenever user starts to edit a file that doesn't exists:
+
+  1) Skeleton publish a |User:plugin-skeleton-detect| event.  This event can
+     be used to |:SkeletonLoad| a special skeleton file other than the default
+     one.
+  
+  2) If |:SkeletonLoad| is not done for the previous step, Skeleton executes
+     the following command:
+>
+	execute 'SkeletonLoad' &l:filetype
+<
+     This means a skeleton file named "{filetype}" in a directory
+     "xtr/skeleton/" which is under any directory listed in 'runtimepath' is
+     loaded as a skeleton file.
+
+     If there is no such skeleton file, nothing will be happened.
+
+
+Requirements:
+- Vim 7.1 or later
+
+Latest version:
+http://github.com/kana/config/commits/vim-skeleton
+
+
+
+
+==============================================================================
+INTERFACE					*skeleton-interface*
+
+------------------------------------------------------------------------------
+COMMANDS					*skeleton-commands*
+
+						*:SkeletonLoad*
+:SkeletonLoad[!] {name}
+	Load the skeleton file with {name} for the current buffer.
+
+	- If the current buffer is not a normal buffer,
+	  nothing will be happened.
+	- If "!" is not given and the current buffer is not empty,
+	  nothing will be happened.
+	- If "!" is given, existing content of the current buffer will be
+	  deleted before loading the specified skeleton.
+
+
+------------------------------------------------------------------------------
+EVENTS						*skeleton-events*
+
+User plugin-skeleton-detect			*User:plugin-skeleton-detect*
+	Event to override the default skeleton file.  User can set up
+	|:autocmd| for this event to |:SkeletonLoad| a special skeleton file
+	other than the default one.
+
+	Example: >
+		autocmd User plugin-skeleton-detect
+		\   if expand('%') =~# '\<plugin/.*\.vim$'
+		\ |   SkeletonLoad vim-plugin
+		\ | endif
+<
+
+
+
+==============================================================================
+BUGS						*skeleton-bugs*
+
+- There are many bugs around the world.
+
+
+
+
+==============================================================================
+CHANGELOG					*skeleton-changelog*
+
+0.0.2	2009-03-17T01:16:29+09:00
+	- Refine the document.
+	- |:SkeletonLoad|:
+	  - Support completion.
+	  - Allow to override existing content of a buffer with "!".
+
+0.0.1	2008-07-13T00:20:09+09:00
+	- Fix to suppress extra message if there is no autocmd for
+	  |User:plugin-skeleton-detect|.
+	- Fix not to do the default |:SkeletonLoad| if 'filetype' of the
+	  current buffer is unknown.
+
+0.0.0	2008-07-11T12:23:55+09:00
+	- Initial version.
+
+
+
+
+==============================================================================
+vim:tw=78:ts=8:ft=help:norl:fen:fdl=0:fdm=marker:
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/tags
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/tags	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/doc/tags	(revision 27955)
@@ -0,0 +1,85 @@
+Align-copyright	Align.txt	/*Align-copyright*
+align	Align.txt	/*align*
+align-align	Align.txt	/*align-align*
+align-codepoint	Align.txt	/*align-codepoint*
+align-command	Align.txt	/*align-command*
+align-commands	Align.txt	/*align-commands*
+align-concept	Align.txt	/*align-concept*
+align-concepts	Align.txt	/*align-concepts*
+align-contents	Align.txt	/*align-contents*
+align-control	Align.txt	/*align-control*
+align-history	Align.txt	/*align-history*
+align-manual	Align.txt	/*align-manual*
+align-maps	Align.txt	/*align-maps*
+align-multibyte	Align.txt	/*align-multibyte*
+align-option	Align.txt	/*align-option*
+align-options	Align.txt	/*align-options*
+align-strlen	Align.txt	/*align-strlen*
+align-usage	Align.txt	/*align-usage*
+align-userguide	Align.txt	/*align-userguide*
+align-utf	Align.txt	/*align-utf*
+align-utf8	Align.txt	/*align-utf8*
+align.txt	Align.txt	/*align.txt*
+alignctrl	Align.txt	/*alignctrl*
+alignctrl-	Align.txt	/*alignctrl-*
+alignctrl-+	Align.txt	/*alignctrl-+*
+alignctrl--	Align.txt	/*alignctrl--*
+alignctrl-:	Align.txt	/*alignctrl-:*
+alignctrl-<	Align.txt	/*alignctrl-<*
+alignctrl-=	Align.txt	/*alignctrl-=*
+alignctrl->	Align.txt	/*alignctrl->*
+alignctrl-C	Align.txt	/*alignctrl-C*
+alignctrl-I	Align.txt	/*alignctrl-I*
+alignctrl-P	Align.txt	/*alignctrl-P*
+alignctrl-W	Align.txt	/*alignctrl-W*
+alignctrl-c	Align.txt	/*alignctrl-c*
+alignctrl-g	Align.txt	/*alignctrl-g*
+alignctrl-l	Align.txt	/*alignctrl-l*
+alignctrl-m	Align.txt	/*alignctrl-m*
+alignctrl-no-option	Align.txt	/*alignctrl-no-option*
+alignctrl-p	Align.txt	/*alignctrl-p*
+alignctrl-r	Align.txt	/*alignctrl-r*
+alignctrl-separators	Align.txt	/*alignctrl-separators*
+alignctrl-settings	Align.txt	/*alignctrl-settings*
+alignctrl-v	Align.txt	/*alignctrl-v*
+alignctrl-w	Align.txt	/*alignctrl-w*
+alignman	Align.txt	/*alignman*
+alignmanual	Align.txt	/*alignmanual*
+alignmap-Htd	Align.txt	/*alignmap-Htd*
+alignmap-T=	Align.txt	/*alignmap-T=*
+alignmap-Tsp	Align.txt	/*alignmap-Tsp*
+alignmap-a(	Align.txt	/*alignmap-a(*
+alignmap-a,	Align.txt	/*alignmap-a,*
+alignmap-a<	Align.txt	/*alignmap-a<*
+alignmap-a=	Align.txt	/*alignmap-a=*
+alignmap-a?	Align.txt	/*alignmap-a?*
+alignmap-abox	Align.txt	/*alignmap-abox*
+alignmap-acom	Align.txt	/*alignmap-acom*
+alignmap-adcom	Align.txt	/*alignmap-adcom*
+alignmap-adec	Align.txt	/*alignmap-adec*
+alignmap-adef	Align.txt	/*alignmap-adef*
+alignmap-afnc	Align.txt	/*alignmap-afnc*
+alignmap-anum	Align.txt	/*alignmap-anum*
+alignmap-aocom	Align.txt	/*alignmap-aocom*
+alignmap-ascom	Align.txt	/*alignmap-ascom*
+alignmap-history	Align.txt	/*alignmap-history*
+alignmap-m=	Align.txt	/*alignmap-m=*
+alignmap-t#	Align.txt	/*alignmap-t#*
+alignmap-t,	Align.txt	/*alignmap-t,*
+alignmap-t:	Align.txt	/*alignmap-t:*
+alignmap-t;	Align.txt	/*alignmap-t;*
+alignmap-t<	Align.txt	/*alignmap-t<*
+alignmap-t=	Align.txt	/*alignmap-t=*
+alignmap-t?	Align.txt	/*alignmap-t?*
+alignmap-tab	Align.txt	/*alignmap-tab*
+alignmap-tml	Align.txt	/*alignmap-tml*
+alignmap-ts,	Align.txt	/*alignmap-ts,*
+alignmap-ts:	Align.txt	/*alignmap-ts:*
+alignmap-ts<	Align.txt	/*alignmap-ts<*
+alignmap-ts=	Align.txt	/*alignmap-ts=*
+alignmap-tsp	Align.txt	/*alignmap-tsp*
+alignmap-tsq	Align.txt	/*alignmap-tsq*
+alignmap-tt	Align.txt	/*alignmap-tt*
+alignmap-t~	Align.txt	/*alignmap-t~*
+alignmaps	Align.txt	/*alignmaps*
+alignusage	Align.txt	/*alignusage*
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/ftdetect/julia.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/ftdetect/julia.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/ftdetect/julia.vim	(revision 27955)
@@ -0,0 +1,34 @@
+if v:version < 704
+  " NOTE: this line fixes an issue with the default system-wide lisp ftplugin
+  "       which didn't define b:undo_ftplugin on older Vim versions
+  "       (*.jl files are recognized as lisp)
+  autocmd BufRead,BufNewFile *.jl    let b:undo_ftplugin = "setlocal comments< define< formatoptions< iskeyword< lisp<"
+endif
+
+autocmd BufRead,BufNewFile *.jl      set filetype=julia
+
+autocmd FileType *                   call LaTeXtoUnicode#Refresh()
+autocmd BufNew *                     call LaTeXtoUnicode#Refresh()
+autocmd BufEnter *                   call LaTeXtoUnicode#Refresh()
+autocmd CmdwinEnter *                call LaTeXtoUnicode#Refresh()
+
+" This autocommand is used to postpone the first initialization of LaTeXtoUnicode as much as possible,
+" by calling LaTeXtoUnicode#SetTab and LaTeXtoUnicode#SetAutoSub only at InsertEnter or later
+function! s:L2UTrigger()
+  augroup L2UInit
+    autocmd!
+    autocmd InsertEnter *            let g:did_insert_enter = 1 | call LaTeXtoUnicode#Init(0)
+  augroup END
+endfunction
+autocmd BufEnter *                   call s:L2UTrigger()
+
+function! s:HighlightJuliaMarkdown()
+  if !exists('g:markdown_fenced_languages')
+    let g:markdown_fenced_languages = []
+  endif
+  if index(g:markdown_fenced_languages, 'julia') == -1
+    call add(g:markdown_fenced_languages, 'julia')
+  endif
+endfunction
+autocmd BufRead,BufNewFile *.jmd     call s:HighlightJuliaMarkdown()
+autocmd BufRead,BufNewFile *.jmd     set filetype=markdown
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/ftplugin/julia.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/ftplugin/julia.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/ftplugin/julia.vim	(revision 27955)
@@ -0,0 +1,114 @@
+" Vim filetype plugin file
+" Language:	Julia
+" Maintainer:	Carlo Baldassi <carlobaldassi@gmail.com>
+" Last Change:	2014 may 29
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+setlocal include=^\\s*\\%(reload\\\|include\\)\\>
+setlocal suffixesadd=.jl
+setlocal comments=:#
+setlocal commentstring=#=%s=#
+setlocal cinoptions+=#1
+setlocal define=^\\s*macro\\>
+setlocal fo-=t fo+=croql
+
+let b:julia_vim_loaded = 1
+
+let b:undo_ftplugin = "setlocal include< suffixesadd< comments< commentstring<"
+      \ . " define< fo< shiftwidth< expandtab< indentexpr< indentkeys< cinoptions< completefunc<"
+      \ . " | unlet! b:commentary_format"
+      \ . " | unlet! b:smartcomment_force_linemode"
+      \ . " | unlet! b:julia_vim_loaded"
+
+" MatchIt plugin support
+if exists("loaded_matchit")
+  let b:match_ignorecase = 0
+
+  " note: begin_keywords must contain all blocks, in order
+  " for nested-structures-skipping to work properly
+  " note: 'mutable struct' and 'struct' are defined separately because
+  " using \? puts the cursor on 'struct' instead of 'mutable' for some reason
+  let b:julia_begin_keywords = '\%(\.\s*\|@\)\@<!\<\%(function\|macro\|begin\|mutable\s\+struct\|\%(mutable\s\+\)\@<!struct\|\%(abstract\|primitive\)\s\+type\|let\|do\|\%(bare\)\?module\|quote\|if\|for\|while\|try\)\>'
+  " note: the following regex not only recognizes macros, but also local/global keywords.
+  " the purpose is recognizing things like `@inline myfunction()`
+  " or `global myfunction(...)` etc, for matchit and block movement functionality
+  let s:macro_regex = '\%(@\%([#(]\@!\S\)\+\|\<\%(local\|global\)\)\s\+'
+  let s:nomacro = '\%(' . s:macro_regex . '\)\@<!'
+  let s:yesmacro = s:nomacro . '\%('. s:macro_regex . '\)\+'
+  let b:julia_begin_keywordsm = '\%(' . s:yesmacro . b:julia_begin_keywords . '\)\|'
+        \ . '\%(' . s:nomacro . b:julia_begin_keywords . '\)'
+  let b:julia_end_keywords = '\<end\>'
+
+  " note: this function relies heavily on the syntax file
+  function! JuliaGetMatchWords()
+    let [l,c] = [line('.'),col('.')]
+    let attr = synIDattr(synID(l, c, 1),"name")
+    let c1 = c
+    while attr == 'juliaMacro' || expand('<cword>') =~# '\<\%(global\|local\)\>'
+      normal! W
+      if line('.') > l || col('.') == c1
+        call cursor(l, c)
+        return ''
+      endif
+      let attr = synIDattr(synID(l, col('.'), 1),"name")
+      let c1 = col('.')
+    endwhile
+    call cursor(l, c)
+    if attr == 'juliaConditional'
+      return b:julia_begin_keywordsm . ':\<\%(elseif\|else\)\>:' . b:julia_end_keywords
+    elseif attr =~# '\<\%(juliaRepeat\|juliaRepKeyword\)\>'
+      return b:julia_begin_keywordsm . ':\<\%(break\|continue\)\>:' . b:julia_end_keywords
+    elseif attr == 'juliaBlKeyword'
+      return b:julia_begin_keywordsm . ':' . b:julia_end_keywords
+    elseif attr == 'juliaException'
+      return b:julia_begin_keywordsm . ':\<\%(catch\|finally\)\>:' . b:julia_end_keywords
+    endif
+    return '\<\>:\<\>'
+  endfunction
+
+  let b:match_words = 'JuliaGetMatchWords()'
+
+  " we need to skip everything within comments, strings and
+  " the 'begin' and 'end' keywords when they are used as a range rather than as
+  " the delimiter of a block
+  let b:match_skip = 'synIDattr(synID(line("."),col("."),0),"name") =~# '
+        \ . '"\\<julia\\%(Comprehension\\%(For\\|If\\)\\|RangeKeyword\\|Comment\\%([LM]\\|Delim\\)\\|\\%([bs]\\|Shell\\|Printf\\|Doc\\)\\?String\\|StringPrefixed\\|DocStringM\\(Raw\\)\\?\\|RegEx\\|SymbolS\\?\\|Dotted\\)\\>"'
+
+  let b:undo_ftplugin = b:undo_ftplugin
+        \ . " | unlet! b:match_words b:match_skip b:match_ignorecase"
+        \ . " | unlet! b:julia_begin_keywords b:julia_end_keywords"
+        \ . " | delfunction JuliaGetMatchWords"
+
+  if get(g:, "julia_blocks", 1)
+    call julia_blocks#init_mappings()
+    let b:undo_ftplugin .= " | call julia_blocks#remove_mappings()"
+  endif
+
+endif
+
+" Some plugin-specific tweaks for commenting
+let b:commentary_format = "# %s"           " for tpope/vim-commentary
+let b:smartcomment_force_linemode = 1      " for carlobaldassi/vim-smartcomment
+
+if has("gui_win32")
+  let b:browsefilter = "Julia Source Files (*.jl)\t*.jl\n"
+  let b:undo_ftplugin = b:undo_ftplugin . " | unlet! b:browsefilter"
+endif
+
+" Lookup documents
+nnoremap <silent><buffer> <Plug>(JuliaDocPrompt) :<C-u>call julia#doc#prompt()<CR>
+command! -nargs=1 -buffer -complete=customlist,julia#doc#complete JuliaDoc call julia#doc#open(<q-args>)
+command! -nargs=1 -buffer JuliaDocKeywordprg call julia#doc#keywordprg(<q-args>)
+setlocal keywordprg=:JuliaDocKeywordprg
+let b:undo_ftplugin .= " | setlocal keywordprg<"
+let b:undo_ftplugin .= " | delcommand JuliaDoc | delcommand JuliaDocKeywordprg"
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/ftplugin/juliadoc.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/ftplugin/juliadoc.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/ftplugin/juliadoc.vim	(revision 27955)
@@ -0,0 +1,30 @@
+" Vim filetype plugin file
+" Language: Julia document
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+setlocal conceallevel=2
+setlocal concealcursor=nc
+setlocal wrap
+
+if !exists('b:undo_ftplugin')
+  let b:undo_ftplugin = ''
+endif
+let b:undo_ftplugin .= 'setlocal conceallevel< concealcursor< wrap<'
+
+" Lookup documents
+nnoremap <silent><buffer> <Plug>(JuliaDocPrompt) :<C-u>call julia#doc#prompt()<CR>
+command! -nargs=1 -buffer -complete=customlist,julia#doc#complete JuliaDoc call julia#doc#open(<q-args>)
+command! -nargs=1 -buffer JuliaDocKeywordprg call julia#doc#keywordprg(<q-args>)
+setlocal keywordprg=:JuliaDocKeywordprg
+let b:undo_ftplugin .= " | setlocal keywordprg<"
+let b:undo_ftplugin .= " | delcommand JuliaDoc | delcommand JuliaDocKeywordprg"
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/indent/julia.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/indent/julia.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/indent/julia.vim	(revision 27955)
@@ -0,0 +1,490 @@
+" Vim indent file
+" Language:	Julia
+" Maintainer:	Carlo Baldassi <carlobaldassi@gmail.com>
+" Last Change:	2016 jun 16
+" Notes:        originally based on Bram Molenaar's indent file for vim
+
+setlocal autoindent
+
+setlocal indentexpr=GetJuliaIndent()
+setlocal indentkeys+==end,=else,=catch,=finally,),],}
+setlocal indentkeys-=0#
+setlocal indentkeys-=:
+setlocal indentkeys-=0{
+setlocal indentkeys-=0}
+setlocal nosmartindent
+
+" Only define the function once.
+if exists("*GetJuliaIndent")
+  finish
+endif
+
+let s:skipPatternsBasic = '\<julia\%(Comment\%([LM]\|Delim\)\)\>'
+let s:skipPatterns = '\<julia\%(Comprehension\%(For\|If\)\|RangeKeyword\|Comment\%([LM]\|Delim\)\|\%([bs]\|Shell\|Printf\|Doc\)\?String\|StringPrefixed\|DocStringM\(Raw\)\?\|RegEx\|SymbolS\?\|Macro\|Dotted\)\>'
+
+function JuliaMatch(lnum, str, regex, st, ...)
+  let s = a:st
+  let e = a:0 > 0 ? a:1 : -1
+  let basic_skip = a:0 > 1 ? a:2 : 'all'
+  let skip = basic_skip ==# 'basic' ? s:skipPatternsBasic : s:skipPatterns
+  while 1
+    let f = match(a:str, '\C' . a:regex, s)
+    if e >= 0 && f >= e
+      return -1
+    endif
+    if f >= 0
+      let attr = synIDattr(synID(a:lnum,f+1,1),"name")
+      let attrT = synIDattr(synID(a:lnum,f+1,0),"name")
+      if attr =~# skip || attrT =~# skip
+        let s = f+1
+        continue
+      endif
+    endif
+    break
+  endwhile
+  return f
+endfunction
+
+function GetJuliaNestingStruct(lnum, ...)
+  " Auxiliary function to inspect the block structure of a line
+  let line = getline(a:lnum)
+  let s = a:0 > 0 ? a:1 : 0
+  let e = a:0 > 1 ? a:2 : -1
+  let blocks_stack = []
+  let num_closed_blocks = 0
+  while 1
+    let fb = JuliaMatch(a:lnum, line, '\<\%(if\|else\%(if\)\?\|while\|for\|try\|catch\|finally\|\%(staged\)\?function\|macro\|begin\|mutable\s\+struct\|\%(mutable\s\+\)\@<!struct\|\%(abstract\|primitive\)\s\+type\|let\|\%(bare\)\?module\|quote\|do\)\>', s, e)
+    let fe = JuliaMatch(a:lnum, line, '\<end\>', s, e)
+
+    if fb < 0 && fe < 0
+      " No blocks found
+      break
+    end
+
+    if fb >= 0 && (fb < fe || fe < 0)
+      " The first occurrence is an opening block keyword
+      " Note: some keywords (elseif,else,catch,finally) are both
+      "       closing blocks and opening new ones
+
+      let i = JuliaMatch(a:lnum, line, '\<if\>', s)
+      if i >= 0 && i == fb
+        let s = i+1
+        call add(blocks_stack, 'if')
+        continue
+      endif
+      let i = JuliaMatch(a:lnum, line, '\<elseif\>', s)
+      if i >= 0 && i == fb
+        let s = i+1
+        if len(blocks_stack) > 0 && blocks_stack[-1] == 'if'
+          let blocks_stack[-1] = 'elseif'
+        elseif (len(blocks_stack) > 0 && blocks_stack[-1] != 'elseif') || len(blocks_stack) == 0
+          call add(blocks_stack, 'elseif')
+          let num_closed_blocks += 1
+        endif
+        continue
+      endif
+      let i = JuliaMatch(a:lnum, line, '\<else\>', s)
+      if i >= 0 && i == fb
+        let s = i+1
+        if len(blocks_stack) > 0 && blocks_stack[-1] =~# '\<\%(else\)\=if\>'
+          let blocks_stack[-1] = 'else'
+        else
+          call add(blocks_stack, 'else')
+          let num_closed_blocks += 1
+        endif
+        continue
+      endif
+
+      let i = JuliaMatch(a:lnum, line, '\<try\>', s)
+      if i >= 0 && i == fb
+        let s = i+1
+        call add(blocks_stack, 'try')
+        continue
+      endif
+      let i = JuliaMatch(a:lnum, line, '\<catch\>', s)
+      if i >= 0 && i == fb
+        let s = i+1
+        if len(blocks_stack) > 0 && blocks_stack[-1] == 'try'
+          let blocks_stack[-1] = 'catch'
+        else
+          call add(blocks_stack, 'catch')
+          let num_closed_blocks += 1
+        endif
+        continue
+      endif
+      let i = JuliaMatch(a:lnum, line, '\<finally\>', s)
+      if i >= 0 && i == fb
+        let s = i+1
+        if len(blocks_stack) > 0 && (blocks_stack[-1] == 'try' || blocks_stack[-1] == 'catch')
+          let blocks_stack[-1] = 'finally'
+        else
+          call add(blocks_stack, 'finally')
+          let num_closed_blocks += 1
+        endif
+        continue
+      endif
+
+      let i = JuliaMatch(a:lnum, line, '\<\%(bare\)\?module\>', s)
+      if i >= 0 && i == fb
+        let s = i+1
+        if i == 0
+          call add(blocks_stack, 'col1module')
+        else
+          call add(blocks_stack, 'other')
+        endif
+        continue
+      endif
+
+      let i = JuliaMatch(a:lnum, line, '\<\%(while\|for\|function\|macro\|begin\|\%(mutable\s\+\)\?struct\|\%(abstract\|primitive\)\s\+type\|let\|quote\|do\)\>', s)
+      if i >= 0 && i == fb
+        if match(line, '\C\<\%(mutable\|abstract\|primitive\)', i) != -1
+          let s = i+11
+        else
+          let s = i+1
+        endif
+        call add(blocks_stack, 'other')
+        continue
+      endif
+
+      " Note: it should be impossible to get here
+      break
+
+    else
+      " The first occurrence is an 'end'
+
+      let s = fe+1
+      if len(blocks_stack) == 0
+        let num_closed_blocks += 1
+      else
+        call remove(blocks_stack, -1)
+      endif
+      continue
+
+    endif
+
+    " Note: it should be impossible to get here
+    break
+  endwhile
+  let num_open_blocks = len(blocks_stack) - count(blocks_stack, 'col1module')
+  return [num_open_blocks, num_closed_blocks]
+endfunction
+
+function GetJuliaNestingBrackets(lnum, c)
+  " Auxiliary function to inspect the brackets structure of a line
+  let line = getline(a:lnum)[0 : (a:c - 1)]
+  let s = 0
+  let brackets_stack = []
+  let last_closed_bracket = -1
+  while 1
+    let fb = JuliaMatch(a:lnum, line, '[([{]', s)
+    let fe = JuliaMatch(a:lnum, line, '[])}]', s)
+
+    if fb < 0 && fe < 0
+      " No brackets found
+      break
+    end
+
+    if fb >= 0 && (fb < fe || fe < 0)
+      " The first occurrence is an opening bracket
+
+      let i = JuliaMatch(a:lnum, line, '(', s)
+      if i >= 0 && i == fb
+        let s = i+1
+        call add(brackets_stack, ['par',i])
+        continue
+      endif
+
+      let i = JuliaMatch(a:lnum, line, '\[', s)
+      if i >= 0 && i == fb
+        let s = i+1
+        call add(brackets_stack, ['sqbra',i])
+        continue
+      endif
+
+      let i = JuliaMatch(a:lnum, line, '{', s)
+      if i >= 0 && i == fb
+        let s = i+1
+        call add(brackets_stack, ['curbra',i])
+        continue
+      endif
+
+      " Note: it should be impossible to get here
+      break
+
+    else
+      " The first occurrence is a closing bracket
+
+      let i = JuliaMatch(a:lnum, line, ')', s)
+      if i >= 0 && i == fe
+        let s = i+1
+        if len(brackets_stack) > 0 && brackets_stack[-1][0] == 'par'
+          call remove(brackets_stack, -1)
+        else
+          let last_closed_bracket = i + 1
+        endif
+        continue
+      endif
+
+      let i = JuliaMatch(a:lnum, line, ']', s)
+      if i >= 0 && i == fe
+        let s = i+1
+        if len(brackets_stack) > 0 && brackets_stack[-1][0] == 'sqbra'
+          call remove(brackets_stack, -1)
+        else
+          let last_closed_bracket = i + 1
+        endif
+        continue
+      endif
+
+      let i = JuliaMatch(a:lnum, line, '}', s)
+      if i >= 0 && i == fe
+        let s = i+1
+        if len(brackets_stack) > 0 && brackets_stack[-1][0] == 'curbra'
+          call remove(brackets_stack, -1)
+        else
+          let last_closed_bracket = i + 1
+        endif
+        continue
+      endif
+
+      " Note: it should be impossible to get here
+      break
+
+    endif
+
+    " Note: it should be impossible to get here
+    break
+  endwhile
+  let first_open_bracket = -1
+  let last_open_bracket = -1
+  let infuncargs = 0
+  if len(brackets_stack) > 0
+    let first_open_bracket = brackets_stack[0][1]
+    let last_open_bracket = brackets_stack[-1][1]
+    if brackets_stack[-1][0] == 'par' && IsFunctionArgPar(a:lnum, last_open_bracket+1)
+      let infuncargs = 1
+    endif
+  endif
+  return [first_open_bracket, last_open_bracket, last_closed_bracket, infuncargs]
+endfunction
+
+let s:bracketBlocks = '\<julia\%(\%(\%(Printf\)\?Par\|SqBra\%(Idx\)\?\|CurBra\)Block\|ParBlockInRange\|StringVars\%(Par\|SqBra\|CurBra\)\|Dollar\%(Par\|SqBra\)\|QuotedParBlockS\?\)\>'
+
+function IsInBrackets(lnum, c)
+  let stack = map(synstack(a:lnum, a:c), 'synIDattr(v:val, "name")')
+  call filter(stack, 'v:val =~# s:bracketBlocks')
+  return len(stack) > 0
+endfunction
+
+function IsInDocString(lnum)
+  let stack = map(synstack(a:lnum, 1), 'synIDattr(v:val, "name")')
+  call filter(stack, 'v:val =~# "\\<juliaDocString\\(Delim\\|M\\\(Raw\\)\\?\\)\\?\\>"')
+  return len(stack) > 0
+endfunction
+
+function IsInContinuationImportLine(lnum)
+  let stack = map(synstack(a:lnum, 1), 'synIDattr(v:val, "name")')
+  call filter(stack, 'v:val =~# "\\<juliaImportLine\\>"')
+  if len(stack) == 0
+    return 0
+  endif
+  return JuliaMatch(a:lnum, getline(a:lnum), '\<\%(import\|using\|export\)\>', indent(a:lnum)) == -1
+endfunction
+
+function IsFunctionArgPar(lnum, c)
+  if a:c == 0
+    return 0
+  endif
+  let stack = map(synstack(a:lnum, a:c-1), 'synIDattr(v:val, "name")')
+  return len(stack) >= 2 && stack[-2] ==# 'juliaFunctionDef'
+endfunction
+
+function JumpToMatch(lnum, last_closed_bracket)
+  " we use the % command to skip back (tries to ues matchit if possible,
+  " otherwise resorts to vim's default, which is buggy but better than
+  " nothing)
+  call cursor(a:lnum, a:last_closed_bracket)
+  let percmap = maparg("%", "n") 
+  if exists("g:loaded_matchit") && percmap =~# 'Match\%(it\|_wrapper\)'
+    normal %
+  else
+    normal! %
+  end
+endfunction
+
+" Auxiliary function to find a line which does not start in the middle of a
+" multiline bracketed expression, to be used as reference for block
+" indentation.
+function LastBlockIndent(lnum)
+  let lnum = a:lnum
+  let ind = 0
+  while lnum > 0
+    let ind = indent(lnum)
+    if ind == 0
+      return [lnum, 0]
+    endif
+    if !IsInBrackets(lnum, 1)
+      break
+    endif
+    let lnum = prevnonblank(lnum - 1)
+  endwhile
+  return [max([lnum,1]), ind]
+endfunction
+
+function GetJuliaIndent()
+  " Do not alter doctrings indentation
+  if IsInDocString(v:lnum)
+    return -1
+  endif
+
+  " Find a non-blank line above the current line.
+  let lnum = prevnonblank(v:lnum - 1)
+
+  " At the start of the file use zero indent.
+  if lnum == 0
+    return 0
+  endif
+
+  let ind = -1
+  let st = -1
+  let lim = -1
+
+  " Multiline bracketed expressions take precedence
+  let align_brackets = get(g:, "julia_indent_align_brackets", 1)
+  let align_funcargs = get(g:, "julia_indent_align_funcargs", 0)
+  let c = len(getline(lnum)) + 1
+  while IsInBrackets(lnum, c)
+    let [first_open_bracket, last_open_bracket, last_closed_bracket, infuncargs] = GetJuliaNestingBrackets(lnum, c)
+
+    " First scenario: the previous line has a hanging open bracket:
+    " set the indentation to match the opening bracket (plus an extra space)
+    " unless we're in a function arguments list or alignment is disabled, in
+    " which case we just add an extra indent
+    if last_open_bracket != -1
+      if (!infuncargs && align_brackets) || (infuncargs && align_funcargs)
+        let st = last_open_bracket
+        let ind = virtcol([lnum, st + 1])
+      else
+        let ind = indent(lnum) + shiftwidth()
+      endif
+
+    " Second scenario: some multiline bracketed expression was closed in the
+    " previous line. But since we know we are still in a bracketed expression,
+    " we need to find the line where the bracket was opened
+    elseif last_closed_bracket != -1
+      call JumpToMatch(lnum, last_closed_bracket)
+      if line(".") == lnum
+        " something wrong here, give up
+        let ind = indent(lnum)
+      else
+        let lnum = line(".")
+        let c = col(".") - 1
+        if c == 0
+          " uhm, give up
+          let ind = 0
+        else
+          " we skipped a bracket set, keep searching for an opening bracket
+          let lim = c
+          continue
+        endif
+      endif
+
+    " Third scenario: nothing special: keep the indentation
+    else
+      let ind = indent(lnum)
+    endif
+
+    " Does the current line start with a closing bracket? Then depending on
+    " the situation we align it with the opening one, or we let the rest of
+    " the code figure it out (the case in which we're closing a function
+    " argument list is special-cased)
+    if JuliaMatch(v:lnum, getline(v:lnum), '[])}]', indent(v:lnum)) == indent(v:lnum) && ind > 0
+      if !align_brackets && !align_funcargs
+        call JumpToMatch(v:lnum, indent(v:lnum))
+        return indent(line("."))
+      elseif (align_brackets && getline(v:lnum)[indent(v:lnum)] != ')') || align_funcargs
+        return ind - 1
+      else " must be a ')' and align_brackets==1 and align_funcargs==0
+        call JumpToMatch(v:lnum, indent(v:lnum))
+        if IsFunctionArgPar(line("."), col("."))
+          let ind = -1
+        else
+          return ind - 1
+        endif
+      endif
+    endif
+
+    break
+  endwhile
+
+  if ind == -1
+    " We are not in a multiline bracketed expression. Thus we look for a
+    " previous line to use as a reference
+    let [lnum,ind] = LastBlockIndent(lnum)
+    let c = len(getline(lnum)) + 1
+    if IsInBrackets(lnum, c)
+      let [first_open_bracket, last_open_bracket, last_closed_bracket, infuncargs] = GetJuliaNestingBrackets(lnum, c)
+      let lim = first_open_bracket
+    endif
+  end
+
+  " Analyse the reference line
+  let [num_open_blocks, num_closed_blocks] = GetJuliaNestingStruct(lnum, st, lim)
+  " Increase indentation for each newly opened block in the reference line
+  let ind += shiftwidth() * num_open_blocks
+
+  " Analyse the current line
+  let [num_open_blocks, num_closed_blocks] = GetJuliaNestingStruct(v:lnum)
+  " Decrease indentation for each closed block in the current line
+  let ind -= shiftwidth() * num_closed_blocks
+
+  " Additional special case: multiline import/using/export statements
+
+  let prevline = getline(lnum)
+  " Are we in a multiline import/using/export statement, right below the
+  " opening line?
+  if IsInContinuationImportLine(v:lnum) && !IsInContinuationImportLine(lnum)
+    if get(g:, 'julia_indent_align_import', 1)
+      " if the opening line has a colon followed by non-comments, use it as
+      " reference point
+      let cind = JuliaMatch(lnum, prevline, ':', indent(lnum), lim)
+      if cind >= 0
+        let nonwhiteind = JuliaMatch(lnum, prevline, '\S', cind+1, -1, 'basic')
+        if nonwhiteind >= 0
+          " return match(prevline, '\S', cind+1) " a bit overkill...
+          return cind + 2
+        endif
+      else
+        " if the opening line is not a naked import/using/export statement, use
+        " it as reference
+        let iind = JuliaMatch(lnum, prevline, '\<import\|using\|export\>', indent(lnum), lim)
+        if iind >= 0
+          " assuming whitespace after using... so no `using(XYZ)` please!
+          let nonwhiteind = JuliaMatch(lnum, prevline, '\S', iind+6, -1, 'basic')
+          if nonwhiteind >= 0
+            return match(prevline, '\S', iind+6)
+          endif
+        endif
+      endif
+    endif
+    let ind += shiftwidth()
+
+  " Or did we just close a multiline import/using/export statement?
+  elseif !IsInContinuationImportLine(v:lnum) && IsInContinuationImportLine(lnum)
+    " find the starting line of the statement
+    let ilnum = 0
+    for iln in range(lnum-1, 1, -1)
+      if !IsInContinuationImportLine(iln)
+        let ilnum = iln
+        break
+      endif
+    endfor
+    if ilnum == 0
+      " something went horribly wrong, give up
+      let ind = indent(lnum)
+    endif
+    let ind = indent(ilnum)
+  endif
+
+  return ind
+endfunction
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/indent/matlab.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/indent/matlab.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/indent/matlab.vim	(revision 27955)
@@ -0,0 +1,146 @@
+" Matlab indent file
+" Language:	Matlab
+" Maintainer:	Fabrice Guy <fabrice.guy at gmail dot com>
+" Last Change:	2009 Nov 23 - Added support for if/end block on the same line
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+  finish
+endif
+let b:did_indent = 1
+let s:functionWithoutEndStatement = 0
+
+setlocal indentexpr=GetMatlabIndent()
+setlocal indentkeys=!,o,O=end,=case,=else,=elseif,=otherwise,=catch
+
+" Only define the function once.
+if exists("*GetMatlabIndent")
+  finish
+endif
+
+function! s:IsMatlabContinuationLine(lnum)
+  let continuationLine = 0
+  if a:lnum > 0
+    let pnbline = getline(prevnonblank(a:lnum))
+    " if we have the line continuation operator (... at the end of a line or
+    " ... followed by a comment) it may be a line continuation
+    if pnbline =~ '\.\.\.\s*$' || pnbline =~ '\.\.\.\s*%.*$'
+      let continuationLine = 1
+      " but if the ... are part of a string or a comment, it is not a
+      " continuation line
+      let col = match(pnbline, '\.\.\.\s*$')
+      if col == -1
+	let col = match(pnbline, '\.\.\.\s*%.*$')
+      endif
+      if has('syntax_items')
+	if synIDattr(synID(prevnonblank(a:lnum), col + 1, 1), "name") =~ "matlabString" ||
+	      \ synIDattr(synID(prevnonblank(a:lnum), col + 1, 1), "name") =~ "matlabComment" 
+	  let continuationLine = 0
+	endif
+      endif
+    endif
+  endif
+  return continuationLine
+endfunction
+
+function GetMatlabIndent()
+  " Find a non-blank line above the current line.
+  let plnum = prevnonblank(v:lnum - 1)
+
+  " If the previous line is a continuation line, get the beginning of the block to 
+  " use the indent of that line
+  if s:IsMatlabContinuationLine(plnum - 1)
+    while s:IsMatlabContinuationLine(plnum - 1)
+      let plnum = plnum - 1
+    endwhile
+  endif
+
+  " At the start of the file use zero indent.
+  if plnum == 0
+    return 0
+  endif
+
+  let curind = indent(plnum)
+  if s:IsMatlabContinuationLine(v:lnum - 1) 
+    let curind = curind + &sw
+  endif
+  " Add a 'shiftwidth' after classdef, properties, switch, methods, events,
+  " function, if, while, for, otherwise, case, try, catch, else, elseif
+  if getline(plnum) =~ '^\s*\(classdef\|properties\|switch\|methods\|events\|function\|if\|while\|for\|otherwise\|case\|try\|catch\|else\|elseif\)\>'
+    let curind = curind + &sw
+    " In Matlab we have different kind of functions
+    " - the main function (the function with the same name than the filename)
+    " - the nested functions
+    " - the functions defined in methods (for classes)
+    " - subfunctions
+    " Principles for the indentation :
+    " - all the function keywords are indented (corresponding to the
+    "   'indent all functions' in the Matlab Editor)
+    " - if we have only subfonctions (ie if the main function doesn't have
+    "   any mayching end), then each function is dedented
+    if getline(plnum)  =~ '^\s*\function\>'
+      let pplnum = plnum - 1
+      while pplnum > 1 && (getline(pplnum) =~ '^\s*%')
+	let pplnum = pplnum - 1
+      endwhile
+      " If it is the main function, determine if function has a matching end
+      " or not
+      if pplnum <= 1 
+	" look for a matching end : 
+	" - if we find a matching end everything is fine : end of functions
+	"   will be dedented when 'end' is reached
+	" - if not, then all other functions are subfunctions : 'function'
+	"   keyword has to be dedended
+	let old_lnum = v:lnum
+	let motion = plnum . "gg"
+	execute "normal" . motion
+	normal %
+	if getline(line('.')) =~ '^\s*end'
+	  let s:functionWithoutEndStatement = 0
+	else
+	  let s:functionWithoutEndStatement = 1
+	endif
+	normal %
+	let motion = old_lnum . "gg"
+	execute "normal" . motion
+      endif
+    endif
+    " if the for-end block (or while-end) is on the same line : dedent
+    if getline(plnum)  =~ '\<end[,;]*\s*\(%.*\)\?$'
+      let curind = curind - &sw 
+    endif
+  endif
+
+  " Subtract a 'shiftwidth' on a else, elseif, end, catch, otherwise, case
+  if getline(v:lnum) =~ '^\s*\(else\|elseif\|end\|catch\|otherwise\|case\)\>'
+    let curind = curind - &sw
+  endif
+  " No indentation in a subfunction
+  if getline(v:lnum)  =~ '^\s*\function\>' && s:functionWithoutEndStatement
+    let curind = curind - &sw
+  endif
+  " First case after a switch : indent
+  if getline(v:lnum) =~ '^\s*case'
+    while plnum > 0 && (getline(plnum) =~ '^\s*%' || getline(plnum) =~ '^\s*$')
+      let plnum = plnum - 1
+    endwhile
+    if getline(plnum) =~ '^\s*switch'
+      let curind = indent(plnum) + &sw
+    endif
+  endif
+
+  " end in a switch / end block : dedent twice
+  " we use the matchit script to know if this end is the end of a switch block
+  if exists("b:match_words")
+    if getline(v:lnum) =~ '^\s*end'
+      normal %
+      if getline(line('.')) =~ '^\s*switch'
+	let curind = curind - &sw
+      endif
+      normal %
+    end
+  end
+  return curind
+endfunction
+
+" vim:sw=2
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/indent/tex.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/indent/tex.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/indent/tex.vim	(revision 27955)
@@ -0,0 +1,139 @@
+" Vim indent file
+" Language:     LaTeX
+" Maintainer:   Johannes Tanzler <jtanzler@yline.com>
+" Created:      Sat, 16 Feb 2002 16:50:19 +0100
+" Last Change:	Sun, 17 Feb 2002 00:09:11 +0100
+" Last Update:  18th feb 2002, by LH :
+"               (*) better support for the option
+"               (*) use some regex instead of several '||'.
+" Version: 0.02
+" URL: comming soon: http://www.unet.univie.ac.at/~a9925098/vim/indent/tex.vim
+
+" --> If you're a Vim guru & and you find something that could be done in a
+"     better (perhaps in a more Vim-ish or Vi-ish) way, please let me know! 
+
+" Options: {{{
+"
+" To set the following options (ok, currently it's just one), add a line like
+"   let g:tex_indent_items = 1
+" to your ~/.vimrc.
+"
+" * g:tex_indent_items
+"
+"   If this variable is set, item-environments are indented like Emacs does
+"   it, i.e., continuation lines are indented with a shiftwidth.
+"   
+"   NOTE: I've already set the variable below; delete the corresponding line
+"   if you don't like this behaviour.
+"
+"   Per default, it is unset.
+"   
+"              set                                unset
+"   ----------------------------------------------------------------
+"       \begin{itemize}                      \begin{itemize}  
+"         \item blablabla                      \item blablabla
+"           bla bla bla                        bla bla bla  
+"         \item blablabla                      \item blablabla
+"           bla bla bla                        bla bla bla  
+"       \end{itemize}                        \end{itemize}    
+"
+"
+"   This option applies to itemize, description, enumerate, and
+"   thebibliography.
+"
+" }}} 
+
+" Delete the next line to avoid the special indention of items
+if !exists("g:tex_indent_items")
+  let g:tex_indent_items = 1
+endif
+
+if exists("b:did_indent") | finish
+endif
+let b:did_indent = 1
+
+
+setlocal indentexpr=GetTeXIndent()
+setlocal nolisp
+setlocal nosmartindent
+setlocal autoindent
+setlocal indentkeys+=},=\\item,=\\bibitem
+
+
+" Only define the function once
+if exists("*GetTeXIndent") | finish
+endif
+
+
+
+function GetTeXIndent()
+
+  " Find a non-blank line above the current line.
+  let lnum = prevnonblank(v:lnum - 1)
+
+  " At the start of the file use zero indent.
+  if lnum == 0 | return 0 
+  endif
+
+  let ind = indent(lnum)
+  let line = getline(lnum)             " last line
+  let cline = getline(v:lnum)          " current line
+
+  " Do not change indentation of commented lines.
+  if line =~ '^\s*%'
+    return ind
+  endif
+
+  " Add a 'shiftwidth' after beginning of environments.
+  " Don't add it for \begin{document} and \begin{verbatim}
+  ""if line =~ '^\s*\\begin{\(.*\)}'  && line !~ 'verbatim' 
+  " LH modification : \begin does not always start a line
+  if line =~ '\\begin{\(.*\)}'  && line !~ 'verbatim' 
+        \ && line !~ 'document'
+
+    let ind = ind + &sw
+
+    if g:tex_indent_items == 1
+      " Add another sw for item-environments
+      if line =~ 'itemize\|description\|enumerate\|thebibliography'
+        let ind = ind + &sw
+      endif
+    endif
+  endif
+
+  
+  " Subtract a 'shiftwidth' when an environment ends
+  if cline =~ '^\s*\\end' && cline !~ 'verbatim' 
+        \&& cline !~ 'document'
+
+    if g:tex_indent_items == 1
+      " Remove another sw for item-environments
+      if cline =~ 'itemize\|description\|enumerate\|thebibliography'
+        let ind = ind - &sw
+      endif
+    endif
+
+    let ind = ind - &sw
+  endif
+
+  
+  " Special treatment for 'item'
+  " ----------------------------
+  
+  if g:tex_indent_items == 1
+
+    " '\item' or '\bibitem' itself:
+    if cline =~ '^\s*\\\(bib\)\=item' 
+      let ind = ind - &sw
+    endif
+
+    " lines following to '\item' are intented once again:
+    if line =~ '^\s*\\\(bib\)\=item' 
+      let ind = ind + &sw
+    endif
+
+  endif
+
+  return ind
+endfunction
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/keymap/generate_L2U_keymap.jl
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/keymap/generate_L2U_keymap.jl	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/keymap/generate_L2U_keymap.jl	(revision 27955)
@@ -0,0 +1,137 @@
+#!/bin/env julia
+
+import REPL
+
+const filename = "latex2unicode_utf-8"
+const include_emoji = false # set this to true if you want to keymap empjis as well
+
+# We want to avoid situations in which the user types e.g. \delt and pauses,
+# and the result is "∇t" because "\del" gets recognized and then there is some leftover "t".
+# This allows us to get completions with <Tab> for example.
+function fix_completions(completions::Dict{String,String})
+    allinputs = sort!(collect(keys(completions)))
+    new_completions = copy(completions)
+
+    for input in allinputs
+        chars = completions[input]
+        l = length(input)
+        longer = filter(x->startswith(x, input)&&length(x)>l, allinputs)
+        n = length(longer)
+        n == 0 && continue
+        new_completions[input * "<Tab>"] = chars
+        for other in longer
+            add = other[1:(l+1)]
+            get!(new_completions, add, add)
+        end
+    end
+    return new_completions
+end
+
+function unicode_data()
+    file = normpath(Sys.BINDIR, "..", "..", "doc", "UnicodeData.txt")
+    names = Dict{UInt32, String}()
+    open(file) do unidata
+        for line in readlines(unidata)
+            id, name, desc = split(line, ";")[[1, 2, 11]]
+            codepoint = parse(UInt32, "0x$id")
+            names[codepoint] = (name == "" ? desc : desc == "" ? name : "$name / $desc")
+        end
+    end
+    return names
+end
+
+# Prepend a dotted circle ('◌' i.e. '\u25CC') to combining characters
+function fix_combining_chars(char)
+    cat = Base.Unicode.category_code(char)
+    return string(cat == 6 || cat == 8 ? "◌" : "", char)
+end
+
+function table_entries(completions::Dict{String,String}, unicode_dict)
+    latex = String[]
+    code = String[]
+    unicode = String[]
+    desc = String[]
+
+    for (input, chars) in sort!(collect(completions))
+        code_points, unicode_names, characters = String[], String[], String[]
+        if startswith(chars, "\\")
+            push!(code_points, replace(chars, "\\" => "\\\\"))
+            push!(unicode_names, "(Incomplete sequence)")
+            push!(characters, "")
+        else
+            for char in chars
+                push!(code_points, "<char-0x$(uppercase(string(UInt32(char), base = 16, pad = 5)))>")
+                push!(unicode_names, get(unicode_dict, UInt32(char), "(No Unicode name)"))
+                push!(characters, isempty(characters) ? fix_combining_chars(char) : "$char")
+            end
+        end
+        push!(latex, replace(input, "\\"=>"\\\\"))
+        push!(code, join(code_points))
+        push!(unicode, join(characters))
+        push!(desc, join(unicode_names, " + "))
+    end
+    return latex, code, unicode, desc
+end
+
+open("$filename.vim","w") do f
+    print(f, """
+        " This file is autogenerated from the script '$(basename(Base.source_path()))'
+        " The symbols are based on Julia version $VERSION
+        " The full generating script can be found in the comments at the bottom of this file,
+        " and it can be extracted with:
+        "
+        "     \$ grep '^\">' $filename.vim | cut -c4- > '$(basename(Base.source_path()))'
+        "
+        " To produce this keymap file you need to have Julia compilied from source, and
+        " to run `make deps` inside Julia's `doc` directory.
+        " Then you can run:
+        "
+        "     \$ julia $(basename(Base.source_path()))
+        "
+
+        scriptencoding utf-8
+
+        let b:keymap_name = "L2U"
+        loadkeymap
+
+        """)
+
+    col_headers = ["\" Tab completion sequence", "Code point", "Character", "Unicode name"]
+
+    orig_completions = include_emoji ? merge(
+                REPL.REPLCompletions.latex_symbols,
+                REPL.REPLCompletions.emoji_symbols
+                ) :
+                REPL.REPLCompletions.latex_symbols
+
+    latex, code, unicode, desc =
+        table_entries(
+            fix_completions(orig_completions),
+            unicode_data()
+            )
+
+    lw = max(length(col_headers[3]), maximum(map(length, latex)))
+    cw = max(length(col_headers[1]), maximum(map(length, code)))
+    uw = max(length(col_headers[2]), maximum(map(length, unicode)))
+    dw = max(length(col_headers[4]), maximum(map(length, desc)))
+
+    print_padded(l, c, u, d) = println(f, rpad(l, lw), " ", rpad(c, cw), " \" ", rpad(u, uw), " : ", d)
+
+    print_padded(col_headers...)
+    print_padded("\" " * "-"^(lw-2), "-"^cw, "-"^uw, "-"^dw)
+
+    for (l, c, u, d) in zip(latex, code, unicode, desc)
+        print_padded(l, c, u, d)
+    end
+    print_padded("\" " * "-"^(lw-2), "-"^cw, "-"^uw, "-"^dw)
+
+    print(f, """
+
+        " Below here is the script that was used to produce this file.
+
+        """)
+    for l in readlines(Base.source_path())
+        println(f, "\"> ", l)
+    end
+    println(f)
+end
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/keymap/latex2unicode_utf-8.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/keymap/latex2unicode_utf-8.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/keymap/latex2unicode_utf-8.vim	(revision 27955)
@@ -0,0 +1,3662 @@
+" This file is autogenerated from the script 'generate_L2U_keymap.jl'
+" The symbols are based on Julia version 1.7.0-DEV.390
+" The full generating script can be found in the comments at the bottom of this file,
+" and it can be extracted with:
+"
+"     $ grep '^">' latex2unicode_utf-8.vim | cut -c4- > 'generate_L2U_keymap.jl'
+"
+" To produce this keymap file you need to have Julia compilied from source, and
+" to run `make deps` inside Julia's `doc` directory.
+" Then you can run:
+"
+"     $ julia generate_L2U_keymap.jl
+"
+
+scriptencoding utf-8
+
+let b:keymap_name = "L2U"
+loadkeymap
+
+" Tab completion sequence   Code point                   " Character  : Unicode name
+" ------------------------- ---------------------------- " ---------- : --------------------------------------------------------------------------------------------------------
+\\0/3                       <char-0x02189>               " ↉          : VULGAR FRACTION ZERO THIRDS
+\\1/                        <char-0x0215F>               " ⅟          : FRACTION NUMERATOR ONE
+\\1/1                       \\1/1                        "            : (Incomplete sequence)
+\\1/10                      <char-0x02152>               " ⅒          : VULGAR FRACTION ONE TENTH
+\\1/2                       <char-0x000BD>               " ½          : VULGAR FRACTION ONE HALF / FRACTION ONE HALF
+\\1/3                       <char-0x02153>               " ⅓          : VULGAR FRACTION ONE THIRD / FRACTION ONE THIRD
+\\1/4                       <char-0x000BC>               " ¼          : VULGAR FRACTION ONE QUARTER / FRACTION ONE QUARTER
+\\1/5                       <char-0x02155>               " ⅕          : VULGAR FRACTION ONE FIFTH / FRACTION ONE FIFTH
+\\1/6                       <char-0x02159>               " ⅙          : VULGAR FRACTION ONE SIXTH / FRACTION ONE SIXTH
+\\1/7                       <char-0x02150>               " ⅐          : VULGAR FRACTION ONE SEVENTH
+\\1/8                       <char-0x0215B>               " ⅛          : VULGAR FRACTION ONE EIGHTH / FRACTION ONE EIGHTH
+\\1/9                       <char-0x02151>               " ⅑          : VULGAR FRACTION ONE NINTH
+\\1/<Tab>                   <char-0x0215F>               " ⅟          : FRACTION NUMERATOR ONE
+\\2/3                       <char-0x02154>               " ⅔          : VULGAR FRACTION TWO THIRDS / FRACTION TWO THIRDS
+\\2/5                       <char-0x02156>               " ⅖          : VULGAR FRACTION TWO FIFTHS / FRACTION TWO FIFTHS
+\\3/4                       <char-0x000BE>               " ¾          : VULGAR FRACTION THREE QUARTERS / FRACTION THREE QUARTERS
+\\3/5                       <char-0x02157>               " ⅗          : VULGAR FRACTION THREE FIFTHS / FRACTION THREE FIFTHS
+\\3/8                       <char-0x0215C>               " ⅜          : VULGAR FRACTION THREE EIGHTHS / FRACTION THREE EIGHTHS
+\\4/5                       <char-0x02158>               " ⅘          : VULGAR FRACTION FOUR FIFTHS / FRACTION FOUR FIFTHS
+\\5/6                       <char-0x0215A>               " ⅚          : VULGAR FRACTION FIVE SIXTHS / FRACTION FIVE SIXTHS
+\\5/8                       <char-0x0215D>               " ⅝          : VULGAR FRACTION FIVE EIGHTHS / FRACTION FIVE EIGHTHS
+\\7/8                       <char-0x0215E>               " ⅞          : VULGAR FRACTION SEVEN EIGHTHS / FRACTION SEVEN EIGHTHS
+\\AA                        <char-0x000C5>               " Å          : LATIN CAPITAL LETTER A WITH RING ABOVE / LATIN CAPITAL LETTER A RING
+\\AE                        <char-0x000C6>               " Æ          : LATIN CAPITAL LETTER AE / LATIN CAPITAL LETTER A E
+\\Alpha                     <char-0x00391>               " Α          : GREEK CAPITAL LETTER ALPHA
+\\And                       <char-0x02A53>               " ⩓          : DOUBLE LOGICAL AND
+\\Angle                     <char-0x0299C>               " ⦜          : RIGHT ANGLE VARIANT WITH SQUARE
+\\Angstrom                  <char-0x0212B>               " Å          : ANGSTROM SIGN / ANGSTROM UNIT
+\\Beta                      <char-0x00392>               " Β          : GREEK CAPITAL LETTER BETA
+\\Bot                       <char-0x02AEB>               " ⫫          : DOUBLE UP TACK
+\\Bumpeq                    <char-0x0224E>               " ≎          : GEOMETRICALLY EQUIVALENT TO
+\\Cap                       <char-0x022D2>               " ⋒          : DOUBLE INTERSECTION
+\\Chi                       <char-0x003A7>               " Χ          : GREEK CAPITAL LETTER CHI
+\\Colon                     <char-0x02237>               " ∷          : PROPORTION
+\\Colon<Tab>                <char-0x02237>               " ∷          : PROPORTION
+\\Colone                    \\Colone                     "            : (Incomplete sequence)
+\\Coloneq                   <char-0x02A74>               " ⩴          : DOUBLE COLON EQUAL
+\\Cup                       <char-0x022D3>               " ⋓          : DOUBLE UNION
+\\DDownarrow                <char-0x027F1>               " ⟱          : DOWNWARDS QUADRUPLE ARROW
+\\DH                        <char-0x000D0>               " Ð          : LATIN CAPITAL LETTER ETH
+\\DJ                        <char-0x00110>               " Đ          : LATIN CAPITAL LETTER D WITH STROKE / LATIN CAPITAL LETTER D BAR
+\\Dashv                     <char-0x02AE4>               " ⫤          : VERTICAL BAR DOUBLE LEFT TURNSTILE
+\\Ddownarrow                <char-0x0290B>               " ⤋          : DOWNWARDS TRIPLE ARROW
+\\Delta                     <char-0x00394>               " Δ          : GREEK CAPITAL LETTER DELTA
+\\Digamma                   <char-0x003DC>               " Ϝ          : GREEK LETTER DIGAMMA / GREEK CAPITAL LETTER DIGAMMA
+\\Doteq                     <char-0x02251>               " ≑          : GEOMETRICALLY EQUAL TO
+\\DownArrowBar              <char-0x02913>               " ⤓          : DOWNWARDS ARROW TO BAR
+\\DownArrowUpArrow          <char-0x021F5>               " ⇵          : DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW
+\\DownLeftRightVector       <char-0x02950>               " ⥐          : LEFT BARB DOWN RIGHT BARB DOWN HARPOON
+\\DownLeftTeeVector         <char-0x0295E>               " ⥞          : LEFTWARDS HARPOON WITH BARB DOWN FROM BAR
+\\DownLeftVectorBar         <char-0x02956>               " ⥖          : LEFTWARDS HARPOON WITH BARB DOWN TO BAR
+\\DownRightTeeVector        <char-0x0295F>               " ⥟          : RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR
+\\DownRightVectorBar        <char-0x02957>               " ⥗          : RIGHTWARDS HARPOON WITH BARB DOWN TO BAR
+\\Downarrow                 <char-0x021D3>               " ⇓          : DOWNWARDS DOUBLE ARROW / DOWN DOUBLE ARROW
+\\ElOr                      <char-0x02A56>               " ⩖          : TWO INTERSECTING LOGICAL OR
+\\Elroang                   <char-0x02986>               " ⦆          : RIGHT WHITE PARENTHESIS
+\\Epsilon                   <char-0x00395>               " Ε          : GREEK CAPITAL LETTER EPSILON
+\\Equal                     <char-0x02A75>               " ⩵          : TWO CONSECUTIVE EQUALS SIGNS
+\\Equiv                     <char-0x02263>               " ≣          : STRICTLY EQUIVALENT TO
+\\Eta                       <char-0x00397>               " Η          : GREEK CAPITAL LETTER ETA
+\\Finv                      <char-0x02132>               " Ⅎ          : TURNED CAPITAL F / TURNED F
+\\Game                      <char-0x02141>               " ⅁          : TURNED SANS-SERIF CAPITAL G
+\\Gamma                     <char-0x00393>               " Γ          : GREEK CAPITAL LETTER GAMMA
+\\H                         <char-0x0030B>               " ◌̋         : COMBINING DOUBLE ACUTE ACCENT / NON-SPACING DOUBLE ACUTE
+\\Im                        <char-0x02111>               " ℑ          : BLACK-LETTER CAPITAL I / BLACK-LETTER I
+\\Iota                      <char-0x00399>               " Ι          : GREEK CAPITAL LETTER IOTA
+\\Kappa                     <char-0x0039A>               " Κ          : GREEK CAPITAL LETTER KAPPA
+\\Koppa                     <char-0x003DE>               " Ϟ          : GREEK LETTER KOPPA / GREEK CAPITAL LETTER KOPPA
+\\L                         <char-0x00141>               " Ł          : LATIN CAPITAL LETTER L WITH STROKE / LATIN CAPITAL LETTER L SLASH
+\\L<Tab>                    <char-0x00141>               " Ł          : LATIN CAPITAL LETTER L WITH STROKE / LATIN CAPITAL LETTER L SLASH
+\\LL                        \\LL                         "            : (Incomplete sequence)
+\\LLeftarrow                <char-0x02B45>               " ⭅          : LEFTWARDS QUADRUPLE ARROW
+\\La                        \\La                         "            : (Incomplete sequence)
+\\Lambda                    <char-0x0039B>               " Λ          : GREEK CAPITAL LETTER LAMDA / GREEK CAPITAL LETTER LAMBDA
+\\Lap                       <char-0x029CA>               " ⧊          : TRIANGLE WITH DOT ABOVE
+\\Ld                        \\Ld                         "            : (Incomplete sequence)
+\\Ldsh                      <char-0x021B2>               " ↲          : DOWNWARDS ARROW WITH TIP LEFTWARDS / DOWN ARROW WITH TIP LEFT
+\\Le                        \\Le                         "            : (Incomplete sequence)
+\\LeftDownTeeVector         <char-0x02961>               " ⥡          : DOWNWARDS HARPOON WITH BARB LEFT FROM BAR
+\\LeftDownVectorBar         <char-0x02959>               " ⥙          : DOWNWARDS HARPOON WITH BARB LEFT TO BAR
+\\LeftRightVector           <char-0x0294E>               " ⥎          : LEFT BARB UP RIGHT BARB UP HARPOON
+\\LeftTeeVector             <char-0x0295A>               " ⥚          : LEFTWARDS HARPOON WITH BARB UP FROM BAR
+\\LeftTriangleBar           <char-0x029CF>               " ⧏          : LEFT TRIANGLE BESIDE VERTICAL BAR
+\\LeftUpDownVector          <char-0x02951>               " ⥑          : UP BARB LEFT DOWN BARB LEFT HARPOON
+\\LeftUpTeeVector           <char-0x02960>               " ⥠          : UPWARDS HARPOON WITH BARB LEFT FROM BAR
+\\LeftUpVectorBar           <char-0x02958>               " ⥘          : UPWARDS HARPOON WITH BARB LEFT TO BAR
+\\LeftVectorBar             <char-0x02952>               " ⥒          : LEFTWARDS HARPOON WITH BARB UP TO BAR
+\\Leftarrow                 <char-0x021D0>               " ⇐          : LEFTWARDS DOUBLE ARROW / LEFT DOUBLE ARROW
+\\Leftrightarrow            <char-0x021D4>               " ⇔          : LEFT RIGHT DOUBLE ARROW
+\\Ll                        \\Ll                         "            : (Incomplete sequence)
+\\Lleftarrow                <char-0x021DA>               " ⇚          : LEFTWARDS TRIPLE ARROW / LEFT TRIPLE ARROW
+\\Lo                        \\Lo                         "            : (Incomplete sequence)
+\\Longleftarrow             <char-0x027F8>               " ⟸          : LONG LEFTWARDS DOUBLE ARROW
+\\Longleftrightarrow        <char-0x027FA>               " ⟺          : LONG LEFT RIGHT DOUBLE ARROW
+\\Longmapsfrom              <char-0x027FD>               " ⟽          : LONG LEFTWARDS DOUBLE ARROW FROM BAR
+\\Longmapsto                <char-0x027FE>               " ⟾          : LONG RIGHTWARDS DOUBLE ARROW FROM BAR
+\\Longrightarrow            <char-0x027F9>               " ⟹          : LONG RIGHTWARDS DOUBLE ARROW
+\\Ls                        \\Ls                         "            : (Incomplete sequence)
+\\Lsh                       <char-0x021B0>               " ↰          : UPWARDS ARROW WITH TIP LEFTWARDS / UP ARROW WITH TIP LEFT
+\\Mapsfrom                  <char-0x02906>               " ⤆          : LEFTWARDS DOUBLE ARROW FROM BAR
+\\Mapsto                    <char-0x02907>               " ⤇          : RIGHTWARDS DOUBLE ARROW FROM BAR
+\\NG                        <char-0x0014A>               " Ŋ          : LATIN CAPITAL LETTER ENG
+\\Nearrow                   <char-0x021D7>               " ⇗          : NORTH EAST DOUBLE ARROW / UPPER RIGHT DOUBLE ARROW
+\\NestedGreaterGreater      <char-0x02AA2>               " ⪢          : DOUBLE NESTED GREATER-THAN
+\\NestedLessLess            <char-0x02AA1>               " ⪡          : DOUBLE NESTED LESS-THAN
+\\NotGreaterGreater         <char-0x0226B><char-0x00338> " ≫̸         : MUCH GREATER-THAN / MUCH GREATER THAN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\NotLeftTriangleBar        <char-0x029CF><char-0x00338> " ⧏̸         : LEFT TRIANGLE BESIDE VERTICAL BAR + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\NotLessLess               <char-0x0226A><char-0x00338> " ≪̸         : MUCH LESS-THAN / MUCH LESS THAN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\NotNestedGreaterGreater   <char-0x02AA2><char-0x00338> " ⪢̸         : DOUBLE NESTED GREATER-THAN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\NotNestedLessLess         <char-0x02AA1><char-0x00338> " ⪡̸         : DOUBLE NESTED LESS-THAN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\NotRightTriangleBar       <char-0x029D0><char-0x00338> " ⧐̸         : VERTICAL BAR BESIDE RIGHT TRIANGLE + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\NotSquareSubset           <char-0x0228F><char-0x00338> " ⊏̸         : SQUARE IMAGE OF + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\NotSquareSuperset         <char-0x02290><char-0x00338> " ⊐̸         : SQUARE ORIGINAL OF + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\Nwarrow                   <char-0x021D6>               " ⇖          : NORTH WEST DOUBLE ARROW / UPPER LEFT DOUBLE ARROW
+\\O                         <char-0x000D8>               " Ø          : LATIN CAPITAL LETTER O WITH STROKE / LATIN CAPITAL LETTER O SLASH
+\\O<Tab>                    <char-0x000D8>               " Ø          : LATIN CAPITAL LETTER O WITH STROKE / LATIN CAPITAL LETTER O SLASH
+\\OE                        <char-0x00152>               " Œ          : LATIN CAPITAL LIGATURE OE / LATIN CAPITAL LETTER O E
+\\Om                        \\Om                         "            : (Incomplete sequence)
+\\Omega                     <char-0x003A9>               " Ω          : GREEK CAPITAL LETTER OMEGA
+\\Or                        <char-0x02A54>               " ⩔          : DOUBLE LOGICAL OR
+\\Ot                        \\Ot                         "            : (Incomplete sequence)
+\\Otimes                    <char-0x02A37>               " ⨷          : MULTIPLICATION SIGN IN DOUBLE CIRCLE
+\\P                         <char-0x000B6>               " ¶          : PILCROW SIGN / PARAGRAPH SIGN
+\\P<Tab>                    <char-0x000B6>               " ¶          : PILCROW SIGN / PARAGRAPH SIGN
+\\Ph                        \\Ph                         "            : (Incomplete sequence)
+\\Phi                       <char-0x003A6>               " Φ          : GREEK CAPITAL LETTER PHI
+\\Pi                        <char-0x003A0>               " Π          : GREEK CAPITAL LETTER PI
+\\Pr                        \\Pr                         "            : (Incomplete sequence)
+\\Prec                      <char-0x02ABB>               " ⪻          : DOUBLE PRECEDES
+\\PropertyLine              <char-0x0214A>               " ⅊          : PROPERTY LINE
+\\Ps                        \\Ps                         "            : (Incomplete sequence)
+\\Psi                       <char-0x003A8>               " Ψ          : GREEK CAPITAL LETTER PSI
+\\QED                       <char-0x0220E>               " ∎          : END OF PROOF
+\\RRightarrow               <char-0x02B46>               " ⭆          : RIGHTWARDS QUADRUPLE ARROW
+\\Rdsh                      <char-0x021B3>               " ↳          : DOWNWARDS ARROW WITH TIP RIGHTWARDS / DOWN ARROW WITH TIP RIGHT
+\\Re                        <char-0x0211C>               " ℜ          : BLACK-LETTER CAPITAL R / BLACK-LETTER R
+\\Re<Tab>                   <char-0x0211C>               " ℜ          : BLACK-LETTER CAPITAL R / BLACK-LETTER R
+\\Rev                       \\Rev                        "            : (Incomplete sequence)
+\\ReverseUpEquilibrium      <char-0x0296F>               " ⥯          : DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
+\\Rho                       <char-0x003A1>               " Ρ          : GREEK CAPITAL LETTER RHO
+\\RightDownTeeVector        <char-0x0295D>               " ⥝          : DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR
+\\RightDownVectorBar        <char-0x02955>               " ⥕          : DOWNWARDS HARPOON WITH BARB RIGHT TO BAR
+\\RightTeeVector            <char-0x0295B>               " ⥛          : RIGHTWARDS HARPOON WITH BARB UP FROM BAR
+\\RightTriangleBar          <char-0x029D0>               " ⧐          : VERTICAL BAR BESIDE RIGHT TRIANGLE
+\\RightUpDownVector         <char-0x0294F>               " ⥏          : UP BARB RIGHT DOWN BARB RIGHT HARPOON
+\\RightUpTeeVector          <char-0x0295C>               " ⥜          : UPWARDS HARPOON WITH BARB RIGHT FROM BAR
+\\RightUpVectorBar          <char-0x02954>               " ⥔          : UPWARDS HARPOON WITH BARB RIGHT TO BAR
+\\RightVectorBar            <char-0x02953>               " ⥓          : RIGHTWARDS HARPOON WITH BARB UP TO BAR
+\\Rightarrow                <char-0x021D2>               " ⇒          : RIGHTWARDS DOUBLE ARROW / RIGHT DOUBLE ARROW
+\\Rlarr                     <char-0x02942>               " ⥂          : RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW
+\\RoundImplies              <char-0x02970>               " ⥰          : RIGHT DOUBLE ARROW WITH ROUNDED HEAD
+\\Rrightarrow               <char-0x021DB>               " ⇛          : RIGHTWARDS TRIPLE ARROW / RIGHT TRIPLE ARROW
+\\Rsh                       <char-0x021B1>               " ↱          : UPWARDS ARROW WITH TIP RIGHTWARDS / UP ARROW WITH TIP RIGHT
+\\RuleDelayed               <char-0x029F4>               " ⧴          : RULE-DELAYED
+\\S                         <char-0x000A7>               " §          : SECTION SIGN
+\\S<Tab>                    <char-0x000A7>               " §          : SECTION SIGN
+\\Sa                        \\Sa                         "            : (Incomplete sequence)
+\\Sampi                     <char-0x003E0>               " Ϡ          : GREEK LETTER SAMPI / GREEK CAPITAL LETTER SAMPI
+\\Se                        \\Se                         "            : (Incomplete sequence)
+\\Searrow                   <char-0x021D8>               " ⇘          : SOUTH EAST DOUBLE ARROW / LOWER RIGHT DOUBLE ARROW
+\\Si                        \\Si                         "            : (Incomplete sequence)
+\\Sigma                     <char-0x003A3>               " Σ          : GREEK CAPITAL LETTER SIGMA
+\\Sq                        \\Sq                         "            : (Incomplete sequence)
+\\Sqcap                     <char-0x02A4E>               " ⩎          : DOUBLE SQUARE INTERSECTION
+\\Sqcup                     <char-0x02A4F>               " ⩏          : DOUBLE SQUARE UNION
+\\St                        \\St                         "            : (Incomplete sequence)
+\\Stigma                    <char-0x003DA>               " Ϛ          : GREEK LETTER STIGMA / GREEK CAPITAL LETTER STIGMA
+\\Su                        \\Su                         "            : (Incomplete sequence)
+\\Subset                    <char-0x022D0>               " ⋐          : DOUBLE SUBSET
+\\Succ                      <char-0x02ABC>               " ⪼          : DOUBLE SUCCEEDS
+\\Supset                    <char-0x022D1>               " ⋑          : DOUBLE SUPERSET
+\\Sw                        \\Sw                         "            : (Incomplete sequence)
+\\Swarrow                   <char-0x021D9>               " ⇙          : SOUTH WEST DOUBLE ARROW / LOWER LEFT DOUBLE ARROW
+\\TH                        <char-0x000DE>               " Þ          : LATIN CAPITAL LETTER THORN
+\\Tau                       <char-0x003A4>               " Τ          : GREEK CAPITAL LETTER TAU
+\\Theta                     <char-0x00398>               " Θ          : GREEK CAPITAL LETTER THETA
+\\Times                     <char-0x02A2F>               " ⨯          : VECTOR OR CROSS PRODUCT
+\\Top                       <char-0x02AEA>               " ⫪          : DOUBLE DOWN TACK
+\\UUparrow                  <char-0x027F0>               " ⟰          : UPWARDS QUADRUPLE ARROW
+\\UpArrowBar                <char-0x02912>               " ⤒          : UPWARDS ARROW TO BAR
+\\UpEquilibrium             <char-0x0296E>               " ⥮          : UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
+\\Uparrow                   <char-0x021D1>               " ⇑          : UPWARDS DOUBLE ARROW / UP DOUBLE ARROW
+\\Updownarrow               <char-0x021D5>               " ⇕          : UP DOWN DOUBLE ARROW
+\\Upsilon                   <char-0x003A5>               " Υ          : GREEK CAPITAL LETTER UPSILON
+\\Uuparrow                  <char-0x0290A>               " ⤊          : UPWARDS TRIPLE ARROW
+\\VDash                     <char-0x022AB>               " ⊫          : DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+\\Vdash                     <char-0x022A9>               " ⊩          : FORCES
+\\Vert                      <char-0x02016>               " ‖          : DOUBLE VERTICAL LINE / DOUBLE VERTICAL BAR
+\\Vvdash                    <char-0x022AA>               " ⊪          : TRIPLE VERTICAL BAR RIGHT TURNSTILE
+\\Vvert                     <char-0x02980>               " ⦀          : TRIPLE VERTICAL BAR DELIMITER
+\\Xi                        <char-0x0039E>               " Ξ          : GREEK CAPITAL LETTER XI
+\\Yup                       <char-0x02144>               " ⅄          : TURNED SANS-SERIF CAPITAL Y
+\\Zbar                      <char-0x001B5>               " Ƶ          : LATIN CAPITAL LETTER Z WITH STROKE / LATIN CAPITAL LETTER Z BAR
+\\Zeta                      <char-0x00396>               " Ζ          : GREEK CAPITAL LETTER ZETA
+\\^!                        <char-0x0A71D>               " ꜝ          : MODIFIER LETTER RAISED EXCLAMATION MARK
+\\^(                        <char-0x0207D>               " ⁽          : SUPERSCRIPT LEFT PARENTHESIS / SUPERSCRIPT OPENING PARENTHESIS
+\\^)                        <char-0x0207E>               " ⁾          : SUPERSCRIPT RIGHT PARENTHESIS / SUPERSCRIPT CLOSING PARENTHESIS
+\\^+                        <char-0x0207A>               " ⁺          : SUPERSCRIPT PLUS SIGN
+\\^-                        <char-0x0207B>               " ⁻          : SUPERSCRIPT MINUS / SUPERSCRIPT HYPHEN-MINUS
+\\^0                        <char-0x02070>               " ⁰          : SUPERSCRIPT ZERO / SUPERSCRIPT DIGIT ZERO
+\\^1                        <char-0x000B9>               " ¹          : SUPERSCRIPT ONE / SUPERSCRIPT DIGIT ONE
+\\^2                        <char-0x000B2>               " ²          : SUPERSCRIPT TWO / SUPERSCRIPT DIGIT TWO
+\\^3                        <char-0x000B3>               " ³          : SUPERSCRIPT THREE / SUPERSCRIPT DIGIT THREE
+\\^4                        <char-0x02074>               " ⁴          : SUPERSCRIPT FOUR / SUPERSCRIPT DIGIT FOUR
+\\^5                        <char-0x02075>               " ⁵          : SUPERSCRIPT FIVE / SUPERSCRIPT DIGIT FIVE
+\\^6                        <char-0x02076>               " ⁶          : SUPERSCRIPT SIX / SUPERSCRIPT DIGIT SIX
+\\^7                        <char-0x02077>               " ⁷          : SUPERSCRIPT SEVEN / SUPERSCRIPT DIGIT SEVEN
+\\^8                        <char-0x02078>               " ⁸          : SUPERSCRIPT EIGHT / SUPERSCRIPT DIGIT EIGHT
+\\^9                        <char-0x02079>               " ⁹          : SUPERSCRIPT NINE / SUPERSCRIPT DIGIT NINE
+\\^=                        <char-0x0207C>               " ⁼          : SUPERSCRIPT EQUALS SIGN
+\\^A                        <char-0x01D2C>               " ᴬ          : MODIFIER LETTER CAPITAL A
+\\^B                        <char-0x01D2E>               " ᴮ          : MODIFIER LETTER CAPITAL B
+\\^D                        <char-0x01D30>               " ᴰ          : MODIFIER LETTER CAPITAL D
+\\^E                        <char-0x01D31>               " ᴱ          : MODIFIER LETTER CAPITAL E
+\\^G                        <char-0x01D33>               " ᴳ          : MODIFIER LETTER CAPITAL G
+\\^H                        <char-0x01D34>               " ᴴ          : MODIFIER LETTER CAPITAL H
+\\^I                        <char-0x01D35>               " ᴵ          : MODIFIER LETTER CAPITAL I
+\\^J                        <char-0x01D36>               " ᴶ          : MODIFIER LETTER CAPITAL J
+\\^K                        <char-0x01D37>               " ᴷ          : MODIFIER LETTER CAPITAL K
+\\^L                        <char-0x01D38>               " ᴸ          : MODIFIER LETTER CAPITAL L
+\\^M                        <char-0x01D39>               " ᴹ          : MODIFIER LETTER CAPITAL M
+\\^N                        <char-0x01D3A>               " ᴺ          : MODIFIER LETTER CAPITAL N
+\\^O                        <char-0x01D3C>               " ᴼ          : MODIFIER LETTER CAPITAL O
+\\^P                        <char-0x01D3E>               " ᴾ          : MODIFIER LETTER CAPITAL P
+\\^R                        <char-0x01D3F>               " ᴿ          : MODIFIER LETTER CAPITAL R
+\\^T                        <char-0x01D40>               " ᵀ          : MODIFIER LETTER CAPITAL T
+\\^U                        <char-0x01D41>               " ᵁ          : MODIFIER LETTER CAPITAL U
+\\^V                        <char-0x02C7D>               " ⱽ          : MODIFIER LETTER CAPITAL V
+\\^W                        <char-0x01D42>               " ᵂ          : MODIFIER LETTER CAPITAL W
+\\^a                        <char-0x01D43>               " ᵃ          : MODIFIER LETTER SMALL A
+\\^a<Tab>                   <char-0x01D43>               " ᵃ          : MODIFIER LETTER SMALL A
+\\^al                       \\^al                        "            : (Incomplete sequence)
+\\^alpha                    <char-0x01D45>               " ᵅ          : MODIFIER LETTER SMALL ALPHA
+\\^b                        <char-0x01D47>               " ᵇ          : MODIFIER LETTER SMALL B
+\\^b<Tab>                   <char-0x01D47>               " ᵇ          : MODIFIER LETTER SMALL B
+\\^be                       \\^be                        "            : (Incomplete sequence)
+\\^beta                     <char-0x01D5D>               " ᵝ          : MODIFIER LETTER SMALL BETA
+\\^c                        <char-0x01D9C>               " ᶜ          : MODIFIER LETTER SMALL C
+\\^c<Tab>                   <char-0x01D9C>               " ᶜ          : MODIFIER LETTER SMALL C
+\\^ch                       \\^ch                        "            : (Incomplete sequence)
+\\^chi                      <char-0x01D61>               " ᵡ          : MODIFIER LETTER SMALL CHI
+\\^d                        <char-0x01D48>               " ᵈ          : MODIFIER LETTER SMALL D
+\\^d<Tab>                   <char-0x01D48>               " ᵈ          : MODIFIER LETTER SMALL D
+\\^de                       \\^de                        "            : (Incomplete sequence)
+\\^delta                    <char-0x01D5F>               " ᵟ          : MODIFIER LETTER SMALL DELTA
+\\^do                       \\^do                        "            : (Incomplete sequence)
+\\^downarrow                <char-0x0A71C>               " ꜜ          : MODIFIER LETTER RAISED DOWN ARROW
+\\^e                        <char-0x01D49>               " ᵉ          : MODIFIER LETTER SMALL E
+\\^e<Tab>                   <char-0x01D49>               " ᵉ          : MODIFIER LETTER SMALL E
+\\^ep                       \\^ep                        "            : (Incomplete sequence)
+\\^epsilon                  <char-0x01D4B>               " ᵋ          : MODIFIER LETTER SMALL OPEN E
+\\^f                        <char-0x01DA0>               " ᶠ          : MODIFIER LETTER SMALL F
+\\^g                        <char-0x01D4D>               " ᵍ          : MODIFIER LETTER SMALL G
+\\^g<Tab>                   <char-0x01D4D>               " ᵍ          : MODIFIER LETTER SMALL G
+\\^ga                       \\^ga                        "            : (Incomplete sequence)
+\\^gamma                    <char-0x01D5E>               " ᵞ          : MODIFIER LETTER SMALL GREEK GAMMA
+\\^h                        <char-0x002B0>               " ʰ          : MODIFIER LETTER SMALL H
+\\^i                        <char-0x02071>               " ⁱ          : SUPERSCRIPT LATIN SMALL LETTER I
+\\^i<Tab>                   <char-0x02071>               " ⁱ          : SUPERSCRIPT LATIN SMALL LETTER I
+\\^io                       \\^io                        "            : (Incomplete sequence)
+\\^iota                     <char-0x01DA5>               " ᶥ          : MODIFIER LETTER SMALL IOTA
+\\^j                        <char-0x002B2>               " ʲ          : MODIFIER LETTER SMALL J
+\\^k                        <char-0x01D4F>               " ᵏ          : MODIFIER LETTER SMALL K
+\\^l                        <char-0x002E1>               " ˡ          : MODIFIER LETTER SMALL L
+\\^l<Tab>                   <char-0x002E1>               " ˡ          : MODIFIER LETTER SMALL L
+\\^lt                       \\^lt                        "            : (Incomplete sequence)
+\\^ltphi                    <char-0x01DB2>               " ᶲ          : MODIFIER LETTER SMALL PHI
+\\^m                        <char-0x01D50>               " ᵐ          : MODIFIER LETTER SMALL M
+\\^n                        <char-0x0207F>               " ⁿ          : SUPERSCRIPT LATIN SMALL LETTER N
+\\^o                        <char-0x01D52>               " ᵒ          : MODIFIER LETTER SMALL O
+\\^p                        <char-0x01D56>               " ᵖ          : MODIFIER LETTER SMALL P
+\\^p<Tab>                   <char-0x01D56>               " ᵖ          : MODIFIER LETTER SMALL P
+\\^ph                       \\^ph                        "            : (Incomplete sequence)
+\\^phi                      <char-0x01D60>               " ᵠ          : MODIFIER LETTER SMALL GREEK PHI
+\\^r                        <char-0x002B3>               " ʳ          : MODIFIER LETTER SMALL R
+\\^s                        <char-0x002E2>               " ˢ          : MODIFIER LETTER SMALL S
+\\^t                        <char-0x01D57>               " ᵗ          : MODIFIER LETTER SMALL T
+\\^t<Tab>                   <char-0x01D57>               " ᵗ          : MODIFIER LETTER SMALL T
+\\^th                       \\^th                        "            : (Incomplete sequence)
+\\^theta                    <char-0x01DBF>               " ᶿ          : MODIFIER LETTER SMALL THETA
+\\^u                        <char-0x01D58>               " ᵘ          : MODIFIER LETTER SMALL U
+\\^u<Tab>                   <char-0x01D58>               " ᵘ          : MODIFIER LETTER SMALL U
+\\^up                       \\^up                        "            : (Incomplete sequence)
+\\^uparrow                  <char-0x0A71B>               " ꜛ          : MODIFIER LETTER RAISED UP ARROW
+\\^v                        <char-0x01D5B>               " ᵛ          : MODIFIER LETTER SMALL V
+\\^w                        <char-0x002B7>               " ʷ          : MODIFIER LETTER SMALL W
+\\^x                        <char-0x002E3>               " ˣ          : MODIFIER LETTER SMALL X
+\\^y                        <char-0x002B8>               " ʸ          : MODIFIER LETTER SMALL Y
+\\^z                        <char-0x01DBB>               " ᶻ          : MODIFIER LETTER SMALL Z
+\\_(                        <char-0x0208D>               " ₍          : SUBSCRIPT LEFT PARENTHESIS / SUBSCRIPT OPENING PARENTHESIS
+\\_)                        <char-0x0208E>               " ₎          : SUBSCRIPT RIGHT PARENTHESIS / SUBSCRIPT CLOSING PARENTHESIS
+\\_+                        <char-0x0208A>               " ₊          : SUBSCRIPT PLUS SIGN
+\\_-                        <char-0x0208B>               " ₋          : SUBSCRIPT MINUS / SUBSCRIPT HYPHEN-MINUS
+\\_0                        <char-0x02080>               " ₀          : SUBSCRIPT ZERO / SUBSCRIPT DIGIT ZERO
+\\_1                        <char-0x02081>               " ₁          : SUBSCRIPT ONE / SUBSCRIPT DIGIT ONE
+\\_2                        <char-0x02082>               " ₂          : SUBSCRIPT TWO / SUBSCRIPT DIGIT TWO
+\\_3                        <char-0x02083>               " ₃          : SUBSCRIPT THREE / SUBSCRIPT DIGIT THREE
+\\_4                        <char-0x02084>               " ₄          : SUBSCRIPT FOUR / SUBSCRIPT DIGIT FOUR
+\\_5                        <char-0x02085>               " ₅          : SUBSCRIPT FIVE / SUBSCRIPT DIGIT FIVE
+\\_6                        <char-0x02086>               " ₆          : SUBSCRIPT SIX / SUBSCRIPT DIGIT SIX
+\\_7                        <char-0x02087>               " ₇          : SUBSCRIPT SEVEN / SUBSCRIPT DIGIT SEVEN
+\\_8                        <char-0x02088>               " ₈          : SUBSCRIPT EIGHT / SUBSCRIPT DIGIT EIGHT
+\\_9                        <char-0x02089>               " ₉          : SUBSCRIPT NINE / SUBSCRIPT DIGIT NINE
+\\_=                        <char-0x0208C>               " ₌          : SUBSCRIPT EQUALS SIGN
+\\_a                        <char-0x02090>               " ₐ          : LATIN SUBSCRIPT SMALL LETTER A
+\\_beta                     <char-0x01D66>               " ᵦ          : GREEK SUBSCRIPT SMALL LETTER BETA
+\\_chi                      <char-0x01D6A>               " ᵪ          : GREEK SUBSCRIPT SMALL LETTER CHI
+\\_e                        <char-0x02091>               " ₑ          : LATIN SUBSCRIPT SMALL LETTER E
+\\_gamma                    <char-0x01D67>               " ᵧ          : GREEK SUBSCRIPT SMALL LETTER GAMMA
+\\_h                        <char-0x02095>               " ₕ          : LATIN SUBSCRIPT SMALL LETTER H
+\\_i                        <char-0x01D62>               " ᵢ          : LATIN SUBSCRIPT SMALL LETTER I
+\\_j                        <char-0x02C7C>               " ⱼ          : LATIN SUBSCRIPT SMALL LETTER J
+\\_k                        <char-0x02096>               " ₖ          : LATIN SUBSCRIPT SMALL LETTER K
+\\_l                        <char-0x02097>               " ₗ          : LATIN SUBSCRIPT SMALL LETTER L
+\\_m                        <char-0x02098>               " ₘ          : LATIN SUBSCRIPT SMALL LETTER M
+\\_n                        <char-0x02099>               " ₙ          : LATIN SUBSCRIPT SMALL LETTER N
+\\_o                        <char-0x02092>               " ₒ          : LATIN SUBSCRIPT SMALL LETTER O
+\\_p                        <char-0x0209A>               " ₚ          : LATIN SUBSCRIPT SMALL LETTER P
+\\_p<Tab>                   <char-0x0209A>               " ₚ          : LATIN SUBSCRIPT SMALL LETTER P
+\\_ph                       \\_ph                        "            : (Incomplete sequence)
+\\_phi                      <char-0x01D69>               " ᵩ          : GREEK SUBSCRIPT SMALL LETTER PHI
+\\_r                        <char-0x01D63>               " ᵣ          : LATIN SUBSCRIPT SMALL LETTER R
+\\_r<Tab>                   <char-0x01D63>               " ᵣ          : LATIN SUBSCRIPT SMALL LETTER R
+\\_rh                       \\_rh                        "            : (Incomplete sequence)
+\\_rho                      <char-0x01D68>               " ᵨ          : GREEK SUBSCRIPT SMALL LETTER RHO
+\\_s                        <char-0x0209B>               " ₛ          : LATIN SUBSCRIPT SMALL LETTER S
+\\_s<Tab>                   <char-0x0209B>               " ₛ          : LATIN SUBSCRIPT SMALL LETTER S
+\\_sc                       \\_sc                        "            : (Incomplete sequence)
+\\_schwa                    <char-0x02094>               " ₔ          : LATIN SUBSCRIPT SMALL LETTER SCHWA
+\\_t                        <char-0x0209C>               " ₜ          : LATIN SUBSCRIPT SMALL LETTER T
+\\_u                        <char-0x01D64>               " ᵤ          : LATIN SUBSCRIPT SMALL LETTER U
+\\_v                        <char-0x01D65>               " ᵥ          : LATIN SUBSCRIPT SMALL LETTER V
+\\_x                        <char-0x02093>               " ₓ          : LATIN SUBSCRIPT SMALL LETTER X
+\\aa                        <char-0x000E5>               " å          : LATIN SMALL LETTER A WITH RING ABOVE / LATIN SMALL LETTER A RING
+\\accurrent                 <char-0x023E6>               " ⏦          : AC CURRENT
+\\acidfree                  <char-0x0267E>               " ♾          : PERMANENT PAPER SIGN
+\\acute                     <char-0x00301>               " ◌́         : COMBINING ACUTE ACCENT / NON-SPACING ACUTE
+\\adots                     <char-0x022F0>               " ⋰          : UP RIGHT DIAGONAL ELLIPSIS
+\\ae                        <char-0x000E6>               " æ          : LATIN SMALL LETTER AE / LATIN SMALL LETTER A E
+\\aleph                     <char-0x02135>               " ℵ          : ALEF SYMBOL / FIRST TRANSFINITE CARDINAL
+\\allequal                  <char-0x0224C>               " ≌          : ALL EQUAL TO
+\\alpha                     <char-0x003B1>               " α          : GREEK SMALL LETTER ALPHA
+\\amalg                     <char-0x02A3F>               " ⨿          : AMALGAMATION OR COPRODUCT
+\\angdnr                    <char-0x0299F>               " ⦟          : ACUTE ANGLE
+\\angle                     <char-0x02220>               " ∠          : ANGLE
+\\angle<Tab>                <char-0x02220>               " ∠          : ANGLE
+\\angles                    <char-0x0299E>               " ⦞          : ANGLE WITH S INSIDE
+\\angleu                    \\angleu                     "            : (Incomplete sequence)
+\\angleubar                 <char-0x029A4>               " ⦤          : ANGLE WITH UNDERBAR
+\\annuity                   <char-0x020E7>               " ◌⃧         : COMBINING ANNUITY SYMBOL
+\\approx                    <char-0x02248>               " ≈          : ALMOST EQUAL TO
+\\approx<Tab>               <char-0x02248>               " ≈          : ALMOST EQUAL TO
+\\approxe                   \\approxe                    "            : (Incomplete sequence)
+\\approxeq                  <char-0x0224A>               " ≊          : ALMOST EQUAL OR EQUAL TO
+\\approxeq<Tab>             <char-0x0224A>               " ≊          : ALMOST EQUAL OR EQUAL TO
+\\approxeqq                 <char-0x02A70>               " ⩰          : APPROXIMATELY EQUAL OR EQUAL TO
+\\approxn                   \\approxn                    "            : (Incomplete sequence)
+\\approxnotequal            <char-0x02246>               " ≆          : APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
+\\aquarius                  <char-0x02652>               " ♒          : AQUARIUS
+\\arceq                     <char-0x02258>               " ≘          : CORRESPONDS TO
+\\aries                     <char-0x02648>               " ♈          : ARIES
+\\ast                       <char-0x02217>               " ∗          : ASTERISK OPERATOR
+\\ast<Tab>                  <char-0x02217>               " ∗          : ASTERISK OPERATOR
+\\aste                      \\aste                       "            : (Incomplete sequence)
+\\asteq                     <char-0x02A6E>               " ⩮          : EQUALS WITH ASTERISK
+\\asteraccent               <char-0x020F0>               " ◌⃰         : COMBINING ASTERISK ABOVE
+\\astr                      \\astr                       "            : (Incomplete sequence)
+\\astrosun                  <char-0x02609>               " ☉          : SUN
+\\asymp                     <char-0x0224D>               " ≍          : EQUIVALENT TO
+\\awint                     <char-0x02A11>               " ⨑          : ANTICLOCKWISE INTEGRATION
+\\backepsilon               <char-0x003F6>               " ϶          : GREEK REVERSED LUNATE EPSILON SYMBOL
+\\backppprime               <char-0x02037>               " ‷          : REVERSED TRIPLE PRIME
+\\backpprime                <char-0x02036>               " ‶          : REVERSED DOUBLE PRIME
+\\backprime                 <char-0x02035>               " ‵          : REVERSED PRIME
+\\backsim                   <char-0x0223D>               " ∽          : REVERSED TILDE
+\\backsim<Tab>              <char-0x0223D>               " ∽          : REVERSED TILDE
+\\backsime                  \\backsime                   "            : (Incomplete sequence)
+\\backsimeq                 <char-0x022CD>               " ⋍          : REVERSED TILDE EQUALS
+\\bagmember                 <char-0x022FF>               " ⋿          : Z NOTATION BAG MEMBERSHIP
+\\bar                       <char-0x00304>               " ◌̄         : COMBINING MACRON / NON-SPACING MACRON
+\\bar<Tab>                  <char-0x00304>               " ◌̄         : COMBINING MACRON / NON-SPACING MACRON
+\\barc                      \\barc                       "            : (Incomplete sequence)
+\\barcap                    <char-0x02A43>               " ⩃          : INTERSECTION WITH OVERBAR
+\\barcup                    <char-0x02A42>               " ⩂          : UNION WITH OVERBAR
+\\barl                      \\barl                       "            : (Incomplete sequence)
+\\barleftarrow              <char-0x021E4>               " ⇤          : LEFTWARDS ARROW TO BAR / LEFT ARROW TO BAR
+\\barleftarrow<Tab>         <char-0x021E4>               " ⇤          : LEFTWARDS ARROW TO BAR / LEFT ARROW TO BAR
+\\barleftarrowr             \\barleftarrowr              "            : (Incomplete sequence)
+\\barleftarrowrightarrowbar <char-0x021B9>               " ↹          : LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR / LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR
+\\baro                      \\baro                       "            : (Incomplete sequence)
+\\barovernorthwestarrow     <char-0x021B8>               " ↸          : NORTH WEST ARROW TO LONG BAR / UPPER LEFT ARROW TO LONG BAR
+\\barr                      \\barr                       "            : (Incomplete sequence)
+\\barrightarrowdiamond      <char-0x02920>               " ⤠          : RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND
+\\barv                      \\barv                       "            : (Incomplete sequence)
+\\barvee                    <char-0x022BD>               " ⊽          : NOR
+\\barw                      \\barw                       "            : (Incomplete sequence)
+\\barwedge                  <char-0x022BC>               " ⊼          : NAND
+\\bbA                       <char-0x1D538>               " 𝔸          : MATHEMATICAL DOUBLE-STRUCK CAPITAL A
+\\bbB                       <char-0x1D539>               " 𝔹          : MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+\\bbC                       <char-0x02102>               " ℂ          : DOUBLE-STRUCK CAPITAL C / DOUBLE-STRUCK C
+\\bbD                       <char-0x1D53B>               " 𝔻          : MATHEMATICAL DOUBLE-STRUCK CAPITAL D
+\\bbE                       <char-0x1D53C>               " 𝔼          : MATHEMATICAL DOUBLE-STRUCK CAPITAL E
+\\bbF                       <char-0x1D53D>               " 𝔽          : MATHEMATICAL DOUBLE-STRUCK CAPITAL F
+\\bbG                       <char-0x1D53E>               " 𝔾          : MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+\\bbG<Tab>                  <char-0x1D53E>               " 𝔾          : MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+\\bbGa                      \\bbGa                       "            : (Incomplete sequence)
+\\bbGamma                   <char-0x0213E>               " ℾ          : DOUBLE-STRUCK CAPITAL GAMMA
+\\bbH                       <char-0x0210D>               " ℍ          : DOUBLE-STRUCK CAPITAL H / DOUBLE-STRUCK H
+\\bbI                       <char-0x1D540>               " 𝕀          : MATHEMATICAL DOUBLE-STRUCK CAPITAL I
+\\bbJ                       <char-0x1D541>               " 𝕁          : MATHEMATICAL DOUBLE-STRUCK CAPITAL J
+\\bbK                       <char-0x1D542>               " 𝕂          : MATHEMATICAL DOUBLE-STRUCK CAPITAL K
+\\bbL                       <char-0x1D543>               " 𝕃          : MATHEMATICAL DOUBLE-STRUCK CAPITAL L
+\\bbM                       <char-0x1D544>               " 𝕄          : MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+\\bbN                       <char-0x02115>               " ℕ          : DOUBLE-STRUCK CAPITAL N / DOUBLE-STRUCK N
+\\bbO                       <char-0x1D546>               " 𝕆          : MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+\\bbP                       <char-0x02119>               " ℙ          : DOUBLE-STRUCK CAPITAL P / DOUBLE-STRUCK P
+\\bbP<Tab>                  <char-0x02119>               " ℙ          : DOUBLE-STRUCK CAPITAL P / DOUBLE-STRUCK P
+\\bbPi                      <char-0x0213F>               " ℿ          : DOUBLE-STRUCK CAPITAL PI
+\\bbQ                       <char-0x0211A>               " ℚ          : DOUBLE-STRUCK CAPITAL Q / DOUBLE-STRUCK Q
+\\bbR                       <char-0x0211D>               " ℝ          : DOUBLE-STRUCK CAPITAL R / DOUBLE-STRUCK R
+\\bbS                       <char-0x1D54A>               " 𝕊          : MATHEMATICAL DOUBLE-STRUCK CAPITAL S
+\\bbT                       <char-0x1D54B>               " 𝕋          : MATHEMATICAL DOUBLE-STRUCK CAPITAL T
+\\bbU                       <char-0x1D54C>               " 𝕌          : MATHEMATICAL DOUBLE-STRUCK CAPITAL U
+\\bbV                       <char-0x1D54D>               " 𝕍          : MATHEMATICAL DOUBLE-STRUCK CAPITAL V
+\\bbW                       <char-0x1D54E>               " 𝕎          : MATHEMATICAL DOUBLE-STRUCK CAPITAL W
+\\bbX                       <char-0x1D54F>               " 𝕏          : MATHEMATICAL DOUBLE-STRUCK CAPITAL X
+\\bbY                       <char-0x1D550>               " 𝕐          : MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+\\bbZ                       <char-0x02124>               " ℤ          : DOUBLE-STRUCK CAPITAL Z / DOUBLE-STRUCK Z
+\\bba                       <char-0x1D552>               " 𝕒          : MATHEMATICAL DOUBLE-STRUCK SMALL A
+\\bbb                       <char-0x1D553>               " 𝕓          : MATHEMATICAL DOUBLE-STRUCK SMALL B
+\\bbc                       <char-0x1D554>               " 𝕔          : MATHEMATICAL DOUBLE-STRUCK SMALL C
+\\bbd                       <char-0x1D555>               " 𝕕          : MATHEMATICAL DOUBLE-STRUCK SMALL D
+\\bbe                       <char-0x1D556>               " 𝕖          : MATHEMATICAL DOUBLE-STRUCK SMALL E
+\\bbe<Tab>                  <char-0x1D556>               " 𝕖          : MATHEMATICAL DOUBLE-STRUCK SMALL E
+\\bbei                      \\bbei                       "            : (Incomplete sequence)
+\\bbeight                   <char-0x1D7E0>               " 𝟠          : MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT
+\\bbf                       <char-0x1D557>               " 𝕗          : MATHEMATICAL DOUBLE-STRUCK SMALL F
+\\bbf<Tab>                  <char-0x1D557>               " 𝕗          : MATHEMATICAL DOUBLE-STRUCK SMALL F
+\\bbfi                      \\bbfi                       "            : (Incomplete sequence)
+\\bbfive                    <char-0x1D7DD>               " 𝟝          : MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE
+\\bbfo                      \\bbfo                       "            : (Incomplete sequence)
+\\bbfour                    <char-0x1D7DC>               " 𝟜          : MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR
+\\bbg                       <char-0x1D558>               " 𝕘          : MATHEMATICAL DOUBLE-STRUCK SMALL G
+\\bbg<Tab>                  <char-0x1D558>               " 𝕘          : MATHEMATICAL DOUBLE-STRUCK SMALL G
+\\bbga                      \\bbga                       "            : (Incomplete sequence)
+\\bbgamma                   <char-0x0213D>               " ℽ          : DOUBLE-STRUCK SMALL GAMMA
+\\bbh                       <char-0x1D559>               " 𝕙          : MATHEMATICAL DOUBLE-STRUCK SMALL H
+\\bbi                       <char-0x1D55A>               " 𝕚          : MATHEMATICAL DOUBLE-STRUCK SMALL I
+\\bbi<Tab>                  <char-0x1D55A>               " 𝕚          : MATHEMATICAL DOUBLE-STRUCK SMALL I
+\\bbiD                      <char-0x02145>               " ⅅ          : DOUBLE-STRUCK ITALIC CAPITAL D
+\\bbid                      <char-0x02146>               " ⅆ          : DOUBLE-STRUCK ITALIC SMALL D
+\\bbie                      <char-0x02147>               " ⅇ          : DOUBLE-STRUCK ITALIC SMALL E
+\\bbii                      <char-0x02148>               " ⅈ          : DOUBLE-STRUCK ITALIC SMALL I
+\\bbij                      <char-0x02149>               " ⅉ          : DOUBLE-STRUCK ITALIC SMALL J
+\\bbj                       <char-0x1D55B>               " 𝕛          : MATHEMATICAL DOUBLE-STRUCK SMALL J
+\\bbk                       <char-0x1D55C>               " 𝕜          : MATHEMATICAL DOUBLE-STRUCK SMALL K
+\\bbl                       <char-0x1D55D>               " 𝕝          : MATHEMATICAL DOUBLE-STRUCK SMALL L
+\\bbm                       <char-0x1D55E>               " 𝕞          : MATHEMATICAL DOUBLE-STRUCK SMALL M
+\\bbn                       <char-0x1D55F>               " 𝕟          : MATHEMATICAL DOUBLE-STRUCK SMALL N
+\\bbn<Tab>                  <char-0x1D55F>               " 𝕟          : MATHEMATICAL DOUBLE-STRUCK SMALL N
+\\bbni                      \\bbni                       "            : (Incomplete sequence)
+\\bbnine                    <char-0x1D7E1>               " 𝟡          : MATHEMATICAL DOUBLE-STRUCK DIGIT NINE
+\\bbo                       <char-0x1D560>               " 𝕠          : MATHEMATICAL DOUBLE-STRUCK SMALL O
+\\bbo<Tab>                  <char-0x1D560>               " 𝕠          : MATHEMATICAL DOUBLE-STRUCK SMALL O
+\\bbon                      \\bbon                       "            : (Incomplete sequence)
+\\bbone                     <char-0x1D7D9>               " 𝟙          : MATHEMATICAL DOUBLE-STRUCK DIGIT ONE
+\\bbp                       <char-0x1D561>               " 𝕡          : MATHEMATICAL DOUBLE-STRUCK SMALL P
+\\bbp<Tab>                  <char-0x1D561>               " 𝕡          : MATHEMATICAL DOUBLE-STRUCK SMALL P
+\\bbpi                      <char-0x0213C>               " ℼ          : DOUBLE-STRUCK SMALL PI
+\\bbq                       <char-0x1D562>               " 𝕢          : MATHEMATICAL DOUBLE-STRUCK SMALL Q
+\\bbr                       <char-0x1D563>               " 𝕣          : MATHEMATICAL DOUBLE-STRUCK SMALL R
+\\bbr<Tab>                  <char-0x1D563>               " 𝕣          : MATHEMATICAL DOUBLE-STRUCK SMALL R
+\\bbrk                      \\bbrk                       "            : (Incomplete sequence)
+\\bbrktbrk                  <char-0x023B6>               " ⎶          : BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET
+\\bbs                       <char-0x1D564>               " 𝕤          : MATHEMATICAL DOUBLE-STRUCK SMALL S
+\\bbs<Tab>                  <char-0x1D564>               " 𝕤          : MATHEMATICAL DOUBLE-STRUCK SMALL S
+\\bbse                      \\bbse                       "            : (Incomplete sequence)
+\\bbsemi                    <char-0x02A1F>               " ⨟          : Z NOTATION SCHEMA COMPOSITION
+\\bbseven                   <char-0x1D7DF>               " 𝟟          : MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN
+\\bbsi                      \\bbsi                       "            : (Incomplete sequence)
+\\bbsix                     <char-0x1D7DE>               " 𝟞          : MATHEMATICAL DOUBLE-STRUCK DIGIT SIX
+\\bbsu                      \\bbsu                       "            : (Incomplete sequence)
+\\bbsum                     <char-0x02140>               " ⅀          : DOUBLE-STRUCK N-ARY SUMMATION
+\\bbt                       <char-0x1D565>               " 𝕥          : MATHEMATICAL DOUBLE-STRUCK SMALL T
+\\bbt<Tab>                  <char-0x1D565>               " 𝕥          : MATHEMATICAL DOUBLE-STRUCK SMALL T
+\\bbth                      \\bbth                       "            : (Incomplete sequence)
+\\bbthree                   <char-0x1D7DB>               " 𝟛          : MATHEMATICAL DOUBLE-STRUCK DIGIT THREE
+\\bbtw                      \\bbtw                       "            : (Incomplete sequence)
+\\bbtwo                     <char-0x1D7DA>               " 𝟚          : MATHEMATICAL DOUBLE-STRUCK DIGIT TWO
+\\bbu                       <char-0x1D566>               " 𝕦          : MATHEMATICAL DOUBLE-STRUCK SMALL U
+\\bbv                       <char-0x1D567>               " 𝕧          : MATHEMATICAL DOUBLE-STRUCK SMALL V
+\\bbw                       <char-0x1D568>               " 𝕨          : MATHEMATICAL DOUBLE-STRUCK SMALL W
+\\bbx                       <char-0x1D569>               " 𝕩          : MATHEMATICAL DOUBLE-STRUCK SMALL X
+\\bby                       <char-0x1D56A>               " 𝕪          : MATHEMATICAL DOUBLE-STRUCK SMALL Y
+\\bbz                       <char-0x1D56B>               " 𝕫          : MATHEMATICAL DOUBLE-STRUCK SMALL Z
+\\bbz<Tab>                  <char-0x1D56B>               " 𝕫          : MATHEMATICAL DOUBLE-STRUCK SMALL Z
+\\bbze                      \\bbze                       "            : (Incomplete sequence)
+\\bbzero                    <char-0x1D7D8>               " 𝟘          : MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO
+\\because                   <char-0x02235>               " ∵          : BECAUSE
+\\benzenr                   <char-0x023E3>               " ⏣          : BENZENE RING WITH CIRCLE
+\\beta                      <char-0x003B2>               " β          : GREEK SMALL LETTER BETA
+\\beth                      <char-0x02136>               " ℶ          : BET SYMBOL / SECOND TRANSFINITE CARDINAL
+\\between                   <char-0x0226C>               " ≬          : BETWEEN
+\\bfA                       <char-0x1D400>               " 𝐀          : MATHEMATICAL BOLD CAPITAL A
+\\bfA<Tab>                  <char-0x1D400>               " 𝐀          : MATHEMATICAL BOLD CAPITAL A
+\\bfAl                      \\bfAl                       "            : (Incomplete sequence)
+\\bfAlpha                   <char-0x1D6A8>               " 𝚨          : MATHEMATICAL BOLD CAPITAL ALPHA
+\\bfB                       <char-0x1D401>               " 𝐁          : MATHEMATICAL BOLD CAPITAL B
+\\bfB<Tab>                  <char-0x1D401>               " 𝐁          : MATHEMATICAL BOLD CAPITAL B
+\\bfBe                      \\bfBe                       "            : (Incomplete sequence)
+\\bfBeta                    <char-0x1D6A9>               " 𝚩          : MATHEMATICAL BOLD CAPITAL BETA
+\\bfC                       <char-0x1D402>               " 𝐂          : MATHEMATICAL BOLD CAPITAL C
+\\bfC<Tab>                  <char-0x1D402>               " 𝐂          : MATHEMATICAL BOLD CAPITAL C
+\\bfCh                      \\bfCh                       "            : (Incomplete sequence)
+\\bfChi                     <char-0x1D6BE>               " 𝚾          : MATHEMATICAL BOLD CAPITAL CHI
+\\bfD                       <char-0x1D403>               " 𝐃          : MATHEMATICAL BOLD CAPITAL D
+\\bfD<Tab>                  <char-0x1D403>               " 𝐃          : MATHEMATICAL BOLD CAPITAL D
+\\bfDe                      \\bfDe                       "            : (Incomplete sequence)
+\\bfDelta                   <char-0x1D6AB>               " 𝚫          : MATHEMATICAL BOLD CAPITAL DELTA
+\\bfDi                      \\bfDi                       "            : (Incomplete sequence)
+\\bfDigamma                 <char-0x1D7CA>               " 𝟊          : MATHEMATICAL BOLD CAPITAL DIGAMMA
+\\bfE                       <char-0x1D404>               " 𝐄          : MATHEMATICAL BOLD CAPITAL E
+\\bfE<Tab>                  <char-0x1D404>               " 𝐄          : MATHEMATICAL BOLD CAPITAL E
+\\bfEp                      \\bfEp                       "            : (Incomplete sequence)
+\\bfEpsilon                 <char-0x1D6AC>               " 𝚬          : MATHEMATICAL BOLD CAPITAL EPSILON
+\\bfEt                      \\bfEt                       "            : (Incomplete sequence)
+\\bfEta                     <char-0x1D6AE>               " 𝚮          : MATHEMATICAL BOLD CAPITAL ETA
+\\bfF                       <char-0x1D405>               " 𝐅          : MATHEMATICAL BOLD CAPITAL F
+\\bfG                       <char-0x1D406>               " 𝐆          : MATHEMATICAL BOLD CAPITAL G
+\\bfG<Tab>                  <char-0x1D406>               " 𝐆          : MATHEMATICAL BOLD CAPITAL G
+\\bfGa                      \\bfGa                       "            : (Incomplete sequence)
+\\bfGamma                   <char-0x1D6AA>               " 𝚪          : MATHEMATICAL BOLD CAPITAL GAMMA
+\\bfH                       <char-0x1D407>               " 𝐇          : MATHEMATICAL BOLD CAPITAL H
+\\bfI                       <char-0x1D408>               " 𝐈          : MATHEMATICAL BOLD CAPITAL I
+\\bfI<Tab>                  <char-0x1D408>               " 𝐈          : MATHEMATICAL BOLD CAPITAL I
+\\bfIo                      \\bfIo                       "            : (Incomplete sequence)
+\\bfIota                    <char-0x1D6B0>               " 𝚰          : MATHEMATICAL BOLD CAPITAL IOTA
+\\bfJ                       <char-0x1D409>               " 𝐉          : MATHEMATICAL BOLD CAPITAL J
+\\bfK                       <char-0x1D40A>               " 𝐊          : MATHEMATICAL BOLD CAPITAL K
+\\bfK<Tab>                  <char-0x1D40A>               " 𝐊          : MATHEMATICAL BOLD CAPITAL K
+\\bfKa                      \\bfKa                       "            : (Incomplete sequence)
+\\bfKappa                   <char-0x1D6B1>               " 𝚱          : MATHEMATICAL BOLD CAPITAL KAPPA
+\\bfL                       <char-0x1D40B>               " 𝐋          : MATHEMATICAL BOLD CAPITAL L
+\\bfL<Tab>                  <char-0x1D40B>               " 𝐋          : MATHEMATICAL BOLD CAPITAL L
+\\bfLa                      \\bfLa                       "            : (Incomplete sequence)
+\\bfLambda                  <char-0x1D6B2>               " 𝚲          : MATHEMATICAL BOLD CAPITAL LAMDA
+\\bfM                       <char-0x1D40C>               " 𝐌          : MATHEMATICAL BOLD CAPITAL M
+\\bfM<Tab>                  <char-0x1D40C>               " 𝐌          : MATHEMATICAL BOLD CAPITAL M
+\\bfMu                      <char-0x1D6B3>               " 𝚳          : MATHEMATICAL BOLD CAPITAL MU
+\\bfN                       <char-0x1D40D>               " 𝐍          : MATHEMATICAL BOLD CAPITAL N
+\\bfN<Tab>                  <char-0x1D40D>               " 𝐍          : MATHEMATICAL BOLD CAPITAL N
+\\bfNu                      <char-0x1D6B4>               " 𝚴          : MATHEMATICAL BOLD CAPITAL NU
+\\bfO                       <char-0x1D40E>               " 𝐎          : MATHEMATICAL BOLD CAPITAL O
+\\bfO<Tab>                  <char-0x1D40E>               " 𝐎          : MATHEMATICAL BOLD CAPITAL O
+\\bfOm                      \\bfOm                       "            : (Incomplete sequence)
+\\bfOmega                   <char-0x1D6C0>               " 𝛀          : MATHEMATICAL BOLD CAPITAL OMEGA
+\\bfOmicron                 <char-0x1D6B6>               " 𝚶          : MATHEMATICAL BOLD CAPITAL OMICRON
+\\bfP                       <char-0x1D40F>               " 𝐏          : MATHEMATICAL BOLD CAPITAL P
+\\bfP<Tab>                  <char-0x1D40F>               " 𝐏          : MATHEMATICAL BOLD CAPITAL P
+\\bfPh                      \\bfPh                       "            : (Incomplete sequence)
+\\bfPhi                     <char-0x1D6BD>               " 𝚽          : MATHEMATICAL BOLD CAPITAL PHI
+\\bfPi                      <char-0x1D6B7>               " 𝚷          : MATHEMATICAL BOLD CAPITAL PI
+\\bfPs                      \\bfPs                       "            : (Incomplete sequence)
+\\bfPsi                     <char-0x1D6BF>               " 𝚿          : MATHEMATICAL BOLD CAPITAL PSI
+\\bfQ                       <char-0x1D410>               " 𝐐          : MATHEMATICAL BOLD CAPITAL Q
+\\bfR                       <char-0x1D411>               " 𝐑          : MATHEMATICAL BOLD CAPITAL R
+\\bfR<Tab>                  <char-0x1D411>               " 𝐑          : MATHEMATICAL BOLD CAPITAL R
+\\bfRh                      \\bfRh                       "            : (Incomplete sequence)
+\\bfRho                     <char-0x1D6B8>               " 𝚸          : MATHEMATICAL BOLD CAPITAL RHO
+\\bfS                       <char-0x1D412>               " 𝐒          : MATHEMATICAL BOLD CAPITAL S
+\\bfS<Tab>                  <char-0x1D412>               " 𝐒          : MATHEMATICAL BOLD CAPITAL S
+\\bfSi                      \\bfSi                       "            : (Incomplete sequence)
+\\bfSigma                   <char-0x1D6BA>               " 𝚺          : MATHEMATICAL BOLD CAPITAL SIGMA
+\\bfT                       <char-0x1D413>               " 𝐓          : MATHEMATICAL BOLD CAPITAL T
+\\bfT<Tab>                  <char-0x1D413>               " 𝐓          : MATHEMATICAL BOLD CAPITAL T
+\\bfTa                      \\bfTa                       "            : (Incomplete sequence)
+\\bfTau                     <char-0x1D6BB>               " 𝚻          : MATHEMATICAL BOLD CAPITAL TAU
+\\bfTh                      \\bfTh                       "            : (Incomplete sequence)
+\\bfTheta                   <char-0x1D6AF>               " 𝚯          : MATHEMATICAL BOLD CAPITAL THETA
+\\bfU                       <char-0x1D414>               " 𝐔          : MATHEMATICAL BOLD CAPITAL U
+\\bfU<Tab>                  <char-0x1D414>               " 𝐔          : MATHEMATICAL BOLD CAPITAL U
+\\bfUp                      \\bfUp                       "            : (Incomplete sequence)
+\\bfUpsilon                 <char-0x1D6BC>               " 𝚼          : MATHEMATICAL BOLD CAPITAL UPSILON
+\\bfV                       <char-0x1D415>               " 𝐕          : MATHEMATICAL BOLD CAPITAL V
+\\bfW                       <char-0x1D416>               " 𝐖          : MATHEMATICAL BOLD CAPITAL W
+\\bfX                       <char-0x1D417>               " 𝐗          : MATHEMATICAL BOLD CAPITAL X
+\\bfX<Tab>                  <char-0x1D417>               " 𝐗          : MATHEMATICAL BOLD CAPITAL X
+\\bfXi                      <char-0x1D6B5>               " 𝚵          : MATHEMATICAL BOLD CAPITAL XI
+\\bfY                       <char-0x1D418>               " 𝐘          : MATHEMATICAL BOLD CAPITAL Y
+\\bfZ                       <char-0x1D419>               " 𝐙          : MATHEMATICAL BOLD CAPITAL Z
+\\bfZ<Tab>                  <char-0x1D419>               " 𝐙          : MATHEMATICAL BOLD CAPITAL Z
+\\bfZe                      \\bfZe                       "            : (Incomplete sequence)
+\\bfZeta                    <char-0x1D6AD>               " 𝚭          : MATHEMATICAL BOLD CAPITAL ZETA
+\\bfa                       <char-0x1D41A>               " 𝐚          : MATHEMATICAL BOLD SMALL A
+\\bfa<Tab>                  <char-0x1D41A>               " 𝐚          : MATHEMATICAL BOLD SMALL A
+\\bfal                      \\bfal                       "            : (Incomplete sequence)
+\\bfalpha                   <char-0x1D6C2>               " 𝛂          : MATHEMATICAL BOLD SMALL ALPHA
+\\bfb                       <char-0x1D41B>               " 𝐛          : MATHEMATICAL BOLD SMALL B
+\\bfb<Tab>                  <char-0x1D41B>               " 𝐛          : MATHEMATICAL BOLD SMALL B
+\\bfbe                      \\bfbe                       "            : (Incomplete sequence)
+\\bfbeta                    <char-0x1D6C3>               " 𝛃          : MATHEMATICAL BOLD SMALL BETA
+\\bfc                       <char-0x1D41C>               " 𝐜          : MATHEMATICAL BOLD SMALL C
+\\bfc<Tab>                  <char-0x1D41C>               " 𝐜          : MATHEMATICAL BOLD SMALL C
+\\bfch                      \\bfch                       "            : (Incomplete sequence)
+\\bfchi                     <char-0x1D6D8>               " 𝛘          : MATHEMATICAL BOLD SMALL CHI
+\\bfd                       <char-0x1D41D>               " 𝐝          : MATHEMATICAL BOLD SMALL D
+\\bfd<Tab>                  <char-0x1D41D>               " 𝐝          : MATHEMATICAL BOLD SMALL D
+\\bfde                      \\bfde                       "            : (Incomplete sequence)
+\\bfdelta                   <char-0x1D6C5>               " 𝛅          : MATHEMATICAL BOLD SMALL DELTA
+\\bfdi                      \\bfdi                       "            : (Incomplete sequence)
+\\bfdigamma                 <char-0x1D7CB>               " 𝟋          : MATHEMATICAL BOLD SMALL DIGAMMA
+\\bfe                       <char-0x1D41E>               " 𝐞          : MATHEMATICAL BOLD SMALL E
+\\bfe<Tab>                  <char-0x1D41E>               " 𝐞          : MATHEMATICAL BOLD SMALL E
+\\bfei                      \\bfei                       "            : (Incomplete sequence)
+\\bfeight                   <char-0x1D7D6>               " 𝟖          : MATHEMATICAL BOLD DIGIT EIGHT
+\\bfep                      \\bfep                       "            : (Incomplete sequence)
+\\bfepsilon                 <char-0x1D6DC>               " 𝛜          : MATHEMATICAL BOLD EPSILON SYMBOL
+\\bfet                      \\bfet                       "            : (Incomplete sequence)
+\\bfeta                     <char-0x1D6C8>               " 𝛈          : MATHEMATICAL BOLD SMALL ETA
+\\bff                       <char-0x1D41F>               " 𝐟          : MATHEMATICAL BOLD SMALL F
+\\bff<Tab>                  <char-0x1D41F>               " 𝐟          : MATHEMATICAL BOLD SMALL F
+\\bffi                      \\bffi                       "            : (Incomplete sequence)
+\\bffive                    <char-0x1D7D3>               " 𝟓          : MATHEMATICAL BOLD DIGIT FIVE
+\\bffo                      \\bffo                       "            : (Incomplete sequence)
+\\bffour                    <char-0x1D7D2>               " 𝟒          : MATHEMATICAL BOLD DIGIT FOUR
+\\bfg                       <char-0x1D420>               " 𝐠          : MATHEMATICAL BOLD SMALL G
+\\bfg<Tab>                  <char-0x1D420>               " 𝐠          : MATHEMATICAL BOLD SMALL G
+\\bfga                      \\bfga                       "            : (Incomplete sequence)
+\\bfgamma                   <char-0x1D6C4>               " 𝛄          : MATHEMATICAL BOLD SMALL GAMMA
+\\bfh                       <char-0x1D421>               " 𝐡          : MATHEMATICAL BOLD SMALL H
+\\bfi                       <char-0x1D422>               " 𝐢          : MATHEMATICAL BOLD SMALL I
+\\bfi<Tab>                  <char-0x1D422>               " 𝐢          : MATHEMATICAL BOLD SMALL I
+\\bfio                      \\bfio                       "            : (Incomplete sequence)
+\\bfiota                    <char-0x1D6CA>               " 𝛊          : MATHEMATICAL BOLD SMALL IOTA
+\\bfj                       <char-0x1D423>               " 𝐣          : MATHEMATICAL BOLD SMALL J
+\\bfk                       <char-0x1D424>               " 𝐤          : MATHEMATICAL BOLD SMALL K
+\\bfk<Tab>                  <char-0x1D424>               " 𝐤          : MATHEMATICAL BOLD SMALL K
+\\bfka                      \\bfka                       "            : (Incomplete sequence)
+\\bfkappa                   <char-0x1D6CB>               " 𝛋          : MATHEMATICAL BOLD SMALL KAPPA
+\\bfl                       <char-0x1D425>               " 𝐥          : MATHEMATICAL BOLD SMALL L
+\\bfl<Tab>                  <char-0x1D425>               " 𝐥          : MATHEMATICAL BOLD SMALL L
+\\bfla                      \\bfla                       "            : (Incomplete sequence)
+\\bflambda                  <char-0x1D6CC>               " 𝛌          : MATHEMATICAL BOLD SMALL LAMDA
+\\bfm                       <char-0x1D426>               " 𝐦          : MATHEMATICAL BOLD SMALL M
+\\bfm<Tab>                  <char-0x1D426>               " 𝐦          : MATHEMATICAL BOLD SMALL M
+\\bfmu                      <char-0x1D6CD>               " 𝛍          : MATHEMATICAL BOLD SMALL MU
+\\bfn                       <char-0x1D427>               " 𝐧          : MATHEMATICAL BOLD SMALL N
+\\bfn<Tab>                  <char-0x1D427>               " 𝐧          : MATHEMATICAL BOLD SMALL N
+\\bfna                      \\bfna                       "            : (Incomplete sequence)
+\\bfnabla                   <char-0x1D6C1>               " 𝛁          : MATHEMATICAL BOLD NABLA
+\\bfni                      \\bfni                       "            : (Incomplete sequence)
+\\bfnine                    <char-0x1D7D7>               " 𝟗          : MATHEMATICAL BOLD DIGIT NINE
+\\bfnu                      <char-0x1D6CE>               " 𝛎          : MATHEMATICAL BOLD SMALL NU
+\\bfo                       <char-0x1D428>               " 𝐨          : MATHEMATICAL BOLD SMALL O
+\\bfo<Tab>                  <char-0x1D428>               " 𝐨          : MATHEMATICAL BOLD SMALL O
+\\bfom                      \\bfom                       "            : (Incomplete sequence)
+\\bfomega                   <char-0x1D6DA>               " 𝛚          : MATHEMATICAL BOLD SMALL OMEGA
+\\bfomicron                 <char-0x1D6D0>               " 𝛐          : MATHEMATICAL BOLD SMALL OMICRON
+\\bfon                      \\bfon                       "            : (Incomplete sequence)
+\\bfone                     <char-0x1D7CF>               " 𝟏          : MATHEMATICAL BOLD DIGIT ONE
+\\bfp                       <char-0x1D429>               " 𝐩          : MATHEMATICAL BOLD SMALL P
+\\bfp<Tab>                  <char-0x1D429>               " 𝐩          : MATHEMATICAL BOLD SMALL P
+\\bfpa                      \\bfpa                       "            : (Incomplete sequence)
+\\bfpartial                 <char-0x1D6DB>               " 𝛛          : MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+\\bfph                      \\bfph                       "            : (Incomplete sequence)
+\\bfphi                     <char-0x1D6DF>               " 𝛟          : MATHEMATICAL BOLD PHI SYMBOL
+\\bfpi                      <char-0x1D6D1>               " 𝛑          : MATHEMATICAL BOLD SMALL PI
+\\bfps                      \\bfps                       "            : (Incomplete sequence)
+\\bfpsi                     <char-0x1D6D9>               " 𝛙          : MATHEMATICAL BOLD SMALL PSI
+\\bfq                       <char-0x1D42A>               " 𝐪          : MATHEMATICAL BOLD SMALL Q
+\\bfr                       <char-0x1D42B>               " 𝐫          : MATHEMATICAL BOLD SMALL R
+\\bfr<Tab>                  <char-0x1D42B>               " 𝐫          : MATHEMATICAL BOLD SMALL R
+\\bfra                      \\bfra                       "            : (Incomplete sequence)
+\\bfrakA                    <char-0x1D56C>               " 𝕬          : MATHEMATICAL BOLD FRAKTUR CAPITAL A
+\\bfrakB                    <char-0x1D56D>               " 𝕭          : MATHEMATICAL BOLD FRAKTUR CAPITAL B
+\\bfrakC                    <char-0x1D56E>               " 𝕮          : MATHEMATICAL BOLD FRAKTUR CAPITAL C
+\\bfrakD                    <char-0x1D56F>               " 𝕯          : MATHEMATICAL BOLD FRAKTUR CAPITAL D
+\\bfrakE                    <char-0x1D570>               " 𝕰          : MATHEMATICAL BOLD FRAKTUR CAPITAL E
+\\bfrakF                    <char-0x1D571>               " 𝕱          : MATHEMATICAL BOLD FRAKTUR CAPITAL F
+\\bfrakG                    <char-0x1D572>               " 𝕲          : MATHEMATICAL BOLD FRAKTUR CAPITAL G
+\\bfrakH                    <char-0x1D573>               " 𝕳          : MATHEMATICAL BOLD FRAKTUR CAPITAL H
+\\bfrakI                    <char-0x1D574>               " 𝕴          : MATHEMATICAL BOLD FRAKTUR CAPITAL I
+\\bfrakJ                    <char-0x1D575>               " 𝕵          : MATHEMATICAL BOLD FRAKTUR CAPITAL J
+\\bfrakK                    <char-0x1D576>               " 𝕶          : MATHEMATICAL BOLD FRAKTUR CAPITAL K
+\\bfrakL                    <char-0x1D577>               " 𝕷          : MATHEMATICAL BOLD FRAKTUR CAPITAL L
+\\bfrakM                    <char-0x1D578>               " 𝕸          : MATHEMATICAL BOLD FRAKTUR CAPITAL M
+\\bfrakN                    <char-0x1D579>               " 𝕹          : MATHEMATICAL BOLD FRAKTUR CAPITAL N
+\\bfrakO                    <char-0x1D57A>               " 𝕺          : MATHEMATICAL BOLD FRAKTUR CAPITAL O
+\\bfrakP                    <char-0x1D57B>               " 𝕻          : MATHEMATICAL BOLD FRAKTUR CAPITAL P
+\\bfrakQ                    <char-0x1D57C>               " 𝕼          : MATHEMATICAL BOLD FRAKTUR CAPITAL Q
+\\bfrakR                    <char-0x1D57D>               " 𝕽          : MATHEMATICAL BOLD FRAKTUR CAPITAL R
+\\bfrakS                    <char-0x1D57E>               " 𝕾          : MATHEMATICAL BOLD FRAKTUR CAPITAL S
+\\bfrakT                    <char-0x1D57F>               " 𝕿          : MATHEMATICAL BOLD FRAKTUR CAPITAL T
+\\bfrakU                    <char-0x1D580>               " 𝖀          : MATHEMATICAL BOLD FRAKTUR CAPITAL U
+\\bfrakV                    <char-0x1D581>               " 𝖁          : MATHEMATICAL BOLD FRAKTUR CAPITAL V
+\\bfrakW                    <char-0x1D582>               " 𝖂          : MATHEMATICAL BOLD FRAKTUR CAPITAL W
+\\bfrakX                    <char-0x1D583>               " 𝖃          : MATHEMATICAL BOLD FRAKTUR CAPITAL X
+\\bfrakY                    <char-0x1D584>               " 𝖄          : MATHEMATICAL BOLD FRAKTUR CAPITAL Y
+\\bfrakZ                    <char-0x1D585>               " 𝖅          : MATHEMATICAL BOLD FRAKTUR CAPITAL Z
+\\bfraka                    <char-0x1D586>               " 𝖆          : MATHEMATICAL BOLD FRAKTUR SMALL A
+\\bfrakb                    <char-0x1D587>               " 𝖇          : MATHEMATICAL BOLD FRAKTUR SMALL B
+\\bfrakc                    <char-0x1D588>               " 𝖈          : MATHEMATICAL BOLD FRAKTUR SMALL C
+\\bfrakd                    <char-0x1D589>               " 𝖉          : MATHEMATICAL BOLD FRAKTUR SMALL D
+\\bfrake                    <char-0x1D58A>               " 𝖊          : MATHEMATICAL BOLD FRAKTUR SMALL E
+\\bfrakf                    <char-0x1D58B>               " 𝖋          : MATHEMATICAL BOLD FRAKTUR SMALL F
+\\bfrakg                    <char-0x1D58C>               " 𝖌          : MATHEMATICAL BOLD FRAKTUR SMALL G
+\\bfrakh                    <char-0x1D58D>               " 𝖍          : MATHEMATICAL BOLD FRAKTUR SMALL H
+\\bfraki                    <char-0x1D58E>               " 𝖎          : MATHEMATICAL BOLD FRAKTUR SMALL I
+\\bfrakj                    <char-0x1D58F>               " 𝖏          : MATHEMATICAL BOLD FRAKTUR SMALL J
+\\bfrakk                    <char-0x1D590>               " 𝖐          : MATHEMATICAL BOLD FRAKTUR SMALL K
+\\bfrakl                    <char-0x1D591>               " 𝖑          : MATHEMATICAL BOLD FRAKTUR SMALL L
+\\bfrakm                    <char-0x1D592>               " 𝖒          : MATHEMATICAL BOLD FRAKTUR SMALL M
+\\bfrakn                    <char-0x1D593>               " 𝖓          : MATHEMATICAL BOLD FRAKTUR SMALL N
+\\bfrako                    <char-0x1D594>               " 𝖔          : MATHEMATICAL BOLD FRAKTUR SMALL O
+\\bfrakp                    <char-0x1D595>               " 𝖕          : MATHEMATICAL BOLD FRAKTUR SMALL P
+\\bfrakq                    <char-0x1D596>               " 𝖖          : MATHEMATICAL BOLD FRAKTUR SMALL Q
+\\bfrakr                    <char-0x1D597>               " 𝖗          : MATHEMATICAL BOLD FRAKTUR SMALL R
+\\bfraks                    <char-0x1D598>               " 𝖘          : MATHEMATICAL BOLD FRAKTUR SMALL S
+\\bfrakt                    <char-0x1D599>               " 𝖙          : MATHEMATICAL BOLD FRAKTUR SMALL T
+\\bfraku                    <char-0x1D59A>               " 𝖚          : MATHEMATICAL BOLD FRAKTUR SMALL U
+\\bfrakv                    <char-0x1D59B>               " 𝖛          : MATHEMATICAL BOLD FRAKTUR SMALL V
+\\bfrakw                    <char-0x1D59C>               " 𝖜          : MATHEMATICAL BOLD FRAKTUR SMALL W
+\\bfrakx                    <char-0x1D59D>               " 𝖝          : MATHEMATICAL BOLD FRAKTUR SMALL X
+\\bfraky                    <char-0x1D59E>               " 𝖞          : MATHEMATICAL BOLD FRAKTUR SMALL Y
+\\bfrakz                    <char-0x1D59F>               " 𝖟          : MATHEMATICAL BOLD FRAKTUR SMALL Z
+\\bfrh                      \\bfrh                       "            : (Incomplete sequence)
+\\bfrho                     <char-0x1D6D2>               " 𝛒          : MATHEMATICAL BOLD SMALL RHO
+\\bfs                       <char-0x1D42C>               " 𝐬          : MATHEMATICAL BOLD SMALL S
+\\bfs<Tab>                  <char-0x1D42C>               " 𝐬          : MATHEMATICAL BOLD SMALL S
+\\bfse                      \\bfse                       "            : (Incomplete sequence)
+\\bfseven                   <char-0x1D7D5>               " 𝟕          : MATHEMATICAL BOLD DIGIT SEVEN
+\\bfsi                      \\bfsi                       "            : (Incomplete sequence)
+\\bfsigma                   <char-0x1D6D4>               " 𝛔          : MATHEMATICAL BOLD SMALL SIGMA
+\\bfsix                     <char-0x1D7D4>               " 𝟔          : MATHEMATICAL BOLD DIGIT SIX
+\\bft                       <char-0x1D42D>               " 𝐭          : MATHEMATICAL BOLD SMALL T
+\\bft<Tab>                  <char-0x1D42D>               " 𝐭          : MATHEMATICAL BOLD SMALL T
+\\bfta                      \\bfta                       "            : (Incomplete sequence)
+\\bftau                     <char-0x1D6D5>               " 𝛕          : MATHEMATICAL BOLD SMALL TAU
+\\bfth                      \\bfth                       "            : (Incomplete sequence)
+\\bftheta                   <char-0x1D6C9>               " 𝛉          : MATHEMATICAL BOLD SMALL THETA
+\\bfthree                   <char-0x1D7D1>               " 𝟑          : MATHEMATICAL BOLD DIGIT THREE
+\\bftw                      \\bftw                       "            : (Incomplete sequence)
+\\bftwo                     <char-0x1D7D0>               " 𝟐          : MATHEMATICAL BOLD DIGIT TWO
+\\bfu                       <char-0x1D42E>               " 𝐮          : MATHEMATICAL BOLD SMALL U
+\\bfu<Tab>                  <char-0x1D42E>               " 𝐮          : MATHEMATICAL BOLD SMALL U
+\\bfup                      \\bfup                       "            : (Incomplete sequence)
+\\bfupsilon                 <char-0x1D6D6>               " 𝛖          : MATHEMATICAL BOLD SMALL UPSILON
+\\bfv                       <char-0x1D42F>               " 𝐯          : MATHEMATICAL BOLD SMALL V
+\\bfv<Tab>                  <char-0x1D42F>               " 𝐯          : MATHEMATICAL BOLD SMALL V
+\\bfva                      \\bfva                       "            : (Incomplete sequence)
+\\bfvarTheta                <char-0x1D6B9>               " 𝚹          : MATHEMATICAL BOLD CAPITAL THETA SYMBOL
+\\bfvarepsilon              <char-0x1D6C6>               " 𝛆          : MATHEMATICAL BOLD SMALL EPSILON
+\\bfvarkappa                <char-0x1D6DE>               " 𝛞          : MATHEMATICAL BOLD KAPPA SYMBOL
+\\bfvarphi                  <char-0x1D6D7>               " 𝛗          : MATHEMATICAL BOLD SMALL PHI
+\\bfvarpi                   <char-0x1D6E1>               " 𝛡          : MATHEMATICAL BOLD PI SYMBOL
+\\bfvarrho                  <char-0x1D6E0>               " 𝛠          : MATHEMATICAL BOLD RHO SYMBOL
+\\bfvarsigma                <char-0x1D6D3>               " 𝛓          : MATHEMATICAL BOLD SMALL FINAL SIGMA
+\\bfvartheta                <char-0x1D6DD>               " 𝛝          : MATHEMATICAL BOLD THETA SYMBOL
+\\bfw                       <char-0x1D430>               " 𝐰          : MATHEMATICAL BOLD SMALL W
+\\bfx                       <char-0x1D431>               " 𝐱          : MATHEMATICAL BOLD SMALL X
+\\bfx<Tab>                  <char-0x1D431>               " 𝐱          : MATHEMATICAL BOLD SMALL X
+\\bfxi                      <char-0x1D6CF>               " 𝛏          : MATHEMATICAL BOLD SMALL XI
+\\bfy                       <char-0x1D432>               " 𝐲          : MATHEMATICAL BOLD SMALL Y
+\\bfz                       <char-0x1D433>               " 𝐳          : MATHEMATICAL BOLD SMALL Z
+\\bfz<Tab>                  <char-0x1D433>               " 𝐳          : MATHEMATICAL BOLD SMALL Z
+\\bfze                      \\bfze                       "            : (Incomplete sequence)
+\\bfzero                    <char-0x1D7CE>               " 𝟎          : MATHEMATICAL BOLD DIGIT ZERO
+\\bfzeta                    <char-0x1D6C7>               " 𝛇          : MATHEMATICAL BOLD SMALL ZETA
+\\biA                       <char-0x1D468>               " 𝑨          : MATHEMATICAL BOLD ITALIC CAPITAL A
+\\biA<Tab>                  <char-0x1D468>               " 𝑨          : MATHEMATICAL BOLD ITALIC CAPITAL A
+\\biAl                      \\biAl                       "            : (Incomplete sequence)
+\\biAlpha                   <char-0x1D71C>               " 𝜜          : MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
+\\biB                       <char-0x1D469>               " 𝑩          : MATHEMATICAL BOLD ITALIC CAPITAL B
+\\biB<Tab>                  <char-0x1D469>               " 𝑩          : MATHEMATICAL BOLD ITALIC CAPITAL B
+\\biBe                      \\biBe                       "            : (Incomplete sequence)
+\\biBeta                    <char-0x1D71D>               " 𝜝          : MATHEMATICAL BOLD ITALIC CAPITAL BETA
+\\biC                       <char-0x1D46A>               " 𝑪          : MATHEMATICAL BOLD ITALIC CAPITAL C
+\\biC<Tab>                  <char-0x1D46A>               " 𝑪          : MATHEMATICAL BOLD ITALIC CAPITAL C
+\\biCh                      \\biCh                       "            : (Incomplete sequence)
+\\biChi                     <char-0x1D732>               " 𝜲          : MATHEMATICAL BOLD ITALIC CAPITAL CHI
+\\biD                       <char-0x1D46B>               " 𝑫          : MATHEMATICAL BOLD ITALIC CAPITAL D
+\\biD<Tab>                  <char-0x1D46B>               " 𝑫          : MATHEMATICAL BOLD ITALIC CAPITAL D
+\\biDe                      \\biDe                       "            : (Incomplete sequence)
+\\biDelta                   <char-0x1D71F>               " 𝜟          : MATHEMATICAL BOLD ITALIC CAPITAL DELTA
+\\biE                       <char-0x1D46C>               " 𝑬          : MATHEMATICAL BOLD ITALIC CAPITAL E
+\\biE<Tab>                  <char-0x1D46C>               " 𝑬          : MATHEMATICAL BOLD ITALIC CAPITAL E
+\\biEp                      \\biEp                       "            : (Incomplete sequence)
+\\biEpsilon                 <char-0x1D720>               " 𝜠          : MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
+\\biEt                      \\biEt                       "            : (Incomplete sequence)
+\\biEta                     <char-0x1D722>               " 𝜢          : MATHEMATICAL BOLD ITALIC CAPITAL ETA
+\\biF                       <char-0x1D46D>               " 𝑭          : MATHEMATICAL BOLD ITALIC CAPITAL F
+\\biG                       <char-0x1D46E>               " 𝑮          : MATHEMATICAL BOLD ITALIC CAPITAL G
+\\biG<Tab>                  <char-0x1D46E>               " 𝑮          : MATHEMATICAL BOLD ITALIC CAPITAL G
+\\biGa                      \\biGa                       "            : (Incomplete sequence)
+\\biGamma                   <char-0x1D71E>               " 𝜞          : MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
+\\biH                       <char-0x1D46F>               " 𝑯          : MATHEMATICAL BOLD ITALIC CAPITAL H
+\\biI                       <char-0x1D470>               " 𝑰          : MATHEMATICAL BOLD ITALIC CAPITAL I
+\\biI<Tab>                  <char-0x1D470>               " 𝑰          : MATHEMATICAL BOLD ITALIC CAPITAL I
+\\biIo                      \\biIo                       "            : (Incomplete sequence)
+\\biIota                    <char-0x1D724>               " 𝜤          : MATHEMATICAL BOLD ITALIC CAPITAL IOTA
+\\biJ                       <char-0x1D471>               " 𝑱          : MATHEMATICAL BOLD ITALIC CAPITAL J
+\\biK                       <char-0x1D472>               " 𝑲          : MATHEMATICAL BOLD ITALIC CAPITAL K
+\\biK<Tab>                  <char-0x1D472>               " 𝑲          : MATHEMATICAL BOLD ITALIC CAPITAL K
+\\biKa                      \\biKa                       "            : (Incomplete sequence)
+\\biKappa                   <char-0x1D725>               " 𝜥          : MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
+\\biL                       <char-0x1D473>               " 𝑳          : MATHEMATICAL BOLD ITALIC CAPITAL L
+\\biL<Tab>                  <char-0x1D473>               " 𝑳          : MATHEMATICAL BOLD ITALIC CAPITAL L
+\\biLa                      \\biLa                       "            : (Incomplete sequence)
+\\biLambda                  <char-0x1D726>               " 𝜦          : MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
+\\biM                       <char-0x1D474>               " 𝑴          : MATHEMATICAL BOLD ITALIC CAPITAL M
+\\biM<Tab>                  <char-0x1D474>               " 𝑴          : MATHEMATICAL BOLD ITALIC CAPITAL M
+\\biMu                      <char-0x1D727>               " 𝜧          : MATHEMATICAL BOLD ITALIC CAPITAL MU
+\\biN                       <char-0x1D475>               " 𝑵          : MATHEMATICAL BOLD ITALIC CAPITAL N
+\\biN<Tab>                  <char-0x1D475>               " 𝑵          : MATHEMATICAL BOLD ITALIC CAPITAL N
+\\biNu                      <char-0x1D728>               " 𝜨          : MATHEMATICAL BOLD ITALIC CAPITAL NU
+\\biO                       <char-0x1D476>               " 𝑶          : MATHEMATICAL BOLD ITALIC CAPITAL O
+\\biO<Tab>                  <char-0x1D476>               " 𝑶          : MATHEMATICAL BOLD ITALIC CAPITAL O
+\\biOm                      \\biOm                       "            : (Incomplete sequence)
+\\biOmega                   <char-0x1D734>               " 𝜴          : MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+\\biOmicron                 <char-0x1D72A>               " 𝜪          : MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
+\\biP                       <char-0x1D477>               " 𝑷          : MATHEMATICAL BOLD ITALIC CAPITAL P
+\\biP<Tab>                  <char-0x1D477>               " 𝑷          : MATHEMATICAL BOLD ITALIC CAPITAL P
+\\biPh                      \\biPh                       "            : (Incomplete sequence)
+\\biPhi                     <char-0x1D731>               " 𝜱          : MATHEMATICAL BOLD ITALIC CAPITAL PHI
+\\biPi                      <char-0x1D72B>               " 𝜫          : MATHEMATICAL BOLD ITALIC CAPITAL PI
+\\biPs                      \\biPs                       "            : (Incomplete sequence)
+\\biPsi                     <char-0x1D733>               " 𝜳          : MATHEMATICAL BOLD ITALIC CAPITAL PSI
+\\biQ                       <char-0x1D478>               " 𝑸          : MATHEMATICAL BOLD ITALIC CAPITAL Q
+\\biR                       <char-0x1D479>               " 𝑹          : MATHEMATICAL BOLD ITALIC CAPITAL R
+\\biR<Tab>                  <char-0x1D479>               " 𝑹          : MATHEMATICAL BOLD ITALIC CAPITAL R
+\\biRh                      \\biRh                       "            : (Incomplete sequence)
+\\biRho                     <char-0x1D72C>               " 𝜬          : MATHEMATICAL BOLD ITALIC CAPITAL RHO
+\\biS                       <char-0x1D47A>               " 𝑺          : MATHEMATICAL BOLD ITALIC CAPITAL S
+\\biS<Tab>                  <char-0x1D47A>               " 𝑺          : MATHEMATICAL BOLD ITALIC CAPITAL S
+\\biSi                      \\biSi                       "            : (Incomplete sequence)
+\\biSigma                   <char-0x1D72E>               " 𝜮          : MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
+\\biT                       <char-0x1D47B>               " 𝑻          : MATHEMATICAL BOLD ITALIC CAPITAL T
+\\biT<Tab>                  <char-0x1D47B>               " 𝑻          : MATHEMATICAL BOLD ITALIC CAPITAL T
+\\biTa                      \\biTa                       "            : (Incomplete sequence)
+\\biTau                     <char-0x1D72F>               " 𝜯          : MATHEMATICAL BOLD ITALIC CAPITAL TAU
+\\biTh                      \\biTh                       "            : (Incomplete sequence)
+\\biTheta                   <char-0x1D723>               " 𝜣          : MATHEMATICAL BOLD ITALIC CAPITAL THETA
+\\biU                       <char-0x1D47C>               " 𝑼          : MATHEMATICAL BOLD ITALIC CAPITAL U
+\\biU<Tab>                  <char-0x1D47C>               " 𝑼          : MATHEMATICAL BOLD ITALIC CAPITAL U
+\\biUp                      \\biUp                       "            : (Incomplete sequence)
+\\biUpsilon                 <char-0x1D730>               " 𝜰          : MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
+\\biV                       <char-0x1D47D>               " 𝑽          : MATHEMATICAL BOLD ITALIC CAPITAL V
+\\biW                       <char-0x1D47E>               " 𝑾          : MATHEMATICAL BOLD ITALIC CAPITAL W
+\\biX                       <char-0x1D47F>               " 𝑿          : MATHEMATICAL BOLD ITALIC CAPITAL X
+\\biX<Tab>                  <char-0x1D47F>               " 𝑿          : MATHEMATICAL BOLD ITALIC CAPITAL X
+\\biXi                      <char-0x1D729>               " 𝜩          : MATHEMATICAL BOLD ITALIC CAPITAL XI
+\\biY                       <char-0x1D480>               " 𝒀          : MATHEMATICAL BOLD ITALIC CAPITAL Y
+\\biZ                       <char-0x1D481>               " 𝒁          : MATHEMATICAL BOLD ITALIC CAPITAL Z
+\\biZ<Tab>                  <char-0x1D481>               " 𝒁          : MATHEMATICAL BOLD ITALIC CAPITAL Z
+\\biZe                      \\biZe                       "            : (Incomplete sequence)
+\\biZeta                    <char-0x1D721>               " 𝜡          : MATHEMATICAL BOLD ITALIC CAPITAL ZETA
+\\bia                       <char-0x1D482>               " 𝒂          : MATHEMATICAL BOLD ITALIC SMALL A
+\\bia<Tab>                  <char-0x1D482>               " 𝒂          : MATHEMATICAL BOLD ITALIC SMALL A
+\\bial                      \\bial                       "            : (Incomplete sequence)
+\\bialpha                   <char-0x1D736>               " 𝜶          : MATHEMATICAL BOLD ITALIC SMALL ALPHA
+\\bib                       <char-0x1D483>               " 𝒃          : MATHEMATICAL BOLD ITALIC SMALL B
+\\bib<Tab>                  <char-0x1D483>               " 𝒃          : MATHEMATICAL BOLD ITALIC SMALL B
+\\bibe                      \\bibe                       "            : (Incomplete sequence)
+\\bibeta                    <char-0x1D737>               " 𝜷          : MATHEMATICAL BOLD ITALIC SMALL BETA
+\\bic                       <char-0x1D484>               " 𝒄          : MATHEMATICAL BOLD ITALIC SMALL C
+\\bic<Tab>                  <char-0x1D484>               " 𝒄          : MATHEMATICAL BOLD ITALIC SMALL C
+\\bich                      \\bich                       "            : (Incomplete sequence)
+\\bichi                     <char-0x1D74C>               " 𝝌          : MATHEMATICAL BOLD ITALIC SMALL CHI
+\\bid                       <char-0x1D485>               " 𝒅          : MATHEMATICAL BOLD ITALIC SMALL D
+\\bid<Tab>                  <char-0x1D485>               " 𝒅          : MATHEMATICAL BOLD ITALIC SMALL D
+\\bide                      \\bide                       "            : (Incomplete sequence)
+\\bidelta                   <char-0x1D739>               " 𝜹          : MATHEMATICAL BOLD ITALIC SMALL DELTA
+\\bie                       <char-0x1D486>               " 𝒆          : MATHEMATICAL BOLD ITALIC SMALL E
+\\bie<Tab>                  <char-0x1D486>               " 𝒆          : MATHEMATICAL BOLD ITALIC SMALL E
+\\biep                      \\biep                       "            : (Incomplete sequence)
+\\biepsilon                 <char-0x1D750>               " 𝝐          : MATHEMATICAL BOLD ITALIC EPSILON SYMBOL
+\\biet                      \\biet                       "            : (Incomplete sequence)
+\\bieta                     <char-0x1D73C>               " 𝜼          : MATHEMATICAL BOLD ITALIC SMALL ETA
+\\bif                       <char-0x1D487>               " 𝒇          : MATHEMATICAL BOLD ITALIC SMALL F
+\\big                       <char-0x1D488>               " 𝒈          : MATHEMATICAL BOLD ITALIC SMALL G
+\\big<Tab>                  <char-0x1D488>               " 𝒈          : MATHEMATICAL BOLD ITALIC SMALL G
+\\biga                      \\biga                       "            : (Incomplete sequence)
+\\bigamma                   <char-0x1D738>               " 𝜸          : MATHEMATICAL BOLD ITALIC SMALL GAMMA
+\\bigb                      \\bigb                       "            : (Incomplete sequence)
+\\bigblacktriangledown      <char-0x025BC>               " ▼          : BLACK DOWN-POINTING TRIANGLE / BLACK DOWN POINTING TRIANGLE
+\\bigblacktriangleup        <char-0x025B2>               " ▲          : BLACK UP-POINTING TRIANGLE / BLACK UP POINTING TRIANGLE
+\\bigbot                    <char-0x027D8>               " ⟘          : LARGE UP TACK
+\\bigc                      \\bigc                       "            : (Incomplete sequence)
+\\bigcap                    <char-0x022C2>               " ⋂          : N-ARY INTERSECTION
+\\bigcirc                   <char-0x025CB>               " ○          : WHITE CIRCLE
+\\bigcup                    <char-0x022C3>               " ⋃          : N-ARY UNION
+\\bigcup<Tab>               <char-0x022C3>               " ⋃          : N-ARY UNION
+\\bigcupd                   \\bigcupd                    "            : (Incomplete sequence)
+\\bigcupdot                 <char-0x02A03>               " ⨃          : N-ARY UNION OPERATOR WITH DOT
+\\bigo                      \\bigo                       "            : (Incomplete sequence)
+\\bigodot                   <char-0x02A00>               " ⨀          : N-ARY CIRCLED DOT OPERATOR
+\\bigoplus                  <char-0x02A01>               " ⨁          : N-ARY CIRCLED PLUS OPERATOR
+\\bigotimes                 <char-0x02A02>               " ⨂          : N-ARY CIRCLED TIMES OPERATOR
+\\bigs                      \\bigs                       "            : (Incomplete sequence)
+\\bigslopedvee              <char-0x02A57>               " ⩗          : SLOPING LARGE OR
+\\bigslopedwedge            <char-0x02A58>               " ⩘          : SLOPING LARGE AND
+\\bigsqcap                  <char-0x02A05>               " ⨅          : N-ARY SQUARE INTERSECTION OPERATOR
+\\bigsqcup                  <char-0x02A06>               " ⨆          : N-ARY SQUARE UNION OPERATOR
+\\bigstar                   <char-0x02605>               " ★          : BLACK STAR
+\\bigt                      \\bigt                       "            : (Incomplete sequence)
+\\bigtimes                  <char-0x02A09>               " ⨉          : N-ARY TIMES OPERATOR
+\\bigtop                    <char-0x027D9>               " ⟙          : LARGE DOWN TACK
+\\bigtriangledown           <char-0x025BD>               " ▽          : WHITE DOWN-POINTING TRIANGLE / WHITE DOWN POINTING TRIANGLE
+\\bigtriangleup             <char-0x025B3>               " △          : WHITE UP-POINTING TRIANGLE / WHITE UP POINTING TRIANGLE
+\\bigu                      \\bigu                       "            : (Incomplete sequence)
+\\biguplus                  <char-0x02A04>               " ⨄          : N-ARY UNION OPERATOR WITH PLUS
+\\bigv                      \\bigv                       "            : (Incomplete sequence)
+\\bigvee                    <char-0x022C1>               " ⋁          : N-ARY LOGICAL OR
+\\bigw                      \\bigw                       "            : (Incomplete sequence)
+\\bigwedge                  <char-0x022C0>               " ⋀          : N-ARY LOGICAL AND
+\\bigwhitestar              <char-0x02606>               " ☆          : WHITE STAR
+\\bih                       <char-0x1D489>               " 𝒉          : MATHEMATICAL BOLD ITALIC SMALL H
+\\bii                       <char-0x1D48A>               " 𝒊          : MATHEMATICAL BOLD ITALIC SMALL I
+\\bii<Tab>                  <char-0x1D48A>               " 𝒊          : MATHEMATICAL BOLD ITALIC SMALL I
+\\biio                      \\biio                       "            : (Incomplete sequence)
+\\biiota                    <char-0x1D73E>               " 𝜾          : MATHEMATICAL BOLD ITALIC SMALL IOTA
+\\bij                       <char-0x1D48B>               " 𝒋          : MATHEMATICAL BOLD ITALIC SMALL J
+\\bik                       <char-0x1D48C>               " 𝒌          : MATHEMATICAL BOLD ITALIC SMALL K
+\\bik<Tab>                  <char-0x1D48C>               " 𝒌          : MATHEMATICAL BOLD ITALIC SMALL K
+\\bika                      \\bika                       "            : (Incomplete sequence)
+\\bikappa                   <char-0x1D73F>               " 𝜿          : MATHEMATICAL BOLD ITALIC SMALL KAPPA
+\\bil                       <char-0x1D48D>               " 𝒍          : MATHEMATICAL BOLD ITALIC SMALL L
+\\bil<Tab>                  <char-0x1D48D>               " 𝒍          : MATHEMATICAL BOLD ITALIC SMALL L
+\\bila                      \\bila                       "            : (Incomplete sequence)
+\\bilambda                  <char-0x1D740>               " 𝝀          : MATHEMATICAL BOLD ITALIC SMALL LAMDA
+\\bim                       <char-0x1D48E>               " 𝒎          : MATHEMATICAL BOLD ITALIC SMALL M
+\\bim<Tab>                  <char-0x1D48E>               " 𝒎          : MATHEMATICAL BOLD ITALIC SMALL M
+\\bimu                      <char-0x1D741>               " 𝝁          : MATHEMATICAL BOLD ITALIC SMALL MU
+\\bin                       <char-0x1D48F>               " 𝒏          : MATHEMATICAL BOLD ITALIC SMALL N
+\\bin<Tab>                  <char-0x1D48F>               " 𝒏          : MATHEMATICAL BOLD ITALIC SMALL N
+\\bina                      \\bina                       "            : (Incomplete sequence)
+\\binabla                   <char-0x1D735>               " 𝜵          : MATHEMATICAL BOLD ITALIC NABLA
+\\binu                      <char-0x1D742>               " 𝝂          : MATHEMATICAL BOLD ITALIC SMALL NU
+\\bio                       <char-0x1D490>               " 𝒐          : MATHEMATICAL BOLD ITALIC SMALL O
+\\bio<Tab>                  <char-0x1D490>               " 𝒐          : MATHEMATICAL BOLD ITALIC SMALL O
+\\biom                      \\biom                       "            : (Incomplete sequence)
+\\biomega                   <char-0x1D74E>               " 𝝎          : MATHEMATICAL BOLD ITALIC SMALL OMEGA
+\\biomicron                 <char-0x1D744>               " 𝝄          : MATHEMATICAL BOLD ITALIC SMALL OMICRON
+\\bip                       <char-0x1D491>               " 𝒑          : MATHEMATICAL BOLD ITALIC SMALL P
+\\bip<Tab>                  <char-0x1D491>               " 𝒑          : MATHEMATICAL BOLD ITALIC SMALL P
+\\bipa                      \\bipa                       "            : (Incomplete sequence)
+\\bipartial                 <char-0x1D74F>               " 𝝏          : MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+\\biph                      \\biph                       "            : (Incomplete sequence)
+\\biphi                     <char-0x1D753>               " 𝝓          : MATHEMATICAL BOLD ITALIC PHI SYMBOL
+\\bipi                      <char-0x1D745>               " 𝝅          : MATHEMATICAL BOLD ITALIC SMALL PI
+\\bips                      \\bips                       "            : (Incomplete sequence)
+\\bipsi                     <char-0x1D74D>               " 𝝍          : MATHEMATICAL BOLD ITALIC SMALL PSI
+\\biq                       <char-0x1D492>               " 𝒒          : MATHEMATICAL BOLD ITALIC SMALL Q
+\\bir                       <char-0x1D493>               " 𝒓          : MATHEMATICAL BOLD ITALIC SMALL R
+\\bir<Tab>                  <char-0x1D493>               " 𝒓          : MATHEMATICAL BOLD ITALIC SMALL R
+\\birh                      \\birh                       "            : (Incomplete sequence)
+\\birho                     <char-0x1D746>               " 𝝆          : MATHEMATICAL BOLD ITALIC SMALL RHO
+\\bis                       <char-0x1D494>               " 𝒔          : MATHEMATICAL BOLD ITALIC SMALL S
+\\bis<Tab>                  <char-0x1D494>               " 𝒔          : MATHEMATICAL BOLD ITALIC SMALL S
+\\bisa                      \\bisa                       "            : (Incomplete sequence)
+\\bisansA                   <char-0x1D63C>               " 𝘼          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
+\\bisansA<Tab>              <char-0x1D63C>               " 𝘼          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
+\\bisansAl                  \\bisansAl                   "            : (Incomplete sequence)
+\\bisansAlpha               <char-0x1D790>               " 𝞐          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
+\\bisansB                   <char-0x1D63D>               " 𝘽          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
+\\bisansB<Tab>              <char-0x1D63D>               " 𝘽          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
+\\bisansBe                  \\bisansBe                   "            : (Incomplete sequence)
+\\bisansBeta                <char-0x1D791>               " 𝞑          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
+\\bisansC                   <char-0x1D63E>               " 𝘾          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
+\\bisansC<Tab>              <char-0x1D63E>               " 𝘾          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
+\\bisansCh                  \\bisansCh                   "            : (Incomplete sequence)
+\\bisansChi                 <char-0x1D7A6>               " 𝞦          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
+\\bisansD                   <char-0x1D63F>               " 𝘿          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
+\\bisansD<Tab>              <char-0x1D63F>               " 𝘿          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
+\\bisansDe                  \\bisansDe                   "            : (Incomplete sequence)
+\\bisansDelta               <char-0x1D793>               " 𝞓          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
+\\bisansE                   <char-0x1D640>               " 𝙀          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
+\\bisansE<Tab>              <char-0x1D640>               " 𝙀          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
+\\bisansEp                  \\bisansEp                   "            : (Incomplete sequence)
+\\bisansEpsilon             <char-0x1D794>               " 𝞔          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
+\\bisansEt                  \\bisansEt                   "            : (Incomplete sequence)
+\\bisansEta                 <char-0x1D796>               " 𝞖          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
+\\bisansF                   <char-0x1D641>               " 𝙁          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
+\\bisansG                   <char-0x1D642>               " 𝙂          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
+\\bisansG<Tab>              <char-0x1D642>               " 𝙂          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
+\\bisansGa                  \\bisansGa                   "            : (Incomplete sequence)
+\\bisansGamma               <char-0x1D792>               " 𝞒          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
+\\bisansH                   <char-0x1D643>               " 𝙃          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
+\\bisansI                   <char-0x1D644>               " 𝙄          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
+\\bisansI<Tab>              <char-0x1D644>               " 𝙄          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
+\\bisansIo                  \\bisansIo                   "            : (Incomplete sequence)
+\\bisansIota                <char-0x1D798>               " 𝞘          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
+\\bisansJ                   <char-0x1D645>               " 𝙅          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
+\\bisansK                   <char-0x1D646>               " 𝙆          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
+\\bisansK<Tab>              <char-0x1D646>               " 𝙆          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
+\\bisansKa                  \\bisansKa                   "            : (Incomplete sequence)
+\\bisansKappa               <char-0x1D799>               " 𝞙          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
+\\bisansL                   <char-0x1D647>               " 𝙇          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
+\\bisansL<Tab>              <char-0x1D647>               " 𝙇          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
+\\bisansLa                  \\bisansLa                   "            : (Incomplete sequence)
+\\bisansLambda              <char-0x1D79A>               " 𝞚          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
+\\bisansM                   <char-0x1D648>               " 𝙈          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
+\\bisansM<Tab>              <char-0x1D648>               " 𝙈          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
+\\bisansMu                  <char-0x1D79B>               " 𝞛          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
+\\bisansN                   <char-0x1D649>               " 𝙉          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
+\\bisansN<Tab>              <char-0x1D649>               " 𝙉          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
+\\bisansNu                  <char-0x1D79C>               " 𝞜          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
+\\bisansO                   <char-0x1D64A>               " 𝙊          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
+\\bisansO<Tab>              <char-0x1D64A>               " 𝙊          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
+\\bisansOm                  \\bisansOm                   "            : (Incomplete sequence)
+\\bisansOmega               <char-0x1D7A8>               " 𝞨          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+\\bisansOmicron             <char-0x1D79E>               " 𝞞          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
+\\bisansP                   <char-0x1D64B>               " 𝙋          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
+\\bisansP<Tab>              <char-0x1D64B>               " 𝙋          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
+\\bisansPh                  \\bisansPh                   "            : (Incomplete sequence)
+\\bisansPhi                 <char-0x1D7A5>               " 𝞥          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
+\\bisansPi                  <char-0x1D79F>               " 𝞟          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
+\\bisansPs                  \\bisansPs                   "            : (Incomplete sequence)
+\\bisansPsi                 <char-0x1D7A7>               " 𝞧          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
+\\bisansQ                   <char-0x1D64C>               " 𝙌          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
+\\bisansR                   <char-0x1D64D>               " 𝙍          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
+\\bisansR<Tab>              <char-0x1D64D>               " 𝙍          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
+\\bisansRh                  \\bisansRh                   "            : (Incomplete sequence)
+\\bisansRho                 <char-0x1D7A0>               " 𝞠          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
+\\bisansS                   <char-0x1D64E>               " 𝙎          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
+\\bisansS<Tab>              <char-0x1D64E>               " 𝙎          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
+\\bisansSi                  \\bisansSi                   "            : (Incomplete sequence)
+\\bisansSigma               <char-0x1D7A2>               " 𝞢          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
+\\bisansT                   <char-0x1D64F>               " 𝙏          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
+\\bisansT<Tab>              <char-0x1D64F>               " 𝙏          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
+\\bisansTa                  \\bisansTa                   "            : (Incomplete sequence)
+\\bisansTau                 <char-0x1D7A3>               " 𝞣          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
+\\bisansTh                  \\bisansTh                   "            : (Incomplete sequence)
+\\bisansTheta               <char-0x1D797>               " 𝞗          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
+\\bisansU                   <char-0x1D650>               " 𝙐          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
+\\bisansU<Tab>              <char-0x1D650>               " 𝙐          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
+\\bisansUp                  \\bisansUp                   "            : (Incomplete sequence)
+\\bisansUpsilon             <char-0x1D7A4>               " 𝞤          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
+\\bisansV                   <char-0x1D651>               " 𝙑          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
+\\bisansW                   <char-0x1D652>               " 𝙒          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
+\\bisansX                   <char-0x1D653>               " 𝙓          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
+\\bisansX<Tab>              <char-0x1D653>               " 𝙓          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
+\\bisansXi                  <char-0x1D79D>               " 𝞝          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
+\\bisansY                   <char-0x1D654>               " 𝙔          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
+\\bisansZ                   <char-0x1D655>               " 𝙕          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
+\\bisansZ<Tab>              <char-0x1D655>               " 𝙕          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
+\\bisansZe                  \\bisansZe                   "            : (Incomplete sequence)
+\\bisansZeta                <char-0x1D795>               " 𝞕          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
+\\bisansa                   <char-0x1D656>               " 𝙖          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A
+\\bisansa<Tab>              <char-0x1D656>               " 𝙖          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A
+\\bisansal                  \\bisansal                   "            : (Incomplete sequence)
+\\bisansalpha               <char-0x1D7AA>               " 𝞪          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA
+\\bisansb                   <char-0x1D657>               " 𝙗          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B
+\\bisansb<Tab>              <char-0x1D657>               " 𝙗          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B
+\\bisansbe                  \\bisansbe                   "            : (Incomplete sequence)
+\\bisansbeta                <char-0x1D7AB>               " 𝞫          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA
+\\bisansc                   <char-0x1D658>               " 𝙘          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C
+\\bisansc<Tab>              <char-0x1D658>               " 𝙘          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C
+\\bisansch                  \\bisansch                   "            : (Incomplete sequence)
+\\bisanschi                 <char-0x1D7C0>               " 𝟀          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI
+\\bisansd                   <char-0x1D659>               " 𝙙          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D
+\\bisansd<Tab>              <char-0x1D659>               " 𝙙          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D
+\\bisansde                  \\bisansde                   "            : (Incomplete sequence)
+\\bisansdelta               <char-0x1D7AD>               " 𝞭          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA
+\\bisanse                   <char-0x1D65A>               " 𝙚          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E
+\\bisanse<Tab>              <char-0x1D65A>               " 𝙚          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E
+\\bisansep                  \\bisansep                   "            : (Incomplete sequence)
+\\bisansepsilon             <char-0x1D7C4>               " 𝟄          : MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL
+\\bisanset                  \\bisanset                   "            : (Incomplete sequence)
+\\bisanseta                 <char-0x1D7B0>               " 𝞰          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA
+\\bisansf                   <char-0x1D65B>               " 𝙛          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F
+\\bisansg                   <char-0x1D65C>               " 𝙜          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G
+\\bisansg<Tab>              <char-0x1D65C>               " 𝙜          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G
+\\bisansga                  \\bisansga                   "            : (Incomplete sequence)
+\\bisansgamma               <char-0x1D7AC>               " 𝞬          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA
+\\bisansh                   <char-0x1D65D>               " 𝙝          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H
+\\bisansi                   <char-0x1D65E>               " 𝙞          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I
+\\bisansi<Tab>              <char-0x1D65E>               " 𝙞          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I
+\\bisansio                  \\bisansio                   "            : (Incomplete sequence)
+\\bisansiota                <char-0x1D7B2>               " 𝞲          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA
+\\bisansj                   <char-0x1D65F>               " 𝙟          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
+\\bisansk                   <char-0x1D660>               " 𝙠          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K
+\\bisansk<Tab>              <char-0x1D660>               " 𝙠          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K
+\\bisanska                  \\bisanska                   "            : (Incomplete sequence)
+\\bisanskappa               <char-0x1D7B3>               " 𝞳          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA
+\\bisansl                   <char-0x1D661>               " 𝙡          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L
+\\bisansl<Tab>              <char-0x1D661>               " 𝙡          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L
+\\bisansla                  \\bisansla                   "            : (Incomplete sequence)
+\\bisanslambda              <char-0x1D7B4>               " 𝞴          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA
+\\bisansm                   <char-0x1D662>               " 𝙢          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M
+\\bisansm<Tab>              <char-0x1D662>               " 𝙢          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M
+\\bisansmu                  <char-0x1D7B5>               " 𝞵          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU
+\\bisansn                   <char-0x1D663>               " 𝙣          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N
+\\bisansn<Tab>              <char-0x1D663>               " 𝙣          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N
+\\bisansna                  \\bisansna                   "            : (Incomplete sequence)
+\\bisansnabla               <char-0x1D7A9>               " 𝞩          : MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+\\bisansnu                  <char-0x1D7B6>               " 𝞶          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU
+\\bisanso                   <char-0x1D664>               " 𝙤          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O
+\\bisanso<Tab>              <char-0x1D664>               " 𝙤          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O
+\\bisansom                  \\bisansom                   "            : (Incomplete sequence)
+\\bisansomega               <char-0x1D7C2>               " 𝟂          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+\\bisansomicron             <char-0x1D7B8>               " 𝞸          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON
+\\bisansp                   <char-0x1D665>               " 𝙥          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P
+\\bisansp<Tab>              <char-0x1D665>               " 𝙥          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P
+\\bisanspa                  \\bisanspa                   "            : (Incomplete sequence)
+\\bisanspartial             <char-0x1D7C3>               " 𝟃          : MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+\\bisansph                  \\bisansph                   "            : (Incomplete sequence)
+\\bisansphi                 <char-0x1D7C7>               " 𝟇          : MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL
+\\bisanspi                  <char-0x1D7B9>               " 𝞹          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI
+\\bisansps                  \\bisansps                   "            : (Incomplete sequence)
+\\bisanspsi                 <char-0x1D7C1>               " 𝟁          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI
+\\bisansq                   <char-0x1D666>               " 𝙦          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q
+\\bisansr                   <char-0x1D667>               " 𝙧          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R
+\\bisansr<Tab>              <char-0x1D667>               " 𝙧          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R
+\\bisansrh                  \\bisansrh                   "            : (Incomplete sequence)
+\\bisansrho                 <char-0x1D7BA>               " 𝞺          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO
+\\bisanss                   <char-0x1D668>               " 𝙨          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S
+\\bisanss<Tab>              <char-0x1D668>               " 𝙨          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S
+\\bisanssi                  \\bisanssi                   "            : (Incomplete sequence)
+\\bisanssigma               <char-0x1D7BC>               " 𝞼          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA
+\\bisanst                   <char-0x1D669>               " 𝙩          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T
+\\bisanst<Tab>              <char-0x1D669>               " 𝙩          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T
+\\bisansta                  \\bisansta                   "            : (Incomplete sequence)
+\\bisanstau                 <char-0x1D7BD>               " 𝞽          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU
+\\bisansth                  \\bisansth                   "            : (Incomplete sequence)
+\\bisanstheta               <char-0x1D7B1>               " 𝞱          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA
+\\bisansu                   <char-0x1D66A>               " 𝙪          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U
+\\bisansu<Tab>              <char-0x1D66A>               " 𝙪          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U
+\\bisansup                  \\bisansup                   "            : (Incomplete sequence)
+\\bisansupsilon             <char-0x1D7BE>               " 𝞾          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON
+\\bisansv                   <char-0x1D66B>               " 𝙫          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V
+\\bisansv<Tab>              <char-0x1D66B>               " 𝙫          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V
+\\bisansva                  \\bisansva                   "            : (Incomplete sequence)
+\\bisansvarTheta            <char-0x1D7A1>               " 𝞡          : MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
+\\bisansvarepsilon          <char-0x1D7AE>               " 𝞮          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON
+\\bisansvarkappa            <char-0x1D7C6>               " 𝟆          : MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL
+\\bisansvarphi              <char-0x1D7BF>               " 𝞿          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI
+\\bisansvarpi               <char-0x1D7C9>               " 𝟉          : MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
+\\bisansvarrho              <char-0x1D7C8>               " 𝟈          : MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL
+\\bisansvarsigma            <char-0x1D7BB>               " 𝞻          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA
+\\bisansvartheta            <char-0x1D7C5>               " 𝟅          : MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL
+\\bisansw                   <char-0x1D66C>               " 𝙬          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W
+\\bisansx                   <char-0x1D66D>               " 𝙭          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X
+\\bisansx<Tab>              <char-0x1D66D>               " 𝙭          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X
+\\bisansxi                  <char-0x1D7B7>               " 𝞷          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI
+\\bisansy                   <char-0x1D66E>               " 𝙮          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y
+\\bisansz                   <char-0x1D66F>               " 𝙯          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
+\\bisansz<Tab>              <char-0x1D66F>               " 𝙯          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
+\\bisansze                  \\bisansze                   "            : (Incomplete sequence)
+\\bisanszeta                <char-0x1D7AF>               " 𝞯          : MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA
+\\bisi                      \\bisi                       "            : (Incomplete sequence)
+\\bisigma                   <char-0x1D748>               " 𝝈          : MATHEMATICAL BOLD ITALIC SMALL SIGMA
+\\bit                       <char-0x1D495>               " 𝒕          : MATHEMATICAL BOLD ITALIC SMALL T
+\\bit<Tab>                  <char-0x1D495>               " 𝒕          : MATHEMATICAL BOLD ITALIC SMALL T
+\\bita                      \\bita                       "            : (Incomplete sequence)
+\\bitau                     <char-0x1D749>               " 𝝉          : MATHEMATICAL BOLD ITALIC SMALL TAU
+\\bith                      \\bith                       "            : (Incomplete sequence)
+\\bitheta                   <char-0x1D73D>               " 𝜽          : MATHEMATICAL BOLD ITALIC SMALL THETA
+\\biu                       <char-0x1D496>               " 𝒖          : MATHEMATICAL BOLD ITALIC SMALL U
+\\biu<Tab>                  <char-0x1D496>               " 𝒖          : MATHEMATICAL BOLD ITALIC SMALL U
+\\biup                      \\biup                       "            : (Incomplete sequence)
+\\biupsilon                 <char-0x1D74A>               " 𝝊          : MATHEMATICAL BOLD ITALIC SMALL UPSILON
+\\biv                       <char-0x1D497>               " 𝒗          : MATHEMATICAL BOLD ITALIC SMALL V
+\\biv<Tab>                  <char-0x1D497>               " 𝒗          : MATHEMATICAL BOLD ITALIC SMALL V
+\\biva                      \\biva                       "            : (Incomplete sequence)
+\\bivarTheta                <char-0x1D72D>               " 𝜭          : MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
+\\bivarepsilon              <char-0x1D73A>               " 𝜺          : MATHEMATICAL BOLD ITALIC SMALL EPSILON
+\\bivarkappa                <char-0x1D752>               " 𝝒          : MATHEMATICAL BOLD ITALIC KAPPA SYMBOL
+\\bivarphi                  <char-0x1D74B>               " 𝝋          : MATHEMATICAL BOLD ITALIC SMALL PHI
+\\bivarpi                   <char-0x1D755>               " 𝝕          : MATHEMATICAL BOLD ITALIC PI SYMBOL
+\\bivarrho                  <char-0x1D754>               " 𝝔          : MATHEMATICAL BOLD ITALIC RHO SYMBOL
+\\bivarsigma                <char-0x1D747>               " 𝝇          : MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA
+\\bivartheta                <char-0x1D751>               " 𝝑          : MATHEMATICAL BOLD ITALIC THETA SYMBOL
+\\biw                       <char-0x1D498>               " 𝒘          : MATHEMATICAL BOLD ITALIC SMALL W
+\\bix                       <char-0x1D499>               " 𝒙          : MATHEMATICAL BOLD ITALIC SMALL X
+\\bix<Tab>                  <char-0x1D499>               " 𝒙          : MATHEMATICAL BOLD ITALIC SMALL X
+\\bixi                      <char-0x1D743>               " 𝝃          : MATHEMATICAL BOLD ITALIC SMALL XI
+\\biy                       <char-0x1D49A>               " 𝒚          : MATHEMATICAL BOLD ITALIC SMALL Y
+\\biz                       <char-0x1D49B>               " 𝒛          : MATHEMATICAL BOLD ITALIC SMALL Z
+\\biz<Tab>                  <char-0x1D49B>               " 𝒛          : MATHEMATICAL BOLD ITALIC SMALL Z
+\\bize                      \\bize                       "            : (Incomplete sequence)
+\\bizeta                    <char-0x1D73B>               " 𝜻          : MATHEMATICAL BOLD ITALIC SMALL ZETA
+\\bkarow                    <char-0x0290D>               " ⤍          : RIGHTWARDS DOUBLE DASH ARROW
+\\blackcircledrightdot      <char-0x02688>               " ⚈          : BLACK CIRCLE WITH WHITE DOT RIGHT
+\\blackcircledtwodots       <char-0x02689>               " ⚉          : BLACK CIRCLE WITH TWO WHITE DOTS
+\\blackcircleulquadwhite    <char-0x025D5>               " ◕          : CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK
+\\blackinwhitediamond       <char-0x025C8>               " ◈          : WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
+\\blackinwhitesquare        <char-0x025A3>               " ▣          : WHITE SQUARE CONTAINING BLACK SMALL SQUARE
+\\blacklefthalfcircle       <char-0x025D6>               " ◖          : LEFT HALF BLACK CIRCLE
+\\blacklozenge              <char-0x029EB>               " ⧫          : BLACK LOZENGE
+\\blackpointerleft          <char-0x025C4>               " ◄          : BLACK LEFT-POINTING POINTER / BLACK LEFT POINTING POINTER
+\\blackpointerright         <char-0x025BA>               " ►          : BLACK RIGHT-POINTING POINTER / BLACK RIGHT POINTING POINTER
+\\blackrighthalfcircle      <char-0x025D7>               " ◗          : RIGHT HALF BLACK CIRCLE
+\\blacksmiley               <char-0x0263B>               " ☻          : BLACK SMILING FACE
+\\blacksquare               <char-0x025A0>               " ■          : BLACK SQUARE
+\\blacktriangle             <char-0x025B4>               " ▴          : BLACK UP-POINTING SMALL TRIANGLE / BLACK UP POINTING SMALL TRIANGLE
+\\blacktriangle<Tab>        <char-0x025B4>               " ▴          : BLACK UP-POINTING SMALL TRIANGLE / BLACK UP POINTING SMALL TRIANGLE
+\\blacktriangled            \\blacktriangled             "            : (Incomplete sequence)
+\\blacktriangledown         <char-0x025BE>               " ▾          : BLACK DOWN-POINTING SMALL TRIANGLE / BLACK DOWN POINTING SMALL TRIANGLE
+\\blacktrianglel            \\blacktrianglel             "            : (Incomplete sequence)
+\\blacktriangleleft         <char-0x025C0>               " ◀          : BLACK LEFT-POINTING TRIANGLE / BLACK LEFT POINTING TRIANGLE
+\\blacktriangler            \\blacktriangler             "            : (Incomplete sequence)
+\\blacktriangleright        <char-0x025B6>               " ▶          : BLACK RIGHT-POINTING TRIANGLE / BLACK RIGHT POINTING TRIANGLE
+\\blanksymbol               <char-0x02422>               " ␢          : BLANK SYMBOL / BLANK
+\\blkhorzoval               <char-0x02B2C>               " ⬬          : BLACK HORIZONTAL ELLIPSE
+\\blkvertoval               <char-0x02B2E>               " ⬮          : BLACK VERTICAL ELLIPSE
+\\blockfull                 <char-0x02588>               " █          : FULL BLOCK
+\\blockhalfshaded           <char-0x02592>               " ▒          : MEDIUM SHADE
+\\blocklefthalf             <char-0x0258C>               " ▌          : LEFT HALF BLOCK
+\\blocklowhalf              <char-0x02584>               " ▄          : LOWER HALF BLOCK
+\\blockqtrshaded            <char-0x02591>               " ░          : LIGHT SHADE
+\\blockrighthalf            <char-0x02590>               " ▐          : RIGHT HALF BLOCK
+\\blockthreeqtrshaded       <char-0x02593>               " ▓          : DARK SHADE
+\\blockuphalf               <char-0x02580>               " ▀          : UPPER HALF BLOCK
+\\bot                       <char-0x022A5>               " ⊥          : UP TACK
+\\bot<Tab>                  <char-0x022A5>               " ⊥          : UP TACK
+\\bots                      \\bots                       "            : (Incomplete sequence)
+\\botsemicircle             <char-0x025E1>               " ◡          : LOWER HALF CIRCLE
+\\bowtie                    <char-0x022C8>               " ⋈          : BOWTIE
+\\boxast                    <char-0x029C6>               " ⧆          : SQUARED ASTERISK
+\\boxbar                    <char-0x025EB>               " ◫          : WHITE SQUARE WITH VERTICAL BISECTING LINE
+\\boxbslash                 <char-0x029C5>               " ⧅          : SQUARED FALLING DIAGONAL SLASH
+\\boxcircle                 <char-0x029C7>               " ⧇          : SQUARED SMALL CIRCLE
+\\boxdiag                   <char-0x029C4>               " ⧄          : SQUARED RISING DIAGONAL SLASH
+\\boxdot                    <char-0x022A1>               " ⊡          : SQUARED DOT OPERATOR
+\\boxminus                  <char-0x0229F>               " ⊟          : SQUARED MINUS
+\\boxplus                   <char-0x0229E>               " ⊞          : SQUARED PLUS
+\\boxquestion               <char-0x02370>               " ⍰          : APL FUNCTIONAL SYMBOL QUAD QUESTION
+\\boxtimes                  <char-0x022A0>               " ⊠          : SQUARED TIMES
+\\boxupcaret                <char-0x02353>               " ⍓          : APL FUNCTIONAL SYMBOL QUAD UP CARET
+\\breve                     <char-0x00306>               " ◌̆         : COMBINING BREVE / NON-SPACING BREVE
+\\brokenbar                 <char-0x000A6>               " ¦          : BROKEN BAR / BROKEN VERTICAL BAR
+\\bsansA                    <char-0x1D5D4>               " 𝗔          : MATHEMATICAL SANS-SERIF BOLD CAPITAL A
+\\bsansA<Tab>               <char-0x1D5D4>               " 𝗔          : MATHEMATICAL SANS-SERIF BOLD CAPITAL A
+\\bsansAl                   \\bsansAl                    "            : (Incomplete sequence)
+\\bsansAlpha                <char-0x1D756>               " 𝝖          : MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
+\\bsansB                    <char-0x1D5D5>               " 𝗕          : MATHEMATICAL SANS-SERIF BOLD CAPITAL B
+\\bsansB<Tab>               <char-0x1D5D5>               " 𝗕          : MATHEMATICAL SANS-SERIF BOLD CAPITAL B
+\\bsansBe                   \\bsansBe                    "            : (Incomplete sequence)
+\\bsansBeta                 <char-0x1D757>               " 𝝗          : MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
+\\bsansC                    <char-0x1D5D6>               " 𝗖          : MATHEMATICAL SANS-SERIF BOLD CAPITAL C
+\\bsansC<Tab>               <char-0x1D5D6>               " 𝗖          : MATHEMATICAL SANS-SERIF BOLD CAPITAL C
+\\bsansCh                   \\bsansCh                    "            : (Incomplete sequence)
+\\bsansChi                  <char-0x1D76C>               " 𝝬          : MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
+\\bsansD                    <char-0x1D5D7>               " 𝗗          : MATHEMATICAL SANS-SERIF BOLD CAPITAL D
+\\bsansD<Tab>               <char-0x1D5D7>               " 𝗗          : MATHEMATICAL SANS-SERIF BOLD CAPITAL D
+\\bsansDe                   \\bsansDe                    "            : (Incomplete sequence)
+\\bsansDelta                <char-0x1D759>               " 𝝙          : MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
+\\bsansE                    <char-0x1D5D8>               " 𝗘          : MATHEMATICAL SANS-SERIF BOLD CAPITAL E
+\\bsansE<Tab>               <char-0x1D5D8>               " 𝗘          : MATHEMATICAL SANS-SERIF BOLD CAPITAL E
+\\bsansEp                   \\bsansEp                    "            : (Incomplete sequence)
+\\bsansEpsilon              <char-0x1D75A>               " 𝝚          : MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
+\\bsansEt                   \\bsansEt                    "            : (Incomplete sequence)
+\\bsansEta                  <char-0x1D75C>               " 𝝜          : MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
+\\bsansF                    <char-0x1D5D9>               " 𝗙          : MATHEMATICAL SANS-SERIF BOLD CAPITAL F
+\\bsansG                    <char-0x1D5DA>               " 𝗚          : MATHEMATICAL SANS-SERIF BOLD CAPITAL G
+\\bsansG<Tab>               <char-0x1D5DA>               " 𝗚          : MATHEMATICAL SANS-SERIF BOLD CAPITAL G
+\\bsansGa                   \\bsansGa                    "            : (Incomplete sequence)
+\\bsansGamma                <char-0x1D758>               " 𝝘          : MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
+\\bsansH                    <char-0x1D5DB>               " 𝗛          : MATHEMATICAL SANS-SERIF BOLD CAPITAL H
+\\bsansI                    <char-0x1D5DC>               " 𝗜          : MATHEMATICAL SANS-SERIF BOLD CAPITAL I
+\\bsansI<Tab>               <char-0x1D5DC>               " 𝗜          : MATHEMATICAL SANS-SERIF BOLD CAPITAL I
+\\bsansIo                   \\bsansIo                    "            : (Incomplete sequence)
+\\bsansIota                 <char-0x1D75E>               " 𝝞          : MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
+\\bsansJ                    <char-0x1D5DD>               " 𝗝          : MATHEMATICAL SANS-SERIF BOLD CAPITAL J
+\\bsansK                    <char-0x1D5DE>               " 𝗞          : MATHEMATICAL SANS-SERIF BOLD CAPITAL K
+\\bsansK<Tab>               <char-0x1D5DE>               " 𝗞          : MATHEMATICAL SANS-SERIF BOLD CAPITAL K
+\\bsansKa                   \\bsansKa                    "            : (Incomplete sequence)
+\\bsansKappa                <char-0x1D75F>               " 𝝟          : MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
+\\bsansL                    <char-0x1D5DF>               " 𝗟          : MATHEMATICAL SANS-SERIF BOLD CAPITAL L
+\\bsansL<Tab>               <char-0x1D5DF>               " 𝗟          : MATHEMATICAL SANS-SERIF BOLD CAPITAL L
+\\bsansLa                   \\bsansLa                    "            : (Incomplete sequence)
+\\bsansLambda               <char-0x1D760>               " 𝝠          : MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
+\\bsansM                    <char-0x1D5E0>               " 𝗠          : MATHEMATICAL SANS-SERIF BOLD CAPITAL M
+\\bsansM<Tab>               <char-0x1D5E0>               " 𝗠          : MATHEMATICAL SANS-SERIF BOLD CAPITAL M
+\\bsansMu                   <char-0x1D761>               " 𝝡          : MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
+\\bsansN                    <char-0x1D5E1>               " 𝗡          : MATHEMATICAL SANS-SERIF BOLD CAPITAL N
+\\bsansN<Tab>               <char-0x1D5E1>               " 𝗡          : MATHEMATICAL SANS-SERIF BOLD CAPITAL N
+\\bsansNu                   <char-0x1D762>               " 𝝢          : MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
+\\bsansO                    <char-0x1D5E2>               " 𝗢          : MATHEMATICAL SANS-SERIF BOLD CAPITAL O
+\\bsansO<Tab>               <char-0x1D5E2>               " 𝗢          : MATHEMATICAL SANS-SERIF BOLD CAPITAL O
+\\bsansOm                   \\bsansOm                    "            : (Incomplete sequence)
+\\bsansOmega                <char-0x1D76E>               " 𝝮          : MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+\\bsansOmicron              <char-0x1D764>               " 𝝤          : MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
+\\bsansP                    <char-0x1D5E3>               " 𝗣          : MATHEMATICAL SANS-SERIF BOLD CAPITAL P
+\\bsansP<Tab>               <char-0x1D5E3>               " 𝗣          : MATHEMATICAL SANS-SERIF BOLD CAPITAL P
+\\bsansPh                   \\bsansPh                    "            : (Incomplete sequence)
+\\bsansPhi                  <char-0x1D76B>               " 𝝫          : MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
+\\bsansPi                   <char-0x1D765>               " 𝝥          : MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
+\\bsansPs                   \\bsansPs                    "            : (Incomplete sequence)
+\\bsansPsi                  <char-0x1D76D>               " 𝝭          : MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
+\\bsansQ                    <char-0x1D5E4>               " 𝗤          : MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
+\\bsansR                    <char-0x1D5E5>               " 𝗥          : MATHEMATICAL SANS-SERIF BOLD CAPITAL R
+\\bsansR<Tab>               <char-0x1D5E5>               " 𝗥          : MATHEMATICAL SANS-SERIF BOLD CAPITAL R
+\\bsansRh                   \\bsansRh                    "            : (Incomplete sequence)
+\\bsansRho                  <char-0x1D766>               " 𝝦          : MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
+\\bsansS                    <char-0x1D5E6>               " 𝗦          : MATHEMATICAL SANS-SERIF BOLD CAPITAL S
+\\bsansS<Tab>               <char-0x1D5E6>               " 𝗦          : MATHEMATICAL SANS-SERIF BOLD CAPITAL S
+\\bsansSi                   \\bsansSi                    "            : (Incomplete sequence)
+\\bsansSigma                <char-0x1D768>               " 𝝨          : MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
+\\bsansT                    <char-0x1D5E7>               " 𝗧          : MATHEMATICAL SANS-SERIF BOLD CAPITAL T
+\\bsansT<Tab>               <char-0x1D5E7>               " 𝗧          : MATHEMATICAL SANS-SERIF BOLD CAPITAL T
+\\bsansTa                   \\bsansTa                    "            : (Incomplete sequence)
+\\bsansTau                  <char-0x1D769>               " 𝝩          : MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
+\\bsansTh                   \\bsansTh                    "            : (Incomplete sequence)
+\\bsansTheta                <char-0x1D75D>               " 𝝝          : MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
+\\bsansU                    <char-0x1D5E8>               " 𝗨          : MATHEMATICAL SANS-SERIF BOLD CAPITAL U
+\\bsansU<Tab>               <char-0x1D5E8>               " 𝗨          : MATHEMATICAL SANS-SERIF BOLD CAPITAL U
+\\bsansUp                   \\bsansUp                    "            : (Incomplete sequence)
+\\bsansUpsilon              <char-0x1D76A>               " 𝝪          : MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
+\\bsansV                    <char-0x1D5E9>               " 𝗩          : MATHEMATICAL SANS-SERIF BOLD CAPITAL V
+\\bsansW                    <char-0x1D5EA>               " 𝗪          : MATHEMATICAL SANS-SERIF BOLD CAPITAL W
+\\bsansX                    <char-0x1D5EB>               " 𝗫          : MATHEMATICAL SANS-SERIF BOLD CAPITAL X
+\\bsansX<Tab>               <char-0x1D5EB>               " 𝗫          : MATHEMATICAL SANS-SERIF BOLD CAPITAL X
+\\bsansXi                   <char-0x1D763>               " 𝝣          : MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
+\\bsansY                    <char-0x1D5EC>               " 𝗬          : MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
+\\bsansZ                    <char-0x1D5ED>               " 𝗭          : MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
+\\bsansZ<Tab>               <char-0x1D5ED>               " 𝗭          : MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
+\\bsansZe                   \\bsansZe                    "            : (Incomplete sequence)
+\\bsansZeta                 <char-0x1D75B>               " 𝝛          : MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
+\\bsansa                    <char-0x1D5EE>               " 𝗮          : MATHEMATICAL SANS-SERIF BOLD SMALL A
+\\bsansa<Tab>               <char-0x1D5EE>               " 𝗮          : MATHEMATICAL SANS-SERIF BOLD SMALL A
+\\bsansal                   \\bsansal                    "            : (Incomplete sequence)
+\\bsansalpha                <char-0x1D770>               " 𝝰          : MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA
+\\bsansb                    <char-0x1D5EF>               " 𝗯          : MATHEMATICAL SANS-SERIF BOLD SMALL B
+\\bsansb<Tab>               <char-0x1D5EF>               " 𝗯          : MATHEMATICAL SANS-SERIF BOLD SMALL B
+\\bsansbe                   \\bsansbe                    "            : (Incomplete sequence)
+\\bsansbeta                 <char-0x1D771>               " 𝝱          : MATHEMATICAL SANS-SERIF BOLD SMALL BETA
+\\bsansc                    <char-0x1D5F0>               " 𝗰          : MATHEMATICAL SANS-SERIF BOLD SMALL C
+\\bsansc<Tab>               <char-0x1D5F0>               " 𝗰          : MATHEMATICAL SANS-SERIF BOLD SMALL C
+\\bsansch                   \\bsansch                    "            : (Incomplete sequence)
+\\bsanschi                  <char-0x1D786>               " 𝞆          : MATHEMATICAL SANS-SERIF BOLD SMALL CHI
+\\bsansd                    <char-0x1D5F1>               " 𝗱          : MATHEMATICAL SANS-SERIF BOLD SMALL D
+\\bsansd<Tab>               <char-0x1D5F1>               " 𝗱          : MATHEMATICAL SANS-SERIF BOLD SMALL D
+\\bsansde                   \\bsansde                    "            : (Incomplete sequence)
+\\bsansdelta                <char-0x1D773>               " 𝝳          : MATHEMATICAL SANS-SERIF BOLD SMALL DELTA
+\\bsanse                    <char-0x1D5F2>               " 𝗲          : MATHEMATICAL SANS-SERIF BOLD SMALL E
+\\bsanse<Tab>               <char-0x1D5F2>               " 𝗲          : MATHEMATICAL SANS-SERIF BOLD SMALL E
+\\bsansei                   \\bsansei                    "            : (Incomplete sequence)
+\\bsanseight                <char-0x1D7F4>               " 𝟴          : MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT
+\\bsansep                   \\bsansep                    "            : (Incomplete sequence)
+\\bsansepsilon              <char-0x1D78A>               " 𝞊          : MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL
+\\bsanset                   \\bsanset                    "            : (Incomplete sequence)
+\\bsanseta                  <char-0x1D776>               " 𝝶          : MATHEMATICAL SANS-SERIF BOLD SMALL ETA
+\\bsansf                    <char-0x1D5F3>               " 𝗳          : MATHEMATICAL SANS-SERIF BOLD SMALL F
+\\bsansf<Tab>               <char-0x1D5F3>               " 𝗳          : MATHEMATICAL SANS-SERIF BOLD SMALL F
+\\bsansfi                   \\bsansfi                    "            : (Incomplete sequence)
+\\bsansfive                 <char-0x1D7F1>               " 𝟱          : MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE
+\\bsansfo                   \\bsansfo                    "            : (Incomplete sequence)
+\\bsansfour                 <char-0x1D7F0>               " 𝟰          : MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR
+\\bsansg                    <char-0x1D5F4>               " 𝗴          : MATHEMATICAL SANS-SERIF BOLD SMALL G
+\\bsansg<Tab>               <char-0x1D5F4>               " 𝗴          : MATHEMATICAL SANS-SERIF BOLD SMALL G
+\\bsansga                   \\bsansga                    "            : (Incomplete sequence)
+\\bsansgamma                <char-0x1D772>               " 𝝲          : MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA
+\\bsansh                    <char-0x1D5F5>               " 𝗵          : MATHEMATICAL SANS-SERIF BOLD SMALL H
+\\bsansi                    <char-0x1D5F6>               " 𝗶          : MATHEMATICAL SANS-SERIF BOLD SMALL I
+\\bsansi<Tab>               <char-0x1D5F6>               " 𝗶          : MATHEMATICAL SANS-SERIF BOLD SMALL I
+\\bsansio                   \\bsansio                    "            : (Incomplete sequence)
+\\bsansiota                 <char-0x1D778>               " 𝝸          : MATHEMATICAL SANS-SERIF BOLD SMALL IOTA
+\\bsansj                    <char-0x1D5F7>               " 𝗷          : MATHEMATICAL SANS-SERIF BOLD SMALL J
+\\bsansk                    <char-0x1D5F8>               " 𝗸          : MATHEMATICAL SANS-SERIF BOLD SMALL K
+\\bsansk<Tab>               <char-0x1D5F8>               " 𝗸          : MATHEMATICAL SANS-SERIF BOLD SMALL K
+\\bsanska                   \\bsanska                    "            : (Incomplete sequence)
+\\bsanskappa                <char-0x1D779>               " 𝝹          : MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA
+\\bsansl                    <char-0x1D5F9>               " 𝗹          : MATHEMATICAL SANS-SERIF BOLD SMALL L
+\\bsansl<Tab>               <char-0x1D5F9>               " 𝗹          : MATHEMATICAL SANS-SERIF BOLD SMALL L
+\\bsansla                   \\bsansla                    "            : (Incomplete sequence)
+\\bsanslambda               <char-0x1D77A>               " 𝝺          : MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA
+\\bsansm                    <char-0x1D5FA>               " 𝗺          : MATHEMATICAL SANS-SERIF BOLD SMALL M
+\\bsansm<Tab>               <char-0x1D5FA>               " 𝗺          : MATHEMATICAL SANS-SERIF BOLD SMALL M
+\\bsansmu                   <char-0x1D77B>               " 𝝻          : MATHEMATICAL SANS-SERIF BOLD SMALL MU
+\\bsansn                    <char-0x1D5FB>               " 𝗻          : MATHEMATICAL SANS-SERIF BOLD SMALL N
+\\bsansn<Tab>               <char-0x1D5FB>               " 𝗻          : MATHEMATICAL SANS-SERIF BOLD SMALL N
+\\bsansna                   \\bsansna                    "            : (Incomplete sequence)
+\\bsansnabla                <char-0x1D76F>               " 𝝯          : MATHEMATICAL SANS-SERIF BOLD NABLA
+\\bsansni                   \\bsansni                    "            : (Incomplete sequence)
+\\bsansnine                 <char-0x1D7F5>               " 𝟵          : MATHEMATICAL SANS-SERIF BOLD DIGIT NINE
+\\bsansnu                   <char-0x1D77C>               " 𝝼          : MATHEMATICAL SANS-SERIF BOLD SMALL NU
+\\bsanso                    <char-0x1D5FC>               " 𝗼          : MATHEMATICAL SANS-SERIF BOLD SMALL O
+\\bsanso<Tab>               <char-0x1D5FC>               " 𝗼          : MATHEMATICAL SANS-SERIF BOLD SMALL O
+\\bsansom                   \\bsansom                    "            : (Incomplete sequence)
+\\bsansomega                <char-0x1D788>               " 𝞈          : MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+\\bsansomicron              <char-0x1D77E>               " 𝝾          : MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON
+\\bsanson                   \\bsanson                    "            : (Incomplete sequence)
+\\bsansone                  <char-0x1D7ED>               " 𝟭          : MATHEMATICAL SANS-SERIF BOLD DIGIT ONE
+\\bsansp                    <char-0x1D5FD>               " 𝗽          : MATHEMATICAL SANS-SERIF BOLD SMALL P
+\\bsansp<Tab>               <char-0x1D5FD>               " 𝗽          : MATHEMATICAL SANS-SERIF BOLD SMALL P
+\\bsanspa                   \\bsanspa                    "            : (Incomplete sequence)
+\\bsanspartial              <char-0x1D789>               " 𝞉          : MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+\\bsansph                   \\bsansph                    "            : (Incomplete sequence)
+\\bsansphi                  <char-0x1D78D>               " 𝞍          : MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL
+\\bsanspi                   <char-0x1D77F>               " 𝝿          : MATHEMATICAL SANS-SERIF BOLD SMALL PI
+\\bsansps                   \\bsansps                    "            : (Incomplete sequence)
+\\bsanspsi                  <char-0x1D787>               " 𝞇          : MATHEMATICAL SANS-SERIF BOLD SMALL PSI
+\\bsansq                    <char-0x1D5FE>               " 𝗾          : MATHEMATICAL SANS-SERIF BOLD SMALL Q
+\\bsansr                    <char-0x1D5FF>               " 𝗿          : MATHEMATICAL SANS-SERIF BOLD SMALL R
+\\bsansr<Tab>               <char-0x1D5FF>               " 𝗿          : MATHEMATICAL SANS-SERIF BOLD SMALL R
+\\bsansrh                   \\bsansrh                    "            : (Incomplete sequence)
+\\bsansrho                  <char-0x1D780>               " 𝞀          : MATHEMATICAL SANS-SERIF BOLD SMALL RHO
+\\bsanss                    <char-0x1D600>               " 𝘀          : MATHEMATICAL SANS-SERIF BOLD SMALL S
+\\bsanss<Tab>               <char-0x1D600>               " 𝘀          : MATHEMATICAL SANS-SERIF BOLD SMALL S
+\\bsansse                   \\bsansse                    "            : (Incomplete sequence)
+\\bsansseven                <char-0x1D7F3>               " 𝟳          : MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN
+\\bsanssi                   \\bsanssi                    "            : (Incomplete sequence)
+\\bsanssigma                <char-0x1D782>               " 𝞂          : MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA
+\\bsanssix                  <char-0x1D7F2>               " 𝟲          : MATHEMATICAL SANS-SERIF BOLD DIGIT SIX
+\\bsanst                    <char-0x1D601>               " 𝘁          : MATHEMATICAL SANS-SERIF BOLD SMALL T
+\\bsanst<Tab>               <char-0x1D601>               " 𝘁          : MATHEMATICAL SANS-SERIF BOLD SMALL T
+\\bsansta                   \\bsansta                    "            : (Incomplete sequence)
+\\bsanstau                  <char-0x1D783>               " 𝞃          : MATHEMATICAL SANS-SERIF BOLD SMALL TAU
+\\bsansth                   \\bsansth                    "            : (Incomplete sequence)
+\\bsanstheta                <char-0x1D777>               " 𝝷          : MATHEMATICAL SANS-SERIF BOLD SMALL THETA
+\\bsansthree                <char-0x1D7EF>               " 𝟯          : MATHEMATICAL SANS-SERIF BOLD DIGIT THREE
+\\bsanstw                   \\bsanstw                    "            : (Incomplete sequence)
+\\bsanstwo                  <char-0x1D7EE>               " 𝟮          : MATHEMATICAL SANS-SERIF BOLD DIGIT TWO
+\\bsansu                    <char-0x1D602>               " 𝘂          : MATHEMATICAL SANS-SERIF BOLD SMALL U
+\\bsansu<Tab>               <char-0x1D602>               " 𝘂          : MATHEMATICAL SANS-SERIF BOLD SMALL U
+\\bsansup                   \\bsansup                    "            : (Incomplete sequence)
+\\bsansupsilon              <char-0x1D784>               " 𝞄          : MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON
+\\bsansv                    <char-0x1D603>               " 𝘃          : MATHEMATICAL SANS-SERIF BOLD SMALL V
+\\bsansv<Tab>               <char-0x1D603>               " 𝘃          : MATHEMATICAL SANS-SERIF BOLD SMALL V
+\\bsansva                   \\bsansva                    "            : (Incomplete sequence)
+\\bsansvarTheta             <char-0x1D767>               " 𝝧          : MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
+\\bsansvarepsilon           <char-0x1D774>               " 𝝴          : MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON
+\\bsansvarkappa             <char-0x1D78C>               " 𝞌          : MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL
+\\bsansvarphi               <char-0x1D785>               " 𝞅          : MATHEMATICAL SANS-SERIF BOLD SMALL PHI
+\\bsansvarpi                <char-0x1D78F>               " 𝞏          : MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
+\\bsansvarrho               <char-0x1D78E>               " 𝞎          : MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL
+\\bsansvarsigma             <char-0x1D781>               " 𝞁          : MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA
+\\bsansvartheta             <char-0x1D78B>               " 𝞋          : MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL
+\\bsansw                    <char-0x1D604>               " 𝘄          : MATHEMATICAL SANS-SERIF BOLD SMALL W
+\\bsansx                    <char-0x1D605>               " 𝘅          : MATHEMATICAL SANS-SERIF BOLD SMALL X
+\\bsansx<Tab>               <char-0x1D605>               " 𝘅          : MATHEMATICAL SANS-SERIF BOLD SMALL X
+\\bsansxi                   <char-0x1D77D>               " 𝝽          : MATHEMATICAL SANS-SERIF BOLD SMALL XI
+\\bsansy                    <char-0x1D606>               " 𝘆          : MATHEMATICAL SANS-SERIF BOLD SMALL Y
+\\bsansz                    <char-0x1D607>               " 𝘇          : MATHEMATICAL SANS-SERIF BOLD SMALL Z
+\\bsansz<Tab>               <char-0x1D607>               " 𝘇          : MATHEMATICAL SANS-SERIF BOLD SMALL Z
+\\bsansze                   \\bsansze                    "            : (Incomplete sequence)
+\\bsanszero                 <char-0x1D7EC>               " 𝟬          : MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
+\\bsanszeta                 <char-0x1D775>               " 𝝵          : MATHEMATICAL SANS-SERIF BOLD SMALL ZETA
+\\bscrA                     <char-0x1D4D0>               " 𝓐          : MATHEMATICAL BOLD SCRIPT CAPITAL A
+\\bscrB                     <char-0x1D4D1>               " 𝓑          : MATHEMATICAL BOLD SCRIPT CAPITAL B
+\\bscrC                     <char-0x1D4D2>               " 𝓒          : MATHEMATICAL BOLD SCRIPT CAPITAL C
+\\bscrD                     <char-0x1D4D3>               " 𝓓          : MATHEMATICAL BOLD SCRIPT CAPITAL D
+\\bscrE                     <char-0x1D4D4>               " 𝓔          : MATHEMATICAL BOLD SCRIPT CAPITAL E
+\\bscrF                     <char-0x1D4D5>               " 𝓕          : MATHEMATICAL BOLD SCRIPT CAPITAL F
+\\bscrG                     <char-0x1D4D6>               " 𝓖          : MATHEMATICAL BOLD SCRIPT CAPITAL G
+\\bscrH                     <char-0x1D4D7>               " 𝓗          : MATHEMATICAL BOLD SCRIPT CAPITAL H
+\\bscrI                     <char-0x1D4D8>               " 𝓘          : MATHEMATICAL BOLD SCRIPT CAPITAL I
+\\bscrJ                     <char-0x1D4D9>               " 𝓙          : MATHEMATICAL BOLD SCRIPT CAPITAL J
+\\bscrK                     <char-0x1D4DA>               " 𝓚          : MATHEMATICAL BOLD SCRIPT CAPITAL K
+\\bscrL                     <char-0x1D4DB>               " 𝓛          : MATHEMATICAL BOLD SCRIPT CAPITAL L
+\\bscrM                     <char-0x1D4DC>               " 𝓜          : MATHEMATICAL BOLD SCRIPT CAPITAL M
+\\bscrN                     <char-0x1D4DD>               " 𝓝          : MATHEMATICAL BOLD SCRIPT CAPITAL N
+\\bscrO                     <char-0x1D4DE>               " 𝓞          : MATHEMATICAL BOLD SCRIPT CAPITAL O
+\\bscrP                     <char-0x1D4DF>               " 𝓟          : MATHEMATICAL BOLD SCRIPT CAPITAL P
+\\bscrQ                     <char-0x1D4E0>               " 𝓠          : MATHEMATICAL BOLD SCRIPT CAPITAL Q
+\\bscrR                     <char-0x1D4E1>               " 𝓡          : MATHEMATICAL BOLD SCRIPT CAPITAL R
+\\bscrS                     <char-0x1D4E2>               " 𝓢          : MATHEMATICAL BOLD SCRIPT CAPITAL S
+\\bscrT                     <char-0x1D4E3>               " 𝓣          : MATHEMATICAL BOLD SCRIPT CAPITAL T
+\\bscrU                     <char-0x1D4E4>               " 𝓤          : MATHEMATICAL BOLD SCRIPT CAPITAL U
+\\bscrV                     <char-0x1D4E5>               " 𝓥          : MATHEMATICAL BOLD SCRIPT CAPITAL V
+\\bscrW                     <char-0x1D4E6>               " 𝓦          : MATHEMATICAL BOLD SCRIPT CAPITAL W
+\\bscrX                     <char-0x1D4E7>               " 𝓧          : MATHEMATICAL BOLD SCRIPT CAPITAL X
+\\bscrY                     <char-0x1D4E8>               " 𝓨          : MATHEMATICAL BOLD SCRIPT CAPITAL Y
+\\bscrZ                     <char-0x1D4E9>               " 𝓩          : MATHEMATICAL BOLD SCRIPT CAPITAL Z
+\\bscra                     <char-0x1D4EA>               " 𝓪          : MATHEMATICAL BOLD SCRIPT SMALL A
+\\bscrb                     <char-0x1D4EB>               " 𝓫          : MATHEMATICAL BOLD SCRIPT SMALL B
+\\bscrc                     <char-0x1D4EC>               " 𝓬          : MATHEMATICAL BOLD SCRIPT SMALL C
+\\bscrd                     <char-0x1D4ED>               " 𝓭          : MATHEMATICAL BOLD SCRIPT SMALL D
+\\bscre                     <char-0x1D4EE>               " 𝓮          : MATHEMATICAL BOLD SCRIPT SMALL E
+\\bscrf                     <char-0x1D4EF>               " 𝓯          : MATHEMATICAL BOLD SCRIPT SMALL F
+\\bscrg                     <char-0x1D4F0>               " 𝓰          : MATHEMATICAL BOLD SCRIPT SMALL G
+\\bscrh                     <char-0x1D4F1>               " 𝓱          : MATHEMATICAL BOLD SCRIPT SMALL H
+\\bscri                     <char-0x1D4F2>               " 𝓲          : MATHEMATICAL BOLD SCRIPT SMALL I
+\\bscrj                     <char-0x1D4F3>               " 𝓳          : MATHEMATICAL BOLD SCRIPT SMALL J
+\\bscrk                     <char-0x1D4F4>               " 𝓴          : MATHEMATICAL BOLD SCRIPT SMALL K
+\\bscrl                     <char-0x1D4F5>               " 𝓵          : MATHEMATICAL BOLD SCRIPT SMALL L
+\\bscrm                     <char-0x1D4F6>               " 𝓶          : MATHEMATICAL BOLD SCRIPT SMALL M
+\\bscrn                     <char-0x1D4F7>               " 𝓷          : MATHEMATICAL BOLD SCRIPT SMALL N
+\\bscro                     <char-0x1D4F8>               " 𝓸          : MATHEMATICAL BOLD SCRIPT SMALL O
+\\bscrp                     <char-0x1D4F9>               " 𝓹          : MATHEMATICAL BOLD SCRIPT SMALL P
+\\bscrq                     <char-0x1D4FA>               " 𝓺          : MATHEMATICAL BOLD SCRIPT SMALL Q
+\\bscrr                     <char-0x1D4FB>               " 𝓻          : MATHEMATICAL BOLD SCRIPT SMALL R
+\\bscrs                     <char-0x1D4FC>               " 𝓼          : MATHEMATICAL BOLD SCRIPT SMALL S
+\\bscrt                     <char-0x1D4FD>               " 𝓽          : MATHEMATICAL BOLD SCRIPT SMALL T
+\\bscru                     <char-0x1D4FE>               " 𝓾          : MATHEMATICAL BOLD SCRIPT SMALL U
+\\bscrv                     <char-0x1D4FF>               " 𝓿          : MATHEMATICAL BOLD SCRIPT SMALL V
+\\bscrw                     <char-0x1D500>               " 𝔀          : MATHEMATICAL BOLD SCRIPT SMALL W
+\\bscrx                     <char-0x1D501>               " 𝔁          : MATHEMATICAL BOLD SCRIPT SMALL X
+\\bscry                     <char-0x1D502>               " 𝔂          : MATHEMATICAL BOLD SCRIPT SMALL Y
+\\bscrz                     <char-0x1D503>               " 𝔃          : MATHEMATICAL BOLD SCRIPT SMALL Z
+\\bsimilarleftarrow         <char-0x02B41>               " ⭁          : REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW
+\\bsimilarrightarrow        <char-0x02B47>               " ⭇          : REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW
+\\bsolhsub                  <char-0x027C8>               " ⟈          : REVERSE SOLIDUS PRECEDING SUBSET
+\\btdl                      <char-0x0026C>               " ɬ          : LATIN SMALL LETTER L WITH BELT / LATIN SMALL LETTER L BELT
+\\btimes                    <char-0x02A32>               " ⨲          : SEMIDIRECT PRODUCT WITH BOTTOM CLOSED
+\\bullet                    <char-0x02022>               " •          : BULLET
+\\bullseye                  <char-0x025CE>               " ◎          : BULLSEYE
+\\bumpeq                    <char-0x0224F>               " ≏          : DIFFERENCE BETWEEN
+\\bumpeq<Tab>               <char-0x0224F>               " ≏          : DIFFERENCE BETWEEN
+\\bumpeqq                   <char-0x02AAE>               " ⪮          : EQUALS SIGN WITH BUMPY ABOVE
+\\c                         <char-0x00327>               " ◌̧         : COMBINING CEDILLA / NON-SPACING CEDILLA
+\\c<Tab>                    <char-0x00327>               " ◌̧         : COMBINING CEDILLA / NON-SPACING CEDILLA
+\\ca                        \\ca                         "            : (Incomplete sequence)
+\\cancer                    <char-0x0264B>               " ♋          : CANCER
+\\candra                    <char-0x00310>               " ◌̐         : COMBINING CANDRABINDU / NON-SPACING CANDRABINDU
+\\cap                       <char-0x02229>               " ∩          : INTERSECTION
+\\cap<Tab>                  <char-0x02229>               " ∩          : INTERSECTION
+\\capd                      \\capd                       "            : (Incomplete sequence)
+\\capdot                    <char-0x02A40>               " ⩀          : INTERSECTION WITH DOT
+\\capr                      \\capr                       "            : (Incomplete sequence)
+\\capricornus               <char-0x02651>               " ♑          : CAPRICORN
+\\capw                      \\capw                       "            : (Incomplete sequence)
+\\capwedge                  <char-0x02A44>               " ⩄          : INTERSECTION WITH LOGICAL AND
+\\carriagereturn            <char-0x021B5>               " ↵          : DOWNWARDS ARROW WITH CORNER LEFTWARDS / DOWN ARROW WITH CORNER LEFT
+\\cb                        \\cb                         "            : (Incomplete sequence)
+\\cbrt                      <char-0x0221B>               " ∛          : CUBE ROOT
+\\cd                        \\cd                         "            : (Incomplete sequence)
+\\cdot                      <char-0x022C5>               " ⋅          : DOT OPERATOR
+\\cdot<Tab>                 <char-0x022C5>               " ⋅          : DOT OPERATOR
+\\cdotp                     <char-0x000B7>               " ·          : MIDDLE DOT
+\\cdots                     <char-0x022EF>               " ⋯          : MIDLINE HORIZONTAL ELLIPSIS
+\\ch                        \\ch                         "            : (Incomplete sequence)
+\\check                     <char-0x0030C>               " ◌̌         : COMBINING CARON / NON-SPACING HACEK
+\\check<Tab>                <char-0x0030C>               " ◌̌         : COMBINING CARON / NON-SPACING HACEK
+\\checkm                    \\checkm                     "            : (Incomplete sequence)
+\\checkmark                 <char-0x02713>               " ✓          : CHECK MARK
+\\chi                       <char-0x003C7>               " χ          : GREEK SMALL LETTER CHI
+\\ci                        \\ci                         "            : (Incomplete sequence)
+\\circ                      <char-0x02218>               " ∘          : RING OPERATOR
+\\circ<Tab>                 <char-0x02218>               " ∘          : RING OPERATOR
+\\circe                     \\circe                      "            : (Incomplete sequence)
+\\circeq                    <char-0x02257>               " ≗          : RING EQUAL TO
+\\circl                     \\circl                      "            : (Incomplete sequence)
+\\circlearrowleft           <char-0x021BA>               " ↺          : ANTICLOCKWISE OPEN CIRCLE ARROW
+\\circlearrowright          <char-0x021BB>               " ↻          : CLOCKWISE OPEN CIRCLE ARROW
+\\circledR                  <char-0x000AE>               " ®          : REGISTERED SIGN / REGISTERED TRADE MARK SIGN
+\\circledS                  <char-0x024C8>               " Ⓢ          : CIRCLED LATIN CAPITAL LETTER S
+\\circledast                <char-0x0229B>               " ⊛          : CIRCLED ASTERISK OPERATOR
+\\circledbullet             <char-0x029BF>               " ⦿          : CIRCLED BULLET
+\\circledcirc               <char-0x0229A>               " ⊚          : CIRCLED RING OPERATOR
+\\circleddash               <char-0x0229D>               " ⊝          : CIRCLED DASH
+\\circledequal              <char-0x0229C>               " ⊜          : CIRCLED EQUALS
+\\circledparallel           <char-0x029B7>               " ⦷          : CIRCLED PARALLEL
+\\circledrightdot           <char-0x02686>               " ⚆          : WHITE CIRCLE WITH DOT RIGHT
+\\circledstar               <char-0x0272A>               " ✪          : CIRCLED WHITE STAR
+\\circledtwodots            <char-0x02687>               " ⚇          : WHITE CIRCLE WITH TWO DOTS
+\\circledwhitebullet        <char-0x029BE>               " ⦾          : CIRCLED WHITE BULLET
+\\circlellquad              <char-0x025F5>               " ◵          : WHITE CIRCLE WITH LOWER LEFT QUADRANT
+\\circlelrquad              <char-0x025F6>               " ◶          : WHITE CIRCLE WITH LOWER RIGHT QUADRANT
+\\circleonleftarrow         <char-0x02B30>               " ⬰          : LEFT ARROW WITH SMALL CIRCLE
+\\circleonrightarrow        <char-0x021F4>               " ⇴          : RIGHT ARROW WITH SMALL CIRCLE
+\\circletophalfblack        <char-0x025D3>               " ◓          : CIRCLE WITH UPPER HALF BLACK
+\\circleulquad              <char-0x025F4>               " ◴          : WHITE CIRCLE WITH UPPER LEFT QUADRANT
+\\circleurquad              <char-0x025F7>               " ◷          : WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+\\circleurquad<Tab>         <char-0x025F7>               " ◷          : WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+\\circleurquadb             \\circleurquadb              "            : (Incomplete sequence)
+\\circleurquadblack         <char-0x025D4>               " ◔          : CIRCLE WITH UPPER RIGHT QUADRANT BLACK
+\\circlevertfill            <char-0x025CD>               " ◍          : CIRCLE WITH VERTICAL FILL
+\\cirfb                     <char-0x025D2>               " ◒          : CIRCLE WITH LOWER HALF BLACK
+\\cirfl                     <char-0x025D0>               " ◐          : CIRCLE WITH LEFT HALF BLACK
+\\cirfnint                  <char-0x02A10>               " ⨐          : CIRCULATION FUNCTION
+\\cirfr                     <char-0x025D1>               " ◑          : CIRCLE WITH RIGHT HALF BLACK
+\\cl                        \\cl                         "            : (Incomplete sequence)
+\\clockoint                 <char-0x02A0F>               " ⨏          : INTEGRAL AVERAGE WITH SLASH
+\\clomeg                    <char-0x00277>               " ɷ          : LATIN SMALL LETTER CLOSED OMEGA
+\\closedvarcap              <char-0x02A4D>               " ⩍          : CLOSED INTERSECTION WITH SERIFS
+\\closedvarcup              <char-0x02A4C>               " ⩌          : CLOSED UNION WITH SERIFS
+\\closedvarcup<Tab>         <char-0x02A4C>               " ⩌          : CLOSED UNION WITH SERIFS
+\\closedvarcups             \\closedvarcups              "            : (Incomplete sequence)
+\\closedvarcupsmashprod     <char-0x02A50>               " ⩐          : CLOSED UNION WITH SERIFS AND SMASH PRODUCT
+\\clubsuit                  <char-0x02663>               " ♣          : BLACK CLUB SUIT
+\\clwintegral               <char-0x02231>               " ∱          : CLOCKWISE INTEGRAL
+\\co                        \\co                         "            : (Incomplete sequence)
+\\coloneq                   <char-0x02254>               " ≔          : COLON EQUALS / COLON EQUAL
+\\commaminus                <char-0x02A29>               " ⨩          : MINUS SIGN WITH COMMA ABOVE
+\\complement                <char-0x02201>               " ∁          : COMPLEMENT
+\\cong                      <char-0x02245>               " ≅          : APPROXIMATELY EQUAL TO
+\\cong<Tab>                 <char-0x02245>               " ≅          : APPROXIMATELY EQUAL TO
+\\congd                     \\congd                      "            : (Incomplete sequence)
+\\congdot                   <char-0x02A6D>               " ⩭          : CONGRUENT WITH DOT ABOVE
+\\conictaper                <char-0x02332>               " ⌲          : CONICAL TAPER
+\\conjquant                 <char-0x02A07>               " ⨇          : TWO LOGICAL AND OPERATOR
+\\coprod                    <char-0x02210>               " ∐          : N-ARY COPRODUCT
+\\copyright                 <char-0x000A9>               " ©          : COPYRIGHT SIGN
+\\cs                        \\cs                         "            : (Incomplete sequence)
+\\csub                      <char-0x02ACF>               " ⫏          : CLOSED SUBSET
+\\csub<Tab>                 <char-0x02ACF>               " ⫏          : CLOSED SUBSET
+\\csube                     <char-0x02AD1>               " ⫑          : CLOSED SUBSET OR EQUAL TO
+\\csup                      <char-0x02AD0>               " ⫐          : CLOSED SUPERSET
+\\csup<Tab>                 <char-0x02AD0>               " ⫐          : CLOSED SUPERSET
+\\csupe                     <char-0x02AD2>               " ⫒          : CLOSED SUPERSET OR EQUAL TO
+\\cu                        \\cu                         "            : (Incomplete sequence)
+\\cup                       <char-0x0222A>               " ∪          : UNION
+\\cup<Tab>                  <char-0x0222A>               " ∪          : UNION
+\\cupd                      \\cupd                       "            : (Incomplete sequence)
+\\cupdot                    <char-0x0228D>               " ⊍          : MULTISET MULTIPLICATION
+\\cupv                      \\cupv                       "            : (Incomplete sequence)
+\\cupvee                    <char-0x02A45>               " ⩅          : UNION WITH LOGICAL OR
+\\curlyeqprec               <char-0x022DE>               " ⋞          : EQUAL TO OR PRECEDES
+\\curlyeqsucc               <char-0x022DF>               " ⋟          : EQUAL TO OR SUCCEEDS
+\\curlyvee                  <char-0x022CE>               " ⋎          : CURLY LOGICAL OR
+\\curlywedge                <char-0x022CF>               " ⋏          : CURLY LOGICAL AND
+\\curvearrowleft            <char-0x021B6>               " ↶          : ANTICLOCKWISE TOP SEMICIRCLE ARROW
+\\curvearrowright           <char-0x021B7>               " ↷          : CLOCKWISE TOP SEMICIRCLE ARROW
+\\dagger                    <char-0x02020>               " †          : DAGGER
+\\daleth                    <char-0x02138>               " ℸ          : DALET SYMBOL / FOURTH TRANSFINITE CARDINAL
+\\danger                    <char-0x02621>               " ☡          : CAUTION SIGN
+\\dashV                     <char-0x02AE3>               " ⫣          : DOUBLE VERTICAL BAR LEFT TURNSTILE
+\\dashleftharpoondown       <char-0x0296B>               " ⥫          : LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
+\\dashrightharpoondown      <char-0x0296D>               " ⥭          : RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
+\\dashv                     <char-0x022A3>               " ⊣          : LEFT TACK
+\\dbkarow                   <char-0x0290F>               " ⤏          : RIGHTWARDS TRIPLE DASH ARROW
+\\dblarrowupdown            <char-0x021C5>               " ⇅          : UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW / UP ARROW LEFT OF DOWN ARROW
+\\ddagger                   <char-0x02021>               " ‡          : DOUBLE DAGGER
+\\ddddot                    <char-0x020DC>               " ◌⃜         : COMBINING FOUR DOTS ABOVE / NON-SPACING FOUR DOTS ABOVE
+\\dddot                     <char-0x020DB>               " ◌⃛         : COMBINING THREE DOTS ABOVE / NON-SPACING THREE DOTS ABOVE
+\\ddfnc                     <char-0x02999>               " ⦙          : DOTTED FENCE
+\\ddot                      <char-0x00308>               " ◌̈         : COMBINING DIAERESIS / NON-SPACING DIAERESIS
+\\ddot<Tab>                 <char-0x00308>               " ◌̈         : COMBINING DIAERESIS / NON-SPACING DIAERESIS
+\\ddots                     <char-0x022F1>               " ⋱          : DOWN RIGHT DIAGONAL ELLIPSIS
+\\ddots<Tab>                <char-0x022F1>               " ⋱          : DOWN RIGHT DIAGONAL ELLIPSIS
+\\ddotse                    \\ddotse                     "            : (Incomplete sequence)
+\\ddotseq                   <char-0x02A77>               " ⩷          : EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW
+\\defas                     <char-0x029CB>               " ⧋          : TRIANGLE WITH UNDERBAR
+\\degree                    <char-0x000B0>               " °          : DEGREE SIGN
+\\del                       <char-0x02207>               " ∇          : NABLA
+\\del<Tab>                  <char-0x02207>               " ∇          : NABLA
+\\delt                      \\delt                       "            : (Incomplete sequence)
+\\delta                     <char-0x003B4>               " δ          : GREEK SMALL LETTER DELTA
+\\dh                        <char-0x000F0>               " ð          : LATIN SMALL LETTER ETH
+\\diagdown                  <char-0x02572>               " ╲          : BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT / FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
+\\diagup                    <char-0x02571>               " ╱          : BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT / FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
+\\diameter                  <char-0x02300>               " ⌀          : DIAMETER SIGN
+\\diamond                   <char-0x022C4>               " ⋄          : DIAMOND OPERATOR
+\\diamond<Tab>              <char-0x022C4>               " ⋄          : DIAMOND OPERATOR
+\\diamondb                  \\diamondb                   "            : (Incomplete sequence)
+\\diamondbotblack           <char-0x02B19>               " ⬙          : DIAMOND WITH BOTTOM HALF BLACK
+\\diamondl                  \\diamondl                   "            : (Incomplete sequence)
+\\diamondleftarrow          <char-0x0291D>               " ⤝          : LEFTWARDS ARROW TO BLACK DIAMOND
+\\diamondleftarrow<Tab>     <char-0x0291D>               " ⤝          : LEFTWARDS ARROW TO BLACK DIAMOND
+\\diamondleftarrowb         \\diamondleftarrowb          "            : (Incomplete sequence)
+\\diamondleftarrowbar       <char-0x0291F>               " ⤟          : LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND
+\\diamondleftblack          <char-0x02B16>               " ⬖          : DIAMOND WITH LEFT HALF BLACK
+\\diamondr                  \\diamondr                   "            : (Incomplete sequence)
+\\diamondrightblack         <char-0x02B17>               " ⬗          : DIAMOND WITH RIGHT HALF BLACK
+\\diamonds                  \\diamonds                   "            : (Incomplete sequence)
+\\diamondsuit               <char-0x02662>               " ♢          : WHITE DIAMOND SUIT
+\\diamondt                  \\diamondt                   "            : (Incomplete sequence)
+\\diamondtopblack           <char-0x02B18>               " ⬘          : DIAMOND WITH TOP HALF BLACK
+\\dicei                     <char-0x02680>               " ⚀          : DIE FACE-1
+\\dicei<Tab>                <char-0x02680>               " ⚀          : DIE FACE-1
+\\diceii                    <char-0x02681>               " ⚁          : DIE FACE-2
+\\diceii<Tab>               <char-0x02681>               " ⚁          : DIE FACE-2
+\\diceiii                   <char-0x02682>               " ⚂          : DIE FACE-3
+\\diceiv                    <char-0x02683>               " ⚃          : DIE FACE-4
+\\dicev                     <char-0x02684>               " ⚄          : DIE FACE-5
+\\dicev<Tab>                <char-0x02684>               " ⚄          : DIE FACE-5
+\\dicevi                    <char-0x02685>               " ⚅          : DIE FACE-6
+\\digamma                   <char-0x003DD>               " ϝ          : GREEK SMALL LETTER DIGAMMA
+\\dingasterisk              <char-0x0273D>               " ✽          : HEAVY TEARDROP-SPOKED ASTERISK
+\\disin                     <char-0x022F2>               " ⋲          : ELEMENT OF WITH LONG HORIZONTAL STROKE
+\\disjquant                 <char-0x02A08>               " ⨈          : TWO LOGICAL OR OPERATOR
+\\div                       <char-0x000F7>               " ÷          : DIVISION SIGN
+\\div<Tab>                  <char-0x000F7>               " ÷          : DIVISION SIGN
+\\divi                      \\divi                       "            : (Incomplete sequence)
+\\divideontimes             <char-0x022C7>               " ⋇          : DIVISION TIMES
+\\dj                        <char-0x00111>               " đ          : LATIN SMALL LETTER D WITH STROKE / LATIN SMALL LETTER D BAR
+\\dlcorn                    <char-0x023A3>               " ⎣          : LEFT SQUARE BRACKET LOWER CORNER
+\\dot                       <char-0x00307>               " ◌̇         : COMBINING DOT ABOVE / NON-SPACING DOT ABOVE
+\\dot<Tab>                  <char-0x00307>               " ◌̇         : COMBINING DOT ABOVE / NON-SPACING DOT ABOVE
+\\dote                      \\dote                       "            : (Incomplete sequence)
+\\doteq                     <char-0x02250>               " ≐          : APPROACHES THE LIMIT
+\\doteq<Tab>                <char-0x02250>               " ≐          : APPROACHES THE LIMIT
+\\dotequ                    \\dotequ                     "            : (Incomplete sequence)
+\\dotequiv                  <char-0x02A67>               " ⩧          : IDENTICAL WITH DOT ABOVE
+\\dotm                      \\dotm                       "            : (Incomplete sequence)
+\\dotminus                  <char-0x02238>               " ∸          : DOT MINUS
+\\dotp                      \\dotp                       "            : (Incomplete sequence)
+\\dotplus                   <char-0x02214>               " ∔          : DOT PLUS
+\\dots                      <char-0x02026>               " …          : HORIZONTAL ELLIPSIS
+\\dots<Tab>                 <char-0x02026>               " …          : HORIZONTAL ELLIPSIS
+\\dotsi                     \\dotsi                      "            : (Incomplete sequence)
+\\dotsim                    <char-0x02A6A>               " ⩪          : TILDE OPERATOR WITH DOT ABOVE
+\\dotsm                     \\dotsm                      "            : (Incomplete sequence)
+\\dotsminusdots             <char-0x0223A>               " ∺          : GEOMETRIC PROPORTION
+\\dott                      \\dott                       "            : (Incomplete sequence)
+\\dottedcircle              <char-0x025CC>               " ◌          : DOTTED CIRCLE
+\\dottedsquare              <char-0x02B1A>               " ⬚          : DOTTED SQUARE
+\\dottimes                  <char-0x02A30>               " ⨰          : MULTIPLICATION SIGN WITH DOT ABOVE
+\\doublebarvee              <char-0x02A62>               " ⩢          : LOGICAL OR WITH DOUBLE OVERBAR
+\\doublepipe                <char-0x001C2>               " ǂ          : LATIN LETTER ALVEOLAR CLICK / LATIN LETTER PIPE DOUBLE BAR
+\\doubleplus                <char-0x029FA>               " ⧺          : DOUBLE PLUS
+\\downarrow                 <char-0x02193>               " ↓          : DOWNWARDS ARROW / DOWN ARROW
+\\downarrow<Tab>            <char-0x02193>               " ↓          : DOWNWARDS ARROW / DOWN ARROW
+\\downarrowb                \\downarrowb                 "            : (Incomplete sequence)
+\\downarrowbarred           <char-0x02908>               " ⤈          : DOWNWARDS ARROW WITH HORIZONTAL STROKE
+\\downdasharrow             <char-0x021E3>               " ⇣          : DOWNWARDS DASHED ARROW / DOWN DASHED ARROW
+\\downdownarrows            <char-0x021CA>               " ⇊          : DOWNWARDS PAIRED ARROWS / DOWN PAIRED ARROWS
+\\downharpoonleft           <char-0x021C3>               " ⇃          : DOWNWARDS HARPOON WITH BARB LEFTWARDS / DOWN HARPOON WITH BARB LEFT
+\\downharpoonright          <char-0x021C2>               " ⇂          : DOWNWARDS HARPOON WITH BARB RIGHTWARDS / DOWN HARPOON WITH BARB RIGHT
+\\downharpoonsleftright     <char-0x02965>               " ⥥          : DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
+\\downvDash                 <char-0x02AEA>               " ⫪          : DOUBLE DOWN TACK
+\\downwhitearrow            <char-0x021E9>               " ⇩          : DOWNWARDS WHITE ARROW / WHITE DOWN ARROW
+\\downzigzagarrow           <char-0x021AF>               " ↯          : DOWNWARDS ZIGZAG ARROW / DOWN ZIGZAG ARROW
+\\draftingarrow             <char-0x0279B>               " ➛          : DRAFTING POINT RIGHTWARDS ARROW / DRAFTING POINT RIGHT ARROW
+\\drbkarrow                 <char-0x02910>               " ⤐          : RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW
+\\droang                    <char-0x0031A>               " ◌̚         : COMBINING LEFT ANGLE ABOVE / NON-SPACING LEFT ANGLE ABOVE
+\\dshfnc                    <char-0x02506>               " ┆          : BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL / FORMS LIGHT TRIPLE DASH VERTICAL
+\\dsol                      <char-0x029F6>               " ⧶          : SOLIDUS WITH OVERBAR
+\\dualmap                   <char-0x029DF>               " ⧟          : DOUBLE-ENDED MULTIMAP
+\\dyogh                     <char-0x002A4>               " ʤ          : LATIN SMALL LETTER DEZH DIGRAPH / LATIN SMALL LETTER D YOGH
+\\egsdot                    <char-0x02A98>               " ⪘          : SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
+\\eighthnote                <char-0x0266A>               " ♪          : EIGHTH NOTE
+\\elinters                  <char-0x023E7>               " ⏧          : ELECTRICAL INTERSECTION
+\\ell                       <char-0x02113>               " ℓ          : SCRIPT SMALL L
+\\elsdot                    <char-0x02A97>               " ⪗          : SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
+\\emdash                    <char-0x02014>               " —          : EM DASH
+\\emptyset                  <char-0x02205>               " ∅          : EMPTY SET
+\\emptyset<Tab>             <char-0x02205>               " ∅          : EMPTY SET
+\\emptyseto                 \\emptyseto                  "            : (Incomplete sequence)
+\\emptysetoarr              <char-0x029B3>               " ⦳          : EMPTY SET WITH RIGHT ARROW ABOVE
+\\emptysetoarr<Tab>         <char-0x029B3>               " ⦳          : EMPTY SET WITH RIGHT ARROW ABOVE
+\\emptysetoarrl             <char-0x029B4>               " ⦴          : EMPTY SET WITH LEFT ARROW ABOVE
+\\emptysetobar              <char-0x029B1>               " ⦱          : EMPTY SET WITH OVERBAR
+\\emptysetocirc             <char-0x029B2>               " ⦲          : EMPTY SET WITH SMALL CIRCLE ABOVE
+\\enclosecircle             <char-0x020DD>               " ◌⃝         : COMBINING ENCLOSING CIRCLE / ENCLOSING CIRCLE
+\\enclosediamond            <char-0x020DF>               " ◌⃟         : COMBINING ENCLOSING DIAMOND / ENCLOSING DIAMOND
+\\enclosesquare             <char-0x020DE>               " ◌⃞         : COMBINING ENCLOSING SQUARE / ENCLOSING SQUARE
+\\enclosetriangle           <char-0x020E4>               " ◌⃤         : COMBINING ENCLOSING UPWARD POINTING TRIANGLE
+\\endash                    <char-0x02013>               " –          : EN DASH
+\\enspace                   <char-0x02002>               "            : EN SPACE
+\\eparsl                    <char-0x029E3>               " ⧣          : EQUALS SIGN AND SLANTED PARALLEL
+\\epsilon                   <char-0x003F5>               " ϵ          : GREEK LUNATE EPSILON SYMBOL
+\\eqcirc                    <char-0x02256>               " ≖          : RING IN EQUAL TO
+\\eqcolon                   <char-0x02255>               " ≕          : EQUALS COLON / EQUAL COLON
+\\eqdef                     <char-0x0225D>               " ≝          : EQUAL TO BY DEFINITION
+\\eqdot                     <char-0x02A66>               " ⩦          : EQUALS SIGN WITH DOT BELOW
+\\eqeqeq                    <char-0x02A76>               " ⩶          : THREE CONSECUTIVE EQUALS SIGNS
+\\eqgtr                     <char-0x022DD>               " ⋝          : EQUAL TO OR GREATER-THAN / EQUAL TO OR GREATER THAN
+\\eqless                    <char-0x022DC>               " ⋜          : EQUAL TO OR LESS-THAN / EQUAL TO OR LESS THAN
+\\eqqgtr                    <char-0x02A9A>               " ⪚          : DOUBLE-LINE EQUAL TO OR GREATER-THAN
+\\eqqless                   <char-0x02A99>               " ⪙          : DOUBLE-LINE EQUAL TO OR LESS-THAN
+\\eqqplus                   <char-0x02A71>               " ⩱          : EQUALS SIGN ABOVE PLUS SIGN
+\\eqqsim                    <char-0x02A73>               " ⩳          : EQUALS SIGN ABOVE TILDE OPERATOR
+\\eqqslantgtr               <char-0x02A9C>               " ⪜          : DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
+\\eqqslantless              <char-0x02A9B>               " ⪛          : DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
+\\eqsim                     <char-0x02242>               " ≂          : MINUS TILDE
+\\eqslantgtr                <char-0x02A96>               " ⪖          : SLANTED EQUAL TO OR GREATER-THAN
+\\eqslantless               <char-0x02A95>               " ⪕          : SLANTED EQUAL TO OR LESS-THAN
+\\equalleftarrow            <char-0x02B40>               " ⭀          : EQUALS SIGN ABOVE LEFTWARDS ARROW
+\\equalparallel             <char-0x022D5>               " ⋕          : EQUAL AND PARALLEL TO
+\\equiv                     <char-0x02261>               " ≡          : IDENTICAL TO
+\\equiv<Tab>                <char-0x02261>               " ≡          : IDENTICAL TO
+\\equivD                    \\equivD                     "            : (Incomplete sequence)
+\\equivDD                   <char-0x02A78>               " ⩸          : EQUIVALENT WITH FOUR DOTS ABOVE
+\\eqvparsl                  <char-0x029E5>               " ⧥          : IDENTICAL TO AND SLANTED PARALLEL
+\\esh                       <char-0x00283>               " ʃ          : LATIN SMALL LETTER ESH
+\\eta                       <char-0x003B7>               " η          : GREEK SMALL LETTER ETA
+\\eth                       <char-0x000F0>               " ð          : LATIN SMALL LETTER ETH
+\\euler                     <char-0x0212F>               " ℯ          : SCRIPT SMALL E
+\\euler<Tab>                <char-0x0212F>               " ℯ          : SCRIPT SMALL E
+\\eulerm                    \\eulerm                     "            : (Incomplete sequence)
+\\eulermascheroni           <char-0x02107>               " ℇ          : EULER CONSTANT / EULERS
+\\euro                      <char-0x020AC>               " €          : EURO SIGN
+\\exclamdown                <char-0x000A1>               " ¡          : INVERTED EXCLAMATION MARK
+\\exists                    <char-0x02203>               " ∃          : THERE EXISTS
+\\fallingdotseq             <char-0x02252>               " ≒          : APPROXIMATELY EQUAL TO OR THE IMAGE OF
+\\fdiagovnearrow            <char-0x0292F>               " ⤯          : FALLING DIAGONAL CROSSING NORTH EAST ARROW
+\\fdiagovrdiag              <char-0x0292C>               " ⤬          : FALLING DIAGONAL CROSSING RISING DIAGONAL
+\\female                    <char-0x02640>               " ♀          : FEMALE SIGN
+\\fhr                       <char-0x0027E>               " ɾ          : LATIN SMALL LETTER R WITH FISHHOOK / LATIN SMALL LETTER FISHHOOK R
+\\fisheye                   <char-0x025C9>               " ◉          : FISHEYE
+\\flat                      <char-0x0266D>               " ♭          : MUSIC FLAT SIGN / FLAT
+\\fltns                     <char-0x023E5>               " ⏥          : FLATNESS
+\\forall                    <char-0x02200>               " ∀          : FOR ALL
+\\forks                     <char-0x02ADC>               " ⫝̸          : FORKING
+\\forks<Tab>                <char-0x02ADC>               " ⫝̸          : FORKING
+\\forksn                    \\forksn                     "            : (Incomplete sequence)
+\\forksnot                  <char-0x02ADD>               " ⫝          : NONFORKING
+\\forkv                     <char-0x02AD9>               " ⫙          : ELEMENT OF OPENING DOWNWARDS
+\\fourthroot                <char-0x0221C>               " ∜          : FOURTH ROOT
+\\frakA                     <char-0x1D504>               " 𝔄          : MATHEMATICAL FRAKTUR CAPITAL A
+\\frakB                     <char-0x1D505>               " 𝔅          : MATHEMATICAL FRAKTUR CAPITAL B
+\\frakC                     <char-0x0212D>               " ℭ          : BLACK-LETTER CAPITAL C / BLACK-LETTER C
+\\frakD                     <char-0x1D507>               " 𝔇          : MATHEMATICAL FRAKTUR CAPITAL D
+\\frakE                     <char-0x1D508>               " 𝔈          : MATHEMATICAL FRAKTUR CAPITAL E
+\\frakF                     <char-0x1D509>               " 𝔉          : MATHEMATICAL FRAKTUR CAPITAL F
+\\frakG                     <char-0x1D50A>               " 𝔊          : MATHEMATICAL FRAKTUR CAPITAL G
+\\frakH                     <char-0x0210C>               " ℌ          : BLACK-LETTER CAPITAL H / BLACK-LETTER H
+\\frakI                     <char-0x02111>               " ℑ          : BLACK-LETTER CAPITAL I / BLACK-LETTER I
+\\frakJ                     <char-0x1D50D>               " 𝔍          : MATHEMATICAL FRAKTUR CAPITAL J
+\\frakK                     <char-0x1D50E>               " 𝔎          : MATHEMATICAL FRAKTUR CAPITAL K
+\\frakL                     <char-0x1D50F>               " 𝔏          : MATHEMATICAL FRAKTUR CAPITAL L
+\\frakM                     <char-0x1D510>               " 𝔐          : MATHEMATICAL FRAKTUR CAPITAL M
+\\frakN                     <char-0x1D511>               " 𝔑          : MATHEMATICAL FRAKTUR CAPITAL N
+\\frakO                     <char-0x1D512>               " 𝔒          : MATHEMATICAL FRAKTUR CAPITAL O
+\\frakP                     <char-0x1D513>               " 𝔓          : MATHEMATICAL FRAKTUR CAPITAL P
+\\frakQ                     <char-0x1D514>               " 𝔔          : MATHEMATICAL FRAKTUR CAPITAL Q
+\\frakR                     <char-0x0211C>               " ℜ          : BLACK-LETTER CAPITAL R / BLACK-LETTER R
+\\frakS                     <char-0x1D516>               " 𝔖          : MATHEMATICAL FRAKTUR CAPITAL S
+\\frakT                     <char-0x1D517>               " 𝔗          : MATHEMATICAL FRAKTUR CAPITAL T
+\\frakU                     <char-0x1D518>               " 𝔘          : MATHEMATICAL FRAKTUR CAPITAL U
+\\frakV                     <char-0x1D519>               " 𝔙          : MATHEMATICAL FRAKTUR CAPITAL V
+\\frakW                     <char-0x1D51A>               " 𝔚          : MATHEMATICAL FRAKTUR CAPITAL W
+\\frakX                     <char-0x1D51B>               " 𝔛          : MATHEMATICAL FRAKTUR CAPITAL X
+\\frakY                     <char-0x1D51C>               " 𝔜          : MATHEMATICAL FRAKTUR CAPITAL Y
+\\frakZ                     <char-0x02128>               " ℨ          : BLACK-LETTER CAPITAL Z / BLACK-LETTER Z
+\\fraka                     <char-0x1D51E>               " 𝔞          : MATHEMATICAL FRAKTUR SMALL A
+\\frakb                     <char-0x1D51F>               " 𝔟          : MATHEMATICAL FRAKTUR SMALL B
+\\frakc                     <char-0x1D520>               " 𝔠          : MATHEMATICAL FRAKTUR SMALL C
+\\frakd                     <char-0x1D521>               " 𝔡          : MATHEMATICAL FRAKTUR SMALL D
+\\frake                     <char-0x1D522>               " 𝔢          : MATHEMATICAL FRAKTUR SMALL E
+\\frakf                     <char-0x1D523>               " 𝔣          : MATHEMATICAL FRAKTUR SMALL F
+\\frakg                     <char-0x1D524>               " 𝔤          : MATHEMATICAL FRAKTUR SMALL G
+\\frakh                     <char-0x1D525>               " 𝔥          : MATHEMATICAL FRAKTUR SMALL H
+\\fraki                     <char-0x1D526>               " 𝔦          : MATHEMATICAL FRAKTUR SMALL I
+\\frakj                     <char-0x1D527>               " 𝔧          : MATHEMATICAL FRAKTUR SMALL J
+\\frakk                     <char-0x1D528>               " 𝔨          : MATHEMATICAL FRAKTUR SMALL K
+\\frakl                     <char-0x1D529>               " 𝔩          : MATHEMATICAL FRAKTUR SMALL L
+\\frakm                     <char-0x1D52A>               " 𝔪          : MATHEMATICAL FRAKTUR SMALL M
+\\frakn                     <char-0x1D52B>               " 𝔫          : MATHEMATICAL FRAKTUR SMALL N
+\\frako                     <char-0x1D52C>               " 𝔬          : MATHEMATICAL FRAKTUR SMALL O
+\\frakp                     <char-0x1D52D>               " 𝔭          : MATHEMATICAL FRAKTUR SMALL P
+\\frakq                     <char-0x1D52E>               " 𝔮          : MATHEMATICAL FRAKTUR SMALL Q
+\\frakr                     <char-0x1D52F>               " 𝔯          : MATHEMATICAL FRAKTUR SMALL R
+\\fraks                     <char-0x1D530>               " 𝔰          : MATHEMATICAL FRAKTUR SMALL S
+\\frakt                     <char-0x1D531>               " 𝔱          : MATHEMATICAL FRAKTUR SMALL T
+\\fraku                     <char-0x1D532>               " 𝔲          : MATHEMATICAL FRAKTUR SMALL U
+\\frakv                     <char-0x1D533>               " 𝔳          : MATHEMATICAL FRAKTUR SMALL V
+\\frakw                     <char-0x1D534>               " 𝔴          : MATHEMATICAL FRAKTUR SMALL W
+\\frakx                     <char-0x1D535>               " 𝔵          : MATHEMATICAL FRAKTUR SMALL X
+\\fraky                     <char-0x1D536>               " 𝔶          : MATHEMATICAL FRAKTUR SMALL Y
+\\frakz                     <char-0x1D537>               " 𝔷          : MATHEMATICAL FRAKTUR SMALL Z
+\\frown                     <char-0x02322>               " ⌢          : FROWN
+\\fullouterjoin             <char-0x027D7>               " ⟗          : FULL OUTER JOIN
+\\gamma                     <char-0x003B3>               " γ          : GREEK SMALL LETTER GAMMA
+\\ge                        <char-0x02265>               " ≥          : GREATER-THAN OR EQUAL TO / GREATER THAN OR EQUAL TO
+\\ge<Tab>                   <char-0x02265>               " ≥          : GREATER-THAN OR EQUAL TO / GREATER THAN OR EQUAL TO
+\\gem                       \\gem                        "            : (Incomplete sequence)
+\\gemini                    <char-0x0264A>               " ♊          : GEMINI
+\\geq                       <char-0x02265>               " ≥          : GREATER-THAN OR EQUAL TO / GREATER THAN OR EQUAL TO
+\\geq<Tab>                  <char-0x02265>               " ≥          : GREATER-THAN OR EQUAL TO / GREATER THAN OR EQUAL TO
+\\geqq                      <char-0x02267>               " ≧          : GREATER-THAN OVER EQUAL TO / GREATER THAN OVER EQUAL TO
+\\geqq<Tab>                 <char-0x02267>               " ≧          : GREATER-THAN OVER EQUAL TO / GREATER THAN OVER EQUAL TO
+\\geqqs                     \\geqqs                      "            : (Incomplete sequence)
+\\geqqslant                 <char-0x02AFA>               " ⫺          : DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO
+\\geqs                      \\geqs                       "            : (Incomplete sequence)
+\\geqslant                  <char-0x02A7E>               " ⩾          : GREATER-THAN OR SLANTED EQUAL TO
+\\ges                       \\ges                        "            : (Incomplete sequence)
+\\gescc                     <char-0x02AA9>               " ⪩          : GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
+\\gesdot                    <char-0x02A80>               " ⪀          : GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+\\gesdot<Tab>               <char-0x02A80>               " ⪀          : GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+\\gesdoto                   <char-0x02A82>               " ⪂          : GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+\\gesdoto<Tab>              <char-0x02A82>               " ⪂          : GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+\\gesdotol                  <char-0x02A84>               " ⪄          : GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
+\\gesles                    <char-0x02A94>               " ⪔          : GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
+\\gg                        <char-0x0226B>               " ≫          : MUCH GREATER-THAN / MUCH GREATER THAN
+\\gg<Tab>                   <char-0x0226B>               " ≫          : MUCH GREATER-THAN / MUCH GREATER THAN
+\\ggg                       <char-0x022D9>               " ⋙          : VERY MUCH GREATER-THAN / VERY MUCH GREATER THAN
+\\ggg<Tab>                  <char-0x022D9>               " ⋙          : VERY MUCH GREATER-THAN / VERY MUCH GREATER THAN
+\\gggn                      \\gggn                       "            : (Incomplete sequence)
+\\gggnest                   <char-0x02AF8>               " ⫸          : TRIPLE NESTED GREATER-THAN
+\\gimel                     <char-0x02137>               " ℷ          : GIMEL SYMBOL / THIRD TRANSFINITE CARDINAL
+\\glE                       <char-0x02A92>               " ⪒          : GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
+\\gla                       <char-0x02AA5>               " ⪥          : GREATER-THAN BESIDE LESS-THAN
+\\glj                       <char-0x02AA4>               " ⪤          : GREATER-THAN OVERLAPPING LESS-THAN
+\\glst                      <char-0x00294>               " ʔ          : LATIN LETTER GLOTTAL STOP
+\\gnapprox                  <char-0x02A8A>               " ⪊          : GREATER-THAN AND NOT APPROXIMATE
+\\gneq                      <char-0x02A88>               " ⪈          : GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
+\\gneq<Tab>                 <char-0x02A88>               " ⪈          : GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
+\\gneqq                     <char-0x02269>               " ≩          : GREATER-THAN BUT NOT EQUAL TO / GREATER THAN BUT NOT EQUAL TO
+\\gnsim                     <char-0x022E7>               " ⋧          : GREATER-THAN BUT NOT EQUIVALENT TO / GREATER THAN BUT NOT EQUIVALENT TO
+\\grave                     <char-0x00300>               " ◌̀         : COMBINING GRAVE ACCENT / NON-SPACING GRAVE
+\\gsime                     <char-0x02A8E>               " ⪎          : GREATER-THAN ABOVE SIMILAR OR EQUAL
+\\gsiml                     <char-0x02A90>               " ⪐          : GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN
+\\gtcc                      <char-0x02AA7>               " ⪧          : GREATER-THAN CLOSED BY CURVE
+\\gtcir                     <char-0x02A7A>               " ⩺          : GREATER-THAN WITH CIRCLE INSIDE
+\\gtquest                   <char-0x02A7C>               " ⩼          : GREATER-THAN WITH QUESTION MARK ABOVE
+\\gtrapprox                 <char-0x02A86>               " ⪆          : GREATER-THAN OR APPROXIMATE
+\\gtrdot                    <char-0x022D7>               " ⋗          : GREATER-THAN WITH DOT / GREATER THAN WITH DOT
+\\gtreqless                 <char-0x022DB>               " ⋛          : GREATER-THAN EQUAL TO OR LESS-THAN / GREATER THAN EQUAL TO OR LESS THAN
+\\gtreqqless                <char-0x02A8C>               " ⪌          : GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
+\\gtrless                   <char-0x02277>               " ≷          : GREATER-THAN OR LESS-THAN / GREATER THAN OR LESS THAN
+\\gtrsim                    <char-0x02273>               " ≳          : GREATER-THAN OR EQUIVALENT TO / GREATER THAN OR EQUIVALENT TO
+\\guilsinglleft             <char-0x02039>               " ‹          : SINGLE LEFT-POINTING ANGLE QUOTATION MARK / LEFT POINTING SINGLE GUILLEMET
+\\guilsinglright            <char-0x0203A>               " ›          : SINGLE RIGHT-POINTING ANGLE QUOTATION MARK / RIGHT POINTING SINGLE GUILLEMET
+\\gvertneqq                 <char-0x02269><char-0x0FE00> " ≩︀         : GREATER-THAN BUT NOT EQUAL TO / GREATER THAN BUT NOT EQUAL TO + VARIATION SELECTOR-1
+\\hat                       <char-0x00302>               " ◌̂         : COMBINING CIRCUMFLEX ACCENT / NON-SPACING CIRCUMFLEX
+\\hat<Tab>                  <char-0x00302>               " ◌̂         : COMBINING CIRCUMFLEX ACCENT / NON-SPACING CIRCUMFLEX
+\\hata                      \\hata                       "            : (Incomplete sequence)
+\\hatapprox                 <char-0x02A6F>               " ⩯          : ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT
+\\hbar                      <char-0x00127>               " ħ          : LATIN SMALL LETTER H WITH STROKE / LATIN SMALL LETTER H BAR
+\\heartsuit                 <char-0x02661>               " ♡          : WHITE HEART SUIT
+\\hermaphrodite             <char-0x026A5>               " ⚥          : MALE AND FEMALE SIGN
+\\hermitconjmatrix          <char-0x022B9>               " ⊹          : HERMITIAN CONJUGATE MATRIX
+\\hexagon                   <char-0x02394>               " ⎔          : SOFTWARE-FUNCTION SYMBOL
+\\hexagon<Tab>              <char-0x02394>               " ⎔          : SOFTWARE-FUNCTION SYMBOL
+\\hexagonb                  \\hexagonb                   "            : (Incomplete sequence)
+\\hexagonblack              <char-0x02B23>               " ⬣          : HORIZONTAL BLACK HEXAGON
+\\highminus                 <char-0x000AF>               " ¯          : MACRON / SPACING MACRON
+\\hksearow                  <char-0x02925>               " ⤥          : SOUTH EAST ARROW WITH HOOK
+\\hkswarow                  <char-0x02926>               " ⤦          : SOUTH WEST ARROW WITH HOOK
+\\hlmrk                     <char-0x002D1>               " ˑ          : MODIFIER LETTER HALF TRIANGULAR COLON
+\\hookleftarrow             <char-0x021A9>               " ↩          : LEFTWARDS ARROW WITH HOOK / LEFT ARROW WITH HOOK
+\\hookrightarrow            <char-0x021AA>               " ↪          : RIGHTWARDS ARROW WITH HOOK / RIGHT ARROW WITH HOOK
+\\house                     <char-0x02302>               " ⌂          : HOUSE
+\\hrectangle                <char-0x025AD>               " ▭          : WHITE RECTANGLE
+\\hrectangle<Tab>           <char-0x025AD>               " ▭          : WHITE RECTANGLE
+\\hrectangleb               \\hrectangleb                "            : (Incomplete sequence)
+\\hrectangleblack           <char-0x025AC>               " ▬          : BLACK RECTANGLE
+\\hslash                    <char-0x0210F>               " ℏ          : PLANCK CONSTANT OVER TWO PI / PLANCK CONSTANT OVER 2 PI
+\\hspace                    <char-0x0200A>               "            : HAIR SPACE
+\\hvlig                     <char-0x00195>               " ƕ          : LATIN SMALL LETTER HV / LATIN SMALL LETTER H V
+\\iff                       <char-0x027FA>               " ⟺          : LONG LEFT RIGHT DOUBLE ARROW
+\\iiiint                    <char-0x02A0C>               " ⨌          : QUADRUPLE INTEGRAL OPERATOR
+\\iiint                     <char-0x0222D>               " ∭          : TRIPLE INTEGRAL
+\\iint                      <char-0x0222C>               " ∬          : DOUBLE INTEGRAL
+\\image                     <char-0x022B7>               " ⊷          : IMAGE OF
+\\imath                     <char-0x00131>               " ı          : LATIN SMALL LETTER DOTLESS I
+\\impliedby                 <char-0x027F8>               " ⟸          : LONG LEFTWARDS DOUBLE ARROW
+\\implies                   <char-0x027F9>               " ⟹          : LONG RIGHTWARDS DOUBLE ARROW
+\\in                        <char-0x02208>               " ∈          : ELEMENT OF
+\\in<Tab>                   <char-0x02208>               " ∈          : ELEMENT OF
+\\inc                       \\inc                        "            : (Incomplete sequence)
+\\increment                 <char-0x02206>               " ∆          : INCREMENT
+\\ind                       \\ind                        "            : (Incomplete sequence)
+\\indep                     <char-0x02AEB>               " ⫫          : DOUBLE UP TACK
+\\inf                       \\inf                        "            : (Incomplete sequence)
+\\infty                     <char-0x0221E>               " ∞          : INFINITY
+\\ing                       \\ing                        "            : (Incomplete sequence)
+\\inglst                    <char-0x00296>               " ʖ          : LATIN LETTER INVERTED GLOTTAL STOP
+\\int                       <char-0x0222B>               " ∫          : INTEGRAL
+\\int<Tab>                  <char-0x0222B>               " ∫          : INTEGRAL
+\\intB                      \\intB                       "            : (Incomplete sequence)
+\\intBar                    <char-0x02A0E>               " ⨎          : INTEGRAL WITH DOUBLE STROKE
+\\intb                      \\intb                       "            : (Incomplete sequence)
+\\intbar                    <char-0x02A0D>               " ⨍          : FINITE PART INTEGRAL
+\\intc                      \\intc                       "            : (Incomplete sequence)
+\\intcap                    <char-0x02A19>               " ⨙          : INTEGRAL WITH INTERSECTION
+\\intcup                    <char-0x02A1A>               " ⨚          : INTEGRAL WITH UNION
+\\inte                      \\inte                       "            : (Incomplete sequence)
+\\intercal                  <char-0x022BA>               " ⊺          : INTERCALATE
+\\interleave                <char-0x02AF4>               " ⫴          : TRIPLE VERTICAL BAR BINARY RELATION
+\\intp                      \\intp                       "            : (Incomplete sequence)
+\\intprod                   <char-0x02A3C>               " ⨼          : INTERIOR PRODUCT
+\\intprod<Tab>              <char-0x02A3C>               " ⨼          : INTERIOR PRODUCT
+\\intprodr                  <char-0x02A3D>               " ⨽          : RIGHTHAND INTERIOR PRODUCT
+\\intx                      <char-0x02A18>               " ⨘          : INTEGRAL WITH TIMES SIGN
+\\inv                       \\inv                        "            : (Incomplete sequence)
+\\inversewhitecircle        <char-0x025D9>               " ◙          : INVERSE WHITE CIRCLE
+\\invnot                    <char-0x02310>               " ⌐          : REVERSED NOT SIGN
+\\invv                      <char-0x0028C>               " ʌ          : LATIN SMALL LETTER TURNED V
+\\invw                      <char-0x0028D>               " ʍ          : LATIN SMALL LETTER TURNED W
+\\invw<Tab>                 <char-0x0028D>               " ʍ          : LATIN SMALL LETTER TURNED W
+\\invwh                     \\invwh                      "            : (Incomplete sequence)
+\\invwhitelowerhalfcircle   <char-0x025DB>               " ◛          : LOWER HALF INVERSE WHITE CIRCLE
+\\invwhiteupperhalfcircle   <char-0x025DA>               " ◚          : UPPER HALF INVERSE WHITE CIRCLE
+\\iota                      <char-0x003B9>               " ι          : GREEK SMALL LETTER IOTA
+\\isansA                    <char-0x1D608>               " 𝘈          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
+\\isansB                    <char-0x1D609>               " 𝘉          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
+\\isansC                    <char-0x1D60A>               " 𝘊          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
+\\isansD                    <char-0x1D60B>               " 𝘋          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
+\\isansE                    <char-0x1D60C>               " 𝘌          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
+\\isansF                    <char-0x1D60D>               " 𝘍          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
+\\isansG                    <char-0x1D60E>               " 𝘎          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
+\\isansH                    <char-0x1D60F>               " 𝘏          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
+\\isansI                    <char-0x1D610>               " 𝘐          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
+\\isansJ                    <char-0x1D611>               " 𝘑          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
+\\isansK                    <char-0x1D612>               " 𝘒          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
+\\isansL                    <char-0x1D613>               " 𝘓          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
+\\isansM                    <char-0x1D614>               " 𝘔          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
+\\isansN                    <char-0x1D615>               " 𝘕          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
+\\isansO                    <char-0x1D616>               " 𝘖          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
+\\isansP                    <char-0x1D617>               " 𝘗          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
+\\isansQ                    <char-0x1D618>               " 𝘘          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
+\\isansR                    <char-0x1D619>               " 𝘙          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
+\\isansS                    <char-0x1D61A>               " 𝘚          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
+\\isansT                    <char-0x1D61B>               " 𝘛          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
+\\isansU                    <char-0x1D61C>               " 𝘜          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
+\\isansV                    <char-0x1D61D>               " 𝘝          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
+\\isansW                    <char-0x1D61E>               " 𝘞          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
+\\isansX                    <char-0x1D61F>               " 𝘟          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
+\\isansY                    <char-0x1D620>               " 𝘠          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
+\\isansZ                    <char-0x1D621>               " 𝘡          : MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
+\\isansa                    <char-0x1D622>               " 𝘢          : MATHEMATICAL SANS-SERIF ITALIC SMALL A
+\\isansb                    <char-0x1D623>               " 𝘣          : MATHEMATICAL SANS-SERIF ITALIC SMALL B
+\\isansc                    <char-0x1D624>               " 𝘤          : MATHEMATICAL SANS-SERIF ITALIC SMALL C
+\\isansd                    <char-0x1D625>               " 𝘥          : MATHEMATICAL SANS-SERIF ITALIC SMALL D
+\\isanse                    <char-0x1D626>               " 𝘦          : MATHEMATICAL SANS-SERIF ITALIC SMALL E
+\\isansf                    <char-0x1D627>               " 𝘧          : MATHEMATICAL SANS-SERIF ITALIC SMALL F
+\\isansg                    <char-0x1D628>               " 𝘨          : MATHEMATICAL SANS-SERIF ITALIC SMALL G
+\\isansh                    <char-0x1D629>               " 𝘩          : MATHEMATICAL SANS-SERIF ITALIC SMALL H
+\\isansi                    <char-0x1D62A>               " 𝘪          : MATHEMATICAL SANS-SERIF ITALIC SMALL I
+\\isansj                    <char-0x1D62B>               " 𝘫          : MATHEMATICAL SANS-SERIF ITALIC SMALL J
+\\isansk                    <char-0x1D62C>               " 𝘬          : MATHEMATICAL SANS-SERIF ITALIC SMALL K
+\\isansl                    <char-0x1D62D>               " 𝘭          : MATHEMATICAL SANS-SERIF ITALIC SMALL L
+\\isansm                    <char-0x1D62E>               " 𝘮          : MATHEMATICAL SANS-SERIF ITALIC SMALL M
+\\isansn                    <char-0x1D62F>               " 𝘯          : MATHEMATICAL SANS-SERIF ITALIC SMALL N
+\\isanso                    <char-0x1D630>               " 𝘰          : MATHEMATICAL SANS-SERIF ITALIC SMALL O
+\\isansp                    <char-0x1D631>               " 𝘱          : MATHEMATICAL SANS-SERIF ITALIC SMALL P
+\\isansq                    <char-0x1D632>               " 𝘲          : MATHEMATICAL SANS-SERIF ITALIC SMALL Q
+\\isansr                    <char-0x1D633>               " 𝘳          : MATHEMATICAL SANS-SERIF ITALIC SMALL R
+\\isanss                    <char-0x1D634>               " 𝘴          : MATHEMATICAL SANS-SERIF ITALIC SMALL S
+\\isanst                    <char-0x1D635>               " 𝘵          : MATHEMATICAL SANS-SERIF ITALIC SMALL T
+\\isansu                    <char-0x1D636>               " 𝘶          : MATHEMATICAL SANS-SERIF ITALIC SMALL U
+\\isansv                    <char-0x1D637>               " 𝘷          : MATHEMATICAL SANS-SERIF ITALIC SMALL V
+\\isansw                    <char-0x1D638>               " 𝘸          : MATHEMATICAL SANS-SERIF ITALIC SMALL W
+\\isansx                    <char-0x1D639>               " 𝘹          : MATHEMATICAL SANS-SERIF ITALIC SMALL X
+\\isansy                    <char-0x1D63A>               " 𝘺          : MATHEMATICAL SANS-SERIF ITALIC SMALL Y
+\\isansz                    <char-0x1D63B>               " 𝘻          : MATHEMATICAL SANS-SERIF ITALIC SMALL Z
+\\isinE                     <char-0x022F9>               " ⋹          : ELEMENT OF WITH TWO HORIZONTAL STROKES
+\\isindot                   <char-0x022F5>               " ⋵          : ELEMENT OF WITH DOT ABOVE
+\\isinobar                  <char-0x022F7>               " ⋷          : SMALL ELEMENT OF WITH OVERBAR
+\\isins                     <char-0x022F4>               " ⋴          : SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+\\isinvb                    <char-0x022F8>               " ⋸          : ELEMENT OF WITH UNDERBAR
+\\itA                       <char-0x1D434>               " 𝐴          : MATHEMATICAL ITALIC CAPITAL A
+\\itA<Tab>                  <char-0x1D434>               " 𝐴          : MATHEMATICAL ITALIC CAPITAL A
+\\itAl                      \\itAl                       "            : (Incomplete sequence)
+\\itAlpha                   <char-0x1D6E2>               " 𝛢          : MATHEMATICAL ITALIC CAPITAL ALPHA
+\\itB                       <char-0x1D435>               " 𝐵          : MATHEMATICAL ITALIC CAPITAL B
+\\itB<Tab>                  <char-0x1D435>               " 𝐵          : MATHEMATICAL ITALIC CAPITAL B
+\\itBe                      \\itBe                       "            : (Incomplete sequence)
+\\itBeta                    <char-0x1D6E3>               " 𝛣          : MATHEMATICAL ITALIC CAPITAL BETA
+\\itC                       <char-0x1D436>               " 𝐶          : MATHEMATICAL ITALIC CAPITAL C
+\\itC<Tab>                  <char-0x1D436>               " 𝐶          : MATHEMATICAL ITALIC CAPITAL C
+\\itCh                      \\itCh                       "            : (Incomplete sequence)
+\\itChi                     <char-0x1D6F8>               " 𝛸          : MATHEMATICAL ITALIC CAPITAL CHI
+\\itD                       <char-0x1D437>               " 𝐷          : MATHEMATICAL ITALIC CAPITAL D
+\\itD<Tab>                  <char-0x1D437>               " 𝐷          : MATHEMATICAL ITALIC CAPITAL D
+\\itDe                      \\itDe                       "            : (Incomplete sequence)
+\\itDelta                   <char-0x1D6E5>               " 𝛥          : MATHEMATICAL ITALIC CAPITAL DELTA
+\\itE                       <char-0x1D438>               " 𝐸          : MATHEMATICAL ITALIC CAPITAL E
+\\itE<Tab>                  <char-0x1D438>               " 𝐸          : MATHEMATICAL ITALIC CAPITAL E
+\\itEp                      \\itEp                       "            : (Incomplete sequence)
+\\itEpsilon                 <char-0x1D6E6>               " 𝛦          : MATHEMATICAL ITALIC CAPITAL EPSILON
+\\itEt                      \\itEt                       "            : (Incomplete sequence)
+\\itEta                     <char-0x1D6E8>               " 𝛨          : MATHEMATICAL ITALIC CAPITAL ETA
+\\itF                       <char-0x1D439>               " 𝐹          : MATHEMATICAL ITALIC CAPITAL F
+\\itG                       <char-0x1D43A>               " 𝐺          : MATHEMATICAL ITALIC CAPITAL G
+\\itG<Tab>                  <char-0x1D43A>               " 𝐺          : MATHEMATICAL ITALIC CAPITAL G
+\\itGa                      \\itGa                       "            : (Incomplete sequence)
+\\itGamma                   <char-0x1D6E4>               " 𝛤          : MATHEMATICAL ITALIC CAPITAL GAMMA
+\\itH                       <char-0x1D43B>               " 𝐻          : MATHEMATICAL ITALIC CAPITAL H
+\\itI                       <char-0x1D43C>               " 𝐼          : MATHEMATICAL ITALIC CAPITAL I
+\\itI<Tab>                  <char-0x1D43C>               " 𝐼          : MATHEMATICAL ITALIC CAPITAL I
+\\itIo                      \\itIo                       "            : (Incomplete sequence)
+\\itIota                    <char-0x1D6EA>               " 𝛪          : MATHEMATICAL ITALIC CAPITAL IOTA
+\\itJ                       <char-0x1D43D>               " 𝐽          : MATHEMATICAL ITALIC CAPITAL J
+\\itK                       <char-0x1D43E>               " 𝐾          : MATHEMATICAL ITALIC CAPITAL K
+\\itK<Tab>                  <char-0x1D43E>               " 𝐾          : MATHEMATICAL ITALIC CAPITAL K
+\\itKa                      \\itKa                       "            : (Incomplete sequence)
+\\itKappa                   <char-0x1D6EB>               " 𝛫          : MATHEMATICAL ITALIC CAPITAL KAPPA
+\\itL                       <char-0x1D43F>               " 𝐿          : MATHEMATICAL ITALIC CAPITAL L
+\\itL<Tab>                  <char-0x1D43F>               " 𝐿          : MATHEMATICAL ITALIC CAPITAL L
+\\itLa                      \\itLa                       "            : (Incomplete sequence)
+\\itLambda                  <char-0x1D6EC>               " 𝛬          : MATHEMATICAL ITALIC CAPITAL LAMDA
+\\itM                       <char-0x1D440>               " 𝑀          : MATHEMATICAL ITALIC CAPITAL M
+\\itM<Tab>                  <char-0x1D440>               " 𝑀          : MATHEMATICAL ITALIC CAPITAL M
+\\itMu                      <char-0x1D6ED>               " 𝛭          : MATHEMATICAL ITALIC CAPITAL MU
+\\itN                       <char-0x1D441>               " 𝑁          : MATHEMATICAL ITALIC CAPITAL N
+\\itN<Tab>                  <char-0x1D441>               " 𝑁          : MATHEMATICAL ITALIC CAPITAL N
+\\itNu                      <char-0x1D6EE>               " 𝛮          : MATHEMATICAL ITALIC CAPITAL NU
+\\itO                       <char-0x1D442>               " 𝑂          : MATHEMATICAL ITALIC CAPITAL O
+\\itO<Tab>                  <char-0x1D442>               " 𝑂          : MATHEMATICAL ITALIC CAPITAL O
+\\itOm                      \\itOm                       "            : (Incomplete sequence)
+\\itOmega                   <char-0x1D6FA>               " 𝛺          : MATHEMATICAL ITALIC CAPITAL OMEGA
+\\itOmicron                 <char-0x1D6F0>               " 𝛰          : MATHEMATICAL ITALIC CAPITAL OMICRON
+\\itP                       <char-0x1D443>               " 𝑃          : MATHEMATICAL ITALIC CAPITAL P
+\\itP<Tab>                  <char-0x1D443>               " 𝑃          : MATHEMATICAL ITALIC CAPITAL P
+\\itPh                      \\itPh                       "            : (Incomplete sequence)
+\\itPhi                     <char-0x1D6F7>               " 𝛷          : MATHEMATICAL ITALIC CAPITAL PHI
+\\itPi                      <char-0x1D6F1>               " 𝛱          : MATHEMATICAL ITALIC CAPITAL PI
+\\itPs                      \\itPs                       "            : (Incomplete sequence)
+\\itPsi                     <char-0x1D6F9>               " 𝛹          : MATHEMATICAL ITALIC CAPITAL PSI
+\\itQ                       <char-0x1D444>               " 𝑄          : MATHEMATICAL ITALIC CAPITAL Q
+\\itR                       <char-0x1D445>               " 𝑅          : MATHEMATICAL ITALIC CAPITAL R
+\\itR<Tab>                  <char-0x1D445>               " 𝑅          : MATHEMATICAL ITALIC CAPITAL R
+\\itRh                      \\itRh                       "            : (Incomplete sequence)
+\\itRho                     <char-0x1D6F2>               " 𝛲          : MATHEMATICAL ITALIC CAPITAL RHO
+\\itS                       <char-0x1D446>               " 𝑆          : MATHEMATICAL ITALIC CAPITAL S
+\\itS<Tab>                  <char-0x1D446>               " 𝑆          : MATHEMATICAL ITALIC CAPITAL S
+\\itSi                      \\itSi                       "            : (Incomplete sequence)
+\\itSigma                   <char-0x1D6F4>               " 𝛴          : MATHEMATICAL ITALIC CAPITAL SIGMA
+\\itT                       <char-0x1D447>               " 𝑇          : MATHEMATICAL ITALIC CAPITAL T
+\\itT<Tab>                  <char-0x1D447>               " 𝑇          : MATHEMATICAL ITALIC CAPITAL T
+\\itTa                      \\itTa                       "            : (Incomplete sequence)
+\\itTau                     <char-0x1D6F5>               " 𝛵          : MATHEMATICAL ITALIC CAPITAL TAU
+\\itTh                      \\itTh                       "            : (Incomplete sequence)
+\\itTheta                   <char-0x1D6E9>               " 𝛩          : MATHEMATICAL ITALIC CAPITAL THETA
+\\itU                       <char-0x1D448>               " 𝑈          : MATHEMATICAL ITALIC CAPITAL U
+\\itU<Tab>                  <char-0x1D448>               " 𝑈          : MATHEMATICAL ITALIC CAPITAL U
+\\itUp                      \\itUp                       "            : (Incomplete sequence)
+\\itUpsilon                 <char-0x1D6F6>               " 𝛶          : MATHEMATICAL ITALIC CAPITAL UPSILON
+\\itV                       <char-0x1D449>               " 𝑉          : MATHEMATICAL ITALIC CAPITAL V
+\\itW                       <char-0x1D44A>               " 𝑊          : MATHEMATICAL ITALIC CAPITAL W
+\\itX                       <char-0x1D44B>               " 𝑋          : MATHEMATICAL ITALIC CAPITAL X
+\\itX<Tab>                  <char-0x1D44B>               " 𝑋          : MATHEMATICAL ITALIC CAPITAL X
+\\itXi                      <char-0x1D6EF>               " 𝛯          : MATHEMATICAL ITALIC CAPITAL XI
+\\itY                       <char-0x1D44C>               " 𝑌          : MATHEMATICAL ITALIC CAPITAL Y
+\\itZ                       <char-0x1D44D>               " 𝑍          : MATHEMATICAL ITALIC CAPITAL Z
+\\itZ<Tab>                  <char-0x1D44D>               " 𝑍          : MATHEMATICAL ITALIC CAPITAL Z
+\\itZe                      \\itZe                       "            : (Incomplete sequence)
+\\itZeta                    <char-0x1D6E7>               " 𝛧          : MATHEMATICAL ITALIC CAPITAL ZETA
+\\ita                       <char-0x1D44E>               " 𝑎          : MATHEMATICAL ITALIC SMALL A
+\\ita<Tab>                  <char-0x1D44E>               " 𝑎          : MATHEMATICAL ITALIC SMALL A
+\\ital                      \\ital                       "            : (Incomplete sequence)
+\\italpha                   <char-0x1D6FC>               " 𝛼          : MATHEMATICAL ITALIC SMALL ALPHA
+\\itb                       <char-0x1D44F>               " 𝑏          : MATHEMATICAL ITALIC SMALL B
+\\itb<Tab>                  <char-0x1D44F>               " 𝑏          : MATHEMATICAL ITALIC SMALL B
+\\itbe                      \\itbe                       "            : (Incomplete sequence)
+\\itbeta                    <char-0x1D6FD>               " 𝛽          : MATHEMATICAL ITALIC SMALL BETA
+\\itc                       <char-0x1D450>               " 𝑐          : MATHEMATICAL ITALIC SMALL C
+\\itc<Tab>                  <char-0x1D450>               " 𝑐          : MATHEMATICAL ITALIC SMALL C
+\\itch                      \\itch                       "            : (Incomplete sequence)
+\\itchi                     <char-0x1D712>               " 𝜒          : MATHEMATICAL ITALIC SMALL CHI
+\\itd                       <char-0x1D451>               " 𝑑          : MATHEMATICAL ITALIC SMALL D
+\\itd<Tab>                  <char-0x1D451>               " 𝑑          : MATHEMATICAL ITALIC SMALL D
+\\itde                      \\itde                       "            : (Incomplete sequence)
+\\itdelta                   <char-0x1D6FF>               " 𝛿          : MATHEMATICAL ITALIC SMALL DELTA
+\\ite                       <char-0x1D452>               " 𝑒          : MATHEMATICAL ITALIC SMALL E
+\\ite<Tab>                  <char-0x1D452>               " 𝑒          : MATHEMATICAL ITALIC SMALL E
+\\itep                      \\itep                       "            : (Incomplete sequence)
+\\itepsilon                 <char-0x1D716>               " 𝜖          : MATHEMATICAL ITALIC EPSILON SYMBOL
+\\itet                      \\itet                       "            : (Incomplete sequence)
+\\iteta                     <char-0x1D702>               " 𝜂          : MATHEMATICAL ITALIC SMALL ETA
+\\itf                       <char-0x1D453>               " 𝑓          : MATHEMATICAL ITALIC SMALL F
+\\itg                       <char-0x1D454>               " 𝑔          : MATHEMATICAL ITALIC SMALL G
+\\itg<Tab>                  <char-0x1D454>               " 𝑔          : MATHEMATICAL ITALIC SMALL G
+\\itga                      \\itga                       "            : (Incomplete sequence)
+\\itgamma                   <char-0x1D6FE>               " 𝛾          : MATHEMATICAL ITALIC SMALL GAMMA
+\\ith                       <char-0x0210E>               " ℎ          : PLANCK CONSTANT
+\\iti                       <char-0x1D456>               " 𝑖          : MATHEMATICAL ITALIC SMALL I
+\\iti<Tab>                  <char-0x1D456>               " 𝑖          : MATHEMATICAL ITALIC SMALL I
+\\itim                      \\itim                       "            : (Incomplete sequence)
+\\itimath                   <char-0x1D6A4>               " 𝚤          : MATHEMATICAL ITALIC SMALL DOTLESS I
+\\itio                      \\itio                       "            : (Incomplete sequence)
+\\itiota                    <char-0x1D704>               " 𝜄          : MATHEMATICAL ITALIC SMALL IOTA
+\\itj                       <char-0x1D457>               " 𝑗          : MATHEMATICAL ITALIC SMALL J
+\\itj<Tab>                  <char-0x1D457>               " 𝑗          : MATHEMATICAL ITALIC SMALL J
+\\itjm                      \\itjm                       "            : (Incomplete sequence)
+\\itjmath                   <char-0x1D6A5>               " 𝚥          : MATHEMATICAL ITALIC SMALL DOTLESS J
+\\itk                       <char-0x1D458>               " 𝑘          : MATHEMATICAL ITALIC SMALL K
+\\itk<Tab>                  <char-0x1D458>               " 𝑘          : MATHEMATICAL ITALIC SMALL K
+\\itka                      \\itka                       "            : (Incomplete sequence)
+\\itkappa                   <char-0x1D705>               " 𝜅          : MATHEMATICAL ITALIC SMALL KAPPA
+\\itl                       <char-0x1D459>               " 𝑙          : MATHEMATICAL ITALIC SMALL L
+\\itl<Tab>                  <char-0x1D459>               " 𝑙          : MATHEMATICAL ITALIC SMALL L
+\\itla                      \\itla                       "            : (Incomplete sequence)
+\\itlambda                  <char-0x1D706>               " 𝜆          : MATHEMATICAL ITALIC SMALL LAMDA
+\\itm                       <char-0x1D45A>               " 𝑚          : MATHEMATICAL ITALIC SMALL M
+\\itm<Tab>                  <char-0x1D45A>               " 𝑚          : MATHEMATICAL ITALIC SMALL M
+\\itmu                      <char-0x1D707>               " 𝜇          : MATHEMATICAL ITALIC SMALL MU
+\\itn                       <char-0x1D45B>               " 𝑛          : MATHEMATICAL ITALIC SMALL N
+\\itn<Tab>                  <char-0x1D45B>               " 𝑛          : MATHEMATICAL ITALIC SMALL N
+\\itna                      \\itna                       "            : (Incomplete sequence)
+\\itnabla                   <char-0x1D6FB>               " 𝛻          : MATHEMATICAL ITALIC NABLA
+\\itnu                      <char-0x1D708>               " 𝜈          : MATHEMATICAL ITALIC SMALL NU
+\\ito                       <char-0x1D45C>               " 𝑜          : MATHEMATICAL ITALIC SMALL O
+\\ito<Tab>                  <char-0x1D45C>               " 𝑜          : MATHEMATICAL ITALIC SMALL O
+\\itom                      \\itom                       "            : (Incomplete sequence)
+\\itomega                   <char-0x1D714>               " 𝜔          : MATHEMATICAL ITALIC SMALL OMEGA
+\\itomicron                 <char-0x1D70A>               " 𝜊          : MATHEMATICAL ITALIC SMALL OMICRON
+\\itp                       <char-0x1D45D>               " 𝑝          : MATHEMATICAL ITALIC SMALL P
+\\itp<Tab>                  <char-0x1D45D>               " 𝑝          : MATHEMATICAL ITALIC SMALL P
+\\itpa                      \\itpa                       "            : (Incomplete sequence)
+\\itpartial                 <char-0x1D715>               " 𝜕          : MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+\\itph                      \\itph                       "            : (Incomplete sequence)
+\\itphi                     <char-0x1D719>               " 𝜙          : MATHEMATICAL ITALIC PHI SYMBOL
+\\itpi                      <char-0x1D70B>               " 𝜋          : MATHEMATICAL ITALIC SMALL PI
+\\itps                      \\itps                       "            : (Incomplete sequence)
+\\itpsi                     <char-0x1D713>               " 𝜓          : MATHEMATICAL ITALIC SMALL PSI
+\\itq                       <char-0x1D45E>               " 𝑞          : MATHEMATICAL ITALIC SMALL Q
+\\itr                       <char-0x1D45F>               " 𝑟          : MATHEMATICAL ITALIC SMALL R
+\\itr<Tab>                  <char-0x1D45F>               " 𝑟          : MATHEMATICAL ITALIC SMALL R
+\\itrh                      \\itrh                       "            : (Incomplete sequence)
+\\itrho                     <char-0x1D70C>               " 𝜌          : MATHEMATICAL ITALIC SMALL RHO
+\\its                       <char-0x1D460>               " 𝑠          : MATHEMATICAL ITALIC SMALL S
+\\its<Tab>                  <char-0x1D460>               " 𝑠          : MATHEMATICAL ITALIC SMALL S
+\\itsi                      \\itsi                       "            : (Incomplete sequence)
+\\itsigma                   <char-0x1D70E>               " 𝜎          : MATHEMATICAL ITALIC SMALL SIGMA
+\\itt                       <char-0x1D461>               " 𝑡          : MATHEMATICAL ITALIC SMALL T
+\\itt<Tab>                  <char-0x1D461>               " 𝑡          : MATHEMATICAL ITALIC SMALL T
+\\itta                      \\itta                       "            : (Incomplete sequence)
+\\ittau                     <char-0x1D70F>               " 𝜏          : MATHEMATICAL ITALIC SMALL TAU
+\\itth                      \\itth                       "            : (Incomplete sequence)
+\\ittheta                   <char-0x1D703>               " 𝜃          : MATHEMATICAL ITALIC SMALL THETA
+\\itu                       <char-0x1D462>               " 𝑢          : MATHEMATICAL ITALIC SMALL U
+\\itu<Tab>                  <char-0x1D462>               " 𝑢          : MATHEMATICAL ITALIC SMALL U
+\\itup                      \\itup                       "            : (Incomplete sequence)
+\\itupsilon                 <char-0x1D710>               " 𝜐          : MATHEMATICAL ITALIC SMALL UPSILON
+\\itv                       <char-0x1D463>               " 𝑣          : MATHEMATICAL ITALIC SMALL V
+\\itv<Tab>                  <char-0x1D463>               " 𝑣          : MATHEMATICAL ITALIC SMALL V
+\\itva                      \\itva                       "            : (Incomplete sequence)
+\\itvarTheta                <char-0x1D6F3>               " 𝛳          : MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
+\\itvarepsilon              <char-0x1D700>               " 𝜀          : MATHEMATICAL ITALIC SMALL EPSILON
+\\itvarkappa                <char-0x1D718>               " 𝜘          : MATHEMATICAL ITALIC KAPPA SYMBOL
+\\itvarphi                  <char-0x1D711>               " 𝜑          : MATHEMATICAL ITALIC SMALL PHI
+\\itvarpi                   <char-0x1D71B>               " 𝜛          : MATHEMATICAL ITALIC PI SYMBOL
+\\itvarrho                  <char-0x1D71A>               " 𝜚          : MATHEMATICAL ITALIC RHO SYMBOL
+\\itvarsigma                <char-0x1D70D>               " 𝜍          : MATHEMATICAL ITALIC SMALL FINAL SIGMA
+\\itvartheta                <char-0x1D717>               " 𝜗          : MATHEMATICAL ITALIC THETA SYMBOL
+\\itw                       <char-0x1D464>               " 𝑤          : MATHEMATICAL ITALIC SMALL W
+\\itx                       <char-0x1D465>               " 𝑥          : MATHEMATICAL ITALIC SMALL X
+\\itx<Tab>                  <char-0x1D465>               " 𝑥          : MATHEMATICAL ITALIC SMALL X
+\\itxi                      <char-0x1D709>               " 𝜉          : MATHEMATICAL ITALIC SMALL XI
+\\ity                       <char-0x1D466>               " 𝑦          : MATHEMATICAL ITALIC SMALL Y
+\\itz                       <char-0x1D467>               " 𝑧          : MATHEMATICAL ITALIC SMALL Z
+\\itz<Tab>                  <char-0x1D467>               " 𝑧          : MATHEMATICAL ITALIC SMALL Z
+\\itze                      \\itze                       "            : (Incomplete sequence)
+\\itzeta                    <char-0x1D701>               " 𝜁          : MATHEMATICAL ITALIC SMALL ZETA
+\\jmath                     <char-0x00237>               " ȷ          : LATIN SMALL LETTER DOTLESS J
+\\join                      <char-0x02A1D>               " ⨝          : JOIN
+\\jupiter                   <char-0x02643>               " ♃          : JUPITER
+\\k                         <char-0x00328>               " ◌̨         : COMBINING OGONEK / NON-SPACING OGONEK
+\\k<Tab>                    <char-0x00328>               " ◌̨         : COMBINING OGONEK / NON-SPACING OGONEK
+\\ka                        \\ka                         "            : (Incomplete sequence)
+\\kappa                     <char-0x003BA>               " κ          : GREEK SMALL LETTER KAPPA
+\\ke                        \\ke                         "            : (Incomplete sequence)
+\\kernelcontraction         <char-0x0223B>               " ∻          : HOMOTHETIC
+\\l                         <char-0x00142>               " ł          : LATIN SMALL LETTER L WITH STROKE / LATIN SMALL LETTER L SLASH
+\\l<Tab>                    <char-0x00142>               " ł          : LATIN SMALL LETTER L WITH STROKE / LATIN SMALL LETTER L SLASH
+\\la                        \\la                         "            : (Incomplete sequence)
+\\lambda                    <char-0x003BB>               " λ          : GREEK SMALL LETTER LAMDA / GREEK SMALL LETTER LAMBDA
+\\langle                    <char-0x027E8>               " ⟨          : MATHEMATICAL LEFT ANGLE BRACKET
+\\lat                       <char-0x02AAB>               " ⪫          : LARGER THAN
+\\lat<Tab>                  <char-0x02AAB>               " ⪫          : LARGER THAN
+\\late                      <char-0x02AAD>               " ⪭          : LARGER THAN OR EQUAL TO
+\\lazysinv                  <char-0x0223E>               " ∾          : INVERTED LAZY S
+\\lc                        \\lc                         "            : (Incomplete sequence)
+\\lceil                     <char-0x02308>               " ⌈          : LEFT CEILING
+\\ld                        \\ld                         "            : (Incomplete sequence)
+\\ldots                     <char-0x02026>               " …          : HORIZONTAL ELLIPSIS
+\\ldq                       <char-0x0201C>               " “          : LEFT DOUBLE QUOTATION MARK / DOUBLE TURNED COMMA QUOTATION MARK
+\\le                        <char-0x02264>               " ≤          : LESS-THAN OR EQUAL TO / LESS THAN OR EQUAL TO
+\\le<Tab>                   <char-0x02264>               " ≤          : LESS-THAN OR EQUAL TO / LESS THAN OR EQUAL TO
+\\lef                       \\lef                        "            : (Incomplete sequence)
+\\leftarrow                 <char-0x02190>               " ←          : LEFTWARDS ARROW / LEFT ARROW
+\\leftarrow<Tab>            <char-0x02190>               " ←          : LEFTWARDS ARROW / LEFT ARROW
+\\leftarrowa                \\leftarrowa                 "            : (Incomplete sequence)
+\\leftarrowapprox           <char-0x02B4A>               " ⭊          : LEFTWARDS ARROW ABOVE ALMOST EQUAL TO
+\\leftarrowb                \\leftarrowb                 "            : (Incomplete sequence)
+\\leftarrowbackapprox       <char-0x02B42>               " ⭂          : LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO
+\\leftarrowbsimilar         <char-0x02B4B>               " ⭋          : LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
+\\leftarrowo                \\leftarrowo                 "            : (Incomplete sequence)
+\\leftarrowonoplus          <char-0x02B32>               " ⬲          : LEFT ARROW WITH CIRCLED PLUS
+\\leftarrowp                \\leftarrowp                 "            : (Incomplete sequence)
+\\leftarrowplus             <char-0x02946>               " ⥆          : LEFTWARDS ARROW WITH PLUS BELOW
+\\leftarrowt                \\leftarrowt                 "            : (Incomplete sequence)
+\\leftarrowtail             <char-0x021A2>               " ↢          : LEFTWARDS ARROW WITH TAIL / LEFT ARROW WITH TAIL
+\\leftarrowtriangle         <char-0x021FD>               " ⇽          : LEFTWARDS OPEN-HEADED ARROW
+\\leftarrowx                <char-0x02B3E>               " ⬾          : LEFTWARDS ARROW THROUGH X
+\\leftbkarrow               <char-0x0290C>               " ⤌          : LEFTWARDS DOUBLE DASH ARROW
+\\leftcurvedarrow           <char-0x02B3F>               " ⬿          : WAVE ARROW POINTING DIRECTLY LEFT
+\\leftdasharrow             <char-0x021E0>               " ⇠          : LEFTWARDS DASHED ARROW / LEFT DASHED ARROW
+\\leftdbkarrow              <char-0x0290E>               " ⤎          : LEFTWARDS TRIPLE DASH ARROW
+\\leftdotarrow              <char-0x02B38>               " ⬸          : LEFTWARDS ARROW WITH DOTTED STEM
+\\leftharpoonaccent         <char-0x020D0>               " ◌⃐         : COMBINING LEFT HARPOON ABOVE / NON-SPACING LEFT HARPOON ABOVE
+\\leftharpoondown           <char-0x021BD>               " ↽          : LEFTWARDS HARPOON WITH BARB DOWNWARDS / LEFT HARPOON WITH BARB DOWN
+\\leftharpoonsupdown        <char-0x02962>               " ⥢          : LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN
+\\leftharpoonup             <char-0x021BC>               " ↼          : LEFTWARDS HARPOON WITH BARB UPWARDS / LEFT HARPOON WITH BARB UP
+\\leftharpoonup<Tab>        <char-0x021BC>               " ↼          : LEFTWARDS HARPOON WITH BARB UPWARDS / LEFT HARPOON WITH BARB UP
+\\leftharpoonupd            \\leftharpoonupd             "            : (Incomplete sequence)
+\\leftharpoonupdash         <char-0x0296A>               " ⥪          : LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
+\\leftleftarrows            <char-0x021C7>               " ⇇          : LEFTWARDS PAIRED ARROWS / LEFT PAIRED ARROWS
+\\leftmoon                  <char-0x0263E>               " ☾          : LAST QUARTER MOON
+\\leftouterjoin             <char-0x027D5>               " ⟕          : LEFT OUTER JOIN
+\\leftrightarrow            <char-0x02194>               " ↔          : LEFT RIGHT ARROW
+\\leftrightarrow<Tab>       <char-0x02194>               " ↔          : LEFT RIGHT ARROW
+\\leftrightarrowc           \\leftrightarrowc            "            : (Incomplete sequence)
+\\leftrightarrowcircle      <char-0x02948>               " ⥈          : LEFT RIGHT ARROW THROUGH SMALL CIRCLE
+\\leftrightarrows           <char-0x021C6>               " ⇆          : LEFTWARDS ARROW OVER RIGHTWARDS ARROW / LEFT ARROW OVER RIGHT ARROW
+\\leftrightarrowt           \\leftrightarrowt            "            : (Incomplete sequence)
+\\leftrightarrowtriangle    <char-0x021FF>               " ⇿          : LEFT RIGHT OPEN-HEADED ARROW
+\\leftrightharpoondownup    <char-0x0294B>               " ⥋          : LEFT BARB DOWN RIGHT BARB UP HARPOON
+\\leftrightharpoons         <char-0x021CB>               " ⇋          : LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON / LEFT HARPOON OVER RIGHT HARPOON
+\\leftrightharpoons<Tab>    <char-0x021CB>               " ⇋          : LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON / LEFT HARPOON OVER RIGHT HARPOON
+\\leftrightharpoonsd        \\leftrightharpoonsd         "            : (Incomplete sequence)
+\\leftrightharpoonsdown     <char-0x02967>               " ⥧          : LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
+\\leftrightharpoonsu        \\leftrightharpoonsu         "            : (Incomplete sequence)
+\\leftrightharpoonsup       <char-0x02966>               " ⥦          : LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP
+\\leftrightharpoonupdown    <char-0x0294A>               " ⥊          : LEFT BARB UP RIGHT BARB DOWN HARPOON
+\\leftrightsquigarrow       <char-0x021AD>               " ↭          : LEFT RIGHT WAVE ARROW
+\\leftsquigarrow            <char-0x021DC>               " ⇜          : LEFTWARDS SQUIGGLE ARROW / LEFT SQUIGGLE ARROW
+\\leftthreearrows           <char-0x02B31>               " ⬱          : THREE LEFTWARDS ARROWS
+\\leftthreetimes            <char-0x022CB>               " ⋋          : LEFT SEMIDIRECT PRODUCT
+\\leftwavearrow             <char-0x0219C>               " ↜          : LEFTWARDS WAVE ARROW / LEFT WAVE ARROW
+\\leftwhitearrow            <char-0x021E6>               " ⇦          : LEFTWARDS WHITE ARROW / WHITE LEFT ARROW
+\\leo                       <char-0x0264C>               " ♌          : LEO
+\\leq                       <char-0x02264>               " ≤          : LESS-THAN OR EQUAL TO / LESS THAN OR EQUAL TO
+\\leq<Tab>                  <char-0x02264>               " ≤          : LESS-THAN OR EQUAL TO / LESS THAN OR EQUAL TO
+\\leqq                      <char-0x02266>               " ≦          : LESS-THAN OVER EQUAL TO / LESS THAN OVER EQUAL TO
+\\leqq<Tab>                 <char-0x02266>               " ≦          : LESS-THAN OVER EQUAL TO / LESS THAN OVER EQUAL TO
+\\leqqs                     \\leqqs                      "            : (Incomplete sequence)
+\\leqqslant                 <char-0x02AF9>               " ⫹          : DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO
+\\leqs                      \\leqs                       "            : (Incomplete sequence)
+\\leqslant                  <char-0x02A7D>               " ⩽          : LESS-THAN OR SLANTED EQUAL TO
+\\les                       \\les                        "            : (Incomplete sequence)
+\\lescc                     <char-0x02AA8>               " ⪨          : LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
+\\lesdot                    <char-0x02A7F>               " ⩿          : LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+\\lesdot<Tab>               <char-0x02A7F>               " ⩿          : LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+\\lesdoto                   <char-0x02A81>               " ⪁          : LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+\\lesdoto<Tab>              <char-0x02A81>               " ⪁          : LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+\\lesdotor                  <char-0x02A83>               " ⪃          : LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
+\\lesges                    <char-0x02A93>               " ⪓          : LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
+\\lessapprox                <char-0x02A85>               " ⪅          : LESS-THAN OR APPROXIMATE
+\\lessdot                   <char-0x022D6>               " ⋖          : LESS-THAN WITH DOT / LESS THAN WITH DOT
+\\lesseqgtr                 <char-0x022DA>               " ⋚          : LESS-THAN EQUAL TO OR GREATER-THAN / LESS THAN EQUAL TO OR GREATER THAN
+\\lesseqqgtr                <char-0x02A8B>               " ⪋          : LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
+\\lessgtr                   <char-0x02276>               " ≶          : LESS-THAN OR GREATER-THAN / LESS THAN OR GREATER THAN
+\\lesssim                   <char-0x02272>               " ≲          : LESS-THAN OR EQUIVALENT TO / LESS THAN OR EQUIVALENT TO
+\\lf                        \\lf                         "            : (Incomplete sequence)
+\\lfloor                    <char-0x0230A>               " ⌊          : LEFT FLOOR
+\\lg                        \\lg                         "            : (Incomplete sequence)
+\\lgE                       <char-0x02A91>               " ⪑          : LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
+\\lgblkcircle               <char-0x02B24>               " ⬤          : BLACK LARGE CIRCLE
+\\lgblksquare               <char-0x02B1B>               " ⬛          : BLACK LARGE SQUARE
+\\lgwhtcircle               <char-0x025EF>               " ◯          : LARGE CIRCLE
+\\lgwhtsquare               <char-0x02B1C>               " ⬜          : WHITE LARGE SQUARE
+\\li                        \\li                         "            : (Incomplete sequence)
+\\libra                     <char-0x0264E>               " ♎          : LIBRA
+\\linefeed                  <char-0x021B4>               " ↴          : RIGHTWARDS ARROW WITH CORNER DOWNWARDS / RIGHT ARROW WITH CORNER DOWN
+\\ll                        <char-0x0226A>               " ≪          : MUCH LESS-THAN / MUCH LESS THAN
+\\ll<Tab>                   <char-0x0226A>               " ≪          : MUCH LESS-THAN / MUCH LESS THAN
+\\lla                       \\lla                        "            : (Incomplete sequence)
+\\llarc                     <char-0x025DF>               " ◟          : LOWER LEFT QUADRANT CIRCULAR ARC
+\\llb                       \\llb                        "            : (Incomplete sequence)
+\\llblacktriangle           <char-0x025E3>               " ◣          : BLACK LOWER LEFT TRIANGLE
+\\llbracket                 <char-0x027E6>               " ⟦          : MATHEMATICAL LEFT WHITE SQUARE BRACKET
+\\llc                       \\llc                        "            : (Incomplete sequence)
+\\llcorner                  <char-0x0231E>               " ⌞          : BOTTOM LEFT CORNER
+\\lll                       \\lll                        "            : (Incomplete sequence)
+\\lllnest                   <char-0x02AF7>               " ⫷          : TRIPLE NESTED LESS-THAN
+\\llt                       \\llt                        "            : (Incomplete sequence)
+\\lltriangle                <char-0x025FA>               " ◺          : LOWER LEFT TRIANGLE
+\\lm                        \\lm                         "            : (Incomplete sequence)
+\\lmoustache                <char-0x023B0>               " ⎰          : UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION
+\\lmrk                      <char-0x002D0>               " ː          : MODIFIER LETTER TRIANGULAR COLON
+\\ln                        \\ln                         "            : (Incomplete sequence)
+\\lnapprox                  <char-0x02A89>               " ⪉          : LESS-THAN AND NOT APPROXIMATE
+\\lneq                      <char-0x02A87>               " ⪇          : LESS-THAN AND SINGLE-LINE NOT EQUAL TO
+\\lneq<Tab>                 <char-0x02A87>               " ⪇          : LESS-THAN AND SINGLE-LINE NOT EQUAL TO
+\\lneqq                     <char-0x02268>               " ≨          : LESS-THAN BUT NOT EQUAL TO / LESS THAN BUT NOT EQUAL TO
+\\lnsim                     <char-0x022E6>               " ⋦          : LESS-THAN BUT NOT EQUIVALENT TO / LESS THAN BUT NOT EQUIVALENT TO
+\\lo                        \\lo                         "            : (Incomplete sequence)
+\\longleftarrow             <char-0x027F5>               " ⟵          : LONG LEFTWARDS ARROW
+\\longleftrightarrow        <char-0x027F7>               " ⟷          : LONG LEFT RIGHT ARROW
+\\longleftsquigarrow        <char-0x02B33>               " ⬳          : LONG LEFTWARDS SQUIGGLE ARROW
+\\longmapsfrom              <char-0x027FB>               " ⟻          : LONG LEFTWARDS ARROW FROM BAR
+\\longmapsto                <char-0x027FC>               " ⟼          : LONG RIGHTWARDS ARROW FROM BAR
+\\longrightarrow            <char-0x027F6>               " ⟶          : LONG RIGHTWARDS ARROW
+\\longrightsquigarrow       <char-0x027FF>               " ⟿          : LONG RIGHTWARDS SQUIGGLE ARROW
+\\looparrowleft             <char-0x021AB>               " ↫          : LEFTWARDS ARROW WITH LOOP / LEFT ARROW WITH LOOP
+\\looparrowright            <char-0x021AC>               " ↬          : RIGHTWARDS ARROW WITH LOOP / RIGHT ARROW WITH LOOP
+\\low                       <char-0x002D5>               " ˕          : MODIFIER LETTER DOWN TACK
+\\low<Tab>                  <char-0x002D5>               " ˕          : MODIFIER LETTER DOWN TACK
+\\lowi                      \\lowi                       "            : (Incomplete sequence)
+\\lowint                    <char-0x02A1C>               " ⨜          : INTEGRAL WITH UNDERBAR
+\\lozenge                   <char-0x025CA>               " ◊          : LOZENGE
+\\lp                        \\lp                         "            : (Incomplete sequence)
+\\lpargt                    <char-0x029A0>               " ⦠          : SPHERICAL ANGLE OPENING LEFT
+\\lq                        <char-0x02018>               " ‘          : LEFT SINGLE QUOTATION MARK / SINGLE TURNED COMMA QUOTATION MARK
+\\lr                        \\lr                         "            : (Incomplete sequence)
+\\lrarc                     <char-0x025DE>               " ◞          : LOWER RIGHT QUADRANT CIRCULAR ARC
+\\lrblacktriangle           <char-0x025E2>               " ◢          : BLACK LOWER RIGHT TRIANGLE
+\\lrcorner                  <char-0x0231F>               " ⌟          : BOTTOM RIGHT CORNER
+\\lrtriangle                <char-0x025FF>               " ◿          : LOWER RIGHT TRIANGLE
+\\lrtriangle<Tab>           <char-0x025FF>               " ◿          : LOWER RIGHT TRIANGLE
+\\lrtrianglee               \\lrtrianglee                "            : (Incomplete sequence)
+\\lrtriangleeq              <char-0x029E1>               " ⧡          : INCREASES AS
+\\ls                        \\ls                         "            : (Incomplete sequence)
+\\lsime                     <char-0x02A8D>               " ⪍          : LESS-THAN ABOVE SIMILAR OR EQUAL
+\\lsimg                     <char-0x02A8F>               " ⪏          : LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN
+\\lsqhook                   <char-0x02ACD>               " ⫍          : SQUARE LEFT OPEN BOX OPERATOR
+\\lt                        \\lt                         "            : (Incomplete sequence)
+\\ltcc                      <char-0x02AA6>               " ⪦          : LESS-THAN CLOSED BY CURVE
+\\ltcir                     <char-0x02A79>               " ⩹          : LESS-THAN WITH CIRCLE INSIDE
+\\ltimes                    <char-0x022C9>               " ⋉          : LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
+\\ltlmr                     <char-0x00271>               " ɱ          : LATIN SMALL LETTER M WITH HOOK / LATIN SMALL LETTER M HOOK
+\\ltln                      <char-0x00272>               " ɲ          : LATIN SMALL LETTER N WITH LEFT HOOK / LATIN SMALL LETTER N HOOK
+\\ltphi                     <char-0x00278>               " ɸ          : LATIN SMALL LETTER PHI
+\\ltquest                   <char-0x02A7B>               " ⩻          : LESS-THAN WITH QUESTION MARK ABOVE
+\\lv                        \\lv                         "            : (Incomplete sequence)
+\\lvboxline                 <char-0x023B8>               " ⎸          : LEFT VERTICAL BOX LINE
+\\lvertneqq                 <char-0x02268><char-0x0FE00> " ≨︀         : LESS-THAN BUT NOT EQUAL TO / LESS THAN BUT NOT EQUAL TO + VARIATION SELECTOR-1
+\\male                      <char-0x02642>               " ♂          : MALE SIGN
+\\maltese                   <char-0x02720>               " ✠          : MALTESE CROSS
+\\mapsdown                  <char-0x021A7>               " ↧          : DOWNWARDS ARROW FROM BAR / DOWN ARROW FROM BAR
+\\mapsfrom                  <char-0x021A4>               " ↤          : LEFTWARDS ARROW FROM BAR / LEFT ARROW FROM BAR
+\\mapsto                    <char-0x021A6>               " ↦          : RIGHTWARDS ARROW FROM BAR / RIGHT ARROW FROM BAR
+\\mapsup                    <char-0x021A5>               " ↥          : UPWARDS ARROW FROM BAR / UP ARROW FROM BAR
+\\mars                      <char-0x02642>               " ♂          : MALE SIGN
+\\mdblkcircle               <char-0x026AB>               " ⚫          : MEDIUM BLACK CIRCLE
+\\mdblkdiamond              <char-0x02B25>               " ⬥          : BLACK MEDIUM DIAMOND
+\\mdblklozenge              <char-0x02B27>               " ⬧          : BLACK MEDIUM LOZENGE
+\\mdblksquare               <char-0x025FC>               " ◼          : BLACK MEDIUM SQUARE
+\\mdlgblkcircle             <char-0x025CF>               " ●          : BLACK CIRCLE
+\\mdlgblkdiamond            <char-0x025C6>               " ◆          : BLACK DIAMOND
+\\mdlgwhtdiamond            <char-0x025C7>               " ◇          : WHITE DIAMOND
+\\mdsmblksquare             <char-0x025FE>               " ◾          : BLACK MEDIUM SMALL SQUARE
+\\mdsmwhtcircle             <char-0x026AC>               " ⚬          : MEDIUM SMALL WHITE CIRCLE
+\\mdsmwhtsquare             <char-0x025FD>               " ◽          : WHITE MEDIUM SMALL SQUARE
+\\mdwhtcircle               <char-0x026AA>               " ⚪          : MEDIUM WHITE CIRCLE
+\\mdwhtdiamond              <char-0x02B26>               " ⬦          : WHITE MEDIUM DIAMOND
+\\mdwhtlozenge              <char-0x02B28>               " ⬨          : WHITE MEDIUM LOZENGE
+\\mdwhtsquare               <char-0x025FB>               " ◻          : WHITE MEDIUM SQUARE
+\\measangledltosw           <char-0x029AF>               " ⦯          : MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
+\\measangledrtose           <char-0x029AE>               " ⦮          : MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
+\\measangleldtosw           <char-0x029AB>               " ⦫          : MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
+\\measanglelutonw           <char-0x029A9>               " ⦩          : MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
+\\measanglerdtose           <char-0x029AA>               " ⦪          : MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
+\\measanglerutone           <char-0x029A8>               " ⦨          : MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
+\\measangleultonw           <char-0x029AD>               " ⦭          : MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
+\\measangleurtone           <char-0x029AC>               " ⦬          : MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
+\\measeq                    <char-0x0225E>               " ≞          : MEASURED BY
+\\measuredangle             <char-0x02221>               " ∡          : MEASURED ANGLE
+\\measuredangle<Tab>        <char-0x02221>               " ∡          : MEASURED ANGLE
+\\measuredanglel            \\measuredanglel             "            : (Incomplete sequence)
+\\measuredangleleft         <char-0x0299B>               " ⦛          : MEASURED ANGLE OPENING LEFT
+\\medblackstar              <char-0x02B51>               " ⭑          : BLACK SMALL STAR
+\\medwhitestar              <char-0x02B50>               " ⭐          : WHITE MEDIUM STAR
+\\mercury                   <char-0x0263F>               " ☿          : MERCURY
+\\mho                       <char-0x02127>               " ℧          : INVERTED OHM SIGN / MHO
+\\mid                       <char-0x02223>               " ∣          : DIVIDES
+\\mid<Tab>                  <char-0x02223>               " ∣          : DIVIDES
+\\midb                      \\midb                       "            : (Incomplete sequence)
+\\midbarvee                 <char-0x02A5D>               " ⩝          : LOGICAL OR WITH HORIZONTAL DASH
+\\midbarwedge               <char-0x02A5C>               " ⩜          : LOGICAL AND WITH HORIZONTAL DASH
+\\minhat                    <char-0x02A5F>               " ⩟          : LOGICAL AND WITH UNDERBAR
+\\minus                     <char-0x02212>               " −          : MINUS SIGN
+\\minus<Tab>                <char-0x02212>               " −          : MINUS SIGN
+\\minusd                    \\minusd                     "            : (Incomplete sequence)
+\\minusdot                  <char-0x02A2A>               " ⨪          : MINUS SIGN WITH DOT BELOW
+\\minusf                    \\minusf                     "            : (Incomplete sequence)
+\\minusfdots                <char-0x02A2B>               " ⨫          : MINUS SIGN WITH FALLING DOTS
+\\minusr                    \\minusr                     "            : (Incomplete sequence)
+\\minusrdots                <char-0x02A2C>               " ⨬          : MINUS SIGN WITH RISING DOTS
+\\mlcp                      <char-0x02ADB>               " ⫛          : TRANSVERSAL INTERSECTION
+\\models                    <char-0x022A7>               " ⊧          : MODELS
+\\modtwosum                 <char-0x02A0A>               " ⨊          : MODULO TWO SUM
+\\mp                        <char-0x02213>               " ∓          : MINUS-OR-PLUS SIGN
+\\mu                        <char-0x003BC>               " μ          : GREEK SMALL LETTER MU
+\\mu<Tab>                   <char-0x003BC>               " μ          : GREEK SMALL LETTER MU
+\\mul                       \\mul                        "            : (Incomplete sequence)
+\\multimap                  <char-0x022B8>               " ⊸          : MULTIMAP
+\\nBumpeq                   <char-0x0224E><char-0x00338> " ≎̸         : GEOMETRICALLY EQUIVALENT TO + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\nHdownarrow               <char-0x021DF>               " ⇟          : DOWNWARDS ARROW WITH DOUBLE STROKE / DOWN ARROW WITH DOUBLE STROKE
+\\nHuparrow                 <char-0x021DE>               " ⇞          : UPWARDS ARROW WITH DOUBLE STROKE / UP ARROW WITH DOUBLE STROKE
+\\nLeftarrow                <char-0x021CD>               " ⇍          : LEFTWARDS DOUBLE ARROW WITH STROKE / LEFT DOUBLE ARROW WITH STROKE
+\\nLeftrightarrow           <char-0x021CE>               " ⇎          : LEFT RIGHT DOUBLE ARROW WITH STROKE
+\\nRightarrow               <char-0x021CF>               " ⇏          : RIGHTWARDS DOUBLE ARROW WITH STROKE / RIGHT DOUBLE ARROW WITH STROKE
+\\nVDash                    <char-0x022AF>               " ⊯          : NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+\\nVdash                    <char-0x022AE>               " ⊮          : DOES NOT FORCE
+\\nVleftarrow               <char-0x021FA>               " ⇺          : LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE
+\\nVleftarrow<Tab>          <char-0x021FA>               " ⇺          : LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE
+\\nVleftarrowt              \\nVleftarrowt               "            : (Incomplete sequence)
+\\nVleftarrowtail           <char-0x02B3A>               " ⬺          : LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+\\nVleftrightarrow          <char-0x021FC>               " ⇼          : LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE
+\\nVrightarrow              <char-0x021FB>               " ⇻          : RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE
+\\nVrightarrow<Tab>         <char-0x021FB>               " ⇻          : RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE
+\\nVrightarrowt             \\nVrightarrowt              "            : (Incomplete sequence)
+\\nVrightarrowtail          <char-0x02915>               " ⤕          : RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+\\nVtwoheadleftarrow        <char-0x02B35>               " ⬵          : LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
+\\nVtwoheadleftarrow<Tab>   <char-0x02B35>               " ⬵          : LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
+\\nVtwoheadleftarrowt       \\nVtwoheadleftarrowt        "            : (Incomplete sequence)
+\\nVtwoheadleftarrowtail    <char-0x02B3D>               " ⬽          : LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+\\nVtwoheadrightarrow       <char-0x02901>               " ⤁          : RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
+\\nVtwoheadrightarrow<Tab>  <char-0x02901>               " ⤁          : RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
+\\nVtwoheadrightarrowt      \\nVtwoheadrightarrowt       "            : (Incomplete sequence)
+\\nVtwoheadrightarrowtail   <char-0x02918>               " ⤘          : RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+\\nabla                     <char-0x02207>               " ∇          : NABLA
+\\napprox                   <char-0x02249>               " ≉          : NOT ALMOST EQUAL TO
+\\nasymp                    <char-0x0226D>               " ≭          : NOT EQUIVALENT TO
+\\natural                   <char-0x0266E>               " ♮          : MUSIC NATURAL SIGN / NATURAL
+\\nbumpeq                   <char-0x0224F><char-0x00338> " ≏̸         : DIFFERENCE BETWEEN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\ncong                     <char-0x02247>               " ≇          : NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+\\ne                        <char-0x02260>               " ≠          : NOT EQUAL TO
+\\ne<Tab>                   <char-0x02260>               " ≠          : NOT EQUAL TO
+\\nea                       \\nea                        "            : (Incomplete sequence)
+\\nearrow                   <char-0x02197>               " ↗          : NORTH EAST ARROW / UPPER RIGHT ARROW
+\\neg                       <char-0x000AC>               " ¬          : NOT SIGN
+\\neo                       \\neo                        "            : (Incomplete sequence)
+\\neovnwarrow               <char-0x02931>               " ⤱          : NORTH EAST ARROW CROSSING NORTH WEST ARROW
+\\neovsearrow               <char-0x0292E>               " ⤮          : NORTH EAST ARROW CROSSING SOUTH EAST ARROW
+\\nep                       \\nep                        "            : (Incomplete sequence)
+\\neptune                   <char-0x02646>               " ♆          : NEPTUNE
+\\neq                       \\neq                        "            : (Incomplete sequence)
+\\neqsim                    <char-0x02242><char-0x00338> " ≂̸         : MINUS TILDE + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\nequiv                    <char-0x02262>               " ≢          : NOT IDENTICAL TO
+\\neu                       \\neu                        "            : (Incomplete sequence)
+\\neuter                    <char-0x026B2>               " ⚲          : NEUTER
+\\nex                       \\nex                        "            : (Incomplete sequence)
+\\nexists                   <char-0x02204>               " ∄          : THERE DOES NOT EXIST
+\\ng                        <char-0x0014B>               " ŋ          : LATIN SMALL LETTER ENG
+\\ng<Tab>                   <char-0x0014B>               " ŋ          : LATIN SMALL LETTER ENG
+\\nge                       \\nge                        "            : (Incomplete sequence)
+\\ngeq                      <char-0x02271>               " ≱          : NEITHER GREATER-THAN NOR EQUAL TO / NEITHER GREATER THAN NOR EQUAL TO
+\\ngeq<Tab>                 <char-0x02271>               " ≱          : NEITHER GREATER-THAN NOR EQUAL TO / NEITHER GREATER THAN NOR EQUAL TO
+\\ngeqs                     \\ngeqs                      "            : (Incomplete sequence)
+\\ngeqslant                 <char-0x02A7E><char-0x00338> " ⩾̸         : GREATER-THAN OR SLANTED EQUAL TO + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\ngt                       \\ngt                        "            : (Incomplete sequence)
+\\ngtr                      <char-0x0226F>               " ≯          : NOT GREATER-THAN / NOT GREATER THAN
+\\ngtr<Tab>                 <char-0x0226F>               " ≯          : NOT GREATER-THAN / NOT GREATER THAN
+\\ngtrs                     \\ngtrs                      "            : (Incomplete sequence)
+\\ngtrsim                   <char-0x02275>               " ≵          : NEITHER GREATER-THAN NOR EQUIVALENT TO / NEITHER GREATER THAN NOR EQUIVALENT TO
+\\ni                        <char-0x0220B>               " ∋          : CONTAINS AS MEMBER
+\\ni<Tab>                   <char-0x0220B>               " ∋          : CONTAINS AS MEMBER
+\\nio                       \\nio                        "            : (Incomplete sequence)
+\\niobar                    <char-0x022FE>               " ⋾          : SMALL CONTAINS WITH OVERBAR
+\\nis                       <char-0x022FC>               " ⋼          : SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+\\nis<Tab>                  <char-0x022FC>               " ⋼          : SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+\\nisd                      <char-0x022FA>               " ⋺          : CONTAINS WITH LONG HORIZONTAL STROKE
+\\nleftarrow                <char-0x0219A>               " ↚          : LEFTWARDS ARROW WITH STROKE / LEFT ARROW WITH STROKE
+\\nleftrightarrow           <char-0x021AE>               " ↮          : LEFT RIGHT ARROW WITH STROKE
+\\nleq                      <char-0x02270>               " ≰          : NEITHER LESS-THAN NOR EQUAL TO / NEITHER LESS THAN NOR EQUAL TO
+\\nleq<Tab>                 <char-0x02270>               " ≰          : NEITHER LESS-THAN NOR EQUAL TO / NEITHER LESS THAN NOR EQUAL TO
+\\nleqs                     \\nleqs                      "            : (Incomplete sequence)
+\\nleqslant                 <char-0x02A7D><char-0x00338> " ⩽̸         : LESS-THAN OR SLANTED EQUAL TO + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\nless                     <char-0x0226E>               " ≮          : NOT LESS-THAN / NOT LESS THAN
+\\nless<Tab>                <char-0x0226E>               " ≮          : NOT LESS-THAN / NOT LESS THAN
+\\nlesss                    \\nlesss                     "            : (Incomplete sequence)
+\\nlesssim                  <char-0x02274>               " ≴          : NEITHER LESS-THAN NOR EQUIVALENT TO / NEITHER LESS THAN NOR EQUIVALENT TO
+\\nmid                      <char-0x02224>               " ∤          : DOES NOT DIVIDE
+\\nni                       <char-0x0220C>               " ∌          : DOES NOT CONTAIN AS MEMBER
+\\nolinebreak               <char-0x02060>               " ⁠          : WORD JOINER
+\\not                       <char-0x00338>               " ◌̸         : COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\not<Tab>                  <char-0x00338>               " ◌̸         : COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\notb                      \\notb                       "            : (Incomplete sequence)
+\\notbackslash              <char-0x02340>               " ⍀          : APL FUNCTIONAL SYMBOL BACKSLASH BAR
+\\notg                      \\notg                       "            : (Incomplete sequence)
+\\notgreaterless            <char-0x02279>               " ≹          : NEITHER GREATER-THAN NOR LESS-THAN / NEITHER GREATER THAN NOR LESS THAN
+\\noti                      \\noti                       "            : (Incomplete sequence)
+\\notin                     <char-0x02209>               " ∉          : NOT AN ELEMENT OF
+\\notl                      \\notl                       "            : (Incomplete sequence)
+\\notlessgreater            <char-0x02278>               " ≸          : NEITHER LESS-THAN NOR GREATER-THAN / NEITHER LESS THAN NOR GREATER THAN
+\\nots                      \\nots                       "            : (Incomplete sequence)
+\\notslash                  <char-0x0233F>               " ⌿          : APL FUNCTIONAL SYMBOL SLASH BAR
+\\nparallel                 <char-0x02226>               " ∦          : NOT PARALLEL TO
+\\npolint                   <char-0x02A14>               " ⨔          : LINE INTEGRATION NOT INCLUDING THE POLE
+\\nprec                     <char-0x02280>               " ⊀          : DOES NOT PRECEDE
+\\nprec<Tab>                <char-0x02280>               " ⊀          : DOES NOT PRECEDE
+\\nprecc                    \\nprecc                     "            : (Incomplete sequence)
+\\npreccurlyeq              <char-0x022E0>               " ⋠          : DOES NOT PRECEDE OR EQUAL
+\\nprece                    \\nprece                     "            : (Incomplete sequence)
+\\npreceq                   <char-0x02AAF><char-0x00338> " ⪯̸         : PRECEDES ABOVE SINGLE-LINE EQUALS SIGN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\nprecs                    \\nprecs                     "            : (Incomplete sequence)
+\\nprecsim                  <char-0x0227E><char-0x00338> " ≾̸         : PRECEDES OR EQUIVALENT TO + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\nrightarrow               <char-0x0219B>               " ↛          : RIGHTWARDS ARROW WITH STROKE / RIGHT ARROW WITH STROKE
+\\nrleg                     <char-0x0019E>               " ƞ          : LATIN SMALL LETTER N WITH LONG RIGHT LEG
+\\nsim                      <char-0x02241>               " ≁          : NOT TILDE
+\\nsim<Tab>                 <char-0x02241>               " ≁          : NOT TILDE
+\\nsime                     <char-0x02244>               " ≄          : NOT ASYMPTOTICALLY EQUAL TO
+\\nsqsubseteq               <char-0x022E2>               " ⋢          : NOT SQUARE IMAGE OF OR EQUAL TO
+\\nsqsupseteq               <char-0x022E3>               " ⋣          : NOT SQUARE ORIGINAL OF OR EQUAL TO
+\\nsubset                   <char-0x02284>               " ⊄          : NOT A SUBSET OF
+\\nsubset<Tab>              <char-0x02284>               " ⊄          : NOT A SUBSET OF
+\\nsubsete                  \\nsubsete                   "            : (Incomplete sequence)
+\\nsubseteq                 <char-0x02288>               " ⊈          : NEITHER A SUBSET OF NOR EQUAL TO
+\\nsubseteq<Tab>            <char-0x02288>               " ⊈          : NEITHER A SUBSET OF NOR EQUAL TO
+\\nsubseteqq                <char-0x02AC5><char-0x00338> " ⫅̸         : SUBSET OF ABOVE EQUALS SIGN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\nsucc                     <char-0x02281>               " ⊁          : DOES NOT SUCCEED
+\\nsucc<Tab>                <char-0x02281>               " ⊁          : DOES NOT SUCCEED
+\\nsuccc                    \\nsuccc                     "            : (Incomplete sequence)
+\\nsucccurlyeq              <char-0x022E1>               " ⋡          : DOES NOT SUCCEED OR EQUAL
+\\nsucce                    \\nsucce                     "            : (Incomplete sequence)
+\\nsucceq                   <char-0x02AB0><char-0x00338> " ⪰̸         : SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\nsuccs                    \\nsuccs                     "            : (Incomplete sequence)
+\\nsuccsim                  <char-0x0227F><char-0x00338> " ≿̸         : SUCCEEDS OR EQUIVALENT TO + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\nsupset                   <char-0x02285>               " ⊅          : NOT A SUPERSET OF
+\\nsupset<Tab>              <char-0x02285>               " ⊅          : NOT A SUPERSET OF
+\\nsupsete                  \\nsupsete                   "            : (Incomplete sequence)
+\\nsupseteq                 <char-0x02289>               " ⊉          : NEITHER A SUPERSET OF NOR EQUAL TO
+\\nsupseteq<Tab>            <char-0x02289>               " ⊉          : NEITHER A SUPERSET OF NOR EQUAL TO
+\\nsupseteqq                <char-0x02AC6><char-0x00338> " ⫆̸         : SUPERSET OF ABOVE EQUALS SIGN + COMBINING LONG SOLIDUS OVERLAY / NON-SPACING LONG SLASH OVERLAY
+\\ntriangleleft             <char-0x022EA>               " ⋪          : NOT NORMAL SUBGROUP OF
+\\ntriangleleft<Tab>        <char-0x022EA>               " ⋪          : NOT NORMAL SUBGROUP OF
+\\ntrianglelefte            \\ntrianglelefte             "            : (Incomplete sequence)
+\\ntrianglelefteq           <char-0x022EC>               " ⋬          : NOT NORMAL SUBGROUP OF OR EQUAL TO
+\\ntriangleright            <char-0x022EB>               " ⋫          : DOES NOT CONTAIN AS NORMAL SUBGROUP
+\\ntriangleright<Tab>       <char-0x022EB>               " ⋫          : DOES NOT CONTAIN AS NORMAL SUBGROUP
+\\ntrianglerighte           \\ntrianglerighte            "            : (Incomplete sequence)
+\\ntrianglerighteq          <char-0x022ED>               " ⋭          : DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+\\nu                        <char-0x003BD>               " ν          : GREEK SMALL LETTER NU
+\\nu<Tab>                   <char-0x003BD>               " ν          : GREEK SMALL LETTER NU
+\\num                       \\num                        "            : (Incomplete sequence)
+\\numero                    <char-0x02116>               " №          : NUMERO SIGN / NUMERO
+\\nvDash                    <char-0x022AD>               " ⊭          : NOT TRUE
+\\nvLeftarrow               <char-0x02902>               " ⤂          : LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE
+\\nvLeftrightarrow          <char-0x02904>               " ⤄          : LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE
+\\nvRightarrow              <char-0x02903>               " ⤃          : RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE
+\\nvdash                    <char-0x022AC>               " ⊬          : DOES NOT PROVE
+\\nvleftarrow               <char-0x021F7>               " ⇷          : LEFTWARDS ARROW WITH VERTICAL STROKE
+\\nvleftarrow<Tab>          <char-0x021F7>               " ⇷          : LEFTWARDS ARROW WITH VERTICAL STROKE
+\\nvleftarrowt              \\nvleftarrowt               "            : (Incomplete sequence)
+\\nvleftarrowtail           <char-0x02B39>               " ⬹          : LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE
+\\nvleftrightarrow          <char-0x021F9>               " ⇹          : LEFT RIGHT ARROW WITH VERTICAL STROKE
+\\nvrightarrow              <char-0x021F8>               " ⇸          : RIGHTWARDS ARROW WITH VERTICAL STROKE
+\\nvrightarrow<Tab>         <char-0x021F8>               " ⇸          : RIGHTWARDS ARROW WITH VERTICAL STROKE
+\\nvrightarrowt             \\nvrightarrowt              "            : (Incomplete sequence)
+\\nvrightarrowtail          <char-0x02914>               " ⤔          : RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE
+\\nvtwoheadleftarrow        <char-0x02B34>               " ⬴          : LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
+\\nvtwoheadleftarrow<Tab>   <char-0x02B34>               " ⬴          : LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
+\\nvtwoheadleftarrowt       \\nvtwoheadleftarrowt        "            : (Incomplete sequence)
+\\nvtwoheadleftarrowtail    <char-0x02B3C>               " ⬼          : LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE
+\\nvtwoheadrightarrow       <char-0x02900>               " ⤀          : RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
+\\nvtwoheadrightarrow<Tab>  <char-0x02900>               " ⤀          : RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
+\\nvtwoheadrightarrowt      \\nvtwoheadrightarrowt       "            : (Incomplete sequence)
+\\nvtwoheadrightarrowtail   <char-0x02917>               " ⤗          : RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE
+\\nwarrow                   <char-0x02196>               " ↖          : NORTH WEST ARROW / UPPER LEFT ARROW
+\\nwovnearrow               <char-0x02932>               " ⤲          : NORTH WEST ARROW CROSSING NORTH EAST ARROW
+\\o                         <char-0x000F8>               " ø          : LATIN SMALL LETTER O WITH STROKE / LATIN SMALL LETTER O SLASH
+\\o<Tab>                    <char-0x000F8>               " ø          : LATIN SMALL LETTER O WITH STROKE / LATIN SMALL LETTER O SLASH
+\\ob                        \\ob                         "            : (Incomplete sequence)
+\\obar                      <char-0x0233D>               " ⌽          : APL FUNCTIONAL SYMBOL CIRCLE STILE
+\\obslash                   <char-0x029B8>               " ⦸          : CIRCLED REVERSE SOLIDUS
+\\oc                        \\oc                         "            : (Incomplete sequence)
+\\ocirc                     <char-0x0030A>               " ◌̊         : COMBINING RING ABOVE / NON-SPACING RING ABOVE
+\\ocommatopright            <char-0x00315>               " ◌̕         : COMBINING COMMA ABOVE RIGHT / NON-SPACING COMMA ABOVE RIGHT
+\\od                        \\od                         "            : (Incomplete sequence)
+\\odiv                      <char-0x02A38>               " ⨸          : CIRCLED DIVISION SIGN
+\\odot                      <char-0x02299>               " ⊙          : CIRCLED DOT OPERATOR
+\\odot<Tab>                 <char-0x02299>               " ⊙          : CIRCLED DOT OPERATOR
+\\odots                     \\odots                      "            : (Incomplete sequence)
+\\odotslashdot              <char-0x029BC>               " ⦼          : CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN
+\\oe                        <char-0x00153>               " œ          : LATIN SMALL LIGATURE OE / LATIN SMALL LETTER O E
+\\og                        \\og                         "            : (Incomplete sequence)
+\\ogreaterthan              <char-0x029C1>               " ⧁          : CIRCLED GREATER-THAN
+\\oh                        \\oh                         "            : (Incomplete sequence)
+\\ohm                       <char-0x02126>               " Ω          : OHM SIGN / OHM
+\\oi                        \\oi                         "            : (Incomplete sequence)
+\\oiiint                    <char-0x02230>               " ∰          : VOLUME INTEGRAL
+\\oiint                     <char-0x0222F>               " ∯          : SURFACE INTEGRAL
+\\oint                      <char-0x0222E>               " ∮          : CONTOUR INTEGRAL
+\\oint<Tab>                 <char-0x0222E>               " ∮          : CONTOUR INTEGRAL
+\\ointc                     \\ointc                      "            : (Incomplete sequence)
+\\ointctrclockwise          <char-0x02233>               " ∳          : ANTICLOCKWISE CONTOUR INTEGRAL
+\\ol                        \\ol                         "            : (Incomplete sequence)
+\\olessthan                 <char-0x029C0>               " ⧀          : CIRCLED LESS-THAN
+\\om                        \\om                         "            : (Incomplete sequence)
+\\omega                     <char-0x003C9>               " ω          : GREEK SMALL LETTER OMEGA
+\\ominus                    <char-0x02296>               " ⊖          : CIRCLED MINUS
+\\op                        \\op                         "            : (Incomplete sequence)
+\\openbracketleft           <char-0x027E6>               " ⟦          : MATHEMATICAL LEFT WHITE SQUARE BRACKET
+\\openbracketright          <char-0x027E7>               " ⟧          : MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+\\openo                     <char-0x00254>               " ɔ          : LATIN SMALL LETTER OPEN O
+\\oplus                     <char-0x02295>               " ⊕          : CIRCLED PLUS
+\\oplus<Tab>                <char-0x02295>               " ⊕          : CIRCLED PLUS
+\\oplusl                    \\oplusl                     "            : (Incomplete sequence)
+\\opluslhrim                <char-0x02A2D>               " ⨭          : PLUS SIGN IN LEFT HALF CIRCLE
+\\oplusr                    \\oplusr                     "            : (Incomplete sequence)
+\\oplusrhrim                <char-0x02A2E>               " ⨮          : PLUS SIGN IN RIGHT HALF CIRCLE
+\\or                        \\or                         "            : (Incomplete sequence)
+\\ordfeminine               <char-0x000AA>               " ª          : FEMININE ORDINAL INDICATOR
+\\ordmasculine              <char-0x000BA>               " º          : MASCULINE ORDINAL INDICATOR
+\\original                  <char-0x022B6>               " ⊶          : ORIGINAL OF
+\\os                        \\os                         "            : (Incomplete sequence)
+\\oslash                    <char-0x02298>               " ⊘          : CIRCLED DIVISION SLASH
+\\ot                        \\ot                         "            : (Incomplete sequence)
+\\otimes                    <char-0x02297>               " ⊗          : CIRCLED TIMES
+\\otimes<Tab>               <char-0x02297>               " ⊗          : CIRCLED TIMES
+\\otimesh                   \\otimesh                    "            : (Incomplete sequence)
+\\otimeshat                 <char-0x02A36>               " ⨶          : CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT
+\\otimesl                   \\otimesl                    "            : (Incomplete sequence)
+\\otimeslhrim               <char-0x02A34>               " ⨴          : MULTIPLICATION SIGN IN LEFT HALF CIRCLE
+\\otimesr                   \\otimesr                    "            : (Incomplete sequence)
+\\otimesrhrim               <char-0x02A35>               " ⨵          : MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
+\\oturnedcomma              <char-0x00312>               " ◌̒         : COMBINING TURNED COMMA ABOVE / NON-SPACING TURNED COMMA ABOVE
+\\ov                        \\ov                         "            : (Incomplete sequence)
+\\overbar                   <char-0x00305>               " ◌̅         : COMBINING OVERLINE / NON-SPACING OVERSCORE
+\\overbrace                 <char-0x023DE>               " ⏞          : TOP CURLY BRACKET
+\\overbracket               <char-0x023B4>               " ⎴          : TOP SQUARE BRACKET
+\\overleftarrow             <char-0x020D6>               " ◌⃖         : COMBINING LEFT ARROW ABOVE / NON-SPACING LEFT ARROW ABOVE
+\\overleftrightarrow        <char-0x020E1>               " ◌⃡         : COMBINING LEFT RIGHT ARROW ABOVE / NON-SPACING LEFT RIGHT ARROW ABOVE
+\\ovhook                    <char-0x00309>               " ◌̉         : COMBINING HOOK ABOVE / NON-SPACING HOOK ABOVE
+\\palh                      <char-0x00321>               " ◌̡         : COMBINING PALATALIZED HOOK BELOW / NON-SPACING PALATALIZED HOOK BELOW
+\\parallel                  <char-0x02225>               " ∥          : PARALLEL TO
+\\parallel<Tab>             <char-0x02225>               " ∥          : PARALLEL TO
+\\parallelo                 \\parallelo                  "            : (Incomplete sequence)
+\\parallelogram             <char-0x025B1>               " ▱          : WHITE PARALLELOGRAM
+\\parallelogram<Tab>        <char-0x025B1>               " ▱          : WHITE PARALLELOGRAM
+\\parallelogramb            \\parallelogramb             "            : (Incomplete sequence)
+\\parallelogramblack        <char-0x025B0>               " ▰          : BLACK PARALLELOGRAM
+\\partial                   <char-0x02202>               " ∂          : PARTIAL DIFFERENTIAL
+\\partial<Tab>              <char-0x02202>               " ∂          : PARTIAL DIFFERENTIAL
+\\partialm                  \\partialm                   "            : (Incomplete sequence)
+\\partialmeetcontraction    <char-0x02AA3>               " ⪣          : DOUBLE NESTED LESS-THAN WITH UNDERBAR
+\\pbgam                     <char-0x00264>               " ɤ          : LATIN SMALL LETTER RAMS HORN / LATIN SMALL LETTER BABY GAMMA
+\\pentagon                  <char-0x02B20>               " ⬠          : WHITE PENTAGON
+\\pentagon<Tab>             <char-0x02B20>               " ⬠          : WHITE PENTAGON
+\\pentagonb                 \\pentagonb                  "            : (Incomplete sequence)
+\\pentagonblack             <char-0x02B1F>               " ⬟          : BLACK PENTAGON
+\\perp                      <char-0x027C2>               " ⟂          : PERPENDICULAR
+\\perspcorrespond           <char-0x02A5E>               " ⩞          : LOGICAL AND WITH DOUBLE OVERBAR
+\\pertenthousand            <char-0x02031>               " ‱          : PER TEN THOUSAND SIGN
+\\perthousand               <char-0x02030>               " ‰          : PER MILLE SIGN
+\\pes                       <char-0x020A7>               " ₧          : PESETA SIGN
+\\pgamma                    <char-0x00263>               " ɣ          : LATIN SMALL LETTER GAMMA
+\\phi                       <char-0x003D5>               " ϕ          : GREEK PHI SYMBOL / GREEK SMALL LETTER SCRIPT PHI
+\\pi                        <char-0x003C0>               " π          : GREEK SMALL LETTER PI
+\\pi<Tab>                   <char-0x003C0>               " π          : GREEK SMALL LETTER PI
+\\pis                       \\pis                        "            : (Incomplete sequence)
+\\pisces                    <char-0x02653>               " ♓          : PISCES
+\\pit                       \\pit                        "            : (Incomplete sequence)
+\\pitchfork                 <char-0x022D4>               " ⋔          : PITCHFORK
+\\planck                    <char-0x0210E>               " ℎ          : PLANCK CONSTANT
+\\plusdot                   <char-0x02A25>               " ⨥          : PLUS SIGN WITH DOT BELOW
+\\pluseqq                   <char-0x02A72>               " ⩲          : PLUS SIGN ABOVE EQUALS SIGN
+\\plushat                   <char-0x02A23>               " ⨣          : PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE
+\\plussim                   <char-0x02A26>               " ⨦          : PLUS SIGN WITH TILDE BELOW
+\\plussubtwo                <char-0x02A27>               " ⨧          : PLUS SIGN WITH SUBSCRIPT TWO
+\\plustrif                  <char-0x02A28>               " ⨨          : PLUS SIGN WITH BLACK TRIANGLE
+\\pluto                     <char-0x02647>               " ♇          : PLUTO
+\\pm                        <char-0x000B1>               " ±          : PLUS-MINUS SIGN / PLUS-OR-MINUS SIGN
+\\pointint                  <char-0x02A15>               " ⨕          : INTEGRAL AROUND A POINT OPERATOR
+\\postalmark                <char-0x03012>               " 〒          : POSTAL MARK
+\\pppprime                  <char-0x02057>               " ⁗          : QUADRUPLE PRIME
+\\ppprime                   <char-0x02034>               " ‴          : TRIPLE PRIME
+\\pprime                    <char-0x02033>               " ″          : DOUBLE PRIME
+\\prec                      <char-0x0227A>               " ≺          : PRECEDES
+\\prec<Tab>                 <char-0x0227A>               " ≺          : PRECEDES
+\\preca                     \\preca                      "            : (Incomplete sequence)
+\\precapprox                <char-0x02AB7>               " ⪷          : PRECEDES ABOVE ALMOST EQUAL TO
+\\precc                     \\precc                      "            : (Incomplete sequence)
+\\preccurlyeq               <char-0x0227C>               " ≼          : PRECEDES OR EQUAL TO
+\\prece                     \\prece                      "            : (Incomplete sequence)
+\\preceq                    <char-0x02AAF>               " ⪯          : PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
+\\preceq<Tab>               <char-0x02AAF>               " ⪯          : PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
+\\preceqq                   <char-0x02AB3>               " ⪳          : PRECEDES ABOVE EQUALS SIGN
+\\precn                     \\precn                      "            : (Incomplete sequence)
+\\precnapprox               <char-0x02AB9>               " ⪹          : PRECEDES ABOVE NOT ALMOST EQUAL TO
+\\precneq                   <char-0x02AB1>               " ⪱          : PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO
+\\precneq<Tab>              <char-0x02AB1>               " ⪱          : PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO
+\\precneqq                  <char-0x02AB5>               " ⪵          : PRECEDES ABOVE NOT EQUAL TO
+\\precnsim                  <char-0x022E8>               " ⋨          : PRECEDES BUT NOT EQUIVALENT TO
+\\precs                     \\precs                      "            : (Incomplete sequence)
+\\precsim                   <char-0x0227E>               " ≾          : PRECEDES OR EQUIVALENT TO
+\\prime                     <char-0x02032>               " ′          : PRIME
+\\prod                      <char-0x0220F>               " ∏          : N-ARY PRODUCT
+\\profline                  <char-0x02312>               " ⌒          : ARC
+\\profsurf                  <char-0x02313>               " ⌓          : SEGMENT
+\\propto                    <char-0x0221D>               " ∝          : PROPORTIONAL TO
+\\prurel                    <char-0x022B0>               " ⊰          : PRECEDES UNDER RELATION
+\\pscrv                     <char-0x0028B>               " ʋ          : LATIN SMALL LETTER V WITH HOOK / LATIN SMALL LETTER SCRIPT V
+\\psi                       <char-0x003C8>               " ψ          : GREEK SMALL LETTER PSI
+\\pupsil                    <char-0x0028A>               " ʊ          : LATIN SMALL LETTER UPSILON
+\\quad                      <char-0x02003>               "            : EM SPACE
+\\quarternote               <char-0x02669>               " ♩          : QUARTER NOTE
+\\questeq                   <char-0x0225F>               " ≟          : QUESTIONED EQUAL TO
+\\questiondown              <char-0x000BF>               " ¿          : INVERTED QUESTION MARK
+\\rLarr                     <char-0x02944>               " ⥄          : SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW
+\\rais                      <char-0x002D4>               " ˔          : MODIFIER LETTER UP TACK
+\\rangle                    <char-0x027E9>               " ⟩          : MATHEMATICAL RIGHT ANGLE BRACKET
+\\rarrx                     <char-0x02947>               " ⥇          : RIGHTWARDS ARROW THROUGH X
+\\rasp                      <char-0x002BC>               " ʼ          : MODIFIER LETTER APOSTROPHE
+\\rceil                     <char-0x02309>               " ⌉          : RIGHT CEILING
+\\rdiagovfdiag              <char-0x0292B>               " ⤫          : RISING DIAGONAL CROSSING FALLING DIAGONAL
+\\rdiagovsearrow            <char-0x02930>               " ⤰          : RISING DIAGONAL CROSSING SOUTH EAST ARROW
+\\rdq                       <char-0x0201D>               " ”          : RIGHT DOUBLE QUOTATION MARK / DOUBLE COMMA QUOTATION MARK
+\\reapos                    <char-0x0201B>               " ‛          : SINGLE HIGH-REVERSED-9 QUOTATION MARK / SINGLE REVERSED COMMA QUOTATION MARK
+\\recorder                  <char-0x02315>               " ⌕          : TELEPHONE RECORDER
+\\reglst                    <char-0x00295>               " ʕ          : LATIN LETTER PHARYNGEAL VOICED FRICATIVE / LATIN LETTER REVERSED GLOTTAL STOP
+\\revangle                  <char-0x029A3>               " ⦣          : REVERSED ANGLE
+\\revangle<Tab>             <char-0x029A3>               " ⦣          : REVERSED ANGLE
+\\revangleu                 \\revangleu                  "            : (Incomplete sequence)
+\\revangleubar              <char-0x029A5>               " ⦥          : REVERSED ANGLE WITH UNDERBAR
+\\revemptyset               <char-0x029B0>               " ⦰          : REVERSED EMPTY SET
+\\rfloor                    <char-0x0230B>               " ⌋          : RIGHT FLOOR
+\\rh                        <char-0x00322>               " ◌̢         : COMBINING RETROFLEX HOOK BELOW / NON-SPACING RETROFLEX HOOK BELOW
+\\rh<Tab>                   <char-0x00322>               " ◌̢         : COMBINING RETROFLEX HOOK BELOW / NON-SPACING RETROFLEX HOOK BELOW
+\\rho                       <char-0x003C1>               " ρ          : GREEK SMALL LETTER RHO
+\\rightangle                <char-0x0221F>               " ∟          : RIGHT ANGLE
+\\rightangle<Tab>           <char-0x0221F>               " ∟          : RIGHT ANGLE
+\\rightanglea               \\rightanglea                "            : (Incomplete sequence)
+\\rightanglearc             <char-0x022BE>               " ⊾          : RIGHT ANGLE WITH ARC
+\\rightanglem               \\rightanglem                "            : (Incomplete sequence)
+\\rightanglemdot            <char-0x0299D>               " ⦝          : MEASURED RIGHT ANGLE WITH DOT
+\\rightarrow                <char-0x02192>               " →          : RIGHTWARDS ARROW / RIGHT ARROW
+\\rightarrow<Tab>           <char-0x02192>               " →          : RIGHTWARDS ARROW / RIGHT ARROW
+\\rightarrowb               \\rightarrowb                "            : (Incomplete sequence)
+\\rightarrowbackapprox      <char-0x02B48>               " ⭈          : RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO
+\\rightarrowbar             <char-0x021E5>               " ⇥          : RIGHTWARDS ARROW TO BAR / RIGHT ARROW TO BAR
+\\rightarrowbsimilar        <char-0x02B4C>               " ⭌          : RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
+\\rightarrowd               \\rightarrowd                "            : (Incomplete sequence)
+\\rightarrowdiamond         <char-0x0291E>               " ⤞          : RIGHTWARDS ARROW TO BLACK DIAMOND
+\\rightarrowg               \\rightarrowg                "            : (Incomplete sequence)
+\\rightarrowgtr             <char-0x02B43>               " ⭃          : RIGHTWARDS ARROW THROUGH GREATER-THAN
+\\rightarrowp               \\rightarrowp                "            : (Incomplete sequence)
+\\rightarrowplus            <char-0x02945>               " ⥅          : RIGHTWARDS ARROW WITH PLUS BELOW
+\\rightarrows               \\rightarrows                "            : (Incomplete sequence)
+\\rightarrowsupset          <char-0x02B44>               " ⭄          : RIGHTWARDS ARROW THROUGH SUPERSET
+\\rightarrowt               \\rightarrowt                "            : (Incomplete sequence)
+\\rightarrowtail            <char-0x021A3>               " ↣          : RIGHTWARDS ARROW WITH TAIL / RIGHT ARROW WITH TAIL
+\\rightarrowtriangle        <char-0x021FE>               " ⇾          : RIGHTWARDS OPEN-HEADED ARROW
+\\rightdasharrow            <char-0x021E2>               " ⇢          : RIGHTWARDS DASHED ARROW / RIGHT DASHED ARROW
+\\rightdotarrow             <char-0x02911>               " ⤑          : RIGHTWARDS ARROW WITH DOTTED STEM
+\\rightharpoonaccent        <char-0x020D1>               " ◌⃑         : COMBINING RIGHT HARPOON ABOVE / NON-SPACING RIGHT HARPOON ABOVE
+\\rightharpoondown          <char-0x021C1>               " ⇁          : RIGHTWARDS HARPOON WITH BARB DOWNWARDS / RIGHT HARPOON WITH BARB DOWN
+\\rightharpoonsupdown       <char-0x02964>               " ⥤          : RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
+\\rightharpoonup            <char-0x021C0>               " ⇀          : RIGHTWARDS HARPOON WITH BARB UPWARDS / RIGHT HARPOON WITH BARB UP
+\\rightharpoonup<Tab>       <char-0x021C0>               " ⇀          : RIGHTWARDS HARPOON WITH BARB UPWARDS / RIGHT HARPOON WITH BARB UP
+\\rightharpoonupd           \\rightharpoonupd            "            : (Incomplete sequence)
+\\rightharpoonupdash        <char-0x0296C>               " ⥬          : RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
+\\rightleftarrows           <char-0x021C4>               " ⇄          : RIGHTWARDS ARROW OVER LEFTWARDS ARROW / RIGHT ARROW OVER LEFT ARROW
+\\rightleftharpoons         <char-0x021CC>               " ⇌          : RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON / RIGHT HARPOON OVER LEFT HARPOON
+\\rightleftharpoons<Tab>    <char-0x021CC>               " ⇌          : RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON / RIGHT HARPOON OVER LEFT HARPOON
+\\rightleftharpoonsd        \\rightleftharpoonsd         "            : (Incomplete sequence)
+\\rightleftharpoonsdown     <char-0x02969>               " ⥩          : RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN
+\\rightleftharpoonsu        \\rightleftharpoonsu         "            : (Incomplete sequence)
+\\rightleftharpoonsup       <char-0x02968>               " ⥨          : RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP
+\\rightmoon                 <char-0x0263D>               " ☽          : FIRST QUARTER MOON
+\\rightouterjoin            <char-0x027D6>               " ⟖          : RIGHT OUTER JOIN
+\\rightpentagon             <char-0x02B54>               " ⭔          : WHITE RIGHT-POINTING PENTAGON
+\\rightpentagon<Tab>        <char-0x02B54>               " ⭔          : WHITE RIGHT-POINTING PENTAGON
+\\rightpentagonb            \\rightpentagonb             "            : (Incomplete sequence)
+\\rightpentagonblack        <char-0x02B53>               " ⭓          : BLACK RIGHT-POINTING PENTAGON
+\\rightrightarrows          <char-0x021C9>               " ⇉          : RIGHTWARDS PAIRED ARROWS / RIGHT PAIRED ARROWS
+\\rightsquigarrow           <char-0x021DD>               " ⇝          : RIGHTWARDS SQUIGGLE ARROW / RIGHT SQUIGGLE ARROW
+\\rightthreearrows          <char-0x021F6>               " ⇶          : THREE RIGHTWARDS ARROWS
+\\rightthreetimes           <char-0x022CC>               " ⋌          : RIGHT SEMIDIRECT PRODUCT
+\\rightwavearrow            <char-0x0219D>               " ↝          : RIGHTWARDS WAVE ARROW / RIGHT WAVE ARROW
+\\rightwhitearrow           <char-0x021E8>               " ⇨          : RIGHTWARDS WHITE ARROW / WHITE RIGHT ARROW
+\\ringplus                  <char-0x02A22>               " ⨢          : PLUS SIGN WITH SMALL CIRCLE ABOVE
+\\risingdotseq              <char-0x02253>               " ≓          : IMAGE OF OR APPROXIMATELY EQUAL TO
+\\rl                        <char-0x0027C>               " ɼ          : LATIN SMALL LETTER R WITH LONG LEG
+\\rmoustache                <char-0x023B1>               " ⎱          : UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION
+\\rppolint                  <char-0x02A12>               " ⨒          : LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE
+\\rq                        <char-0x02019>               " ’          : RIGHT SINGLE QUOTATION MARK / SINGLE COMMA QUOTATION MARK
+\\rrbracket                 <char-0x027E7>               " ⟧          : MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+\\rsolbar                   <char-0x029F7>               " ⧷          : REVERSE SOLIDUS WITH HORIZONTAL STROKE
+\\rsqhook                   <char-0x02ACE>               " ⫎          : SQUARE RIGHT OPEN BOX OPERATOR
+\\rtimes                    <char-0x022CA>               " ⋊          : RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
+\\rtld                      <char-0x00256>               " ɖ          : LATIN SMALL LETTER D WITH TAIL / LATIN SMALL LETTER D RETROFLEX HOOK
+\\rtll                      <char-0x0026D>               " ɭ          : LATIN SMALL LETTER L WITH RETROFLEX HOOK / LATIN SMALL LETTER L RETROFLEX HOOK
+\\rtln                      <char-0x00273>               " ɳ          : LATIN SMALL LETTER N WITH RETROFLEX HOOK / LATIN SMALL LETTER N RETROFLEX HOOK
+\\rtlr                      <char-0x0027D>               " ɽ          : LATIN SMALL LETTER R WITH TAIL / LATIN SMALL LETTER R HOOK
+\\rtls                      <char-0x00282>               " ʂ          : LATIN SMALL LETTER S WITH HOOK / LATIN SMALL LETTER S HOOK
+\\rtlt                      <char-0x00288>               " ʈ          : LATIN SMALL LETTER T WITH RETROFLEX HOOK / LATIN SMALL LETTER T RETROFLEX HOOK
+\\rtlz                      <char-0x00290>               " ʐ          : LATIN SMALL LETTER Z WITH RETROFLEX HOOK / LATIN SMALL LETTER Z RETROFLEX HOOK
+\\rttrnr                    <char-0x0027B>               " ɻ          : LATIN SMALL LETTER TURNED R WITH HOOK / LATIN SMALL LETTER TURNED R HOOK
+\\rvboxline                 <char-0x023B9>               " ⎹          : RIGHT VERTICAL BOX LINE
+\\rvbull                    <char-0x025D8>               " ◘          : INVERSE BULLET
+\\sagittarius               <char-0x02650>               " ♐          : SAGITTARIUS
+\\sansA                     <char-0x1D5A0>               " 𝖠          : MATHEMATICAL SANS-SERIF CAPITAL A
+\\sansB                     <char-0x1D5A1>               " 𝖡          : MATHEMATICAL SANS-SERIF CAPITAL B
+\\sansC                     <char-0x1D5A2>               " 𝖢          : MATHEMATICAL SANS-SERIF CAPITAL C
+\\sansD                     <char-0x1D5A3>               " 𝖣          : MATHEMATICAL SANS-SERIF CAPITAL D
+\\sansE                     <char-0x1D5A4>               " 𝖤          : MATHEMATICAL SANS-SERIF CAPITAL E
+\\sansF                     <char-0x1D5A5>               " 𝖥          : MATHEMATICAL SANS-SERIF CAPITAL F
+\\sansG                     <char-0x1D5A6>               " 𝖦          : MATHEMATICAL SANS-SERIF CAPITAL G
+\\sansH                     <char-0x1D5A7>               " 𝖧          : MATHEMATICAL SANS-SERIF CAPITAL H
+\\sansI                     <char-0x1D5A8>               " 𝖨          : MATHEMATICAL SANS-SERIF CAPITAL I
+\\sansJ                     <char-0x1D5A9>               " 𝖩          : MATHEMATICAL SANS-SERIF CAPITAL J
+\\sansK                     <char-0x1D5AA>               " 𝖪          : MATHEMATICAL SANS-SERIF CAPITAL K
+\\sansL                     <char-0x1D5AB>               " 𝖫          : MATHEMATICAL SANS-SERIF CAPITAL L
+\\sansL<Tab>                <char-0x1D5AB>               " 𝖫          : MATHEMATICAL SANS-SERIF CAPITAL L
+\\sansLm                    \\sansLm                     "            : (Incomplete sequence)
+\\sansLmirrored             <char-0x02143>               " ⅃          : REVERSED SANS-SERIF CAPITAL L
+\\sansLt                    \\sansLt                     "            : (Incomplete sequence)
+\\sansLturned               <char-0x02142>               " ⅂          : TURNED SANS-SERIF CAPITAL L
+\\sansM                     <char-0x1D5AC>               " 𝖬          : MATHEMATICAL SANS-SERIF CAPITAL M
+\\sansN                     <char-0x1D5AD>               " 𝖭          : MATHEMATICAL SANS-SERIF CAPITAL N
+\\sansO                     <char-0x1D5AE>               " 𝖮          : MATHEMATICAL SANS-SERIF CAPITAL O
+\\sansP                     <char-0x1D5AF>               " 𝖯          : MATHEMATICAL SANS-SERIF CAPITAL P
+\\sansQ                     <char-0x1D5B0>               " 𝖰          : MATHEMATICAL SANS-SERIF CAPITAL Q
+\\sansR                     <char-0x1D5B1>               " 𝖱          : MATHEMATICAL SANS-SERIF CAPITAL R
+\\sansS                     <char-0x1D5B2>               " 𝖲          : MATHEMATICAL SANS-SERIF CAPITAL S
+\\sansT                     <char-0x1D5B3>               " 𝖳          : MATHEMATICAL SANS-SERIF CAPITAL T
+\\sansU                     <char-0x1D5B4>               " 𝖴          : MATHEMATICAL SANS-SERIF CAPITAL U
+\\sansV                     <char-0x1D5B5>               " 𝖵          : MATHEMATICAL SANS-SERIF CAPITAL V
+\\sansW                     <char-0x1D5B6>               " 𝖶          : MATHEMATICAL SANS-SERIF CAPITAL W
+\\sansX                     <char-0x1D5B7>               " 𝖷          : MATHEMATICAL SANS-SERIF CAPITAL X
+\\sansY                     <char-0x1D5B8>               " 𝖸          : MATHEMATICAL SANS-SERIF CAPITAL Y
+\\sansZ                     <char-0x1D5B9>               " 𝖹          : MATHEMATICAL SANS-SERIF CAPITAL Z
+\\sansa                     <char-0x1D5BA>               " 𝖺          : MATHEMATICAL SANS-SERIF SMALL A
+\\sansb                     <char-0x1D5BB>               " 𝖻          : MATHEMATICAL SANS-SERIF SMALL B
+\\sansc                     <char-0x1D5BC>               " 𝖼          : MATHEMATICAL SANS-SERIF SMALL C
+\\sansd                     <char-0x1D5BD>               " 𝖽          : MATHEMATICAL SANS-SERIF SMALL D
+\\sanse                     <char-0x1D5BE>               " 𝖾          : MATHEMATICAL SANS-SERIF SMALL E
+\\sanse<Tab>                <char-0x1D5BE>               " 𝖾          : MATHEMATICAL SANS-SERIF SMALL E
+\\sansei                    \\sansei                     "            : (Incomplete sequence)
+\\sanseight                 <char-0x1D7EA>               " 𝟪          : MATHEMATICAL SANS-SERIF DIGIT EIGHT
+\\sansf                     <char-0x1D5BF>               " 𝖿          : MATHEMATICAL SANS-SERIF SMALL F
+\\sansf<Tab>                <char-0x1D5BF>               " 𝖿          : MATHEMATICAL SANS-SERIF SMALL F
+\\sansfi                    \\sansfi                     "            : (Incomplete sequence)
+\\sansfive                  <char-0x1D7E7>               " 𝟧          : MATHEMATICAL SANS-SERIF DIGIT FIVE
+\\sansfo                    \\sansfo                     "            : (Incomplete sequence)
+\\sansfour                  <char-0x1D7E6>               " 𝟦          : MATHEMATICAL SANS-SERIF DIGIT FOUR
+\\sansg                     <char-0x1D5C0>               " 𝗀          : MATHEMATICAL SANS-SERIF SMALL G
+\\sansh                     <char-0x1D5C1>               " 𝗁          : MATHEMATICAL SANS-SERIF SMALL H
+\\sansi                     <char-0x1D5C2>               " 𝗂          : MATHEMATICAL SANS-SERIF SMALL I
+\\sansj                     <char-0x1D5C3>               " 𝗃          : MATHEMATICAL SANS-SERIF SMALL J
+\\sansk                     <char-0x1D5C4>               " 𝗄          : MATHEMATICAL SANS-SERIF SMALL K
+\\sansl                     <char-0x1D5C5>               " 𝗅          : MATHEMATICAL SANS-SERIF SMALL L
+\\sansm                     <char-0x1D5C6>               " 𝗆          : MATHEMATICAL SANS-SERIF SMALL M
+\\sansn                     <char-0x1D5C7>               " 𝗇          : MATHEMATICAL SANS-SERIF SMALL N
+\\sansn<Tab>                <char-0x1D5C7>               " 𝗇          : MATHEMATICAL SANS-SERIF SMALL N
+\\sansni                    \\sansni                     "            : (Incomplete sequence)
+\\sansnine                  <char-0x1D7EB>               " 𝟫          : MATHEMATICAL SANS-SERIF DIGIT NINE
+\\sanso                     <char-0x1D5C8>               " 𝗈          : MATHEMATICAL SANS-SERIF SMALL O
+\\sanso<Tab>                <char-0x1D5C8>               " 𝗈          : MATHEMATICAL SANS-SERIF SMALL O
+\\sanson                    \\sanson                     "            : (Incomplete sequence)
+\\sansone                   <char-0x1D7E3>               " 𝟣          : MATHEMATICAL SANS-SERIF DIGIT ONE
+\\sansp                     <char-0x1D5C9>               " 𝗉          : MATHEMATICAL SANS-SERIF SMALL P
+\\sansq                     <char-0x1D5CA>               " 𝗊          : MATHEMATICAL SANS-SERIF SMALL Q
+\\sansr                     <char-0x1D5CB>               " 𝗋          : MATHEMATICAL SANS-SERIF SMALL R
+\\sanss                     <char-0x1D5CC>               " 𝗌          : MATHEMATICAL SANS-SERIF SMALL S
+\\sanss<Tab>                <char-0x1D5CC>               " 𝗌          : MATHEMATICAL SANS-SERIF SMALL S
+\\sansse                    \\sansse                     "            : (Incomplete sequence)
+\\sansseven                 <char-0x1D7E9>               " 𝟩          : MATHEMATICAL SANS-SERIF DIGIT SEVEN
+\\sanssi                    \\sanssi                     "            : (Incomplete sequence)
+\\sanssix                   <char-0x1D7E8>               " 𝟨          : MATHEMATICAL SANS-SERIF DIGIT SIX
+\\sanst                     <char-0x1D5CD>               " 𝗍          : MATHEMATICAL SANS-SERIF SMALL T
+\\sanst<Tab>                <char-0x1D5CD>               " 𝗍          : MATHEMATICAL SANS-SERIF SMALL T
+\\sansth                    \\sansth                     "            : (Incomplete sequence)
+\\sansthree                 <char-0x1D7E5>               " 𝟥          : MATHEMATICAL SANS-SERIF DIGIT THREE
+\\sanstw                    \\sanstw                     "            : (Incomplete sequence)
+\\sanstwo                   <char-0x1D7E4>               " 𝟤          : MATHEMATICAL SANS-SERIF DIGIT TWO
+\\sansu                     <char-0x1D5CE>               " 𝗎          : MATHEMATICAL SANS-SERIF SMALL U
+\\sansv                     <char-0x1D5CF>               " 𝗏          : MATHEMATICAL SANS-SERIF SMALL V
+\\sansw                     <char-0x1D5D0>               " 𝗐          : MATHEMATICAL SANS-SERIF SMALL W
+\\sansx                     <char-0x1D5D1>               " 𝗑          : MATHEMATICAL SANS-SERIF SMALL X
+\\sansy                     <char-0x1D5D2>               " 𝗒          : MATHEMATICAL SANS-SERIF SMALL Y
+\\sansz                     <char-0x1D5D3>               " 𝗓          : MATHEMATICAL SANS-SERIF SMALL Z
+\\sansz<Tab>                <char-0x1D5D3>               " 𝗓          : MATHEMATICAL SANS-SERIF SMALL Z
+\\sansze                    \\sansze                     "            : (Incomplete sequence)
+\\sanszero                  <char-0x1D7E2>               " 𝟢          : MATHEMATICAL SANS-SERIF DIGIT ZERO
+\\saturn                    <char-0x02644>               " ♄          : SATURN
+\\sbbrg                     <char-0x0032A>               " ◌̪         : COMBINING BRIDGE BELOW / NON-SPACING BRIDGE BELOW
+\\sblhr                     <char-0x002D3>               " ˓          : MODIFIER LETTER CENTRED LEFT HALF RING / MODIFIER LETTER CENTERED LEFT HALF RING
+\\sbrhr                     <char-0x002D2>               " ˒          : MODIFIER LETTER CENTRED RIGHT HALF RING / MODIFIER LETTER CENTERED RIGHT HALF RING
+\\schwa                     <char-0x00259>               " ə          : LATIN SMALL LETTER SCHWA
+\\scorpio                   <char-0x0264F>               " ♏          : SCORPIUS
+\\scpolint                  <char-0x02A13>               " ⨓          : LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE
+\\scrA                      <char-0x1D49C>               " 𝒜          : MATHEMATICAL SCRIPT CAPITAL A
+\\scrB                      <char-0x0212C>               " ℬ          : SCRIPT CAPITAL B / SCRIPT B
+\\scrC                      <char-0x1D49E>               " 𝒞          : MATHEMATICAL SCRIPT CAPITAL C
+\\scrD                      <char-0x1D49F>               " 𝒟          : MATHEMATICAL SCRIPT CAPITAL D
+\\scrE                      <char-0x02130>               " ℰ          : SCRIPT CAPITAL E / SCRIPT E
+\\scrF                      <char-0x02131>               " ℱ          : SCRIPT CAPITAL F / SCRIPT F
+\\scrG                      <char-0x1D4A2>               " 𝒢          : MATHEMATICAL SCRIPT CAPITAL G
+\\scrH                      <char-0x0210B>               " ℋ          : SCRIPT CAPITAL H / SCRIPT H
+\\scrI                      <char-0x02110>               " ℐ          : SCRIPT CAPITAL I / SCRIPT I
+\\scrJ                      <char-0x1D4A5>               " 𝒥          : MATHEMATICAL SCRIPT CAPITAL J
+\\scrK                      <char-0x1D4A6>               " 𝒦          : MATHEMATICAL SCRIPT CAPITAL K
+\\scrL                      <char-0x02112>               " ℒ          : SCRIPT CAPITAL L / SCRIPT L
+\\scrM                      <char-0x02133>               " ℳ          : SCRIPT CAPITAL M / SCRIPT M
+\\scrN                      <char-0x1D4A9>               " 𝒩          : MATHEMATICAL SCRIPT CAPITAL N
+\\scrO                      <char-0x1D4AA>               " 𝒪          : MATHEMATICAL SCRIPT CAPITAL O
+\\scrP                      <char-0x1D4AB>               " 𝒫          : MATHEMATICAL SCRIPT CAPITAL P
+\\scrQ                      <char-0x1D4AC>               " 𝒬          : MATHEMATICAL SCRIPT CAPITAL Q
+\\scrR                      <char-0x0211B>               " ℛ          : SCRIPT CAPITAL R / SCRIPT R
+\\scrS                      <char-0x1D4AE>               " 𝒮          : MATHEMATICAL SCRIPT CAPITAL S
+\\scrT                      <char-0x1D4AF>               " 𝒯          : MATHEMATICAL SCRIPT CAPITAL T
+\\scrU                      <char-0x1D4B0>               " 𝒰          : MATHEMATICAL SCRIPT CAPITAL U
+\\scrV                      <char-0x1D4B1>               " 𝒱          : MATHEMATICAL SCRIPT CAPITAL V
+\\scrW                      <char-0x1D4B2>               " 𝒲          : MATHEMATICAL SCRIPT CAPITAL W
+\\scrX                      <char-0x1D4B3>               " 𝒳          : MATHEMATICAL SCRIPT CAPITAL X
+\\scrY                      <char-0x1D4B4>               " 𝒴          : MATHEMATICAL SCRIPT CAPITAL Y
+\\scrZ                      <char-0x1D4B5>               " 𝒵          : MATHEMATICAL SCRIPT CAPITAL Z
+\\scra                      <char-0x1D4B6>               " 𝒶          : MATHEMATICAL SCRIPT SMALL A
+\\scrb                      <char-0x1D4B7>               " 𝒷          : MATHEMATICAL SCRIPT SMALL B
+\\scrc                      <char-0x1D4B8>               " 𝒸          : MATHEMATICAL SCRIPT SMALL C
+\\scrd                      <char-0x1D4B9>               " 𝒹          : MATHEMATICAL SCRIPT SMALL D
+\\scre                      <char-0x0212F>               " ℯ          : SCRIPT SMALL E
+\\scrf                      <char-0x1D4BB>               " 𝒻          : MATHEMATICAL SCRIPT SMALL F
+\\scrg                      <char-0x0210A>               " ℊ          : SCRIPT SMALL G
+\\scrh                      <char-0x1D4BD>               " 𝒽          : MATHEMATICAL SCRIPT SMALL H
+\\scri                      <char-0x1D4BE>               " 𝒾          : MATHEMATICAL SCRIPT SMALL I
+\\scrj                      <char-0x1D4BF>               " 𝒿          : MATHEMATICAL SCRIPT SMALL J
+\\scrk                      <char-0x1D4C0>               " 𝓀          : MATHEMATICAL SCRIPT SMALL K
+\\scrl                      <char-0x1D4C1>               " 𝓁          : MATHEMATICAL SCRIPT SMALL L
+\\scrm                      <char-0x1D4C2>               " 𝓂          : MATHEMATICAL SCRIPT SMALL M
+\\scrn                      <char-0x1D4C3>               " 𝓃          : MATHEMATICAL SCRIPT SMALL N
+\\scro                      <char-0x02134>               " ℴ          : SCRIPT SMALL O
+\\scrp                      <char-0x1D4C5>               " 𝓅          : MATHEMATICAL SCRIPT SMALL P
+\\scrq                      <char-0x1D4C6>               " 𝓆          : MATHEMATICAL SCRIPT SMALL Q
+\\scrr                      <char-0x1D4C7>               " 𝓇          : MATHEMATICAL SCRIPT SMALL R
+\\scrs                      <char-0x1D4C8>               " 𝓈          : MATHEMATICAL SCRIPT SMALL S
+\\scrt                      <char-0x1D4C9>               " 𝓉          : MATHEMATICAL SCRIPT SMALL T
+\\scru                      <char-0x1D4CA>               " 𝓊          : MATHEMATICAL SCRIPT SMALL U
+\\scrv                      <char-0x1D4CB>               " 𝓋          : MATHEMATICAL SCRIPT SMALL V
+\\scrw                      <char-0x1D4CC>               " 𝓌          : MATHEMATICAL SCRIPT SMALL W
+\\scrx                      <char-0x1D4CD>               " 𝓍          : MATHEMATICAL SCRIPT SMALL X
+\\scry                      <char-0x1D4CE>               " 𝓎          : MATHEMATICAL SCRIPT SMALL Y
+\\scrz                      <char-0x1D4CF>               " 𝓏          : MATHEMATICAL SCRIPT SMALL Z
+\\scurel                    <char-0x022B1>               " ⊱          : SUCCEEDS UNDER RELATION
+\\searrow                   <char-0x02198>               " ↘          : SOUTH EAST ARROW / LOWER RIGHT ARROW
+\\seovnearrow               <char-0x0292D>               " ⤭          : SOUTH EAST ARROW CROSSING NORTH EAST ARROW
+\\setminus                  <char-0x02216>               " ∖          : SET MINUS
+\\sharp                     <char-0x0266F>               " ♯          : MUSIC SHARP SIGN / SHARP
+\\shuffle                   <char-0x029E2>               " ⧢          : SHUFFLE PRODUCT
+\\sigma                     <char-0x003C3>               " σ          : GREEK SMALL LETTER SIGMA
+\\sim                       <char-0x0223C>               " ∼          : TILDE OPERATOR
+\\sim<Tab>                  <char-0x0223C>               " ∼          : TILDE OPERATOR
+\\sime                      \\sime                       "            : (Incomplete sequence)
+\\simeq                     <char-0x02243>               " ≃          : ASYMPTOTICALLY EQUAL TO
+\\simg                      \\simg                       "            : (Incomplete sequence)
+\\simgE                     <char-0x02AA0>               " ⪠          : SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
+\\simgtr                    <char-0x02A9E>               " ⪞          : SIMILAR OR GREATER-THAN
+\\simi                      \\simi                       "            : (Incomplete sequence)
+\\similarleftarrow          <char-0x02B49>               " ⭉          : TILDE OPERATOR ABOVE LEFTWARDS ARROW
+\\siml                      \\siml                       "            : (Incomplete sequence)
+\\simlE                     <char-0x02A9F>               " ⪟          : SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
+\\simless                   <char-0x02A9D>               " ⪝          : SIMILAR OR LESS-THAN
+\\simm                      \\simm                       "            : (Incomplete sequence)
+\\simminussim               <char-0x02A6C>               " ⩬          : SIMILAR MINUS SIMILAR
+\\simp                      \\simp                       "            : (Incomplete sequence)
+\\simplus                   <char-0x02A24>               " ⨤          : PLUS SIGN WITH TILDE ABOVE
+\\simr                      \\simr                       "            : (Incomplete sequence)
+\\simrdots                  <char-0x02A6B>               " ⩫          : TILDE OPERATOR WITH RISING DOTS
+\\sinewave                  <char-0x0223F>               " ∿          : SINE WAVE
+\\smallblacktriangleleft    <char-0x025C2>               " ◂          : BLACK LEFT-POINTING SMALL TRIANGLE / BLACK LEFT POINTING SMALL TRIANGLE
+\\smallblacktriangleright   <char-0x025B8>               " ▸          : BLACK RIGHT-POINTING SMALL TRIANGLE / BLACK RIGHT POINTING SMALL TRIANGLE
+\\smallin                   <char-0x0220A>               " ∊          : SMALL ELEMENT OF
+\\smallni                   <char-0x0220D>               " ∍          : SMALL CONTAINS AS MEMBER
+\\smalltriangleleft         <char-0x025C3>               " ◃          : WHITE LEFT-POINTING SMALL TRIANGLE / WHITE LEFT POINTING SMALL TRIANGLE
+\\smalltriangleright        <char-0x025B9>               " ▹          : WHITE RIGHT-POINTING SMALL TRIANGLE / WHITE RIGHT POINTING SMALL TRIANGLE
+\\smashtimes                <char-0x02A33>               " ⨳          : SMASH PRODUCT
+\\smblkdiamond              <char-0x02B29>               " ⬩          : BLACK SMALL DIAMOND
+\\smblklozenge              <char-0x02B2A>               " ⬪          : BLACK SMALL LOZENGE
+\\smblksquare               <char-0x025AA>               " ▪          : BLACK SMALL SQUARE
+\\smeparsl                  <char-0x029E4>               " ⧤          : EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE
+\\smile                     <char-0x02323>               " ⌣          : SMILE
+\\smt                       <char-0x02AAA>               " ⪪          : SMALLER THAN
+\\smt<Tab>                  <char-0x02AAA>               " ⪪          : SMALLER THAN
+\\smte                      <char-0x02AAC>               " ⪬          : SMALLER THAN OR EQUAL TO
+\\smwhitestar               <char-0x02B52>               " ⭒          : WHITE SMALL STAR
+\\smwhtcircle               <char-0x025E6>               " ◦          : WHITE BULLET
+\\smwhtlozenge              <char-0x02B2B>               " ⬫          : WHITE SMALL LOZENGE
+\\smwhtsquare               <char-0x025AB>               " ▫          : WHITE SMALL SQUARE
+\\sout                      <char-0x00336>               " ◌̶         : COMBINING LONG STROKE OVERLAY / NON-SPACING LONG BAR OVERLAY
+\\spadesuit                 <char-0x02660>               " ♠          : BLACK SPADE SUIT
+\\sphericalangle            <char-0x02222>               " ∢          : SPHERICAL ANGLE
+\\sphericalangle<Tab>       <char-0x02222>               " ∢          : SPHERICAL ANGLE
+\\sphericalangleu           \\sphericalangleu            "            : (Incomplete sequence)
+\\sphericalangleup          <char-0x029A1>               " ⦡          : SPHERICAL ANGLE OPENING UP
+\\sqcap                     <char-0x02293>               " ⊓          : SQUARE CAP
+\\sqcup                     <char-0x02294>               " ⊔          : SQUARE CUP
+\\sqfl                      <char-0x025E7>               " ◧          : SQUARE WITH LEFT HALF BLACK
+\\sqfnw                     <char-0x02519>               " ┙          : BOX DRAWINGS UP LIGHT AND LEFT HEAVY / FORMS UP LIGHT AND LEFT HEAVY
+\\sqfr                      <char-0x025E8>               " ◨          : SQUARE WITH RIGHT HALF BLACK
+\\sqfse                     <char-0x025EA>               " ◪          : SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK
+\\sqlozenge                 <char-0x02311>               " ⌑          : SQUARE LOZENGE
+\\sqrint                    <char-0x02A16>               " ⨖          : QUATERNION INTEGRAL OPERATOR
+\\sqrt                      <char-0x0221A>               " √          : SQUARE ROOT
+\\sqrt<Tab>                 <char-0x0221A>               " √          : SQUARE ROOT
+\\sqrtb                     \\sqrtb                      "            : (Incomplete sequence)
+\\sqrtbottom                <char-0x023B7>               " ⎷          : RADICAL SYMBOL BOTTOM
+\\sqspne                    <char-0x022E5>               " ⋥          : SQUARE ORIGINAL OF OR NOT EQUAL TO
+\\sqsubset                  <char-0x0228F>               " ⊏          : SQUARE IMAGE OF
+\\sqsubset<Tab>             <char-0x0228F>               " ⊏          : SQUARE IMAGE OF
+\\sqsubsete                 \\sqsubsete                  "            : (Incomplete sequence)
+\\sqsubseteq                <char-0x02291>               " ⊑          : SQUARE IMAGE OF OR EQUAL TO
+\\sqsubsetn                 \\sqsubsetn                  "            : (Incomplete sequence)
+\\sqsubsetneq               <char-0x022E4>               " ⋤          : SQUARE IMAGE OF OR NOT EQUAL TO
+\\sqsupset                  <char-0x02290>               " ⊐          : SQUARE ORIGINAL OF
+\\sqsupset<Tab>             <char-0x02290>               " ⊐          : SQUARE ORIGINAL OF
+\\sqsupsete                 \\sqsupsete                  "            : (Incomplete sequence)
+\\sqsupseteq                <char-0x02292>               " ⊒          : SQUARE ORIGINAL OF OR EQUAL TO
+\\square                    <char-0x025A1>               " □          : WHITE SQUARE
+\\square<Tab>               <char-0x025A1>               " □          : WHITE SQUARE
+\\squareb                   \\squareb                    "            : (Incomplete sequence)
+\\squarebotblack            <char-0x02B13>               " ⬓          : SQUARE WITH BOTTOM HALF BLACK
+\\squarec                   \\squarec                    "            : (Incomplete sequence)
+\\squarecrossfill           <char-0x025A9>               " ▩          : SQUARE WITH DIAGONAL CROSSHATCH FILL
+\\squareh                   \\squareh                    "            : (Incomplete sequence)
+\\squarehfill               <char-0x025A4>               " ▤          : SQUARE WITH HORIZONTAL FILL
+\\squarehvfill              <char-0x025A6>               " ▦          : SQUARE WITH ORTHOGONAL CROSSHATCH FILL
+\\squarel                   \\squarel                    "            : (Incomplete sequence)
+\\squarellblack             <char-0x02B15>               " ⬕          : SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK
+\\squarellquad              <char-0x025F1>               " ◱          : WHITE SQUARE WITH LOWER LEFT QUADRANT
+\\squarelrquad              <char-0x025F2>               " ◲          : WHITE SQUARE WITH LOWER RIGHT QUADRANT
+\\squaren                   \\squaren                    "            : (Incomplete sequence)
+\\squareneswfill            <char-0x025A8>               " ▨          : SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
+\\squarenwsefill            <char-0x025A7>               " ▧          : SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
+\\squaret                   \\squaret                    "            : (Incomplete sequence)
+\\squaretopblack            <char-0x02B12>               " ⬒          : SQUARE WITH TOP HALF BLACK
+\\squareu                   \\squareu                    "            : (Incomplete sequence)
+\\squareulblack             <char-0x025E9>               " ◩          : SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK
+\\squareulquad              <char-0x025F0>               " ◰          : WHITE SQUARE WITH UPPER LEFT QUADRANT
+\\squareurblack             <char-0x02B14>               " ⬔          : SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK
+\\squareurquad              <char-0x025F3>               " ◳          : WHITE SQUARE WITH UPPER RIGHT QUADRANT
+\\squarev                   \\squarev                    "            : (Incomplete sequence)
+\\squarevfill               <char-0x025A5>               " ▥          : SQUARE WITH VERTICAL FILL
+\\squoval                   <char-0x025A2>               " ▢          : WHITE SQUARE WITH ROUNDED CORNERS
+\\ss                        <char-0x000DF>               " ß          : LATIN SMALL LETTER SHARP S
+\\star                      <char-0x022C6>               " ⋆          : STAR OPERATOR
+\\star<Tab>                 <char-0x022C6>               " ⋆          : STAR OPERATOR
+\\stare                     \\stare                      "            : (Incomplete sequence)
+\\starequal                 <char-0x0225B>               " ≛          : STAR EQUALS
+\\sterling                  <char-0x000A3>               " £          : POUND SIGN
+\\strike                    <char-0x00336>               " ◌̶         : COMBINING LONG STROKE OVERLAY / NON-SPACING LONG BAR OVERLAY
+\\strns                     <char-0x023E4>               " ⏤          : STRAIGHTNESS
+\\subedot                   <char-0x02AC3>               " ⫃          : SUBSET OF OR EQUAL TO WITH DOT ABOVE
+\\submult                   <char-0x02AC1>               " ⫁          : SUBSET WITH MULTIPLICATION SIGN BELOW
+\\subset                    <char-0x02282>               " ⊂          : SUBSET OF
+\\subset<Tab>               <char-0x02282>               " ⊂          : SUBSET OF
+\\subseta                   \\subseta                    "            : (Incomplete sequence)
+\\subsetapprox              <char-0x02AC9>               " ⫉          : SUBSET OF ABOVE ALMOST EQUAL TO
+\\subsetd                   \\subsetd                    "            : (Incomplete sequence)
+\\subsetdot                 <char-0x02ABD>               " ⪽          : SUBSET WITH DOT
+\\subsete                   \\subsete                    "            : (Incomplete sequence)
+\\subseteq                  <char-0x02286>               " ⊆          : SUBSET OF OR EQUAL TO
+\\subseteq<Tab>             <char-0x02286>               " ⊆          : SUBSET OF OR EQUAL TO
+\\subseteqq                 <char-0x02AC5>               " ⫅          : SUBSET OF ABOVE EQUALS SIGN
+\\subsetn                   \\subsetn                    "            : (Incomplete sequence)
+\\subsetneq                 <char-0x0228A>               " ⊊          : SUBSET OF WITH NOT EQUAL TO / SUBSET OF OR NOT EQUAL TO
+\\subsetneq<Tab>            <char-0x0228A>               " ⊊          : SUBSET OF WITH NOT EQUAL TO / SUBSET OF OR NOT EQUAL TO
+\\subsetneqq                <char-0x02ACB>               " ⫋          : SUBSET OF ABOVE NOT EQUAL TO
+\\subsetp                   \\subsetp                    "            : (Incomplete sequence)
+\\subsetplus                <char-0x02ABF>               " ⪿          : SUBSET WITH PLUS SIGN BELOW
+\\subsim                    <char-0x02AC7>               " ⫇          : SUBSET OF ABOVE TILDE OPERATOR
+\\subsub                    <char-0x02AD5>               " ⫕          : SUBSET ABOVE SUBSET
+\\subsup                    <char-0x02AD3>               " ⫓          : SUBSET ABOVE SUPERSET
+\\succ                      <char-0x0227B>               " ≻          : SUCCEEDS
+\\succ<Tab>                 <char-0x0227B>               " ≻          : SUCCEEDS
+\\succa                     \\succa                      "            : (Incomplete sequence)
+\\succapprox                <char-0x02AB8>               " ⪸          : SUCCEEDS ABOVE ALMOST EQUAL TO
+\\succc                     \\succc                      "            : (Incomplete sequence)
+\\succcurlyeq               <char-0x0227D>               " ≽          : SUCCEEDS OR EQUAL TO
+\\succe                     \\succe                      "            : (Incomplete sequence)
+\\succeq                    <char-0x02AB0>               " ⪰          : SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
+\\succeq<Tab>               <char-0x02AB0>               " ⪰          : SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
+\\succeqq                   <char-0x02AB4>               " ⪴          : SUCCEEDS ABOVE EQUALS SIGN
+\\succn                     \\succn                      "            : (Incomplete sequence)
+\\succnapprox               <char-0x02ABA>               " ⪺          : SUCCEEDS ABOVE NOT ALMOST EQUAL TO
+\\succneq                   <char-0x02AB2>               " ⪲          : SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
+\\succneq<Tab>              <char-0x02AB2>               " ⪲          : SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
+\\succneqq                  <char-0x02AB6>               " ⪶          : SUCCEEDS ABOVE NOT EQUAL TO
+\\succnsim                  <char-0x022E9>               " ⋩          : SUCCEEDS BUT NOT EQUIVALENT TO
+\\succs                     \\succs                      "            : (Incomplete sequence)
+\\succsim                   <char-0x0227F>               " ≿          : SUCCEEDS OR EQUIVALENT TO
+\\sum                       <char-0x02211>               " ∑          : N-ARY SUMMATION
+\\sum<Tab>                  <char-0x02211>               " ∑          : N-ARY SUMMATION
+\\sumi                      \\sumi                       "            : (Incomplete sequence)
+\\sumint                    <char-0x02A0B>               " ⨋          : SUMMATION WITH INTEGRAL
+\\sun                       <char-0x0263C>               " ☼          : WHITE SUN WITH RAYS
+\\supdsub                   <char-0x02AD8>               " ⫘          : SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET
+\\supedot                   <char-0x02AC4>               " ⫄          : SUPERSET OF OR EQUAL TO WITH DOT ABOVE
+\\suphsol                   <char-0x027C9>               " ⟉          : SUPERSET PRECEDING SOLIDUS
+\\suphsub                   <char-0x02AD7>               " ⫗          : SUPERSET BESIDE SUBSET
+\\supmult                   <char-0x02AC2>               " ⫂          : SUPERSET WITH MULTIPLICATION SIGN BELOW
+\\supset                    <char-0x02283>               " ⊃          : SUPERSET OF
+\\supset<Tab>               <char-0x02283>               " ⊃          : SUPERSET OF
+\\supseta                   \\supseta                    "            : (Incomplete sequence)
+\\supsetapprox              <char-0x02ACA>               " ⫊          : SUPERSET OF ABOVE ALMOST EQUAL TO
+\\supsetd                   \\supsetd                    "            : (Incomplete sequence)
+\\supsetdot                 <char-0x02ABE>               " ⪾          : SUPERSET WITH DOT
+\\supsete                   \\supsete                    "            : (Incomplete sequence)
+\\supseteq                  <char-0x02287>               " ⊇          : SUPERSET OF OR EQUAL TO
+\\supseteq<Tab>             <char-0x02287>               " ⊇          : SUPERSET OF OR EQUAL TO
+\\supseteqq                 <char-0x02AC6>               " ⫆          : SUPERSET OF ABOVE EQUALS SIGN
+\\supsetn                   \\supsetn                    "            : (Incomplete sequence)
+\\supsetneq                 <char-0x0228B>               " ⊋          : SUPERSET OF WITH NOT EQUAL TO / SUPERSET OF OR NOT EQUAL TO
+\\supsetneq<Tab>            <char-0x0228B>               " ⊋          : SUPERSET OF WITH NOT EQUAL TO / SUPERSET OF OR NOT EQUAL TO
+\\supsetneqq                <char-0x02ACC>               " ⫌          : SUPERSET OF ABOVE NOT EQUAL TO
+\\supsetp                   \\supsetp                    "            : (Incomplete sequence)
+\\supsetplus                <char-0x02AC0>               " ⫀          : SUPERSET WITH PLUS SIGN BELOW
+\\supsim                    <char-0x02AC8>               " ⫈          : SUPERSET OF ABOVE TILDE OPERATOR
+\\supsub                    <char-0x02AD4>               " ⫔          : SUPERSET ABOVE SUBSET
+\\supsup                    <char-0x02AD6>               " ⫖          : SUPERSET ABOVE SUPERSET
+\\surd                      <char-0x0221A>               " √          : SQUARE ROOT
+\\swarrow                   <char-0x02199>               " ↙          : SOUTH WEST ARROW / LOWER LEFT ARROW
+\\tau                       <char-0x003C4>               " τ          : GREEK SMALL LETTER TAU
+\\tau<Tab>                  <char-0x003C4>               " τ          : GREEK SMALL LETTER TAU
+\\taur                      \\taur                       "            : (Incomplete sequence)
+\\taurus                    <char-0x02649>               " ♉          : TAURUS
+\\tdcol                     <char-0x02AF6>               " ⫶          : TRIPLE COLON OPERATOR
+\\tesh                      <char-0x002A7>               " ʧ          : LATIN SMALL LETTER TESH DIGRAPH / LATIN SMALL LETTER T ESH
+\\th                        <char-0x000FE>               " þ          : LATIN SMALL LETTER THORN
+\\th<Tab>                   <char-0x000FE>               " þ          : LATIN SMALL LETTER THORN
+\\the                       \\the                        "            : (Incomplete sequence)
+\\therefore                 <char-0x02234>               " ∴          : THEREFORE
+\\theta                     <char-0x003B8>               " θ          : GREEK SMALL LETTER THETA
+\\thi                       \\thi                        "            : (Incomplete sequence)
+\\thickspace                <char-0x02005>               "            : FOUR-PER-EM SPACE
+\\thinspace                 <char-0x02009>               "            : THIN SPACE
+\\thr                       \\thr                        "            : (Incomplete sequence)
+\\threedangle               <char-0x027C0>               " ⟀          : THREE DIMENSIONAL ANGLE
+\\threeunderdot             <char-0x020E8>               " ◌⃨         : COMBINING TRIPLE UNDERDOT
+\\tieconcat                 <char-0x02040>               " ⁀          : CHARACTER TIE
+\\tilde                     <char-0x00303>               " ◌̃         : COMBINING TILDE / NON-SPACING TILDE
+\\tilde<Tab>                <char-0x00303>               " ◌̃         : COMBINING TILDE / NON-SPACING TILDE
+\\tildel                    \\tildel                     "            : (Incomplete sequence)
+\\tildelow                  <char-0x002DC>               " ˜          : SMALL TILDE / SPACING TILDE
+\\tildet                    \\tildet                     "            : (Incomplete sequence)
+\\tildetrpl                 <char-0x0224B>               " ≋          : TRIPLE TILDE
+\\times                     <char-0x000D7>               " ×          : MULTIPLICATION SIGN
+\\times<Tab>                <char-0x000D7>               " ×          : MULTIPLICATION SIGN
+\\timesb                    \\timesb                     "            : (Incomplete sequence)
+\\timesbar                  <char-0x02A31>               " ⨱          : MULTIPLICATION SIGN WITH UNDERBAR
+\\to                        <char-0x02192>               " →          : RIGHTWARDS ARROW / RIGHT ARROW
+\\to<Tab>                   <char-0x02192>               " →          : RIGHTWARDS ARROW / RIGHT ARROW
+\\toe                       \\toe                        "            : (Incomplete sequence)
+\\toea                      <char-0x02928>               " ⤨          : NORTH EAST ARROW AND SOUTH EAST ARROW
+\\ton                       \\ton                        "            : (Incomplete sequence)
+\\tona                      <char-0x02927>               " ⤧          : NORTH WEST ARROW AND NORTH EAST ARROW
+\\top                       <char-0x022A4>               " ⊤          : DOWN TACK
+\\top<Tab>                  <char-0x022A4>               " ⊤          : DOWN TACK
+\\topb                      \\topb                       "            : (Incomplete sequence)
+\\topbot                    <char-0x02336>               " ⌶          : APL FUNCTIONAL SYMBOL I-BEAM
+\\tops                      \\tops                       "            : (Incomplete sequence)
+\\topsemicircle             <char-0x025E0>               " ◠          : UPPER HALF CIRCLE
+\\tos                       \\tos                        "            : (Incomplete sequence)
+\\tosa                      <char-0x02929>               " ⤩          : SOUTH EAST ARROW AND SOUTH WEST ARROW
+\\tow                       \\tow                        "            : (Incomplete sequence)
+\\towa                      <char-0x0292A>               " ⤪          : SOUTH WEST ARROW AND NORTH WEST ARROW
+\\trademark                 <char-0x02122>               " ™          : TRADE MARK SIGN / TRADEMARK
+\\trapezium                 <char-0x023E2>               " ⏢          : WHITE TRAPEZIUM
+\\trianglecdot              <char-0x025EC>               " ◬          : WHITE UP-POINTING TRIANGLE WITH DOT / WHITE UP POINTING TRIANGLE WITH DOT
+\\triangledown              <char-0x025BF>               " ▿          : WHITE DOWN-POINTING SMALL TRIANGLE / WHITE DOWN POINTING SMALL TRIANGLE
+\\triangleleft              <char-0x025C1>               " ◁          : WHITE LEFT-POINTING TRIANGLE / WHITE LEFT POINTING TRIANGLE
+\\triangleleft<Tab>         <char-0x025C1>               " ◁          : WHITE LEFT-POINTING TRIANGLE / WHITE LEFT POINTING TRIANGLE
+\\triangleleftb             \\triangleleftb              "            : (Incomplete sequence)
+\\triangleleftblack         <char-0x025ED>               " ◭          : UP-POINTING TRIANGLE WITH LEFT HALF BLACK / UP POINTING TRIANGLE WITH LEFT HALF BLACK
+\\trianglelefte             \\trianglelefte              "            : (Incomplete sequence)
+\\trianglelefteq            <char-0x022B4>               " ⊴          : NORMAL SUBGROUP OF OR EQUAL TO
+\\triangleminus             <char-0x02A3A>               " ⨺          : MINUS SIGN IN TRIANGLE
+\\triangleplus              <char-0x02A39>               " ⨹          : PLUS SIGN IN TRIANGLE
+\\triangleq                 <char-0x0225C>               " ≜          : DELTA EQUAL TO
+\\triangleright             <char-0x025B7>               " ▷          : WHITE RIGHT-POINTING TRIANGLE / WHITE RIGHT POINTING TRIANGLE
+\\triangleright<Tab>        <char-0x025B7>               " ▷          : WHITE RIGHT-POINTING TRIANGLE / WHITE RIGHT POINTING TRIANGLE
+\\trianglerightb            \\trianglerightb             "            : (Incomplete sequence)
+\\trianglerightblack        <char-0x025EE>               " ◮          : UP-POINTING TRIANGLE WITH RIGHT HALF BLACK / UP POINTING TRIANGLE WITH RIGHT HALF BLACK
+\\trianglerighte            \\trianglerighte             "            : (Incomplete sequence)
+\\trianglerighteq           <char-0x022B5>               " ⊵          : CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
+\\triangletimes             <char-0x02A3B>               " ⨻          : MULTIPLICATION SIGN IN TRIANGLE
+\\tricolon                  <char-0x0205D>               " ⁝          : TRICOLON
+\\tripleplus                <char-0x029FB>               " ⧻          : TRIPLE PLUS
+\\trna                      <char-0x00250>               " ɐ          : LATIN SMALL LETTER TURNED A
+\\trnh                      <char-0x00265>               " ɥ          : LATIN SMALL LETTER TURNED H
+\\trnm                      <char-0x0026F>               " ɯ          : LATIN SMALL LETTER TURNED M
+\\trnm<Tab>                 <char-0x0026F>               " ɯ          : LATIN SMALL LETTER TURNED M
+\\trnml                     \\trnml                      "            : (Incomplete sequence)
+\\trnmlr                    <char-0x00270>               " ɰ          : LATIN SMALL LETTER TURNED M WITH LONG LEG
+\\trnr                      <char-0x00279>               " ɹ          : LATIN SMALL LETTER TURNED R
+\\trnr<Tab>                 <char-0x00279>               " ɹ          : LATIN SMALL LETTER TURNED R
+\\trnrl                     <char-0x0027A>               " ɺ          : LATIN SMALL LETTER TURNED R WITH LONG LEG
+\\trnsa                     <char-0x00252>               " ɒ          : LATIN SMALL LETTER TURNED ALPHA / LATIN SMALL LETTER TURNED SCRIPT A
+\\trnt                      <char-0x00287>               " ʇ          : LATIN SMALL LETTER TURNED T
+\\trny                      <char-0x0028E>               " ʎ          : LATIN SMALL LETTER TURNED Y
+\\ttA                       <char-0x1D670>               " 𝙰          : MATHEMATICAL MONOSPACE CAPITAL A
+\\ttB                       <char-0x1D671>               " 𝙱          : MATHEMATICAL MONOSPACE CAPITAL B
+\\ttC                       <char-0x1D672>               " 𝙲          : MATHEMATICAL MONOSPACE CAPITAL C
+\\ttD                       <char-0x1D673>               " 𝙳          : MATHEMATICAL MONOSPACE CAPITAL D
+\\ttE                       <char-0x1D674>               " 𝙴          : MATHEMATICAL MONOSPACE CAPITAL E
+\\ttF                       <char-0x1D675>               " 𝙵          : MATHEMATICAL MONOSPACE CAPITAL F
+\\ttG                       <char-0x1D676>               " 𝙶          : MATHEMATICAL MONOSPACE CAPITAL G
+\\ttH                       <char-0x1D677>               " 𝙷          : MATHEMATICAL MONOSPACE CAPITAL H
+\\ttI                       <char-0x1D678>               " 𝙸          : MATHEMATICAL MONOSPACE CAPITAL I
+\\ttJ                       <char-0x1D679>               " 𝙹          : MATHEMATICAL MONOSPACE CAPITAL J
+\\ttK                       <char-0x1D67A>               " 𝙺          : MATHEMATICAL MONOSPACE CAPITAL K
+\\ttL                       <char-0x1D67B>               " 𝙻          : MATHEMATICAL MONOSPACE CAPITAL L
+\\ttM                       <char-0x1D67C>               " 𝙼          : MATHEMATICAL MONOSPACE CAPITAL M
+\\ttN                       <char-0x1D67D>               " 𝙽          : MATHEMATICAL MONOSPACE CAPITAL N
+\\ttO                       <char-0x1D67E>               " 𝙾          : MATHEMATICAL MONOSPACE CAPITAL O
+\\ttP                       <char-0x1D67F>               " 𝙿          : MATHEMATICAL MONOSPACE CAPITAL P
+\\ttQ                       <char-0x1D680>               " 𝚀          : MATHEMATICAL MONOSPACE CAPITAL Q
+\\ttR                       <char-0x1D681>               " 𝚁          : MATHEMATICAL MONOSPACE CAPITAL R
+\\ttS                       <char-0x1D682>               " 𝚂          : MATHEMATICAL MONOSPACE CAPITAL S
+\\ttT                       <char-0x1D683>               " 𝚃          : MATHEMATICAL MONOSPACE CAPITAL T
+\\ttU                       <char-0x1D684>               " 𝚄          : MATHEMATICAL MONOSPACE CAPITAL U
+\\ttV                       <char-0x1D685>               " 𝚅          : MATHEMATICAL MONOSPACE CAPITAL V
+\\ttW                       <char-0x1D686>               " 𝚆          : MATHEMATICAL MONOSPACE CAPITAL W
+\\ttX                       <char-0x1D687>               " 𝚇          : MATHEMATICAL MONOSPACE CAPITAL X
+\\ttY                       <char-0x1D688>               " 𝚈          : MATHEMATICAL MONOSPACE CAPITAL Y
+\\ttZ                       <char-0x1D689>               " 𝚉          : MATHEMATICAL MONOSPACE CAPITAL Z
+\\tta                       <char-0x1D68A>               " 𝚊          : MATHEMATICAL MONOSPACE SMALL A
+\\ttb                       <char-0x1D68B>               " 𝚋          : MATHEMATICAL MONOSPACE SMALL B
+\\ttc                       <char-0x1D68C>               " 𝚌          : MATHEMATICAL MONOSPACE SMALL C
+\\ttd                       <char-0x1D68D>               " 𝚍          : MATHEMATICAL MONOSPACE SMALL D
+\\tte                       <char-0x1D68E>               " 𝚎          : MATHEMATICAL MONOSPACE SMALL E
+\\tte<Tab>                  <char-0x1D68E>               " 𝚎          : MATHEMATICAL MONOSPACE SMALL E
+\\ttei                      \\ttei                       "            : (Incomplete sequence)
+\\tteight                   <char-0x1D7FE>               " 𝟾          : MATHEMATICAL MONOSPACE DIGIT EIGHT
+\\ttf                       <char-0x1D68F>               " 𝚏          : MATHEMATICAL MONOSPACE SMALL F
+\\ttf<Tab>                  <char-0x1D68F>               " 𝚏          : MATHEMATICAL MONOSPACE SMALL F
+\\ttfi                      \\ttfi                       "            : (Incomplete sequence)
+\\ttfive                    <char-0x1D7FB>               " 𝟻          : MATHEMATICAL MONOSPACE DIGIT FIVE
+\\ttfo                      \\ttfo                       "            : (Incomplete sequence)
+\\ttfour                    <char-0x1D7FA>               " 𝟺          : MATHEMATICAL MONOSPACE DIGIT FOUR
+\\ttg                       <char-0x1D690>               " 𝚐          : MATHEMATICAL MONOSPACE SMALL G
+\\tth                       <char-0x1D691>               " 𝚑          : MATHEMATICAL MONOSPACE SMALL H
+\\tti                       <char-0x1D692>               " 𝚒          : MATHEMATICAL MONOSPACE SMALL I
+\\ttj                       <char-0x1D693>               " 𝚓          : MATHEMATICAL MONOSPACE SMALL J
+\\ttk                       <char-0x1D694>               " 𝚔          : MATHEMATICAL MONOSPACE SMALL K
+\\ttl                       <char-0x1D695>               " 𝚕          : MATHEMATICAL MONOSPACE SMALL L
+\\ttm                       <char-0x1D696>               " 𝚖          : MATHEMATICAL MONOSPACE SMALL M
+\\ttn                       <char-0x1D697>               " 𝚗          : MATHEMATICAL MONOSPACE SMALL N
+\\ttn<Tab>                  <char-0x1D697>               " 𝚗          : MATHEMATICAL MONOSPACE SMALL N
+\\ttni                      \\ttni                       "            : (Incomplete sequence)
+\\ttnine                    <char-0x1D7FF>               " 𝟿          : MATHEMATICAL MONOSPACE DIGIT NINE
+\\tto                       <char-0x1D698>               " 𝚘          : MATHEMATICAL MONOSPACE SMALL O
+\\tto<Tab>                  <char-0x1D698>               " 𝚘          : MATHEMATICAL MONOSPACE SMALL O
+\\tton                      \\tton                       "            : (Incomplete sequence)
+\\ttone                     <char-0x1D7F7>               " 𝟷          : MATHEMATICAL MONOSPACE DIGIT ONE
+\\ttp                       <char-0x1D699>               " 𝚙          : MATHEMATICAL MONOSPACE SMALL P
+\\ttq                       <char-0x1D69A>               " 𝚚          : MATHEMATICAL MONOSPACE SMALL Q
+\\ttr                       <char-0x1D69B>               " 𝚛          : MATHEMATICAL MONOSPACE SMALL R
+\\tts                       <char-0x1D69C>               " 𝚜          : MATHEMATICAL MONOSPACE SMALL S
+\\tts<Tab>                  <char-0x1D69C>               " 𝚜          : MATHEMATICAL MONOSPACE SMALL S
+\\ttse                      \\ttse                       "            : (Incomplete sequence)
+\\ttseven                   <char-0x1D7FD>               " 𝟽          : MATHEMATICAL MONOSPACE DIGIT SEVEN
+\\ttsi                      \\ttsi                       "            : (Incomplete sequence)
+\\ttsix                     <char-0x1D7FC>               " 𝟼          : MATHEMATICAL MONOSPACE DIGIT SIX
+\\ttt                       <char-0x1D69D>               " 𝚝          : MATHEMATICAL MONOSPACE SMALL T
+\\ttt<Tab>                  <char-0x1D69D>               " 𝚝          : MATHEMATICAL MONOSPACE SMALL T
+\\ttth                      \\ttth                       "            : (Incomplete sequence)
+\\ttthree                   <char-0x1D7F9>               " 𝟹          : MATHEMATICAL MONOSPACE DIGIT THREE
+\\tttw                      \\tttw                       "            : (Incomplete sequence)
+\\tttwo                     <char-0x1D7F8>               " 𝟸          : MATHEMATICAL MONOSPACE DIGIT TWO
+\\ttu                       <char-0x1D69E>               " 𝚞          : MATHEMATICAL MONOSPACE SMALL U
+\\ttv                       <char-0x1D69F>               " 𝚟          : MATHEMATICAL MONOSPACE SMALL V
+\\ttw                       <char-0x1D6A0>               " 𝚠          : MATHEMATICAL MONOSPACE SMALL W
+\\ttx                       <char-0x1D6A1>               " 𝚡          : MATHEMATICAL MONOSPACE SMALL X
+\\tty                       <char-0x1D6A2>               " 𝚢          : MATHEMATICAL MONOSPACE SMALL Y
+\\ttz                       <char-0x1D6A3>               " 𝚣          : MATHEMATICAL MONOSPACE SMALL Z
+\\ttz<Tab>                  <char-0x1D6A3>               " 𝚣          : MATHEMATICAL MONOSPACE SMALL Z
+\\ttze                      \\ttze                       "            : (Incomplete sequence)
+\\ttzero                    <char-0x1D7F6>               " 𝟶          : MATHEMATICAL MONOSPACE DIGIT ZERO
+\\turnangle                 <char-0x029A2>               " ⦢          : TURNED ANGLE
+\\turnediota                <char-0x02129>               " ℩          : TURNED GREEK SMALL LETTER IOTA
+\\turnednot                 <char-0x02319>               " ⌙          : TURNED NOT SIGN
+\\turnk                     <char-0x0029E>               " ʞ          : LATIN SMALL LETTER TURNED K
+\\twocaps                   <char-0x02A4B>               " ⩋          : INTERSECTION BESIDE AND JOINED WITH INTERSECTION
+\\twocups                   <char-0x02A4A>               " ⩊          : UNION BESIDE AND JOINED WITH UNION
+\\twoheaddownarrow          <char-0x021A1>               " ↡          : DOWNWARDS TWO HEADED ARROW / DOWN TWO HEADED ARROW
+\\twoheadleftarrow          <char-0x0219E>               " ↞          : LEFTWARDS TWO HEADED ARROW / LEFT TWO HEADED ARROW
+\\twoheadleftarrow<Tab>     <char-0x0219E>               " ↞          : LEFTWARDS TWO HEADED ARROW / LEFT TWO HEADED ARROW
+\\twoheadleftarrowt         \\twoheadleftarrowt          "            : (Incomplete sequence)
+\\twoheadleftarrowtail      <char-0x02B3B>               " ⬻          : LEFTWARDS TWO-HEADED ARROW WITH TAIL
+\\twoheadleftdbkarrow       <char-0x02B37>               " ⬷          : LEFTWARDS TWO-HEADED TRIPLE DASH ARROW
+\\twoheadmapsfrom           <char-0x02B36>               " ⬶          : LEFTWARDS TWO-HEADED ARROW FROM BAR
+\\twoheadmapsto             <char-0x02905>               " ⤅          : RIGHTWARDS TWO-HEADED ARROW FROM BAR
+\\twoheadrightarrow         <char-0x021A0>               " ↠          : RIGHTWARDS TWO HEADED ARROW / RIGHT TWO HEADED ARROW
+\\twoheadrightarrow<Tab>    <char-0x021A0>               " ↠          : RIGHTWARDS TWO HEADED ARROW / RIGHT TWO HEADED ARROW
+\\twoheadrightarrowt        \\twoheadrightarrowt         "            : (Incomplete sequence)
+\\twoheadrightarrowtail     <char-0x02916>               " ⤖          : RIGHTWARDS TWO-HEADED ARROW WITH TAIL
+\\twoheaduparrow            <char-0x0219F>               " ↟          : UPWARDS TWO HEADED ARROW / UP TWO HEADED ARROW
+\\twoheaduparrow<Tab>       <char-0x0219F>               " ↟          : UPWARDS TWO HEADED ARROW / UP TWO HEADED ARROW
+\\twoheaduparrowc           \\twoheaduparrowc            "            : (Incomplete sequence)
+\\twoheaduparrowcircle      <char-0x02949>               " ⥉          : UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE
+\\twonotes                  <char-0x0266B>               " ♫          : BEAMED EIGHTH NOTES / BARRED EIGHTH NOTES
+\\u                         <char-0x002D8>               " ˘          : BREVE / SPACING BREVE
+\\u<Tab>                    <char-0x002D8>               " ˘          : BREVE / SPACING BREVE
+\\ul                        \\ul                         "            : (Incomplete sequence)
+\\ularc                     <char-0x025DC>               " ◜          : UPPER LEFT QUADRANT CIRCULAR ARC
+\\ulblacktriangle           <char-0x025E4>               " ◤          : BLACK UPPER LEFT TRIANGLE
+\\ulcorner                  <char-0x0231C>               " ⌜          : TOP LEFT CORNER
+\\ultriangle                <char-0x025F8>               " ◸          : UPPER LEFT TRIANGLE
+\\um                        \\um                         "            : (Incomplete sequence)
+\\uminus                    <char-0x02A41>               " ⩁          : UNION WITH MINUS SIGN
+\\un                        \\un                         "            : (Incomplete sequence)
+\\underbar                  <char-0x00332>               " ◌̲         : COMBINING LOW LINE / NON-SPACING UNDERSCORE
+\\underbrace                <char-0x023DF>               " ⏟          : BOTTOM CURLY BRACKET
+\\underbracket              <char-0x023B5>               " ⎵          : BOTTOM SQUARE BRACKET
+\\underleftarrow            <char-0x020EE>               " ◌⃮         : COMBINING LEFT ARROW BELOW
+\\underleftharpoondown      <char-0x020ED>               " ◌⃭         : COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS
+\\underleftrightarrow       <char-0x0034D>               " ◌͍         : COMBINING LEFT RIGHT ARROW BELOW
+\\underrightarrow           <char-0x020EF>               " ◌⃯         : COMBINING RIGHT ARROW BELOW
+\\underrightharpoondown     <char-0x020EC>               " ◌⃬         : COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS
+\\up                        \\up                         "            : (Incomplete sequence)
+\\upMu                      <char-0x0039C>               " Μ          : GREEK CAPITAL LETTER MU
+\\upNu                      <char-0x0039D>               " Ν          : GREEK CAPITAL LETTER NU
+\\upOmicron                 <char-0x0039F>               " Ο          : GREEK CAPITAL LETTER OMICRON
+\\upand                     <char-0x0214B>               " ⅋          : TURNED AMPERSAND
+\\uparrow                   <char-0x02191>               " ↑          : UPWARDS ARROW / UP ARROW
+\\uparrow<Tab>              <char-0x02191>               " ↑          : UPWARDS ARROW / UP ARROW
+\\uparrowb                  \\uparrowb                   "            : (Incomplete sequence)
+\\uparrowbarred             <char-0x02909>               " ⤉          : UPWARDS ARROW WITH HORIZONTAL STROKE
+\\updasharrow               <char-0x021E1>               " ⇡          : UPWARDS DASHED ARROW / UP DASHED ARROW
+\\updownarrow               <char-0x02195>               " ↕          : UP DOWN ARROW
+\\updownarrow<Tab>          <char-0x02195>               " ↕          : UP DOWN ARROW
+\\updownarrowb              \\updownarrowb               "            : (Incomplete sequence)
+\\updownarrowbar            <char-0x021A8>               " ↨          : UP DOWN ARROW WITH BASE
+\\updownharpoonleftright    <char-0x0294D>               " ⥍          : UP BARB LEFT DOWN BARB RIGHT HARPOON
+\\updownharpoonrightleft    <char-0x0294C>               " ⥌          : UP BARB RIGHT DOWN BARB LEFT HARPOON
+\\upepsilon                 <char-0x003B5>               " ε          : GREEK SMALL LETTER EPSILON
+\\upharpoonleft             <char-0x021BF>               " ↿          : UPWARDS HARPOON WITH BARB LEFTWARDS / UP HARPOON WITH BARB LEFT
+\\upharpoonright            <char-0x021BE>               " ↾          : UPWARDS HARPOON WITH BARB RIGHTWARDS / UP HARPOON WITH BARB RIGHT
+\\upharpoonsleftright       <char-0x02963>               " ⥣          : UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
+\\upin                      <char-0x027D2>               " ⟒          : ELEMENT OF OPENING UPWARDS
+\\upin<Tab>                 <char-0x027D2>               " ⟒          : ELEMENT OF OPENING UPWARDS
+\\upint                     <char-0x02A1B>               " ⨛          : INTEGRAL WITH OVERBAR
+\\upkoppa                   <char-0x003DF>               " ϟ          : GREEK SMALL LETTER KOPPA
+\\uplus                     <char-0x0228E>               " ⊎          : MULTISET UNION
+\\upoldKoppa                <char-0x003D8>               " Ϙ          : GREEK LETTER ARCHAIC KOPPA
+\\upoldkoppa                <char-0x003D9>               " ϙ          : GREEK SMALL LETTER ARCHAIC KOPPA
+\\upomicron                 <char-0x003BF>               " ο          : GREEK SMALL LETTER OMICRON
+\\upsampi                   <char-0x003E1>               " ϡ          : GREEK SMALL LETTER SAMPI
+\\upsilon                   <char-0x003C5>               " υ          : GREEK SMALL LETTER UPSILON
+\\upstigma                  <char-0x003DB>               " ϛ          : GREEK SMALL LETTER STIGMA
+\\upuparrows                <char-0x021C8>               " ⇈          : UPWARDS PAIRED ARROWS / UP PAIRED ARROWS
+\\upvDash                   <char-0x02AEB>               " ⫫          : DOUBLE UP TACK
+\\upvarbeta                 <char-0x003D0>               " ϐ          : GREEK BETA SYMBOL / GREEK SMALL LETTER CURLED BETA
+\\upwhitearrow              <char-0x021E7>               " ⇧          : UPWARDS WHITE ARROW / WHITE UP ARROW
+\\ur                        \\ur                         "            : (Incomplete sequence)
+\\uranus                    <char-0x02645>               " ♅          : URANUS
+\\urarc                     <char-0x025DD>               " ◝          : UPPER RIGHT QUADRANT CIRCULAR ARC
+\\urblacktriangle           <char-0x025E5>               " ◥          : BLACK UPPER RIGHT TRIANGLE
+\\urcorner                  <char-0x0231D>               " ⌝          : TOP RIGHT CORNER
+\\urtriangle                <char-0x025F9>               " ◹          : UPPER RIGHT TRIANGLE
+\\vDash                     <char-0x022A8>               " ⊨          : TRUE
+\\varTheta                  <char-0x003F4>               " ϴ          : GREEK CAPITAL THETA SYMBOL
+\\varbarwedge               <char-0x02305>               " ⌅          : PROJECTIVE
+\\varcarriagereturn         <char-0x023CE>               " ⏎          : RETURN SYMBOL
+\\varclubsuit               <char-0x02667>               " ♧          : WHITE CLUB SUIT
+\\vardiamondsuit            <char-0x02666>               " ♦          : BLACK DIAMOND SUIT
+\\vardoublebarwedge         <char-0x02306>               " ⌆          : PERSPECTIVE
+\\varepsilon                <char-0x003B5>               " ε          : GREEK SMALL LETTER EPSILON
+\\varheartsuit              <char-0x02665>               " ♥          : BLACK HEART SUIT
+\\varhexagon                <char-0x02B21>               " ⬡          : WHITE HEXAGON
+\\varhexagon<Tab>           <char-0x02B21>               " ⬡          : WHITE HEXAGON
+\\varhexagonb               \\varhexagonb                "            : (Incomplete sequence)
+\\varhexagonblack           <char-0x02B22>               " ⬢          : BLACK HEXAGON
+\\varhexagonl               \\varhexagonl                "            : (Incomplete sequence)
+\\varhexagonlrbonds         <char-0x0232C>               " ⌬          : BENZENE RING
+\\varisinobar               <char-0x022F6>               " ⋶          : ELEMENT OF WITH OVERBAR
+\\varisins                  <char-0x022F3>               " ⋳          : ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+\\varkappa                  <char-0x003F0>               " ϰ          : GREEK KAPPA SYMBOL / GREEK SMALL LETTER SCRIPT KAPPA
+\\varlrtriangle             <char-0x022BF>               " ⊿          : RIGHT TRIANGLE
+\\varniobar                 <char-0x022FD>               " ⋽          : CONTAINS WITH OVERBAR
+\\varnis                    <char-0x022FB>               " ⋻          : CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+\\varnothing                <char-0x02205>               " ∅          : EMPTY SET
+\\varointclockwise          <char-0x02232>               " ∲          : CLOCKWISE CONTOUR INTEGRAL
+\\varphi                    <char-0x003C6>               " φ          : GREEK SMALL LETTER PHI
+\\varpi                     <char-0x003D6>               " ϖ          : GREEK PI SYMBOL / GREEK SMALL LETTER OMEGA PI
+\\varrho                    <char-0x003F1>               " ϱ          : GREEK RHO SYMBOL / GREEK SMALL LETTER TAILED RHO
+\\varsigma                  <char-0x003C2>               " ς          : GREEK SMALL LETTER FINAL SIGMA
+\\varspadesuit              <char-0x02664>               " ♤          : WHITE SPADE SUIT
+\\varstar                   <char-0x02736>               " ✶          : SIX POINTED BLACK STAR
+\\varsubsetneqq             <char-0x0228A><char-0x0FE00> " ⊊︀         : SUBSET OF WITH NOT EQUAL TO / SUBSET OF OR NOT EQUAL TO + VARIATION SELECTOR-1
+\\varsupsetneq              <char-0x0228B><char-0x0FE00> " ⊋︀         : SUPERSET OF WITH NOT EQUAL TO / SUPERSET OF OR NOT EQUAL TO + VARIATION SELECTOR-1
+\\vartheta                  <char-0x003D1>               " ϑ          : GREEK THETA SYMBOL / GREEK SMALL LETTER SCRIPT THETA
+\\vartriangle               <char-0x025B5>               " ▵          : WHITE UP-POINTING SMALL TRIANGLE / WHITE UP POINTING SMALL TRIANGLE
+\\vartriangle<Tab>          <char-0x025B5>               " ▵          : WHITE UP-POINTING SMALL TRIANGLE / WHITE UP POINTING SMALL TRIANGLE
+\\vartrianglel              \\vartrianglel               "            : (Incomplete sequence)
+\\vartriangleleft           <char-0x022B2>               " ⊲          : NORMAL SUBGROUP OF
+\\vartriangler              \\vartriangler               "            : (Incomplete sequence)
+\\vartriangleright          <char-0x022B3>               " ⊳          : CONTAINS AS NORMAL SUBGROUP
+\\varveebar                 <char-0x02A61>               " ⩡          : SMALL VEE WITH UNDERBAR
+\\vdash                     <char-0x022A2>               " ⊢          : RIGHT TACK
+\\vdots                     <char-0x022EE>               " ⋮          : VERTICAL ELLIPSIS
+\\vec                       <char-0x020D7>               " ◌⃗         : COMBINING RIGHT ARROW ABOVE / NON-SPACING RIGHT ARROW ABOVE
+\\vee                       <char-0x02228>               " ∨          : LOGICAL OR
+\\vee<Tab>                  <char-0x02228>               " ∨          : LOGICAL OR
+\\veeb                      \\veeb                       "            : (Incomplete sequence)
+\\veebar                    <char-0x022BB>               " ⊻          : XOR
+\\veed                      \\veed                       "            : (Incomplete sequence)
+\\veedoublebar              <char-0x02A63>               " ⩣          : LOGICAL OR WITH DOUBLE UNDERBAR
+\\veee                      \\veee                       "            : (Incomplete sequence)
+\\veeeq                     <char-0x0225A>               " ≚          : EQUIANGULAR TO
+\\veem                      \\veem                       "            : (Incomplete sequence)
+\\veemidvert                <char-0x02A5B>               " ⩛          : LOGICAL OR WITH MIDDLE STEM
+\\veeo                      \\veeo                       "            : (Incomplete sequence)
+\\veeodot                   <char-0x02A52>               " ⩒          : LOGICAL OR WITH DOT ABOVE
+\\venus                     <char-0x02640>               " ♀          : FEMALE SIGN
+\\verti                     <char-0x002CC>               " ˌ          : MODIFIER LETTER LOW VERTICAL LINE
+\\vertoverlay               <char-0x020D2>               " ◌⃒         : COMBINING LONG VERTICAL LINE OVERLAY / NON-SPACING LONG VERTICAL BAR OVERLAY
+\\verts                     <char-0x002C8>               " ˈ          : MODIFIER LETTER VERTICAL LINE
+\\verymuchless              <char-0x022D8>               " ⋘          : VERY MUCH LESS-THAN / VERY MUCH LESS THAN
+\\viewdata                  <char-0x02317>               " ⌗          : VIEWDATA SQUARE
+\\virgo                     <char-0x0264D>               " ♍          : VIRGO
+\\visiblespace              <char-0x02423>               " ␣          : OPEN BOX
+\\vrectangleblack           <char-0x025AE>               " ▮          : BLACK VERTICAL RECTANGLE
+\\vrecto                    <char-0x025AF>               " ▯          : WHITE VERTICAL RECTANGLE
+\\vysmblkcircle             <char-0x02219>               " ∙          : BULLET OPERATOR
+\\vysmblksquare             <char-0x02B1D>               " ⬝          : BLACK VERY SMALL SQUARE
+\\vysmwhtsquare             <char-0x02B1E>               " ⬞          : WHITE VERY SMALL SQUARE
+\\wedge                     <char-0x02227>               " ∧          : LOGICAL AND
+\\wedge<Tab>                <char-0x02227>               " ∧          : LOGICAL AND
+\\wedged                    \\wedged                     "            : (Incomplete sequence)
+\\wedgedot                  <char-0x027D1>               " ⟑          : AND WITH DOT
+\\wedgedoublebar            <char-0x02A60>               " ⩠          : LOGICAL AND WITH DOUBLE UNDERBAR
+\\wedgem                    \\wedgem                     "            : (Incomplete sequence)
+\\wedgemidvert              <char-0x02A5A>               " ⩚          : LOGICAL AND WITH MIDDLE STEM
+\\wedgeo                    \\wedgeo                     "            : (Incomplete sequence)
+\\wedgeodot                 <char-0x02A51>               " ⩑          : LOGICAL AND WITH DOT ABOVE
+\\wedgeonwedge              <char-0x02A55>               " ⩕          : TWO INTERSECTING LOGICAL AND
+\\wedgeq                    <char-0x02259>               " ≙          : ESTIMATES
+\\whitearrowupfrombar       <char-0x021EA>               " ⇪          : UPWARDS WHITE ARROW FROM BAR / WHITE UP ARROW FROM BAR
+\\whiteinwhitetriangle      <char-0x027C1>               " ⟁          : WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE
+\\whitepointerleft          <char-0x025C5>               " ◅          : WHITE LEFT-POINTING POINTER / WHITE LEFT POINTING POINTER
+\\whitepointerright         <char-0x025BB>               " ▻          : WHITE RIGHT-POINTING POINTER / WHITE RIGHT POINTING POINTER
+\\whthorzoval               <char-0x02B2D>               " ⬭          : WHITE HORIZONTAL ELLIPSE
+\\whtvertoval               <char-0x02B2F>               " ⬯          : WHITE VERTICAL ELLIPSE
+\\wideangledown             <char-0x029A6>               " ⦦          : OBLIQUE ANGLE OPENING UP
+\\wideangleup               <char-0x029A7>               " ⦧          : OBLIQUE ANGLE OPENING DOWN
+\\widebridgeabove           <char-0x020E9>               " ◌⃩         : COMBINING WIDE BRIDGE ABOVE
+\\wideutilde                <char-0x00330>               " ◌̰         : COMBINING TILDE BELOW / NON-SPACING TILDE BELOW
+\\wp                        <char-0x02118>               " ℘          : SCRIPT CAPITAL P / SCRIPT P
+\\wr                        <char-0x02240>               " ≀          : WREATH PRODUCT
+\\xi                        <char-0x003BE>               " ξ          : GREEK SMALL LETTER XI
+\\xor                       <char-0x022BB>               " ⊻          : XOR
+\\xrat                      <char-0x0211E>               " ℞          : PRESCRIPTION TAKE
+\\yen                       <char-0x000A5>               " ¥          : YEN SIGN
+\\yogh                      <char-0x00292>               " ʒ          : LATIN SMALL LETTER EZH / LATIN SMALL LETTER YOGH
+\\zeta                      <char-0x003B6>               " ζ          : GREEK SMALL LETTER ZETA
+" ------------------------- ---------------------------- " ---------- : --------------------------------------------------------------------------------------------------------
+
+" Below here is the script that was used to produce this file.
+
+"> #!/bin/env julia
+"> 
+"> import REPL
+"> 
+"> const filename = "latex2unicode_utf-8"
+"> const include_emoji = false # set this to true if you want to keymap empjis as well
+"> 
+"> # We want to avoid situations in which the user types e.g. \delt and pauses,
+"> # and the result is "∇t" because "\del" gets recognized and then there is some leftover "t".
+"> # This allows us to get completions with <Tab> for example.
+"> function fix_completions(completions::Dict{String,String})
+">     allinputs = sort!(collect(keys(completions)))
+">     new_completions = copy(completions)
+"> 
+">     for input in allinputs
+">         chars = completions[input]
+">         l = length(input)
+">         longer = filter(x->startswith(x, input)&&length(x)>l, allinputs)
+">         n = length(longer)
+">         n == 0 && continue
+">         new_completions[input * "<Tab>"] = chars
+">         for other in longer
+">             add = other[1:(l+1)]
+">             get!(new_completions, add, add)
+">         end
+">     end
+">     return new_completions
+"> end
+"> 
+"> function unicode_data()
+">     file = normpath(Sys.BINDIR, "..", "..", "doc", "UnicodeData.txt")
+">     names = Dict{UInt32, String}()
+">     open(file) do unidata
+">         for line in readlines(unidata)
+">             id, name, desc = split(line, ";")[[1, 2, 11]]
+">             codepoint = parse(UInt32, "0x$id")
+">             names[codepoint] = (name == "" ? desc : desc == "" ? name : "$name / $desc")
+">         end
+">     end
+">     return names
+"> end
+"> 
+"> # Prepend a dotted circle ('◌' i.e. '\u25CC') to combining characters
+"> function fix_combining_chars(char)
+">     cat = Base.Unicode.category_code(char)
+">     return string(cat == 6 || cat == 8 ? "◌" : "", char)
+"> end
+"> 
+"> function table_entries(completions::Dict{String,String}, unicode_dict)
+">     latex = String[]
+">     code = String[]
+">     unicode = String[]
+">     desc = String[]
+"> 
+">     for (input, chars) in sort!(collect(completions))
+">         code_points, unicode_names, characters = String[], String[], String[]
+">         if startswith(chars, "\\")
+">             push!(code_points, replace(chars, "\\" => "\\\\"))
+">             push!(unicode_names, "(Incomplete sequence)")
+">             push!(characters, "")
+">         else
+">             for char in chars
+">                 push!(code_points, "<char-0x$(uppercase(string(UInt32(char), base = 16, pad = 5)))>")
+">                 push!(unicode_names, get(unicode_dict, UInt32(char), "(No Unicode name)"))
+">                 push!(characters, isempty(characters) ? fix_combining_chars(char) : "$char")
+">             end
+">         end
+">         push!(latex, replace(input, "\\"=>"\\\\"))
+">         push!(code, join(code_points))
+">         push!(unicode, join(characters))
+">         push!(desc, join(unicode_names, " + "))
+">     end
+">     return latex, code, unicode, desc
+"> end
+"> 
+"> open("$filename.vim","w") do f
+">     print(f, """
+">         " This file is autogenerated from the script '$(basename(Base.source_path()))'
+">         " The symbols are based on Julia version $VERSION
+">         " The full generating script can be found in the comments at the bottom of this file,
+">         " and it can be extracted with:
+">         "
+">         "     \$ grep '^\">' $filename.vim | cut -c4- > '$(basename(Base.source_path()))'
+">         "
+">         " To produce this keymap file you need to have Julia compilied from source, and
+">         " to run `make deps` inside Julia's `doc` directory.
+">         " Then you can run:
+">         "
+">         "     \$ julia $(basename(Base.source_path()))
+">         "
+"> 
+">         scriptencoding utf-8
+"> 
+">         let b:keymap_name = "L2U"
+">         loadkeymap
+"> 
+">         """)
+"> 
+">     col_headers = ["\" Tab completion sequence", "Code point", "Character", "Unicode name"]
+"> 
+">     orig_completions = include_emoji ? merge(
+">                 REPL.REPLCompletions.latex_symbols,
+">                 REPL.REPLCompletions.emoji_symbols
+">                 ) :
+">                 REPL.REPLCompletions.latex_symbols
+"> 
+">     latex, code, unicode, desc =
+">         table_entries(
+">             fix_completions(orig_completions),
+">             unicode_data()
+">             )
+"> 
+">     lw = max(length(col_headers[3]), maximum(map(length, latex)))
+">     cw = max(length(col_headers[1]), maximum(map(length, code)))
+">     uw = max(length(col_headers[2]), maximum(map(length, unicode)))
+">     dw = max(length(col_headers[4]), maximum(map(length, desc)))
+"> 
+">     print_padded(l, c, u, d) = println(f, rpad(l, lw), " ", rpad(c, cw), " \" ", rpad(u, uw), " : ", d)
+"> 
+">     print_padded(col_headers...)
+">     print_padded("\" " * "-"^(lw-2), "-"^cw, "-"^uw, "-"^dw)
+"> 
+">     for (l, c, u, d) in zip(latex, code, unicode, desc)
+">         print_padded(l, c, u, d)
+">     end
+">     print_padded("\" " * "-"^(lw-2), "-"^cw, "-"^uw, "-"^dw)
+"> 
+">     print(f, """
+"> 
+">         " Below here is the script that was used to produce this file.
+"> 
+">         """)
+">     for l in readlines(Base.source_path())
+">         println(f, "\"> ", l)
+">     end
+">     println(f)
+"> end
+
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/AlignMapsPlugin.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/AlignMapsPlugin.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/AlignMapsPlugin.vim	(revision 27955)
@@ -0,0 +1,242 @@
+" AlignMapsPlugin:   Alignment maps based upon <Align.vim> and <AlignMaps.vim>
+" Maintainer:        Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
+" Date:              Mar 03, 2009
+"
+" NOTE: the code herein needs vim 6.0 or later
+"                       needs <Align.vim> v6 or later
+"                       needs <cecutil.vim> v5 or later
+" Copyright:    Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1
+"               Permission is hereby granted to use and distribute this code,
+"               with or without modifications, provided that this copyright
+"               notice is copied with it. Like anything else that's free,
+"               AlignMaps.vim is provided *as is* and comes with no warranty
+"               of any kind, either expressed or implied. By using this
+"               plugin, you agree that in no event will the copyright
+"               holder be liable for any damages resulting from the use
+"               of this software.
+"
+" Usage: {{{1
+" Use 'a to mark beginning of to-be-aligned region,   Alternative:  use V
+" move cursor to end of region, and execute map.      (linewise visual mode) to
+" The maps also set up marks 'y and 'z, and retain    mark region, execute same
+" 'a at the beginning of region.                      map.  Uses 'a, 'y, and 'z.
+"
+" The start/end wrappers save and restore marks 'y and 'z.
+"
+" Although the comments indicate the maps use a leading backslash,
+" actually they use <Leader> (:he mapleader), so the user can
+" specify that the maps start how he or she prefers.
+"
+" Note: these maps all use <Align.vim>.
+"
+" Romans 1:20 For the invisible things of Him since the creation of the {{{1
+" world are clearly seen, being perceived through the things that are
+" made, even His everlasting power and divinity; that they may be
+" without excuse.
+
+" ---------------------------------------------------------------------
+" Load Once: {{{1
+if &cp || exists("g:loaded_AlignMapsPlugin")
+ finish
+endif
+let s:keepcpo                = &cpo
+let g:loaded_AlignMapsPlugin = "v41"
+set cpo&vim
+
+" =====================================================================
+"  Maps: {{{1
+
+" ---------------------------------------------------------------------
+" WS: wrapper start map (internal)  {{{2
+" Produces a blank line above and below, marks with 'y and 'z
+if !hasmapto('<Plug>WrapperStart')
+ map <unique> <SID>WS	<Plug>AlignMapsWrapperStart
+endif
+nmap <silent> <script> <Plug>AlignMapsWrapperStart	:set lz<CR>:call AlignMaps#WrapperStart(0)<CR>
+vmap <silent> <script> <Plug>AlignMapsWrapperStart	:<c-u>set lz<CR>:call AlignMaps#WrapperStart(1)<CR>
+
+" ---------------------------------------------------------------------
+" WE: wrapper end (internal)   {{{2
+" Removes guard lines, restores marks y and z, and restores search pattern
+if !hasmapto('<Plug>WrapperEnd')
+ nmap <unique> <SID>WE	<Plug>AlignMapsWrapperEnd
+endif
+nmap <silent> <script> <Plug>AlignMapsWrapperEnd	:call AlignMaps#WrapperEnd()<CR>:set nolz<CR>
+
+" ---------------------------------------------------------------------
+" Complex C-code alignment maps: {{{2
+if !hasmapto('<Plug>AM_a?')   |map <unique> <Leader>a?		<Plug>AM_a?|endif
+if !hasmapto('<Plug>AM_a,')   |map <unique> <Leader>a,		<Plug>AM_a,|endif
+if !hasmapto('<Plug>AM_a<')   |map <unique> <Leader>a<		<Plug>AM_a<|endif
+if !hasmapto('<Plug>AM_a=')   |map <unique> <Leader>a=		<Plug>AM_a=|endif
+if !hasmapto('<Plug>AM_a(')   |map <unique> <Leader>a(		<Plug>AM_a(|endif
+if !hasmapto('<Plug>AM_abox') |map <unique> <Leader>abox	<Plug>AM_abox|endif
+if !hasmapto('<Plug>AM_acom') |map <unique> <Leader>acom	<Plug>AM_acom|endif
+if !hasmapto('<Plug>AM_adcom')|map <unique> <Leader>adcom	<Plug>AM_adcom|endif
+if !hasmapto('<Plug>AM_aocom')|map <unique> <Leader>aocom	<Plug>AM_aocom|endif
+if !hasmapto('<Plug>AM_ascom')|map <unique> <Leader>ascom	<Plug>AM_ascom|endif
+if !hasmapto('<Plug>AM_adec') |map <unique> <Leader>adec	<Plug>AM_adec|endif
+if !hasmapto('<Plug>AM_adef') |map <unique> <Leader>adef	<Plug>AM_adef|endif
+if !hasmapto('<Plug>AM_afnc') |map <unique> <Leader>afnc	<Plug>AM_afnc|endif
+if !hasmapto('<Plug>AM_afnc') |map <unique> <Leader>afnc	<Plug>AM_afnc|endif
+if !hasmapto('<Plug>AM_aunum')|map <unique> <Leader>aunum	<Plug>AM_aenum|endif
+if !hasmapto('<Plug>AM_aenum')|map <unique> <Leader>aenum	<Plug>AM_aunum|endif
+if exists("g:alignmaps_euronumber") && !exists("g:alignmaps_usanumber")
+ if !hasmapto('<Plug>AM_anum')|map <unique> <Leader>anum	<Plug>AM_aenum|endif
+else
+ if !hasmapto('<Plug>AM_anum')|map <unique> <Leader>anum	<Plug>AM_aunum|endif
+endif
+
+map <silent> <script> <Plug>AM_a?		<SID>WS:AlignCtrl mIp1P1lC ? : : : : <CR>:'a,.Align<CR>:'a,'z-1s/\(\s\+\)? /?\1/e<CR><SID>WE
+map <silent> <script> <Plug>AM_a,		<SID>WS:'y,'zs/\(\S\)\s\+/\1 /ge<CR>'yjma'zk:call AlignMaps#CharJoiner(",")<cr>:silent 'y,'zg/,/call AlignMaps#FixMultiDec()<CR>'z:exe "norm \<Plug>AM_adec"<cr><SID>WE
+map <silent> <script> <Plug>AM_a<		<SID>WS:AlignCtrl mIp1P1=l << >><CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_a(       <SID>WS:AlignCtrl mIp0P1=l<CR>:'a,.Align [(,]<CR>:sil 'y+1,'z-1s/\(\s\+\),/,\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_a=		<SID>WS:AlignCtrl mIp1P1=l<CR>:AlignCtrl g :=<CR>:'a,'zAlign :\==<CR><SID>WE
+map <silent> <script> <Plug>AM_abox		<SID>WS:let g:alignmaps_iws=substitute(getline("'a"),'^\(\s*\).*$','\1','e')<CR>:'a,'z-1s/^\s\+//e<CR>:'a,'z-1s/^.*$/@&@/<CR>:AlignCtrl m=p01P0w @<CR>:'a,.Align<CR>:'a,'z-1s/@/ * /<CR>:'a,'z-1s/@$/*/<CR>'aYP:s/./*/g<CR>0r/'zkYp:s/./*/g<CR>0r A/<Esc>:exe "'a-1,'z-1s/^/".g:alignmaps_iws."/e"<CR><SID>WE
+map <silent> <script> <Plug>AM_acom		<SID>WS:'a,.s/\/[*/]\/\=/@&@/e<CR>:'a,.s/\*\//@&/e<CR>:'y,'zs/^\( *\) @/\1@/e<CR>'zk:call AlignMaps#StdAlign(2)<CR>:'y,'zs/^\(\s*\) @/\1/e<CR>:'y,'zs/ @//eg<CR><SID>WE
+map <silent> <script> <Plug>AM_adcom	<SID>WS:'a,.v/^\s*\/[/*]/s/\/[*/]\*\=/@&@/e<CR>:'a,.v/^\s*\/[/*]/s/\*\//@&/e<CR>:'y,'zv/^\s*\/[/*]/s/^\( *\) @/\1@/e<CR>'zk:call AlignMaps#StdAlign(3)<cr>:'y,'zv/^\s*\/[/*]/s/^\(\s*\) @/\1/e<CR>:'y,'zs/ @//eg<CR><SID>WE
+map <silent> <script> <Plug>AM_aocom	<SID>WS:AlignPush<CR>:AlignCtrl g /[*/]<CR>:exe "norm \<Plug>AM_acom"<cr>:AlignPop<CR><SID>WE
+map <silent> <script> <Plug>AM_ascom	<SID>WS:'a,.s/\/[*/]/@&@/e<CR>:'a,.s/\*\//@&/e<CR>:silent! 'a,.g/^\s*@\/[*/]/s/@//ge<CR>:AlignCtrl v ^\s*\/[*/]<CR>:AlignCtrl g \/[*/]<CR>'zk:call AlignMaps#StdAlign(2)<cr>:'y,'zs/^\(\s*\) @/\1/e<CR>:'y,'zs/ @//eg<CR><SID>WE
+map <silent> <script> <Plug>AM_adec		<SID>WS:'a,'zs/\([^ \t/(]\)\([*&]\)/\1 \2/e<CR>:'y,'zv/^\//s/\([^ \t]\)\s\+/\1 /ge<CR>:'y,'zv/^\s*[*/]/s/\([^/][*&]\)\s\+/\1/ge<CR>:'y,'zv/^\s*[*/]/s/^\(\s*\%(\K\k*\s\+\%([a-zA-Z_*(&]\)\@=\)\+\)\([*(&]*\)\s*\([a-zA-Z0-9_()]\+\)\s*\(\(\[.\{-}]\)*\)\s*\(=\)\=\s*\(.\{-}\)\=\s*;/\1@\2#@\3\4@\6@\7;@/e<CR>:'y,'zv/^\s*[*/]/s/\*\/\s*$/@*\//e<CR>:'y,'zv/^\s*[*/]/s/^\s\+\*/@@@@@* /e<CR>:'y,'zv/^\s*[*/]/s/^@@@@@\*\(.*[^*/]\)$/&@*/e<CR>'yjma'zk:AlignCtrl v ^\s*[*/#]<CR>:call AlignMaps#StdAlign(1)<cr>:'y,'zv/^\s*[*/]/s/@ //ge<CR>:'y,'zv/^\s*[*/]/s/\(\s*\);/;\1/e<CR>:'y,'zv/^#/s/# //e<CR>:'y,'zv/^\s\+[*/#]/s/\([^/*]\)\(\*\+\)\( \+\)/\1\3\2/e<CR>:'y,'zv/^\s\+[*/#]/s/\((\+\)\( \+\)\*/\2\1*/e<CR>:'y,'zv/^\s\+[*/#]/s/^\(\s\+\) \*/\1*/e<CR>:'y,'zv/^\s\+[*/#]/s/[ \t@]*$//e<CR>:'y,'zs/^[*]/ */e<CR><SID>WE
+map <silent> <script> <Plug>AM_adef		<SID>WS:AlignPush<CR>:AlignCtrl v ^\s*\(\/\*\<bar>\/\/\)<CR>:'a,.v/^\s*\(\/\*\<bar>\/\/\)/s/^\(\s*\)#\(\s\)*define\s*\(\I[a-zA-Z_0-9(),]*\)\s*\(.\{-}\)\($\<Bar>\/\*\)/#\1\2define @\3@\4@\5/e<CR>:'a,.v/^\s*\(\/\*\<bar>\/\/\)/s/\($\<Bar>\*\/\)/@&/e<CR>'zk:call AlignMaps#StdAlign(1)<cr>'yjma'zk:'a,.v/^\s*\(\/\*\<bar>\/\/\)/s/ @//g<CR><SID>WE
+map <silent> <script> <Plug>AM_afnc		:<c-u>set lz<CR>:silent call AlignMaps#Afnc()<CR>:set nolz<CR>
+map <silent> <script> <Plug>AM_aunum	<SID>WS:'a,'zs/\%([0-9.]\)\s\+\zs\([-+.]\=\d\)/@\1/ge<CR>:'a,'zs/\(\(^\|\s\)\d\+\)\(\s\+\)@/\1@\3@/ge<CR>:'a,'zs/\.@/\.0@/ge<CR>:AlignCtrl wmp0P0r<CR>:'a,'zAlign [.@]<CR>:'a,'zs/@/ /ge<CR>:'a,'zs/\(\.\)\(\s\+\)\([0-9.,eE+]\+\)/\1\3\2/ge<CR>:'a,'zs/\([eE]\)\(\s\+\)\([0-9+\-+]\+\)/\1\3\2/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_aenum	<SID>WS:'a,'zs/\%([0-9.]\)\s\+\([-+]\=\d\)/\1@\2/ge<CR>:'a,'zs/\.@/\.0@/ge<CR>:AlignCtrl wmp0P0r<CR>:'a,'zAlign [,@]<CR>:'a,'zs/@/ /ge<CR>:'a,'zs/\(,\)\(\s\+\)\([-0-9.,eE+]\+\)/\1\3\2/ge<CR>:'a,'zs/\([eE]\)\(\s\+\)\([0-9+\-+]\+\)/\1\3\2/ge<CR><SID>WE
+
+" ---------------------------------------------------------------------
+" html table alignment	{{{2
+if !hasmapto('<Plug>AM_Htd')|map <unique> <Leader>Htd	<Plug>AM_Htd|endif
+map <silent> <script> <Plug>AM_Htd <SID>WS:'y,'zs%<[tT][rR]><[tT][dD][^>]\{-}>\<Bar></[tT][dD]><[tT][dD][^>]\{-}>\<Bar></[tT][dD]></[tT][rR]>%@&@%g<CR>'yjma'zk:AlignCtrl m=Ilp1P0 @<CR>:'a,.Align<CR>:'y,'zs/ @/@/<CR>:'y,'zs/@ <[tT][rR]>/<[tT][rR]>/ge<CR>:'y,'zs/@//ge<CR><SID>WE
+
+" ---------------------------------------------------------------------
+" character-based right-justified alignment maps {{{2
+if !hasmapto('<Plug>AM_T|')|map <unique> <Leader>T|		<Plug>AM_T||endif
+if !hasmapto('<Plug>AM_T#')	 |map <unique> <Leader>T#		<Plug>AM_T#|endif
+if !hasmapto('<Plug>AM_T,')	 |map <unique> <Leader>T,		<Plug>AM_T,o|endif
+if !hasmapto('<Plug>AM_Ts,') |map <unique> <Leader>Ts,		<Plug>AM_Ts,|endif
+if !hasmapto('<Plug>AM_T:')	 |map <unique> <Leader>T:		<Plug>AM_T:|endif
+if !hasmapto('<Plug>AM_T;')	 |map <unique> <Leader>T;		<Plug>AM_T;|endif
+if !hasmapto('<Plug>AM_T<')	 |map <unique> <Leader>T<		<Plug>AM_T<|endif
+if !hasmapto('<Plug>AM_T=')	 |map <unique> <Leader>T=		<Plug>AM_T=|endif
+if !hasmapto('<Plug>AM_T?')	 |map <unique> <Leader>T?		<Plug>AM_T?|endif
+if !hasmapto('<Plug>AM_T@')	 |map <unique> <Leader>T@		<Plug>AM_T@|endif
+if !hasmapto('<Plug>AM_Tab') |map <unique> <Leader>Tab		<Plug>AM_Tab|endif
+if !hasmapto('<Plug>AM_Tsp') |map <unique> <Leader>Tsp		<Plug>AM_Tsp|endif
+if !hasmapto('<Plug>AM_T~')	 |map <unique> <Leader>T~		<Plug>AM_T~|endif
+
+map <silent> <script> <Plug>AM_T| <SID>WS:AlignCtrl mIp0P0=r <Bar><CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_T#   <SID>WS:AlignCtrl mIp0P0=r #<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_T,   <SID>WS:AlignCtrl mIp0P1=r ,<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_Ts,  <SID>WS:AlignCtrl mIp0P1=r ,<CR>:'a,.Align<CR>:'a,.s/\(\s*\),/,\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_T:   <SID>WS:AlignCtrl mIp1P1=r :<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_T;   <SID>WS:AlignCtrl mIp0P0=r ;<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_T<   <SID>WS:AlignCtrl mIp0P0=r <<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_T=   <SID>WS:'a,'z-1s/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'z-1s@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'z-1s/; */;@/e<CR>:'a,'z-1s/==/\="\<Char-0x0f>\<Char-0x0f>"/ge<CR>:'a,'z-1s/!=/\x="!\<Char-0x0f>"/ge<CR>:AlignCtrl mIp1P1=r = @<CR>:AlignCtrl g =<CR>:'a,'z-1Align<CR>:'a,'z-1s/; *@/;/e<CR>:'a,'z-1s/; *$/;/e<CR>:'a,'z-1s@\([*/+\-%<Bar>&\~^]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1s/\( \+\);/;\1/ge<CR>:'a,'z-1s/\xff/=/ge<CR><SID>WE:exe "norm <Plug>acom"
+map <silent> <script> <Plug>AM_T?   <SID>WS:AlignCtrl mIp0P0=r ?<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_T@   <SID>WS:AlignCtrl mIp0P0=r @<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_Tab  <SID>WS:'a,.s/^\(\t*\)\(.*\)/\=submatch(1).escape(substitute(submatch(2),'\t','@','g'),'\')/<CR>:AlignCtrl mI=r @<CR>:'a,.Align<CR>:'y+1,'z-1s/@/ /g<CR><SID>WE
+map <silent> <script> <Plug>AM_Tsp  <SID>WS:'a,.s/^\(\s*\)\(.*\)/\=submatch(1).escape(substitute(submatch(2),'\s\+','@','g'),'\')/<CR>:AlignCtrl mI=r @<CR>:'a,.Align<CR>:'y+1,'z-1s/@/ /g<CR><SID>WE
+map <silent> <script> <Plug>AM_T~   <SID>WS:AlignCtrl mIp0P0=r ~<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE
+
+" ---------------------------------------------------------------------
+" character-based left-justified alignment maps {{{2
+if !hasmapto('<Plug>AM_t|')	|map <unique> <Leader>t|	<Plug>AM_t||endif
+if !hasmapto('<Plug>AM_t#')		|map <unique> <Leader>t#	<Plug>AM_t#|endif
+if !hasmapto('<Plug>AM_t,')		|map <unique> <Leader>t,	<Plug>AM_t,|endif
+if !hasmapto('<Plug>AM_t:')		|map <unique> <Leader>t:	<Plug>AM_t:|endif
+if !hasmapto('<Plug>AM_t;')		|map <unique> <Leader>t;	<Plug>AM_t;|endif
+if !hasmapto('<Plug>AM_t<')		|map <unique> <Leader>t<	<Plug>AM_t<|endif
+if !hasmapto('<Plug>AM_t=')		|map <unique> <Leader>t=	<Plug>AM_t=|endif
+if !hasmapto('<Plug>AM_ts,')	|map <unique> <Leader>ts,	<Plug>AM_ts,|endif
+if !hasmapto('<Plug>AM_ts:')	|map <unique> <Leader>ts:	<Plug>AM_ts:|endif
+if !hasmapto('<Plug>AM_ts;')	|map <unique> <Leader>ts;	<Plug>AM_ts;|endif
+if !hasmapto('<Plug>AM_ts<')	|map <unique> <Leader>ts<	<Plug>AM_ts<|endif
+if !hasmapto('<Plug>AM_ts=')	|map <unique> <Leader>ts=	<Plug>AM_ts=|endif
+if !hasmapto('<Plug>AM_w=')		|map <unique> <Leader>w=	<Plug>AM_w=|endif
+if !hasmapto('<Plug>AM_t?')		|map <unique> <Leader>t?	<Plug>AM_t?|endif
+if !hasmapto('<Plug>AM_t~')		|map <unique> <Leader>t~	<Plug>AM_t~|endif
+if !hasmapto('<Plug>AM_t@')		|map <unique> <Leader>t@	<Plug>AM_t@|endif
+if !hasmapto('<Plug>AM_m=')		|map <unique> <Leader>m=	<Plug>AM_m=|endif
+if !hasmapto('<Plug>AM_tab')	|map <unique> <Leader>tab	<Plug>AM_tab|endif
+if !hasmapto('<Plug>AM_tml')	|map <unique> <Leader>tml	<Plug>AM_tml|endif
+if !hasmapto('<Plug>AM_tsp')	|map <unique> <Leader>tsp	<Plug>AM_tsp|endif
+if !hasmapto('<Plug>AM_tsq')	|map <unique> <Leader>tsq	<Plug>AM_tsq|endif
+if !hasmapto('<Plug>AM_tt')		|map <unique> <Leader>tt	<Plug>AM_tt|endif
+
+map <silent> <script> <Plug>AM_t|		<SID>WS:AlignCtrl mIp0P0=l <Bar><CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_t#		<SID>WS:AlignCtrl mIp0P0=l #<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_t,		<SID>WS:AlignCtrl mIp0P1=l ,<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_t:		<SID>WS:AlignCtrl mIp1P1=l :<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_t;		<SID>WS:AlignCtrl mIp0P1=l ;<CR>:'a,.Align<CR>:sil 'y,'zs/\( *\);/;\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_t<		<SID>WS:AlignCtrl mIp0P0=l <<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_t=		<SID>WS:call AlignMaps#Equals()<CR><SID>WE
+map <silent> <script> <Plug>AM_ts,		<SID>WS:AlignCtrl mIp0P1=l #<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\)#/,\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_ts,		<SID>WS:AlignCtrl mIp0P1=l ,<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\),/,\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_ts:		<SID>WS:AlignCtrl mIp1P1=l :<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\):/:\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_ts;		<SID>WS:AlignCtrl mIp1P1=l ;<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\);/;\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_ts<		<SID>WS:AlignCtrl mIp1P1=l <<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\)</<\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_ts=		<SID>WS:AlignCtrl mIp1P1=l =<CR>:'a,.Align<CR>:sil 'y+1,'z-1s/\(\s*\)=/=\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_w=		<SID>WS:'a,'zg/=/s/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'zg/=/s@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'zg/=/s/==/\="\<Char-0x0f>\<Char-0x0f>"/ge<CR>:'a,'zg/=/s/!=/\="!\<Char-0x0f>"/ge<CR>'zk:AlignCtrl mWp1P1=l =<CR>:AlignCtrl g =<CR>:'a,'z-1g/=/Align<CR>:'a,'z-1g/=/s@\([*/+\-%<Bar>&\~^!=]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1g/=/s/\( \+\);/;\1/ge<CR>:'a,'z-1v/^\s*\/[*/]/s/\/[*/]/@&@/e<CR>:'a,'z-1v/^\s*\/[*/]/s/\*\//@&/e<CR>'zk:call AlignMaps#StdAlign(1)<cr>:'y,'zs/^\(\s*\) @/\1/e<CR>:'a,'z-1g/=/s/\xff/=/ge<CR>:'y,'zg/=/s/ @//eg<CR><SID>WE
+map <silent> <script> <Plug>AM_t?		<SID>WS:AlignCtrl mIp0P0=l ?<CR>:'a,.Align<CR>:.,'zs/ \( *\);/;\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_t~		<SID>WS:AlignCtrl mIp0P0=l ~<CR>:'a,.Align<CR>:'y,'zs/ \( *\);/;\1/ge<CR><SID>WE
+map <silent> <script> <Plug>AM_t@		<SID>WS::call AlignMaps#StdAlign(1)<cr>:<SID>WE
+map <silent> <script> <Plug>AM_m=		<SID>WS:'a,'zs/\s\+\([*/+\-%<Bar>&\~^]\==\)/ \1/e<CR>:'a,'zs@ \+\([*/+\-%<Bar>&\~^]\)=@\1=@ge<CR>:'a,'zs/==/\="\<Char-0x0f>\<Char-0x0f>"/ge<CR>:'a,'zs/!=/\="!\<Char-0x0f>"/ge<CR>'zk:AlignCtrl mIp1P1=l =<CR>:AlignCtrl g =<CR>:'a,'z-1Align<CR>:'a,'z-1s@\([*/+\-%<Bar>&\~^!=]\)\( \+\)=@\2\1=@ge<CR>:'a,'z-1s/\( \+\);/;\1/ge<CR>:'a,'z-s/%\ze[^=]/ @%@ /e<CR>'zk:call AlignMaps#StdAlign(1)<cr>:'y,'zs/^\(\s*\) @/\1/e<CR>:'a,'z-1s/\xff/=/ge<CR>:'y,'zs/ @//eg<CR><SID>WE
+map <silent> <script> <Plug>AM_tab		<SID>WS:'a,.s/^\(\t*\)\(.*\)$/\=submatch(1).escape(substitute(submatch(2),'\t',"\<Char-0x0f>",'g'),'\')/<CR>:if &ts == 1<bar>exe "AlignCtrl mI=lp0P0 \<Char-0x0f>"<bar>else<bar>exe "AlignCtrl mI=l \<Char-0x0f>"<bar>endif<CR>:'a,.Align<CR>:exe "'y+1,'z-1s/\<Char-0x0f>/".((&ts == 1)? '\t' : ' ')."/g"<CR><SID>WE
+map <silent> <script> <Plug>AM_tml		<SID>WS:AlignCtrl mWp1P0=l \\\@<!\\\s*$<CR>:'a,.Align<CR><SID>WE
+map <silent> <script> <Plug>AM_tsp		<SID>WS:'a,.s/^\(\s*\)\(.*\)/\=submatch(1).escape(substitute(submatch(2),'\s\+','@','g'),'\')/<CR>:AlignCtrl mI=lp0P0 @<CR>:'a,.Align<CR>:'y+1,'z-1s/@/ /g<CR><SID>WE
+map <silent> <script> <Plug>AM_tsq		<SID>WS:'a,.AlignReplaceQuotedSpaces<CR>:'a,.s/^\(\s*\)\(.*\)/\=submatch(1).substitute(submatch(2),'\s\+','@','g')/<CR>:AlignCtrl mIp0P0=l @<CR>:'a,.Align<CR>:'y+1,'z-1s/[%@]/ /g<CR><SID>WE
+map <silent> <script> <Plug>AM_tt		<SID>WS:AlignCtrl mIp1P1=l \\\@<!& \\\\<CR>:'a,.Align<CR><SID>WE
+
+" =====================================================================
+" Menu Support: {{{1
+"   ma ..move.. use menu
+"   v V or ctrl-v ..move.. use menu
+if has("menu") && has("gui_running") && &go =~ 'm' && !exists("s:firstmenu")
+ let s:firstmenu= 1
+ if !exists("g:DrChipTopLvlMenu")
+  let g:DrChipTopLvlMenu= "DrChip."
+ endif
+ if g:DrChipTopLvlMenu != ""
+  let s:mapleader = exists("g:mapleader")? g:mapleader : '\'
+  let s:emapleader= escape(s:mapleader,'\ ')
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.<<\ and\ >><tab>'.s:emapleader.'a<	'.s:mapleader.'a<'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Assignment\ =<tab>'.s:emapleader.'t=	'.s:mapleader.'t='
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Assignment\ :=<tab>'.s:emapleader.'a=	'.s:mapleader.'a='
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Backslashes<tab>'.s:emapleader.'tml	'.s:mapleader.'tml'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Breakup\ Comma\ Declarations<tab>'.s:emapleader.'a,	'.s:mapleader.'a,'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.C\ Comment\ Box<tab>'.s:emapleader.'abox	'.s:mapleader.'abox'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Commas<tab>'.s:emapleader.'t,	'.s:mapleader.'t,'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Commas<tab>'.s:emapleader.'ts,	'.s:mapleader.'ts,'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Commas\ With\ Strings<tab>'.s:emapleader.'tsq	'.s:mapleader.'tsq'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Comments<tab>'.s:emapleader.'acom	'.s:mapleader.'acom'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Comments\ Only<tab>'.s:emapleader.'aocom	'.s:mapleader.'aocom'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Declaration\ Comments<tab>'.s:emapleader.'adcom	'.s:mapleader.'adcom'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Declarations<tab>'.s:emapleader.'adec	'.s:mapleader.'adec'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Definitions<tab>'.s:emapleader.'adef	'.s:mapleader.'adef'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Function\ Header<tab>'.s:emapleader.'afnc	'.s:mapleader.'afnc'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Html\ Tables<tab>'.s:emapleader.'Htd	'.s:mapleader.'Htd'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.(\.\.\.)?\.\.\.\ :\ \.\.\.<tab>'.s:emapleader.'a?	'.s:mapleader.'a?'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Numbers<tab>'.s:emapleader.'anum	'.s:mapleader.'anum'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Numbers\ (American-Style)<tab>'.s:emapleader.'aunum	<Leader>aunum	'.s:mapleader.'aunum	<Leader>aunum'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Numbers\ (Euro-Style)<tab>'.s:emapleader.'aenum	'.s:mapleader.'aenum'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Spaces\ (Left\ Justified)<tab>'.s:emapleader.'tsp	'.s:mapleader.'tsp'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Spaces\ (Right\ Justified)<tab>'.s:emapleader.'Tsp	'.s:mapleader.'Tsp'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Statements\ With\ Percent\ Style\ Comments<tab>'.s:emapleader.'m=	'.s:mapleader.'m='
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Symbol\ <<tab>'.s:emapleader.'t<	'.s:mapleader.'t<'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Symbol\ \|<tab>'.s:emapleader.'t\|	'.s:mapleader.'t|'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Symbol\ @<tab>'.s:emapleader.'t@	'.s:mapleader.'t@'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Symbol\ #<tab>'.s:emapleader.'t#	'.s:mapleader.'t#'
+  exe 'menu '.g:DrChipTopLvlMenu.'AlignMaps.Tabs<tab>'.s:emapleader.'tab	'.s:mapleader.'tab'
+  unlet s:mapleader
+  unlet s:emapleader
+ endif
+endif
+
+" =====================================================================
+"  Restore: {{{1
+let &cpo= s:keepcpo
+unlet s:keepcpo
+
+" ==============================================================================
+"  Modelines: {{{1
+" vim: ts=4 nowrap fdm=marker
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/AlignPlugin.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/AlignPlugin.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/AlignPlugin.vim	(revision 27955)
@@ -0,0 +1,41 @@
+" AlignPlugin: tool to align multiple fields based on one or more separators
+"   Author:	 Charles E. Campbell, Jr.
+"   Date:    Nov 02, 2008
+" GetLatestVimScripts: 294 1 :AutoInstall: Align.vim
+" GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim
+" Copyright:    Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1
+"               Permission is hereby granted to use and distribute this code,
+"               with or without modifications, provided that this copyright
+"               notice is copied with it. Like anything else that's free,
+"               Align.vim is provided *as is* and comes with no warranty
+"               of any kind, either expressed or implied. By using this
+"               plugin, you agree that in no event will the copyright
+"               holder be liable for any damages resulting from the use
+"               of this software.
+"
+" Romans 1:16,17a : For I am not ashamed of the gospel of Christ, for it is {{{1
+" the power of God for salvation for everyone who believes; for the Jew first,
+" and also for the Greek.  For in it is revealed God's righteousness from
+" faith to faith.
+" ---------------------------------------------------------------------
+" Load Once: {{{1
+if &cp || exists("g:loaded_AlignPlugin")
+ finish
+endif
+let g:loaded_AlignPlugin = "v35"
+let s:keepcpo            = &cpo
+set cpo&vim
+
+" ---------------------------------------------------------------------
+" Public Interface: {{{1
+com! -bang -range -nargs=* Align <line1>,<line2>call Align#Align(<bang>0,<q-args>)
+com!       -range -nargs=0 AlignReplaceQuotedSpaces <line1>,<line2>call Align#AlignReplaceQuotedSpaces()
+com!              -nargs=* AlignCtrl call Align#AlignCtrl(<q-args>)
+com!              -nargs=0 AlignPush call Align#AlignPush()
+com!              -nargs=0 AlignPop  call Align#AlignPop()
+
+" ---------------------------------------------------------------------
+"  Restore: {{{1
+let &cpo= s:keepcpo
+unlet s:keepcpo
+" vim: ts=4 fdm=marker
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/cecutil.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/cecutil.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/cecutil.vim	(revision 27955)
@@ -0,0 +1,510 @@
+" cecutil.vim : save/restore window position
+"               save/restore mark position
+"               save/restore selected user maps
+"  Author:	Charles E. Campbell, Jr.
+"  Version:	18b	ASTRO-ONLY
+"  Date:	Aug 27, 2008
+"
+"  Saving Restoring Destroying Marks: {{{1
+"       call SaveMark(markname)       let savemark= SaveMark(markname)
+"       call RestoreMark(markname)    call RestoreMark(savemark)
+"       call DestroyMark(markname)
+"       commands: SM RM DM
+"
+"  Saving Restoring Destroying Window Position: {{{1
+"       call SaveWinPosn()        let winposn= SaveWinPosn()
+"       call RestoreWinPosn()     call RestoreWinPosn(winposn)
+"		\swp : save current window/buffer's position
+"		\rwp : restore current window/buffer's previous position
+"       commands: SWP RWP
+"
+"  Saving And Restoring User Maps: {{{1
+"       call SaveUserMaps(mapmode,maplead,mapchx,suffix)
+"       call RestoreUserMaps(suffix)
+"
+" GetLatestVimScripts: 1066 1 :AutoInstall: cecutil.vim
+"
+" You believe that God is one. You do well. The demons also {{{1
+" believe, and shudder. But do you want to know, vain man, that
+" faith apart from works is dead?  (James 2:19,20 WEB)
+
+" ---------------------------------------------------------------------
+" Load Once: {{{1
+if &cp || exists("g:loaded_cecutil")
+ finish
+endif
+let g:loaded_cecutil = "v18b"
+let s:keepcpo        = &cpo
+set cpo&vim
+"DechoTabOn
+
+" =======================
+"  Public Interface: {{{1
+" =======================
+
+" ---------------------------------------------------------------------
+"  Map Interface: {{{2
+if !hasmapto('<Plug>SaveWinPosn')
+ map <unique> <Leader>swp <Plug>SaveWinPosn
+endif
+if !hasmapto('<Plug>RestoreWinPosn')
+ map <unique> <Leader>rwp <Plug>RestoreWinPosn
+endif
+nmap <silent> <Plug>SaveWinPosn		:call SaveWinPosn()<CR>
+nmap <silent> <Plug>RestoreWinPosn	:call RestoreWinPosn()<CR>
+
+" ---------------------------------------------------------------------
+" Command Interface: {{{2
+com! -bar -nargs=0 SWP	call SaveWinPosn()
+com! -bar -nargs=0 RWP	call RestoreWinPosn()
+com! -bar -nargs=1 SM	call SaveMark(<q-args>)
+com! -bar -nargs=1 RM	call RestoreMark(<q-args>)
+com! -bar -nargs=1 DM	call DestroyMark(<q-args>)
+
+if v:version < 630
+ let s:modifier= "sil "
+else
+ let s:modifier= "sil keepj "
+endif
+
+" ===============
+" Functions: {{{1
+" ===============
+
+" ---------------------------------------------------------------------
+" SaveWinPosn: {{{2
+"    let winposn= SaveWinPosn()  will save window position in winposn variable
+"    call SaveWinPosn()          will save window position in b:cecutil_winposn{b:cecutil_iwinposn}
+"    let winposn= SaveWinPosn(0) will *only* save window position in winposn variable (no stacking done)
+fun! SaveWinPosn(...)
+"  call Dfunc("SaveWinPosn() a:0=".a:0)
+  if line(".") == 1 && getline(1) == ""
+"   call Dfunc("SaveWinPosn : empty buffer")
+   return ""
+  endif
+  let so_keep   = &l:so
+  let siso_keep = &siso
+  let ss_keep   = &l:ss
+  setlocal so=0 siso=0 ss=0
+
+  let swline    = line(".")
+  let swcol     = col(".")
+  let swwline   = winline() - 1
+  let swwcol    = virtcol(".") - wincol()
+  let savedposn = "call GoWinbufnr(".winbufnr(0).")|silent ".swline
+  let savedposn = savedposn."|".s:modifier."norm! 0z\<cr>"
+  if swwline > 0
+   let savedposn= savedposn.":".s:modifier."norm! ".swwline."\<c-y>\<cr>"
+  endif
+  if swwcol > 0
+   let savedposn= savedposn.":".s:modifier."norm! 0".swwcol."zl\<cr>"
+  endif
+  let savedposn = savedposn.":".s:modifier."call cursor(".swline.",".swcol.")\<cr>"
+
+  " save window position in
+  " b:cecutil_winposn_{iwinposn} (stack)
+  " only when SaveWinPosn() is used
+  if a:0 == 0
+   if !exists("b:cecutil_iwinposn")
+   	let b:cecutil_iwinposn= 1
+   else
+   	let b:cecutil_iwinposn= b:cecutil_iwinposn + 1
+   endif
+"   call Decho("saving posn to SWP stack")
+   let b:cecutil_winposn{b:cecutil_iwinposn}= savedposn
+  endif
+
+  let &l:so = so_keep
+  let &siso = siso_keep
+  let &l:ss = ss_keep
+
+"  if exists("b:cecutil_iwinposn")	 " Decho
+"   call Decho("b:cecutil_winpos{".b:cecutil_iwinposn."}[".b:cecutil_winposn{b:cecutil_iwinposn}."]")
+"  else                      " Decho
+"   call Decho("b:cecutil_iwinposn doesn't exist")
+"  endif                     " Decho
+"  call Dret("SaveWinPosn [".savedposn."]")
+  return savedposn
+endfun
+
+" ---------------------------------------------------------------------
+" RestoreWinPosn: {{{2
+"      call RestoreWinPosn()
+"      call RestoreWinPosn(winposn)
+fun! RestoreWinPosn(...)
+"  call Dfunc("RestoreWinPosn() a:0=".a:0)
+"  call Decho("getline(1)<".getline(1).">")
+"  call Decho("line(.)=".line("."))
+  if line(".") == 1 && getline(1) == ""
+"   call Dfunc("RestoreWinPosn : empty buffer")
+   return ""
+  endif
+  let so_keep   = &l:so
+  let siso_keep = &l:siso
+  let ss_keep   = &l:ss
+  setlocal so=0 siso=0 ss=0
+
+  if a:0 == 0 || a:1 == ""
+   " use saved window position in b:cecutil_winposn{b:cecutil_iwinposn} if it exists
+   if exists("b:cecutil_iwinposn") && exists("b:cecutil_winposn{b:cecutil_iwinposn}")
+"   	call Decho("using stack b:cecutil_winposn{".b:cecutil_iwinposn."}<".b:cecutil_winposn{b:cecutil_iwinposn}.">")
+	try
+     exe "silent! ".b:cecutil_winposn{b:cecutil_iwinposn}
+	catch /^Vim\%((\a\+)\)\=:E749/
+	 " ignore empty buffer error messages
+	endtry
+    " normally drop top-of-stack by one
+    " but while new top-of-stack doesn't exist
+    " drop top-of-stack index by one again
+	if b:cecutil_iwinposn >= 1
+	 unlet b:cecutil_winposn{b:cecutil_iwinposn}
+	 let b:cecutil_iwinposn= b:cecutil_iwinposn - 1
+	 while b:cecutil_iwinposn >= 1 && !exists("b:cecutil_winposn{b:cecutil_iwinposn}")
+	  let b:cecutil_iwinposn= b:cecutil_iwinposn - 1
+	 endwhile
+	 if b:cecutil_iwinposn < 1
+	  unlet b:cecutil_iwinposn
+	 endif
+	endif
+   else
+   	echohl WarningMsg
+	echomsg "***warning*** need to SaveWinPosn first!"
+	echohl None
+   endif
+
+  else	 " handle input argument
+"   call Decho("using input a:1<".a:1.">")
+   " use window position passed to this function
+   exe "silent ".a:1
+   " remove a:1 pattern from b:cecutil_winposn{b:cecutil_iwinposn} stack
+   if exists("b:cecutil_iwinposn")
+    let jwinposn= b:cecutil_iwinposn
+    while jwinposn >= 1                     " search for a:1 in iwinposn..1
+        if exists("b:cecutil_winposn{jwinposn}")    " if it exists
+         if a:1 == b:cecutil_winposn{jwinposn}      " and the pattern matches
+       unlet b:cecutil_winposn{jwinposn}            " unlet it
+       if jwinposn == b:cecutil_iwinposn            " if at top-of-stack
+        let b:cecutil_iwinposn= b:cecutil_iwinposn - 1      " drop stacktop by one
+       endif
+      endif
+     endif
+     let jwinposn= jwinposn - 1
+    endwhile
+   endif
+  endif
+
+  " Seems to be something odd: vertical motions after RWP
+  " cause jump to first column.  The following fixes that.
+  " Note: was using wincol()>1, but with signs, a cursor
+  " at column 1 yields wincol()==3.  Beeping ensued.
+  if virtcol('.') > 1
+   silent norm! hl
+  elseif virtcol(".") < virtcol("$")
+   silent norm! lh
+  endif
+
+  let &l:so   = so_keep
+  let &l:siso = siso_keep
+  let &l:ss   = ss_keep
+
+"  call Dret("RestoreWinPosn")
+endfun
+
+" ---------------------------------------------------------------------
+" GoWinbufnr: go to window holding given buffer (by number) {{{2
+"   Prefers current window; if its buffer number doesn't match,
+"   then will try from topleft to bottom right
+fun! GoWinbufnr(bufnum)
+"  call Dfunc("GoWinbufnr(".a:bufnum.")")
+  if winbufnr(0) == a:bufnum
+"   call Dret("GoWinbufnr : winbufnr(0)==a:bufnum")
+   return
+  endif
+  winc t
+  let first=1
+  while winbufnr(0) != a:bufnum && (first || winnr() != 1)
+  	winc w
+	let first= 0
+   endwhile
+"  call Dret("GoWinbufnr")
+endfun
+
+" ---------------------------------------------------------------------
+" SaveMark: sets up a string saving a mark position. {{{2
+"           For example, SaveMark("a")
+"           Also sets up a global variable, g:savemark_{markname}
+fun! SaveMark(markname)
+"  call Dfunc("SaveMark(markname<".a:markname.">)")
+  let markname= a:markname
+  if strpart(markname,0,1) !~ '\a'
+   let markname= strpart(markname,1,1)
+  endif
+"  call Decho("markname=".markname)
+
+  let lzkeep  = &lz
+  set lz
+
+  if 1 <= line("'".markname) && line("'".markname) <= line("$")
+   let winposn               = SaveWinPosn(0)
+   exe s:modifier."norm! `".markname
+   let savemark              = SaveWinPosn(0)
+   let g:savemark_{markname} = savemark
+   let savemark              = markname.savemark
+   call RestoreWinPosn(winposn)
+  else
+   let g:savemark_{markname} = ""
+   let savemark              = ""
+  endif
+
+  let &lz= lzkeep
+
+"  call Dret("SaveMark : savemark<".savemark.">")
+  return savemark
+endfun
+
+" ---------------------------------------------------------------------
+" RestoreMark: {{{2
+"   call RestoreMark("a")  -or- call RestoreMark(savemark)
+fun! RestoreMark(markname)
+"  call Dfunc("RestoreMark(markname<".a:markname.">)")
+
+  if strlen(a:markname) <= 0
+"   call Dret("RestoreMark : no such mark")
+   return
+  endif
+  let markname= strpart(a:markname,0,1)
+  if markname !~ '\a'
+   " handles 'a -> a styles
+   let markname= strpart(a:markname,1,1)
+  endif
+"  call Decho("markname=".markname." strlen(a:markname)=".strlen(a:markname))
+
+  let lzkeep  = &lz
+  set lz
+  let winposn = SaveWinPosn(0)
+
+  if strlen(a:markname) <= 2
+   if exists("g:savemark_{markname}") && strlen(g:savemark_{markname}) != 0
+	" use global variable g:savemark_{markname}
+"	call Decho("use savemark list")
+	call RestoreWinPosn(g:savemark_{markname})
+	exe "norm! m".markname
+   endif
+  else
+   " markname is a savemark command (string)
+"	call Decho("use savemark command")
+   let markcmd= strpart(a:markname,1)
+   call RestoreWinPosn(markcmd)
+   exe "norm! m".markname
+  endif
+
+  call RestoreWinPosn(winposn)
+  let &lz       = lzkeep
+
+"  call Dret("RestoreMark")
+endfun
+
+" ---------------------------------------------------------------------
+" DestroyMark: {{{2
+"   call DestroyMark("a")  -- destroys mark
+fun! DestroyMark(markname)
+"  call Dfunc("DestroyMark(markname<".a:markname.">)")
+
+  " save options and set to standard values
+  let reportkeep= &report
+  let lzkeep    = &lz
+  set lz report=10000
+
+  let markname= strpart(a:markname,0,1)
+  if markname !~ '\a'
+   " handles 'a -> a styles
+   let markname= strpart(a:markname,1,1)
+  endif
+"  call Decho("markname=".markname)
+
+  let curmod  = &mod
+  let winposn = SaveWinPosn(0)
+  1
+  let lineone = getline(".")
+  exe "k".markname
+  d
+  put! =lineone
+  let &mod    = curmod
+  call RestoreWinPosn(winposn)
+
+  " restore options to user settings
+  let &report = reportkeep
+  let &lz     = lzkeep
+
+"  call Dret("DestroyMark")
+endfun
+
+" ---------------------------------------------------------------------
+" QArgSplitter: to avoid \ processing by <f-args>, <q-args> is needed. {{{2
+" However, <q-args> doesn't split at all, so this one returns a list
+" with splits at all whitespace (only!), plus a leading length-of-list.
+" The resulting list:  qarglist[0] corresponds to a:0
+"                      qarglist[i] corresponds to a:{i}
+fun! QArgSplitter(qarg)
+"  call Dfunc("QArgSplitter(qarg<".a:qarg.">)")
+  let qarglist    = split(a:qarg)
+  let qarglistlen = len(qarglist)
+  let qarglist    = insert(qarglist,qarglistlen)
+"  call Dret("QArgSplitter ".string(qarglist))
+  return qarglist
+endfun
+
+" ---------------------------------------------------------------------
+" ListWinPosn: {{{2
+"fun! ListWinPosn()                                                        " Decho 
+"  if !exists("b:cecutil_iwinposn") || b:cecutil_iwinposn == 0             " Decho 
+"   call Decho("nothing on SWP stack")                                     " Decho
+"  else                                                                    " Decho
+"   let jwinposn= b:cecutil_iwinposn                                       " Decho 
+"   while jwinposn >= 1                                                    " Decho 
+"    if exists("b:cecutil_winposn{jwinposn}")                              " Decho 
+"     call Decho("winposn{".jwinposn."}<".b:cecutil_winposn{jwinposn}.">") " Decho 
+"    else                                                                  " Decho 
+"     call Decho("winposn{".jwinposn."} -- doesn't exist")                 " Decho 
+"    endif                                                                 " Decho 
+"    let jwinposn= jwinposn - 1                                            " Decho 
+"   endwhile                                                               " Decho 
+"  endif                                                                   " Decho
+"endfun                                                                    " Decho 
+"com! -nargs=0 LWP	call ListWinPosn()                                    " Decho 
+
+" ---------------------------------------------------------------------
+" SaveUserMaps: this function sets up a script-variable (s:restoremap) {{{2
+"          which can be used to restore user maps later with
+"          call RestoreUserMaps()
+"
+"          mapmode - see :help maparg for details (n v o i c l "")
+"                    ex. "n" = Normal
+"                    The letters "b" and "u" are optional prefixes;
+"                    The "u" means that the map will also be unmapped
+"                    The "b" means that the map has a <buffer> qualifier
+"                    ex. "un"  = Normal + unmapping
+"                    ex. "bn"  = Normal + <buffer>
+"                    ex. "bun" = Normal + <buffer> + unmapping
+"                    ex. "ubn" = Normal + <buffer> + unmapping
+"          maplead - see mapchx
+"          mapchx  - "<something>" handled as a single map item.
+"                    ex. "<left>"
+"                  - "string" a string of single letters which are actually
+"                    multiple two-letter maps (using the maplead:
+"                    maplead . each_character_in_string)
+"                    ex. maplead="\" and mapchx="abc" saves user mappings for
+"                        \a, \b, and \c
+"                    Of course, if maplead is "", then for mapchx="abc",
+"                    mappings for a, b, and c are saved.
+"                  - :something  handled as a single map item, w/o the ":"
+"                    ex.  mapchx= ":abc" will save a mapping for "abc"
+"          suffix  - a string unique to your plugin
+"                    ex.  suffix= "DrawIt"
+fun! SaveUserMaps(mapmode,maplead,mapchx,suffix)
+"  call Dfunc("SaveUserMaps(mapmode<".a:mapmode."> maplead<".a:maplead."> mapchx<".a:mapchx."> suffix<".a:suffix.">)")
+
+  if !exists("s:restoremap_{a:suffix}")
+   " initialize restoremap_suffix to null string
+   let s:restoremap_{a:suffix}= ""
+  endif
+
+  " set up dounmap: if 1, then save and unmap  (a:mapmode leads with a "u")
+  "                 if 0, save only
+  let mapmode  = a:mapmode
+  let dounmap  = 0
+  let dobuffer = ""
+  while mapmode =~ '^[bu]'
+   if     mapmode =~ '^u'
+    let dounmap= 1
+    let mapmode= strpart(a:mapmode,1)
+   elseif mapmode =~ '^b'
+    let dobuffer= "<buffer> "
+    let mapmode= strpart(a:mapmode,1)
+   endif
+  endwhile
+"  call Decho("dounmap=".dounmap."  dobuffer<".dobuffer.">")
+ 
+  " save single map :...something...
+  if strpart(a:mapchx,0,1) == ':'
+"   call Decho("save single map :...something...")
+   let amap= strpart(a:mapchx,1)
+   if amap == "|" || amap == "\<c-v>"
+    let amap= "\<c-v>".amap
+   endif
+   let amap                    = a:maplead.amap
+   let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|:silent! ".mapmode."unmap ".dobuffer.amap
+   if maparg(amap,mapmode) != ""
+    let maprhs                  = substitute(maparg(amap,mapmode),'|','<bar>','ge')
+	let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|:".mapmode."map ".dobuffer.amap." ".maprhs
+   endif
+   if dounmap
+	exe "silent! ".mapmode."unmap ".dobuffer.amap
+   endif
+ 
+  " save single map <something>
+  elseif strpart(a:mapchx,0,1) == '<'
+"   call Decho("save single map <something>")
+   let amap       = a:mapchx
+   if amap == "|" || amap == "\<c-v>"
+    let amap= "\<c-v>".amap
+"	call Decho("amap[[".amap."]]")
+   endif
+   let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|silent! ".mapmode."unmap ".dobuffer.amap
+   if maparg(a:mapchx,mapmode) != ""
+    let maprhs                  = substitute(maparg(amap,mapmode),'|','<bar>','ge')
+	let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".amap." ".dobuffer.maprhs
+   endif
+   if dounmap
+	exe "silent! ".mapmode."unmap ".dobuffer.amap
+   endif
+ 
+  " save multiple maps
+  else
+"   call Decho("save multiple maps")
+   let i= 1
+   while i <= strlen(a:mapchx)
+    let amap= a:maplead.strpart(a:mapchx,i-1,1)
+	if amap == "|" || amap == "\<c-v>"
+	 let amap= "\<c-v>".amap
+	endif
+	let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|silent! ".mapmode."unmap ".dobuffer.amap
+    if maparg(amap,mapmode) != ""
+     let maprhs                  = substitute(maparg(amap,mapmode),'|','<bar>','ge')
+	 let s:restoremap_{a:suffix} = s:restoremap_{a:suffix}."|".mapmode."map ".amap." ".dobuffer.maprhs
+    endif
+	if dounmap
+	 exe "silent! ".mapmode."unmap ".dobuffer.amap
+	endif
+    let i= i + 1
+   endwhile
+  endif
+"  call Dret("SaveUserMaps : restoremap_".a:suffix.": ".s:restoremap_{a:suffix})
+endfun
+
+" ---------------------------------------------------------------------
+" RestoreUserMaps: {{{2
+"   Used to restore user maps saved by SaveUserMaps()
+fun! RestoreUserMaps(suffix)
+"  call Dfunc("RestoreUserMaps(suffix<".a:suffix.">)")
+  if exists("s:restoremap_{a:suffix}")
+   let s:restoremap_{a:suffix}= substitute(s:restoremap_{a:suffix},'|\s*$','','e')
+   if s:restoremap_{a:suffix} != ""
+"   	call Decho("exe ".s:restoremap_{a:suffix})
+    exe "silent! ".s:restoremap_{a:suffix}
+   endif
+   unlet s:restoremap_{a:suffix}
+  endif
+"  call Dret("RestoreUserMaps")
+endfun
+
+" ==============
+"  Restore: {{{1
+" ==============
+let &cpo= s:keepcpo
+unlet s:keepcpo
+
+" ================
+"  Modelines: {{{1
+" ================
+" vim: ts=4 fdm=marker
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/file_line.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/file_line.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/file_line.vim	(revision 27955)
@@ -0,0 +1,51 @@
+" Avoid installing twice or when in unsupported Vim version.
+if exists('g:loaded_file_line') || (v:version < 700)
+	finish
+endif
+let g:loaded_file_line = 1
+
+function! s:gotoline()
+	let file = bufname("%")
+
+	" :e command calls BufRead even though the file is a new one.
+	" As a workarround Jonas Pfenniger<jonas@pfenniger.name> added an
+	" AutoCmd BufRead, this will test if this file actually exists before
+	" searching for a file and line to goto.
+	if (filereadable(file))
+		return
+	endif
+
+	" Accept file:line:column: or file:line:column and file:line also
+	let nocol = 0
+	let names =  matchlist( file, '\(.\{-1,}\):\%(\(\d\+\)\%(:\(\d*\):\?\)\?\)\?$')
+
+	if empty(names)
+		"no column provided maybe?
+		let names =  matchlist( file, '\(.*\):\(\d\+\)')
+		let nocol = 1
+		if empty(names)
+			return
+		endif
+	endif
+
+	let file_name =  names[1]
+	let line_num  =  names[2] == ''? '0' : names[2]
+	let  col_num  = (names[3] == '' && !nocol) ? '0' : names[3]
+
+	if filereadable(file_name)
+		let l:bufn = bufnr("%")
+		exec ":bwipeout " l:bufn
+
+		exec "keepalt edit " . file_name
+		exec ":" . line_num
+		exec "normal! " . col_num . '|'
+		if foldlevel(line_num) > 0
+			exec "normal! zv"
+		endif
+
+		exec "normal! zz"
+	endif
+endfunction
+
+autocmd! BufNewFile *:* nested call s:gotoline()
+autocmd! BufRead *:* nested call s:gotoline()
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/issmfolds.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/issmfolds.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/issmfolds.vim	(revision 27955)
@@ -0,0 +1,45 @@
+function! IssmFoldText()
+
+	" Get line {{{
+	let line = getline(v:foldstart)
+	"let line = line . '--'
+	"}}}
+	" remove the marker that caused this fold from the display {{{
+	let foldmarkers = split(&foldmarker,',')
+	let line = substitute(line, '\V' .  foldmarkers[0] . '\%(\d\+\)\?', ' ', '')
+	" }}}
+	" remove comments that vim knows about {{{
+	let comment = split(&commentstring, '%s')
+	if comment[0] != ''
+		let comment_begin = comment[0]
+		let comment_end = ''
+		if len(comment) > 1
+			let comment_end = comment[1]
+		end
+		let pattern = '\V' .  comment_begin .  '\s\*' .  comment_end .  '\s\*\$'
+		if line =~ pattern
+			let line = substitute(line, pattern, ' ', '')
+		else
+			let line = substitute(line, '.*\V' .  comment_begin, ' ', '')
+			if comment_end != ''
+				let line = substitute(line, '\V' .  comment_end, ' ', '')
+			endif
+		endif
+	endif
+	" }}}
+	" remove any remaining leading or trailing whitespace {{{
+	"let line = substitute(line, '^\s*\(.\{-}\)\s*$', '\1', '')
+	let line = substitute(line, '^\s*%\(.\{-}\)\s*$', '\1', '') "Also remove % in matlab comments
+	" }}}
+	" align everything, and pad the end of the display with - {{{
+	let alignment = &columns - 18 - v:foldlevel
+	let line = strpart(printf('%-'.alignment.'s',line),0,alignment)
+	"let line = substitute(line, '\%( \)\@<= \%( *$\)\@=', '-', 'g') " ->dashes
+	let line = substitute(line, '\%( \)\@<= \%( *$\)\@=',' ', 'g')  " ->white spaces
+	" }}}
+	" format the line count {{{
+	let cnt = printf('%13s','('.(v:foldend - v:foldstart + 1) .' lines) ')
+	" }}}
+	return '+-'.v:folddashes.' '.line.cnt
+
+endfunction
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/matchit.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/matchit.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/matchit.vim	(revision 27955)
@@ -0,0 +1,812 @@
+"  matchit.vim: (global plugin) Extended "%" matching
+"  Last Change: Fri Jan 25 10:00 AM 2008 EST
+"  Maintainer:  Benji Fisher PhD   <benji@member.AMS.org>
+"  Version:     1.13.2, for Vim 6.3+
+"  URL:		http://www.vim.org/script.php?script_id=39
+
+" Documentation:
+"  The documentation is in a separate file, matchit.txt .
+
+" Credits:
+"  Vim editor by Bram Moolenaar (Thanks, Bram!)
+"  Original script and design by Raul Segura Acevedo
+"  Support for comments by Douglas Potts
+"  Support for back references and other improvements by Benji Fisher
+"  Support for many languages by Johannes Zellner
+"  Suggestions for improvement, bug reports, and support for additional
+"  languages by Jordi-Albert Batalla, Neil Bird, Servatius Brandt, Mark
+"  Collett, Stephen Wall, Dany St-Amant, Yuheng Xie, and Johannes Zellner.
+
+" Debugging:
+"  If you'd like to try the built-in debugging commands...
+"   :MatchDebug      to activate debugging for the current buffer
+"  This saves the values of several key script variables as buffer-local
+"  variables.  See the MatchDebug() function, below, for details.
+
+" TODO:  I should think about multi-line patterns for b:match_words.
+"   This would require an option:  how many lines to scan (default 1).
+"   This would be useful for Python, maybe also for *ML.
+" TODO:  Maybe I should add a menu so that people will actually use some of
+"   the features that I have implemented.
+" TODO:  Eliminate the MultiMatch function.  Add yet another argument to
+"   Match_wrapper() instead.
+" TODO:  Allow :let b:match_words = '\(\(foo\)\(bar\)\):\3\2:end\1'
+" TODO:  Make backrefs safer by using '\V' (very no-magic).
+" TODO:  Add a level of indirection, so that custom % scripts can use my
+"   work but extend it.
+
+" allow user to prevent loading
+" and prevent duplicate loading
+if exists("loaded_matchit") || &cp
+  finish
+endif
+let loaded_matchit = 1
+let s:last_mps = ""
+let s:last_words = ":"
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+nnoremap <silent> %  :<C-U>call <SID>Match_wrapper('',1,'n') <CR>
+nnoremap <silent> g% :<C-U>call <SID>Match_wrapper('',0,'n') <CR>
+vnoremap <silent> %  :<C-U>call <SID>Match_wrapper('',1,'v') <CR>m'gv``
+vnoremap <silent> g% :<C-U>call <SID>Match_wrapper('',0,'v') <CR>m'gv``
+onoremap <silent> %  v:<C-U>call <SID>Match_wrapper('',1,'o') <CR>
+onoremap <silent> g% v:<C-U>call <SID>Match_wrapper('',0,'o') <CR>
+
+" Analogues of [{ and ]} using matching patterns:
+nnoremap <silent> [% :<C-U>call <SID>MultiMatch("bW", "n") <CR>
+nnoremap <silent> ]% :<C-U>call <SID>MultiMatch("W",  "n") <CR>
+vmap [% <Esc>[%m'gv``
+vmap ]% <Esc>]%m'gv``
+" vnoremap <silent> [% :<C-U>call <SID>MultiMatch("bW", "v") <CR>m'gv``
+" vnoremap <silent> ]% :<C-U>call <SID>MultiMatch("W",  "v") <CR>m'gv``
+onoremap <silent> [% v:<C-U>call <SID>MultiMatch("bW", "o") <CR>
+onoremap <silent> ]% v:<C-U>call <SID>MultiMatch("W",  "o") <CR>
+
+" text object:
+vmap a% <Esc>[%v]%
+
+" Auto-complete mappings:  (not yet "ready for prime time")
+" TODO Read :help write-plugin for the "right" way to let the user
+" specify a key binding.
+"   let g:match_auto = '<C-]>'
+"   let g:match_autoCR = '<C-CR>'
+" if exists("g:match_auto")
+"   execute "inoremap " . g:match_auto . ' x<Esc>"=<SID>Autocomplete()<CR>Pls'
+" endif
+" if exists("g:match_autoCR")
+"   execute "inoremap " . g:match_autoCR . ' <CR><C-R>=<SID>Autocomplete()<CR>'
+" endif
+" if exists("g:match_gthhoh")
+"   execute "inoremap " . g:match_gthhoh . ' <C-O>:call <SID>Gthhoh()<CR>'
+" endif " gthhoh = "Get the heck out of here!"
+
+let s:notslash = '\\\@<!\%(\\\\\)*'
+
+function! s:Match_wrapper(word, forward, mode) range
+  " In s:CleanUp(), :execute "set" restore_options .
+  let restore_options = (&ic ? " " : " no") . "ignorecase"
+  if exists("b:match_ignorecase")
+    let &ignorecase = b:match_ignorecase
+  endif
+  let restore_options = " ve=" . &ve . restore_options
+  set ve=
+  " If this function was called from Visual mode, make sure that the cursor
+  " is at the correct end of the Visual range:
+  if a:mode == "v"
+    execute "normal! gv\<Esc>"
+  endif
+  " In s:CleanUp(), we may need to check whether the cursor moved forward.
+  let startline = line(".")
+  let startcol = col(".")
+  " Use default behavior if called with a count.
+  if v:count
+    exe "normal! " . v:count . "%"
+    return s:CleanUp(restore_options, a:mode, startline, startcol)
+  end
+
+  " First step:  if not already done, set the script variables
+  "   s:do_BR	flag for whether there are backrefs
+  "   s:pat	parsed version of b:match_words
+  "   s:all	regexp based on s:pat and the default groups
+  "
+  if !exists("b:match_words") || b:match_words == ""
+    let match_words = ""
+    " Allow b:match_words = "GetVimMatchWords()" .
+  elseif b:match_words =~ ":"
+    let match_words = b:match_words
+  else
+    execute "let match_words =" b:match_words
+  endif
+" Thanks to Preben "Peppe" Guldberg and Bram Moolenaar for this suggestion!
+  if (match_words != s:last_words) || (&mps != s:last_mps) ||
+    \ exists("b:match_debug")
+    let s:last_words = match_words
+    let s:last_mps = &mps
+    " The next several lines were here before
+    " BF started messing with this script.
+    " quote the special chars in 'matchpairs', replace [,:] with \| and then
+    " append the builtin pairs (/*, */, #if, #ifdef, #else, #elif, #endif)
+    " let default = substitute(escape(&mps, '[$^.*~\\/?]'), '[,:]\+',
+    "  \ '\\|', 'g').'\|\/\*\|\*\/\|#if\>\|#ifdef\>\|#else\>\|#elif\>\|#endif\>'
+    let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") .
+      \ '\/\*:\*\/,#if\%(def\)\=:#else\>:#elif\>:#endif\>'
+    " s:all = pattern with all the keywords
+    let match_words = match_words . (strlen(match_words) ? "," : "") . default
+    if match_words !~ s:notslash . '\\\d'
+      let s:do_BR = 0
+      let s:pat = match_words
+    else
+      let s:do_BR = 1
+      let s:pat = s:ParseWords(match_words)
+    endif
+    let s:all = substitute(s:pat, s:notslash . '\zs[,:]\+', '\\|', 'g')
+    let s:all = '\%(' . s:all . '\)'
+    " let s:all = '\%(' . substitute(s:all, '\\\ze[,:]', '', 'g') . '\)'
+    if exists("b:match_debug")
+      let b:match_pat = s:pat
+    endif
+  endif
+
+  " Second step:  set the following local variables:
+  "     matchline = line on which the cursor started
+  "     curcol    = number of characters before match
+  "     prefix    = regexp for start of line to start of match
+  "     suffix    = regexp for end of match to end of line
+  " Require match to end on or after the cursor and prefer it to
+  " start on or before the cursor.
+  let matchline = getline(startline)
+  if a:word != ''
+    " word given
+    if a:word !~ s:all
+      echohl WarningMsg|echo 'Missing rule for word:"'.a:word.'"'|echohl NONE
+      return s:CleanUp(restore_options, a:mode, startline, startcol)
+    endif
+    let matchline = a:word
+    let curcol = 0
+    let prefix = '^\%('
+    let suffix = '\)$'
+  " Now the case when "word" is not given
+  else	" Find the match that ends on or after the cursor and set curcol.
+    let regexp = s:Wholematch(matchline, s:all, startcol-1)
+    let curcol = match(matchline, regexp)
+    " If there is no match, give up.
+    if curcol == -1
+      return s:CleanUp(restore_options, a:mode, startline, startcol)
+    endif
+    let endcol = matchend(matchline, regexp)
+    let suf = strlen(matchline) - endcol
+    let prefix = (curcol ? '^.*\%'  . (curcol + 1) . 'c\%(' : '^\%(')
+    let suffix = (suf ? '\)\%' . (endcol + 1) . 'c.*$'  : '\)$')
+  endif
+  if exists("b:match_debug")
+    let b:match_match = matchstr(matchline, regexp)
+    let b:match_col = curcol+1
+  endif
+
+  " Third step:  Find the group and single word that match, and the original
+  " (backref) versions of these.  Then, resolve the backrefs.
+  " Set the following local variable:
+  " group = colon-separated list of patterns, one of which matches
+  "       = ini:mid:fin or ini:fin
+  "
+  " Reconstruct the version with unresolved backrefs.
+  let patBR = substitute(match_words.',',
+    \ s:notslash.'\zs[,:]*,[,:]*', ',', 'g')
+  let patBR = substitute(patBR, s:notslash.'\zs:\{2,}', ':', 'g')
+  " Now, set group and groupBR to the matching group: 'if:endif' or
+  " 'while:endwhile' or whatever.  A bit of a kluge:  s:Choose() returns
+  " group . "," . groupBR, and we pick it apart.
+  let group = s:Choose(s:pat, matchline, ",", ":", prefix, suffix, patBR)
+  let i = matchend(group, s:notslash . ",")
+  let groupBR = strpart(group, i)
+  let group = strpart(group, 0, i-1)
+  " Now, matchline =~ prefix . substitute(group,':','\|','g') . suffix
+  if s:do_BR " Do the hard part:  resolve those backrefs!
+    let group = s:InsertRefs(groupBR, prefix, group, suffix, matchline)
+  endif
+  if exists("b:match_debug")
+    let b:match_wholeBR = groupBR
+    let i = matchend(groupBR, s:notslash . ":")
+    let b:match_iniBR = strpart(groupBR, 0, i-1)
+  endif
+
+  " Fourth step:  Set the arguments for searchpair().
+  let i = matchend(group, s:notslash . ":")
+  let j = matchend(group, '.*' . s:notslash . ":")
+  let ini = strpart(group, 0, i-1)
+  let mid = substitute(strpart(group, i,j-i-1), s:notslash.'\zs:', '\\|', 'g')
+  let fin = strpart(group, j)
+  "Un-escape the remaining , and : characters.
+  let ini = substitute(ini, s:notslash . '\zs\\\(:\|,\)', '\1', 'g')
+  let mid = substitute(mid, s:notslash . '\zs\\\(:\|,\)', '\1', 'g')
+  let fin = substitute(fin, s:notslash . '\zs\\\(:\|,\)', '\1', 'g')
+  " searchpair() requires that these patterns avoid \(\) groups.
+  let ini = substitute(ini, s:notslash . '\zs\\(', '\\%(', 'g')
+  let mid = substitute(mid, s:notslash . '\zs\\(', '\\%(', 'g')
+  let fin = substitute(fin, s:notslash . '\zs\\(', '\\%(', 'g')
+  " Set mid.  This is optimized for readability, not micro-efficiency!
+  if a:forward && matchline =~ prefix . fin . suffix
+    \ || !a:forward && matchline =~ prefix . ini . suffix
+    let mid = ""
+  endif
+  " Set flag.  This is optimized for readability, not micro-efficiency!
+  if a:forward && matchline =~ prefix . fin . suffix
+    \ || !a:forward && matchline !~ prefix . ini . suffix
+    let flag = "bW"
+  else
+    let flag = "W"
+  endif
+  " Set skip.
+  if exists("b:match_skip")
+    let skip = b:match_skip
+  elseif exists("b:match_comment") " backwards compatibility and testing!
+    let skip = "r:" . b:match_comment
+  else
+    let skip = 's:comment\|string'
+  endif
+  let skip = s:ParseSkip(skip)
+  if exists("b:match_debug")
+    let b:match_ini = ini
+    let b:match_tail = (strlen(mid) ? mid.'\|' : '') . fin
+  endif
+
+  " Fifth step:  actually start moving the cursor and call searchpair().
+  " Later, :execute restore_cursor to get to the original screen.
+  let restore_cursor = virtcol(".") . "|"
+  normal! g0
+  let restore_cursor = line(".") . "G" .  virtcol(".") . "|zs" . restore_cursor
+  normal! H
+  let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor
+  execute restore_cursor
+  call cursor(0, curcol + 1)
+  " normal! 0
+  " if curcol
+  "   execute "normal!" . curcol . "l"
+  " endif
+  if skip =~ 'synID' && !(has("syntax") && exists("g:syntax_on"))
+    let skip = "0"
+  else
+    execute "if " . skip . "| let skip = '0' | endif"
+  endif
+  let sp_return = searchpair(ini, mid, fin, flag, skip)
+  let final_position = "call cursor(" . line(".") . "," . col(".") . ")"
+  " Restore cursor position and original screen.
+  execute restore_cursor
+  normal! m'
+  if sp_return > 0
+    execute final_position
+  endif
+  return s:CleanUp(restore_options, a:mode, startline, startcol, mid.'\|'.fin)
+endfun
+
+" Restore options and do some special handling for Operator-pending mode.
+" The optional argument is the tail of the matching group.
+fun! s:CleanUp(options, mode, startline, startcol, ...)
+  execute "set" a:options
+  " Open folds, if appropriate.
+  if a:mode != "o"
+    if &foldopen =~ "percent"
+      normal! zv
+    endif
+    " In Operator-pending mode, we want to include the whole match
+    " (for example, d%).
+    " This is only a problem if we end up moving in the forward direction.
+  elseif (a:startline < line(".")) ||
+	\ (a:startline == line(".") && a:startcol < col("."))
+    if a:0
+      " Check whether the match is a single character.  If not, move to the
+      " end of the match.
+      let matchline = getline(".")
+      let currcol = col(".")
+      let regexp = s:Wholematch(matchline, a:1, currcol-1)
+      let endcol = matchend(matchline, regexp)
+      if endcol > currcol  " This is NOT off by one!
+	execute "normal!" . (endcol - currcol) . "l"
+      endif
+    endif " a:0
+  endif " a:mode != "o" && etc.
+  return 0
+endfun
+
+" Example (simplified HTML patterns):  if
+"   a:groupBR	= '<\(\k\+\)>:</\1>'
+"   a:prefix	= '^.\{3}\('
+"   a:group	= '<\(\k\+\)>:</\(\k\+\)>'
+"   a:suffix	= '\).\{2}$'
+"   a:matchline	=  "123<tag>12" or "123</tag>12"
+" then extract "tag" from a:matchline and return "<tag>:</tag>" .
+fun! s:InsertRefs(groupBR, prefix, group, suffix, matchline)
+  if a:matchline !~ a:prefix .
+    \ substitute(a:group, s:notslash . '\zs:', '\\|', 'g') . a:suffix
+    return a:group
+  endif
+  let i = matchend(a:groupBR, s:notslash . ':')
+  let ini = strpart(a:groupBR, 0, i-1)
+  let tailBR = strpart(a:groupBR, i)
+  let word = s:Choose(a:group, a:matchline, ":", "", a:prefix, a:suffix,
+    \ a:groupBR)
+  let i = matchend(word, s:notslash . ":")
+  let wordBR = strpart(word, i)
+  let word = strpart(word, 0, i-1)
+  " Now, a:matchline =~ a:prefix . word . a:suffix
+  if wordBR != ini
+    let table = s:Resolve(ini, wordBR, "table")
+  else
+    " let table = "----------"
+    let table = ""
+    let d = 0
+    while d < 10
+      if tailBR =~ s:notslash . '\\' . d
+	" let table[d] = d
+	let table = table . d
+      else
+	let table = table . "-"
+      endif
+      let d = d + 1
+    endwhile
+  endif
+  let d = 9
+  while d
+    if table[d] != "-"
+      let backref = substitute(a:matchline, a:prefix.word.a:suffix,
+	\ '\'.table[d], "")
+	" Are there any other characters that should be escaped?
+      let backref = escape(backref, '*,:')
+      execute s:Ref(ini, d, "start", "len")
+      let ini = strpart(ini, 0, start) . backref . strpart(ini, start+len)
+      let tailBR = substitute(tailBR, s:notslash . '\zs\\' . d,
+	\ escape(backref, '\\'), 'g')
+    endif
+    let d = d-1
+  endwhile
+  if exists("b:match_debug")
+    if s:do_BR
+      let b:match_table = table
+      let b:match_word = word
+    else
+      let b:match_table = ""
+      let b:match_word = ""
+    endif
+  endif
+  return ini . ":" . tailBR
+endfun
+
+" Input a comma-separated list of groups with backrefs, such as
+"   a:groups = '\(foo\):end\1,\(bar\):end\1'
+" and return a comma-separated list of groups with backrefs replaced:
+"   return '\(foo\):end\(foo\),\(bar\):end\(bar\)'
+fun! s:ParseWords(groups)
+  let groups = substitute(a:groups.",", s:notslash.'\zs[,:]*,[,:]*', ',', 'g')
+  let groups = substitute(groups, s:notslash . '\zs:\{2,}', ':', 'g')
+  let parsed = ""
+  while groups =~ '[^,:]'
+    let i = matchend(groups, s:notslash . ':')
+    let j = matchend(groups, s:notslash . ',')
+    let ini = strpart(groups, 0, i-1)
+    let tail = strpart(groups, i, j-i-1) . ":"
+    let groups = strpart(groups, j)
+    let parsed = parsed . ini
+    let i = matchend(tail, s:notslash . ':')
+    while i != -1
+      " In 'if:else:endif', ini='if' and word='else' and then word='endif'.
+      let word = strpart(tail, 0, i-1)
+      let tail = strpart(tail, i)
+      let i = matchend(tail, s:notslash . ':')
+      let parsed = parsed . ":" . s:Resolve(ini, word, "word")
+    endwhile " Now, tail has been used up.
+    let parsed = parsed . ","
+  endwhile " groups =~ '[^,:]'
+  let parsed = substitute(parsed, ',$', '', '')
+  return parsed
+endfun
+
+" TODO I think this can be simplified and/or made more efficient.
+" TODO What should I do if a:start is out of range?
+" Return a regexp that matches all of a:string, such that
+" matchstr(a:string, regexp) represents the match for a:pat that starts
+" as close to a:start as possible, before being preferred to after, and
+" ends after a:start .
+" Usage:
+" let regexp = s:Wholematch(getline("."), 'foo\|bar', col(".")-1)
+" let i      = match(getline("."), regexp)
+" let j      = matchend(getline("."), regexp)
+" let match  = matchstr(getline("."), regexp)
+fun! s:Wholematch(string, pat, start)
+  let group = '\%(' . a:pat . '\)'
+  let prefix = (a:start ? '\(^.*\%<' . (a:start + 2) . 'c\)\zs' : '^')
+  let len = strlen(a:string)
+  let suffix = (a:start+1 < len ? '\(\%>'.(a:start+1).'c.*$\)\@=' : '$')
+  if a:string !~ prefix . group . suffix
+    let prefix = ''
+  endif
+  return prefix . group . suffix
+endfun
+
+" No extra arguments:  s:Ref(string, d) will
+" find the d'th occurrence of '\(' and return it, along with everything up
+" to and including the matching '\)'.
+" One argument:  s:Ref(string, d, "start") returns the index of the start
+" of the d'th '\(' and any other argument returns the length of the group.
+" Two arguments:  s:Ref(string, d, "foo", "bar") returns a string to be
+" executed, having the effect of
+"   :let foo = s:Ref(string, d, "start")
+"   :let bar = s:Ref(string, d, "len")
+fun! s:Ref(string, d, ...)
+  let len = strlen(a:string)
+  if a:d == 0
+    let start = 0
+  else
+    let cnt = a:d
+    let match = a:string
+    while cnt
+      let cnt = cnt - 1
+      let index = matchend(match, s:notslash . '\\(')
+      if index == -1
+	return ""
+      endif
+      let match = strpart(match, index)
+    endwhile
+    let start = len - strlen(match)
+    if a:0 == 1 && a:1 == "start"
+      return start - 2
+    endif
+    let cnt = 1
+    while cnt
+      let index = matchend(match, s:notslash . '\\(\|\\)') - 1
+      if index == -2
+	return ""
+      endif
+      " Increment if an open, decrement if a ')':
+      let cnt = cnt + (match[index]=="(" ? 1 : -1)  " ')'
+      " let cnt = stridx('0(', match[index]) + cnt
+      let match = strpart(match, index+1)
+    endwhile
+    let start = start - 2
+    let len = len - start - strlen(match)
+  endif
+  if a:0 == 1
+    return len
+  elseif a:0 == 2
+    return "let " . a:1 . "=" . start . "| let " . a:2 . "=" . len
+  else
+    return strpart(a:string, start, len)
+  endif
+endfun
+
+" Count the number of disjoint copies of pattern in string.
+" If the pattern is a literal string and contains no '0' or '1' characters
+" then s:Count(string, pattern, '0', '1') should be faster than
+" s:Count(string, pattern).
+fun! s:Count(string, pattern, ...)
+  let pat = escape(a:pattern, '\\')
+  if a:0 > 1
+    let foo = substitute(a:string, '[^'.a:pattern.']', "a:1", "g")
+    let foo = substitute(a:string, pat, a:2, "g")
+    let foo = substitute(foo, '[^' . a:2 . ']', "", "g")
+    return strlen(foo)
+  endif
+  let result = 0
+  let foo = a:string
+  let index = matchend(foo, pat)
+  while index != -1
+    let result = result + 1
+    let foo = strpart(foo, index)
+    let index = matchend(foo, pat)
+  endwhile
+  return result
+endfun
+
+" s:Resolve('\(a\)\(b\)', '\(c\)\2\1\1\2') should return table.word, where
+" word = '\(c\)\(b\)\(a\)\3\2' and table = '-32-------'.  That is, the first
+" '\1' in target is replaced by '\(a\)' in word, table[1] = 3, and this
+" indicates that all other instances of '\1' in target are to be replaced
+" by '\3'.  The hard part is dealing with nesting...
+" Note that ":" is an illegal character for source and target,
+" unless it is preceded by "\".
+fun! s:Resolve(source, target, output)
+  let word = a:target
+  let i = matchend(word, s:notslash . '\\\d') - 1
+  let table = "----------"
+  while i != -2 " There are back references to be replaced.
+    let d = word[i]
+    let backref = s:Ref(a:source, d)
+    " The idea is to replace '\d' with backref.  Before we do this,
+    " replace any \(\) groups in backref with :1, :2, ... if they
+    " correspond to the first, second, ... group already inserted
+    " into backref.  Later, replace :1 with \1 and so on.  The group
+    " number w+b within backref corresponds to the group number
+    " s within a:source.
+    " w = number of '\(' in word before the current one
+    let w = s:Count(
+    \ substitute(strpart(word, 0, i-1), '\\\\', '', 'g'), '\(', '1')
+    let b = 1 " number of the current '\(' in backref
+    let s = d " number of the current '\(' in a:source
+    while b <= s:Count(substitute(backref, '\\\\', '', 'g'), '\(', '1')
+    \ && s < 10
+      if table[s] == "-"
+	if w + b < 10
+	  " let table[s] = w + b
+	  let table = strpart(table, 0, s) . (w+b) . strpart(table, s+1)
+	endif
+	let b = b + 1
+	let s = s + 1
+      else
+	execute s:Ref(backref, b, "start", "len")
+	let ref = strpart(backref, start, len)
+	let backref = strpart(backref, 0, start) . ":". table[s]
+	\ . strpart(backref, start+len)
+	let s = s + s:Count(substitute(ref, '\\\\', '', 'g'), '\(', '1')
+      endif
+    endwhile
+    let word = strpart(word, 0, i-1) . backref . strpart(word, i+1)
+    let i = matchend(word, s:notslash . '\\\d') - 1
+  endwhile
+  let word = substitute(word, s:notslash . '\zs:', '\\', 'g')
+  if a:output == "table"
+    return table
+  elseif a:output == "word"
+    return word
+  else
+    return table . word
+  endif
+endfun
+
+" Assume a:comma = ",".  Then the format for a:patterns and a:1 is
+"   a:patterns = "<pat1>,<pat2>,..."
+"   a:1 = "<alt1>,<alt2>,..."
+" If <patn> is the first pattern that matches a:string then return <patn>
+" if no optional arguments are given; return <patn>,<altn> if a:1 is given.
+fun! s:Choose(patterns, string, comma, branch, prefix, suffix, ...)
+  let tail = (a:patterns =~ a:comma."$" ? a:patterns : a:patterns . a:comma)
+  let i = matchend(tail, s:notslash . a:comma)
+  if a:0
+    let alttail = (a:1 =~ a:comma."$" ? a:1 : a:1 . a:comma)
+    let j = matchend(alttail, s:notslash . a:comma)
+  endif
+  let current = strpart(tail, 0, i-1)
+  if a:branch == ""
+    let currpat = current
+  else
+    let currpat = substitute(current, s:notslash . a:branch, '\\|', 'g')
+  endif
+  while a:string !~ a:prefix . currpat . a:suffix
+    let tail = strpart(tail, i)
+    let i = matchend(tail, s:notslash . a:comma)
+    if i == -1
+      return -1
+    endif
+    let current = strpart(tail, 0, i-1)
+    if a:branch == ""
+      let currpat = current
+    else
+      let currpat = substitute(current, s:notslash . a:branch, '\\|', 'g')
+    endif
+    if a:0
+      let alttail = strpart(alttail, j)
+      let j = matchend(alttail, s:notslash . a:comma)
+    endif
+  endwhile
+  if a:0
+    let current = current . a:comma . strpart(alttail, 0, j-1)
+  endif
+  return current
+endfun
+
+" Call this function to turn on debugging information.  Every time the main
+" script is run, buffer variables will be saved.  These can be used directly
+" or viewed using the menu items below.
+if !exists(":MatchDebug")
+  command! -nargs=0 MatchDebug call s:Match_debug()
+endif
+
+fun! s:Match_debug()
+  let b:match_debug = 1	" Save debugging information.
+  " pat = all of b:match_words with backrefs parsed
+  amenu &Matchit.&pat	:echo b:match_pat<CR>
+  " match = bit of text that is recognized as a match
+  amenu &Matchit.&match	:echo b:match_match<CR>
+  " curcol = cursor column of the start of the matching text
+  amenu &Matchit.&curcol	:echo b:match_col<CR>
+  " wholeBR = matching group, original version
+  amenu &Matchit.wh&oleBR	:echo b:match_wholeBR<CR>
+  " iniBR = 'if' piece, original version
+  amenu &Matchit.ini&BR	:echo b:match_iniBR<CR>
+  " ini = 'if' piece, with all backrefs resolved from match
+  amenu &Matchit.&ini	:echo b:match_ini<CR>
+  " tail = 'else\|endif' piece, with all backrefs resolved from match
+  amenu &Matchit.&tail	:echo b:match_tail<CR>
+  " fin = 'endif' piece, with all backrefs resolved from match
+  amenu &Matchit.&word	:echo b:match_word<CR>
+  " '\'.d in ini refers to the same thing as '\'.table[d] in word.
+  amenu &Matchit.t&able	:echo '0:' . b:match_table . ':9'<CR>
+endfun
+
+" Jump to the nearest unmatched "(" or "if" or "<tag>" if a:spflag == "bW"
+" or the nearest unmatched "</tag>" or "endif" or ")" if a:spflag == "W".
+" Return a "mark" for the original position, so that
+"   let m = MultiMatch("bW", "n") ... execute m
+" will return to the original position.  If there is a problem, do not
+" move the cursor and return "", unless a count is given, in which case
+" go up or down as many levels as possible and again return "".
+" TODO This relies on the same patterns as % matching.  It might be a good
+" idea to give it its own matching patterns.
+fun! s:MultiMatch(spflag, mode)
+  if !exists("b:match_words") || b:match_words == ""
+    return ""
+  end
+  let restore_options = (&ic ? "" : "no") . "ignorecase"
+  if exists("b:match_ignorecase")
+    let &ignorecase = b:match_ignorecase
+  endif
+  let startline = line(".")
+  let startcol = col(".")
+
+  " First step:  if not already done, set the script variables
+  "   s:do_BR	flag for whether there are backrefs
+  "   s:pat	parsed version of b:match_words
+  "   s:all	regexp based on s:pat and the default groups
+  " This part is copied and slightly modified from s:Match_wrapper().
+  let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") .
+    \ '\/\*:\*\/,#if\%(def\)\=:#else\>:#elif\>:#endif\>'
+  " Allow b:match_words = "GetVimMatchWords()" .
+  if b:match_words =~ ":"
+    let match_words = b:match_words
+  else
+    execute "let match_words =" b:match_words
+  endif
+  if (match_words != s:last_words) || (&mps != s:last_mps) ||
+    \ exists("b:match_debug")
+    let s:last_words = match_words
+    let s:last_mps = &mps
+    if match_words !~ s:notslash . '\\\d'
+      let s:do_BR = 0
+      let s:pat = match_words
+    else
+      let s:do_BR = 1
+      let s:pat = s:ParseWords(match_words)
+    endif
+    let s:all = '\%(' . substitute(s:pat . (strlen(s:pat)?",":"") . default,
+      \	'[,:]\+','\\|','g') . '\)'
+    if exists("b:match_debug")
+      let b:match_pat = s:pat
+    endif
+  endif
+
+  " Second step:  figure out the patterns for searchpair()
+  " and save the screen, cursor position, and 'ignorecase'.
+  " - TODO:  A lot of this is copied from s:Match_wrapper().
+  " - maybe even more functionality should be split off
+  " - into separate functions!
+  let cdefault = (s:pat =~ '[^,]$' ? "," : "") . default
+  let open =  substitute(s:pat . cdefault,
+	\ s:notslash . '\zs:.\{-}' . s:notslash . ',', '\\),\\(', 'g')
+  let open =  '\(' . substitute(open, s:notslash . '\zs:.*$', '\\)', '')
+  let close = substitute(s:pat . cdefault,
+	\ s:notslash . '\zs,.\{-}' . s:notslash . ':', '\\),\\(', 'g')
+  let close = substitute(close, '^.\{-}' . s:notslash . ':', '\\(', '') . '\)'
+  if exists("b:match_skip")
+    let skip = b:match_skip
+  elseif exists("b:match_comment") " backwards compatibility and testing!
+    let skip = "r:" . b:match_comment
+  else
+    let skip = 's:comment\|string'
+  endif
+  let skip = s:ParseSkip(skip)
+  " let restore_cursor = line(".") . "G" . virtcol(".") . "|"
+  " normal! H
+  " let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor
+  let restore_cursor = virtcol(".") . "|"
+  normal! g0
+  let restore_cursor = line(".") . "G" .  virtcol(".") . "|zs" . restore_cursor
+  normal! H
+  let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor
+  execute restore_cursor
+
+  " Third step: call searchpair().
+  " Replace '\('--but not '\\('--with '\%(' and ',' with '\|'.
+  let openpat =  substitute(open, '\(\\\@<!\(\\\\\)*\)\@<=\\(', '\\%(', 'g')
+  let openpat = substitute(openpat, ',', '\\|', 'g')
+  let closepat = substitute(close, '\(\\\@<!\(\\\\\)*\)\@<=\\(', '\\%(', 'g')
+  let closepat = substitute(closepat, ',', '\\|', 'g')
+  if skip =~ 'synID' && !(has("syntax") && exists("g:syntax_on"))
+    let skip = '0'
+  else
+    execute "if " . skip . "| let skip = '0' | endif"
+  endif
+  mark '
+  let level = v:count1
+  while level
+    if searchpair(openpat, '', closepat, a:spflag, skip) < 1
+      call s:CleanUp(restore_options, a:mode, startline, startcol)
+      return ""
+    endif
+    let level = level - 1
+  endwhile
+
+  " Restore options and return a string to restore the original position.
+  call s:CleanUp(restore_options, a:mode, startline, startcol)
+  return restore_cursor
+endfun
+
+" Search backwards for "if" or "while" or "<tag>" or ...
+" and return "endif" or "endwhile" or "</tag>" or ... .
+" For now, this uses b:match_words and the same script variables
+" as s:Match_wrapper() .  Later, it may get its own patterns,
+" either from a buffer variable or passed as arguments.
+" fun! s:Autocomplete()
+"   echo "autocomplete not yet implemented :-("
+"   if !exists("b:match_words") || b:match_words == ""
+"     return ""
+"   end
+"   let startpos = s:MultiMatch("bW")
+"
+"   if startpos == ""
+"     return ""
+"   endif
+"   " - TODO:  figure out whether 'if' or '<tag>' matched, and construct
+"   " - the appropriate closing.
+"   let matchline = getline(".")
+"   let curcol = col(".") - 1
+"   " - TODO:  Change the s:all argument if there is a new set of match pats.
+"   let regexp = s:Wholematch(matchline, s:all, curcol)
+"   let suf = strlen(matchline) - matchend(matchline, regexp)
+"   let prefix = (curcol ? '^.\{'  . curcol . '}\%(' : '^\%(')
+"   let suffix = (suf ? '\).\{' . suf . '}$'  : '\)$')
+"   " Reconstruct the version with unresolved backrefs.
+"   let patBR = substitute(b:match_words.',', '[,:]*,[,:]*', ',', 'g')
+"   let patBR = substitute(patBR, ':\{2,}', ':', "g")
+"   " Now, set group and groupBR to the matching group: 'if:endif' or
+"   " 'while:endwhile' or whatever.
+"   let group = s:Choose(s:pat, matchline, ",", ":", prefix, suffix, patBR)
+"   let i = matchend(group, s:notslash . ",")
+"   let groupBR = strpart(group, i)
+"   let group = strpart(group, 0, i-1)
+"   " Now, matchline =~ prefix . substitute(group,':','\|','g') . suffix
+"   if s:do_BR
+"     let group = s:InsertRefs(groupBR, prefix, group, suffix, matchline)
+"   endif
+" " let g:group = group
+"
+"   " - TODO:  Construct the closing from group.
+"   let fake = "end" . expand("<cword>")
+"   execute startpos
+"   return fake
+" endfun
+
+" Close all open structures.  "Get the heck out of here!"
+" fun! s:Gthhoh()
+"   let close = s:Autocomplete()
+"   while strlen(close)
+"     put=close
+"     let close = s:Autocomplete()
+"   endwhile
+" endfun
+
+" Parse special strings as typical skip arguments for searchpair():
+"   s:foo becomes (current syntax item) =~ foo
+"   S:foo becomes (current syntax item) !~ foo
+"   r:foo becomes (line before cursor) =~ foo
+"   R:foo becomes (line before cursor) !~ foo
+fun! s:ParseSkip(str)
+  let skip = a:str
+  if skip[1] == ":"
+    if skip[0] == "s"
+      let skip = "synIDattr(synID(line('.'),col('.'),1),'name') =~? '" .
+	\ strpart(skip,2) . "'"
+    elseif skip[0] == "S"
+      let skip = "synIDattr(synID(line('.'),col('.'),1),'name') !~? '" .
+	\ strpart(skip,2) . "'"
+    elseif skip[0] == "r"
+      let skip = "strpart(getline('.'),0,col('.'))=~'" . strpart(skip,2). "'"
+    elseif skip[0] == "R"
+      let skip = "strpart(getline('.'),0,col('.'))!~'" . strpart(skip,2). "'"
+    endif
+  endif
+  return skip
+endfun
+
+let &cpo = s:save_cpo
+
+" vim:sts=2:sw=2:
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/skeleton.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/skeleton.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/plugin/skeleton.vim	(revision 27955)
@@ -0,0 +1,97 @@
+" skeleton - Skeleton for newly created files
+" Version: 0.0.2
+" Copyright (C) 2008 kana <http://whileimautomaton.net/>
+" License: MIT license  {{{
+"     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.
+" }}}
+
+if exists('g:loaded_skeleton')
+  finish
+endif
+
+let s:SKELETON_DIR = 'xtr/skeleton/'
+
+
+
+
+command! -bang -bar -complete=customlist,s:cmd_SkeletonLoad_complete -nargs=1
+\ SkeletonLoad
+\ call s:cmd_SkeletonLoad(<q-args>, expand('<abuf>') == '', <bang>0)
+
+function! s:cmd_SkeletonLoad(name, interactive_use_p, banged_p)
+  if &l:buftype != ''
+    if a:interactive_use_p
+      echo 'This buffer is not a normal one.  Skeleton leaves it as is.'
+    endif
+    return
+  endif
+  if (!a:banged_p) && (line('$') != 1 || len(getline(1)) != 0)
+    if a:interactive_use_p
+      echo 'This buffer is not empty.  Skeleton leaves it as is.'
+    endif
+    return
+  endif
+
+  let candidates = split(globpath(&runtimepath, s:SKELETON_DIR.a:name), "\n")
+  if len(candidates) < 1
+    if a:interactive_use_p
+      echo 'Skeleton file is not found:' string(a:name)
+    endif
+    return
+  endif
+
+  " Load skeleton file.
+  if a:banged_p
+    % delete _
+  endif
+  silent keepalt 1 read `=candidates[0]`
+  0 delete _
+
+  return
+endfunction
+
+function! s:cmd_SkeletonLoad_complete(arglead, cmdline, cursorpos)
+  return map(split(globpath(&runtimepath, s:SKELETON_DIR.a:arglead.'*'), "\n"),
+  \          'fnamemodify(v:val, ":t")')
+endfunction
+
+
+
+
+augroup plugin-skeleton
+  autocmd!
+  autocmd BufNewFile *  call s:on_BufNewFile()
+augroup END
+
+function! s:on_BufNewFile()
+  silent doautocmd User plugin-skeleton-detect
+
+  if &l:filetype != ''
+    execute 'SkeletonLoad' &l:filetype
+  endif
+endfunction
+
+
+
+
+let g:loaded_skeleton = 1
+
+" __END__
+" vim: foldmethod=marker
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/syntax/c.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/syntax/c.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/syntax/c.vim	(revision 27955)
@@ -0,0 +1,687 @@
+" Vim syntax file
+" Language:	C
+" Maintainer:	Bram Moolenaar <Bram@vim.org>
+" Last Change:	1999 Dec 02, 2004 Feb 04
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+"hi clear
+
+syn match       cName		"\<[a-zA-Z_][a-zA-Z_0-9]*\>"
+"syn match       cConstant	"\<[A-Z_][A-Z_0-9]\{2,}[A-Za-z_0-9]*\>[^(:]"me=e-1
+"syn match       cConstant	"\<[A-Z_][A-Z_0-9]\{2,}[A-Za-z_0-9]*\>$"
+"syn match       cConstant	"\<_[_0-9]\{1,}\>[^(:]"
+syn match	cFunction	"\<[a-zA-Z_][a-zA-Z_0-9]*\>[^()]*)("me=e-2
+"syn match	cFunction	"\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*)("me=e-2
+syn match	cFunction	"\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*("me=e-1
+syn match	cBraces		"[{}]"
+
+syn keyword cMC			__DI __EI __asm __set_il
+syn keyword cMC			__wait_nop __mul __div __mod __mulu __divu __modu
+syn keyword cAnsiFunction	MULU_ DIVU_ MODU_ MUL_ DIV_ MOD_
+syn keyword cAnsiFunction	main typeof
+syn keyword cAnsiFunction	open close read write lseek dup dup2
+syn keyword cAnsiFunction	fcntl ioctl
+syn keyword cAnsiFunction	wctrans towctrans towupper
+syn keyword cAnsiFunction	towlower wctype iswctype
+syn keyword cAnsiFunction	iswxdigit iswupper iswspace
+syn keyword cAnsiFunction	iswpunct iswprint iswlower
+syn keyword cAnsiFunction	iswgraph iswdigit iswcntrl
+syn keyword cAnsiFunction	iswalpha iswalnum wcsrtombs
+syn keyword cAnsiFunction	mbsrtowcs wcrtomb mbrtowc
+syn keyword cAnsiFunction	mbrlen mbsinit wctob
+syn keyword cAnsiFunction	btowc wcsfxtime wcsftime
+syn keyword cAnsiFunction	wmemset wmemmove wmemcpy
+syn keyword cAnsiFunction	wmemcmp wmemchr wcstok
+syn keyword cAnsiFunction	wcsstr wcsspn wcsrchr
+syn keyword cAnsiFunction	wcspbrk wcslen wcscspn
+syn keyword cAnsiFunction	wcschr wcsxfrm wcsncmp
+syn keyword cAnsiFunction	wcscoll wcscmp wcsncat
+syn keyword cAnsiFunction	wcscat wcsncpy wcscpy
+syn keyword cAnsiFunction	wcstoull wcstoul wcstoll
+syn keyword cAnsiFunction	wcstol wcstold wcstof
+syn keyword cAnsiFunction	wcstod ungetwc putwchar
+syn keyword cAnsiFunction	putwc getwchar getwc
+syn keyword cAnsiFunction	fwide fputws fputwc
+syn keyword cAnsiFunction	fgetws fgetwc wscanf
+syn keyword cAnsiFunction	wprintf vwscanf vwprintf
+syn keyword cAnsiFunction	vswscanf vswprintf vfwscanf
+syn keyword cAnsiFunction	vfwprintf swscanf swprintf
+syn keyword cAnsiFunction	fwscanf fwprintf zonetime
+syn keyword cAnsiFunction	strfxtime strftime localtime
+syn keyword cAnsiFunction	gmtime ctime asctime
+syn keyword cAnsiFunction	time mkxtime mktime
+syn keyword cAnsiFunction	difftime clock strlen
+syn keyword cAnsiFunction	strerror memset strtok
+syn keyword cAnsiFunction	strstr strspn strrchr
+syn keyword cAnsiFunction	strpbrk strcspn strchr
+syn keyword cAnsiFunction	memchr strxfrm strncmp
+syn keyword cAnsiFunction	strcoll strcmp memcmp
+syn keyword cAnsiFunction	strncat strcat strncpy
+syn keyword cAnsiFunction	strcpy memmove memcpy
+syn keyword cAnsiFunction	wcstombs mbstowcs wctomb
+syn keyword cAnsiFunction	mbtowc mblen lldiv
+syn keyword cAnsiFunction	ldiv div llabs
+syn keyword cAnsiFunction	labs abs qsort
+syn keyword cAnsiFunction	bsearch system getenv
+syn keyword cAnsiFunction	exit atexit abort
+syn keyword cAnsiFunction	realloc malloc free
+syn keyword cAnsiFunction	calloc srand rand
+syn keyword cAnsiFunction	strtoull strtoul strtoll
+syn keyword cAnsiFunction	strtol strtold strtof
+syn keyword cAnsiFunction	strtod atoll atol
+syn keyword cAnsiFunction	atoi atof perror
+syn keyword cAnsiFunction	ferror feof clearerr
+syn keyword cAnsiFunction	rewind ftell fsetpos
+syn keyword cAnsiFunction	fseek fgetpos fwrite
+syn keyword cAnsiFunction	fread ungetc puts
+syn keyword cAnsiFunction	putchar putc gets
+syn keyword cAnsiFunction	getchar getc fputs
+syn keyword cAnsiFunction	fputc fgets fgetc
+syn keyword cAnsiFunction	vsscanf vsprintf vsnprintf
+syn keyword cAnsiFunction	vscanf vprintf vfscanf
+syn keyword cAnsiFunction	vfprintf sscanf sprintf
+syn keyword cAnsiFunction	snprintf scanf printf
+syn keyword cAnsiFunction	fscanf fprintf setvbuf
+syn keyword cAnsiFunction	setbuf freopen fopen
+syn keyword cAnsiFunction	fflush fclose tmpnam
+syn keyword cAnsiFunction	tmpfile rename remove
+syn keyword cAnsiFunction	offsetof va_start va_end
+syn keyword cAnsiFunction	va_copy va_arg raise signal
+syn keyword cAnsiFunction	longjmp setjmp isunordered
+syn keyword cAnsiFunction	islessgreater islessequal isless
+syn keyword cAnsiFunction	isgreaterequal isgreater fmal
+syn keyword cAnsiFunction	fmaf fma fminl
+syn keyword cAnsiFunction	fminf fmin fmaxl
+syn keyword cAnsiFunction	fmaxf fmax fdiml
+syn keyword cAnsiFunction	fdimf fdim nextafterxl
+syn keyword cAnsiFunction	nextafterxf nextafterx nextafterl
+syn keyword cAnsiFunction	nextafterf nextafter nanl
+syn keyword cAnsiFunction	nanf nan copysignl
+syn keyword cAnsiFunction	copysignf copysign remquol
+syn keyword cAnsiFunction	remquof remquo remainderl
+syn keyword cAnsiFunction	remainderf remainder fmodl
+syn keyword cAnsiFunction	fmodf fmod truncl
+syn keyword cAnsiFunction	truncf trunc llroundl
+syn keyword cAnsiFunction	llroundf llround lroundl
+syn keyword cAnsiFunction	lroundf lround roundl
+syn keyword cAnsiFunction	roundf round llrintl
+syn keyword cAnsiFunction	llrintf llrint lrintl
+syn keyword cAnsiFunction	lrintf lrint rintl
+syn keyword cAnsiFunction	rintf rint nearbyintl
+syn keyword cAnsiFunction	nearbyintf nearbyint floorl
+syn keyword cAnsiFunction	floorf floor ceill
+syn keyword cAnsiFunction	ceilf ceil tgammal
+syn keyword cAnsiFunction	tgammaf tgamma lgammal
+syn keyword cAnsiFunction	lgammaf lgamma erfcl
+syn keyword cAnsiFunction	erfcf erfc erfl
+syn keyword cAnsiFunction	erff erf sqrtl
+syn keyword cAnsiFunction	sqrtf sqrt powl
+syn keyword cAnsiFunction	powf pow hypotl
+syn keyword cAnsiFunction	hypotf hypot fabsl
+syn keyword cAnsiFunction	fabsf fabs cbrtl
+syn keyword cAnsiFunction	cbrtf cbrt scalblnl
+syn keyword cAnsiFunction	scalblnf scalbln scalbnl
+syn keyword cAnsiFunction	scalbnf scalbn modfl
+syn keyword cAnsiFunction	modff modf logbl
+syn keyword cAnsiFunction	logbf logb log2l
+syn keyword cAnsiFunction	log2f log2 log1pl
+syn keyword cAnsiFunction	log1pf log1p log10l
+syn keyword cAnsiFunction	log10f log10 logl
+syn keyword cAnsiFunction	logf log ldexpl
+syn keyword cAnsiFunction	ldexpf ldexp ilogbl
+syn keyword cAnsiFunction	ilogbf ilogb frexpl
+syn keyword cAnsiFunction	frexpf frexp expm1l
+syn keyword cAnsiFunction	expm1f expm1 exp2l
+syn keyword cAnsiFunction	exp2f exp2 expl
+syn keyword cAnsiFunction	expf exp tanhl
+syn keyword cAnsiFunction	tanhf tanh sinhl
+syn keyword cAnsiFunction	sinhf sinh coshl
+syn keyword cAnsiFunction	coshf cosh atanhl
+syn keyword cAnsiFunction	atanhf atanh asinhl
+syn keyword cAnsiFunction	asinhf asinh acoshl
+syn keyword cAnsiFunction	acoshf acosh tanl
+syn keyword cAnsiFunction	tanf tan sinl
+syn keyword cAnsiFunction	sinf sin cosl
+syn keyword cAnsiFunction	cosf cos atan2l
+syn keyword cAnsiFunction	atan2f atan2 atanl
+syn keyword cAnsiFunction	atanf atan asinl
+syn keyword cAnsiFunction	asinf asin acosl
+syn keyword cAnsiFunction	acosf acos signbit
+syn keyword cAnsiFunction	isnormal isnan isinf
+syn keyword cAnsiFunction	isfinite fpclassify localeconv
+syn keyword cAnsiFunction	setlocale wcstoumax wcstoimax
+syn keyword cAnsiFunction	strtoumax strtoimax feupdateenv
+syn keyword cAnsiFunction	fesetenv feholdexcept fegetenv
+syn keyword cAnsiFunction	fesetround fegetround fetestexcept
+syn keyword cAnsiFunction	fesetexceptflag feraiseexcept fegetexceptflag
+syn keyword cAnsiFunction	feclearexcept toupper tolower
+syn keyword cAnsiFunction	isxdigit isupper isspace
+syn keyword cAnsiFunction	ispunct isprint islower
+syn keyword cAnsiFunction	isgraph isdigit iscntrl
+syn keyword cAnsiFunction	isalpha isalnum creall
+syn keyword cAnsiFunction	crealf creal cprojl
+syn keyword cAnsiFunction	cprojf cproj conjl
+syn keyword cAnsiFunction	conjf conj cimagl
+syn keyword cAnsiFunction	cimagf cimag cargl
+syn keyword cAnsiFunction	cargf carg csqrtl
+syn keyword cAnsiFunction	csqrtf csqrt cpowl
+syn keyword cAnsiFunction	cpowf cpow cabsl
+syn keyword cAnsiFunction	cabsf cabs clogl
+syn keyword cAnsiFunction	clogf clog cexpl
+syn keyword cAnsiFunction	cexpf cexp ctanhl
+syn keyword cAnsiFunction	ctanhf ctanh csinhl
+syn keyword cAnsiFunction	csinhf csinh ccoshl
+syn keyword cAnsiFunction	ccoshf ccosh catanhl
+syn keyword cAnsiFunction	catanhf catanh casinhl
+syn keyword cAnsiFunction	casinhf casinh cacoshl
+syn keyword cAnsiFunction	cacoshf cacosh ctanl
+syn keyword cAnsiFunction	ctanf ctan csinl
+syn keyword cAnsiFunction	csinf csin ccosl
+syn keyword cAnsiFunction	ccosf ccos catanl
+syn keyword cAnsiFunction	catanf catan casinl
+syn keyword cAnsiFunction	casinf casin cacosl
+syn keyword cAnsiFunction	cacosf cacos assert
+syn keyword cAnsiFunction	UINTMAX_C INTMAX_C UINT64_C
+syn keyword cAnsiFunction	UINT32_C UINT16_C UINT8_C
+syn keyword cAnsiFunction	INT64_C INT32_C INT16_C INT8_C
+
+syn keyword	cMC		__interrupt __nosavereg
+syn keyword	cAnsiName	PRId8 PRIi16 PRIo32 PRIu64
+syn keyword	cAnsiName	PRId16 PRIi32 PRIo64 PRIuLEAST8
+syn keyword	cAnsiName	PRId32 PRIi64 PRIoLEAST8 PRIuLEAST16
+syn keyword	cAnsiName	PRId64 PRIiLEAST8 PRIoLEAST16 PRIuLEAST32
+syn keyword	cAnsiName	PRIdLEAST8 PRIiLEAST16 PRIoLEAST32 PRIuLEAST64
+syn keyword	cAnsiName	PRIdLEAST16 PRIiLEAST32 PRIoLEAST64 PRIuFAST8
+syn keyword	cAnsiName	PRIdLEAST32 PRIiLEAST64 PRIoFAST8 PRIuFAST16
+syn keyword	cAnsiName	PRIdLEAST64 PRIiFAST8 PRIoFAST16 PRIuFAST32
+syn keyword	cAnsiName	PRIdFAST8 PRIiFAST16 PRIoFAST32 PRIuFAST64
+syn keyword	cAnsiName	PRIdFAST16 PRIiFAST32 PRIoFAST64 PRIuMAX
+syn keyword	cAnsiName	PRIdFAST32 PRIiFAST64 PRIoMAX PRIuPTR
+syn keyword	cAnsiName	PRIdFAST64 PRIiMAX PRIoPTR PRIx8
+syn keyword	cAnsiName	PRIdMAX PRIiPTR PRIu8 PRIx16
+syn keyword	cAnsiName	PRIdPTR PRIo8 PRIu16 PRIx32
+syn keyword	cAnsiName	PRIi8 PRIo16 PRIu32 PRIx64
+
+syn keyword	cAnsiName	PRIxLEAST8 SCNd8 SCNiFAST32 SCNuLEAST32
+syn keyword	cAnsiName	PRIxLEAST16 SCNd16 SCNiFAST64 SCNuLEAST64
+syn keyword	cAnsiName	PRIxLEAST32 SCNd32 SCNiMAX SCNuFAST8
+syn keyword	cAnsiName	PRIxLEAST64 SCNd64 SCNiPTR SCNuFAST16
+syn keyword	cAnsiName	PRIxFAST8 SCNdLEAST8 SCNo8 SCNuFAST32
+syn keyword	cAnsiName	PRIxFAST16 SCNdLEAST16 SCNo16 SCNuFAST64
+syn keyword	cAnsiName	PRIxFAST32 SCNdLEAST32 SCNo32 SCNuMAX
+syn keyword	cAnsiName	PRIxFAST64 SCNdLEAST64 SCNo64 SCNuPTR
+syn keyword	cAnsiName	PRIxMAX SCNdFAST8 SCNoLEAST8 SCNx8
+syn keyword	cAnsiName	PRIxPTR SCNdFAST16 SCNoLEAST16 SCNx16
+syn keyword	cAnsiName	PRIX8 SCNdFAST32 SCNoLEAST32 SCNx32
+syn keyword	cAnsiName	PRIX16 SCNdFAST64 SCNoLEAST64 SCNx64
+syn keyword	cAnsiName	PRIX32 SCNdMAX SCNoFAST8 SCNxLEAST8
+syn keyword	cAnsiName	PRIX64 SCNdPTR SCNoFAST16 SCNxLEAST16
+syn keyword	cAnsiName	PRIXLEAST8 SCNi8 SCNoFAST32 SCNxLEAST32
+syn keyword	cAnsiName	PRIXLEAST16 SCNi16 SCNoFAST64 SCNxLEAST64
+syn keyword	cAnsiName	PRIXLEAST32 SCNi32 SCNoMAX SCNxFAST8
+syn keyword	cAnsiName	PRIXLEAST64 SCNi64 SCNoPTR SCNxFAST16
+syn keyword	cAnsiName	PRIXFAST8 SCNiLEAST8 SCNu8 SCNxFAST32
+syn keyword	cAnsiName	PRIXFAST16 SCNiLEAST16 SCNu16 SCNxFAST64
+syn keyword	cAnsiName	PRIXFAST32 SCNiLEAST32 SCNu32 SCNxMAX
+syn keyword	cAnsiName	PRIXFAST64 SCNiLEAST64 SCNu64 SCNxPTR
+syn keyword	cAnsiName	PRIXMAX SCNiFAST8 SCNuLEAST8
+syn keyword	cAnsiName	PRIXPTR SCNiFAST16 SCNuLEAST16
+
+syn keyword	cAnsiName	errno environ
+syn keyword	cAnsiName	stdout stdin stderr
+
+syn keyword	cAnsiName	STDC CX_LIMITED_RANGE
+syn keyword	cAnsiName	STDC FENV_ACCESS
+syn keyword	cAnsiName	STDC FP_CONTRACT
+
+"syn keyword	cAnsiName	acos sqrt fmod nearbyint
+"syn keyword	cAnsiName	asin fabs frexp nextafter
+"syn keyword	cAnsiName	atan atan2 tgamma nextafterx
+"syn keyword	cAnsiName	acosh cbrt hypot remainder
+"syn keyword	cAnsiName	asinh ceil ilogb remquo
+"syn keyword	cAnsiName	atanh copysign ldexp rint
+"syn keyword	cAnsiName	cos erf lgamma round
+"syn keyword	cAnsiName	sin erfc llrint scalbn
+"syn keyword	cAnsiName	tan exp2 llround scalbln
+"syn keyword	cAnsiName	cosh expm1 log10 trunc
+"syn keyword	cAnsiName	sinh fdim log1p carg
+"syn keyword	cAnsiName	tanh floor log2 cimag
+"syn keyword	cAnsiName	exp fma logb conj
+"syn keyword	cAnsiName	log fmax lrint cproj
+"syn keyword	cAnsiName	pow fmin lround creal
+
+syn keyword	cAnsiName	and bitor not_eq xor
+syn keyword	cAnsiName	and_eq compl or xor_eq
+syn keyword	cAnsiName	bitand not or_eq
+
+" A bunch of useful C keywords
+"syn keyword	cStatement	goto
+syn keyword	cStatement	break return continue asm
+syn keyword	cLabel		default
+syn keyword	cLabel		case
+syn keyword	cConditional	if else switch
+syn keyword	cRepeat		while for do
+
+syn keyword	cTodo		contained TODO FIXME XXX
+syn match	cTodo		contained "///[A-Z]!*"
+
+" cCommentGroup allows adding matches for special things in comments
+syn cluster	cCommentGroup	contains=cTodo
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match	cSpecial	display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
+if !exists("c_no_utf")
+  syn match	cSpecial	display contained "\\\(u\x\{4}\|U\x\{8}\)"
+endif
+if exists("c_no_cformat")
+  syn region	cString		start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,@Spell
+  " cCppString: same as cString, but ends at end of line
+  syn region	cCppString	start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,@Spell
+else
+  syn match	cFormat		display "%\(\d\+\$\)\=[-+' #0*,]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlLjztF]\|ll\|hh\)\=\([bdiuoxXDOUfeEgGcCsSpnAaK]\|\[\^\=.[^]]*\]\)" contained
+  syn match	cFormat		display "%%" contained
+  syn region	cString		start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell
+  " cCppString: same as cString, but ends at end of line
+  syn region	cCppString	start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat
+  hi link cFormat cSpecial
+endif
+hi link cCppString cString
+
+syn match	cCharacter	"L\='[^\\]'"
+syn match	cCharacter	"L'[^']*'" contains=cSpecial
+if exists("c_gnu")
+  syn match	cSpecialError	"L\='\\[^'\"?\\abefnrtv]'"
+  syn match	cSpecialCharacter "L\='\\['\"?\\abefnrtv]'"
+else
+  syn match	cSpecialError	"L\='\\[^'\"?\\abfnrtv]'"
+  syn match	cSpecialCharacter "L\='\\['\"?\\abfnrtv]'"
+endif
+syn match	cSpecialCharacter display "L\='\\\o\{1,3}'"
+syn match	cSpecialCharacter display "'\\x\x\{1,2}'"
+syn match	cSpecialCharacter display "L'\\x\x\+'"
+
+"when wanted, highlight trailing white space
+if exists("c_space_errors")
+  if !exists("c_no_trail_space_error")
+    syn match	cSpaceError	display excludenl "\s\+$"
+  endif
+  if !exists("c_no_tab_space_error")
+    syn match	cSpaceError	display " \+\t"me=e-1
+  endif
+endif
+
+"catch errors caused by wrong parenthesis and brackets
+" also accept <% for {, %> for }, <: for [ and :> for ] (C99)
+syn cluster	cParenGroup	contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cUserLabel2,cGotoLabel,cBitField,cCommentSkip,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom
+if exists("c_no_bracket_error")
+  syn region	cParen		transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
+  " cCppParen: same as cParen but ends at end-of-line; used in cDefine
+  syn region	cCppParen	transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
+  syn match	cParenError	display ")"
+" syn match	cErrInParen	display contained "[{}]\|<%\|%>"
+  syn match	cErrInParen	display contained "[]\|<%\|%>"
+else
+  syn region	cParen		transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell
+  " cCppParen: same as cParen but ends at end-of-line; used in cDefine
+  syn region	cCppParen	transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell
+  syn match	cParenError	display "[\])]"
+" syn match	cErrInParen	display contained "[\]{}]\|<%\|%>"
+  syn match	cErrInParen	display contained "[\]]\|<%\|%>"
+  syn region	cBracket	transparent start='\[\|<::\@!' end=']\|:>' contains=ALLBUT,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString,@Spell
+  " cCppBracket: same as cParen but ends at end-of-line; used in cDefine
+  syn region	cCppBracket	transparent start='\[\|<::\@!' skip='\\$' excludenl end=']\|:>' end='$' contained contains=ALLBUT,@cParenGroup,cErrInParen,cParen,cBracket,cString,@Spell
+  syn match	cErrInBracket	display contained "[);{}]\|<%\|%>"
+  "syn region	cBlock		transparent matchgroup=cBraces start='{' end='}' contains=ALLBUT,@cParenGroup,cCppParen,cCppBracket,cCppString,cBraceError,cErrInBracket
+  "syn match	cBraceError	"}"
+endif
+
+"integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match	cNumbers	display transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctalError,cOctal
+" Same, but without octal error (for comments)
+syn match	cNumbersCom	display contained transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctal
+syn match	cNumber		display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
+"hex number
+syn match	cNumber		display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
+" Flag the first zero of an octal number as something special
+syn match	cOctal		display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZero
+syn match	cOctalZero	display contained "\<0"
+syn match	cFloat		display contained "\d\+f"
+"floating point number, with dot, optional exponent
+syn match	cFloat		display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
+"floating point number, starting with a dot, optional exponent
+syn match	cFloat		display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match	cFloat		display contained "\d\+e[-+]\=\d\+[fl]\=\>"
+if !exists("c_no_c99")
+  "hexadecimal floating point number, optional leading digits, with dot, with exponent
+  syn match	cFloat		display contained "0x\x*\.\x\+p[-+]\=\d\+[fl]\=\>"
+  "hexadecimal floating point number, with leading digits, optional dot, with exponent
+  syn match	cFloat		display contained "0x\x\+\.\=p[-+]\=\d\+[fl]\=\>"
+endif
+
+" flag an octal number with wrong digits
+syn match	cOctalError	display contained "0\o*[89]\d*"
+syn case match
+
+if exists("xxxc_comment_strings")
+  " A comment can contain cString, cCharacter and cNumber.
+  " But a "*/" inside a cString in a cComment DOES end the comment!  So we
+  " need to use a special type of cString: cCommentString, which also ends on
+  " "*/", and sees a "*" at the start of the line as comment again.
+  " Unfortunately this doesn't very well work for // type of comments :-(
+  syntax match	cCommentSkip	contained "^\s*\*\($\|\s\+\)"
+  syntax region cCommentString	contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=cSpecial,cCommentSkip
+  syntax region cComment2String	contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=cSpecial
+  syntax region  cCommentL	start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError,@Spell
+  syntax region cComment	matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,@Spell
+else
+  syn region	cCommentL	start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cSpaceError,@Spell
+  syn region	cComment	matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,@Spell
+endif
+" keep a // comment separately, it terminates a preproc. conditional
+syntax match	cCommentError	display "\*/"
+syntax match	cCommentStartError display "/\*"me=e-1 contained
+
+syn keyword	cOperator	sizeof
+if exists("c_gnu")
+  syn keyword	cStatement	__asm__
+  syn keyword	cOperator	typeof __real__ __imag__
+endif
+syn keyword	cType		int long short char void
+syn keyword	cType		signed unsigned float double
+
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+"ISSM special syntax                                                                                             "
+let enumfile=$ISSM_DIR."/src/c/shared/Enum/Enum.vim"
+if filereadable(enumfile)
+   exec 'source ' . enumfile
+endif
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+if !exists("c_no_ansi") || exists("c_ansi_typedefs")
+	syn keyword   cType		size_t ssize_t wchar_t ptrdiff_t sig_atomic_t fpos_t
+	syn keyword   cType		clock_t time_t va_list jmp_buf FILE DIR div_t ldiv_t
+	syn keyword   cType		mbstate_t wctrans_t wint_t wctype_t
+	syn keyword   cType		lldiv_t float_t double_t fenv_t fexcept_t
+endif
+if !exists("c_no_c99") " ISO C99
+	syn keyword	cType		bool complex imaginary
+	syn keyword	cType		int8_t int16_t int32_t int64_t
+	syn keyword	cType		uint8_t uint16_t uint32_t uint64_t
+	syn keyword	cType		int_least8_t int_least16_t int_least32_t int_least64_t
+	syn keyword	cType		uint_least8_t uint_least16_t uint_least32_t uint_least64_t
+	syn keyword	cType		int_fast8_t int_fast16_t int_fast32_t int_fast64_t
+	syn keyword	cType		uint_fast8_t uint_fast16_t uint_fast32_t uint_fast64_t
+	syn keyword	cType		intptr_t uintptr_t
+	syn keyword	cType		intmax_t uintmax_t
+endif
+if exists("c_gnu")
+	syn keyword	cType		__label__ __complex__ __volatile__
+endif
+
+syn keyword	cStructure	struct union enum typedef
+syn keyword	cStorageClass	static register auto volatile extern const VOL
+if exists("c_gnu")
+	syn keyword	cStorageClass	inline __attribute__
+endif
+if !exists("c_no_c99")
+	syn keyword	cStorageClass	inline restrict
+endif
+
+if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu")
+	if exists("c_gnu")
+		syn keyword cConstant __GNUC__ __FUNCTION__ __PRETTY_FUNCTION__
+	endif
+	syn keyword cConstant __LINE__ __FILE__ __DATE__ __TIME__ __STDC__ __func__
+	syn keyword cConstant __STDC_VERSION__
+	syn keyword cConstant CHAR_BIT MB_LEN_MAX MB_CUR_MAX
+	syn keyword cConstant UCHAR_MAX UINT_MAX ULONG_MAX USHRT_MAX
+	syn keyword cConstant CHAR_MIN INT_MIN LONG_MIN SHRT_MIN
+	syn keyword cConstant CHAR_MAX INT_MAX LONG_MAX SHRT_MAX
+	syn keyword cConstant SCHAR_MIN SINT_MIN SLONG_MIN SSHRT_MIN
+	syn keyword cConstant SCHAR_MAX SINT_MAX SLONG_MAX SSHRT_MAX
+	if !exists("c_no_c99")
+		syn keyword cConstant LLONG_MIN LLONG_MAX ULLONG_MAX
+		syn keyword cConstant INT8_MIN INT16_MIN INT32_MIN INT64_MIN
+		syn keyword cConstant INT8_MAX INT16_MAX INT32_MAX INT64_MAX
+		syn keyword cConstant UINT8_MAX UINT16_MAX UINT32_MAX UINT64_MAX
+		syn keyword cConstant INT_LEAST8_MIN INT_LEAST16_MIN INT_LEAST32_MIN INT_LEAST64_MIN
+		syn keyword cConstant INT_LEAST8_MAX INT_LEAST16_MAX INT_LEAST32_MAX INT_LEAST64_MAX
+		syn keyword cConstant UINT_LEAST8_MAX UINT_LEAST16_MAX UINT_LEAST32_MAX UINT_LEAST64_MAX
+		syn keyword cConstant INT_FAST8_MIN INT_FAST16_MIN INT_FAST32_MIN INT_FAST64_MIN
+		syn keyword cConstant INT_FAST8_MAX INT_FAST16_MAX INT_FAST32_MAX INT_FAST64_MAX
+		syn keyword cConstant UINT_FAST8_MAX UINT_FAST16_MAX UINT_FAST32_MAX UINT_FAST64_MAX
+		syn keyword cConstant INTPTR_MIN INTPTR_MAX UINTPTR_MAX
+		syn keyword cConstant INTMAX_MIN INTMAX_MAX UINTMAX_MAX
+		syn keyword cConstant PTRDIFF_MIN PTRDIFF_MAX SIG_ATOMIC_MIN SIG_ATOMIC_MAX
+		syn keyword cConstant SIZE_MAX WCHAR_MIN WCHAR_MAX WINT_MIN WINT_MAX
+	endif
+	syn keyword cConstant FLT_RADIX FLT_ROUNDS
+	syn keyword cConstant FLT_DIG FLT_MANT_DIG FLT_EPSILON
+	syn keyword cConstant DBL_DIG DBL_MANT_DIG DBL_EPSILON
+	syn keyword cConstant LDBL_DIG LDBL_MANT_DIG LDBL_EPSILON
+	syn keyword cConstant FLT_MIN FLT_MAX FLT_MIN_EXP FLT_MAX_EXP
+	syn keyword cConstant FLT_MIN_10_EXP FLT_MAX_10_EXP
+	syn keyword cConstant DBL_MIN DBL_MAX DBL_MIN_EXP DBL_MAX_EXP
+	syn keyword cConstant DBL_MIN_10_EXP DBL_MAX_10_EXP
+	syn keyword cConstant LDBL_MIN LDBL_MAX LDBL_MIN_EXP LDBL_MAX_EXP
+	syn keyword cConstant LDBL_MIN_10_EXP LDBL_MAX_10_EXP
+	syn keyword cConstant HUGE_VAL CLOCKS_PER_SEC NULL _NO_LEAP_SECONDS _LOCALTIME
+	syn keyword cConstant LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY
+	syn keyword cConstant LC_NUMERIC LC_TIME
+	" syn keyword cConstant SIG_DFL SIG_ERR SIG_IGN
+	syn keyword cAnsiFuncPtr SIG_DFL SIG_ERR SIG_IGN
+	syn keyword cConstant SIGABRT SIGFPE SIGILL SIGHUP SIGINT SIGSEGV SIGTERM
+	syn keyword cConstant INFINITY     FP_SUBNORMAL FP_ILOGB0
+	syn keyword cConstant NAN          FP_ZERO      FP_ILOGBNAN
+	syn keyword cConstant FP_INFINITE  FP_FAST_FMA
+	syn keyword cConstant HUGE_VALF    FP_NAN       FP_FAST_FMAF
+	syn keyword cConstant HUGE_VALL    FP_NORMAL    FP_FAST_FMAL
+	syn keyword cConstant FE_OVERFLOW      FE_TOWARDZERO
+	syn keyword cConstant FE_UNDERFLOW     FE_UPWARD
+	syn keyword cConstant FE_DIVBYZERO     FE_ALL_EXCEPT    FE_DFL_ENV
+	syn keyword cConstant FE_INEXACT       FE_DOWNWARD
+	syn keyword cConstant FE_INVALID       FE_TONEAREST
+	syn keyword cConstant	_Complex_I _Imaginary_I 
+	" Add POSIX signals as well...
+	syn keyword cConstant SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP
+	syn keyword cConstant SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV
+	syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU
+	syn keyword cConstant SIGUSR1 SIGUSR2
+	syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF WEOF
+	syn keyword cConstant FOPEN_MAX FILENAME_MAX L_tmpnam
+	syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET
+	syn keyword cConstant TMP_MAX stderr stdin stdout
+	syn keyword cConstant EXIT_FAILURE EXIT_SUCCESS RAND_MAX
+	" Add POSIX errors as well
+	syn keyword cConstant E2BIG EACCES EAGAIN EBADF EBADMSG EBUSY
+	syn keyword cConstant ECANCELED ECHILD EDEADLK EDOM EEXIST EFAULT
+	syn keyword cConstant EFBIG EILSEQ EINPROGRESS EINTR EINVAL EIO EISDIR
+	syn keyword cConstant EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENFILE ENODEV
+	syn keyword cConstant ENOENT ENOEXEC ENOLCK ENOMEM ENOSPC ENOSYS
+	syn keyword cConstant ENOTDIR ENOTEMPTY ENOTSUP ENOTTY ENXIO EPERM
+	syn keyword cConstant EPIPE ERANGE EROFS ESPIPE ESRCH ETIMEDOUT EXDEV
+	" math.h
+	syn keyword cConstant M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2 M_PI_4
+	syn keyword cConstant M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2
+endif
+if !exists("c_no_c99") " ISO C99
+	syn keyword cConstant true false __bool_true_false_are_defined
+endif
+
+" Accept %: for # (C99)
+syn region	cPreCondit	start="^\s*\(%:\|#\)\s*\(ifdef\|ifndef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=cComment,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
+syn keyword	cDefined	defined contained
+"syn match	cDefined	display contained "\<defined(\w\+)" contains=cName,cAnsiName
+syn region	cPreConditIf	start="^\s*\(%:\|#\)\s*\(if\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=cDefined,cComment,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
+syn match	cPreCondit	display "^\s*\(%:\|#\)\s*\(else\|endif\)\>"
+if !exists("c_no_if0")
+	syn region	cCppOut		start="^\s*\(%:\|#\)\s*if\s\+0\+\>" end=".\@=\|$" contains=cCppOut2
+	syn region	cCppOut2	contained start="0" end="^\s*\(%:\|#\)\s*\(endif\>\|else\>\|elif\>\)" contains=cSpaceError,cCppSkip
+		syn region	cCppSkip	contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppSkip
+	endif
+	syn region	cIncluded	display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+	syn match	cIncluded	display contained "<[^>]*>"
+	syn match	cInclude	display "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=cIncluded
+	syn match cLineSkip	"\\$"
+	syn cluster	cPreProcGroup	contains=cPreConditIf,cPreCondit,cIncluded,cInclude,cDefined,cDefine,cErrInParen,cErrInBracket,cUserLabel,cUserLabel2,cGotoLabel,cSpecial,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti
+	"syn region	cDefine		start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@cPreProcGroup,@Spell
+	syn region	cDefine		start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@cPreProcGroup,cName,cFunction,cAnsiFunction,@Spell
+	syn region	cPreProc	start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
+
+	" Highlight User Labels
+	syn cluster	cMultiGroup	contains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cUserLabel2,cGotoLabel,cBitField,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString
+	syn region	cMulti		transparent start='?' skip='::' end=':' contains=ALLBUT,@cMultiGroup,@Spell
+	" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
+	syn cluster	cLabelGroup	contains=cUserLabel
+	syn match	cUserCont	display "^\s*\I\i*\s*:$" contains=@cLabelGroup
+	syn match	cUserCont	display ";\s*\I\i*\s*:$" contains=@cLabelGroup
+	syn match	cUserCont	display "^\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
+	syn match	cUserCont	display ";\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
+
+	syn match	cUserLabel	display "\I\i*" contained
+	syn match	cUserLabel2	display "\I\i*:;\+"me=e-2
+	syn match	cGotoLabel	display "\<goto\s\+\I\i*;"me=e-1,hs=s+5 contains=cGoto
+	syn keyword	cGoto		contained goto
+
+	" Avoid recognizing most bitfields as labels
+	syn match	cBitField	display "^\s*\I\i*\s*:\s*[1-9]"me=e-1
+	syn match	cBitField	display ";\s*\I\i*\s*:\s*[1-9]"me=e-1
+
+	syn match cOperator	"\(<<\|>>\|[-+*/%&^|<>!=]\)="
+	syn match cOperator	"<<\|>>\|&&\|||\|++\|--\|->"
+	syn match cOperator	"[.!~*&%<>^|=+-]"
+	syn match cOperator	"/[^/*=]"me=e-1
+	syn match cOperator	"/$"
+	syn match cOperator	"[\\]"
+	syn match cOperator	"&&\|||"
+	syn match cSpecialCharacter	"[,;]"
+	syn match cDelimiter    "[][(){}]"
+	syn keyword	cType		CHAR byte BYTE uchar ushort uint ulong
+	syn keyword	cType		WORD DWORD QWORD INT INT2 INT4 UNS UNS2 UNS4 INT8 UNS8
+	syn keyword	cType		CFG_t cfap_t cBYTE cvoid
+	syn keyword	cType		_Bool _Complex _Imaginary __int64
+	if !exists("c_no_ansi") || exists("c_ansi_typedefs")
+		syn keyword   cMC	__near __far FAR __io __direct DIR
+	endif
+
+	if exists("c_minlines")
+		let b:c_minlines = c_minlines
+	else
+		if !exists("c_no_if0")
+			let b:c_minlines = 50	" #if 0 constructs can be long
+		else
+			let b:c_minlines = 15	" mostly for () constructs
+		endif
+	endif
+	exec "syn sync ccomment cComment minlines=" . b:c_minlines
+
+	" Define the default highlighting.
+	" For version 5.7 and earlier: only when not done already
+	" For version 5.8 and later: only when an item doesn't have highlighting yet
+	if version >= 508 || !exists("did_c_syn_inits")
+		if version < 508
+			let did_c_syn_inits = 1
+			command -nargs=+ HiLink hi link <args>
+		else
+			command -nargs=+ HiLink hi def link <args>
+		endif
+
+		HiLink cFormat	cSpecial
+		HiLink cCppString	cString
+		HiLink cCommentL	cComment
+		HiLink cCommentStart	cComment
+		HiLink cLabel		Label
+		" HiLink cUserLabel	Label
+		HiLink cUserLabel	UserLabel2
+		HiLink cUserLabel2	UserLabel2
+		HiLink cGotoLabel	UserLabel2
+		HiLink cGoto		Statement
+		HiLink cConditional	Conditional
+		HiLink cRepeat	Repeat
+		HiLink cCharacter	Character
+		HiLink cSpecialCharacter cSpecial
+		HiLink cNumber	Number
+		HiLink cOctal		Number
+		HiLink cOctalZero	PreProc		" link this to Error if you want
+		HiLink cFloat		Float
+		HiLink cOctalError	cError
+		HiLink cParenError	cError
+		HiLink cErrInParen	cError
+		HiLink cErrInBracket	cError
+		HiLink cCommentError	cError
+		HiLink cCommentStartError	cError
+		HiLink cSpaceError	cError
+		HiLink cSpecialError	cError
+		HiLink cOperator	Operator
+		HiLink cOperatorBold	OperatorBold
+		HiLink cStructure	Structure
+		HiLink cStorageClass	StorageClass
+		HiLink cInclude	Include
+		HiLink cPreProc	PreProc
+		HiLink cDefine	Macro
+		HiLink cDefined	PreCondit
+		HiLink cIncluded	cString
+		HiLink cError		Error
+		HiLink cStatement	Statement
+		HiLink cPreCondit	PreCondit
+		HiLink cPreConditIf	PreCondit
+		HiLink cType		Type
+		HiLink cConstant	Constant
+		HiLink cCommentString cString
+		HiLink cComment2String cString
+		HiLink cCommentSkip	cComment
+		HiLink cString	String
+		HiLink cComment	Comment
+		HiLink cDelimiter     Delimiter
+		HiLink cSpecial	SpecialChar
+		HiLink cTodo		Todo
+		HiLink cCppSkip	cCppOut
+		HiLink cCppOut2	cCppOut
+		HiLink cCppOut	Comment
+		HiLink cMulti		Operator
+		HiLink cMultiMG	Operator
+		HiLink cFunction	Function
+		HiLink cAnsiFunction	StdFunction
+		HiLink cName		Name
+		HiLink cBitField	Name
+		HiLink cAnsiName	StdName
+		"HiLink cBlock	BlockBraces
+		HiLink cBraces	BlockBraces
+		"HiLink cBraceError	Error
+		HiLink cMC		MicroController
+		HiLink cAnsiFuncPtr	AnsiFuncPtr
+
+		hi Function		gui=NONE guifg=#e86f00
+		"hi StdFunction	gui=bold guifg=#ee0040
+		hi StdFunction	gui=bold guifg=#e86f00
+		hi Statement		gui=bold guifg=#a06129
+		hi UserLabel2		gui=bold guifg=#c96129
+		hi Operator		gui=NONE guifg=#000000
+		hi OperatorBold	gui=bold guifg=#000000
+		hi StdName		gui=bold guifg=#5276e6
+		hi Name		gui=NONE guifg=#5276e6
+		hi BlockBraces	gui=bold guifg=#000000
+		hi Special		gui=NONE guifg=#a000a0
+		hi Comment		gui=NONE guifg=grey62
+		hi MicroController	gui=bold guifg=#d00000
+		hi AnsiFuncPtr	gui=NONE guifg=#ff0000
+		" hi PreProc        	gui=NONE guifg=#6a5acd
+		hi PreCondit      	gui=NONE guifg=#6a5acd
+		" hi Macro          	gui=NONE guifg=#0000ff
+
+		delcommand HiLink
+	endif
+	hi Normal		gui=NONE guifg=#000000 guibg=Ivory1
+
+	let b:current_syntax = "c"
+
+	" vim: ts=8
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/syntax/julia.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/syntax/julia.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/syntax/julia.vim	(revision 27955)
@@ -0,0 +1,557 @@
+" Vim syntax file
+" Language:	julia
+" Maintainer:	Carlo Baldassi <carlobaldassi@gmail.com>
+" Last Change:	2013 feb 11
+
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+if version < 704
+  " this is used to disable regex syntax like `\@3<='
+  " on older vim versions
+  function! s:d(x)
+    return ''
+  endfunction
+else
+  function! s:d(x)
+    return string(a:x)
+  endfunction
+endif
+
+scriptencoding utf-8
+
+let s:julia_spellcheck_strings = get(g:, "julia_spellcheck_strings", 0)
+let s:julia_spellcheck_docstrings = get(g:, "julia_spellcheck_docstrings", 1)
+let s:julia_spellcheck_comments = get(g:, "julia_spellcheck_comments", 1)
+
+let s:julia_highlight_operators = get(g:, "julia_highlight_operators", 1)
+
+" List of characters, up to \UFF, which cannot be used in identifiers.
+" (It includes operator characters; we don't consider them identifiers.)
+" This is used mostly in lookbehinds with `\@<=`, e.g. when we need to check
+" that that we're not in the middle of an identifier.
+" It doesn't include a few characters (spaces and all closing parentheses)
+" because those may or may not be valid in the lookbehind on a case-by-case
+" basis.
+let s:nonid_chars = '\U00-\U08' . '\U0A-\U1F'
+      \           . '\U21-\U28' . '\U2A-\U2F' . '\U3A-\U40' . '\U5B-\U5E' . '\U60' . '\U7B\U7C'
+      \           . '\U7E-\UA1' . '\UA7\UA8' . '\UAB-\UAD' . '\UAF\UB1\UB4' . '\UB6-\UB8' . '\UBB\UBF' . '\UD7\UF7'
+
+" The complete list
+let s:nonidS_chars = '[:space:])\U5D}' . s:nonid_chars
+
+
+" List of all valid operator chars up to \UFF (NOTE: they must all be included
+" in s:nonidS_chars, so that if we include that, then this is redundant)
+" It does not include '!' since it can be used in an identifier.
+" The list contains the following characters: '%&*+-/<=>\\^|~¬±×÷'
+let s:op_chars = '\U25\U26\U2A\U2B\U2D\U2F\U3C-\U3E\U5C\U5E\U7C\U7E\UAC\UB1\UD7\UF7'
+
+" List of all valid operator chars above \UFF
+" Written with ranges for performance reasons
+" The list contains the following characters: '…⁝⅋←↑→↓↔↚↛↜↝↞↠↢↣↤↦↩↪↫↬↮↶↷↺↻↼↽⇀⇁⇄⇆⇇⇉⇋⇌⇍⇎⇏⇐⇒⇔⇚⇛⇜⇝⇠⇢⇴⇵⇶⇷⇸⇹⇺⇻⇼⇽⇾⇿∈∉∊∋∌∍∓∔∗∘∙√∛∜∝∤∥∦∧∨∩∪∷∸∺∻∽∾≀≁≂≃≄≅≆≇≈≉≊≋≌≍≎≏≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟≠≡≢≣≤≥≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊂⊃⊄⊅⊆⊇⊈⊉⊊⊋⊍⊎⊏⊐⊑⊒⊓⊔⊕⊖⊗⊘⊙⊚⊛⊜⊞⊟⊠⊡⊢⊣⊩⊬⊮⊰⊱⊲⊳⊴⊵⊶⊷⊻⊼⊽⋄⋅⋆⋇⋉⋊⋋⋌⋍⋎⋏⋐⋑⋒⋓⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋮⋯⋰⋱⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿⌿▷⟂⟈⟉⟑⟒⟕⟖⟗⟰⟱⟵⟶⟷⟹⟺⟻⟼⟽⟾⟿⤀⤁⤂⤃⤄⤅⤆⤇⤈⤉⤊⤋⤌⤍⤎⤏⤐⤑⤒⤓⤔⤕⤖⤗⤘⤝⤞⤟⤠⥄⥅⥆⥇⥈⥉⥊⥋⥌⥍⥎⥏⥐⥑⥒⥓⥔⥕⥖⥗⥘⥙⥚⥛⥜⥝⥞⥟⥠⥡⥢⥣⥤⥥⥦⥧⥨⥩⥪⥫⥬⥭⥮⥯⥰⦷⦸⦼⦾⦿⧀⧁⧡⧣⧤⧥⧴⧶⧷⧺⧻⨇⨈⨝⨟⨢⨣⨤⨥⨦⨧⨨⨩⨪⨫⨬⨭⨮⨰⨱⨲⨳⨴⨵⨶⨷⨸⨹⨺⨻⨼⨽⩀⩁⩂⩃⩄⩅⩊⩋⩌⩍⩎⩏⩐⩑⩒⩓⩔⩕⩖⩗⩘⩚⩛⩜⩝⩞⩟⩠⩡⩢⩣⩦⩧⩪⩫⩬⩭⩮⩯⩰⩱⩲⩳⩴⩵⩶⩷⩸⩹⩺⩻⩼⩽⩾⩿⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪋⪌⪍⪎⪏⪐⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚⪛⪜⪝⪞⪟⪠⪡⪢⪣⪤⪥⪦⪧⪨⪩⪪⪫⪬⪭⪮⪯⪰⪱⪲⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅⫆⫇⫈⫉⫊⫋⫌⫍⫎⫏⫐⫑⫒⫓⫔⫕⫖⫗⫘⫙⫛⫷⫸⫹⫺⬰⬱⬲⬳⬴⬵⬶⬷⬸⬹⬺⬻⬼⬽⬾⬿⭀⭁⭂⭃⭄⭇⭈⭉⭊⭋⭌￩￪￫￬'
+let s:op_chars_wc = '\U2026\U205D\U214B\U2190-\U2194\U219A-\U219E\U21A0\U21A2-\U21A4\U21A6\U21A9-\U21AC\U21AE\U21B6\U21B7\U21BA-\U21BD\U21C0\U21C1\U21C4\U21C6\U21C7\U21C9\U21CB-\U21D0\U21D2\U21D4\U21DA-\U21DD\U21E0\U21E2\U21F4-\U21FF\U2208-\U220D\U2213\U2214\U2217-\U221D\U2224-\U222A\U2237\U2238\U223A\U223B\U223D\U223E\U2240-\U228B\U228D-\U229C\U229E-\U22A3\U22A9\U22AC\U22AE\U22B0-\U22B7\U22BB-\U22BD\U22C4-\U22C7\U22C9-\U22D3\U22D5-\U22FF\U233F\U25B7\U27C2\U27C8\U27C9\U27D1\U27D2\U27D5-\U27D7\U27F0\U27F1\U27F5-\U27F7\U27F9-\U27FF\U2900-\U2918\U291D-\U2920\U2944-\U2970\U29B7\U29B8\U29BC\U29BE-\U29C1\U29E1\U29E3-\U29E5\U29F4\U29F6\U29F7\U29FA\U29FB\U2A07\U2A08\U2A1D\U2A1F\U2A22-\U2A2E\U2A30-\U2A3D\U2A40-\U2A45\U2A4A-\U2A58\U2A5A-\U2A63\U2A66\U2A67\U2A6A-\U2AD9\U2ADB\U2AF7-\U2AFA\U2B30-\U2B44\U2B47-\U2B4C\UFFE9-\UFFEC'
+
+" Full operators regex
+let s:operators = '\%(' . '\.\%([-+*/^÷%|&⊻]\|//\|\\\|>>\|>>>\?\)\?='
+      \         . '\|'  . '[:<>]=\|||\|&&\||>\|<|\|[<>:]:\|<<\|>>>\?\|//\|[-=]>\|\.\.\.\?'
+      \         . '\|'  . '\.\?[!' . s:op_chars . s:op_chars_wc . ']'
+      \         . '\)'
+
+
+" Characters that can be used to start an identifier. Above \UBF we don't
+" bother checking. (If a UTF8 operator is used, it will take precedence anyway.)
+let s:id_charsH = '\%([A-Za-z_\UA2-\UA6\UA9\UAA\UAE\UB0\UB5\UBA]\|[^\U00-\UBF]\)'
+" Characters that can appear in an identifier, starting in 2nd position. Above
+" \UBF we check for operators since we need to stop the identifier if one
+" appears. We don't check for invalid characters though.
+let s:id_charsW = '\%([0-9A-Za-z_!\UA2-\UA6\UA9\UAA\UAE-\UB0\UB2-\UB5\UB8-\UBA\UBC-\UBE]\|[^\U00-\UBF]\@=[^' . s:op_chars_wc . ']\)'
+
+" A valid julia identifier, more or less
+let s:idregex = '\%(' . s:id_charsH . s:id_charsW . '*\)'
+
+
+
+syn case match
+
+syntax cluster juliaExpressions		contains=@juliaParItems,@juliaStringItems,@juliaKeywordItems,@juliaBlocksItems,@juliaTypesItems,@juliaConstItems,@juliaMacroItems,@juliaSymbolItems,@juliaOperatorItems,@juliaNumberItems,@juliaCommentItems,@juliaErrorItems,@juliaSyntaxRegions
+syntax cluster juliaExprsPrintf		contains=@juliaExpressions,@juliaPrintfItems
+syntax cluster juliaExprsNodot		contains=@juliaParItems,@juliaStringItems,@juliaMacroItems,@juliaSymbolItems,@juliaOperatorItems,@juliaCommentItems,juliaIdSymbol
+
+syntax cluster juliaParItems		contains=juliaParBlock,juliaSqBraIdxBlock,juliaSqBraBlock,juliaCurBraBlock,juliaQuotedParBlock,juliaQuotedQMarkPar
+syntax cluster juliaKeywordItems	contains=juliaKeyword,juliaWhereKeyword,juliaImportLine,juliaInfixKeyword,juliaRepKeyword
+syntax cluster juliaBlocksItems		contains=juliaConditionalBlock,juliaWhileBlock,juliaForBlock,juliaBeginBlock,juliaFunctionBlock,juliaMacroBlock,juliaQuoteBlock,juliaTypeBlock,juliaImmutableBlock,juliaExceptionBlock,juliaLetBlock,juliaDoBlock,juliaModuleBlock,juliaStructBlock,juliaMutableStructBlock,juliaAbstractBlock,juliaPrimitiveBlock
+syntax cluster juliaTypesItems		contains=juliaBaseTypeBasic,juliaBaseTypeNum,juliaBaseTypeC,juliaBaseTypeError,juliaBaseTypeIter,juliaBaseTypeString,juliaBaseTypeArray,juliaBaseTypeDict,juliaBaseTypeSet,juliaBaseTypeIO,juliaBaseTypeProcess,juliaBaseTypeRange,juliaBaseTypeRegex,juliaBaseTypeFact,juliaBaseTypeFact,juliaBaseTypeSort,juliaBaseTypeRound,juliaBaseTypeSpecial,juliaBaseTypeRandom,juliaBaseTypeDisplay,juliaBaseTypeTime,juliaBaseTypeOther
+
+syntax cluster juliaConstItems  	contains=juliaConstNum,juliaConstBool,juliaConstEnv,juliaConstMMap,juliaConstC,juliaConstGeneric,juliaConstIO,juliaPossibleEuler
+
+syntax cluster juliaMacroItems		contains=juliaPossibleMacro,juliaDollarVar,juliaDollarPar,juliaDollarSqBra
+syntax cluster juliaSymbolItems		contains=juliaPossibleSymbol
+syntax cluster juliaNumberItems		contains=juliaNumbers
+syntax cluster juliaStringItems		contains=juliaChar,juliaString,juliabString,juliasString,juliaShellString,juliaDocString,juliaRegEx
+syntax cluster juliaPrintfItems		contains=juliaPrintfParBlock,juliaPrintfString
+syntax cluster juliaOperatorItems	contains=juliaOperator,juliaRangeOperator,juliaCTransOperator,juliaTernaryRegion,juliaColon,juliaSemicolon,juliaComma
+syntax cluster juliaCommentItems	contains=juliaCommentL,juliaCommentM
+syntax cluster juliaErrorItems		contains=juliaErrorPar,juliaErrorEnd,juliaErrorElse,juliaErrorCatch,juliaErrorFinally
+
+syntax cluster juliaSyntaxRegions	contains=juliaIdSymbol,juliaTypeOperatorR2,juliaTypeOperatorR3,juliaWhereR,juliaDotted
+
+syntax cluster juliaSpellcheckStrings		contains=@spell
+syntax cluster juliaSpellcheckDocStrings	contains=@spell
+syntax cluster juliaSpellcheckComments		contains=@spell
+
+if !s:julia_spellcheck_docstrings
+  syntax cluster juliaSpellcheckDocStrings	remove=@spell
+endif
+if !s:julia_spellcheck_strings
+  syntax cluster juliaSpellcheckStrings		remove=@spell
+endif
+if !s:julia_spellcheck_comments
+  syntax cluster juliaSpellcheckComments	remove=@spell
+endif
+
+syntax match   juliaSemicolon		display ";"
+syntax match   juliaComma		display ","
+syntax match   juliaColon		display ":"
+
+" A dot can introduce a sort of 'environment' such that words after it are not
+" recognized as keywords. This has low precedence so that it can be overridden
+" by operators
+syntax match   juliaDotted		transparent "\.\s*[^])}.]" contains=@juliaExprsNodot
+syntax match   juliaDottedT		contained transparent "\.\s*[^])}.]" contains=@juliaExprsNodot,juliaType
+
+syntax match   juliaErrorPar		display "[])}]"
+syntax match   juliaErrorEnd		display "\<end\>"
+syntax match   juliaErrorElse		display "\<\%(else\|elseif\)\>"
+syntax match   juliaErrorCatch		display "\<catch\>"
+syntax match   juliaErrorFinally	display "\<finally\>"
+syntax match   juliaErrorSemicol	display contained ";"
+
+syntax region  juliaParBlock		matchgroup=juliaParDelim start="(" end=")" contains=@juliaExpressions,juliaComprehensionFor
+syntax region  juliaParBlockInRange	matchgroup=juliaParDelim contained start="(" end=")" contains=@juliaExpressions,juliaParBlockInRange,juliaRangeKeyword,juliaComprehensionFor
+syntax region  juliaSqBraIdxBlock	matchgroup=juliaParDelim start="\[" end="\]" contains=@juliaExpressions,juliaParBlockInRange,juliaRangeKeyword,juliaComprehensionFor,juliaSymbolS,juliaQuotedParBlockS,juliaQuotedQMarkParS
+exec 'syntax region  juliaSqBraBlock	matchgroup=juliaParDelim start="\%(^\|\s\|' . s:operators . '\)\@'.s:d(3).'<=\[" end="\]" contains=@juliaExpressions,juliaComprehensionFor,juliaSymbolS,juliaQuotedParBlockS,juliaQuotedQMarkParS'
+syntax region  juliaCurBraBlock		matchgroup=juliaParDelim start="{" end="}" contains=juliaType,juliaDottedT,@juliaExpressions
+
+exec 'syntax match   juliaType		contained "\%(' . s:idregex . '\.\)*\zs' . s:idregex . '"'
+
+" This is a generic identifier followed by some symbol, either a type
+" operator (<: or >:), or an open parenthesis, or an open curly bracket.
+" It's used to recognize one of the contained regions looking for identifiers
+" only once. Once recognized, those regions no longer need to use the
+" expensive s:idregex.
+exec 'syntax match   juliaIdSymbol	transparent "' . s:idregex . '\%(\s*[<>]:\|\.\?(\|{\|\"\)\@=" contains=juliaFunctionCall,juliaParamType,juliaStringPrefixed,juliaTypeOperatorR1'
+
+syntax match  juliaFunctionCall		contained "[^{([:space:]<>\"]\+(\@=" nextgroup=juliaParBlock
+
+exec 'syntax match   juliaFunctionDef	contained transparent "\%(\<\%(function\|macro\)\)\@'.s:d(8).'<=\s\+\zs' . s:idregex . '\%(\.' . s:idregex . '\)*\ze\s*\%((\|\send\>\|$\)" contains=juliaFunctionName'
+exec 'syntax match   juliaFunctionName	contained "\%(\<\%(function\|macro\)\s\+\)\@'.s:d(20).'<=\%(' . s:idregex . '\.\)*\zs' . s:idregex . '"'
+
+exec 'syntax match   juliaStructR	contained transparent "\%(\<\%(\%(mutable\s\+\)\?struct\|\%(abstract\|primitive\)\s\+type\)\s\+\)\@'.s:d(20).'<=\%(' . s:idregex . '\.\)*' . s:idregex . '\>\(\s*(\)\@!" contains=juliaType'
+
+syntax match   juliaKeyword		display "\<\%(return\|local\|global\|const\)\>"
+syntax match   juliaInfixKeyword	display "\%(=\s*\)\@<!\<\%(in\|isa\)\>\S\@!\%(\s*=\)\@!"
+
+" The import/export/using keywords introduce a sort of special parsing
+" environment with its own rules
+exec 'syntax region  juliaImportLine		matchgroup=juliaKeyword excludenl start="\<\%(import\|using\|export\)\>" skip="\%(\%(\<\%(import\|using\|export\)\>\)\|^\)\@'.s:d(6).'<=$" end="$" end="\%([])}]\)\@=" contains=@juliaExpressions,juliaAsKeyword,@juliaContinuationItems,juliaMacroName'
+syntax match   juliaAsKeyword		display contained "\<as\>"
+
+syntax match   juliaRepKeyword		display "\<\%(break\|continue\)\>"
+syntax region  juliaConditionalBlock	matchgroup=juliaConditional start="\<if\>" end="\<end\>" contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock fold
+syntax region  juliaConditionalEIBlock	matchgroup=juliaConditional transparent contained start="\<elseif\>" end="\<\%(end\|else\|elseif\)\>"me=s-1 contains=@juliaExpressions,juliaConditionalEIBlock,juliaConditionalEBlock
+syntax region  juliaConditionalEBlock	matchgroup=juliaConditional transparent contained start="\<else\>" end="\<end\>"me=s-1 contains=@juliaExpressions
+syntax region  juliaWhileBlock		matchgroup=juliaRepeat start="\<while\>" end="\<end\>" contains=@juliaExpressions fold
+syntax region  juliaForBlock		matchgroup=juliaRepeat start="\<for\>" end="\<end\>" contains=@juliaExpressions,juliaOuter fold
+syntax region  juliaBeginBlock		matchgroup=juliaBlKeyword start="\<begin\>" end="\<end\>" contains=@juliaExpressions fold
+syntax region  juliaFunctionBlock	matchgroup=juliaBlKeyword start="\<function\>" end="\<end\>" contains=@juliaExpressions,juliaFunctionDef fold
+syntax region  juliaMacroBlock		matchgroup=juliaBlKeyword start="\<macro\>" end="\<end\>" contains=@juliaExpressions,juliaFunctionDef fold
+syntax region  juliaQuoteBlock		matchgroup=juliaBlKeyword start="\<quote\>" end="\<end\>" contains=@juliaExpressions fold
+syntax region  juliaStructBlock		matchgroup=juliaBlKeyword start="\<struct\>" end="\<end\>" contains=@juliaExpressions,juliaStructR fold
+syntax region  juliaMutableStructBlock	matchgroup=juliaBlKeyword start="\<mutable\s\+struct\>" end="\<end\>" contains=@juliaExpressions,juliaStructR fold
+syntax region  juliaLetBlock		matchgroup=juliaBlKeyword start="\<let\>" end="\<end\>" contains=@juliaExpressions fold
+syntax region  juliaDoBlock		matchgroup=juliaBlKeyword start="\<do\>" end="\<end\>" contains=@juliaExpressions fold
+syntax region  juliaModuleBlock		matchgroup=juliaBlKeyword start="\<\%(bare\)\?module\>" end="\<end\>" contains=@juliaExpressions fold
+syntax region  juliaExceptionBlock	matchgroup=juliaException start="\<try\>" end="\<end\>" contains=@juliaExpressions,juliaCatchBlock,juliaFinallyBlock fold
+syntax region  juliaCatchBlock		matchgroup=juliaException transparent contained start="\<catch\>" end="\<end\>"me=s-1 contains=@juliaExpressions,juliaFinallyBlock
+syntax region  juliaFinallyBlock	matchgroup=juliaException transparent contained start="\<finally\>" end="\<end\>"me=s-1 contains=@juliaExpressions
+syntax region  juliaAbstractBlock	matchgroup=juliaBlKeyword start="\<abstract\s\+type\>" end="\<end\>" fold contains=@juliaExpressions,juliaStructR
+syntax region  juliaPrimitiveBlock	matchgroup=juliaBlKeyword start="\<primitive\s\+type\>" end="\<end\>" fold contains=@juliaExpressions,juliaStructR
+
+exec 'syntax region  juliaComprehensionFor	matchgroup=juliaComprehensionFor transparent contained start="\%([^[:space:],;:({[]\_s*\)\@'.s:d(80).'<=\<for\>" end="\ze[]);]" contains=@juliaExpressions,juliaComprehensionIf,juliaComprehensionFor'
+syntax match   juliaComprehensionIf	contained "\<if\>"
+
+exec 'syntax match   juliaOuter		contained "\<outer\ze\s\+' . s:idregex . '\>"'
+
+syntax match   juliaRangeKeyword	contained "\<\%(begin\|end\)\>"
+
+syntax match   juliaBaseTypeBasic	display "\<\%(\%(N\|Named\)\?Tuple\|Symbol\|Function\|Union\%(All\)\?\|Type\%(Name\|Var\)\?\|Any\|ANY\|Vararg\|Ptr\|Exception\|Module\|Expr\|DataType\|\%(LineNumber\|Quote\)Node\|\%(Weak\|Global\)\?Ref\|Method\|Pair\|Val\|Nothing\|Some\|Missing\)\>"
+syntax match   juliaBaseTypeNum		display "\<\%(U\?Int\%(8\|16\|32\|64\|128\)\?\|Float\%(16\|32\|64\)\|Complex\|Bool\|Char\|Number\|Signed\|Unsigned\|Integer\|AbstractFloat\|Real\|Rational\|\%(Abstract\)\?Irrational\|Enum\|BigInt\|BigFloat\|MathConst\|ComplexF\%(16\|32\|64\)\)\>"
+syntax match   juliaBaseTypeC		display "\<\%(FileOffset\|C\%(u\?\%(char\|short\|int\|long\(long\)\?\|w\?string\)\|float\|double\|\%(ptrdiff\|s\?size\|wchar\|off\|u\?intmax\)_t\|void\)\)\>"
+syntax match   juliaBaseTypeError	display "\<\%(\%(Bounds\|Divide\|Domain\|\%(Stack\)\?Overflow\|EOF\|Undef\%(Ref\|Var\)\|System\|Type\|Parse\|Argument\|Key\|Load\|Method\|Inexact\|OutOfMemory\|Init\|Assertion\|ReadOnlyMemory\|StringIndex\)Error\|\%(Interrupt\|Error\|ProcessExited\|Captured\|Composite\|InvalidState\|Missing\|\%(Process\|Task\)Failed\)Exception\|DimensionMismatch\|SegmentationFault\)\>"
+syntax match   juliaBaseTypeIter	display "\<\%(EachLine\|Enumerate\|Cartesian\%(Index\|Range\)\|LinSpace\|CartesianIndices\)\>"
+syntax match   juliaBaseTypeString	display "\<\%(DirectIndex\|Sub\|Rep\|Rev\|Abstract\|Substitution\)\?String\>"
+syntax match   juliaBaseTypeArray	display "\<\%(\%(Sub\)\?Array\|\%(Abstract\|Dense\|Strided\)\?\%(Array\|Matrix\|Vec\%(tor\|OrMat\)\)\|SparseMatrixCSC\|\%(AbstractSparse\|Bit\|Shared\)\%(Array\|Vector\|Matrix\)\|\%\(D\|Bid\|\%(Sym\)\?Trid\)iagonal\|Hermitian\|Symmetric\|UniformScaling\|\%(Lower\|Upper\)Triangular\|\%(Sparse\|Row\)Vector\|VecElement\|Conj\%(Array\|Matrix\|Vector\)\|Index\%(Cartesian\|Linear\|Style\)\|PermutedDimsArray\|Broadcasted\|Adjoint\|Transpose\|LinearIndices\)\>"
+syntax match   juliaBaseTypeDict	display "\<\%(WeakKey\|Id\|Abstract\)\?Dict\>"
+syntax match   juliaBaseTypeSet		display "\<\%(\%(Abstract\|Bit\)\?Set\)\>"
+syntax match   juliaBaseTypeIO		display "\<\%(IO\%(Stream\|Buffer\|Context\)\?\|RawFD\|StatStruct\|FileMonitor\|PollingFileWatcher\|Timer\|Base64\%(Decode\|Encode\)Pipe\|\%(UDP\|TCP\)Socket\|\%(Abstract\)\?Channel\|BufferStream\|ReentrantLock\|GenericIOBuffer\)\>"
+syntax match   juliaBaseTypeProcess	display "\<\%(Pipe\|Cmd\|PipeBuffer\)\>"
+syntax match   juliaBaseTypeRange	display "\<\%(Dims\|RangeIndex\|\%(Abstract\|Lin\|Ordinal\|Step\|\%(Abstract\)\?Unit\)Range\|Colon\|ExponentialBackOff\|StepRangeLen\)\>"
+syntax match   juliaBaseTypeRegex	display "\<Regex\%(Match\)\?\>"
+syntax match   juliaBaseTypeFact	display "\<\%(Factorization\|BunchKaufman\|\%(Cholesky\|QR\)\%(Pivoted\)\?\|\%(Generalized\)\?\%(Eigen\|SVD\|Schur\)\|Hessenberg\|LDLt\|LQ\|LU\)\>"
+syntax match   juliaBaseTypeSort	display "\<\%(Insertion\|\(Partial\)\?Quick\|Merge\)Sort\>"
+syntax match   juliaBaseTypeRound	display "\<Round\%(ingMode\|FromZero\|Down\|Nearest\%(Ties\%(Away\|Up\)\)\?\|ToZero\|Up\)\>"
+syntax match   juliaBaseTypeSpecial	display "\<\%(LocalProcess\|ClusterManager\)\>"
+syntax match   juliaBaseTypeRandom	display "\<\%(AbstractRNG\|MersenneTwister\|RandomDevice\)\>"
+syntax match   juliaBaseTypeDisplay	display "\<\%(Text\(Display\)\?\|\%(Abstract\)\?Display\|MIME\|HTML\)\>"
+syntax match   juliaBaseTypeTime	display "\<\%(Date\%(Time\)\?\|DateFormat\)\>"
+syntax match   juliaBaseTypeOther	display "\<\%(RemoteRef\|Task\|Condition\|VersionNumber\|IPv[46]\|SerializationState\|WorkerConfig\|Future\|RemoteChannel\|IPAddr\|Stack\%(Trace\|Frame\)\|\(Caching\|Worker\)Pool\|AbstractSerializer\)\>"
+
+syntax match   juliaConstNum		display "\%(\<\%(\%(NaN\|Inf\)\%(16\|32\|64\)\?\|pi\|π\)\>\)"
+" Note: recognition of ℯ, which Vim does not consider a valid identifier, is
+" complicated. We detect possible uses by just looking for the character (for
+" performance) and then check that it's actually used by its own.
+" (This also tries to detect preceding number constants; it does so in a crude
+" way.)
+syntax match   juliaPossibleEuler	"ℯ" contains=juliaEuler
+exec 'syntax match   juliaEuler		contained "\%(\%(^\|[' . s:nonidS_chars . s:op_chars_wc . ']\)\%(.\?[0-9][.0-9eEf_]*\d\)\?\)\@'.s:d(80).'<=ℯ\ze[' . s:nonidS_chars . s:op_chars_wc . ']"'
+syntax match   juliaConstBool		display "\<\%(true\|false\)\>"
+syntax match   juliaConstEnv		display "\<\%(ARGS\|ENV\|ENDIAN_BOM\|LOAD_PATH\|VERSION\|PROGRAM_FILE\|DEPOT_PATH\)\>"
+syntax match   juliaConstIO		display "\<\%(std\%(out\|in\|err\)\|devnull\)\>"
+syntax match   juliaConstC		display "\<\%(C_NULL\)\>"
+syntax match   juliaConstGeneric	display "\<\%(nothing\|Main\|undef\|missing\)\>"
+
+syntax match   juliaParamType		contained "[^{([:space:]<>\"]\+\ze{" nextgroup=juliaCurBraBlock
+
+syntax match   juliaPossibleMacro	transparent "@" contains=juliaMacroCall,juliaMacroCallP,juliaPrintfMacro,juliaDocMacro,juliaDocMacroPre
+
+exec 'syntax match   juliaMacro		contained "@' . s:idregex . '\%(\.' . s:idregex . '\)*"'
+syntax match   juliaMacro		contained "@[!.~$%^*/\\|<>+-]\ze[^0-9]"
+exec 'syntax region  juliaMacroCall	contained transparent start="\(@' . s:idregex . '\%(\.' . s:idregex . '\)*\)\@=\1\%([^(]\|$\)" end="\ze\%([])};#]\|$\|\<for\>\|\<end\>\)" contains=@juliaExpressions,juliaMacro,juliaSymbolS,juliaQuotedParBlockS'
+exec 'syntax region  juliaMacroCall	contained transparent start="\(@.\)\@=\1\%([^(]\|$\)" end="\ze\%([])};#]\|$\|\<for\>\|\<end\>\)" contains=@juliaExpressions,juliaMacro,juliaSymbolS,juliaQuotedParBlockS'
+exec 'syntax region  juliaMacroCallP	contained transparent start="@' . s:idregex . '\%(\.' . s:idregex . '\)*(" end=")\@'.s:d(1).'<=" contains=juliaMacro,juliaParBlock'
+exec 'syntax region  juliaMacroCallP	contained transparent start="@.(" end=")\@'.s:d(1).'<=" contains=juliaMacro,juliaParBlock'
+
+exec 'syntax match   juliaNumbers	transparent "\%(^\|[' . s:nonidS_chars . s:op_chars_wc . ']\)\@'.s:d(1).'<=\d\|\.\d\|im\>" contains=juliaNumber,juliaFloat,juliaComplexUnit'
+
+"integer regexes
+let s:dec_regex = '\d\%(_\?\d\)*\%(\>\|im\>\|\ze\D\)'
+let s:hex_regex = '0x\x\%(_\?\x\)*\%(\>\|im\>\|\ze\X\)'
+let s:bin_regex = '0b[01]\%(_\?[01]\)*\%(\>\|im\>\|\ze[^01]\)'
+let s:oct_regex = '0o\o\%(_\?\o\)*\%(\>\|im\>\|\ze\O\)'
+
+let s:int_regex = '\%(' . s:hex_regex
+      \         . '\|'  . s:bin_regex
+      \         . '\|'  . s:oct_regex
+      \         . '\|'  . s:dec_regex
+      \         . '\)'
+
+"floating point regexes
+"  starting with a dot, optional exponent
+let s:float_regex1 = '\.\d\%(_\?\d\)*\%([eEf][-+]\?\d\+\)\?\%(\>\|im\>\|\ze\D\)'
+"  with dot, optional exponent
+let s:float_regex2 = '\d\%(_\?\d\)*\.\%(\d\%(_\?\d\)*\)\?\%([eEf][-+]\?\d\+\)\?\%(\>\|im\>\|\ze\D\)'
+"  without dot, with exponent
+let s:float_regex3 = '\d\%(_\?\d\)*[eEf][-+]\?\d\+\%(\>\|im\>\|\ze\D\)'
+
+"hex floating point numbers
+"  starting with a dot
+let s:hexfloat_regex1 = '0x\.\%\(\x\%(_\?\x\)*\)\?[pP][-+]\?\d\+\%(\>\|im\>\|\ze\X\)'
+"  starting with a digit
+let s:hexfloat_regex2 = '0x\x\%(_\?\x\)*\%\(\.\%\(\x\%(_\?\x\)*\)\?\)\?[pP][-+]\?\d\+\%(\>\|im\>\|\ze\X\)'
+
+let s:float_regex = '\%(' . s:float_regex3
+      \           . '\|'  . s:float_regex2
+      \           . '\|'  . s:float_regex1
+      \           . '\|'  . s:hexfloat_regex2
+      \           . '\|'  . s:hexfloat_regex1
+      \           . '\)'
+
+exec 'syntax match   juliaNumber	contained "' . s:int_regex . '" contains=juliaComplexUnit'
+exec 'syntax match   juliaFloat		contained "' . s:float_regex . '" contains=juliaComplexUnit'
+syntax match   juliaComplexUnit		display	contained "\<im\>"
+
+syntax match   juliaRangeOperator	display ":"
+exec 'syntax match   juliaOperator	"' . s:operators . '"'
+
+exec 'syntax region  juliaTernaryRegion	matchgroup=juliaTernaryOperator start="\s\zs?\ze\s" skip="\%(:\(:\|[^:[:space:]'."'".'"({[]\+\s*\ze:\)\|\%(?\s*\)\@'.s:d(6).'<=:(\)" end=":" contains=@juliaExpressions,juliaErrorSemicol'
+
+let s:interp_dollar = '\([' . s:nonidS_chars . s:op_chars_wc . '!]\|^\)\@'.s:d(1).'<=\$'
+
+exec 'syntax match   juliaDollarVar	display contained "' . s:interp_dollar . s:idregex . '"'
+exec 'syntax region  juliaDollarPar	matchgroup=juliaDollarVar contained start="' .s:interp_dollar . '(" end=")" contains=@juliaExpressions'
+exec 'syntax region  juliaDollarSqBra	matchgroup=juliaDollarVar contained start="' .s:interp_dollar . '\[" end="\]" contains=@juliaExpressions,juliaComprehensionFor,juliaSymbolS,juliaQuotedParBlockS'
+
+syntax match   juliaChar		"'\\\?.'" contains=juliaSpecialChar
+syntax match   juliaChar		display "'\\\o\{3\}'" contains=juliaOctalEscapeChar
+syntax match   juliaChar		display "'\\x\x\{2\}'" contains=juliaHexEscapeChar
+syntax match   juliaChar		display "'\\u\x\{1,4\}'" contains=juliaUniCharSmall
+syntax match   juliaChar		display "'\\U\x\{1,8\}'" contains=juliaUniCharLarge
+
+exec 'syntax match   juliaCTransOperator	"[[:space:]}' . s:nonid_chars . s:op_chars_wc . '!]\@'.s:d(1).'<!\.\?' . "'" . 'ᵀ\?"'
+
+" TODO: some of these might be specialized; the rest could be just left to the
+"       generic juliaStringPrefixed fallback
+syntax region  juliaString		matchgroup=juliaStringDelim start=+\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaStringVars,@juliaSpecialChars,@juliaSpellcheckStrings
+syntax region  juliaStringPrefixed	contained matchgroup=juliaStringDelim start=+[^{([:space:]<>"]\+\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaSpecialCharsRaw
+syntax region  juliabString		matchgroup=juliaStringDelim start=+\<b\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaSpecialChars
+syntax region  juliasString		matchgroup=juliaStringDelim start=+\<s\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaSpecialChars
+
+syntax region  juliaDocString		matchgroup=juliaDocStringDelim fold start=+^"""+ skip=+\%(\\\\\)*\\"+ end=+"""+ contains=@juliaStringVars,@juliaSpecialChars,@juliaSpellcheckDocStrings
+
+exec 'syntax region  juliaPrintfMacro		contained transparent start="@s\?printf(" end=")\@'.s:d(1).'<=" contains=juliaMacro,juliaPrintfParBlock'
+syntax region  juliaPrintfMacro		contained transparent start="@s\?printf\s\+" end="\ze\%([])};#]\|$\|\<for\>\)" contains=@juliaExprsPrintf,juliaMacro,juliaSymbolS,juliaQuotedParBlockS
+syntax region  juliaPrintfParBlock	contained matchgroup=juliaParDelim start="(" end=")" contains=@juliaExprsPrintf
+syntax region  juliaPrintfString	contained matchgroup=juliaStringDelim start=+"+ skip=+\%(\\\\\)*\\"+ end=+"+ contains=@juliaSpecialChars,@juliaPrintfChars
+
+exec 'syntax region  juliaDocMacroPre	contained transparent start=+@doc\s\+\%(' . s:idregex . '\%(\.' . s:idregex . '\)*\)\z("\%(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\(\z1\)\@'.s:d(3).'<=+ contains=juliaMacro,juliaDocStringMRaw'
+exec 'syntax region  juliaDocMacro	contained transparent start=+@doc\s\+\z("\%(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\(\z1\)\@'.s:d(3).'<=+ contains=juliaMacro,juliaDocStringM'
+syntax region  juliaDocStringMRaw	contained fold matchgroup=juliaDocStringDelim fold start=+\z\("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaSpellcheckDocStrings
+syntax region  juliaDocStringM		contained fold matchgroup=juliaDocStringDelim fold start=+\z\("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1+ contains=@juliaStringVars,@juliaSpecialChars,@juliaSpellcheckDocStrings
+
+syntax region  juliaShellString		matchgroup=juliaStringDelim start=+`+ skip=+\%(\\\\\)*\\`+ end=+`+ contains=@juliaStringVars,juliaSpecialChar
+
+syntax cluster juliaStringVars		contains=juliaStringVarsPar,juliaStringVarsSqBra,juliaStringVarsCurBra,juliaStringVarsPla
+syntax region  juliaStringVarsPar	contained matchgroup=juliaStringVarDelim start="$(" end=")" contains=@juliaExpressions
+syntax region  juliaStringVarsSqBra	contained matchgroup=juliaStringVarDelim start="$\[" end="\]" contains=@juliaExpressions,juliaComprehensionFor,juliaSymbolS,juliaQuotedParBlockS
+syntax region  juliaStringVarsCurBra	contained matchgroup=juliaStringVarDelim start="${" end="}" contains=@juliaExpressions
+exec 'syntax match   juliaStringVarsPla	contained "\$' . s:idregex . '"'
+
+" TODO improve RegEx
+syntax region  juliaRegEx		matchgroup=juliaStringDelim start=+\<r\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1[imsx]*+
+
+syntax cluster juliaSpecialChars	contains=juliaSpecialChar,juliaDoubleBackslash,juliaEscapedQuote,juliaOctalEscapeChar,juliaHexEscapeChar,juliaUniCharSmall,juliaUniCharLarge
+syntax match   juliaSpecialChar		display contained "\\."
+syntax match   juliaOctalEscapeChar	display contained "\\\o\{3\}"
+syntax match   juliaHexEscapeChar	display contained "\\x\x\{2\}"
+syntax match   juliaUniCharSmall	display contained "\\u\x\{1,4\}"
+syntax match   juliaUniCharLarge	display contained "\\U\x\{1,8\}"
+syntax cluster juliaSpecialCharsRaw	contains=juliaDoubleBackslash,juliaEscapedQuote
+syntax match   juliaDoubleBackslash	contained "\\\\"
+syntax match   juliaEscapedQuote	contained "\\\""
+
+syntax cluster juliaPrintfChars		contains=juliaErrorPrintfFmt,juliaPrintfFmt
+syntax match   juliaErrorPrintfFmt	display contained "\\\?%."
+syntax match   juliaPrintfFmt		display contained "%\%(\d\+\$\)\=[-+' #0]*\%(\d*\|\*\|\*\d\+\$\)\%(\.\%(\d*\|\*\|\*\d\+\$\)\)\=\%([hlLjqzt]\|ll\|hh\)\=[aAbdiuoxXDOUfFeEgGcCsSpn]"
+syntax match   juliaPrintfFmt		display contained "%%"
+syntax match   juliaPrintfFmt		display contained "\\%\%(\d\+\$\)\=[-+' #0]*\%(\d*\|\*\|\*\d\+\$\)\%(\.\%(\d*\|\*\|\*\d\+\$\)\)\=\%([hlLjqzt]\|ll\|hh\)\=[aAbdiuoxXDOUfFeEgGcCsSpn]"hs=s+1
+syntax match   juliaPrintfFmt		display contained "\\%%"hs=s+1
+
+" this is used to restrict the search for Symbols to when colons appear at all
+" (for performance reasons)
+syntax match   juliaPossibleSymbol	transparent ":\ze[^:]" contains=juliaSymbol,juliaQuotedParBlock,juliaQuotedQMarkPar,juliaColon
+
+let s:quotable = '\%(' . s:idregex . '\|' . s:operators . '\|[?.]\|' . s:float_regex . '\|' . s:int_regex . '\)'
+let s:quoting_colon = '\%(\%(^\s*\|\s\{6,\}\|[' . s:nonid_chars . s:op_chars_wc . ']\s*\)\@'.s:d(6).'<=\|\%(\<\%(return\|if\|else\%(if\)\?\|while\|try\|begin\)\s\+\)\@'.s:d(9).'<=\)\zs:'
+let s:quoting_colonS = '\s\@'.s:d(1).'<=:'
+
+" note: juliaSymbolS only works within whitespace-sensitive contexts,
+" such as in macro calls without parentheses, or within square brackets.
+" It is used to override the recognition of expressions like `a :b` as
+" ranges rather than symbols in those contexts.
+" (Note that such `a :b` expressions only allows at most 5 spaces between
+" the identifier and the colon anyway.)
+
+exec 'syntax match   juliaSymbol	contained "' . s:quoting_colon . s:quotable . '"'
+exec 'syntax match   juliaSymbolS	contained "' . s:quoting_colonS . s:quotable . '"'
+
+" same as above for quoted expressions such as :(expr)
+exec 'syntax region   juliaQuotedParBlock	matchgroup=juliaQParDelim start="' . s:quoting_colon . '(" end=")" contains=@juliaExpressions'
+exec 'syntax match    juliaQuotedQMarkPar	"' . s:quoting_colon . '(\s*?\s*)" contains=juliaQuotedQMark'
+exec 'syntax region   juliaQuotedParBlockS	matchgroup=juliaQParDelim contained start="' . s:quoting_colonS . '(" end=")" contains=@juliaExpressions'
+
+
+syntax match   juliaTypeOperatorR1	contained "[^{([:space:]<>\"]\+\%(\s*[<>]:\)\@="
+
+" force precedence over Symbols
+syntax match   juliaTypeOperator	contained "[<>:]:"
+exec 'syntax match   juliaTypeOperatorR2	transparent "[<>:]:\s*\%(' . s:idregex . '\.\)*' . s:idregex . '" contains=juliaTypeOperator,juliaType,juliaDottedT,@juliaExpressions nextgroup=juliaTypeOperator'
+syntax match   juliaIsaKeyword		contained "\<isa\>"
+exec 'syntax match   juliaTypeOperatorR3	transparent "\<isa\s\+\%(' . s:idregex . '\.\)*' . s:idregex . '" contains=juliaIsaKeyword,juliaType,juliaDottedT,@juliaExpressions nextgroup=juliaIsaKeyword'
+
+syntax match   juliaWhereKeyword       	"\<where\>"
+exec 'syntax match   juliaWhereR	transparent "\<where\s\+' . s:idregex . '" contains=juliaWhereKeyword,juliaType,juliaDottedT,juliaIdSymbol'
+
+syntax region  juliaCommentL		matchgroup=juliaCommentDelim excludenl start="#\ze\%([^=]\|$\)" end="$" contains=juliaTodo,@juliaSpellcheckComments
+syntax region  juliaCommentM		matchgroup=juliaCommentDelim fold start="#=\ze\%([^#]\|$\)" end="=#" contains=juliaTodo,juliaCommentM,@juliaSpellcheckComments
+syntax keyword juliaTodo		contained TODO FIXME XXX
+
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+"ISSM special syntax                                                                                             "
+let enumfile=$ISSM_DIR."/src/c/shared/Enum/Enumjl.vim"
+if filereadable(enumfile)
+   exec 'source ' . enumfile
+endif
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+" detect an end-of-line with only whitespace or comments before it
+let s:eol = '\s*\%(\%(\%(#=\%(=#\@!\|[^=]\|\n\)\{-}=#\)\s*\)\+\)\?\%(#=\@!.*\)\?\n'
+
+" a trailing comma, or colon, or an empty line in an import/using/export
+" multi-line command. Used to recognize the as keyword, and for indentation
+" (this needs to take precedence over normal commas and colons, and comments)
+syntax cluster juliaContinuationItems	contains=juliaContinuationComma,juliaContinuationColon,juliaContinuationNone
+exec 'syntax region  juliaContinuationComma	matchgroup=juliaComma contained start=",\ze'.s:eol.'" end="\n\+\ze." contains=@juliaCommentItems'
+exec 'syntax region  juliaContinuationColon	matchgroup=juliaColon contained start=":\ze'.s:eol.'" end="\n\+\ze." contains=@juliaCommentItems'
+exec 'syntax region  juliaContinuationNone	matchgroup=NONE contained start="\%(\<\%(import\|using\|export\)\>\|^\)\@'.s:d(6).'<=\ze'.s:eol.'" end="\n\+\ze." contains=@juliaCommentItems,juliaAsKeyword'
+exec 'syntax match   juliaMacroName		contained "@' . s:idregex . '\%(\.' . s:idregex . '\)*"'
+
+" the following are disabled by default, but
+" can be enabled by entering e.g.
+"   :hi link juliaParDelim Delimiter
+hi def link juliaParDelim		juliaNone
+hi def link juliaSemicolon		juliaNone
+hi def link juliaComma			juliaNone
+hi def link juliaFunctionCall		juliaNone
+
+hi def link juliaColon			juliaOperator
+
+hi def link juliaFunctionName		juliaFunction
+hi def link juliaFunctionName1		juliaFunction
+hi def link juliaMacroName		juliaMacro
+
+
+hi def link juliaKeyword		Keyword
+hi def link juliaWhereKeyword		Keyword
+hi def link juliaInfixKeyword		Keyword
+hi def link juliaIsaKeyword		Keyword
+hi def link juliaAsKeyword		Keyword
+hi def link juliaRepKeyword		Keyword
+hi def link juliaBlKeyword		Keyword
+hi def link juliaConditional		Conditional
+hi def link juliaRepeat			Repeat
+hi def link juliaException		Exception
+hi def link juliaOuter			Keyword
+hi def link juliaBaseTypeBasic		Type
+hi def link juliaBaseTypeNum		Type
+hi def link juliaBaseTypeC		Type
+hi def link juliaBaseTypeError		Type
+hi def link juliaBaseTypeIter		Type
+hi def link juliaBaseTypeString		Type
+hi def link juliaBaseTypeArray		Type
+hi def link juliaBaseTypeDict		Type
+hi def link juliaBaseTypeSet		Type
+hi def link juliaBaseTypeIO		Type
+hi def link juliaBaseTypeProcess	Type
+hi def link juliaBaseTypeRange		Type
+hi def link juliaBaseTypeRegex		Type
+hi def link juliaBaseTypeFact		Type
+hi def link juliaBaseTypeSort		Type
+hi def link juliaBaseTypeRound		Type
+hi def link juliaBaseTypeSpecial	Type
+hi def link juliaBaseTypeRandom		Type
+hi def link juliaBaseTypeDisplay	Type
+hi def link juliaBaseTypeTime		Type
+hi def link juliaBaseTypeOther		Type
+
+hi def link juliaType			Type
+hi def link juliaParamType		Type
+hi def link juliaTypeOperatorR1		Type
+
+" NOTE: deprecated constants are not highlighted as such. For once,
+" one can still legitimately use them by importing Base.MathConstants.
+" Plus, one-letter variables like `e` and `γ` can be used with other
+" meanings.
+hi def link juliaConstNum		Constant
+hi def link juliaEuler			Constant
+
+hi def link juliaConstEnv		Constant
+hi def link juliaConstC			Constant
+hi def link juliaConstLimits		Constant
+hi def link juliaConstGeneric		Constant
+hi def link juliaRangeKeyword		Constant
+hi def link juliaConstBool		Boolean
+hi def link juliaConstIO		Boolean
+
+hi def link juliaComprehensionFor	Keyword
+hi def link juliaComprehensionIf	Keyword
+
+hi def link juliaDollarVar		Identifier
+
+hi def link juliaFunction		Function
+hi def link juliaMacro			Macro
+hi def link juliaSymbol			Identifier
+hi def link juliaSymbolS		Identifier
+hi def link juliaQParDelim		Identifier
+hi def link juliaQuotedQMarkPar		Identifier
+hi def link juliaQuotedQMark		juliaOperatorHL
+
+hi def link juliaNumber			Number
+hi def link juliaFloat			Float
+hi def link juliaComplexUnit		Constant
+
+hi def link juliaChar			Character
+
+hi def link juliaString			String
+hi def link juliaStringPrefixed		juliaString
+hi def link juliabString		juliaString
+hi def link juliasString		juliaString
+hi def link juliavString		juliaString
+hi def link juliarString		juliaString
+hi def link juliaipString		juliaString
+hi def link juliabigString		juliaString
+hi def link juliaMIMEString		juliaString
+hi def link juliarawString		juliaString
+hi def link juliatestString		juliaString
+hi def link juliahtmlString		juliaString
+hi def link juliaint128String		juliaString
+hi def link juliaPrintfString		juliaString
+hi def link juliaShellString		juliaString
+hi def link juliaDocString		juliaString
+hi def link juliaDocStringM		juliaDocString
+hi def link juliaDocStringMRaw		juliaDocString
+hi def link juliaStringDelim		juliaString
+hi def link juliaDocStringDelim		juliaDocString
+hi def link juliaStringVarsPla		Identifier
+hi def link juliaStringVarDelim		Identifier
+
+hi def link juliaRegEx			String
+
+hi def link juliaSpecialChar		SpecialChar
+hi def link juliaOctalEscapeChar	SpecialChar
+hi def link juliaHexEscapeChar		SpecialChar
+hi def link juliaUniCharSmall		SpecialChar
+hi def link juliaUniCharLarge		SpecialChar
+hi def link juliaDoubleBackslash	SpecialChar
+hi def link juliaEscapedQuote		SpecialChar
+
+hi def link juliaPrintfFmt		SpecialChar
+
+if s:julia_highlight_operators
+  hi! def link juliaOperatorHL		Operator
+else
+  hi! def link juliaOperatorHL		juliaNone
+endif
+hi def link juliaOperator		juliaOperatorHL
+hi def link juliaRangeOperator		juliaOperatorHL
+hi def link juliaCTransOperator		juliaOperatorHL
+hi def link juliaTernaryOperator	juliaOperatorHL
+hi def link juliaTypeOperator		juliaOperatorHL
+
+hi def link juliaCommentL		Comment
+hi def link juliaCommentM		Comment
+hi def link juliaCommentDelim		Comment
+hi def link juliaTodo			Todo
+
+hi def link juliaErrorPar		juliaError
+hi def link juliaErrorEnd		juliaError
+hi def link juliaErrorElse		juliaError
+hi def link juliaErrorCatch		juliaError
+hi def link juliaErrorFinally		juliaError
+hi def link juliaErrorSemicol		juliaError
+hi def link juliaErrorPrintfFmt		juliaError
+
+hi def link juliaError			Error
+
+syntax sync fromstart
+
+let b:current_syntax = "julia"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/syntax/juliadoc.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/syntax/juliadoc.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/syntax/juliadoc.vim	(revision 27955)
@@ -0,0 +1,71 @@
+" Vim syntax file for julia document view
+scriptencoding utf-8
+
+if exists('b:current_syntax')
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syntax sync fromstart
+
+syntax region juliadocCode matchgroup=juliadocCodeDelimiter start="`" end="`" concealends display oneline
+syntax region juliadocCode matchgroup=juliadocCodeDelimiter start="``" end="``" concealends display oneline contains=juliadocCodeLatex
+syntax region juliadocCode matchgroup=juliadocCodeDelimiter start="^\s*```.*$" end='^\s*```' concealends
+syntax region juliadocH1 matchgroup=juliadocHeadingDelimiter start="##\@!"      end="$" concealends display oneline
+syntax region juliadocH2 matchgroup=juliadocHeadingDelimiter start="###\@!"     end="$" concealends display oneline
+syntax region juliadocH3 matchgroup=juliadocHeadingDelimiter start="####\@!"    end="$" concealends display oneline
+syntax region juliadocH4 matchgroup=juliadocHeadingDelimiter start="#####\@!"   end="$" concealends display oneline
+syntax region juliadocH5 matchgroup=juliadocHeadingDelimiter start="######\@!"  end="$" concealends display oneline
+syntax region juliadocH6 matchgroup=juliadocHeadingDelimiter start="#######\@!" end="$" concealends display oneline
+syntax match juliadocLink "\[\^\@!.\{-1,}\](.\{-1,})" contains=juliadocLinkBody,juliadocLinkUrl display keepend
+syntax region juliadocLinkBody matchgroup=juliadocLinkDelimiter start="\[" end="\]" concealends display contained oneline
+syntax match juliadocLinkUrl "(\zs@ref\s\+.\{-1,}\ze)" contains=juliadocLinkUrlConceal display keepend
+syntax match juliadocLinkUrlConceal "@ref\s\+" conceal display contained
+syntax match juliadocCrossref "\[`.\{-1,}`\](@ref)" contains=juliadocCrossrefBody display keepend
+syntax region juliadocCrossrefBody matchgroup=juliadocCrossrefDelimiter start="\[`" end="`\](@ref)" concealends display contained oneline
+syntax region juliadocMath matchgroup=juliadocMathDelimiter start="\$" end="\$" concealends display oneline
+syntax match juliadocListing "^\s*\zs\%([-+*]\|\d\+[.)]\)\ze\s" display
+syntax match juliadocFootnote "^\s*\[\^[[:alnum:]]\+\]:\s*" display contains=juliadocFootnoteBody keepend
+syntax region juliadocFootnoteBody matchgroup=juliadocFootnoteDelimiter start="^\s*\zs\[\^" end="\]" concealends display contained oneline
+syntax match juliadocFootnoteRef "\s\[\^[[:alnum:]]\+\]" display contains=juliadocFootnoteRefBody,juliadocFootnoteRefConceal keepend
+syntax match juliadocFootnoteRefBody "[[:alnum:]]\+" display contained
+syntax match juliadocFootnoteRefConceal "\^" conceal display contained
+syntax region juliadocBlockquote matchgroup=juliadocBlockquoteDelimiter start="^\s*>\s" end="$" concealends display oneline
+syntax match juliadocRules "^-\{3,}" display
+syntax region juliadocAdmonitions matchgroup=juliadocAdmonitionsDelimiter start="^\s*!!!" end="$" concealends display contains=juliadocAdmonitionsType,juliadocAdmonitionsTitle oneline keepend
+syntax match juliadocAdmonitionsType "\c\%(danger\|warning\|info\|note\|tip\)\>" display contained
+syntax region juliadocAdmonitionsTitle matchgroup=juliadocAdmonitionsTitleDelimiter start='"' end='"' display contained oneline
+
+if &encoding ==# 'utf-8'
+  for [s:from, s:to] in items(julia_latex_symbols#get_dict())
+    execute printf('syntax match juliadocCodeLatex "\\%s" conceal cchar=%s display contained', escape(s:from, '~"\.^$[]*'), s:to)
+  endfor
+endif
+
+highlight default link juliadocCode String
+highlight default link juliadocCodeLatex String
+highlight default link juliadocH1 Title
+highlight default link juliadocH2 Title
+highlight default link juliadocH3 Title
+highlight default link juliadocH4 Title
+highlight default link juliadocH5 Title
+highlight default link juliadocH6 Title
+highlight default link juliadocLinkBody Identifier
+highlight default link juliadocLinkUrl Underlined
+highlight default link juliadocCrossref Underlined
+highlight default link juliadocCrossrefBody Underlined
+highlight default link juliadocMath Special
+highlight default link juliadocListing PreProc
+highlight default link juliadocFootnoteBody PreProc
+highlight default link juliadocFootnoteRefBody PreProc
+highlight default link juliadocBlockquote Comment
+highlight default link juliadocRules PreProc
+highlight default link juliadocAdmonitionsType Todo
+highlight default link juliadocAdmonitionsTitle Title
+
+let b:current_syntax = "juliadoc"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/syntax/matlab.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/syntax/matlab.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/syntax/matlab.vim	(revision 27955)
@@ -0,0 +1,357 @@
+" Vim syntax file
+" Language:	Matlab
+" Maintainer:	Fabrice Guy <fabrice.guy at gmail dot com>
+"		Original authors: Mario Eusebio and Preben Guldberg
+" Last Change:	2008 Oct 16 : added try/catch/rethrow and class statements
+" 		2008 Oct 28 : added highlighting for most of Matlab functions
+" 		2009 Nov 23 : added 'todo' keyword in the matlabTodo keywords 
+" 		(for doxygen support)
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+syn keyword matlabStatement		return function
+syn keyword matlabConditional		switch case else elseif end if otherwise break continue
+syn keyword matlabRepeat		do for while
+syn keyword matlabStorageClass		classdef methods properties events persistent global
+syn keyword matlabExceptions		try catch rethrow throw
+
+syn keyword matlabTodo			contained  TODO NOTE FIXME XXX
+syn keyword matlabImport		import
+" If you do not want these operators lit, uncommment them and the "hi link" below
+syn match  matlabRelationalOperator	"\(==\|\~=\|>=\|<=\|=\~\|>\|<\|=\)"
+syn match matlabArithmeticOperator	"[-+]"
+syn match matlabArithmeticOperator	"\.\=[*/\\^]"
+syn match matlabLogicalOperator		"[&|~]"
+syn keyword matlabBoolean		true false
+
+syn match matlabLineContinuation	"\.\{3}"
+
+" String
+syn region matlabString			start=+'+ end=+'+	oneline
+
+" If you don't like tabs
+syn match matlabTab			"\t"
+
+" Standard numbers
+syn match matlabNumber		"\<\d\+[ij]\=\>"
+" floating point number, with dot, optional exponent
+syn match matlabFloat		"\<\d\+\(\.\d*\)\=\([edED][-+]\=\d\+\)\=[ij]\=\>"
+" floating point number, starting with a dot, optional exponent
+syn match matlabFloat		"\.\d\+\([edED][-+]\=\d\+\)\=[ij]\=\>"
+syn keyword matlabConstant	eps Inf NaN pi
+
+
+" Transpose character and delimiters: Either use just [...] or (...) aswell
+syn match matlabDelimiter		"[][]"
+"syn match matlabDelimiter		"[][()]"
+syn match matlabTransposeOperator	"[])a-zA-Z0-9.]'"lc=1
+
+syn match matlabSemicolon		";"
+
+syn match matlabComment			"%.*$"	contains=matlabTodo,matlabTab
+syn region matlabBlockComment        start=+%{+    end=+%}+ contains=matlabBlockComment
+
+
+" trigonometric
+syn keyword matlabFunc 			acos acosd acosh acot acotd acoth acsc acscd acsch asec asecd asech asin asind asinh
+syn keyword matlabFunc 			atan atan2 atand atanh cos cosd cosh cot cotd coth csc cscd csch hypot sec secd
+syn keyword matlabFunc 			sech sin sind sinh tan tand tanh
+" exponential
+syn keyword matlabFunc 			exp expm1 log log10 log1p log2 nextpow2 nthroot pow2 reallog realpow realsqrt sqrt
+" Complex
+syn keyword matlabFunc 			abs angle complex conj cplxpair  imag real sign unwrap
+" Rounding and Remainder
+syn keyword matlabFunc 			ceil fix floor idivide mod rem round
+"Discrete Math (e.g., Prime Factors)
+syn keyword matlabFunc 			factor factorial gcd isprime lcm nchoosek perms primes rat rats
+"Polynomials
+syn keyword matlabFunc 			conv deconv poly polyder polyeig polyfit polyint polyval polyvalm residue roots
+"Numeric Types
+syn keyword matlabFunc 			arrayfun cast cat class find intmax intmin intwarning ipermute isa isequal isequalwithequalnans isfinite isinf isnan isnumeric isreal isscalar isvector permute realmax realmin reshape squeeze zeros
+"Characters and Strings
+syn keyword matlabFunc 			cellstr char eval findstr isstr regexp sprintf sscanf strcat strcmp strcmpi strncmp strncmpi strings strjust strmatch strread strrep strtrim strvcat
+"Structures
+syn keyword matlabFunc 			cell2struct deal fieldnames getfield  isfield isstruct orderfields rmfield setfield struct struct2cell structfun
+"Cell Arrays
+syn keyword matlabFunc 			cell cell2mat celldisp cellfun cellplot iscell iscellstr mat2cell num2cell
+"Function Handles
+syn keyword matlabFunc 			feval func2str functions str2func
+"Java Classes and Objects
+syn keyword matlabFunc 			clear depfun exist im2java inmem javaaddpath javaArray javachk Generate javaclasspath javaMethod javaObject javarmpath methodsview usejava which
+"Data Type Identification
+syn keyword matlabFunc 			ischar isfloat isinteger isjava islogical isobject validateattributes who whos
+"Data type conversion
+"Numeric
+syn keyword matlabFunc 			double int8 int16 int32 int64 single typecast uint8 uint16 uint32 uint64
+"String to Numeric
+syn keyword matlabFunc 			base2dec bin2dec hex2dec hex2num str2double str2num unicode2native
+"Numeric to String
+syn keyword matlabFunc 			dec2base dec2bin dec2hex int2str mat2str native2unicode num2str
+"Other Conversions
+syn keyword matlabFunc 			datestr logical num2hex str2mat
+"String Creation
+syn keyword matlabFunc 			blanks
+"String Identification
+syn keyword matlabFunc 			isletter isspace isstrprop validatestring 
+"String Manipulation
+syn keyword matlabFunc 			deblank lower upper
+"String Parsing
+syn keyword matlabFunc 			regexpi regexprep regexptranslate strfind strtok 
+"String Evaluation
+syn keyword matlabFunc 			evalc evalin
+"String Comparison
+syn keyword matlabFunc 			strncmp strncmpi
+"Bit-wise Functions
+syn keyword matlabFunc			bitand bitcmp bitget bitmax bitor bitset bitshift bitxor swapbytes
+"Logical Functions
+syn keyword matlabFunc			all and any iskeyword isvarname not or xor
+"Predefined Dialog Boxes
+syn keyword matlabFunc dialog errordlg export2wsdlg helpdlg inputdlg listdlg msgbox printdlg printpreview questdlg uigetdir uigetfile uigetpref uiopen uiputfile uisave uisetcolor uisetfont waitbar warndlg
+"Deploying User Interfaces
+syn keyword matlabFunc guidata guihandles movegui openfig
+"Developing User Interfaces
+syn keyword matlabFunc addpref getappdata getpref ginput guide inspect isappdata ispref rmappdata rmpref setappdata setpref uisetpref waitfor waitforbuttonpress
+"User Interface Objects
+syn keyword matlabFunc uibuttongroup uicontextmenu uicontrol uimenu uipanel uipushtool uitoggletool uitoolbar menu
+"Finding Objects from Callbacks
+syn keyword matlabFunc findall findfigs findobj gcbf gcbo 
+"GUI Utility Functions
+syn keyword matlabFunc align getpixelposition listfonts selectmoveresize setpixelposition textwrap uistack
+"Controlling Program Execution
+syn keyword matlabFunc uiresume uiwait	
+"Basic Plots and Graphs
+syn keyword matlabFunc box errorbar hold  loglog  plot plot3 plotyy polar semilogx semilogy subplot
+"Plotting Tools
+syn keyword matlabFunc figurepalette pan plotbrowser plotedit plottools propertyeditor rotate3d  showplottool zoom 
+
+"Annotating Plots
+syn keyword matlabFunc annotation clabel datacursormode datetick gtext legend  line rectangle texlabel title xlabel ylabel zlabel
+"Area, Bar, and Pie Plots
+syn keyword matlabFunc area bar barh bar3 bar3h pareto pie pie3
+"Contour Plots
+syn keyword matlabFunc contour contour3  contourc contourf ezcontour ezcontourf
+"Direction and Velocity Plots
+syn keyword matlabFunc comet comet3 compass feather quiver quiver3 
+"Discrete Data Plots
+syn keyword matlabFunc stairs stem stem3
+"Function Plots
+syn keyword matlabFunc ezmesh ezmeshc ezplot ezplot3 ezpolar ezsurf ezsurfc fplot 
+"Histograms
+syn keyword matlabFunc hist histc rose
+"Polygons and Surfaces
+syn keyword matlabFunc convhull cylinder delaunay delaunay3 delaunayn dsearch dsearchn ellipsoid fill fill3 inpolygon pcolor  polyarea rectint ribbon slice sphere tsearch tsearchn voronoi waterfall
+"Scatter/Bubble Plots
+syn keyword matlabFunc plotmatrix scatter scatter3
+"Animation
+syn keyword matlabFunc getframe im2frame movie  noanimate
+"Bit-Mapped Images
+syn keyword matlabFunc frame2im image imagesc imfinfo imformats imread imwrite ind2rgb
+"Printing
+syn keyword matlabFunc frameedit hgexport orient print printopt saveas 
+"Handle Graphics
+syn keyword matlabFunc allchild ancestor copyobj delete gca gco get ishandle propedit set
+"Object 
+syn keyword matlabFunc axes figure hggroup hgtransform light patch colormap colorbar
+"root object	
+syn keyword matlabFunc surface text
+"Plot Objects
+syn keyword matlabFunc clf close closereq drawnow gcf hgload hgsave newplot opengl refresh
+"Axes Operations
+syn keyword matlabFunc axis cla grid ishold makehgtform
+"Operating on Object Properties
+syn keyword matlabFunc linkaxes linkprop refreshdata
+"Data analysis
+"Basic Operations
+syn keyword matlabFunc brush cumprod cumsum linkdata prod sort sortrows sum 
+"Descriptive Statistics
+syn keyword matlabFunc corrcoef cov max mean median min mode std var
+"Filtering and Convolution
+syn keyword matlabFunc conv2 convn detrend filter filter2 
+"Interpolation and Regression
+syn keyword matlabFunc interp1 interp2 interp3 interpn mldivide mrdivide
+"Fourier Transforms
+syn keyword matlabFunc fft fft2 fftn fftshift fftw ifft ifft2 ifftn ifftshift
+"Derivatives and Integrals
+syn keyword matlabFunc cumtrapz del2 diff gradient trapz 
+"File Operations
+syn keyword matlabFunc cd copyfile dir fileattrib filebrowser isdir lookfor ls matlabroot mkdir movefile pwd recycle rehash rmdir toolboxdir type what
+"Operating System Interface
+syn keyword matlabFunc clipboard computer dos getenv hostid maxNumCompThreads perl setenv system unix winqueryreg
+"MATLAB Version and License
+syn keyword matlabFunc ismac ispc isstudent isunix javachk license prefdir usejava ver verLessThan version 
+"Basic Information
+syn keyword matlabFunc disp display isempty issparse length ndims numel size 
+"Elementary Matrices and Arrays
+syn keyword matlabFunc blkdiag diag eye freqspace ind2sub linspace logspace meshgrid ndgrid ones rand randn sub2ind 
+"Array Operations
+syn keyword matlabFunc accumarray bsxfun cross dot kron tril triu 
+"Array Manipulation
+syn keyword matlabFunc circshift flipdim fliplr flipud horzcat inline repmat rot90 shiftdim vectorize vertcat transp
+"Specialized Matrices
+syn keyword matlabFunc compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson
+"Matrix Analysis
+syn keyword matlabFunc cond condeig det norm normest null orth rank rcond rref subspace trace
+"Linear Equations
+syn keyword matlabFunc chol cholinc condest funm ilu inv linsolve lscov lsqnonneg lu luinc pinv qr 
+"Eigenvalues and Singular Values
+syn keyword matlabFunc balance cdf2rdf eig eigs gsvd hess ordeig ordqz ordschur rsf2csf schur sqrtm ss2tf svd svds
+"Matrix Logarithms and Exponentials
+syn keyword matlabFunc expm logm 
+"Factorization
+syn keyword matlabFunc cholupdate planerot qrdelete qrinsert qrupdate qz 
+"Interpolation
+syn keyword matlabFunc griddata griddata3 griddatan interp1q interpft mkpp padecoef pchip ppval spline unmkpp 
+"Delaunay Triangulation and Tessellation
+syn keyword matlabFunc tetramesh trimesh triplot trisurf 
+"Convex Hull
+syn keyword matlabFunc convhulln	
+"Voronoi Diagrams
+syn keyword matlabFunc voronoin
+"Cartesian Coordinate System Conversion
+syn keyword matlabFunc cart2pol cart2sph pol2cart sph2cart 
+"Ordinary Differential Equations (IVP)
+syn keyword matlabFunc decic deval ode15i ode23 ode45 ode113 ode15s ode23s ode23t ode23tb odefile odeget odeset odextend
+"Delay Differential Equations
+syn keyword matlabFunc dde23 ddeget ddesd ddeset 
+"Boundary Value Problems
+syn keyword matlabFunc bvp4c bvp5c bvpget bvpinit bvpset bvpxtend
+"Partial Differential Equations
+syn keyword matlabFunc pdepe pdeval 
+"Optimization
+syn keyword matlabFunc fminbnd fminsearch fzero optimget optimset
+"Numerical Integration (Quadrature)
+syn keyword matlabFunc dblquad quad quadgk quadl quadv triplequad
+"Specialized Math
+syn keyword matlabFunc airy besselh besseli besselj besselk bessely beta betainc betaln ellipj ellipke erf erfc erfcx erfinv erfcinv expint gamma gammainc gammaln legendre psi
+"Elementary Sparse Matrices
+syn keyword matlabFunc spdiags speye sprand sprandn sprandsym
+"Full to Sparse Conversion
+syn keyword matlabFunc full sparse spconvert
+"Working with Sparse Matrices
+syn keyword matlabFunc nnz nonzeros nzmax spalloc spfun spones spparms spy 
+"Reordering Algorithms
+syn keyword matlabFunc amd colamd colperm dmperm ldl randperm symamd symrcm 
+"Linear Algebra
+syn keyword matlabFunc spaugment sprank 
+"Linear Equations (Iterative Methods)
+syn keyword matlabFunc bicg bicgstab cgs gmres lsqr minres pcg qmr symmlq 
+"Tree Operations
+syn keyword matlabFunc etree etreeplot gplot symbfact treelayout treeplot 
+"Timeseries
+"General Purpose
+syn keyword matlabFunc getdatasamplesize getqualitydesc timeseries tsprops tstool
+"Data Manipulation
+syn keyword matlabFunc addsample ctranspose delsample getabstime getinterpmethod getsampleusingtime idealfilter resample setabstime setinterpmethod synchronize transpose
+"Event Data
+syn keyword matlabFunc addevent delevent gettsafteratevent gettsafterevent gettsatevent gettsbeforeatevent gettsbeforeevent  gettsbetweenevents
+"Descriptive Statistics
+syn keyword matlabFunc iqr
+
+"Time Series Collections
+"General Purpose
+syn keyword matlabFunc tscollection
+"Data Manipulation
+syn keyword matlabFunc addsampletocollection addts delsamplefromcollection gettimeseriesnames removets settimeseriesnames
+"Set Functions
+syn keyword matlabFunc intersect ismember issorted setdiff setxor union unique 
+"Date and Time Functions
+syn keyword matlabFunc addtodate calendar clock cputime date datenum datevec eomday etime now weekday
+"M-File Functions and Scripts
+syn keyword matlabFunc addOptional addParamValue addRequired createCopy depdir echo input inputname inputParser mfilename namelengthmax nargchk nargin nargout nargoutchk parse pcode
+"script	Script M-file description
+syn keyword matlabFunc varargin varargout
+"Evaluation of Expressions and Functions
+syn keyword matlabFunc ans assert builtin pause run script symvar
+"Timer Functions
+syn keyword matlabFunc isvalid start startat stop timer timerfind timerfindall wait 
+"Variables and Functions in Memory
+syn keyword matlabFunc assignin datatipinfo genvarname isglobal memory mislocked mlock munlock pack
+"Control Flow
+syn keyword matlabFunc parfor
+"Error Handling
+syn keyword matlabFunc addCause error ferror getReport last lasterr lasterror lastwarn warning
+"Classes and Objects
+syn keyword matlabFunc addlistener addprop dynamicprops 
+"events 	Display class event names
+syn keyword matlabFunc findprop getdisp handle hgsetget inferiorto loadobj metaclass notify saveobj setdisp subsasgn subsindex subsref substruct superiorto 
+"File Name Construction
+syn keyword matlabFunc filemarker fileparts filesep fullfile tempdir tempname 
+"Opening, Loading, Saving Files
+syn keyword matlabFunc daqread filehandle importdata load open save uiimport winopen 
+"Memory Mapping
+syn keyword matlabFunc memmapfile
+"Low-Level File I/O
+syn keyword matlabFunc fclose feof fgetl fgets fopen fprintf fread frewind fscanf fseek ftell fwrite 
+
+"Text Files
+syn keyword matlabFunc csvread csvwrite dlmread dlmwrite textread textscan
+"XML Documents
+syn keyword matlabFunc xmlread xmlwrite xslt
+"Microsoft Excel Functions
+syn keyword matlabFunc xlsfinfo xlsread xlswrite
+"Lotus 1-2-3 Functions
+syn keyword matlabFunc wk1finfo wk1read wk1write
+"Common Data Format (CDF)
+syn keyword matlabFunc cdfepoch cdfinfo cdfread cdfwrite todatenum 
+"Flexible Image Transport System
+syn keyword matlabFunc fitsinfo fitsread 
+"Hierarchical Data Format (HDF)
+syn keyword matlabFunc hdf hdf5 hdf5info hdf5read hdf5write hdfinfo hdfread hdftool 
+"Band-Interleaved Data
+syn keyword matlabFunc multibandread multibandwrite 
+
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_matlab_syntax_inits")
+  if version < 508
+    let did_matlab_syntax_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+  HiLink matlabTransposeOperator	matlabOperator
+  HiLink matlabLineContinuation		Special
+  HiLink matlabLabel			Label
+  HiLink matlabConditional		Conditional
+  HiLink matlabRepeat			Repeat
+  HiLink matlabTodo			Todo
+  HiLink matlabString			String
+  HiLink matlabDelimiter		Identifier
+  HiLink matlabTransposeOther		Identifier
+  HiLink matlabNumber			Number
+  HiLink matlabFloat			Float
+  HiLink matlabConstant			Constant
+  HiLink matlabImplicit			matlabStatement
+  HiLink matlabStatement		Statement
+  HiLink matlabSemicolon		SpecialChar
+  HiLink matlabComment			Comment
+  HiLink matlabBlockComment		Comment
+  HiLink matlabImport			Include
+  HiLink matlabBoolean			Boolean
+  HiLink matlabStorageClass		StorageClass
+
+  HiLink matlabArithmeticOperator	matlabOperator
+  HiLink matlabRelationalOperator	matlabOperator
+  HiLink matlabLogicalOperator		matlabOperator
+  HiLink matlabOperator			Operator
+  HiLink matlabExceptions		Exception
+  HiLink matlabFunc			Function
+
+"optional highlighting
+  "HiLink matlabIdentifier		Identifier
+  "HiLink matlabTab			Error
+  delcommand HiLink
+endif
+
+let b:current_syntax = "matlab"
+
+"EOF	vim: ts=8 noet tw=100 sw=8 sts=0
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/xtr/skeleton/letter.tex
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/xtr/skeleton/letter.tex	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/xtr/skeleton/letter.tex	(revision 27955)
@@ -0,0 +1,15 @@
+\documentclass{letter}
+
+\signature{\'Eric Larour}
+\address{Jet Propulsion Laboratory\\4800 Oak Grove Drive\\CA 91109 Pasadena}
+\begin{document}
+
+\begin{letter}{RECIPIENT\\ADRESS}
+\opening{Dear RECIPIENT,}
+
+BLABLABLA BLABLABLA BLABLABLA BLABLABLA BLABLABLA
+
+\closing{regards,}
+\end{letter}
+
+\end{document}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/xtr/skeleton/sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/xtr/skeleton/sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vim/xtr/skeleton/sh	(revision 27955)
@@ -0,0 +1,1 @@
+#!/bin/bash
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vimrc
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vimrc	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/addons/vimrc	(revision 27955)
@@ -0,0 +1,243 @@
+
+" General setup{{{
+" ----------------------------------------------------------------------
+" Use Vim settings, rather then Vi settings (much better!).
+" This must be first, because it changes other options as a side effect.
+set nocompatible
+" UNIX special
+set shell=/bin/bash  
+" jingle bells, jingle bells, hingle bells, ....
+set errorbells
+" keep 100 lines of command line history
+set history=100
+" show the cursor position all the time
+set ruler
+" display incomplete commands
+set showcmd	
+" display curent mode
+set showmode
+"----------------------------------------------------------------------}}}
+" Text-Formatting, Identing, Tabbing{{{
+" ----------------------------------------------------------------------
+" allow backspacing (to delete) over everything in insert mode
+set backspace=indent,eol,start
+" number of spaces the tab stands for
+set tabstop=3
+" number of spaces the softtab (>>) stands for
+set softtabstop=3 
+" number of spaces used for (auto)indenting
+set shiftwidth=3
+" a <tab> in an indent inserts 'shiftwidth' spaces (not tabstop)
+set smarttab
+" always set autoindenting on
+set autoindent
+"smartindenting useful (use '=')
+set smartindent
+
+"base folds on markers
+set foldmethod=marker
+set foldtext=IssmFoldText()
+" -----------------------------------------------------------}}}
+" Backups {{{
+" -----------------------------------------------------------
+" updatecount   number of characters typed to cause a swap file update (0->disable)
+set uc=0
+" make no backups
+set nobackup
+" -----------------------------------------------------------}}}
+" Searching, Substituting {{{
+" -----------------------------------------------------------
+" select case-insenitive search
+"set ignorecase 
+" No ignorecase if Uppercase chars in search
+"set scs
+" change the way backslashes are used in search patterns (. instead of \.)
+set magic
+" begin search at top when EOF reached
+set wrapscan
+" jump to matches during entering the pattern
+set sm
+" do incremental searching 
+set incsearch   
+"highlight all matches
+set hlsearch
+" Do not toggle 'g' and 'c' with :s///gc
+set noedcompatible
+
+" use 'g'-flag when substituting (subst. all matches in that line, not only
+" first) to turn off, use g
+set gdefault
+" how command line completion works (use tab to complete the file name)
+set wildmode=list:longest,list:full
+" ignore some files for filename completion
+set wildignore=*.o,*.r,*.so,*.sl,*.tar,*.tgz
+" some filetypes got lower priority
+set su=.h,.bak,~,.o,.info,.swp,.obj
+" ----------------------------------------------------------------------}}}
+" Colors and theme {{{
+" ----------------------------------------------------------------------
+" use 256 colors
+"set t_Co=8
+set t_Co=256
+" backgrounb color
+"set background=light
+"set background=dark
+" colorscheme
+"colorscheme issm_white
+colorscheme issm_black
+" ----------------------------------------------------------------------}}}
+
+" Mappings{{{
+" ----------------------------------------------------------------------
+"stop highlightings when spce is pressed
+nnoremap <silent> <Space> :silent noh<Bar>echo<CR> 
+
+"increment number
+nnoremap <C-i> <C-a>
+
+"line numbering in flip-flop
+map num :set number!<CR>
+
+" save & "make" the current file in all modes
+map <F8> :w <Enter> :make <Enter><Enter>
+map! <F8>  <ESC> :w <Enter> :make <Enter><Enter>
+" make update: nice for longer documents
+map <F7> :w <Enter> :make update <Enter><Enter>
+map! <F7> <ESC> :w <Enter> :make update <Enter><Enter>
+
+
+"use paste P: re-indent and re-format at the same time
+:nnoremap <Esc>P P'[v']=
+:nnoremap <Esc>p p'[v']=
+
+" Don't use Ex mode, use Q for formatting
+map Q gq
+" ----------------------------------------------------------------------}}}
+" Autocommands {{{
+" ----------------------------------------------------------------------
+" Only do this part when compiled with support for autocommands.
+if has("autocmd")
+
+  " Enable file type detection.
+  " Also load indent files, to automatically do language-dependent indenting.
+  filetype plugin indent on
+  "filetype plugin on
+
+  " For all text files set 'textwidth' to 78 characters.
+  autocmd FileType text setlocal textwidth=0
+
+  " When editing a file, always jump to the last known cursor position.
+  " Don't do it when the position is invalid or when inside an event handler
+  " (happens when dropping a file on gvim).
+  autocmd BufReadPost *
+    \ if line("'\"") > 0 && line("'\"") <= line("$") |
+    \   exe "normal g`\"" |
+    \ endif |
+	 \ for fnum in range(1,foldlevel('.')) |
+	 \   exe ":foldopen" |
+	 \ endfor
+
+  "scripts must be executable
+  autocmd BufWritePost   *.sh         !chmod +x %
+
+endif " has("autocmd")
+" ----------------------------------------------------------------------}}}
+" Matlab special {{{
+" ----------------------------------------------------------------------
+"" associate *.par with matlab filetype
+au BufRead,BufNewFile *.par setfiletype matlab
+au BufRead,BufNewFile *.tpl setfiletype html
+" ----------------------------------------------------------------------}}}
+" C special{{{
+" ----------------------------------------------------------------------
+"indenting for C-code
+set cindent
+" and here some nice options for cindenting
+set cinoptions={.5s,+.5s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s 
+" hash sign identation
+set cinkeys-=0#
+" ----------------------------------------------------------------------}}}
+" TEX special{{{
+" ----------------------------------------------------------------------
+au BufRead,BufNewFile *.tex,*.html,*.txt set textwidth=100     "100 caracters max (See gq command)
+au BufRead,BufNewFile *.tex,*.html,*.txt set formatoptions=cqt "automatic wraping
+au BufRead,BufNewFile *.tex,*.html,*.txt set wrapmargin=0      "no margin
+au BufRead,BufNewFile *.cls setfiletype tex
+
+" OPTIONAL: Starting with Vim 7, the filetype of empty .tex files defaults to
+" 'plaintex' instead of 'tex', which results in vim-latex not being loaded.
+" The following changes the default filetype back to 'tex':
+let g:tex_flavor='latex'
+" ----------------------------------------------------------------------}}}
+" FORTRAN special{{{
+" ----------------------------------------------------------------------
+au BufRead,BufNewFile *.src setfiletype fortran
+" ----------------------------------------------------------------------}}}
+" InsertTabWrapper{{{
+" ----------------------------------------------------------------------
+function! InsertTabWrapper(direction) 
+let col = col('.') - 1 
+if !col || getline('.')[col - 1] !~ '\k' 
+   return "\<tab>" 
+elseif "backward" == a:direction 
+   return "\<c-p>" 
+else 
+   return "\<c-n>" 
+endif 
+endfunction 
+
+inoremap <tab> <c-r>=InsertTabWrapper ("forward")<cr>
+inoremap <s-tab> <c-r>=InsertTabWrapper ("backward")<cr>
+
+"source ~/.exrc 
+set wildmenu
+
+"Change to directory of current file automatically
+autocmd BufEnter * lcd %:p:h
+" ----------------------------------------------------------------------}}}
+
+" Abbreviations {{{
+" ----------------------------------------------------------------------
+func Eatchar(pat)
+	let c = nr2char(getchar())
+	return (c =~ a:pat) ? '' : c
+endfunc
+au BufRead,BufNewFile *.html   iabbr <silent> H1 <h1></h1><Left><Left><Left><Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.html   iabbr <silent> H2 <h2></h2><Left><Left><Left><Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.html   iabbr <silent> H3 <h3></h3><Left><Left><Left><Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.html   iabbr <silent> CO <code></code><Left><Left><Left><Left><Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.html   iabbr <silent> PP <p></p><Left><Left><Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.jl     iabbr <silent> p1  println("")<Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.m      iabbr <silent> p1  disp('');<Left><Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.m      iab <expr> p0  "disp('-------------- file: ".expand('%')." line: ".line(".")."');"
+au BufRead,BufNewFile *.c*,*.h iabbr <silent> p1  printf("\n");<Left><Left><Left><Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.c*,*.h iabbr <silent> ER  _error_("");<Left><Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.py     iabbr <silent> ER  raise NameError('')<Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.m      iabbr <silent> ER  error('');<Left><Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.jl     iabbr <silent> ER  error("")<Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.c*     ab VV VecView(ug,PETSC_VIEWER_STDOUT_WORLD);
+au BufRead,BufNewFile *.c*,*.h ab AS _assert_();<Left><Left><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *jl      iab <expr> p0  "print(\"-------------- file: ".expand('%')." line: $(@__LINE__)\\n\")"
+au BufRead,BufNewFile *.c*,*.h iab <expr> p0  "printf(\"-------------- file: ".expand('%')." line: %i\\n\",__LINE__);"
+au BufRead,BufNewFile *.c*,*.h iab <expr> pp0 "PetscSynchronizedPrintf(MPI_COMM_WORLD,\"-------------- file: ".expand('%')." line: %i\\n\",__LINE__);\nPetscSynchronizedFlush(MPI_COMM_WORLD);"
+"tex
+au BufRead,BufNewFile *.tex iab EQ 
+			\\begin{equation}
+			\<CR>\end{equation}<up><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.tex iab IT 
+			\\begin{itemize}
+			\<CR>\item 
+			\<CR>\end{itemize}<up><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.tex iab EN 
+			\\begin{enumerate}
+			\<CR>\item 
+			\<CR>\end{enumerate}<up><C-R>=Eatchar('\s')<CR>
+au BufRead,BufNewFile *.tex ab (()) \left( \right)
+"}}}
+" Skeletons {{{
+au BufNewFile letter.tex   0r ~/.vim/xtr/skeleton/letter.tex
+"}}}
+" Copy and Paste{{{
+"vmap <C-c> y:call system("pbcopy", getreg("\""))<CR>
+"nmap <C-v> :call setreg("\"",system("pbpaste"))<CR>p
+"}}}
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/vim/install.sh	(revision 27955)
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install src
+rm -rf vim72
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/vim-7.2.tar.bz2' 'vim-7.2.tar.bz2'
+
+#Untar 
+bzip2 -d -k vim-7.2.tar.bz2
+tar -xvf vim-7.2.tar
+rm vim-7.2.tar
+
+#Move vim into install directory
+mv vim72/* src
+rm -rf vim72
+
+#Configure vim (icc seems to have issues with wctype.h)
+export CC=gcc
+cd src/src 
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/vim/install" \
+	--with-gcc="/usr/bin/gcc" \
+	--with-tlib="/lib/"
+
+#Compile vim
+make
+make  install
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/InstallInstructions.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/InstallInstructions.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/InstallInstructions.txt	(revision 27955)
@@ -0,0 +1,159 @@
+Win7: 
+-Be sure to use an account name that does not have spaces in it, as this could be an 
+issue with Cygwin. 
+
+
+Installing Matlab: 
+
+-Make sure that when you install Matlab, you choose C:\MATLAB\R2011b as directory 
+for the installation. Failing to do so could preclude the sdk compiler from 
+finding the Matlab header files.  Define environment variable:
+MATLAB_DIR="C:/MATLAB/R2011b" after you 'source $ISSM_TIER/etc/environment.sh'
+as described in the ISSM installation instructions below.
+
+-Also pay attention to what version of Matlab you are using, 32 or 64 bits, 
+as this will need to be reflected onto the sdk compiler settings. 
+
+
+
+Cygwin: 
+
+-You will need cygwin installed on your Windows platform to manage the compilation.  Cygwin emulates
+unix behaviour on windows machines.  The compilation will still be carried out by the windows sdk compiler, but the
+environment driving the compilation will be the unix-like cygwin. When you download
+cygwin, make sure that you install it in the C:\Cygwin directory. 
+
+-You will find the cygwin setup executable on the www.cygwin.com webpage. Here is a link
+to it: http://cygwin.com/setup.exe. Download this file to C:\Cygwin and be sure to reuse 
+it when you want to update your current cygwin installation. Do not download setup.exe 
+twice! 
+
+- You will need the following packages downloaded to carry out the compilation of ISSM
+ successfully, so be sure to include them in your cygwin install: 
+
+subversion
+autotools
+automake
+vim (or any other editor)
+patchutils
+make: The GNU version of the 'make' utility
+automake 1.11 and automake:Wrapper scripts
+autoconf
+python: Python language interpreter
+unzip
+cygrunsrv
+
+
+
+Compiler: 
+
+You need Visual Studio Express 2010 for C++, which you can find here: 
+http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express
+
+you will also need the Windows SDK 7.1 compiler, which you can find at the following link
+http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8279
+This compiler is compatible with Matlab, as detailed in the following webpage: 
+http://www.mathworks.com/support/compilers/R2011b/win64.html#n2
+
+Be careful not to download the sdk before Visual Studio Express, as this could lead to 
+environment setup issues. 
+
+
+Before you do anything related to ISSM! You have to capture the settings of your compiler.
+This is by far the most tricky part. 
+
+Follow Sdk1.png and Sdk2.png for more details. You have to launch sdk 7.1 command prompt, go to the 
+cygwin directory and fire up Cygwin by executing Cygwin.bat. Once this is done,dump the 
+results of the export command onto a file, called  sdk7.1.win7.64.sh 
+you will need this file later in the ISSM install. 
+
+
+
+Downloading issm: 
+
+Download issm into the C:\ directory. Do not download it in your Documents or Desktop
+folder. 
+
+In cygwin: 
+cd /cygdrive/c/
+svn co http://issm.ess.uci.edu/svn/issm/issm
+
+Once you download it, in your home directory, edit .bashrc: 
+and add the following lines:
+export ISSM_DIR=/cygdrive/c/issm
+export ISSM_TIER=$ISSM_DIR/trunk-jpl
+export ISSM_ARCH=cygwin-intel
+
+#source
+source $ISSM_TIER/etc/environment.sh
+
+
+Getting the cl.exe compiler to work: 
+before trying to compile the externalpackages, you need to be sure that your compiler cl.exe 
+(the sdk compiler)works. To make sure, create a simple hello world file: 
+
+hello.cpp
+
+#include <stdio.h>
+int main(){
+printf("%s\n","hello");
+return 1;
+}
+
+and try to compile it by doing: 
+cl hello.cpp
+
+If this does not work, do not go any further! The settings of your cl compiler are found
+in externalpackages/windows/configs/. If there is a significant different between your
+sdk7.1.win7.64.sh file (see above section Compiler) and the file that is being sourced in the windows/configs directory, place your new file in
+the configs directory. Relaunch bash, and try to run cl hello.cpp once more. Beware, you will likely
+have to erase some lines in your file, as cygwin might not like some of the stuff that your
+Windows platform is trying to define. To make sure that the correct bit compiler is
+being sourced in windows/configs (e.g. sdk7.1.win7-64.sh or sdk7.1.win7-32.sh) see
+section "One note about 32 vs 64 bit compile" below.
+
+Once the cl.exe compiler works, you can start installing the following packages: 
+petsc   metis triangle and cccl
+
+For petsc, use install-3.1-win7.sh 
+For metis, use install-4.0-win7.sh
+For cccl, use install-win7.sh
+For triangle, use install-win7.sh
+
+Once this is complete run the install.sh scripts in the autoconf and automake
+externalpackages directory
+
+Once these externalpackages have been compiled, you can compile issm: 
+
+./scripts/autoremakererun.sh
+./configs/config-win7-64.sh
+make install
+
+This should compile both parallel and serial versions of ISSM. Beware though, the parallel
+version cannot be run on multi-core platforms yet! We are actively working on it. 
+
+
+
+One note about 32 vs 64 bit compile: 
+Depending on your Matlab version, you will need to do a 32 or 64 bit compile. The only
+difference between both compiles is the setup of the cl.exe compiler. For ease of use,
+you will find in externalpackages/windows/windows_environment.sh a switch to go from 32
+to 64 bit compile. When you type cl.exe \help at the command prompt, cl.exe should report
+what system it is compiling for. Beware, switching 32 to 64 or vice-versa implies recompiling everything from scratch.
+
+
+
+How to setup a Cron job? 
+First, make sure you downloaded cygrunsrv, otherwise the cron setup will only work on a per-session 
+basis! Also, make sure that you have an email correctly setup.  In particular, cron relies on the
+/usr/sbin/sendmail script. If it does not exist, cron will not send emails. Most email management 
+systems will create this script, but you need to check on it. 
+Run cron-config  and fill up the questions. For daemon name, type ntsec. 
+Be careful, make sure that you are running your terminal as Administrator, 
+otherwise your settings will be only user-based. 
+How to setup email? 
+
+Preferred way is through ssmtp. Download it on cygwin, and type ssmtp-config.  If the ssmtp 
+daemon does not create /usr/sbin/sendmail, be sure to create a symlink from the email client 
+to the latter file. Be careful, make sure that you are running your terminal as Administrator, 
+otherwise your settings will be only user-based. 
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/README
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/README	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/README	(revision 27955)
@@ -0,0 +1,71 @@
+How to install intel compiler to work on cygwin at the command line: 
+
+This is what I got from the following post on google: 
+
+-----------------------------------------------------
+All necessary paths and environment variables are set if you put the Microsoft linker path in ICL.CFG, and open the Intel 
+compiler command line window on the Start menu. Then you can run cygwin.bat so that bash inherits the ICL paths, 
+without breaking ICL. You will sometimes get the bash warning about finding Windows style paths in the environment, 
+but those are necessary for ICL and Microsoft link. Needless to say, the Windows environment variable forgetfulness
+ point will be reached sooner with this setup.
+
+After I run cygwin.bat, and try to run icl, it says:
+
+link: invalid option -- o
+Try `ling --help' for more information.
+
+I verified that icl compiles without any problems before I run cygwin.bat
+
+What am I missing?
+
+
+
+This would indicate that you ignored my advice about icl.cfg, and so you are getting the wrong link.exe.  It should have said "link" not "ling."
+For a VC9 installation, /windows/C/Program Files/Intel/Compiler/11.1/026/bin/ia32/icl.cfg:
+-Qlocation,link,"C:\Program Files\Microsoft Visual Studio 9.0\VC\bin"
+-Qprec-div -Qprec-sqrt -Qansi_alias
+----------------------------------------------------------
+
+
+
+
+
+So here is what you do: 
+edit /cygdrive/c/IntelInstall/Compiler/11.1/026/bin/ia32/icl.cfg
+
+add: 
+-Qlocation,link,"C:\Program Files\Microsoft Visual Studio 9.0\VC\bin"
+-Qprec-div -Qprec-sqrt -Qansi_alias
+
+
+Then run the intel compiler command window. Go to C:\Cygwin and run Cygwin.bat. 
+you are now running cygwin with the correct paths.  Type "export" at the command line, and figure out which variables have been set that relate to the intel compiler and visual studio environment. Build a file containing specific export commands and source it from your .bashrc. intel.sh is an example of such file on a Windows XP 32 build. 
+
+
+
+Compiling ISSM using Matlab compatible  compilers. 
+
+At: http://www.mathworks.com/support/compilers/R2011b/win64.html#n2 
+you will find a list of Matlab supported compilers. 
+
+
+We'll try the compile with the Microsoft Windows SDK 7.1: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8279
+
+
+
+MPICH2: 
+to run in parallel.  First install MPICH2 from www.mpich.org/downloads. Make 
+sure the install directory in C:\Program Files\MPICH2, otherwise, ISSM will 
+not be able to figure out where the mpi libraries are installed on your windows platform.
+
+Then fire up smpd in a command line under Administrator privileges: 
+smpd -install
+
+Then: 
+mpiexe.exe -remove
+mpiexe.exe -register (type enter for username, for password, type your windows password, do not chose anything else!)
+mpiexe.exe -validate (should return SUCCESS)
+
+Then you are ready to run parallel.
+
+To do: how do we document this? Create webpage for all of this. + get a fortran compiler giong!
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/configs/intel-winXP.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/configs/intel-winXP.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/configs/intel-winXP.sh	(revision 27955)
@@ -0,0 +1,16 @@
+ export CPATH="C:\\IntelInstall\\Compiler\\11.1\\038\\ipp\\ia32\\include;C:\\IntelInstall\\Compiler\\11.1\\038\\mkl\\include;"
+ export DEVENVDIR="C:\\MicrosoftVisualStudio 9.0\\Common7\\IDE"
+ export FPATH="C:\\IntelInstall\\Compiler\\11.1\\038\\mkl\\include;"
+ export FRAMEWORK35VERSION="v3.5"
+ export FRAMEWORKDIR="C:\\WINDOWS\\Microsoft.NET\\Framework"
+ export FRAMEWORKVERSION="v2.0.50727"
+ export INCLUDE="C:\\IntelInstall\\Compiler\\11.1\\038\\ipp\\ia32\\include;C:\\IntelInstall\\Compiler\\11.1\\038\\mkl\\include;C:\\IntelInstall\\Compiler\\11.1\\038\\tbb\\include;C:\\IntelInstall\\Compiler\\11.1\\038\\include;C:\\MicrosoftVisualStudio 9.0\\VC\\INCLUDE;C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A\\include;"
+ export IPPROOT="C:\\IntelInstall\\Compiler\\11.1\\038\\ipp\\ia32"
+ export LIB="C:\\IntelInstall\\Compiler\\11.1\\038\\ipp\\ia32\\lib;C:\\IntelInstall\\Compiler\\11.1\\038\\ipp\\ia32\\stublib;C:\\IntelInstall\\Compiler\\11.1\\038\\mkl\\ia32\\lib;C:\\IntelInstall\\Compiler\\11.1\\038\\tbb\\ia32\\vc9\\lib;C:\\IntelInstall\\Compiler\\11.1\\038\\Lib\\ia32;C:\\MicrosoftVisualStudio 9.0\\VC\\LIB;C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A\\lib;"
+ export LIBPATH="C:\\WINDOWS\\Microsoft.NET\\Framework\\v3.5;C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727;C:\\MicrosoftVisualStudio 9.0\\VC\\LIB;"
+ export LIBRARY_PATH="C:\\IntelInstall\\Compiler\\11.1\\038\\ipp\\ia32\\lib;C:\\IntelInstall\\Compiler\\11.1\\038\\ipp\\ia32\\stublib;C:\\IntelInstall\\Compiler\\11.1\\038\\mkl\\ia32\\lib;"
+ export PATH="$PATH:/cygdrive/c/IntelInstall/Compiler/11.1/038/Bin/ia32:/cygdrive/c/MicrosoftVisualStudio 9.0/Common7/IDE:/cygdrive/c/MicrosoftVisualStudio 9.0/VC/BIN:/cygdrive/c/MicrosoftVisualStudio 9.0/Common7/Tools:/cygdrive/c/WINDOWS/Microsoft.NET/Framework/v3.5:/cygdrive/c/WINDOWS/Microsoft.NET/Framework/v2.0.50727:/cygdrive/c/MicrosoftVisualStudio 9.0/VC/VCPackages:/cygdrive/c/Program Files/Microsoft SDKs/Windows/v6.0A/bin:/cygdrive/c/WINDOWS"
+ export TBB_ARCH_PLATFORM="ia32\\vc9"
+ export VCINSTALLDIR="C:\\MicrosoftVisualStudio 9.0\\VC"
+ export VSINSTALLDIR="C:\\MicrosoftVisualStudio 9.0"
+ export WINDOWSSDKDIR="C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A\\"
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/configs/sdk10.0-win64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/configs/sdk10.0-win64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/configs/sdk10.0-win64.sh	(revision 27955)
@@ -0,0 +1,48 @@
+
+# -----------------------------------------------------------------------------
+# 
+# The following variables can vary from system to system and standard
+# installation is assumed throughout. If different directories were used when
+# installing MSVC, or Win SDK.
+#
+# TODO: Bring out the host machine arhictecture specific stuff from INCLUDE,
+# LIB and LIBPATH.
+#
+# -----------------------------------------------------------------------------
+
+# The version of Visual Studio is 10.0. Newer versions should work as well.
+export MSVC_DIR='C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\'
+
+# SDK change from 7 to 8 involved changing the locations of important 
+# libraries. If you wish to use 8.0 or 8.1 then you need to provide the 
+# directory of 'Windows Kits' instead.
+export MPI_DIR='C:\Program Files (x86)\MPICH2'
+
+# Unfotunately, standard installation directories of Matlab usually include 
+# white spaces that are not handled correctly by the command interpreter. As
+# such, the directory where one would find Matlab headers and libraries might
+# need to be provided as environment variables.
+export MATLAB_DIR_WIN=`cygpath -w ${MATLAB_DIR}`
+export MATLAB_DIR_LIB="${MATLAB_DIR_WIN}\\extern\\lib\\win64\\microsoft"
+
+# Information about the .NET framework is required to run the MSVC toolchain
+export FrameworkDir='C:\Windows\Microsoft.NET\Framework64\'
+export FrameworkVersion=v4.0.30319
+
+# Windows Kit Information
+export WIN_KIT_DIR='C:\Program Files (x86)\Windows Kits\10'
+export WIN_KIT_VER='10.0.10240.0'
+export WIN_KIT_INC="${WIN_KIT_DIR}\\Include\\${WIN_KIT_VER}\\ucrt;${WIN_KIT_DIR}\\Include\\${WIN_KIT_VER}\\um;${WIN_KIT_DIR}\\Include\\${WIN_KIT_VER}\\shared"
+export WIN_KIT_LIB="${WIN_KIT_DIR}\\Lib\\${WIN_KIT_VER}\\um\\x64;${WIN_KIT_DIR}\\Lib\\${WIN_KIT_VER}\\ucrt\\x64"
+
+
+# LIB and LIBPATH seem redundant, but MSVC linker and compiler use different 
+# variables for the same purpose.
+export INCLUDE="${MSVC_DIR}include;${MATLAB_DIR_WIN}\\extern\\include;${WIN_KIT_INC};"
+export LIB="${MSVC_DIR}lib\\amd64;${MATLAB_DIR_LIB};${WIN_KIT_LIB};"
+export LIBPATH="${FrameworkDir}${FrameworkVersion};${MATLAB_DIR_LIB};${WIN_KIT_LIB};"
+export LIBPATH="${LIBPATH}${MSVC_DIR}lib\\amd64;${MSVC_DIR}bin\\amd64;"
+
+export MSVC_DIR_UNIX=`cygpath -u "${MSVC_DIR}"`
+export MPI_DIR_UNIX=`cygpath -u "${MPI_DIR}"`
+export PATH="${MSVC_DIR_UNIX}/bin/amd64:${MPI_DIR_UNIX}/bin:$PATH"
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/configs/sdk7.1-win32.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/configs/sdk7.1-win32.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/configs/sdk7.1-win32.sh	(revision 27955)
@@ -0,0 +1,39 @@
+# -----------------------------------------------------------------------------
+# 
+# The following variables can vary from system to system and standard
+# installation is assumed throughout. If different directories were used when
+# installing MSVC, or Win SDK.
+#
+# TODO: Bring out the host machine arhictecture specific stuff from INCLUDE,
+# LIB and LIBPATH.
+#
+# -----------------------------------------------------------------------------
+
+# The version of Visual Studio is 10.0. Newer versions should work as well.
+export MSVC_DIR='C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\'
+
+# SDK change from 7 to 8 involved changing the locations of important 
+# libraries. If you wish to use 8.0 or 8.1 then you need to provide the 
+# directory of 'Windows Kits' instead.
+export WIN_SDK_DIR='C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\'
+
+# Unfotunately, standard installation directories of Matlab usually include 
+# white spaces that are not handled correctly by the command interpreter. As
+# such, the directory where one would find Matlab headers and libraries might
+# need to be provided as environment variables.
+export MATLAB_DIR_WIN=`cygpath -w ${MATLAB_DIR}`
+export MATLAB_DIR_LIB="${MATLAB_DIR_WIN}\\extern\\lib\\microsoft"
+
+# Information about the .NET framework is required to run the MSVC toolchain
+export FrameworkDir='C:\Windows\Microsoft.NET\Framework\'
+export FrameworkVersion=v4.0.30319
+
+# LIB and LIBPATH seem redundant, but MSVC linker and compiler use different 
+# variables for the same purpose.
+export INCLUDE="${MSVC_DIR}include;${WIN_SDK_DIR}Include;${MATLAB_DIR_WIN}\\extern\\include;"
+export LIB="${MSVC_DIR}lib;${WIN_SDK_DIR}Lib;${MATLAB_DIR_LIB}"
+export LIBPATH="${FrameworkDir}${FrameworkVersion};${MATLAB_DIR_LIB};"
+export LIBPATH="${LIBPATH}${MSVC_DIR}lib;${MSVC_DIR}bin;${WIN_SDK_DIR}Lib;"
+
+export MSVC_DIR_UNIX=`cygpath -u "${MSVC_DIR}"`
+export PATH="${MSVC_DIR_UNIX}/bin:$PATH"
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/configs/sdk7.1-win64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/configs/sdk7.1-win64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/configs/sdk7.1-win64.sh	(revision 27955)
@@ -0,0 +1,41 @@
+# -----------------------------------------------------------------------------
+# 
+# The following variables can vary from system to system and standard
+# installation is assumed throughout. If different directories were used when
+# installing MSVC, or Win SDK.
+#
+# TODO: Bring out the host machine arhictecture specific stuff from INCLUDE,
+# LIB and LIBPATH.
+#
+# -----------------------------------------------------------------------------
+
+# The version of Visual Studio is 10.0. Newer versions should work as well.
+export MSVC_DIR='C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\'
+
+# SDK change from 7 to 8 involved changing the locations of important 
+# libraries. If you wish to use 8.0 or 8.1 then you need to provide the 
+# directory of 'Windows Kits' instead.
+export WIN_SDK_DIR='C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\'
+export MPI_DIR='C:\Programs\MPICH2'
+
+# Unfotunately, standard installation directories of Matlab usually include 
+# white spaces that are not handled correctly by the command interpreter. As
+# such, the directory where one would find Matlab headers and libraries might
+# need to be provided as environment variables.
+export MATLAB_DIR_WIN=`cygpath -w ${MATLAB_DIR}`
+export MATLAB_DIR_LIB="${MATLAB_DIR_WIN}\\extern\\lib\\win64\\microsoft"
+
+# Information about the .NET framework is required to run the MSVC toolchain
+export FrameworkDir='C:\Windows\Microsoft.NET\Framework64\'
+export FrameworkVersion=v4.0.30319
+
+# LIB and LIBPATH seem redundant, but MSVC linker and compiler use different 
+# variables for the same purpose.
+export INCLUDE="${MSVC_DIR}include;${WIN_SDK_DIR}Include;${MATLAB_DIR_WIN}\\extern\\include;"
+export LIB="${MSVC_DIR}lib\\amd64;${WIN_SDK_DIR}Lib\\x64;${MATLAB_DIR_LIB}"
+export LIBPATH="${FrameworkDir}${FrameworkVersion};${MATLAB_DIR_LIB};"
+export LIBPATH="${LIBPATH}${MSVC_DIR}lib\\amd64;${MSVC_DIR}bin\\amd64;${WIN_SDK_DIR}Lib\\x64;"
+
+export MSVC_DIR_UNIX=`cygpath -u "${MSVC_DIR}"`
+export MPI_DIR_UNIX=`cygpath -u "${MPI_DIR}"`
+export PATH="${MSVC_DIR_UNIX}/bin/amd64:${MPI_DIR_UNIX}/bin:$PATH"
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/configs/sdk7.1.win7-32.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/configs/sdk7.1.win7-32.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/configs/sdk7.1.win7-32.sh	(revision 27955)
@@ -0,0 +1,39 @@
+declare -x ALLUSERSPROFILE="C:\\ProgramData"
+declare -x CL="/AI C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319"
+declare -x COMMONPROGRAMFILES="C:\\Program Files\\Common Files"
+declare -x COMSPEC="C:\\Windows\\system32\\cmd.exe"
+declare -x CommandPromptType="Native"
+declare -x Configuration="Debug"
+declare -x FP_NO_HOST_CHECK="NO"
+declare -x FrameworkVersion="v4.0.30319"
+declare -x HOMEDRIVE="C:"
+declare -x INCLUDE="C:\\Program Files\\Microsoft Visual Studio 10.0\\VC\\INCLUDE;C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\INCLUDE;C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\INCLUDE\\gl;"
+declare -x INFOPATH="/usr/local/info:/usr/share/info:/usr/info:"
+declare -x LANG="en_US.UTF-8"
+declare -x LIB="C:\\Program Files\\Microsoft Visual Studio 10.0\\VC\\Lib;C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\Lib;C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319;C:\\Windows\\Microsoft.NET\\Framework\\v3.5;;"
+declare -x LIBPATH="C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319;C:\\Windows\\Microsoft.NET\\Framework\\v3.5;;C:\\Program Files\\Microsoft Visual Studio 10.0\\VC\\Lib;"
+declare -x MANPATH="/usr/local/man:/usr/share/man:/usr/man:"
+declare -x PATH="/usr/local/bin:/usr/bin:/cygdrive/c/Windows/Microsoft.NET/Framework/v4.0.30319:/cygdrive/c/Windows/Microsoft.NET/Framework/v3.5:/cygdrive/c/Program Files/Microsoft Visual Studio 10.0/Common7/IDE:/cygdrive/c/Program Files/Microsoft Visual Studio 10.0/Common7/Tools:/cygdrive/c/Program Files/Microsoft Visual Studio 10.0/VC/Bin:/cygdrive/c/Program Files/Microsoft Visual Studio 10.0/VC/Bin/VCPackages:/cygdrive/c/Program Files/Microsoft SDKs/Windows/v7.1/Bin/NETFX 4.0 Tools:/cygdrive/c/Program Files/Microsoft SDKs/Windows/v7.1/Bin:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/MATLAB/R2012a/runtime/win32:/cygdrive/c/MATLAB/R2012a/bin:/cygdrive/c/Program Files/Microsoft Windows Performance Toolkit"
+declare -x PATHEXT=".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"
+declare -x PRINTER="137.78.140.129#:1"
+declare -x PROCESSOR_ARCHITECTURE="x86"
+declare -x PROCESSOR_IDENTIFIER="x86 Family 6 Model 42 Stepping 7, GenuineIntel"
+declare -x PROCESSOR_LEVEL="6"
+declare -x PROCESSOR_REVISION="2a07"
+declare -x PROGRAMFILES="C:\\Program Files"
+declare -x PSModulePath="C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules\\"
+declare -x PUBLIC="C:\\Users\\Public"
+declare -x PlatformToolset="Windows7.1SDK"
+declare -x ProgramData="C:\\ProgramData"
+declare -x SHELL="/bin/bash"
+declare -x SYSTEMDRIVE="C:"
+declare -x SYSTEMROOT="C:\\Windows"
+declare -x TARGET_CPU="x86"
+declare -x TARGET_PLATFORM="WIN7"
+declare -x TERM="cygwin"
+declare -x ToolsVersion="4.0"
+declare -x VS100COMNTOOLS="C:\\Program Files\\Microsoft Visual Studio 10.0\\Common7\\Tools\\"
+declare -x WINDIR="C:\\Windows"
+declare -x WindowsSDKDir="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\"
+declare -x WindowsSDKVersionOverride="v7.1"
+declare -x sdkdir="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\"
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/configs/sdk7.1.win7-64.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/configs/sdk7.1.win7-64.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/configs/sdk7.1.win7-64.sh	(revision 27955)
@@ -0,0 +1,48 @@
+declare -x ALLUSERSPROFILE="C:\\ProgramData"
+declare -x CL="/AI C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319"
+declare -x COMMONPROGRAMFILES="C:\\Program Files (x86)\\Common Files"
+declare -x CURRENT_CPU="x64"
+declare -x CommandPromptType="Native"
+declare -x CommonProgramW6432="C:\\Program Files\\Common Files"
+declare -x Configuration="Debug"
+declare -x FP_NO_HOST_CHECK="NO"
+declare -x FrameworkVersion="v4.0.30319"
+declare -x INCLUDE="C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\INCLUDE;C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\INCLUDE;C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\INCLUDE\\gl;"
+declare -x INFOPATH="/usr/local/info:/usr/share/info:/usr/info:"
+declare -x LANG="C.UTF-8"
+declare -x LIB="C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\Lib\\amd64;C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\Lib\\X64;"
+declare -x LIBPATH="C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319;C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319;C:\\Windows\\Microsoft.NET\\Framework64\\v3.5;C:\\Windows\\Microsoft.NET\\Framework\\v3.5;;C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\Lib\\amd64;"
+declare -x MANPATH="/usr/local/man:/usr/share/man:/usr/man:"
+declare -x PATH="/usr/local/bin:/usr/bin:/usr/include:/cygdrive/c/cygwin/usr/bin:/cygdrive/c/cygwin/usr/include:/cygdrive/c/Windows/Microsoft.NET/Framework64/v4.0.30319:/cygdrive/c/Windows/Microsoft.NET/Framework/v4.0.30319:/cygdrive/c/Windows/Microsoft.NET/Framework64/v3.5:/cygdrive/c/Windows/Microsoft.NET/Framework/v3.5:/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE:/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/Tools:/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/Bin/amd64:/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/Bin/VCPackages:/cygdrive/c/Program Files/Microsoft SDKs/Windows/v7.1/Bin/NETFX 4.0 Tools/x64:/cygdrive/c/Program Files/Microsoft SDKs/Windows/v7.1/Bin/x64:/cygdrive/c/Program Files/Microsoft SDKs/Windows/v7.1/Bin:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files/Microsoft Windows Performance Toolkit:/cygdrive/c/MATLAB/R2012a/runtime/win64:/cygdrive/c/MATLAB/R2012a/bin:/cygdrive/c/MATLAB/R2012a/extern/include:/cygdrive/c/MATLAB/R2011a/runtime/win64:/cygdrive/c/MATLAB/R2011a/bin:/cygdrive/c/MATLAB/R2011a/extern/include"
+declare -x PATHEXT=".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"
+declare -x PROCESSOR_ARCHITECTURE="x86"
+declare -x PROCESSOR_ARCHITEW6432="AMD64"
+declare -x PROCESSOR_IDENTIFIER="Intel64 Family 6 Model 42 Stepping 7, GenuineIntel"
+declare -x PROCESSOR_LEVEL="6"
+declare -x PROCESSOR_REVISION="2a07"
+declare -x PROGRAMFILES="C:\\Program Files (x86)"
+declare -x PROMPT="\$P\$G"
+declare -x PSModulePath="C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules\\"
+declare -x PUBLIC="C:\\Users\\Public"
+declare -x PlatformToolset="Windows7.1SDK"
+declare -x ProgramData="C:\\ProgramData"
+declare -x ProgramW6432="C:\\Program Files"
+declare -x REPO="jpl"
+declare -x SESSIONNAME="Console"
+declare -x SHLVL="1"
+declare -x HOMEDRIVE="C:"
+declare -x SYSTEMDRIVE="C:"
+declare -x SYSTEMROOT="C:\\Windows"
+declare -x TARGET_CPU="x64"
+declare -x TARGET_PLATFORM="WIN7"
+declare -x TEMP="/tmp"
+declare -x TERM="cygwin"
+declare -x TMP="/tmp"
+declare -x ToolsVersion="4.0"
+declare -x VS100COMNTOOLS="C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\Tools\\"
+declare -x WINDIR="C:\\Windows"
+declare -x WindowsSDKDir="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\"
+declare -x WindowsSDKVersionOverride="v7.1"
+declare -x sdkdir="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\"
+declare -x windows_tracing_flags="3"
+declare -x windows_tracing_logfile="C:\\BVTBin\\Tests\\installpackage\\csilogfile.log"
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/fortran_environment.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/fortran_environment.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/fortran_environment.sh	(revision 27955)
@@ -0,0 +1,70 @@
+declare -x APPDATA="C:\Users\larour\AppData\Roaming"
+declare -x ARCH_PATH="ia32"
+declare -x ARCH_PATH_MPI="ia32"
+declare -x BIN_ROOT="C:\Program Files (x86)\Intel\Composer XE 2013\bin"
+declare -x BUNDLE_NAME="Intel(R) Parallel Studio XE 2013"
+declare -x COMMONPROGRAMFILES="C:\Program Files (x86)\Common Files"
+declare -x CommonProgramW6432="C:\Program Files\Common Files"
+declare -x COMPUTERNAME="WIN-BBO0CI1DTAL"
+declare -x COMSPEC="C:\Windows\system32\cmd.exe"
+declare -x C_TARGET_ARCH="ia32"
+declare -x DevEnvDir="C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE"
+declare -x FP_NO_HOST_CHECK="NO"
+declare -x Framework35Version="v3.5"
+declare -x FrameworkDir="C:\Windows\Microsoft.NET\Framework"
+declare -x FrameworkDIR32="C:\Windows\Microsoft.NET\Framework"
+declare -x FrameworkVersion="v4.0.30319"
+declare -x FrameworkVersion32="v4.0.30319"
+declare -x HOMEDRIVE="C:"
+declare -x HOMEPATH="\Users\larour"
+declare -x IFORT_COMPILER13="C:\Program Files (x86)\Intel\Composer XE 2013"
+declare -x INCLUDE="C:\Program Files (x86)\Intel\Composer XE 2013\compiler\include;C:\Program Files (x86)\Intel\Composer XE 2013\compiler\include\ia32;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include;C:\Program Files (x86)\Intel\Composer XE 2013\mkl\include;"
+declare -x INTEL_DEV_REDIST="C:\Program Files (x86)\Common Files\Intel\Shared Libraries"
+declare -x INTEL_LICENSE_FILE="C:\Program Files (x86)\Common Files\Intel\Licenses"
+declare -x LIB="C:\Program Files (x86)\Intel\Composer XE 2013\compiler\lib;C:\Program Files (x86)\Intel\Composer XE 2013\compiler\lib\ia32;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\LIB;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib;C:\Program Files (x86)\Intel\Composer XE 2013\mkl\lib\ia32;C:\Program Files (x86)\Intel\Composer XE 2013\compiler\lib\ia32;"
+declare -x LIBPATH="C:\Windows\Microsoft.NET\Framework\v4.0.30319;C:\Windows\Microsoft.NET\Framework\v3.5;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\LIB;"
+declare -x LOCALAPPDATA="C:\Users\larour\AppData\Local"
+declare -x LOGONSERVER="\\WIN-BBO0CI1DTAL"
+declare -x MKLROOT="C:\Program Files (x86)\Intel\Composer XE 2013\mkl"
+declare -x MSVS_VAR_SCRIPT="C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\..\..\VC\vcvarsall.bat"
+declare -x NUMBER_OF_PROCESSORS="8"
+declare -x OS="Windows_NT"
+declare -x PATH="$PATH:/cygdrive/c/Program Files (x86)/Intel/Composer XE 2013/bin/ia32:/cygdrive/c/Program Files (x86)/Intel/Composer XE 2013/redist/ia32/compiler:/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE:/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/BIN:/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/Tools:/cygdrive/c/Windows/Microsoft.NET/Framework/v4.0.30319:/cygdrive/c/Windows/Microsoft.NET/Framework/v3.5:/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/VCPackages:/cygdrive/c/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/bin/NETFX 4.0 Tools:/cygdrive/c/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/bin:/cygdrive/c/Program Files (x86)/Intel/Composer XE 2013/redist/ia32/mkl:/cygdrive/c/Program Files (x86)/Intel/Composer XE 2013/redist/ia32/compiler:/cygdrive/c/Program Files (x86)/Common Files/Intel/Shared Libraries/redist/intel64/mpirt:/cygdrive/c/Program Files (x86)/Common Files/Intel/Shared Libraries/redist/intel64/compiler:/cygdrive/c/Program Files (x86)/Common Files/Intel/Shared Libraries/redist/ia32/mpirt:/cygdrive/c/Program Files (x86)/Common Files/Intel/Shared Libraries/redist/ia32/compiler:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files/Microsoft Windows Performance Toolkit:/cygdrive/c/MATLAB/R2012b/runtime/win64:/cygdrive/c/MATLAB/R2012b/bin:/cygdrive/c/Program Files (x86)/Intel/Composer XE 2013/redist/ia32/mpirt"
+declare -x PATHEXT=".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"
+declare -x PROCESSOR_ARCHITECTURE="x86"
+declare -x PROCESSOR_ARCHITEW6432="AMD64"
+declare -x PROCESSOR_IDENTIFIER="Intel64 Family 6 Model 58 Stepping 9, GenuineIntel"
+declare -x PROCESSOR_LEVEL="6"
+declare -x PROCESSOR_REVISION="3a09"
+declare -x PRODUCT_NAME="Intel Composer XE 2013 "
+declare -x PRODUCT_NAME_FULL="Intel(R) Composer XE 2013 Update 3 (package 171)"
+declare -x ProgramData="C:\ProgramData"
+declare -x PROGRAMFILES="C:\Program Files (x86)"
+declare -x ProgramW6432="C:\Program Files"
+declare -x PROMPT="$P$G"
+declare -x protector_attach="true"
+declare -x PSModulePath="C:\Windows\system32\WindowsPowerShell\v1.0\Modules"
+declare -x PUBLIC="C:\Users\Public"
+declare -x ROOT="C:\Program Files (x86)\Intel\Composer XE 2013"
+declare -x SCRIPT_NAME="compilervars_arch.bat"
+declare -x SESSIONNAME="Console"
+declare -x SYSTEMDRIVE="C:"
+declare -x SYSTEMROOT="C:\Windows"
+declare -x TARGET_ARCH="ia32"
+declare -x TARGET_VS="vs2010"
+declare -x TARGET_VS_ARCH="x86"
+declare -x TEMP="/cygdrive/c/Users/larour/AppData/Local/Temp"
+declare -x TMP="/cygdrive/c/Users/larour/AppData/Local/Temp"
+declare -x USERDOMAIN="WIN-BBO0CI1DTAL"
+declare -x USERNAME="larour"
+declare -x USERPROFILE="C:\Users\larour"
+declare -x VCINSTALLDIR="C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC"
+declare -x VS100COMNTOOLS="C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools"
+declare -x VSINSTALLDIR="C:\Program Files (x86)\Microsoft Visual Studio 10.0"
+declare -x WINDIR="C:\Windows"
+declare -x WindowsSdkDir="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A"
+declare -x windows_tracing_flags="3"
+declare -x windows_tracing_logfile="C:\BVTBin\Tests\installpackage\csilogfile.log"
+declare -x WIN_TITLE="Intel Composer XE 2013  IA-32 Visual Studio 2010"
+declare -x WIN_TITLE_ARCH="IA-32"
+declare -x WIN_TITLE_VS="Visual Studio 2010"
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/install.sh	(revision 27955)
@@ -0,0 +1,5 @@
+#!/bin/bash
+set -eu
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/win7.sdk7.1.exe' 'win7.sdk7.1.exe'
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/windows_environment.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/windows_environment.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/windows/windows_environment.sh	(revision 27955)
@@ -0,0 +1,41 @@
+#This file sources all relevant scripts to setup the paths to windows compilers.
+
+#Where are the configuration files for each compiler: 
+config_dir="$ISSM_DIR/externalpackages/windows/configs"
+
+#your choise of compiler: 
+# 1: sdk 7.1 32 bits on Win7
+# 2: sdk 7.1 64 bits on Win7
+# 3: intel compiler on Win7
+# 4: intel compiler on WinXP
+
+#Determine OS version using uname: 
+version=`uname -m | grep x86_64`
+if [[ $version == "" ]];then
+	compiler=1
+else
+	compiler=2
+fi
+
+#If you want to override and use intel compilers: 
+#compiler=3;
+
+
+#source corresponding environment variables: 
+
+if [[ "$compiler" == "1" ]]; then 
+	source $config_dir/sdk10.0-win32.sh
+elif [[ "$compiler" == "2" ]]; then 
+	source $config_dir/sdk10.0-win64.sh
+elif [[ "$compiler" == "3" ]]; then 
+	source $config_dir/intel-win7.sh
+else 
+	source $config_dir/intel-winXP.sh
+fi
+
+#finally, out of ISSM_DIR, we need to create an ISSM_DIR_WIN variable for Matlab to pick up on.
+ISSM_DIR_WIN=`cygpath -m $ISSM_DIR`
+export ISSM_DIR_WIN
+
+#Now source for fortran environment: 
+#source $ISSM_DIR/externalpackages/windows/fortran_environment.sh
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/xaifbooster/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/xaifbooster/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/xaifbooster/install.sh	(revision 27955)
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf xaifBooster
+
+#download 
+svn co -r 125  http://hpc.svn.rice.edu/r/xaifBooster/trunk xaifBooster
+
+#Compile xaifBooster
+cd xaifBooster
+make
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/xerces/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/xerces/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/xerces/install.sh	(revision 27955)
@@ -0,0 +1,25 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install xerces-c-src_2_8_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/xerces-c-src_2_8_0.tar.gz' 'xerces-c-src_2_8_0.tar.gz'
+
+#Untar 
+tar -zxvf  xerces-c-src_2_8_0.tar.gz
+
+#Move xerces-c-tools into install directory
+mv xerces-c-src_2_8_0/* src
+rm -rf xerces-c-src_2_8_0
+
+#Apply patches
+cd src/src/xercesc/
+
+#Configure
+./runConfigure -plinux -cgcc -xg++ -minmem -nsocket -tnative -rnone -s 
+
+#Compile xerces-c-tools
+make
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/yams/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/yams/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/yams/install.sh	(revision 27955)
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+#Some cleanup
+rm -rf install
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/yams2-linux.gz' 'yams2-linux.gz'
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/yams2-osx.gz' 'yams2-osx.gz'
+$ISSM_DIR/scripts/DownloadExternalPackage.sh 'https://issm.ess.uci.edu/files/externalpackages/yams2-win.exe' 'yams2-win.exe'
+
+#loop over the binaries
+for i in yams*
+do
+	name=$i;
+	cp $i install/
+
+	#uncompress if necessary
+	if echo $i | grep -q ".gz"
+	then
+		gunzip install/$i
+	fi
+
+	#permissions
+	chmod 777 install/*
+done
Index: /issm/branches/trunk-dlcheng-ASE/externalpackages/zlib/install-1.2.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/externalpackages/zlib/install-1.2.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/externalpackages/zlib/install-1.2.sh	(revision 27955)
@@ -0,0 +1,38 @@
+#!/bin/bash
+set -eu
+
+
+# Constants
+#
+VER="1.2.11"
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://issm.ess.uci.edu/files/externalpackages/zlib-${VER}.tar.gz" "zlib-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf zlib-$VER.tar.gz
+
+# Cleanup
+rm -rf install src
+mkdir install src
+
+# Move source to 'src' directory
+mv zlib-$VER/* src/
+rm -rf zlib-$VER
+
+# Configure
+cd src
+./configure \
+ 	--prefix="${ISSM_DIR}/externalpackages/zlib/install"
+
+# Compile and install
+if [ $# -eq 0 ]; then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+
+# Return to initial directory
+cd ..
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/aws-amazon_linux-solid_earth
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/aws-amazon_linux-solid_earth	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/aws-amazon_linux-solid_earth	(revision 27955)
@@ -0,0 +1,84 @@
+MATLAB_PATH="/usr/local/MATLAB/R2020a"
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-dir=/usr \
+	--with-python-numpy-dir=/usr/lib64/python2.7/site-packages/numpy/core/include/numpy \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-redhat-linux/7 -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpifort -lmpi" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools		install-linux.sh
+	cmake			install.sh
+	petsc			install-3.14-linux.sh
+	triangle		install-linux.sh
+	chaco			install-linux.sh
+	m1qn3			install.sh
+	semic			install.sh
+	boost			install-1.7-linux.sh
+	curl			install-7-linux.sh
+	netcdf			install-4.7-parallel.sh
+	proj			install-6.sh
+	gdal			install-3-python.sh
+	gshhg			install.sh
+	gmt				install-6-linux.sh
+	gmsh			install-4-linux.sh
+	shell2junit		install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=1
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+#       compilation.
+#
+NUMCPUS_INSTALL=8
+
+# Number of cpus used in the nightly runs
+#
+# NOTE: Possible problem of access to all_vertices.txt if more than 1.
+#
+NUMCPUS_RUN=1
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+# NOTE:
+# - Test 2021 is excluded as Gmsh produces different-sized meshes on macOS and Linux for 3d objects (archives are generated on macOS).
+#
+MATLAB_NROPTIONS="'benchmark','slc','exclude',[2021]"
+PYTHON_NROPTIONS="--benchmark slc --exclude 2021"
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/eis-daskhub-python-modules
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/eis-daskhub-python-modules	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/eis-daskhub-python-modules	(revision 27955)
@@ -0,0 +1,83 @@
+# NOTE: This configuration adds solid earth and Dakota capabilities to the 
+#		basic build.
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix="${ISSM_DIR}" \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-python-dir="/srv/conda/envs/notebook" \
+	--with-python-version="3.9" \
+	--with-python-numpy-dir="/srv/conda/envs/notebook/lib/python3.9/site-packages/numpy/core/include/numpy" \
+	--with-fortran-lib="-L/usr/lib/x86_64-linux-gnu -lgfortran" \
+	--with-mpi-include="${ISSM_EXT_DIR}/petsc/install/include" \
+	--with-mpi-libflags="-L${ISSM_EXT_DIR}/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir="${ISSM_EXT_DIR}/petsc/install" \
+	--with-metis-dir="${ISSM_EXT_DIR}/petsc/install" \
+	--with-parmetis-dir="${ISSM_EXT_DIR}/petsc/install" \
+	--with-scalapack-dir="${ISSM_EXT_DIR}/petsc/install" \
+	--with-mumps-dir="${ISSM_EXT_DIR}/petsc/install" \
+	--with-hdf5-dir="${ISSM_EXT_DIR}/petsc/install" \
+	--with-petsc-dir="${ISSM_EXT_DIR}/petsc/install" \
+	--with-gsl-dir="${ISSM_EXT_DIR}/gsl/install" \
+	--with-boost-dir="${ISSM_EXT_DIR}/boost/install" \
+	--with-dakota-dir="${ISSM_EXT_DIR}/dakota/install" \
+	--with-proj-dir="${ISSM_EXT_DIR}/proj/install" \
+	--with-triangle-dir="${ISSM_EXT_DIR}/triangle/install" \
+	--with-chaco-dir="${ISSM_EXT_DIR}/chaco/install" \
+	--with-m1qn3-dir="${ISSM_EXT_DIR}/m1qn3/install" \
+	--with-semic-dir="${ISSM_EXT_DIR}/semic/install" \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-linux.sh
+	cmake		install.sh
+	petsc		install-3.16-linux.sh
+	gsl			install.sh
+	boost		install-1.7-linux.sh
+	dakota		install-6.2-linux.sh
+	curl		install-7-linux.sh
+	netcdf		install-4.7-parallel.sh
+	proj		install-6.sh
+	gdal		install-3-python.sh
+	gshhg		install.sh
+	gmt			install-6-linux.sh
+	gmsh		install-4-linux.sh
+	triangle	install-linux.sh
+	chaco		install-linux.sh
+	m1qn3		install.sh
+	semic		install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/eis-smce-binaries
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/eis-smce-binaries	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/eis-smce-binaries	(revision 27955)
@@ -0,0 +1,82 @@
+# NOTE: This configuration adds solid earth and Dakota capabilities to the 
+#		basic build.
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix="${ISSM_DIR}" \
+	--disable-static \
+	--with-wrappers=no \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=48 \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/9 -lgfortran" \
+	--with-mpi-include="/opt/intel/mpi/2021.4.0/include" \
+	--with-mpi-libflags="-L/opt/intel/mpi/2021.4.0/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir="${ISSM_EXT_DIR}/petsc/install" \
+	--with-metis-dir="${ISSM_EXT_DIR}/petsc/install" \
+	--with-parmetis-dir="${ISSM_EXT_DIR}/petsc/install" \
+	--with-scalapack-dir="${ISSM_EXT_DIR}/petsc/install" \
+	--with-mumps-dir="${ISSM_EXT_DIR}/petsc/install" \
+	--with-hdf5-dir="${ISSM_EXT_DIR}/petsc/install" \
+	--with-petsc-dir="${ISSM_EXT_DIR}/petsc/install" \
+	--with-gsl-dir="${ISSM_EXT_DIR}/gsl/install" \
+	--with-boost-dir="${ISSM_EXT_DIR}/boost/install" \
+	--with-dakota-dir="${ISSM_EXT_DIR}/dakota/install" \
+	--with-proj-dir="${ISSM_EXT_DIR}/proj/install" \
+	--with-triangle-dir="${ISSM_EXT_DIR}/triangle/install" \
+	--with-chaco-dir="${ISSM_EXT_DIR}/chaco/install" \
+	--with-m1qn3-dir="${ISSM_EXT_DIR}/m1qn3/install" \
+	--with-semic-dir="${ISSM_EXT_DIR}/semic/install"
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-linux.sh
+	cmake		install.sh
+	petsc		install-3.14-linux.sh
+	gsl			install.sh
+	boost		install-1.7-linux.sh
+	dakota		install-6.2-linux.sh
+	curl		install-7-linux.sh
+	netcdf		install-4.7-parallel.sh
+	sqlite		install.sh
+	proj		install-6.sh
+	gdal		install-3-python.sh
+	gshhg		install.sh
+	gmt			install-6-linux.sh
+	gmsh		install-4.sh
+	triangle	install-linux.sh
+	chaco		install-linux.sh
+	m1qn3		install.sh
+	semic		install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/examples_tests.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/examples_tests.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/examples_tests.sh	(revision 27955)
@@ -0,0 +1,749 @@
+#!/bin/bash
+################################################################################
+# This script runs the examples tests (i.e. contents of examples directory, 
+# which are implementations of the tutorials found at 
+# https://issm.jpl.nasa.gov/documentation/tutorials/). It is intended to be 
+# called from jenkins/jenkins.sh.
+#
+# runme files are modified as needed to fill in statements that would otherwise 
+# be added by user.
+#
+# NOTE:
+# - Indentation of replacement string literals (e.g. 'STEP_EIGHT') is set to 
+#	nest cleanly in this file, but will result in unclean nesting in the runme 
+#	files (which should not be an issue)
+# - Single-line string replacements in runme.m can effectively be performed 
+#	using sed. When performing multi-line replacements, perl is a better 
+#	option.
+#
+# TODO:
+# - Figure out how to remove \ and \n\ from multiline string variables while 
+#	preserving formatting when value is printed to file.
+################################################################################
+
+## Constants
+#
+RUNME_FILE='runme.m'
+RUN_EXAMPLE=0
+STATUS_HANDLING="\
+		disp('SUCCESS');\n\
+	catch me\n\
+		message=getReport(me);\n\
+		fprintf('%s',message);\n\
+		disp('FAILURE');\n\
+	end\n\
+	exit\n\
+"
+
+cd $ISSM_DIR/examples
+
+for dir in ./* ; do
+	if [ -d "${dir}" ]; then
+		# # Temporary short circuit to check single example
+		# example="./AMR"
+		# if [ "${dir}" != "${example}" ]; then
+		# 	continue
+		# fi
+
+		# Some of the examples are incomplete (on purpose). As such, we will 
+		# have to populate the missing steps in order to make sure that 
+		# everything is working.
+
+		cd ${dir}
+		if [ "${dir}" == "./AMR" ]; then
+			sed -i.bak -e '1 s|^.*$|try\n\n&|' $RUNME_FILE
+			RUN_EXAMPLE=1
+		elif [ "${dir}" == "./Data" ]; then
+			echo 'Directory contains datasets only; no example to run.'
+			RUN_EXAMPLE=0
+		elif [ "${dir}" == "./EsaGRACE" ]; then
+			sed -i.bak -e 's|steps=\[1\];|steps=\[1:5\];\n\ntry\n|' $RUNME_FILE
+			RUN_EXAMPLE=1
+		elif [ "${dir}" == "./EsaWahr" ]; then
+			sed -i.bak -e 's|steps=\[1\];|steps=\[1:7\];\n\ntry\n|' $RUNME_FILE
+			RUN_EXAMPLE=1
+		elif [ "${dir}" == "./Functions" ]; then
+			echo "Directory contains functions only; no example to run."
+			RUN_EXAMPLE=0
+		elif [ "${dir}" == "./Greenland" ]; then
+			# STEP_SEVEN #{{{
+			STEP_SEVEN="\
+				if any(steps==7)\n\
+					disp('   Step 7: Historical Relaxation run');\n\
+					md = loadmodel('./Models/Greenland.Control_drag');\n\
+					\n\
+					load smbbox\n\
+					\n\
+					%convert mesh x,y into the Box projection\n\
+					[md.mesh.lat,md.mesh.long]  = xy2ll(md.mesh.x,md.mesh.y,+1,39,71);\n\
+					[xi,yi]= ll2xy(md.mesh.lat,md.mesh.long,+1,45,70);\n\
+					\n\
+					%Interpolate and set surface mass balance\n\
+					index = BamgTriangulate(x1(:),y1(:));\n\
+					smb_mo = InterpFromMeshToMesh2d(index,x1(:),y1(:),smbmean(:),xi,yi);\n\
+					smb = smb_mo*12/1000*md.materials.rho_freshwater/md.materials.rho_ice;\n\
+					md.smb.mass_balance = [smb;1 ];\n\
+					\n\
+					%Set transient options, run for 20 years, saving every 5 timesteps\n\
+					md.timestepping.time_step=0.2;\n\
+					md.timestepping.final_time=200;\n\
+					md.settings.output_frequency=5;\n\
+					\n\
+					%Additional options\n\
+					md.inversion.iscontrol=0;\n\
+					md.transient.requested_outputs={'IceVolume','TotalSmb', ...\n\
+						'SmbMassBalance'};\n\
+					md.verbose=verbose('solution',true,'module',true);\n\
+					\n\
+					%Go solve\n\
+					md.cluster=generic('name',oshostname,'np',2);\n\
+					md=solve(md,'Transient');\n\
+					\n\
+					save ./Models/Greenland.HistoricTransient_200yr md;\n\
+				end\n\
+			"
+			#}}}
+			# STEP_EIGHT #{{{
+			STEP_EIGHT="\
+				if any(steps==8)\n\
+					%Load historic transient model\n\
+					md=loadmodel('./Models/Greenland.HistoricTransient_200yr');\n\
+					\n\
+					%Create Line Plots of relaxation run. Create a figure.\n\
+					figure;\n\
+					\n\
+					%Save surface mass balance, by looping through 200 years (1000 steps)\n\
+					%Note, the first output will always contain output from time step 1\n\
+					surfmb=[];\n\
+					for i=2:201;\n\
+						surfmb=[surfmb md.results.TransientSolution(i).SmbMassBalance];\n\
+					end\n\
+					\n\
+					%Plot surface mass balance time series in first subplot\n\
+					subplot(3,1,1);\n\
+					plot([1:200],mean(surfmb));\n\
+					\n\
+					%Title this plot Mean surface mass balance\n\
+					title('Mean Surface mass balance');\n\
+					\n\
+					%Save velocity by looping through 200 years\n\
+					vel=[];\n\
+					for i=2:201;\n\
+						vel=[vel md.results.TransientSolution(i).Vel];\n\
+					end\n\
+					\n\
+					%Plot velocity time series in second subplot\n\
+					subplot(3,1,2);\n\
+					plot([1:200],mean(vel));\n\
+					\n\
+					%Title this plot Mean Velocity\n\
+					title('Mean Velocity');\n\
+					\n\
+					%Save Ice Volume by looping through 200 years\n\
+					volume=[];\n\
+					for i=2:201;\n\
+						volume=[volume md.results.TransientSolution(i).IceVolume];\n\
+					end\n\
+					\n\
+					%Plot volume time series in third subplot\n\
+					subplot(3,1,3);\n\
+					plot([1:200],volume);\n\
+					\n\
+					%Title this plot Mean Velocity and add an x label of years\n\
+					title('Ice Volume');\n\
+					xlabel('years');\n\
+				end\n\
+			"
+			#}}}
+			sed -i.bak -e 's|steps=\[1\];|steps=\[1:8\];\n\ntry\n|' $RUNME_FILE
+			perl -0755 -p -i -e "s|if any\(steps==7\).*% step 7 end|${STEP_SEVEN}|s" $RUNME_FILE
+			perl -0755 -p -i -e "s|if any\(steps==8\).*% step 8 end|${STEP_EIGHT}|s" $RUNME_FILE
+			RUN_EXAMPLE=1
+		elif [ "${dir}" == "./IceBridge" ]; then
+			sed -i.bak -e 's|steps=\[1\];|steps=\[1:5\];\n\ntry\n|' $RUNME_FILE
+			perl -0755 -p -i -e "s|\n\t%Mesh greenland without.*return;\n||s" $RUNME_FILE
+			RUN_EXAMPLE=1
+		elif [ "${dir}" == "./IceflowModels" ]; then
+			sed -i.bak -e '1 s|^.*$|try\n\n&|' $RUNME_FILE
+			RUN_EXAMPLE=1
+		elif [ "${dir}" == "./Inversion" ]; then
+			sed -i.bak -e 's|steps=\[1\];|steps=\[1:4\];\n\ntry\n|' $RUNME_FILE
+			RUN_EXAMPLE=1
+		elif [ "${dir}" == "./ISMIP" ]; then
+			# TODO:
+			# - Run test again with ISMIPF configuration (will likely need to 
+			#	add conditional after 'RUN_EXAMPLE -eq 1' block)
+			#
+
+			# RUNME #{{{
+			RUNME="\
+				try\n\
+					%which steps to perform; steps are from 1 to 8\n\
+					%step 7 is specific to ISMIPA\n\
+					%step 8 is specific to ISMIPF\n\
+					\n\
+					steps=[1:7]; %ISMIPA\n\
+					%steps=[1:6,8]; %ISMIPF\n\
+					\n\
+					% parameter file to be used, choose between IsmipA.par or IsmipF.par\n\
+					ParamFile='IsmipA.par';\n\
+					%ParamFile='IsmipF.par';\n\
+					\n\
+					%Run Steps\n\
+					\n\
+					%Mesh Generation #1\n\
+					if any(steps==1)\n\
+						%initialize md as a new model #help model\n\
+						%->\n\
+						md=model();\n\
+						% generate a squaremesh #help squaremesh\n\
+						% Side is 80 km long with 20 points\n\
+						%->\n\
+						if(ParamFile=='IsmipA.par'),\n\
+							md=squaremesh(md,80000,80000,20,20);\n\
+						elseif(ParamFile=='IsmipF.par'),\n\
+							md=squaremesh(md,100000,100000,30,30);\n\
+						end\n\
+						% plot the given mesh #plotdoc\n\
+						%->\n\
+						plotmodel(md,'data','mesh')\n\
+						% save the given model\n\
+						%->\n\
+						save ./Models/ISMIP.Mesh_generation md;\n\
+					end\n\
+					\n\
+					%Masks #2\n\
+					if any(steps==2)\n\
+						% load the preceding step #help loadmodel\n\
+						% path is given by the organizer with the name of the given step\n\
+						%->\n\
+						md = loadmodel('./Models/ISMIP.Mesh_generation');\n\
+						% set the mask #help setmask\n\
+						% all MISMIP nodes are grounded\n\
+						%->\n\
+						md=setmask(md,'','');\n\
+						% plot the given mask #md.mask to locate the field\n\
+						%->\n\
+						plotmodel(md,'data',md.mask.ocean_levelset);\n\
+						% save the given model\n\
+						%->\n\
+						save ./Models/ISMIP.SetMask md;\n\
+					end\n\
+					\n\
+					%Parameterization #3\n\
+					if any(steps==3)\n\
+						% load the preceding step #help loadmodel\n\
+						% path is given by the organizer with the name of the given step\n\
+						%->\n\
+						md = loadmodel('./Models/ISMIP.SetMask');\n\
+						% parametrize the model # help parameterize\n\
+						% you will need to fil-up the parameter file defined by the\n\
+						% ParamFile variable\n\
+						%->\n\
+						md=parameterize(md,ParamFile);\n\
+						% save the given model\n\
+						%->\n\
+						save ./Models/ISMIP.Parameterization md;\n\
+					end\n\
+					\n\
+					%Extrusion #4\n\
+					if any(steps==4)\n\
+						\n\
+						% load the preceding step #help loadmodel\n\
+						% path is given by the organizer with the name of the given step\n\
+						%->\n\
+						md = loadmodel('./Models/ISMIP.Parameterization');\n\
+						% vertically extrude the preceding mesh #help extrude\n\
+						% only 5 layers exponent 1\n\
+						%->\n\
+						md=extrude(md,5,1);\n\
+						% plot the 3D geometry #plotdoc\n\
+						%->\n\
+						plotmodel(md,'data',md.geometry.base)\n\
+						% save the given model\n\
+						%->\n\
+						save ./Models/ISMIP.Extrusion md;\n\
+					end\n\
+					\n\
+					%Set the flow computing method #5\n\
+					if any(steps==5)\n\
+						\n\
+						% load the preceding step #help loadmodel\n\
+						% path is given by the organizer with the name of the given step\n\
+						%->\n\
+						md = loadmodel('./Models/ISMIP.Extrusion');\n\
+						% set the approximation for the flow computation #help setflowequation\n\
+						% We will be using the Higher Order Model (HO)\n\
+						%->\n\
+						md=setflowequation(md,'HO','all');\n\
+						% save the given model\n\
+						%->\n\
+						save ./Models/ISMIP.SetFlow md;\n\
+					end\n\
+					\n\
+					%Set Boundary Conditions #6\n\
+					if any(steps==6)\n\
+						\n\
+						% load the preceding step #help loadmodel\n\
+						% path is given by the organizer with the name of the given step\n\
+						%->\n\
+						md = loadmodel('./Models/ISMIP.SetFlow');\n\
+						% dirichlet boundary condition are known as SPCs\n\
+						% ice frozen to the base, no velocity	#md.stressbalance\n\
+						% SPCs are initialized at NaN one value per vertex\n\
+						%->\n\
+						md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);\n\
+						%->\n\
+						md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);\n\
+						%->\n\
+						md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);\n\
+						% extract the nodenumbers at the base #md.mesh.vertexonbase\n\
+						%->\n\
+						basalnodes=find(md.mesh.vertexonbase);\n\
+						% set the sliding to zero on the bed\n\
+						%->\n\
+						md.stressbalance.spcvx(basalnodes)=0.0;\n\
+						%->\n\
+						md.stressbalance.spcvy(basalnodes)=0.0;\n\
+						% periodic boundaries have to be fixed on the sides\n\
+						% Find the indices of the sides of the domain, for x and then for y\n\
+						% for x\n\
+						% create maxX, list of indices where x is equal to max of x (use >> help find)\n\
+						%->\n\
+						maxX=find(md.mesh.x==max(md.mesh.x));\n\
+						% create minX, list of indices where x is equal to min of x\n\
+						%->\n\
+						minX=find(md.mesh.x==min(md.mesh.x));\n\
+						% for y\n\
+						% create maxY, list of indices where y is equal to max of y\n\
+						% but not where x is equal to max or min of x\n\
+						% (i.e, indices in maxX and minX should be excluded from maxY and minY)\n\
+						% but not where x is equal to max or min of x\n\
+						%->\n\
+						maxY=find(md.mesh.y==max(md.mesh.y) & md.mesh.x~=max(md.mesh.x) & md.mesh.x~=min(md.mesh.x));\n\
+						% create minY, list of indices where y is equal to max of y\n\
+						%->\n\
+						minY=find(md.mesh.y==min(md.mesh.y) & md.mesh.x~=max(md.mesh.x) & md.mesh.x~=min(md.mesh.x));\n\
+						% set the node that should be paired together, minX with maxX and minY with maxY\n\
+						% #md.stressbalance.vertex_pairing\n\
+						%->\n\
+						md.stressbalance.vertex_pairing=[minX,maxX;minY,maxY];\n\
+						if (ParamFile=='IsmipF.par')\n\
+							% if we are dealing with IsmipF the solution is in\n\
+							% masstransport\n\
+							md.masstransport.vertex_pairing=md.stressbalance.vertex_pairing;\n\
+						end\n\
+						% save the given model\n\
+						%->\n\
+						save ./Models/ISMIP.BoundaryCondition md;\n\
+					end\n\
+					\n\
+					%Solving #7\n\
+					if any(steps==7)\n\
+						% load the preceding step #help loadmodel\n\
+						% path is given by the organizer with the name of the given step\n\
+						%->\n\
+						md = loadmodel('./Models/ISMIP.BoundaryCondition');\n\
+						% Set cluster #md.cluster\n\
+						% generic parameters #help generic\n\
+						% set only the name and number of process\n\
+						%->\n\
+						md.cluster=generic('name',oshostname(),'np',2);\n\
+						% Set which control message you want to see #help verbose\n\
+						%->\n\
+						md.verbose=verbose('convergence',true);\n\
+						% Solve #help solve\n\
+						% we are solving a StressBalanc\n\
+						%->\n\
+						md=solve(md,'Stressbalance');\n\
+						% save the given model\n\
+						%->\n\
+						save ./Models/ISMIP.StressBalance md;\n\
+						% plot the surface velocities #plotdoc\n\
+						%->\n\
+						plotmodel(md,'data',md.results.StressbalanceSolution.Vel)\n\
+					end\n\
+					\n\
+					%Solving #8\n\
+					if any(steps==8)\n\
+						% load the preceding step #help loadmodel\n\
+						% path is given by the organizer with the name of the given step\n\
+						%->\n\
+						md = loadmodel('./Models/ISMIP.BoundaryCondition');\n\
+						% Set cluster #md.cluster\n\
+						% generic parameters #help generic\n\
+						% set only the name and number of process\n\
+						%->\n\
+						md.cluster=generic('name',oshostname(),'np',2);\n\
+						% Set which control message you want to see #help verbose\n\
+						%->\n\
+						md.verbose=verbose('convergence',true);\n\
+						% set the transient model to ignore the thermal model\n\
+						% #md.transient \n\
+						%->\n\
+						md.transient.isthermal=0;\n\
+						% define the timestepping scheme\n\
+						% everything here should be provided in years #md.timestepping\n\
+						% give the length of the time_step (4 years)\n\
+						%->\n\
+						md.timestepping.time_step=4;\n\
+						% give final_time (20*4 years time_steps)\n\
+						%->\n\
+						md.timestepping.final_time=4*20;\n\
+						% Solve #help solve\n\
+						% we are solving a TransientSolution\n\
+						%->\n\
+						md=solve(md,'Transient');\n\
+						% save the given model\n\
+						%->\n\
+						save ./Models/ISMIP.Transient md;\n\
+						% plot the surface velocities #plotdoc\n\
+						%->\n\
+						plotmodel(md,'data',md.results.TransientSolution(20).Vel)\n\
+					end\n\
+			"
+			#}}}
+			# PAR_A #{{{
+			PAR_A="\
+				%Parameterization for ISMIP A experiment\n\
+				\n\
+				%Set the Simulation generic name #md.miscellaneous\n\
+				%->\n\
+				\n\
+				%Geometry\n\
+				disp('   Constructing Geometry');\n\
+				\n\
+				%Define the geometry of the simulation #md.geometry\n\
+				%surface is [-x*tan(0.5*pi/180)] #md.mesh\n\
+				%->\n\
+				md.geometry.surface=-md.mesh.x*tan(0.5*pi/180.);\n\
+				%base is [surface-1000+500*sin(x*2*pi/L).*sin(y*2*pi/L)]\n\
+				%L is the size of the side of the square #max(md.mesh.x)-min(md.mesh.x)\n\
+				%->\n\
+				L=max(md.mesh.x)-min(md.mesh.x);\n\
+				md.geometry.base=md.geometry.surface-1000.0+500.0*sin(md.mesh.x*2.0*pi/L).*sin(md.mesh.y*2.0*pi/L);\n\
+				%thickness is the difference between surface and base #md.geometry\n\
+				%->\n\
+				md.geometry.thickness=md.geometry.surface-md.geometry.base;\n\
+				%plot the geometry to check it out\n\
+				%->\n\
+				plotmodel(md,'data',md.geometry.thickness);\n\
+				\n\
+				disp('   Defining friction parameters');\n\
+				\n\
+				%These parameters will not be used but need to be fixed #md.friction\n\
+				%one friciton coefficient per node (md.mesh.numberofvertices,1)\n\
+				%->\n\
+				md.friction.coefficient=200.0*ones(md.mesh.numberofvertices,1);\n\
+				%one friciton exponent (p,q) per element\n\
+				%->\n\
+				md.friction.p=ones(md.mesh.numberofelements,1);\n\
+				%->\n\
+				md.friction.q=ones(md.mesh.numberofelements,1);\n\
+				\n\
+				disp('   Construct ice rheological properties');\n\
+				\n\
+				%The rheology parameters sit in the material section #md.materials\n\
+				%B has one value per vertex\n\
+				%->\n\
+				md.materials.rheology_B=6.8067e7*ones(md.mesh.numberofvertices,1);\n\
+				%n has one value per element\n\
+				%->\n\
+				md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);\n\
+				\n\
+				disp('   Set boundary conditions');\n\
+				\n\
+				%Set the default boundary conditions for an ice-sheet \n\
+				% #help SetIceSheetBC\n\
+				%->\n\
+				md=SetIceSheetBC(md);\n\
+			"
+			#}}}
+			# PAR_F #{{{
+			PAR_F="\
+				%Parameterization for ISMIP F experiment\n\
+				\n\
+				%Set the Simulation generic name #md.miscellaneous\n\
+				%->\n\
+				\n\
+				%Geometry\n\
+				disp('   Constructing Geometry');\n\
+				\n\
+				%Define the geometry of the simulation #md.geometry\n\
+				%surface is [-x*tan(3.0*pi/180)] #md.mesh\n\
+				%->\n\
+				md.geometry.surface=-md.mesh.x*tan(3.0*pi/180.0);\n\
+				%base is [surface-1000+100*exp(-((x-L/2).^2+(y-L/2).^2)/(10000.^2))]\n\
+				%L is the size of the side of the square #max(md.mesh.x)-min(md.mesh.x)\n\
+				%->\n\
+				L=max(md.mesh.x)-min(md.mesh.x);\n\
+				%->\n\
+				md.geometry.base=md.geometry.surface-1000.0+100.0*exp(-((md.mesh.x-L/2.0).^2.0+(md.mesh.y-L/2.0).^2.0)/(10000.^2.0));\n\
+				%thickness is the difference between surface and base #md.geometry\n\
+				%->\n\
+				md.geometry.thickness=md.geometry.surface-md.geometry.base;\n\
+				%plot the geometry to check it out\n\
+				%->\n\
+				plotmodel(md,'data',md.geometry.thickness);\n\
+				\n\
+				disp('   Defining friction parameters');\n\
+				\n\
+				%These parameters will not be used but need to be fixed #md.friction\n\
+				%one friciton coefficient per node (md.mesh.numberofvertices,1)\n\
+				%conversion from year to seconds with #md.constants.yts\n\
+				%->\n\
+				md.friction.coefficient=sqrt(md.constants.yts/(1000*2.140373*10^-7))*ones(md.mesh.numberofvertices,1);\n\
+				%one friciton exponent (p,q) per element\n\
+				%->\n\
+				md.friction.p=ones(md.mesh.numberofelements,1);\n\
+				%->\n\
+				md.friction.q=zeros(md.mesh.numberofelements,1);\n\
+				\n\
+				disp('   Construct ice rheological properties');\n\
+				\n\
+				%The rheology parameters sit in the material section #md.materials\n\
+				%B has one value per vertex\n\
+				%->\n\
+				md.materials.rheology_B=(1/(2.140373*10^-7/md.constants.yts))*ones(md.mesh.numberofvertices,1);\n\
+				%n has one value per element\n\
+				%->\n\
+				md.materials.rheology_n=1*ones(md.mesh.numberofelements,1);\n\
+				\n\
+				disp('   Set boundary conditions');\n\
+				\n\
+				%Set the default boundary conditions for an ice-sheet \n\
+				% #help SetIceSheetBC\n\
+				%->\n\
+				md=SetIceSheetBC(md);\n\
+				\n\
+				disp('   Initializing velocity and pressure');\n\
+				\n\
+				%initialize the velocity and pressurefields of #md.initialization\n\
+				%->\n\
+				md.initialization.vx=zeros(md.mesh.numberofvertices,1);\n\
+				%->\n\
+				md.initialization.vy=zeros(md.mesh.numberofvertices,1);\n\
+				%->\n\
+				md.initialization.vz=zeros(md.mesh.numberofvertices,1);\n\
+				%->\n\
+				md.initialization.pressure=zeros(md.mesh.numberofvertices,1);\n\
+			"
+			#}}}
+			perl -0755 -p -i'.bak' -e "s|^.*$|${RUNME}|s" $RUNME_FILE
+			perl -0755 -p -i'.bak' -e "s|^.*$|${PAR_A}|s" IsmipA.par
+			perl -0755 -p -i'.bak' -e "s|^.*$|${PAR_F}|s" IsmipF.par
+			RUN_EXAMPLE=1
+		elif [ "${dir}" == "./Jakobshavn" ]; then
+			sed -i.bak -e 's|steps=\[1\];|steps=\[1:4\];\n\ntry\n|' $RUNME_FILE
+			RUN_EXAMPLE=1
+		elif [ "${dir}" == "./LcurveAnalysis" ]; then
+			sed -i.bak -e 's|steps=\[1\];|steps=\[1:4\];\n\ntry\n|' $RUNME_FILE
+			RUN_EXAMPLE=1
+		elif [ "${dir}" == "./Mesh" ]; then
+			# NOTE: Cannot test exptool region selection without GUI
+			#
+
+			# RUNME #{{{
+			RUNME="\
+				try\n\
+					steps=[1:7];\n\
+					\n\
+					if any(steps==1) % Model\n\
+						md=model;\n\
+					end\n\
+					\n\
+					if any(steps==2) % squaremesh\n\
+						md=squaremesh(md,100,200,15,25);\n\
+						plotmodel(md,'data','mesh');\n\
+					end\n\
+					\n\
+					if any(steps==3) % roundmesh\n\
+						md=roundmesh(model,100,10);\n\
+						plotmodel(md,'data','mesh');\n\
+					end\n\
+					\n\
+					if any(steps==4) % triangle\n\
+						md=triangle(model,'Square.exp',.2);\n\
+						plotmodel(md,'data','mesh');\n\
+					end\n\
+					\n\
+					if any(steps==5) % bamg\n\
+						md=bamg(model,'domain','Square.exp','hmax',.05);\n\
+						plotmodel(md,'data','mesh');\n\
+					end\n\
+					\n\
+					if any(steps==6) % Non-Uniform mesh\n\
+						hvertices=[0.2;0.2;0.005;0.2];\n\
+						md=bamg(md,'domain','Square.exp','hvertices',hvertices);\n\
+						plotmodel(md,'data','mesh');\n\
+					end\n\
+					\n\
+					if any(steps==7) % Mesh adaptation\n\
+						md=bamg(model,'domain','Square.exp','hmax',.05);\n\
+						vel=shock(md.mesh.x,md.mesh.y);\n\
+						plotmodel(md,'data',vel,'edgecolor','w');\n\
+						\n\
+						md=bamg(model,'domain','Square.exp','hmax',.005);\n\
+						vel=shock(md.mesh.x,md.mesh.y);\n\
+						md=bamg(md,'field',vel,'err',0.05,'hmin',0.005,'hmax',0.3);\n\
+						vel=shock(md.mesh.x,md.mesh.y);\n\
+						plotmodel(md,'data',vel,'edgecolor','w');\n\
+						\n\
+						md=bamg(model,'domain','Square.exp','hmax',.005);\n\
+						vel=shock(md.mesh.x,md.mesh.y);\n\
+						md=bamg(md,'field',vel,'err',0.03,'hmin',0.005,'hmax',0.3,'gradation',3);\n\
+						vel=shock(md.mesh.x,md.mesh.y);\n\
+						plotmodel(md,'data',vel,'edgecolor','w');\n\
+						\n\
+						md=bamg(model,'domain','Square.exp','hmax',.005);\n\
+						vel=shock(md.mesh.x,md.mesh.y);\n\
+						md=bamg(md,'field',vel,'err',0.03,'hmin',0.005,'hmax',0.3,'gradation',1.3,'anisomax',1);\n\
+						vel=shock(md.mesh.x,md.mesh.y);\n\
+						plotmodel(md,'data',vel,'edgecolor','w');\n\
+					end\n\
+					\n\
+					if any(steps==8) % Mesh refinement in a specific region\n\
+						plotmodel(md,'data',vel,'edgecolor','w');\n\
+						exptool('refinement.exp');\n\
+						h=NaN*ones(md.mesh.numberofvertices,1);\n\
+						in=ContourToNodes(md.mesh.x,md.mesh.y,'refinement.exp',1);\n\
+						h(find(in))=0.02;\n\
+						plotmodel(md,'data',in,'edgecolor','w');\n\
+						\n\
+						vel=shock(md.mesh.x,md.mesh.y);\n\
+						md=bamg(md,'field',vel,'err',0.03,'hmin',0.005,'hmax',0.3,'hVertices',h);\n\
+						vel=shock(md.mesh.x,md.mesh.y);\n\
+						plotmodel(md,'data',vel,'edgecolor','w');\n\
+					end\n\
+			"
+			#}}}
+			touch $RUNME_FILE
+			perl -0755 -p -i'.bak' -e "s|^.*$|${RUNME}|s" $RUNME_FILE
+			RUN_EXAMPLE=1
+		elif [ "${dir}" == "./Pig" ]; then
+			# STEP_SIX #{{{
+			STEP_SIX="\
+				if any(steps==6)\n\
+					% Load Model\n\
+					md = loadmodel('./Models/PIG_Control_drag');\n\
+					% Disable inversion\n\
+					md.inversion.iscontrol=0;\n\
+					% Extrude Mesh\n\
+					disp('   Extruding mesh');\n\
+					number_of_layers=3;\n\
+					md=extrude(md,number_of_layers,1);\n\
+					% Set Flowequation\n\
+					disp('   Using HO Ice Flow Model');\n\
+					md=setflowequation(md,'HO','all');\n\
+					% Solve\n\
+					md=solve(md,'Stressbalance');\n\
+					% Save Model\n\
+					save ./Models/PIG_ModelHO md;\n\
+				end\n\
+			"
+			#}}}
+			mv ./DomainOutline.bkp ./DomainOutline.exp > /dev/null 2>&1
+			sed -i.bak -e 's|steps=\[1\];|steps=\[1:7\];\ntry\n|' $RUNME_FILE
+			perl -0755 -p -i -e "s|if any\(steps==6\).*% step 6 end|${STEP_SIX}|s" $RUNME_FILE
+			RUN_EXAMPLE=1
+		elif [ "${dir}" == "./Pig2" ]; then
+			STEP_NINE="\n disp('Needs work!'); exit"
+			sed -i.bak -e 's|steps=\[1\];|steps=\[1:9\];\n\ntry\n|' $RUNME_FILE
+			perl -0755 -p -i -e "s|if any\(steps==9\).*% step 9 end|${STEP_NINE}|s" $RUNME_FILE
+			RUN_EXAMPLE=0
+		elif [ "${dir}" == "./PigSensitivity" ]; then
+			# STEP_FOUR # {{{
+			STEP_FOUR="\
+				if any(steps==4)\n\
+					%Load model\n\
+					md = loadmodel('./Models/PIG_Transient');\n\
+					\n\
+					%Change external forcing basal melting rate and surface mass balance)\n\
+					md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);\n\
+					md.basalforcings.floatingice_melting_rate=25*ones(md.mesh.numberofvertices,1);\n\
+					md.smb.mass_balance=2*md.smb.mass_balance;\n\
+					\n\
+					%Define time steps and time span of the simulation\n\
+					md.timestepping.time_step=0.1;\n\
+					md.timestepping.final_time=10;\n\
+					\n\
+					%Request additional outputs\n\
+					md.transient.requested_outputs={'default','IceVolume','IceVolumeAboveFloatation'};\n\
+					\n\
+					%Solve\n\
+					md=solve(md,'Transient');\n\
+					\n\
+					%Plot\n\
+					plotmodel(md, 'data', md.results.TransientSolution(1).Vel,...\n\
+						'title#1', 'Velocity t=0 years (m/yr)',...\n\
+						'data', md.results.TransientSolution(end).Vel,...\n\
+						'title#2', 'Velocity t=10 years (m/yr)',...\n\
+						'data', md.results.TransientSolution(1).MaskOceanLevelset,...\n\
+						'title#3', 'Floating ice t=0 years',...\n\
+						'data', md.results.TransientSolution(end).MaskOceanLevelset,...\n\
+						'title#4', 'Floating ice t=10 years',...\n\
+						'caxis#1',([0 4500]),'caxis#2',([0 4500]),...\n\
+						'caxis#3',([-1,1]),'caxis#4',([-1,1]));\n\
+					\n\
+					%Save model\n\
+					save ./Models/PIG_SMB md;\n\
+				end\n\
+			"
+			#}}}
+			sed -i.bak -e 's|steps=\[1\];|steps=\[1:4\];\n\ntry\n|' $RUNME_FILE
+			perl -0755 -p -i -e "s|if any\(steps==4\).*% step 4 end|${STEP_FOUR}|s" $RUNME_FILE
+			RUN_EXAMPLE=1
+		elif [ "${dir}" == "./shakti" ]; then
+			sed -i.bak -e 's|steps=\[1:3\];|steps=\[1:3\];\n\ntry\n|' $RUNME_FILE
+			RUN_EXAMPLE=1
+		elif [ "${dir}" == "./SlrFarrell" ]; then
+			# TODO: Convert from md.slr
+			sed -i.bak -e 's|steps=\[1\];|steps=\[1:5\];\n\ntry\n|' $RUNME_FILE
+			RUN_EXAMPLE=0
+		elif [ "${dir}" == "./SlrGRACE" ]; then
+			# TODO: Convert from md.slr
+			sed -i.bak -e 's|steps=\[1\];|steps=\[1:7\];\n\ntry\n|' $RUNME_FILE
+			RUN_EXAMPLE=0
+		elif [ "${dir}" == "./SlrGRACE_NIMS" ]; then
+			# TODO: Convert from md.slr
+			sed -i.bak -e 's|steps=\[1\];|steps=\[1:8\];\n\ntry\n|' $RUNME_FILE
+			RUN_EXAMPLE=0
+		elif [ "${dir}" == "./SquareIceShelf" ]; then
+			sed -i.bak -e '1 s|^.*$|try\n\n&|' $RUNME_FILE
+			RUN_EXAMPLE=1
+		elif [ "${dir}" == "./UncertaintyQuantification" ]; then
+			sed -i.bak -e 's|steps=\[1\];|steps=\[1:7\];\n\ntry\n|' $RUNME_FILE
+			RUN_EXAMPLE=1
+		else
+			echo "Not implemented yet!"
+			exit 1
+		fi
+
+		if [ $RUN_EXAMPLE -eq 1 ]; then
+			echo "Testing example: $(basename $dir)"
+			LOG_RUNME_FILE="matlab_log_$(basename $dir)_examples.log"
+			echo -e ${STATUS_HANDLING} >> ${RUNME_FILE}
+			$MATLAB_PATH/bin/matlab -nodisplay -nosplash -r "addpath $ISSM_DIR/src/m/dev; devpath; addpath $ISSM_DIR/nightlylog/; runme" -logfile $ISSM_DIR/nightlylog/$LOG_RUNME_FILE
+			echo "starting: $(basename $dir)" >> $ISSM_DIR/nightlylog/matlab_log_examples.log
+			cat $ISSM_DIR/nightlylog/$LOG_RUNME_FILE >> $ISSM_DIR/nightlylog/matlab_log_examples.log
+			echo "finished: $(basename $dir)" >> $ISSM_DIR/nightlylog/matlab_log_examples.log
+			mv -f ${RUNME_FILE}.bak ${RUNME_FILE}
+		fi
+
+		# Extra clean up
+		if [ "${dir}" == "./ISMIP" ]; then
+			mv -f IsmipA.par.bak IsmipA.par
+			mv -f IsmipF.par.bak IsmipF.par
+		fi
+
+		if [ "${dir}" == "./Mesh" ]; then
+			rm -f $RUNME_FILE
+		fi
+
+		if [ "${dir}" == "./Pig" ]; then
+			mv -f DomainOutline.exp DomainOutline.bkp
+		fi
+
+		cd ..
+	fi
+done
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/index.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/index.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/index.html	(revision 27955)
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html lang="en">
+    <head>
+        <meta charset="UTF-8">
+        <title>Index</title>
+        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
+        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
+        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"></link>
+        <script type="text/javascript" src="../../../bin/issm-bin.js"> </script>
+        <script type="text/javascript" src="../../../bin/IssmModule.js"> </script>
+        <script type="text/javascript" src="../../../bin/issm-prebin.js"> </script>
+        <script type="text/javascript" src="../../../test/Exp/Square.js"></script>
+        <script type="text/javascript" src="../../../test/Par/SquareShelfConstrained.js"></script>
+        <script type="text/javascript" src="../../../test/Data/SquareShelfConstrained.data.js"></script>
+        <script src="./scripts/runscript.js"></script>
+
+        <style>
+            .btn.btn-primary {
+                margin: 5px;
+            }
+        </style>
+    </head>
+
+    <body>
+        <div class="container">
+            <div class="row btn-container"></div>
+            <div class="row center-block" id="debug"></div>
+        </div>
+    </body>
+</html>
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/karma.conf.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/karma.conf.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/karma.conf.js	(revision 27955)
@@ -0,0 +1,78 @@
+// Karma configuration
+module.exports = function(config) {
+  config.set({
+
+    basePath: './', 
+
+    // frameworks to use
+    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
+    frameworks: ['jasmine-jquery', 'jasmine'],
+
+
+    // list of files / patterns to load in the browser
+    files: [
+      './../../../externalpackages/emscripten/src/node/4.1.1_64bit/lib/node_modules/jquery/dist/jquery.min.js',
+      './../../../externalpackages/emscripten/src/node/4.1.1_64bit/lib/node_modules/mathjs/dist/math.min.js',
+      'lib/Exp/Square.js',
+      'lib/Par/SquareShelfConstrained.js',
+      'lib/Data/SquareShelfConstrained.data.js',
+      'scripts/specs/issm.spec.js',
+      './../../../bin/issm-bin.js',
+      './../../../bin/issm-prebin.js',
+      './../../../bin/IssmModule.js'
+      //'scripts/specs/temp.spec.js'
+      //'scripts/specs/3.spec.js'
+    ],
+
+    // list of files to exclude
+    exclude: [
+    ],
+
+
+    // preprocess matching files before serving them to the browser
+    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
+    preprocessors: {
+    },
+
+
+    // test results reporter to use
+    // possible values: 'dots', 'progress'
+    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
+    reporters: ['dots', 'junit'],
+    junitReporter: {
+        outputFile: 'test-results.xml'
+    },
+
+
+    // web server port
+    port: 9876,
+
+
+    // enable / disable colors in the output (reporters and logs)
+    colors: true,
+
+
+    // level of logging
+    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
+    logLevel: config.LOG_INFO,
+
+
+    // enable / disable watching file and executing tests whenever any file changes
+    autoWatch: false,
+
+
+    // start these browsers
+    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
+    //browsers: ['Chrome'],
+    browsers: ['Firefox'],
+
+
+    // Continuous Integration mode
+    // if true, Karma captures browsers, runs the tests and exits
+    singleRun: true,
+
+    // Concurrency level
+    // how many browser should be started simultaneous
+    concurrency: Infinity
+  });
+};
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/karmalog
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/karmalog	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/karmalog	(revision 27955)
@@ -0,0 +1,96 @@
+[33m25 05 2016 12:30:24.724:WARN [karma]: [39mNo captured browser, open http://localhost:9876/
+[32m25 05 2016 12:30:24.739:INFO [karma]: [39mKarma v0.13.22 server started at http://localhost:9876/
+[32m25 05 2016 12:30:24.748:INFO [launcher]: [39mStarting browser PhantomJS
+[32m25 05 2016 12:30:24.761:INFO [launcher]: [39mStarting browser Chrome
+[32m25 05 2016 12:30:25.074:INFO [PhantomJS 2.1.1 (Linux 0.0.0)]: [39mConnected on socket /#i_VVBy7PWCXJ5G9nAAAA with id 65168602
+[32m25 05 2016 12:30:25.680:INFO [Chrome 50.0.2661 (Linux 0.0.0)]: [39mConnected on socket /#qVA7hCT_IQ1EwaMFAAAB with id 22865988
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2KLOG: 'creating model'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2KLOG: 'meshing'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2KPhantomJS 2.1.1 (Linux 0.0.0) test101 contains test101 FAILED
+	TypeError: undefined is not a function (evaluating 'Module.HEAPF64.slice(indexptr /8, indexptr/8 + nel*3)') in /home/andy/Programming/Research/runtest2/lib/bin/issm-binaries.js (line 11457)
+	TriMesh@/home/andy/Programming/Research/runtest2/lib/bin/issm-binaries.js:11457:36
+	triangle@/home/andy/Programming/Research/runtest2/lib/bin/issm-binaries.js:6734:26
+	/home/andy/Programming/Research/runtest2/scripts/helpers/1.spec.js:7:17
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) (0 secs / 0.207 secs)
+[1A[2KPhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+
+[1A[2K[1A[2KPhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: 'creating model'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: 'meshing'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: 'parameterization'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: '      boundary conditions for stressbalance model: setting spc as zero'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: '      no smb.mass_balance specified: values set as zero'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: '      no basalforcings.groundedice_melting_rate specified: values set as zero'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: '      no basalforcings.floatingice_melting_rate specified: values set as zero'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: '      no balancethickness.thickening_rate specified: values set as zero'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: 'marshalling file test101.bin'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: 'running issm locally'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: ''
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: 'Ice Sheet System Model (ISSM) version  4.9'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: '(website: http://issm.jpl.nasa.gov contact: issm@jpl.nasa.gov)'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: ''
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: 'call computational core:'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: '   computing new velocity'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: '   computing velocities'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: ''
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: '??? Error in ==> /Users/larour/issm-trunks/trunk-jpl-js/src/c/./classes/Elements/Element.cpp:941'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: 'GetInputListOnNodes error message: Input IceMaskNodeActivation not found in element'
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) LOG: ''
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 0 of 1 SUCCESS (0 secs / 0 secs)
+[1A[2K[1A[2KChrome 50.0.2661 (Linux 0.0.0) test101 contains test101 FAILED
+	Error: ReadData error message: cannot read data of type 0
+	    at Error (native)
+	    at ReadData (/home/andy/Programming/Research/runtest2/lib/bin/issm-binaries.js:10905:14)
+	    at parseresultsfrombuffer (/home/andy/Programming/Research/runtest2/lib/bin/issm-binaries.js:10831:12)
+	    at loadresultsfrombuffer (/home/andy/Programming/Research/runtest2/lib/bin/issm-binaries.js:10770:13)
+	    at solve (/home/andy/Programming/Research/runtest2/lib/bin/issm-binaries.js:11057:8)
+	    at Object.<anonymous> (/home/andy/Programming/Research/runtest2/scripts/helpers/1.spec.js:15:12)
+PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) (0 secs / 3.247 secs)
+[1A[2K[1A[2KPhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.046 secs / 0.207 secs)
+Chrome 50.0.2661 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (3.302 secs / 3.247 secs)
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/package.json
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/package.json	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/package.json	(revision 27955)
@@ -0,0 +1,16 @@
+{
+  "devDependencies": {
+    "jquery": "^3.0.0",
+    "karma": "^0.13.22",
+    "karma-chrome-launcher": "^1.0.1",
+    "karma-firefox-launcher": "^1.0.0",
+    "karma-jasmine": "^1.0.2",
+    "karma-jasmine-jquery": "^0.1.1",
+    "karma-junit-reporter": "^1.0.0",
+    "karma-phantomjs-launcher": "^1.0.1",
+    "karma-requirejs": "^1.0.0",
+    "mathjs": "^3.2.1",
+    "phantomjs-prebuilt": "^2.1.7",
+    "requirejs": "^2.2.0"
+  }
+}
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/m2js.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/m2js.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/m2js.sh	(revision 27955)
@@ -0,0 +1,101 @@
+#!/bin/bash
+
+# Translates trivial ISSM tests from MATLAB to JavaScript
+
+for INFILE in "$@"; do
+    if ! [[ $INFILE == *.m ]]; then
+        echo "Error: Invalid input file detected. Only MATLAB files are accepted as input."
+        echo "Instead, found $INFILE."
+        echo "Exiting..."
+        exit
+    fi
+
+    OUTFILE=$(dirname $INFILE)/$(basename $INFILE .m).js
+    cp $INFILE $OUTFILE
+
+    printf "Translating to $OUTFILE..."
+    TRIANGLEMODELPATH=$(grep '^.*triangle.*' $OUTFILE | awk -F "," '{print $(NF-1)}' | cut -d ')' -f 1)
+
+    if [[ -n $TRIANGLEMODELPATH ]]; then
+        TRIANGLEMODEL=$(basename $TRIANGLEMODELPATH | sed 's/\..*//' | tr A-Z a-z)
+        TRIANGLEVAL=$(grep '^.*triangle.*' $OUTFILE | awk -F "," '{print $NF}' | cut -d ')' -f 1)
+        sed -i "s/\s*triangle.*/triangle(md,$TRIANGLEMODEL[0],$TRIANGLEVAL);/" $OUTFILE # triangle statement
+    fi
+
+
+    sed -i 's/.*setmask\(.*\)/setmask\1/' $OUTFILE # setmask
+
+    sed -i 's:%://:g' $OUTFILE # comments
+    sed -i 's/{/[/g' $OUTFILE # left curly brace to bracket
+    sed -i 's/}/]/g' $OUTFILE # right curly brace to bracket
+
+
+    sed -i 's/.*parameterize.*/parameterize(md);/' $OUTFILE # parameterize
+    sed -i 's/^.*\(extrude\)\(.*\)/md\.\1\2/' $OUTFILE # extrude
+
+    sed -i '/.*solve.*/! s/^md\s*=\s*//' $OUTFILE # remove md= unless it calls solve
+
+    sed -i 's:^md\.cluster=generic.*://&:' $OUTFILE # comment out oshostname
+
+    sed -i 'N;s/\.\.\.//g' $OUTFILE # JavaScript lets you have multiline statments without explicit indicators
+
+    sed -i 's/md\.results\..*Solution/&[0]/' $OUTFILE # actual results are stored in the 0th index of the solution
+
+    sed -i 's/\(.*\)(:)\s*=\s*\([^;]*\);$/for (var i = 0; i < \1.length; ++i) {\n\t\1[i] = \2;\n}/' $OUTFILE
+
+    sed -i 's/\(.*\)(\([0-9]*\):\([0-9]*\))\s*=\s*\([^;]*\)/for (var i = \2; i < \3; ++i) {\n\t\1[i] = \4\n}/' $OUTFILE
+
+    sed -i 's/\(.*\)\s*=\s*find(\(.*\))/\1=[];\nfor (var i = 0; i < \2.length; ++i) {\n\tif (\2[i] !== 0)\n\t\t\1.push(i);\n}/' $OUTFILE # matlab's find creates an array of the indices with nonzero elements
+
+    sed -i 's/[^%]*if\s\(.*\)$/if (\1) {/' $OUTFILE #if statement
+    sed -i 's/else/} & {/' $OUTFILE #else
+
+    sed -i 's/end/}/' $OUTFILE #closing block
+
+    if grep 'zeros(.*)' $OUTFILE; then
+        sed -i '2s/^/function zeros(...args) {\n\tvar array = [];\n\tfor (var i = 0; i < args[0]; ++i) {\n\t\tarray.push(args.length == 1 ? 0 : zeros(args.slice(1)));\n\t}\n\treturn array;\n}\nvar md = new model();\n/' $OUTFILE
+    fi # include zeros function to generate matrices of zeros
+
+
+    #sed -i "s/\([^']\)NaN\([^']\)/\1null\2/g" $OUTFILE # NaN translates to null
+
+    sed -i 's/function\s\(.*\)\s*=\s*\(.*\)(\(.*\)/this.\2 = function(\3)/' $OUTFILE
+
+    sed -i 's/(self,*\(.*\))/(\1)/' $OUTFILE
+
+    sed -i 's/classdef\s*\(.*\)/function \1() {/' $OUTFILE # Classes not in javascript - implemented as functions
+
+    sed -i 's/properties (\(.*\))/\/\/properties (\1)/' $OUTFILE #properties block
+    sed -i 's/^\(\s*\)methods.*/\1\/\/&/' $OUTFILE #methods block declaraion
+
+    sed -i 's/md\s*=\s*checkfield\(.*\)/checkfield\1/' $OUTFILE #checkfield
+
+    sed -i 's/\(\s*\)error(/\1console.error(/' $OUTFILE #error -> console.error
+
+    sed -i 's/switch \(.*\)/switch(\1) {/' $OUTFILE # switch statement
+    sed -i 's/case \(.*\)/&:/' $OUTFILE # case x
+    sed -i '$!N;/switch/!s/\n\s*case .*$/break\;&/;P;D' $OUTFILE
+    sed -i 's/otherwise/default:/' $OUTFILE # default case
+    sed -i '$!N;s/\n\s*default:\s*$/break\;&/;P;D' $OUTFILE # add break before default case
+    sed -i 'N;s/\(\s*\)\(.*\)break\;/\1\2\n\1break\;/' $OUTFILE # make break its own line
+
+    perl -i -pe 's/(varargin\[)(\d+)/$1.($2-1)/e' $OUTFILE # matlab starts its indices at 1, javascript at 0
+
+    sed -i 's/self/this/g' $OUTFILE # self -> this
+    sed -i 's/md\.transient/md.trans/g' $OUTFILE # self -> this
+
+    sed -i 's/function(\([^ ]*\))/function(\1) {/' $OUTFILE
+
+    #sed -i 's/\(\d+\)\^\(\d+\)/Math.pow(\1,\2)/' $OUTFILE
+    sed -i 's/\([0-9]*\)\^\([0-9]*\)/Math.pow(\1,\2)/g' $OUTFILE
+
+    #if [[ $OUTFILE == test*.js ]]; then
+    sed -i '2s/^/var md = new model();\n/' $OUTFILE # initialize the model
+    #fi
+
+    #sed -i 'N;s/properties.*\n\s*\(.*\)\(\s*\)=\s*\(.*\)/this/' $OUTFILE
+
+    #zeros - make it work for all args
+    #power function (10+5^-10)
+    printf "completed.\n"
+done
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/reload-tests.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/reload-tests.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/reload-tests.sh	(revision 27955)
@@ -0,0 +1,2 @@
+# Create hard links for tests
+ln $ISSM_DIR/test/NightlyRun/*.js .
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/run-server.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/run-server.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/run-server.sh	(revision 27955)
@@ -0,0 +1,3 @@
+# Run a file server for serving the tests
+PORT="${1:-8081}"
+python2.7 -m SimpleHTTPServer $PORT
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/runme.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/runme.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/runme.js	(revision 27955)
@@ -0,0 +1,18 @@
+$(document).ready(function() {
+    $.ajaxSetup({
+        cache: true
+    });
+
+    var PORT=8080;
+    var tests = [];
+
+    for (var i = 101; i < 109; ++i) {
+        tests.push(i);
+    }
+
+    $.each(tests, function(i, v) {
+        $.getScript('http://localhost:'+PORT+'/test'+v+'.js', function(src, status) {
+            console.log('='.repeat(30));
+        });
+    });
+});
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/runscript.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/runscript.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/runscript.js	(revision 27955)
@@ -0,0 +1,53 @@
+$(document).ready(function() {
+    $.ajaxSetup({
+        cache: true
+    });
+
+    var PORT=80;
+    var tests = []; //last test to check
+
+    // Adding translated tests to array. Hardcoded for now.
+    for (var i = 101; i < 109; ++i) {
+        tests.push(i);
+    }
+
+    for (var i = 111; i < 115; ++i) {
+        tests.push(i);
+    }
+
+    for (var i = 201; i < 209; ++i) {
+        tests.push(i);
+    }
+
+
+    $.each(tests, function(i, v) {
+        var btn = $('<input type="button" class="btn btn-primary" value="test'+v+'" id="test'+v+'"/>');
+        $(".btn-container").append(btn);
+    });
+
+    $("[id^=test]").each(function () {
+        $(this).click(function () {
+            $('#debug').empty();
+            var id = this.id.replace(/[^\d]/g, ''); 
+            $.getScript('../../../test/NightlyRun/test'+id+'.js', function(src, status) {
+                console.log('='.repeat(30));
+                console.log('Status: ' + status);
+                console.log('Script executed: test' + id + '.js');
+            });
+        });
+    });
+
+    //Show console log in div
+    if (typeof console  != "undefined") 
+        if (typeof console.log != 'undefined')
+            console.olog = console.log;
+    else
+        console.olog = function() {};
+
+    console.log = function(message) {
+        console.olog(message);
+        $('#debug').append('<p>' + message + '</p>');
+    };
+
+    console.error = console.debug = console.info =  console.log;
+});
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/specs/generate-spec.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/specs/generate-spec.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/specs/generate-spec.sh	(revision 27955)
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+if [ -z $1 ]; then
+        echo "Usage: $0 [NUMBER[-NUMBER]][,NUMBER[-NUMBER]]..."
+        exit 1
+fi
+
+# Create array to store numbers of the tests
+TESTNUMBERS=()
+
+# Location of test scripts
+SCRIPTDIR=$ISSM_DIR/jenkins/javascript/karma/scripts
+
+OLDIFS=$IFS
+IFS=, # Overwrite the in-field-separator to detect ranges of numbers as numbers separated by commas
+
+# Add the test numbers to the array
+for range in $1; do
+    if [[ ! "$range" =~ "-" ]]; then # check if it is a range of numbers or just a single number
+        if [ ! -f "$SCRIPTDIR/test$range.js" ]; then
+            >&2 echo "Warning: test$num.js does not exist."
+        else
+            TESTNUMBERS+=($range)
+        fi
+    else
+        SEQUENCE=($(seq -w -s ' ' $(sed "s/-/$IFS/" <<< ${range})))
+
+        IFS=' '
+        for num in ${SEQUENCE[@]}; do
+            if [ ! -f "$SCRIPTDIR/test$num.js" ]; then
+                >&2 echo "Warning: test$num.js does not exist."
+            fi
+        done
+
+        TESTNUMBERS=("${TESTNUMBERS[@]}" "${SEQUENCE[@]}")
+    fi
+done
+
+IFS=$OLDIFS # Reset the in-field-separator
+
+# Include necessary functions and constants
+cat << EOF
+window.jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; // Change timeout for Jasmine tests
+var AJAX_TIMEOUT = 5000;
+function onAjaxSuccess(data, status, jqxhr) {
+    console.log("Success");
+}
+function onAjaxError(jqxhr, status, err) {
+    console.log("Unexpected error: " + err);
+}
+EOF
+
+# Create stubs for individual tests
+for num in ${TESTNUMBERS[@]}; do
+cat  << EOF
+describe("test$num", function() {
+    it("contains test$num", function(done) {
+        $.ajax({
+            url: 'http://localhost:8080/test$num.js',
+            dataType: 'script',
+            success: onAjaxSuccess,
+            error: onAjaxError,
+            complete: function(jqxhr, status) { done(); },
+            timeout: AJAX_TIMEOUT
+        });
+    });
+});
+EOF
+done
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/specs/issm-ajax.spec.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/specs/issm-ajax.spec.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/specs/issm-ajax.spec.js	(revision 27955)
@@ -0,0 +1,23 @@
+window.jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; // Change timeout for Jasmine tests
+var AJAX_TIMEOUT = 5000;
+
+function onAjaxSuccess(data, status, jqxhr) {
+    console.log("Success");
+}
+
+function onAjaxError(jqxhr, status, err) {
+    console.log("Unexpected error: " + err);
+}
+
+describe("test101", function() {
+    it("contains test101", function(done) {
+        $.ajax({
+            url: 'http://localhost:8080/test101.js',
+            dataType: 'script',
+            success: onAjaxSuccess,
+            error: onAjaxError,
+            complete: function(jqxhr, status) { done(); },
+            timeout: AJAX_TIMEOUT
+        });
+    });
+});
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/specs/issm.spec.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/specs/issm.spec.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/specs/issm.spec.js	(revision 27955)
@@ -0,0 +1,217 @@
+//var json:any;
+it("should load a fixture", function () {
+    jasmine.getFixtures().fixturesPath = "base/Archives/"
+    var f = readFixtures("Archive101.json");
+    var json = JSON.parse(f);
+    expect(json).toBeDefined();
+    //console.log(json);
+});
+
+describe("test101", function() {
+    it("contains test101", function() {
+        console.log('creating model'); 
+        var md = new model();
+
+        console.log('meshing');
+        triangle(md,square[0],40000); 
+
+        console.log('parameterization');
+        setmask(md,'all','');
+        parameterize(md);
+        setflowequation(md,'SSA','all');
+        md.verbose.solution=2;  md.verbose.convergence=0;
+
+        console.log("MESH");
+        console.log(md.mesh.domaintype());
+
+        md=solve(md,StressbalanceSolutionEnum(),'checkconsistency','no');
+
+        console.log(md.results['StressbalanceSolution'][0]['Vel']);
+    });
+})
+
+//describe("test105", function() {
+    //it("contains test105", function() {
+        ////Test Name: SquareShelfConstrainedMasstransp2d
+        //var md = new model();
+        //triangle(md,square[0],150000.);
+        //setmask(md,'all','');
+        //parameterize(md);
+        //setflowequation(md,'SSA','all');
+        ////md.cluster=generic('name',oshostname(),'np',3);
+        //md=solve(md,MasstransportSolutionEnum());
+
+        ////Fields and tolerances to track changes
+        //field_names     =['Thickness'];
+        //field_tolerances=[1e-13];
+        //field_values=[
+            //(md.results.MasstransportSolution[0].Thickness),
+            //];
+    //});
+//})
+
+//describe("test110", function() {
+    //it("contains test110", function() {
+        ////Test Name: SquareShelfConstrainedTranSSA2d
+        //var md = new model();
+        //triangle(md,square[0],150000.);
+        //setmask(md,'all','');
+        //parameterize(md);
+        //setflowequation(md,'SSA','all');
+        ////md.cluster=generic('name',oshostname(),'np',3);
+        //md.trans.requested_outputs=['IceVolume'];
+
+        //md=solve(md,TransientSolutionEnum());
+
+        ////Fields and tolerances to track changes
+        //field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Volume3'];
+        //field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+            //1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+        //1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+        //field_values=[
+            //(md.results.TransientSolution[0](1).Vx),
+            //(md.results.TransientSolution[0](1).Vy),
+            //(md.results.TransientSolution[0](1).Vel),
+            //(md.results.TransientSolution[0](1).Pressure),
+            //(md.results.TransientSolution[0](1).Base),
+            //(md.results.TransientSolution[0](1).Surface),
+            //(md.results.TransientSolution[0](1).Thickness),
+            //(md.results.TransientSolution[0](1).IceVolume),
+            //(md.results.TransientSolution[0](2).Vx),
+            //(md.results.TransientSolution[0](2).Vy),
+            //(md.results.TransientSolution[0](2).Vel),
+            //(md.results.TransientSolution[0](2).Pressure),
+            //(md.results.TransientSolution[0](2).Base),
+            //(md.results.TransientSolution[0](2).Surface),
+            //(md.results.TransientSolution[0](2).Thickness),
+            //(md.results.TransientSolution[0](2).IceVolume),
+            //(md.results.TransientSolution[0](3).Vx),
+            //(md.results.TransientSolution[0](3).Vy),
+            //(md.results.TransientSolution[0](3).Vel),
+            //(md.results.TransientSolution[0](3).Pressure),
+            //(md.results.TransientSolution[0](3).Base),
+            //(md.results.TransientSolution[0](3).Surface),
+            //(md.results.TransientSolution[0](3).Thickness),
+            //(md.results.TransientSolution[0](3).IceVolume),
+        //];
+    //});
+//})
+
+//describe("test112", function() {
+    //it("contains test112", function() {
+        ////Test Name: SquareShelfConstrainedSurfSlop2d
+        //var md = new model();
+        //triangle(md,square[0],150000.);
+        //setmask(md,'all','');
+        //parameterize(md);
+        //setflowequation(md,'SSA','all');
+        ////md.cluster=generic('name',oshostname(),'np',3);
+        //md=solve(md,SurfaceSlopeSolutionEnum());
+
+        ////Fields and tolerances to track changes
+        //field_names     =['SurfaceSlopeX','SurfaceSlopeY'];
+        //field_tolerances=[1e-13,1e-13];
+        //field_values=[
+            //(md.results.SurfaceSlopeSolution[0].SurfaceSlopeX),
+            //(md.results.SurfaceSlopeSolution[0].SurfaceSlopeY),
+        //];
+    //});
+//})
+
+//describe("test114", function() {
+    //it("contains test114", function() {
+        ////Test Name: SquareShelfConstrainedBedSlop2d
+        //var md = new model();
+        //triangle(md,square[0],150000.);
+        //setmask(md,'all','');
+        //parameterize(md);
+        //setflowequation(md,'SSA','all');
+        ////md.cluster=generic('name',oshostname(),'np',3);
+        //md=solve(md,BedSlopeSolutionEnum());
+
+        ////Fields and tolerances to track changes
+        //field_names     =['BedSlopeX','BedSlopeY'];
+        //field_tolerances=[1e-13,1e-13];
+        //field_values=[
+            //(md.results.BedSlopeSolution[0].BedSlopeX),
+            //(md.results.BedSlopeSolution[0].BedSlopeY),
+        //];
+    //});
+//})
+
+//describe("test201", function() {
+    //it("contains test201", function() {
+        ////Test Name: SquareShelfStressSSA2d
+        //var md = new model();
+        //triangle(md,square[0],150000.);
+        //setmask(md,'all','');
+        //parameterize(md);
+        //setflowequation(md,'SSA','all');
+        ////md.cluster=generic('name',oshostname(),'np',3);
+        //md=solve(md,StressbalanceSolutionEnum());
+
+        ////Fields and tolerances to track changes
+        //field_names     =['Vx','Vy','Vel','Pressure'];
+        //field_tolerances=[1e-13,1e-13,1e-13,1e-13];
+        //field_values=[
+            //(md.results.StressbalanceSolution[0].Vx),
+            //(md.results.StressbalanceSolution[0].Vy),
+            //(md.results.StressbalanceSolution[0].Vel),
+            //(md.results.StressbalanceSolution[0].Pressure),
+        //];
+    //});
+//})
+
+//describe("test208", function() {
+    //it("contains test208", function() {
+        ////Test Name: SquareShelfTranSSA2d
+        //var md = new model();
+        //triangle(md,square[0],150000.);
+        //setmask(md,'all','');
+        //parameterize(md);
+        //setflowequation(md,'SSA','all');
+        ////md.cluster=generic('name',oshostname(),'np',3);
+        //md.trans.requested_outputs=['default','FloatingArea','GroundedArea','TotalGroundedBmb','TotalFloatingBmb'];
+        //for (var i = 0; i < md.basalforcings.floatingice_melting_rate.length; ++i) {
+            //md.basalforcings.floatingice_melting_rate[i] = 1;
+        //}
+        //md=solve(md,TransientSolutionEnum());
+
+        ////Fields and tolerances to track changes
+        //field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','TotalGroundedBmb1','TotalFloatingBmb1',
+            //'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','TotalGroundedBmb2','TotalFloatingBmb2',
+        //'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','TotalGroundedBmb3','TotalFloatingBmb3'];
+        //field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+            //1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+        //1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+        //field_values=[
+            //(md.results.TransientSolution[0](1).Vx),
+            //(md.results.TransientSolution[0](1).Vy),
+            //(md.results.TransientSolution[0](1).Vel),
+            //(md.results.TransientSolution[0](1).Pressure),
+            //(md.results.TransientSolution[0](1).Base),
+            //(md.results.TransientSolution[0](1).Surface),
+            //(md.results.TransientSolution[0](1).Thickness),
+            //(md.results.TransientSolution[0](1).TotalGroundedBmb),
+            //(md.results.TransientSolution[0](1).TotalFloatingBmb),
+            //(md.results.TransientSolution[0](2).Vx),
+            //(md.results.TransientSolution[0](2).Vy),
+            //(md.results.TransientSolution[0](2).Vel),
+            //(md.results.TransientSolution[0](2).Pressure),
+            //(md.results.TransientSolution[0](2).Base),
+            //(md.results.TransientSolution[0](2).Surface),
+            //(md.results.TransientSolution[0](2).Thickness),
+            //(md.results.TransientSolution[0](2).TotalGroundedBmb),
+            //(md.results.TransientSolution[0](2).TotalFloatingBmb),
+            //(md.results.TransientSolution[0](3).Vx),
+            //(md.results.TransientSolution[0](3).Vy),
+            //(md.results.TransientSolution[0](3).Vel),
+            //(md.results.TransientSolution[0](3).Pressure),
+            //(md.results.TransientSolution[0](3).Base),
+            //(md.results.TransientSolution[0](3).Surface),
+            //(md.results.TransientSolution[0](3).Thickness),
+            //(md.results.TransientSolution[0](3).TotalGroundedBmb),
+            //(md.results.TransientSolution[0](3).TotalFloatingBmb),
+        //];
+    //});
+//})
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/test231.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/test231.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/test231.js	(revision 27955)
@@ -0,0 +1,73 @@
+//Test Name: SquareShelfTranForcePos3d
+var md = new model();
+triangle(md,square[0],350000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+//Set up transient
+smb=ones(md.mesh.numberofvertices,1);
+for (var i = 0; i < smb.length; ++i) {
+    smb[i][0] *= 3.6;
+    smb[i].push(smb[i][0]*2);
+}
+
+md.smb.mass_balance=smb.slice();
+md.smb.mass_balance[md.smb.mass_balance.length-1] = [1.5, 3.];
+md.trans.isthermal=0;
+
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', 
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).SmbMassBalance),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).SmbMassBalance),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).SmbMassBalance),
+	(md.results.TransientSolution[0](4).Vx),
+	(md.results.TransientSolution[0](4).Vy),
+	(md.results.TransientSolution[0](4).Vz),
+	(md.results.TransientSolution[0](4).Vel),
+	(md.results.TransientSolution[0](4).Pressure),
+	(md.results.TransientSolution[0](4).Base),
+	(md.results.TransientSolution[0](4).Surface),
+	(md.results.TransientSolution[0](4).Thickness),
+	(md.results.TransientSolution[0](4).SmbMassBalance),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/test232.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/test232.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/test232.js	(revision 27955)
@@ -0,0 +1,31 @@
+//Test Name: SquareShelfTherTranForcTemp
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.thermal.spctemperature=[[md.thermal.spctemperature, md.thermal.spctemperature+5., md.thermal.spctemperature+10., md.thermal.spctemperature+15.], [1.5, 2.5, 3.5, 4.]];
+md.timestepping.time_step=1;
+md.timestepping.final_time=4;
+md.trans.isstressbalance=0;
+md.trans.ismasstransport=0;
+md.trans.issmb=1;
+md.trans.isthermal=1;
+md.trans.isgroundingline=0;
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Temperature1','BasalforcingsGroundediceMeltingRate1','Temperature2','BasalforcingsGroundediceMeltingRate2','Temperature3','BasalforcingsGroundediceMeltingRate3','Temperature4','BasalforcingsGroundediceMeltingRate4'];
+field_tolerances=[1e-13,1e-6,1e-13,1e-6,1e-13,1e-6,1e-13,1e-6];
+field_values=[
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](4).Temperature),
+	(md.results.TransientSolution[0](4).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/test233.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/test233.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/test233.js	(revision 27955)
@@ -0,0 +1,64 @@
+//Test Name: SquareShelfTranHOForcTemp
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.thermal.spctemperature=[[md.thermal.spctemperature, md.thermal.spctemperature+5.], [1., 2.]];
+md.timestepping.time_step=0.5;
+md.timestepping.final_time=2.;
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3', 
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','Temperature4','BasalforcingsGroundediceMeltingRate4'];
+field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09, 
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, 
+	1e-08,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, 
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](4).Vx),
+	(md.results.TransientSolution[0](4).Vy),
+	(md.results.TransientSolution[0](4).Vz),
+	(md.results.TransientSolution[0](4).Vel),
+	(md.results.TransientSolution[0](4).Pressure),
+	(md.results.TransientSolution[0](4).Base),
+	(md.results.TransientSolution[0](4).Surface),
+	(md.results.TransientSolution[0](4).Thickness),
+	(md.results.TransientSolution[0](4).Temperature),
+	(md.results.TransientSolution[0](4).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/test234.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/test234.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/javascript/karma/scripts/test234.js	(revision 27955)
@@ -0,0 +1,93 @@
+//Test Name: SquareShelfTranForceNeg2dDakotaSamp
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+smb=ones(md.mesh.numberofvertices,1);
+for (var i = 0; i < smb.length; ++i) {
+    smb[i][0] *= 3.6;
+    smb[i].push(smb[i][0]*-1);
+}
+
+md.smb.mass_balance= smb.slice();
+md.smb.mass_balance[md.smb.mass_balance.length-1] = [1.5, 3.];
+md.trans.isthermal=0;
+//Dakota options
+
+//dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version.toString().slice(0,2);
+
+//partitioning
+md.qmu.numberofpartitions=20;
+partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');
+md.qmu.partition=md.qmu.partition-1;
+
+//variables
+md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,0.1);
+
+//responses
+md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.IceVolume=response_function('IceVolume',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux1=response_function('indexed_MassFlux_1',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux2=response_function('indexed_MassFlux_2',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux3=response_function('indexed_MassFlux_3',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux4=response_function('indexed_MassFlux_4',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux5=response_function('indexed_MassFlux_5',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.massFlux6=response_function('indexed_MassFlux_6',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+
+//mass flux profiles
+md.qmu.mass_flux_profiles=['../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp'];
+md.qmu.mass_flux_profile_directory=pwd;
+
+////  nond_sampling study
+md.qmu.method=dakota_method('nond_samp');
+md.qmu.method[md.qmu.method.length-1]=dmeth_params_set(md.qmu.method[md.qmu.method.length-1],'seed',1234,'samples',20,'sample_type','lhs');
+dver=textscan(IssmConfig('_DAKOTA_VERSION_'),'//[0123456789].//[0123456789].//[0123456789]');
+if (((str2num(dver[1][1])==4 && str2num(dver[2][1])>2) || str2num(dver[1][1])>4)) {
+	md.qmu.method[md.qmu.method.length-1]=dmeth_params_set(md.qmu.method(end),'rng','rnum2');
+}
+
+//parameters
+md.qmu.params.direct=true;
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.tabular_graphics_data=true;
+md.qmu.isdakota=1;
+
+if (version>=6) {
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+} else {
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+}
+
+
+md.stressbalance.reltol=Math.pow(10,-5); //tighten for qmu analyses
+md.trans.requested_outputs=['IceVolume'];
+
+//solve
+md=solve(md,'Transient','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+//Fields and tolerances to track changes
+md.results.dakota.moments=[];
+for (var i = 0; i < 8; ++i) {
+	md.results.dakota.moments.push(md.results.dakota.dresp_out[i].mean);
+}
+for (var i = 0; i < 8; ++i) {
+	md.results.dakota.moments.push(md.results.dakota.dresp_out[i].stddev);
+}
+field_names     =['moments'];
+field_tolerances=[1e-11];
+field_values=[
+         md.results.dakota.moments,
+	];
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/jenkins.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/jenkins.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/jenkins.sh	(revision 27955)
@@ -0,0 +1,548 @@
+#!/bin/bash
+################################################################################
+# This script manages installation of ISSM on a given Jenkins node using a
+# configuration file passed as the only argument. This file also contains
+# details about which nightly run tests should be executed after the build has
+# been completed. Finally, results of the build and tests are emailed to the
+# members of the ISSM development team.
+#
+# NOTE:
+# - Variable OS is set in environment by running 
+#	`source $ISSM_DIR/etc/environment.sh`.
+#
+# TODO:
+# - Rename TEMP to something more descriptive (ensure first that other parts of
+#	the build system do not rely on this name)
+# - Investigate refactoring parsing of list of changed files
+################################################################################
+
+# Override certain aliases
+alias grep=$(which grep)
+
+echo "Cleaning up execution directory"
+rm -rf ${ISSM_DIR}/execution/*
+rm -rf ${ISSM_DIR}/nightlylog
+mkdir ${ISSM_DIR}/nightlylog
+
+#Server URI
+SERVER='https://ross.ics.uci.edu/jenkins'
+
+# Get configuration
+# Source config file {{{
+if [ $# -ne 1 ]; then
+	#no config file specified: exit
+	echo "no config file specified. Exiting..." >&2 # Error message to stderr.
+	exit 1
+fi
+if [ ! -f "$1" ]; then
+	echo "File $1 not found!" >&2 # Error message to stderr.
+	exit 1
+fi
+
+# Initialize test suite variables (to avoid "-eq: unary operator expected")
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Initialize resource variables (to avoid "i<=: syntax error: operand expected" in for loops)
+NUMCPUS_INSTALL=1
+NUMCPUS_RUN=1
+
+# Source configuration script
+source $1;
+# }}}
+
+if [[ $EXAMPLES_TEST -eq 1 && $MATLAB_TEST+$PYTHON_TEST+$JAVASCRIPT_TEST -ne 0 ]]; then
+	echo "When running examples tests, set *only* EXAMPLES_TEST=1"
+	exit 1
+fi
+
+# Install ISSM
+# Determining installation type depending on svn changes {{{
+echo "======================================================";
+echo "             Determining Installation type            "
+echo "======================================================";
+if [ -a ${ISSM_DIR}/svn_revision_old ]; then
+	SVN_PREVIOUS=$(cat ${ISSM_DIR}/svn_revision_old)
+	SVN_CURRENT=$SVN_REVISION_1
+	echo "Previous revision number: $SVN_PREVIOUS"
+	echo "Current revision number: $SVN_CURRENT"
+
+	# Get list of changed files
+	#
+
+	#svn --non-interactive --no-auth-cache --trust-server-cert diff -r $SVN_PREVIOUS:$SVN_CURRENT --summarize ${ISSM_DIR} | awk '{print $NF}' > ${ISSM_DIR}/TEMP
+
+	# Get list of changes from Jenkins itself as svn requires credentials
+	rm -rf changes
+	wget $SERVER/job/$JOB_NAME/$BUILD_NUMBER/changes > /dev/null 2>&1
+
+	# Process html page and get the list of files that has changed (tricky...)
+	#cat changes | grep '="The file was modified"' | sed -e 's/.*<\/td><td><a>\(.*\)<\/a><\/td><td>.*/\1/' > ${ISSM_DIR}/TEMP
+	#cat changes | grep 'document_edit' |sed -e 's/document_edit.png/document_edit.png\
+		#/g' | sed -e 's/.*<\/a><\/td><td>\(.*\)<\/td><\/tr>.*/\1/' | grep -v 'document_edit.png' > ${ISSM_DIR}/TEMP
+	cat changes | tr " " "\n" | grep trunk | sed -e 's/.*<a>\(.*\)<\/a>.*/\1/' > ${ISSM_DIR}/TEMP
+
+	# Print list of changed files
+	echo "   "
+	echo "List of updated files"
+	cat ${ISSM_DIR}/TEMP
+	echo "   "
+
+	## Determine installation type
+	#
+	echo "Determining installation type"
+
+	# If the contents of the externalpackages directory were modified in any
+	# way, check for changed external packages
+	if [ ! -z "$(cat ${ISSM_DIR}/TEMP | grep externalpackages)" ]; then
+		echo "  -- checking for changed externalpackages... yes"
+		ISSM_EXTERNALPACKAGES="yes"
+	else
+		echo "  -- checking for changed externalpackages... no"
+		ISSM_EXTERNALPACKAGES="no"
+	fi
+
+	# If the Makefile or m4 directory were changed in any way or if certain
+	# binary files from a previous compilation do not exist, reconfigure
+	if [ ! -z "$(cat ${ISSM_DIR}/TEMP | grep -e "Makefile.am" -e "m4" )" ] ||
+		[ ! -f "${ISSM_DIR}/bin/issm.exe" ] && [ ! -f "${ISSM_DIR}/bin/issm-bin.js" ] ||
+		[ "$ISSM_EXTERNALPACKAGES" == "yes" ]; then
+		echo "  -- checking for reconfiguration... yes"
+		ISSM_RECONFIGURE="yes"
+	else
+		echo "  -- checking for reconfiguration... no"
+		ISSM_RECONFIGURE="no"
+	fi
+
+	# If source files were changed in any way, recompile
+	if [ ! -z "$(cat ${ISSM_DIR}/TEMP | grep -e "\.cpp" -e "\.h" )" ] ||
+		[ "$ISSM_RECONFIGURE" == "yes" ]; then
+		echo "  -- checking for recompilation... yes"
+		ISSM_COMPILATION="yes"
+	else
+		echo "  -- checking for recompilation... no"
+		ISSM_COMPILATION="no"
+	fi
+
+	# Cleanup
+	rm changes
+	rm ${ISSM_DIR}/TEMP
+else
+	echo "Previous revision not found, this must be a fresh install"
+	echo "  -- checking for changed externalpackages... yes"
+	echo "  -- checking for reconfiguration... yes"
+	echo "  -- checking for recompilation... yes"
+	ISSM_EXTERNALPACKAGES="yes"
+	ISSM_RECONFIGURE="yes"
+	ISSM_COMPILATION="yes"
+fi
+
+echo " "
+echo "Recording current svn version: $SVN_REVISION_1"
+echo $SVN_REVISION_1 > ${ISSM_DIR}/svn_revision_old
+# }}}
+
+## External Packages
+#
+
+# Number of packages
+NUMPACKAGES=$(($(echo ${EXTERNALPACKAGES} | wc -w ) / 2))
+
+# Jenkins XML files for individual packages
+EXTERNAL_TEST_FILE="${ISSM_DIR}/nightlylog/results/external.xml"
+mkdir -p ${ISSM_DIR}/nightlylog/results
+echo "<testsuite tests=\"$NUMPACKAGES\">" > $EXTERNAL_TEST_FILE
+
+# Need a source here for when builds start midway through installation of externalpackages
+source ${ISSM_DIR}/etc/environment.sh
+
+EXTERNALPACKAGES_FAILED=0;
+
+for ((i=1;i<=$NUMPACKAGES;i++)); do
+	NUM1=$((2*$i-1))
+	NUM2=$((2*$i))
+	PACKAGENAME=$(echo $EXTERNALPACKAGES | cut -d " " -f $NUM1-$NUM1)
+	PACKAGEINST=$(echo $EXTERNALPACKAGES | cut -d " " -f $NUM2-$NUM2)
+
+	# Install if requested or if previous install has not been successful
+	if [ "${ISSM_EXTERNALPACKAGES}" == "yes" ]; then # NOTE: Removed check on if 'install' directory exist
+		cd ${ISSM_DIR}/externalpackages/$PACKAGENAME
+
+		# Do not install package if it already exists
+		#
+		# NOTE: Assumes PREFIX is defined in package installation script
+		#
+		PREFIX=$(egrep "PREFIX=" ./$PACKAGEINST | cut -d'"' -f 2 | envsubst)
+		if [ ! -d "${PREFIX}" ]; then
+			echo "======================================================";
+			echo "       Installing $PACKAGENAME                        ";
+			echo "======================================================";
+
+			./$PACKAGEINST $NUMCPUS_INSTALL &> compil.log
+			if [ $? -ne 0 ] && [ "${PACKAGENAME}" != "boost" ]; then
+				cat compil.log
+				echo "======================================================";
+				echo "    ERROR: installation of $PACKAGENAME failed        ";
+				echo "======================================================";
+				echo "<testcase classname=\"externalpackages\" name=\"$PACKAGENAME\">" >> $EXTERNAL_TEST_FILE
+				echo '<failure message="failure">External packages did not install right. Check it.' >> $EXTERNAL_TEST_FILE
+				cat compil.log >> $EXTERNAL_TEST_FILE
+				echo '</failure>' >> $EXTERNAL_TEST_FILE
+				echo '</testcase>' >> $EXTERNAL_TEST_FILE
+				echo '</testsuite>' >> $EXTERNAL_TEST_FILE
+				exit 1;
+			else
+				echo "<testcase classname=\"externalpackages\" name=\"$PACKAGENAME\"/>" >> $EXTERNAL_TEST_FILE
+			fi
+			source ${ISSM_DIR}/etc/environment.sh
+
+			#If external package is rebuilt, we also need to recompile
+			ISSM_RECONFIGURE="yes"
+			ISSM_COMPILATION="yes"
+		else
+			echo "======================================================";
+			echo "       Skipping $PACKAGENAME                          ";
+			echo "======================================================";
+			echo "<testcase classname=\"externalpackages\" name=\"$PACKAGENAME\"/>" >> $EXTERNAL_TEST_FILE
+		fi
+	else
+		echo "======================================================";
+		echo "       Skipping $PACKAGENAME                          ";
+		echo "======================================================";
+		echo "<testcase classname=\"externalpackages\" name=\"$PACKAGENAME\"/>" >> $EXTERNAL_TEST_FILE
+	fi
+done
+
+echo '</testsuite>' >> $EXTERNAL_TEST_FILE
+
+# Source here to include any newly-installed external packages on the path
+source ${ISSM_DIR}/etc/environment.sh
+
+if [ "${OS}" == CYGWIN* ]; then
+	echo " == WINDOWS ENVIRONMENT DETECTED =="
+	source ${ISSM_DIR}/externalpackages/windows/windows_environment.sh
+fi
+
+# Set CXX/CC flags for JS runs after external packages to avoid conflicts 
+# during their compilation
+#
+# TODO:
+# - Check a different boolean variable as compiling for JavaScript should be
+#	independent from running JavaScript tests (one should be able to do the
+#	former without having to do the latter).
+# - Revisit environment variables (especially EMCC_CFLAGS) once support for
+#	Fortran has been accomplished.
+#
+CXX_PREVIOUS=$CXX
+CC_PREVIOUS=$CC
+if [ $JAVASCRIPT_TEST -eq 1 ]; then
+	export CC=emcc
+	export CXX=em++
+	export AR=emar
+	export RANLIB=emranlib
+	#export EMCC_DEBUG=1 # Uncomment to enable debugging
+	export EMCC_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0" # Required after v1.38.14 to avoid undefined symbol warnings from our Fortran object files being treated as errors
+	source ${ISSM_DIR}/externalpackages/emscripten/install/emsdk_env.sh
+fi
+
+# }}}
+# ISSM compilation yes/no (ISSM_COMPILATION) {{{
+if [ "${ISSM_COMPILATION}" == "yes" ]; then
+	cd $ISSM_DIR
+	if [ "${ISSM_RECONFIGURE}" == "yes" ]; then
+		echo "======================================================";
+		echo "             Cleaning up and reconfiguring            "
+		echo "======================================================";
+		make uninstall
+		make distclean
+		./scripts/automakererun.sh
+		if [ $? -ne 0 ]; then
+			echo "autoreconf failed!"
+			exit 1
+		fi
+		eval "./configure ${ISSM_CONFIG}"
+		if [ $? -ne 0 ]; then
+			echo "ISSM configuration failed (see options below)"
+			echo $ISSM_CONFIG
+			echo "ISSM configuration failed!"
+			exit 1
+		fi
+	fi
+
+	# Compile and install ISSM
+	echo "======================================================"
+	echo "                    Compiling ISSM                    "
+	echo "======================================================"
+	if [ $NUMCPUS_INSTALL -gt 1 ]; then
+		echo "Making with ${NUMCPUS_INSTALL} CPUs"
+
+		# To debug compilation/linking, add 'V=1' option to the call to make
+		#make -j $NUMCPUS_INSTALL V=1
+		make -j $NUMCPUS_INSTALL
+	else
+		#make V=1
+		make
+	fi
+	if [ $? -ne 0 ] && [ $NUMCPUS_INSTALL -gt 1 ]; then
+		echo " "
+		echo "Compilation failed, trying to compile with only one thread"
+		echo " "
+		make
+	fi
+	if [ $? -ne 0 ]; then
+		echo "ISSM_COMPILATION failed!"
+		exit 1
+	fi
+	make install
+elif [ "${ISSM_COMPILATION}" == "no" ]; then
+	echo "Skipping ISSM compilation"
+else
+	echo "ISSM_COMPILATION supported values are: yes and no. Exiting..." >&2 # Redirect error messages to stderr
+	exit 1
+fi
+# }}}
+
+# Restore CC/CXX to their previous values
+export CC=$CC_PREVIOUS
+export CXX=$CXX_PREVIOUS
+
+# MATLAB tests {{{
+if [ $MATLAB_TEST -eq 1 ]; then
+	MINGW=0
+	if [[ $(uname -s) == MINGW* ]]; then
+		MINGW=1
+		if [ -z "${ISSM_DIR_WIN+x}" ]; then
+			export ISSM_DIR_WIN=$(cygpath -w "${ISSM_DIR}")
+		fi
+	fi
+
+	# Launch all tests on different CPUs
+	for (( i=1;i<=$NUMCPUS_RUN;i++ )); do
+		# Launch MATLAB and the nightly run script
+		cat > ${ISSM_DIR}/nightlylog/matlab_run$i.m << EOF
+		warning off %necessary to avoid a log of several Go for parallel runs
+		try,
+			$(if [ "${MATLAB_NROPTIONS}" = "" ]; then
+				echo "runme('output','nightly','rank',${i},'numprocs',${NUMCPUS_RUN});"
+			else
+				echo "runme(${MATLAB_NROPTIONS},'output','nightly','rank',${i},'numprocs',${NUMCPUS_RUN});"
+			fi)
+		catch me,
+			%An error occured, get report and exit
+			message=getReport(me)
+			directory=strsplit(pwd,'/');
+			fid=fopen([issmdir '/nightlylog/matlaberror.log'], 'at');
+			fprintf(fid,'\nMatlab error occured in: %s\n\n',directory{end});
+			fprintf(fid,'%s',message);
+			fclose(fid);
+		end
+		disp('MATLABEXITEDCORRECTLY');
+		exit
+EOF
+		cd $ISSM_DIR/test/NightlyRun
+
+		# NOTE: We redirect all output to logfile in order to catch certain errors. For some reason, this does not work under Windows: the logfile option must be used and process must be run in background
+		if [[ ${MINGW} -eq 1 ]]; then
+			$MATLAB_PATH/bin/matlab -nodesktop -nosplash -nojvm -r "addpath ${ISSM_DIR_WIN}/src/m/dev; devpath; addpath ${ISSM_DIR_WIN}/nightlylog; matlab_run$i" -logfile ${ISSM_DIR_WIN}/nightlylog/matlab_log$i.log &
+		else
+			$MATLAB_PATH/bin/matlab -nodisplay -nosplash -r "addpath ${ISSM_DIR}/src/m/dev; devpath; addpath ${ISSM_DIR}/nightlylog; matlab_run$i" &> ${ISSM_DIR}/nightlylog/matlab_log$i.log &
+		fi
+	done
+
+	# Wait for MATLAB to exit
+	#
+	# TODO:
+	# - Replace by adding -wait option to above calls to matlab?
+	#
+	if [[ ${MINGW} -eq 1 ]]; then
+		sleep 5;
+		echo "Waiting for MATLAB to exit"
+		pid=$(ps -W | grep MATLAB | awk '{print $1}')
+		echo '-----------------------------'
+		echo "pid: ${pid}"
+		echo '-----------------------------'
+
+		# Time out after $max_time seconds because sometimes multiple MATLAB processes get locked in race condition
+		timer=0
+		max_time=7200
+		while [[ $timer -lt $max_time && -n "${pid}" ]]; do
+			pid=$(ps -W | grep MATLAB | awk '{print $1}')
+			timer=$((timer + 1))
+			sleep 1;
+		done
+
+		# Check if timer hit $max_time
+		if [ $timer -eq $max_time ]; then
+			echo "Testing timed out at ${timer} seconds"
+			# Kill MATLAB processes
+			pid=$(ps -W | grep MATLAB | awk '{print $1}')
+			echo "${pid}" | xargs /bin/kill -f
+			exit 1
+		fi
+	else
+		wait
+	fi
+
+	# Concatenate logs
+	cd $ISSM_DIR/nightlylog
+
+	if [ -f matlab_log.log ]; then
+		rm matlab_log.log
+	fi
+
+	for job in `jobs -p`; do
+		#echo "Waiting on: ${job}" # Commented out because it really has nothing to do with MATLAB processes
+		wait $job
+	done
+
+	for (( i=1;i<=$NUMCPUS_RUN;i++ )); do
+		cat matlab_log$i.log >> matlab_log.log
+	done
+
+	# Filter out Windows characters
+	cat matlab_log.log | tr -cd '\11\12\40-\176' > matlab_log.log2 && mv matlab_log.log2 matlab_log.log
+fi
+# }}}
+
+# Python tests # {{{
+#
+# TODO: Figure out why "Running Python test for Rank $i" is printed twice for each CPU
+#
+if [ $PYTHON_TEST -eq 1 ]; then
+	# Launch all tests on different CPUs
+	export PYTHONPATH="${ISSM_DIR}/src/m/dev"
+	export PYTHONSTARTUP="${PYTHONPATH}/devpath.py"
+	export PYTHONUNBUFFERED=1 # We don't want Python to buffer otherwise issm.exe output is not captured
+	for (( i=1;i<=$NUMCPUS_RUN;i++ ))
+	do
+		cd $ISSM_DIR/test/NightlyRun
+		echo "--------------Running Python test for Rank $i---------------------"
+		./runme.py --output=nightly --rank=$i --numprocs=$NUMCPUS_RUN $PYTHON_NROPTIONS &> $ISSM_DIR/nightlylog/python_log$i.log &
+		echo "--------------Running Python test for Rank $i---------------------"
+	done
+
+	# Concatenate logs
+	cd $ISSM_DIR/nightlylog
+	if [ -f python_log.log ]; then
+		rm python_log.log
+	fi
+
+	for job in `jobs -p`
+	do
+		echo "Waiting on: ${job}"
+		wait $job
+	done
+
+	for (( i=1;i<=$NUMCPUS_RUN;i++ ))
+	do
+		echo "This is the concatenation phase for rank: python_log$i.log"
+		cat python_log$i.log >> python_log.log
+	done
+fi
+# }}}
+
+# Clean up ADOL-C tape files
+rm -f $ISSM_DIR/execution/*/ADOLC-*
+
+# Examples Tests # {{{
+if [ $EXAMPLES_TEST -eq 1 ]; then
+	export MATLAB_PATH
+
+	# Download examples datasets if they are not already present
+	if [[ -z $(ls -A1q $ISSM_DIR/examples/Data) ]]; then
+		$ISSM_DIR/scripts/DownloadExamplesDatasets.sh
+	fi
+
+	$ISSM_DIR/jenkins/examples_tests.sh
+fi
+# }}}
+
+# Process logs to be JUnit compatible # {{{
+cd $ISSM_DIR/nightlylog
+source $ISSM_EXT_DIR/shell2junit/install/bin/sh2ju.sh
+juLogClean
+
+if [ $MATLAB_TEST -eq 1 ]; then
+	# Number tests
+	numtests=`cat matlab_log.log | grep "\-\-\-\-\-\-\-\-starting" | wc -l`
+	testlist=`cat matlab_log.log | grep "\-\-\-\-\-\-\-\-starting" | sed 's/----------------starting://g' | sed 's/-//g'`
+
+	# NOTE: Matching pattern is "----------------starting:<TEST_NUM>-". Note trailing hyphen, which guards against greedy matching of, for example, "2010" when searching for "201".
+	for i in `echo $testlist`; do
+		juLog -test=MATLAB-$i -name=Error -error=ERROR awk "/starting:${i}-/{flag=1;next}/finished:${i}-/{flag=0} flag{print}" matlab_log.log
+		juLog -test=MATLAB-$i -name=Failure -error=FAILURE awk "/starting:${i}-/{flag=1;next}/finished:${i}-/{flag=0} flag{print}" matlab_log.log
+	done
+
+	# Check that MATLAB did not exit in error
+	matlabExitedInError=`grep -E "Activation cannot proceed|Error in|Illegal|Invalid MEX-file|license|Warning: Name is nonexistent or not a directory" matlab_log.log | wc -l`
+
+	if [ $matlabExitedInError -ne 0 ]; then
+		echo "----------MATLAB exited in error!----------"
+		cat matlab_log.log
+		echo "-----------End of matlab_log.log-----------"
+
+		# Clean up execution directory
+		rm -rf $ISSM_DIR/execution/*
+
+		exit 1
+	fi
+fi
+
+if [ $PYTHON_TEST -eq 1 ]; then
+	# Number tests
+	numtests=`cat python_log.log | grep "\-\-\-\-\-\-\-\-starting" | wc -l`
+	testlist=`cat python_log.log | grep "\-\-\-\-\-\-\-\-starting" | sed 's/----------------starting://g' | sed 's/-//g'`
+
+	# NOTE: Matching pattern is "----------------starting:<TEST_NUM>-". Note trailing hyphen, which guards against greedy matching of, for example, "2010" when searching for "201".
+	for i in `echo $testlist`; do
+		juLog -test=PYTHON-$i -name=Error -error=ERROR awk "/starting:${i}-/{flag=1;next}/finished:${i}-/{flag=0} flag{print}" python_log.log
+		juLog -test=PYTHON-$i -name=Failure -error=FAILURE awk "/starting:${i}-/{flag=1;next}/finished:${i}-/{flag=0} flag{print}" python_log.log
+	done
+
+	# Check that Python did not exit in error
+	pythonExitedInError=`grep -c -E "Error|No such file or directory|Permission denied|Standard exception|Traceback|bad interpreter|syntax error" python_log.log`
+
+	if [ $pythonExitedInError -ne 0 ]; then
+		echo "----------Python exited in error!----------"
+		cat python_log.log
+		echo "-----------End of python_log.log-----------"
+
+		# Clean up execution directory
+		rm -rf $ISSM_DIR/execution/*
+
+		exit 1
+	fi
+fi
+
+if [ $EXAMPLES_TEST -eq 1 ]; then
+	# Inexplicably, there are backspace characters in the error output; remove them
+	perl -p -i'.bak' -e 's/\x08//g' matlab_log_examples.log
+
+	numtests=`cat matlab_log_examples.log | grep "starting: " | wc -l`
+	testlist=`cat matlab_log_examples.log | grep "starting: " | sed 's/starting: //'`
+
+	for i in `echo $testlist`; do
+		juLog -test=Example-$i -name=Error -error=ERROR awk "/^starting: ${i}$/{flag=1;next}/^finished: ${i}$/{flag=0} flag{print}" matlab_log_examples.log
+		juLog -test=Example-$i -name=Failure -error=FAILURE awk "/^starting: ${i}$/{flag=1;next}/^finished: ${i}$/{flag=0} flag{print}" matlab_log_examples.log
+	done
+
+	# Check that MATLAB did not exit in error
+	matlabExitedInError=`grep -E "Activation cannot proceed|Error in|Illegal|Invalid MEX-file|license|Warning: Name is nonexistent or not a directory" matlab_log_examples.log | wc -l`
+
+	if [ $matlabExitedInError -ne 0 ]; then
+		echo "----------MATLAB exited in error!----------"
+		cat matlab_log_examples.log
+		echo "-----------End of matlab_log.log-----------"
+
+		# Clean up execution directory
+		rm -rf $ISSM_DIR/execution/*
+
+		exit 1
+	fi
+fi
+
+# Clean up execution directory
+rm -rf $ISSM_DIR/execution/*
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/linux64_caladan
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/linux64_caladan	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/linux64_caladan	(revision 27955)
@@ -0,0 +1,69 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+	--disable-static \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpi" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-python-dir=/usr\
+	--with-python-numpy-dir=/usr/lib/python2.7/dist-packages/numpy\
+	--with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
+	--with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
+	--with-boost-dir=$ISSM_DIR/externalpackages/boost/install/ \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-numthreads=4 \
+	--enable-development \
+	--enable-debugging '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=1
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external packages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools     install.sh
+						cmake        install.sh
+						mpich         install-3.2-linux64.sh
+						petsc         install-3.7-linux64.sh
+						triangle      install-linux64.sh
+						boost         install-1.7-linux.sh
+						dakota        install-6.2-linux64.sh
+						chaco         install-linux.sh
+						m1qn3         install.sh
+						shell2junit   install.sh"
+
+#-----------------#
+# 4: Test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=4
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=2
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+PYTHON_NROPTIONS="--exclude 701 702 435"
+MATLAB_NROPTIONS="'exclude',[701,702,435]"
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/linux64_caladan_ad
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/linux64_caladan_ad	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/linux64_caladan_ad	(revision 27955)
@@ -0,0 +1,59 @@
+#
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION
+ISSM_CONFIG='\
+	--prefix=$ISSM_DIR\
+	--disable-static \
+	--prefix=$ISSM_DIR \
+	--without-kriging \
+	--without-kml \
+	--without-Sealevelchange \
+	--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install \
+	--with-adolc-dir=$ISSM_DIR/externalpackages/adolc/install \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install
+'
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external packages to be installed and their installation scripts
+EXTERNALPACKAGES="
+	autotools	install-linux.sh
+	cmake		install.sh
+	mpich		install-3.2-linux64.sh
+	petsc		install-3.7-linux64.sh
+	gsl			install.sh
+	triangle	install-linux.sh
+	adolc		install.sh
+	shell2junit	install.sh
+"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=2
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=1
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+MATLAB_NROPTIONS="'benchmark','adolc','id',[3001:3019]"
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/linux64_caladan_ampi
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/linux64_caladan_ampi	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/linux64_caladan_ampi	(revision 27955)
@@ -0,0 +1,70 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION
+ISSM_CONFIG='\
+	--prefix=$ISSM_DIR \
+	--disable-static \
+	--without-kriging \
+	--without-kml \
+	--without-Sealevelchange \
+	--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install \
+	--with-adolc-dir=$ISSM_DIR/externalpackages/adolc/install \
+	--with-ampi-dir=$ISSM_DIR/externalpackages/adjoinablempi/install \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpi" \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-numthreads=4 \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9 -lgfortran" \
+	--enable-development
+'
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external packages to be installed and their installation scripts
+EXTERNALPACKAGES="
+	autotools		install-linux.sh
+	cmake			install.sh
+	mpich			install-3.2-linux64.sh
+	petsc			install-3.7-linux64.sh
+	gsl				install.sh
+	triangle		install-linux.sh
+	adjoinablempi	install.sh
+	adolc			install-with_ampi.sh
+	shell2junit		install.sh
+"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=2
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=1
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+MATLAB_NROPTIONS="'benchmark','adolc','id',[3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3119]"
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-basic
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-basic	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-basic	(revision 27955)
@@ -0,0 +1,70 @@
+MATLAB_PATH="/Applications/MATLAB_R2022b.app"
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-fortran-lib="-L/usr/local/Cellar/gcc/13.1.0/lib/gcc/13 -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+# List of external packages to be installed and their installation scripts
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.14-mac.sh
+	triangle	install-mac.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=4
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information
+#
+MATLAB_NROPTIONS="'exclude',[IdFromString('Dakota')]"
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-binaries-matlab
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-binaries-matlab	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-binaries-matlab	(revision 27955)
@@ -0,0 +1,93 @@
+MATLAB_PATH="/Applications/MATLAB_R2022b.app"
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+# NOTE:
+# - We can disable dependency tracking in the Autotools because the binaries
+#	should always be a one-time build.
+#
+# TODO:
+# - Add static copy of libsqlite and make sure it is found during GMT configuration
+#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--enable-standalone-executables \
+	--enable-standalone-modules \
+	--enable-standalone-libraries \
+	--disable-dependency-tracking \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-fortran-lib="/usr/local/Cellar/gcc/13.1.0/lib/gcc/13/libgfortran.a /usr/local/Cellar/gcc/13.1.0/lib/gcc/13/libquadmath.a /usr/local/Cellar/gcc/13.1.0/lib/gcc/13/gcc/x86_64-apple-darwin21/13/libgcc.a" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/hdf5/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.14-mac-static.sh
+	gsl			install-static.sh
+	boost		install-1.7-mac-static.sh
+	dakota		install-6.2-mac-static.sh
+	curl		install-7-mac-static.sh
+	hdf5		install-1-parallel-static.sh
+	netcdf		install-4.7-parallel-static.sh
+	proj		install-6-static.sh
+	gdal		install-3-static.sh
+	gshhg		install.sh
+	gmt			install-6-mac-static.sh
+	gmsh		install-4-mac-static.sh
+	triangle	install-mac-static.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=4
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+PYTHON_NROPTIONS=""
+MATLAB_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-binaries-python-3
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-binaries-python-3	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-binaries-python-3	(revision 27955)
@@ -0,0 +1,93 @@
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+# NOTE:
+# - We can disable dependency tracking in the Autotools because the binaries
+#	should always be a one-time build.
+#
+# TODO:
+# - Add static copy of libsqlite and make sure it is found during GMT configuration
+#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--enable-standalone-executables \
+	--enable-standalone-modules \
+	--enable-standalone-libraries \
+	--disable-dependency-tracking \
+	--with-python-version=3.9 \
+	--with-python-dir=/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9 \
+	--with-python-numpy-dir=/Library/Python/3.9/site-packages/numpy/core/include/numpy \
+	--with-fortran-lib="/usr/local/Cellar/gcc/13.1.0/lib/gcc/13/libgfortran.a /usr/local/Cellar/gcc/13.1.0/lib/gcc/13/libquadmath.a /usr/local/Cellar/gcc/13.1.0/lib/gcc/13/gcc/x86_64-apple-darwin21/13/libgcc.a" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/hdf5/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.14-mac-static.sh
+	gsl			install-static.sh
+	boost		install-1.7-mac-static.sh
+	dakota		install-6.2-mac-static.sh
+	curl		install-7-mac-static.sh
+	hdf5		install-1-parallel-static.sh
+	netcdf		install-4.7-parallel-static.sh
+	proj		install-6-static.sh
+	gdal		install-3-python-static.sh
+	gshhg		install.sh
+	gmt			install-6-mac-static.sh
+	gmsh		install-4-mac-static.sh
+	triangle	install-mac-static.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+PYTHON_NROPTIONS=""
+MATLAB_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-dakota
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-dakota	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-dakota	(revision 27955)
@@ -0,0 +1,102 @@
+# TODO:
+# - Change PROJ installation script to latest version once Jenkins macOS build 
+#	node has been upgraded.
+#
+
+MATLAB_PATH="/Applications/MATLAB_R2022b.app"
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-version=3.9 \
+	--with-python-dir=/System/Volumes/Data/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9 \
+	--with-python-numpy-dir=/Library/Python/3.9/site-packages/numpy/core/include/numpy \
+	--with-fortran-lib="-L/usr/local/Cellar/gcc/13.1.0/lib/gcc/13 -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/hdf5/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+#List of external packages to be installed and their installation scripts
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.14-mac.sh
+	gsl			install.sh
+	boost		install-1.7-mac.sh
+	dakota		install-6.2-mac.sh
+	curl		install-7-mac.sh
+	hdf5		install-1-parallel.sh
+	netcdf		install-4.7-parallel.sh
+	proj		install-6.sh
+	gdal		install-3-python.sh
+	gshhg		install.sh
+	gmt			install-6-mac.sh
+	gmsh		install-4-mac.sh
+	triangle	install-mac.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=1
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=4
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+# NOTE:
+# - Errors are large for tests 234, 235, 418, and 420 under MATLAB
+# - Tests 444 and 445 fail intermittently under MATLAB with "Index exceeds array bounds."
+# - Errors are large for tests 234 418 and 420 under Python
+# - See test417.py for why it is excluded
+# - Test 444 fails intermittently under Python with "IndexError: list index out of range"
+# - Excluding 2006 until it can be debugged (file I/O)
+#
+MATLAB_NROPTIONS="'id',[IdFromString('Dakota')],'exclude',[234 235 418 420 444 445 2006]"
+PYTHON_NROPTIONS="--include_name 'Dakota' --exclude 234 417 418 420 444 445 2006"
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-examples
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-examples	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-examples	(revision 27955)
@@ -0,0 +1,90 @@
+# NOTE:
+# - Same configuration as mac-intel-full
+#
+# TODO:
+# - Change PROJ installation script to latest version once Jenkins macOS build 
+#	node has been upgraded.
+#
+
+MATLAB_PATH="/Applications/MATLAB_R2022b.app"
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-fortran-lib="-L/usr/local/Cellar/gcc/13.1.0/lib/gcc/13 -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/hdf5/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.14-mac.sh
+	gsl			install.sh
+	boost		install-1.7-mac.sh
+	dakota		install-6.2-mac.sh
+	curl		install-7-mac.sh
+	hdf5		install-1-parallel.sh
+	netcdf		install-4.7-parallel.sh
+	proj		install-6.sh
+	gdal		install-3.sh
+	gshhg		install.sh
+	gmt			install-6-mac.sh
+	gmsh		install-4-mac.sh
+	triangle	install-mac.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=1
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=4
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-full
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-full	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-full	(revision 27955)
@@ -0,0 +1,94 @@
+# NOTE: 
+# - This configuration adds solid earth and Dakota capabilities to the basic 
+#	build.
+#
+# TODO:
+# - Change PROJ installation script to latest version once Jenkins macOS build 
+#	node has been upgraded.
+#
+
+MATLAB_PATH="/Applications/MATLAB_R2022b.app"
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-version=3.9 \
+	--with-python-dir=/System/Volumes/Data/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9 \
+	--with-python-numpy-dir=/Library/Python/3.9/site-packages/numpy/core/include/numpy \
+	--with-fortran-lib="-L/opt/homebrew/Cellar/gcc/13.1.0/lib/gcc/13 -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/hdf5/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.14-mac.sh
+	gsl			install.sh
+	boost		install-1.7-mac.sh
+	dakota		install-6.2-mac.sh
+	curl		install-7-mac.sh
+	hdf5		install-1-parallel.sh
+	netcdf		install-4.7-parallel.sh
+	proj		install-6.sh
+	gdal		install-3-python.sh
+	gshhg		install.sh
+	gmt			install-6-mac.sh
+	gmsh		install-4-mac.sh
+	triangle	install-mac.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=4
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-solid_earth
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-solid_earth	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/mac-intel-solid_earth	(revision 27955)
@@ -0,0 +1,102 @@
+# NOTE:
+# - Same configuration as mac-intel-full
+#
+# TODO:
+# - Change PROJ installation script to latest version once Jenkins macOS build 
+#	node has been upgraded.
+#
+
+MATLAB_PATH="/Applications/MATLAB_R2022b.app"
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-version=3.9 \
+	--with-python-dir=/System/Volumes/Data/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9 \
+	--with-python-numpy-dir=/Library/Python/3.9/site-packages/numpy/core/include/numpy \
+	--with-fortran-lib="-L/usr/local/Cellar/gcc/13.1.0/lib/gcc/13 -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/hdf5/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+#List of external packages to be installed and their installation scripts
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.14-mac.sh
+	gsl			install.sh
+	boost		install-1.7-mac.sh
+	dakota		install-6.2-mac.sh
+	curl		install-7-mac.sh
+	hdf5		install-1-parallel.sh
+	netcdf		install-4.7-parallel.sh
+	proj		install-6.sh
+	gdal		install-3-python.sh
+	gshhg		install.sh
+	gmt			install-6-mac.sh
+	gmsh		install-4-mac.sh
+	triangle	install-mac.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=1
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=4
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+# NOTE:
+# - Excluding 2006 until it can be debugged (file I/O)
+# - Excluding 2012 until it can be looked at by Eric ("FindParam error message: Parameter HydrologyModel not set")
+# - Excluding 2091 until it can be debugged (resource starvation)
+#
+MATLAB_NROPTIONS="'benchmark','slc','exclude',[2004 2006 2012 2051 2052 2053 2085 2424 2425]"
+PYTHON_NROPTIONS="--benchmark slc --exclude 2004 2006 2012 2051 2052 2053 2085 2424 2425"
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/mac-silicon-basic
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/mac-silicon-basic	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/mac-silicon-basic	(revision 27955)
@@ -0,0 +1,88 @@
+# NOTE:
+# - Currently, this configuration does not compile the MATLAB API. After 
+#	compiling, you will need to download the ISSM pre-compiled binaries from 
+#	https://issm.jpl.nasa.gov/download/binaries, copy the contents of lib/ to 
+#	$ISSM_DIR/lib-precompiled, then add $ISSM_DIR/lib-precompiled to the path 
+#	in MATLAB.
+#
+# TODO:
+# - Change PROJ installation script to latest version once Jenkins macOS build 
+#	node has been upgraded.
+#
+
+MATLAB_PATH="/Applications/MATLAB_R2022b.app" # NOTE: Although we do not configure/compile MATLAB wrappers, we need to set this variable for testing
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--without-wrappers \
+	--with-numthreads=8 \
+	--with-fortran-lib="-L/opt/homebrew/lib/gcc/current -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+# List of external packages to be installed and their installation scripts
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.17-mac-silicon.sh
+	triangle	install-mac.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=4
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information
+#
+# NOTE:
+# - Tests 430, 441:442, 470:476 excluded because of large errors.
+# - Tests 462-464, 517 excluded because of "Arrays have incompatible sizes for 
+#	this operation."
+# - Test 701:703 excluded because they use full Stokes equations
+#
+MATLAB_NROPTIONS="'exclude',[IdFromString('Dakota'),430,435,441:442,462:464,470:476,517,701:703]"
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/mac-silicon-dakota
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/mac-silicon-dakota	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/mac-silicon-dakota	(revision 27955)
@@ -0,0 +1,108 @@
+# NOTE:
+# - Currently, this configuration does not compile the MATLAB API. After 
+#	compiling, you will need to download the ISSM pre-compiled binaries from 
+#	https://issm.jpl.nasa.gov/download/binaries, copy the contents of lib/ to 
+#	$ISSM_DIR/lib-precompiled, then add $ISSM_DIR/lib-precompiled to the path 
+#	in MATLAB.
+#
+# TODO:
+# - Change PROJ installation script to latest version once Jenkins macOS build 
+#	node has been upgraded.
+#
+
+MATLAB_PATH="/Applications/MATLAB_R2022b.app" # NOTE: Although we do not configure/compile MATLAB wrappers, we need to set this variable for testing
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=8 \
+	--with-python-version=3.9 \
+	--with-python-dir=/System/Volumes/Data/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9 \
+	--with-python-numpy-dir=/Library/Python/3.9/site-packages/numpy/core/include/numpy \
+	--with-fortran-lib="-L/opt/homebrew/lib/gcc/current -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/hdf5/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.17-mac-silicon.sh
+	gsl			install.sh
+	boost		install-1.7-mac.sh
+	dakota		install-6.2-mac.sh
+	curl		install-7-mac.sh
+	hdf5		install-1-parallel.sh
+	netcdf		install-4.7-parallel.sh
+	proj		install-6.sh
+	gdal		install-3-python.sh
+	gshhg		install.sh
+	gmt			install-6-mac.sh
+	gmsh		install-4-mac.sh
+	triangle	install-mac.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=1
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+
+	--with-fortran-lib="-L/opt/homebrew/lib/gcc/current -lgfortran" \
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+# NOTE:
+# - Errors are large for tests 234, 235, 418, and 420 under MATLAB
+# - Tests 444 and 445 fail intermittently under MATLAB with "Index exceeds array bounds."
+# - Errors are large for tests 234 418 and 420 under Python
+# - See test417.py for why it is excluded
+# - Test 444 fails intermittently under Python with "IndexError: list index out of range"
+# - Excluding 2006 until it can be debugged (file I/O)
+#
+MATLAB_NROPTIONS="'id',[IdFromString('Dakota')],'exclude',[234 235 418 420 444 445 2006]"
+PYTHON_NROPTIONS="--include_name 'Dakota' --exclude 234 417 418 420 444 445 2006"
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/mac-silicon-examples
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/mac-silicon-examples	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/mac-silicon-examples	(revision 27955)
@@ -0,0 +1,94 @@
+# NOTE:
+# - Same configuration as mac-silicon-full
+# - Currently, this configuration does not compile the MATLAB API. After 
+#	compiling, you will need to download the ISSM pre-compiled binaries from 
+#	https://issm.jpl.nasa.gov/download/binaries, copy the contents of lib/ to 
+#	$ISSM_DIR/lib-precompiled, then add $ISSM_DIR/lib-precompiled to the path 
+#	in MATLAB.
+#
+# TODO:
+# - Change PROJ installation script to latest version once Jenkins macOS build 
+#	node has been upgraded.
+#
+
+MATLAB_PATH="/Applications/MATLAB_R2022b.app" # NOTE: Although we do not configure/compile MATLAB wrappers, we need to set this variable for testing
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=8 \
+	--with-fortran-lib="-L/opt/homebrew/lib/gcc/current -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/hdf5/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.17-mac-silicon.sh
+	gsl			install.sh
+	boost		install-1.7-mac.sh
+	dakota		install-6.2-mac.sh
+	curl		install-7-mac.sh
+	hdf5		install-1-parallel.sh
+	netcdf		install-4.7-parallel.sh
+	proj		install-6.sh
+	gdal		install-3.sh
+	gshhg		install.sh
+	gmt			install-6-mac.sh
+	gmsh		install-4-mac.sh
+	triangle	install-mac.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=1
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=4
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/mac-silicon-full
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/mac-silicon-full	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/mac-silicon-full	(revision 27955)
@@ -0,0 +1,98 @@
+# NOTE: 
+# - This configuration adds solid earth and Dakota capabilities to the basic 
+#	build.
+# - Currently, this configuration does not compile the MATLAB API. After 
+#	compiling, you will need to download the ISSM pre-compiled binaries from 
+#	https://issm.jpl.nasa.gov/download/binaries, copy the contents of lib/ to 
+#	$ISSM_DIR/lib-precompiled, then add $ISSM_DIR/lib-precompiled to the path 
+#	in MATLAB.
+#
+# TODO:
+# - Change PROJ installation script to latest version once Jenkins macOS build 
+#	node has been upgraded.
+#
+
+MATLAB_PATH="/Applications/MATLAB_R2022b.app" # NOTE: Although we do not configure/compile MATLAB wrappers, we need to set this variable for testing
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=8 \
+	--with-python-version=3.9 \
+	--with-python-dir=/System/Volumes/Data/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9 \
+	--with-python-numpy-dir=/Library/Python/3.9/site-packages/numpy/core/include/numpy \
+	--with-fortran-lib="-L/opt/homebrew/Cellar/gcc/12.2.0/lib/gcc/12 -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/hdf5/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.17-mac-silicon.sh
+	gsl			install.sh
+	boost		install-1.7-mac.sh
+	dakota		install-6.2-mac.sh
+	curl		install-7-mac.sh
+	hdf5		install-1-parallel.sh
+	netcdf		install-4.7-parallel.sh
+	proj		install-6.sh
+	gdal		install-3-python.sh
+	gshhg		install.sh
+	gmt			install-6-mac.sh
+	gmsh		install-4-mac.sh
+	triangle	install-mac.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=4
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/mac-silicon-solid_earth
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/mac-silicon-solid_earth	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/mac-silicon-solid_earth	(revision 27955)
@@ -0,0 +1,105 @@
+# NOTE:
+# - Currently, this configuration does not compile the MATLAB API. After 
+#	compiling, you will need to download the ISSM pre-compiled binaries from 
+#	https://issm.jpl.nasa.gov/download/binaries, copy the contents of lib/ to 
+#	$ISSM_DIR/lib-precompiled, then add $ISSM_DIR/lib-precompiled to the path 
+#	in MATLAB.
+#
+# TODO:
+# - Change PROJ installation script to latest version once Jenkins macOS build 
+#	node has been upgraded.
+#
+
+MATLAB_PATH="/Applications/MATLAB_R2022b.app" # NOTE: Although we do not configure/compile MATLAB wrappers, we need to set this variable for testing
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-python-version=3.9 \
+	--with-python-dir=/System/Volumes/Data/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9 \
+	--with-python-numpy-dir=/Library/Python/3.9/site-packages/numpy/core/include/numpy \
+	--with-fortran-lib="-L/opt/homebrew/lib/gcc/current -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/hdf5/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.17-mac-silicon.sh
+	gsl			install.sh
+	boost		install-1.7-mac.sh
+	dakota		install-6.2-mac.sh
+	curl		install-7-mac.sh
+	hdf5		install-1-parallel.sh
+	netcdf		install-4.7-parallel.sh
+	proj		install-6.sh
+	gdal		install-3-python.sh
+	gshhg		install.sh
+	gmt			install-6-mac.sh
+	gmsh		install-4-mac.sh
+	triangle	install-mac.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=1
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=4
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+# NOTE:
+# - Excluding 2006 until it can be debugged (file I/O)
+# - Excluding 2012 until it can be looked at by Eric ("FindParam error message: Parameter HydrologyModel not set")
+# - Excluding 2091 until it can be debugged (resource starvation)
+# - Excluding 2110:2113 until we can compile MEX modules natively for Silicon and then can debug differences in mesh generation between different platforms
+#
+MATLAB_NROPTIONS="'benchmark','slc','exclude',[2004 2006 2012 2051 2052 2053 2085 2424 2425]"
+PYTHON_NROPTIONS="--benchmark slc --exclude 2004 2006 2012 2051 2052 2053 2085 2110:2113 2424 2425"
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/parsing_rules
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/parsing_rules	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/parsing_rules	(revision 27955)
@@ -0,0 +1,15 @@
+# match line starting with 'error ', case-insensitive
+error /.*\\berror:\\b.*/
+error /FAILURE/
+error /failed/
+
+# list of warnings here...
+warning /[Ww]arning/
+warning /WARNING/
+
+# create a quick access link to lines in the report containing 'INFO'
+info /INFO/
+
+# each line containing 'BUILD' represents the start of a section for grouping errors and warnings found after the line.
+# also creates a quick access link.
+start /BUILD/
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-adolc-ampion
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-adolc-ampion	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-adolc-ampion	(revision 27955)
@@ -0,0 +1,82 @@
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+MATLAB_PATH="/Applications/MATLAB_R2019b.app"
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--without-kriging \
+	--without-kml \
+	--without-Sealevelchange \
+	--without-Love \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-dir=/System/Library/Frameworks/Python.framework/Versions/2.7 \
+	--with-python-numpy-dir=/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy \
+	--with-fortran-lib="-L/usr/local/Cellar/gcc/11.3.0/lib/gcc/11 -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include  \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-ampi-dir=${ISSM_DIR}/externalpackages/adjoinablempi/install \
+	--with-adolc-dir=${ISSM_DIR}/externalpackages/adolc/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+# NOTE: The PETSc libraries are compiled but not used as they conflict with
+#		ADOL-C: PETSc is really just being used as an installer for other
+#		external packages.
+#
+EXTERNALPACKAGES="
+	autotools		install-mac.sh
+	cmake			install.sh
+	petsc			install-3.12-mac.sh
+	gsl				install.sh
+	triangle		install-mac.sh
+	adjoinablempi	install-mac.sh
+	adolc			install-mac-with_ampi.sh
+	shell2junit		install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=1
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation.
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+# NOTE:
+# - test3010 is skipped because it triggers GEMB module and a subsequent
+#	failure on ampioff configuration (really, likely a segmentation fault)
+#
+MATLAB_NROPTIONS="'benchmark','adolc','id',[3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3119],'exclude',3010"
+PYTHON_NROPTIONS="--benchmark=adolc -i 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3101 3102 3103 3104 3105 3106 3107 3108 3109 3119 --exclude=3010"
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-basic
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-basic	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-basic	(revision 27955)
@@ -0,0 +1,73 @@
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+MATLAB_PATH="/Applications/MATLAB_R2018a.app"
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-fortran-lib="-L/usr/local/Cellar/gcc/11.3.0/lib/gcc/11 -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+# List of external packages to be installed and their installation scripts
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.12-mac.sh
+	triangle	install-mac.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=4
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information
+#
+# NOTE:
+# - test701 is skipped because it uses full Stokes equations
+#
+MATLAB_NROPTIONS="'exclude',[IdFromString('Dakota'),435,701,702,703]"
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-binaries-matlab
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-binaries-matlab	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-binaries-matlab	(revision 27955)
@@ -0,0 +1,94 @@
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+# MATLAB path
+MATLAB_PATH="/Applications/MATLAB_R2018a.app"
+
+# NOTE:
+# - We can disable dependency tracking in the Autotools because the binaries
+#	should always be a one-time build.
+#
+# TODO:
+# - Add static copy of libsqlite and make sure it is found during GMT configuration
+#
+
+# ISSM CONFIGURATION
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--enable-standalone-executables \
+	--enable-standalone-modules \
+	--enable-standalone-libraries \
+	--disable-dependency-tracking \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-fortran-lib="/usr/local/Cellar/gcc/11.3.0/lib/gcc/11/libgfortran.a /usr/local/Cellar/gcc/11.3.0/lib/gcc/11/libquadmath.a /usr/local/Cellar/gcc/11.3.0/lib/gcc/11/gcc/x86_64-apple-darwin15/11/libgcc.a" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.12-mac-static.sh
+	gsl			install-static.sh
+	boost		install-1.7-mac-static.sh
+	dakota		install-6.2-mac-static.sh
+	curl		install-7-mac-static.sh
+	netcdf		install-4.7-parallel-static.sh
+	proj		install-6-static.sh
+	gdal		install-3-static.sh
+	gshhg		install.sh
+	gmt			install-6-mac-static.sh
+	gmsh		install-4-mac-static.sh
+	triangle	install-mac-static.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=4
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+PYTHON_NROPTIONS=""
+MATLAB_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-binaries-python-2
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-binaries-python-2	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-binaries-python-2	(revision 27955)
@@ -0,0 +1,92 @@
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+# NOTE:
+# - We can disable dependency tracking in the Autotools because the binaries
+#	should always be a one-time build.
+#
+# TODO:
+# - Add static copy of libsqlite and make sure it is found during GMT configuration
+#
+
+# ISSM CONFIGURATION
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--enable-standalone-executables \
+	--enable-standalone-modules \
+	--enable-standalone-libraries \
+	--disable-dependency-tracking \
+	--with-python-dir=/System/Library/Frameworks/Python.framework/Versions/2.7 \
+	--with-python-numpy-dir=/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy \
+	--with-fortran-lib="/usr/local/Cellar/gcc/11.3.0/lib/gcc/11/libgfortran.a /usr/local/Cellar/gcc/11.3.0/lib/gcc/11/libquadmath.a /usr/local/Cellar/gcc/11.3.0/lib/gcc/11/gcc/x86_64-apple-darwin15/11/libgcc.a" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.12-mac-static.sh
+	gsl			install-static.sh
+	boost		install-1.7-mac-static.sh
+	dakota		install-6.2-mac-static.sh
+	curl		install-7-mac-static.sh
+	netcdf		install-4.7-parallel-static.sh
+	proj		install-6-static.sh
+	gdal		install-3-python-static.sh
+	gshhg		install.sh
+	gmt			install-6-mac-static.sh
+	gmsh		install-4-mac-static.sh
+	triangle	install-mac-static.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+PYTHON_NROPTIONS=""
+MATLAB_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-binaries-python-3
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-binaries-python-3	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-binaries-python-3	(revision 27955)
@@ -0,0 +1,93 @@
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+# NOTE:
+# - We can disable dependency tracking in the Autotools because the binaries
+#	should always be a one-time build.
+#
+# TODO:
+# - Add static copy of libsqlite and make sure it is found during GMT configuration
+#
+
+# ISSM CONFIGURATION
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--enable-standalone-executables \
+	--enable-standalone-modules \
+	--enable-standalone-libraries \
+	--disable-dependency-tracking \
+	--with-python-version=3.4 \
+	--with-python-dir=/Library/Frameworks/Python.framework/Versions/3.4 \
+	--with-python-numpy-dir=/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/numpy \
+	--with-fortran-lib="/usr/local/Cellar/gcc/11.3.0/lib/gcc/11/libgfortran.a /usr/local/Cellar/gcc/11.3.0/lib/gcc/11/libquadmath.a /usr/local/Cellar/gcc/11.3.0/lib/gcc/11/gcc/x86_64-apple-darwin15/11/libgcc.a" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.12-mac-static.sh
+	gsl			install-static.sh
+	boost		install-1.7-mac-static.sh
+	dakota		install-6.2-mac-static.sh
+	curl		install-7-mac-static.sh
+	netcdf		install-4.7-parallel-static.sh
+	proj		install-6-static.sh
+	gdal		install-3-python-static.sh
+	gshhg		install.sh
+	gmt			install-6-mac-static.sh
+	gmsh		install-4-mac-static.sh
+	triangle	install-mac-static.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+PYTHON_NROPTIONS=""
+MATLAB_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-dakota
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-dakota	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-dakota	(revision 27955)
@@ -0,0 +1,99 @@
+# TODO: Change PROJ installation script to latest version once Jenkins macOS 
+#		build node has been upgraded.
+#
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+MATLAB_PATH="/Applications/MATLAB_R2018a.app"
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-dir=/System/Library/Frameworks/Python.framework/Versions/2.7 \
+	--with-python-numpy-dir=/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy \
+	--with-fortran-lib="-L/usr/local/Cellar/gcc/11.3.0/lib/gcc/11 -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+#List of external packages to be installed and their installation scripts
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.12-mac.sh
+	gsl			install.sh
+	boost		install-1.7-mac.sh
+	dakota		install-6.2-mac.sh
+	curl		install-7-mac.sh
+	netcdf		install-4.7-parallel.sh
+	proj		install-6.sh
+	gdal		install-3-python.sh
+	gshhg		install.sh
+	gmt			install-6-mac.sh
+	gmsh		install-4-mac.sh
+	triangle	install-mac.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=1
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=4
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+# NOTE:
+# - Errors are large for tests 234, 235, 418, and 420 under MATLAB
+# - Tests 444 and 445 fail intermittently under MATLAB with "Index exceeds array bounds."
+# - Errors are large for tests 234 418 and 420 under Python
+# - See test417.py for why it is excluded
+# - Test 444 fails intermittently under Python with "IndexError: list index out of range"
+# - Excluding 2006 until it can be debugged (file I/O)
+#
+MATLAB_NROPTIONS="'id',[IdFromString('Dakota')],'exclude',[234 235 418 420 444 445 2006]"
+PYTHON_NROPTIONS="--include_name 'Dakota' --exclude 234 417 418 420 444 445 2006"
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-examples
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-examples	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-examples	(revision 27955)
@@ -0,0 +1,89 @@
+# NOTE: Same configuration as pine_island-mac-full
+#
+# TODO: Change PROJ installation script to latest version once Jenkins macOS 
+#		build node has been upgraded.
+#
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+MATLAB_PATH="/Applications/MATLAB_R2018a.app"
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-dir=/System/Library/Frameworks/Python.framework/Versions/2.7 \
+	--with-python-numpy-dir=/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy \
+	--with-fortran-lib="-L/usr/local/Cellar/gcc/11.3.0/lib/gcc/11 -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.12-mac.sh
+	gsl			install.sh
+	boost		install-1.7-mac.sh
+	dakota		install-6.2-mac.sh
+	curl		install-7-mac.sh
+	netcdf		install-4.7-parallel.sh
+	proj		install-6.sh
+	gdal		install-3-python.sh
+	gshhg		install.sh
+	gmt			install-6-mac.sh
+	gmsh		install-4-mac.sh
+	triangle	install-mac.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=1
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-full
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-full	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-full	(revision 27955)
@@ -0,0 +1,86 @@
+# NOTE: This configuration adds solid earth and Dakota capabilities to the 
+#		basic build.
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+MATLAB_PATH="/Applications/MATLAB_R2018a.app"
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-dir=/System/Library/Frameworks/Python.framework/Versions/2.7 \
+	--with-python-numpy-dir=/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy \
+	--with-fortran-lib="-L/usr/local/Cellar/gcc/11.3.0/lib/gcc/11 -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.17-mac-intel.sh
+	gsl			install.sh
+	boost		install-1.7-mac.sh
+	dakota		install-6.2-mac.sh
+	curl		install-7-mac.sh
+	netcdf		install-4.7-parallel.sh
+	proj		install-6.sh
+	gdal		install-3-python.sh
+	gshhg		install.sh
+	gmt			install-6-mac.sh
+	gmsh		install-4-mac.sh
+	triangle	install-mac.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-full-valgrind
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-full-valgrind	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-full-valgrind	(revision 27955)
@@ -0,0 +1,88 @@
+# NOTE: This configuration adds solid earth and Dakota capabilities to the 
+#		basic build, as well as the ability to debug with Valgrind.
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+MATLAB_PATH="/Applications/MATLAB_R2018a.app"
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-dir=/System/Library/Frameworks/Python.framework/Versions/2.7 \
+	--with-python-numpy-dir=/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy \
+	--with-fortran-lib="-L/usr/local/Cellar/gcc/11.3.0/lib/gcc/11 -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.16-mac.sh
+	gsl			install.sh
+	boost		install-1.7-mac-valgrind.sh
+	dakota		install-6.2-mac.sh
+	curl		install-7-mac.sh
+	netcdf		install-4.7-parallel.sh
+	proj		install-6.sh
+	sqlite		install.sh
+	gdal		install-3-python.sh
+	gshhg		install.sh
+	gmt			install-6-mac.sh
+	gmsh		install-4-mac.sh
+	triangle	install-mac.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	valgrind	install-mac.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-solid_earth
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-solid_earth	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-solid_earth	(revision 27955)
@@ -0,0 +1,96 @@
+# TODO: Change PROJ installation script to latest version once Jenkins macOS 
+#		build node has been upgraded.
+#
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+MATLAB_PATH="/Applications/MATLAB_R2018a.app"
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-dir=/System/Library/Frameworks/Python.framework/Versions/2.7 \
+	--with-python-numpy-dir=/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy \
+	--with-fortran-lib="-L/usr/local/Cellar/gcc/11.3.0/lib/gcc/11 -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+#List of external packages to be installed and their installation scripts
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.12-mac.sh
+	gsl			install.sh
+	boost		install-1.7-mac.sh
+	dakota		install-6.2-mac.sh
+	curl		install-7-mac.sh
+	netcdf		install-4.7-parallel.sh
+	proj		install-6.sh
+	gdal		install-3-python.sh
+	gshhg		install.sh
+	gmt			install-6-mac.sh
+	gmsh		install-4-mac.sh
+	triangle	install-mac.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=1
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=4
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+# NOTE:
+# - Excluding 2006 until it can be debugged (file I/O)
+# - Excluding 2012 until it can be looked at by Eric ("FindParam error message: Parameter HydrologyModel not set")
+# - Excluding 2091 until it can be debugged (resource starvation)
+#
+MATLAB_NROPTIONS="'benchmark','slc','exclude',[2004 2006 2012 2051 2052 2053 2085 2091 2424 2425]"
+PYTHON_NROPTIONS="--benchmark slc --exclude 2004 2006 2012 2051 2052 2053 2085 2091 2424 2425"
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-solid_earth-lambert
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-solid_earth-lambert	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/pine_island-mac-solid_earth-lambert	(revision 27955)
@@ -0,0 +1,95 @@
+# TODO: Change PROJ installation script to latest version once Jenkins macOS 
+#		build node has been upgraded.
+#
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+MATLAB_PATH="/Applications/MATLAB_R2018a.app"
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-dir=/System/Library/Frameworks/Python.framework/Versions/2.7 \
+	--with-python-numpy-dir=/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy \
+	--with-fortran-lib="-L/usr/local/Cellar/gcc/11.3.0/lib/gcc/11 -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+#List of external packages to be installed and their installation scripts
+EXTERNALPACKAGES="
+	autotools	install-mac.sh
+	cmake		install.sh
+	petsc		install-3.12-mac.sh
+	gsl			install.sh
+	boost		install-1.7-mac.sh
+	dakota		install-6.2-mac.sh
+	curl		install-7-mac.sh
+	netcdf		install-4.7-parallel.sh
+	proj		install-6.sh
+	gdal		install-3-python.sh
+	gshhg		install.sh
+	gmt			install-6-mac.sh
+	gmsh		install-4-mac.sh
+	triangle	install-mac.sh
+	chaco		install-mac.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=1
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=4
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+# NOTE:
+# - Excluding 2006 until it can be debugged (file I/O)
+# - Excluding 2091 until it can be debugged (resource starvation)
+#
+MATLAB_NROPTIONS="'benchmark','slc','exclude',[2006 2091]"
+PYTHON_NROPTIONS="--benchmark slc --exclude 2006 2091"
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/pleiades-basic
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/pleiades-basic	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/pleiades-basic	(revision 27955)
@@ -0,0 +1,56 @@
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--with-wrappers=no \
+	--with-petsc-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-m1qn3-dir="${ISSM_DIR}/externalpackages/m1qn3/install" \
+	--with-mpi-include=" " \
+	--with-mpi-libflags=" -lmpi" \
+	--with-mkl-libflags="-L/nasa/intel/Compiler/2016.2.181/mkl/lib/intel64/ -mkl=cluster " \
+	--with-metis-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-mumps-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-scalapack-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-cxxoptflags="-g -O3 -axCORE-AVX2,AVX -xSSE4.2 -ipo -no-inline-min-size -inline-max-size=345 -no-inline-max-total-size -no-inline-max-per-routine -no-inline-max-per-compile " \
+	--with-fortran-lib="-L/nasa/intel/Compiler/2016.2.181/compilers_and_libraries_2016.2.181/linux/compiler/lib/intel64/ -lifcore -lifport" \
+	--with-vendor="intel-pleiades" \
+	--enable-development
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	petsc	install-3.13-pleiades.sh
+	m1qn3	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation.
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/pleiades-dakota
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/pleiades-dakota	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/pleiades-dakota	(revision 27955)
@@ -0,0 +1,67 @@
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=$ISSM_DIR \
+	--enable-development \
+	--enable-standalone-libraries \
+	--with-wrappers=no \
+	--with-vendor="intel-pleiades-mpi" \
+	--with-cxxoptflags="-O3 " \
+	--with-petsc-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-m1qn3-dir="${ISSM_DIR}/externalpackages/m1qn3/install" \
+	--with-boost-dir="${ISSM_DIR}/externalpackages/boost/install" \
+	--with-dakota-dir="${ISSM_DIR}/externalpackages/dakota/install" \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-mpi-include=" " \
+	--with-mpi-libflags=" -lmpi" \
+	--with-mkl-libflags="-L/nasa/intel/Compiler/2018.3.222/compilers_and_libraries_2018.3.222/linux/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm" \
+	--with-metis-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-scalapack-lib="-L/nasa/intel/Compiler/2018.3.222/compilers_and_libraries_2018.3.222/linux/mkl/lib/intel64/libmkl_scalapack_lp64.so" \
+	--with-graphics-lib="/usr/lib64/libX11.so" \
+	--with-fortran-lib="-L/nasa/intel/Compiler/2018.3.222/compilers_and_libraries_2018.3.222/linux/compiler/lib/intel64_lin/ -lifcore -lifport -lgfortran" \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+# NOTE: Python 3 is installed only as a build system for GSL
+EXTERNALPACKAGES="
+	python	install-3-linux.sh
+	petsc	install-3.14-pleiades.sh
+	gsl		install-pleiades.sh
+	boost	install-1.55-pleiades.sh
+	dakota	install-6.2-pleiades.sh
+	m1qn3	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation.
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/pleiades-solid_earth
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/pleiades-solid_earth	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/pleiades-solid_earth	(revision 27955)
@@ -0,0 +1,83 @@
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=$ISSM_DIR \
+	--enable-development \
+	--enable-standalone-libraries \
+	--with-wrappers=no \
+	--with-vendor="intel-pleiades-mpi" \
+	--with-cxxoptflags="-O3 " \
+	--with-petsc-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-m1qn3-dir="${ISSM_DIR}/externalpackages/m1qn3/install" \
+	--with-boost-dir="${ISSM_DIR}/externalpackages/boost/install" \
+	--with-dakota-dir="${ISSM_DIR}/externalpackages/dakota/install" \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-mpi-include=" " \
+	--with-mpi-libflags=" -lmpi" \
+	--with-mkl-libflags="-L/nasa/intel/Compiler/2018.3.222/compilers_and_libraries_2018.3.222/linux/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm" \
+	--with-metis-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-scalapack-lib="-L/nasa/intel/Compiler/2018.3.222/compilers_and_libraries_2018.3.222/linux/mkl/lib/intel64/libmkl_scalapack_lp64.so" \
+	--with-graphics-lib="/usr/lib64/libX11.so" \
+	--with-fortran-lib="-L/nasa/intel/Compiler/2018.3.222/compilers_and_libraries_2018.3.222/linux/compiler/lib/intel64_lin/ -lifcore -lifport -lgfortran" \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+# NOTE:
+# - Python 3 is installed only as a build system for GSL
+# - shell2junit is included to run test suites via jenkins.sh
+#
+EXTERNALPACKAGES="
+	python		install-3-linux.sh
+	petsc		install-3.14-pleiades.sh
+	zlib		install-1.sh
+	hdf5		install-1-parallel.sh
+	gsl			install-pleiades.sh
+	boost		install-1.55-pleiades.sh
+	dakota		install-6.2-pleiades.sh
+	curl		install-7-linux.sh
+	netcdf		install-4.7-parallel.sh
+	sqlite		install.sh
+	proj		install-6.sh
+	gdal		install-3.sh
+	gshhg		install.sh
+	gmt			install-6-linux.sh
+	gmsh		install-4-linux.sh
+	triangle	install-linux.sh
+	chaco		install-linux.sh
+	m1qn3		install.sh
+	semic		install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation.
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-adolc-ampioff
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-adolc-ampioff	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-adolc-ampioff	(revision 27955)
@@ -0,0 +1,81 @@
+MATLAB_PATH="/usr/local/MATLAB/R2019b"
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--without-kriging \
+	--without-kml \
+	--without-Sealevelchange \
+	--without-Love \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-version=3.7 \
+	--with-python-dir=/usr \
+	--with-python-numpy-dir=/usr/local/lib/python3.7/dist-packages/numpy \
+	--with-fortran-lib="-L/usr/lib/x86_64-linux-gnu -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include  \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-adolc-dir=${ISSM_DIR}/externalpackages/adolc/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+# NOTE: The PETSc libraries are compiled but not used as they conflict with
+#		ADOL-C: PETSc is really just being used as an installer for other
+#		external packages.
+#
+EXTERNALPACKAGES="
+	autotools	install-linux.sh
+	cmake		install.sh
+	petsc		install-3.17-linux.sh
+	gsl			install.sh
+	triangle	install-linux.sh
+	adolc		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=1
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation.
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+# NOTE:
+# - test3010 is skipped because it triggers GEMB module and a subsequent
+#	failure on ampioff configuration (really, likely a segmentation fault)
+#
+MATLAB_NROPTIONS="'benchmark','adolc','exclude',[3010]"
+PYTHON_NROPTIONS="--benchmark adolc --exclude 3010"
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-adolc-ampion
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-adolc-ampion	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-adolc-ampion	(revision 27955)
@@ -0,0 +1,82 @@
+MATLAB_PATH="/usr/local/MATLAB/R2019b"
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--without-kriging \
+	--without-kml \
+	--without-Love \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-version=3.7 \
+	--with-python-dir=/usr \
+	--with-python-numpy-dir=/usr/local/lib/python3.7/dist-packages/numpy \
+	--with-fortran-lib="-L/usr/lib/x86_64-linux-gnu -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include  \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-ampi-dir=${ISSM_DIR}/externalpackages/adjoinablempi/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-adolc-dir=${ISSM_DIR}/externalpackages/adolc/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+# NOTE: The PETSc libraries are compiled but not used as they conflict with
+#		ADOL-C: PETSc is really just being used as an installer for other
+#		external packages.
+#
+EXTERNALPACKAGES="
+	autotools		install-linux.sh
+	cmake			install.sh
+	petsc			install-3.17-linux.sh
+	gsl				install.sh
+	triangle		install-linux.sh
+	adjoinablempi	install-linux.sh
+	adolc			install-with_ampi.sh
+	shell2junit		install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=1
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation.
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+# NOTE:
+# - test3010 is skipped because it triggers GEMB module and a subsequent
+#	failure on ampioff configuration (really, likely a segmentation fault)
+#
+MATLAB_NROPTIONS="'benchmark','adolc','exclude',[3010 3019 3020 3021 3110]"
+PYTHON_NROPTIONS="--benchmark adolc --exclude 3010 3019 3020 3021 3110"
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-basic
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-basic	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-basic	(revision 27955)
@@ -0,0 +1,69 @@
+MATLAB_PATH="/usr/local/MATLAB/R2019b"
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-fortran-lib="-L/usr/lib/x86_64-linux-gnu -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-linux.sh
+	cmake		install.sh
+	petsc		install-3.17-linux.sh
+	triangle	install-linux.sh
+	chaco		install-linux.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation.
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+MATLAB_NROPTIONS="'exclude',[IdFromString('Dakota')]"
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-binaries-matlab
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-binaries-matlab	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-binaries-matlab	(revision 27955)
@@ -0,0 +1,91 @@
+MATLAB_PATH="/usr/local/MATLAB/R2019b"
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+# NOTE:
+# - We can disable dependency tracking in the Autotools because the binaries
+#	should always be a one-time build.
+# - libgfortran will not be available in $ISSM_DIR/lib at compile time: it is
+#	copied by packaging script.
+#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--enable-standalone-executables \
+	--enable-standalone-modules \
+	--enable-standalone-libraries \
+	--disable-dependency-tracking \
+	--with-pic \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-fortran-lib="-L${ISSM_DIR}/lib -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/hdf5/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-linux.sh
+	cmake		install.sh
+	petsc		install-3.17-linux-static.sh
+	gsl			install-static.sh
+	boost		install-1.7-linux-static.sh
+	dakota		install-6.2-linux-static.sh
+	curl		install-7-linux-static.sh
+	hdf5		install-1-parallel-static.sh
+	netcdf		install-4.7-parallel-static.sh
+	proj		install-6-static.sh
+	gdal		install-3-static.sh
+	gshhg		install.sh
+	gmt			install-6-linux-static.sh
+	gmsh		install-4-linux-static.sh
+	triangle	install-linux-static.sh
+	chaco		install-linux.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation.
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-binaries-python-3
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-binaries-python-3	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-binaries-python-3	(revision 27955)
@@ -0,0 +1,92 @@
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+# NOTE:
+# - We can disable dependency tracking in the Autotools because the binaries
+#	should always be a one-time build.
+# - libgfortran will not be available in $ISSM_DIR/lib at compile time: it is
+#	copied by packaging script.
+#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--enable-standalone-executables \
+	--enable-standalone-modules \
+	--enable-standalone-libraries \
+	--disable-dependency-tracking \
+	--with-pic \
+	--with-python-version=3.7 \
+	--with-python-dir=/usr \
+	--with-python-numpy-dir=/usr/local/lib/python3.7/dist-packages/numpy \
+	--with-fortran-lib="-L${ISSM_DIR}/lib -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/hdf5/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-linux.sh
+	cmake		install.sh
+	petsc		install-3.17-linux-static.sh
+	gsl			install-static.sh
+	boost		install-1.7-linux-static.sh
+	dakota		install-6.2-linux-static.sh
+	curl		install-7-linux-static.sh
+	hdf5		install-1-parallel-static.sh
+	netcdf		install-4.7-parallel-static.sh
+	proj		install-6-static.sh
+	gdal		install-3-python-static.sh
+	gshhg		install.sh
+	gmt			install-6-linux-static.sh
+	gmsh		install-4-linux-static.sh
+	triangle	install-linux-static.sh
+	chaco		install-linux.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation.
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-codipack
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-codipack	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-codipack	(revision 27955)
@@ -0,0 +1,78 @@
+MATLAB_PATH="/usr/local/MATLAB/R2019b"
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--enable-tape-alloc \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--without-kriging \
+	--without-kml \
+	--without-Sealevelchange \
+	--without-Love \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-fortran-lib="-L/usr/lib/x86_64-linux-gnu -lgfortran" \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+	--with-medipack-dir="${ISSM_DIR}/externalpackages/medipack/install" \
+	--with-codipack-dir="${ISSM_DIR}/externalpackages/codipack/install" \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-linux.sh
+	cmake		install.sh
+	petsc		install-3.17-linux.sh
+	gsl			install.sh
+	triangle	install-linux.sh
+	chaco		install-linux.sh
+	m1qn3		install.sh
+	semic		install.sh
+	medipack	install.sh
+	codipack	install.sh
+	shell2junit install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation.
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+MATLAB_NROPTIONS="'benchmark','all','id',[3015,3119,3480,3201:3206]"
+PYTHON_NROPTIONS="--benchmark='all' -i 3015 3119 3480"
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-dakota
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-dakota	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-dakota	(revision 27955)
@@ -0,0 +1,94 @@
+MATLAB_PATH="/usr/local/MATLAB/R2019b"
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-cxxoptflags="-std=c++11" \
+	--with-pic \
+	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-version=3.7 \
+	--with-python-dir=/usr \
+	--with-python-numpy-dir=/usr/local/lib/python3.7/dist-packages/numpy \
+	--with-fortran-lib="-L/usr/lib/x86_64-linux-gnu -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/hdf5/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools		install-linux.sh
+	cmake			install.sh
+	petsc			install-3.17-linux.sh
+	gsl				install.sh
+	boost			install-1.7-linux.sh
+	dakota			install-6.2-linux.sh
+	curl			install-7-linux.sh
+	hdf5			install-1-parallel.sh
+	netcdf			install-4.7-parallel.sh
+	proj			install-6.sh
+	gdal			install-3-python.sh
+	gshhg			install.sh
+	gmt				install-6-linux.sh
+	gmsh			install-4-linux.sh
+	triangle		install-linux.sh
+	chaco			install-linux.sh
+	m1qn3			install.sh
+	semic			install.sh
+	shell2junit		install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=1
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation.
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+# NOTE:
+# - Errors are large for tests 234, 418, and 420 under Python
+# - Excluding 2006 until it can be debugged (PETSc crash)
+#
+MATLAB_NROPTIONS="'id',[IdFromString('Dakota')],'exclude',[2006]"
+PYTHON_NROPTIONS="--include_name 'Dakota' --exclude 234 418 420 2006"
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-full
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-full	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-full	(revision 27955)
@@ -0,0 +1,88 @@
+# NOTE: This configuration adds solid earth and Dakota capabilities to the 
+#		basic build.
+
+MATLAB_PATH="/usr/local/MATLAB/R2019b"
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-version=3.7 \
+	--with-python-dir=/usr \
+	--with-python-numpy-dir=/usr/local/lib/python3.7/dist-packages/numpy \
+	--with-fortran-lib="-L/usr/lib/x86_64-linux-gnu -lgfortran" \
+	--with-mpi-include="${ISSM_DIR}/externalpackages/petsc/install/include" \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-metis-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-parmetis-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-scalapack-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-mumps-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-hdf5-dir="${ISSM_DIR}/externalpackages/hdf5/install" \
+	--with-petsc-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-gsl-dir="${ISSM_DIR}/externalpackages/gsl/install" \
+	--with-boost-dir="${ISSM_DIR}/externalpackages/boost/install" \
+	--with-dakota-dir="${ISSM_DIR}/externalpackages/dakota/install" \
+	--with-proj-dir="${ISSM_DIR}/externalpackages/proj/install" \
+	--with-triangle-dir="${ISSM_DIR}/externalpackages/triangle/install" \
+	--with-chaco-dir="${ISSM_DIR}/externalpackages/chaco/install" \
+	--with-m1qn3-dir="${ISSM_DIR}/externalpackages/m1qn3/install" \
+	--with-semic-dir="${ISSM_DIR}/externalpackages/semic/install" \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-linux.sh
+	cmake		install.sh
+	petsc		install-3.17-linux.sh
+	gsl			install.sh
+	boost		install-1.7-linux.sh
+	dakota		install-6.2-linux.sh
+	curl		install-7-linux.sh
+	hdf5		install-1-parallel.sh
+	netcdf		install-4.7-parallel.sh
+	proj		install-6.sh
+	gdal		install-3-python.sh
+	gshhg		install.sh
+	gmt			install-6-linux.sh
+	gmsh		install-4-linux.sh
+	triangle	install-linux.sh
+	chaco		install-linux.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-full-mplapack
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-full-mplapack	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-full-mplapack	(revision 27955)
@@ -0,0 +1,88 @@
+MATLAB_PATH="/usr/local/MATLAB/R2019b"
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-cxxoptflags="-g -O2 -fPIC -std=gnu++11" \
+	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-version=3.7 \
+	--with-python-dir=/usr \
+	--with-python-numpy-dir=/usr/local/lib/python3.7/dist-packages/numpy \
+	--with-fortran-lib="-L/usr/lib/x86_64-linux-gnu -lgfortran" \
+	--with-mpi-include="${ISSM_DIR}/externalpackages/petsc/install/include" \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-metis-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-parmetis-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-scalapack-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-mumps-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-hdf5-dir="${ISSM_DIR}/externalpackages/hdf5/install" \
+	--with-petsc-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-mplapack-dir="${ISSM_DIR}/externalpackages/mplapack/install" \
+	--with-gsl-dir="${ISSM_DIR}/externalpackages/gsl/install" \
+	--with-boost-dir="${ISSM_DIR}/externalpackages/boost/install" \
+	--with-dakota-dir="${ISSM_DIR}/externalpackages/dakota/install" \
+	--with-proj-dir="${ISSM_DIR}/externalpackages/proj/install" \
+	--with-triangle-dir="${ISSM_DIR}/externalpackages/triangle/install" \
+	--with-chaco-dir="${ISSM_DIR}/externalpackages/chaco/install" \
+	--with-m1qn3-dir="${ISSM_DIR}/externalpackages/m1qn3/install" \
+	--with-semic-dir="${ISSM_DIR}/externalpackages/semic/install" \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-linux.sh
+	cmake		install.sh
+	petsc		install-3.17-linux.sh
+	mplapack	install-2-linux.sh
+	gsl			install.sh
+	boost		install-1.7-linux.sh
+	dakota		install-6.2-linux.sh
+	curl		install-7-linux.sh
+	hdf5		install-1-parallel.sh
+	netcdf		install-4.7-parallel.sh
+	proj		install-6.sh
+	gdal		install-3-python.sh
+	gshhg		install.sh
+	gmt			install-6-linux.sh
+	gmsh		install-4-linux.sh
+	triangle	install-linux.sh
+	chaco		install-linux.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-full-valgrind
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-full-valgrind	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-full-valgrind	(revision 27955)
@@ -0,0 +1,88 @@
+# NOTE: This configuration adds solid earth and Dakota capabilities to the 
+#		basic build, as well as the ability to debug with Valgrind.
+
+MATLAB_PATH="/usr/local/MATLAB/R2019b"
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-version=3.7 \
+	--with-python-dir=/usr \
+	--with-python-numpy-dir=/usr/local/lib/python3.7/dist-packages/numpy \
+	--with-fortran-lib="-L/usr/lib/x86_64-linux-gnu -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/hdf5/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-linux.sh
+	cmake		install.sh
+	petsc		install-3.17-linux.sh
+	gsl			install.sh
+	boost		install-1.7-linux-valgrind.sh
+	dakota		install-6.2-linux.sh
+	curl		install-7-linux.sh
+	hdf5		install-1-parallel.sh
+	netcdf		install-4.7-parallel.sh
+	proj		install-6.sh
+	gdal		install-3-python.sh
+	gshhg		install.sh
+	gmt			install-6-linux.sh
+	gmsh		install-4-linux.sh
+	triangle	install-linux.sh
+	chaco		install-linux.sh
+	m1qn3		install.sh
+	semic		install.sh
+	valgrind	install-linux.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-gia
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-gia	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-gia	(revision 27955)
@@ -0,0 +1,70 @@
+MATLAB_PATH="/usr/local/MATLAB/R2019b"
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-gia=yes \
+	--with-numthreads=4
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-version=3.7 \
+	--with-python-dir=/usr \
+	--with-python-numpy-dir=/usr/local/lib/python3.7/dist-packages/numpy \
+	--with-fortran-lib="-L/usr/lib/x86_64-linux-gnu -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-math77-dir=${ISSM_DIR}/externalpackages/math77/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-linux.sh
+	cmake		install.sh
+	petsc		install-3.17-linux.sh
+	triangle	install-linux.sh
+	math77		install.sh
+	gmsh		install-4-linux.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation.
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+MATLAB_NROPTIONS="'benchmark','all','id',[2001:2100]"
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-iceocean
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-iceocean	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-iceocean	(revision 27955)
@@ -0,0 +1,73 @@
+MATLAB_PATH="/usr/local/MATLAB/R2019b"
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-ocean \
+	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-fortran-lib="-L/usr/lib/x86_64-linux-gnu -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-linux.sh
+	cmake		install.sh
+	petsc		install-3.17-linux.sh
+	triangle	install-linux.sh
+	chaco		install-linux.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation.
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+# NOTE: Currently not including 4002:4003 while Dimitri and Helene work on the
+#		coupling
+#
+MATLAB_NROPTIONS="'benchmark','all','id',[4001]"
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-javascript
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-javascript	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-javascript	(revision 27955)
@@ -0,0 +1,59 @@
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-shared \
+	--enable-development \
+	--enable-debugging \
+	--with-cxxoptflags="-g -O2 -fPIC -std=c++11" \
+	--with-javascript \
+	--without-fortran \
+	--without-Sealevelchange \
+	--without-Love \
+	--without-kml \
+	--without-kriging \
+	--with-gsl-dir="${ISSM_DIR}/externalpackages/gsl/install" \
+	--with-triangle-dir="${ISSM_DIR}/externalpackages/triangle/install" \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-linux.sh
+	cmake		install.sh
+	emscripten	install.sh
+	gsl			install-javascript.sh
+	triangle	install-linux-javascript.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=1
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+#		compilation.
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-python
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-python	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-python	(revision 27955)
@@ -0,0 +1,88 @@
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-python-version=3.7 \
+	--with-python-dir=/usr \
+	--with-python-numpy-dir=/usr/local/lib/python3.7/dist-packages/numpy \
+	--with-fortran-lib="-L/usr/lib/x86_64-linux-gnu -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/hdf5/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools	install-linux.sh
+	cmake		install.sh
+	petsc		install-3.17-linux.sh
+	gsl			install.sh
+	boost		install-1.7-linux.sh
+	dakota		install-6.2-linux.sh
+	curl		install-7-linux.sh
+	hdf5		install-1-parallel.sh
+	netcdf		install-4.7-parallel.sh
+	proj		install-6.sh
+	gdal		install-3-python.sh
+	gshhg		install.sh
+	gmt			install-6-linux.sh
+	gmsh		install-4-linux.sh
+	triangle	install-linux.sh
+	chaco		install-linux.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=1
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation.
+#
+NUMCPUS_INSTALL=8
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+# NOTE:
+# - Errors are large for tests 234, 418, and 420 under Python
+#
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS="--exclude 234 418 420"
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-solid_earth
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-solid_earth	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/ross-debian_linux-solid_earth	(revision 27955)
@@ -0,0 +1,95 @@
+MATLAB_PATH="/usr/local/MATLAB/R2019b"
+
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--disable-static \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-version=3.7 \
+	--with-python-dir=/usr \
+	--with-python-numpy-dir=/usr/local/lib/python3.7/dist-packages/numpy \
+	--with-fortran-lib="-L/usr/lib/x86_64-linux-gnu -lgfortran" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-parmetis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/hdf5/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-gsl-dir=${ISSM_DIR}/externalpackages/gsl/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install \
+	--with-dakota-dir=${ISSM_DIR}/externalpackages/dakota/install \
+	--with-proj-dir=${ISSM_DIR}/externalpackages/proj/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-chaco-dir=${ISSM_DIR}/externalpackages/chaco/install \
+	--with-m1qn3-dir=${ISSM_DIR}/externalpackages/m1qn3/install \
+	--with-semic-dir=${ISSM_DIR}/externalpackages/semic/install \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+EXTERNALPACKAGES="
+	autotools		install-linux.sh
+	cmake			install.sh
+	petsc			install-3.17-linux.sh
+	gsl				install.sh
+	boost			install-1.7-linux.sh
+	dakota			install-6.2-linux.sh
+	curl			install-7-linux.sh
+	hdf5			install-1-parallel.sh
+	netcdf			install-4.7-parallel.sh
+	proj			install-6.sh
+	gdal			install-3-python.sh
+	gshhg			install.sh
+	gmt				install-6-linux.sh
+	gmsh			install-4-linux.sh
+	triangle		install-linux.sh
+	chaco			install-linux.sh
+	m1qn3			install.sh
+	semic			install.sh
+	shell2junit		install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=1
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+#       compilation.
+#
+NUMCPUS_INSTALL=8
+
+# Number of cpus used in the nightly runs
+#
+# NOTE: Possible problem of access to all_vertices.txt if more than 1.
+#
+NUMCPUS_RUN=1
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+# NOTE:
+# - Excluding 2006 until it can be debugged (PETSc crash)
+# - Excluding 2012 until it can be looked at by Eric ("FindParam error message: Parameter HydrologyModel not set")
+#
+MATLAB_NROPTIONS="'benchmark','slc','exclude',[2004 2006 2012 2051 2052 2053 2085 2424 2425]"
+PYTHON_NROPTIONS="--benchmark slc --exclude 2004 2006 2012 2021 2051 2052 2053 2085 2424 2425"
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/ross-win-msys2-gcc-msmpi-basic
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/ross-win-msys2-gcc-msmpi-basic	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/ross-win-msys2-gcc-msmpi-basic	(revision 27955)
@@ -0,0 +1,65 @@
+MATLAB_PATH=$(cygpath -u $(cygpath -ms "/c/Program Files/MATLAB/R2019b"))
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-vendor="win-msys2-msmpi" \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-mpi-include="${MSMPI_ROOT}/include" \
+	--with-mpi-libdir="${MSMPI_ROOT}/lib" \
+	--with-mpi-libflags="-lmsmpi" \
+	--with-fortran-lib="-L/c/msys64/usr/bin -lgfortran" \
+	--with-metis-dir="${ISSM_DIR}/externalpackages/metis/install" \
+	--with-parmetis-dir="${ISSM_DIR}/externalpackages/parmetis/install" \
+	--with-blas-dir="${ISSM_DIR}/externalpackages/blas/install" \
+	--with-lapack-dir="${ISSM_DIR}/externalpackages/lapack/install" \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/scalapack/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/mumps/install \
+	--with-petsc-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-triangle-dir="${ISSM_DIR}/externalpackages/triangle/install" \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+#List of external packages to be installed and their installation scripts
+EXTERNALPACKAGES="
+	metis		install-5-win-msys2-gcc.sh
+	parmetis	install-4-win-msys2-gcc-msmpi.sh
+	blas		install-3-win-msys2-gcc.sh
+	lapack		install-3-win-msys2-gcc.sh
+	scalapack	install-2-win-msys2-gcc-msmpi.sh
+	mumps		install-5-win-msys2-gcc-msmpi.sh
+	petsc		install-3.14-win-msys2-gcc-msmpi.sh
+	triangle	install-win-msys2-gcc.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=4
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information
+#
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/ross-win-msys2-mingw-msmpi-basic
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/ross-win-msys2-mingw-msmpi-basic	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/ross-win-msys2-mingw-msmpi-basic	(revision 27955)
@@ -0,0 +1,71 @@
+MATLAB_PATH=$(cygpath -u $(cygpath -ms "/c/Program Files/MATLAB/R2019b"))
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--enable-development \
+	--enable-debugging \
+	--with-numthreads=4 \
+	--with-vendor="win-msys2" \
+	--with-matlab-dir="${MATLAB_PATH}" \
+	--with-mpi-include="${MSMPI_ROOT}/include" \
+	--with-mpi-libdir="${MSMPI_ROOT}/lib" \
+	--with-mpi-libflags="-lmsmpi" \
+	--with-fortran-lib="-Wl,-L/c/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0 -Wl,-lgfortran" \
+	--with-metis-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-parmetis-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-blas-lapack-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-scalapack-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-mumps-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-petsc-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-triangle-dir="${ISSM_DIR}/externalpackages/triangle/install" \
+	--with-chaco-dir="${ISSM_DIR}/externalpackages/chaco/install" \
+	--with-m1qn3-dir="${ISSM_DIR}/externalpackages/m1qn3/install" \
+	--with-semic-dir="${ISSM_DIR}/externalpackages/semic/install" \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+#List of external packages to be installed and their installation scripts
+EXTERNALPACKAGES="
+	msmpi		install.sh
+	petsc		install-3.14-win-msys2-mingw-msmpi.sh
+	triangle	install-win-msys2-mingw.sh
+	chaco		install-win-msys2-mingw.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=1
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=4
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information
+#
+# NOTE:
+# - Tests 125, 126, and 129 are skipped because restart is not yet implemented 
+#	for Windows (under MSYS2)
+# - test701 is skipped because it uses full Stokes equations
+#
+MATLAB_NROPTIONS="'exclude',[IdFromString('Dakota'),125,126,129,435,701,702,703]"
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/jenkins/ross-win-msys2-mingw-msmpi-binaries-matlab
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/jenkins/ross-win-msys2-mingw-msmpi-binaries-matlab	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/jenkins/ross-win-msys2-mingw-msmpi-binaries-matlab	(revision 27955)
@@ -0,0 +1,65 @@
+MATLAB_PATH=$(cygpath -u $(cygpath -ms "/c/Program Files/MATLAB/R2019b"))
+
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--enable-standalone-executables \
+	--enable-standalone-modules \
+	--enable-standalone-libraries \
+	--disable-dependency-tracking \
+	--with-vendor="win-msys2" \
+	--with-matlab-dir="${MATLAB_PATH}" \
+	--with-fortran-lib="-Wl,-L/c/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0 -Wl,-lgfortran" \
+	--with-mpi-include="${MSMPI_ROOT}/include" \
+	--with-mpi-libdir="-Wl,-L${MSMPI_ROOT}/lib" \
+	--with-mpi-libflags="-Wl,-lmsmpi" \
+	--with-metis-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-parmetis-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-blas-lapack-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-scalapack-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-mumps-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-petsc-dir="${ISSM_DIR}/externalpackages/petsc/install" \
+	--with-triangle-dir="${ISSM_DIR}/externalpackages/triangle/install" \
+	--with-chaco-dir="${ISSM_DIR}/externalpackages/chaco/install" \
+	--with-m1qn3-dir="${ISSM_DIR}/externalpackages/m1qn3/install" \
+	--with-semic-dir="${ISSM_DIR}/externalpackages/semic/install" \
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+#List of external packages to be installed and their installation scripts
+EXTERNALPACKAGES="
+	msmpi		install-static.sh
+	petsc		install-3.14-win-msys2-mingw-msmpi-static.sh
+	triangle	install-win-msys2-mingw-static.sh
+	chaco		install-win-msys2-mingw.sh
+	m1qn3		install.sh
+	semic		install.sh
+	shell2junit	install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=4
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=2
+
+# Nightly run options
+#
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/branches/trunk-dlcheng-ASE/ltmain.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/ltmain.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/ltmain.sh	(revision 27955)
@@ -0,0 +1,9655 @@
+
+# libtool (GNU libtool) 2.4.2
+# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
+# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Usage: $progname [OPTION]... [MODE-ARG]...
+#
+# Provide generalized library-building support services.
+#
+#       --config             show all configuration variables
+#       --debug              enable verbose shell tracing
+#   -n, --dry-run            display commands without modifying any files
+#       --features           display basic configuration information and exit
+#       --mode=MODE          use operation mode MODE
+#       --preserve-dup-deps  don't remove duplicate dependency libraries
+#       --quiet, --silent    don't print informational messages
+#       --no-quiet, --no-silent
+#                            print informational messages (default)
+#       --no-warn            don't display warning messages
+#       --tag=TAG            use configuration variables from tag TAG
+#   -v, --verbose            print more informational messages than default
+#       --no-verbose         don't print the extra informational messages
+#       --version            print version information
+#   -h, --help, --help-all   print short, long, or detailed help message
+#
+# MODE must be one of the following:
+#
+#         clean              remove files from the build directory
+#         compile            compile a source file into a libtool object
+#         execute            automatically set library path, then run a program
+#         finish             complete the installation of libtool libraries
+#         install            install libraries or executables
+#         link               create a library or an executable
+#         uninstall          remove libraries from an installed directory
+#
+# MODE-ARGS vary depending on the MODE.  When passed as first option,
+# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
+# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
+#
+# When reporting a bug, please describe a test case to reproduce it and
+# include the following information:
+#
+#         host-triplet:	$host
+#         shell:		$SHELL
+#         compiler:		$LTCC
+#         compiler flags:		$LTCFLAGS
+#         linker:		$LD (gnu? $with_gnu_ld)
+#         $progname:	(GNU libtool) 2.4.2
+#         automake:	$automake_version
+#         autoconf:	$autoconf_version
+#
+# Report bugs to <bug-libtool@gnu.org>.
+# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
+# General help using GNU software: <http://www.gnu.org/gethelp/>.
+
+PROGRAM=libtool
+PACKAGE=libtool
+VERSION=2.4.2
+TIMESTAMP=""
+package_revision=1.3337
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+
+# NLS nuisances: We save the old values to restore during execute mode.
+lt_user_locale=
+lt_safe_locale=
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+  eval "if test \"\${$lt_var+set}\" = set; then
+          save_$lt_var=\$$lt_var
+          $lt_var=C
+	  export $lt_var
+	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
+	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+	fi"
+done
+LC_ALL=C
+LANGUAGE=C
+export LANGUAGE LC_ALL
+
+$lt_unset CDPATH
+
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+
+
+: ${CP="cp -f"}
+test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+: ${Xsed="$SED -e 1s/^X//"}
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
+
+exit_status=$EXIT_SUCCESS
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" 	$lt_nl"
+
+dirname="s,/[^/]*$,,"
+basename="s,^.*/,,"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+    if test "X$func_dirname_result" = "X${1}"; then
+      func_dirname_result="${3}"
+    else
+      func_dirname_result="$func_dirname_result${2}"
+    fi
+} # func_dirname may be replaced by extended shell implementation
+
+
+# func_basename file
+func_basename ()
+{
+    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+} # func_basename may be replaced by extended shell implementation
+
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+    # Extract subdirectory from the argument.
+    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
+    if test "X$func_dirname_result" = "X${1}"; then
+      func_dirname_result="${3}"
+    else
+      func_dirname_result="$func_dirname_result${2}"
+    fi
+    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
+} # func_dirname_and_basename may be replaced by extended shell implementation
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+    case ${2} in
+      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+    esac
+} # func_stripname may be replaced by extended shell implementation
+
+
+# These SED scripts presuppose an absolute path with a trailing slash.
+pathcar='s,^/\([^/]*\).*$,\1,'
+pathcdr='s,^/[^/]*,,'
+removedotparts=':dotsl
+		s@/\./@/@g
+		t dotsl
+		s,/\.$,/,'
+collapseslashes='s@/\{1,\}@/@g'
+finalslash='s,/*$,/,'
+
+# func_normal_abspath PATH
+# Remove doubled-up and trailing slashes, "." path components,
+# and cancel out any ".." path components in PATH after making
+# it an absolute path.
+#             value returned in "$func_normal_abspath_result"
+func_normal_abspath ()
+{
+  # Start from root dir and reassemble the path.
+  func_normal_abspath_result=
+  func_normal_abspath_tpath=$1
+  func_normal_abspath_altnamespace=
+  case $func_normal_abspath_tpath in
+    "")
+      # Empty path, that just means $cwd.
+      func_stripname '' '/' "`pwd`"
+      func_normal_abspath_result=$func_stripname_result
+      return
+    ;;
+    # The next three entries are used to spot a run of precisely
+    # two leading slashes without using negated character classes;
+    # we take advantage of case's first-match behaviour.
+    ///*)
+      # Unusual form of absolute path, do nothing.
+    ;;
+    //*)
+      # Not necessarily an ordinary path; POSIX reserves leading '//'
+      # and for example Cygwin uses it to access remote file shares
+      # over CIFS/SMB, so we conserve a leading double slash if found.
+      func_normal_abspath_altnamespace=/
+    ;;
+    /*)
+      # Absolute path, do nothing.
+    ;;
+    *)
+      # Relative path, prepend $cwd.
+      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
+    ;;
+  esac
+  # Cancel out all the simple stuff to save iterations.  We also want
+  # the path to end with a slash for ease of parsing, so make sure
+  # there is one (and only one) here.
+  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
+  while :; do
+    # Processed it all yet?
+    if test "$func_normal_abspath_tpath" = / ; then
+      # If we ascended to the root using ".." the result may be empty now.
+      if test -z "$func_normal_abspath_result" ; then
+        func_normal_abspath_result=/
+      fi
+      break
+    fi
+    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$pathcar"`
+    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$pathcdr"`
+    # Figure out what to do with it
+    case $func_normal_abspath_tcomponent in
+      "")
+        # Trailing empty path component, ignore it.
+      ;;
+      ..)
+        # Parent dir; strip last assembled component from result.
+        func_dirname "$func_normal_abspath_result"
+        func_normal_abspath_result=$func_dirname_result
+      ;;
+      *)
+        # Actual path component, append it.
+        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
+      ;;
+    esac
+  done
+  # Restore leading double-slash if one was found on entry.
+  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
+}
+
+# func_relative_path SRCDIR DSTDIR
+# generates a relative path from SRCDIR to DSTDIR, with a trailing
+# slash if non-empty, suitable for immediately appending a filename
+# without needing to append a separator.
+#             value returned in "$func_relative_path_result"
+func_relative_path ()
+{
+  func_relative_path_result=
+  func_normal_abspath "$1"
+  func_relative_path_tlibdir=$func_normal_abspath_result
+  func_normal_abspath "$2"
+  func_relative_path_tbindir=$func_normal_abspath_result
+
+  # Ascend the tree starting from libdir
+  while :; do
+    # check if we have found a prefix of bindir
+    case $func_relative_path_tbindir in
+      $func_relative_path_tlibdir)
+        # found an exact match
+        func_relative_path_tcancelled=
+        break
+        ;;
+      $func_relative_path_tlibdir*)
+        # found a matching prefix
+        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
+        func_relative_path_tcancelled=$func_stripname_result
+        if test -z "$func_relative_path_result"; then
+          func_relative_path_result=.
+        fi
+        break
+        ;;
+      *)
+        func_dirname $func_relative_path_tlibdir
+        func_relative_path_tlibdir=${func_dirname_result}
+        if test "x$func_relative_path_tlibdir" = x ; then
+          # Have to descend all the way to the root!
+          func_relative_path_result=../$func_relative_path_result
+          func_relative_path_tcancelled=$func_relative_path_tbindir
+          break
+        fi
+        func_relative_path_result=../$func_relative_path_result
+        ;;
+    esac
+  done
+
+  # Now calculate path; take care to avoid doubling-up slashes.
+  func_stripname '' '/' "$func_relative_path_result"
+  func_relative_path_result=$func_stripname_result
+  func_stripname '/' '/' "$func_relative_path_tcancelled"
+  if test "x$func_stripname_result" != x ; then
+    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
+  fi
+
+  # Normalisation. If bindir is libdir, return empty string,
+  # else relative path ending with a slash; either way, target
+  # file name can be directly appended.
+  if test ! -z "$func_relative_path_result"; then
+    func_stripname './' '' "$func_relative_path_result/"
+    func_relative_path_result=$func_stripname_result
+  fi
+}
+
+# The name of this program:
+func_dirname_and_basename "$progpath"
+progname=$func_basename_result
+
+# Make sure we have an absolute path for reexecution:
+case $progpath in
+  [\\/]*|[A-Za-z]:\\*) ;;
+  *[\\/]*)
+     progdir=$func_dirname_result
+     progdir=`cd "$progdir" && pwd`
+     progpath="$progdir/$progname"
+     ;;
+  *)
+     save_IFS="$IFS"
+     IFS=${PATH_SEPARATOR-:}
+     for progdir in $PATH; do
+       IFS="$save_IFS"
+       test -x "$progdir/$progname" && break
+     done
+     IFS="$save_IFS"
+     test -n "$progdir" || progdir=`pwd`
+     progpath="$progdir/$progname"
+     ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution that turns a string into a regex matching for the
+# string literally.
+sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
+
+# Sed substitution that converts a w32 file name or path
+# which contains forward slashes, into one that contains
+# (escaped) backslashes.  A very naive implementation.
+lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
+# Re-`\' parameter expansions in output of double_quote_subst that were
+# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
+# in input to double_quote_subst, that '$' was protected from expansion.
+# Since each input `\' is now two `\'s, look for any number of runs of
+# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
+bs='\\'
+bs2='\\\\'
+bs4='\\\\\\\\'
+dollar='\$'
+sed_double_backslash="\
+  s/$bs4/&\\
+/g
+  s/^$bs2$dollar/$bs&/
+  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
+  s/\n//g"
+
+# Standard options:
+opt_dry_run=false
+opt_help=false
+opt_quiet=false
+opt_verbose=false
+opt_warning=:
+
+# func_echo arg...
+# Echo program name prefixed message, along with the current mode
+# name if it has been set yet.
+func_echo ()
+{
+    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
+}
+
+# func_verbose arg...
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+    $opt_verbose && func_echo ${1+"$@"}
+
+    # A bug in bash halts the script if the last line of a function
+    # fails when set -e is in force, so we need another command to
+    # work around that:
+    :
+}
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*"
+}
+
+# func_error arg...
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
+}
+
+# func_warning arg...
+# Echo program name prefixed warning message to standard error.
+func_warning ()
+{
+    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
+
+    # bash bug again:
+    :
+}
+
+# func_fatal_error arg...
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+    func_error ${1+"$@"}
+    exit $EXIT_FAILURE
+}
+
+# func_fatal_help arg...
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+    func_error ${1+"$@"}
+    func_fatal_error "$help"
+}
+help="Try \`$progname --help' for more information."  ## default
+
+
+# func_grep expression filename
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+    $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_mkdir_p directory-path
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+    my_directory_path="$1"
+    my_dir_list=
+
+    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
+
+      # Protect directory names starting with `-'
+      case $my_directory_path in
+        -*) my_directory_path="./$my_directory_path" ;;
+      esac
+
+      # While some portion of DIR does not yet exist...
+      while test ! -d "$my_directory_path"; do
+        # ...make a list in topmost first order.  Use a colon delimited
+	# list incase some portion of path contains whitespace.
+        my_dir_list="$my_directory_path:$my_dir_list"
+
+        # If the last portion added has no slash in it, the list is done
+        case $my_directory_path in */*) ;; *) break ;; esac
+
+        # ...otherwise throw away the child directory and loop
+        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
+      done
+      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
+
+      save_mkdir_p_IFS="$IFS"; IFS=':'
+      for my_dir in $my_dir_list; do
+	IFS="$save_mkdir_p_IFS"
+        # mkdir can fail with a `File exist' error if two processes
+        # try to create one of the directories concurrently.  Don't
+        # stop in that case!
+        $MKDIR "$my_dir" 2>/dev/null || :
+      done
+      IFS="$save_mkdir_p_IFS"
+
+      # Bail out if we (or some other process) failed to create a directory.
+      test -d "$my_directory_path" || \
+        func_fatal_error "Failed to create \`$1'"
+    fi
+}
+
+
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible.  If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+    my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+    if test "$opt_dry_run" = ":"; then
+      # Return a directory name, but don't create it in dry-run mode
+      my_tmpdir="${my_template}-$$"
+    else
+
+      # If mktemp works, use that first and foremost
+      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+      if test ! -d "$my_tmpdir"; then
+        # Failing that, at least try and use $RANDOM to avoid a race
+        my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+        save_mktempdir_umask=`umask`
+        umask 0077
+        $MKDIR "$my_tmpdir"
+        umask $save_mktempdir_umask
+      fi
+
+      # If we're not in dry-run mode, bomb out on failure
+      test -d "$my_tmpdir" || \
+        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
+    fi
+
+    $ECHO "$my_tmpdir"
+}
+
+
+# func_quote_for_eval arg
+# Aesthetically quote ARG to be evaled later.
+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
+# is double-quoted, suitable for a subsequent eval, whereas
+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
+# which are still active within double quotes backslashified.
+func_quote_for_eval ()
+{
+    case $1 in
+      *[\\\`\"\$]*)
+	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
+      *)
+        func_quote_for_eval_unquoted_result="$1" ;;
+    esac
+
+    case $func_quote_for_eval_unquoted_result in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting, command substitution and and variable
+      # expansion for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
+        ;;
+      *)
+        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
+    esac
+}
+
+
+# func_quote_for_expand arg
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+    case $1 in
+      *[\\\`\"]*)
+	my_arg=`$ECHO "$1" | $SED \
+	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
+      *)
+        my_arg="$1" ;;
+    esac
+
+    case $my_arg in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting and command substitution for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+        my_arg="\"$my_arg\""
+        ;;
+    esac
+
+    func_quote_for_expand_result="$my_arg"
+}
+
+
+# func_show_eval cmd [fail_exp]
+# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+    my_cmd="$1"
+    my_fail_exp="${2-:}"
+
+    ${opt_silent-false} || {
+      func_quote_for_expand "$my_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    if ${opt_dry_run-false}; then :; else
+      eval "$my_cmd"
+      my_status=$?
+      if test "$my_status" -eq 0; then :; else
+	eval "(exit $my_status); $my_fail_exp"
+      fi
+    fi
+}
+
+
+# func_show_eval_locale cmd [fail_exp]
+# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.  Use the saved locale for evaluation.
+func_show_eval_locale ()
+{
+    my_cmd="$1"
+    my_fail_exp="${2-:}"
+
+    ${opt_silent-false} || {
+      func_quote_for_expand "$my_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    if ${opt_dry_run-false}; then :; else
+      eval "$lt_user_locale
+	    $my_cmd"
+      my_status=$?
+      eval "$lt_safe_locale"
+      if test "$my_status" -eq 0; then :; else
+	eval "(exit $my_status); $my_fail_exp"
+      fi
+    fi
+}
+
+# func_tr_sh
+# Turn $1 into a string suitable for a shell variable name.
+# Result is stored in $func_tr_sh_result.  All characters
+# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
+# if $1 begins with a digit, a '_' is prepended as well.
+func_tr_sh ()
+{
+  case $1 in
+  [0-9]* | *[!a-zA-Z0-9_]*)
+    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
+    ;;
+  * )
+    func_tr_sh_result=$1
+    ;;
+  esac
+}
+
+
+# func_version
+# Echo version message to standard output and exit.
+func_version ()
+{
+    $opt_debug
+
+    $SED -n '/(C)/!b go
+	:more
+	/\./!{
+	  N
+	  s/\n# / /
+	  b more
+	}
+	:go
+	/^# '$PROGRAM' (GNU /,/# warranty; / {
+        s/^# //
+	s/^# *$//
+        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
+        p
+     }' < "$progpath"
+     exit $?
+}
+
+# func_usage
+# Echo short help message to standard output and exit.
+func_usage ()
+{
+    $opt_debug
+
+    $SED -n '/^# Usage:/,/^#  *.*--help/ {
+        s/^# //
+	s/^# *$//
+	s/\$progname/'$progname'/
+	p
+    }' < "$progpath"
+    echo
+    $ECHO "run \`$progname --help | more' for full usage"
+    exit $?
+}
+
+# func_help [NOEXIT]
+# Echo long help message to standard output and exit,
+# unless 'noexit' is passed as argument.
+func_help ()
+{
+    $opt_debug
+
+    $SED -n '/^# Usage:/,/# Report bugs to/ {
+	:print
+        s/^# //
+	s/^# *$//
+	s*\$progname*'$progname'*
+	s*\$host*'"$host"'*
+	s*\$SHELL*'"$SHELL"'*
+	s*\$LTCC*'"$LTCC"'*
+	s*\$LTCFLAGS*'"$LTCFLAGS"'*
+	s*\$LD*'"$LD"'*
+	s/\$with_gnu_ld/'"$with_gnu_ld"'/
+	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
+	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
+	p
+	d
+     }
+     /^# .* home page:/b print
+     /^# General help using/b print
+     ' < "$progpath"
+    ret=$?
+    if test -z "$1"; then
+      exit $ret
+    fi
+}
+
+# func_missing_arg argname
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+    $opt_debug
+
+    func_error "missing argument for $1."
+    exit_cmd=exit
+}
+
+
+# func_split_short_opt shortopt
+# Set func_split_short_opt_name and func_split_short_opt_arg shell
+# variables after splitting SHORTOPT after the 2nd character.
+func_split_short_opt ()
+{
+    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
+    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
+
+    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
+    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
+} # func_split_short_opt may be replaced by extended shell implementation
+
+
+# func_split_long_opt longopt
+# Set func_split_long_opt_name and func_split_long_opt_arg shell
+# variables after splitting LONGOPT at the `=' sign.
+func_split_long_opt ()
+{
+    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
+    my_sed_long_arg='1s/^--[^=]*=//'
+
+    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
+    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
+} # func_split_long_opt may be replaced by extended shell implementation
+
+exit_cmd=:
+
+
+
+
+
+magic="%%%MAGIC variable%%%"
+magic_exe="%%%MAGIC EXE variable%%%"
+
+# Global variables.
+nonopt=
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+    eval "${1}=\$${1}\${2}"
+} # func_append may be replaced by extended shell implementation
+
+# func_append_quoted var value
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+func_append_quoted ()
+{
+    func_quote_for_eval "${2}"
+    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
+} # func_append_quoted may be replaced by extended shell implementation
+
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+    func_arith_result=`expr "${@}"`
+} # func_arith may be replaced by extended shell implementation
+
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
+} # func_len may be replaced by extended shell implementation
+
+
+# func_lo2o object
+func_lo2o ()
+{
+    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+} # func_lo2o may be replaced by extended shell implementation
+
+
+# func_xform libobj-or-source
+func_xform ()
+{
+    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+} # func_xform may be replaced by extended shell implementation
+
+
+# func_fatal_configuration arg...
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
+{
+    func_error ${1+"$@"}
+    func_error "See the $PACKAGE documentation for more information."
+    func_fatal_error "Fatal configuration error."
+}
+
+
+# func_config
+# Display the configuration for all the tags in this script.
+func_config ()
+{
+    re_begincf='^# ### BEGIN LIBTOOL'
+    re_endcf='^# ### END LIBTOOL'
+
+    # Default configuration.
+    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
+
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
+    done
+
+    exit $?
+}
+
+# func_features
+# Display the features supported by this script.
+func_features ()
+{
+    echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      echo "enable shared libraries"
+    else
+      echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      echo "enable static libraries"
+    else
+      echo "disable static libraries"
+    fi
+
+    exit $?
+}
+
+# func_enable_tag tagname
+# Verify that TAGNAME is valid, and either flag an error and exit, or
+# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
+# variable here.
+func_enable_tag ()
+{
+  # Global variable:
+  tagname="$1"
+
+  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+  sed_extractcf="/$re_begincf/,/$re_endcf/p"
+
+  # Validate tagname.
+  case $tagname in
+    *[!-_A-Za-z0-9,/]*)
+      func_fatal_error "invalid tag name: $tagname"
+      ;;
+  esac
+
+  # Don't test for the "default" C tag, as we know it's
+  # there but not specially marked.
+  case $tagname in
+    CC) ;;
+    *)
+      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+	taglist="$taglist $tagname"
+
+	# Evaluate the configuration.  Be careful to quote the path
+	# and the sed script, to avoid splitting on whitespace, but
+	# also don't use non-portable quotes within backquotes within
+	# quotes we have to do it in 2 steps:
+	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+	eval "$extractedcf"
+      else
+	func_error "ignoring unknown tag $tagname"
+      fi
+      ;;
+  esac
+}
+
+# func_check_version_match
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+func_check_version_match ()
+{
+  if test "$package_revision" != "$macro_revision"; then
+    if test "$VERSION" != "$macro_version"; then
+      if test -z "$macro_version"; then
+        cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from an older release.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+      else
+        cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+      fi
+    else
+      cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+$progname: of $PACKAGE $VERSION and run autoconf again.
+_LT_EOF
+    fi
+
+    exit $EXIT_MISMATCH
+  fi
+}
+
+
+# Shorthand for --mode=foo, only valid as the first argument
+case $1 in
+clean|clea|cle|cl)
+  shift; set dummy --mode clean ${1+"$@"}; shift
+  ;;
+compile|compil|compi|comp|com|co|c)
+  shift; set dummy --mode compile ${1+"$@"}; shift
+  ;;
+execute|execut|execu|exec|exe|ex|e)
+  shift; set dummy --mode execute ${1+"$@"}; shift
+  ;;
+finish|finis|fini|fin|fi|f)
+  shift; set dummy --mode finish ${1+"$@"}; shift
+  ;;
+install|instal|insta|inst|ins|in|i)
+  shift; set dummy --mode install ${1+"$@"}; shift
+  ;;
+link|lin|li|l)
+  shift; set dummy --mode link ${1+"$@"}; shift
+  ;;
+uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+  shift; set dummy --mode uninstall ${1+"$@"}; shift
+  ;;
+esac
+
+
+
+# Option defaults:
+opt_debug=:
+opt_dry_run=false
+opt_config=false
+opt_preserve_dup_deps=false
+opt_features=false
+opt_finish=false
+opt_help=false
+opt_help_all=false
+opt_silent=:
+opt_warning=:
+opt_verbose=:
+opt_silent=false
+opt_verbose=false
+
+
+# Parse options once, thoroughly.  This comes as soon as possible in the
+# script to make things like `--version' happen as quickly as we can.
+{
+  # this just eases exit handling
+  while test $# -gt 0; do
+    opt="$1"
+    shift
+    case $opt in
+      --debug|-x)	opt_debug='set -x'
+			func_echo "enabling shell trace mode"
+			$opt_debug
+			;;
+      --dry-run|--dryrun|-n)
+			opt_dry_run=:
+			;;
+      --config)
+			opt_config=:
+func_config
+			;;
+      --dlopen|-dlopen)
+			optarg="$1"
+			opt_dlopen="${opt_dlopen+$opt_dlopen
+}$optarg"
+			shift
+			;;
+      --preserve-dup-deps)
+			opt_preserve_dup_deps=:
+			;;
+      --features)
+			opt_features=:
+func_features
+			;;
+      --finish)
+			opt_finish=:
+set dummy --mode finish ${1+"$@"}; shift
+			;;
+      --help)
+			opt_help=:
+			;;
+      --help-all)
+			opt_help_all=:
+opt_help=': help-all'
+			;;
+      --mode)
+			test $# = 0 && func_missing_arg $opt && break
+			optarg="$1"
+			opt_mode="$optarg"
+case $optarg in
+  # Valid mode arguments:
+  clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+  # Catch anything else as an error
+  *) func_error "invalid argument for $opt"
+     exit_cmd=exit
+     break
+     ;;
+esac
+			shift
+			;;
+      --no-silent|--no-quiet)
+			opt_silent=false
+func_append preserve_args " $opt"
+			;;
+      --no-warning|--no-warn)
+			opt_warning=false
+func_append preserve_args " $opt"
+			;;
+      --no-verbose)
+			opt_verbose=false
+func_append preserve_args " $opt"
+			;;
+      --silent|--quiet)
+			opt_silent=:
+func_append preserve_args " $opt"
+        opt_verbose=false
+			;;
+      --verbose|-v)
+			opt_verbose=:
+func_append preserve_args " $opt"
+opt_silent=false
+			;;
+      --tag)
+			test $# = 0 && func_missing_arg $opt && break
+			optarg="$1"
+			opt_tag="$optarg"
+func_append preserve_args " $opt $optarg"
+func_enable_tag "$optarg"
+			shift
+			;;
+
+      -\?|-h)		func_usage				;;
+      --help)		func_help				;;
+      --version)	func_version				;;
+
+      # Separate optargs to long options:
+      --*=*)
+			func_split_long_opt "$opt"
+			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
+			shift
+			;;
+
+      # Separate non-argument short options:
+      -\?*|-h*|-n*|-v*)
+			func_split_short_opt "$opt"
+			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
+			shift
+			;;
+
+      --)		break					;;
+      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
+      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
+    esac
+  done
+
+  # Validate options:
+
+  # save first non-option argument
+  if test "$#" -gt 0; then
+    nonopt="$opt"
+    shift
+  fi
+
+  # preserve --debug
+  test "$opt_debug" = : || func_append preserve_args " --debug"
+
+  case $host in
+    *cygwin* | *mingw* | *pw32* | *cegcc*)
+      # don't eliminate duplications in $postdeps and $predeps
+      opt_duplicate_compiler_generated_deps=:
+      ;;
+    *)
+      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+      ;;
+  esac
+
+  $opt_help || {
+    # Sanity checks first:
+    func_check_version_match
+
+    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+      func_fatal_configuration "not configured to build any kind of library"
+    fi
+
+    # Darwin sucks
+    eval std_shrext=\"$shrext_cmds\"
+
+    # Only execute mode is allowed to have -dlopen flags.
+    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
+      func_error "unrecognized option \`-dlopen'"
+      $ECHO "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Change the help message to a mode-specific one.
+    generic_help="$help"
+    help="Try \`$progname --help --mode=$opt_mode' for more information."
+  }
+
+
+  # Bail if the options were screwed
+  $exit_cmd $EXIT_FAILURE
+}
+
+
+
+
+## ----------- ##
+##    Main.    ##
+## ----------- ##
+
+# func_lalib_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_lalib_p ()
+{
+    test -f "$1" &&
+      $SED -e 4q "$1" 2>/dev/null \
+        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
+# func_lalib_unsafe_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function implements the same check as func_lalib_p without
+# resorting to external programs.  To this end, it redirects stdin and
+# closes it afterwards, without saving the original file descriptor.
+# As a safety measure, use it only where a negative result would be
+# fatal anyway.  Works if `file' does not exist.
+func_lalib_unsafe_p ()
+{
+    lalib_p=no
+    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
+	for lalib_p_l in 1 2 3 4
+	do
+	    read lalib_p_line
+	    case "$lalib_p_line" in
+		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
+	    esac
+	done
+	exec 0<&5 5<&-
+    fi
+    test "$lalib_p" = yes
+}
+
+# func_ltwrapper_script_p file
+# True iff FILE is a libtool wrapper script
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_script_p ()
+{
+    func_lalib_p "$1"
+}
+
+# func_ltwrapper_executable_p file
+# True iff FILE is a libtool wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_executable_p ()
+{
+    func_ltwrapper_exec_suffix=
+    case $1 in
+    *.exe) ;;
+    *) func_ltwrapper_exec_suffix=.exe ;;
+    esac
+    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
+}
+
+# func_ltwrapper_scriptname file
+# Assumes file is an ltwrapper_executable
+# uses $file to determine the appropriate filename for a
+# temporary ltwrapper_script.
+func_ltwrapper_scriptname ()
+{
+    func_dirname_and_basename "$1" "" "."
+    func_stripname '' '.exe' "$func_basename_result"
+    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+}
+
+# func_ltwrapper_p file
+# True iff FILE is a libtool wrapper script or wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_p ()
+{
+    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
+}
+
+
+# func_execute_cmds commands fail_cmd
+# Execute tilde-delimited COMMANDS.
+# If FAIL_CMD is given, eval that upon failure.
+# FAIL_CMD may read-access the current command in variable CMD!
+func_execute_cmds ()
+{
+    $opt_debug
+    save_ifs=$IFS; IFS='~'
+    for cmd in $1; do
+      IFS=$save_ifs
+      eval cmd=\"$cmd\"
+      func_show_eval "$cmd" "${2-:}"
+    done
+    IFS=$save_ifs
+}
+
+
+# func_source file
+# Source FILE, adding directory component if necessary.
+# Note that it is not necessary on cygwin/mingw to append a dot to
+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
+# behavior happens only for exec(3), not for open(2)!  Also, sourcing
+# `FILE.' does not work on cygwin managed mounts.
+func_source ()
+{
+    $opt_debug
+    case $1 in
+    */* | *\\*)	. "$1" ;;
+    *)		. "./$1" ;;
+    esac
+}
+
+
+# func_resolve_sysroot PATH
+# Replace a leading = in PATH with a sysroot.  Store the result into
+# func_resolve_sysroot_result
+func_resolve_sysroot ()
+{
+  func_resolve_sysroot_result=$1
+  case $func_resolve_sysroot_result in
+  =*)
+    func_stripname '=' '' "$func_resolve_sysroot_result"
+    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
+    ;;
+  esac
+}
+
+# func_replace_sysroot PATH
+# If PATH begins with the sysroot, replace it with = and
+# store the result into func_replace_sysroot_result.
+func_replace_sysroot ()
+{
+  case "$lt_sysroot:$1" in
+  ?*:"$lt_sysroot"*)
+    func_stripname "$lt_sysroot" '' "$1"
+    func_replace_sysroot_result="=$func_stripname_result"
+    ;;
+  *)
+    # Including no sysroot.
+    func_replace_sysroot_result=$1
+    ;;
+  esac
+}
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+    $opt_debug
+    if test -n "$available_tags" && test -z "$tagname"; then
+      CC_quoted=
+      for arg in $CC; do
+	func_append_quoted CC_quoted "$arg"
+      done
+      CC_expanded=`func_echo_all $CC`
+      CC_quoted_expanded=`func_echo_all $CC_quoted`
+      case $@ in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+	for z in $available_tags; do
+	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+	    # Evaluate the configuration.
+	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+	    CC_quoted=
+	    for arg in $CC; do
+	      # Double-quote args containing other shell metacharacters.
+	      func_append_quoted CC_quoted "$arg"
+	    done
+	    CC_expanded=`func_echo_all $CC`
+	    CC_quoted_expanded=`func_echo_all $CC_quoted`
+	    case "$@ " in
+	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
+	      # The compiler in the base compile command matches
+	      # the one in the tagged configuration.
+	      # Assume this is the tagged configuration we want.
+	      tagname=$z
+	      break
+	      ;;
+	    esac
+	  fi
+	done
+	# If $tagname still isn't set, then no tagged configuration
+	# was found and let the user know that the "--tag" command
+	# line option must be used.
+	if test -z "$tagname"; then
+	  func_echo "unable to infer tagged configuration"
+	  func_fatal_error "specify a tag with \`--tag'"
+#	else
+#	  func_verbose "using $tagname tagged configuration"
+	fi
+	;;
+      esac
+    fi
+}
+
+
+
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# but don't create it if we're doing a dry run.
+func_write_libtool_object ()
+{
+    write_libobj=${1}
+    if test "$build_libtool_libs" = yes; then
+      write_lobj=\'${2}\'
+    else
+      write_lobj=none
+    fi
+
+    if test "$build_old_libs" = yes; then
+      write_oldobj=\'${3}\'
+    else
+      write_oldobj=none
+    fi
+
+    $opt_dry_run || {
+      cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+      $MV "${write_libobj}T" "${write_libobj}"
+    }
+}
+
+
+##################################################
+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
+##################################################
+
+# func_convert_core_file_wine_to_w32 ARG
+# Helper function used by file name conversion functions when $build is *nix,
+# and $host is mingw, cygwin, or some other w32 environment. Relies on a
+# correctly configured wine environment available, with the winepath program
+# in $build's $PATH.
+#
+# ARG is the $build file name to be converted to w32 format.
+# Result is available in $func_convert_core_file_wine_to_w32_result, and will
+# be empty on error (or when ARG is empty)
+func_convert_core_file_wine_to_w32 ()
+{
+  $opt_debug
+  func_convert_core_file_wine_to_w32_result="$1"
+  if test -n "$1"; then
+    # Unfortunately, winepath does not exit with a non-zero error code, so we
+    # are forced to check the contents of stdout. On the other hand, if the
+    # command is not found, the shell will set an exit code of 127 and print
+    # *an error message* to stdout. So we must check for both error code of
+    # zero AND non-empty stdout, which explains the odd construction:
+    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
+    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
+      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
+        $SED -e "$lt_sed_naive_backslashify"`
+    else
+      func_convert_core_file_wine_to_w32_result=
+    fi
+  fi
+}
+# end: func_convert_core_file_wine_to_w32
+
+
+# func_convert_core_path_wine_to_w32 ARG
+# Helper function used by path conversion functions when $build is *nix, and
+# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
+# configured wine environment available, with the winepath program in $build's
+# $PATH. Assumes ARG has no leading or trailing path separator characters.
+#
+# ARG is path to be converted from $build format to win32.
+# Result is available in $func_convert_core_path_wine_to_w32_result.
+# Unconvertible file (directory) names in ARG are skipped; if no directory names
+# are convertible, then the result may be empty.
+func_convert_core_path_wine_to_w32 ()
+{
+  $opt_debug
+  # unfortunately, winepath doesn't convert paths, only file names
+  func_convert_core_path_wine_to_w32_result=""
+  if test -n "$1"; then
+    oldIFS=$IFS
+    IFS=:
+    for func_convert_core_path_wine_to_w32_f in $1; do
+      IFS=$oldIFS
+      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
+      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
+        if test -z "$func_convert_core_path_wine_to_w32_result"; then
+          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
+        else
+          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
+        fi
+      fi
+    done
+    IFS=$oldIFS
+  fi
+}
+# end: func_convert_core_path_wine_to_w32
+
+
+# func_cygpath ARGS...
+# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
+# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
+# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
+# (2), returns the Cygwin file name or path in func_cygpath_result (input
+# file name or path is assumed to be in w32 format, as previously converted
+# from $build's *nix or MSYS format). In case (3), returns the w32 file name
+# or path in func_cygpath_result (input file name or path is assumed to be in
+# Cygwin format). Returns an empty string on error.
+#
+# ARGS are passed to cygpath, with the last one being the file name or path to
+# be converted.
+#
+# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
+# environment variable; do not put it in $PATH.
+func_cygpath ()
+{
+  $opt_debug
+  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
+    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
+    if test "$?" -ne 0; then
+      # on failure, ensure result is empty
+      func_cygpath_result=
+    fi
+  else
+    func_cygpath_result=
+    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
+  fi
+}
+#end: func_cygpath
+
+
+# func_convert_core_msys_to_w32 ARG
+# Convert file name or path ARG from MSYS format to w32 format.  Return
+# result in func_convert_core_msys_to_w32_result.
+func_convert_core_msys_to_w32 ()
+{
+  $opt_debug
+  # awkward: cmd appends spaces to result
+  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
+    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
+}
+#end: func_convert_core_msys_to_w32
+
+
+# func_convert_file_check ARG1 ARG2
+# Verify that ARG1 (a file name in $build format) was converted to $host
+# format in ARG2. Otherwise, emit an error message, but continue (resetting
+# func_to_host_file_result to ARG1).
+func_convert_file_check ()
+{
+  $opt_debug
+  if test -z "$2" && test -n "$1" ; then
+    func_error "Could not determine host file name corresponding to"
+    func_error "  \`$1'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback:
+    func_to_host_file_result="$1"
+  fi
+}
+# end func_convert_file_check
+
+
+# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
+# Verify that FROM_PATH (a path in $build format) was converted to $host
+# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
+# func_to_host_file_result to a simplistic fallback value (see below).
+func_convert_path_check ()
+{
+  $opt_debug
+  if test -z "$4" && test -n "$3"; then
+    func_error "Could not determine the host path corresponding to"
+    func_error "  \`$3'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback.  This is a deliberately simplistic "conversion" and
+    # should not be "improved".  See libtool.info.
+    if test "x$1" != "x$2"; then
+      lt_replace_pathsep_chars="s|$1|$2|g"
+      func_to_host_path_result=`echo "$3" |
+        $SED -e "$lt_replace_pathsep_chars"`
+    else
+      func_to_host_path_result="$3"
+    fi
+  fi
+}
+# end func_convert_path_check
+
+
+# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
+# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
+# and appending REPL if ORIG matches BACKPAT.
+func_convert_path_front_back_pathsep ()
+{
+  $opt_debug
+  case $4 in
+  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
+    ;;
+  esac
+  case $4 in
+  $2 ) func_append func_to_host_path_result "$3"
+    ;;
+  esac
+}
+# end func_convert_path_front_back_pathsep
+
+
+##################################################
+# $build to $host FILE NAME CONVERSION FUNCTIONS #
+##################################################
+# invoked via `$to_host_file_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# Result will be available in $func_to_host_file_result.
+
+
+# func_to_host_file ARG
+# Converts the file name ARG from $build format to $host format. Return result
+# in func_to_host_file_result.
+func_to_host_file ()
+{
+  $opt_debug
+  $to_host_file_cmd "$1"
+}
+# end func_to_host_file
+
+
+# func_to_tool_file ARG LAZY
+# converts the file name ARG from $build format to toolchain format. Return
+# result in func_to_tool_file_result.  If the conversion in use is listed
+# in (the comma separated) LAZY, no conversion takes place.
+func_to_tool_file ()
+{
+  $opt_debug
+  case ,$2, in
+    *,"$to_tool_file_cmd",*)
+      func_to_tool_file_result=$1
+      ;;
+    *)
+      $to_tool_file_cmd "$1"
+      func_to_tool_file_result=$func_to_host_file_result
+      ;;
+  esac
+}
+# end func_to_tool_file
+
+
+# func_convert_file_noop ARG
+# Copy ARG to func_to_host_file_result.
+func_convert_file_noop ()
+{
+  func_to_host_file_result="$1"
+}
+# end func_convert_file_noop
+
+
+# func_convert_file_msys_to_w32 ARG
+# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_file_result.
+func_convert_file_msys_to_w32 ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_w32
+
+
+# func_convert_file_cygwin_to_w32 ARG
+# Convert file name ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_file_cygwin_to_w32 ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
+    # LT_CYGPATH in this case.
+    func_to_host_file_result=`cygpath -m "$1"`
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_cygwin_to_w32
+
+
+# func_convert_file_nix_to_w32 ARG
+# Convert file name ARG from *nix to w32 format.  Requires a wine environment
+# and a working winepath. Returns result in func_to_host_file_result.
+func_convert_file_nix_to_w32 ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    func_convert_core_file_wine_to_w32 "$1"
+    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_w32
+
+
+# func_convert_file_msys_to_cygwin ARG
+# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_file_msys_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_msys_to_w32_result"
+    func_to_host_file_result="$func_cygpath_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_cygwin
+
+
+# func_convert_file_nix_to_cygwin ARG
+# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
+# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
+# in func_to_host_file_result.
+func_convert_file_nix_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
+    func_convert_core_file_wine_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
+    func_to_host_file_result="$func_cygpath_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_cygwin
+
+
+#############################################
+# $build to $host PATH CONVERSION FUNCTIONS #
+#############################################
+# invoked via `$to_host_path_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# The result will be available in $func_to_host_path_result.
+#
+# Path separators are also converted from $build format to $host format.  If
+# ARG begins or ends with a path separator character, it is preserved (but
+# converted to $host format) on output.
+#
+# All path conversion functions are named using the following convention:
+#   file name conversion function    : func_convert_file_X_to_Y ()
+#   path conversion function         : func_convert_path_X_to_Y ()
+# where, for any given $build/$host combination the 'X_to_Y' value is the
+# same.  If conversion functions are added for new $build/$host combinations,
+# the two new functions must follow this pattern, or func_init_to_host_path_cmd
+# will break.
+
+
+# func_init_to_host_path_cmd
+# Ensures that function "pointer" variable $to_host_path_cmd is set to the
+# appropriate value, based on the value of $to_host_file_cmd.
+to_host_path_cmd=
+func_init_to_host_path_cmd ()
+{
+  $opt_debug
+  if test -z "$to_host_path_cmd"; then
+    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
+    to_host_path_cmd="func_convert_path_${func_stripname_result}"
+  fi
+}
+
+
+# func_to_host_path ARG
+# Converts the path ARG from $build format to $host format. Return result
+# in func_to_host_path_result.
+func_to_host_path ()
+{
+  $opt_debug
+  func_init_to_host_path_cmd
+  $to_host_path_cmd "$1"
+}
+# end func_to_host_path
+
+
+# func_convert_path_noop ARG
+# Copy ARG to func_to_host_path_result.
+func_convert_path_noop ()
+{
+  func_to_host_path_result="$1"
+}
+# end func_convert_path_noop
+
+
+# func_convert_path_msys_to_w32 ARG
+# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_path_result.
+func_convert_path_msys_to_w32 ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from ARG.  MSYS
+    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
+    # and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_msys_to_w32
+
+
+# func_convert_path_cygwin_to_w32 ARG
+# Convert path ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_path_cygwin_to_w32 ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_cygwin_to_w32
+
+
+# func_convert_path_nix_to_w32 ARG
+# Convert path ARG from *nix to w32 format.  Requires a wine environment and
+# a working winepath.  Returns result in func_to_host_file_result.
+func_convert_path_nix_to_w32 ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_nix_to_w32
+
+
+# func_convert_path_msys_to_cygwin ARG
+# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_path_msys_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
+    func_to_host_path_result="$func_cygpath_result"
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
+}
+# end func_convert_path_msys_to_cygwin
+
+
+# func_convert_path_nix_to_cygwin ARG
+# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
+# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
+# func_to_host_file_result.
+func_convert_path_nix_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from
+    # ARG. msys behavior is inconsistent here, cygpath turns them
+    # into '.;' and ';.', and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
+    func_to_host_path_result="$func_cygpath_result"
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
+}
+# end func_convert_path_nix_to_cygwin
+
+
+# func_mode_compile arg...
+func_mode_compile ()
+{
+    $opt_debug
+    # Get the compilation command and the source file.
+    base_compile=
+    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
+    suppress_opt=yes
+    suppress_output=
+    arg_mode=normal
+    libobj=
+    later=
+    pie_flag=
+
+    for arg
+    do
+      case $arg_mode in
+      arg  )
+	# do not "continue".  Instead, add this to base_compile
+	lastarg="$arg"
+	arg_mode=normal
+	;;
+
+      target )
+	libobj="$arg"
+	arg_mode=normal
+	continue
+	;;
+
+      normal )
+	# Accept any command-line options.
+	case $arg in
+	-o)
+	  test -n "$libobj" && \
+	    func_fatal_error "you cannot specify \`-o' more than once"
+	  arg_mode=target
+	  continue
+	  ;;
+
+	-pie | -fpie | -fPIE)
+          func_append pie_flag " $arg"
+	  continue
+	  ;;
+
+	-shared | -static | -prefer-pic | -prefer-non-pic)
+	  func_append later " $arg"
+	  continue
+	  ;;
+
+	-no-suppress)
+	  suppress_opt=no
+	  continue
+	  ;;
+
+	-Xcompiler)
+	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
+	  continue      #  The current "srcfile" will either be retained or
+	  ;;            #  replaced later.  I would guess that would be a bug.
+
+	-Wc,*)
+	  func_stripname '-Wc,' '' "$arg"
+	  args=$func_stripname_result
+	  lastarg=
+	  save_ifs="$IFS"; IFS=','
+	  for arg in $args; do
+	    IFS="$save_ifs"
+	    func_append_quoted lastarg "$arg"
+	  done
+	  IFS="$save_ifs"
+	  func_stripname ' ' '' "$lastarg"
+	  lastarg=$func_stripname_result
+
+	  # Add the arguments to base_compile.
+	  func_append base_compile " $lastarg"
+	  continue
+	  ;;
+
+	*)
+	  # Accept the current argument as the source file.
+	  # The previous "srcfile" becomes the current argument.
+	  #
+	  lastarg="$srcfile"
+	  srcfile="$arg"
+	  ;;
+	esac  #  case $arg
+	;;
+      esac    #  case $arg_mode
+
+      # Aesthetically quote the previous argument.
+      func_append_quoted base_compile "$lastarg"
+    done # for arg
+
+    case $arg_mode in
+    arg)
+      func_fatal_error "you must specify an argument for -Xcompile"
+      ;;
+    target)
+      func_fatal_error "you must specify a target with \`-o'"
+      ;;
+    *)
+      # Get the name of the library object.
+      test -z "$libobj" && {
+	func_basename "$srcfile"
+	libobj="$func_basename_result"
+      }
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    case $libobj in
+    *.[cCFSifmso] | \
+    *.ada | *.adb | *.ads | *.asm | \
+    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
+    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
+      func_xform "$libobj"
+      libobj=$func_xform_result
+      ;;
+    esac
+
+    case $libobj in
+    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
+    *)
+      func_fatal_error "cannot determine name of library object from \`$libobj'"
+      ;;
+    esac
+
+    func_infer_tag $base_compile
+
+    for arg in $later; do
+      case $arg in
+      -shared)
+	test "$build_libtool_libs" != yes && \
+	  func_fatal_configuration "can not build a shared library"
+	build_old_libs=no
+	continue
+	;;
+
+      -static)
+	build_libtool_libs=no
+	build_old_libs=yes
+	continue
+	;;
+
+      -prefer-pic)
+	pic_mode=yes
+	continue
+	;;
+
+      -prefer-non-pic)
+	pic_mode=no
+	continue
+	;;
+      esac
+    done
+
+    func_quote_for_eval "$libobj"
+    test "X$libobj" != "X$func_quote_for_eval_result" \
+      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
+      && func_warning "libobj name \`$libobj' may not contain shell special characters."
+    func_dirname_and_basename "$obj" "/" ""
+    objname="$func_basename_result"
+    xdir="$func_dirname_result"
+    lobj=${xdir}$objdir/$objname
+
+    test -z "$base_compile" && \
+      func_fatal_help "you must specify a compilation command"
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $lobj $libobj ${libobj}T"
+    else
+      removelist="$lobj $libobj ${libobj}T"
+    fi
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2* | cegcc*)
+      pic_mode=default
+      ;;
+    esac
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+    else
+      output_obj=
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+	func_echo "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+	$ECHO "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$opt_dry_run || $RM $removelist
+	exit $EXIT_FAILURE
+      fi
+      func_append removelist " $output_obj"
+      $ECHO "$srcfile" > "$lockfile"
+    fi
+
+    $opt_dry_run || $RM $removelist
+    func_append removelist " $lockfile"
+    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
+    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
+    srcfile=$func_to_tool_file_result
+    func_quote_for_eval "$srcfile"
+    qsrcfile=$func_quote_for_eval_result
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+	command="$base_compile $qsrcfile $pic_flag"
+      else
+	# Don't build PIC code
+	command="$base_compile $qsrcfile"
+      fi
+
+      func_mkdir_p "$xdir$objdir"
+
+      if test -z "$output_obj"; then
+	# Place PIC objects in $objdir
+	func_append command " -o $lobj"
+      fi
+
+      func_show_eval_locale "$command"	\
+          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$opt_dry_run || $RM $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+	func_show_eval '$MV "$output_obj" "$lobj"' \
+	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+      fi
+
+      # Allow error messages only from the first compilation.
+      if test "$suppress_opt" = yes; then
+	suppress_output=' >/dev/null 2>&1'
+      fi
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+	# Don't build PIC code
+	command="$base_compile $qsrcfile$pie_flag"
+      else
+	command="$base_compile $qsrcfile $pic_flag"
+      fi
+      if test "$compiler_c_o" = yes; then
+	func_append command " -o $obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      func_append command "$suppress_output"
+      func_show_eval_locale "$command" \
+        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$opt_dry_run || $RM $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed
+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+	func_show_eval '$MV "$output_obj" "$obj"' \
+	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+      fi
+    fi
+
+    $opt_dry_run || {
+      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
+
+      # Unlock the critical section if it was locked
+      if test "$need_locks" != no; then
+	removelist=$lockfile
+        $RM "$lockfile"
+      fi
+    }
+
+    exit $EXIT_SUCCESS
+}
+
+$opt_help || {
+  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
+}
+
+func_mode_help ()
+{
+    # We need to display help for each of the modes.
+    case $opt_mode in
+      "")
+        # Generic help is extracted from the usage comments
+        # at the start of this file.
+        func_help
+        ;;
+
+      clean)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+        ;;
+
+      compile)
+      $ECHO \
+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -no-suppress      do not suppress compiler output for multiple passes
+  -prefer-pic       try to build PIC objects only
+  -prefer-non-pic   try to build non-PIC objects only
+  -shared           do not build a \`.o' file suitable for static linking
+  -static           only build a \`.o' file suitable for static linking
+  -Wc,FLAG          pass FLAG directly to the compiler
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+        ;;
+
+      execute)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+        ;;
+
+      finish)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+        ;;
+
+      install)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The following components of INSTALL-COMMAND are treated specially:
+
+  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+        ;;
+
+      link)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -bindir BINDIR    specify path to binaries directory (for systems where
+                    libraries must be found in the PATH setting at runtime)
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+                    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+                    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -shared           only do dynamic linking of libtool libraries
+  -shrext SUFFIX    override the standard shared library file extension
+  -static           do not do any dynamic linking of uninstalled libtool libraries
+  -static-libtool-libs
+                    do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+                    specify library version info [each variable defaults to 0]
+  -weak LIBNAME     declare that the target provides the LIBNAME interface
+  -Wc,FLAG
+  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
+  -Wl,FLAG
+  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
+  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+        ;;
+
+      uninstall)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+        ;;
+
+      *)
+        func_fatal_help "invalid operation mode \`$opt_mode'"
+        ;;
+    esac
+
+    echo
+    $ECHO "Try \`$progname --help' for more information about other modes."
+}
+
+# Now that we've collected a possible --mode arg, show help if necessary
+if $opt_help; then
+  if test "$opt_help" = :; then
+    func_mode_help
+  else
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+	func_mode_help
+      done
+    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+	echo
+	func_mode_help
+      done
+    } |
+    sed '1d
+      /^When reporting/,/^Report/{
+	H
+	d
+      }
+      $x
+      /information about other modes/d
+      /more detailed .*MODE/d
+      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
+  fi
+  exit $?
+fi
+
+
+# func_mode_execute arg...
+func_mode_execute ()
+{
+    $opt_debug
+    # The first argument is the command name.
+    cmd="$nonopt"
+    test -z "$cmd" && \
+      func_fatal_help "you must specify a COMMAND"
+
+    # Handle -dlopen flags immediately.
+    for file in $opt_dlopen; do
+      test -f "$file" \
+	|| func_fatal_help "\`$file' is not a file"
+
+      dir=
+      case $file in
+      *.la)
+	func_resolve_sysroot "$file"
+	file=$func_resolve_sysroot_result
+
+	# Check to see that this really is a libtool archive.
+	func_lalib_unsafe_p "$file" \
+	  || func_fatal_help "\`$lib' is not a valid libtool archive"
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+	func_source "$file"
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && \
+	    func_warning "\`$file' was not linked with \`-export-dynamic'"
+	  continue
+	fi
+
+	func_dirname "$file" "" "."
+	dir="$func_dirname_result"
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  func_append dir "/$objdir"
+	else
+	  if test ! -f "$dir/$dlname"; then
+	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+	  fi
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	func_dirname "$file" "" "."
+	dir="$func_dirname_result"
+	;;
+
+      *)
+	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
+	continue
+	;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+	eval "$shlibpath_var=\"\$dir\""
+      else
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -* | *.la | *.lo ) ;;
+      *)
+	# Do a test to see if this is really a libtool program.
+	if func_ltwrapper_script_p "$file"; then
+	  func_source "$file"
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	elif func_ltwrapper_executable_p "$file"; then
+	  func_ltwrapper_scriptname "$file"
+	  func_source "$func_ltwrapper_scriptname_result"
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	fi
+	;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      func_append_quoted args "$file"
+    done
+
+    if test "X$opt_dry_run" = Xfalse; then
+      if test -n "$shlibpath_var"; then
+	# Export the shlibpath_var.
+	eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+      do
+	eval "if test \"\${save_$lt_var+set}\" = set; then
+                $lt_var=\$save_$lt_var; export $lt_var
+	      else
+		$lt_unset $lt_var
+	      fi"
+      done
+
+      # Now prepare to actually exec the command.
+      exec_cmd="\$cmd$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+	echo "export $shlibpath_var"
+      fi
+      $ECHO "$cmd$args"
+      exit $EXIT_SUCCESS
+    fi
+}
+
+test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+    $opt_debug
+    libs=
+    libdirs=
+    admincmds=
+
+    for opt in "$nonopt" ${1+"$@"}
+    do
+      if test -d "$opt"; then
+	func_append libdirs " $opt"
+
+      elif test -f "$opt"; then
+	if func_lalib_unsafe_p "$opt"; then
+	  func_append libs " $opt"
+	else
+	  func_warning "\`$opt' is not a valid libtool archive"
+	fi
+
+      else
+	func_fatal_error "invalid argument \`$opt'"
+      fi
+    done
+
+    if test -n "$libs"; then
+      if test -n "$lt_sysroot"; then
+        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
+        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
+      else
+        sysroot_cmd=
+      fi
+
+      # Remove sysroot references
+      if $opt_dry_run; then
+        for lib in $libs; do
+          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
+        done
+      else
+        tmpdir=`func_mktempdir`
+        for lib in $libs; do
+	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
+	    > $tmpdir/tmp-la
+	  mv -f $tmpdir/tmp-la $lib
+	done
+        ${RM}r "$tmpdir"
+      fi
+    fi
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for libdir in $libdirs; do
+	if test -n "$finish_cmds"; then
+	  # Do each command in the finish commands.
+	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
+'"$cmd"'"'
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $opt_dry_run || eval "$cmds" || func_append admincmds "
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    $opt_silent && exit $EXIT_SUCCESS
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      echo "----------------------------------------------------------------------"
+      echo "Libraries have been installed in:"
+      for libdir in $libdirs; do
+	$ECHO "   $libdir"
+      done
+      echo
+      echo "If you ever happen to want to link against installed libraries"
+      echo "in a given directory, LIBDIR, you must either use libtool, and"
+      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+      echo "flag during linking and do at least one of the following:"
+      if test -n "$shlibpath_var"; then
+	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+	echo "     during execution"
+      fi
+      if test -n "$runpath_var"; then
+	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+	echo "     during linking"
+      fi
+      if test -n "$hardcode_libdir_flag_spec"; then
+	libdir=LIBDIR
+	eval flag=\"$hardcode_libdir_flag_spec\"
+
+	$ECHO "   - use the \`$flag' linker flag"
+      fi
+      if test -n "$admincmds"; then
+	$ECHO "   - have your system administrator run these commands:$admincmds"
+      fi
+      if test -f /etc/ld.so.conf; then
+	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+      fi
+      echo
+
+      echo "See any operating system documentation about shared libraries for"
+      case $host in
+	solaris2.[6789]|solaris2.1[0-9])
+	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+	  echo "pages."
+	  ;;
+	*)
+	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
+	  ;;
+      esac
+      echo "----------------------------------------------------------------------"
+    fi
+    exit $EXIT_SUCCESS
+}
+
+test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
+
+
+# func_mode_install arg...
+func_mode_install ()
+{
+    $opt_debug
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       case $nonopt in *shtool*) :;; *) false;; esac; then
+      # Aesthetically quote it.
+      func_quote_for_eval "$nonopt"
+      install_prog="$func_quote_for_eval_result "
+      arg=$1
+      shift
+    else
+      install_prog=
+      arg=$nonopt
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    func_quote_for_eval "$arg"
+    func_append install_prog "$func_quote_for_eval_result"
+    install_shared_prog=$install_prog
+    case " $install_prog " in
+      *[\\\ /]cp\ *) install_cp=: ;;
+      *) install_cp=false ;;
+    esac
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    no_mode=:
+    for arg
+    do
+      arg2=
+      if test -n "$dest"; then
+	func_append files " $dest"
+	dest=$arg
+	continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f)
+	if $install_cp; then :; else
+	  prev=$arg
+	fi
+	;;
+      -g | -m | -o)
+	prev=$arg
+	;;
+      -s)
+	stripme=" -s"
+	continue
+	;;
+      -*)
+	;;
+      *)
+	# If the previous option needed an argument, then skip it.
+	if test -n "$prev"; then
+	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
+	    arg2=$install_override_mode
+	    no_mode=false
+	  fi
+	  prev=
+	else
+	  dest=$arg
+	  continue
+	fi
+	;;
+      esac
+
+      # Aesthetically quote the argument.
+      func_quote_for_eval "$arg"
+      func_append install_prog " $func_quote_for_eval_result"
+      if test -n "$arg2"; then
+	func_quote_for_eval "$arg2"
+      fi
+      func_append install_shared_prog " $func_quote_for_eval_result"
+    done
+
+    test -z "$install_prog" && \
+      func_fatal_help "you must specify an install program"
+
+    test -n "$prev" && \
+      func_fatal_help "the \`$prev' option requires an argument"
+
+    if test -n "$install_override_mode" && $no_mode; then
+      if $install_cp; then :; else
+	func_quote_for_eval "$install_override_mode"
+	func_append install_shared_prog " -m $func_quote_for_eval_result"
+      fi
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+	func_fatal_help "no file or destination specified"
+      else
+	func_fatal_help "you must specify a destination"
+      fi
+    fi
+
+    # Strip any trailing slash from the destination.
+    func_stripname '' '/' "$dest"
+    dest=$func_stripname_result
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      func_dirname_and_basename "$dest" "" "."
+      destdir="$func_dirname_result"
+      destname="$func_basename_result"
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files; shift
+      test "$#" -gt 1 && \
+	func_fatal_help "\`$dest' is not a directory"
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+	case $file in
+	*.lo) ;;
+	*)
+	  func_fatal_help "\`$destdir' must be an absolute directory name"
+	  ;;
+	esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+	# Do the static libraries later.
+	func_append staticlibs " $file"
+	;;
+
+      *.la)
+	func_resolve_sysroot "$file"
+	file=$func_resolve_sysroot_result
+
+	# Check to see that this really is a libtool archive.
+	func_lalib_unsafe_p "$file" \
+	  || func_fatal_help "\`$file' is not a valid libtool archive"
+
+	library_names=
+	old_library=
+	relink_command=
+	func_source "$file"
+
+	# Add the libdir to current_libdirs if it is the destination.
+	if test "X$destdir" = "X$libdir"; then
+	  case "$current_libdirs " in
+	  *" $libdir "*) ;;
+	  *) func_append current_libdirs " $libdir" ;;
+	  esac
+	else
+	  # Note the libdir as a future libdir.
+	  case "$future_libdirs " in
+	  *" $libdir "*) ;;
+	  *) func_append future_libdirs " $libdir" ;;
+	  esac
+	fi
+
+	func_dirname "$file" "/" ""
+	dir="$func_dirname_result"
+	func_append dir "$objdir"
+
+	if test -n "$relink_command"; then
+	  # Determine the prefix the user has applied to our future dir.
+	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
+
+	  # Don't allow the user to place us outside of our expected
+	  # location b/c this prevents finding dependent libraries that
+	  # are installed to the same prefix.
+	  # At present, this check doesn't affect windows .dll's that
+	  # are installed into $libdir/../bin (currently, that works fine)
+	  # but it's something to keep an eye on.
+	  test "$inst_prefix_dir" = "$destdir" && \
+	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
+
+	  if test -n "$inst_prefix_dir"; then
+	    # Stick the inst_prefix_dir data into the link command.
+	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+	  else
+	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+	  fi
+
+	  func_warning "relinking \`$file'"
+	  func_show_eval "$relink_command" \
+	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
+	fi
+
+	# See the names of the shared library.
+	set dummy $library_names; shift
+	if test -n "$1"; then
+	  realname="$1"
+	  shift
+
+	  srcname="$realname"
+	  test -n "$relink_command" && srcname="$realname"T
+
+	  # Install the shared library and build the symlinks.
+	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
+	      'exit $?'
+	  tstripme="$stripme"
+	  case $host_os in
+	  cygwin* | mingw* | pw32* | cegcc*)
+	    case $realname in
+	    *.dll.a)
+	      tstripme=""
+	      ;;
+	    esac
+	    ;;
+	  esac
+	  if test -n "$tstripme" && test -n "$striplib"; then
+	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
+	  fi
+
+	  if test "$#" -gt 0; then
+	    # Delete the old symlinks, and create new ones.
+	    # Try `ln -sf' first, because the `ln' binary might depend on
+	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
+	    # so we also need to try rm && ln -s.
+	    for linkname
+	    do
+	      test "$linkname" != "$realname" \
+		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
+	    done
+	  fi
+
+	  # Do each command in the postinstall commands.
+	  lib="$destdir/$realname"
+	  func_execute_cmds "$postinstall_cmds" 'exit $?'
+	fi
+
+	# Install the pseudo-library for information purposes.
+	func_basename "$file"
+	name="$func_basename_result"
+	instname="$dir/$name"i
+	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
+
+	# Maybe install the static library, too.
+	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
+	;;
+
+      *.lo)
+	# Install (i.e. copy) a libtool object.
+
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  func_basename "$file"
+	  destfile="$func_basename_result"
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Deduce the name of the destination old-style object file.
+	case $destfile in
+	*.lo)
+	  func_lo2o "$destfile"
+	  staticdest=$func_lo2o_result
+	  ;;
+	*.$objext)
+	  staticdest="$destfile"
+	  destfile=
+	  ;;
+	*)
+	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
+	  ;;
+	esac
+
+	# Install the libtool object if requested.
+	test -n "$destfile" && \
+	  func_show_eval "$install_prog $file $destfile" 'exit $?'
+
+	# Install the old object if enabled.
+	if test "$build_old_libs" = yes; then
+	  # Deduce the name of the old-style object file.
+	  func_lo2o "$file"
+	  staticobj=$func_lo2o_result
+	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
+	fi
+	exit $EXIT_SUCCESS
+	;;
+
+      *)
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  func_basename "$file"
+	  destfile="$func_basename_result"
+	  destfile="$destdir/$destfile"
+	fi
+
+	# If the file is missing, and there is a .exe on the end, strip it
+	# because it is most likely a libtool script we actually want to
+	# install
+	stripped_ext=""
+	case $file in
+	  *.exe)
+	    if test ! -f "$file"; then
+	      func_stripname '' '.exe' "$file"
+	      file=$func_stripname_result
+	      stripped_ext=".exe"
+	    fi
+	    ;;
+	esac
+
+	# Do a test to see if this is really a libtool program.
+	case $host in
+	*cygwin* | *mingw*)
+	    if func_ltwrapper_executable_p "$file"; then
+	      func_ltwrapper_scriptname "$file"
+	      wrapper=$func_ltwrapper_scriptname_result
+	    else
+	      func_stripname '' '.exe' "$file"
+	      wrapper=$func_stripname_result
+	    fi
+	    ;;
+	*)
+	    wrapper=$file
+	    ;;
+	esac
+	if func_ltwrapper_script_p "$wrapper"; then
+	  notinst_deplibs=
+	  relink_command=
+
+	  func_source "$wrapper"
+
+	  # Check the variables that should have been set.
+	  test -z "$generated_by_libtool_version" && \
+	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
+
+	  finalize=yes
+	  for lib in $notinst_deplibs; do
+	    # Check to see that each library is installed.
+	    libdir=
+	    if test -f "$lib"; then
+	      func_source "$lib"
+	    fi
+	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      func_warning "\`$lib' has not been installed in \`$libdir'"
+	      finalize=no
+	    fi
+	  done
+
+	  relink_command=
+	  func_source "$wrapper"
+
+	  outputname=
+	  if test "$fast_install" = no && test -n "$relink_command"; then
+	    $opt_dry_run || {
+	      if test "$finalize" = yes; then
+	        tmpdir=`func_mktempdir`
+		func_basename "$file$stripped_ext"
+		file="$func_basename_result"
+	        outputname="$tmpdir/$file"
+	        # Replace the output file specification.
+	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
+
+	        $opt_silent || {
+	          func_quote_for_expand "$relink_command"
+		  eval "func_echo $func_quote_for_expand_result"
+	        }
+	        if eval "$relink_command"; then :
+	          else
+		  func_error "error: relink \`$file' with the above command before installing it"
+		  $opt_dry_run || ${RM}r "$tmpdir"
+		  continue
+	        fi
+	        file="$outputname"
+	      else
+	        func_warning "cannot relink \`$file'"
+	      fi
+	    }
+	  else
+	    # Install the binary that we compiled earlier.
+	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
+	  fi
+	fi
+
+	# remove .exe since cygwin /usr/bin/install will append another
+	# one anyway
+	case $install_prog,$host in
+	*/usr/bin/install*,*cygwin*)
+	  case $file:$destfile in
+	  *.exe:*.exe)
+	    # this is ok
+	    ;;
+	  *.exe:*)
+	    destfile=$destfile.exe
+	    ;;
+	  *:*.exe)
+	    func_stripname '' '.exe' "$destfile"
+	    destfile=$func_stripname_result
+	    ;;
+	  esac
+	  ;;
+	esac
+	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
+	$opt_dry_run || if test -n "$outputname"; then
+	  ${RM}r "$tmpdir"
+	fi
+	;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      func_basename "$file"
+      name="$func_basename_result"
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+      tool_oldlib=$func_to_tool_file_result
+
+      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
+      fi
+
+      # Do each command in the postinstall commands.
+      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
+    done
+
+    test -n "$future_libdirs" && \
+      func_warning "remember to run \`$progname --finish$future_libdirs'"
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      $opt_dry_run && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+    else
+      exit $EXIT_SUCCESS
+    fi
+}
+
+test "$opt_mode" = install && func_mode_install ${1+"$@"}
+
+
+# func_generate_dlsyms outputname originator pic_p
+# Extract symbols from dlprefiles and create ${outputname}S.o with
+# a dlpreopen symbol table.
+func_generate_dlsyms ()
+{
+    $opt_debug
+    my_outputname="$1"
+    my_originator="$2"
+    my_pic_p="${3-no}"
+    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
+    my_dlsyms=
+
+    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+      if test -n "$NM" && test -n "$global_symbol_pipe"; then
+	my_dlsyms="${my_outputname}S.c"
+      else
+	func_error "not configured to extract global symbols from dlpreopened files"
+      fi
+    fi
+
+    if test -n "$my_dlsyms"; then
+      case $my_dlsyms in
+      "") ;;
+      *.c)
+	# Discover the nlist of each of the dlfiles.
+	nlist="$output_objdir/${my_outputname}.nm"
+
+	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
+
+	# Parse the name list into a source file.
+	func_verbose "creating $output_objdir/$my_dlsyms"
+
+	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
+#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
+#endif
+
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data.  */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+/* External symbol declarations for the compiler. */\
+"
+
+	if test "$dlself" = yes; then
+	  func_verbose "generating symbol list for \`$output'"
+
+	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
+
+	  # Add our own program objects to the symbol list.
+	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+	  for progfile in $progfiles; do
+	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
+	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
+	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
+	  done
+
+	  if test -n "$exclude_expsyms"; then
+	    $opt_dry_run || {
+	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+	      eval '$MV "$nlist"T "$nlist"'
+	    }
+	  fi
+
+	  if test -n "$export_symbols_regex"; then
+	    $opt_dry_run || {
+	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+	      eval '$MV "$nlist"T "$nlist"'
+	    }
+	  fi
+
+	  # Prepare the list of exported symbols
+	  if test -z "$export_symbols"; then
+	    export_symbols="$output_objdir/$outputname.exp"
+	    $opt_dry_run || {
+	      $RM $export_symbols
+	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	      case $host in
+	      *cygwin* | *mingw* | *cegcc* )
+                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+	        ;;
+	      esac
+	    }
+	  else
+	    $opt_dry_run || {
+	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+	      eval '$MV "$nlist"T "$nlist"'
+	      case $host in
+	        *cygwin* | *mingw* | *cegcc* )
+	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+	          ;;
+	      esac
+	    }
+	  fi
+	fi
+
+	for dlprefile in $dlprefiles; do
+	  func_verbose "extracting global C symbols from \`$dlprefile'"
+	  func_basename "$dlprefile"
+	  name="$func_basename_result"
+          case $host in
+	    *cygwin* | *mingw* | *cegcc* )
+	      # if an import library, we need to obtain dlname
+	      if func_win32_import_lib_p "$dlprefile"; then
+	        func_tr_sh "$dlprefile"
+	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
+	        dlprefile_dlbasename=""
+	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
+	          # Use subshell, to avoid clobbering current variable values
+	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
+	          if test -n "$dlprefile_dlname" ; then
+	            func_basename "$dlprefile_dlname"
+	            dlprefile_dlbasename="$func_basename_result"
+	          else
+	            # no lafile. user explicitly requested -dlpreopen <import library>.
+	            $sharedlib_from_linklib_cmd "$dlprefile"
+	            dlprefile_dlbasename=$sharedlib_from_linklib_result
+	          fi
+	        fi
+	        $opt_dry_run || {
+	          if test -n "$dlprefile_dlbasename" ; then
+	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
+	          else
+	            func_warning "Could not compute DLL name from $name"
+	            eval '$ECHO ": $name " >> "$nlist"'
+	          fi
+	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
+	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
+	        }
+	      else # not an import lib
+	        $opt_dry_run || {
+	          eval '$ECHO ": $name " >> "$nlist"'
+	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+	        }
+	      fi
+	    ;;
+	    *)
+	      $opt_dry_run || {
+	        eval '$ECHO ": $name " >> "$nlist"'
+	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+	      }
+	    ;;
+          esac
+	done
+
+	$opt_dry_run || {
+	  # Make sure we have at least an empty file.
+	  test -f "$nlist" || : > "$nlist"
+
+	  if test -n "$exclude_expsyms"; then
+	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+	    $MV "$nlist"T "$nlist"
+	  fi
+
+	  # Try sorting and uniquifying the output.
+	  if $GREP -v "^: " < "$nlist" |
+	      if sort -k 3 </dev/null >/dev/null 2>&1; then
+		sort -k 3
+	      else
+		sort +2
+	      fi |
+	      uniq > "$nlist"S; then
+	    :
+	  else
+	    $GREP -v "^: " < "$nlist" > "$nlist"S
+	  fi
+
+	  if test -f "$nlist"S; then
+	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
+	  else
+	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
+	  fi
+
+	  echo >> "$output_objdir/$my_dlsyms" "\
+
+/* The mapping between symbol names and symbols.  */
+typedef struct {
+  const char *name;
+  void *address;
+} lt_dlsymlist;
+extern LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[];
+LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{\
+  { \"$my_originator\", (void *) 0 },"
+
+	  case $need_lib_prefix in
+	  no)
+	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
+	    ;;
+	  *)
+	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
+	    ;;
+	  esac
+	  echo >> "$output_objdir/$my_dlsyms" "\
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_${my_prefix}_LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	} # !$opt_dry_run
+
+	pic_flag_for_symtable=
+	case "$compile_command " in
+	*" -static "*) ;;
+	*)
+	  case $host in
+	  # compiling the symbol table file with pic_flag works around
+	  # a FreeBSD bug that causes programs to crash when -lm is
+	  # linked before any other PIC object.  But we must not use
+	  # pic_flag when linking with -static.  The problem exists in
+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
+	  *-*-hpux*)
+	    pic_flag_for_symtable=" $pic_flag"  ;;
+	  *)
+	    if test "X$my_pic_p" != Xno; then
+	      pic_flag_for_symtable=" $pic_flag"
+	    fi
+	    ;;
+	  esac
+	  ;;
+	esac
+	symtab_cflags=
+	for arg in $LTCFLAGS; do
+	  case $arg in
+	  -pie | -fpie | -fPIE) ;;
+	  *) func_append symtab_cflags " $arg" ;;
+	  esac
+	done
+
+	# Now compile the dynamic symbol file.
+	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
+
+	# Clean up the generated files.
+	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
+
+	# Transform the symbol file into the correct name.
+	symfileobj="$output_objdir/${my_outputname}S.$objext"
+	case $host in
+	*cygwin* | *mingw* | *cegcc* )
+	  if test -f "$output_objdir/$my_outputname.def"; then
+	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+	  else
+	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	  fi
+	  ;;
+	*)
+	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	  ;;
+	esac
+	;;
+      *)
+	func_fatal_error "unknown suffix for \`$my_dlsyms'"
+	;;
+      esac
+    else
+      # We keep going just in case the user didn't refer to
+      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+      # really was required.
+
+      # Nullify the symbol file.
+      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
+      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
+    fi
+}
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+# Despite the name, also deal with 64 bit binaries.
+func_win32_libid ()
+{
+  $opt_debug
+  win32_libid_type="unknown"
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
+       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
+      func_to_tool_file "$1" func_convert_file_msys_to_w32
+      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+	$SED -n -e '
+	    1,100{
+		/ I /{
+		    s,.*,import,
+		    p
+		    q
+		}
+	    }'`
+      case $win32_nmres in
+      import*)  win32_libid_type="x86 archive import";;
+      *)        win32_libid_type="x86 archive static";;
+      esac
+    fi
+    ;;
+  *DLL*)
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $ECHO "$win32_libid_type"
+}
+
+# func_cygming_dll_for_implib ARG
+#
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib ()
+{
+  $opt_debug
+  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
+}
+
+# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
+#
+# The is the core of a fallback implementation of a
+# platform-specific function to extract the name of the
+# DLL associated with the specified import library LIBNAME.
+#
+# SECTION_NAME is either .idata$6 or .idata$7, depending
+# on the platform and compiler that created the implib.
+#
+# Echos the name of the DLL associated with the
+# specified import library.
+func_cygming_dll_for_implib_fallback_core ()
+{
+  $opt_debug
+  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
+  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
+    $SED '/^Contents of section '"$match_literal"':/{
+      # Place marker at beginning of archive member dllname section
+      s/.*/====MARK====/
+      p
+      d
+    }
+    # These lines can sometimes be longer than 43 characters, but
+    # are always uninteresting
+    /:[	 ]*file format pe[i]\{,1\}-/d
+    /^In archive [^:]*:/d
+    # Ensure marker is printed
+    /^====MARK====/p
+    # Remove all lines with less than 43 characters
+    /^.\{43\}/!d
+    # From remaining lines, remove first 43 characters
+    s/^.\{43\}//' |
+    $SED -n '
+      # Join marker and all lines until next marker into a single line
+      /^====MARK====/ b para
+      H
+      $ b para
+      b
+      :para
+      x
+      s/\n//g
+      # Remove the marker
+      s/^====MARK====//
+      # Remove trailing dots and whitespace
+      s/[\. \t]*$//
+      # Print
+      /./p' |
+    # we now have a list, one entry per line, of the stringified
+    # contents of the appropriate section of all members of the
+    # archive which possess that section. Heuristic: eliminate
+    # all those which have a first or second character that is
+    # a '.' (that is, objdump's representation of an unprintable
+    # character.) This should work for all archives with less than
+    # 0x302f exports -- but will fail for DLLs whose name actually
+    # begins with a literal '.' or a single character followed by
+    # a '.'.
+    #
+    # Of those that remain, print the first one.
+    $SED -e '/^\./d;/^.\./d;q'
+}
+
+# func_cygming_gnu_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is a GNU/binutils-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_gnu_implib_p ()
+{
+  $opt_debug
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
+  test -n "$func_cygming_gnu_implib_tmp"
+}
+
+# func_cygming_ms_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is an MS-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_ms_implib_p ()
+{
+  $opt_debug
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
+  test -n "$func_cygming_ms_implib_tmp"
+}
+
+# func_cygming_dll_for_implib_fallback ARG
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+#
+# This fallback implementation is for use when $DLLTOOL
+# does not support the --identify-strict option.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib_fallback ()
+{
+  $opt_debug
+  if func_cygming_gnu_implib_p "$1" ; then
+    # binutils import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
+  elif func_cygming_ms_implib_p "$1" ; then
+    # ms-generated import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
+  else
+    # unknown
+    sharedlib_from_linklib_result=""
+  fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+    $opt_debug
+    f_ex_an_ar_dir="$1"; shift
+    f_ex_an_ar_oldlib="$1"
+    if test "$lock_old_archive_extraction" = yes; then
+      lockfile=$f_ex_an_ar_oldlib.lock
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+	func_echo "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    fi
+    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
+		   'stat=$?; rm -f "$lockfile"; exit $stat'
+    if test "$lock_old_archive_extraction" = yes; then
+      $opt_dry_run || rm -f "$lockfile"
+    fi
+    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+     :
+    else
+      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
+    fi
+}
+
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+    $opt_debug
+    my_gentop="$1"; shift
+    my_oldlibs=${1+"$@"}
+    my_oldobjs=""
+    my_xlib=""
+    my_xabs=""
+    my_xdir=""
+
+    for my_xlib in $my_oldlibs; do
+      # Extract the objects.
+      case $my_xlib in
+	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+	*) my_xabs=`pwd`"/$my_xlib" ;;
+      esac
+      func_basename "$my_xlib"
+      my_xlib="$func_basename_result"
+      my_xlib_u=$my_xlib
+      while :; do
+        case " $extracted_archives " in
+	*" $my_xlib_u "*)
+	  func_arith $extracted_serial + 1
+	  extracted_serial=$func_arith_result
+	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
+	*) break ;;
+	esac
+      done
+      extracted_archives="$extracted_archives $my_xlib_u"
+      my_xdir="$my_gentop/$my_xlib_u"
+
+      func_mkdir_p "$my_xdir"
+
+      case $host in
+      *-darwin*)
+	func_verbose "Extracting $my_xabs"
+	# Do not bother doing anything if just a dry run
+	$opt_dry_run || {
+	  darwin_orig_dir=`pwd`
+	  cd $my_xdir || exit $?
+	  darwin_archive=$my_xabs
+	  darwin_curdir=`pwd`
+	  darwin_base_archive=`basename "$darwin_archive"`
+	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
+	  if test -n "$darwin_arches"; then
+	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
+	    darwin_arch=
+	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
+	    for darwin_arch in  $darwin_arches ; do
+	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+	      cd "$darwin_curdir"
+	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+	    done # $darwin_arches
+            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
+	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
+	    darwin_file=
+	    darwin_files=
+	    for darwin_file in $darwin_filelist; do
+	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
+	      $LIPO -create -output "$darwin_file" $darwin_files
+	    done # $darwin_filelist
+	    $RM -rf unfat-$$
+	    cd "$darwin_orig_dir"
+	  else
+	    cd $darwin_orig_dir
+	    func_extract_an_archive "$my_xdir" "$my_xabs"
+	  fi # $darwin_arches
+	} # !$opt_dry_run
+	;;
+      *)
+        func_extract_an_archive "$my_xdir" "$my_xabs"
+	;;
+      esac
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
+    done
+
+    func_extract_archives_result="$my_oldobjs"
+}
+
+
+# func_emit_wrapper [arg=no]
+#
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable.  Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take.  If 'yes', then the emitted script
+# will assume that the directory in which it is stored is
+# the $objdir directory.  This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
+{
+	func_emit_wrapper_arg1=${1-no}
+
+	$ECHO "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='$sed_quote_subst'
+
+# Be Bourne compatible
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='$macro_version'
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$ECHO are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    file=\"\$0\""
+
+    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
+    $ECHO "\
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+    ECHO=\"$qECHO\"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ which is used only on
+# windows platforms, and (c) all begin with the string "--lt-"
+# (application programs are unlikely to have options which match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's $0 value, followed by "$@".
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=\$0
+  shift
+  for lt_opt
+  do
+    case \"\$lt_opt\" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
+        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
+        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
+        cat \"\$lt_dump_D/\$lt_dump_F\"
+        exit 0
+      ;;
+    --lt-*)
+        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n \"\$lt_option_debug\"; then
+    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
+    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+"
+  case $host in
+  # Backslashes separate directories on plain windows
+  *-*-mingw | *-*-os2* | *-cegcc*)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+    ;;
+
+  *)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+    ;;
+  esac
+  $ECHO "\
+      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from \$@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case \" \$* \" in
+  *\\ --lt-*)
+    for lt_wr_arg
+    do
+      case \$lt_wr_arg in
+      --lt-*) ;;
+      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core \${1+\"\$@\"}
+}
+
+  # Parse options
+  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
+  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
+    # special case for '.'
+    if test \"\$thisdir\" = \".\"; then
+      thisdir=\`pwd\`
+    fi
+    # remove .libs from thisdir
+    case \"\$thisdir\" in
+    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
+    $objdir )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+	if test "$fast_install" = yes; then
+	  $ECHO "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" ||
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $MKDIR \"\$progdir\"
+    else
+      $RM \"\$progdir/\$file\"
+    fi"
+
+	  $ECHO "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+	$ECHO \"\$relink_command_output\" >&2
+	$RM \"\$progdir/\$file\"
+	exit 1
+      fi
+    fi
+
+    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $RM \"\$progdir/\$program\";
+      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $RM \"\$progdir/\$file\"
+  fi"
+	else
+	  $ECHO "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+	fi
+
+	$ECHO "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+	# fixup the dll searchpath if we need to.
+	#
+	# Fix the DLL searchpath if we need to.  Do this before prepending
+	# to shlibpath, because on Windows, both are PATH and uninstalled
+	# libraries must come first.
+	if test -n "$dllsearchpath"; then
+	  $ECHO "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	# Export our shlibpath_var if we have one.
+	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	  $ECHO "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+	fi
+
+	$ECHO "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+      func_exec_program \${1+\"\$@\"}
+    fi
+  else
+    # The program doesn't exist.
+    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
+    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit 1
+  fi
+fi\
+"
+}
+
+
+# func_emit_cwrapperexe_src
+# emit the source code for a wrapper executable on stdout
+# Must ONLY be called from within func_mode_link because
+# it depends on a number of variable set therein.
+func_emit_cwrapperexe_src ()
+{
+	cat <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+*/
+EOF
+	    cat <<"EOF"
+#ifdef _MSC_VER
+# define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+#  include <io.h>
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+/* declarations of non-ANSI functions */
+#if defined(__MINGW32__)
+# ifdef __STRICT_ANSI__
+int _putenv (const char *);
+# endif
+#elif defined(__CYGWIN__)
+# ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+# endif
+/* #elif defined (other platforms) ... */
+#endif
+
+/* portability defines, excluding path handling macros */
+#if defined(_MSC_VER)
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+# define S_IXUSR _S_IEXEC
+# ifndef _INTPTR_T_DEFINED
+#  define _INTPTR_T_DEFINED
+#  define intptr_t int
+# endif
+#elif defined(__MINGW32__)
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+#elif defined(__CYGWIN__)
+# define HAVE_SETENV
+# define FOPEN_WB "wb"
+/* #elif defined (other platforms) ... */
+#endif
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef S_IXOTH
+# define S_IXOTH 0
+#endif
+#ifndef S_IXGRP
+# define S_IXGRP 0
+#endif
+
+/* path handling portability macros */
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+  defined (__OS2__)
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# define FOPEN_WB "wb"
+# ifndef DIR_SEPARATOR_2
+#  define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+#  define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#ifndef FOPEN_WB
+# define FOPEN_WB "w"
+#endif
+#ifndef _O_BINARY
+# define _O_BINARY 0
+#endif
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+#if defined(LT_DEBUGWRAPPER)
+static int lt_debug = 1;
+#else
+static int lt_debug = 0;
+#endif
+
+const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
+
+void *xmalloc (size_t num);
+char *xstrdup (const char *string);
+const char *base_name (const char *name);
+char *find_executable (const char *wrapper);
+char *chase_symlinks (const char *pathspec);
+int make_executable (const char *path);
+int check_executable (const char *path);
+char *strendzap (char *str, const char *pat);
+void lt_debugprintf (const char *file, int line, const char *fmt, ...);
+void lt_fatal (const char *file, int line, const char *message, ...);
+static const char *nonnull (const char *s);
+static const char *nonempty (const char *s);
+void lt_setenv (const char *name, const char *value);
+char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+void lt_update_exe_path (const char *name, const char *value);
+void lt_update_lib_path (const char *name, const char *value);
+char **prepare_spawn (char **argv);
+void lt_dump_script (FILE *f);
+EOF
+
+	    cat <<EOF
+volatile const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+              func_to_host_path "$temp_rpath"
+	      cat <<EOF
+const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
+EOF
+	    else
+	      cat <<"EOF"
+const char * LIB_PATH_VALUE   = "";
+EOF
+	    fi
+
+	    if test -n "$dllsearchpath"; then
+              func_to_host_path "$dllsearchpath:"
+	      cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
+EOF
+	    else
+	      cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE   = "";
+EOF
+	    fi
+
+	    if test "$fast_install" = yes; then
+	      cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
+	    else
+	      cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
+	    fi
+
+
+	    cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX         "--lt-"
+
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
+static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int  newargc;
+  char *tmp_pathspec;
+  char *actual_cwrapper_path;
+  char *actual_cwrapper_name;
+  char *target_name;
+  char *lt_argv_zero;
+  intptr_t rval = 127;
+
+  int i;
+
+  program_name = (char *) xstrdup (base_name (argv[0]));
+  newargz = XMALLOC (char *, argc + 1);
+
+  /* very simple arg parsing; don't want to rely on getopt
+   * also, copy all non cwrapper options to newargz, except
+   * argz[0], which is handled differently
+   */
+  newargc=0;
+  for (i = 1; i < argc; i++)
+    {
+      if (strcmp (argv[i], dumpscript_opt) == 0)
+	{
+EOF
+	    case "$host" in
+	      *mingw* | *cygwin* )
+		# make stdout use "unix" line endings
+		echo "          setmode(1,_O_BINARY);"
+		;;
+	      esac
+
+	    cat <<"EOF"
+	  lt_dump_script (stdout);
+	  return 0;
+	}
+      if (strcmp (argv[i], debug_opt) == 0)
+	{
+          lt_debug = 1;
+          continue;
+	}
+      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
+        {
+          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+             namespace, but it is not one of the ones we know about and
+             have already dealt with, above (inluding dump-script), then
+             report an error. Otherwise, targets might begin to believe
+             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+             namespace. The first time any user complains about this, we'll
+             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+             or a configure.ac-settable value.
+           */
+          lt_fatal (__FILE__, __LINE__,
+		    "unrecognized %s option: '%s'",
+                    ltwrapper_option_prefix, argv[i]);
+        }
+      /* otherwise ... */
+      newargz[++newargc] = xstrdup (argv[i]);
+    }
+  newargz[++newargc] = NULL;
+
+EOF
+	    cat <<EOF
+  /* The GNU banner must be the first non-error debug message */
+  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
+EOF
+	    cat <<"EOF"
+  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
+
+  tmp_pathspec = find_executable (argv[0]);
+  if (tmp_pathspec == NULL)
+    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (before symlink chase) at: %s\n",
+		  tmp_pathspec);
+
+  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (after symlink chase) at: %s\n",
+		  actual_cwrapper_path);
+  XFREE (tmp_pathspec);
+
+  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
+  strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+  /* wrapper name transforms */
+  strendzap (actual_cwrapper_name, ".exe");
+  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+  XFREE (actual_cwrapper_name);
+  actual_cwrapper_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  /* target_name transforms -- use actual target program name; might have lt- prefix */
+  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+  strendzap (target_name, ".exe");
+  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+  XFREE (target_name);
+  target_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(main) libtool target name: %s\n",
+		  target_name);
+EOF
+
+	    cat <<EOF
+  newargz[0] =
+    XMALLOC (char, (strlen (actual_cwrapper_path) +
+		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+  strcpy (newargz[0], actual_cwrapper_path);
+  strcat (newargz[0], "$objdir");
+  strcat (newargz[0], "/");
+EOF
+
+	    cat <<"EOF"
+  /* stop here, and copy so we don't have to do this twice */
+  tmp_pathspec = xstrdup (newargz[0]);
+
+  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+  strcat (newargz[0], actual_cwrapper_name);
+
+  /* DO want the lt- prefix here if it exists, so use target_name */
+  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+  XFREE (tmp_pathspec);
+  tmp_pathspec = NULL;
+EOF
+
+	    case $host_os in
+	      mingw*)
+	    cat <<"EOF"
+  {
+    char* p;
+    while ((p = strchr (newargz[0], '\\')) != NULL)
+      {
+	*p = '/';
+      }
+    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
+      {
+	*p = '/';
+      }
+  }
+EOF
+	    ;;
+	    esac
+
+	    cat <<"EOF"
+  XFREE (target_name);
+  XFREE (actual_cwrapper_path);
+  XFREE (actual_cwrapper_name);
+
+  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
+  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
+     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
+     because on Windows, both *_VARNAMEs are PATH but uninstalled
+     libraries must come first. */
+  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+
+  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
+		  nonnull (lt_argv_zero));
+  for (i = 0; i < newargc; i++)
+    {
+      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
+		      i, nonnull (newargz[i]));
+    }
+
+EOF
+
+	    case $host_os in
+	      mingw*)
+		cat <<"EOF"
+  /* execv doesn't actually work on mingw as expected on unix */
+  newargz = prepare_spawn (newargz);
+  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+  if (rval == -1)
+    {
+      /* failed to start process */
+      lt_debugprintf (__FILE__, __LINE__,
+		      "(main) failed to launch target \"%s\": %s\n",
+		      lt_argv_zero, nonnull (strerror (errno)));
+      return 127;
+    }
+  return rval;
+EOF
+		;;
+	      *)
+		cat <<"EOF"
+  execv (lt_argv_zero, newargz);
+  return rval; /* =127, but avoids unused variable warning */
+EOF
+		;;
+	    esac
+
+	    cat <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+  void *p = (void *) malloc (num);
+  if (!p)
+    lt_fatal (__FILE__, __LINE__, "memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
+			  string) : NULL;
+}
+
+const char *
+base_name (const char *name)
+{
+  const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return base;
+}
+
+int
+check_executable (const char *path)
+{
+  struct stat st;
+
+  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
+                  nonempty (path));
+  if ((!path) || (!*path))
+    return 0;
+
+  if ((stat (path, &st) >= 0)
+      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
+    return 1;
+  else
+    return 0;
+}
+
+int
+make_executable (const char *path)
+{
+  int rval = 0;
+  struct stat st;
+
+  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
+                  nonempty (path));
+  if ((!path) || (!*path))
+    return 0;
+
+  if (stat (path, &st) >= 0)
+    {
+      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
+    }
+  return rval;
+}
+
+/* Searches for the full path of the wrapper.  Returns
+   newly allocated full path name if found, NULL otherwise
+   Does not chase symlinks, even on platforms that support them.
+*/
+char *
+find_executable (const char *wrapper)
+{
+  int has_slash = 0;
+  const char *p;
+  const char *p_next;
+  /* static buffer for getcwd */
+  char tmp[LT_PATHMAX + 1];
+  int tmp_len;
+  char *concat_name;
+
+  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
+                  nonempty (wrapper));
+
+  if ((wrapper == NULL) || (*wrapper == '\0'))
+    return NULL;
+
+  /* Absolute path? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
+    {
+      concat_name = xstrdup (wrapper);
+      if (check_executable (concat_name))
+	return concat_name;
+      XFREE (concat_name);
+    }
+  else
+    {
+#endif
+      if (IS_DIR_SEPARATOR (wrapper[0]))
+	{
+	  concat_name = xstrdup (wrapper);
+	  if (check_executable (concat_name))
+	    return concat_name;
+	  XFREE (concat_name);
+	}
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+    }
+#endif
+
+  for (p = wrapper; *p; p++)
+    if (*p == '/')
+      {
+	has_slash = 1;
+	break;
+      }
+  if (!has_slash)
+    {
+      /* no slashes; search PATH */
+      const char *path = getenv ("PATH");
+      if (path != NULL)
+	{
+	  for (p = path; *p; p = p_next)
+	    {
+	      const char *q;
+	      size_t p_len;
+	      for (q = p; *q; q++)
+		if (IS_PATH_SEPARATOR (*q))
+		  break;
+	      p_len = q - p;
+	      p_next = (*q == '\0' ? q : q + 1);
+	      if (p_len == 0)
+		{
+		  /* empty path: current directory */
+		  if (getcwd (tmp, LT_PATHMAX) == NULL)
+		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+                              nonnull (strerror (errno)));
+		  tmp_len = strlen (tmp);
+		  concat_name =
+		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+		  memcpy (concat_name, tmp, tmp_len);
+		  concat_name[tmp_len] = '/';
+		  strcpy (concat_name + tmp_len + 1, wrapper);
+		}
+	      else
+		{
+		  concat_name =
+		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
+		  memcpy (concat_name, p, p_len);
+		  concat_name[p_len] = '/';
+		  strcpy (concat_name + p_len + 1, wrapper);
+		}
+	      if (check_executable (concat_name))
+		return concat_name;
+	      XFREE (concat_name);
+	    }
+	}
+      /* not found in PATH; assume curdir */
+    }
+  /* Relative path | not found in path: prepend cwd */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+              nonnull (strerror (errno)));
+  tmp_len = strlen (tmp);
+  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+  memcpy (concat_name, tmp, tmp_len);
+  concat_name[tmp_len] = '/';
+  strcpy (concat_name + tmp_len + 1, wrapper);
+
+  if (check_executable (concat_name))
+    return concat_name;
+  XFREE (concat_name);
+  return NULL;
+}
+
+char *
+chase_symlinks (const char *pathspec)
+{
+#ifndef S_ISLNK
+  return xstrdup (pathspec);
+#else
+  char buf[LT_PATHMAX];
+  struct stat s;
+  char *tmp_pathspec = xstrdup (pathspec);
+  char *p;
+  int has_symlinks = 0;
+  while (strlen (tmp_pathspec) && !has_symlinks)
+    {
+      lt_debugprintf (__FILE__, __LINE__,
+		      "checking path component for symlinks: %s\n",
+		      tmp_pathspec);
+      if (lstat (tmp_pathspec, &s) == 0)
+	{
+	  if (S_ISLNK (s.st_mode) != 0)
+	    {
+	      has_symlinks = 1;
+	      break;
+	    }
+
+	  /* search backwards for last DIR_SEPARATOR */
+	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
+	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+	    p--;
+	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+	    {
+	      /* no more DIR_SEPARATORS left */
+	      break;
+	    }
+	  *p = '\0';
+	}
+      else
+	{
+	  lt_fatal (__FILE__, __LINE__,
+		    "error accessing file \"%s\": %s",
+		    tmp_pathspec, nonnull (strerror (errno)));
+	}
+    }
+  XFREE (tmp_pathspec);
+
+  if (!has_symlinks)
+    {
+      return xstrdup (pathspec);
+    }
+
+  tmp_pathspec = realpath (pathspec, buf);
+  if (tmp_pathspec == 0)
+    {
+      lt_fatal (__FILE__, __LINE__,
+		"could not follow symlinks for %s", pathspec);
+    }
+  return xstrdup (tmp_pathspec);
+#endif
+}
+
+char *
+strendzap (char *str, const char *pat)
+{
+  size_t len, patlen;
+
+  assert (str != NULL);
+  assert (pat != NULL);
+
+  len = strlen (str);
+  patlen = strlen (pat);
+
+  if (patlen <= len)
+    {
+      str += len - patlen;
+      if (strcmp (str, pat) == 0)
+	*str = '\0';
+    }
+  return str;
+}
+
+void
+lt_debugprintf (const char *file, int line, const char *fmt, ...)
+{
+  va_list args;
+  if (lt_debug)
+    {
+      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
+      va_start (args, fmt);
+      (void) vfprintf (stderr, fmt, args);
+      va_end (args);
+    }
+}
+
+static void
+lt_error_core (int exit_status, const char *file,
+	       int line, const char *mode,
+	       const char *message, va_list ap)
+{
+  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
+
+  if (exit_status >= 0)
+    exit (exit_status);
+}
+
+void
+lt_fatal (const char *file, int line, const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
+  va_end (ap);
+}
+
+static const char *
+nonnull (const char *s)
+{
+  return s ? s : "(null)";
+}
+
+static const char *
+nonempty (const char *s)
+{
+  return (s && !*s) ? "(empty)" : nonnull (s);
+}
+
+void
+lt_setenv (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_setenv) setting '%s' to '%s'\n",
+                  nonnull (name), nonnull (value));
+  {
+#ifdef HAVE_SETENV
+    /* always make a copy, for consistency with !HAVE_SETENV */
+    char *str = xstrdup (value);
+    setenv (name, str, 1);
+#else
+    int len = strlen (name) + 1 + strlen (value) + 1;
+    char *str = XMALLOC (char, len);
+    sprintf (str, "%s=%s", name, value);
+    if (putenv (str) != EXIT_SUCCESS)
+      {
+        XFREE (str);
+      }
+#endif
+  }
+}
+
+char *
+lt_extend_str (const char *orig_value, const char *add, int to_end)
+{
+  char *new_value;
+  if (orig_value && *orig_value)
+    {
+      int orig_value_len = strlen (orig_value);
+      int add_len = strlen (add);
+      new_value = XMALLOC (char, add_len + orig_value_len + 1);
+      if (to_end)
+        {
+          strcpy (new_value, orig_value);
+          strcpy (new_value + orig_value_len, add);
+        }
+      else
+        {
+          strcpy (new_value, add);
+          strcpy (new_value + add_len, orig_value);
+        }
+    }
+  else
+    {
+      new_value = xstrdup (add);
+    }
+  return new_value;
+}
+
+void
+lt_update_exe_path (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
+
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      /* some systems can't cope with a ':'-terminated path #' */
+      int len = strlen (new_value);
+      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+        {
+          new_value[len-1] = '\0';
+        }
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
+
+void
+lt_update_lib_path (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
+
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
+
+EOF
+	    case $host_os in
+	      mingw*)
+		cat <<"EOF"
+
+/* Prepares an argument vector before calling spawn().
+   Note that spawn() does not by itself call the command interpreter
+     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
+      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+         GetVersionEx(&v);
+         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
+      }) ? "cmd.exe" : "command.com").
+   Instead it simply concatenates the arguments, separated by ' ', and calls
+   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
+   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
+   special way:
+   - Space and tab are interpreted as delimiters. They are not treated as
+     delimiters if they are surrounded by double quotes: "...".
+   - Unescaped double quotes are removed from the input. Their only effect is
+     that within double quotes, space and tab are treated like normal
+     characters.
+   - Backslashes not followed by double quotes are not special.
+   - But 2*n+1 backslashes followed by a double quote become
+     n backslashes followed by a double quote (n >= 0):
+       \" -> "
+       \\\" -> \"
+       \\\\\" -> \\"
+ */
+#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+char **
+prepare_spawn (char **argv)
+{
+  size_t argc;
+  char **new_argv;
+  size_t i;
+
+  /* Count number of arguments.  */
+  for (argc = 0; argv[argc] != NULL; argc++)
+    ;
+
+  /* Allocate new argument vector.  */
+  new_argv = XMALLOC (char *, argc + 1);
+
+  /* Put quoted arguments into the new argument vector.  */
+  for (i = 0; i < argc; i++)
+    {
+      const char *string = argv[i];
+
+      if (string[0] == '\0')
+	new_argv[i] = xstrdup ("\"\"");
+      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
+	{
+	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
+	  size_t length;
+	  unsigned int backslashes;
+	  const char *s;
+	  char *quoted_string;
+	  char *p;
+
+	  length = 0;
+	  backslashes = 0;
+	  if (quote_around)
+	    length++;
+	  for (s = string; *s != '\0'; s++)
+	    {
+	      char c = *s;
+	      if (c == '"')
+		length += backslashes + 1;
+	      length++;
+	      if (c == '\\')
+		backslashes++;
+	      else
+		backslashes = 0;
+	    }
+	  if (quote_around)
+	    length += backslashes + 1;
+
+	  quoted_string = XMALLOC (char, length + 1);
+
+	  p = quoted_string;
+	  backslashes = 0;
+	  if (quote_around)
+	    *p++ = '"';
+	  for (s = string; *s != '\0'; s++)
+	    {
+	      char c = *s;
+	      if (c == '"')
+		{
+		  unsigned int j;
+		  for (j = backslashes + 1; j > 0; j--)
+		    *p++ = '\\';
+		}
+	      *p++ = c;
+	      if (c == '\\')
+		backslashes++;
+	      else
+		backslashes = 0;
+	    }
+	  if (quote_around)
+	    {
+	      unsigned int j;
+	      for (j = backslashes; j > 0; j--)
+		*p++ = '\\';
+	      *p++ = '"';
+	    }
+	  *p = '\0';
+
+	  new_argv[i] = quoted_string;
+	}
+      else
+	new_argv[i] = (char *) string;
+    }
+  new_argv[argc] = NULL;
+
+  return new_argv;
+}
+EOF
+		;;
+	    esac
+
+            cat <<"EOF"
+void lt_dump_script (FILE* f)
+{
+EOF
+	    func_emit_wrapper yes |
+	      $SED -n -e '
+s/^\(.\{79\}\)\(..*\)/\1\
+\2/
+h
+s/\([\\"]\)/\\\1/g
+s/$/\\n/
+s/\([^\n]*\).*/  fputs ("\1", f);/p
+g
+D'
+            cat <<"EOF"
+}
+EOF
+}
+# end: func_emit_cwrapperexe_src
+
+# func_win32_import_lib_p ARG
+# True if ARG is an import lib, as indicated by $file_magic_cmd
+func_win32_import_lib_p ()
+{
+    $opt_debug
+    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
+    *import*) : ;;
+    *) false ;;
+    esac
+}
+
+# func_mode_link arg...
+func_mode_link ()
+{
+    $opt_debug
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invocation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args=$nonopt
+    base_compile="$nonopt $@"
+    compile_command=$nonopt
+    finalize_command=$nonopt
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+    inst_prefix_dir=
+    new_inherited_linker_flags=
+
+    avoid_version=no
+    bindir=
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    non_pic_objects=
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+    vinfo_number=no
+    weak_libs=
+    single_module="${wl}-single_module"
+    func_infer_tag $base_compile
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -shared)
+	test "$build_libtool_libs" != yes && \
+	  func_fatal_configuration "can not build a shared library"
+	build_old_libs=no
+	break
+	;;
+      -all-static | -static | -static-libtool-libs)
+	case $arg in
+	-all-static)
+	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	    func_warning "complete static linking is impossible in this configuration"
+	  fi
+	  if test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=yes
+	  ;;
+	-static)
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=built
+	  ;;
+	-static-libtool-libs)
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=yes
+	  ;;
+	esac
+	build_libtool_libs=no
+	build_old_libs=yes
+	break
+	;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test "$#" -gt 0; do
+      arg="$1"
+      shift
+      func_quote_for_eval "$arg"
+      qarg=$func_quote_for_eval_unquoted_result
+      func_append libtool_args " $func_quote_for_eval_result"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+	case $prev in
+	output)
+	  func_append compile_command " @OUTPUT@"
+	  func_append finalize_command " @OUTPUT@"
+	  ;;
+	esac
+
+	case $prev in
+	bindir)
+	  bindir="$arg"
+	  prev=
+	  continue
+	  ;;
+	dlfiles|dlprefiles)
+	  if test "$preload" = no; then
+	    # Add the symbol object into the linking commands.
+	    func_append compile_command " @SYMFILE@"
+	    func_append finalize_command " @SYMFILE@"
+	    preload=yes
+	  fi
+	  case $arg in
+	  *.la | *.lo) ;;  # We handle these cases below.
+	  force)
+	    if test "$dlself" = no; then
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  self)
+	    if test "$prev" = dlprefiles; then
+	      dlself=yes
+	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+	      dlself=yes
+	    else
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  *)
+	    if test "$prev" = dlfiles; then
+	      func_append dlfiles " $arg"
+	    else
+	      func_append dlprefiles " $arg"
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  esac
+	  ;;
+	expsyms)
+	  export_symbols="$arg"
+	  test -f "$arg" \
+	    || func_fatal_error "symbol file \`$arg' does not exist"
+	  prev=
+	  continue
+	  ;;
+	expsyms_regex)
+	  export_symbols_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	framework)
+	  case $host in
+	    *-*-darwin*)
+	      case "$deplibs " in
+		*" $qarg.ltframework "*) ;;
+		*) func_append deplibs " $qarg.ltframework" # this is fixed later
+		   ;;
+	      esac
+	      ;;
+	  esac
+	  prev=
+	  continue
+	  ;;
+	inst_prefix)
+	  inst_prefix_dir="$arg"
+	  prev=
+	  continue
+	  ;;
+	objectlist)
+	  if test -f "$arg"; then
+	    save_arg=$arg
+	    moreargs=
+	    for fil in `cat "$save_arg"`
+	    do
+#	      func_append moreargs " $fil"
+	      arg=$fil
+	      # A libtool-controlled object.
+
+	      # Check to see that this really is a libtool object.
+	      if func_lalib_unsafe_p "$arg"; then
+		pic_object=
+		non_pic_object=
+
+		# Read the .lo file
+		func_source "$arg"
+
+		if test -z "$pic_object" ||
+		   test -z "$non_pic_object" ||
+		   test "$pic_object" = none &&
+		   test "$non_pic_object" = none; then
+		  func_fatal_error "cannot find name of object for \`$arg'"
+		fi
+
+		# Extract subdirectory from the argument.
+		func_dirname "$arg" "/" ""
+		xdir="$func_dirname_result"
+
+		if test "$pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  pic_object="$xdir$pic_object"
+
+		  if test "$prev" = dlfiles; then
+		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		      func_append dlfiles " $pic_object"
+		      prev=
+		      continue
+		    else
+		      # If libtool objects are unsupported, then we need to preload.
+		      prev=dlprefiles
+		    fi
+		  fi
+
+		  # CHECK ME:  I think I busted this.  -Ossama
+		  if test "$prev" = dlprefiles; then
+		    # Preload the old-style object.
+		    func_append dlprefiles " $pic_object"
+		    prev=
+		  fi
+
+		  # A PIC object.
+		  func_append libobjs " $pic_object"
+		  arg="$pic_object"
+		fi
+
+		# Non-PIC object.
+		if test "$non_pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  non_pic_object="$xdir$non_pic_object"
+
+		  # A standard non-PIC object
+		  func_append non_pic_objects " $non_pic_object"
+		  if test -z "$pic_object" || test "$pic_object" = none ; then
+		    arg="$non_pic_object"
+		  fi
+		else
+		  # If the PIC object exists, use it instead.
+		  # $xdir was prepended to $pic_object above.
+		  non_pic_object="$pic_object"
+		  func_append non_pic_objects " $non_pic_object"
+		fi
+	      else
+		# Only an error if not doing a dry-run.
+		if $opt_dry_run; then
+		  # Extract subdirectory from the argument.
+		  func_dirname "$arg" "/" ""
+		  xdir="$func_dirname_result"
+
+		  func_lo2o "$arg"
+		  pic_object=$xdir$objdir/$func_lo2o_result
+		  non_pic_object=$xdir$func_lo2o_result
+		  func_append libobjs " $pic_object"
+		  func_append non_pic_objects " $non_pic_object"
+	        else
+		  func_fatal_error "\`$arg' is not a valid libtool object"
+		fi
+	      fi
+	    done
+	  else
+	    func_fatal_error "link input file \`$arg' does not exist"
+	  fi
+	  arg=$save_arg
+	  prev=
+	  continue
+	  ;;
+	precious_regex)
+	  precious_files_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	release)
+	  release="-$arg"
+	  prev=
+	  continue
+	  ;;
+	rpath | xrpath)
+	  # We need an absolute path.
+	  case $arg in
+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
+	  *)
+	    func_fatal_error "only absolute run-paths are allowed"
+	    ;;
+	  esac
+	  if test "$prev" = rpath; then
+	    case "$rpath " in
+	    *" $arg "*) ;;
+	    *) func_append rpath " $arg" ;;
+	    esac
+	  else
+	    case "$xrpath " in
+	    *" $arg "*) ;;
+	    *) func_append xrpath " $arg" ;;
+	    esac
+	  fi
+	  prev=
+	  continue
+	  ;;
+	shrext)
+	  shrext_cmds="$arg"
+	  prev=
+	  continue
+	  ;;
+	weak)
+	  func_append weak_libs " $arg"
+	  prev=
+	  continue
+	  ;;
+	xcclinker)
+	  func_append linker_flags " $qarg"
+	  func_append compiler_flags " $qarg"
+	  prev=
+	  func_append compile_command " $qarg"
+	  func_append finalize_command " $qarg"
+	  continue
+	  ;;
+	xcompiler)
+	  func_append compiler_flags " $qarg"
+	  prev=
+	  func_append compile_command " $qarg"
+	  func_append finalize_command " $qarg"
+	  continue
+	  ;;
+	xlinker)
+	  func_append linker_flags " $qarg"
+	  func_append compiler_flags " $wl$qarg"
+	  prev=
+	  func_append compile_command " $wl$qarg"
+	  func_append finalize_command " $wl$qarg"
+	  continue
+	  ;;
+	*)
+	  eval "$prev=\"\$arg\""
+	  prev=
+	  continue
+	  ;;
+	esac
+      fi # test -n "$prev"
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+	if test -n "$link_static_flag"; then
+	  # See comment for -static flag below, for more details.
+	  func_append compile_command " $link_static_flag"
+	  func_append finalize_command " $link_static_flag"
+	fi
+	continue
+	;;
+
+      -allow-undefined)
+	# FIXME: remove this flag sometime in the future.
+	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
+	;;
+
+      -avoid-version)
+	avoid_version=yes
+	continue
+	;;
+
+      -bindir)
+	prev=bindir
+	continue
+	;;
+
+      -dlopen)
+	prev=dlfiles
+	continue
+	;;
+
+      -dlpreopen)
+	prev=dlprefiles
+	continue
+	;;
+
+      -export-dynamic)
+	export_dynamic=yes
+	continue
+	;;
+
+      -export-symbols | -export-symbols-regex)
+	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	  func_fatal_error "more than one -exported-symbols argument is not allowed"
+	fi
+	if test "X$arg" = "X-export-symbols"; then
+	  prev=expsyms
+	else
+	  prev=expsyms_regex
+	fi
+	continue
+	;;
+
+      -framework)
+	prev=framework
+	continue
+	;;
+
+      -inst-prefix-dir)
+	prev=inst_prefix
+	continue
+	;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+	case $with_gcc/$host in
+	no/*-*-irix* | /*-*-irix*)
+	  func_append compile_command " $arg"
+	  func_append finalize_command " $arg"
+	  ;;
+	esac
+	continue
+	;;
+
+      -L*)
+	func_stripname "-L" '' "$arg"
+	if test -z "$func_stripname_result"; then
+	  if test "$#" -gt 0; then
+	    func_fatal_error "require no space between \`-L' and \`$1'"
+	  else
+	    func_fatal_error "need path for \`-L' option"
+	  fi
+	fi
+	func_resolve_sysroot "$func_stripname_result"
+	dir=$func_resolve_sysroot_result
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  absdir=`cd "$dir" && pwd`
+	  test -z "$absdir" && \
+	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
+	  dir="$absdir"
+	  ;;
+	esac
+	case "$deplibs " in
+	*" -L$dir "* | *" $arg "*)
+	  # Will only happen for absolute or sysroot arguments
+	  ;;
+	*)
+	  # Preserve sysroot, but never include relative directories
+	  case $dir in
+	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
+	    *) func_append deplibs " -L$dir" ;;
+	  esac
+	  func_append lib_search_path " $dir"
+	  ;;
+	esac
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
+	  case :$dllsearchpath: in
+	  *":$dir:"*) ;;
+	  ::) dllsearchpath=$dir;;
+	  *) func_append dllsearchpath ":$dir";;
+	  esac
+	  case :$dllsearchpath: in
+	  *":$testbindir:"*) ;;
+	  ::) dllsearchpath=$testbindir;;
+	  *) func_append dllsearchpath ":$testbindir";;
+	  esac
+	  ;;
+	esac
+	continue
+	;;
+
+      -l*)
+	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
+	    # These systems don't actually have a C or math library (as such)
+	    continue
+	    ;;
+	  *-*-os2*)
+	    # These systems don't actually have a C library (as such)
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C and math libraries are in the System framework
+	    func_append deplibs " System.ltframework"
+	    continue
+	    ;;
+	  *-*-sco3.2v5* | *-*-sco5v6*)
+	    # Causes problems with __ctype
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+	    # Compiler inserts libc in the correct place for threads to work
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  esac
+	elif test "X$arg" = "X-lc_r"; then
+	 case $host in
+	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	   # Do not include libc_r directly, use -pthread flag.
+	   continue
+	   ;;
+	 esac
+	fi
+	func_append deplibs " $arg"
+	continue
+	;;
+
+      -module)
+	module=yes
+	continue
+	;;
+
+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
+      # classes, name mangling, and exception handling.
+      # Darwin uses the -arch flag to determine output architecture.
+      -model|-arch|-isysroot|--sysroot)
+	func_append compiler_flags " $arg"
+	func_append compile_command " $arg"
+	func_append finalize_command " $arg"
+	prev=xcompiler
+	continue
+	;;
+
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+	func_append compiler_flags " $arg"
+	func_append compile_command " $arg"
+	func_append finalize_command " $arg"
+	case "$new_inherited_linker_flags " in
+	    *" $arg "*) ;;
+	    * ) func_append new_inherited_linker_flags " $arg" ;;
+	esac
+	continue
+	;;
+
+      -multi_module)
+	single_module="${wl}-multi_module"
+	continue
+	;;
+
+      -no-fast-install)
+	fast_install=no
+	continue
+	;;
+
+      -no-install)
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
+	  # The PATH hackery in wrapper scripts is required on Windows
+	  # and Darwin in order for the loader to find any dlls it needs.
+	  func_warning "\`-no-install' is ignored for $host"
+	  func_warning "assuming \`-no-fast-install' instead"
+	  fast_install=no
+	  ;;
+	*) no_install=yes ;;
+	esac
+	continue
+	;;
+
+      -no-undefined)
+	allow_undefined=no
+	continue
+	;;
+
+      -objectlist)
+	prev=objectlist
+	continue
+	;;
+
+      -o) prev=output ;;
+
+      -precious-files-regex)
+	prev=precious_regex
+	continue
+	;;
+
+      -release)
+	prev=release
+	continue
+	;;
+
+      -rpath)
+	prev=rpath
+	continue
+	;;
+
+      -R)
+	prev=xrpath
+	continue
+	;;
+
+      -R*)
+	func_stripname '-R' '' "$arg"
+	dir=$func_stripname_result
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	=*)
+	  func_stripname '=' '' "$dir"
+	  dir=$lt_sysroot$func_stripname_result
+	  ;;
+	*)
+	  func_fatal_error "only absolute run-paths are allowed"
+	  ;;
+	esac
+	case "$xrpath " in
+	*" $dir "*) ;;
+	*) func_append xrpath " $dir" ;;
+	esac
+	continue
+	;;
+
+      -shared)
+	# The effects of -shared are defined in a previous loop.
+	continue
+	;;
+
+      -shrext)
+	prev=shrext
+	continue
+	;;
+
+      -static | -static-libtool-libs)
+	# The effects of -static are defined in a previous loop.
+	# We used to do the same as -all-static on platforms that
+	# didn't have a PIC flag, but the assumption that the effects
+	# would be equivalent was wrong.  It would break on at least
+	# Digital Unix and AIX.
+	continue
+	;;
+
+      -thread-safe)
+	thread_safe=yes
+	continue
+	;;
+
+      -version-info)
+	prev=vinfo
+	continue
+	;;
+
+      -version-number)
+	prev=vinfo
+	vinfo_number=yes
+	continue
+	;;
+
+      -weak)
+        prev=weak
+	continue
+	;;
+
+      -Wc,*)
+	func_stripname '-Wc,' '' "$arg"
+	args=$func_stripname_result
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+          func_quote_for_eval "$flag"
+	  func_append arg " $func_quote_for_eval_result"
+	  func_append compiler_flags " $func_quote_for_eval_result"
+	done
+	IFS="$save_ifs"
+	func_stripname ' ' '' "$arg"
+	arg=$func_stripname_result
+	;;
+
+      -Wl,*)
+	func_stripname '-Wl,' '' "$arg"
+	args=$func_stripname_result
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+          func_quote_for_eval "$flag"
+	  func_append arg " $wl$func_quote_for_eval_result"
+	  func_append compiler_flags " $wl$func_quote_for_eval_result"
+	  func_append linker_flags " $func_quote_for_eval_result"
+	done
+	IFS="$save_ifs"
+	func_stripname ' ' '' "$arg"
+	arg=$func_stripname_result
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Xlinker)
+	prev=xlinker
+	continue
+	;;
+
+      -XCClinker)
+	prev=xcclinker
+	continue
+	;;
+
+      # -msg_* for osf cc
+      -msg_*)
+	func_quote_for_eval "$arg"
+	arg="$func_quote_for_eval_result"
+	;;
+
+      # Flags to be passed through unchanged, with rationale:
+      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
+      # -r[0-9][0-9]*        specify processor for the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
+      # +DA*, +DD*           enable 64-bit mode for the HP compiler
+      # -q*                  compiler args for the IBM compiler
+      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
+      # -F/path              path to uninstalled frameworks, gcc on darwin
+      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
+      # @file                GCC response files
+      # -tp=*                Portland pgcc target processor selection
+      # --sysroot=*          for sysroot support
+      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
+        func_quote_for_eval "$arg"
+	arg="$func_quote_for_eval_result"
+        func_append compile_command " $arg"
+        func_append finalize_command " $arg"
+        func_append compiler_flags " $arg"
+        continue
+        ;;
+
+      # Some other compiler flag.
+      -* | +*)
+        func_quote_for_eval "$arg"
+	arg="$func_quote_for_eval_result"
+	;;
+
+      *.$objext)
+	# A standard object.
+	func_append objs " $arg"
+	;;
+
+      *.lo)
+	# A libtool-controlled object.
+
+	# Check to see that this really is a libtool object.
+	if func_lalib_unsafe_p "$arg"; then
+	  pic_object=
+	  non_pic_object=
+
+	  # Read the .lo file
+	  func_source "$arg"
+
+	  if test -z "$pic_object" ||
+	     test -z "$non_pic_object" ||
+	     test "$pic_object" = none &&
+	     test "$non_pic_object" = none; then
+	    func_fatal_error "cannot find name of object for \`$arg'"
+	  fi
+
+	  # Extract subdirectory from the argument.
+	  func_dirname "$arg" "/" ""
+	  xdir="$func_dirname_result"
+
+	  if test "$pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    pic_object="$xdir$pic_object"
+
+	    if test "$prev" = dlfiles; then
+	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		func_append dlfiles " $pic_object"
+		prev=
+		continue
+	      else
+		# If libtool objects are unsupported, then we need to preload.
+		prev=dlprefiles
+	      fi
+	    fi
+
+	    # CHECK ME:  I think I busted this.  -Ossama
+	    if test "$prev" = dlprefiles; then
+	      # Preload the old-style object.
+	      func_append dlprefiles " $pic_object"
+	      prev=
+	    fi
+
+	    # A PIC object.
+	    func_append libobjs " $pic_object"
+	    arg="$pic_object"
+	  fi
+
+	  # Non-PIC object.
+	  if test "$non_pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    non_pic_object="$xdir$non_pic_object"
+
+	    # A standard non-PIC object
+	    func_append non_pic_objects " $non_pic_object"
+	    if test -z "$pic_object" || test "$pic_object" = none ; then
+	      arg="$non_pic_object"
+	    fi
+	  else
+	    # If the PIC object exists, use it instead.
+	    # $xdir was prepended to $pic_object above.
+	    non_pic_object="$pic_object"
+	    func_append non_pic_objects " $non_pic_object"
+	  fi
+	else
+	  # Only an error if not doing a dry-run.
+	  if $opt_dry_run; then
+	    # Extract subdirectory from the argument.
+	    func_dirname "$arg" "/" ""
+	    xdir="$func_dirname_result"
+
+	    func_lo2o "$arg"
+	    pic_object=$xdir$objdir/$func_lo2o_result
+	    non_pic_object=$xdir$func_lo2o_result
+	    func_append libobjs " $pic_object"
+	    func_append non_pic_objects " $non_pic_object"
+	  else
+	    func_fatal_error "\`$arg' is not a valid libtool object"
+	  fi
+	fi
+	;;
+
+      *.$libext)
+	# An archive.
+	func_append deplibs " $arg"
+	func_append old_deplibs " $arg"
+	continue
+	;;
+
+      *.la)
+	# A libtool-controlled library.
+
+	func_resolve_sysroot "$arg"
+	if test "$prev" = dlfiles; then
+	  # This library was specified with -dlopen.
+	  func_append dlfiles " $func_resolve_sysroot_result"
+	  prev=
+	elif test "$prev" = dlprefiles; then
+	  # The library was specified with -dlpreopen.
+	  func_append dlprefiles " $func_resolve_sysroot_result"
+	  prev=
+	else
+	  func_append deplibs " $func_resolve_sysroot_result"
+	fi
+	continue
+	;;
+
+      # Some other compiler argument.
+      *)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	func_quote_for_eval "$arg"
+	arg="$func_quote_for_eval_result"
+	;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+	func_append compile_command " $arg"
+	func_append finalize_command " $arg"
+      fi
+    done # argument parsing loop
+
+    test -n "$prev" && \
+      func_fatal_help "the \`$prevarg' option requires an argument"
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      func_append compile_command " $arg"
+      func_append finalize_command " $arg"
+    fi
+
+    oldlibs=
+    # calculate the name of the file, without its directory
+    func_basename "$output"
+    outputname="$func_basename_result"
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    func_dirname "$output" "/" ""
+    output_objdir="$func_dirname_result$objdir"
+    func_to_tool_file "$output_objdir/"
+    tool_output_objdir=$func_to_tool_file_result
+    # Create the object directory.
+    func_mkdir_p "$output_objdir"
+
+    # Determine the type of output
+    case $output in
+    "")
+      func_fatal_help "you must specify an output file"
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    specialdeplibs=
+
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if $opt_preserve_dup_deps ; then
+	case "$libs " in
+	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
+	esac
+      fi
+      func_append libs " $deplib"
+    done
+
+    if test "$linkmode" = lib; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if $opt_duplicate_compiler_generated_deps; then
+	for pre_post_dep in $predeps $postdeps; do
+	  case "$pre_post_deps " in
+	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
+	  esac
+	  func_append pre_post_deps " $pre_post_dep"
+	done
+      fi
+      pre_post_deps=
+    fi
+
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+
+    case $linkmode in
+    lib)
+	passes="conv dlpreopen link"
+	for file in $dlfiles $dlprefiles; do
+	  case $file in
+	  *.la) ;;
+	  *)
+	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
+	    ;;
+	  esac
+	done
+	;;
+    prog)
+	compile_deplibs=
+	finalize_deplibs=
+	alldeplibs=no
+	newdlfiles=
+	newdlprefiles=
+	passes="conv scan dlopen dlpreopen link"
+	;;
+    *)  passes="conv"
+	;;
+    esac
+
+    for pass in $passes; do
+      # The preopen pass in lib mode reverses $deplibs; put it back here
+      # so that -L comes before libs that need it for instance...
+      if test "$linkmode,$pass" = "lib,link"; then
+	## FIXME: Find the place where the list is rebuilt in the wrong
+	##        order, and fix it there properly
+        tmp_deplibs=
+	for deplib in $deplibs; do
+	  tmp_deplibs="$deplib $tmp_deplibs"
+	done
+	deplibs="$tmp_deplibs"
+      fi
+
+      if test "$linkmode,$pass" = "lib,link" ||
+	 test "$linkmode,$pass" = "prog,scan"; then
+	libs="$deplibs"
+	deplibs=
+      fi
+      if test "$linkmode" = prog; then
+	case $pass in
+	dlopen) libs="$dlfiles" ;;
+	dlpreopen) libs="$dlprefiles" ;;
+	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+	esac
+      fi
+      if test "$linkmode,$pass" = "lib,dlpreopen"; then
+	# Collect and forward deplibs of preopened libtool libs
+	for lib in $dlprefiles; do
+	  # Ignore non-libtool-libs
+	  dependency_libs=
+	  func_resolve_sysroot "$lib"
+	  case $lib in
+	  *.la)	func_source "$func_resolve_sysroot_result" ;;
+	  esac
+
+	  # Collect preopened libtool deplibs, except any this library
+	  # has declared as weak libs
+	  for deplib in $dependency_libs; do
+	    func_basename "$deplib"
+            deplib_base=$func_basename_result
+	    case " $weak_libs " in
+	    *" $deplib_base "*) ;;
+	    *) func_append deplibs " $deplib" ;;
+	    esac
+	  done
+	done
+	libs="$dlprefiles"
+      fi
+      if test "$pass" = dlopen; then
+	# Collect dlpreopened libraries
+	save_deplibs="$deplibs"
+	deplibs=
+      fi
+
+      for deplib in $libs; do
+	lib=
+	found=no
+	case $deplib in
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+	  if test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    func_append compiler_flags " $deplib"
+	    if test "$linkmode" = lib ; then
+		case "$new_inherited_linker_flags " in
+		    *" $deplib "*) ;;
+		    * ) func_append new_inherited_linker_flags " $deplib" ;;
+		esac
+	    fi
+	  fi
+	  continue
+	  ;;
+	-l*)
+	  if test "$linkmode" != lib && test "$linkmode" != prog; then
+	    func_warning "\`-l' is ignored for archives/objects"
+	    continue
+	  fi
+	  func_stripname '-l' '' "$deplib"
+	  name=$func_stripname_result
+	  if test "$linkmode" = lib; then
+	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
+	  else
+	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
+	  fi
+	  for searchdir in $searchdirs; do
+	    for search_ext in .la $std_shrext .so .a; do
+	      # Search the libtool library
+	      lib="$searchdir/lib${name}${search_ext}"
+	      if test -f "$lib"; then
+		if test "$search_ext" = ".la"; then
+		  found=yes
+		else
+		  found=no
+		fi
+		break 2
+	      fi
+	    done
+	  done
+	  if test "$found" != yes; then
+	    # deplib doesn't seem to be a libtool library
+	    if test "$linkmode,$pass" = "prog,link"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
+	  else # deplib is a libtool library
+	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+	    # We need to do some special things here, and not later.
+	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	      case " $predeps $postdeps " in
+	      *" $deplib "*)
+		if func_lalib_p "$lib"; then
+		  library_names=
+		  old_library=
+		  func_source "$lib"
+		  for l in $old_library $library_names; do
+		    ll="$l"
+		  done
+		  if test "X$ll" = "X$old_library" ; then # only static version available
+		    found=no
+		    func_dirname "$lib" "" "."
+		    ladir="$func_dirname_result"
+		    lib=$ladir/$old_library
+		    if test "$linkmode,$pass" = "prog,link"; then
+		      compile_deplibs="$deplib $compile_deplibs"
+		      finalize_deplibs="$deplib $finalize_deplibs"
+		    else
+		      deplibs="$deplib $deplibs"
+		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+		    fi
+		    continue
+		  fi
+		fi
+		;;
+	      *) ;;
+	      esac
+	    fi
+	  fi
+	  ;; # -l
+	*.ltframework)
+	  if test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    deplibs="$deplib $deplibs"
+	    if test "$linkmode" = lib ; then
+		case "$new_inherited_linker_flags " in
+		    *" $deplib "*) ;;
+		    * ) func_append new_inherited_linker_flags " $deplib" ;;
+		esac
+	    fi
+	  fi
+	  continue
+	  ;;
+	-L*)
+	  case $linkmode in
+	  lib)
+	    deplibs="$deplib $deplibs"
+	    test "$pass" = conv && continue
+	    newdependency_libs="$deplib $newdependency_libs"
+	    func_stripname '-L' '' "$deplib"
+	    func_resolve_sysroot "$func_stripname_result"
+	    func_append newlib_search_path " $func_resolve_sysroot_result"
+	    ;;
+	  prog)
+	    if test "$pass" = conv; then
+	      deplibs="$deplib $deplibs"
+	      continue
+	    fi
+	    if test "$pass" = scan; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    func_stripname '-L' '' "$deplib"
+	    func_resolve_sysroot "$func_stripname_result"
+	    func_append newlib_search_path " $func_resolve_sysroot_result"
+	    ;;
+	  *)
+	    func_warning "\`-L' is ignored for archives/objects"
+	    ;;
+	  esac # linkmode
+	  continue
+	  ;; # -L
+	-R*)
+	  if test "$pass" = link; then
+	    func_stripname '-R' '' "$deplib"
+	    func_resolve_sysroot "$func_stripname_result"
+	    dir=$func_resolve_sysroot_result
+	    # Make sure the xrpath contains only unique directories.
+	    case "$xrpath " in
+	    *" $dir "*) ;;
+	    *) func_append xrpath " $dir" ;;
+	    esac
+	  fi
+	  deplibs="$deplib $deplibs"
+	  continue
+	  ;;
+	*.la)
+	  func_resolve_sysroot "$deplib"
+	  lib=$func_resolve_sysroot_result
+	  ;;
+	*.$libext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  case $linkmode in
+	  lib)
+	    # Linking convenience modules into shared libraries is allowed,
+	    # but linking other static libraries is non-portable.
+	    case " $dlpreconveniencelibs " in
+	    *" $deplib "*) ;;
+	    *)
+	      valid_a_lib=no
+	      case $deplibs_check_method in
+		match_pattern*)
+		  set dummy $deplibs_check_method; shift
+		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
+		    | $EGREP "$match_pattern_regex" > /dev/null; then
+		    valid_a_lib=yes
+		  fi
+		;;
+		pass_all)
+		  valid_a_lib=yes
+		;;
+	      esac
+	      if test "$valid_a_lib" != yes; then
+		echo
+		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because the file extensions .$libext of this argument makes me believe"
+		echo "*** that it is just a static archive that I should not use here."
+	      else
+		echo
+		$ECHO "*** Warning: Linking the shared library $output against the"
+		$ECHO "*** static library $deplib is not portable!"
+		deplibs="$deplib $deplibs"
+	      fi
+	      ;;
+	    esac
+	    continue
+	    ;;
+	  prog)
+	    if test "$pass" != link; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    continue
+	    ;;
+	  esac # linkmode
+	  ;; # *.$libext
+	*.lo | *.$objext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	  elif test "$linkmode" = prog; then
+	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	      # If there is no dlopen support or we're linking statically,
+	      # we need to preload.
+	      func_append newdlprefiles " $deplib"
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      func_append newdlfiles " $deplib"
+	    fi
+	  fi
+	  continue
+	  ;;
+	%DEPLIBS%)
+	  alldeplibs=yes
+	  continue
+	  ;;
+	esac # case $deplib
+
+	if test "$found" = yes || test -f "$lib"; then :
+	else
+	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
+	fi
+
+	# Check to see that this really is a libtool archive.
+	func_lalib_unsafe_p "$lib" \
+	  || func_fatal_error "\`$lib' is not a valid libtool archive"
+
+	func_dirname "$lib" "" "."
+	ladir="$func_dirname_result"
+
+	dlname=
+	dlopen=
+	dlpreopen=
+	libdir=
+	library_names=
+	old_library=
+	inherited_linker_flags=
+	# If the library was installed with an old release of libtool,
+	# it will not redefine variables installed, or shouldnotlink
+	installed=yes
+	shouldnotlink=no
+	avoidtemprpath=
+
+
+	# Read the .la file
+	func_source "$lib"
+
+	# Convert "-framework foo" to "foo.ltframework"
+	if test -n "$inherited_linker_flags"; then
+	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
+	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+	    case " $new_inherited_linker_flags " in
+	      *" $tmp_inherited_linker_flag "*) ;;
+	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
+	    esac
+	  done
+	fi
+	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	if test "$linkmode,$pass" = "lib,link" ||
+	   test "$linkmode,$pass" = "prog,scan" ||
+	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+	  test -n "$dlopen" && func_append dlfiles " $dlopen"
+	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
+	fi
+
+	if test "$pass" = conv; then
+	  # Only check for convenience libraries
+	  deplibs="$lib $deplibs"
+	  if test -z "$libdir"; then
+	    if test -z "$old_library"; then
+	      func_fatal_error "cannot find name of link library for \`$lib'"
+	    fi
+	    # It is a libtool convenience library, so add in its objects.
+	    func_append convenience " $ladir/$objdir/$old_library"
+	    func_append old_convenience " $ladir/$objdir/$old_library"
+	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
+	    func_fatal_error "\`$lib' is not a convenience library"
+	  fi
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    deplibs="$deplib $deplibs"
+	    if $opt_preserve_dup_deps ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+	      esac
+	    fi
+	    func_append tmp_libs " $deplib"
+	  done
+	  continue
+	fi # $pass = conv
+
+
+	# Get the name of the library we link against.
+	linklib=
+	if test -n "$old_library" &&
+	   { test "$prefer_static_libs" = yes ||
+	     test "$prefer_static_libs,$installed" = "built,no"; }; then
+	  linklib=$old_library
+	else
+	  for l in $old_library $library_names; do
+	    linklib="$l"
+	  done
+	fi
+	if test -z "$linklib"; then
+	  func_fatal_error "cannot find name of link library for \`$lib'"
+	fi
+
+	# This library was specified with -dlopen.
+	if test "$pass" = dlopen; then
+	  if test -z "$libdir"; then
+	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
+	  fi
+	  if test -z "$dlname" ||
+	     test "$dlopen_support" != yes ||
+	     test "$build_libtool_libs" = no; then
+	    # If there is no dlname, no dlopen support or we're linking
+	    # statically, we need to preload.  We also need to preload any
+	    # dependent libraries so libltdl's deplib preloader doesn't
+	    # bomb out in the load deplibs phase.
+	    func_append dlprefiles " $lib $dependency_libs"
+	  else
+	    func_append newdlfiles " $lib"
+	  fi
+	  continue
+	fi # $pass = dlopen
+
+	# We need an absolute path.
+	case $ladir in
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+	*)
+	  abs_ladir=`cd "$ladir" && pwd`
+	  if test -z "$abs_ladir"; then
+	    func_warning "cannot determine absolute directory name of \`$ladir'"
+	    func_warning "passing it literally to the linker, although it might fail"
+	    abs_ladir="$ladir"
+	  fi
+	  ;;
+	esac
+	func_basename "$lib"
+	laname="$func_basename_result"
+
+	# Find the relevant object directory and library name.
+	if test "X$installed" = Xyes; then
+	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    func_warning "library \`$lib' was moved."
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    libdir="$abs_ladir"
+	  else
+	    dir="$lt_sysroot$libdir"
+	    absdir="$lt_sysroot$libdir"
+	  fi
+	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+	else
+	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    # Remove this search path later
+	    func_append notinst_path " $abs_ladir"
+	  else
+	    dir="$ladir/$objdir"
+	    absdir="$abs_ladir/$objdir"
+	    # Remove this search path later
+	    func_append notinst_path " $abs_ladir"
+	  fi
+	fi # $installed = yes
+	func_stripname 'lib' '.la' "$laname"
+	name=$func_stripname_result
+
+	# This library was specified with -dlpreopen.
+	if test "$pass" = dlpreopen; then
+	  if test -z "$libdir" && test "$linkmode" = prog; then
+	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
+	  fi
+	  case "$host" in
+	    # special handling for platforms with PE-DLLs.
+	    *cygwin* | *mingw* | *cegcc* )
+	      # Linker will automatically link against shared library if both
+	      # static and shared are present.  Therefore, ensure we extract
+	      # symbols from the import library if a shared library is present
+	      # (otherwise, the dlopen module name will be incorrect).  We do
+	      # this by putting the import library name into $newdlprefiles.
+	      # We recover the dlopen module name by 'saving' the la file
+	      # name in a special purpose variable, and (later) extracting the
+	      # dlname from the la file.
+	      if test -n "$dlname"; then
+	        func_tr_sh "$dir/$linklib"
+	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
+	        func_append newdlprefiles " $dir/$linklib"
+	      else
+	        func_append newdlprefiles " $dir/$old_library"
+	        # Keep a list of preopened convenience libraries to check
+	        # that they are being used correctly in the link pass.
+	        test -z "$libdir" && \
+	          func_append dlpreconveniencelibs " $dir/$old_library"
+	      fi
+	    ;;
+	    * )
+	      # Prefer using a static library (so that no silly _DYNAMIC symbols
+	      # are required to link).
+	      if test -n "$old_library"; then
+	        func_append newdlprefiles " $dir/$old_library"
+	        # Keep a list of preopened convenience libraries to check
+	        # that they are being used correctly in the link pass.
+	        test -z "$libdir" && \
+	          func_append dlpreconveniencelibs " $dir/$old_library"
+	      # Otherwise, use the dlname, so that lt_dlopen finds it.
+	      elif test -n "$dlname"; then
+	        func_append newdlprefiles " $dir/$dlname"
+	      else
+	        func_append newdlprefiles " $dir/$linklib"
+	      fi
+	    ;;
+	  esac
+	fi # $pass = dlpreopen
+
+	if test -z "$libdir"; then
+	  # Link the convenience library
+	  if test "$linkmode" = lib; then
+	    deplibs="$dir/$old_library $deplibs"
+	  elif test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$dir/$old_library $compile_deplibs"
+	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
+	  else
+	    deplibs="$lib $deplibs" # used for prog,scan pass
+	  fi
+	  continue
+	fi
+
+
+	if test "$linkmode" = prog && test "$pass" != link; then
+	  func_append newlib_search_path " $ladir"
+	  deplibs="$lib $deplibs"
+
+	  linkalldeplibs=no
+	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
+	     test "$build_libtool_libs" = no; then
+	    linkalldeplibs=yes
+	  fi
+
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    case $deplib in
+	    -L*) func_stripname '-L' '' "$deplib"
+	         func_resolve_sysroot "$func_stripname_result"
+	         func_append newlib_search_path " $func_resolve_sysroot_result"
+		 ;;
+	    esac
+	    # Need to link against all dependency_libs?
+	    if test "$linkalldeplibs" = yes; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      # Need to hardcode shared library paths
+	      # or/and link against static libraries
+	      newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    if $opt_preserve_dup_deps ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+	      esac
+	    fi
+	    func_append tmp_libs " $deplib"
+	  done # for deplib
+	  continue
+	fi # $linkmode = prog...
+
+	if test "$linkmode,$pass" = "prog,link"; then
+	  if test -n "$library_names" &&
+	     { { test "$prefer_static_libs" = no ||
+	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
+	       test -z "$old_library"; }; then
+	    # We need to hardcode the library path
+	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+	      # Make sure the rpath contains only unique directories.
+	      case "$temp_rpath:" in
+	      *"$absdir:"*) ;;
+	      *) func_append temp_rpath "$absdir:" ;;
+	      esac
+	    fi
+
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) func_append compile_rpath " $absdir" ;;
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) func_append finalize_rpath " $libdir" ;;
+	      esac
+	      ;;
+	    esac
+	  fi # $linkmode,$pass = prog,link...
+
+	  if test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+	fi
+
+	link_static=no # Whether the deplib will be linked statically
+	use_static_libs=$prefer_static_libs
+	if test "$use_static_libs" = built && test "$installed" = yes; then
+	  use_static_libs=no
+	fi
+	if test -n "$library_names" &&
+	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
+	  case $host in
+	  *cygwin* | *mingw* | *cegcc*)
+	      # No point in relinking DLLs because paths are not encoded
+	      func_append notinst_deplibs " $lib"
+	      need_relink=no
+	    ;;
+	  *)
+	    if test "$installed" = no; then
+	      func_append notinst_deplibs " $lib"
+	      need_relink=yes
+	    fi
+	    ;;
+	  esac
+	  # This is a shared library
+
+	  # Warn about portability, can't link against -module's on some
+	  # systems (darwin).  Don't bleat about dlopened modules though!
+	  dlopenmodule=""
+	  for dlpremoduletest in $dlprefiles; do
+	    if test "X$dlpremoduletest" = "X$lib"; then
+	      dlopenmodule="$dlpremoduletest"
+	      break
+	    fi
+	  done
+	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
+	    echo
+	    if test "$linkmode" = prog; then
+	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
+	    else
+	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
+	    fi
+	    $ECHO "*** $linklib is not portable!"
+	  fi
+	  if test "$linkmode" = lib &&
+	     test "$hardcode_into_libs" = yes; then
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) func_append compile_rpath " $absdir" ;;
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) func_append finalize_rpath " $libdir" ;;
+	      esac
+	      ;;
+	    esac
+	  fi
+
+	  if test -n "$old_archive_from_expsyms_cmds"; then
+	    # figure out the soname
+	    set dummy $library_names
+	    shift
+	    realname="$1"
+	    shift
+	    libname=`eval "\\$ECHO \"$libname_spec\""`
+	    # use dlname if we got it. it's perfectly good, no?
+	    if test -n "$dlname"; then
+	      soname="$dlname"
+	    elif test -n "$soname_spec"; then
+	      # bleh windows
+	      case $host in
+	      *cygwin* | mingw* | *cegcc*)
+	        func_arith $current - $age
+		major=$func_arith_result
+		versuffix="-$major"
+		;;
+	      esac
+	      eval soname=\"$soname_spec\"
+	    else
+	      soname="$realname"
+	    fi
+
+	    # Make a new name for the extract_expsyms_cmds to use
+	    soroot="$soname"
+	    func_basename "$soroot"
+	    soname="$func_basename_result"
+	    func_stripname 'lib' '.dll' "$soname"
+	    newlib=libimp-$func_stripname_result.a
+
+	    # If the library has no export list, then create one now
+	    if test -f "$output_objdir/$soname-def"; then :
+	    else
+	      func_verbose "extracting exported symbol list from \`$soname'"
+	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
+	    fi
+
+	    # Create $newlib
+	    if test -f "$output_objdir/$newlib"; then :; else
+	      func_verbose "generating import library for \`$soname'"
+	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
+	    fi
+	    # make sure the library variables are pointing to the new library
+	    dir=$output_objdir
+	    linklib=$newlib
+	  fi # test -n "$old_archive_from_expsyms_cmds"
+
+	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    lib_linked=yes
+	    case $hardcode_action in
+	    immediate | unsupported)
+	      if test "$hardcode_direct" = no; then
+		add="$dir/$linklib"
+		case $host in
+		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+		    *-*-unixware7*) add_dir="-L$dir" ;;
+		  *-*-darwin* )
+		    # if the lib is a (non-dlopened) module then we can not
+		    # link against it, someone is ignoring the earlier warnings
+		    if /usr/bin/file -L $add 2> /dev/null |
+			 $GREP ": [^:]* bundle" >/dev/null ; then
+		      if test "X$dlopenmodule" != "X$lib"; then
+			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
+			if test -z "$old_library" ; then
+			  echo
+			  echo "*** And there doesn't seem to be a static archive available"
+			  echo "*** The link will probably fail, sorry"
+			else
+			  add="$dir/$old_library"
+			fi
+		      elif test -n "$old_library"; then
+			add="$dir/$old_library"
+		      fi
+		    fi
+		esac
+	      elif test "$hardcode_minus_L" = no; then
+		case $host in
+		*-*-sunos*) add_shlibpath="$dir" ;;
+		esac
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = no; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    relink)
+	      if test "$hardcode_direct" = yes &&
+	         test "$hardcode_direct_absolute" = no; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = yes; then
+		add_dir="-L$absdir"
+		# Try looking first in the location we're being installed to.
+		if test -n "$inst_prefix_dir"; then
+		  case $libdir in
+		    [\\/]*)
+		      func_append add_dir " -L$inst_prefix_dir$libdir"
+		      ;;
+		  esac
+		fi
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = yes; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    *) lib_linked=no ;;
+	    esac
+
+	    if test "$lib_linked" != yes; then
+	      func_fatal_configuration "unsupported hardcode properties"
+	    fi
+
+	    if test -n "$add_shlibpath"; then
+	      case :$compile_shlibpath: in
+	      *":$add_shlibpath:"*) ;;
+	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
+	      esac
+	    fi
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	      if test "$hardcode_direct" != yes &&
+		 test "$hardcode_minus_L" != yes &&
+		 test "$hardcode_shlibpath_var" = yes; then
+		case :$finalize_shlibpath: in
+		*":$libdir:"*) ;;
+		*) func_append finalize_shlibpath "$libdir:" ;;
+		esac
+	      fi
+	    fi
+	  fi
+
+	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    # Finalize command for both is simple: just hardcode it.
+	    if test "$hardcode_direct" = yes &&
+	       test "$hardcode_direct_absolute" = no; then
+	      add="$libdir/$linklib"
+	    elif test "$hardcode_minus_L" = yes; then
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    elif test "$hardcode_shlibpath_var" = yes; then
+	      case :$finalize_shlibpath: in
+	      *":$libdir:"*) ;;
+	      *) func_append finalize_shlibpath "$libdir:" ;;
+	      esac
+	      add="-l$name"
+	    elif test "$hardcode_automatic" = yes; then
+	      if test -n "$inst_prefix_dir" &&
+		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
+		add="$inst_prefix_dir$libdir/$linklib"
+	      else
+		add="$libdir/$linklib"
+	      fi
+	    else
+	      # We cannot seem to hardcode it, guess we'll fake it.
+	      add_dir="-L$libdir"
+	      # Try looking first in the location we're being installed to.
+	      if test -n "$inst_prefix_dir"; then
+		case $libdir in
+		  [\\/]*)
+		    func_append add_dir " -L$inst_prefix_dir$libdir"
+		    ;;
+		esac
+	      fi
+	      add="-l$name"
+	    fi
+
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	    fi
+	  fi
+	elif test "$linkmode" = prog; then
+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
+	  # is not unsupported.  This is valid on all known static and
+	  # shared platforms.
+	  if test "$hardcode_direct" != unsupported; then
+	    test -n "$old_library" && linklib="$old_library"
+	    compile_deplibs="$dir/$linklib $compile_deplibs"
+	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
+	  else
+	    compile_deplibs="-l$name -L$dir $compile_deplibs"
+	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+	  fi
+	elif test "$build_libtool_libs" = yes; then
+	  # Not a shared library
+	  if test "$deplibs_check_method" != pass_all; then
+	    # We're trying link a shared library against a static one
+	    # but the system doesn't support it.
+
+	    # Just print a warning and add the library to dependency_libs so
+	    # that the program can be linked against the static library.
+	    echo
+	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
+	    echo "*** I have the capability to make that library automatically link in when"
+	    echo "*** you link to this library.  But I can only do this if you have a"
+	    echo "*** shared version of the library, which you do not appear to have."
+	    if test "$module" = yes; then
+	      echo "*** But as you try to build a module library, libtool will still create "
+	      echo "*** a static module, that should work as long as the dlopening application"
+	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+	      if test -z "$global_symbol_pipe"; then
+		echo
+		echo "*** However, this would only work if libtool was able to extract symbol"
+		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+		echo "*** not find such a program.  So, this module is probably useless."
+		echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	      fi
+	      if test "$build_old_libs" = no; then
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  else
+	    deplibs="$dir/$old_library $deplibs"
+	    link_static=yes
+	  fi
+	fi # link shared/static library?
+
+	if test "$linkmode" = lib; then
+	  if test -n "$dependency_libs" &&
+	     { test "$hardcode_into_libs" != yes ||
+	       test "$build_old_libs" = yes ||
+	       test "$link_static" = yes; }; then
+	    # Extract -R from dependency_libs
+	    temp_deplibs=
+	    for libdir in $dependency_libs; do
+	      case $libdir in
+	      -R*) func_stripname '-R' '' "$libdir"
+	           temp_xrpath=$func_stripname_result
+		   case " $xrpath " in
+		   *" $temp_xrpath "*) ;;
+		   *) func_append xrpath " $temp_xrpath";;
+		   esac;;
+	      *) func_append temp_deplibs " $libdir";;
+	      esac
+	    done
+	    dependency_libs="$temp_deplibs"
+	  fi
+
+	  func_append newlib_search_path " $absdir"
+	  # Link against this library
+	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  # ... and its dependency_libs
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    newdependency_libs="$deplib $newdependency_libs"
+	    case $deplib in
+              -L*) func_stripname '-L' '' "$deplib"
+                   func_resolve_sysroot "$func_stripname_result";;
+              *) func_resolve_sysroot "$deplib" ;;
+            esac
+	    if $opt_preserve_dup_deps ; then
+	      case "$tmp_libs " in
+	      *" $func_resolve_sysroot_result "*)
+                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
+	      esac
+	    fi
+	    func_append tmp_libs " $func_resolve_sysroot_result"
+	  done
+
+	  if test "$link_all_deplibs" != no; then
+	    # Add the search paths of all dependency libraries
+	    for deplib in $dependency_libs; do
+	      path=
+	      case $deplib in
+	      -L*) path="$deplib" ;;
+	      *.la)
+	        func_resolve_sysroot "$deplib"
+	        deplib=$func_resolve_sysroot_result
+	        func_dirname "$deplib" "" "."
+		dir=$func_dirname_result
+		# We need an absolute path.
+		case $dir in
+		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+		*)
+		  absdir=`cd "$dir" && pwd`
+		  if test -z "$absdir"; then
+		    func_warning "cannot determine absolute directory name of \`$dir'"
+		    absdir="$dir"
+		  fi
+		  ;;
+		esac
+		if $GREP "^installed=no" $deplib > /dev/null; then
+		case $host in
+		*-*-darwin*)
+		  depdepl=
+		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+		  if test -n "$deplibrary_names" ; then
+		    for tmp in $deplibrary_names ; do
+		      depdepl=$tmp
+		    done
+		    if test -f "$absdir/$objdir/$depdepl" ; then
+		      depdepl="$absdir/$objdir/$depdepl"
+		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+                      if test -z "$darwin_install_name"; then
+                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
+                      fi
+		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
+		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
+		      path=
+		    fi
+		  fi
+		  ;;
+		*)
+		  path="-L$absdir/$objdir"
+		  ;;
+		esac
+		else
+		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  test -z "$libdir" && \
+		    func_fatal_error "\`$deplib' is not a valid libtool archive"
+		  test "$absdir" != "$libdir" && \
+		    func_warning "\`$deplib' seems to be moved"
+
+		  path="-L$absdir"
+		fi
+		;;
+	      esac
+	      case " $deplibs " in
+	      *" $path "*) ;;
+	      *) deplibs="$path $deplibs" ;;
+	      esac
+	    done
+	  fi # link_all_deplibs != no
+	fi # linkmode = lib
+      done # for deplib in $libs
+      if test "$pass" = link; then
+	if test "$linkmode" = "prog"; then
+	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
+	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
+	else
+	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	fi
+      fi
+      dependency_libs="$newdependency_libs"
+      if test "$pass" = dlpreopen; then
+	# Link the dlpreopened libraries before other libraries
+	for deplib in $save_deplibs; do
+	  deplibs="$deplib $deplibs"
+	done
+      fi
+      if test "$pass" != dlopen; then
+	if test "$pass" != conv; then
+	  # Make sure lib_search_path contains only unique directories.
+	  lib_search_path=
+	  for dir in $newlib_search_path; do
+	    case "$lib_search_path " in
+	    *" $dir "*) ;;
+	    *) func_append lib_search_path " $dir" ;;
+	    esac
+	  done
+	  newlib_search_path=
+	fi
+
+	if test "$linkmode,$pass" != "prog,link"; then
+	  vars="deplibs"
+	else
+	  vars="compile_deplibs finalize_deplibs"
+	fi
+	for var in $vars dependency_libs; do
+	  # Add libraries to $var in reverse order
+	  eval tmp_libs=\"\$$var\"
+	  new_libs=
+	  for deplib in $tmp_libs; do
+	    # FIXME: Pedantically, this is the right thing to do, so
+	    #        that some nasty dependency loop isn't accidentally
+	    #        broken:
+	    #new_libs="$deplib $new_libs"
+	    # Pragmatically, this seems to cause very few problems in
+	    # practice:
+	    case $deplib in
+	    -L*) new_libs="$deplib $new_libs" ;;
+	    -R*) ;;
+	    *)
+	      # And here is the reason: when a library appears more
+	      # than once as an explicit dependence of a library, or
+	      # is implicitly linked in more than once by the
+	      # compiler, it is considered special, and multiple
+	      # occurrences thereof are not removed.  Compare this
+	      # with having the same library being listed as a
+	      # dependency of multiple other libraries: in this case,
+	      # we know (pedantically, we assume) the library does not
+	      # need to be listed more than once, so we keep only the
+	      # last copy.  This is not always right, but it is rare
+	      # enough that we require users that really mean to play
+	      # such unportable linking tricks to link the library
+	      # using -Wl,-lname, so that libtool does not consider it
+	      # for duplicate removal.
+	      case " $specialdeplibs " in
+	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
+	      *)
+		case " $new_libs " in
+		*" $deplib "*) ;;
+		*) new_libs="$deplib $new_libs" ;;
+		esac
+		;;
+	      esac
+	      ;;
+	    esac
+	  done
+	  tmp_libs=
+	  for deplib in $new_libs; do
+	    case $deplib in
+	    -L*)
+	      case " $tmp_libs " in
+	      *" $deplib "*) ;;
+	      *) func_append tmp_libs " $deplib" ;;
+	      esac
+	      ;;
+	    *) func_append tmp_libs " $deplib" ;;
+	    esac
+	  done
+	  eval $var=\"$tmp_libs\"
+	done # for var
+      fi
+      # Last step: remove runtime libs from dependency_libs
+      # (they stay in deplibs)
+      tmp_libs=
+      for i in $dependency_libs ; do
+	case " $predeps $postdeps $compiler_lib_search_path " in
+	*" $i "*)
+	  i=""
+	  ;;
+	esac
+	if test -n "$i" ; then
+	  func_append tmp_libs " $i"
+	fi
+      done
+      dependency_libs=$tmp_libs
+    done # for pass
+    if test "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
+    fi
+    if test "$linkmode" = prog || test "$linkmode" = lib; then
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	func_warning "\`-dlopen' is ignored for archives"
+      fi
+
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+	func_warning "\`-l' and \`-L' are ignored for archives" ;;
+      esac
+
+      test -n "$rpath" && \
+	func_warning "\`-rpath' is ignored for archives"
+
+      test -n "$xrpath" && \
+	func_warning "\`-R' is ignored for archives"
+
+      test -n "$vinfo" && \
+	func_warning "\`-version-info/-version-number' is ignored for archives"
+
+      test -n "$release" && \
+	func_warning "\`-release' is ignored for archives"
+
+      test -n "$export_symbols$export_symbols_regex" && \
+	func_warning "\`-export-symbols' is ignored for archives"
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      func_append objs "$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+	func_stripname 'lib' '.la' "$outputname"
+	name=$func_stripname_result
+	eval shared_ext=\"$shrext_cmds\"
+	eval libname=\"$libname_spec\"
+	;;
+      *)
+	test "$module" = no && \
+	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
+
+	if test "$need_lib_prefix" != no; then
+	  # Add the "lib" prefix for modules if required
+	  func_stripname '' '.la' "$outputname"
+	  name=$func_stripname_result
+	  eval shared_ext=\"$shrext_cmds\"
+	  eval libname=\"$libname_spec\"
+	else
+	  func_stripname '' '.la' "$outputname"
+	  libname=$func_stripname_result
+	fi
+	;;
+      esac
+
+      if test -n "$objs"; then
+	if test "$deplibs_check_method" != pass_all; then
+	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
+	else
+	  echo
+	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+	  $ECHO "*** objects $objs is not portable!"
+	  func_append libobjs " $objs"
+	fi
+      fi
+
+      test "$dlself" != no && \
+	func_warning "\`-dlopen self' is ignored for libtool libraries"
+
+      set dummy $rpath
+      shift
+      test "$#" -gt 1 && \
+	func_warning "ignoring multiple \`-rpath's for a libtool library"
+
+      install_libdir="$1"
+
+      oldlibs=
+      if test -z "$rpath"; then
+	if test "$build_libtool_libs" = yes; then
+	  # Building a libtool convenience library.
+	  # Some compilers have problems with a `.al' extension so
+	  # convenience libraries should have the same extension an
+	  # archive normally would.
+	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
+	  build_libtool_libs=convenience
+	  build_old_libs=yes
+	fi
+
+	test -n "$vinfo" && \
+	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
+
+	test -n "$release" && \
+	  func_warning "\`-release' is ignored for convenience libraries"
+      else
+
+	# Parse the version information argument.
+	save_ifs="$IFS"; IFS=':'
+	set dummy $vinfo 0 0 0
+	shift
+	IFS="$save_ifs"
+
+	test -n "$7" && \
+	  func_fatal_help "too many parameters to \`-version-info'"
+
+	# convert absolute version numbers to libtool ages
+	# this retains compatibility with .la files and attempts
+	# to make the code below a bit more comprehensible
+
+	case $vinfo_number in
+	yes)
+	  number_major="$1"
+	  number_minor="$2"
+	  number_revision="$3"
+	  #
+	  # There are really only two kinds -- those that
+	  # use the current revision as the major version
+	  # and those that subtract age and use age as
+	  # a minor version.  But, then there is irix
+	  # which has an extra 1 added just for fun
+	  #
+	  case $version_type in
+	  # correct linux to gnu/linux during the next big refactor
+	  darwin|linux|osf|windows|none)
+	    func_arith $number_major + $number_minor
+	    current=$func_arith_result
+	    age="$number_minor"
+	    revision="$number_revision"
+	    ;;
+	  freebsd-aout|freebsd-elf|qnx|sunos)
+	    current="$number_major"
+	    revision="$number_minor"
+	    age="0"
+	    ;;
+	  irix|nonstopux)
+	    func_arith $number_major + $number_minor
+	    current=$func_arith_result
+	    age="$number_minor"
+	    revision="$number_minor"
+	    lt_irix_increment=no
+	    ;;
+	  esac
+	  ;;
+	no)
+	  current="$1"
+	  revision="$2"
+	  age="$3"
+	  ;;
+	esac
+
+	# Check that each of the things are valid numbers.
+	case $current in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  func_error "CURRENT \`$current' must be a nonnegative integer"
+	  func_fatal_error "\`$vinfo' is not valid version information"
+	  ;;
+	esac
+
+	case $revision in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  func_error "REVISION \`$revision' must be a nonnegative integer"
+	  func_fatal_error "\`$vinfo' is not valid version information"
+	  ;;
+	esac
+
+	case $age in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  func_error "AGE \`$age' must be a nonnegative integer"
+	  func_fatal_error "\`$vinfo' is not valid version information"
+	  ;;
+	esac
+
+	if test "$age" -gt "$current"; then
+	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
+	  func_fatal_error "\`$vinfo' is not valid version information"
+	fi
+
+	# Calculate the version variables.
+	major=
+	versuffix=
+	verstring=
+	case $version_type in
+	none) ;;
+
+	darwin)
+	  # Like Linux, but with the current version available in
+	  # verstring for coding it into the library header
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix="$major.$age.$revision"
+	  # Darwin ld doesn't like 0 for these options...
+	  func_arith $current + 1
+	  minor_current=$func_arith_result
+	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+	  ;;
+
+	freebsd-aout)
+	  major=".$current"
+	  versuffix=".$current.$revision";
+	  ;;
+
+	freebsd-elf)
+	  major=".$current"
+	  versuffix=".$current"
+	  ;;
+
+	irix | nonstopux)
+	  if test "X$lt_irix_increment" = "Xno"; then
+	    func_arith $current - $age
+	  else
+	    func_arith $current - $age + 1
+	  fi
+	  major=$func_arith_result
+
+	  case $version_type in
+	    nonstopux) verstring_prefix=nonstopux ;;
+	    *)         verstring_prefix=sgi ;;
+	  esac
+	  verstring="$verstring_prefix$major.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$revision
+	  while test "$loop" -ne 0; do
+	    func_arith $revision - $loop
+	    iface=$func_arith_result
+	    func_arith $loop - 1
+	    loop=$func_arith_result
+	    verstring="$verstring_prefix$major.$iface:$verstring"
+	  done
+
+	  # Before this point, $major must not contain `.'.
+	  major=.$major
+	  versuffix="$major.$revision"
+	  ;;
+
+	linux) # correct to gnu/linux during the next big refactor
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix="$major.$age.$revision"
+	  ;;
+
+	osf)
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix=".$current.$age.$revision"
+	  verstring="$current.$age.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$age
+	  while test "$loop" -ne 0; do
+	    func_arith $current - $loop
+	    iface=$func_arith_result
+	    func_arith $loop - 1
+	    loop=$func_arith_result
+	    verstring="$verstring:${iface}.0"
+	  done
+
+	  # Make executables depend on our current version.
+	  func_append verstring ":${current}.0"
+	  ;;
+
+	qnx)
+	  major=".$current"
+	  versuffix=".$current"
+	  ;;
+
+	sunos)
+	  major=".$current"
+	  versuffix=".$current.$revision"
+	  ;;
+
+	windows)
+	  # Use '-' rather than '.', since we only want one
+	  # extension on DOS 8.3 filesystems.
+	  func_arith $current - $age
+	  major=$func_arith_result
+	  versuffix="-$major"
+	  ;;
+
+	*)
+	  func_fatal_configuration "unknown library version type \`$version_type'"
+	  ;;
+	esac
+
+	# Clear the version info if we defaulted, and they specified a release.
+	if test -z "$vinfo" && test -n "$release"; then
+	  major=
+	  case $version_type in
+	  darwin)
+	    # we can't check for "0.0" in archive_cmds due to quoting
+	    # problems, so we reset it completely
+	    verstring=
+	    ;;
+	  *)
+	    verstring="0.0"
+	    ;;
+	  esac
+	  if test "$need_version" = no; then
+	    versuffix=
+	  else
+	    versuffix=".0.0"
+	  fi
+	fi
+
+	# Remove version info from name if versioning should be avoided
+	if test "$avoid_version" = yes && test "$need_version" = no; then
+	  major=
+	  versuffix=
+	  verstring=""
+	fi
+
+	# Check to see if the archive will have undefined symbols.
+	if test "$allow_undefined" = yes; then
+	  if test "$allow_undefined_flag" = unsupported; then
+	    func_warning "undefined symbols not allowed in $host shared libraries"
+	    build_libtool_libs=no
+	    build_old_libs=yes
+	  fi
+	else
+	  # Don't allow undefined symbols.
+	  allow_undefined_flag="$no_undefined_flag"
+	fi
+
+      fi
+
+      func_generate_dlsyms "$libname" "$libname" "yes"
+      func_append libobjs " $symfileobj"
+      test "X$libobjs" = "X " && libobjs=
+
+      if test "$opt_mode" != relink; then
+	# Remove our outputs, but don't remove object files since they
+	# may have been created when compiling PIC objects.
+	removelist=
+	tempremovelist=`$ECHO "$output_objdir/*"`
+	for p in $tempremovelist; do
+	  case $p in
+	    *.$objext | *.gcno)
+	       ;;
+	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+	       if test "X$precious_files_regex" != "X"; then
+		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+		 then
+		   continue
+		 fi
+	       fi
+	       func_append removelist " $p"
+	       ;;
+	    *) ;;
+	  esac
+	done
+	test -n "$removelist" && \
+	  func_show_eval "${RM}r \$removelist"
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+	func_append oldlibs " $output_objdir/$libname.$libext"
+
+	# Transform .lo files to .o files.
+	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      #for path in $notinst_path; do
+      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
+      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
+      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
+      #done
+
+      if test -n "$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	temp_xrpath=
+	for libdir in $xrpath; do
+	  func_replace_sysroot "$libdir"
+	  func_append temp_xrpath " -R$func_replace_sysroot_result"
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) func_append finalize_rpath " $libdir" ;;
+	  esac
+	done
+	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+	  dependency_libs="$temp_xrpath $dependency_libs"
+	fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+	case " $dlprefiles $dlfiles " in
+	*" $lib "*) ;;
+	*) func_append dlfiles " $lib" ;;
+	esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+	case "$dlprefiles " in
+	*" $lib "*) ;;
+	*) func_append dlprefiles " $lib" ;;
+	esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+	if test -n "$rpath"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
+	    # these systems don't actually have a c library (as such)!
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C library is in the System framework
+	    func_append deplibs " System.ltframework"
+	    ;;
+	  *-*-netbsd*)
+	    # Don't link with libc until the a.out ld.so is fixed.
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    ;;
+	  *-*-sco3.2v5* | *-*-sco5v6*)
+	    # Causes problems with __ctype
+	    ;;
+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+	    # Compiler inserts libc in the correct place for threads to work
+	    ;;
+	  *)
+	    # Add libc to deplibs on all other systems if necessary.
+	    if test "$build_libtool_need_lc" = "yes"; then
+	      func_append deplibs " -lc"
+	    fi
+	    ;;
+	  esac
+	fi
+
+	# Transform deplibs into only deplibs that can be linked in shared.
+	name_save=$name
+	libname_save=$libname
+	release_save=$release
+	versuffix_save=$versuffix
+	major_save=$major
+	# I'm not sure if I'm treating the release correctly.  I think
+	# release should show up in the -l (ie -lgmp5) so we don't want to
+	# add it in twice.  Is that correct?
+	release=""
+	versuffix=""
+	major=""
+	newdeplibs=
+	droppeddeps=no
+	case $deplibs_check_method in
+	pass_all)
+	  # Don't check for shared/static.  Everything works.
+	  # This might be a little naive.  We might want to check
+	  # whether the library exists or not.  But this is on
+	  # osf3 & osf4 and I'm not really sure... Just
+	  # implementing what was already the behavior.
+	  newdeplibs=$deplibs
+	  ;;
+	test_compile)
+	  # This code stresses the "libraries are programs" paradigm to its
+	  # limits. Maybe even breaks it.  We compile a program, linking it
+	  # against the deplibs as a proxy for the library.  Then we can check
+	  # whether they linked in statically or dynamically with ldd.
+	  $opt_dry_run || $RM conftest.c
+	  cat > conftest.c <<EOF
+	  int main() { return 0; }
+EOF
+	  $opt_dry_run || $RM conftest
+	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+	    ldd_output=`ldd conftest`
+	    for i in $deplibs; do
+	      case $i in
+	      -l*)
+		func_stripname -l '' "$i"
+		name=$func_stripname_result
+		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		  case " $predeps $postdeps " in
+		  *" $i "*)
+		    func_append newdeplibs " $i"
+		    i=""
+		    ;;
+		  esac
+		fi
+		if test -n "$i" ; then
+		  libname=`eval "\\$ECHO \"$libname_spec\""`
+		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+		  set dummy $deplib_matches; shift
+		  deplib_match=$1
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		    func_append newdeplibs " $i"
+		  else
+		    droppeddeps=yes
+		    echo
+		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+		    echo "*** I have the capability to make that library automatically link in when"
+		    echo "*** you link to this library.  But I can only do this if you have a"
+		    echo "*** shared version of the library, which I believe you do not have"
+		    echo "*** because a test_compile did reveal that the linker did not use it for"
+		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
+		  fi
+		fi
+		;;
+	      *)
+		func_append newdeplibs " $i"
+		;;
+	      esac
+	    done
+	  else
+	    # Error occurred in the first compile.  Let's try to salvage
+	    # the situation: Compile a separate program for each library.
+	    for i in $deplibs; do
+	      case $i in
+	      -l*)
+		func_stripname -l '' "$i"
+		name=$func_stripname_result
+		$opt_dry_run || $RM conftest
+		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+		  ldd_output=`ldd conftest`
+		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		    case " $predeps $postdeps " in
+		    *" $i "*)
+		      func_append newdeplibs " $i"
+		      i=""
+		      ;;
+		    esac
+		  fi
+		  if test -n "$i" ; then
+		    libname=`eval "\\$ECHO \"$libname_spec\""`
+		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+		    set dummy $deplib_matches; shift
+		    deplib_match=$1
+		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		      func_append newdeplibs " $i"
+		    else
+		      droppeddeps=yes
+		      echo
+		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+		      echo "*** I have the capability to make that library automatically link in when"
+		      echo "*** you link to this library.  But I can only do this if you have a"
+		      echo "*** shared version of the library, which you do not appear to have"
+		      echo "*** because a test_compile did reveal that the linker did not use this one"
+		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+		    fi
+		  fi
+		else
+		  droppeddeps=yes
+		  echo
+		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
+		  echo "*** make it link in!  You will probably need to install it or some"
+		  echo "*** library that it depends on before this library will be fully"
+		  echo "*** functional.  Installing it before continuing would be even better."
+		fi
+		;;
+	      *)
+		func_append newdeplibs " $i"
+		;;
+	      esac
+	    done
+	  fi
+	  ;;
+	file_magic*)
+	  set dummy $deplibs_check_method; shift
+	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    case $a_deplib in
+	    -l*)
+	      func_stripname -l '' "$a_deplib"
+	      name=$func_stripname_result
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  func_append newdeplibs " $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval "\\$ECHO \"$libname_spec\""`
+		if test -n "$file_magic_glob"; then
+		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
+		else
+		  libnameglob=$libname
+		fi
+		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  if test "$want_nocaseglob" = yes; then
+		    shopt -s nocaseglob
+		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+		    $nocaseglob
+		  else
+		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+		  fi
+		  for potent_lib in $potential_libs; do
+		      # Follow soft links.
+		      if ls -lLd "$potent_lib" 2>/dev/null |
+			 $GREP " -> " >/dev/null; then
+			continue
+		      fi
+		      # The statement above tries to avoid entering an
+		      # endless loop below, in case of cyclic links.
+		      # We might still enter an endless loop, since a link
+		      # loop can be closed while we follow links,
+		      # but so what?
+		      potlib="$potent_lib"
+		      while test -h "$potlib" 2>/dev/null; do
+			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+			case $potliblink in
+			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
+			esac
+		      done
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+			 $SED -e 10q |
+			 $EGREP "$file_magic_regex" > /dev/null; then
+			func_append newdeplibs " $a_deplib"
+			a_deplib=""
+			break 2
+		      fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		echo
+		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
+		else
+		  $ECHO "*** with $libname and none of the candidates passed a file format test"
+		  $ECHO "*** using a file magic. Last file checked: $potlib"
+		fi
+	      fi
+	      ;;
+	    *)
+	      # Add a -L argument.
+	      func_append newdeplibs " $a_deplib"
+	      ;;
+	    esac
+	  done # Gone through all deplibs.
+	  ;;
+	match_pattern*)
+	  set dummy $deplibs_check_method; shift
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    case $a_deplib in
+	    -l*)
+	      func_stripname -l '' "$a_deplib"
+	      name=$func_stripname_result
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  func_append newdeplibs " $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval "\\$ECHO \"$libname_spec\""`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		    potlib="$potent_lib" # see symlink-check above in file_magic test
+		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
+		       $EGREP "$match_pattern_regex" > /dev/null; then
+		      func_append newdeplibs " $a_deplib"
+		      a_deplib=""
+		      break 2
+		    fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		echo
+		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
+		else
+		  $ECHO "*** with $libname and none of the candidates passed a file format test"
+		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
+		fi
+	      fi
+	      ;;
+	    *)
+	      # Add a -L argument.
+	      func_append newdeplibs " $a_deplib"
+	      ;;
+	    esac
+	  done # Gone through all deplibs.
+	  ;;
+	none | unknown | *)
+	  newdeplibs=""
+	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
+	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	    for i in $predeps $postdeps ; do
+	      # can't use Xsed below, because $i might contain '/'
+	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
+	    done
+	  fi
+	  case $tmp_deplibs in
+	  *[!\	\ ]*)
+	    echo
+	    if test "X$deplibs_check_method" = "Xnone"; then
+	      echo "*** Warning: inter-library dependencies are not supported in this platform."
+	    else
+	      echo "*** Warning: inter-library dependencies are not known to be supported."
+	    fi
+	    echo "*** All declared inter-library dependencies are being dropped."
+	    droppeddeps=yes
+	    ;;
+	  esac
+	  ;;
+	esac
+	versuffix=$versuffix_save
+	major=$major_save
+	release=$release_save
+	libname=$libname_save
+	name=$name_save
+
+	case $host in
+	*-*-rhapsody* | *-*-darwin1.[012])
+	  # On Rhapsody replace the C library with the System framework
+	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
+	  ;;
+	esac
+
+	if test "$droppeddeps" = yes; then
+	  if test "$module" = yes; then
+	    echo
+	    echo "*** Warning: libtool could not satisfy all declared inter-library"
+	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
+	    echo "*** a static module, that should work as long as the dlopening"
+	    echo "*** application is linked with the -dlopen flag."
+	    if test -z "$global_symbol_pipe"; then
+	      echo
+	      echo "*** However, this would only work if libtool was able to extract symbol"
+	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+	      echo "*** not find such a program.  So, this module is probably useless."
+	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	    fi
+	    if test "$build_old_libs" = no; then
+	      oldlibs="$output_objdir/$libname.$libext"
+	      build_libtool_libs=module
+	      build_old_libs=yes
+	    else
+	      build_libtool_libs=no
+	    fi
+	  else
+	    echo "*** The inter-library dependencies that have been dropped here will be"
+	    echo "*** automatically added whenever a program is linked with this library"
+	    echo "*** or is declared to -dlopen it."
+
+	    if test "$allow_undefined" = no; then
+	      echo
+	      echo "*** Since this library must not contain undefined symbols,"
+	      echo "*** because either the platform does not support them or"
+	      echo "*** it was explicitly requested with -no-undefined,"
+	      echo "*** libtool will only create a static version of it."
+	      if test "$build_old_libs" = no; then
+		oldlibs="$output_objdir/$libname.$libext"
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  fi
+	fi
+	# Done checking deplibs!
+	deplibs=$newdeplibs
+      fi
+      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+      case $host in
+	*-*-darwin*)
+	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  ;;
+      esac
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+	case " $new_libs " in
+	*" -L$path/$objdir "*) ;;
+	*)
+	  case " $deplibs " in
+	  *" -L$path/$objdir "*)
+	    func_append new_libs " -L$path/$objdir" ;;
+	  esac
+	  ;;
+	esac
+      done
+      for deplib in $deplibs; do
+	case $deplib in
+	-L*)
+	  case " $new_libs " in
+	  *" $deplib "*) ;;
+	  *) func_append new_libs " $deplib" ;;
+	  esac
+	  ;;
+	*) func_append new_libs " $deplib" ;;
+	esac
+      done
+      deplibs="$new_libs"
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+	# Remove ${wl} instances when linking with ld.
+	# FIXME: should test the right _cmds variable.
+	case $archive_cmds in
+	  *\$LD\ *) wl= ;;
+        esac
+	if test "$hardcode_into_libs" = yes; then
+	  # Hardcode the library paths
+	  hardcode_libdirs=
+	  dep_rpath=
+	  rpath="$finalize_rpath"
+	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
+	  for libdir in $rpath; do
+	    if test -n "$hardcode_libdir_flag_spec"; then
+	      if test -n "$hardcode_libdir_separator"; then
+		func_replace_sysroot "$libdir"
+		libdir=$func_replace_sysroot_result
+		if test -z "$hardcode_libdirs"; then
+		  hardcode_libdirs="$libdir"
+		else
+		  # Just accumulate the unique libdirs.
+		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		    ;;
+		  *)
+		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+		    ;;
+		  esac
+		fi
+	      else
+		eval flag=\"$hardcode_libdir_flag_spec\"
+		func_append dep_rpath " $flag"
+	      fi
+	    elif test -n "$runpath_var"; then
+	      case "$perm_rpath " in
+	      *" $libdir "*) ;;
+	      *) func_append perm_rpath " $libdir" ;;
+	      esac
+	    fi
+	  done
+	  # Substitute the hardcoded libdirs into the rpath.
+	  if test -n "$hardcode_libdir_separator" &&
+	     test -n "$hardcode_libdirs"; then
+	    libdir="$hardcode_libdirs"
+	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
+	  fi
+	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
+	    # We should set the runpath_var.
+	    rpath=
+	    for dir in $perm_rpath; do
+	      func_append rpath "$dir:"
+	    done
+	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+	  fi
+	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+	fi
+
+	shlibpath="$finalize_shlibpath"
+	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	if test -n "$shlibpath"; then
+	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+	fi
+
+	# Get the real and link names of the library.
+	eval shared_ext=\"$shrext_cmds\"
+	eval library_names=\"$library_names_spec\"
+	set dummy $library_names
+	shift
+	realname="$1"
+	shift
+
+	if test -n "$soname_spec"; then
+	  eval soname=\"$soname_spec\"
+	else
+	  soname="$realname"
+	fi
+	if test -z "$dlname"; then
+	  dlname=$soname
+	fi
+
+	lib="$output_objdir/$realname"
+	linknames=
+	for link
+	do
+	  func_append linknames " $link"
+	done
+
+	# Use standard objects if they are pic
+	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+	test "X$libobjs" = "X " && libobjs=
+
+	delfiles=
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+	  export_symbols="$output_objdir/$libname.uexp"
+	  func_append delfiles " $export_symbols"
+	fi
+
+	orig_export_symbols=
+	case $host_os in
+	cygwin* | mingw* | cegcc*)
+	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
+	    # exporting using user supplied symfile
+	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+	      # and it's NOT already a .def file. Must figure out
+	      # which of the given symbols are data symbols and tag
+	      # them as such. So, trigger use of export_symbols_cmds.
+	      # export_symbols gets reassigned inside the "prepare
+	      # the list of exported symbols" if statement, so the
+	      # include_expsyms logic still works.
+	      orig_export_symbols="$export_symbols"
+	      export_symbols=
+	      always_export_symbols=yes
+	    fi
+	  fi
+	  ;;
+	esac
+
+	# Prepare the list of exported symbols
+	if test -z "$export_symbols"; then
+	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+	    func_verbose "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $opt_dry_run || $RM $export_symbols
+	    cmds=$export_symbols_cmds
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd1 in $cmds; do
+	      IFS="$save_ifs"
+	      # Take the normal branch if the nm_file_list_spec branch
+	      # doesn't work or if tool conversion is not needed.
+	      case $nm_file_list_spec~$to_tool_file_cmd in
+		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
+		  try_normal_branch=yes
+		  eval cmd=\"$cmd1\"
+		  func_len " $cmd"
+		  len=$func_len_result
+		  ;;
+		*)
+		  try_normal_branch=no
+		  ;;
+	      esac
+	      if test "$try_normal_branch" = yes \
+		 && { test "$len" -lt "$max_cmd_len" \
+		      || test "$max_cmd_len" -le -1; }
+	      then
+		func_show_eval "$cmd" 'exit $?'
+		skipped_export=false
+	      elif test -n "$nm_file_list_spec"; then
+		func_basename "$output"
+		output_la=$func_basename_result
+		save_libobjs=$libobjs
+		save_output=$output
+		output=${output_objdir}/${output_la}.nm
+		func_to_tool_file "$output"
+		libobjs=$nm_file_list_spec$func_to_tool_file_result
+		func_append delfiles " $output"
+		func_verbose "creating $NM input file list: $output"
+		for obj in $save_libobjs; do
+		  func_to_tool_file "$obj"
+		  $ECHO "$func_to_tool_file_result"
+		done > "$output"
+		eval cmd=\"$cmd1\"
+		func_show_eval "$cmd" 'exit $?'
+		output=$save_output
+		libobjs=$save_libobjs
+		skipped_export=false
+	      else
+		# The command line is too long to execute in one step.
+		func_verbose "using reloadable object file for export list..."
+		skipped_export=:
+		# Break out early, otherwise skipped_export may be
+		# set to false by a later but shorter cmd.
+		break
+	      fi
+	    done
+	    IFS="$save_ifs"
+	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
+	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+	fi
+
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  tmp_export_symbols="$export_symbols"
+	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+	fi
+
+	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+	  # The given exports_symbols file has to be filtered, so filter it.
+	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
+	  # 's' commands which not all seds can handle. GNU sed should be fine
+	  # though. Also, the filter scales superlinearly with the number of
+	  # global variables. join(1) would be nice here, but unfortunately
+	  # isn't a blessed tool.
+	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+	  export_symbols=$output_objdir/$libname.def
+	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+	fi
+
+	tmp_deplibs=
+	for test_deplib in $deplibs; do
+	  case " $convenience " in
+	  *" $test_deplib "*) ;;
+	  *)
+	    func_append tmp_deplibs " $test_deplib"
+	    ;;
+	  esac
+	done
+	deplibs="$tmp_deplibs"
+
+	if test -n "$convenience"; then
+	  if test -n "$whole_archive_flag_spec" &&
+	    test "$compiler_needs_object" = yes &&
+	    test -z "$libobjs"; then
+	    # extract the archives, so we have objects to list.
+	    # TODO: could optimize this to just extract one archive.
+	    whole_archive_flag_spec=
+	  fi
+	  if test -n "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	    test "X$libobjs" = "X " && libobjs=
+	  else
+	    gentop="$output_objdir/${outputname}x"
+	    func_append generated " $gentop"
+
+	    func_extract_archives $gentop $convenience
+	    func_append libobjs " $func_extract_archives_result"
+	    test "X$libobjs" = "X " && libobjs=
+	  fi
+	fi
+
+	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+	  eval flag=\"$thread_safe_flag_spec\"
+	  func_append linker_flags " $flag"
+	fi
+
+	# Make a backup of the uninstalled library when relinking
+	if test "$opt_mode" = relink; then
+	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
+	fi
+
+	# Do each of the archive commands.
+	if test "$module" = yes && test -n "$module_cmds" ; then
+	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	    eval test_cmds=\"$module_expsym_cmds\"
+	    cmds=$module_expsym_cmds
+	  else
+	    eval test_cmds=\"$module_cmds\"
+	    cmds=$module_cmds
+	  fi
+	else
+	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	    eval test_cmds=\"$archive_expsym_cmds\"
+	    cmds=$archive_expsym_cmds
+	  else
+	    eval test_cmds=\"$archive_cmds\"
+	    cmds=$archive_cmds
+	  fi
+	fi
+
+	if test "X$skipped_export" != "X:" &&
+	   func_len " $test_cmds" &&
+	   len=$func_len_result &&
+	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  :
+	else
+	  # The command line is too long to link in one step, link piecewise
+	  # or, if using GNU ld and skipped_export is not :, use a linker
+	  # script.
+
+	  # Save the value of $output and $libobjs because we want to
+	  # use them later.  If we have whole_archive_flag_spec, we
+	  # want to use save_libobjs as it was before
+	  # whole_archive_flag_spec was expanded, because we can't
+	  # assume the linker understands whole_archive_flag_spec.
+	  # This may have to be revisited, in case too many
+	  # convenience libraries get linked in and end up exceeding
+	  # the spec.
+	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	  fi
+	  save_output=$output
+	  func_basename "$output"
+	  output_la=$func_basename_result
+
+	  # Clear the reloadable object creation command queue and
+	  # initialize k to one.
+	  test_cmds=
+	  concat_cmds=
+	  objlist=
+	  last_robj=
+	  k=1
+
+	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
+	    output=${output_objdir}/${output_la}.lnkscript
+	    func_verbose "creating GNU ld script: $output"
+	    echo 'INPUT (' > $output
+	    for obj in $save_libobjs
+	    do
+	      func_to_tool_file "$obj"
+	      $ECHO "$func_to_tool_file_result" >> $output
+	    done
+	    echo ')' >> $output
+	    func_append delfiles " $output"
+	    func_to_tool_file "$output"
+	    output=$func_to_tool_file_result
+	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
+	    output=${output_objdir}/${output_la}.lnk
+	    func_verbose "creating linker input file list: $output"
+	    : > $output
+	    set x $save_libobjs
+	    shift
+	    firstobj=
+	    if test "$compiler_needs_object" = yes; then
+	      firstobj="$1 "
+	      shift
+	    fi
+	    for obj
+	    do
+	      func_to_tool_file "$obj"
+	      $ECHO "$func_to_tool_file_result" >> $output
+	    done
+	    func_append delfiles " $output"
+	    func_to_tool_file "$output"
+	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
+	  else
+	    if test -n "$save_libobjs"; then
+	      func_verbose "creating reloadable object files..."
+	      output=$output_objdir/$output_la-${k}.$objext
+	      eval test_cmds=\"$reload_cmds\"
+	      func_len " $test_cmds"
+	      len0=$func_len_result
+	      len=$len0
+
+	      # Loop over the list of objects to be linked.
+	      for obj in $save_libobjs
+	      do
+		func_len " $obj"
+		func_arith $len + $func_len_result
+		len=$func_arith_result
+		if test "X$objlist" = X ||
+		   test "$len" -lt "$max_cmd_len"; then
+		  func_append objlist " $obj"
+		else
+		  # The command $test_cmds is almost too long, add a
+		  # command to the queue.
+		  if test "$k" -eq 1 ; then
+		    # The first file doesn't have a previous command to add.
+		    reload_objs=$objlist
+		    eval concat_cmds=\"$reload_cmds\"
+		  else
+		    # All subsequent reloadable object files will link in
+		    # the last one created.
+		    reload_objs="$objlist $last_robj"
+		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
+		  fi
+		  last_robj=$output_objdir/$output_la-${k}.$objext
+		  func_arith $k + 1
+		  k=$func_arith_result
+		  output=$output_objdir/$output_la-${k}.$objext
+		  objlist=" $obj"
+		  func_len " $last_robj"
+		  func_arith $len0 + $func_len_result
+		  len=$func_arith_result
+		fi
+	      done
+	      # Handle the remaining objects by creating one last
+	      # reloadable object file.  All subsequent reloadable object
+	      # files will link in the last one created.
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      reload_objs="$objlist $last_robj"
+	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
+	      if test -n "$last_robj"; then
+	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+	      fi
+	      func_append delfiles " $output"
+
+	    else
+	      output=
+	    fi
+
+	    if ${skipped_export-false}; then
+	      func_verbose "generating symbol list for \`$libname.la'"
+	      export_symbols="$output_objdir/$libname.exp"
+	      $opt_dry_run || $RM $export_symbols
+	      libobjs=$output
+	      # Append the command to create the export file.
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
+	      if test -n "$last_robj"; then
+		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+	      fi
+	    fi
+
+	    test -n "$save_libobjs" &&
+	      func_verbose "creating a temporary reloadable object file: $output"
+
+	    # Loop through the commands generated above and execute them.
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd in $concat_cmds; do
+	      IFS="$save_ifs"
+	      $opt_silent || {
+		  func_quote_for_expand "$cmd"
+		  eval "func_echo $func_quote_for_expand_result"
+	      }
+	      $opt_dry_run || eval "$cmd" || {
+		lt_exit=$?
+
+		# Restore the uninstalled library and exit
+		if test "$opt_mode" = relink; then
+		  ( cd "$output_objdir" && \
+		    $RM "${realname}T" && \
+		    $MV "${realname}U" "$realname" )
+		fi
+
+		exit $lt_exit
+	      }
+	    done
+	    IFS="$save_ifs"
+
+	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
+	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+
+          if ${skipped_export-false}; then
+	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	      tmp_export_symbols="$export_symbols"
+	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+	    fi
+
+	    if test -n "$orig_export_symbols"; then
+	      # The given exports_symbols file has to be filtered, so filter it.
+	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
+	      # 's' commands which not all seds can handle. GNU sed should be fine
+	      # though. Also, the filter scales superlinearly with the number of
+	      # global variables. join(1) would be nice here, but unfortunately
+	      # isn't a blessed tool.
+	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+	      export_symbols=$output_objdir/$libname.def
+	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+	    fi
+	  fi
+
+	  libobjs=$output
+	  # Restore the value of output.
+	  output=$save_output
+
+	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	    test "X$libobjs" = "X " && libobjs=
+	  fi
+	  # Expand the library linking commands again to reset the
+	  # value of $libobjs for piecewise linking.
+
+	  # Do each of the archive commands.
+	  if test "$module" = yes && test -n "$module_cmds" ; then
+	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	      cmds=$module_expsym_cmds
+	    else
+	      cmds=$module_cmds
+	    fi
+	  else
+	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	      cmds=$archive_expsym_cmds
+	    else
+	      cmds=$archive_cmds
+	    fi
+	  fi
+	fi
+
+	if test -n "$delfiles"; then
+	  # Append the command to remove temporary files to $cmds.
+	  eval cmds=\"\$cmds~\$RM $delfiles\"
+	fi
+
+	# Add any objects from preloaded convenience libraries
+	if test -n "$dlprefiles"; then
+	  gentop="$output_objdir/${outputname}x"
+	  func_append generated " $gentop"
+
+	  func_extract_archives $gentop $dlprefiles
+	  func_append libobjs " $func_extract_archives_result"
+	  test "X$libobjs" = "X " && libobjs=
+	fi
+
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $opt_silent || {
+	    func_quote_for_expand "$cmd"
+	    eval "func_echo $func_quote_for_expand_result"
+	  }
+	  $opt_dry_run || eval "$cmd" || {
+	    lt_exit=$?
+
+	    # Restore the uninstalled library and exit
+	    if test "$opt_mode" = relink; then
+	      ( cd "$output_objdir" && \
+	        $RM "${realname}T" && \
+		$MV "${realname}U" "$realname" )
+	    fi
+
+	    exit $lt_exit
+	  }
+	done
+	IFS="$save_ifs"
+
+	# Restore the uninstalled library and exit
+	if test "$opt_mode" = relink; then
+	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
+
+	  if test -n "$convenience"; then
+	    if test -z "$whole_archive_flag_spec"; then
+	      func_show_eval '${RM}r "$gentop"'
+	    fi
+	  fi
+
+	  exit $EXIT_SUCCESS
+	fi
+
+	# Create links to the real library.
+	for linkname in $linknames; do
+	  if test "$realname" != "$linkname"; then
+	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
+	  fi
+	done
+
+	# If -module or -export-dynamic was specified, set the dlname.
+	if test "$module" = yes || test "$export_dynamic" = yes; then
+	  # On all known operating systems, these are identical.
+	  dlname="$soname"
+	fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	func_warning "\`-dlopen' is ignored for objects"
+      fi
+
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+	func_warning "\`-l' and \`-L' are ignored for objects" ;;
+      esac
+
+      test -n "$rpath" && \
+	func_warning "\`-rpath' is ignored for objects"
+
+      test -n "$xrpath" && \
+	func_warning "\`-R' is ignored for objects"
+
+      test -n "$vinfo" && \
+	func_warning "\`-version-info' is ignored for objects"
+
+      test -n "$release" && \
+	func_warning "\`-release' is ignored for objects"
+
+      case $output in
+      *.lo)
+	test -n "$objs$old_deplibs" && \
+	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
+
+	libobj=$output
+	func_lo2o "$libobj"
+	obj=$func_lo2o_result
+	;;
+      *)
+	libobj=
+	obj="$output"
+	;;
+      esac
+
+      # Delete the old objects.
+      $opt_dry_run || $RM $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec and hope we can get by with
+      # turning comma into space..
+      wl=
+
+      if test -n "$convenience"; then
+	if test -n "$whole_archive_flag_spec"; then
+	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+	else
+	  gentop="$output_objdir/${obj}x"
+	  func_append generated " $gentop"
+
+	  func_extract_archives $gentop $convenience
+	  reload_conv_objs="$reload_objs $func_extract_archives_result"
+	fi
+      fi
+
+      # If we're not building shared, we need to use non_pic_objs
+      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      func_execute_cmds "$reload_cmds" 'exit $?'
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+	if test -n "$gentop"; then
+	  func_show_eval '${RM}r "$gentop"'
+	fi
+
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+	if test -n "$gentop"; then
+	  func_show_eval '${RM}r "$gentop"'
+	fi
+
+	# Create an invalid libtool object if no PIC, so that we don't
+	# accidentally link it into a program.
+	# $show "echo timestamp > $libobj"
+	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
+	exit $EXIT_SUCCESS
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+	# Only do commands if we really have different PIC objects.
+	reload_objs="$libobjs $reload_conv_objs"
+	output="$libobj"
+	func_execute_cmds "$reload_cmds" 'exit $?'
+      fi
+
+      if test -n "$gentop"; then
+	func_show_eval '${RM}r "$gentop"'
+      fi
+
+      exit $EXIT_SUCCESS
+      ;;
+
+    prog)
+      case $host in
+	*cygwin*) func_stripname '' '.exe' "$output"
+	          output=$func_stripname_result.exe;;
+      esac
+      test -n "$vinfo" && \
+	func_warning "\`-version-info' is ignored for programs"
+
+      test -n "$release" && \
+	func_warning "\`-release' is ignored for programs"
+
+      test "$preload" = yes \
+        && test "$dlopen_support" = unknown \
+	&& test "$dlopen_self" = unknown \
+	&& test "$dlopen_self_static" = unknown && \
+	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+	# On Rhapsody replace the C library is the System framework
+	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
+	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
+	;;
+      esac
+
+      case $host in
+      *-*-darwin*)
+	# Don't allow lazy linking, it breaks C++ global constructors
+	# But is supposedly fixed on 10.4 or later (yay!).
+	if test "$tagname" = CXX ; then
+	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+	    10.[0123])
+	      func_append compile_command " ${wl}-bind_at_load"
+	      func_append finalize_command " ${wl}-bind_at_load"
+	    ;;
+	  esac
+	fi
+	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
+	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	;;
+      esac
+
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+	case " $new_libs " in
+	*" -L$path/$objdir "*) ;;
+	*)
+	  case " $compile_deplibs " in
+	  *" -L$path/$objdir "*)
+	    func_append new_libs " -L$path/$objdir" ;;
+	  esac
+	  ;;
+	esac
+      done
+      for deplib in $compile_deplibs; do
+	case $deplib in
+	-L*)
+	  case " $new_libs " in
+	  *" $deplib "*) ;;
+	  *) func_append new_libs " $deplib" ;;
+	  esac
+	  ;;
+	*) func_append new_libs " $deplib" ;;
+	esac
+      done
+      compile_deplibs="$new_libs"
+
+
+      func_append compile_command " $compile_deplibs"
+      func_append finalize_command " $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	for libdir in $rpath $xrpath; do
+	  # This is the magic to use -rpath.
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) func_append finalize_rpath " $libdir" ;;
+	  esac
+	done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    func_append rpath " $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) func_append perm_rpath " $libdir" ;;
+	  esac
+	fi
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
+	  case :$dllsearchpath: in
+	  *":$libdir:"*) ;;
+	  ::) dllsearchpath=$libdir;;
+	  *) func_append dllsearchpath ":$libdir";;
+	  esac
+	  case :$dllsearchpath: in
+	  *":$testbindir:"*) ;;
+	  ::) dllsearchpath=$testbindir;;
+	  *) func_append dllsearchpath ":$testbindir";;
+	  esac
+	  ;;
+	esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    func_append rpath " $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$finalize_perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) func_append finalize_perm_rpath " $libdir" ;;
+	  esac
+	fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+	# Transform all the library objects into standard objects.
+	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+      fi
+
+      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
+
+      # template prelinking step
+      if test -n "$prelink_cmds"; then
+	func_execute_cmds "$prelink_cmds" 'exit $?'
+      fi
+
+      wrappers_required=yes
+      case $host in
+      *cegcc* | *mingw32ce*)
+        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
+        wrappers_required=no
+        ;;
+      *cygwin* | *mingw* )
+        if test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
+        ;;
+      *)
+        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
+        ;;
+      esac
+      if test "$wrappers_required" = no; then
+	# Replace the output file specification.
+	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+	link_command="$compile_command$compile_rpath"
+
+	# We have no uninstalled library dependencies, so finalize right now.
+	exit_status=0
+	func_show_eval "$link_command" 'exit_status=$?'
+
+	if test -n "$postlink_cmds"; then
+	  func_to_tool_file "$output"
+	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	  func_execute_cmds "$postlink_cmds" 'exit $?'
+	fi
+
+	# Delete the generated files.
+	if test -f "$output_objdir/${outputname}S.${objext}"; then
+	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+	fi
+
+	exit $exit_status
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+	if test -n "$perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $perm_rpath; do
+	    func_append rpath "$dir:"
+	  done
+	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+	if test -n "$finalize_perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $finalize_perm_rpath; do
+	    func_append rpath "$dir:"
+	  done
+	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+      fi
+
+      if test "$no_install" = yes; then
+	# We don't need to create a wrapper script.
+	link_command="$compile_var$compile_command$compile_rpath"
+	# Replace the output file specification.
+	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+	# Delete the old output file.
+	$opt_dry_run || $RM $output
+	# Link the executable and exit
+	func_show_eval "$link_command" 'exit $?'
+
+	if test -n "$postlink_cmds"; then
+	  func_to_tool_file "$output"
+	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	  func_execute_cmds "$postlink_cmds" 'exit $?'
+	fi
+
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$hardcode_action" = relink; then
+	# Fast installation is not supported
+	link_command="$compile_var$compile_command$compile_rpath"
+	relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+	func_warning "this platform does not like uninstalled shared libraries"
+	func_warning "\`$output' will be relinked during installation"
+      else
+	if test "$fast_install" != no; then
+	  link_command="$finalize_var$compile_command$finalize_rpath"
+	  if test "$fast_install" = yes; then
+	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
+	  else
+	    # fast_install is set to needless
+	    relink_command=
+	  fi
+	else
+	  link_command="$compile_var$compile_command$compile_rpath"
+	  relink_command="$finalize_var$finalize_command$finalize_rpath"
+	fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      func_show_eval "$link_command" 'exit $?'
+
+      if test -n "$postlink_cmds"; then
+	func_to_tool_file "$output_objdir/$outputname"
+	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	func_execute_cmds "$postlink_cmds" 'exit $?'
+      fi
+
+      # Now create the wrapper script.
+      func_verbose "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+	# Preserve any variables that may affect compiler behavior
+	for var in $variables_saved_for_relink; do
+	  if eval test -z \"\${$var+set}\"; then
+	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+	  elif eval var_value=\$$var; test -z "$var_value"; then
+	    relink_command="$var=; export $var; $relink_command"
+	  else
+	    func_quote_for_eval "$var_value"
+	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+	  fi
+	done
+	relink_command="(cd `pwd`; $relink_command)"
+	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if not in dry run mode.
+      $opt_dry_run || {
+	# win32 will think the script is a binary if it has
+	# a .exe suffix, so we strip it off here.
+	case $output in
+	  *.exe) func_stripname '' '.exe' "$output"
+	         output=$func_stripname_result ;;
+	esac
+	# test for cygwin because mv fails w/o .exe extensions
+	case $host in
+	  *cygwin*)
+	    exeext=.exe
+	    func_stripname '' '.exe' "$outputname"
+	    outputname=$func_stripname_result ;;
+	  *) exeext= ;;
+	esac
+	case $host in
+	  *cygwin* | *mingw* )
+	    func_dirname_and_basename "$output" "" "."
+	    output_name=$func_basename_result
+	    output_path=$func_dirname_result
+	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
+	    cwrapper="$output_path/$output_name.exe"
+	    $RM $cwrappersource $cwrapper
+	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+	    func_emit_cwrapperexe_src > $cwrappersource
+
+	    # The wrapper executable is built using the $host compiler,
+	    # because it contains $host paths and files. If cross-
+	    # compiling, it, like the target executable, must be
+	    # executed on the $host or under an emulation environment.
+	    $opt_dry_run || {
+	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
+	      $STRIP $cwrapper
+	    }
+
+	    # Now, create the wrapper script for func_source use:
+	    func_ltwrapper_scriptname $cwrapper
+	    $RM $func_ltwrapper_scriptname_result
+	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
+	    $opt_dry_run || {
+	      # note: this script will not be executed, so do not chmod.
+	      if test "x$build" = "x$host" ; then
+		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
+	      else
+		func_emit_wrapper no > $func_ltwrapper_scriptname_result
+	      fi
+	    }
+	  ;;
+	  * )
+	    $RM $output
+	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
+
+	    func_emit_wrapper no > $output
+	    chmod +x $output
+	  ;;
+	esac
+      }
+      exit $EXIT_SUCCESS
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+	oldobjs="$libobjs_save $symfileobj"
+	addlibs="$convenience"
+	build_libtool_libs=no
+      else
+	if test "$build_libtool_libs" = module; then
+	  oldobjs="$libobjs_save"
+	  build_libtool_libs=no
+	else
+	  oldobjs="$old_deplibs $non_pic_objects"
+	  if test "$preload" = yes && test -f "$symfileobj"; then
+	    func_append oldobjs " $symfileobj"
+	  fi
+	fi
+	addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+	gentop="$output_objdir/${outputname}x"
+	func_append generated " $gentop"
+
+	func_extract_archives $gentop $addlibs
+	func_append oldobjs " $func_extract_archives_result"
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+	cmds=$old_archive_from_new_cmds
+      else
+
+	# Add any objects from preloaded convenience libraries
+	if test -n "$dlprefiles"; then
+	  gentop="$output_objdir/${outputname}x"
+	  func_append generated " $gentop"
+
+	  func_extract_archives $gentop $dlprefiles
+	  func_append oldobjs " $func_extract_archives_result"
+	fi
+
+	# POSIX demands no paths to be encoded in archives.  We have
+	# to avoid creating archives with duplicate basenames if we
+	# might have to extract them afterwards, e.g., when creating a
+	# static archive out of a convenience library, or when linking
+	# the entirety of a libtool archive into another (currently
+	# not supported by libtool).
+	if (for obj in $oldobjs
+	    do
+	      func_basename "$obj"
+	      $ECHO "$func_basename_result"
+	    done | sort | sort -uc >/dev/null 2>&1); then
+	  :
+	else
+	  echo "copying selected object files to avoid basename conflicts..."
+	  gentop="$output_objdir/${outputname}x"
+	  func_append generated " $gentop"
+	  func_mkdir_p "$gentop"
+	  save_oldobjs=$oldobjs
+	  oldobjs=
+	  counter=1
+	  for obj in $save_oldobjs
+	  do
+	    func_basename "$obj"
+	    objbase="$func_basename_result"
+	    case " $oldobjs " in
+	    " ") oldobjs=$obj ;;
+	    *[\ /]"$objbase "*)
+	      while :; do
+		# Make sure we don't pick an alternate name that also
+		# overlaps.
+		newobj=lt$counter-$objbase
+		func_arith $counter + 1
+		counter=$func_arith_result
+		case " $oldobjs " in
+		*[\ /]"$newobj "*) ;;
+		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
+		esac
+	      done
+	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+	      func_append oldobjs " $gentop/$newobj"
+	      ;;
+	    *) func_append oldobjs " $obj" ;;
+	    esac
+	  done
+	fi
+	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+	tool_oldlib=$func_to_tool_file_result
+	eval cmds=\"$old_archive_cmds\"
+
+	func_len " $cmds"
+	len=$func_len_result
+	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  cmds=$old_archive_cmds
+	elif test -n "$archiver_list_spec"; then
+	  func_verbose "using command file archive linking..."
+	  for obj in $oldobjs
+	  do
+	    func_to_tool_file "$obj"
+	    $ECHO "$func_to_tool_file_result"
+	  done > $output_objdir/$libname.libcmd
+	  func_to_tool_file "$output_objdir/$libname.libcmd"
+	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
+	  cmds=$old_archive_cmds
+	else
+	  # the command line is too long to link in one step, link in parts
+	  func_verbose "using piecewise archive linking..."
+	  save_RANLIB=$RANLIB
+	  RANLIB=:
+	  objlist=
+	  concat_cmds=
+	  save_oldobjs=$oldobjs
+	  oldobjs=
+	  # Is there a better way of finding the last object in the list?
+	  for obj in $save_oldobjs
+	  do
+	    last_oldobj=$obj
+	  done
+	  eval test_cmds=\"$old_archive_cmds\"
+	  func_len " $test_cmds"
+	  len0=$func_len_result
+	  len=$len0
+	  for obj in $save_oldobjs
+	  do
+	    func_len " $obj"
+	    func_arith $len + $func_len_result
+	    len=$func_arith_result
+	    func_append objlist " $obj"
+	    if test "$len" -lt "$max_cmd_len"; then
+	      :
+	    else
+	      # the above command should be used before it gets too long
+	      oldobjs=$objlist
+	      if test "$obj" = "$last_oldobj" ; then
+		RANLIB=$save_RANLIB
+	      fi
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+	      objlist=
+	      len=$len0
+	    fi
+	  done
+	  RANLIB=$save_RANLIB
+	  oldobjs=$objlist
+	  if test "X$oldobjs" = "X" ; then
+	    eval cmds=\"\$concat_cmds\"
+	  else
+	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+	  fi
+	fi
+      fi
+      func_execute_cmds "$cmds" 'exit $?'
+    done
+
+    test -n "$generated" && \
+      func_show_eval "${RM}r$generated"
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      func_verbose "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+	if eval test -z \"\${$var+set}\"; then
+	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+	elif eval var_value=\$$var; test -z "$var_value"; then
+	  relink_command="$var=; export $var; $relink_command"
+	else
+	  func_quote_for_eval "$var_value"
+	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+	fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+      if test "$hardcode_automatic" = yes ; then
+	relink_command=
+      fi
+
+      # Only create the output if not a dry run.
+      $opt_dry_run || {
+	for installed in no yes; do
+	  if test "$installed" = yes; then
+	    if test -z "$install_libdir"; then
+	      break
+	    fi
+	    output="$output_objdir/$outputname"i
+	    # Replace all uninstalled libtool libraries with the installed ones
+	    newdependency_libs=
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      *.la)
+		func_basename "$deplib"
+		name="$func_basename_result"
+		func_resolve_sysroot "$deplib"
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+		test -z "$libdir" && \
+		  func_fatal_error "\`$deplib' is not a valid libtool archive"
+		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
+		;;
+	      -L*)
+		func_stripname -L '' "$deplib"
+		func_replace_sysroot "$func_stripname_result"
+		func_append newdependency_libs " -L$func_replace_sysroot_result"
+		;;
+	      -R*)
+		func_stripname -R '' "$deplib"
+		func_replace_sysroot "$func_stripname_result"
+		func_append newdependency_libs " -R$func_replace_sysroot_result"
+		;;
+	      *) func_append newdependency_libs " $deplib" ;;
+	      esac
+	    done
+	    dependency_libs="$newdependency_libs"
+	    newdlfiles=
+
+	    for lib in $dlfiles; do
+	      case $lib in
+	      *.la)
+	        func_basename "$lib"
+		name="$func_basename_result"
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+		test -z "$libdir" && \
+		  func_fatal_error "\`$lib' is not a valid libtool archive"
+		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
+		;;
+	      *) func_append newdlfiles " $lib" ;;
+	      esac
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      case $lib in
+	      *.la)
+		# Only pass preopened files to the pseudo-archive (for
+		# eventual linking with the app. that links it) if we
+		# didn't already link the preopened objects directly into
+		# the library:
+		func_basename "$lib"
+		name="$func_basename_result"
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+		test -z "$libdir" && \
+		  func_fatal_error "\`$lib' is not a valid libtool archive"
+		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
+		;;
+	      esac
+	    done
+	    dlprefiles="$newdlprefiles"
+	  else
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      func_append newdlfiles " $abs"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      func_append newdlprefiles " $abs"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  fi
+	  $RM $output
+	  # place dlname in correct position for cygwin
+	  # In fact, it would be nice if we could use this code for all target
+	  # systems that can't hard-code library paths into their executables
+	  # and that have no shared library path variable independent of PATH,
+	  # but it turns out we can't easily determine that from inspecting
+	  # libtool variables, so we have to hard-code the OSs to which it
+	  # applies here; at the moment, that means platforms that use the PE
+	  # object format with DLL files.  See the long comment at the top of
+	  # tests/bindir.at for full details.
+	  tdlname=$dlname
+	  case $host,$output,$installed,$module,$dlname in
+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
+	      # If a -bindir argument was supplied, place the dll there.
+	      if test "x$bindir" != x ;
+	      then
+		func_relative_path "$install_libdir" "$bindir"
+		tdlname=$func_relative_path_result$dlname
+	      else
+		# Otherwise fall back on heuristic.
+		tdlname=../bin/$dlname
+	      fi
+	      ;;
+	  esac
+	  $ECHO > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags='$new_inherited_linker_flags'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Names of additional weak libraries provided by this library
+weak_library_names='$weak_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+	  if test "$installed" = no && test "$need_relink" = yes; then
+	    $ECHO >> $output "\
+relink_command=\"$relink_command\""
+	  fi
+	done
+      }
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
+      ;;
+    esac
+    exit $EXIT_SUCCESS
+}
+
+{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
+    func_mode_link ${1+"$@"}
+
+
+# func_mode_uninstall arg...
+func_mode_uninstall ()
+{
+    $opt_debug
+    RM="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) func_append RM " $arg"; rmforce=yes ;;
+      -*) func_append RM " $arg" ;;
+      *) func_append files " $arg" ;;
+      esac
+    done
+
+    test -z "$RM" && \
+      func_fatal_help "you must specify an RM program"
+
+    rmdirs=
+
+    for file in $files; do
+      func_dirname "$file" "" "."
+      dir="$func_dirname_result"
+      if test "X$dir" = X.; then
+	odir="$objdir"
+      else
+	odir="$dir/$objdir"
+      fi
+      func_basename "$file"
+      name="$func_basename_result"
+      test "$opt_mode" = uninstall && odir="$dir"
+
+      # Remember odir for removal later, being careful to avoid duplicates
+      if test "$opt_mode" = clean; then
+	case " $rmdirs " in
+	  *" $odir "*) ;;
+	  *) func_append rmdirs " $odir" ;;
+	esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if { test -L "$file"; } >/dev/null 2>&1 ||
+	 { test -h "$file"; } >/dev/null 2>&1 ||
+	 test -f "$file"; then
+	:
+      elif test -d "$file"; then
+	exit_status=1
+	continue
+      elif test "$rmforce" = yes; then
+	continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+	# Possibly a libtool archive, so verify it.
+	if func_lalib_p "$file"; then
+	  func_source $dir/$name
+
+	  # Delete the libtool libraries and symlinks.
+	  for n in $library_names; do
+	    func_append rmfiles " $odir/$n"
+	  done
+	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
+
+	  case "$opt_mode" in
+	  clean)
+	    case " $library_names " in
+	    *" $dlname "*) ;;
+	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
+	    esac
+	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
+	    ;;
+	  uninstall)
+	    if test -n "$library_names"; then
+	      # Do each command in the postuninstall commands.
+	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+	    fi
+
+	    if test -n "$old_library"; then
+	      # Do each command in the old_postuninstall commands.
+	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+	    fi
+	    # FIXME: should reinstall the best remaining shared library.
+	    ;;
+	  esac
+	fi
+	;;
+
+      *.lo)
+	# Possibly a libtool object, so verify it.
+	if func_lalib_p "$file"; then
+
+	  # Read the .lo file
+	  func_source $dir/$name
+
+	  # Add PIC object to the list of files to remove.
+	  if test -n "$pic_object" &&
+	     test "$pic_object" != none; then
+	    func_append rmfiles " $dir/$pic_object"
+	  fi
+
+	  # Add non-PIC object to the list of files to remove.
+	  if test -n "$non_pic_object" &&
+	     test "$non_pic_object" != none; then
+	    func_append rmfiles " $dir/$non_pic_object"
+	  fi
+	fi
+	;;
+
+      *)
+	if test "$opt_mode" = clean ; then
+	  noexename=$name
+	  case $file in
+	  *.exe)
+	    func_stripname '' '.exe' "$file"
+	    file=$func_stripname_result
+	    func_stripname '' '.exe' "$name"
+	    noexename=$func_stripname_result
+	    # $file with .exe has already been added to rmfiles,
+	    # add $file without .exe
+	    func_append rmfiles " $file"
+	    ;;
+	  esac
+	  # Do a test to see if this is a libtool program.
+	  if func_ltwrapper_p "$file"; then
+	    if func_ltwrapper_executable_p "$file"; then
+	      func_ltwrapper_scriptname "$file"
+	      relink_command=
+	      func_source $func_ltwrapper_scriptname_result
+	      func_append rmfiles " $func_ltwrapper_scriptname_result"
+	    else
+	      relink_command=
+	      func_source $dir/$noexename
+	    fi
+
+	    # note $name still contains .exe if it was in $file originally
+	    # as does the version of $file that was added into $rmfiles
+	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
+	    if test "$fast_install" = yes && test -n "$relink_command"; then
+	      func_append rmfiles " $odir/lt-$name"
+	    fi
+	    if test "X$noexename" != "X$name" ; then
+	      func_append rmfiles " $odir/lt-${noexename}.c"
+	    fi
+	  fi
+	fi
+	;;
+      esac
+      func_show_eval "$RM $rmfiles" 'exit_status=1'
+    done
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+	func_show_eval "rmdir $dir >/dev/null 2>&1"
+      fi
+    done
+
+    exit $exit_status
+}
+
+{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
+    func_mode_uninstall ${1+"$@"}
+
+test -z "$opt_mode" && {
+  help="$generic_help"
+  func_fatal_help "you must specify a MODE"
+}
+
+test -z "$exec_cmd" && \
+  func_fatal_help "invalid operation mode \`$opt_mode'"
+
+if test -n "$exec_cmd"; then
+  eval exec "$exec_cmd"
+  exit $EXIT_FAILURE
+fi
+
+exit $exit_status
+
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries.  Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them.  This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration.  But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
+# vi:sw=2
+
Index: /issm/branches/trunk-dlcheng-ASE/m4/analyses.m4
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/m4/analyses.m4	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/m4/analyses.m4	(revision 27955)
@@ -0,0 +1,629 @@
+
+dnl   WARNING: DO NOT MODIFY THIS FILE
+dnl            this file has been automatically generated by Synchronize.sh
+dnl            Please read README for more information
+
+# AX_ANALYSES_SELECTION
+# -----------------
+# Check for analyses compilation
+AC_DEFUN([AX_ANALYSES_SELECTION],
+[
+
+dnl with-HydrologyTws{{{
+AC_ARG_WITH([HydrologyTws],
+	AS_HELP_STRING([--with-HydrologyTws = YES], [compile with HydrologyTws capabilities (default is yes)]),
+	[HYDROLOGYTWS=$withval],[HYDROLOGYTWS=yes])
+AC_MSG_CHECKING(for HydrologyTws capability compilation)
+
+HAVE_HYDROLOGYTWS=no 
+if test "x$HYDROLOGYTWS" = "xyes"; then
+	HAVE_HYDROLOGYTWS=yes
+	AC_DEFINE([_HAVE_HYDROLOGYTWS_],[1],[with HydrologyTws capability])
+fi
+AM_CONDITIONAL([HYDROLOGYTWS], [test x$HAVE_HYDROLOGYTWS = xyes])
+AC_MSG_RESULT($HAVE_HYDROLOGYTWS)
+dnl }}}
+dnl with-AdjointBalancethickness2{{{
+AC_ARG_WITH([AdjointBalancethickness2],
+	AS_HELP_STRING([--with-AdjointBalancethickness2 = YES], [compile with AdjointBalancethickness2 capabilities (default is yes)]),
+	[ADJOINTBALANCETHICKNESS2=$withval],[ADJOINTBALANCETHICKNESS2=yes])
+AC_MSG_CHECKING(for AdjointBalancethickness2 capability compilation)
+
+HAVE_ADJOINTBALANCETHICKNESS2=no 
+if test "x$ADJOINTBALANCETHICKNESS2" = "xyes"; then
+	HAVE_ADJOINTBALANCETHICKNESS2=yes
+	AC_DEFINE([_HAVE_ADJOINTBALANCETHICKNESS2_],[1],[with AdjointBalancethickness2 capability])
+fi
+AM_CONDITIONAL([ADJOINTBALANCETHICKNESS2], [test x$HAVE_ADJOINTBALANCETHICKNESS2 = xyes])
+AC_MSG_RESULT($HAVE_ADJOINTBALANCETHICKNESS2)
+dnl }}}
+dnl with-AdjointBalancethickness{{{
+AC_ARG_WITH([AdjointBalancethickness],
+	AS_HELP_STRING([--with-AdjointBalancethickness = YES], [compile with AdjointBalancethickness capabilities (default is yes)]),
+	[ADJOINTBALANCETHICKNESS=$withval],[ADJOINTBALANCETHICKNESS=yes])
+AC_MSG_CHECKING(for AdjointBalancethickness capability compilation)
+
+HAVE_ADJOINTBALANCETHICKNESS=no 
+if test "x$ADJOINTBALANCETHICKNESS" = "xyes"; then
+	HAVE_ADJOINTBALANCETHICKNESS=yes
+	AC_DEFINE([_HAVE_ADJOINTBALANCETHICKNESS_],[1],[with AdjointBalancethickness capability])
+fi
+AM_CONDITIONAL([ADJOINTBALANCETHICKNESS], [test x$HAVE_ADJOINTBALANCETHICKNESS = xyes])
+AC_MSG_RESULT($HAVE_ADJOINTBALANCETHICKNESS)
+dnl }}}
+dnl with-AdjointHoriz{{{
+AC_ARG_WITH([AdjointHoriz],
+	AS_HELP_STRING([--with-AdjointHoriz = YES], [compile with AdjointHoriz capabilities (default is yes)]),
+	[ADJOINTHORIZ=$withval],[ADJOINTHORIZ=yes])
+AC_MSG_CHECKING(for AdjointHoriz capability compilation)
+
+HAVE_ADJOINTHORIZ=no 
+if test "x$ADJOINTHORIZ" = "xyes"; then
+	HAVE_ADJOINTHORIZ=yes
+	AC_DEFINE([_HAVE_ADJOINTHORIZ_],[1],[with AdjointHoriz capability])
+fi
+AM_CONDITIONAL([ADJOINTHORIZ], [test x$HAVE_ADJOINTHORIZ = xyes])
+AC_MSG_RESULT($HAVE_ADJOINTHORIZ)
+dnl }}}
+dnl with-Age{{{
+AC_ARG_WITH([Age],
+	AS_HELP_STRING([--with-Age = YES], [compile with Age capabilities (default is yes)]),
+	[AGE=$withval],[AGE=yes])
+AC_MSG_CHECKING(for Age capability compilation)
+
+HAVE_AGE=no 
+if test "x$AGE" = "xyes"; then
+	HAVE_AGE=yes
+	AC_DEFINE([_HAVE_AGE_],[1],[with Age capability])
+fi
+AM_CONDITIONAL([AGE], [test x$HAVE_AGE = xyes])
+AC_MSG_RESULT($HAVE_AGE)
+dnl }}}
+dnl with-Balancethickness2{{{
+AC_ARG_WITH([Balancethickness2],
+	AS_HELP_STRING([--with-Balancethickness2 = YES], [compile with Balancethickness2 capabilities (default is yes)]),
+	[BALANCETHICKNESS2=$withval],[BALANCETHICKNESS2=yes])
+AC_MSG_CHECKING(for Balancethickness2 capability compilation)
+
+HAVE_BALANCETHICKNESS2=no 
+if test "x$BALANCETHICKNESS2" = "xyes"; then
+	HAVE_BALANCETHICKNESS2=yes
+	AC_DEFINE([_HAVE_BALANCETHICKNESS2_],[1],[with Balancethickness2 capability])
+fi
+AM_CONDITIONAL([BALANCETHICKNESS2], [test x$HAVE_BALANCETHICKNESS2 = xyes])
+AC_MSG_RESULT($HAVE_BALANCETHICKNESS2)
+dnl }}}
+dnl with-Balancethickness{{{
+AC_ARG_WITH([Balancethickness],
+	AS_HELP_STRING([--with-Balancethickness = YES], [compile with Balancethickness capabilities (default is yes)]),
+	[BALANCETHICKNESS=$withval],[BALANCETHICKNESS=yes])
+AC_MSG_CHECKING(for Balancethickness capability compilation)
+
+HAVE_BALANCETHICKNESS=no 
+if test "x$BALANCETHICKNESS" = "xyes"; then
+	HAVE_BALANCETHICKNESS=yes
+	AC_DEFINE([_HAVE_BALANCETHICKNESS_],[1],[with Balancethickness capability])
+fi
+AM_CONDITIONAL([BALANCETHICKNESS], [test x$HAVE_BALANCETHICKNESS = xyes])
+AC_MSG_RESULT($HAVE_BALANCETHICKNESS)
+dnl }}}
+dnl with-BalancethicknessSoft{{{
+AC_ARG_WITH([BalancethicknessSoft],
+	AS_HELP_STRING([--with-BalancethicknessSoft = YES], [compile with BalancethicknessSoft capabilities (default is yes)]),
+	[BALANCETHICKNESSSOFT=$withval],[BALANCETHICKNESSSOFT=yes])
+AC_MSG_CHECKING(for BalancethicknessSoft capability compilation)
+
+HAVE_BALANCETHICKNESSSOFT=no 
+if test "x$BALANCETHICKNESSSOFT" = "xyes"; then
+	HAVE_BALANCETHICKNESSSOFT=yes
+	AC_DEFINE([_HAVE_BALANCETHICKNESSSOFT_],[1],[with BalancethicknessSoft capability])
+fi
+AM_CONDITIONAL([BALANCETHICKNESSSOFT], [test x$HAVE_BALANCETHICKNESSSOFT = xyes])
+AC_MSG_RESULT($HAVE_BALANCETHICKNESSSOFT)
+dnl }}}
+dnl with-Balancevelocity{{{
+AC_ARG_WITH([Balancevelocity],
+	AS_HELP_STRING([--with-Balancevelocity = YES], [compile with Balancevelocity capabilities (default is yes)]),
+	[BALANCEVELOCITY=$withval],[BALANCEVELOCITY=yes])
+AC_MSG_CHECKING(for Balancevelocity capability compilation)
+
+HAVE_BALANCEVELOCITY=no 
+if test "x$BALANCEVELOCITY" = "xyes"; then
+	HAVE_BALANCEVELOCITY=yes
+	AC_DEFINE([_HAVE_BALANCEVELOCITY_],[1],[with Balancevelocity capability])
+fi
+AM_CONDITIONAL([BALANCEVELOCITY], [test x$HAVE_BALANCEVELOCITY = xyes])
+AC_MSG_RESULT($HAVE_BALANCEVELOCITY)
+dnl }}}
+dnl with-DamageEvolution{{{
+AC_ARG_WITH([DamageEvolution],
+	AS_HELP_STRING([--with-DamageEvolution = YES], [compile with DamageEvolution capabilities (default is yes)]),
+	[DAMAGEEVOLUTION=$withval],[DAMAGEEVOLUTION=yes])
+AC_MSG_CHECKING(for DamageEvolution capability compilation)
+
+HAVE_DAMAGEEVOLUTION=no 
+if test "x$DAMAGEEVOLUTION" = "xyes"; then
+	HAVE_DAMAGEEVOLUTION=yes
+	AC_DEFINE([_HAVE_DAMAGEEVOLUTION_],[1],[with DamageEvolution capability])
+fi
+AM_CONDITIONAL([DAMAGEEVOLUTION], [test x$HAVE_DAMAGEEVOLUTION = xyes])
+AC_MSG_RESULT($HAVE_DAMAGEEVOLUTION)
+dnl }}}
+dnl with-Debris{{{
+AC_ARG_WITH([Debris],
+	AS_HELP_STRING([--with-Debris = YES], [compile with Debris capabilities (default is yes)]),
+	[DEBRIS=$withval],[DEBRIS=yes])
+AC_MSG_CHECKING(for Debris capability compilation)
+
+HAVE_DEBRIS=no 
+if test "x$DEBRIS" = "xyes"; then
+	HAVE_DEBRIS=yes
+	AC_DEFINE([_HAVE_DEBRIS_],[1],[with Debris capability])
+fi
+AM_CONDITIONAL([DEBRIS], [test x$HAVE_DEBRIS = xyes])
+AC_MSG_RESULT($HAVE_DEBRIS)
+dnl }}}
+dnl with-DepthAverage{{{
+AC_ARG_WITH([DepthAverage],
+	AS_HELP_STRING([--with-DepthAverage = YES], [compile with DepthAverage capabilities (default is yes)]),
+	[DEPTHAVERAGE=$withval],[DEPTHAVERAGE=yes])
+AC_MSG_CHECKING(for DepthAverage capability compilation)
+
+HAVE_DEPTHAVERAGE=no 
+if test "x$DEPTHAVERAGE" = "xyes"; then
+	HAVE_DEPTHAVERAGE=yes
+	AC_DEFINE([_HAVE_DEPTHAVERAGE_],[1],[with DepthAverage capability])
+fi
+AM_CONDITIONAL([DEPTHAVERAGE], [test x$HAVE_DEPTHAVERAGE = xyes])
+AC_MSG_RESULT($HAVE_DEPTHAVERAGE)
+dnl }}}
+dnl with-Enthalpy{{{
+AC_ARG_WITH([Enthalpy],
+	AS_HELP_STRING([--with-Enthalpy = YES], [compile with Enthalpy capabilities (default is yes)]),
+	[ENTHALPY=$withval],[ENTHALPY=yes])
+AC_MSG_CHECKING(for Enthalpy capability compilation)
+
+HAVE_ENTHALPY=no 
+if test "x$ENTHALPY" = "xyes"; then
+	HAVE_ENTHALPY=yes
+	AC_DEFINE([_HAVE_ENTHALPY_],[1],[with Enthalpy capability])
+fi
+AM_CONDITIONAL([ENTHALPY], [test x$HAVE_ENTHALPY = xyes])
+AC_MSG_RESULT($HAVE_ENTHALPY)
+dnl }}}
+dnl with-Esa{{{
+AC_ARG_WITH([Esa],
+	AS_HELP_STRING([--with-Esa = YES], [compile with Esa capabilities (default is yes)]),
+	[ESA=$withval],[ESA=yes])
+AC_MSG_CHECKING(for Esa capability compilation)
+
+HAVE_ESA=no 
+if test "x$ESA" = "xyes"; then
+	HAVE_ESA=yes
+	AC_DEFINE([_HAVE_ESA_],[1],[with Esa capability])
+fi
+AM_CONDITIONAL([ESA], [test x$HAVE_ESA = xyes])
+AC_MSG_RESULT($HAVE_ESA)
+dnl }}}
+dnl with-Extrapolation{{{
+AC_ARG_WITH([Extrapolation],
+	AS_HELP_STRING([--with-Extrapolation = YES], [compile with Extrapolation capabilities (default is yes)]),
+	[EXTRAPOLATION=$withval],[EXTRAPOLATION=yes])
+AC_MSG_CHECKING(for Extrapolation capability compilation)
+
+HAVE_EXTRAPOLATION=no 
+if test "x$EXTRAPOLATION" = "xyes"; then
+	HAVE_EXTRAPOLATION=yes
+	AC_DEFINE([_HAVE_EXTRAPOLATION_],[1],[with Extrapolation capability])
+fi
+AM_CONDITIONAL([EXTRAPOLATION], [test x$HAVE_EXTRAPOLATION = xyes])
+AC_MSG_RESULT($HAVE_EXTRAPOLATION)
+dnl }}}
+dnl with-ExtrudeFromBase{{{
+AC_ARG_WITH([ExtrudeFromBase],
+	AS_HELP_STRING([--with-ExtrudeFromBase = YES], [compile with ExtrudeFromBase capabilities (default is yes)]),
+	[EXTRUDEFROMBASE=$withval],[EXTRUDEFROMBASE=yes])
+AC_MSG_CHECKING(for ExtrudeFromBase capability compilation)
+
+HAVE_EXTRUDEFROMBASE=no 
+if test "x$EXTRUDEFROMBASE" = "xyes"; then
+	HAVE_EXTRUDEFROMBASE=yes
+	AC_DEFINE([_HAVE_EXTRUDEFROMBASE_],[1],[with ExtrudeFromBase capability])
+fi
+AM_CONDITIONAL([EXTRUDEFROMBASE], [test x$HAVE_EXTRUDEFROMBASE = xyes])
+AC_MSG_RESULT($HAVE_EXTRUDEFROMBASE)
+dnl }}}
+dnl with-ExtrudeFromTop{{{
+AC_ARG_WITH([ExtrudeFromTop],
+	AS_HELP_STRING([--with-ExtrudeFromTop = YES], [compile with ExtrudeFromTop capabilities (default is yes)]),
+	[EXTRUDEFROMTOP=$withval],[EXTRUDEFROMTOP=yes])
+AC_MSG_CHECKING(for ExtrudeFromTop capability compilation)
+
+HAVE_EXTRUDEFROMTOP=no 
+if test "x$EXTRUDEFROMTOP" = "xyes"; then
+	HAVE_EXTRUDEFROMTOP=yes
+	AC_DEFINE([_HAVE_EXTRUDEFROMTOP_],[1],[with ExtrudeFromTop capability])
+fi
+AM_CONDITIONAL([EXTRUDEFROMTOP], [test x$HAVE_EXTRUDEFROMTOP = xyes])
+AC_MSG_RESULT($HAVE_EXTRUDEFROMTOP)
+dnl }}}
+dnl with-FreeSurfaceBase{{{
+AC_ARG_WITH([FreeSurfaceBase],
+	AS_HELP_STRING([--with-FreeSurfaceBase = YES], [compile with FreeSurfaceBase capabilities (default is yes)]),
+	[FREESURFACEBASE=$withval],[FREESURFACEBASE=yes])
+AC_MSG_CHECKING(for FreeSurfaceBase capability compilation)
+
+HAVE_FREESURFACEBASE=no 
+if test "x$FREESURFACEBASE" = "xyes"; then
+	HAVE_FREESURFACEBASE=yes
+	AC_DEFINE([_HAVE_FREESURFACEBASE_],[1],[with FreeSurfaceBase capability])
+fi
+AM_CONDITIONAL([FREESURFACEBASE], [test x$HAVE_FREESURFACEBASE = xyes])
+AC_MSG_RESULT($HAVE_FREESURFACEBASE)
+dnl }}}
+dnl with-FreeSurfaceTop{{{
+AC_ARG_WITH([FreeSurfaceTop],
+	AS_HELP_STRING([--with-FreeSurfaceTop = YES], [compile with FreeSurfaceTop capabilities (default is yes)]),
+	[FREESURFACETOP=$withval],[FREESURFACETOP=yes])
+AC_MSG_CHECKING(for FreeSurfaceTop capability compilation)
+
+HAVE_FREESURFACETOP=no 
+if test "x$FREESURFACETOP" = "xyes"; then
+	HAVE_FREESURFACETOP=yes
+	AC_DEFINE([_HAVE_FREESURFACETOP_],[1],[with FreeSurfaceTop capability])
+fi
+AM_CONDITIONAL([FREESURFACETOP], [test x$HAVE_FREESURFACETOP = xyes])
+AC_MSG_RESULT($HAVE_FREESURFACETOP)
+dnl }}}
+dnl with-GLheightadvection{{{
+AC_ARG_WITH([GLheightadvection],
+	AS_HELP_STRING([--with-GLheightadvection = YES], [compile with GLheightadvection capabilities (default is yes)]),
+	[GLHEIGHTADVECTION=$withval],[GLHEIGHTADVECTION=yes])
+AC_MSG_CHECKING(for GLheightadvection capability compilation)
+
+HAVE_GLHEIGHTADVECTION=no 
+if test "x$GLHEIGHTADVECTION" = "xyes"; then
+	HAVE_GLHEIGHTADVECTION=yes
+	AC_DEFINE([_HAVE_GLHEIGHTADVECTION_],[1],[with GLheightadvection capability])
+fi
+AM_CONDITIONAL([GLHEIGHTADVECTION], [test x$HAVE_GLHEIGHTADVECTION = xyes])
+AC_MSG_RESULT($HAVE_GLHEIGHTADVECTION)
+dnl }}}
+dnl with-HydrologyDCEfficient{{{
+AC_ARG_WITH([HydrologyDCEfficient],
+	AS_HELP_STRING([--with-HydrologyDCEfficient = YES], [compile with HydrologyDCEfficient capabilities (default is yes)]),
+	[HYDROLOGYDCEFFICIENT=$withval],[HYDROLOGYDCEFFICIENT=yes])
+AC_MSG_CHECKING(for HydrologyDCEfficient capability compilation)
+
+HAVE_HYDROLOGYDCEFFICIENT=no 
+if test "x$HYDROLOGYDCEFFICIENT" = "xyes"; then
+	HAVE_HYDROLOGYDCEFFICIENT=yes
+	AC_DEFINE([_HAVE_HYDROLOGYDCEFFICIENT_],[1],[with HydrologyDCEfficient capability])
+fi
+AM_CONDITIONAL([HYDROLOGYDCEFFICIENT], [test x$HAVE_HYDROLOGYDCEFFICIENT = xyes])
+AC_MSG_RESULT($HAVE_HYDROLOGYDCEFFICIENT)
+dnl }}}
+dnl with-HydrologyDCInefficient{{{
+AC_ARG_WITH([HydrologyDCInefficient],
+	AS_HELP_STRING([--with-HydrologyDCInefficient = YES], [compile with HydrologyDCInefficient capabilities (default is yes)]),
+	[HYDROLOGYDCINEFFICIENT=$withval],[HYDROLOGYDCINEFFICIENT=yes])
+AC_MSG_CHECKING(for HydrologyDCInefficient capability compilation)
+
+HAVE_HYDROLOGYDCINEFFICIENT=no 
+if test "x$HYDROLOGYDCINEFFICIENT" = "xyes"; then
+	HAVE_HYDROLOGYDCINEFFICIENT=yes
+	AC_DEFINE([_HAVE_HYDROLOGYDCINEFFICIENT_],[1],[with HydrologyDCInefficient capability])
+fi
+AM_CONDITIONAL([HYDROLOGYDCINEFFICIENT], [test x$HAVE_HYDROLOGYDCINEFFICIENT = xyes])
+AC_MSG_RESULT($HAVE_HYDROLOGYDCINEFFICIENT)
+dnl }}}
+dnl with-HydrologyGlaDS{{{
+AC_ARG_WITH([HydrologyGlaDS],
+	AS_HELP_STRING([--with-HydrologyGlaDS = YES], [compile with HydrologyGlaDS capabilities (default is yes)]),
+	[HYDROLOGYGLADS=$withval],[HYDROLOGYGLADS=yes])
+AC_MSG_CHECKING(for HydrologyGlaDS capability compilation)
+
+HAVE_HYDROLOGYGLADS=no 
+if test "x$HYDROLOGYGLADS" = "xyes"; then
+	HAVE_HYDROLOGYGLADS=yes
+	AC_DEFINE([_HAVE_HYDROLOGYGLADS_],[1],[with HydrologyGlaDS capability])
+fi
+AM_CONDITIONAL([HYDROLOGYGLADS], [test x$HAVE_HYDROLOGYGLADS = xyes])
+AC_MSG_RESULT($HAVE_HYDROLOGYGLADS)
+dnl }}}
+dnl with-HydrologyPism{{{
+AC_ARG_WITH([HydrologyPism],
+	AS_HELP_STRING([--with-HydrologyPism = YES], [compile with HydrologyPism capabilities (default is yes)]),
+	[HYDROLOGYPISM=$withval],[HYDROLOGYPISM=yes])
+AC_MSG_CHECKING(for HydrologyPism capability compilation)
+
+HAVE_HYDROLOGYPISM=no 
+if test "x$HYDROLOGYPISM" = "xyes"; then
+	HAVE_HYDROLOGYPISM=yes
+	AC_DEFINE([_HAVE_HYDROLOGYPISM_],[1],[with HydrologyPism capability])
+fi
+AM_CONDITIONAL([HYDROLOGYPISM], [test x$HAVE_HYDROLOGYPISM = xyes])
+AC_MSG_RESULT($HAVE_HYDROLOGYPISM)
+dnl }}}
+dnl with-HydrologyShakti{{{
+AC_ARG_WITH([HydrologyShakti],
+	AS_HELP_STRING([--with-HydrologyShakti = YES], [compile with HydrologyShakti capabilities (default is yes)]),
+	[HYDROLOGYSHAKTI=$withval],[HYDROLOGYSHAKTI=yes])
+AC_MSG_CHECKING(for HydrologyShakti capability compilation)
+
+HAVE_HYDROLOGYSHAKTI=no 
+if test "x$HYDROLOGYSHAKTI" = "xyes"; then
+	HAVE_HYDROLOGYSHAKTI=yes
+	AC_DEFINE([_HAVE_HYDROLOGYSHAKTI_],[1],[with HydrologyShakti capability])
+fi
+AM_CONDITIONAL([HYDROLOGYSHAKTI], [test x$HAVE_HYDROLOGYSHAKTI = xyes])
+AC_MSG_RESULT($HAVE_HYDROLOGYSHAKTI)
+dnl }}}
+dnl with-HydrologyShreve{{{
+AC_ARG_WITH([HydrologyShreve],
+	AS_HELP_STRING([--with-HydrologyShreve = YES], [compile with HydrologyShreve capabilities (default is yes)]),
+	[HYDROLOGYSHREVE=$withval],[HYDROLOGYSHREVE=yes])
+AC_MSG_CHECKING(for HydrologyShreve capability compilation)
+
+HAVE_HYDROLOGYSHREVE=no 
+if test "x$HYDROLOGYSHREVE" = "xyes"; then
+	HAVE_HYDROLOGYSHREVE=yes
+	AC_DEFINE([_HAVE_HYDROLOGYSHREVE_],[1],[with HydrologyShreve capability])
+fi
+AM_CONDITIONAL([HYDROLOGYSHREVE], [test x$HAVE_HYDROLOGYSHREVE = xyes])
+AC_MSG_RESULT($HAVE_HYDROLOGYSHREVE)
+dnl }}}
+dnl with-HydrologyArmapw{{{
+AC_ARG_WITH([HydrologyArmapw],
+	AS_HELP_STRING([--with-HydrologyArmapw = YES], [compile with HydrologyArmapw capabilities (default is yes)]),
+	[HYDROLOGYARMAPW=$withval],[HYDROLOGYARMAPW=yes])
+AC_MSG_CHECKING(for HydrologyArmapw capability compilation)
+
+HAVE_HYDROLOGYARMAPW=no 
+if test "x$HYDROLOGYARMAPW" = "xyes"; then
+	HAVE_HYDROLOGYARMAPW=yes
+	AC_DEFINE([_HAVE_HYDROLOGYARMAPW_],[1],[with HydrologyArmapw capability])
+fi
+AM_CONDITIONAL([HYDROLOGYARMAPW], [test x$HAVE_HYDROLOGYARMAPW = xyes])
+AC_MSG_RESULT($HAVE_HYDROLOGYARMAPW)
+dnl }}}
+dnl with-L2ProjectionBase{{{
+AC_ARG_WITH([L2ProjectionBase],
+	AS_HELP_STRING([--with-L2ProjectionBase = YES], [compile with L2ProjectionBase capabilities (default is yes)]),
+	[L2PROJECTIONBASE=$withval],[L2PROJECTIONBASE=yes])
+AC_MSG_CHECKING(for L2ProjectionBase capability compilation)
+
+HAVE_L2PROJECTIONBASE=no 
+if test "x$L2PROJECTIONBASE" = "xyes"; then
+	HAVE_L2PROJECTIONBASE=yes
+	AC_DEFINE([_HAVE_L2PROJECTIONBASE_],[1],[with L2ProjectionBase capability])
+fi
+AM_CONDITIONAL([L2PROJECTIONBASE], [test x$HAVE_L2PROJECTIONBASE = xyes])
+AC_MSG_RESULT($HAVE_L2PROJECTIONBASE)
+dnl }}}
+dnl with-L2ProjectionEPL{{{
+AC_ARG_WITH([L2ProjectionEPL],
+	AS_HELP_STRING([--with-L2ProjectionEPL = YES], [compile with L2ProjectionEPL capabilities (default is yes)]),
+	[L2PROJECTIONEPL=$withval],[L2PROJECTIONEPL=yes])
+AC_MSG_CHECKING(for L2ProjectionEPL capability compilation)
+
+HAVE_L2PROJECTIONEPL=no 
+if test "x$L2PROJECTIONEPL" = "xyes"; then
+	HAVE_L2PROJECTIONEPL=yes
+	AC_DEFINE([_HAVE_L2PROJECTIONEPL_],[1],[with L2ProjectionEPL capability])
+fi
+AM_CONDITIONAL([L2PROJECTIONEPL], [test x$HAVE_L2PROJECTIONEPL = xyes])
+AC_MSG_RESULT($HAVE_L2PROJECTIONEPL)
+dnl }}}
+dnl with-Levelset{{{
+AC_ARG_WITH([Levelset],
+	AS_HELP_STRING([--with-Levelset = YES], [compile with Levelset capabilities (default is yes)]),
+	[LEVELSET=$withval],[LEVELSET=yes])
+AC_MSG_CHECKING(for Levelset capability compilation)
+
+HAVE_LEVELSET=no 
+if test "x$LEVELSET" = "xyes"; then
+	HAVE_LEVELSET=yes
+	AC_DEFINE([_HAVE_LEVELSET_],[1],[with Levelset capability])
+fi
+AM_CONDITIONAL([LEVELSET], [test x$HAVE_LEVELSET = xyes])
+AC_MSG_RESULT($HAVE_LEVELSET)
+dnl }}}
+dnl with-Love{{{
+AC_ARG_WITH([Love],
+	AS_HELP_STRING([--with-Love = YES], [compile with Love capabilities (default is yes)]),
+	[LOVE=$withval],[LOVE=yes])
+AC_MSG_CHECKING(for Love capability compilation)
+
+HAVE_LOVE=no 
+if test "x$LOVE" = "xyes"; then
+	HAVE_LOVE=yes
+	AC_DEFINE([_HAVE_LOVE_],[1],[with Love capability])
+fi
+AM_CONDITIONAL([LOVE], [test x$HAVE_LOVE = xyes])
+AC_MSG_RESULT($HAVE_LOVE)
+dnl }}}
+dnl with-Masstransport{{{
+AC_ARG_WITH([Masstransport],
+	AS_HELP_STRING([--with-Masstransport = YES], [compile with Masstransport capabilities (default is yes)]),
+	[MASSTRANSPORT=$withval],[MASSTRANSPORT=yes])
+AC_MSG_CHECKING(for Masstransport capability compilation)
+
+HAVE_MASSTRANSPORT=no 
+if test "x$MASSTRANSPORT" = "xyes"; then
+	HAVE_MASSTRANSPORT=yes
+	AC_DEFINE([_HAVE_MASSTRANSPORT_],[1],[with Masstransport capability])
+fi
+AM_CONDITIONAL([MASSTRANSPORT], [test x$HAVE_MASSTRANSPORT = xyes])
+AC_MSG_RESULT($HAVE_MASSTRANSPORT)
+dnl }}}
+dnl with-Melting{{{
+AC_ARG_WITH([Melting],
+	AS_HELP_STRING([--with-Melting = YES], [compile with Melting capabilities (default is yes)]),
+	[MELTING=$withval],[MELTING=yes])
+AC_MSG_CHECKING(for Melting capability compilation)
+
+HAVE_MELTING=no 
+if test "x$MELTING" = "xyes"; then
+	HAVE_MELTING=yes
+	AC_DEFINE([_HAVE_MELTING_],[1],[with Melting capability])
+fi
+AM_CONDITIONAL([MELTING], [test x$HAVE_MELTING = xyes])
+AC_MSG_RESULT($HAVE_MELTING)
+dnl }}}
+dnl with-Oceantransport{{{
+AC_ARG_WITH([Oceantransport],
+	AS_HELP_STRING([--with-Oceantransport = YES], [compile with Oceantransport capabilities (default is yes)]),
+	[OCEANTRANSPORT=$withval],[OCEANTRANSPORT=yes])
+AC_MSG_CHECKING(for Oceantransport capability compilation)
+
+HAVE_OCEANTRANSPORT=no 
+if test "x$OCEANTRANSPORT" = "xyes"; then
+	HAVE_OCEANTRANSPORT=yes
+	AC_DEFINE([_HAVE_OCEANTRANSPORT_],[1],[with Oceantransport capability])
+fi
+AM_CONDITIONAL([OCEANTRANSPORT], [test x$HAVE_OCEANTRANSPORT = xyes])
+AC_MSG_RESULT($HAVE_OCEANTRANSPORT)
+dnl }}}
+dnl with-Recovery{{{
+AC_ARG_WITH([Recovery],
+	AS_HELP_STRING([--with-Recovery = YES], [compile with Recovery capabilities (default is yes)]),
+	[RECOVERY=$withval],[RECOVERY=yes])
+AC_MSG_CHECKING(for Recovery capability compilation)
+
+HAVE_RECOVERY=no 
+if test "x$RECOVERY" = "xyes"; then
+	HAVE_RECOVERY=yes
+	AC_DEFINE([_HAVE_RECOVERY_],[1],[with Recovery capability])
+fi
+AM_CONDITIONAL([RECOVERY], [test x$HAVE_RECOVERY = xyes])
+AC_MSG_RESULT($HAVE_RECOVERY)
+dnl }}}
+dnl with-Sampling{{{
+AC_ARG_WITH([Sampling],
+	AS_HELP_STRING([--with-Sampling = YES], [compile with Sampling capabilities (default is yes)]),
+	[SAMPLING=$withval],[SAMPLING=yes])
+AC_MSG_CHECKING(for Sampling capability compilation)
+
+HAVE_SAMPLING=no 
+if test "x$SAMPLING" = "xyes"; then
+	HAVE_SAMPLING=yes
+	AC_DEFINE([_HAVE_SAMPLING_],[1],[with Sampling capability])
+fi
+AM_CONDITIONAL([SAMPLING], [test x$HAVE_SAMPLING = xyes])
+AC_MSG_RESULT($HAVE_SAMPLING)
+dnl }}}
+dnl with-Sealevelchange{{{
+AC_ARG_WITH([Sealevelchange],
+	AS_HELP_STRING([--with-Sealevelchange = YES], [compile with Sealevelchange capabilities (default is yes)]),
+	[SEALEVELCHANGE=$withval],[SEALEVELCHANGE=yes])
+AC_MSG_CHECKING(for Sealevelchange capability compilation)
+
+HAVE_SEALEVELCHANGE=no 
+if test "x$SEALEVELCHANGE" = "xyes"; then
+	HAVE_SEALEVELCHANGE=yes
+	AC_DEFINE([_HAVE_SEALEVELCHANGE_],[1],[with Sealevelchange capability])
+fi
+AM_CONDITIONAL([SEALEVELCHANGE], [test x$HAVE_SEALEVELCHANGE = xyes])
+AC_MSG_RESULT($HAVE_SEALEVELCHANGE)
+dnl }}}
+dnl with-Smb{{{
+AC_ARG_WITH([Smb],
+	AS_HELP_STRING([--with-Smb = YES], [compile with Smb capabilities (default is yes)]),
+	[SMB=$withval],[SMB=yes])
+AC_MSG_CHECKING(for Smb capability compilation)
+
+HAVE_SMB=no 
+if test "x$SMB" = "xyes"; then
+	HAVE_SMB=yes
+	AC_DEFINE([_HAVE_SMB_],[1],[with Smb capability])
+fi
+AM_CONDITIONAL([SMB], [test x$HAVE_SMB = xyes])
+AC_MSG_RESULT($HAVE_SMB)
+dnl }}}
+dnl with-Smooth{{{
+AC_ARG_WITH([Smooth],
+	AS_HELP_STRING([--with-Smooth = YES], [compile with Smooth capabilities (default is yes)]),
+	[SMOOTH=$withval],[SMOOTH=yes])
+AC_MSG_CHECKING(for Smooth capability compilation)
+
+HAVE_SMOOTH=no 
+if test "x$SMOOTH" = "xyes"; then
+	HAVE_SMOOTH=yes
+	AC_DEFINE([_HAVE_SMOOTH_],[1],[with Smooth capability])
+fi
+AM_CONDITIONAL([SMOOTH], [test x$HAVE_SMOOTH = xyes])
+AC_MSG_RESULT($HAVE_SMOOTH)
+dnl }}}
+dnl with-Stressbalance{{{
+AC_ARG_WITH([Stressbalance],
+	AS_HELP_STRING([--with-Stressbalance = YES], [compile with Stressbalance capabilities (default is yes)]),
+	[STRESSBALANCE=$withval],[STRESSBALANCE=yes])
+AC_MSG_CHECKING(for Stressbalance capability compilation)
+
+HAVE_STRESSBALANCE=no 
+if test "x$STRESSBALANCE" = "xyes"; then
+	HAVE_STRESSBALANCE=yes
+	AC_DEFINE([_HAVE_STRESSBALANCE_],[1],[with Stressbalance capability])
+fi
+AM_CONDITIONAL([STRESSBALANCE], [test x$HAVE_STRESSBALANCE = xyes])
+AC_MSG_RESULT($HAVE_STRESSBALANCE)
+dnl }}}
+dnl with-StressbalanceSIA{{{
+AC_ARG_WITH([StressbalanceSIA],
+	AS_HELP_STRING([--with-StressbalanceSIA = YES], [compile with StressbalanceSIA capabilities (default is yes)]),
+	[STRESSBALANCESIA=$withval],[STRESSBALANCESIA=yes])
+AC_MSG_CHECKING(for StressbalanceSIA capability compilation)
+
+HAVE_STRESSBALANCESIA=no 
+if test "x$STRESSBALANCESIA" = "xyes"; then
+	HAVE_STRESSBALANCESIA=yes
+	AC_DEFINE([_HAVE_STRESSBALANCESIA_],[1],[with StressbalanceSIA capability])
+fi
+AM_CONDITIONAL([STRESSBALANCESIA], [test x$HAVE_STRESSBALANCESIA = xyes])
+AC_MSG_RESULT($HAVE_STRESSBALANCESIA)
+dnl }}}
+dnl with-StressbalanceVertical{{{
+AC_ARG_WITH([StressbalanceVertical],
+	AS_HELP_STRING([--with-StressbalanceVertical = YES], [compile with StressbalanceVertical capabilities (default is yes)]),
+	[STRESSBALANCEVERTICAL=$withval],[STRESSBALANCEVERTICAL=yes])
+AC_MSG_CHECKING(for StressbalanceVertical capability compilation)
+
+HAVE_STRESSBALANCEVERTICAL=no 
+if test "x$STRESSBALANCEVERTICAL" = "xyes"; then
+	HAVE_STRESSBALANCEVERTICAL=yes
+	AC_DEFINE([_HAVE_STRESSBALANCEVERTICAL_],[1],[with StressbalanceVertical capability])
+fi
+AM_CONDITIONAL([STRESSBALANCEVERTICAL], [test x$HAVE_STRESSBALANCEVERTICAL = xyes])
+AC_MSG_RESULT($HAVE_STRESSBALANCEVERTICAL)
+dnl }}}
+dnl with-Thermal{{{
+AC_ARG_WITH([Thermal],
+	AS_HELP_STRING([--with-Thermal = YES], [compile with Thermal capabilities (default is yes)]),
+	[THERMAL=$withval],[THERMAL=yes])
+AC_MSG_CHECKING(for Thermal capability compilation)
+
+HAVE_THERMAL=no 
+if test "x$THERMAL" = "xyes"; then
+	HAVE_THERMAL=yes
+	AC_DEFINE([_HAVE_THERMAL_],[1],[with Thermal capability])
+fi
+AM_CONDITIONAL([THERMAL], [test x$HAVE_THERMAL = xyes])
+AC_MSG_RESULT($HAVE_THERMAL)
+dnl }}}
+dnl with-UzawaPressure{{{
+AC_ARG_WITH([UzawaPressure],
+	AS_HELP_STRING([--with-UzawaPressure = YES], [compile with UzawaPressure capabilities (default is yes)]),
+	[UZAWAPRESSURE=$withval],[UZAWAPRESSURE=yes])
+AC_MSG_CHECKING(for UzawaPressure capability compilation)
+
+HAVE_UZAWAPRESSURE=no 
+if test "x$UZAWAPRESSURE" = "xyes"; then
+	HAVE_UZAWAPRESSURE=yes
+	AC_DEFINE([_HAVE_UZAWAPRESSURE_],[1],[with UzawaPressure capability])
+fi
+AM_CONDITIONAL([UZAWAPRESSURE], [test x$HAVE_UZAWAPRESSURE = xyes])
+AC_MSG_RESULT($HAVE_UZAWAPRESSURE)
+dnl }}}
+
+])
Index: /issm/branches/trunk-dlcheng-ASE/m4/ar-lib.m4
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/m4/ar-lib.m4	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/m4/ar-lib.m4	(revision 27955)
@@ -0,0 +1,61 @@
+##                                                          -*- Autoconf -*-
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_PROG_AR([ACT-IF-FAIL])
+# -------------------------
+# Try to determine the archiver interface, and trigger the ar-lib wrapper
+# if it is needed.  If the detection of archiver interface fails, run
+# ACT-IF-FAIL (default is to abort configure with a proper error message).
+AC_DEFUN([AM_PROG_AR],
+[AC_BEFORE([$0], [LT_INIT])dnl
+AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([ar-lib])dnl
+AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false])
+: ${AR=ar}
+
+AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface],
+  [am_cv_ar_interface=ar
+   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])],
+     [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
+      AC_TRY_EVAL([am_ar_try])
+      if test "$ac_status" -eq 0; then
+        am_cv_ar_interface=ar
+      else
+        am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
+        AC_TRY_EVAL([am_ar_try])
+        if test "$ac_status" -eq 0; then
+          am_cv_ar_interface=lib
+        else
+          am_cv_ar_interface=unknown
+        fi
+      fi
+      rm -f conftest.lib libconftest.a
+     ])
+   ])
+
+case $am_cv_ar_interface in
+ar)
+  ;;
+lib)
+  # Microsoft lib, so override with the ar-lib wrapper script.
+  # FIXME: It is wrong to rewrite AR.
+  # But if we don't then we get into trouble of one sort or another.
+  # A longer-term fix would be to have automake use am__AR in this case,
+  # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something
+  # similar.
+  AR="$am_aux_dir/ar-lib $AR"
+  ;;
+unknown)
+  m4_default([$1],
+             [AC_MSG_ERROR([could not determine $AR interface])])
+  ;;
+esac
+AC_SUBST([AR])dnl
+])
Index: /issm/branches/trunk-dlcheng-ASE/m4/issm_options.m4
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/m4/issm_options.m4	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/m4/issm_options.m4	(revision 27955)
@@ -0,0 +1,2889 @@
+dnl ISSM Options
+
+dnl TODO:
+dnl - Check if we need statements such as,
+dnl
+dnl.  	  AM_CONDITIONAL([JAVASCRIPT], [test "x${HAVE_JAVASCRIPT}" = "xyes"])
+dnl
+dnl	  when we have already performed a similar check,
+dnl
+dnl  	  if test "x${JAVASCRIPT}" = "xno"; then
+dnl
+dnl - Move library dependency checks from end of file to appropriate places
+dnl   inline
+dnl - Refactor conditionals that test both -d <file> and -f <file>
+dnl
+
+AC_DEFUN([ISSM_OPTIONS],[
+	AC_MSG_NOTICE(============================================================================)
+	AC_MSG_NOTICE(=                      Checking ISSM specific options                      =)
+	AC_MSG_NOTICE(============================================================================)
+
+	dnl ISSM's internal options
+	dnl Build info{{{
+
+	dnl Build date
+	AC_PATH_PROGS(DATE, date)
+	AC_MSG_CHECKING([for build date])
+	if test "$DATE"; then
+		PACKAGE_DATE=`date`
+	else
+		PACKAGE_DATE="unknown"
+	fi
+	AC_DEFINE_UNQUOTED([PACKAGE_BUILD_DATE], "${PACKAGE_DATE}", [build date])
+	AC_MSG_RESULT([${PACKAGE_DATE}])
+
+	dnl User name
+	AC_MSG_CHECKING([user name])
+	if test -n "$USER"
+	then
+		user_name="$USER"
+	else
+		if test -n "$LOGNAME"; then
+			user_name ="$LOGNAME"
+		else
+			user_name =`(whoami) 2>/dev/null` || user_name=unknown
+		fi
+	fi
+	AC_DEFINE_UNQUOTED([USER_NAME], "${user_name}", [user name])
+	AC_MSG_RESULT([${user_name}])
+
+	AC_MSG_CHECKING([host full OS name and version])
+	dnl Normalize some host OS names
+	case ${host_os} in
+		dnl linux is linux is linux, regardless of RMS
+		linux-gnu* | lignux* )	host_os=linux ;;
+	esac
+	AC_DEFINE_UNQUOTED([HOST_OS], "${host_os}", [host full OS name and version])
+	AC_MSG_RESULT([${host_os}])
+
+	AC_MSG_CHECKING([host cpu])
+	AC_DEFINE_UNQUOTED([HOST_CPU], "${host_cpu}", [host CPU])
+	AC_MSG_RESULT([${host_cpu}])
+
+	AC_MSG_CHECKING([vendor])
+	AC_DEFINE_UNQUOTED([HOST_VENDOR], "${host_vendor}", [host vendor])
+	AC_MSG_RESULT([${host_vendor}])
+
+	AC_MSG_CHECKING([host OS name])
+	host_os_name=`echo $host_os | sed 's/\..*//g'`
+	dnl Normalize some OS names
+	case ${host_os_name} in
+		dnl linux is linux is linux, regardless of RMS.
+		linux-gnu* | lignux* )	host_os_name=linux ;;
+	esac
+	AC_DEFINE_UNQUOTED([HOST_OS_NAME], "${host_os_name}", [host OS name])
+	AC_MSG_RESULT([${host_os_name}])
+
+	dnl Parse out the OS version of the host
+	AC_MSG_CHECKING([host OS version])
+	host_os_version=`echo $host_os | sed 's/^[[^0-9]]*//g'`
+	if test -z "$host_os_version"; then
+		host_os_version=`(uname -r) 2>/dev/null` || host_os_version=unknown
+	fi
+	AC_DEFINE_UNQUOTED([HOST_OS_VERSION], "${host_os_version}", [host OS version])
+	AC_MSG_RESULT([${host_os_version}])
+
+	dnl Determine host architecture (different than CPU)
+	AC_MSG_CHECKING([host OS architecture])
+	host_arch=`(uname -m) 2>/dev/null` || host_arch=unknown
+	dnl Normalize some names
+	case ${host_arch} in
+		sun4* )	host_arch=sun4 ;;
+		sun3x )	host_arch=sun3 ;;
+		sun )	host_arch=`(arch) 2>/dev/null` || host_arch=unknown ;;
+		i?86 )	host_arch=i386 ;; # all x86 should show up as i386
+	esac
+	AC_DEFINE_UNQUOTED([HOST_ARCH], "${host_arch}", [host archictecture])
+	AC_MSG_RESULT([${host_arch}])
+
+	dnl }}}
+	dnl Debugging {{{
+	AC_ARG_ENABLE(
+		[debugging],													dnl feature
+		AS_HELP_STRING([--enable-debugging], [turn debug support on]),	dnl help string
+		[enable_debugging=${enableval}],								dnl action if given
+		[enable_debugging=no]											dnl action if not given
+	)
+	AC_MSG_CHECKING(for debugging support)
+	if test "x${enable_debugging}" == "xyes"; then
+		AC_DEFINE([_ISSM_DEBUG_], [1], [Macro to enable debugging in ISSM])
+	fi
+	AC_MSG_RESULT([${enable_debugging}])
+	dnl }}}
+	dnl Development{{{
+	AC_ARG_ENABLE(
+		[development],													dnl feature
+		AS_HELP_STRING([--enable-development], [turn development on]),  dnl help string
+		[enable_development=${enableval}],								dnl action if given
+		[enable_development=no]											dnl action if not given
+	)
+	AC_MSG_CHECKING(for development support)
+	if test "x${enable_development}" == "xyes"; then
+		AC_DEFINE([_DEVELOPMENT_], [1], [enable development support in ISSM])
+	fi
+	AM_CONDITIONAL([DEVELOPMENT], [test "x${enable_development}" == "xyes"])
+	AC_MSG_RESULT([${enable_development}])
+	dnl }}}
+	dnl Standalone Options {{{
+	AC_ARG_ENABLE(
+		[standalone-modules],															dnl feature
+		AS_HELP_STRING([--enable-standalone-modules], [produce standalone modules]),	dnl help string
+		[enable_standalone_modules=${enableval}],										dnl action if given
+		[enable_standalone_modules=no]													dnl action if not given
+	)
+	AC_MSG_CHECKING(for standalone modules build)
+	AM_CONDITIONAL([STANDALONE_MODULES], [test "x${enable_standalone_modules}" == "xyes"])
+	AC_MSG_RESULT([${enable_standalone_modules}])
+
+	AC_ARG_ENABLE(
+		[standalone-executables],																dnl feature
+		AS_HELP_STRING([--enable-standalone-executables], [produce standalone executables]),	dnl help string
+		[enable_standalone_executables=${enableval}],											dnl action if given
+		[enable_standalone_executables=no]														dnl action if not given
+	)
+	AC_MSG_CHECKING(for standalone executables build)
+	AM_CONDITIONAL([STANDALONE_EXECUTABLES], [test "x${enable_standalone_executables}" == "xyes"])
+	AC_MSG_RESULT([${enable_standalone_executables}])
+
+	AC_ARG_ENABLE(
+		[standalone-libraries],																dnl feature
+		AS_HELP_STRING([--enable-standalone-libraries], [produce standalone libraries]),	dnl help string
+		[enable_standalone_libraries=${enableval}],											dnl action if given
+		[enable_standalone_libraries=no]													dnl action if not given
+	)
+	AC_MSG_CHECKING(for standalone libraries build)
+	AM_CONDITIONAL([STANDALONE_LIBRARIES], [test "x${enable_standalone_libraries}" == "xyes"])
+	AC_MSG_RESULT([${enable_standalone_libraries}])
+	dnl }}}
+	dnl Version{{{
+	AC_ARG_ENABLE(
+		[version],													dnl feature
+		AS_HELP_STRING([--enable-version], [produce libISSM.so.0]),	dnl help string
+		[enable_version=${enableval}],								dnl action if given
+		[enable_version=no]											dnl action if not given
+	)
+	AM_CONDITIONAL([VERSION], [test "x${enable_version}" == "xyes"])
+	dnl }}}
+	dnl Wrappers build {{{
+	AC_ARG_WITH(
+		[wrappers],															dnl feature
+		AS_HELP_STRING([--with-wrappers = value], [wrappers compilation]),	dnl help string
+		[WRAPPERS_VALUE=${withval}],										dnl action if given
+		[WRAPPERS_VALUE="yes"]												dnl action if not given
+	)
+	AC_MSG_CHECKING(for wrappers compilation)
+	AM_CONDITIONAL([WRAPPERS], [test "x${WRAPPERS_VALUE}" == "xyes"])
+	AC_MSG_RESULT([${WRAPPERS_VALUE}])
+	dnl }}}
+	dnl Extensions{{{
+	ISSMEXT=".exe"
+	AC_SUBST([ISSMEXT])
+	dnl }}}
+
+	dnl ISSM's externalpackages
+	dnl vendor{{{
+	AC_ARG_WITH(
+		[vendor],															dnl feature
+		AS_HELP_STRING([--with-vendor = VENDOR], [vendor name, ex: intel]),	dnl help string
+		[VENDOR=${withval}],												dnl action if given
+		[VENDOR=""]															dnl action if not given
+	)
+
+	AC_MSG_CHECKING([if this is a Mac build])
+	case "${host_os}" in
+		*darwin*)
+			IS_MAC=yes
+			AC_DEFINE([_MAC_], [1], [is macOS])
+			dnl When standard Dakota installation has been updated to new 
+			dnl version, remove the following
+			export CFLAGS="-Wno-deprecated-register -Wno-return-type"
+			export CXXFLAGS="-Wno-deprecated-register -Wno-return-type"
+			dnl NOTE: Commenting out the following, for now, as ISSM seems to 
+			dnl 	  compile and run fine, but certain errors (e.g. file not 
+			dnl 	  found) were not bubbling up, and instead causing MATLAB 
+			dnl 	  to crash.
+			dnl
+# 			if test "${LDFLAGS}" == ""; then
+# 				export LDFLAGS="-Wl,-no_compact_unwind"
+# 			else
+# 				export LDFLAGS="${LDFLAGS} -Wl,-no_compact_unwind"
+# 			fi
+		;;
+		*)
+			IS_MAC=no
+			AC_DEFINE([_MAC_], [0], [is macOS])
+		;;
+	esac
+	AM_CONDITIONAL([MAC], [test "${IS_MAC}" == "yes"])
+	AC_MSG_RESULT([${IS_MAC}])
+
+	dnl If macOS, check if system copy of libc has fmemopen (if it is not
+	dnl macOS, we do not check, but still must set SYSTEM_HAS_FMEMOPEN)
+	AC_MSG_CHECKING([if system copy of libc has fmemopen])
+	SYSTEM_FMEMOPEN=1
+	if test "${IS_MAC}" == "yes"; then
+		sys_ver=$(sw_vers -productVersion)
+		if test $(echo ${sys_ver} | cut -d "." -f 1) -eq 10 && test $(echo ${sys_ver} | cut -d "." -f 2) -lt 13; then
+			SYSTEM_FMEMOPEN=0
+		fi
+	fi
+	if test "${SYSTEM_FMEMOPEN}" == "1"; then
+		AC_MSG_RESULT([yes])
+	else
+		AC_MSG_RESULT([no])
+	fi
+	AC_DEFINE_UNQUOTED([_SYSTEM_HAS_FMEMOPEN_], ${SYSTEM_FMEMOPEN}, [does system copy of libc have fmemopen])
+	AM_CONDITIONAL([SYSTEM_HAS_FMEMOPEN], [test "${SYSTEM_FMEMOPEN}" == "1"])
+
+	IS_MSYS2=no
+	IS_WINDOWS=no
+	AC_MSG_CHECKING([for vendor compilers])
+	if test -n "${VENDOR}"; then
+		if test "${VENDOR}" == "intel-win32"; then
+			export CC=icl
+			export CXX=icl
+			export CFLAGS="-DWIN32 -D_INTEL_WIN_"
+			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_"
+			IS_WINDOWS=yes
+		elif test "${VENDOR}" == "intel-win7-32"; then
+			export CC=cl
+			export CXX=cl
+			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export CFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export AR="ar-lib lib"
+			export OS_LDFLAG="-Wl,"
+			export RANLIB=true
+			IS_WINDOWS=yes
+			OSLIBS="-Wl,kernel32.lib -Wl,user32.lib -Wl,gdi32.lib -Wl,winspool.lib -Wl,comdlg32.lib -Wl,advapi32.lib -Wl,shell32.lib -Wl,ole32.lib -Wl,oleaut32.lib -Wl,uuid.lib -Wl,odbc32.lib -Wl,odbccp32.lib"
+		elif test "${VENDOR}" == "intel-win7-64"; then
+			export CC=cl
+			export CXX=cl
+			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export CFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export AR="ar-lib lib"
+			export OS_LDFLAG="-Wl,"
+			export RANLIB=true
+			IS_WINDOWS=yes
+			OSLIBS="-Wl,kernel32.lib -Wl,user32.lib -Wl,gdi32.lib -Wl,winspool.lib -Wl,comdlg32.lib -Wl,advapi32.lib -Wl,shell32.lib -Wl,ole32.lib -Wl,oleaut32.lib -Wl,uuid.lib -Wl,odbc32.lib -Wl,odbccp32.lib"
+		elif test "${VENDOR}" == "MSVC-Win64"; then
+			export CC=cl
+			export CXX=cl
+			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_ -D_HAVE_PETSC_MPI_ -EHsc"
+			export CFLAGS="-DWIN32 -D_INTEL_WIN_ -D_HAVE_PETSC_MPI_ -EHsc"
+			export AR="ar-lib lib"
+			export OS_LDFLAG="-Wl,"
+			export RANLIB=true
+			IS_WINDOWS=yes
+			OSLIBS="-Wl,kernel32.lib -Wl,user32.lib -Wl,gdi32.lib -Wl,winspool.lib -Wl,comdlg32.lib -Wl,advapi32.lib -Wl,shell32.lib -Wl,ole32.lib -Wl,oleaut32.lib -Wl,uuid.lib -Wl,odbc32.lib -Wl,odbccp32.lib"
+		elif test "${VENDOR}" == "MSVC-Win64-par"; then
+			export CC=cl
+			export CXX=cl
+			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export CFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export AR="ar-lib lib"
+			export OS_LDFLAG="-Wl,"
+			export RANLIB=true
+			IS_WINDOWS=yes
+			OSLIBS="-Wl,kernel32.lib -Wl,user32.lib -Wl,gdi32.lib -Wl,winspool.lib -Wl,comdlg32.lib -Wl,advapi32.lib -Wl,shell32.lib -Wl,ole32.lib -Wl,oleaut32.lib -Wl,uuid.lib -Wl,odbc32.lib -Wl,odbccp32.lib"
+		elif test "${VENDOR}" == "intel-linux"; then
+			export CC=icc
+			export CXX=icpc
+			export CFLAGS="-D_INTEL_LINUX_"
+			export CXXFLAGS="-D_INTEL_LINUX_"
+		elif test "${VENDOR}" == "intel-gp"; then
+			export CC=icc
+			export CXX=icpc
+			export CFLAGS="-D_INTEL_LINUX_"
+			export CXXFLAGS="-D_INTEL_LINUX_"
+		elif test "${VENDOR}" == intel-lonestar; then
+			export CC=icc
+			export CXX=icpc
+		elif test "${VENDOR}" == "intel-aurora"; then
+			export CC=icc
+			export CXX=icpc
+			export CXXFLAGS="-O3 -D_INTEL_LINUX_ -DMPICH_IGNORE_CXX_SEEK"
+			export CFLAGS="-O3 -D_INTEL_LINUX_ -DMPICH_IGNORE_CXX_SEEK"
+		elif test "${VENDOR}" == "intel-discover"; then
+			export CC=mpicc
+			export CXX=mpicxx
+			export CXXFLAGS="-O3 -D_INTEL_LINUX_ -DMPICH_IGNORE_CXX_SEEK -std=c++11"
+			export CFLAGS="-O3 -D_INTEL_LINUX_ -DMPICH_IGNORE_CXX_SEEK"
+		elif test "${VENDOR}" == "intel-pleiades"; then
+			export CC=icc
+			export CXX=icpc
+			export CXXFLAGS="-O3 -D_INTEL_LINUX_ -std=c++11"
+			export CFLAGS="-O3 -D_INTEL_LINUX_"
+		elif test "${VENDOR}" == "intel-acenet"; then
+			export CC=icc
+			export CXX=icpc
+			export CXXFLAGS="-D_INTEL_LINUX_"
+			export CFLAGS="-D_INTEL_LINUX_"
+		elif test "${VENDOR}" == "intel-pleiades-gcc"; then
+			export CC=gcc
+			export CXX=g++
+			export CXXFLAGS="-O3 -march=corei7-avx -std=c++11"
+			export CFLAGS="-O3 -march=corei7-avx"
+		elif test "${VENDOR}" == "intel-pleiades-mpi"; then
+			export CC=mpicc
+			export CXX=mpicxx
+			export CXXFLAGS="-O3 -march=corei7-avx -std=c++11 -lirc -lsvml -limf"
+			export CFLAGS="-O3 -march=corei7-avx"
+		elif test "${VENDOR}" == "intel-pleiades-icpc"; then
+			export CXXFLAGS="-g -O3 -ipo -axAVX -ipo -no-inline-min-size -inline-max-size=345 -no-inline-max-total-size -no-inline-max-per-routine -no-inline-max-per-compile -restrict -std=c++11"
+			export CFLAGS="-g -O3 -ipo -axAVX -ipo -no-inline-min-size -inline-max-size=345 -no-inline-max-total-size -no-inline-max-per-routine -no-inline-max-per-compile -restrict"
+			AC_DEFINE([_HAVE_RESTRICT_], [1], [with restrict buffers])
+		elif test "${VENDOR}" == "win-msys2"; then
+			export CXXFLAGS="-D_MSYS2_"
+			export LDFLAGS="${LDFLAGS} -no-undefined"
+			export OSLIBS="-Wl,-L/c/msys64/mingw64/lib -Wl,-lstdc++ -Wl,-lmingw32 -Wl,-lgcc_s -Wl,-lmoldname -Wl,-lmingwex -Wl,-lmsvcrt -Wl,-lm -Wl,-lpthread -Wl,-lshell32 -Wl,-luser32 -Wl,-lgdi32 -Wl,-luser32 -Wl,-ladvapi32 -Wl,-lkernel32 -Wl,-lgcc"
+			IS_MSYS2=yes
+		else
+			AC_MSG_ERROR([unknown compiler vendor!])
+		fi
+	fi
+	dnl Set default standard for C++
+	if test "${CXXFLAGS}" == ""; then
+		export CXXFLAGS="-std=C++11"
+	fi
+	AC_SUBST([OSLIBS])
+	AC_MSG_RESULT([done])
+
+	AC_MSG_CHECKING([if this is a MSVC (Windows) build])
+	AM_CONDITIONAL([WINDOWS], [test "x${IS_WINDOWS}" == "xyes"])
+	AC_MSG_RESULT([${IS_WINDOWS}])
+
+	AC_MSG_CHECKING([if this is a MSYS2 (Windows) build])
+	AM_CONDITIONAL([MSYS2], [test "x${IS_MSYS2}" == "xyes"])
+	AC_MSG_RESULT([${IS_MSYS2}])
+	AC_DEFINE([_IS_MSYS2_], [1], [is a MSYS2 (Windows) build])
+	dnl }}}
+	dnl MATLAB{{{
+
+	dnl See if MATLAB has been provided
+	AC_MSG_CHECKING([for MATLAB])
+	AC_ARG_WITH(
+		[matlab-dir],														dnl feature
+		AS_HELP_STRING([--with-matlab-dir=DIR], [MATLAB root directory]),	dnl help string
+		[MATLAB_ROOT=${withval}],											dnl action if given
+		[MATLAB_ROOT="no"]													dnl action if not given
+	)
+	if test "x${MATLAB_ROOT}" == "xno"; then
+		HAVE_MATLAB=no
+	else
+		if ! test -d "${MATLAB_ROOT}"; then
+			AC_MSG_ERROR([MATLAB directory provided (${MATLAB_ROOT}) does not exist!]);
+		fi
+		if ! test -f "${MATLAB_ROOT}/extern/include/mex.h"; then
+			AC_MSG_ERROR([Couldn't find mex.h... check your installation of MATLAB])
+		fi
+		HAVE_MATLAB=yes
+	fi
+	AC_MSG_RESULT([${HAVE_MATLAB}])
+	AM_CONDITIONAL([MATLAB], [test "x${HAVE_MATLAB}" == "xyes"])
+
+	dnl Set variables
+	if test "x${HAVE_MATLAB}" == "xyes"; then
+		AC_DEFINE([_HAVE_MATLAB_], [1], [with MATLAB in ISSM src])
+
+		dnl Set MEX* variable
+		AC_MSG_CHECKING([MATLAB's mex compilation flags])
+
+		dnl NOTE: We know $VENDOR cannot be empty at this point, so no need to
+		dnl		  check again in the following conditionals
+		dnl
+		case "${host_os}" in
+			*cygwin*)
+				if test "${VENDOR}" == "intel-win7-32"; then
+					MEXLIB="-Wl,libmx.lib -Wl,libmex.lib -Wl,libmat.lib ${OSLIBS} -Wl,libf2cblas.lib -Wl,libf2clapack.lib"
+					MEXLINKFLAGS="-Wl,/LIBPATH:`cygpath -m ${MATLAB_ROOT}/extern/lib/win32/microsoft` -Wl,/link -Wl,/EXPORT:mexFunction -Wl,/DLL"
+					MEXEXT=`${MATLAB_ROOT}/bin/mexext.bat`
+					MEXEXT=".${MEXEXT}"
+				elif test "${VENDOR}" == "intel-win7-64"; then
+					MEXLIB="-Wl,libmx.lib -Wl,libmex.lib -Wl,libmat.lib ${OSLIBS} -Wl,libf2cblas.lib -Wl,libf2clapack.lib"
+					MEXLINKFLAGS="-Wl,/LIBPATH:`cygpath -m ${MATLAB_ROOT}/extern/lib/win64/microsoft` -Wl,/link -Wl,/EXPORT:mexFunction -Wl,/DLL"
+					MEXEXT=".mexw64"
+				elif test "${VENDOR}" == "MSVC-Win64" || test "${VENDOR}" == "MSVC-Win64-par"; then
+					MEXLIB="-Wl,libmx.lib -Wl,libmex.lib -Wl,libmat.lib ${OSLIBS} -Wl,libf2cblas.lib -Wl,libf2clapack.lib"
+					MEXLINKFLAGS="-Wl,/link -Wl,/LIBPATH:`cygpath -m ${MATLAB_ROOT}/extern/lib/win64/microsoft` -Wl,/link -Wl,/EXPORT:mexFunction -Wl,/DLL"
+					MATLABINCL="-I`cygpath -m ${MATLAB_ROOT}/extern/include`"
+					MEXEXT=".mexw64"
+				fi
+			;;
+			*mingw*)
+				if test "${IS_MSYS2}" == "yes"; then
+					dnl Value to set MEXEXT to can be found on Windows by running $MATLAB_ROOT/bin/mexext.bat
+					MEXEXT=".mexw64"
+					MATLABINCL="-I${MATLAB_ROOT}/extern/include"
+					MEXOPTFLAGS="-O2 -fwrapv -DNDEBUG -g"
+					MEXCFLAGS="-fexceptions -fno-omit-frame-pointer -m64 -DMATLAB_MEX_FILE"
+					MEXCXXFLAGS="-fexceptions -fno-omit-frame-pointer -std=c++11 -m64 -DMATLAB_MEX_FILE"
+					MEXLINKFLAGS="-m64 -Wl,--no-undefined -shared -static -Wl,${MATLAB_ROOT}/extern/lib/win64/mingw64/mexFunction.def"
+					MEXLIB_DIR="${MATLAB_ROOT}/extern/lib/win64/mingw64"
+					MEXLIB="-L${MEXLIB_DIR} -lmx -lmex -lmat -lm -lmwlapack -lmwblas"
+				fi
+			;;
+			*msys*)
+				dnl Value to set MEXEXT to can be found on Windows by running $MATLAB_ROOT/bin/mexext.bat
+				MEXEXT=".mexw64"
+				MATLABINCL="-I${MATLAB_ROOT}/extern/include"
+				MEXOPTFLAGS="-O2 -fwrapv -DNDEBUG -g"
+				MEXCFLAGS="-fexceptions -fno-omit-frame-pointer -m64 -DMATLAB_MEX_FILE"
+				MEXCXXFLAGS="-fexceptions -fno-omit-frame-pointer -std=c++11 -m64 -DMATLAB_MEX_FILE"
+				MEXLINKFLAGS="-m64 -Wl,--no-undefined -shared -static -Wl,${MATLAB_ROOT}/extern/lib/win64/mingw64/mexFunction.def"
+				MEXLIB_DIR="${MATLAB_ROOT}/extern/lib/win64/mingw64"
+				MEXLIB="-L${MEXLIB_DIR} -lmx -lmex -lmat -lm -lmwlapack -lmwblas"
+			;;
+			*)
+				MEXEXT=$(${MATLAB_ROOT}/bin/mex -v 2>&1 < /dev/null | grep LDEXTENSION | sed -e "s/         LDEXTENSION        = //g")
+				MATLABINCL="-I${MATLAB_ROOT}/extern/include"
+				MEXLINKFLAGS=$(${MATLAB_ROOT}/bin/mex -v 2>&1 < /dev/null | grep LDFLAGS | sed -e "s/         LDFLAGS            = //g")
+				MEXLIB=$(${MATLAB_ROOT}/bin/mex -v 2>&1 < /dev/null | grep CXXLIBS | sed -e "s/         CXXLIBS            = //g")
+				if test -z "${MEXEXT}"; then
+					echo "#include <mex.h>" > conftest.cpp
+					echo "void mexFunction(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]){}" >> conftest.cpp
+					${MATLAB_ROOT}/bin/mex -v -lmex conftest.cpp > conftest.tmp 2>&1
+					rm -f conftest.cpp
+					MEXLINKFLAGS=$(cat conftest.tmp | grep LDFLAGS | sed -e "s/LDFLAGS ://g")
+					MEXLIB=$(cat conftest.tmp | grep LINKLIBS | sed -e "s/LINKLIBS ://g")
+					MEXEXT=$(cat conftest.tmp | grep LDEXT | sed -e "s/LDEXT ://g" | awk '{print $[1]}')
+					if test -z "${MEXEXT}"; then
+					 cat conftest.tmp
+					fi
+					rm -f conftest.tmp
+				fi
+
+				dnl Make sure mexFunction.map is not in MEXLIB to avoid problems with global variables
+				dnl MEXLINKFLAGS=$(echo ${MEXLINKFLAGS} | sed -e "s/,-expo.*mexFunction\\.map\"//g" | sed -e "s/-[[^ ]]*mexFunction\\.map//g")
+				MEXLINKFLAGS="" dnl We actually don't need MEXLINK????
+			;;
+		esac
+		AC_MSG_RESULT([done])
+		if test -z "${MEXEXT}"; then
+			AC_MSG_ERROR([Couldn't use MATLAB's mex... check manual compilation with MATLAB or error message above])
+		fi
+
+		AC_SUBST([MEXEXT])
+		AC_SUBST([MEXOPTFLAGS])
+		AC_SUBST([MEXCFLAGS])
+		AC_SUBST([MEXCXXFLAGS])
+		AC_SUBST([MATLABINCL])
+		AC_SUBST([MEXLINKFLAGS])
+		AC_SUBST([MEXLIB])
+	fi
+	dnl }}}
+	dnl JavaScript{{{
+	AC_MSG_CHECKING([for JavaScript])
+	AC_ARG_WITH(
+		[javascript],
+		AS_HELP_STRING([--with-javascript], [compile JavaScript wrappers? (default: no)]),
+		[JAVASCRIPT=${withval}],
+		[JAVASCRIPT="no"]
+	)
+	if test "x${JAVASCRIPT}" == "xno"; then
+		HAVE_JAVASCRIPT=no
+	else
+		HAVE_JAVASCRIPT=yes
+		AC_DEFINE([_HAVE_JAVASCRIPT_], [1], [with JavaScript])
+	fi
+	AC_MSG_RESULT([${HAVE_JAVASCRIPT}])
+	AM_CONDITIONAL([JAVASCRIPT], [test "x${HAVE_JAVASCRIPT}" == "xyes"])
+	JAVASCRIPTWRAPPEREXT=.js
+	AC_SUBST([JAVASCRIPTWRAPPEREXT])
+	dnl }}}
+	dnl Triangle {{{
+	AC_MSG_CHECKING([for triangle])
+	AC_ARG_WITH(
+		[triangle-dir],
+		AS_HELP_STRING([--with-triangle-dir=DIR], [Triangle root directory]),
+		[TRIANGLE_ROOT=${withval}],
+		[TRIANGLE_ROOT="no"]
+	)
+	if test "x${TRIANGLE_ROOT}" == "xno"; then
+		HAVE_TRIANGLE=no
+	else
+		HAVE_TRIANGLE=yes
+		if ! test -d "${TRIANGLE_ROOT}"; then
+			AC_MSG_ERROR([Triangle directory provided (${TRIANGLE_ROOT}) does not exist!]);
+		fi
+		if ! test -f "${TRIANGLE_ROOT}/include/triangle.h"; then
+			AC_MSG_ERROR([Couldn't find triangle.h... check your installation of triangle])
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_TRIANGLE}])
+	AM_CONDITIONAL([TRIANGLE], [test "x${HAVE_TRIANGLE}" == "xyes"])
+
+	dnl Triangle libraries and header files
+	if test "x${HAVE_TRIANGLE}" == "xyes"; then
+		TRIANGLEINCL=-I${TRIANGLE_ROOT}/include
+		case "${host_os}" in
+			*cygwin*)
+				TRIANGLEINCL="/I`cygpath -m ${TRIANGLE_ROOT}/include`"
+				TRIANGLELIB="-Wl,`cygpath -m ${TRIANGLE_ROOT}/lib/libtriangle.lib`"
+			;;
+			*darwin*)
+				if test "x${HAVE_JAVASCRIPT}" == "xyes"; then
+					dnl Link to the object file, not the library
+					TRIANGLELIB=${TRIANGLE_ROOT}/share/triangle.o
+				else
+					TRIANGLELIB="-L${TRIANGLE_ROOT}/lib -ltriangle"
+				fi
+			;;
+			*linux*)
+				if test "x${HAVE_JAVASCRIPT}" == "xyes"; then
+					dnl Link to the object file, not the library
+					TRIANGLELIB=${TRIANGLE_ROOT}/share/triangle.o
+				else
+					TRIANGLELIB="-L${TRIANGLE_ROOT}/lib -ltriangle"
+				fi
+			;;
+			*mingw*)
+				if test "x${HAVE_JAVASCRIPT}" == "xyes"; then
+					dnl Link to the object file, not the library
+					TRIANGLELIB=${TRIANGLE_ROOT}/share/triangle.o
+				else
+					TRIANGLELIB="-Wl,-L${TRIANGLE_ROOT}/lib -Wl,-ltriangle"
+				fi
+			;;
+			*msys*)
+				if test "x${HAVE_JAVASCRIPT}" == "xyes"; then
+					dnl Link to the object file, not the library
+					TRIANGLELIB=${TRIANGLE_ROOT}/share/triangle.o
+				else
+					TRIANGLELIB="-L${TRIANGLE_ROOT}/lib -ltriangle"
+				fi
+			;;
+		esac
+		AC_DEFINE([_HAVE_TRIANGLE_], [1], [with Triangle in ISSM src])
+		AC_SUBST([TRIANGLEINCL])
+		AC_SUBST([TRIANGLELIB])
+	fi
+	dnl }}}
+	dnl Boost{{{
+	AC_MSG_CHECKING([for Boost])
+	AC_ARG_WITH(
+		[boost-dir],
+		AS_HELP_STRING([--with-boost-dir=DIR], [Boost root directory]),
+		[BOOST_ROOT=${withval}],
+		[BOOST_ROOT="no"]
+	)
+	if test "x${BOOST_ROOT}" == "xno"; then
+		HAVE_BOOST=no
+	else
+		HAVE_BOOST=yes
+		if ! test -d "${BOOST_ROOT}"; then
+			AC_MSG_ERROR([Boost directory provided (${BOOST_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_BOOST}])
+	AM_CONDITIONAL([BOOST], [test "x${HAVE_BOOST}" == "xyes"])
+
+	dnl Boost libraries and header files
+	if test "x${HAVE_BOOST}" == "xyes"; then
+		BOOSTINCL="-I${BOOST_ROOT}/include"
+		#BOOSTLIB="-L$BOOST_ROOT/lib -lboost_python"
+		AC_MSG_CHECKING(for Boost version)
+		BOOST_VERSION=`cat ${BOOST_ROOT}/include/boost/version.hpp | grep "#define BOOST_VERSION " | sed 's/.*BOOST_VERSION //'`
+		BOOST_VERSION_MAJOR=`expr ${BOOST_VERSION} / 100000`
+		BOOST_VERSION_MINOR=`expr ${BOOST_VERSION} / 100 % 1000`
+		AC_MSG_RESULT([${BOOST_VERSION_MAJOR}.${BOOST_VERSION_MINOR}])
+		AC_DEFINE([_HAVE_BOOST_], [1], [with Boost in ISSM src])
+		AC_SUBST([BOOSTINCL])
+		AC_SUBST([BOOSTLIB])
+	fi
+	dnl }}}
+	dnl Dakota{{{
+	AC_MSG_CHECKING([for Dakota])
+	AC_ARG_WITH(
+		[dakota-dir],
+		AS_HELP_STRING([--with-dakota-dir=DIR], [Dakota root directory]),
+		[DAKOTA_ROOT=${withval}],
+		[DAKOTA_ROOT="no"]
+	)
+	if test "x${DAKOTA_ROOT}" == "xno"; then
+		HAVE_DAKOTA=no
+	else
+		HAVE_DAKOTA=yes
+		if ! test -d "${DAKOTA_ROOT}"; then
+			AC_MSG_ERROR([Dakota directory provided (${DAKOTA_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_DAKOTA}])
+	AM_CONDITIONAL([DAKOTA], [test "x${HAVE_DAKOTA}" == "xyes"])
+
+	dnl Dakota libraries and header files
+	if test "x${HAVE_DAKOTA}" == "xyes"; then
+		DAKOTAINCL=-I${DAKOTA_ROOT}/include
+
+		AC_MSG_CHECKING(for Dakota version)
+		dnl TODO:
+		dnl - Check if this method applies to all other versions of Dakota (it
+		dnl   should as long as the Dakota binaries have been compiled). If so,
+		dnl   we can remove the other methods of getting the version.
+		dnl - Modify src/wrappers/IssmConfig/IssmConfig.cpp so that strlen is
+		dnl   not called with _DAKOTA_VERSION_ as an argument so that we can
+		dnl   do,
+		dnl
+		dnl   	AC_DEFINE_UNQUOTED([_DAKOTA_VERSION_], ${DAKOTA_VERSION}, [Dakota version number])
+		dnl
+		if test -f "${DAKOTA_ROOT}/VERSION"; then
+			DAKOTA_VERSION=`cat ${DAKOTA_ROOT}/VERSION | grep 'DAKOTA Version' | sed 's/.*DAKOTA Version //' | sed 's/ .*//'`
+		else
+			DAKOTA_VERSION_OUTPUT=`${DAKOTA_ROOT}/bin/dakota -v`
+			if test -n "${DAKOTA_VERSION_OUTPUT}"; then
+				DAKOTA_VERSION=`echo ${DAKOTA_VERSION_OUTPUT} grep "Dakota version" | sed 's/Dakota version //' | sed 's/ .*//'`
+			elif test -f "${DAKOTA_ROOT}/../src/src/CommandLineHandler.C"; then
+				DAKOTA_VERSION=`cat ${DAKOTA_ROOT}/../src/src/CommandLineHandler.C | grep 'DAKOTA version' | grep 'release' | grep -v // | sed 's/.*DAKOTA version //' | sed 's/ .*//' `
+			elif test -f "${DAKOTA_ROOT}/../src/src/CommandLineHandler.cpp"; then
+				DAKOTA_VERSION=`cat ${DAKOTA_ROOT}/../src/src/CommandLineHandler.cpp | grep 'DAKOTA version' | grep 'release' | grep -v // | sed 's/.*DAKOTA version //' | sed 's/ .*//' `
+			else
+				AC_MSG_ERROR([Dakota CommandLineHandler.C or CommandLineHandler.cpp file not found to determine DAKOTA_VERSION!]);
+			fi
+		fi
+		AC_MSG_RESULT([${DAKOTA_VERSION}])
+		AC_DEFINE_UNQUOTED(_DAKOTA_VERSION_, "${DAKOTA_VERSION}", [Dakota version number])
+
+		DAKOTAFLAGS=""
+
+		dnl NOTE:
+		dnl - See,
+		dnl
+		dnl 	$ISSM_DIR/externalpackages/dakota/build/src/Makefile.export.Dakota
+		dnl
+		dnl   for the flags needed by your combination of Boost and Dakota
+		dnl   versions
+		dnl - We know $DAKOTA_ROOT cannot be empty at this point, so no need to
+		dnl   check again in the following conditionals
+		dnl
+		dnl TODO:
+		dnl - Should we also be checking if HAVE_BOOST before adding boost libs?
+		dnl - Clean up the following conditionals
+		dnl
+		case "${host_os}" in
+			*cygwin*)
+				if test "${DAKOTA_VERSION}" == "5.1" || test "${DAKOTA_VERSION}" == "5.2"; then
+					DAKOTALIB="-L${DAKOTA_ROOT}/lib -L${BOOST_ROOT}/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem"
+				elif test "${DAKOTA_VERSION}" == "6.1" || test "${DAKOTA_VERSION}" == "6.2"; then
+					DAKOTAFLAGS="-DDISABLE_DAKOTA_CONFIG_H -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION -DDAKOTA_PLUGIN -DBOOST_DISABLE_ASSERTS -DDAKOTA_HAVE_BOOST_FS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DDAKOTA_COLINY -DDAKOTA_UTILIB -DHAVE_ADAPTIVE_SAMPLING -DHAVE_CONMIN -DDAKOTA_DDACE -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_JEGA -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
+					DAKOTALIB="-L${DAKOTA_ROOT}/lib -L${BOOST_ROOT}/lib -ldakota_src -ldream -lfsudace -lddace -lnomad -lpecos_src -lscolib -ljega_fe -llhs -lpebbl -lcolin -linterfaces -llhs_mods -lmoga -loptpp -lsoga -lsurfpack -lutilib -lconmin -ldakota_src_fortran -llhs_mod -lncsuopt -lsurfpack_fortran -lteuchos -l3po -lamplsolver -lcport -ldfftpack -leutils -lfsudace -lhopspack -ljega -lnidr -lpecos -lpsuade -ltinyxml -lutilities -lsparsegrid -lboost_serialization -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
+					AC_DEFINE([DISABLE_DAKOTA_CONFIG_H], [1], [enabling DAKOTA_CONFIG_H])
+					AC_DEFINE([DAKOTA_HAVE_MPI], [1], [enabling parallel MPI])
+				else
+					AC_MSG_ERROR([Dakota version not found or version (${DAKOTA_VERSION}) not supported!]);
+				fi
+			;;
+			*darwin*)
+				if test "${DAKOTA_VERSION}" == "5.1" || test "${DAKOTA_VERSION}" == "5.2"; then
+					DAKOTALIB="-L${DAKOTA_ROOT}/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem -lboost_system -ldl"
+				elif test "${DAKOTA_VERSION}" == "5.3" || test "${DAKOTA_VERSION}" == "5.3.1"; then
+					DAKOTAFLAGS="-DDISABLE_DAKOTA_CONFIG_H -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION -DDAKOTA_PLUGIN -DBOOST_DISABLE_ASSERTS -DDAKOTA_HAVE_BOOST_FS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DDAKOTA_COLINY -DDAKOTA_UTILIB -DHAVE_ADAPTIVE_SAMPLING -DHAVE_CONMIN -DDAKOTA_DDACE -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_JEGA -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
+					DAKOTALIB="-L${DAKOTA_ROOT}/lib -L${BOOST_ROOT}/lib -ldakota_src -lpecos_src -lscolib -ljega_fe -llhs -lpebbl -lcolin -linterfaces -lmods -lmoga -loptpp -lsampling -lsoga -lsurfpack -lutilib -lconmin -ldakota_src_fortran -lmod -lncsuopt -lsurfpack_fortran -lteuchos -l3po -lamplsolver -lanalyzer -lbose -lcport -ldace -ldfftpack -leutils -lfsudace -lhopspack -ljega -lnidr -lpecos -lpsuade -lrandom -ltinyxml -lutilities -lsparsegrid -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
+					AC_DEFINE([DISABLE_DAKOTA_CONFIG_H], [1], [enabling DAKOTA_CONFIG_H])
+					AC_DEFINE([DAKOTA_HAVE_MPI], [1], [enabling Dakota with MPI])
+				elif test "${DAKOTA_VERSION}" == "6.1" || test "${DAKOTA_VERSION}" == "6.2"; then
+					if test "${BOOST_VERSION_MAJOR}" == "1"; then
+						DAKOTAFLAGS="-DHAVE_CONFIG_H -DDISABLE_DAKOTA_CONFIG_H -DBOOST_DISABLE_ASSERTS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DHAVE_ADAPTIVE_SAMPLING -DHAVE_ESM -DHAVE_QUESO -DHAVE_QUESO_GPMSA -DHAVE_CONMIN -DHAVE_DDACE -DHAVE_DREAM -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_NOMAD -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
+						DAKOTALIB="-L${DAKOTA_ROOT}/lib -ldakota_src -ldakota_src_fortran -lnidr -lteuchos -lpecos -lpecos_src -llhs -llhs_mods -llhs_mod -ldfftpack -lsparsegrid -lsurfpack -lsurfpack -lsurfpack_fortran -lqueso -lconmin -lddace -ldream -lfsudace -lhopspack -lncsuopt -lcport -lnomad -loptpp -lpsuade -lamplsolver"
+						DAKOTALIB+=" -L${BOOST_ROOT}/lib -lboost_filesystem -lboost_program_options -lboost_regex -lboost_serialization -lboost_system"
+						DAKOTALIB+=" ${BLASLAPACKLIB}"
+					fi
+					AC_DEFINE([DISABLE_DAKOTA_CONFIG_H], [1], [enabling DAKOTA_CONFIG_H])
+					AC_DEFINE([DAKOTA_HAVE_MPI], [1], [enabling Dakota with MPI])
+				elif test "${DAKOTA_VERSION}" == "6.11"; then
+					if test "${BOOST_VERSION_MAJOR}" == "1"; then
+						if test "${BOOST_VERSION_MINOR}" == "55"; then
+							DAKOTAFLAGS="-DDISABLE_DAKOTA_CONFIG_H -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION -DDAKOTA_PLUGIN -DBOOST_DISABLE_ASSERTS -DDAKOTA_HAVE_BOOST_FS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DDAKOTA_UTILIB -DHAVE_ADAPTIVE_SAMPLING -DHAVE_CONMIN -DDAKOTA_DDACE -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
+							DAKOTALIB="-L${DAKOTA_ROOT}/lib -ldakota_src -ldream -lfsudace -lddace -lnomad -lpecos_src -llhs -llhs_mods -loptpp -lsurfpack -lconmin -ldakota_src_fortran -llhs_mod -lncsuopt -lsurfpack_fortran -lteuchos -lamplsolver -lcport -ldfftpack -lfsudace -lhopspack -lnidr -lpecos -lpsuade -lsparsegrid -L$BOOST_ROOT/lib -lboost_serialization -lboost_signals -lboost_regex -lboost_filesystem -lboost_system ${BLASLAPACKLIB}"
+						elif test "${BOOST_VERSION_MINOR}" == "72"; then
+							DAKOTAFLAGS="-DHAVE_CONFIG_H -DDISABLE_DAKOTA_CONFIG_H -DBOOST_DISABLE_ASSERTS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DHAVE_ADAPTIVE_SAMPLING -DHAVE_ESM -DHAVE_CONMIN -DHAVE_DDACE -DHAVE_DREAM -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_NOMAD -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
+							DAKOTALIB="-L${DAKOTA_ROOT}/lib -ldakota_src -ldakota_src_fortran -lnidr -lteuchosremainder -lteuchosnumerics -lteuchoscomm -lteuchosparameterlist -lteuchosparser -lteuchoscore -lpecos_util -lpecos_src -llhs -llhs_mods -llhs_mod -ldfftpack -lsparsegrid -lsurfpack -lsurfpack -lsurfpack_fortran -lapproxnn -lconmin -lddace -ldream -lfsudace -lhopspack -lncsuopt -lcport -lnomad -loptpp -lpsuade -lamplsolver -L${BOOST_ROOT}/lib -lboost_filesystem -lboost_program_options -lboost_regex -lboost_serialization -lboost_system ${BLASLAPACKLIB}"
+						fi
+					fi
+					AC_DEFINE([DISABLE_DAKOTA_CONFIG_H], [1], [enabling DAKOTA_CONFIG_H])
+					AC_DEFINE([DAKOTA_HAVE_MPI], [1], [enabling Dakota with MPI])
+				else
+					AC_MSG_ERROR([Dakota version not found or version (${DAKOTA_VERSION}) not supported!]);
+				fi
+			;;
+			*linux*)
+				if test "${DAKOTA_VERSION}" == "5.1" || test "${DAKOTA_VERSION}" == "5.2"; then
+					DAKOTALIB="-L${DAKOTA_ROOT}/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem -lboost_system -ldl"
+				elif test "${DAKOTA_VERSION}" == "5.3" || test "${DAKOTA_VERSION}" == "5.3.1"; then
+					DAKOTAFLAGS="-DDISABLE_DAKOTA_CONFIG_H -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION -DDAKOTA_PLUGIN -DBOOST_DISABLE_ASSERTS -DDAKOTA_HAVE_BOOST_FS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DDAKOTA_COLINY -DDAKOTA_UTILIB -DHAVE_ADAPTIVE_SAMPLING -DHAVE_CONMIN -DDAKOTA_DDACE -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_JEGA -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
+					DAKOTALIB="-L${DAKOTA_ROOT}/lib -L${BOOST_ROOT}/lib -ldakota_src -lpecos_src -lscolib -ljega_fe -llhs -lpebbl -lcolin -linterfaces -lmods -lmoga -loptpp -lsampling -lsoga -lsurfpack -lutilib -lconmin -ldakota_src_fortran -lmod -lncsuopt -lsurfpack_fortran -lteuchos -l3po -lamplsolver -lanalyzer -lbose -lcport -ldace -ldfftpack -leutils -lfsudace -lhopspack -ljega -lnidr -lpecos -lpsuade -lrandom -ltinyxml -lutilities -lsparsegrid -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
+					AC_DEFINE([DISABLE_DAKOTA_CONFIG_H], [1], [enabling DAKOTA_CONFIG_H])
+					AC_DEFINE([DAKOTA_HAVE_MPI], [1], [enabling Dakota with MPI])
+				elif test "${DAKOTA_VERSION}" == "6.1" || test "${DAKOTA_VERSION}" == "6.2"; then
+					if test "${BOOST_VERSION_MAJOR}" == "1"; then
+						DAKOTAFLAGS="-DHAVE_CONFIG_H -DDISABLE_DAKOTA_CONFIG_H -DBOOST_DISABLE_ASSERTS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DHAVE_ADAPTIVE_SAMPLING -DHAVE_ESM -DHAVE_QUESO -DHAVE_QUESO_GPMSA -DHAVE_CONMIN -DHAVE_DDACE -DHAVE_DREAM -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_NOMAD -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
+						DAKOTALIB="-L${DAKOTA_ROOT}/lib -ldakota_src -ldakota_src_fortran -lnidr -lteuchos -lpecos -lpecos_src -llhs -llhs_mods -llhs_mod -ldfftpack -lsparsegrid -lsurfpack -lsurfpack -lsurfpack_fortran -lqueso -lconmin -lddace -ldream -lfsudace -lhopspack -lncsuopt -lcport -lnomad -loptpp -lpsuade -lamplsolver"
+						DAKOTALIB+=" -L${BOOST_ROOT}/lib -lboost_filesystem -lboost_program_options -lboost_regex -lboost_serialization -lboost_system"
+						DAKOTALIB+=" ${BLASLAPACKLIB}"
+					fi
+					AC_DEFINE([DISABLE_DAKOTA_CONFIG_H], [1], [enabling DAKOTA_CONFIG_H])
+					AC_DEFINE([DAKOTA_HAVE_MPI], [1], [enabling Dakota with MPI])
+				elif test "${DAKOTA_VERSION}" == "6.11"; then
+					if test "${BOOST_VERSION_MAJOR}" == "1"; then
+						if test "${BOOST_VERSION_MINOR}" == "55"; then
+							DAKOTAFLAGS="-DDISABLE_DAKOTA_CONFIG_H -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION -DDAKOTA_PLUGIN -DBOOST_DISABLE_ASSERTS -DDAKOTA_HAVE_BOOST_FS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DDAKOTA_UTILIB -DHAVE_ADAPTIVE_SAMPLING -DHAVE_CONMIN -DDAKOTA_DDACE -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
+							DAKOTALIB="-L${DAKOTA_ROOT}/lib -ldakota_src -ldream -lfsudace -lddace -lnomad -lpecos_src -llhs -llhs_mods -loptpp -lsurfpack -lconmin -ldakota_src_fortran -llhs_mod -lncsuopt -lsurfpack_fortran -lteuchos -lamplsolver -lcport -ldfftpack -lfsudace -lhopspack -lnidr -lpecos -lpsuade -lsparsegrid -L$BOOST_ROOT/lib -lboost_serialization -lboost_signals -lboost_regex -lboost_filesystem -lboost_system ${BLASLAPACKLIB}"
+						elif test "${BOOST_VERSION_MINOR}" == "72"; then
+							DAKOTAFLAGS="-DHAVE_CONFIG_H -DHAVE_CONFIG_H -DDISABLE_DAKOTA_CONFIG_H -DBOOST_DISABLE_ASSERTS -DHAVE_UNISTD_H -DHAVE_SYSTEM -DHAVE_WORKING_FORK -DHAVE_WORKING_VFORK -DHAVE_SYS_WAIT_H -DHAVE_USLEEP -DDAKOTA_F90 -DDAKOTA_HAVE_MPI -DHAVE_PECOS -DHAVE_SURFPACK -DHAVE_ADAPTIVE_SAMPLING -DHAVE_ESM -DHAVE_CONMIN -DHAVE_DDACE -DHAVE_DREAM -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_NOMAD -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
+							DAKOTALIB="-L${DAKOTA_ROOT}/lib -ldakota_src -ldakota_src_fortran -lnidr -lteuchosremainder -lteuchosnumerics -lteuchoscomm -lteuchosparameterlist -lteuchosparser -lteuchoscore -lpecos_util -lpecos_src -llhs -llhs_mods -llhs_mod -ldfftpack -lsparsegrid -lsurfpack -lsurfpack -lsurfpack_fortran -lapproxnn -lconmin -lddace -ldream -lfsudace -lhopspack -lncsuopt -lcport -lnomad -loptpp -lpsuade -lamplsolver -L${BOOST_ROOT}/lib -lboost_filesystem -lboost_program_options -lboost_regex -lboost_serialization -lboost_system ${BLASLAPACKLIB}"
+						fi
+					fi
+					AC_DEFINE([DISABLE_DAKOTA_CONFIG_H], [1], [enabling DAKOTA_CONFIG_H])
+					AC_DEFINE([DAKOTA_HAVE_MPI], [1], [enabling Dakota with MPI])
+				else
+					AC_MSG_ERROR([Dakota version not found or version (${DAKOTA_VERSION}) not supported!]);
+				fi
+			;;
+		esac
+
+		case ${DAKOTA_VERSION} in
+			@<:@1-9@:>@*.@<:@0-9@:>@*.@<:@0-9@:>@*)
+				DAKOTA_MAJOR=`echo ${DAKOTA_VERSION} | sed -e 's/^\(@<:@0-9@:>@*\)\..*/\1/'`
+				DAKOTA_MINOR=`echo ${DAKOTA_VERSION} | sed -e 's/^@<:@0-9@:>@*\.\(@<:@0-9@:>@*\)\..*/\1/'`
+				DAKOTA_BUILD=`echo ${DAKOTA_VERSION} | sed -e 's/^@<:@0-9@:>@*\.@<:@0-9@:>@*\.\(@<:@0-9@:>@*\).*/\1/'`
+			;;
+			@<:@1-9@:>@*.@<:@0-9@:>@*)
+				DAKOTA_MAJOR=`echo ${DAKOTA_VERSION} | sed -e 's/^\(@<:@0-9@:>@*\)\..*/\1/'`
+				DAKOTA_MINOR=`echo ${DAKOTA_VERSION} | sed -e 's/^@<:@0-9@:>@*\.\(@<:@0-9@:>@*\).*/\1/'`
+				DAKOTA_BUILD=0
+			;;
+			*)
+				AC_MSG_ERROR([Dakota version (${DAKOTA_VERSION}) not supported!])
+			;;
+		esac
+		AC_MSG_CHECKING(for Dakota major version)
+		AC_MSG_RESULT(${DAKOTA_MAJOR})
+		AC_DEFINE_UNQUOTED([_DAKOTA_MAJOR_], ${DAKOTA_MAJOR}, [Dakota major version number])
+		AC_MSG_CHECKING(for Dakota minor version)
+		AC_MSG_RESULT(${DAKOTA_MINOR})
+		AC_DEFINE_UNQUOTED([_DAKOTA_MINOR_], ${DAKOTA_MINOR}, [Dakota minor version number])
+		AC_MSG_CHECKING(for Dakota build version)
+		AC_MSG_RESULT(${DAKOTA_BUILD})
+		AC_DEFINE_UNQUOTED([_DAKOTA_BUILD_], ${DAKOTA_BUILD}, [Dakota build version number])
+
+		AC_DEFINE([_HAVE_DAKOTA_], [1], [with Dakota in ISSM src])
+		AC_SUBST([DAKOTAINCL])
+		AC_SUBST([DAKOTAFLAGS])
+		AC_SUBST([DAKOTALIB])
+	fi
+	AM_CONDITIONAL([ISSM_DAKOTA], [test "x${DAKOTA_MAJOR}" == "x6"])
+	dnl }}}
+	dnl Python{{{
+	AC_MSG_CHECKING([for Python])
+	AC_ARG_WITH(
+		[python-dir],
+		AS_HELP_STRING([--with-python-dir=DIR], [Python root directory]),
+		[PYTHON_ROOT=${withval}],
+		[PYTHON_ROOT="no"]
+	)
+
+	AC_ARG_WITH(
+		[python-version],
+		AS_HELP_STRING([--with-python-version=DIR], [Python forced version]),
+		[PYTHON_VERSION=${withval}],
+		[PYTHON_VERSION="no"]
+	)
+	if test "x${PYTHON_ROOT}" == "xno"; then
+		HAVE_PYTHON=no
+		HAVE_PYTHON3=no
+	else
+		HAVE_PYTHON=yes
+		if ! test -d "${PYTHON_ROOT}"; then
+			AC_MSG_ERROR([Python directory provided (${PYTHON_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_PYTHON}])
+	AM_CONDITIONAL([PYTHON], [test "x${HAVE_PYTHON}" == "xyes"])
+
+	dnl Python specifics
+	if test "x${HAVE_PYTHON}" == "xyes"; then
+		if test "x${PYTHON_VERSION}" == "xno"; then
+			AC_MSG_CHECKING([for Python version])
+			dnl Query Python for its version number. Getting [:3] seems to be
+			dnl the best way to do this: it's what "site.py" does in the
+			dnl standard library.
+			PYTHON_VERSION=$(${PYTHON_ROOT}/bin/python -c "import sys; print(sys.version[[:3]])")
+			AC_MSG_RESULT([${PYTHON_VERSION}])
+		else
+			AC_MSG_RESULT([enforced Python version is ${PYTHON_VERSION}])
+		fi
+		dnl Determine major version
+		PYTHON_MAJOR=${PYTHON_VERSION%.*}
+		AC_DEFINE_UNQUOTED([_PYTHON_MAJOR_], ${PYTHON_MAJOR}, [Python version major])
+		if test "x${PYTHON_MAJOR}" == "x3"; then
+			HAVE_PYTHON3="yes"
+		else
+			HAVE_PYTHON3="no"
+		fi
+
+		AC_MSG_CHECKING([for Python header file Python.h])
+		dnl Python.h might be in different locations:
+		if test -f "${PYTHON_ROOT}/include/Python.h"; then
+			PYTHONINCL=-I${PYTHON_ROOT}/include
+		elif test -f "${PYTHON_ROOT}/include/python${PYTHON_VERSION}/Python.h"; then
+			PYTHONINCL=-I${PYTHON_ROOT}/include/python${PYTHON_VERSION}
+		elif test -f "${PYTHON_ROOT}/include/python${PYTHON_VERSION}m/Python.h"; then
+			PYTHONINCL=-I${PYTHON_ROOT}/include/python${PYTHON_VERSION}m
+		else
+			AC_MSG_ERROR([Python.h not found! Please locate this file and contact ISSM developers via forum or email.]);
+		fi
+		AC_MSG_RESULT([found])
+
+		AC_MSG_CHECKING([for Python library libpython])
+		if ls ${PYTHON_ROOT}/lib/x86_64-linux-gnu/libpython${PYTHON_VERSION}m.* 1> /dev/null 2>&1; then
+			PYTHONLIB="-L${PYTHON_ROOT}/lib/x86_64-linux-gnu -lpython${PYTHON_VERSION}m"
+		elif ls ${PYTHON_ROOT}/lib/x86_64-linux-gnu/libpython${PYTHON_VERSION}.* 1> /dev/null 2>&1; then
+			PYTHONLIB="-L${PYTHON_ROOT}/lib/x86_64-linux-gnu -lpython${PYTHON_VERSION}"
+		elif ls ${PYTHON_ROOT}/lib/libpython${PYTHON_VERSION}m.* 1> /dev/null 2>&1; then
+			PYTHONLIB="-L${PYTHON_ROOT}/lib -lpython${PYTHON_VERSION}m"
+		elif ls ${PYTHON_ROOT}/lib/libpython${PYTHON_VERSION}.* 1> /dev/null 2>&1; then
+			PYTHONLIB="-L${PYTHON_ROOT}/lib -lpython${PYTHON_VERSION}"
+		elif ls ${PYTHON_ROOT}/lib64/libpython${PYTHON_VERSION}m.* 1> /dev/null 2>&1; then
+			PYTHONLIB="-L${PYTHON_ROOT}/lib64 -lpython${PYTHON_VERSION}m"
+		elif ls ${PYTHON_ROOT}/lib64/libpython${PYTHON_VERSION}.* 1> /dev/null 2>&1; then
+			PYTHONLIB="-L${PYTHON_ROOT}/lib64 -lpython${PYTHON_VERSION}"
+		else
+			AC_MSG_ERROR([libpython not found! Please locate this file and contact ISSM developers via forum or email.]);
+		fi
+		AC_MSG_RESULT([found])
+
+		PYWRAPPEREXT=.so
+		case "${host_os}" in
+			*cygwin*)
+				PYTHONLINK="-shared"
+			;;
+			*darwin*)
+				PYTHONLINK="-dynamiclib"
+			;;
+			*linux*)
+				PYTHONLINK="-shared"
+			;;
+			*mingw*)
+				PYTHONLINK="-shared"
+			;;
+			*msys*)
+				PYTHONLINK="-shared"
+			;;
+		esac
+		AC_DEFINE([_HAVE_PYTHON_], [1], [with Python in ISSM src])
+		AC_SUBST([PYTHONINCL])
+		AC_SUBST([PYTHONLIB])
+		PYTHONWRAPPEREXT=${PYWRAPPEREXT}
+		AC_SUBST([PYTHONWRAPPEREXT])
+		AC_SUBST([PYTHONLINK])
+	fi
+	AM_CONDITIONAL([PYTHON3], [test "x${HAVE_PYTHON3}" == "xyes"])
+	dnl }}}
+	dnl NumPy{{{
+	dnl NOTE: You can find NumPy by running,
+	dnl
+	dnl		>>> import numpy
+	dnl		>>> numpy.__file__
+	dnl
+	dnl TODO:
+	dnl - Replace references to python-numpy with numpy (and similar terms)
+	dnl	  project-wide
+	dnl
+	AC_MSG_CHECKING(for python-numpy)
+	AC_ARG_WITH(
+		[python-numpy-dir],
+		AS_HELP_STRING([--with-python-numpy-dir=DIR], [python-numpy root directory]),
+		[PYTHON_NUMPY_ROOT=${withval}],
+		[PYTHON_NUMPY_ROOT="no"]
+	)
+	if test "x${PYTHON_NUMPY_ROOT}" == "xno"; then
+		HAVE_PYTHON_NUMPY=no
+	else
+		HAVE_PYTHON_NUMPY=yes
+		if ! test -d "${PYTHON_NUMPY_ROOT}"; then
+			AC_MSG_ERROR([NumPy directory provided (${PYTHON_NUMPY_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_PYTHON_NUMPY}])
+
+	dnl NumPy libraries and header files
+	if test "x${HAVE_PYTHON_NUMPY}" == "xyes"; then
+		PYTHON_NUMPYINCL="-I${PYTHON_NUMPY_ROOT} -I${PYTHON_NUMPY_ROOT}/core/include/numpy"
+		AC_DEFINE([_HAVE_PYTHON_NUMPY_], [1], [with NumPy in ISSM src])
+		AC_SUBST([PYTHON_NUMPYINCL])
+	fi
+	dnl }}}
+	dnl Chaco{{{
+	AC_MSG_CHECKING([for Chaco])
+	AC_ARG_WITH(
+		[chaco-dir],
+		AS_HELP_STRING([--with-chaco-dir=DIR], [Chaco root directory]),
+		[CHACO_ROOT=${withval}],
+		[CHACO_ROOT="no"]
+	)
+	if test "x${CHACO_ROOT}" == "xno"; then
+		HAVE_CHACO=no
+	else
+		HAVE_CHACO=yes
+		if ! test -d "${CHACO_ROOT}"; then
+			AC_MSG_ERROR([Chaco directory provided (${CHACO_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_CHACO}])
+	AM_CONDITIONAL([CHACO], [test "x${HAVE_CHACO}" == "xyes"])
+
+	dnl Chaco libraries and header files
+	if test "x${HAVE_CHACO}" == "xyes"; then
+		CHACOINCL="-I${CHACO_ROOT}/include"
+		if test "${IS_MSYS2}" == "yes"; then
+			CHACOLIB="-Wl,-L${CHACO_ROOT}/lib -Wl,-lchacominusblas"
+		else
+			CHACOLIB="-L${CHACO_ROOT}/lib -lchacominusblas"
+		fi
+		AC_DEFINE([_HAVE_CHACO_], [1], [with Chaco in ISSM src])
+		AC_SUBST([CHACOINCL])
+		AC_SUBST([CHACOLIB])
+	fi
+	dnl }}}
+	dnl ESMF{{{
+	AC_MSG_CHECKING([for ESMF])
+	AC_ARG_WITH(
+		[esmf-dir],
+		AS_HELP_STRING([--with-esmf-dir=DIR], [ESMF root directory]),
+		[ESMF_ROOT=${withval}],
+		[ESMF_ROOT="no"]
+	)
+	if test "x${ESMF_ROOT}" == "xno"; then
+		HAVE_ESMF=no
+	else
+		HAVE_ESMF=yes
+		if ! test -d "${ESMF_ROOT}"; then
+			AC_MSG_ERROR([ESMF directory provided (${ESMF_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_ESMF}])
+
+	dnl ESMF libraries and header files
+	if test "x${HAVE_ESMF}" == "xyes"; then
+		ESMFINCL="-I${ESMF_ROOT}/include"
+		ESMFLIB="-L${ESMF_ROOT}/lib/libO/Linux.gfortran.64.mpich.default/ -lesmf"
+		AC_DEFINE([_HAVE_ESMF_], [1], [with ESMF in ISSM src])
+		AC_SUBST([ESMFINCL])
+		AC_SUBST([ESMFLIB])
+	fi
+	AM_CONDITIONAL([ESMF], [test "x${HAVE_ESMF}" == "xyes"])
+	dnl }}}
+	dnl CoDiPack{{{
+	AC_MSG_CHECKING([for CoDiPack])
+	AC_ARG_WITH(
+		[codipack-dir],
+		AS_HELP_STRING([--with-codipack-dir=DIR], [CoDiPack root directory]),
+		[CODIPACK_ROOT=${withval}],
+		[CODIPACK_ROOT="no"]
+	)
+	if test "x${CODIPACK_ROOT}" == "xno"; then
+		HAVE_CODIPACK=no
+	else
+		HAVE_CODIPACK=yes
+		if ! test -d "${CODIPACK_ROOT}"; then
+			AC_MSG_ERROR([CoDiPack directory provided (${CODIPACK_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_CODIPACK}])
+
+	dnl CoDiPack libraries and header files
+	if test "x${HAVE_CODIPACK}" == "xyes"; then
+
+		AC_MSG_CHECKING(for CoDiPack version)
+		CODIPACK_MAJOR=`cat ${CODIPACK_ROOT}/include/codi.hpp | grep "#define CODI_MAJOR_VERSION" | sed 's/#define CODI_MAJOR_VERSION//' | sed 's/ //g'`
+		CODIPACK_MINOR=`cat ${CODIPACK_ROOT}/include/codi.hpp | grep "#define CODI_MINOR_VERSION" | sed 's/#define CODI_MINOR_VERSION//' | sed 's/ //g'`
+		if test -z "${CODIPACK_MAJOR}"; then
+			 CODIPACK_MAJOR=`cat ${CODIPACK_ROOT}/include/codi/configure.h | grep "#define CODI_MAJOR_VERSION" | sed 's/#define CODI_MAJOR_VERSION//' | sed 's/ //g'`
+			 CODIPACK_MINOR=`cat ${CODIPACK_ROOT}/include/codi/configure.h | grep "#define CODI_MINOR_VERSION" | sed 's/#define CODI_MINOR_VERSION//' | sed 's/ //g'`
+		fi
+		if test -z "${CODIPACK_MAJOR}"; then
+			AC_MSG_ERROR([Couldn't determine CoDiPack version])
+		fi
+		AC_DEFINE_UNQUOTED([_CODIPACK_MAJOR_], ${CODIPACK_MAJOR}, [CoDiPack version major])
+		AC_DEFINE_UNQUOTED([_CODIPACK_MINOR_], ${CODIPACK_MINOR}, [CoDiPack version minor])
+		AC_MSG_RESULT([${CODIPACK_MAJOR}.${CODIPACK_MINOR}])
+
+		CODIPACKINCL="-I${CODIPACK_ROOT}/include"
+		AC_DEFINE([_HAVE_CODIPACK_], [1], [with CoDiPack in ISSM src])
+		AC_DEFINE([_HAVE_AD_], [1], [with AD in ISSM src])
+		AC_SUBST([CODIPACKINCL])
+	fi
+	AM_CONDITIONAL([CODIPACK], [test "x${HAVE_CODIPACK}" == "xyes"])
+	AM_COND_IF(CODIPACK, [CXXFLAGS+=" -std=c++11"])
+	dnl }}}
+	dnl Tape Allocation {{{
+	AC_MSG_CHECKING(for tape allocation)
+	AC_ARG_ENABLE(
+		[tape-alloc],																dnl feature
+		AS_HELP_STRING([--enable-tape-alloc], [turn tape allocation support on]),
+		[enable_tape_alloc=${enableval}],
+		[enable_tape_alloc=no]
+	)
+	if test "x${enable_tape_alloc}" == "xyes"; then
+		AC_DEFINE([_AD_TAPE_ALLOC_], [1], [enable a priori tape allocation for AD])
+	fi
+	AC_MSG_RESULT([${enable_tape_alloc}])
+	dnl }}}
+	dnl ADOL-C {{{
+	AC_MSG_CHECKING([for ADOL-C])
+	AC_ARG_WITH(
+		[adolc-dir],
+		AS_HELP_STRING([--with-adolc-dir=DIR], [ADOL-C root directory]),
+		[ADOLC_ROOT=${withval}],
+		[ADOLC_ROOT="no"]
+	)
+	if test "x${ADOLC_ROOT}" == "xno"; then
+		HAVE_ADOLC=no
+	else
+		HAVE_ADOLC=yes
+		if ! test -d "${ADOLC_ROOT}"; then
+			AC_MSG_ERROR([ADOL-C directory provided (${ADOLC_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_ADOLC}])
+
+	dnl ADOL-C libraries and header files
+	if test "x${HAVE_ADOLC}" == "xyes"; then
+		ADOLCINCL="-I${ADOLC_ROOT}/include"
+		dnl ADOLCLIB="-L${ADOLC_ROOT}/lib64 -ladolc" used to be the path
+		ADOLCLIB="-L${ADOLC_ROOT}/lib -ladolc"
+		AC_DEFINE([_HAVE_ADOLC_], [1], [with ADOL-C in ISSM src])
+		AC_DEFINE([_HAVE_AD_], [1], [with AD in ISSM src])
+		AC_SUBST([ADOLCINCL])
+		AC_SUBST([ADOLCLIB])
+	fi
+	AM_CONDITIONAL([ADOLC], [test "x${HAVE_ADOLC}" == "xyes"])
+	AM_COND_IF(ADOLC, [CXXFLAGS+=" -std=c++11"])
+	dnl }}}
+	dnl ADOL-C version{{{
+	AC_MSG_CHECKING(for ADOL-C version)
+	AC_ARG_WITH(
+		[adolc-version],
+		AS_HELP_STRING([--with-adolc-version=number], [ADOL-C version]),
+		[ADOLC_VERSION=${withval}],
+		[ADOLC_VERSION=2]
+	)
+	AC_DEFINE_UNQUOTED([_ADOLC_VERSION_], ${ADOLC_VERSION}, [ADOL-C version])
+	AC_MSG_RESULT(${ADOLC_VERSION})
+	dnl }}}
+	dnl ADIC2 {{{
+	AC_MSG_CHECKING([for ADIC2])
+	AC_ARG_WITH(
+		[adic2-dir],
+		AS_HELP_STRING([--with-adic2-dir=DIR], [ADIC2 root directory]),
+		[ADIC2_ROOT=${withval}],
+		[ADIC2_ROOT="no"]
+	)
+	if test "x${ADIC2_ROOT}" == "xno"; then
+		HAVE_ADIC2=no
+	else
+		HAVE_ADIC2=yes
+		if ! test -d "${ADIC2_ROOT}"; then
+			AC_MSG_ERROR([ADIC2 directory provided (${ADIC2_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_ADIC2}])
+
+	dnl ADIC2 libraries and header files
+	if test "x${HAVE_ADIC2}" == "xyes"; then
+		ADIC2INCL="-DADIC2_DENSE -I${ADIC2_ROOT}/include -I${ADIC2_ROOT}/share/runtime_dense"
+		ADIC2LIB=""
+		AC_DEFINE([_HAVE_ADIC2_], [1], [with ADIC2 in ISSM src])
+		AC_SUBST([ADIC2INCL])
+		AC_SUBST([ADIC2LIB])
+	fi
+	AM_CONDITIONAL([ADIC2], [test "x${HAVE_ADIC2}" == "xyes"])
+	dnl }}}
+	dnl ATLAS {{{
+	AC_MSG_CHECKING(for ATLAS and CBLAS libraries)
+	AC_ARG_WITH(
+		[atlas-dir],
+		AS_HELP_STRING([--with-atlas-dir=DIR], [ATLAS root directory]),
+		[ATLAS_ROOT=${withval}],
+		[ATLAS_ROOT="no"]
+	)
+	if test "x${ATLAS_ROOT}" == "xno"; then
+		HAVE_ATLAS=no
+	else
+		HAVE_ATLAS=yes
+		if ! test -d "${ATLAS_ROOT}"; then
+			AC_MSG_ERROR([ATLAS directory provided (${ATLAS_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_ATLAS}])
+
+	dnl ATLAS libraries and header files
+	if test "x${HAVE_ATLAS}" == "xyes"; then
+		case "${host_os}" in
+			*cygwin*)
+				ATLASLIB="-L`cygpath -m ${ATLAS_ROOT}` -Wl,libatlas.lib  -Wl,libcblas.lib"
+			;;
+			*darwin*)
+				ATLASLIB="-L${ATLAS_ROOT}/lib -lcblas -latlas -lm"
+			;;
+			*linux*)
+				ATLASLIB="-L${ATLAS_ROOT}/lib -lcblas -latlas -lm"
+			;;
+			*mingw*)
+				ATLASLIB="-L${ATLAS_ROOT}/lib -lcblas -latlas -lm"
+			;;
+			*msys*)
+				ATLASLIB="-L${ATLAS_ROOT}/lib -lcblas -latlas -lm"
+			;;
+		esac
+		AC_DEFINE([_HAVE_ATLAS_], [1], [with ATLAS in ISSM src])
+		AC_SUBST([ATLASLIB])
+	fi
+	dnl }}}
+	dnl GSL{{{
+	AC_MSG_CHECKING([for GSL])
+	AC_ARG_WITH(
+		[gsl-dir],
+		AS_HELP_STRING([--with-gsl-dir=DIR], [GSL root directory]),
+		[GSL_ROOT=${withval}],
+		[GSL_ROOT="no"]
+	)
+	if test "x${GSL_ROOT}" == "xno"; then
+		HAVE_GSL=no
+	else
+		HAVE_GSL=yes
+		if ! test -d "${GSL_ROOT}"; then
+			AC_MSG_ERROR([GSL directory provided (${GSL_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_GSL}])
+
+	dnl GSL libraries and header files
+	if test "x${HAVE_GSL}" == "xyes"; then
+		GSLINCL="-I${GSL_ROOT}/include"
+		if test "x${HAVE_ATLAS}" == "xyes"; then
+			GSLLIB="-dy -L${GSL_ROOT}/lib -lgsl -L${ATLAS_ROOT}/lib -lcblas -latlas -lm"
+		else
+			GSLLIB="-L${GSL_ROOT}/lib -lgsl -lgslcblas -lm"
+		fi
+		AC_DEFINE([_HAVE_GSL_], [1], [with GSL in ISSM src])
+		AC_SUBST([GSLINCL])
+		AC_SUBST([GSLLIB])
+	fi
+	AM_CONDITIONAL([GSL], [test "x${HAVE_GSL}" == "xyes"])
+	dnl }}}
+	dnl AMPI (ADOL-C){{{
+	AC_MSG_CHECKING([for AMPI])
+	AC_ARG_WITH(
+		[ampi-dir],
+		AS_HELP_STRING([--with-ampi-dir=DIR], [Adjoinable MPI root directory]),
+		[AMPI_ROOT=${withval}],
+		[AMPI_ROOT="no"]
+	)
+	if test "x${AMPI_ROOT}" == "xno"; then
+		HAVE_AMPI=no
+	else
+		HAVE_AMPI=yes
+		if ! test -d "${AMPI_ROOT}"; then
+			AC_MSG_ERROR([AMPI directory provided (${AMPI_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_AMPI}])
+
+	dnl AMPI libraries and header files
+	if test "x${HAVE_AMPI}" == "xyes"; then
+		AMPIINCL="-I${AMPI_ROOT}/include"
+		if test "x${ADOLC_ROOT}" == "xno"; then
+			AC_MSG_ERROR([cannot run AMPI without ADOL-C]);
+		fi
+		dnl AMPILIB="-dy -L${AMPI_ROOT}/lib -lampiCommon -L${ADOLC_ROOT}/lib -ladolc -L${AMPI_ROOT}/lib -lampiCommon -lampiBookkeeping -lampiTape"
+		dnl AMPILIB="-dy -L${AMPI_ROOT}/lib  -L${ADOLC_ROOT}/lib -Wl,--start-group,-lampiCommon,-ladolc,-lampiCommon,-lampiBookkeeping,-lampiTape,-lampiPlainC,-lampiADtoolStubsST,--end-group"
+		dnl AMPILIB="-L${AMPI_ROOT}/lib  -L${ADOLC_ROOT}/lib -Wl,--start-group -lampiCommon -ladolc -lampiCommon -lampiBookkeeping -lampiTape -lampiPlainC -lampiADtoolStubsST -Wl,--end-group"
+		dnl AMPILIB="${AMPI_ROOT}/lib/libampiCommon.so ${ADOLC_ROOT}/lib/libadolc.so  ${AMPI_ROOT}/lib/libampiCommon.so ${AMPI_ROOT}/lib/libampiBookkeeping.so ${AMPI_ROOT}/lib/libampiTape.so ${AMPI_ROOT}/lib/libampiPlainC.so  ${AMPI_ROOT}/lib/libampiADtoolStubsST.so"
+		dnl AMPILIB="-dy -L${AMPI_ROOT}/lib  -L${ADOLC_ROOT}/lib -lampiCommon -ladolc -lampiCommon -lampiBookkeeping -lampiTape -lampiPlainC -lampiADtoolStubsST"
+		AMPILIB="-dy -L${AMPI_ROOT}/lib  -lampiCommon -lampiBookkeeping -lampiTape"
+		AC_DEFINE([_HAVE_AMPI_], [1], [with AMPI in ISSM src])
+		AC_SUBST([AMPIINCL])
+		AC_SUBST([AMPILIB])
+	fi
+	AM_CONDITIONAL([AMPI], [test "x${HAVE_AMPI}" == "xyes"])
+	dnl }}}
+	dnl Adjoint MPI (CoDiPack){{{
+	AC_MSG_CHECKING([for Adjoint MPI])
+	AC_ARG_WITH(
+		[adjointmpi-dir],
+		AS_HELP_STRING([--with-adjointmpi-dir=DIR], [Adjoint MPI root directory]),
+		[ADJOINTMPI_ROOT=${withval}],
+		[ADJOINTMPI_ROOT="no"]
+	)
+	if test "x${ADJOINTMPI_ROOT}" == "xno"; then
+		HAVE_ADJOINTMPI=no
+	else
+		HAVE_ADJOINTMPI=yes
+		if ! test -d "${ADJOINTMPI_ROOT}"; then
+			AC_MSG_ERROR([Adjoint MPI directory provided (${ADJOINTMPI_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_ADJOINTMPI}])
+
+	dnl Adjoint MPI libraries and header files
+	if test "x${HAVE_ADJOINTMPI}" == "xyes"; then
+		if test "x${CODIPACK_ROOT}" == "xno"; then
+			AC_MSG_ERROR([cannot run Adjoint MPI without CoDiPack]);
+		fi
+		ADJOINTMPIINCL="-I${ADJOINTMPI_ROOT}/include"
+		ADJOINTMPILIB="-L${ADJOINTMPI_ROOT}/lib  -lAMPI"
+		dnl Also set _HAVE_AMPI_, because the interface is (almost) the same as
+		dnl for AMPI
+		AC_DEFINE([_HAVE_AMPI_], [1], [with AMPI in ISSM src])
+		AC_DEFINE([_HAVE_ADJOINTMPI_], [1], [with Adjoint MPI in ISSM src])
+		AC_SUBST([ADJOINTMPIINCL])
+		AC_SUBST([ADJOINTMPILIB])
+	fi
+	AM_CONDITIONAL([ADJOINTMPI], [test "x${HAVE_ADJOINTMPI}" == "xyes"])
+	dnl }}}
+	dnl MeDiPack (CoDiPack, ADOL-C dev){{{
+	AC_MSG_CHECKING([for MeDiPack])
+	AC_ARG_WITH(
+		[medipack-dir],
+		AS_HELP_STRING([--with-medipack-dir=DIR], [MeDiPack root directory]),
+		[MEDIPACK_ROOT=${withval}],
+		[MEDIPACK_ROOT="no"]
+	)
+	if test "x${MEDIPACK_ROOT}" == "xno"; then
+		HAVE_MEDIPACK=no
+	else
+		HAVE_MEDIPACK=yes
+		if ! test -d "${MEDIPACK_ROOT}"; then
+			AC_MSG_ERROR([MeDiPack directory provided (${MEDIPACK_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_MEDIPACK}])
+
+	dnl MeDiPack libraries and header files
+	if test "x${HAVE_MEDIPACK}" == "xyes"; then
+		if test "x${CODIPACK_ROOT}" == "xno"; then
+			AC_MSG_ERROR([cannot run MeDiPack without CoDiPack]);
+		fi
+		MEDIPACKINCL="-I${MEDIPACK_ROOT}/include -I${MEDIPACK_ROOT}/src"
+		dnl Also set _HAVE_AMPI_, because the interface is (almost) the same as
+		dnl for AMPI
+		AC_DEFINE([_HAVE_AMPI_], [1], [with AMPI in ISSM src])
+		AC_DEFINE([_HAVE_MEDIPACK_], [1], [with MeDiPack in ISSM src])
+		AC_SUBST([MEDIPACKINCL])
+	fi
+	AM_CONDITIONAL([MEDIPACK], [test "x${HAVE_MEDIPACK}" == "xyes"])
+	dnl }}}
+	dnl HDF5 {{{
+	AC_MSG_CHECKING(for HDF5 libraries)
+	AC_ARG_WITH(
+		[hdf5-dir],
+		AS_HELP_STRING([--with-hdf5-dir=DIR], [HDF5 root directory]),
+		[HDF5_ROOT=${withval}],
+		[HDF5_ROOT="no"]
+	)
+	if test "x${HDF5_ROOT}" == "xno"; then
+		HAVE_HDF5=no
+	else
+		HAVE_HDF5=yes
+		if ! test -d "${HDF5_ROOT}"; then
+			AC_MSG_ERROR([HDF5 directory provided (${HDF5_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_HDF5}])
+
+	dnl HDF5 libraries and header files
+	dnl
+	dnl TODO: Add check for if we need to link to libhdf5_fortran and
+	dnl libhdf5hl_fortran, if and when necessary.
+	dnl
+	if test "x${HAVE_HDF5}" == "xyes"; then
+		case "${host_os}" in
+			*cygwin*)
+				HDF5LIB="-L`cygpath -m ${HDF5_ROOT}` -Wl,libhdf5.lib  -Wl,libhdf5_hl.lib"
+			;;
+			*darwin*)
+				HDF5LIB="-L${HDF5_ROOT}/lib -lhdf5 -lhdf5_hl"
+			;;
+			*linux*)
+				HDF5LIB="-L${HDF5_ROOT}/lib -lhdf5 -lhdf5_hl"
+			;;
+			*mingw*)
+				HDF5LIB="-L${HDF5_ROOT}/lib -lhdf5 -lhdf5_hl"
+			;;
+			*msys*)
+				HDF5LIB="-L${HDF5_ROOT}/lib -lhdf5 -lhdf5_hl"
+			;;
+		esac
+		AC_DEFINE([_HAVE_HDF5_], [1], [with HDF5 in ISSM src])
+		AC_SUBST([HDF5LIB])
+	fi
+	dnl }}}
+	dnl PETSc{{{
+	AC_MSG_CHECKING([for PETSc])
+	AC_ARG_WITH(
+		[petsc-dir],
+		AS_HELP_STRING([--with-petsc-dir=DIR], [PETSc root directory, necessary for parallel build]),
+		[PETSC_ROOT=${withval}],
+		[PETSC_ROOT="no"]
+	)
+	if test "x${PETSC_ROOT}" == "xno"; then
+		HAVE_PETSC=no
+	else
+		HAVE_PETSC=yes
+		if ! test -d "${PETSC_ROOT}"; then
+			AC_MSG_ERROR([PETSc directory provided (${PETSC_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_PETSC}])
+	AM_CONDITIONAL([PETSC], [test "x${HAVE_PETSC}" == "xyes"])
+
+	dnl PETSc libraries and header files
+	if test "x${HAVE_PETSC}" == "xyes"; then
+		if ! test -f "${PETSC_ROOT}/include/petscversion.h"; then
+			AC_MSG_ERROR([PETSc not instaled correctly: file (${PETSC_ROOT}/include/petscversion.h) does not exist!]);
+		fi
+
+		AC_MSG_CHECKING(for PETSc version)
+		PETSC_MAJOR=`cat ${PETSC_ROOT}/include/petscversion.h | grep "#define PETSC_VERSION_MAJOR" | sed 's/#define PETSC_VERSION_MAJOR//' | sed 's/ //g'`
+		PETSC_MINOR=`cat ${PETSC_ROOT}/include/petscversion.h | grep "#define PETSC_VERSION_MINOR" | sed 's/#define PETSC_VERSION_MINOR//' | sed 's/ //g'`
+		AC_DEFINE_UNQUOTED([_PETSC_MAJOR_], ${PETSC_MAJOR}, [PETSc version major])
+		AC_DEFINE_UNQUOTED([_PETSC_MINOR_], ${PETSC_MINOR}, [PETSc version minor])
+		AC_MSG_RESULT([${PETSC_MAJOR}.${PETSC_MINOR}])
+
+		AC_MSG_CHECKING(whether PETSc is the development version)
+		PETSC_RELEASE=`cat ${PETSC_ROOT}/include/petscversion.h | grep "#define PETSC_VERSION_RELEASE" | sed 's/#define PETSC_VERSION_RELEASE//' | sed 's/ //g'`
+		if test "${PETSC_RELEASE}" == "0"; then
+			AC_DEFINE([_HAVE_PETSCDEV_], [1], [with PETSc-dev])
+			AC_MSG_RESULT([yes])
+		else
+			AC_MSG_RESULT([no])
+		fi
+
+		AC_ARG_WITH(
+			[petsc-arch],
+			AS_HELP_STRING([--with-petsc-arch=DIR], [PETSc arch, necessary for PETSc < 3.0]),
+			[PETSC_ARCH=${withval}],
+			[PETSC_ARCH=""]
+		)
+
+		AC_MSG_CHECKING(for PETSc libraries and header files in ${PETSC_ROOT})
+		dnl To get PETSc's libraries,
+		dnl
+		dnl		cd $ISSM_DIR/externalpackages/petsc/src
+		dnl		make getlinklibs
+		dnl
+		PETSCINCL=" -I${PETSC_ROOT}/include"
+		dnl Add other location (not needed anymore since at least PETSc 3.0)
+		if test -n "${PETSC_ARCH}" && test -d "${PETSC_ROOT}/${PETSC_ARCH}/include"; then
+			PETSCINCL+=" ${PETSC_ROOT}/${PETSC_ARCH}/include"
+		fi
+		if test -n "${PETSC_ARCH}" && test -d "${PETSC_ROOT}/include/${PETSC_ARCH}"; then
+			PETSCINCL+=" ${PETSC_ROOT}/include/${PETSC_ARCH}"
+		fi
+
+		case "${host_os}" in
+			*cygwin*)
+				if test ${PETSC_MAJOR} -lt 3; then
+					PETSCLIB=-Wl,/LIBPATH:`cygpath -w ${PETSC_ROOT}/lib` -Wl,libpetscksp.lib  -Wl,libpetscdm.lib -Wl,libpetscmat.lib -Wl,libpetscvec.lib -Wl,libpetscsnes.lib  -Wl,libpetscts.lib -Wl,libmpiuni.lib -Wl,libpetsc.lib
+				else
+					PETSCLIB="/link -Wl,/LIBPATH:`cygpath -m ${PETSC_ROOT}/lib` -Wl,libpetsc.lib"
+					PETSCINCL="/I`cygpath -m ${PETSC_ROOT}/include`"
+				fi
+			;;
+			*darwin*)
+				if test ${PETSC_MAJOR} -lt 3; then
+					PETSCLIB="-L${PETSC_ROOT}/lib -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetscsnes -lpetscts -lpetsc"
+				else
+					PETSCLIB="-L${PETSC_ROOT}/lib -lpetsc"
+					if test ${PETSC_MAJOR} -gt 3 || test ${PETSC_MINOR} -ge 3; then
+						PETSCLIB+=" -lmetis"
+					fi
+				fi
+			;;
+			*linux*)
+				if test ${PETSC_MAJOR} -lt 3; then
+					PETSCLIB="-L${PETSC_ROOT}/lib -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetscsnes -lpetscts -lmpiuni -lpetsc"
+				else
+					PETSCLIB="-L${PETSC_ROOT}/lib -lpetsc -ldl"
+					if test ${PETSC_MAJOR} -gt 3 || test ${PETSC_MINOR} -ge 3; then
+						PETSCLIB+=" -lparmetis -lmetis"
+					fi
+				fi
+				if test "x$host_os_version" = "x3.0.101-0.31.1_1.0502.8394-cray_gem_s"; then
+					PETSCLIB="-L${PETSC_ROOT}/lib -lcraypetsc_gnu_real -lmetis"
+				fi
+				if test x$HOST = "xmaui01"; then
+					PETSCLIB="-L${PETSC_ROOT}/lib -lcraypetsc_intel_real -lmetis"
+				fi
+			;;
+			*mingw*)
+				PETSCLIB="-Wl,-L${PETSC_ROOT}/lib -Wl,-lpetsc"
+			;;
+			*msys*)
+				PETSCLIB="${PETSC_ROOT}/lib -lpetsc"
+			;;
+		esac
+		AC_MSG_RESULT([done])
+		AC_DEFINE([_HAVE_PETSC_], [1], [with PETSc in ISSM src])
+		AC_SUBST([PETSCINCL])
+		AC_SUBST([PETSCLIB])
+	fi
+	dnl }}}
+	dnl MPI{{{
+	AC_MSG_CHECKING(for MPI)
+	AC_ARG_WITH(
+		[mpi-include],
+		AS_HELP_STRING([--with-mpi-include=DIR], [MPI include directory, necessary for parallel build]),
+		[MPI_INCLUDE=${withval}],
+		[MPI_INCLUDE=""]
+	)
+	AC_ARG_WITH(
+		[mpi-libdir],
+		AS_HELP_STRING([--with-mpi-libdir=DIR], [MPI library directory, necessary for parallel build]),
+		[MPI_LIBDIR=${withval}],
+		[MPI_LIBDIR=""]
+	)
+	AC_ARG_WITH(
+		[mpi-libflags],
+		AS_HELP_STRING([--with-mpi-libflags=LIBS], [MPI libraries to be used, necessary for parallel build]),
+		[MPI_LIBFLAGS=${withval}],
+		[MPI_LIBFLAGS=""]
+	)
+	if test -z "${MPI_INCLUDE}"; then
+		HAVE_MPI=no
+	else
+		HAVE_MPI=yes
+
+		dnl Processing for Windows
+		dnl
+		dnl NOTE: We know $VENDOR cannot be empty at this point, so no need to
+		dnl		  check again in the following conditionals
+		dnl
+		if test "${VENDOR}" == "intel-win7-32"; then
+			MPI_LIBDIR=`cygpath -m ${MPI_LIBDIR}`
+			MPI_INCLUDE=`cygpath -m ${MPI_INCLUDE}`
+		elif test "${VENDOR}" == "intel-win7-64"; then
+			MPI_LIBDIR="/I`cygpath -m ${MPI_LIBDIR}`"
+			MPI_INCLUDE=`cygpath -m ${MPI_INCLUDE}`
+		elif test "${VENDOR}" == "MSVC-Win64" || test "${VENDOR}" == "MSVC-Win64-par"; then
+			MPI_LIBDIR=`cygpath -m ${MPI_LIBDIR}`
+			MPI_INCLUDE=`cygpath -m ${MPI_INCLUDE}`
+		fi
+
+		if test -z "${MPI_LIBDIR}"; then
+			MPILIB="${MPI_LIBFLAGS}"
+		else
+			MPILIB="${MPI_LIBDIR} ${MPI_LIBFLAGS}"
+		fi
+
+		if test "x${IS_WINDOWS}" == "xyes"; then
+			MPIINCL=/I"${MPI_INCLUDE}"
+		else
+			MPIINCL="-I${MPI_INCLUDE}"
+		fi
+
+		AC_DEFINE([_HAVE_MPI_], [1], [with MPI in ISSM src])
+		AC_DEFINE([HAVE_MPI], [1], [MPI flag for Dakota (DO NOT REMOVE)])
+		AC_SUBST([MPIINCL])
+		AC_SUBST([MPILIB])
+	fi
+	AM_CONDITIONAL([MPI], [test "x${HAVE_MPI}" == "xyes"])
+	AC_MSG_RESULT([${HAVE_MPI}])
+	dnl }}}
+	dnl SCOTCH{{{
+	AC_MSG_CHECKING([for SCOTCH])
+	AC_ARG_WITH(
+		[scotch-dir],
+		AS_HELP_STRING([--with-scotch-dir=DIR], [SCOTCH root directory]),
+		[SCOTCH_ROOT=$withval],
+		[SCOTCH_ROOT="no"]
+	)
+	if test "x${SCOTCH_ROOT}" == "xno"; then
+		HAVE_SCOTCH=no
+	else
+		HAVE_SCOTCH=yes
+		if ! test -d "${SCOTCH_ROOT}"; then
+			AC_MSG_ERROR([SCOTCH directory provided (${SCOTCH_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_SCOTCH}])
+	AM_CONDITIONAL([SCOTCH], [test "x${HAVE_SCOTCH}" == "xyes"])
+
+	dnl SCOTCH libraries and header files
+	if test "x${HAVE_SCOTCH}" == "xyes"; then
+		if test "x${SCOTCH_ROOT}" == "x${PETSC_ROOT}"; then
+			AC_DEFINE([_PETSC_SCOTCH_], [1], [is SCOTCH installed via PETSc])
+			SCOTCHINCL="-DNOFILEIO -I${SCOTCH_ROOT}/include -DSCOTCH_VERSION=\\\"UNKNOWN\\\""
+			SCOTCHLIB="-L${SCOTCH_ROOT}/lib -lnfioscotch -lnfioscotcherr -lnfioscotcherrexit "
+		else
+			SCOTCHINCL="-I${SCOTCH_ROOT}/include"
+			SCOTCHLIB="-L${SCOTCH_ROOT}/lib "
+			if test "x${HAVE_MPI}" == "xyes"; then
+				SCOTCHLIB+="-lptesmumps -lptscotch -lptscotcherr -lptscotcherrexit -lscotch"
+			else
+				SCOTCHLIB+="-lscotch -lscotcherr -lscotcherrexit"
+			fi
+		fi
+		AC_DEFINE([_HAVE_SCOTCH_], [1], [with SCOTCH in ISSM src])
+		AC_SUBST([SCOTCHINCL])
+		AC_SUBST([SCOTCHLIB])
+	fi
+	dnl }}}
+	dnl METIS{{{
+	AC_MSG_CHECKING([for METIS])
+	AC_ARG_WITH(
+		[metis-dir],
+		AS_HELP_STRING([--with-metis-dir=DIR], [METIS root directory, necessary for serial build]),
+		[METIS_ROOT=${withval}],
+		[METIS_ROOT="no"]
+	)
+	HAVE_METIS=no
+	if test "x${METIS_ROOT}" == "xno"; then
+		dnl Check if METIS was installed via PETSc
+		if test -f ${PETSC_ROOT}/install/include/metis.h; then
+			HAVE_METIS=yes
+			METIS_ROOT="${PETSC_ROOT}"
+		fi
+	else
+		if ! test -d "${METIS_ROOT}"; then
+			AC_MSG_ERROR([METIS directory provided (${METIS_ROOT}) does not exist!]);
+		fi
+		HAVE_METIS=yes
+	fi
+	if test "${HAVE_METIS}" = "yes"; then
+		METIS_VERSION=$(grep "#define METIS_VER_MAJOR" ${METIS_ROOT}/include/metis.h | sed 's|.*METIS_VER_MAJOR[[:space:]]*||')
+		dnl METIS libraries and header files
+		if test "x${METIS_VERSION}" == "x4"; then
+			METISINCL="-I${METIS_ROOT}/Lib"
+			case "${host_os}" in
+				*cygwin*)
+					METISINCL="/I`cygpath -m ${METIS_ROOT}/Lib`"
+					METISLIB="-Wl,/link -Wl,/LIBPATH:`cygpath -m ${METIS_ROOT}` -Wl,libmetis.lib"
+				;;
+				*darwin*)
+					METISLIB="-L${METIS_ROOT} -lmetis"
+				;;
+				*linux*)
+					METISLIB="-L${METIS_ROOT} -lmetis"
+				;;
+				*mingw*)
+					METISLIB="-Wl,-L${METIS_ROOT}/lib -Wl,-lmetis"
+				;;
+				*msys*)
+					METISLIB="-L${METIS_ROOT} -lmetis"
+				;;
+			esac
+		elif test "x${METIS_VERSION}" == "x5"; then
+			METISINCL="-I${METIS_ROOT}/include"
+			case "${host_os}" in
+				*cygwin*)
+					METISLIB="-L${METIS_ROOT} libmetis.lib"
+				;;
+				*darwin*)
+					METISLIB="-L${METIS_ROOT}/lib -lmetis"
+				;;
+				*linux*)
+					METISLIB="-L${METIS_ROOT}/lib -lmetis"
+				;;
+				*mingw*)
+					METISLIB="-Wl,-L${METIS_ROOT}/lib -Wl,-lmetis"
+				;;
+				*msys*)
+					METISLIB="-L${METIS_ROOT}/lib -lmetis"
+				;;
+			esac
+		else
+			AC_MSG_ERROR([METIS version ${METIS_VERSION} not yet supported! Please contact ISSM developers via forum or email.])
+		fi
+		AC_DEFINE([_HAVE_METIS_], [1], [with METIS in ISSM src])
+		AC_DEFINE_UNQUOTED([_METIS_VERSION_], ${METIS_VERSION}, [METIS version number])
+		AC_SUBST([METISINCL])
+		AC_SUBST([METISLIB])
+	fi
+	AC_MSG_RESULT([${HAVE_METIS}])
+	AM_CONDITIONAL([METIS], [test "x${HAVE_METIS}" = "xyes"])
+	dnl }}}
+	dnl ParMETIS{{{
+	AC_MSG_CHECKING([for ParMETIS])
+	AC_ARG_WITH(
+		[parmetis-dir],
+		AS_HELP_STRING([--with-parmetis-dir=DIR], [ParMETIS root directory, necessary for parallel build]),
+		[PARMETIS_ROOT=${withval}],
+		[PARMETIS_ROOT="no"]
+	)
+	HAVE_PARMETIS=no
+	if test "x${PARMETIS_ROOT}" == "xno"; then
+		dnl Check if ParMETIS was installed via PETSc
+		if test -f ${PETSC_ROOT}/install/include/parmetis.h; then
+			HAVE_PARMETIS="yes"
+			PARMETIS_ROOT="${PETSC_ROOT}"
+		fi
+	else
+		if ! test -d "${PARMETIS_ROOT}"; then
+			AC_MSG_ERROR([ParMETIS directory provided (${PARMETIS_ROOT}) does not exist!]);
+		fi
+		if ! test -d "${METIS_ROOT}"; then
+			AC_MSG_ERROR([If supplying path to ParMETIS with option --with-parmetis-dir, must also supply path to METIS with option --with-metis-dir]);
+		fi
+		HAVE_PARMETIS="yes"
+	fi
+	if test "${HAVE_PARMETIS}" == "yes"; then
+		#PARMETIS_VERSION=$(grep "#define PARMETIS_MAJOR_VERSION" ${PARMETIS_ROOT}/include/parmetis.h | sed 's|.*PARMETIS_MAJOR_VERSION[[:space:]]*||')
+		dnl METIS libraries and header files
+		#if test "x${PARMETIS_VERSION}" == "x4"; then
+			PARMETISINCL="-I${PARMETIS_ROOT}/include"
+			case "${host_os}" in
+				*cygwin*)
+					PARMETISLIB="-L${PARMETIS_ROOT}/lib -lparmetis"
+				;;
+				*darwin*)
+					PARMETISLIB="-L${PARMETIS_ROOT}/lib -lparmetis"
+				;;
+				*linux*)
+					PARMETISLIB="-L${PARMETIS_ROOT}/lib -lparmetis"
+				;;
+				*mingw*)
+					PARMETISLIB="-Wl,-L${PARMETIS_ROOT}/lib -Wl,-lparmetis"
+				;;
+			esac
+		#else
+		#	AC_MSG_ERROR([ParMETIS version ${PARMETIS_VERSION} not yet supported! Please contact ISSM developers via forum or email.])
+		#fi
+		AC_DEFINE([_HAVE_PARMETIS_], [1], [with ParMETIS in ISSM src])
+		#AC_DEFINE([_PARMETIS_VERSION_], [${PARMETIS_VERSION}], [ParMETIS version number])
+		AC_SUBST([PARMETISINCL])
+		AC_SUBST([PARMETISLIB])
+	fi
+	AC_MSG_RESULT([${HAVE_PARMETIS}])
+	AM_CONDITIONAL([PARMETIS], [test "x${HAVE_PARMETIS}" = "xyes"])
+	dnl }}}
+	dnl Toolkit for Advanced Optimization (TAO){{{
+	AC_MSG_CHECKING([for TAO])
+	AC_ARG_WITH(
+		[tao-dir],
+		AS_HELP_STRING([--with-tao-dir=DIR], [TAO root directory]),
+		[TAO_ROOT=${withval}],
+		[TAO_ROOT="no"]
+	)
+	if test "x${HAVE_PETSC}" == "xyes" && test "x${PETSC_MAJOR}" == "x3" && test ${PETSC_MINOR} -ge 5; then
+		dnl In PETSc >= 3.5, TAO is provided
+		HAVE_TAO="yes"
+		AC_DEFINE([_HAVE_TAO_], [1], [with TAO in ISSM src])
+		AC_MSG_RESULT([${HAVE_TAO}])
+	else
+		if test "x${TAO_ROOT}" == "xno"; then
+			HAVE_TAO=no
+		else
+			HAVE_TAO=yes
+			if ! test -d "${TAO_ROOT}"; then
+				AC_MSG_ERROR([TAO directory provided (${TAO_ROOT}) does not exist!]);
+			fi
+		fi
+		AC_MSG_RESULT([${HAVE_TAO}])
+
+		dnl TAO libraries and header files
+		if test "x${HAVE_TAO}" == "xyes"; then
+			TAOINCL="-I${TAO_ROOT} -I${TAO_ROOT}/include -I${TAO_ROOT}/bmake"
+			TAOLIB="-L${TAO_ROOT}/lib -ltao -lpetsc"
+			AC_DEFINE([_HAVE_TAO_], [1], [with Tao in ISSM src])
+			AC_SUBST([TAOINCL])
+			AC_SUBST([TAOLIB])
+		fi
+	fi
+	dnl }}}
+	dnl M1QN3{{{
+	AC_MSG_CHECKING([for M1QN3])
+	AC_ARG_WITH(
+		[m1qn3-dir],
+		AS_HELP_STRING([--with-m1qn3-dir=DIR], [M1QN3 root directory]),
+		[M1QN3_ROOT=${withval}],
+		[M1QN3_ROOT="no"]
+	)
+	if test "x${M1QN3_ROOT}" == "xno"; then
+		HAVE_M1QN3=no
+	else
+		HAVE_M1QN3=yes
+		if ! test -d "${M1QN3_ROOT}"; then
+			AC_MSG_ERROR([M1QN3 directory provided (${M1QN3_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_M1QN3}])
+
+	dnl M1QN3 libraries and header files
+	if test "x${HAVE_M1QN3}" == "xyes"; then
+		if test "${IS_MSYS2}" == "yes"; then
+			M1QN3LIB="-Wl,-L${M1QN3_ROOT} -Wl,-lm1qn3 -Wl,-lddot"
+		else
+			M1QN3LIB="${M1QN3_ROOT}/libm1qn3.a ${M1QN3_ROOT}/libddot.a"
+		fi
+		AC_DEFINE([_HAVE_M1QN3_], [1], [with M1QN3 in ISSM src])
+		AC_SUBST([M1QN3LIB])
+	fi
+	dnl }}}
+	dnl PROJ{{{
+	AC_MSG_CHECKING([for PROJ])
+	AC_ARG_WITH(
+		[proj-dir],
+		AS_HELP_STRING([--with-proj-dir=DIR], [PROJ root directory]),
+		[PROJ_ROOT=${withval}],
+		[PROJ_ROOT="no"]
+	)
+	if test "x${PROJ_ROOT}" == "xno"; then
+		HAVE_PROJ=no
+	else
+		HAVE_PROJ=yes
+		if ! test -d "${PROJ_ROOT}"; then
+			AC_MSG_ERROR([PROJ directory provided (${PROJ_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_PROJ}])
+
+	dnl PROJ libraries and header files
+	if test "x${HAVE_PROJ}" == "xyes"; then
+		PROJINCL="-I${PROJ_ROOT}/include"
+		PROJLIB="-L${PROJ_ROOT}/lib -lproj"
+		AC_DEFINE([_HAVE_PROJ_], [1], [with PROJ in ISSM src])
+		AC_SUBST([PROJINCL])
+		AC_SUBST([PROJLIB])
+	fi
+	AM_CONDITIONAL([PROJ], [test "x${HAVE_PROJ}" == "xyes"])
+	dnl }}}
+	dnl SLEPc{{{
+	AC_MSG_CHECKING([for SLEPc])
+	AC_ARG_WITH(
+		[slepc-dir],
+		AS_HELP_STRING([--with-slepc-dir=DIR], [SLEPc root directory]),
+		[SLEPC_ROOT=${withval}],
+		[SLEPC_ROOT="no"]
+	)
+	if test "x${SLEPC_ROOT}" == "xno"; then
+		HAVE_SLEPC=no
+	else
+		HAVE_SLEPC=yes
+		if ! test -d "${SLEPC_ROOT}"; then
+			AC_MSG_ERROR([SLEPc directory provided (${SLEPC_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_SLEPC}])
+
+	dnl SLEPc libraries and header files
+	if test "x${HAVE_SLEPC}" == "xyes"; then
+		SLEPCINCL="-I${SLEPC_ROOT}/include"
+		SLEPCLIB="-L${SLEPC_ROOT}/lib -lslepc"
+		AC_DEFINE([_HAVE_SLEPC_], [1], [with SLEPc in ISSM src])
+		AC_SUBST([SLEPCINCL])
+		AC_SUBST([SLEPCLIB])
+	fi
+	dnl }}}
+	dnl shapelib{{{
+	AC_MSG_CHECKING([for shapelib])
+	AC_ARG_WITH(
+		[shapelib-dir],
+		AS_HELP_STRING([--with-shapelib-dir=DIR], [shapelib root directory]),
+		[SHAPELIB_ROOT=${withval}],
+		[SHAPELIB_ROOT="no"]
+	)
+	if test "x${SHAPELIB_ROOT}" == "xno"; then
+		HAVE_SHAPELIB=no
+	else
+		HAVE_SHAPELIB=yes
+		if ! test -d "${SHAPELIB_ROOT}"; then
+			AC_MSG_ERROR([shapelib directory provided (${SHAPELIB_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_SHAPELIB}])
+
+	dnl shapelib libraries and header files
+	if test "x${HAVE_SHAPELIB}" == "xyes"; then
+		SHAPELIBINCL="-I${SHAPELIB_ROOT}/include"
+		if test -f "${SHAPELIB_ROOT}/lib/libshp.a"; then
+			SHAPELIBLIB="-L${SHAPELIB_ROOT}/lib -lshp"
+		else
+			SHAPELIBLIB="-L${SHAPELIB_ROOT}/lib -lshape"
+		fi
+		AC_DEFINE([_HAVE_SHAPELIB_], [1], [with shapelib in ISSM src])
+		AC_SUBST([SHAPELIBINCL])
+		AC_SUBST([SHAPELIBLIB])
+	fi
+	AM_CONDITIONAL([SHP], [test "x${HAVE_SHAPELIB}" == "xyes"])
+	dnl }}}
+	dnl ScaLAPACK{{{
+	dnl NOTE: User should supply path to root directory or libraries, but not both
+	dnl
+	AC_MSG_CHECKING([for ScaLAPACK])
+	AC_ARG_WITH(
+		[scalapack-dir],
+		AS_HELP_STRING([--with-scalapack-dir=DIR], [ScaLAPACK root directory]),
+		[SCALAPACK_ROOT=${withval}],
+		[SCALAPACK_ROOT="no"]
+	)
+	AC_ARG_WITH(
+		[scalapack-lib],
+		AS_HELP_STRING([--with-scalapack-lib=LIBS], [ScaLAPACK libraries to link to]),
+		[SCALAPACKLIB=${withval}],
+		[SCALAPACKLIB="no"]
+	)
+	if test "x${SCALAPACK_ROOT}" == "xno" && test "x${SCALAPACKLIB}" == "xno"; then
+		HAVE_SCALAPACK=no
+		SCALAPACKLIB=""
+	elif test "x${SCALAPACK_ROOT}" != "xno"; then
+		if ! test -d "${SCALAPACK_ROOT}"; then
+			AC_MSG_ERROR([ScaLAPACK directory provided (${SCALAPACK_ROOT}) does not exist!]);
+		fi
+		HAVE_SCALAPACK=yes
+		if test "${VENDOR}" == "win-msys2"; then
+			SCALAPACKLIB="-Wl,-L${SCALAPACK_ROOT}/lib -Wl,-lscalapack"
+		else
+			SCALAPACKLIB="-L${SCALAPACK_ROOT}/lib -lscalapack"
+		fi
+	elif test "x${SCALAPACKLIB}" != "xno"; then
+		dnl Value of SCALAPACKLIB should be valid here, so no need to set it (as above)
+		HAVE_SCALAPACK=yes
+	else
+		AC_MSG_ERROR([use --with-scalapack-dir or --with-scalapack-lib, but not both])
+	fi
+	AC_MSG_RESULT([${HAVE_SCALAPACK}])
+
+	dnl ScaLAPACK libraries and header files
+	if test "x${HAVE_SCALAPACK}" == "xyes"; then
+		AC_DEFINE([_HAVE_SCALAPACK_], [1], [with ScaLAPACK in ISSM src])
+		AC_SUBST([SCALAPACKLIB])
+	fi
+	dnl }}}
+	dnl BLAS/LAPACK{{{
+	AC_MSG_CHECKING([for BLAS/LAPACK])
+	AC_ARG_WITH(
+		[blas-dir],
+		[AS_HELP_STRING([--with-blas-dir=DIR], [BLAS root directory])],
+		[BLAS_ROOT=$withval],
+		[BLAS_ROOT="no"]
+	)
+	AC_ARG_WITH(
+		[lapack-dir],
+		[AS_HELP_STRING([--with-lapack-dir=DIR], [LAPACK root directory])],
+		[LAPACK_ROOT=$withval],
+		[LAPACK_ROOT="no"]
+	)
+	AC_ARG_WITH(
+		[blas-lapack-dir],
+		AS_HELP_STRING([--with-blas-lapack-dir=DIR], [BLAS/LAPACK root directory]),
+		[BLASLAPACK_ROOT=$withval],
+		[BLASLAPACK_ROOT="no"]
+	)
+	if (test "x${BLAS_ROOT}" = "xno" || test "x${LAPACK_ROOT}" = "xno") && test "x${BLASLAPACK_ROOT}" = "xno"; then
+		HAVE_BLASLAPACK=no
+	else
+		HAVE_BLASLAPACK=yes
+		if ! test -d "${BLAS_ROOT}" || ! test -d "${LAPACK_ROOT}"; then
+			if ! test -d "${BLASLAPACK_ROOT}"; then
+				AC_MSG_ERROR([Use either --with-blas-dir and --with-lapack-dir *or* --with-blaslapack-dir]);
+			fi
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_BLASLAPACK}])
+
+	dnl BLAS/LAPACK libraries and header files
+	if test "x${HAVE_BLASLAPACK}" == "xyes"; then
+		case "${host_os}" in
+			*cygwin*)
+				BLASLAPACKLIB="-L`cygpath -m ${BLASLAPACK_ROOT}` -Wl,libf2cblas.lib  -Wl,libf2clapack.lib"
+			;;
+			*darwin*)
+				BLASLAPACKLIB="-L${BLASLAPACK_ROOT}/lib"
+				if ls ${BLASLAPACK_ROOT}/lib/libopenblas.* 1> /dev/null 2>&1; then
+					BLASLAPACKLIB+=" -lopenblas"
+				elif ls ${BLASLAPACK_ROOT}/lib/libf2clapack.* 1> /dev/null 2>&1; then
+					BLASLAPACKLIB+=" -lf2clapack -lf2cblas"
+				elif ls ${BLASLAPACK_ROOT}/lib/libflapack.* 1> /dev/null 2>&1; then
+					BLASLAPACKLIB+=" -lflapack -lfblas"
+				else
+					BLASLAPACKLIB+=" -llapack -lblas"
+				fi
+			;;
+			*linux*)
+				BLASLAPACKLIB="-L${BLASLAPACK_ROOT}/lib"
+				if ls ${BLASLAPACK_ROOT}/lib/libopenblas.* 1> /dev/null 2>&1; then
+					BLASLAPACKLIB+=" -lopenblas"
+				elif ls ${BLASLAPACK_ROOT}/lib/libf2clapack.* 1> /dev/null 2>&1; then
+					BLASLAPACKLIB+=" -lf2clapack -lf2cblas"
+				elif ls ${BLASLAPACK_ROOT}/lib/libflapack.* 1> /dev/null 2>&1; then
+					BLASLAPACKLIB+=" -lflapack -lfblas"
+				else
+					BLASLAPACKLIB+=" -llapack -lblas"
+				fi
+			;;
+			*mingw*)
+				if test -d "${BLASLAPACK_ROOT}"; then
+					BLASLAPACKLIB="-Wl,-L${BLASLAPACK_ROOT}/lib"
+					if ls ${BLASLAPACK_ROOT}/lib/libopenblas.* 1> /dev/null 2>&1; then
+						BLASLAPACKLIB+=" -lopenblas"
+					elif ls ${BLASLAPACK_ROOT}/lib/libf2clapack.* 1> /dev/null 2>&1; then
+						BLASLAPACKLIB+=" -lf2clapack -lf2cblas"
+					elif ls ${BLASLAPACK_ROOT}/lib/libflapack.* 1> /dev/null 2>&1; then
+						BLASLAPACKLIB="-Wl,-L${BLASLAPACK_ROOT}/lib -Wl,-lflapack -Wl,-lfblas"
+					else
+						BLASLAPACKLIB+=" -Wl,-llapack -Wl,-lblas"
+					fi
+				else
+					BLASLAPACKLIB="${LAPACK_ROOT}/lib/liblapack.a ${BLAS_ROOT}/lib/libblas.a"
+				fi
+			;;
+			*msys*)
+				if test -d "${BLASLAPACK_ROOT}"; then
+					if ls ${BLASLAPACK_ROOT}/lib/libopenblas.* 1> /dev/null 2>&1; then
+						BLASLAPACKLIB=" -lopenblas"
+					elif ls ${BLASLAPACK_ROOT}/lib/libf2clapack.* 1> /dev/null 2>&1; then
+						BLASLAPACKLIB=" -lf2clapack -lf2cblas"
+					elif ls ${BLASLAPACK_ROOT}/lib/libflapack.* 1> /dev/null 2>&1; then
+						BLASLAPACKLIB+=" -lflapack -lfblas"
+					else
+						BLASLAPACKLIB=" -llapack -lblas"
+					fi
+				else
+					BLASLAPACKLIB="-L${LAPACK_ROOT}/lib -llapack -L${BLAS_ROOT}/lib -lblas"
+				fi
+			;;
+		esac
+		AC_DEFINE([_HAVE_BLASLAPACK_], [1], [with BLAS/LAPACK in ISSM src])
+		AC_SUBST([BLASLAPACKLIB])
+	fi
+	dnl }}}
+	dnl Math Kernel Library (MKL){{{
+	AC_MSG_CHECKING([for MKL])
+	AC_ARG_WITH(
+		[mkl-libflags],
+		AS_HELP_STRING([--with-mkl-libflags=LIBS], [MKL libraries to be used]),
+		[MKL_LIBFLAGS=${withval}],
+		[MKL_LIBFLAGS="no"]
+	)
+	if test "x${MKL_LIBFLAGS}" == "xno"; then
+		HAVE_MKL=no
+	else
+		HAVE_MKL=yes
+		MKLLIB="${MKL_LIBFLAGS}"
+		AC_DEFINE([_HAVE_MKL_], [1], [with MKL in ISSM src])
+		AC_SUBST([MKLLIB])
+		AC_SUBST([MKLINCL])
+	fi
+	AC_MSG_RESULT([${HAVE_MKL}])
+	dnl }}}
+	dnl PlaLAPACK{{{
+	dnl TODO: 	Handle user supplying path to root directory *or* individual
+	dnl 		arguments (like ScaLAPACK)
+	dnl
+	AC_MSG_CHECKING(for PlaLAPACK)
+	AC_ARG_WITH(
+		[plapack-lib],
+		AS_HELP_STRING([--with-plapack-lib=<LIB>], [PlaLAPACK library]),
+		[PLAPACK_LIB=${withval}],
+		[PLAPACK_LIB=""]
+	)
+	AC_ARG_WITH(
+		[plapack-include],
+		AS_HELP_STRING([--with-plapack-include=<INC>], [PlaLAPACK include]),
+		[PLAPACK_INCLUDE=${withval}],
+		[PLAPACK_INCLUDE=""]
+	)
+
+	if test -n "${PLAPACK_LIB}"; then
+		if test -n "${PLAPACK_INCLUDE}"; then
+			HAVE_PLAPACK=yes
+			PLAPACKINCL="${PLAPACK_INCLUDE}"
+			PLAPACKLIB="${PLAPACK_LIB}"
+			AC_DEFINE([_HAVE_PLAPACK_], [1], [with PlaLAPACK in ISSM src])
+			AC_SUBST([PLAPACKINCL])
+			AC_SUBST([PLAPACKLIB])
+		else
+			HAVE_PLAPACK=no
+		fi
+	else
+		HAVE_PLAPACK=no
+	fi
+	AC_MSG_RESULT([${HAVE_PLAPACK}])
+	dnl }}}
+	dnl MPLAPACK{{{
+	AC_MSG_CHECKING([for MPLAPACK])
+	AC_ARG_WITH(
+		[mplapack-dir],
+		AS_HELP_STRING([--with-mplapack-dir=DIR], [MPLAPACK root directory]),
+		[MPLAPACK_ROOT=${withval}],
+		[MPLAPACK_ROOT="no"]
+	)
+	if test "x${MPLAPACK_ROOT}" == "xno"; then
+		HAVE_MPLAPACK=no
+	else
+		HAVE_MPLAPACK=yes
+		if ! test -d "${MPLAPACK_ROOT}"; then
+			AC_MSG_ERROR([MPLAPACK directory provided (${MPLAPACK_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_MPLAPACK}])
+
+	dnl MPLAPACK libraries and header files
+	if test "x${HAVE_MPLAPACK}" == "xyes"; then
+		MPLAPACKINCL="-I${MPLAPACK_ROOT}/include/mplapack -I${MPLAPACK_ROOT}/include"
+		MPLAPACKLIB="-L${MPLAPACK_ROOT}/lib -lmpblas__Float128 -lmplapack__Float128 -lgomp -lquadmath"
+		AC_DEFINE([_HAVE_MPLAPACK_], [1], [with MPLAPACK in ISSM src])
+		AC_SUBST([MPLAPACKINCL])
+		AC_SUBST([MPLAPACKLIB])
+	fi
+	AM_CONDITIONAL([MPLAPACK], [test "x${HAVE_MPLAPACK}" == "xyes"])
+	dnl }}}
+	dnl MUMPS{{{
+	AC_MSG_CHECKING([for MUMPS])
+	AC_ARG_WITH(
+		[mumps-dir],
+		AS_HELP_STRING([--with-mumps-dir=DIR], [MUMPS root directory]),
+		[MUMPS_ROOT=${withval}],
+		[MUMPS_ROOT="no"]
+	)
+	if test "x${MUMPS_ROOT}" == "xno"; then
+		HAVE_MUMPS=no
+	else
+		HAVE_MUMPS=yes
+		if ! test -d "${MUMPS_ROOT}"; then
+			AC_MSG_ERROR([MUMPS directory provided (${MUMPS_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_MUMPS}])
+
+	dnl MUMPS libraries and header files
+	if test "x${HAVE_MUMPS}" == "xyes"; then
+		MUMPSINCL="-I${MUMPS_ROOT}/include"
+		if test "x${MUMPS_ROOT}" == "x${PETSC_ROOT}"; then
+			if test "${VENDOR}" == "win-msys2"; then
+				MUMPSLIB="-Wl,-L${MUMPS_ROOT}/lib -Wl,-lcmumps -Wl,-ldmumps -Wl,-lsmumps -Wl,-lzmumps -Wl,-lmumps_common -Wl,-lpord"
+			else
+				MUMPSLIB="-L${MUMPS_ROOT}/lib -ldmumps -lcmumps -lmumps_common -lpord -lparmetis -lzmumps -lmetis"
+			fi
+		else
+			MUMPSLIB="-L${MUMPS_ROOT}/lib -ldmumps -lmumps_common -lpord -lparmetis"
+		fi
+		AC_DEFINE([_HAVE_MUMPS_], [1], [with MUMPS in ISSM src])
+		AC_SUBST([MUMPSINCL])
+		AC_SUBST([MUMPSLIB])
+	fi
+	AM_CONDITIONAL([MUMPS], [test "x${HAVE_MUMPS}" == "xyes"])
+	dnl }}}
+	dnl MUMPS2{{{
+	if test "x${HAVE_MUMPS}" != "xyes"; then
+		AC_MSG_CHECKING(for MUMPS2 (standalone))
+		AC_ARG_WITH(
+			[mumps2-include],
+			AS_HELP_STRING([--with-mumps2-include=DIR], [MUMPS2 include directory, necessary for parallel build]),
+			[MUMPS_INCLUDE=${withval}],
+			[MUMPS_INCLUDE=""]
+		)
+		AC_ARG_WITH(
+			[mumps2-libflags],
+			AS_HELP_STRING([--with-mumps2-libflags=LIBS], [MUMPS2 libraries to be used, necessary for parallel build]),
+			[MUMPS_LIBFLAGS=${withval}],
+			[MUMPS_LIBFLAGS=""]
+		)
+		if test -z "${MUMPS_INCLUDE}"; then
+			HAVE_MUMPS=no
+		else
+			HAVE_MUMPS=yes
+
+			if test -z "${MUMPS_LIBDIR}"; then
+				MUMPSINCL="-I${MUMPS_INCLUDE}"
+				MUMPSLIB="${MUMPS_LIBFLAGS}"
+			else
+				MUMPSINCL="-I${MUMPS_INCLUDE}"
+				MUMPSLIB="-L${MUMPS_LIBDIR} ${MUMPS_LIBFLAGS}"
+			fi
+			AC_DEFINE([_HAVE_MUMPS_], [1], [with MUMPS])
+			AC_SUBST([MUMPSINCL])
+			AC_SUBST([MUMPSLIB])
+		fi
+		AM_CONDITIONAL([MUMPS], [test "x${HAVE_MUMPS}" == "xyes"])
+		AC_MSG_RESULT([${HAVE_MUMPS}])
+	fi
+	dnl }}}
+	dnl BLACS{{{
+	AC_MSG_CHECKING([for BLACS])
+	AC_ARG_WITH(
+		[blacs-dir],
+		AS_HELP_STRING([--with-blacs-dir=DIR], [BLACS root directory]),
+		[BLACS_ROOT=${withval}],
+		[BLACS_ROOT="no"]
+	)
+	if test "x${BLACS_ROOT}" == "xno"; then
+		HAVE_BLACS=no
+	else
+		HAVE_BLACS=yes
+		if ! test -d "${BLACS_ROOT}"; then
+			AC_MSG_ERROR([BLACS directory provided (${BLACS_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_BLACS}])
+
+	dnl BLACS libraries and header files
+	if test "x${HAVE_BLACS}" == "xyes"; then
+		BLACSINCL=""
+		BLACSLIB="-L${BLACS_ROOT} -lblacs"
+		AC_DEFINE([_HAVE_BLACS_], [1], [with BLACS in ISSM src])
+		AC_SUBST([BLACSINCL])
+		AC_SUBST([BLACSLIB])
+	fi
+	dnl }}}
+	dnl HYPRE{{{
+	AC_MSG_CHECKING([for HYPRE])
+	AC_ARG_WITH(
+		[hypre-dir],
+		AS_HELP_STRING([--with-hypre-dir=DIR], [HYPRE root directory]),
+		[HYPRE_ROOT=${withval}],
+		[HYPRE_ROOT="no"]
+	)
+	if test "x${HYPRE_ROOT}" == "xno"; then
+		HAVE_HYPRE=no
+	else
+		HAVE_HYPRE=yes
+		if ! test -d "${HYPRE_ROOT}"; then
+			AC_MSG_ERROR([HYPRE directory provided (${HYPRE_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_HYPRE}])
+
+	dnl HYPRE libraries and header files
+	if test "x${HAVE_HYPRE}" == "xyes"; then
+		HYPREINCL=""
+		HYPRELIB="-L${HYPRE_ROOT}/lib -lHYPRE"
+		AC_DEFINE([_HAVE_HYPRE_], [1], [with HYPRE in ISSM src])
+		AC_SUBST([HYPREINCL])
+		AC_SUBST([HYPRELIB])
+	fi
+	dnl }}}
+	dnl Prometheus{{{
+	AC_MSG_CHECKING([for Prometheus])
+	AC_ARG_WITH(
+		[prometheus-dir],
+		AS_HELP_STRING([--with-prometheus-dir=DIR], [Prometheus root directory]),
+		[PROMETHEUS_ROOT=${withval}],
+		[PROMETHEUS_ROOT="no"]
+	)
+	if test "x${PROMETHEUS_ROOT}" == "xno"; then
+		HAVE_PROMETHEUS=no
+	else
+		HAVE_PROMETHEUS=yes
+		if ! test -d "${PROMETHEUS_ROOT}"; then
+			AC_MSG_ERROR([Prometheus directory provided (${PROMETHEUS_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_PROMETHEUS}])
+
+	dnl Prometheus libraries and header files
+	if test "x${HAVE_PROMETHEUS}" == "xyes"; then
+		PROMETHEUSINCL="-I${PROMETHEUS_ROOT}/include"
+		PROMETHEUSLIB="-L${PROMETHEUS_ROOT}/lib -lpromfei -lprometheus -lparmetis"
+		AC_DEFINE([_HAVE_PROMETHEUS_], [1], [with Prometheus in ISSM src])
+		AC_SUBST([PROMETHEUSINCL])
+		AC_SUBST([PROMETHEUSLIB])
+	fi
+	dnl }}}
+	dnl SEMIC{{{
+	AC_MSG_CHECKING([for SEMIC])
+	AC_ARG_WITH(
+		[semic-dir],
+		AS_HELP_STRING([--with-semic-dir=DIR], [SEMIC root directory]),
+		[SEMIC_ROOT=${withval}],
+		[SEMIC_ROOT="no"]
+	)
+	if test "x${SEMIC_ROOT}" == "xno"; then
+		HAVE_SEMIC=no
+	else
+		HAVE_SEMIC=yes
+		if ! test -d "${SEMIC_ROOT}"; then
+			AC_MSG_ERROR([SEMIC directory provided (${SEMIC_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_SEMIC}])
+
+	dnl SEMIC libraries and header files
+	if test "x${HAVE_SEMIC}" == "xyes"; then
+		SEMICINCL="-I${SEMIC_ROOT}"
+		if test "${IS_MSYS2}" == "yes"; then
+			SEMICLIB="-Wl,-L${SEMIC_ROOT}/lib -Wl,-lsurface_physics -Wl,-lutils"
+		else
+			SEMICLIB="-L${SEMIC_ROOT}/lib -lsurface_physics -lutils"
+		fi
+		AC_DEFINE([_HAVE_SEMIC_], [1], [with SEMIC in ISSM src])
+		AC_SUBST([SEMICLIB])
+		AC_SUBST([SEMICINCL])
+	fi
+	AM_CONDITIONAL([SEMIC], [test "x${HAVE_SEMIC}" == "xyes"])
+	dnl }}}
+	dnl SPAI{{{
+	AC_MSG_CHECKING([for SPAI])
+	AC_ARG_WITH(
+		[spai-dir],
+		AS_HELP_STRING([--with-spai-dir=DIR], [SPAI root directory]),
+		[SPAI_ROOT=${withval}],
+		[SPAI_ROOT="no"]
+	)
+	if test "x${SPAI_ROOT}" == "xno"; then
+		HAVE_SPAI=no
+	else
+		HAVE_SPAI=yes
+		if ! test -d "${SPAI_ROOT}"; then
+			AC_MSG_ERROR([SPAI directory provided (${SPAI_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_SPAI}])
+
+	dnl SPAI libraries and header files
+	if test "x${HAVE_SPAI}" == "xyes"; then
+		SPAIINCL="-I${SPAI_ROOT}/include"
+		SPAILIB="-L${SPAI_ROOT}/lib -lspai"
+		AC_DEFINE([_HAVE_SPAI_], [1], [with SPAI in ISSM src])
+		AC_SUBST([SPAIINCL])
+		AC_SUBST([SPAILIB])
+	fi
+	dnl }}}
+	dnl SuperLU{{{
+	AC_MSG_CHECKING([for SuperLU])
+	AC_ARG_WITH(
+		[superlu-dir],
+		AS_HELP_STRING([--with-superlu-dir=DIR], [SuperLU root directory]),
+		[SUPERLU_ROOT=${withval}],
+		[SUPERLU_ROOT="no"]
+	)
+	if test "x${SUPERLU_ROOT}" == "xno"; then
+		HAVE_SUPERLU=no
+	else
+		HAVE_SUPERLU=yes
+		if ! test -d "${SUPERLU_ROOT}"; then
+			AC_MSG_ERROR([SuperLU directory provided (${SUPERLU_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_SUPERLU}])
+
+	dnl SuperLU libraries and header files
+	if test "x${HAVE_SUPERLU}" == "xyes"; then
+		SUPERLUINCL="-I${SUPERLU_ROOT}/include"
+		SUPERLULIB="-L${SUPERLU_ROOT}/lib -lsuperlu_dist"
+		AC_DEFINE([_HAVE_SUPERLU_], [1], [with SuperLU in ISSM src])
+		AC_SUBST([SUPERLUINCL])
+		AC_SUBST([SUPERLULIB])
+	fi
+	dnl }}}
+	dnl SPOOLES{{{
+	AC_MSG_CHECKING([for SPOOLES])
+	AC_ARG_WITH(
+		[spooles-dir],
+		AS_HELP_STRING([--with-spooles-dir=DIR], [SPOOLES root directory]),
+		[SPOOLES_ROOT=${withval}],
+		[SPOOLES_ROOT="no"]
+	)
+	if test "x${SPOOLES_ROOT}" == "xno"; then
+		HAVE_SPOOLES=no
+	else
+		HAVE_SPOOLES=yes
+		if ! test -d "${SPOOLES_ROOT}"; then
+			AC_MSG_ERROR([SPOOLES directory provided (${SPOOLES_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_SPOOLES}])
+
+	dnl SPOOLES libraries and header files
+	if test "x${HAVE_SPOOLES}" == "xyes"; then
+		SPOOLESINCL="-I${SPOOLES_ROOT}/include"
+		SPOOLESLIB="-L${SPOOLES_ROOT}/lib -lspooles"
+		AC_DEFINE([_HAVE_SPOOLES_], [1], [with SPOOLES in ISSM src])
+		AC_SUBST([SPOOLESINCL])
+		AC_SUBST([SPOOLESLIB])
+	fi
+	dnl }}}
+	dnl PaStiX{{{
+	AC_MSG_CHECKING([for PaStiX])
+	AC_ARG_WITH(
+		[pastix-dir],
+		AS_HELP_STRING([--with-pastix-dir=DIR], [PaStiX root directory]),
+		[PASTIX_ROOT=${withval}],
+		[PASTIX_ROOT="no"]
+	)
+	if test "x${PASTIX_ROOT}" == "xno"; then
+		HAVE_PASTIX=no
+	else
+		HAVE_PASTIX=yes
+		if ! test -d "${PASTIX_ROOT}"; then
+			AC_MSG_ERROR([PaStiX directory provided (${PASTIX_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_PASTIX}])
+
+	dnl PaStiX libraries and header files
+	if test "x${HAVE_PASTIX}" == "xyes"; then
+		PASTIXINCL="-I${PASTIX_ROOT}/include"
+		PASTIXLIB="-L${PASTIX_ROOT}/lib -lpastix_XXbit_mpi_smp_nobubble_int32_simple_real_scotch_i686_pc_linux -lptscotch -lptscotcherr -lpastix"
+		AC_DEFINE([_HAVE_PASTIX_], [1], [with PaStiX in ISSM src])
+		AC_SUBST([PASTIXINCL])
+		AC_SUBST([PASTIXLIB])
+	fi
+	dnl }}}
+	dnl }}}
+	dnl ml{{{
+	AC_MSG_CHECKING([for ml])
+	AC_ARG_WITH(
+		[ml-dir],
+		AS_HELP_STRING([--with-ml-dir=DIR],[ml root directory]),
+		[ML_ROOT=$withval],
+		[ML_ROOT="no"]
+	)
+	if test "x${ML_ROOT}" == "xno"; then
+		HAVE_ML=no
+	else
+		HAVE_ML=yes
+		if ! test -d "${ML_ROOT}"; then
+			AC_MSG_ERROR([ml directory provided (${ML_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_ML}])
+
+	dnl ml libraries and header files
+	if test "x${HAVE_ML}" == "xyes"; then
+		MLINCL=-I"${ML_ROOT}/include"
+		MLLIB=-L"${ML_ROOT}/lib -lml"
+		AC_DEFINE([_HAVE_ML_], [1], [with ml in ISSM src])
+		AC_SUBST([MLINCL])
+		AC_SUBST([MLLIB])
+	fi
+	dnl }}}
+	dnl UMFPACK{{{
+	AC_MSG_CHECKING([for UMFPACK])
+	AC_ARG_WITH(
+		[umfpack-dir],
+		AS_HELP_STRING([--with-umfpack-dir=DIR], [UMFPACK root directory]),
+		[UMFPACK_ROOT=${withval}],
+		[UMFPACK_ROOT="no"]
+	)
+	if test "x${UMFPACK_ROOT}" == "xno"; then
+		HAVE_UMFPACK=no
+	else
+		HAVE_UMFPACK=yes
+		if ! test -d "${UMFPACK_ROOT}"; then
+			AC_MSG_ERROR([UMFPACK directory provided (${UMFPACK_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_UMFPACK}])
+
+	dnl UMFPACK libraries and header files
+	if test "x${HAVE_UMFPACK}" == "xyes"; then
+		UMFPACKINCL=""
+		UMFPACKLIB="-L${UMFPACK_ROOT}/lib -lumfpack -lumfpack.5.5.1"
+		AC_DEFINE([_HAVE_UMFPACK_], [1], [with UMFPACK in ISSM src])
+		AC_SUBST([UMFPACKINCL])
+		AC_SUBST([UMFPACKLIB])
+	fi
+	dnl }}}
+	dnl libm (GNU math library){{{
+	AC_MSG_CHECKING(for libm)
+	AC_ARG_WITH(
+		[math-lib],
+		AS_HELP_STRING([--with-math-lib=LIB], [libm (GNU math library) to use]),
+		[MATH_LIB=${withval}],
+		[MATH_LIB=""]
+	)
+	if test -n "${MATH_LIB}"; then
+		HAVE_MATH=yes
+		MATHLIB="${MATH_LIB}"
+		AC_DEFINE([_HAVE_MATH_], [1], [with libm (GNU math library) in ISSM src])
+		AC_SUBST([MATHLIB])
+	fi
+	AC_MSG_RESULT([done])
+	dnl }}}
+	dnl MATH77{{{
+	AC_MSG_CHECKING([for MATH77])
+	AC_ARG_WITH(
+		[math77-dir],
+		AS_HELP_STRING([--with-math77-dir=DIR], [MATH77 root directory]),
+		[MATH77_ROOT=${withval}],
+		[MATH77_ROOT="no"]
+	)
+	if test "x${MATH77_ROOT}" == "xno"; then
+		HAVE_MATH77=no
+	else
+		HAVE_MATH77=yes
+		if ! test -d "${MATH77_ROOT}"; then
+			AC_MSG_ERROR([MATH77 directory provided (${MATH77_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_MATH77}])
+
+	dnl MATH77 libraries and header files
+	if test "x${HAVE_MATH77}" == "xyes"; then
+		MATH77LIB="-L${MATH77_ROOT} -lmath77"
+		AC_DEFINE([_HAVE_MATH77_], [1], [with MATH77 in ISSM src])
+		AC_SUBST([MATH77LIB])
+	fi
+	dnl }}}
+	dnl Fortran{{{
+	AC_MSG_CHECKING(for Fortran compilation)
+	AC_ARG_WITH(
+		[fortran],
+		AS_HELP_STRING([--with-fortran=YES], [do we compile Fortran code (default: yes)]),
+		[FORTRAN=${withval}],
+		[FORTRAN=yes]
+	)
+	if test "x${FORTRAN}" == "xyes"; then
+		HAVE_FORTRAN=yes
+		AC_DEFINE([_HAVE_FORTRAN_], [1], [with Fortran capability])
+	else
+		HAVE_FORTRAN=no
+	fi
+	AM_CONDITIONAL([FORTRAN], [test "x${FORTRAN}" == "xyes"])
+	AC_MSG_RESULT([${FORTRAN}])
+
+	IS_FORTRANDIR_A_DIR=no
+	if test "x${FORTRAN}" == "xyes"; then
+		dnl Fortran library
+		AC_MSG_CHECKING([for Fortran library])
+		AC_ARG_WITH(
+			[fortran-lib],
+			AS_HELP_STRING([--with-fortran-lib=LIB], [Fortran library to use (and, if needed, libraries on which it depends)]),
+			[FORTRAN_LIB=${withval}],
+			[FORTRAN_LIB=""]
+		)
+		if test -n "${FORTRAN_LIB}"; then
+			FORTRAN_DIR=$(echo ${FORTRAN_LIB} | sed -e "s/-Wl,//g" | sed -e "s/-L//g" | awk '{print $[1]}')
+			if test -d "${FORTRAN_DIR}" || test -f "${FORTRAN_DIR}"; then
+				FORTRANDIR="${FORTRAN_DIR}"
+				if test -n "${FORTRAN_DIR}"; then
+					IS_FORTRANDIR_A_DIR=yes
+				fi
+				FORTRANLIB="${FORTRAN_LIB}"
+				AC_DEFINE([_HAVE_FORTRAN_], [1], [with Fortran library in ISSM src])
+				AC_SUBST([FORTRANDIR])
+				AC_SUBST([FORTRANLIB])
+			else
+				if test "x${HAVE_MPI}" == "xyes"; then
+					MPI_REC_FORTRAN_LIB=$(mpif77 -print-file-name="libgfortran.a")
+					if test -f "${FORTRANLIB}"; then
+						AC_MSG_ERROR([Fortran library provided (${FORTRAN_LIB}) does not exist! MPI suggests the following library: ${MPI_REC_FORTRAN_LIB}]);
+					fi
+			 	fi
+				AC_MSG_ERROR([Fortran library provided (${FORTRAN_LIB}) does not exist!]);
+			fi
+		fi
+		AC_MSG_RESULT([done])
+	fi
+	AM_CONDITIONAL([HAVE_FORTRANDIR], [test "x${IS_FORTRANDIR_A_DIR}" == "xyes"])
+	dnl }}}
+	dnl Xlib (graphics library){{{
+	AC_MSG_CHECKING([for Xlib (graphics library)])
+	AC_ARG_WITH(
+		[graphics-lib],
+		AS_HELP_STRING([--with-graphics-lib=options], [Xlib (graphics library) to use]),
+		[GRAPHICS_LIB=${withval}],
+		[GRAPHICS_LIB=""]
+	)
+	if test -n "${GRAPHICS_LIB}"; then
+		GRAPHICS_DIR=$(echo ${GRAPHICS_LIB} | sed -e "s/-L//g" | awk '{print $[1]}')
+		if test -d "${GRAPHICS_DIR}" || test -f "${GRAPHICS_DIR}"; then
+			HAVE_GRAPHICS=yes
+			GRAPHICSLIB="${GRAPHICS_LIB}"
+			AC_DEFINE([_HAVE_GRAPHICS_], [1], [with Xlib (graphics library) in ISSM src])
+			AC_SUBST([GRAPHICSLIB])
+		else
+			if test -f "${PETSC_ROOT}/conf/petscvariables"; then
+				PETSC_REC_GRAPHICS_LIB=$(cat ${PETSC_ROOT}/conf/petscvariables | grep X_LIB)
+				AC_MSG_ERROR([Xlib (graphics library) provided (${GRAPHICS_LIB}) does not exist! PETSc suggests the following library: ${PETSC_REC_GRAPHICS_LIB}]);
+			fi
+			AC_MSG_ERROR([Xlib (graphics library) provided (${GRAPHICS_LIB}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([done])
+	dnl }}}
+	dnl MeteoIO{{{
+	AC_MSG_CHECKING([for MeteoIO])
+	AC_ARG_WITH(
+		[meteoio-dir],
+		AS_HELP_STRING([--with-meteoio-dir=DIR], [use MeteoIO in conjunction with SNOWPACK model]),
+		[METEOIO_ROOT=${withval}],
+		[METEOIO_ROOT="no"]
+	)
+	if test "x${METEOIO_ROOT}" == "xno"; then
+		HAVE_METEOIO=no
+	else
+		HAVE_METEOIO=yes
+		if ! test -d "${METEOIO_ROOT}"; then
+			AC_MSG_ERROR([MeteoIO directory provided (${METEOIO_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_METEOIO}])
+
+	dnl MeteoIO libraries and header files
+	if test "x${HAVE_METEOIO}" == "xyes"; then
+		METEOIOINCL="-I${METEOIO_ROOT}/include"
+		METEOIOLIB="-dy -L${METEOIO_ROOT}/lib -lmeteoio"
+
+		AC_DEFINE([_HAVE_METEOIO_], [1], [with MeteoIO])
+		AC_SUBST([METEOIOINCL])
+		AC_SUBST([METEOIOLIB])
+	fi
+	AM_CONDITIONAL([METEOIO], [test "x${HAVE_METEOIO}" == "xyes"])
+	dnl }}}
+	dnl SNOWPACK{{{
+	AC_MSG_CHECKING([for SNOWPACK])
+	AC_ARG_WITH(
+		[snowpack-dir],
+		AS_HELP_STRING([--with-snowpack-dir=DIR], [use SNOWPACK for surface mass balance model]),
+		[SNOWPACK_ROOT=${withval}],
+		[SNOWPACK_ROOT="no"]
+	)
+	if test "x${SNOWPACK_ROOT}" == "xno"; then
+		HAVE_SNOWPACK=no
+	else
+		HAVE_SNOWPACK=yes
+		if ! test -d "${SNOWPACK_ROOT}"; then
+			AC_MSG_ERROR([SNOWPACK directory provided (${SNOWPACK_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_SNOWPACK}])
+
+	dnl SNOWPACK libraries and header files
+	if test "x${HAVE_SNOWPACK}" == "xyes"; then
+		SNOWPACKINCL="-I${SNOWPACK_ROOT}/include"
+		SNOWPACKLIB="-dy -L${SNOWPACK_ROOT}/lib -lsnowpack"
+		AC_DEFINE([_HAVE_SNOWPACK_], [1], [with SNOWPACK for surface mass balance model])
+		AC_SUBST([SNOWPACKINCL])
+		AC_SUBST([SNOWPACKLIB])
+	fi
+	AM_CONDITIONAL([SNOWPACK], [test "x${HAVE_SNOWPACK}" == "xyes"])
+	dnl }}}
+	dnl NeoPZ{{{
+	AC_MSG_CHECKING([for NeoPZ])
+	AC_ARG_WITH(
+		[neopz-dir],
+		AS_HELP_STRING([--with-neopz-dir=DIR], [NeoPZ root directory]),
+		[NEOPZ_ROOT=${withval}],
+		[NEOPZ_ROOT="no"]
+	)
+	if test "x${NEOPZ_ROOT}" == "xno"; then
+		HAVE_NEOPZ=no
+	else
+		HAVE_NEOPZ=yes
+		if ! test -d "${NEOPZ_ROOT}"; then
+			AC_MSG_ERROR([NeoPZ directory provided (${NEOPZ_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_NEOPZ}])
+
+	dnl NeoPZ libraries and header files
+	if test "x${HAVE_NEOPZ}" == "xyes"; then
+		NEOPZLIB="${NEOPZ_ROOT}/lib/libpz.a"
+		NEOPZINCL="-I${NEOPZ_ROOT}/include"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/Analysis"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/Common"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/External"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/Frontal"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/Geom"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/Integral"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/LinearSolvers"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/Material"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/Matrix"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/Mesh"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/Multigrid"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/PerfUtil"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/Post"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/Pre"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/Refine"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/Save"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/Shape"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/SpecialMaps"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/StrMatrix"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/SubStruct"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/Topology"
+		NEOPZINCL+=" -I${NEOPZ_ROOT}/include/Util"
+		CXXFLAGS+=" -std=c++11"
+		AC_DEFINE([_HAVE_NEOPZ_], [1], [with NeoPZ in ISSM src])
+		AC_SUBST([NEOPZINCL])
+		AC_SUBST([NEOPZLIB])
+	fi
+	AM_CONDITIONAL([NEOPZ], [test "x${HAVE_NEOPZ}" == "xyes"])
+	dnl }}}
+	dnl Gmsh{{{
+	AC_MSG_CHECKING([for Gmsh])
+	AC_ARG_WITH(
+		[gmsh-dir],
+		AS_HELP_STRING([--with-gmsh-dir=DIR], [Gmsh root directory]),
+		[GMSH_ROOT=${withval}],
+		[GMSH_ROOT="no"]
+	)
+	if test "x${GMSH_ROOT}" == "xno"; then
+		HAVE_GMSH=no
+	else
+		HAVE_GMSH=yes
+		if ! test -d "${GMSH_ROOT}"; then
+			AC_MSG_ERROR([Gmsh directory provided (${GMSH_ROOT}) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT([${HAVE_GMSH}])
+	AM_CONDITIONAL([GMSH], [test "x${HAVE_GMSH}" == "xyes"])
+
+	if test "x${HAVE_GMSH}" == "xyes"; then
+		AC_DEFINE([_HAVE_GMSH_], [1], [with Gmsh in ISSM src])
+
+		AC_MSG_CHECKING(for Gmsh version)
+		GMSH_VERSION_MAJOR=`${GMSH_ROOT}/bin/gmsh -info | grep "Version" | sed -e "s/Version@<:@@<:@:blank:@:>@@:>@*:@<:@@<:@:blank:@:>@@:>@//" | cut -d "." -f 1`
+		AC_MSG_RESULT([${GMSH_VERSION_MAJOR}])
+		AC_DEFINE_UNQUOTED([_GMSH_VERSION_MAJOR_], ${GMSH_VERSION_MAJOR}, [Gmsh major version])
+	fi
+	dnl }}}
+	dnl Capabilities
+	dnl with-bamg{{{
+	AC_MSG_CHECKING([for BAMG capability compilation])
+	AC_ARG_WITH(
+		[bamg],
+		AS_HELP_STRING([--with-bamg=YES], [compile with BAMG capabilities (default: yes)]),
+		[BAMG=${withval}],
+		[BAMG=yes]
+	)
+	HAVE_BAMG=no
+	if test "x${BAMG}" == "xyes"; then
+		HAVE_BAMG=yes
+		AC_DEFINE([_HAVE_BAMG_], [1], [with BAMG meshing capability])
+	fi
+	AM_CONDITIONAL([BAMG], [test "x${HAVE_BAMG}" == "xyes"])
+	AC_MSG_RESULT([${HAVE_BAMG}])
+	dnl }}}
+	dnl with-ocean{{{
+	AC_MSG_CHECKING(for ice/ocean coupling capability compilation)
+	AC_ARG_WITH(
+		[ocean],
+		AS_HELP_STRING([--with-ocean = YES], [compile with ice/ocean coupling capability (default: no)]),
+		[OCEAN=${withval}],
+		[OCEAN=no]
+	)
+	HAVE_OCEAN=no
+	if test "x${OCEAN}" == "xyes"; then
+		HAVE_OCEAN=yes
+		AC_DEFINE([_HAVE_OCEAN_], [1], [with ice/ocean coupling capability])
+	fi
+	AM_CONDITIONAL([OCEAN], [test "x${HAVE_OCEAN}" == "xyes"])
+	AC_MSG_RESULT([${HAVE_OCEAN}])
+	dnl }}}
+	dnl with-kml{{{
+	AC_MSG_CHECKING(for kml capability compilation)
+	AC_ARG_WITH(
+		[kml],
+		AS_HELP_STRING([--with-kml=YES], [compile with kml capabilities (default: no)]),
+		[KML=${withval}],
+		[KML=no]
+	)
+	HAVE_KML=no
+	if test "x${KML}" == "xyes"; then
+		HAVE_KML=yes
+		AC_DEFINE([_HAVE_KML_], [1], [with kml capability])
+	fi
+	AM_CONDITIONAL([KML], [test "x${HAVE_KML}" == "xyes"])
+	AC_MSG_RESULT([${HAVE_KML}])
+	dnl }}}
+	dnl with-kriging{{{
+	AC_MSG_CHECKING(for kriging capability compilation)
+	AC_ARG_WITH(
+		[kriging],
+		AS_HELP_STRING([--with-kriging=YES], [compile with kriging capabilities (default: yes)]),
+		[KRIGING=${withval}],
+		[KRIGING=yes]
+	)
+	HAVE_KRIGING=no
+	if test "x${KRIGING}" == "xyes"; then
+		HAVE_KRIGING=yes
+		AC_DEFINE([_HAVE_KRIGING_], [1], [with kriging capability])
+	fi
+	AM_CONDITIONAL([KRIGING], [test "x${HAVE_KRIGING}" == "xyes"])
+	AC_MSG_RESULT([${HAVE_KRIGING}])
+	dnl }}}
+
+	dnl Analyses
+	AX_ANALYSES_SELECTION
+
+	dnl Platform specifics
+	dnl with-ios{{{
+	AC_MSG_CHECKING(for iOS compilation)
+	AC_ARG_WITH(
+		[ios],
+		AS_HELP_STRING([--with-ios=YES], [compile with iOS capabilities (default: no)]),
+		[IOS=${withval}],
+		[IOS=no]
+	)
+	HAVE_IOS=no
+	if test "x${IOS}" == "xyes"; then
+		HAVE_IOS=yes
+		AC_DEFINE([_HAVE_IOS_], [1], [with iOS capability])
+	fi
+	AM_CONDITIONAL([IOS], [test "x${HAVE_IOS}" != "xno"])
+	AC_MSG_RESULT([${HAVE_IOS}])
+	dnl }}}
+	dnl with-android{{{
+	AC_MSG_CHECKING([for Android capability compilation])
+	AC_ARG_WITH(
+		[android],
+		AS_HELP_STRING([--with-android=EXE], [compile with Android capabilities (default: "no"; alternatives: "exe", "jni")]),
+		[ANDROID=${withval}],
+		[ANDROID=no]
+	)
+	if test "x${ANDROID}" == "xjni"; then
+		HAVE_ANDROID=jni
+		AC_DEFINE([_HAVE_ANDROID_], [1], [with Android capability])
+		AC_DEFINE([_HAVE_ANDROID_JNI_], [1], [with Android Java Native Interface (JNI)])
+	elif test "x${ANDROID}" == "xexe"; then
+		HAVE_ANDROID=exe
+		AC_DEFINE([_HAVE_ANDROID_], [1], [with Android capability])
+	elif test "x${ANDROID}" == "xno"; then
+		HAVE_ANDROID=no
+	else
+		AC_MSG_ERROR([--with-android should be either "no", "exe" or "jni"])
+	fi
+	AM_CONDITIONAL([ANDROID], [test "x${HAVE_ANDROID}" != "xno"])
+	AM_CONDITIONAL([ANDROIDJNI], [test "x${HAVE_ANDROID}" == "xjni"])
+	AM_CONDITIONAL([ANDROIDEXE], [test "x${HAVE_ANDROID}" == "xexe"])
+	AC_MSG_RESULT([${HAVE_ANDROID}])
+	dnl }}}
+	dnl with-android-ndk{{{
+	AC_MSG_CHECKING([with Android Native Development Kit (NDK)])
+	AC_ARG_WITH(
+		[android-ndk],
+		AS_HELP_STRING([--with-android-ndk=DIR], [Android NDK root directory]),
+		[ANDROID_NDK_ROOT=${withval}],
+		[ANDROID_NDK_ROOT=""]
+	)
+	if test -d "${ANDROID_NDK_ROOT}"; then
+		HAVE_ANDROID_NDK=yes
+		ANDROID_NDKINCL="-I${ANDROID_NDK_ROOT}/arm-linux-android-install/sysroot/usr/include"
+		AC_DEFINE([_HAVE_ANDROID_NDK_], [1], [with Android NDK in ISSM src])
+		AC_SUBST([ANDROID_NDKINCL])
+	else
+		HAVE_ANDROID_NDK=no
+	fi
+	AC_MSG_RESULT([${HAVE_ANDROID_NDK}])
+	dnl }}}
+
+	dnl other options
+	dnl optimization{{{
+	dnl -- bypass standard optimization -g -O2 -fPIC?
+	AC_MSG_CHECKING(for C++ optimization flags)
+	AC_ARG_WITH(
+		[cxxoptflags],
+		AS_HELP_STRING([--with-cxxoptflags=CXXOPTFLAGS], [C++ optimization flags (i.e. --with-cxxoptflags="-march=opteron -O3 -std=c++11"]),
+		[CXXOPTFLAGS=${withval}],
+		[CXXOPTFLAGS="-g -O2 -fPIC -std=c++11 -D_DO_NOT_LOAD_GLOBALS_"]
+	)
+	AC_SUBST([CXXOPTFLAGS])
+	AC_MSG_RESULT([${CXXOPTFLAGS}])
+	dnl }}}
+	dnl multithreading{{{
+	AC_MSG_CHECKING(for number of threads)
+	AC_ARG_WITH(
+		[numthreads],
+		AS_HELP_STRING([--with-numthreads=NUMTHREADS_VALUE], [number of threads (default: 1)]),
+		[NUMTHREADS_VALUE=${withval}],
+		[NUMTHREADS_VALUE=1]
+	)
+	dnl Check that supplied value is an integer
+	if test "${NUMTHREADS_VALUE}" != "${NUMTHREADS_VALUE}"; then
+		AC_MSG_ERROR([Number of threads provided (${NUMTHREADS_VALUE}) is not an integer!]);
+	elif test "${NUMTHREADS_VALUE}" == "0"; then
+		AC_MSG_ERROR([Number of threads must be at least 1!]);
+	fi
+	MULTITHREADING=no
+	MULTITHREADINLIB=""
+	if test "x${NUMTHREADS_VALUE}" != "x1"; then
+		MULTITHREADINGLIB="-lpthread -lrt"
+		case "${host_os}" in
+			*cygwin*)
+				MULTITHREADINGLIB="-lpthread -lrt"
+			;;
+			*darwin*)
+				MULTITHREADINGLIB="-lpthread"
+			;;
+			*linux*)
+				MULTITHREADINGLIB="-lpthread -lrt"
+			;;
+			*mingw*)
+				MULTITHREADINGLIB=""
+			;;
+			*msys*)
+				MULTITHREADINGLIB=""
+			;;
+		esac
+		AC_DEFINE([_MULTITHREADING_], [1], [with multithreading enabled])
+	fi
+	AC_DEFINE_UNQUOTED([_NUMTHREADS_], ${NUMTHREADS_VALUE}, [number of threads])
+	AC_SUBST([MULTITHREADINGLIB])
+	AC_MSG_RESULT([${NUMTHREADS_VALUE}])
+	dnl }}}
+	dnl 64-bit indices{{{
+	AC_MSG_CHECKING([for 64-bit indices])
+	AC_ARG_WITH(
+		[64bit-indices],
+		AS_HELP_STRING([--with-64bit-indices=bool], [use 64-bit indices (default: 0)]),
+		[USE_64BIT_INDICES=${withval}],
+		[USE_64BIT_INDICES=0]
+	)
+	if test "x${USE_64BIT_INDICES}" == "x1"; then
+		AC_DEFINE([ISSM_USE_64BIT_INDICES], [1], [with 64-bit indices])
+	else
+		AC_DEFINE([ISSM_USE_64BIT_INDICES], [0], [with 64-bit indices])
+	fi
+	AC_MSG_RESULT([${USE_64BIT_INDICES}])
+	dnl }}}
+
+	dnl Checks {{{
+	AC_MSG_CHECKING(consistency between all external packages)
+
+	dnl Check that if PETSc is requested, MPI is specified
+	if test "x${HAVE_PETSC}" == "xyes"; then
+		if test "x${HAVE_MPI}" == "xno"; then
+			AC_MSG_ERROR([PETSc requires MPI!]);
+		fi
+	fi
+
+	dnl Check that we have MATLAB and/or Python support if we compile the modules
+	if test "x${MODULES_VALUE}" == "xyes" && test "${HAVE_MATLAB}" == "xno" && test "${HAVE_PYTHON}" == "xno"; then
+		AC_MSG_ERROR([need at least MATLAB and/or Python support to compile modules! (or use --with-modules=no)]);
+	fi
+
+	dnl Check that Fortran is provided if Gia is on
+	if test "x${HAVE_GIA}" == "xyes" &&  test "${HAVE_FORTRAN}" == "xno"; then
+		AC_MSG_ERROR([need Fortran compiler to compile Gia! (or use --without-Gia)]);
+	fi
+
+	dnl Check that Fortran is provided if Love is on
+	if test "x${HAVE_LOVE}" == "xyes" && test "x${HAVE_FORTRAN}" == "xno"; then
+		AC_MSG_ERROR([need Fortran compiler to compile Love! (or use --without-Love)]);
+	fi
+
+	dnl Check that if we have MPI, we have METIS
+	if test "x${HAVE_METIS}" == "xyes" && test "x${HAVE_MPI}" == "xno"; then
+		AC_MSG_ERROR([need MPI if using the METIS partitioner!]);
+	fi
+
+	dnl Check that if we run ADOL-C, we don't compile kriging.exe
+	if test "x${HAVE_ADOLC}" == "xyes" && test "${HAVE_KRIGING}" == "xyes"; then
+		AC_MSG_ERROR([cannot compile kriging.exe under ADOL-C conditions!]);
+	fi
+
+	dnl Check that if we run ADOL-C, we don't use PETSc for now
+	if test "x${HAVE_ADOLC}" == "xyes" && test "x${HAVE_PETSC}" == "xyes"; then
+		AC_MSG_ERROR([cannot compile ISSM with both PETSc and ADOL-C!]);
+	fi
+	if test "x${HAVE_ADOLC}" == "xyes" && test "x${HAVE_CODIPACK}" == "xyes"; then
+		AC_MSG_ERROR([cannot compile ISSM with both ADOL-C and CoDiPack!]);
+	fi
+	if test "x${HAVE_ADJOINTMPI}" == "xyes" && test "x${HAVE_MEDIPACK}" == "xyes"; then
+		AC_MSG_ERROR([cannot compile ISSM with both MeDiPack and AdjointMPI!]);
+	fi
+	dnl Check that if we run MeteoIO, we have SNOWPACK also
+	if test "x${HAVE_METEOIO}" == "xyes" && test "x${HAVE_SNOWPACK}" == "xno"; then
+		AC_MSG_ERROR([cannot compile MeteoIO package without SNOWPACK!]);
+	fi
+	dnl Check that if we run SNOWPACK, we have MeteoIO also
+	if test "${HAVE_METEOIO}" == "xno" && test "${HAVE_SNOWPACK}" == "xyes"; then
+		AC_MSG_ERROR([cannot compile SNOWPACK package without MeteoIO!]);
+	fi
+
+	AC_MSG_RESULT([done])
+	dnl }}}
+])
Index: /issm/branches/trunk-dlcheng-ASE/packagers/linux/complete-issm-linux-binaries-matlab.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/linux/complete-issm-linux-binaries-matlab.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/linux/complete-issm-linux-binaries-matlab.sh	(revision 27955)
@@ -0,0 +1,94 @@
+#!/bin/bash
+
+################################################################################
+# Wrapper script to build, package, and transfer to ISSM Web site ISSM 
+# distributable package for Linux with MATLAB API.
+#
+# Normally, we would put this directly into the project configuration under 
+# 'Build' -> 'Execute shell', but because it is a bit more involved, it is a 
+# good idea to version it.
+#
+# When no failures/errors occur, performs the following:
+# - Builds ISSM according to configuration.
+# - Packages executables and libraries.
+# - Runs test suite against package.
+# - Transmits package to ISSM Web site for distribution.
+#
+# Options:
+# -b/--skipbuild		Skip ISSM compilation.
+# -s/--skiptests		Skip ISSM compilation and testing during packaging 
+#						step. Use if packaging fails for some reason but build 
+#						is valid.
+# -t/--transferonly		Transfer package to ISSM Web site only. Use if transfer 
+#						fails for some reason to skip building, packaging, and 
+#						signing.
+#
+# NOTE:
+# - Use only *one* of the above options at a time, and make sure it is removed 
+#	again after a single run.
+# - Builds will fail when any of the above options are used on a clean 
+#	workspace. For example, if 'Source Code Management' -> 'Check-out Strategy' 
+#	select menu is set to "Always check out a fresh copy".
+################################################################################
+
+## Constants
+#
+PKG="ISSM-Linux-MATLAB" # Name of directory to copy distributable files to
+
+COMPRESSED_PKG="${PKG}.tar.gz"
+
+## Environment
+#
+export COMPRESSED_PKG
+export PKG
+
+## Parse options
+#
+if [ $# -gt 1 ]; then
+	echo "Can use only one option at a time"
+	exit 1
+fi
+
+# NOTE: We could do this with binary switching (i.e. 0011 to sign and transfer, 
+#		but the following is self-documenting).
+#
+build=1
+package=1
+transfer=1
+
+if [ $# -eq 1 ]; then
+	case $1 in
+		-b|--skipbuild)		build=0;				shift	;;
+		-s|--skiptests)		build=0;						;;
+		-t|--transferonly)	build=0;	package=0;			;;
+		*) echo "Unknown parameter passed: $1"; exit 1 		;;
+	esac
+fi
+
+# Build
+if [ ${build} -eq 1 ]; then
+	./jenkins/jenkins.sh ./jenkins/ross-debian_linux-binaries-matlab
+
+	if [ $? -ne 0 ]; then 
+		exit 1
+	fi
+fi
+
+# Package
+if [ ${package} -eq 1 ]; then
+	./packagers/linux/package-issm-linux-binaries-matlab.sh $1
+
+	if [ $? -ne 0 ]; then 
+		exit 1
+	fi
+fi
+
+# Transfer distributable package to ISSM Web site
+if [ ${transfer} -eq 1 ]; then
+	./packagers/linux/transfer-issm-linux-binaries.sh
+
+	if [ $? -ne 0 ]; then 
+		exit 1
+	fi
+fi
+
Index: /issm/branches/trunk-dlcheng-ASE/packagers/linux/complete-issm-linux-binaries-python-3.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/linux/complete-issm-linux-binaries-python-3.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/linux/complete-issm-linux-binaries-python-3.sh	(revision 27955)
@@ -0,0 +1,94 @@
+#!/bin/bash
+
+################################################################################
+# Wrapper script to build, package, and transfer to ISSM Web site ISSM 
+# distributable package for Linux with Python 3 API.
+#
+# Normally, we would put this directly into the project configuration under 
+# 'Build' -> 'Execute shell', but because it is a bit more involved, it is a 
+# good idea to version it.
+#
+# When no failures/errors occur, performs the following:
+# - Builds ISSM according to configuration.
+# - Packages executables and libraries.
+# - Runs test suite against package.
+# - Transmits package to ISSM Web site for distribution.
+#
+# Options:
+# -b/--skipbuild		Skip ISSM compilation.
+# -s/--skiptests		Skip ISSM compilation and testing during packaging 
+#						step. Use if packaging fails for some reason but build 
+#						is valid.
+# -t/--transferonly		Transfer package to ISSM Web site only. Use if transfer 
+#						fails for some reason to skip building, packaging, and 
+#						signing.
+#
+# NOTE:
+# - Use only *one* of the above options at a time, and make sure it is removed 
+#	again after a single run.
+# - Builds will fail when any of the above options are used on a clean 
+#	workspace. For example, if 'Source Code Management' -> 'Check-out Strategy' 
+#	select menu is set to "Always check out a fresh copy".
+################################################################################
+
+## Constants
+#
+PKG="ISSM-Linux-Python-3" # Name of directory to copy distributable files to
+
+COMPRESSED_PKG="${PKG}.tar.gz"
+
+## Environment
+#
+export COMPRESSED_PKG
+export PKG
+
+## Parse options
+#
+if [ $# -gt 1 ]; then
+	echo "Can use only one option at a time"
+	exit 1
+fi
+
+# NOTE: We could do this with binary switching (i.e. 0011 to sign and transfer, 
+#		but the following is self-documenting).
+#
+build=1
+package=1
+transfer=1
+
+if [ $# -eq 1 ]; then
+	case $1 in
+		-b|--skipbuild)		build=0;				shift	;;
+		-s|--skiptests)		build=0;						;;
+		-t|--transferonly)	build=0;	package=0;			;;
+		*) echo "Unknown parameter passed: $1"; exit 1 		;;
+	esac
+fi
+
+# Build
+if [ ${build} -eq 1 ]; then
+	./jenkins/jenkins.sh ./jenkins/ross-debian_linux-binaries-python-3
+
+	if [ $? -ne 0 ]; then 
+		exit 1
+	fi
+fi
+
+# Package
+if [ ${package} -eq 1 ]; then
+	./packagers/linux/package-issm-linux-binaries-python-3.sh $1
+
+	if [ $? -ne 0 ]; then 
+		exit 1
+	fi
+fi
+
+# Transfer distributable package to ISSM Web site
+if [ ${transfer} -eq 1 ]; then
+	./packagers/linux/transfer-issm-linux-binaries.sh
+
+	if [ $? -ne 0 ]; then 
+		exit 1
+	fi
+fi
+
Index: /issm/branches/trunk-dlcheng-ASE/packagers/linux/package-issm-linux-binaries-matlab.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/linux/package-issm-linux-binaries-matlab.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/linux/package-issm-linux-binaries-matlab.sh	(revision 27955)
@@ -0,0 +1,184 @@
+#!/bin/bash
+
+################################################################################
+# Packages and tests ISSM distributable package for Linux with MATLAB API.
+#
+# Options:
+# -s/--skiptests		Skip testing during packaging Use if packaging fails 
+#						for some reason but build is valid.
+#
+# NOTE:
+# - Assumes that the following constants are defined,
+#
+#		COMPRESSED_PKG
+#		ISSM_DIR
+#		PKG
+#
+# See also:
+# - packagers/linux/complete-issm-linux-binaries-matlab.sh
+################################################################################
+
+# Expand aliases within the context of this script
+shopt -s expand_aliases
+
+## Override certain aliases
+#
+alias grep=$(which grep)
+
+## Constants
+#
+LIBGFORTRAN="/usr/lib/x86_64-linux-gnu/libgfortran.so.5.0.0" # Important that this is the library itself
+LIBGFORTRAN_DIST="${ISSM_DIR}/lib/libgfortran.so.5" # Important the file name matches the SONAME entry in the binaries and other shared libraries which link to it
+MATLAB_NROPTIONS="'benchmark','all','exclude',[125,126,129,234,235,418,420,435,444,445,701,702,703,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1201,1202,1203,1204,1205,1206,1207,1208,1301,1302,1303,1304,1401,1402,1601,1602,2002,2003,2004,2006,2007,2008,2010,2011,2012,2013,2020,2021,2051,2052,2053,2084,2085,2090,2091,2092,2101,2424,2425,3001:3300,3480,3481,4001:4100]" # NOTE: Combination of test suites from basic, Dakota, and Solid Earth builds, with tests that require a restart and those that require the JVM excluded
+MATLAB_PATH="/usr/local/MATLAB/R2019b"
+
+## Environment
+#
+export PATH="${ISSM_DIR}/bin:$(getconf PATH)" # Ensure that we pick up binaries from 'bin' directory rather than 'externalpackages'
+
+## Parse options
+#
+if [ $# -gt 1 ]; then
+	echo "Can use only one option at a time"
+	exit 1
+fi
+
+skip_tests=0
+
+if [ $# -eq 1 ]; then
+	case $1 in
+		-s|--skiptests) skip_tests=1;					;;
+		*) echo "Unknown parameter passed: $1"; exit 1	;;
+	esac
+fi
+
+# Check if MATLAB exists
+if ! [ -d ${MATLAB_PATH} ]; then
+	echo "${MATLAB_PATH} does not point to a MATLAB installation! Please modify MATLAB_PATH variable in $(basename $0) and try again."
+	exit 1
+fi
+
+# Clean up from previous packaging
+echo "Cleaning up existing assets"
+cd ${ISSM_DIR}
+rm -rf ${PKG} ${COMPRESSED_PKG}
+mkdir ${PKG}
+
+# Add required binaries and libraries to package and modify them where needed
+cd ${ISSM_DIR}/bin
+
+echo "Modify generic"
+cat generic_static.m | sed -e "s/generic_static/generic/g" > generic.m
+
+echo "Moving MPICH binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec ]; then
+	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec .
+	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/hydra_pmi_proxy .
+elif [ -f ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec ]; then
+	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec .
+	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/hydra_pmi_proxy .
+else
+	echo "MPICH not found"
+	exit 1
+fi
+
+echo "Moving GDAL binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gdal/install/bin/gdal-config ]; then
+	cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdalsrsinfo .
+	cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdaltransform .
+else
+	echo "GDAL not found"
+	exit 1
+fi
+
+echo "Moving GMT binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt-config ]; then
+	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt .
+	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmtselect .
+else
+	echo "GMT not found"
+	exit 1
+fi
+
+echo "Moving Gmsh binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh ]; then
+	cp ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh .
+else
+	echo "Gmsh not found"
+	exit 1
+fi
+
+echo "Moving libgfortran to lib/"
+cp ${LIBGFORTRAN} ${LIBGFORTRAN_DIST} 2> /dev/null
+
+echo "Moving GSHHG assets to share/"
+if [ -d ${ISSM_DIR}/externalpackages/gmt/install/share/coast ]; then
+	mkdir ${ISSM_DIR}/share 2> /dev/null
+	cp -R ${ISSM_DIR}/externalpackages/gmt/install/share/coast ${ISSM_DIR}/share
+else
+	echo "GSHHG not found"
+	exit 1
+fi
+
+echo "Moving PROJ assets to share/"
+if [ -d ${ISSM_DIR}/externalpackages/proj/install/share/proj ]; then
+	mkdir ${ISSM_DIR}/share 2> /dev/null
+	cp -R ${ISSM_DIR}/externalpackages/proj/install/share/proj ${ISSM_DIR}/share
+else
+	echo "PROJ not found"
+	exit 1
+fi
+
+# Run tests
+if [ ${skip_tests} -eq 0 ]; then
+	echo "Running tests"
+	cd ${ISSM_DIR}/test/NightlyRun
+	rm matlab.log 2> /dev/null
+
+	# Run tests, redirecting output to logfile and suppressing output to console
+	${MATLAB_PATH}/bin/matlab -nojvm -nosplash -nojvm -r "try, addpath ${ISSM_DIR}/bin ${ISSM_DIR}/lib ${ISSM_DIR}/share; runme(${MATLAB_NROPTIONS}); exit; catch me,fprintf('%s',getReport(me)); exit; end" &> matlab.log
+
+	# Check that MATLAB did not exit in error
+	matlabExitedInError=`grep -c -E "Activation cannot proceed|Error in|Illegal|Invalid MEX-file|license|Warning: Name is nonexistent or not a directory" matlab.log`
+
+	if [ ${matlabExitedInError} -ne 0 ]; then
+		echo "----------MATLAB exited in error!----------"
+		cat matlab.log
+		echo "-----------End of matlab.log-----------"
+
+		# Clean up execution directory
+		rm -rf ${ISSM_DIR}/execution/*
+
+		exit 1
+	fi
+
+	# Check that all tests passed
+	sed -i "/FAILED TO establish the default connection to the WindowServer/d" matlab.log # First, need to remove WindowServer error message
+	numTestsFailed=`grep -c -E "FAILED|ERROR" matlab.log`
+
+	if [ ${numTestsFailed} -ne 0 ]; then
+		echo "One or more tests FAILED"
+		cat matlab.log
+		exit 1
+	else
+		echo "All tests PASSED"
+	fi
+else
+	echo "Skipping tests"
+fi
+
+# Create package
+cd ${ISSM_DIR}
+svn cleanup --remove-ignored --remove-unversioned test # Clean up test directory (before copying to package)
+echo "Copying assets to package: ${PKG}"
+cp -rf bin examples lib scripts share test ${PKG}
+mkdir ${PKG}/execution
+echo "Cleaning up unneeded/unwanted files"
+rm -f ${PKG}/bin/generic_static.* # Remove static versions of generic cluster classes
+rm -f ${PKG}/lib/*.a # Remove static libraries from package
+rm -f ${PKG}/lib/*.la # Remove libtool libraries from package
+rm -rf ${PKG}/test/SandBox # Remove testing sandbox from package
+
+# Compress package
+echo "Compressing package"
+tar -czf ${COMPRESSED_PKG} ${PKG}
Index: /issm/branches/trunk-dlcheng-ASE/packagers/linux/package-issm-linux-binaries-python-3.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/linux/package-issm-linux-binaries-python-3.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/linux/package-issm-linux-binaries-python-3.sh	(revision 27955)
@@ -0,0 +1,185 @@
+#!/bin/bash
+
+################################################################################
+# Packages and tests ISSM distributable package for Linux with Python 3 API.
+#
+# Options:
+# -s/--skiptests		Skip testing during packaging Use if packaging fails 
+#						for some reason but build is valid.
+#
+# NOTE:
+# - Assumes that the following constants are defined,
+#
+#		COMPRESSED_PKG
+#		ISSM_DIR
+#		PKG
+#
+# See also:
+# - packagers/linux/complete-issm-linux-binaries-python-3.sh
+################################################################################
+
+# Expand aliases within the context of this script
+shopt -s expand_aliases
+
+## Override certain aliases
+#
+alias grep=$(which grep)
+
+## Constants
+#
+LIBGFORTRAN="/usr/lib/x86_64-linux-gnu/libgfortran.so.5.0.0" # Important that this is the library itself
+LIBGFORTRAN_DIST="${ISSM_DIR}/lib/libgfortran.so.5" # Important the file name matches the SONAME entry in the binaries and other shared libraries which link to it
+PYTHON_NROPTIONS="--benchmark all --exclude 125 126 129 234 235 418 420 435 444 445 701 702 703 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1201 1202 1203 1204 1205 1206 1207 1208 1301 1302 1303 1304 1401 1402 1601 1602 2002 2003 2004 2005 2006 2007 2008 2010 2011 2012 2013 2020 2021 2051 2052 2053 2084 2085 2090 2091 2092 2101 2424 2425 3001:3300 3480 3481 4001:4100" # NOTE: Combination of test suites from basic, Dakota, and Solid Earth builds, with tests that require a restart and those that require the JVM excluded
+
+## Environment
+#
+export PATH="${ISSM_DIR}/bin:$(getconf PATH)" # Ensure that we pick up binaries from 'bin' directory rather than 'externalpackages'
+
+## Parse options
+#
+if [ $# -gt 1 ]; then
+	echo "Can use only one option at a time"
+	exit 1
+fi
+
+skip_tests=0
+
+if [ $# -eq 1 ]; then
+	case $1 in
+		-s|--skiptests) skip_tests=1;					;;
+		*) echo "Unknown parameter passed: $1"; exit 1	;;
+	esac
+fi
+
+# Clean up from previous packaging
+echo "Cleaning up existing assets"
+cd ${ISSM_DIR}
+rm -rf ${PKG} ${COMPRESSED_PKG}
+mkdir ${PKG}
+
+# Add required binaries and libraries to package and modify them where needed
+cd ${ISSM_DIR}/bin
+
+echo "Modify generic"
+cat generic_static.py | sed -e "s/generic_static/generic/g" > generic.py
+
+echo "Moving MPICH binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec ]; then
+	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec .
+	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/hydra_pmi_proxy .
+elif [ -f ${ISSM_DIR}/mpich/install/bin/mpiexec ]; then
+	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec .
+	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/hydra_pmi_proxy .
+else
+	echo "MPICH not found"
+	exit 1
+fi
+
+echo "Moving GDAL binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gdal/install/bin/gdal-config ]; then
+	cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdalsrsinfo .
+	cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdaltransform .
+else
+	echo "GDAL not found"
+	exit 1
+fi
+
+echo "Moving GMT binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt-config ]; then
+	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt .
+	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmtselect .
+else
+	echo "GMT not found"
+	exit 1
+fi
+
+echo "Moving Gmsh binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh ]; then
+	cp ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh .
+else
+	echo "Gmsh not found"
+	exit 1
+fi
+
+echo "Moving libgfortran to lib/"
+cp ${LIBGFORTRAN} ${LIBGFORTRAN_DIST} 2> /dev/null
+
+echo "Moving GSHHG assets to share/"
+if [ -d ${ISSM_DIR}/externalpackages/gmt/install/share/coast ]; then
+	mkdir ${ISSM_DIR}/share 2> /dev/null
+	cp -R ${ISSM_DIR}/externalpackages/gmt/install/share/coast ${ISSM_DIR}/share
+else
+	echo "GSHHG not found"
+	exit 1
+fi
+
+echo "Moving PROJ assets to share/"
+if [ -d ${ISSM_DIR}/externalpackages/proj/install/share/proj ]; then
+	mkdir ${ISSM_DIR}/share 2> /dev/null
+	cp -R ${ISSM_DIR}/externalpackages/proj/install/share/proj ${ISSM_DIR}/share
+else
+	echo "PROJ not found"
+	exit 1
+fi
+
+# Run tests
+if [ ${skip_tests} -eq 0 ]; then
+	echo "Running tests"
+	cd ${ISSM_DIR}/test/NightlyRun
+	rm python.log 2> /dev/null
+
+	# Set Python environment
+	export PYTHONPATH="${ISSM_DIR}/src/m/dev"
+	export PYTHONSTARTUP="${PYTHONPATH}/devpath.py"
+	export PYTHONUNBUFFERED=1 # We don't want Python to buffer output, otherwise issm.exe output is not captured
+
+	# Run tests, redirecting output to logfile and suppressing output to console
+	./runme.py ${PYTHON_NROPTIONS} &> python.log 2>&1
+
+	# Check that Python did not exit in error
+	pythonExitCode=`echo $?`
+	pythonExitedInError=`grep -c -E "Error|No such file or directory|Permission denied|Standard exception|Traceback|bad interpreter|syntax error" python.log`
+
+	if [[ ${pythonExitCode} -ne 0 || ${pythonExitedInError} -ne 0 ]]; then
+		echo "----------Python exited in error!----------"
+		cat python.log
+		echo "-----------End of python.log-----------"
+
+		# Clean up execution directory
+		rm -rf ${ISSM_DIR}/execution/*
+
+		exit 1
+	fi
+
+	# Check that all tests passed
+	sed -i "/FAILED TO establish the default connection to the WindowServer/d" python.log # First, need to remove WindowServer error message
+	numTestsFailed=`grep -c -E "FAILED|ERROR" python.log`
+
+	if [[ ${numTestsFailed} -ne 0 ]]; then
+		echo "One or more tests FAILED"
+		cat python.log
+		exit 1
+	else
+		echo "All tests PASSED"
+	fi
+else
+	echo "Skipping tests"
+fi
+
+# Create package
+cd ${ISSM_DIR}
+svn cleanup --remove-ignored --remove-unversioned test # Clean up test directory (before copying to package)
+echo "Copying assets to package: ${PKG}"
+cp -rf bin examples lib scripts share test ${PKG}
+mkdir ${PKG}/execution
+# ${ISSM_DIR}/scripts/py_to_pyc.sh ${PKG}/bin # Compile Python source files
+echo "Cleaning up unneeded/unwanted files"
+# rm -f ${PKG}/bin/*.py # Remove all Python scripts
+rm -f ${PKG}/bin/generic_static.* # Remove static versions of generic cluster classes
+rm -f ${PKG}/lib/*.a # Remove static libraries from package
+rm -f ${PKG}/lib/*.la # Remove libtool libraries from package
+rm -rf ${PKG}/test/SandBox # Remove testing sandbox from package
+
+# Compress package
+echo "Compressing package"
+tar -czf ${COMPRESSED_PKG} ${PKG}
Index: /issm/branches/trunk-dlcheng-ASE/packagers/linux/transfer-issm-linux-binaries.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/linux/transfer-issm-linux-binaries.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/linux/transfer-issm-linux-binaries.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+################################################################################
+# Transfers ISSM distributable package for Linux to ISSM website.
+#
+# NOTE:
+# - Assumes that the following constants are defined,
+#
+#		COMPRESSED_PKG
+#
+# See also:
+# - packagers/linux/complete-issm-linux-binaries-matlab.sh
+# - packagers/linux/complete-issm-linux-binaries-python-2.sh
+# - packagers/linux/complete-issm-linux-binaries-python-3.sh
+################################################################################
+
+# Transfer package to ISSM Web site
+echo "Transferring package to ISSM Web site"
+scp -i ~/.ssh/debian_linux-vm_to_ross ${COMPRESSED_PKG} jenkins@ross.ics.uci.edu:/var/www/html/${COMPRESSED_PKG}
+
+if [ $? -ne 0 ]; then
+	echo "Transfer failed! Verify connection then build this project again (with -t/--transferonly option to skip building and packaging)."
+	exit 1
+fi
Index: /issm/branches/trunk-dlcheng-ASE/packagers/mac/commit_for_signing-issm-mac-binaries-matlab.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/mac/commit_for_signing-issm-mac-binaries-matlab.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/mac/commit_for_signing-issm-mac-binaries-matlab.sh	(revision 27955)
@@ -0,0 +1,249 @@
+#!/bin/bash
+
+################################################################################
+# Commits ISSM distributable package for macOS with MATLAB API to repository 
+# for signing. This repository is polled by a project running on a JPL 
+# Cybersecurity Jenkins server and performs the actual signing and 
+# notarization.
+#
+# Options:
+# -r/--resign			Skip ISSM compilation and packaging. Use to retrigger 
+#						signing/notarization if it fails but build and package 
+#						are valid.
+# -u/--unlock			Remove lock file from signed package repository. Use if 
+#						build is aborted to allow for subsequent fresh build.
+#
+# NOTE:
+# - Assumes that the following constants are defined,
+#
+#		COMPRESSED_PKG
+#		ISSM_BINARIES_REPO_PASS
+#		ISSM_BINARIES_REPO_USER
+#		SIGNED_REPO_COPY
+#		SIGNED_REPO_URL
+#
+# See also:
+# - packagers/mac/complete-issm-mac-binaries-matlab.sh
+# - packagers/mac/sign-issm-mac-binaries-matlab.sh
+#
+# TODO:
+# - Generalize checkout_*_repo_copy and validate_*_repo_copy functions (e.g. 
+#	pass 'signed' or 'unsigned' as argument)
+################################################################################
+
+# Expand aliases within the context of this script
+shopt -s expand_aliases
+
+# NOTE: For some reason, calling svn from within the context of this script 
+#		gives,
+#
+#			svn: command not found
+#
+#		even though it is installed via Homebrew and available at the following 
+#		path.
+#
+alias svn='/usr/local/bin/svn'
+
+## Override certain other aliases
+#
+alias cp=$(which cp)
+alias grep=$(which grep)
+
+## Constants
+#
+MAX_SIGNING_CHECK_ATTEMPTS=30
+NOTARIZATION_LOGFILE="notarization.log"
+RETRIGGER_SIGNING_FILE="retrigger.txt"
+SIGNING_CHECK_PERIOD=60 # in seconds
+SIGNING_LOCK_FILE="signing.lock"
+UNSIGNED_REPO_COPY="./unsigned"
+UNSIGNED_REPO_URL="https://issm.ess.uci.edu/svn/issm-binaries/mac/matlab/unsigned"
+
+## Functions
+#
+checkout_signed_repo_copy(){
+	echo "Checking out copy of repository for signed packages"
+
+	# NOTE: Get empty copy because we do not want to have to check out package 
+	#		from previous signing.
+	#
+	svn checkout \
+		--trust-server-cert \
+		--non-interactive \
+		--depth empty \
+		--username ${ISSM_BINARIES_REPO_USER} \
+		--password ${ISSM_BINARIES_REPO_PASS} \
+		${SIGNED_REPO_URL} \
+		${SIGNED_REPO_COPY} > /dev/null 2>&1
+}
+checkout_unsigned_repo_copy(){
+	echo "Checking out copy of repository for unsigned packages"
+	svn checkout \
+		--trust-server-cert \
+		--non-interactive \
+		--username ${ISSM_BINARIES_REPO_USER} \
+		--password ${ISSM_BINARIES_REPO_PASS} \
+		${UNSIGNED_REPO_URL} \
+		${UNSIGNED_REPO_COPY} > /dev/null 2>&1
+}
+validate_signed_repo_copy(){
+	# Validate copy of repository for signed binaries (e.g. 
+	# 'Check-out Strategy' was set to 'Use 'svn update' as much as possible'; 
+	# initial checkout failed)
+	if [[ ! -d ${SIGNED_REPO_COPY} || ! -d ${SIGNED_REPO_COPY}/.svn ]]; then
+		rm -rf ${SIGNED_REPO_COPY}
+		checkout_signed_repo_copy
+	fi
+}
+validate_unsigned_repo_copy(){
+	# Validate copy of repository for unsigned binaries (e.g. 
+	# 'Check-out Strategy' was set to 'Use 'svn update' as much as possible'; 
+	# initial checkout failed)
+	if [[ ! -d ${UNSIGNED_REPO_COPY} || ! -d ${UNSIGNED_REPO_COPY}/.svn ]]; then
+		rm -rf ${UNSIGNED_REPO_COPY}
+		checkout_unsigned_repo_copy
+	fi
+}
+
+## Parse options
+#
+if [ $# -gt 1 ]; then
+	echo "Can use only one option at a time"
+	exit 1
+fi
+
+retrigger_signing=0
+unlock=0
+
+if [ $# -eq 1 ]; then
+	case $1 in
+		-r|--resign)	retrigger_signing=1;	;;
+		-u|--unlock)	unlock=1;				;;
+		*) echo "Unknown parameter passed: $1"; exit 1	;;
+	esac
+fi
+
+validate_signed_repo_copy
+
+if [ ${unlock} -eq 1 ]; then
+	# Remove signing lock file from signed package repository so that a new 
+	# build can run
+	echo "Removing lock file from repository for signed packages"
+	svn update \
+		--trust-server-cert \
+		--non-interactive \
+		--username ${ISSM_BINARIES_REPO_USER} \
+		--password ${ISSM_BINARIES_REPO_PASS} \
+		${SIGNED_REPO_COPY}/${SIGNING_LOCK_FILE} > /dev/null 2>&1
+	svn delete ${SIGNED_REPO_COPY}/${SIGNING_LOCK_FILE} > /dev/null 2>&1
+	svn commit \
+		--trust-server-cert \
+		--non-interactive \
+		--username ${ISSM_BINARIES_REPO_USER} \
+		--password ${ISSM_BINARIES_REPO_PASS} \
+		--message "DEL: Removing lock file after failed build" ${SIGNED_REPO_COPY} > /dev/null 2>&1
+	svn cleanup ${SIGNED_REPO_COPY} > /dev/null 2>&1
+
+	echo "Remove -u/--unlock option from configuration and run again"
+	exit 1
+fi
+
+# If lock file exists, a signing build is still in process by JPL Cybersecurity
+svn update \
+	--trust-server-cert \
+	--non-interactive \
+	--username ${ISSM_BINARIES_REPO_USER} \
+	--password ${ISSM_BINARIES_REPO_PASS} \
+	${SIGNED_REPO_COPY}/${SIGNING_LOCK_FILE} > /dev/null 2>&1
+
+if [ -f ${SIGNED_REPO_COPY}/${SIGNING_LOCK_FILE} ]; then
+	echo "Previous signing job still in process by JPL Cybersecurity. Please try again later."
+	exit 1
+fi
+
+# Commit lock file to repository for signed packages
+echo "Committing lock file to repository for signed packages"
+touch ${SIGNED_REPO_COPY}/${SIGNING_LOCK_FILE}
+svn add ${SIGNED_REPO_COPY}/${SIGNING_LOCK_FILE} > /dev/null 2>&1
+svn commit \
+	--trust-server-cert \
+	--non-interactive \
+	--username ${ISSM_BINARIES_REPO_USER} \
+	--password ${ISSM_BINARIES_REPO_PASS} \
+	--message "ADD: New lock file" ${SIGNED_REPO_COPY} > /dev/null 2>&1
+
+# Check out copy of repository for unsigned packages
+validate_unsigned_repo_copy
+
+if [ ${retrigger_signing} -eq 0 ]; then
+	# Commit new compressed package to repository for unsigned binaries
+	echo "Committing package to repository for unsigned packages"
+	cp ${COMPRESSED_PKG} ${UNSIGNED_REPO_COPY}
+	svn add ${UNSIGNED_REPO_COPY}/${COMPRESSED_PKG} > /dev/null 2>&1
+	svn commit \
+		--trust-server-cert \
+		--non-interactive \
+		--username ${ISSM_BINARIES_REPO_USER} \
+		--password ${ISSM_BINARIES_REPO_PASS} \
+		--message "CHG: New unsigned package" ${UNSIGNED_REPO_COPY} > /dev/null 2>&1
+else
+	# NOTE: If notarize_only == 1, we commit a dummy file as we do not want to 
+	#		have to commit the entire compressed package again simply to 
+	#		retrigger the signing build on the remote JPL Cybersecurity Jenkins 
+	#		server.
+	#
+	echo "Attempting to sign existing package again"
+	echo $(date +'%Y-%m-%d-%H-%M-%S') > ${UNSIGNED_REPO_COPY}/${RETRIGGER_SIGNING_FILE} # Write datetime stamp to file to ensure modification is made
+	svn add ${UNSIGNED_REPO_COPY}/${RETRIGGER_SIGNING_FILE} > /dev/null 2>&1
+	svn commit \
+		--trust-server-cert \
+		--non-interactive \
+		--username ${ISSM_BINARIES_REPO_USER} \
+		--password ${ISSM_BINARIES_REPO_PASS} \
+		--message "ADD: Retriggering signing with same package (previous attempt failed)" ${UNSIGNED_REPO_COPY} > /dev/null 2>&1
+fi
+
+# Check status of signing
+echo "Checking progress of signing..."
+SIGNING_CHECK_ATTEMPT=0
+while [ ${SIGNING_CHECK_ATTEMPT} -lt ${MAX_SIGNING_CHECK_ATTEMPTS} ]; do
+	echo "...in progress still; checking again in ${SIGNING_CHECK_PERIOD} seconds"
+	sleep ${SIGNING_CHECK_PERIOD}
+	svn update \
+		--trust-server-cert \
+		--non-interactive \
+		--username ${ISSM_BINARIES_REPO_USER} \
+		--password ${ISSM_BINARIES_REPO_PASS} \
+		${SIGNED_REPO_COPY} > /dev/null 2>&1
+
+	if [ ! -f ${SIGNED_REPO_COPY}/${SIGNING_LOCK_FILE} ]; then
+		# Retrieve notarization lock file
+		svn update \
+			--trust-server-cert \
+			--non-interactive \
+			--username ${ISSM_BINARIES_REPO_USER} \
+			--password ${ISSM_BINARIES_REPO_PASS} \
+			${SIGNED_REPO_COPY}/${NOTARIZATION_LOGFILE}
+
+		# Check status
+		STATUS=$(grep 'Status:' ${SIGNED_REPO_COPY}/${NOTARIZATION_LOGFILE} | sed -e 's/[[:space:]]*Status: //')
+		if [[ "${STATUS}" == "success" ]]; then
+			echo "Notarization successful!"
+			break
+		else
+			echo "Notarization failed!"
+			echo "----------------------- Contents of notarization logfile -----------------------"
+			cat ${SIGNED_REPO_COPY}/${NOTARIZATION_LOGFILE}
+			echo "--------------------------------------------------------------------------------"
+
+			exit 1
+		fi
+	else
+		((++SIGNING_CHECK_ATTEMPT))
+	fi
+done
+
+if [ ! -f ${SIGNED_REPO_COPY}/${NOTARIZATION_LOGFILE} ]; then
+	echo "Signing timed out!"
+	exit 1
+fi
Index: /issm/branches/trunk-dlcheng-ASE/packagers/mac/commit_for_signing-issm-mac-binaries-python-3.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/mac/commit_for_signing-issm-mac-binaries-python-3.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/mac/commit_for_signing-issm-mac-binaries-python-3.sh	(revision 27955)
@@ -0,0 +1,249 @@
+#!/bin/bash
+
+################################################################################
+# Commits ISSM distributable package for macOS with Python 3 API to repository 
+# for signing. This repository is polled by a project running on a JPL 
+# Cybersecurity Jenkins server and performs the actual signing and 
+# notarization.
+#
+# Options:
+# -r/--resign			Skip ISSM compilation and packaging. Use to retrigger 
+#						signing/notarization if it fails but build and package 
+#						are valid.
+# -u/--unlock			Remove lock file from signed package repository. Use if 
+#						build is aborted to allow for subsequent fresh build.
+#
+# NOTE:
+# - Assumes that the following constants are defined,
+#
+#		COMPRESSED_PKG
+#		ISSM_BINARIES_REPO_PASS
+#		ISSM_BINARIES_REPO_USER
+#		SIGNED_REPO_COPY
+#		SIGNED_REPO_URL
+#
+# See also:
+# - packagers/mac/complete-issm-mac-binaries-python-3.sh
+# - packagers/mac/sign-issm-mac-binaries-python-3.sh
+#
+# TODO:
+# - Generalize checkout_*_repo_copy and validate_*_repo_copy functions (e.g. 
+#	pass 'signed' or 'unsigned' as argument)
+################################################################################
+
+# Expand aliases within the context of this script
+shopt -s expand_aliases
+
+# NOTE: For some reason, calling svn from within the context of this script 
+#		gives,
+#
+#			svn: command not found
+#
+#		even though it is installed via Homebrew and available at the following 
+#		path.
+#
+alias svn='/usr/local/bin/svn'
+
+## Override certain other aliases
+#
+alias cp=$(which cp)
+alias grep=$(which grep)
+
+## Constants
+#
+MAX_SIGNING_CHECK_ATTEMPTS=30
+NOTARIZATION_LOGFILE="notarization.log"
+RETRIGGER_SIGNING_FILE="retrigger.txt"
+SIGNING_CHECK_PERIOD=60 # in seconds
+SIGNING_LOCK_FILE="signing.lock"
+UNSIGNED_REPO_COPY="./unsigned"
+UNSIGNED_REPO_URL="https://issm.ess.uci.edu/svn/issm-binaries/mac/python/3/unsigned"
+
+## Functions
+#
+checkout_signed_repo_copy(){
+	echo "Checking out copy of repository for signed packages"
+
+	# NOTE: Get empty copy because we do not want to have to check out package 
+	#		from previous signing.
+	#
+	svn checkout \
+		--trust-server-cert \
+		--non-interactive \
+		--depth empty \
+		--username ${ISSM_BINARIES_REPO_USER} \
+		--password ${ISSM_BINARIES_REPO_PASS} \
+		${SIGNED_REPO_URL} \
+		${SIGNED_REPO_COPY} > /dev/null 2>&1
+}
+checkout_unsigned_repo_copy(){
+	echo "Checking out copy of repository for unsigned packages"
+	svn checkout \
+		--trust-server-cert \
+		--non-interactive \
+		--username ${ISSM_BINARIES_REPO_USER} \
+		--password ${ISSM_BINARIES_REPO_PASS} \
+		${UNSIGNED_REPO_URL} \
+		${UNSIGNED_REPO_COPY} > /dev/null 2>&1
+}
+validate_signed_repo_copy(){
+	# Validate copy of repository for signed binaries (e.g. 
+	# 'Check-out Strategy' was set to 'Use 'svn update' as much as possible'; 
+	# initial checkout failed)
+	if [[ ! -d ${SIGNED_REPO_COPY} || ! -d ${SIGNED_REPO_COPY}/.svn ]]; then
+		rm -rf ${SIGNED_REPO_COPY}
+		checkout_signed_repo_copy
+	fi
+}
+validate_unsigned_repo_copy(){
+	# Validate copy of repository for unsigned binaries (e.g. 
+	# 'Check-out Strategy' was set to 'Use 'svn update' as much as possible'; 
+	# initial checkout failed)
+	if [[ ! -d ${UNSIGNED_REPO_COPY} || ! -d ${UNSIGNED_REPO_COPY}/.svn ]]; then
+		rm -rf ${UNSIGNED_REPO_COPY}
+		checkout_unsigned_repo_copy
+	fi
+}
+
+## Parse options
+#
+if [ $# -gt 1 ]; then
+	echo "Can use only one option at a time"
+	exit 1
+fi
+
+retrigger_signing=0
+unlock=0
+
+if [ $# -eq 1 ]; then
+	case $1 in
+		-r|--resign)	retrigger_signing=1;	;;
+		-u|--unlock)	unlock=1;				;;
+		*) echo "Unknown parameter passed: $1"; exit 1	;;
+	esac
+fi
+
+validate_signed_repo_copy
+
+if [ ${unlock} -eq 1 ]; then
+	# Remove signing lock file from signed package repository so that a new 
+	# build can run
+	echo "Removing lock file from repository for signed packages"
+	svn update \
+		--trust-server-cert \
+		--non-interactive \
+		--username ${ISSM_BINARIES_REPO_USER} \
+		--password ${ISSM_BINARIES_REPO_PASS} \
+		${SIGNED_REPO_COPY}/${SIGNING_LOCK_FILE} > /dev/null 2>&1
+	svn delete ${SIGNED_REPO_COPY}/${SIGNING_LOCK_FILE} > /dev/null 2>&1
+	svn commit \
+		--trust-server-cert \
+		--non-interactive \
+		--username ${ISSM_BINARIES_REPO_USER} \
+		--password ${ISSM_BINARIES_REPO_PASS} \
+		--message "DEL: Removing lock file after failed build" ${SIGNED_REPO_COPY} > /dev/null 2>&1
+	svn cleanup ${SIGNED_REPO_COPY} > /dev/null 2>&1
+
+	echo "Remove -u/--unlock option from configuration and run again"
+	exit 1
+fi
+
+# If lock file exists, a signing build is still in process by JPL Cybersecurity
+svn update \
+	--trust-server-cert \
+	--non-interactive \
+	--username ${ISSM_BINARIES_REPO_USER} \
+	--password ${ISSM_BINARIES_REPO_PASS} \
+	${SIGNED_REPO_COPY}/${SIGNING_LOCK_FILE} > /dev/null 2>&1
+
+if [ -f ${SIGNED_REPO_COPY}/${SIGNING_LOCK_FILE} ]; then
+	echo "Previous signing job still in process by JPL Cybersecurity. Please try again later."
+	exit 1
+fi
+
+# Commit lock file to repository for signed packages
+echo "Committing lock file to repository for signed packages"
+touch ${SIGNED_REPO_COPY}/${SIGNING_LOCK_FILE}
+svn add ${SIGNED_REPO_COPY}/${SIGNING_LOCK_FILE} > /dev/null 2>&1
+svn commit \
+	--trust-server-cert \
+	--non-interactive \
+	--username ${ISSM_BINARIES_REPO_USER} \
+	--password ${ISSM_BINARIES_REPO_PASS} \
+	--message "ADD: New lock file" ${SIGNED_REPO_COPY} > /dev/null 2>&1
+
+# Check out copy of repository for unsigned packages
+validate_unsigned_repo_copy
+
+if [ ${retrigger_signing} -eq 0 ]; then
+	# Commit new compressed package to repository for unsigned binaries
+	echo "Committing package to repository for unsigned packages"
+	cp ${COMPRESSED_PKG} ${UNSIGNED_REPO_COPY}
+	svn add ${UNSIGNED_REPO_COPY}/${COMPRESSED_PKG} > /dev/null 2>&1
+	svn commit \
+		--trust-server-cert \
+		--non-interactive \
+		--username ${ISSM_BINARIES_REPO_USER} \
+		--password ${ISSM_BINARIES_REPO_PASS} \
+		--message "CHG: New unsigned package" ${UNSIGNED_REPO_COPY} > /dev/null 2>&1
+else
+	# NOTE: If notarize_only == 1, we commit a dummy file as we do not want to 
+	#		have to commit the entire compressed package again simply to 
+	#		retrigger the signing build on the remote JPL Cybersecurity Jenkins 
+	#		server.
+	#
+	echo "Attempting to sign existing package again"
+	echo $(date +'%Y-%m-%d-%H-%M-%S') > ${UNSIGNED_REPO_COPY}/${RETRIGGER_SIGNING_FILE} # Write datetime stamp to file to ensure modification is made
+	svn add ${UNSIGNED_REPO_COPY}/${RETRIGGER_SIGNING_FILE} > /dev/null 2>&1
+	svn commit \
+		--trust-server-cert \
+		--non-interactive \
+		--username ${ISSM_BINARIES_REPO_USER} \
+		--password ${ISSM_BINARIES_REPO_PASS} \
+		--message "ADD: Retriggering signing with same package (previous attempt failed)" ${UNSIGNED_REPO_COPY} > /dev/null 2>&1
+fi
+
+# Check status of signing
+echo "Checking progress of signing..."
+SIGNING_CHECK_ATTEMPT=0
+while [ ${SIGNING_CHECK_ATTEMPT} -lt ${MAX_SIGNING_CHECK_ATTEMPTS} ]; do
+	echo "...in progress still; checking again in ${SIGNING_CHECK_PERIOD} seconds"
+	sleep ${SIGNING_CHECK_PERIOD}
+	svn update \
+		--trust-server-cert \
+		--non-interactive \
+		--username ${ISSM_BINARIES_REPO_USER} \
+		--password ${ISSM_BINARIES_REPO_PASS} \
+		${SIGNED_REPO_COPY} > /dev/null 2>&1
+
+	if [ ! -f ${SIGNED_REPO_COPY}/${SIGNING_LOCK_FILE} ]; then
+		# Retrieve notarization lock file
+		svn update \
+			--trust-server-cert \
+			--non-interactive \
+			--username ${ISSM_BINARIES_REPO_USER} \
+			--password ${ISSM_BINARIES_REPO_PASS} \
+			${SIGNED_REPO_COPY}/${NOTARIZATION_LOGFILE}
+
+		# Check status
+		STATUS=$(grep 'Status:' ${SIGNED_REPO_COPY}/${NOTARIZATION_LOGFILE} | sed -e 's/[[:space:]]*Status: //')
+		if [[ "${STATUS}" == "success" ]]; then
+			echo "Notarization successful!"
+			break
+		else
+			echo "Notarization failed!"
+			echo "----------------------- Contents of notarization logfile -----------------------"
+			cat ${SIGNED_REPO_COPY}/${NOTARIZATION_LOGFILE}
+			echo "--------------------------------------------------------------------------------"
+
+			exit 1
+		fi
+	else
+		((++SIGNING_CHECK_ATTEMPT))
+	fi
+done
+
+if [ ! -f ${SIGNED_REPO_COPY}/${NOTARIZATION_LOGFILE} ]; then
+	echo "Signing timed out!"
+	exit 1
+fi
Index: /issm/branches/trunk-dlcheng-ASE/packagers/mac/complete-issm-mac-binaries-matlab.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/mac/complete-issm-mac-binaries-matlab.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/mac/complete-issm-mac-binaries-matlab.sh	(revision 27955)
@@ -0,0 +1,148 @@
+#!/bin/bash
+
+################################################################################
+# Wrapper script to build, package, send for signing, and transfer to ISSM Web 
+# site ISSM distributable package for macOS with MATLAB API.
+#
+# Normally, we would put this directly into the project configuration under 
+# 'Build' -> 'Execute shell', but because it is a bit more involved, it is a 
+# good idea to version it.
+#
+# When no failures/errors occur, performs the following:
+# - Builds ISSM according to configuration.
+# - Packages executables and libraries.
+# - Runs test suite against package.
+# - Commits compressed package to repository to be signed by JPL Cybersecurity.
+# - Retrieves signed package and transmits it to ISSM Web site for 
+#	distribution.
+#
+# Options:
+# -b/--skipbuild		Skip ISSM compilation.
+# -r/--resign			Skip ISSM compilation and packaging. Use to retrigger 
+#						signing/notarization if it fails but build and package 
+#						are valid.
+# -s/--skiptests		Skip ISSM compilation and testing during packaging 
+#						step. Use if packaging fails for some reason but build 
+#						is valid.
+# -t/--transferonly		Transfer package to ISSM Web site only. Use if transfer 
+#						fails for some reason to skip building, packaging, and 
+#						signing.
+# -u/--unlock			Remove lock file from signed package repository. Use if 
+#						build is aborted to allow for subsequent fresh build.
+#
+# Debugging:
+# - Relies on a very tight handshake with project on remote JPL Cybersecurity 
+#	Jenkins server. Debugging may be performed locally by running,
+#
+#		packagers/mac/sign-issm-mac-binaries-matlab.sh
+#
+#	with "AD_IDENTITY", "AD_USERNAME", and "ASC_PROVIDER" hardcoded to Apple 
+#	Developer credentials (make sure to also set keychain password in 
+#	"ALTOOL_PASSWORD").
+# - Removing stdout/stderr redirections to null device (> /dev/null 2>&1) can 
+#	help debug potential SVN issues.
+#
+# NOTE:
+# - Use only *one* of the above options at a time, and make sure it is removed 
+#	again after a single run.
+# - Builds will fail when any of the above options are used on a clean 
+#	workspace. For example, if 'Source Code Management' -> 'Check-out Strategy' 
+#	select menu is set to "Always check out a fresh copy".
+# - Assumes that "ISSM_BINARIES_USER" and "ISSM_BINARIES_PASS" are set up in 
+#	the 'Bindings' section under a 'Username and password (separated)' binding 
+#	(requires 'Credentials Binding Plugin') with 'Credentials' select menu set 
+#	to "jenkins/****** (SVN repository for ISSM binaries)".
+################################################################################
+
+## Constants
+#
+PKG="ISSM-macOS-MATLAB" # Name of directory to copy distributable files to
+SIGNED_REPO_COPY="./signed"
+SIGNED_REPO_URL="https://issm.ess.uci.edu/svn/issm-binaries/mac/matlab/signed"
+
+COMPRESSED_PKG="${PKG}.zip"
+
+## Environment
+#
+export COMPRESSED_PKG
+export PKG
+export SIGNED_REPO_COPY
+export SIGNED_REPO_URL
+
+## Parse options
+#
+if [ $# -gt 1 ]; then
+	echo "Can use only one option at a time"
+	exit 1
+fi
+
+# NOTE: We could do this with binary switching (i.e. 0011 to sign and transfer, 
+#		but the following is self-documenting).
+#
+build=1
+package=1
+sign=1
+transfer=1
+
+if [ $# -eq 1 ]; then
+	case $1 in
+		-b|--skipbuild)		build=0;							shift	;;
+		-r|--resign)		build=0;	package=0;						;;
+		-s|--skiptests)		build=0;									;;
+		-t|--transferonly)	build=0;	package=0;	sign=0;				;;
+		-u|--unlock)		build=0;	package=0;	transfer=0;			;;
+		*) echo "Unknown parameter passed: $1"; exit 1 					;;
+	esac
+fi
+
+# Build
+if [ ${build} -eq 1 ]; then
+	./jenkins/jenkins.sh ./jenkins/mac-intel-binaries-matlab
+
+	if [ $? -ne 0 ]; then
+		echo "Failure while compiling"
+		exit 1
+	fi
+fi
+
+# Package
+if [ ${package} -eq 1 ]; then
+	./packagers/mac/package-issm-mac-binaries-matlab.sh $1
+
+	if [ $? -ne 0 ]; then
+		echo "Failure during packaging"
+		exit 1
+	fi
+
+	shift # Clear $1 so that it is not passed to commit_for_signing script
+fi
+
+# Commit for signing
+if [ ${sign} -eq 1 ]; then
+	./packagers/mac/commit_for_signing-issm-mac-binaries-matlab.sh $1
+
+	if [ $? -ne 0 ]; then
+		echo "Failure while committing package for signing"
+		exit 1
+	fi
+fi
+
+# NOTE: Because Mac build nodes are no longer directly connected to UCI 
+#		network and because remote access requires a VPN connection, we can 
+#		no longer transfer signed distributables via SSH. For now, there is 
+#		a cron job running every five minutes under user jenkins on 
+#		ross.ics.uci.edu that runs 
+#		/home/jenkins/bin/update-issm-mac-binaries.sh, which checks for 
+#		updated, signed distributables in the ISSM Binaries SVN repository
+#		and if they are available, copies them to the public directory.
+#
+
+# # Transfer distributable package to ISSM Web site
+# if [ ${transfer} -eq 1 ]; then
+# 	./packagers/mac/transfer-issm-mac-binaries.sh
+
+# 	if [ $? -ne 0 ]; then 
+# 		exit 1
+# 	fi
+# fi
+
Index: /issm/branches/trunk-dlcheng-ASE/packagers/mac/complete-issm-mac-binaries-python-3.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/mac/complete-issm-mac-binaries-python-3.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/mac/complete-issm-mac-binaries-python-3.sh	(revision 27955)
@@ -0,0 +1,145 @@
+#!/bin/bash
+
+################################################################################
+# Wrapper script to build, package, send for signing, and transfer to ISSM Web 
+# site ISSM distributable package for macOS with Python 3 API.
+#
+# Normally, we would put this directly into the project configuration under 
+# 'Build' -> 'Execute shell', but because it is a bit more involved, it is a 
+# good idea to version it.
+#
+# When no failures/errors occur, performs the following:
+# - Builds ISSM according to configuration.
+# - Packages executables and libraries.
+# - Runs test suite against package.
+# - Commits compressed package to repository to be signed by JPL Cybersecurity.
+# - Retrieves signed package and transmits it to ISSM Web site for 
+#	distribution.
+#
+# Options:
+# -b/--skipbuild		Skip ISSM compilation.
+# -r/--resign			Skip ISSM compilation and packaging. Use to retrigger 
+#						signing/notarization if it fails but build and package 
+#						are valid.
+# -s/--skiptests		Skip ISSM compilation and testing during packaging 
+#						step. Use if packaging fails for some reason but build 
+#						is valid.
+# -t/--transferonly		Transfer package to ISSM Web site only. Use if transfer 
+#						fails for some reason to skip building, packaging, and 
+#						signing.
+# -u/--unlock			Remove lock file from signed package repository. Use if 
+#						build is aborted to allow for subsequent fresh build.
+#
+# Debugging:
+# - Relies on a very tight handshake with project on remote JPL Cybersecurity 
+#	Jenkins server. Debugging may be performed locally by running,
+#
+#		packagers/mac/sign-issm-mac-binaries-python-3.sh
+#
+#	with "AD_IDENTITY", "AD_USERNAME", and "ASC_PROVIDER" hardcoded to Apple 
+#	Developer credentials (make sure to also set keychain password in 
+#	"ALTOOL_PASSWORD").
+# - Removing stdout/stderr redirections to null device (> /dev/null 2>&1) can 
+#	help debug potential SVN issues.
+#
+# NOTE:
+# - Use only *one* of the above options at a time, and make sure it is removed 
+#	again after a single run.
+# - Builds will fail when any of the above options are used on a clean 
+#	workspace. For example, if 'Source Code Management' -> 'Check-out Strategy' 
+#	select menu is set to "Always check out a fresh copy".
+# - Assumes that "ISSM_BINARIES_USER" and "ISSM_BINARIES_PASS" are set up in 
+#	the 'Bindings' section under a 'Username and password (separated)' binding 
+#	(requires 'Credentials Binding Plugin') with 'Credentials' select menu set 
+#	to "jenkins/****** (SVN repository for ISSM binaries)".
+################################################################################
+
+## Constants
+#
+PKG="ISSM-macOS-Python-3" # Name of directory to copy distributable files to
+SIGNED_REPO_COPY="./signed"
+SIGNED_REPO_URL="https://issm.ess.uci.edu/svn/issm-binaries/mac/python/3/signed"
+
+COMPRESSED_PKG="${PKG}.zip"
+
+## Environment
+#
+export COMPRESSED_PKG
+export PKG
+export SIGNED_REPO_COPY
+export SIGNED_REPO_URL
+
+## Parse options
+#
+if [ $# -gt 1 ]; then
+	echo "Can use only one option at a time"
+	exit 1
+fi
+
+# NOTE: We could do this with binary switching (i.e. 0011 to sign and transfer, 
+#		but the following is self-documenting).
+#
+build=1
+package=1
+sign=1
+transfer=1
+
+if [ $# -eq 1 ]; then
+	case $1 in
+		-b|--skipbuild)		build=0;							shift	;;
+		-r|--resign)		build=0;	package=0;						;;
+		-s|--skiptests)		build=0;									;;
+		-t|--transferonly)	build=0;	package=0;	sign=0;				;;
+		-u|--unlock)		build=0;	package=0;	transfer=0;			;;
+		*) echo "Unknown parameter passed: $1"; exit 1 					;;
+	esac
+fi
+
+# Build
+if [ ${build} -eq 1 ]; then
+	./jenkins/jenkins.sh ./jenkins/mac-intel-binaries-python-3
+
+	if [ $? -ne 0 ]; then 
+		exit 1
+	fi
+fi
+
+# Package
+if [ ${package} -eq 1 ]; then
+	./packagers/mac/package-issm-mac-binaries-python-3.sh $1
+
+	if [ $? -ne 0 ]; then 
+		exit 1
+	fi
+
+	shift # Clear $1 so that it is not passed to commit_for_signing script
+fi
+
+# Commit for signing
+if [ ${sign} -eq 1 ]; then
+	./packagers/mac/commit_for_signing-issm-mac-binaries-python-3.sh $1
+
+	if [ $? -ne 0 ]; then 
+		exit 1
+	fi
+fi
+
+# NOTE: Because Mac build nodes are no longer directly connected to UCI 
+#		network and because remote access requires a VPN connection, we can 
+#		no longer transfer signed distributables via SSH. For now, there is 
+#		a cron job running every five minutes under user jenkins on 
+#		ross.ics.uci.edu that runs 
+#		/home/jenkins/bin/update-issm-mac-binaries.sh, which checks for 
+#		updated, signed distributables in the ISSM Binaries SVN repository
+#		and if they are available, copies them to the public directory.
+#
+
+# # Transfer distributable package to ISSM Web site
+# if [ ${transfer} -eq 1 ]; then
+# 	./packagers/mac/transfer-issm-mac-binaries.sh
+
+# 	if [ $? -ne 0 ]; then 
+# 		exit 1
+# 	fi
+# fi
+
Index: /issm/branches/trunk-dlcheng-ASE/packagers/mac/issm-executable_entitlements.plist
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/mac/issm-executable_entitlements.plist	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/mac/issm-executable_entitlements.plist	(revision 27955)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>com.apple.security.cs.disable-library-validation</key>
+	<true/>
+</dict>
+</plist>
Index: /issm/branches/trunk-dlcheng-ASE/packagers/mac/package-issm-mac-binaries-matlab.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/mac/package-issm-mac-binaries-matlab.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/mac/package-issm-mac-binaries-matlab.sh	(revision 27955)
@@ -0,0 +1,192 @@
+#!/bin/bash
+
+################################################################################
+# Packages and tests ISSM distributable package for macOS with MATLAB API.
+#
+# Options:
+# -s/--skiptests		Skip testing during packaging Use if packaging fails 
+#						for some reason but build is valid.
+#
+# NOTE:
+# - Assumes that the following constants are defined,
+#
+#		COMPRESSED_PKG
+#		ISSM_DIR
+#		PKG
+#
+# See also:
+# - packagers/mac/complete-issm-mac-binaries-matlab.sh
+# - packagers/mac/sign-issm-mac-binaries-matlab.sh
+################################################################################
+
+# Expand aliases within the context of this script
+shopt -s expand_aliases
+
+# NOTE: For some reason, calling svn from within the context of this script 
+#		gives,
+#
+#			svn: command not found
+#
+#		even though it is installed via Homebrew and available at the following 
+#		path.
+#
+alias svn='/usr/local/bin/svn'
+
+## Override certain other aliases
+#
+alias cp=$(which cp)
+alias grep=$(which grep)
+
+## Constants
+#
+MATLAB_NROPTIONS="'benchmark','all','exclude',[125,126,129,234,235,418,420,435,444,445,701,702,703,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1201,1202,1203,1204,1205,1206,1207,1208,1301,1302,1303,1304,1401,1402,1601,1602,2002,2003,2004,2006,2007,2008,2010,2011,2012,2013,2020,2021,2051,2052,2053,2084,2085,2090,2091,2092,2101,2424,2425,3001:3300,3480,3481,4001:4100]" # NOTE: Combination of test suites from basic, Dakota, and Solid Earth builds, with tests that require a restart and those that require the JVM excluded
+MATLAB_PATH="/Applications/MATLAB_R2022b.app"
+
+## Environment
+#
+export PATH="${ISSM_DIR}/bin:$(getconf PATH)" # Ensure that we pick up binaries from 'bin' directory rather than 'externalpackages'; used when running tests
+
+## Parse options
+#
+if [ $# -gt 1 ]; then
+	echo "Can use only one option at a time"
+	exit 1
+fi
+
+skip_tests=0
+
+if [ $# -eq 1 ]; then
+	case $1 in
+		-s|--skiptests)	skip_tests=1;					;;
+		*) echo "Unknown parameter passed: $1"; exit 1	;;
+	esac
+fi
+
+# Check if MATLAB exists
+if ! [ -d ${MATLAB_PATH} ]; then
+	echo "${MATLAB_PATH} does not point to a MATLAB installation! Please modify MATLAB_PATH variable in $(basename $0) and try again."
+	exit 1
+fi
+
+# Clean up from previous packaging
+echo "Cleaning up existing assets"
+cd ${ISSM_DIR}
+rm -rf ${PKG} ${COMPRESSED_PKG}
+mkdir ${PKG}
+
+# Add required binaries and libraries to package and modify them where needed
+cd ${ISSM_DIR}/bin
+
+echo "Modify generic"
+cat generic_static.m | sed -e "s/generic_static/generic/g" > generic.m
+
+echo "Moving MPICH binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec ]; then
+	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec .
+	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/hydra_pmi_proxy .
+elif [ -f ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec ]; then
+	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec .
+	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/hydra_pmi_proxy .
+else
+	echo "MPICH not found"
+	exit 1
+fi
+
+echo "Moving GDAL binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gdal/install/bin/gdal-config ]; then
+	cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdalsrsinfo .
+	cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdaltransform .
+else
+	echo "GDAL not found"
+	exit 1
+fi
+
+echo "Moving Gmsh binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh ]; then
+	cp ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh .
+else
+	echo "Gmsh not found"
+	exit 1
+fi
+
+echo "Moving GMT binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt-config ]; then
+	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt .
+	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmtselect .
+else
+	echo "GMT not found"
+	exit 1
+fi
+
+echo "Moving GSHHG assets to share/"
+if [ -d ${ISSM_DIR}/externalpackages/gmt/install/share/coast ]; then
+	mkdir ${ISSM_DIR}/share 2> /dev/null
+	cp -R ${ISSM_DIR}/externalpackages/gmt/install/share/coast ${ISSM_DIR}/share
+else
+	echo "GSHHG not found"
+	exit 1
+fi
+
+echo "Moving PROJ assets to share/"
+if [ -d ${ISSM_DIR}/externalpackages/proj/install/share/proj ]; then
+	mkdir ${ISSM_DIR}/share 2> /dev/null
+	cp -R ${ISSM_DIR}/externalpackages/proj/install/share/proj ${ISSM_DIR}/share
+else
+	echo "PROJ not found"
+	exit 1
+fi
+
+# Run tests
+if [ ${skip_tests} -eq 0 ]; then
+	echo "Running tests"
+	cd ${ISSM_DIR}/test/NightlyRun
+	rm matlab.log 2> /dev/null
+
+	# Run tests, redirecting output to logfile and suppressing output to console
+	${MATLAB_PATH}/bin/matlab -nojvm -nosplash -nojvm -r "try, addpath ${ISSM_DIR}/bin ${ISSM_DIR}/lib ${ISSM_DIR}/share; runme(${MATLAB_NROPTIONS}); exit; catch me,fprintf('%s',getReport(me)); exit; end" &> matlab.log
+
+	# Check that MATLAB did not exit in error
+	matlabExitedInError=`grep -c -E "Activation cannot proceed|Error in|Illegal|Invalid MEX-file|license|Warning: Name is nonexistent or not a directory" matlab.log`
+
+	if [ ${matlabExitedInError} -ne 0 ]; then
+		echo "----------MATLAB exited in error!----------"
+		cat matlab.log
+		echo "-----------End of matlab.log-----------"
+
+		# Clean up execution directory
+		rm -rf ${ISSM_DIR}/execution/*
+
+		exit 1
+	fi
+
+	# Check that all tests passed
+	sed -i '' "/FAILED TO establish the default connection to the WindowServer/d" matlab.log # First, need to remove WindowServer error message
+	numTestsFailed=`grep -c -E "FAILED|ERROR" matlab.log`
+
+	if [ ${numTestsFailed} -ne 0 ]; then
+		echo "One or more tests FAILED"
+		cat matlab.log
+		exit 1
+	else
+		echo "All tests PASSED"
+	fi
+else
+	echo "Skipping tests"
+fi
+
+# Create package
+cd ${ISSM_DIR}
+svn cleanup --remove-ignored --remove-unversioned test # Clean up test directory (before copying to package)
+echo "Copying assets to package: ${PKG}"
+cp -rf bin examples lib scripts share test ${PKG}
+mkdir ${PKG}/execution
+cp packagers/mac/issm-executable_entitlements.plist ${PKG}/bin/entitlements.plist
+echo "Cleaning up unneeded/unwanted files"
+rm -f ${PKG}/bin/generic_static.* # Remove static versions of generic cluster classes
+rm -f ${PKG}/lib/*.a # Remove static libraries from package
+rm -f ${PKG}/lib/*.la # Remove libtool libraries from package
+rm -rf ${PKG}/test/SandBox # Remove testing sandbox from package
+
+# Compress package
+echo "Compressing package"
+ditto -ck --sequesterRsrc --keepParent ${PKG} ${COMPRESSED_PKG}
Index: /issm/branches/trunk-dlcheng-ASE/packagers/mac/package-issm-mac-binaries-python-3.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/mac/package-issm-mac-binaries-python-3.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/mac/package-issm-mac-binaries-python-3.sh	(revision 27955)
@@ -0,0 +1,192 @@
+#!/bin/bash
+
+################################################################################
+# Packages and tests ISSM distributable package for macOS with Python 3 API.
+#
+# Options:
+# -s/--skiptests		Skip testing during packaging Use if packaging fails 
+#						for some reason but build is valid.
+#
+# NOTE:
+# - Assumes that the following constants are defined,
+#
+#		COMPRESSED_PKG
+#		ISSM_DIR
+#		PKG
+#
+# See also:
+# - packagers/mac/complete-issm-mac-binaries-python-3.sh
+# - packagers/mac/sign-issm-mac-binaries-python-3.sh
+################################################################################
+
+# Expand aliases within the context of this script
+shopt -s expand_aliases
+
+# NOTE: For some reason, calling svn from within the context of this script 
+#		gives,
+#
+#			svn: command not found
+#
+#		even though it is installed via Homebrew and available at the following 
+#		path.
+#
+alias svn='/usr/local/bin/svn'
+
+## Override certain other aliases
+#
+alias grep=$(which grep)
+
+## Constants
+#
+PYTHON_NROPTIONS="--benchmark all --exclude 125 126 129 234 235 418 420 435 444 445 701 702 703 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1201 1202 1203 1204 1205 1206 1207 1208 1301 1302 1303 1304 1401 1402 1601 1602 2002 2003 2004 2005 2006 2007 2008 2010 2011 2012 2013 2020 2021 2051 2052 2053 2084 2085 2090 2091 2092 2101 2424 2425 3001:3300 3480 3481 4001:4100" # NOTE: Combination of test suites from basic, Dakota, and Solid Earth builds, with tests that require a restart and those that require the JVM excluded
+
+## Environment
+#
+export PATH="${ISSM_DIR}/bin:$(getconf PATH)" # Ensure that we pick up binaries from 'bin' directory rather than 'externalpackages'
+
+## Parse options
+#
+if [ $# -gt 1 ]; then
+	echo "Can use only one option at a time"
+	exit 1
+fi
+
+skip_tests=0
+
+if [ $# -eq 1 ]; then
+	case $1 in
+		-s|--skiptests)	skip_tests=1;					;;
+		*) echo "Unknown parameter passed: $1"; exit 1	;;
+	esac
+fi
+
+# Clean up from previous packaging
+echo "Cleaning up existing assets"
+cd ${ISSM_DIR}
+rm -rf ${PKG} ${COMPRESSED_PKG}
+mkdir ${PKG}
+
+# Add required binaries and libraries to package and modify them where needed
+cd ${ISSM_DIR}/bin
+
+echo "Modify generic"
+cat generic_static.py | sed -e "s/generic_static/generic/g" > generic.py
+
+echo "Moving MPICH binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec ]; then
+	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec .
+	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/hydra_pmi_proxy .
+elif [ -f ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec ]; then
+	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec .
+	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/hydra_pmi_proxy .
+else
+	echo "MPICH not found"
+	exit 1
+fi
+
+echo "Moving GDAL binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gdal/install/bin/gdal-config ]; then
+	cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdalsrsinfo .
+	cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdaltransform .
+else
+	echo "GDAL not found"
+	exit 1
+fi
+
+echo "Moving Gmsh binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh ]; then
+	cp ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh .
+else
+	echo "Gmsh not found"
+	exit 1
+fi
+
+echo "Moving GMT binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt-config ]; then
+	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt .
+	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmtselect .
+else
+	echo "GMT not found"
+	exit 1
+fi
+
+echo "Moving GSHHG assets to share/"
+if [ -d ${ISSM_DIR}/externalpackages/gmt/install/share/coast ]; then
+	mkdir ${ISSM_DIR}/share 2> /dev/null
+	cp -R ${ISSM_DIR}/externalpackages/gmt/install/share/coast ${ISSM_DIR}/share
+else
+	echo "GSHHG not found"
+	exit 1
+fi
+
+echo "Moving PROJ assets to share/"
+if [ -d ${ISSM_DIR}/externalpackages/proj/install/share/proj ]; then
+	mkdir ${ISSM_DIR}/share 2> /dev/null
+	cp -R ${ISSM_DIR}/externalpackages/proj/install/share/proj ${ISSM_DIR}/share
+else
+	echo "PROJ not found"
+	exit 1
+fi
+
+# Run tests
+if [ ${skip_tests} -eq 0 ]; then
+	echo "Running tests"
+	cd ${ISSM_DIR}/test/NightlyRun
+	rm python.log 2> /dev/null
+
+	# Set Python environment
+	export PYTHONPATH="${ISSM_DIR}/src/m/dev"
+	export PYTHONSTARTUP="${PYTHONPATH}/devpath.py"
+	export PYTHONUNBUFFERED=1 # We don't want Python to buffer output, otherwise issm.exe output is not captured
+
+	# Run tests, redirecting output to logfile and suppressing output to console
+	./runme.py ${PYTHON_NROPTIONS} &> python.log 2>&1
+
+	# Check that Python did not exit in error
+	pythonExitCode=`echo $?`
+	pythonExitedInError=`grep -c -E "Error|No such file or directory|Permission denied|Standard exception|Traceback|bad interpreter|syntax error" python.log`
+
+	if [[ ${pythonExitCode} -ne 0 || ${pythonExitedInError} -ne 0 ]]; then
+		echo "----------Python exited in error!----------"
+		cat python.log
+		echo "-----------End of python.log-----------"
+
+		# Clean up execution directory
+		rm -rf ${ISSM_DIR}/execution/*
+
+		exit 1
+	fi
+
+	# Check that all tests passed
+	sed -i '' "/FAILED TO establish the default connection to the WindowServer/d" python.log # First, need to remove WindowServer error message
+	numTestsFailed=`grep -c -E "FAILED|ERROR" python.log`
+
+	if [ ${numTestsFailed} -ne 0 ]; then
+		echo "One or more tests FAILED"
+		cat python.log
+		exit 1
+	else
+		echo "All tests PASSED"
+	fi
+else
+	echo "Skipping tests"
+fi
+
+# Create package
+cd ${ISSM_DIR}
+svn cleanup --remove-ignored --remove-unversioned test # Clean up test directory (before copying to package)
+echo "Copying assets to package: ${PKG}"
+cp -rf bin examples lib scripts share test ${PKG}
+mkdir ${PKG}/execution
+cp packagers/mac/issm-executable_entitlements.plist ${PKG}/bin/entitlements.plist
+# ${ISSM_DIR}/scripts/py_to_pyc.sh ${PKG}/bin # Compile Python source files
+echo "Cleaning up unneeded/unwanted files"
+# rm -f ${PKG}/bin/*.py # Remove all Python scripts
+rm -f ${PKG}/bin/generic_static.* # Remove static versions of generic cluster classes
+rm -f ${PKG}/lib/*.a # Remove static libraries from package
+rm -f ${PKG}/lib/*.la # Remove libtool libraries from package
+rm -rf ${PKG}/test/SandBox # Remove testing sandbox from package
+
+# Compress package
+echo "Compressing package"
+ditto -ck --sequesterRsrc --keepParent ${PKG} ${COMPRESSED_PKG}
Index: /issm/branches/trunk-dlcheng-ASE/packagers/mac/sign-issm-mac-binaries-matlab.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/mac/sign-issm-mac-binaries-matlab.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/mac/sign-issm-mac-binaries-matlab.sh	(revision 27955)
@@ -0,0 +1,331 @@
+#!/bin/bash
+
+################################################################################
+# Intended to be run in the context of a Jenkins project on a JPL 
+# Cybersecurity server for signing macOS applications. Polls SCM of the 
+# Subversion repository hosted at 
+# https://issm.ess.uci.edu/svn/issm-binaries/mac/matlab/unsigned to trigger new 
+# builds.
+#
+# In order to replicate the requried Jenkins project configuration:
+# - First, navigate to 'Manage Jenkins' -> 'Manage Plugins' and install the 
+#	'Credentials Bindings Plugin' if it is not already installed.
+# - Contact one of the members of the ISSM development team for credentials for 
+#	the ISSM binaries repository (mention that the credentials are stored in 
+#	ISSM-Infrastructure.pdf).
+# - Navigate to 'Manage Jenkins' -> 'Manage Credentials' -> <domain> -> 
+#	'Add Credentials' and enter the credentials from above.
+# - From the 'Dashboard', select 'New Item' -> 'Freestyle project'.
+# - Under 'Source Code Management', select 'Subversion'.
+#		- The 'Repository URL' text field should be set to 
+#		"https://issm.ess.uci.edu/svn/issm-binaries/mac/matlab/unsigned".
+#		- The 'Credentials' select menu should be set to the new credentials 
+#		created previously.
+#		- The 'Local module directory' text field should be set to the same 
+#		value as the constant UNSIGNED_REPO_COPY (set below to './unsigned').
+# - Under 'Build Triggers', check the box for 'Poll SCM' and set the 
+#	'Schedule' text area to "H/5 * * * *".
+# - Under 'Build Environment', check the box for 'Use secret text(s) or 
+#	file(s)', then under 'Bindings' click the 'Add...' button and select 
+#	'Username and password (separated)'.
+#		- Set 'Username Variable' to "ISSM_BINARIES_USER".
+#		- Set 'Password Variable' to "ISSM_BINARIES_PASS".
+# - Under 'Credentials', select the same, new credentials that created 
+#	previously.
+# - The contents of this script can be copied/pasted directly into the ‘Build' 
+#	-> 'Execute Shell' -> ‘Command' textarea of the project configuration (or 
+#	you can simply store the script on disk and call it from there).
+# - Make sure to click the 'Save' button.
+#
+# Current point of contact at JPL Cybersecurity:
+#	Alex Coward, alexander.g.coward@jpl.nasa.gov
+#
+# NOTE:
+# - Assumes that "ISSM_BINARIES_USER" and "ISSM_BINARIES_PASS" are set up in 
+#	the 'Bindings' section under a 'Username and password (separated)' binding 
+#	(requires 'Credentials Binding Plugin').
+# - For local debugging, the aforementioned credentials can be hardcoded into 
+#	the 'USERNAME' and 'PASSWORD' constants below.
+################################################################################
+
+# Expand aliases within the context of this script
+shopt -s expand_aliases
+
+# NOTE: For some reason, calling svn from within the context of this script 
+#		gives,
+#
+#			svn: command not found
+#
+#		even though it is installed via Homebrew and available at the following 
+#		path.
+#
+alias svn='/usr/local/bin/svn'
+
+## Override certain other aliases
+#
+alias cp=$(which cp)
+alias grep=$(which grep)
+
+## Constants
+#
+AD_IDENTITY="**********" # Apple Developer identity
+AD_USERNAME="**********" # Apple Developer username
+ALTOOL_PASSWORD="@keychain:**********" # altool password (assumed to be stored in keychain)
+ASC_PROVIDER="**********"
+MAX_SVN_ATTEMPTS=10
+NOTARIZATION_CHECK_ATTEMPTS=20
+NOTARIZATION_CHECK_PERIOD=60
+NOTARIZATION_LOGFILE="notarization.log"
+NOTARIZATION_LOGFILE_PATH="."
+PASSWORD=${ISSM_BINARIES_PASS}
+PKG="ISSM-macOS-MATLAB"
+PRIMARY_BUNDLE_ID="gov.nasa.jpl.issm.matlab"
+SIGNED_REPO_COPY="./signed"
+SIGNED_REPO_URL="https://issm.ess.uci.edu/svn/issm-binaries/mac/matlab/signed"
+SIGNING_LOCK_FILE="signing.lock"
+SUCCESS_LOGFILE="${SIGNED_REPO_COPY}/success.log"
+UNSIGNED_REPO_COPY="./unsigned"
+UNSIGNED_REPO_URL="https://issm.ess.uci.edu/svn/issm-binaries/mac/matlab/unsigned"
+USERNAME=${ISSM_BINARIES_USER}
+
+COMPRESSED_PKG="${PKG}.zip"
+EXE_ENTITLEMENTS_PLIST="${PKG}/bin/entitlements.plist"
+
+# NOTE: Uncomment the following for local testing (Jenkins checks out copy of 
+#		repository for unsigned packages to working directory)
+#
+
+# # Clean up from previous packaging (not necessary for single builds on Jenkins, 
+# # but useful when testing packaging locally)
+# echo "Cleaning up existing assets"
+# rm -rf ${COMPRESSED_PKG} ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE} ${UNSIGNED_REPO_COPY}
+
+# # Check out copy of repository for unsigned packages
+# echo "Checking out copy of repository for unsigned packages"
+# svn checkout \
+# 	--trust-server-cert \
+# 	--non-interactive \
+# 	--username ${USERNAME} \
+# 	--password ${PASSWORD} \
+# 	${UNSIGNED_REPO_URL} \
+# 	${UNSIGNED_REPO_COPY}
+
+rm -rf ${PKG} ${SIGNED_REPO_COPY}
+
+# Extract package contents
+echo "Extracting package contents"
+ditto -xk ${UNSIGNED_REPO_COPY}/${COMPRESSED_PKG} .
+
+# Clear extended attributes on all files
+xattr -cr ${PKG}
+
+# Build list of ISSM executables
+ISSM_BINS=$(\
+	find ${PKG}/bin -type f -name *.exe; \
+	find ${PKG}/lib -type f -name *.mexmaci64; \
+)
+
+# Build list of third party executables
+THIRD_PARTY_BINS=$(\
+	echo ${PKG}/bin/mpiexec; \
+	echo ${PKG}/bin/hydra_pmi_proxy; \
+	echo ${PKG}/bin/gdalsrsinfo; \
+	echo ${PKG}/bin/gdaltransform; \
+	echo ${PKG}/bin/gmt; \
+	echo ${PKG}/bin/gmtselect; \
+	echo ${PKG}/bin/gmsh; \
+)
+
+# Sign all executables in package
+echo "Signing all executables in package"
+codesign -s ${AD_IDENTITY} --timestamp --options=runtime --entitlements ${EXE_ENTITLEMENTS_PLIST} ${ISSM_BINS}
+codesign -s ${AD_IDENTITY} --timestamp --options=runtime ${THIRD_PARTY_BINS}
+
+# NOTE: Skipping signature validation because this is not a true package nor app
+
+# Compress signed package
+echo "Compressing signed package"
+ditto -ck --sequesterRsrc --keepParent ${PKG} ${COMPRESSED_PKG}
+
+# Submit compressed package for notarization
+echo "Submitting signed package to Apple for notarization"
+xcrun altool --notarize-app --primary-bundle-id ${PRIMARY_BUNDLE_ID} --username ${AD_USERNAME} --password ${ALTOOL_PASSWORD} --asc-provider ${ASC_PROVIDER} --file ${COMPRESSED_PKG} &> ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE}
+
+# Sleep until notarization request response is received
+echo "Waiting for notarization request response"
+while [[ ! -f ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE} || ! -z $(find ${NOTARIZATION_LOGFILE_PATH} -empty -name ${NOTARIZATION_LOGFILE}) ]]; do
+	sleep 30
+done
+
+echo "Notarization request response received"
+
+# Check if UUID exists in response
+HAS_UUID=$(grep 'RequestUUID = ' ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE}) # NOTE: Checking for "RequestUUID = " because "RequestUUID" shows up in some error messages
+if [ -z "${HAS_UUID}" ]; then
+	echo "Notarization failed!"
+	echo "----------------------- Contents of notarization logfile -----------------------"
+	cat ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE}
+	echo "--------------------------------------------------------------------------------"
+
+	# Clean up
+	rm -rf ${PKG} ${COMPRESSED_PKG}
+
+	exit 1
+fi
+
+# Get UUID from notarization request response
+UUID=$(echo ${HAS_UUID} | sed 's/[[:space:]]*RequestUUID = //')
+echo "UUID: ${UUID}" 
+
+# Check notarization status
+#
+# NOTE: Currently, this checks if notarization was successful, but we are not 
+#		able to staple notarization as this is not a true package nor app and, 
+#		at the very least, MATLAB Mex files cannot be stapled. As such, clients 
+#		will not be able to clear Gatekeeper if they are offline.
+#
+echo "Checking notarization status"
+SUCCESS=0
+for ATTEMPT in $(seq 1 ${NOTARIZATION_CHECK_ATTEMPTS}); do
+	echo "    Attempt #${ATTEMPT}..."
+	xcrun altool --notarization-info ${UUID} --username ${AD_USERNAME} --password ${ALTOOL_PASSWORD} &> ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE}
+	if [[ -f ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE} && -z $(find ${NOTARIZATION_LOGFILE_PATH} -empty -name ${NOTARIZATION_LOGFILE}) ]]; then
+
+		# First, check if there is an error
+		ERROR_CHECK=$(grep 'Error' ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE})
+		if [ ! -z "${ERROR_CHECK}" ]; then
+			break
+		fi
+
+		# No error, so check status
+		STATUS=$(grep 'Status:' ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE} | sed -e 's/[[:space:]]*Status: //')
+		if [[ "${STATUS}" == "success" ]]; then
+			# Staple notarization to all elements of package that were previously signed
+			#xcrun stapler staple ${EXECUTABLES} # NOTE: Fails with "Stapler is incapable of working with MATLAB Mex files."
+
+			# Validate stapling of notarization
+			#xcrun stapler validation ${EXECUTABLES} # NOTE: Skipping notarization stapling validation because this is not a true package nor app
+
+			# Compress signed and notarized package
+			ditto -ck --sequesterRsrc --keepParent ${PKG} ${COMPRESSED_PKG}
+
+			# Set flag indicating notarization was successful
+			SUCCESS=1
+
+			break
+		elif [[ "${STATUS}" == "in progress" ]]; then
+			echo "    ...in progress still; checking again in ${NOTARIZATION_CHECK_PERIOD} seconds."
+			sleep ${NOTARIZATION_CHECK_PERIOD}
+		elif [[ "${STATUS}" == "invalid" ]]; then
+			break
+		fi
+	else
+		if [ ${ATTEMPT} -lt ${NOTARIZATION_CHECK_ATTEMPTS} ]; then
+			echo "    ...not ready yet; checking again in ${NOTARIZATION_CHECK_PERIOD} seconds."
+			sleep ${NOTARIZATION_CHECK_PERIOD}
+		else
+			echo "    ...maximum attempts reached, but no response, or something else went wrong."
+			echo "    If contents of notarization status check logfile appear to be valid, increase NOTARIZATION_CHECK_ATTEMPTS and run again."
+			break
+		fi
+	fi
+done
+
+if [ ${SUCCESS} -eq 1 ]; then
+	echo "Notarization successful!"
+else
+	echo "Notarization failed!"
+	echo "----------------------- Contents of notarization logfile -----------------------"
+	cat ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE}
+	echo "--------------------------------------------------------------------------------"
+fi
+
+# Check out copy of repository for signed packages
+echo "Checking out copy of repository for signed packages"
+SVN_ATTEMPT=0
+SVN_SUCCESS=0
+while [[ ${SVN_ATTEMPT} -lt ${MAX_SVN_ATTEMPTS} && ${SVN_SUCCESS} -eq 0 ]]; do
+	rm -rf ${SIGNED_REPO_COPY}
+	svn checkout \
+		--trust-server-cert \
+		--non-interactive \
+		--username ${USERNAME} \
+		--password ${PASSWORD} \
+		${SIGNED_REPO_URL} \
+		${SIGNED_REPO_COPY} > /dev/null 2>&1
+	if [ $? -eq 0 ]; then
+		SVN_SUCCESS=1
+		break
+	else
+		((++SVN_ATTEMPT))
+		sleep 5
+	fi
+done
+
+if [ ${SVN_SUCCESS} -eq 0 ]; then
+	echo "Checkout of repository for signed packages failed"
+	exit 1
+fi
+
+# Copy notarization file to repository for signed packages
+cp ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE} ${SIGNED_REPO_COPY}
+svn add ${SIGNED_REPO_COPY}/${NOTARIZATION_LOGFILE} > /dev/null 2>&1
+
+# Remove lock file from repository for signed packages
+svn delete ${SIGNED_REPO_COPY}/${SIGNING_LOCK_FILE} > /dev/null 2>&1
+
+SVN_ATTEMPT=0
+SVN_SUCCESS=0
+if [ ${SUCCESS} -eq 1 ]; then
+	# Copy signed package to repository for signed packages
+	cp ${COMPRESSED_PKG} ${SIGNED_REPO_COPY}
+	svn add ${SIGNED_REPO_COPY}/${COMPRESSED_PKG} > /dev/null 2>&1
+
+	# Commit changes
+	echo "Committing changes to repository for signed packages"
+	while [[ ${SVN_ATTEMPT} -lt ${MAX_SVN_ATTEMPTS} && ${SVN_SUCCESS} -eq 0 ]]; do
+		svn commit \
+			--trust-server-cert \
+			--non-interactive \
+			--username ${USERNAME} \
+			--password ${PASSWORD} \
+			--message "CHG: New signed package (success)" ${SIGNED_REPO_COPY} > /dev/null 2>&1
+		if [ $? -eq 0 ]; then
+			SVN_SUCCESS=1
+			break
+		else
+			((++SVN_ATTEMPT))
+			sleep 5
+		fi
+	done
+
+	if [ ${SVN_SUCCESS} -eq 0 ]; then
+		echo "Commit to repository for signed packages failed"
+		exit 1
+	fi
+else
+	# Commit changes
+	echo "Committing changes to repository for signed packages"
+	while [[ ${SVN_ATTEMPT} -lt ${MAX_SVN_ATTEMPTS} && ${SVN_SUCCESS} -eq 0 ]]; do
+		svn commit \
+			--trust-server-cert \
+			--non-interactive \
+			--username ${USERNAME} \
+			--password ${PASSWORD} \
+			--message "CHG: New signed package (failure)" ${SIGNED_REPO_COPY} > /dev/null 2>&1
+		if [ $? -eq 0 ]; then
+			SVN_SUCCESS=1
+			break
+		else
+			((++SVN_ATTEMPT))
+			sleep 5
+		fi
+	done
+
+	if [ ${SVN_SUCCESS} -eq 0 ]; then
+		echo "Commit to repository for signed packages failed"
+		exit 1
+	fi
+
+	exit 1
+fi
Index: /issm/branches/trunk-dlcheng-ASE/packagers/mac/sign-issm-mac-binaries-python-3.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/mac/sign-issm-mac-binaries-python-3.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/mac/sign-issm-mac-binaries-python-3.sh	(revision 27955)
@@ -0,0 +1,341 @@
+#!/bin/bash
+
+################################################################################
+# Intended to be run in the context of a Jenkins project on a JPL 
+# Cybersecurity server for signing macOS applications. Polls SCM of the 
+# Subversion repository hosted at 
+# https://issm.ess.uci.edu/svn/issm-binaries/mac/python/3/unsigned to trigger 
+# new builds.
+#
+# In order to replicate the requried Jenkins project configuration:
+# - First, navigate to 'Manage Jenkins' -> 'Manage Plugins' and install the 
+#	'Credentials Bindings Plugin' if it is not already installed.
+# - Contact one of the members of the ISSM development team for credentials for 
+#	the ISSM binaries repository (mention that the credentials are stored in 
+#	ISSM-Infrastructure.pdf).
+# - Navigate to 'Manage Jenkins' -> 'Manage Credentials' -> <domain> -> 
+#	'Add Credentials' and enter the credentials from above.
+# - From the 'Dashboard', select 'New Item' -> 'Freestyle project'.
+# - Under 'Source Code Management', select 'Subversion'.
+#		- The 'Repository URL' text field should be set to 
+#		"https://issm.ess.uci.edu/svn/issm-binaries/mac/matlab/unsigned".
+#		- The 'Credentials' select menu should be set to the new credentials 
+#		created previously.
+#		- The 'Local module directory' text field should be set to the same 
+#		value as the constant UNSIGNED_REPO_COPY (set below to './unsigned').
+# - Under 'Build Triggers', check the box for 'Poll SCM' and set the 
+#	'Schedule' text area to "H/5 * * * *".
+# - Under 'Build Environment', check the box for 'Use secret text(s) or 
+#	file(s)', then under 'Bindings' click the 'Add...' button and select 
+#	'Username and password (separated)'.
+#		- Set 'Username Variable' to "ISSM_BINARIES_USER".
+#		- Set 'Password Variable' to "ISSM_BINARIES_PASS".
+# - Under 'Credentials', select the same, new credentials that created 
+#	previously.
+# - The contents of this script can be copied/pasted directly into the ‘Build' 
+#	-> 'Execute Shell' -> ‘Command' textarea of the project configuration (or 
+#	you can simply store the script on disk and call it from there).
+# - Make sure to click the 'Save' button.
+#
+# Current point of contact at JPL Cybersecurity:
+#	Alex Coward, alexander.g.coward@jpl.nasa.gov
+#
+# NOTE:
+# - Assumes that "ISSM_BINARIES_USER" and "ISSM_BINARIES_PASS" are set up in 
+#	the 'Bindings' section under a 'Username and password (separated)' binding 
+#	(requires 'Credentials Binding Plugin').
+# - For local debugging, the aforementioned credentials can be hardcoded into 
+#	the 'USERNAME' and 'PASSWORD' constants below.
+################################################################################
+
+# Expand aliases within the context of this script
+shopt -s expand_aliases
+
+# NOTE: For some reason, calling svn from within the context of this script 
+#		gives,
+#
+#			svn: command not found
+#
+#		even though it is installed via Homebrew and available at the following 
+#		path.
+#
+alias svn='/usr/local/bin/svn'
+
+## Override certain other aliases
+#
+alias cp=$(which cp)
+alias grep=$(which grep)
+
+## Constants
+#
+AD_IDENTITY="**********" # Apple Developer identity
+AD_USERNAME="**********" # Apple Developer username
+ALTOOL_PASSWORD="@keychain:**********" # altool password (assumed to be stored in keychain)
+ASC_PROVIDER="**********"
+MAX_SVN_ATTEMPTS=10
+NOTARIZATION_CHECK_ATTEMPTS=20
+NOTARIZATION_CHECK_PERIOD=60
+NOTARIZATION_LOGFILE="notarization.log"
+NOTARIZATION_LOGFILE_PATH="."
+PASSWORD=${ISSM_BINARIES_PASS}
+PKG="ISSM-macOS-Python-3"
+PRIMARY_BUNDLE_ID="gov.nasa.jpl.issm.python"
+SIGNED_REPO_COPY="./signed"
+SIGNED_REPO_URL="https://issm.ess.uci.edu/svn/issm-binaries/mac/python/3/signed"
+SIGNING_LOCK_FILE="signing.lock"
+SUCCESS_LOGFILE="${SIGNED_REPO_COPY}/success.log"
+UNSIGNED_REPO_COPY="./unsigned"
+UNSIGNED_REPO_URL="https://issm.ess.uci.edu/svn/issm-binaries/mac/python/3/unsigned"
+USERNAME=${ISSM_BINARIES_USER}
+
+COMPRESSED_PKG="${PKG}.zip"
+EXE_ENTITLEMENTS_PLIST="${PKG}/bin/entitlements.plist"
+
+# NOTE: Uncomment the following for local testing (Jenkins checks out copy of 
+#		repository for unsigned packages to working directory)
+#
+
+# # Clean up from previous packaging (not necessary for single builds on Jenkins, 
+# # but useful when testing packaging locally)
+# echo "Cleaning up existing assets"
+# rm -rf ${COMPRESSED_PKG} ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE} ${UNSIGNED_REPO_COPY}
+
+# # Check out copy of repository for unsigned packages
+# echo "Checking out copy of repository for unsigned packages"
+# svn checkout \
+# 	--trust-server-cert \
+# 	--non-interactive \
+# 	--username ${USERNAME} \
+# 	--password ${PASSWORD} \
+# 	${UNSIGNED_REPO_URL} \
+# 	${UNSIGNED_REPO_COPY}
+
+rm -rf ${PKG} ${SIGNED_REPO_COPY}
+
+
+# Extract package contents
+echo "Extracting package contents"
+ditto -xk ${UNSIGNED_REPO_COPY}/${COMPRESSED_PKG} .
+
+# Clear extended attributes on all files
+xattr -cr ${PKG}
+
+# Build list of ISSM executables
+ISSM_BINS=$(\
+	find ${PKG}/bin -type f -name *.exe; \
+	find ${PKG}/bin -type f -name *.pyc; \
+)
+
+# Build list of third party executables
+THIRD_PARTY_BINS=$(\
+	echo ${PKG}/bin/mpiexec; \
+	echo ${PKG}/bin/hydra_pmi_proxy; \
+	echo ${PKG}/bin/gdalsrsinfo; \
+	echo ${PKG}/bin/gdaltransform; \
+	echo ${PKG}/bin/gmt; \
+	echo ${PKG}/bin/gmtselect; \
+	echo ${PKG}/bin/gmsh; \
+)
+
+# Sign all executables in package
+echo "Signing all executables in package"
+codesign -s ${AD_IDENTITY} --timestamp --options=runtime --entitlements ${EXE_ENTITLEMENTS_PLIST} ${ISSM_BINS}
+codesign -s ${AD_IDENTITY} --timestamp --options=runtime ${THIRD_PARTY_BINS}
+
+# Build list of ISSM libraries
+ISSM_LIBS=$(\
+	find ${PKG}/lib -type f -name *.so; \
+)
+
+# Sign all libraries in package
+echo "Signing all libraries in package"
+codesign -s ${AD_IDENTITY} --timestamp --options=runtime ${ISSM_LIBS}
+
+# NOTE: Skipping signature validation because this is not a true package nor app
+
+# Compress signed package
+echo "Compressing signed package"
+ditto -ck --sequesterRsrc --keepParent ${PKG} ${COMPRESSED_PKG}
+
+# Submit compressed package for notarization
+echo "Submitting signed package to Apple for notarization"
+xcrun altool --notarize-app --primary-bundle-id ${PRIMARY_BUNDLE_ID} --username ${AD_USERNAME} --password ${ALTOOL_PASSWORD} --asc-provider ${ASC_PROVIDER} --file ${COMPRESSED_PKG} &> ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE}
+
+# Sleep until notarization request response is received
+echo "Waiting for notarization request response"
+while [[ ! -f ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE} || ! -z $(find ${NOTARIZATION_LOGFILE_PATH} -empty -name ${NOTARIZATION_LOGFILE}) ]]; do
+	sleep 30
+done
+
+echo "Notarization request response received"
+
+# Check if UUID exists in response
+HAS_UUID=$(grep 'RequestUUID = ' ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE}) # NOTE: Checking for "RequestUUID = " because "RequestUUID" shows up in some error messages
+if [ -z "${HAS_UUID}" ]; then
+	echo "Notarization failed!"
+	echo "----------------------- Contents of notarization logfile -----------------------"
+	cat ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE}
+	echo "--------------------------------------------------------------------------------"
+
+	# Clean up
+	rm -rf ${PKG} ${COMPRESSED_PKG}
+
+	exit 1
+fi
+
+# Get UUID from notarization request response
+UUID=$(echo ${HAS_UUID} | sed 's/[[:space:]]*RequestUUID = //')
+echo "UUID: ${UUID}" 
+
+# Check notarization status
+#
+# NOTE: Currently, this checks if notarization was successful, but we are not 
+#		able to staple notarization as this is not a true package nor app and, 
+#		at the very least, MATLAB Mex files cannot be stapled. As such, clients 
+#		will not be able to clear Gatekeeper if they are offline.
+#
+echo "Checking notarization status"
+SUCCESS=0
+for ATTEMPT in $(seq 1 ${NOTARIZATION_CHECK_ATTEMPTS}); do
+	echo "    Attempt #${ATTEMPT}..."
+	xcrun altool --notarization-info ${UUID} --username ${AD_USERNAME} --password ${ALTOOL_PASSWORD} &> ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE}
+	if [[ -f ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE} && -z $(find ${NOTARIZATION_LOGFILE_PATH} -empty -name ${NOTARIZATION_LOGFILE}) ]]; then
+
+		# First, check if there is an error
+		ERROR_CHECK=$(grep 'Error' ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE})
+		if [ ! -z "${ERROR_CHECK}" ]; then
+			break
+		fi
+
+		# No error, so check status
+		STATUS=$(grep 'Status:' ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE} | sed -e 's/[[:space:]]*Status: //')
+		if [[ "${STATUS}" == "success" ]]; then
+			# Staple notarization to all elements of package that were previously signed
+			#xcrun stapler staple ${THIRD_PARTY_BINS} # NOTE: Fails with "Stapler is incapable of working with MATLAB Mex files."
+
+			# Validate stapling of notarization
+			#xcrun stapler validation ${THIRD_PARTY_BINS} # NOTE: Skipping notarization stapling validation because this is not a true package nor app
+
+			# Compress signed and notarized package
+			ditto -ck --sequesterRsrc --keepParent ${PKG} ${COMPRESSED_PKG}
+
+			# Set flag indicating notarization was successful
+			SUCCESS=1
+
+			break
+		elif [[ "${STATUS}" == "in progress" ]]; then
+			echo "    ...in progress still; checking again in ${NOTARIZATION_CHECK_PERIOD} seconds."
+			sleep ${NOTARIZATION_CHECK_PERIOD}
+		elif [[ "${STATUS}" == "invalid" ]]; then
+			break
+		fi
+	else
+		if [ ${ATTEMPT} -lt ${NOTARIZATION_CHECK_ATTEMPTS} ]; then
+			echo "    ...not ready yet; checking again in ${NOTARIZATION_CHECK_PERIOD} seconds"
+			sleep ${NOTARIZATION_CHECK_PERIOD}
+		else
+			echo "    ...maximum attempts reached, but no response, or something else went wrong"
+			echo "    If contents of notarization status check logfile appear to be valid, increase NOTARIZATION_CHECK_ATTEMPTS and run again"
+			break
+		fi
+	fi
+done
+
+if [ ${SUCCESS} -eq 1 ]; then
+	echo "Notarization successful!"
+else
+	echo "Notarization failed!"
+	echo "----------------------- Contents of notarization logfile -----------------------"
+	cat ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE}
+	echo "--------------------------------------------------------------------------------"
+fi
+
+# Check out copy of repository for signed packages
+echo "Checking out copy of repository for signed packages"
+SVN_ATTEMPT=0
+SVN_SUCCESS=0
+while [[ ${SVN_ATTEMPT} -lt ${MAX_SVN_ATTEMPTS} && ${SVN_SUCCESS} -eq 0 ]]; do
+	rm -rf ${SIGNED_REPO_COPY}
+	svn checkout \
+		--trust-server-cert \
+		--non-interactive \
+		--username ${USERNAME} \
+		--password ${PASSWORD} \
+		${SIGNED_REPO_URL} \
+		${SIGNED_REPO_COPY} > /dev/null 2>&1
+	if [ $? -eq 0 ]; then
+		SVN_SUCCESS=1
+		break
+	else
+		((++SVN_ATTEMPT))
+		sleep 5
+	fi
+done
+
+if [ ${SVN_SUCCESS} -eq 0 ]; then
+	echo "Checkout of repository for signed packages failed"
+	exit 1
+fi
+
+# Copy notarization file to repository for signed packages
+cp ${NOTARIZATION_LOGFILE_PATH}/${NOTARIZATION_LOGFILE} ${SIGNED_REPO_COPY}
+svn add ${SIGNED_REPO_COPY}/${NOTARIZATION_LOGFILE} > /dev/null 2>&1
+
+# Remove lock file from repository for signed packages
+svn delete ${SIGNED_REPO_COPY}/${SIGNING_LOCK_FILE}
+
+SVN_ATTEMPT=0
+SVN_SUCCESS=0
+if [ ${SUCCESS} -eq 1 ]; then
+	# Copy signed package to repository for signed packages
+	cp ${COMPRESSED_PKG} ${SIGNED_REPO_COPY}
+	svn add ${SIGNED_REPO_COPY}/${COMPRESSED_PKG} > /dev/null 2>&1
+
+	# Commit changes
+	echo "Committing changes to repository for signed packages"
+	while [[ ${SVN_ATTEMPT} -lt ${MAX_SVN_ATTEMPTS} && ${SVN_SUCCESS} -eq 0 ]]; do
+		svn commit \
+			--trust-server-cert \
+			--non-interactive \
+			--username ${USERNAME} \
+			--password ${PASSWORD} \
+			--message "CHG: New signed package (success)" ${SIGNED_REPO_COPY} > /dev/null 2>&1
+		if [ $? -eq 0 ]; then
+			SVN_SUCCESS=1
+			break
+		else
+			((++SVN_ATTEMPT))
+			sleep 5
+		fi
+	done
+
+	if [ ${SVN_SUCCESS} -eq 0 ]; then
+		echo "Commit to repository for signed packages failed"
+		exit 1
+	fi
+else
+	# Commit changes
+	echo "Committing changes to repository for signed packages"
+	while [[ ${SVN_ATTEMPT} -lt ${MAX_SVN_ATTEMPTS} && ${SVN_SUCCESS} -eq 0 ]]; do
+		svn commit \
+			--trust-server-cert \
+			--non-interactive \
+			--username ${USERNAME} \
+			--password ${PASSWORD} \
+			--message "CHG: New signed package (failure)" ${SIGNED_REPO_COPY} > /dev/null 2>&1
+		if [ $? -eq 0 ]; then
+			SVN_SUCCESS=1
+			break
+		else
+			((++SVN_ATTEMPT))
+			sleep 5
+		fi
+	done
+
+	if [ ${SVN_SUCCESS} -eq 0 ]; then
+		echo "Commit to repository for signed packages failed"
+		exit 1
+	fi
+
+	exit 1
+fi
Index: /issm/branches/trunk-dlcheng-ASE/packagers/mac/test-issm-mac-binaries-matlab.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/mac/test-issm-mac-binaries-matlab.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/mac/test-issm-mac-binaries-matlab.sh	(revision 27955)
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+################################################################################
+# This script is intended to test ISSM macOS MATLAB binaries on an end-user 
+# machine after successful packaging and signing.
+#
+# NOTE: Tarball must already exist in INSTALL_DIR
+################################################################################
+
+## Constants
+#
+INSTALL_DIR=${PWD}
+MATLAB_NROPTIONS="'benchmark','all','exclude',[125,126,129,234,235,418,420,435,444,445,701,702,703,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1201,1202,1203,1204,1205,1206,1207,1208,1301,1302,1303,1304,1401,1402,1601,1602,2002,2003,2004,2006,2007,2008,2010,2011,2012,2013,2020,2021,2051,2052,2053,2084,2085,2090,2091,2092,2101,2424,2425,3001:3300,3480,3481,4001:4100]" # NOTE: Combination of test suites from basic, Dakota, and Solid Earth builds, with tests that require a restart and those that require the JVM excluded
+MATLAB_PATH="/Applications/MATLAB_R2022b.app"
+PKG="ISSM-macOS-MATLAB"
+
+COMPRESSED_PKG="${PKG}.zip"
+
+## Environment
+#
+export ISSM_DIR="${INSTALL_DIR}/${PKG}"
+export PATH="${PATH}:${ISSM_DIR}/bin:${ISSM_DIR}/scripts"
+
+cd ${INSTALL_DIR}
+rm -rf ${PKG}
+ditto -xk ${COMPRESSED_PKG} .
+cd ${PKG}/test/NightlyRun
+
+# Run tests, redirecting output to logfile and suppressing output to console
+echo "Running tests"
+rm matlab.log 2> /dev/null
+${MATLAB_PATH}/bin/matlab -nosplash -nodesktop -nojvm -r "try, addpath ../../bin; addpath ../../lib; runme(${MATLAB_NROPTIONS}); exit; catch me,fprintf('%s',getReport(me)); exit; end" -logfile matlab.log &> /dev/null
+
+# Check that MATLAB did not exit in error
+matlabExitCode=`echo $?`
+matlabExitedInError=`grep -c -E "Activation cannot proceed|Error in|Illegal|Invalid MEX-file|license|Warning: Name is nonexistent or not a directory" matlab.log`
+
+if [[ ${matlabExitCode} -ne 0 || ${matlabExitedInError} -ne 0 ]]; then
+	echo "----------MATLAB exited in error!----------"
+	cat matlab.log
+	echo
+	echo "-----------End of matlab.log-----------"
+	exit 1
+fi
+
+# Check that all tests passed
+numTestsFailed=`grep -c -E "FAILED|ERROR" matlab.log`
+
+if [[ ${numTestsFailed} -ne 0 ]]; then
+	echo "One or more tests FAILED"
+	cat matlab.log
+	exit 1
+else
+	echo "All tests PASSED"
+fi
Index: /issm/branches/trunk-dlcheng-ASE/packagers/mac/test-issm-mac-binaries-python-3.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/mac/test-issm-mac-binaries-python-3.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/mac/test-issm-mac-binaries-python-3.sh	(revision 27955)
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+################################################################################
+# This script is intended to test ISSM macOS Python 3 binaries on an end-user 
+# machine after successful packaging and signing.
+#
+# NOTE: Tarball must already exist in INSTALL_DIR
+################################################################################
+
+## Constants
+#
+INSTALL_DIR=${PWD}
+PKG="ISSM-macOS-Python-3"
+PYTHON_NROPTIONS="--benchmark all --exclude 125 126 129 234 235 418 420 435 444 445 701 702 703 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1201 1202 1203 1204 1205 1206 1207 1208 1301 1302 1303 1304 1401 1402 1601 1602 2002 2003 2004 2005 2006 2007 2008 2010 2011 2012 2013 2020 2021 2051 2052 2053 2084 2085 2090 2091 2092 2101 2424 2425 3001:3300 3480 3481 4001:4100" # NOTE: Combination of test suites from basic, Dakota, and Solid Earth builds, with tests that require a restart and those that require the JVM excluded
+
+COMPRESSED_PKG="${PKG}.zip"
+
+export ISSM_DIR="${INSTALL_DIR}/${PKG}"
+export PATH="${PATH}:${ISSM_DIR}/bin:${ISSM_DIR}/scripts"
+export PYTHONPATH="${ISSM_DIR}/scripts"
+export PYTHONSTARTUP="${PYTHONPATH}/devpath.py"
+export PYTHONUNBUFFERED=1 # We don't want Python to buffer output, otherwise issm.exe output is not captured
+
+cd ${INSTALL_DIR}
+rm -rf ${PKG}
+ditto -xk ${COMPRESSED_PKG} .
+cd ${PKG}/test/NightlyRun
+
+# Run tests, redirecting output to logfile and suppressing output to console
+echo "Running tests"
+rm python.log 2> /dev/null
+./runme.py ${PYTHON_NROPTIONS} &> python.log 2>&1
+
+# Check that Python did not exit in error
+pythonExitCode=`echo $?`
+pythonExitedInError=`grep -c -E "Error|No such file or directory|Permission denied|Standard exception|Traceback|bad interpreter|syntax error" python.log`
+
+if [[ ${pythonExitCode} -ne 0 || ${pythonExitedInError} -ne 0 ]]; then
+	echo "----------Python exited in error!----------"
+	cat python.log
+	echo "-----------End of python.log-----------"
+	exit 1
+fi
+
+# Check that all tests passed
+numTestsFailed=`grep -c -E "FAILED|ERROR" python.log`
+
+if [[ ${numTestsFailed} -ne 0 ]]; then
+	echo "One or more tests FAILED"
+	cat python.log
+	exit 1
+else
+	echo "All tests PASSED"
+fi
Index: /issm/branches/trunk-dlcheng-ASE/packagers/mac/transfer-issm-mac-binaries.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/mac/transfer-issm-mac-binaries.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/mac/transfer-issm-mac-binaries.sh	(revision 27955)
@@ -0,0 +1,91 @@
+#!/bin/bash
+
+################################################################################
+# Transfers ISSM distributable package for macOS to ISSM website.
+#
+# NOTE:
+# - Assumes that the following constants are defined,
+#
+#		COMPRESSED_PKG
+#		ISSM_BINARIES_REPO_PASS
+#		ISSM_BINARIES_REPO_USER
+#		SIGNED_REPO_COPY
+#		SIGNED_REPO_URL
+#
+# See also:
+# - packagers/mac/complete-issm-mac-binaries-matlab.sh
+# - packagers/mac/complete-issm-mac-binaries-python-2.sh
+# - packagers/mac/complete-issm-mac-binaries-python-3.sh
+################################################################################
+
+# Expand aliases within the context of this script
+shopt -s expand_aliases
+
+# From https://developer.apple.com/documentation/macos-release-notes/macos-catalina-10_15-release-notes,
+#
+#	Command line tool support for Subversion — including svn, git-svn, and 
+#	related commands — is no longer provided by Xcode. (50266910)
+#
+# which results in,
+#
+#	svn: error: The subversion command line tools are no longer provided by 
+#	Xcode.
+#
+# when calling svn, even when subversion is installed via Homebrew and its path 
+# is available in PATH.
+#
+# NOTE: May be able to remove this after updating macOS.
+#
+#alias svn='/usr/local/bin/svn'
+
+## Override certain other aliases
+#
+alias cp=$(which cp)
+alias grep=$(which grep)
+
+## Functions
+#
+checkout_signed_repo_copy(){
+	echo "Checking out copy of repository for signed packages"
+
+	# NOTE: Get empty copy because we do not want to have to check out package 
+	#		from previous signing.
+	#
+	svn checkout \
+		--trust-server-cert \
+		--non-interactive \
+		--depth empty \
+		--username ${ISSM_BINARIES_REPO_USER} \
+		--password ${ISSM_BINARIES_REPO_USER} \
+		${SIGNED_REPO_URL} \
+		${SIGNED_REPO_COPY} > /dev/null 2>&1
+}
+validate_signed_repo_copy(){
+	# Validate copy of repository for signed binaries (e.g. 
+	# 'Check-out Strategy' was set to 'Use 'svn update' as much as possible'; 
+	# initial checkout failed)
+	if [[ ! -d ${SIGNED_REPO_COPY} || ! -d ${SIGNED_REPO_COPY}/.svn ]]; then
+		rm -rf ${SIGNED_REPO_COPY}
+		checkout_signed_repo_copy
+	fi
+}
+
+# Check if working copy of repository for signed packages is missing
+validate_signed_repo_copy
+
+# Retrieve signed and notarized package
+svn update \
+	--trust-server-cert \
+	--non-interactive \
+	--username ${ISSM_BINARIES_REPO_USER} \
+	--password ${ISSM_BINARIES_REPO_PASS} \
+	${SIGNED_REPO_COPY}/${COMPRESSED_PKG}
+
+# Transfer signed package to ISSM Web site
+echo "Transferring signed package to ISSM Web site"
+scp -i ~/.ssh/pine_island_to_ross ${SIGNED_REPO_COPY}/${COMPRESSED_PKG} jenkins@ross.ics.uci.edu:/var/www/html/${COMPRESSED_PKG}
+
+if [ $? -ne 0 ]; then
+	echo "Transfer failed! Verify connection then build this project again (with -t/--transferonly option to skip building, packaging, and signing)."
+	exit 1
+fi
Index: /issm/branches/trunk-dlcheng-ASE/packagers/win/complete-issm-win-binaries-matlab.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/win/complete-issm-win-binaries-matlab.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/win/complete-issm-win-binaries-matlab.sh	(revision 27955)
@@ -0,0 +1,94 @@
+#!/bin/bash
+
+################################################################################
+# Wrapper script to build, package, and transfer to ISSM Web site ISSM 
+# distributable package for Windows with MATLAB API.
+#
+# Normally, we would put this directly into the project configuration under 
+# 'Build' -> 'Execute shell', but because it is a bit more involved, it is a 
+# good idea to version it.
+#
+# When no failures/errors occur, performs the following:
+# - Builds ISSM according to configuration.
+# - Packages executables and libraries.
+# - Runs test suite against package.
+# - Transmits package to ISSM Web site for distribution.
+#
+# Options:
+# -b/--skipbuild		Skip ISSM compilation.
+# -s/--skiptests		Skip ISSM compilation and testing during packaging 
+#						step. Use if packaging fails for some reason but build 
+#						is valid.
+# -t/--transferonly		Transfer package to ISSM Web site only. Use if transfer 
+#						fails for some reason to skip building, packaging, and 
+#						signing.
+#
+# NOTE:
+# - Use only *one* of the above options at a time, and make sure it is removed 
+#	again after a single run.
+# - Builds will fail when any of the above options are used on a clean 
+#	workspace. For example, if 'Source Code Management' -> 'Check-out Strategy' 
+#	select menu is set to "Always check out a fresh copy".
+################################################################################
+
+## Constants
+#
+PKG="ISSM-Windows-MATLAB" # Name of directory to copy distributable files to
+
+COMPRESSED_PKG="${PKG}.tar.gz"
+
+## Environment
+#
+export COMPRESSED_PKG
+export PKG
+
+## Parse options
+#
+if [ $# -gt 1 ]; then
+	echo "Can use only one option at a time"
+	exit 1
+fi
+
+# NOTE: We could do this with binary switching (i.e. 0011 to sign and transfer, 
+#		but the following is self-documenting).
+#
+build=1
+package=1
+transfer=1
+
+if [ $# -eq 1 ]; then
+	case $1 in
+		-b|--skipbuild)		build=0;				shift	;;
+		-s|--skiptests)		build=0;						;;
+		-t|--transferonly)	build=0;	package=0;			;;
+		*) echo "Unknown parameter passed: $1"; exit 1 		;;
+	esac
+fi
+
+# Build
+if [ ${build} -eq 1 ]; then
+	./jenkins/jenkins.sh ./jenkins/ross-win-msys2-mingw-msmpi-binaries-matlab
+
+	if [ $? -ne 0 ]; then 
+		exit 1
+	fi
+fi
+
+# Package
+if [ ${package} -eq 1 ]; then
+	./packagers/win/package-issm-win-binaries-matlab.sh $1
+
+	if [ $? -ne 0 ]; then 
+		exit 1
+	fi
+fi
+
+# Transfer distributable package to ISSM Web site
+if [ ${transfer} -eq 1 ]; then
+	./packagers/win/transfer-issm-win-binaries.sh
+
+	if [ $? -ne 0 ]; then 
+		exit 1
+	fi
+fi
+
Index: /issm/branches/trunk-dlcheng-ASE/packagers/win/package-issm-win-binaries-matlab.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/win/package-issm-win-binaries-matlab.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/win/package-issm-win-binaries-matlab.sh	(revision 27955)
@@ -0,0 +1,240 @@
+#!/bin/bash
+
+################################################################################
+# Packages and tests ISSM distributable package for Windows with MATLAB API.
+#
+# Options:
+# -s/--skiptests		Skip testing during packaging Use if packaging fails 
+#						for some reason but build is valid.
+#
+# NOTE:
+# - Assumes that the following constants are defined,
+#
+#		COMPRESSED_PKG
+#		ISSM_DIR
+#		PKG
+#
+# See also:
+# - packagers/win/complete-issm-win-binaries-matlab.sh
+################################################################################
+
+# Expand aliases within the context of this script
+shopt -s expand_aliases
+
+## Override certain aliases
+#
+alias grep=$(which grep)
+
+## Constants
+#
+#LIBGFORTRAN="/usr/lib/x86_64-win-gnu/libgfortran.so.5.0.0" # Important that this is the library itself
+#LIBGFORTRAN_DIST="${ISSM_DIR}/lib/libgfortran.so.5" # Important the file name matches the SONAME entry in the binaries and other shared libraries which link to it
+MATLAB_NROPTIONS="'exclude',[IdFromString('Dakota'),125,126,129,435,701,702,703]"
+#MATLAB_NROPTIONS="'benchmark','all','exclude',[125,126,129,234,235,418,420,435,444,445,701,702,703,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1201,1202,1203,1204,1205,1206,1207,1208,1301,1302,1303,1304,1401,1402,1601,1602,2002,2003,2004,2006,2007,2008,2010,2011,2012,2013,2020,2021,2051,2052,2053,2084,2085,2090,2091,2092,2101,2424,2425,3001:3300,3480,3481,4001:4100]" # NOTE: Combination of test suites from basic, Dakota, and Solid Earth builds, with tests that require a restart and those that require the JVM excluded
+MATLAB_PATH=$(cygpath -u $(cygpath -ms "/c/Program Files/MATLAB/R2019b"))
+MSMPI_ROOT="${ISSM_DIR}/externalpackages/msmpi/install"
+
+## Environment
+#
+export PATH="${ISSM_DIR}/bin:$(getconf PATH)" # Ensure that we pick up binaries from 'bin' directory rather than 'externalpackages'
+
+## Parse options
+#
+if [ $# -gt 1 ]; then
+	echo "Can use only one option at a time"
+	exit 1
+fi
+
+skip_tests=0
+
+if [ $# -eq 1 ]; then
+	case $1 in
+		-s|--skiptests) skip_tests=1;					;;
+		*) echo "Unknown parameter passed: $1"; exit 1	;;
+	esac
+fi
+
+# Check if MATLAB exists
+if ! [ -d ${MATLAB_PATH} ]; then
+	echo "${MATLAB_PATH} does not point to a MATLAB installation! Please modify MATLAB_PATH variable in $(basename $0) and try again."
+	exit 1
+fi
+
+# Clean up from previous packaging
+echo "Cleaning up existing assets"
+cd ${ISSM_DIR}
+rm -rf ${PKG} ${COMPRESSED_PKG}
+mkdir ${PKG}
+
+# Add required binaries and libraries to package and modify them where needed
+cd ${ISSM_DIR}/bin
+
+echo "Modify generic"
+cat generic_static.m | sed -e "s/generic_static/generic/g" > generic.m
+
+echo "Moving system and MinGW libraries to bin/"
+cp /c/msys64/mingw64/bin/libgcc_s_seh-1.dll .
+cp /c/msys64/mingw64/bin/libstdc++-6.dll .
+cp /c/msys64/mingw64/bin/libwinpthread-1.dll .
+cp /c/msys64/mingw64/bin/libgfortran-5.dll .
+cp /c/msys64/mingw64/bin/libquadmath-0.dll .
+
+echo "Moving MSMPI binaries to bin/"
+if [ -f ${MSMPI_ROOT}/bin/mpiexec.exe ]; then
+	cp ${MSMPI_ROOT}/bin/mpiexec.exe .
+else
+	echo "MSMPI not found"
+	exit 1
+fi
+
+echo "Moving MEX-files to bin/"
+mv ${ISSM_DIR}/lib/*.mexw64 .
+
+# echo "Moving MPICH binaries to bin/"
+# if [ -f ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec ]; then
+# 	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec .
+# 	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/hydra_pmi_proxy .
+# elif [ -f ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec ]; then
+# 	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec .
+# 	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/hydra_pmi_proxy .
+# else
+# 	echo "MPICH not found"
+# 	exit 1
+# fi
+
+# echo "Moving GDAL binaries to bin/"
+# if [ -f ${ISSM_DIR}/externalpackages/gdal/install/bin/gdal-config ]; then
+# 	cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdalsrsinfo .
+# 	cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdaltransform .
+# else
+# 	echo "GDAL not found"
+# 	exit 1
+# fi
+
+# echo "Moving GMT binaries to bin/"
+# if [ -f ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt-config ]; then
+# 	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt .
+# 	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmtselect .
+# else
+# 	echo "GMT not found"
+# 	exit 1
+# fi
+
+# echo "Moving Gmsh binaries to bin/"
+# if [ -f ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh ]; then
+# 	cp ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh .
+# else
+# 	echo "Gmsh not found"
+# 	exit 1
+# fi
+
+cd ${ISSM_DIR}/lib
+
+# echo "Moving libgfortran to lib/"
+# cp ${LIBGFORTRAN} ${LIBGFORTRAN_DIST} 2> /dev/null
+
+# echo "Moving GSHHG assets to share/"
+# if [ -d ${ISSM_DIR}/externalpackages/gmt/install/share/coast ]; then
+# 	mkdir ${ISSM_DIR}/share 2> /dev/null
+# 	cp -R ${ISSM_DIR}/externalpackages/gmt/install/share/coast ${ISSM_DIR}/share
+# else
+# 	echo "GSHHG not found"
+# 	exit 1
+# fi
+
+# echo "Moving PROJ assets to share/"
+# if [ -d ${ISSM_DIR}/externalpackages/proj/install/share/proj ]; then
+# 	mkdir ${ISSM_DIR}/share 2> /dev/null
+# 	cp -R ${ISSM_DIR}/externalpackages/proj/install/share/proj ${ISSM_DIR}/share
+# else
+# 	echo "PROJ not found"
+# 	exit 1
+# fi
+
+# Run tests
+if [ ${skip_tests} -eq 0 ]; then
+	echo "Running tests"
+	cd ${ISSM_DIR}/test/NightlyRun
+	rm matlab.log 2> /dev/null
+
+	# Run tests, redirecting output to logfile and suppressing output to console
+	export ISSM_DIR_WIN=$(cygpath -w "${ISSM_DIR}")
+	${MATLAB_PATH}/bin/matlab -nodesktop -nosplash -nojvm -r "try, addpath ${ISSM_DIR_WIN}/bin ${ISSM_DIR_WIN}/lib; runme(${MATLAB_NROPTIONS}); exit; catch me,fprintf('%s',getReport(me)); exit; end" -logfile matlab.log &
+
+	# Wait for MATLAB to exit
+	#
+	# TODO:
+	# - Replace by adding -wait option to above calls to matlab?
+	#
+	sleep 5;
+	echo "Waiting for MATLAB to exit"
+	pid=$(ps -W | grep MATLAB | awk '{print $1}')
+	echo '-----------------------------'
+	echo "pid: ${pid}"
+	echo '-----------------------------'
+
+	# Time out after $max_time seconds because sometimes multiple MATLAB processes get locked in race condition
+	timer=0
+	max_time=7200
+	while [[ $timer -lt $max_time && -n "${pid}" ]]; do
+		pid=$(ps -W | grep MATLAB | awk '{print $1}')
+		timer=$((timer + 1))
+		sleep 1;
+	done
+
+	# Check if timer hit $max_time
+	if [ $timer -eq $max_time ]; then
+		echo "Testing timed out at ${timer} seconds"
+		# Kill MATLAB processes
+		pid=$(ps -W | grep MATLAB | awk '{print $1}')
+		echo "${pid}" | xargs /bin/kill -f
+		exit 1
+	fi
+
+	# Filter out Windows characters
+	cat matlab.log | tr -cd '\11\12\40-\176' > matlab.log2 && mv matlab.log2 matlab.log
+
+	# Check that MATLAB did not exit in error
+	matlabExitedInError=`grep -c -E "Activation cannot proceed|Error in|Illegal|Invalid MEX-file|license|Warning: Name is nonexistent or not a directory" matlab.log`
+
+	if [ ${matlabExitedInError} -ne 0 ]; then
+		echo "----------MATLAB exited in error!----------"
+		cat matlab.log
+		echo "-----------End of matlab.log-----------"
+
+		# Clean up execution directory
+		rm -rf ${ISSM_DIR}/execution/*
+
+		exit 1
+	fi
+
+	# Check that all tests passed
+	sed -i "/FAILED TO establish the default connection to the WindowServer/d" matlab.log # First, need to remove WindowServer error message
+	numTestsFailed=`grep -c -E "FAILED|ERROR" matlab.log`
+
+	if [ ${numTestsFailed} -ne 0 ]; then
+		echo "One or more tests FAILED"
+		cat matlab.log
+		exit 1
+	else
+		echo "All tests PASSED"
+	fi
+else
+	echo "Skipping tests"
+fi
+
+# Create package
+cd ${ISSM_DIR}
+svn cleanup --remove-ignored --remove-unversioned test # Clean up test directory (before copying to package)
+echo "Copying assets to package: ${PKG}"
+# NOTE: We do not copy lib directory to package as MATLAB seems to perform differently under Windows and so we package all DDL's and MEX-files in bin directory
+cp -rf bin examples scripts share test ${PKG}
+mkdir ${PKG}/execution
+
+echo "Cleaning up unneeded/unwanted files"
+rm -f ${PKG}/bin/generic_static.* # Remove static versions of generic cluster classes
+rm -rf ${PKG}/test/SandBox # Remove testing sandbox from package
+
+# Compress package
+echo "Compressing package"
+tar -czf ${COMPRESSED_PKG} ${PKG}
Index: /issm/branches/trunk-dlcheng-ASE/packagers/win/transfer-issm-win-binaries.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/packagers/win/transfer-issm-win-binaries.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/packagers/win/transfer-issm-win-binaries.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+################################################################################
+# Transfers ISSM distributable package for Windows to ISSM website.
+#
+# NOTE:
+# - Assumes that the following constants are defined,
+#
+#		COMPRESSED_PKG
+#
+# See also:
+# - packagers/win/complete-issm-win-binaries-matlab.sh
+# - packagers/win/complete-issm-win-binaries-python-2.sh
+# - packagers/win/complete-issm-win-binaries-python-3.sh
+################################################################################
+
+# Transfer package to ISSM Web site
+echo "Transferring package to ISSM Web site"
+scp -i ~/.ssh/windows_10-vm_to_ross ${COMPRESSED_PKG} jenkins@ross.ics.uci.edu:/var/www/html/${COMPRESSED_PKG}
+
+if [ $? -ne 0 ]; then
+	echo "Transfer failed! Verify connection then build this project again (with -t/--transferonly option to skip building and packaging)."
+	exit 1
+fi
Index: /issm/branches/trunk-dlcheng-ASE/patches/Makefile.am_C
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/patches/Makefile.am_C	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/patches/Makefile.am_C	(revision 27955)
@@ -0,0 +1,1018 @@
+AM_CPPFLAGS = @DAKOTAINCL@ @SHAPELIBINCL@ @PETSCINCL@ @SLEPCINCL@ @MPIINCL@ @METISINCL@ @CHACOINCL@ @SCOTCHINCL@ @PLAPACKINCL@ @BLASLAPACKINCL@ @MKLINCL@ @MUMPSINCL@ @TRIANGLEINCL@ @SPAIINCL@ @HYPREINCL@ @PROMETHEUSINCL@ @SUPERLUINCL@ @SPOOLESINCL@ @PASTIXINCL@ @MLINCL@ @TAOINCL@ @ADIC2INCL@ @ADOLCINCL@ @GSLINCL@ @BOOSTINCL@ @ANDROID_NDKINCL@
+
+EXEEXT=$(ISSMEXT)
+
+#Library declaration {{{
+lib_LIBRARIES = libISSMCore.a libISSMOverload.a
+
+if WRAPPERS
+lib_LIBRARIES += libISSMModules.a 
+endif
+#}}}
+
+#sources
+#Core sources{{{
+core_sources = ./main/issm.h\
+			   ./main/globals.h\
+			   ./datastructures/DataSet.h\
+					./datastructures/DataSet.cpp\
+					./datastructures/Object.h\
+					./datastructures/datastructures.h\
+					./classes/classes.h\
+					./classes/gauss/GaussTria.h\
+					./classes/gauss/GaussTria.cpp\
+					./classes/Update.h\
+					./classes/Element.h\
+					./classes/FemModel.h\
+					./classes/FemModel.cpp\
+					./classes/Material.h\
+					./classes/Load.h\
+					./classes/Contour.h\
+					./classes/Loads/Friction.h\
+					./classes/Loads/Friction.cpp\
+					./classes/Inputs/TransientInput.h\
+					./classes/Inputs/TransientInput.cpp\
+					./classes/Constraints/SpcTransient.cpp\
+					./classes/Constraints/SpcTransient.h\
+					./classes/IndependentObject.h\
+					./classes/IndependentObject.cpp\
+					./classes/DependentObject.h\
+					./classes/DependentObject.cpp\
+					./classes/DofIndexing.h\
+					./classes/DofIndexing.cpp\
+					./classes/IoModel.h\
+					./classes/IoModel.cpp\
+					./classes/Contours.h\
+					./classes/Contours.cpp\
+					./classes/Nodes.h\
+					./classes/Nodes.cpp\
+					./classes/Vertices.h\
+					./classes/Vertices.cpp\
+					./classes/Node.h\
+					./classes/Node.cpp\
+					./classes/Segment.h\
+					./classes/Vertex.h\
+					./classes/Vertex.cpp\
+					./classes/Hook.h\
+					./classes/Hook.cpp\
+					./classes/Patch.h\
+					./classes/Patch.cpp\
+					./classes/ElementResults/ElementResultLocal.h\
+					./classes/ElementResults/DoubleElementResult.h\
+					./classes/ElementResults/DoubleElementResult.cpp\
+					./classes/ElementResults/TriaP1ElementResult.h\
+					./classes/ElementResults/TriaP1ElementResult.cpp\
+					./classes/ElementResults/BoolElementResult.h\
+					./classes/ElementResults/BoolElementResult.cpp\
+					./classes/ExternalResults/Results.h\
+					./classes/ExternalResults/Results.cpp\
+					./classes/ExternalResults/ExternalResult.h\
+					./classes/ExternalResults/GenericExternalResult.h\
+					./classes/Elements/Elements.h\
+					./classes/Elements/Elements.cpp\
+					./classes/Elements/Tria.h\
+					./classes/Elements/Tria.cpp\
+					./classes/Elements/TriaHook.h\
+					./classes/Elements/TriaHook.cpp\
+					./classes/Elements/TriaRef.h\
+					./classes/Elements/TriaRef.cpp\
+					./classes/Inputs/Inputs.h\
+					./classes/Inputs/Inputs.cpp\
+					./classes/Inputs/Input.h\
+					./classes/Inputs/InputLocal.h\
+					./classes/Inputs/TriaP1Input.h\
+					./classes/Inputs/TriaP1Input.cpp\
+					./classes/Inputs/BoolInput.h\
+					./classes/Inputs/BoolInput.cpp\
+					./classes/Inputs/IntInput.h\
+					./classes/Inputs/IntInput.cpp\
+					./classes/Inputs/DoubleInput.h\
+					./classes/Inputs/DoubleInput.cpp\
+					./classes/Inputs/DatasetInput.h\
+					./classes/Inputs/DatasetInput.cpp\
+					./classes/Materials/Materials.h\
+					./classes/Materials/Materials.cpp\
+					./classes/Materials/Matice.h\
+					./classes/Materials/Matice.cpp\
+					./classes/Materials/Matdamageice.h\
+					./classes/Materials/Matdamageice.cpp\
+					./classes/Materials/Matpar.h\
+					./classes/Materials/Matpar.cpp\
+					./classes/Constraints/Constraints.h\
+					./classes/Constraints/Constraints.cpp\
+					./classes/Constraints/Constraint.h\
+					./classes/Constraints/SpcStatic.cpp\
+					./classes/Constraints/SpcStatic.h\
+					./classes/Constraints/SpcDynamic.cpp\
+					./classes/Constraints/SpcDynamic.h\
+					./classes/Loads/Loads.h\
+					./classes/Loads/Loads.cpp\
+					./classes/Loads/Penpair.cpp\
+					./classes/Loads/Penpair.h\
+					./classes/Loads/Pengrid.cpp\
+					./classes/Loads/Pengrid.h\
+					./classes/Loads/Icefront.cpp\
+					./classes/Loads/Icefront.h\
+					./classes/Loads/Numericalflux.cpp\
+					./classes/Loads/Numericalflux.h\
+					./classes/matrix/matrixobjects.h\
+					./classes/matrix/ElementMatrix.h\
+					./classes/matrix/ElementMatrix.cpp\
+					./classes/matrix/ElementVector.h\
+					./classes/matrix/ElementVector.cpp\
+					./classes/Params/Parameters.h\
+					./classes/Params/Parameters.cpp\
+					./classes/Params/Param.h\
+					./classes/Params/GenericParam.h\
+					./classes/Params/BoolParam.cpp\
+					./classes/Params/BoolParam.h\
+					./classes/Params/IntParam.cpp\
+					./classes/Params/IntParam.h\
+					./classes/Params/IntVecParam.cpp\
+					./classes/Params/IntVecParam.h\
+					./classes/Params/IntMatParam.cpp\
+					./classes/Params/IntMatParam.h\
+					./classes/Params/DoubleParam.cpp\
+					./classes/Params/DoubleParam.h\
+					./classes/Params/FileParam.cpp\
+					./classes/Params/FileParam.h\
+					./classes/Params/StringArrayParam.cpp\
+					./classes/Params/StringArrayParam.h\
+					./classes/Params/DoubleMatParam.cpp\
+					./classes/Params/DoubleMatParam.h\
+					./classes/Params/DoubleTransientMatParam.cpp\
+					./classes/Params/DoubleTransientMatParam.h\
+					./classes/Params/DoubleMatArrayParam.cpp\
+					./classes/Params/DoubleMatArrayParam.h\
+					./classes/Params/DoubleVecParam.cpp\
+					./classes/Params/DoubleVecParam.h\
+					./classes/Params/StringParam.cpp\
+					./classes/Params/StringParam.h\
+					./classes/Params/MatrixParam.h\
+					./classes/Params/MatrixParam.cpp\
+					./classes/Params/VectorParam.h\
+					./classes/Params/VectorParam.cpp\
+					./classes/Params/TransientParam.h\
+					./classes/Params/TransientParam.cpp\
+					./classes/Params/DataSetParam.h\
+					./classes/Params/DataSetParam.cpp\
+					./classes/Profiler.h\
+					./classes/Profiler.cpp\
+					./shared/shared.h\
+					./shared/MemOps/MemOps.h\
+					./shared/Matrix/matrix.h\
+					./shared/Matrix/MatrixUtils.cpp\
+					./shared/io/io.h\
+					./shared/io/Disk/diskio.h\
+					./shared/io/Disk/pfopen.cpp\
+					./shared/io/Disk/pfclose.cpp\
+					./shared/io/Disk/WriteLockFile.cpp\
+					./shared/io/Print/PrintfFunction.cpp\
+					./shared/io/Print/Print.h\
+					./shared/io/Comm/Comm.h\
+					./shared/io/Comm/CommDef.h\
+					./shared/io/Comm/IssmComm.h\
+					./shared/io/Comm/IssmComm.cpp\
+					./shared/LatLong/Ll2xyx.cpp\
+					./shared/LatLong/Xy2llx.cpp\
+					./shared/Enum/Enum.h\
+					./shared/Enum/EnumDefinitions.h\
+					./shared/Enum/EnumToStringx.cpp\
+					./shared/Enum/StringToEnumx.cpp\
+					./shared/Numerics/numerics.h\
+					./shared/Numerics/types.h\
+					./shared/Numerics/constants.h\
+					./shared/Numerics/Verbosity.h\
+					./shared/Numerics/Verbosity.cpp\
+					./shared/Numerics/GaussPoints.h\
+					./shared/Numerics/GaussPoints.cpp\
+					./shared/Numerics/cross.cpp\
+					./shared/Numerics/isnan.h\
+					./shared/Numerics/isnan.cpp\
+					./shared/Numerics/cubic.cpp\
+					./shared/Numerics/extrema.cpp\
+					./shared/Numerics/XZvectorsToCoordinateSystem.cpp\
+					./shared/Numerics/UnitConversion.cpp\
+					./shared/Numerics/OptArgs.h\
+					./shared/Numerics/OptPars.h\
+					./shared/Exceptions/exceptions.h\
+					./shared/Exceptions/Exceptions.cpp\
+					./shared/Exceptions/exprintf.cpp\
+					./shared/Sorting/binary_search.cpp\
+					./shared/Sorting/sorting.h\
+					./shared/Elements/elements.h\
+					./shared/Elements/Paterson.cpp\
+					./shared/Elements/Arrhenius.cpp\
+					./shared/Elements/PrintArrays.cpp\
+					./shared/Elements/PddSurfaceMassBalance.cpp\
+					./shared/Elements/ComputeDelta18oTemperaturePrecipitation.cpp\
+					./shared/String/sharedstring.h\
+					./shared/String/DescriptorIndex.cpp\
+					./toolkits/metis/metisincludes.h\
+					./toolkits/issm/issmtoolkit.h\
+					./toolkits/issm/IssmToolkitUtils.h\
+					./toolkits/issm/IssmToolkitUtils.cpp\
+					./toolkits/issm/IssmAbsMat.h\
+					./toolkits/issm/IssmAbsVec.h\
+					./toolkits/issm/IssmDenseMat.h\
+					./toolkits/issm/IssmMat.h\
+					./toolkits/issm/IssmSeqVec.h\
+					./toolkits/issm/IssmVec.h\
+					./toolkits/issm/IssmSolver.h\
+					./toolkits/issm/IssmSolver.cpp\
+					./toolkits/issm/Bucket.h\
+					./toolkits/adolc/adolcincludes.h\
+					./toolkits/adolc/AdolcEdf.h\
+					./toolkits/ToolkitOptions.h\
+					./toolkits/ToolkitOptions.cpp\
+					./toolkits/triangle/triangleincludes.h\
+					./toolkits/objects/toolkitobjects.h\
+					./toolkits/objects/Matrix.h\
+					./toolkits/objects/Vector.h\
+					./toolkits/objects/Solver.h\
+					./toolkitsenums.h\
+					./toolkits.h\
+					./modules/ModelProcessorx/ModelProcessorx.h\
+					./modules/ModelProcessorx/ModelProcessorx.cpp\
+					./modules/ModelProcessorx/DistributeNumDofs.cpp\
+					./modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp\
+					./modules/ModelProcessorx/NodesPartitioning.cpp\
+					./modules/ModelProcessorx/SortDataSets.cpp\
+					./modules/ModelProcessorx/UpdateCounters.cpp\
+					./modules/ModelProcessorx/CreateDataSets.cpp\
+					./modules/ModelProcessorx/CreateParameters.cpp\
+					./modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp\
+					./modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp\
+					./modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp\
+					./modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp\
+					./modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.h\
+					./modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.cpp\
+					./modules/NodesDofx/NodesDofx.h\
+					./modules/NodesDofx/NodesDofx.cpp\
+					./modules/NodalValuex/NodalValuex.h\
+					./modules/NodalValuex/NodalValuex.cpp\
+					./modules/VerticesDofx/VerticesDofx.h\
+					./modules/VerticesDofx/VerticesDofx.cpp\
+					./modules/VertexCoordinatesx/VertexCoordinatesx.h\
+					./modules/VertexCoordinatesx/VertexCoordinatesx.cpp\
+					./modules/OutputResultsx/OutputResultsx.h\
+					./modules/OutputResultsx/OutputResultsx.cpp\
+					./modules/InputDuplicatex/InputDuplicatex.h\
+					./modules/InputDuplicatex/InputDuplicatex.cpp\
+					./modules/InputScalex/InputScalex.h\
+					./modules/InputScalex/InputScalex.cpp\
+					./modules/SurfaceAreax/SurfaceAreax.h\
+					./modules/SurfaceAreax/SurfaceAreax.cpp\
+					./modules/CreateNodalConstraintsx/CreateNodalConstraintsx.h\
+					./modules/CreateNodalConstraintsx/CreateNodalConstraintsx.cpp\
+					./modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.h\
+					./modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.cpp\
+					./modules/IoModelToConstraintsx/IoModelToConstraintsx.h\
+					./modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp\
+					./modules/InputUpdateFromConstantx/InputUpdateFromConstantx.h\
+					./modules/InputUpdateFromConstantx/InputUpdateFromConstantx.cpp\
+					./modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.h\
+					./modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.cpp\
+					./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.h\
+					./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp\
+					./modules/GetVectorFromInputsx/GetVectorFromInputsx.h\
+					./modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp\
+					./modules/InputUpdateFromVectorx/InputUpdateFromVectorx.h\
+					./modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp\
+					./modules/InputArtificialNoisex/InputArtificialNoisex.h\
+					./modules/InputArtificialNoisex/InputArtificialNoisex.cpp\
+					./modules/ConfigureObjectsx/ConfigureObjectsx.h\
+					./modules/ConfigureObjectsx/ConfigureObjectsx.cpp\
+					./modules/ComputeBasalStressx/ComputeBasalStressx.h\
+					./modules/ComputeBasalStressx/ComputeBasalStressx.cpp\
+					./modules/ComputeStrainRatex/ComputeStrainRatex.h\
+					./modules/ComputeStrainRatex/ComputeStrainRatex.cpp\
+					./modules/SpcNodesx/SpcNodesx.h\
+					./modules/SpcNodesx/SpcNodesx.cpp\
+					./modules/PositiveDegreeDayx/PositiveDegreeDayx.h\
+					./modules/PositiveDegreeDayx/PositiveDegreeDayx.cpp\
+					./modules/Delta18oParameterizationx/Delta18oParameterizationx.h\
+					./modules/Delta18oParameterizationx/Delta18oParameterizationx.cpp\
+					./modules/SmbGradientsx/SmbGradientsx.h\
+					./modules/SmbGradientsx/SmbGradientsx.cpp\
+					./modules/MeshPartitionx/MeshPartitionx.h\
+					./modules/Reducevectorgtofx/Reducevectorgtofx.cpp\
+					./modules/Reducevectorgtofx/Reducevectorgtofx.h\
+					./modules/Reduceloadx/Reduceloadx.h\
+					./modules/Reduceloadx/Reduceloadx.cpp\
+					./modules/ConstraintsStatex/ConstraintsStatex.cpp\
+					./modules/ConstraintsStatex/ConstraintsStatex.h\
+					./modules/ConstraintsStatex/ConstraintsStateLocal.h\
+					./modules/ResetConstraintsx/ResetConstraintsx.h\
+					./modules/ResetConstraintsx/ResetConstraintsx.cpp\
+					./modules/ResetCoordinateSystemx/ResetCoordinateSystemx.h\
+					./modules/ResetCoordinateSystemx/ResetCoordinateSystemx.cpp\
+					./modules/Solverx/Solverx.cpp\
+					./modules/Solverx/Solverx.h\
+					./modules/VecMergex/VecMergex.cpp\
+					./modules/VecMergex/VecMergex.h\
+					./modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp\
+					./modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h\
+					./modules/InputToResultx/InputToResultx.cpp\
+					./modules/InputToResultx/InputToResultx.h\
+					./analyses/ProcessArguments.cpp\
+					./analyses/ResetBoundaryConditions.cpp\
+					./analyses/AnalysisConfiguration.cpp\
+					./analyses/WrapperCorePointerFromSolutionEnum.cpp\
+					./analyses/CorePointerFromSolutionEnum.cpp\
+					./analyses/EnvironmentInit.cpp\
+					./analyses/EnvironmentFinalize.cpp\
+					./analyses/ad_core.cpp\
+					./solutionsequences/solutionsequence_linear.cpp\
+					./solutionsequences/solutionsequence_nonlinear.cpp\
+					./solutionsequences/solutionsequence_newton.cpp\
+					./solutionsequences/convergence.cpp\
+					./classes/Options/Options.h\
+					./classes/Options/Options.cpp\
+					./classes/Options/Option.h\
+					./classes/Options/GenericOption.h\
+					./classes/Options/OptionUtilities.cpp\
+					./classes/Options/OptionUtilities.h\
+					./classes/RiftStruct.cpp\
+					./classes/RiftStruct.h
+#}}}
+#DAKOTA sources  {{{
+dakota_sources = ./modules/InputUpdateFromDakotax/InputUpdateFromDakotax.h\
+					  ./modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp\
+					  ./modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h\
+					  ./modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp\
+					  ./modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.h\
+					  ./modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp\
+					  ./modules/AverageOntoPartitionx/AverageOntoPartitionx.cpp\
+					  ./modules/AverageOntoPartitionx/AverageOntoPartitionx.h\
+					  ./modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp\
+					  ./analyses/dakota_core.cpp\
+					  ./analyses/DakotaSpawnCore.h\
+					  ./analyses/DakotaSpawnCore.cpp
+#}}}
+#Transient sources  {{{
+transient_sources  = ./modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp \
+							./analyses/transient_core.cpp
+#}}}
+#Steadystate sources  {{{
+steadystate_sources = ./analyses/steadystate_core.cpp
+#}}}
+#Prognostic sources  {{{
+prognostic_sources = ./modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp\
+					      ./modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp\
+					      ./modules/ModelProcessorx/Prognostic/CreateConstraintsPrognostic.cpp\
+					      ./modules/ModelProcessorx/Prognostic/CreateLoadsPrognostic.cpp\
+							./analyses/prognostic_core.cpp
+#}}}
+#Thermal sources  {{{
+thermal_sources = ./modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp\
+					   ./modules/ModelProcessorx/Thermal/CreateNodesThermal.cpp\
+					   ./modules/ModelProcessorx/Thermal/CreateConstraintsThermal.cpp\
+					   ./modules/ModelProcessorx/Thermal/CreateLoadsThermal.cpp\
+					   ./modules/ModelProcessorx/Enthalpy/UpdateElementsEnthalpy.cpp\
+					   ./modules/ModelProcessorx/Enthalpy/CreateNodesEnthalpy.cpp\
+					   ./modules/ModelProcessorx/Enthalpy/CreateConstraintsEnthalpy.cpp\
+					   ./modules/ModelProcessorx/Enthalpy/CreateLoadsEnthalpy.cpp\
+					   ./modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp\
+					   ./modules/ModelProcessorx/Melting/CreateNodesMelting.cpp\
+					   ./modules/ModelProcessorx/Melting/CreateConstraintsMelting.cpp\
+					   ./modules/ModelProcessorx/Melting/CreateLoadsMelting.cpp\
+					   ./modules/ConstraintsStatex/ThermalConstraintsState.cpp\
+					   ./modules/ConstraintsStatex/ThermalIsPresent.cpp\
+					   ./modules/ResetConstraintsx/ThermalConstraintsReset.cpp \
+					   ./analyses/thermal_core.cpp\
+					   ./analyses/enthalpy_core.cpp\
+					   ./solutionsequences/solutionsequence_thermal_nonlinear.cpp
+#}}}
+#Control sources  {{{
+control_sources= ./modules/ControlInputGetGradientx/ControlInputGetGradientx.cpp\
+					  ./modules/ControlInputGetGradientx/ControlInputGetGradientx.h\
+					  ./modules/ControlInputSetGradientx/ControlInputSetGradientx.cpp\
+					  ./modules/ControlInputSetGradientx/ControlInputSetGradientx.h\
+					  ./modules/ControlInputScaleGradientx/ControlInputScaleGradientx.cpp\
+					  ./modules/ControlInputScaleGradientx/ControlInputScaleGradientx.h\
+					  ./modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.cpp\
+					  ./modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.h\
+					  ./modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.cpp\
+					  ./modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.h\
+					  ./modules/ModelProcessorx/Control/CreateParametersControl.cpp\
+					  ./modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp\
+					  ./modules/InputControlUpdatex/InputControlUpdatex.h\
+					  ./modules/InputControlUpdatex/InputControlUpdatex.cpp\
+					  ./modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.h\
+					  ./modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp\
+					  ./modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.h\
+					  ./modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp\
+					  ./modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.h\
+					  ./modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp\
+					  ./modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.h\
+					  ./modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp\
+					  ./modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.h\
+					  ./modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp\
+					  ./modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.h\
+					  ./modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.cpp\
+					  ./modules/Orthx/Orthx.h\
+					  ./modules/Orthx/Orthx.cpp\
+					  ./modules/Gradjx/Gradjx.h\
+					  ./modules/Gradjx/Gradjx.cpp\
+					  ./modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.cpp\
+					  ./modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.h\
+					  ./modules/ThicknessAlongGradientx/ThicknessAlongGradientx.cpp\
+					  ./modules/ThicknessAlongGradientx/ThicknessAlongGradientx.h\
+					  ./modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.cpp\
+					  ./modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.h\
+					  ./modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.cpp\
+					  ./modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.h\
+					  ./classes/Inputs/ControlInput.h\
+					  ./classes/Inputs/ControlInput.cpp\
+					  ./shared/Numerics/BrentSearch.cpp\
+					  ./shared/Numerics/OptimalSearch.cpp \
+					  ./analyses/control_core.cpp\
+					  ./analyses/controltao_core.cpp\
+					  ./analyses/objectivefunction.cpp\
+					  ./analyses/gradient_core.cpp\
+					  ./analyses/adjointdiagnostic_core.cpp\
+					  ./analyses/adjointbalancethickness_core.cpp\
+					  ./analyses/AdjointCorePointerFromSolutionEnum.cpp\
+					  ./solutionsequences/solutionsequence_adjoint_linear.cpp
+
+#}}}
+#Hydrology sources  {{{
+hydrology_sources  = ./modules/ModelProcessorx/HydrologyShreve/UpdateElementsHydrologyShreve.cpp\
+					      ./modules/ModelProcessorx/HydrologyShreve/CreateNodesHydrologyShreve.cpp\
+					      ./modules/ModelProcessorx/HydrologyShreve/CreateConstraintsHydrologyShreve.cpp\
+					      ./modules/ModelProcessorx/HydrologyShreve/CreateLoadsHydrologyShreve.cpp \
+							./modules/ModelProcessorx/HydrologyShreve/CreateParametersHydrologyShreve.cpp \
+							./modules/ModelProcessorx/HydrologyDCInefficient/UpdateElementsHydrologyDCInefficient.cpp\
+							./modules/ModelProcessorx/HydrologyDCInefficient/CreateNodesHydrologyDCInefficient.cpp\
+							./modules/ModelProcessorx/HydrologyDCInefficient/CreateConstraintsHydrologyDCInefficient.cpp\
+							./modules/ModelProcessorx/HydrologyDCInefficient/CreateLoadsHydrologyDCInefficient.cpp \
+							./modules/ModelProcessorx/HydrologyDCInefficient/CreateParametersHydrologyDCInefficient.cpp \
+							./modules/ModelProcessorx/HydrologyDCEfficient/UpdateElementsHydrologyDCEfficient.cpp\
+							./modules/ModelProcessorx/HydrologyDCEfficient/CreateNodesHydrologyDCEfficient.cpp\
+							./modules/ModelProcessorx/HydrologyDCEfficient/CreateConstraintsHydrologyDCEfficient.cpp\
+							./modules/ModelProcessorx/HydrologyDCEfficient/CreateLoadsHydrologyDCEfficient.cpp \
+							./modules/ModelProcessorx/HydrologyDCEfficient/CreateParametersHydrologyDCEfficient.cpp \
+							./analyses/hydrology_core.cpp\
+							./solutionsequences/solutionsequence_hydro_nonlinear.cpp
+#}}}
+#Diagnostic sources  {{{
+diagnostic_sources = ./modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp\
+					      ./modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp \
+					      ./modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp \
+					      ./modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp\
+					      ./modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp\
+					      ./modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp \
+					      ./modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp \
+					      ./modules/ModelProcessorx/DiagnosticVert/CreateLoadsDiagnosticVert.cpp\
+					      ./modules/ModelProcessorx/DiagnosticHutter/UpdateElementsDiagnosticHutter.cpp\
+					      ./modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp \
+					      ./modules/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp \
+							./modules/ModelProcessorx/DiagnosticHutter/CreateLoadsDiagnosticHutter.cpp \
+							./analyses/diagnostic_core.cpp\
+							./solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp
+#}}}
+#Balanced sources  {{{
+balanced_sources = ./modules/ModelProcessorx/Balancethickness/UpdateElementsBalancethickness.cpp\
+					    ./modules/ModelProcessorx/Balancethickness/CreateNodesBalancethickness.cpp\
+					    ./modules/ModelProcessorx/Balancethickness/CreateConstraintsBalancethickness.cpp\
+						 ./modules/ModelProcessorx/Balancethickness/CreateLoadsBalancethickness.cpp\
+						 ./analyses/balancethickness_core.cpp \
+						 ./analyses/dummy_core.cpp
+#}}}
+#Slope sources  {{{
+slope_sources =  ./modules/ModelProcessorx/BedSlope/UpdateElementsBedSlope.cpp\
+					  ./modules/ModelProcessorx/BedSlope/CreateNodesBedSlope.cpp \
+					  ./modules/ModelProcessorx/BedSlope/CreateConstraintsBedSlope.cpp\
+					  ./modules/ModelProcessorx/BedSlope/CreateLoadsBedSlope.cpp\
+					  ./modules/ModelProcessorx/SurfaceSlope/UpdateElementsSurfaceSlope.cpp\
+					  ./modules/ModelProcessorx/SurfaceSlope/CreateNodesSurfaceSlope.cpp \
+					  ./modules/ModelProcessorx/SurfaceSlope/CreateConstraintsSurfaceSlope.cpp\
+					  ./modules/ModelProcessorx/SurfaceSlope/CreateLoadsSurfaceSlope.cpp\
+					  ./analyses/surfaceslope_core.cpp\
+					  ./analyses/bedslope_core.cpp
+#}}}
+#Gia sources  {{{
+gia_sources =  ./analyses/gia_core.cpp\
+					./modules/ModelProcessorx/Gia/UpdateElementsGia.cpp\
+					./modules/ModelProcessorx/Gia/CreateNodesGia.cpp \
+					./modules/ModelProcessorx/Gia/CreateConstraintsGia.cpp\
+					./modules/ModelProcessorx/Gia/CreateLoadsGia.cpp\
+					./modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp\
+					./modules/GiaDeflectionCorex/GiaDeflectionCorex.h\
+					./modules/GiaDeflectionCorex/distme.f\
+					./modules/GiaDeflectionCorex/freed.f\
+					./modules/GiaDeflectionCorex/ojrule.f\
+					./modules/GiaDeflectionCorex/pwise.f\
+					./modules/GiaDeflectionCorex/qwise.f\
+					./modules/GiaDeflectionCorex/stot.f\
+					./modules/GiaDeflectionCorex/what0.f\
+					./classes/GiaDeflectionCoreArgs.h
+
+#}}}
+#Groundingline sources  {{{
+groundingline_sources= ./modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp\
+					        ./modules/GroundinglineMigrationx/GroundinglineMigrationx.h
+#}}}
+#Rifts sources  {{{
+rifts_sources = ./classes/Loads/Riftfront.cpp\
+				    ./classes/Loads/Riftfront.h\
+				    ./modules/ConstraintsStatex/RiftConstraintsState.cpp
+#}}}
+#Android sources  {{{
+android_sources = 
+#}}}
+#3D sources  {{{
+threed_sources = ./classes/gauss/GaussPenta.h\
+				     ./classes/gauss/GaussPenta.cpp\
+				     ./classes/ElementResults/PentaP1ElementResult.h\
+				     ./classes/ElementResults/PentaP1ElementResult.cpp\
+				     ./classes/Inputs/PentaP1Input.h\
+				     ./classes/Inputs/PentaP1Input.cpp\
+				     ./classes/Elements/Penta.h\
+				     ./classes/Elements/Penta.cpp\
+				     ./classes/Elements/PentaHook.h\
+				     ./classes/Elements/PentaHook.cpp\
+				     ./classes/Elements/PentaRef.h\
+				     ./classes/Elements/PentaRef.cpp
+#}}}
+#Bamg sources  {{{
+bamg_sources =  ./bamg/bamgobjects.h\
+				./bamg/BamgGeom.h\
+				./bamg/BamgGeom.cpp\
+				./bamg/BamgMesh.h\
+				./bamg/BamgMesh.cpp\
+				./bamg/BamgOpts.h\
+				./bamg/BamgOpts.cpp\
+				./bamg/CrackedEdge.h\
+				./bamg/CrackedEdge.cpp\
+				./bamg/Curve.h\
+				./bamg/Curve.cpp\
+				./bamg/Direction.h\
+				./bamg/Direction.cpp\
+				./bamg/DoubleAndInt.h\
+				./bamg/Edge.h\
+				./bamg/Edge.cpp\
+				./bamg/GeomEdge.h\
+				./bamg/GeomEdge.cpp\
+				./bamg/GeomSubDomain.h\
+				./bamg/GeomSubDomain.cpp\
+				./bamg/GeomVertex.h\
+				./bamg/GeomVertex.cpp\
+				./bamg/Geometry.cpp\
+				./bamg/Geometry.h\
+				./bamg/ListofIntersectionTriangles.cpp\
+				./bamg/ListofIntersectionTriangles.h\
+				./bamg/EigenMetric.cpp\
+				./bamg/Metric.cpp\
+				./bamg/Metric.h\
+				./bamg/BamgQuadtree.cpp\
+				./bamg/BamgQuadtree.h\
+				./bamg/R2.h\
+				./bamg/SetOfE4.cpp\
+				./bamg/SetOfE4.h\
+				./bamg/SubDomain.h\
+				./bamg/SubDomain.cpp\
+				./bamg/AdjacentTriangle.h\
+				./bamg/AdjacentTriangle.cpp\
+				./bamg/Triangle.cpp\
+				./bamg/det.h \
+				./bamg/Triangle.h\
+				./bamg/BamgVertex.cpp\
+				./bamg/BamgVertex.h\
+				./bamg/VertexOnEdge.h\
+				./bamg/VertexOnEdge.cpp\
+				./bamg/VertexOnGeom.h\
+				./bamg/VertexOnGeom.cpp\
+				./bamg/VertexOnVertex.h\
+				./bamg/VertexOnVertex.cpp\
+				./bamg/Mesh.cpp\
+				./bamg/Mesh.h\
+				./shared/Bamg/Abs.h \
+				./shared/Bamg/BigPrimeNumber.h\
+				./shared/Bamg/BigPrimeNumber.cpp\
+				./shared/Bamg/BinaryRand.h \
+				./shared/Bamg/Exchange.h \
+				./shared/Bamg/extrema.h \
+				./shared/Bamg/HeapSort.h \
+				./shared/Bamg/OppositeAngle.h \
+				./modules/Bamgx/Bamgx.cpp\
+				./modules/Bamgx/Bamgx.h\
+				./modules/BamgConvertMeshx/BamgConvertMeshx.cpp\
+				./modules/BamgConvertMeshx/BamgConvertMeshx.h\
+				./modules/BamgTriangulatex/BamgTriangulatex.cpp\
+				./modules/BamgTriangulatex/BamgTriangulatex.h
+#}}}
+#Kriging sources  {{{
+kriging_sources = ./classes/kriging/Observations.h\
+						./classes/kriging/Observations.cpp\
+						./classes/kriging/Variogram.h \
+						./classes/kriging/GaussianVariogram.h\
+						./classes/kriging/GaussianVariogram.cpp\
+						./classes/kriging/ExponentialVariogram.h\
+						./classes/kriging/ExponentialVariogram.cpp\
+						./classes/kriging/SphericalVariogram.h\
+						./classes/kriging/SphericalVariogram.cpp\
+						./classes/kriging/PowerVariogram.h\
+						./classes/kriging/PowerVariogram.cpp\
+						./classes/kriging/Quadtree.h\
+						./classes/kriging/Quadtree.cpp\
+						./classes/kriging/Observation.h\
+						./classes/kriging/Observation.cpp\
+						./modules/Krigingx/Krigingx.cpp\
+						./modules/Krigingx/Krigingx.h
+
+#For parallel kriging, only difference is ./modules/Krigingx/pKrigingx.cpp with no multithreading
+pkriging_sources = ./classes/kriging/Observations.h\
+						./classes/kriging/Observations.cpp\
+						./classes/kriging/Variogram.h \
+						./classes/kriging/GaussianVariogram.h\
+						./classes/kriging/GaussianVariogram.cpp\
+						./classes/kriging/ExponentialVariogram.h\
+						./classes/kriging/ExponentialVariogram.cpp\
+						./classes/kriging/SphericalVariogram.h\
+						./classes/kriging/SphericalVariogram.cpp\
+						./classes/kriging/PowerVariogram.h\
+						./classes/kriging/PowerVariogram.cpp\
+						./classes/kriging/Quadtree.h\
+						./classes/kriging/Quadtree.cpp\
+						./classes/kriging/Observation.h\
+						./classes/kriging/Observation.cpp\
+						./modules/Krigingx/pKrigingx.cpp\
+						./modules/Krigingx/Krigingx.h
+
+#}}}
+#Kml sources  {{{
+kml_sources = ./modules/Exp2Kmlx/Exp2Kmlx.h\
+			     ./modules/Exp2Kmlx/Exp2Kmlx.cpp\
+			     ./modules/Kml2Expx/Kml2Expx.h\
+			     ./modules/Kml2Expx/Kml2Expx.cpp\
+			     ./modules/Shp2Expx/Shp2Expx.h\
+			     ./modules/Shp2Expx/Shp2Expx.cpp\
+			     ./modules/Shp2Kmlx/Shp2Kmlx.h\
+			     ./modules/Shp2Kmlx/Shp2Kmlx.cpp\
+			     ./modules/KMLFileReadx/KMLFileReadx.h\
+			     ./modules/KMLFileReadx/KMLFileReadx.cpp\
+			     ./modules/KMLMeshWritex/KMLMeshWritex.h\
+			     ./modules/KMLMeshWritex/KMLMeshWritex.cpp\
+			     ./modules/KMLOverlayx/KMLOverlayx.h\
+			     ./modules/KMLOverlayx/KMLOverlayx.cpp\
+			     ./kml/kmlobjects.h\
+			     ./kml/KML_Attribute.cpp\
+			     ./kml/KML_Attribute.h\
+			     ./kml/KML_Comment.cpp\
+			     ./kml/KML_Comment.h\
+			     ./kml/KML_ColorStyle.cpp\
+			     ./kml/KML_ColorStyle.h\
+			     ./kml/KML_Container.cpp\
+			     ./kml/KML_Container.h\
+			     ./kml/KML_Document.cpp\
+			     ./kml/KML_Document.h\
+			     ./kml/KML_Feature.cpp\
+			     ./kml/KML_Feature.h\
+			     ./kml/KML_File.cpp\
+			     ./kml/KML_File.h\
+			     ./kml/KML_Folder.cpp\
+			     ./kml/KML_Folder.h\
+			     ./kml/KML_Geometry.cpp\
+			     ./kml/KML_Geometry.h\
+			     ./kml/KML_GroundOverlay.cpp\
+			     ./kml/KML_GroundOverlay.h\
+			     ./kml/KML_Icon.cpp\
+			     ./kml/KML_Icon.h\
+			     ./kml/KML_LatLonBox.cpp\
+		  	     ./kml/KML_LatLonBox.h\
+			     ./kml/KML_LinearRing.cpp\
+			     ./kml/KML_LinearRing.h\
+			     ./kml/KML_LineString.cpp\
+			     ./kml/KML_LineString.h\
+			     ./kml/KML_LineStyle.cpp\
+			     ./kml/KML_LineStyle.h\
+			     ./kml/KML_MultiGeometry.cpp\
+			     ./kml/KML_MultiGeometry.h\
+			     ./kml/KML_Object.cpp\
+			     ./kml/KML_Object.h\
+			     ./kml/KML_Overlay.cpp\
+			     ./kml/KML_Overlay.h\
+			     ./kml/KML_Point.cpp\
+			     ./kml/KML_Point.h\
+			     ./kml/KML_Placemark.cpp\
+			     ./kml/KML_Placemark.h\
+			     ./kml/KML_Polygon.cpp\
+			     ./kml/KML_Polygon.h\
+			     ./kml/KML_PolyStyle.cpp\
+			     ./kml/KML_PolyStyle.h\
+			     ./kml/KML_Style.cpp\
+			     ./kml/KML_Style.h\
+			     ./kml/KML_StyleSelector.cpp\
+			     ./kml/KML_StyleSelector.h\
+			     ./kml/KML_SubStyle.cpp\
+			     ./kml/KML_SubStyle.h\
+			     ./kml/KML_Unknown.cpp\
+			     ./kml/KML_Unknown.h\
+			     ./kml/KMLFileReadUtils.cpp\
+			     ./kml/KMLFileReadUtils.h
+#}}}
+#Petsc sources  {{{
+petsc_sources= ./toolkits/petsc\
+					./toolkits/petsc/patches\
+					./toolkits/petsc/patches/SolverEnum.h\
+					./toolkits/petsc/patches/petscpatches.h\
+					./toolkits/petsc/patches/VecToMPISerial.cpp\
+					./toolkits/petsc/patches/MatToSerial.cpp\
+					./toolkits/petsc/patches/VecMerge.cpp\
+					./toolkits/petsc/patches/NewVec.cpp\
+					./toolkits/petsc/patches/PetscOptionsDetermineSolverType.cpp\
+					./toolkits/petsc/patches/PetscOptionsInsertMultipleString.cpp\
+					./toolkits/petsc/patches/NewMat.cpp\
+					./toolkits/petsc/patches/VecFree.cpp\
+					./toolkits/petsc/patches/PetscMatrixToDoubleMatrix.cpp\
+					./toolkits/petsc/patches/PetscVectorToDoubleVector.cpp\
+					./toolkits/petsc/patches/VecDuplicatePatch.cpp\
+					./toolkits/petsc/patches/KSPFree.cpp\
+					./toolkits/petsc/patches/MatFree.cpp\
+					./toolkits/petsc/patches/MatMultPatch.cpp\
+					./toolkits/petsc/patches/ISSMToPetscMatrixType.cpp\
+					./toolkits/petsc/patches/ISSMToPetscInsertMode.cpp\
+					./toolkits/petsc/patches/ISSMToPetscNormMode.cpp\
+					./toolkits/petsc/objects/petscobjects.h\
+					./toolkits/petsc/objects/PetscMat.h\
+					./toolkits/petsc/objects/PetscMat.cpp\
+					./toolkits/petsc/objects/PetscVec.h\
+					./toolkits/petsc/objects/PetscVec.cpp\
+					./toolkits/petsc/objects/PetscSolver.cpp\
+					./toolkits/petsc/objects/PetscSolver.h\
+					./toolkits/petsc/petscincludes.h
+
+#}}}
+#Mumps sources  {{{
+mumps_sources=      ./toolkits/mumps\
+					./toolkits/mumps/mumpsincludes.h\
+					./toolkits/mumps/MpiDenseMumpsSolve.cpp
+#}}}
+#Gsl sources  {{{
+gsl_sources=      ./toolkits/gsl\
+					./toolkits/gsl/gslincludes.h\
+					./toolkits/gsl/DenseGslSolve.cpp
+#}}}
+#Mpi sources  {{{
+mpi_sources= ./toolkits/mpi/mpiincludes.h\
+				./toolkits/mpi/patches/mpipatches.h\
+				./toolkits/mpi/patches/DetermineLocalSize.cpp\
+				./toolkits/mpi/patches/DetermineGlobalSize.cpp\
+				./toolkits/mpi/patches/DetermineRowRankFromLocalSize.cpp\
+				./toolkits/mpi/patches/GetOwnershipBoundariesFromRange.cpp\
+				./toolkits/issm/IssmMpiDenseMat.h\
+				./toolkits/issm/IssmMpiVec.h
+#}}}
+#Metis sources  {{{
+metis_sources= ./toolkits/metis/patches/metispatches.h\
+					./toolkits/metis/patches/METIS_PartMeshNodalPatch.cpp
+#}}}
+#Modules sources{{{
+modules_sources= ./shared/Threads/issm_threads.h\
+			./shared/Threads/LaunchThread.cpp\
+			./shared/Threads/PartitionRange.cpp\
+			./shared/Exp/exp.h\
+			./shared/Exp/exp.cpp\
+			./shared/TriMesh/trimesh.h\
+			./shared/TriMesh/AssociateSegmentToElement.cpp\
+			./shared/TriMesh/GridInsideHole.cpp\
+			./shared/TriMesh/OrderSegments.cpp\
+			./shared/TriMesh/SplitMeshForRifts.cpp\
+			./shared/TriMesh/TriMeshUtils.cpp\
+			./modules/Chacox/Chacox.h\
+			./modules/Chacox/Chacox.cpp\
+			./modules/Chacox/input_parse.cpp\
+			./modules/Chacox/chaco_seconds.cpp\
+			./modules/Chacox/user_params.cpp\
+			./modules/TriaSearchx/TriaSearchx.h\
+			./modules/TriaSearchx/TriaSearchx.cpp\
+			./modules/TriMeshx/TriMeshx.h\
+			./modules/TriMeshx/TriMeshx.cpp\
+			./modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.h\
+			./modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.cpp\
+			./modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.h\
+			./modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.cpp\
+			./modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp\
+			./modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp\
+			./modules/InterpFromGridToMeshx/InterpFromGridToMeshx.h\
+			./modules/InterpFromMesh2dx/InterpFromMesh2dx.cpp\
+			./modules/InterpFromMesh2dx/InterpFromMesh2dxt.cpp\
+			./modules/InterpFromMesh2dx/InterpFromMesh2dx.h\
+			./modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp\
+			./modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.h\
+			./modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.cpp\
+			./modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.h\
+			./modules/InterpFromMeshToGridx/InterpFromMeshToGridx.cpp\
+			./modules/InterpFromMeshToGridx/InterpFromMeshToGridx.h\
+			./modules/HoleFillerx/HoleFillerx.cpp\
+			./modules/HoleFillerx/HoleFillerx.h\
+			./modules/EdgeDetectionx/EdgeDetectionx.cpp\
+			./modules/EdgeDetectionx/EdgeDetectionx.h\
+			./modules/AverageFilterx/AverageFilterx.cpp\
+			./modules/AverageFilterx/AverageFilterx.h\
+			./modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp\
+			./modules/MeshProfileIntersectionx/MeshProfileIntersectionx.h\
+			./modules/ContourToMeshx/ContourToMeshx.cpp\
+			./modules/ContourToMeshx/ContourToMeshxt.cpp\
+			./modules/ContourToMeshx/ContourToMeshx.h\
+			./modules/ContourToNodesx/ContourToNodesx.cpp\
+			./modules/ContourToNodesx/ContourToNodesx.h\
+			./modules/Reducevectorgtosx/Reducevectorgtosx.cpp\
+			./modules/Reducevectorgtosx/Reducevectorgtosx.h\
+			./modules/NodeConnectivityx/NodeConnectivityx.cpp\
+			./modules/NodeConnectivityx/NodeConnectivityx.h\
+			./modules/ElementConnectivityx/ElementConnectivityx.cpp\
+			./modules/ElementConnectivityx/ElementConnectivityx.h\
+			./modules/Scotchx/Scotchx.cpp\
+			./modules/Scotchx/Scotchx.h\
+			./modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.cpp\
+			./modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.h
+#}}}
+
+#{{{ Conditional build-up of sources
+#ISSM sources are a combination of core sources and sources related to specific capabilities (which can 
+#be activated by autotools conditionals 
+
+#First the core
+issm_sources  =  $(core_sources)
+
+#Now the optional source
+if DAKOTA
+issm_sources  +=  $(dakota_sources)
+endif
+
+if PETSC
+issm_sources  +=  $(petsc_sources)
+endif
+
+if MUMPS
+issm_sources  +=  $(mumps_sources)
+endif
+
+if GSL
+issm_sources  +=  $(gsl_sources)
+endif
+
+if TRANSIENT
+issm_sources  +=  $(transient_sources)
+endif
+
+if STEADYSTATE
+issm_sources  +=  $(steadystate_sources)
+endif
+
+if PROGNOSTIC
+issm_sources  +=  $(prognostic_sources)
+endif
+
+if THERMAL
+issm_sources  +=  $(thermal_sources)
+endif
+
+if GIA
+issm_sources  +=  $(gia_sources)
+endif
+
+if CONTROL
+issm_sources  +=  $(control_sources)
+endif
+
+if HYDROLOGY
+issm_sources  +=  $(hydrology_sources)
+endif
+
+if DIAGNOSTIC
+issm_sources  +=  $(diagnostic_sources)
+endif
+
+if BALANCED
+issm_sources  +=  $(balanced_sources)
+endif
+
+if SLOPE
+issm_sources  +=  $(slope_sources)
+endif
+
+if GROUNDINGLINE
+issm_sources +=  $(groundingline_sources)
+endif
+
+if RIFTS
+issm_sources +=  $(rifts_sources)
+endif
+
+if ANDROID
+issm_sources +=  $(android_sources)
+endif
+
+if THREED
+issm_sources +=  $(threed_sources)
+endif
+
+if MPI
+issm_sources +=  $(mpi_sources)
+endif
+
+if METIS
+issm_sources +=  $(metis_sources)
+endif
+
+if KRIGING
+issm_sources +=  $(pkriging_sources)
+endif
+#}}}
+#Library flags and sources {{{
+ALLCXXFLAGS= -fPIC -D_GNU_SOURCE -fno-omit-frame-pointer -pthread -D_CPP_  $(CXXFLAGS) $(CXXOPTFLAGS) 
+
+libISSMCore_a_SOURCES  = $(issm_sources)
+libISSMCore_a_CXXFLAGS = $(ALLCXXFLAGS)
+libISSMCore_a_FFLAGS = $(AM_FFLAGS)
+
+if WRAPPERS
+libISSMModules_a_SOURCES = $(modules_sources)
+libISSMModules_a_SOURCES += $(bamg_sources)
+if KRIGING
+libISSMModules_a_SOURCES += $(kriging_sources)
+endif
+if KML
+libISSMModules_a_SOURCES += $(kml_sources)
+endif
+libISSMModules_a_CXXFLAGS = $(ALLCXXFLAGS)
+libISSMModules_a_LIBADD = ./libISSMCore.a
+endif
+
+if VERSION
+AM_LDFLAGS =
+else
+AM_LDFLAGS = -avoid-version
+endif
+#}}}
+#Overload library, to overload any non-standard symbols. {{{
+libISSMOverload_a_SOURCES = ./shared/String/stricmp.c
+libISSMOverload_a_CFLAGS  = -fPIC -D_C_ $(COPTFLAGS) $(CFLAGS)
+#}}}
+
+#Executable {{{
+if ANDROID
+if ANDROIDEXE
+bin_PROGRAMS = issm 
+else
+bin_PROGRAMS = 
+endif
+else
+bin_PROGRAMS = issm 
+endif
+
+#Standard libraries
+LDADD = ./libISSMCore.a ./libISSMOverload.a
+
+#External packages
+LDADD += $(PETSCLIB) $(TAOLIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(SCALAPACKLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(FORTRANLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB) $(ADOLCLIB)
+
+if FORTRAN
+LDADD += $(FLIBS)
+endif
+
+issm_SOURCES = main/issm.cpp
+issm_CXXFLAGS= -fPIC $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) 
+
+if KRIGING
+bin_PROGRAMS += kriging
+kriging_SOURCES = main/kriging.cpp
+kriging_CXXFLAGS= -fPIC $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) 
+endif
+#}}}
+#Automatic differentiation: append this fold to the end of the src/c/Makefile.am to get this Makefile.am {{{
+if ADIC2 
+lib_LIBRARIES += libAD.a libISSMRose.a
+
+#ADIC2 library, for automatic differentiation 
+#libAD_a_SOURCES = ./mini1.ad.c
+libAD_a_SOURCES = 
+libAD_a_CFLAGS = -fPIC -D_C_ $(COPTFLAGS)
+
+
+#test rose preprocessing 
+%.r2cpp.cpp : %.cpp
+	testTranslator -rose:o $@ -rose:skipfinalCompileStep -DHAVE_CONFIG_H -D_C_ -I. -I../.. $(INCLUDES) $<
+libISSMRose_a_SOURCES = $(libISSMCore_a_SOURCES:.cpp=.r2cpp.cpp)
+libISSMRose_a_CXXFLAGS= -fPIC -D_C_ $(CXXOPTFLAGS)
+
+
+
+#Automatic differentiation rules: 
+%.ad.c: %.c
+	adic2 -mforward  $< --nary
+
+
+
+#Executable
+bin_PROGRAMS +=  issmRose.exe
+issmRose_exe_LDADD = ./libISSMRose.a $(LDADD)
+issmRose_exe_SOURCES = main/issm.cpp
+issmRose_exe_CXXFLAGS= -fPIC $(CXXOPTFLAGS) $(COPTFLAGS) 
+LDADD +=  $(ADIC2LIB) 
+
+endif #}}}
Index: /issm/branches/trunk-dlcheng-ASE/patches/Makefile.am_MATLAB
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/patches/Makefile.am_MATLAB	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/patches/Makefile.am_MATLAB	(revision 27955)
@@ -0,0 +1,267 @@
+AM_CPPFLAGS = @DAKOTAINCL@ @MATLABINCL@ @PETSCINCL@ @MPIINCL@ @SPOOLESINCL@ @METISINCL@ @TRIANGLEINCL@ @CHACOINCL@ @SCOTCHINCL@ @SHAPELIBINCL@
+
+lib_LIBRARIES = libISSMMatlab.a 
+
+EXEEXT=$(MATLABWRAPPEREXT)
+
+#matlab io{{{
+io_sources = ./include/matlabincludes.h\
+				./io/matlabio.h\
+				./io/MatlabNArrayToNArray.cpp\
+				./io/CheckNumMatlabArguments.cpp\
+				./io/mxGetAssignedField.cpp\
+				./io/WriteMatlabData.cpp\
+				./io/FetchMatlabData.cpp\
+				./io/OptionParse.cpp\
+				./io/MatlabMatrixToMatrix.cpp\
+				./io/MatlabVectorToVector.cpp\
+				./io/MatlabVectorToDoubleVector.cpp\
+				./io/MatlabMatrixToDoubleMatrix.cpp\
+				./io/MatlabMatrixToIssmMat.cpp\
+				./io/MatlabVectorToIssmVec.cpp
+				
+if PETSC
+io_sources += ./io/MatlabMatrixToPetscMat.cpp\
+				./io/MatlabVectorToPetscVec.cpp
+endif
+
+ALLCXXFLAGS = /D_GNU_SOURCE /D_CPP_ /D_WRAPPERS_ $(CXXFLAGS) $(CXXOPTFLAGS) 
+libISSMMatlab_a_SOURCES = $(io_sources)
+libISSMMatlab_a_CXXFLAGS = $(ALLCXXFLAGS)
+
+#}}}
+#Wrappers {{{
+if WRAPPERS
+bin_PROGRAMS =  AverageFilter\
+						 BamgMesher\
+						 BamgConvertMesh\
+						 BamgTriangulate\
+						 ContourToMesh\
+						 ContourToNodes\
+						 EdgeDetection\
+						 ElementConnectivity\
+						 EnumToString\
+						 ExpSimplify\
+						 HoleFiller\
+						 InternalFront\
+						 InterpFromGridToMesh\
+						 InterpFromMeshToMesh2d\
+						 InterpFromMeshToMesh3d\
+						 InterpFromMeshToGrid\
+						 InterpFromMesh2d\
+						 Ll2xy\
+						 NodeConnectivity\
+						 MeshPartition\
+						 MeshProfileIntersection\
+						 PointCloudFindNeighbors\
+						 PropagateFlagsFromConnectivity\
+						 StringToEnum\
+						 TriaSearch\
+						 TriMesh\
+						 TriMeshProcessRifts\
+						 Scotch\
+						 Xy2ll\
+						 Chaco
+
+if KRIGING
+bin_PROGRAMS +=  Kriging
+endif
+if KML
+bin_PROGRAMS +=  KMLFileRead\
+				   KMLMeshWrite\
+				   KMLOverlay\
+				   Exp2Kml\
+				   Kml2Exp\
+				   Shp2Exp\
+				   Shp2Kml
+endif
+endif
+#}}}
+#Flags and libraries {{{
+#if SHAREDLIBS
+#deps = ../../c/libISSMCore ../../c/libISSMModules.la
+#else
+#deps = ../../c/libISSMCore.a ../../c/libISSMModules.a
+#endif
+#deps +=  $(MATHLIB)
+deps =  $(MATHLIB)
+
+#Triangle library
+AM_CXXFLAGS =  /DTRILIBRARY /DANSI_DECLARATORS /DNO_TIMER
+
+#Matlab part
+AM_LDFLAGS = 
+if VERSION
+AM_LDFLAGS +=
+else
+AM_LDFLAGS += -avoid-version
+endif
+deps += ./libISSMMatlab.a
+AM_LDFLAGS += --no-warnings 
+
+AM_CXXFLAGS +=  /D_HAVE_MATLAB_MODULES_  /D_GNU_SOURCE 
+
+deps += ../../c/libISSMModules.a ../../c/libISSMCore.a  
+if ADOLC
+deps += $(ADOLCLIB)
+endif
+
+#MEXLIB needs to be the last (undefined references on larsen)
+deps += ${MEXLIB}
+
+#Optimization flags:
+AM_CXXFLAGS += $(CXXOPTFLAGS) 
+#}}}
+#Bin sources {{{
+AverageFilter_SOURCES = ../AverageFilter/AverageFilter.cpp\
+									../AverageFilter/AverageFilter.h
+AverageFilter_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+BamgMesher_SOURCES = ../BamgMesher/BamgMesher.cpp\
+								../BamgMesher/BamgMesher.h
+BamgMesher_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+BamgConvertMesh_SOURCES = ../BamgConvertMesh/BamgConvertMesh.cpp\
+									  ../BamgConvertMesh/BamgConvertMesh.h
+BamgConvertMesh_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+BamgTriangulate_SOURCES = ../BamgTriangulate/BamgTriangulate.cpp\
+									  ../BamgTriangulate/BamgTriangulate.h
+BamgTriangulate_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+Chaco_SOURCES = ../Chaco/Chaco.cpp\
+						 ../Chaco/Chaco.h
+Chaco_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(CHACOLIB) $(GSLLIB)
+
+ContourToMesh_SOURCES = ../ContourToMesh/ContourToMesh.cpp\
+									../ContourToMesh/ContourToMesh.h
+ContourToMesh_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB)
+
+ContourToNodes_SOURCES = ../ContourToNodes/ContourToNodes.cpp\
+									 ../ContourToNodes/ContourToNodes.h
+ContourToNodes_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+ElementConnectivity_SOURCES = ../ElementConnectivity/ElementConnectivity.cpp\
+											../ElementConnectivity/ElementConnectivity.h
+ElementConnectivity_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+EnumToString_SOURCES = ../EnumToString/EnumToString.cpp\
+								  ../EnumToString/EnumToString.h
+EnumToString_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+StringToEnum_SOURCES = ../StringToEnum/StringToEnum.cpp\
+								  ../StringToEnum/StringToEnum.h
+StringToEnum_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+HoleFiller_SOURCES = ../HoleFiller/HoleFiller.cpp\
+								../HoleFiller/HoleFiller.h
+HoleFiller_LDADD = ${deps} $(MPILIB) $(PETSCLIB)  $(GSLLIB)
+
+InternalFront_SOURCES = ../InternalFront/InternalFront.cpp\
+									../InternalFront/InternalFront.h
+InternalFront_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+InterpFromGridToMesh_SOURCES = ../InterpFromGridToMesh/InterpFromGridToMesh.cpp\
+											 ../InterpFromGridToMesh/InterpFromGridToMesh.h
+InterpFromGridToMesh_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB)
+
+InterpFromMeshToMesh2d_SOURCES = ../InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp\
+												../InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.h
+InterpFromMeshToMesh2d_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB)
+
+InterpFromMeshToMesh3d_SOURCES = ../InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.cpp\
+												../InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.h
+InterpFromMeshToMesh3d_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+InterpFromMeshToGrid_SOURCES = ../InterpFromMeshToGrid/InterpFromMeshToGrid.cpp\
+											 ../InterpFromMeshToGrid/InterpFromMeshToGrid.h
+InterpFromMeshToGrid_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+InterpFromMesh2d_SOURCES = ../InterpFromMesh2d/InterpFromMesh2d.cpp\
+										../InterpFromMesh2d/InterpFromMesh2d.h
+InterpFromMesh2d_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB)
+
+KMLFileRead_SOURCES = ../KMLFileRead/KMLFileRead.cpp\
+								 ../KMLFileRead/KMLFileRead.h
+KMLFileRead_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+KMLMeshWrite_SOURCES = ../KMLMeshWrite/KMLMeshWrite.cpp\
+								  ../KMLMeshWrite/KMLMeshWrite.h
+KMLMeshWrite_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+KMLOverlay_SOURCES = ../KMLOverlay/KMLOverlay.cpp\
+								../KMLOverlay/KMLOverlay.h
+KMLOverlay_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+Xy2ll_SOURCES = ../Xy2ll/Xy2ll.cpp\
+						 ../Xy2ll/Xy2ll.h
+Xy2ll_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+Ll2xy_SOURCES = ../Ll2xy/Ll2xy.cpp\
+						 ../Ll2xy/Ll2xy.h
+Ll2xy_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+EdgeDetection_SOURCES = ../EdgeDetection/EdgeDetection.cpp\
+							../EdgeDetection/EdgeDetection.h
+EdgeDetection_LDADD= ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+ExpSimplify_SOURCES = ../ExpSimplify/ExpSimplify.cpp\
+							../ExpSimplify/ExpSimplify.h
+ExpSimplify_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+Exp2Kml_SOURCES = ../Exp2Kml/Exp2Kml.cpp\
+							../Exp2Kml/Exp2Kml.h
+Exp2Kml_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+Kml2Exp_SOURCES = ../Kml2Exp/Kml2Exp.cpp\
+							../Kml2Exp/Kml2Exp.h
+Kml2Exp_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+Kriging_SOURCES = ../Kriging/Kriging.cpp\
+							../Kriging/Kriging.h
+Kriging_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(MULTITHREADINGLIB) $(GSLLIB)
+
+MeshPartition_SOURCES = ../MeshPartition/MeshPartition.cpp\
+									../MeshPartition/MeshPartition.h
+MeshPartition_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(METISLIB) $(GSLLIB)
+
+MeshProfileIntersection_SOURCES = ../MeshProfileIntersection/MeshProfileIntersection.cpp\
+												 ../MeshProfileIntersection/MeshProfileIntersection.h
+MeshProfileIntersection_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+NodeConnectivity_SOURCES = ../NodeConnectivity/NodeConnectivity.cpp\
+										../NodeConnectivity/NodeConnectivity.h
+NodeConnectivity_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+PointCloudFindNeighbors_SOURCES = ../PointCloudFindNeighbors/PointCloudFindNeighbors.cpp\
+												 ../PointCloudFindNeighbors/PointCloudFindNeighbors.h
+PointCloudFindNeighbors_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(MULTITHREADINGLIB) $(GSLLIB)
+
+PropagateFlagsFromConnectivity_SOURCES = ../PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.cpp\
+														  ../PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.h
+PropagateFlagsFromConnectivity_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+Scotch_SOURCES = ../Scotch/Scotch.cpp\
+						  ../Scotch/Scotch.h
+Scotch_LDADD = ${deps} $(SCOTCHLIB) $(MPILIB)
+
+Shp2Exp_SOURCES = ../Shp2Exp/Shp2Exp.cpp\
+							../Shp2Exp/Shp2Exp.h
+Shp2Exp_LDADD = ${deps} $(SHAPELIBLIB) $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+Shp2Kml_SOURCES = ../Shp2Kml/Shp2Kml.cpp\
+							../Shp2Kml/Shp2Kml.h
+Shp2Kml_LDADD = ${deps} $(SHAPELIBLIB) $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+TriaSearch_SOURCES = ../TriaSearch/TriaSearch.cpp\
+								../TriaSearch/TriaSearch.h
+TriaSearch_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+
+TriMesh_SOURCES = ../TriMesh/TriMesh.cpp\
+							../TriMesh/TriMesh.h
+TriMesh_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(TRIANGLELIB) $(GSLLIB)
+
+TriMeshProcessRifts_SOURCES = ../TriMeshProcessRifts/TriMeshProcessRifts.cpp\
+											../TriMeshProcessRifts/TriMeshProcessRifts.h
+TriMeshProcessRifts_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB)
+#}}}
Index: /issm/branches/trunk-dlcheng-ASE/patches/configure.ac
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/patches/configure.ac	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/patches/configure.ac	(revision 27955)
@@ -0,0 +1,44 @@
+# Process this file with autoconf to produce a configure script.
+
+#AUTOCONF
+AC_INIT([ISSM],[4.2.5],[issm@jpl.nasa.gov],[issm],[http://issm.jpl.nasa.gov]) #Initializing configure
+AC_CONFIG_AUX_DIR([./aux-config])         #Put config files in aux-config
+AC_CONFIG_MACRO_DIR([m4])                 #m4 macros are located in m4
+m4_include([m4/issm_options.m4])
+AC_CANONICAL_TARGET                       #Determine the system type
+
+#Compilers
+AC_PROG_CC([icc cccl cl icl gcc])
+AC_PROG_CPP
+AC_PROG_CXX([icpc cccl cl icl g++])
+AC_PROG_F77([ifort g77 gfortran])
+
+#Libraries and linking
+AC_F77_LIBRARY_LDFLAGS
+AC_PATH_XTRA      #figure out X library and include paths
+AC_PROG_RANLIB
+
+#AUTOMAKE
+#Initialize automake and declare foreign so that we don't need a ChangeLog, INSTALL, etc
+AM_INIT_AUTOMAKE([foreign])
+AC_CONFIG_HEADERS([./config.h])   #Config file must be config.h
+AM_SILENT_RULES([yes])           #Do not show compilation command by default
+AM_PROG_CC_C_O
+AM_PROG_AR
+
+#Libtool
+#LT_INIT
+
+#Run issm_options.m4
+ISSM_OPTIONS
+
+#List all Makefiles
+AC_CONFIG_FILES([Makefile
+			src/Makefile
+			src/c/Makefile 
+			src/wrappers/Makefile
+			src/wrappers/matlab/Makefile
+			src/m/Makefile])
+
+#End of configure.ac
+AC_OUTPUT
Index: /issm/branches/trunk-dlcheng-ASE/patches/issm_options.m4
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/patches/issm_options.m4	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/patches/issm_options.m4	(revision 27955)
@@ -0,0 +1,1621 @@
+dnl ISSM Options
+
+AC_DEFUN([ISSM_OPTIONS],[
+
+	dnl ISSM's internal options
+	dnl Debugging {{{
+	AC_ARG_ENABLE([debugging],                                        dnl feature
+		AS_HELP_STRING([--enable-debugging],[turn debug support on]),  dnl help string
+		[enable_debugging=$enableval],                                 dnl action if given
+		[enable_debugging=no])                                         dnl action if not given
+	if test "x$enable_debugging" = xyes; then
+		AC_DEFINE([_ISSM_DEBUG_],[1],[Macro to enable debugging in ISSM])
+	fi
+
+	dnl }}}
+    dnl Shared build {{{
+    AC_ARG_ENABLE([sharedlibs],                                                dnl feature
+        AS_HELP_STRING([--enable-sharedlibs], [produce libISSM.so.0]),         dnl help string
+        [enable_sharedlibs=$enableval],                                        dnl action if given
+        [enable_sharedlibs=no])                                                dnl action if not given
+    AM_CONDITIONAL([SHAREDLIBS], [test x$enable_sharedlibs = xyes])
+    dnl }}}
+    dnl Version{{{
+    AC_ARG_ENABLE([version],                                                dnl feature
+        AS_HELP_STRING([--enable-version], [produce libISSM.so.0]),         dnl help string
+        [enable_version=$enableval],                                        dnl action if given
+        [enable_version=no])                                                dnl action if not given
+    AM_CONDITIONAL([VERSION], [test x$enable_VERSION = xyes])
+    dnl }}}
+	dnl Wrappers build {{{
+	AC_ARG_WITH([wrappers],
+		AS_HELP_STRING([--with-wrappers = value],[wrappers compilation. ]),
+		[WRAPPERS_VALUE=$withval],[WRAPPERS_VALUE="yes"])
+	AC_MSG_CHECKING(for wrappers compilation)
+	AM_CONDITIONAL([WRAPPERS], [test x$WRAPPERS_VALUE = xyes])
+	AC_MSG_RESULT($WRAPPERS_VALUE) 
+	dnl }}}
+	dnl Extensions{{{
+	ISSMEXT=".exe"
+	AC_SUBST([ISSMEXT])
+	dnl }}}
+
+	dnl ISSM's externalpackages
+	dnl vendor{{{
+	AC_ARG_WITH([vendor],
+	  AS_HELP_STRING([--with-vendor = VENDOR], [vendor name, ex: intel]),
+	  [VENDOR=$withval],[VENDOR=""]) 
+	AC_MSG_CHECKING(for vendor compilers)
+	if test -n "$VENDOR"; then
+
+		if  test $VENDOR = intel-win32; then
+			export CC=icl
+			export CXX=icl
+			export CFLAGS="-DWIN32 -D_INTEL_WIN_"
+			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_"
+		elif  test $VENDOR = intel-win7-32; then
+			export CC=cccl
+			export CXX=cccl
+			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export CFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export AR="ar-lib lib"
+			export RANLIB=true
+			OSLIBS="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"
+		elif  test $VENDOR = intel-win7-64; then
+			export CC=cccl
+			export CXX=cccl
+			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export CFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export AR="ar-lib lib"
+			export RANLIB=true
+			OSLIBS="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"
+		elif test $VENDOR = intel-linux; then
+			export CC=icc
+			export CXX=icpc
+			export CFLAGS=" -D_INTEL_LINUX_"
+			export CXXFLAGS=" -D_INTEL_LINUX_"
+		elif test $VENDOR = intel-discover; then
+			export CC=icc
+			export CXX=icpc
+			export CXXFLAGS=" -O3 -D_INTEL_LINUX_ -DMPICH_IGNORE_CXX_SEEK"
+			export CFLAGS=" -O3 -D_INTEL_LINUX_ -DMPICH_IGNORE_CXX_SEEK"
+		elif test $VENDOR = intel-pleiades; then
+			export CC=icc
+			export CXX=icpc
+			export CXXFLAGS=" -O3 -D_INTEL_LINUX_ "
+			export CFLAGS=" -O3 -D_INTEL_LINUX_ "
+        else
+		AC_MSG_ERROR([unknow compiler vendor!])
+		fi
+	fi
+	AC_SUBST([OSLIBS]) 
+	AC_MSG_RESULT(done)
+	dnl }}}
+	dnl matlab{{{
+
+	dnl 1. See if matlab has been provided
+	AC_ARG_WITH([matlab-dir],
+		AS_HELP_STRING([--with-matlab-dir=DIR], [matlab root directory. necessary for serial build.]),
+		[MATLAB_ROOT=$withval],[MATLAB_ROOT=""]) 
+
+	AC_MSG_CHECKING([whether matlab is enabled])
+	if test -d "$MATLAB_ROOT"; then
+		HAVE_MATLAB=yes
+	else
+		HAVE_MATLAB=no
+	fi
+	if test x$HAVE_MATLAB = xyes; then
+		AC_DEFINE([_HAVE_MATLAB_],[1],[with Matlab in ISSM src])
+	fi
+	AC_MSG_RESULT($HAVE_MATLAB)
+	AM_CONDITIONAL([MATLAB], [test x$HAVE_MATLAB = xyes])
+
+	dnl 2. Get Matlab libraries
+	if test x$HAVE_MATLAB = xyes; then
+
+		AC_MSG_CHECKING(for matlab headers and libraries in $MATLAB_ROOT)
+  		MATLABINCL="-I$MATLAB_ROOT/extern/include"
+
+		dnl 4. get MEXLIB MEXLINK and MEXEXT (experimental)
+      dnl OS-dependent variables and checks
+  		case "${host_os}" in
+  			*linux*)
+  				if test "${host_cpu}" = "x86_64";
+  				then
+  					MEXLIB=-L"$MATLAB_ROOT/bin/glnxa64/ -lmex"
+  					MEXLINK="-pthread -shared -W2,--version-script,${MATLAB_ROOT}/extern/lib/glnxa64/mexFunction.map";
+  				else
+  					MEXLIB=-L"$MATLAB_ROOT/bin/glnx86/ -lmex"
+  					MEXLINK="-pthread -shared -W2,--version-script,${MATLAB_ROOT}/extern/lib/glnx86/mexFunction.map";
+  				fi
+  				MEXEXT=`$MATLAB_ROOT/bin/mexext`
+  				MEXEXT=".$MEXEXT"
+  			;;
+  			*darwin*)
+  				dnl mex -v gives all the flags for compilation of mex files
+  				dnl if matlab version is 7.9 or more, we must use mexmaci64 (64 bits)
+  				MEXLINK="-O -Wl,-flat_namespace -undefined suppress -arch i386 -bundle -Wl,-exported_symbols_list,$MATLAB_ROOT/extern/lib/maci/mexFunction.map"
+  				MEXLIB=" -L$MATLAB_ROOT/bin/maci/ -lmx -lmex -lmat -lstdc++ -largeArrayDims"
+  				if test $MATLAB_MAJOR -ge 7; then 
+  					 if test $MATLAB_MINOR -ge 9; then 
+  						  MEXLINK="-O -Wl,-flat_namespace -undefined suppress -bundle -Wl,-exported_symbols_list,$MATLAB_ROOT/extern/lib/maci64/mexFunction.map"
+  							 MEXLIB=" -L$MATLAB_ROOT/bin/maci64/ -lmx -lmex -lmat -lstdc++"
+  					 fi
+  				fi
+  				MEXEXT=`$MATLAB_ROOT/bin/mexext`
+  				MEXEXT=".$MEXEXT"
+  			;;
+  			*cygwin*) 
+  				if  test $VENDOR = intel-win7-32; then
+					MATLABLIB="$MATLAB_ROOT/extern/lib/win32/microsoft"
+  					MEXLIB="/link /DLL /export:mexFunction -L$MATLABLIB libmx.lib libmex.lib libmat.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib" 
+  				elif  test $VENDOR = intel-win7-64; then
+					MATLABLIB="$MATLAB_ROOT/extern/lib/win64/microsoft"
+  					MEXLIB="/link /DLL /export:mexFunction -L$MATLABLIB libmx.lib libmex.lib libmat.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib " 
+  				fi
+  				MEXEXT=".$MEXEXT"
+  			;;
+      esac
+	   AC_MSG_RESULT(done)
+
+		AC_SUBST([MATLABINCL])
+		AC_SUBST([MEX])
+		MATLABWRAPPEREXT=$MEXEXT
+		AC_SUBST([MATLABWRAPPEREXT])
+	    AC_SUBST([MEXLIB]) 
+		AC_SUBST([MEXLINK])
+	fi
+	dnl }}}
+	dnl triangle {{{
+	AC_ARG_WITH([triangle-dir],
+			  AS_HELP_STRING([--with-triangle-dir=DIR], [triangle root directory. necessary for serial build]),
+			 [TRIANGLE_ROOT=$withval],[TRIANGLE_ROOT=""]) 
+	AC_MSG_CHECKING(for triangle headers and libraries)
+
+	if test -d "$TRIANGLE_ROOT"; then
+
+		dnl defaults
+		HAVE_TRIANGLE=yes
+		TRIANGLEINCL=-I$TRIANGLE_ROOT/
+
+		case "${host_os}" in
+				*cygwin*)
+				TRIANGLELIB=$TRIANGLE_ROOT/triangle.lib
+				;;
+				*linux*)
+				TRIANGLELIB=$TRIANGLE_ROOT/triangle.a
+				;;
+				*darwin*)
+				TRIANGLELIB=$TRIANGLE_ROOT/triangle.a
+				;;
+			esac
+
+		AC_DEFINE([_HAVE_TRIANGLE_],[1],[with Triangle in ISSM src])
+		AC_SUBST([TRIANGLEINCL])
+		AC_SUBST([TRIANGLELIB])
+
+	else
+		HAVE_TRIANGLE=no
+	fi
+	AC_MSG_RESULT($HAVE_TRIANGLE)
+	dnl }}}
+	dnl dakota{{{
+	AC_ARG_WITH([dakota-dir],
+	  AS_HELP_STRING([--with-dakota-dir=DIR], [dakota root directory. necessary for serial build]),
+	  [DAKOTA_ROOT=$withval],[DAKOTA_ROOT=""]) 
+	AC_MSG_CHECKING(for dakota)
+	
+	if test -d "$DAKOTA_ROOT"; then
+
+		dnl defaults
+		HAVE_DAKOTA=yes
+		AC_MSG_RESULT($HAVE_DAKOTA)
+		DAKOTAINCL=-I$DAKOTA_ROOT/include
+		AC_MSG_CHECKING(for dakota version)
+		DAKOTA_VERSION=`cat $DAKOTA_ROOT/include/dakota_config.h | grep "#define PACKAGE_VERSION" | sed 's/#define PACKAGE_VERSION//' | sed 's/ //g' | sed -e 's/\"//g' `
+		AC_MSG_RESULT($DAKOTA_VERSION)
+		AC_DEFINE_UNQUOTED([DAKOTA_VERSION],"$DAKOTA_VERSION",[Dakota version number])
+		case "${host_os}" in
+			*cygwin*)
+				if      test x$DAKOTA_VERSION = x4.2; then
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver"
+				else if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
+				else
+					AC_MSG_ERROR([Dakota version not found or version ($DAKOTA_VERSION) not supported!]);
+				fi
+				fi
+			;;
+			*linux*)
+				if      test x$DAKOTA_VERSION = x4.2; then
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver"
+				else if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem -lboost_system -ldl"
+				else
+					AC_MSG_ERROR([Dakota version not found or version ($DAKOTA_VERSION) not supported!]);
+				fi
+				fi
+			;;
+			*darwin*)
+				if      test x$DAKOTA_VERSION = x4.2; then
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver" 
+					dnl DAKOTALIB+= "-lgslcblas -L/usr/lib -lblas -llapack"
+				else if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
+					dnl DAKOTALIB+= "-lgslcblas -L/usr/lib -lblas -llapack"
+				else
+					AC_MSG_ERROR([Dakota version not found or version ($DAKOTA_VERSION) not supported!]);
+				fi
+				fi
+			;;
+		esac
+		AC_DEFINE([_HAVE_DAKOTA_],[1],[with Dakota in ISSM src])
+		AC_SUBST([DAKOTAINCL])
+		AC_SUBST([DAKOTALIB])
+
+	else
+		HAVE_DAKOTA=no
+		AC_MSG_RESULT($HAVE_DAKOTA)
+	fi
+	AM_CONDITIONAL([DAKOTA], [test x$HAVE_DAKOTA = xyes])
+	dnl }}}
+	dnl boost{{{
+	AC_ARG_WITH([boost-dir],
+	  AS_HELP_STRING([--with-boost-dir=DIR], [boost root directory.]),
+	  [BOOST_ROOT=$withval],[BOOST_ROOT=""]) 
+	AC_MSG_CHECKING(for boost)
+	
+	if test -d "$BOOST_ROOT"; then
+		dnl defaults
+		HAVE_BOOST=yes
+		BOOSTINCL=-I$BOOST_ROOT/include
+		BOOSTLIB="-L$BOOST_ROOT/lib -lboost_python"
+
+		AC_DEFINE([_HAVE_BOOST_],[1],[with Boost in ISSM src])
+		AC_SUBST([BOOSTINCL])
+		AC_SUBST([BOOSTLIB])
+	else
+		HAVE_BOOST=no
+	fi
+	AM_CONDITIONAL([BOOST], [test x$HAVE_BOOST = xyes])
+	AC_MSG_RESULT($HAVE_BOOST)
+	dnl }}}
+	dnl python{{{
+	AC_ARG_WITH([python-dir],
+	  AS_HELP_STRING([--with-python-dir=DIR], [python root directory.]),
+	  [PYTHON_ROOT=$withval],[PYTHON_ROOT=""]) 
+
+	AC_MSG_CHECKING(for python)
+	if test -d "$PYTHON_ROOT"; then
+		HAVE_PYTHON="yes"
+		AC_DEFINE([_HAVE_PYTHON_],[1],[with Python in ISSM src])
+	else
+		HAVE_PYTHON=no
+	fi
+	AC_MSG_RESULT($HAVE_PYTHON)
+
+	dnl get python version
+	if test x$HAVE_PYTHON = xyes; then
+		AC_MSG_CHECKING(for python version)
+		dnl Query Python for its version number.  Getting [:3] seems to be
+		dnl the best way to do this; it's what "site.py" does in the standard
+		dnl library.
+		PYTHON_VERSION=$($PYTHON_ROOT/bin/python -c "import sys; print sys.version[[:3]]")
+		AC_MSG_RESULT($PYTHON_VERSION)
+
+		dnl recover major: 
+		PYTHON_MAJOR=${PYTHON_VERSION%.*}
+		if test x$PYTHON_MAJOR = x3; then
+			dnl are we running python 3?
+			HAVE_PYTHON3="yes"
+		else
+			HAVE_PYTHON3="no"
+		fi
+		AC_DEFINE_UNQUOTED([_PYTHON_MAJOR_],$PYTHON_MAJOR,[python version major])
+
+		PYTHONINCL=-I$PYTHON_ROOT/include
+		PYTHONLIB="-L$PYTHON_ROOT/lib -lpython$PYTHON_VERSION"
+		PYTHONEXT=.so
+
+		case "${host_os}" in
+			*cygwin*)
+			PYTHONLINK="-shared"
+			;;
+			*linux*)
+			PYTHONLINK="-shared"
+			;;
+			*darwin*)
+			PYTHONLINK="-dynamiclib"
+			;;
+		esac
+
+		AC_SUBST([PYTHONINCL])
+		AC_SUBST([PYTHONLIB])
+		PYTHONWRAPPEREXT=$PYTHONEXT
+		AC_SUBST([PYTHONWRAPPEREXT])
+		AC_SUBST([PYTHONLINK])
+	fi
+	AM_CONDITIONAL([PYTHON], [test x$HAVE_PYTHON = xyes])
+	AM_CONDITIONAL([PYTHON3], [test x$HAVE_PYTHON3 = xyes])
+	dnl }}}
+	dnl python-numpy{{{
+	AC_ARG_WITH([python-numpy-dir],
+	  AS_HELP_STRING([--with-python-numpy-dir=DIR], [python-numpy root directory.]),
+	  [PYTHON_NUMPY_ROOT=$withval],[PYTHON_NUMPY_ROOT=""]) 
+	AC_MSG_CHECKING(for python-numpy)
+	
+	if test -d "$PYTHON_NUMPY_ROOT"; then
+		dnl defaults
+		HAVE_PYTHON_NUMPY=yes
+		PYTHON_NUMPYINCL="-I$PYTHON_NUMPY_ROOT -I$PYTHON_NUMPY_ROOT/core/include/numpy"
+
+		AC_DEFINE([_HAVE_PYTHON_NUMPY_],[1],[with Python-Numpy in ISSM src])
+		AC_SUBST([PYTHON_NUMPYINCL])
+	else
+		HAVE_PYTHON_NUMPY=no
+	fi
+	AC_MSG_RESULT($HAVE_PYTHON_NUMPY)
+	dnl }}}
+	dnl chaco{{{
+	AC_ARG_WITH([chaco-dir],
+	  AS_HELP_STRING([--with-chaco-dir=DIR], [chaco root directory.]),
+	  [CHACO_ROOT=$withval],[CHACO_ROOT=""]) 
+	AC_MSG_CHECKING(for chaco)
+	
+	if test -d "$CHACO_ROOT"; then
+
+		dnl defaults
+		HAVE_CHACO=yes
+		CHACOINCL=-I$CHACO_ROOT/include
+		CHACOLIB="-L$CHACO_ROOT/lib -lchacominusblas"
+
+		AC_DEFINE([_HAVE_CHACO_],[1],[with Chaco in ISSM src])
+		AC_SUBST([CHACOINCL])
+		AC_SUBST([CHACOLIB])
+
+	else
+		HAVE_CHACO=no
+	fi
+	AC_MSG_RESULT($HAVE_CHACO)
+	dnl }}}
+	dnl scotch{{{
+	AC_ARG_WITH([scotch-dir],
+	  AS_HELP_STRING([--with-scotch-dir=DIR], [scotch root directory.]),
+	  [SCOTCH_ROOT=$withval],[SCOTCH_ROOT=""]) 
+	AC_MSG_CHECKING(for scotch)
+	
+	if test -d "$SCOTCH_ROOT"; then
+
+		dnl defaults
+		HAVE_SCOTCH=yes
+		SCOTCHINCL="-DNOFILEIO -I$SCOTCH_ROOT/include -DSCOTCH_VERSION=\\\"UNKNOWN\\\""
+		SCOTCHLIB="-L$SCOTCH_ROOT/lib -lnfioscotch -lnfioscotcherr -lnfioscotcherrexit -lscotchmetis"
+
+		AC_DEFINE([_HAVE_SCOTCH_],[1],[with Scotch in ISSM src])
+		AC_SUBST([SCOTCHINCL])
+		AC_SUBST([SCOTCHLIB])
+
+	else
+		HAVE_SCOTCH=no
+	fi
+	AC_MSG_RESULT($HAVE_SCOTCH)
+	dnl }}}
+	dnl adolc{{{
+	AC_ARG_WITH([adolc-dir],
+		AS_HELP_STRING([--with-adolc-dir=DIR], [adolc root directory.]),
+		[ADOLC_ROOT=$withval],[ADOLC_ROOT="no"]) 
+	AC_MSG_CHECKING(for adolc)
+
+	if test "x$ADOLC_ROOT" = "xno"; then
+		HAVE_ADOLC=no
+	else
+		if test -d "$ADOLC_ROOT"; then
+
+			dnl defaults
+			HAVE_ADOLC=yes
+			ADOLCINCL="-I$ADOLC_ROOT/include"
+			ADOLCLIB="-L$ADOLC_ROOT/lib64 -ladolc"
+
+			AC_DEFINE([_HAVE_ADOLC_],[1],[with adolc in ISSM src])
+			AC_SUBST([ADOLCINCL])
+			AC_SUBST([ADOLCLIB])
+
+		else
+			echo  "Specified directory does not exist!"
+			exit 1
+		fi
+	fi
+	AM_CONDITIONAL([ADOLC], [test x$HAVE_ADOLC = xyes])
+	AC_MSG_RESULT($HAVE_ADOLC)
+	dnl }}}
+	dnl adolc-version{{{
+	AC_ARG_WITH([adolc-version],
+		AS_HELP_STRING([--with-adolc-version=number], [adolc version.]),
+		[ADOLC_VERSION=$withval],[ADOLC_VERSION=2]) 
+	AC_MSG_CHECKING(for adolc-version) 
+
+	AC_DEFINE_UNQUOTED([_ADOLC_VERSION_],$ADOLC_VERSION,[ADOLC version])
+	AC_MSG_RESULT($ADOLC_VERSION)
+	dnl }}}
+	dnl adic2{{{
+	AC_ARG_WITH([adic2-dir],
+	  AS_HELP_STRING([--with-adic2-dir=DIR], [adic2 root directory.]),
+	  [ADIC2_ROOT=$withval],[ADIC2_ROOT="no"]) 
+	AC_MSG_CHECKING(for adic2)
+
+	if test "x$ADIC2_ROOT" = "xno"; then
+		HAVE_ADIC2=no
+	else
+		if test -d "$ADIC2_ROOT"; then
+
+			dnl defaults
+			HAVE_ADIC2=yes
+			ADIC2INCL="-DADIC2_DENSE -I$ADIC2_ROOT/include -I$ADIC2_ROOT/share/runtime_dense/"
+			ADIC2LIB=""
+
+			AC_DEFINE([_HAVE_ADIC2_],[1],[with adic2 in ISSM src])
+			AC_SUBST([ADIC2INCL])
+			AC_SUBST([ADIC2LIB])
+
+		else
+			echo  "Specified directory does not exist!"
+			exit 1
+		fi
+	fi
+	AM_CONDITIONAL([ADIC2], [test x$HAVE_ADIC2 = xyes])
+	AC_MSG_RESULT($HAVE_ADIC2)
+	dnl }}}
+	dnl gsl{{{
+	AC_ARG_WITH([gsl-dir],
+	  AS_HELP_STRING([--with-gsl-dir=DIR], [gsl root directory.]),
+	  [GSL_ROOT=$withval],[GSL_ROOT=""]) 
+	AC_MSG_CHECKING(for gsl)
+	
+	if test -d "$GSL_ROOT"; then
+
+		dnl defaults
+		HAVE_GSL=yes
+		GSLINCL="-I$GSL_ROOT/include"
+		GSLLIB="-dy -L$GSL_ROOT/lib -lgsl -lgslcblas -lm"
+
+		AC_DEFINE([_HAVE_GSL_],[1],[with gsl in ISSM src])
+		AC_SUBST([GSLINCL])
+		AC_SUBST([GSLLIB])
+
+	else
+		HAVE_GSL=no
+	fi
+	AM_CONDITIONAL([GSL], [test x$HAVE_GSL = xyes])
+	AC_MSG_RESULT($HAVE_GSL)
+	dnl }}}
+	dnl rose{{{
+	AC_ARG_WITH([rose-dir],
+	  AS_HELP_STRING([--with-rose-dir=DIR], [rose root directory.]),
+	  [ROSE_ROOT=$withval],[ROSE_ROOT=""]) 
+	AC_MSG_CHECKING(for rose)
+	
+	if test -d "$ROSE_ROOT"; then
+
+		dnl defaults
+		HAVE_ROSE=yes
+		ROSEINCL="-I$ROSE_ROOT/include"
+		ROSELIB=""
+
+		AC_DEFINE([_HAVE_ROSE_],[1],[with rose in ISSM src])
+		AC_SUBST([ROSEINCL])
+		AC_SUBST([ROSELIB])
+
+	else
+		HAVE_ROSE=no
+	fi
+	AM_CONDITIONAL([ROSE], [test x$HAVE_ROSE = xyes])
+	AC_MSG_RESULT($HAVE_ROSE)
+	dnl }}}
+	dnl mpi{{{
+	AC_MSG_CHECKING(for mpi)
+	AC_ARG_WITH([mpi-lib],
+		AS_HELP_STRING([--with-mpi-lib = options],[mpi options, for ex: "-L$MPIROOT -lmpich]),
+		[MPILIB=$withval],[MPILIB=""])
+	
+	AC_ARG_WITH([mpi-include],
+	  AS_HELP_STRING([--with-mpi-include=DIR],[mpi include directory, necessary for parallel build]),
+	  [MPI_INCLUDE=$withval],[MPI_INCLUDE=""])
+	
+	if test -z "$MPILIB" ; then
+		HAVE_MPI=no
+	else
+		if test -z "$MPI_INCLUDE" ; then
+			HAVE_MPI=no
+		else
+			HAVE_MPI=yes
+			MPIINCL=-I"$MPI_INCLUDE"
+			AC_DEFINE([_HAVE_MPI_],[1],[with Mpi in ISSM src])
+			AC_DEFINE([HAVE_MPI],[1],[Mpi Flag for Dakota (DO NOT REMOVE)])
+			AC_SUBST([MPIINCL])
+			AC_SUBST([MPILIB])
+		fi
+	fi
+	AM_CONDITIONAL([MPI], [test x$HAVE_MPI = xyes])
+	AC_MSG_RESULT($HAVE_MPI)
+	dnl }}}
+	dnl petsc{{{
+	AC_ARG_WITH([petsc-dir],
+	  AS_HELP_STRING([--with-petsc-dir=DIR],[PETSc root directory, necessary for parallel build]),
+	  [PETSC_ROOT=$withval],[PETSC_ROOT=""])
+		
+	if test -d "$PETSC_ROOT"; then
+		AC_MSG_CHECKING(for petsc version)
+		PETSC_MAJOR=`cat $PETSC_ROOT/include/petscversion.h | grep "#define PETSC_VERSION_MAJOR" | sed 's/#define PETSC_VERSION_MAJOR//' | sed 's/ //g'`
+		PETSC_MINOR=`cat $PETSC_ROOT/include/petscversion.h | grep "#define PETSC_VERSION_MINOR" | sed 's/#define PETSC_VERSION_MINOR//' | sed 's/ //g'`
+		AC_DEFINE_UNQUOTED([_PETSC_MAJOR_],$PETSC_MAJOR,[PETSc version major])
+		AC_DEFINE_UNQUOTED([_PETSC_MINOR_],$PETSC_MINOR,[PETSc version minor])
+		AC_MSG_RESULT($PETSC_MAJOR.$PETSC_MINOR)
+
+		PETSC_VERSION_DATE_HG=`cat $PETSC_ROOT/include/petscversion.h | grep "#define PETSC_VERSION_DATE_HG" | sed 's/#define PETSC_VERSION_DATE_HG//' | sed 's/ //g' | sed -e 's/\"//g' `
+		PETSC_RELEASE=`cat $PETSC_ROOT/include/petscversion.h | grep "#define PETSC_VERSION_RELEASE" | sed 's/#define PETSC_VERSION_RELEASE//' | sed 's/ //g'`
+
+		AC_MSG_CHECKING(whether petsc is the development version)
+		dnl if test x$PETSC_VERSION_DATE_HG = xunknown; then
+		if test "$PETSC_RELEASE" = "0"; then
+		   AC_DEFINE([_HAVE_PETSCDEV_],[1],[with PETSc-dev])
+			AC_MSG_RESULT(yes)
+		else
+			AC_MSG_RESULT(no)
+		fi
+	fi
+	
+	AC_ARG_WITH([petsc-arch],
+	  AS_HELP_STRING([--with-petsc-arch=DIR],[PETSc arch , necessary for parallel build]),
+	  [PETSC_ARCH=$withval],[PETSC_ARCH=""])
+
+	AC_MSG_CHECKING(for petsc headers and libraries in $PETSC_ROOT for architecture $PETSC_ARCH)
+	
+	dnl To ge PETSc's libraries:
+	dnl cd externalpackages/petsc/src
+	dnl make getlinklibs
+	if test -d "$PETSC_ROOT"; then
+
+	 PETSCINCL=" -I$PETSC_ROOT/include"
+	 dnl Add other location (maybe not needed anymore)
+	 if test -d "$PETSC_ROOT/$PETSC_ARCH/include"; then
+	  PETSCINCL+=" $PETSC_ROOT/$PETSC_ARCH/include"
+	 fi
+	 if test -d "$PETSC_ROOT/include/$PETSC_ARCH"; then
+	  PETSCINCL+=" $PETSC_ROOT/include/$PETSC_ARCH"
+	 fi
+	
+	 case "${host_os}" in
+			*cygwin*)
+			if test $PETSC_MAJOR -lt 3 ; then
+				PETSCLIB="-L$PETSC_ROOT/lib libpetscksp.lib libpetscdm.lib libpetscmat.lib libpetscvec.lib libpetscsnes.lib libpetscts.lib libmpiuni.lib libpetsc.lib"
+			else
+				PETSCLIB="-L$PETSC_ROOT/lib libpetsc.lib"
+				if test $PETSC_MAJOR -gt 3 || test $PETSC_MINOR -ge 3; then PETSCLIB+=" libmetis.lib"; fi
+			fi
+			;;
+			*linux*)
+			if test $PETSC_MAJOR -lt 3 ; then
+				PETSCLIB="-L$PETSC_ROOT/lib -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetsc  -lpetscsnes -lpetscts"
+			else
+				PETSCLIB="-L$PETSC_ROOT/lib -lpetsc -ldl"
+				if test $PETSC_MAJOR -gt 3 || test $PETSC_MINOR -ge 3; then PETSCLIB+=" -lmetis"; fi
+			fi
+			;;
+			*darwin*)
+			if test $PETSC_MAJOR -lt 3 ; then
+				PETSCLIB="-L$PETSC_ROOT/lib -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetscsnes -lpetscts -lpetsc"
+			else
+				PETSCLIB="-L$PETSC_ROOT/lib -lpetsc"
+				if test $PETSC_MAJOR -gt 3 || test $PETSC_MINOR -ge 3; then PETSCLIB+=" -lmetis"; fi
+			fi
+			;;
+		esac
+		AC_DEFINE([_HAVE_PETSC_],[1],[with PETSc in ISSM src])
+		AC_SUBST([PETSCINCL])
+		AC_SUBST([PETSCLIB])
+		HAVE_PETSC=yes
+	else
+		HAVE_PETSC=no
+	fi
+	
+	AM_CONDITIONAL([PETSC], [test x$HAVE_PETSC = xyes])
+	AC_MSG_RESULT($HAVE_PETSC)
+	dnl }}}
+	dnl metis{{{
+	if test "$HAVE_PETSC" = "yes" && test "x$PETSC_MAJOR" = "x3" && test $PETSC_MINOR -ge 3; then
+
+		dnl in petsc >=3.3, metis is provided
+		HAVE_METIS="yes"
+		AC_DEFINE([_METIS_VERSION_],[5],[ Metis version number])
+		AC_DEFINE([_HAVE_METIS_],[1],[with Metis in ISSM src])
+	else
+		AC_ARG_WITH([metis-dir],
+		  AS_HELP_STRING([--with-metis-dir=DIR],[metis root directory. necessary for serial build]),
+		  [METIS_ROOT=$withval],[METIS_ROOT=""])
+
+		AC_MSG_CHECKING(for metis headers and libraries in $METIS_ROOT)
+
+		if test -d "$METIS_ROOT"; then
+
+			dnl first figure out version of metis: does the VERSION file exist?
+			if test -e "$METIS_ROOT/VERSION"; then
+				METIS_VERSION=4
+			else
+				METIS_VERSION=5
+			fi
+
+			dnl defaults
+			HAVE_METIS=yes
+
+			if test "$METIS_VERSION" = "4" ; then
+					
+				METISINCL=-I"$METIS_ROOT/Lib" 
+				case "${host_os}" in
+					*cygwin*)
+					METISLIB="-L$METIS_ROOT libmetis.lib"
+					;;
+					*linux*)
+					METISLIB=-L"$METIS_ROOT/ -lmetis"
+					;;
+					*darwin*)
+					METISLIB=-L"$METIS_ROOT/ -lmetis"
+					;;
+				esac
+
+					AC_DEFINE([_METIS_VERSION_],[4],[ Metis version number])
+			fi
+			if test "$METIS_VERSION" = "5" ; then
+		
+				case "${host_os}" in
+					*cygwin*)
+					METISLIB="-L$METIS_ROOT libmetis.lib"
+					;;
+					*linux*)
+					METISLIB=-L"$METIS_ROOT/lib -lmetis"
+					;;
+					*darwin*)
+					METISLIB=-L"$METIS_ROOT/lib -lmetis"
+					;;
+				esac
+
+				METISINCL=-I"$METIS_ROOT/include" 
+				AC_DEFINE([_METIS_VERSION_],[5],[ Metis version number])
+			fi
+
+			AC_DEFINE([_HAVE_METIS_],[1],[with Metis in ISSM src])
+			AC_SUBST([METISINCL])
+			AC_SUBST([METISLIB])
+		else
+			HAVE_METIS=no
+		fi
+		AC_MSG_RESULT($HAVE_METIS)
+	fi
+	AM_CONDITIONAL([METIS], [test x$HAVE_METIS = xyes])
+	dnl }}}
+	dnl tao{{{
+	AC_ARG_WITH([tao-dir],
+		AS_HELP_STRING([--with-tao-dir=DIR], [tao root directory.]),
+		[TAO_ROOT=$withval],[TAO_ROOT=""]) 
+	AC_MSG_CHECKING(for tao)
+
+	if test -d "$TAO_ROOT"; then
+
+	  HAVE_TAO=yes
+	  TAOINCL="-I$TAO_ROOT/ -I$TAO_ROOT/include -I$TAO_ROOT/bmake/ "
+	  TAOLIB="-L$TAO_ROOT/lib -ltao -lpetsc"
+
+	  AC_DEFINE([_HAVE_TAO_],[1],[with Tao in ISSM src])
+	  AC_SUBST([TAOINCL])
+	  AC_SUBST([TAOLIB])
+	else
+		HAVE_TAO=no
+	fi
+	AC_MSG_RESULT($HAVE_TAO)
+	dnl }}}
+	dnl slepc{{{
+	AC_ARG_WITH([slepc-dir],
+	  AS_HELP_STRING([--with-slepc-dir=DIR],[slepc root directory]),
+	  [SLEPC_ROOT=$withval],[SLEPC_ROOT=""])
+			  
+	AC_MSG_CHECKING(for slepc headers and libraries in $SLEPC_ROOT)
+	if test -d "$SLEPC_ROOT"; then
+		HAVE_SLEPC=yes
+		SLEPCINCL=-I"$SLEPC_ROOT/include"
+		SLEPCLIB=-L"$SLEPC_ROOT/lib/ -lslepc"
+
+		AC_DEFINE([_HAVE_SLEPC_],[1],[with Slepc in ISSM src])
+		AC_SUBST([SLEPCINCL])
+		AC_SUBST([SLEPCLIB])
+	else
+		HAVE_SLEPC=no
+	fi
+	AC_MSG_RESULT($HAVE_SLEPC)
+	dnl }}}
+	dnl shapelib{{{
+	AC_ARG_WITH([shapelib-dir],
+	  AS_HELP_STRING([--with-shapelib-dir=DIR], [shapelib root directory]),
+	  [SHAPELIB_ROOT=$withval],[SHAPELIB_ROOT=""])
+			  
+	AC_MSG_CHECKING(for shapelib headers and libraries in $SHAPELIB_ROOT)
+	if test -d "$SHAPELIB_ROOT"; then
+
+		dnl defaults
+		HAVE_SHAPELIB=yes
+		SHAPELIBINCL=-I"$SHAPELIB_ROOT/include"
+		SHAPELIBLIB=-L"$SHAPELIB_ROOT/lib/ -lshape"
+
+		AC_DEFINE([_HAVE_SHAPELIB_],[1],[with Shapelib in ISSM src])
+		AC_SUBST([SHAPELIBINCL])
+		AC_SUBST([SHAPELIBLIB])
+	else
+		HAVE_SHAPELIB=no
+	fi
+	AC_MSG_RESULT($HAVE_SHAPELIB)
+	dnl }}}
+	dnl scalapack{{{
+	AC_ARG_WITH([scalapack-dir],
+	  AS_HELP_STRING([--with-scalapack-dir=DIR],[scalapack root directory]),
+	  [SCALAPACK_ROOT=$withval],[SCALAPACK_ROOT=""])
+			  
+	AC_MSG_CHECKING(for scalapack headers and libraries in $SCALAPACK_ROOT)
+	if test -d "$SCALAPACK_ROOT"; then
+
+		dnl defaults
+		HAVE_SCALAPACK=yes
+		if test x$VENDOR = xintel-discover; then
+		 SCALAPACKLIB=-L"$SCALAPACK_ROOT/ -lmkl_scalapack_lp64"
+		else
+		 SCALAPACKLIB=-L"$SCALAPACK_ROOT/ -lscalapack"
+		fi
+
+		AC_DEFINE([_HAVE_SCALAPACK_],[1],[with Scalapack in ISSM src])
+		AC_SUBST([SCALAPACKLIB])
+	else
+		HAVE_SCALAPACK=no
+	fi
+	AC_MSG_RESULT($HAVE_SCALAPACK)
+	dnl }}}
+	dnl blas{{{
+	AC_ARG_WITH([blas-lapack-dir],
+	  AS_HELP_STRING([--with-blas-lapack-dir=DIR],[blas-lapack root directory]),
+	  [BLASLAPACK_ROOT=$withval],[BLASLAPACK_ROOT=""])
+			  
+	AC_MSG_CHECKING(for blas and lapack headers and libraries in $BLASLAPACK_ROOT)
+	if test -d "$BLASLAPACK_ROOT"; then
+
+		dnl defaults
+		HAVE_BLASLAPACK=yes
+		BLASLAPACKINCL=""
+	
+		if test x$VENDOR = xintel-discover; then
+		 BLASLAPACKLIB=-L"$BLASLAPACK_ROOT -lmkl_lapack -lmkl -lguide -lpthread"
+		else
+		dnl: branch on whether we are running on windows or linux.
+		case "${host_os}" in
+			*cygwin*)
+			BLASLAPACKLIB="-L$BLASLAPACK_ROOT libf2cblas.lib  libf2clapack.lib"
+			;;
+			*linux*)
+			BLASLAPACKLIB=-L"$BLASLAPACK_ROOT -lflapack -lfblas " 
+			;;
+			*darwin*)
+			BLASLAPACKLIB=-L"$BLASLAPACK_ROOT -lflapack -lfblas " 
+			;;
+		esac
+		fi
+
+		AC_DEFINE([_HAVE_BLASLAPACK_],[1],[with blas lapack in ISSM src])
+		AC_SUBST([BLASLAPACKLIB])
+		AC_SUBST([BLASLAPACKINCL])
+	else
+		HAVE_BLASLAPACK=no
+	fi
+	AC_MSG_RESULT($HAVE_BLASLAPACK)
+	dnl }}}
+	dnl mkl{{{
+	AC_ARG_WITH([mkl-dir],
+	  AS_HELP_STRING([--with-mkl-dir=DIR],[mkl root directory]),
+	  [MKL_ROOT=$withval],[MKL_ROOT=""])
+			  
+	AC_MSG_CHECKING(for mkl headers and libraries in $MKL_ROOT)
+	if test -d "$MKL_ROOT"; then
+
+		dnl defaults
+		HAVE_MKL=yes
+		MKLINCL=""
+		MKLLIB=-L"$MKL_ROOT -lmkl -lmkl_lapack -lmkl_scalapack_ilp64   -lmkl_blacs_sgimpt_ilp64 -lguide  -lpthread"
+		AC_DEFINE([_HAVE_MKL_],[1],[with mkl in ISSM src])
+		AC_SUBST([MKLLIB])
+		AC_SUBST([MKLINCL])
+	else
+		HAVE_MKL=no
+	fi
+	AC_MSG_RESULT($HAVE_MKL)
+	dnl }}}
+	dnl plapack{{{
+	AC_MSG_CHECKING(for plapack)
+	
+	AC_ARG_WITH([plapack-lib],
+	  AS_HELP_STRING([--with-plapack-lib = lib],[plapack library]),
+	  [PLAPACK_LIB=$withval],[PLAPACK_LIB=""])
+	
+	AC_ARG_WITH([plapack-include],
+			  AS_HELP_STRING([--with-plapack-include = include],
+							 [plapack include ]),
+			  [PLAPACK_INCLUDE=$withval],[PLAPACK_INCLUDE=""])
+	  
+	if test -n "$PLAPACK_LIB"; then
+		if test -n "$PLAPACK_INCLUDE"; then
+		
+			dnl defaults
+			HAVE_PLAPACK=yes
+			PLAPACKINCL="$PLAPACK_INCLUDE"
+			PLAPACKLIB="$PLAPACK_LIB"
+
+			AC_DEFINE([_HAVE_PLAPACK_],[1],[with Plapack in ISSM src])
+			AC_SUBST([PLAPACKINCL])
+			AC_SUBST([PLAPACKLIB])
+		else
+			HAVE_PLAPACK=no
+		fi
+	else
+		HAVE_PLAPACK=no
+	fi
+	AC_MSG_RESULT($HAVE_PLAPACK)
+	dnl }}}
+	dnl mumps{{{
+	AC_ARG_WITH([mumps-dir],
+	  AS_HELP_STRING([--with-mumps-dir=DIR],[mumps root directory]),
+	  [MUMPS_ROOT=$withval],[MUMPS_ROOT=""])
+			  
+	AC_MSG_CHECKING(for mumps headers and libraries in $MUMPS_ROOT)
+	if test -d "$MUMPS_ROOT"; then
+
+		dnl defaults
+		HAVE_MUMPS=yes
+		MUMPSINCL=-I"$MUMPS_ROOT/include"
+		if test "$PETSC_MAJOR" = "2" ; then
+		MUMPSLIB=-L"$MUMPS_ROOT/lib -ldmumps -lcmumps  -lpord "
+		else
+		dnl MUMPSLIB=-L"$MUMPS_ROOT/lib -ldmumps -lcmumps  -lmumps_common -lpord -lparmetis -lzmumps"
+		MUMPSLIB=-L"$MUMPS_ROOT/lib -ldmumps -lcmumps  -lmumps_common -lpord -lparmetis"
+		fi
+
+		AC_DEFINE([_HAVE_MUMPS_],[1],[with Mumps in ISSM src])
+		AC_SUBST([MUMPSINCL])
+		AC_SUBST([MUMPSLIB])
+	else
+		HAVE_MUMPS=no
+	fi
+	AM_CONDITIONAL([MUMPS], [test x$HAVE_MUMPS = xyes])
+	AC_MSG_RESULT($HAVE_MUMPS)
+	dnl }}}
+	dnl blacs{{{
+	AC_ARG_WITH([blacs-dir],
+		AS_HELP_STRING([--with-blacs-dir=DIR],[blacs root directory]),
+			  [BLACS_ROOT=$withval],[BLACS_ROOT=""])
+			  
+	AC_MSG_CHECKING(for blacs headers and libraries in $BLACS_ROOT)
+	if test -d "$BLACS_ROOT"; then
+
+		dnl defaults
+		HAVE_BLACS=yes
+		BLACSINCL=""
+		if test x$VENDOR = xintel-discover; then
+		 BLACSLIB=-L"$BLACS_ROOT/ -lmkl_blacs_intelmpi_lp64"
+		else
+		 BLACSLIB=-L"$BLACS_ROOT/ -lblacs"
+		fi
+        
+		AC_DEFINE([_HAVE_BLACS_],[1],[with Blacs in ISSM src])
+		AC_SUBST([BLACSINCL])
+		AC_SUBST([BLACSLIB])
+	else
+		HAVE_BLACS=no
+	fi
+	AC_MSG_RESULT($HAVE_BLACS)
+	dnl }}}
+	dnl hypre{{{
+	AC_ARG_WITH([hypre-dir],
+	  AS_HELP_STRING([--with-hypre-dir=DIR],[hypre root directory]),
+			  [HYPRE_ROOT=$withval],[HYPRE_ROOT=""])
+			  
+	AC_MSG_CHECKING(for hypre headers and libraries in $HYPRE_ROOT)
+	if test -d "$HYPRE_ROOT"; then
+
+		dnl defaults
+		HAVE_HYPRE=yes
+		HYPREINCL=""
+		HYPRELIB=-L"$HYPRE_ROOT/lib -lHYPRE"
+        
+		AC_DEFINE([_HAVE_HYPRE_],[1],[with Blacs in ISSM src])
+		AC_SUBST([HYPREINCL])
+		AC_SUBST([HYPRELIB])
+	else
+		HAVE_HYPRE=no
+	fi
+	AC_MSG_RESULT($HAVE_HYPRE)
+	dnl }}}
+	dnl prometheus{{{
+		AC_ARG_WITH([prometheus-dir],
+					AS_HELP_STRING([--with-prometheus-dir=DIR],[prometheus root directory]),
+					[PROMETHEUS_ROOT=$withval],[PROMETHEUS_ROOT=""])
+
+		  AC_MSG_CHECKING(for prometheus headers and libraries in $PROMETHEUS_ROOT)
+		  if test -d "$PROMETHEUS_ROOT"; then
+
+			dnl defaults
+			  HAVE_PROMETHEUS=yes
+			  PROMETHEUSINCL=-I"$PROMETHEUS_ROOT/include"
+			  PROMETHEUSLIB=-L"$PROMETHEUS_ROOT/lib -lpromfei -lprometheus -lparmetis"
+
+			  AC_DEFINE([_HAVE_PROMETHEUS_],[1],[with Prometheus in ISSM src])
+			  AC_SUBST([PROMETHEUSINCL])
+			  AC_SUBST([PROMETHEUSLIB])
+		  else
+				HAVE_PROMETHEUS=no
+			fi
+			AC_MSG_RESULT($HAVE_PROMETHEUS)
+		dnl }}}
+dnl spai{{{
+	AC_ARG_WITH([spai-dir],
+				AS_HELP_STRING([--with-spai-dir=DIR],[spai root directory]),
+				[SPAI_ROOT=$withval],[SPAI_ROOT=""])
+
+	  AC_MSG_CHECKING(for spai headers and libraries in $SPAI_ROOT)
+	  if test -d "$SPAI_ROOT"; then
+
+		dnl defaults
+		  HAVE_SPAI=yes
+		  SPAIINCL=-I"$SPAI_ROOT/include"
+		  SPAILIB=-L"$SPAI_ROOT/lib -lspai"
+
+		  AC_DEFINE([_HAVE_SPAI_],[1],[with Spai in ISSM src])
+		  AC_SUBST([SPAIINCL])
+		  AC_SUBST([SPAILIB])
+	  else
+		HAVE_SPAI=no
+		  fi
+		  AC_MSG_RESULT($HAVE_SPAI)
+		  dnl }}}
+dnl superlu{{{ 
+	AC_ARG_WITH([superlu-dir],
+				AS_HELP_STRING([--with-superlu-dir=DIR],[superlu root directory]),
+				[SUPERLU_ROOT=$withval],[SUPERLU_ROOT=""])
+
+	  AC_MSG_CHECKING(for superlu headers and libraries in $SUPERLU_ROOT)
+	  if test -d "$SUPERLU_ROOT"; then
+
+		dnl defaults
+		  HAVE_SUPERLU=yes
+		  SUPERLUINCL=-I"$SUPERLU_ROOT/include"
+		  SUPERLULIB=-L"$SUPERLU_ROOT/lib -lsuperlu_4.3"
+
+		  AC_DEFINE([_HAVE_SUPERLU_],[1],[with Superlu in ISSM src])
+		  AC_SUBST([SUPERLUINCL])
+		  AC_SUBST([SUPERLULIB])
+	  else
+		HAVE_SUPERLU=no
+		  fi
+		  AC_MSG_RESULT($HAVE_SUPERLU)
+		  dnl }}}
+dnl spooles{{{ 
+	AC_ARG_WITH([spooles-dir],
+				AS_HELP_STRING([--with-spooles-dir=DIR],[spooles root directory]),
+				[SPOOLES_ROOT=$withval],[SPOOLES_ROOT=""])
+
+	  AC_MSG_CHECKING(for spooles headers and libraries in $SPOOLES_ROOT)
+	  if test -d "$SPOOLES_ROOT"; then
+
+		dnl defaults
+		  HAVE_SPOOLES=yes
+		  SPOOLESINCL=-I"$SPOOLES_ROOT/include"
+		  SPOOLESLIB=-L"$SPOOLES_ROOT/lib -lspooles"
+
+		  AC_DEFINE([_HAVE_SPOOLES_],[1],[with Spooles in ISSM src])
+		  AC_SUBST([SPOOLESINCL])
+		  AC_SUBST([SPOOLESLIB])
+	  else
+		HAVE_SPOOLES=no
+		  fi
+		  AC_MSG_RESULT($HAVE_SPOOLES)
+		  dnl }}}
+dnl pastix{{{ 
+	AC_ARG_WITH([pastix-dir],
+				AS_HELP_STRING([--with-pastix-dir=DIR],[pastix root directory]),
+				[PASTIX_ROOT=$withval],[PASTIX_ROOT=""])
+
+	  AC_MSG_CHECKING(for pastix headers and libraries in $PASTIX_ROOT)
+	  if test -d "$PASTIX_ROOT"; then
+
+		dnl defaults
+		  HAVE_PASTIX=yes
+		  PASTIXINCL=-I"$PASTIX_ROOT/include"
+		  PASTIXLIB=-L"$PASTIX_ROOT/lib -lpastix_XXbit_mpi_smp_nobubble_int32_simple_real_scotch_i686_pc_linux -lptscotch -lptscotcherr -lpastix"
+
+		  AC_DEFINE([_HAVE_PASTIX_],[1],[with Pastix in ISSM src])
+		  AC_SUBST([PASTIXINCL])
+		  AC_SUBST([PASTIXLIB])
+	  else
+		HAVE_PASTIX=no
+		  fi
+		  AC_MSG_RESULT($HAVE_PASTIX)
+		  dnl }}}
+	dnl ml{{{
+	AC_ARG_WITH([ml-dir],
+	  AS_HELP_STRING([--with-ml-dir=DIR],[ml root directory]),
+			  [ML_ROOT=$withval],[ML_ROOT=""])
+			  
+	AC_MSG_CHECKING(for ml headers and libraries in $ML_ROOT)
+	if test -d "$ML_ROOT"; then
+
+		dnl defaults
+		HAVE_ML=yes
+		MLINCL=-I"$ML_ROOT/include"
+		MLLIB=-L"$ML_ROOT/lib -lml"
+        
+		AC_DEFINE([_HAVE_ML_],[1],[with Blacs in ISSM src])
+		AC_SUBST([MLINCL])
+		AC_SUBST([MLLIB])
+	else
+		HAVE_ML=no
+	fi
+	AC_MSG_RESULT($HAVE_ML)
+	dnl }}}
+	dnl umfpack{{{
+		AC_ARG_WITH([umfpack-dir],
+		  AS_HELP_STRING([--with-umfpack-dir=DIR],[UMFPACK root directory]),
+					[UMFPACK_ROOT=$withval],[UMFPACK_ROOT=""])
+
+		AC_MSG_CHECKING(for UMFPACK headers and libraries in $UMFPACK_ROOT)
+		if test -d "$UMFPACK_ROOT"; then
+
+			dnl defaults
+			HAVE_UMFPACK=yes
+			UMFPACKINCL=""
+			UMFPACKLIB=-L"$UMFPACK_ROOT/lib -lumfpack -lumfpack.5.5.1"
+
+			AC_DEFINE([_HAVE_UMFPACK_],[1],[with UMFPACK in ISSM src])
+			AC_SUBST([UMFPACKINCL])
+			AC_SUBST([UMFPACKLIB])
+		else
+			HAVE_UMFPACK=no
+		fi
+		AC_MSG_RESULT($HAVE_UMFPACK)
+	dnl }}}
+dnl math{{{
+	AC_MSG_CHECKING(for math library)
+	AC_ARG_WITH([math-lib],
+	  AS_HELP_STRING([--with-math-lib = otions],[math options, for ex: "/usr/lib/libm.a]),
+	  [MATH_LIB=$withval],[MATH_LIB=""])
+
+	dnl check that --with-math-lib may have been provided
+	if test -n "$MATH_LIB" ; then
+		HAVE_MATH=yes
+		MATHLIB="$MATH_LIB"
+
+		AC_DEFINE([_HAVE_MATH_],[1],[with MATH in ISSM src])
+		AC_SUBST([MATHLIB])
+	fi
+	AC_MSG_RESULT(done)
+	dnl }}}
+	dnl fortran{{{
+	AC_ARG_WITH([fortran],
+		AS_HELP_STRING([--with-fortran = YES], [do we compile fortran code (default is yes)]),
+		[FORTRAN=$withval],[FORTRAN=yes]) 
+	AC_MSG_CHECKING(for fortran compilation)
+	if test "x$FORTRAN" = "xyes"; then
+		dnl defaults
+		HAVE_FORTRAN=yes
+
+		AC_DEFINE([_HAVE_FORTRAN_],[1],[with fortran capability])
+	else
+		HAVE_FORTRAN=no
+	fi
+	AM_CONDITIONAL([FORTRAN], [test x$FORTRAN = xyes])
+	AC_MSG_RESULT($FORTRAN)
+
+	if test "x$FORTRAN" = "xyes"; then
+		dnl fortran library  option
+		AC_MSG_CHECKING(for fortran library)
+		AC_ARG_WITH([fortran-lib],
+		  AS_HELP_STRING([--with-fortran-lib = options],[fortran options, for ex: "/usr/lib/gfortran.a]),
+			[FORTRAN_LIB=$withval],[FORTRAN_LIB=""])
+
+		dnl check that --with-fortran-lib may have been provided
+		if test -n "$FORTRAN_LIB" ; then
+			dnl check that library provided EXISTS!
+		   FORTRAN_DIR=$(echo $FORTRAN_LIB | sed -e "s/-L//g" | awk '{print $[1]}')
+			if test -d "$FORTRAN_DIR" || test -f "$FORTRAN_DIR"; then
+				FORTRANLIB="$FORTRAN_LIB"
+				AC_DEFINE([_HAVE_FORTRAN_],[1],[with FORTRAN in ISSM src])
+				AC_SUBST([FORTRANLIB])
+			else
+			 if test "x$HAVE_MPI" = "xyes"; then
+				FORTRANLIB=$(mpif77 -print-file-name="libgfortran.a")
+				if test -f "$FORTRANLIB"; then
+					 AC_MSG_ERROR([fortran library provided ($FORTRAN_LIB) does not exist, MPI suggests the following library: $FORTRANLIB]);
+				fi
+			 fi
+				AC_MSG_ERROR([frtran library provided ($FORTRAN_LIB$) does not exist!]);
+			fi
+		fi
+		AC_MSG_RESULT(done)
+	fi
+	dnl }}}
+	dnl graphics{{{
+	AC_MSG_CHECKING(for graphics library)
+	AC_ARG_WITH([graphics-lib],
+	  AS_HELP_STRING([--with-graphics-lib = options],[graphics options, for ex: "/usr/X11/lib/libX11.a]),
+	  [GRAPHICS_LIB=$withval],[GRAPHICS_LIB=""])
+
+	dnl check that --with-graphics-lib may have been provided
+	
+	if test -n "$GRAPHICS_LIB" ; then
+		dnl check that library provided EXISTS!
+		GRAPHICS_DIR=$(echo $GRAPHICS_LIB | sed -e "s/-L//g" | awk '{print $[1]}')
+		if test -d "$GRAPHICS_DIR" || test -f "$GRAPHICS_DIR"; then
+			HAVE_GRAPHICS=yes
+			GRAPHICSLIB="$GRAPHICS_LIB"
+			AC_DEFINE([_HAVE_GRAPHICS_],[1],[with GRAPHICS in ISSM src])
+			AC_SUBST([GRAPHICSLIB])
+		else
+			if test -f "$PETSC_ROOT/conf/petscvariables"; then
+				GRAPHICSLIB=$(cat $PETSC_ROOT/conf/petscvariables | grep X_LIB)
+				AC_MSG_ERROR([graphics library provided ($GRAPHICS_LIB) does not exist, PETSc suggests the following library: $GRAPHICSLIB]);
+			fi
+			AC_MSG_ERROR([graphics library provided ($GRAPHICS_LIB$) does not exist!]);
+		fi
+	fi
+	AC_MSG_RESULT(done)
+	dnl }}}
+
+	dnl Capabilities
+	dnl with-kml{{{
+	AC_ARG_WITH([kml],
+		AS_HELP_STRING([--with-kml = YES],[compile with kml capabilities (default is yes)]),
+		[KML=$withval],[KML=yes]) 
+	AC_MSG_CHECKING(for kml capability compilation)
+
+	if test "x$KML" = "xyes"; then
+		HAVE_KML=yes
+		AC_DEFINE([_HAVE_KML_],[1],[with kml capability])
+	else
+		HAVE_KML=no
+	fi
+	AM_CONDITIONAL([KML], [test x$HAVE_KML = xyes])
+	AC_MSG_RESULT($HAVE_KML)
+	dnl }}}
+	dnl with-kriging{{{
+	AC_ARG_WITH([kriging],
+		AS_HELP_STRING([--with-kriging = YES],[compile with kriging capabilities (default is yes)]),
+		[KRIGING=$withval],[KRIGING=yes]) 
+	AC_MSG_CHECKING(for kriging capability compilation)
+
+	if test "x$KRIGING" = "xyes"; then
+		HAVE_KRIGING=yes
+		AC_DEFINE([_HAVE_KRIGING_],[1],[with kriging capability])
+	else
+		HAVE_KRIGING=no
+	fi
+	AM_CONDITIONAL([KRIGING], [test x$HAVE_KRIGING = xyes])
+	AC_MSG_RESULT($HAVE_KRIGING)
+	dnl }}}
+	dnl with-steadystate{{{
+	AC_ARG_WITH([steadystate],
+		AS_HELP_STRING([--with-steadystate = YES],[compile with steadystate capabilities (default is yes)]),
+		[STEADYSTATE=$withval],[STEADYSTATE=yes]) 
+	AC_MSG_CHECKING(for steadystate capability compilation)
+
+	if test "x$STEADYSTATE" = "xyes"; then
+
+		dnl defaults
+		HAVE_STEADYSTATE=yes
+
+		AC_DEFINE([_HAVE_STEADYSTATE_],[1],[with steadystate capability])
+	else
+		HAVE_STEADYSTATE=no
+	fi
+	AM_CONDITIONAL([STEADYSTATE], [test x$HAVE_STEADYSTATE = xyes])
+	AC_MSG_RESULT($HAVE_STEADYSTATE)
+	dnl }}}
+	dnl with-transient{{{
+	AC_ARG_WITH([transient],
+		AS_HELP_STRING([--with-transient = YES], [compile with transient capabilities (default is yes)]),
+		[TRANSIENT=$withval],[TRANSIENT=yes]) 
+	AC_MSG_CHECKING(for transient capability compilation)
+
+	if test "x$TRANSIENT" = "xyes"; then
+
+		dnl defaults
+		HAVE_TRANSIENT=yes
+
+		AC_DEFINE([_HAVE_TRANSIENT_],[1],[with transient capability])
+	else
+		HAVE_TRANSIENT=no
+	fi
+	AM_CONDITIONAL([TRANSIENT], [test x$HAVE_TRANSIENT = xyes])
+	AC_MSG_RESULT($HAVE_TRANSIENT)
+	dnl }}}
+	dnl with-thermal{{{
+	AC_ARG_WITH([thermal],
+		AS_HELP_STRING([--with-thermal = YES], [compile with thermal capabilities (default is yes)]),
+		[THERMAL=$withval],[THERMAL=yes]) 
+	AC_MSG_CHECKING(for thermal capability compilation)
+
+	if test "x$THERMAL" = "xyes"; then
+
+		dnl defaults
+		HAVE_THERMAL=yes
+
+		AC_DEFINE([_HAVE_THERMAL_],[1],[with thermal capability])
+	else
+		HAVE_THERMAL=no
+	fi
+	AM_CONDITIONAL([THERMAL], [test x$HAVE_THERMAL = xyes])
+	AC_MSG_RESULT($HAVE_THERMAL)
+	dnl }}}
+	dnl with-prognostic{{{
+	AC_ARG_WITH([prognostic],
+		AS_HELP_STRING([--with-prognostic = YES], [compile with prognostic capabilities (default is yes)]),
+		[PROGNOSTIC=$withval],[PROGNOSTIC=yes]) 
+	AC_MSG_CHECKING(for prognostic capability compilation)
+
+	if test "x$PROGNOSTIC" = "xyes"; then
+
+		dnl defaults
+		HAVE_PROGNOSTIC=yes
+
+		AC_DEFINE([_HAVE_PROGNOSTIC_],[1],[with prognostic capability])
+	else
+		HAVE_PROGNOSTIC=no
+	fi
+	AM_CONDITIONAL([PROGNOSTIC], [test x$HAVE_PROGNOSTIC = xyes])
+	AC_MSG_RESULT($HAVE_PROGNOSTIC)
+	dnl }}}
+	dnl with-control{{{
+	AC_ARG_WITH([control],
+		AS_HELP_STRING([--with-control = YES], [compile with control capabilities (default is yes)]),
+		[CONTROL=$withval],[CONTROL=yes]) 
+	AC_MSG_CHECKING(for control capability compilation)
+
+	if test "x$CONTROL" = "xyes"; then
+
+		dnl defaults
+		HAVE_CONTROL=yes
+
+		AC_DEFINE([_HAVE_CONTROL_],[1],[with control capability])
+	else
+		HAVE_CONTROL=no
+	fi
+	AM_CONDITIONAL([CONTROL], [test x$HAVE_CONTROL = xyes])
+	AC_MSG_RESULT($HAVE_CONTROL)
+	dnl }}}
+	dnl with-hydrology{{{
+	AC_ARG_WITH([hydrology],
+		AS_HELP_STRING([--with-hydrology = YES], [compile with hydrology capabilities (default is yes)]),
+		[HYDROLOGY=$withval],[HYDROLOGY=yes]) 
+	AC_MSG_CHECKING(for hydrology capability compilation)
+
+	if test "x$HYDROLOGY" = "xyes"; then
+
+		dnl defaults
+		HAVE_HYDROLOGY=yes
+
+		AC_DEFINE([_HAVE_HYDROLOGY_],[1],[with hydrology capability])
+	else
+		HAVE_HYDROLOGY=no
+	fi
+	AM_CONDITIONAL([HYDROLOGY], [test x$HAVE_HYDROLOGY = xyes])
+	AC_MSG_RESULT($HAVE_HYDROLOGY)
+	dnl }}}
+	dnl with-diagnostic{{{
+	AC_ARG_WITH([diagnostic],
+		AS_HELP_STRING([--with-diagnostic = YES], [compile with diagnostic capabilities (default is yes)]),
+		[DIAGNOSTIC=$withval],[DIAGNOSTIC=yes]) 
+	AC_MSG_CHECKING(for diagnostic capability compilation)
+
+	if test "x$DIAGNOSTIC" = "xyes"; then
+
+		dnl defaults
+		HAVE_DIAGNOSTIC=yes
+
+		AC_DEFINE([_HAVE_DIAGNOSTIC_],[1],[with diagnostic capability])
+	else
+		HAVE_DIAGNOSTIC=no
+	fi
+	AM_CONDITIONAL([DIAGNOSTIC], [test x$HAVE_DIAGNOSTIC = xyes])
+	AC_MSG_RESULT($HAVE_DIAGNOSTIC)
+	dnl }}}
+	dnl with-balanced{{{
+	AC_ARG_WITH([balanced],
+		AS_HELP_STRING([--with-balanced = YES], [compile with balanced capabilities (default is yes)]),
+		[BALANCED=$withval],[BALANCED=yes]) 
+	AC_MSG_CHECKING(for balanced capability compilation)
+
+	if test "x$BALANCED" = "xyes"; then
+
+		dnl defaults
+		HAVE_BALANCED=yes
+
+		AC_DEFINE([_HAVE_BALANCED_],[1],[with balanced capability])
+	else
+		HAVE_BALANCED=no
+	fi
+	AM_CONDITIONAL([BALANCED], [test x$HAVE_BALANCED = xyes])
+	AC_MSG_RESULT($HAVE_BALANCED)
+	dnl }}}
+	dnl with-responses{{{
+	AC_ARG_WITH([responses],
+		AS_HELP_STRING([--with-responses = YES], [compile with responses capabilities (default is yes)]),
+		[RESPONSES=$withval],[RESPONSES=yes]) 
+	AC_MSG_CHECKING(for responses capability compilation)
+
+	if test "x$RESPONSES" = "xyes"; then
+
+		dnl defaults
+		HAVE_RESPONSES=yes
+
+		AC_DEFINE([_HAVE_RESPONSES_],[1],[with responses capability])
+	else
+		HAVE_RESPONSES=no
+	fi
+	AM_CONDITIONAL([RESPONSES], [test x$HAVE_RESPONSES = xyes])
+	AC_MSG_RESULT($HAVE_RESPONSES)
+	dnl }}}
+	dnl with-slope{{{
+	AC_ARG_WITH([slope],
+		AS_HELP_STRING([--with-slope = YES], [compile with slope capabilities (default is yes)]),
+		[SLOPE=$withval],[SLOPE=yes]) 
+	AC_MSG_CHECKING(for slope capability compilation)
+
+	if test "x$SLOPE" = "xyes"; then
+
+		dnl defaults
+		HAVE_SLOPE=yes
+
+		AC_DEFINE([_HAVE_SLOPE_],[1],[with slope capability])
+	else
+		HAVE_SLOPE=no
+	fi
+	AM_CONDITIONAL([SLOPE], [test x$HAVE_SLOPE = xyes])
+	AC_MSG_RESULT($HAVE_SLOPE)
+	dnl }}}
+	dnl with-groundingline{{{
+	AC_ARG_WITH([groundingline],
+		AS_HELP_STRING([--with-groundingline = YES], [compile with groundingline capabilities (default is yes)]),
+		[GROUNDINGLINE=$withval],[GROUNDINGLINE=yes]) 
+	AC_MSG_CHECKING(for groundingline capability compilation)
+
+	if test "x$GROUNDINGLINE" = "xyes"; then
+
+		dnl defaults
+		HAVE_GROUNDINGLINE=yes
+
+		AC_DEFINE([_HAVE_GROUNDINGLINE_],[1],[with groundingline capability])
+	else
+		HAVE_GROUNDINGLINE=no
+	fi
+	AM_CONDITIONAL([GROUNDINGLINE], [test x$HAVE_GROUNDINGLINE = xyes])
+	AC_MSG_RESULT($HAVE_GROUNDINGLINE)
+	dnl }}}
+	dnl with-rifts{{{
+	AC_ARG_WITH([rifts],
+		AS_HELP_STRING([--with-rifts = YES], [compile with rifts capabilities (default is yes)]),
+		[RIFTS=$withval],[RIFTS=yes]) 
+	AC_MSG_CHECKING(for rifts capability compilation)
+
+	if test "x$RIFTS" = "xyes"; then
+
+		dnl defaults
+		HAVE_RIFTS=yes
+
+		AC_DEFINE([_HAVE_RIFTS_],[1],[with rifts capability])
+	else
+		HAVE_RIFTS=no
+	fi
+	AM_CONDITIONAL([RIFTS], [test x$HAVE_RIFTS = xyes])
+	AC_MSG_RESULT($HAVE_RIFTS)
+	dnl }}}
+	dnl math77{{{
+	AC_ARG_WITH([math77-dir],
+		AS_HELP_STRING([--with-math77-dir=DIR], [math77 root directory.]),
+		[MATH77_ROOT=$withval],[MATH77_ROOT=""]) 
+	AC_MSG_CHECKING(for math77)
+
+	if test -d "$MATH77_ROOT"; then
+
+	  HAVE_MATH77=yes
+	  MATH77LIB="-L$MATH77_ROOT/ -lmath77"
+
+	  AC_DEFINE([_HAVE_MATH77_],[1],[with math77 in ISSM src])
+	  AC_SUBST([MATH77LIB])
+	else
+		HAVE_MATH77=no
+	fi
+	AC_MSG_RESULT($HAVE_MATH77)
+	dnl }}}
+	dnl with-gia{{{
+	AC_ARG_WITH([gia],
+		AS_HELP_STRING([--with-gia = YES], [compile with gia capabilities (default is yes)]),
+		[GIA=$withval],[GIA=no]) 
+	AC_MSG_CHECKING(for gia capability compilation)
+
+	if test "x$GIA" = "xyes"; then
+	  
+	  if test "x$HAVE_MATH77" = "xno"; then
+		  HAVE_GIA=no
+		  AC_MSG_ERROR([gia requires compilation of math77 library! Reconfigure with --with-math77 option on]);
+	  else
+		dnl defaults
+		HAVE_GIA=yes
+		AC_DEFINE([_HAVE_GIA_],[1],[with gia capability])
+	  fi
+
+	else
+		HAVE_GIA=no
+	fi
+	AM_CONDITIONAL([GIA], [test x$HAVE_GIA = xyes])
+	AC_MSG_RESULT($HAVE_GIA)
+	dnl }}}
+	dnl with-ios{{{
+	AC_ARG_WITH([ios],
+		AS_HELP_STRING([--with-ios = YES], [compile with iOS capabilities (default is no, alternatives are yes)]),
+		[IOS=$withval],[IOS=no]) 
+	AC_MSG_CHECKING(for iOS compilation)
+
+	if test "x$IOS" = "xyes"; then
+		dnl defaults
+		HAVE_IOS=yes
+
+		AC_DEFINE([_HAVE_IOS_],[1],[with android capability])
+	elif test "x$IOS" = "xno"; then
+		HAVE_IOS=no
+	else
+	  AC_MSG_ERROR([--with-ios should be either no or yes])
+	fi
+	AM_CONDITIONAL([IOS], [test x$HAVE_IOS != xno])
+	AC_DEFINE([_HAVE_IOS_],[1],[with ios.])
+	AC_MSG_RESULT($HAVE_IOS)
+	dnl }}}
+	dnl with-android{{{
+	AC_ARG_WITH([android],
+		AS_HELP_STRING([--with-android = EXE], [compile with android capabilities (default is no, alternatives are exe and jni)]),
+		[ANDROID=$withval],[ANDROID=no]) 
+	AC_MSG_CHECKING(for android capability compilation)
+
+	if test "x$ANDROID" = "xjni"; then
+
+		dnl defaults
+		HAVE_ANDROID=jni
+		AC_DEFINE([_HAVE_ANDROID_],[1],[with android capability])
+		AC_DEFINE([_HAVE_ANDROID_JNI_],[1],[with android jni])
+	elif test "x$ANDROID" = "xexe"; then
+		dnl defaults
+		HAVE_ANDROID=exe
+
+		AC_DEFINE([_HAVE_ANDROID_],[1],[with android capability])
+	elif test "x$ANDROID" = "xno"; then
+		HAVE_ANDROID=no
+	else
+	  AC_MSG_ERROR([--with-android should be either no, exe or jni])
+	fi
+	AM_CONDITIONAL([ANDROID], [test x$HAVE_ANDROID != xno])
+	AM_CONDITIONAL([ANDROIDJNI], [test x$HAVE_ANDROID = xjni])
+	AM_CONDITIONAL([ANDROIDEXE], [test x$HAVE_ANDROID = xexe])
+	AC_DEFINE([_HAVE_ANDROID_],[1],[with android.])
+	AC_MSG_RESULT($HAVE_ANDROID)
+	dnl }}}
+	dnl with-android-ndk{{{
+	AC_ARG_WITH([android-ndk],
+	  AS_HELP_STRING([--with-android-ndk=DIR], [android-ndk root directory.]),
+	  [ANDROID_NDK_ROOT=$withval],[ANDROID_NDK_ROOT=""]) 
+	AC_MSG_CHECKING(with android ndk)
+	
+	if test -d "$ANDROID_NDK_ROOT"; then
+		dnl defaults
+		HAVE_ANDROID_NDK=yes
+		ANDROID_NDKINCL="-I$ANDROID_NDK_ROOT/arm-linux-android-install/sysroot/usr/include"
+
+		AC_DEFINE([_HAVE_ANDROID_NDK_],[1],[with android ndk in ISSM src])
+		AC_SUBST([ANDROID_NDKINCL])
+	else
+		HAVE_ANDROID_NDK=no
+	fi
+	AC_MSG_RESULT($HAVE_ANDROID_NDK)
+	dnl }}}
+	dnl with-3d{{{
+	AC_ARG_WITH([3d],
+		AS_HELP_STRING([--with-3d = YES], [compile with 3d capabilities (default is yes)]),
+		[THREED=$withval],[THREED=yes]) 
+	AC_MSG_CHECKING(for 3d capability compilation)
+
+	if test "x$THREED" = "xyes"; then
+
+		dnl defaults
+		HAVE_3D=yes
+
+		AC_DEFINE([_HAVE_3D_],[1],[with 3d capability])
+	else
+		HAVE_3D=no
+	fi
+	AM_CONDITIONAL([THREED], [test x$HAVE_3D = xyes])
+	AC_MSG_RESULT($HAVE_3D)
+	dnl }}}
+	dnl checks{{{
+	AC_MSG_CHECKING(consistency between all libraries)
+	
+	dnl check that if petsc is requested , mpi should be specified
+	if test "$HAVE_PETSC" = "yes" ; then
+		if test "$HAVE_MPI" = "NO";  then
+			AC_MSG_ERROR([petsc requires mpi!]);
+		fi
+	fi
+
+	dnl check that we have either python or matlab support if we compile the modules
+	if test "$MODULES_VALUE" = "yes"  && test "$HAVE_MATLAB" = "no" && test "$HAVE_PYTHON" = "no"; then
+		AC_MSG_ERROR([need at least python or matlab support to compile modules (or use --with-modules=no)]);
+	fi
+
+	dnl check that if we have MPI, we have metis
+	if test "$HAVE_METIS" = "yes"  && test "$HAVE_MPI" = "no" ; then
+	AC_MSG_ERROR([need mpi if using the metis partitioner!]);
+	fi
+
+	AC_MSG_RESULT(done)
+	dnl }}}
+
+	dnl other options
+	dnl optimization{{{
+	dnl bypass standard optimization -g -O2 ? 
+	AC_ARG_WITH([cxxoptflags],
+	  AS_HELP_STRING([--with-cxxoptflags = CXXOPTFLAGS], [optimization using CXX flags, ex: --with-cxxoptflags=-march=opteron -O3]),
+	  [CXXOPTFLAGS=$withval],[CXXOPTFLAGS="-g -O2"]) 
+	AC_MSG_CHECKING(for c++ optimization flags)
+	AC_SUBST([CXXOPTFLAGS])
+	AC_MSG_RESULT(done)
+
+	dnl }}}
+	dnl multithreading{{{
+	AC_ARG_WITH([numthreads],
+	  AS_HELP_STRING([--with-numthreads = NUMTHREADS_VALUE],[numthreads, default is 1. ]),
+	  [NUMTHREADS_VALUE=$withval],[NUMTHREADS_VALUE=1])
+	AC_MSG_CHECKING(for number of threads)
+	dnl defaults
+	MULTITHREADING=no
+	MULTITHREADINLIB=""
+	if test "$NUMTHREADS_VALUE" != "1"; then
+		
+		MULTITHREADINGLIB="-lpthread -lrt"
+		case "${host_os}" in
+		*cygwin*)
+		MULTITHREADINGLIB="-lpthread -lrt"
+		;;
+		*linux*)
+		MULTITHREADINGLIB="-lpthread -lrt"
+		;;
+		*darwin*)
+		MULTITHREADINGLIB="-lpthread"
+		;;
+		esac
+
+		AC_DEFINE([_MULTITHREADING_],[1],[with numthreads enabled])
+		AC_DEFINE_UNQUOTED([_NUMTHREADS_],[$NUMTHREADS_VALUE],[number of threads])
+	fi
+	AC_SUBST([MULTITHREADINGLIB])
+	AC_MSG_RESULT($NUMTHREADS_VALUE) 
+	dnl }}}
+	dnl 64bit {{{
+	AC_ARG_WITH([64bit-indices],
+	  AS_HELP_STRING([--with-64bit-indices = bool], [use 64 bit integers, default 0, ex: --with-64bit-indices=1]),
+	  [USE_64BIT_INDICES=$withval],[USE_64BIT_INDICES=0]) 
+	AC_MSG_CHECKING(for 64 bit indices)
+
+	if test "$USE_64BIT_INDICES" == "1"; then
+	AC_DEFINE([ISSM_USE_64BIT_INDICES],[1],[with 64 bits indices])
+	else
+	AC_DEFINE([ISSM_USE_64BIT_INDICES],[0],[with 64 bits indices])
+	fi
+	AC_MSG_RESULT($USE_64BIT_INDICES)
+	dnl }}}
+])
Index: /issm/branches/trunk-dlcheng-ASE/scripts/BinRead.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/BinRead.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/BinRead.py	(revision 27955)
@@ -0,0 +1,191 @@
+#!/usr/bin/env python3
+import numpy as np
+from os import environ, path
+import sys
+import struct
+from argparse import ArgumentParser
+
+def BinRead(infile, outfile='', verbose=0):  #{{{
+
+    print('reading binary file')
+    f = open(infile, 'rb')
+
+    if outfile:
+        sys.stdout = open(outfile, 'w')
+
+    while True:
+        try:
+            # Step 1: Read size of record name
+            recordnamesize = struct.unpack('i', f.read(struct.calcsize('i')))[0]
+        except struct.error as e:
+            print('probable EOF: {}'.format(e))
+            break
+
+        print('============================================================================')
+        if verbose > 2:
+            print('\n recordnamesize = {}'.format(recordnamesize))
+        recordname = struct.unpack('{}s'.format(recordnamesize), f.read(recordnamesize))[0].decode('ASCII')
+        print('field: {}'.format(recordname))
+
+        # Step 2: Read the data itself
+        # First read length of record
+        #reclen = struct.unpack('i', f.read(struct.calcsize('i')))[0]
+        reclen = struct.unpack('q', f.read(struct.calcsize('q')))[0]
+        if verbose > 1:
+            print('reclen = {}'.format(reclen))
+
+        # Read data code
+        code = struct.unpack('i', f.read(struct.calcsize('i')))[0]
+        print('Format = {} (code {})'.format(CodeToFormat(code), code))
+
+        if code == FormatToCode('Boolean'):
+            bval = struct.unpack('i', f.read(reclen - struct.calcsize('i')))[0]
+            print('value = {}'.format(bval))
+
+        elif code == FormatToCode('Integer'):
+            ival = struct.unpack('i', f.read(reclen - struct.calcsize('i')))[0]
+            print('value = {}'.format(ival))
+
+        elif code == FormatToCode('Double'):
+            dval = struct.unpack('d', f.read(reclen - struct.calcsize('i')))[0]
+            print('value = {}'.format(dval))
+
+        elif code == FormatToCode('String'):
+            strlen = struct.unpack('i', f.read(struct.calcsize('i')))[0]
+            if verbose > 1:
+                print('strlen = {}'.format(strlen))
+            sval = struct.unpack('{}s'.format(strlen), f.read(strlen))[0]
+            print('value = {}'.format(sval))
+
+        elif code == FormatToCode('BooleanMat'):
+            # Read matrix type
+            mattype = struct.unpack('i', f.read(struct.calcsize('i')))[0]
+            print('mattype = {}'.format(mattype))
+
+            # Read matrix
+            s = [0, 0]
+            s[0] = struct.unpack('i', f.read(struct.calcsize('i')))[0]
+            s[1] = struct.unpack('i', f.read(struct.calcsize('i')))[0]
+            print('size = [{}x{}]'.format(s[0], s[1]))
+            data = np.zeros((s[0], s[1]))
+            for i in range(s[0]):
+                for j in range(s[1]):
+                    data[i][j] = struct.unpack('d', f.read(struct.calcsize('d')))[0]
+                    if verbose > 2:
+                        print('data[{}, {}] = {}'.format(i, j, data[i][j]))
+
+        elif code == FormatToCode('IntMat'):
+            # Read matrix type
+            mattype = struct.unpack('i', f.read(struct.calcsize('i')))[0]
+            print('mattype = {}'.format(mattype))
+
+            # Read matrix
+            s = [0, 0]
+            s[0] = struct.unpack('i', f.read(struct.calcsize('i')))[0]
+            s[1] = struct.unpack('i', f.read(struct.calcsize('i')))[0]
+            print('size = [{}x{}]'.format(s[0], s[1]))
+            data = np.zeros((s[0], s[1]))
+            for i in range(s[0]):
+                for j in range(s[1]):
+                    data[i][j] = struct.unpack('d', f.read(struct.calcsize('d')))[0]
+                    if verbose > 2:
+                        print('data[{}, {}] = {}'.format(i, j, data[i][j]))
+
+        elif code == FormatToCode('DoubleMat'):
+            # Read matrix type
+            mattype = struct.unpack('i', f.read(struct.calcsize('i')))[0]
+            print('mattype = {}'.format(mattype))
+
+            # Read matrix
+            s = [0, 0]
+            s[0] = struct.unpack('i', f.read(struct.calcsize('i')))[0]
+            s[1] = struct.unpack('i', f.read(struct.calcsize('i')))[0]
+            print('size = [{}x{}]'.format(s[0], s[1]))
+            data = np.zeros((s[0], s[1]))
+            for i in range(s[0]):
+                for j in range(s[1]):
+                    data[i][j] = struct.unpack('d', f.read(struct.calcsize('d')))[0]
+                    if verbose > 2:
+                        print('data[{}, {}] = {}'.format(i, j, data[i][j]))
+
+        elif code == FormatToCode('MatArray'):
+            f.seek(reclen - 4, 1)
+            print('skipping {} bytes for code {}'.format(code, reclen - 4))
+        elif code == FormatToCode('StringArray'):
+            f.seek(reclen - 4, 1)
+            print('skipping {} bytes for code {}'.format(code, reclen - 4))
+
+        else:
+            raise TypeError('BinRead error message: data type: {} not supported yet! ({})'.format(code, recordname))
+
+    f.close()
+#}}}
+
+def FormatToCode(format):  # {{{
+    """This routine takes the format string and converts it into an integer, 
+    which is passed along with the record in order to identify the nature of 
+    the data being sent.
+    """
+
+    if format == 'Boolean':
+        code = 1
+    elif format == 'Integer':
+        code = 2
+    elif format == 'Double':
+        code = 3
+    elif format == 'String':
+        code = 4
+    elif format == 'BooleanMat':
+        code = 5
+    elif format == 'IntMat':
+        code = 6
+    elif format == 'DoubleMat':
+        code = 7
+    elif format == 'MatArray':
+        code = 8
+    elif format == 'StringArray':
+        code = 9
+    else:
+        raise IOError('FormatToCode error message: data type not supported yet!')
+
+    return code
+# }}}
+
+def CodeToFormat(code):  # {{{
+    """This routine takes a datatype code and converts it to the corresponding 
+    string in order to identify the nature of the data retrieved.
+    """
+
+    if code == 1:
+        format = 'Boolean'
+    elif code == 2:
+        format = 'Integer'
+    elif code == 3:
+        format = 'Double'
+    elif code == 4:
+        format = 'String'
+    elif code == 5:
+        format = 'BooleanMat'
+    elif code == 6:
+        format = 'IntMat'
+    elif code == 7:
+        format = 'DoubleMat'
+    elif code == 8:
+        format = 'MatArray'
+    elif code == 9:
+        format = 'StringArray'
+    else:
+        raise TypeError('FormatToCode error message: code {} not supported yet!'.format(code))
+
+    return format
+# }}}
+
+if __name__ == '__main__':  #{{{
+    parser = ArgumentParser(description='BinRead - function to read binary input file.')
+    parser.add_argument('-f', '--infile', help='name of binary input file', default='')
+    parser.add_argument('-o', '--outfile', help='optional name of text output file', default='')
+    parser.add_argument('-v', '--verbose', help='optional level of output', default=0)
+    args = parser.parse_args()
+
+    BinRead(args.infile, args.outfile, args.verbose)
+#}}}
Index: /issm/branches/trunk-dlcheng-ASE/scripts/ConvertAllNetcdfArchivesToArch.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/ConvertAllNetcdfArchivesToArch.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/ConvertAllNetcdfArchivesToArch.m	(revision 27955)
@@ -0,0 +1,20 @@
+root=pwd;
+cd('../test/Archives/');
+ncdir=pwd;
+cd(root);
+
+file_regexp=strcat(ncdir,'/*.nc');
+flist=dir(file_regexp);
+fnames={flist.name}';
+
+pattern='.nc';
+replacement='.arch';
+for i=1:numel(fnames)
+	% Remove the extension '.nc' and replace with '.arch'
+	arch_file_name=regexprep(fnames{i},pattern,replacement);
+	disp(['Converting ' fnames{i} ' to .arch format']);
+	% Reconstruct file path
+	fpath=strcat(ncdir,'/',fnames{i});
+	archpath=strcat(ncdir,'/',arch_file_name);
+	netcdf2arch(fpath,archpath);
+end
Index: /issm/branches/trunk-dlcheng-ASE/scripts/DownloadExamplesDatasets.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/DownloadExamplesDatasets.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/DownloadExamplesDatasets.sh	(revision 27955)
@@ -0,0 +1,47 @@
+#!/bin/bash
+################################################################################
+# This script downloads all datasets needed for running the ISSM tutorials.
+#
+# The default behavior is to download datasets to the examples/Data directory 
+# relative to this script. An alternate output directory can be designated by 
+# supplying a command line argument.
+#
+# NOTE:
+# - This script does not clobber existing files, intentionally. To download and 
+#	unzip new copies, first remove existing files manually.
+################################################################################
+
+## Constants
+#
+DATASETS_URL="https://issm.jpl.nasa.gov/documentation/tutorials/datasets"
+DIRECTORY_PREFIX=$(cd $(dirname "$0"); pwd)"/../examples/Data" # Default behavior is to download datasets to examples/Data directory relative to this script
+
+if [ $# -gt 0 ]; then
+	DIRECTORY_PREFIX=$1
+
+	if [ ! -d "${DIRECTORY_PREFIX}" ]; then
+		mkdir -p "${DIRECTORY_PREFIX}"
+	fi
+fi
+
+# Get content of page that hosts datasets, reduce to just datasets list, then
+# parse out dataset links
+#
+# NOTE: Clear DYLD_LIBRARY_PATH in case we have installed our own copy of cURL
+#		and $ISSM_DIR/etc/environment.sh has been sourced as there may be a
+#		conflict between versions of cURL executable and libcurl
+#
+dataset_urls=$(\
+	DYLD_LIBRARY_PATH=""; \
+	curl -Ls ${DATASETS_URL} |\
+	sed '/<!--DATASETS LIST START-->/,/<!--DATASETS LIST END-->/ !d' |\
+	sed -n 's/.*<li><a href="\([^"]*\)">.*/\1/p'
+)
+
+# Get datasets
+#
+echo "Downloading examples datasets..."
+wget --quiet --no-clobber --directory-prefix="${DIRECTORY_PREFIX}" -i - <<< "${dataset_urls}"
+
+# Expand zip files
+unzip -n -d "${DIRECTORY_PREFIX}" "${DIRECTORY_PREFIX}/*.zip"
Index: /issm/branches/trunk-dlcheng-ASE/scripts/DownloadExternalPackage.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/DownloadExternalPackage.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/DownloadExternalPackage.py	(revision 27955)
@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+# -*- coding: ISO-8859-1 -*-
+
+import os
+import sys
+import urllib
+
+#Check inputs
+if(len(sys.argv) != 3):
+    raise NameError('usage: . / DownloadExternalPackage.py URL localfile')
+
+url = sys.argv[1]
+localFile = sys.argv[2]
+
+#Remove file if it already exists
+if os.path.exists(localFile):
+    print("File " + localFile + " already exists and will not be downloaded...")
+    sys.exit()
+
+#Try to download from url
+httpfail = -1
+try:
+    print("Fetching %s" % localFile)
+    urllib.request(url, localFile)
+    httpfail = 0
+except urllib.error.URLError as e:
+    failureMessage = '''
+   ===========================================================================
+    Unable to download package {} from: {} due to {}
+    * If URL specified manually - perhaps there is a typo?
+    * If your network is disconnected - please reconnect
+    * Alternatively, you can download the above URL manually
+   ===========================================================================
+    '''.format(localFile, url, e)
+    print(failureMessage)
Index: /issm/branches/trunk-dlcheng-ASE/scripts/DownloadExternalPackage.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/DownloadExternalPackage.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/DownloadExternalPackage.sh	(revision 27955)
@@ -0,0 +1,65 @@
+#!/bin/bash
+#
+# DownloadExternalPackage.sh
+# Generally, used to download a hosted file from a URL
+# URL - Location of file to download
+# file - File to write to (including path)
+# usage: download_external_package.sh URL file
+
+## Constants
+#
+MSG_ERR_NO_GET_CMD="No supported file download command was found"
+MSG_USAGE="usage: $(basename ${0}) [-h] URL file
+  URL  : Location of file to download
+  file : File to write to (including path)"
+
+## Variables
+#
+OUT_FILE=""
+URL=""
+
+## Check that number of args is 2 (note that this also handles case where user explicitly requests help)
+#
+if [ $# != 2 ]
+then
+	echo "$MSG_USAGE"
+	exit 0
+fi
+
+## Retrieve args
+#
+URL=$1
+OUT_FILE=$2
+
+## Check if OUT_FILE already exists
+#
+if [ -f ${OUT_FILE} ]
+then
+	echo "File ${OUT_FILE} already exists and will not be downloaded..."
+	exit 0
+fi
+
+## Download file
+#
+if [ ! -z `which curl` ]; then
+	curl --silent $URL -o $OUT_FILE
+
+	# Try wget if curl exists but fails
+	if [ $? -ne 0 ]; then
+		if [ ! -z `which wget` ]; then
+			wget --quiet -O $OUT_FILE $URL
+
+			if [ $? -ne 0 ]; then
+				echo "Error: both curl and wget failed. To debug, download package manually using curl without '--silent' option and/or wget without '--quiet' option."
+				exit 0
+			fi
+		else
+			echo $MSG_ERR_NO_GET_CMD
+			exit 0
+		fi
+	fi
+elif [ ! -z `which wget` ]; then
+	wget --quiet -O $OUT_FILE $URL
+else
+	echo $MSG_ERR_NO_GET_CMD
+fi
Index: /issm/branches/trunk-dlcheng-ASE/scripts/GenerateReferences.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/GenerateReferences.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/GenerateReferences.sh	(revision 27955)
@@ -0,0 +1,38 @@
+#!/bin/bash
+#Generate a RTF file with references provided in CITE
+#Use AGU bibliography style and delete labels for easy copy/paste
+#Version: 04/28/11
+
+#Genetare a pdf with the list of references provided in $CITE
+CITE="Joughin2009,Rignot2002,Frey2001"
+
+#First erase files; 
+rm -rf references.rtf
+
+#create Latex file
+cat <<END > references.tex
+\documentclass{article}
+\bibliographystyle{agu}
+\begin{document}
+\nocite{$CITE}
+\bibliography{$JPL_SVN/publications/bibtex/references}
+\end{document}
+END
+#Generate pdf
+echo "Compiling document"
+latex  -interaction=batchmode -file-line-error references.tex > /dev/null
+echo "Running Bibtex"
+bibtex references
+echo "Removing labels"
+cat references.bbl | sed -e "s-ibitem.*\]-DELETE-" | grep -v DELETE > references.bak1 #delete labels that hold in one line
+cat references.bak1 | sed -e "/ibitem/,/]/d" > references.bak2                        #delete labels that are on multiple lines
+mv references.bak2 references.bbl
+echo "Converting to rtf"
+$ISSM_DIR/externalpackages/latex2rtf/install/latex2rtf -P $ISSM_DIR/externalpackages/latex2rtf/install/cfg/ references
+
+#Remove all but rtf file
+rm -rf references.[!rtf]*
+rm -rf references.tex
+
+#open output
+#open references.rtf
Index: /issm/branches/trunk-dlcheng-ASE/scripts/OutbinRead.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/OutbinRead.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/OutbinRead.py	(revision 27955)
@@ -0,0 +1,142 @@
+#!/usr/bin/env python
+import numpy as np
+from os import environ, path
+import sys
+import struct
+from argparse import ArgumentParser
+
+def OutbinRead(filin, filout='', verbose=0):  #{{{
+
+    yts  = 365*24*3600.
+
+    print("reading binary file.")
+    f = open(filin, 'rb')
+
+    if filout:
+        sys.stdout = open(filout, 'w')
+
+    while True:
+        try:
+            #Step 1: read size of record name
+            recordnamesize = struct.unpack('i', f.read(struct.calcsize('i')))[0]
+        except struct.error as e:
+            print("probable EOF: {}".format(e))
+            break
+
+        print("============================================================================ ")
+        if verbose > 2:
+            print("\n recordnamesize = {}".format(recordnamesize))
+        recordname = struct.unpack('{}s'.format(recordnamesize), f.read(recordnamesize))[0]
+        print("field: {}".format(recordname))
+
+        #read time and step
+        time = struct.unpack('d', f.read(struct.calcsize('d')))[0]
+        step = struct.unpack('i', f.read(struct.calcsize('i')))[0]
+        if time!=-9999.: time = time/yts
+        print("time = {} step = {}".format(time,step))
+
+        #read data code:
+        code = struct.unpack('i', f.read(struct.calcsize('i')))[0]
+        print("Format = {} (code {})".format(CodeToFormat(code), code))
+
+		  #read size:
+        M = struct.unpack('i', f.read(struct.calcsize('i')))[0]
+        N = 1 #default
+
+        #Step 2: read the data itself.
+        if code == FormatToCode('Double'):
+            dval = struct.unpack('d', f.read(struct.calcsize('d')))[0]
+            print("value = {}".format(dval))
+
+        elif code == FormatToCode('String'):
+            strlen = M
+            if verbose > 1:
+                print("strlen = {}".format(strlen))
+            sval = struct.unpack('{}s'.format(strlen), f.read(strlen))[0]
+            print("value = '{}'".format(sval))
+
+        elif code == FormatToCode('IntMat'):
+            s = [0, 0]
+            s[0] = M
+            s[1] = struct.unpack('i', f.read(struct.calcsize('i')))[0]
+            print("size = [{}x{}]".format(s[0], s[1]))
+            data = np.zeros((s[0], s[1]))
+            for i in range(s[0]):
+                for j in range(s[1]):
+                    data[i][j] = struct.unpack('d', f.read(struct.calcsize('d')))[0]    #get to the "c" convention, hence the transpose
+                    if verbose > 2:
+                        print("data[{}, {}] = {}".format(i, j, data[i][j]))
+
+        elif code == FormatToCode('DoubleMat'):
+            #now read matrix
+            s = [0, 0]
+            s[0] = M
+            s[1] = struct.unpack('i', f.read(struct.calcsize('i')))[0]
+            print("size = [{}x{}]".format(s[0], s[1]))
+            if True:
+               f.read(struct.calcsize('d')*s[0]*s[1])
+            else:
+					data = np.zeros((s[0], s[1]))
+					for i in range(s[0]):
+						 for j in range(s[1]):
+							  data[i][j] = struct.unpack('d', f.read(struct.calcsize('d')))[0]    #get to the "c" convention, hence the transpose
+							  if verbose > 2:
+									print("data[{}, {}] = {}".format(i, j, data[i][j]))
+
+        else:
+            raise TypeError('OutbinRead error message: data type: {} not supported yet! ({})'.format(code, recordname))
+
+    f.close()
+#}}}
+
+def FormatToCode(format):  # {{{
+    """
+    This routine takes the format string, and hardcodes it into an integer, which
+    is passed along the record, in order to identify the nature of the dataset being
+    sent.
+    """
+
+    if format == 'Double':
+        code = 1
+    elif format == 'String':
+        code = 2
+    elif format == 'DoubleMat':
+        code = 3
+    elif format == 'IntMat':
+        code = 4
+    else:
+        raise IOError('FormatToCode error message: data type not supported yet!')
+
+    return code
+# }}}
+
+def CodeToFormat(code):  # {{{
+    """
+    This routine takes the format string, and hardcodes it into an integer, which
+    is passed along the record, in order to identify the nature of the dataset being
+    sent.
+    """
+
+    if code == 1:
+        format = 'Double'
+    elif code == 2:
+        format = 'String'
+    elif code == 3:
+        format = 'DoubleMat'
+    elif code == 4:
+		 format = 'IntMat'
+    else:
+        raise TypeError('FormatToCode error message: code {} not supported yet!'.format(code))
+
+    return format
+# }}}
+
+if __name__ == '__main__':  #{{{
+    parser = ArgumentParser(description='OutbinRead - function to read binary input file.')
+    parser.add_argument('-f', '--filin', help='name of binary input file', default='')
+    parser.add_argument('-o', '--filout', help='optional name of text output file', default='')
+    parser.add_argument('-v', '--verbose', help='optional level of output', default=0)
+    args = parser.parse_args()
+
+    OutbinRead(args.filin, args.filout, args.verbose)
+#}}}
Index: /issm/branches/trunk-dlcheng-ASE/scripts/automakererun.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/automakererun.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/automakererun.sh	(revision 27955)
@@ -0,0 +1,13 @@
+#!/bin/sh
+#
+# automakererun.sh
+# Remakes GNU Build System files.
+#
+# Currently, a wrapper for Autotools' autoreconf script.
+#
+# Run,
+#	autoreconf --help
+# for more information.
+
+cd $ISSM_DIR
+autoreconf -ivf
Index: /issm/branches/trunk-dlcheng-ASE/scripts/cloc
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/cloc	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/cloc	(revision 27955)
@@ -0,0 +1,11676 @@
+#!/usr/bin/env perl
+# cloc -- Count Lines of Code                  {{{1
+# Copyright (C) 2006-2017 Al Danial <al.danial@gmail.com>
+# First release August 2006
+#
+# Includes code from:
+#   - SLOCCount v2.26
+#     http://www.dwheeler.com/sloccount/
+#     by David Wheeler.
+#   - Regexp::Common v2013031301
+#     http://search.cpan.org/~abigail/Regexp-Common-2013031301/lib/Regexp/Common.pm
+#     by Damian Conway and Abigail.
+#   - Win32::Autoglob
+#     http://search.cpan.org/~sburke/Win32-Autoglob-1.01/Autoglob.pm
+#     by Sean M. Burke.
+#   - Algorithm::Diff
+#     http://search.cpan.org/~tyemq/Algorithm-Diff-1.1902/lib/Algorithm/Diff.pm
+#     by Tye McQueen.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details:
+# <http://www.gnu.org/licenses/gpl.txt>.
+#
+# 1}}}
+my $VERSION = "1.72";  # odd number == beta; even number == stable
+my $URL     = "github.com/AlDanial/cloc";  # 'https://' pushes header too wide
+require 5.006;
+# use modules                                  {{{1
+use warnings;
+use strict;
+use Getopt::Long;
+use File::Basename;
+use File::Temp qw { tempfile tempdir };
+use File::Find;
+use File::Path;
+use File::Spec;
+use IO::File;
+use POSIX "strftime";
+
+# Digest::MD5 isn't in the standard distribution. Use it only if installed.
+my $HAVE_Digest_MD5 = 0;
+eval "use Digest::MD5;";
+if (defined $Digest::MD5::VERSION) {
+    $HAVE_Digest_MD5 = 1;
+} else {
+    warn "Digest::MD5 not installed; will skip file uniqueness checks.\n";
+}
+
+# Time::HiRes became standard with Perl 5.8
+my $HAVE_Time_HiRes = 0;
+eval "use Time::HiRes;";
+$HAVE_Time_HiRes = 1 if defined $Time::HiRes::VERSION;
+
+my $HAVE_Rexexp_Common;
+# Regexp::Common isn't in the standard distribution.  It will
+# be installed in a temp directory if necessary.
+BEGIN {
+    if (eval "use Regexp::Common;") {
+        $HAVE_Rexexp_Common = 1;
+    } else {
+        $HAVE_Rexexp_Common = 0;
+    }
+}
+
+my $HAVE_Algorith_Diff = 0;
+# Algorithm::Diff isn't in the standard distribution.  It will
+# be installed in a temp directory if necessary.
+eval "use Algorithm::Diff qw ( sdiff ) ";
+if (defined $Algorithm::Diff::VERSION) {
+    $HAVE_Algorith_Diff = 1;
+} else {
+    Install_Algorithm_Diff();
+}
+# print "2 HAVE_Algorith_Diff = $HAVE_Algorith_Diff\n";
+# test_alg_diff($ARGV[$#ARGV - 1], $ARGV[$#ARGV]); die;
+# die "Hre=$HAVE_Rexexp_Common  Had=$HAVE_Algorith_Diff";
+
+# Uncomment next two lines when building Windows executable with perl2exe
+# or if running on a system that already has Regexp::Common.
+#use Regexp::Common;
+#$HAVE_Rexexp_Common = 1;
+
+#perl2exe_include "Regexp/Common/whitespace.pm"
+#perl2exe_include "Regexp/Common/URI.pm"
+#perl2exe_include "Regexp/Common/URI/fax.pm"
+#perl2exe_include "Regexp/Common/URI/file.pm"
+#perl2exe_include "Regexp/Common/URI/ftp.pm"
+#perl2exe_include "Regexp/Common/URI/gopher.pm"
+#perl2exe_include "Regexp/Common/URI/http.pm"
+#perl2exe_include "Regexp/Common/URI/pop.pm"
+#perl2exe_include "Regexp/Common/URI/prospero.pm"
+#perl2exe_include "Regexp/Common/URI/news.pm"
+#perl2exe_include "Regexp/Common/URI/tel.pm"
+#perl2exe_include "Regexp/Common/URI/telnet.pm"
+#perl2exe_include "Regexp/Common/URI/tv.pm"
+#perl2exe_include "Regexp/Common/URI/wais.pm"
+#perl2exe_include "Regexp/Common/CC.pm"
+#perl2exe_include "Regexp/Common/SEN.pm"
+#perl2exe_include "Regexp/Common/number.pm"
+#perl2exe_include "Regexp/Common/delimited.pm"
+#perl2exe_include "Regexp/Common/profanity.pm"
+#perl2exe_include "Regexp/Common/net.pm"
+#perl2exe_include "Regexp/Common/zip.pm"
+#perl2exe_include "Regexp/Common/comment.pm"
+#perl2exe_include "Regexp/Common/balanced.pm"
+#perl2exe_include "Regexp/Common/lingua.pm"
+#perl2exe_include "Regexp/Common/list.pm"
+#perl2exe_include "File/Glob.pm"
+
+use Text::Tabs qw { expand };
+use Cwd qw { cwd };
+use File::Glob;
+# 1}}}
+# Usage information, options processing.       {{{1
+my $ON_WINDOWS = 0;
+   $ON_WINDOWS = 1 if ($^O =~ /^MSWin/) or ($^O eq "Windows_NT");
+if ($ON_WINDOWS and $ENV{'SHELL'}) {
+    if ($ENV{'SHELL'} =~ m{^/}) {
+        $ON_WINDOWS = 0;  # make Cygwin look like Unix
+    } else {
+        $ON_WINDOWS = 1;  # MKS defines $SHELL but still acts like Windows
+    }
+}
+
+my $NN     = chr(27) . "[0m";  # normal
+   $NN     = "" if $ON_WINDOWS or !(-t STDERR); # -t STDERR:  is it a terminal?
+my $BB     = chr(27) . "[1m";  # bold
+   $BB     = "" if $ON_WINDOWS or !(-t STDERR);
+my $script = basename $0;
+my $brief_usage  = "
+                       cloc -- Count Lines of Code
+
+Usage:
+    $script [options] <file(s)/dir(s)>
+        Count physical lines of source code and comments in the given files
+        (may be archives such as compressed tarballs or zip files) and/or
+        recursively below the given directories.
+        Example:    cloc src/ include/ main.c
+
+    $script [options] --diff <set1>  <set2>
+        Compute differences of physical lines of source code and comments
+        between a pair of directories or archive files.
+        Example:    cloc --diff Python-3.5.tar.xz python-3.6/
+
+$script --help  shows full documentation on the options.
+http://$URL has numerous examples and more information.
+";
+my $usage  = "
+Usage: $script [options] <file(s)/dir(s)> | <set 1> <set 2> | <report files>
+
+ Count, or compute differences of, physical lines of source code in the
+ given files (may be archives such as compressed tarballs or zip files)
+ and/or recursively below the given directories.
+
+ ${BB}Input Options${NN}
+   --extract-with=<cmd>      This option is only needed if cloc is unable
+                             to figure out how to extract the contents of
+                             the input file(s) by itself.
+                             Use <cmd> to extract binary archive files (e.g.:
+                             .tar.gz, .zip, .Z).  Use the literal '>FILE<' as
+                             a stand-in for the actual file(s) to be
+                             extracted.  For example, to count lines of code
+                             in the input files
+                                gcc-4.2.tar.gz  perl-5.8.8.tar.gz
+                             on Unix use
+                               --extract-with='gzip -dc >FILE< | tar xf -'
+                             or, if you have GNU tar,
+                               --extract-with='tar zxf >FILE<'
+                             and on Windows use, for example:
+                               --extract-with=\"\\\"c:\\Program Files\\WinZip\\WinZip32.exe\\\" -e -o >FILE< .\"
+                             (if WinZip is installed there).
+   --list-file=<file>        Take the list of file and/or directory names to
+                             process from <file>, which has one file/directory
+                             name per line.  Only exact matches are counted;
+                             relative path names will be resolved starting from
+                             the directory where cloc is invoked.
+                             See also --exclude-list-file.
+   --vcs=<VCS>               Invoke a system call to <VCS> to obtain a list of
+                             files to work on.  If <VCS> is 'git', then will
+                             invoke 'git ls-files' to get a file list and
+                             'git submodule status' to get a list of submodules
+                             whose contents will be ignored.  If <VCS> is 'svn'
+                             then will invoke 'svn list -R'.  The primary benefit
+                             is that cloc will then skip files explicitly
+                             excluded by the versioning tool in question,
+                             ie, those in .gitignore or have the svn:ignore
+                             property.
+                             Alternatively <VCS> may be any system command
+                             that generates a list of files.
+                             Note:  cloc must be in a directory which can read
+                             the files as they are returned by <VCS>.  cloc will
+                             not download files from remote repositories.
+                             'svn list -R' may refer to a remote repository
+                             to obtain file names (and therefore may require
+                             authentication to the remote repository), but
+                             the files themselves must be local.
+   --unicode                 Check binary files to see if they contain Unicode
+                             expanded ASCII text.  This causes performance to
+                             drop noticeably.
+
+ ${BB}Processing Options${NN}
+   --autoconf                Count .in files (as processed by GNU autoconf) of
+                             recognized languages.
+   --by-file                 Report results for every source file encountered.
+   --by-file-by-lang         Report results for every source file encountered
+                             in addition to reporting by language.
+   --count-and-diff <set1> <set2>
+                             First perform direct code counts of source file(s)
+                             of <set1> and <set2> separately, then perform a diff
+                             of these.  Inputs may be pairs of files, directories,
+                             or archives.  See also --diff, --diff-alignment,
+                             --diff-timeout, --ignore-case, --ignore-whitespace.
+   --diff <set1> <set2>      Compute differences in code and comments between
+                             source file(s) of <set1> and <set2>.  The inputs
+                             may be pairs of files, directories, or archives.
+                             Use --diff-alignment to generate a list showing
+                             which file pairs where compared.  See also
+                             --count-and-diff, --diff-alignment, --diff-timeout,
+                             --ignore-case, --ignore-whitespace.
+   --diff-timeout <N>        Ignore files which take more than <N> seconds
+                             to process.  Default is 10 seconds.
+                             (Large files with many repeated lines can cause
+                             Algorithm::Diff::sdiff() to take hours.)
+   --follow-links            [Unix only] Follow symbolic links to directories
+                             (sym links to files are always followed).
+   --force-lang=<lang>[,<ext>]
+                             Process all files that have a <ext> extension
+                             with the counter for language <lang>.  For
+                             example, to count all .f files with the
+                             Fortran 90 counter (which expects files to
+                             end with .f90) instead of the default Fortran 77
+                             counter, use
+                               --force-lang=\"Fortran 90\",f
+                             If <ext> is omitted, every file will be counted
+                             with the <lang> counter.  This option can be
+                             specified multiple times (but that is only
+                             useful when <ext> is given each time).
+                             See also --script-lang, --lang-no-ext.
+   --force-lang-def=<file>   Load language processing filters from <file>,
+                             then use these filters instead of the built-in
+                             filters.  Note:  languages which map to the same
+                             file extension (for example:
+                             MATLAB/Mathematica/Objective C/MUMPS/Mercury;
+                             Pascal/PHP; Lisp/OpenCL; Lisp/Julia; Perl/Prolog)
+                             will be ignored as these require additional
+                             processing that is not expressed in language
+                             definition files.  Use --read-lang-def to define
+                             new language filters without replacing built-in
+                             filters (see also --write-lang-def).
+   --ignore-whitespace       Ignore horizontal white space when comparing files
+                             with --diff.  See also --ignore-case.
+   --ignore-case             Ignore changes in case; consider upper- and lower-
+                             case letters equivalent when comparing files with
+                             --diff.  See also --ignore-whitespace.
+   --lang-no-ext=<lang>      Count files without extensions using the <lang>
+                             counter.  This option overrides internal logic
+                             for files without extensions (where such files
+                             are checked against known scripting languages
+                             by examining the first line for #!).  See also
+                             --force-lang, --script-lang.
+   --max-file-size=<MB>      Skip files larger than <MB> megabytes when
+                             traversing directories.  By default, <MB>=100.
+                             cloc's memory requirement is roughly twenty times
+                             larger than the largest file so running with
+                             files larger than 100 MB on a computer with less
+                             than 2 GB of memory will cause problems.
+                             Note:  this check does not apply to files
+                             explicitly passed as command line arguments.
+   --original-dir            [Only effective in combination with
+                             --strip-comments]  Write the stripped files
+                             to the same directory as the original files.
+   --read-binary-files       Process binary files in addition to text files.
+                             This is usually a bad idea and should only be
+                             attempted with text files that have embedded
+                             binary data.
+   --read-lang-def=<file>    Load new language processing filters from <file>
+                             and merge them with those already known to cloc.
+                             If <file> defines a language cloc already knows
+                             about, cloc's definition will take precedence.
+                             Use --force-lang-def to over-ride cloc's
+                             definitions (see also --write-lang-def ).
+   --script-lang=<lang>,<s>  Process all files that invoke <s> as a #!
+                             scripting language with the counter for language
+                             <lang>.  For example, files that begin with
+                                #!/usr/local/bin/perl5.8.8
+                             will be counted with the Perl counter by using
+                                --script-lang=Perl,perl5.8.8
+                             The language name is case insensitive but the
+                             name of the script language executable, <s>,
+                             must have the right case.  This option can be
+                             specified multiple times.  See also --force-lang,
+                             --lang-no-ext.
+   --sdir=<dir>              Use <dir> as the scratch directory instead of
+                             letting File::Temp chose the location.  Files
+                             written to this location are not removed at
+                             the end of the run (as they are with File::Temp).
+   --skip-uniqueness         Skip the file uniqueness check.  This will give
+                             a performance boost at the expense of counting
+                             files with identical contents multiple times
+                             (if such duplicates exist).
+   --stdin-name=<file>       Give a file name to use to determine the language
+                             for standard input.  (Use - as the input name to
+                             receive source code via STDIN.)
+   --strip-comments=<ext>    For each file processed, write to the current
+                             directory a version of the file which has blank
+                             lines and comments removed.  The name of each
+                             stripped file is the original file name with
+                             .<ext> appended to it.  It is written to the
+                             current directory unless --original-dir is on.
+   --sum-reports             Input arguments are report files previously
+                             created with the --report-file option.  Makes
+                             a cumulative set of results containing the
+                             sum of data from the individual report files.
+   --unix                    Override the operating system autodetection
+                             logic and run in UNIX mode.  See also
+                             --windows, --show-os.
+   --use-sloccount           If SLOCCount is installed, use its compiled
+                             executables c_count, java_count, pascal_count,
+                             php_count, and xml_count instead of cloc's
+                             counters.  SLOCCount's compiled counters are
+                             substantially faster than cloc's and may give
+                             a performance improvement when counting projects
+                             with large files.  However, these cloc-specific
+                             features will not be available: --diff,
+                             --count-and-diff, --strip-comments, --unicode.
+   --windows                 Override the operating system autodetection
+                             logic and run in Microsoft Windows mode.
+                             See also --unix, --show-os.
+
+ ${BB}Filter Options${NN}
+   --exclude-dir=<D1>[,D2,]  Exclude the given comma separated directories
+                             D1, D2, D3, et cetera, from being scanned.  For
+                             example  --exclude-dir=.cache,test  will skip
+                             all files and subdirectories that have /.cache/
+                             or /test/ as their parent directory.
+                             Directories named .bzr, .cvs, .hg, .git, and
+                             .svn are always excluded.
+                             This option only works with individual directory
+                             names so including file path separators is not
+                             allowed.  Use --fullpath and --not-match-d=<regex>
+                             to supply a regex matching multiple subdirectories.
+   --exclude-ext=<ext1>[,<ext2>[...]]
+                             Do not count files having the given file name
+                             extensions.
+   --exclude-lang=<L1>[,L2,] Exclude the given comma separated languages
+                             L1, L2, L3, et cetera, from being counted.
+   --exclude-list-file=<file>  Ignore files and/or directories whose names
+                             appear in <file>.  <file> should have one file
+                             name per line.  Only exact matches are ignored;
+                             relative path names will be resolved starting from
+                             the directory where cloc is invoked.
+                             See also --list-file.
+   --fullpath                Modifies the behavior of --match-f, --not-match-f,
+                             and --not-match-d to include the file's path
+                             in the regex, not just the file's basename.
+                             (This does not expand each file to include its
+                             absolute path, instead it uses as much of
+                             the path as is passed in to cloc.)
+                             Note:  --match-d always looks at the full
+                             path and therefore is unaffected by --fullpath.
+   --include-lang=<L1>[,L2,] Count only the given comma separated languages
+                             L1, L2, L3, et cetera.
+   --match-d=<regex>         Only count files in directories matching the Perl
+                             regex.  For example
+                               --match-d='/(src|include)/'
+                             only counts files in directories containing
+                             /src/ or /include/.  Unlike --not-match-d,
+                             --match-f, and --not-match-f, --match-d always
+                             compares the fully qualified path against the regex.
+   --not-match-d=<regex>     Count all files except those in directories
+                             matching the Perl regex.  Only the trailing
+                             directory name is compared, for example, when
+                             counting in /usr/local/lib, only 'lib' is
+                             compared to the regex.
+                             Add --fullpath to compare parent directories to
+                             the regex.
+                             Do not include file path separators at the beginning
+                             or end of the regex.
+   --match-f=<regex>         Only count files whose basenames match the Perl
+                             regex.  For example
+                               --match-f='^[Ww]idget'
+                             only counts files that start with Widget or widget.
+                             Add --fullpath to include parent directories
+                             in the regex instead of just the basename.
+   --not-match-f=<regex>     Count all files except those whose basenames
+                             match the Perl regex.  Add --fullpath to include
+                             parent directories in the regex instead of just
+                             the basename.
+   --skip-archive=<regex>    Ignore files that end with the given Perl regular
+                             expression.  For example, if given
+                               --skip-archive='(zip|tar(\.(gz|Z|bz2|xz|7z))?)'
+                             the code will skip files that end with .zip,
+                             .tar, .tar.gz, .tar.Z, .tar.bz2, .tar.xz, and
+                             .tar.7z.
+   --skip-win-hidden         On Windows, ignore hidden files.
+
+ ${BB}Debug Options${NN}
+   --categorized=<file>      Save names of categorized files to <file>.
+   --counted=<file>          Save names of processed source files to <file>.
+   --diff-alignment=<file>   Write to <file> a list of files and file pairs
+                             showing which files were added, removed, and/or
+                             compared during a run with --diff.  This switch
+                             forces the --diff mode on.
+   --explain=<lang>          Print the filters used to remove comments for
+                             language <lang> and exit.  In some cases the
+                             filters refer to Perl subroutines rather than
+                             regular expressions.  An examination of the
+                             source code may be needed for further explanation.
+   --help                    Print this usage information and exit.
+   --found=<file>            Save names of every file found to <file>.
+   --ignored=<file>          Save names of ignored files and the reason they
+                             were ignored to <file>.
+   --print-filter-stages     Print processed source code before and after
+                             each filter is applied.
+   --show-ext[=<ext>]        Print information about all known (or just the
+                             given) file extensions and exit.
+   --show-lang[=<lang>]      Print information about all known (or just the
+                             given) languages and exit.
+   --show-os                 Print the value of the operating system mode
+                             and exit.  See also --unix, --windows.
+   -v[=<n>]                  Verbose switch (optional numeric value).
+   -verbose[=<n>]            Long form of -v.
+   --version                 Print the version of this program and exit.
+   --write-lang-def=<file>   Writes to <file> the language processing filters
+                             then exits.  Useful as a first step to creating
+                             custom language definitions (see also
+                             --force-lang-def, --read-lang-def).
+
+ ${BB}Output Options${NN}
+   --3                       Print third-generation language output.
+                             (This option can cause report summation to fail
+                             if some reports were produced with this option
+                             while others were produced without it.)
+   --by-percent  X           Instead of comment and blank line counts, show
+                             these values as percentages based on the value
+                             of X in the denominator:
+                                X = 'c'   -> # lines of code
+                                X = 'cm'  -> # lines of code + comments
+                                X = 'cb'  -> # lines of code + blanks
+                                X = 'cmb' -> # lines of code + comments + blanks
+                             For example, if using method 'c' and your code
+                             has twice as many lines of comments as lines
+                             of code, the value in the comment column will
+                             be 200%.  The code column remains a line count.
+   --csv                     Write the results as comma separated values.
+   --csv-delimiter=<C>       Use the character <C> as the delimiter for comma
+                             separated files instead of ,.  This switch forces
+   --json                    Write the results as JavaScript Object Notation
+                             (JSON) formatted output.
+   --md                      Write the results as Markdown-formatted text.
+   --out=<file>              Synonym for --report-file=<file>.
+   --progress-rate=<n>       Show progress update after every <n> files are
+                             processed (default <n>=100).  Set <n> to 0 to
+                             suppress progress output (useful when redirecting
+                             output to STDOUT).
+   --quiet                   Suppress all information messages except for
+                             the final report.
+   --report-file=<file>      Write the results to <file> instead of STDOUT.
+   --sql=<file>              Write results as SQL create and insert statements
+                             which can be read by a database program such as
+                             SQLite.  If <file> is -, output is sent to STDOUT.
+   --sql-append              Append SQL insert statements to the file specified
+                             by --sql and do not generate table creation
+                             statements.  Only valid with the --sql option.
+   --sql-project=<name>      Use <name> as the project identifier for the
+                             current run.  Only valid with the --sql option.
+   --sql-style=<style>       Write SQL statements in the given style instead
+                             of the default SQLite format.  Currently, the
+                             only style option is Oracle.
+   --sum-one                 For plain text reports, show the SUM: output line
+                             even if only one input file is processed.
+   --xml                     Write the results in XML.
+   --xsl=<file>              Reference <file> as an XSL stylesheet within
+                             the XML output.  If <file> is 1 (numeric one),
+                             writes a default stylesheet, cloc.xsl (or
+                             cloc-diff.xsl if --diff is also given).
+                             This switch forces --xml on.
+   --yaml                    Write the results in YAML.
+
+";
+#  Help information for options not yet implemented:
+#  --inline                  Process comments that appear at the end
+#                            of lines containing code.
+#  --html                    Create HTML files of each input file showing
+#                            comment and code lines in different colors.
+
+$| = 1;  # flush STDOUT
+my $start_time = get_time();
+my (
+    $opt_categorized          ,
+    $opt_found                ,
+    @opt_force_lang           ,
+    $opt_lang_no_ext          ,
+    @opt_script_lang          ,
+    $opt_count_diff           ,
+    $opt_diff                 ,
+    $opt_diff_alignment       ,
+    $opt_diff_timeout         ,
+    $opt_html                 ,
+    $opt_ignored              ,
+    $opt_counted              ,
+    $opt_show_ext             ,
+    $opt_show_lang            ,
+    $opt_progress_rate        ,
+    $opt_print_filter_stages  ,
+    $opt_v                    ,
+    $opt_vcs                  ,
+    $opt_version              ,
+    $opt_exclude_lang         ,
+    $opt_exclude_list_file    ,
+    $opt_exclude_dir          ,
+    $opt_explain              ,
+    $opt_include_lang         ,
+    $opt_force_lang_def       ,
+    $opt_read_lang_def        ,
+    $opt_write_lang_def       ,
+    $opt_strip_comments       ,
+    $opt_original_dir         ,
+    $opt_quiet                ,
+    $opt_report_file          ,
+    $opt_sdir                 ,
+    $opt_sum_reports          ,
+    $opt_unicode              ,
+    $opt_no3                  ,   # accept it but don't use it
+    $opt_3                    ,
+    $opt_extract_with         ,
+    $opt_by_file              ,
+    $opt_by_file_by_lang      ,
+    $opt_by_percent           ,
+    $opt_xml                  ,
+    $opt_xsl                  ,
+    $opt_yaml                 ,
+    $opt_csv                  ,
+    $opt_csv_delimiter        ,
+    $opt_fullpath             ,
+    $opt_json                 ,
+    $opt_md                   ,
+    $opt_match_f              ,
+    $opt_not_match_f          ,
+    $opt_match_d              ,
+    $opt_not_match_d          ,
+    $opt_skip_uniqueness      ,
+    $opt_list_file            ,
+    $opt_help                 ,
+    $opt_skip_win_hidden      ,
+    $opt_read_binary_files    ,
+    $opt_sql                  ,
+    $opt_sql_append           ,
+    $opt_sql_project          ,
+    $opt_sql_style            ,
+    $opt_inline               ,
+    $opt_exclude_ext          ,
+    $opt_ignore_whitespace    ,
+    $opt_ignore_case          ,
+    $opt_follow_links         ,
+    $opt_autoconf             ,
+    $opt_sum_one              ,
+    $opt_stdin_name           ,
+    $opt_force_on_windows     ,
+    $opt_force_on_unix        ,   # actually forces !$ON_WINDOWS
+    $opt_show_os              ,
+    $opt_skip_archive         ,
+    $opt_max_file_size        ,   # in MB
+    $opt_use_sloccount        ,
+   );
+my $getopt_success = GetOptions(
+   "by_file|by-file"                         => \$opt_by_file             ,
+   "by_file_by_lang|by-file-by-lang"         => \$opt_by_file_by_lang     ,
+   "categorized=s"                           => \$opt_categorized         ,
+   "counted=s"                               => \$opt_counted             ,
+   "include_lang|include-lang=s"             => \$opt_include_lang        ,
+   "exclude_lang|exclude-lang=s"             => \$opt_exclude_lang        ,
+   "exclude_dir|exclude-dir=s"               => \$opt_exclude_dir         ,
+   "exclude_list_file|exclude-list-file=s"   => \$opt_exclude_list_file   ,
+   "explain=s"                               => \$opt_explain             ,
+   "extract_with|extract-with=s"             => \$opt_extract_with        ,
+   "found=s"                                 => \$opt_found               ,
+   "count_and_diff|count-and-diff"           => \$opt_count_diff          ,
+   "diff"                                    => \$opt_diff                ,
+   "diff-alignment|diff_alignment=s"         => \$opt_diff_alignment      ,
+   "diff-timeout|diff_timeout=i"             => \$opt_diff_timeout        ,
+   "html"                                    => \$opt_html                ,
+   "ignored=s"                               => \$opt_ignored             ,
+   "quiet"                                   => \$opt_quiet               ,
+   "force_lang_def|force-lang-def=s"         => \$opt_force_lang_def      ,
+   "read_lang_def|read-lang-def=s"           => \$opt_read_lang_def       ,
+   "show_ext|show-ext:s"                     => \$opt_show_ext            ,
+   "show_lang|show-lang:s"                   => \$opt_show_lang           ,
+   "progress_rate|progress-rate=i"           => \$opt_progress_rate       ,
+   "print_filter_stages|print-filter-stages" => \$opt_print_filter_stages ,
+   "report_file|report-file=s"               => \$opt_report_file         ,
+   "out=s"                                   => \$opt_report_file         ,
+   "script_lang|script-lang=s"               => \@opt_script_lang         ,
+   "sdir=s"                                  => \$opt_sdir                ,
+   "skip_uniqueness|skip-uniqueness"         => \$opt_skip_uniqueness     ,
+   "strip_comments|strip-comments=s"         => \$opt_strip_comments      ,
+   "original_dir|original-dir"               => \$opt_original_dir        ,
+   "sum_reports|sum-reports"                 => \$opt_sum_reports         ,
+   "unicode"                                 => \$opt_unicode             ,
+   "no3"                                     => \$opt_no3                 ,  # ignored
+   "3"                                       => \$opt_3                   ,
+   "v|verbose:i"                             => \$opt_v                   ,
+   "vcs=s"                                   => \$opt_vcs                 ,
+   "version"                                 => \$opt_version             ,
+   "write_lang_def|write-lang-def=s"         => \$opt_write_lang_def      ,
+   "xml"                                     => \$opt_xml                 ,
+   "xsl=s"                                   => \$opt_xsl                 ,
+   "force_lang|force-lang=s"                 => \@opt_force_lang          ,
+   "lang_no_ext|lang-no-ext=s"               => \$opt_lang_no_ext         ,
+   "yaml"                                    => \$opt_yaml                ,
+   "csv"                                     => \$opt_csv                 ,
+   "csv_delimeter|csv-delimiter=s"           => \$opt_csv_delimiter       ,
+   "json"                                    => \$opt_json                ,
+   "md"                                      => \$opt_md                  ,
+   "fullpath"                                => \$opt_fullpath            ,
+   "match_f|match-f=s"                       => \$opt_match_f             ,
+   "not_match_f|not-match-f=s"               => \$opt_not_match_f         ,
+   "match_d|match-d=s"                       => \$opt_match_d             ,
+   "not_match_d|not-match-d=s"               => \$opt_not_match_d         ,
+   "list_file|list-file=s"                   => \$opt_list_file           ,
+   "help"                                    => \$opt_help                ,
+   "skip_win_hidden|skip-win-hidden"         => \$opt_skip_win_hidden     ,
+   "read_binary_files|read-binary-files"     => \$opt_read_binary_files   ,
+   "sql=s"                                   => \$opt_sql                 ,
+   "sql_project|sql-project=s"               => \$opt_sql_project         ,
+   "sql_append|sql-append"                   => \$opt_sql_append          ,
+   "sql_style|sql-style=s"                   => \$opt_sql_style           ,
+   "inline"                                  => \$opt_inline              ,
+   "exclude_ext|exclude-ext=s"               => \$opt_exclude_ext         ,
+   "ignore_whitespace|ignore-whitespace"     => \$opt_ignore_whitespace   ,
+   "ignore_case|ignore-case"                 => \$opt_ignore_case         ,
+   "follow_links|follow-links"               => \$opt_follow_links        ,
+   "autoconf"                                => \$opt_autoconf            ,
+   "sum_one|sum-one"                         => \$opt_sum_one             ,
+   "by_percent|by-percent=s"                 => \$opt_by_percent          ,
+   "stdin_name|stdin-name=s"                 => \$opt_stdin_name          ,
+   "windows"                                 => \$opt_force_on_windows    ,
+   "unix"                                    => \$opt_force_on_unix       ,
+   "show_os|show-os"                         => \$opt_show_os             ,
+   "skip_archive|skip-archive=s"             => \$opt_skip_archive        ,
+   "max_file_size|max-file-size=i"           => \$opt_max_file_size       ,
+   "use_sloccount|use-sloccount"             => \$opt_use_sloccount       ,
+  );
+$opt_by_file  = 1 if defined  $opt_by_file_by_lang;
+my $CLOC_XSL = "cloc.xsl"; # created with --xsl
+   $CLOC_XSL = "cloc-diff.xsl" if $opt_diff;
+die "\n" unless $getopt_success;
+print $usage and exit if $opt_help;
+my %Exclude_Language = ();
+   %Exclude_Language = map { $_ => 1 } split(/,/, $opt_exclude_lang)
+        if $opt_exclude_lang;
+my %Exclude_Dir      = ();
+   %Exclude_Dir      = map { $_ => 1 } split(/,/, $opt_exclude_dir )
+        if $opt_exclude_dir ;
+die unless exclude_dir_validates(\%Exclude_Dir);
+my %Include_Language = ();
+   %Include_Language = map { $_ => 1 } split(/,/, $opt_include_lang)
+        if $opt_include_lang;
+# Forcibly exclude .svn, .cvs, .hg, .git, .bzr directories.  The contents of these
+# directories often conflict with files of interest.
+$opt_exclude_dir       = 1;
+$Exclude_Dir{".svn"}   = 1;
+$Exclude_Dir{".cvs"}   = 1;
+$Exclude_Dir{".hg"}    = 1;
+$Exclude_Dir{".git"}   = 1;
+$Exclude_Dir{".bzr"}   = 1;
+$opt_count_diff        = defined $opt_count_diff ? 1 : 0;
+$opt_diff              = 1  if $opt_diff_alignment;
+$opt_exclude_ext       = "" unless $opt_exclude_ext;
+$opt_ignore_whitespace = 0  unless $opt_ignore_whitespace;
+$opt_ignore_case       = 0  unless $opt_ignore_case;
+$opt_lang_no_ext       = 0  unless $opt_lang_no_ext;
+$opt_follow_links      = 0  unless $opt_follow_links;
+$opt_diff_timeout      =10  unless $opt_diff_timeout;
+$opt_csv               = 1  if $opt_csv_delimiter;
+$ON_WINDOWS            = 1  if $opt_force_on_windows;
+$ON_WINDOWS            = 0  if $opt_force_on_unix;
+$opt_max_file_size     = 100 unless $opt_max_file_size;
+my $HAVE_SLOCCOUNT_c_count = 0;
+if (!$ON_WINDOWS and $opt_use_sloccount) {
+    # Only bother doing this kludgey test is user explicitly wants
+    # to use SLOCCount.  Debian based systems will hang if just doing
+    #  external_utility_exists("c_count")
+    # if c_count is in $PATH; c_count expects to have input.
+    $HAVE_SLOCCOUNT_c_count = external_utility_exists("c_count /bin/sh");
+}
+if ($opt_use_sloccount) {
+    if (!$HAVE_SLOCCOUNT_c_count) {
+        warn "c_count could not be found; ignoring --use-sloccount\n";
+        $opt_use_sloccount = 0;
+    } else {
+        warn "Using c_count, php_count, xml_count, pascal_count from SLOCCount\n";
+        warn "--diff is disabled with --use-sloccount\n" if $opt_diff;
+        warn "--count-and-diff is disabled with --use-sloccount\n" if $opt_count_diff;
+        warn "--unicode is disabled with --use-sloccount\n" if $opt_unicode;
+        warn "--strip-comments is disabled with --use-sloccount\n" if $opt_strip_comments;
+        $opt_diff           = 0;
+        $opt_count_diff     = undef;
+        $opt_unicode        = 0;
+        $opt_strip_comments = 0;
+    }
+}
+
+my @COUNT_DIFF_ARGV        = undef;
+my $COUNT_DIFF_report_file = undef;
+if ($opt_count_diff) {
+    die "--count-and-diff requires two arguments; got ", scalar @ARGV, "\n"
+        if scalar @ARGV != 2;
+    # prefix with a dummy term so that $opt_count_diff is the
+    # index into @COUNT_DIFF_ARGV to work on at each pass
+    @COUNT_DIFF_ARGV = (undef, $ARGV[0],
+                               $ARGV[1],
+                              [$ARGV[0], $ARGV[1]]);  # 3rd pass: diff them
+    $COUNT_DIFF_report_file = $opt_report_file if $opt_report_file;
+}
+
+# Options defaults:
+$opt_quiet         =   1 if ($opt_md or $opt_json) and !defined $opt_report_file;
+$opt_progress_rate = 100 unless defined $opt_progress_rate;
+$opt_progress_rate =   0 if     defined $opt_quiet;
+if (!defined $opt_v) {
+    $opt_v  = 0;
+} elsif (!$opt_v) {
+    $opt_v  = 1;
+}
+if (defined $opt_xsl) {
+    $opt_xsl = $CLOC_XSL if $opt_xsl eq "1";
+    $opt_xml = 1;
+}
+my $skip_generate_report = 0;
+$opt_sql_style = 0 unless defined $opt_sql_style;
+$opt_sql = 0 unless $opt_sql_style or defined $opt_sql;
+if ($opt_sql eq "-" || $opt_sql eq "1") { # stream SQL output to STDOUT
+    $opt_quiet            = 1;
+    $skip_generate_report = 1;
+    $opt_by_file          = 1;
+    $opt_sum_reports      = 0;
+    $opt_progress_rate    = 0;
+} elsif ($opt_sql)  { # write SQL output to a file
+    $opt_by_file          = 1;
+    $skip_generate_report = 1;
+    $opt_sum_reports      = 0;
+}
+if ($opt_sql_style) {
+    $opt_sql_style = lc $opt_sql_style;
+    if (!grep { lc $_ eq $opt_sql_style } qw ( Oracle )) {
+        die "'$opt_sql_style' is not a recognized SQL style.\n";
+    }
+}
+$opt_by_percent = '' unless defined $opt_by_percent;
+if ($opt_by_percent and $opt_by_percent !~ m/^(c|cm|cb|cmb)$/i) {
+    die "--by-percent must be either 'c', 'cm', 'cb', or 'cmb'\n";
+}
+$opt_by_percent = lc $opt_by_percent;
+
+if (defined $opt_vcs) {
+    if      ($opt_vcs eq "git") {
+        $opt_vcs = "git ls-files";
+        my @submodules = invoke_generator('git submodule status');
+        foreach my $SM (@submodules) {
+            $SM =~ s/^\s+//;        # may have leading space
+            $SM =~ s/\(\S+\)\s*$//; # may end with something like (heads/master)
+			my ($checksum, $dir) = split(' ', $SM, 2);
+            $dir =~ s/\s+$//;
+            $Exclude_Dir{$dir} = 1;
+        }
+    } elsif ($opt_vcs eq "svn") {
+        $opt_vcs = "svn list -R";
+    }
+}
+
+die $brief_usage unless defined $opt_version         or
+                        defined $opt_show_lang       or
+                        defined $opt_show_ext        or
+                        defined $opt_show_os         or
+                        defined $opt_write_lang_def  or
+                        defined $opt_list_file       or
+                        defined $opt_vcs             or
+                        defined $opt_xsl             or
+                        defined $opt_explain         or
+                        scalar @ARGV >= 1;
+die "--diff requires two arguments; got ", scalar @ARGV, "\n"
+    if $opt_diff and scalar @ARGV != 2;
+if ($opt_version) {
+    printf "$VERSION\n";
+    exit;
+}
+# 1}}}
+# Step 1:  Initialize global constants.        {{{1
+#
+my $nFiles_Found = 0;  # updated in make_file_list
+my (%Language_by_Extension, %Language_by_Script,
+    %Filters_by_Language, %Not_Code_Extension, %Not_Code_Filename,
+    %Language_by_File, %Scale_Factor, %Known_Binary_Archives,
+    %EOL_Continuation_re,
+   );
+my $ALREADY_SHOWED_HEADER = 0;
+my $ALREADY_SHOWED_XML_SECTION = 0;
+my %Error_Codes = ( 'Unable to read'                => -1,
+                    'Neither file nor directory'    => -2,
+                    'Diff error (quoted comments?)' => -3,
+                    'Diff error, exceeded timeout'  => -4,
+                  );
+if ($opt_force_lang_def) {
+    # replace cloc's definitions
+    read_lang_def(
+        $opt_force_lang_def    , #        Sample values:
+        \%Language_by_Extension, # Language_by_Extension{f}    = 'Fortran 77'
+        \%Language_by_Script   , # Language_by_Script{sh}      = 'Bourne Shell'
+        \%Language_by_File     , # Language_by_File{makefile}  = 'make'
+        \%Filters_by_Language  , # Filters_by_Language{Bourne Shell}[0] =
+                                 #      [ 'remove_matches' , '^\s*#'  ]
+        \%Not_Code_Extension   , # Not_Code_Extension{jpg}     = 1
+        \%Not_Code_Filename    , # Not_Code_Filename{README}   = 1
+        \%Scale_Factor         , # Scale_Factor{Perl}          = 4.0
+        \%EOL_Continuation_re  , # EOL_Continuation_re{C++}    = '\\$'
+        );
+} else {
+    set_constants(               #
+        \%Language_by_Extension, # Language_by_Extension{f}    = 'Fortran 77'
+        \%Language_by_Script   , # Language_by_Script{sh}      = 'Bourne Shell'
+        \%Language_by_File     , # Language_by_File{makefile}  = 'make'
+        \%Filters_by_Language  , # Filters_by_Language{Bourne Shell}[0] =
+                                 #      [ 'remove_matches' , '^\s*#'  ]
+        \%Not_Code_Extension   , # Not_Code_Extension{jpg}     = 1
+        \%Not_Code_Filename    , # Not_Code_Filename{README}   = 1
+        \%Scale_Factor         , # Scale_Factor{Perl}          = 4.0
+        \%Known_Binary_Archives, # Known_Binary_Archives{.tar} = 1
+        \%EOL_Continuation_re  , # EOL_Continuation_re{C++}    = '\\$'
+        );
+}
+if ($opt_read_lang_def) {
+    # augment cloc's definitions (keep cloc's where there are overlaps)
+    merge_lang_def(
+        $opt_read_lang_def     , #        Sample values:
+        \%Language_by_Extension, # Language_by_Extension{f}    = 'Fortran 77'
+        \%Language_by_Script   , # Language_by_Script{sh}      = 'Bourne Shell'
+        \%Language_by_File     , # Language_by_File{makefile}  = 'make'
+        \%Filters_by_Language  , # Filters_by_Language{Bourne Shell}[0] =
+                                 #      [ 'remove_matches' , '^\s*#'  ]
+        \%Not_Code_Extension   , # Not_Code_Extension{jpg}     = 1
+        \%Not_Code_Filename    , # Not_Code_Filename{README}   = 1
+        \%Scale_Factor         , # Scale_Factor{Perl}          = 4.0
+        \%EOL_Continuation_re  , # EOL_Continuation_re{C++}    = '\\$'
+        );
+}
+if ($opt_lang_no_ext and !defined $Filters_by_Language{$opt_lang_no_ext}) {
+    die_unknown_lang($opt_lang_no_ext, "--lang-no-ext")
+}
+check_scale_existence(\%Filters_by_Language, \%Language_by_Extension,
+                      \%Scale_Factor);
+
+# Process command line provided extension-to-language mapping overrides.
+# Make a hash of known languages in lower case for easier matching.
+my %Recognized_Language_lc = (); # key = language name in lc, value = true name
+foreach my $language (keys %Filters_by_Language) {
+    my $lang_lc = lc $language;
+    $Recognized_Language_lc{$lang_lc} = $language;
+}
+my %Forced_Extension = (); # file name extensions which user wants to count
+my $All_One_Language = 0;  # set to !0 if --force-lang's <ext> is missing
+foreach my $pair (@opt_force_lang) {
+    my ($lang, $extension) = split(',', $pair);
+    my $lang_lc = lc $lang;
+    if (defined $extension) {
+        $Forced_Extension{$extension} = $lang;
+
+        die_unknown_lang($lang, "--force-lang")
+            unless $Recognized_Language_lc{$lang_lc};
+
+        $Language_by_Extension{$extension} = $Recognized_Language_lc{$lang_lc};
+    } else {
+        # the scary case--count everything as this language
+        $All_One_Language = $Recognized_Language_lc{$lang_lc};
+    }
+}
+
+foreach my $pair (@opt_script_lang) {
+    my ($lang, $script_name) = split(',', $pair);
+    my $lang_lc = lc $lang;
+    if (!defined $script_name) {
+        die "The --script-lang option requires a comma separated pair of ".
+            "strings.\n";
+    }
+
+    die_unknown_lang($lang, "--script-lang")
+        unless $Recognized_Language_lc{$lang_lc};
+
+    $Language_by_Script{$script_name} = $Recognized_Language_lc{$lang_lc};
+}
+
+# If user provided file extensions to ignore, add these to
+# the exclusion list.
+foreach my $ext (map { $_ => 1 } split(/,/, $opt_exclude_ext ) ) {
+    $ext = lc $ext if $ON_WINDOWS;
+    $Not_Code_Extension{$ext} = 1;
+}
+
+# If SQL or --by-file output is requested, keep track of directory names
+# generated by File::Temp::tempdir and used to temporarily hold the results
+# of compressed archives.  Contents of the SQL table 't' will be much
+# cleaner if these meaningless directory names are stripped from the front
+# of files pulled from the archives.
+my %TEMP_DIR = ();
+my $TEMP_OFF =  0;  # Needed for --sdir; keep track of the number of
+                    # scratch directories made in this run to avoid
+                    # file overwrites by multiple extractions to same
+                    # sdir.
+# Also track locations where temporary installations, if necessary, of
+# Algorithm::Diff and/or Regexp::Common are done.  Make sure these
+# directories are not counted as inputs (ref bug #80 2012-11-23).
+my %TEMP_INST = ();
+
+# invert %Language_by_Script hash to get an easy-to-look-up list of known
+# scripting languages
+my %Script_Language = map { $_ => 1 } values %Language_by_Script ;
+# 1}}}
+# Step 2:  Early exits for display, summation. {{{1
+#
+print_extension_info(   $opt_show_ext     ) if defined $opt_show_ext ;
+print_language_info(    $opt_show_lang, '') if defined $opt_show_lang;
+print_language_filters( $opt_explain      ) if defined $opt_explain  ;
+exit if (defined $opt_show_ext)  or
+        (defined $opt_show_lang) or
+        (defined $opt_explain);
+
+Top_of_Processing_Loop:
+# Sorry, coding purists.  Using a goto to implement --count-and-diff
+# which has to do three passes over the main code, starting with
+# a clean slate each time.
+if ($opt_count_diff) {
+    @ARGV = ( $COUNT_DIFF_ARGV[ $opt_count_diff ] );
+    if ($opt_count_diff == 3) {
+        $opt_diff = 1;
+        @ARGV = @{$COUNT_DIFF_ARGV[ $opt_count_diff ]}; # last arg is list of list
+    }
+    if ($opt_report_file) {
+        # Instead of just one output file, will have three.
+        # Keep their names unique otherwise results are clobbered.
+        if ($opt_count_diff == 3) {
+            $opt_report_file = $COUNT_DIFF_report_file . ".diff.$ARGV[0].$ARGV[1]";
+        } else {
+            $opt_report_file = $COUNT_DIFF_report_file . "." .  $ARGV[0];
+        }
+    } else {
+        # STDOUT; print a header showing what it's working on
+        if ($opt_count_diff == 3) {
+            print "\ndiff $ARGV[0] $ARGV[1]::\n";
+        } else {
+            print "\n" if $opt_count_diff > 1;
+            print "$ARGV[0]::\n";
+        }
+    }
+    $ALREADY_SHOWED_HEADER      = 0;
+    $ALREADY_SHOWED_XML_SECTION = 0;
+}
+
+#print "Before glob have [", join(",", @ARGV), "]\n";
+@ARGV = windows_glob(@ARGV) if $ON_WINDOWS;
+#print "after  glob have [", join(",", @ARGV), "]\n";
+
+# filter out archive files if requested to do so
+if (defined $opt_skip_archive) {
+    my @non_archive = ();
+    foreach my $candidate (@ARGV) {
+        if ($candidate !~ m/${opt_skip_archive}$/) {
+            push @non_archive, $candidate;
+
+        }
+    }
+    @ARGV = @non_archive;
+}
+
+if ($opt_sum_reports and $opt_diff) {
+    my @results = ();
+    if ($opt_list_file) { # read inputs from the list file
+        my @list = read_list_file($opt_list_file);
+        @results = combine_diffs(\@list);
+    } elsif ($opt_vcs) { # read inputs from the VCS generator
+        my @list = invoke_generator($opt_vcs, \@ARGV);
+        @results = combine_diffs(\@list);
+    } else { # get inputs from the command line
+        @results = combine_diffs(\@ARGV);
+    }
+    if ($opt_report_file) {
+        write_file($opt_report_file, @results);
+    } else {
+        print "\n", join("\n", @results), "\n";
+    }
+    exit;
+}
+if ($opt_sum_reports) {
+    my %Results = ();
+    foreach my $type( "by language", "by report file" ) {
+        my $found_lang = undef;
+        if ($opt_list_file or $opt_vcs) {
+            # read inputs from the list file
+            my @list;
+            if ($opt_vcs) {
+                @list = invoke_generator($opt_vcs, \@ARGV);
+            } else {
+                @list = read_list_file($opt_list_file);
+            }
+            $found_lang = combine_results(\@list,
+                                           $type,
+                                          \%{$Results{ $type }},
+                                          \%Filters_by_Language );
+        } else { # get inputs from the command line
+            $found_lang = combine_results(\@ARGV,
+                                           $type,
+                                          \%{$Results{ $type }},
+                                          \%Filters_by_Language );
+        }
+        next unless %Results;
+        my $end_time = get_time();
+        my @results  = generate_report($VERSION, $end_time - $start_time,
+                                       $type,
+                                      \%{$Results{ $type }}, \%Scale_Factor);
+        if ($opt_report_file) {
+            my $ext  = ".lang";
+               $ext  = ".file" unless $type eq "by language";
+            next if !$found_lang and  $ext  eq ".lang";
+            write_file($opt_report_file . $ext, @results);
+        } else {
+            print "\n", join("\n", @results), "\n";
+        }
+    }
+    exit;
+}
+if ($opt_write_lang_def) {
+    write_lang_def($opt_write_lang_def   ,
+                  \%Language_by_Extension,
+                  \%Language_by_Script   ,
+                  \%Language_by_File     ,
+                  \%Filters_by_Language  ,
+                  \%Not_Code_Extension   ,
+                  \%Not_Code_Filename    ,
+                  \%Scale_Factor         ,
+                  \%EOL_Continuation_re  ,
+                  );
+    exit;
+}
+if ($opt_show_os) {
+    if ($ON_WINDOWS) {
+        print "Windows\n";
+    } else {
+        print "UNIX\n";
+    }
+    exit;
+}
+# 1}}}
+# Step 3:  Create a list of files to consider. {{{1
+#  a) If inputs are binary archives, first cd to a temp
+#     directory, expand the archive with the user-given
+#     extraction tool, then add the temp directory to
+#     the list of dirs to process.
+#  b) Create a list of every file that might contain source
+#     code.  Ignore binary files, zero-sized files, and
+#     any file in a directory the user says to exclude.
+#  c) Determine the language for each file in the list.
+#
+my @binary_archive = ();
+my $cwd            = cwd();
+if ($opt_extract_with) {
+#print "cwd main = [$cwd]\n";
+    my @extract_location = ();
+    foreach my $bin_file (@ARGV) {
+        my $extract_dir = undef;
+        if ($opt_sdir) {
+            ++$TEMP_OFF;
+            $extract_dir = "$opt_sdir/$TEMP_OFF";
+            File::Path::rmtree($extract_dir) if     is_dir($extract_dir);
+            File::Path::mkpath($extract_dir) unless is_dir($extract_dir);
+        } else {
+            $extract_dir = tempdir( CLEANUP => 1 );  # 1 = delete on exit
+        }
+        $TEMP_DIR{ $extract_dir } = 1 if $opt_sql or $opt_by_file;
+        print "mkdir $extract_dir\n"  if $opt_v;
+        print "cd    $extract_dir\n"  if $opt_v;
+        chdir $extract_dir;
+        my $bin_file_full_path = "";
+        if (File::Spec->file_name_is_absolute( $bin_file )) {
+            $bin_file_full_path = $bin_file;
+#print "bin_file_full_path (was ful) = [$bin_file_full_path]\n";
+        } else {
+            $bin_file_full_path = File::Spec->catfile( $cwd, $bin_file );
+#print "bin_file_full_path (was rel) = [$bin_file_full_path]\n";
+        }
+        my     $extract_cmd = uncompress_archive_cmd($bin_file_full_path);
+        print  $extract_cmd, "\n" if $opt_v;
+        system $extract_cmd;
+        push @extract_location, $extract_dir;
+        chdir $cwd;
+    }
+    # It is possible that the binary archive itself contains additional
+    # files compressed the same way (true for Java .ear files).  Go
+    # through all the files that were extracted, see if they are binary
+    # archives and try to extract them.  Lather, rinse, repeat.
+    my $binary_archives_exist = 1;
+    my $count_binary_archives = 0;
+    my $previous_count        = 0;
+    my $n_pass                = 0;
+    while ($binary_archives_exist) {
+        @binary_archive = ();
+        foreach my $dir (@extract_location) {
+            find(\&archive_files, $dir);  # populates global @binary_archive
+        }
+        foreach my $archive (@binary_archive) {
+            my $extract_dir = undef;
+            if ($opt_sdir) {
+                ++$TEMP_OFF;
+                $extract_dir = "$opt_sdir/$TEMP_OFF";
+                File::Path::rmtree($extract_dir) if     is_dir($extract_dir);
+                File::Path::mkpath($extract_dir) unless is_dir($extract_dir);
+            } else {
+                $extract_dir = tempdir( CLEANUP => 1 );  # 1 = delete on exit
+            }
+            $TEMP_DIR{ $extract_dir } = 1 if $opt_sql or $opt_by_file;
+            print "mkdir $extract_dir\n"  if $opt_v;
+            print "cd    $extract_dir\n"  if $opt_v;
+            chdir  $extract_dir;
+
+            my     $extract_cmd = uncompress_archive_cmd($archive);
+            print  $extract_cmd, "\n" if $opt_v;
+            system $extract_cmd;
+            push @extract_location, $extract_dir;
+            unlink $archive;  # otherwise will be extracting it forever
+        }
+        $count_binary_archives = scalar @binary_archive;
+        if ($count_binary_archives == $previous_count) {
+            $binary_archives_exist = 0;
+        }
+        $previous_count = $count_binary_archives;
+    }
+    chdir $cwd;
+
+    @ARGV = @extract_location;
+} else {
+    # see if any of the inputs need to be auto-uncompressed &/or expanded
+    my @updated_ARGS = ();
+    foreach my $Arg (@ARGV) {
+        if (is_dir($Arg)) {
+            push @updated_ARGS, $Arg;
+            next;
+        }
+        my $full_path = "";
+        if (File::Spec->file_name_is_absolute( $Arg )) {
+            $full_path = $Arg;
+        } else {
+            $full_path = File::Spec->catfile( $cwd, $Arg );
+        }
+#print "full_path = [$full_path]\n";
+        my $extract_cmd = uncompress_archive_cmd($full_path);
+        if ($extract_cmd) {
+            my $extract_dir = undef;
+            if ($opt_sdir) {
+                ++$TEMP_OFF;
+                $extract_dir = "$opt_sdir/$TEMP_OFF";
+                File::Path::rmtree($extract_dir) if     is_dir($extract_dir);
+                File::Path::mkpath($extract_dir) unless is_dir($extract_dir);
+            } else {
+                $extract_dir = tempdir( CLEANUP => 1 ); # 1 = delete on exit
+            }
+            $TEMP_DIR{ $extract_dir } = 1 if $opt_sql or $opt_by_file;
+            print "mkdir $extract_dir\n"  if $opt_v;
+            print "cd    $extract_dir\n"  if $opt_v;
+            chdir  $extract_dir;
+            print  $extract_cmd, "\n" if $opt_v;
+            system $extract_cmd;
+            push @updated_ARGS, $extract_dir;
+            chdir $cwd;
+        } else {
+            # this is a conventional, uncompressed, unarchived file
+            # or a directory; keep as-is
+            push @updated_ARGS, $Arg;
+        }
+    }
+    @ARGV = @updated_ARGS;
+
+    # make sure we're not counting any directory containing
+    # temporary installations of Regexp::Common, Algorithm::Diff
+    foreach my $d (sort keys %TEMP_INST) {
+        foreach my $a (@ARGV) {
+            next unless is_dir($a);
+            if ($opt_v > 2) {
+                printf "Comparing %s (location of %s) to input [%s]\n",
+                        $d, $TEMP_INST{$d}, $a;
+            }
+            if ($a eq $d) {
+                die "File::Temp::tempdir chose directory ",
+                    $d, " to install ", $TEMP_INST{$d}, " but this ",
+                    "matches one of your input directories.  Rerun ",
+                    "with --sdir and supply a different temporary ",
+                    "directory for ", $TEMP_INST{$d}, "\n";
+            }
+        }
+    }
+}
+# 1}}}
+my @Errors    = ();
+my @file_list = ();  # global variable updated in files()
+my %Ignored   = ();  # files that are not counted (language not recognized or
+                     # problems reading the file)
+my @Lines_Out = ();
+if ($opt_diff) {
+# Step 4:  Separate code from non-code files.  {{{1
+my @fh            = ();
+my @files_for_set = ();
+# make file lists for each separate argument
+for (my $i = 0; $i < scalar @ARGV; $i++) {
+    push @fh,
+         make_file_list([ $ARGV[$i] ], \%Error_Codes, \@Errors, \%Ignored);
+    @{$files_for_set[$i]} = @file_list;
+    if ($opt_exclude_list_file) {
+        # note: process_exclude_list_file() references global @file_list
+        process_exclude_list_file($opt_exclude_list_file,
+                                 \%Exclude_Dir,
+                                 \%Ignored);
+    }
+    @file_list = ();
+}
+# 1}}}
+# Step 5:  Remove duplicate files.             {{{1
+#
+my %Language           = ();
+my %unique_source_file = ();
+my $n_set = 0;
+foreach my $FH (@fh) {  # loop over each pair of file sets
+    ++$n_set;
+    remove_duplicate_files($FH,
+                               \%{$Language{$FH}}               ,
+                               \%{$unique_source_file{$FH}}     ,
+                          \%Error_Codes                         ,
+                               \@Errors                         ,
+                               \%Ignored                        );
+    printf "%2d: %8d unique file%s.                          \r",
+        $n_set,
+        plural_form(scalar keys %unique_source_file)
+        unless $opt_quiet;
+}
+# 1}}}
+# Step 6:  Count code, comments, blank lines.  {{{1
+#
+my %Results_by_Language = ();
+my %Results_by_File     = ();
+my %Delta_by_Language   = ();
+my %Delta_by_File       = ();
+
+foreach (my $F = 0; $F < scalar @fh - 1; $F++) {
+    # loop over file sets; do diff between set $F to $F+1
+
+    my $nCounted = 0;
+
+    my @file_pairs    = ();
+    my @files_added   = ();
+    my @files_removed = ();
+
+    align_by_pairs(\%{$unique_source_file{$fh[$F  ]}}    , # in
+                   \%{$unique_source_file{$fh[$F+1]}}    , # in
+                   \@files_added                         , # out
+                   \@files_removed                       , # out
+                   \@file_pairs                          , # out
+                   );
+    my %already_counted = (); # already_counted{ filename } = 1
+
+    if (!@file_pairs) {
+        # Special case where all files were either added or deleted.
+        # In this case, one of these arrays will be empty:
+        #   @files_added, @files_removed
+        # so loop over both to cover both cases.
+        my $status = @files_added ? 'added' : 'removed';
+        my $offset = @files_added ? 1       : 0        ;
+        foreach my $file (@files_added, @files_removed) {
+            next unless defined $Language{$fh[$F+$offset]}{$file};
+            my $Lang = $Language{$fh[$F+$offset]}{$file};
+            next if $Lang eq '(unknown)';
+            my ($all_line_count,
+                $blank_count   ,
+                $comment_count ,
+               ) = call_counter($file, $Lang, \@Errors);
+            $already_counted{$file} = 1;
+            my $code_count = $all_line_count-$blank_count-$comment_count;
+            if ($opt_by_file) {
+                $Delta_by_File{$file}{'code'   }{$status} += $code_count   ;
+                $Delta_by_File{$file}{'blank'  }{$status} += $blank_count  ;
+                $Delta_by_File{$file}{'comment'}{$status} += $comment_count;
+                $Delta_by_File{$file}{'lang'   }{$status}  = $Lang         ;
+                $Delta_by_File{$file}{'nFiles' }{$status} += 1             ;
+            }
+            $Delta_by_Language{$Lang}{'code'   }{$status} += $code_count   ;
+            $Delta_by_Language{$Lang}{'blank'  }{$status} += $blank_count  ;
+            $Delta_by_Language{$Lang}{'comment'}{$status} += $comment_count;
+            $Delta_by_Language{$Lang}{'nFiles' }{$status} += 1             ;
+        }
+    }
+   #use Data::Dumper::Simple;
+   #use Data::Dumper;
+   #print Dumper(\@files_added, \@files_removed, \@file_pairs);
+    my @alignment = (); # only  used if --diff-alignment
+#print "after align_by_pairs:\n";
+
+#print "added:\n";
+    push @alignment, sprintf "Files added: %d\n", scalar @files_added
+        if $opt_diff_alignment;
+    foreach my $f (@files_added) {
+        next if $already_counted{$f};
+#printf "%10s -> %s\n", $f, $Language{$fh[$F+1]}{$f};
+        # Don't proceed unless the file (both L and R versions)
+        # is in a known language.
+        next if $opt_include_lang
+                and not $Include_Language{$Language{$fh[$F+1]}{$f}};
+        next if $Language{$fh[$F+1]}{$f} eq "(unknown)";
+        next if $Exclude_Language{$Language{$fh[$F+1]}{$f}};
+        push @alignment, sprintf "  + %s ; %s\n", $f, $Language{$fh[$F+1]}{$f}
+            if $opt_diff_alignment;
+        ++$Delta_by_Language{ $Language{$fh[$F+1]}{$f} }{'nFiles'}{'added'};
+        # Additionally, add contents of file $f to
+        #        Delta_by_File{$f}{comment/blank/code}{'added'}
+        #        Delta_by_Language{$lang}{comment/blank/code}{'added'}
+        my ($all_line_count,
+            $blank_count   ,
+            $comment_count ,
+           ) = call_counter($f, $Language{$fh[$F+1]}{$f}, \@Errors);
+        $Delta_by_Language{ $Language{$fh[$F+1]}{$f} }{'comment'}{'added'} +=
+            $comment_count;
+        $Delta_by_Language{ $Language{$fh[$F+1]}{$f} }{'blank'}{'added'}   +=
+            $blank_count;
+        $Delta_by_Language{ $Language{$fh[$F+1]}{$f} }{'code'}{'added'}    +=
+            $all_line_count - $blank_count - $comment_count;
+        $Delta_by_File{ $f }{'comment'}{'added'} = $comment_count;
+        $Delta_by_File{ $f }{'blank'}{'added'}   = $blank_count;
+        $Delta_by_File{ $f }{'code'}{'added'}    =
+            $all_line_count - $blank_count - $comment_count;
+    }
+    push @alignment, "\n";
+
+#print "removed:\n";
+    push @alignment, sprintf "Files removed: %d\n", scalar @files_removed
+        if $opt_diff_alignment;
+    foreach my $f (@files_removed) {
+        next if $already_counted{$f};
+        # Don't proceed unless the file (both L and R versions)
+        # is in a known language.
+        next if $opt_include_lang
+                and not $Include_Language{$Language{$fh[$F]}{$f}};
+        next if $Language{$fh[$F]}{$f} eq "(unknown)";
+        next if $Exclude_Language{$Language{$fh[$F]}{$f}};
+        ++$Delta_by_Language{ $Language{$fh[$F]}{$f} }{'nFiles'}{'removed'};
+        push @alignment, sprintf "  - %s ; %s\n", $f, $Language{$fh[$F]}{$f}
+            if $opt_diff_alignment;
+#printf "%10s -> %s\n", $f, $Language{$fh[$F  ]}{$f};
+        # Additionally, add contents of file $f to
+        #        Delta_by_File{$f}{comment/blank/code}{'removed'}
+        #        Delta_by_Language{$lang}{comment/blank/code}{'removed'}
+        my ($all_line_count,
+            $blank_count   ,
+            $comment_count ,
+           ) = call_counter($f, $Language{$fh[$F  ]}{$f}, \@Errors);
+        $Delta_by_Language{ $Language{$fh[$F  ]}{$f} }{'comment'}{'removed'} +=
+            $comment_count;
+        $Delta_by_Language{ $Language{$fh[$F  ]}{$f} }{'blank'}{'removed'}   +=
+            $blank_count;
+        $Delta_by_Language{ $Language{$fh[$F  ]}{$f} }{'code'}{'removed'}    +=
+            $all_line_count - $blank_count - $comment_count;
+        $Delta_by_File{ $f }{'comment'}{'removed'} = $comment_count;
+        $Delta_by_File{ $f }{'blank'}{'removed'}   = $blank_count;
+        $Delta_by_File{ $f }{'code'}{'removed'}    =
+            $all_line_count - $blank_count - $comment_count;
+    }
+    push @alignment, "\n";
+
+    my $alignment_pairs_index = scalar @alignment;
+    my $n_file_pairs_compared = 0;
+    # Don't know ahead of time how many file pairs will be compared
+    # since duplicates are weeded out below.  The answer is
+    # scalar @file_pairs only if there are no duplicates.
+    push @alignment, sprintf "File pairs compared: UPDATE_ME\n"
+        if $opt_diff_alignment;
+
+    foreach my $pair (@file_pairs) {
+        my $file_L = $pair->[0];
+        my $file_R = $pair->[1];
+        my $Lang_L = $Language{$fh[$F  ]}{$file_L};
+        my $Lang_R = $Language{$fh[$F+1]}{$file_R};
+#print "main step 6 file_L=$file_L    file_R=$file_R\n";
+        ++$nCounted;
+        printf "Counting:  %d\r", $nCounted
+            unless (!$opt_progress_rate or ($nCounted % $opt_progress_rate));
+        next if $Ignored{$file_L};
+        # filter out non-included languages
+        if ($opt_include_lang and not $Include_Language{$Lang_L}
+                              and not $Include_Language{$Lang_R}) {
+            $Ignored{$file_L} = "--include-lang=$Lang_L";
+            $Ignored{$file_R} = "--include-lang=$Lang_R";
+            next;
+        }
+        # filter out excluded or unrecognized languages
+        if ($Exclude_Language{$Lang_L} or $Exclude_Language{$Lang_R}) {
+            $Ignored{$file_L} = "--exclude-lang=$Lang_L";
+            $Ignored{$file_R} = "--exclude-lang=$Lang_R";
+            next;
+        }
+        my $not_Filters_by_Language_Lang_LR = 0;
+#print "file_LR = [$file_L] [$file_R]\n";
+#print "Lang_LR = [$Lang_L] [$Lang_R]\n";
+        if (!(@{$Filters_by_Language{$Lang_L} }) or
+            !(@{$Filters_by_Language{$Lang_R} })) {
+            $not_Filters_by_Language_Lang_LR = 1;
+        }
+        if ($not_Filters_by_Language_Lang_LR) {
+            if (($Lang_L eq "(unknown)") or ($Lang_R eq "(unknown)")) {
+                $Ignored{$fh[$F  ]}{$file_L} = "language unknown (#1)";
+                $Ignored{$fh[$F+1]}{$file_R} = "language unknown (#1)";
+            } else {
+                $Ignored{$fh[$F  ]}{$file_L} = "missing Filters_by_Language{$Lang_L}";
+                $Ignored{$fh[$F+1]}{$file_R} = "missing Filters_by_Language{$Lang_R}";
+            }
+            next;
+        }
+
+#print "DIFF($file_L, $file_R)\n";
+        # step 0: compare the two files' contents
+        chomp ( my @lines_L = read_file($file_L) );
+        chomp ( my @lines_R = read_file($file_R) );
+        my $language_file_L = "";
+        if (defined $Language{$fh[$F]}{$file_L}) {
+            $language_file_L = $Language{$fh[$F]}{$file_L};
+        } else {
+            # files $file_L and $file_R do not contain known language
+            next;
+        }
+        my $contents_are_same = 1;
+        if (scalar @lines_L == scalar @lines_R) {
+            # same size, must compare line-by-line
+            for (my $i = 0; $i < scalar @lines_L; $i++) {
+                if ($lines_L[$i] ne $lines_R[$i]) {
+                    $contents_are_same = 0;
+                    last;
+                }
+            }
+            if ($contents_are_same) {
+                ++$Delta_by_Language{$language_file_L}{'nFiles'}{'same'};
+            } else {
+                ++$Delta_by_Language{$language_file_L}{'nFiles'}{'modified'};
+            }
+        } else {
+            $contents_are_same = 0;
+            # different sizes, contents have changed
+            ++$Delta_by_Language{$language_file_L}{'nFiles'}{'modified'};
+        }
+        if ($opt_diff_alignment) {
+            my $str =  "$file_L | $file_R ; $language_file_L";
+            if ($contents_are_same) {
+                push @alignment, "  == $str";
+            } else {
+                push @alignment, "  != $str";
+            }
+            ++$n_file_pairs_compared;
+        }
+
+        # step 1: identify comments in both files
+#print "Diff blank removal L language= $Lang_L";
+#print " scalar(lines_L)=", scalar @lines_L, "\n";
+        my @original_minus_blanks_L
+                    = rm_blanks(  \@lines_L, $Lang_L, \%EOL_Continuation_re);
+#print "1: scalar(original_minus_blanks_L)=", scalar @original_minus_blanks_L, "\n";
+        @lines_L    = @original_minus_blanks_L;
+#print "2: scalar(lines_L)=", scalar @lines_L, "\n";
+        @lines_L    = add_newlines(\@lines_L); # compensate for rm_comments()
+        @lines_L    = rm_comments( \@lines_L, $Lang_L, $file_L,
+                                   \%EOL_Continuation_re);
+#print "3: scalar(lines_L)=", scalar @lines_L, "\n";
+
+#print "Diff blank removal R language= $Lang_R\n";
+        my @original_minus_blanks_R
+                    = rm_blanks(  \@lines_R, $Lang_R, \%EOL_Continuation_re);
+        @lines_R    = @original_minus_blanks_R;
+        @lines_R    = add_newlines(\@lines_R); # taken away by rm_comments()
+        @lines_R    = rm_comments( \@lines_R, $Lang_R, $file_R,
+                                   \%EOL_Continuation_re);
+
+        my (@diff_LL, @diff_LR, );
+        array_diff( $file_L                  ,   # in
+                   \@original_minus_blanks_L ,   # in
+                   \@lines_L                 ,   # in
+                   "comment"                 ,   # in
+                   \@diff_LL, \@diff_LR      ,   # out
+                   \@Errors);                    # in/out
+
+        my (@diff_RL, @diff_RR, );
+        array_diff( $file_R                  ,   # in
+                   \@original_minus_blanks_R ,   # in
+                   \@lines_R                 ,   # in
+                   "comment"                 ,   # in
+                   \@diff_RL, \@diff_RR      ,   # out
+                   \@Errors);                    # in/out
+        # each line of each file is now classified as
+        # code or comment
+
+#use Data::Dumper;
+#print Dumper("diff_LL", \@diff_LL, "diff_LR", \@diff_LR, );
+#print Dumper("diff_RL", \@diff_RL, "diff_RR", \@diff_RR, );
+#die;
+        # step 2: separate code from comments for L and R files
+        my @code_L = ();
+        my @code_R = ();
+        my @comm_L = ();
+        my @comm_R = ();
+        foreach my $line_info (@diff_LL) {
+            if      ($line_info->{'type'} eq "code"   ) {
+                push @code_L, $line_info->{char};
+            } elsif ($line_info->{'type'} eq "comment") {
+                push @comm_L, $line_info->{char};
+            } else {
+                die "Diff unexpected line type ",
+                    $line_info->{'type'}, "for $file_L line ",
+                    $line_info->{'lnum'};
+            }
+        }
+        foreach my $line_info (@diff_RL) {
+            if      ($line_info->{type} eq "code"   ) {
+                push @code_R, $line_info->{'char'};
+            } elsif ($line_info->{type} eq "comment") {
+                push @comm_R, $line_info->{'char'};
+            } else {
+                die "Diff unexpected line type ",
+                    $line_info->{'type'}, "for $file_R line ",
+                    $line_info->{'lnum'};
+            }
+        }
+
+        if ($opt_ignore_whitespace) {
+            # strip all whitespace from each line of source code
+            # and comments then use these stripped arrays in diffs
+            foreach (@code_L) { s/\s+//g }
+            foreach (@code_R) { s/\s+//g }
+            foreach (@comm_L) { s/\s+//g }
+            foreach (@comm_R) { s/\s+//g }
+        }
+        if ($opt_ignore_case) {
+            # change all text to lowercase in diffs
+            foreach (@code_L) { $_ = lc }
+            foreach (@code_R) { $_ = lc }
+            foreach (@comm_L) { $_ = lc }
+            foreach (@comm_R) { $_ = lc }
+        }
+        # step 3: compute code diffs
+        array_diff("$file_L v. $file_R"   ,   # in
+                   \@code_L               ,   # in
+                   \@code_R               ,   # in
+                   "revision"             ,   # in
+                   \@diff_LL, \@diff_LR   ,   # out
+                   \@Errors);                 # in/out
+#print Dumper("diff_LL", \@diff_LL, "diff_LR", \@diff_LR, );
+#print Dumper("diff_LR", \@diff_LR);
+        foreach my $line_info (@diff_LR) {
+            my $status = $line_info->{'desc'}; # same|added|removed|modified
+            ++$Delta_by_Language{$Lang_L}{'code'}{$status};
+            if ($opt_by_file) {
+                ++$Delta_by_File{$file_L}{'code'}{$status};
+            }
+        }
+#use Data::Dumper;
+#print Dumper("code diffs:", \@diff_LL, \@diff_LR);
+
+        # step 4: compute comment diffs
+        array_diff("$file_L v. $file_R"   ,   # in
+                   \@comm_L               ,   # in
+                   \@comm_R               ,   # in
+                   "revision"             ,   # in
+                   \@diff_LL, \@diff_LR   ,   # out
+                   \@Errors);                 # in/out
+#print Dumper("comment diff_LR", \@diff_LR);
+        foreach my $line_info (@diff_LR) {
+            my $status = $line_info->{'desc'}; # same|added|removed|modified
+            ++$Delta_by_Language{$Lang_L}{'comment'}{$status};
+            if ($opt_by_file) {
+                ++$Delta_by_File{$file_L}{'comment'}{$status};
+            }
+        }
+#print Dumper("comment diffs:", \@diff_LL, \@diff_LR);
+
+        # step 5: compute difference in blank lines (kind of pointless)
+        next if $Lang_L eq '(unknown)' or
+                $Lang_R eq '(unknown)';
+        my ($all_line_count_L,
+            $blank_count_L   ,
+            $comment_count_L ,
+           ) = call_counter($file_L, $Lang_L, \@Errors);
+
+        my ($all_line_count_R,
+            $blank_count_R   ,
+            $comment_count_R ,
+           ) = call_counter($file_R, $Lang_R, \@Errors);
+
+        if ($blank_count_L <  $blank_count_R) {
+            my $D = $blank_count_R - $blank_count_L;
+            $Delta_by_Language{$Lang_L}{'blank'}{'added'}   += $D;
+        } else {
+            my $D = $blank_count_L - $blank_count_R;
+            $Delta_by_Language{$Lang_L}{'blank'}{'removed'} += $D;
+        }
+        if ($opt_by_file) {
+            if ($blank_count_L <  $blank_count_R) {
+                my $D = $blank_count_R - $blank_count_L;
+                $Delta_by_File{$file_L}{'blank'}{'added'}   += $D;
+            } else {
+                my $D = $blank_count_L - $blank_count_R;
+                $Delta_by_File{$file_L}{'blank'}{'removed'} += $D;
+            }
+        }
+
+        my $code_count_L = $all_line_count_L-$blank_count_L-$comment_count_L;
+        if ($opt_by_file) {
+            $Results_by_File{$file_L}{'code'   } = $code_count_L    ;
+            $Results_by_File{$file_L}{'blank'  } = $blank_count_L   ;
+            $Results_by_File{$file_L}{'comment'} = $comment_count_L ;
+            $Results_by_File{$file_L}{'lang'   } = $Lang_L          ;
+            $Results_by_File{$file_L}{'nFiles' } = 1                ;
+        } else {
+            $Results_by_File{$file_L} = 1;  # just keep track of counted files
+        }
+
+        $Results_by_Language{$Lang_L}{'nFiles'}++;
+        $Results_by_Language{$Lang_L}{'code'}    += $code_count_L   ;
+        $Results_by_Language{$Lang_L}{'blank'}   += $blank_count_L  ;
+        $Results_by_Language{$Lang_L}{'comment'} += $comment_count_L;
+    }
+    if ($opt_diff_alignment) {
+        $alignment[$alignment_pairs_index] =~ s/UPDATE_ME/$n_file_pairs_compared/;
+        write_file($opt_diff_alignment, @alignment);
+    }
+
+}
+#use Data::Dumper;
+#print Dumper("Delta_by_Language:"  , \%Delta_by_Language);
+#print Dumper("Results_by_Language:", \%Results_by_Language);
+#print Dumper("Delta_by_File:"      , \%Delta_by_File);
+#print Dumper("Results_by_File:"    , \%Results_by_File);
+#die;
+my @ignored_reasons = map { "$_: $Ignored{$_}" } sort keys %Ignored;
+write_file($opt_ignored, @ignored_reasons   ) if $opt_ignored;
+write_file($opt_counted, sort keys %Results_by_File) if $opt_counted;
+# 1}}}
+# Step 7:  Assemble results.                   {{{1
+#
+my $end_time = get_time();
+printf "%8d file%s ignored.                           \n",
+    plural_form(scalar keys %Ignored) unless $opt_quiet;
+print_errors(\%Error_Codes, \@Errors) if @Errors;
+if (!%Delta_by_Language) {
+    print "Nothing to count.\n";
+    exit;
+}
+
+if ($opt_by_file) {
+    @Lines_Out = diff_report($VERSION, get_time() - $start_time,
+                            "by file",
+                            \%Delta_by_File, \%Scale_Factor);
+} else {
+    @Lines_Out = diff_report($VERSION, get_time() - $start_time,
+                            "by language",
+                            \%Delta_by_Language, \%Scale_Factor);
+}
+
+# 1}}}
+} else {
+# Step 4:  Separate code from non-code files.  {{{1
+my $fh = 0;
+if ($opt_list_file or $opt_vcs) {
+    my @list;
+    if ($opt_vcs) {
+        @list = invoke_generator($opt_vcs, \@ARGV);
+    } else {
+        @list = read_list_file($opt_list_file);
+    }
+    $fh = make_file_list(\@list, \%Error_Codes, \@Errors, \%Ignored);
+} else {
+    $fh = make_file_list(\@ARGV, \%Error_Codes, \@Errors, \%Ignored);
+    #     make_file_list populates global variable @file_list via call to
+    #     File::Find's find() which in turn calls files()
+}
+if ($opt_exclude_list_file) {
+    # note: process_exclude_list_file() references global @file_list
+    process_exclude_list_file($opt_exclude_list_file,
+                             \%Exclude_Dir,
+                             \%Ignored);
+}
+if ($opt_skip_win_hidden and $ON_WINDOWS) {
+    my @file_list_minus_hidded = ();
+    # eval code to run on Unix without 'missing Win32::File module' error.
+    my $win32_file_invocation = '
+        use Win32::File;
+        foreach my $F (@file_list) {
+            my $attr = undef;
+            Win32::File::GetAttributes($F, $attr);
+            if ($attr & HIDDEN) {
+                $Ignored{$F} = "Windows hidden file";
+                print "Ignoring $F since it is a Windows hidden file\n"
+                    if $opt_v > 1;
+            } else {
+                push @file_list_minus_hidded, $F;
+            }
+        }';
+    eval $win32_file_invocation;
+    @file_list = @file_list_minus_hidded;
+}
+#printf "%8d file%s excluded.                     \n",
+#   plural_form(scalar keys %Ignored)
+#   unless $opt_quiet;
+# die print ": ", join("\n: ", @file_list), "\n";
+# 1}}}
+# Step 5:  Remove duplicate files.             {{{1
+#
+my %Language           = ();
+my %unique_source_file = ();
+remove_duplicate_files($fh                          ,   # in
+                           \%Language               ,   # out
+                           \%unique_source_file     ,   # out
+                      \%Error_Codes                 ,   # in
+                           \@Errors                 ,   # out
+                           \%Ignored                );  # out
+printf "%8d unique file%s.                              \n",
+    plural_form(scalar keys %unique_source_file)
+    unless $opt_quiet;
+# 1}}}
+# Step 6:  Count code, comments, blank lines.  {{{1
+#
+
+my %Results_by_Language = ();
+my %Results_by_File     = ();
+my $nCounted = 0;
+foreach my $file (sort keys %unique_source_file) {
+    ++$nCounted;
+    printf "Counting:  %d\r", $nCounted
+        unless (!$opt_progress_rate or ($nCounted % $opt_progress_rate));
+    next if $Ignored{$file};
+    if ($opt_include_lang and not $Include_Language{$Language{$file}}) {
+        $Ignored{$file} = "--include-lang=$Language{$file}";
+        next;
+    }
+    if ($Exclude_Language{$Language{$file}}) {
+        $Ignored{$file} = "--exclude-lang=$Language{$file}";
+        next;
+    }
+    my $Filters_by_Language_Language_file = ! @{$Filters_by_Language{$Language{$file}} };
+    if ($Filters_by_Language_Language_file) {
+        if ($Language{$file} eq "(unknown)") {
+            $Ignored{$file} = "language unknown (#1)";
+        } else {
+            $Ignored{$file} = "missing Filters_by_Language{$Language{$file}}";
+        }
+        next;
+    }
+
+    my ($all_line_count, $blank_count, $comment_count, $code_count);
+    if ($opt_use_sloccount and $Language{$file} =~ /^(C|C\+\+|XML|PHP|Pascal|Java)$/) {
+        chomp ($blank_count     = `grep -Pcv '\\S' $file`);
+        chomp ($all_line_count  = `cat $file | wc -l`);
+        if      ($Language{$file} =~ /^(C|C\+\+)$/) {
+            $code_count = `cat '$file' | c_count      | head -n 1`;
+        } elsif ($Language{$file} eq "XML") {
+            $code_count = `cat '$file' | xml_count    | head -n 1`;
+        } elsif ($Language{$file} eq "PHP") {
+            $code_count = `cat '$file' | php_count    | head -n 1`;
+        } elsif ($Language{$file} eq "Pascal") {
+            $code_count = `cat '$file' | pascal_count | head -n 1`;
+        } elsif ($Language{$file} eq "Java") {
+            $code_count = `cat '$file' | java_count   | head -n 1`;
+        } else {
+            die "SLOCCount match failure: file=[$file] lang=[$Language{$file}]";
+        }
+        $code_count = substr($code_count, 0, -2);
+        $comment_count = $all_line_count - $code_count - $blank_count;
+    } else {
+        ($all_line_count,
+         $blank_count   ,
+         $comment_count ,) = call_counter($file, $Language{$file}, \@Errors);
+        $code_count = $all_line_count - $blank_count - $comment_count;
+    }
+    if ($opt_by_file) {
+        $Results_by_File{$file}{'code'   } = $code_count     ;
+        $Results_by_File{$file}{'blank'  } = $blank_count    ;
+        $Results_by_File{$file}{'comment'} = $comment_count  ;
+        $Results_by_File{$file}{'lang'   } = $Language{$file};
+        $Results_by_File{$file}{'nFiles' } = 1;
+    } else {
+        $Results_by_File{$file} = 1;  # just keep track of counted files
+    }
+
+    $Results_by_Language{$Language{$file}}{'nFiles'}++;
+    $Results_by_Language{$Language{$file}}{'code'}    += $code_count   ;
+    $Results_by_Language{$Language{$file}}{'blank'}   += $blank_count  ;
+    $Results_by_Language{$Language{$file}}{'comment'} += $comment_count;
+}
+my @ignored_reasons = map { "$_: $Ignored{$_}" } sort keys %Ignored;
+write_file($opt_ignored, @ignored_reasons   ) if $opt_ignored;
+write_file($opt_counted, sort keys %Results_by_File) if $opt_counted;
+# 1}}}
+# Step 7:  Assemble results.                   {{{1
+#
+my $end_time = get_time();
+printf "%8d file%s ignored.\n", plural_form(scalar keys %Ignored)
+    unless $opt_quiet;
+print_errors(\%Error_Codes, \@Errors) if @Errors;
+exit unless %Results_by_Language;
+
+generate_sql($end_time - $start_time,
+            \%Results_by_File, \%Scale_Factor) if $opt_sql;
+
+exit if $skip_generate_report;
+if      ($opt_by_file_by_lang) {
+    push @Lines_Out, generate_report( $VERSION, $end_time - $start_time,
+                                      "by file",
+                                      \%Results_by_File,    \%Scale_Factor);
+    push @Lines_Out, generate_report( $VERSION, $end_time - $start_time,
+                                      "by language",
+                                      \%Results_by_Language, \%Scale_Factor);
+} elsif ($opt_by_file) {
+    push @Lines_Out, generate_report( $VERSION, $end_time - $start_time,
+                                      "by file",
+                                      \%Results_by_File,    \%Scale_Factor);
+} else {
+    push @Lines_Out, generate_report( $VERSION, $end_time - $start_time,
+                                      "by language",
+                                      \%Results_by_Language, \%Scale_Factor);
+}
+# 1}}}
+}
+if ($opt_report_file) { write_file($opt_report_file, @Lines_Out); }
+else                  { print "\n", join("\n", @Lines_Out), "\n"; }
+if ($opt_count_diff) {
+    ++$opt_count_diff;
+    exit if $opt_count_diff > 3;
+    goto Top_of_Processing_Loop;
+}
+
+sub exclude_dir_validates {                  # {{{1
+    my ($rh_Exclude_Dir) = @_;
+    my $is_OK = 1;
+    foreach my $dir (keys %{$rh_Exclude_Dir}) {
+        if (($ON_WINDOWS and $dir =~ m{\\}) or ($dir =~ m{/})) {
+            $is_OK = 0;
+            warn "--exclude-dir '$dir' :  cannot specify directory paths\n";
+        }
+    }
+    if (!$is_OK) {
+        warn "Use '--fullpath --not-match-d=REGEX' instead\n";
+    }
+    return $is_OK;
+} # 1}}}
+sub process_exclude_list_file {              # {{{1
+    my ($list_file      , # in
+        $rh_exclude_dir , # out
+        $rh_ignored     , # out
+       ) = @_;
+    # note: references global @file_list
+    print "-> process_exclude_list_file($list_file)\n" if $opt_v > 2;
+    # reject a specific set of files and/or directories
+    my @reject_list   = read_list_file($list_file);
+    my @file_reject_list = ();
+    foreach my $F_or_D (@reject_list) {
+        if (is_dir($F_or_D)) {
+            $rh_exclude_dir->{$F_or_D} = 1;
+        } elsif (is_file($F_or_D)) {
+            push @file_reject_list, $F_or_D;
+        }
+    }
+
+    # Normalize file names for better comparison.
+    my %normalized_input   = normalize_file_names(@file_list);
+    my %normalized_reject  = normalize_file_names(@file_reject_list);
+    my %normalized_exclude = normalize_file_names(keys %{$rh_exclude_dir});
+    foreach my $F (keys %normalized_input) {
+        if ($normalized_reject{$F} or is_excluded($F, \%normalized_exclude)) {
+            my $orig_F = $normalized_input{$F};
+            $rh_ignored->{$orig_F} = "listed in exclusion file $opt_exclude_list_file";
+            print "Ignoring $orig_F because it appears in $opt_exclude_list_file\n"
+                if $opt_v > 1;
+        }
+    }
+    print "<- process_exclude_list_file\n" if $opt_v > 2;
+} # 1}}}
+sub combine_results {                        # {{{1
+    # returns 1 if the inputs are categorized by language
+    #         0 if no identifiable language was found
+    my ($ra_report_files, # in
+        $report_type    , # in  "by language" or "by report file"
+        $rhh_count      , # out count{TYPE}{nFiles|code|blank|comment|scaled}
+        $rhaa_Filters_by_Language , # in
+       ) = @_;
+
+    print "-> combine_results(report_type=$report_type)\n" if $opt_v > 2;
+    my $found_language = 0;
+
+    foreach my $file (@{$ra_report_files}) {
+        my $IN = new IO::File $file, "r";
+        if (!defined $IN) {
+            warn "Unable to read $file; ignoring.\n";
+            next;
+        }
+        while (<$IN>) {
+            next if /^(http|Language|SUM|-----)/;
+            if (!$opt_by_file  and
+                m{^(.*?)\s+         # language
+                   (\d+)\s+         # files
+                   (\d+)\s+         # blank
+                   (\d+)\s+         # comments
+                   (\d+)\s+         # code
+                   (                #    next four entries missing with -nno3
+                   x\s+             # x
+                   \d+\.\d+\s+      # scale
+                   =\s+             # =
+                   (\d+\.\d+)\s*    # scaled code
+                   )?
+                   $}x) {
+                if ($report_type eq "by language") {
+                    if (!defined $rhaa_Filters_by_Language->{$1}) {
+                        warn "Unrecognized language '$1' in $file ignored\n";
+                        next;
+                    }
+                    # above test necessary to avoid trying to sum reports
+                    # of reports (which have no language breakdown).
+                    $found_language = 1;
+                    $rhh_count->{$1   }{'nFiles' } += $2;
+                    $rhh_count->{$1   }{'blank'  } += $3;
+                    $rhh_count->{$1   }{'comment'} += $4;
+                    $rhh_count->{$1   }{'code'   } += $5;
+                    $rhh_count->{$1   }{'scaled' } += $7 if $opt_3;
+                } else {
+                    $rhh_count->{$file}{'nFiles' } += $2;
+                    $rhh_count->{$file}{'blank'  } += $3;
+                    $rhh_count->{$file}{'comment'} += $4;
+                    $rhh_count->{$file}{'code'   } += $5;
+                    $rhh_count->{$file}{'scaled' } += $7 if $opt_3;
+                }
+            } elsif ($opt_by_file  and
+                m{^(.*?)\s+         # language
+                   (\d+)\s+         # blank
+                   (\d+)\s+         # comments
+                   (\d+)\s+         # code
+                   (                #    next four entries missing with -nno3
+                   x\s+             # x
+                   \d+\.\d+\s+      # scale
+                   =\s+             # =
+                   (\d+\.\d+)\s*    # scaled code
+                   )?
+                   $}x) {
+                if ($report_type eq "by language") {
+                    next unless %{$rhaa_Filters_by_Language->{$1}};
+                    # above test necessary to avoid trying to sum reports
+                    # of reports (which have no language breakdown).
+                    $found_language = 1;
+                    $rhh_count->{$1   }{'nFiles' } +=  1;
+                    $rhh_count->{$1   }{'blank'  } += $2;
+                    $rhh_count->{$1   }{'comment'} += $3;
+                    $rhh_count->{$1   }{'code'   } += $4;
+                    $rhh_count->{$1   }{'scaled' } += $6 if $opt_3;
+                } else {
+                    $rhh_count->{$file}{'nFiles' } +=  1;
+                    $rhh_count->{$file}{'blank'  } += $2;
+                    $rhh_count->{$file}{'comment'} += $3;
+                    $rhh_count->{$file}{'code'   } += $4;
+                    $rhh_count->{$file}{'scaled' } += $6 if $opt_3;
+                }
+            }
+        }
+    }
+    print "<- combine_results\n" if $opt_v > 2;
+    return $found_language;
+} # 1}}}
+sub compute_denominator {                    # {{{1
+    my ($method, $nCode, $nComment, $nBlank, ) = @_;
+    print "-> compute_denominator\n" if $opt_v > 2;
+    my %den        = ( "c" => $nCode );
+       $den{"cm"}  = $den{"c"}  + $nComment;
+       $den{"cmb"} = $den{"cm"} + $nBlank;
+       $den{"cb"}  = $den{"c"}  + $nBlank;
+
+    print "<- compute_denominator\n" if $opt_v > 2;
+    return $den{ $method };
+} # 1}}}
+sub yaml_to_json_separators {                # {{{1
+    # YAML and JSON are closely related.  Their differences can be captured
+    # by trailing commas ($C), braces ($open_B, $close_B), and
+    # quotes around text ($Q).
+    my ($Q, $open_B, $close_B, $start, $C);
+    if ($opt_json) {
+       $C       = ',';
+       $Q       = '"';
+       $open_B  = '{';
+       $close_B = '}';
+       $start   = '{';
+    } else {
+       $C       = '';
+       $Q       = '' ;
+       $open_B  = '' ;
+       $close_B = '';
+       $start   = "---\n# $URL\n";
+    }
+    return ($Q, $open_B, $close_B, $start, $C);
+} # 1}}}
+sub diff_report     {                        # {{{1
+    # returns an array of lines containing the results
+    print "-> diff_report\n" if $opt_v > 2;
+
+    if ($opt_xml) {
+        print "<- diff_report\n" if $opt_v > 2;
+        return diff_xml_report(@_)
+###     return diff_xml_yaml_json_report(@_)
+    } elsif ($opt_yaml) {
+        print "<- diff_report\n" if $opt_v > 2;
+        return diff_yaml_report(@_)
+    } elsif ($opt_json) {
+        print "<- diff_report\n" if $opt_v > 2;
+        return diff_json_report(@_)
+    } elsif ($opt_csv or $opt_md) {
+        print "<- diff_report\n" if $opt_v > 2;
+        return diff_csv_report(@_)
+    }
+
+    my ($version    , # in
+        $elapsed_sec, # in
+        $report_type, # in  "by language" | "by report file" | "by file"
+        $rhhh_count , # in  count{TYPE}{nFiles|code|blank|comment}{a|m|r|s}
+        $rh_scale   , # in
+       ) = @_;
+
+#use Data::Dumper;
+#print "diff_report: ", Dumper($rhhh_count), "\n";
+    my @results       = ();
+
+    my $languages     = ();
+    my %sum           = (); # sum{nFiles|blank|comment|code}{same|modified|added|removed}
+    my $max_len       = 0;
+    foreach my $language (keys %{$rhhh_count}) {
+        foreach my $V (qw(nFiles blank comment code)) {
+            foreach my $S (qw(added same modified removed)) {
+                $rhhh_count->{$language}{$V}{$S} = 0 unless
+                    defined $rhhh_count->{$language}{$V}{$S};
+                $sum{$V}{$S}  += $rhhh_count->{$language}{$V}{$S};
+            }
+        }
+        $max_len      = length($language) if length($language) > $max_len;
+    }
+    my $column_1_offset = 0;
+       $column_1_offset = $max_len - 17 if $max_len > 17;
+    $elapsed_sec = 0.5 unless $elapsed_sec;
+
+    my $spacing_0 = 23;
+    my $spacing_1 = 13;
+    my $spacing_2 =  9;
+    my $spacing_3 = 17;
+    if (!$opt_3) {
+        $spacing_1 = 19;
+        $spacing_2 = 14;
+        $spacing_3 = 28;
+    }
+    $spacing_0 += $column_1_offset;
+    $spacing_1 += $column_1_offset;
+    $spacing_3 += $column_1_offset;
+    my %Format = (
+        '1' => { 'xml' => 'name="%s" ',
+                 'txt' => "\%-${spacing_0}s ",
+               },
+        '2' => { 'xml' => 'name="%s" ',
+                 'txt' => "\%-${spacing_3}s ",
+               },
+        '3' => { 'xml' => 'files_count="%d" ',
+                 'txt' => '%5d ',
+               },
+        '4' => { 'xml' => 'blank="%d" comment="%d" code="%d" ',
+                 'txt' => "\%${spacing_2}d \%${spacing_2}d \%${spacing_2}d",
+               },
+        '5' => { 'xml' => 'blank="%.2f" comment="%.2f" code="%d" ',
+                 'txt' => "\%3.2f \%3.2f \%${spacing_2}d",
+               },
+        '6' => { 'xml' => 'factor="%.2f" scaled="%.2f" ',
+                 'txt' => ' x %6.2f = %14.2f',
+               },
+    );
+    my $Style = "txt";
+       $Style = "xml" if $opt_xml ;
+       $Style = "xml" if $opt_yaml;  # not a typo; just set to anything but txt
+       $Style = "xml" if $opt_json;  # not a typo; just set to anything but txt
+       $Style = "xml" if $opt_csv ;  # not a typo; just set to anything but txt
+
+    my $hyphen_line = sprintf "%s", '-' x (79 + $column_1_offset);
+       $hyphen_line = sprintf "%s", '-' x (68 + $column_1_offset)
+            if (!$opt_3) and (68 + $column_1_offset) > 79;
+    my $data_line  = "";
+    my $first_column;
+    my $BY_LANGUAGE = 0;
+    my $BY_FILE     = 0;
+    if      ($report_type eq "by language") {
+        $first_column = "Language";
+        $BY_LANGUAGE  = 1;
+    } elsif ($report_type eq "by file")     {
+        $first_column = "File";
+        $BY_FILE      = 1;
+    } else {
+        $first_column = "Report File";
+    }
+
+    my $header_line  = sprintf "%s v %s", $URL, $version;
+    my $sum_files    = 1;
+    my $sum_lines    = 1;
+       $header_line .= sprintf("  T=%.2f s (%.1f files/s, %.1f lines/s)",
+                        $elapsed_sec           ,
+                        $sum_files/$elapsed_sec,
+                        $sum_lines/$elapsed_sec) unless $opt_sum_reports;
+    if ($Style eq "txt") {
+        push @results, output_header($header_line, $hyphen_line, $BY_FILE);
+    } elsif ($Style eq "csv") {
+        die "csv";
+    }
+
+    # column headers
+    if (!$opt_3 and $BY_FILE) {
+        my $spacing_n = $spacing_1 - 11;
+        $data_line  = sprintf "%-${spacing_n}s" , $first_column;
+    } else {
+        $data_line  = sprintf "%-${spacing_1}s ", $first_column;
+    }
+    if ($BY_FILE) {
+        $data_line .= sprintf "%${spacing_2}s"   , ""     ;
+    } else {
+        $data_line .= sprintf "%${spacing_2}s "  , "files";
+    }
+    my $PCT_symbol = "";
+       $PCT_symbol = " \%" if $opt_by_percent;
+    $data_line .= sprintf "%${spacing_2}s %${spacing_2}s %${spacing_2}s",
+        "blank${PCT_symbol}"         ,
+        "comment${PCT_symbol}"       ,
+        "code";
+
+    if ($Style eq "txt") {
+        push @results, $data_line;
+        push @results, $hyphen_line;
+    }
+
+####foreach my $lang_or_file (keys %{$rhhh_count}) {
+####    $rhhh_count->{$lang_or_file}{'code'} = 0 unless
+####        defined $rhhh_count->{$lang_or_file}{'code'};
+####}
+    foreach my $lang_or_file (sort {
+                                 $rhhh_count->{$b}{'code'} <=>
+                                 $rhhh_count->{$a}{'code'}
+                               }
+                          keys %{$rhhh_count}) {
+
+        if ($BY_FILE) {
+            push @results, rm_leading_tempdir($lang_or_file, \%TEMP_DIR);
+        } else {
+            push @results, $lang_or_file;
+        }
+        foreach my $S (qw(same modified added removed)) {
+            my $indent = $spacing_1 - 2;
+            my $line .= sprintf " %-${indent}s", $S;
+            if ($BY_FILE) {
+                $line .= sprintf "   ";
+            } else {
+                $line .= sprintf "  %${spacing_2}s", $rhhh_count->{$lang_or_file}{'nFiles'}{$S};
+            }
+            if ($opt_by_percent) {
+                my $DEN = compute_denominator($opt_by_percent  ,
+                    $rhhh_count->{$lang_or_file}{'code'}{$S}   ,
+                    $rhhh_count->{$lang_or_file}{'comment'}{$S},
+                    $rhhh_count->{$lang_or_file}{'blank'}{$S}  );
+                if ($rhhh_count->{$lang_or_file}{'code'}{$S} > 0) {
+                    $line .= sprintf " %14.2f %14.2f %${spacing_2}s",
+                        $rhhh_count->{$lang_or_file}{'blank'}{$S}   / $DEN * 100,
+                        $rhhh_count->{$lang_or_file}{'comment'}{$S} / $DEN * 100,
+                        $rhhh_count->{$lang_or_file}{'code'}{$S}    ;
+                } else {
+                    $line .= sprintf " %14.2f %14.2f %${spacing_2}s",
+                        0.0, 0.0, $rhhh_count->{$lang_or_file}{'code'}{$S}    ;
+                }
+            } else {
+                $line .= sprintf " %${spacing_2}s %${spacing_2}s %${spacing_2}s",
+                    $rhhh_count->{$lang_or_file}{'blank'}{$S}   ,
+                    $rhhh_count->{$lang_or_file}{'comment'}{$S} ,
+                    $rhhh_count->{$lang_or_file}{'code'}{$S}    ;
+            }
+            push @results, $line;
+        }
+    }
+    push @results, $hyphen_line;
+    push @results, "SUM:";
+    foreach my $S (qw(same modified added removed)) {
+        my $indent = $spacing_1 - 2;
+        my $line .= sprintf " %-${indent}s", $S;
+            if ($BY_FILE) {
+                $line .= sprintf "   ";
+            } else {
+                $line .= sprintf "  %${spacing_2}s", $sum{'nFiles'}{$S};
+            }
+        if ($opt_by_percent) {
+            my $DEN = compute_denominator($opt_by_percent,
+                $sum{'code'}{$S}, $sum{'comment'}{$S}, $sum{'blank'}{$S});
+            if ($sum{'code'}{$S} > 0) {
+                $line .= sprintf " %14.2f %14.2f %${spacing_2}s",
+                    $sum{'blank'}{$S}   / $DEN * 100,
+                    $sum{'comment'}{$S} / $DEN * 100,
+                    $sum{'code'}{$S}    ;
+            } else {
+                $line .= sprintf " %14.2f %14.2f %${spacing_2}s",
+                    0.0, 0.0, $sum{'code'}{$S}    ;
+            }
+        } else {
+            $line .= sprintf " %${spacing_2}s %${spacing_2}s %${spacing_2}s",
+                $sum{'blank'}{$S}   ,
+                $sum{'comment'}{$S} ,
+                $sum{'code'}{$S}    ;
+        }
+        push @results, $line;
+    }
+    push @results, $hyphen_line;
+    write_xsl_file() if $opt_xsl and $opt_xsl eq $CLOC_XSL;
+    print "<- diff_report\n" if $opt_v > 2;
+
+    return @results;
+} # 1}}}
+sub xml_yaml_or_json_header {                # {{{1
+    my ($URL, $version, $elapsed_sec, $sum_files, $sum_lines, $by_file) = @_;
+    print "-> xml_yaml_or_json_header\n" if $opt_v > 2;
+    my $header      = "";
+    my $file_rate   = $sum_files/$elapsed_sec;
+    my $line_rate   = $sum_lines/$elapsed_sec;
+    my $type        = "";
+       $type        = "diff_" if $opt_diff;
+    my $report_file = "";
+    if ($opt_report_file) {
+        if ($opt_sum_reports) {
+            if ($by_file) {
+                $report_file = "  <report_file>$opt_report_file.file</report_file>"
+            } else {
+                $report_file = "  <report_file>$opt_report_file.lang</report_file>"
+            }
+        } else {
+            $report_file = "  <report_file>$opt_report_file</report_file>"
+        }
+    }
+    if ($opt_xml) {
+        $header = "<?xml version=\"1.0\"?>";
+        $header .= "\n<?xml-stylesheet type=\"text/xsl\" href=\"" . $opt_xsl . "\"?>" if $opt_xsl;
+        $header .= "<${type}results>
+<header>
+  <cloc_url>$URL</cloc_url>
+  <cloc_version>$version</cloc_version>
+  <elapsed_seconds>$elapsed_sec</elapsed_seconds>
+  <n_files>$sum_files</n_files>
+  <n_lines>$sum_lines</n_lines>
+  <files_per_second>$file_rate</files_per_second>
+  <lines_per_second>$line_rate</lines_per_second>";
+        $header .= "\n$report_file"
+            if $opt_report_file;
+        $header .= "\n</header>";
+    } elsif ($opt_yaml or $opt_json) {
+        my ($Q, $open_B, $close_B, $start, $C) = yaml_to_json_separators();
+        $header = "${start}${Q}header${Q} : $open_B
+  ${Q}cloc_url${Q}           : ${Q}$URL${Q}${C}
+  ${Q}cloc_version${Q}       : ${Q}$version${Q}${C}
+  ${Q}elapsed_seconds${Q}    : $elapsed_sec${C}
+  ${Q}n_files${Q}            : $sum_files${C}
+  ${Q}n_lines${Q}            : $sum_lines${C}
+  ${Q}files_per_second${Q}   : $file_rate${C}
+  ${Q}lines_per_second${Q}   : $line_rate";
+        if ($opt_report_file) {
+            if ($opt_sum_reports) {
+                if ($by_file) {
+                    $header .= "$C\n  ${Q}report_file${Q}        : ${Q}$opt_report_file.file${Q}"
+                } else {
+                    $header .= "$C\n  ${Q}report_file${Q}        : ${Q}$opt_report_file.lang${Q}"
+                }
+            } else {
+                $header .= "$C\n  ${Q}report_file${Q}        : ${Q}$opt_report_file${Q}";
+            }
+        }
+        $header .= "${close_B}${C}";
+    }
+    print "<- xml_yaml_or_json_header\n" if $opt_v > 2;
+    return $header;
+} # 1}}}
+sub diff_yaml_report {                       # {{{1
+    # returns an array of lines containing the results
+    my ($version    , # in
+        $elapsed_sec, # in
+        $report_type, # in  "by language" | "by report file" | "by file"
+        $rhhh_count , # in  count{TYPE}{nFiles|code|blank|comment}{a|m|r|s}
+        $rh_scale   , # in
+       ) = @_;
+    print "-> diff_yaml_report\n" if $opt_v > 2;
+    $elapsed_sec = 0.5 unless $elapsed_sec;
+    my @results       = ();
+    my %sum           = ();
+    my ($sum_lines, $sum_files, $BY_FILE, $BY_LANGUAGE) =
+        diff_header_sum($report_type, $rhhh_count, \%sum);
+
+    if (!$ALREADY_SHOWED_HEADER) {
+        push @results,
+              xml_yaml_or_json_header($URL, $version, $elapsed_sec,
+                                 $sum_files, $sum_lines, $BY_FILE);
+        $ALREADY_SHOWED_HEADER = 1;
+    }
+    foreach my $S (qw(added same modified removed)) {
+        push @results, "$S :";
+        foreach my $F_or_L (keys %{$rhhh_count}) {
+            push @results, "  $F_or_L :";
+            foreach my $k (keys %{$rhhh_count->{$F_or_L}}) {
+                next if $k eq "lang"; # present only in those cases
+                                      # where code exists for action $S
+                $rhhh_count->{$F_or_L}{$k}{$S} = 0 unless
+                    defined $rhhh_count->{$F_or_L}{$k}{$S};
+                push @results,
+                    "    $k : $rhhh_count->{$F_or_L}{$k}{$S}";
+            }
+        }
+    }
+    print "<- diff_yaml_report\n" if $opt_v > 2;
+    return @results;
+} # 1}}}
+sub diff_json_report {                       # {{{1
+    # returns an array of lines containing the results
+    my ($version    , # in
+        $elapsed_sec, # in
+        $report_type, # in  "by language" | "by report file" | "by file"
+        $rhhh_count , # in  count{TYPE}{nFiles|code|blank|comment}{a|m|r|s}
+        $rh_scale   , # in
+       ) = @_;
+    print "-> diff_json_report\n" if $opt_v > 2;
+    $elapsed_sec = 0.5 unless $elapsed_sec;
+    my @results       = ();
+    my %sum           = ();
+    my ($sum_lines, $sum_files, $BY_FILE, $BY_LANGUAGE) =
+        diff_header_sum($report_type, $rhhh_count, \%sum);
+
+    if (!$ALREADY_SHOWED_HEADER) {
+        push @results,
+              xml_yaml_or_json_header($URL, $version, $elapsed_sec,
+                                 $sum_files, $sum_lines, $BY_FILE);
+        $ALREADY_SHOWED_HEADER = 1;
+    }
+    foreach my $S (qw(added same modified removed)) {
+        push @results, " \"$S\" : {";
+        foreach my $F_or_L (keys %{$rhhh_count}) {
+            push @results, "  \"$F_or_L\" : {";
+            foreach my $k (keys %{$rhhh_count->{$F_or_L}}) {
+                next if $k eq "lang"; # present only in those cases
+                                      # where code exists for action $S
+                $rhhh_count->{$F_or_L}{$k}{$S} = 0 unless
+                    defined $rhhh_count->{$F_or_L}{$k}{$S};
+                push @results,
+                    "    \"$k\" : \"$rhhh_count->{$F_or_L}{$k}{$S}\",";
+            }
+            $results[-1] =~ s/,\s*$//;
+            push @results, "  },"
+        }
+        $results[-1] =~ s/,\s*$//;
+        push @results, "  },"
+    }
+    $results[-1] =~ s/,\s*$//;
+    push @results, "}";
+    print "<- diff_json_report\n" if $opt_v > 2;
+    return @results;
+} # 1}}}
+sub diff_header_sum {                        # {{{1
+    my ($report_type, # in  "by language" | "by report file" | "by file"
+        $rhhh_count , # in  count{TYPE}{nFiles|code|blank|comment}{a|m|r|s}
+        $rhh_sum    , # out sum{nFiles|blank|comment|code}{same|modified|added|removed}
+       ) = @_;
+
+    my $sum_files = 0;
+    my $sum_lines = 0;
+    foreach my $language (keys %{$rhhh_count}) {
+        foreach my $V (qw(nFiles blank comment code)) {
+            foreach my $S (qw(added same modified removed)) {
+                $rhhh_count->{$language}{$V}{$S} = 0 unless
+                    defined $rhhh_count->{$language}{$V}{$S};
+                $rhh_sum->{$V}{$S}  += $rhhh_count->{$language}{$V}{$S};
+                if ($V eq "nFiles") {
+                    $sum_files += $rhhh_count->{$language}{$V}{$S};
+                } else {
+                    $sum_lines += $rhhh_count->{$language}{$V}{$S};
+                }
+            }
+        }
+    }
+
+    my $BY_LANGUAGE = 0;
+    my $BY_FILE     = 0;
+    if      ($report_type eq "by language") {
+        $BY_LANGUAGE  = 1;
+    } elsif ($report_type eq "by file")     {
+        $BY_FILE      = 1;
+    }
+    return $sum_lines, $sum_files, $BY_FILE, $BY_LANGUAGE;
+} # 1}}}
+sub diff_xml_report {                        # {{{1
+    # returns an array of lines containing the results
+    my ($version    , # in
+        $elapsed_sec, # in
+        $report_type, # in  "by language" | "by report file" | "by file"
+        $rhhh_count , # in  count{TYPE}{nFiles|code|blank|comment}{a|m|r|s}
+        $rh_scale   , # in
+       ) = @_;
+    print "-> diff_xml_report\n" if $opt_v > 2;
+    my ($Q, $open_B, $close_B, $start, $C) = yaml_to_json_separators();
+
+#print "diff_report: ", Dumper($rhhh_count), "\n";
+    $elapsed_sec = 0.5 unless $elapsed_sec;
+    my @results       = ();
+    my %sum           = ();
+    my $languages     = ();
+
+    my ($sum_lines, $sum_files, $BY_FILE, $BY_LANGUAGE) =
+        diff_header_sum($report_type, $rhhh_count, \%sum);
+
+    my $data_line   = "";
+
+    if (!$ALREADY_SHOWED_HEADER) {
+        push @results,
+              xml_yaml_or_json_header($URL, $version, $elapsed_sec,
+                                 $sum_files, $sum_lines, $BY_FILE);
+        $ALREADY_SHOWED_HEADER = 1;
+    }
+
+    foreach my $S (qw(same modified added removed)) {
+        push @results, "  <$S>";
+        foreach my $lang_or_file (sort {
+                                     $rhhh_count->{$b}{'code'} <=>
+                                     $rhhh_count->{$a}{'code'}
+                                   }
+                              keys %{$rhhh_count}) {
+            my $L = "";
+
+            if ($BY_FILE) {
+                $L .= sprintf "    <file name=\"%s\" files_count=\"1\" ",
+                    xml_metachars(
+                        rm_leading_tempdir($lang_or_file, \%TEMP_DIR));
+            } else {
+                $L .= sprintf "    <language name=\"%s\" files_count=\"%d\" ",
+                        $lang_or_file ,
+                        $rhhh_count->{$lang_or_file}{'nFiles'}{$S};
+            }
+            if ($opt_by_percent) {
+              my $DEN = compute_denominator($opt_by_percent            ,
+                            $rhhh_count->{$lang_or_file}{'code'}{$S}   ,
+                            $rhhh_count->{$lang_or_file}{'comment'}{$S},
+                            $rhhh_count->{$lang_or_file}{'blank'}{$S}  );
+              foreach my $T (qw(blank comment)) {
+                  if ($rhhh_count->{$lang_or_file}{'code'}{$S} > 0) {
+                    $L .= sprintf "%s=\"%.2f\" ",
+                            $T, $rhhh_count->{$lang_or_file}{$T}{$S} / $DEN * 100;
+                  } else {
+                    $L .= sprintf "%s=\"0.0\" ", $T;
+                  }
+              }
+              foreach my $T (qw(code)) {
+                  $L .= sprintf "%s=\"%d\" ",
+                          $T, $rhhh_count->{$lang_or_file}{$T}{$S};
+              }
+            } else {
+              foreach my $T (qw(blank comment code)) {
+                  $L .= sprintf "%s=\"%d\" ",
+                          $T, $rhhh_count->{$lang_or_file}{$T}{$S};
+              }
+            }
+            push @results, $L . "/>";
+        }
+
+
+        my $L = sprintf "    <total sum_files=\"%d\" ", $sum{'nFiles'}{$S};
+        if ($opt_by_percent) {
+          my $DEN = compute_denominator($opt_by_percent,
+                        $sum{'code'}{$S}   ,
+                        $sum{'comment'}{$S},
+                        $sum{'blank'}{$S}  );
+          foreach my $V (qw(blank comment)) {
+              if ($sum{'code'}{$S} > 0) {
+                  $L .= sprintf "%s=\"%.2f\" ", $V, $sum{$V}{$S} / $DEN * 100;
+              } else {
+                  $L .= sprintf "%s=\"0.0\" ", $V;
+              }
+          }
+          foreach my $V (qw(code)) {
+              $L .= sprintf "%s=\"%d\" ", $V, $sum{$V}{$S};
+          }
+        } else {
+          foreach my $V (qw(blank comment code)) {
+              $L .= sprintf "%s=\"%d\" ", $V, $sum{$V}{$S};
+          }
+        }
+        push @results, $L . "/>";
+        push @results, "  </$S>";
+    }
+
+    push @results, "</diff_results>";
+    write_xsl_file() if $opt_xsl and $opt_xsl eq $CLOC_XSL;
+    print "<- diff_xml_report\n" if $opt_v > 2;
+    return @results;
+} # 1}}}
+sub diff_csv_report {                        # {{{1
+    # returns an array of lines containing the results
+    my ($version    , # in
+        $elapsed_sec, # in
+        $report_type, # in  "by language" | "by report file" | "by file"
+        $rhhh_count , # in  count{TYPE}{nFiles|code|blank|comment}{a|m|r|s}
+        $rh_scale   , # in  unused
+       ) = @_;
+    print "-> diff_csv_report\n" if $opt_v > 2;
+
+#use Data::Dumper;
+#print "diff_csv_report: ", Dumper($rhhh_count), "\n";
+#die;
+    my @results       = ();
+    my $languages     = ();
+
+    my $data_line   = "";
+    my $BY_LANGUAGE = 0;
+    my $BY_FILE     = 0;
+    if      ($report_type eq "by language") {
+        $BY_LANGUAGE  = 1;
+    } elsif ($report_type eq "by file")     {
+        $BY_FILE      = 1;
+    }
+    my $DELIM = ",";
+       $DELIM = $opt_csv_delimiter if defined $opt_csv_delimiter;
+
+    $elapsed_sec = 0.5 unless $elapsed_sec;
+
+    my $line = "Language${DELIM} ";
+       $line = "File${DELIM} " if $BY_FILE;
+    foreach my $item (qw(files blank comment code)) {
+        next if $BY_FILE and $item eq 'files';
+        foreach my $symbol ( '==', '!=', '+', '-', ) {
+            $line .= "$symbol $item${DELIM} ";
+        }
+    }
+    $line .= "\"$URL v $version T=$elapsed_sec s\"";
+    push @results, $line;
+
+    foreach my $lang_or_file (keys %{$rhhh_count}) {
+        $rhhh_count->{$lang_or_file}{'code'}{'added'} = 0 unless
+            defined $rhhh_count->{$lang_or_file}{'code'};
+    }
+    foreach my $lang_or_file (sort {
+                                 $rhhh_count->{$b}{'code'} <=>
+                                 $rhhh_count->{$a}{'code'}
+                               }
+                          keys %{$rhhh_count}) {
+        if ($BY_FILE) {
+            $line = rm_leading_tempdir($lang_or_file, \%TEMP_DIR) . "$DELIM ";
+        } else {
+            $line = $lang_or_file . "${DELIM} ";
+        }
+        if ($opt_by_percent) {
+          foreach my $item (qw(nFiles)) {
+              next if $BY_FILE and $item eq 'nFiles';
+              foreach my $symbol (qw(same modified added removed)) {
+                  if (defined $rhhh_count->{$lang_or_file}{$item}{$symbol}) {
+                      $line .= "$rhhh_count->{$lang_or_file}{$item}{$symbol}${DELIM} ";
+                  } else {
+                      $line .= "0${DELIM} ";
+                  }
+              }
+          }
+          foreach my $item (qw(blank comment)) {
+              foreach my $symbol (qw(same modified added removed)) {
+                  if (defined $rhhh_count->{$lang_or_file}{$item}{$symbol} and
+                      defined $rhhh_count->{$lang_or_file}{'code'}{$symbol} and
+                      $rhhh_count->{$lang_or_file}{'code'}{$symbol} > 0) {
+                      $line .= sprintf("%.2f", $rhhh_count->{$lang_or_file}{$item}{$symbol} / $rhhh_count->{$lang_or_file}{'code'}{$symbol} * 100).${DELIM};
+                  } else {
+                      $line .= "0.00${DELIM} ";
+                  }
+              }
+          }
+          foreach my $item (qw(code)) {
+              foreach my $symbol (qw(same modified added removed)) {
+                  if (defined $rhhh_count->{$lang_or_file}{$item}{$symbol}) {
+                      $line .= "$rhhh_count->{$lang_or_file}{$item}{$symbol}${DELIM} ";
+                  } else {
+                      $line .= "0${DELIM} ";
+                  }
+              }
+          }
+        } else {
+          foreach my $item (qw(nFiles blank comment code)) {
+              next if $BY_FILE and $item eq 'nFiles';
+              foreach my $symbol (qw(same modified added removed)) {
+                  if (defined $rhhh_count->{$lang_or_file}{$item}{$symbol}) {
+                      $line .= "$rhhh_count->{$lang_or_file}{$item}{$symbol}${DELIM} ";
+                  } else {
+                      $line .= "0${DELIM} ";
+                  }
+              }
+          }
+        }
+        push @results, $line;
+    }
+
+    print "<- diff_csv_report\n" if $opt_v > 2;
+    return @results;
+} # 1}}}
+sub rm_leading_tempdir {                     # {{{1
+    my ($in_file, $rh_temp_dirs, ) = @_;
+    my $clean_filename = $in_file;
+    foreach my $temp_d (keys %{$rh_temp_dirs}) {
+        if ($ON_WINDOWS) {
+        # \ -> / necessary to allow the next if test's
+        # m{} to work in the presence of spaces in file names
+            $temp_d         =~ s{\\}{/}g;
+            $clean_filename =~ s{\\}{/}g;
+        }
+        if ($clean_filename =~ m{^$temp_d/}) {
+            $clean_filename =~ s{^$temp_d/}{};
+            last;
+        }
+    }
+    $clean_filename =~ s{/}{\\}g if $ON_WINDOWS; # then go back from / to \
+    return $clean_filename;
+} # 1}}}
+sub generate_sql    {                        # {{{1
+    my ($elapsed_sec, # in
+        $rhh_count  , # in  count{TYPE}{lang|code|blank|comment|scaled}
+        $rh_scale   , # in
+       ) = @_;
+    print "-> generate_sql\n" if $opt_v > 2;
+
+#print "generate_sql A [$opt_sql_project]\n";
+    $opt_sql_project = cwd() unless defined $opt_sql_project;
+    $opt_sql_project = '' unless defined $opt_sql_project; # have seen cwd() fail
+#print "generate_sql B [$opt_sql_project]\n";
+    $opt_sql_project =~ s{/}{\\}g if $ON_WINDOWS;
+#print "generate_sql C [$opt_sql_project]\n";
+
+    my $schema = undef;
+    if ($opt_sql_style eq "oracle") {
+        $schema = "
+CREATE TABLE metadata
+(
+  timestamp   TIMESTAMP,
+  project     VARCHAR2(500 CHAR),
+  elapsed_s   NUMBER(10, 6)
+)
+/
+
+CREATE TABLE t
+(
+  project        VARCHAR2(500 CHAR),
+  language       VARCHAR2(500 CHAR),
+  file_fullname  VARCHAR2(500 CHAR),
+  file_dirname   VARCHAR2(500 CHAR),
+  file_basename  VARCHAR2(500 CHAR),
+  nblank         INTEGER,
+  ncomment       INTEGER,
+  ncode          INTEGER,
+  nscaled        NUMBER(10, 6)
+)
+/
+
+";
+    } else {
+        $schema = "
+create table metadata (          -- $URL v $VERSION
+                timestamp varchar(500),
+                Project   varchar(500),
+                elapsed_s real);
+create table t        (
+                Project       varchar(500)   ,
+                Language      varchar(500)   ,
+                File          varchar(500)   ,
+                File_dirname  varchar(500)   ,
+                File_basename varchar(500)   ,
+                nBlank        integer        ,
+                nComment      integer        ,
+                nCode         integer        ,
+                nScaled       real           );
+";
+    }
+    $opt_sql = "-" if $opt_sql eq "1";
+
+    my $open_mode = ">";
+       $open_mode = ">>" if $opt_sql_append;
+
+    my $fh = new IO::File; # $opt_sql, "w";
+    if (!$fh->open("${open_mode}${opt_sql}")) {
+        die "Unable to write to $opt_sql  $!\n";
+    }
+    print $fh $schema unless defined $opt_sql_append;
+
+    if ($opt_sql_style eq "oracle") {
+        printf $fh "insert into metadata values(TO_TIMESTAMP('%s','yyyy-mm-dd hh24:mi:ss'), '%s', %f);\n",
+                    strftime("%Y-%m-%d %H:%M:%S", localtime(time())),
+                    $opt_sql_project, $elapsed_sec;
+    } else {
+        print $fh "begin transaction;\n";
+        printf $fh "insert into metadata values('%s', '%s', %f);\n",
+                    strftime("%Y-%m-%d %H:%M:%S", localtime(time())),
+                    $opt_sql_project, $elapsed_sec;
+    }
+
+    my $nIns = 0;
+    foreach my $file (keys %{$rhh_count}) {
+        my $language = $rhh_count->{$file}{'lang'};
+        my $clean_filename = $file;
+        # If necessary (that is, if the input contained an
+        # archive file [.tar.gz, etc]), strip the temporary
+        # directory name which was used to expand the archive
+        # from the file name.
+
+        $clean_filename = rm_leading_tempdir($clean_filename, \%TEMP_DIR);
+        $clean_filename =~ s/\'/''/g;  # double embedded single quotes
+                                       # to escape them
+
+        printf $fh "insert into t values('%s', '%s', '%s', '%s', '%s', " .
+                   "%d, %d, %d, %f);\n",
+                    $opt_sql_project           ,
+                    $language                  ,
+                    $clean_filename            ,
+                    dirname( $clean_filename)  ,
+                    basename($clean_filename)  ,
+                    $rhh_count->{$file}{'blank'},
+                    $rhh_count->{$file}{'comment'},
+                    $rhh_count->{$file}{'code'}   ,
+                    $rhh_count->{$file}{'code'}*$rh_scale->{$language};
+
+        ++$nIns;
+        if (!($nIns % 10_000) and ($opt_sql_style ne "oracle")) {
+            print $fh "commit;\n";
+            print $fh "begin transaction;\n";
+        }
+    }
+    if ($opt_sql_style ne "oracle") {
+        print $fh "commit;\n";
+    }
+
+    $fh->close unless $opt_sql eq "-"; # don't try to close STDOUT
+    print "<- generate_sql\n" if $opt_v > 2;
+
+    # sample query:
+    #
+    #   select project, language,
+    #          sum(nCode)     as Code,
+    #          sum(nComment)  as Comments,
+    #          sum(nBlank)    as Blank,
+    #          sum(nCode)+sum(nComment)+sum(nBlank) as All_Lines,
+    #          100.0*sum(nComment)/(sum(nCode)+sum(nComment)) as Comment_Pct
+    #          from t group by Project, Language order by Project, Code desc;
+    #
+} # 1}}}
+sub output_header   {                        # {{{1
+    my ($header_line,
+        $hyphen_line,
+        $BY_FILE    ,)    = @_;
+    print "-> output_header\n" if $opt_v > 2;
+    my @R = ();
+    if      ($opt_xml) {
+        if (!$ALREADY_SHOWED_XML_SECTION) {
+            push @R, "<?xml version=\"1.0\"?>";
+            push @R, '<?xml-stylesheet type="text/xsl" href="' .
+                            $opt_xsl . '"?>' if $opt_xsl;
+            push @R, "<results>";
+            push @R, "<header>$header_line</header>";
+            $ALREADY_SHOWED_XML_SECTION = 1;
+        }
+        if ($BY_FILE) {
+            push @R, "<files>";
+        } else {
+            push @R, "<languages>";
+        }
+    } elsif ($opt_yaml) {
+        push @R, "---\n# $header_line";
+    } elsif ($opt_csv or $opt_md) {
+        # append the header to the end of the column headers
+        # to keep the output a bit cleaner from a spreadsheet
+        # perspective
+    } else {
+        if ($ALREADY_SHOWED_HEADER) {
+            push @R, "";
+        } else {
+            push @R, $header_line;
+            $ALREADY_SHOWED_HEADER = 1;
+        }
+        push @R, $hyphen_line;
+    }
+    print "<- output_header\n" if $opt_v > 2;
+    return @R;
+} # 1}}}
+sub generate_report {                        # {{{1
+    # returns an array of lines containing the results
+    my ($version    , # in
+        $elapsed_sec, # in
+        $report_type, # in  "by language" | "by report file" | "by file"
+        $rhh_count  , # in  count{TYPE}{nFiles|code|blank|comment|scaled}
+        $rh_scale   , # in
+       ) = @_;
+
+    print "-> generate_report\n" if $opt_v > 2;
+    my $DELIM = ",";
+       $DELIM = $opt_csv_delimiter if defined $opt_csv_delimiter;
+       $DELIM = "|" if defined $opt_md;
+
+    my @results       = ();
+
+    my $languages     = ();
+
+    my $sum_files     = 0;
+    my $sum_code      = 0;
+    my $sum_blank     = 0;
+    my $sum_comment   = 0;
+    my $max_len       = 0;
+    foreach my $language (keys %{$rhh_count}) {
+        $sum_files   += $rhh_count->{$language}{'nFiles'} ;
+        $sum_blank   += $rhh_count->{$language}{'blank'}  ;
+        $sum_comment += $rhh_count->{$language}{'comment'};
+        $sum_code    += $rhh_count->{$language}{'code'}   ;
+        $max_len      = length($language) if length($language) > $max_len;
+    }
+    my $column_1_offset = 0;
+       $column_1_offset = $max_len - 17 if $max_len > 17;
+    my $sum_lines = $sum_blank + $sum_comment + $sum_code;
+    $elapsed_sec = 0.5 unless $elapsed_sec;
+
+    my $spacing_0 = 23;
+    my $spacing_1 = 13;
+    my $spacing_2 =  9;
+    my $spacing_3 = 17;
+    if (!$opt_3) {
+        $spacing_1 = 19;
+        $spacing_2 = 14;
+        $spacing_3 = 28;
+    }
+    $spacing_0 += $column_1_offset;
+    $spacing_1 += $column_1_offset;
+    $spacing_3 += $column_1_offset;
+    my %Format = (
+        '1' => { 'xml' => 'name="%s" ',
+                 'txt' => "\%-${spacing_0}s ",
+               },
+        '2' => { 'xml' => 'name="%s" ',
+                 'txt' => "\%-${spacing_3}s ",
+               },
+        '3' => { 'xml' => 'files_count="%d" ',
+                 'txt' => '%5d ',
+               },
+        '4' => { 'xml' => 'blank="%d" comment="%d" code="%d" ',
+                 'txt' => "\%${spacing_2}d \%${spacing_2}d \%${spacing_2}d",
+               },
+        '5' => { 'xml' => 'blank="%3.2f" comment="%3.2f" code="%d" ',
+                 'txt' => "\%14.2f \%14.2f \%${spacing_2}d",
+               },
+        '6' => { 'xml' => 'factor="%.2f" scaled="%.2f" ',
+                 'txt' => ' x %6.2f = %14.2f',
+               },
+    );
+    my $Style = "txt";
+       $Style = "xml" if $opt_xml ;
+       $Style = "xml" if $opt_yaml;  # not a typo; just set to anything but txt
+       $Style = "xml" if $opt_json;  # not a typo; just set to anything but txt
+       $Style = "xml" if $opt_csv ;  # not a typo; just set to anything but txt
+
+    my $hyphen_line = sprintf "%s", '-' x (79 + $column_1_offset);
+       $hyphen_line = sprintf "%s", '-' x (68 + $column_1_offset)
+            if (!$opt_sum_reports) and (!$opt_3) and (68 + $column_1_offset) > 79;
+    my $data_line  = "";
+    my $first_column;
+    my $BY_LANGUAGE = 0;
+    my $BY_FILE     = 0;
+    if      ($report_type eq "by language") {
+        $first_column = "Language";
+        $BY_LANGUAGE  = 1;
+    } elsif ($report_type eq "by file")     {
+        $first_column = "File";
+        $BY_FILE      = 1;
+    } elsif ($report_type eq "by report file")     {
+        $first_column = "File";
+    } else {
+        $first_column = "Report File";
+    }
+
+    my $header_line  = sprintf "%s v %s", $URL, $version;
+       $header_line .= sprintf("  T=%.2f s (%.1f files/s, %.1f lines/s)",
+                        $elapsed_sec           ,
+                        $sum_files/$elapsed_sec,
+                        $sum_lines/$elapsed_sec) unless $opt_sum_reports;
+    if ($opt_xml or $opt_yaml or $opt_json) {
+        if (!$ALREADY_SHOWED_HEADER) {
+            push @results, xml_yaml_or_json_header($URL, $version, $elapsed_sec,
+                                                   $sum_files, $sum_lines, $BY_FILE);
+            $ALREADY_SHOWED_HEADER = 1 unless $opt_sum_reports;
+            # --sum-reports yields two xml or yaml files, one by
+            # language and one by report file, each of which needs a header
+        }
+        if ($opt_xml) {
+            if ($BY_FILE or ($report_type eq "by report file")) {
+                push @results, "<files>";
+            } else {
+                push @results, "<languages>";
+            }
+        }
+    } else {
+        push @results, output_header($header_line, $hyphen_line, $BY_FILE);
+    }
+
+    if ($Style eq "txt") {
+        # column headers
+        if (!$opt_3 and $BY_FILE) {
+            my $spacing_n = $spacing_1 - 11;
+            $data_line  = sprintf "%-${spacing_n}s ", $first_column;
+        } else {
+            $data_line  = sprintf "%-${spacing_1}s ", $first_column;
+        }
+        if ($BY_FILE) {
+            $data_line .= sprintf "%${spacing_2}s "  , " "    ;
+        } else {
+            $data_line .= sprintf "%${spacing_2}s "  , "files";
+        }
+        my $PCT_symbol = "";
+           $PCT_symbol = " \%" if $opt_by_percent;
+        $data_line .= sprintf "%${spacing_2}s %${spacing_2}s %${spacing_2}s",
+            "blank${PCT_symbol}"   ,
+            "comment${PCT_symbol}" ,
+            "code";
+        $data_line .= sprintf " %8s   %14s",
+            "scale"         ,
+            "3rd gen. equiv"
+              if $opt_3;
+        if ($opt_md) {
+            my @col_header  = ();
+            if ($data_line =~ m{\s%}) {
+                $data_line =~ s{\s%}{_%}g;
+                foreach my $w ( split(' ', $data_line) ) {
+                    $w =~ s{_%}{ %};
+                    push @col_header, $w;
+                }
+            } else {
+                push @col_header, split(' ', $data_line);
+            }
+            my @col_hyphens    = ( '-------:') x scalar(@col_header);
+               $col_hyphens[0] =   ':-------'; # first column left justified
+            push @results, join("|", @col_header );
+            push @results, join("|", @col_hyphens);
+        } else {
+            push @results, $data_line;
+            push @results, $hyphen_line;
+        }
+    }
+
+    if ($opt_csv)  {
+        my $header2;
+        if ($BY_FILE) {
+            $header2 = "language${DELIM}filename";
+        } else {
+            $header2 = "files${DELIM}language";
+        }
+        $header2 .= "${DELIM}blank${DELIM}comment${DELIM}code";
+        $header2 .= "${DELIM}scale${DELIM}3rd gen. equiv" if $opt_3;
+        $header2 .= ${DELIM} . '"' . $header_line . '"';
+        push @results, $header2;
+    }
+
+    my $sum_scaled = 0;
+####foreach my $lang_or_file (keys %{$rhh_count}) {
+####    $rhh_count->{$lang_or_file}{'code'} = 0 unless
+####        defined $rhh_count->{$lang_or_file}{'code'};
+####}
+    foreach my $lang_or_file (sort {
+                                 $rhh_count->{$b}{'code'} <=>
+                                 $rhh_count->{$a}{'code'}
+                               }
+                          keys %{$rhh_count}) {
+        next if $lang_or_file eq "by report file";
+        my ($factor, $scaled);
+        if ($BY_LANGUAGE or $BY_FILE) {
+            $factor = 1;
+            if ($BY_LANGUAGE) {
+                if (defined $rh_scale->{$lang_or_file}) {
+                    $factor = $rh_scale->{$lang_or_file};
+                } else {
+                    warn "No scale factor for $lang_or_file; using 1.00";
+                }
+            } else { # by individual code file
+                if ($report_type ne "by report file") {
+                    next unless defined $rhh_count->{$lang_or_file}{'lang'};
+                    next unless defined $rh_scale->{$rhh_count->{$lang_or_file}{'lang'}};
+                    $factor = $rh_scale->{$rhh_count->{$lang_or_file}{'lang'}};
+                }
+            }
+            $scaled = $factor*$rhh_count->{$lang_or_file}{'code'};
+        } else {
+            if (!defined $rhh_count->{$lang_or_file}{'scaled'}) {
+                $opt_3 = 0;
+                # If we're summing together files previously generated
+                # with --no3 then rhh_count->{$lang_or_file}{'scaled'}
+                # this variable will be undefined.  That should only
+                # happen when summing together by file however.
+            } elsif ($BY_LANGUAGE) {
+                warn "Missing scaled language info for $lang_or_file\n";
+            }
+            if ($opt_3) {
+                $scaled =         $rhh_count->{$lang_or_file}{'scaled'};
+                $factor = $scaled/$rhh_count->{$lang_or_file}{'code'};
+            }
+        }
+
+        if ($BY_FILE) {
+            my $clean_filename = rm_leading_tempdir($lang_or_file, \%TEMP_DIR);
+               $clean_filename = xml_metachars($clean_filename) if $opt_xml;
+            $data_line  = sprintf $Format{'1'}{$Style}, $clean_filename;
+        } else {
+            $data_line  = sprintf $Format{'2'}{$Style}, $lang_or_file;
+        }
+        $data_line .= sprintf $Format{3}{$Style}  ,
+                        $rhh_count->{$lang_or_file}{'nFiles'} unless $BY_FILE;
+        if ($opt_by_percent) {
+          my $DEN = compute_denominator($opt_by_percent       ,
+                        $rhh_count->{$lang_or_file}{'code'}   ,
+                        $rhh_count->{$lang_or_file}{'comment'},
+                        $rhh_count->{$lang_or_file}{'blank'}  );
+          $data_line .= sprintf $Format{5}{$Style}  ,
+              $rhh_count->{$lang_or_file}{'blank'}   / $DEN * 100,
+              $rhh_count->{$lang_or_file}{'comment'} / $DEN * 100,
+              $rhh_count->{$lang_or_file}{'code'}   ;
+        } else {
+          $data_line .= sprintf $Format{4}{$Style}  ,
+              $rhh_count->{$lang_or_file}{'blank'}  ,
+              $rhh_count->{$lang_or_file}{'comment'},
+              $rhh_count->{$lang_or_file}{'code'}   ;
+        }
+        $data_line .= sprintf $Format{6}{$Style}  ,
+            $factor                               ,
+            $scaled if $opt_3;
+        $sum_scaled  += $scaled if $opt_3;
+
+        if ($opt_xml) {
+            if (defined $rhh_count->{$lang_or_file}{'lang'}) {
+                my $lang = $rhh_count->{$lang_or_file}{'lang'};
+                if (!defined $languages->{$lang}) {
+                    $languages->{$lang} = $lang;
+                }
+                $data_line.=' language="' . $lang . '" ';
+            }
+            if ($BY_FILE or ($report_type eq "by report file")) {
+                push @results, "  <file " . $data_line . "/>";
+            } else {
+                push @results, "  <language " . $data_line . "/>";
+            }
+        } elsif ($opt_yaml or $opt_json) {
+            my ($Q, $open_B, $close_B, $start, $C) = yaml_to_json_separators();
+            push @results,"${Q}$lang_or_file${Q} :$open_B";
+            push @results,"  ${Q}nFiles${Q}: " . $rhh_count->{$lang_or_file}{'nFiles'} . $C
+                unless $BY_FILE;
+            if ($opt_by_percent) {
+              my $DEN = compute_denominator($opt_by_percent       ,
+                            $rhh_count->{$lang_or_file}{'code'}   ,
+                            $rhh_count->{$lang_or_file}{'comment'},
+                            $rhh_count->{$lang_or_file}{'blank'}  );
+              push @results,"  ${Q}blank_pct${Q}: "   .
+                sprintf("%3.2f", $rhh_count->{$lang_or_file}{'blank'} / $DEN * 100) . $C;
+              push @results,"  ${Q}comment_pct${Q}: " .
+                sprintf("%3.2f", $rhh_count->{$lang_or_file}{'comment'} / $DEN * 100) . $C;
+              push @results,"  ${Q}code${Q}: "    . $rhh_count->{$lang_or_file}{'code'}  . $C;
+            } else {
+              push @results,"  ${Q}blank${Q}: "   . $rhh_count->{$lang_or_file}{'blank'}   . $C;
+              push @results,"  ${Q}comment${Q}: " . $rhh_count->{$lang_or_file}{'comment'} . $C;
+              push @results,"  ${Q}code${Q}: "    . $rhh_count->{$lang_or_file}{'code'}    . $C;
+            }
+            push @results,"  ${Q}language${Q}: "  . $Q . $rhh_count->{$lang_or_file}{'lang'} . $Q . $C
+                if $BY_FILE;
+            if ($opt_3) {
+                push @results, "  ${Q}scaled${Q}: " . $scaled . $C;
+                push @results, "  ${Q}factor${Q}: " . $factor . $C;
+            }
+            if ($opt_json) { # replace the trailing comma with }, on the last line
+                $results[-1] =~ s/,\s*$/},/;
+            }
+        } elsif ($opt_csv or $opt_md) {
+            my $extra_3 = "";
+               $extra_3 = "${DELIM}$factor${DELIM}$scaled" if $opt_3;
+            my $first_column = undef;
+            my $clean_name   = $lang_or_file;
+            my $str;
+            if ($opt_csv) {
+                if ($BY_FILE) {
+                    $first_column = $rhh_count->{$lang_or_file}{'lang'};
+                    $clean_name   = rm_leading_tempdir($lang_or_file, \%TEMP_DIR);
+                } else {
+                    $first_column = $rhh_count->{$lang_or_file}{'nFiles'};
+                }
+                $str = $first_column   . ${DELIM} .
+                       $clean_name     . ${DELIM};
+            } else {
+                if ($BY_FILE) {
+                    $first_column = $rhh_count->{$lang_or_file}{'lang'};
+                    $clean_name   = rm_leading_tempdir($lang_or_file, \%TEMP_DIR);
+                    $str = $clean_name . ${DELIM};
+                } else {
+                    $first_column = $rhh_count->{$lang_or_file}{'nFiles'};
+                    $str = $clean_name     . ${DELIM} .
+                           $first_column   . ${DELIM};
+                }
+            }
+            if ($opt_by_percent) {
+              my $DEN = compute_denominator($opt_by_percent               ,
+                            $rhh_count->{$lang_or_file}{'code'}   ,
+                            $rhh_count->{$lang_or_file}{'comment'},
+                            $rhh_count->{$lang_or_file}{'blank'}  );
+              $str .= sprintf("%3.2f", $rhh_count->{$lang_or_file}{'blank'}   / $DEN * 100) . ${DELIM} .
+                      sprintf("%3.2f", $rhh_count->{$lang_or_file}{'comment'} / $DEN * 100) . ${DELIM} .
+                      $rhh_count->{$lang_or_file}{'code'};
+            } else {
+              $str .= $rhh_count->{$lang_or_file}{'blank'}  . ${DELIM} .
+                      $rhh_count->{$lang_or_file}{'comment'}. ${DELIM} .
+                      $rhh_count->{$lang_or_file}{'code'};
+            }
+            $str .= $extra_3;
+            push @results, $str;
+
+        } else {
+            push @results, $data_line;
+        }
+    }
+
+    my $avg_scale = 1;  # weighted average of scale factors
+       $avg_scale = sprintf("%.2f", $sum_scaled / $sum_code)
+            if $sum_code and $opt_3;
+
+    if ($opt_xml) {
+        $data_line = "";
+        if (!$BY_FILE) {
+            $data_line .= sprintf "sum_files=\"%d\" ", $sum_files;
+        }
+        if ($opt_by_percent) {
+          my $DEN = compute_denominator($opt_by_percent    ,
+                        $sum_code, $sum_comment, $sum_blank);
+          $data_line .= sprintf $Format{'5'}{$Style},
+              $sum_blank   / $DEN * 100,
+              $sum_comment / $DEN * 100,
+              $sum_code    ;
+        } else {
+          $data_line .= sprintf $Format{'4'}{$Style},
+              $sum_blank   ,
+              $sum_comment ,
+              $sum_code    ;
+        }
+        $data_line .= sprintf $Format{'6'}{$Style},
+            $avg_scale   ,
+            $sum_scaled  if $opt_3;
+        push @results, "  <total " . $data_line . "/>";
+
+        if ($BY_FILE or ($report_type eq "by report file")) {
+            push @results, "</files>";
+        } else {
+            foreach my $language (keys %{$languages}) {
+                push @results, '  <language name="' . $language . '"/>';
+            }
+            push @results, "</languages>";
+        }
+
+        if (!$opt_by_file_by_lang or $ALREADY_SHOWED_XML_SECTION) {
+            push @results, "</results>";
+        } else {
+            $ALREADY_SHOWED_XML_SECTION = 1;
+        }
+    } elsif ($opt_yaml or $opt_json) {
+        my ($Q, $open_B, $close_B, $start, $C) = yaml_to_json_separators();
+        push @results, "${Q}SUM${Q}: ${open_B}";
+        if ($opt_by_percent) {
+          my $DEN = compute_denominator($opt_by_percent    ,
+                        $sum_code, $sum_comment, $sum_blank);
+          push @results, "  ${Q}blank${Q}: "  . sprintf("%.2f", $sum_blank   / $DEN * 100) . $C;
+          push @results, "  ${Q}comment${Q}: ". sprintf("%.2f", $sum_comment / $DEN * 100) . $C;
+          push @results, "  ${Q}code${Q}: "   . $sum_code    . $C;
+        } else {
+          push @results, "  ${Q}blank${Q}: "  . $sum_blank   . $C;
+          push @results, "  ${Q}comment${Q}: ". $sum_comment . $C;
+          push @results, "  ${Q}code${Q}: "   . $sum_code    . $C;
+        }
+        push @results, "  ${Q}nFiles${Q}: " . $sum_files   . $C;
+        if ($opt_3) {
+            push @results, "  ${Q}scaled${Q}: " . $sum_scaled . $C;
+            push @results, "  ${Q}factor${Q}: " . $avg_scale  . $C;
+        }
+        if ($opt_json) {
+            $results[-1] =~ s/,\s*$/} }/;
+        }
+    } elsif ($opt_csv) {
+        # do nothing
+    } else {
+
+        if ($BY_FILE) {
+            $data_line  = sprintf "%-${spacing_0}s ", "SUM:"  ;
+        } else {
+            $data_line  = sprintf "%-${spacing_1}s ", "SUM:"  ;
+            $data_line .= sprintf "%${spacing_2}d ", $sum_files;
+        }
+        if ($opt_by_percent) {
+          my $DEN = compute_denominator($opt_by_percent    ,
+                        $sum_code, $sum_comment, $sum_blank);
+          $data_line .= sprintf $Format{'5'}{$Style},
+              $sum_blank   / $DEN * 100,
+              $sum_comment / $DEN * 100,
+              $sum_code    ;
+        } else {
+          $data_line .= sprintf $Format{'4'}{$Style},
+              $sum_blank   ,
+              $sum_comment ,
+              $sum_code    ;
+        }
+        $data_line .= sprintf $Format{'6'}{$Style},
+            $avg_scale   ,
+            $sum_scaled if $opt_3;
+        if ($opt_md) {
+            my @words = split(' ', $data_line);
+            my $n_cols = scalar(@words);
+#           my $n_cols = scalar(split(' ', $data_line));  # deprecated
+            $data_line =~ s/\s+/\|/g;
+            my @col_hyphens    = ( '--------') x $n_cols;
+            push @results, join("|", @col_hyphens);
+            push @results, $data_line   if $sum_files > 1 or $opt_sum_one;
+            unshift @results, ( "cloc|$header_line", "--- | ---", "", );
+        } else {
+            push @results, $hyphen_line if $sum_files > 1 or $opt_sum_one;
+            push @results, $data_line   if $sum_files > 1 or $opt_sum_one;
+            push @results, $hyphen_line;
+        }
+    }
+    write_xsl_file() if $opt_xsl and $opt_xsl eq $CLOC_XSL;
+    print "<- generate_report\n" if $opt_v > 2;
+    return @results;
+} # 1}}}
+sub print_errors {                           # {{{1
+    my ($rh_Error_Codes, # in
+        $raa_errors    , # in
+       ) = @_;
+
+    print "-> print_errors\n" if $opt_v > 2;
+    my %error_string = reverse(%{$rh_Error_Codes});
+    my $nErrors      = scalar @{$raa_errors};
+    warn sprintf "\n%d error%s:\n", plural_form(scalar @Errors);
+    for (my $i = 0; $i < $nErrors; $i++) {
+        warn sprintf "%s:  %s\n",
+                     $error_string{ $raa_errors->[$i][0] },
+                     $raa_errors->[$i][1] ;
+    }
+    print "<- print_errors\n" if $opt_v > 2;
+
+} # 1}}}
+sub write_lang_def {                         # {{{1
+    my ($file                     ,
+        $rh_Language_by_Extension , # in
+        $rh_Language_by_Script    , # in
+        $rh_Language_by_File      , # in
+        $rhaa_Filters_by_Language , # in
+        $rh_Not_Code_Extension    , # in
+        $rh_Not_Code_Filename     , # in
+        $rh_Scale_Factor          , # in
+        $rh_EOL_Continuation_re   , # in
+       ) = @_;
+
+    print "-> write_lang_def($file)\n" if $opt_v > 2;
+    my $OUT = new IO::File $file, "w";
+    die "Unable to write to $file\n" unless defined $OUT;
+
+    foreach my $language (sort keys %{$rhaa_Filters_by_Language}) {
+        next if $language =~ /Brain/;
+        next if $language eq "MATLAB/Mathematica/Objective C/MUMPS/Mercury" or
+                $language eq "PHP/Pascal"                       or
+                $language eq "Pascal/Puppet"                    or
+                $language eq "Lisp/OpenCL"                      or
+                $language eq "Lisp/Julia"                       or
+                $language eq "Perl/Prolog"                      or
+                $language eq "D/dtrace"                         or
+                $language eq "IDL/Qt Project/Prolog"            or
+                $language eq "Fortran 77/Forth"                 or
+                $language eq "F#/Forth"                         or
+                $language eq "Verilog-SystemVerilog/Coq"        or
+                $language eq "TypeScript/Qt Linguist"           or
+                $language eq "Qt/Glade"                         or
+                $language eq "(unknown)";
+        printf $OUT "%s\n", $language;
+        foreach my $filter (@{$rhaa_Filters_by_Language->{$language}}) {
+            printf $OUT "    filter %s", $filter->[0];
+            printf $OUT " %s", $filter->[1] if defined $filter->[1];
+            # $filter->[0] == 'remove_between_general',
+            #                 'remove_between_regex', and
+            #                 'remove_matches_2re' have two args
+            printf $OUT " %s", $filter->[2] if defined $filter->[2];
+            print  $OUT "\n";
+        }
+        foreach my $ext (sort keys %{$rh_Language_by_Extension}) {
+            if ($language eq $rh_Language_by_Extension->{$ext}) {
+                printf $OUT "    extension %s\n", $ext;
+            }
+        }
+        foreach my $filename (sort keys %{$rh_Language_by_File}) {
+            if ($language eq $rh_Language_by_File->{$filename}) {
+                printf $OUT "    filename %s\n", $filename;
+            }
+        }
+        foreach my $script_exe (sort keys %{$rh_Language_by_Script}) {
+            if ($language eq $rh_Language_by_Script->{$script_exe}) {
+                printf $OUT "    script_exe %s\n", $script_exe;
+            }
+        }
+        printf $OUT "    3rd_gen_scale %.2f\n", $rh_Scale_Factor->{$language};
+        if (defined $rh_EOL_Continuation_re->{$language}) {
+            printf $OUT "    end_of_line_continuation %s\n",
+                $rh_EOL_Continuation_re->{$language};
+        }
+    }
+
+    $OUT->close;
+    print "<- write_lang_def\n" if $opt_v > 2;
+} # 1}}}
+sub read_lang_def {                          # {{{1
+    my ($file                     ,
+        $rh_Language_by_Extension , # out
+        $rh_Language_by_Script    , # out
+        $rh_Language_by_File      , # out
+        $rhaa_Filters_by_Language , # out
+        $rh_Not_Code_Extension    , # out
+        $rh_Not_Code_Filename     , # out
+        $rh_Scale_Factor          , # out
+        $rh_EOL_Continuation_re   , # out
+        $rh_EOL_abc,
+       ) = @_;
+
+
+    print "-> read_lang_def($file)\n" if $opt_v > 2;
+    my $IN = new IO::File $file, "r";
+    die "Unable to read $file.\n" unless defined $IN;
+
+    my $language = "";
+    while (<$IN>) {
+        next if /^\s*#/ or /^\s*$/;
+
+        if (/^(\w+.*?)\s*$/) {
+            $language = $1;
+            next;
+        }
+        die "Missing computer language name, line $. of $file\n"
+            unless $language;
+
+        if      (/^\s{4}filter\s+(remove_between_(general|2re|regex))
+                       \s+(\S+)\s+(\S+)s*$/x) {
+            push @{$rhaa_Filters_by_Language->{$language}}, [
+                  $1 , $3 , $4 ]
+
+        } elsif (/^\s{4}filter\s+(\w+)\s*$/) {
+            push @{$rhaa_Filters_by_Language->{$language}}, [ $1 ]
+
+        } elsif (/^\s{4}filter\s+(\w+)\s+(.*?)\s*$/) {
+            push @{$rhaa_Filters_by_Language->{$language}}, [ $1 , $2 ]
+
+        } elsif (/^\s{4}extension\s+(\S+)\s*$/) {
+            if (defined $rh_Language_by_Extension->{$1}) {
+                die "File extension collision:  $1 ",
+                    "maps to languages '$rh_Language_by_Extension->{$1}' ",
+                    "and '$language'\n" ,
+                    "Edit $file and remove $1 from one of these two ",
+                    "language definitions.\n";
+            }
+            $rh_Language_by_Extension->{$1} = $language;
+
+        } elsif (/^\s{4}filename\s+(\S+)\s*$/) {
+            $rh_Language_by_File->{$1} = $language;
+
+        } elsif (/^\s{4}script_exe\s+(\S+)\s*$/) {
+            $rh_Language_by_Script->{$1} = $language;
+
+        } elsif (/^\s{4}3rd_gen_scale\s+(\S+)\s*$/) {
+            $rh_Scale_Factor->{$language} = $1;
+
+        } elsif (/^\s{4}end_of_line_continuation\s+(\S+)\s*$/) {
+            $rh_EOL_Continuation_re->{$language} = $1;
+
+        } else {
+            die "Unexpected data line $. of $file:\n$_\n";
+        }
+
+    }
+    $IN->close;
+    print "<- read_lang_def\n" if $opt_v > 2;
+} # 1}}}
+sub merge_lang_def {                         # {{{1
+    my ($file                     ,
+        $rh_Language_by_Extension , # in/out
+        $rh_Language_by_Script    , # in/out
+        $rh_Language_by_File      , # in/out
+        $rhaa_Filters_by_Language , # in/out
+        $rh_Not_Code_Extension    , # in/out
+        $rh_Not_Code_Filename     , # in/out
+        $rh_Scale_Factor          , # in/out
+        $rh_EOL_Continuation_re   , # in/out
+        $rh_EOL_abc,
+       ) = @_;
+
+
+    print "-> merge_lang_def($file)\n" if $opt_v > 2;
+    my $IN = new IO::File $file, "r";
+    die "Unable to read $file.\n" unless defined $IN;
+
+    my $language        = "";
+    my $already_know_it = undef;
+    while (<$IN>) {
+        next if /^\s*#/ or /^\s*$/;
+
+        if (/^(\w+.*?)\s*$/) {
+            $language = $1;
+            $already_know_it = defined $rh_Scale_Factor->{$language};
+            next;
+        }
+        die "Missing computer language name, line $. of $file\n"
+            unless $language;
+
+        if      (/^    filter\s+(\w+)\s*$/) {
+            next if $already_know_it;
+            push @{$rhaa_Filters_by_Language->{$language}}, [ $1 ]
+
+        } elsif (/^    filter\s+(\w+)\s+(.*?)\s*$/) {
+            next if $already_know_it;
+            push @{$rhaa_Filters_by_Language->{$language}}, [ $1 , $2 ]
+
+        } elsif (/^    extension\s+(\S+)\s*$/) {
+            next if $already_know_it;
+            if (defined $rh_Language_by_Extension->{$1}) {
+                die "File extension collision:  $1 ",
+                    "maps to languages '$rh_Language_by_Extension->{$1}' ",
+                    "and '$language'\n" ,
+                    "Edit $file and remove $1 from one of these two ",
+                    "language definitions.\n";
+            }
+            $rh_Language_by_Extension->{$1} = $language;
+
+        } elsif (/^    filename\s+(\S+)\s*$/) {
+            next if $already_know_it;
+            $rh_Language_by_File->{$1} = $language;
+
+        } elsif (/^    script_exe\s+(\S+)\s*$/) {
+            next if $already_know_it;
+            $rh_Language_by_Script->{$1} = $language;
+
+        } elsif (/^    3rd_gen_scale\s+(\S+)\s*$/) {
+            next if $already_know_it;
+            $rh_Scale_Factor->{$language} = $1;
+
+        } elsif (/^    end_of_line_continuation\s+(\S+)\s*$/) {
+            next if $already_know_it;
+            $rh_EOL_Continuation_re->{$language} = $1;
+
+        } else {
+            die "Unexpected data line $. of $file:\n$_\n";
+        }
+
+    }
+    $IN->close;
+    print "<- merge_lang_def\n" if $opt_v > 2;
+} # 1}}}
+sub print_extension_info {                   # {{{1
+    my ($extension,) = @_;
+    if ($extension) {  # show information on this extension
+        foreach my $ext (sort {lc $a cmp lc $b } keys %Language_by_Extension) {
+            # Language_by_Extension{f}    = 'Fortran 77'
+            next if $Language_by_Extension{$ext} =~ /Brain/;
+            printf "%-15s -> %s\n", $ext, $Language_by_Extension{$ext}
+                if $ext =~ m{$extension}i;
+        }
+    } else {           # show information on all  extensions
+        foreach my $ext (sort {lc $a cmp lc $b } keys %Language_by_Extension) {
+            next if $Language_by_Extension{$ext} =~ /Brain/;
+            # Language_by_Extension{f}    = 'Fortran 77'
+            printf "%-15s -> %s\n", $ext, $Language_by_Extension{$ext};
+        }
+    }
+} # 1}}}
+sub print_language_info {                    # {{{1
+    my ($language,
+        $prefix ,) = @_;
+    my %extensions = (); # the subset matched by the given $language value
+    if ($language) {  # show information on this language
+        foreach my $ext (sort {lc $a cmp lc $b } keys %Language_by_Extension) {
+            # Language_by_Extension{f}    = 'Fortran 77'
+            push @{$extensions{$Language_by_Extension{$ext}} }, $ext
+                if lc $Language_by_Extension{$ext} eq lc $language;
+#               if $Language_by_Extension{$ext} =~ m{$language}i;
+        }
+    } else {          # show information on all  languages
+        foreach my $ext (sort {lc $a cmp lc $b } keys %Language_by_Extension) {
+            # Language_by_Extension{f}    = 'Fortran 77'
+            push @{$extensions{$Language_by_Extension{$ext}} }, $ext
+        }
+    }
+
+    # add exceptions (one file extension mapping to multiple languages)
+    if (!$language or $language =~ /^(Objective C|MATLAB|Mathematica|MUMPS|Mercury)$/i) {
+        push @{$extensions{'Objective C'}}, "m";
+        push @{$extensions{'MATLAB'}}     , "m";
+        push @{$extensions{'Mathematica'}}, "m";
+        push @{$extensions{'MUMPS'}}      , "m";
+        delete $extensions{'MATLAB/Mathematica/Objective C/MUMPS/Mercury'};
+    }
+    if (!$language or $language =~ /^(Lisp|OpenCL)$/i) {
+        push @{$extensions{'Lisp'}}  , "cl";
+        push @{$extensions{'OpenCL'}}, "cl";
+        delete $extensions{'Lisp/OpenCL'};
+    }
+    if (!$language or $language =~ /^(Lisp|Julia)$/i) {
+        push @{$extensions{'Lisp'}}  , "jl";
+        push @{$extensions{'Julia'}} , "jl";
+        delete $extensions{'Lisp/Julia'};
+    }
+    if (!$language or $language =~ /^(Perl|Prolog)$/i) {
+        push @{$extensions{'Perl'}}  , "pl";
+        push @{$extensions{'Prolog'}}, "pl";
+        delete $extensions{'Perl/Prolog'};
+    }
+    if (!$language or $language =~ /^(IDL|Qt Project|Prolog)$/i) {
+        push @{$extensions{'IDL'}}       , "pro";
+        push @{$extensions{'Qt Project'}}, "pro";
+        push @{$extensions{'Prolog'}}    , "pro";
+        delete $extensions{'IDL/Qt Project/Prolog'};
+    }
+    if (!$language or $language =~ /^(D|dtrace)$/i) {
+        push @{$extensions{'D'}}       , "d";
+        push @{$extensions{'dtrace'}}  , "d";
+        delete $extensions{'D/dtrace'};
+    }
+    if (!$language or $language =~ /^Forth$/) {
+        push @{$extensions{'Forth'}}     , "fs";
+        push @{$extensions{'Forth'}}     , "f";
+        push @{$extensions{'Forth'}}     , "for";
+        delete $extensions{'Fortran 77/Forth'};
+        delete $extensions{'F#/Forth'};
+    }
+    if (!$language or $language =~ /^Fortran 77$/) {
+        push @{$extensions{'Fortran 77'}}, "f";
+        push @{$extensions{'Fortran 77'}}, "for";
+        push @{$extensions{'F#'}}        , "fs";
+        delete $extensions{'Fortran 77/Forth'};
+    }
+    if (!$language or $language =~ /^F#$/) {
+        push @{$extensions{'F#'}}        , "fs";
+        delete $extensions{'F#/Forth'};
+    }
+    if (!$language or $language =~ /^(Verilog-SystemVerilog|Coq)$/) {
+        push @{$extensions{'Coq'}}                   , "v";
+        push @{$extensions{'Verilog-SystemVerilog'}} , "v";
+        delete $extensions{'Verilog-SystemVerilog/Coq'};
+    }
+    if (!$language or $language =~ /^(TypeScript|Qt Linguist)$/) {
+        push @{$extensions{'TypeScript'}}  , "ts";
+        push @{$extensions{'Qt Linguist'}} , "ts";
+        delete $extensions{'TypeScript/Qt Linguist'};
+    }
+    if (!$language or $language =~ /^(Qt|Glade)$/) {
+        push @{$extensions{'Glade'}} , "ui";
+        push @{$extensions{'Qt'}}    , "ui";
+        delete $extensions{'Qt/Glade'};
+    }
+    if (!$language or $language =~ /^(Ant)$/i) {
+        push @{$extensions{'Ant'}}  , "build.xml";
+        delete $extensions{'Ant/XML'};
+    }
+    if ($opt_explain) {
+        return unless $extensions{$language};
+        if ($prefix) {
+            printf "%s %s\n", $prefix, join(", ", @{$extensions{$language}});
+        } else {
+            printf "%-26s (%s)\n", $language, join(", ", @{$extensions{$language}});
+        }
+    } else {
+        if (%extensions) {
+            foreach my $lang (sort {lc $a cmp lc $b } keys %extensions) {
+                next if $lang =~ /Brain/;
+                if ($prefix) {
+                    printf "%s %s\n", $prefix, join(", ", @{$extensions{$lang}});
+                } else {
+                    printf "%-26s (%s)\n", $lang, join(", ", @{$extensions{$lang}});
+                }
+            }
+        }
+    }
+} # 1}}}
+sub print_language_filters {                 # {{{1
+    my ($language,) = @_;
+    if (!$Filters_by_Language{$language} or
+        !@{$Filters_by_Language{$language}}) {
+        warn "Unknown language: $language\n";
+        warn "Use --show-lang to list all defined languages.\n";
+        return;
+    }
+    printf "%s\n", $language;
+    foreach my $filter (@{$Filters_by_Language{$language}}) {
+        printf "    filter %s", $filter->[0];
+        printf "  %s", $filter->[1] if defined $filter->[1];
+        printf "  %s", $filter->[2] if defined $filter->[2];
+        print  "\n";
+    }
+    print_language_info($language, "    extensions:");
+} # 1}}}
+sub make_file_list {                         # {{{1
+    my ($ra_arg_list,  # in   file and/or directory names to examine
+        $rh_Err     ,  # in   hash of error codes
+        $raa_errors ,  # out  errors encountered
+        $rh_ignored ,  # out  files not recognized as computer languages
+        ) = @_;
+    print "-> make_file_list(@{$ra_arg_list})\n" if $opt_v > 2;
+
+    my ($fh, $filename);
+    if ($opt_categorized) {
+        $filename = $opt_categorized;
+        $fh = new IO::File $filename, "+>";  # open for read/write
+        die "Unable to write to $filename:  $!\n" unless defined $fh;
+    } elsif ($opt_sdir) {
+        # write to the user-defined scratch directory
+        $filename = $opt_sdir . '/cloc_file_list.txt';
+        $fh = new IO::File $filename, "+>";  # open for read/write
+        die "Unable to write to $filename:  $!\n" unless defined $fh;
+    } else {
+        # let File::Temp create a suitable temporary file
+        ($fh, $filename) = tempfile(UNLINK => 1);  # delete file on exit
+        print "Using temp file list [$filename]\n" if $opt_v;
+    }
+
+    my @dir_list = ();
+    foreach my $file_or_dir (@{$ra_arg_list}) {
+#print "make_file_list file_or_dir=$file_or_dir\n";
+        my $size_in_bytes = 0;
+        if (!-r $file_or_dir) {
+            push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file_or_dir];
+            next;
+        }
+        if (is_file($file_or_dir)) {
+            if (!(-s $file_or_dir)) {   # 0 sized file, named pipe, socket
+                $rh_ignored->{$file_or_dir} = 'zero sized file';
+                next;
+            } elsif (-B $file_or_dir and !$opt_read_binary_files) {
+                # avoid binary files unless user insists on reading them
+                if ($opt_unicode) {
+                    # only ignore if not a Unicode file w/trivial
+                    # ASCII transliteration
+                    if (!unicode_file($file_or_dir)) {
+                        $rh_ignored->{$file_or_dir} = 'binary file';
+                        next;
+                    }
+                } else {
+                    $rh_ignored->{$file_or_dir} = 'binary file';
+                    next;
+                }
+            }
+            push @file_list, "$file_or_dir";
+        } elsif (is_dir($file_or_dir)) {
+            push @dir_list, $file_or_dir;
+        } else {
+            push @{$raa_errors}, [$rh_Err->{'Neither file nor directory'} , $file_or_dir];
+            $rh_ignored->{$file_or_dir} = 'not file, not directory';
+        }
+    }
+
+    # apply exclusion rules to file names passed in on the command line
+    my @new_file_list = ();
+    foreach my $File (@file_list) {
+        my ($volume, $directories, $filename) = File::Spec->splitpath( $File );
+        my $ignore_this_file = 0;
+        foreach my $Sub_Dir ( File::Spec->splitdir($directories) ) {
+            if ($Exclude_Dir{$Sub_Dir}) {
+                $Ignored{$Sub_Dir} = "($File) --exclude-dir=$Sub_Dir";
+                $ignore_this_file = 1;
+                last;
+            }
+        }
+        push @new_file_list, $File unless $ignore_this_file;
+    }
+    @file_list = @new_file_list;
+
+    foreach my $dir (@dir_list) {
+#print "make_file_list dir=$dir  Exclude_Dir{$dir}=$Exclude_Dir{$dir}\n";
+        # populates global variable @file_list
+        if ($Exclude_Dir{$dir}) {
+            $Ignored{$dir} = "--exclude-dir=$Exclude_Dir{$dir}";
+            next;
+        }
+        find({wanted     => \&files            ,
+              preprocess => \&find_preprocessor,
+              follow     =>  $opt_follow_links }, $dir);
+    }
+    # there's a possibility of file duplication if user provided a list
+    # file or --vcs command that returns directory names; squash these
+    my %unique_file_list = map { $_ => 1 } @file_list;
+    @file_list = sort keys %unique_file_list;
+
+    $nFiles_Found = scalar @file_list;
+    printf "%8d text file%s.\n", plural_form($nFiles_Found) unless $opt_quiet;
+    write_file($opt_found, sort @file_list) if $opt_found;
+
+    my $nFiles_Categorized = 0;
+    foreach my $file (@file_list) {
+        printf "classifying $file\n" if $opt_v > 2;
+
+        my $basename = basename $file;
+        if ($Not_Code_Filename{$basename}) {
+            $rh_ignored->{$file} = "listed in " . '$' .
+                "Not_Code_Filename{$basename}";
+            next;
+        } elsif ($basename =~ m{~$}) {
+            $rh_ignored->{$file} = "temporary editor file";
+            next;
+        }
+
+        my $size_in_bytes = (stat $file)[7];
+        my $language      = "";
+        if ($All_One_Language) {
+            # user over-rode auto-language detection by using
+            # --force-lang with just a language name (no extension)
+            $language      = $All_One_Language;
+        } else {
+            $language      = classify_file($file      ,
+                                           $rh_Err    ,
+                                           $raa_errors,
+                                           $rh_ignored);
+        }
+die  "make_file_list($file) undef size" unless defined $size_in_bytes;
+die  "make_file_list($file) undef lang" unless defined $language;
+        printf $fh "%d,%s,%s\n", $size_in_bytes, $language, $file;
+        ++$nFiles_Categorized;
+        #printf "classified %d files\n", $nFiles_Categorized
+        #    unless (!$opt_progress_rate or
+        #            ($nFiles_Categorized % $opt_progress_rate));
+    }
+    printf "classified %d files\r", $nFiles_Categorized
+        if !$opt_quiet and $nFiles_Categorized > 1;
+
+    print "<- make_file_list()\n" if $opt_v > 2;
+
+    return $fh;   # handle to the file containing the list of files to process
+}  # 1}}}
+sub invoke_generator {                       # {{{1
+    my ($generator, $ra_user_inputs) = @_;
+    # If user provided file/directory inputs, only return
+    # generated files that are in user's request.
+    # Populates global variable %Ignored.
+    print "-> invoke_generator($generator)\n" if $opt_v > 2;
+    open(FH, "$generator |") or
+        die "Failed to pipe $generator: $!";
+    my @files = ();
+    while(<FH>) {
+        chomp;
+        my $F = $_;
+        print "VCS input:  $F\n" if $opt_v >= 2;
+        if (!defined $ra_user_inputs or !@{$ra_user_inputs}) {
+            push @files, $F;
+        } else {
+            # is this file desired?
+            my $want_this_one = 0;
+            foreach my $file_dir (@{$ra_user_inputs}) {
+                if (/^$file_dir/) {
+                    $want_this_one = 1;
+                    last;
+                }
+            }
+            push @files, $F if $want_this_one;
+        }
+    }
+    close(FH);
+    # apply match/not-match file/dir filters to the list so far
+    my @post_filter = ();
+    foreach my $F (@files) {
+        if ($opt_match_f) {
+            push @post_filter, $F if basename($F) =~ m{$opt_match_f};
+            next;
+        }
+        if ($opt_match_d) {
+            push @post_filter, $F if $F =~ m{$opt_match_d};
+            next;
+        }
+        if ($opt_not_match_d) {
+            if ($opt_fullpath and $F =~ m{$opt_not_match_d}) {
+                $Ignored{$F} = "--not-match-d=$opt_not_match_d";
+                next;
+            } elsif (basename($F) =~ m{$opt_not_match_d}) {
+                $Ignored{$F} = "--not-match-d (basename) =$opt_not_match_d";
+                next;
+            }
+        }
+        if ($opt_not_match_f) {
+            push @post_filter, $F unless basename($F) =~ m{$opt_not_match_f};
+            next;
+        }
+        push @post_filter, $F;
+    }
+    print "<- invoke_generator\n" if $opt_v > 2;
+    return @post_filter;
+} # 1}}}
+sub remove_duplicate_files {                 # {{{1
+    my ($fh                   , # in
+        $rh_Language          , # out
+        $rh_unique_source_file, # out
+        $rh_Err               , # in
+        $raa_errors           , # out  errors encountered
+        $rh_ignored           , # out
+        ) = @_;
+
+    # Check for duplicate files by comparing file sizes.
+    # Where files are equally sized, compare their MD5 checksums.
+    print "-> remove_duplicate_files\n" if $opt_v > 2;
+
+    my $n = 0;
+    my %files_by_size = (); # files_by_size{ # bytes } = [ list of files ]
+    seek($fh, 0, 0); # rewind to beginning of the temp file
+    while (<$fh>) {
+        ++$n;
+        my ($size_in_bytes, $language, $file) = split(/,/, $_, 3);
+        chomp($file);
+        $rh_Language->{$file} = $language;
+        push @{$files_by_size{$size_in_bytes}}, $file;
+        if ($opt_skip_uniqueness) {
+            $rh_unique_source_file->{$file} = 1;
+        }
+    }
+    return if $opt_skip_uniqueness;
+    if ($opt_progress_rate and ($n > $opt_progress_rate)) {
+        printf "Duplicate file check %d files (%d known unique)\r",
+            $n, scalar keys %files_by_size;
+    }
+    $n = 0;
+    foreach my $bytes (sort {$a <=> $b} keys %files_by_size) {
+        ++$n;
+        printf "Unique: %8d files                                          \r",
+            $n unless (!$opt_progress_rate or ($n % $opt_progress_rate));
+        if (scalar @{$files_by_size{$bytes}} == 1) {
+            # only one file is this big; must be unique
+            $rh_unique_source_file->{$files_by_size{$bytes}[0]} = 1;
+            next;
+        } else {
+#print "equally sized files: ",join(", ", @{$files_by_size{$bytes}}), "\n";
+            # Files in the list @{$files_by_size{$bytes} all are
+            # $bytes long.  Sort the list by file basename.
+
+          # # sorting on basename causes repeatability problems
+          # # if the basename is not unique (eg "includeA/x.h"
+          # # and "includeB/x.h".  Instead, sort on full path.
+          # # Ref bug #114.
+          # my @sorted_bn = ();
+          # my %BN = map { basename($_) => $_ } @{$files_by_size{$bytes}};
+          # foreach my $F (sort keys %BN) {
+          #     push @sorted_bn, $BN{$F};
+          # }
+
+            my @sorted_bn = sort @{$files_by_size{$bytes}};
+
+            foreach my $F (different_files(\@sorted_bn  ,
+                                            $rh_Err     ,
+                                            $raa_errors ,
+                                            $rh_ignored ) ) {
+                $rh_unique_source_file->{$F} = 1;
+            }
+        }
+    }
+    print "<- remove_duplicate_files\n" if $opt_v > 2;
+} # 1}}}
+sub find_preprocessor {                      # {{{1
+    # invoked by File::Find's find() each time it enters a new directory
+    # Reads global variable %Exclude_Dir.
+    # Populates global variable %Ignored.
+    # Reject files/directories in cwd which are in the exclude list.
+    print "-> find_preprocessor(", cwd(), ")\n" if $opt_v > 2;
+    my @ok = ();
+
+#printf "TOP find_preprocessor\n";
+
+    foreach my $F_or_D (@_) {  # pure file or directory name, no separators
+        next if $F_or_D =~ /^\.{1,2}$/;  # skip .  and  ..
+        if ($Exclude_Dir{$F_or_D}) {
+            $Ignored{$File::Find::name} = "--exclude-dir=$Exclude_Dir{$F_or_D}";
+        } else {
+#printf "  F_or_D=%-20s File::Find::name=%s\n", $F_or_D, $File::Find::name;
+            if ($opt_not_match_d) {
+                if ($opt_fullpath and $File::Find::name =~ m{$opt_not_match_d}) {
+                    $Ignored{$File::Find::name} = "--not-match-d=$opt_not_match_d";
+                } elsif (!-d $F_or_D and basename($File::Find::name) =~ m{$opt_not_match_d}) {
+                    $Ignored{$File::Find::name} = "--not-match-d (basename) =$opt_not_match_d";
+                } else {
+                    push @ok, $F_or_D;
+                }
+            } else {
+                push @ok, $F_or_D;
+            }
+        }
+    }
+
+    print "<- find_preprocessor(@ok)\n" if $opt_v > 2;
+    return @ok;
+} # 1}}}
+sub files {                                  # {{{1
+    # invoked by File::Find's find()   Populates global variable @file_list.
+    # See also find_preprocessor() which prunes undesired directories.
+
+    my $Dir = cwd(); # not $File::Find::dir which just gives relative path
+    if ($opt_fullpath) {
+        # look at as much of the path as is known
+        if ($opt_match_f    ) {
+            return unless $File::Find::name =~ m{$opt_match_f};
+        }
+        if ($opt_not_match_f) {
+            return if     $File::Find::name =~ m{$opt_not_match_f};
+        }
+    } else {
+        # only look at the basename
+        if ($opt_match_f    ) { return unless /$opt_match_f/;     }
+        if ($opt_not_match_f) { return if     /$opt_not_match_f/; }
+    }
+    if ($opt_match_d    ) { return unless $Dir =~ m{$opt_match_d}     }
+
+    my $nBytes = -s $_ ;
+    if (!$nBytes) {
+        $Ignored{$File::Find::name} = 'zero sized file';
+        printf "files(%s)  zero size\n", $File::Find::name if $opt_v > 5;
+    }
+    return unless $nBytes  ; # attempting other tests w/pipe or socket will hang
+    if ($nBytes > $opt_max_file_size*1024**2) {
+        $Ignored{$File::Find::name} = "file size of " .
+            $nBytes/1024**2 . " MB exceeds max file size of " .
+            "$opt_max_file_size MB";
+        printf "file(%s)  exceeds $opt_max_file_size MB\n",
+            $File::Find::name if $opt_v > 5;
+        return;
+    }
+    my $is_dir = is_dir($_);
+    my $is_bin = -B     $_ ;
+    printf "files(%s)  size=%d is_dir=%d  -B=%d\n",
+        $File::Find::name, $nBytes, $is_dir, $is_bin if $opt_v > 5;
+    $is_bin = 0 if $opt_unicode and unicode_file($_);
+    $is_bin = 0 if $opt_read_binary_files;
+    return if $is_dir or $is_bin;
+    ++$nFiles_Found;
+    printf "%8d files\r", $nFiles_Found
+        unless (!$opt_progress_rate or ($nFiles_Found % $opt_progress_rate));
+    push @file_list, $File::Find::name;
+} # 1}}}
+sub archive_files {                          # {{{1
+    # invoked by File::Find's find()  Populates global variable @binary_archive
+    foreach my $ext (keys %Known_Binary_Archives) {
+        push @binary_archive, $File::Find::name
+            if $File::Find::name =~ m{$ext$};
+    }
+} # 1}}}
+sub is_file {                                # {{{1
+    # portable method to test if item is a file
+    # (-f doesn't work in ActiveState Perl on Windows)
+    my $item = shift @_;
+
+    if ($ON_WINDOWS) {
+        my $mode = (stat $item)[2];
+           $mode = 0 unless $mode;
+        if ($mode & 0100000) { return 1; }
+        else                 { return 0; }
+    } else {
+        return (-f $item);  # works on Unix, Linux, CygWin, z/OS
+    }
+} # 1}}}
+sub is_dir {                                 # {{{1
+    # portable method to test if item is a directory
+    # (-d doesn't work in older versions of ActiveState Perl on Windows)
+    my $item = shift @_;
+
+    if ($ON_WINDOWS) {
+        my $mode = (stat $item)[2];
+           $mode = 0 unless $mode;
+        if ($mode & 0040000) { return 1; }
+        else                 { return 0; }
+    } else {
+        return (-d $item);  # works on Unix, Linux, CygWin, z/OS
+    }
+} # 1}}}
+sub is_excluded {                            # {{{1
+    my ($file       , # in
+        $excluded   , # in   hash of excluded directories
+       ) = @_;
+    my($filename, $filepath, $suffix) = fileparse($file);
+    foreach my $path (sort keys %{$excluded}) {
+        return 1 if ($filepath =~ m{^$path/}i);
+    }
+} # 1}}}
+sub classify_file {                          # {{{1
+    my ($full_file   , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+        $rh_ignored  , # out
+       ) = @_;
+
+    print "-> classify_file($full_file)\n" if $opt_v > 2;
+    my $language = "(unknown)";
+
+    if (basename($full_file) eq "-" && defined $opt_stdin_name) {
+       $full_file = $opt_stdin_name;
+    }
+
+    my $look_at_first_line = 0;
+    my $file = basename $full_file;
+    if ($opt_autoconf and $file =~ /\.in$/) {
+       $file =~ s/\.in$//;
+    }
+    return $language if $Not_Code_Filename{$file}; # (unknown)
+    return $language if $file =~ m{~$}; # a temp edit file (unknown)
+    if (defined $Language_by_File{$file}) {
+        if      ($Language_by_File{$file} eq "Ant/XML") {
+            return Ant_or_XML(  $full_file, $rh_Err, $raa_errors);
+        } elsif ($Language_by_File{$file} eq "Maven/XML") {
+            return Maven_or_XML($full_file, $rh_Err, $raa_errors);
+        } else {
+            return $Language_by_File{$file};
+        }
+    }
+
+    if ($file =~ /\.([^\.]+)$/) { # has an extension
+      print "$full_file extension=[$1]\n" if $opt_v > 2;
+      my $extension = $1;
+         # Windows file names are case insensitive so map
+         # all extensions to lowercase there.
+         $extension = lc $extension if $ON_WINDOWS;
+      my @extension_list = ( $extension );
+      if ($file =~ /\.([^\.]+\.[^\.]+)$/) { # has a double extension
+          my $extension = $1;
+          $extension = lc $extension if $ON_WINDOWS;
+          unshift @extension_list, $extension;  # examine double ext first
+      }
+      foreach my $extension (@extension_list) {
+        if ($Not_Code_Extension{$extension} and
+           !$Forced_Extension{$extension}) {
+           # If .1 (for example) is an extension that would ordinarily be
+           # ignored but the user has insisted this be counted with the
+           # --force-lang option, then go ahead and count it.
+            $rh_ignored->{$full_file} =
+                'listed in $Not_Code_Extension{' . $extension . '}';
+            return $language;
+        }
+        if (defined $Language_by_Extension{$extension}) {
+            if ($Language_by_Extension{$extension} eq
+                'MATLAB/Mathematica/Objective C/MUMPS/Mercury') {
+                my $lang_M_or_O = "";
+                matlab_or_objective_C($full_file ,
+                                      $rh_Err    ,
+                                      $raa_errors,
+                                     \$lang_M_or_O);
+                if ($lang_M_or_O) {
+                    return $lang_M_or_O;
+                } else { # an error happened in matlab_or_objective_C()
+                    $rh_ignored->{$full_file} =
+                        'failure in matlab_or_objective_C()';
+                    return $language; # (unknown)
+                }
+            } elsif ($Language_by_Extension{$extension} eq 'PHP/Pascal') {
+                if (really_is_php($full_file)) {
+                    return 'PHP';
+                } elsif (really_is_incpascal($full_file)) {
+                    return 'Pascal';
+                } else {
+                    return $language; # (unknown)
+                }
+            } elsif ($Language_by_Extension{$extension} eq 'Pascal/Puppet') {
+                my $lang_Pasc_or_Pup = "";
+                pascal_or_puppet(     $full_file ,
+                                      $rh_Err    ,
+                                      $raa_errors,
+                                     \$lang_Pasc_or_Pup);
+                if ($lang_Pasc_or_Pup) {
+                    return $lang_Pasc_or_Pup;
+                } else { # an error happened in pascal_or_puppet()
+                    $rh_ignored->{$full_file} =
+                        'failure in pascal_or_puppet()';
+                    return $language; # (unknown)
+                }
+            } elsif ($Language_by_Extension{$extension} eq 'Lisp/OpenCL') {
+                return Lisp_or_OpenCL($full_file, $rh_Err, $raa_errors);
+            } elsif ($Language_by_Extension{$extension} eq 'Lisp/Julia') {
+                return Lisp_or_Julia( $full_file, $rh_Err, $raa_errors);
+            } elsif ($Language_by_Extension{$extension} eq 'Perl/Prolog') {
+                return Perl_or_Prolog($full_file, $rh_Err, $raa_errors);
+            } elsif ($Language_by_Extension{$extension} eq
+                     'IDL/Qt Project/Prolog') {
+                return IDL_or_QtProject($full_file, $rh_Err, $raa_errors);
+            } elsif ($Language_by_Extension{$extension} eq 'D/dtrace') {
+                # is it D or an init.d shell script?
+                my $a_script = really_is_D($full_file, $rh_Err, $raa_errors);
+                if ($a_script) {
+                    # could be dtrace, sh, bash or anything one would
+                    # write an init.d script in
+                    if (defined $Language_by_Script{$a_script}) {
+                        return $Language_by_Script{$a_script};
+                    } else {
+                        $rh_ignored->{$full_file} =
+                            "Unrecognized script language, '$a_script'";
+                    }
+                } else {
+                    return 'D';
+                }
+            } elsif ($Language_by_Extension{$extension} eq 'Fortran 77/Forth') {
+                return Forth_or_Fortran($full_file, $rh_Err, $raa_errors);
+            } elsif ($Language_by_Extension{$extension} eq 'F#/Forth') {
+                return Forth_or_Fsharp( $full_file, $rh_Err, $raa_errors);
+            } elsif ($Language_by_Extension{$extension} eq 'Verilog-SystemVerilog/Coq') {
+                return Verilog_or_Coq( $full_file, $rh_Err, $raa_errors);
+            } elsif ($Language_by_Extension{$extension} eq 'Smarty') {
+                if ($extension eq "smarty") {
+                    # unambiguous -- if ends with .smarty, is Smarty
+                    return $Language_by_Extension{$extension};
+                }
+                # Smarty extension .tpl is generic; make sure the
+                # file at least roughly resembles PHP.  Alternatively,
+                # if the user forces the issue, do the count.
+                my $force_smarty = 0;
+                foreach (@opt_force_lang) {
+                    if (lc($_) eq "smarty,tpl") {
+                        $force_smarty = 1;
+                        last;
+                    }
+                }
+                if (really_is_php($full_file) or $force_smarty) {
+                    return 'Smarty';
+                } else {
+                    return $language; # (unknown)
+                }
+            } elsif ($Language_by_Extension{$extension} eq 'TypeScript/Qt Linguist') {
+                return TypeScript_or_QtLinguist( $full_file, $rh_Err, $raa_errors);
+            } elsif ($Language_by_Extension{$extension} eq 'Qt/Glade') {
+                return Qt_or_Glade( $full_file, $rh_Err, $raa_errors);
+            } elsif ($Language_by_Extension{$extension} eq 'Brainfuck') {
+                if (really_is_bf($full_file)) {
+                    return $Language_by_Extension{$extension};
+                } else {
+                    return $language; # (unknown)
+                }
+            } else {
+                return $Language_by_Extension{$extension};
+            }
+        } else { # has an unmapped file extension
+            $look_at_first_line = 1;
+        }
+      }
+    } elsif (defined $Language_by_File{lc $file}) {
+        return $Language_by_File{lc $file};
+    } elsif ($opt_lang_no_ext and
+             defined $Filters_by_Language{$opt_lang_no_ext}) {
+        return $opt_lang_no_ext;
+    } else {  # no file extension
+        $look_at_first_line = 1;
+    }
+
+    if ($look_at_first_line) {
+        # maybe it is a shell/Perl/Python/Ruby/etc script that
+        # starts with pound bang:
+        #   #!/usr/bin/perl
+        #   #!/usr/bin/env perl
+        my $script_language = peek_at_first_line($full_file ,
+                                                 $rh_Err    ,
+                                                 $raa_errors);
+        if (!$script_language) {
+            $rh_ignored->{$full_file} = "language unknown (#2)";
+            # returns (unknown)
+        }
+        if (defined $Language_by_Script{$script_language}) {
+            if (defined $Filters_by_Language{
+                            $Language_by_Script{$script_language}}) {
+                $language = $Language_by_Script{$script_language};
+            } else {
+                $rh_ignored->{$full_file} =
+                    "undefined:  Filters_by_Language{" .
+                    $Language_by_Script{$script_language} .
+                    "} for scripting language $script_language";
+                # returns (unknown)
+            }
+        } else {
+            $rh_ignored->{$full_file} = "language unknown (#3)";
+            # returns (unknown)
+        }
+    }
+    print "<- classify_file($full_file)=$language\n" if $opt_v > 2;
+    return $language;
+} # 1}}}
+sub peek_at_first_line {                     # {{{1
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+       ) = @_;
+
+    print "-> peek_at_first_line($file)\n" if $opt_v > 2;
+
+    my $script_language = "";
+    if (!-r $file) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        return $script_language;
+    }
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        print "<- peek_at_first_line($file)\n" if $opt_v > 2;
+        return $script_language;
+    }
+    chomp(my $first_line = <$IN>);
+    if (defined $first_line) {
+#print "peek_at_first_line of [$file] first_line=[$first_line]\n";
+        if ($first_line =~ /^#\!\s*(\S.*?)$/) {
+#print "peek_at_first_line 1=[$1]\n";
+            my @pound_bang = split(' ', $1);
+#print "peek_at_first_line basename 0=[", basename($pound_bang[0]), "]\n";
+            if (basename($pound_bang[0]) eq "env" and
+                scalar @pound_bang > 1) {
+                $script_language = $pound_bang[1];
+#print "peek_at_first_line pound_bang A $pound_bang[1]\n";
+            } else {
+                $script_language = basename $pound_bang[0];
+#print "peek_at_first_line pound_bang B $script_language\n";
+            }
+        }
+    }
+    $IN->close;
+    print "<- peek_at_first_line($file)\n" if $opt_v > 2;
+    return $script_language;
+} # 1}}}
+sub different_files {                        # {{{1
+    # See which of the given files are unique by computing each file's MD5
+    # sum.  Return the subset of files which are unique.
+    my ($ra_files    , # in
+        $rh_Err      , # in
+        $raa_errors  , # out
+        $rh_ignored  , # out
+       ) = @_;
+
+    print "-> different_files(@{$ra_files})\n" if $opt_v > 2;
+    my %file_hash = ();  # file_hash{md5 hash} = [ file1, file2, ... ]
+    foreach my $F (@{$ra_files}) {
+        next if is_dir($F);  # needed for Windows
+        my $IN = new IO::File $F, "r";
+        if (!defined $IN) {
+            push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $F];
+            $rh_ignored->{$F} = 'cannot read';
+        } else {
+            if ($HAVE_Digest_MD5) {
+                binmode $IN;
+                my $MD5 = Digest::MD5->new->addfile($IN)->hexdigest;
+#print "$F, $MD5\n";
+                push @{$file_hash{$MD5}}, $F;
+            } else {
+                # all files treated unique
+                push @{$file_hash{$F}}, $F;
+            }
+            $IN->close;
+        }
+    }
+
+    # Loop over file sets having identical MD5 sums.  Within
+    # each set, pick the file that most resembles known source
+    # code.
+    my @unique = ();
+    for my $md5 (sort keys %file_hash) {
+        my $i_best = 0;
+        for (my $i = 1; $i < scalar(@{$file_hash{$md5}}); $i++) {
+            my $F = $file_hash{$md5}[$i];
+            my (@nul_a, %nul_h);
+            my $language = classify_file($F, $rh_Err,
+                                        # don't save these errors; pointless
+                                        \@nul_a, \%nul_h);
+            $i_best = $i if $language ne "(unknown)";
+        }
+        # keep the best one found and identify the rest as ignored
+        for (my $i = 0; $i < scalar(@{$file_hash{$md5}}); $i++) {
+            if ($i == $i_best) {
+                push @unique, $file_hash{$md5}[$i_best];
+            } else {
+                $rh_ignored->{$file_hash{$md5}[$i]} = "duplicate of " .
+                    $file_hash{$md5}[$i_best];
+            }
+        }
+
+    }
+    print "<- different_files(@unique)\n" if $opt_v > 2;
+    return @unique;
+} # 1}}}
+sub call_counter {                           # {{{1
+    my ($file     , # in
+        $language , # in
+        $ra_Errors, # out
+       ) = @_;
+
+    # Logic:  pass the file through the following filters:
+    #         1. remove blank lines
+    #         2. remove comments using each filter defined for this language
+    #            (example:  SQL has two, remove_starts_with(--) and
+    #             remove_c_comments() )
+    #         3. compute comment lines as
+    #               total lines - blank lines - lines left over after all
+    #                   comment filters have been applied
+
+    print "-> call_counter($file, $language)\n" if $opt_v > 2;
+#print "call_counter:  ", Dumper(@routines), "\n";
+
+    my @lines = ();
+    my $ascii = "";
+    if (-B $file and $opt_unicode) {
+        # was binary so must be unicode
+
+        $/ = undef;
+        my $IN = new IO::File $file, "r";
+        my $bin_text = <$IN>;
+        $IN->close;
+        $/ = "\n";
+
+        $ascii = unicode_to_ascii( $bin_text );
+        @lines = split("\n", $ascii );
+        foreach (@lines) { $_ = "$_\n"; }
+
+    } else {
+        # regular text file
+        @lines = read_file($file);
+        $ascii = join('', @lines);
+    }
+
+    my @original_lines = @lines;
+    my $total_lines    = scalar @lines;
+
+    print_lines($file, "Original file:", \@lines) if $opt_print_filter_stages;
+    @lines = rm_blanks(\@lines, $language, \%EOL_Continuation_re); # remove blank lines
+    my $blank_lines = $total_lines - scalar @lines;
+    print_lines($file, "Blank lines removed:", \@lines)
+        if $opt_print_filter_stages;
+
+    @lines = rm_comments(\@lines, $language, $file,
+                               \%EOL_Continuation_re);
+
+    my $comment_lines = $total_lines - $blank_lines - scalar  @lines;
+    if ($opt_strip_comments) {
+        my $stripped_file = "";
+        if ($opt_original_dir) {
+            $stripped_file =          $file . ".$opt_strip_comments";
+        } else {
+            $stripped_file = basename $file . ".$opt_strip_comments";
+        }
+        write_file($stripped_file, @lines);
+    }
+    if ($opt_html and !$opt_diff) {
+        chomp(@original_lines);  # includes blank lines, comments
+        chomp(@lines);           # no blank lines, no comments
+
+        my (@diff_L, @diff_R, %count);
+
+        # remove blank lines to get better quality diffs; count
+        # blank lines separately
+        my @original_lines_minus_white = ();
+        # however must keep track of how many blank lines were removed and
+        # where they were removed so that the HTML display can include it
+        my %blank_line  = ();
+        my $insert_line = 0;
+        foreach (@original_lines) {
+            if (/^\s*$/) {
+               ++$count{blank}{same};
+               ++$blank_line{ $insert_line };
+            } else {
+                ++$insert_line;
+                push @original_lines_minus_white, $_;
+            }
+        }
+
+        array_diff( $file                       ,   # in
+                   \@original_lines_minus_white ,   # in
+                   \@lines                      ,   # in
+                   "comment"                    ,   # in
+                   \@diff_L, \@diff_R,          ,   # out
+                    $ra_Errors);                    # in/out
+        write_comments_to_html($file, \@diff_L, \@diff_R, \%blank_line);
+#print Dumper("count", \%count);
+    }
+
+    print "<- call_counter($total_lines, $blank_lines, $comment_lines)\n"
+        if $opt_v > 2;
+    return ($total_lines, $blank_lines, $comment_lines);
+} # 1}}}
+sub windows_glob {                           # {{{1
+    # Windows doesn't expand wildcards.  Use code from Sean M. Burke's
+    # Win32::Autoglob module to do this.
+    return map {;
+        ( defined($_) and m/[\*\?]/ ) ? sort(glob($_)) : $_
+          } @_;
+} # 1}}}
+sub write_file {                             # {{{1
+    my ($file  , # in
+        @lines , # in
+       ) = @_;
+
+#print "write_file 1 [$file]\n";
+    # Do ~ expansion (by Tim LaBerge, fixes bug 2787984)
+    my $preglob_filename = $file;
+#print "write_file 2 [$preglob_filename]\n";
+    if ($ON_WINDOWS) {
+        $file = (windows_glob($file))[0];
+    } else {
+        $file = File::Glob::glob($file);
+    }
+#print "write_file 3 [$file]\n";
+    $file = $preglob_filename unless $file;
+#print "write_file 4 [$file]\n";
+
+    print "-> write_file($file)\n" if $opt_v > 2;
+
+    # Create the destination directory if it doesn't already exist.
+    my $abs_file_path = File::Spec->rel2abs( $file );
+    my ($volume, $directories, $filename) = File::Spec->splitpath( $abs_file_path );
+    mkpath($volume . $directories, 1, 0777);
+
+    my $OUT = new IO::File $file, "w";
+    if (defined $OUT) {
+        chomp(@lines);
+        print $OUT join("\n", @lines), "\n";
+        $OUT->close;
+    } else {
+        warn "Unable to write to $file\n";
+    }
+    print "Wrote $file" unless $opt_quiet;
+    print ", $CLOC_XSL" if $opt_xsl and $opt_xsl eq $CLOC_XSL;
+    print "\n" unless $opt_quiet;
+
+    print "<- write_file\n" if $opt_v > 2;
+} # 1}}}
+sub read_file  {                             # {{{1
+    my ($file, ) = @_;
+    my %BoM = (
+        "fe ff"           => 2 ,
+        "ff fe"           => 2 ,
+        "ef bb bf"        => 3 ,
+        "f7 64 4c"        => 3 ,
+        "0e fe ff"        => 3 ,
+        "fb ee 28"        => 3 ,
+        "00 00 fe ff"     => 4 ,
+        "ff fe 00 00"     => 4 ,
+        "2b 2f 76 38"     => 4 ,
+        "2b 2f 76 39"     => 4 ,
+        "2b 2f 76 2b"     => 4 ,
+        "2b 2f 76 2f"     => 4 ,
+        "dd 73 66 73"     => 4 ,
+        "84 31 95 33"     => 4 ,
+        "2b 2f 76 38 2d"  => 5 ,
+        );
+
+    print "-> read_file($file)\n" if $opt_v > 2;
+    my @lines = ();
+    my $IN = new IO::File $file, "r";
+    if (defined $IN) {
+        @lines = <$IN>;
+        $IN->close;
+        if ($lines[$#lines]) {  # test necessary for zero content files
+                                # (superfluous?)
+            # Some files don't end with a new line.  Force this:
+            $lines[$#lines] .= "\n" unless $lines[$#lines] =~ m/\n$/;
+        }
+    } else {
+        warn "Unable to read $file\n";
+    }
+
+    # Are first few characters of the file Unicode Byte Order
+    # Marks (http://en.wikipedia.org/wiki/Byte_Order_Mark)?
+    # If yes, remove them.
+    if (@lines) {
+        my @chrs   = split('', $lines[0]);
+        my $n_chrs = scalar @chrs;
+        my ($n2, $n3, $n4, $n5) = ('', '', '', '');
+        $n2 = sprintf("%x %x", map  ord, @chrs[0,1]) if $n_chrs >= 2;
+        $n3 = sprintf("%s %x", $n2, ord  $chrs[2])   if $n_chrs >= 3;
+        $n4 = sprintf("%s %x", $n3, ord  $chrs[3])   if $n_chrs >= 4;
+        $n5 = sprintf("%s %x", $n4, ord  $chrs[4])   if $n_chrs >= 5;
+        if      (defined $BoM{$n2}) { $lines[0] = substr $lines[0], 2;
+        } elsif (defined $BoM{$n3}) { $lines[0] = substr $lines[0], 3;
+        } elsif (defined $BoM{$n4}) { $lines[0] = substr $lines[0], 4;
+        } elsif (defined $BoM{$n5}) { $lines[0] = substr $lines[0], 5;
+        }
+    }
+
+    # Trim DOS line endings.  This allows Windows files
+    # to be diff'ed with Unix files without line endings
+    # causing every line to differ.
+    foreach (@lines) { s/\cM$// }
+
+    print "<- read_file\n" if $opt_v > 2;
+    return @lines;
+} # 1}}}
+sub rm_blanks {                              # {{{1
+    my ($ra_in    ,
+        $language ,
+        $rh_EOL_continuation_re) = @_;
+    print "-> rm_blanks(language=$language)\n" if $opt_v > 2;
+#print "rm_blanks: language = [$language]\n";
+    my @out = ();
+    if ($language eq "COBOL") {
+        @out = remove_cobol_blanks($ra_in);
+    } else {
+        # removes blank lines
+        if (defined $rh_EOL_continuation_re->{$language}) {
+            @out = remove_matches_2re($ra_in, '^\s*$',
+                                      $rh_EOL_continuation_re->{$language});
+        } else {
+            @out = remove_matches($ra_in, '^\s*$');
+        }
+    }
+
+    print "<- rm_blanks(language=$language)\n" if $opt_v > 2;
+    return @out;
+} # 1}}}
+sub rm_comments {                            # {{{1
+    my ($ra_lines , # in, must be free of blank lines
+        $language , # in
+        $file     , # in (some language counters, eg Haskell, need
+                    #     access to the original file)
+        $rh_EOL_continuation_re , # in
+       ) = @_;
+    print "-> rm_comments(file=$file)\n" if $opt_v > 2;
+    my @routines       = @{$Filters_by_Language{$language}};
+    my @lines          = @{$ra_lines};
+    my @original_lines = @{$ra_lines};
+
+    if (!scalar @original_lines) {
+        return @lines;
+    }
+
+    foreach my $call_string (@routines) {
+        my $subroutine = $call_string->[0];
+        if (! defined &{$subroutine}) {
+            warn "rm_comments undefined subroutine $subroutine for $file\n";
+            next;
+        }
+        print "rm_comments file=$file sub=$subroutine\n" if $opt_v > 1;
+        my @args  = @{$call_string};
+        shift @args; # drop the subroutine name
+        if (@args and $args[0] eq '>filename<') {
+            shift   @args;
+            unshift @args, $file;
+        }
+#use Data::Dumper;
+#print "\ncall_string=", Dumper($call_string);
+#print "args=\n";
+#print Dumper(\@args);
+#print "lines before=\n";
+#print Dumper(\@lines);
+
+        no strict 'refs';
+        @lines = &{$subroutine}(\@lines, @args);   # apply filter...
+
+#print "lines after=\n";
+#print Dumper(\@lines);
+
+        print_lines($file, "After $subroutine(@args)", \@lines)
+            if $opt_print_filter_stages;
+        # then remove blank lines which are created by comment removal
+        if (defined $rh_EOL_continuation_re->{$language}) {
+            @lines = remove_matches_2re(\@lines, '^\s*$',
+                                        $rh_EOL_continuation_re->{$language});
+        } else {
+            @lines = remove_matches(\@lines, '^\s*$');
+        }
+
+        print_lines($file, "post $subroutine(@args) blank cleanup:", \@lines)
+            if $opt_print_filter_stages;
+    }
+    # Exception for scripting languages:  treat the first #! line as code.
+    # Will need to add it back in if it was removed earlier.
+    if (defined $Script_Language{$language} and
+        $original_lines[0] =~ /^#!/ and
+        (scalar(@lines) == 0 or
+         $lines[0] ne $original_lines[0])) {
+        unshift @lines, $original_lines[0];  # add the first line back
+    }
+
+    foreach (@lines) { chomp }   # make sure no spurious newlines were added
+
+    print "<- rm_comments\n" if $opt_v > 2;
+    return @lines;
+} # 1}}}
+sub remove_f77_comments {                    # {{{1
+    my ($ra_lines, ) = @_;
+    print "-> remove_f77_comments\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    foreach (@{$ra_lines}) {
+        next if m{^[*cC]};
+        next if m{^\s*!};
+        push @save_lines, $_;
+    }
+
+    print "<- remove_f77_comments\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub remove_f90_comments {                    # {{{1
+    # derived from SLOCCount
+    my ($ra_lines, ) = @_;
+    print "-> remove_f90_comments\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    foreach (@{$ra_lines}) {
+        # a comment is              m/^\s*!/
+        # an empty line is          m/^\s*$/
+        # a HPF statement is        m/^\s*!hpf\$/i
+        # an Open MP statement is   m/^\s*!omp\$/i
+        if (! m/^(\s*!|\s*$)/ || m/^\s*!(hpf|omp)\$/i) {
+            push @save_lines, $_;
+        }
+    }
+
+    print "<- remove_f90_comments\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub remove_matches {                         # {{{1
+    my ($ra_lines, # in
+        $pattern , # in   Perl regular expression (case insensitive)
+       ) = @_;
+    print "-> remove_matches(pattern=$pattern)\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    foreach (@{$ra_lines}) {
+#chomp;
+#print "remove_matches [$pattern] [$_]\n";
+        next if m{$pattern}i;
+#       s{$pattern}{}i;
+#       next unless /\S/; # at least one non space
+        push @save_lines, $_;
+    }
+
+    print "<- remove_matches\n" if $opt_v > 2;
+#print "remove_matches returning\n   ", join("\n   ", @save_lines), "\n";
+    return @save_lines;
+} # 1}}}
+sub remove_matches_2re {                     # {{{1
+    my ($ra_lines, # in
+        $pattern1, # in Perl regex 1 (case insensitive) to match
+        $pattern2, # in Perl regex 2 (case insensitive) to not match prev line
+       ) = @_;
+    print "-> remove_matches_2re(pattern=$pattern1,$pattern2)\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    for (my $i = 0; $i < scalar @{$ra_lines}; $i++) {
+#       chomp($ra_lines->[$i]);
+#print "remove_matches_2re [$pattern1] [$pattern2] [$ra_lines->[$i]]\n";
+        if ($i) {
+#print "remove_matches_2re prev=[$ra_lines->[$i-1]] this=[$ra_lines->[$i]]\n";
+            next if ($ra_lines->[$i]   =~ m{$pattern1}i) and
+                    ($ra_lines->[$i-1] !~ m{$pattern2}i);
+        } else {
+            # on first line
+            next if $ra_lines->[$i]   =~  m{$pattern1}i;
+        }
+        push @save_lines, $ra_lines->[$i];
+    }
+
+    print "<- remove_matches_2re\n" if $opt_v > 2;
+#print "remove_matches_2re returning\n   ", join("\n   ", @save_lines), "\n";
+    return @save_lines;
+} # 1}}}
+sub remove_inline {                          # {{{1
+    my ($ra_lines, # in
+        $pattern , # in   Perl regular expression (case insensitive)
+       ) = @_;
+    print "-> remove_inline(pattern=$pattern)\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    unless ($opt_inline) {
+        return @{$ra_lines};
+    }
+    my $nLines_affected = 0;
+    foreach (@{$ra_lines}) {
+#chomp; print "remove_inline [$pattern] [$_]\n";
+        if (m{$pattern}i) {
+            ++$nLines_affected;
+            s{$pattern}{}i;
+        }
+        push @save_lines, $_;
+    }
+
+    print "<- remove_inline\n" if $opt_v > 2;
+#print "remove_inline returning\n   ", join("\n   ", @save_lines), "\n";
+    return @save_lines;
+} # 1}}}
+sub remove_above {                           # {{{1
+    my ($ra_lines, $marker, ) = @_;
+    print "-> remove_above(marker=$marker)\n" if $opt_v > 2;
+
+    # Make two passes through the code:
+    # 1. check if the marker exists
+    # 2. remove anything above the marker if it exists,
+    #    do nothing if the marker does not exist
+
+    # Pass 1
+    my $found_marker = 0;
+    for (my $line_number  = 1;
+            $line_number <= scalar @{$ra_lines};
+            $line_number++) {
+        if ($ra_lines->[$line_number-1] =~ m{$marker}) {
+            $found_marker = $line_number;
+            last;
+        }
+    }
+
+    # Pass 2 only if needed
+    my @save_lines = ();
+    if ($found_marker) {
+        my $n = 1;
+        foreach (@{$ra_lines}) {
+            push @save_lines, $_
+                if $n >= $found_marker;
+            ++$n;
+        }
+    } else { # marker wasn't found; save all lines
+        foreach (@{$ra_lines}) {
+            push @save_lines, $_;
+        }
+    }
+
+    print "<- remove_above\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub remove_below {                           # {{{1
+    my ($ra_lines, $marker, ) = @_;
+    print "-> remove_below(marker=$marker)\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    foreach (@{$ra_lines}) {
+        last if m{$marker};
+        push @save_lines, $_;
+    }
+
+    print "<- remove_below\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub remove_below_above {                     # {{{1
+    my ($ra_lines, $marker_below, $marker_above, ) = @_;
+    # delete lines delimited by start and end line markers such
+    # as Perl POD documentation
+    print "-> remove_below_above(markerB=$marker_below, A=$marker_above)\n"
+        if $opt_v > 2;
+
+    my @save_lines = ();
+    my $between    = 0;
+    foreach (@{$ra_lines}) {
+        if (!$between and m{$marker_below}) {
+            $between    = 1;
+            next;
+        }
+        if ($between and m{$marker_above}) {
+            $between    = 0;
+            next;
+        }
+        next if $between;
+        push @save_lines, $_;
+    }
+
+    print "<- remove_below_above\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub remove_between {                         # {{{1
+    my ($ra_lines, $marker, ) = @_;
+    # $marker must contain one of the balanced pairs understood
+    # by Regexp::Common::balanced, namely
+    # '{}'  '()'  '[]'  or  '<>'
+
+    print "-> remove_between(marker=$marker)\n" if $opt_v > 2;
+    my %acceptable = ('{}'=>1,  '()'=>1,  '[]'=>1,  '<>'=>1, );
+    die "remove_between:  invalid delimiter '$marker'\n",
+        "the delimiter must be one of these four pairs:\n",
+        "{}  ()  []  <>\n" unless
+        $acceptable{$marker};
+
+    Install_Regexp_Common() unless $HAVE_Rexexp_Common;
+
+    my $all_lines = join("", @{$ra_lines});
+
+    no strict 'vars';
+    # otherwise get:
+    #  Global symbol "%RE" requires explicit package name at cloc line xx.
+    if ($all_lines =~ m/$RE{balanced}{-parens => $marker}/) {
+        no warnings;
+        $all_lines =~ s/$1//g;
+    }
+
+    print "<- remove_between\n" if $opt_v > 2;
+    return split("\n", $all_lines);
+} # 1}}}
+sub remove_between_general {                 # {{{1
+    my ($ra_lines, $start_marker, $end_marker, ) = @_;
+    # Start and end markers may be any length strings.
+
+    print "-> remove_between_general(start=$start_marker, end=$end_marker)\n"
+        if $opt_v > 2;
+
+    my $all_lines = join("", @{$ra_lines});
+
+    my @save_lines = ();
+    my $in_comment = 0;
+    foreach (@{$ra_lines}) {
+
+        next if /^\s*$/;
+        s/\Q$start_marker\E.*?\Q$end_marker\E//g;  # strip one-line comments
+        next if /^\s*$/;
+        if ($in_comment) {
+            if (/\Q$end_marker\E/) {
+                s/^.*?\Q$end_marker\E//;
+                $in_comment = 0;
+            }
+            next if $in_comment;
+        }
+        next if /^\s*$/;
+        $in_comment = 1 if /^(.*?)\Q$start_marker\E/; # $1 may be blank or code
+        next if defined $1 and $1 =~ /^\s*$/; # leading blank; all comment
+        if ($in_comment) {
+            # part code, part comment; strip the comment and keep the code
+            s/^(.*?)\Q$start_marker\E.*$/$1/;
+        }
+        push @save_lines, $_;
+    }
+
+    print "<- remove_between_general\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub remove_between_regex   {                 # {{{1
+    my ($ra_lines, $start_RE, $end_RE, ) = @_;
+    # Start and end regex's may be any length strings.
+
+    print "-> remove_between_regex(start=$start_RE, end=$end_RE)\n"
+        if $opt_v > 2;
+
+    my $all_lines = join("", @{$ra_lines});
+
+    my @save_lines = ();
+    my $in_comment = 0;
+    foreach (@{$ra_lines}) {
+
+        next if /^\s*$/;
+        s/${start_RE}.*?${end_RE}//g;  # strip one-line comments
+        next if /^\s*$/;
+        if ($in_comment) {
+            if (/$end_RE/) {
+                s/^.*?${end_RE}//;
+                $in_comment = 0;
+            }
+            next if $in_comment;
+        }
+        next if /^\s*$/;
+        $in_comment = 1 if /^(.*?)${start_RE}/; # $1 may be blank or code
+        next if defined $1 and $1 =~ /^\s*$/; # leading blank; all comment
+        if ($in_comment) {
+            # part code, part comment; strip the comment and keep the code
+            s/^(.*?)${start_RE}.*$/$1/;
+        }
+        push @save_lines, $_;
+    }
+
+    print "<- remove_between_regex\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub replace_between_regex  {                 # {{{1
+    my ($ra_lines, $start_RE, $end_RE, $replace_RE, ) = @_;
+    # Start and end regex's may be any length strings.
+
+    print "-> replace_between_regex(start=$start_RE, end=$end_RE)\n"
+        if $opt_v > 2;
+
+    my $all_lines = join("", @{$ra_lines});
+
+    my @save_lines = ();
+    my $in_comment = 0;
+    foreach (@{$ra_lines}) {
+
+        next if /^\s*$/;
+        s/${start_RE}.*?${end_RE}/${replace_RE}/eeg;  # strip one-line comments
+        next if /^\s*$/;
+        if ($in_comment) {
+            if (/$end_RE/) {
+                s/^.*?${end_RE}/${replace_RE}/ee;
+                $in_comment = 0;
+            }
+            next if $in_comment;
+        }
+        next if /^\s*$/;
+        $in_comment = 1 if /^(.*?)${start_RE}/; # $1 may be blank or code
+        next if defined $1 and $1 =~ /^\s*$/; # leading blank; all comment
+        if ($in_comment) {
+            # part code, part comment; strip the comment and keep the code
+            s/^(.*?)${start_RE}.*$/$1/;
+        }
+        push @save_lines, $_;
+    }
+
+    print "<- replace_between_regex\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub remove_cobol_blanks {                    # {{{1
+    # subroutines derived from SLOCCount
+    my ($ra_lines, ) = @_;
+
+    my $free_format = 0;  # Support "free format" source code.
+    my @save_lines  = ();
+
+    foreach (@{$ra_lines}) {
+        next if m/^\s*$/;
+        my $line = expand($_);  # convert tabs to equivalent spaces
+        $free_format = 1 if $line =~ m/^......\$.*SET.*SOURCEFORMAT.*FREE/i;
+        if ($free_format) {
+            push @save_lines, $_;
+        } else {
+            # Greg Toth:
+            #  (1) Treat lines with any alphanum in cols 1-6 and
+            #      blanks in cols 7 through 71 as blank line, and
+            #  (2) Treat lines with any alphanum in cols 1-6 and
+            #      slash (/) in col 7 as blank line (this is a
+            #      page eject directive).
+            push @save_lines, $_ unless m/^\d{6}\s*$/             or
+                                        ($line =~ m/^.{6}\s{66}/) or
+                                        ($line =~ m/^......\//);
+        }
+    }
+    return @save_lines;
+} # 1}}}
+sub remove_cobol_comments {                  # {{{1
+    # subroutines derived from SLOCCount
+    my ($ra_lines, ) = @_;
+
+    my $free_format = 0;  # Support "free format" source code.
+    my @save_lines  = ();
+
+    foreach (@{$ra_lines}) {
+        if (m/^......\$.*SET.*SOURCEFORMAT.*FREE/i) {$free_format = 1;}
+        if ($free_format) {
+            push @save_lines, $_ unless m{^\s*\*};
+        } else {
+            push @save_lines, $_ unless m{^......\*} or m{^\*};
+        }
+    }
+    return @save_lines;
+} # 1}}}
+sub remove_jcl_comments {                    # {{{1
+    my ($ra_lines, ) = @_;
+
+    print "-> remove_jcl_comments\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    my $in_comment = 0;
+    foreach (@{$ra_lines}) {
+        next if /^\s*$/;
+        next if m{^\s*//\*};
+        last if m{^\s*//\s*$};
+        push @save_lines, $_;
+    }
+
+    print "<- remove_jcl_comments\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub remove_jsp_comments {                    # {{{1
+    #  JSP comment is   <%--  body of comment   --%>
+    my ($ra_lines, ) = @_;
+
+    print "-> remove_jsp_comments\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    my $in_comment = 0;
+    foreach (@{$ra_lines}) {
+
+        next if /^\s*$/;
+        s/<\%\-\-.*?\-\-\%>//g;  # strip one-line comments
+        next if /^\s*$/;
+        if ($in_comment) {
+            if (/\-\-\%>/) {
+                s/^.*?\-\-\%>//;
+                $in_comment = 0;
+            }
+        }
+        next if /^\s*$/;
+        $in_comment = 1 if /^(.*?)<\%\-\-/;
+        next if defined $1 and $1 =~ /^\s*$/;
+        next if ($in_comment);
+        push @save_lines, $_;
+    }
+
+    print "<- remove_jsp_comments\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub remove_html_comments {                   # {{{1
+    #  HTML comment is   <!--  body of comment   -->
+    #  Need to use my own routine until the HTML comment regex in
+    #  the Regexp::Common module can handle  <!--  --  -->
+    my ($ra_lines, ) = @_;
+
+    print "-> remove_html_comments\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    my $in_comment = 0;
+    foreach (@{$ra_lines}) {
+
+        next if /^\s*$/;
+        s/<!\-\-.*?\-\->//g;  # strip one-line comments
+        next if /^\s*$/;
+        if ($in_comment) {
+            if (/\-\->/) {
+                s/^.*?\-\->//;
+                $in_comment = 0;
+            }
+        }
+        next if /^\s*$/;
+        $in_comment = 1 if /^(.*?)<!\-\-/;
+        next if defined $1 and $1 =~ /^\s*$/;
+        next if ($in_comment);
+        push @save_lines, $_;
+    }
+
+    print "<- remove_html_comments\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub remove_bf_comments {                     # {{{1
+    my ($ra_lines, ) = @_;
+
+    print "-> remove_bf_comments\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    my $in_comment = 0;
+    foreach (@{$ra_lines}) {
+
+        s/[^<>+-.,\[\]]+//g;
+        next if /^\s*$/;
+        push @save_lines, $_;
+    }
+
+    print "<- remove_bf_comments\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub really_is_bf {                           # {{{1
+    my ($file, ) = @_;
+
+    print "-> really_is_bf\n" if $opt_v > 2;
+    my $n_bf_indicators  = 0;
+    my @lines = read_file($file);
+    foreach my $L (@lines) {
+        my $ind = 0;
+        if ($L =~ /([+-]{4,}  |          # at least four +'s or -'s in a row
+                   [\[\]]{4,} |          # at least four [ or ] in a row
+                   [<>][+-]   |          # >- or >+ or <+ or <-
+                   <{3,}      |          # at least three < in a row
+                   ^\s*[\[\]]\s*$)/x) {  # [ or ] on line by itself
+            ++$n_bf_indicators;
+            $ind = 1;
+        }
+        # if ($ind) { print "YES: $L"; } else { print "NO : $L"; }
+    }
+    my $ratio = $n_bf_indicators/scalar(@lines);
+    my $decision = ($ratio > 0.5) || ($n_bf_indicators > 5);
+    printf "<- really_is_bf(Y/N=%d %s, R=%.3f, N=%d)\n",
+            $decision, $file, $ratio, $n_bf_indicators if $opt_v > 2;
+    return $decision;
+} # 1}}}
+sub remove_intented_block {                  # {{{1
+    # Haml block comments are defined by a silent comment marker like
+    #    /
+    # or
+    #    -#
+    # followed by indented text on subsequent lines.
+    # http://haml.info/docs/yardoc/file.REFERENCE.html#comments
+    my ($ra_lines, $regex, ) = @_;
+
+    print "-> remove_intented_block\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    my $in_comment = 0;
+    foreach (@{$ra_lines}) {
+
+        next if /^\s*$/;
+        my $line = expand($_);  # convert tabs to equivalent spaces
+        if ($in_comment) {
+            $line =~ /^(\s*)/;
+            # print "indent=", length $1, "\n";
+            if (length $1 < $in_comment) {
+                # indent level is less than comment level
+                # are back in code
+                $in_comment = 0;
+            } else {
+                # still in comments, don't use this line
+                next;
+            }
+        } elsif ($line =~ m{$regex}) {
+            if ($1) {
+                $in_comment = length($1) + 1; # number of leading spaces + 1
+            } else {
+                $in_comment = 1;
+            }
+            # print "in_comment=$in_comment\n";
+            next;
+        }
+        push @save_lines, $line;
+    }
+
+    print "<- remove_intented_block\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub remove_haml_block {                      # {{{1
+    # Haml block comments are defined by a silent comment marker like
+    #    /
+    # or
+    #    -#
+    # followed by indented text on subsequent lines.
+    # http://haml.info/docs/yardoc/file.REFERENCE.html#comments
+    my ($ra_lines, ) = @_;
+
+    return remove_intented_block($ra_lines, '^(\s*)(/|-#)\s*$');
+
+} # 1}}}
+sub remove_pug_block {                       # {{{1
+    # Haml block comments are defined by a silent comment marker like
+    #    //
+    # followed by indented text on subsequent lines.
+    # http://jade-lang.com/reference/comments/
+    my ($ra_lines, ) = @_;
+    return remove_intented_block($ra_lines, '^(\s*)(//)\s*$');
+} # 1}}}
+sub remove_slim_block {                      # {{{1
+    # slim comments start with /
+    # followed by indented text on subsequent lines.
+    # http://www.rubydoc.info/gems/slim/frames
+    my ($ra_lines, ) = @_;
+    return remove_intented_block($ra_lines, '^(\s*)(/[^!])');
+} # 1}}}
+sub add_newlines {                           # {{{1
+    my ($ra_lines, ) = @_;
+    print "-> add_newlines \n" if $opt_v > 2;
+
+    my @save_lines = ();
+    foreach (@{$ra_lines}) {
+
+        push @save_lines, "$_\n";
+    }
+
+    print "<- add_newlines \n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub docstring_to_C {                         # {{{1
+    my ($ra_lines, ) = @_;
+    # Converts Python docstrings to C comments.
+
+    print "-> docstring_to_C()\n" if $opt_v > 2;
+
+    my $in_docstring = 0;
+    foreach (@{$ra_lines}) {
+        while (/"""/) {
+            if (!$in_docstring) {
+                s{[uU]?"""}{/*};
+                $in_docstring = 1;
+            } else {
+                s{"""}{*/};
+                $in_docstring = 0;
+            }
+        }
+    }
+
+    print "<- docstring_to_C\n" if $opt_v > 2;
+    return @{$ra_lines};
+} # 1}}}
+sub Forth_paren_to_C  {                      # {{{1
+    my ($ra_lines, ) = @_;
+    # Converts Forth comment parentheses to C comments.
+
+    print "-> Forth_paren_to_C()\n" if $opt_v > 2;
+
+    my $in_comment = 0;
+    foreach (@{$ra_lines}) {
+        while (/\s\(\s/ or ($in_comment and /\)/)) {
+            if (/\s\(\s.*?\)/) {
+                # in-line parenthesis comment; handle here
+                s/\s+\(\s+.*?\)//g;
+            } elsif (!$in_comment and /\s\(\s/) {
+                s{\s+\(\s+}{/*};
+                $in_comment = 1;
+            } elsif ($in_comment and /\)/) {
+                s{\)}{*/};
+                $in_comment = 0;
+            }
+        }
+    }
+
+    print "<- Forth_paren_to_C\n" if $opt_v > 2;
+    return @{$ra_lines};
+} # 1}}}
+sub powershell_to_C {                        # {{{1
+    my ($ra_lines, ) = @_;
+    # Converts PowerShell block comment markers to C comments.
+
+    print "-> powershell_to_C()\n" if $opt_v > 2;
+
+    my $in_docstring = 0;
+    foreach (@{$ra_lines}) {
+        s{<#}{/*}g;
+        s{#>}{*/}g;
+    }
+
+    print "<- powershell_to_C\n" if $opt_v > 2;
+    return @{$ra_lines};
+} # 1}}}
+sub smarty_to_C {                            # {{{1
+    my ($ra_lines, ) = @_;
+    # Converts Smarty comments to C comments.
+
+    print "-> smarty_to_C()\n" if $opt_v > 2;
+
+    foreach (@{$ra_lines}) {
+        s[{\*][/*]g;
+        s[\*}][*/]g;
+    }
+
+    print "<- smarty_to_C\n" if $opt_v > 2;
+    return @{$ra_lines};
+} # 1}}}
+sub determine_lit_type {                     # {{{1
+  my ($file) = @_;
+
+  open (FILE, $file);
+  while (<FILE>) {
+    if (m/^\\begin\{code\}/) { close FILE; return 2; }
+    if (m/^>\s/) { close FILE; return 1; }
+  }
+
+  return 0;
+} # 1}}}
+sub remove_haskell_comments {                # {{{1
+    # Bulk of code taken from SLOCCount's haskell_count script.
+    # Strips out {- .. -} and -- comments and counts the rest.
+    # Pragmas, {-#...}, are counted as SLOC.
+    # BUG: Doesn't handle strings with embedded block comment markers gracefully.
+    #      In practice, that shouldn't be a problem.
+    my ($ra_lines, $file, ) = @_;
+
+    print "-> remove_haskell_comments\n" if $opt_v > 2;
+
+    my @save_lines = ();
+    my $in_comment = 0;
+    my $incomment  = 0;
+    my ($literate, $inlitblock) = (0,0);
+
+    $literate = 1 if $file =~ /\.lhs$/;
+    if($literate) { $literate = determine_lit_type($file) }
+
+    foreach (@{$ra_lines}) {
+        if ($literate == 1) {
+            if (!s/^>//) { s/.*//; }
+        } elsif ($literate == 2) {
+            if ($inlitblock) {
+                if (m/^\\end\{code\}/) { s/.*//; $inlitblock = 0; }
+            } elsif (!$inlitblock) {
+                if (m/^\\begin\{code\}/) { s/.*//; $inlitblock = 1; }
+                else { s/.*//; }
+            }
+        }
+
+        if ($incomment) {
+            if (m/\-\}/) { s/^.*?\-\}//;  $incomment = 0;}
+            else { s/.*//; }
+        }
+        if (!$incomment) {
+            s/--.*//;
+            s!{-[^#].*?-}!!g;
+            if (m/{-/ && (!m/{-#/)) {
+              s/{-.*//;
+              $incomment = 1;
+            }
+        }
+        if (m/\S/) { push @save_lines, $_; }
+    }
+#   if ($incomment) {print "ERROR: ended in comment in $ARGV\n";}
+
+    print "<- remove_haskell_comments\n" if $opt_v > 2;
+    return @save_lines;
+} # 1}}}
+sub print_lines {                            # {{{1
+    my ($file     , # in
+        $title    , # in
+        $ra_lines , # in
+       ) = @_;
+    printf "->%-30s %s\n", $file, $title;
+    for (my $i = 0; $i < scalar @{$ra_lines}; $i++) {
+        printf "%5d | %s", $i+1, $ra_lines->[$i];
+        print "\n" unless $ra_lines->[$i] =~ m{\n$}
+    }
+} # 1}}}
+sub set_constants {                          # {{{1
+    my ($rh_Language_by_Extension , # out
+        $rh_Language_by_Script    , # out
+        $rh_Language_by_File      , # out
+        $rhaa_Filters_by_Language , # out
+        $rh_Not_Code_Extension    , # out
+        $rh_Not_Code_Filename     , # out
+        $rh_Scale_Factor          , # out
+        $rh_Known_Binary_Archives , # out
+        $rh_EOL_continuation_re   , # out
+       ) = @_;
+# 1}}}
+%{$rh_Language_by_Extension} = (             # {{{1
+            'abap'        => 'ABAP'                  ,
+            'ac'          => 'm4'                    ,
+            'ada'         => 'Ada'                   ,
+            'adb'         => 'Ada'                   ,
+            'ads'         => 'Ada'                   ,
+            'adso'        => 'ADSO/IDSM'             ,
+            'ahk'         => 'AutoHotkey'            ,
+            'aj'          => 'AspectJ'               ,
+            'am'          => 'make'                  ,
+            'ample'       => 'AMPLE'                 ,
+            'as'          => 'ActionScript'          ,
+            'dofile'      => 'AMPLE'                 ,
+            'startup'     => 'AMPLE'                 ,
+            'asa'         => 'ASP'                   ,
+            'asax'        => 'ASP.Net'               ,
+            'ascx'        => 'ASP.Net'               ,
+            'asm'         => 'Assembly'              ,
+            'asmx'        => 'ASP.Net'               ,
+            'asp'         => 'ASP'                   ,
+            'aspx'        => 'ASP.Net'               ,
+            'master'      => 'ASP.Net'               ,
+            'sitemap'     => 'ASP.Net'               ,
+            'cshtml'      => 'Razor'                 ,
+            'awk'         => 'awk'                   ,
+            'bash'        => 'Bourne Again Shell'    ,
+            'bas'         => 'Visual Basic'          ,
+            'dxl'         => 'DOORS Extension Language',
+            'bat'         => 'DOS Batch'             ,
+            'BAT'         => 'DOS Batch'             ,
+            'cmd'         => 'DOS Batch'             ,
+            'CMD'         => 'DOS Batch'             ,
+            'btm'         => 'DOS Batch'             ,
+            'BTM'         => 'DOS Batch'             ,
+            'blade.php'   => 'Blade'                 ,
+            'build.xml'   => 'Ant'                   ,
+            'b'           => 'Brainfuck'             ,
+            'bf'          => 'Brainfuck'             ,
+            'cbl'         => 'COBOL'                 ,
+            'CBL'         => 'COBOL'                 ,
+            'c'           => 'C'                     ,
+            'C'           => 'C++'                   ,
+            'cc'          => 'C++'                   ,
+            'c++'         => 'C++'                   ,
+            'ccs'         => 'CCS'                   ,
+            'cfc'         => 'ColdFusion CFScript'   ,
+            'cfm'         => 'ColdFusion'            ,
+            'cl'          => 'Lisp/OpenCL'           ,
+            'clj'         => 'Clojure'               ,
+            'cljs'        => 'ClojureScript'         ,
+            'cljc'        => 'ClojureC'              ,
+            'cls'         => 'Visual Basic'          , # also Apex Class
+            'CMakeLists.txt' => 'CMake'              ,
+            'cmake'       => 'CMake'                 ,
+            'cob'         => 'COBOL'                 ,
+            'COB'         => 'COBOL'                 ,
+            'coffee'      => 'CoffeeScript'          ,
+            'component'   => 'Visualforce Component' ,
+            'cpp'         => 'C++'                   ,
+            'cr'          => 'Crystal'               ,
+            'cs'          => 'C#'                    ,
+            'csh'         => 'C Shell'               ,
+            'cson'        => 'CSON'                  ,
+            'css'         => "CSS"                   ,
+            'ctl'         => 'Visual Basic'          ,
+            'cu'          => 'CUDA'                  ,
+            'cuh'         => 'CUDA'                  , # CUDA header file
+            'cxx'         => 'C++'                   ,
+            'd'           => 'D/dtrace'              ,
+# in addition, .d can map to init.d files typically written as
+# bash or sh scripts
+            'da'          => 'DAL'                   ,
+            'dart'        => 'Dart'                  ,
+            'def'         => 'Windows Module Definition',
+            'diff'        => 'diff'                  ,
+            'dmap'        => 'NASTRAN DMAP'          ,
+            'dpr'         => 'Pascal'                ,
+            'dita'        => 'DITA'                  ,
+            'dsr'         => 'Visual Basic'          ,
+            'dtd'         => 'DTD'                   ,
+            'ec'          => 'C'                     ,
+            'ecpp'        => 'ECPP'                  ,
+            'eex'         => 'EEx'                   ,
+            'el'          => 'Lisp'                  ,
+            'elm'         => 'Elm'                   ,
+            'exs'         => 'Elixir'                ,
+            'ex'          => 'Elixir'                ,
+            'erb'         => 'ERB'                   ,
+            'ERB'         => 'ERB'                   ,
+            'erl'         => 'Erlang'                ,
+            'exp'         => 'Expect'                ,
+            '4th'         => 'Forth'                 ,
+            'forth'       => 'Forth'                 ,
+            'fr'          => 'Forth'                 ,
+            'frt'         => 'Forth'                 ,
+            'fth'         => 'Forth'                 ,
+            'f83'         => 'Forth'                 ,
+            'fb'          => 'Forth'                 ,
+            'fpm'         => 'Forth'                 ,
+            'e4'          => 'Forth'                 ,
+            'rx'          => 'Forth'                 ,
+            'ft'          => 'Forth'                 ,
+            'f77'         => 'Fortran 77'            ,
+            'F77'         => 'Fortran 77'            ,
+            'f90'         => 'Fortran 90'            ,
+            'F90'         => 'Fortran 90'            ,
+            'f95'         => 'Fortran 95'            ,
+            'F95'         => 'Fortran 95'            ,
+            'f'           => 'Fortran 77/Forth'      ,
+            'F'           => 'Fortran 77'            ,
+            'for'         => 'Fortran 77/Forth'      ,
+            'FOR'         => 'Fortran 77'            ,
+            'ftl'         => 'Freemarker Template'   ,
+            'ftn'         => 'Fortran 77'            ,
+            'FTN'         => 'Fortran 77'            ,
+            'fmt'         => 'Oracle Forms'          ,
+            'focexec'     => 'Focus'                 ,
+            'frm'         => 'Visual Basic'          ,
+            'fs'          => 'F#/Forth'              ,
+            'fsi'         => 'F#'                    ,
+            'g'           => 'Antlr'                 ,
+            'gnumakefile' => 'make'                  ,
+            'Gnumakefile' => 'make'                  ,
+            'gd'          => 'GDScript'              ,
+            'glsl'        => 'GLSL'                  ,
+			'vert'        => 'GLSL'                  ,
+			'tesc'        => 'GLSL'                  ,
+			'tese'        => 'GLSL'                  ,
+			'geom'        => 'GLSL'                  ,
+			'frag'        => 'GLSL'                  ,
+			'comp'        => 'GLSL'                  ,
+            'go'          => 'Go'                    ,
+            'gsp'         => 'Grails'                ,
+            'groovy'      => 'Groovy'                ,
+            'gant'        => 'Groovy'                ,
+            'gradle'      => 'Groovy'                ,
+            'h'           => 'C/C++ Header'          ,
+            'H'           => 'C/C++ Header'          ,
+            'hh'          => 'C/C++ Header'          ,
+            'hpp'         => 'C/C++ Header'          ,
+            'hxx'         => 'C/C++ Header'          ,
+            'hb'          => 'Harbour'               ,
+            'hrl'         => 'Erlang'                ,
+            'hs'          => 'Haskell'               ,
+            'hlsl'        => 'HLSL'                  ,
+            'shader'      => 'HLSL'                  ,
+            'cg'          => 'HLSL'                  ,
+            'cginc'       => 'HLSL'                  ,
+            'haml'        => 'Haml'                  ,
+            'handlebars'  => 'Handlebars'            ,
+            'hbs'         => 'Handlebars'            ,
+            'hx'          => 'Haxe'                  ,
+            'htm'         => 'HTML'                  ,
+            'html'        => 'HTML'                  ,
+            'i3'          => 'Modula3'               ,
+            'ice'         => 'Slice'                 ,
+            'icl'         => 'Clean'                 ,
+            'dcl'         => 'Clean'                 ,
+            'idl'         => 'IDL'                   ,
+            'ini'         => 'INI'                   ,
+            'ism'         => 'InstallShield'         ,
+            'pro'         => 'IDL/Qt Project/Prolog' ,
+            'ig'          => 'Modula3'               ,
+            'il'          => 'SKILL'                 ,
+            'ils'         => 'SKILL++'               ,
+            'inc'         => 'PHP/Pascal'            , # might be PHP or Pascal
+            'ino'         => 'Arduino Sketch'        ,
+            'pde'         => 'Arduino Sketch'        , # pre 1.0
+            'itk'         => 'Tcl/Tk'                ,
+            'java'        => 'Java'                  ,
+            'jcl'         => 'JCL'                   , # IBM Job Control Lang.
+            'jl'          => 'Lisp/Julia'            ,
+            'js'          => 'JavaScript'            ,
+            'es6'         => 'JavaScript'            ,
+            'jsf'         => 'JavaServer Faces'      ,
+            'jsx'         => 'JSX'                   ,
+            'xhtml'       => 'XHTML'                 ,
+            'json'        => 'JSON'                  ,
+            'jsp'         => 'JSP'                   , # Java server pages
+            'jspf'        => 'JSP'                   , # Java server pages
+            'vm'          => 'Velocity Template Language' ,
+            'ksc'         => 'Kermit'                ,
+            'ksh'         => 'Korn Shell'            ,
+            'kt'          => 'Kotlin'                ,
+            'kts'         => 'Kotlin'                ,
+            'lhs'         => 'Haskell'               ,
+            'l'           => 'lex'                   ,
+            'less'        => 'LESS'                  ,
+            'lfe'         => 'LFE'                   ,
+            'liquid'      => 'liquid'                ,
+            'lsp'         => 'Lisp'                  ,
+            'lisp'        => 'Lisp'                  ,
+            'lgt'         => 'Logtalk'               ,
+            'logtalk'     => 'Logtalk'               ,
+            'lua'         => 'Lua'                   ,
+            'm3'          => 'Modula3'               ,
+            'm4'          => 'm4'                    ,
+            'makefile'    => 'make'                  ,
+            'Makefile'    => 'make'                  ,
+            'mako'        => 'Mako'                  ,
+            'md'          => 'Markdown'              ,
+            'mc'          => 'Windows Message File'  ,
+            'met'         => 'Teamcenter met'        ,
+            'mg'          => 'Modula3'               ,
+            'mk'          => 'make'                  ,
+#           'mli'         => 'ML'                    , # ML not implemented
+#           'ml'          => 'ML'                    ,
+            'ml'          => 'OCaml'                 ,
+            'mli'         => 'OCaml'                 ,
+            'mly'         => 'OCaml'                 ,
+            'mll'         => 'OCaml'                 ,
+            'm'           => 'MATLAB/Mathematica/Objective C/MUMPS/Mercury' ,
+            'mm'          => 'Objective C++'         ,
+            'mt'          => 'Mathematica'           ,
+            'wl'          => 'Mathematica'           ,
+            'wlt'         => 'Mathematica'           ,
+            'mustache'    => 'Mustache'              ,
+            'wdproj'      => 'MSBuild script'        ,
+            'csproj'      => 'MSBuild script'        ,
+            'vcproj'      => 'MSBuild script'        ,
+            'wixproj'     => 'MSBuild script'        ,
+            'vbproj'      => 'MSBuild script'        ,
+            'mps'         => 'MUMPS'                 ,
+            'mth'         => 'Teamcenter mth'        ,
+            'n'           => 'Nemerle'               ,
+            'nim'         => 'Nim'                   ,
+            'oscript'     => 'LiveLink OScript'      ,
+            'pad'         => 'Ada'                   , # Oracle Ada preprocessor
+            'page'        => 'Visualforce Page'      ,
+            'pas'         => 'Pascal'                ,
+            'pcc'         => 'C++'                   , # Oracle C++ preprocessor
+            'perl'        => 'Perl'                  ,
+            'pfo'         => 'Fortran 77'            ,
+            'pgc'         => 'C'                     , # Postgres embedded C/C++
+            'php3'        => 'PHP'                   ,
+            'php4'        => 'PHP'                   ,
+            'php5'        => 'PHP'                   ,
+            'php'         => 'PHP'                   ,
+            'phtml'       => 'PHP'                   ,
+            'pig'         => 'Pig Latin'             ,
+            'plh'         => 'Perl'                  ,
+            'pl'          => 'Perl/Prolog'           ,
+            'p6'          => 'Perl/Prolog'           ,
+            'PL'          => 'Perl/Prolog'           ,
+            'plx'         => 'Perl'                  ,
+            'pm'          => 'Perl'                  ,
+            'pm6'         => 'Perl'                  ,
+            'pom.xml'     => 'Maven'                 ,
+            'pom'         => 'Maven'                 ,
+            'P'           => 'Prolog'                ,
+            'p'           => 'Pascal'                ,
+            'pp'          => 'Pascal/Puppet'         ,
+            'psql'        => 'SQL'                   ,
+            'py'          => 'Python'                ,
+            'pyj'         => 'RapydScript'           ,
+            'pyx'         => 'Cython'                ,
+            'qml'         => 'QML'                   ,
+            'rb'          => 'Ruby'                  ,
+            'rake'        => 'Ruby'                  ,
+         #  'resx'        => 'ASP.Net'               ,
+            'rex'         => 'Oracle Reports'        ,
+            'rexx'        => 'Rexx'                  ,
+            'rhtml'       => 'Ruby HTML'             ,
+            'rs'          => 'Rust'                  ,
+            's'           => 'Assembly'              ,
+            'S'           => 'Assembly'              ,
+            'SCA'         => 'Visual Fox Pro'        ,
+            'sca'         => 'Visual Fox Pro'        ,
+            'scala'       => 'Scala'                 ,
+            'sbl'         => 'Softbridge Basic'      ,
+            'SBL'         => 'Softbridge Basic'      ,
+            'sc'          => 'Lisp'                  ,
+            'scm'         => 'Lisp'                  ,
+            'sed'         => 'sed'                   ,
+            'ses'         => 'Patran Command Language'   ,
+            'pcl'         => 'Patran Command Language'   ,
+            'pl1'         => 'PL/I'                  ,
+            'po'          => 'PO File'               ,
+            'sra'         => 'PowerBuilder'          ,
+            'srf'         => 'PowerBuilder'          ,
+            'srm'         => 'PowerBuilder'          ,
+            'srs'         => 'PowerBuilder'          ,
+            'sru'         => 'PowerBuilder'          ,
+            'srw'         => 'PowerBuilder'          ,
+            'pug'         => 'Pug'                   ,
+            'purs'        => 'PureScript'            ,
+            'prefab'      => 'Unity-Prefab'          ,
+            'proto'       => 'Protocol Buffers'      ,
+            'mat'         => 'Unity-Prefab'          ,
+            'ps1'         => 'PowerShell'            ,
+            'psd1'        => 'PowerShell'            ,
+            'psm1'        => 'PowerShell'            ,
+            'R'           => 'R'                     ,
+            'r'           => 'R'                     ,
+            'rkt'         => 'Racket'                ,
+            'rktl'        => 'Racket'                ,
+            'ss'          => 'Racket'                ,
+            'scm'         => 'Racket'                ,
+            'sch'         => 'Racket'                ,
+            'scrbl'       => 'Racket'                ,
+            'tsv'         => 'RobotFramework'        ,
+            'robot'       => 'RobotFramework'        ,
+            'rc'          => 'Windows Resource File' ,
+            'rc2'         => 'Windows Resource File' ,
+            'sas'         => 'SAS'                   ,
+            'sass'        => 'Sass'                  ,
+            'scss'        => 'Sass'                  ,
+            'sh'          => 'Bourne Shell'          ,
+            'smarty'      => 'Smarty'                ,
+            'sml'         => 'Standard ML'           ,
+            'sig'         => 'Standard ML'           ,
+            'fun'         => 'Standard ML'           ,
+            'slim'        => 'Slim'                  ,
+            'e'           => 'Specman e'             ,
+            'sql'         => 'SQL'                   ,
+            'SQL'         => 'SQL'                   ,
+            'sproc.sql'   => 'SQL Stored Procedure'  ,
+            'spoc.sql'    => 'SQL Stored Procedure'  ,
+            'spc.sql'     => 'SQL Stored Procedure'  ,
+            'udf.sql'     => 'SQL Stored Procedure'  ,
+            'data.sql'    => 'SQL Data'              ,
+            'styl'        => 'Stylus'                ,
+            'sv'          => 'Verilog-SystemVerilog' ,
+            'svh'         => 'Verilog-SystemVerilog' ,
+            'v'           => 'Verilog-SystemVerilog/Coq' ,
+            'tcl'         => 'Tcl/Tk'                ,
+            'tcsh'        => 'C Shell'               ,
+            'tk'          => 'Tcl/Tk'                ,
+            'tex'         => 'TeX'                   , # TeX, LaTex, MikTex, ..
+            'sty'         => 'TeX'                   ,
+#           'cls'         => 'TeX'                   ,
+            'dtx'         => 'TeX'                   ,
+            'bst'         => 'TeX'                   ,
+            'tpl'         => 'Smarty'                ,
+            'trigger'     => 'Apex Trigger'          ,
+            'ttcn'        => 'TTCN'                  ,
+            'ttcn2'       => 'TTCN'                  ,
+            'ttcn3'       => 'TTCN'                  ,
+            'ttcnpp'      => 'TTCN'                  ,
+            'tpd'         => 'TITAN Project File Information',
+            'ts'          => 'TypeScript/Qt Linguist',
+            'tsx'         => 'TypeScript'            ,
+            'tss'         => 'Titanium Style Sheet'  ,
+            'twig'        => 'Twig'                  ,
+            'ui'          => 'Qt/Glade'              ,
+            'glade'       => 'Glade'                 ,
+            'vala'        => 'Vala'                  ,
+            'vapi'        => 'Vala Header'           ,
+            'vhd'         => 'VHDL'                  ,
+            'VHD'         => 'VHDL'                  ,
+            'vhdl'        => 'VHDL'                  ,
+            'VHDL'        => 'VHDL'                  ,
+            'vba'         => 'Visual Basic'          ,
+            'VBA'         => 'Visual Basic'          ,
+         #  'vbp'         => 'Visual Basic'          , # .vbp - autogenerated
+            'vb'          => 'Visual Basic'          ,
+            'VB'          => 'Visual Basic'          ,
+         #  'vbw'         => 'Visual Basic'          , # .vbw - autogenerated
+            'vbs'         => 'Visual Basic'          ,
+            'VBS'         => 'Visual Basic'          ,
+            'vue'         => 'Vuejs Component'       ,
+            'webinfo'     => 'ASP.Net'               ,
+            'xmi'         => 'XMI'                   ,
+            'XMI'         => 'XMI'                   ,
+            'xml'         => 'XML'                   ,
+            'xml'         => 'XML'                   ,
+            'XML'         => 'XML'                   ,
+            'mxml'        => 'MXML'                  ,
+            'xml.builder' => 'builder'               ,
+            'build'       => 'NAnt script'           ,
+            'vim'         => 'vim script'            ,
+            'swift'       => 'Swift'                 ,
+            'xaml'        => 'XAML'                  ,
+            'wxs'         => 'WiX source'            ,
+            'wxi'         => 'WiX include'           ,
+            'wxl'         => 'WiX string localization' ,
+            'prg'         => 'xBase'                 ,
+            'ch'          => 'xBase Header'          ,
+            'xq'          => 'XQuery'                ,
+            'xquery'      => 'XQuery'                ,
+            'xsd'         => 'XSD'                   ,
+            'XSD'         => 'XSD'                   ,
+            'xslt'        => 'XSLT'                  ,
+            'XSLT'        => 'XSLT'                  ,
+            'xsl'         => 'XSLT'                  ,
+            'XSL'         => 'XSLT'                  ,
+            'y'           => 'yacc'                  ,
+            'yaml'        => 'YAML'                  ,
+            'yml'         => 'YAML'                  ,
+            'zsh'         => 'zsh'                   ,
+            );
+# 1}}}
+%{$rh_Language_by_Script}    = (             # {{{1
+            'awk'      => 'awk'                   ,
+            'bash'     => 'Bourne Again Shell'    ,
+            'bc'       => 'bc'                    ,# calculator
+            'crystal'  => 'Crystal'               ,
+            'csh'      => 'C Shell'               ,
+            'dmd'      => 'D'                     ,
+            'dtrace'   => 'dtrace'                ,
+            'idl'      => 'IDL'                   ,
+            'kermit'   => 'Kermit'                ,
+            'ksh'      => 'Korn Shell'            ,
+            'lua'      => 'Lua'                   ,
+            'make'     => 'make'                  ,
+            'octave'   => 'Octave'                ,
+            'perl5'    => 'Perl'                  ,
+            'perl6'    => 'Perl'                  ,
+            'perl'     => 'Perl'                  ,
+            'miniperl' => 'Perl'                  ,
+            'php'      => 'PHP'                   ,
+            'php5'     => 'PHP'                   ,
+            'python'   => 'Python'                ,
+            'python2.6'=> 'Python'                ,
+            'python2.7'=> 'Python'                ,
+            'python3'  => 'Python'                ,
+            'python3.3'=> 'Python'                ,
+            'python3.4'=> 'Python'                ,
+            'python3.5'=> 'Python'                ,
+            'rexx'     => 'Rexx'                  ,
+            'regina'   => 'Rexx'                  ,
+            'ruby'     => 'Ruby'                  ,
+            'sed'      => 'sed'                   ,
+            'sh'       => 'Bourne Shell'          ,
+            'swipl'    => 'Prolog'                ,
+            'tcl'      => 'Tcl/Tk'                ,
+            'tclsh'    => 'Tcl/Tk'                ,
+            'tcsh'     => 'C Shell'               ,
+            'wish'     => 'Tcl/Tk'                ,
+            'zsh'      => 'zsh'                   ,
+            );
+# 1}}}
+%{$rh_Language_by_File}      = (             # {{{1
+            'build.xml'      => 'Ant/XML'            ,
+            'CMakeLists.txt' => 'CMake'              ,
+            'Jamfile'        => 'Jam'                ,
+            'Jamrules'       => 'Jam'                ,
+            'Makefile'       => 'make'               ,
+            'makefile'       => 'make'               ,
+            'gnumakefile'    => 'make'               ,
+            'Gnumakefile'    => 'make'               ,
+            'pom.xml'        => 'Maven/XML'          ,
+            'Rakefile'       => 'Ruby'               ,
+            'rakefile'       => 'Ruby'               ,
+            'Dockerfile'     => 'Dockerfile'         ,
+            );
+# 1}}}
+%{$rhaa_Filters_by_Language} = (             # {{{1
+    '(unknown)'          => [ ],
+    'ABAP'               => [   [ 'remove_matches'      , '^\*'    ], ],
+    'ActionScript'       => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+#                               [ 'remove_matches'      , '^\s*//' ],
+                            ],
+
+    'ASP'                => [   [ 'remove_matches'      , '^\s*\47'], ],  # \47 = '
+    'ASP.Net'            => [   [ 'call_regexp_common'  , 'C'      ], ],
+    'Ada'                => [   [ 'remove_matches'      , '^\s*--' ], ],
+    'ADSO/IDSM'          => [   [ 'remove_matches'      , '^\s*\*[\+\!]' ], ],
+    'AMPLE'              => [   [ 'remove_matches'      , '^\s*//' ], ],
+    'Ant/XML'            => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                            ],
+    'Antlr'              => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    'Ant'                => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                            ],
+    'Apex Trigger'       => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'Arduino Sketch'     => [   # same as C
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'AspectJ'            => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'Assembly'           => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_matches'      , '^\s*;'  ],
+                                [ 'remove_matches'      , '^\s*\@' ],
+                                [ 'remove_matches'      , '^\s*\|' ],
+                                [ 'remove_matches'      , '^\s*!'  ],
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_matches'      , '^\s*--' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                                [ 'remove_inline'       , ';.*$'   ],
+                                [ 'remove_inline'       , '\@.*$'  ],
+                                [ 'remove_inline'       , '\|.*$'  ],
+                                [ 'remove_inline'       , '!.*$'   ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                                [ 'remove_inline'       , '--.*$'  ],
+                            ],
+    'AutoHotkey'         => [
+                                [ 'remove_matches'      , '^\s*;'  ],
+                                [ 'remove_inline'       , ';.*$'   ],
+                            ],
+    'awk'                => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'bc'                 => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Blade'              => [
+                                [ 'remove_between_general', '{{--', '--}}' ],
+                                [ 'remove_html_comments',                  ],
+                            ],
+    'Bourne Again Shell' => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Bourne Shell'       => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Brainfuck'          => [ # puerile name for a language
+#                               [ 'call_regexp_common'  , 'Brainfuck' ],  # inaccurate
+                                [ 'remove_bf_comments',               ],
+                            ],
+    'builder'            => [
+                                [ 'remove_matches'      , '^\s*xml_markup.comment!'  ],
+                            ],
+    'C'                  => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+#                               [ 'remove_matches'      , '^\s*//' ], # C99
+                                [ 'remove_inline'       , '//.*$'  ], # C99
+                            ],
+    'C++'                => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'C/C++ Header'       => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'Clean'              => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'Clojure'            => [   [ 'remove_matches'      , '^\s*;'  ], ],
+    'ClojureScript'      => [   [ 'remove_matches'      , '^\s*;'  ], ],
+    'ClojureC'           => [   [ 'remove_matches'      , '^\s*;'  ], ],
+    'CMake'              => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Crystal'            => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'CUDA'               => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'Cython'             => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'docstring_to_C'                 ],
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'C#'                 => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'CCS'                => [   [ 'call_regexp_common'  , 'C'      ], ],
+    'CSS'                => [   [ 'call_regexp_common'  , 'C'      ], ],
+    'COBOL'              => [   [ 'remove_cobol_comments',         ], ],
+    'CoffeeScript'       => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'ColdFusion'         => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    'ColdFusion CFScript'=> [
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'Coq'                => [
+                                [ 'remove_between_general', '(*', '*)' ],
+                            ],
+    'Crystal Reports'    => [   [ 'remove_matches'      , '^\s*//' ], ],
+    'CSON'               => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'D/dtrace'           => [ [ 'die' ,          ], ], # never called
+    'D'                  => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_between_general', '/+', '+/' ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'DAL'                => [
+                                [ 'remove_between_general', '[', ']', ],
+                            ],
+    'Dart'               => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    # diff is kind of weird: anything but a space in the first column
+    # will count as code, with the exception of #, ---, +++.  Spaces
+    # in the first column denote context lines which aren't part of the
+    # difference.
+    'diff'               => [
+                                [ 'remove_matches'      , '^#' ],
+                                [ 'remove_matches'      , '^\-\-\-' ],
+                                [ 'remove_matches'      , '^\+\+\+' ],
+                                [ 'remove_matches'      , '^\s' ],
+                            ],
+    'DITA'               => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                            ],
+    'DOORS Extension Language' => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    'dtrace'             => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'ECPP'               => [
+                                [ 'remove_between_general',
+                                  '<%doc>', '</%doc>',             ],
+                                [ 'remove_between_general',
+                                  '<#'    , '#>'     ,             ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                            ],
+    'EEx'                => [
+                                [ 'remove_between_general', '<%#', '%>' ],
+                            ],
+    'Elm'                => [   [ 'remove_haskell_comments', '>filename<' ], ],
+    'ERB'                => [
+                                [ 'remove_between_general', '<%#', '%>' ],
+                            ],
+    'NASTRAN DMAP'       => [
+                                [ 'remove_matches'      , '^\s*\$' ],
+                                [ 'remove_inline'       , '\$.*$'  ],
+                            ],
+    'Dockerfile'         => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'DOS Batch'          => [   [ 'remove_matches'      , '^\s*rem', ], ],
+    'DTD'                => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    'Elixir'             => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Erlang'             => [
+                                [ 'remove_matches'      , '^\s*%'  ],
+                                [ 'remove_inline'       , '%.*$'   ],
+                            ],
+    'Expect'             => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Focus'              => [   [ 'remove_matches'      , '^\s*\-\*'  ], ],
+    'Forth'              => [
+                                [ 'remove_matches'      , '^\s*\\\\.*$'  ],
+                                [ 'Forth_paren_to_C'                 ],
+                                [ 'call_regexp_common'  , 'C++'      ],
+                                [ 'remove_inline'       , '\\\\.*$'  ],
+                            ],
+    'Fortran 77'         => [
+                                [ 'remove_f77_comments' ,          ],
+                                [ 'remove_inline'       , '\!.*$'  ],
+                            ],
+    'Fortran 77/Forth'   => [ [ 'die' ,          ], ], # never called
+    'F#/Forth'           => [ [ 'die' ,          ], ], # never called
+    'Fortran 90'         => [
+                                [ 'remove_f77_comments' ,          ],
+                                [ 'remove_f90_comments' ,          ],
+                                [ 'remove_inline'       , '\!.*$'  ],
+                            ],
+    'Fortran 95'         => [
+                                [ 'remove_f77_comments' ,          ],
+                                [ 'remove_f90_comments' ,          ],
+                                [ 'remove_inline'       , '\!.*$'  ],
+                            ],
+    'Freemarker Template' => [
+                                [ 'remove_between_general', '<#--', '-->' ],
+                            ],
+    'F#'                 => [
+                                [ 'call_regexp_common'  , 'Pascal' ],
+                                [ 'remove_matches'      , '^\s*//' ],
+                            ],
+    'GDScript'           => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Glade'              => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                            ],
+    'GLSL'               => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    'Go'                 => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'Grails'             => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                                [ 'remove_jsp_comments' ,          ],
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'add_newlines'        ,          ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    'Groovy'             => [
+                                [ 'remove_inline'       , '//.*$'  ],
+                                # separate /* inside quoted strings with two
+                                # concatenated strings split between / and *
+                                [ 'replace_between_regex', '(["\'])(.*?/)(\*.*?)\g1',
+                                  '(.*?)' , '"$1$2$1 + $1$3$1$4"'],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    'Handlebars'         => [
+                                [ 'remove_between_general', '{{!--', '--}}' ],
+                                [ 'remove_between_general', '{{!', '}}' ],
+                                [ 'remove_html_comments',          ],
+                            ],
+    'Harbour'            => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_matches'      , '^\s*\&\&' ],
+                                [ 'remove_matches'      , '^\s*\*' ],
+                                [ 'remove_matches'      , '^\s*NOTE' ],
+                                [ 'remove_matches'      , '^\s*note' ],
+                                [ 'remove_matches'      , '^\s*Note' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                                [ 'remove_inline'       , '\&\&.*$' ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    'HLSL'               => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    'Haml'               => [
+                                [ 'remove_haml_block'   ,          ],
+                                [ 'remove_html_comments',          ],
+                                [ 'remove_matches'      , '^\s*/\s*\S+' ],
+                                [ 'remove_matches'      , '^\s*-#\s*\S+' ],
+                            ],
+    'Haxe'               => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    'HTML'               => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                            ],
+    'INI'                => [
+                                [ 'remove_matches'      , '^\s*;'  ],
+                            ],
+    'XHTML'               => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                            ],
+    'Haskell'            => [   [ 'remove_haskell_comments', '>filename<' ], ],
+    'IDL'                => [   [ 'remove_matches'      , '^\s*;'  ], ],
+    'IDL/Qt Project/Prolog' => [ [ 'die' ,          ], ], # never called
+    'InstallShield'      => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    'Jam'                => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'JSP'                => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                                [ 'remove_jsp_comments' ,          ],
+                                [ 'remove_matches'      , '^\s*//' ],
+                                [ 'add_newlines'        ,          ],
+                                [ 'call_regexp_common'  , 'C'      ],
+                            ],
+    'JavaServer Faces'   => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'Java'               => [
+                                # separate /* inside quoted strings with two
+                                # concatenated strings split between / and *
+                                [ 'replace_between_regex', '(["\'])(.*?/)(\*.*?)\g1',
+                                  '(.*?)' , '"$1$2$1 + $1$3$1$4"'],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'JavaScript'         => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'JSX'                => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'JCL'                => [   [ 'remove_jcl_comments' ,          ], ],
+    'JSON'               => [   # ECMA-404, the JSON standard definition
+                                # makes no provision for JSON comments
+                                # so just use a placeholder filter
+                                [ 'remove_matches'      , '^\s*$'  ],
+                            ],
+    'Julia'              => [
+                                [ 'remove_between_general', '#=', '=#' ],
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Kotlin'             => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+#                               [ 'remove_between_general', '/*', '*/' ],
+                            ],
+    'LESS'               => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'LFE'                => [
+                                [ 'remove_matches'      , '^\s*;'  ],
+                                [ 'remove_between_general', '#|', '|#' ],
+                            ],
+    'liquid'             => [
+                                [ 'remove_between_general', '{% comment %}',
+                                                            '{% endcomment %}' ],
+                                [ 'remove_html_comments',          ],
+                            ],
+    'Lisp'               => [
+                                [ 'remove_matches'      , '^\s*;'  ],
+                                [ 'remove_between_general', '#|', '|#' ],
+                            ],
+    'Lisp/OpenCL'        => [ [ 'die' ,          ], ], # never called
+    'Lisp/Julia'         => [ [ 'die' ,          ], ], # never called
+    'LiveLink OScript'   => [   [ 'remove_matches'      , '^\s*//' ], ],
+    'Logtalk'            => [  # same filters as Prolog
+                                [ 'remove_matches'      , '^\s*\%' ],
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_inline'       , '(//|\%).*$' ],
+                            ],
+#   'Lua'                => [   [ 'call_regexp_common'  , 'lua'    ], ],
+    'Lua'                => [
+                                [ 'remove_between_general', '--[[', ']]' ],
+                                [ 'remove_matches'      , '^\s*\-\-' ],
+                            ],
+    'make'               => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'MATLAB'             => [
+                                [ 'remove_matches'      , '^\s*%'  ],
+                                [ 'remove_inline'       , '%.*$'   ],
+                            ],
+    'Mathematica'        => [
+                                [ 'remove_between_general', '(*', '*)' ],
+                            ],
+    'Maven/XML'          => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                            ],
+    'Maven'              => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                            ],
+    'Mercury'            => [
+                                [ 'remove_inline'       , '%.*$'   ],
+                                [ 'remove_matches'      , '^\s*%'  ],
+                            ],
+    'Modula3'            => [   [ 'call_regexp_common'  , 'Pascal' ], ],
+        # Modula 3 comments are (* ... *) so applying the Pascal filter
+        # which also treats { ... } as a comment is not really correct.
+    'Nemerle'            => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    'Objective C'        => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'Objective C++'      => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'OCaml'              => [
+                                [ 'call_regexp_common'  , 'Pascal' ],
+                            ],
+    'OpenCL'             => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+#                               [ 'remove_matches'      , '^\s*//' ], # C99
+                                [ 'remove_inline'       , '//.*$'  ], # C99
+                            ],
+    'PHP/Pascal'               => [ [ 'die' ,          ], ], # never called
+    'Mako'               => [
+                                [ 'remove_matches'       , '##.*$'  ],
+                            ],
+    'Markdown'           => [
+                                [ 'remove_between_regex',
+                                  '\[(comment|\/\/)?\]\s*:?\s*(<\s*>|#)?\s*\(.*?', '.*?\)' ],
+                                # http://stackoverflow.com/questions/4823468/comments-in-markdown
+                            ],
+    'MATLAB/Mathematica/Objective C/MUMPS/Mercury' => [ [ 'die' ,          ], ], # never called
+    'MUMPS'              => [   [ 'remove_matches'      , '^\s*;'  ], ],
+    'Mustache'           => [
+                                [ 'remove_between_general', '{{!', '}}' ],
+                            ],
+    'Nim'                => [
+                                [ 'remove_between_general', '#[', ']#' ],
+                                [ 'remove_matches'      , '^\s*#'  ],
+#                               [ 'docstring_to_C'                 ],
+#                               [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Octave'             => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Oracle Forms'       => [   [ 'call_regexp_common'  , 'C'      ], ],
+    'Oracle Reports'     => [   [ 'call_regexp_common'  , 'C'      ], ],
+    'Pascal'             => [
+                                [ 'remove_between_regex', '{[^$]', '}' ],
+                                [ 'remove_between_general', '(*', '*)' ],
+                                [ 'remove_matches'      , '^\s*//' ],
+                            ],
+####'Pascal'             => [
+####                            [ 'call_regexp_common'  , 'Pascal' ],
+####                            [ 'remove_matches'      , '^\s*//' ],
+####                        ],
+    'Pascal/Puppet'            => [ [ 'die' ,          ], ], # never called
+    'Puppet'             => [
+                                [ 'remove_matches'      , '^\s*#'   ],
+                                [ 'call_regexp_common'  , 'C'       ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'PureScript'         => [
+                                [ 'remove_matches'      , '^\s*--' ],
+                                [ 'remove_between_general', '{-', '-}' ],
+                                [ 'remove_inline'       , '--.*$'  ],
+                            ],
+    'Patran Command Language'=> [
+                                [ 'remove_matches'      , '^\s*#'   ],
+                                [ 'remove_matches'      , '^\s*\$#' ],
+                                [ 'call_regexp_common'  , 'C'       ],
+                            ],
+    'PL/I'               => [
+                                [ 'call_regexp_common'  , 'C'      ],
+                            ],
+    'Perl'               => [   [ 'remove_below'        , '^__(END|DATA)__'],
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_below_above'  , '^=head1', '^=cut'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Perl/Prolog'        => [ [ 'die' ,          ], ], # never called
+    'Pig Latin'          => [
+                                [ 'remove_matches'      , '^\s*--' ],
+                                [ 'remove_inline'       , '--.*$'  ],
+                                [ 'call_regexp_common'  , 'C'       ],
+                            ],
+    'PO File'            => [
+                                [ 'remove_matches'      , '^\s*#[^,]' ],  # '#,' is not a comment
+                            ],
+    'PowerBuilder'       => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    'PowerShell'         => [
+                                [ 'powershell_to_C'                ],
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Prolog'             => [
+                                [ 'remove_matches'      , '^\s*\%' ],
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_inline'       , '(//|\%).*$' ],
+                            ],
+    'Protocol Buffers'   => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    'Pug'                => [
+                                [ 'remove_pug_block'    ,          ],
+                                [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'Python'             => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'docstring_to_C'                 ],
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'PHP'                => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '#.*$'   ],
+#                               [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'QML'                => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'Qt'                 => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                            ],
+    'Qt Linguist'        => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                            ],
+    'Qt Project'         => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'R'                  => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Racket'             => [
+                                [ 'remove_matches'      , '^\s*;'  ],
+                                [ 'remove_inline'       , ';.*$'   ],
+                            ],
+    'RapydScript'        => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'docstring_to_C'                 ],
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Razor'              => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_between_general', '@*', '*@' ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'RobotFramework'     => [
+                                [ 'remove_matches'      , '^\s*#'   ],
+                                [ 'remove_matches'      , '^\s*Comment' ],
+                                [ 'remove_matches'      , '^\s*\*{3}\s+(Variables|Test\s+Cases|Settings|Keywords)\s+\*{3}' ] ,
+                                [ 'remove_matches'      , '^\s*\[(Documentation|Tags)\]' ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Rexx'               => [   [ 'call_regexp_common'  , 'C'      ], ],
+    'Ruby'               => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_below_above'  , '^=begin', '^=end' ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Ruby HTML'          => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    'Rust'               => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    'SAS'                => [
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_between_general', '*', ';' ],
+                            ],
+    'Sass'               => [
+                                [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'Scala'              => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    'Slice'             => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+#                               [ 'remove_between_general', '/*', '*/' ],
+                            ],
+    'Slim'               => [
+                                [ 'remove_slim_block'   ,          ],
+                            ],
+    'SKILL'              => [
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_matches'      , '^\s*;'  ],
+                            ],
+    'SKILL++'            => [
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_matches'      , '^\s*;'  ],
+                            ],
+    'Specman e'          => [
+                                [ 'pre_post_fix'        , "'>", "<'"],
+                                [ 'remove_between_general', "'>", "<'" ],
+                                [ 'call_regexp_common'  , 'C++',   ],
+                                [ 'remove_matches'      , '^\s*--' ],
+                            ],
+    'SQL'                => [
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_matches'      , '^\s*--' ],
+                                [ 'remove_inline'       , '--.*$'  ],
+                            ],
+    'SQL Stored Procedure'=> [
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_matches'      , '^\s*--' ],
+                                [ 'remove_inline'       , '--.*$'  ],
+                            ],
+    'SQL Data'           => [
+                                [ 'call_regexp_common'  , 'C'      ],
+                                [ 'remove_matches'      , '^\s*--' ],
+                                [ 'remove_inline'       , '--.*$'  ],
+                            ],
+    'sed'                => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Smarty'             => [
+                                [ 'smarty_to_C'                    ],
+                                [ 'call_regexp_common'  , 'C'      ],
+                            ],
+    'Standard ML'        => [
+                                [ 'remove_between_general', '(*', '*)' ],
+                            ],
+    'Stylus'             => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'Swift'              => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+
+    'm4'                 => [   [ 'remove_matches'      , '^dnl '  ], ],
+    'C Shell'            => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Kermit'             => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_matches'      , '^\s*;'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Korn Shell'         => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Tcl/Tk'             => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Teamcenter met'     => [   [ 'call_regexp_common'  , 'C'      ], ],
+    'Teamcenter mth'     => [   [ 'remove_matches'      , '^\s*#'  ], ],
+    'TeX'                => [
+                                [ 'remove_matches'      , '^\s*%'  ],
+                                [ 'remove_inline'       , '%.*$'   ],
+                            ],
+    'Titanium Style Sheet'  => [
+                                [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                                [ 'remove_between_regex', '/[^/]', '[^/]/' ],
+                            ],
+    'Twig'               => [
+                                [ 'remove_between_general', '{#', '#}' ],
+                            ],
+    'TTCN'               => [
+                                [ 'call_regexp_common'  , 'C++'      ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'TITAN Project File Information'               => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                            ],
+    'TypeScript'         => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    'Unity-Prefab'       => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'Visual Fox Pro'     =>  [
+                                [ 'remove_matches'      , '^\s*\*' ],
+                                [ 'remove_inline'       , '\*.*$'  ],
+                                [ 'remove_matches'      , '^\s*&&' ],
+                                [ 'remove_inline'       , '&&.*$'  ],
+                            ],
+    'Softbridge Basic'   => [   [ 'remove_above'        , '^\s*Attribute\s+VB_Name\s+=' ],
+                                [ 'remove_matches'      , '^\s*Attribute\s+'],
+                                [ 'remove_matches'      , '^\s*\47'], ],  # \47 = '
+    # http://www.altium.com/files/learningguides/TR0114%20VHDL%20Language%20Reference.pdf
+    'Vala'               => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'Vala Header'        => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'Verilog-SystemVerilog/Coq' => [ ['die'] ], # never called
+    'Verilog-SystemVerilog' => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    'VHDL'               => [
+                                [ 'remove_matches'      , '^\s*--' ],
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                                [ 'remove_inline'       , '--.*$'  ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'vim script'         => [
+                                [ 'remove_matches'      , '^\s*"'  ],
+                                [ 'remove_inline'       , '".*$'   ],
+                            ],
+    'Visual Basic'       => [   [ 'remove_above'        , '^\s*Attribute\s+VB_Name\s+=' ],
+                                [ 'remove_matches'      , '^\s*Attribute\s+'],
+                                [ 'remove_matches'      , '^\s*\47'], ],  # \47 = '
+    'Visualforce Component' => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                            ],
+    'Visualforce Page'   => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                            ],
+    'Velocity Template Language' => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                                [ 'remove_jsp_comments' ,          ],
+                                [ 'remove_matches'      , '^\s*//' ],
+                                [ 'add_newlines'        ,          ],
+                                [ 'call_regexp_common'  , 'C'      ],
+                            ],
+    'Vuejs Component'     => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    'Teamcenter def'     => [   [ 'remove_matches'      , '^\s*#'  ], ],
+    'Windows Module Definition' => [
+                                [ 'remove_matches'      , '^\s*;' ],
+                                [ 'remove_inline'       , ';.*$'  ],
+                            ],
+    'yacc'               => [
+                                [ 'call_regexp_common'  , 'C++'    ],
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                            ],
+    'YAML'               => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    'lex'                => [   [ 'call_regexp_common'  , 'C'      ], ],
+    'XAML'               => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    'xBase Header'       => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_matches'      , '^\s*\&\&' ],
+                                [ 'remove_matches'      , '^\s*\*' ],
+                                [ 'remove_matches'      , '^\s*NOTE' ],
+                                [ 'remove_matches'      , '^\s*note' ],
+                                [ 'remove_matches'      , '^\s*Note' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                                [ 'remove_inline'       , '\&\&.*$' ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    'xBase'              => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_matches'      , '^\s*\&\&' ],
+                                [ 'remove_matches'      , '^\s*\*' ],
+                                [ 'remove_matches'      , '^\s*NOTE' ],
+                                [ 'remove_matches'      , '^\s*note' ],
+                                [ 'remove_matches'      , '^\s*Note' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                                [ 'remove_inline'       , '\&\&.*$' ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    'MXML'               => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                                [ 'remove_matches'      , '^\s*//' ],
+                                [ 'add_newlines'        ,          ],
+                                [ 'call_regexp_common'  , 'C'      ],
+                            ],
+    'Windows Message File'  => [
+                                [ 'remove_matches'      , '^\s*;\s*//' ],
+                                [ 'call_regexp_common'  , 'C'          ],
+                                [ 'remove_matches'      , '^\s*;\s*$'  ],
+#                               next line only hypothetical
+#                               [ 'remove_matches_2re'  , '^\s*;\s*/\*',
+#                                                         '^\s*;\s*\*/', ],
+                            ],
+    'Windows Resource File' => [
+#                               [ 'remove_matches'      , '^\s*//' ],
+                                [ 'remove_inline'       , '//.*$'  ],
+                                [ 'call_regexp_common'  , 'C++'    ],
+                            ],
+    'WiX source'         => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                            ],
+    'WiX include'        => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                            ],
+    'WiX string localization' => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                            ],
+    'XMI'                => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                            ],
+    'XML'                => [
+                                [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ],
+                            ],
+    'XQuery'             => [
+                                [ 'remove_between_general', '(:', ':)' ],
+                            ],
+    'XSD'                => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    'XSLT'               => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    'NAnt script'       => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    'MSBuild script'    => [   [ 'remove_html_comments',          ],
+                                [ 'call_regexp_common'  , 'HTML'   ], ],
+    'zsh'                => [
+                                [ 'remove_matches'      , '^\s*#'  ],
+                                [ 'remove_inline'       , '#.*$'   ],
+                            ],
+    );
+# 1}}}
+%{$rh_EOL_continuation_re} = (               # {{{1
+    'ActionScript'       =>     '\\\\$'         ,
+    'AspectJ'            =>     '\\\\$'         ,
+    'Assembly'           =>     '\\\\$'         ,
+    'ASP'                =>     '\\\\$'         ,
+    'ASP.Net'            =>     '\\\\$'         ,
+    'Ada'                =>     '\\\\$'         ,
+    'awk'                =>     '\\\\$'         ,
+    'bc'                 =>     '\\\\$'         ,
+    'C'                  =>     '\\\\$'         ,
+    'C++'                =>     '\\\\$'         ,
+    'C/C++ Header'       =>     '\\\\$'         ,
+    'CMake'              =>     '\\\\$'         ,
+    'Cython'             =>     '\\\\$'         ,
+    'C#'                 =>     '\\\\$'         ,
+    'D'                  =>     '\\\\$'         ,
+    'Dart'               =>     '\\\\$'         ,
+    'Expect'             =>     '\\\\$'         ,
+    'Go'                 =>     '\\\\$'         ,
+    'IDL'                =>     '\$\\$'         ,
+    'Java'               =>     '\\\\$'         ,
+    'JavaScript'         =>     '\\\\$'         ,
+    'JSX'                =>     '\\\\$'         ,
+    'LESS'               =>     '\\\\$'         ,
+    'Lua'                =>     '\\\\$'         ,
+    'make'               =>     '\\\\$'         ,
+    'MATLAB'             =>     '\.\.\.\s*$'    ,
+    'MXML'               =>     '\\\\$'         ,
+    'Objective C'        =>     '\\\\$'         ,
+    'Objective C++'      =>     '\\\\$'         ,
+    'OCaml'              =>     '\\\\$'         ,
+    'Octave'             =>     '\.\.\.\s*$'    ,
+    'Qt Project'         =>     '\\\\$'         ,
+    'Patran Command Language'=> '\\\\$'         ,
+    'PowerBuilder'       =>     '\\\\$'         ,
+    'PowerShell'         =>     '\\\\$'         ,
+    'Python'             =>     '\\\\$'         ,
+    'R'                  =>     '\\\\$'         ,
+    'Ruby'               =>     '\\\\$'         ,
+    'sed'                =>     '\\\\$'         ,
+    'Swift'              =>     '\\\\$'         ,
+    'Bourne Again Shell' =>     '\\\\$'         ,
+    'Bourne Shell'       =>     '\\\\$'         ,
+    'C Shell'            =>     '\\\\$'         ,
+    'Kermit'             =>     '\\\\$'         ,
+    'Korn Shell'         =>     '\\\\$'         ,
+    'Stylus'             =>     '\\\\$'         ,
+    'Tcl/Tk'             =>     '\\\\$'         ,
+    'TTCN'               =>     '\\\\$'         ,
+    'TypeScript'         =>     '\\\\$'         ,
+    'lex'                =>     '\\\\$'         ,
+    'Vala'               =>     '\\\\$'         ,
+    'Vala Header'        =>     '\\\\$'         ,
+    'zsh'                =>     '\\\\$'         ,
+    );
+# 1}}}
+%{$rh_Not_Code_Extension}    = (             # {{{1
+   '1'         => 1,  # Man pages (documentation):
+   '2'         => 1,
+   '3'         => 1,
+   '4'         => 1,
+   '5'         => 1,
+   '6'         => 1,
+   '7'         => 1,
+   '8'         => 1,
+   '9'         => 1,
+   'a'         => 1,  # Static object code.
+   'ad'        => 1,  # X application default resource file.
+   'afm'       => 1,  # font metrics
+   'arc'       => 1,  # arc(1) archive
+   'arj'       => 1,  # arj(1) archive
+   'au'        => 1,  # Audio sound filearj(1) archive
+   'bak'       => 1,  # Backup files - we only want to count the "real" files.
+   'bdf'       => 1,
+   'bmp'       => 1,
+   'bz2'       => 1,  # bzip2(1) compressed file
+   'csv'       => 1,  # comma separated values
+   'desktop'   => 1,
+   'dic'       => 1,
+   'doc'       => 1,
+   'elc'       => 1,
+   'eps'       => 1,
+   'fig'       => 1,
+   'gif'       => 1,
+   'gz'        => 1,
+   'hdf'       => 1,  # hierarchical data format
+   'in'        => 1,  # Debatable.
+   'jpg'       => 1,
+   'kdelnk'    => 1,
+   'man'       => 1,
+   'mf'        => 1,
+   'mp3'       => 1,
+   'n'         => 1,
+   'o'         => 1,  # Object code is generated from source code.
+   'o.cmd'     => 1,  # not DOS Batch; Linux kernel compilation optimization file
+   'pbm'       => 1,
+   'pdf'       => 1,
+   'pfb'       => 1,
+   'png'       => 1,
+   'ps'        => 1,  # Postscript is _USUALLY_ generated automatically.
+   'sgm'       => 1,
+   'sgml'      => 1,
+   'so'        => 1,  # Dynamically-loaded object code.
+   'Tag'       => 1,
+   'text'      => 1,
+   'tfm'       => 1,
+   'tgz'       => 1,  # gzipped tarball
+   'tiff'      => 1,
+   'txt'       => 1,
+   'vf'        => 1,
+   'wav'       => 1,
+   'xbm'       => 1,
+   'xpm'       => 1,
+   'Y'         => 1,  # file compressed with "Yabba"
+   'Z'         => 1,  # file compressed with "compress"
+   'zip'       => 1,  # zip archive
+   'gitignore' => 1,
+); # 1}}}
+%{$rh_Not_Code_Filename}     = (             # {{{1
+   'AUTHORS'     => 1,
+   'BUGS'        => 1,
+   'BUGS'        => 1,
+   'Changelog'   => 1,
+   'ChangeLog'   => 1,
+   'ChangeLog'   => 1,
+   'Changes'     => 1,
+   'CHANGES'     => 1,
+   'COPYING'     => 1,
+   'COPYING'     => 1,
+   '.cvsignore'  => 1,
+   'Entries'     => 1,
+   'FAQ'         => 1,
+   'iconfig.h'   => 1, # Skip "iconfig.h" files; they're used in Imakefiles.
+   'INSTALL'     => 1,
+   'MAINTAINERS' => 1,
+   'MD5SUMS'     => 1,
+   'NEWS'        => 1,
+   'readme'      => 1,
+   'Readme'      => 1,
+   'README'      => 1,
+   'README.tk'   => 1, # used in kdemultimedia, it's confusing.
+   'Repository'  => 1,
+   'Root'        => 1, # CVS
+   'TODO'        => 1,
+);
+# 1}}}
+%{$rh_Scale_Factor}          = (             # {{{1
+    '(unknown)'                    =>   0.00,
+    '1032/af'                      =>   5.00,
+    '1st generation default'       =>   0.25,
+    '2nd generation default'       =>   0.75,
+    '3rd generation default'       =>   1.00,
+    '4th generation default'       =>   4.00,
+    '5th generation default'       =>  16.00,
+    'aas macro'                    =>   0.88,
+    'abap/4'                       =>   5.00,
+    'ABAP'                         =>   5.00,
+    'accel'                        =>   4.21,
+    'access'                       =>   2.11,
+    'ActionScript'                 =>   1.36,
+    'actor'                        =>   3.81,
+    'acumen'                       =>   2.86,
+    'Ada'                          =>   0.52,
+    'Ada 83'                       =>   1.13,
+    'Ada 95'                       =>   1.63,
+    'adr/dl'                       =>   2.00,
+    'adr/ideal/pdl'                =>   4.00,
+    'ads/batch'                    =>   4.00,
+    'ads/online'                   =>   4.00,
+    'ADSO/IDSM'                    =>   3.00,
+    'advantage'                    =>   2.11,
+    'ai shell default'             =>   1.63,
+    'ai shells'                    =>   1.63,
+    'algol 68'                     =>   0.75,
+    'algol w'                      =>   0.75,
+    'ambush'                       =>   2.50,
+    'aml'                          =>   1.63,
+    'AMPLE'                        =>   2.00,
+    'Ant/XML'                      =>   1.90,
+    'Ant'                          =>   1.90,
+    'Antlr'                        =>   2.00,
+    'amppl ii'                     =>   1.25,
+    'ansi basic'                   =>   1.25,
+    'ansi cobol 74'                =>   0.75,
+    'ansi cobol 85'                =>   0.88,
+    'SQL'                          =>   6.15,
+    'SQL Stored Procedure'         =>   6.15,
+    'SQL Data'                     =>   1.00,
+    'answer/db'                    =>   6.15,
+    'apl 360/370'                  =>   2.50,
+    'apl default'                  =>   2.50,
+    'apl*plus'                     =>   2.50,
+    'applesoft basic'              =>   0.63,
+    'application builder'          =>   4.00,
+    'application manager'          =>   2.22,
+    'aps'                          =>   0.96,
+    'aps'                          =>   4.71,
+    'apt'                          =>   1.13,
+    'aptools'                      =>   4.00,
+    'arc'                          =>   1.63,
+    'ariel'                        =>   0.75,
+    'arity'                        =>   1.63,
+    'art'                          =>   1.63,
+    'art enterprise'               =>   1.74,
+    'artemis'                      =>   2.00,
+    'artim'                        =>   1.74,
+    'AspectJ'                      =>   1.36,
+    'as/set'                       =>   4.21,
+    'asi/inquiry'                  =>   6.15,
+    'ask windows'                  =>   1.74,
+    'asa'                          =>   1.29,
+    'ASP'                          =>   1.29,
+    'ASP.Net'                      =>   1.29,
+    'aspx'                         =>   1.29,
+    'asax'                         =>   1.29,
+    'ascx'                         =>   1.29,
+    'asmx'                         =>   1.29,
+    'config'                       =>   1.29,
+    'webinfo'                      =>   1.29,
+    'CCS'                          =>   5.33,
+    'Apex Trigger'                 =>   1.4 ,
+    'Arduino Sketch'               =>   1.00,
+    'Assembly'                     =>   0.25,
+    'Assembly (macro)'             =>   0.51,
+    'associative default'          =>   1.25,
+    'autocoder'                    =>   0.25,
+    'AutoHotkey'                   =>   1.29,
+    'awk'                          =>   3.81,
+    'aztec c'                      =>   0.63,
+    'balm'                         =>   0.75,
+    'base sas'                     =>   1.51,
+    'basic'                        =>   0.75,
+    'basic a'                      =>   0.63,
+    'bc'                           =>   1.50,
+    'berkeley pascal'              =>   0.88,
+    'better basic'                 =>   0.88,
+    'Blade'                        =>   2.00,
+    'bliss'                        =>   0.75,
+    'bmsgen'                       =>   2.22,
+    'boeingcalc'                   =>  13.33,
+    'bteq'                         =>   6.15,
+    'Brainfuck'                    =>   0.10,
+    'builder'                      =>   2.00,
+    'C'                            =>   0.77,
+    'c set 2'                      =>   0.88,
+    'C#'                           =>   1.36,
+    'C++'                          =>   1.51,
+    'c86plus'                      =>   0.63,
+    'cadbfast'                     =>   2.00,
+    'caearl'                       =>   2.86,
+    'cast'                         =>   1.63,
+    'cbasic'                       =>   0.88,
+    'cdadl'                        =>   4.00,
+    'cellsim'                      =>   1.74,
+    'ColdFusion'                   =>   4.00,
+    'ColdFusion CFScript'          =>   4.00,
+    'chili'                        =>   0.75,
+    'chill'                        =>   0.75,
+    'cics'                         =>   1.74,
+    'clarion'                      =>   1.38,
+    'clascal'                      =>   1.00,
+    'Clean'                        =>   2.50,
+    'cli'                          =>   2.50,
+    'clipper'                      =>   2.05,
+    'clipper db'                   =>   2.00,
+    'clos'                         =>   3.81,
+    'Clojure'                      =>   1.25,
+    'ClojureScript'                =>   1.25,
+    'ClojureC'                     =>   1.25,
+    'clout'                        =>   2.00,
+    'CMake'                        =>   1.00,
+    'cms2'                         =>   0.75,
+    'cmsgen'                       =>   4.21,
+    'COBOL'                        =>   1.04,
+    'COBOL ii'                     =>   0.75,
+    'COBOL/400'                    =>   0.88,
+    'cobra'                        =>   4.00,
+    'codecenter'                   =>   2.22,
+    'cofac'                        =>   2.22,
+    'CoffeeScript'                 =>   2.00,
+    'cogen'                        =>   2.22,
+    'cognos'                       =>   2.22,
+    'cogo'                         =>   1.13,
+    'comal'                        =>   1.00,
+    'comit ii'                     =>   1.25,
+    'common lisp'                  =>   1.25,
+    'concurrent pascal'            =>   1.00,
+    'conniver'                     =>   1.25,
+    'cool:gen/ief'                 =>   2.58,
+    'Coq'                          =>   5.00,
+    'coral 66'                     =>   0.75,
+    'corvet'                       =>   4.21,
+    'corvision'                    =>   5.33,
+    'cpl'                          =>   0.50,
+    'Crystal'                      =>   2.50,
+    'Crystal Reports'              =>   4.00,
+    'csl'                          =>   1.63,
+    'CSON'                         =>   2.50,
+    'csp'                          =>   1.51,
+    'cssl'                         =>   1.74,
+    'CSS'                          =>   1.0,
+    'culprit'                      =>   1.57,
+    'CUDA'                         =>   1.00,
+    'cxpert'                       =>   1.63,
+    'cygnet'                       =>   4.21,
+    'D'                            =>   1.70,
+    'DAL'                          =>   1.50,
+    'Dart'                         =>   2.00,
+    'data base default'            =>   2.00,
+    'dataflex'                     =>   2.00,
+    'datatrieve'                   =>   4.00,
+    'dbase iii'                    =>   2.00,
+    'dbase iv'                     =>   1.54,
+    'diff'                         =>   1.00,
+    'decision support default'     =>   2.22,
+    'decrally'                     =>   2.00,
+    'delphi'                       =>   2.76,
+    'DITA'                         =>   1.90,
+    'dl/1'                         =>   2.00,
+    'dtrace'                       =>   2.00,
+    'NASTRAN DMAP'                 =>   2.35,
+    'dna4'                         =>   4.21,
+    'DOORS Extension Language'     =>   1.50,
+    'Dockerfile'                   =>   2.00,
+    'DOS Batch'                    =>   0.63,
+    'dsp assembly'                 =>   0.50,
+    'dtabl'                        =>   1.74,
+    'dtipt'                        =>   1.74,
+    'dyana'                        =>   1.13,
+    'dynamoiii'                    =>   1.74,
+    'easel'                        =>   2.76,
+    'easy'                         =>   1.63,
+    'easytrieve+'                  =>   2.35,
+    'eclipse'                      =>   1.63,
+    'ECPP'                         =>   1.90,
+    'eda/sql'                      =>   6.67,
+    'edscheme 3.4'                 =>   1.51,
+    'EEx'                          =>   2.00,
+    'eiffel'                       =>   3.81,
+    'Elixir'                       =>   2.11,
+    'Elm'                          =>   2.50,
+    'enform'                       =>   1.74,
+    'englishbased default'         =>   1.51,
+    'ensemble'                     =>   2.76,
+    'epos'                         =>   4.00,
+    'ERB'                          =>   2.00,
+    'Erlang'                       =>   2.11,
+    'esf'                          =>   2.00,
+    'espadvisor'                   =>   1.63,
+    'espl/i'                       =>   1.13,
+    'euclid'                       =>   0.75,
+    'excel'                        =>   1.74,
+    'excel 12'                     =>  13.33,
+    'excel 34'                     =>  13.33,
+    'excel 5'                      =>  13.33,
+    'express'                      =>   2.22,
+    'exsys'                        =>   1.63,
+    'extended common lisp'         =>   1.43,
+    'eznomad'                      =>   2.22,
+    'facets'                       =>   4.00,
+    'factorylink iv'               =>   2.76,
+    'fame'                         =>   2.22,
+    'filemaker pro'                =>   2.22,
+    'flavors'                      =>   2.76,
+    'flex'                         =>   1.74,
+    'flexgen'                      =>   2.76,
+    'Focus'                        =>   1.90,
+    'foil'                         =>   1.51,
+    'forte'                        =>   4.44,
+    'Forth'                        =>   1.25,
+    'Fortran 66'                   =>   0.63,
+    'Fortran 77'                   =>   0.75,
+    'Fortran 90'                   =>   1.00,
+    'Fortran 95'                   =>   1.13,
+    'Fortran II'                   =>   0.63,
+    'foundation'                   =>   2.76,
+    'foxpro'                       =>   2.29,
+    'foxpro 1'                     =>   2.00,
+    'foxpro 2.5'                   =>   2.35,
+    'framework'                    =>  13.33,
+    'Freemarker Template'          =>   1.48,
+    'F#'                           =>   2.50,
+    'g2'                           =>   1.63,
+    'gamma'                        =>   5.00,
+    'genascript'                   =>   2.96,
+    'gener/ol'                     =>   6.15,
+    'genexus'                      =>   5.33,
+    'genifer'                      =>   4.21,
+    'geode 2.0'                    =>   5.00,
+    'gfa basic'                    =>   2.35,
+    'Glade'                        =>   2.00,
+    'GLSL'                         =>   2.00,
+    'gml'                          =>   1.74,
+    'golden common lisp'           =>   1.25,
+    'gpss'                         =>   1.74,
+    'guest'                        =>   2.86,
+    'guru'                         =>   1.63,
+    'GDScript'                     =>   2.50,
+    'Go'                           =>   2.50,
+    'Grails'                       =>   1.48,
+    'Groovy'                       =>   4.10,
+    'gw basic'                     =>   0.82,
+    'Harbour'                      =>   2.00,
+    'Haskell'                      =>   2.11,
+    'high c'                       =>   0.63,
+    'hlevel'                       =>   1.38,
+    'hp basic'                     =>   0.63,
+    'Haml'                         =>   2.50,
+    'Handlebars'                   =>   2.50,
+    'Haxe'                         =>   2.00,
+    'HTML'                         =>   1.90,
+    'XHTML'                        =>   1.90,
+    'XMI'                          =>   1.90,
+    'XML'                          =>   1.90,
+    'MXML'                         =>   1.90,
+    'XSLT'                         =>   1.90,
+    'DTD'                          =>   1.90,
+    'XSD'                          =>   1.90,
+    'NAnt script'                  =>   1.90,
+    'MSBuild script'               =>   1.90,
+    'HLSL'                         =>   2.00,
+    'HTML 2'                       =>   5.00,
+    'HTML 3'                       =>   5.33,
+    'huron'                        =>   5.00,
+    'ibm adf i'                    =>   4.00,
+    'ibm adf ii'                   =>   4.44,
+    'ibm advanced basic'           =>   0.82,
+    'ibm cics/vs'                  =>   2.00,
+    'ibm compiled basic'           =>   0.88,
+    'ibm vs cobol'                 =>   0.75,
+    'ibm vs cobol ii'              =>   0.88,
+    'ices'                         =>   1.13,
+    'icon'                         =>   1.00,
+    'ideal'                        =>   1.54,
+    'idms'                         =>   2.00,
+    'ief'                          =>   5.71,
+    'ief/cool:gen'                 =>   2.58,
+    'iew'                          =>   5.71,
+    'ifps/plus'                    =>   2.50,
+    'imprs'                        =>   2.00,
+    'informix'                     =>   2.58,
+    'ingres'                       =>   2.00,
+    'INI'                          =>   1.00,
+    'inquire'                      =>   6.15,
+    'insight2'                     =>   1.63,
+    'install/1'                    =>   5.00,
+    'InstallShield'                =>   1.90,
+    'intellect'                    =>   1.51,
+    'interlisp'                    =>   1.38,
+    'interpreted basic'            =>   0.75,
+    'interpreted c'                =>   0.63,
+    'iqlisp'                       =>   1.38,
+    'iqrp'                         =>   6.15,
+    'j2ee'                         =>   1.60,
+    'Jam'                          =>   2.00,
+    'janus'                        =>   1.13,
+    'Java'                         =>   1.36,
+    'JavaScript'                   =>   1.48,
+    'JavaServer Faces'             =>   1.5 ,
+    'JSON'                         =>   2.50,
+    'JSP'                          =>   1.48,
+    'JSX'                          =>   1.48,
+    'Velocity Template Language'   =>   1.00,
+    'JCL'                          =>   1.67,
+    'joss'                         =>   0.75,
+    'jovial'                       =>   0.75,
+    'jsp'                          =>   1.36,
+    'kappa'                        =>   2.00,
+    'kbms'                         =>   1.63,
+    'kcl'                          =>   1.25,
+    'kee'                          =>   1.63,
+    'keyplus'                      =>   2.00,
+    'kl'                           =>   1.25,
+    'klo'                          =>   1.25,
+    'knowol'                       =>   1.63,
+    'krl'                          =>   1.38,
+    'Kermit'                       =>   2.00,
+    'Korn Shell'                   =>   3.81,
+    'Kotlin'                       =>   2.00,
+    'ladder logic'                 =>   2.22,
+    'lambit/l'                     =>   1.25,
+    'lattice c'                    =>   0.63,
+    'LESS'                         =>   1.50,
+    'LFE'                          =>   1.25,
+    'liana'                        =>   0.63,
+    'lilith'                       =>   1.13,
+    'linc ii'                      =>   5.71,
+    'liquid'                       =>   3.00,
+    'Lisp'                         =>   1.25,
+    'LiveLink OScript'             =>   3.5 ,
+    'loglisp'                      =>   1.38,
+    'Logtalk'                      =>   2.00,
+    'loops'                        =>   3.81,
+    'lotus 123 dos'                =>  13.33,
+    'lotus macros'                 =>   0.75,
+    'lotus notes'                  =>   3.64,
+    'lucid 3d'                     =>  13.33,
+    'lyric'                        =>   1.51,
+    'm4'                           =>   1.00,
+    'm'                            =>   5.00,
+    'macforth'                     =>   1.25,
+    'mach1'                        =>   2.00,
+    'machine language'             =>   0.13,
+    'maestro'                      =>   5.00,
+    'magec'                        =>   5.00,
+    'magik'                        =>   3.81,
+    'Lake'                         =>   3.81,
+    'make'                         =>   2.50,
+    'Mako'                         =>   1.50, # Not sure about the scaling.
+    'mantis'                       =>   2.96,
+    'mapper'                       =>   0.99,
+    'mark iv'                      =>   2.00,
+    'mark v'                       =>   2.22,
+    'Markdown'                     =>   1.00,
+    'mathcad'                      =>  16.00,
+    'Maven'                        =>   1.90,
+    'mdl'                          =>   2.22,
+    'mentor'                       =>   1.51,
+    'mesa'                         =>   0.75,
+    'microfocus cobol'             =>   1.00,
+    'microforth'                   =>   1.25,
+    'microsoft c'                  =>   0.63,
+    'microstep'                    =>   4.00,
+    'miranda'                      =>   2.00,
+    'model 204'                    =>   2.11,
+    'modula 2'                     =>   1.00,
+    'mosaic'                       =>  13.33,
+    # 'ms c ++ v. 7'                 =>   1.51,
+    'ms compiled basic'            =>   0.88,
+    'msl'                          =>   1.25,
+    'mulisp'                       =>   1.25,
+    'MUMPS'                        =>   4.21,
+    'Mustache'                     =>   1.75,
+    'Nastran'                      =>   1.13,
+    'natural'                      =>   1.54,
+    'natural 1'                    =>   1.51,
+    'natural 2'                    =>   1.74,
+    'natural construct'            =>   3.20,
+    'natural language'             =>   0.03,
+    'Nemerle'                      =>   2.50,
+    'netron/cap'                   =>   4.21,
+    'nexpert'                      =>   1.63,
+    'nial'                         =>   1.63,
+    'Nim'                          =>   2.00,
+    'nomad2'                       =>   2.00,
+    'nonprocedural default'        =>   2.22,
+    'notes vip'                    =>   2.22,
+    'nroff'                        =>   1.51,
+    'object assembler'             =>   1.25,
+    'object lisp'                  =>   2.76,
+    'object logo'                  =>   2.76,
+    'object pascal'                =>   2.76,
+    'object star'                  =>   5.00,
+    'Objective C'                  =>   2.96,
+    'Objective C++'                =>   2.96,
+    'objectoriented default'       =>   2.76,
+    'objectview'                   =>   3.20,
+    'OCaml'                        =>   3.00,
+    'ogl'                          =>   1.00,
+    'omnis 7'                      =>   2.00,
+    'oodl'                         =>   2.76,
+    'ops'                          =>   1.74,
+    'ops5'                         =>   1.38,
+    'oracle'                       =>   2.76,
+    'Oracle Reports'               =>   2.76,
+    'Oracle Forms'                 =>   2.67,
+    'Oracle Developer/2000'        =>   3.48,
+    'oscar'                        =>   0.75,
+    'pacbase'                      =>   1.67,
+    'pace'                         =>   2.00,
+    'paradox/pal'                  =>   2.22,
+    'Pascal'                       =>   0.88,
+    'Patran Command Language'      =>   2.50,
+    'pc focus'                     =>   2.22,
+    'pdl millenium'                =>   3.81,
+    'pdp11 ade'                    =>   1.51,
+    'peoplesoft'                   =>   2.50,
+    'Perl'                         =>   4.00,
+    'persistance object builder'   =>   3.81,
+    'Pig Latin'                    =>   1.00,
+    'pilot'                        =>   1.51,
+    'PL/I'                         =>   1.38,
+    'pl/1'                         =>   1.38,
+    'pl/m'                         =>   1.13,
+    'pl/s'                         =>   0.88,
+    'pl/sql'                       =>   2.58,
+    'planit'                       =>   1.51,
+    'planner'                      =>   1.25,
+    'planperfect 1'                =>  11.43,
+    'plato'                        =>   1.51,
+    'PO File'                      =>   1.50,
+    'polyforth'                    =>   1.25,
+    'pop'                          =>   1.38,
+    'poplog'                       =>   1.38,
+    'power basic'                  =>   1.63,
+    'PowerBuilder'                 =>   3.33,
+    'powerhouse'                   =>   5.71,
+    'PowerShell'                   =>   3.00,
+    'ppl (plus)'                   =>   2.00,
+    'problemoriented default'      =>   1.13,
+    'proc'                         =>   2.96,
+    'procedural default'           =>   0.75,
+    'professional pascal'          =>   0.88,
+    'program generator default'    =>   5.00,
+    'progress v4'                  =>   2.22,
+    'proiv'                        =>   1.38,
+    'Prolog'                       =>   1.25,
+    'prose'                        =>   0.75,
+    'proteus'                      =>   0.75,
+    'Protocol Buffers'             =>   2.00,
+    'Pug'                          =>   2.00,
+    'Puppet'                       =>   2.00,
+    'PureScript'                   =>   2.00,
+    'qbasic'                       =>   1.38,
+    'qbe'                          =>   6.15,
+    'qmf'                          =>   5.33,
+    'QML'                          =>   1.25,
+    'Qt'                           =>   2.00,
+    'Qt Linguist'                  =>   1.00,
+    'Qt Project'                   =>   1.00,
+    'qnial'                        =>   1.63,
+    'quattro'                      =>  13.33,
+    'quattro pro'                  =>  13.33,
+    'query default'                =>   6.15,
+    'quick basic 1'                =>   1.25,
+    'quick basic 2'                =>   1.31,
+    'quick basic 3'                =>   1.38,
+    'quick c'                      =>   0.63,
+    'quickbuild'                   =>   2.86,
+    'quiz'                         =>   5.33,
+    'R'                            =>   3.00,
+    'Racket'                       =>   1.50,
+    'rally'                        =>   2.00,
+    'ramis ii'                     =>   2.00,
+    'rapidgen'                     =>   2.86,
+    'ratfor'                       =>   0.88,
+    'rdb'                          =>   2.00,
+    'realia'                       =>   1.74,
+    'realizer 1.0'                 =>   2.00,
+    'realizer 2.0'                 =>   2.22,
+    'relate/3000'                  =>   2.00,
+    'reuse default'                =>  16.00,
+    'Razor'                        =>   2.00,
+    'Rexx'                         =>   1.19,
+    'rm basic'                     =>   0.88,
+    'rm cobol'                     =>   0.75,
+    'rm fortran'                   =>   0.75,
+    'RobotFramework'               =>   2.50,
+    'rpg i'                        =>   1.00,
+    'rpg ii'                       =>   1.63,
+    'rpg iii'                      =>   1.63,
+    'rtexpert 1.4'                 =>   1.38,
+    'Rust'                         =>   1.00,
+    'sabretalk'                    =>   0.90,
+    'sail'                         =>   0.75,
+    'sapiens'                      =>   5.00,
+    'sas'                          =>   1.95,
+    'savvy'                        =>   6.15,
+    'sbasic'                       =>   0.88,
+    'Scala'                        =>   4.10,
+    'sceptre'                      =>   1.13,
+    'scheme'                       =>   1.51,
+    'screen painter default'       =>  13.33,
+    'sequal'                       =>   6.67,
+    'Slim'                         =>   3.00,
+    'Bourne Shell'                 =>   3.81,
+    'Bourne Again Shell'           =>   3.81,
+    'ksh'                          =>   3.81,
+    'zsh'                          =>   3.81,
+    'C Shell'                      =>   3.81,
+    'siebel tools '                =>   6.15,
+    'SAS'                          =>   1.5 ,
+    'Sass'                         =>   1.5 ,
+    'simplan'                      =>   2.22,
+    'simscript'                    =>   1.74,
+    'simula'                       =>   1.74,
+    'simula 67'                    =>   1.74,
+    'simulation default'           =>   1.74,
+    'SKILL'                        =>   2.00,
+    'SKILL++'                      =>   2.00,
+    'slogan'                       =>   0.98,
+    'Slice'                        =>   1.50,
+    'smalltalk'                    =>   2.50,
+    'smalltalk 286'                =>   3.81,
+    'smalltalk 80'                 =>   3.81,
+    'smalltalk/v'                  =>   3.81,
+    'Smarty'                       =>   3.50,
+    'snap'                         =>   1.00,
+    'snobol24'                     =>   0.63,
+    'softscreen'                   =>   5.71,
+    'Softbridge Basic'             =>   2.76,
+    'solo'                         =>   1.38,
+    'speakeasy'                    =>   2.22,
+    'spinnaker ppl'                =>   2.22,
+    'splus'                        =>   2.50,
+    'spreadsheet default'          =>  13.33,
+    'sps'                          =>   0.25,
+    'spss'                         =>   2.50,
+    'Specman e'                    =>   2.00,
+    'SQL'                          =>   2.29,
+    'sqlwindows'                   =>   6.67,
+    'statistical default'          =>   2.50,
+    'Standard ML'                  =>   3.00,
+    'strategem'                    =>   2.22,
+    'stress'                       =>   1.13,
+    'strongly typed default'       =>   0.88,
+    'style'                        =>   1.74,
+    'Stylus'                       =>   1.48,
+    'superbase 1.3'                =>   2.22,
+    'surpass'                      =>  13.33,
+    'Swift'                        =>   2.50,
+    'sybase'                       =>   2.00,
+    'symantec c++'                 =>   2.76,
+    'symbolang'                    =>   1.25,
+    'synchroworks'                 =>   4.44,
+    'synon/2e'                     =>   4.21,
+    'systemw'                      =>   2.22,
+    'tandem access language'       =>   0.88,
+    'Tcl/Tk'                       =>   4.00,
+    'Teamcenter def'               =>   1.00,
+    'Teamcenter met'               =>   1.00,
+    'Teamcenter mth'               =>   1.00,
+    'TeX'                          =>   1.50,
+    'telon'                        =>   5.00,
+    'tessaract'                    =>   2.00,
+    'the twin'                     =>  13.33,
+    'themis'                       =>   6.15,
+    'tiief'                        =>   5.71,
+    'Titanium Style Sheet'         =>   2.00,
+    'topspeed c++'                 =>   2.76,
+    'transform'                    =>   5.33,
+    'translisp plus'               =>   1.43,
+    'treet'                        =>   1.25,
+    'treetran'                     =>   1.25,
+    'trs80 basic'                  =>   0.63,
+    'true basic'                   =>   1.25,
+    'turbo c'                      =>   0.63,
+    'turbo expert'                 =>   1.63,
+    'turbo pascal >5'              =>   1.63,
+    'turbo pascal 14'              =>   1.00,
+    'turbo pascal 45'              =>   1.13,
+    'turing'                       =>   1.00,
+    'tutor'                        =>   1.51,
+    'twaice'                       =>   1.63,
+    'Twig'                         =>   2.00,
+    'TTCN'                         =>   2.00,
+    'TITAN Project File Information' =>   1.90,
+    'TypeScript'                   =>   2.00,
+    'ucsd pascal'                  =>   0.88,
+    'ufo/ims'                      =>   2.22,
+    'uhelp'                        =>   2.50,
+    'uniface'                      =>   5.00,
+    'Unity-Prefab'                 =>   2.50,
+    'Vala'                         =>   1.50,
+    'Vala Header'                  =>   1.40,
+    'vax acms'                     =>   1.38,
+    'vax ade'                      =>   2.00,
+    'vbscript'                     =>   2.35,
+    'vectran'                      =>   0.75,
+    'Verilog-SystemVerilog'        =>   1.51,
+    'VHDL'                         =>   4.21,
+    'vim script'                   =>   3.00,
+    'visible c'                    =>   1.63,
+    'visible cobol'                =>   2.00,
+    'visicalc 1'                   =>   8.89,
+    'visual 4.0'                   =>   2.76,
+    'visual basic'                 =>   1.90,
+    'visual basic 1'               =>   1.74,
+    'visual basic 2'               =>   1.86,
+    'visual basic 3'               =>   2.00,
+    'visual basic 4'               =>   2.22,
+    'visual basic 5'               =>   2.76,
+    'Visual Basic'                 =>   2.76,
+    'visual basic dos'             =>   2.00,
+    'visual c++'                   =>   2.35,
+    'visual cobol'                 =>   4.00,
+    'Visual Fox Pro'               =>   4.00, # Visual Fox Pro is not available in the language gearing ratios listed at Mayes Consulting web site
+    'visual objects'               =>   5.00,
+    'visualage'                    =>   3.81,
+    'Visualforce Component'        =>   1.9 ,
+    'Visualforce Page'             =>   1.9 ,
+    'visualgen'                    =>   4.44,
+    'VM'                           =>   2.00,
+    'vpf'                          =>   0.84,
+    'Vuejs Component'              =>   2.00,
+    'vulcan'                       =>   1.25,
+    'vz programmer'                =>   2.22,
+    'warp x'                       =>   2.00,
+    'watcom c'                     =>   0.63,
+    'watcom c/386'                 =>   0.63,
+    'waterloo c'                   =>   0.63,
+    'waterloo pascal'              =>   0.88,
+    'watfiv'                       =>   0.94,
+    'watfor'                       =>   0.88,
+    'web scripts'                  =>   5.33,
+    'whip'                         =>   0.88,
+    'Windows Message File'         =>   1.00,
+    'Windows Resource File'        =>   1.00,
+    'Windows Module Definition'    =>   1.00,
+    'WiX source'                   =>   1.90,
+    'WiX include'                  =>   1.90,
+    'WiX string localization'      =>   1.90,
+    'wizard'                       =>   2.86,
+    'xBase'                        =>   2.00,
+    'xBase Header'                 =>   2.00,
+    'xlisp'                        =>   1.25,
+    'XAML'                         =>   1.90,
+    'XQuery'                       =>   2.50,
+    'yacc'                         =>   1.51,
+    'yacc++'                       =>   1.51,
+    'YAML'                         =>   0.90,
+    'zbasic'                       =>   0.88,
+    'zim'                          =>   4.21,
+    'zlisp'                        =>   1.25,
+    'Expect'                       => 2.00,
+    'C/C++ Header'                 => 1.00,
+    'inc'                          => 1.00,
+    'lex'                          => 1.00,
+    'Julia'                        => 4.00,
+    'MATLAB'                       => 4.00,
+    'Mathematica'                  => 5.00,
+    'Mercury'                      => 3.00,
+    'Maven/XML'                    => 2.5,
+    'IDL'                          => 3.80,
+    'Octave'                       => 4.00,
+    'ML'                           => 3.00,
+    'Modula3'                      => 2.00,
+    'PHP'                          => 3.50,
+    'Python'                       => 4.20,
+    'RapydScript'                  => 4.20,
+    'Cython'                       => 3.80,
+    'Ruby'                         => 4.20,
+    'Ruby HTML'                    => 4.00,
+    'sed'                          => 4.00,
+    'Lua'                          => 4.00,
+    'OpenCL'                       => 1.50,
+);
+# 1}}}
+%{$rh_Known_Binary_Archives} = (             # {{{1
+            '.tar'     => 1 ,
+            '.tar.Z'   => 1 ,
+            '.tar.gz'  => 1 ,
+            '.tar.bz2' => 1 ,
+            '.zip'     => 1 ,
+            '.Zip'     => 1 ,
+            '.ZIP'     => 1 ,
+            '.ear'     => 1 ,  # Java
+            '.war'     => 1 ,  # contained within .ear
+            '.xz'      => 1 ,
+            );
+# 1}}}
+} # end sub set_constants()
+sub check_scale_existence {                  # {{{1
+    # do a few sanity checks
+    my ($rhaa_Filters_by_Language,
+        $rh_Language_by_Extension,
+        $rh_Scale_Factor) = @_;
+
+    my %extension_collisions = (
+        # TODO:  find a better way of dealing with these
+        "PHP/Pascal"                        => 1,
+        "Lisp/OpenCL"                       => 1,
+        "Lisp/Julia"                        => 1,
+        "MATLAB/Mathematica/Objective C/MUMPS/Mercury"  => 1,
+        "Pascal/Puppet"                     => 1,
+        "Perl/Prolog"                       => 1,
+        "IDL/Qt Project/Prolog"             => 1,
+        "D/dtrace"                          => 1,
+        "Fortran 77/Forth"                  => 1,
+        "F#/Forth"                          => 1,
+        "Verilog-SystemVerilog/Coq"         => 1,
+        "TypeScript/Qt Linguist"            => 1,
+        "Qt/Glade"                          => 1,
+    );
+    my $OK = 1;
+    foreach my $language (sort keys %{$rhaa_Filters_by_Language}) {
+        next if defined $extension_collisions{$language};
+        if (!defined $rh_Scale_Factor->{$language}) {
+            $OK = 0;
+            warn "Missing scale factor for $language\n";
+        }
+    }
+
+    my %seen_it = ();
+    foreach my $ext (sort keys %{$rh_Language_by_Extension}) {
+        my $language = $rh_Language_by_Extension->{$ext};
+        next if defined $extension_collisions{$language};
+        next if $seen_it{$language};
+        if (!$rhaa_Filters_by_Language->{$language}) {
+            $OK = 0;
+            warn "Missing language filter for $language\n";
+        }
+        $seen_it{$language} = 1;
+    }
+    die unless $OK;
+} # 1}}}
+sub Install_Regexp_Common {                  # {{{1
+    # Installs portions of Damian Conway's & Abigail's Regexp::Common
+    # module, version 2013031301 into a temporary directory for the
+    # duration of this run.
+    my %Regexp_Common_Contents = ();
+$Regexp_Common_Contents{'Common'} = <<'EOCommon'; # {{{2
+package Regexp::Common;
+
+use 5.00473;
+use strict;
+
+BEGIN {
+    # This makes sure 'use warnings' doesn't bomb out on 5.005_*;
+    # warnings won't be enabled on those old versions though.
+    # Since all other files use this file, we can use 'use warnings'
+    # elsewhere as well, but *AFTER* 'use Regexp::Common'.
+    if ($] < 5.006) {
+        $INC {"warnings.pm"} = 1;
+        no strict 'refs';
+        *{"warnings::unimport"} = sub {0};
+    }
+}
+
+use warnings;
+use vars qw /$VERSION %RE %sub_interface $AUTOLOAD/;
+
+$VERSION = '2013031301';
+
+
+sub _croak {
+    require Carp;
+    goto &Carp::croak;
+}
+
+sub _carp {
+    require Carp;
+    goto &Carp::carp;
+}
+
+sub new {
+    my ($class, @data) = @_;
+    my %self;
+    tie %self, $class, @data;
+    return \%self;
+}
+
+sub TIEHASH {
+    my ($class, @data) = @_;
+    bless \@data, $class;
+}
+
+sub FETCH {
+    my ($self, $extra) = @_;
+    return bless ref($self)->new(@$self, $extra), ref($self);
+}
+
+my %imports = map {$_ => "Regexp::Common::$_"}
+              qw /balanced CC     comment   delimited lingua list
+                  net      number profanity SEN       URI    whitespace
+                  zip/;
+
+sub import {
+    shift;  # Shift off the class.
+    tie %RE, __PACKAGE__;
+    {
+        no strict 'refs';
+        *{caller() . "::RE"} = \%RE;
+    }
+
+    my $saw_import;
+    my $no_defaults;
+    my %exclude;
+    foreach my $entry (grep {!/^RE_/} @_) {
+        if ($entry eq 'pattern') {
+            no strict 'refs';
+            *{caller() . "::pattern"} = \&pattern;
+            next;
+        }
+        # This used to prevent $; from being set. We still recognize it,
+        # but we won't do anything.
+        if ($entry eq 'clean') {
+            next;
+        }
+        if ($entry eq 'no_defaults') {
+            $no_defaults ++;
+            next;
+        }
+        if (my $module = $imports {$entry}) {
+            $saw_import ++;
+            eval "require $module;";
+            die $@ if $@;
+            next;
+        }
+        if ($entry =~ /^!(.*)/ && $imports {$1}) {
+            $exclude {$1} ++;
+            next;
+        }
+        # As a last resort, try to load the argument.
+        my $module = $entry =~ /^Regexp::Common/
+                            ? $entry
+                            : "Regexp::Common::" . $entry;
+        eval "require $module;";
+        die $@ if $@;
+    }
+
+    unless ($saw_import || $no_defaults) {
+        foreach my $module (values %imports) {
+            next if $exclude {$module};
+            eval "require $module;";
+            die $@ if $@;
+        }
+    }
+
+    my %exported;
+    foreach my $entry (grep {/^RE_/} @_) {
+        if ($entry =~ /^RE_(\w+_)?ALL$/) {
+            my $m  = defined $1 ? $1 : "";
+            my $re = qr /^RE_${m}.*$/;
+            while (my ($sub, $interface) = each %sub_interface) {
+                next if $exported {$sub};
+                next unless $sub =~ /$re/;
+                {
+                    no strict 'refs';
+                    *{caller() . "::$sub"} = $interface;
+                }
+                $exported {$sub} ++;
+            }
+        }
+        else {
+            next if $exported {$entry};
+            _croak "Can't export unknown subroutine &$entry"
+                unless $sub_interface {$entry};
+            {
+                no strict 'refs';
+                *{caller() . "::$entry"} = $sub_interface {$entry};
+            }
+            $exported {$entry} ++;
+        }
+    }
+}
+
+sub AUTOLOAD { _croak "Can't $AUTOLOAD" }
+
+sub DESTROY {}
+
+my %cache;
+
+my $fpat = qr/^(-\w+)/;
+
+sub _decache {
+        my @args = @{tied %{$_[0]}};
+        my @nonflags = grep {!/$fpat/} @args;
+        my $cache = get_cache(@nonflags);
+        _croak "Can't create unknown regex: \$RE{"
+            . join("}{",@args) . "}"
+                unless exists $cache->{__VAL__};
+        _croak "Perl $] does not support the pattern "
+            . "\$RE{" . join("}{",@args)
+            . "}.\nYou need Perl $cache->{__VAL__}{version} or later"
+                unless ($cache->{__VAL__}{version}||0) <= $];
+        my %flags = ( %{$cache->{__VAL__}{default}},
+                      map { /$fpat\Q$;\E(.*)/ ? ($1 => $2)
+                          : /$fpat/           ? ($1 => undef)
+                          :                     ()
+                          } @args);
+        $cache->{__VAL__}->_clone_with(\@args, \%flags);
+}
+
+use overload q{""} => \&_decache;
+
+
+sub get_cache {
+        my $cache = \%cache;
+        foreach (@_) {
+                $cache = $cache->{$_}
+                      || ($cache->{$_} = {});
+        }
+        return $cache;
+}
+
+sub croak_version {
+        my ($entry, @args) = @_;
+}
+
+sub pattern {
+        my %spec = @_;
+        _croak 'pattern() requires argument: name => [ @list ]'
+                unless $spec{name} && ref $spec{name} eq 'ARRAY';
+        _croak 'pattern() requires argument: create => $sub_ref_or_string'
+                unless $spec{create};
+
+        if (ref $spec{create} ne "CODE") {
+                my $fixed_str = "$spec{create}";
+                $spec{create} = sub { $fixed_str }
+        }
+
+        my @nonflags;
+        my %default;
+        foreach ( @{$spec{name}} ) {
+                if (/$fpat=(.*)/) {
+                        $default{$1} = $2;
+                }
+                elsif (/$fpat\s*$/) {
+                        $default{$1} = undef;
+                }
+                else {
+                        push @nonflags, $_;
+                }
+        }
+
+        my $entry = get_cache(@nonflags);
+
+        if ($entry->{__VAL__}) {
+                _carp "Overriding \$RE{"
+                   . join("}{",@nonflags)
+                   . "}";
+        }
+
+        $entry->{__VAL__} = bless {
+                                create  => $spec{create},
+                                match   => $spec{match} || \&generic_match,
+                                subs    => $spec{subs}  || \&generic_subs,
+                                version => $spec{version},
+                                default => \%default,
+                            }, 'Regexp::Common::Entry';
+
+        foreach (@nonflags) {s/\W/X/g}
+        my $subname = "RE_" . join ("_", @nonflags);
+        $sub_interface{$subname} = sub {
+                push @_ => undef if @_ % 2;
+                my %flags = @_;
+                my $pat = $spec{create}->($entry->{__VAL__},
+                               {%default, %flags}, \@nonflags);
+                if (exists $flags{-keep}) { $pat =~ s/\Q(?k:/(/g; }
+                else { $pat =~ s/\Q(?k:/(?:/g; }
+                return exists $flags {-i} ? qr /(?i:$pat)/ : qr/$pat/;
+        };
+
+        return 1;
+}
+
+sub generic_match {$_ [1] =~  /$_[0]/}
+sub generic_subs  {$_ [1] =~ s/$_[0]/$_[2]/}
+
+sub matches {
+        my ($self, $str) = @_;
+        my $entry = $self -> _decache;
+        $entry -> {match} -> ($entry, $str);
+}
+
+sub subs {
+        my ($self, $str, $newstr) = @_;
+        my $entry = $self -> _decache;
+        $entry -> {subs} -> ($entry, $str, $newstr);
+        return $str;
+}
+
+
+package Regexp::Common::Entry;
+# use Carp;
+
+use overload
+    q{""} => sub {
+        my ($self) = @_;
+        my $pat = $self->{create}->($self, $self->{flags}, $self->{args});
+        if (exists $self->{flags}{-keep}) {
+            $pat =~ s/\Q(?k:/(/g;
+        }
+        else {
+            $pat =~ s/\Q(?k:/(?:/g;
+        }
+        if (exists $self->{flags}{-i})   { $pat = "(?i)$pat" }
+        return $pat;
+    };
+
+sub _clone_with {
+    my ($self, $args, $flags) = @_;
+    bless { %$self, args=>$args, flags=>$flags }, ref $self;
+}
+
+1;
+#
+# This software is Copyright (c) 2001 - 2011, Damian Conway and Abigail.
+#
+# This module is free software, and maybe used under any of the following
+# licenses:
+#
+#  1) The Perl Artistic License.     See the file COPYRIGHT.AL.
+#  2) The Perl Artistic License 2.0. See the file COPYRIGHT.AL2.
+#  3) The BSD Licence.               See the file COPYRIGHT.BSD.
+#  4) The MIT Licence.               See the file COPYRIGHT.MIT.
+EOCommon
+# 2}}}
+$Regexp_Common_Contents{'Common/comment'} = <<'EOC';   # {{{2
+package Regexp::Common::comment;
+
+use Regexp::Common qw /pattern clean no_defaults/;
+
+use strict;
+use warnings;
+
+use vars qw /$VERSION/;
+$VERSION = '2010010201';
+
+my @generic = (
+    {languages => [qw /ABC Forth/],
+     to_eol    => ['\\\\']},   # This is for just a *single* backslash.
+
+    {languages => [qw /Ada Alan Eiffel lua/],
+     to_eol    => ['--']},
+
+    {languages => [qw /Advisor/],
+     to_eol    => ['#|//']},
+
+    {languages => [qw /Advsys CQL Lisp LOGO M MUMPS REBOL Scheme
+                       SMITH zonefile/],
+     to_eol    => [';']},
+
+    {languages => ['Algol 60'],
+     from_to   => [[qw /comment ;/]]},
+
+    {languages => [qw {ALPACA B C C-- LPC PL/I}],
+     from_to   => [[qw {/* */}]]},
+
+    {languages => [qw /awk fvwm2 Icon m4 mutt Perl Python QML
+                       R Ruby shell Tcl/],
+     to_eol    => ['#']},
+
+    {languages => [[BASIC => 'mvEnterprise']],
+     to_eol    => ['[*!]|REM']},
+
+    {languages => [qw /Befunge-98 Funge-98 Shelta/],
+     id        => [';']},
+
+    {languages => ['beta-Juliet', 'Crystal Report', 'Portia', 'Ubercode'],
+     to_eol    => ['//']},
+
+    {languages => ['BML'],
+     from_to   => [['<?_c', '_c?>']],
+    },
+
+    {languages => [qw /C++/, 'C#', qw /AspectJ Cg ECMAScript FPL Java JavaScript JSX Stylus/],
+     to_eol    => ['//'],
+     from_to   => [[qw {/* */}]]},
+
+    {languages => [qw /CLU LaTeX slrn TeX/],
+     to_eol    => ['%']},
+
+    {languages => [qw /False/],
+     from_to   => [[qw !{ }!]]},
+
+    {languages => [qw /Fortran/],
+     to_eol    => ['!']},
+
+    {languages => [qw /Haifu/],
+     id        => [',']},
+
+    {languages => [qw /ILLGOL/],
+     to_eol    => ['NB']},
+
+    {languages => [qw /INTERCAL/],
+     to_eol    => [q{(?:(?:PLEASE(?:\s+DO)?|DO)\s+)?(?:NOT|N'T)}]},
+
+    {languages => [qw /J/],
+     to_eol    => ['NB[.]']},
+
+    {languages => [qw /JavaDoc/],
+     from_to   => [[qw {/** */}]]},
+
+    {languages => [qw /Nickle/],
+     to_eol    => ['#'],
+     from_to   => [[qw {/* */}]]},
+
+    {languages => [qw /Oberon/],
+     from_to   => [[qw /(* *)/]]},
+
+    {languages => [[qw /Pascal Delphi/], [qw /Pascal Free/], [qw /Pascal GPC/]],
+     to_eol    => ['//'],
+     from_to   => [[qw !{ }!], [qw !(* *)!]]},
+
+    {languages => [[qw /Pascal Workshop/]],
+     id        => [qw /"/],
+     from_to   => [[qw !{ }!], [qw !(* *)!], [qw !/* */!]]},
+
+    {languages => [qw /PEARL/],
+     to_eol    => ['!'],
+     from_to   => [[qw {/* */}]]},
+
+    {languages => [qw /PHP/],
+     to_eol    => ['#', '//'],
+     from_to   => [[qw {/* */}]]},
+
+    {languages => [qw !PL/B!],
+     to_eol    => ['[.;]']},
+
+    {languages => [qw !PL/SQL!],
+     to_eol    => ['--'],
+     from_to   => [[qw {/* */}]]},
+
+    {languages => [qw /Q-BAL/],
+     to_eol    => ['`']},
+
+    {languages => [qw /Smalltalk/],
+     id        => ['"']},
+
+    {languages => [qw /SQL/],
+     to_eol    => ['-{2,}']},
+
+    {languages => [qw /troff/],
+     to_eol    => ['\\\"']},
+
+    {languages => [qw /vi/],
+     to_eol    => ['"']},
+
+    {languages => [qw /*W/],
+     from_to   => [[qw {|| !!}]]},
+
+    {languages => [qw /ZZT-OOP/],
+     to_eol    => ["'"]},
+);
+
+my @plain_or_nested = (
+   [Caml         =>  undef,       "(*"  => "*)"],
+   [Dylan        =>  "//",        "/*"  => "*/"],
+   [Haskell      =>  "-{2,}",     "{-"  => "-}"],
+   [Hugo         =>  "!(?!\\\\)", "!\\" => "\\!"],
+   [SLIDE        =>  "#",         "(*"  => "*)"],
+  ['Modula-2'    =>  undef,       "(*"  => "*)"],
+  ['Modula-3'    =>  undef,       "(*"  => "*)"],
+);
+
+#
+# Helper subs.
+#
+
+sub combine      {
+    local $_ = join "|", @_;
+    if (@_ > 1) {
+        s/\(\?k:/(?:/g;
+        $_ = "(?k:$_)";
+    }
+    $_
+}
+
+sub to_eol  ($)  {"(?k:(?k:$_[0])(?k:[^\\n]*)(?k:\\n))"}
+sub id      ($)  {"(?k:(?k:$_[0])(?k:[^$_[0]]*)(?k:$_[0]))"}  # One char only!
+sub from_to      {
+    my ($begin, $end) = @_;
+
+    my $qb  = quotemeta $begin;
+    my $qe  = quotemeta $end;
+    my $fe  = quotemeta substr $end   => 0, 1;
+    my $te  = quotemeta substr $end   => 1;
+
+    "(?k:(?k:$qb)(?k:(?:[^$fe]+|$fe(?!$te))*)(?k:$qe))";
+}
+
+
+my $count = 0;
+sub nested {
+    my ($begin, $end) = @_;
+
+    $count ++;
+    my $r = '(??{$Regexp::Common::comment ['. $count . ']})';
+
+    my $qb  = quotemeta $begin;
+    my $qe  = quotemeta $end;
+    my $fb  = quotemeta substr $begin => 0, 1;
+    my $fe  = quotemeta substr $end   => 0, 1;
+
+    my $tb  = quotemeta substr $begin => 1;
+    my $te  = quotemeta substr $end   => 1;
+
+    use re 'eval';
+
+    my $re;
+    if ($fb eq $fe) {
+        $re = qr /(?:$qb(?:(?>[^$fb]+)|$fb(?!$tb)(?!$te)|$r)*$qe)/;
+    }
+    else {
+        local $"      =  "|";
+        my   @clauses =  "(?>[^$fb$fe]+)";
+        push @clauses => "$fb(?!$tb)" if length $tb;
+        push @clauses => "$fe(?!$te)" if length $te;
+        push @clauses =>  $r;
+        $re           =   qr /(?:$qb(?:@clauses)*$qe)/;
+    }
+
+    $Regexp::Common::comment [$count] = qr/$re/;
+}
+
+#
+# Process data.
+#
+
+foreach my $info (@plain_or_nested) {
+    my ($language, $mark, $begin, $end) = @$info;
+    pattern name    => [comment => $language],
+            create  =>
+                sub {my $re     = nested $begin => $end;
+                     my $prefix = defined $mark ? $mark . "[^\n]*\n|" : "";
+                     exists $_ [1] -> {-keep} ? qr /($prefix$re)/
+                                              : qr  /$prefix$re/
+                },
+            version => 5.006,
+            ;
+}
+
+
+foreach my $group (@generic) {
+    my $pattern = combine +(map {to_eol   $_} @{$group -> {to_eol}}),
+                           (map {from_to @$_} @{$group -> {from_to}}),
+                           (map {id       $_} @{$group -> {id}}),
+                  ;
+    foreach my $language  (@{$group -> {languages}}) {
+        pattern name    => [comment => ref $language ? @$language : $language],
+                create  => $pattern,
+                ;
+    }
+}
+
+
+
+#
+# Other languages.
+#
+
+# http://www.pascal-central.com/docs/iso10206.txt
+pattern name    => [qw /comment Pascal/],
+        create  => '(?k:' . '(?k:[{]|[(][*])'
+                          . '(?k:[^}*]*(?:[*](?![)])[^}*]*)*)'
+                          . '(?k:[}]|[*][)])'
+                          . ')'
+        ;
+
+# http://www.templetons.com/brad/alice/language/
+pattern name    =>  [qw /comment Pascal Alice/],
+        create  =>  '(?k:(?k:[{])(?k:[^}\n]*)(?k:[}]))'
+        ;
+
+
+# http://westein.arb-phys.uni-dortmund.de/~wb/a68s.txt
+pattern name    => [qw (comment), 'Algol 68'],
+        create  => q {(?k:(?:#[^#]*#)|}                           .
+                   q {(?:\bco\b(?:[^c]+|\Bc|\bc(?!o\b))*\bco\b)|} .
+                   q {(?:\bcomment\b(?:[^c]+|\Bc|\bc(?!omment\b))*\bcomment\b))}
+        ;
+
+
+# See rules 91 and 92 of ISO 8879 (SGML).
+# Charles F. Goldfarb: "The SGML Handbook".
+# Oxford: Oxford University Press. 1990. ISBN 0-19-853737-9.
+# Ch. 10.3, pp 390.
+pattern name    => [qw (comment HTML)],
+        create  => q {(?k:(?k:<!)(?k:(?:--(?k:[^-]*(?:-[^-]+)*)--\s*)*)(?k:>))},
+        ;
+
+
+pattern name    => [qw /comment SQL MySQL/],
+        create  => q {(?k:(?:#|-- )[^\n]*\n|} .
+                   q {/\*(?:(?>[^*;"']+)|"[^"]*"|'[^']*'|\*(?!/))*(?:;|\*/))},
+        ;
+
+# Anything that isn't <>[]+-.,
+# http://home.wxs.nl/~faase009/Ha_BF.html
+pattern name    => [qw /comment Brainfuck/],
+        create  => '(?k:[^<>\[\]+\-.,]+)'
+        ;
+
+# Squeak is a variant of Smalltalk-80.
+# http://www.squeak.
+# http://mucow.com/squeak-qref.html
+pattern name    => [qw /comment Squeak/],
+        create  => '(?k:(?k:")(?k:[^"]*(?:""[^"]*)*)(?k:"))'
+        ;
+
+#
+# Scores of less than 5 or above 17....
+# http://www.cliff.biffle.org/esoterica/beatnik.html
+@Regexp::Common::comment::scores = (1,  3,  3,  2,  1,  4,  2,  4,  1,  8,
+                                    5,  1,  3,  1,  1,  3, 10,  1,  1,  1,
+                                    1,  4,  4,  8,  4, 10);
+{
+my ($s, $x);
+pattern name    =>  [qw /comment Beatnik/],
+        create  =>  sub {
+            use re 'eval';
+            my $re = qr {\b([A-Za-z]+)\b
+                         (?(?{($s, $x) = (0, lc $^N);
+                              $s += $Regexp::Common::comment::scores
+                                    [ord (chop $x) - ord ('a')] while length $x;
+                              $s  >= 5 && $s < 18})XXX|)}x;
+            $re;
+        },
+        version  => 5.008,
+        ;
+}
+
+
+# http://www.cray.com/craydoc/manuals/007-3692-005/html-007-3692-005/
+#  (Goto table of contents/3.3 Source Form)
+# Fortran, in fixed format. Comments start with a C, c or * in the first
+# column, or a ! anywhere, but the sixth column. Then end with a newline.
+pattern name    =>  [qw /comment Fortran fixed/],
+        create  =>  '(?k:(?k:(?:^[Cc*]|(?<!^.....)!))(?k:[^\n]*)(?k:\n))'
+        ;
+
+
+# http://www.csis.ul.ie/cobol/Course/COBOLIntro.htm
+# Traditionally, comments in COBOL were indicated with an asterisk in
+# the seventh column. Modern compilers may be more lenient.
+pattern name    =>  [qw /comment COBOL/],
+        create  =>  '(?<=^......)(?k:(?k:[*])(?k:[^\n]*)(?k:\n))',
+        version =>  '5.008',
+        ;
+
+1;
+EOC
+# 2}}}
+$Regexp_Common_Contents{'Common/balanced'} = <<'EOB';   # {{{2
+package Regexp::Common::balanced; {
+
+use Regexp::Common qw /pattern clean no_defaults/;
+
+use strict;
+use warnings;
+
+use vars qw /$VERSION/;
+$VERSION = '2013030901';
+
+my %closer = ( '{'=>'}', '('=>')', '['=>']', '<'=>'>' );
+my %cache;
+
+sub nested {
+    my ($start, $finish) = @_;
+
+    return $cache {$start} {$finish} if exists $cache {$start} {$finish};
+
+    my @starts   = map {s/\\(.)/$1/g; $_} grep {length}
+                        $start  =~ /([^|\\]+|\\.)+/gs;
+    my @finishes = map {s/\\(.)/$1/g; $_} grep {length}
+                        $finish =~ /([^|\\]+|\\.)+/gs;
+
+    push @finishes => ($finishes [-1]) x (@starts - @finishes);
+
+    my @re;
+    local $" = "|";
+    foreach my $begin (@starts) {
+        my $end = shift @finishes;
+
+        my $qb  = quotemeta $begin;
+        my $qe  = quotemeta $end;
+        my $fb  = quotemeta substr $begin => 0, 1;
+        my $fe  = quotemeta substr $end   => 0, 1;
+
+        my $tb  = quotemeta substr $begin => 1;
+        my $te  = quotemeta substr $end   => 1;
+
+        my $add;
+        if ($fb eq $fe) {
+            push @re =>
+                   qq /(?:$qb(?:(?>[^$fb]+)|$fb(?!$tb)(?!$te)|(?-1))*$qe)/;
+        }
+        else {
+            my   @clauses =  "(?>[^$fb$fe]+)";
+            push @clauses => "$fb(?!$tb)" if length $tb;
+            push @clauses => "$fe(?!$te)" if length $te;
+            push @clauses => "(?-1)";
+            push @re      =>  qq /(?:$qb(?:@clauses)*$qe)/;
+        }
+    }
+
+    $cache {$start} {$finish} = qr /(@re)/;
+}
+
+
+pattern name    => [qw /balanced -parens=() -begin= -end=/],
+        create  => sub {
+            my $flag = $_[1];
+            unless (defined $flag -> {-begin} && length $flag -> {-begin} &&
+                    defined $flag -> {-end}   && length $flag -> {-end}) {
+                my @open  = grep {index ($flag->{-parens}, $_) >= 0}
+                             ('[','(','{','<');
+                my @close = map {$closer {$_}} @open;
+                $flag -> {-begin} = join "|" => @open;
+                $flag -> {-end}   = join "|" => @close;
+            }
+            return nested @$flag {qw /-begin -end/};
+        },
+        version => 5.010,
+        ;
+
+}
+
+1;
+# This software is Copyright (c) 2001 - 2013, Damian Conway and Abigail.
+#
+# This module is free software, and maybe used under any of the following
+# licenses:
+#
+#  1) The Perl Artistic License.     See the file COPYRIGHT.AL.
+#  2) The Perl Artistic License 2.0. See the file COPYRIGHT.AL2.
+#  3) The BSD Licence.               See the file COPYRIGHT.BSD.
+#  4) The MIT Licence.               See the file COPYRIGHT.MIT.
+EOB
+# 2}}}
+$Regexp_Common_Contents{'Common/delimited'} = <<'EOD';   # {{{3
+package Regexp::Common::delimited;
+
+use Regexp::Common qw /pattern clean no_defaults/;
+
+use strict;
+use warnings;
+
+use vars qw /$VERSION/;
+$VERSION = '2010010201';
+
+sub gen_delimited {
+
+    my ($dels, $escs) = @_;
+    # return '(?:\S*)' unless $dels =~ /\S/;
+    if (length $escs) {
+        $escs .= substr ($escs, -1) x (length ($dels) - length ($escs));
+    }
+    my @pat = ();
+    my $i;
+    for ($i=0; $i < length $dels; $i++) {
+        my $del = quotemeta substr ($dels, $i, 1);
+        my $esc = length($escs) ? quotemeta substr ($escs, $i, 1) : "";
+        if ($del eq $esc) {
+            push @pat,
+                 "(?k:$del)(?k:[^$del]*(?:(?:$del$del)[^$del]*)*)(?k:$del)";
+        }
+        elsif (length $esc) {
+            push @pat,
+                 "(?k:$del)(?k:[^$esc$del]*(?:$esc.[^$esc$del]*)*)(?k:$del)";
+        }
+        else {
+            push @pat, "(?k:$del)(?k:[^$del]*)(?k:$del)";
+        }
+    }
+    my $pat = join '|', @pat;
+    return "(?k:$pat)";
+}
+
+sub _croak {
+    require Carp;
+    goto &Carp::croak;
+}
+
+pattern name   => [qw( delimited -delim= -esc=\\ )],
+        create => sub {my $flags = $_[1];
+                       _croak 'Must specify delimiter in $RE{delimited}'
+                             unless length $flags->{-delim};
+                       return gen_delimited (@{$flags}{-delim, -esc});
+                  },
+        ;
+
+pattern name   => [qw( quoted -esc=\\ )],
+        create => sub {my $flags = $_[1];
+                       return gen_delimited (q{"'`}, $flags -> {-esc});
+                  },
+        ;
+
+
+1;
+# This software is Copyright (c) 2001 - 2009, Damian Conway and Abigail.
+#
+# This module is free software, and maybe used under any of the following
+# licenses:
+#
+#  1) The Perl Artistic License.     See the file COPYRIGHT.AL.
+#  2) The Perl Artistic License 2.0. See the file COPYRIGHT.AL2.
+#  3) The BSD Licence.               See the file COPYRIGHT.BSD.
+#  4) The MIT Licence.               See the file COPYRIGHT.MIT.
+EOD
+# 2}}}
+    my $problems        = 0;
+    $HAVE_Rexexp_Common = 0;
+    my $dir             = "";
+    if ($opt_sdir) {
+        ++$TEMP_OFF;
+        $dir = "$opt_sdir/$TEMP_OFF";
+        File::Path::rmtree($dir) if     is_dir($dir);
+        File::Path::mkpath($dir) unless is_dir($dir);
+    } else {
+        # let File::Temp create a suitable temporary directory
+        $dir = tempdir( CLEANUP => 1 );  # 1 = delete on exit
+        $TEMP_INST{ $dir } = "Regexp::Common";
+    }
+    print "Using temp dir [$dir] to install Regexp::Common\n" if $opt_v;
+    my $Regexp_dir        = "$dir/Regexp";
+    my $Regexp_Common_dir = "$dir/Regexp/Common";
+    mkdir $Regexp_dir       ;
+    mkdir $Regexp_Common_dir;
+
+    foreach my $module_file (keys %Regexp_Common_Contents) {
+        my $OUT = new IO::File "$dir/Regexp/${module_file}.pm", "w";
+        if (defined $OUT) {
+            print $OUT $Regexp_Common_Contents{$module_file};
+            $OUT->close;
+        } else {
+            warn "Failed to install Regexp::${module_file}.pm\n";
+            $problems = 1;
+        }
+    }
+
+    push @INC, $dir;
+    eval "use Regexp::Common qw /comment RE_comment_HTML balanced/";
+    $HAVE_Rexexp_Common = 1 unless $problems;
+} # 1}}}
+sub Install_Algorithm_Diff {                 # {{{1
+    # Installs Tye McQueen's Algorithm::Diff module, v1.1902, into a
+    # temporary directory for the duration of this run.
+
+my $Algorithm_Diff_Contents = <<'EOAlgDiff'; # {{{2
+package Algorithm::Diff;
+# Skip to first "=head" line for documentation.
+use strict;
+
+use integer;    # see below in _replaceNextLargerWith() for mod to make
+                # if you don't use this
+use vars qw( $VERSION @EXPORT_OK );
+$VERSION = 1.19_02;
+#          ^ ^^ ^^-- Incremented at will
+#          | \+----- Incremented for non-trivial changes to features
+#          \-------- Incremented for fundamental changes
+require Exporter;
+*import    = \&Exporter::import;
+@EXPORT_OK = qw(
+    prepare LCS LCSidx LCS_length
+    diff sdiff compact_diff
+    traverse_sequences traverse_balanced
+);
+
+# McIlroy-Hunt diff algorithm
+# Adapted from the Smalltalk code of Mario I. Wolczko, <mario@wolczko.com>
+# by Ned Konz, perl@bike-nomad.com
+# Updates by Tye McQueen, http://perlmonks.org/?node=tye
+
+# Create a hash that maps each element of $aCollection to the set of
+# positions it occupies in $aCollection, restricted to the elements
+# within the range of indexes specified by $start and $end.
+# The fourth parameter is a subroutine reference that will be called to
+# generate a string to use as a key.
+# Additional parameters, if any, will be passed to this subroutine.
+#
+# my $hashRef = _withPositionsOfInInterval( \@array, $start, $end, $keyGen );
+
+sub _withPositionsOfInInterval
+{
+    my $aCollection = shift;    # array ref
+    my $start       = shift;
+    my $end         = shift;
+    my $keyGen      = shift;
+    my %d;
+    my $index;
+    for ( $index = $start ; $index <= $end ; $index++ )
+    {
+        my $element = $aCollection->[$index];
+        my $key = &$keyGen( $element, @_ );
+        if ( exists( $d{$key} ) )
+        {
+            unshift ( @{ $d{$key} }, $index );
+        }
+        else
+        {
+            $d{$key} = [$index];
+        }
+    }
+    return wantarray ? %d : \%d;
+}
+
+# Find the place at which aValue would normally be inserted into the
+# array. If that place is already occupied by aValue, do nothing, and
+# return undef. If the place does not exist (i.e., it is off the end of
+# the array), add it to the end, otherwise replace the element at that
+# point with aValue.  It is assumed that the array's values are numeric.
+# This is where the bulk (75%) of the time is spent in this module, so
+# try to make it fast!
+
+sub _replaceNextLargerWith
+{
+    my ( $array, $aValue, $high ) = @_;
+    $high ||= $#$array;
+
+    # off the end?
+    if ( $high == -1 || $aValue > $array->[-1] )
+    {
+        push ( @$array, $aValue );
+        return $high + 1;
+    }
+
+    # binary search for insertion point...
+    my $low = 0;
+    my $index;
+    my $found;
+    while ( $low <= $high )
+    {
+        $index = ( $high + $low ) / 2;
+
+        # $index = int(( $high + $low ) / 2);  # without 'use integer'
+        $found = $array->[$index];
+
+        if ( $aValue == $found )
+        {
+            return undef;
+        }
+        elsif ( $aValue > $found )
+        {
+            $low = $index + 1;
+        }
+        else
+        {
+            $high = $index - 1;
+        }
+    }
+
+    # now insertion point is in $low.
+    $array->[$low] = $aValue;    # overwrite next larger
+    return $low;
+}
+
+# This method computes the longest common subsequence in $a and $b.
+
+# Result is array or ref, whose contents is such that
+#   $a->[ $i ] == $b->[ $result[ $i ] ]
+# foreach $i in ( 0 .. $#result ) if $result[ $i ] is defined.
+
+# An additional argument may be passed; this is a hash or key generating
+# function that should return a string that uniquely identifies the given
+# element.  It should be the case that if the key is the same, the elements
+# will compare the same. If this parameter is undef or missing, the key
+# will be the element as a string.
+
+# By default, comparisons will use "eq" and elements will be turned into keys
+# using the default stringizing operator '""'.
+
+# Additional parameters, if any, will be passed to the key generation
+# routine.
+
+sub _longestCommonSubsequence
+{
+    my $a        = shift;    # array ref or hash ref
+    my $b        = shift;    # array ref or hash ref
+    my $counting = shift;    # scalar
+    my $keyGen   = shift;    # code ref
+    my $compare;             # code ref
+
+    if ( ref($a) eq 'HASH' )
+    {                        # prepared hash must be in $b
+        my $tmp = $b;
+        $b = $a;
+        $a = $tmp;
+    }
+
+    # Check for bogus (non-ref) argument values
+    if ( !ref($a) || !ref($b) )
+    {
+        my @callerInfo = caller(1);
+        die 'error: must pass array or hash references to ' . $callerInfo[3];
+    }
+
+    # set up code refs
+    # Note that these are optimized.
+    if ( !defined($keyGen) )    # optimize for strings
+    {
+        $keyGen = sub { $_[0] };
+        $compare = sub { my ( $a, $b ) = @_; $a eq $b };
+    }
+    else
+    {
+        $compare = sub {
+            my $a = shift;
+            my $b = shift;
+            &$keyGen( $a, @_ ) eq &$keyGen( $b, @_ );
+        };
+    }
+
+    my ( $aStart, $aFinish, $matchVector ) = ( 0, $#$a, [] );
+    my ( $prunedCount, $bMatches ) = ( 0, {} );
+
+    if ( ref($b) eq 'HASH' )    # was $bMatches prepared for us?
+    {
+        $bMatches = $b;
+    }
+    else
+    {
+        my ( $bStart, $bFinish ) = ( 0, $#$b );
+
+        # First we prune off any common elements at the beginning
+        while ( $aStart <= $aFinish
+            and $bStart <= $bFinish
+            and &$compare( $a->[$aStart], $b->[$bStart], @_ ) )
+        {
+            $matchVector->[ $aStart++ ] = $bStart++;
+            $prunedCount++;
+        }
+
+        # now the end
+        while ( $aStart <= $aFinish
+            and $bStart <= $bFinish
+            and &$compare( $a->[$aFinish], $b->[$bFinish], @_ ) )
+        {
+            $matchVector->[ $aFinish-- ] = $bFinish--;
+            $prunedCount++;
+        }
+
+        # Now compute the equivalence classes of positions of elements
+        $bMatches =
+          _withPositionsOfInInterval( $b, $bStart, $bFinish, $keyGen, @_ );
+    }
+    my $thresh = [];
+    my $links  = [];
+
+    my ( $i, $ai, $j, $k );
+    for ( $i = $aStart ; $i <= $aFinish ; $i++ )
+    {
+        $ai = &$keyGen( $a->[$i], @_ );
+        if ( exists( $bMatches->{$ai} ) )
+        {
+            $k = 0;
+            for $j ( @{ $bMatches->{$ai} } )
+            {
+
+                # optimization: most of the time this will be true
+                if ( $k and $thresh->[$k] > $j and $thresh->[ $k - 1 ] < $j )
+                {
+                    $thresh->[$k] = $j;
+                }
+                else
+                {
+                    $k = _replaceNextLargerWith( $thresh, $j, $k );
+                }
+
+                # oddly, it's faster to always test this (CPU cache?).
+                if ( defined($k) )
+                {
+                    $links->[$k] =
+                      [ ( $k ? $links->[ $k - 1 ] : undef ), $i, $j ];
+                }
+            }
+        }
+    }
+
+    if (@$thresh)
+    {
+        return $prunedCount + @$thresh if $counting;
+        for ( my $link = $links->[$#$thresh] ; $link ; $link = $link->[0] )
+        {
+            $matchVector->[ $link->[1] ] = $link->[2];
+        }
+    }
+    elsif ($counting)
+    {
+        return $prunedCount;
+    }
+
+    return wantarray ? @$matchVector : $matchVector;
+}
+
+sub traverse_sequences
+{
+    my $a                 = shift;          # array ref
+    my $b                 = shift;          # array ref
+    my $callbacks         = shift || {};
+    my $keyGen            = shift;
+    my $matchCallback     = $callbacks->{'MATCH'} || sub { };
+    my $discardACallback  = $callbacks->{'DISCARD_A'} || sub { };
+    my $finishedACallback = $callbacks->{'A_FINISHED'};
+    my $discardBCallback  = $callbacks->{'DISCARD_B'} || sub { };
+    my $finishedBCallback = $callbacks->{'B_FINISHED'};
+    my $matchVector = _longestCommonSubsequence( $a, $b, 0, $keyGen, @_ );
+
+    # Process all the lines in @$matchVector
+    my $lastA = $#$a;
+    my $lastB = $#$b;
+    my $bi    = 0;
+    my $ai;
+
+    for ( $ai = 0 ; $ai <= $#$matchVector ; $ai++ )
+    {
+        my $bLine = $matchVector->[$ai];
+        if ( defined($bLine) )    # matched
+        {
+            &$discardBCallback( $ai, $bi++, @_ ) while $bi < $bLine;
+            &$matchCallback( $ai,    $bi++, @_ );
+        }
+        else
+        {
+            &$discardACallback( $ai, $bi, @_ );
+        }
+    }
+
+    # The last entry (if any) processed was a match.
+    # $ai and $bi point just past the last matching lines in their sequences.
+
+    while ( $ai <= $lastA or $bi <= $lastB )
+    {
+
+        # last A?
+        if ( $ai == $lastA + 1 and $bi <= $lastB )
+        {
+            if ( defined($finishedACallback) )
+            {
+                &$finishedACallback( $lastA, @_ );
+                $finishedACallback = undef;
+            }
+            else
+            {
+                &$discardBCallback( $ai, $bi++, @_ ) while $bi <= $lastB;
+            }
+        }
+
+        # last B?
+        if ( $bi == $lastB + 1 and $ai <= $lastA )
+        {
+            if ( defined($finishedBCallback) )
+            {
+                &$finishedBCallback( $lastB, @_ );
+                $finishedBCallback = undef;
+            }
+            else
+            {
+                &$discardACallback( $ai++, $bi, @_ ) while $ai <= $lastA;
+            }
+        }
+
+        &$discardACallback( $ai++, $bi, @_ ) if $ai <= $lastA;
+        &$discardBCallback( $ai, $bi++, @_ ) if $bi <= $lastB;
+    }
+
+    return 1;
+}
+
+sub traverse_balanced
+{
+    my $a                 = shift;              # array ref
+    my $b                 = shift;              # array ref
+    my $callbacks         = shift || {};
+    my $keyGen            = shift;
+    my $matchCallback     = $callbacks->{'MATCH'} || sub { };
+    my $discardACallback  = $callbacks->{'DISCARD_A'} || sub { };
+    my $discardBCallback  = $callbacks->{'DISCARD_B'} || sub { };
+    my $changeCallback    = $callbacks->{'CHANGE'};
+    my $matchVector = _longestCommonSubsequence( $a, $b, 0, $keyGen, @_ );
+
+    # Process all the lines in match vector
+    my $lastA = $#$a;
+    my $lastB = $#$b;
+    my $bi    = 0;
+    my $ai    = 0;
+    my $ma    = -1;
+    my $mb;
+
+    while (1)
+    {
+
+        # Find next match indices $ma and $mb
+        do {
+            $ma++;
+        } while(
+                $ma <= $#$matchVector
+            &&  !defined $matchVector->[$ma]
+        );
+
+        last if $ma > $#$matchVector;    # end of matchVector?
+        $mb = $matchVector->[$ma];
+
+        # Proceed with discard a/b or change events until
+        # next match
+        while ( $ai < $ma || $bi < $mb )
+        {
+
+            if ( $ai < $ma && $bi < $mb )
+            {
+
+                # Change
+                if ( defined $changeCallback )
+                {
+                    &$changeCallback( $ai++, $bi++, @_ );
+                }
+                else
+                {
+                    &$discardACallback( $ai++, $bi, @_ );
+                    &$discardBCallback( $ai, $bi++, @_ );
+                }
+            }
+            elsif ( $ai < $ma )
+            {
+                &$discardACallback( $ai++, $bi, @_ );
+            }
+            else
+            {
+
+                # $bi < $mb
+                &$discardBCallback( $ai, $bi++, @_ );
+            }
+        }
+
+        # Match
+        &$matchCallback( $ai++, $bi++, @_ );
+    }
+
+    while ( $ai <= $lastA || $bi <= $lastB )
+    {
+        if ( $ai <= $lastA && $bi <= $lastB )
+        {
+
+            # Change
+            if ( defined $changeCallback )
+            {
+                &$changeCallback( $ai++, $bi++, @_ );
+            }
+            else
+            {
+                &$discardACallback( $ai++, $bi, @_ );
+                &$discardBCallback( $ai, $bi++, @_ );
+            }
+        }
+        elsif ( $ai <= $lastA )
+        {
+            &$discardACallback( $ai++, $bi, @_ );
+        }
+        else
+        {
+
+            # $bi <= $lastB
+            &$discardBCallback( $ai, $bi++, @_ );
+        }
+    }
+
+    return 1;
+}
+
+sub prepare
+{
+    my $a       = shift;    # array ref
+    my $keyGen  = shift;    # code ref
+
+    # set up code ref
+    $keyGen = sub { $_[0] } unless defined($keyGen);
+
+    return scalar _withPositionsOfInInterval( $a, 0, $#$a, $keyGen, @_ );
+}
+
+sub LCS
+{
+    my $a = shift;                  # array ref
+    my $b = shift;                  # array ref or hash ref
+    my $matchVector = _longestCommonSubsequence( $a, $b, 0, @_ );
+    my @retval;
+    my $i;
+    for ( $i = 0 ; $i <= $#$matchVector ; $i++ )
+    {
+        if ( defined( $matchVector->[$i] ) )
+        {
+            push ( @retval, $a->[$i] );
+        }
+    }
+    return wantarray ? @retval : \@retval;
+}
+
+sub LCS_length
+{
+    my $a = shift;                          # array ref
+    my $b = shift;                          # array ref or hash ref
+    return _longestCommonSubsequence( $a, $b, 1, @_ );
+}
+
+sub LCSidx
+{
+    my $a= shift @_;
+    my $b= shift @_;
+    my $match= _longestCommonSubsequence( $a, $b, 0, @_ );
+    my @am= grep defined $match->[$_], 0..$#$match;
+    my @bm= @{$match}[@am];
+    return \@am, \@bm;
+}
+
+sub compact_diff
+{
+    my $a= shift @_;
+    my $b= shift @_;
+    my( $am, $bm )= LCSidx( $a, $b, @_ );
+    my @cdiff;
+    my( $ai, $bi )= ( 0, 0 );
+    push @cdiff, $ai, $bi;
+    while( 1 ) {
+        while(  @$am  &&  $ai == $am->[0]  &&  $bi == $bm->[0]  ) {
+            shift @$am;
+            shift @$bm;
+            ++$ai, ++$bi;
+        }
+        push @cdiff, $ai, $bi;
+        last   if  ! @$am;
+        $ai = $am->[0];
+        $bi = $bm->[0];
+        push @cdiff, $ai, $bi;
+    }
+    push @cdiff, 0+@$a, 0+@$b
+        if  $ai < @$a || $bi < @$b;
+    return wantarray ? @cdiff : \@cdiff;
+}
+
+sub diff
+{
+    my $a      = shift;    # array ref
+    my $b      = shift;    # array ref
+    my $retval = [];
+    my $hunk   = [];
+    my $discard = sub {
+        push @$hunk, [ '-', $_[0], $a->[ $_[0] ] ];
+    };
+    my $add = sub {
+        push @$hunk, [ '+', $_[1], $b->[ $_[1] ] ];
+    };
+    my $match = sub {
+        push @$retval, $hunk
+            if 0 < @$hunk;
+        $hunk = []
+    };
+    traverse_sequences( $a, $b,
+        { MATCH => $match, DISCARD_A => $discard, DISCARD_B => $add }, @_ );
+    &$match();
+    return wantarray ? @$retval : $retval;
+}
+
+sub sdiff
+{
+    my $a      = shift;    # array ref
+    my $b      = shift;    # array ref
+    my $retval = [];
+    my $discard = sub { push ( @$retval, [ '-', $a->[ $_[0] ], "" ] ) };
+    my $add = sub { push ( @$retval, [ '+', "", $b->[ $_[1] ] ] ) };
+    my $change = sub {
+        push ( @$retval, [ 'c', $a->[ $_[0] ], $b->[ $_[1] ] ] );
+    };
+    my $match = sub {
+        push ( @$retval, [ 'u', $a->[ $_[0] ], $b->[ $_[1] ] ] );
+    };
+    traverse_balanced(
+        $a,
+        $b,
+        {
+            MATCH     => $match,
+            DISCARD_A => $discard,
+            DISCARD_B => $add,
+            CHANGE    => $change,
+        },
+        @_
+    );
+    return wantarray ? @$retval : $retval;
+}
+
+########################################
+my $Root= __PACKAGE__;
+package Algorithm::Diff::_impl;
+use strict;
+
+sub _Idx()  { 0 } # $me->[_Idx]: Ref to array of hunk indices
+            # 1   # $me->[1]: Ref to first sequence
+            # 2   # $me->[2]: Ref to second sequence
+sub _End()  { 3 } # $me->[_End]: Diff between forward and reverse pos
+sub _Same() { 4 } # $me->[_Same]: 1 if pos 1 contains unchanged items
+sub _Base() { 5 } # $me->[_Base]: Added to range's min and max
+sub _Pos()  { 6 } # $me->[_Pos]: Which hunk is currently selected
+sub _Off()  { 7 } # $me->[_Off]: Offset into _Idx for current position
+sub _Min() { -2 } # Added to _Off to get min instead of max+1
+
+sub Die
+{
+    require Carp;
+    Carp::confess( @_ );
+}
+
+sub _ChkPos
+{
+    my( $me )= @_;
+    return   if  $me->[_Pos];
+    my $meth= ( caller(1) )[3];
+    Die( "Called $meth on 'reset' object" );
+}
+
+sub _ChkSeq
+{
+    my( $me, $seq )= @_;
+    return $seq + $me->[_Off]
+        if  1 == $seq  ||  2 == $seq;
+    my $meth= ( caller(1) )[3];
+    Die( "$meth: Invalid sequence number ($seq); must be 1 or 2" );
+}
+
+sub getObjPkg
+{
+    my( $us )= @_;
+    return ref $us   if  ref $us;
+    return $us . "::_obj";
+}
+
+sub new
+{
+    my( $us, $seq1, $seq2, $opts ) = @_;
+    my @args;
+    for( $opts->{keyGen} ) {
+        push @args, $_   if  $_;
+    }
+    for( $opts->{keyGenArgs} ) {
+        push @args, @$_   if  $_;
+    }
+    my $cdif= Algorithm::Diff::compact_diff( $seq1, $seq2, @args );
+    my $same= 1;
+    if(  0 == $cdif->[2]  &&  0 == $cdif->[3]  ) {
+        $same= 0;
+        splice @$cdif, 0, 2;
+    }
+    my @obj= ( $cdif, $seq1, $seq2 );
+    $obj[_End] = (1+@$cdif)/2;
+    $obj[_Same] = $same;
+    $obj[_Base] = 0;
+    my $me = bless \@obj, $us->getObjPkg();
+    $me->Reset( 0 );
+    return $me;
+}
+
+sub Reset
+{
+    my( $me, $pos )= @_;
+    $pos= int( $pos || 0 );
+    $pos += $me->[_End]
+        if  $pos < 0;
+    $pos= 0
+        if  $pos < 0  ||  $me->[_End] <= $pos;
+    $me->[_Pos]= $pos || !1;
+    $me->[_Off]= 2*$pos - 1;
+    return $me;
+}
+
+sub Base
+{
+    my( $me, $base )= @_;
+    my $oldBase= $me->[_Base];
+    $me->[_Base]= 0+$base   if  defined $base;
+    return $oldBase;
+}
+
+sub Copy
+{
+    my( $me, $pos, $base )= @_;
+    my @obj= @$me;
+    my $you= bless \@obj, ref($me);
+    $you->Reset( $pos )   if  defined $pos;
+    $you->Base( $base );
+    return $you;
+}
+
+sub Next {
+    my( $me, $steps )= @_;
+    $steps= 1   if  ! defined $steps;
+    if( $steps ) {
+        my $pos= $me->[_Pos];
+        my $new= $pos + $steps;
+        $new= 0   if  $pos  &&  $new < 0;
+        $me->Reset( $new )
+    }
+    return $me->[_Pos];
+}
+
+sub Prev {
+    my( $me, $steps )= @_;
+    $steps= 1   if  ! defined $steps;
+    my $pos= $me->Next(-$steps);
+    $pos -= $me->[_End]   if  $pos;
+    return $pos;
+}
+
+sub Diff {
+    my( $me )= @_;
+    $me->_ChkPos();
+    return 0   if  $me->[_Same] == ( 1 & $me->[_Pos] );
+    my $ret= 0;
+    my $off= $me->[_Off];
+    for my $seq ( 1, 2 ) {
+        $ret |= $seq
+            if  $me->[_Idx][ $off + $seq + _Min ]
+            <   $me->[_Idx][ $off + $seq ];
+    }
+    return $ret;
+}
+
+sub Min {
+    my( $me, $seq, $base )= @_;
+    $me->_ChkPos();
+    my $off= $me->_ChkSeq($seq);
+    $base= $me->[_Base] if !defined $base;
+    return $base + $me->[_Idx][ $off + _Min ];
+}
+
+sub Max {
+    my( $me, $seq, $base )= @_;
+    $me->_ChkPos();
+    my $off= $me->_ChkSeq($seq);
+    $base= $me->[_Base] if !defined $base;
+    return $base + $me->[_Idx][ $off ] -1;
+}
+
+sub Range {
+    my( $me, $seq, $base )= @_;
+    $me->_ChkPos();
+    my $off = $me->_ChkSeq($seq);
+    if( !wantarray ) {
+        return  $me->[_Idx][ $off ]
+            -   $me->[_Idx][ $off + _Min ];
+    }
+    $base= $me->[_Base] if !defined $base;
+    return  ( $base + $me->[_Idx][ $off + _Min ] )
+        ..  ( $base + $me->[_Idx][ $off ] - 1 );
+}
+
+sub Items {
+    my( $me, $seq )= @_;
+    $me->_ChkPos();
+    my $off = $me->_ChkSeq($seq);
+    if( !wantarray ) {
+        return  $me->[_Idx][ $off ]
+            -   $me->[_Idx][ $off + _Min ];
+    }
+    return
+        @{$me->[$seq]}[
+                $me->[_Idx][ $off + _Min ]
+            ..  ( $me->[_Idx][ $off ] - 1 )
+        ];
+}
+
+sub Same {
+    my( $me )= @_;
+    $me->_ChkPos();
+    return wantarray ? () : 0
+        if  $me->[_Same] != ( 1 & $me->[_Pos] );
+    return $me->Items(1);
+}
+
+my %getName;
+BEGIN {
+    %getName= (
+        same => \&Same,
+        diff => \&Diff,
+        base => \&Base,
+        min  => \&Min,
+        max  => \&Max,
+        range=> \&Range,
+        items=> \&Items, # same thing
+    );
+}
+
+sub Get
+{
+    my $me= shift @_;
+    $me->_ChkPos();
+    my @value;
+    for my $arg (  @_  ) {
+        for my $word (  split ' ', $arg  ) {
+            my $meth;
+            if(     $word !~ /^(-?\d+)?([a-zA-Z]+)([12])?$/
+                ||  not  $meth= $getName{ lc $2 }
+            ) {
+                Die( $Root, ", Get: Invalid request ($word)" );
+            }
+            my( $base, $name, $seq )= ( $1, $2, $3 );
+            push @value, scalar(
+                4 == length($name)
+                    ? $meth->( $me )
+                    : $meth->( $me, $seq, $base )
+            );
+        }
+    }
+    if(  wantarray  ) {
+        return @value;
+    } elsif(  1 == @value  ) {
+        return $value[0];
+    }
+    Die( 0+@value, " values requested from ",
+        $Root, "'s Get in scalar context" );
+}
+
+
+my $Obj= getObjPkg($Root);
+no strict 'refs';
+
+for my $meth (  qw( new getObjPkg )  ) {
+    *{$Root."::".$meth} = \&{$meth};
+    *{$Obj ."::".$meth} = \&{$meth};
+}
+for my $meth (  qw(
+    Next Prev Reset Copy Base Diff
+    Same Items Range Min Max Get
+    _ChkPos _ChkSeq
+)  ) {
+    *{$Obj."::".$meth} = \&{$meth};
+}
+
+1;
+# This version released by Tye McQueen (http://perlmonks.org/?node=tye).
+#
+# =head1 LICENSE
+#
+# Parts Copyright (c) 2000-2004 Ned Konz.  All rights reserved.
+# Parts by Tye McQueen.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl.
+#
+# =head1 MAILING LIST
+#
+# Mark-Jason still maintains a mailing list.  To join a low-volume mailing
+# list for announcements related to diff and Algorithm::Diff, send an
+# empty mail message to mjd-perl-diff-request@plover.com.
+# =head1 CREDITS
+#
+# Versions through 0.59 (and much of this documentation) were written by:
+#
+# Mark-Jason Dominus, mjd-perl-diff@plover.com
+#
+# This version borrows some documentation and routine names from
+# Mark-Jason's, but Diff.pm's code was completely replaced.
+#
+# This code was adapted from the Smalltalk code of Mario Wolczko
+# <mario@wolczko.com>, which is available at
+# ftp://st.cs.uiuc.edu/pub/Smalltalk/MANCHESTER/manchester/4.0/diff.st
+#
+# C<sdiff> and C<traverse_balanced> were written by Mike Schilli
+# <m@perlmeister.com>.
+#
+# The algorithm is that described in
+# I<A Fast Algorithm for Computing Longest Common Subsequences>,
+# CACM, vol.20, no.5, pp.350-353, May 1977, with a few
+# minor improvements to improve the speed.
+#
+# Much work was done by Ned Konz (perl@bike-nomad.com).
+#
+# The OO interface and some other changes are by Tye McQueen.
+#
+EOAlgDiff
+# 2}}}
+    my $problems        = 0;
+    $HAVE_Algorith_Diff = 0;
+    my $dir             = "";
+    if ($opt_sdir) {
+        ++$TEMP_OFF;
+        $dir = "$opt_sdir/$TEMP_OFF";
+        File::Path::rmtree($dir) if     is_dir($dir);
+        File::Path::mkpath($dir) unless is_dir($dir);
+    } else {
+        # let File::Temp create a suitable temporary directory
+        $dir = tempdir( CLEANUP => 1 );  # 1 = delete on exit
+        $TEMP_INST{ $dir } = "Algorithm::Diff";
+    }
+    print "Using temp dir [$dir] to install Algorithm::Diff\n" if $opt_v;
+    my $Algorithm_dir      = "$dir/Algorithm";
+    my $Algorithm_Diff_dir = "$dir/Algorithm/Diff";
+    mkdir $Algorithm_dir     ;
+    mkdir $Algorithm_Diff_dir;
+
+    my $OUT = new IO::File "$dir/Algorithm/Diff.pm", "w";
+    if (defined $OUT) {
+        print $OUT $Algorithm_Diff_Contents;
+        $OUT->close;
+    } else {
+        warn "Failed to install Algorithm/Diff.pm\n";
+        $problems = 1;
+    }
+
+    push @INC, $dir;  # between this & Regexp::Common only need to do once
+    eval "use Algorithm::Diff qw / sdiff /";
+    $HAVE_Algorith_Diff = 1 unless $problems;
+} # 1}}}
+sub pre_post_fix {                     # {{{1
+    # Return the input lines prefixed and postfixed
+    # by the given strings.
+    my ($ra_lines, $prefix, $postfix ) = @_;
+    print "-> pre_post_fix with $prefix, $postfix\n" if $opt_v > 2;
+
+    my $all_lines = $prefix . join(""  , @{$ra_lines}) . $postfix;
+
+    print "<- pre_post_fix\n" if $opt_v > 2;
+    return split("\n", $all_lines);
+} # 1}}}
+sub call_regexp_common {                     # {{{1
+    my ($ra_lines, $language ) = @_;
+    print "-> call_regexp_common for $language\n" if $opt_v > 2;
+
+    Install_Regexp_Common() unless $HAVE_Rexexp_Common;
+
+    my $all_lines = undef;
+    if ($language eq "C++") { # Regexp::Common's C++ comment regex is multi-line
+#       $all_lines = join("\n", @{$ra_lines});
+        $all_lines = "";
+        foreach (@{$ra_lines}) {
+            if (m/\\$/) {  # line ends with a continuation marker
+                $all_lines .= $_;
+            } else {
+                $all_lines .= "$_\n";
+            }
+        }
+    } else {
+        $all_lines = join(""  , @{$ra_lines});
+    }
+
+    no strict 'vars';
+    # otherwise get:
+    #  Global symbol "%RE" requires explicit package name at cloc line xx.
+    if ($all_lines =~ $RE{comment}{$language}) {
+        # Suppress "Use of uninitialized value in regexp compilation" that
+        # pops up when $1 is undefined--happens if there's a bug in the $RE
+        # This Pascal comment will trigger it:
+        #         (* This is { another } test. **)
+        # Curiously, testing for "defined $1" breaks the substitution.
+        no warnings;
+        # remove   comments
+        $all_lines =~ s/$1//g;
+    }
+    # a bogus use of %RE to avoid:
+    # Name "main::RE" used only once: possible typo at cloc line xx.
+    print scalar keys %RE if $opt_v < -20;
+    print "<- call_regexp_common\n" if $opt_v > 2;
+    return split("\n", $all_lines);
+} # 1}}}
+sub plural_form {                            # {{{1
+    # For getting the right plural form on some English nouns.
+    my $n = shift @_;
+    if ($n == 1) { return ( 1, "" ); }
+    else         { return ($n, "s"); }
+} # 1}}}
+sub matlab_or_objective_C {                  # {{{1
+    # Decide if code is MATLAB, Mathematica, Objective C, MUMPS, or Mercury
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+        $rs_language , # out
+       ) = @_;
+    print "-> matlab_or_objective_C\n" if $opt_v > 2;
+    # matlab markers:
+    #   first line starts with "function"
+    #   some lines start with "%"
+    #   high marks for lines that start with [
+    #
+    # Objective C markers:
+    #   must have at least two brace characters, { }
+    #   has /* ... */ style comments
+    #   some lines start with @
+    #   some lines start with #include
+    #
+    # MUMPS:
+    #   has ; comment markers
+    #   do not match:  \w+\s*=\s*\w
+    #   lines begin with   \s*\.?\w+\s+\w
+    #   high marks for lines that start with \s*K\s+ or \s*Kill\s+
+    #
+    # Mercury:
+    #   any line that begins with :- immediately triggers this
+    #
+    # Mathematica:
+    #   (* .. *)
+    #   BeginPackage
+
+    ${$rs_language} = "";
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        return;
+    }
+
+    my $DEBUG              = 0;
+
+    my $matlab_points      = 0;
+    my $mathematica_points = 0;
+    my $objective_C_points = 0;
+    my $mumps_points       = 0;
+    my $mercury_points     = 0;
+    my $has_braces         = 0;
+    while (<$IN>) {
+        ++$has_braces if $_ =~ m/[{}]/;
+#print "LINE $. has_braces=$has_braces\n";
+        ++$mumps_points if $. == 1 and m{^[A-Z]};
+        if      (m{^\s*/\*} or m {^\s*//}) {   #   /* or //
+            $objective_C_points += 5;
+            $matlab_points      -= 5;
+printf ".m:  /*|//  obj C=% 2d  matlab=% 2d  mathematica=% 2d  mumps=% 2d  mercury= % 2d\n", $objective_C_points, $matlab_points, $mathematica_points, $mumps_points, $mercury_points if $DEBUG;
+        } elsif (m{^:-\s+}) {      # gotta be mercury
+            $mercury_points = 1000;
+            last;
+        } elsif (m{\w+\s*=\s*\[}) {      # matrix assignment, very matlab
+            $matlab_points += 5;
+        }
+        if (m{\w+\[}) {      # function call by []
+            $mathematica_points += 2;
+printf ".m:  \\w=[   obj C=% 2d  matlab=% 2d  mumps=% 2d  mercury= % 2d\n", $objective_C_points, $matlab_points, $mathematica_points, $mumps_points, $mercury_points if $DEBUG;
+        } elsif (m{^\s*\w+\s*=\s*}) {    # definitely not MUMPS
+            --$mumps_points;
+printf ".m:  \\w=    obj C=% 2d  matlab=% 2d  mumps=% 2d  mercury= % 2d\n", $objective_C_points, $matlab_points, $mathematica_points, $mumps_points, $mercury_points if $DEBUG;
+        } elsif (m{^\s*\.?(\w)\s+(\w)} and $1 !~ /\d/ and $2 !~ /\d/) {
+            ++$mumps_points;
+printf ".m:  \\w \\w  obj C=% 2d  matlab=% 2d  mumps=% 2d  mercury= % 2d\n", $objective_C_points, $matlab_points, $mathematica_points, $mumps_points, $mercury_points if $DEBUG;
+        } elsif (m{^\s*;}) {
+            ++$mumps_points;
+printf ".m:  ;      obj C=% 2d  matlab=% 2d  mumps=% 2d  mercury= % 2d\n", $objective_C_points, $matlab_points, $mathematica_points, $mumps_points, $mercury_points if $DEBUG;
+        }
+        if (m{^\s*#(include|import)}) {
+            # Objective C without a doubt
+            $objective_C_points = 1000;
+            $matlab_points      = 0;
+printf ".m: #includ obj C=% 2d  matlab=% 2d  mumps=% 2d  mercury= % 2d\n", $objective_C_points, $matlab_points, $mathematica_points, $mumps_points, $mercury_points if $DEBUG;
+            $has_braces         = 2;
+            last;
+        } elsif (m{^\s*@(interface|implementation|protocol|public|protected|private|end)\s}o) {
+            # Objective C without a doubt
+            $objective_C_points = 1000;
+            $matlab_points      = 0;
+printf ".m: keyword obj C=% 2d  matlab=% 2d  mumps=% 2d  mercury= % 2d\n", $objective_C_points, $matlab_points, $mathematica_points, $mumps_points, $mercury_points if $DEBUG;
+            last;
+        } elsif (m{^\s*BeginPackage}) {
+            $mathematica_points += 2;
+        } elsif (m{^\s*\[}) {             #   line starts with [  -- very matlab
+            $matlab_points += 5;
+printf ".m:  [      obj C=% 2d  matlab=% 2d  mumps=% 2d  mercury= % 2d\n", $objective_C_points, $matlab_points, $mathematica_points, $mumps_points, $mercury_points if $DEBUG;
+        } elsif (m{^\sK(ill)?\s+}) {
+            $mumps_points  += 5;
+printf ".m:  Kill   obj C=% 2d  matlab=% 2d  mumps=% 2d  mercury= % 2d\n", $objective_C_points, $matlab_points, $mathematica_points, $mumps_points, $mercury_points if $DEBUG;
+        } elsif (m{^\s*function}) {
+            --$objective_C_points;
+            ++$matlab_points;
+printf ".m:  funct  obj C=% 2d  matlab=% 2d  mumps=% 2d  mercury= % 2d\n", $objective_C_points, $matlab_points, $mathematica_points, $mumps_points, $mercury_points if $DEBUG;
+        } elsif (m{^\s*%}) {              #   %
+            # matlab commented line
+            --$objective_C_points;
+            ++$matlab_points;
+printf ".m:  pcent  obj C=% 2d  matlab=% 2d  mumps=% 2d  mercury= % 2d\n", $objective_C_points, $matlab_points, $mathematica_points, $mumps_points, $mercury_points if $DEBUG;
+        }
+    }
+    $IN->close;
+printf "END LOOP    obj C=% 2d  matlab=% 2d  mumps=% 2d  mercury= % 2d\n", $objective_C_points, $matlab_points, $mathematica_points, $mumps_points, $mercury_points if $DEBUG;
+
+    # next heuristic is unreliable for small files
+#   $objective_C_points = -9.9e20 unless $has_braces >= 2;
+
+    my %points = ( 'MATLAB'      => $matlab_points     ,
+                   'Mathematica' => $mathematica_points     ,
+                   'MUMPS'       => $mumps_points      ,
+                   'Objective C' => $objective_C_points,
+                   'Mercury'     => $mercury_points    , );
+
+    ${$rs_language} = (sort { $points{$b} <=> $points{$a}} keys %points)[0];
+
+    print "<- matlab_or_objective_C($file: matlab=$matlab_points, mathematica=$mathematica_points, C=$objective_C_points, mumps=$mumps_points, mercury=$mercury_points) => ${$rs_language}\n"
+        if $opt_v > 2;
+
+} # 1}}}
+sub Lisp_or_OpenCL {                         # {{{1
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+       ) = @_;
+
+    print "-> Lisp_or_OpenCL\n" if $opt_v > 2;
+
+    my $lang = undef;
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        return $lang;
+    }
+    my $lisp_points   = 0;
+    my $opcl_points = 0;
+    while (<$IN>) {
+        ++$lisp_points if  /^\s*;/;
+        ++$lisp_points if  /\((def|eval|require|export|let|loop|dec|format)/;
+        ++$opcl_points if  /^\s*(int|float|const|{)/;
+    }
+    $IN->close;
+    # print "lisp_points=$lisp_points   opcl_points=$opcl_points\n";
+    if ($lisp_points > $opcl_points) {
+        $lang = "Lisp";
+    } else {
+        $lang = "OpenCL";
+    }
+
+    print "<- Lisp_or_OpenCL\n" if $opt_v > 2;
+    return $lang;
+} # 1}}}
+sub Lisp_or_Julia {                          # {{{1
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+       ) = @_;
+
+    print "-> Lisp_or_Julia\n" if $opt_v > 2;
+
+    my $lang = undef;
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        return $lang;
+    }
+    my $lisp_points   = 0;
+    my $julia_points = 0;
+    while (<$IN>) {
+        ++$lisp_points if  /^\s*;/;
+        ++$lisp_points if  /\((def|eval|require|export|let|loop|dec|format)/;
+        ++$julia_points if  /^\s*(function|end|println|for|while)/;
+    }
+    $IN->close;
+    # print "lisp_points=$lisp_points   julia_points=$julia_points\n";
+    if ($lisp_points > $julia_points) {
+        $lang = "Lisp";
+    } else {
+        $lang = "Julia";
+    }
+
+    print "<- Lisp_or_Julia\n" if $opt_v > 2;
+    return $lang;
+} # 1}}}
+sub Perl_or_Prolog {                         # {{{1
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+       ) = @_;
+
+    print "-> Perl_or_Prolog\n" if $opt_v > 2;
+
+    my $lang = undef;
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        return $lang;
+    }
+    my $perl_points = 0;
+    my $prolog_points = 0;
+    while (<$IN>) {
+        ++$perl_points if  /;\s*$/;
+        ++$perl_points if  /({|})/;
+        ++$perl_points if  /^\s*sub\s+/;
+        ++$perl_points if  /\s*<<'/;  # start HERE block
+        ++$perl_points if  /\$(\w+\->|[_!])/;
+        ++$prolog_points if !/\s*#/ and /\.\s*$/;
+        ++$prolog_points if /:-/;
+    }
+    $IN->close;
+    # print "perl_points=$perl_points   prolog_points=$prolog_points\n";
+    if ($perl_points > $prolog_points) {
+        $lang = "Perl";
+    } else {
+        $lang = "Prolog";
+    }
+
+    printf "<- Perl_or_Prolog(%s, Perl=%d Prolog=%d)\n",
+        $file, $perl_points, $prolog_points if $opt_v > 2;
+    return $lang;
+} # 1}}}
+sub IDL_or_QtProject {                       # {{{1
+    # also Prolog
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+       ) = @_;
+
+    print "-> IDL_or_QtProject($file)\n" if $opt_v > 2;
+
+    my $lang = undef;
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        return $lang;
+    }
+    my $idl_points    = 0;
+    my $qtproj_points = 0;
+    my $prolog_points = 0;
+    while (<$IN>) {
+        ++$idl_points    if /^\s*;/;
+        ++$idl_points    if /plot\(/i;
+        ++$qtproj_points if /^\s*(qt|configs|sources)\s*\+?=/i;
+        ++$prolog_points if /\.\s*$/;
+        ++$prolog_points if /:-/;
+    }
+    $IN->close;
+    # print "idl_points=$idl_points   qtproj_points=$qtproj_points\n";
+
+    if ($idl_points > $qtproj_points) {
+        $lang = "IDL";
+    } else {
+        $lang = "Qt Project";
+    }
+
+    my %points = ( 'IDL'        => $idl_points     ,
+                   'Qt Project' => $qtproj_points  ,
+                   'Prolog'     => $prolog_points  , );
+
+    $lang = (sort { $points{$b} <=> $points{$a}} keys %points)[0];
+
+    print "<- IDL_or_QtProject(idl_points=$idl_points, ",
+          "qtproj_points=$qtproj_points, prolog_points=$prolog_points)\n"
+           if $opt_v > 2;
+    return $lang;
+} # 1}}}
+sub Ant_or_XML {                             # {{{1
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+       ) = @_;
+
+    print "-> Ant_or_XML($file)\n" if $opt_v > 2;
+
+    my $lang = "XML";
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        return $lang;
+    }
+    my $Ant_points   = 0;
+    my $XML_points   = 1;
+    while (<$IN>) {
+        if (/^\s*<project\s+/) {
+            ++$Ant_points  ;
+            --$XML_points  ;
+        }
+        if (/xmlns:artifact="antlib:org.apache.maven.artifact.ant"/) {
+            ++$Ant_points  ;
+            --$XML_points  ;
+        }
+    }
+    $IN->close;
+
+    if ($XML_points >= $Ant_points) {
+        # tie or better goes to XML
+        $lang = "XML";
+    } else {
+        $lang = "Ant";
+    }
+
+    print "<- Ant_or_XML($lang)\n" if $opt_v > 2;
+    return $lang;
+} # 1}}}
+sub Maven_or_XML {                           # {{{1
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+       ) = @_;
+
+    print "-> Maven_or_XML($file)\n" if $opt_v > 2;
+
+    my $lang = "XML";
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        return $lang;
+    }
+    my $Mvn_points   = 0;
+    my $XML_points   = 1;
+    while (<$IN>) {
+        if (/^\s*<project\s+/) {
+            ++$Mvn_points  ;
+            --$XML_points  ;
+        }
+        if (m{xmlns="http://maven.apache.org/POM/}) {
+            ++$Mvn_points  ;
+            --$XML_points  ;
+        }
+    }
+    $IN->close;
+
+    if ($XML_points >= $Mvn_points) {
+        # tie or better goes to XML
+        $lang = "XML";
+    } else {
+        $lang = "Maven";
+    }
+
+    print "<- Maven_or_XML($lang)\n" if $opt_v > 2;
+    return $lang;
+} # 1}}}
+sub pascal_or_puppet {                       # {{{1
+    # Decide if code is Pascal or Puppet manifest
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+        $rs_language , # out
+       ) = @_;
+
+    print "-> pascal_or_puppet\n" if $opt_v > 2;
+
+    ${$rs_language} = "";
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        return;
+    }
+
+    my $DEBUG              = 0;
+    my $pascal_points      = 0;
+    my $puppet_points      = 0;
+
+    while (<$IN>) {
+
+        if ( /^\s*\#\s+/ ) {
+                $puppet_points += .001;
+                next;
+        }
+
+        ++$pascal_points if /\bprogram\s+[A-Za-z]/i;
+        ++$pascal_points if /\bunit\s+[A-Za-z]/i;
+        ++$pascal_points if /\bmodule\s+[A-Za-z]/i;
+        ++$pascal_points if /\bprocedure\b/i;
+        ++$pascal_points if /\bfunction\b/i;
+        ++$pascal_points if /^\s*interface\s+/i;
+        ++$pascal_points if /^\s*implementation\s+/i;
+        ++$pascal_points if /^\s*uses\s+/i;
+        ++$pascal_points if /(?<!\:\:)\bbegin\b(?!\:\:)/i;
+        ++$pascal_points if /(?<!\:\:)\bend\b(?!\:\:)/i;
+        ++$pascal_points if /\:\=/;
+        ++$pascal_points if /\<\>/;
+        ++$pascal_points if /^\s*\{\$(I|INCLUDE)\s+.*\}/i;
+        ++$pascal_points if /writeln/;
+
+        ++$puppet_points if /^\s*class\s+/ and not /class\s+operator\s+/;
+        ++$puppet_points if /^\s*case\s+/;
+        ++$puppet_points if /^\s*package\s+/;
+        ++$puppet_points if /^\s*file\s+/;
+        ++$puppet_points if /^\s*include\s\w+/;
+        ++$puppet_points if /^\s*service\s+/;
+        ++$puppet_points if /\s\$\w+\s*\=\s*\S/;
+        ++$puppet_points if /\S\s*\=\>\s*\S/;
+
+        # No need to process rest of file if language seems obvious.
+        last
+                if (abs ($pascal_points - $puppet_points ) > 20 );
+    }
+    $IN->close;
+
+    print "<- pascal_or_puppet(pascal=$pascal_points, puppet=$puppet_points)\n"
+        if $opt_v > 2;
+
+    if ($pascal_points > $puppet_points) {
+        ${$rs_language} = "Pascal";
+    } else {
+        ${$rs_language} = "Puppet";
+    }
+
+} # 1}}}
+sub Forth_or_Fortran {                       # {{{1
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+       ) = @_;
+
+    print "-> Forth_or_Fortran\n" if $opt_v > 2;
+
+    my $lang = undef;
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        return $lang;
+    }
+    my $forth_points = 0;
+    my $fortran_points = 0;
+    while (<$IN>) {
+        ++$forth_points if  /^:\s/;
+        ++$fortran_points if  /^([c*][^a-z]|\s{6,}(subroutine|program|end|implicit)\s|\s*!)/i;
+    }
+    $IN->close;
+    if ($forth_points > $fortran_points) {
+        $lang = "Forth";
+    } else {
+        $lang = "Fortran 77";
+    }
+
+    print "<- Forth_or_Fortran\n" if $opt_v > 2;
+    return $lang;
+} # 1}}}
+sub Forth_or_Fsharp {                        # {{{1
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+       ) = @_;
+
+    print "-> Forth_or_Fsharp\n" if $opt_v > 2;
+
+    my $lang = undef;
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        return $lang;
+    }
+    my $forth_points = 0;
+    my $fsharp_points = 0;
+    while (<$IN>) {
+        ++$forth_points if  /^:\s/;
+        ++$fsharp_points if  /^\s*(#light|import|let|module|namespace|open|type)/;
+    }
+    $IN->close;
+    if ($forth_points > $fsharp_points) {
+        $lang = "Forth";
+    } else {
+        $lang = "F#";
+    }
+
+    print "<- Forth_or_Fsharp\n" if $opt_v > 2;
+    return $lang;
+} # 1}}}
+sub Verilog_or_Coq {                         # {{{1
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+       ) = @_;
+
+    print "-> Verilog_or_Coq\n" if $opt_v > 2;
+
+    my $lang = undef;
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        return $lang;
+    }
+    my $coq_points     = 0;
+    my $verilog_points = 0;
+    while (<$IN>) {
+        ++$verilog_points if  /^\s*(module|begin|input|output|always)/;
+        ++$coq_points if /\b(Inductive|Fixpoint|Definition|
+                             Theorem|Lemma|Proof|Qed|forall|
+                             Section|Check|Notation|Variable|
+                             Goal|Fail|Require|Scheme|Module|Ltac|
+                             Set|Unset|Parameter|Coercion|Axiom|
+                             Locate|Type|Record|Existing|Class)\b/x;
+    }
+    $IN->close;
+    if ($coq_points > $verilog_points) {
+        $lang = "Coq";
+    } else {
+        $lang = "Verilog-SystemVerilog";
+    }
+
+    print "<- Verilog_or_Coq\n" if $opt_v > 2;
+    return $lang;
+} # 1}}}
+sub TypeScript_or_QtLinguist {               # {{{1
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+       ) = @_;
+
+    print "-> TypeScript_or_QtLinguist\n" if $opt_v > 2;
+
+    my $lang = undef;
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        return $lang;
+    }
+    my $tscript_points  = 0;
+    my $linguist_points = 0;
+    while (<$IN>) {
+        ++$linguist_points if m{\b</?(message|source|translation)>};
+        ++$tscript_points  if /^\s*(var|class|document)\b/;
+        ++$tscript_points  if /[;}]\s*$/;
+        ++$tscript_points  if m{^\s*//};
+    }
+    $IN->close;
+    if ($tscript_points > $linguist_points) {
+        $lang = "TypeScript";
+    } else {
+        $lang = "Qt Linguist";
+    }
+    print "<- TypeScript_or_QtLinguist\n" if $opt_v > 2;
+    return $lang;
+} # 1}}}
+sub Qt_or_Glade {                            # {{{1
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+       ) = @_;
+
+    print "-> Qt_or_Glade\n" if $opt_v > 2;
+
+    my $lang = undef;
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        push @{$raa_errors}, [$rh_Err->{'Unable to read'} , $file];
+        return $lang;
+    }
+    my $qt_points    =  1;
+    my $glade_points = -1;
+    while (<$IN>) {
+        if (/generated\s+with\s+glade/i) {
+            $glade_points =  1;
+            $qt_points    = -1;
+            last;
+        }
+    }
+    $IN->close;
+    if ($glade_points > $qt_points) {
+        $lang = "Glade";
+    } else {
+        $lang = "Qt";
+    }
+    print "<- Qt_or_Glade\n" if $opt_v > 2;
+    return $lang;
+} # 1}}}
+sub html_colored_text {                      # {{{1
+    # http://www.pagetutor.com/pagetutor/makapage/pics/net216-2.gif
+    my ($color, $text) = @_;
+#?#die "html_colored_text($text)";
+    if      ($color =~ /^red$/i)   {
+        $color = "#ff0000";
+    } elsif ($color =~ /^green$/i) {
+        $color = "#00ff00";
+    } elsif ($color =~ /^blue$/i)  {
+        $color = "#0000ff";
+    } elsif ($color =~ /^grey$/i)  {
+        $color = "#cccccc";
+    }
+#   return "" unless $text;
+    return '<font color="' . $color . '">' . html_metachars($text) . "</font>";
+} # 1}}}
+sub xml_metachars {                          # {{{1
+    # http://en.wikipedia.org/wiki/Character_encodings_in_HTML#XML_character_references
+    my ($string, ) = shift @_;
+
+    my  @in_chars    = split(//, $string);
+    my  @out_chars   = ();
+    foreach my $c (@in_chars) {
+        if      ($c eq '&') { push @out_chars, '&amp;'
+        } elsif ($c eq '<') { push @out_chars, '&lt;'
+        } elsif ($c eq '>') { push @out_chars, '&gt;'
+        } elsif ($c eq '"') { push @out_chars, '&quot;'
+        } elsif ($c eq "'") { push @out_chars, '&apos;'
+        } else {
+            push @out_chars, $c;
+        }
+    }
+    return join "", @out_chars;
+} # 1}}}
+sub html_metachars {                         # {{{1
+    # Replace HTML metacharacters with their printable forms.
+    # Future:  use HTML-Encoder-0.00_04/lib/HTML/Encoder.pm
+    # from Fabiano Reese Righetti's HTML::Encoder module if
+    # this subroutine proves to be too simplistic.
+    my ($string, ) = shift @_;
+
+    my  @in_chars    = split(//, $string);
+    my  @out_chars   = ();
+    foreach my $c (@in_chars) {
+        if      ($c eq '<') {
+            push @out_chars, '&lt;'
+        } elsif ($c eq '>') {
+            push @out_chars, '&gt;'
+        } elsif ($c eq '&') {
+            push @out_chars, '&amp;'
+        } else {
+            push @out_chars, $c;
+        }
+    }
+    return join "", @out_chars;
+} # 1}}}
+sub test_alg_diff {                          # {{{1
+    my ($file_1 ,
+        $file_2 )
+       = @_;
+    my $fh_1 = new IO::File $file_1, "r";
+    die "Unable to read $file_1:  $!\n" unless defined $fh_1;
+    chomp(my @lines_1 = <$fh_1>);
+    $fh_1->close;
+
+    my $fh_2 = new IO::File $file_2, "r";
+    die "Unable to read $file_2:  $!\n" unless defined $fh_2;
+    chomp(my @lines_2 = <$fh_2>);
+    $fh_2->close;
+
+    my $n_no_change = 0;
+    my $n_modified  = 0;
+    my $n_added     = 0;
+    my $n_deleted   = 0;
+    my @min_sdiff   = ();
+my $NN = chr(27) . "[0m";  # normal
+my $BB = chr(27) . "[1m";  # bold
+
+    my @sdiffs = sdiff( \@lines_1, \@lines_2 );
+    foreach my $entry (@sdiffs) {
+        my ($out_1, $out_2) = ('', '');
+        if ($entry->[0] eq 'u') {
+            ++$n_no_change;
+          # $out_1 = $entry->[1];
+          # $out_2 = $entry->[2];
+            next;
+        }
+#       push @min_sdiff, $entry;
+        if      ($entry->[0] eq 'c') {
+            ++$n_modified;
+            ($out_1, $out_2) = diff_two_strings($entry->[1], $entry->[2]);
+            $out_1 =~ s/\cA(\w)/${BB}$1${NN}/g;
+            $out_2 =~ s/\cA(\w)/${BB}$1${NN}/g;
+          # $out_1 =~ s/\cA//g;
+          # $out_2 =~ s/\cA//g;
+        } elsif ($entry->[0] eq '+') {
+            ++$n_added;
+            $out_1 = $entry->[1];
+            $out_2 = $entry->[2];
+        } elsif ($entry->[0] eq '-') {
+            ++$n_deleted;
+            $out_1 = $entry->[1];
+            $out_2 = $entry->[2];
+        } elsif ($entry->[0] eq 'u') {
+        } else { die "unknown entry->[0]=[$entry->[0]]\n"; }
+        printf "%-80s | %s\n", $out_1, $out_2;
+    }
+
+#   foreach my $entry (@min_sdiff) {
+#       printf "DIFF:  %s  %s  %s\n", @{$entry};
+#   }
+} # 1}}}
+sub write_comments_to_html {                 # {{{1
+    my ($filename      , # in
+        $rah_diff_L    , # in  see routine array_diff() for explanation
+        $rah_diff_R    , # in  see routine array_diff() for explanation
+        $rh_blank      , # in  location and counts of blank lines
+       ) = @_;
+
+    print "-> write_comments_to_html($filename)\n" if $opt_v > 2;
+    my $file = $filename . ".html";
+#use Data::Dumper;
+#print Dumper("rah_diff_L", $rah_diff_L, "rah_diff_R", $rah_diff_R);
+    my $OUT = new IO::File $file, "w";
+    if (!defined $OUT) {
+        warn "Unable to write to $file\n";
+        print "<- write_comments_to_html\n" if $opt_v > 2;
+        return;
+    }
+
+    my $approx_line_count = scalar @{$rah_diff_L};
+    my $n_digits = 1 + int(log($approx_line_count)/2.30258509299405); # log_10
+
+    my $html_out = html_header($filename);
+
+    my $comment_line_number = 0;
+    for (my $i = 0; $i < scalar @{$rah_diff_R}; $i++) {
+        if (defined $rh_blank->{$i}) {
+            foreach (1..$rh_blank->{$i}) {
+                $html_out .= "<!-- blank -->\n";
+            }
+        }
+        my $line_num = "";
+        my $pre      = "";
+        my $post     = '</span> &nbsp;';
+warn "undef rah_diff_R[$i]{type} " unless defined $rah_diff_R->[$i]{type};
+        if ($rah_diff_R->[$i]{type} eq 'nonexist') {
+            ++$comment_line_number;
+            $line_num = sprintf "\&nbsp; <span class=\"clinenum\"> %0${n_digits}d %s",
+                            $comment_line_number, $post;
+            $pre = '<span class="comment">';
+            $html_out .= $line_num;
+            $html_out .= $pre .
+                         html_metachars($rah_diff_L->[$i]{char}) .
+                         $post . "\n";
+            next;
+        }
+        if      ($rah_diff_R->[$i]{type} eq 'code' and
+                 $rah_diff_R->[$i]{desc} eq 'same') {
+            # entire line remains as-is
+            $line_num = sprintf "\&nbsp; <span class=\"linenum\"> %0${n_digits}d %s",
+                            $rah_diff_R->[$i]{lnum}, $post;
+            $pre    = '<span class="normal">';
+            $html_out .= $line_num;
+            $html_out .= $pre .
+                         html_metachars($rah_diff_R->[$i]{char}) . $post;
+#XX     } elsif ($rah_diff_R->[$i]{type} eq 'code') { # code+comments
+#XX
+#XX         $line_num = '<span class="linenum">' .
+#XX                      $rah_diff_R->[$i]{lnum} . $post;
+#XX         $html_out .= $line_num;
+#XX
+#XX         my @strings = @{$rah_diff_R->[$i]{char}{strings}};
+#XX         my @type    = @{$rah_diff_R->[$i]{char}{type}};
+#XX         for (my $i = 0; $i < scalar @strings; $i++) {
+#XX             if ($type[$i] eq 'u') {
+#XX                 $pre = '<span class="normal">';
+#XX             } else {
+#XX                 $pre = '<span class="comment">';
+#XX             }
+#XX             $html_out .= $pre .  html_metachars($strings[$i]) . $post;
+#XX         }
+# print Dumper(@strings, @type); die;
+
+        } elsif ($rah_diff_R->[$i]{type} eq 'comment') {
+            $line_num = '<span class="clinenum">' . $comment_line_number . $post;
+            # entire line is a comment
+            $pre    = '<span class="comment">';
+            $html_out .= $pre .
+                         html_metachars($rah_diff_R->[$i]{char}) . $post;
+        }
+#printf "%-30s %s %-30s\n", $line_1, $separator, $line_2;
+        $html_out .= "\n";
+    }
+
+    $html_out .= html_end();
+
+    my $out_file = "$filename.html";
+    open  OUT, ">$out_file" or die "Cannot write to $out_file $!\n";
+    print OUT $html_out;
+    close OUT;
+    print "Wrote $out_file\n" unless $opt_quiet;
+    $OUT->close;
+
+    print "<- write_comments_to_html\n" if $opt_v > 2;
+} # 1}}}
+sub array_diff {                             # {{{1
+    my ($file          , # in  only used for error reporting
+        $ra_lines_L    , # in  array of lines in Left  file (no blank lines)
+        $ra_lines_R    , # in  array of lines in Right file (no blank lines)
+        $mode          , # in  "comment" | "revision"
+        $rah_diff_L    , # out
+        $rah_diff_R    , # out
+        $raa_Errors    , # in/out
+       ) = @_;
+
+    # This routine operates in two ways:
+    # A. Computes diffs of the same file with and without comments.
+    #    This is used to classify lines as code, comments, or blank.
+    # B. Computes diffs of two revisions of a file.  This method
+    #    requires a prior run of method A using the older version
+    #    of the file because it needs lines to be classified.
+
+    # $rah_diff structure:
+    # An array with n entries where n equals the number of lines in
+    # an sdiff of the two files.  Each entry in the array describes
+    # the contents of the corresponding line in file Left and file Right:
+    #  diff[]{type} = blank | code | code+comment | comment | nonexist
+    #        {lnum} = line number within the original file (1-based)
+    #        {desc} = same | added | removed | modified
+    #        {char} = the input line unless {desc} = 'modified' in
+    #                 which case
+    #        {char}{strings} = [ substrings ]
+    #        {char}{type}    = [ disposition (added, removed, etc)]
+    #
+
+    @{$rah_diff_L} = ();
+    @{$rah_diff_R} = ();
+
+    print "-> array_diff()\n" if $opt_v > 2;
+    my $COMMENT_MODE = 0;
+       $COMMENT_MODE = 1 if $mode eq "comment";
+
+#print "array_diff(mode=$mode)\n";
+#print Dumper("block left:" , $ra_lines_L);
+#print Dumper("block right:", $ra_lines_R);
+
+    my @sdiffs = ();
+    eval {
+        local $SIG{ALRM} = sub { die "alarm\n" };
+        alarm $opt_diff_timeout;
+        @sdiffs = sdiff($ra_lines_L, $ra_lines_R);
+        alarm 0;
+    };
+    if ($@) {
+        # timed out
+        die unless $@ eq "alarm\n"; # propagate unexpected errors
+        push @{$raa_Errors},
+             [ $Error_Codes{'Diff error, exceeded timeout'}, $file ];
+        if ($opt_v) {
+          warn "array_diff: diff timeout failure for $file--ignoring\n";
+        }
+        return;
+    }
+
+#use Data::Dumper::Simple;
+#print Dumper($ra_lines_L, $ra_lines_R, @sdiffs);
+#die;
+
+    my $n_L        = 0;
+    my $n_R        = 0;
+    my $n_sdiff    = 0;  # index to $rah_diff_L, $rah_diff_R
+    foreach my $triple (@sdiffs) {
+        my $flag   = $triple->[0];
+        my $line_L = $triple->[1];
+        my $line_R = $triple->[2];
+        $rah_diff_L->[$n_sdiff]{char} = $line_L;
+        $rah_diff_R->[$n_sdiff]{char} = $line_R;
+        if      ($flag eq 'u') {  # u = unchanged
+            ++$n_L;
+            ++$n_R;
+            if ($COMMENT_MODE) {
+                # line exists in both with & without comments, must be code
+                $rah_diff_L->[$n_sdiff]{type} = "code";
+                $rah_diff_R->[$n_sdiff]{type} = "code";
+            }
+            $rah_diff_L->[$n_sdiff]{desc} = "same";
+            $rah_diff_R->[$n_sdiff]{desc} = "same";
+            $rah_diff_L->[$n_sdiff]{lnum} = $n_L;
+            $rah_diff_R->[$n_sdiff]{lnum} = $n_R;
+        } elsif ($flag eq 'c') {  # c = changed
+# warn "per line sdiff() commented out\n"; if (0) {
+            ++$n_L;
+            ++$n_R;
+
+            if ($COMMENT_MODE) {
+                # line has text both with & without comments;
+                # count as code
+                $rah_diff_L->[$n_sdiff]{type} = "code";
+                $rah_diff_R->[$n_sdiff]{type} = "code";
+            }
+
+            my @chars_L = split '', $line_L;
+            my @chars_R = split '', $line_R;
+
+#XX         my @inline_sdiffs = sdiff( \@chars_L, \@chars_R );
+
+#use Data::Dumper::Simple;
+#if ($n_R == 6 or $n_R == 1 or $n_R == 2) {
+#print "L=[$line_L]\n";
+#print "R=[$line_R]\n";
+#print Dumper(@chars_L, @chars_R, @inline_sdiffs);
+#}
+#XX         my @index = ();
+#XX         foreach my $il_triple (@inline_sdiffs) {
+#XX             # make an array of u|c|+|- corresponding
+#XX             # to each character
+#XX             push @index, $il_triple->[0];
+#XX         }
+#XX#print Dumper(@index); die;
+#XX          # expect problems if arrays @index and $inline_sdiffs[1];
+#XX          # (@{$inline_sdiffs->[1]} are the characters of line_L)
+#XX          # aren't the same length
+#XX          my $prev_type = $index[0];
+#XX          my @strings   = ();  # blocks of consecutive code or comment
+#XX          my @type      = ();  # u (=code) or c (=comment)
+#XX          my $j_str     = 0;
+#XX          $strings[$j_str] .= $chars_L[0];
+#XX          $type[$j_str] = $prev_type;
+#XX          for (my $i = 1; $i < scalar @chars_L; $i++) {
+#XX              if ($index[$i] ne $prev_type) {
+#XX                  ++$j_str;
+#XX#print "change at j_str=$j_str type=$index[$i]\n";
+#XX                  $type[$j_str] = $index[$i];
+#XX                  $prev_type    = $index[$i];
+#XX              }
+#XX              $strings[$j_str] .= $chars_L[$i];
+#XX          }
+# print Dumper(@strings, @type); die;
+#XX         delete $rah_diff_R->[$n_sdiff]{char};
+#XX         @{$rah_diff_R->[$n_sdiff]{char}{strings}} = @strings;
+#XX         @{$rah_diff_R->[$n_sdiff]{char}{type}}    = @type;
+            $rah_diff_L->[$n_sdiff]{desc} = "modified";
+            $rah_diff_R->[$n_sdiff]{desc} = "modified";
+            $rah_diff_L->[$n_sdiff]{lnum} = $n_L;
+            $rah_diff_R->[$n_sdiff]{lnum} = $n_R;
+#}
+
+        } elsif ($flag eq '+') {  # + = added
+            ++$n_R;
+            if ($COMMENT_MODE) {
+                # should never get here
+                @{$rah_diff_L} = ();
+                @{$rah_diff_R} = ();
+                push @{$raa_Errors},
+                     [ $Error_Codes{'Diff error (quoted comments?)'}, $file ];
+                if ($opt_v) {
+                  warn "array_diff: diff failure (diff says the\n";
+                  warn "comment-free file has added lines).\n";
+                  warn "$n_sdiff  $line_L\n";
+                }
+                last;
+            }
+            $rah_diff_L->[$n_sdiff]{type} = "nonexist";
+            $rah_diff_L->[$n_sdiff]{desc} = "removed";
+            $rah_diff_R->[$n_sdiff]{desc} = "added";
+            $rah_diff_R->[$n_sdiff]{lnum} = $n_R;
+        } elsif ($flag eq '-') {  # - = removed
+            ++$n_L;
+            if ($COMMENT_MODE) {
+                # line must be comment because blanks already gone
+                $rah_diff_L->[$n_sdiff]{type} = "comment";
+            }
+            $rah_diff_R->[$n_sdiff]{type} = "nonexist";
+            $rah_diff_R->[$n_sdiff]{desc} = "removed";
+            $rah_diff_L->[$n_sdiff]{desc} = "added";
+            $rah_diff_L->[$n_sdiff]{lnum} = $n_L;
+        }
+#printf "%-30s %s %-30s\n", $line_L, $separator, $line_R;
+        ++$n_sdiff;
+    }
+#use Data::Dumper::Simple;
+#print Dumper($rah_diff_L, $rah_diff_R);
+
+    print "<- array_diff\n" if $opt_v > 2;
+} # 1}}}
+sub remove_leading_dir {                     # {{{1
+    my @filenames = @_;
+    #
+    #  Input should be a list of file names
+    #  with the same leading directory such as
+    #
+    #      dir1/dir2/a.txt
+    #      dir1/dir2/b.txt
+    #      dir1/dir2/dir3/c.txt
+    #
+    #  Output is the same list minus the common
+    #  directory path:
+    #
+    #      a.txt
+    #      b.txt
+    #      dir3/c.txt
+    #
+    print "-> remove_leading_dir()\n" if $opt_v > 2;
+    my @D = (); # a matrix:   [ [ dir1, dir2 ],         # dir1/dir2/a.txt
+                #               [ dir1, dir2 ],         # dir1/dir2/b.txt
+                #               [ dir1, dir2 , dir3] ]  # dir1/dir2/dir3/c.txt
+    if ($ON_WINDOWS) {
+        foreach my $F (@filenames) {
+            $F =~ s{\\}{/}g;
+            $F = ucfirst($F) if $F =~ /^\w:/;  # uppercase drive letter
+        }
+    }
+    if (scalar @filenames == 1) {
+        # special case:  with only one filename
+        # cannot determine a baseline, just remove first directory level
+        $filenames[0] =~ s{^.*?/}{};
+        # print "-> $filenames[0]\n";
+        return $filenames[0];
+    }
+    foreach my $F (@filenames) {
+        my ($Vol, $Dir, $File) = File::Spec->splitpath($F);
+        my @x = File::Spec->splitdir( $Dir );
+        pop @x unless $x[$#x]; # last entry usually null, remove it
+        if ($ON_WINDOWS) {
+            if (defined($Vol) and $Vol) {
+                # put the drive letter, eg, C:, at the front
+                unshift @x, uc $Vol;
+            }
+        }
+#print "F=$F, Dir=$Dir  x=[", join("][", @x), "]\n";
+        push @D, [ @x ];
+    }
+
+    # now loop over columns until either they are all
+    # eliminated or a unique column is found
+
+#use Data::Dumper::Simple;
+#print Dumper("remove_leading_dir after ", @D);
+
+    my @common   = ();  # to contain the common leading directories
+    my $mismatch = 0;
+    while (!$mismatch) {
+        for (my $row = 1; $row < scalar @D; $row++) {
+#print "comparing $D[$row][0] to $D[0][0]\n";
+
+            if (!defined $D[$row][0] or !defined $D[0][0] or
+                ($D[$row][0] ne $D[0][0])) {
+                $mismatch = 1;
+                last;
+            }
+        }
+#print "mismatch=$mismatch\n";
+        if (!$mismatch) {
+            push @common, $D[0][0];
+            # all terms in the leading match; unshift the batch
+            foreach my $ra (@D) {
+                shift @{$ra};
+            }
+        }
+    }
+
+    push @common, " ";  # so that $leading will end with "/ "
+    my $leading = File::Spec->catdir( @common );
+       $leading =~ s{ $}{};  # now take back the bogus appended space
+#print "remove_leading_dir leading=[$leading]\n"; die;
+    if ($ON_WINDOWS) {
+       $leading =~ s{\\}{/}g;
+    }
+    foreach my $F (@filenames) {
+        $F =~ s{^$leading}{};
+    }
+
+    print "<- remove_leading_dir()\n" if $opt_v > 2;
+    return @filenames;
+
+} # 1}}}
+sub strip_leading_dir {                      # {{{1
+    my ($leading, @filenames) = @_;
+    #  removes the string $leading from each entry in @filenames
+    print "-> strip_leading_dir()\n" if $opt_v > 2;
+
+#print "remove_leading_dir leading=[$leading]\n"; die;
+    if ($ON_WINDOWS) {
+       $leading =~ s{\\}{/}g;
+        foreach my $F (@filenames) {
+            $F =~ s{\\}{/}g;
+        }
+    }
+    foreach my $F (@filenames) {
+        $F =~ s{^$leading}{};
+    }
+
+    print "<- strip_leading_dir()\n" if $opt_v > 2;
+    return @filenames;
+
+} # 1}}}
+sub find_deepest_file {                      # {{{1
+    my @filenames = @_;
+    #
+    #  Input should be a list of file names
+    #  with the same leading directory such as
+    #
+    #      dir1/dir2/a.txt
+    #      dir1/dir2/b.txt
+    #      dir1/dir2/dir3/c.txt
+    #
+    #  Output is the file with the most parent directories:
+    #
+    #      dir1/dir2/dir3/c.txt
+
+    print "-> find_deepest_file()\n" if $opt_v > 2;
+
+    my $deepest    = undef;
+    my $max_subdir = -1;
+    foreach my $F (sort @filenames) {
+        my ($Vol, $Dir, $File) = File::Spec->splitpath($F);
+        my @x = File::Spec->splitdir( $Dir );
+        pop @x unless $x[$#x]; # last entry usually null, remove it
+        if (scalar @x > $max_subdir) {
+            $deepest    = $F;
+            $max_subdir = scalar @x;
+        }
+    }
+
+    print "<- find_deepest_file()\n" if $opt_v > 2;
+    return $deepest;
+
+} # 1}}}
+sub find_uncommon_parent_dir {               # {{{1
+    my ($file_L, $file_R) = @_;
+    #
+    # example:
+    #
+    #   file_L = "perl-5.16.1/cpan/CPANPLUS/lib/CPANPLUS/Internals/Source/SQLite/Tie.pm"
+    #   file_R = "/tmp/8VxQG0OLbp/perl-5.16.3/cpan/CPANPLUS/lib/CPANPLUS/Internals/Source/SQLite/Tie.pm"
+    #
+    # then return
+    #
+    #   "perl-5.16.1",
+    #   "/tmp/8VxQG0OLbp/perl-5.16.3",
+
+    my ($Vol_L, $Dir_L, $File_L) = File::Spec->splitpath($file_L);
+    my @x_L = File::Spec->splitdir( $Dir_L );
+    my ($Vol_R, $Dir_R, $File_R) = File::Spec->splitpath($file_R);
+    my @x_R = File::Spec->splitdir( $Dir_R );
+
+    my @common  = ();
+
+    # work backwards
+    while ($x_L[$#x_L] eq $x_R[$#x_R]) {
+        push @common, $x_L[$#x_L];
+        pop  @x_L;
+        pop  @x_R;
+    }
+    my $success = scalar @common;
+
+    my $dirs_L = File::Spec->catdir( @x_L );
+    my $dirs_R = File::Spec->catdir( @x_R );
+    my $lead_L = File::Spec->catpath( $Vol_L, $dirs_L, "" );
+    my $lead_R = File::Spec->catpath( $Vol_R, $dirs_R, "" );
+
+    return $lead_L, $lead_R, $success;
+
+} # 1}}}
+sub get_leading_dirs {                       # {{{1
+    my ($rh_file_list_L, $rh_file_list_R) = @_;
+    # find uniquely named files in both sets to help determine the
+    # leading directory positions
+    my %unique_filename = ();
+    my %basename_L = ();
+    my %basename_R = ();
+    foreach my $f (keys %{$rh_file_list_L}) {
+        my $bn = basename($f);
+        $basename_L{ $bn }{'count'}   += 1;
+        $basename_L{ $bn }{'fullpath'} = $f;
+    }
+    foreach my $f (keys %{$rh_file_list_R}) {
+        my $bn = basename($f);
+        $basename_R{ $bn }{'count'}   += 1;
+        $basename_R{ $bn }{'fullpath'} = $f;
+    }
+    foreach my $f (keys %basename_L) {
+        next unless $basename_L{$f}{'count'} == 1;
+        next unless defined $basename_R{$f} and $basename_R{$f}{'count'} == 1;
+        $unique_filename{$f}{'L'} = $basename_L{ $f }{'fullpath'};
+        $unique_filename{$f}{'R'} = $basename_R{ $f }{'fullpath'};
+    }
+    return undef, undef, 0 unless %unique_filename;
+
+    my %candidate_leading_dir_L = ();
+    my %candidate_leading_dir_R = ();
+    foreach my $f (keys %unique_filename) {
+        my $fL = $unique_filename{ $f }{'L'};
+        my $fR = $unique_filename{ $f }{'R'};
+#printf "%-36s -> %-36s\n", $fL, $fR;
+        my $ptr_L = length($fL) - 1;
+        my $ptr_R = length($fR) - 1;
+        my @aL    = split '', $fL;
+        my @aR    = split '', $fR;
+        while ($ptr_L >= 0 and $ptr_R >= 0) {
+            last if $aL[$ptr_L] ne $aR[$ptr_R];
+            --$ptr_L;
+            --$ptr_R;
+        }
+#print "ptr_L=$ptr_L   ptr_R=$ptr_R\n";
+        my $leading_dir_L = "";
+           $leading_dir_L = substr($fL, 0, $ptr_L+1) if $ptr_L >= 0;
+        my $leading_dir_R = "";
+           $leading_dir_R = substr($fR, 0, $ptr_R+1) if $ptr_R >= 0;
+#print "leading_dir_L=$leading_dir_L   leading_dir_R=$leading_dir_R\n";
+        ++$candidate_leading_dir_L{$leading_dir_L};
+        ++$candidate_leading_dir_R{$leading_dir_R};
+    }
+#use Data::Dumper::Simple;
+#print Dumper(%candidate_leading_dir_L);
+#print Dumper(%candidate_leading_dir_R);
+#die;
+    my $best_L = (sort {
+               $candidate_leading_dir_L{$b} <=>
+               $candidate_leading_dir_L{$a}} keys %candidate_leading_dir_L)[0];
+    my $best_R = (sort {
+               $candidate_leading_dir_R{$b} <=>
+               $candidate_leading_dir_R{$a}} keys %candidate_leading_dir_R)[0];
+    return $best_L, $best_R, 1;
+} # 1}}}
+sub align_by_pairs {                         # {{{1
+    my ($rh_file_list_L        , # in
+        $rh_file_list_R        , # in
+        $ra_added              , # out
+        $ra_removed            , # out
+        $ra_compare_list       , # out
+        ) = @_;
+    print "-> align_by_pairs()\n" if $opt_v > 2;
+    @{$ra_compare_list} = ();
+
+    my @files_L = sort keys %{$rh_file_list_L};
+    my @files_R = sort keys %{$rh_file_list_R};
+    return () unless @files_L or  @files_R;  # at least one must have stuff
+    if      ( @files_L and !@files_R) {
+        # left side has stuff, right side is empty; everything deleted
+        @{$ra_added   }     = ();
+        @{$ra_removed }     = @files_L;
+        @{$ra_compare_list} = ();
+        return;
+    } elsif (!@files_L and  @files_R) {
+        # left side is empty, right side has stuff; everything added
+        @{$ra_added   }     = @files_R;
+        @{$ra_removed }     = ();
+        @{$ra_compare_list} = ();
+        return;
+    }
+#use Data::Dumper::Simple;
+#print Dumper("align_by_pairs", %{$rh_file_list_L}, %{$rh_file_list_R},);
+#die;
+    if (scalar @files_L == 1 and scalar @files_R == 1) {
+        # The easy case:  compare two files.
+        push @{$ra_compare_list}, [ $files_L[0],  $files_R[0] ];
+        @{$ra_added  } = ();
+        @{$ra_removed} = ();
+        return;
+    }
+    # The harder case:  compare groups of files.  This only works
+    # if the groups are in different directories so the first step
+    # is to strip the leading directory names from file lists to
+    # make it possible to align by file names.
+    my @files_L_minus_dir = undef;
+    my @files_R_minus_dir = undef;
+
+    my $deepest_file_L    = find_deepest_file(@files_L);
+    my $deepest_file_R    = find_deepest_file(@files_R);
+#print "deepest L = [$deepest_file_L]\n";
+#print "deepest R = [$deepest_file_R]\n";
+####my ($leading_dir_L, $leading_dir_R, $success) =
+####    find_uncommon_parent_dir($deepest_file_L, $deepest_file_R);
+    my ($leading_dir_L, $leading_dir_R, $success) =
+                get_leading_dirs($rh_file_list_L, $rh_file_list_R);
+#print "leading_dir_L=[$leading_dir_L]\n";
+#print "leading_dir_R=[$leading_dir_R]\n";
+#print "success      =[$success]\n";
+    if ($success) {
+        @files_L_minus_dir = strip_leading_dir($leading_dir_L, @files_L);
+        @files_R_minus_dir = strip_leading_dir($leading_dir_R, @files_R);
+    } else {
+        # otherwise fall back to old strategy
+        @files_L_minus_dir = remove_leading_dir(@files_L);
+        @files_R_minus_dir = remove_leading_dir(@files_R);
+    }
+
+    # Keys of the stripped_X arrays are canonical file names;
+    # should overlap mostly.  Keys in stripped_L but not in
+    # stripped_R are files that have been deleted.  Keys in
+    # stripped_R but not in stripped_L have been added.
+    my %stripped_L = ();
+       @stripped_L{ @files_L_minus_dir } = @files_L;
+    my %stripped_R = ();
+       @stripped_R{ @files_R_minus_dir } = @files_R;
+
+    my %common = ();
+    foreach my $f (keys %stripped_L) {
+        $common{$f}  = 1 if     defined $stripped_R{$f};
+    }
+
+    my %deleted = ();
+    foreach my $f (keys %stripped_L) {
+        $deleted{$stripped_L{$f}} = $f unless defined $stripped_R{$f};
+    }
+
+    my %added = ();
+    foreach my $f (keys %stripped_R) {
+        $added{$stripped_R{$f}}   = $f unless defined $stripped_L{$f};
+    }
+
+#use Data::Dumper::Simple;
+#print Dumper("align_by_pairs", %stripped_L, %stripped_R);
+#print Dumper("align_by_pairs", %common, %added, %deleted);
+
+    foreach my $f (keys %common) {
+        push @{$ra_compare_list}, [ $stripped_L{$f},
+                                    $stripped_R{$f} ];
+    }
+    @{$ra_added   } = keys %added  ;
+    @{$ra_removed } = keys %deleted;
+
+    print "<- align_by_pairs()\n" if $opt_v > 2;
+    return;
+#print Dumper("align_by_pairs", @files_L_minus_dir, @files_R_minus_dir);
+#die;
+} # 1}}}
+sub html_header {                            # {{{1
+    my ($title , ) = @_;
+
+    print "-> html_header\n" if $opt_v > 2;
+    return
+'<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta name="GENERATOR" content="cloc http://cloc.sourceforge.net">
+' .
+"
+<!-- Created by $script v$VERSION -->
+<title>$title</title>
+" .
+'
+<style TYPE="text/css">
+<!--
+    body {
+        color: black;
+        background-color: white;
+        font-family: monospace
+    }
+
+    .whitespace {
+        background-color: gray;
+    }
+
+    .comment {
+        color: gray;
+        font-style: italic;
+    }
+
+    .clinenum {
+        color: red;
+    }
+
+    .linenum {
+        color: green;
+    }
+ -->
+</style>
+</head>
+<body>
+<pre><tt>
+';
+    print "<- html_header\n" if $opt_v > 2;
+} # 1}}}
+sub html_end {                               # {{{1
+return
+'</tt></pre>
+</body>
+</html>
+';
+} # 1}}}
+sub die_unknown_lang {                       # {{{1
+    my ($lang, $option_name) = @_;
+    die "Unknown language '$lang' used with $option_name option.  " .
+        "The command\n  $script --show-lang\n" .
+        "will print all recognized languages.  Language names are " .
+        "case sensitive.\n" ;
+} # 1}}}
+sub unicode_file {                           # {{{1
+    my $file = shift @_;
+
+    print "-> unicode_file($file)\n" if $opt_v > 2;
+    return 0 if (-s $file > 2_000_000);
+    # don't bother trying to test binary files bigger than 2 MB
+
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        warn "Unable to read $file; ignoring.\n";
+        return 0;
+    }
+    my @lines = <$IN>;
+    $IN->close;
+
+    if (unicode_to_ascii( join('', @lines) )) {
+        print "<- unicode_file()\n" if $opt_v > 2;
+        return 1;
+    } else {
+        print "<- unicode_file()\n" if $opt_v > 2;
+        return 0;
+    }
+
+} # 1}}}
+sub unicode_to_ascii {                       # {{{1
+    my $string = shift @_;
+
+    # A trivial attempt to convert UTF-16 little or big endian
+    # files into ASCII.  These files exhibit the following byte
+    # sequence:
+    #   byte   1:  255
+    #   byte   2:  254
+    #   byte   3:  ord of ASCII character
+    #   byte   4:    0
+    #   byte 3+i:  ord of ASCII character
+    #   byte 4+i:    0
+    # or
+    #   byte   1:  255
+    #   byte   2:  254
+    #   byte   3:    0
+    #   byte   4:  ord of ASCII character
+    #   byte 3+i:    0
+    #   byte 4+i:  ord of ASCII character
+
+    my $length  = length $string;
+#print "length=$length\n";
+    return '' if $length <= 3;
+    my @unicode = split(//, $string);
+
+    # check the first 100 characters for big or little endian UTF-16 encoding
+    my $max_peek = $length < 200 ? $length : 200;
+    my @view_1   = ();
+    for (my $i = 2; $i < $max_peek; $i += 2) { push @view_1, $unicode[$i] }
+    my @view_2   = ();
+    for (my $i = 3; $i < $max_peek; $i += 2) { push @view_2, $unicode[$i] }
+
+    my $points_1 = 0;
+    foreach my $C (@view_1) {
+        ++$points_1 if (32 <= ord($C) and ord($C) <= 127) or ord($C) == 13
+                                                          or ord($C) == 10
+                                                          or ord($C) ==  9;
+    }
+
+    my $points_2 = 0;
+    foreach my $C (@view_2) {
+        ++$points_2 if (32 <= ord($C) and ord($C) <= 127) or ord($C) == 13
+                                                          or ord($C) == 10
+                                                          or ord($C) ==  9;
+    }
+#print "points 1: $points_1\n";
+#print "points 2: $points_2\n";
+
+    my $offset = undef;
+    if    ($points_1 > 90) { $offset = 2; }
+    elsif ($points_2 > 90) { $offset = 3; }
+    else                   { return '' }  # neither big or little endian UTF-16
+
+    my @ascii              = ();
+    for (my $i = $offset; $i < $length; $i += 2) { push @ascii, $unicode[$i]; }
+    return join("", @ascii);
+} # 1}}}
+sub uncompress_archive_cmd {                 # {{{1
+    my ($archive_file, ) = @_;
+
+    # Wrap $archive_file in single or double quotes in the system
+    # commands below to avoid filename chicanery (including
+    # spaces in the names).
+
+    print "-> uncompress_archive_cmd($archive_file)\n" if $opt_v > 2;
+    my $extract_cmd = "";
+    my $missing     = "";
+    if ($opt_extract_with) {
+        ( $extract_cmd = $opt_extract_with ) =~ s/>FILE</$archive_file/g;
+    } elsif (basename($archive_file) eq "-" and !$ON_WINDOWS) {
+        $extract_cmd = "cat > -";
+    } elsif (($archive_file =~ /\.tar\.(gz|Z)$/ or
+              $archive_file =~ /\.tgz$/       ) and !$ON_WINDOWS)    {
+        if (external_utility_exists("gzip --version")) {
+            if (external_utility_exists("tar --version")) {
+                $extract_cmd = "gzip -dc '$archive_file' | tar xf -";
+            } else {
+                $missing = "tar";
+            }
+        } else {
+            $missing = "gzip";
+        }
+    } elsif ($archive_file =~ /\.tar\.bz2$/ and !$ON_WINDOWS)    {
+        if (external_utility_exists("bzip2 --help")) {
+            if (external_utility_exists("tar --version")) {
+                $extract_cmd = "bzip2 -dc '$archive_file' | tar xf -";
+            } else {
+                $missing = "tar";
+            }
+        } else {
+            $missing = "bzip2";
+        }
+    } elsif ($archive_file =~ /\.tar\.xz$/ and !$ON_WINDOWS)    {
+        if (external_utility_exists("unxz --version")) {
+            if (external_utility_exists("tar --version")) {
+                $extract_cmd = "unxz -dc '$archive_file' | tar xf -";
+            } else {
+                $missing = "tar";
+            }
+        } else {
+            $missing = "bzip2";
+        }
+    } elsif ($archive_file =~ /\.tar$/ and !$ON_WINDOWS)    {
+        $extract_cmd = "tar xf '$archive_file'";
+    } elsif ($archive_file =~ /\.src\.rpm$/i and !$ON_WINDOWS) {
+        if (external_utility_exists("cpio --version")) {
+            if (external_utility_exists("rpm2cpio")) {
+                $extract_cmd = "rpm2cpio '$archive_file' | cpio -i";
+            } else {
+                $missing = "rpm2cpio";
+            }
+        } else {
+            $missing = "bzip2";
+        }
+    } elsif ($archive_file =~ /\.zip$/i and !$ON_WINDOWS)    {
+        if (external_utility_exists("unzip")) {
+            $extract_cmd = "unzip -qq -d . '$archive_file'";
+        } else {
+            $missing = "unzip";
+        }
+    } elsif ($archive_file =~ /\.deb$/i and !$ON_WINDOWS)    {
+        # only useful if the .deb contains source code--most
+        # .deb files just have compiled executables
+        if (external_utility_exists("dpkg-deb")) {
+            $extract_cmd = "dpkg-deb -x '$archive_file' .";
+        } else {
+            $missing = "dpkg-deb";
+        }
+    } elsif ($ON_WINDOWS and $archive_file =~ /\.zip$/i) {
+        # zip on Windows, guess default Winzip install location
+        $extract_cmd = "";
+        my $WinZip = '"C:\\Program Files\\WinZip\\WinZip32.exe"';
+        if (external_utility_exists($WinZip)) {
+            $extract_cmd = "$WinZip -e -o \"$archive_file\" .";
+#print "trace 5 extract_cmd=[$extract_cmd]\n";
+        } else {
+#print "trace 6\n";
+            $missing = $WinZip;
+        }
+    }
+    print "<- uncompress_archive_cmd\n" if $opt_v > 2;
+    if ($missing) {
+        die "Unable to expand $archive_file because external\n",
+            "utility '$missing' is not available.\n",
+            "Another possibility is to use the --extract-with option.\n";
+    } else {
+        return $extract_cmd;
+    }
+}
+# 1}}}
+sub read_list_file {                         # {{{1
+    my ($file, ) = @_;
+
+    print "-> read_list_file($file)\n" if $opt_v > 2;
+    my $IN = new IO::File $file, "r";
+    if (!defined $IN) {
+        warn "Unable to read $file; ignoring.\n";
+        return ();
+    }
+    my @entry = ();
+    while (<$IN>) {
+        next if /^\s*$/ or /^\s*#/; # skip empty or commented lines
+        s/\cM$//;  # DOS to Unix
+        chomp;
+        push @entry, $_;
+    }
+    $IN->close;
+
+    print "<- read_list_file\n" if $opt_v > 2;
+    return @entry;
+}
+# 1}}}
+sub external_utility_exists {                # {{{1
+    my $exe = shift @_;
+
+    my $success      = 0;
+    if ($ON_WINDOWS) {
+        $success = 1 unless system $exe . ' > nul';
+    } else {
+        $success = 1 unless system $exe . ' >/dev/null 2>&1';
+        if (!$success) {
+            $success = 1 unless system "which" . " $exe" . ' >/dev/null 2>&1';
+        }
+    }
+
+    return $success;
+} # 1}}}
+sub write_xsl_file {                         # {{{1
+    my $OUT = new IO::File $CLOC_XSL, "w";
+    if (!defined $OUT) {
+        warn "Unable to write $CLOC_XSL  $!\n";
+        return;
+    }
+    my $XSL =             # <style>  </style> {{{2
+'<?xml version="1.0" encoding="US-ASCII"?>
+<!-- XLS file by Paul Schwann, January 2009.
+     Fixes for by-file and by-file-by-lang by d_uragan, November 2010.
+     -->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:output method="html"/>
+  <xsl:template match="/">
+    <html xmlns="http://www.w3.org/1999/xhtml">
+      <head>
+        <title>CLOC Results</title>
+      </head>
+      <style type="text/css">
+        table {
+          table-layout: auto;
+          border-collapse: collapse;
+          empty-cells: show;
+        }
+        td, th {
+          padding: 4px;
+        }
+        th {
+          background-color: #CCCCCC;
+        }
+        td {
+          text-align: center;
+        }
+        table, td, tr, th {
+          border: thin solid #999999;
+        }
+      </style>
+      <body>
+        <h3><xsl:value-of select="results/header"/></h3>
+';
+# 2}}}
+
+    if ($opt_by_file) {
+        $XSL .=             # <table> </table>{{{2
+'        <table>
+          <thead>
+            <tr>
+              <th>File</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>
+              <th>Language</th>
+';
+        $XSL .=
+'             <th>3<sup>rd</sup> Generation Equivalent</th>
+              <th>Scale</th>
+' if $opt_3;
+        $XSL .=
+'           </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="results/files/file">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>
+              <td><xsl:value-of select="@language"/></td>
+';
+        $XSL .=
+'             <td><xsl:value-of select="@factor"/></td>
+              <td><xsl:value-of select="@scaled"/></td>
+' if $opt_3;
+        $XSL .=
+'           </tr>
+          </xsl:for-each>
+            <tr>
+              <th>Total</th>
+              <th><xsl:value-of select="results/files/total/@blank"/></th>
+              <th><xsl:value-of select="results/files/total/@comment"/></th>
+              <th><xsl:value-of select="results/files/total/@code"/></th>
+              <th><xsl:value-of select="results/files/total/@language"/></th>
+';
+        $XSL .=
+'             <th><xsl:value-of select="results/files/total/@factor"/></th>
+              <th><xsl:value-of select="results/files/total/@scaled"/></th>
+' if $opt_3;
+        $XSL .=
+'           </tr>
+          </tbody>
+        </table>
+        <br/>
+';
+# 2}}}
+    }
+
+    if (!$opt_by_file or $opt_by_file_by_lang) {
+        $XSL .=             # <table> </table> {{{2
+'       <table>
+          <thead>
+            <tr>
+              <th>Language</th>
+              <th>Files</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>
+';
+        $XSL .=
+'             <th>Scale</th>
+              <th>3<sup>rd</sup> Generation Equivalent</th>
+' if $opt_3;
+        $XSL .=
+'           </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="results/languages/language">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@files_count"/></td>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>
+';
+        $XSL .=
+'             <td><xsl:value-of select="@factor"/></td>
+              <td><xsl:value-of select="@scaled"/></td>
+' if $opt_3;
+        $XSL .=
+'          </tr>
+          </xsl:for-each>
+            <tr>
+              <th>Total</th>
+              <th><xsl:value-of select="results/languages/total/@sum_files"/></th>
+              <th><xsl:value-of select="results/languages/total/@blank"/></th>
+              <th><xsl:value-of select="results/languages/total/@comment"/></th>
+              <th><xsl:value-of select="results/languages/total/@code"/></th>
+';
+        $XSL .=
+'             <th><xsl:value-of select="results/languages/total/@factor"/></th>
+              <th><xsl:value-of select="results/languages/total/@scaled"/></th>
+' if $opt_3;
+        $XSL .=
+'           </tr>
+          </tbody>
+        </table>
+';
+# 2}}}
+    }
+
+    $XSL.= <<'EO_XSL'; # {{{2
+      </body>
+    </html>
+  </xsl:template>
+</xsl:stylesheet>
+
+EO_XSL
+# 2}}}
+
+    my $XSL_DIFF = <<'EO_DIFF_XSL'; # {{{2
+<?xml version="1.0" encoding="US-ASCII"?>
+<!-- XLS file by Blazej Kroll, November 2010 -->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:output method="html"/>
+  <xsl:template match="/">
+    <html xmlns="http://www.w3.org/1999/xhtml">
+      <head>
+        <title>CLOC Results</title>
+      </head>
+      <style type="text/css">
+        table {
+          table-layout: auto;
+          border-collapse: collapse;
+          empty-cells: show;
+          margin: 1em;
+        }
+        td, th {
+          padding: 4px;
+        }
+        th {
+          background-color: #CCCCCC;
+        }
+        td {
+          text-align: center;
+        }
+        table, td, tr, th {
+          border: thin solid #999999;
+        }
+      </style>
+      <body>
+        <h3><xsl:value-of select="results/header"/></h3>
+EO_DIFF_XSL
+# 2}}}
+
+    if ($opt_by_file) {
+        $XSL_DIFF.= <<'EO_DIFF_XSL'; # {{{2
+        <table>
+          <thead>
+          <tr><th colspan="4">Same</th>
+          </tr>
+            <tr>
+              <th>File</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>
+            </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="diff_results/same/file">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>
+            </tr>
+          </xsl:for-each>
+          </tbody>
+        </table>
+
+        <table>
+          <thead>
+          <tr><th colspan="4">Modified</th>
+          </tr>
+            <tr>
+              <th>File</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>
+            </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="diff_results/modified/file">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>
+            </tr>
+          </xsl:for-each>
+          </tbody>
+        </table>
+
+        <table>
+          <thead>
+          <tr><th colspan="4">Added</th>
+          </tr>
+            <tr>
+              <th>File</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>
+            </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="diff_results/added/file">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>
+            </tr>
+          </xsl:for-each>
+          </tbody>
+        </table>
+
+        <table>
+          <thead>
+          <tr><th colspan="4">Removed</th>
+          </tr>
+            <tr>
+              <th>File</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>
+            </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="diff_results/removed/file">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>
+            </tr>
+          </xsl:for-each>
+          </tbody>
+        </table>
+EO_DIFF_XSL
+# 2}}}
+    }
+
+    if (!$opt_by_file or $opt_by_file_by_lang) {
+        $XSL_DIFF.= <<'EO_DIFF_XSL'; # {{{2
+        <table>
+          <thead>
+          <tr><th colspan="5">Same</th>
+          </tr>
+            <tr>
+              <th>Language</th>
+              <th>Files</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>
+            </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="diff_results/same/language">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@files_count"/></td>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>
+            </tr>
+          </xsl:for-each>
+          </tbody>
+        </table>
+
+        <table>
+          <thead>
+          <tr><th colspan="5">Modified</th>
+          </tr>
+            <tr>
+              <th>Language</th>
+              <th>Files</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>
+            </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="diff_results/modified/language">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@files_count"/></td>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>
+            </tr>
+          </xsl:for-each>
+          </tbody>
+        </table>
+
+        <table>
+          <thead>
+          <tr><th colspan="5">Added</th>
+          </tr>
+            <tr>
+              <th>Language</th>
+              <th>Files</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>
+            </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="diff_results/added/language">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@files_count"/></td>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>
+            </tr>
+          </xsl:for-each>
+          </tbody>
+        </table>
+
+        <table>
+          <thead>
+          <tr><th colspan="5">Removed</th>
+          </tr>
+            <tr>
+              <th>Language</th>
+              <th>Files</th>
+              <th>Blank</th>
+              <th>Comment</th>
+              <th>Code</th>
+            </tr>
+          </thead>
+          <tbody>
+          <xsl:for-each select="diff_results/removed/language">
+            <tr>
+              <th><xsl:value-of select="@name"/></th>
+              <td><xsl:value-of select="@files_count"/></td>
+              <td><xsl:value-of select="@blank"/></td>
+              <td><xsl:value-of select="@comment"/></td>
+              <td><xsl:value-of select="@code"/></td>
+            </tr>
+          </xsl:for-each>
+          </tbody>
+        </table>
+EO_DIFF_XSL
+# 2}}}
+
+    }
+
+    $XSL_DIFF.= <<'EO_DIFF_XSL'; # {{{2
+      </body>
+    </html>
+  </xsl:template>
+</xsl:stylesheet>
+EO_DIFF_XSL
+# 2}}}
+    if ($opt_diff) {
+        print $OUT $XSL_DIFF;
+    } else {
+        print $OUT $XSL;
+    }
+    $OUT->close();
+} # 1}}}
+sub normalize_file_names {                   # {{{1
+    my (@files, ) = @_;
+
+    # Returns a hash of file names reduced to a canonical form
+    # (fully qualified file names, all path separators changed to /,
+    # Windows file names lowercased).  Hash values are the original
+    # file name.
+
+    my %normalized = ();
+    foreach my $F (@files) {
+        my $F_norm = $F;
+        if ($ON_WINDOWS) {
+            $F_norm = lc $F_norm; # for case insensitive file name comparisons
+            $F_norm =~ s{\\}{/}g; # Windows directory separators to Unix
+            $F_norm =~ s{^\./}{}g;  # remove leading ./
+            if (($F_norm !~ m{^/}) and ($F_norm !~ m{^\w:/})) {
+                # looks like a relative path; prefix with cwd
+                $F_norm = lc "$cwd/$F_norm";
+            }
+        } else {
+            $F_norm =~ s{^\./}{}g;  # remove leading ./
+            if ($F_norm !~ m{^/}) {
+                # looks like a relative path; prefix with cwd
+                $F_norm = lc "$cwd/$F_norm";
+            }
+        }
+        # Remove trailing / so it does not interfere with further regex code
+        # that does not expect it
+        $F_norm =~ s{/+$}{};
+        $normalized{ $F_norm } = $F;
+    }
+    return %normalized;
+} # 1}}}
+sub combine_diffs {                          # {{{1
+    # subroutine by Andy (awalshe@sf.net)
+    # https://sourceforge.net/tracker/?func=detail&aid=3261017&group_id=174787&atid=870625
+    my ($ra_files) = @_;
+
+    my $res   = "$URL v $VERSION\n";
+    my $dl    = '-';
+    my $width = 79;
+    # columns are in this order
+    my @cols  = ('files', 'blank', 'comment', 'code');
+    my %HoH   = ();
+
+    foreach my $file (@{$ra_files}) {
+        my $IN = new IO::File $file, "r";
+        if (!defined $IN) {
+            warn "Unable to read $file; ignoring.\n";
+            next;
+        }
+
+        my $sec;
+        while (<$IN>) {
+            chomp;
+            s/\cM$//;
+            next if /^(http|Language|-----)/;
+            if (/^[A-Za-z0-9]+/) {        # section title
+                $sec = $_;
+                chomp($sec);
+                $HoH{$sec} = () if ! exists $HoH{$sec};
+                next;
+            }
+
+            if (/^\s(same|modified|added|removed)/) {  # calculated totals row
+                my @ar = grep { $_ ne '' } split(/ /, $_);
+                chomp(@ar);
+                my $ttl = shift @ar;
+                my $i = 0;
+                foreach(@ar) {
+                    my $t = "${ttl}${dl}${cols[$i]}";
+                    $HoH{$sec}{$t} = 0 if ! exists $HoH{$sec}{$t};
+                    $HoH{$sec}{$t} += $_;
+                    $i++;
+                }
+            }
+        }
+        $IN->close;
+    }
+
+    # rows are in this order
+    my @rows = ('same', 'modified', 'added', 'removed');
+
+    $res .= sprintf("%s\n", "-" x $width);
+    $res .= sprintf("%-19s %14s %14s %14s %14s\n", 'Language',
+                    $cols[0], $cols[1], $cols[2], $cols[3]);
+    $res .= sprintf("%s\n", "-" x $width);
+
+    for my $sec ( keys %HoH ) {
+        next if $sec =~ /SUM:/;
+        $res .= "$sec\n";
+        foreach (@rows) {
+            $res .= sprintf(" %-18s %14s %14s %14s %14s\n",
+                            $_, $HoH{$sec}{"${_}${dl}${cols[0]}"},
+                                $HoH{$sec}{"${_}${dl}${cols[1]}"},
+                                $HoH{$sec}{"${_}${dl}${cols[2]}"},
+                                $HoH{$sec}{"${_}${dl}${cols[3]}"});
+        }
+    }
+    $res .= sprintf("%s\n", "-" x $width);
+    my $sec = 'SUM:';
+    $res .= "$sec\n";
+    foreach (@rows) {
+        $res .= sprintf(" %-18s %14s %14s %14s %14s\n",
+                        $_, $HoH{$sec}{"${_}${dl}${cols[0]}"},
+                            $HoH{$sec}{"${_}${dl}${cols[1]}"},
+                            $HoH{$sec}{"${_}${dl}${cols[2]}"},
+                            $HoH{$sec}{"${_}${dl}${cols[3]}"});
+    }
+    $res .= sprintf("%s\n", "-" x $width);
+
+    return $res;
+} # 1}}}
+sub get_time {                               # {{{1
+    if ($HAVE_Time_HiRes) {
+        return Time::HiRes::time();
+    } else {
+        return time();
+    }
+} # 1}}}
+sub really_is_D {                            # {{{1
+    # Ref bug 131, files ending with .d could be init.d scripts
+    # instead of D language source files.
+    my ($file        , # in
+        $rh_Err      , # in   hash of error codes
+        $raa_errors  , # out
+       ) = @_;
+    print "-> really_is_D($file)\n" if $opt_v > 2;
+    my $possible_script = peek_at_first_line($file, $rh_Err, $raa_errors);
+
+    print "<- really_is_D($file)\n" if $opt_v > 2;
+    return $possible_script;    # null string if D, otherwise a language
+} # 1}}}
+# subroutines copied from SLOCCount
+my %lex_files    = ();  # really_is_lex()
+my %expect_files = ();  # really_is_expect()
+my %php_files    = ();  # really_is_php()
+sub really_is_lex {                          # {{{1
+# Given filename, returns TRUE if its contents really is lex.
+# lex file must have "%%", "%{", and "%}".
+# In theory, a lex file doesn't need "%{" and "%}", but in practice
+# they all have them, and requiring them avoid mislabeling a
+# non-lexfile as a lex file.
+
+ my $filename = shift;
+ chomp($filename);
+
+ my $is_lex = 0;      # Value to determine.
+ my $percent_percent = 0;
+ my $percent_opencurly = 0;
+ my $percent_closecurly = 0;
+
+ # Return cached result, if available:
+ if ($lex_files{$filename}) { return $lex_files{$filename};}
+
+ open(LEX_FILE, "<$filename") ||
+      die "Can't open $filename to determine if it's lex.\n";
+ while(<LEX_FILE>) {
+   $percent_percent++     if (m/^\s*\%\%/);
+   $percent_opencurly++   if (m/^\s*\%\{/);
+   $percent_closecurly++   if (m/^\s*\%\}/);
+ }
+ close(LEX_FILE);
+
+ if ($percent_percent && $percent_opencurly && $percent_closecurly)
+          {$is_lex = 1;}
+
+ $lex_files{$filename} = $is_lex; # Store result in cache.
+
+ return $is_lex;
+} # 1}}}
+sub really_is_expect {                       # {{{1
+# Given filename, returns TRUE if its contents really are Expect.
+# Many "exp" files (such as in Apache and Mesa) are just "export" data,
+# summarizing something else # (e.g., its interface).
+# Sometimes (like in RPM) it's just misc. data.
+# Thus, we need to look at the file to determine
+# if it's really an "expect" file.
+
+ my $filename = shift;
+ chomp($filename);
+
+# The heuristic is as follows: it's Expect _IF_ it:
+# 1. has "load_lib" command and either "#" comments or {}.
+# 2. {, }, and one of: proc, if, [...], expect
+
+ my $is_expect = 0;      # Value to determine.
+
+ my $begin_brace = 0;  # Lines that begin with curly braces.
+ my $end_brace = 0;    # Lines that begin with curly braces.
+ my $load_lib = 0;     # Lines with the Load_lib command.
+ my $found_proc = 0;
+ my $found_if = 0;
+ my $found_brackets = 0;
+ my $found_expect = 0;
+ my $found_pound = 0;
+
+ # Return cached result, if available:
+ if ($expect_files{$filename}) { return expect_files{$filename};}
+
+ open(EXPECT_FILE, "<$filename") ||
+      die "Can't open $filename to determine if it's expect.\n";
+ while(<EXPECT_FILE>) {
+
+   if (m/#/) {$found_pound++; s/#.*//;}
+   if (m/^\s*\{/) { $begin_brace++;}
+   if (m/\{\s*$/) { $begin_brace++;}
+   if (m/^\s*\}/) { $end_brace++;}
+   if (m/\};?\s*$/) { $end_brace++;}
+   if (m/^\s*load_lib\s+\S/) { $load_lib++;}
+   if (m/^\s*proc\s/) { $found_proc++;}
+   if (m/^\s*if\s/) { $found_if++;}
+   if (m/\[.*\]/) { $found_brackets++;}
+   if (m/^\s*expect\s/) { $found_expect++;}
+ }
+ close(EXPECT_FILE);
+
+ if ($load_lib && ($found_pound || ($begin_brace && $end_brace)))
+          {$is_expect = 1;}
+ if ( $begin_brace && $end_brace &&
+      ($found_proc || $found_if || $found_brackets || $found_expect))
+          {$is_expect = 1;}
+
+ $expect_files{$filename} = $is_expect; # Store result in cache.
+
+ return $is_expect;
+} # 1}}}
+sub really_is_pascal {                       # {{{1
+# Given filename, returns TRUE if its contents really are Pascal.
+
+# This isn't as obvious as it seems.
+# Many ".p" files are Perl files
+# (such as /usr/src/redhat/BUILD/ispell-3.1/dicts/czech/glob.p),
+# others are C extractions
+# (such as /usr/src/redhat/BUILD/linux/include/linux/umsdos_fs.p
+# and some files in linuxconf).
+# However, test files in "p2c" really are Pascal, for example.
+
+# Note that /usr/src/redhat/BUILD/ucd-snmp-4.1.1/ov/bitmaps/UCD.20.p
+# is actually C code.  The heuristics determine that they're not Pascal,
+# but because it ends in ".p" it's not counted as C code either.
+# I believe this is actually correct behavior, because frankly it
+# looks like it's automatically generated (it's a bitmap expressed as code).
+# Rather than guess otherwise, we don't include it in a list of
+# source files.  Let's face it, someone who creates C files ending in ".p"
+# and expects them to be counted by default as C files in SLOCCount needs
+# their head examined.  I suggest examining their head
+# with a sucker rod (see syslogd(8) for more on sucker rods).
+
+# This heuristic counts as Pascal such files such as:
+#  /usr/src/redhat/BUILD/teTeX-1.0/texk/web2c/tangleboot.p
+# Which is hand-generated.  We don't count woven documents now anyway,
+# so this is justifiable.
+
+ my $filename = shift;
+ chomp($filename);
+
+# The heuristic is as follows: it's Pascal _IF_ it has all of the following
+# (ignoring {...} and (*...*) comments):
+# 1. "^..program NAME" or "^..unit NAME",
+# 2. "procedure", "function", "^..interface", or "^..implementation",
+# 3. a "begin", and
+# 4. it ends with "end.",
+#
+# Or it has all of the following:
+# 1. "^..module NAME" and
+# 2. it ends with "end.".
+#
+# Or it has all of the following:
+# 1. "^..program NAME",
+# 2. a "begin", and
+# 3. it ends with "end.".
+#
+# The "end." requirements in particular filter out non-Pascal.
+#
+# Note (jgb): this does not detect Pascal main files in fpc, like
+# fpc-1.0.4/api/test/testterminfo.pas, which does not have "program" in
+# it
+
+ my $is_pascal = 0;      # Value to determine.
+
+ my $has_program = 0;
+ my $has_unit = 0;
+ my $has_module = 0;
+ my $has_procedure_or_function = 0;
+ my $found_begin = 0;
+ my $found_terminating_end = 0;
+ my $has_begin = 0;
+
+ open(PASCAL_FILE, "<$filename") ||
+      die "Can't open $filename to determine if it's pascal.\n";
+ while(<PASCAL_FILE>) {
+   s/\{.*?\}//g;  # Ignore {...} comments on this line; imperfect, but effective.
+   s/\(\*.*?\*\)//g;  # Ignore (*...*) comments on this line; imperfect, but effective.
+   if (m/\bprogram\s+[A-Za-z]/i)  {$has_program=1;}
+   if (m/\bunit\s+[A-Za-z]/i)     {$has_unit=1;}
+   if (m/\bmodule\s+[A-Za-z]/i)   {$has_module=1;}
+   if (m/\bprocedure\b/i)         { $has_procedure_or_function = 1; }
+   if (m/\bfunction\b/i)          { $has_procedure_or_function = 1; }
+   if (m/^\s*interface\s+/i)      { $has_procedure_or_function = 1; }
+   if (m/^\s*implementation\s+/i) { $has_procedure_or_function = 1; }
+   if (m/\bbegin\b/i) { $has_begin = 1; }
+   # Originally I said:
+   # "This heuristic fails if there are multi-line comments after
+   # "end."; I haven't seen that in real Pascal programs:"
+   # But jgb found there are a good quantity of them in Debian, specially in
+   # fpc (at the end of a lot of files there is a multiline comment
+   # with the changelog for the file).
+   # Therefore, assume Pascal if "end." appears anywhere in the file.
+   if (m/end\.\s*$/i) {$found_terminating_end = 1;}
+#   elsif (m/\S/) {$found_terminating_end = 0;}
+ }
+ close(PASCAL_FILE);
+
+ # Okay, we've examined the entire file looking for clues;
+ # let's use those clues to determine if it's really Pascal:
+
+ if ( ( ($has_unit || $has_program) && $has_procedure_or_function &&
+     $has_begin && $found_terminating_end ) ||
+      ( $has_module && $found_terminating_end ) ||
+      ( $has_program && $has_begin && $found_terminating_end ) )
+          {$is_pascal = 1;}
+
+ return $is_pascal;
+} # 1}}}
+sub really_is_incpascal {                    # {{{1
+# Given filename, returns TRUE if its contents really are Pascal.
+# For .inc files (mainly seen in fpc)
+
+ my $filename = shift;
+ chomp($filename);
+
+# The heuristic is as follows: it is Pascal if any of the following:
+# 1. really_is_pascal returns true
+# 2. Any usual reserved word is found (program, unit, const, begin...)
+
+ # If the general routine for Pascal files works, we have it
+ if (really_is_pascal($filename)) {
+   return 1;
+ }
+
+ my $is_pascal = 0;      # Value to determine.
+ my $found_begin = 0;
+
+ open(PASCAL_FILE, "<$filename") ||
+      die "Can't open $filename to determine if it's pascal.\n";
+ while(<PASCAL_FILE>) {
+   s/\{.*?\}//g;  # Ignore {...} comments on this line; imperfect, but effective.
+   s/\(\*.*?\*\)//g;  # Ignore (*...*) comments on this line; imperfect, but effective.
+   if (m/\bprogram\s+[A-Za-z]/i)  {$is_pascal=1;}
+   if (m/\bunit\s+[A-Za-z]/i)     {$is_pascal=1;}
+   if (m/\bmodule\s+[A-Za-z]/i)   {$is_pascal=1;}
+   if (m/\bprocedure\b/i)         {$is_pascal = 1; }
+   if (m/\bfunction\b/i)          {$is_pascal = 1; }
+   if (m/^\s*interface\s+/i)      {$is_pascal = 1; }
+   if (m/^\s*implementation\s+/i) {$is_pascal = 1; }
+   if (m/\bconstant\s+/i)         {$is_pascal=1;}
+   if (m/\bbegin\b/i) { $found_begin = 1; }
+   if ((m/end\.\s*$/i) && ($found_begin = 1)) {$is_pascal = 1;}
+   if ($is_pascal) {
+     last;
+   }
+ }
+
+ close(PASCAL_FILE);
+ return $is_pascal;
+} # 1}}}
+sub really_is_php {                          # {{{1
+# Given filename, returns TRUE if its contents really is php.
+
+ my $filename = shift;
+ chomp($filename);
+
+ my $is_php = 0;      # Value to determine.
+ # Need to find a matching pair of surrounds, with ending after beginning:
+ my $normal_surround = 0;  # <?; bit 0 = <?, bit 1 = ?>
+ my $script_surround = 0;  # <script..>; bit 0 = <script language="php">
+ my $asp_surround = 0;     # <%; bit 0 = <%, bit 1 = %>
+
+ # Return cached result, if available:
+ if ($php_files{$filename}) { return $php_files{$filename};}
+
+ open(PHP_FILE, "<$filename") ||
+      die "Can't open $filename to determine if it's php.\n";
+ while(<PHP_FILE>) {
+   if (m/\<\?/)                           { $normal_surround |= 1; }
+   if (m/\?\>/ && ($normal_surround & 1)) { $normal_surround |= 2; }
+   if (m/\<script.*language="?php"?/i)    { $script_surround |= 1; }
+   if (m/\<\/script\>/i && ($script_surround & 1)) { $script_surround |= 2; }
+   if (m/\<\%/)                           { $asp_surround |= 1; }
+   if (m/\%\>/ && ($asp_surround & 1)) { $asp_surround |= 2; }
+ }
+ close(PHP_FILE);
+
+ if ( ($normal_surround == 3) || ($script_surround == 3) ||
+      ($asp_surround == 3)) {
+   $is_php = 1;
+ }
+
+ $php_files{$filename} = $is_php; # Store result in cache.
+
+ return $is_php;
+} # 1}}}
+__END__
+mode values (stat $item)[2]
+       Unix    Windows
+file:  33188   33206
+dir :  16832   16895
+link:  33261   33206
+pipe:   4544    null
Index: /issm/branches/trunk-dlcheng-ASE/scripts/cloc2html.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/cloc2html.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/cloc2html.py	(revision 27955)
@@ -0,0 +1,107 @@
+#!/usr/bin/env python
+# -*- coding: ISO-8859-1 -*-
+#inspired from http://qwiki.stanford.edu/images/d/df/Latex2qwiki.txt
+import re
+import os
+
+ISSM_DIR = os.getenv('ISSM_DIR')
+if(not ISSM_DIR):
+    raise NameError('ISSM_DIR undefined')
+
+infile = open('temp', 'r')
+outfile = open('temp.html', 'w')
+file_text = infile.readlines()
+
+#write header
+outfile.write('<table width="600px" rules=none border=0 bordercolor="#000000" cellpadding="3" align="center" style="border-collapse:collapse;">\n')
+style_r = 'style="text-align:right;"'
+style_c = 'style="text-align:center;"'
+style_l = 'style="text-align:left;"'
+color = ' bgcolor=#7AA9DD '  #dark blue
+color1 = ' bgcolor=#C6E2FF '  #light blue
+color2 = ' bgcolor=#FFFFFF '  #white
+
+count = 0
+toggle = 0
+for i in range(len(file_text)):
+
+    #Get current lines except if first line
+    if(i == 0):
+        continue
+    line = file_text[i]
+
+    pattern = r"----------------"
+    if (re.search(pattern, line)):
+        count += 1
+        continue
+
+    if(count == 1):
+        mystr = ' <tr> \n'
+        column = 1
+        for i in line.split():
+            if(column == 1):
+                mystr += '<th ' + color + style_l + '>' + i + '</th>'
+                column += 1
+            else:
+                mystr += '<th ' + color + style_r + '>' + i + '</th>'
+        mystr += '<th ' + color + style_r + '>Total</th>\n</th>\n'
+    elif(count == 2):
+        total = 0
+        column = 1
+        if(toggle):
+            mystr = '<tr>\n<th ' + color1 + style_l + '>'
+        else:
+            mystr = '<tr>\n<th ' + color2 + style_l + '>'
+        for i in line.split():
+            if(not i.isdigit() or (i.isdigit and int(i) == 77) or (i.isdigit and int(i) == 90)):
+                mystr += ' ' + i + ' '
+            else:
+                if(column == 1):
+                    mystr += '</th>'
+                if(column >= 2):
+                    total += int(i)
+                if(toggle):
+                    mystr += '<td ' + color1 + style_r + '>' + i + '</td>'
+                else:
+                    mystr += '<td ' + color2 + style_r + '>' + i + '</td>'
+                column += 1
+        if(toggle):
+            mystr += '<td ' + color1 + style_r + '>' + str(total) + '</td>\n</tr>\n'
+        else:
+            mystr += '<td ' + color2 + style_r + '>' + str(total) + '</td>\n</tr>\n'
+        toggle = 1 - toggle
+    elif(count == 3):
+        total = 0
+        column = 1
+        if(toggle):
+            mystr = '<tr>\n<th ' + color1 + style_l + '>'
+        else:
+            mystr = '<tr>\n<th ' + color2 + style_l + '>'
+        for i in line.split():
+            if(not i.isdigit()):
+                mystr += ' ' + i + ' '
+            else:
+                if(column == 1):
+                    mystr += '</th>'
+                if(column >= 2):
+                    total += int(i)
+                if(toggle):
+                    mystr += '<td ' + color1 + style_r + '>' + i + '</td>'
+                else:
+                    mystr += '<td ' + color2 + style_r + '>' + i + '</td>'
+                column += 1
+        if(toggle):
+            mystr += '<td ' + color1 + style_r + '>' + str(total) + '</td>\n</tr>\n'
+        else:
+            mystr += '<td ' + color2 + style_r + '>' + str(total) + '</td>\n</tr>\n'
+    else:
+        continue
+
+    outfile.write(mystr)
+
+#write header
+outfile.write(' </table>\n')
+
+#close all files
+infile.close()
+outfile.close()
Index: /issm/branches/trunk-dlcheng-ASE/scripts/convertmatlabclasses.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/convertmatlabclasses.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/convertmatlabclasses.py	(revision 27955)
@@ -0,0 +1,179 @@
+#!/usr/bin/env python
+# -*- coding: ISO-8859-1 -*-
+import sys
+import re
+import os
+import shutil
+
+#get names of all directories to process
+ISSM_DIR = os.getenv('ISSM_DIR')
+if(not ISSM_DIR):
+    raise NameError('ISSM_DIR undefined')
+newclassesdir = ISSM_DIR + '/src/m/classes/'
+oldclassesdir = ISSM_DIR + '/src/m/oldclasses/'
+
+#make new directory
+if(os.path.exists(oldclassesdir)):
+    shutil.rmtree(oldclassesdir)
+os.mkdir(oldclassesdir)
+
+#prepare subsref and subsasgn
+#{{{
+subsasgntext = r'''
+function obj = subsasgn(obj, index, val)
+obj = builtin('subsasgn', obj, index, val)
+'''
+subsreftext = r'''
+function obj = subsref(obj, index)
+obj = builtin('subsref', obj, index)
+'''
+#}}}
+
+#copy all files from new classes
+files = os.listdir(newclassesdir)
+for filename in files:
+    newpath = newclassesdir + filename
+    oldpath = oldclassesdir + filename
+    if(filename == ".svn"):
+        continue
+    if(filename.endswith(".m")):
+        shutil.copy(newpath, oldpath)
+    if(filename.startswith("@")):
+        shutil.copytree(newpath, oldpath)
+    if(filename == "clusters"):
+        files2 = os.listdir(newpath)
+        for filename2 in files2:
+            if(filename2 == ".svn"):
+                continue
+            newpath = newclassesdir + filename + '/' + filename2
+            oldpath = oldclassesdir + filename2
+            shutil.copy(newpath, oldpath)
+    if(filename == "model"):
+        shutil.copy(newpath + '/model.m', oldclassesdir + 'model.m')
+    if(filename == "qmu"):
+        shutil.copytree(newpath + '/@dakota_method', oldclassesdir + '/@dakota_method')
+        files2 = os.listdir(newpath)
+        for filename2 in files2:
+            if(filename2 == ".svn"):
+                continue
+            if(filename2 == "@dakota_method"):
+                continue
+            newpath = newclassesdir + filename + '/' + filename2
+            oldpath = oldclassesdir + filename2
+            shutil.copy(newpath, oldpath)
+
+files = os.listdir(oldclassesdir)
+#prepare properties
+#{{{
+propertiesfile = open(oldclassesdir + '/properties.m', 'w')
+propertiesfile.write("function out = properties(classname)\n")
+#}}}
+for file in files:
+    if(not file.endswith(".m")):
+        continue
+    print("converting " + file + " from new to old Matlab class definition...")
+    infile = open(oldclassesdir + file, 'r')
+    classname = (re.compile(r"\.m")).sub("", file)
+    dirname = oldclassesdir + '/@' + classname
+    step = 0
+    properties = ""
+
+    #create directory
+    if(not os.path.exists(dirname)):
+        #print "Directory " + dirname + " does not exist, creating..."
+        os.mkdir(dirname)
+
+    #Process file
+    file_text = infile.readlines()
+    for i in range(len(file_text) - 2):
+        mystr = file_text[i]
+
+        if("properties" in mystr and step == 0):
+            step = 1
+            continue
+        if("methods" in mystr and step == 1):
+            step = 2
+            continue
+        if("function " in mystr and step == 2):
+            step += 1
+
+        if(step == 1):
+            if("end" in mystr):
+                continue
+            property = mystr.lstrip()
+            property = re.sub(r"%. * $", "", property)
+            property = re.sub(r"\n", "", property)
+            if(len(property)):
+                properties = properties + 'OBJ' + property + ";\n"
+
+        if("function " in mystr):
+
+            #close previous file
+            if(step > 3):
+                outfile.close()
+
+            #get function name
+            mystr2 = (re.compile("=")).sub(" ", mystr)  #replaces equal signs by blank space
+            mystr2 = (re.compile(r"\(")).sub(" (", mystr2)  #add blank spaces before and after (
+            list = mystr2.split()
+            for j in range(len(list)):
+                word = list[j]
+                if(word == '('):
+                    break
+            objectname = list[1]
+            functionname = list[j - 1]
+            objectname = re.sub(r"\[", "", objectname)
+            objectname = re.sub(r"\]", "", objectname)
+            if(functionname == "disp"):
+                functionname = "display"
+            outfile = open(dirname + '/' + functionname + '.m', 'w')
+
+            #deal with constructor
+            if(functionname == classname):
+
+                properties2 = re.sub("OBJ", objectname + '.', properties)
+                #write function declaration
+                outfile.write(mystr)
+                #write properties
+                outfile.write(properties2)
+                #write set class
+                outfile.write(objectname + "=class(" + objectname + ", '" + classname + "');\n")
+
+                #update properties list
+                properties2 = properties2.split('\n')
+                propertiesfile2 = open(dirname + '/properties.m', 'w')
+                propertiesfile2.write("function out = properties(obj), \n")
+                propertiesfile2.write('\tout = cell(' + str(len(properties2) - 1) + ', 1);\n')
+                propertiesfile.write("if strcmp(classname, '" + classname + "'), \n")
+                propertiesfile.write('\tout = cell(' + str(len(properties2) - 1) + ', 1);\n')
+                for j in range(len(properties2) - 1):
+                    property = re.sub(r"=. * $", "", properties2[j])
+                    property = property.strip()
+                    property = re.sub(objectname + '.', "", property)
+                    propertiesfile.write('\tout{' + str(j + 1) + "} = '" + property + "';\n")
+                    propertiesfile2.write('\tout{' + str(j + 1) + "} = '" + property + "';\n")
+                propertiesfile.write('end\n')
+                continue
+
+        #write file
+        if(step > 2):
+            outfile.write(mystr)
+
+    #close all files and delete m file
+    if(step > 3):
+        outfile.close()
+    infile.close()
+    os.remove(oldclassesdir + file)
+
+    #Add subsref and subsasgn
+    outfile = open(dirname + '/subsasgn.m', 'w')
+    outfile.write(subsasgntext)
+    outfile.close()
+    outfile = open(dirname + '/subsref.m', 'w')
+    outfile.write(subsreftext)
+    outfile.close()
+
+
+#close all files
+propertiesfile.close()
+#shutil.rmtree(newclassesdir)
Index: /issm/branches/trunk-dlcheng-ASE/scripts/cppcheck.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/cppcheck.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/cppcheck.sh	(revision 27955)
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+#comprehensive check, except unusedFunction
+#cppcheck -j 32 --include=$ISSM_DIR/config.h -DHAVE_CONFIG_H -D_HAVE_ADOLC_ -D_HAVE_DAKOTA_ -D_HAVE_JAVASCRIPT_ --enable=warning --enable=style --enable=performance --enable=portability --enable=information --enable=missingInclude $ISSM_DIR/src/c 2> CPPCHECK.err
+
+#unused function only (slow)
+cppcheck --include=$ISSM_DIR/config.h -DHAVE_CONFIG_H -D_HAVE_ADOLC_ -D_HAVE_DAKOTA_ -D_HAVE_JAVASCRIPT_ --enable=unusedFunction $ISSM_DIR/src 2> CPPCHECK.err
Index: /issm/branches/trunk-dlcheng-ASE/scripts/devpath.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/devpath.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/devpath.py	(revision 27955)
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+
+# NOTE: This script is a stripped-down version of
+#       $ISSM_DIR/src/m/dev/devpath.py and is intended only for loading ISSM in 
+#       order to test our distributable packages. It assumes the following is 
+#       set before $ISSM_DIR/test/NightlyRun/runme.py is called, 
+#
+#           export ISSM_DIR=</path/to/ISSM>
+#           export PATH="${PATH}:${ISSM_DIR}/bin:${ISSM_DIR}/scripts"
+#           export PYTHONPATH="${ISSM_DIR}/scripts"
+#           export PYTHONSTARTUP="${PYTHONPATH}/devpath.py"
+#           export PYTHONUNBUFFERED=1
+#
+
+import os
+import sys
+
+ISSM_DIR = os.getenv('ISSM_DIR')
+sys.path.append(ISSM_DIR + '/bin')
+sys.path.append(ISSM_DIR + '/lib')
+
+from issmversion import issmversion
Index: /issm/branches/trunk-dlcheng-ASE/scripts/getloc.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/getloc.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/getloc.sh	(revision 27955)
@@ -0,0 +1,11 @@
+#!/bin/bash
+#get number of lines of code
+cloc $ISSM_DIR/src $ISSM_DIR/m4 --exclude-dir=.svn --exclude-dir=ad  --exclude-ext=exp --exclude-lang=make --out=temp --force-lang="MATLAB",m
+cat temp
+./cloc2html.py
+rm temp
+
+cat $ISSM_DIR/src/dox/issm.dox | sed '/<table/,//d' > input1
+cat $ISSM_DIR/src/dox/issm.dox | sed '1,/<\/table>/d' > input2
+cat input1 temp.html input2 > $ISSM_DIR/src/dox/issm.dox
+#rm input1 input2 temp.html
Index: /issm/branches/trunk-dlcheng-ASE/scripts/historyISSM.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/historyISSM.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/historyISSM.m	(revision 27955)
@@ -0,0 +1,7 @@
+!vim runme.m
+runme('id',[101]);
+md.mesh.numberofelements
+md=solve(md,TransientSolutionEnum);
+md=solve(md,StressbalanceSolutionEnum);
+plotmodel(md,'data',md.results.StressbalanceSolution.Vel)
+plotmodel(md,'data',)
Index: /issm/branches/trunk-dlcheng-ASE/scripts/intel-compile.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/intel-compile.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/intel-compile.sh	(revision 27955)
@@ -0,0 +1,21 @@
+#!/bin/bash
+#Why don't we just type make? (shouldn't automake have taken care of this?)
+#The problem is the /Fe option from the intel compiler, which we weren't able to 
+#get automake to recognize. End result is that every file compiled is not named libISSM_a-name, 
+#but just name.  This makes the creation of libISSM.a impossible, as none of its objects 
+#can be found with the correct name. 
+#As a fix, we rename the objects, and then link.
+
+#First compile.
+#make
+
+#Then change the names
+list=`ls *.obj | grep -v libISSM_a`
+for i in `echo $list`
+do
+	mv $i libISSM_a-$i
+done
+
+#Now create the library out the .obj files
+rm -rf libISSM.a
+lib.exe /out:libISSM.a *.obj
Index: /issm/branches/trunk-dlcheng-ASE/scripts/issmconfiguration.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/issmconfiguration.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/issmconfiguration.sh	(revision 27955)
@@ -0,0 +1,80 @@
+#/bin/bash
+#This script picks up whatever configuration files exists in trunk/configs, 
+#and offers the user the choice to reconfigure the ISSM compilation using
+#a given configuration file: 
+
+#keep track of present directory: 
+presendir=`pwd`
+
+if test -d "$ISSM_DIR/configs" ; then
+	cd $ISSM_DIR/configs
+	LIST=`ls`
+	
+	if test -d "$JPL_SVN/usr/$USER/configs"; then
+		cd $JPL_SVN/usr/$USER/configs 
+		LIST2=`ls`
+	fi
+	
+	#print choices
+	COUNT=0;
+	printf 'ISSM wide configurations\n'
+	for STEP in $LIST
+	do
+		let COUNT=$COUNT+1
+		printf '%3i: %s\n' $COUNT $STEP
+	done
+	printf 'Personal configuration\n'
+	for STEP in $LIST2
+	do
+		let COUNT=$COUNT+1
+		printf '%3i: %s\n' $COUNT $STEP
+	done
+
+	echo -n "Configuration choice: "
+	read choice 
+
+	#Now go backto the list and retrieve the name of the configuration file: 
+	COUNT=0;
+	for STEP in $LIST
+	do
+		let COUNT=$COUNT+1
+		if [[ $COUNT == $choice ]]; then
+			configurename=$STEP
+		fi
+	done
+	for STEP in $LIST2
+	do
+		let COUNT=$COUNT+1
+		if [[ $COUNT == $choice ]]; then
+			configurename=$STEP
+		fi
+	done
+
+	#Now go ahead and configure: 
+	echo ""
+	echo "Configuring ISSM with following configs: $configurename"
+	echo ""
+
+	cd $ISSM_DIR 
+
+	#at this point, was a cleanup of the archive requested? 
+	if [ "$1" == "clean" ]; 
+	then 
+		make uninstall && make distclean
+	fi
+
+	source ./scripts/automakererun.sh 
+	if [ -f configs/$configurename ]; then 
+		source configs/$configurename
+	else 
+		source $JPL_SVN/usr/$USER/configs/$configurename
+	fi
+	
+	#we are done, go back to original directory: 
+	cd $presendir
+else
+	echo "Configuration directory does not exist!"
+	exit
+fi
+
+#alias aut='a=`pwd` && cd $ISSM_DIR && ./scripts/automakererun.sh && ./configs/config-macosx64-larour-nopetsc.sh'
Index: /issm/branches/trunk-dlcheng-ASE/scripts/jpic2pdf
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/jpic2pdf	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/jpic2pdf	(revision 27955)
@@ -0,0 +1,80 @@
+#!/bin/bash
+#Transform a pst from JPicEdt to a nice pdf
+
+# Generate temporary directory ($$ = process ID)
+TMPDIR=/tmp/jpic2pdf$$
+if [ -e $TMPDIR ] ; then
+	echo "$0: Temporary directory $TMPDIR already exists." 1>&2
+	exit 1
+fi
+mkdir $TMPDIR
+HOMEDIR="`pwd`" || exit 1
+
+#get input files
+if [ $# -eq 0 ]
+then
+	echo "No input file specified, exiting..." >&2
+	exit 1
+else
+	FILES=$*
+fi
+
+#convert files
+for FILE in $FILES
+do
+	#get file name without pst extension
+	NAME=$(echo $FILE | sed -e "s/.pst//g")
+
+	#transform equation only if begin{eqution} is found
+	echo "converting $FILE"
+	#Header
+	(
+	cat << ENDHEADER
+\documentclass[11pt,a0paper,landscape]{article}
+\usepackage{color}
+\usepackage[dvips]{graphicx}
+\usepackage[left=0cm, right=0cm, top=0cm, bottom=0cm]{geometry}  % margins
+\usepackage{array, multirow}
+\usepackage{amsmath,amsfonts,amssymb,mathrsfs,bm}
+\usepackage{pstricks}
+\pagestyle{empty}
+%\pagecolor{white}
+\definecolor{darkblue}{RGB}{0,0,170}
+\definecolor{darkgreen}{RGB}{0,140,0}
+\begin{document}
+ENDHEADER
+	) > $TMPDIR/out.tex
+
+	#File
+	cat $FILE >> $TMPDIR/out.tex
+
+	#Footer
+	(
+	cat << ENDFOOTER
+\end{document}
+ENDFOOTER
+) >> $TMPDIR/out.tex
+
+	cd "$TMPDIR"
+	latex -interaction=batchmode out.tex > /dev/null
+	ls
+
+	#check that the dvi has been generated
+	if [ ! -f "./out.dvi" ]; then
+		latex  -halt-on-error -interaction=errorstopmode out.tex
+		echo "latex compilation failed, See above" 1>&2
+		exit 1
+	fi
+	cd "$HOMEDIR"
+	dvips -o $TMPDIR/out.eps -E $TMPDIR/out.dvi 2> /dev/null
+	dvipdf $TMPDIR/out.dvi $TMPDIR/out.pdf
+	mv $TMPDIR/out.pdf $NAME.pdf
+
+	echo "cropping $FILE"
+	pdfcrop -noverbose $NAME.pdf $NAME.pdf
+done
+
+# Cleanup
+rm -rf $TMPDIR
+#mv $TMPDIR .
+exit 0
Index: /issm/branches/trunk-dlcheng-ASE/scripts/mToPy.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/mToPy.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/mToPy.py	(revision 27955)
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+import sys
+import os
+import shutil
+import translateToPy
+import mToPy  # touch mToPy to assertain location of installation
+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#
+program = 'mToPy.py'
+version = '1.0'
+versionReleaseDate = '09/24/12'
+origAuthor = 'Mike Pellegrin'
+desc = '\nMain control unit for converting an matlab script file to python'
+#
+#   Note: Output will be put in the same (absolute) location as the input.
+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#                History
+#    Date        Developer           Modification
+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#    09 / 24 / 12    Michael Pellegrin    Initial Release         V1.0
+#
+#
+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+
+def convert(inputFile):
+    try:
+        if os.path.exists(inputFile + '.m') and os.path.isfile(inputFile + '.m'):
+            checkBackupOutputFile(inputFile)
+            convertMToPy(inputFile)
+        else:
+            print('Specified input file: ' + inputFile + '.m doesn\'t appear to exist')
+    finally:
+        print('')
+
+
+def convertMToPy(inputFileName):
+    translateToPy.convertToPython(inputFileName + '.m', inputFileName + '.py')
+
+
+def checkBackupOutputFile(inputFile):
+    mFile = inputFile + '.m'
+    pyFile = inputFile + '.py'
+    if os.path.exists(pyFile):
+        i = 1
+        bkupName = pyFile + str(i)
+        while os.path.exists(bkupName):
+            i += 1
+            bkupName = pyFile + str(i)
+        os.rename(pyFile, bkupName)
+
+    shutil.copyfile(mFile, pyFile)
+
+
+if __name__ == "__main__":
+    convert(sys.argv[1])
Index: /issm/branches/trunk-dlcheng-ASE/scripts/mail
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/mail	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/mail	(revision 27955)
@@ -0,0 +1,158 @@
+#!/bin/sh
+
+# This is a shell script to emulate the standard mail(1) aka mailx(1)
+# aka Mail(1) tool usage for sending emails. This shell script is not
+# a client for checking or reading mail. Also, this version of mail
+# does not touch any mail boxes.
+
+# Copyright (c) 2003 by Jeremy C. Reed
+# This software is provided "as is" without any warranties. You may
+# redistribute and use this source, with or without modification,
+# as long as you include this copyright and disclaimer.
+
+# To do: some switches to consider:
+# -v  display details of delivery
+# -E  do not send empty messages
+# -c  send carbon copies to users
+# -b  send blind carbon copies
+
+# todo: test if read can read in long enough lines
+# some shells may have limit of 256 characters per read?
+ 
+SENDMAIL=sendmail  # set to path of your sendmail(8) command
+SENDMAIL_ARGS="-t -i" # -i is so dot doesn't terminate message
+                      # -t is to get recipients from headers
+
+unset subject
+unset to_addr
+dontsendempty=0
+
+about ()
+{
+  echo "This is mailx.sh version 0.03. This is simple, shell script"
+  echo "to implement mailx(1) functionality for sending mail. It does"
+  echo "not provide an interface for checking or reading email messages."
+  echo
+
+  # maybe do this without forking a command
+  mailname=$( basename $0 )
+
+  if [ -n "$1" ] ; then
+    echo "$mailname: $1" 1>&2
+  fi
+
+  echo "Usage: $mailname [-s subject] to-addr ..." 1>&2
+
+  if [ -n "$1" ] ; then
+    if [ -n "$2" ] ; then 
+      exit $2
+    fi
+    exit 100
+  fi
+
+  exit 0
+}
+
+if [ $# -eq 0 ] ; then
+  about "Sorry, this is not a mail reader." 1
+fi
+
+while [ -n "$1" ] ; do
+  case "$1" in
+  -*)
+      if [ "$1" = "-s" ] ; then
+        if [ -z "$2" ] ; then
+          about "The \"-s\" option requires an argument." 4
+        fi
+        subject="$2"
+        shift
+      elif [ "$1" = "-u" -o "$1" = "-f" ] ; then
+        about "Sorry, this is not a mail reader." 2
+#      elif [ "$1" = "-E" ] ; then
+# this probably needs to have entire message saved to temp file first
+#        dontsendempty=1
+      else
+#        about "unknown option -- $1" 3
+        about "Switch \"$1\" is not implemented." 3
+      fi
+      ;;
+  *)  if [ -n "$to_addr" ] ; then
+        to_addr="${to_addr}, $1"
+      else
+        to_addr="$1"
+      fi
+      ;;
+  esac
+  shift
+done
+
+
+if [ -t 0 ] ; then   # no piped in standard input
+  if [ -z "$subject" ] ; then
+    echo -n "Subject: "
+    OLD_IFS=$IFS
+    IFS=""
+    read -r subject
+    IFS=$OLD_IFS
+  fi
+fi
+
+if [ -z "$to_addr" ] ; then
+  about "No recipients specified." 6
+#  about "You must specify recipients." 6
+fi
+
+# generate SMTP headers
+
+# mail(1) doesn't seem to set date
+#date +"Date: %a, %e %b %G %T %z"
+## maybe pipe though sed to get rid of extra space
+## before single digit day of month?
+
+{
+# if [ -n "$to_addr" ] ; then
+echo "To: ${to_addr}"
+# fi
+
+if [ -n "$subject" ] ; then
+  echo "Subject: $subject"
+fi
+
+# end of headers
+echo ""
+
+# output
+line_count=0
+OLD_IFS=$IFS
+IFS=""
+while read -r line ; do
+  # finish if manual, non-piped input is a period on a line by itself
+  if [ "$line" = "." -a -t 0 ] ; then
+      break
+  fi
+  echo "$line"
+  line_count=$(( line_count + 1 ))
+done
+
+IFS=$OLD_IFS
+
+if [ -t 0 ] ; then   # no piped in standard input
+  echo "EOT" 1>&2
+fi
+
+# later add switch to not send mail by exiting
+if [ "$line_count" -eq 0 ] ; then
+#  if [ "$dontsendempty" -eq 1 ] ; then
+# todo this, have it save to temp file and then send to sendmail as needed
+#    # No message, so just exit cleanly
+#    exit 0
+#  fi
+  if [ -z "$subject" ] ; then
+    echo "No message, no subject; hope that's ok" 1>&2
+  else
+    echo "Null message body; hope that's ok" 1>&2
+  fi
+fi
+
+} | $SENDMAIL $SENDMAIL_ARGS
+
Index: /issm/branches/trunk-dlcheng-ASE/scripts/matlabissm.bat
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/matlabissm.bat	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/matlabissm.bat	(revision 27955)
@@ -0,0 +1,2 @@
+@echo off
+matlab 
Index: /issm/branches/trunk-dlcheng-ASE/scripts/ol
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/ol	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/ol	(revision 27955)
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+#Get the runme file, read it, and display steps
+rm -rf orglist_temporary_file
+LIST=$(cat runme.m | grep perform | grep if | sed "s/'/ /g" | awk '{print $3}')
+
+COUNT=0;
+echo "Available steps"
+for STEP in $LIST
+do
+	let COUNT=$COUNT+1
+	printf '%3i: %s\n' $COUNT $STEP
+done
Index: /issm/branches/trunk-dlcheng-ASE/scripts/ol.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/ol.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/ol.m	(revision 27955)
@@ -0,0 +1,42 @@
+function ol(varargin)
+
+	options=pairoptions(varargin{:});
+
+	%recover steps in calling workspace:  will be used to highlight current step.
+	steps= evalin('base', 'steps');
+	
+	mmin=getfieldvalue(options,'>',1);
+	mmax=getfieldvalue(options,'<',Inf);
+
+	file=getfieldvalue(options,'file','runme.m');
+
+	%Open runme.m file and read line by line
+	fid=fopen(file,'r');
+
+	tline = fgets(fid);
+	count=1;
+	while ischar(tline)
+		tline = fgets(fid);
+		if strncmpi(tline,'if perform(org,',14),
+			lastchar = strfind(tline,')');
+			lastchar = lastchar(end)-1;
+			string=tline(17:lastchar-1);
+			if strcmpi(string,'End'),
+				return;
+			end
+			if ismember(count,steps),
+				disp(sprintf('%2i: *%s',count,tline(17:lastchar-1)));
+			else
+				if count>=mmin & count <= mmax,
+					disp(sprintf('%2i:  %s',count,tline(17:lastchar-1)));
+				else
+					%do nothing. 
+				end
+			end
+			if count>mmax,
+				break;
+			end
+			count=count+1;
+		end
+	end
+	fclose(fid);
Index: /issm/branches/trunk-dlcheng-ASE/scripts/ola.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/ola.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/ola.m	(revision 27955)
@@ -0,0 +1,40 @@
+function ola(varargin)
+
+	options=pairoptions(varargin{:});
+
+	%recover steps in calling workspace:  will be used to highlight current step.
+	steps= evalin('base', 'steps');
+	
+	r=getfieldvalue(options,'r',10);
+	range=(min(steps)-r):(max(steps)+r);
+
+	file=getfieldvalue(options,'file','runme.m');
+
+	%Open runme.m file and read line by line
+	fid=fopen(file,'r');
+
+	tline = fgets(fid);
+	count=1;
+	while ischar(tline)
+		tline = fgets(fid);
+		if strncmpi(tline,'if perform(org,',14),
+			lastchar = strfind(tline,')');
+			lastchar = lastchar(end)-1;
+			string=tline(17:lastchar-1);
+			if strcmpi(string,'End'),
+				return;
+			end
+			if ismember(count,range),
+				if ismember(count,steps),
+					disp(sprintf('%2i: *%s',count,tline(17:lastchar-1)));
+				else
+					disp(sprintf('%2i:  %s',count,tline(17:lastchar-1)));
+				end
+			end
+			if count>range(end),
+				break;
+			end
+			count=count+1;
+		end
+	end
+	fclose(fid);
Index: /issm/branches/trunk-dlcheng-ASE/scripts/ols.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/ols.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/ols.m	(revision 27955)
@@ -0,0 +1,44 @@
+function ols(varargin)
+
+	options=pairoptions(varargin{:});
+
+	range=getfieldvalue(options,'<',Inf);
+	file=getfieldvalue(options,'file','runme.m');
+
+	%Open runme.m file and read line by line
+	fid=fopen(file,'r');
+
+	tline = fgets(fid);
+	count=1;
+	strings={};
+	while ischar(tline)
+		tline = fgets(fid);
+		if strncmpi(tline,'if perform(org,',14),
+			lastchar = strfind(tline,')');
+			lastchar = lastchar(end)-1;
+			string=tline(17:lastchar-1);
+			if strcmpi(string,'End'),
+				break;
+			end
+			strings{end+1}= sprintf('%2i: %s',count,tline(16:lastchar));
+			if count>range,
+				break;
+			end
+			count=count+1;
+		end
+	end
+	fclose(fid);
+
+
+	%ok, we have our strings, split in two: 
+	nstring=length(strings);
+	split=floor(nstring/2)
+
+	for i=1:split,
+		disp(sprintf('%s     %s',pad(strings{i},60),strings{split+i}));
+	end
+	if nstring==(2*split),
+		return;
+	else
+		disp(sprintf('%s     %s',pad('',60),strings{end}));
+	end
Index: /issm/branches/trunk-dlcheng-ASE/scripts/pdfcrop.pl
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/pdfcrop.pl	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/pdfcrop.pl	(revision 27955)
@@ -0,0 +1,608 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' && eval 'exec perl -S $0 $argv:q'
+  if 0;
+use strict;
+$^W=1; # turn warning on
+#
+# pdfcrop.pl
+#
+# Copyright (C) 2002, 2004, 2005, 2008, 2009 Heiko Oberdiek.
+#
+# This program may be distributed and/or modified under the
+# conditions of the LaTeX Project Public License, either version 1.2
+# of this license or (at your option) any later version.
+# The latest version of this license is in
+#   http://www.latex-project.org/lppl.txt
+# and version 1.2 or later is part of all distributions of LaTeX
+# version 1999/12/01 or later.
+#
+# See file "README" for a list of files that belong to this project.
+#
+# This file "pdfcrop.pl" may be renamed to "pdfcrop"
+# for installation purposes.
+#
+my $file        = "pdfcrop.pl";
+my $program     = uc($&) if $file =~ /^\w+/;
+my $version     = "1.18";
+my $date        = "2009/07/18";
+my $author      = "Heiko Oberdiek";
+my $copyright   = "Copyright (c) 2002-2009 by $author.";
+#
+# Reqirements: Perl5, Ghostscript
+# History:
+#   2002/10/30 v1.0:  First release.
+#   2002/10/30 v1.1:  Option --hires added.
+#   2002/11/04 v1.2:  "nul" instead of "/dev/null" for windows.
+#   2002/11/23 v1.3:  Use of File::Spec module's "devnull" call.
+#   2002/11/29 v1.4:  Option --papersize added.
+#   2004/06/24 v1.5:  Clear map file entries so that pdfTeX
+#                     does not touch the fonts.
+#   2004/06/26 v1.6:  Use mgs.exe instead of gswin32c.exe for MIKTEX.
+#   2005/03/11 v1.7:  Support of spaces in file names
+#                     (open("-|") is used for ghostscript call).
+#   2008/01/09 v1.8:  Fix for moving the temporary file to the output
+#                     file across file system boundaries.
+#   2008/04/05 v1.9:  Options --resolution and --bbox added.
+#   2008/07/16 v1.10: Support for XeTeX added with new options
+#                     --pdftex, --xetex, and --xetexcmd.
+#   2008/07/22 v1.11: Workaround for open("-|").
+#   2008/07/23 v1.12: Workarounds for the workaround (error detection, ...).
+#   2008/07/24 v1.13: open("-|")/workaround removed.
+#                     Input files with unsafe file names are linked/copied
+#                     to temporary file with safe file name.
+#   2008/09/12 v1.14: Error detection for invalid Bounding Boxes.
+#   2009/07/14 v1.15: Fix for negative coordinates in Bounding Boxes
+#                     (David Menestrina).
+#   2009/07/16 v1.16: Security fixes:
+#                     * -dSAFER added for Ghostscript,
+#                     * -no-shell-escape added for pdfTeX/XeTeX.
+#   2009/07/17 v1.17: Security fixes:
+#                     * Backticks and whitespace are forbidden
+#                       for options --(gs|pdftex|xetex)cmd.
+#                     * Validation of options --papersize and --resolution.
+#   2009/07/18 v1.18: * Restricted mode added.
+#                     * Option --version added.
+
+### program identification
+my $title = "$program $version, $date - $copyright\n";
+
+### error strings
+my $Error = "!!! Error:"; # error prefix
+
+### string constants for Ghostscript run
+# get Ghostscript command name
+my $GS = "gs";
+$GS = "gs386"    if $^O =~ /dos/i;
+$GS = "gsos2"    if $^O =~ /os2/i;
+$GS = "gswin32c" if $^O =~ /mswin32/i;
+$GS = "gswin32c" if $^O =~ /cygwin/i;
+$GS = "mgs"      if defined($ENV{"TEXSYSTEM"}) and
+                    $ENV{"TEXSYSTEM"} =~ /miktex/i;
+
+# Windows detection (no SIGHUP)
+my $Win = 0;
+$Win = 1 if $^O =~ /mswin32/i;
+$Win = 1 if $^O =~ /cygwin/i;
+
+# restricted mode
+my $restricted = 0;
+if ($0 =~ /rpdfcrop/ or $0 =~ /restricted/) {
+    $restricted = 1;
+}
+
+# "null" device
+use File::Spec::Functions qw(devnull);
+my $null = devnull();
+
+### variables
+my $inputfile   = "";
+my $outputfile  = "";
+my $tmp = "tmp-\L$program\E-$$";
+
+### paper sizes
+
+my @papersizes = qw[
+  11x17 ledger legal letter lettersmall
+  archE archD archC archB archA
+  a0 a1 a2 a3 a4 a4small a5 a6 a7 a8 a9 a10
+  isob0 isob1 isob2 isob3 isob4 isob5 isob6
+  c0 c1 c2 c3 c4 c5 c6
+  jisb0 jisb1 jisb2 jisb3 jisb4 jisb5 jisb6
+  b0 b1 b2 b3 b4 b5
+  flsa flse halfletter
+];
+my %papersizes;
+foreach (@papersizes) {
+    $papersizes{$_} = 1;
+}
+
+### option variables
+my @bool = ("false", "true");
+$::opt_version    = 0;
+$::opt_help       = 0;
+$::opt_debug      = 0;
+$::opt_verbose    = 0;
+$::opt_gscmd      = $GS;
+$::opt_pdftexcmd  = "pdftex";
+$::opt_xetexcmd   = "xetex";
+$::opt_tex        = "pdftex";
+$::opt_margins    = "0 0 0 0";
+$::opt_clip       = 0;
+$::opt_hires      = 0;
+$::opt_papersize  = "";
+$::opt_resolution = "";
+$::opt_bbox       = "";
+
+my $usage = <<"END_OF_USAGE";
+${title}Syntax:   \L$program\E [options] <input[.pdf]> [output file]
+Function: Margins are calculated and removed for each page in the file.
+Options:                                                    (defaults:)
+  --help              print usage
+  --version           print version number
+  --(no)verbose       verbose printing                      ($bool[$::opt_verbose])
+  --(no)debug         debug informations                    ($bool[$::opt_debug])
+  --gscmd <name>      call of ghostscript                   ($::opt_gscmd)
+  --pdftex | --xetex  use pdfTeX | use XeTeX                ($::opt_tex)
+  --pdftexcmd <name>  call of pdfTeX                        ($::opt_pdftexcmd)
+  --xetexcmd <name>   call of XeTeX                         ($::opt_xetexcmd)
+  --margins "<left> <top> <right> <bottom>"                 ($::opt_margins)
+                      add extra margins, unit is bp. If only one number is
+                      given, then it is used for all margins, in the case
+                      of two numbers they are also used for right and bottom.
+  --(no)clip          clipping support, if margins are set  ($bool[$::opt_clip])
+                      (not available for --xetex)
+  --(no)hires         using `%%HiResBoundingBox'            ($bool[$::opt_hires])
+                      instead of `%%BoundingBox'
+Expert options:
+  --restricted        turn on restricted mode               ($bool[$restricted])
+  --papersize <foo>   parameter for gs's -sPAPERSIZE=<foo>,
+                      use only with older gs versions <7.32 ($::opt_papersize)
+  --resolution <xres>x<yres>                                ()
+  --resolution <res>  pass argument to ghostscript's option -r
+                      Example: --resolution 72
+  --bbox "<left> <top> <right> <bottom>"                    ()
+                      override bounding box found by ghostscript
+Examples:
+  \L$program\E --margins 10 input.pdf output.pdf
+  \L$program\E --margins '5 10 5 20' --clip input.pdf output.pdf
+In case of errors:
+  Try option --verbose first to get more information.
+In case of bugs:
+  Please, use option --debug for bug reports.
+END_OF_USAGE
+
+### process options
+my @OrgArgv = @ARGV;
+use Getopt::Long;
+GetOptions(
+  "help!",
+  "version!",
+  "debug!",
+  "verbose!",
+  "gscmd=s",
+  "pdftexcmd=s",
+  "xetexcmd=s",
+  "pdftex" => sub { $::opt_tex = 'pdftex'; },
+  "xetex"  => sub { $::opt_tex = 'xetex'; },
+  "margins=s",
+  "clip!",
+  "hires!",
+  "papersize=s",
+  "resolution=s",
+  "bbox=s",
+  "restricted" => sub { $restricted = 1; },
+) or die $usage;
+!$::opt_help or die $usage;
+
+if ($::opt_version) {
+    print "$version\n";
+    exit(0);
+}
+
+$::opt_verbose = 1 if $::opt_debug;
+
+@ARGV >= 1 or die $usage;
+
+print $title;
+
+if ($::opt_bbox) {
+    $::opt_bbox =~ s/^\s+//;
+    $::opt_bbox =~ s/\s+$//;
+    $::opt_bbox =~ s/\s+/ /;
+    if ($::opt_bbox =~ /^-?\d*\.?\d+ -?\d*\.?\d+ -?\d*\.?\d+ -?\d*\.?\d+$/) {
+        print "* Explicite Bounding Box: $::opt_bbox\n" if $::opt_debug;
+    }
+    else {
+        die "$Error Parse error (option --bbox \"$::opt_bbox\")!\n";
+    }
+}
+
+@ARGV <= 2 or die "$Error Too many files!\n";
+
+### input file
+$inputfile = shift @ARGV;
+
+if (! -f $inputfile) {
+    if (-f "$inputfile.pdf") {
+        $inputfile .= ".pdf";
+    }
+    else {
+        die "$Error Input file `$inputfile' not found!\n";
+    }
+}
+
+print "* Input file: $inputfile\n" if $::opt_debug;
+
+### output file
+if (@ARGV) {
+    $outputfile = shift @ARGV;
+}
+else {
+    $outputfile = $inputfile;
+    $outputfile =~ s/\.pdf$//i;
+    $outputfile .= "-crop.pdf";
+}
+
+print "* Output file: $outputfile\n" if $::opt_debug;
+
+if (($::opt_tex eq 'xetex') && $::opt_clip) {
+    die "$Error No clipping support for XeTeX!\n";
+}
+
+### margins
+my ($llx, $lly, $urx, $ury) = (0, 0, 0, 0);
+if ($::opt_margins =~
+        /^\s*([\-\.\d]+)\s+([\-\.\d]+)\s+([\-\.\d]+)\s+([\-\.\d]+)\s*$/) {
+    ($llx, $lly, $urx, $ury) = ($1, $2, $3, $4);
+}
+else {
+    if ($::opt_margins =~ /^\s*([\-\.\d]+)\s+([\-\.\d]+)\s*$/) {
+        ($llx, $lly, $urx, $ury) = ($1, $2, $1, $2);
+    }
+    else {
+        if ($::opt_margins =~ /^\s*([\-\.\d]+)\s*$/) {
+            ($llx, $lly, $urx, $ury) = ($1, $1, $1, $1);
+        }
+        else {
+            die "$Error Parse error (option --margins)!\n";
+        }
+    }
+}
+print "* Margins: $llx $lly $urx $ury\n" if $::opt_debug;
+
+### papersize validation (security)
+if ($::opt_papersize ne '') {
+    $::opt_papersize =~ /^[0-9A-Za-z]+$/
+            or die "$Error Invalid papersize ($::opt_papersize)!\n";
+    $papersizes{$::opt_papersize}
+            or die "$Error Unknown papersize ($::opt_papersize),"
+                   . " see ghostscript's documentation for option `-r'!\n";
+}
+
+### resolution validation (security)
+if ($::opt_resolution ne '') {
+    $::opt_resolution =~ /^\d+(x\d+)?$/
+            or die "$Error Invalid resolution ($::opt_resolution),"
+                   . " see ghostscript's documentation!\n";
+}
+
+### command name validation (security)
+my %cmd = (
+    'gscmd' => \$::opt_gscmd,
+    'pdftexcmd' => \$::opt_pdftexcmd,
+    'xetexcmd' => \$::opt_xetexcmd
+);
+foreach my $cmd (keys %cmd) {
+    my $val = ${$cmd{$cmd}};
+    next unless $val;
+    $val =~ s/^\s+//;
+    $val =~ s/\s+$//;
+    next unless $val;
+    if ($val =~ /`/) {
+        die "$Error Forbidden backtick for option `--$cmd' ($val)!\n";
+    }
+    if ($val =~ /\s/) {
+        die "$Error Forbidden whitespace for option `--$cmd' ($val)!\n";
+    }
+}
+if ($restricted) {
+    if ($::opt_pdftexcmd and $::opt_pdftexcmd ne 'pdftex') {
+        die "$Error pdfTeX program name must not be changed in restricted mode!\n";
+    }
+    if ($::opt_xetexcmd and $::opt_xetexcmd ne 'xetex') {
+        die "$Error XeTeX program name must not be changed in restricted mode!\n";
+    }
+    if ($::opt_gscmd) {
+        $::opt_gscmd =~ /^(gs|mgs|gswin32c|gs386|gsos2)$/
+        or $::opt_gscmd =~ /^gs[\-_]?(\d|\d[\.-_]?\d\d)c?$/
+        or die "$Error: Invalid Ghostscript program name in restricted mode!\n";
+    }
+}
+
+### cleanup system
+my @unlink_files = ();
+my $exit_code = 1;
+sub clean {
+    print "* Cleanup\n" if $::opt_debug;
+    if ($::opt_debug) {
+        print "* Temporary files: @unlink_files\n";
+    }
+    else {
+        for (; @unlink_files>0; ) {
+            unlink shift @unlink_files;
+        }
+    }
+}
+sub cleanup {
+    clean();
+    exit($exit_code);
+}
+$SIG{'INT'} = \&cleanup;
+$SIG{'__DIE__'} = \&clean;
+
+### Calculation of BoundingBoxes
+
+# use safe file name for use within cmd line of gs (unknown shell: space, ...)
+# and pdfTeX (dollar, ...)
+my $inputfilesafe = $inputfile;
+if ($inputfile =~ /[\s\$~'"]/) {
+    $inputfilesafe = "$tmp-img.pdf";
+    push @unlink_files, $inputfilesafe;
+    my $symlink_exists = eval { symlink("", ""); 1 };
+    print "* Input file name `$inputfile' contains special characters.\n"
+          . "* " . ($symlink_exists ? "Link" : "Copy")
+          . " input file to temporary file `$inputfilesafe'.\n"
+            if $::opt_verbose;
+    if ($symlink_exists) {
+        symlink($inputfile, $inputfilesafe)
+            or die "$Error Link from `$inputfile' to"
+                   . " `$inputfilesafe' failed: $!\n";
+    }
+    else {
+        use File::Copy;
+        copy($inputfile, $inputfilesafe)
+                or die "$Error Copy from `$inputfile' to"
+                       . " `$inputfilesafe' failed: $!\n";
+    }
+}
+
+my @gsargs = (
+    "-sDEVICE=bbox",
+    "-dBATCH",
+    "-dNOPAUSE"
+);
+push @gsargs, "-sPAPERSIZE=$::opt_papersize" if $::opt_papersize;
+push @gsargs, "-r$::opt_resolution" if $::opt_resolution;
+push @gsargs,
+    "-c",
+    "save",
+    "pop",
+    "-f",
+    $inputfilesafe
+;
+
+my $tmpfile = "$tmp.tex";
+push @unlink_files, $tmpfile;
+open(TMP, ">$tmpfile") or
+    die "$Error Cannot write tmp file `$tmpfile'!\n";
+print TMP "\\def\\pdffile{$inputfilesafe}\n";
+if ($::opt_tex eq 'pdftex') {
+    print TMP <<'END_TMP_HEAD';
+\csname pdfmapfile\endcsname{}
+\def\page #1 [#2 #3 #4 #5]{%
+  \count0=#1\relax
+  \setbox0=\hbox{%
+    \pdfximage page #1{\pdffile}%
+    \pdfrefximage\pdflastximage
+  }%
+  \pdfhorigin=-#2bp\relax
+  \pdfvorigin=#3bp\relax
+  \pdfpagewidth=#4bp\relax
+  \advance\pdfpagewidth by -#2bp\relax
+  \pdfpageheight=#5bp\relax
+  \advance\pdfpageheight by -#3bp\relax
+  \ht0=\pdfpageheight
+  \shipout\box0\relax
+}
+\def\pageclip #1 [#2 #3 #4 #5][#6 #7 #8 #9]{%
+  \count0=#1\relax
+  \dimen0=#4bp\relax \advance\dimen0 by -#2bp\relax
+  \edef\imagewidth{\the\dimen0}%
+  \dimen0=#5bp\relax \advance\dimen0 by -#3bp\relax
+  \edef\imageheight{\the\dimen0}%
+  \pdfximage page #1{\pdffile}%
+  \setbox0=\hbox{%
+    \kern -#2bp\relax
+    \lower #3bp\hbox{\pdfrefximage\pdflastximage}%
+  }%
+  \wd0=\imagewidth\relax
+  \ht0=\imageheight\relax
+  \dp0=0pt\relax
+  \pdfhorigin=#6pt\relax
+  \pdfvorigin=#7bp\relax
+  \pdfpagewidth=\imagewidth
+  \advance\pdfpagewidth by #6bp\relax
+  \advance\pdfpagewidth by #8bp\relax
+  \pdfpageheight=\imageheight\relax
+  \advance\pdfpageheight by #7bp\relax
+  \advance\pdfpageheight by #9bp\relax
+  \pdfxform0\relax
+  \shipout\hbox{\pdfrefxform\pdflastxform}%
+}%
+\def\pageinclude#1{%
+  \pdfhorigin=0pt\relax
+  \pdfvorigin=0pt\relax
+  \pdfximage page #1{\pdffile}%
+  \setbox0=\hbox{\pdfrefximage\pdflastximage}%
+  \pdfpagewidth=\wd0\relax
+  \pdfpageheight=\ht0\relax
+  \advance\pdfpageheight by \dp0\relax
+  \shipout\hbox{%
+    \raise\dp0\box0\relax
+  }%
+}
+END_TMP_HEAD
+}
+else { # XeTeX
+    print TMP <<'END_TMP_HEAD';
+\expandafter\ifx\csname XeTeXpdffile\endcsname\relax
+  \expandafter\ifx\csname pdffile\endcsname\relax
+    \errmessage{XeTeX not found!}%
+  \else
+    \errmessage{XeTeX is too old!}%
+  \fi
+\fi
+\def\page #1 [#2 #3 #4 #5]{%
+  \count0=#1\relax
+  \setbox0=\hbox{%
+    \XeTeXpdffile "\pdffile" page #1%
+  }%
+  \pdfpagewidth=#4bp\relax
+  \advance\pdfpagewidth by -#2bp\relax
+  \pdfpageheight=#5bp\relax
+  \advance\pdfpageheight by -#3bp\relax
+  \shipout\hbox{%
+    \kern-1in%
+    \kern-#2bp%
+    \vbox{%
+      \kern-1in%
+      \kern#3bp%
+      \ht0=\pdfpageheight
+      \box0 %
+    }%
+  }%
+}
+END_TMP_HEAD
+}
+
+print "* Running ghostscript for BoundingBox calculation ...\n"
+    if $::opt_verbose;
+print "* Ghostscript call: $::opt_gscmd @gsargs\n" if $::opt_debug;
+
+my @bbox;
+if ($::opt_bbox) {
+     $::opt_bbox =~ /([-\d\.]+) ([-\d\.]+) ([-\d\.]+) ([-\d\.]+)/;
+     @bbox = ($1, $2, $3, $4);
+}
+my $page = 0;
+my $gs_pipe = "$::opt_gscmd -dSAFER @gsargs 2>&1";
+$gs_pipe .= " 1>$null" unless $::opt_verbose;
+$gs_pipe .= "|";
+
+open(GS, $gs_pipe) or
+        die "$Error Cannot call ghostscript ($::opt_gscmd)!\n";
+my $bb = ($::opt_hires) ? "%%HiResBoundingBox" : "%%BoundingBox";
+while (<GS>) {
+    print $_ if $::opt_verbose;
+    next unless
+        /^$bb:\s*(-?[\.\d]+) (-?[\.\d]+) (-?[\.\d]+) (-?[\.\d]+)/o;
+    @bbox = ($1, $2, $3, $4) unless $::opt_bbox;
+    $page++;
+
+    my $empty = 0;
+    $empty = 1 if $bbox[0] >= $bbox[2];
+    $empty = 1 if $bbox[1] >= $bbox[3];
+    if ($empty) {
+        print <<"END_WARNING";
+
+!!! Warning: Empty Bounding Box is returned by Ghostscript!
+!!!   Page $page: @bbox
+!!! Either there is a problem with the page or with Ghostscript.
+!!! Recovery is tried by embedding the page in its original size.
+
+END_WARNING
+        print TMP "\\pageinclude{$page}\n";
+        next;
+    }
+
+    print "* Page $page: @bbox\n" if $::opt_verbose;
+
+    my @bb = ($bbox[0] - $llx, $bbox[1] - $ury,
+             $bbox[2] + $urx, $bbox[3] + $lly);
+
+    $empty = 0;
+    $empty = 1 if $bb[0] >= $bb[2];
+    $empty = 1 if $bb[1] >= $bb[3];
+    if ($empty) {
+        print <<"END_WARNING";
+
+!!! Warning: The final Bounding Box is empty!
+!!!   Page: $page: @bb
+!!! Probably caused by too large negative margin values.
+!!! Recovery by ignoring margin values.
+
+END_WARNING
+        print TMP "\\page $page [@bbox]\n";
+        # clipping shouldn't make a difference
+        next;
+    }
+    if ($::opt_clip) {
+        print TMP "\\pageclip $page [@bbox][$llx $lly $urx $ury]\n";
+    }
+    else {
+        print TMP "\\page $page [@bb]\n";
+    }
+}
+close(GS);
+
+if ($? & 127) {
+    die sprintf  "$Error Ghostscript died with signal %d!\n",
+                 ($? & 127);
+}
+elsif ($? != 0) {
+    die sprintf "$Error Ghostscript exited with error code %d!\n",
+                $? >> 8;
+}
+
+print TMP "\\csname \@\@end\\endcsname\n\\end\n";
+close(TMP);
+
+if ($page == 0) {
+    die "$Error Ghostscript does not report bounding boxes!\n";
+}
+
+### Run pdfTeX/XeTeX
+
+push @unlink_files, "$tmp.log";
+my $cmd;
+my $texname;
+if ($::opt_tex eq 'pdftex') {
+    $cmd = $::opt_pdftexcmd;
+    $texname = 'pdfTeX';
+}
+else {
+    $cmd = $::opt_xetexcmd;
+    $texname = 'XeTeX';
+}
+$cmd .= ' -no-shell-escape';
+if ($::opt_verbose) {
+    $cmd .= " -interaction=nonstopmode $tmp";
+}
+else {
+    $cmd .= " -interaction=batchmode $tmp";
+}
+print "* Running $texname ...\n" if $::opt_verbose;
+print "* $texname call: $cmd\n" if $::opt_debug;
+if ($::opt_verbose) {
+    system($cmd);
+}
+else {
+    `$cmd`;
+}
+if ($?) {
+    die "$Error $texname run failed!\n";
+}
+
+### Move temp file to output
+if (!rename("$tmp.pdf", $outputfile)) {
+    use File::Copy;
+    move "$tmp.pdf", $outputfile or
+            die "$Error Cannot move `$tmp.pdf' to `$outputfile'!\n";
+}
+
+print "==> $page page", (($page == 1) ? "" : "s"),
+      " written on `$outputfile'.\n";
+
+$exit_code = 0;
+cleanup();
+
+__END__
Index: /issm/branches/trunk-dlcheng-ASE/scripts/py_to_pyc.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/py_to_pyc.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/py_to_pyc.sh	(revision 27955)
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+################################################################################
+# Compiles all Python source files in a directory (recursively).
+#
+# Runs quietly if there are no errors. Otherwise, prints errors to console.
+################################################################################
+COMPILE_LOG='./py_to_pyc.log'
+TARGET='.'
+
+if [ "$#" -gt 0 ]; then
+	TARGET=$1
+fi
+
+echo "Compiling Python source files"
+python3 -m compileall -f -q -b ${TARGET}
+
+if [ -s ${COMPILE_LOG} ]; then
+	echo "Error(s) occurred while compiling Python scripts!"
+	echo "--------------- start: ${COMPILE_LOG} ---------------"
+	cat ${COMPILE_LOG}
+	echo "---------------- end: ${COMPILE_LOG} ----------------"
+	exit 1
+fi
Index: /issm/branches/trunk-dlcheng-ASE/scripts/report.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/report.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/report.sh	(revision 27955)
@@ -0,0 +1,322 @@
+#!/bin/bash
+#generate html report from info.log output file
+
+#style
+#{{{
+TITLE_STYLE='width="700px" cellpadding="10"'
+TITLE_FONT='style="color:#6495ed; font-family:Arial, Verdana, Tahoma; font-weight: bold; font-size:25px;" align="center"'
+SECTION_STYLE='width="700px" cellpadding="5"'
+SECTION_FONT='style="color:#6495ed; font-family:Arial, Verdana, Tahoma; font-size:20px; font-weight: bold;" align="left"'
+TABLE_STYLE='width="680px" rules=none bgcolor="#ffffdd" border=1 bordercolor="#000000" cellpadding="3"'
+TABLE_FONT='style="color:#404040; font-family:Arial, Verdana, Tahoma; font-size:14px; font-weight: normal;" align="left"'
+CODE_STYLE='width="700px" rules=none'
+CODE_FONT='style="color:#404040; font-family:Arial, Verdana, Tahoma; font-size:12px; font-weight: normal;" align="left"'
+BODY_STYLE='width="700px"'
+BODY_FONT='style="color:#404040; font-family:Arial, Verdana, Tahoma; font-size:14px;"'
+BODY_FONTC=$(echo $BODY_FONT | sed -e "s/style=\"/style=\"text-align:center; /g")
+BODY_FONTL=$(echo $BODY_FONT | sed -e "s/style=\"/style=\"text-align:left; /g")
+FOOTER_STYLE='width="700px"  cellpadding="10"'
+FOOTER_FONT='style="color:#404040; font-family:Arial, Verdana, Tahoma; font-size:12px; font-weight: normal;" align="center"'
+#}}}
+
+#process info.log
+#{{{
+if [ ! -f info.log ]; then
+	echo "File info.log not found!" >&2   # Error message to stderr.
+	exit 1
+fi 
+NRNAME=$(      cat info.log | grep "name:"           | awk '{$1=""}1')
+TODAY=$(       cat info.log | grep "today"           | awk '{printf("%s %s",$2,$3);}')
+USER=$(        cat info.log | grep "user"            | awk '{print $2}')
+VERSION=$(     cat info.log | grep "version"         | awk '{print $2}')
+HOST_NAME=$(   cat info.log | grep "host"            | awk '{print $2}')
+OS=$(          cat info.log | grep "OS"              | awk '{print $2}')
+RELEASE=$(     cat info.log | grep "release"         | awk '{print $2}')
+EL_INSTALL=$(  cat info.log | grep "elapsed_install" | awk '{print $2}')
+EL_TOTAL=$(    cat info.log | grep "elapsed_total"   | awk '{print $2}')
+IS_MATLAB=$(   cat info.log | grep "is_matlab"       | awk '{print $2}')
+IS_PYTHON=$(   cat info.log | grep "is_python"       | awk '{print $2}')
+EL_MATLAB=$(   cat info.log | grep "elapsed_matlab"  | awk '{print $2}')
+EL_PYTHON=$(   cat info.log | grep "elapsed_python"  | awk '{print $2}')
+CRASH_MATLAB=$(cat info.log | grep "matlab_crash:"   | awk '{print $2}')
+CRASH_PYTHON=$(cat info.log | grep "python_crash:"   | awk '{print $2}')
+
+#Did installation work?
+if [ $(ls -1 $ISSM_DIR/bin | wc -l) -le 1 ]; then
+	IS_INSTALL=0
+else
+	IS_INSTALL=1
+fi
+#}}}
+
+#1. summary table 
+#{{{
+rm report.html
+cat << END >> report.html
+<div align="center">
+<table $TITLE_STYLE><tr><td $TITLE_FONT>$NRNAME</td></tr></table>
+
+<table $TABLE_STYLE>
+<tr> 
+<td $TABLE_FONT>host: $HOST_NAME ($OS)</td>
+<td $TABLE_FONT>date: $TODAY</td>
+</tr>
+<tr>
+<td $TABLE_FONT>user: $USER</td>
+<td $TABLE_FONT>release: $RELEASE</td>
+</tr>
+<tr>
+<td $TABLE_FONT>total elapsed time: $EL_TOTAL</td>
+<td $TABLE_FONT>installation elapsed time: $EL_INSTALL</td>
+</tr>
+<tr>
+<td $TABLE_FONT>svn version: $VERSION</td>
+<td $TABLE_FONT></td>
+</tr>
+</table>
+<br><hr width="700px">
+END
+# }}}
+
+#stop if did not install
+#{{{
+if [ $IS_INSTALL -eq 0 ]; then
+	cat << END >> report.html
+	<table $(echo $BODY_STYLE) style="border-collapse:collapse;">
+	<tr><td $BODY_FONTC>Status: <span style="color:#ff0000">Installation failed</span></td></tr>
+	</table>
+	<table $FOOTER_STYLE><tr><td $FOOTER_FONT><a href="http://issm.jpl.nasa.gov" title="ISSM website" target="_blank">ISSM</a> nightly run report</td></tr></table>
+	</div>
+END
+exit 0
+fi
+#}}}
+
+#2. matlab report
+if [ $IS_MATLAB -eq 1 ]; then
+#Process matlab_log.log {{{
+cat matlab_log.log        | egrep 'ERROR|SUCCESS|FAILURE' | grep -v "PETSC" | sed -e "s/>/\&gt;/g" | sed -e "s/</\&lt;/g" > matlab.log
+cat matlab.log        | grep -v "SUCCESS" > matlab_short.log
+cat matlab_log.log        | grep "PETSC" | sed -e "s/>/\&gt;/g" | sed -e "s/</\&lt;/g" > petscerror.log
+NUM_MATLAB_TOT=$(wc -l matlab.log | awk '{print $1}')
+NUM_MATLAB_ERR=$(cat matlab.log | grep 'ERROR'   | grep -v "PETSC" | wc -l)
+NUM_MATLAB_SUC=$(cat matlab.log | grep 'SUCCESS' | wc -l)
+NUM_MATLAB_FAI=$(cat matlab.log | grep 'FAILURE' | wc -l)
+#}}}
+#write report {{{
+cat << END >> report.html
+<table $SECTION_STYLE><tr><td $SECTION_FONT>Matlab tests</td></tr></table>
+<table $(echo $BODY_STYLE) style="border-collapse:collapse;">
+$(if [ $CRASH_MATLAB -eq 0 ]; then
+echo "<tr><td $BODY_FONTL>Status: <span style=\"color:#008000\">all tests have been run</span></td></tr>"
+else
+	echo "<tr><td $BODY_FONTL>Status: <span style=\"color:#ff0000\">Matlab crashed</span></td></tr>"
+fi)
+<tr><td $BODY_FONTL>Total execution time: $EL_MATLAB</td></tr>
+<tr><td $BODY_FONTL>Number of successes: $NUM_MATLAB_SUC/$NUM_MATLAB_TOT</td></tr>
+<tr><td $BODY_FONTL>Number of errors: $NUM_MATLAB_ERR/$NUM_MATLAB_TOT</td></tr>
+<tr><td $BODY_FONTL>Number of failures: $NUM_MATLAB_FAI/$NUM_MATLAB_TOT</td></tr>
+</table>
+END
+#}}}
+fi
+
+#2. python report
+if [ $IS_PYTHON -eq 1 ]; then
+#Process python_log.log {{{
+cat python_log.log        | egrep 'ERROR|SUCCESS|FAILURE' | grep -v "PETSC" | sed -e "s/>/\&gt;/g" | sed -e "s/</\&lt;/g" > python.log
+cat python.log        | grep -v "SUCCESS" > python_short.log
+cat python_log.log        | grep "PETSC" | sed -e "s/>/\&gt;/g" | sed -e "s/</\&lt;/g" > petscerror.log
+NUM_PYTHON_TOT=$(wc -l python.log | awk '{print $1}')
+NUM_PYTHON_ERR=$(cat python.log | grep 'ERROR'   | grep -v "PETSC" | wc -l)
+NUM_PYTHON_SUC=$(cat python.log | grep 'SUCCESS' | wc -l)
+NUM_PYTHON_FAI=$(cat python.log | grep 'FAILURE' | wc -l)
+#}}}
+#write report {{{
+cat << END >> report.html
+<table $SECTION_STYLE><tr><td $SECTION_FONT>Python tests</td></tr></table>
+<table $(echo $BODY_STYLE) style="border-collapse:collapse;">
+$(if [ $CRASH_PYTHON -eq 0 ]; then
+	echo "<tr><td $BODY_FONTL>Status: <span style=\"color:#008000\">all tests have been run</span></td></tr>"
+else
+	echo "<tr><td $BODY_FONTL>Status: <span style=\"color:#ff0000\">Python crashed</span></td></tr>"
+fi)
+<tr><td $BODY_FONTL>Total execution time: $EL_PYTHON</td></tr>
+<tr><td $BODY_FONTL>Number of successes: $NUM_PYTHON_SUC/$NUM_PYTHON_TOT</td></tr>
+<tr><td $BODY_FONTL>Number of errors: $NUM_PYTHON_ERR/$NUM_PYTHON_TOT</td></tr>
+<tr><td $BODY_FONTL>Number of failures: $NUM_PYTHON_FAI/$NUM_PYTHON_TOT</td></tr>
+</table>
+END
+#}}}
+fi
+
+#3. Matlab and python tables
+if [ $IS_MATLAB -eq 1 ]; then
+#Matlab{{{
+#display table ONLY if installation worked and there has been at leat one FAILURE or ERROR
+if [ $IS_INSTALL -eq 1 ] && [ $NUM_MATLAB_TOT -gt 1 ] && [ $NUM_MATLAB_SUC -ne $NUM_MATLAB_TOT ]
+then
+	cat << END >> report.html
+<table $SECTION_STYLE><tr><td $(echo $SECTION_FONT)>List of Matlab tests</td></tr></table>
+<table $BODY_STYLE style="border-collapse:collapse;">
+<tr> 
+<th $BODY_FONT>Result</th> 
+<th $BODY_FONT>Tolerance</th> 
+<th $BODY_FONT>Test id</th>  
+<th $BODY_FONT>Test name</th> 
+<th $BODY_FONT>Field checked</th>
+</tr>
+$(cat matlab_short.log | while read line
+  do
+	  echo "<tr>"
+	  STATUS=`echo $line | awk '{print $1}'`
+	  #FAILURE
+	  if [ "$STATUS" = "FAILURE" ]
+	  then
+		  FONTC=$(echo "$BODY_FONTC bgcolor=#ffff00");
+		  FONTL=$(echo "$BODY_FONTL bgcolor=#ffff00");
+		  echo $line | awk -v FONTC="$FONTC" -v FONTL="$FONTL" '
+		  { printf("<td %s id=FAILURE>%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n\n",FONTL,$1,FONTC,$3,FONTC,$6,FONTL,$9,FONTL,$11);}
+		  '; 
+	  else
+		  #SUCCESS
+		  if [ "$STATUS" = "SUCCESS" ]
+		  then
+			  FONTC=$(echo "$BODY_FONTC bgcolor=#ddffdd")
+			  FONTL=$(echo "$BODY_FONTL bgcolor=#ddffdd")
+			  #do not write anything
+		  #ERROR
+		  else
+			  FONTC=$(echo "$BODY_FONTC bgcolor=#ffdddd id=ERROR")
+			  FONTL=$(echo "$BODY_FONTL bgcolor=#ffdddd")
+			  echo $line | awk -v FONTC="$FONTC" -v FONTL="$FONTL" '
+			  { printf("<td %s>%s</td>\n<td %s>%s%s%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n\n",FONTL,$1,FONTL,$3,$4,$5,FONTC,$8,FONTL,$11,FONTL,$13);}
+			  '; 
+		  fi
+
+	  fi
+	  echo "</tr>"
+  done
+	  )
+</table>
+<br>
+END
+fi
+#}}}
+fi
+if [ $IS_PYTHON -eq 1 ]; then
+#python{{{
+#display table ONLY if installation worked and there has been at leat one FAILURE or ERROR
+if [ $IS_INSTALL -eq 1 ] && [ $NUM_PYTHON_TOT -gt 1 ] && [ $NUM_PYTHON_SUC -ne $NUM_PYTHON_TOT ]
+then
+	cat << END >> report.html
+	<table $(echo $SECTION_STYLE)><tr><td $(echo $SECTION_FONT)>List of Python tests</td></tr></table>
+	<table $(echo $BODY_STYLE) style="border-collapse:collapse;">
+	<tr> 
+	<th $BODY_FONT>Result</th> 
+	<th $BODY_FONT>Tolerance</th> 
+	<th $BODY_FONT>Test id</th>  
+	<th $BODY_FONT>Test name</th> 
+	<th $BODY_FONT>Field checked</th>
+	</tr>
+	$(cat python_short.log | while read line
+do
+	echo "<tr>"
+	STATUS=`echo $line | awk '{print $1}'`
+
+	#FAILURE
+	if [ "$STATUS" = "FAILURE" ]
+	then
+
+		FONTC=$(echo "$BODY_FONTC bgcolor=#ffff00");
+		FONTL=$(echo "$BODY_FONTL bgcolor=#ffff00");
+		echo $line | awk -v FONTC="$FONTC" -v FONTL="$FONTL" '
+		{ printf("<td %s id=FAILURE>%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n\n",FONTL,$1,FONTC,$3,FONTC,$6,FONTL,$9,FONTL,$11);}
+		'; 
+
+	else
+
+		#SUCCESS
+		if [ "$STATUS" = "SUCCESS" ]
+		then
+			FONTC=$(echo "$BODY_FONTC bgcolor=#ddffdd")
+			FONTL=$(echo "$BODY_FONTL bgcolor=#ddffdd")
+			#do not write anything
+			#ERROR
+		else
+			FONTC=$(echo "$BODY_FONTC bgcolor=#ffdddd id=ERROR")
+			FONTL=$(echo "$BODY_FONTL bgcolor=#ffdddd")
+			echo $line | awk -v FONTC="$FONTC" -v FONTL="$FONTL" '
+			{ printf("<td %s>%s</td>\n<td %s>%s%s%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n<td %s>%s</td>\n\n",FONTL,$1,FONTL,$3,$4,$5,FONTC,$8,FONTL,$11,FONTL,$13);}
+			'; 
+		fi
+
+	fi
+	echo "</tr>"
+done
+)
+</table>
+<br>
+END
+fi
+#}}}
+fi
+
+#4. Error report
+if [ $IS_MATLAB -eq 1 ] && [ -s matlaberror.log ]; then
+#Matlab {{{
+cat << END >> report.html
+<table $SECTION_STYLE><tr><td $SECTION_FONT>Matlab errors</td></tr></table>
+<table $CODE_STYLE><tr><td $CODE_FONT>
+<pre style="
+white-space: -moz-pre-wrap;
+white-space: -pre-wrap;
+white-space: -o-pre-wrap;
+white-space: pre-wrap;
+word-wrap: break-word;
+">$(cat matlaberror.log)</pre>
+</td></tr></table>
+END
+#}}}
+fi
+if [ $IS_PYTHON -eq 1 ] && [ -s pythonerror.log ]; then
+	#Python {{{
+	cat << END >> report.html
+<table $SECTION_STYLE><tr><td $SECTION_FONT>Python errors</td></tr></table>
+<table $CODE_STYLE><tr><td $CODE_FONT>
+<pre style="
+white-space: -moz-pre-wrap;
+white-space: -pre-wrap;
+white-space: -o-pre-wrap;
+white-space: pre-wrap;
+word-wrap: break-word;
+">$(cat pythonerror.log)</pre>
+</td></tr></table>
+END
+	#}}}
+fi
+if [ -s petscerror.log ]; then
+	#PETSc{{{
+cat << END >> report.html
+<table $SECTION_STYLE><tr><td $SECTION_FONT>PETSc errors</td></tr></table>
+<table $CODE_STYLE><tr><td $CODE_FONT>
+<pre style="
+white-space: -moz-pre-wrap;
+white-space: -pre-wrap;
+white-space: -o-pre-wrap;
+white-space: pre-wrap;
+word-wrap: break-word;
+">$(cat petscerror.log)</pre>
+</td></tr></table>
+END
+#}}}
+fi
+
+#last: footer
+#{{{
+cat << END >> report.html
+<br>
+<table $FOOTER_STYLE><tr><td $FOOTER_FONT><a href="http://issm.jpl.nasa.gov" title="ISSM website" target="_blank">ISSM</a> nightly run report</td></tr></table>
+</div>
+END
+#}}}
Index: /issm/branches/trunk-dlcheng-ASE/scripts/svn_repo_authors.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/svn_repo_authors.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/svn_repo_authors.sh	(revision 27955)
@@ -0,0 +1,203 @@
+#!/bin/bash
+
+# Parses Subversion repository log messages and outputs authors and their 
+# respective number of commits. 
+#
+# Output can be sorted:
+#
+#	-a		sort output by author name
+#	-c		sort output by number of commits
+#
+# Output can also be limited to commits from the last year:
+#
+#	-y		display only commits from the last 365 days
+#
+# Will run on first 'path' parameter, or on current working directory if no 
+# path is supplied.
+#
+# TODO:
+# - Add option to bin authors and commits by year
+# - Convert to using XML output from SVN log (i.e. `svn log --xml`)
+
+## Functions
+#
+
+function display_help {
+	echo "usage: ${script_name} [option] [path]" >&2
+	case "${uname_out}" in
+		Linux*)
+			display_help_linux
+			;;
+		Darwin*)
+			display_help_mac
+			;;
+		*)
+			;;
+	esac
+}
+
+function display_help_mac {
+	echo "	-h	diplay help"
+	echo "	-a	sort output by author name"
+	echo "	-c	sort output by number of commits"
+	echo "	-y	display only commits from the last 365 days"
+}
+
+function display_help_linux {
+	echo "	-h | --help		diplay help"
+	echo "	-a | --authors	sort output by author name"
+	echo "	-c | --commits	sort output by number of commits"
+	echo "	-y | --year		display only commits from the last 365 days"
+}
+
+function print_authors {
+	i=0
+	until [[ $i -eq "${#authors[@]}" ]]; do
+		printf "%-15s %i\n" "${authors[$i]}" "${commits[$i]}"
+		(( i++ ))
+	done
+}
+
+function print_authors_sorted_by_author {
+	local i=0
+	until [[ $i -eq "${#authors[@]}" ]]; do
+		printf "%-15s %i\n" "${authors[$i]}" "${commits[$i]}"
+		(( i++ ))
+	done |
+	sort -n -k1
+}
+
+function print_authors_sorted_by_commits {
+	local i=0
+	until [[ $i -eq "${#authors[@]}" ]]; do
+		printf "%-15s %i\n" "${authors[$i]}" "${commits[$i]}"
+		(( i++ ))
+	done |
+	sort -rn -k2
+}
+
+## Initialize conditional variables
+#
+one_year_ago=""
+sort_by_author=0
+sort_by_commits=0
+today=""
+
+# Retrieve script name
+script_name=$(basename "$0")
+
+## Retrieve OS
+#
+uname_out=$(uname -s)
+case "${uname_out}" in
+	Linux*)
+		options=$(getopt -n ${script_name} -o hacy --long help,author,commits,year -- "$@")
+		;;
+	Darwin*)
+		options=$(getopt hacy $*)
+		;;
+	*)
+		printf "operating system %s not currently supported\n" "${uname_out}" >&2
+		exit 1
+		;;
+esac
+
+## Handle options
+#
+valid_options=$?
+if [[ $valid_options -ne 0 ]]; then
+	display_help
+	exit 1
+fi
+#echo $options # Uncomment for debugging
+set -- $options
+
+while :
+do
+	case "$1" in
+		-h | --help)
+			display_help
+			exit 0
+			;;
+		-a | --author)
+			sort_by_author=1
+			shift
+			;;
+		-c | --commits)
+			sort_by_commits=1
+			shift
+			;;
+		-y | --year)
+			today=$(date +%Y-%m-%d)
+			one_year_ago=$(date -v -1y -v +1d +%Y-%m-%d) # Date adjusted 365 days
+			shift
+			;;
+		--)
+			shift
+			break
+			;;
+		*)
+			break
+			;;
+	esac
+done
+
+## Retrieve path
+#
+# If no path was given, use current working directory; if one or more were 
+# given, just use the first one.
+#
+path="."
+num_args=${#@}
+if [[ $num_args -gt 0 ]]; then
+	path=$1
+fi
+
+authors=()
+commits=()
+
+# Get entire log once
+if [[ $one_year_ago != "" ]]; then
+	log=$(svn log -r "{${today}}:{${one_year_ago}}" "${path}")
+else
+	log=$(svn log "${path}")
+fi
+
+data_lines=$(echo "${log}" | egrep "r[0-9]+") # Get only lines from log that contain info we care about
+
+while IFS= read line; do
+	author=$(echo "${line}" | awk -F "|" '{print $2}' | tr -d ' ')
+
+	# Uncomment if we want to treat blank author as "unknown"
+	if [[ "$author" == "" ]]; then
+		author="unknown"
+	fi
+
+	have_seen_author=0
+	for (( i=0; i<${#authors[@]}; ++i )); do
+		if [[ "${authors[$i]}" == "$author" ]]; then
+			have_seen_author=1
+			break
+		fi
+	done
+
+	if [[ $have_seen_author -eq 0 ]]; then
+		authors+=("${author}")
+		commits+=(1)
+	else
+		(( commits[$i]++ ))
+	fi
+done <<< "${data_lines}"
+
+## Print results (sorted, if requested)
+#
+# NOTE: If multiple sort options are specified, the order or precedence is 
+#		specified as follows.
+#
+if [ $sort_by_commits -eq 1 ]; then
+	print_authors_sorted_by_commits
+elif [ $sort_by_author -eq 1 ]; then
+	print_authors_sorted_by_author
+else
+	print_authors
+fi
Index: /issm/branches/trunk-dlcheng-ASE/scripts/svnlog
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/svnlog	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/svnlog	(revision 27955)
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+svn log $1 | perl -e 'print reverse<>'
Index: /issm/branches/trunk-dlcheng-ASE/scripts/svnvimdiff
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/svnvimdiff	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/svnvimdiff	(revision 27955)
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+#get files to check
+if [ $# -eq 0 ]
+then
+	echo "no file specified"
+	return
+fi
+
+#first, check that all files exist
+for FILE in $*
+do
+	if [ ! -f "$FILE" ]
+	then
+		echo "File $FILE not found!" >&2   # Error message to stderr.
+		exit 1
+	fi 
+done
+
+#svn diff all files
+for FILE in $*
+do
+
+	FILENAME=$(basename $FILE);
+	EXT=${FILENAME/*./}
+	RELEASE=$(svn info $FILE | grep "Revision" | awk '{ print $2 }')
+
+	YOUFILE="YOUR_FILE"."$EXT"
+	SVNFILE="SVN_FILE"."$EXT"
+
+	echo "Downloading current $FILENAME in svn repository"
+	mv $FILE $YOUFILE
+	svn update -q $FILE
+	mv $FILE $SVNFILE
+
+	vimdiff $YOUFILE $SVNFILE
+
+	echo "Reverting to local version of $FILENAME"
+	svn update -q -r$RELEASE $FILE
+	wait #wait till svn has downloaded the file otherwise it could be lost!
+	mv $YOUFILE $FILE
+	touch $FILE
+	rm $SVNFILE
+done
Index: /issm/branches/trunk-dlcheng-ASE/scripts/tai
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/tai	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/tai	(revision 27955)
@@ -0,0 +1,9 @@
+#!/bin/bash
+if [ -z $EXECUTION_DIR ];
+then
+	EXECUTION_DIR=$ISSM_DIR/execution
+fi
+
+DIR=$(ls -rtd1 $EXECUTION_DIR/* | tail -n1)
+echo "Execution directory: $DIR"
+tail -f $DIR/*.outlog
Index: /issm/branches/trunk-dlcheng-ASE/scripts/translateToPy.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/translateToPy.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/translateToPy.py	(revision 27955)
@@ -0,0 +1,257 @@
+
+import codecs
+import unicodedata
+import sys
+import datetime
+import os
+
+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#
+program = 'translateToPy.py'
+version = '1.0'
+versionReleaseDate = '09/24/12'
+origAuthor = 'Mike Pellegrin'
+desc = '\nMatlab script conversion into python'
+#
+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#                History
+#    Date        Developer           Modification
+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#    09 / 24 / 12 Michael Pellegrin    Initial Release     V1.0
+#
+#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+
+outputLocation = sys.stdout
+inputFile = ""
+
+# other global vars
+indentLevel = 0
+
+
+def setupOutputLocation(outFile):
+    if outFile != sys.stdout:
+        globals()['outputLocation'] = open(outFile, 'w')  # clobber
+
+
+def translateFile(inputFile):
+    f = codecs.open(inputFile, encoding='utf-8')
+    try:
+        for line in f:
+            # print "in: " + line
+
+            asciiLine = unicodedata.normalize('NFKD', line).encode('ascii', 'ignore')
+            line = asciiLine
+            translateLine(line)
+
+    finally:
+        f.close()
+
+
+def translateLine(line):
+
+    if len(line) == 1:    # blank line
+        output(line)
+
+    elif line.split()[0][0] == '%':        # comment line
+        output("# " + line.replace('%', ''))
+
+    else:        # needs cleanup.  this is a real - quick - n - dirty implimentation
+        #print line
+        res = line.replace('{', '[')
+        res = res.replace('}', ']')
+        res = res.replace('model', 'model()')
+        res = res.replace('SolutionEnum', 'SolutionEnum()')
+        res = res.replace('StressTensorEnum', 'StressTensorEnum()')
+        res = res.replace('.par', '.py')
+        res = res.replace('=extrude(md, ', '.extrude(')
+
+        res = res.replace('thickness(pos)', 'thickness[pos]')
+        res = res.replace('find(md.', 'numpy.nonzero(md.')
+
+        res = res.replace('\n', '')
+
+        # handle inline comments
+        res = res.replace('%', '#')
+
+        res = res.replace('...', '\\')
+
+        # determine if the m file has mult. line cmd (real quick solution)
+        multCmds = res.split(';')
+        numLines = len(multCmds) - 2
+        allParts = ''
+        for part in multCmds:
+            allParts += part
+            #allParts += re.sub('^\s + ', '', part)
+            #allParts += part.strip()
+            if numLines > 0:
+                allParts += '\n'
+                numLines -= 1
+
+        res = allParts
+        res = res.replace(';', '')
+        res = convertFieldValues(res)
+        #print 'resulting line:' + str(res) + '\n'
+        output(res)
+
+
+def convertFieldValues(currentLine):
+    # before utilizing regex's {starting w / eg. \([0 - 9]\) } for special case: ...(#)...
+    # i noticed what i'm looking for is only TransientSolution(* ). So, ...
+
+    res = currentLine
+    if 'md.results' in currentLine:
+        res = res.replace('(md.results.', 'md.results[\'')
+
+        if 'TransientSolution(' in currentLine:        # got a TransientSolution([0 - 9..]) case
+            res = res.replace('TransientSolution(', 'TransientSolution\'][')
+            parts = res.split(')')
+            res = parts[0] + '][\'' + parts[1].replace('.', '') + '\']' + parts[2]
+
+        else:                # handle the other cases for md.results
+
+            res = res.replace('Solution.Vx)', 'Solution\'][1][\'Vx\']')
+            res = res.replace('Solution.Vy)', 'Solution\'][1][\'Vy\']')
+            res = res.replace('Solution.Vz)', 'Solution\'][1][\'Vz\']')
+            res = res.replace('Solution.Vel)', 'Solution\'][1][\'Vel\']')
+
+            res = res.replace('Solution.Pressure)', 'Solution\'][1][\'Pressure\']')
+
+            res = res.replace('Solution.StressTensorxx)', 'Solution\'][1][\'StressTensorxx\']')
+            res = res.replace('Solution.StressTensorxy)', 'Solution\'][1][\'StressTensorxy\']')
+            res = res.replace('Solution.StressTensoryy)', 'Solution\'][1][\'StressTensoryy\']')
+            res = res.replace('Solution.StressTensorzz)', 'Solution\'][1][\'StressTensorzz\']')
+            res = res.replace('Solution.StressTensorxz)', 'Solution\'][1][\'StressTensorxz\']')
+            res = res.replace('Solution.StressTensoryz)', 'Solution\'][1][\'StressTensoryz\']')
+
+            res = res.replace('Solution.FrictionCoefficient)', 'Solution\'][1][\'FrictionCoefficient\']')
+            res = res.replace('Solution.SurfaceforcingsMasBalance)', 'Solution\'][1][\'SurfaceforcingsMasBalance\']')
+            res = res.replace('Solution.MaskElementonfloatingice)', 'Solution\'][1][\'MaskElementonfloatingice\']')
+            res = res.replace('Solution.J)', 'Solution\'][1][\'J\']')
+            res = res.replace('Solution.BalancethicknessThickeningRate)', 'Solution\'][1][\'BalancethicknessThickeningRate\']')
+
+            res = res.replace('Solution.Gradient1)', 'Solution\'][1][\'Gradient1\']')
+            res = res.replace('Solution.Gradient2)', 'Solution\'][1][\'Gradient2\']')
+
+            res = res.replace('Solution.MaterialsRheologyZbar)', 'Solution\'][1][\'MaterialsRheologyZbar\']')
+            res = res.replace('Solution.MaterialsRheologyBbar)', 'Solution\'][1][\'MaterialsRheologyBbar\']')
+            res = res.replace('Solution.MaterialsRheologyB)', 'Solution\'][1][\'MaterialsRheologyB\']')
+
+            res = res.replace('Solution.Thickness)', 'Solution\'][1][\'Thickness\']')
+
+            res = res.replace('Solution.Temperature)', 'Solution\'][1][\'Temperature\']')
+
+            res = res.replace('Solution.BasalforcingsMeltingRate)', 'Solution\'][1][\'BasalforcingsMeltingRate\']')
+
+            res = res.replace('Solution.SurfaceSlopeX)', 'Solution\'][1][\'SurfaceSlopeX\']')
+            res = res.replace('Solution.SurfaceSlopeY)', 'Solution\'][1][\'SurfaceSlopeY\']')
+            res = res.replace('Solution.SurfaceSlopeZ)', 'Solution\'][1][\'SurfaceSlopeZ\']')
+
+            res = res.replace('Solution.BedSlopeX)', 'Solution\'][1][\'BedSlopeX\']')
+            res = res.replace('Solution.BedSlopeY)', 'Solution\'][1][\'BedSlopeY\']')
+            res = res.replace('Solution.BedSlopeZ)', 'Solution\'][1][\'BedSlopeZ\']')
+
+            res = res.replace('Solution.Enthalpy)', 'Solution\'][1][\'Enthalpy\']')
+            res = res.replace('Solution.Waterfraction)', 'Solution\'][1][\'Waterfraction\']')
+            res = res.replace('Solution.Temperature)', 'Solution\'][1][\'Temperature\']')
+
+            # special case
+            res = res.replace('.DiagnosticSolution.J', '[\'DiagnosticSolution\'][1][\'J\']')
+
+    return res
+
+
+def output(line):
+    numTabs = indentLevel
+    while numTabs:
+        numTabs -= 1
+        print('\t', end="", file=outputLocation)
+
+    print(line, end="", file=outputLocation)
+
+
+def outputTopOfSript(inputFile):
+
+    global indentLevel
+
+    output("\"\"\"")
+    output("====================================== ")
+    output("Auto generated python script for ISSM: {}".format(inputFile))
+    output("Created on {} via {} Ver {} by {}".format(datetime.date.today(), program, version, os.getlogin()))
+    output("====================================== ")
+    #output("")
+    output(desc)
+    output("%s Author: Michael Pellegrin" % (program))
+    output("%s Date: %s" % (program, versionReleaseDate))
+    output("====================================== ")
+    output("\"\"\"")
+    output("")
+
+
+def outputBottomOfScript():
+
+    global indentLevel
+
+    output("")
+
+
+def genericImports():
+    output("from MatlabFuncs import * ")
+    output("from model import * ")
+    output("from EnumDefinitions import * ")
+    output("from numpy import * ")
+
+
+def createImports(inputFile):
+    genericImports()
+
+    # cycle through eachline to assertain import needs
+    f = codecs.open(inputFile, encoding='utf-8')
+    try:
+        for line in f:
+            # print "in: " + line
+
+            # toss blank lines
+            if len(line) == 1:
+                continue
+
+            asciiLine = unicodedata.normalize('NFKD', line).encode('ascii', 'ignore')
+            line = asciiLine
+
+            for il in importList:
+                if line.find(il) != -1:
+                    output("from %s import * " % (il))
+                    importList.remove(il)    # already got it
+
+    finally:
+        output("")
+        f.close()
+
+
+def initImportList():
+    global importList
+
+    importList = ['triangle',
+                  'setmask',
+                  'parameterize',
+                  'setflowequation',
+                  'meshconvert',
+                  'solve']
+
+
+def convertToPython(inFile, outFile=sys.stdout):
+    #print ' in cnvrt to python w / file:' + inFile
+    initImportList()
+    setupOutputLocation(outFile)
+    outputTopOfSript(inFile)
+    createImports(inFile)
+    translateFile(inFile)
+    #    outputBottomOfScript()
+
+
+if __name__ == "__main__":
+    #print ' in main w / arg:' + sys.argv[1] + ' ' + sys.argv[2]
+    if len(sys.argv) == 2:
+        convertToPython(sys.argv[1], sys.argv[2])
+    else:
+        convertToPython(sys.argv[1])
Index: /issm/branches/trunk-dlcheng-ASE/scripts/user_kill
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/user_kill	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/user_kill	(revision 27955)
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+#get jobs to be killed
+if [ $# -eq 0 ]
+then
+	echo "no job specified"
+	return
+fi
+
+#kill jobs
+for JOB in $*
+do
+
+	#if [[ "$HOSTNAME" != "metro.jpl.nasa.gov" ]]
+	#then
+	#	echo "cannot use user_kill for now"
+	#	exit
+	#fi
+
+	#if [[ $1 == "screen" ]]
+	#then
+	#	echo "cannot kill screen for now!"
+	#	exit 1
+	#fi
+
+
+
+	#if [[ $1 == "matlab" ]]
+	#then
+	#	echo "cannot kill matlab for now!"
+	#	exit 1
+	#fi
+
+	if [ "$JOB" = "konsole" ]; then
+		echo "cannot kill konsole for now!"
+		exit 1
+	fi
+
+	echo "killing $JOB"
+
+	for i in `ps aux | grep $JOB | grep -v grep | grep -v user_kill | awk '{printf("%s\n",$2);}'`; 
+	do 
+		kill -9 $i;
+	done;
+done
Index: /issm/branches/trunk-dlcheng-ASE/scripts/vie
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/vie	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/vie	(revision 27955)
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+if [ -z "$EXECUTION_DIR" ];
+then
+	EXECUTION_DIR="$ISSM_DIR/execution"
+fi
+
+DIR=$(ls -rtd1 $EXECUTION_DIR/* | tail -n1)
+vim $DIR/*.errlog
Index: /issm/branches/trunk-dlcheng-ASE/scripts/vil
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/vil	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/vil	(revision 27955)
@@ -0,0 +1,8 @@
+#!/bin/bash
+if [ -z $EXECUTION_DIR ];
+then
+	EXECUTION_DIR="$ISSM_DIR/execution"
+fi
+
+DIR=$(ls -rtd1 $EXECUTION_DIR/* | tail -n1)
+vim $DIR/*.outlog
Index: /issm/branches/trunk-dlcheng-ASE/scripts/wincron.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/wincron.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/wincron.sh	(revision 27955)
@@ -0,0 +1,5 @@
+#/bin/bash
+#Launch cron as a windows service, using cygrunsrv: 
+
+cygrunsrv --install cron --path /usr/sbin/cron --args -n
+net start cron
Index: /issm/branches/trunk-dlcheng-ASE/scripts/windowsbuild.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/scripts/windowsbuild.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/scripts/windowsbuild.sh	(revision 27955)
@@ -0,0 +1,21 @@
+#!/bin/bash
+#build windows archive of binaries.
+
+#Some local script functions 
+function today_date {
+suffix=`date | awk '{printf("%s-%s-%s",$2,$3,$6);}'` 
+echo $suffix;
+}
+
+#Create tar file, with today's date in the title;
+today=`today_date`
+
+cd $ISSM_DIR/bin
+
+#Filter out .svn files
+rm -rf list
+ls *.mexw32 | grep -v "\.svn" > list;
+
+tar zcvf ../issm-1.0-win-$today.tar.gz  `cat list`
+rm -rf list
+
Index: /issm/branches/trunk-dlcheng-ASE/src/Makefile.am
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/Makefile.am	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/Makefile.am	(revision 27955)
@@ -0,0 +1,2 @@
+EXTRA_DIST =  perl
+SUBDIRS = c m wrappers
Index: /issm/branches/trunk-dlcheng-ASE/src/c/Makefile.am
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/Makefile.am	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/Makefile.am	(revision 27955)
@@ -0,0 +1,873 @@
+AM_CPPFLAGS = @NEOPZINCL@ @DAKOTAINCL@ @SHAPELIBINCL@ @TRIANGLEINCL@ @PETSCINCL@ @SLEPCINCL@ @AMPIINCL@ @ADJOINTMPIINCL@ @MEDIPACKINCL@ @MPIINCL@ @PARMETISINCL@ @METISINCL@ @CHACOINCL@ @SCOTCHINCL@ @PLAPACKINCL@ @MKLINCL@ @MUMPSINCL@ @SPAIINCL@ @HYPREINCL@ @PROMETHEUSINCL@ @SUPERLUINCL@ @SPOOLESINCL@ @PASTIXINCL@ @MLINCL@ @TAOINCL@ @ADIC2INCL@ @ADOLCINCL@ @CODIPACKINCL@ @GSLINCL@ @BOOSTINCL@ @ANDROID_NDKINCL@ @METEOIOINCL@ @SNOWPACKINCL@ @PROJINCL@ @ESMFINCL@ @PROJINCL@ @MPLAPACKINCL@
+AM_FCFLAGS = @SEMICINCL@
+
+AUTOMAKE_OPTIONS = subdir-objects
+
+EXEEXT=$(ISSMEXT)
+
+# Library declaration {{{
+lib_LTLIBRARIES = libISSMCore.la
+if !MSYS2
+lib_LTLIBRARIES += libISSMOverload.la
+endif
+if WRAPPERS
+lib_LTLIBRARIES += libISSMModules.la
+endif
+#}}}
+
+# Core sources
+issm_sources =
+
+# BAMG sources {{{
+if BAMG
+issm_sources += \
+	./bamg/BamgGeom.cpp \
+	./bamg/BamgMesh.cpp \
+	./bamg/BamgOpts.cpp \
+	./bamg/CrackedEdge.cpp \
+	./bamg/Curve.cpp \
+	./bamg/Edge.cpp \
+	./bamg/GeomEdge.cpp \
+	./bamg/GeomSubDomain.cpp \
+	./bamg/GeomVertex.cpp \
+	./bamg/Geometry.cpp \
+	./bamg/ListofIntersectionTriangles.cpp \
+	./bamg/EigenMetric.cpp \
+	./bamg/Metric.cpp \
+	./bamg/BamgQuadtree.cpp \
+	./bamg/SetOfE4.cpp \
+	./bamg/SubDomain.cpp \
+	./bamg/AdjacentTriangle.cpp \
+	./bamg/Triangle.cpp \
+	./bamg/BamgVertex.cpp \
+	./bamg/VertexOnEdge.cpp \
+	./bamg/VertexOnGeom.cpp \
+	./bamg/VertexOnVertex.cpp \
+	./bamg/Mesh.cpp \
+	./shared/Bamg/BigPrimeNumber.cpp \
+	./modules/Bamgx/Bamgx.cpp \
+	./modules/BamgConvertMeshx/BamgConvertMeshx.cpp \
+	./modules/BamgTriangulatex/BamgTriangulatex.cpp
+
+# Do not include AmrBamg with AD
+if ADOLC
+issm_sources += \
+	./shared/Numerics/isnan.cpp \
+	./shared/MemOps/MemOps.cpp
+else
+if CODIPACK
+issm_sources += ./shared/Numerics/isnan.cpp
+else
+issm_sources += ./classes/AmrBamg.cpp
+endif
+endif
+endif
+#}}}
+# Core sources {{{
+issm_sources += \
+	./datastructures/DataSet.cpp \
+	./classes/gauss/GaussSeg.cpp \
+	./classes/gauss/GaussTria.cpp \
+	./classes/gauss/GaussTetra.cpp \
+	./classes/gauss/GaussPenta.cpp \
+	./classes/IoModel.cpp \
+	./classes/FemModel.cpp \
+	./classes/Loads/Friction.cpp \
+	./classes/Constraints/SpcTransient.cpp \
+	./classes/DependentObject.cpp \
+	./classes/Contours.cpp \
+	./classes/Vertices.cpp \
+	./classes/Nodes.cpp \
+	./classes/Numberedcostfunction.cpp \
+	./classes/Misfit.cpp \
+	./classes/Cfsurfacesquare.cpp \
+	./classes/Cfsurfacesquaretransient.cpp \
+	./classes/Cfdragcoeffabsgrad.cpp \
+	./classes/Cfdragcoeffabsgradtransient.cpp \
+	./classes/Cfrheologybbarabsgrad.cpp \
+	./classes/Cfrheologybbarabsgradtransient.cpp \
+	./classes/Cfsurfacelogvel.cpp \
+	./classes/Cflevelsetmisfit.cpp \
+	./classes/Regionaloutput.cpp \
+	./classes/Nodalvalue.cpp \
+	./classes/Node.cpp \
+	./classes/Vertex.cpp \
+	./classes/Hook.cpp \
+	./classes/Radar.cpp \
+	./classes/BarystaticContributions.cpp \
+	./classes/ExternalResults/Results.cpp \
+	./classes/Elements/Element.cpp \
+	./classes/Elements/Elements.cpp \
+	./classes/Elements/ElementHook.cpp \
+	./classes/Elements/Seg.cpp \
+	./classes/Elements/SegRef.cpp \
+	./classes/Elements/Tria.cpp \
+	./classes/Elements/TriaRef.cpp \
+	./classes/Elements/Tetra.cpp \
+	./classes/Elements/TetraRef.cpp \
+	./classes/Elements/Penta.cpp \
+	./classes/Elements/PentaRef.cpp \
+	./classes/Materials/Materials.cpp \
+	./classes/Materials/Matice.cpp \
+	./classes/Materials/Matlitho.cpp \
+	./classes/Materials/Matestar.cpp \
+	./classes/Constraints/Constraints.cpp \
+	./classes/Constraints/SpcStatic.cpp \
+	./classes/Constraints/SpcDynamic.cpp \
+	./classes/Loads/Channel.cpp \
+	./classes/Loads/Loads.cpp \
+	./classes/Loads/Penpair.cpp \
+	./classes/Loads/Pengrid.cpp \
+	./classes/Loads/Moulin.cpp \
+	./classes/Loads/Numericalflux.cpp \
+	./classes/Loads/Neumannflux.cpp \
+	./classes/matrix/ElementMatrix.cpp \
+	./classes/matrix/ElementVector.cpp \
+	./classes/Params/Parameters.cpp \
+	./classes/Params/BoolParam.cpp \
+	./classes/Params/ControlParam.cpp \
+	./classes/Params/IntParam.cpp \
+	./classes/Params/IntVecParam.cpp \
+	./classes/Params/IntMatParam.cpp \
+	./classes/Params/DoubleParam.cpp \
+	./classes/Params/FileParam.cpp \
+	./classes/Params/StringArrayParam.cpp \
+	./classes/Params/DoubleMatParam.cpp \
+	./classes/Params/DoubleTransientMatParam.cpp \
+	./classes/Params/DoubleMatArrayParam.cpp \
+	./classes/Params/DoubleVecParam.cpp \
+	./classes/Params/StringParam.cpp \
+	./classes/Params/MatrixParam.cpp \
+	./classes/Params/VectorParam.cpp \
+	./classes/Params/TransientParam.cpp \
+	./classes/Params/TransientArrayParam.cpp \
+	./classes/Params/DataSetParam.cpp \
+	./classes/Profiler.cpp \
+	./shared/Matrix/MatrixUtils.cpp \
+	./shared/io/Disk/pfopen.cpp \
+	./shared/io/Disk/pfclose.cpp \
+	./shared/io/Disk/WriteLockFile.cpp \
+	./shared/io/Print/PrintfFunction.cpp \
+	./shared/io/Comm/IssmComm.cpp \
+	./shared/io/Marshalling/IoCodeConversions.cpp \
+	./shared/io/Marshalling/Marshalling.cpp \
+	./shared/LatLong/Ll2xyx.cpp \
+	./shared/LatLong/Xy2llx.cpp \
+	./shared/FSanalyticals/fsanalyticals.cpp \
+	./shared/Enum/EnumToStringx.cpp \
+	./shared/Enum/StringToEnumx.cpp \
+	./shared/Numerics/Verbosity.cpp \
+	./shared/Numerics/GaussPoints.cpp \
+	./shared/Numerics/cross.cpp \
+	./shared/Numerics/cubic.cpp \
+	./shared/Numerics/NewtonSolveDnorm.cpp \
+	./shared/Numerics/ODE1.cpp \
+	./shared/Numerics/extrema.cpp \
+	./shared/Numerics/legendre.cpp \
+	./shared/Numerics/XZvectorsToCoordinateSystem.cpp \
+	./shared/Exceptions/Exceptions.cpp \
+	./shared/Sorting/binary_search.cpp \
+	./shared/Elements/Cuffey.cpp \
+	./shared/Elements/BuddJacka.cpp \
+	./shared/Elements/CuffeyTemperate.cpp \
+	./shared/Elements/StressIntensityIntegralWeight.cpp \
+	./shared/Elements/Paterson.cpp \
+	./shared/Elements/Arrhenius.cpp \
+	./shared/Elements/NyeCO2.cpp \
+	./shared/Elements/NyeH2O.cpp \
+	./shared/Elements/LliboutryDuval.cpp \
+	./shared/Elements/PrintArrays.cpp \
+	./shared/Elements/PddSurfaceMassBalance.cpp \
+	./shared/Elements/PddSurfaceMassBalanceSicopolis.cpp \
+	./shared/Elements/ComputeDelta18oTemperaturePrecipitation.cpp \
+	./shared/Elements/ComputeMungsmTemperaturePrecipitation.cpp \
+	./shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp \
+	./shared/Elements/DrainageFunctionWaterfraction.cpp \
+	./shared/Elements/EstarComponents.cpp \
+	./shared/Random/random.cpp \
+	./shared/Random/randomgenerator.cpp \
+	./shared/String/DescriptorIndex.cpp \
+	./toolkits/issm/IssmToolkitUtils.cpp \
+	./toolkits/issm/IssmSolver.cpp \
+	./toolkits/mpi/issmmpi.cpp \
+	./toolkits/mpi/commops/DetermineLocalSize.cpp \
+	./toolkits/mpi/commops/DetermineGlobalSize.cpp \
+	./toolkits/mpi/commops/DetermineRowRankFromLocalSize.cpp \
+	./toolkits/mpi/commops/GetOwnershipBoundariesFromRange.cpp \
+	./toolkits/ToolkitOptions.cpp \
+	./modules/MmeToInputFromIdx/MmeToInputFromIdx.cpp\
+	./modules/ModelProcessorx/ModelProcessorx.cpp \
+	./modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp \
+	./modules/ModelProcessorx/NodesPartitioning.cpp \
+	./modules/ModelProcessorx/EdgesPartitioning.cpp \
+	./modules/ModelProcessorx/FacesPartitioning.cpp \
+	./modules/ModelProcessorx/CreateParameters.cpp \
+	./modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp \
+	./modules/ModelProcessorx/CreateFaces.cpp \
+	./modules/ModelProcessorx/CreateEdges.cpp \
+	./modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp \
+	./modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp \
+	./modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp \
+	./modules/ModelProcessorx/CreateNodes.cpp \
+	./modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.cpp \
+	./modules/NodesDofx/NodesDofx.cpp \
+	./modules/NodalValuex/NodalValuex.cpp \
+	./modules/VertexCoordinatesx/VertexCoordinatesx.cpp \
+	./modules/ElementCoordinatesx/ElementCoordinatesx.cpp \
+	./modules/OutputResultsx/OutputResultsx.cpp \
+	./modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.cpp \
+	./modules/InputDuplicatex/InputDuplicatex.cpp \
+	./modules/InputExtrudex/InputExtrudex.cpp \
+	./modules/SurfaceAreax/SurfaceAreax.cpp \
+	./modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp \
+	./modules/CreateJacobianMatrixx/CreateJacobianMatrixx.cpp \
+	./modules/SystemMatricesx/SystemMatricesx.cpp \
+	./modules/CreateNodalConstraintsx/CreateNodalConstraintsx.cpp \
+	./modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.cpp \
+	./modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp \
+	./modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp \
+	./modules/InputUpdateFromConstantx/InputUpdateFromConstantx.cpp \
+	./modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.cpp \
+	./modules/GeothermalFluxx/GeothermalFluxx.cpp \
+	./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp \
+	./modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp \
+	./modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp \
+	./modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp \
+	./modules/FloatingiceMeltingRatePicox/FloatingiceMeltingRatePicox.cpp \
+	./modules/FrontalForcingsx/FrontalForcingsx.cpp \
+	./modules/ConfigureObjectsx/ConfigureObjectsx.cpp \
+	./modules/SpcNodesx/SpcNodesx.cpp \
+	./modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp \
+	./modules/SurfaceMassBalancex/Gembx.cpp \
+	./modules/Reducevectorgtofx/Reducevectorgtofx.cpp \
+	./modules/Reduceloadx/Reduceloadx.cpp \
+	./modules/ConstraintsStatex/ConstraintsStatex.cpp \
+	./modules/ResetConstraintsx/ResetConstraintsx.cpp \
+	./modules/ResetFSBasalBoundaryConditionx/ResetFSBasalBoundaryConditionx.cpp \
+	./modules/Solverx/Solverx.cpp \
+	./modules/StochasticForcingx/StochasticForcingx.cpp \
+	./modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp \
+	./cores/ProcessArguments.cpp \
+	./cores/ResetBoundaryConditions.cpp \
+	./cores/WrapperCorePointerFromSolutionEnum.cpp \
+	./cores/WrapperPreCorePointerFromSolutionEnum.cpp \
+	./cores/CorePointerFromSolutionEnum.cpp \
+	./cores/ad_core.cpp \
+	./cores/adgradient_core.cpp \
+	./main/EnvironmentInit.cpp \
+	./main/EnvironmentFinalize.cpp \
+	./analyses/EnumToAnalysis.cpp \
+	./solutionsequences/solutionsequence_la.cpp \
+	./solutionsequences/solutionsequence_la_theta.cpp \
+	./solutionsequences/solutionsequence_linear.cpp \
+	./solutionsequences/solutionsequence_nonlinear.cpp \
+	./solutionsequences/solutionsequence_newton.cpp \
+	./solutionsequences/solutionsequence_fct.cpp \
+	./solutionsequences/solutionsequence_schurcg.cpp \
+	./solutionsequences/solutionsequence_sampling.cpp \
+	./solutionsequences/convergence.cpp \
+	./classes/Options/Options.cpp \
+	./classes/Options/OptionUtilities.cpp \
+	./classes/RiftStruct.cpp \
+	./modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp \
+	./modules/ModelProcessorx/Transient/UpdateParametersTransient.cpp \
+	./cores/transient_core.cpp \
+	./cores/steadystate_core.cpp \
+	./cores/masstransport_core.cpp \
+	./cores/oceantransport_core.cpp \
+	./cores/depthaverage_core.cpp \
+	./cores/extrudefrombase_core.cpp \
+	./cores/extrudefromtop_core.cpp \
+	./cores/thermal_core.cpp \
+	./cores/smb_core.cpp \
+	./cores/bmb_core.cpp \
+	./cores/debris_core.cpp \
+	./solutionsequences/solutionsequence_thermal_nonlinear.cpp \
+	./modules/ControlInputSetGradientx/ControlInputSetGradientx.cpp \
+	./modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.cpp \
+	./modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.cpp \
+	./modules/ModelProcessorx/Control/CreateParametersControl.cpp \
+	./modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp \
+	./modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp \
+	./modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp \
+	./modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp \
+	./modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp \
+	./modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp \
+	./modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.cpp \
+	./modules/Gradjx/Gradjx.cpp \
+	./modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.cpp \
+	./modules/ThicknessAlongGradientx/ThicknessAlongGradientx.cpp \
+	./modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.cpp \
+	./modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.cpp \
+	./modules/RheologyBAbsGradientx/RheologyBAbsGradientx.cpp \
+	./shared/Numerics/BrentSearch.cpp \
+	./cores/control_core.cpp \
+	./cores/controltao_core.cpp \
+	./cores/controlm1qn3_core.cpp \
+	./cores/controladm1qn3_core.cpp \
+	./cores/controlvalidation_core.cpp \
+	./cores/adjointstressbalance_core.cpp \
+	./cores/adjointbalancethickness_core.cpp \
+	./cores/adjointbalancethickness2_core.cpp \
+	./cores/AdjointCorePointerFromSolutionEnum.cpp \
+	./solutionsequences/solutionsequence_adjoint_linear.cpp \
+	./cores/hydrology_core.cpp \
+	./solutionsequences/solutionsequence_hydro_nonlinear.cpp \
+	./solutionsequences/solutionsequence_shakti_nonlinear.cpp \
+	./solutionsequences/solutionsequence_glads_nonlinear.cpp \
+	./cores/stressbalance_core.cpp \
+	./solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp \
+	./cores/balancethickness_core.cpp \
+	./cores/balancethickness2_core.cpp \
+	./cores/balancevelocity_core.cpp \
+	./cores/dummy_core.cpp \
+	./cores/surfaceslope_core.cpp \
+	./cores/bedslope_core.cpp \
+	./cores/damage_core.cpp \
+	./cores/levelsetfunctionslope_core.cpp \
+	./cores/movingfront_core.cpp \
+	./cores/groundingline_core.cpp \
+	./modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp \
+	./classes/Loads/Riftfront.cpp \
+	./modules/ConstraintsStatex/RiftConstraintsState.cpp \
+	./modules/ModelProcessorx/CreateOutputDefinitions.cpp \
+	./modules/OutputDefinitionsResponsex/OutputDefinitionsResponsex.cpp \
+	./modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp \
+	./classes/Inputs/Inputs.cpp \
+	./classes/Inputs/BoolInput.cpp \
+	./classes/Inputs/DoubleInput.cpp \
+	./classes/Inputs/IntInput.cpp \
+	./classes/Inputs/ElementInput.cpp \
+	./classes/Inputs/SegInput.cpp \
+	./classes/Inputs/TriaInput.cpp \
+	./classes/Inputs/PentaInput.cpp \
+	./classes/Inputs/DatasetInput.cpp \
+	./classes/Inputs/ControlInput.cpp \
+	./classes/Inputs/TransientInput.cpp \
+	./classes/Inputs/ArrayInput.cpp \
+	./classes/Inputs/IntArrayInput.cpp
+#}}}
+# ADJOINTMPI/MeDiPack sources {{{
+if ADJOINTMPI
+issm_sources += ./toolkits/codipack/ampi_interface.cpp
+endif
+if MEDIPACK
+issm_sources += ./toolkits/codipack/ampi_interface.cpp
+endif
+#}}}
+# DAKOTA sources {{{
+if DAKOTA
+issm_sources += \
+	./classes/Dakota/IssmDirectApplicInterface.h \
+	./classes/Dakota/IssmParallelDirectApplicInterface.cpp \
+	./modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp \
+	./modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp \
+	./modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp \
+	./modules/AverageOntoPartitionx/AverageOntoPartitionx.cpp \
+	./modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp \
+	./modules/ModelProcessorx/Dakota/UpdateElementsAndMaterialsDakota.cpp \
+	./cores/dakota_core.cpp
+if SYSTEM_HAS_FMEMOPEN
+issm_sources += ./modules/QmuStatisticsx/QmuStatisticsx.cpp
+endif
+endif
+#}}}
+# PETSc sources {{{
+if PETSC
+issm_sources += \
+	./toolkits/petsc \
+	./toolkits/petsc/patches \
+	./toolkits/petsc/patches/VecToMPISerial.cpp \
+	./toolkits/petsc/patches/MatToMPISerial.cpp \
+	./toolkits/petsc/patches/NewVec.cpp \
+	./toolkits/petsc/patches/PetscOptionsDetermineSolverType.cpp \
+	./toolkits/petsc/patches/NewMat.cpp \
+	./toolkits/petsc/patches/VecFree.cpp \
+	./toolkits/petsc/patches/KSPFree.cpp \
+	./toolkits/petsc/patches/MatFree.cpp \
+	./toolkits/petsc/patches/MatMultPatch.cpp \
+	./toolkits/petsc/patches/ISSMToPetscMatrixType.cpp \
+	./toolkits/petsc/patches/ISSMToPetscInsertMode.cpp \
+	./toolkits/petsc/patches/ISSMToPetscNormMode.cpp \
+	./toolkits/petsc/objects/PetscMat.cpp \
+	./toolkits/petsc/objects/PetscVec.cpp \
+	./toolkits/petsc/objects/PetscSolver.cpp
+endif
+#}}}
+# MUMPS sources {{{
+if MUMPS
+issm_sources += ./toolkits/mumps/MumpsSolve.cpp
+endif
+#}}}
+# GSL sources {{{
+if GSL
+issm_sources += ./toolkits/gsl/DenseGslSolve.cpp
+endif
+#}}}
+# PROJ sources {{{
+if PROJ
+issm_sources += ./modules/CoordinateSystemTransformx/CoordinateSystemTransformx.cpp
+endif
+#}}}
+# Analyses {{{
+if ADJOINTBALANCETHICKNESS
+issm_sources += ./analyses/AdjointBalancethicknessAnalysis.cpp
+endif
+if ADJOINTBALANCETHICKNESS2
+issm_sources += ./analyses/AdjointBalancethickness2Analysis.cpp
+endif
+if ADJOINTHORIZ
+issm_sources += ./analyses/AdjointHorizAnalysis.cpp
+endif
+if AGE
+issm_sources += ./analyses/AgeAnalysis.cpp
+endif
+if BALANCETHICKNESS
+issm_sources += ./analyses/BalancethicknessAnalysis.cpp
+endif
+if BALANCETHICKNESS2
+issm_sources += ./analyses/Balancethickness2Analysis.cpp
+endif
+if BALANCETHICKNESSSOFT
+issm_sources += ./analyses/BalancethicknessSoftAnalysis.cpp
+endif
+if BALANCEVELOCITY
+issm_sources += ./analyses/BalancevelocityAnalysis.cpp
+endif
+if L2PROJECTIONBASE
+issm_sources += ./analyses/L2ProjectionBaseAnalysis.cpp
+endif
+if DAMAGEEVOLUTION
+issm_sources += ./analyses/DamageEvolutionAnalysis.cpp
+issm_sources += ./modules/Damagex/Damagex.cpp
+endif
+if DEBRIS
+issm_sources += ./analyses/DebrisAnalysis.cpp
+endif
+if STRESSBALANCE
+issm_sources += ./analyses/StressbalanceAnalysis.cpp
+endif
+if UZAWAPRESSURE
+issm_sources += ./analyses/UzawaPressureAnalysis.cpp
+endif
+if STRESSBALANCESIA
+issm_sources += ./analyses/StressbalanceSIAAnalysis.cpp
+endif
+if STRESSBALANCEVERTICAL
+issm_sources += ./analyses/StressbalanceVerticalAnalysis.cpp
+endif
+if ENTHALPY
+issm_sources += ./analyses/EnthalpyAnalysis.cpp
+endif
+if GLHEIGHTADVECTION
+issm_sources += ./analyses/GLheightadvectionAnalysis.cpp
+endif
+if HYDROLOGYSHREVE
+issm_sources += ./analyses/HydrologyShreveAnalysis.cpp
+endif
+if HYDROLOGYTWS
+issm_sources += ./analyses/HydrologyTwsAnalysis.cpp
+endif
+
+if HYDROLOGYSHAKTI
+issm_sources += ./analyses/HydrologyShaktiAnalysis.cpp
+endif
+if HYDROLOGYPISM
+issm_sources += ./analyses/HydrologyPismAnalysis.cpp
+endif
+if HYDROLOGYGLADS
+issm_sources += ./analyses/HydrologyGlaDSAnalysis.cpp
+endif
+if HYDROLOGYDCINEFFICIENT
+issm_sources += ./analyses/HydrologyDCInefficientAnalysis.cpp
+endif
+if HYDROLOGYDCEFFICIENT
+issm_sources += ./analyses/HydrologyDCEfficientAnalysis.cpp
+endif
+if HYDROLOGYARMAPW
+issm_sources += ./analyses/HydrologyArmapwAnalysis.cpp
+endif
+if L2PROJECTIONEPL
+issm_sources += ./analyses/L2ProjectionEPLAnalysis.cpp
+endif
+if MELTING
+issm_sources += ./analyses/MeltingAnalysis.cpp
+endif
+if MASSTRANSPORT
+issm_sources += ./analyses/MasstransportAnalysis.cpp
+endif
+if OCEANTRANSPORT
+issm_sources += ./analyses/OceantransportAnalysis.cpp
+endif
+if SMB
+issm_sources += ./analyses/SmbAnalysis.cpp
+endif
+
+if FREESURFACEBASE
+issm_sources += ./analyses/FreeSurfaceBaseAnalysis.cpp
+endif
+if FREESURFACETOP
+issm_sources += ./analyses/FreeSurfaceTopAnalysis.cpp
+endif
+if EXTRUDEFROMBASE
+issm_sources += ./analyses/ExtrudeFromBaseAnalysis.cpp
+endif
+if EXTRUDEFROMTOP
+issm_sources += ./analyses/ExtrudeFromTopAnalysis.cpp
+endif
+if DEPTHAVERAGE
+issm_sources += ./analyses/DepthAverageAnalysis.cpp
+endif
+if THERMAL
+issm_sources += ./analyses/ThermalAnalysis.cpp
+endif
+if SMOOTH
+issm_sources += ./analyses/SmoothAnalysis.cpp
+endif
+if LEVELSET
+issm_sources += ./analyses/LevelsetAnalysis.cpp
+issm_sources += ./modules/Calvingx/Calvingx.cpp
+issm_sources += ./modules/KillIcebergsx/KillIcebergsx.cpp
+endif
+if EXTRAPOLATION
+issm_sources += ./analyses/ExtrapolationAnalysis.cpp
+endif
+#}}}
+# Love sources (only if have Fortran) {{{
+if LOVE
+if FORTRAN
+issm_sources += \
+	./cores/love_core.cpp \
+	./analyses/LoveAnalysis.cpp
+endif
+endif
+#}}}
+# Esa sources {{{
+if ESA
+issm_sources += \
+	./cores/esa_core.cpp \
+	./analyses/EsaAnalysis.cpp
+endif
+#}}}
+# Ocean sources {{{
+if OCEAN
+issm_sources += ./modules/OceanExchangeDatax/OceanExchangeDatax.cpp
+endif
+#}}}
+# Sampling sources {{{
+if SAMPLING
+issm_sources += \
+	./cores/sampling_core.cpp \
+	./analyses/SamplingAnalysis.cpp
+endif
+#}}}
+# SLC sources {{{
+if SEALEVELCHANGE
+issm_sources += \
+	./cores/sealevelchange_core.cpp \
+	./analyses/SealevelchangeAnalysis.cpp\
+	./classes/GrdLoads.cpp\
+	./classes/SealevelGeometry.cpp
+
+# GIA Ivins physics (only if have Fortran)
+if FORTRAN
+issm_sources += \
+	./modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp \
+	./modules/GiaDeflectionCorex/distme.f \
+	./modules/GiaDeflectionCorex/freed.f \
+	./modules/GiaDeflectionCorex/ojrule.f \
+	./modules/GiaDeflectionCorex/pwise.f \
+	./modules/GiaDeflectionCorex/qwise.f \
+	./modules/GiaDeflectionCorex/stot.f \
+	./modules/GiaDeflectionCorex/what0.f
+endif
+
+endif
+#}}}
+# METIS sources {{{
+if METIS
+issm_sources += ./toolkits/metis/patches/METIS_PartMeshNodalPatch.cpp
+endif
+#}}}
+# Esmf sources {{{
+if ESMF
+issm_sources += ./main/esmfbinders.cpp
+endif
+#}}}
+# SEMIC sources {{{
+if SEMIC
+if FORTRAN
+issm_sources += ./modules/SurfaceMassBalancex/run_semic.f90
+issm_sources += ./modules/SurfaceMassBalancex/run_semic_transient.f90
+endif
+endif
+#}}}
+# Wrapper sources
+# Kml sources {{{
+kml_sources = \
+	./modules/Exp2Kmlx/Exp2Kmlx.cpp \
+	./modules/Kml2Expx/Kml2Expx.cpp \
+	./modules/Shp2Kmlx/Shp2Kmlx.cpp \
+	./modules/KMLFileReadx/KMLFileReadx.cpp \
+	./modules/KMLMeshWritex/KMLMeshWritex.cpp \
+	./modules/KMLOverlayx/KMLOverlayx.cpp \
+	./kml/KML_Attribute.cpp \
+	./kml/KML_Comment.cpp \
+	./kml/KML_ColorStyle.cpp \
+	./kml/KML_Container.cpp \
+	./kml/KML_Document.cpp \
+	./kml/KML_Feature.cpp \
+	./kml/KML_File.cpp \
+	./kml/KML_Folder.cpp \
+	./kml/KML_Geometry.cpp \
+	./kml/KML_GroundOverlay.cpp \
+	./kml/KML_Icon.cpp \
+	./kml/KML_LatLonBox.cpp \
+	./kml/KML_LinearRing.cpp \
+	./kml/KML_LineString.cpp \
+	./kml/KML_LineStyle.cpp \
+	./kml/KML_MultiGeometry.cpp \
+	./kml/KML_Object.cpp \
+	./kml/KML_Overlay.cpp \
+	./kml/KML_Point.cpp \
+	./kml/KML_Placemark.cpp \
+	./kml/KML_Polygon.cpp \
+	./kml/KML_PolyStyle.cpp \
+	./kml/KML_Style.cpp \
+	./kml/KML_StyleSelector.cpp \
+	./kml/KML_SubStyle.cpp \
+	./kml/KML_Unknown.cpp \
+	./kml/KMLFileReadUtils.cpp
+#}}}
+# NEOPZ sources {{{
+neopz_sources = ./classes/AmrNeopz.cpp
+#}}}
+# Modules sources {{{
+modules_sources = \
+	./shared/Threads/LaunchThread.cpp \
+	./shared/Threads/PartitionRange.cpp \
+	./shared/Exp/exp.cpp \
+	./shared/Triangle/AssociateSegmentToElement.cpp \
+	./shared/Triangle/GridInsideHole.cpp \
+	./shared/Triangle/OrderSegments.cpp \
+	./shared/Triangle/SplitMeshForRifts.cpp \
+	./shared/Triangle/TriangleUtils.cpp \
+	./modules/Trianglex/Trianglex.cpp \
+	./modules/ProcessRiftsx/ProcessRiftsx.cpp \
+	./modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.cpp \
+	./modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp \
+	./modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp \
+	./modules/InterpFromMesh2dx/InterpFromMesh2dx.cpp \
+	./modules/InterpFromMesh2dx/InterpFromMesh2dxt.cpp \
+	./modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.cpp \
+	./modules/InterpFromMeshToGridx/InterpFromMeshToGridx.cpp \
+	./modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp \
+	./modules/ContourToMeshx/ContourToMeshx.cpp \
+	./modules/ContourToMeshx/ContourToMeshxt.cpp \
+	./modules/ExpToLevelSetx/ExpToLevelSetx.cpp \
+	./modules/ExpToLevelSetx/ExpToLevelSetxt.cpp \
+	./modules/ContourToNodesx/ContourToNodesx.cpp \
+	./modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.cpp \
+	./modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryxt.cpp \
+	./modules/NodeConnectivityx/NodeConnectivityx.cpp \
+	./modules/ElementConnectivityx/ElementConnectivityx.cpp \
+	./modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.cpp
+
+if CHACO
+modules_sources += \
+	./modules/Chacox/Chacox.cpp \
+	./modules/Chacox/input_parse.cpp \
+	./modules/Chacox/chaco_seconds.cpp \
+	./modules/Chacox/user_params.cpp
+endif
+if SCOTCH
+modules_sources += ./modules/Scotchx/Scotchx.cpp
+endif
+#}}}
+
+# Kriging (wrapper and executable)
+# Kriging sources {{{
+if KRIGING
+issm_sources += \
+	./classes/kriging/Observations.cpp \
+	./classes/kriging/GaussianVariogram.cpp \
+	./classes/kriging/ExponentialVariogram.cpp \
+	./classes/kriging/SphericalVariogram.cpp \
+	./classes/kriging/PowerVariogram.cpp \
+	./classes/kriging/Quadtree.cpp \
+	./classes/kriging/Covertree.cpp \
+	./classes/kriging/Observation.cpp \
+	./modules/Krigingx/pKrigingx.cpp
+
+modules_sources += \
+	./modules/Krigingx/Krigingx.cpp \
+	./modules/Krigingx/pKrigingx.cpp
+endif
+#}}}
+# Library flags and sources {{{
+ALL_CXXFLAGS = $(CXXFLAGS) $(CXXOPTFLAGS)
+
+if MSYS2
+ALL_CXXFLAGS += -D_DO_NOT_LOAD_GLOBALS_ # Cannot have undefined symbols under MSYS2
+ALL_CXXFLAGS += -D_USE_MATH_DEFINES # Need to open fence to math.h definitions when --std=c++ is used (which is the default)
+endif
+
+libISSMCore_la_SOURCES  = $(issm_sources)
+libISSMCore_la_CXXFLAGS = $(ALL_CXXFLAGS) $(DAKOTAFLAGS)
+libISSMCore_la_FFLAGS = $(AM_FFLAGS)
+
+libISSMCore_la_LIBADD = $(CHACOLIB) $(DAKOTALIB) $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(HDF5LIB) $(TAOLIB) $(M1QN3LIB) $(SEMICLIB) $(PLAPACKLIB) $(MPLAPACKLIB) $(SUPERLULIB) $(SPOOLESLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(SCOTCHLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(ADOLCLIB) $(AMPILIB) $(ADJOINTMPILIB) $(METEOIOLIB) $(SNOWPACKLIB) $(PROJLIB) 
+if FORTRAN
+libISSMCore_la_LIBADD += $(FLIBS) $(FORTRANLIB)
+endif
+libISSMCore_la_LIBADD += $(OSLIBS)
+
+if NEOPZ
+libISSMCore_la_SOURCES += $(neopz_sources)
+endif
+
+if WRAPPERS
+libISSMModules_la_SOURCES = $(modules_sources)
+libISSMModules_la_SOURCES += $(bamg_sources)
+if KRIGING
+libISSMModules_la_SOURCES += $(kriging_sources)
+endif
+if KML
+libISSMModules_la_SOURCES += $(kml_sources)
+endif
+
+libISSMModules_la_CXXFLAGS = $(ALL_CXXFLAGS)
+libISSMModules_la_LIBADD = ./libISSMCore.la $(TRIANGLELIB) $(CHACOLIB) $(BLASLAPACKLIB) $(OSLIBS)
+endif
+
+
+AM_LDFLAGS =
+
+if !VERSION
+AM_LDFLAGS += -avoid-version
+endif
+
+# NOTE:
+# - On Linux, We probably do not need the -static flag as long as we only
+#	generate static libraries for external packages. Dynamic system libraries
+#	will be linked to, whether we like it or not, if no static version is
+#	available.
+# - On macOS, static linking of binaries is not supported.
+#
+if STANDALONE_EXECUTABLES
+if MAC
+AM_LDFLAGS += -Wl,-rpath,'@loader_path/../lib'
+else
+AM_LDFLAGS += -Wl,-static
+if !MSYS2
+AM_LDFLAGS += -Wl,--disable-new-dtags -Wl,-rpath,'$$ORIGIN/../lib'
+endif
+endif
+else
+if MAC
+if HAVE_FORTRANDIR
+AM_LDFLAGS += -Wl,-rpath,$(FORTRANDIR)
+endif
+endif
+endif
+
+if VERSION
+libISSMCore_la_LDFLAGS =
+if WRAPPERS
+libISSMModules_la_LDFLAGS =
+endif
+else
+libISSMCore_la_LDFLAGS = -avoid-version
+if WRAPPERS
+libISSMModules_la_LDFLAGS = -avoid-version
+endif
+endif
+
+if STANDALONE_LIBRARIES
+if !MSYS2
+libISSMCore_la_LDFLAGS += -static
+if WRAPPERS
+libISSMModules_la_LDFLAGS += -static
+endif
+endif
+endif
+#}}}
+
+if !MSYS2
+# Overload library, to overload any non-standard symbols {{{
+libISSMOverload_la_SOURCES = ./shared/String/ApiPrintf.cpp
+libISSMOverload_la_CFLAGS  = -D_C_ -fPIC $(COPTFLAGS) $(CFLAGS)
+
+if VERSION
+libISSMOverload_la_LDFLAGS =
+else
+libISSMOverload_la_LDFLAGS = -avoid-version
+endif
+
+if STANDALONE_LIBRARIES
+if !MSYS2
+libISSMOverload_la_LDFLAGS += -static
+endif
+endif
+endif
+#}}}
+# Executable {{{
+if ANDROID
+if ANDROIDEXE
+bin_PROGRAMS = issm issm_slc
+else
+bin_PROGRAMS =
+endif
+else
+if JAVASCRIPT
+bin_PROGRAMS =
+else
+bin_PROGRAMS = issm issm_slc
+endif
+endif
+
+# Standard libraries
+LDADD = ./libISSMCore.la
+
+if !MSYS2
+LDADD += ./libISSMOverload.la
+endif
+
+if WRAPPERS
+LDADD += ./libISSMModules.la $(TRIANGLELIB)
+endif
+
+# External packages
+LDADD += $(DAKOTALIB) $(SEMICLIB) $(M1QN3LIB) $(CHACOLIB) $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(NEOPZLIB) $(TAOLIB) $(PLAPACKLIB) $(MPLAPACKLIB) $(SUPERLULIB) $(SPOOLESLIB) $(BLACSLIB) $(HDF5LIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(SCOTCHLIB) $(MKLLIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(AMPILIB) $(ADJOINTMPILIB) $(ADOLCLIB) $(MPILIB) $(METEOIOLIB) $(SNOWPACKLIB) $(PROJLIB) $(ESMFLIB)
+if FORTRAN
+LDADD += $(FLIBS) $(FORTRANLIB)
+endif
+LDADD += $(OSLIBS)
+
+issm_SOURCES = main/issm.cpp
+issm_CXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS)
+
+issm_slc_SOURCES = main/issm_slc.cpp
+issm_slc_CXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS)
+
+if OCEAN
+bin_PROGRAMS += issm_ocean
+issm_ocean_SOURCES = main/issm_ocean.cpp
+issm_ocean_CXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS)
+endif
+
+if KRIGING
+bin_PROGRAMS += kriging
+kriging_SOURCES = main/kriging.cpp
+kriging_CXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS)
+endif
+
+if ISSM_DAKOTA
+bin_PROGRAMS += issm_dakota
+issm_dakota_SOURCES = main/issm_dakota.cpp
+issm_dakota_CXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS)
+bin_PROGRAMS += issm_post
+issm_post_SOURCES = main/issm_post.cpp
+issm_post_CXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS)
+endif
+#}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AdjointBalancethickness2Analysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AdjointBalancethickness2Analysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AdjointBalancethickness2Analysis.cpp	(revision 27955)
@@ -0,0 +1,361 @@
+#include "./AdjointBalancethickness2Analysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../classes/Inputs/DatasetInput.h"
+
+/*Model processor*/
+void AdjointBalancethickness2Analysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void AdjointBalancethickness2Analysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void AdjointBalancethickness2Analysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+int  AdjointBalancethickness2Analysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void AdjointBalancethickness2Analysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void AdjointBalancethickness2Analysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           AdjointBalancethickness2Analysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           AdjointBalancethickness2Analysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* AdjointBalancethickness2Analysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* AdjointBalancethickness2Analysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* AdjointBalancethickness2Analysis::CreateKMatrix(Element* element){/*{{{*/
+
+	Balancethickness2Analysis* analysis = new Balancethickness2Analysis();
+	ElementMatrix* Ke = analysis->CreateKMatrix(element);
+	delete analysis;
+
+	return Ke;
+}/*}}}*/
+ElementVector* AdjointBalancethickness2Analysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	int         num_responses,i;
+	IssmDouble  vx,vy,vel,Jdet;
+	IssmDouble  surface,surfaceobs,weight;
+	int        *responses = NULL;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe     = element->NewElementVector(SSAApproximationEnum);
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	element->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+	Input* surface_input      = element->GetInput(SurfaceEnum);                          _assert_(surface_input);
+	Input* surfaceobs_input   = element->GetInput(InversionSurfaceObsEnum);              _assert_(surfaceobs_input);
+	DatasetInput* weights_input      = element->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* vx_input           = element->GetInput(VxEnum);                                 _assert_(vx_input);
+	Input* vy_input           = element->GetInput(VyEnum);                                 _assert_(vy_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		surface_input->GetInputValue(&surface, gauss);
+		surfaceobs_input->GetInputValue(&surfaceobs, gauss);
+
+		/*Loop over all requested responses*/
+		for(int resp=0;resp<num_responses;resp++){
+			weights_input->GetInputValue(&weight,gauss,responses[resp]);
+
+			switch(responses[resp]){
+				case SurfaceAbsMisfitEnum:
+					for(i=0;i<numnodes;i++) pe->values[i]+=(surfaceobs-surface)*weight*Jdet*gauss->weight*basis[i];
+					break;
+				case OmegaAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case EtaDiffEnum:
+					/*Nothing in P vector*/
+					break;
+				default:
+					_error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(responses);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return pe;
+
+}/*}}}*/
+void           AdjointBalancethickness2Analysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void           AdjointBalancethickness2Analysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	/*The gradient of the cost function is calculated in 2 parts.
+	 *
+	 * dJ    \partial J   \partial lambda^T(KU-F)
+	 * --  = ---------- + ------------------------
+	 * dk    \partial k   \parial k                  
+	 *
+	 * */
+
+	/*If on water, grad = 0: */
+	if(!element->IsIceInElement()) return;
+
+	/*Get list of cost functions*/
+	int *responses = NULL;
+	int num_responses,resp;
+	element->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	element->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+
+	/*Deal with first part (partial derivative a J with respect to k)*/
+	for(resp=0;resp<num_responses;resp++) switch(responses[resp]){
+		case SurfaceAbsMisfitEnum:
+			/*Nothing, \partial J/\partial k = 0*/
+			break;
+		case OmegaAbsGradientEnum: GradientJOmegaGradient(element,gradient,control_index); break;
+		case EtaDiffEnum: GradientJEtaDiff(element,gradient,control_index); break;
+		default: _error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
+	}
+
+	/*Deal with second term*/
+	switch(control_type){
+		case BalancethicknessOmegaEnum:           GradientJOmega(element,gradient,control_index); break;
+		case BalancethicknessThickeningRateEnum:  GradientJdHdt( element,gradient,control_index); break;
+		default: _error_("control type not supported yet: " << EnumToStringx(control_type));
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(responses);
+
+}/*}}}*/
+void           AdjointBalancethickness2Analysis::GradientJdHdt(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble lambda,Jdet; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* adjoint_input = element->GetInput(AdjointEnum);            _assert_(adjoint_input);
+
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+
+		adjoint_input->GetInputValue(&lambda,gauss);
+
+		/*Build gradient vector (actually -dJ/da): */
+		for(int i=0;i<numvertices;i++){
+			ge[i]+= -Jdet*gauss->weight*basis[i]*lambda;
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(ge);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+}/*}}}*/
+void           AdjointBalancethickness2Analysis::GradientJOmega(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	int         n=3;
+	IssmDouble  dlambda[2],ds[2],slopex,slopey,slope,omega,Jdet,velobs;
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* adjoint_input = element->GetInput(AdjointEnum);            _assert_(adjoint_input);
+	Input* omega_input   = element->GetInput(BalancethicknessOmegaEnum); _assert_(omega_input);
+	Input* surface_input = element->GetInput(SurfaceEnum); _assert_(surface_input); 
+	Input* surfaceslopex_input = element->GetInput(SurfaceSlopeXEnum); _assert_(surfaceslopex_input); 
+	Input* surfaceslopey_input = element->GetInput(SurfaceSlopeYEnum); _assert_(surfaceslopey_input); 
+	Input* velobs_input        = element->GetInput(InversionVelObsEnum); _assert_(velobs_input); 
+
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+
+		omega_input->GetInputValue(&omega,gauss);
+		adjoint_input->GetInputDerivativeValue(&dlambda[0],xyz_list,gauss);
+		surface_input->GetInputDerivativeValue(&ds[0],xyz_list,gauss);
+		surfaceslopex_input->GetInputValue(&slopex,gauss);
+		surfaceslopey_input->GetInputValue(&slopey,gauss);
+		velobs_input->GetInputValue(&velobs,gauss);
+
+		slope = sqrt(slopex*slopex + slopey*slopey);
+		//if(slope<1.e-5) slope = 1.e-5;
+
+		/*Build gradient vector (actually -dJ/da): */
+		for(int i=0;i<numvertices;i++){
+			ge[i]+= - Jdet*gauss->weight*basis[i]*velobs/slope*(ds[0]*dlambda[0] + ds[1]*dlambda[1]);
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(ge);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+}/*}}}*/
+void           AdjointBalancethickness2Analysis::GradientJOmegaGradient(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble dk[3]; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* dbasis        = xNew<IssmDouble>(2*numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* omega_input = element->GetInput(BalancethicknessOmegaEnum); _assert_(omega_input);
+	DatasetInput* weights_input         = element->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsP1Derivatives(dbasis,xyz_list,gauss);
+		weights_input->GetInputValue(&weight,gauss,OmegaAbsGradientEnum);
+
+		/*Build alpha_complement_list: */
+		omega_input->GetInputDerivativeValue(&dk[0],xyz_list,gauss);
+
+		/*Build gradient vector (actually -dJ/ddrag): */
+		for(int i=0;i<numvertices;i++){
+			ge[i]+=-weight*Jdet*gauss->weight*2*(dk[0]*dk[0] + dk[1]*dk[1])*(dbasis[0*numvertices+i]*dk[0]+dbasis[1*numvertices+i]*dk[1]);
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+
+}/*}}}*/
+void           AdjointBalancethickness2Analysis::GradientJEtaDiff(Element* element,Vector<IssmDouble>* gradient,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble omega,omega0; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* omega_input = element->GetInput(BalancethicknessOmegaEnum);   _assert_(omega_input);
+	Input* omega0_input = element->GetInput(BalancethicknessOmega0Enum); _assert_(omega0_input);
+	DatasetInput* weights_input = element->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+		weights_input->GetInputValue(&weight,gauss,EtaDiffEnum);
+
+		/*Build alpha_complement_list: */
+		omega_input->GetInputValue(&omega,gauss);
+		omega0_input->GetInputValue(&omega0,gauss);
+
+		/*Build gradient vector (actually -dJ/ddrag): */
+		for(int i=0;i<numvertices;i++){
+			ge[i]+=-weight*Jdet*gauss->weight*(omega - omega0)*basis[i];
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+
+}/*}}}*/
+void           AdjointBalancethickness2Analysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	element->InputUpdateFromSolutionOneDof(solution,AdjointEnum);
+}/*}}}*/
+void           AdjointBalancethickness2Analysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AdjointBalancethickness2Analysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AdjointBalancethickness2Analysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AdjointBalancethickness2Analysis.h	(revision 27955)
@@ -0,0 +1,38 @@
+/*! \file AdjointBalancethickness2Analysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _AdjointBalancethickness2Analysis_
+#define _AdjointBalancethickness2Analysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class AdjointBalancethickness2Analysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           GradientJdHdt(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJOmega(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJOmegaGradient(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           GradientJEtaDiff(Element* element,Vector<IssmDouble>* gradient,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AdjointBalancethicknessAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AdjointBalancethicknessAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AdjointBalancethicknessAnalysis.cpp	(revision 27955)
@@ -0,0 +1,379 @@
+#include "./AdjointBalancethicknessAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../classes/Inputs/DatasetInput.h"
+
+/*Model processor*/
+void AdjointBalancethicknessAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void AdjointBalancethicknessAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void AdjointBalancethicknessAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+int  AdjointBalancethicknessAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void AdjointBalancethicknessAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void AdjointBalancethicknessAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           AdjointBalancethicknessAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           AdjointBalancethicknessAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* AdjointBalancethicknessAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* AdjointBalancethicknessAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* AdjointBalancethicknessAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	BalancethicknessAnalysis* analysis = new BalancethicknessAnalysis();
+	ElementMatrix* Ke = analysis->CreateKMatrix(element);
+	delete analysis;
+
+	/*Transpose and return Ke*/
+	Ke->Transpose();
+	return Ke;
+}/*}}}*/
+ElementVector* AdjointBalancethicknessAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries */
+	int         num_responses,i;
+	IssmDouble  dH[2];
+	IssmDouble  vx,vy,vel,Jdet;
+	IssmDouble  thickness,thicknessobs,weight;
+	int        *responses = NULL;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe     = basalelement->NewElementVector(SSAApproximationEnum);
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	basalelement->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+	Input* thickness_input    = basalelement->GetInput(ThicknessEnum);                          _assert_(thickness_input);
+	Input* thicknessobs_input = basalelement->GetInput(InversionThicknessObsEnum);              _assert_(thicknessobs_input);
+	DatasetInput* weights_input      = basalelement->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* vx_input           = basalelement->GetInput(VxEnum);                                 _assert_(vx_input);
+	Input* vy_input           = basalelement->GetInput(VyEnum);                                 _assert_(vy_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+		basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		thickness_input->GetInputValue(&thickness, gauss);
+		thickness_input->GetInputDerivativeValue(&dH[0],xyz_list,gauss);
+		thicknessobs_input->GetInputValue(&thicknessobs, gauss);
+
+		/*Loop over all requested responses*/
+		for(int resp=0;resp<num_responses;resp++){
+			weights_input->GetInputValue(&weight,gauss,responses[resp]);
+
+			switch(responses[resp]){
+				case ThicknessAbsMisfitEnum:
+					for(i=0;i<numnodes;i++) pe->values[i]+=(thicknessobs-thickness)*weight*Jdet*gauss->weight*basis[i];
+					break;
+				case ThicknessAbsGradientEnum:
+					for(i=0;i<numnodes;i++) pe->values[i]+= - weight*dH[0]*dbasis[0*numnodes+i]*Jdet*gauss->weight;
+					for(i=0;i<numnodes;i++) pe->values[i]+= - weight*dH[1]*dbasis[1*numnodes+i]*Jdet*gauss->weight;
+					break;
+				case ThicknessAlongGradientEnum:
+					vx_input->GetInputValue(&vx,gauss);
+					vy_input->GetInputValue(&vy,gauss);
+					vel = sqrt(vx*vx+vy*vy);
+					vx  = vx/(vel+1.e-9);
+					vy  = vy/(vel+1.e-9);
+					for(i=0;i<numnodes;i++) pe->values[i]+= - weight*(dH[0]*vx+dH[1]*vy)*(dbasis[0*numnodes+i]*vx+dbasis[1*numnodes+i]*vy)*Jdet*gauss->weight;
+					break;
+				case ThicknessAcrossGradientEnum:
+					vx_input->GetInputValue(&vx,gauss);
+					vy_input->GetInputValue(&vy,gauss);
+					vel = sqrt(vx*vx+vy*vy);
+					vx  = vx/(vel+1.e-9);
+					vy  = vy/(vel+1.e-9);
+					for(i=0;i<numnodes;i++) pe->values[i]+= - weight*(dH[0]*(-vy)+dH[1]*vx)*(dbasis[0*numnodes+i]*(-vy)+dbasis[1*numnodes+i]*vx)*Jdet*gauss->weight;
+					break;
+				case ThicknessPositiveEnum:
+					if(thickness<0){
+						for(i=0;i<numnodes;i++) pe->values[i]+= - weight*2*thickness*Jdet*gauss->weight*basis[i];
+					}
+					break;
+				default:
+					_error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(responses);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           AdjointBalancethicknessAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void           AdjointBalancethicknessAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	/*The gradient of the cost function is calculated in 2 parts.
+	 *
+	 * dJ    \partial J   \partial lambda^T(KU-F)
+	 * --  = ---------- + ------------------------
+	 * dk    \partial k   \parial k                  
+	 *
+	 * */
+
+	/*If on water, grad = 0: */
+	if(!element->IsIceInElement()) return;
+
+	/*Get list of cost functions*/
+	int *responses = NULL;
+	int num_responses,resp;
+	element->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	element->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+
+	/*Check that control_type is supported*/
+	if(control_type!=VxEnum && 
+		control_type!=VyEnum && 
+		control_type!=BalancethicknessSpcthicknessEnum && 
+		control_type!=BalancethicknessThickeningRateEnum){
+		_error_("Control "<<EnumToStringx(control_type)<<" not supported");
+	}
+
+	/*Deal with first part (partial derivative a J with respect to k)*/
+	for(resp=0;resp<num_responses;resp++) switch(responses[resp]){
+		case ThicknessAbsMisfitEnum:      /*Nothing, \partial J/\partial k = 0*/ break;
+		case ThicknessAbsGradientEnum:    /*Nothing, \partial J/\partial k = 0*/ break;
+		case ThicknessAlongGradientEnum:  /*Nothing, \partial J/\partial k = 0*/ break;
+		case ThicknessAcrossGradientEnum: /*Nothing, \partial J/\partial k = 0*/ break;
+		case ThicknessPositiveEnum:       /*Nothing, \partial J/\partial k = 0*/ break;
+		default: _error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
+	}
+
+	/*Deal with second term*/
+	switch(control_type){
+		case BalancethicknessSpcthicknessEnum:   GradientJDirichlet(element,gradient,control_interp,control_index); break;
+		case BalancethicknessThickeningRateEnum: GradientJDhDt(element,gradient,control_interp,control_index); break;
+		case VxEnum:                             GradientJVx(  element,gradient,control_interp,control_index); break;
+		case VyEnum:                             GradientJVy(  element,gradient,control_interp,control_index); break;
+		default: _error_("control type not supported yet: " << EnumToStringx(control_type));
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(responses);
+
+}/*}}}*/
+void           AdjointBalancethicknessAnalysis::GradientJDirichlet(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	IssmDouble* lambda        = xNew<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	element->GetInputListOnVertices(lambda,AdjointEnum);
+
+	BalancethicknessAnalysis* analysis = new BalancethicknessAnalysis();
+	ElementMatrix* Ke = analysis->CreateKMatrix(element);
+	delete analysis;
+
+	/*Transpose and return Ke*/
+	Ke->Transpose();
+	_assert_(Ke->nrows == numvertices);
+
+	for(int i=0;i<numvertices;i++){
+		for(int j=0;j<numvertices;j++){
+			ge[i] += Ke->values[i*Ke->nrows + j] * lambda[j];
+		}
+		//ge[i]=-lambda[i];
+		_assert_(!xIsNan<IssmDouble>(ge[i]));
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,INS_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(ge);
+	xDelete<IssmDouble>(lambda);
+	xDelete<int>(vertexpidlist);
+	delete Ke;
+}/*}}}*/
+void           AdjointBalancethicknessAnalysis::GradientJDhDt(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	IssmDouble* lambda        = xNew<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	element->GetInputListOnVertices(lambda,AdjointEnum);
+	for(int i=0;i<numvertices;i++){
+		ge[i]=-lambda[i];
+		_assert_(!xIsNan<IssmDouble>(ge[i]));
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,INS_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(ge);
+	xDelete<IssmDouble>(lambda);
+	xDelete<int>(vertexpidlist);
+}/*}}}*/
+void           AdjointBalancethicknessAnalysis::GradientJVx(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble thickness,Jdet,Dlambda[3],dp[3];
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* thickness_input = element->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* adjoint_input   = element->GetInput(AdjointEnum);   _assert_(adjoint_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(4);
+	while(gauss->next()){
+
+		adjoint_input->GetInputDerivativeValue(&Dlambda[0],xyz_list,gauss);
+		thickness_input->GetInputValue(&thickness, gauss);
+		thickness_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dD): */
+		for(int i=0;i<numvertices;i++){
+			ge[i]+=thickness*Dlambda[0]*Jdet*gauss->weight*basis[i];
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+}/*}}}*/
+void           AdjointBalancethicknessAnalysis::GradientJVy(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble thickness,Jdet,Dlambda[3],dp[3];
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* thickness_input = element->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* adjoint_input   = element->GetInput(AdjointEnum);   _assert_(adjoint_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(4);
+	while(gauss->next()){
+
+		adjoint_input->GetInputDerivativeValue(&Dlambda[0],xyz_list,gauss);
+		thickness_input->GetInputValue(&thickness, gauss);
+		thickness_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dvy): */
+		for(int i=0;i<numvertices;i++){
+			ge[i]+=thickness*Dlambda[1]*Jdet*gauss->weight*basis[i];
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+}/*}}}*/
+void           AdjointBalancethicknessAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->InputUpdateFromSolutionOneDof(solution,AdjointEnum);
+			break;
+		case Domain3DEnum:
+			element->InputUpdateFromSolutionOneDofCollapsed(solution,AdjointEnum);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}/*}}}*/
+void           AdjointBalancethicknessAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AdjointBalancethicknessAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AdjointBalancethicknessAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AdjointBalancethicknessAnalysis.h	(revision 27955)
@@ -0,0 +1,38 @@
+/*! \file AdjointBalancethicknessAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _AdjointBalancethicknessAnalysis_
+#define _AdjointBalancethicknessAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class AdjointBalancethicknessAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           GradientJDirichlet(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJDhDt(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJVx(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJVy(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AdjointHorizAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 27955)
@@ -0,0 +1,3506 @@
+#include "./AdjointHorizAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../classes/Inputs/DatasetInput.h"
+
+/*Model processing*/
+void AdjointHorizAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void AdjointHorizAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void AdjointHorizAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+int  AdjointHorizAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void AdjointHorizAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void AdjointHorizAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void AdjointHorizAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void AdjointHorizAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* AdjointHorizAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* AdjointHorizAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* AdjointHorizAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	switch(approximation){
+		case SSAApproximationEnum: 
+			return CreateKMatrixSSA(element);
+		case L1L2ApproximationEnum: 
+			return CreateKMatrixL1L2(element);
+		case HOApproximationEnum: 
+			return CreateKMatrixHO(element);
+		case FSApproximationEnum: 
+			return CreateKMatrixFS(element);
+      case MOLHOApproximationEnum:
+		// a more accurate option, but integrate in the vertical direction numerically.
+		//	return CreateKMatrixMOLHOVerticalIntergrated(element);
+			return CreateKMatrixMOLHO(element);
+		case NoneApproximationEnum:
+			return NULL;
+		default:
+			_error_("Approximation "<<EnumToStringx(approximation)<<" not supported");
+	}
+}/*}}}*/
+ElementMatrix* AdjointHorizAnalysis::CreateKMatrixFS(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	bool        incomplete_adjoint;
+	int         dim,epssize;
+	IssmDouble  Jdet,mu_prime;
+	IssmDouble  eps1dotdphii,eps1dotdphij,eps2dotdphii,eps2dotdphij,eps3dotdphii,eps3dotdphij;
+	IssmDouble  eps1[3],eps2[3],eps3[3],epsilon[5];/* epsilon=[exx,eyy,exy,exz,eyz];*/
+	IssmDouble *xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+	if(dim==2) epssize = 3;
+	else       epssize = 6;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numdof    = vnumnodes*dim + pnumnodes;
+
+	/*Initialize Jacobian with regular FS (first part of the Gateau derivative)*/
+	element->FindParam(&incomplete_adjoint,InversionIncompleteAdjointEnum);
+	StressbalanceAnalysis* analysis = new StressbalanceAnalysis();
+	ElementMatrix* Ke=analysis->CreateKMatrix(element);
+	delete analysis;
+	if(incomplete_adjoint) return Ke;
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input = element->GetInput(VxEnum);_assert_(vx_input);
+	Input* vy_input = element->GetInput(VyEnum);_assert_(vy_input);
+	Input* vz_input = NULL;
+	if(dim==3){
+		vz_input = element->GetInput(VzEnum);
+	}
+	else{
+		_error_("Not implemented yet");
+	}
+
+	/*Allocate dbasis*/
+	IssmDouble* dbasis = xNew<IssmDouble>(dim*vnumnodes);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(5);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		element->StrainRateHO(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+		element->material->ViscosityFSDerivativeEpsSquare(&mu_prime,&epsilon[0],gauss);
+		eps1[0]=epsilon[0];   eps2[0]=epsilon[2];   eps3[0]=epsilon[3];
+		eps1[1]=epsilon[2];   eps2[1]=epsilon[1];   eps3[1]=epsilon[4];
+		eps1[2]=epsilon[3];   eps2[2]=epsilon[4];   eps3[2]= -epsilon[0] -epsilon[1];
+
+		for(int i=0;i<vnumnodes;i++){
+			for(int j=0;j<vnumnodes;j++){
+				eps1dotdphii=eps1[0]*dbasis[0*vnumnodes+i]+eps1[1]*dbasis[1*vnumnodes+i]+eps1[2]*dbasis[2*vnumnodes+i];
+				eps1dotdphij=eps1[0]*dbasis[0*vnumnodes+j]+eps1[1]*dbasis[1*vnumnodes+j]+eps1[2]*dbasis[2*vnumnodes+j];
+				eps2dotdphii=eps2[0]*dbasis[0*vnumnodes+i]+eps2[1]*dbasis[1*vnumnodes+i]+eps2[2]*dbasis[2*vnumnodes+i];
+				eps2dotdphij=eps2[0]*dbasis[0*vnumnodes+j]+eps2[1]*dbasis[1*vnumnodes+j]+eps2[2]*dbasis[2*vnumnodes+j];
+				eps3dotdphii=eps3[0]*dbasis[0*vnumnodes+i]+eps3[1]*dbasis[1*vnumnodes+i]+eps3[2]*dbasis[2*vnumnodes+i];
+				eps3dotdphij=eps3[0]*dbasis[0*vnumnodes+j]+eps3[1]*dbasis[1*vnumnodes+j]+eps3[2]*dbasis[2*vnumnodes+j];
+
+				Ke->values[numdof*(4*i+0)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps1dotdphii;
+				Ke->values[numdof*(4*i+0)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps1dotdphii;
+				Ke->values[numdof*(4*i+0)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps1dotdphii;
+
+				Ke->values[numdof*(4*i+1)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps2dotdphii;
+				Ke->values[numdof*(4*i+1)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps2dotdphii;
+				Ke->values[numdof*(4*i+1)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps2dotdphii;
+
+				Ke->values[numdof*(4*i+2)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps3dotdphii;
+				Ke->values[numdof*(4*i+2)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps3dotdphii;
+				Ke->values[numdof*(4*i+2)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps3dotdphii;
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,XYZEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(xyz_list);
+	return Ke;
+}/*}}}*/
+ElementMatrix* AdjointHorizAnalysis::CreateKMatrixHO(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	bool        incomplete_adjoint;
+	IssmDouble  Jdet,mu_prime;
+	IssmDouble  eps1dotdphii,eps1dotdphij,eps2dotdphii,eps2dotdphij;
+	IssmDouble  eps1[3],eps2[3],epsilon[5];/* epsilon=[exx,eyy,exy,exz,eyz];*/
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Jacobian with regular HO (first part of the Gateau derivative)*/
+	element->FindParam(&incomplete_adjoint,InversionIncompleteAdjointEnum);
+	StressbalanceAnalysis* analysis = new StressbalanceAnalysis();
+	ElementMatrix* Ke=analysis->CreateKMatrix(element);
+	delete analysis;
+	if(incomplete_adjoint) return Ke;
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input = element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input = element->GetInput(VyEnum); _assert_(vy_input);
+
+	/*Allocate dbasis*/
+	IssmDouble* dbasis = xNew<IssmDouble>(3*numnodes);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(5);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		element->StrainRateHO(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+		element->material->ViscosityHODerivativeEpsSquare(&mu_prime,&epsilon[0],gauss);
+		eps1[0]=2.*epsilon[0]+epsilon[1];   eps2[0]=epsilon[2];
+		eps1[1]=epsilon[2];                 eps2[1]=epsilon[0]+2.*epsilon[1];
+		eps1[2]=epsilon[3];                 eps2[2]=epsilon[4];
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				eps1dotdphii=eps1[0]*dbasis[0*numnodes+i]+eps1[1]*dbasis[1*numnodes+i]+eps1[2]*dbasis[2*numnodes+i];
+				eps1dotdphij=eps1[0]*dbasis[0*numnodes+j]+eps1[1]*dbasis[1*numnodes+j]+eps1[2]*dbasis[2*numnodes+j];
+				eps2dotdphii=eps2[0]*dbasis[0*numnodes+i]+eps2[1]*dbasis[1*numnodes+i]+eps2[2]*dbasis[2*numnodes+i];
+				eps2dotdphij=eps2[0]*dbasis[0*numnodes+j]+eps2[1]*dbasis[1*numnodes+j]+eps2[2]*dbasis[2*numnodes+j];
+
+				Ke->values[2*numnodes*(2*i+0)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps1dotdphii;
+				Ke->values[2*numnodes*(2*i+0)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps1dotdphii;
+				Ke->values[2*numnodes*(2*i+1)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps2dotdphii;
+				Ke->values[2*numnodes*(2*i+1)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps2dotdphii;
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(xyz_list);
+	return Ke;
+}/*}}}*/
+ElementMatrix* AdjointHorizAnalysis::CreateKMatrixMOLHO(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	IssmDouble  Jdet,mu_prime,n,thickness,mu,effmu;
+	IssmDouble *xyz_list = NULL;
+	IssmDouble  viscosity[9]; //9 mu for different integrand
+   int			domaintype;
+	int			dim=2;
+
+	IssmDouble  eb1i,eb1j,esh1i,esh1j,eb2i,eb2j,esh2i,esh2j;
+	IssmDouble  epsilon[5],epsilonbase[5],epsilonshear[5];/* epsilon=[exx,eyy,exy,exz,eyz];*/
+	IssmDouble  e1b[2], e2b[2], e1sh[2], e2sh[2];
+	IssmDouble  vxshear, vyshear;
+
+   /*Get basal element*/
+	Element* basalelement = NULL;
+   element->FindParam(&domaintype,DomainTypeEnum);
+   switch(domaintype){
+      case Domain2DhorizontalEnum:
+         basalelement = element;
+         break;
+      case Domain3DEnum: case Domain2DverticalEnum:
+         _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+         break;
+      default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+   }
+
+	/*Initialize Jacobian with regular HO (first part of the Gateau derivative)*/
+	bool        incomplete_adjoint;
+	element->FindParam(&incomplete_adjoint,InversionIncompleteAdjointEnum);
+	StressbalanceAnalysis* analysis = new StressbalanceAnalysis();
+	ElementMatrix* Ke=analysis->CreateKMatrix(basalelement);
+	delete analysis;
+	if(incomplete_adjoint) return Ke;
+
+	/*Second part of the Gateau derivative if requested*/
+
+	/*Fetch number of nodes and dof for this finite element*/
+   int numnodes = basalelement->GetNumberOfNodes();
+   IssmDouble* dbasis = xNew<IssmDouble>(2*numnodes); // like SSA
+   IssmDouble* basis  = xNew<IssmDouble>(numnodes); // like SSA
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+   Input* vx_input       = element->GetInput(VxEnum);        _assert_(vx_input); //vertically integrated vx
+   Input* vy_input       = element->GetInput(VyEnum);        _assert_(vy_input); //vertically integrated vy
+   Input* vxbase_input   = element->GetInput(VxBaseEnum);    _assert_(vxbase_input);
+   Input* vybase_input   = element->GetInput(VyBaseEnum);    _assert_(vybase_input);
+   Input* vxshear_input  = element->GetInput(VxShearEnum);   _assert_(vxshear_input);
+   Input* vyshear_input  = element->GetInput(VyShearEnum);   _assert_(vyshear_input);
+   Input* thickness_input= element->GetInput(ThicknessEnum); _assert_(thickness_input);
+   Input* n_input        = element->GetInput(MaterialsRheologyNEnum); _assert_(n_input);
+
+	/* Start  looping on the number of gaussian points: */
+   Gauss* gauss      = element->NewGauss(5);
+   Gauss* gauss_base = basalelement->NewGauss();
+   while(gauss->next()){
+      gauss->SynchronizeGaussBase(gauss_base);
+
+      element->JacobianDeterminant(&Jdet,xyz_list,gauss_base);
+      basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss_base);
+      basalelement->NodalFunctions(basis, gauss_base);
+
+      thickness_input->GetInputValue(&thickness, gauss);
+      n_input->GetInputValue(&n,gauss);
+
+      vxshear_input->GetInputValue(&vxshear,gauss);
+      vyshear_input->GetInputValue(&vyshear,gauss);
+
+		element->material->ViscosityMOLHOAdjoint(&viscosity[0],dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input);
+
+		effmu = 2.0*(1-n)/2.0/n;
+
+		element->StrainRateHO(&epsilonbase[0],xyz_list,gauss,vxbase_input, vybase_input);
+		element->StrainRateHO(&epsilonshear[0],xyz_list,gauss,vxshear_input, vyshear_input);
+
+		e1b[0] = 2*epsilonbase[0]+epsilonbase[1];		e1b[1] = epsilonbase[2];
+		e2b[1] = epsilonbase[0]+2*epsilonbase[1];		e2b[0] = epsilonbase[2];
+
+		e1sh[0] = 2*epsilonshear[0]+epsilonshear[1];		e1sh[1] = epsilonshear[2];
+		e2sh[1] = epsilonshear[0]+2*epsilonshear[1];		e2sh[0] = epsilonshear[2];
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				eb1i = e1b[0]*dbasis[0*numnodes+i]+e1b[1]*dbasis[1*numnodes+i];
+				eb1j = e1b[0]*dbasis[0*numnodes+j]+e1b[1]*dbasis[1*numnodes+j];
+				eb2i = e2b[0]*dbasis[0*numnodes+i]+e2b[1]*dbasis[1*numnodes+i];
+				eb2j = e2b[0]*dbasis[0*numnodes+j]+e2b[1]*dbasis[1*numnodes+j];
+            esh1i = e1sh[0]*dbasis[0*numnodes+i]+e1sh[1]*dbasis[1*numnodes+i];
+            esh1j = e1sh[0]*dbasis[0*numnodes+j]+e1sh[1]*dbasis[1*numnodes+j];
+            esh2i = e2sh[0]*dbasis[0*numnodes+i]+e2sh[1]*dbasis[1*numnodes+i];
+            esh2j = e2sh[0]*dbasis[0*numnodes+j]+e2sh[1]*dbasis[1*numnodes+j];
+
+				Ke->values[4*numnodes*(4*i+0)+4*j+0]+=gauss->weight*Jdet*effmu*(viscosity[0]*eb1j*eb1i+viscosity[1]*(esh1j*eb1i+eb1j*esh1i)+viscosity[2]*esh1j*esh1i);
+				Ke->values[4*numnodes*(4*i+1)+4*j+0]+=gauss->weight*Jdet*effmu*(viscosity[1]*eb1j*eb1i+viscosity[2]*(esh1j*eb1i+eb1j*esh1i)+viscosity[4]*esh1j*esh1i+viscosity[3]*(n+1)*(n+1)/2.0/thickness/thickness*vxshear*eb1j*basis[i]+viscosity[6]*(n+1)*(n+1)/2.0/thickness/thickness*vxshear*esh1j*basis[i]);
+				Ke->values[4*numnodes*(4*i+2)+4*j+0]+=gauss->weight*Jdet*effmu*(viscosity[0]*eb1j*eb2i+viscosity[1]*(esh1j*eb2i+eb1j*esh2i)+viscosity[2]*esh1j*esh2i);
+				Ke->values[4*numnodes*(4*i+3)+4*j+0]+=gauss->weight*Jdet*effmu*(viscosity[1]*eb1j*eb2i+viscosity[2]*(esh1j*eb2i+eb1j*esh2i)+viscosity[4]*esh1j*esh2i+viscosity[3]*(n+1)*(n+1)/2.0/thickness/thickness*vyshear*eb1j*basis[i]+viscosity[6]*(n+1)*(n+1)/2.0/thickness/thickness*vyshear*esh1j*basis[i]);
+
+				Ke->values[4*numnodes*(4*i+0)+4*j+1]+=gauss->weight*Jdet*effmu*(viscosity[1]*eb1j*eb1i+viscosity[2]*(esh1j*eb1i+eb1j*esh1i)+viscosity[4]*esh1j*esh1i+viscosity[3]*(n+1)*(n+1)/2.0/thickness/thickness*vxshear*eb1i*basis[j]+viscosity[6]*(n+1)*(n+1)/2.0/thickness/thickness*vxshear*esh1i*basis[j]);
+				Ke->values[4*numnodes*(4*i+1)+4*j+1]+=gauss->weight*Jdet*effmu*(viscosity[2]*eb1j*eb1i+viscosity[4]*(esh1j*eb1i+eb1j*esh1i)+viscosity[5]*esh1j*esh1i+viscosity[6]*(n+1)*(n+1)/2.0/thickness/thickness*vxshear*(eb1i*basis[j]+eb1j*basis[i])+viscosity[7]*(n+1)*(n+1)/2.0/thickness/thickness*vxshear*(esh1i*basis[j]+esh1j*basis[i])+viscosity[8]*(n+1)*(n+1)*(n+1)*(n+1)/4.0/thickness/thickness/thickness/thickness*vxshear*vxshear*basis[j]*basis[i]);
+				Ke->values[4*numnodes*(4*i+2)+4*j+1]+=gauss->weight*Jdet*effmu*(viscosity[1]*eb1j*eb2i+viscosity[2]*(esh1j*eb2i+eb1j*esh2i)+viscosity[4]*esh1j*esh2i+viscosity[3]*(n+1)*(n+1)/2.0/thickness/thickness*vxshear*eb2i*basis[j]+viscosity[6]*(n+1)*(n+1)/2.0/thickness/thickness*vxshear*esh2i*basis[j]);
+				Ke->values[4*numnodes*(4*i+3)+4*j+1]+=gauss->weight*Jdet*effmu*(viscosity[2]*eb1j*eb2i+viscosity[4]*(esh1j*eb2i+eb1j*esh2i)+viscosity[5]*esh1j*esh2i+viscosity[6]*(n+1)*(n+1)/2.0/thickness/thickness*(vxshear*eb2i*basis[j]+vyshear*eb1j*basis[i])+viscosity[7]*(n+1)*(n+1)/2.0/thickness/thickness*(vxshear*esh2i*basis[j]+vyshear*esh1j*basis[i])+viscosity[8]*(n+1)*(n+1)*(n+1)*(n+1)/4.0/thickness/thickness/thickness/thickness*vxshear*vyshear*basis[j]*basis[i]);
+				
+
+				Ke->values[4*numnodes*(4*i+0)+4*j+2]+=gauss->weight*Jdet*effmu*(viscosity[0]*eb2j*eb1i+viscosity[1]*(esh2j*eb1i+eb2j*esh1i)+viscosity[2]*esh2j*esh1i);
+				Ke->values[4*numnodes*(4*i+1)+4*j+2]+=gauss->weight*Jdet*effmu*(viscosity[1]*eb2j*eb1i+viscosity[2]*(esh2j*eb1i+eb2j*esh1i)+viscosity[4]*esh2j*esh1i+viscosity[3]*(n+1)*(n+1)/2.0/thickness/thickness*vxshear*eb2j*basis[i]+viscosity[6]*(n+1)*(n+1)/2.0/thickness/thickness*vxshear*esh2j*basis[i]);
+				Ke->values[4*numnodes*(4*i+2)+4*j+2]+=gauss->weight*Jdet*effmu*(viscosity[0]*eb2j*eb2i+viscosity[1]*(esh2j*eb2i+eb2j*esh2i)+viscosity[2]*esh2j*esh2i);
+				Ke->values[4*numnodes*(4*i+3)+4*j+2]+=gauss->weight*Jdet*effmu*(viscosity[1]*eb2j*eb2i+viscosity[2]*(esh2j*eb2i+eb2j*esh2i)+viscosity[4]*esh2j*esh2i+viscosity[3]*(n+1)*(n+1)/2.0/thickness/thickness*vyshear*eb2j*basis[i]+viscosity[6]*(n+1)*(n+1)/2.0/thickness/thickness*vyshear*esh2j*basis[i]);
+
+
+				Ke->values[4*numnodes*(4*i+0)+4*j+3]+=gauss->weight*Jdet*effmu*(viscosity[1]*eb2j*eb1i+viscosity[2]*(esh2j*eb1i+eb2j*esh1i)+viscosity[4]*esh2j*esh1i+viscosity[3]*(n+1)*(n+1)/2.0/thickness/thickness*vyshear*eb1i*basis[j]+viscosity[6]*(n+1)*(n+1)/2.0/thickness/thickness*vyshear*esh1i*basis[j]);
+				Ke->values[4*numnodes*(4*i+1)+4*j+3]+=gauss->weight*Jdet*effmu*(viscosity[2]*eb2j*eb1i+viscosity[4]*(esh2j*eb1i+eb2j*esh1i)+viscosity[5]*esh2j*esh1i+viscosity[6]*(n+1)*(n+1)/2.0/thickness/thickness*(vyshear*eb1i*basis[j]+vxshear*eb2j*basis[i])+viscosity[7]*(n+1)*(n+1)/2.0/thickness/thickness*(vxshear*esh2j*basis[i]+vyshear*esh1i*basis[j])+viscosity[8]*(n+1)*(n+1)*(n+1)*(n+1)/4.0/thickness/thickness/thickness/thickness*vxshear*vxshear*basis[j]*basis[i]);
+				Ke->values[4*numnodes*(4*i+2)+4*j+3]+=gauss->weight*Jdet*effmu*(viscosity[1]*eb2j*eb2i+viscosity[2]*(esh2j*eb2i+eb2j*esh2i)+viscosity[4]*esh2j*esh2i+viscosity[3]*(n+1)*(n+1)/2.0/thickness/thickness*vyshear*eb2i*basis[j]+viscosity[6]*(n+1)*(n+1)/2.0/thickness/thickness*vyshear*esh2i*basis[j]);
+				Ke->values[4*numnodes*(4*i+3)+4*j+3]+=gauss->weight*Jdet*effmu*(viscosity[2]*eb2j*eb2i+viscosity[4]*(esh2j*eb2i+eb2j*esh2i)+viscosity[5]*esh2j*esh2i+viscosity[6]*(n+1)*(n+1)/2.0/thickness/thickness*vyshear*(eb2i*basis[j]+eb1j*basis[i])+viscosity[7]*(n+1)*(n+1)/2.0/thickness/thickness*vyshear*(esh2i*basis[j]+esh1j*basis[i])+viscosity[8]*(n+1)*(n+1)*(n+1)*(n+1)/4.0/thickness/thickness/thickness/thickness*vyshear*vyshear*basis[j]*basis[i]);
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	/*element->TransformStiffnessMatrixCoord(Ke,XYEnum);*/
+
+   /*Clean up and return*/
+   delete gauss;
+   delete gauss_base;
+   if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+   xDelete<IssmDouble>(xyz_list);
+   xDelete<IssmDouble>(dbasis);
+   xDelete<IssmDouble>(basis);
+   return Ke;
+}/*}}}*/
+ElementMatrix* AdjointHorizAnalysis::CreateKMatrixMOLHOVerticalIntergrated(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	IssmDouble  Jdet,mu_prime,n,thickness,mu,effmu;
+	IssmDouble *xyz_list = NULL;
+	IssmDouble	zeta, epsilon_eff;
+   int			domaintype;
+	int			dim=2;
+
+	IssmDouble  e1phi1i, e1phi1j, e2phi1i, e2phi1j, e1phi2i, e1phi2j, e2phi2i, e2phi2j;
+	IssmDouble  epsilon[5];/* epsilon=[exx,eyy,exy,exz,eyz];*/
+	IssmDouble	e1[3],e2[3];
+
+   Element* basalelement = NULL;
+
+   /*Get basal element*/
+   element->FindParam(&domaintype,DomainTypeEnum);
+   switch(domaintype){
+      case Domain2DhorizontalEnum:
+         basalelement = element;
+         break;
+      case Domain3DEnum: case Domain2DverticalEnum:
+         _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+         break;
+      default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+   }
+
+	/*Initialize Jacobian with regular HO (first part of the Gateau derivative)*/
+	bool incomplete_adjoint;
+	element->FindParam(&incomplete_adjoint,InversionIncompleteAdjointEnum);
+	StressbalanceAnalysis* analysis = new StressbalanceAnalysis();
+	ElementMatrix* Ke=analysis->CreateKMatrix(basalelement);
+	delete analysis;
+	if(incomplete_adjoint) return Ke;
+
+	/*Second part of the Gateau derivative if requested*/
+
+
+	/*Fetch number of nodes and dof for this finite element*/
+   int numnodes = basalelement->GetNumberOfNodes();
+   IssmDouble* dbasis = xNew<IssmDouble>(2*numnodes); // like SSA
+   IssmDouble* basis  = xNew<IssmDouble>(numnodes); // like SSA
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+   Input* vxbase_input   = element->GetInput(VxBaseEnum);    _assert_(vxbase_input);
+   Input* vybase_input   = element->GetInput(VyBaseEnum);    _assert_(vybase_input);
+   Input* vxshear_input  = element->GetInput(VxShearEnum);   _assert_(vxshear_input);
+   Input* vyshear_input  = element->GetInput(VyShearEnum);   _assert_(vyshear_input);
+   Input* thickness_input= element->GetInput(ThicknessEnum); _assert_(thickness_input);
+   Input* n_input        = element->GetInput(MaterialsRheologyNEnum); _assert_(n_input);
+
+	/* Start  looping on the number of gaussian points: */
+   Gauss* gauss      = element->NewGauss(10);
+   Gauss* gauss_base = basalelement->NewGauss();
+	
+	GaussSeg* gauss_seg=new GaussSeg(5);
+
+   while(gauss->next()){
+      gauss->SynchronizeGaussBase(gauss_base);
+
+      element->JacobianDeterminant(&Jdet,xyz_list,gauss_base);
+      basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss_base);
+      basalelement->NodalFunctions(basis, gauss_base);
+
+      thickness_input->GetInputValue(&thickness, gauss);
+      n_input->GetInputValue(&n,gauss);
+
+		effmu = 2*(1-n)/2.0/n;
+
+		/* Get the integration in the vertical direction */
+		gauss_seg->Reset();
+		while(gauss_seg->next()){
+			/*Compute zeta for gauss_seg point (0=surface, 1=base)*/
+	      zeta=0.5*(gauss_seg->coord1+1);
+
+		   /* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy (for a given zeta)*/
+			element->StrainRateMOLHO(&epsilon[0],xyz_list,gauss,
+                  vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
+			epsilon_eff=sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[2]*epsilon[2]
+                    +  epsilon[3]*epsilon[3] + epsilon[4]*epsilon[4] + epsilon[0]*epsilon[1]);
+
+			/*Get viscosity at zeta*/
+			element->material->GetViscosity(&mu,epsilon_eff,gauss);
+			/*the adjoint viscosity with zeta dependent term*/
+			mu = mu /epsilon_eff/epsilon_eff;
+
+			e1[0] = 2.0*epsilon[0]+epsilon[1];
+			e1[1] = epsilon[2];
+			e1[2] = epsilon[3];
+	
+			e2[0] = epsilon[2];
+			e2[1] = epsilon[0]+2.0*epsilon[1];
+			e2[2] = epsilon[4];
+
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					e1phi1i = e1[0]*dbasis[0*numnodes+i]+e1[1]*dbasis[1*numnodes+i];
+					e2phi1i = e2[0]*dbasis[0*numnodes+i]+e2[1]*dbasis[1*numnodes+i];
+					e1phi1j = e1[0]*dbasis[0*numnodes+j]+e1[1]*dbasis[1*numnodes+j];
+					e2phi1j = e2[0]*dbasis[0*numnodes+j]+e2[1]*dbasis[1*numnodes+j];
+	
+					e1phi2i = (1-pow(zeta, n+1))*(e1[0]*dbasis[0*numnodes+i]+e1[1]*dbasis[1*numnodes+i])+(n+1)/thickness*pow(zeta, n)*e1[2]*basis[i];
+					e2phi2i = (1-pow(zeta, n+1))*(e2[0]*dbasis[0*numnodes+i]+e2[1]*dbasis[1*numnodes+i])+(n+1)/thickness*pow(zeta, n)*e2[2]*basis[i];
+					e1phi2j = (1-pow(zeta, n+1))*(e1[0]*dbasis[0*numnodes+j]+e1[1]*dbasis[1*numnodes+j])+(n+1)/thickness*pow(zeta, n)*e1[2]*basis[j];
+					e2phi2j = (1-pow(zeta, n+1))*(e2[0]*dbasis[0*numnodes+j]+e2[1]*dbasis[1*numnodes+j])+(n+1)/thickness*pow(zeta, n)*e2[2]*basis[j];
+
+					Ke->values[4*numnodes*(4*i+0)+4*j+0]+=gauss->weight*Jdet*effmu*mu*e1phi1i*e1phi1j*thickness*0.5*gauss_seg->weight;
+					Ke->values[4*numnodes*(4*i+1)+4*j+0]+=gauss->weight*Jdet*effmu*mu*e1phi2i*e1phi1j*thickness*0.5*gauss_seg->weight;
+					Ke->values[4*numnodes*(4*i+2)+4*j+0]+=gauss->weight*Jdet*effmu*mu*e2phi1i*e1phi1j*thickness*0.5*gauss_seg->weight;
+					Ke->values[4*numnodes*(4*i+3)+4*j+0]+=gauss->weight*Jdet*effmu*mu*e2phi2i*e1phi1j*thickness*0.5*gauss_seg->weight;
+					
+					Ke->values[4*numnodes*(4*i+0)+4*j+1]+=gauss->weight*Jdet*effmu*mu*e1phi1i*e1phi2j*thickness*0.5*gauss_seg->weight;
+					Ke->values[4*numnodes*(4*i+1)+4*j+1]+=gauss->weight*Jdet*effmu*mu*e1phi2i*e1phi2j*thickness*0.5*gauss_seg->weight;
+					Ke->values[4*numnodes*(4*i+2)+4*j+1]+=gauss->weight*Jdet*effmu*mu*e2phi1i*e1phi2j*thickness*0.5*gauss_seg->weight;
+					Ke->values[4*numnodes*(4*i+3)+4*j+1]+=gauss->weight*Jdet*effmu*mu*e2phi2i*e1phi2j*thickness*0.5*gauss_seg->weight;
+					
+					Ke->values[4*numnodes*(4*i+0)+4*j+2]+=gauss->weight*Jdet*effmu*mu*e1phi1i*e2phi1j*thickness*0.5*gauss_seg->weight;
+					Ke->values[4*numnodes*(4*i+1)+4*j+2]+=gauss->weight*Jdet*effmu*mu*e1phi2i*e2phi1j*thickness*0.5*gauss_seg->weight;
+					Ke->values[4*numnodes*(4*i+2)+4*j+2]+=gauss->weight*Jdet*effmu*mu*e2phi1i*e2phi1j*thickness*0.5*gauss_seg->weight;
+					Ke->values[4*numnodes*(4*i+3)+4*j+2]+=gauss->weight*Jdet*effmu*mu*e2phi2i*e2phi1j*thickness*0.5*gauss_seg->weight;
+
+					Ke->values[4*numnodes*(4*i+0)+4*j+3]+=gauss->weight*Jdet*effmu*mu*e1phi1i*e2phi2j*thickness*0.5*gauss_seg->weight;
+					Ke->values[4*numnodes*(4*i+1)+4*j+3]+=gauss->weight*Jdet*effmu*mu*e1phi2i*e2phi2j*thickness*0.5*gauss_seg->weight;
+					Ke->values[4*numnodes*(4*i+2)+4*j+3]+=gauss->weight*Jdet*effmu*mu*e2phi1i*e2phi2j*thickness*0.5*gauss_seg->weight;
+					Ke->values[4*numnodes*(4*i+3)+4*j+3]+=gauss->weight*Jdet*effmu*mu*e2phi2i*e2phi2j*thickness*0.5*gauss_seg->weight;
+				}
+			}
+		}
+	}
+	/*Transform Coordinate System*/
+	/*element->TransformStiffnessMatrixCoord(Ke,XYEnum);*/
+
+   /*Clean up and return*/
+   delete gauss;
+   delete gauss_base;
+	delete gauss_seg;
+   if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+   xDelete<IssmDouble>(xyz_list);
+   xDelete<IssmDouble>(dbasis);
+   xDelete<IssmDouble>(basis);
+   return Ke;
+}/*}}}*/
+ElementMatrix* AdjointHorizAnalysis::CreateKMatrixL1L2(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	bool incomplete_adjoint;
+
+	/*Initialize Jacobian with regular L1L2 (first part of the Gateau derivative)*/
+	StressbalanceAnalysis* analysis = new StressbalanceAnalysis();
+	ElementMatrix* Ke=analysis->CreateKMatrix(element);
+	delete analysis;
+
+	/*return*/
+	element->FindParam(&incomplete_adjoint,InversionIncompleteAdjointEnum);
+	if(!incomplete_adjoint){
+		_error_("Exact adjoint not supported yet for L1L2 model");
+	}
+	return Ke;
+}/*}}}*/
+ElementMatrix* AdjointHorizAnalysis::CreateKMatrixSSA(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement(true);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries */
+	bool        incomplete_adjoint;
+	IssmDouble  Jdet,thickness,mu_prime;
+	IssmDouble  eps1dotdphii,eps1dotdphij,eps2dotdphii,eps2dotdphij;
+	IssmDouble  eps1[2],eps2[2],epsilon[3];
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Jacobian with regular SSA (first part of the Gateau derivative)*/
+	basalelement->FindParam(&incomplete_adjoint,InversionIncompleteAdjointEnum);
+	StressbalanceAnalysis* analysis = new StressbalanceAnalysis();
+	ElementMatrix* Ke=analysis->CreateKMatrix(element);
+	delete analysis;
+	if(incomplete_adjoint){
+		if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+		return Ke;
+	}
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input        = basalelement->GetInput(VxEnum);       _assert_(vx_input);
+	Input* vy_input        = basalelement->GetInput(VyEnum);       _assert_(vy_input);
+	Input* thickness_input = basalelement->GetInput(ThicknessEnum); _assert_(thickness_input);
+
+	/*Allocate dbasis*/
+	IssmDouble* dbasis = xNew<IssmDouble>(2*numnodes);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		thickness_input->GetInputValue(&thickness, gauss);
+		basalelement->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+		basalelement->material->ViscositySSADerivativeEpsSquare(&mu_prime,&epsilon[0],gauss);
+		eps1[0]=2.*epsilon[0]+epsilon[1]; eps2[0]=epsilon[2];
+		eps1[1]=epsilon[2];               eps2[1]=epsilon[0]+2*epsilon[1];
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				eps1dotdphii=eps1[0]*dbasis[0*numnodes+i]+eps1[1]*dbasis[1*numnodes+i];
+				eps1dotdphij=eps1[0]*dbasis[0*numnodes+j]+eps1[1]*dbasis[1*numnodes+j];
+				eps2dotdphii=eps2[0]*dbasis[0*numnodes+i]+eps2[1]*dbasis[1*numnodes+i];
+				eps2dotdphij=eps2[0]*dbasis[0*numnodes+j]+eps2[1]*dbasis[1*numnodes+j];
+
+				Ke->values[2*numnodes*(2*i+0)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*thickness*eps1dotdphij*eps1dotdphii;
+				Ke->values[2*numnodes*(2*i+0)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*thickness*eps2dotdphij*eps1dotdphii;
+				Ke->values[2*numnodes*(2*i+1)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*thickness*eps1dotdphij*eps2dotdphii;
+				Ke->values[2*numnodes*(2*i+1)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*thickness*eps2dotdphij*eps2dotdphii;
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	basalelement->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(xyz_list);
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+ElementVector* AdjointHorizAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	switch(approximation){
+		case SSAApproximationEnum: 
+			return CreatePVectorSSA(element);
+		case L1L2ApproximationEnum: 
+			return CreatePVectorL1L2(element);
+		case HOApproximationEnum: 
+			return CreatePVectorHO(element);
+		case FSApproximationEnum: 
+			return CreatePVectorFS(element);
+      case MOLHOApproximationEnum:
+			return CreatePVectorMOLHO(element);
+		case NoneApproximationEnum:
+			return NULL;
+		default:
+			_error_("Approximation "<<EnumToStringx(approximation)<<" not supported");
+	}
+}/*}}}*/
+ElementVector* AdjointHorizAnalysis::CreatePVectorFS(Element* element){/*{{{*/
+
+	/*Nothing to be done if not on surface*/
+	if(!element->IsOnSurface()) return NULL;
+
+	/*Intermediaries */
+	int        num_responses,i,domaintype;
+	IssmDouble Jdet,obs_velocity_mag,velocity_mag;
+	IssmDouble vx,vy,vxobs,vyobs,dux,duy,weight;
+	IssmDouble scalex,scaley,scale,S;
+	int        *responses    = NULL;
+	IssmDouble *xyz_list_top = NULL;
+
+	/* Get domaintype*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(domaintype==Domain2DverticalEnum) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe     = element->NewElementVector(FSApproximationEnum);
+	IssmDouble*    vbasis = xNew<IssmDouble>(vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesTop(&xyz_list_top);
+	element->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	element->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+	DatasetInput* weights_input = element->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* vx_input      = element->GetInput(VxEnum);             _assert_(vx_input);
+	Input* vxobs_input   = element->GetInput(InversionVxObsEnum); _assert_(vxobs_input);
+	Input* vy_input    = NULL;
+	Input* vyobs_input = NULL;
+	if(domaintype!=Domain2DverticalEnum){
+		vy_input      = element->GetInput(VyEnum);             _assert_(vy_input);
+		vyobs_input   = element->GetInput(InversionVyObsEnum); _assert_(vyobs_input);
+	}
+	IssmDouble epsvel  = 2.220446049250313e-16;
+	IssmDouble meanvel = 3.170979198376458e-05; /*1000 m/yr*/
+
+	/*Get Surface if required by one response*/
+	Input* S_input = NULL;
+	for(int resp=0;resp<num_responses;resp++){
+		if(responses[resp]==SurfaceAverageVelMisfitEnum){
+			S_input = element->GetInput(SurfaceAreaEnum);  _assert_(S_input); break;
+		}
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussTop(4);
+	while(gauss->next()){
+
+		element->JacobianDeterminantTop(&Jdet,xyz_list_top,gauss);
+		element->NodalFunctionsVelocity(vbasis,gauss);
+
+		vx_input->GetInputValue(&vx,gauss);
+		vxobs_input->GetInputValue(&vxobs,gauss);
+		if(domaintype!=Domain2DverticalEnum) {
+			vy_input->GetInputValue(&vy,gauss);
+			vyobs_input->GetInputValue(&vyobs,gauss);
+		}
+
+		/*Loop over all requested responses*/
+		for(int resp=0;resp<num_responses;resp++){
+			weights_input->GetInputValue(&weight,gauss,responses[resp]);
+
+			switch(responses[resp]){
+				case SurfaceAbsVelMisfitEnum:
+					/*
+					 *      1  [           2              2 ]
+					 * J = --- | (u - u   )  +  (v - v   )  |
+					 *      2  [       obs            obs   ]
+					 *
+					 *        dJ
+					 * DU = - -- = (u   - u )
+					 *        du     obs
+					 */
+					for(i=0;i<vnumnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							dux=vxobs-vx;
+							pe->values[i*3+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+							duy=vyobs-vy;
+							pe->values[i*3+1]+=duy*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+						else{
+							dux=vxobs-vx;
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+					}
+					break;
+				case SurfaceRelVelMisfitEnum:
+					/*
+					 *      1  [     \bar{v}^2             2   \bar{v}^2              2 ]
+					 * J = --- | -------------  (u - u   ) + -------------  (v - v   )  |
+					 *      2  [  (u   + eps)^2       obs    (v   + eps)^2       obs    ]
+					 *              obs                        obs                      
+					 *
+					 *        dJ     \bar{v}^2
+					 * DU = - -- = ------------- (u   - u )
+					 *        du   (u   + eps)^2    obs
+					 *               obs
+					 */
+					for(i=0;i<vnumnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							scalex=pow(meanvel/(vxobs+epsvel),2); if(vxobs==0)scalex=0;
+							scaley=pow(meanvel/(vyobs+epsvel),2); if(vyobs==0)scaley=0;
+							dux=scalex*(vxobs-vx);
+							duy=scaley*(vyobs-vy);
+							pe->values[i*3+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+							pe->values[i*3+1]+=duy*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+						else{
+							scalex=pow(meanvel/(vxobs+epsvel),2); if(vxobs==0)scalex=0;
+							dux=scalex*(vxobs-vx);
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+					}
+					break;
+				case SurfaceLogVelMisfitEnum:
+					/*
+					 *                 [        vel + eps     ] 2
+					 * J = 4 \bar{v}^2 | log ( -----------  ) |  
+					 *                 [       vel   + eps    ]
+					 *                            obs
+					 *
+					 *        dJ                 2 * log(...)
+					 * DU = - -- = - 4 \bar{v}^2 -------------  u
+					 *        du                 vel^2 + eps
+					 *            
+					 */
+					for(i=0;i<vnumnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							velocity_mag    =sqrt(vx*vx+vy*vy)+epsvel;
+							obs_velocity_mag=sqrt(vxobs*vxobs+vyobs*vyobs)+epsvel;
+							scale=-8.*meanvel*meanvel/(velocity_mag*velocity_mag)*log(velocity_mag/obs_velocity_mag);
+							dux=scale*vx;
+							duy=scale*vy;
+							pe->values[i*3+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+							pe->values[i*3+1]+=duy*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+						else{
+							velocity_mag    =fabs(vx)+epsvel;
+							obs_velocity_mag=fabs(vxobs)+epsvel;
+							scale=-8.*meanvel*meanvel/(velocity_mag*velocity_mag)*log(velocity_mag/obs_velocity_mag);
+							dux=scale*vx;
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+					}
+					break;
+				case SurfaceAverageVelMisfitEnum:
+					/*
+					 *      1                    2              2
+					 * J = ---  sqrt(  (u - u   )  +  (v - v   )  )
+					 *      S                obs            obs
+					 *
+					 *        dJ      1       1 
+					 * DU = - -- = - --- ----------- * 2 (u - u   )
+					 *        du      S  2 sqrt(...)           obs
+					 */
+					S_input->GetInputValue(&S,gauss);
+					for(i=0;i<vnumnodes;i++){
+						if (domaintype!=Domain2DverticalEnum){
+							scale=1./(S*sqrt(pow(vx-vxobs,2)+pow(vy-vyobs,2))+epsvel);
+							dux=scale*(vxobs-vx);
+							duy=scale*(vyobs-vy);
+							pe->values[i*3+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+							pe->values[i*3+1]+=duy*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+						else{
+							scale=1./(S*fabs(vx-vxobs)+epsvel);
+							dux=scale*(vxobs-vx);
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+					}
+					break;
+				case SurfaceLogVxVyMisfitEnum:
+					/*
+					 *      1            [        |u| + eps     2          |v| + eps     2  ]
+					 * J = --- \bar{v}^2 | log ( -----------  )   +  log ( -----------  )   |  
+					 *      2            [       |u    |+ eps              |v    |+ eps     ]
+					 *                              obs                       obs
+					 *        dJ                              1      u                             1
+					 * DU = - -- = - \bar{v}^2 log(u...) --------- ----  ~ - \bar{v}^2 log(u...) ------
+					 *        du                         |u| + eps  |u|                           u + eps
+					 */
+					for(i=0;i<vnumnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							dux = - meanvel*meanvel * log((fabs(vx)+epsvel)/(fabs(vxobs)+epsvel)) / (vx+epsvel);
+							duy = - meanvel*meanvel * log((fabs(vy)+epsvel)/(fabs(vyobs)+epsvel)) / (vy+epsvel);
+							pe->values[i*3+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+							pe->values[i*3+1]+=duy*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+						else{
+							dux = - meanvel*meanvel * log((fabs(vx)+epsvel)/(fabs(vxobs)+epsvel)) / (vx+epsvel);
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*vbasis[i]; 
+						}
+					}
+					break;
+				case DragCoefficientAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAlongGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAcrossGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case RheologyBbarAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case RheologyBInitialguessMisfitEnum:
+					/*Nothing in P vector*/
+					break;
+				default:
+					_error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
+			}
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,cs_list);
+
+	/*Clean up and return*/
+	xDelete<int>(cs_list);
+	xDelete<int>(responses);
+	xDelete<IssmDouble>(xyz_list_top);
+	xDelete<IssmDouble>(vbasis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+ElementVector* AdjointHorizAnalysis::CreatePVectorL1L2(Element* element){/*{{{*/
+
+	/*Same as SSA*/
+	return this->CreatePVectorSSA(element);
+}/*}}}*/
+ElementVector* AdjointHorizAnalysis::CreatePVectorHO(Element* element){/*{{{*/
+
+	/*Nothing to be done if not on surface*/
+	if(!element->IsOnSurface()) return NULL;
+
+	/*Intermediaries */
+	int        num_responses,i,domaintype;
+	IssmDouble Jdet,obs_velocity_mag,velocity_mag;
+	IssmDouble vx,vy,vxobs,vyobs,dux,duy,weight;
+	IssmDouble scalex,scaley,scale,S;
+	int        *responses    = NULL;
+	IssmDouble *xyz_list_top = NULL;
+
+	/* Get domaintype*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe    = element->NewElementVector(HOApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesTop(&xyz_list_top);
+	element->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	element->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+	DatasetInput* weights_input = element->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* vx_input      = element->GetInput(VxEnum);                                 _assert_(vx_input);
+	Input* vxobs_input   = element->GetInput(InversionVxObsEnum);                     _assert_(vxobs_input);
+	Input* vy_input=NULL;
+	Input* vyobs_input=NULL;
+	if(domaintype!=Domain2DverticalEnum){
+		vy_input      = element->GetInput(VyEnum);                                 _assert_(vy_input);
+		vyobs_input   = element->GetInput(InversionVyObsEnum);                     _assert_(vyobs_input);
+	}
+	IssmDouble epsvel  = 2.220446049250313e-16;
+	IssmDouble meanvel = 3.170979198376458e-05; /*1000 m/yr*/
+
+	/*Get Surface if required by one response*/
+	Input* S_input = NULL;
+	for(int resp=0;resp<num_responses;resp++){
+		if(responses[resp]==SurfaceAverageVelMisfitEnum){
+			S_input = element->GetInput(SurfaceAreaEnum);  _assert_(S_input); break;
+		}
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussTop(4);
+	while(gauss->next()){
+
+		element->JacobianDeterminantTop(&Jdet,xyz_list_top,gauss);
+		element->NodalFunctions(basis, gauss);
+
+		vx_input->GetInputValue(&vx,gauss);
+		vxobs_input->GetInputValue(&vxobs,gauss);
+		if(domaintype!=Domain2DverticalEnum){
+			vy_input->GetInputValue(&vy,gauss);
+			vyobs_input->GetInputValue(&vyobs,gauss);
+		}
+		/*Loop over all requested responses*/
+		for(int resp=0;resp<num_responses;resp++){
+			weights_input->GetInputValue(&weight,gauss,responses[resp]);
+
+			switch(responses[resp]){
+				case SurfaceAbsVelMisfitEnum:
+					/*
+					 *      1  [           2              2 ]
+					 * J = --- | (u - u   )  +  (v - v   )  |
+					 *      2  [       obs            obs   ]
+					 *
+					 *        dJ
+					 * DU = - -- = (u   - u )
+					 *        du     obs
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							dux=vxobs-vx;
+							duy=vyobs-vy;
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else{ 
+							dux=vxobs-vx;
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case SurfaceRelVelMisfitEnum:
+					/*
+					 *      1  [     \bar{v}^2             2   \bar{v}^2              2 ]
+					 * J = --- | -------------  (u - u   ) + -------------  (v - v   )  |
+					 *      2  [  (u   + eps)^2       obs    (v   + eps)^2       obs    ]
+					 *              obs                        obs                      
+					 *
+					 *        dJ     \bar{v}^2
+					 * DU = - -- = ------------- (u   - u )
+					 *        du   (u   + eps)^2    obs
+					 *               obs
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							scalex=pow(meanvel/(vxobs+epsvel),2); if(vxobs==0)scalex=0;
+							scaley=pow(meanvel/(vyobs+epsvel),2); if(vyobs==0)scaley=0;
+							dux=scalex*(vxobs-vx);
+							duy=scaley*(vyobs-vy);
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else{
+							scalex=pow(meanvel/(vxobs+epsvel),2); if(vxobs==0)scalex=0;
+							dux=scalex*(vxobs-vx);
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case SurfaceLogVelMisfitEnum:
+					/*
+					 *                 [        vel + eps     ] 2
+					 * J = 4 \bar{v}^2 | log ( -----------  ) |  
+					 *                 [       vel   + eps    ]
+					 *                            obs
+					 *
+					 *        dJ                 2 * log(...)
+					 * DU = - -- = - 4 \bar{v}^2 -------------  u
+					 *        du                 vel^2 + eps
+					 *            
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							velocity_mag    =sqrt(pow(vx,   2)+pow(vy,   2))+epsvel;
+							obs_velocity_mag=sqrt(pow(vxobs,2)+pow(vyobs,2))+epsvel;
+							scale=-8*pow(meanvel,2)/pow(velocity_mag,2)*log(velocity_mag/obs_velocity_mag);
+							dux=scale*vx;
+							duy=scale*vy;
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else{
+							velocity_mag    =fabs(vx)+epsvel;
+							obs_velocity_mag=fabs(vxobs)+epsvel;
+							scale=-8*pow(meanvel,2)/pow(velocity_mag,2)*log(velocity_mag/obs_velocity_mag);
+							dux=scale*vx;
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case SurfaceAverageVelMisfitEnum:
+					/*
+					 *      1                    2              2
+					 * J = ---  sqrt(  (u - u   )  +  (v - v   )  )
+					 *      S                obs            obs
+					 *
+					 *        dJ      1       1 
+					 * DU = - -- = - --- ----------- * 2 (u - u   )
+					 *        du      S  2 sqrt(...)           obs
+					 */
+					S_input->GetInputValue(&S,gauss);
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							scale=1./(S*sqrt(pow(vx-vxobs,2)+pow(vy-vyobs,2))+epsvel);
+							dux=scale*(vxobs-vx);
+							duy=scale*(vyobs-vy);
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else{
+							scale=1./(S*2*fabs(vx-vxobs)+epsvel);
+							dux=scale*(vxobs-vx);
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case SurfaceLogVxVyMisfitEnum:
+					/*
+					 *      1            [        |u| + eps     2          |v| + eps     2  ]
+					 * J = --- \bar{v}^2 | log ( -----------  )   +  log ( -----------  )   |  
+					 *      2            [       |u    |+ eps              |v    |+ eps     ]
+					 *                              obs                       obs
+					 *        dJ                              1      u                             1
+					 * DU = - -- = - \bar{v}^2 log(u...) --------- ----  ~ - \bar{v}^2 log(u...) ------
+					 *        du                         |u| + eps  |u|                           u + eps
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							dux = - meanvel*meanvel * log((fabs(vx)+epsvel)/(fabs(vxobs)+epsvel)) / (vx+epsvel);
+							duy = - meanvel*meanvel * log((fabs(vy)+epsvel)/(fabs(vyobs)+epsvel)) / (vy+epsvel);
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else{
+							dux = - meanvel*meanvel * log((fabs(vx)+epsvel)/(fabs(vxobs)+epsvel)) / (vx+epsvel);
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case DragCoefficientAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAlongGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAcrossGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case RheologyBbarAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case RheologyBAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case RheologyBInitialguessMisfitEnum:
+					/*Nothing in P vector*/
+					break;
+				default:
+					_error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
+			}
+		}
+	}
+
+	/*Transform coordinate system*/
+	if(domaintype!=Domain2DverticalEnum) element->TransformLoadVectorCoord(pe,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<int>(responses);
+	xDelete<IssmDouble>(xyz_list_top);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+
+}/*}}}*/
+ElementVector* AdjointHorizAnalysis::CreatePVectorMOLHO(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement(true);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries */
+	int         num_responses,i;
+	IssmDouble  Jdet,obs_velocity_mag,velocity_mag;
+	IssmDouble  vx,vy,vxobs,vyobs,dux,duy,weight;
+	IssmDouble scalex,scaley,scale,S,thickness,n;
+	int        *responses = NULL;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe    = basalelement->NewElementVector(MOLHOApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	basalelement->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+	DatasetInput* weights_input = basalelement->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* vx_input      = basalelement->GetInput(VxSurfaceEnum);                                        _assert_(vx_input);
+	Input* vxobs_input   = basalelement->GetInput(InversionVxObsEnum);                                   _assert_(vxobs_input);
+   Input* thickness_input=basalelement->GetInput(ThicknessEnum);													  _assert_(thickness_input);
+   Input*     n_input        =element->GetInput(MaterialsRheologyNEnum); _assert_(n_input);
+	Input* vy_input=NULL;
+	Input* vyobs_input=NULL;
+	if(domaintype!=Domain2DverticalEnum){
+		vy_input      = basalelement->GetInput(VySurfaceEnum);       _assert_(vy_input);
+		vyobs_input   = basalelement->GetInput(InversionVyObsEnum);  _assert_(vyobs_input);
+	}
+	IssmDouble epsvel  = 2.220446049250313e-16;
+	IssmDouble meanvel = 3.170979198376458e-05; /*1000 m/yr*/
+
+	/*Get Surface if required by one response*/
+	Input* S_input = NULL;
+	for(int resp=0;resp<num_responses;resp++){
+		if(responses[resp]==SurfaceAverageVelMisfitEnum){
+			S_input = element->GetInput(SurfaceAreaEnum);  _assert_(S_input); break;
+		}
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(4);
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis, gauss);
+      
+		thickness_input->GetInputValue(&thickness,gauss);
+      n_input->GetInputValue(&n,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vxobs_input->GetInputValue(&vxobs,gauss);
+		if(domaintype!=Domain2DverticalEnum){
+			vy_input->GetInputValue(&vy,gauss);
+			vyobs_input->GetInputValue(&vyobs,gauss);
+		}
+		/*Loop over all requested responses*/
+		for(int resp=0;resp<num_responses;resp++){
+			weights_input->GetInputValue(&weight,gauss,responses[resp]);
+
+			switch(responses[resp]){
+				case SurfaceAbsVelMisfitEnum:
+					/*
+					 *      1  [           2              2 ]
+					 * J = --- | (u - u   )  +  (v - v   )  |
+					 *      2  [       obs            obs   ]
+					 *
+					 *        dJ
+					 * DU = - -- = (u   - u )
+					 *        du     obs
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							dux=vxobs-vx;
+							duy=vyobs-vy;
+							pe->values[i*4+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*4+1]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*4+2]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else {
+							_error_("2D vertical is not implemented for MOLHO");
+						}
+					}
+					break;
+				case SurfaceRelVelMisfitEnum:
+					/*
+					 *      1  [     \bar{v}^2             2   \bar{v}^2              2 ]
+					 * J = --- | -------------  (u - u   ) + -------------  (v - v   )  |
+					 *      2  [  (u   + eps)^2       obs    (v   + eps)^2       obs    ]
+					 *              obs                        obs                      
+					 *
+					 *        dJ     \bar{v}^2
+					 * DU = - -- = ------------- (u   - u )
+					 *        du   (u   + eps)^2    obs
+					 *               obs
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							scalex=pow(meanvel/(vxobs+epsvel),2); if(vxobs==0)scalex=0;
+							scaley=pow(meanvel/(vyobs+epsvel),2); if(vyobs==0)scaley=0;
+							dux=scalex*(vxobs-vx);
+							duy=scaley*(vyobs-vy);
+							pe->values[i*4+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*4+1]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*4+2]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i];
+						}
+						else{
+							_error_("2D vertical is not implemented for MOLHO");
+						}
+					}
+					break;
+				case SurfaceLogVelMisfitEnum:
+					/*
+					 *                 [        vel + eps     ] 2
+					 * J = 4 \bar{v}^2 | log ( -----------  ) |  
+					 *                 [       vel   + eps    ]
+					 *                            obs
+					 *
+					 *        dJ                 2 * log(...)
+					 * DU = - -- = - 4 \bar{v}^2 -------------  u
+					 *        du                 vel^2 + eps
+					 *            
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							velocity_mag    =sqrt(pow(vx,   2)+pow(vy,   2))+epsvel;
+							obs_velocity_mag=sqrt(pow(vxobs,2)+pow(vyobs,2))+epsvel;
+							scale=-8*pow(meanvel,2)/pow(velocity_mag,2)*log(velocity_mag/obs_velocity_mag);
+							dux=scale*vx;
+							duy=scale*vy;
+							pe->values[i*4+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*4+1]+=dux*weight*Jdet*gauss->weight*basis[i];
+							pe->values[i*4+2]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i];
+						}
+						else{
+							_error_("2D vertical is not implemented for MOLHO");
+						}
+					}
+					break;
+				case SurfaceAverageVelMisfitEnum:
+					/*
+					 *      1                    2              2
+					 * J = ---  sqrt(  (u - u   )  +  (v - v   )  )
+					 *      S                obs            obs
+					 *
+					 *        dJ      1       1 
+					 * DU = - -- = - --- ----------- * 2 (u - u   )
+					 *        du      S  2 sqrt(...)           obs
+					 */
+					S_input->GetInputValue(&S,gauss);
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							scale=1./(S*sqrt(pow(vx-vxobs,2)+pow(vy-vyobs,2))+epsvel);
+							dux=scale*(vxobs-vx);
+							duy=scale*(vyobs-vy);
+							pe->values[i*4+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*4+1]+=dux*weight*Jdet*gauss->weight*basis[i];
+							pe->values[i*4+2]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i];
+						}
+						else{
+							_error_("2D vertical is not implemented for MOLHO");
+						}
+					}
+					break;
+				case SurfaceLogVxVyMisfitEnum:
+					/*
+					 *      1            [        |u| + eps     2          |v| + eps     2  ]
+					 * J = --- \bar{v}^2 | log ( -----------  )   +  log ( -----------  )   |  
+					 *      2            [       |u    |+ eps              |v    |+ eps     ]
+					 *                              obs                       obs
+					 *        dJ                              1      u                             1
+					 * DU = - -- = - \bar{v}^2 log(u...) --------- ----  ~ - \bar{v}^2 log(u...) ------
+					 *        du                         |u| + eps  |u|                           u + eps
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							dux = - meanvel*meanvel * log((fabs(vx)+epsvel)/(fabs(vxobs)+epsvel)) / (vx+epsvel);
+							duy = - meanvel*meanvel * log((fabs(vy)+epsvel)/(fabs(vyobs)+epsvel)) / (vy+epsvel);
+							pe->values[i*4+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*4+1]+=dux*weight*Jdet*gauss->weight*basis[i];
+							pe->values[i*4+2]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*4+3]+=duy*weight*Jdet*gauss->weight*basis[i];
+						}
+						else{
+							_error_("2D vertical is not implemented for MOLHO");
+						}
+					}
+					break;
+				case DragCoefficientAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAlongGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAcrossGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case RheologyBbarAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case RheologyBAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case RheologyBInitialguessMisfitEnum:
+					/*Nothing in P vector*/
+					break;
+				default:
+					_error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
+			}
+		}
+	}
+
+	/*Transform coordinate system*/
+	//if(domaintype!=Domain2DverticalEnum)	basalelement->TransformLoadVectorCoord(pe,XYEnum);
+	/*Clean up and return*/
+	xDelete<int>(responses);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	delete gauss;
+	return pe;
+}/*}}}*/
+ElementVector* AdjointHorizAnalysis::CreatePVectorSSA(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement(true);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries */
+	int         num_responses,i;
+	IssmDouble  Jdet,obs_velocity_mag,velocity_mag;
+	IssmDouble  vx,vy,vxobs,vyobs,dux,duy,weight;
+	IssmDouble scalex,scaley,scale,S;
+	int        *responses = NULL;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe    = basalelement->NewElementVector(SSAApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	basalelement->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+	DatasetInput* weights_input = basalelement->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* vx_input      = basalelement->GetInput(VxEnum);                                               _assert_(vx_input);
+	Input* vxobs_input   = basalelement->GetInput(InversionVxObsEnum);                                   _assert_(vxobs_input);
+	Input* vy_input=NULL;
+	Input* vyobs_input=NULL;
+	if(domaintype!=Domain2DverticalEnum){
+		vy_input      = basalelement->GetInput(VyEnum);              _assert_(vy_input);
+		vyobs_input   = basalelement->GetInput(InversionVyObsEnum);  _assert_(vyobs_input);
+	}
+	IssmDouble epsvel  = 2.220446049250313e-16;
+	IssmDouble meanvel = 3.170979198376458e-05; /*1000 m/yr*/
+
+	/*Get Surface if required by one response*/
+	Input* S_input = NULL;
+	for(int resp=0;resp<num_responses;resp++){
+		if(responses[resp]==SurfaceAverageVelMisfitEnum){
+			S_input = element->GetInput(SurfaceAreaEnum);  _assert_(S_input); break;
+		}
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(4);
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis, gauss);
+
+		vx_input->GetInputValue(&vx,gauss);
+		vxobs_input->GetInputValue(&vxobs,gauss);
+		if(domaintype!=Domain2DverticalEnum){
+			vy_input->GetInputValue(&vy,gauss);
+			vyobs_input->GetInputValue(&vyobs,gauss);
+		}
+		/*Loop over all requested responses*/
+		for(int resp=0;resp<num_responses;resp++){
+			weights_input->GetInputValue(&weight,gauss,responses[resp]);
+
+			switch(responses[resp]){
+				case SurfaceAbsVelMisfitEnum:
+					/*
+					 *      1  [           2              2 ]
+					 * J = --- | (u - u   )  +  (v - v   )  |
+					 *      2  [       obs            obs   ]
+					 *
+					 *        dJ
+					 * DU = - -- = (u   - u )
+					 *        du     obs
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							dux=vxobs-vx;
+							duy=vyobs-vy;
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else {
+							dux=vxobs-vx;
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case SurfaceRelVelMisfitEnum:
+					/*
+					 *      1  [     \bar{v}^2             2   \bar{v}^2              2 ]
+					 * J = --- | -------------  (u - u   ) + -------------  (v - v   )  |
+					 *      2  [  (u   + eps)^2       obs    (v   + eps)^2       obs    ]
+					 *              obs                        obs                      
+					 *
+					 *        dJ     \bar{v}^2
+					 * DU = - -- = ------------- (u   - u )
+					 *        du   (u   + eps)^2    obs
+					 *               obs
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							scalex=pow(meanvel/(vxobs+epsvel),2); if(vxobs==0)scalex=0;
+							scaley=pow(meanvel/(vyobs+epsvel),2); if(vyobs==0)scaley=0;
+							dux=scalex*(vxobs-vx);
+							duy=scaley*(vyobs-vy);
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else{
+							scalex=pow(meanvel/(vxobs+epsvel),2); if(vxobs==0)scalex=0;
+							dux=scalex*(vxobs-vx);
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case SurfaceLogVelMisfitEnum:
+					/*
+					 *                 [        vel + eps     ] 2
+					 * J = 4 \bar{v}^2 | log ( -----------  ) |  
+					 *                 [       vel   + eps    ]
+					 *                            obs
+					 *
+					 *        dJ                 2 * log(...)
+					 * DU = - -- = - 4 \bar{v}^2 -------------  u
+					 *        du                 vel^2 + eps
+					 *            
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							velocity_mag    =sqrt(pow(vx,   2)+pow(vy,   2))+epsvel;
+							obs_velocity_mag=sqrt(pow(vxobs,2)+pow(vyobs,2))+epsvel;
+							scale=-8*pow(meanvel,2)/pow(velocity_mag,2)*log(velocity_mag/obs_velocity_mag);
+							dux=scale*vx;
+							duy=scale*vy;
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else{
+							velocity_mag    =fabs(vx)+epsvel;
+							obs_velocity_mag=fabs(vxobs)+epsvel;
+							scale=-8*pow(meanvel,2)/pow(velocity_mag,2)*log(velocity_mag/obs_velocity_mag);
+							dux=scale*vx;
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case SurfaceAverageVelMisfitEnum:
+					/*
+					 *      1                    2              2
+					 * J = ---  sqrt(  (u - u   )  +  (v - v   )  )
+					 *      S                obs            obs
+					 *
+					 *        dJ      1       1 
+					 * DU = - -- = - --- ----------- * 2 (u - u   )
+					 *        du      S  2 sqrt(...)           obs
+					 */
+					S_input->GetInputValue(&S,gauss);
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							scale=1./(S*sqrt(pow(vx-vxobs,2)+pow(vy-vyobs,2))+epsvel);
+							dux=scale*(vxobs-vx);
+							duy=scale*(vyobs-vy);
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else{
+							scale=1./(S*fabs(vx-vxobs)+epsvel);
+							dux=scale*(vxobs-vx);
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case SurfaceLogVxVyMisfitEnum:
+					/*
+					 *      1            [        |u| + eps     2          |v| + eps     2  ]
+					 * J = --- \bar{v}^2 | log ( -----------  )   +  log ( -----------  )   |  
+					 *      2            [       |u    |+ eps              |v    |+ eps     ]
+					 *                              obs                       obs
+					 *        dJ                              1      u                             1
+					 * DU = - -- = - \bar{v}^2 log(u...) --------- ----  ~ - \bar{v}^2 log(u...) ------
+					 *        du                         |u| + eps  |u|                           u + eps
+					 */
+					for(i=0;i<numnodes;i++){
+						if(domaintype!=Domain2DverticalEnum){
+							dux = - meanvel*meanvel * log((fabs(vx)+epsvel)/(fabs(vxobs)+epsvel)) / (vx+epsvel);
+							duy = - meanvel*meanvel * log((fabs(vy)+epsvel)/(fabs(vyobs)+epsvel)) / (vy+epsvel);
+							pe->values[i*2+0]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+							pe->values[i*2+1]+=duy*weight*Jdet*gauss->weight*basis[i]; 
+						}
+						else{
+							dux = - meanvel*meanvel * log((fabs(vx)+epsvel)/(fabs(vxobs)+epsvel)) / (vx+epsvel);
+							pe->values[i]+=dux*weight*Jdet*gauss->weight*basis[i]; 
+						}
+					}
+					break;
+				case DragCoefficientAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAlongGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case ThicknessAcrossGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case RheologyBbarAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case RheologyBAbsGradientEnum:
+					/*Nothing in P vector*/
+					break;
+				case RheologyBInitialguessMisfitEnum:
+					/*Nothing in P vector*/
+					break;
+				default:
+					_error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
+			}
+		}
+	}
+
+	/*Transform coordinate system*/
+	if(domaintype!=Domain2DverticalEnum)	basalelement->TransformLoadVectorCoord(pe,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<int>(responses);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           AdjointHorizAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	/*The gradient of the cost function is calculated in 2 parts.
+	 *
+	 * dJ    \partial J   \partial lambda^T(KU-F)
+	 * --  = ---------- + ------------------------
+	 * dk    \partial k   \parial k                  
+	 *
+	 * */
+
+	/*If on water, grad = 0: */
+	if(!element->IsIceInElement()) return;
+
+	/*Get Approximation*/
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+
+	/*Get list of cost functions*/
+	int *responses = NULL;
+	int num_responses,resp;
+	element->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	element->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+
+	/*Check that control_type is supported*/
+	if(control_type!=MaterialsRheologyBbarEnum && 
+		control_type!=FrictionCoefficientEnum   &&
+		control_type!=FrictionCEnum             &&
+		control_type!=FrictionAsEnum            && 
+		control_type!=DamageDbarEnum            &&
+		control_type!=MaterialsRheologyBEnum){
+		_error_("Control "<<EnumToStringx(control_type)<<" not supported");
+	}
+
+	/*Deal with first part (partial derivative a J with respect to k)*/
+	for(resp=0;resp<num_responses;resp++) switch(responses[resp]){
+		case SurfaceAbsVelMisfitEnum:     /*Nothing, \partial J/\partial k = 0*/ break;
+		case SurfaceRelVelMisfitEnum:     /*Nothing, \partial J/\partial k = 0*/ break;
+		case SurfaceLogVelMisfitEnum:     /*Nothing, \partial J/\partial k = 0*/ break;
+		case SurfaceLogVxVyMisfitEnum:    /*Nothing, \partial J/\partial k = 0*/ break;
+		case SurfaceAverageVelMisfitEnum: /*Nothing, \partial J/\partial k = 0*/ break;
+		case DragCoefficientAbsGradientEnum:   GradientJDragGradient(element,gradient,control_interp,control_index); break;
+		case RheologyBbarAbsGradientEnum:      GradientJBbarGradient(element,gradient,control_interp,control_index); break;
+		case RheologyBAbsGradientEnum:         GradientJBGradient(element,gradient,control_interp,control_index);    break;
+		case RheologyBInitialguessMisfitEnum:  GradientJBinitial(element,gradient,control_interp,control_index);     break;
+		default: _error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
+	}
+
+	/*Deal with second term*/
+	switch(control_type){
+		case FrictionCoefficientEnum:
+		case FrictionCEnum:
+			switch(approximation){
+				case SSAApproximationEnum: GradientJDragSSA(element,gradient,control_interp,control_index); break;
+				case L1L2ApproximationEnum:GradientJDragL1L2(element,gradient,control_interp,control_index); break;
+				case HOApproximationEnum:  GradientJDragHO( element,gradient,control_interp,control_index); break;
+				case MOLHOApproximationEnum:  GradientJDragMOLHO( element,gradient,control_interp,control_index); break;
+				case FSApproximationEnum:  GradientJDragFS( element,gradient,control_interp,control_index); break;
+				case NoneApproximationEnum: /*Gradient is 0*/                    break;
+				default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet");
+			}
+			break;
+		case FrictionAsEnum:
+			switch(approximation){
+				case SSAApproximationEnum: GradientJDragHydroSSA(element,gradient,control_interp,control_index); break;
+				case L1L2ApproximationEnum:GradientJDragHydroL1L2(element,gradient,control_interp,control_index); break;
+				case HOApproximationEnum:  GradientJDragHydroHO( element,gradient,control_interp,control_index); break;
+				case FSApproximationEnum:  GradientJDragHydroFS( element,gradient,control_interp,control_index); break;
+				case NoneApproximationEnum: /*Gradient is 0*/                    break;
+				default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet");
+			}
+			break;
+		case MaterialsRheologyBbarEnum:
+			switch(approximation){
+				case SSAApproximationEnum: GradientJBbarSSA(element,gradient,control_interp,control_index); break;
+				case L1L2ApproximationEnum:GradientJBbarL1L2(element,gradient,control_interp,control_index); break;
+				case HOApproximationEnum:  GradientJBbarHO( element,gradient,control_interp,control_index); break;
+				case MOLHOApproximationEnum:  GradientJBbarMOLHO( element,gradient,control_interp,control_index); break;
+				case FSApproximationEnum:  GradientJBbarFS( element,gradient,control_interp,control_index); break;
+				case NoneApproximationEnum: /*Gradient is 0*/                    break;
+				default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet");
+			}
+			break;
+		case MaterialsRheologyBEnum:
+			switch(approximation){
+				case SSAApproximationEnum: GradientJBSSA(element,gradient,control_interp,control_index); break;
+				case HOApproximationEnum:  GradientJBHO( element,gradient,control_interp,control_index); break;
+			//	case MOLHOApproximationEnum:  GradientJBMOLHO( element,gradient,control_interp,control_index); break;
+				case FSApproximationEnum:  GradientJBFS( element,gradient,control_interp,control_index); break;
+				case NoneApproximationEnum: /*Gradient is 0*/                    break;
+				default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet");
+			}
+			break;
+		case DamageDbarEnum:
+			switch(approximation){
+				case SSAApproximationEnum: GradientJDSSA(element,gradient,control_interp,control_index); break;
+				case NoneApproximationEnum: /*Gradient is 0*/                 break;
+				default: _error_("approximation " << EnumToStringx(approximation) << " not supported yet");
+			}
+			break;
+		default: _error_("control type not supported yet: " << EnumToStringx(control_type));
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(responses);
+
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBbarFS(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+	/*WARNING: We use SSA as an estimate for now*/
+	this->GradientJBbarSSA(element,gradient,control_interp,control_index);
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBbarGradient(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	if(control_interp==P0Enum) _error_("cannot require regularization for P0 controls");
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement(true);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble dk[3]; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* dbasis        = xNew<IssmDouble>(2*numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* rheologyb_input = basalelement->GetInput(MaterialsRheologyBbarEnum);              _assert_(rheologyb_input);
+	DatasetInput* weights_input   = basalelement->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsP1Derivatives(dbasis,xyz_list,gauss);
+		weights_input->GetInputValue(&weight,gauss,RheologyBbarAbsGradientEnum);
+
+		/*Build alpha_complement_list: */
+		rheologyb_input->GetInputDerivativeValue(&dk[0],xyz_list,gauss);
+
+		/*Build gradje_g_gaussian vector (actually -dJ/ddrag): */
+		for(int i=0;i<numvertices;i++){
+			if(domaintype!=Domain2DverticalEnum){
+				ge[i]+=-weight*Jdet*gauss->weight*(dbasis[0*numvertices+i]*dk[0]+dbasis[1*numvertices+i]*dk[1]);
+			}
+			else{
+				ge[i]+=-weight*Jdet*gauss->weight*dbasis[0*numvertices+i]*dk[0];
+			}
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBbarL1L2(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	   /*Same as SSA*/
+	   return this->GradientJBbarSSA(element,gradient,control_interp,control_index);
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBbarHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*WARNING: We use SSA as an estimate for now*/
+	this->GradientJBbarSSA(element,gradient,control_interp,control_index);
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBbarMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+   if(control_interp!=P1Enum) _error_("not implemented yet...");
+	/*Intermediaries*/
+	int      domaintype,dim;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			dim          = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement(true);
+			dim          = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble thickness,dmudB,n;
+	IssmDouble dvx[3],dvy[3],dadjbx[3],dadjby[3],dadjshx[3],dadjshy[3]; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+	IssmDouble  zeta;
+   IssmDouble  e1[3],e2[3], phishx[3], phishy[3];
+   IssmDouble  epsilon[5];/* epsilon=[exx,eyy,exy,exz,eyz];*/
+	IssmDouble  adjshx, adjshy;
+
+	/*Retrieve all inputs we will be needing: */
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* thickness_input	= basalelement->GetInput(ThicknessEnum);					_assert_(thickness_input);
+   Input* n_input				= basalelement->GetInput(MaterialsRheologyNEnum);		_assert_(n_input);
+   Input* vxbase_input		= basalelement->GetInput(VxBaseEnum);						_assert_(vxbase_input);
+   Input* vybase_input		= basalelement->GetInput(VyBaseEnum);						_assert_(vybase_input);
+   Input* vxshear_input		= basalelement->GetInput(VxShearEnum);						_assert_(vxshear_input);
+   Input* vyshear_input		= basalelement->GetInput(VyShearEnum);						_assert_(vyshear_input);
+
+	Input* adjointbx_input	= basalelement->GetInput(AdjointxBaseEnum);				_assert_(adjointbx_input);
+	Input* adjointby_input	= basalelement->GetInput(AdjointyBaseEnum);				_assert_(adjointby_input);
+	Input* adjointshx_input	= basalelement->GetInput(AdjointxShearEnum);				_assert_(adjointshx_input);
+	Input* adjointshy_input	= basalelement->GetInput(AdjointyShearEnum);				_assert_(adjointshy_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(5);
+   GaussSeg* gauss_seg=new GaussSeg(2);
+
+	while(gauss->next()){
+
+		thickness_input->GetInputValue(&thickness,gauss);
+	   n_input->GetInputValue(&n,gauss);
+		adjointbx_input->GetInputDerivativeValue(&dadjbx[0],xyz_list,gauss);
+		adjointby_input->GetInputDerivativeValue(&dadjby[0],xyz_list,gauss);
+		adjointshx_input->GetInputDerivativeValue(&dadjshx[0],xyz_list,gauss);
+		adjointshy_input->GetInputDerivativeValue(&dadjshy[0],xyz_list,gauss);
+		adjointshx_input->GetInputValue(&adjshx, gauss);
+		adjointshy_input->GetInputValue(&adjshy, gauss);
+		
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsP1(basis,gauss);
+
+	   /* Get the integration in the vertical direction */
+      gauss_seg->Reset();
+      while(gauss_seg->next()){
+			zeta=0.5*(gauss_seg->coord1+1);
+
+			basalelement->StrainRateMOLHO(&epsilon[0],xyz_list,gauss,
+                  vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
+
+			basalelement->dViscositydBMOLHO(&dmudB,dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
+
+			e1[0] = 2.0*epsilon[0]+epsilon[1];
+         e1[1] = epsilon[2];
+         e1[2] = epsilon[3];
+
+         e2[0] = epsilon[2];
+         e2[1] = epsilon[0]+2.0*epsilon[1];
+         e2[2] = epsilon[4];
+
+			phishx[0] = dadjbx[0] + (1-pow(zeta, n+1))*dadjshx[0];
+			phishx[1] = dadjbx[1] + (1-pow(zeta, n+1))*dadjshx[1];
+			phishx[2] = (n+1)/thickness*pow(zeta, n)*adjshx;
+			phishy[0] = dadjby[0] + (1-pow(zeta, n+1))*dadjshy[0];
+			phishy[1] = dadjby[1] + (1-pow(zeta, n+1))*dadjshy[1];
+			phishy[2] = (n+1)/thickness*pow(zeta, n)*adjshy;
+
+			/*Build gradient vector (actually -dJ/dB): */
+			for(int i=0;i<numvertices;i++){
+				for (int j=0;j<3;j++){
+					ge[i]+=(-dmudB)*2*(e1[j]*phishx[j]+e2[j]*phishy[j])*Jdet*gauss->weight*basis[i]*thickness*0.5*gauss_seg->weight;
+					_assert_(!xIsNan<IssmDouble>(ge[i]));
+				}
+			}
+		}
+	}
+	if(control_interp==P1Enum){
+		gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+	}
+	else{
+		_error_("not supported");
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	delete gauss_seg;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBbarSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype,dim;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			dim          = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement(true);
+			dim          = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble thickness,dmudB;
+	IssmDouble dvx[3],dvy[3],dadjx[3],dadjy[3]; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* thickness_input = basalelement->GetInput(ThicknessEnum);             _assert_(thickness_input);
+	Input* vx_input        = basalelement->GetInput(VxEnum);                    _assert_(vx_input);
+	Input* vy_input        = basalelement->GetInput(VyEnum);                    _assert_(vy_input);
+	Input* adjointx_input  = basalelement->GetInput(AdjointxEnum);              _assert_(adjointx_input);
+	Input* adjointy_input  = basalelement->GetInput(AdjointyEnum);              _assert_(adjointy_input);
+	Input* rheologyb_input = basalelement->GetInput(MaterialsRheologyBbarEnum); _assert_(rheologyb_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(4);
+	while(gauss->next()){
+
+		thickness_input->GetInputValue(&thickness,gauss);
+		vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+		adjointx_input->GetInputDerivativeValue(&dadjx[0],xyz_list,gauss);
+		adjointy_input->GetInputDerivativeValue(&dadjy[0],xyz_list,gauss);
+
+		basalelement->dViscositydBSSA(&dmudB,dim,xyz_list,gauss,vx_input,vy_input);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dB): */
+		if(control_interp==P1Enum){
+			for(int i=0;i<numvertices;i++){
+				ge[i]+=-dmudB*thickness*(
+							(2*dvx[0]+dvy[1])*2*dadjx[0]+(dvx[1]+dvy[0])*(dadjx[1]+dadjy[0])+(2*dvy[1]+dvx[0])*2*dadjy[1]
+							)*Jdet*gauss->weight*basis[i];
+				_assert_(!xIsNan<IssmDouble>(ge[i]));
+			}
+		}
+		else if(control_interp==P0Enum){
+			ge[0]+=-dmudB*thickness*(
+						(2*dvx[0]+dvy[1])*2*dadjx[0]+(dvx[1]+dvy[0])*(dadjx[1]+dadjy[0])+(2*dvy[1]+dvx[0])*2*dadjy[1]
+						)*Jdet*gauss->weight;
+			_assert_(!xIsNan<IssmDouble>(ge[0]));
+		}
+		else{
+			_error_("not supported");
+		}
+	}
+	if(control_interp==P1Enum){
+		gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+	}
+	else if(control_interp==P0Enum){
+		gradient->SetValue(vertexpidlist[0],ge[0],ADD_VAL);
+	}
+	else{
+		_error_("not supported");
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBFS(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+	/*WARNING: We use HO as an estimate for now*/
+	this->GradientJBHO(element,gradient,control_interp,control_index);
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBGradient(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+
+	if(control_interp==P0Enum) _error_("cannot require regularization for P0 controls");
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			break;
+		case Domain2DverticalEnum:
+			break;
+		case Domain3DEnum:
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble dk[3]; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* dbasis        = xNew<IssmDouble>(3*numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* rheology_input = element->GetInput(MaterialsRheologyBEnum);              _assert_(rheology_input);
+	DatasetInput* weights_input   = element->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsP1Derivatives(dbasis,xyz_list,gauss);
+		weights_input->GetInputValue(&weight,gauss,RheologyBAbsGradientEnum);
+
+		/*Build alpha_complement_list: */
+		rheology_input->GetInputDerivativeValue(&dk[0],xyz_list,gauss);
+
+		/*Build gradje_g_gaussian vector (actually -dJ/ddrag): */
+		for(int i=0;i<numvertices;i++){
+			if(domaintype!=Domain2DverticalEnum){
+				ge[i]+=-weight*Jdet*gauss->weight*(dbasis[0*numvertices+i]*dk[0]+dbasis[1*numvertices+i]*dk[1]);
+			}
+			else{
+				ge[i]+=-weight*Jdet*gauss->weight*(dbasis[0*numvertices+i]*dk[0]+dbasis[1*numvertices+i]*dk[1]+dbasis[2*numvertices+i]*dk[2]);
+			}
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBinitial(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	if(control_interp!=P1Enum) _error_("not implemented yet...");
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			break;
+		case Domain2DverticalEnum:
+			break;
+		case Domain3DEnum:
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble B,B0; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis        = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge           = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* rheology_input  = element->GetInput(MaterialsRheologyBbarEnum);              _assert_(rheology_input);
+	Input* rheology0_input = element->GetInput(RheologyBInitialguessEnum);              _assert_(rheology0_input);
+	DatasetInput* weights_input   = element->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+		weights_input->GetInputValue(&weight,gauss,RheologyBInitialguessMisfitEnum);
+
+		/*Build alpha_complement_list: */
+		rheology_input->GetInputValue(&B,gauss);
+		rheology0_input->GetInputValue(&B0,gauss);
+
+		/*Build gradje_g_gaussian vector (actually -dJ/ddrag): */
+		for(int i=0;i<numvertices;i++){
+			ge[i]+=-weight*Jdet*gauss->weight*basis[i]*(B-B0);
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+	/*Intermediaries*/
+	int      domaintype,dim;
+	if(control_interp!=P1Enum) _error_("not implemented yet...");
+
+	/*Get domaintype*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble thickness,dmudB;
+	IssmDouble dvx[3],dvy[3],dadjx[3],dadjy[3]; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* thickness_input = element->GetInput(ThicknessEnum);             _assert_(thickness_input);
+	Input* vx_input        = element->GetInput(VxEnum);                    _assert_(vx_input);
+	Input* vy_input        = NULL;
+	Input* adjointx_input  = element->GetInput(AdjointxEnum);              _assert_(adjointx_input);
+	Input* adjointy_input  = NULL;
+	Input* rheologyb_input = element->GetInput(MaterialsRheologyBEnum); _assert_(rheologyb_input);
+	if(domaintype!=Domain2DverticalEnum){
+		vy_input        = element->GetInput(VyEnum);                   _assert_(vy_input);
+		adjointy_input  = element->GetInput(AdjointyEnum);             _assert_(adjointy_input);
+	}
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(4);
+	while(gauss->next()){
+
+		thickness_input->GetInputValue(&thickness,gauss);
+		vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		adjointx_input->GetInputDerivativeValue(&dadjx[0],xyz_list,gauss);
+		dim=2;
+		if(domaintype!=Domain2DverticalEnum){
+			adjointy_input->GetInputDerivativeValue(&dadjy[0],xyz_list, gauss);
+			vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+			dim=3;
+		}
+
+		element->dViscositydBHO(&dmudB,dim,xyz_list,gauss,vx_input,vy_input);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dB): */
+		for(int i=0;i<numvertices;i++){
+			if(domaintype!=Domain2DverticalEnum){
+				ge[i]+=-dmudB*thickness*(
+							(2*dvx[0]+dvy[1])*2*dadjx[0]+(dvx[1]+dvy[0])*(dadjx[1]+dadjy[0])+(2*dvy[1]+dvx[0])*2*dadjy[1]
+							)*Jdet*gauss->weight*basis[i];
+			}
+			else{
+				ge[i]+=-dmudB*thickness*4*dvx[0]*dadjx[0]*Jdet*gauss->weight*basis[i];
+			}
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+	_error_("not implemented yet...");
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJBSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype,dim;
+	Element* basalelement;
+	if(control_interp!=P1Enum) _error_("not implemented yet...");
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			dim          = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble thickness,dmudB;
+	IssmDouble dvx[3],dvy[3],dadjx[3],dadjy[3]; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* thickness_input = basalelement->GetInput(ThicknessEnum);             _assert_(thickness_input);
+	Input* vx_input        = basalelement->GetInput(VxEnum);                    _assert_(vx_input);
+	Input* vy_input        = basalelement->GetInput(VyEnum);                    _assert_(vy_input);
+	Input* adjointx_input  = basalelement->GetInput(AdjointxEnum);              _assert_(adjointx_input);
+	Input* adjointy_input  = basalelement->GetInput(AdjointyEnum);              _assert_(adjointy_input);
+	Input* rheologyb_input = basalelement->GetInput(MaterialsRheologyBEnum); _assert_(rheologyb_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(4);
+	while(gauss->next()){
+
+		thickness_input->GetInputValue(&thickness,gauss);
+		vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+		adjointx_input->GetInputDerivativeValue(&dadjx[0],xyz_list,gauss);
+		adjointy_input->GetInputDerivativeValue(&dadjy[0],xyz_list,gauss);
+
+		basalelement->dViscositydBSSA(&dmudB,dim,xyz_list,gauss,vx_input,vy_input);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dB): */
+		for(int i=0;i<numvertices;i++){
+			ge[i]+=-dmudB*thickness*(
+						(2*dvx[0]+dvy[1])*2*dadjx[0]+(dvx[1]+dvy[0])*(dadjx[1]+dadjy[0])+(2*dvy[1]+dvx[0])*2*dadjy[1]
+						)*Jdet*gauss->weight*basis[i];
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJDragGradient(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*return if floating (gradient is 0)*/
+	if(element->IsAllFloating()) return;
+	if(control_interp==P0Enum) _error_("cannot require regularization for P0 controls");
+
+	/*Intermediaries*/
+	int      domaintype,dim;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			dim          = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble dk[3]; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* dbasis        = xNew<IssmDouble>(2*numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->GradientIndexing(&vertexpidlist[0],control_index);
+
+	/* get the friction law: if 2-Weertman, 11-Schoof, use a special name for the coefficient*/
+	int frictionlaw; element->FindParam(&frictionlaw, FrictionLawEnum);
+	Input* dragcoefficient_input;
+	switch(frictionlaw) {
+		case 2:
+		case 11:
+		case 13:
+		case 14:
+			dragcoefficient_input = basalelement->GetInput(FrictionCEnum); _assert_(dragcoefficient_input);
+			break;
+		default:
+			dragcoefficient_input = basalelement->GetInput(FrictionCoefficientEnum); _assert_(dragcoefficient_input);
+	}
+
+	DatasetInput* weights_input         = basalelement->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsP1Derivatives(dbasis,xyz_list,gauss);
+		weights_input->GetInputValue(&weight,gauss,DragCoefficientAbsGradientEnum);
+
+		/*Build alpha_complement_list: */
+		dragcoefficient_input->GetInputDerivativeValue(&dk[0],xyz_list,gauss);
+
+		/*Build gradient vector (actually -dJ/ddrag): */
+		for(int i=0;i<numvertices;i++){
+			if(dim==2){
+				ge[i]+=-weight*Jdet*gauss->weight*(dbasis[0*numvertices+i]*dk[0]+dbasis[1*numvertices+i]*dk[1]);
+			}
+			else{
+				ge[i]+=-weight*Jdet*gauss->weight*dbasis[0*numvertices+i]*dk[0];
+			}
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJDragFS(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*return if floating or not on bed (gradient is 0)*/
+	if(element->IsAllFloating()) return;
+	if(!element->IsOnBase()) return;
+	if(control_interp!=P1Enum) _error_("not implemented yet...");
+
+	/*Intermediaries*/
+	int        domaintype,dim;
+	IssmDouble Jdet,weight;
+	IssmDouble drag,dalpha2dk,normal[3];
+	IssmDouble vx,vy,vz,lambda,mu,xi;
+	IssmDouble *xyz_list_base= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/* get domaintype */
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Build friction element, needed later: */
+	if(domaintype!=Domain2DverticalEnum) dim=3;
+	else dim=2;
+	Friction* friction=new Friction(element,dim);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* vx_input        = element->GetInput(VxEnum);                   _assert_(vx_input);
+	Input* vy_input        = element->GetInput(VyEnum);                   _assert_(vy_input);
+	Input* adjointx_input  = element->GetInput(AdjointxEnum);             _assert_(adjointx_input);
+	Input* adjointy_input  = element->GetInput(AdjointyEnum);             _assert_(adjointy_input);
+	Input* vz_input        = NULL;
+	Input* adjointz_input  = NULL;
+	if(domaintype!=Domain2DverticalEnum){
+		vz_input        = element->GetInput(VzEnum);                   _assert_(vy_input);
+		adjointz_input  = element->GetInput(AdjointzEnum);             _assert_(adjointz_input);
+	}
+	/* get the friction law: 1- Budd, 11-Schoof*/
+	int frictionlaw; element->FindParam(&frictionlaw, FrictionLawEnum);
+	Input* dragcoeff_input = NULL;
+	switch(frictionlaw) {
+		case 1:
+			dragcoeff_input = element->GetInput(FrictionCoefficientEnum); _assert_(dragcoeff_input);
+			break;
+		case 2:
+		case 11:
+		case 14:
+			dragcoeff_input = element->GetInput(FrictionCEnum); _assert_(dragcoeff_input);
+			break;
+		default:
+			_error_("Friction law "<< frictionlaw <<" not supported in the inversion.");
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(4);
+	while(gauss->next()){
+
+		adjointx_input->GetInputValue(&lambda, gauss);
+		adjointy_input->GetInputValue(&mu, gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		if(domaintype!=Domain2DverticalEnum){
+			adjointz_input->GetInputValue(&xi    ,gauss);
+			vz_input->GetInputValue(&vz,gauss);
+		}
+		dragcoeff_input->GetInputValue(&drag, gauss);
+
+		friction->GetAlphaComplement(&dalpha2dk,gauss);
+		element->NormalBase(&normal[0],xyz_list_base);
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dk): */
+		if(domaintype!=Domain2DverticalEnum){
+			for(int i=0;i<numvertices;i++){
+				ge[i]+=(
+							-lambda*(2*drag*dalpha2dk*(vx - vz*normal[0]*normal[2]))
+							-mu    *(2*drag*dalpha2dk*(vy - vz*normal[1]*normal[2]))
+							-xi    *(2*drag*dalpha2dk*(-vx*normal[0]*normal[2]-vy*normal[1]*normal[2]))
+						 )*Jdet*gauss->weight*basis[i];
+				_assert_(!xIsNan<IssmDouble>(ge[i]));
+			}
+		}
+		else{
+			for(int i=0;i<numvertices;i++){
+				ge[i]+=(
+							-lambda*2*drag*dalpha2dk*vx
+							-mu    *2*drag*dalpha2dk*vy
+						 )*Jdet*gauss->weight*basis[i];
+				_assert_(!xIsNan<IssmDouble>(ge[i]));
+			}
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	delete friction;
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJDragL1L2(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*Same as SSA*/
+	return this->GradientJDragSSA(element,gradient,control_interp,control_index);
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJDragHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*return if floating or not on bed (gradient is 0)*/
+	if(element->IsAllFloating()) return;
+	if(!element->IsOnBase()) return;
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble drag,dalpha2dk;
+	IssmDouble vx,vy,lambda,mu;
+	IssmDouble *xyz_list_base= NULL;
+
+	int      domaintype,dim;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Build friction element, needed later: */
+	if(domaintype!=Domain2DverticalEnum) dim=3;
+	else dim=2;
+	Friction* friction=new Friction(element,dim);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* vx_input        = element->GetInput(VxEnum);                   _assert_(vx_input);
+	Input* vy_input        = NULL;
+	Input* adjointx_input  = element->GetInput(AdjointxEnum);             _assert_(adjointx_input);
+	Input* adjointy_input  = NULL;
+	if(domaintype!=Domain2DverticalEnum){
+		vy_input        = element->GetInput(VyEnum);                   _assert_(vy_input);
+		adjointy_input  = element->GetInput(AdjointyEnum);             _assert_(adjointy_input);
+	}
+	/* get the friction law: 1- Budd, 11-Schoof*/
+	int frictionlaw; element->FindParam(&frictionlaw, FrictionLawEnum);
+	Input* dragcoeff_input = NULL;
+	switch(frictionlaw) {
+		case 1:
+			dragcoeff_input = element->GetInput(FrictionCoefficientEnum); _assert_(dragcoeff_input);
+			break;
+		case 2:
+		case 11:
+		case 14:
+			dragcoeff_input = element->GetInput(FrictionCEnum); _assert_(dragcoeff_input);
+			break;
+		default:
+			_error_("Friction law "<< frictionlaw <<" not supported in the inversion.");
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(4);
+	while(gauss->next()){
+
+		adjointx_input->GetInputValue(&lambda, gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		if(domaintype!=Domain2DverticalEnum){
+			adjointy_input->GetInputValue(&mu, gauss);
+			vy_input->GetInputValue(&vy,gauss);
+		}
+		dragcoeff_input->GetInputValue(&drag, gauss);
+
+		friction->GetAlphaComplement(&dalpha2dk,gauss);
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dD): */
+		if(control_interp==P1Enum){
+			for(int i=0;i<numvertices;i++){
+				if(domaintype!=Domain2DverticalEnum) ge[i]+=-2.*drag*dalpha2dk*((lambda*vx+mu*vy))*Jdet*gauss->weight*basis[i];
+				else ge[i]+=-2.*drag*dalpha2dk*(lambda*vx)*Jdet*gauss->weight*basis[i];
+				_assert_(!xIsNan<IssmDouble>(ge[i]));
+			}
+		}
+		else if(control_interp==P0Enum){
+			if(domaintype!=Domain2DverticalEnum) ge[0]+=-2.*drag*dalpha2dk*((lambda*vx+mu*vy))*Jdet*gauss->weight;
+			else ge[0]+=-2.*drag*dalpha2dk*(lambda*vx)*Jdet*gauss->weight;
+			_assert_(!xIsNan<IssmDouble>(ge[0]));
+		}
+		else{
+			_error_("not supported");
+		}
+	}
+	if(control_interp==P1Enum){
+		gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+	}
+	else if(control_interp==P0Enum){
+		gradient->SetValue(vertexpidlist[0],ge[0],ADD_VAL);
+	}
+	else{
+		_error_("not supported");
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	delete friction;
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJDragMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*return if floating (gradient is 0)*/
+	if(element->IsAllFloating()) return;
+
+	/*Intermediaries*/
+	int      domaintype,dim;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			dim          = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble drag,dalpha2dk;
+	IssmDouble vx,vy,lambda,mu;
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Build friction element, needed later: */
+	Friction* friction=new Friction(basalelement,dim);
+
+	/*Retrieve all inputs we will be needing: */
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* vx_input        = basalelement->GetInput(VxBaseEnum);                   _assert_(vx_input);
+	Input* vy_input        = basalelement->GetInput(VyBaseEnum);                   _assert_(vy_input);
+	Input* adjointx_input  = basalelement->GetInput(AdjointxBaseEnum);             _assert_(adjointx_input);
+	Input* adjointy_input  = basalelement->GetInput(AdjointyBaseEnum);             _assert_(adjointy_input);
+
+	/* get the friction law: 1- Budd, 11-Schoof*/
+	int frictionlaw;element->FindParam(&frictionlaw, FrictionLawEnum);
+	Input* dragcoeff_input = NULL;
+	switch(frictionlaw) {
+		case 1:
+			dragcoeff_input = basalelement->GetInput(FrictionCoefficientEnum); _assert_(dragcoeff_input);
+			break;
+		case 2:
+		case 11:
+		case 14:
+			dragcoeff_input = basalelement->GetInput(FrictionCEnum); _assert_(dragcoeff_input);
+			break;
+		default:
+			_error_("Friction law "<< frictionlaw <<" not supported in the inversion.");
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(4);
+	while(gauss->next()){
+
+		adjointx_input->GetInputValue(&lambda, gauss);
+		adjointy_input->GetInputValue(&mu, gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		dragcoeff_input->GetInputValue(&drag, gauss);
+
+		friction->GetAlphaComplement(&dalpha2dk,gauss);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dD): */
+		if(control_interp==P1Enum){
+			for(int i=0;i<numvertices;i++){
+				ge[i]+=-2.*drag*dalpha2dk*((lambda*vx+mu*vy))*Jdet*gauss->weight*basis[i];
+				_assert_(!xIsNan<IssmDouble>(ge[i]));
+			}
+		}
+		else if(control_interp==P0Enum){
+			ge[0]+=-2.*drag*dalpha2dk*((lambda*vx+mu*vy))*Jdet*gauss->weight;
+			_assert_(!xIsNan<IssmDouble>(ge[0]));
+		}
+		else{
+			_error_("not supported");
+		}
+	}
+	if(control_interp==P1Enum){
+		gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+	}
+	else if(control_interp==P0Enum){
+		gradient->SetValue(vertexpidlist[0],ge[0],ADD_VAL);
+	}
+	else{
+		_error_("not supported");
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	delete friction;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJDragSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*return if floating (gradient is 0)*/
+	if(element->IsAllFloating()) return;
+
+	/*Intermediaries*/
+	int      domaintype,dim;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			dim          = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble drag,dalpha2dk;
+	IssmDouble vx,vy,lambda,mu;
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Build friction element, needed later: */
+	Friction* friction=new Friction(basalelement,dim);
+
+	/*Retrieve all inputs we will be needing: */
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* vx_input        = basalelement->GetInput(VxEnum);                   _assert_(vx_input);
+	Input* vy_input        = basalelement->GetInput(VyEnum);                   _assert_(vy_input);
+	Input* adjointx_input  = basalelement->GetInput(AdjointxEnum);             _assert_(adjointx_input);
+	Input* adjointy_input  = basalelement->GetInput(AdjointyEnum);             _assert_(adjointy_input);
+
+	/* get the friction law: 1- Budd, 11-Schoof*/
+	int frictionlaw;element->FindParam(&frictionlaw, FrictionLawEnum);
+	Input* dragcoeff_input = NULL;
+	switch(frictionlaw) {
+		case 1:
+			dragcoeff_input = basalelement->GetInput(FrictionCoefficientEnum); _assert_(dragcoeff_input);
+			break;
+		case 2:
+		case 11:
+		case 13:
+		case 14:
+			dragcoeff_input = basalelement->GetInput(FrictionCEnum); _assert_(dragcoeff_input);
+			break;
+		default:
+			_error_("Friction law "<< frictionlaw <<" not supported in the inversion.");
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(4);
+	while(gauss->next()){
+
+		adjointx_input->GetInputValue(&lambda, gauss);
+		adjointy_input->GetInputValue(&mu, gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		dragcoeff_input->GetInputValue(&drag, gauss);
+
+		friction->GetAlphaComplement(&dalpha2dk,gauss);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dD): */
+		if(control_interp==P1Enum){
+			for(int i=0;i<numvertices;i++){
+				ge[i]+=-2.*drag*dalpha2dk*((lambda*vx+mu*vy))*Jdet*gauss->weight*basis[i];
+				_assert_(!xIsNan<IssmDouble>(ge[i]));
+			}
+		}
+		else if(control_interp==P0Enum){
+			ge[0]+=-2.*drag*dalpha2dk*((lambda*vx+mu*vy))*Jdet*gauss->weight;
+			_assert_(!xIsNan<IssmDouble>(ge[0]));
+		}
+		else{
+			_error_("not supported");
+		}
+	}
+	if(control_interp==P1Enum){
+		gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+	}
+	else if(control_interp==P0Enum){
+		gradient->SetValue(vertexpidlist[0],ge[0],ADD_VAL);
+	}
+	else{
+		_error_("not supported");
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	delete friction;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJDragHydroFS(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*return if floating or not on bed (gradient is 0)*/
+	if(element->IsAllFloating()) return;
+	if(!element->IsOnBase()) return;
+	if(control_interp!=P1Enum) _error_("not implemented yet...");
+
+	/*Intermediaries*/
+	int        domaintype,dim;
+	IssmDouble Jdet,weight;
+	IssmDouble drag,dalpha2dk,normal[3];
+	IssmDouble vx,vy,vz,lambda,mu,xi;
+	IssmDouble *xyz_list_base= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/* get domaintype */
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Build friction element, needed later: */
+	if(domaintype!=Domain2DverticalEnum) dim=3;
+	else dim=2;
+	Friction* friction=new Friction(element,dim);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* vx_input        = element->GetInput(VxEnum);                   _assert_(vx_input);
+	Input* vy_input        = element->GetInput(VyEnum);                   _assert_(vy_input);
+	Input* adjointx_input  = element->GetInput(AdjointxEnum);             _assert_(adjointx_input);
+	Input* adjointy_input  = element->GetInput(AdjointyEnum);             _assert_(adjointy_input);
+	Input* vz_input        = NULL;
+	Input* adjointz_input  = NULL;
+	if(domaintype!=Domain2DverticalEnum){
+		vz_input        = element->GetInput(VzEnum);                   _assert_(vy_input);
+		adjointz_input  = element->GetInput(AdjointzEnum);             _assert_(adjointz_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(4);
+	while(gauss->next()){
+
+		adjointx_input->GetInputValue(&lambda, gauss);
+		adjointy_input->GetInputValue(&mu, gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		if(domaintype!=Domain2DverticalEnum){
+			adjointz_input->GetInputValue(&xi    ,gauss);
+			vz_input->GetInputValue(&vz,gauss);
+		}
+
+		friction->GetAlphaComplement(&dalpha2dk,gauss);
+		element->NormalBase(&normal[0],xyz_list_base);
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dk): */
+		if(domaintype!=Domain2DverticalEnum){
+			for(int i=0;i<numvertices;i++){
+				ge[i]+=(
+							-lambda*(dalpha2dk*(vx - vz*normal[0]*normal[2]))
+							-mu    *(dalpha2dk*(vy - vz*normal[1]*normal[2]))
+							-xi    *(dalpha2dk*(-vx*normal[0]*normal[2]-vy*normal[1]*normal[2]))
+						 )*Jdet*gauss->weight*basis[i];
+				_assert_(!xIsNan<IssmDouble>(ge[i]));
+			}
+		}
+		else{
+			for(int i=0;i<numvertices;i++){
+				ge[i]+=(
+							-lambda*dalpha2dk*vx
+							-mu    *dalpha2dk*vy
+						 )*Jdet*gauss->weight*basis[i];
+				_assert_(!xIsNan<IssmDouble>(ge[i]));
+			}
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	delete friction;
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJDragHydroL1L2(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*Same as SSA*/
+	return this->GradientJDragSSA(element,gradient,control_interp,control_index);
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJDragHydroHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*return if floating or not on bed (gradient is 0)*/
+	if(element->IsAllFloating()) return;
+	if(!element->IsOnBase()) return;
+	if(control_interp!=P1Enum) _error_("not implemented yet...");
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble drag,dalpha2dk;
+	IssmDouble vx,vy,lambda,mu;
+	IssmDouble *xyz_list_base= NULL;
+
+	int      domaintype,dim;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Build friction element, needed later: */
+	if(domaintype!=Domain2DverticalEnum) dim=3;
+	else dim=2;
+	Friction* friction=new Friction(element,dim);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* vx_input        = element->GetInput(VxEnum);                   _assert_(vx_input);
+	Input* vy_input        = NULL;
+	Input* adjointx_input  = element->GetInput(AdjointxEnum);             _assert_(adjointx_input);
+	Input* adjointy_input  = NULL;
+	if(domaintype!=Domain2DverticalEnum){
+		vy_input        = element->GetInput(VyEnum);                   _assert_(vy_input);
+		adjointy_input  = element->GetInput(AdjointyEnum);             _assert_(adjointy_input);
+	}
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(4);
+	while(gauss->next()){
+
+		adjointx_input->GetInputValue(&lambda, gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		if(domaintype!=Domain2DverticalEnum){
+			adjointy_input->GetInputValue(&mu, gauss);
+			vy_input->GetInputValue(&vy,gauss);
+		}
+
+		friction->GetAlphaComplement(&dalpha2dk,gauss);
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+
+		/*Build gradient vector (actually -dJ/dD): */
+		for(int i=0;i<numvertices;i++){
+			if(domaintype!=Domain2DverticalEnum) ge[i]+=-dalpha2dk*((lambda*vx+mu*vy))*Jdet*gauss->weight*basis[i];
+			else ge[i]+=-dalpha2dk*(lambda*vx)*Jdet*gauss->weight*basis[i];
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	delete friction;
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJDragHydroSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*return if floating (gradient is 0)*/
+	if(element->IsAllFloating()) return;
+	if(control_interp!=P1Enum) _error_("not implemented yet...");
+
+	/*Intermediaries*/
+	int      domaintype,dim;
+
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			dim          = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble dalpha2dk;
+	IssmDouble vx,vy,lambda,mu;
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Build friction element, needed later: */
+	Friction* friction=new Friction(basalelement,dim);
+
+	/*Retrieve all inputs we will be needing: */
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* vx_input        = basalelement->GetInput(VxEnum);          _assert_(vx_input);
+	Input* vy_input        = basalelement->GetInput(VyEnum);          _assert_(vy_input);
+	Input* adjointx_input  = basalelement->GetInput(AdjointxEnum);    _assert_(adjointx_input);
+	Input* adjointy_input  = basalelement->GetInput(AdjointyEnum);    _assert_(adjointy_input);
+
+	IssmDouble  q_exp;
+	IssmDouble  C_param;
+	IssmDouble  As;
+	IssmDouble  Neff;
+	IssmDouble  n;
+	IssmDouble  alpha;
+	IssmDouble  Chi,Gamma;
+	IssmDouble  vz,vmag;
+	IssmDouble  Uder;
+
+	/*Recover parameters: */
+	Input* qinput = basalelement->GetInput(FrictionQEnum);
+	Input* cinput = basalelement->GetInput(FrictionCEnum);
+	Input* Asinput = basalelement->GetInput(FrictionAsEnum);
+	Input* nInput =basalelement->GetInput(MaterialsRheologyNEnum);
+	Input* Ninput = basalelement->GetInput(FrictionEffectivePressureEnum);	
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(4);
+	while(gauss->next()){
+
+		adjointx_input->GetInputValue(&lambda, gauss);
+		adjointy_input->GetInputValue(&mu, gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+
+		friction->GetAlphaComplement(&dalpha2dk,gauss);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsP1(basis,gauss);
+
+		/*Dealing with dalpha/du*/
+		qinput->GetInputValue(&q_exp,gauss);
+		cinput->GetInputValue(&C_param,gauss);
+		Asinput->GetInputValue(&As,gauss);
+		Ninput->GetInputValue(&Neff,gauss);
+		nInput->GetInputValue(&n,gauss);
+
+		if (q_exp==1){
+			alpha=1;
+		}
+		else{
+			alpha=(pow(q_exp-1,q_exp-1))/pow(q_exp,q_exp);
+		}
+
+		vmag  = sqrt(vx*vx + vy*vy);
+		Chi   = vmag/(pow(C_param,n)*pow(Neff,n)*As);
+		Gamma = (Chi/(1.+alpha*pow(Chi,q_exp)));
+
+		Uder =Neff*C_param/(vmag*vmag*n) *
+			(Gamma-alpha*q_exp*pow(Chi,q_exp-1.)*Gamma*Gamma* pow(Gamma,(1.-n)/n) -
+			 n* pow(Gamma,1./n));
+
+		/*Build gradient vector (actually -dJ/dD): */
+		for(int i=0;i<numvertices;i++){
+			ge[i]+=-dalpha2dk*((lambda*vx+mu*vy))*Jdet*gauss->weight*basis[i];
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	delete friction;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+void           AdjointHorizAnalysis::GradientJDSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype,dim;
+	Element* basalelement;
+	if(control_interp!=P1Enum) _error_("not implemented yet...");
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			dim          = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			dim          = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement(true);
+			dim          = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble thickness,dmudD;
+	IssmDouble dvx[3],dvy[3],dadjx[3],dadjy[3]; 
+	IssmDouble *xyz_list= NULL;
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->GradientIndexing(&vertexpidlist[0],control_index);
+	Input* thickness_input = basalelement->GetInput(ThicknessEnum);             _assert_(thickness_input);
+	Input* vx_input        = basalelement->GetInput(VxEnum);                    _assert_(vx_input);
+	Input* vy_input        = basalelement->GetInput(VyEnum);                    _assert_(vy_input);
+	Input* adjointx_input  = basalelement->GetInput(AdjointxEnum);              _assert_(adjointx_input);
+	Input* adjointy_input  = basalelement->GetInput(AdjointyEnum);              _assert_(adjointy_input);
+	Input* rheologyb_input = basalelement->GetInput(MaterialsRheologyBbarEnum); _assert_(rheologyb_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(4);
+	while(gauss->next()){
+
+		thickness_input->GetInputValue(&thickness,gauss);
+		vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+		adjointx_input->GetInputDerivativeValue(&dadjx[0],xyz_list,gauss);
+		adjointy_input->GetInputDerivativeValue(&dadjy[0],xyz_list,gauss);
+
+		basalelement->dViscositydDSSA(&dmudD,dim,xyz_list,gauss,vx_input,vy_input);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsP1(basis,gauss);
+
+		for(int i=0;i<numvertices;i++){
+			ge[i]+=-dmudD*thickness*(
+						(2*dvx[0]+dvy[1])*2*dadjx[0]+(dvx[1]+dvy[0])*(dadjx[1]+dadjy[0])+(2*dvy[1]+dvx[0])*2*dadjy[1]
+						)*Jdet*gauss->weight*basis[i];
+			_assert_(!xIsNan<IssmDouble>(ge[i]));
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+void           AdjointHorizAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation==FSApproximationEnum || approximation==NoneApproximationEnum){
+		InputUpdateFromSolutionFS(solution,element);
+	}
+	else if (approximation==MOLHOApproximationEnum) {
+		InputUpdateFromSolutionMOLHO(solution, element);
+	}
+	else{
+		InputUpdateFromSolutionHoriz(solution,element);
+	}
+}/*}}}*/
+void           AdjointHorizAnalysis::InputUpdateFromSolutionFS(IssmDouble* solution,Element* element){/*{{{*/
+	int          i,fe_FS;
+	int*         vdoflist=NULL;
+	int*         pdoflist=NULL;
+	IssmDouble   FSreconditioning;
+
+	int      domaintype,dim;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			dim          = 3;
+			break;
+		case Domain2DverticalEnum:
+			dim          = 2;
+			break;
+		case Domain3DEnum:
+			dim          = 3;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int vnumdof   = vnumnodes*dim;
+	int pnumdof   = pnumnodes*1;
+
+	/*Initialize values*/
+	IssmDouble* values  = xNew<IssmDouble>(vnumdof+pnumdof);
+	IssmDouble* lambdax = xNew<IssmDouble>(vnumnodes);
+	IssmDouble* lambday = xNew<IssmDouble>(vnumnodes);
+	IssmDouble* lambdaz = xNew<IssmDouble>(vnumnodes);
+	IssmDouble* lambdap = xNew<IssmDouble>(pnumnodes);
+
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Get dof list: */
+	element->GetDofListLocalVelocity(&vdoflist,GsetEnum);
+	element->GetDofListLocalPressure(&pdoflist,GsetEnum);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<vnumdof;i++) values[i]        =solution[vdoflist[i]];
+	for(i=0;i<pnumdof;i++) values[vnumdof+i]=solution[pdoflist[i]];
+
+	/*Transform solution in Cartesian Space*/
+	element->TransformSolutionCoord(values,cs_list);
+
+	/*fill in all arrays: */
+	for(i=0;i<vnumnodes;i++){
+		lambdax[i] = values[i*dim+0];
+		if(xIsNan<IssmDouble>(lambdax[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(lambdax[i])) _error_("Inf found in solution vector");
+		lambday[i] = values[i*dim+1];
+		if(xIsNan<IssmDouble>(lambday[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(lambday[i])) _error_("Inf found in solution vector");
+		if(dim==3){
+			lambdaz[i] = values[i*dim+2];
+			if(xIsNan<IssmDouble>(lambdaz[i])) _error_("NaN found in solution vector");
+			if(xIsInf<IssmDouble>(lambdaz[i])) _error_("Inf found in solution vector");
+		}
+	}
+	for(i=0;i<pnumnodes;i++){
+		lambdap[i] = values[vnumdof+i];
+		if(xIsNan<IssmDouble>(lambdap[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(lambdap[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Recondition pressure and compute vel: */
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	for(i=0;i<pnumnodes;i++) lambdap[i]=lambdap[i]*FSreconditioning;
+
+	/*Add vx and vy as inputs to the tria element: */
+	element->AddInput(AdjointxEnum,lambdax,element->VelocityInterpolation());
+	element->AddInput(AdjointyEnum,lambday,element->VelocityInterpolation());
+	if(domaintype!=Domain2DverticalEnum) element->AddInput(AdjointzEnum,lambdaz,element->VelocityInterpolation());
+
+	element->FindParam(&fe_FS,FlowequationFeFSEnum);
+	if(fe_FS!=LATaylorHoodEnum && fe_FS!=LACrouzeixRaviartEnum)	
+	 element->AddInput(AdjointpEnum,lambdap,element->PressureInterpolation());	
+
+	/*Free resources:*/
+	xDelete<int>(vdoflist);
+	xDelete<int>(pdoflist);
+	xDelete<int>(cs_list);
+	xDelete<IssmDouble>(lambdap);
+	xDelete<IssmDouble>(lambdaz);
+	xDelete<IssmDouble>(lambday);
+	xDelete<IssmDouble>(lambdax);
+	xDelete<IssmDouble>(values);
+}/*}}}*/
+void           AdjointHorizAnalysis::InputUpdateFromSolutionHoriz(IssmDouble* solution,Element* element){/*{{{*/
+	int  i;
+	int* doflist=NULL;
+
+	int    domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof;
+	if(domaintype!=Domain2DverticalEnum)  numdof   = numnodes*2;
+	else			                          numdof   = numnodes*1;
+	/*Fetch dof list and allocate solution vectors*/
+	element->GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values  = xNew<IssmDouble>(numdof);
+	IssmDouble* lambdax = xNew<IssmDouble>(numnodes);
+	IssmDouble* lambday = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
+
+	/*Transform solution in Cartesian Space*/
+	if(domaintype!=Domain2DverticalEnum)	element->TransformSolutionCoord(&values[0],XYEnum);
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+	for(i=0;i<numnodes;i++){
+		if(domaintype!=Domain2DverticalEnum){
+			lambdax[i]=values[i*2+0];
+			lambday[i]=values[i*2+1];
+		}
+		else {lambdax[i]=values[i];lambday[i]=0;}
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(lambdax[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(lambdax[i])) _error_("Inf found in solution vector");
+		if(domaintype!=Domain2DverticalEnum && xIsNan<IssmDouble>(lambday[i])) _error_("NaN found in solution vector");
+		if(domaintype!=Domain2DverticalEnum && xIsInf<IssmDouble>(lambday[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Add vx and vy as inputs to the tria element: */
+	element->AddInput(AdjointxEnum,lambdax,element->GetElementType());
+	element->AddInput(AdjointyEnum,lambday,element->GetElementType());
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(lambdax);
+	xDelete<IssmDouble>(lambday);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           AdjointHorizAnalysis::InputUpdateFromSolutionMOLHO(IssmDouble* solution,Element* element){/*{{{*/
+	int  i;
+	int* doflist=NULL;
+
+	int    domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	if (domaintype!=Domain2DhorizontalEnum) _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof = numnodes * 4;
+
+	/*Fetch dof list and allocate solution vectors*/
+	element->GetDofListLocal(&doflist,MOLHOApproximationEnum,GsetEnum);
+	IssmDouble* values    = xNew<IssmDouble>(numdof);
+	IssmDouble* lambdax   = xNew<IssmDouble>(numnodes);
+	IssmDouble* lambday   = xNew<IssmDouble>(numnodes);
+	IssmDouble* lambdabx  = xNew<IssmDouble>(numnodes);
+	IssmDouble* lambdaby  = xNew<IssmDouble>(numnodes);
+	IssmDouble* lambdashx = xNew<IssmDouble>(numnodes);
+	IssmDouble* lambdashy = xNew<IssmDouble>(numnodes);
+	IssmDouble* n         = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
+
+	/*Transform solution in Cartesian Space*/
+	if(domaintype!=Domain2DverticalEnum)	element->TransformSolutionCoord(&values[0],XYEnum);
+
+	element->GetInputListOnNodes(&n[0],MaterialsRheologyNEnum,0.);
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+	for(i=0;i<numnodes;i++){
+		lambdabx[i] =values[i*4+0];
+		lambdashx[i]=values[i*4+1];
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(lambdabx[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(lambdabx[i])) _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(lambdashx[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(lambdashx[i])) _error_("Inf found in solution vector");
+		/* adjoint for the surface velocity */
+		lambdax[i] = lambdabx[i] + lambdashx[i]*(n[i]+1)/(n[i]+2);
+
+		lambdaby[i] =values[i*4+2];
+		lambdashy[i]=values[i*4+3];
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(lambdaby[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(lambdaby[i])) _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(lambdashy[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(lambdashy[i])) _error_("Inf found in solution vector");
+		/* adjoint for the surface velocity */
+		lambday[i] = lambdaby[i] + lambdashy[i]*(n[i]+1)/(n[i]+2);
+	}
+
+	/*Add vx and vy as inputs to the tria element: */
+	element->AddInput(AdjointxBaseEnum,lambdabx,element->GetElementType());
+	element->AddInput(AdjointyBaseEnum,lambdaby,element->GetElementType());
+	element->AddInput(AdjointxShearEnum,lambdashx,element->GetElementType());
+	element->AddInput(AdjointyShearEnum,lambdashy,element->GetElementType());
+
+	element->AddInput(AdjointxEnum,lambdax,element->GetElementType());
+	element->AddInput(AdjointyEnum,lambday,element->GetElementType());
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(lambdax);
+	xDelete<IssmDouble>(lambday);
+	xDelete<IssmDouble>(lambdabx);
+	xDelete<IssmDouble>(lambdaby);
+	xDelete<IssmDouble>(lambdashx);
+	xDelete<IssmDouble>(lambdashy);
+   xDelete<IssmDouble>(n);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           AdjointHorizAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AdjointHorizAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AdjointHorizAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AdjointHorizAnalysis.h	(revision 27955)
@@ -0,0 +1,71 @@
+/*! \file AdjointHorizAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _AdjointHorizAnalysis_
+#define _AdjointHorizAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class AdjointHorizAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementMatrix* CreateKMatrixFS(Element* element);
+		ElementMatrix* CreateKMatrixHO(Element* element);
+		ElementMatrix* CreateKMatrixMOLHO(Element* element);
+		ElementMatrix* CreateKMatrixMOLHOVerticalIntergrated(Element* element);
+		ElementMatrix* CreateKMatrixL1L2(Element* element);
+		ElementMatrix* CreateKMatrixSSA(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		ElementVector* CreatePVectorFS(Element* element);
+		ElementVector* CreatePVectorL1L2(Element* element);
+		ElementVector* CreatePVectorHO(Element* element);
+		ElementVector* CreatePVectorMOLHO(Element* element);
+		ElementVector* CreatePVectorSSA(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           GradientJBbarFS(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJBbarGradient(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJBinitial(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJBbarL1L2(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJBbarHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJBbarMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJBbarSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJBFS(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJBGradient(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJBHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJBMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJBSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJDragFS(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJDragGradient(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJDragL1L2(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJDragHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJDragMOLHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJDragSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJDragHydroFS(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJDragHydroL1L2(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJDragHydroHO(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJDragHydroSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           GradientJDSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           InputUpdateFromSolutionFS(IssmDouble* solution,Element* element);
+		void           InputUpdateFromSolutionHoriz(IssmDouble* solution,Element* element);
+		void           InputUpdateFromSolutionMOLHO(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AgeAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AgeAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AgeAnalysis.cpp	(revision 27955)
@@ -0,0 +1,373 @@
+#include "./AgeAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void AgeAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	IoModelToConstraintsx(constraints,iomodel,"md.age.spcage",AgeAnalysisEnum,P1Enum);
+
+}/*}}}*/
+void AgeAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	if(iomodel->domaintype==Domain2DhorizontalEnum) _error_("2d meshes not supported yet");
+
+}/*}}}*/
+void AgeAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	int finiteelement = P1Enum;
+
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,AgeAnalysisEnum,finiteelement);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  AgeAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void AgeAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Now, is the model 3d? otherwise, do nothing: */
+	if(iomodel->domaintype==Domain2DhorizontalEnum)return;
+
+	/*Update elements: */
+	int finiteelement = P1Enum;
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+
+	bool dakota_analysis, ismovingfront;
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+	iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.age",AgeEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vz",VzEnum);
+	InputUpdateFromConstantx(inputs,elements,0.,VxMeshEnum);
+	InputUpdateFromConstantx(inputs,elements,0.,VyMeshEnum);
+	InputUpdateFromConstantx(inputs,elements,0.,VzMeshEnum);
+}/*}}}*/
+void AgeAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int     numoutputs;
+	char**  requestedoutputs = NULL;
+
+	parameters->AddObject(iomodel->CopyConstantObject("md.age.stabilization",AgeStabilizationEnum));
+
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.age.requested_outputs");
+	parameters->AddObject(new IntParam(AgeNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(AgeRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.age.requested_outputs");
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           AgeAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           AgeAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* AgeAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* AgeAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* AgeAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int         stabilization;
+	IssmDouble  Jdet,dt,u,v,w,um,vm,wm,vel;
+	IssmDouble  h,hx,hy,hz,vx,vy,vz,D_scalar;
+	IssmDouble  tau_parameter,diameter;
+	IssmDouble  tau_parameter_anisotropic[2],tau_parameter_hor,tau_parameter_ver;	
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(3*numnodes);
+	IssmDouble     K[3][3];
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&stabilization,AgeStabilizationEnum);
+	IssmDouble  rho_water           = element->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble  rho_ice             = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  gravity             = element->FindParam(ConstantsGEnum);
+	IssmDouble  heatcapacity        = element->FindParam(MaterialsHeatcapacityEnum);
+	IssmDouble  thermalconductivity = 1.;
+	IssmDouble  kappa = thermalconductivity/(rho_ice*heatcapacity);
+	Input* vx_input  = element->GetInput(VxEnum);     _assert_(vx_input);
+	Input* vy_input  = element->GetInput(VyEnum);     _assert_(vy_input);
+	Input* vz_input  = element->GetInput(VzEnum);     _assert_(vz_input);
+	Input* vxm_input = element->GetInput(VxMeshEnum); _assert_(vxm_input);
+	Input* vym_input = element->GetInput(VyMeshEnum); _assert_(vym_input);
+	Input* vzm_input = element->GetInput(VzMeshEnum); _assert_(vzm_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(4);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		D_scalar=gauss->weight*Jdet;
+		if(dt!=0.) D_scalar=D_scalar*dt;
+
+		/*Conduction: */
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += D_scalar*kappa*(
+							dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i] + dbasis[2*numnodes+j]*dbasis[2*numnodes+i]
+							);
+			}
+		}
+
+		/*Advection: */
+		vx_input->GetInputValue(&u,gauss); vxm_input->GetInputValue(&um,gauss); vx=u-um;
+		vy_input->GetInputValue(&v,gauss); vym_input->GetInputValue(&vm,gauss); vy=v-vm;
+		vz_input->GetInputValue(&w,gauss); vzm_input->GetInputValue(&wm,gauss); vz=w-wm;
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += D_scalar*(
+							vx*dbasis[0*numnodes+j]*basis[i] + vy*dbasis[1*numnodes+j]*basis[i] +vz*dbasis[2*numnodes+j]*basis[i]
+							);
+			}
+		}
+
+		/*Transient: */
+		if(dt!=0.){
+			D_scalar=gauss->weight*Jdet;
+			for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D_scalar*basis[j]*basis[i];
+			D_scalar=D_scalar*dt;
+		}
+
+		/*Artifficial diffusivity*/
+		if(stabilization==1){
+			element->ElementSizes(&hx,&hy,&hz);
+			vel=sqrt(vx*vx + vy*vy + vz*vz)+1.e-14;
+			h=sqrt( pow(hx*vx/vel,2) + pow(hy*vy/vel,2) + pow(hz*vz/vel,2));
+			K[0][0]=h/(2.*vel)*fabs(vx*vx);  K[0][1]=h/(2.*vel)*fabs(vx*vy); K[0][2]=h/(2.*vel)*fabs(vx*vz);
+			K[1][0]=h/(2.*vel)*fabs(vy*vx);  K[1][1]=h/(2.*vel)*fabs(vy*vy); K[1][2]=h/(2.*vel)*fabs(vy*vz);
+			K[2][0]=h/(2.*vel)*fabs(vz*vx);  K[2][1]=h/(2.*vel)*fabs(vz*vy); K[2][2]=h/(2.*vel)*fabs(vz*vz);
+			for(int i=0;i<3;i++) for(int j=0;j<3;j++) K[i][j] = D_scalar*K[i][j];
+
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += (
+								dbasis[0*numnodes+i] *(K[0][0]*dbasis[0*numnodes+j] + K[0][1]*dbasis[1*numnodes+j]+ K[0][2]*dbasis[2*numnodes+j]) +
+								dbasis[1*numnodes+i] *(K[1][0]*dbasis[0*numnodes+j] + K[1][1]*dbasis[1*numnodes+j]+ K[1][2]*dbasis[2*numnodes+j]) +
+								dbasis[2*numnodes+i] *(K[2][0]*dbasis[0*numnodes+j] + K[2][1]*dbasis[1*numnodes+j]+ K[2][2]*dbasis[2*numnodes+j]) 
+								);
+				}
+			}
+		}
+		else if(stabilization==2){
+			diameter=element->MinEdgeLength(xyz_list);
+			tau_parameter=element->StabilizationParameter(u-um,v-vm,w-wm,diameter,kappa);
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j]+=tau_parameter*D_scalar*
+					  ((u-um)*dbasis[0*numnodes+i]+(v-vm)*dbasis[1*numnodes+i]+(w-wm)*dbasis[2*numnodes+i])*
+					  ((u-um)*dbasis[0*numnodes+j]+(v-vm)*dbasis[1*numnodes+j]+(w-wm)*dbasis[2*numnodes+j]);
+				}
+			}
+			if(dt!=0.){
+				D_scalar=gauss->weight*Jdet;
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=tau_parameter*D_scalar*basis[j]*((u-um)*dbasis[0*numnodes+i]+(v-vm)*dbasis[1*numnodes+i]+(w-wm)*dbasis[2*numnodes+i]);
+					}
+				}
+			}
+		}
+		/*anisotropic SUPG*/
+		else if(stabilization==3){
+			element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+			element->ElementSizes(&hx,&hy,&hz);
+			element->StabilizationParameterAnisotropic(&tau_parameter_anisotropic[0],u-um,v-vm,w-wm,hx,hy,hz,kappa);
+			tau_parameter_hor=tau_parameter_anisotropic[0];
+			tau_parameter_ver=tau_parameter_anisotropic[1];
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j]+=D_scalar*
+						(sqrt(tau_parameter_hor)*(u-um)*dbasis[0*numnodes+i]+sqrt(tau_parameter_hor)*(v-vm)*dbasis[1*numnodes+i]+sqrt(tau_parameter_ver)*(w-wm)*dbasis[2*numnodes+i])*
+						(sqrt(tau_parameter_hor)*(u-um)*dbasis[0*numnodes+j]+sqrt(tau_parameter_hor)*(v-vm)*dbasis[1*numnodes+j]+sqrt(tau_parameter_ver)*(w-wm)*dbasis[2*numnodes+j]);
+				}
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* AgeAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	_error_("STOP");
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int         stabilization;
+	IssmDouble  Jdet,dt;
+	IssmDouble  temperature;
+	IssmDouble  tau_parameter,diameter,hx,hy,hz;
+	IssmDouble  tau_parameter_anisotropic[2],tau_parameter_hor,tau_parameter_ver;
+	IssmDouble  u,v,w;
+	IssmDouble  scalar_def,scalar_transient;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe     = element->NewElementVector();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(3*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&stabilization,AgeStabilizationEnum);
+	Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input=element->GetInput(VzEnum); _assert_(vz_input);
+	Input* temperature_input = NULL;
+	if(reCast<bool,IssmDouble>(dt)){temperature_input = element->GetInput(TemperatureEnum); _assert_(temperature_input);}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(4);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		scalar_def=1.*Jdet*gauss->weight;
+		if(reCast<bool,IssmDouble>(dt)) scalar_def=scalar_def*dt;
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=scalar_def*basis[i];
+
+		/* Build transient now */
+		if(reCast<bool,IssmDouble>(dt)){
+			temperature_input->GetInputValue(&temperature, gauss);
+			scalar_transient=temperature*Jdet*gauss->weight;
+			for(int i=0;i<numnodes;i++) pe->values[i]+=scalar_transient*basis[i];
+		}
+
+		if(stabilization==2){
+			element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+			diameter=element->MinEdgeLength(xyz_list);
+			vx_input->GetInputValue(&u,gauss);
+			vy_input->GetInputValue(&v,gauss);
+			vz_input->GetInputValue(&w,gauss);
+
+			tau_parameter=element->StabilizationParameter(u,v,w,diameter,1.e-15); //assume very small conductivity to get tau
+
+			for(int i=0;i<numnodes;i++) pe->values[i]+=tau_parameter*scalar_def*(u*dbasis[0*numnodes+i]+v*dbasis[1*numnodes+i]+w*dbasis[2*numnodes+i]);
+			if(reCast<bool,IssmDouble>(dt)){
+				for(int i=0;i<numnodes;i++) pe->values[i]+=tau_parameter*scalar_transient*(u*dbasis[0*numnodes+i]+v*dbasis[1*numnodes+i]+w*dbasis[2*numnodes+i]);
+			}
+		}
+		/* anisotropic SUPG */
+		else if(stabilization==3){
+			element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+			element->ElementSizes(&hx,&hy,&hz);
+			vx_input->GetInputValue(&u,gauss);
+			vy_input->GetInputValue(&v,gauss);
+			vz_input->GetInputValue(&w,gauss);
+			element->StabilizationParameterAnisotropic(&tau_parameter_anisotropic[0],u,v,w,hx,hy,hz,1.e-15); //assume very small conductivity to get tau
+			tau_parameter_hor=tau_parameter_anisotropic[0];
+			tau_parameter_ver=tau_parameter_anisotropic[1];
+
+			for(int i=0;i<numnodes;i++) pe->values[i]+=scalar_def*(tau_parameter_hor*u*dbasis[0*numnodes+i]+tau_parameter_hor*v*dbasis[1*numnodes+i]+tau_parameter_ver*w*dbasis[2*numnodes+i]);
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           AgeAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,AgeEnum);
+}/*}}}*/
+void           AgeAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           AgeAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	element->InputUpdateFromSolutionOneDof(solution,AgeEnum);
+
+}/*}}}*/
+void           AgeAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	SetActiveNodesLSMx(femmodel);
+	_error_("Should also automatically constrain surface/basal nodes where we have inflow");
+
+	/*Constrain all nodes that are grounded and unconstrain the ones that float*/
+	for(Object* & object : femmodel->elements->objects){
+		Element    *element  = xDynamicCast<Element*>(object);
+
+		if(element->IsOnSurface()){
+			element = element->SpawnTopElement();
+			int         numnodes  = element->GetNumberOfNodes();
+			IssmDouble *mask      = xNew<IssmDouble>(numnodes);
+			IssmDouble *bed       = xNew<IssmDouble>(numnodes);
+			IssmDouble *ls_active = xNew<IssmDouble>(numnodes);
+
+			element->GetInputListOnNodes(&mask[0],MaskOceanLevelsetEnum);
+			element->GetInputListOnNodes(&bed[0],BaseEnum);
+			element->GetInputListOnNodes(&ls_active[0],IceMaskNodeActivationEnum);
+
+			for(int in=0;in<numnodes;in++){
+				Node* node=element->GetNode(in);
+				if(mask[in]<0. && ls_active[in]==1.){
+					node->Activate();
+				}
+				else{
+					node->Deactivate();
+					node->ApplyConstraint(0,bed[in]);
+				}
+			}
+			xDelete<IssmDouble>(mask);
+			xDelete<IssmDouble>(bed);
+			xDelete<IssmDouble>(ls_active);
+		}
+		else if(element->IsOnBase()){
+			element = element->SpawnBasalElement();
+			_error_("not supported");
+		}
+	}
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AgeAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AgeAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/AgeAnalysis.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file AgeAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _AGEANALYSIS_
+#define _AGEANALYSIS_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class AgeAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/Analysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/Analysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/Analysis.h	(revision 27955)
@@ -0,0 +1,56 @@
+/*!\file:  Analysis.h
+ * \brief abstract class for Analysis objects
+ */ 
+
+#ifndef _ANALYSIS_H_
+#define _ANALYSIS_H_
+
+#include "../toolkits/objects/toolkitobjects.h"
+
+// Looks like AD runs without AMPI are missing commmpi.h
+// Conditionally including the header
+
+#if !defined(_HAVE_MPI_) && !defined(_HAVE_PETSC_MPI_)
+#include "../toolkits/mpi/commops/commops.h"
+#endif
+
+class Parameters;
+class Inputs;
+class IoModel;
+class Elements;
+class Nodes;
+class Constraints;
+class Loads;
+class Element;
+class ElementVector;
+class ElementMatrix;
+class Gauss;
+class FemModel;
+
+class Analysis{
+
+	public: 
+		/*Constructor/Destructor*/
+		virtual      ~Analysis(){};
+
+		/*Model processing*/
+		virtual void CreateConstraints(Constraints* constraints,IoModel* iomodel)=0;
+		virtual void CreateLoads(Loads* loads, IoModel* iomodel)=0;
+		virtual void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false)=0;
+		virtual int  DofsPerNode(int** doflist,int domaintype,int approximation)=0;
+		virtual void UpdateElements(Elements* elements,Inputs* inputs, IoModel* iomodel,int analysis_counter,int analysis_type)=0;
+		virtual void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum)=0;
+
+		/*Finite element Analysis*/
+		virtual void           Core(FemModel* femmodel)=0;
+		virtual void           PreCore(FemModel* femmodel)=0;
+		virtual ElementVector* CreateDVector(Element* element)=0;
+		virtual ElementMatrix* CreateJacobianMatrix(Element* element)=0;
+		virtual ElementMatrix* CreateKMatrix(Element* element)=0;
+		virtual ElementVector* CreatePVector(Element* element)=0;
+		virtual void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element)=0;
+		virtual void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_interp,int control_index)=0;
+		virtual void           InputUpdateFromSolution(IssmDouble* solution,Element* element)=0;
+		virtual void           UpdateConstraints(FemModel* femmodel)=0;
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/Balancethickness2Analysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/Balancethickness2Analysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/Balancethickness2Analysis.cpp	(revision 27955)
@@ -0,0 +1,188 @@
+#include "./Balancethickness2Analysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void Balancethickness2Analysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	int finiteelement = P1Enum;
+	IoModelToConstraintsx(constraints,iomodel,"md.balancethickness.spcthickness",Balancethickness2AnalysisEnum,finiteelement);
+
+}/*}}}*/
+void Balancethickness2Analysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+}/*}}}*/
+void Balancethickness2Analysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	int finiteelement = P1Enum;
+	::CreateNodes(nodes,iomodel,Balancethickness2AnalysisEnum,finiteelement);
+}/*}}}*/
+int  Balancethickness2Analysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void Balancethickness2Analysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Finite element type*/
+	int finiteelement = P1Enum;
+
+	/*Load variables in element*/
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.smb.mass_balance",SmbMassBalanceEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.balancethickness.thickening_rate",BalancethicknessThickeningRateEnum);
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,finiteelement);
+
+			counter++;
+		}
+	}
+
+}/*}}}*/
+void Balancethickness2Analysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           Balancethickness2Analysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void           Balancethickness2Analysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+ElementVector* Balancethickness2Analysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* Balancethickness2Analysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* Balancethickness2Analysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble  yts = 365*24*3600.;
+	IssmDouble  Jdet,vx,vy,vel;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input = element->GetInput(VxEnum); _assert_(vx_input); 
+	Input* vy_input = element->GetInput(VyEnum); _assert_(vy_input);
+
+	/*Get element characteristic length*/
+	IssmDouble h = element->CharacteristicLength();
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+
+		/*make sure are diffusivisty is large enough*/
+		vel = sqrt(vx*vx+vy*vy);
+		if(sqrt(vx*vx+vy*vy)==0.){
+			vx = 0.1/yts;
+			vy = 0.1/yts;
+			vel = sqrt(vx*vx+vy*vy);
+		}
+		else if(vel<30./yts){
+			vx = 0.;//vx/vel*0.01;
+			vy = 0.;//vy/vel*0.01;
+			vel = sqrt(vx*vx+vy*vy);
+			vel = 30./yts*500000.;
+		}
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += gauss->weight*Jdet*(
+							(vx*dbasis[0*numnodes+i] + vy*dbasis[1*numnodes+i])*(vx*dbasis[0*numnodes+j] + vy*dbasis[1*numnodes+j])
+				+ vel/500000.*(dbasis[0*numnodes+i]*dbasis[0*numnodes+j] + dbasis[1*numnodes+i]*dbasis[1*numnodes+j]));
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* Balancethickness2Analysis::CreatePVector(Element* element){/*{{{*/
+
+	return NULL;
+	/*Intermediaries */
+	IssmDouble  dhdt[2],mb[2],ms[2],Jdet;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* ms_input   = element->GetInput(SmbMassBalanceEnum);                _assert_(ms_input);
+	Input* mb_input   = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);       _assert_(mb_input);
+	Input* dhdt_input = element->GetInput(BalancethicknessThickeningRateEnum);            _assert_(dhdt_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		ms_input->GetInputDerivativeValue(&ms[0],xyz_list,gauss);
+
+		ms_input->GetInputDerivativeValue(&ms[0],xyz_list,gauss);
+		mb_input->GetInputDerivativeValue(&mb[0],xyz_list,gauss);
+		dhdt_input->GetInputDerivativeValue(&dhdt[0],xyz_list,gauss);
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=0*Jdet*gauss->weight*(
+					(ms[0]+ms[1]-mb[0]-mb[1]-dhdt[0]-dhdt[1])*basis[i]
+					);
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           Balancethickness2Analysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+		element->GetSolutionFromInputsOneDof(solution,ThicknessEnum);
+}/*}}}*/
+void           Balancethickness2Analysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           Balancethickness2Analysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+			element->InputUpdateFromSolutionOneDof(solution,ThicknessEnum);
+
+}/*}}}*/
+void           Balancethickness2Analysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/Balancethickness2Analysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/Balancethickness2Analysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/Balancethickness2Analysis.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file Balancethickness2Analysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _Balancethickness2Analysis_
+#define _Balancethickness2Analysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class Balancethickness2Analysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/BalancethicknessAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/BalancethicknessAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/BalancethicknessAnalysis.cpp	(revision 27955)
@@ -0,0 +1,555 @@
+#include "./BalancethicknessAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../classes/Inputs/DatasetInput.h"
+
+/*Model processing*/
+void BalancethicknessAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*Fetch parameters: */
+	int    stabilization;	
+	iomodel->FindConstant(&stabilization,"md.balancethickness.stabilization");
+
+	/*Do not add constraints in DG*/
+	if(stabilization!=3){
+		IoModelToConstraintsx(constraints,iomodel,"md.balancethickness.spcthickness",BalancethicknessAnalysisEnum,P1Enum);
+	}
+
+}/*}}}*/
+void BalancethicknessAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Intermediary*/
+	int element;
+	int stabilization;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&stabilization,"md.balancethickness.stabilization");
+
+	/*Loads only in DG*/
+	if (stabilization==3){
+
+		/*Get faces and elements*/
+		CreateFaces(iomodel);
+		iomodel->FetchData(1,"md.geometry.thickness");
+
+		/*First load data:*/
+		for(int i=0;i<iomodel->numberoffaces;i++){
+
+			/*Get left and right elements*/
+			element=iomodel->faces[4*i+2]-1; //faces are [node1 node2 elem1 elem2]
+
+			/*Now, if this element is not in the partition, pass: */
+			if(!iomodel->my_elements[element]) continue;
+
+			/* Add load */
+			loads->AddObject(new Numericalflux(i+1,i,i,iomodel));
+		}
+
+		/*Free data: */
+		iomodel->DeleteData(1,"md.geometry.thickness");
+	}
+}/*}}}*/
+void BalancethicknessAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	int  stabilization;
+	iomodel->FindConstant(&stabilization,"md.balancethickness.stabilization");
+
+	/*Check in 3d*/
+	if(stabilization==3 && iomodel->domaintype==Domain3DEnum) _error_("DG 3d not implemented yet");
+
+	/*First fetch data: */
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	if(stabilization!=3){
+		::CreateNodes(nodes,iomodel,BalancethicknessAnalysisEnum,P1Enum);
+	}
+	else{
+		::CreateNodes(nodes,iomodel,BalancethicknessAnalysisEnum,P1DGEnum);
+	}
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  BalancethicknessAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void BalancethicknessAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int    stabilization,finiteelement;
+
+	/*Fetch data needed: */
+	iomodel->FindConstant(&stabilization,"md.balancethickness.stabilization");
+
+	/*Finite element type*/
+	finiteelement = P1Enum;
+	if(stabilization==3){
+		finiteelement = P1DGEnum;
+	}
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.smb.mass_balance",SmbMassBalanceEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.balancethickness.thickening_rate",BalancethicknessThickeningRateEnum);
+
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+}/*}}}*/
+void BalancethicknessAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+	parameters->AddObject(iomodel->CopyConstantObject("md.balancethickness.stabilization",BalancethicknessStabilizationEnum));
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           BalancethicknessAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           BalancethicknessAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* BalancethicknessAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* BalancethicknessAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* BalancethicknessAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	if(!element->IsOnBase()) return NULL;
+	Element* basalelement = element->SpawnBasalElement();
+
+	ElementMatrix* Ke = NULL;
+	switch(element->FiniteElement()){
+		case P1Enum: case P2Enum:
+			Ke = CreateKMatrixCG(basalelement);
+			break;
+		case P1DGEnum:
+			Ke = CreateKMatrixDG(basalelement);
+			break;
+		default:
+			_error_("Element type " << EnumToStringx(element->FiniteElement()) << " not supported yet");
+	}
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+ElementMatrix* BalancethicknessAnalysis::CreateKMatrixCG(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	int        stabilization;
+	int        domaintype;
+	IssmDouble Jdet,D_scalar,h;
+	IssmDouble vel,vx,vy,dvxdx,dvydy;
+	IssmDouble dvx[2],dvy[2];
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*		dbasis = xNew<IssmDouble>(2*numnodes);
+	IssmDouble     D[2][2];
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&domaintype,DomainTypeEnum);
+	element->FindParam(&stabilization,BalancethicknessStabilizationEnum);
+	Input* vxaverage_input=NULL;
+	Input* vyaverage_input=NULL;
+	if(domaintype==Domain2DhorizontalEnum){
+		vxaverage_input=element->GetInput(VxEnum); _assert_(vxaverage_input);
+		vyaverage_input=element->GetInput(VyEnum); _assert_(vyaverage_input);
+	}
+	else{
+		vxaverage_input=element->GetInput(VxAverageEnum); _assert_(vxaverage_input);
+		vyaverage_input=element->GetInput(VyAverageEnum); _assert_(vyaverage_input);
+	}
+	h = element->CharacteristicLength();
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+		vxaverage_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		vyaverage_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+		dvxdx=dvx[0];
+		dvydy=dvy[1];
+		D_scalar=gauss->weight*Jdet;
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				/*\phi_i \phi_j \nabla\cdot v*/
+				Ke->values[i*numnodes+j] += D_scalar*basis[i]*basis[j]*(dvxdx+dvydy);
+				/*\phi_i v\cdot\nabla\phi_j*/
+				Ke->values[i*numnodes+j] += D_scalar*basis[i]*(vx*dbasis[0*numnodes+j] + vy*dbasis[1*numnodes+j]);
+			}
+		}
+
+		if(stabilization==1){
+			/*Streamline upwinding*/
+			vel=sqrt(vx*vx+vy*vy);
+			D[0][0]=h/(2*vel)*vx*vx;
+			D[1][0]=h/(2*vel)*vy*vx;
+			D[0][1]=h/(2*vel)*vx*vy;
+			D[1][1]=h/(2*vel)*vy*vy;
+		}
+		else if(stabilization==2){
+			/*SSA*/
+			vxaverage_input->GetInputAverage(&vx);
+			vyaverage_input->GetInputAverage(&vy);
+			D[0][0]=h/2.0*fabs(vx);
+			D[0][1]=0.;
+			D[1][0]=0.;
+			D[1][1]=h/2.0*fabs(vy);
+		}
+		if(stabilization==1 || stabilization==2){
+			D[0][0]=D_scalar*D[0][0];
+			D[1][0]=D_scalar*D[1][0];
+			D[0][1]=D_scalar*D[0][1];
+			D[1][1]=D_scalar*D[1][1];
+
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += (
+								dbasis[0*numnodes+i] *(D[0][0]*dbasis[0*numnodes+j] + D[0][1]*dbasis[1*numnodes+j]) +
+								dbasis[1*numnodes+i] *(D[1][0]*dbasis[0*numnodes+j] + D[1][1]*dbasis[1*numnodes+j]) 
+								);
+				}
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementMatrix* BalancethicknessAnalysis::CreateKMatrixDG(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	int        domaintype;
+	IssmDouble Jdet,D_scalar,vx,vy,dvxdx,dvydy,vel;
+	IssmDouble dvx[2],dvy[2];
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*		dbasis = xNew<IssmDouble>(2*numnodes);
+	IssmDouble     D[2][2];
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&domaintype,DomainTypeEnum);
+	Input* vxaverage_input=NULL;
+	Input* vyaverage_input=NULL;
+	if(domaintype==Domain2DhorizontalEnum){
+		vxaverage_input=element->GetInput(VxEnum); _assert_(vxaverage_input);
+		vyaverage_input=element->GetInput(VyEnum); _assert_(vyaverage_input);
+	}
+	else{
+		vxaverage_input=element->GetInput(VxAverageEnum); _assert_(vxaverage_input);
+		vyaverage_input=element->GetInput(VyAverageEnum); _assert_(vyaverage_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+		vxaverage_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		vyaverage_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+		D_scalar=gauss->weight*Jdet;
+
+		/*WARNING: inverted compared to CG*/
+		D_scalar = - gauss->weight*Jdet;
+		D[0][0]  = D_scalar*vx;
+		D[0][1]  = 0.;
+		D[1][0]  = 0.;
+		D[1][1]  = D_scalar*vy;
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += D_scalar*basis[i]*basis[j]*(dvxdx+dvydy);
+				Ke->values[i*numnodes+j] += D_scalar*basis[j]*(vx*dbasis[0*numnodes+i] + vy*dbasis[1*numnodes+i]);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* BalancethicknessAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	if(!element->IsOnBase()) return NULL;
+	Element* basalelement = element->SpawnBasalElement();
+
+	ElementVector* pe = NULL;
+	switch(element->FiniteElement()){
+		case P1Enum: case P2Enum:
+			pe = CreatePVectorCG(basalelement);
+			break;
+		case P1DGEnum:
+			pe = CreatePVectorDG(basalelement);
+			break;
+		default:
+			_error_("Element type " << EnumToStringx(element->FiniteElement()) << " not supported yet");
+	}
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return pe;
+}/*}}}*/
+ElementVector* BalancethicknessAnalysis::CreatePVectorCG(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble  dhdt,mb,ms,Jdet;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* mb_input   = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);       _assert_(mb_input);
+	Input* ms_input   = element->GetInput(SmbMassBalanceEnum);     _assert_(ms_input);
+	Input* dhdt_input = element->GetInput(BalancethicknessThickeningRateEnum); _assert_(dhdt_input);
+
+	/*Initialize mb_correction to 0, do not forget!:*/
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		ms_input->GetInputValue(&ms,gauss);
+		mb_input->GetInputValue(&mb,gauss);
+		dhdt_input->GetInputValue(&dhdt,gauss);
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(ms-mb-dhdt)*basis[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+ElementVector* BalancethicknessAnalysis::CreatePVectorDG(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble  dhdt,mb,ms,Jdet;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* mb_input   = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);       _assert_(mb_input);
+	Input* ms_input   = element->GetInput(SmbMassBalanceEnum);     _assert_(ms_input);
+	Input* dhdt_input = element->GetInput(BalancethicknessThickeningRateEnum); _assert_(dhdt_input);
+
+	/*Initialize mb_correction to 0, do not forget!:*/
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		ms_input->GetInputValue(&ms,gauss);
+		mb_input->GetInputValue(&mb,gauss);
+		dhdt_input->GetInputValue(&dhdt,gauss);
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(ms-mb-dhdt)*basis[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           BalancethicknessAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           BalancethicknessAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	/* WARNING: this gradient is valid for Soft balance thickness only */
+
+	/*If on water, grad = 0: */
+	if(!element->IsIceInElement()) return;
+
+	/*Intermediaries*/
+	IssmDouble Jdet,weight;
+	IssmDouble thickness,thicknessobs,dH[3],dp[3];
+	IssmDouble  vx,vy,vel,dvx[2],dvy[2],dhdt,basal_melting,surface_mass_balance;
+	IssmDouble *xyz_list= NULL;
+
+	/*Get list of cost functions*/
+	int *responses = NULL;
+	int  num_responses,resp,solution;
+	element->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	element->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+	element->FindParam(&solution,SolutionTypeEnum);
+	if(solution!=BalancethicknessSoftSolutionEnum) _error_("not implemented yet");
+	if(control_type!=ThicknessEnum)                _error_("Control "<<EnumToStringx(control_type)<<" not supported");
+
+	/*Fetch number of vertices for this finite element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize some vectors*/
+	IssmDouble* basis         = xNew<IssmDouble>(numvertices);
+	IssmDouble* dbasis        = xNew<IssmDouble>(2*numvertices);
+	IssmDouble* ge            = xNewZeroInit<IssmDouble>(numvertices);
+	int*        vertexpidlist = xNew<int>(numvertices);
+
+	/*Retrieve all inputs we will be needing: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GradientIndexing(&vertexpidlist[0],control_index);
+	DatasetInput* weights_input       = element->GetDatasetInput(InversionCostFunctionsCoefficientsEnum);  _assert_(weights_input);
+	Input* thickness_input            = element->GetInput(ThicknessEnum);                           _assert_(thickness_input);
+	Input* thicknessobs_input         = element->GetInput(InversionThicknessObsEnum);               _assert_(thicknessobs_input);
+	Input* vx_input                   = element->GetInput(VxEnum);                                  _assert_(vx_input);
+	Input* vy_input                   = element->GetInput(VyEnum);                                  _assert_(vy_input);
+	Input* surface_mass_balance_input = element->GetInput(SmbMassBalanceEnum);          _assert_(surface_mass_balance_input);
+	Input* basal_melting_input        = element->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(basal_melting_input);
+	Input* dhdt_input                 = element->GetInput(BalancethicknessThickeningRateEnum);      _assert_(dhdt_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(4);
+	while(gauss->next()){
+
+		thickness_input->GetInputValue(&thickness, gauss);
+		thickness_input->GetInputDerivativeValue(&dH[0],xyz_list,gauss);
+		thicknessobs_input->GetInputValue(&thicknessobs, gauss);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsP1(basis,gauss);
+		element->NodalFunctionsP1Derivatives(dbasis,xyz_list,gauss);
+
+		/*Deal with first part (partial derivative a J with respect to k)*/
+		for(resp=0;resp<num_responses;resp++){
+
+			weights_input->GetInputValue(&weight,gauss,responses[resp]);
+
+			switch(responses[resp]){
+				case ThicknessAbsMisfitEnum:
+					for(int i=0;i<numvertices;i++) ge[i]+= (thicknessobs-thickness)*weight*Jdet*gauss->weight*basis[i];
+					break;
+				case ThicknessAbsGradientEnum:
+					for(int i=0;i<numvertices;i++) ge[i]+= - weight*dH[0]*dbasis[0*numvertices+i]*Jdet*gauss->weight;
+					for(int i=0;i<numvertices;i++) ge[i]+= - weight*dH[1]*dbasis[1*numvertices+i]*Jdet*gauss->weight;
+					break;
+				case ThicknessAlongGradientEnum:
+					vx_input->GetInputValue(&vx,gauss);
+					vy_input->GetInputValue(&vy,gauss);
+					vel = sqrt(vx*vx+vy*vy);
+					vx  = vx/(vel+1.e-9);
+					vy  = vy/(vel+1.e-9);
+					for(int i=0;i<numvertices;i++) ge[i]+= - weight*(dH[0]*vx+dH[1]*vy)*(dbasis[0*numvertices+i]*vx+dbasis[1*numvertices+i]*vy)*Jdet*gauss->weight;
+					break;
+				case ThicknessAcrossGradientEnum:
+					vx_input->GetInputValue(&vx,gauss);
+					vy_input->GetInputValue(&vy,gauss);
+					vel = sqrt(vx*vx+vy*vy);
+					vx  = vx/(vel+1.e-9);
+					vy  = vy/(vel+1.e-9);
+					for(int i=0;i<numvertices;i++) ge[i]+= - weight*(dH[0]*(-vy)+dH[1]*vx)*(dbasis[0*numvertices+i]*(-vy)+dbasis[1*numvertices+i]*vx)*Jdet*gauss->weight;
+					break;
+				case BalancethicknessMisfitEnum:
+					surface_mass_balance_input->GetInputValue(&surface_mass_balance,gauss);
+					basal_melting_input->GetInputValue(&basal_melting,gauss);
+					dhdt_input->GetInputValue(&dhdt,gauss);
+					vx_input->GetInputValue(&vx,gauss);
+					vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+					vy_input->GetInputValue(&vy,gauss);
+					vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+					for(int i=0;i<numvertices;i++){
+						ge[i]+= - weight*Jdet*gauss->weight*(
+							(vx*dH[0]+vy*dH[1] + thickness*(dvx[0]+dvy[1]))*(vx*dbasis[0*numvertices+i]+ vy*dbasis[1*numvertices+i] + basis[i]*(dvx[0]+dvy[1]))
+							-(surface_mass_balance-basal_melting-dhdt)*(vx*dbasis[0*numvertices+i]+ vy*dbasis[1*numvertices+i] + basis[i]*(dvx[0]+dvy[1]))
+							);
+					}
+					break;
+				default:
+					_error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
+			}
+		}
+	}
+	gradient->SetValues(numvertices,vertexpidlist,ge,ADD_VAL);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(ge);
+	xDelete<int>(vertexpidlist);
+	xDelete<int>(responses);
+	delete gauss;
+
+}/*}}}*/
+void           BalancethicknessAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->InputUpdateFromSolutionOneDof(solution,ThicknessEnum);
+			break;
+		case Domain3DEnum:
+			element->InputUpdateFromSolutionOneDofCollapsed(solution,ThicknessEnum);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}/*}}}*/
+void           BalancethicknessAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/BalancethicknessAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/BalancethicknessAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/BalancethicknessAnalysis.h	(revision 27955)
@@ -0,0 +1,38 @@
+/*! \file BalancethicknessAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _BalancethicknessAnalysis_
+#define _BalancethicknessAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class BalancethicknessAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementMatrix* CreateKMatrixCG(Element* element);
+		ElementMatrix* CreateKMatrixDG(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		ElementVector* CreatePVectorCG(Element* element);
+		ElementVector* CreatePVectorDG(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/BalancethicknessSoftAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/BalancethicknessSoftAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/BalancethicknessSoftAnalysis.cpp	(revision 27955)
@@ -0,0 +1,59 @@
+#include "./BalancethicknessSoftAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+int  BalancethicknessSoftAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void BalancethicknessSoftAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void BalancethicknessSoftAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void BalancethicknessSoftAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void BalancethicknessSoftAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void BalancethicknessSoftAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           BalancethicknessSoftAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           BalancethicknessSoftAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* BalancethicknessSoftAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* BalancethicknessSoftAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* BalancethicknessSoftAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+ElementVector* BalancethicknessSoftAnalysis::CreatePVector(Element* element){/*{{{*/
+_error_("not implemented yet");
+}/*}}}*/
+void BalancethicknessSoftAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void BalancethicknessSoftAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void BalancethicknessSoftAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void BalancethicknessSoftAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/BalancethicknessSoftAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/BalancethicknessSoftAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/BalancethicknessSoftAnalysis.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file BalancethicknessSoftAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _BalancethicknessSoftAnalysis_
+#define _BalancethicknessSoftAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class BalancethicknessSoftAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/BalancevelocityAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/BalancevelocityAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/BalancevelocityAnalysis.cpp	(revision 27955)
@@ -0,0 +1,262 @@
+#include "./BalancevelocityAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void BalancevelocityAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*No constraints for now*/
+	//IoModelToConstraintsx(constraints,iomodel,"md.balancethickness.spcthickness",BalancevelocityAnalysisEnum,P1Enum);
+}/*}}}*/
+void BalancevelocityAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*No loads*/
+}/*}}}*/
+void BalancevelocityAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	/*Check in 3d*/
+	if(iomodel->domaintype==Domain3DEnum) _error_("DG 3d not implemented yet");
+
+	/*First fetch data: */
+	::CreateNodes(nodes,iomodel,BalancevelocityAnalysisEnum,P1Enum);
+}/*}}}*/
+int  BalancevelocityAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void BalancevelocityAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.smb.mass_balance",SmbMassBalanceEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.balancethickness.thickening_rate",BalancethicknessThickeningRateEnum);
+
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+}/*}}}*/
+void BalancevelocityAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           BalancevelocityAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           BalancevelocityAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* BalancevelocityAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* BalancevelocityAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* BalancevelocityAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble  dhdt,mb,ms,Jdet;
+	IssmDouble  h,gamma,thickness;
+	IssmDouble  hnx,hny,dhnx[2],dhny[2];
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes);
+	IssmDouble*    HNx    = xNew<IssmDouble>(numnodes);
+	IssmDouble*    HNy    = xNew<IssmDouble>(numnodes);
+	IssmDouble*    H      = xNew<IssmDouble>(numnodes);
+	IssmDouble*    Nx     = xNew<IssmDouble>(numnodes);
+	IssmDouble*    Ny     = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all Inputs and parameters: */
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* H_input = element->GetInput(ThicknessEnum); _assert_(H_input);
+	h = element->CharacteristicLength();
+
+	/*Get vector N for all nodes and build HNx and HNy*/
+	element->GetInputListOnNodes(Nx,DrivingStressXEnum);
+	element->GetInputListOnNodes(Ny,DrivingStressYEnum);
+	element->GetInputListOnNodes(H,ThicknessEnum);
+	for(int i=0;i<numnodes;i++){
+		IssmDouble norm=sqrt(Nx[i]*Nx[i]+Ny[i]*Ny[i]+1.e-10);
+		HNx[i] = -H[i]*Nx[i]/norm;
+		HNy[i] = -H[i]*Ny[i]/norm;
+	}
+
+	/*Start looping on the number of gaussian points:*/
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		H_input->GetInputValue(&thickness,gauss);
+		if(thickness<50.) thickness=50.;
+		element->ValueP1DerivativesOnGauss(&dhnx[0],HNx,xyz_list,gauss);
+		element->ValueP1DerivativesOnGauss(&dhny[0],HNy,xyz_list,gauss);
+		element->ValueP1OnGauss(&hnx,HNx,gauss);
+		element->ValueP1OnGauss(&hny,HNy,gauss);
+
+		gamma=h/(2.*thickness+1.e-10);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += gauss->weight*Jdet*(
+							(basis[i]+gamma*(basis[i]*(dhnx[0]+dhny[1]) + dbasis[0*numnodes+i]*hnx + dbasis[1*numnodes+i]*hny))*
+							(basis[j]*(dhnx[0]+dhny[1])  + dbasis[0*numnodes+j]*hnx + dbasis[1*numnodes+j]*hny)
+							);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(H);
+	xDelete<IssmDouble>(Nx);
+	xDelete<IssmDouble>(Ny);
+	xDelete<IssmDouble>(HNx);
+	xDelete<IssmDouble>(HNy);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* BalancevelocityAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries */
+	IssmDouble dhdt,mb,ms,Jdet;
+	IssmDouble gamma,thickness;
+	IssmDouble hnx,hny,dhnx[2],dhny[2];
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe    = basalelement->NewElementVector();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(numnodes*2);
+	IssmDouble*    H      = xNew<IssmDouble>(numnodes);
+	IssmDouble*    Nx     = xNew<IssmDouble>(numnodes);
+	IssmDouble*    Ny     = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	Input* ms_input   = basalelement->GetInput(SmbMassBalanceEnum);          _assert_(ms_input);
+	Input* mb_input   = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(mb_input);
+	Input* dhdt_input = basalelement->GetInput(BalancethicknessThickeningRateEnum);      _assert_(dhdt_input);
+	Input* H_input    = basalelement->GetInput(ThicknessEnum);                           _assert_(H_input);
+	IssmDouble h = basalelement->CharacteristicLength();
+
+	/*Get vector N for all nodes*/
+	basalelement->GetInputListOnNodes(Nx,DrivingStressXEnum);
+	basalelement->GetInputListOnNodes(Ny,DrivingStressYEnum);
+	basalelement->GetInputListOnNodes(H,ThicknessEnum);
+	for(int i=0;i<numnodes;i++){
+		IssmDouble norm=sqrt(Nx[i]*Nx[i]+Ny[i]*Ny[i]+1.e-10);
+		Nx[i] = -H[i]*Nx[i]/norm;
+		Ny[i] = -H[i]*Ny[i]/norm;
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+		basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		element->ValueP1DerivativesOnGauss(&dhnx[0],Nx,xyz_list,gauss);
+		element->ValueP1DerivativesOnGauss(&dhny[0],Ny,xyz_list,gauss);
+		element->ValueP1OnGauss(&hnx,Nx,gauss);
+		element->ValueP1OnGauss(&hny,Ny,gauss);
+
+		ms_input->GetInputValue(&ms,gauss);
+		mb_input->GetInputValue(&mb,gauss);
+		dhdt_input->GetInputValue(&dhdt,gauss);
+		H_input->GetInputValue(&thickness,gauss);
+		if(thickness<50.) thickness=50.;
+
+		gamma=h/(2.*thickness+1.e-10);
+
+		for(int i=0;i<numnodes;i++){
+			pe->values[i]+=Jdet*gauss->weight*(ms-mb-dhdt)*( basis[i] + gamma*(basis[i]*(dhnx[0]+dhny[1])+hnx*dbasis[0*numnodes+i] + hny*dbasis[1*numnodes+i]));
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(H);
+	xDelete<IssmDouble>(Nx);
+	xDelete<IssmDouble>(Ny);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return pe;
+}/*}}}*/
+void           BalancevelocityAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           BalancevelocityAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           BalancevelocityAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->InputUpdateFromSolutionOneDof(solution,VelEnum);
+			break;
+		case Domain3DEnum:
+			element->InputUpdateFromSolutionOneDofCollapsed(solution,VelEnum);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}/*}}}*/
+void           BalancevelocityAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/BalancevelocityAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/BalancevelocityAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/BalancevelocityAnalysis.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file BalancevelocityAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _BalancevelocityAnalysis_
+#define _BalancevelocityAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class BalancevelocityAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/DamageEvolutionAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 27955)
@@ -0,0 +1,882 @@
+#include "./DamageEvolutionAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void DamageEvolutionAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	int finiteelement;
+	iomodel->FindConstant(&finiteelement,"md.damage.elementinterp");
+
+	/*Fetch parameters: */
+	int stabilization;
+	iomodel->FindConstant(&stabilization,"md.damage.stabilization");
+
+	/*Do not add constraints in DG,  they are weakly imposed*/
+	if(stabilization!=3){
+		IoModelToConstraintsx(constraints,iomodel,"md.damage.spcdamage",DamageEvolutionAnalysisEnum,finiteelement);
+	}
+
+	/*FCT, constraints are imposed using penalties*/
+	if(stabilization==4){
+		constraints->ActivatePenaltyMethod(DamageEvolutionAnalysisEnum);
+	}
+}/*}}}*/
+void DamageEvolutionAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Nothing for now*/
+
+}/*}}}*/
+void DamageEvolutionAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	int finiteelement;
+
+	iomodel->FindConstant(&finiteelement,"md.damage.elementinterp");
+	::CreateNodes(nodes,iomodel,DamageEvolutionAnalysisEnum,finiteelement);
+}/*}}}*/
+int  DamageEvolutionAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void DamageEvolutionAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int finiteelement;
+	bool   ismovingfront;
+
+	iomodel->FindConstant(&finiteelement,"md.damage.elementinterp");
+	iomodel->FindConstant(&ismovingfront,"md.transient.ismovingfront");
+
+	/*Update elements: */
+	iomodel->FetchData(1,"md.flowequation.element_equation");
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,finiteelement);
+
+			/*Need to know the type of approximation for this element*/
+			if(iomodel->Data("md.flowequation.element_equation")){
+				inputs->SetInput(ApproximationEnum,counter,IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[i])));
+			}
+			counter++;
+		}
+	}
+	iomodel->DeleteData(1,"md.flowequation.element_equation");
+
+   /*First, reset all F to 0 */
+	for(Object* & object : elements->objects){
+		Element*       element = xDynamicCast<Element*>(object);
+		element->SetElementInput(inputs,DamageFEnum,0.);
+	}
+
+	/*What input do I need to run my damage evolution model?*/
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum);
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchDataToInput(inputs,elements,"md.initialization.vz",VzEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.damage.D",DamageDEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.pressure",PressureEnum);
+
+}/*}}}*/
+void DamageEvolutionAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	/*Intermediaries*/
+	int         numoutputs;
+	char**      requestedoutputs = NULL;
+
+	/*retrieve some parameters: */
+	parameters->AddObject(iomodel->CopyConstantObject("md.damage.law",DamageLawEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.damage.stabilization",DamageStabilizationEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.damage.max_damage",DamageMaxDamageEnum));
+
+	/*Requested outputs*/
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.damage.requested_outputs");
+	parameters->AddObject(new IntParam(DamageEvolutionNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(DamageEvolutionRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.damage.requested_outputs");
+
+	/*Retrieve law dependent parameters: */
+	int law;
+	iomodel->FindConstant(&law,"md.damage.law");
+	if (law==0){
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.stress_threshold",DamageStressThresholdEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.kappa",DamageKappaEnum));
+	}
+	else if (law>0){
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.c1",DamageC1Enum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.c2",DamageC2Enum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.c3",DamageC3Enum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.c4",DamageC4Enum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.stress_threshold",DamageStressThresholdEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.stress_ubound",DamageStressUBoundEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.kappa",DamageKappaEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.healing",DamageHealingEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.equiv_stress",DamageEquivStressEnum));
+	}
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           DamageEvolutionAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           DamageEvolutionAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           DamageEvolutionAnalysis::CreateDamageFInput(Element* element){/*{{{*/
+
+	/*Fetch number of vertices and allocate output*/
+	int numnodes = element->GetNumberOfNodes();
+	IssmDouble* f   = xNew<IssmDouble>(numnodes);
+
+	/*Calculate damage evolution source term: */
+	for (int i=0;i<numnodes;i++){
+
+		/* healing could be handled here */
+
+		/* no source term; damage handled in stress balance */
+		f[i]=0.;
+	}
+
+	/*Add input*/
+	element->AddInput(DamageFEnum,f,element->GetElementType());
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(f);
+}/*}}}*/
+void           DamageEvolutionAnalysis::CreateDamageFInputArctan(Element* element){/*{{{*/
+	IssmDouble c1, c2, stress_threshold, stress_ubound;
+	IssmDouble damage;
+	IssmDouble yts;
+	IssmDouble principalDevStress1, principalDevStress2;
+	IssmDouble tensileStress, compressiveStress;
+
+	int equivstress, domaintype, dim;
+
+	/*Fetch number of vertices and allocate output*/
+	int numnodes = element->GetNumberOfNodes();
+	IssmDouble* f   = xNew<IssmDouble>(numnodes);
+
+	/*retrieve parameters:*/
+	element->FindParam(&c1,DamageC1Enum);
+	element->FindParam(&c2,DamageC2Enum);
+	element->FindParam(&yts,ConstantsYtsEnum);
+	element->FindParam(&stress_threshold,DamageStressThresholdEnum);
+	element->FindParam(&stress_ubound,DamageStressUBoundEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Get problem dimension*/
+	switch(domaintype){
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 3; break;
+		default: _error_("not implemented");
+	}
+	/*Compute stress tensor and Stress Max Principal: */
+	element->ComputeDeviatoricStressTensor();
+
+	Input* principalDevStress1_input = element->GetInput(DeviatoricStress1Enum);     _assert_(principalDevStress1_input);
+	Input* principalDevStress2_input = element->GetInput(DeviatoricStress2Enum);     _assert_(principalDevStress2_input);
+
+	Input* damage_input = NULL;
+	if(domaintype==Domain2DhorizontalEnum){
+		damage_input = element->GetInput(DamageDbarEnum); 	_assert_(damage_input);
+	}
+	else{
+		damage_input = element->GetInput(DamageDEnum);   _assert_(damage_input);
+	}
+
+	/*Calculate damage evolution source term */
+	Gauss* gauss=element->NewGauss();
+
+	/* To keep arctan output (bounded by -pi/2 and pi/2) within the specified boundaries */
+	c1 /= (PI/2);
+	c2 /= (PI/2);
+	/* To have per second output with per annum parameters */
+	c1 /= yts;
+	c2 /= yts;
+
+	for (int i=0;i<numnodes;i++){
+		f[i] = 0;
+
+		gauss->GaussNode(element->GetElementType(),i);
+
+		damage_input->GetInputValue(&damage,gauss);
+		principalDevStress1_input->GetInputValue(&principalDevStress1,gauss);
+		principalDevStress2_input->GetInputValue(&principalDevStress2,gauss);
+
+		tensileStress     = sqrt(1.5*(pow(max(principalDevStress1, 0.), 2) + pow(max(principalDevStress2, 0.), 2)));
+		compressiveStress = sqrt(1.5*(pow(min(principalDevStress1, 0.), 2) + pow(min(principalDevStress2, 0.), 2)));
+
+		/* Calculate principal effective stresses */
+		if(dim==2){
+			f[i] = 0;
+			if(tensileStress > stress_threshold)
+				f[i] += c1*atan((tensileStress/stress_threshold - 1)/(1-damage));
+
+			if(compressiveStress < stress_ubound)
+				f[i] += c2*atan((compressiveStress/stress_ubound - 1)/(1-damage));
+		}
+		else{
+			_error_("Only 2D is implemented.");
+		}
+	}
+
+	/*Add input*/
+	element->AddInput(DamageFEnum,f,element->GetElementType());
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(f);
+	delete gauss;
+}/*}}}*/
+
+void           DamageEvolutionAnalysis::CreateDamageFInputExp(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble epsf,stress_threshold,eps0;
+	IssmDouble damage,B,n,epseff;
+	IssmDouble eps_xx,eps_yy,eps_xy,eps1,eps2,epstmp;
+	int domaintype;
+
+	/*Fetch number of vertices and allocate output*/
+	int numnodes = element->GetNumberOfNodes();
+	IssmDouble* f   = xNew<IssmDouble>(numnodes);
+
+	/*retrieve parameters:*/
+	element->FindParam(&epsf,DamageC1Enum);
+	element->FindParam(&stress_threshold,DamageStressThresholdEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Compute stress tensor: */
+	element->ComputeStrainRate();
+
+	/*retrieve what we need: */
+	Input* eps_xx_input  = element->GetInput(StrainRatexxEnum);     _assert_(eps_xx_input);
+	Input* eps_xy_input  = element->GetInput(StrainRatexyEnum);     _assert_(eps_xy_input);
+	Input* eps_yy_input  = element->GetInput(StrainRateyyEnum);     _assert_(eps_yy_input);
+	Input*  n_input=element->GetInput(MaterialsRheologyNEnum); _assert_(n_input);
+	Input* damage_input = NULL;
+	Input* B_input = NULL;
+	if(domaintype==Domain2DhorizontalEnum){
+		damage_input = element->GetInput(DamageDbarEnum); 	_assert_(damage_input);
+		B_input=element->GetInput(MaterialsRheologyBbarEnum); _assert_(B_input);
+	}
+	else{
+		damage_input = element->GetInput(DamageDEnum);   _assert_(damage_input);
+		B_input=element->GetInput(MaterialsRheologyBEnum); _assert_(B_input);
+	}
+
+	/*Calculate damage evolution source term: */
+	Gauss* gauss=element->NewGauss();
+	for (int i=0;i<numnodes;i++){
+		gauss->GaussNode(element->GetElementType(),i);
+
+		eps_xx_input->GetInputValue(&eps_xx,gauss);
+		eps_xy_input->GetInputValue(&eps_xy,gauss);
+		eps_yy_input->GetInputValue(&eps_yy,gauss);
+		B_input->GetInputValue(&B,gauss);
+		n_input->GetInputValue(&n,gauss);
+		damage_input->GetInputValue(&damage,gauss);
+
+		/*Calculate principal effective strain rates*/
+		eps1=(eps_xx+eps_yy)/2.+sqrt(pow((eps_xx-eps_yy)/2.,2)+pow(eps_xy,2));
+		eps2=(eps_xx+eps_yy)/2.-sqrt(pow((eps_xx-eps_yy)/2.,2)+pow(eps_xy,2));
+		if(fabs(eps2)>fabs(eps1)){epstmp=eps2; eps2=eps1; eps1=epstmp;}
+
+		/*Calculate effective strain rate and threshold strain rate*/
+		epseff=1./sqrt(2.)*sqrt(eps1*eps1-eps1*eps2+eps2*eps2);
+		eps0=pow(stress_threshold/B,n);
+
+		if(epseff>eps0){
+			f[i]=1.-pow(eps0/epseff,1./n)*exp(-(epseff-eps0)/(epsf-eps0))-damage;
+		}
+		else f[i]=0;
+
+		/*Edits from MM*/
+		if(f[i]>10.) f[i]=10.;
+		if(f[i]<-10.) f[i]=-10.;
+	}
+
+	/*Add input*/
+	element->AddInput(DamageFEnum,f,P1DGEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(f);
+	delete gauss;
+}/*}}}*/
+void           DamageEvolutionAnalysis::CreateDamageFInputPralong(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble c1,c2,c3,healing,stress_threshold;
+	IssmDouble s_xx,s_xy,s_xz,s_yy,s_yz,s_zz,s1,s2,s3,stmp;
+	IssmDouble J2s,Chi,Psi,PosPsi,NegPsi;
+	IssmDouble damage,tau_xx,tau_xy,tau_xz,tau_yy,tau_yz,tau_zz,stressMaxPrincipal;
+	int equivstress,domaintype,dim;
+
+	/*Fetch number of vertices and allocate output*/
+	int numnodes = element->GetNumberOfNodes();
+	IssmDouble* f   = xNew<IssmDouble>(numnodes);
+
+	/*retrieve parameters:*/
+	element->FindParam(&c1,DamageC1Enum);
+	element->FindParam(&c2,DamageC2Enum);
+	element->FindParam(&c3,DamageC3Enum);
+	element->FindParam(&healing,DamageHealingEnum);
+	element->FindParam(&stress_threshold,DamageStressThresholdEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Get problem dimension*/
+	switch(domaintype){
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 3; break;
+		default: _error_("not implemented");
+	}
+	/*Compute stress tensor and Stress Max Principal: */
+	element->ComputeDeviatoricStressTensor();
+	if(dim==3){
+		/*Only works in 3d because the pressure is defined*/
+		element->StressMaxPrincipalCreateInput();
+	}
+	/*retrieve what we need: */
+	Input* tau_xx_input  = element->GetInput(DeviatoricStressxxEnum);     _assert_(tau_xx_input);
+	Input* tau_xy_input  = element->GetInput(DeviatoricStressxyEnum);     _assert_(tau_xy_input);
+	Input* tau_yy_input  = element->GetInput(DeviatoricStressyyEnum);     _assert_(tau_yy_input);
+	Input* tau_xz_input  = NULL;
+	Input* tau_yz_input  = NULL;
+	Input* tau_zz_input  = NULL;
+	Input* stressMaxPrincipal_input = NULL;
+	if(dim==3){
+		tau_xz_input  = element->GetInput(DeviatoricStressxzEnum);     _assert_(tau_xz_input);
+		tau_yz_input  = element->GetInput(DeviatoricStressyzEnum);     _assert_(tau_yz_input);
+		tau_zz_input  = element->GetInput(DeviatoricStresszzEnum);     _assert_(tau_zz_input);
+		stressMaxPrincipal_input = element->GetInput(StressMaxPrincipalEnum); _assert_(stressMaxPrincipal_input);
+	}
+	Input* damage_input = NULL;
+	if(domaintype==Domain2DhorizontalEnum){
+		damage_input = element->GetInput(DamageDbarEnum); 	_assert_(damage_input);
+	}
+	else{
+		damage_input = element->GetInput(DamageDEnum);   _assert_(damage_input);
+	}
+
+	/*retrieve the desired type of equivalent stress*/
+	element->FindParam(&equivstress,DamageEquivStressEnum);
+
+	/*Calculate damage evolution source term: */
+	Gauss* gauss=element->NewGauss();
+	for (int i=0;i<numnodes;i++){
+		gauss->GaussNode(element->GetElementType(),i);
+
+		damage_input->GetInputValue(&damage,gauss);
+		tau_xx_input->GetInputValue(&tau_xx,gauss);
+		tau_xy_input->GetInputValue(&tau_xy,gauss);
+		tau_yy_input->GetInputValue(&tau_yy,gauss);
+		if(dim==3){
+			tau_xz_input->GetInputValue(&tau_xz,gauss);
+			tau_yz_input->GetInputValue(&tau_yz,gauss);
+			tau_zz_input->GetInputValue(&tau_zz,gauss);
+		}
+		/*Calculate effective stress components*/
+		s_xx=tau_xx/(1.-damage);
+		s_xy=tau_xy/(1.-damage);
+		s_yy=tau_yy/(1.-damage);
+		if(dim==3){
+			s_xz=tau_xz/(1.-damage);
+			s_yz=tau_yz/(1.-damage);
+			s_zz=tau_zz/(1.-damage);
+		}
+		/*Calculate principal effective stresses*/
+		if(dim==2){
+			s1=(s_xx+s_yy)/2.+sqrt(pow((s_xx-s_yy)/2.,2)+pow(s_xy,2));
+			s2=(s_xx+s_yy)/2.-sqrt(pow((s_xx-s_yy)/2.,2)+pow(s_xy,2));
+			if(fabs(s2)>fabs(s1)){stmp=s2; s2=s1; s1=stmp;}
+
+			if(equivstress==0){ /* von Mises */
+				Chi=sqrt(s1*s1-s1*s2+s2*s2);
+			}
+			else if(equivstress==1){ /* max principal stress */
+				Chi=s1;
+			}
+			Psi=Chi-stress_threshold;
+			NegPsi=max(-Chi,0.); /* healing only for compressive stresses */
+			PosPsi=max(Psi,0.);
+			f[i]= c1*(pow(PosPsi,c2) - healing*pow(NegPsi,c2))*pow((1./(1.-damage)),c3);
+		}
+		else{
+			if(equivstress==1){/* max principal stress */
+				stressMaxPrincipal_input->GetInputValue(&stressMaxPrincipal,gauss);
+				Chi=stressMaxPrincipal/(1.-damage);
+			}
+			else if(equivstress==0){/* von Mises */
+				Chi=sqrt(((s_xx-s_yy)*(s_xx-s_yy)+(s_yy-s_zz)*(s_yy-s_zz)+(s_zz-s_xx)*(s_zz-s_xx)+6.*(s_xy*s_xy+s_yz*s_yz+s_xz*s_xz))/2.);
+			}
+			Psi=Chi-stress_threshold;
+			NegPsi=max(-Chi,0.); /* healing only for compressive stresses */
+			PosPsi=max(Psi,0.);
+			f[i]= c1*(pow(PosPsi,c2) - healing*pow(NegPsi,c2))*pow((1./(1.-damage)),c3);
+		}
+	}
+	/*Add input*/
+	element->AddInput(DamageFEnum,f,P1DGEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(f);
+	delete gauss;
+}/*}}}*/
+ElementVector* DamageEvolutionAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* DamageEvolutionAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* DamageEvolutionAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+	/*Intermediaries*/
+	int         domaintype,dim;
+	int         stabilization;
+	IssmDouble  Jdet,dt,D_scalar,h,hx,hy,hz;
+	IssmDouble  vel,vx,vy,vz,dvxdx,dvydy,dvzdz,dvx[3],dvy[3],dvz[3];
+	IssmDouble *xyz_list  = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 3; break;
+		default: _error_("Not implemented yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    D      = xNewZeroInit<IssmDouble>(dim*dim);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&stabilization,DamageStabilizationEnum);
+	Input* vx_input = element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input = element->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input = NULL;
+	if(dim==3){
+		vz_input=element->GetInput(VzEnum); _assert_(vz_input);
+	}
+
+	if(dim==2) h=element->CharacteristicLength();
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		vx_input->GetInputValue(&vx,gauss);
+		vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+
+		if(dim==3){
+			vz_input->GetInputValue(&vz,gauss);
+			vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
+		}
+
+		/*Transient term*/
+		D_scalar=gauss->weight*Jdet;
+		for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D_scalar*basis[i]*basis[j];
+
+		dvxdx=dvx[0];
+		dvydy=dvy[1];
+		D_scalar=dt*gauss->weight*Jdet;
+		if(dim==2){
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					/*\phi_i \phi_j \nabla\cdot v*/
+					Ke->values[i*numnodes+j] += D_scalar*basis[i]*basis[j]*(dvxdx+dvydy);
+					/*\phi_i v\cdot\nabla\phi_j*/
+					Ke->values[i*numnodes+j] += D_scalar*basis[i]*(vx*dbasis[0*numnodes+j] + vy*dbasis[1*numnodes+j]);
+				}
+			}
+		}
+		else{/*3D*/
+			_assert_(dim==3);
+			dvzdz=dvz[2];
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					/*\phi_i \phi_j \nabla\cdot v*/
+					Ke->values[i*numnodes+j] += D_scalar*basis[i]*basis[j]*(dvxdx+dvydy+dvzdz);
+					/*\phi_i v\cdot\nabla\phi_j*/
+					Ke->values[i*numnodes+j] += D_scalar*basis[i]*(vx*dbasis[0*numnodes+j] + vy*dbasis[1*numnodes+j] + vz*dbasis[2*numnodes+j]);
+				}
+			}
+		}
+
+		if(stabilization==2){
+			if(dim==3){
+				vel=sqrt(vx*vx+vy*vy+vz*vz)+1.e-8;
+				D[0*dim+0]=h/(2.0*vel)*vx*vx;
+				D[1*dim+0]=h/(2.0*vel)*vy*vx;
+				D[2*dim+0]=h/(2.0*vel)*vz*vx;
+				D[0*dim+1]=h/(2.0*vel)*vx*vy;
+				D[1*dim+1]=h/(2.0*vel)*vy*vy;
+				D[2*dim+1]=h/(2.0*vel)*vy*vz;
+				D[0*dim+2]=h/(2.0*vel)*vx*vz;
+				D[1*dim+2]=h/(2.0*vel)*vy*vz;
+				D[2*dim+2]=h/(2.0*vel)*vz*vz;
+			}
+			else{
+				/*Streamline upwinding*/
+				vel=sqrt(vx*vx+vy*vy)+1.e-8;
+				D[0*dim+0]=h/(2.0*vel)*vx*vx;
+				D[1*dim+0]=h/(2.0*vel)*vy*vx;
+				D[0*dim+1]=h/(2.0*vel)*vx*vy;
+				D[1*dim+1]=h/(2.0*vel)*vy*vy;
+			}
+		}
+		else if(stabilization==1){
+			if(dim==2){
+				vx_input->GetInputAverage(&vx);
+				vy_input->GetInputAverage(&vy);
+				D[0*dim+0]=h/2.0*fabs(vx);
+				D[1*dim+1]=h/2.0*fabs(vy);
+			}
+			else if(dim==3){
+				element->ElementSizes(&hx,&hy,&hz);
+				vel=sqrt(vx*vx + vy*vy + vz*vz)+1.e-14;
+				h=sqrt( pow(hx*vx/vel,2) + pow(hy*vy/vel,2) + pow(hz*vz/vel,2));
+				D[0*dim+0]=h/(2.*vel)*fabs(vx*vx);  D[0*dim+1]=h/(2.*vel)*fabs(vx*vy); D[0*dim+2]=h/(2.*vel)*fabs(vx*vz);
+				D[1*dim+0]=h/(2.*vel)*fabs(vy*vx);  D[1*dim+1]=h/(2.*vel)*fabs(vy*vy); D[1*dim+2]=h/(2.*vel)*fabs(vy*vz);
+				D[2*dim+0]=h/(2.*vel)*fabs(vz*vx);  D[2*dim+1]=h/(2.*vel)*fabs(vz*vy); D[2*dim+2]=h/(2.*vel)*fabs(vz*vz);
+			}
+		}
+		if(stabilization==1 || stabilization==2){
+			if(dim==2){
+				D[0*dim+0]=D_scalar*D[0*dim+0];
+				D[1*dim+0]=D_scalar*D[1*dim+0];
+				D[0*dim+1]=D_scalar*D[0*dim+1];
+				D[1*dim+1]=D_scalar*D[1*dim+1];
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j] += (
+									dbasis[0*numnodes+i] *(D[0*dim+0]*dbasis[0*numnodes+j] + D[0*dim+1]*dbasis[1*numnodes+j]) +
+									dbasis[1*numnodes+i] *(D[1*dim+0]*dbasis[0*numnodes+j] + D[1*dim+1]*dbasis[1*numnodes+j])
+									);
+					}
+				}
+			}
+			else if(dim==3){
+				D[0*dim+0]=D_scalar*D[0*dim+0];
+				D[1*dim+0]=D_scalar*D[1*dim+0];
+				D[2*dim+0]=D_scalar*D[2*dim+0];
+				D[0*dim+1]=D_scalar*D[0*dim+1];
+				D[1*dim+1]=D_scalar*D[1*dim+1];
+				D[2*dim+1]=D_scalar*D[2*dim+1];
+				D[0*dim+2]=D_scalar*D[0*dim+2];
+				D[1*dim+2]=D_scalar*D[1*dim+2];
+				D[2*dim+2]=D_scalar*D[2*dim+2];
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j] += (
+									dbasis[0*numnodes+i] *(D[0*dim+0]*dbasis[0*numnodes+j] + D[0*dim+1]*dbasis[1*numnodes+j] + D[0*dim+2]*dbasis[2*numnodes+j]) +
+									dbasis[1*numnodes+i] *(D[1*dim+0]*dbasis[0*numnodes+j] + D[1*dim+1]*dbasis[1*numnodes+j] + D[1*dim+2]*dbasis[2*numnodes+j]) +
+									dbasis[2*numnodes+i] *(D[2*dim+0]*dbasis[0*numnodes+j] + D[2*dim+1]*dbasis[1*numnodes+j] + D[2*dim+2]*dbasis[2*numnodes+j])
+									);
+					}
+				}
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(D);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* DamageEvolutionAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int      domaintype,damagelaw;
+	IssmDouble  Jdet,dt;
+	IssmDouble  f,damage;
+	IssmDouble* xyz_list = NULL;
+	/*Get element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&damagelaw,DamageLawEnum);
+	switch(damagelaw){
+		case 0:
+			this->CreateDamageFInput(element);
+			break;
+		case 1:
+			this->CreateDamageFInputPralong(element);
+			break;
+		case 2:
+			this->CreateDamageFInputExp(element);
+			break;
+		case 3:
+			this->CreateDamageFInputArctan(element);
+			break;
+		default:
+			_error_("not implemented yet");
+	}
+
+	Input* damaged_input = NULL;
+	Input* damagef_input = element->GetInput(DamageFEnum); _assert_(damagef_input);
+	if(domaintype==Domain2DhorizontalEnum){
+		damaged_input = element->GetInput(DamageDbarEnum); _assert_(damaged_input);
+	}
+	else{
+		damaged_input = element->GetInput(DamageDEnum); _assert_(damaged_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		damaged_input->GetInputValue(&damage,gauss);
+		damagef_input->GetInputValue(&f,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			pe->values[i]+=Jdet*gauss->weight*(damage+dt*f)*basis[i];
+		}
+	}
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           DamageEvolutionAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,DamageDbarEnum);
+}/*}}}*/
+void           DamageEvolutionAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           DamageEvolutionAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Fetch dof list and allocate solution vector*/
+	int *doflist = NULL;
+	element->GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* newdamage = xNew<IssmDouble>(numnodes);
+
+	/*Get user-supplied max_damage: */
+	IssmDouble max_damage = element->FindParam(DamageMaxDamageEnum);
+
+	/*Use the dof list to index into the solution vector: */
+	for(int i=0;i<numnodes;i++){
+		newdamage[i]=solution[doflist[i]];
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(newdamage[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(newdamage[i])) _error_("Inf found in solution vector");
+		/*Enforce D < max_damage and D > 0 */
+		if(newdamage[i]>max_damage) newdamage[i]=max_damage;
+		else if(newdamage[i]<0.)    newdamage[i]=0.;
+	}
+
+	/*Get all inputs and parameters*/
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype==Domain2DhorizontalEnum){
+		element->AddInput(DamageDbarEnum,newdamage,element->GetElementType());
+	}
+	else{
+		element->AddInput(DamageDEnum,newdamage,element->GetElementType());
+	}
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(newdamage);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           DamageEvolutionAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
+
+/*Flux Correction Transport*/
+ElementMatrix* DamageEvolutionAnalysis::CreateFctKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	IssmDouble Jdet;
+	IssmDouble vx,vy;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int dim      = 2;
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(dim*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vxaverage_input=element->GetInput(VxEnum); _assert_(vxaverage_input);
+	Input* vyaverage_input=element->GetInput(VyEnum); _assert_(vyaverage_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				/*\phi_i v\cdot\nabla\phi_j*/
+				Ke->values[i*numnodes+j] += -gauss->weight*Jdet*basis[i]*(vx*dbasis[0*numnodes+j] + vy*dbasis[1*numnodes+j]);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementMatrix* DamageEvolutionAnalysis::CreateMassMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  D,Jdet;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Me     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		D=gauss->weight*Jdet;
+		for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Me->values[i*numnodes+j] += D*basis[i]*basis[j];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return Me;
+}/*}}}*/
+ElementVector* DamageEvolutionAnalysis::CreateFctPVector(Element* element){/*{{{*/
+
+	return this->CreatePVector(element);
+
+}/*}}}*/
+void           DamageEvolutionAnalysis::FctKMatrix(Matrix<IssmDouble>** pKff,Matrix<IssmDouble>** pKfs,FemModel* femmodel){/*{{{*/
+
+	/*Output*/
+	Matrix<IssmDouble>* Kff = NULL;
+	Matrix<IssmDouble>* Kfs = NULL;
+
+	/*Initialize Jacobian Matrix*/
+	AllocateSystemMatricesx(&Kff,&Kfs,NULL,NULL,femmodel);
+
+	/*Create and assemble matrix*/
+	for(Object* & object : femmodel->elements->objects){
+		Element*       element = xDynamicCast<Element*>(object);
+		ElementMatrix* Ke     = this->CreateFctKMatrix(element);
+		if(Ke) Ke->AddToGlobal(Kff,Kfs);
+		delete Ke;
+	}
+	Kff->Assemble();
+	Kfs->Assemble();
+
+	/*Assign output pointer*/
+	*pKff=Kff;
+	if(pKfs){
+		*pKfs=Kfs;
+	}
+	else{
+		delete Kfs;
+	}
+}/*}}}*/
+void           DamageEvolutionAnalysis::FctPVector(Vector<IssmDouble>** ppf,FemModel* femmodel){/*{{{*/
+
+	/*Output*/
+	Vector<IssmDouble>* pf = NULL;
+
+	/*Initialize P vector*/
+	AllocateSystemMatricesx(NULL,NULL,NULL,&pf,femmodel);
+
+	/*Create and assemble matrix*/
+	for(Object* & object : femmodel->elements->objects){
+		Element*       element = xDynamicCast<Element*>(object);
+		ElementVector* pe      = this->CreateFctPVector(element);
+		if(pe) pe->AddToGlobal(pf);
+		delete pe;
+	}
+	pf->Assemble();
+
+	/*Assign output pointer*/
+	*ppf=pf;
+}/*}}}*/
+void           DamageEvolutionAnalysis::MassMatrix(Matrix<IssmDouble>** pMff,FemModel* femmodel){/*{{{*/
+
+	/*Initialize Mass matrix*/
+	Matrix<IssmDouble> *Mff = NULL;
+	AllocateSystemMatricesx(&Mff,NULL,NULL,NULL,femmodel);
+
+	/*Create and assemble matrix*/
+	for(Object* & object : femmodel->elements->objects){
+		Element*       element = xDynamicCast<Element*>(object);
+		ElementMatrix* MLe     = this->CreateMassMatrix(element);
+		if(MLe){
+			MLe->AddToGlobal(Mff);
+		}
+		delete MLe;
+	}
+	Mff->Assemble();
+
+	/*Assign output pointer*/
+	*pMff=Mff;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/DamageEvolutionAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/DamageEvolutionAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/DamageEvolutionAnalysis.h	(revision 27955)
@@ -0,0 +1,46 @@
+/*! \file DamageEvolutionAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _DamageEvolutionAnalysis_
+#define _DamageEvolutionAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class DamageEvolutionAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		void           CreateDamageFInput(Element* element);
+		void           CreateDamageFInputArctan(Element* element);
+		void           CreateDamageFInputExp(Element* element);
+		void           CreateDamageFInputPralong(Element* element);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+
+		/*FCT*/
+		ElementMatrix* CreateFctKMatrix(Element* element);
+		ElementMatrix* CreateMassMatrix(Element* element);
+		ElementVector* CreateFctPVector(Element* element);
+		void           FctKMatrix(Matrix<IssmDouble>** pKff,Matrix<IssmDouble>** pKfs,FemModel* femmodel);
+		void           MassMatrix(Matrix<IssmDouble>** pMff,FemModel* femmodel);
+		void				FctPVector(Vector<IssmDouble>** ppf,FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/DebrisAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/DebrisAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/DebrisAnalysis.cpp	(revision 27955)
@@ -0,0 +1,783 @@
+#include "./DebrisAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../classes/Inputs/TransientInput.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../cores/cores.h"
+#include <math.h>
+
+#define FINITEELEMENT P1Enum
+#define EPS 1e-14
+
+/*Model processing*/
+void DebrisAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*add constraints*/
+	IoModelToConstraintsx(constraints,iomodel,"md.debris.spcthickness",DebrisAnalysisEnum,FINITEELEMENT);
+
+}/*}}}*/
+void DebrisAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Intermediaries*/
+	int penpair_ids[2];
+	int count=0;
+	int numvertex_pairing;
+
+	/*Create Penpair for vertex_pairing: */
+	IssmDouble *vertex_pairing=NULL;
+	IssmDouble *nodeonsurface=NULL;
+	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.debris.vertex_pairing");
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(&nodeonsurface,NULL,NULL,"md.mesh.vertexonsurface");
+	for(int i=0;i<numvertex_pairing;i++){
+
+		if(iomodel->my_vertices[reCast<int>(vertex_pairing[2*i+0])-1]){
+
+			/*In debugging mode, check that the second node is in the same cpu*/
+			_assert_(iomodel->my_vertices[reCast<int>(vertex_pairing[2*i+1])-1]);
+
+			/*Skip if one of the two is not on the bed*/
+			if(iomodel->domaintype!=Domain2DhorizontalEnum){
+				if(!(reCast<bool>(nodeonsurface[reCast<int>(vertex_pairing[2*i+0])-1])) || !(reCast<bool>(nodeonsurface[reCast<int>(vertex_pairing[2*i+1])-1]))) continue;
+			}
+
+			/*Get node ids*/
+			penpair_ids[0]=reCast<int>(vertex_pairing[2*i+0]);
+			penpair_ids[1]=reCast<int>(vertex_pairing[2*i+1]);
+
+			/*Create Load*/
+			loads->AddObject(new Penpair(count+1,&penpair_ids[0]));
+			count++;
+		}
+	}
+
+	/*free resources: */
+	iomodel->DeleteData(vertex_pairing,"md.debris.vertex_pairing");
+	iomodel->DeleteData(nodeonsurface,"md.mesh.vertexonsurface");
+}/*}}}*/
+void DebrisAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,DebrisAnalysisEnum,FINITEELEMENT,isamr);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+
+}/*}}}*/
+int  DebrisAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void DebrisAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Now, is the model 3d? otherwise, do nothing: */
+	if (iomodel->domaintype==Domain2DhorizontalEnum)return;
+
+	int smb_model;
+
+	/*Fetch data needed: */
+	iomodel->FindConstant(&smb_model,"md.smb.model");
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,FINITEELEMENT);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.debris",DebrisThicknessEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxDebrisEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyDebrisEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+	}
+
+	switch(smb_model){
+		case SMBforcingEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.mass_balance",SmbMassBalanceEnum,0.);
+			break;
+		default:
+			/*Nothing for now*/
+			;
+	}
+
+}/*}}}*/
+void DebrisAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int     numoutputs;
+	char**  requestedoutputs = NULL;
+
+	parameters->AddObject(iomodel->CopyConstantObject("md.debris.stabilization",DebrisStabilizationEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.debris.removalmodel",DebrisRemovalmodelEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.debris.displacementmodel",DebrisDisplacementmodelEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.debris.min_thickness",DebrisMinThicknessEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.debris.packingfraction",DebrisPackingFractionEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.debris.removal_slope_threshold",DebrisRemovalSlopeThresholdEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.debris.removal_stress_threshold",DebrisRemovalStressThresholdEnum));
+
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.debris.requested_outputs");
+	parameters->AddObject(new IntParam(DebrisNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(DebrisRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.debris.requested_outputs");
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           DebrisAnalysis::Core(FemModel* femmodel){/*{{{*/
+
+	//PreProcessing(femmodel);
+	//femmodel->parameters->SetParam(VxDebrisEnum,InputToExtrudeEnum);
+	//extrudefromtop_core(femmodel);
+	femmodel->SetCurrentConfiguration(DebrisAnalysisEnum);        
+	solutionsequence_linear(femmodel);
+	PostProcessing(femmodel);
+
+}/*}}}*/
+void           DebrisAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* DebrisAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* DebrisAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+	_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* DebrisAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int        stabilization,domaintype,dim;
+	IssmDouble Jdet,D_scalar,dt,h;
+	IssmDouble vel,vx,vy,dvxdx,dvydy;
+	IssmDouble yts=31536000.;
+	IssmDouble tau;
+	IssmDouble dvx[2],dvy[2];
+	Element*    topelement = NULL;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get top element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			topelement = element;
+			dim = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnSurface()) return NULL;
+			topelement = element->SpawnTopElement();
+			dim = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnSurface()) return NULL;
+			topelement = element->SpawnTopElement();
+			dim = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = topelement->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = topelement->NewElementMatrix(NoneApproximationEnum);
+	IssmDouble*   	basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble* 	dbasis = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*	D      = xNew<IssmDouble>(dim*dim);
+
+	/*Retrieve all inputs and parameters*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+	topelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	topelement->FindParam(&stabilization,DebrisStabilizationEnum);
+	Input* vx_input=topelement->GetInput(VxDebrisEnum); _assert_(vx_input);
+	Input* vy_input=NULL;
+	if(dim>1){vy_input = topelement->GetInput(VyDebrisEnum); _assert_(vy_input);}
+	h=topelement->CharacteristicLength();
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(2);
+	while(gauss->next()){
+
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		topelement->NodalFunctions(basis,gauss);
+		topelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		vx_input->GetInputValue(&vx,gauss);
+		if(dim==2) vy_input->GetInputValue(&vy,gauss);
+
+		D_scalar=gauss->weight*Jdet;
+		for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D_scalar*basis[i]*basis[j];
+
+		/*Advection terms*/
+		vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		D_scalar=dt*gauss->weight*Jdet;
+		if(dim==2){
+			vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+			dvxdx=dvx[0];
+			dvydy=dvy[1];
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					/*\phi_i \phi_j \nabla\cdot v*/
+					Ke->values[i*numnodes+j] += D_scalar*basis[i]*basis[j]*(dvxdx+dvydy);
+					/*\phi_i v\cdot\nabla\phi_j*/
+					Ke->values[i*numnodes+j] += D_scalar*basis[i]*(vx*dbasis[0*numnodes+j] + vy*dbasis[1*numnodes+j]);
+				}
+			}
+		}else{
+			dvxdx=dvx[0];
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += D_scalar*dvxdx*basis[i]*basis[j];
+					Ke->values[i*numnodes+j] += D_scalar*vx*dbasis[0*numnodes+j]*basis[i];
+				}
+			}
+		}
+
+		IssmDouble rho;
+		if(FINITEELEMENT==P1Enum){
+			rho=2.;
+		}else if(FINITEELEMENT==P2Enum){
+			rho=4.;
+		}
+
+		for(int i=0;i<(dim*dim);i++) D[i]=0.;
+		if(stabilization==1){
+			/*SSA*/
+			if(dim==1){
+				vx_input->GetInputValue(&vx,gauss);
+				D[0]=h/rho*fabs(vx);
+			}else{
+				vx_input->GetInputValue(&vx,gauss);
+				vy_input->GetInputValue(&vy,gauss);
+				vel=sqrt(vx*vx+vy*vy);
+				D[0*dim+0]=h/rho*fabs(vx);
+				D[1*dim+1]=h/rho*fabs(vy);
+			}
+		}else if(stabilization==2){  
+			/*Streamline upwinding*/
+			if(dim==1){
+				vx_input->GetInputValue(&vx,gauss);
+				vel=fabs(vx)+EPS;
+				D[0] = h/(rho*vel)*vx*vx;
+			}else{
+				vx_input->GetInputValue(&vx,gauss);
+				vy_input->GetInputValue(&vy,gauss);
+				vel=sqrt(vx*vx+vy*vy)+EPS;
+				D[0*dim+0]=h/(rho*vel)*vx*vx;
+				D[1*dim+0]=h/(rho*vel)*vy*vx;
+				D[0*dim+1]=h/(rho*vel)*vx*vy;
+				D[1*dim+1]=h/(rho*vel)*vy*vy;
+			}		
+		}else if(stabilization==3){  
+			/*SUPG*/
+			if(dim==1){
+				vx_input->GetInputValue(&vx,gauss);
+				tau=h/(rho*max(fabs(vx),EPS));
+			}else{
+				vx_input->GetInputValue(&vx,gauss);
+				vy_input->GetInputValue(&vy,gauss);
+				tau=h/(rho*sqrt(vx*vx+vy*vy)+EPS);
+			}
+		}
+
+		if(stabilization==1 || stabilization==2){
+			for(int i=0;i<dim*dim;i++) D[i]=D_scalar*D[i];
+			if(dim==2){
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j] += (
+								dbasis[0*numnodes+i] *(D[0*dim+0]*dbasis[0*numnodes+j] + D[0*dim+1]*dbasis[1*numnodes+j]) +
+								dbasis[1*numnodes+i] *(D[1*dim+0]*dbasis[0*numnodes+j] + D[1*dim+1]*dbasis[1*numnodes+j]));
+					}   
+				}
+			}else{
+				for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += dbasis[0*numnodes+i]*D[0]*dbasis[0*numnodes+j];
+			}
+		}else if(stabilization==3){ 
+			if(dim==1){
+				/*Mass matrix - part 2*/
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=gauss->weight*Jdet*tau*basis[j]*vx*dbasis[0*numnodes+i];
+					}
+				}
+				/*Mass matrix - part 3*/
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=gauss->weight*Jdet*tau*basis[j]*basis[i]*dvxdx;
+					}
+				}
+
+				/*Advection matrix - part 2, A*/
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=dt*gauss->weight*Jdet*tau*(vx*dbasis[0*numnodes+j])*(vx*dbasis[0*numnodes+i]);
+					}
+				}
+
+				/*Advection matrix - part 3, A*/
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=dt*gauss->weight*Jdet*tau*(vx*dbasis[0*numnodes+j])*(basis[i]*dvxdx);
+					}
+				}
+
+
+				/*Advection matrix - part 2, B*/
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=dt*gauss->weight*Jdet*tau*(basis[j]*dvxdx)*(vx*dbasis[0*numnodes+i]);
+					}
+				}
+
+				/*Advection matrix - part 3, B*/
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=dt*gauss->weight*Jdet*tau*(basis[j]*dvxdx)*(basis[i]*dvxdx);;
+					}
+				}
+			}else if(dim==2){
+				/*Mass matrix - part 2*/
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=gauss->weight*Jdet*tau*basis[j]*(vx*dbasis[0*numnodes+i]+vy*dbasis[1*numnodes+i]);
+					}
+				}
+				/*Mass matrix - part 3*/
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=gauss->weight*Jdet*tau*basis[j]*(basis[i]*dvxdx+basis[i]*dvydy);
+					}
+				}
+
+				/*Advection matrix - part 2, A*/
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=dt*gauss->weight*Jdet*tau*(vx*dbasis[0*numnodes+j]+vy*dbasis[1*numnodes+j])*(vx*dbasis[0*numnodes+i]+vy*dbasis[1*numnodes+i]);
+					}
+				}
+				/*Advection matrix - part 3, A*/
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=dt*gauss->weight*Jdet*tau*(vx*dbasis[0*numnodes+j]+vy*dbasis[1*numnodes+j])*(basis[i]*dvxdx+basis[i]*dvydy);
+					}
+				}
+
+				/*Advection matrix - part 2, B*/
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=dt*gauss->weight*Jdet*tau*(basis[j]*dvxdx+basis[j]*dvydy)*(vx*dbasis[0*numnodes+i]+vy*dbasis[1*numnodes+i]);
+					}
+				}
+				/*Advection matrix - part 3, B*/
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=dt*gauss->weight*Jdet*tau*(basis[j]*dvxdx+basis[j]*dvydy)*(basis[i]*dvxdx+basis[i]*dvydy);
+					}
+				}
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
+	return Ke;
+}/*}}}*/
+ElementVector* DebrisAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int	stabilization,dim,domaintype;
+	IssmDouble  Jdet,dt;
+	IssmDouble  smb,thickness,psi;
+	IssmDouble  vx,vy,vel,dvxdx,dvydy,h,tau,pf;
+	IssmDouble yts=31536000.;
+	IssmDouble  dvx[2],dvy[2];
+	IssmDouble* xyz_list = NULL;
+	Element*    topelement = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			topelement = element;
+			dim = 2; 
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnSurface()) return NULL;
+			topelement = element->SpawnTopElement();
+			dim = 1; 
+			break;
+		case Domain3DEnum:           
+			if(!element->IsOnSurface()) return NULL;
+			topelement = element->SpawnTopElement();
+			dim = 2; break;
+		default: 
+			_error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = topelement->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = topelement->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis= xNew<IssmDouble>(dim*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+	topelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	topelement->FindParam(&pf,DebrisPackingFractionEnum);
+	topelement->FindParam(&stabilization,DebrisStabilizationEnum);
+	Input* smb_input      	= topelement->GetInput(SmbMassBalanceEnum);  _assert_(smb_input);
+	Input* thickness_input  = topelement->GetInput(DebrisThicknessEnum); _assert_(thickness_input);
+	Input* vx_input  = topelement->GetInput(VxDebrisEnum);  _assert_(vx_input);
+	Input* vy_input=NULL;
+	if(dim==2){
+		vy_input=topelement->GetInput(VyDebrisEnum); _assert_(vy_input);
+	}
+	h=topelement->CharacteristicLength();
+
+	IssmDouble rho;
+	if(FINITEELEMENT==P1Enum){
+		rho=2.;
+	}else if(FINITEELEMENT==P2Enum){
+		rho=4.;
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(2);
+	while(gauss->next()){
+
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		topelement->NodalFunctions(basis,gauss);
+
+		smb_input->GetInputValue(&smb,gauss);
+		thickness_input->GetInputValue(&thickness,gauss);
+		if(smb>0.){
+			psi=thickness-0.*dt*smb*pf;
+		}else{
+			psi=thickness-dt*smb*pf;
+		}
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*psi*basis[i]; 
+
+		if(stabilization==3){
+			/*SUPG*/
+			topelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+			vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+			dvxdx=dvx[0];
+			if(dim==1){
+				vx_input->GetInputValue(&vx,gauss);
+				tau=h/(rho*max(fabs(vx),EPS));
+
+				/*Force vector - part 2*/
+				for(int i=0;i<numnodes;i++){
+					pe->values[i]+=Jdet*gauss->weight*psi*tau*vx*dbasis[0*numnodes+i];
+				}
+				/*Force vector - part 3*/
+				for(int i=0;i<numnodes;i++){
+					pe->values[i]+=Jdet*gauss->weight*psi*tau*basis[i]*dvxdx;
+				}
+
+			}else if(dim==2){
+				vx_input->GetInputValue(&vx,gauss);
+				vy_input->GetInputValue(&vy,gauss);
+				vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+				vel=sqrt(vx*vx+vy*vy);
+				dvydy=dvy[1];
+				tau=h/(rho*vel+EPS);
+
+				/*Force vector - part 2*/
+				for(int i=0;i<numnodes;i++){
+					pe->values[i]+=Jdet*gauss->weight*psi*tau*(vx*dbasis[0*numnodes+i]+vy*dbasis[1*numnodes+i]);
+				}
+				/*Force vector - part 3*/
+				for(int i=0;i<numnodes;i++){
+					pe->values[i]+=Jdet*gauss->weight*psi*tau*(basis[i]*dvxdx+basis[i]*dvydy);
+				}
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
+	return pe;
+}/*}}}*/
+void           DebrisAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void           DebrisAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           DebrisAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int *ddoflist=NULL;
+
+	int numnodes = element->GetNumberOfNodes();
+	IssmDouble* newthickness  = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	IssmDouble minthickness = element->FindParam(DebrisMinThicknessEnum);
+	element->GetDofListLocal(&ddoflist,NoneApproximationEnum,GsetEnum);
+
+	for(int i=0;i<numnodes;i++){
+		newthickness[i] = solution[ddoflist[i]];
+		if(xIsNan<IssmDouble>(newthickness[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(newthickness[i])) _error_("Inf found in solution vector");
+
+		// check for thickness<minthickness
+		if(newthickness[i]<minthickness) newthickness[i]=minthickness;
+	}
+
+	// update inputs
+	element->AddInput(DebrisThicknessEnum,newthickness,P1Enum);
+
+	// Free resources
+	xDelete<IssmDouble>(newthickness);
+	xDelete<int>(ddoflist);
+	//*/
+}/*}}}*/
+void           DebrisAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	//SetActiveNodesLSMx(femmodel);
+
+	// Update active elements based on ice levelset and ocean levelset*/
+	GetMaskOfIceVerticesLSMx(femmodel,false,true); //FIXME?
+	SetActiveNodesLSMx(femmodel,false,true); //FIXME?
+
+	/*Constrain all nodes that are grounded and unconstrain the ones that float*/
+	for(Object* & object : femmodel->elements->objects){
+		Element    *element  = xDynamicCast<Element*>(object);
+		int         numnodes  = element->GetNumberOfNodes();
+		IssmDouble *mask      = xNew<IssmDouble>(numnodes);
+		IssmDouble *ls_active = xNew<IssmDouble>(numnodes);
+
+		element->GetInputListOnNodes(&mask[0],MaskOceanLevelsetEnum);
+		element->GetInputListOnNodes(&ls_active[0],DebrisMaskNodeActivationEnum);
+
+		for(int in=0;in<numnodes;in++){
+			Node* node=element->GetNode(in);
+			if(mask[in]>0. && ls_active[in]==1.){
+				// Do nothing
+				node->Activate(); //Not sure if we need this!
+			}
+			else{
+				IssmDouble phi=0;
+				node->Deactivate();// Not sure if we need this
+				node->ApplyConstraint(0,phi);
+			}
+		}
+		xDelete<IssmDouble>(mask);
+		xDelete<IssmDouble>(ls_active);
+	}
+	//*/
+	return;	
+}/*}}}*/
+void           DebrisAnalysis::PostProcessing(FemModel* femmodel){/*{{{*/
+
+	if(VerboseSolution()) _printf0_("   Debris postprocessing\n");
+
+	/*Intermediaries*/
+	int removalmodel;
+	int k,numnodes;
+	int domaintype,dim;
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&removalmodel,DebrisRemovalmodelEnum);
+	Element* element= NULL;
+	Element*    topelement = NULL;
+
+	if(removalmodel==0){
+		// no removal, do nothing
+	}else{
+		// slope or driving stress removal
+
+		for(Object* & object : femmodel->elements->objects){
+			element=xDynamicCast<Element*>(object);
+
+			numnodes=element->GetNumberOfNodes();
+			element->FindParam(&domaintype,DomainTypeEnum);
+			IssmDouble* icethickness   = xNew<IssmDouble>(numnodes);
+			IssmDouble* debristhickness= xNew<IssmDouble>(numnodes);
+			IssmDouble* slopex	   = xNew<IssmDouble>(numnodes);
+			IssmDouble* slopey	   = xNew<IssmDouble>(numnodes); 
+			IssmDouble* onsurface	   = xNew<IssmDouble>(numnodes); 
+			IssmDouble* ls_active      = xNew<IssmDouble>(numnodes); 
+			element->GetInputListOnNodes(debristhickness,DebrisThicknessEnum);
+			element->GetInputListOnNodes(icethickness,ThicknessEnum);
+			element->GetInputListOnNodes(onsurface,MeshVertexonsurfaceEnum);
+			element->GetInputListOnNodes(ls_active,DebrisMaskNodeActivationEnum);
+
+			dim=1;
+			element->GetInputListOnNodes(slopex,SurfaceSlopeXEnum);
+			if(domaintype!=Domain2DverticalEnum){
+				element->GetInputListOnNodes(slopey,SurfaceSlopeYEnum);
+				dim=2;
+			}
+			IssmDouble slope,rad2deg=180./M_PI; //=57.2958
+			bool isminthicknessinelement=false;
+			bool remove_debris=false;
+			bool isactive=false;
+
+			IssmDouble iceminthickness=element->FindParam(MasstransportMinThicknessEnum);                        
+
+			switch(removalmodel){
+				case 1:{
+					       IssmDouble slope_threshold=element->FindParam(DebrisRemovalSlopeThresholdEnum);
+					       int kk=0;
+					       for(k=0; k<numnodes;k++){
+						       if(icethickness[k]<=(iceminthickness+0.00001)) isminthicknessinelement=true;
+						       if(icethickness[k]<=(iceminthickness+0.00001)) kk++;
+					       }
+					       isminthicknessinelement=true;
+					       if(kk<numnodes && isminthicknessinelement){
+						       for(k=0; k<numnodes;k++){
+							       slope=fabs(slopex[k]);
+							       if(dim==2) slope=pow(pow(slopex[k],2)+pow(slopey[k],2),0.5);
+							       //slope_mean=slope_mean+slope;
+							       if((atan(slope)*rad2deg)>slope_threshold) remove_debris=true;
+							       //if((atan(slope)*rad2deg)>slope_threshold) debristhickness[k]=0.;
+						       }
+						       //if((atan(slope_mean)*rad2deg)>slope_threshold) remove_debris=true;
+						       if(remove_debris){
+							       for(k=0; k<numnodes;k++){
+								       debristhickness[k]=0.;
+							       }
+						       }
+					       }
+					       element->AddInput(DebrisThicknessEnum,debristhickness,P1Enum);
+
+					       xDelete<IssmDouble>(debristhickness);
+					       xDelete<IssmDouble>(icethickness);
+					       xDelete<IssmDouble>(slopex);
+					       xDelete<IssmDouble>(slopey);
+					       break;
+				       }
+				case 2:{
+					       IssmDouble stress_threshold = element->FindParam(DebrisRemovalStressThresholdEnum);
+					       IssmDouble gravity = element->FindParam(ConstantsGEnum);
+					       IssmDouble stress,rhod=1900.;
+					       int kk=0;
+					       for(k=0; k<numnodes;k++){
+						       if(icethickness[k]<=(iceminthickness+0.00001)) isminthicknessinelement=true;
+						       if(icethickness[k]<=(iceminthickness+0.00001)) kk++;
+					       }
+					       isminthicknessinelement=true;
+					       if(kk<numnodes && isminthicknessinelement){
+						       //stress=0;
+						       IssmDouble stress_sum=0.;
+						       for(k=0; k<numnodes;k++){
+							       slope=fabs(slopex[k]);
+							       if(dim==2) slope=pow(pow(slopex[k],2)+pow(slopey[k],2),0.5);
+							       stress=rhod*gravity*debristhickness[k]*slope;//pow(slope*slope/(slope*slope+1),0.5);//sin(slope/rad2deg);
+							       //stress_sum=stress_sum+stress;
+							       if(stress>stress_threshold) remove_debris=true;
+							       //if(stress>stress_threshold) debristhickness[k]=0.;
+						       }
+						       //if((stress_sum/double(kk))>stress_threshold) remove_debris=true;
+						       if(remove_debris){
+							       for(k=0; k<numnodes;k++){
+								       debristhickness[k]=0.;
+							       }
+						       }
+					       }
+					       element->AddInput(DebrisThicknessEnum,debristhickness,P1Enum);
+
+					       xDelete<IssmDouble>(debristhickness);
+					       xDelete<IssmDouble>(icethickness);
+					       xDelete<IssmDouble>(slopex);
+					       xDelete<IssmDouble>(slopey);
+					       xDelete<IssmDouble>(ls_active);
+					       break;
+				       }
+				default: _error_("removalmodel "<<EnumToStringx(removalmodel)<<" not implemented yet");
+			}
+		}
+	}
+
+}/*}}}*/
+void DebrisAnalysis::PreProcessing(FemModel* femmodel){/*{{{*/
+
+	if(VerboseSolution()) _printf0_("   Debris preprocessing\n");
+
+	Element* element= NULL;
+	for(Object* & object : femmodel->elements->objects){
+		element=xDynamicCast<Element*>(object);
+
+		int numvertices = element->GetNumberOfVertices();
+
+		IssmDouble* vx = xNew<IssmDouble>(numvertices);
+		IssmDouble* debristhickness = xNew<IssmDouble>(numvertices);
+		IssmDouble* slopex         = xNew<IssmDouble>(numvertices);
+		IssmDouble* onsurface      = xNew<IssmDouble>(numvertices);
+		IssmDouble* icethickness      = xNew<IssmDouble>(numvertices);
+
+		element->GetInputListOnVertices(&debristhickness[0],DebrisThicknessEnum);
+		element->GetInputListOnVertices(&vx[0],VxDebrisEnum);
+		element->GetInputListOnVertices(&slopex[0],SurfaceSlopeXEnum);
+		element->GetInputListOnVertices(&onsurface[0],MeshVertexonsurfaceEnum);
+		element->GetInputListOnVertices(&icethickness[0],ThicknessEnum);
+
+		IssmDouble slope,rad2deg=180./M_PI; //=57.2958
+		IssmDouble vslipx,rhod=1900.;
+		IssmDouble gravity=element->FindParam(ConstantsGEnum);
+		IssmDouble slope_threshold=element->FindParam(DebrisRemovalSlopeThresholdEnum);
+		IssmDouble iceminthickness=element->FindParam(MasstransportMinThicknessEnum);
+
+		int step;
+		IssmDouble dt, maxv;
+		IssmDouble yts=31536000.;
+		femmodel->parameters->FindParam(&step,StepEnum);
+		femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+
+		bool isminthicknessinelement=false;
+		for(int i=0;i<numvertices;i++){
+			if(icethickness[i]<=(iceminthickness+0.01)) isminthicknessinelement=true;
+		}
+		if(isminthicknessinelement){
+			//do nothing
+			for(int i=0;i<numvertices;i++){
+				if(icethickness[i]<=(iceminthickness+0.01)) vx[i]=0.;
+			}
+		}else{
+			for(int i=0;i<numvertices;i++){
+				//if(onsurface[i]>.5){
+				slope=fabs(slopex[i]);
+				//if((atan(slope)*rad2deg)>25.){
+				//if(debristhickness[i]>0.01){
+				vslipx=1.0/yts;
+				//maxv=10.0/2./dt;
+				//vslipx=-slope_threshold*rhod*gravity*debristhickness[i]*slopex[i]/yts;
+				vx[i]=vx[i]+vslipx;
+				//debristhickness[i]=debristhickness[i];
+				//if(vx[i]>maxv) vx[i]=maxv;
+				//}
+				//} 
+				//}
+			}
+		}
+		//if(step%100==0)   
+		element->AddInput(VxDebrisEnum,vx,P1Enum);
+
+		/* Free resources */
+		xDelete<IssmDouble>(debristhickness);
+		xDelete<IssmDouble>(icethickness);
+		xDelete<IssmDouble>(vx);
+		xDelete<IssmDouble>(slopex);
+		xDelete<IssmDouble>(onsurface);
+	}
+
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/DebrisAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/DebrisAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/DebrisAnalysis.h	(revision 27955)
@@ -0,0 +1,36 @@
+/*! \file DebrisAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _DebrisAnalysis_
+#define _DebrisAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class DebrisAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+		void           PostProcessing(FemModel* femmodel);
+		void           PreProcessing(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/DepthAverageAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/DepthAverageAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/DepthAverageAnalysis.cpp	(revision 27955)
@@ -0,0 +1,155 @@
+#include "./DepthAverageAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void DepthAverageAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void DepthAverageAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void DepthAverageAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	::CreateNodes(nodes,iomodel,DepthAverageAnalysisEnum,P1Enum);
+
+}/*}}}*/
+int  DepthAverageAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void DepthAverageAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	if(iomodel->domaintype==Domain2DverticalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+	}
+}/*}}}*/
+void DepthAverageAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           DepthAverageAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           DepthAverageAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* DepthAverageAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* DepthAverageAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* DepthAverageAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	int         dim;
+	IssmDouble  Jdet,D,dt=1.e+9;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(dim*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		/*vertical diffusion*/
+		D=gauss->weight*Jdet*dt;
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += D*dbasis[(dim-1)*numnodes+i]*dbasis[(dim-1)*numnodes+j];
+			}
+		}
+
+		/*Next value (Transient)*/
+		D=gauss->weight*Jdet;
+		for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D*basis[j]*basis[i];
+	} 
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* DepthAverageAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         input_enum;
+	IssmDouble  Jdet,scalar,value;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe     = element->NewElementVector();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&input_enum,InputToDepthaverageInEnum);
+	Input* input = element->GetInput(input_enum); _assert_(input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(3);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		/* Build transient now */
+		input->GetInputValue(&value, gauss);
+		scalar=value*Jdet*gauss->weight;
+		for(int i=0;i<numnodes;i++) pe->values[i]+=scalar*basis[i];
+
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           DepthAverageAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           DepthAverageAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           DepthAverageAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int inputenum;
+	element->FindParam(&inputenum,InputToDepthaverageOutEnum);
+	element->InputUpdateFromSolutionOneDof(solution,inputenum);
+}/*}}}*/
+void           DepthAverageAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/DepthAverageAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/DepthAverageAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/DepthAverageAnalysis.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file DepthAverageAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _DepthAverageAnalysis_
+#define _DepthAverageAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class DepthAverageAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/EnthalpyAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/EnthalpyAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/EnthalpyAnalysis.cpp	(revision 27955)
@@ -0,0 +1,1604 @@
+#include "./EnthalpyAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../cores/cores.h"
+
+/*Model processing*/
+void EnthalpyAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*Intermediary*/
+	int        count;
+	int        M,N;
+	bool       spcpresent = false;
+	int        finiteelement;
+	IssmDouble heatcapacity;
+	IssmDouble referencetemperature;
+
+	/*Output*/
+	IssmDouble *spcvector  = NULL;
+	IssmDouble *spcvectorstatic  = NULL;
+	IssmDouble* times=NULL;
+	IssmDouble* values=NULL;
+	IssmDouble* issurface = NULL;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&heatcapacity,"md.materials.heatcapacity");
+	iomodel->FindConstant(&referencetemperature,"md.constants.referencetemperature");
+	iomodel->FindConstant(&finiteelement,"md.thermal.fe");
+
+	/*return if 2d mesh*/
+	if(iomodel->domaintype==Domain2DhorizontalEnum) return;
+
+	/*Fetch data: */
+	iomodel->FetchData(&issurface,&M,&N,"md.mesh.vertexonsurface"); _assert_(N>0); _assert_(M==iomodel->numberofvertices);
+	iomodel->FetchData(&spcvector,&M,&N,"md.thermal.spctemperature");
+	iomodel->FetchData(&spcvectorstatic,&M,&N,"md.thermal.spctemperature");
+
+	/*Specific case for PDD, we want the constaints to be updated by the PDD scheme itself*/
+	bool isdynamic = false;
+	if (iomodel->solution_enum==TransientSolutionEnum){
+		int smb_model;
+		iomodel->FindConstant(&smb_model,"md.smb.model");
+		if(smb_model==SMBpddEnum)				isdynamic=true;
+		if(smb_model==SMBd18opddEnum)			isdynamic=true;
+		if(smb_model==SMBpddSicopolisEnum)	isdynamic=true;
+	}
+
+	/*Convert spcs from temperatures to enthalpy*/
+	_assert_(N>0); _assert_(M>=iomodel->numberofvertices);
+	for(int i=0;i<iomodel->numberofvertices;i++){
+		for(int j=0;j<N;j++){
+			if (isdynamic){
+				if (issurface[i]==1){
+					spcvector[i*N+j] = heatcapacity*(spcvector[i*N+j]-referencetemperature);
+					spcvectorstatic[i*N+j] = NAN;
+				}
+				else{
+					spcvector[i*N+j] = NAN;
+					spcvectorstatic[i*N+j] = heatcapacity*(spcvectorstatic[i*N+j]-referencetemperature);
+				}
+			}
+			else{
+				spcvector[i*N+j] = heatcapacity*(spcvector[i*N+j]-referencetemperature);
+			}
+		}
+	}
+
+	if(isdynamic){
+		IoModelToDynamicConstraintsx(constraints,iomodel,spcvector,iomodel->numberofvertices,1,EnthalpyAnalysisEnum,finiteelement);
+		IoModelToConstraintsx(constraints,iomodel,spcvectorstatic,M,N,EnthalpyAnalysisEnum,finiteelement);
+	}
+	else{
+		IoModelToConstraintsx(constraints,iomodel,spcvector,M,N,EnthalpyAnalysisEnum,finiteelement);
+	}
+
+	/*Free resources:*/
+	iomodel->DeleteData(spcvector,"md.thermal.spctemperature");
+	iomodel->DeleteData(spcvectorstatic,"md.thermal.spctemperature");
+	iomodel->DeleteData(issurface,"md.mesh.vertexonsurface");
+	xDelete<IssmDouble>(times);
+	xDelete<IssmDouble>(values);
+}/*}}}*/
+void EnthalpyAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*No loads */
+}/*}}}*/
+void EnthalpyAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	int finiteelement;
+	iomodel->FindConstant(&finiteelement,"md.thermal.fe");
+
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,EnthalpyAnalysisEnum,finiteelement);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  EnthalpyAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void EnthalpyAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	bool dakota_analysis,ismovingfront,isenthalpy;
+	int  basalforcing_model,materialstype;
+
+	/*Now, is the model 3d? otherwise, do nothing: */
+	if(iomodel->domaintype==Domain2DhorizontalEnum)return;
+
+	/*Is enthalpy requested?*/
+	iomodel->FindConstant(&isenthalpy,"md.thermal.isenthalpy");
+	if(!isenthalpy) return;
+
+	/*Fetch data needed: */
+	iomodel->FetchData(3,"md.initialization.temperature","md.initialization.waterfraction","md.initialization.pressure");
+
+	/*Finite element type*/
+	int finiteelement;
+	iomodel->FindConstant(&finiteelement,"md.thermal.fe");
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+
+	iomodel->FindConstant(&dakota_analysis,"md.qmu.isdakota");
+	iomodel->FindConstant(&ismovingfront,"md.transient.ismovingfront");
+	iomodel->FindConstant(&materialstype,"md.materials.type");
+
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.pressure",PressureEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.temperature",TemperatureEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.waterfraction",WaterfractionEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.enthalpy",EnthalpyEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.watercolumn",WatercolumnEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vz",VzEnum);
+	InputUpdateFromConstantx(inputs,elements,0.,VxMeshEnum);
+	InputUpdateFromConstantx(inputs,elements,0.,VyMeshEnum);
+	InputUpdateFromConstantx(inputs,elements,0.,VzMeshEnum);
+	if(ismovingfront){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum); // required for updating active nodes
+	}
+
+	/*Basal forcings variables*/
+	iomodel->FindConstant(&basalforcing_model,"md.basalforcings.model");
+	switch(basalforcing_model){
+		case MantlePlumeGeothermalFluxEnum:
+			break;
+		default:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.geothermalflux",BasalforcingsGeothermalfluxEnum);
+			break;
+	}
+
+	/*Rheology type*/
+	iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_B",MaterialsRheologyBEnum);
+	switch(materialstype){
+		case MatenhancediceEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_n",MaterialsRheologyNEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_E",MaterialsRheologyEEnum);
+			break;
+		case MatdamageiceEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_n",MaterialsRheologyNEnum);
+			break;
+		case MatestarEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_Ec",MaterialsRheologyEcEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_Es",MaterialsRheologyEsEnum);
+			break;
+		case MaticeEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_n",MaterialsRheologyNEnum);
+			break;
+		default:
+			_error_("not supported");
+	}
+
+	/*Friction*/
+	FrictionUpdateInputs(elements, inputs, iomodel);
+
+	/*Free data: */
+	iomodel->DeleteData(3,"md.initialization.temperature","md.initialization.waterfraction","md.initialization.pressure");
+
+}/*}}}*/
+void EnthalpyAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int     numoutputs;
+	char**  requestedoutputs = NULL;
+
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.stabilization",ThermalStabilizationEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.maxiter",ThermalMaxiterEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.reltol",ThermalReltolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.isenthalpy",ThermalIsenthalpyEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.isdynamicbasalspc",ThermalIsdynamicbasalspcEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.isdrainicecolumn",ThermalIsdrainicecolumnEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.watercolumn_upperlimit",ThermalWatercolumnUpperlimitEnum));
+
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.thermal.requested_outputs");
+	parameters->AddObject(new IntParam(ThermalNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(ThermalRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.thermal.requested_outputs");
+
+	/*Friction*/
+	FrictionUpdateParameters(parameters, iomodel);
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           EnthalpyAnalysis::ApplyBasalConstraints(IssmDouble* local_spc,Element* element){/*{{{*/
+
+	/* Do not check if ice in element, this may lead to inconsistencies between cpu partitions */
+	/* Only update constraints at the base. */
+	if(!(element->IsOnBase())) return;
+
+	/*Intermediary*/
+	bool        isdynamicbasalspc;
+	int         numindices;
+	int        *indices = NULL;
+	IssmDouble	pressure;
+
+	/*Check wether dynamic basal boundary conditions are activated */
+	element->FindParam(&isdynamicbasalspc,ThermalIsdynamicbasalspcEnum);
+	if(!isdynamicbasalspc) return;
+
+	/*Get parameters and inputs: */
+	Input* pressure_input = element->GetInput(PressureEnum); _assert_(pressure_input);
+
+	/*Fetch indices of basal & surface nodes for this finite element*/
+	Penta *penta =  (Penta *) element; // TODO: add Basal-/SurfaceNodeIndices to element.h, and change this to Element*
+	penta->BasalNodeIndices(&numindices,&indices,element->GetElementType());
+
+	GaussPenta* gauss=new GaussPenta();
+	for(int i=0;i<numindices;i++){
+		gauss->GaussNode(element->GetElementType(),indices[i]);
+
+		pressure_input->GetInputValue(&pressure,gauss);
+
+		/*apply or release spc*/
+		Node* node=element->GetNode(indices[i]);
+		if(!node->IsActive()) continue;
+		if(local_spc[node->Lid()]==1.){
+			pressure_input->GetInputValue(&pressure, gauss);
+			node->ApplyConstraint(0,PureIceEnthalpy(element,pressure));
+		}
+		else {
+			node->DofInFSet(0);
+		}
+	}
+
+	/*Free resources:*/
+	xDelete<int>(indices);
+	delete gauss;
+}/*}}}*/
+void           EnthalpyAnalysis::ComputeBasalMeltingrate(FemModel* femmodel){/*{{{*/
+	/*Compute basal melting rates: */
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		ComputeBasalMeltingrate(element);
+	}
+
+	/*extrude inputs*/
+	femmodel->parameters->SetParam(BasalforcingsGroundediceMeltingRateEnum,InputToExtrudeEnum);
+	extrudefrombase_core(femmodel);
+}/*}}}*/
+void           EnthalpyAnalysis::ComputeBasalMeltingrate(Element* element){/*{{{*/
+	/*Calculate the basal melt rates of the enthalpy model after Aschwanden 2012*/
+	/* melting rate is positive when melting, negative when refreezing*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return;
+
+	/* Only compute melt rates at the base of grounded ice*/
+	if(!element->IsOnBase() || element->IsAllFloating()) return;
+
+	/* Intermediaries */
+	bool			converged;
+	const int   dim=3;
+	int         i,is,state;
+	int			nodedown,nodeup,numnodes,numsegments;
+	int			enthalpy_enum;
+	IssmDouble  vec_heatflux[dim],normal_base[dim],d1enthalpy[dim],d1pressure[dim];
+	IssmDouble  basalfriction,alpha2,geothermalflux,heatflux;
+	IssmDouble  dt,yts;
+	IssmDouble  melting_overshoot,lambda;
+	IssmDouble  vx,vy,vz;
+	IssmDouble *xyz_list      = NULL;
+	IssmDouble *xyz_list_base = NULL;
+	int        *pairindices   = NULL;
+
+	/*Fetch parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->GetInputValue(&converged,ConvergedEnum);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&yts, ConstantsYtsEnum);
+
+	if(dt==0. && !converged) enthalpy_enum=EnthalpyPicardEnum;
+	else enthalpy_enum=EnthalpyEnum;
+
+	IssmDouble latentheat = element->FindParam(MaterialsLatentheatEnum);
+	IssmDouble rho_ice    = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble rho_water  = element->FindParam(MaterialsRhoFreshwaterEnum);
+	IssmDouble beta		 = element->FindParam(MaterialsBetaEnum);
+	IssmDouble kappa		 = EnthalpyDiffusionParameterVolume(element,enthalpy_enum);     _assert_(kappa>=0.);
+	IssmDouble kappa_mix;
+
+	/*retrieve inputs*/
+	Input* enthalpy_input       = element->GetInput(enthalpy_enum);                   _assert_(enthalpy_input);
+	Input* pressure_input       = element->GetInput(PressureEnum);                    _assert_(pressure_input);
+	Input* geothermalflux_input = element->GetInput(BasalforcingsGeothermalfluxEnum); _assert_(geothermalflux_input);
+
+	/*Build friction element, needed later: */
+	Friction* friction=new Friction(element,3);
+
+	/******** MELTING RATES  ************************************//*{{{*/
+	element->NormalBase(&normal_base[0],xyz_list_base);
+	element->VerticalSegmentIndicesBase(&pairindices,&numsegments);
+	IssmDouble* meltingrate_enthalpy = xNew<IssmDouble>(numsegments);
+	IssmDouble* heating = xNew<IssmDouble>(numsegments);
+
+	numnodes=element->GetNumberOfNodes();
+	IssmDouble* enthalpies = xNew<IssmDouble>(numnodes);
+	IssmDouble* pressures = xNew<IssmDouble>(numnodes);
+	IssmDouble* watercolumns = xNew<IssmDouble>(numnodes);
+	IssmDouble* basalmeltingrates = xNew<IssmDouble>(numnodes);
+	element->GetInputListOnNodes(enthalpies,enthalpy_enum);
+	element->GetInputListOnNodes(pressures,PressureEnum);
+	element->GetInputListOnNodes(watercolumns,WatercolumnEnum);
+	element->GetInputListOnNodes(basalmeltingrates,BasalforcingsGroundediceMeltingRateEnum);
+
+	IssmDouble watercolumnupperlimit = element->FindParam(ThermalWatercolumnUpperlimitEnum);
+
+	Gauss* gauss=element->NewGauss();
+	for(is=0;is<numsegments;is++){
+		nodedown = pairindices[is*2+0];
+		nodeup   = pairindices[is*2+1];
+		gauss->GaussNode(element->GetElementType(),nodedown);
+
+		state=GetThermalBasalCondition(element, enthalpies[nodedown], enthalpies[nodeup], pressures[nodedown], pressures[nodeup], watercolumns[nodedown], basalmeltingrates[nodedown]);
+		switch (state) {
+			case 0:
+				// cold, dry base: apply basal surface forcing
+				for(i=0;i<3;i++) vec_heatflux[i]=0.;
+				break;
+			case 1: case 2: case 3:
+				// case 1 : cold, wet base: keep at pressure melting point
+				// case 2: temperate, thin refreezing base: release spc
+				// case 3: temperate, thin melting base: set spc
+				enthalpy_input->GetInputDerivativeValue(&d1enthalpy[0],xyz_list,gauss);
+				for(i=0;i<3;i++) vec_heatflux[i]=-kappa*d1enthalpy[i];
+				break;
+			case 4:
+				// temperate, thick melting base: set grad H*n=0
+				kappa_mix=GetWetIceConductivity(element, enthalpies[nodedown], pressures[nodedown]);
+				pressure_input->GetInputDerivativeValue(&d1pressure[0],xyz_list,gauss);
+				for(i=0;i<3;i++) vec_heatflux[i]=kappa_mix*beta*d1pressure[i];
+				break;
+			default:
+				_printf0_("	unknown thermal basal state found!");
+		}
+		if(state==0) meltingrate_enthalpy[is]=0.;
+		else{
+			/*heat flux along normal*/
+			heatflux=0.;
+			for(i=0;i<3;i++) heatflux+=(vec_heatflux[i])*normal_base[i];
+
+			/*basal friction*/
+			friction->GetAlpha2(&alpha2,gauss);
+			friction->GetBasalSlidingSpeeds(&vx, &vy, &vz, gauss);
+			basalfriction=alpha2*(vx*vx + vy*vy + vz*vz);
+			geothermalflux_input->GetInputValue(&geothermalflux,gauss);
+			/* -Mb= Fb-(q-q_geo)/((1-w)*L*rho), and (1-w)*rho=rho_ice, cf Aschwanden 2012, eqs.1, 2, 66*/
+			heating[is]=(heatflux+basalfriction+geothermalflux);
+			meltingrate_enthalpy[is]=heating[is]/(latentheat*rho_ice); // m/s water equivalent
+		}
+	}/*}}}*/
+
+	/******** UPDATE MELTINGRATES AND WATERCOLUMN **************//*{{{*/
+	for(is=0;is<numsegments;is++){
+		nodedown = pairindices[is*2+0];
+		nodeup   = pairindices[is*2+1];
+		if(dt!=0.){
+			if(watercolumns[nodedown]+meltingrate_enthalpy[is]*dt<0.){	// prevent too much freeze on
+				lambda = -watercolumns[nodedown]/(dt*meltingrate_enthalpy[is]); _assert_(lambda>=0.); _assert_(lambda<1.);
+				watercolumns[nodedown]=0.;
+				basalmeltingrates[nodedown]=lambda*meltingrate_enthalpy[is]; // restrict freeze on only to size of watercolumn
+				enthalpies[nodedown]+=(1.-lambda)*dt/yts*meltingrate_enthalpy[is]*latentheat*rho_ice; // use rest of energy to cool down base: dE=L*m, m=(1-lambda)*meltingrate*rho_ice
+			}
+			else{
+				basalmeltingrates[nodedown]=meltingrate_enthalpy[is];
+				watercolumns[nodedown]+=dt*meltingrate_enthalpy[is];
+			}
+			if(watercolumns[nodedown]>watercolumnupperlimit) watercolumns[nodedown]=watercolumnupperlimit;
+		}
+		else{
+			basalmeltingrates[nodedown]=meltingrate_enthalpy[is];
+			if(watercolumns[nodedown]+meltingrate_enthalpy[is]<0.)
+				watercolumns[nodedown]=0.;
+			else
+				watercolumns[nodedown]+=meltingrate_enthalpy[is];
+		}
+		basalmeltingrates[nodedown]*=rho_water/rho_ice; // convert meltingrate from water to ice equivalent
+		_assert_(watercolumns[nodedown]>=0.);
+	}/*}}}*/
+
+	/*feed updated variables back into model*/
+	int finite_element = element->GetElementType(); if(finite_element==P1Enum) finite_element = P1DGEnum;
+	if(dt!=0.){
+		element->AddInput(enthalpy_enum,enthalpies,finite_element);
+		element->AddInput(WatercolumnEnum,watercolumns,finite_element);
+	}
+	element->AddInput(BasalforcingsGroundediceMeltingRateEnum,basalmeltingrates,P1DGEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	delete friction;
+	xDelete<int>(pairindices);
+	xDelete<IssmDouble>(enthalpies);
+	xDelete<IssmDouble>(pressures);
+	xDelete<IssmDouble>(watercolumns);
+	xDelete<IssmDouble>(basalmeltingrates);
+	xDelete<IssmDouble>(meltingrate_enthalpy);
+	xDelete<IssmDouble>(heating);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_base);
+}/*}}}*/
+void           EnthalpyAnalysis::Core(FemModel* femmodel){/*{{{*/
+
+	IssmDouble dt;
+	bool isdynamicbasalspc;
+
+	femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+	femmodel->parameters->FindParam(&isdynamicbasalspc,ThermalIsdynamicbasalspcEnum);
+
+	if(VerboseSolution()) _printf0_("   computing enthalpy\n");
+	femmodel->SetCurrentConfiguration(EnthalpyAnalysisEnum);
+	if((dt>0.) && isdynamicbasalspc)	UpdateBasalConstraints(femmodel);
+	solutionsequence_thermal_nonlinear(femmodel);
+
+	/*transfer enthalpy to enthalpy picard for the next step: */
+	InputDuplicatex(femmodel,EnthalpyEnum,EnthalpyPicardEnum);
+
+	PostProcessing(femmodel);
+
+}/*}}}*/
+void           EnthalpyAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* EnthalpyAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* EnthalpyAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* EnthalpyAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixVolume(element);
+	ElementMatrix* Ke2=CreateKMatrixShelf(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+}/*}}}*/
+ElementMatrix* EnthalpyAnalysis::CreateKMatrixVolume(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int         stabilization;
+	IssmDouble  Jdet,dt,u,v,w,um,vm,wm,vel;
+	IssmDouble  h,hx,hy,hz,vx,vy,vz;
+	IssmDouble  tau_parameter,diameter;
+	IssmDouble  tau_parameter_anisotropic[2],tau_parameter_hor,tau_parameter_ver;
+	IssmDouble  D_scalar;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes    = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke       = element->NewElementMatrix();
+	IssmDouble*    basis    = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis   = xNew<IssmDouble>(3*numnodes);
+	IssmDouble     K[3][3];
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&stabilization,ThermalStabilizationEnum);
+	IssmDouble  rho_water           = element->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble  rho_ice             = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  gravity             = element->FindParam(ConstantsGEnum);
+	IssmDouble  heatcapacity        = element->FindParam(MaterialsHeatcapacityEnum);
+	IssmDouble  thermalconductivity = element->FindParam(MaterialsThermalconductivityEnum);
+	Input* vx_input  = element->GetInput(VxEnum);     _assert_(vx_input);
+	Input* vy_input  = element->GetInput(VyEnum);     _assert_(vy_input);
+	Input* vz_input  = element->GetInput(VzEnum);     _assert_(vz_input);
+	Input* vxm_input = element->GetInput(VxMeshEnum); _assert_(vxm_input);
+	Input* vym_input = element->GetInput(VyMeshEnum); _assert_(vym_input);
+	Input* vzm_input = element->GetInput(VzMeshEnum); _assert_(vzm_input);
+
+	/*Enthalpy diffusion parameter*/
+	IssmDouble kappa=this->EnthalpyDiffusionParameterVolume(element,EnthalpyPicardEnum); _assert_(kappa>=0.);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(4);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		D_scalar=gauss->weight*Jdet;
+		if(dt!=0.) D_scalar=D_scalar*dt;
+
+		/*Conduction: */
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += D_scalar*kappa/rho_ice*(
+							dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i] + dbasis[2*numnodes+j]*dbasis[2*numnodes+i]
+							);
+			}
+		}
+
+		/*Advection: */
+		vx_input->GetInputValue(&u,gauss); vxm_input->GetInputValue(&um,gauss); vx=u-um;
+		vy_input->GetInputValue(&v,gauss); vym_input->GetInputValue(&vm,gauss); vy=v-vm;
+		vz_input->GetInputValue(&w,gauss); vzm_input->GetInputValue(&wm,gauss); vz=w-wm;
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += D_scalar*(
+							vx*dbasis[0*numnodes+j]*basis[i] + vy*dbasis[1*numnodes+j]*basis[i] +vz*dbasis[2*numnodes+j]*basis[i]
+							);
+			}
+		}
+
+		/*Transient: */
+		if(dt!=0.){
+			D_scalar=gauss->weight*Jdet;
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += D_scalar*basis[j]*basis[i];
+				}
+			}
+			D_scalar=D_scalar*dt;
+		}
+
+		/*Artificial diffusivity*/
+		if(stabilization==1){
+			element->ElementSizes(&hx,&hy,&hz);
+			vel=sqrt(vx*vx + vy*vy + vz*vz)+1.e-14;
+			h=sqrt( pow(hx*vx/vel,2) + pow(hy*vy/vel,2) + pow(hz*vz/vel,2));
+			K[0][0]=h/(2.*vel)*fabs(vx*vx);  K[0][1]=h/(2.*vel)*fabs(vx*vy); K[0][2]=h/(2.*vel)*fabs(vx*vz);
+			K[1][0]=h/(2.*vel)*fabs(vy*vx);  K[1][1]=h/(2.*vel)*fabs(vy*vy); K[1][2]=h/(2.*vel)*fabs(vy*vz);
+			K[2][0]=h/(2.*vel)*fabs(vz*vx);  K[2][1]=h/(2.*vel)*fabs(vz*vy); K[2][2]=h/(2.*vel)*fabs(vz*vz);
+			for(int i=0;i<3;i++) for(int j=0;j<3;j++) K[i][j] = D_scalar*K[i][j];
+
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += (
+								dbasis[0*numnodes+i] *(K[0][0]*dbasis[0*numnodes+j] + K[0][1]*dbasis[1*numnodes+j]+ K[0][2]*dbasis[2*numnodes+j]) +
+								dbasis[1*numnodes+i] *(K[1][0]*dbasis[0*numnodes+j] + K[1][1]*dbasis[1*numnodes+j]+ K[1][2]*dbasis[2*numnodes+j]) +
+								dbasis[2*numnodes+i] *(K[2][0]*dbasis[0*numnodes+j] + K[2][1]*dbasis[1*numnodes+j]+ K[2][2]*dbasis[2*numnodes+j])
+								);
+				}
+			}
+		}
+		/*SUPG*/
+		else if(stabilization==2){
+			element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+			diameter=element->MinEdgeLength(xyz_list);
+			tau_parameter=element->StabilizationParameter(u-um,v-vm,w-wm,diameter,kappa/rho_ice);
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j]+=tau_parameter*D_scalar*
+					  ((u-um)*dbasis[0*numnodes+i]+(v-vm)*dbasis[1*numnodes+i]+(w-wm)*dbasis[2*numnodes+i])*
+					  ((u-um)*dbasis[0*numnodes+j]+(v-vm)*dbasis[1*numnodes+j]+(w-wm)*dbasis[2*numnodes+j]);
+				}
+			}
+			if(dt!=0.){
+				D_scalar=gauss->weight*Jdet;
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=tau_parameter*D_scalar*basis[j]*((u-um)*dbasis[0*numnodes+i]+(v-vm)*dbasis[1*numnodes+i]+(w-wm)*dbasis[2*numnodes+i]);
+					}
+				}
+			}
+		}
+		/*anisotropic SUPG*/
+		else if(stabilization==3){
+			element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+			element->ElementSizes(&hx,&hy,&hz);
+			element->StabilizationParameterAnisotropic(&tau_parameter_anisotropic[0],u-um,v-vm,w-wm,hx,hy,hz,kappa/rho_ice);
+			tau_parameter_hor=tau_parameter_anisotropic[0];
+			tau_parameter_ver=tau_parameter_anisotropic[1];
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j]+=D_scalar*
+						(sqrt(tau_parameter_hor)*(u-um)*dbasis[0*numnodes+i]+sqrt(tau_parameter_hor)*(v-vm)*dbasis[1*numnodes+i]+sqrt(tau_parameter_ver)*(w-wm)*dbasis[2*numnodes+i])*
+						(sqrt(tau_parameter_hor)*(u-um)*dbasis[0*numnodes+j]+sqrt(tau_parameter_hor)*(v-vm)*dbasis[1*numnodes+j]+sqrt(tau_parameter_ver)*(w-wm)*dbasis[2*numnodes+j]);
+				}
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementMatrix* EnthalpyAnalysis::CreateKMatrixShelf(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Initialize Element matrix and return if necessary*/
+	if(!element->IsOnBase() || !element->IsAllFloating()) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  dt,Jdet,D;
+	IssmDouble *xyz_list_base = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize vectors*/
+	ElementMatrix* Ke    = element->NewElementMatrix();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	IssmDouble  gravity             = element->FindParam(ConstantsGEnum);
+	IssmDouble  rho_water           = element->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble  rho_ice             = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  heatcapacity        = element->FindParam(MaterialsHeatcapacityEnum);
+	IssmDouble  mixed_layer_capacity= element->FindParam(MaterialsMixedLayerCapacityEnum);
+	IssmDouble  thermal_exchange_vel= element->FindParam(MaterialsThermalExchangeVelocityEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(4);
+	while(gauss->next()){
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		D=gauss->weight*Jdet*rho_water*mixed_layer_capacity*thermal_exchange_vel/(heatcapacity*rho_ice);
+		if(reCast<bool,IssmDouble>(dt)) D=dt*D;
+		for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D*basis[i]*basis[j];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list_base);
+	return Ke;
+}/*}}}*/
+ElementVector* EnthalpyAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorVolume(element);
+	ElementVector* pe2=CreatePVectorSheet(element);
+	ElementVector* pe3=CreatePVectorShelf(element);
+	ElementVector* pe =new ElementVector(pe1,pe2,pe3);
+
+	/*clean-up and return*/
+	delete pe1;
+	delete pe2;
+	delete pe3;
+	return pe;
+}/*}}}*/
+ElementVector* EnthalpyAnalysis::CreatePVectorVolume(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int         i, stabilization;
+	IssmDouble  Jdet,phi,dt;
+	IssmDouble  enthalpy, Hpmp;
+	IssmDouble  enthalpypicard, d1enthalpypicard[3];
+	IssmDouble  pressure, d1pressure[3], d2pressure;
+	IssmDouble  waterfractionpicard;
+	IssmDouble  kappa,tau_parameter,diameter,hx,hy,hz,kappa_w;
+	IssmDouble  tau_parameter_anisotropic[2],tau_parameter_hor,tau_parameter_ver;
+	IssmDouble  u,v,w;
+	IssmDouble  scalar_def, scalar_sens ,scalar_transient;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble  d1H_d1P, d1P2;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes    = element->GetNumberOfNodes();
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize Element vector*/
+	ElementVector* pe             = element->NewElementVector();
+	IssmDouble*    basis          = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis         = xNew<IssmDouble>(3*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	IssmDouble  rho_ice             = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  heatcapacity        = element->FindParam(MaterialsHeatcapacityEnum);
+	IssmDouble  thermalconductivity = element->FindParam(MaterialsThermalconductivityEnum);
+	IssmDouble  temperateiceconductivity = element->FindParam(MaterialsTemperateiceconductivityEnum);
+	IssmDouble  beta                = element->FindParam(MaterialsBetaEnum);
+	IssmDouble  latentheat          = element->FindParam(MaterialsLatentheatEnum);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&stabilization,ThermalStabilizationEnum);
+	Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input=element->GetInput(VzEnum); _assert_(vz_input);
+	Input* enthalpypicard_input=element->GetInput(EnthalpyPicardEnum); _assert_(enthalpypicard_input);
+	Input* pressure_input=element->GetInput(PressureEnum); _assert_(pressure_input);
+	Input* enthalpy_input=NULL;
+	if(dt>0.){
+		enthalpy_input = element->GetInput(EnthalpyEnum); _assert_(enthalpy_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(4);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		/*viscous dissipation*/
+		element->ViscousHeating(&phi,xyz_list,gauss,vx_input,vy_input,vz_input);
+
+		scalar_def=phi/rho_ice*Jdet*gauss->weight;
+		if(dt!=0.) scalar_def=scalar_def*dt;
+
+		for(i=0;i<numnodes;i++) pe->values[i]+=scalar_def*basis[i];
+
+		/*sensible heat flux in temperate ice*/
+		enthalpypicard_input->GetInputValue(&enthalpypicard,gauss);
+		pressure_input->GetInputValue(&pressure,gauss);
+		Hpmp=this->PureIceEnthalpy(element, pressure);
+
+		if(enthalpypicard>=Hpmp){
+			enthalpypicard_input->GetInputDerivativeValue(&d1enthalpypicard[0],xyz_list,gauss);
+			pressure_input->GetInputDerivativeValue(&d1pressure[0],xyz_list,gauss);
+			d2pressure=0.; // for linear elements, 2nd derivative is zero
+
+			d1H_d1P=0.;
+			for(i=0;i<3;i++) d1H_d1P+=d1enthalpypicard[i]*d1pressure[i];
+			d1P2=0.;
+			for(i=0;i<3;i++) d1P2+=pow(d1pressure[i],2.);
+
+			scalar_sens=-beta*((temperateiceconductivity - thermalconductivity)/latentheat*(d1H_d1P + beta*heatcapacity*d1P2))/rho_ice;
+			if(dt!=0.) scalar_sens=scalar_sens*dt;
+			for(i=0;i<numnodes;i++) pe->values[i]+=scalar_sens*basis[i];
+		}
+
+		/* Build transient now */
+		if(dt>0.){
+			enthalpy_input->GetInputValue(&enthalpy, gauss);
+			scalar_transient=enthalpy*Jdet*gauss->weight;
+			for(i=0;i<numnodes;i++) pe->values[i]+=scalar_transient*basis[i];
+		}
+
+		/* SUPG */
+		if(stabilization==2){
+			element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+			diameter=element->MinEdgeLength(xyz_list);
+			kappa=this->EnthalpyDiffusionParameterVolume(element,EnthalpyPicardEnum); _assert_(kappa>=0.);
+			vx_input->GetInputValue(&u,gauss);
+			vy_input->GetInputValue(&v,gauss);
+			vz_input->GetInputValue(&w,gauss);
+			tau_parameter=element->StabilizationParameter(u,v,w,diameter,kappa/rho_ice);
+
+			for(i=0;i<numnodes;i++) pe->values[i]+=tau_parameter*scalar_def*(u*dbasis[0*numnodes+i]+v*dbasis[1*numnodes+i]+w*dbasis[2*numnodes+i]);
+
+			if(dt!=0.){
+				for(i=0;i<numnodes;i++) pe->values[i]+=tau_parameter*scalar_transient*(u*dbasis[0*numnodes+i]+v*dbasis[1*numnodes+i]+w*dbasis[2*numnodes+i]);
+			}
+		}
+		/* anisotropic SUPG */
+		else if(stabilization==3){
+			element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+			element->ElementSizes(&hx,&hy,&hz);
+			kappa=this->EnthalpyDiffusionParameterVolume(element,EnthalpyPicardEnum); _assert_(kappa>=0.);
+			vx_input->GetInputValue(&u,gauss);
+			vy_input->GetInputValue(&v,gauss);
+			vz_input->GetInputValue(&w,gauss);
+			element->StabilizationParameterAnisotropic(&tau_parameter_anisotropic[0],u,v,w,hx,hy,hz,kappa/rho_ice);
+			tau_parameter_hor=tau_parameter_anisotropic[0];
+			tau_parameter_ver=tau_parameter_anisotropic[1];
+
+			for(i=0;i<numnodes;i++) pe->values[i]+=scalar_def*(tau_parameter_hor*u*dbasis[0*numnodes+i]+tau_parameter_hor*v*dbasis[1*numnodes+i]+tau_parameter_ver*w*dbasis[2*numnodes+i]);
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return pe;
+
+}/*}}}*/
+ElementVector* EnthalpyAnalysis::CreatePVectorSheet(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/* implementation of the basal condition decision chart of Aschwanden 2012, Fig.5 */
+	if(!element->IsOnBase() || element->IsAllFloating()) return NULL;
+
+	bool converged, isdynamicbasalspc;
+	int i, state;
+	int enthalpy_enum;
+	IssmDouble  dt,Jdet,scalar;
+	IssmDouble	enthalpy, enthalpyup, pressure, pressureup, watercolumn, meltingrate;
+	IssmDouble	vx,vy,vz;
+	IssmDouble  alpha2,basalfriction,geothermalflux,heatflux;
+	IssmDouble *xyz_list_base = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&isdynamicbasalspc,ThermalIsdynamicbasalspcEnum);
+	element->GetInputValue(&converged,ConvergedEnum);
+	if(dt==0. && !converged) enthalpy_enum=EnthalpyPicardEnum; // use enthalpy from last iteration
+	else enthalpy_enum=EnthalpyEnum; // use enthalpy from last time step
+	Input* enthalpy_input		 = element->GetInput(enthalpy_enum);					 _assert_(enthalpy_input);
+	Input* pressure_input		 = element->GetInput(PressureEnum);							 _assert_(pressure_input);
+	Input* watercolumn_input	 = element->GetInput(WatercolumnEnum);							 _assert_(watercolumn_input);
+	Input* meltingrate_input	 = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);							 _assert_(meltingrate_input);
+	Input* geothermalflux_input = element->GetInput(BasalforcingsGeothermalfluxEnum); _assert_(geothermalflux_input);
+	IssmDouble  rho_ice			 = element->FindParam(MaterialsRhoIceEnum);
+
+	/*Build friction element, needed later: */
+	Friction* friction=new Friction(element,3);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(4);
+	Gauss* gaussup=element->NewGaussTop(4);
+	while(gauss->next() && gaussup->next()){
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		if(isdynamicbasalspc){
+			enthalpy_input->GetInputValue(&enthalpy,gauss);
+			enthalpy_input->GetInputValue(&enthalpyup,gaussup);
+			pressure_input->GetInputValue(&pressure,gauss);
+			pressure_input->GetInputValue(&pressureup,gaussup);
+			watercolumn_input->GetInputValue(&watercolumn,gauss);
+			meltingrate_input->GetInputValue(&meltingrate,gauss);
+			state=GetThermalBasalCondition(element, enthalpy, enthalpyup, pressure, pressureup, watercolumn, meltingrate);
+		}
+		else
+			state=0;
+
+		switch (state) {
+			case 0: case 1: case 2: case 3:
+				// cold, dry base; cold, wet base; refreezing temperate base; thin temperate base:
+				// Apply basal surface forcing.
+				// Interpolated values of enthalpy on gauss nodes may indicate cold base,
+				// although one node might have become temperate. So keep heat flux switched on.
+				geothermalflux_input->GetInputValue(&geothermalflux,gauss);
+				friction->GetAlpha2(&alpha2,gauss);
+				friction->GetBasalSlidingSpeeds(&vx, &vy, &vz, gauss);
+				basalfriction=alpha2*(vx*vx+vy*vy+vz*vz);
+				heatflux=(basalfriction+geothermalflux)/(rho_ice);
+				scalar=gauss->weight*Jdet*heatflux;
+				if(dt!=0.) scalar=dt*scalar;
+				for(i=0;i<numnodes;i++)
+					pe->values[i]+=scalar*basis[i];
+				break;
+			case 4:
+				// temperate, thick melting base: set grad H*n=0
+				for(i=0;i<numnodes;i++)
+					pe->values[i]+=0.;
+				break;
+			default:
+				_printf0_("	unknown thermal basal state found!");
+		}
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	delete gaussup;
+	delete friction;
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list_base);
+	return pe;
+
+}/*}}}*/
+ElementVector* EnthalpyAnalysis::CreatePVectorShelf(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnBase() || !element->IsAllFloating()) return NULL;
+
+	IssmDouble  Hpmp,dt,Jdet,scalar_ocean,pressure;
+	IssmDouble *xyz_list_base = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input*      pressure_input=element->GetInput(PressureEnum); _assert_(pressure_input);
+	IssmDouble  gravity             = element->FindParam(ConstantsGEnum);
+	IssmDouble  rho_water           = element->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble  rho_ice             = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  heatcapacity        = element->FindParam(MaterialsHeatcapacityEnum);
+	IssmDouble  mixed_layer_capacity= element->FindParam(MaterialsMixedLayerCapacityEnum);
+	IssmDouble  thermal_exchange_vel= element->FindParam(MaterialsThermalExchangeVelocityEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(4);
+	while(gauss->next()){
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		pressure_input->GetInputValue(&pressure,gauss);
+		Hpmp=element->PureIceEnthalpy(pressure);
+
+		scalar_ocean=gauss->weight*Jdet*rho_water*mixed_layer_capacity*thermal_exchange_vel*Hpmp/(heatcapacity*rho_ice);
+		if(reCast<bool,IssmDouble>(dt)) scalar_ocean=dt*scalar_ocean;
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=scalar_ocean*basis[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list_base);
+	return pe;
+}/*}}}*/
+void           EnthalpyAnalysis::DrainWaterfraction(FemModel* femmodel){/*{{{*/
+	/*Drain excess water fraction in ice column: */
+	ComputeWaterfractionDrainage(femmodel);
+	DrainageUpdateWatercolumn(femmodel);
+	DrainageUpdateEnthalpy(femmodel);
+}/*}}}*/
+void				EnthalpyAnalysis::ComputeWaterfractionDrainage(FemModel* femmodel){/*{{{*/
+
+	int k,numnodes;
+	IssmDouble dt;
+	Element* element= NULL;
+
+	femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+
+	for(Object* & object : femmodel->elements->objects){
+		element=xDynamicCast<Element*>(object);
+		numnodes=element->GetNumberOfNodes();
+		IssmDouble* waterfractions= xNew<IssmDouble>(numnodes);
+		IssmDouble* drainage= xNew<IssmDouble>(numnodes);
+
+		element->GetInputListOnNodes(waterfractions,WaterfractionEnum);
+		for(k=0; k<numnodes;k++){
+			drainage[k]=DrainageFunctionWaterfraction(waterfractions[k], dt);
+		}
+		int finite_element = element->GetElementType(); if(finite_element==P1Enum) finite_element = P1DGEnum;
+		element->AddInput(WaterfractionDrainageEnum,drainage,finite_element);
+
+		xDelete<IssmDouble>(waterfractions);
+		xDelete<IssmDouble>(drainage);
+	}
+}/*}}}*/
+void				EnthalpyAnalysis::DrainageUpdateWatercolumn(FemModel* femmodel){/*{{{*/
+
+	int k,numnodes, numbasalnodes;
+	IssmDouble dt;
+	int* basalnodeindices=NULL;
+	Element* element= NULL;
+
+	femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+
+	/*depth-integrate the drained water fraction */
+	femmodel->parameters->SetParam(WaterfractionDrainageEnum,InputToDepthaverageInEnum);
+	femmodel->parameters->SetParam(WaterfractionDrainageIntegratedEnum,InputToDepthaverageOutEnum);
+	depthaverage_core(femmodel);
+	femmodel->parameters->SetParam(WaterfractionDrainageIntegratedEnum,InputToExtrudeEnum);
+	extrudefrombase_core(femmodel);
+	/*multiply depth-average by ice thickness*/
+	for(Object* & object : femmodel->elements->objects){
+		element=xDynamicCast<Element*>(object);
+		numnodes=element->GetNumberOfNodes();
+		IssmDouble* drainage_int= xNew<IssmDouble>(numnodes);
+		IssmDouble* thicknesses= xNew<IssmDouble>(numnodes);
+
+		element->GetInputListOnNodes(drainage_int,WaterfractionDrainageIntegratedEnum);
+		element->GetInputListOnNodes(thicknesses,ThicknessEnum);
+		for(k=0;k<numnodes;k++){
+			drainage_int[k]*=thicknesses[k];
+		}
+		int finite_element = element->GetElementType(); if(finite_element==P1Enum) finite_element = P1DGEnum;
+		element->AddInput(WaterfractionDrainageIntegratedEnum, drainage_int,finite_element);
+
+		xDelete<IssmDouble>(drainage_int);
+		xDelete<IssmDouble>(thicknesses);
+	}
+
+	/*update water column*/
+	for(Object* & object : femmodel->elements->objects){
+		element=xDynamicCast<Element*>(object);
+		/* Check if ice in element */
+		if(!element->IsIceInElement()) continue;
+		if(!element->IsOnBase()) continue;
+
+		numnodes=element->GetNumberOfNodes();
+		IssmDouble* watercolumn= xNew<IssmDouble>(numnodes);
+		IssmDouble* drainage_int= xNew<IssmDouble>(numnodes);
+		element->GetInputListOnNodes(watercolumn,WatercolumnEnum);
+		element->GetInputListOnNodes(drainage_int,WaterfractionDrainageIntegratedEnum);
+
+		element->BasalNodeIndices(&numbasalnodes,&basalnodeindices,element->GetElementType());
+		for(k=0;k<numbasalnodes;k++){
+			watercolumn[basalnodeindices[k]]+=dt*drainage_int[basalnodeindices[k]];
+		}
+		int finite_element = element->GetElementType(); if(finite_element==P1Enum) finite_element = P1DGEnum;
+		element->AddInput(WatercolumnEnum, watercolumn,finite_element);
+
+		xDelete<IssmDouble>(watercolumn);
+		xDelete<IssmDouble>(drainage_int);
+		xDelete<int>(basalnodeindices);
+	}
+}/*}}}*/
+void				EnthalpyAnalysis::DrainageUpdateEnthalpy(FemModel* femmodel){/*{{{*/
+
+	int k,numnodes;
+	IssmDouble dt;
+	Element* element= NULL;
+	femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+
+	for(Object* & object : femmodel->elements->objects){
+		element=xDynamicCast<Element*>(object);
+		numnodes=element->GetNumberOfNodes();
+		IssmDouble* enthalpies= xNew<IssmDouble>(numnodes);
+		IssmDouble* pressures= xNew<IssmDouble>(numnodes);
+		IssmDouble* temperatures= xNew<IssmDouble>(numnodes);
+		IssmDouble* waterfractions= xNew<IssmDouble>(numnodes);
+		IssmDouble* drainage= xNew<IssmDouble>(numnodes);
+
+		element->GetInputListOnNodes(pressures,PressureEnum);
+		element->GetInputListOnNodes(temperatures,TemperatureEnum);
+		element->GetInputListOnNodes(waterfractions,WaterfractionEnum);
+		element->GetInputListOnNodes(drainage,WaterfractionDrainageEnum);
+
+		for(k=0;k<numnodes;k++){
+			if(dt==0.)
+				waterfractions[k]-=drainage[k];
+			else
+				waterfractions[k]-=dt*drainage[k];
+
+			element->ThermalToEnthalpy(&enthalpies[k], temperatures[k], waterfractions[k], pressures[k]);
+		}
+		int finite_element = element->GetElementType(); if(finite_element==P1Enum) finite_element = P1DGEnum;
+		element->AddInput(WaterfractionEnum,waterfractions,finite_element);
+		element->AddInput(EnthalpyEnum,enthalpies,finite_element);
+
+		xDelete<IssmDouble>(enthalpies);
+		xDelete<IssmDouble>(pressures);
+		xDelete<IssmDouble>(temperatures);
+		xDelete<IssmDouble>(waterfractions);
+		xDelete<IssmDouble>(drainage);
+	}
+}/*}}}*/
+IssmDouble     EnthalpyAnalysis::EnthalpyDiffusionParameter(Element* element,IssmDouble enthalpy,IssmDouble pressure){/*{{{*/
+
+	IssmDouble heatcapacity             = element->FindParam(MaterialsHeatcapacityEnum);
+	IssmDouble temperateiceconductivity = element->FindParam(MaterialsTemperateiceconductivityEnum);
+	IssmDouble thermalconductivity      = element->FindParam(MaterialsThermalconductivityEnum);
+
+	if(enthalpy < PureIceEnthalpy(element,pressure))
+		return thermalconductivity/heatcapacity;
+	else
+		return temperateiceconductivity/heatcapacity;
+}/*}}}*/
+IssmDouble     EnthalpyAnalysis::EnthalpyDiffusionParameterVolume(Element* element,int enthalpy_enum){/*{{{*/
+
+	int         iv;
+	IssmDouble  lambda;                   /* fraction of cold ice    */
+	IssmDouble  kappa,kappa_c,kappa_t; /* enthalpy conductivities */
+	IssmDouble  Hc,Ht;
+
+	/*Get pressures and enthalpies on vertices*/
+	int         numvertices = element->GetNumberOfVertices();
+	int         effectiveconductivity_averaging;
+	IssmDouble* pressures   = xNew<IssmDouble>(numvertices);
+	IssmDouble* enthalpies  = xNew<IssmDouble>(numvertices);
+	IssmDouble* PIE         = xNew<IssmDouble>(numvertices);
+	IssmDouble* dHpmp       = xNew<IssmDouble>(numvertices);
+	element->GetInputListOnVertices(pressures,PressureEnum);
+	element->GetInputListOnVertices(enthalpies,enthalpy_enum);
+	element->FindParam(&effectiveconductivity_averaging,MaterialsEffectiveconductivityAveragingEnum);
+
+	for(iv=0;iv<numvertices;iv++){
+		PIE[iv]   = PureIceEnthalpy(element,pressures[iv]);
+		dHpmp[iv] = enthalpies[iv]-PIE[iv];
+	}
+
+	bool allequalsign = true;
+	if(dHpmp[0]<0.){
+		for(iv=1; iv<numvertices;iv++) allequalsign=(allequalsign && (dHpmp[iv]<0.));
+	}
+	else{
+		for(iv=1; iv<numvertices;iv++) allequalsign=(allequalsign && (dHpmp[iv]>=0.));
+	}
+
+	if(allequalsign){
+		kappa = EnthalpyDiffusionParameter(element,enthalpies[0],pressures[0]);
+	}
+	else{
+		kappa_c = EnthalpyDiffusionParameter(element,PureIceEnthalpy(element,0.)-1.,0.);
+		kappa_t = EnthalpyDiffusionParameter(element,PureIceEnthalpy(element,0.)+1.,0.);
+
+		Hc=0.; Ht=0.;
+		for(iv=0; iv<numvertices;iv++){
+			if(enthalpies[iv]<PIE[iv])
+			 Hc+=(PIE[iv]-enthalpies[iv]);
+			else
+			 Ht+=(enthalpies[iv]-PIE[iv]);
+		}
+		_assert_((Hc+Ht)>0.);
+		lambda = Hc/(Hc+Ht);
+		_assert_(lambda>=0.);
+		_assert_(lambda<=1.);
+
+		if(effectiveconductivity_averaging==0){
+			/* return arithmetic mean (volume average) of thermal conductivities, weighted by fraction of cold/temperate ice */
+			kappa=kappa_c*lambda+(1.-lambda)*kappa_t;
+		}
+		else if(effectiveconductivity_averaging==1){
+			/* return harmonic mean (reciprocal avarage) of thermal conductivities, weighted by fraction of cold/temperate ice, cf Patankar 1980, pp44 */
+			kappa=kappa_c*kappa_t/(lambda*kappa_t+(1.-lambda)*kappa_c);
+		}
+		else if(effectiveconductivity_averaging==2){
+			/* return geometric mean (power law) of thermal conductivities, weighted by fraction of cold/temperate ice */
+			kappa=pow(kappa_c,lambda)*pow(kappa_t,1.-lambda);
+		}
+		else{
+			_error_("effectiveconductivity_averaging not supported yet");
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(PIE);
+	xDelete<IssmDouble>(dHpmp);
+	xDelete<IssmDouble>(pressures);
+	xDelete<IssmDouble>(enthalpies);
+	return kappa;
+}/*}}}*/
+void           EnthalpyAnalysis::GetBasalConstraints(Vector<IssmDouble>* vec_spc,Element* element){/*{{{*/
+
+	/*Intermediary*/
+	bool        isdynamicbasalspc;
+	IssmDouble	dt;
+
+	/*Check wether dynamic basal boundary conditions are activated */
+	element->FindParam(&isdynamicbasalspc,ThermalIsdynamicbasalspcEnum);
+	if(!isdynamicbasalspc) return;
+
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	if(dt==0.){
+		GetBasalConstraintsSteadystate(vec_spc,element);
+	}
+	else{
+		GetBasalConstraintsTransient(vec_spc,element);
+	}
+}/*}}}*/
+void           EnthalpyAnalysis::GetBasalConstraintsSteadystate(Vector<IssmDouble>* vec_spc,Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return;
+
+	/* Only update constraints at the base.
+	 * Floating ice is not affected by basal BC decision chart. */
+	if(!(element->IsOnBase()) || element->IsAllFloating()) return;
+
+	/*Intermediary*/
+	int         numindices, numindicesup, state;
+	int        *indices = NULL, *indicesup = NULL;
+	IssmDouble	enthalpy, enthalpyup, pressure, pressureup, watercolumn, meltingrate;
+
+	/*Get parameters and inputs: */
+	Input* enthalpy_input		 = element->GetInput(EnthalpyPicardEnum);					 _assert_(enthalpy_input);
+	Input* pressure_input		 = element->GetInput(PressureEnum);							 _assert_(pressure_input);
+	Input* watercolumn_input	 = element->GetInput(WatercolumnEnum);							 _assert_(watercolumn_input);
+	Input* meltingrate_input	 = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);							 _assert_(meltingrate_input);
+
+	/*Fetch indices of basal & surface nodes for this finite element*/
+	Penta *penta =  (Penta *) element; // TODO: add Basal-/SurfaceNodeIndices to element.h, and change this to Element*
+	penta->BasalNodeIndices(&numindices,&indices,element->GetElementType());
+	penta->SurfaceNodeIndices(&numindicesup,&indicesup,element->GetElementType());	_assert_(numindices==numindicesup);
+
+	GaussPenta* gauss=new GaussPenta();
+	GaussPenta* gaussup=new GaussPenta();
+	for(int i=0;i<numindices;i++){
+		gauss->GaussNode(element->GetElementType(),indices[i]);
+		gaussup->GaussNode(element->GetElementType(),indicesup[i]);
+
+		enthalpy_input->GetInputValue(&enthalpy,gauss);
+		enthalpy_input->GetInputValue(&enthalpyup,gaussup);
+		pressure_input->GetInputValue(&pressure,gauss);
+		pressure_input->GetInputValue(&pressureup,gaussup);
+		watercolumn_input->GetInputValue(&watercolumn,gauss);
+		meltingrate_input->GetInputValue(&meltingrate,gauss);
+
+		state=GetThermalBasalCondition(element, enthalpy, enthalpyup, pressure, pressureup, watercolumn, meltingrate);
+		switch (state) {
+			case 0:
+				// cold, dry base: apply basal surface forcing
+				vec_spc->SetValue(element->nodes[i]->Pid(),0.,INS_VAL);
+				break;
+			case 1:
+				// cold, wet base: keep at pressure melting point
+				vec_spc->SetValue(element->nodes[i]->Pid(),1.,INS_VAL);
+				break;
+			case 2:
+				// temperate, thin refreezing base:
+				vec_spc->SetValue(element->nodes[i]->Pid(),1.,INS_VAL);
+				break;
+			case 3:
+				// temperate, thin melting base: set spc
+				vec_spc->SetValue(element->nodes[i]->Pid(),1.,INS_VAL);
+				break;
+			case 4:
+				// temperate, thick melting base:
+				vec_spc->SetValue(element->nodes[i]->Pid(),1.,INS_VAL);
+				break;
+			default:
+				_printf0_("	unknown thermal basal state found!");
+		}
+	}
+
+	/*Free resources:*/
+	xDelete<int>(indices);
+	xDelete<int>(indicesup);
+	delete gauss;
+	delete gaussup;
+}/*}}}*/
+void           EnthalpyAnalysis::GetBasalConstraintsTransient(Vector<IssmDouble>* vec_spc,Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return;
+
+	/* Only update constraints at the base.
+	 * Floating ice is not affected by basal BC decision chart.*/
+	if(!(element->IsOnBase()) || element->IsAllFloating()) return;
+
+	/*Intermediary*/
+	int         numindices, numindicesup, state;
+	int        *indices = NULL, *indicesup = NULL;
+	IssmDouble	enthalpy, enthalpyup, pressure, pressureup, watercolumn, meltingrate;
+
+	/*Get parameters and inputs: */
+	Input* enthalpy_input    = element->GetInput(EnthalpyEnum);                            _assert_(enthalpy_input); //TODO: check EnthalpyPicard?
+	Input* pressure_input    = element->GetInput(PressureEnum);                            _assert_(pressure_input);
+	Input* watercolumn_input = element->GetInput(WatercolumnEnum);                         _assert_(watercolumn_input);
+	Input* meltingrate_input = element->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(meltingrate_input);
+
+	/*Fetch indices of basal & surface nodes for this finite element*/
+	Penta *penta =  (Penta *) element; // TODO: add Basal-/SurfaceNodeIndices to element.h, and change this to Element*
+	penta->BasalNodeIndices(&numindices,&indices,element->GetElementType());
+	penta->SurfaceNodeIndices(&numindicesup,&indicesup,element->GetElementType());	_assert_(numindices==numindicesup);
+
+	GaussPenta* gauss=new GaussPenta();
+	GaussPenta* gaussup=new GaussPenta();
+
+	for(int i=0;i<numindices;i++){
+		gauss->GaussNode(element->GetElementType(),indices[i]);
+		gaussup->GaussNode(element->GetElementType(),indicesup[i]);
+
+		enthalpy_input->GetInputValue(&enthalpy,gauss);
+		enthalpy_input->GetInputValue(&enthalpyup,gaussup);
+		pressure_input->GetInputValue(&pressure,gauss);
+		pressure_input->GetInputValue(&pressureup,gaussup);
+		watercolumn_input->GetInputValue(&watercolumn,gauss);
+		meltingrate_input->GetInputValue(&meltingrate,gauss);
+
+		state=GetThermalBasalCondition(element, enthalpy, enthalpyup, pressure, pressureup, watercolumn, meltingrate);
+
+		switch (state) {
+			case 0:
+				// cold, dry base: apply basal surface forcing
+				vec_spc->SetValue(element->nodes[i]->Pid(),0.,INS_VAL);
+				break;
+			case 1:
+				// cold, wet base: keep at pressure melting point
+				vec_spc->SetValue(element->nodes[i]->Pid(),1.,INS_VAL);
+				break;
+			case 2:
+				// temperate, thin refreezing base: release spc
+				vec_spc->SetValue(element->nodes[i]->Pid(),0.,INS_VAL);
+				break;
+			case 3:
+				// temperate, thin melting base: set spc
+				vec_spc->SetValue(element->nodes[i]->Pid(),1.,INS_VAL);
+				break;
+			case 4:
+				// temperate, thick melting base: set grad H*n=0
+				vec_spc->SetValue(element->nodes[i]->Pid(),0.,INS_VAL);
+				break;
+			default:
+				_printf0_("	unknown thermal basal state found!");
+		}
+
+	}
+
+	/*Free resources:*/
+	xDelete<int>(indices);
+	xDelete<int>(indicesup);
+	delete gauss;
+	delete gaussup;
+}/*}}}*/
+void           EnthalpyAnalysis::GetBConduct(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3 B4 B5 B6] where Bi is of size 5*1.
+	 * For node i, Bi' can be expressed in the actual coordinate system
+	 * by:
+	 *       Bi_conduct=[ dh/dx ]
+	 *                  [ dh/dy ]
+	 *                  [ dh/dz ]
+	 * where h is the interpolation function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 3x(1*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(3*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		B[numnodes*0+i] = dbasis[0*numnodes+i];
+		B[numnodes*1+i] = dbasis[1*numnodes+i];
+		B[numnodes*2+i] = dbasis[2*numnodes+i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           EnthalpyAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,EnthalpyEnum);
+}/*}}}*/
+int            EnthalpyAnalysis::GetThermalBasalCondition(Element* element, IssmDouble enthalpy, IssmDouble enthalpyup, IssmDouble pressure, IssmDouble pressureup, IssmDouble watercolumn, IssmDouble meltingrate){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return -1;
+
+	/* Only update Constraints at the base of grounded ice*/
+	if(!(element->IsOnBase())) return -1;
+
+	/*Intermediary*/
+	int state=-1;
+	IssmDouble	dt;
+
+	/*Get parameters and inputs: */
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+
+	if(enthalpy<PureIceEnthalpy(element,pressure)){
+		if(watercolumn<=0.) state=0; // cold, dry base
+		else state=1; // cold, wet base (refreezing)
+	}
+	else{
+		if(enthalpyup<PureIceEnthalpy(element,pressureup)){
+			if((dt==0.) && (meltingrate<0.)) state=2;	// refreezing temperate base (non-physical, only for steadystate solver)
+			else	state=3; // temperate base, but no temperate layer
+		}
+		else state=4; // temperate layer with positive thickness
+	}
+
+	_assert_(state>=0);
+	return state;
+}/*}}}*/
+IssmDouble     EnthalpyAnalysis::GetWetIceConductivity(Element* element, IssmDouble enthalpy, IssmDouble pressure){/*{{{*/
+
+	IssmDouble temperature, waterfraction;
+	IssmDouble kappa_w = 0.6; // thermal conductivity of water (in W/m/K)
+	IssmDouble kappa_i = element->FindParam(MaterialsThermalconductivityEnum);
+	element->EnthalpyToThermal(&temperature, &waterfraction, enthalpy, pressure);
+
+	return (1.-waterfraction)*kappa_i + waterfraction*kappa_w;
+}/*}}}*/
+void           EnthalpyAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           EnthalpyAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	bool        converged;
+	int         i,rheology_law;
+	IssmDouble  B_average,s_average,T_average=0.,P_average=0.;
+	int        *doflist   = NULL;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes    = element->GetNumberOfNodes();
+
+	/*Fetch dof list and allocate solution vector*/
+	element->GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values        = xNew<IssmDouble>(numnodes);
+	IssmDouble* pressure      = xNew<IssmDouble>(numnodes);
+	IssmDouble* surface       = xNew<IssmDouble>(numnodes);
+	IssmDouble* B             = xNew<IssmDouble>(numnodes);
+	IssmDouble* temperature   = xNew<IssmDouble>(numnodes);
+	IssmDouble* waterfraction = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numnodes;i++){
+		values[i]=solution[doflist[i]];
+
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Get all inputs and parameters*/
+	element->GetInputValue(&converged,ConvergedEnum);
+	element->GetInputListOnNodes(&pressure[0],PressureEnum);
+	int finite_element = element->GetElementType(); if(finite_element==P1Enum) finite_element = P1DGEnum;
+	if(converged){
+		for(i=0;i<numnodes;i++){
+			element->EnthalpyToThermal(&temperature[i],&waterfraction[i],values[i],pressure[i]);
+			if(waterfraction[i]<0.) _error_("Negative water fraction found in solution vector");
+			//if(waterfraction[i]>1.) _error_("Water fraction >1 found in solution vector");
+		}
+		element->AddInput(EnthalpyEnum,values,finite_element);
+		element->AddInput(WaterfractionEnum,waterfraction,finite_element);
+		element->AddInput(TemperatureEnum,temperature,finite_element);
+
+		IssmDouble* n = xNew<IssmDouble>(numnodes);
+		if(element->material->ObjectEnum()==MatestarEnum){
+			for(i=0;i<numnodes;i++) n[i]=3.;
+		}
+		else{
+			element->GetInputListOnNodes(&n[0],MaterialsRheologyNEnum);
+		}
+
+		/*Update Rheology only if converged (we must make sure that the temperature is below melting point
+		 * otherwise the rheology could be negative*/
+		element->FindParam(&rheology_law,MaterialsRheologyLawEnum);
+		element->GetInputListOnNodes(&surface[0],SurfaceEnum);
+		switch(rheology_law){
+			case NoneEnum:
+				/*Do nothing: B is not temperature dependent*/
+				break;
+			case BuddJackaEnum:
+				for(i=0;i<numnodes;i++) B[i]=BuddJacka(temperature[i]);
+				element->AddInput(MaterialsRheologyBEnum,&B[0],finite_element);
+				break;
+			case CuffeyEnum:
+				for(i=0;i<numnodes;i++) B[i]=Cuffey(temperature[i]);
+				element->AddInput(MaterialsRheologyBEnum,&B[0],finite_element);
+				break;
+			case CuffeyTemperateEnum:
+				for(i=0;i<numnodes;i++) B[i]=CuffeyTemperate(temperature[i], waterfraction[i],n[i]);
+				element->AddInput(MaterialsRheologyBEnum,&B[0],finite_element);
+				break;
+			case PatersonEnum:
+				for(i=0;i<numnodes;i++) B[i]=Paterson(temperature[i]);
+				element->AddInput(MaterialsRheologyBEnum,&B[0],finite_element);
+				break;
+			case NyeH2OEnum:
+				for(i=0;i<numnodes;i++) B[i]=NyeH2O(values[i]);
+				element->AddInput(MaterialsRheologyBEnum,&B[0],finite_element);
+				break;
+			case NyeCO2Enum:
+				for(i=0;i<numnodes;i++) B[i]=NyeCO2(values[i]);
+				element->AddInput(MaterialsRheologyBEnum,&B[0],finite_element);
+				break;
+			case ArrheniusEnum:{
+				element->GetVerticesCoordinates(&xyz_list);
+				for(i=0;i<numnodes;i++) B[i]=Arrhenius(temperature[i],surface[i]-xyz_list[i*3+2],n[i]);
+				element->AddInput(MaterialsRheologyBEnum,&B[0],finite_element);
+				break;
+				}
+			case LliboutryDuvalEnum:{
+				for(i=0;i<numnodes;i++) B[i]=LliboutryDuval(values[i],pressure[i],n[i],element->FindParam(MaterialsBetaEnum),element->FindParam(ConstantsReferencetemperatureEnum),element->FindParam(MaterialsHeatcapacityEnum),element->FindParam(MaterialsLatentheatEnum));
+				element->AddInput(MaterialsRheologyBEnum,&B[0],finite_element);
+				break;
+				}
+			default: _error_("Rheology law " << EnumToStringx(rheology_law) << " not supported yet");
+		}
+		xDelete<IssmDouble>(n);
+	}
+	else{
+		element->AddInput(EnthalpyPicardEnum,values,finite_element);
+	}
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(surface);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(temperature);
+	xDelete<IssmDouble>(waterfraction);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           EnthalpyAnalysis::PostProcessing(FemModel* femmodel){/*{{{*/
+
+	/*Intermediaries*/
+	bool computebasalmeltingrates=true;
+	bool isdrainicecolumn;
+	IssmDouble dt;
+
+	femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+	femmodel->parameters->FindParam(&isdrainicecolumn,ThermalIsdrainicecolumnEnum);
+
+	if(isdrainicecolumn){
+		DrainWaterfraction(femmodel);
+	}
+	if(computebasalmeltingrates){
+		ComputeBasalMeltingrate(femmodel);
+	}
+
+}/*}}}*/
+IssmDouble     EnthalpyAnalysis::PureIceEnthalpy(Element* element,IssmDouble pressure){/*{{{*/
+
+	IssmDouble heatcapacity         = element->FindParam(MaterialsHeatcapacityEnum);
+	IssmDouble referencetemperature = element->FindParam(ConstantsReferencetemperatureEnum);
+
+	return heatcapacity*(TMeltingPoint(element,pressure)-referencetemperature);
+}/*}}}*/
+IssmDouble     EnthalpyAnalysis::TMeltingPoint(Element* element,IssmDouble pressure){/*{{{*/
+
+	IssmDouble meltingpoint = element->FindParam(MaterialsMeltingpointEnum);
+	IssmDouble beta         = element->FindParam(MaterialsBetaEnum);
+
+	return meltingpoint-beta*pressure;
+}/*}}}*/
+void           EnthalpyAnalysis::UpdateBasalConstraints(FemModel* femmodel){/*{{{*/
+
+	/*Update basal dirichlet BCs for enthalpy: */
+	int numnodes            = femmodel->nodes->NumberOfNodes();
+   int localmasters        = femmodel->nodes->NumberOfNodesLocal();
+	Vector<IssmDouble>* spc = new Vector<IssmDouble>(localmasters,numnodes);
+
+	/*First create a vector to figure out what elements should be constrained*/
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		GetBasalConstraints(spc,element);
+	}
+
+	/*Assemble*/
+	spc->Assemble();
+
+	/*Get local vector with both masters and slaves:*/
+	IssmDouble *local_spc = NULL;
+	femmodel->GetLocalVectorWithClonesNodes(&local_spc,spc);
+	delete spc;
+
+	/*Then update basal constraints nodes accordingly*/
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		ApplyBasalConstraints(local_spc,element);
+	}
+
+	femmodel->UpdateConstraintsx();
+
+	/*Delete*/
+	xDelete<IssmDouble>(local_spc);
+}/*}}}*/
+void           EnthalpyAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/EnthalpyAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/EnthalpyAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/EnthalpyAnalysis.h	(revision 27955)
@@ -0,0 +1,59 @@
+/*! \file EnthalpyAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _EnthalpyAnalysis_
+#define _EnthalpyAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+#include "../classes/classes.h"
+
+class EnthalpyAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		static void       ApplyBasalConstraints(IssmDouble* serial_spc,Element* element);
+		static void       ComputeBasalMeltingrate(FemModel* femmodel);
+		static void       ComputeBasalMeltingrate(Element* element);
+		void              Core(FemModel* femmodel);
+		void              PreCore(FemModel* femmodel);
+		ElementVector*    CreateDVector(Element* element);
+		ElementMatrix*    CreateJacobianMatrix(Element* element);
+		ElementMatrix*    CreateKMatrix(Element* element);
+		ElementMatrix*    CreateKMatrixVolume(Element* element);
+		ElementMatrix*    CreateKMatrixShelf(Element* element);
+		ElementVector*    CreatePVector(Element* element);
+		ElementVector*    CreatePVectorVolume(Element* element);
+		ElementVector*    CreatePVectorSheet(Element* element);
+		ElementVector*    CreatePVectorShelf(Element* element);
+		static void       DrainWaterfraction(FemModel* femmodel);
+ 		static void       ComputeWaterfractionDrainage(FemModel* femmodel);
+ 		static void       DrainageUpdateWatercolumn(FemModel* femmodel);
+ 		static void       DrainageUpdateEnthalpy(FemModel* femmodel);
+		static IssmDouble EnthalpyDiffusionParameter(Element* element,IssmDouble enthalpy,IssmDouble pressure);
+		static IssmDouble EnthalpyDiffusionParameterVolume(Element* element,int enthalpy_enum);
+		static void       GetBasalConstraints(Vector<IssmDouble>* vec_spc,Element* element);
+		static void       GetBasalConstraintsSteadystate(Vector<IssmDouble>* vec_spc,Element* element);
+		static void       GetBasalConstraintsTransient(Vector<IssmDouble>* vec_spc,Element* element);
+		void              GetBConduct(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void              GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		static int        GetThermalBasalCondition(Element* element, IssmDouble enthalpy, IssmDouble enthalpy_up, IssmDouble pressure, IssmDouble pressure_up, IssmDouble watercolumn, IssmDouble meltingrate);
+		static IssmDouble GetWetIceConductivity(Element* element, IssmDouble enthalpy, IssmDouble pressure);
+		void              GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void              InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		static void       PostProcessing(FemModel* femmodel);
+		static IssmDouble PureIceEnthalpy(Element* element,IssmDouble pressure);
+		static IssmDouble TMeltingPoint(Element* element,IssmDouble pressure);
+		static void       UpdateBasalConstraints(FemModel* femmodel);
+		void              UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/EnumToAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/EnumToAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/EnumToAnalysis.cpp	(revision 27955)
@@ -0,0 +1,147 @@
+/*
+* \file EnumToAnalysis.cpp
+* \brief: output class depending on enum
+*
+*   WARNING: DO NOT MODIFY THIS FILE
+*            this file has been automatically generated by Synchronize.sh
+*            Please read README for more information
+*/
+
+#include "./analyses.h"
+#include "../shared/shared.h"
+
+Analysis* EnumToAnalysis(int analysis_enum){
+
+	switch(analysis_enum){
+		#ifdef _HAVE_HYDROLOGYTWS_
+		case HydrologyTwsAnalysisEnum : return new HydrologyTwsAnalysis();
+		#endif
+		#ifdef _HAVE_ADJOINTBALANCETHICKNESS2_
+		case AdjointBalancethickness2AnalysisEnum : return new AdjointBalancethickness2Analysis();
+		#endif
+		#ifdef _HAVE_ADJOINTBALANCETHICKNESS_
+		case AdjointBalancethicknessAnalysisEnum : return new AdjointBalancethicknessAnalysis();
+		#endif
+		#ifdef _HAVE_ADJOINTHORIZ_
+		case AdjointHorizAnalysisEnum : return new AdjointHorizAnalysis();
+		#endif
+		#ifdef _HAVE_AGE_
+		case AgeAnalysisEnum : return new AgeAnalysis();
+		#endif
+		#ifdef _HAVE_BALANCETHICKNESS2_
+		case Balancethickness2AnalysisEnum : return new Balancethickness2Analysis();
+		#endif
+		#ifdef _HAVE_BALANCETHICKNESS_
+		case BalancethicknessAnalysisEnum : return new BalancethicknessAnalysis();
+		#endif
+		#ifdef _HAVE_BALANCETHICKNESSSOFT_
+		case BalancethicknessSoftAnalysisEnum : return new BalancethicknessSoftAnalysis();
+		#endif
+		#ifdef _HAVE_BALANCEVELOCITY_
+		case BalancevelocityAnalysisEnum : return new BalancevelocityAnalysis();
+		#endif
+		#ifdef _HAVE_DAMAGEEVOLUTION_
+		case DamageEvolutionAnalysisEnum : return new DamageEvolutionAnalysis();
+		#endif
+		#ifdef _HAVE_DEBRIS_
+		case DebrisAnalysisEnum : return new DebrisAnalysis();
+		#endif
+		#ifdef _HAVE_DEPTHAVERAGE_
+		case DepthAverageAnalysisEnum : return new DepthAverageAnalysis();
+		#endif
+		#ifdef _HAVE_ENTHALPY_
+		case EnthalpyAnalysisEnum : return new EnthalpyAnalysis();
+		#endif
+		#ifdef _HAVE_ESA_
+		case EsaAnalysisEnum : return new EsaAnalysis();
+		#endif
+		#ifdef _HAVE_EXTRAPOLATION_
+		case ExtrapolationAnalysisEnum : return new ExtrapolationAnalysis();
+		#endif
+		#ifdef _HAVE_EXTRUDEFROMBASE_
+		case ExtrudeFromBaseAnalysisEnum : return new ExtrudeFromBaseAnalysis();
+		#endif
+		#ifdef _HAVE_EXTRUDEFROMTOP_
+		case ExtrudeFromTopAnalysisEnum : return new ExtrudeFromTopAnalysis();
+		#endif
+		#ifdef _HAVE_FREESURFACEBASE_
+		case FreeSurfaceBaseAnalysisEnum : return new FreeSurfaceBaseAnalysis();
+		#endif
+		#ifdef _HAVE_FREESURFACETOP_
+		case FreeSurfaceTopAnalysisEnum : return new FreeSurfaceTopAnalysis();
+		#endif
+		#ifdef _HAVE_GLHEIGHTADVECTION_
+		case GLheightadvectionAnalysisEnum : return new GLheightadvectionAnalysis();
+		#endif
+		#ifdef _HAVE_HYDROLOGYARMAPW_
+		case HydrologyArmapwAnalysisEnum : return new HydrologyArmapwAnalysis();
+		#endif
+		#ifdef _HAVE_HYDROLOGYDCEFFICIENT_
+		case HydrologyDCEfficientAnalysisEnum : return new HydrologyDCEfficientAnalysis();
+		#endif
+		#ifdef _HAVE_HYDROLOGYDCINEFFICIENT_
+		case HydrologyDCInefficientAnalysisEnum : return new HydrologyDCInefficientAnalysis();
+		#endif
+		#ifdef _HAVE_HYDROLOGYGLADS_
+		case HydrologyGlaDSAnalysisEnum : return new HydrologyGlaDSAnalysis();
+		#endif
+		#ifdef _HAVE_HYDROLOGYPISM_
+		case HydrologyPismAnalysisEnum : return new HydrologyPismAnalysis();
+		#endif
+		#ifdef _HAVE_HYDROLOGYSHAKTI_
+		case HydrologyShaktiAnalysisEnum : return new HydrologyShaktiAnalysis();
+		#endif
+		#ifdef _HAVE_HYDROLOGYSHREVE_
+		case HydrologyShreveAnalysisEnum : return new HydrologyShreveAnalysis();
+		#endif
+		#ifdef _HAVE_L2PROJECTIONBASE_
+		case L2ProjectionBaseAnalysisEnum : return new L2ProjectionBaseAnalysis();
+		#endif
+		#ifdef _HAVE_L2PROJECTIONEPL_
+		case L2ProjectionEPLAnalysisEnum : return new L2ProjectionEPLAnalysis();
+		#endif
+		#ifdef _HAVE_LEVELSET_
+		case LevelsetAnalysisEnum : return new LevelsetAnalysis();
+		#endif
+		#ifdef _HAVE_LOVE_
+		case LoveAnalysisEnum : return new LoveAnalysis();
+		#endif
+		#ifdef _HAVE_MASSTRANSPORT_
+		case MasstransportAnalysisEnum : return new MasstransportAnalysis();
+		#endif
+		#ifdef _HAVE_MELTING_
+		case MeltingAnalysisEnum : return new MeltingAnalysis();
+		#endif
+		#ifdef _HAVE_OCEANTRANSPORT_
+		case OceantransportAnalysisEnum : return new OceantransportAnalysis();
+		#endif
+		#ifdef _HAVE_SAMPLING_
+		case SamplingAnalysisEnum : return new SamplingAnalysis();
+		#endif
+		#ifdef _HAVE_SEALEVELCHANGE_
+		case SealevelchangeAnalysisEnum : return new SealevelchangeAnalysis();
+		#endif
+		#ifdef _HAVE_SMB_
+		case SmbAnalysisEnum : return new SmbAnalysis();
+		#endif
+		#ifdef _HAVE_SMOOTH_
+		case SmoothAnalysisEnum : return new SmoothAnalysis();
+		#endif
+		#ifdef _HAVE_STRESSBALANCE_
+		case StressbalanceAnalysisEnum : return new StressbalanceAnalysis();
+		#endif
+		#ifdef _HAVE_STRESSBALANCESIA_
+		case StressbalanceSIAAnalysisEnum : return new StressbalanceSIAAnalysis();
+		#endif
+		#ifdef _HAVE_STRESSBALANCEVERTICAL_
+		case StressbalanceVerticalAnalysisEnum : return new StressbalanceVerticalAnalysis();
+		#endif
+		#ifdef _HAVE_THERMAL_
+		case ThermalAnalysisEnum : return new ThermalAnalysis();
+		#endif
+		#ifdef _HAVE_UZAWAPRESSURE_
+		case UzawaPressureAnalysisEnum : return new UzawaPressureAnalysis();
+		#endif
+		default : _error_("enum provided not supported ("<<EnumToStringx(analysis_enum)<<")");
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/EnumToAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/EnumToAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/EnumToAnalysis.h	(revision 27955)
@@ -0,0 +1,27 @@
+#ifndef _ENUMTOANALYSIS_
+#define _ENUMTOANALYSIS_
+
+class Analysis;
+
+Analysis* EnumToAnalysis(int analysis_enum);
+
+#endif
+		/*Model processing*/
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void UpdateConstraints(FemModel* femmodel);
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/EsaAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/EsaAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/EsaAnalysis.cpp	(revision 27955)
@@ -0,0 +1,221 @@
+#include "./EsaAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void EsaAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	/*No constraints*/
+}/*}}}*/
+void EsaAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	/*No loads*/
+}/*}}}*/
+void EsaAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+	::CreateNodes(nodes,iomodel,EsaAnalysisEnum,P1Enum);
+}/*}}}*/
+int  EsaAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void EsaAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	/*Create inputs: */
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.esa.deltathickness",DeltaIceThicknessEnum);
+
+}/*}}}*/
+void EsaAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int         nl;
+	IssmDouble* love_h=NULL;
+	IssmDouble* love_l=NULL;
+
+	IssmDouble* U_elastic = NULL;
+	IssmDouble* U_elastic_local = NULL;
+	IssmDouble* H_elastic = NULL;
+	IssmDouble* H_elastic_local = NULL;
+	int         M,m,lower_row,upper_row;
+	IssmDouble  degacc=.01;
+	IssmDouble  planetradius=0;
+	IssmDouble  planetarea=0;
+
+	int     numoutputs;
+	char**  requestedoutputs = NULL;
+
+	/*transition vectors: */
+	IssmDouble **transitions    = NULL;
+	int         *transitions_M    = NULL;
+	int         *transitions_N    = NULL;
+	int          ntransitions;
+
+	/*some constant parameters: */
+	parameters->AddObject(iomodel->CopyConstantObject("md.esa.hemisphere",EsaHemisphereEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.selfattraction",SolidearthSettingsSelfAttractionEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.horiz",SolidearthSettingsHorizEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.elastic",SolidearthSettingsElasticEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.rotation",SolidearthSettingsRotationEnum));
+
+	/*deal with planet radius and area: */
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.planetradius",SolidearthPlanetRadiusEnum));
+	iomodel->FetchData(&planetradius,"md.solidearth.planetradius");
+	planetarea=4*PI*planetradius*planetradius;
+	parameters->AddObject(new DoubleParam(SolidearthPlanetAreaEnum,planetarea));
+
+	/*love numbers: */
+	iomodel->FetchData(&love_h,&nl,NULL,"md.solidearth.lovenumbers.h");
+	iomodel->FetchData(&love_l,&nl,NULL,"md.solidearth.lovenumbers.l");
+
+	/*compute elastic green function for a range of angles*/
+	iomodel->FetchData(&degacc,"md.esa.degacc");
+	M=reCast<int,IssmDouble>(180./degacc+1.);
+	U_elastic=xNew<IssmDouble>(M);
+	H_elastic=xNew<IssmDouble>(M);
+
+	/*compute combined legendre + love number (elastic green function:*/
+	m=DetermineLocalSize(M,IssmComm::GetComm());
+	GetOwnershipBoundariesFromRange(&lower_row,&upper_row,m,IssmComm::GetComm());
+	U_elastic_local=xNew<IssmDouble>(m);
+	H_elastic_local=xNew<IssmDouble>(m);
+
+	/*compute U_elastic_local and H_elastic_local {{{ */
+	for(int i=lower_row;i<upper_row;i++){
+		IssmDouble alpha,x;
+		alpha= reCast<IssmDouble>(i)*degacc * PI / 180.0;
+
+		U_elastic_local[i-lower_row]= (love_h[nl-1])/2.0/sin(alpha/2.0);
+		H_elastic_local[i-lower_row]= 0; 
+		//IssmDouble Pn,Pn1,Pn2;
+		//IssmDouble Pn_p,Pn_p1,Pn_p2;
+		IssmDouble Pn = 0.; 
+		IssmDouble Pn1 = 0.; 
+		IssmDouble Pn2 = 0.; 
+		IssmDouble Pn_p = 0.; 
+		IssmDouble Pn_p1 = 0.; 
+		IssmDouble Pn_p2 = 0.; 
+
+		for (int n=0;n<nl;n++) {
+			IssmDouble deltalove_U;
+
+			deltalove_U = (love_h[n]-love_h[nl-1]);
+
+			/*compute legendre polynomials: P_n(cos\theta) & d P_n(cos\theta)/ d\theta: */
+			if(n==0){
+				Pn=1; 
+				Pn_p=0; 
+			}
+			else if(n==1){ 
+				Pn = cos(alpha); 
+				Pn_p = 1; 
+			}
+			else{
+				Pn = ( (2*n-1)*cos(alpha)*Pn1 - (n-1)*Pn2 ) /n;
+				Pn_p = ( (2*n-1)*(Pn1+cos(alpha)*Pn_p1) - (n-1)*Pn_p2 ) /n;
+			}
+			Pn2=Pn1; Pn1=Pn;
+			Pn_p2=Pn_p1; Pn_p1=Pn_p;
+
+			U_elastic_local[i-lower_row] += deltalove_U*Pn;		// vertical (up) displacement 
+			H_elastic_local[i-lower_row] += sin(alpha)*love_l[n]*Pn_p;		// horizontal displacements 
+		}
+	} 
+	/* }}} */
+
+	/*merge U_elastic_local into U_elastic; H_elastic_local to H_elastic:{{{*/
+	int* recvcounts=xNew<int>(IssmComm::GetSize());
+	int* displs=xNew<int>(IssmComm::GetSize());
+
+	//recvcounts:
+	ISSM_MPI_Allgather(&m,1,ISSM_MPI_INT,recvcounts,1,ISSM_MPI_INT,IssmComm::GetComm());
+
+	/*displs: */
+	ISSM_MPI_Allgather(&lower_row,1,ISSM_MPI_INT,displs,1,ISSM_MPI_INT,IssmComm::GetComm());
+
+	/*All gather:*/
+	ISSM_MPI_Allgatherv(U_elastic_local, m, ISSM_MPI_DOUBLE, U_elastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+	ISSM_MPI_Allgatherv(H_elastic_local, m, ISSM_MPI_DOUBLE, H_elastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+	/*Free resources: */
+	xDelete<int>(recvcounts);
+	xDelete<int>(displs);
+
+	/*}}}*/
+
+	/*Avoid singularity at 0: */
+	U_elastic[0]=U_elastic[1];
+	parameters->AddObject(new DoubleVecParam(EsaUElasticEnum,U_elastic,M));
+	H_elastic[0]=H_elastic[1];
+	parameters->AddObject(new DoubleVecParam(EsaHElasticEnum,H_elastic,M));
+
+	/*Free resources: */
+	xDelete<IssmDouble>(love_h);
+	xDelete<IssmDouble>(love_l);
+	xDelete<IssmDouble>(U_elastic);
+	xDelete<IssmDouble>(U_elastic_local);
+	xDelete<IssmDouble>(H_elastic);
+	xDelete<IssmDouble>(H_elastic_local);
+
+	/*Transitions: */
+	iomodel->FetchData(&transitions,&transitions_M,&transitions_N,&ntransitions,"md.esa.transitions");
+	if(transitions){
+		parameters->AddObject(new DoubleMatArrayParam(EsaTransitionsEnum,transitions,ntransitions,transitions_M,transitions_N));
+
+		for(int i=0;i<ntransitions;i++){
+			IssmDouble* transition=transitions[i];
+			xDelete<IssmDouble>(transition);
+		}
+		xDelete<IssmDouble*>(transitions);
+		xDelete<int>(transitions_M);
+		xDelete<int>(transitions_N);
+	}
+
+	/*Requested outputs*/
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.esa.requested_outputs");
+	if(numoutputs)parameters->AddObject(new StringArrayParam(EsaRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.esa.requested_outputs");
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           EsaAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           EsaAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* EsaAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* EsaAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* EsaAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+ElementVector* EsaAnalysis::CreatePVector(Element* element){/*{{{*/
+_error_("not implemented yet");
+}/*}}}*/
+void           EsaAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           EsaAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           EsaAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	/*Default, do nothing*/
+	return;
+
+}/*}}}*/
+void           EsaAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/EsaAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/EsaAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/EsaAnalysis.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file EsaAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _EsaAnalysis_
+#define _EsaAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class EsaAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ExtrapolationAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ExtrapolationAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ExtrapolationAnalysis.cpp	(revision 27955)
@@ -0,0 +1,299 @@
+#include "./ExtrapolationAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void ExtrapolationAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	// do nothing for now
+	return;
+}
+/*}}}*/
+void ExtrapolationAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	//	do nothing for now
+	return;
+}/*}}}*/
+void ExtrapolationAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+	int finiteelement=P1Enum;
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,ExtrapolationAnalysisEnum,finiteelement);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}
+/*}}}*/
+int  ExtrapolationAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}
+/*}}}*/
+void ExtrapolationAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+	int    finiteelement;
+
+	/*Finite element type*/
+	finiteelement = P1Enum;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+}
+/*}}}*/
+void ExtrapolationAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+	//do nothing for now
+	return;
+}
+/*}}}*/
+
+/*Finite element Analysis*/
+void           ExtrapolationAnalysis::Core(FemModel* femmodel){/*{{{*/
+
+	/* Intermediaries */
+	bool save_results;
+	int extvar_enum; 
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&extvar_enum, ExtrapolationVariableEnum);
+
+	/*activate formulation: */
+	femmodel->SetCurrentConfiguration(ExtrapolationAnalysisEnum);
+
+	if(VerboseSolution()) _printf0_("   extrapolation of " << EnumToStringx(extvar_enum) << ":\n");
+	solutionsequence_linear(femmodel);
+
+	if(save_results){
+		femmodel->RequestedOutputsx(&femmodel->results,&extvar_enum,1);
+	}
+}/*}}}*/
+void           ExtrapolationAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* ExtrapolationAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* ExtrapolationAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+	/* Jacobian required for the Newton solver */
+	_error_("not implemented yet");
+}/*}}}*/
+ElementMatrix* ExtrapolationAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	bool	      extrapolatebydiffusion = true;
+	int	      dim, domaintype, extrapolationcase;
+	int	      i,row,col,stabilization;
+	IssmDouble  Jdet,D_scalar,h;
+	IssmDouble  norm_dlsf;
+	IssmDouble  hx,hy,hz,kappa;
+	IssmDouble *xyz_list    = NULL;
+	Element    *workelement = NULL;
+
+	/*Get problem case*/
+	extrapolationcase=GetExtrapolationCase(element);
+	switch(extrapolationcase){
+		case 0:
+			if(!element->IsOnBase()) return NULL; 
+			workelement = element->SpawnBasalElement(); 
+			break;
+		case 1: case 2: case 3: workelement=element; break;
+	}
+
+	/* get extrapolation dimension */
+	workelement->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim=1; break;
+		case Domain2DhorizontalEnum: dim=2; break;
+		case Domain3DEnum:           dim=3; break;
+      default: _error_("not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = workelement->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix *Ke     = workelement->NewElementMatrix();
+	IssmDouble    *basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble    *dbasis = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble     dlsf[3];
+	IssmDouble     normal[3];
+
+	/*Retrieve all inputs and parameters*/
+	Input* lsf_slopex_input=workelement->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input);
+	Input* lsf_slopey_input=workelement->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input);
+	workelement->GetVerticesCoordinates(&xyz_list);
+
+	/* In 3d we are going to extrude using horizontal diffusion. Since the layers are 3d,
+	 * we change the geometry of the element to make it flat. That way, the diffusion is
+	 * handled along the layers
+	 */
+	if(element->ObjectEnum()==PentaEnum){
+		for(i=0;i<3;i++) xyz_list[3*i+2] = 0.;
+		for(i=3;i<6;i++) xyz_list[3*i+2] = 1.;
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=workelement->NewGauss(2);
+	while(gauss->next()){
+
+		workelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		workelement->NodalFunctions(basis,gauss);
+		workelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		D_scalar=gauss->weight*Jdet;
+
+		if(extrapolatebydiffusion){
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += D_scalar*(dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i]);
+				}
+			}
+		}
+		else{
+			/* extrapolate values along normal */
+			/* Get normal on ice boundary */
+			lsf_slopex_input->GetInputValue(&dlsf[0],gauss);
+			if(dim>1)
+				lsf_slopey_input->GetInputValue(&dlsf[1],gauss);
+			if(dim>2)
+				dlsf[2]=0.;
+			norm_dlsf=0.;
+			for(i=0;i<dim;i++)	norm_dlsf+=dlsf[i]*dlsf[i]; 
+			norm_dlsf=sqrt(norm_dlsf); _assert_(norm_dlsf>0.);
+
+			if(norm_dlsf>0.)
+				for(i=0;i<dim;i++)	normal[i]=dlsf[i]/norm_dlsf;
+			else
+				for(i=0;i<dim;i++)	normal[i]=0.;
+
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += D_scalar*(normal[0]*dbasis[0*numnodes+j]*basis[i] + normal[1]*dbasis[1*numnodes+j]*basis[i]);
+				}
+			}
+
+			/* stabilization */
+			/* do not use streamline upwinding for extrapolation: it yields oscillating results due to diffusion along normal direction, but none across */
+			stabilization=1;
+			if (stabilization==0){/* no stabilization, do nothing*/}
+			else if(stabilization==1){
+				/* Artificial Diffusion */
+				workelement->ElementSizes(&hx,&hy,&hz);
+				h=sqrt(pow(hx*normal[0],2) + pow(hy*normal[1],2));
+				kappa=h/2.+1.e-14; 
+
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j] += D_scalar*kappa*(dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i]);
+					}
+				}
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	if(extrapolationcase==0){workelement->DeleteMaterials(); delete workelement;};
+	return Ke;
+
+}/*}}}*/
+ElementVector* ExtrapolationAnalysis::CreatePVector(Element* element){/*{{{*/
+	return NULL;
+}/*}}}*/
+void           ExtrapolationAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void           ExtrapolationAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           ExtrapolationAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int extrapolationvariable, extrapolationcase;
+	extrapolationcase=GetExtrapolationCase(element);
+	element->FindParam(&extrapolationvariable, ExtrapolationVariableEnum);
+	switch(extrapolationcase){
+		case 0:
+			element->InputUpdateFromSolutionOneDof(solution,extrapolationvariable);
+			break;
+		case 1:
+			element->InputUpdateFromSolutionOneDof(solution,extrapolationvariable);
+			break;
+		case 2:
+			element->InputUpdateFromSolutionOneDofCollapsed(solution,extrapolationvariable);
+			break;
+		case 3:
+			element->InputUpdateFromSolutionOneDof(solution,extrapolationvariable);
+			break;
+	}
+}/*}}}*/
+int            ExtrapolationAnalysis::GetExtrapolationCase(Element* element){/*{{{*/
+
+	/* Get case of extrapolation, depending on domain quality, and extrapolation variable */
+	int domaintype, extrapolationvariable;
+	int extrapolationcase;
+
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   extrapolationcase=0; break;
+		case Domain2DhorizontalEnum: extrapolationcase=1; break;
+		case Domain3DEnum: 
+			element->FindParam(&extrapolationvariable, ExtrapolationVariableEnum);
+			if(extrapolationvariable==ThicknessEnum){
+            extrapolationcase=2; // scalar fields that are constant along z-axis
+         }
+			else{
+            extrapolationcase=3; // scalar fields that vary along z-axis
+         }
+			break;
+	}
+	return extrapolationcase;
+}/*}}}*/
+void           ExtrapolationAnalysis::SetConstraintsOnIce(Element* element){/*{{{*/
+
+	int numnodes=element->GetNumberOfNodes();	
+
+	/* Intermediaries */
+	int extvar_enum;
+	IssmDouble active,value;
+	Node* node = NULL;
+
+	/* Get parameters */
+	element->FindParam(&extvar_enum, ExtrapolationVariableEnum);
+
+	Input* active_input=element->GetInput(IceMaskNodeActivationEnum); _assert_(active_input);
+	Input* extvar_input=element->GetInput(extvar_enum); _assert_(extvar_input);
+
+	Gauss* gauss=element->NewGauss();
+	for(int in=0;in<numnodes;in++){
+		gauss->GaussNode(element->GetElementType(),in);
+		node=element->GetNode(in);
+		active_input->GetInputValue(&active,gauss);
+		if(node->IsActive()){
+			if(active>0.5){
+				/* if ice, set dirichlet BC */
+				extvar_input->GetInputValue(&value,gauss);
+				node->ApplyConstraint(0,value);
+			}
+			else {
+				/* no ice, set no spc */
+				node->DofInFSet(0); 
+			}
+		}
+	}
+	delete gauss;
+}/*}}}*/
+void           ExtrapolationAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		this->SetConstraintsOnIce(element);
+	}
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ExtrapolationAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ExtrapolationAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ExtrapolationAnalysis.h	(revision 27955)
@@ -0,0 +1,36 @@
+/*! \file ExtrapolationAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _ExtrapolationAnalysis_
+#define _ExtrapolationAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class ExtrapolationAnalysis: public Analysis{
+
+ public:
+	/*Model processing*/
+	void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+	void CreateLoads(Loads* loads, IoModel* iomodel);
+	void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+	int  DofsPerNode(int** doflist,int domaintype,int approximation);
+	void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+	void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+	/*Finite element Analysis*/
+	void           Core(FemModel* femmodel);
+	void           PreCore(FemModel* femmodel);
+	ElementVector* CreateDVector(Element* element);
+	ElementMatrix* CreateJacobianMatrix(Element* element);
+	ElementMatrix* CreateKMatrix(Element* element);
+	ElementVector* CreatePVector(Element* element);
+	void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+	void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+	void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+	int				GetExtrapolationCase(Element* element);
+	void           SetConstraintsOnIce(Element* element);
+	void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ExtrudeFromBaseAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ExtrudeFromBaseAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ExtrudeFromBaseAnalysis.cpp	(revision 27955)
@@ -0,0 +1,111 @@
+#include "./ExtrudeFromBaseAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void ExtrudeFromBaseAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void ExtrudeFromBaseAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void ExtrudeFromBaseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	::CreateNodes(nodes,iomodel,ExtrudeFromBaseAnalysisEnum,P1Enum);
+
+}/*}}}*/
+int  ExtrudeFromBaseAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void ExtrudeFromBaseAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	if(iomodel->domaintype==Domain2DverticalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+	}
+}/*}}}*/
+void ExtrudeFromBaseAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           ExtrudeFromBaseAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           ExtrudeFromBaseAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* ExtrudeFromBaseAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* ExtrudeFromBaseAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* ExtrudeFromBaseAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble  Jdet,D;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get dimension*/
+	int dim;
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    dbasis = xNew<IssmDouble>(dim*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		D=gauss->weight*Jdet;
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += gauss->weight*Jdet*(dbasis[(dim-1)*numnodes+i]*dbasis[(dim-1)*numnodes+j]);
+			}
+		}
+	} 
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* ExtrudeFromBaseAnalysis::CreatePVector(Element* element){/*{{{*/
+	return NULL;
+}/*}}}*/
+void           ExtrudeFromBaseAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           ExtrudeFromBaseAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           ExtrudeFromBaseAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int inputenum;
+	element->FindParam(&inputenum,InputToExtrudeEnum);
+	element->InputUpdateFromSolutionOneDof(solution,inputenum);
+}/*}}}*/
+void           ExtrudeFromBaseAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ExtrudeFromBaseAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ExtrudeFromBaseAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ExtrudeFromBaseAnalysis.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file ExtrudeFromBaseAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _ExtrudeFromBaseAnalysis_
+#define _ExtrudeFromBaseAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class ExtrudeFromBaseAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ExtrudeFromTopAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ExtrudeFromTopAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ExtrudeFromTopAnalysis.cpp	(revision 27955)
@@ -0,0 +1,111 @@
+#include "./ExtrudeFromTopAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void ExtrudeFromTopAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void ExtrudeFromTopAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void ExtrudeFromTopAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	::CreateNodes(nodes,iomodel,ExtrudeFromTopAnalysisEnum,P1Enum);
+
+}/*}}}*/
+int  ExtrudeFromTopAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void ExtrudeFromTopAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	if(iomodel->domaintype==Domain2DverticalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+	}
+}/*}}}*/
+void ExtrudeFromTopAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           ExtrudeFromTopAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           ExtrudeFromTopAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* ExtrudeFromTopAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* ExtrudeFromTopAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* ExtrudeFromTopAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble  Jdet,D;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get dimension*/
+	int dim;
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    dbasis = xNew<IssmDouble>(dim*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		D=gauss->weight*Jdet;
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += gauss->weight*Jdet*(dbasis[(dim-1)*numnodes+i]*dbasis[(dim-1)*numnodes+j]);
+			}
+		}
+	} 
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* ExtrudeFromTopAnalysis::CreatePVector(Element* element){/*{{{*/
+	return NULL;
+}/*}}}*/
+void           ExtrudeFromTopAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           ExtrudeFromTopAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           ExtrudeFromTopAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int inputenum;
+	element->FindParam(&inputenum,InputToExtrudeEnum);
+	element->InputUpdateFromSolutionOneDof(solution,inputenum);
+}/*}}}*/
+void           ExtrudeFromTopAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ExtrudeFromTopAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ExtrudeFromTopAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ExtrudeFromTopAnalysis.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file ExtrudeFromTopAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _ExtrudeFromTopAnalysis_
+#define _ExtrudeFromTopAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class ExtrudeFromTopAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/FreeSurfaceBaseAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/FreeSurfaceBaseAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/FreeSurfaceBaseAnalysis.cpp	(revision 27955)
@@ -0,0 +1,503 @@
+#include "./FreeSurfaceBaseAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void FreeSurfaceBaseAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void FreeSurfaceBaseAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Intermediaries*/
+	int penpair_ids[2];
+	int count=0;
+	int numvertex_pairing;
+
+	/*Create Penpair for vertex_pairing: */
+	IssmDouble *vertex_pairing=NULL;
+	IssmDouble *nodeonbase=NULL;
+	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.masstransport.vertex_pairing");
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(&nodeonbase,NULL,NULL,"md.mesh.vertexonbase");
+	for(int i=0;i<numvertex_pairing;i++){
+
+		if(iomodel->my_vertices[reCast<int>(vertex_pairing[2*i+0])-1]){
+
+			/*In debugging mode, check that the second node is in the same cpu*/
+			_assert_(iomodel->my_vertices[reCast<int>(vertex_pairing[2*i+1])-1]);
+
+			/*Skip if one of the two is not on the bed*/
+			if(iomodel->domaintype!=Domain2DhorizontalEnum){
+				if(!(reCast<bool>(nodeonbase[reCast<int>(vertex_pairing[2*i+0])-1])) || !(reCast<bool>(nodeonbase[reCast<int>(vertex_pairing[2*i+1])-1]))) continue;
+			}
+
+			/*Get node ids*/
+			penpair_ids[0]=reCast<int>(vertex_pairing[2*i+0]);
+			penpair_ids[1]=reCast<int>(vertex_pairing[2*i+1]);
+
+			/*Create Load*/
+			loads->AddObject(new Penpair(count+1, &penpair_ids[0]));
+			count++;
+		}
+	}
+
+	/*Free resources: */
+	iomodel->DeleteData(vertex_pairing,"md.masstransport.vertex_pairing");
+	iomodel->DeleteData(nodeonbase,"md.mesh.vertexonbase");
+}/*}}}*/
+void FreeSurfaceBaseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,FreeSurfaceBaseAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  FreeSurfaceBaseAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void FreeSurfaceBaseAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Now, is the model 3d? otherwise, do nothing: */
+	if (iomodel->domaintype==Domain2DhorizontalEnum)return;
+
+	/*Finite element type*/
+	int finiteelement = P1Enum;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum,0.);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum);
+	if(iomodel->domaindim==3){
+		iomodel->FetchDataToInput(inputs,elements,"md.initialization.vz",VzEnum);
+	}
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+
+	/*Get what we need for ocean-induced basal melting*/
+	bool isstochastic;
+   int basalforcing_model;
+   int melt_parameterization;
+   iomodel->FindConstant(&basalforcing_model,"md.basalforcings.model");
+   iomodel->FindConstant(&isstochastic,"md.stochasticforcing.isstochasticforcing");
+   iomodel->FindConstant(&melt_parameterization,"md.frontalforcings.parameterization");
+	switch(basalforcing_model){
+		case FloatingMeltRateEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.floatingice_melting_rate",BasalforcingsFloatingiceMeltingRateEnum);
+			if(isstochastic){
+				iomodel->FetchDataToInput(inputs,elements,"md.stochasticforcing.default_id",StochasticForcingDefaultIdEnum);
+				iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.floatingice_melting_rate",BaselineBasalforcingsFloatingiceMeltingRateEnum);
+			}
+			break;
+		case LinearFloatingMeltRateEnum:
+			break;
+		case MismipFloatingMeltRateEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum);
+			break;
+		case MantlePlumeGeothermalFluxEnum:
+			break;
+		case SpatialLinearFloatingMeltRateEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.deepwater_melting_rate",BasalforcingsSpatialDeepwaterMeltingRateEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.deepwater_elevation",BasalforcingsSpatialDeepwaterElevationEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.upperwater_melting_rate",BasalforcingsSpatialUpperwaterMeltingRateEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.upperwater_elevation",BasalforcingsSpatialUpperwaterElevationEnum);
+			if(isstochastic){
+				iomodel->FetchDataToInput(inputs,elements,"md.stochasticforcing.default_id",StochasticForcingDefaultIdEnum);
+				iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.deepwater_melting_rate",BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum);
+			}
+			break;
+		case BasalforcingsPicoEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.basin_id",BasalforcingsPicoBasinIdEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.overturning_coeff",BasalforcingsPicoOverturningCoeffEnum);
+			break;
+		case BasalforcingsIsmip6Enum:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.basin_id",BasalforcingsIsmip6BasinIdEnum);
+			break;
+		case BeckmannGoosseFloatingMeltRateEnum:
+			bool isthermalforcing;
+         iomodel->FindConstant(&isthermalforcing,"md.basalforcings.isthermalforcing");
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum);
+         if(isthermalforcing==0){
+            iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.ocean_salinity",BasalforcingsOceanSalinityEnum);
+            iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.ocean_temp",BasalforcingsOceanTempEnum);
+         }
+         else if(melt_parameterization!=FrontalForcingsRignotarmaEnum){
+            iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.ocean_thermalforcing",ThermalForcingEnum);
+         }
+			break;
+		default:
+			_error_("Basal forcing model "<<EnumToStringx(basalforcing_model)<<" not supported yet");
+	}
+}/*}}}*/
+void FreeSurfaceBaseAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           FreeSurfaceBaseAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           FreeSurfaceBaseAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* FreeSurfaceBaseAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* FreeSurfaceBaseAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+	_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* FreeSurfaceBaseAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         domaintype,dim,stabilization;
+	Element*    basalelement = NULL;
+	IssmDouble *xyz_list  = NULL;
+	IssmDouble  Jdet,D_scalar,dt,h;
+	IssmDouble  vel,vx,vy,tau;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			dim = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			dim = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			dim = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke     = basalelement->NewElementMatrix(NoneApproximationEnum);
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    D      = xNew<IssmDouble>(dim*dim);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	basalelement->FindParam(&stabilization,MasstransportStabilizationEnum);
+	Input* vx_input=basalelement->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=NULL;
+	if(dim>1){vy_input = basalelement->GetInput(VyEnum); _assert_(vy_input);}
+	h = basalelement->CharacteristicLength();
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+		basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		vx_input->GetInputValue(&vx,gauss);
+		if(dim==2) vy_input->GetInputValue(&vy,gauss);
+
+		/*Transient term*/
+		D_scalar=gauss->weight*Jdet;
+		for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D_scalar*basis[i]*basis[j];
+
+		/*Advection terms*/
+		D_scalar=dt*gauss->weight*Jdet;
+		for(int i=0;i<dim*dim;i++) D[i]=0.;
+
+		if(dim==1){
+			/*\phi_i v\cdot\nabla\phi_j*/
+			for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D_scalar*basis[i]*vx*dbasis[0*numnodes+j];
+		}
+		else{
+			_assert_(dim==2);
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					/*\phi_i v\cdot\nabla\phi_j*/
+					Ke->values[i*numnodes+j] += D_scalar*basis[i]*(vx*dbasis[0*numnodes+j] + vy*dbasis[1*numnodes+j]);
+				}
+			}
+		}
+
+		if(stabilization==1){
+			/*SSA*/
+			if(dim==1){
+				vx_input->GetInputAverage(&vx);
+				D[0]=h/2.*fabs(vx);
+			}
+			else{
+				vx_input->GetInputAverage(&vx);
+				vy_input->GetInputAverage(&vy);
+				D[0*dim+0]=h/2.0*fabs(vx);
+				D[1*dim+1]=h/2.0*fabs(vy);
+			}
+		}
+		else if(stabilization==2){
+			/*Streamline upwinding*/
+			if(dim==1){
+				vel=fabs(vx)+1.e-8;
+				D[0] = h/(2.*vel)*vx*vx;
+			}
+			else{
+				vel=sqrt(vx*vx+vy*vy)+1.e-8;
+				D[0*dim+0]=h/(2*vel)*vx*vx;
+				D[1*dim+0]=h/(2*vel)*vy*vx;
+				D[0*dim+1]=h/(2*vel)*vx*vy;
+				D[1*dim+1]=h/(2*vel)*vy*vy;
+			}
+
+		}
+		else if(stabilization==5){
+			/*SUPG*/
+			if(dim==1){
+				vx_input->GetInputAverage(&vx);
+				tau=h/(2.*fabs(vx)+1e-10);
+			}
+			else{
+				vx_input->GetInputAverage(&vx);
+				vy_input->GetInputAverage(&vy);
+				tau=1*h/(2.*pow(vx*vx+vy*vy,0.5)+1e-10);
+			}
+		}
+		if(stabilization==1 || stabilization==2){
+			for(int i=0;i<dim*dim;i++) D[i]=D_scalar*D[i];
+			if(dim==2){
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j] += (
+								dbasis[0*numnodes+i] *(D[0*dim+0]*dbasis[0*numnodes+j] + D[0*dim+1]*dbasis[1*numnodes+j]) +
+								dbasis[1*numnodes+i] *(D[1*dim+0]*dbasis[0*numnodes+j] + D[1*dim+1]*dbasis[1*numnodes+j]) 
+								);
+					}
+				}
+			}
+			else{
+				for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += dbasis[0*numnodes+i]*D[0]*dbasis[0*numnodes+j];
+			}
+		}
+		else if(stabilization==5){
+			D_scalar=gauss->weight*Jdet*dt;
+			if(dim==2){
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=tau*D_scalar*
+							(vx*dbasis[0*numnodes+i]+vy*dbasis[1*numnodes+i])*
+							(vx*dbasis[0*numnodes+j]+vy*dbasis[1*numnodes+j]);
+					}
+				}
+			}
+			else{
+				for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j]+=tau*D_scalar*(vx*dbasis[0*numnodes+i])*(vx*dbasis[0*numnodes+j]);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(D);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+ElementVector* FreeSurfaceBaseAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         domaintype,dim,stabilization;
+	IssmDouble  Jdet,dt;
+	IssmDouble  gmb,fmb,mb,bed,vx,vy,vz,tau;
+	Element*    basalelement = NULL;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			dim = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			dim = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			dim = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+	int         melt_style,point1;
+	IssmDouble  fraction1,fraction2;
+	bool        mainlyfloating;
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = basalelement->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble  gllevelset,phi=1.;
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	basalelement->FindParam(&melt_style,GroundinglineMeltInterpolationEnum);
+	Input* groundedice_input   = basalelement->GetInput(MaskOceanLevelsetEnum);              _assert_(groundedice_input);
+	Input* gmb_input           = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum);  _assert_(gmb_input);
+	Input* fmb_input           = basalelement->GetInput(BasalforcingsFloatingiceMeltingRateEnum);  _assert_(fmb_input);
+	Input* base_input          = basalelement->GetInput(BaseEnum);                                 _assert_(base_input);
+	Input* gllevelset_input = basalelement->GetInput(MaskOceanLevelsetEnum);              _assert_(gllevelset_input);
+	Input* vz_input = NULL;
+	Input* vx_input = NULL;
+	Input* vy_input = NULL;
+	switch(dim){
+		case 1: 
+			vx_input=basalelement->GetInput(VxEnum); _assert_(vx_input);
+			vz_input=basalelement->GetInput(VyEnum) ; _assert_(vz_input); 
+			break;
+		case 2: 
+			vx_input=basalelement->GetInput(VxEnum); _assert_(vx_input);
+			vy_input=basalelement->GetInput(VyEnum); _assert_(vy_input);
+			vz_input=basalelement->GetInput(VzEnum); _assert_(vz_input); 
+			break;
+		default: _error_("not implemented");
+	}
+	IssmDouble h = basalelement->CharacteristicLength();
+
+	/*Recover portion of element that is grounded*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	phi=basalelement->GetGroundedPortion(xyz_list);
+	Gauss*      gauss     = NULL;
+	if(melt_style==SubelementMelt2Enum){
+		basalelement->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+		gauss = basalelement->NewGauss(point1,fraction1,fraction2,3);
+	}
+	else{
+		gauss = basalelement->NewGauss(3);   
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+
+
+		vz_input->GetInputValue(&vz,gauss);  
+		gmb_input->GetInputValue(&gmb,gauss);
+		fmb_input->GetInputValue(&fmb,gauss);
+		base_input->GetInputValue(&bed,gauss);
+		groundedice_input->GetInputValue(&phi,gauss);
+		gllevelset_input->GetInputValue(&gllevelset,gauss);
+		if(melt_style==SubelementMelt1Enum){ 
+			//if (phi>0.999999999) mb=gmb;
+			//else mb=(1-phi)*fmb+phi*gmb; // phi is the fraction of grounded ice so (1-phi) is floating
+			if(phi>0) mb=gmb;
+			else mb=fmb;
+		}
+		else if(melt_style==SubelementMelt2Enum){
+			if(gllevelset>0.) mb=gmb;
+			else mb=fmb;
+		}
+		else if(melt_style==NoMeltOnPartiallyFloatingEnum){
+			if (phi<0.00000001) mb=fmb;  
+			else mb=gmb;
+		}
+		else if(melt_style==FullMeltOnPartiallyFloatingEnum){
+			if (phi<0.99999999) mb=fmb;  
+			else mb=gmb;
+		}
+		else  _error_("melt interpolation "<<EnumToStringx(melt_style)<<" not implemented yet");
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(bed+dt*(mb) + dt*vz)*basis[i];
+
+		if(stabilization==5){
+			/*SUPG*/
+			basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+			if(dim==1){
+				vx_input->GetInputAverage(&vx);
+				tau=h/(2.*fabs(vx)+1e-10);
+				for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(dt*mb+dt*vz)*tau*(vx*dbasis[0*numnodes+i]);
+			}
+			else{ 
+				vx_input->GetInputAverage(&vx);
+				vy_input->GetInputAverage(&vy);
+				tau=1*h/(2.*pow(vx*vx+vy*vy,0.5)+1e-10);
+				for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(bed*0.+dt*mb+dt*vz)*tau*(vx*dbasis[0*numnodes+i]+vy*dbasis[1*numnodes+i]);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return pe;
+
+}/*}}}*/
+void           FreeSurfaceBaseAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void           FreeSurfaceBaseAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           FreeSurfaceBaseAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	element->InputUpdateFromSolutionOneDof(solution,BaseEnum);
+}/*}}}*/
+void           FreeSurfaceBaseAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+
+	/*Intermediary*/
+	IssmDouble phi,isonbase,base;
+
+	for(Object* & object : femmodel->elements->objects){
+
+		Element* element=xDynamicCast<Element*>(object);
+		if(!element->IsOnBase()) continue;
+
+		int             numnodes = element->GetNumberOfNodes();
+		Input* groundedice_input = element->GetInput(MaskOceanLevelsetEnum);  _assert_(groundedice_input);
+		Input* onbase_input       = element->GetInput(MeshVertexonbaseEnum);          _assert_(onbase_input);
+		Input* base_input        = element->GetInput(BaseEnum);                     _assert_(base_input);
+
+		Gauss* gauss=element->NewGauss();
+		for(int iv=0;iv<numnodes;iv++){
+			gauss->GaussNode(element->GetElementType(),iv);
+			onbase_input->GetInputValue(&isonbase,gauss);
+			if(isonbase==1.){
+				groundedice_input->GetInputValue(&phi,gauss);
+				if(phi>=0.){
+					base_input->GetInputValue(&base,gauss);
+					element->nodes[iv]->ApplyConstraint(0,base);
+				}
+				else{
+					element->nodes[iv]->DofInFSet(0);
+				}
+			}
+		}
+		delete gauss;
+	}
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/FreeSurfaceBaseAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/FreeSurfaceBaseAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/FreeSurfaceBaseAnalysis.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file FreeSurfaceBaseAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _FreeSurfaceBaseAnalysis_
+#define _FreeSurfaceBaseAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class FreeSurfaceBaseAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/FreeSurfaceTopAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/FreeSurfaceTopAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/FreeSurfaceTopAnalysis.cpp	(revision 27955)
@@ -0,0 +1,459 @@
+#include "./FreeSurfaceTopAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void FreeSurfaceTopAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void FreeSurfaceTopAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Intermediaries*/
+	int penpair_ids[2];
+	int count=0;
+	int numvertex_pairing;
+
+	/*Create Penpair for vertex_pairing: */
+	IssmDouble *vertex_pairing=NULL;
+	IssmDouble *nodeonsurface=NULL;
+	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.masstransport.vertex_pairing");
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(&nodeonsurface,NULL,NULL,"md.mesh.vertexonsurface");
+	for(int i=0;i<numvertex_pairing;i++){
+
+		if(iomodel->my_vertices[reCast<int>(vertex_pairing[2*i+0])-1]){
+
+			/*In debugging mode, check that the second node is in the same cpu*/
+			_assert_(iomodel->my_vertices[reCast<int>(vertex_pairing[2*i+1])-1]);
+
+			/*Skip if one of the two is not on the bed*/
+			if(iomodel->domaintype!=Domain2DhorizontalEnum){
+				if(!(reCast<bool>(nodeonsurface[reCast<int>(vertex_pairing[2*i+0])-1])) || !(reCast<bool>(nodeonsurface[reCast<int>(vertex_pairing[2*i+1])-1]))) continue;
+			}
+
+			/*Get node ids*/
+			penpair_ids[0]=reCast<int>(vertex_pairing[2*i+0]);
+			penpair_ids[1]=reCast<int>(vertex_pairing[2*i+1]);
+
+			/*Create Load*/
+			loads->AddObject(new Penpair( count+1, &penpair_ids[0]));
+			count++;
+		}
+	}
+
+	/*Free resources: */
+	iomodel->DeleteData(vertex_pairing,"md.masstransport.vertex_pairing");
+	iomodel->DeleteData(nodeonsurface,"md.mesh.vertexonsurface");
+}/*}}}*/
+void FreeSurfaceTopAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,FreeSurfaceTopAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  FreeSurfaceTopAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void FreeSurfaceTopAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Now, is the model 3d? otherwise, do nothing: */
+	if (iomodel->domaintype==Domain2DhorizontalEnum)return;
+
+	int smb_model;
+	int finiteelement = P1Enum;
+
+	/*Fetch data needed: */
+	iomodel->FindConstant(&smb_model,"md.smb.model");
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+	}
+	if(iomodel->domaindim==3){
+		iomodel->FetchDataToInput(inputs,elements,"md.initialization.vz",VzEnum);
+	}
+	switch(smb_model){
+		case SMBforcingEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.mass_balance",SmbMassBalanceEnum,0.);
+			break;
+		default:
+			/*Nothing for now*/
+			;
+	}
+}/*}}}*/
+void FreeSurfaceTopAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           FreeSurfaceTopAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           FreeSurfaceTopAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* FreeSurfaceTopAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* FreeSurfaceTopAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+	_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* FreeSurfaceTopAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         domaintype,dim,stabilization;
+	Element*    topelement = NULL;
+	IssmDouble *xyz_list  = NULL;
+	IssmDouble  Jdet,D_scalar,dt,h;
+	IssmDouble  vel,vx,vy,tau;
+
+	/*Get top element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			topelement = element;
+			dim = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnSurface()) return NULL;
+			topelement = element->SpawnTopElement();
+			dim = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnSurface()) return NULL;
+			topelement = element->SpawnTopElement();
+			dim = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = topelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke     = topelement->NewElementMatrix(NoneApproximationEnum);
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    D      = xNew<IssmDouble>(dim*dim);
+
+	/*Retrieve all inputs and parameters*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+	topelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	topelement->FindParam(&stabilization,MasstransportStabilizationEnum);
+	Input* vx_input=topelement->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=NULL;
+	if(dim>1){vy_input = topelement->GetInput(VyEnum); _assert_(vy_input);}
+	h = topelement->CharacteristicLength();
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(2);
+	while(gauss->next()){
+
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		topelement->NodalFunctions(basis,gauss);
+		topelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		vx_input->GetInputValue(&vx,gauss);
+		if(dim==2) vy_input->GetInputValue(&vy,gauss);
+
+		/*Transient term*/
+		D_scalar=gauss->weight*Jdet;
+		for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D_scalar*basis[i]*basis[j];
+
+		/*Advection terms*/
+		D_scalar=dt*gauss->weight*Jdet;
+		for(int i=0;i<dim*dim;i++) D[i]=0.;
+		D[0] = D_scalar*vx;
+		if(dim==2) D[1*dim+1]=D_scalar*vy;
+
+		if(dim==1){
+			/*\phi_i v\cdot\nabla\phi_j*/
+			for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D_scalar*basis[i]*vx*dbasis[0*numnodes+j];
+		}
+		else{
+			_assert_(dim==2);
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					/*\phi_i v\cdot\nabla\phi_j*/
+					Ke->values[i*numnodes+j] += D_scalar*basis[i]*(vx*dbasis[0*numnodes+j] + vy*dbasis[1*numnodes+j]);
+				}
+			}
+		}
+
+		if(stabilization==1){
+			/*artifical diffusion*/
+			if(dim==1){
+				vx_input->GetInputAverage(&vx);
+				D[0]=h/2.*fabs(vx);
+			}
+			else{
+				vx_input->GetInputAverage(&vx);
+				vy_input->GetInputAverage(&vy);
+
+				D[0*dim+0]=h/2.0*fabs(vx);
+				D[1*dim+1]=h/2.0*fabs(vy);
+			}
+		}
+		else if(stabilization==2){
+			/*Streamline upwinding*/
+			if(dim==1){
+				vel=fabs(vx)+1.e-8;
+				D[0] = h/(2.*vel)*vx*vx;
+			}
+			else{
+				vel=sqrt(vx*vx+vy*vy)+1.e-8;
+				D[0*dim+0]=h/(2*vel)*vx*vx;
+				D[1*dim+0]=h/(2*vel)*vy*vx;
+				D[0*dim+1]=h/(2*vel)*vx*vy;
+				D[1*dim+1]=h/(2*vel)*vy*vy;
+			}
+		}
+		else if(stabilization==5){
+			/*SUPG*/
+			if(dim==1){
+				vx_input->GetInputAverage(&vx);
+				tau=h/(2.*fabs(vx)+1e-10);
+			}
+			else{
+				vx_input->GetInputAverage(&vx);
+				vy_input->GetInputAverage(&vy);
+				tau=1*h/(2.*pow(vx*vx+vy*vy,0.5)+1e-10);
+			}
+		}
+		if(stabilization==1 || stabilization==2){
+			for(int i=0;i<dim*dim;i++) D[i]=D_scalar*D[i];
+			if(dim==2){
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j] += (
+								dbasis[0*numnodes+i] *(D[0*dim+0]*dbasis[0*numnodes+j] + D[0*dim+1]*dbasis[1*numnodes+j]) +
+								dbasis[1*numnodes+i] *(D[1*dim+0]*dbasis[0*numnodes+j] + D[1*dim+1]*dbasis[1*numnodes+j]) 
+								);
+					}
+				}
+			}
+			else{
+				for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += dbasis[0*numnodes+i]*D[0]*dbasis[0*numnodes+j];
+			}
+		}
+		else if(stabilization==5){
+			D_scalar=gauss->weight*Jdet*dt;
+			if(dim==2){
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=tau*D_scalar*
+							(vx*dbasis[0*numnodes+i]+vy*dbasis[1*numnodes+i])*
+							(vx*dbasis[0*numnodes+j]+vy*dbasis[1*numnodes+j]);
+					}
+				}
+			}
+			else{
+				for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j]+=tau*D_scalar*(vx*dbasis[0*numnodes+i])*(vx*dbasis[0*numnodes+j]);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(D);
+	delete gauss;
+	if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
+	return Ke;
+}/*}}}*/
+ElementVector* FreeSurfaceTopAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         domaintype,dim,stabilization;
+	IssmDouble  Jdet,dt;
+	IssmDouble  ms,surface,vx,vy,vz,tau;
+	Element*    topelement = NULL;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Get top element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			topelement = element;
+			dim = 2;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnSurface()) return NULL;
+			topelement = element->SpawnTopElement();
+			dim = 1;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnSurface()) return NULL;
+			topelement = element->SpawnTopElement();
+			dim = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = topelement->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = topelement->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(dim*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+	topelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input *ms_input      = topelement->GetInput(SmbMassBalanceEnum); _assert_(ms_input);
+	Input *surface_input = topelement->GetInput(SurfaceEnum);        _assert_(surface_input);
+	Input *vz_input      = NULL;
+	Input *vx_input      = NULL;
+	Input *vy_input      = NULL;
+	switch(dim){
+		case 1: 
+			vx_input=topelement->GetInput(VxEnum); _assert_(vx_input);
+			vz_input = topelement->GetInput(VyEnum)	; _assert_(vz_input); 
+			break;
+		case 2: 
+			vx_input=topelement->GetInput(VxEnum); _assert_(vx_input);
+			vy_input = topelement->GetInput(VyEnum); _assert_(vy_input);
+			vz_input = topelement->GetInput(VzEnum); _assert_(vz_input); 
+			break;
+		default: _error_("not implemented");
+	}
+	IssmDouble h = topelement->CharacteristicLength();
+
+	/*Initialize mb_correction to 0, do not forget!:*/
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(2);
+	while(gauss->next()){
+
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		topelement->NodalFunctions(basis,gauss);
+
+		ms_input->GetInputValue(&ms,gauss);
+		vz_input->GetInputValue(&vz,gauss);
+		surface_input->GetInputValue(&surface,gauss);
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(surface + dt*ms + dt*vz)*basis[i];
+	}
+
+	if(stabilization==5){
+		/*SUPG*/
+		topelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+		if(dim==1){
+			vx_input->GetInputAverage(&vx);
+			tau=h/(2.*fabs(vx)+1e-10);
+			for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(dt*ms+dt*vz)*tau*(vx*dbasis[0*numnodes+i]);
+		}
+		else{
+			vx_input->GetInputAverage(&vx);
+			vy_input->GetInputAverage(&vy);
+			tau=h/(2.*pow(vx*vx+vy*vy,0.5)+1e-10);
+			for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(dt*ms+dt*vz)*tau*(vx*dbasis[0*numnodes+i]+vy*dbasis[1*numnodes+i]);
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
+	return pe;
+
+}/*}}}*/
+void           FreeSurfaceTopAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void           FreeSurfaceTopAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           FreeSurfaceTopAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	element->InputUpdateFromSolutionOneDof(solution,SurfaceEnum);
+
+	/*Now, we need to do some "processing"*/
+	int numvertices = element->GetNumberOfVertices();
+	int        migration_style;
+
+	IssmDouble* surface = xNew<IssmDouble>(numvertices);
+	IssmDouble* newsurface = xNew<IssmDouble>(numvertices);
+	IssmDouble* thickness = xNew<IssmDouble>(numvertices);
+	IssmDouble* base = xNew<IssmDouble>(numvertices);
+	IssmDouble* bed = xNew<IssmDouble>(numvertices);
+	IssmDouble* phi = xNew<IssmDouble>(numvertices);
+	IssmDouble* sealevel = xNew<IssmDouble>(numvertices);
+
+	IssmDouble minthickness = element->FindParam(MasstransportMinThicknessEnum);
+	IssmDouble rho_ice      = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble rho_water    = element->FindParam(MaterialsRhoSeawaterEnum);
+
+	bool isgroundingline;
+	element->FindParam(&isgroundingline,TransientIsgroundinglineEnum);
+	element->FindParam(&migration_style,GroundinglineMigrationEnum);
+	if(isgroundingline) element->GetInputListOnVertices(&bed[0],BedEnum);
+
+	element->GetInputListOnVertices(&base[0],BaseEnum);
+	element->GetInputListOnVertices(&surface[0],SurfaceEnum);
+	element->GetInputListOnVertices(&phi[0],MaskOceanLevelsetEnum);
+	element->GetInputListOnVertices(&sealevel[0],SealevelEnum);
+
+	for(int i=0;i<numvertices;i++){
+		newsurface[i]=surface[i];
+		thickness[i]=surface[i]-base[i];
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(thickness[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(thickness[i])) _error_("Inf found in solution vector");
+
+		/* check for thickness<minthickness */
+		if(thickness[i]<minthickness){ 
+			thickness[i]=minthickness;
+			if(phi[i]>0.){
+				if(base[i]<=bed[i]) base[i] = bed[i];
+				newsurface[i] = base[i]+minthickness;
+			}else{
+				// assume floatation condition
+				newsurface[i] = (1.-rho_ice/rho_water)*minthickness;
+				base[i] = -rho_ice/rho_water*minthickness;
+			}
+		}
+
+		/* update thickness */
+		thickness[i]=newsurface[i]-base[i];
+		/* some checks */
+		if(thickness[i]<0.) _error_("thickness<0");
+		if(newsurface[i]<base[i]) _error_("surface<base");
+	}
+
+	/* update inputs */
+	element->AddInput(BaseEnum,base,element->GetElementType());
+	element->AddInput(SurfaceEnum,newsurface,element->GetElementType());
+	element->AddInput(ThicknessEnum,thickness,element->GetElementType());
+
+	/* Free resources */
+	xDelete<IssmDouble>(newsurface);
+	xDelete<IssmDouble>(surface);
+	xDelete<IssmDouble>(thickness);
+	xDelete<IssmDouble>(base);
+	xDelete<IssmDouble>(bed);
+	xDelete<IssmDouble>(phi);
+	xDelete<IssmDouble>(sealevel);
+}/*}}}*/
+void           FreeSurfaceTopAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/FreeSurfaceTopAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/FreeSurfaceTopAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/FreeSurfaceTopAnalysis.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file FreeSurfaceTopAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _FreeSurfaceTopAnalysis_
+#define _FreeSurfaceTopAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class FreeSurfaceTopAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/GLheightadvectionAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/GLheightadvectionAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/GLheightadvectionAnalysis.cpp	(revision 27955)
@@ -0,0 +1,239 @@
+#include "./GLheightadvectionAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void GLheightadvectionAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*No constraints for now*/
+}/*}}}*/
+void GLheightadvectionAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*No loads*/
+}/*}}}*/
+void GLheightadvectionAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	/*First fetch data: */
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,GLheightadvectionAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  GLheightadvectionAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void GLheightadvectionAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+	iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonboundary",MeshVertexonboundaryEnum);
+}/*}}}*/
+void GLheightadvectionAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           GLheightadvectionAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           GLheightadvectionAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* GLheightadvectionAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* GLheightadvectionAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+	_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* GLheightadvectionAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/* Spawn basal element */
+	if(!element->IsOnBase()) return NULL;
+	Element* basalelement = element->SpawnBasalElement();
+
+	/* Check if ice in element */
+	if(!basalelement->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	const IssmPDouble yts = 365*24*3600.;
+	int        domaintype,dim;
+	IssmDouble Jdet,D_scalar,onboundary;
+	IssmDouble vel,vx,vy;
+	IssmDouble* xyz_list      = NULL;
+	Input* vx_input           = NULL;
+	Input* vy_input           = NULL;
+	Input* bc_input           = NULL;
+
+	/*Get problem dimension*/
+	basalelement->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 2; break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = basalelement->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble     D[2][2] = {0.};
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	vx_input=basalelement->GetInput(VxEnum); _assert_(vx_input);
+	vy_input=basalelement->GetInput(VyEnum); _assert_(vy_input);
+	bc_input=basalelement->GetInput(MeshVertexonboundaryEnum); _assert_(bc_input);
+
+	IssmDouble h = basalelement->CharacteristicLength();
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(4);
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+		basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		/*Get velocity*/
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+
+		if(false){
+			/*Streamline diffusion*/
+			vel = sqrt(vx*vx+vy*vy);
+			if(vel<10./yts){
+				vx = 0.; vy = 0.;
+				vel = 30./yts*500000.;
+			}
+
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += gauss->weight*Jdet*(
+								(vx*dbasis[0*numnodes+i] + vy*dbasis[1*numnodes+i])*(vx*dbasis[0*numnodes+j] + vy*dbasis[1*numnodes+j])
+								+ vel/500000.*(dbasis[0*numnodes+i]*dbasis[0*numnodes+j] + dbasis[1*numnodes+i]*dbasis[1*numnodes+j]));
+				}
+			}
+		}
+		else{
+			D_scalar=gauss->weight*Jdet;
+
+			bc_input->GetInputValue(&onboundary,gauss);
+			if(onboundary>0.){
+				/*We do not want to advect garbage, make sure only diffusion is applied on boundary*/
+				vx = 0.; vy = 0.;
+			}
+
+			/*Diffusion */
+			if(sqrt(vx*vx+vy*vy)<1000./31536000.){
+				IssmPDouble kappa = -10.;
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j] += D_scalar*kappa*(dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i]);
+					}
+				}
+			}
+
+			/*Advection: */
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += (D_scalar*(vx*dbasis[0*numnodes+j]*basis[i] + vy*dbasis[1*numnodes+j]*basis[i]))*1e-2;
+				}
+			}
+
+			/*Artificial diffusivity*/
+			vel=sqrt(vx*vx + vy*vy)+1.e-14;
+			D[0][0]=D_scalar*h/(2.*vel)*fabs(vx*vx);  D[0][1]=D_scalar*h/(2.*vel)*fabs(vx*vy);
+			D[1][0]=D_scalar*h/(2.*vel)*fabs(vy*vx);  D[1][1]=D_scalar*h/(2.*vel)*fabs(vy*vy);
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += (
+								dbasis[0*numnodes+i] *(D[0][0]*dbasis[0*numnodes+j] + D[0][1]*dbasis[1*numnodes+j]) +
+								dbasis[1*numnodes+i] *(D[1][0]*dbasis[0*numnodes+j] + D[1][1]*dbasis[1*numnodes+j]) 
+								);
+				}
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+
+}/*}}}*/
+ElementVector* GLheightadvectionAnalysis::CreatePVector(Element* element){/*{{{*/
+	return NULL;
+}/*}}}*/
+void           GLheightadvectionAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void           GLheightadvectionAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           GLheightadvectionAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->InputUpdateFromSolutionOneDof(solution,GroundinglineHeightEnum);
+			break;
+		case Domain3DEnum:
+			element->InputUpdateFromSolutionOneDofCollapsed(solution,GroundinglineHeightEnum);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}/*}}}*/
+void           GLheightadvectionAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+
+	/*Deal with ocean constraint*/
+	SetActiveNodesLSMx(femmodel);
+
+	/*Constrain all nodes that are grounded and unconstrain the ones that float*/
+	for(Object* & object : femmodel->elements->objects){
+		Element    *element  = xDynamicCast<Element*>(object);
+		int         numnodes  = element->GetNumberOfNodes();
+		IssmDouble *mask      = xNew<IssmDouble>(numnodes);
+		IssmDouble *bed       = xNew<IssmDouble>(numnodes);
+		IssmDouble *ls_active = xNew<IssmDouble>(numnodes);
+
+		element->GetInputListOnNodes(&mask[0],MaskOceanLevelsetEnum);
+		element->GetInputListOnNodes(&bed[0],BaseEnum);
+		element->GetInputListOnNodes(&ls_active[0],IceMaskNodeActivationEnum);
+
+		for(int in=0;in<numnodes;in++){
+			Node* node=element->GetNode(in);
+			if(mask[in]<0. && ls_active[in]==1.){
+				node->Activate();
+			}
+			else{
+				node->Deactivate();
+				node->ApplyConstraint(0,bed[in]);
+			}
+		}
+		xDelete<IssmDouble>(mask);
+		xDelete<IssmDouble>(bed);
+		xDelete<IssmDouble>(ls_active);
+	}
+
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/GLheightadvectionAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/GLheightadvectionAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/GLheightadvectionAnalysis.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file GLheightadvectionAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _GLheightadvectionAnalysis_
+#define _GLheightadvectionAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class GLheightadvectionAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyArmapwAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyArmapwAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyArmapwAnalysis.cpp	(revision 27955)
@@ -0,0 +1,170 @@
+#include "./HydrologyArmapwAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void HydrologyArmapwAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	return;
+
+}/*}}}*/
+void HydrologyArmapwAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	/*No loads*/
+}/*}}}*/
+void HydrologyArmapwAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	return;
+
+}/*}}}*/
+int  HydrologyArmapwAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 0;
+}/*}}}*/
+void HydrologyArmapwAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Fetch data needed: */
+   int    hydrology_model,frictionlaw;
+   iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+   /*Now, do we really want armapw?*/
+   if(hydrology_model!=HydrologyarmapwEnum) return;
+
+   /*Add input to elements*/
+   iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+   iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
+   iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.basin_id",HydrologyBasinsIdEnum);
+   iomodel->FetchDataToInput(inputs,elements,"md.initialization.watercolumn",WatercolumnEnum,0.);
+
+}/*}}}*/
+void HydrologyArmapwAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	/*retrieve some parameters: */
+	int    hydrology_model;
+	int    numoutputs;
+	char** requestedoutputs = NULL;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want Armapw?*/
+	if(hydrology_model!=HydrologyarmapwEnum) return;
+
+	parameters->AddObject(new IntParam(HydrologyModelEnum,hydrology_model));
+  /*Requested outputs*/
+  iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.hydrology.requested_outputs");
+  parameters->AddObject(new IntParam(HydrologyNumRequestedOutputsEnum,numoutputs));
+  if(numoutputs)parameters->AddObject(new StringArrayParam(HydrologyRequestedOutputsEnum,requestedoutputs,numoutputs));
+  iomodel->DeleteData(&requestedoutputs,numoutputs,"md.hydrology.requested_outputs");
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           HydrologyArmapwAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           HydrologyArmapwAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* HydrologyArmapwAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* HydrologyArmapwAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+	_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* HydrologyArmapwAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	_error_("Not implemented");
+}/*}}}*/
+ElementVector* HydrologyArmapwAnalysis::CreatePVector(Element* element){/*{{{*/
+	_error_("Not implemented");
+}/*}}}*/
+void           HydrologyArmapwAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	_error_("Not implemented");
+}/*}}}*/
+void           HydrologyArmapwAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented");
+}/*}}}*/
+void           HydrologyArmapwAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	_error_("Not implemented");
+}/*}}}*/
+void           HydrologyArmapwAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	_error_("Not implemented");
+}/*}}}*/
+
+/*Additional methods*/
+void HydrologyArmapwAnalysis::UpdateSubglacialWaterPressure(FemModel* femmodel){/*{{{*/
+
+	/*Get time parameters*/
+   IssmDouble time,dt,starttime,tstep_arma;
+   femmodel->parameters->FindParam(&time,TimeEnum);
+   femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+   femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum);
+   femmodel->parameters->FindParam(&tstep_arma,HydrologyarmaTimestepEnum);
+
+	/*Determine if this is a time step for the ARMA model*/
+   bool isstepforarma = false;
+
+   #ifndef _HAVE_AD_
+   if((fmod(time,tstep_arma)<fmod((time-dt),tstep_arma)) || (time<=starttime+dt) || tstep_arma==dt) isstepforarma = true;
+   #else
+   _error_("not implemented yet");
+   #endif
+
+   /*Load parameters*/
+   bool isstochastic;
+   bool ispwstochastic = false;
+   int M,N,arorder,maorder,numbasins,numparams,numbreaks,my_rank;
+   femmodel->parameters->FindParam(&numbasins,HydrologyNumBasinsEnum);
+   femmodel->parameters->FindParam(&numparams,HydrologyarmaNumParamsEnum);
+   femmodel->parameters->FindParam(&numbreaks,HydrologyarmaNumBreaksEnum);
+   femmodel->parameters->FindParam(&arorder,HydrologyarmaarOrderEnum);
+   femmodel->parameters->FindParam(&maorder,HydrologyarmamaOrderEnum);
+   IssmDouble* datebreaks        = NULL;
+   IssmDouble* arlagcoefs        = NULL;
+   IssmDouble* malagcoefs        = NULL;
+	IssmDouble* monthlyfactors    = NULL;
+   IssmDouble* polyparams        = NULL;	
+
+	femmodel->parameters->FindParam(&datebreaks,&M,&N,HydrologyarmadatebreaksEnum);            _assert_(M==numbasins); _assert_(N==max(numbreaks,1));
+   femmodel->parameters->FindParam(&polyparams,&M,&N,HydrologyarmapolyparamsEnum);            _assert_(M==numbasins); _assert_(N==(numbreaks+1)*numparams);
+   femmodel->parameters->FindParam(&arlagcoefs,&M,&N,HydrologyarmaarlagcoefsEnum);            _assert_(M==numbasins); _assert_(N==arorder);
+   femmodel->parameters->FindParam(&malagcoefs,&M,&N,HydrologyarmamalagcoefsEnum);            _assert_(M==numbasins); _assert_(N==maorder);
+	femmodel->parameters->FindParam(&monthlyfactors,&M,&N,HydrologyarmaMonthlyFactorsEnum);    _assert_(M==numbasins); _assert_(N==12);
+
+	femmodel->parameters->FindParam(&isstochastic,StochasticForcingIsStochasticForcingEnum);
+   if(isstochastic){
+      int  numstochasticfields;
+      int* stochasticfields;
+      femmodel->parameters->FindParam(&numstochasticfields,StochasticForcingNumFieldsEnum);
+      femmodel->parameters->FindParam(&stochasticfields,&N,StochasticForcingFieldsEnum); _assert_(N==numstochasticfields);
+      for(int i=0;i<numstochasticfields;i++){
+         if(stochasticfields[i]==FrictionWaterPressureEnum) ispwstochastic = true;
+      }
+      xDelete<int>(stochasticfields);
+   }
+
+	/*Check if seasonality is imposed*/
+	bool isseasonality = false;
+	for(int i=0;i<numbasins*12;i++){
+		if(monthlyfactors[i]!=1) isseasonality = true;
+	}
+
+	/*Loop over each element to compute Subglacial Water Pressure at vertices*/
+   for(Object* &object:femmodel->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+      /*Compute ARMA perturbation values*/
+      element->ArmaProcess(isstepforarma,arorder,maorder,numparams,numbreaks,tstep_arma,polyparams,arlagcoefs,malagcoefs,datebreaks,ispwstochastic,HydrologyarmapwEnum);
+      /*Compute subglacial water pressure with the ARMA perturbation*/
+		element->SubglacialWaterPressure(FrictionWaterPressureEnum);
+		/*Scale with monthly factors*/
+		if(isseasonality) element->MonthlyFactorBasin(monthlyfactors,HydrologyarmapwEnum);
+   }
+
+	/*Cleanup*/
+   xDelete<IssmDouble>(arlagcoefs);
+   xDelete<IssmDouble>(malagcoefs);
+   xDelete<IssmDouble>(polyparams);
+   xDelete<IssmDouble>(datebreaks);
+   xDelete<IssmDouble>(monthlyfactors);
+}/*}}}*/
+
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyArmapwAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyArmapwAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyArmapwAnalysis.h	(revision 27955)
@@ -0,0 +1,37 @@
+/*! \file HydrologyArmapwAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _HydrologyArmapwAnalysis_
+#define _HydrologyArmapwAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class HydrologyArmapwAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+
+		/*Intermediaries*/
+		void UpdateSubglacialWaterPressure(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyDCEfficientAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyDCEfficientAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyDCEfficientAnalysis.cpp	(revision 27955)
@@ -0,0 +1,810 @@
+#include "./HydrologyDCEfficientAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+int  HydrologyDCEfficientAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void HydrologyDCEfficientAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	bool        isefficientlayer;
+	int         hydrology_model;
+	int         eplflip_lock;
+	int         eplthickcomp;
+	IssmDouble  eplinitthick;
+	IssmDouble  eplcolapsethick;
+	IssmDouble  eplmaxthick;
+	IssmDouble  eplcond;
+
+	/*retrieve some parameters: */
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want DC?*/
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	/*Do we want an efficient layer*/
+	iomodel->FindConstant(&isefficientlayer,"md.hydrology.isefficientlayer");
+
+	/*If not return*/
+	if(!isefficientlayer) return;
+
+	/*If yes, get the parameters*/
+	iomodel->FetchData(&eplflip_lock,"md.hydrology.eplflip_lock");
+	iomodel->FetchData(&eplthickcomp,"md.hydrology.epl_thick_comp");
+
+	parameters->AddObject(new IntParam(HydrologydcEplflipLockEnum,eplflip_lock));
+	parameters->AddObject(new IntParam(HydrologydcEplThickCompEnum,eplthickcomp));
+
+	iomodel->FetchData(&eplinitthick,"md.hydrology.epl_initial_thickness");
+	iomodel->FetchData(&eplcolapsethick,"md.hydrology.epl_colapse_thickness");
+	iomodel->FetchData(&eplmaxthick,"md.hydrology.epl_max_thickness");
+	iomodel->FetchData(&eplcond,"md.hydrology.epl_conductivity");
+	parameters->AddObject(new DoubleParam(HydrologydcEplInitialThicknessEnum,eplinitthick));
+	parameters->AddObject(new DoubleParam(HydrologydcEplColapseThicknessEnum,eplcolapsethick));
+	parameters->AddObject(new DoubleParam(HydrologydcEplMaxThicknessEnum,eplmaxthick));
+	parameters->AddObject(new DoubleParam(HydrologydcEplConductivityEnum,eplcond));
+
+}/*}}}*/
+void HydrologyDCEfficientAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	bool   isefficientlayer;
+	int    hydrology_model;
+
+	/*Now, do we really want DC?*/
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	/*Do we want an efficient layer*/
+	iomodel->FindConstant(&isefficientlayer,"md.hydrology.isefficientlayer");
+	if(!isefficientlayer) return;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.epl_head",EplHeadSubstepEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.sediment_head",SedimentHeadSubstepEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.epl_thickness",HydrologydcEplThicknessSubstepEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.basal_moulin_input",HydrologydcBasalMoulinInputEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+}/*}}}*/
+void HydrologyDCEfficientAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	/*Now, do we really want DC?*/
+	int  hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	/*Do we want an efficient layer*/
+	bool isefficientlayer;
+	iomodel->FindConstant(&isefficientlayer,"md.hydrology.isefficientlayer");
+	if(!isefficientlayer) return;
+
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	}
+	::CreateNodes(nodes,iomodel,HydrologyDCEfficientAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+void HydrologyDCEfficientAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*Do we really want DC?*/
+	int  hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	/*Do we want an efficient layer*/
+	bool isefficientlayer;
+	iomodel->FindConstant(&isefficientlayer,"md.hydrology.isefficientlayer");
+	if(!isefficientlayer) return;
+
+	IoModelToConstraintsx(constraints,iomodel,"md.hydrology.spcepl_head",HydrologyDCEfficientAnalysisEnum,P1Enum);
+}/*}}}*/
+void HydrologyDCEfficientAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Do we really want DC?*/
+	int hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	/*Do we want an efficient layer*/
+	bool isefficientlayer;
+	iomodel->FindConstant(&isefficientlayer,"md.hydrology.isefficientlayer");
+	if(!isefficientlayer) return;
+
+	/*Fetch parameters: */
+	if(iomodel->domaintype==Domain3DEnum){
+		iomodel->FetchData(1,"md.mesh.vertexonbase");
+	}
+
+	//Add moulin inputs as loads
+	CreateSingleNodeToElementConnectivity(iomodel);
+	for(int i=0;i<iomodel->numberofvertices;i++){
+		if (iomodel->domaintype!=Domain3DEnum){
+			/*keep only this partition's nodes:*/
+			if(iomodel->my_vertices[i]){
+				loads->AddObject(new Moulin(i+1,i,iomodel));
+			}
+		}
+		else if(reCast<int>(iomodel->Data("md.mesh.vertexonbase")[i])){
+			if(iomodel->my_vertices[i]){
+				loads->AddObject(new Moulin(i+1,i,iomodel));
+			}
+		}
+	}
+	iomodel->DeleteData(1,"md.mesh.vertexonbase");
+}/*}}}*/
+void HydrologyDCEfficientAnalysis::InitZigZagCounter(FemModel* femmodel){/*{{{*/
+
+	int*   eplzigzag_counter =NULL;
+	eplzigzag_counter=xNewZeroInit<int>(femmodel->nodes->Size());
+	femmodel->parameters->AddObject(new IntVecParam(EplZigZagCounterEnum,eplzigzag_counter,femmodel->nodes->Size()));
+	xDelete<int>(eplzigzag_counter);
+}/*}}}*/
+void HydrologyDCEfficientAnalysis::ResetCounter(FemModel* femmodel){/*{{{*/
+
+	int*     eplzigzag_counter=NULL;
+	femmodel->parameters->FindParam(&eplzigzag_counter,NULL,EplZigZagCounterEnum);
+	for(int i=0;i<femmodel->nodes->Size();i++){
+		eplzigzag_counter[i]=0;
+	}
+	femmodel->parameters->SetParam(eplzigzag_counter,femmodel->nodes->Size(),EplZigZagCounterEnum);
+	xDelete<int>(eplzigzag_counter);
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void HydrologyDCEfficientAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void HydrologyDCEfficientAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* HydrologyDCEfficientAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* HydrologyDCEfficientAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* HydrologyDCEfficientAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	bool     active_element;
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	basalelement->GetInputValue(&active_element,HydrologydcMaskEplactiveEltEnum);
+	/*Check that all nodes are active, else return empty matrix*/
+	if(!active_element) {
+		if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+		return NULL;
+	}
+
+	/* Intermediaries */
+	IssmDouble  D_scalar,Jdet,dt;
+	IssmDouble  transfer;
+	IssmDouble  epl_transmitivity;
+	IssmDouble  epl_storing;
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke     = basalelement->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input* epl_thick_input = basalelement->GetInput(HydrologydcEplThicknessSubstepEnum); _assert_(epl_thick_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = basalelement->NewGauss(2);
+	while(gauss->next()){
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+
+		epl_transmitivity = EplTransmitivity(basalelement,gauss,epl_thick_input);
+		epl_storing			= EplStoring(basalelement,gauss,epl_thick_input);
+
+		/*Diffusivity*/
+		D_scalar=epl_transmitivity*gauss->weight*Jdet;
+		if(dt!=0.) D_scalar=D_scalar*dt;
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += D_scalar*(dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i]);
+			}
+		}
+		/*Transient*/
+		if(dt!=0.){
+			D_scalar=epl_storing*gauss->weight*Jdet;
+			for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D_scalar*basis[j]*basis[i];
+			/*Transfer EPL part*/
+			transfer=GetHydrologyKMatrixTransfer(basalelement);
+			D_scalar=dt*transfer*gauss->weight*Jdet;
+			for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D_scalar*basis[j]*basis[i];
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+ElementVector* HydrologyDCEfficientAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	bool     active_element;
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	basalelement->GetInputValue(&active_element,HydrologydcMaskEplactiveEltEnum);
+
+	/*Check that all nodes are active, else return empty matrix*/
+	if(!active_element) {
+		if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+		return NULL;
+	}
+	/*Intermediaries */
+	int        smb_model,smb_averaging;
+	int        smbsubstepping,hydrologysubstepping;
+	IssmDouble dt,scalar,water_head;
+	IssmDouble water_load,transfer,runoff_value;
+	IssmDouble epl_storing;  //,epl_transmitivity;
+	IssmDouble Jdet,time;
+	IssmDouble residual,connectivity;
+	IssmDouble active_node;
+
+	IssmDouble *xyz_list             = NULL;
+	Input     *old_wh_input         = NULL;
+	Input     *dummy_input          = NULL;
+	Input     *surface_runoff_input = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes    = basalelement->GetNumberOfNodes();
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*Initialize Element vector*/
+	ElementVector* pe    = basalelement->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	basalelement ->FindParam(&smb_model,SmbEnum);
+
+	Input*	epl_thick_input  = basalelement->GetInput(HydrologydcEplThicknessSubstepEnum); _assert_(epl_thick_input);
+	Input*	sed_head_input   = basalelement->GetInput(SedimentHeadSubstepEnum); _assert_(sed_head_input);
+	Input*	basal_melt_input = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(basal_melt_input);
+	Input*	residual_input   = basalelement->GetInput(SedimentHeadResidualEnum); _assert_(residual_input);
+
+	if(dt!= 0.){
+		old_wh_input = basalelement->GetInput(EplHeadOldEnum);            _assert_(old_wh_input);
+	}
+	if(smb_model==SMBgradientscomponentsEnum){
+		basalelement->FindParam(&time,TimeEnum);
+		basalelement->FindParam(&smbsubstepping,SmbStepsPerStepEnum);
+		basalelement->FindParam(&hydrologysubstepping,HydrologyStepsPerStepEnum);
+
+		if(smbsubstepping==1){
+			//no substeping for the smb we take the result from there
+			dummy_input = basalelement->GetInput(SmbRunoffEnum); _assert_(dummy_input);
+		}
+		else if(smbsubstepping>1 && smbsubstepping<=hydrologysubstepping){
+			//finer hydro stepping, we take the value at the needed time
+			dummy_input = basalelement->GetInput(SmbRunoffTransientEnum, time); _assert_(dummy_input);
+		}
+		else{
+			//finer stepping in smb, we average the runoff from transient input
+			basalelement->FindParam(&smb_averaging,SmbAveragingEnum);
+			dummy_input = basalelement->GetInput(SmbRunoffTransientEnum,time-dt,time,smb_averaging); _assert_(dummy_input);
+		}
+		surface_runoff_input=xDynamicCast<Input*>(dummy_input); _assert_(surface_runoff_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = basalelement->NewGauss(2);
+	while(gauss->next()){
+		basalelement ->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement ->NodalFunctions(basis,gauss);
+		//epl_transmitivity = EplTransmitivity(basalelement,gauss,epl_thick_input);
+		epl_storing	= EplStoring(basalelement,gauss,epl_thick_input);
+
+		/*Loading term*/
+		basal_melt_input->GetInputValue(&water_load,gauss);
+		if(surface_runoff_input) surface_runoff_input->GetInputValue(&runoff_value,gauss);
+		else                     runoff_value = 0.;
+		scalar = Jdet*gauss->weight*(water_load+runoff_value);
+		if(dt!=0.) scalar = scalar*dt;
+		for(int i=0;i<numnodes;i++){
+			//This is the original
+			pe->values[i]+=scalar*basis[i];
+			//This is the noded version
+			/* basalelement->GetInputValue(&active_node,basalelement->nodes[i],HydrologydcMaskEplactiveNodeEnum); */
+			/* if(!reCast<bool>(active_node)){ */
+			/* 	pe->values[i]+=scalar*basis[i]; */
+			//}
+			//if(basalelement->nodes[i]->Sid()==42)_printf_("EPL uni Input "<<scalar*basis[i]<<"\n");
+		}
+		/*Transient and transfer terms*/
+		if(dt!=0.){
+			old_wh_input->GetInputValue(&water_head,gauss);
+			/*Dealing with the epl part of the transfer term*/
+			transfer=GetHydrologyPVectorTransfer(basalelement,gauss,sed_head_input);
+			scalar = Jdet*gauss->weight*((water_head*epl_storing)+(dt*transfer));
+			for(int i=0;i<numnodes;i++)pe->values[i]+=scalar*basis[i];
+		}
+	}
+	delete gauss;
+
+	/*	Add residual if necessary*/
+	gauss = basalelement->NewGauss();
+	for(int iv=0;iv<numvertices;iv++){
+		gauss->GaussVertex(iv);
+		//epl_transmitivity = EplTransmitivity(basalelement,gauss,epl_thick_input);
+		connectivity = IssmDouble(basalelement->VertexConnectivity(iv));
+		residual_input->GetInputValue(&residual,gauss);
+		pe->values[iv]+=residual/connectivity;
+	}
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return pe;
+}/*}}}*/
+void HydrologyDCEfficientAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,EplHeadSubstepEnum);
+}/*}}}*/
+void HydrologyDCEfficientAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void HydrologyDCEfficientAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement=NULL;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+	/*Intermediary*/
+	int* doflist = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Fetch dof list and allocate solution vector*/
+	basalelement->GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* eplHeads = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	/*If the EPL is not active we revert to the bedrock elevation when deactivating*/
+	for(int i=0;i<numnodes;i++){
+		eplHeads[i]=solution[doflist[i]];
+		if(xIsNan<IssmDouble>(eplHeads[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(eplHeads[i])) _error_("Inf found in solution vector");
+	}
+	/*Add input to the element: */
+	element->AddBasalInput(EplHeadSubstepEnum,eplHeads,P1Enum);
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(eplHeads);
+	xDelete<int>(doflist);
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+} /*}}}*/
+void HydrologyDCEfficientAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
+
+/*Intermediaries*/
+IssmDouble HydrologyDCEfficientAnalysis::EplStoring(Element* element,Gauss* gauss, Input* epl_thick_input){/*{{{*/
+	IssmDouble epl_storing;
+	IssmDouble epl_thickness;
+	IssmDouble porewater_mass           = element->FindParam(HydrologydcEplPoreWaterMassEnum);
+	IssmDouble layer_compressibility    = element->FindParam(HydrologydcEplLayerCompressibilityEnum);
+
+	epl_thick_input->GetInputValue(&epl_thickness,gauss);
+	epl_storing=porewater_mass*epl_thickness*layer_compressibility;
+
+	return epl_storing;
+}/*}}}*/
+IssmDouble HydrologyDCEfficientAnalysis::EplTransmitivity(Element* element,Gauss* gauss, Input* epl_thick_input){/*{{{*/
+	IssmDouble epl_transmitivity;
+	IssmDouble epl_thickness;
+	IssmDouble epl_conductivity      = element->FindParam(HydrologydcEplConductivityEnum);
+	epl_thick_input->GetInputValue(&epl_thickness,gauss);
+
+	epl_transmitivity=epl_conductivity*epl_thickness;
+	return epl_transmitivity;
+}/*}}}*/
+void HydrologyDCEfficientAnalysis::GetHydrologyDCInefficientHmax(IssmDouble* ph_max,Element* element, Node* innode){/*{{{*/
+
+	int        hmax_flag;
+	IssmDouble h_max;
+	IssmDouble rho_ice,rho_water;
+	IssmDouble thickness,bed;
+	/*Get the flag to the limitation method*/
+	element->FindParam(&hmax_flag,HydrologydcSedimentlimitFlagEnum);
+
+	/*Switch between the different cases*/
+	switch(hmax_flag){
+	case 0:
+		h_max=1.0e+10;
+		break;
+	case 1:
+		element->FindParam(&h_max,HydrologydcSedimentlimitEnum);
+		break;
+	case 2:
+		/*Compute max*/
+		rho_water = element->FindParam(MaterialsRhoFreshwaterEnum);
+		rho_ice   = element->FindParam(MaterialsRhoIceEnum);
+		element-> GetInputValue(&thickness,innode,ThicknessEnum);
+		element-> GetInputValue(&bed,innode,BaseEnum);
+		h_max=((rho_ice*thickness)/rho_water)+bed;
+		break;
+	case 3:
+		_error_("Using normal stress  not supported yet");
+		break;
+	default:
+		_error_("no case higher than 3 for SedimentlimitFlag");
+	}
+	/*Assign output pointer*/
+	*ph_max=h_max;
+}
+/*}}}*/
+IssmDouble HydrologyDCEfficientAnalysis::GetHydrologyKMatrixTransfer(Element* element){/*{{{*/
+
+	int transfermethod;
+	IssmDouble leakage,transfer;
+
+	element->FindParam(&transfermethod,HydrologydcTransferFlagEnum);
+	/*Switch between the different transfer methods cases*/
+	switch(transfermethod){
+	case 0:
+		/*Just keepping the transfer to zero*/
+		transfer=0.0;
+		break;
+	case 1:
+		element->FindParam(&leakage,HydrologydcLeakageFactorEnum);
+		transfer=+leakage;
+		break;
+	default:
+		_error_("no case higher than 1 for the Transfer method");
+	}
+	return transfer;
+}/*}}}*/
+IssmDouble HydrologyDCEfficientAnalysis::GetHydrologyPVectorTransfer(Element* element, Gauss* gauss, Input* sed_head_input){/*{{{*/
+
+	int transfermethod;
+	IssmDouble sediment_head;
+	IssmDouble leakage,transfer;
+
+	element->FindParam(&transfermethod,HydrologydcTransferFlagEnum);
+	/*Switch between the different transfer methods cases*/
+	switch(transfermethod){
+	case 0:
+		/*Just keepping the transfer to zero*/
+		transfer=0.0;
+		break;
+	case 1:
+		_assert_(sed_head_input);
+		sed_head_input->GetInputValue(&sediment_head,gauss);
+		element->FindParam(&leakage,HydrologydcLeakageFactorEnum);
+		transfer=+sediment_head*leakage;
+		break;
+	default:
+		_error_("no case higher than 1 for the Transfer method");
+	}
+
+	return transfer;
+}/*}}}*/
+void HydrologyDCEfficientAnalysis::ComputeEPLThickness(FemModel* femmodel){/*{{{*/
+
+	int iseplthickcomp;
+
+	/*Skip if we don't want to compute thicknesses*/
+	femmodel->parameters->FindParam(&iseplthickcomp,HydrologydcEplThickCompEnum);
+	if(iseplthickcomp==0) return;
+
+	/*Get Parameters*/
+	int        domaintype;
+	IssmDouble max_thick;
+	IssmDouble epl_conductivity;
+	IssmDouble latentheat;
+	IssmDouble rho_ice;
+	IssmDouble rho_water;
+	IssmDouble gravity;
+	IssmDouble dt;
+
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&max_thick,HydrologydcEplMaxThicknessEnum);
+	femmodel->parameters->FindParam(&epl_conductivity,HydrologydcEplConductivityEnum);
+	femmodel->parameters->FindParam(&latentheat,MaterialsLatentheatEnum);
+	femmodel->parameters->FindParam(&rho_ice,MaterialsRhoIceEnum);
+	femmodel->parameters->FindParam(&rho_water,MaterialsRhoFreshwaterEnum);
+	femmodel->parameters->FindParam(&gravity,ConstantsGEnum);
+	femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+
+	for(Object* & object : femmodel->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+
+		/*skip element if 3d and not on base*/
+		if(domaintype==Domain3DEnum && !element->IsOnBase()) continue;
+
+		int         numnodes      = element->GetNumberOfNodes();
+		IssmDouble* thickness     = xNew<IssmDouble>(numnodes);
+		IssmDouble* B             = xNew<IssmDouble>(numnodes);
+		IssmDouble* n             = xNew<IssmDouble>(numnodes);
+		IssmDouble* eplhead       = xNew<IssmDouble>(numnodes);
+		IssmDouble* epl_slopeX    = xNew<IssmDouble>(numnodes);
+		IssmDouble* epl_slopeY    = xNew<IssmDouble>(numnodes);
+		IssmDouble* old_thickness = xNew<IssmDouble>(numnodes);
+		IssmDouble* ice_thickness = xNew<IssmDouble>(numnodes);
+		IssmDouble* bed           = xNew<IssmDouble>(numnodes);
+
+		bool       active_element;
+		IssmDouble init_thick;
+		element->GetInputValue(&active_element,HydrologydcMaskEplactiveEltEnum);
+
+		/* Intermiedaries */
+		IssmDouble  A;
+		IssmDouble  EPLgrad2;
+		IssmDouble  EPL_N;
+		IssmDouble  opening,closing;
+
+		if(!active_element){
+			init_thick = element->FindParam(HydrologydcEplInitialThicknessEnum);
+			/*Keeping thickness to initial value if EPL is not active*/
+			for(int i=0;i<numnodes;i++){
+				thickness[i]=init_thick;
+			}
+		}
+		else{
+			switch(domaintype){
+				case Domain2DhorizontalEnum: element->GetInputListOnVertices(&B[0],MaterialsRheologyBbarEnum); break;
+				case Domain3DEnum:           element->GetInputListOnVertices(&B[0],MaterialsRheologyBEnum); break;
+				default: _error_("not Implemented Yet");
+			}
+			element->GetInputListOnVertices(&eplhead[0],EplHeadSubstepEnum);
+			element->GetInputListOnVertices(&epl_slopeX[0],EplHeadSlopeXEnum);
+			element->GetInputListOnVertices(&epl_slopeY[0],EplHeadSlopeYEnum);
+			element->GetInputListOnVertices(&old_thickness[0],HydrologydcEplThicknessOldEnum);
+			element->GetInputListOnVertices(&ice_thickness[0],ThicknessEnum);
+			element->GetInputListOnVertices(&bed[0],BaseEnum);
+			element->GetInputListOnVertices(&n[0],MaterialsRheologyNEnum);
+
+			for(int i=0;i<numnodes;i++){
+				A=pow(B[i],-n[i]);
+				/*Compute first the effective pressure in the EPL*/
+				EPL_N=gravity*((rho_ice*ice_thickness[i])-(rho_water*(eplhead[i]-bed[i])));
+				if(EPL_N<0.0)EPL_N=0.0;
+				/*Get then the square of the gradient of EPL heads*/
+				EPLgrad2 = (epl_slopeX[i]*epl_slopeX[i])+(epl_slopeY[i]*epl_slopeY[i]);
+				/*And proceed to the real thing*/
+				opening=(rho_water*gravity*epl_conductivity*EPLgrad2*dt)/(rho_ice*latentheat);
+				closing=(2.0*A*dt*pow(EPL_N,n[i]))/(pow(n[i],n[i]));
+				/*implicit*/
+				thickness[i] = old_thickness[i]/(1.0-opening+closing);
+				/*explicit*/
+				//thickness[i] = old_thickness[i]*(1.0+opening-closing);
+				/*centered*/
+				//thickness[i] = old_thickness[i]*(1.0+opening-closing)/(1.0-opening+closing);
+				/*Take care of otherthikening*/
+				if(thickness[i]>max_thick){
+					thickness[i] = max_thick;
+				}
+			}
+		}
+		element->AddInput(HydrologydcEplThicknessSubstepEnum,thickness,element->GetElementType());
+		xDelete<IssmDouble>(thickness);
+		xDelete<IssmDouble>(eplhead);
+		xDelete<IssmDouble>(epl_slopeX);
+		xDelete<IssmDouble>(epl_slopeY);
+		xDelete<IssmDouble>(old_thickness);
+		xDelete<IssmDouble>(ice_thickness);
+		xDelete<IssmDouble>(bed);
+		xDelete<IssmDouble>(B);
+		xDelete<IssmDouble>(n);
+	}
+}/*}}}*/
+void  HydrologyDCEfficientAnalysis::HydrologyEPLGetMask(Vector<IssmDouble>* vec_mask, Vector<IssmDouble>* recurence, Element* element){/*{{{*/
+
+	bool        active_element;
+	int         domaintype;
+	int         current_mask;
+	IssmDouble  h_max;
+	IssmDouble  sedheadmin;
+	Element*    basalelement=NULL;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+	/*Intermediaries*/
+	int         numnodes      =basalelement->GetNumberOfNodes();
+	IssmDouble* epl_thickness =xNew<IssmDouble>(numnodes);
+	IssmDouble* old_active    =xNew<IssmDouble>(numnodes);
+	IssmDouble* sedhead       =xNew<IssmDouble>(numnodes);
+	IssmDouble* eplhead       =xNew<IssmDouble>(numnodes);
+	IssmDouble* residual      =xNew<IssmDouble>(numnodes);
+
+	IssmDouble init_thick    =basalelement->FindParam(HydrologydcEplInitialThicknessEnum);
+	IssmDouble colapse_thick =basalelement->FindParam(HydrologydcEplColapseThicknessEnum);
+
+	basalelement->GetInputValue(&active_element,HydrologydcMaskEplactiveEltEnum);
+
+	basalelement-> GetInputListOnVertices(&sedhead[0],SedimentHeadSubstepEnum);
+	basalelement-> GetInputListOnVertices(&old_active[0],HydrologydcMaskEplactiveNodeEnum);
+	basalelement-> GetInputListOnVertices(&residual[0],SedimentHeadResidualEnum);
+	basalelement-> GetInputListOnVertices(&epl_thickness[0],HydrologydcEplThicknessSubstepEnum);
+	basalelement-> GetInputListOnVertices(&eplhead[0],EplHeadSubstepEnum);
+
+	/*Get minimum sediment head of the element*/
+	sedheadmin=sedhead[0];
+	for(int i=1;i<numnodes;i++) if(sedhead[i]<=sedheadmin)sedheadmin=sedhead[i];
+	for(int i=0;i<numnodes;i++){
+		current_mask=reCast<int>(old_active[i]);
+		/*If mask was already one, keep one or colapse*/
+		if(old_active[i]>0.){
+			vec_mask->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
+			current_mask=1;
+			/* If epl thickness gets under colapse thickness, close the layer if there is no residual*/
+			if(epl_thickness[i]<colapse_thick && residual[i]<=0.){
+				vec_mask->SetValue(basalelement->nodes[i]->Sid(),0.,INS_VAL);
+				current_mask=0;
+				recurence->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
+			}
+		}
+		else if (old_active[i]==0.){
+			/*Activate if we have a residual from sediment*/
+			if(residual[i]>0.){
+				vec_mask->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
+				current_mask=1;
+				recurence->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
+			}
+			else{
+				/*If node is now closed bring its thickness back to initial*/
+				epl_thickness[i]=init_thick;
+				vec_mask->SetValue(basalelement->nodes[i]->Sid(),0.,INS_VAL);
+				current_mask=0;
+			}
+		}
+		/*Increase of the efficient system is needed if the epl head reach the maximum value (sediment max value for now) we check that only if the epl is active here*/
+		if(current_mask>0){
+			GetHydrologyDCInefficientHmax(&h_max,basalelement,basalelement->nodes[i]);
+			if(eplhead[i]>=h_max && active_element){
+				for(int j=0;j<numnodes;j++){
+					/*Increase of the domain is on the downstream node in term of sediment head*/
+					if((sedhead[j] == sedheadmin) && (i!=j)){
+						vec_mask->SetValue(basalelement->nodes[j]->Sid(),1.,INS_VAL);
+						if(old_active[j]==0.){
+							recurence->SetValue(basalelement->nodes[j]->Sid(),1.,INS_VAL);
+						}
+					}
+				}
+			}
+		}
+	}
+	element->AddBasalInput(HydrologydcEplThicknessSubstepEnum,epl_thickness,basalelement->GetElementType());
+
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	xDelete<IssmDouble>(epl_thickness);
+	xDelete<IssmDouble>(old_active);
+	xDelete<IssmDouble>(sedhead);
+	xDelete<IssmDouble>(eplhead);
+	xDelete<IssmDouble>(residual);
+}
+/*}}}*/
+void HydrologyDCEfficientAnalysis::HydrologyEPLGetActive(Vector<IssmDouble>* active_vec, Element* element){/*{{{*/
+	/*Constants*/
+	int      domaintype;
+	Element*   basalelement=NULL;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	const int   numnodes = basalelement->GetNumberOfNodes();
+	IssmDouble  flag     = 0.;
+	IssmDouble* active   = xNew<IssmDouble>(numnodes);
+	bool active_element;
+
+	/*Pass the activity mask from elements to nodes*/
+	basalelement->GetInputListOnVertices(&active[0],HydrologydcMaskEplactiveNodeEnum);
+	basalelement->GetInputValue(&active_element,HydrologydcMaskEplactiveEltEnum);
+
+	for(int i=0;i<numnodes;i++) flag+=active[i];
+
+	/*If any node is active all the node in the element are active*/
+	if(flag>0.){
+		for(int i=0;i<numnodes;i++){
+			active_vec->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
+		}
+	}
+	/*If the element is active all its nodes are active*/
+	else if(active_element){
+		for(int i=0;i<numnodes;i++){
+			active_vec->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
+		}
+	}
+	else{
+		/*Do not do anything: at least one node is active for this element but this element is not solved for*/
+	}
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	xDelete<IssmDouble>(active);
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyDCEfficientAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyDCEfficientAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyDCEfficientAnalysis.h	(revision 27955)
@@ -0,0 +1,47 @@
+/*! \file HydrologyDCEfficientAnalysis.h
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _HydrologyDCEfficientAnalysis_
+#define _HydrologyDCEfficientAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+class Node;
+class Input;
+class HydrologyDCEfficientAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void InitZigZagCounter(FemModel* femmodel);
+		void ResetCounter(FemModel* femmodel);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_interp,int control_index);
+		void InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void UpdateConstraints(FemModel* femmodel);
+
+		/*Intermediaries*/
+		IssmDouble EplStoring(Element* element,Gauss* gauss, Input* epl_thick_input);
+		IssmDouble EplTransmitivity(Element* element,Gauss* gauss, Input* epl_thick_input);
+		void GetHydrologyDCInefficientHmax(IssmDouble* ph_max,Element* element, Node* innode);
+		IssmDouble GetHydrologyKMatrixTransfer(Element* element);
+		IssmDouble GetHydrologyPVectorTransfer(Element* element, Gauss* gauss, Input* sed_head_input);
+		void ComputeEPLThickness(FemModel* femmodel);
+		void HydrologyEPLGetMask(Vector<IssmDouble>* vec_mask, Vector<IssmDouble>* recurence, Element* element);
+		void HydrologyEPLGetActive(Vector<IssmDouble>* active_vec, Element* element);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyDCInefficientAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyDCInefficientAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyDCInefficientAnalysis.cpp	(revision 27955)
@@ -0,0 +1,813 @@
+#include "./HydrologyDCInefficientAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../classes/Node.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../classes/Inputs/TransientInput.h"
+
+/*Model processing*/
+int  HydrologyDCInefficientAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void HydrologyDCInefficientAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int         hydrology_model;
+	int         sedimentlimit_flag;
+	int         transfer_flag;
+	int         unconfined_flag;
+	int         penalty_lock;
+	int         hydro_maxiter;
+	int         hydroslices;
+	int         averaging_method;
+	int         numoutputs;
+	bool        isefficientlayer;
+	bool        sliceadapt;
+	IssmDouble  penalty_factor;
+	IssmDouble  rel_tol;
+	IssmDouble  leakagefactor;
+	IssmDouble  sedimentlimit;
+	IssmDouble  sed_poro;
+	IssmDouble  sed_thick;
+	char**      requestedoutputs = NULL;
+
+	/*retrieve some parameters: */
+	bool   issmb;
+	iomodel->FindConstant(&issmb,"md.transient.issmb");
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want DC?*/
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	iomodel->FetchData(&sedimentlimit_flag, "md.hydrology.sedimentlimit_flag" );
+	iomodel->FetchData(&transfer_flag,      "md.hydrology.transfer_flag" );
+	iomodel->FetchData(&unconfined_flag,    "md.hydrology.unconfined_flag" );
+	iomodel->FetchData(&penalty_lock,       "md.hydrology.penalty_lock" );
+	iomodel->FetchData(&hydro_maxiter,      "md.hydrology.max_iter" );
+	iomodel->FetchData(&hydroslices,        "md.hydrology.steps_per_step");
+	iomodel->FetchData(&sliceadapt,         "md.hydrology.step_adapt");
+	iomodel->FetchData(&averaging_method,   "md.hydrology.averaging");
+	iomodel->FetchData(&isefficientlayer,   "md.hydrology.isefficientlayer");
+	iomodel->FetchData(&penalty_factor,     "md.hydrology.penalty_factor" );
+	iomodel->FetchData(&rel_tol,            "md.hydrology.rel_tol" );
+
+	parameters->AddObject(new IntParam(HydrologyModelEnum,hydrology_model));
+	parameters->AddObject(new IntParam(HydrologydcSedimentlimitFlagEnum,sedimentlimit_flag));
+	parameters->AddObject(new IntParam(HydrologydcTransferFlagEnum,transfer_flag));
+	parameters->AddObject(new IntParam(HydrologydcUnconfinedFlagEnum,unconfined_flag));
+	parameters->AddObject(new IntParam(HydrologydcPenaltyLockEnum,penalty_lock));
+	parameters->AddObject(new IntParam(HydrologydcMaxIterEnum,hydro_maxiter));
+	parameters->AddObject(new IntParam(HydrologyStepsPerStepEnum,hydroslices));
+	parameters->AddObject(new BoolParam(HydrologyStepAdaptEnum,sliceadapt));
+	parameters->AddObject(new IntParam(HydrologyAveragingEnum,averaging_method));
+	parameters->AddObject(new BoolParam(HydrologydcIsefficientlayerEnum,isefficientlayer));
+	parameters->AddObject(new DoubleParam(HydrologydcPenaltyFactorEnum,penalty_factor));
+	parameters->AddObject(new DoubleParam(HydrologydcRelTolEnum,rel_tol));
+
+	iomodel->FetchData(&sed_poro,  "md.hydrology.sediment_porosity" );
+	iomodel->FetchData(&sed_thick, "md.hydrology.sediment_thickness" );
+
+	parameters->AddObject(new DoubleParam(HydrologydcSedimentPorosityEnum,sed_poro));
+	parameters->AddObject(new DoubleParam(HydrologydcSedimentThicknessEnum,sed_thick));
+
+	if(transfer_flag==1){
+		iomodel->FetchData(&leakagefactor,"md.hydrology.leakage_factor");
+		parameters->AddObject(new DoubleParam(HydrologydcLeakageFactorEnum,leakagefactor));
+	}
+	if(sedimentlimit_flag==1){
+		iomodel->FetchData(&sedimentlimit,"md.hydrology.sedimentlimit");
+		parameters->AddObject(new DoubleParam(HydrologydcSedimentlimitEnum,sedimentlimit));
+	}
+	if(!issmb){
+		parameters->AddObject(iomodel->CopyConstantObject("md.smb.model",SmbEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.smb.averaging",SmbAveragingEnum));
+	}
+
+  /*Requested outputs*/
+  iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.hydrology.requested_outputs");
+  parameters->AddObject(new IntParam(HydrologyNumRequestedOutputsEnum,numoutputs));
+  if(numoutputs)parameters->AddObject(new StringArrayParam(HydrologyRequestedOutputsEnum,requestedoutputs,numoutputs));
+  iomodel->DeleteData(&requestedoutputs,numoutputs,"md.hydrology.requested_outputs");
+}/*}}}*/
+void HydrologyDCInefficientAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	bool   isefficientlayer;
+	int    hydrology_model;
+
+	/*Fetch data needed: */
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want DC?*/
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	/*Fetch data needed: */
+	iomodel->FindConstant(&isefficientlayer,"md.hydrology.isefficientlayer");
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.basal_moulin_input",HydrologydcBasalMoulinInputEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.sediment_head",SedimentHeadSubstepEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.sediment_transmitivity",HydrologydcSedimentTransmitivityEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.mask_thawed_node",HydrologydcMaskThawedNodeEnum);
+
+
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+	if(isefficientlayer){
+		iomodel->FetchDataToInput(inputs,elements,"md.hydrology.mask_eplactive_node",HydrologydcMaskEplactiveNodeEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.initialization.epl_head",EplHeadSubstepEnum);
+	}
+
+}/*}}}*/
+void HydrologyDCInefficientAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	/*Fetch parameters: */
+	int  hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want DC?*/
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	}
+	::CreateNodes(nodes,iomodel,HydrologyDCInefficientAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+void HydrologyDCInefficientAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*retrieve some parameters: */
+	int hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	IoModelToConstraintsx(constraints,iomodel,"md.hydrology.spcsediment_head",HydrologyDCInefficientAnalysisEnum,P1Enum);
+}/*}}}*/
+void HydrologyDCInefficientAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Fetch parameters: */
+	int hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	if(iomodel->domaintype==Domain3DEnum){
+		iomodel->FetchData(1,"md.mesh.vertexonbase");
+	}
+	//create penalties for nodes: no node can have water above the max
+	CreateSingleNodeToElementConnectivity(iomodel);
+	for(int i=0;i<iomodel->numberofvertices;i++){
+		if (iomodel->domaintype!=Domain3DEnum){
+			/*keep only this partition's nodes:*/
+			if(iomodel->my_vertices[i]){
+				loads->AddObject(new Pengrid(i+1,i,iomodel));
+				loads->AddObject(new Moulin(i+1,i,iomodel));
+			}
+		}
+		else if(reCast<int>(iomodel->Data("md.mesh.vertexonbase")[i])){
+			if(iomodel->my_vertices[i]){
+				loads->AddObject(new Pengrid(i+1,i,iomodel));
+				loads->AddObject(new Moulin(i+1,i,iomodel));
+			}
+		}
+	}
+	iomodel->DeleteData(1,"md.mesh.vertexonbase");
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           HydrologyDCInefficientAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           HydrologyDCInefficientAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* HydrologyDCInefficientAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* HydrologyDCInefficientAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* HydrologyDCInefficientAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	bool     thawed_element;
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	basalelement->GetInputValue(&thawed_element,HydrologydcMaskThawedEltEnum);
+
+	/*Check that all nodes are active, else return empty matrix*/
+	if(!thawed_element) {
+		if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+		return NULL;
+	}
+
+	/*Intermediaries */
+	bool        active_element,isefficientlayer;
+	IssmDouble  D_scalar,Jdet,dt;
+	IssmDouble  sediment_transmitivity;
+	IssmDouble  transfer,sediment_storing;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke     = basalelement->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement ->GetVerticesCoordinates(&xyz_list);
+	basalelement ->FindParam(&dt,TimesteppingTimeStepEnum);
+	basalelement ->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum);
+	Input* SedTrans_input = basalelement->GetInput(HydrologydcSedimentTransmitivityEnum); _assert_(SedTrans_input);
+	Input* sed_head_input = basalelement->GetInput(SedimentHeadSubstepEnum);
+	Input* base_input     = basalelement->GetInput(BaseEnum);
+
+	/*Transfer related Inputs*/
+	if(isefficientlayer){
+		basalelement->GetInputValue(&active_element,HydrologydcMaskEplactiveEltEnum);
+	}
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+
+		sediment_transmitivity = SedimentTransmitivity(basalelement,gauss,sed_head_input,base_input,SedTrans_input);
+		sediment_storing       = SedimentStoring(basalelement,gauss,sed_head_input,base_input);
+
+		/*Diffusivity*/
+		D_scalar=sediment_transmitivity*gauss->weight*Jdet;
+		if(dt!=0.) D_scalar=D_scalar*dt;
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += D_scalar*(dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i]);
+			}
+		}
+		/*Transient*/
+		if(dt!=0.){
+			D_scalar=sediment_storing*gauss->weight*Jdet;
+			for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D_scalar*basis[j]*basis[i];
+			/*Transfer EPL part*/
+			if(isefficientlayer){
+				if(active_element){
+					transfer=GetHydrologyKMatrixTransfer(basalelement);
+					D_scalar=dt*transfer*gauss->weight*Jdet;
+					for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D_scalar*basis[j]*basis[i];
+				}
+			}
+		}
+	}
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+ElementVector* HydrologyDCInefficientAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	bool		thawed_element;
+	int		domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	basalelement->GetInputValue(&thawed_element,HydrologydcMaskThawedEltEnum);
+
+	/*Check that all nodes are active, else return empty matrix*/
+	if(!thawed_element) {
+		if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+		return NULL;
+	}
+
+	/*Intermediaries */
+	bool       active_element,isefficientlayer;
+	int        smb_model,smb_averaging;
+	int        smbsubstepping, hydrologysubstepping;
+	IssmDouble dt,scalar,water_head;
+	IssmDouble sediment_storing,sediment_transmitivity;
+	IssmDouble water_load,runoff_value,transfer;
+	IssmDouble Jdet,time;
+	IssmDouble active_node;
+
+	IssmDouble *xyz_list             = NULL;
+	Input     *active_element_input = NULL;
+	Input     *old_wh_input         = NULL;
+	Input     *dummy_input          = NULL;
+	Input     *surface_runoff_input = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe    = basalelement->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	basalelement->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum);
+	basalelement->FindParam(&smb_model,SmbEnum);
+
+	Input*	sed_head_input   = basalelement->GetInput(SedimentHeadSubstepEnum);
+	Input*	epl_head_input   = basalelement->GetInput(EplHeadSubstepEnum);
+	Input*	base_input       = basalelement->GetInput(BaseEnum);
+	Input*	basal_melt_input = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(basal_melt_input);
+	Input*	SedTrans_input   = basalelement->GetInput(HydrologydcSedimentTransmitivityEnum); _assert_(SedTrans_input);
+
+	if(dt!= 0.){
+		old_wh_input = basalelement->GetInput(SedimentHeadOldEnum); _assert_(old_wh_input);
+	}
+	if(smb_model==SMBgradientscomponentsEnum){
+		basalelement->FindParam(&time,TimeEnum);
+		basalelement->FindParam(&smbsubstepping,SmbStepsPerStepEnum);
+		basalelement->FindParam(&hydrologysubstepping,HydrologyStepsPerStepEnum);
+
+		if(smbsubstepping==1){
+			//no substeping for the smb we take the result from there
+			dummy_input = basalelement->GetInput(SmbRunoffEnum); _assert_(dummy_input);
+		}
+		else if(smbsubstepping>1 && smbsubstepping<=hydrologysubstepping){
+			//finer hydro stepping, we take the value at the needed time
+			dummy_input = basalelement->GetInput(SmbRunoffTransientEnum, time); _assert_(dummy_input);
+		}
+		else{
+			//finer stepping in smb, we average the runoff from transient input
+			basalelement->FindParam(&smb_averaging,SmbAveragingEnum);
+			dummy_input = basalelement->GetInput(SmbRunoffTransientEnum,time-dt,time,smb_averaging); _assert_(dummy_input);
+		}
+		surface_runoff_input=xDynamicCast<Input*>(dummy_input); _assert_(surface_runoff_input);
+	}
+
+	/*Transfer related Inputs*/
+	if(isefficientlayer){
+		basalelement->GetInputValue(&active_element,HydrologydcMaskEplactiveEltEnum);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+		sediment_transmitivity = SedimentTransmitivity(basalelement,gauss,sed_head_input,base_input,SedTrans_input);
+
+		/*Loading term*/
+		if(!isefficientlayer){
+			basal_melt_input->GetInputValue(&water_load,gauss);
+			if(surface_runoff_input) surface_runoff_input->GetInputValue(&runoff_value,gauss);
+			else                     runoff_value = 0.;
+			scalar = Jdet*gauss->weight*(water_load+runoff_value);
+			if(dt!=0.) scalar = scalar*dt;
+			for(int i=0;i<numnodes;i++)pe->values[i]+=scalar*basis[i];
+		}
+		else{
+			/*if EPL is present and active input is there not here*/
+			if(!active_element){
+				basal_melt_input->GetInputValue(&water_load,gauss);
+				if(surface_runoff_input)surface_runoff_input->GetInputValue(&runoff_value,gauss);
+				else runoff_value = 0.;
+				scalar = Jdet*gauss->weight*(water_load+runoff_value);
+				if(dt!=0.) scalar = scalar*dt;
+				for(int i=0;i<numnodes;i++){
+					//This is the original
+					pe->values[i]+=scalar*basis[i];
+					//This is the noded version
+					/* basalelement->GetInputValue(&active_node,basalelement->nodes[i],HydrologydcMaskEplactiveNodeEnum); */
+					/* if(!reCast<bool>(active_node)){ */
+					/* 	pe->values[i]+=scalar*basis[i]; */
+					/* 	//if(basalelement->nodes[i]->Sid()==42)_printf_("IDS uni Input "<<scalar*basis[i]<<"\n"); */
+					//}
+				}
+			}
+		}
+
+		/*Transient and transfer terms*/
+		if(dt!=0.){
+			old_wh_input->GetInputValue(&water_head,gauss);
+			sediment_storing = SedimentStoring(basalelement,gauss,sed_head_input,base_input);
+			if(isefficientlayer){
+				/*Dealing with the sediment part of the transfer term*/
+				if(active_element){
+					transfer=GetHydrologyPVectorTransfer(basalelement,gauss,epl_head_input);
+				}
+				else{
+					transfer=0.0;
+				}
+				scalar = Jdet*gauss->weight*((water_head*sediment_storing)+(dt*transfer));
+				for(int i=0;i<numnodes;i++)pe->values[i]+=scalar*basis[i];
+			}
+			else{
+				scalar = Jdet*gauss->weight*(water_head*sediment_storing);
+				for(int i=0;i<numnodes;i++)pe->values[i]+=scalar*basis[i];
+			}
+		}
+	}
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return pe;
+}/*}}}*/
+void HydrologyDCInefficientAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,SedimentHeadSubstepEnum);
+}/*}}}*/
+void HydrologyDCInefficientAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void HydrologyDCInefficientAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+ 	/*Intermediaries*/
+	bool	 converged;
+	int*     doflist = NULL;
+	int	 domaintype;
+	Element* basalelement=NULL;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Fetch dof list and allocate solution vector*/
+	basalelement->GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values   = xNew<IssmDouble>(numnodes);
+	IssmDouble* pressure = xNew<IssmDouble>(numnodes);
+	IssmDouble* residual = xNew<IssmDouble>(numnodes);
+
+	for(int i=0;i<numnodes;i++){
+	  	values[i] =solution[doflist[i]];
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+	}
+
+	/*If converged keep the residual in mind, also compute effective pressure*/
+	basalelement->GetInputValue(&converged,ConvergedEnum);
+
+	/*Get inputs*/
+	if(converged){
+		IssmDouble  penalty_factor,kmax,kappa,h_max;
+		IssmDouble* thickness = xNew<IssmDouble>(numnodes);
+		IssmDouble* base = xNew<IssmDouble>(numnodes);
+		IssmDouble* transmitivity = xNew<IssmDouble>(numnodes);
+
+		basalelement->FindParam(&kmax,HydrologySedimentKmaxEnum);
+		basalelement->FindParam(&penalty_factor,HydrologydcPenaltyFactorEnum);
+		IssmDouble rho_freshwater = basalelement->FindParam(MaterialsRhoFreshwaterEnum);
+		IssmDouble rho_ice        = basalelement->FindParam(MaterialsRhoIceEnum);
+		IssmDouble g              = basalelement->FindParam(ConstantsGEnum);
+
+		basalelement->GetInputListOnVertices(&thickness[0],ThicknessEnum);
+		basalelement->GetInputListOnVertices(&base[0],BaseEnum);
+		basalelement->GetInputListOnVertices(&transmitivity[0],HydrologydcSedimentTransmitivityEnum);
+
+		kappa=kmax*pow(10.,penalty_factor);
+
+		for(int i=0;i<numnodes;i++){
+			GetHydrologyDCInefficientHmax(&h_max,basalelement,basalelement->GetNode(i));
+			if(values[i]>h_max) {
+				residual[i] = kappa*(values[i]-h_max);
+				//residual[i] = kappa*(values[i]-h_max)*transmitivity[i];
+			}
+			else{
+				residual[i] = 0.;
+			}
+			pressure[i]=(rho_ice*g*thickness[i])-(rho_freshwater*g*(values[i]-base[i]));
+		}
+		xDelete<IssmDouble>(thickness);
+		xDelete<IssmDouble>(base);
+		xDelete<IssmDouble>(transmitivity);
+	}
+
+	/*Add input to the element: */
+	element->AddBasalInput(SedimentHeadSubstepEnum,values,P1Enum);
+	element->AddBasalInput(EffectivePressureSubstepEnum,pressure,P1Enum);
+	element->AddBasalInput(SedimentHeadResidualEnum,residual,P1Enum);
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(residual);
+	xDelete<IssmDouble>(pressure);
+	xDelete<int>(doflist);
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+void HydrologyDCInefficientAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
+/*Intermediaries*/
+IssmDouble HydrologyDCInefficientAnalysis::SedimentStoring(Element* element,Gauss* gauss,Input* sed_head_input, Input* base_input){/*{{{*/
+	int unconf_scheme;
+	IssmDouble expfac;
+	IssmDouble sediment_storing;
+	IssmDouble storing,yield;
+	IssmDouble base_elev,prestep_head,water_sheet;
+	IssmDouble porewater_mass           = element->FindParam(HydrologydcSedimentPoreWaterMassEnum);
+	IssmDouble layer_compressibility    = element->FindParam(HydrologydcSedimentLayerCompressibilityEnum);
+	IssmDouble sediment_thickness       = element->FindParam(HydrologydcSedimentThicknessEnum);
+	element->FindParam(&unconf_scheme,HydrologydcUnconfinedFlagEnum);
+	switch(unconf_scheme){
+	case 0:
+		sediment_storing=porewater_mass*sediment_thickness*layer_compressibility;
+		break;
+	case 1:
+		yield = element->FindParam(HydrologydcSedimentPorosityEnum);
+		base_input->GetInputValue(&base_elev,gauss);
+		sed_head_input->GetInputValue(&prestep_head,gauss);
+
+		water_sheet=max(0.0,(prestep_head-(base_elev-sediment_thickness)));
+		storing=porewater_mass*sediment_thickness*layer_compressibility;
+		//using logistic function for heavyside approximation
+		expfac=10.;
+		sediment_storing=yield+(storing-yield)/(1+exp(-2*expfac*(water_sheet-0.99*sediment_thickness)));
+		break;
+	default:
+		_error_("UnconfinedFlag is 0 or 1");
+	}
+	return sediment_storing;
+}/*}}}*/
+IssmDouble HydrologyDCInefficientAnalysis::SedimentTransmitivity(Element* element,Gauss* gauss,Input* sed_head_input, Input* base_input,Input* SedTrans_input){/*{{{*/
+	int unconf_scheme;
+	IssmDouble sediment_transmitivity;
+	IssmDouble FullLayer_transmitivity;
+	IssmDouble base_elev,prestep_head,water_sheet;
+	IssmDouble sediment_thickness       = element->FindParam(HydrologydcSedimentThicknessEnum);
+
+	element->FindParam(&unconf_scheme,HydrologydcUnconfinedFlagEnum);
+	SedTrans_input->GetInputValue(&FullLayer_transmitivity,gauss);
+
+	switch(unconf_scheme){
+	case 0:
+		sediment_transmitivity=FullLayer_transmitivity;
+		break;
+	case 1:
+		base_input->GetInputValue(&base_elev,gauss);
+		sed_head_input->GetInputValue(&prestep_head,gauss);
+		water_sheet=max(0.0,(prestep_head-(base_elev-sediment_thickness)));
+
+		//min definition of the if test
+		sediment_transmitivity=FullLayer_transmitivity*min(water_sheet/sediment_thickness,1.);
+		if (sediment_transmitivity==0){
+			sediment_transmitivity=1.0e-20;
+		}
+
+		break;
+	default:
+		_error_("UnconfinedFlag is 0 or 1");
+	}
+	return sediment_transmitivity;
+}/*}}}*/
+void  HydrologyDCInefficientAnalysis::GetHydrologyDCInefficientHmax(IssmDouble* ph_max,Element* element, Node* innode){/*{{{*/
+
+	int        hmax_flag;
+	IssmDouble h_max;
+	IssmDouble rho_ice,rho_water;
+	IssmDouble thickness,bed;
+	/*Get the flag to the limitation method*/
+	element->FindParam(&hmax_flag,HydrologydcSedimentlimitFlagEnum);
+
+	/*Switch between the different cases*/
+	switch(hmax_flag){
+	case 0:
+		h_max=1.0e+10;
+		break;
+	case 1:
+		element->FindParam(&h_max,HydrologydcSedimentlimitEnum);
+		break;
+	case 2:
+		/*Compute max*/
+		rho_water = element->FindParam(MaterialsRhoFreshwaterEnum);
+		rho_ice   = element->FindParam(MaterialsRhoIceEnum);
+		element->GetInputValue(&thickness,innode,ThicknessEnum);
+		element->GetInputValue(&bed,innode,BaseEnum);
+		h_max=((rho_ice*thickness)/rho_water)+bed;
+		break;
+	case 3:
+		_error_("Using normal stress  not supported yet");
+		break;
+	default:
+		_error_("no case higher than 3 for SedimentlimitFlag");
+	}
+	/*Assign output pointer*/
+	*ph_max=h_max;
+}
+/*}}}*/
+IssmDouble HydrologyDCInefficientAnalysis::GetHydrologyKMatrixTransfer(Element* element){/*{{{*/
+
+	int transfermethod;
+	IssmDouble leakage,transfer;
+	element->FindParam(&transfermethod,HydrologydcTransferFlagEnum);
+
+	/*Switch between the different transfer methods cases*/
+	switch(transfermethod){
+	case 0:
+		/*Just keepping the transfer to zero*/
+		transfer=0.0;
+		break;
+	case 1:
+		element->FindParam(&leakage,HydrologydcLeakageFactorEnum);
+		transfer=+leakage;
+		break;
+	default:
+		_error_("no case higher than 1 for the Transfer method");
+	}
+	return transfer;
+}/*}}}*/
+IssmDouble HydrologyDCInefficientAnalysis::GetHydrologyPVectorTransfer(Element* element, Gauss* gauss, Input* epl_head_input){/*{{{*/
+
+	int transfermethod;
+	IssmDouble epl_head;
+	IssmDouble leakage,transfer;
+	element->FindParam(&transfermethod,HydrologydcTransferFlagEnum);
+
+	/*Switch between the different transfer methods cases*/
+	switch(transfermethod){
+	case 0:
+		/*Just keepping the transfer to zero*/
+		transfer=0.0;
+		break;
+	case 1:
+		_assert_(epl_head_input);
+		epl_head_input->GetInputValue(&epl_head,gauss);
+		element->FindParam(&leakage,HydrologydcLeakageFactorEnum);
+		transfer=+epl_head*leakage;
+		break;
+	default:
+		_error_("no case higher than 1 for the Transfer method");
+	}
+	return transfer;
+}/*}}}*/
+void HydrologyDCInefficientAnalysis::ElementizeEplMask(FemModel* femmodel){/*{{{*/
+
+	bool     element_active;
+	Element* element=NULL;
+	int      elementssize=femmodel->elements->Size();
+	for(Object* & object : femmodel->elements->objects){
+		element = xDynamicCast<Element*>(object);
+		Input* input=element->GetInput(HydrologydcMaskEplactiveNodeEnum); _assert_(input);
+		if(input->GetInputMax()>0.){
+			element_active = true;
+		}
+		else{
+			element_active = false;
+		}
+		element->SetBoolInput(element->inputs,HydrologydcMaskEplactiveEltEnum,element_active);
+	}
+}/*}}}*/
+void  HydrologyDCInefficientAnalysis::HydrologyIDSGetMask(Vector<IssmDouble>* vec_mask, Element* element){/*{{{*/
+	bool        active_element;
+	int         domaintype;
+	Element*    basalelement=NULL;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+	/*Intermediaries*/
+	int				numnodes    =	basalelement->GetNumberOfNodes();
+	IssmDouble*		meltingrate =	xNew<IssmDouble>(numnodes);
+	IssmDouble*		groundedice =	xNew<IssmDouble>(numnodes);
+
+	basalelement->GetInputListOnVertices(&meltingrate[0],BasalforcingsGroundediceMeltingRateEnum);
+	basalelement->GetInputListOnVertices(&groundedice[0],MaskOceanLevelsetEnum);
+
+	/*if melting rate is not positive and node is not floating, deactivate*/
+	for(int i=0;i<numnodes;i++){
+		if ((meltingrate[i]<=0.0) && (groundedice[i]>0)){
+			vec_mask->SetValue(basalelement->nodes[i]->Sid(),0.,INS_VAL);
+		}
+		else{
+			vec_mask->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
+		}
+	}
+
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	xDelete<IssmDouble>(meltingrate);
+	xDelete<IssmDouble>(groundedice);
+}/*}}}*/
+void HydrologyDCInefficientAnalysis::ElementizeIdsMask(FemModel* femmodel){/*{{{*/
+
+	bool     element_active;
+	Element* element=NULL;
+	int elementssize = femmodel->elements->Size();
+	for(Object* & object : femmodel->elements->objects){
+		element = xDynamicCast<Element*>(object);
+
+		Input* input=element->GetInput(HydrologydcMaskThawedNodeEnum); _assert_(input);
+		if(input->GetInputMax()>0.){
+			element_active = true;
+		}
+		else{
+			element_active = false;
+		}
+		element->SetBoolInput(element->inputs,HydrologydcMaskThawedEltEnum,element_active);
+	}
+}/*}}}*/
+void HydrologyDCInefficientAnalysis::HydrologyIdsGetActive(Vector<IssmDouble>* active_vec, Element* element){/*{{{*/
+	/*Constants*/
+	int      domaintype;
+	Element*   basalelement=NULL;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	const int   numnodes = basalelement->GetNumberOfNodes();
+	IssmDouble  flag     = 0.;
+	IssmDouble* active   = xNew<IssmDouble>(numnodes);
+	bool active_element;
+
+	/*Pass the activity mask from elements to nodes*/
+	basalelement->GetInputListOnVertices(&active[0],HydrologydcMaskThawedNodeEnum);
+	basalelement->GetInputValue(&active_element,HydrologydcMaskThawedEltEnum);
+
+	for(int i=0;i<numnodes;i++) flag+=active[i];
+
+	/*If any node is active all the node in the element are active*/
+	if(flag>0.){
+		for(int i=0;i<numnodes;i++){
+			active_vec->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
+		}
+	}
+	/*If the element is active all its nodes are active*/
+	else if(active_element){
+		for(int i=0;i<numnodes;i++){
+			active_vec->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
+		}
+	}
+	else{
+		/*Do not do anything: at least one node is active for this element but this element is not solved for*/
+	}
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	xDelete<IssmDouble>(active);
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyDCInefficientAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyDCInefficientAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyDCInefficientAnalysis.h	(revision 27955)
@@ -0,0 +1,46 @@
+/*! \file HydrologyDCInefficientAnalysis.h
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _HydrologyDCInefficientAnalysis_
+#define _HydrologyDCInefficientAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+class Node;
+class Input;
+class HydrologyDCInefficientAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_interp,int control_index);
+		void InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void UpdateConstraints(FemModel* femmodel);
+
+		/*Intermediaries*/
+		IssmDouble SedimentStoring(Element* element, Gauss* gauss, Input* sed_head_input, Input* base_input);
+		IssmDouble SedimentTransmitivity(Element* element,Gauss* gauss,Input* sed_head_input, Input* base_input,Input* SedTrans_input);
+		void GetHydrologyDCInefficientHmax(IssmDouble* ph_max,Element* element, Node* innode);
+		IssmDouble GetHydrologyKMatrixTransfer(Element* element);
+		IssmDouble GetHydrologyPVectorTransfer(Element* element, Gauss* gauss, Input* epl_head_input);
+		void ElementizeEplMask(FemModel* femmodel);
+		void HydrologyIDSGetMask(Vector<IssmDouble>* vec_mask, Element* element);
+		void ElementizeIdsMask(FemModel* femmodel);
+		void HydrologyIdsGetActive(Vector<IssmDouble>* active_vec, Element* element);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyGlaDSAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyGlaDSAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyGlaDSAnalysis.cpp	(revision 27955)
@@ -0,0 +1,809 @@
+#include "./HydrologyGlaDSAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+#define AEPS 2.2204460492503131E-015
+
+/*Model processing*/
+void HydrologyGlaDSAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*retrieve some parameters: */
+	int hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	if(hydrology_model!=HydrologyGlaDSEnum) return;
+
+	IoModelToConstraintsx(constraints,iomodel,"md.hydrology.spcphi",HydrologyGlaDSAnalysisEnum,P1Enum);
+
+}/*}}}*/
+void HydrologyGlaDSAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Fetch parameters: */
+	int  hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want GlaDS?*/
+	if(hydrology_model!=HydrologyGlaDSEnum) return;
+
+	/*Add channels?*/
+	int K,L;
+	bool ischannels;
+	IssmDouble* channelarea;
+	iomodel->FindConstant(&ischannels,"md.hydrology.ischannels");
+	iomodel->FetchData(&channelarea,&K,&L,"md.initialization.channelarea");
+	if(ischannels){
+		/*Get faces (edges in 2d)*/
+		CreateFaces(iomodel);
+		for(int i=0;i<iomodel->numberoffaces;i++){
+
+			/*Get left and right elements*/
+			int element=iomodel->faces[4*i+2]-1; //faces are [node1 node2 elem1 elem2]
+
+			/*Now, if this element is not in the partition*/
+			if(!iomodel->my_elements[element]) continue;
+
+			/*Add channelarea from initialization if exists*/
+			if(K!=0 && K!=iomodel->numberoffaces){
+				_error_("Unknown dimension for channel area initialization.");
+			}
+			if(K==0){
+				loads->AddObject(new Channel(i+1,0.,i,iomodel));
+			}
+			else{
+				loads->AddObject(new Channel(i+1,channelarea[i],i,iomodel));
+			}
+			iomodel->DeleteData(1,"md.initialization.channelarea");
+		}
+	}
+
+	/*Create discrete loads for Moulins*/
+	CreateSingleNodeToElementConnectivity(iomodel);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum && iomodel->domaintype!=Domain3DsurfaceEnum) iomodel->FetchData(1,"md.mesh.vertexonbase");
+	for(int i=0;i<iomodel->numberofvertices;i++){
+		if (iomodel->domaintype!=Domain3DEnum){
+			/*keep only this partition's nodes:*/
+			if(iomodel->my_vertices[i]){
+				loads->AddObject(new Moulin(i+1,i,iomodel));
+			}
+		}
+		else if(reCast<int>(iomodel->Data("md.mesh.vertexonbase")[i])){
+			if(iomodel->my_vertices[i]){
+				loads->AddObject(new Moulin(i+1,i,iomodel));
+			}	
+		}
+	}
+	iomodel->DeleteData(1,"md.mesh.vertexonbase");
+
+	/*Deal with Neumann BC*/
+	int M,N;
+	int *segments = NULL;
+	iomodel->FetchData(&segments,&M,&N,"md.mesh.segments");
+
+	/*Check that the size seem right*/
+	_assert_(N==3); _assert_(M>=3);
+	for(int i=0;i<M;i++){
+		if(iomodel->my_elements[segments[i*3+2]-1]){
+			loads->AddObject(new Neumannflux(i+1,i,iomodel,segments));
+		}
+	}
+	xDelete<int>(segments);
+
+}/*}}}*/
+void HydrologyGlaDSAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	/*Fetch parameters: */
+	int  hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want GlaDS?*/
+	if(hydrology_model!=HydrologyGlaDSEnum) return;
+
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,HydrologyGlaDSAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  HydrologyGlaDSAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void HydrologyGlaDSAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Fetch data needed: */
+	int    hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+	int    meltflag;	
+	iomodel->FindConstant(&meltflag,"md.hydrology.melt_flag");
+	
+	/*Now, do we really want GlaDS?*/
+	if(hydrology_model!=HydrologyGlaDSEnum) return;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.bed",BedEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.geothermalflux",BasalforcingsGeothermalfluxEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	if(meltflag==2){
+		iomodel->FetchDataToInput(inputs,elements,"md.smb.runoff",SmbRunoffEnum);
+	}
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.bump_height",HydrologyBumpHeightEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.sheet_conductivity",HydrologySheetConductivityEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.channel_conductivity",HydrologyChannelConductivityEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.neumannflux",HydrologyNeumannfluxEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.moulin_input",HydrologyMoulinInputEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.watercolumn",HydrologySheetThicknessEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.hydraulic_potential",HydraulicPotentialEnum);
+	if(iomodel->domaintype==Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxBaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyBaseEnum);
+	}
+	else{
+		iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum);
+	}
+
+	/*Friction*/
+	FrictionUpdateInputs(elements, inputs, iomodel);
+
+}/*}}}*/
+void HydrologyGlaDSAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	/*retrieve some parameters: */
+	int    hydrology_model;
+	int    numoutputs;
+	char** requestedoutputs = NULL;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want GlaDS?*/
+	if(hydrology_model!=HydrologyGlaDSEnum) return;
+
+	parameters->AddObject(new IntParam(HydrologyModelEnum,hydrology_model));
+	parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.pressure_melt_coefficient",HydrologyPressureMeltCoefficientEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.cavity_spacing",HydrologyCavitySpacingEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.ischannels",HydrologyIschannelsEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.melt_flag",HydrologyMeltFlagEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.channel_sheet_width",HydrologyChannelSheetWidthEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.channel_alpha",HydrologyChannelAlphaEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.channel_beta",HydrologyChannelBetaEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.sheet_alpha",HydrologySheetAlphaEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.sheet_beta",HydrologySheetBetaEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.omega",HydrologyOmegaEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.istransition",HydrologyIsTransitionEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.englacial_void_ratio",HydrologyEnglacialVoidRatioEnum));
+
+	/*Friction*/
+	FrictionUpdateParameters(parameters, iomodel);
+
+	/*Requested outputs*/
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.hydrology.requested_outputs");
+	parameters->AddObject(new IntParam(HydrologyNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(HydrologyRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.hydrology.requested_outputs");
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           HydrologyGlaDSAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           HydrologyGlaDSAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* HydrologyGlaDSAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* HydrologyGlaDSAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+	_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* HydrologyGlaDSAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Skip if water or ice shelf element*/
+	if(element->IsAllFloating() || !element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	IssmDouble  Jdet,dphi[3],h,k;
+	IssmDouble  h_r;
+	IssmDouble  A,B,n,phi_old,phi,phi_0,H,b,v1;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes);
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/*Get all inputs and parameters*/
+	bool istransition;
+	element->FindParam(&istransition,HydrologyIsTransitionEnum);
+	IssmDouble alpha     = element->FindParam(HydrologySheetAlphaEnum);
+	IssmDouble beta      = element->FindParam(HydrologySheetBetaEnum);
+	IssmDouble omega     = element->FindParam(HydrologyOmegaEnum);
+	IssmDouble dt        = element->FindParam(TimesteppingTimeStepEnum);
+	IssmDouble rho_water = element->FindParam(MaterialsRhoFreshwaterEnum);
+	IssmDouble mu_water  = element->FindParam(MaterialsMuWaterEnum);
+	IssmDouble rho_ice   = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble g         = element->FindParam(ConstantsGEnum);
+	IssmDouble e_v       = element->FindParam(HydrologyEnglacialVoidRatioEnum);
+	Input* hr_input      = element->GetInput(HydrologyBumpHeightEnum);_assert_(hr_input);
+	Input* k_input   = element->GetInput(HydrologySheetConductivityEnum);_assert_(k_input);
+	Input* phi_input = element->GetInput(HydraulicPotentialEnum);      _assert_(phi_input);
+	Input* h_input   = element->GetInput(HydrologySheetThicknessEnum); _assert_(h_input);
+	Input* H_input      = element->GetInput(ThicknessEnum); _assert_(H_input);
+	Input* b_input      = element->GetInput(BedEnum); _assert_(b_input);
+	Input* B_input      = element->GetInput(MaterialsRheologyBEnum);         _assert_(B_input);
+	Input* n_input      = element->GetInput(MaterialsRheologyNEnum);         _assert_(n_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		phi_input->GetInputDerivativeValue(&dphi[0],xyz_list,gauss);
+		phi_input->GetInputValue(&phi,gauss);
+		h_input->GetInputValue(&h,gauss);
+		k_input->GetInputValue(&k,gauss);
+		B_input->GetInputValue(&B,gauss);
+		n_input->GetInputValue(&n,gauss);
+		hr_input->GetInputValue(&h_r,gauss);
+		b_input->GetInputValue(&b,gauss);
+		H_input->GetInputValue(&H,gauss);
+
+		/*Hard code B*/
+		B = Cuffey(273.15-2);
+		
+		/*Get norm of gradient of hydraulic potential and make sure it is >0*/
+		IssmDouble normgradphi = sqrt(dphi[0]*dphi[0] + dphi[1]*dphi[1]);
+		if(normgradphi < AEPS) normgradphi = AEPS;
+		
+		/*Use transition model if specified*/
+		IssmDouble nu = mu_water/rho_water;
+		IssmDouble coeff;
+		if(istransition==1 && omega>=AEPS){
+			IssmDouble hratio = fabs(h/h_r);
+			IssmDouble coarg = 1. + 4.*pow(hratio,3-2*alpha)*omega*k*pow(h,3)*normgradphi/nu;
+			coeff = nu/2./omega*pow(hratio,2*alpha-3) * (-1 + pow(coarg, 0.5))/normgradphi;
+		}
+		else {
+			/*If omega is zero, use standard model, otherwise transition model*/
+			coeff = k*pow(h,alpha)*pow(normgradphi,beta-2.);
+		}
+
+		/*Diffusive term*/
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += gauss->weight*Jdet*(
+							coeff*dbasis[0*numnodes+i]*dbasis[0*numnodes+j]
+							+ coeff*dbasis[1*numnodes+i]*dbasis[1*numnodes+j]);
+			}
+		}
+
+		/*Closing rate term, see Gagliardini and Werder 2018 eq. A2 (v = v1*phi_i + v2(phi_{i+1}))*/
+		phi_0 = rho_water*g*b + rho_ice*g*H;
+		A=pow(B,-n);
+		v1 = 2./pow(n,n)*A*h*(pow(fabs(phi_0 - phi),n-1.)*( - n));
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += gauss->weight*Jdet*(-v1)*basis[i]*basis[j];
+			}
+		}
+
+		/*Transient term if dt>0*/
+		if(dt>0.){
+			/*Diffusive term*/
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += gauss->weight*Jdet*e_v/(rho_water*g*dt)*basis[i]*basis[j];
+				}
+			}
+		}
+
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* HydrologyGlaDSAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Skip if water or ice shelf element*/
+	if(element->IsAllFloating() || !element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int         meltflag;
+	IssmDouble  Jdet,w,v2,vx,vy,ub,h,h_r;
+	IssmDouble  G,m,melt,RO,frictionheat,alpha2;
+	IssmDouble  A,B,n,phi_old,phi,phi_0;
+	IssmDouble  H,b;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&meltflag,HydrologyMeltFlagEnum);
+	IssmDouble L         = element->FindParam(MaterialsLatentheatEnum);
+	IssmDouble rho_ice   = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble rho_water = element->FindParam(MaterialsRhoFreshwaterEnum);
+	IssmDouble l_r       = element->FindParam(HydrologyCavitySpacingEnum);
+	IssmDouble dt        = element->FindParam(TimesteppingTimeStepEnum);
+	IssmDouble g         = element->FindParam(ConstantsGEnum);
+	IssmDouble e_v       = element->FindParam(HydrologyEnglacialVoidRatioEnum);
+	Input* hr_input     = element->GetInput(HydrologyBumpHeightEnum);_assert_(hr_input);
+	Input* h_input      = element->GetInput(HydrologySheetThicknessEnum);_assert_(h_input);
+	Input* H_input      = element->GetInput(ThicknessEnum); _assert_(H_input);
+	Input* b_input      = element->GetInput(BedEnum); _assert_(b_input);
+	Input* G_input      = element->GetInput(BasalforcingsGeothermalfluxEnum);_assert_(G_input);
+	Input* melt_input   = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);_assert_(melt_input);
+	Input* RO_input     = NULL;
+	Input* B_input      = element->GetInput(MaterialsRheologyBEnum);         _assert_(B_input);
+	Input* n_input      = element->GetInput(MaterialsRheologyNEnum);         _assert_(n_input);
+	Input* phiold_input = element->GetInput(HydraulicPotentialOldEnum);      _assert_(phiold_input);
+	Input* phi_input    = element->GetInput(HydraulicPotentialEnum);         _assert_(phi_input);
+
+	/*Build friction element, needed later: */
+	Friction* friction=new Friction(element,2);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		/*Get input values at gauss points*/
+		h_input->GetInputValue(&h,gauss);
+		G_input->GetInputValue(&G,gauss);
+		B_input->GetInputValue(&B,gauss);
+		n_input->GetInputValue(&n,gauss);
+		hr_input->GetInputValue(&h_r,gauss);
+		phi_input->GetInputValue(&phi,gauss);
+		b_input->GetInputValue(&b,gauss);
+		H_input->GetInputValue(&H,gauss);
+		melt_input->GetInputValue(&melt,gauss);
+
+		/*Hard code B*/
+		B = Cuffey(273.15-2);
+
+		/*Get basal velocity*/
+		friction->GetBasalSlidingSpeeds(&vx, &vy ,gauss);
+		ub = sqrt(vx*vx + vy*vy);
+
+		/*Compute cavity opening w*/
+		w  = 0.;
+		if(h<h_r) w = ub*(h_r-h)/l_r;
+
+		/*Compute frictional heat flux*/
+		friction->GetAlpha2(&alpha2,gauss);
+		frictionheat=alpha2*ub*ub;
+
+		/*Compute melt (if necessary)*/
+		if(meltflag == 0){
+			m = (G + frictionheat)/(rho_ice*L);
+		}
+		else if(meltflag == 1){
+			m = melt;
+		}
+		else{
+			Input* RO_input = element->GetInput(SmbRunoffEnum);_assert_(RO_input);
+			RO_input->GetInputValue(&melt,gauss);
+			m = melt + RO;
+		}
+
+		/*Compute closing rate*/
+		phi_0 = rho_water*g*b + rho_ice*g*H;
+		A=pow(B,-n);
+		v2 = 2./pow(n,n)*A*h*(pow(fabs(phi_0 - phi),n-1.)*(phi_0 +(n-1.)*phi));
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+= - Jdet*gauss->weight*(w-v2-m)*basis[i];
+
+		/*Transient term if dt>0*/
+		if(dt>0.){
+			phiold_input->GetInputValue(&phi_old,gauss);
+			for(int i=0;i<numnodes;i++) pe->values[i] += gauss->weight*Jdet*e_v/(rho_water*g*dt)*phi_old*basis[i];
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	delete friction;
+	return pe;
+}/*}}}*/
+void           HydrologyGlaDSAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+
+	element->GetSolutionFromInputsOneDof(solution,HydraulicPotentialEnum);
+
+}/*}}}*/
+void           HydrologyGlaDSAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           HydrologyGlaDSAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	element->InputUpdateFromSolutionOneDof(solution,HydraulicPotentialEnum);
+
+	/*Compute Hydrology Vx and Vy for time stepping purposes (These inputs do not affect GlaDS)*/
+
+	/*Intermediaries*/
+   IssmDouble  dphi[3],h,k,phi;
+   	IssmDouble  h_r;
+	IssmDouble  oceanLS,iceLS;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number vertices for this element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize new sheet thickness*/
+	IssmDouble* vx = xNew<IssmDouble>(numvertices);
+	IssmDouble* vy = xNew<IssmDouble>(numvertices);
+
+	/*Set to 0 if inactive element*/
+	if(element->IsAllFloating() || !element->IsIceInElement()){
+		for(int iv=0;iv<numvertices;iv++) vx[iv] = 0.;
+		for(int iv=0;iv<numvertices;iv++) vy[iv] = 0.;
+		element->AddInput(HydrologyWaterVxEnum,vx,P1DGEnum);
+		element->AddInput(HydrologyWaterVyEnum,vy,P1DGEnum);
+		xDelete<IssmDouble>(vx);
+		xDelete<IssmDouble>(vy);
+		return;
+	}
+
+	/*Retrieve all inputs and parameters*/
+	bool istransition;
+	element->FindParam(&istransition,HydrologyIsTransitionEnum);
+	IssmDouble alpha     = element->FindParam(HydrologySheetAlphaEnum);
+	IssmDouble beta      = element->FindParam(HydrologySheetBetaEnum);
+	IssmDouble omega     = element->FindParam(HydrologyOmegaEnum);
+	element->GetVerticesCoordinates(&xyz_list);
+	IssmDouble rho_water = element->FindParam(MaterialsRhoFreshwaterEnum);
+	IssmDouble mu_water  = element->FindParam(MaterialsMuWaterEnum);
+	Input *k_input       = element->GetInput(HydrologySheetConductivityEnum); _assert_(k_input);
+	Input *phi_input     = element->GetInput(HydraulicPotentialEnum);         _assert_(phi_input);
+	Input *hr_input      = element->GetInput(HydrologyBumpHeightEnum);        _assert_(hr_input);
+	Input *h_input       = element->GetInput(HydrologySheetThicknessEnum);    _assert_(h_input);
+	Input *oceanLS_input = element->GetInput(MaskOceanLevelsetEnum);          _assert_(oceanLS_input);
+	Input *iceLS_input   = element->GetInput(MaskIceLevelsetEnum);            _assert_(iceLS_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss();
+	for(int iv=0;iv<numvertices;iv++){
+		gauss->GaussVertex(iv);
+
+		/*Get input values at gauss points*/
+      phi_input->GetInputDerivativeValue(&dphi[0],xyz_list,gauss);
+      phi_input->GetInputValue(&phi,gauss);
+      h_input->GetInputValue(&h,gauss);
+      	hr_input->GetInputValue(&h_r,gauss); 
+      k_input->GetInputValue(&k,gauss);
+		oceanLS_input->GetInputValue(&oceanLS,gauss);
+		iceLS_input->GetInputValue(&iceLS,gauss);
+
+		/*Set sheet thickness to zero if floating or no ice*/
+		if(oceanLS<0. || iceLS>0.){
+			vx[iv] = 0.;
+         vy[iv] = 0.;
+		}
+		else{
+
+         /*Get norm of gradient of hydraulic potential and make sure it is >0*/
+         IssmDouble normgradphi = sqrt(dphi[0]*dphi[0] + dphi[1]*dphi[1]);
+         if(normgradphi < AEPS) normgradphi = AEPS;
+         
+         /*If omega is zero, use standard model, otherwise transition model*/
+         IssmDouble nu = mu_water/rho_water;
+	IssmDouble coeff;
+	if(istransition==1 && omega>=AEPS){
+		IssmDouble hratio = fabs(h/h_r);
+		IssmDouble coarg = 1. + 4.*pow(hratio,3-2*alpha)*omega*k*pow(h,3)*normgradphi/nu;
+		coeff = nu/2./omega*pow(hratio,2*alpha-3) * (-1 + pow(coarg, 0.5))/normgradphi/max(AEPS,h);  // divide by h to get speed instead of discharge
+	}
+	else {
+		coeff = k*pow(h,alpha)*pow(normgradphi,beta-2.)/max(AEPS,h);  // divide by h to get speed instead of discharge
+	}
+
+
+			vx[iv] = -coeff*dphi[0];
+			vy[iv] = -coeff*dphi[1];
+		}
+	}
+
+	element->AddInput(HydrologyWaterVxEnum,vx,P1DGEnum);
+	element->AddInput(HydrologyWaterVyEnum,vy,P1DGEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(vy);
+	delete gauss;
+}/*}}}*/
+void           HydrologyGlaDSAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+
+	/*Update active elements based on ice levelset and ocean levelset*/
+	GetMaskOfIceVerticesLSMx(femmodel,true);
+	SetActiveNodesLSMx(femmodel,true);
+
+	IssmDouble rho_ice   = femmodel->parameters->FindParam(MaterialsRhoIceEnum);
+	IssmDouble rho_water = femmodel->parameters->FindParam(MaterialsRhoFreshwaterEnum);
+	IssmDouble g         = femmodel->parameters->FindParam(ConstantsGEnum);
+
+	/*Constrain all nodes that are grounded and unconstrain the ones that float*/
+	for(Object* & object : femmodel->elements->objects){
+		Element    *element  = xDynamicCast<Element*>(object);
+		int         numnodes  = element->GetNumberOfNodes();
+		IssmDouble *mask      = xNew<IssmDouble>(numnodes);
+		IssmDouble *bed       = xNew<IssmDouble>(numnodes);
+		IssmDouble *thickness = xNew<IssmDouble>(numnodes);
+		IssmDouble *ls_active = xNew<IssmDouble>(numnodes);
+
+		element->GetInputListOnNodes(&mask[0],MaskOceanLevelsetEnum);
+		element->GetInputListOnNodes(&bed[0],BaseEnum);
+		element->GetInputListOnNodes(&thickness[0],ThicknessEnum);
+		element->GetInputListOnNodes(&ls_active[0],HydrologyMaskNodeActivationEnum);
+
+		for(int in=0;in<numnodes;in++){
+			Node* node=element->GetNode(in);
+			if(mask[in]>0. && ls_active[in]==1.){
+				node->Activate(); //Not sure if we need this!
+			}
+			else{
+				IssmDouble phi =  rho_ice*g*thickness[in] + rho_water*g*bed[in]; //FIXME this is correct!
+				node->Deactivate();// Not sure if we need this
+				node->ApplyConstraint(0,phi);
+			}
+		}
+		xDelete<IssmDouble>(mask);
+		xDelete<IssmDouble>(bed);
+		xDelete<IssmDouble>(thickness);
+		xDelete<IssmDouble>(ls_active);
+	}
+
+	return;
+}/*}}}*/
+
+/*GlaDS specifics*/
+void HydrologyGlaDSAnalysis::SetChannelCrossSectionOld(FemModel* femmodel){/*{{{*/
+
+	bool ischannels;
+	femmodel->parameters->FindParam(&ischannels,HydrologyIschannelsEnum);
+	if(!ischannels) return;
+
+	for(int i=0;i<femmodel->loads->Size();i++){
+		if(femmodel->loads->GetEnum(i)==ChannelEnum){
+			Channel* channel=(Channel*)femmodel->loads->GetObjectByOffset(i);
+			channel->SetChannelCrossSectionOld();
+		}
+	}
+
+}/*}}}*/
+void HydrologyGlaDSAnalysis::UpdateSheetThickness(FemModel* femmodel){/*{{{*/
+
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		UpdateSheetThickness(element);
+	}
+
+}/*}}}*/
+void HydrologyGlaDSAnalysis::UpdateSheetThickness(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble  Jdet,vx,vy,ub,h_old,N,h_r,H,b;
+	IssmDouble  A,B,n,phi,phi_0;
+	IssmDouble  alpha,beta;
+	IssmDouble  oceanLS,iceLS;
+
+	/*Fetch number vertices for this element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize new sheet thickness*/
+	IssmDouble* h_new = xNew<IssmDouble>(numvertices);
+
+	/*Set to 0 if inactive element*/
+	if(element->IsAllFloating() || !element->IsIceInElement()){
+		for(int iv=0;iv<numvertices;iv++) h_new[iv] = 0.;
+		element->AddInput(HydrologySheetThicknessEnum,h_new,P1Enum);
+		xDelete<IssmDouble>(h_new);
+		return;
+	}
+
+	/*Retrieve all inputs and parameters*/
+	IssmDouble  dt       = element->FindParam(TimesteppingTimeStepEnum);
+	IssmDouble  l_r      = element->FindParam(HydrologyCavitySpacingEnum);
+	IssmDouble rho_ice   = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble rho_water = element->FindParam(MaterialsRhoFreshwaterEnum);
+	IssmDouble g         = element->FindParam(ConstantsGEnum);
+	Input* hr_input = element->GetInput(HydrologyBumpHeightEnum);_assert_(hr_input);
+	Input* vx_input = element->GetInput(VxBaseEnum);_assert_(vx_input);
+	Input* vy_input = element->GetInput(VyBaseEnum);_assert_(vy_input);
+	Input* H_input  = element->GetInput(ThicknessEnum); _assert_(H_input);
+	Input* b_input  = element->GetInput(BedEnum); _assert_(b_input);
+	Input* hold_input  = element->GetInput(HydrologySheetThicknessOldEnum);_assert_(hold_input);
+	Input* B_input  = element->GetInput(MaterialsRheologyBEnum);         _assert_(B_input);
+	Input* n_input  = element->GetInput(MaterialsRheologyNEnum);         _assert_(n_input);
+	Input* phi_input = element->GetInput(HydraulicPotentialEnum);         _assert_(phi_input);
+	Input* oceanLS_input = element->GetInput(MaskOceanLevelsetEnum); _assert_(oceanLS_input);
+	Input* iceLS_input = element->GetInput(MaskIceLevelsetEnum); _assert_(iceLS_input);
+
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss();
+	for(int iv=0;iv<numvertices;iv++){
+		gauss->GaussVertex(iv);
+
+		/*Get input values at gauss points*/
+		phi_input->GetInputValue(&phi,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		hold_input->GetInputValue(&h_old,gauss);
+		B_input->GetInputValue(&B,gauss);
+		n_input->GetInputValue(&n,gauss);
+		hr_input->GetInputValue(&h_r,gauss);
+		b_input->GetInputValue(&b,gauss);
+		H_input->GetInputValue(&H,gauss);
+		oceanLS_input->GetInputValue(&oceanLS,gauss);
+		iceLS_input->GetInputValue(&iceLS,gauss);
+
+		/*Hard code B*/
+		B = Cuffey(273.15-2);
+
+		/*Set sheet thickness to zero if floating or no ice*/
+		if(oceanLS<0. || iceLS>0.){
+			h_new[iv] = 0.;
+		}
+		else{
+
+		/*Get values for a few potentials*/
+		phi_0 = rho_water*g*b + rho_ice*g*H;
+		N = phi_0 - phi;
+
+		/*Get basal velocity*/
+		ub = sqrt(vx*vx + vy*vy);
+
+		/*Get A from B and n*/
+		A = pow(B,-n);
+
+		/*Define alpha and beta*/
+		if(h_old<h_r){
+			alpha = -ub/l_r - 2./pow(n,n)*A*pow(fabs(N),n-1.)*N;
+			beta  = ub*h_r/l_r;
+		}
+		else{
+			alpha = - 2./pow(n,n)*A*pow(fabs(N),n-1.)*N;
+			beta  = 0.;
+		}
+
+		/*Get new sheet thickness*/
+		h_new[iv] = ODE1(alpha,beta,h_old,dt,1);
+
+		/*Make sure it is positive*/
+		if(h_new[iv]<AEPS) h_new[iv] = AEPS;
+	}
+	}
+
+	element->AddInput(HydrologySheetThicknessEnum,h_new,P1Enum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(h_new);
+	delete gauss;
+}/*}}}*/
+void HydrologyGlaDSAnalysis::UpdateEffectivePressure(FemModel* femmodel){/*{{{*/
+
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		UpdateEffectivePressure(element);
+	}
+
+}/*}}}*/
+void HydrologyGlaDSAnalysis::UpdateEffectivePressure(Element* element){/*{{{*/
+
+	/*Intermediary*/
+	IssmDouble phi_0, phi_m, p_i;
+	IssmDouble H,b,phi;
+	IssmDouble oceanLS,iceLS;
+
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get thickness and base on nodes to apply cap on water head*/
+   IssmDouble* N = xNew<IssmDouble>(numnodes);
+	IssmDouble  rho_ice   = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  rho_water = element->FindParam(MaterialsRhoFreshwaterEnum);
+	IssmDouble  g         = element->FindParam(ConstantsGEnum);
+	Input* H_input   = element->GetInput(ThicknessEnum); _assert_(H_input);
+	Input* b_input   = element->GetInput(BedEnum); _assert_(b_input);
+	Input* phi_input = element->GetInput(HydraulicPotentialEnum); _assert_(phi_input);
+	Input* oceanLS_input = element->GetInput(MaskOceanLevelsetEnum); _assert_(oceanLS_input);
+	Input* iceLS_input = element->GetInput(MaskIceLevelsetEnum); _assert_(iceLS_input);
+
+	/*Set to 0 if inactive element*/
+	if(element->IsAllFloating() || !element->IsIceInElement()){
+		for(int iv=0;iv<numnodes;iv++) N[iv] = 0.;
+		element->AddInput(EffectivePressureEnum,N,P1Enum);
+		xDelete<IssmDouble>(N);
+		return;
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss();
+	for(int iv=0;iv<numnodes;iv++){
+		gauss->GaussNode(element->FiniteElement(),iv);
+
+		/*Get input values at gauss points*/
+		H_input->GetInputValue(&H,gauss);
+		b_input->GetInputValue(&b,gauss);
+		phi_input->GetInputValue(&phi,gauss);
+		oceanLS_input->GetInputValue(&oceanLS,gauss);
+		iceLS_input->GetInputValue(&iceLS,gauss);
+
+		/*Elevation potential*/
+		phi_m = rho_water*g*b;
+
+		/*Compute overburden pressure*/
+		p_i = rho_ice*g*H;
+
+		/*Compute overburden potential*/
+		phi_0 = phi_m + p_i;
+
+		/*Calculate effective pressure*/
+		N[iv] = phi_0 - phi;
+
+		/*Make sure that all floating ice and ice free areas have zero effective pressure*/
+		if(oceanLS<0.0) N[iv] = 0.0;
+		if(iceLS>0.0) N[iv] = 0.0;
+
+		if(xIsNan<IssmDouble>(N[iv])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(N[iv])) _error_("Inf found in solution vector");
+	}
+
+	element->AddInput(EffectivePressureEnum,N,element->FiniteElement());
+	
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(N);
+}/*}}}*/
+void HydrologyGlaDSAnalysis::UpdateChannelCrossSection(FemModel* femmodel){/*{{{*/
+
+	bool ischannels;
+	femmodel->parameters->FindParam(&ischannels,HydrologyIschannelsEnum);
+	if(!ischannels) return;
+
+	for(int i=0;i<femmodel->loads->Size();i++){
+		if(femmodel->loads->GetEnum(i)==ChannelEnum){
+			Channel* channel=(Channel*)femmodel->loads->GetObjectByOffset(i);
+			channel->UpdateChannelCrossSection();
+		}
+	}
+
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyGlaDSAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyGlaDSAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyGlaDSAnalysis.h	(revision 27955)
@@ -0,0 +1,42 @@
+/*! \file HydrologyGlaDSAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _HydrologyGlaDSAnalysis_
+#define _HydrologyGlaDSAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class HydrologyGlaDSAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+
+		/*Specific to GlaDS*/
+		void SetChannelCrossSectionOld(FemModel* femmodel);
+		void UpdateSheetThickness(FemModel* femmodel);
+		void UpdateSheetThickness(Element*  element);
+		void UpdateChannelCrossSection(FemModel* femmodel);
+		void UpdateEffectivePressure(FemModel* femmodel);
+		void UpdateEffectivePressure(Element* element);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyPismAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyPismAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyPismAnalysis.cpp	(revision 27955)
@@ -0,0 +1,144 @@
+#include "./HydrologyPismAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void HydrologyPismAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	return;
+
+}/*}}}*/
+void HydrologyPismAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	return;
+
+}/*}}}*/
+void HydrologyPismAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+	return;
+}/*}}}*/
+int  HydrologyPismAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 0;
+}/*}}}*/
+void HydrologyPismAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Fetch data needed: */
+	int    hydrology_model,frictionlaw;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want Pism?*/
+	if(hydrology_model!=HydrologypismEnum) return;
+
+	/*Add input to elements*/
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.drainage_rate",HydrologyDrainageRateEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.watercolumn_max",HydrologyWatercolumnMaxEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.watercolumn",WatercolumnEnum,0.);
+}/*}}}*/
+void HydrologyPismAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	/*retrieve some parameters: */
+	int    hydrology_model;
+	int    numoutputs;
+	char** requestedoutputs = NULL;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want Pism?*/
+	if(hydrology_model!=HydrologypismEnum) return;
+	parameters->AddObject(new IntParam(HydrologyModelEnum,hydrology_model));
+
+	/*Requested outputs*/
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.hydrology.requested_outputs");
+	parameters->AddObject(new IntParam(HydrologyNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(HydrologyRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.hydrology.requested_outputs");
+
+	/*Nothing else to add for now*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           HydrologyPismAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           HydrologyPismAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* HydrologyPismAnalysis::CreateDVector(Element* element){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementMatrix* HydrologyPismAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* HydrologyPismAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* HydrologyPismAnalysis::CreatePVector(Element* element){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           HydrologyPismAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           HydrologyPismAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           HydrologyPismAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           HydrologyPismAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+
+/*Additional methods*/
+void HydrologyPismAnalysis::UpdateWaterColumn(FemModel* femmodel){/*{{{*/
+
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		this->UpdateWaterColumn(element);
+	}
+
+}/*}}}*/
+void HydrologyPismAnalysis::UpdateWaterColumn(Element* element){/*{{{*/
+
+	/*Skip if water or ice shelf element*/
+	if(element->IsAllFloating()) return;
+
+	/*Intermediaries */
+	IssmDouble  dt,drainage_rate,water_column;
+
+	/*Retrieve all inputs and parameters*/
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	IssmDouble  rho_ice   = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  rho_water = element->FindParam(MaterialsRhoFreshwaterEnum);
+
+	/*Get water column and drainage rate*/
+	const int  numvertices= element->GetNumberOfVertices();
+	IssmDouble* watercolumn  = xNew<IssmDouble>(numvertices);
+	IssmDouble* drainagerate = xNew<IssmDouble>(numvertices);
+	IssmDouble* meltingrate  = xNew<IssmDouble>(numvertices);
+ 	IssmDouble* watercolumn_max  = xNew<IssmDouble>(numvertices);
+	element->GetInputListOnVertices(&watercolumn[0],WaterColumnOldEnum);
+	element->GetInputListOnVertices(&drainagerate[0],HydrologyDrainageRateEnum);
+	element->GetInputListOnVertices(&meltingrate[0],BasalforcingsGroundediceMeltingRateEnum);
+	element->GetInputListOnVertices(&watercolumn_max[0],HydrologyWatercolumnMaxEnum);
+
+	/*Add water*/
+	for(int i=0;i<numvertices;i++){
+		watercolumn[i] += (meltingrate[i]/rho_ice*rho_water-drainagerate[i])*dt;
+		/*Check that water column height is within 0 and upper bound, correct if needed*/
+ 		if(watercolumn[i]>watercolumn_max[i]) watercolumn[i]=watercolumn_max[i];
+ 		if(watercolumn[i]<0) watercolumn[i]=0.;
+	}
+
+	/* Divide by connectivity, add degree of channelization as an input */
+	/*FIXME: should be changed to P1, this is due to the NR, IsAllFloating will return 0 on this element, but it should not be DG*/
+	element->AddInput(WatercolumnEnum,&watercolumn[0],P1DGEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(watercolumn);
+	xDelete<IssmDouble>(meltingrate);
+	xDelete<IssmDouble>(watercolumn_max);
+	xDelete<IssmDouble>(drainagerate);
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyPismAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyPismAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyPismAnalysis.h	(revision 27955)
@@ -0,0 +1,38 @@
+/*! \file HydrologyPismAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _HydrologyPismAnalysis_
+#define _HydrologyPismAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class HydrologyPismAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+
+		/*Intermediaries*/
+		void UpdateWaterColumn(FemModel* femmodel);
+		void UpdateWaterColumn(Element* element);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyShaktiAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyShaktiAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyShaktiAnalysis.cpp	(revision 27955)
@@ -0,0 +1,717 @@
+#include "./HydrologyShaktiAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Define 2 hardcoded parameters*/
+#define OMEGA 0.001    // parameter controlling transition to nonlinear resistance in basal system (dimensionless)
+#define NU    1.787e-6 //kinematic water viscosity m^2/s
+#define CT    7.5e-8  // Clapeyron slope (K/Pa) 
+#define CW    4.22e3   // specific heat capacity of water (J/kg/K)
+
+/*Model processing*/
+void HydrologyShaktiAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*retrieve some parameters: */
+	int hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	if(hydrology_model!=HydrologyshaktiEnum) return;
+
+	IoModelToConstraintsx(constraints,iomodel,"md.hydrology.spchead",HydrologyShaktiAnalysisEnum,P1Enum);
+
+}/*}}}*/
+void HydrologyShaktiAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Fetch parameters: */
+	int  hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want Shakti?*/
+	if(hydrology_model!=HydrologyshaktiEnum) return;
+
+	/*Create discrete loads for Moulins*/
+	CreateSingleNodeToElementConnectivity(iomodel);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum && iomodel->domaintype!=Domain3DsurfaceEnum) iomodel->FetchData(1,"md.mesh.vertexonbase");
+	for(int i=0;i<iomodel->numberofvertices;i++){
+		if (iomodel->domaintype!=Domain3DEnum){
+			/*keep only this partition's nodes:*/
+			if(iomodel->my_vertices[i]){
+				loads->AddObject(new Moulin(i+1,i,iomodel));
+			}
+		}
+		else if(reCast<int>(iomodel->Data("md.mesh.vertexonbase")[i])){
+			if(iomodel->my_vertices[i]){
+				loads->AddObject(new Moulin(i+1,i,iomodel));
+			}	
+		}
+	}
+	iomodel->DeleteData(1,"md.mesh.vertexonbase");
+
+	/*Deal with Neumann BC*/
+	int M,N;
+	int *segments = NULL;
+	if(iomodel->domaintype==Domain3DEnum){
+		iomodel->FetchData(&segments,&M,&N,"md.mesh.segments2d");
+	}
+	else if(iomodel->domaintype==Domain2DhorizontalEnum){
+		iomodel->FetchData(&segments,&M,&N,"md.mesh.segments");
+	}
+	else{
+		_error_("mesh type not supported yet");
+	}
+
+	/*Check that the size seem right*/
+	_assert_(N==3); _assert_(M>=3);
+
+	for(int i=0;i<M;i++){
+		if(iomodel->my_elements[segments[i*3+2]-1]){
+			loads->AddObject(new Neumannflux(i+1,i,iomodel,segments));
+		}
+	}
+	xDelete<int>(segments);
+
+}/*}}}*/
+void HydrologyShaktiAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	/*Fetch parameters: */
+	int  hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want Shakti?*/
+	if(hydrology_model!=HydrologyshaktiEnum) return;
+
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,HydrologyShaktiAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  HydrologyShaktiAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void HydrologyShaktiAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Fetch data needed: */
+	int    hydrology_model,frictionlaw;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want Shakti?*/
+	if(hydrology_model!=HydrologyshaktiEnum) return;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.geothermalflux",BasalforcingsGeothermalfluxEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.head",HydrologyHeadEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.gap_height",HydrologyGapHeightEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.englacial_input",HydrologyEnglacialInputEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.moulin_input",HydrologyMoulinInputEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.bump_spacing",HydrologyBumpSpacingEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.bump_height",HydrologyBumpHeightEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.reynolds",HydrologyReynoldsEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.neumannflux",HydrologyNeumannfluxEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum);
+	if(iomodel->domaintype==Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxBaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyBaseEnum);
+	}
+
+	/*Friction*/
+	FrictionUpdateInputs(elements, inputs, iomodel);
+}/*}}}*/
+void HydrologyShaktiAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	/*retrieve some parameters: */
+	int    hydrology_model;
+	int    numoutputs;
+	char** requestedoutputs = NULL;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want Shakti?*/
+	if(hydrology_model!=HydrologyshaktiEnum) return;
+
+	parameters->AddObject(new IntParam(HydrologyModelEnum,hydrology_model));
+   parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.relaxation",HydrologyRelaxationEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.storage",HydrologyStorageEnum));
+
+  /*Requested outputs*/
+  iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.hydrology.requested_outputs");
+  parameters->AddObject(new IntParam(HydrologyNumRequestedOutputsEnum,numoutputs));
+  if(numoutputs)parameters->AddObject(new StringArrayParam(HydrologyRequestedOutputsEnum,requestedoutputs,numoutputs));
+  iomodel->DeleteData(&requestedoutputs,numoutputs,"md.hydrology.requested_outputs");
+
+	/*Friction*/
+	FrictionUpdateParameters(parameters, iomodel);
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           HydrologyShaktiAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           HydrologyShaktiAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* HydrologyShaktiAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* HydrologyShaktiAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* HydrologyShaktiAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(element->IsAllFloating() || !element->IsIceInElement()) return NULL;
+	if(!element->IsOnBase()) return NULL;
+	Element* basalelement = element->SpawnBasalElement();
+
+	/*Intermediaries */
+	IssmDouble Jdet;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble  gap,bed,thickness,head,g,rho_ice,rho_water,A,B,n;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = basalelement->NewElementMatrix();
+	IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes);
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Get conductivity from inputs*/
+	IssmDouble conductivity = GetConductivity(basalelement);
+
+	/*Get englacial storage coefficient*/
+	IssmDouble storage,dt;
+	basalelement->FindParam(&storage,HydrologyStorageEnum);
+	basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
+
+	/*Get all inputs and parameters*/
+	basalelement->FindParam(&rho_water,MaterialsRhoFreshwaterEnum);
+	basalelement->FindParam(&rho_ice,MaterialsRhoIceEnum);
+	basalelement->FindParam(&g,ConstantsGEnum);
+	Input* B_input = basalelement->GetInput(MaterialsRheologyBEnum);         _assert_(B_input);
+	Input* n_input = basalelement->GetInput(MaterialsRheologyNEnum);         _assert_(n_input);
+	Input* gap_input = basalelement->GetInput(HydrologyGapHeightEnum);         _assert_(gap_input);
+	Input* thickness_input = basalelement->GetInput(ThicknessEnum);                  _assert_(thickness_input);
+	Input* head_input = basalelement->GetInput(HydrologyHeadEnum);              _assert_(head_input);
+	Input* base_input = basalelement->GetInput(BaseEnum);                      _assert_(base_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(1);
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+
+		base_input->GetInputValue(&bed,gauss);
+		thickness_input->GetInputValue(&thickness,gauss);
+		gap_input->GetInputValue(&gap,gauss);
+		head_input->GetInputValue(&head,gauss);
+
+		/*Get ice A parameter*/
+		B_input->GetInputValue(&B,gauss);
+		n_input->GetInputValue(&n,gauss);
+		A=pow(B,-n);
+
+		/*Get water and ice pressures*/
+		IssmDouble pressure_ice   = rho_ice*g*thickness;    _assert_(pressure_ice>0.);
+		IssmDouble pressure_water = rho_water*g*(head-bed);
+		if(pressure_water>pressure_ice) pressure_water = pressure_ice;
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += conductivity*gauss->weight*Jdet*(dbasis[0*numnodes+i]*dbasis[0*numnodes+j] + dbasis[1*numnodes+i]*dbasis[1*numnodes+j])
+				  + gauss->weight*Jdet*storage/dt*basis[i]*basis[j]
+				  +gauss->weight*Jdet*A*(n)*(pow(fabs(pressure_ice-pressure_water),(n-1))*rho_water*g)*gap*basis[i]*basis[j];
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+ElementVector* HydrologyShaktiAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Skip if water or ice shelf element*/
+	if(element->IsAllFloating() || !element->IsIceInElement()) return NULL;
+	if(!element->IsOnBase()) return NULL;
+	Element* basalelement = element->SpawnBasalElement();
+
+	/*Intermediaries */
+	IssmDouble  Jdet,meltrate,G,dh[2],B,A,n;
+	IssmDouble  gap,bed,thickness,head,ieb,head_old;
+	IssmDouble  lr,br,vx,vy,beta,lc;
+	IssmDouble  alpha2,frictionheat;
+   IssmDouble  PMPheat,dissipation,dpressure_water[2],dbed[2];	
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = basalelement->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	IssmDouble  latentheat      = basalelement->FindParam(MaterialsLatentheatEnum);
+	IssmDouble  g               = basalelement->FindParam(ConstantsGEnum);
+	IssmDouble  rho_ice         = basalelement->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  rho_water       = basalelement->FindParam(MaterialsRhoFreshwaterEnum);
+	Input* geothermalflux_input = basalelement->GetInput(BasalforcingsGeothermalfluxEnum);_assert_(geothermalflux_input);
+	Input* head_input           = basalelement->GetInput(HydrologyHeadEnum);              _assert_(head_input);
+	Input* gap_input            = basalelement->GetInput(HydrologyGapHeightEnum);         _assert_(gap_input);
+	Input* thickness_input      = basalelement->GetInput(ThicknessEnum);                  _assert_(thickness_input);
+	Input* base_input           = basalelement->GetInput(BaseEnum);                       _assert_(base_input);
+	Input* B_input              = basalelement->GetInput(MaterialsRheologyBEnum);         _assert_(B_input);
+	Input* n_input              = basalelement->GetInput(MaterialsRheologyNEnum);         _assert_(n_input);
+	Input* englacial_input      = basalelement->GetInput(HydrologyEnglacialInputEnum);    _assert_(englacial_input);
+	Input* lr_input             = basalelement->GetInput(HydrologyBumpSpacingEnum);       _assert_(lr_input);
+	Input* br_input             = basalelement->GetInput(HydrologyBumpHeightEnum);        _assert_(br_input);
+   Input* headold_input        = basalelement->GetInput(HydrologyHeadOldEnum);           _assert_(headold_input);
+
+	/*Get conductivity from inputs*/
+	IssmDouble conductivity = GetConductivity(basalelement);
+
+	/*Get englacial storage coefficient*/
+	IssmDouble storage,dt;
+   basalelement->FindParam(&storage,HydrologyStorageEnum);
+   basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
+
+	/*Build friction basalelement, needed later: */
+	Friction* friction=new Friction(basalelement,2);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+		geothermalflux_input->GetInputValue(&G,gauss);
+		base_input->GetInputValue(&bed,gauss);
+		base_input->GetInputDerivativeValue(&dbed[0],xyz_list,gauss);
+		thickness_input->GetInputValue(&thickness,gauss);
+		gap_input->GetInputValue(&gap,gauss);
+		head_input->GetInputValue(&head,gauss);
+		head_input->GetInputDerivativeValue(&dh[0],xyz_list,gauss);
+		englacial_input->GetInputValue(&ieb,gauss);
+		lr_input->GetInputValue(&lr,gauss);
+		br_input->GetInputValue(&br,gauss);
+                headold_input->GetInputValue(&head_old,gauss);
+
+		/*Get ice A parameter*/
+		B_input->GetInputValue(&B,gauss);
+		n_input->GetInputValue(&n,gauss);
+		A=pow(B,-n);
+
+		/*Compute beta term*/
+		if(gap<br)
+		 beta = (br-gap)/lr;
+		else
+		 beta = 0.;
+
+		/*Compute frictional heat flux*/
+		friction->GetAlpha2(&alpha2,gauss);
+		friction->GetBasalSlidingSpeeds(&vx, &vy, gauss);
+		frictionheat=alpha2*(vx*vx+vy*vy);
+
+		/*Get water and ice pressures*/
+		IssmDouble pressure_ice   = rho_ice*g*thickness;    _assert_(pressure_ice>0.); 
+		IssmDouble pressure_water = rho_water*g*(head-bed);
+		if(pressure_water>pressure_ice) pressure_water = pressure_ice;
+
+		/*Get water pressure from previous time step to use in lagged creep term*/
+		IssmDouble pressure_water_old = rho_water*g*(head_old-bed);
+		if(pressure_water_old>pressure_ice) pressure_water_old = pressure_ice;
+
+		/*Compute change in sensible heat due to changes in pressure melting point*/
+		dpressure_water[0] = rho_water*g*(dh[0] - dbed[0]);
+		dpressure_water[1] = rho_water*g*(dh[1] - dbed[1]);
+
+		meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1]));
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*
+		 (
+		  meltrate*(1/rho_water-1/rho_ice)
+		  +A*pow(fabs(pressure_ice - pressure_water),n-1)*(pressure_ice + rho_water*g*bed)*gap
+		  +(n-1)*A*pow(fabs(pressure_ice - pressure_water),n-1)*(rho_water*g*head)*gap
+		  -beta*sqrt(vx*vx+vy*vy)
+		  +ieb
+		  +storage*head_old/dt
+		 )*basis[i];
+
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete friction;
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return pe;
+}/*}}}*/
+void           HydrologyShaktiAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,HydrologyHeadEnum);
+}/*}}}*/
+void           HydrologyShaktiAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           HydrologyShaktiAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	/*Only update if on base*/
+	if(!element->IsOnBase()) return;
+
+	/*Intermediary*/
+	IssmDouble dh[3];
+	int* doflist = NULL;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get gravity from parameters*/
+	IssmDouble  g = element->FindParam(ConstantsGEnum);
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Fetch dof list and allocate solution vector*/
+	element->GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values = xNew<IssmDouble>(numnodes);
+
+	/*Get thickness and base on nodes to apply cap on water head*/
+	IssmDouble* thickness = xNew<IssmDouble>(numnodes);
+	IssmDouble* bed       = xNew<IssmDouble>(numnodes);
+	IssmDouble  rho_ice   = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  rho_water = element->FindParam(MaterialsRhoFreshwaterEnum);
+	element->GetInputListOnNodes(&thickness[0],ThicknessEnum);
+	element->GetInputListOnNodes(&bed[0],BaseEnum);
+
+	/*Get head from previous time-step and under-relaxation coefficient to use in under-relaxation for nonlinear convergence*/
+   IssmDouble* head_old  = xNew<IssmDouble>(numnodes); 
+	element->GetInputListOnNodes(&head_old[0],HydrologyHeadEnum);
+   IssmDouble relaxation; 
+	element->FindParam(&relaxation,HydrologyRelaxationEnum);
+
+	/*Use the dof list to index into the solution vector: */
+	for(int i=0;i<numnodes;i++){
+		values[i]=solution[doflist[i]];
+
+		/*Under-relaxation*/
+	   values[i] = head_old[i] - relaxation*(head_old[i]-values[i]);
+
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Add input to the element: */
+	element->AddBasalInput(HydrologyHeadEnum,values,element->GetElementType());
+
+	/*Update reynolds number according to new solution*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* head_input = element->GetInput(HydrologyHeadEnum);_assert_(head_input);
+	IssmDouble conductivity = GetConductivity(element);
+
+	/*Get gap height derivatives at the center of the element*/
+	Gauss* gauss=element->NewGauss(1);
+	head_input->GetInputDerivativeValue(&dh[0],xyz_list,gauss);
+	delete gauss;
+
+	IssmDouble reynolds = conductivity*sqrt(dh[0]*dh[0]+dh[1]*dh[1])/NU;
+	element->AddBasalInput(HydrologyReynoldsEnum,&reynolds,P0Enum);
+
+   /*Compute new effective pressure*/
+   this->UpdateEffectivePressure(element);
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(thickness);
+	xDelete<IssmDouble>(bed);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<int>(doflist);
+   xDelete<IssmDouble>(head_old);
+}/*}}}*/
+void           HydrologyShaktiAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Update active elements based on ice levelset and ocean levelset*/
+	GetMaskOfIceVerticesLSMx(femmodel,true);
+	SetActiveNodesLSMx(femmodel,true);
+
+	IssmDouble rho_ice   = femmodel->parameters->FindParam(MaterialsRhoIceEnum);
+	IssmDouble rho_water = femmodel->parameters->FindParam(MaterialsRhoFreshwaterEnum);
+	IssmDouble g         = femmodel->parameters->FindParam(ConstantsGEnum);
+
+	/*Constrain all nodes that are grounded and unconstrain the ones that float*/
+	for(Object* & object : femmodel->elements->objects){
+
+		/*Get current element and return if not on base*/
+		Element *element  = xDynamicCast<Element*>(object);
+		if(!element->IsOnBase()) continue;
+
+		int         numnodes  = element->GetNumberOfNodes();
+		IssmDouble *mask      = xNew<IssmDouble>(numnodes);
+		IssmDouble *bed       = xNew<IssmDouble>(numnodes);
+		IssmDouble *thickness = xNew<IssmDouble>(numnodes);
+		IssmDouble *ls_active = xNew<IssmDouble>(numnodes);
+
+		element->GetInputListOnNodes(&mask[0],MaskOceanLevelsetEnum);
+		element->GetInputListOnNodes(&bed[0],BaseEnum);
+		element->GetInputListOnNodes(&thickness[0],ThicknessEnum);
+		element->GetInputListOnNodes(&ls_active[0],HydrologyMaskNodeActivationEnum);
+
+		//for(int in=0;in<numnodes;in++){ //
+		for(int in=0;in<3;in++){ //
+			Node* node=element->GetNode(in);
+			if(mask[in]>0. && ls_active[in]==1.){
+				node->Activate(); //Not sure if we need this!
+			}
+			else{
+				IssmDouble phi =  rho_ice*g*thickness[in] + rho_water*g*bed[in]; //FIXME this is correct!
+				node->Deactivate();// Not sure if we need this
+				node->ApplyConstraint(0,phi);
+			}
+		}
+		xDelete<IssmDouble>(mask);
+		xDelete<IssmDouble>(bed);
+		xDelete<IssmDouble>(thickness);
+		xDelete<IssmDouble>(ls_active);
+	}
+
+	return;
+}/*}}}*/
+
+/*Additional methods*/
+IssmDouble HydrologyShaktiAnalysis::GetConductivity(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble gap,reynolds;
+
+	/*Get gravity from parameters*/
+	IssmDouble  g = element->FindParam(ConstantsGEnum);
+
+	/*Get Reynolds and gap average values*/
+	Input* reynolds_input = element->GetInput(HydrologyReynoldsEnum);  _assert_(reynolds_input);
+	Input* gap_input      = element->GetInput(HydrologyGapHeightEnum); _assert_(gap_input);
+	reynolds_input->GetInputAverage(&reynolds);
+	gap_input->GetInputAverage(&gap);
+
+	/*Compute conductivity*/
+	IssmDouble conductivity = pow(gap,3)*g/(12.*NU*(1+OMEGA*reynolds));
+	_assert_(conductivity>0);
+
+	/*Clean up and return*/
+	return conductivity;
+}/*}}}*/
+void HydrologyShaktiAnalysis::UpdateGapHeight(FemModel* femmodel){/*{{{*/
+
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		UpdateGapHeight(element);
+	}
+
+}/*}}}*/
+void HydrologyShaktiAnalysis::UpdateGapHeight(Element* element){/*{{{*/
+
+	/*Skip if water or ice shelf element*/
+	if(element->IsAllFloating() || !element->IsIceInElement()) return;
+	if(!element->IsOnBase()) return;
+	Element* basalelement = element->SpawnBasalElement();
+
+	/*Intermediaries */
+	IssmDouble  newgap = 0.;
+	IssmDouble  Jdet,meltrate,G,dh[3],B,A,n,dt;
+	IssmDouble  gap,bed,thickness,head;
+	IssmDouble  lr,br,vx,vy,beta,lc;
+	IssmDouble  alpha2,frictionheat;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble  dpressure_water[3],dbed[3],PMPheat,dissipation;
+	IssmDouble q = 0.;
+	IssmDouble channelization = 0.;
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	IssmDouble  latentheat      = basalelement->FindParam(MaterialsLatentheatEnum);
+	IssmDouble  g               = basalelement->FindParam(ConstantsGEnum);
+	IssmDouble  rho_ice         = basalelement->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  rho_water       = basalelement->FindParam(MaterialsRhoFreshwaterEnum);
+	Input* geothermalflux_input = basalelement->GetInput(BasalforcingsGeothermalfluxEnum);_assert_(geothermalflux_input);
+	Input* head_input           = basalelement->GetInput(HydrologyHeadEnum);              _assert_(head_input);
+	Input* gap_input            = basalelement->GetInput(HydrologyGapHeightEnum);         _assert_(gap_input);
+	Input* thickness_input      = basalelement->GetInput(ThicknessEnum);                  _assert_(thickness_input);
+	Input* base_input           = basalelement->GetInput(BaseEnum);                       _assert_(base_input);
+	Input* B_input              = basalelement->GetInput(MaterialsRheologyBEnum);         _assert_(B_input);
+	Input* n_input              = basalelement->GetInput(MaterialsRheologyNEnum);         _assert_(n_input);
+	Input* lr_input             = basalelement->GetInput(HydrologyBumpSpacingEnum);       _assert_(lr_input);
+	Input* br_input             = basalelement->GetInput(HydrologyBumpHeightEnum);        _assert_(br_input);
+
+	/*Get conductivity from inputs*/
+	IssmDouble conductivity = GetConductivity(basalelement);
+
+	/*Build friction basalelement, needed later: */
+	Friction* friction=new Friction(basalelement,2);
+
+	/*Keep track of weights*/
+	IssmDouble totalweights=0.;
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		geothermalflux_input->GetInputValue(&G,gauss);
+		base_input->GetInputValue(&bed,gauss);
+		base_input->GetInputDerivativeValue(&dbed[0],xyz_list,gauss);
+		thickness_input->GetInputValue(&thickness,gauss);
+		gap_input->GetInputValue(&gap,gauss);
+		head_input->GetInputValue(&head,gauss);
+		head_input->GetInputDerivativeValue(&dh[0],xyz_list,gauss);
+		lr_input->GetInputValue(&lr,gauss);
+		br_input->GetInputValue(&br,gauss);
+
+		/*Get ice A parameter*/
+		B_input->GetInputValue(&B,gauss);
+		n_input->GetInputValue(&n,gauss);
+		A=pow(B,-n);
+
+		/*Compute beta term*/
+		if(gap<br)
+		 beta = (br-gap)/lr;
+		else
+		 beta = 0.;
+
+		/*Compute frictional heat flux*/
+		friction->GetAlpha2(&alpha2,gauss);
+		friction->GetBasalSlidingSpeeds(&vx, &vy, gauss);
+		frictionheat=alpha2*(vx*vx+vy*vy);
+
+		/*Get water and ice pressures*/
+		IssmDouble pressure_ice   = rho_ice*g*thickness;    _assert_(pressure_ice>0.); 
+		IssmDouble pressure_water = rho_water*g*(head-bed);
+		if(pressure_water>pressure_ice) pressure_water = pressure_ice;
+
+		/* Compute change in sensible heat due to changes in pressure melting point*/
+		dpressure_water[0] = rho_water*g*(dh[0] - dbed[0]);
+		dpressure_water[1] = rho_water*g*(dh[1] - dbed[1]);
+		dissipation=rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1]);
+
+		meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1]));
+
+		//element->AddBasalInput(DummyEnum,&meltrate,P0Enum);
+		//element->AddBasalInput(EsaEmotionEnum,&frictionheat,P0Enum);
+		//element->AddBasalInput(EsaNmotionEnum,&dissipation,P0Enum);
+		//element->AddBasalInput(EsaUmotionEnum,&PMPheat,P0Enum);
+
+		newgap += gauss->weight*Jdet*(gap+dt*(
+						meltrate/rho_ice
+						-A*pow(fabs(pressure_ice-pressure_water),n-1)*(pressure_ice-pressure_water)*gap
+						+beta*sqrt(vx*vx+vy*vy)
+						));
+
+
+		totalweights +=gauss->weight*Jdet;
+
+		/* Compute basal water flux */
+		q += gauss->weight*Jdet*(conductivity*sqrt(dh[0]*dh[0]+dh[1]*dh[1]));
+
+		/* Compute "degree of channelization" (ratio of melt opening to opening by sliding) */
+		channelization += gauss->weight*Jdet*(meltrate/rho_ice/(meltrate/rho_ice+beta*sqrt(vx*vx+vy*vy)));
+	}
+
+	/*Divide by connectivity*/
+	newgap = newgap/totalweights;
+	IssmDouble mingap = 1e-3;
+	if(newgap<mingap) newgap=mingap;
+
+	/*Limit gap height*/
+	if(newgap>1)
+	 newgap = 1;
+
+	/*Add new gap as an input*/
+	element->AddBasalInput(HydrologyGapHeightEnum,&newgap,P0Enum);
+
+	/*Divide by connectivity, add basal flux as an input*/
+	q = q/totalweights;
+	element->AddBasalInput(HydrologyBasalFluxEnum,&q,P0Enum);
+
+	/* Divide by connectivity, add degree of channelization as an input */
+	channelization = channelization/totalweights;
+	element->AddBasalInput(DegreeOfChannelizationEnum,&channelization,P0Enum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	delete friction;
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+void HydrologyShaktiAnalysis::UpdateEffectivePressure(FemModel* femmodel){/*{{{*/
+
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		UpdateEffectivePressure(element);
+	}
+
+}/*}}}*/
+void HydrologyShaktiAnalysis::UpdateEffectivePressure(Element* element){/*{{{*/
+
+	/*Skip if water or ice shelf element*/
+	if(element->IsAllFloating() || !element->IsIceInElement()) return;
+	if(!element->IsOnBase()) return;
+
+	/*Intermediaries*/
+	IssmDouble bed,thickness,head;
+
+	/* Fetch number of nodes and allocate output*/
+   int numnodes = element->GetNumberOfNodes();
+   IssmDouble* N = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	IssmDouble  g          = element->FindParam(ConstantsGEnum);
+	IssmDouble  rho_ice    = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  rho_water  = element->FindParam(MaterialsRhoFreshwaterEnum);
+	Input* head_input      = element->GetInput(HydrologyHeadEnum); _assert_(head_input);
+	Input* thickness_input = element->GetInput(ThicknessEnum);     _assert_(thickness_input);
+	Input* base_input      = element->GetInput(BaseEnum);          _assert_(base_input);
+
+   Gauss* gauss=element->NewGauss();
+   for (int i=0;i<numnodes;i++){
+      gauss->GaussNode(element->GetElementType(),i);
+
+		base_input->GetInputValue(&bed,gauss);
+		thickness_input->GetInputValue(&thickness,gauss);
+		head_input->GetInputValue(&head,gauss);
+
+		N[i] = rho_ice*g*thickness - rho_water*g*(head-bed);
+	}
+
+	/*Add new gap as an input*/
+	element->AddBasalInput(EffectivePressureEnum,N,element->GetElementType());
+
+	/*Clean up and return*/
+   xDelete<IssmDouble>(N);
+	delete gauss;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyShaktiAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyShaktiAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyShaktiAnalysis.h	(revision 27955)
@@ -0,0 +1,41 @@
+/*! \file HydrologyShaktiAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _HydrologyShaktiAnalysis_
+#define _HydrologyShaktiAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class HydrologyShaktiAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+
+		/*Intermediaries*/
+		IssmDouble GetConductivity(Element* element);
+		void UpdateGapHeight(FemModel* femmodel);
+		void UpdateGapHeight(Element* element);
+		void UpdateEffectivePressure(FemModel* femmodel);
+		void UpdateEffectivePressure(Element* element);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyShreveAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyShreveAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyShreveAnalysis.cpp	(revision 27955)
@@ -0,0 +1,352 @@
+#include "./HydrologyShreveAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void HydrologyShreveAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*retrieve some parameters: */
+	int          hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	if(hydrology_model!=HydrologyshreveEnum) return;
+
+	IoModelToConstraintsx(constraints,iomodel,"md.hydrology.spcwatercolumn",HydrologyShreveAnalysisEnum,P1Enum);
+
+}/*}}}*/
+void HydrologyShreveAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	/*No loads*/
+}/*}}}*/
+void HydrologyShreveAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	/*Fetch parameters: */
+	int  hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want Shreve?*/
+	if(hydrology_model!=HydrologyshreveEnum) return;
+
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,HydrologyShreveAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  HydrologyShreveAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void HydrologyShreveAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Fetch data needed: */
+	int    hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want Shreve?*/
+	if(hydrology_model!=HydrologyshreveEnum) return;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.sealevel",SealevelEnum,0);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.watercolumn",WatercolumnEnum);
+
+	inputs->DuplicateInput(WatercolumnEnum,WaterColumnOldEnum);
+}/*}}}*/
+void HydrologyShreveAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	/*retrieve some parameters: */
+	int    hydrology_model;
+	int    numoutputs;
+	char** requestedoutputs = NULL;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want Shreve?*/
+	if(hydrology_model!=HydrologyshreveEnum) return;
+
+	parameters->AddObject(new IntParam(HydrologyModelEnum,hydrology_model));
+	parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.stabilization",HydrologyshreveStabilizationEnum));
+  /*Requested outputs*/
+  iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.hydrology.requested_outputs");
+  parameters->AddObject(new IntParam(HydrologyNumRequestedOutputsEnum,numoutputs));
+  if(numoutputs)parameters->AddObject(new StringArrayParam(HydrologyRequestedOutputsEnum,requestedoutputs,numoutputs));
+  iomodel->DeleteData(&requestedoutputs,numoutputs,"md.hydrology.requested_outputs");
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           HydrologyShreveAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           HydrologyShreveAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* HydrologyShreveAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+void           HydrologyShreveAnalysis::CreateHydrologyWaterVelocityInput(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble dsdx,dsdy,dbdx,dbdy,w;
+
+	/*Retrieve all inputs and parameters*/
+	IssmDouble  rho_ice   = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  rho_water = element->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble  g         = element->FindParam(ConstantsGEnum);
+	IssmDouble  mu_water  = element->FindParam(MaterialsMuWaterEnum);
+	Input* surfaceslopex_input = element->GetInput(SurfaceSlopeXEnum); _assert_(surfaceslopex_input);
+	Input* surfaceslopey_input = element->GetInput(SurfaceSlopeYEnum); _assert_(surfaceslopey_input);
+	Input* bedslopex_input     = element->GetInput(BedSlopeXEnum);     _assert_(bedslopex_input);
+	Input* bedslopey_input     = element->GetInput(BedSlopeYEnum);     _assert_(bedslopey_input);
+	Input* watercolumn_input   = element->GetInput(WatercolumnEnum);   _assert_(watercolumn_input);
+
+	/*Fetch number of vertices and allocate output*/
+	int numvertices = element->GetNumberOfVertices();
+	IssmDouble* vx  = xNew<IssmDouble>(numvertices);
+	IssmDouble* vy  = xNew<IssmDouble>(numvertices);
+
+	Gauss* gauss=element->NewGauss();
+	for(int iv=0;iv<numvertices;iv++){
+		gauss->GaussVertex(iv);
+		surfaceslopex_input->GetInputValue(&dsdx,gauss);
+		surfaceslopey_input->GetInputValue(&dsdy,gauss);
+		bedslopex_input->GetInputValue(&dbdx,gauss);
+		bedslopey_input->GetInputValue(&dbdy,gauss);
+		watercolumn_input->GetInputValue(&w,gauss);
+
+		/* Water velocity x and y components */
+		vx[iv]= - w*w/(12 * mu_water)*(rho_ice*g*dsdx+(rho_water-rho_ice)*g*dbdx);
+		vy[iv]= - w*w/(12 * mu_water)*(rho_ice*g*dsdy+(rho_water-rho_ice)*g*dbdy);
+	}
+
+	/*clean-up*/
+	delete gauss;
+
+	/*Add to inputs*/
+	element->AddInput(HydrologyWaterVxEnum,vx,P1Enum);
+	element->AddInput(HydrologyWaterVyEnum,vy,P1Enum);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(vy);
+}/*}}}*/
+ElementMatrix* HydrologyShreveAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* HydrologyShreveAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble diffusivity;
+	IssmDouble Jdet,D_scalar,dt,h;
+	IssmDouble vx,vy,vel,dvxdx,dvydy;
+	IssmDouble dvx[2],dvy[2];
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*		dbasis = xNew<IssmDouble>(2*numnodes);
+	IssmDouble     D[2][2]={0.};
+
+	/*Create water velocity vx and vy from current inputs*/
+	CreateHydrologyWaterVelocityInput(element);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&diffusivity,HydrologyshreveStabilizationEnum);
+	Input* vx_input=element->GetInput(HydrologyWaterVxEnum); _assert_(vx_input);
+	Input* vy_input=element->GetInput(HydrologyWaterVyEnum); _assert_(vy_input);
+	h = element->CharacteristicLength();
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+
+		/*Transient term*/
+		D_scalar=gauss->weight*Jdet;
+		for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D_scalar*basis[i]*basis[j];
+
+		/*Advection terms*/
+		dvxdx=dvx[0];
+		dvydy=dvy[1];
+		D_scalar=dt*gauss->weight*Jdet;
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				/*\phi_i \phi_j \nabla\cdot v*/
+				Ke->values[i*numnodes+j] += D_scalar*basis[i]*basis[j]*(dvxdx+dvydy);
+				/*\phi_i v\cdot\nabla\phi_j*/
+				Ke->values[i*numnodes+j] += D_scalar*basis[i]*(vx*dbasis[0*numnodes+j] + vy*dbasis[1*numnodes+j]);
+			}
+		}
+
+		/*Artificial diffusivity*/
+		vel=sqrt(vx*vx+vy*vy);
+		D[0][0]=D_scalar*diffusivity*h/(2*vel)*vx*vx;
+		D[1][0]=D_scalar*diffusivity*h/(2*vel)*vy*vx;
+		D[0][1]=D_scalar*diffusivity*h/(2*vel)*vx*vy;
+		D[1][1]=D_scalar*diffusivity*h/(2*vel)*vy*vy;
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += (
+							dbasis[0*numnodes+i] *(D[0][0]*dbasis[0*numnodes+j] + D[0][1]*dbasis[1*numnodes+j]) +
+							dbasis[1*numnodes+i] *(D[1][0]*dbasis[0*numnodes+j] + D[1][1]*dbasis[1*numnodes+j]) 
+							);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* HydrologyShreveAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Skip if water or ice shelf element*/
+	if(element->IsAllFloating()) return NULL;
+
+	/*Intermediaries */
+	IssmDouble  Jdet,dt;
+	IssmDouble  mb,oldw;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input* mb_input   = element->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(mb_input);
+	Input* oldw_input = element->GetInput(WaterColumnOldEnum);                      _assert_(oldw_input);
+
+	/*Initialize mb_correction to 0, do not forget!:*/
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		mb_input->GetInputValue(&mb,gauss);
+		oldw_input->GetInputValue(&oldw,gauss);
+
+		if(dt!=0.){
+			for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(oldw+dt*mb)*basis[i];
+		}
+		else{
+			for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*mb*basis[i];
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           HydrologyShreveAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,WatercolumnEnum);
+}/*}}}*/
+void           HydrologyShreveAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           HydrologyShreveAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	/*Intermediary*/
+	int* doflist = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Fetch dof list and allocate solution vector*/
+	element->GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* watercolumn = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(int i=0;i<numnodes;i++){
+		watercolumn[i]=solution[doflist[i]];
+		if(xIsNan<IssmDouble>(watercolumn[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(watercolumn[i])) _error_("Inf found in solution vector");
+		if (watercolumn[i]<10e-10) watercolumn[i]=10e-10; //correcting the water column to positive watercolumn
+	}
+
+	/*Add input to the element: */
+	element->AddInput(WatercolumnEnum,watercolumn,element->GetElementType());
+
+	/*Also update the hydrological loads for the sealevel core: */
+	IssmDouble* oldwatercolumn      = xNew<IssmDouble>(numnodes);
+	IssmDouble* deltawatercolumn = xNew<IssmDouble>(numnodes);
+
+	element->GetInputListOnVertices(&watercolumn[0],WatercolumnEnum);
+	element->GetInputListOnVertices(&oldwatercolumn[0],WaterColumnOldEnum);
+	element->GetInputListOnVertices(&deltawatercolumn[0],AccumulatedDeltaTwsEnum);
+	for(int i=0;i<numnodes;i++){
+		deltawatercolumn[i] += watercolumn[i]-oldwatercolumn[i];
+	}
+	element->AddInput(AccumulatedDeltaTwsEnum,deltawatercolumn,P1Enum);
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(oldwatercolumn);
+	xDelete<IssmDouble>(deltawatercolumn);
+	xDelete<IssmDouble>(watercolumn);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           HydrologyShreveAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
+
+/*Needed changes to switch to the Johnson formulation*//*{{{*/
+/*All the changes are to be done in the velocity computation.
+	The new velocity needs some new parameter that should be introduce in the hydrologyshreve class:
+	'p' and 'q' which are the exponent of the Manning formula for laminar (p=2,q=1) or turbulent (p=2/3,q=1/2) flow
+	'R' the hydraulic radius
+	'n' the manning roughness coeficient
+
+	With these, the velocity reads ;
+
+	v= - (1/n)* pow(R,p)*pow((grad phi(rho_water*g)),q)
+
+	you should also redefine the water pressure potential 'phi' with respect to the effective pressure deffinition given in Johson:
+	phi=(rho_ice*g*( surface + ((rho_water/rho_ice)-1)*base - k_n*((thickness* grad(base))/omega) )
+
+	where 
+	'omega' is the fractional area of the base occupied by the water film
+	'k_n' is a parameter
+	This last equation derives from the effective pressure definition developped in Alley 1989
+*/
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyShreveAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyShreveAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyShreveAnalysis.h	(revision 27955)
@@ -0,0 +1,35 @@
+/*! \file HydrologyShreveAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _HydrologyShreveAnalysis_
+#define _HydrologyShreveAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class HydrologyShreveAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		void           CreateHydrologyWaterVelocityInput(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyTwsAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyTwsAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyTwsAnalysis.cpp	(revision 27955)
@@ -0,0 +1,119 @@
+#include "./HydrologyTwsAnalysis.h"
+#include <math.h>
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../classes/Inputs/TransientInput.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void HydrologyTwsAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	/*No constraints*/
+}/*}}}*/
+void HydrologyTwsAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	/*No loads*/
+}/*}}}*/
+void HydrologyTwsAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+	::CreateNodes(nodes,iomodel,HydrologyTwsAnalysisEnum,P1Enum);
+}/*}}}*/
+int  HydrologyTwsAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void HydrologyTwsAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int nature=0;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	/*Plug inputs into element:*/
+	iomodel->FetchDataToInput(inputs,elements,"md.hydrology.spcwatercolumn", HydrologyTwsSpcEnum);
+
+	/*Initialize sea level cumulated sea level loads :*/
+	iomodel->ConstantToInput(inputs,elements,0.,AccumulatedDeltaTwsEnum,P1Enum);
+	iomodel->ConstantToInput(inputs,elements,0.,OldAccumulatedDeltaTwsEnum,P1Enum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.watercolumn",WatercolumnEnum);
+
+}/*}}}*/
+void HydrologyTwsAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	/*retrieve some parameters: */
+	int    hydrology_model;
+	int    numoutputs;
+	char** requestedoutputs = NULL;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+
+	/*Now, do we really want Tws?*/
+	if(hydrology_model!=HydrologyTwsEnum) return;
+	parameters->AddObject(new IntParam(HydrologyModelEnum,hydrology_model));
+
+	/*Requested outputs*/
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.hydrology.requested_outputs");
+	parameters->AddObject(new IntParam(HydrologyNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(HydrologyRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.hydrology.requested_outputs");
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           HydrologyTwsAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           HydrologyTwsAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* HydrologyTwsAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* HydrologyTwsAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* HydrologyTwsAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+ElementVector* HydrologyTwsAnalysis::CreatePVector(Element* element){/*{{{*/
+_error_("not implemented yet");
+}/*}}}*/
+void           HydrologyTwsAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           HydrologyTwsAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           HydrologyTwsAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	/*Only update if on base*/
+	if(!element->IsOnBase()) return;
+
+	/*Fetch dof list and allocate solution vector*/
+	int *doflist = NULL;
+	element->GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+
+	int numnodes = element->GetNumberOfNodes();
+	IssmDouble* watercolumn = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(int i=0;i<numnodes;i++){
+		watercolumn[i]=solution[doflist[i]];
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(watercolumn[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(watercolumn[i])) _error_("Inf found in solution vector");
+	}
+	element->AddBasalInput(WatercolumnEnum,watercolumn,element->GetElementType());
+
+	xDelete<int>(doflist);
+	xDelete<IssmDouble>(watercolumn);
+
+}/*}}}*/
+void           HydrologyTwsAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyTwsAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyTwsAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/HydrologyTwsAnalysis.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file HydrologyTwsAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _HydrologyTwsAnalysis_
+#define _HydrologyTwsAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class HydrologyTwsAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/L2ProjectionBaseAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/L2ProjectionBaseAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/L2ProjectionBaseAnalysis.cpp	(revision 27955)
@@ -0,0 +1,241 @@
+#include "./L2ProjectionBaseAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void L2ProjectionBaseAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*No constraints*/
+}/*}}}*/
+void L2ProjectionBaseAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*No loads*/
+}/*}}}*/
+void L2ProjectionBaseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	if(iomodel->domaintype==Domain3DEnum){
+		iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	}
+	else if(iomodel->domaintype==Domain2DverticalEnum){
+		iomodel->FetchData(1,"md.mesh.vertexonbase");
+	}
+	::CreateNodes(nodes,iomodel,L2ProjectionBaseAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  L2ProjectionBaseAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void L2ProjectionBaseAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum & iomodel->domaintype!=Domain3DsurfaceEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+}/*}}}*/
+void L2ProjectionBaseAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           L2ProjectionBaseAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           L2ProjectionBaseAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* L2ProjectionBaseAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* L2ProjectionBaseAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* L2ProjectionBaseAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries */
+	IssmDouble  D,Jdet;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke    = basalelement->NewElementMatrix();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+		D=gauss->weight*Jdet;
+		for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D*basis[i]*basis[j];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+ElementVector* L2ProjectionBaseAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries */
+	int         input_enum;
+	IssmDouble  Jdet,value,slopes[2];
+	Input     *input     = NULL;
+	Input     *input2    = NULL;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe    = basalelement->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&input_enum,InputToL2ProjectEnum);
+	switch(input_enum){
+		case SurfaceSlopeXEnum: input2 = basalelement->GetInput(SurfaceEnum); _assert_(input2); break;
+		case SurfaceSlopeYEnum: input2 = basalelement->GetInput(SurfaceEnum); _assert_(input2); break;
+		case BedSlopeXEnum:     input2 = basalelement->GetInput(BaseEnum);     _assert_(input2); break;
+		case BedSlopeYEnum:     input2 = basalelement->GetInput(BaseEnum);     _assert_(input2); break;
+		case BaseSlopeXEnum:    input2 = basalelement->GetInput(BaseEnum);    _assert_(input2); break;
+		case BaseSlopeYEnum:    input2 = basalelement->GetInput(BaseEnum);    _assert_(input2); break;
+		case HydrologyGapHeightXEnum:    input2 = basalelement->GetInput(HydrologyGapHeightEnum);  _assert_(input2); break;
+		case HydrologyGapHeightXXEnum:   input2 = basalelement->GetInput(HydrologyGapHeightXEnum); _assert_(input2); break;
+		case HydrologyGapHeightYEnum:    input2 = basalelement->GetInput(HydrologyGapHeightEnum);  _assert_(input2); break;
+		case HydrologyGapHeightYYEnum:   input2 = basalelement->GetInput(HydrologyGapHeightYEnum); _assert_(input2); break;
+		case LevelsetfunctionSlopeXEnum: input2 = basalelement->GetInput(MaskIceLevelsetEnum);     _assert_(input2); break;
+		case LevelsetfunctionSlopeYEnum: input2 = basalelement->GetInput(MaskIceLevelsetEnum);     _assert_(input2); break;
+		default: input = element->GetInput(input_enum);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+
+		if(input2) input2->GetInputDerivativeValue(&slopes[0],xyz_list,gauss);
+		switch(input_enum){
+			case SurfaceSlopeXEnum: case BedSlopeXEnum: case BaseSlopeXEnum: case LevelsetfunctionSlopeXEnum: 
+			case HydrologyGapHeightXEnum: case HydrologyGapHeightXXEnum:
+				value = slopes[0];
+				break;
+			case SurfaceSlopeYEnum: case BedSlopeYEnum: case BaseSlopeYEnum: case LevelsetfunctionSlopeYEnum: 
+			case HydrologyGapHeightYEnum: case HydrologyGapHeightYYEnum:
+				value = slopes[1];
+				break;
+			default:
+				input->GetInputValue(&value,gauss);
+		}
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*value*basis[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return pe;
+}/*}}}*/
+void           L2ProjectionBaseAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           L2ProjectionBaseAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           L2ProjectionBaseAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int inputenum,domaintype,elementtype;
+
+	element->FindParam(&inputenum,InputToL2ProjectEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+	element->FindParam(&elementtype,MeshElementtypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->InputUpdateFromSolutionOneDof(solution,inputenum);
+			break;
+		case Domain2DverticalEnum:
+			element->InputUpdateFromSolutionOneDof(solution,inputenum);
+			break;
+		case Domain3DEnum:
+			if(elementtype==TetraEnum)
+			 element->InputUpdateFromSolutionOneDof(solution,inputenum);
+			else
+			 element->InputUpdateFromSolutionOneDofCollapsed(solution,inputenum);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}/*}}}*/
+void           L2ProjectionBaseAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/L2ProjectionBaseAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/L2ProjectionBaseAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/L2ProjectionBaseAnalysis.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file L2ProjectionBaseAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _L2ProjectionBaseAnalysis_
+#define _L2ProjectionBaseAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class L2ProjectionBaseAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/L2ProjectionEPLAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/L2ProjectionEPLAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/L2ProjectionEPLAnalysis.cpp	(revision 27955)
@@ -0,0 +1,244 @@
+#include "./L2ProjectionEPLAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void L2ProjectionEPLAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*No constraints*/
+}/*}}}*/
+void L2ProjectionEPLAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*No loads*/
+}/*}}}*/
+void L2ProjectionEPLAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+	/*Now, do we really want DC?*/
+	int  hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	/*Do we want an efficient layer*/
+	bool isefficientlayer;
+	iomodel->FindConstant(&isefficientlayer,"md.hydrology.isefficientlayer");
+	if(!isefficientlayer) return;
+
+	if(iomodel->domaintype==Domain3DEnum){
+		iomodel->FetchData(1,"md.mesh.vertexonbase");
+	}
+	else if(iomodel->domaintype==Domain2DverticalEnum){
+		iomodel->FetchData(1,"md.mesh.vertexonbase");
+	}
+	::CreateNodes(nodes,iomodel,L2ProjectionEPLAnalysisEnum,P1Enum);
+	iomodel->DeleteData(1,"md.mesh.vertexonbase");
+}/*}}}*/
+int  L2ProjectionEPLAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void L2ProjectionEPLAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	bool   isefficientlayer;
+	int    hydrology_model;
+
+	/*Now, do we really want DC?*/
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+	if(hydrology_model!=HydrologydcEnum) return;
+
+	/*Do we want an efficient layer*/
+	iomodel->FindConstant(&isefficientlayer,"md.hydrology.isefficientlayer");
+	if(!isefficientlayer) return;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.epl_head",EplHeadSubstepEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+}/*}}}*/
+void L2ProjectionEPLAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           L2ProjectionEPLAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           L2ProjectionEPLAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* L2ProjectionEPLAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* L2ProjectionEPLAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* L2ProjectionEPLAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	bool     active_element;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	basalelement->GetInputValue(&active_element,HydrologydcMaskEplactiveEltEnum);
+
+	/* Check that all nodes are active, else return empty matrix */
+	if(!active_element){
+		if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+		return NULL;
+	}
+
+	/*Intermediaries */
+	IssmDouble  D,Jdet;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke    = basalelement->NewElementMatrix(NoneApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+		D=gauss->weight*Jdet;
+		for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D*basis[j]*basis[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+ElementVector* L2ProjectionEPLAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	bool     active_element;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	basalelement->GetInputValue(&active_element,HydrologydcMaskEplactiveEltEnum);
+
+	/*Check that all nodes are active, else return empty matrix*/
+	if(!active_element) {
+		if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+		return NULL;
+	}
+
+	/*Intermediaries */
+	int         input_enum,index;
+	IssmDouble  Jdet,slopes[2];
+	Input     *input     = NULL;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe    = basalelement->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&input_enum,InputToL2ProjectEnum);
+	switch(input_enum){
+		case EplHeadSlopeXEnum: input = basalelement->GetInput(EplHeadSubstepEnum); index = 0; _assert_(input); break;
+		case EplHeadSlopeYEnum: input = basalelement->GetInput(EplHeadSubstepEnum); index = 1; _assert_(input); break;
+		default: _error_("not implemented");
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+
+		input->GetInputDerivativeValue(&slopes[0],xyz_list,gauss);
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*slopes[index]*basis[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return pe;
+}/*}}}*/
+void           L2ProjectionEPLAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           L2ProjectionEPLAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           L2ProjectionEPLAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	int inputenum,domaintype;
+
+	element->FindParam(&inputenum,InputToL2ProjectEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->InputUpdateFromSolutionOneDof(solution,inputenum);
+			break;
+		case Domain2DverticalEnum:
+			element->InputUpdateFromSolutionOneDof(solution,inputenum);
+			break;
+		case Domain3DEnum:
+			element->InputUpdateFromSolutionOneDofCollapsed(solution,inputenum);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}/*}}}*/
+void           L2ProjectionEPLAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/L2ProjectionEPLAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/L2ProjectionEPLAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/L2ProjectionEPLAnalysis.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file L2ProjectionEPLAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _L2ProjectionEPLAnalysis_
+#define _L2ProjectionEPLAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class L2ProjectionEPLAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/LevelsetAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/LevelsetAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/LevelsetAnalysis.cpp	(revision 27955)
@@ -0,0 +1,999 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./LevelsetAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+#include <math.h>
+
+void LevelsetAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	
+	/*intermediary: */
+	int finiteelement;
+	int         code,vector_layout;
+	IssmDouble *spcdata = NULL;
+	int         M,N;
+
+	/*Get finite element type for this analysis*/
+	iomodel->FindConstant(&finiteelement,"md.levelset.fe");
+
+	/*First of, find the record for the enum, and get code  of data type: */
+	iomodel->SetFilePointerToData(&code, &vector_layout,"md.levelset.spclevelset");
+	if(code!=7)_error_("expecting a IssmDouble vector for constraints md.levelset.spclevelset");
+	if(vector_layout!=1)_error_("expecting a nodal vector for constraints md.levelset.spclevelset");
+
+	/*Fetch vector:*/
+	iomodel->FetchData(&spcdata,&M,&N,"md.levelset.spclevelset");
+
+	/*Call IoModelToConstraintsx*/
+	if(N>1){
+		/*If it is a time series, most likely we are forcing the ice front position and do not want to have a Dynamic Constraint*/
+		_assert_(M==iomodel->numberofvertices+1);
+		IoModelToConstraintsx(constraints,iomodel,spcdata,M,N,LevelsetAnalysisEnum,finiteelement);
+	}
+	else{
+		/*This is not a time series, we probably have calving on, we need the levelset constraints to update as the levelset moves*/
+		_assert_(N==1);
+		_assert_(M==iomodel->numberofvertices);
+		IoModelToDynamicConstraintsx(constraints,iomodel,spcdata,M,N,LevelsetAnalysisEnum,finiteelement);
+	}
+
+	/*Clean up*/
+	xDelete<IssmDouble>(spcdata);
+}
+/*}}}*/
+void LevelsetAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	return;
+}/*}}}*/
+void LevelsetAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+	int finiteelement;
+	iomodel->FindConstant(&finiteelement,"md.levelset.fe");
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,LevelsetAnalysisEnum,finiteelement);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}
+/*}}}*/
+int  LevelsetAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}
+/*}}}*/
+void LevelsetAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Finite element type*/
+	int finiteelement;
+	iomodel->FindConstant(&finiteelement,"md.levelset.fe");
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum);
+
+	/*Get moving front parameters*/
+	bool isstochastic;
+   int  calvinglaw;
+   iomodel->FindConstant(&calvinglaw,"md.calving.law");
+   iomodel->FindConstant(&isstochastic,"md.stochasticforcing.isstochasticforcing");
+   switch(calvinglaw){
+
+		/*"Continuous" calving laws*/
+      case DefaultCalvingEnum:
+         iomodel->FetchDataToInput(inputs,elements,"md.calving.calvingrate",CalvingCalvingrateEnum);
+         if(isstochastic){
+				iomodel->FetchDataToInput(inputs,elements,"md.stochasticforcing.default_id",StochasticForcingDefaultIdEnum);
+            iomodel->FetchDataToInput(inputs,elements,"md.calving.calvingrate",BaselineCalvingCalvingrateEnum);
+         }
+         break;	
+		case CalvingLevermannEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.calving.coeff",CalvinglevermannCoeffEnum);
+			break;
+		case CalvingVonmisesEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.calving.stress_threshold_groundedice",CalvingStressThresholdGroundediceEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.calving.stress_threshold_floatingice",CalvingStressThresholdFloatingiceEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.geometry.bed",BedEnum);
+			break;
+		case CalvingVonmisesADEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.calving.basin_id",CalvingBasinIdEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.geometry.bed",BedEnum);
+			break;
+		case CalvingDev2Enum:
+			iomodel->FetchDataToInput(inputs,elements,"md.calving.stress_threshold_groundedice",CalvingStressThresholdGroundediceEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.calving.stress_threshold_floatingice",CalvingStressThresholdFloatingiceEnum);
+			break;
+		case CalvingTestEnum:
+			break;
+		case CalvingParameterizationEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.geometry.bed",BedEnum);
+			break;
+		case CalvingCalvingMIPEnum:
+			break;
+
+		/*"Discrete" calving laws (need to specify rate as 0 so that we can still solve the level set equation)*/
+		case CalvingMinthicknessEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.geometry.bed",BedEnum);
+			iomodel->ConstantToInput(inputs,elements,0.,CalvingratexEnum,P1Enum);
+			iomodel->ConstantToInput(inputs,elements,0.,CalvingrateyEnum,P1Enum);
+			break;
+		case CalvingHabEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.calving.flotation_fraction",CalvingHabFractionEnum);
+			iomodel->ConstantToInput(inputs,elements,0.,CalvingratexEnum,P1Enum);
+			iomodel->ConstantToInput(inputs,elements,0.,CalvingrateyEnum,P1Enum);
+			break;
+		case CalvingCrevasseDepthEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.calving.water_height",WaterheightEnum);
+			iomodel->ConstantToInput(inputs,elements,0.,CalvingratexEnum,P1Enum);
+			iomodel->ConstantToInput(inputs,elements,0.,CalvingrateyEnum,P1Enum);
+			break;
+		case CalvingPollardEnum:
+			break;
+
+		default:
+			_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+	}
+
+	/*Get frontal melt parameters*/
+	int melt_parameterization;
+	iomodel->FindConstant(&melt_parameterization,"md.frontalforcings.parameterization");
+	switch(melt_parameterization){
+		case FrontalForcingsDefaultEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.frontalforcings.meltingrate",CalvingMeltingrateEnum);
+			if ((calvinglaw == CalvingParameterizationEnum) || (calvinglaw == CalvingCalvingMIPEnum)) {
+				iomodel->FetchDataToInput(inputs,elements,"md.frontalforcings.ablationrate",CalvingAblationrateEnum);
+			}
+			break;
+		case FrontalForcingsRignotEnum:
+         /*Retrieve thermal forcing only in the case of non-arma FrontalForcingsRignot*/
+         iomodel->FetchDataToInput(inputs,elements,"md.frontalforcings.thermalforcing",ThermalForcingEnum);
+         iomodel->FetchDataToInput(inputs,elements,"md.frontalforcings.basin_id",FrontalForcingsBasinIdEnum);
+         iomodel->FetchDataToInput(inputs,elements,"md.frontalforcings.subglacial_discharge",FrontalForcingsSubglacialDischargeEnum);
+			break;
+		case FrontalForcingsRignotarmaEnum:
+			bool isdischargearma;
+			iomodel->FindConstant(&isdischargearma,"md.frontalforcings.isdischargearma");
+         iomodel->FetchDataToInput(inputs,elements,"md.frontalforcings.basin_id",FrontalForcingsBasinIdEnum);
+         if(isdischargearma==false) iomodel->FetchDataToInput(inputs,elements,"md.frontalforcings.subglacial_discharge",FrontalForcingsSubglacialDischargeEnum);
+			break;	
+		default:
+			_error_("Frontal forcings"<<EnumToStringx(melt_parameterization)<<" not supported yet");
+	}
+}
+/*}}}*/
+void LevelsetAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	parameters->AddObject(iomodel->CopyConstantObject("md.levelset.stabilization",LevelsetStabilizationEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.levelset.reinit_frequency",LevelsetReinitFrequencyEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.levelset.kill_icebergs",LevelsetKillIcebergsEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.levelset.migration_max",MigrationMaxEnum));
+
+	int  calvinglaw;
+   IssmDouble *transparam = NULL;
+   IssmDouble  yts;
+   int         N,M;
+   bool        interp,cycle;
+
+	iomodel->FindConstant(&calvinglaw,"md.calving.law");
+	switch(calvinglaw){
+		case DefaultCalvingEnum:
+		case CalvingLevermannEnum:
+			break;
+		case CalvingVonmisesEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.min_thickness",CalvingMinthicknessEnum));
+			break;
+		case CalvingVonmisesADEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.min_thickness",CalvingMinthicknessEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.num_basins",CalvingNumberofBasinsEnum));
+
+			iomodel->FetchData(&transparam,&M,&N,"md.calving.stress_threshold_groundedice");
+         _assert_(M>=1 && N>=1);
+         parameters->AddObject(new DoubleVecParam(CalvingADStressThresholdGroundediceEnum,transparam,M));
+         xDelete<IssmDouble>(transparam);
+
+         iomodel->FetchData(&transparam,&M,&N,"md.calving.stress_threshold_floatingice");
+         _assert_(M>=1 && N>=1);
+         parameters->AddObject(new DoubleVecParam(CalvingADStressThresholdFloatingiceEnum,transparam,M));
+         xDelete<IssmDouble>(transparam);
+         
+			break;
+		case CalvingMinthicknessEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.min_thickness",CalvingMinthicknessEnum));
+			break;
+		case CalvingHabEnum:
+			break;
+		case CalvingCrevasseDepthEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.crevasse_opening_stress",CalvingCrevasseDepthEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.crevasse_threshold",CalvingCrevasseThresholdEnum));
+			break;
+		case CalvingDev2Enum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.height_above_floatation",CalvingHeightAboveFloatationEnum));
+			break;
+		case CalvingTestEnum:
+			iomodel->FindConstant(&interp,"md.timestepping.interp_forcing");
+			iomodel->FindConstant(&cycle,"md.timestepping.cycle_forcing");
+			iomodel->FetchData(&transparam,&N,&M,"md.calving.speedfactor");
+			if(N==1){
+				_assert_(M==1);
+				parameters->AddObject(new DoubleParam(CalvingTestSpeedfactorEnum,transparam[0]));
+         }
+         else{
+            _assert_(N==2);
+            parameters->AddObject(new TransientParam(CalvingTestSpeedfactorEnum,&transparam[0],&transparam[M],interp,cycle,M));
+         }
+			xDelete<IssmDouble>(transparam);
+			iomodel->FetchData(&transparam,&N,&M,"md.calving.independentrate");
+			if(N==1){
+				_assert_(M==1);
+				parameters->AddObject(new DoubleParam(CalvingTestIndependentRateEnum,transparam[0]));
+         }
+         else{
+            _assert_(N==2);
+            parameters->AddObject(new TransientParam(CalvingTestIndependentRateEnum,&transparam[0],&transparam[M],interp,cycle,M));
+         }
+			xDelete<IssmDouble>(transparam);
+			break;
+		case CalvingParameterizationEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.use_param",CalvingUseParamEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.min_thickness",CalvingMinthicknessEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.theta",CalvingThetaEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.alpha",CalvingAlphaEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.xoffset",CalvingXoffsetEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.yoffset",CalvingYoffsetEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.vel_lowerbound",CalvingVelLowerboundEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.vel_threshold",CalvingVelThresholdEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.vel_upperbound",CalvingVelUpperboundEnum));
+			break;
+		case CalvingPollardEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.rc",CalvingRcEnum));
+			break;
+		case CalvingCalvingMIPEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.experiment",CalvingUseParamEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.calving.min_thickness",CalvingMinthicknessEnum));
+			break;
+		default:
+			_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+	}
+
+	/*Get frontal melt parameters*/
+	int melt_parameterization;
+	iomodel->FindConstant(&melt_parameterization,"md.frontalforcings.parameterization");
+	switch(melt_parameterization){
+		case FrontalForcingsDefaultEnum:
+			break;
+		case FrontalForcingsRignotarmaEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.num_basins",FrontalForcingsNumberofBasinsEnum));
+			/*Retrieve thermal forcing parameters*/
+			parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.num_params",FrontalForcingsNumberofParamsEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.num_breaks",FrontalForcingsNumberofBreaksEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.monthlyvals_numbreaks",FrontalForcingsNumberofMonthBreaksEnum));
+         parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.ar_order",FrontalForcingsARMAarOrderEnum));
+         parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.ma_order",FrontalForcingsARMAmaOrderEnum));
+         parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.arma_timestep",FrontalForcingsARMATimestepEnum));
+         iomodel->FetchData(&transparam,&M,&N,"md.frontalforcings.polynomialparams");
+         parameters->AddObject(new DoubleMatParam(FrontalForcingsARMApolyparamsEnum,transparam,M,N));
+         xDelete<IssmDouble>(transparam);
+         iomodel->FetchData(&transparam,&M,&N,"md.frontalforcings.datebreaks");
+         parameters->AddObject(new DoubleMatParam(FrontalForcingsARMAdatebreaksEnum,transparam,M,N));
+         xDelete<IssmDouble>(transparam);
+         iomodel->FetchData(&transparam,&M,&N,"md.frontalforcings.arlag_coefs");
+         parameters->AddObject(new DoubleMatParam(FrontalForcingsARMAarlagcoefsEnum,transparam,M,N));
+         xDelete<IssmDouble>(transparam);
+         iomodel->FetchData(&transparam,&M,&N,"md.frontalforcings.malag_coefs");
+         parameters->AddObject(new DoubleMatParam(FrontalForcingsARMAmalagcoefsEnum,transparam,M,N));
+         xDelete<IssmDouble>(transparam);
+			iomodel->FetchData(&transparam,&M,&N,"md.frontalforcings.monthlyvals_datebreaks");
+         parameters->AddObject(new DoubleMatParam(FrontalForcingsARMAmonthdatebreaksEnum,transparam,M,N));
+         xDelete<IssmDouble>(transparam);
+			iomodel->FetchData(&transparam,&M,&N,"md.frontalforcings.monthlyvals_intercepts");
+         parameters->AddObject(new DoubleMatParam(FrontalForcingsARMAmonthinterceptsEnum,transparam,M,N));
+         xDelete<IssmDouble>(transparam);
+			iomodel->FetchData(&transparam,&M,&N,"md.frontalforcings.monthlyvals_trends");
+         parameters->AddObject(new DoubleMatParam(FrontalForcingsARMAmonthtrendsEnum,transparam,M,N));
+         xDelete<IssmDouble>(transparam);
+			parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.isdischargearma",FrontalForcingsIsDischargeARMAEnum));
+			/*Retrieve subglacial discharge parameters */
+			bool isdischargearma;
+			parameters->FindParam(&isdischargearma,FrontalForcingsIsDischargeARMAEnum);
+			if(isdischargearma==true){
+				parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.sd_num_params",FrontalForcingsSdNumberofParamsEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.sd_num_breaks",FrontalForcingsSdNumberofBreaksEnum));
+      	   parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.sd_ar_order",FrontalForcingsSdarOrderEnum));
+      	   parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.sd_ma_order",FrontalForcingsSdmaOrderEnum));
+      	   parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.sd_arma_timestep",FrontalForcingsSdARMATimestepEnum));
+      	   iomodel->FetchData(&transparam,&M,&N,"md.frontalforcings.sd_polynomialparams");
+      	   parameters->AddObject(new DoubleMatParam(FrontalForcingsSdpolyparamsEnum,transparam,M,N));
+      	   xDelete<IssmDouble>(transparam);
+      	   iomodel->FetchData(&transparam,&M,&N,"md.frontalforcings.sd_datebreaks");
+      	   parameters->AddObject(new DoubleMatParam(FrontalForcingsSddatebreaksEnum,transparam,M,N));
+      	   xDelete<IssmDouble>(transparam);
+      	   iomodel->FetchData(&transparam,&M,&N,"md.frontalforcings.sd_arlag_coefs");
+      	   parameters->AddObject(new DoubleMatParam(FrontalForcingsSdarlagcoefsEnum,transparam,M,N));
+      	   xDelete<IssmDouble>(transparam);
+      	   iomodel->FetchData(&transparam,&M,&N,"md.frontalforcings.sd_malag_coefs");
+      	   parameters->AddObject(new DoubleMatParam(FrontalForcingsSdmalagcoefsEnum,transparam,M,N));
+      	   xDelete<IssmDouble>(transparam);
+				iomodel->FetchData(&transparam,&M,&N,"md.frontalforcings.sd_monthlyfrac");
+      	   parameters->AddObject(new DoubleMatParam(FrontalForcingsSdMonthlyFracEnum,transparam,M,N));
+      	   xDelete<IssmDouble>(transparam);
+			}
+			break;
+		case FrontalForcingsRignotEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.num_basins",FrontalForcingsNumberofBasinsEnum));
+			break;
+		default:
+			_error_("Frontal forcings "<<EnumToStringx(melt_parameterization)<<" not supported yet");
+	}
+}
+/*}}}*/
+
+/*Finite element Analysis*/
+void           LevelsetAnalysis::Core(FemModel* femmodel){/*{{{*/
+
+	/*parameters: */
+	int  stabilization;
+	femmodel->parameters->FindParam(&stabilization,LevelsetStabilizationEnum);
+
+	/*activate formulation: */
+	femmodel->SetCurrentConfiguration(LevelsetAnalysisEnum);
+
+	if(VerboseSolution()) _printf0_("   call computational core:\n");
+	if(stabilization==4){
+		solutionsequence_fct(femmodel);
+	}
+	else{
+		solutionsequence_linear(femmodel);
+	}
+}/*}}}*/
+void           LevelsetAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* LevelsetAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* LevelsetAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+	/* Jacobian required for the Newton solver */
+	_error_("not implemented yet");
+}/*}}}*/
+ElementMatrix* LevelsetAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	if(!element->IsOnBase()) return NULL;
+	Element* basalelement = element->SpawnBasalElement();
+
+	/*Intermediaries */
+	int  stabilization,dim,domaintype;
+	int i,j,k,row, col;
+	IssmDouble kappa;
+	IssmDouble Jdet, dt, D_scalar;
+	IssmDouble h,hx,hy,hz;
+	IssmDouble vel,w[3];
+	IssmDouble migrationmax;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get problem dimension and whether there is moving front or not*/
+	basalelement->FindParam(&domaintype,DomainTypeEnum);
+	basalelement->FindParam(&stabilization,LevelsetStabilizationEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1; break;
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 2; break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes    = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke       = basalelement->NewElementMatrix();
+	IssmDouble*    basis    = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis   = xNew<IssmDouble>(2*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	basalelement->FindParam(&migrationmax,MigrationMaxEnum);
+
+	h = basalelement->CharacteristicLength();
+
+	Input* mf_vx_input        = NULL;
+	Input* mf_vy_input        = NULL;
+
+	/*Load velocities*/
+	switch(domaintype){
+		case Domain2DverticalEnum:
+			mf_vx_input=basalelement->GetInput(MovingFrontalVxEnum); _assert_(mf_vx_input);
+			break;
+		case Domain2DhorizontalEnum:
+			mf_vx_input=basalelement->GetInput(MovingFrontalVxEnum); _assert_(mf_vx_input);
+			mf_vy_input=basalelement->GetInput(MovingFrontalVyEnum); _assert_(mf_vy_input);
+			break;
+		case Domain3DEnum:
+			mf_vx_input=basalelement->GetInput(MovingFrontalVxEnum); _assert_(mf_vx_input);
+			mf_vy_input=basalelement->GetInput(MovingFrontalVyEnum); _assert_(mf_vy_input);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+		basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+		D_scalar=gauss->weight*Jdet;
+
+		/* Transient */
+		if(dt!=0.){
+			for(i=0;i<numnodes;i++){
+				for(j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += D_scalar*basis[j]*basis[i];
+				}
+			}
+			D_scalar=D_scalar*dt;
+		}
+
+		/* Levelset speed */
+		mf_vx_input->GetInputValue(&w[0], gauss);
+		mf_vy_input->GetInputValue(&w[1], gauss);
+
+		/* Apply limiter to the migration rate */		
+		vel = 0.;
+		for(i=0;i<dim;i++) vel += w[i]*w[i];
+		vel = sqrt(vel)+1e-14;
+		/* !!NOTE: This is different from the previous version 25838 (and before). The current threshold restrict both advance and retreat velocity. */
+		if (vel > migrationmax) {
+			for(i=0;i<dim;i++) w[i] = w[i]/vel*migrationmax;
+		}
+
+		/*Compute D*/
+		for(i=0;i<numnodes;i++){
+			for(j=0;j<numnodes;j++){
+				for(k=0;k<dim;k++){
+					Ke->values[i*numnodes+j] += D_scalar*w[k]*dbasis[k*numnodes+j]*basis[i];
+				}
+			}
+		}
+
+		/* Stabilization */
+		vel=0.;
+		for(i=0;i<dim;i++) vel+=w[i]*w[i];
+		vel=sqrt(vel)+1.e-14;
+		switch(stabilization){
+			case 0:
+				/*Nothing to be done*/
+				break;
+			case 1:
+				/* Artificial Diffusion */
+				basalelement->ElementSizes(&hx,&hy,&hz);
+				h=sqrt( pow(hx*w[0]/vel,2) + pow(hy*w[1]/vel,2) );
+				kappa=h*vel/2.;
+				for(i=0;i<numnodes;i++){
+					for(j=0;j<numnodes;j++){
+						for(k=0;k<dim;k++){
+							Ke->values[i*numnodes+j] += D_scalar*kappa*dbasis[k*numnodes+j]*dbasis[k*numnodes+i];
+						}
+					}
+				}
+				break;
+			case 2:
+				  {
+					/* Streamline Upwinding */
+					mf_vx_input->GetInputAverage(&w[0]);
+					mf_vy_input->GetInputAverage(&w[1]);
+					vel=sqrt(w[0]*w[0]+w[1]*w[1])+1.e-8;
+					IssmDouble tau=h/(2*vel);
+					for(int i=0;i<numnodes;i++){
+						for(int j=0;j<numnodes;j++){
+							Ke->values[i*numnodes+j]+=dt*gauss->weight*Jdet*tau*(
+										w[0]*dbasis[0*numnodes+i]+w[1]*dbasis[1*numnodes+i])*(w[0]*dbasis[0*numnodes+j]+w[1]*dbasis[1*numnodes+j]);
+						}
+					}
+				  }
+				break;
+			case 5:{
+				/*SUPG*/
+				IssmDouble vx,vy;
+				mf_vx_input->GetInputAverage(&vx);
+				mf_vy_input->GetInputAverage(&vy);
+				vel=sqrt(vx*vx+vy*vy)+1.e-8;
+				IssmPDouble xi=1.;
+				IssmDouble  tau=xi*h/(2*vel);
+
+				/*Mass matrix - part 2*/
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=gauss->weight*Jdet*tau*basis[j]*(vx*dbasis[0*numnodes+i]+vy*dbasis[1*numnodes+i]);
+					}
+				}
+
+				/*Advection matrix - part 2, A*/
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=dt*gauss->weight*Jdet*tau*(vx*dbasis[0*numnodes+j]+vy*dbasis[1*numnodes+j])*(vx*dbasis[0*numnodes+i]+vy*dbasis[1*numnodes+i]);
+					}
+				}
+
+				break;
+			}
+			case 6:{
+				/*SUPG*/
+				IssmDouble vx,vy;
+				mf_vx_input->GetInputAverage(&vx);
+				mf_vy_input->GetInputAverage(&vy);
+				vel=sqrt(vx*vx+vy*vy)+1.e-8;
+				IssmDouble ECN, K;
+				ECN = vel *dt /h;
+				K = 1./tanh(ECN) - 1./ECN;
+//				if (ECN<1e-6) K = ECN /3.0;
+
+				/*According to Hilmar, xi=K is too large*/
+				IssmDouble xi=0.1*K;
+
+				IssmDouble  tau=xi*h/(2*vel);
+				Input* levelset_input = NULL;
+
+
+				IssmDouble kappa;
+				IssmDouble p=4, q=4;
+				IssmDouble phi[3];
+
+			   levelset_input=basalelement->GetInput(MaskIceLevelsetEnum); _assert_(levelset_input);
+				levelset_input->GetInputValue(&phi[0], gauss);
+
+				IssmDouble dphidx=0., dphidy=0.;
+				IssmDouble nphi;
+
+				for(int i=0;i<numnodes;i++){
+					dphidx += phi[i]*dbasis[0*numnodes+i];
+					dphidy += phi[i]*dbasis[1*numnodes+i];
+				}
+				nphi = sqrt(dphidx*dphidx+dphidy*dphidy);
+			
+				if (nphi >= 1) {
+					kappa = 1 - 1.0/nphi;
+				}
+				else {
+					kappa = 0.5/M_PI *sin(2*M_PI*nphi)/nphi;
+				}
+
+				kappa = kappa * vel / h;
+
+				/*Mass matrix - part 2*/
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=gauss->weight*Jdet*tau*basis[j]*(vx*dbasis[0*numnodes+i]+vy*dbasis[1*numnodes+i]);
+					}
+				}
+
+				/*Advection matrix - part 2, A*/
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=dt*gauss->weight*Jdet*tau*(vx*dbasis[0*numnodes+j]+vy*dbasis[1*numnodes+j])*(vx*dbasis[0*numnodes+i]+vy*dbasis[1*numnodes+i]);
+					}
+				}
+				/*Add the pertubation term \nabla\cdot(\kappa*\nabla\phi)*/
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						for(int k=0;k<dim;k++){
+								Ke->values[i*numnodes+j]+= dt*gauss->weight*Jdet*kappa*dbasis[k*numnodes+j]*dbasis[k*numnodes+i];
+						}
+					}
+				}
+
+				break;
+			}
+			default:
+				_error_("unknown type of stabilization in LevelsetAnalysis.cpp");
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+ElementVector* LevelsetAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	if(!element->IsOnBase()) return NULL;
+	Element* basalelement = element->SpawnBasalElement();
+
+	/*Intermediaries */
+	int         domaintype,stabilization;
+	IssmDouble  Jdet,dt;
+	IssmDouble  lsf;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+	basalelement->FindParam(&stabilization,LevelsetStabilizationEnum);
+
+	/*Initialize Element vector*/
+	ElementVector* pe = basalelement->NewElementVector();
+	basalelement->FindParam(&dt,TimesteppingTimeStepEnum); _assert_(dt>0.);
+
+	/*Initialize basis vector*/
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = NULL;
+	if((stabilization==5) |(stabilization == 6)) dbasis= xNew<IssmDouble>(2*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	Input* levelset_input = basalelement->GetInput(MaskIceLevelsetEnum); _assert_(levelset_input);
+	Input* mf_vx_input    = basalelement->GetInput(MovingFrontalVxEnum); _assert_(mf_vx_input);
+	Input* mf_vy_input    = basalelement->GetInput(MovingFrontalVyEnum); _assert_(mf_vy_input);
+
+	IssmDouble h=basalelement->CharacteristicLength();
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+
+		/* old function value */
+		levelset_input->GetInputValue(&lsf,gauss);
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*lsf*basis[i];
+
+		if(stabilization==5){ /*SUPG*/
+			IssmDouble vx,vy,vel;
+			basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+			mf_vx_input->GetInputAverage(&vx);
+			mf_vy_input->GetInputAverage(&vy);
+			vel=sqrt(vx*vx+vy*vy)+1.e-8;
+			IssmPDouble xi=1.;
+			IssmDouble  tau=xi*h/(2*vel);
+
+			/*Force vector - part 2*/
+			for(int i=0;i<numnodes;i++){
+				pe->values[i]+=Jdet*gauss->weight*lsf*(tau*vx*dbasis[0*numnodes+i]+tau*vy*dbasis[1*numnodes+i]);
+			}
+		}
+		else if (stabilization ==6) {
+			IssmDouble vx,vy,vel;
+			basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+			mf_vx_input->GetInputAverage(&vx);
+			mf_vy_input->GetInputAverage(&vy);
+			vel=sqrt(vx*vx+vy*vy)+1.e-8;
+
+			IssmDouble ECN, K;
+			ECN = vel *dt /h;
+			K = 1./tanh(ECN) - 1./ECN;
+	//		if (ECN<1e-6) K = ECN /3.0;
+
+			/*According to Hilmar, xi=K is too large*/
+			IssmDouble xi=0.1*K;
+
+			IssmDouble  tau=xi*h/(2*vel);
+
+			/*Force vector - part 2*/
+			for(int i=0;i<numnodes;i++){
+				pe->values[i]+=Jdet*gauss->weight*lsf*tau*(vx*dbasis[0*numnodes+i]+vy*dbasis[1*numnodes+i]);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	basalelement->FindParam(&domaintype,DomainTypeEnum);
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	delete gauss;
+
+	return pe;
+}/*}}}*/
+IssmDouble     LevelsetAnalysis::GetDistanceToStraight(IssmDouble* q, IssmDouble* s0, IssmDouble* s1){/*{{{*/
+	// returns distance d of point q to straight going through points s0, s1
+	// d=|a x b|/|b|
+	// with a=q-s0, b=s1-s0
+
+	/* Intermediaries */
+	const int dim=2;
+	int i;
+	IssmDouble a[dim], b[dim];
+	IssmDouble norm_b;
+
+	for(i=0;i<dim;i++){
+		a[i]=q[i]-s0[i];
+		b[i]=s1[i]-s0[i];
+	}
+
+	norm_b=0.;
+	for(i=0;i<dim;i++)
+	 norm_b+=b[i]*b[i];
+	norm_b=sqrt(norm_b);
+	_assert_(norm_b>0.);
+
+	return fabs(a[0]*b[1]-a[1]*b[0])/norm_b;
+}/*}}}*/
+void           LevelsetAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,MaskIceLevelsetEnum);
+}/*}}}*/
+void           LevelsetAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           LevelsetAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->InputUpdateFromSolutionOneDof(solution,MaskIceLevelsetEnum);
+			break;
+		case Domain3DEnum:
+			element->InputUpdateFromSolutionOneDofCollapsed(solution,MaskIceLevelsetEnum);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}/*}}}*/
+void           LevelsetAnalysis::PostProcess(FemModel* femmodel){/*{{{*/
+
+	/*This function is only used by "discrete calving laws" for which we change
+	 * the value of the levelset after the advection step (level set equation
+	 * solve) based on the law*/
+
+	/*Intermediaries*/
+	int  calvinglaw;
+	IssmDouble newlevelset[6];
+	femmodel->parameters->FindParam(&calvinglaw,CalvingLawEnum);
+
+	/*Apply minimum thickness criterion*/
+	if(calvinglaw==CalvingMinthicknessEnum || calvinglaw==CalvingVonmisesEnum || calvinglaw==CalvingParameterizationEnum || calvinglaw==CalvingVonmisesADEnum || calvinglaw==CalvingCalvingMIPEnum){
+
+		IssmDouble mig_max = femmodel->parameters->FindParam(MigrationMaxEnum);
+		IssmDouble dt      = femmodel->parameters->FindParam(TimesteppingTimeStepEnum);
+
+		/*Get current distance to terminus*/
+		InputDuplicatex(femmodel,MaskIceLevelsetEnum,DistanceToCalvingfrontEnum);
+		femmodel->DistanceToFieldValue(MaskIceLevelsetEnum,0,DistanceToCalvingfrontEnum);
+
+		/*Intermediaries*/
+		IssmDouble thickness,bed,sealevel,distance,levelset;
+		IssmDouble min_thickness = femmodel->parameters->FindParam(CalvingMinthicknessEnum);
+
+		/*Loop over all elements of this partition*/
+		for(Object* & object : femmodel->elements->objects){
+			Element* element  = xDynamicCast<Element*>(object);
+
+			/*no need to postprocess an ice free element*/
+			if(!element->IsIceInElement()) continue;
+
+			int      numnodes     = element->GetNumberOfNodes(); _assert_(numnodes<7);
+			Gauss*   gauss        = element->NewGauss();
+			Input *H_input        = element->GetInput(ThicknessEnum);              _assert_(H_input);
+			Input *b_input        = element->GetInput(BedEnum);                    _assert_(b_input);
+			Input *sl_input       = element->GetInput(SealevelEnum);               _assert_(sl_input);
+			Input *dis_input      = element->GetInput(DistanceToCalvingfrontEnum); _assert_(dis_input);
+			Input *levelset_input = element->GetInput(MaskIceLevelsetEnum);        _assert_(levelset_input);
+
+			/*Potentially constrain nodes of this element*/
+			for(int in=0;in<numnodes;in++){
+				gauss->GaussNode(element->GetElementType(),in);
+
+				levelset_input->GetInputValue(&levelset,gauss);
+				H_input->GetInputValue(&thickness,gauss);
+				b_input->GetInputValue(&bed,gauss);
+				sl_input->GetInputValue(&sealevel,gauss);
+				dis_input->GetInputValue(&distance,gauss);
+
+				if(thickness<min_thickness && bed<sealevel && fabs(distance)<mig_max*dt && levelset<0){
+					newlevelset[in] = +400.; //Arbitrary > 0 number (i.e. deactivate this node)
+				}
+				else{
+					newlevelset[in] = levelset;
+				}
+			}
+			element->AddInput(MaskIceLevelsetEnum,&newlevelset[0],element->GetElementType());
+			delete gauss;
+		}
+	}
+}/*}}}*/
+void           LevelsetAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+
+	/*Intermediaries*/
+	int  calvinglaw;
+	femmodel->parameters->FindParam(&calvinglaw,CalvingLawEnum);
+	IssmDouble mig_max = femmodel->parameters->FindParam(MigrationMaxEnum);
+	IssmDouble dt      = femmodel->parameters->FindParam(TimesteppingTimeStepEnum);
+
+   /*Get current distance to terminus*/
+   InputDuplicatex(femmodel,MaskIceLevelsetEnum,DistanceToCalvingfrontEnum);
+   femmodel->DistanceToFieldValue(MaskIceLevelsetEnum,0,DistanceToCalvingfrontEnum);
+
+   if(calvinglaw==CalvingHabEnum){
+
+		/*Intermediaries*/
+		IssmDouble  thickness,water_depth,distance,hab_fraction;
+
+		/*Loop over all elements of this partition*/
+		for(Object* & object : femmodel->elements->objects){
+			Element* element  = xDynamicCast<Element*>(object);
+
+			IssmDouble rho_ice   = element->FindParam(MaterialsRhoIceEnum);
+			IssmDouble rho_water = element->FindParam(MaterialsRhoSeawaterEnum);
+
+			int      numnodes           = element->GetNumberOfNodes();
+			Gauss*   gauss              = element->NewGauss();
+			Input*   H_input            = element->GetInput(ThicknessEnum); _assert_(H_input);
+			Input*   bed_input          = element->GetInput(BedEnum); _assert_(bed_input);
+			Input*   hab_fraction_input = element->GetInput(CalvingHabFractionEnum); _assert_(hab_fraction_input);
+			Input*   dis_input           = element->GetInput(DistanceToCalvingfrontEnum); _assert_(dis_input);
+
+			/*Potentially constrain nodes of this element*/
+			for(int in=0;in<numnodes;in++){
+				gauss->GaussNode(element->GetElementType(),in);
+				Node* node=element->GetNode(in);
+				if(!node->IsActive()) continue;
+
+				H_input->GetInputValue(&thickness,gauss);
+				bed_input->GetInputValue(&water_depth,gauss);
+				dis_input->GetInputValue(&distance,gauss);
+				hab_fraction_input->GetInputValue(&hab_fraction,gauss);
+
+				if(thickness<((rho_water/rho_ice)*(1+hab_fraction)*-water_depth) && fabs(distance)<mig_max*dt){
+					node->ApplyConstraint(0,+1.);
+				}
+				else {
+					/* no ice, set no spc */
+					node->DofInFSet(0);
+				}
+			}
+			delete gauss;
+		}
+	}
+   else if(calvinglaw==CalvingCrevasseDepthEnum){
+
+		/*Intermediaries*/
+		IssmDouble  levelset,crevassedepth,bed,surface_crevasse,thickness,surface;
+		IssmDouble* constraint_nodes = NULL;
+
+		/*Get the DistanceToCalvingfront*/
+		InputDuplicatex(femmodel,MaskIceLevelsetEnum,DistanceToCalvingfrontEnum);
+		femmodel->DistanceToFieldValue(MaskIceLevelsetEnum,0,DistanceToCalvingfrontEnum);
+
+		/*Vector of size number of nodes*/
+      int numnodes      = femmodel->nodes->NumberOfNodes();
+      int localmasters  = femmodel->nodes->NumberOfNodesLocal();
+      Vector<IssmDouble>* vec_constraint_nodes = vec_constraint_nodes=new Vector<IssmDouble>(localmasters,numnodes);
+
+		IssmDouble crevasse_threshold = femmodel->parameters->FindParam(CalvingCrevasseThresholdEnum);
+
+
+		for(Object* & object : femmodel->elements->objects){
+			Element* element   = xDynamicCast<Element*>(object);
+			int      numnodes  = element->GetNumberOfNodes();
+			Gauss*   gauss     = element->NewGauss();
+
+			Input*   crevassedepth_input    = element->GetInput(CrevasseDepthEnum); _assert_(crevassedepth_input);
+			Input*   bed_input              = element->GetInput(BedEnum); _assert_(bed_input);
+			Input*   surface_crevasse_input = element->GetInput(SurfaceCrevasseEnum); _assert_(surface_crevasse_input);
+			Input*   thickness_input        = element->GetInput(ThicknessEnum); _assert_(thickness_input);
+			Input*   surface_input          = element->GetInput(SurfaceEnum); _assert_(surface_input);
+
+			/*First, look at ice front and figure out if any of the nodes will be calved*/
+			if(element->IsIcefront()){
+				for(int in=0;in<numnodes;in++){
+					gauss->GaussNode(element->GetElementType(),in);
+					Node* node=element->GetNode(in);
+					if(!node->IsActive()) continue;
+
+					crevassedepth_input->GetInputValue(&crevassedepth,gauss);
+					bed_input->GetInputValue(&bed,gauss);
+					surface_crevasse_input->GetInputValue(&surface_crevasse,gauss);
+					thickness_input->GetInputValue(&thickness,gauss);
+					surface_input->GetInputValue(&surface,gauss);
+
+					if((surface_crevasse>surface || crevassedepth>crevasse_threshold*thickness) && bed<0.){
+						vec_constraint_nodes->SetValue(node->Pid(),1.0,INS_VAL);
+					}
+				}
+			}
+			delete gauss;
+		}
+
+		/*Assemble vector and serialize: */
+		vec_constraint_nodes->Assemble();
+      femmodel->GetLocalVectorWithClonesNodes(&constraint_nodes,vec_constraint_nodes);
+
+		int nflipped=1;
+		while(nflipped){
+			int local_nflipped=0;
+			for(Object* & object : femmodel->elements->objects){
+				Element* element  = xDynamicCast<Element*>(object);
+				int      numnodes = element->GetNumberOfNodes();
+
+				Input *levelset_input         = element->GetInput(DistanceToCalvingfrontEnum); _assert_(levelset_input);
+				Input *crevassedepth_input    = element->GetInput(CrevasseDepthEnum);          _assert_(crevassedepth_input);
+				Input *bed_input              = element->GetInput(BedEnum);                    _assert_(bed_input);
+				Input *surface_crevasse_input = element->GetInput(SurfaceCrevasseEnum);        _assert_(surface_crevasse_input);
+				Input *thickness_input        = element->GetInput(ThicknessEnum);              _assert_(thickness_input);
+				Input *surface_input          = element->GetInput(SurfaceEnum);                _assert_(surface_input);
+
+				/*Is this element connected to a node that should be calved*/
+				bool isconnected = false;
+				for(int in=0;in<numnodes;in++){
+					Node* node=element->GetNode(in);
+					if(constraint_nodes[node->Lid()]>0.){
+						isconnected = true;
+						break;
+					}
+				}
+
+				/*Check status if connected*/
+				if(isconnected){
+					Gauss* gauss = element->NewGauss();
+					for(int in=0;in<numnodes;in++){
+						gauss->GaussNode(element->GetElementType(),in);
+						Node* node=element->GetNode(in);
+						levelset_input->GetInputValue(&levelset,gauss);
+						crevassedepth_input->GetInputValue(&crevassedepth,gauss);
+						bed_input->GetInputValue(&bed,gauss);
+						surface_crevasse_input->GetInputValue(&surface_crevasse,gauss);
+						thickness_input->GetInputValue(&thickness,gauss);
+						surface_input->GetInputValue(&surface,gauss);
+
+                  /*FIXME: not sure about levelset<0. && fabs(levelset)>-mig_max*dt! SHould maybe be distance<mig_max*dt*/
+                  if((surface_crevasse>surface || crevassedepth>crevasse_threshold*thickness) && bed<0. && levelset<0. && levelset>-mig_max*dt && constraint_nodes[node->Lid()]==0.){
+							local_nflipped++;
+							vec_constraint_nodes->SetValue(node->Pid(),1.0,INS_VAL);
+						}
+					}
+					delete gauss;
+				}
+			}
+
+			/*Count how many new nodes were found*/
+			ISSM_MPI_Allreduce(&local_nflipped,&nflipped,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
+			_printf0_("Found "<<nflipped<<" to flip\n");
+
+			/*Assemble and serialize flag vector*/
+			vec_constraint_nodes->Assemble();
+			xDelete<IssmDouble>(constraint_nodes);
+         femmodel->GetLocalVectorWithClonesNodes(&constraint_nodes,vec_constraint_nodes);
+		}
+
+		/*Free resources:*/
+		delete vec_constraint_nodes;
+
+		/*Contrain the nodes that will be calved*/
+		for(Object* & object : femmodel->elements->objects){
+			Element* element  = xDynamicCast<Element*>(object);
+			int      numnodes = element->GetNumberOfNodes();
+			Gauss*   gauss    = element->NewGauss();
+			/*Potentially constrain nodes of this element*/
+			for(int in=0;in<numnodes;in++){
+				gauss->GaussNode(element->GetElementType(),in);
+				Node* node=element->GetNode(in);
+				if(!node->IsActive()) continue;
+
+				if(constraint_nodes[node->Lid()]>0.){
+					node->ApplyConstraint(0,+1.);
+				}
+				else {
+					/* no ice, set no spc */
+					node->DofInFSet(0);
+				}
+			}
+			delete gauss;
+		}
+		xDelete<IssmDouble>(constraint_nodes);
+	}
+
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/LevelsetAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/LevelsetAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/LevelsetAnalysis.h	(revision 27955)
@@ -0,0 +1,38 @@
+/*! \file LevelsetAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _LevelsetAnalysis_
+#define _LevelsetAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class LevelsetAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		IssmDouble     GetDistanceToStraight(IssmDouble* q, IssmDouble* s0, IssmDouble* s1);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+
+		/*Specific methods to LevelsetAnalysis*/
+		void  PostProcess(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/LoveAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/LoveAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/LoveAnalysis.cpp	(revision 27955)
@@ -0,0 +1,112 @@
+#include "./LoveAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void LoveAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void LoveAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void LoveAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+}/*}}}*/
+int  LoveAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	_error_("not needed!");
+}/*}}}*/
+void LoveAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+}/*}}}*/
+void LoveAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+	IssmDouble* frequencies = NULL;
+	IssmDouble* hypergeom_z = NULL;
+	IssmDouble* hypergeom_table1 = NULL;
+	IssmDouble* hypergeom_table2 = NULL;
+	int         nfreq,nz, nalpha;
+	iomodel->FetchData(&nfreq,"md.love.nfreq");
+	iomodel->FetchData(&nz,"md.love.hypergeom_nz");
+	iomodel->FetchData(&nalpha,"md.love.hypergeom_nalpha");
+	iomodel->FetchData(&frequencies,NULL,NULL,"md.love.frequencies");
+	iomodel->FetchData(&hypergeom_z,NULL,NULL,"md.love.hypergeom_z");
+	iomodel->FetchData(&hypergeom_table1,NULL,NULL,"md.love.hypergeom_table1");
+	iomodel->FetchData(&hypergeom_table2,NULL,NULL,"md.love.hypergeom_table2");
+
+	parameters->AddObject(new DoubleVecParam(LoveFrequenciesEnum,frequencies,nfreq));
+	parameters->AddObject(new DoubleVecParam(LoveHypergeomZEnum,hypergeom_z,nz));
+	parameters->AddObject(new DoubleMatParam(LoveHypergeomTable1Enum,hypergeom_table1,nz,nalpha));
+	parameters->AddObject(new DoubleMatParam(LoveHypergeomTable2Enum,hypergeom_table2,nz,nalpha));
+
+	xDelete<IssmDouble>(frequencies);
+	xDelete<IssmDouble>(hypergeom_z);
+	xDelete<IssmDouble>(hypergeom_table1);
+	xDelete<IssmDouble>(hypergeom_table2);
+
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.nfreq",LoveNfreqEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.sh_nmax",LoveShNmaxEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.sh_nmin",LoveShNminEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.g0",LoveG0Enum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.r0",LoveR0Enum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.mu0",LoveMu0Enum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.Gravitational_Constant",LoveGravitationalConstantEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.chandler_wobble",LoveChandlerWobbleEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.allow_layer_deletion",LoveAllowLayerDeletionEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.underflow_tol",LoveUnderflowTolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.pw_threshold",LovePostWidderThresholdEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.min_integration_steps",LoveMinIntegrationStepsEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.max_integration_dr",LoveMaxIntegrationdrEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.integration_scheme",LoveIntegrationSchemeEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.istemporal",LoveIsTemporalEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.n_temporal_iterations",LoveNTemporalIterationsEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.love_kernels",LoveKernelsEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.forcing_type",LoveForcingTypeEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.inner_core_boundary",LoveInnerCoreBoundaryEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.core_mantle_boundary",LoveCoreMantleBoundaryEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.complex_computation",LoveComplexComputationEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.quad_precision",LoveQuadPrecisionEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.debug",LoveDebugEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.rotational.equatorialmoi",RotationalEquatorialMoiEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.rotational.polarmoi",RotationalPolarMoiEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.rotational.angularvelocity",RotationalAngularVelocityEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.lovenumbers.tk2secular",TidalLoveK2SecularEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.hypergeom_nz",LoveHypergeomNZEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.love.hypergeom_nalpha",LoveHypergeomNAlphaEnum));
+}/*}}}*/
+void LoveAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           LoveAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_(" not needed!");
+}/*}}}*/
+void           LoveAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_(" not needed!");
+}/*}}}*/
+ElementVector* LoveAnalysis::CreateDVector(Element* element){/*{{{*/
+	_error_(" not needed!");
+}/*}}}*/
+ElementMatrix* LoveAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+	_error_(" not needed!");
+}/*}}}*/
+ElementMatrix* LoveAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	_error_(" not needed!");
+}/*}}}*/
+ElementVector* LoveAnalysis::CreatePVector(Element* element){/*{{{*/
+	_error_("not supported");
+}/*}}}*/
+void           LoveAnalysis::GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	_error_("not supported");
+}/*}}}*/
+void           LoveAnalysis::GetBprime(IssmDouble* Bprime,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	_error_("not supported");
+}/*}}}*/
+void           LoveAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           LoveAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           LoveAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	_error_("not supported");
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/LoveAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/LoveAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/LoveAnalysis.h	(revision 27955)
@@ -0,0 +1,36 @@
+/*! \file LoveAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _LoveAnalysis_
+#define _LoveAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class LoveAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBprime(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/MasstransportAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/MasstransportAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/MasstransportAnalysis.cpp	(revision 27955)
@@ -0,0 +1,1215 @@
+#include "./MasstransportAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../classes/Inputs/TransientInput.h"
+
+#define FINITEELEMENT P1Enum
+
+/*Model processing*/
+void MasstransportAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*Fetch parameters: */
+	int stabilization;
+	iomodel->FindConstant(&stabilization,"md.masstransport.stabilization");
+
+	/*Do not add constraints in DG,  they are weakly imposed*/
+	if(stabilization!=3){
+		IoModelToConstraintsx(constraints,iomodel,"md.masstransport.spcthickness",MasstransportAnalysisEnum,FINITEELEMENT);
+	}
+
+	/*FCT, constraints are imposed using penalties*/
+	if(stabilization==4){
+		constraints->ActivatePenaltyMethod(MasstransportAnalysisEnum);
+	}
+}/*}}}*/
+void MasstransportAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Intermediaries*/
+	int penpair_ids[2];
+	int count=0;
+	int stabilization;
+	int numvertex_pairing;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&stabilization,"md.masstransport.stabilization");
+
+	/*Loads only in DG*/
+	if(stabilization==3){
+
+		/*Get faces and elements*/
+		CreateFaces(iomodel);
+		iomodel->FetchData(1,"md.geometry.thickness");
+
+		/*First load data:*/
+		for(int i=0;i<iomodel->numberoffaces;i++){
+
+			/*Get left and right elements*/
+			int element=iomodel->faces[4*i+2]-1; //faces are [node1 node2 elem1 elem2]
+
+			/*Now, if this element is not in the partition, pass: */
+			if(!iomodel->my_elements[element]) continue;
+			loads->AddObject(new Numericalflux(i+1,i,i,iomodel));
+		}
+
+		/*Free data: */
+		iomodel->DeleteData(1,"md.geometry.thickness");
+	}
+
+	/*Create Penpair for vertex_pairing: */
+	IssmDouble *vertex_pairing=NULL;
+	IssmDouble *nodeonbase=NULL;
+	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.masstransport.vertex_pairing");
+	if(iomodel->domaintype!=Domain2DhorizontalEnum && iomodel->domaintype!=Domain3DsurfaceEnum) iomodel->FetchData(&nodeonbase,NULL,NULL,"md.mesh.vertexonbase");
+
+	for(int i=0;i<numvertex_pairing;i++){
+
+		if(iomodel->my_vertices[reCast<int>(vertex_pairing[2*i+0])-1]){
+
+			/*In debugging mode, check that the second node is in the same cpu*/
+			_assert_(iomodel->my_vertices[reCast<int>(vertex_pairing[2*i+1])-1]);
+
+			/*Skip if one of the two is not on the bed*/
+			if(iomodel->domaintype!=Domain2DhorizontalEnum){
+				if(!(reCast<bool>(nodeonbase[reCast<int>(vertex_pairing[2*i+0])-1])) || !(reCast<bool>(nodeonbase[reCast<int>(vertex_pairing[2*i+1])-1]))) continue;
+			}
+
+			/*Get node ids*/
+			penpair_ids[0]=reCast<int>(vertex_pairing[2*i+0]);
+			penpair_ids[1]=reCast<int>(vertex_pairing[2*i+1]);
+
+			/*Create Load*/
+			loads->AddObject(new Penpair(count+1,&penpair_ids[0]));
+			count++;
+		}
+	}
+
+	/*Free resources: */
+	iomodel->DeleteData(vertex_pairing,"md.masstransport.vertex_pairing");
+	iomodel->DeleteData(nodeonbase,"md.mesh.vertexonbase");
+}/*}}}*/
+void MasstransportAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	/*Fetch parameters: */
+	int  stabilization;
+	iomodel->FindConstant(&stabilization,"md.masstransport.stabilization");
+
+	/*Check in 3d*/
+	if(stabilization==3 && iomodel->domaintype==Domain3DEnum) _error_("DG 3d not implemented yet");
+
+	/*Create Nodes either DG or CG depending on stabilization*/
+	if(iomodel->domaintype!=Domain2DhorizontalEnum && iomodel->domaintype!=Domain3DsurfaceEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	if(stabilization!=3){
+		::CreateNodes(nodes,iomodel,MasstransportAnalysisEnum,FINITEELEMENT,isamr);
+	}
+	else{
+		::CreateNodes(nodes,iomodel,MasstransportAnalysisEnum,P1DGEnum,isamr);
+	}
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  MasstransportAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void MasstransportAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int    stabilization,finiteelement;
+	bool   dakota_analysis;
+	bool   isgroundingline;
+	bool   ismovingfront;
+	bool   issmb;
+	int    isoceancoupling;
+	int    grdmodel;
+
+	/*Fetch data needed: */
+	iomodel->FindConstant(&stabilization,"md.masstransport.stabilization");
+	iomodel->FindConstant(&dakota_analysis,"md.qmu.isdakota");
+	iomodel->FindConstant(&isgroundingline,"md.transient.isgroundingline");
+	iomodel->FindConstant(&ismovingfront,"md.transient.ismovingfront");
+	iomodel->FindConstant(&isoceancoupling,"md.transient.isoceancoupling");
+	iomodel->FindConstant(&issmb,"md.transient.issmb");
+
+	/*Finite element type*/
+	finiteelement = FINITEELEMENT;
+	if(stabilization==3){
+		finiteelement = P1DGEnum;
+		//finiteelement = P0DGEnum;
+	}
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum);
+	if(isgroundingline) 	iomodel->FetchDataToInput(inputs,elements,"md.geometry.bed",BedEnum);
+	/*Initialize ThicknessResidual input*/
+	InputUpdateFromConstantx(inputs,elements,0.,ThicknessResidualEnum);
+
+	/*Get what we need for ocean-induced basal melting*/
+	bool isstochastic;
+	int basalforcing_model;
+	int melt_parameterization;
+	iomodel->FindConstant(&basalforcing_model,"md.basalforcings.model");
+	iomodel->FindConstant(&isstochastic,"md.stochasticforcing.isstochasticforcing");
+	iomodel->FindConstant(&melt_parameterization,"md.frontalforcings.parameterization");
+	switch(basalforcing_model){
+		case FloatingMeltRateEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.floatingice_melting_rate",BasalforcingsFloatingiceMeltingRateEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.perturbation_melting_rate",BasalforcingsPerturbationMeltingRateEnum,0.);
+			if(isstochastic){
+            iomodel->FetchDataToInput(inputs,elements,"md.stochasticforcing.default_id",StochasticForcingDefaultIdEnum);
+            iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.floatingice_melting_rate",BaselineBasalforcingsFloatingiceMeltingRateEnum);
+         }
+			break;
+		case LinearFloatingMeltRateEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.perturbation_melting_rate",BasalforcingsPerturbationMeltingRateEnum,0.);
+			break;
+		case MismipFloatingMeltRateEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum);
+			break;
+		case MantlePlumeGeothermalFluxEnum:
+			break;
+		case SpatialLinearFloatingMeltRateEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.deepwater_melting_rate",BasalforcingsSpatialDeepwaterMeltingRateEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.deepwater_elevation",BasalforcingsSpatialDeepwaterElevationEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.upperwater_melting_rate",BasalforcingsSpatialUpperwaterMeltingRateEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.upperwater_elevation",BasalforcingsSpatialUpperwaterElevationEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.perturbation_melting_rate",BasalforcingsPerturbationMeltingRateEnum,0.);
+			if(isstochastic){
+            iomodel->FetchDataToInput(inputs,elements,"md.stochasticforcing.default_id",StochasticForcingDefaultIdEnum);
+            iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.deepwater_melting_rate",BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum);
+         }
+			break;
+		case BasalforcingsPicoEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.basin_id",BasalforcingsPicoBasinIdEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.overturning_coeff",BasalforcingsPicoOverturningCoeffEnum);
+			break;
+		case BasalforcingsIsmip6Enum:{
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.basin_id",BasalforcingsIsmip6BasinIdEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.melt_anomaly",BasalforcingsIsmip6MeltAnomalyEnum,0.);
+			IssmDouble** array3d = NULL; int* Ms = NULL; int* Ns = NULL; int K;
+			iomodel->FetchData(&array3d,&Ms,&Ns,&K,"md.basalforcings.tf");
+			if(!array3d) _error_("md.basalforcings.tf not found in binary file");
+			for(Object* & object : elements->objects){
+				Element*       element = xDynamicCast<Element*>(object);
+				if(iomodel->domaintype!=Domain2DhorizontalEnum && !element->IsOnBase()) continue;
+				for(int kk=0;kk<K;kk++){
+					element->DatasetInputAdd(BasalforcingsIsmip6TfEnum,array3d[kk],inputs,iomodel,Ms[kk],Ns[kk],1,BasalforcingsIsmip6TfEnum,kk);
+				}
+			}
+			xDelete<int>(Ms); xDelete<int>(Ns);
+			for(int i=0;i<K;i++) xDelete<IssmDouble>(array3d[i]);
+			xDelete<IssmDouble*>(array3d);
+			}
+			break;
+		case BeckmannGoosseFloatingMeltRateEnum:
+			bool isthermalforcing;
+			iomodel->FindConstant(&isthermalforcing,"md.basalforcings.isthermalforcing");
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum);
+			if(isthermalforcing==0){
+				iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.ocean_salinity",BasalforcingsOceanSalinityEnum);
+				iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.ocean_temp",BasalforcingsOceanTempEnum);
+			}
+			else if(melt_parameterization!=FrontalForcingsRignotarmaEnum){
+				iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.ocean_thermalforcing",ThermalForcingEnum);
+			}
+			break;
+		case LinearFloatingMeltRatearmaEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.basin_id",BasalforcingsLinearBasinIdEnum);
+			if(isstochastic) iomodel->FetchDataToInput(inputs,elements,"md.stochasticforcing.default_id",StochasticForcingDefaultIdEnum);
+			break;
+		default:
+			_error_("Basal forcing model "<<EnumToStringx(basalforcing_model)<<" not supported yet");
+	}
+
+	if(!issmb){
+		iomodel->FetchDataToInput(inputs,elements,"md.smb.mass_balance",SmbMassBalanceEnum);
+	}
+	if(stabilization==3){
+		iomodel->FetchDataToInput(inputs,elements,"md.masstransport.spcthickness",MasstransportSpcthicknessEnum); //for DG, we need the spc in the element
+	}
+	if(stabilization==4){
+		iomodel->FetchDataToInput(inputs,elements,"md.masstransport.spcthickness",MasstransportSpcthicknessEnum); //for FCT, we need the spc in the element (penlaties)
+	}
+
+	if(iomodel->domaintype!=Domain2DhorizontalEnum && iomodel->domaintype!=Domain3DsurfaceEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+
+	/*Initialize sea level cumulated sea level loads :*/
+	iomodel->ConstantToInput(inputs,elements,0,AccumulatedDeltaIceThicknessEnum,P1Enum);
+	iomodel->ConstantToInput(inputs,elements,0,OldAccumulatedDeltaIceThicknessEnum,P1Enum);
+
+	/*for Ivins deformation model, initialize history of ice thickness changes:*/
+	iomodel->FindConstant(&grdmodel,"md.solidearth.settings.grdmodel");
+	if(grdmodel==IvinsEnum) inputs->SetTransientInput(TransientAccumulatedDeltaIceThicknessEnum,NULL,0);
+
+}/*}}}*/
+void MasstransportAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int     numoutputs;
+	char**  requestedoutputs = NULL;
+
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isFS",FlowequationIsFSEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.masstransport.isfreesurface",MasstransportIsfreesurfaceEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.masstransport.hydrostatic_adjustment",MasstransportHydrostaticAdjustmentEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.masstransport.stabilization",MasstransportStabilizationEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.masstransport.min_thickness",MasstransportMinThicknessEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.masstransport.penalty_factor",MasstransportPenaltyFactorEnum));
+
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.masstransport.requested_outputs");
+	parameters->AddObject(new IntParam(MasstransportNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(MasstransportRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.masstransport.requested_outputs");
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           MasstransportAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           MasstransportAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* MasstransportAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* MasstransportAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* MasstransportAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	if(!element->IsOnBase()) return NULL;
+	Element* basalelement = element->SpawnBasalElement();
+
+	ElementMatrix* Ke = NULL;
+	switch(element->FiniteElement()){
+		case P1Enum: case P2Enum:
+			Ke = CreateKMatrixCG(basalelement);
+			break;
+		case P0DGEnum:
+		case P1DGEnum:
+			Ke = CreateKMatrixDG(basalelement);
+			break;
+		default:
+			_error_("Element type " << EnumToStringx(element->FiniteElement()) << " not supported yet");
+	}
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+ElementMatrix* MasstransportAnalysis::CreateKMatrixCG(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int        stabilization;
+	int        domaintype,dim;
+	IssmDouble Jdet,D_scalar,dt,h;
+	IssmDouble vel,vx,vy,dvxdx,dvydy;
+	IssmDouble xi,tau;
+	IssmDouble dvx[2],dvy[2];
+	IssmDouble D[4];
+	IssmDouble* xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1; break;
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 2; break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*		dbasis = xNew<IssmDouble>(dim*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+	element->FindParam(&stabilization,MasstransportStabilizationEnum);
+	Input* vxaverage_input=element->GetInput(VxAverageEnum); _assert_(vxaverage_input);
+	Input* vyaverage_input=NULL;
+	if(dim==2){
+		vyaverage_input=element->GetInput(VyAverageEnum); _assert_(vyaverage_input);
+	}
+
+	h = element->CharacteristicLength();
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		/*Transient term*/
+		D_scalar=gauss->weight*Jdet;
+		for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D_scalar*basis[i]*basis[j];
+
+		/*Advection terms*/
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vxaverage_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		D_scalar=dt*gauss->weight*Jdet;
+		if(dim==2){
+			vyaverage_input->GetInputValue(&vy,gauss);
+			vyaverage_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+			dvxdx=dvx[0];
+			dvydy=dvy[1];
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					/*\phi_i \phi_j \nabla\cdot v*/
+					Ke->values[i*numnodes+j] += D_scalar*basis[i]*basis[j]*(dvxdx+dvydy);
+					/*\phi_i v\cdot\nabla\phi_j*/
+					Ke->values[i*numnodes+j] += D_scalar*basis[i]*(vx*dbasis[0*numnodes+j] + vy*dbasis[1*numnodes+j]);
+				}
+			}
+		}
+		else{
+			dvxdx=dvx[0];
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += D_scalar*dvxdx*basis[i]*basis[j];
+					Ke->values[i*numnodes+j] += D_scalar*vx*dbasis[0*numnodes+j]*basis[i];
+				}
+			}
+		}
+
+		for(int i=0;i<4;i++) D[i]=0.;
+		switch(stabilization){
+			case 0:
+				/*Nothing to be done*/
+				break;
+			case 1:
+				/*SSA*/
+				vxaverage_input->GetInputAverage(&vx);
+				if(dim==2) vyaverage_input->GetInputAverage(&vy);
+				D[0*dim+0]=h/2.0*fabs(vx);
+				if(dim==2) D[1*dim+1]=h/2.0*fabs(vy);
+				break;
+			case 2:
+				/*Streamline upwinding*/
+				vxaverage_input->GetInputAverage(&vx);
+				if(dim==1){
+					vel=fabs(vx)+1.e-8;
+				}
+				else{
+					vyaverage_input->GetInputAverage(&vy);
+					vel=sqrt(vx*vx+vy*vy)+1.e-8;
+				}
+				tau=h/(2*vel);
+				break;
+			case 5:
+				/*SUPG*/
+				if(dim!=2) _error_("Stabilization "<<stabilization<<" not supported yet for dim != 2");
+				vxaverage_input->GetInputAverage(&vx);
+				vyaverage_input->GetInputAverage(&vy);
+				vel=sqrt(vx*vx+vy*vy)+1.e-8;
+				//xi=0.3130;
+				xi=1;
+				tau=xi*h/(2*vel);
+				//tau=dt/6; // as implemented in Ua
+				break;
+			default:
+				_error_("Stabilization "<<stabilization<<" not supported yet");
+		}
+		if(stabilization==1){
+			/*SSA*/
+			if(dim==1) D[0]=D_scalar*D[0];
+			else{
+				D[0*dim+0]=D_scalar*D[0*dim+0];
+				D[1*dim+0]=D_scalar*D[1*dim+0];
+				D[0*dim+1]=D_scalar*D[0*dim+1];
+				D[1*dim+1]=D_scalar*D[1*dim+1];
+			}
+
+			if(dim==2){
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j] += (
+									dbasis[0*numnodes+i] *(D[0*dim+0]*dbasis[0*numnodes+j] + D[0*dim+1]*dbasis[1*numnodes+j]) +
+									dbasis[1*numnodes+i] *(D[1*dim+0]*dbasis[0*numnodes+j] + D[1*dim+1]*dbasis[1*numnodes+j])
+									);
+					}
+				}
+			}
+			else{
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j] += dbasis[0*numnodes+i]*D[0]*dbasis[0*numnodes+j];
+					}
+				}
+			}
+		}
+		if(stabilization==2){
+			/*Streamline upwind*/
+			_assert_(dim==2);
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j]+=dt*gauss->weight*Jdet*tau*(vx*dbasis[0*numnodes+i]+vy*dbasis[1*numnodes+i])*(vx*dbasis[0*numnodes+j]+vy*dbasis[1*numnodes+j]);
+				}
+			}
+		}
+		if(stabilization==5){/*{{{*/
+			 /*Mass matrix - part 2*/
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j]+=gauss->weight*Jdet*tau*basis[j]*(vx*dbasis[0*numnodes+i]+vy*dbasis[1*numnodes+i]);
+				}
+			}
+			/*Mass matrix - part 3*/
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j]+=gauss->weight*Jdet*tau*basis[j]*(basis[i]*dvxdx+basis[i]*dvydy);
+				}
+			}
+
+			/*Advection matrix - part 2, A*/
+			for(int i=0;i<numnodes;i++){
+            for(int j=0;j<numnodes;j++){
+               Ke->values[i*numnodes+j]+=dt*gauss->weight*Jdet*tau*(vx*dbasis[0*numnodes+j]+vy*dbasis[1*numnodes+j])*(vx*dbasis[0*numnodes+i]+vy*dbasis[1*numnodes+i]);
+            }
+         }
+			/*Advection matrix - part 3, A*/
+			for(int i=0;i<numnodes;i++){
+            for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j]+=dt*gauss->weight*Jdet*tau*(vx*dbasis[0*numnodes+j]+vy*dbasis[1*numnodes+j])*(basis[i]*dvxdx+basis[i]*dvydy);
+				}
+         }
+
+			/*Advection matrix - part 2, B*/
+			for(int i=0;i<numnodes;i++){
+            for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j]+=dt*gauss->weight*Jdet*tau*(basis[j]*dvxdx+basis[j]*dvydy)*(vx*dbasis[0*numnodes+i]+vy*dbasis[1*numnodes+i]);
+				}
+         }
+			/*Advection matrix - part 3, B*/
+			for(int i=0;i<numnodes;i++){
+            for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j]+=dt*gauss->weight*Jdet*tau*(basis[j]*dvxdx+basis[j]*dvydy)*(basis[i]*dvxdx+basis[i]*dvydy);
+				}
+			}
+		}/*}}}*/
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementMatrix* MasstransportAnalysis::CreateKMatrixDG(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int        domaintype;
+	IssmDouble Jdet,D_scalar,dt,vx,vy;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(3*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+	Input* vxaverage_input=element->GetInput(VxAverageEnum); _assert_(vxaverage_input);
+	Input* vyaverage_input=element->GetInput(VyAverageEnum); _assert_(vyaverage_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+
+		D_scalar=gauss->weight*Jdet;
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += D_scalar*basis[i]*basis[j];
+			}
+		}
+
+		/*WARNING: basis and dbasis are inverted compared to CG*/
+		D_scalar = - dt*gauss->weight*Jdet;
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += D_scalar*(vx*dbasis[0*numnodes+i]*basis[j] + vy*dbasis[1*numnodes+i]*basis[j]);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* MasstransportAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	if(!element->IsOnBase()) return NULL;
+	Element* basalelement = element->SpawnBasalElement();
+
+	ElementVector* pe = NULL;
+	switch(element->FiniteElement()){
+		case P1Enum: case P2Enum:
+			pe = CreatePVectorCG(basalelement);
+			break;
+		case P0DGEnum:
+		case P1DGEnum:
+			pe = CreatePVectorDG(basalelement);
+			break;
+		default:
+			_error_("Element type " << EnumToStringx(element->FiniteElement()) << " not supported yet");
+	}
+
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return pe;
+}/*}}}*/
+ElementVector* MasstransportAnalysis::CreatePVectorCG(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int			stabilization,dim,domaintype;
+	int         melt_style,point1;
+	bool        mainlyfloating;
+	IssmDouble  fraction1,fraction2;
+	IssmDouble  Jdet,dt;
+	IssmDouble  ms,mb,gmb,fmb,thickness,fmb_pert;
+	IssmDouble  vx,vy,vel,dvxdx,dvydy,xi,h,tau;
+	IssmDouble  dvx[2],dvy[2];
+	IssmDouble  gllevelset,phi=1.;
+	IssmDouble* xyz_list = NULL;
+	Gauss*      gauss     = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1; break;
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 2; break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis= xNew<IssmDouble>(dim*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&melt_style,GroundinglineMeltInterpolationEnum);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&stabilization,MasstransportStabilizationEnum);
+	Input* gmb_input        = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);  _assert_(gmb_input);
+	Input* fmb_input        = element->GetInput(BasalforcingsFloatingiceMeltingRateEnum);  _assert_(fmb_input);
+	//Input* fmb_pert_input   = element->GetInput(BasalforcingsPerturbationMeltingRateEnum); _assert_(fmb_pert_input);
+	Input* gllevelset_input = element->GetInput(MaskOceanLevelsetEnum);              _assert_(gllevelset_input);
+	Input* ms_input         = element->GetInput(SmbMassBalanceEnum);                       _assert_(ms_input);
+	Input* thickness_input  = element->GetInput(ThicknessEnum);                            _assert_(thickness_input);
+	Input* vxaverage_input  = element->GetInput(VxAverageEnum);										_assert_(vxaverage_input);
+	Input* vyaverage_input  = element->GetInput(VyAverageEnum);										_assert_(vyaverage_input);
+
+	h=element->CharacteristicLength();
+
+	/*Recover portion of element that is grounded*/
+	phi=element->GetGroundedPortion(xyz_list);
+	if(melt_style==SubelementMelt2Enum){
+		element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+	   gauss = element->NewGauss(point1,fraction1,fraction2,3);
+	}
+	else{
+		gauss = element->NewGauss(3);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		ms_input->GetInputValue(&ms,gauss);
+		gmb_input->GetInputValue(&gmb,gauss);
+		fmb_input->GetInputValue(&fmb,gauss);
+		//fmb_pert_input->GetInputValue(&fmb_pert,gauss);
+		gllevelset_input->GetInputValue(&gllevelset,gauss);
+		thickness_input->GetInputValue(&thickness,gauss);
+
+		if(melt_style==SubelementMelt1Enum){
+			if (phi>0.999999999) mb=gmb;
+			else mb=(1-phi)*fmb+phi*gmb; // phi is the fraction of grounded ice so (1-phi) is floating
+		}
+		else if(melt_style==SubelementMelt2Enum){
+			if(gllevelset>0.) mb=gmb;
+			else mb=fmb;
+		}
+		else if(melt_style==NoMeltOnPartiallyFloatingEnum){
+			if (phi<0.00000001){
+				mb=fmb;//+fmb_pert;
+			}
+			else mb=gmb;
+		}
+		else if(melt_style==FullMeltOnPartiallyFloatingEnum){
+			if (phi<0.99999999) mb=fmb;
+			else mb=gmb;
+		}
+		else  _error_("melt interpolation "<<EnumToStringx(melt_style)<<" not implemented yet");
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(thickness+dt*(ms-mb))*basis[i];
+
+		if(stabilization==5){ //SUPG
+			element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+			vxaverage_input->GetInputAverage(&vx);
+			vyaverage_input->GetInputAverage(&vy);
+			vxaverage_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+			vyaverage_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+			vel=sqrt(vx*vx+vy*vy)+1.e-8;
+			dvxdx=dvx[0];
+			dvydy=dvy[1];
+			//xi=0.3130;
+			xi=1;
+			tau=xi*h/(2*vel);
+			//tau=dt/6; // as implemented in Ua
+
+			/*Force vector - part 2*/
+			for(int i=0;i<numnodes;i++){
+				pe->values[i]+=Jdet*gauss->weight*(thickness+dt*(ms-mb))*(tau*vx*dbasis[0*numnodes+i]+tau*vy*dbasis[1*numnodes+i]);
+			}
+			/*Force vector - part 3*/
+			for(int i=0;i<numnodes;i++){
+				pe->values[i]+=Jdet*gauss->weight*(thickness+dt*(ms-mb))*(tau*basis[i]*dvxdx+tau*basis[i]*dvydy);
+			}
+		}
+
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+ElementVector* MasstransportAnalysis::CreatePVectorDG(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int melt_style, point1;
+	bool mainlyfloating;
+	IssmDouble  fraction1,fraction2,gllevelset;
+	IssmDouble  Jdet,dt;
+	IssmDouble  ms,mb,gmb,fmb,thickness,phi=1.;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&melt_style,GroundinglineMeltInterpolationEnum);
+	Input* gmb_input        = element->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(gmb_input);
+	Input* fmb_input        = element->GetInput(BasalforcingsFloatingiceMeltingRateEnum); _assert_(fmb_input);
+	Input* ms_input         = element->GetInput(SmbMassBalanceEnum);                      _assert_(ms_input);
+	Input* gllevelset_input = element->GetInput(MaskOceanLevelsetEnum);             _assert_(gllevelset_input);
+	Input* thickness_input  = element->GetInput(ThicknessEnum);                           _assert_(thickness_input);
+
+   /*Recover portion of element that is grounded*/
+   Gauss* gauss=NULL;
+   phi=element->GetGroundedPortion(xyz_list);
+   if(melt_style==SubelementMelt2Enum){
+      element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+      gauss = element->NewGauss(point1,fraction1,fraction2,3);
+   }
+   else{
+      gauss = element->NewGauss(3);
+   }
+
+	/* Start  looping on the number of gaussian points: */
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		ms_input->GetInputValue(&ms,gauss);
+		gmb_input->GetInputValue(&gmb,gauss);
+		fmb_input->GetInputValue(&fmb,gauss);
+		gllevelset_input->GetInputValue(&gllevelset,gauss);
+		thickness_input->GetInputValue(&thickness,gauss);
+
+ 		if(melt_style==SubelementMelt1Enum){
+         if (phi>0.999999999) mb=gmb;
+         else mb=(1-phi)*fmb+phi*gmb; // phi is the fraction of grounded ice so (1-phi) is floating
+      }
+      else if(melt_style==SubelementMelt2Enum){
+         if(gllevelset>0.) mb=gmb;
+         else mb=fmb;
+      }
+      else if(melt_style==NoMeltOnPartiallyFloatingEnum){
+         if (phi<0.00000001) mb=fmb;
+         else mb=gmb;
+      }
+      else if(melt_style==FullMeltOnPartiallyFloatingEnum){
+         if (phi<0.99999999) mb=fmb;
+         else mb=gmb;
+      }
+      else  _error_("melt interpolation "<<EnumToStringx(melt_style)<<" not implemented yet");
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(thickness+dt*(ms-mb))*basis[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           MasstransportAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,ThicknessEnum);
+}/*}}}*/
+void           MasstransportAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           MasstransportAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	/*Only update if on base*/
+	if(!element->IsOnBase()) return;
+
+	/*deal with logic of accumulating thickness if we are coupled to a 
+	 * sea level core:*/
+	int frequency,count,isgrd;
+	element->FindParam(&isgrd,SolidearthSettingsGRDEnum);
+	if(isgrd){
+		element->FindParam(&frequency,SolidearthSettingsRunFrequencyEnum);
+		element->FindParam(&count,SealevelchangeRunCountEnum);
+	}
+
+	/*Fetch dof list and allocate solution vector*/
+	int *doflist = NULL;
+	element->GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+
+	int numnodes = element->GetNumberOfNodes();
+	IssmDouble* newthickness = xNew<IssmDouble>(numnodes);
+	IssmDouble* thicknessresidual = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	IssmDouble minthickness = element->FindParam(MasstransportMinThicknessEnum);
+	for(int i=0;i<numnodes;i++){
+		newthickness[i]=solution[doflist[i]];
+		thicknessresidual[i]=0.;
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(newthickness[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(newthickness[i])) _error_("Inf found in solution vector");
+		if(newthickness[i]<minthickness){
+			thicknessresidual[i]=minthickness-newthickness[i];
+			newthickness[i]=minthickness;
+		}
+	}
+	element->AddBasalInput(ThicknessEnum,newthickness,element->GetElementType());
+	element->AddBasalInput(ThicknessResidualEnum,thicknessresidual,element->GetElementType());
+
+	xDelete<int>(doflist);
+	xDelete<IssmDouble>(newthickness);
+ 	xDelete<IssmDouble>(thicknessresidual);
+
+	/*Update bed and surface accordingly*/
+
+	/*Get basal element*/
+	int domaintype; element->FindParam(&domaintype,DomainTypeEnum);
+	Element* basalelement=element;
+	if(domaintype!=Domain2DhorizontalEnum) basalelement = element->SpawnBasalElement();
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*Now, we need to do some "processing"*/
+	newthickness  = xNew<IssmDouble>(numvertices);
+	IssmDouble* oldthickness      = xNew<IssmDouble>(numvertices);
+	IssmDouble* newbase           = xNew<IssmDouble>(numvertices);
+	IssmDouble* bed               = xNew<IssmDouble>(numvertices);
+	IssmDouble* newsurface        = xNew<IssmDouble>(numvertices);
+	IssmDouble* oldbase           = xNew<IssmDouble>(numvertices);
+	IssmDouble* oldsurface        = xNew<IssmDouble>(numvertices);
+	IssmDouble* phi               = xNew<IssmDouble>(numvertices);
+	IssmDouble* sealevel          = xNew<IssmDouble>(numvertices);
+
+	/*Get previous base, thickness, surfac and current sealevel and bed:*/
+	basalelement->GetInputListOnVertices(&newthickness[0],ThicknessEnum);
+	basalelement->GetInputListOnVertices(&oldthickness[0],ThicknessOldEnum);
+	basalelement->GetInputListOnVertices(&oldbase[0],BaseOldEnum);
+	basalelement->GetInputListOnVertices(&oldsurface[0],SurfaceOldEnum);
+	basalelement->GetInputListOnVertices(&phi[0],MaskOceanLevelsetEnum);
+	basalelement->GetInputListOnVertices(&sealevel[0],SealevelEnum);
+
+	/*Do we do grounding line migration?*/
+	bool isgroundingline;
+	element->FindParam(&isgroundingline,TransientIsgroundinglineEnum);
+	if(isgroundingline) basalelement->GetInputListOnVertices(&bed[0],BedEnum);
+
+	/*Find MasstransportHydrostaticAdjustment to figure out how to update the geometry:*/
+	int hydroadjustment;
+	basalelement->FindParam(&hydroadjustment,MasstransportHydrostaticAdjustmentEnum);
+	IssmDouble rho_ice   = basalelement->FindParam(MaterialsRhoIceEnum);
+	IssmDouble rho_water = basalelement->FindParam(MaterialsRhoSeawaterEnum);
+
+	for(int i=0;i<numvertices;i++) {
+		if (phi[i]>0.){ //this is grounded ice: just add thickness to base.
+			if(isgroundingline){
+				newsurface[i] = bed[i]+newthickness[i]; //surface = bed + newthickness
+				newbase[i]    = bed[i];                 //new base at new bed
+			}
+			else{
+				 newsurface[i] = oldbase[i]+newthickness[i]; //surface = oldbase + newthickness
+				 newbase[i]    = oldbase[i];                 //same base: do nothing
+			}
+		}
+		else{ //this is an ice shelf: hydrostatic equilibrium*/
+			if(hydroadjustment==AbsoluteEnum){
+				newsurface[i] = newthickness[i]*(1.-rho_ice/rho_water)+sealevel[i];
+				newbase[i]    = newthickness[i]*(-rho_ice/rho_water)+sealevel[i];
+			}
+			else if(hydroadjustment==IncrementalEnum){
+				newsurface[i] = oldsurface[i]+(1.0-rho_ice/rho_water)*(newthickness[i]-oldthickness[i])+sealevel[i]; //surface = oldsurface + (1-di) * dH
+				newbase[i]    = oldbase[i]-rho_ice/rho_water*(newthickness[i]-oldthickness[i])+sealevel[i]; //base               = oldbed + di * dH
+			}
+			else _error_("Hydrostatic adjustment " << hydroadjustment << " (" << EnumToStringx(hydroadjustment) << ") not supported yet");
+		}
+	}
+
+	/*Add input to the element: */
+	element->AddBasalInput(SurfaceEnum,newsurface,P1Enum);
+	element->AddBasalInput(BaseEnum,newbase,P1Enum);
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(newthickness);
+	xDelete<IssmDouble>(newbase);
+	xDelete<IssmDouble>(newsurface);
+	xDelete<IssmDouble>(oldthickness);
+	xDelete<IssmDouble>(oldbase);
+	xDelete<IssmDouble>(oldsurface);
+	xDelete<IssmDouble>(phi);
+	xDelete<IssmDouble>(sealevel);
+	xDelete<IssmDouble>(bed);
+	xDelete<int>(doflist);
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+void           MasstransportAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
+
+/*Flux Correction Transport*/
+ElementMatrix* MasstransportAnalysis::CreateFctKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	IssmDouble Jdet,D_scalar;
+	IssmDouble vx,vy,dvxdx,dvydy;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble dvx[2],dvy[2];
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int dim      = 2;
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    D      = xNewZeroInit<IssmDouble>(dim*dim);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vxaverage_input=element->GetInput(VxEnum); _assert_(vxaverage_input);
+	Input* vyaverage_input=element->GetInput(VyEnum); _assert_(vyaverage_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+		vxaverage_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		vyaverage_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+		dvxdx=dvx[0];
+		dvydy=dvy[1];
+
+		D_scalar = gauss->weight*Jdet;
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				/*\phi_i \phi_j \nabla\cdot v*/
+				Ke->values[i*numnodes+j] += -D_scalar*basis[i]*basis[j]*(dvxdx+dvydy);
+				/*\phi_i v\cdot\nabla\phi_j*/
+				Ke->values[i*numnodes+j] += -D_scalar*(vx*dbasis[0*numnodes+j]*basis[i] + vy*dbasis[1*numnodes+j]*basis[i]);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(D);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementMatrix* MasstransportAnalysis::CreateMassMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  D,Jdet;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Me     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		D=gauss->weight*Jdet;
+		for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Me->values[i*numnodes+j] += D*basis[i]*basis[j];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return Me;
+}/*}}}*/
+ElementVector* MasstransportAnalysis::CreateFctPVector(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int			stabilization,dim,domaintype;
+	int         melt_style,point1;
+	bool        mainlyfloating;
+	IssmDouble  fraction1,fraction2;
+	IssmDouble  Jdet;
+	IssmDouble  ms,mb,gmb,fmb;
+	IssmDouble  vx,vy,dvxdx,dvydy;
+	IssmDouble  dvx[2],dvy[2];
+	IssmDouble  gllevelset,phi=1.;
+	IssmDouble* xyz_list = NULL;
+	Gauss*      gauss     = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1; break;
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 2; break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis= xNew<IssmDouble>(dim*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&melt_style,GroundinglineMeltInterpolationEnum);
+	element->FindParam(&stabilization,MasstransportStabilizationEnum);
+	Input* gmb_input        = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);  _assert_(gmb_input);
+	Input* fmb_input        = element->GetInput(BasalforcingsFloatingiceMeltingRateEnum);  _assert_(fmb_input);
+	Input* gllevelset_input = element->GetInput(MaskOceanLevelsetEnum);              _assert_(gllevelset_input);
+	Input* ms_input         = element->GetInput(SmbMassBalanceEnum);                       _assert_(ms_input);
+	Input* vxaverage_input  = element->GetInput(VxAverageEnum);										_assert_(vxaverage_input);
+	Input* vyaverage_input  = element->GetInput(VyAverageEnum);										_assert_(vyaverage_input);
+
+	/*Recover portion of element that is grounded*/
+	phi=element->GetGroundedPortion(xyz_list);
+	if(melt_style==SubelementMelt2Enum){
+		element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+	   gauss = element->NewGauss(point1,fraction1,fraction2,3);
+	}
+	else{
+		gauss = element->NewGauss(3);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		ms_input->GetInputValue(&ms,gauss);
+		gmb_input->GetInputValue(&gmb,gauss);
+		fmb_input->GetInputValue(&fmb,gauss);
+		gllevelset_input->GetInputValue(&gllevelset,gauss);
+
+		if(melt_style==SubelementMelt1Enum){
+			if (phi>0.999999999) mb=gmb;
+			else mb=(1-phi)*fmb+phi*gmb; // phi is the fraction of grounded ice so (1-phi) is floating
+		}
+		else if(melt_style==SubelementMelt2Enum){
+			if(gllevelset>0.) mb=gmb;
+			else mb=fmb;
+		}
+		else if(melt_style==NoMeltOnPartiallyFloatingEnum){
+			if (phi<0.00000001) mb=fmb;
+			else mb=gmb;
+		}
+		else if(melt_style==FullMeltOnPartiallyFloatingEnum){
+			if (phi<0.99999999) mb=fmb;
+			else mb=gmb;
+		}
+		else  _error_("melt interpolation "<<EnumToStringx(melt_style)<<" not implemented yet");
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*(ms-mb)*basis[i];
+
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           MasstransportAnalysis::FctKMatrix(Matrix<IssmDouble>** pKff,Matrix<IssmDouble>** pKfs,FemModel* femmodel){/*{{{*/
+
+	/*Output*/
+	Matrix<IssmDouble>* Kff = NULL;
+	Matrix<IssmDouble>* Kfs = NULL;
+
+	/*Initialize Jacobian Matrix*/
+	AllocateSystemMatricesx(&Kff,&Kfs,NULL,NULL,femmodel);
+
+	/*Create and assemble matrix*/
+	for(Object* & object : femmodel->elements->objects){
+		Element*       element = xDynamicCast<Element*>(object);
+		ElementMatrix* Ke     = this->CreateFctKMatrix(element);
+		if(Ke) Ke->AddToGlobal(Kff,Kfs);
+		delete Ke;
+	}
+	Kff->Assemble();
+	Kfs->Assemble();
+
+	/*Assign output pointer*/
+	*pKff=Kff;
+	if(pKfs){
+		*pKfs=Kfs;
+	}
+	else{
+		delete Kfs;
+	}
+}/*}}}*/
+void           MasstransportAnalysis::FctPVector(Vector<IssmDouble>** ppf,FemModel* femmodel){/*{{{*/
+
+	/*Output*/
+	Vector<IssmDouble>* pf = NULL;
+
+	/*Initialize P vector*/
+	AllocateSystemMatricesx(NULL,NULL,NULL,&pf,femmodel);
+
+	/*Create and assemble matrix*/
+	for(Object* & object : femmodel->elements->objects){
+		Element*       element = xDynamicCast<Element*>(object);
+		ElementVector* pe      = this->CreateFctPVector(element);
+		if(pe) pe->AddToGlobal(pf);
+		delete pe;
+	}
+	pf->Assemble();
+
+	/*Assign output pointer*/
+	*ppf=pf;
+}/*}}}*/
+void           MasstransportAnalysis::MassMatrix(Matrix<IssmDouble>** pMff,FemModel* femmodel){/*{{{*/
+
+	/*Initialize Mass matrix*/
+	Matrix<IssmDouble> *Mff = NULL;
+	AllocateSystemMatricesx(&Mff,NULL,NULL,NULL,femmodel);
+
+	/*Create and assemble matrix*/
+	for(Object* & object : femmodel->elements->objects){
+		Element*       element = xDynamicCast<Element*>(object);
+		ElementMatrix* MLe     = this->CreateMassMatrix(element);
+		if(MLe){
+			MLe->AddToGlobal(Mff);
+		}
+		delete MLe;
+	}
+	Mff->Assemble();
+
+	/*Assign output pointer*/
+	*pMff=Mff;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/MasstransportAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/MasstransportAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/MasstransportAnalysis.h	(revision 27955)
@@ -0,0 +1,46 @@
+/*! \file MasstransportAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _MasstransportAnalysis_
+#define _MasstransportAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class MasstransportAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementMatrix* CreateKMatrixCG(Element* element);
+		ElementMatrix* CreateKMatrixDG(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		ElementVector* CreatePVectorCG(Element* element);
+		ElementVector* CreatePVectorDG(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+
+		/*FCT*/
+		ElementMatrix* CreateFctKMatrix(Element* element);
+		ElementMatrix* CreateMassMatrix(Element* element);
+		ElementVector* CreateFctPVector(Element* element);
+		void           FctKMatrix(Matrix<IssmDouble>** pKff,Matrix<IssmDouble>** pKfs,FemModel* femmodel);
+		void				FctPVector(Vector<IssmDouble>** ppf,FemModel* femmodel);
+		void           MassMatrix(Matrix<IssmDouble>** pMff,FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/MeltingAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/MeltingAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/MeltingAnalysis.cpp	(revision 27955)
@@ -0,0 +1,138 @@
+#include "./MeltingAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void MeltingAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	/*No Constraints*/
+}/*}}}*/
+void MeltingAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*if 2d: Error*/
+	if(iomodel->domaintype==Domain2DhorizontalEnum) _error_("2d meshes not supported yet");
+
+	//create penalties for nodes: no node can have a temperature over the melting point
+	iomodel->FetchData(1,"md.mesh.vertexonbase");
+	CreateSingleNodeToElementConnectivity(iomodel);
+
+	for(int i=0;i<iomodel->numberofvertices;i++){
+		if(iomodel->my_vertices[i]){
+			if (reCast<int>(iomodel->Data("md.mesh.vertexonbase")[i])){
+				loads->AddObject(new Pengrid(i+1,i,iomodel));
+			}
+		}
+	}
+	iomodel->DeleteData(1,"md.mesh.vertexonbase");
+
+}/*}}}*/
+void MeltingAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,MeltingAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  MeltingAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void MeltingAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Now, is the model 3d? otherwise, do nothing: */
+	if(iomodel->domaintype==Domain2DhorizontalEnum)return;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	/*Create inputs: */
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.pressure",PressureEnum);
+}/*}}}*/
+void MeltingAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           MeltingAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           MeltingAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* MeltingAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* MeltingAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* MeltingAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Get basal element*/
+	if(!element->IsOnBase()) return NULL;
+	Element* basalelement = element->SpawnBasalElement();
+
+	/*Intermediaries */
+	IssmDouble  D,Jdet;
+	IssmDouble *xyz_list  = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke    = basalelement->NewElementMatrix(NoneApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	IssmDouble latentheat   = element->FindParam(MaterialsLatentheatEnum);
+	IssmDouble heatcapacity = element->FindParam(MaterialsHeatcapacityEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctions(basis,gauss);
+		D=latentheat/heatcapacity*gauss->weight*Jdet;
+
+		for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D*basis[i]*basis[j];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+ElementVector* MeltingAnalysis::CreatePVector(Element* element){/*{{{*/
+	return NULL;
+}/*}}}*/
+void           MeltingAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           MeltingAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           MeltingAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	element->InputUpdateFromSolutionOneDof(solution,BasalforcingsGroundediceMeltingRateEnum);
+}/*}}}*/
+void           MeltingAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/MeltingAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/MeltingAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/MeltingAnalysis.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file MeltingAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _MeltingAnalysis_
+#define _MeltingAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class MeltingAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/OceantransportAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/OceantransportAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/OceantransportAnalysis.cpp	(revision 27955)
@@ -0,0 +1,210 @@
+#include "./OceantransportAnalysis.h"
+#include <math.h>
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../classes/Inputs/TransientInput.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void OceantransportAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	/*No constraints*/
+}/*}}}*/
+void OceantransportAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	/*No loads*/
+}/*}}}*/
+void OceantransportAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+	::CreateNodes(nodes,iomodel,OceantransportAnalysisEnum,P1Enum);
+}/*}}}*/
+int  OceantransportAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 3;
+}/*}}}*/
+void OceantransportAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int  nature=0;
+	bool isdakota=0;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	/*Plug inputs into element:*/
+	iomodel->FetchDataToInput(inputs,elements,"md.dsl.sea_water_pressure_at_sea_floor", OceantransportSpcbottompressureEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.dsl.sea_surface_height_above_geoid",  OceantransportSpcdslEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.dsl.global_average_thermosteric_sea_level",OceantransportSpcstrEnum);
+
+	/*Resolve mmes if we not running Dakota. Otherwise, Dakota will provide a modelid, which will be use to resolve Mme, 
+	 *but it will be done in InputUpdateFromDakota:*/
+	iomodel->FetchData(&isdakota,"md.qmu.isdakota");
+	if (inputs->GetInputObjectEnum(OceantransportSpcbottompressureEnum)==DatasetInputEnum && isdakota){
+		int modelid;
+
+		/*retrieve model id: */
+		iomodel->FetchData(&modelid,"md.dsl.modelid");
+
+		/*replace dataset of forcings with only one, the modelid'th:*/
+		MmeToInputFromIdx(inputs,elements,modelid,OceantransportSpcbottompressureEnum, P1Enum);
+		MmeToInputFromIdx(inputs,elements,modelid,OceantransportSpcdslEnum, P1Enum);
+		MmeToInputFromIdx(inputs,elements,modelid,OceantransportSpcstrEnum, P0Enum);
+	}
+
+	/*Initialize sea level cumulated sea level loads :*/
+	iomodel->ConstantToInput(inputs,elements,0.,AccumulatedDeltaBottomPressureEnum,P1Enum);
+	iomodel->ConstantToInput(inputs,elements,0.,OldAccumulatedDeltaBottomPressureEnum,P1Enum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.bottompressure",BottomPressureEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.dsl",DslEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.str",StrEnum);
+
+}/*}}}*/
+void OceantransportAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int dslmodel=0;
+	int     numoutputs;
+	char**  requestedoutputs = NULL;
+
+	/*Deal with dsl multi-model ensembles: {{{*/
+	iomodel->FetchData(&dslmodel,"md.dsl.model");
+	if(dslmodel==2){
+		IssmDouble modelid; 
+		int nummodels;
+
+		/*create double param, not int param, because Dakota will be updating it as 
+		 * a double potentially: */
+		iomodel->FetchData(&modelid,"md.dsl.modelid");
+		parameters->AddObject(new DoubleParam(DslModelidEnum,modelid));
+		parameters->AddObject(iomodel->CopyConstantObject("md.dsl.nummodels",DslNummodelsEnum));
+		iomodel->FetchData(&nummodels,"md.dsl.nummodels");
+
+		/*quick checks: */
+		if(nummodels<=0)_error_("dslmme object in  md.dsl field should contain at least 1 ensemble model!");
+		if(modelid<=0 || modelid>nummodels)_error_("modelid field in dslmme object of md.dsl field should be between 1 and the number of ensemble runs!");
+	} /*}}}*/
+	/*Requested outputs {{{*/
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.solidearth.requested_outputs");
+	if(numoutputs)parameters->AddObject(new StringArrayParam(SealevelchangeRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.solidearth.requested_outputs");
+	/*}}}*/
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           OceantransportAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           OceantransportAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* OceantransportAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* OceantransportAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* OceantransportAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+ElementVector* OceantransportAnalysis::CreatePVector(Element* element){/*{{{*/
+_error_("not implemented yet");
+}/*}}}*/
+void           OceantransportAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+
+	/*retrieve bottom pressure, dsl and str from the spcs in our element:*/
+
+	IssmDouble bp,dsl,str;
+	int       *doflist = NULL;
+
+	/*Fetch number of nodes and initialize values*/
+	int         numnodes = element->GetNumberOfNodes();
+	int         numdof   = numnodes*3;
+	IssmDouble* values   = xNew<IssmDouble>(numdof);
+
+	/*Get dof list and inputs */
+	element->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	Input* bp_input=element->GetInput(OceantransportSpcbottompressureEnum); _assert_(bp_input);
+	Input* dsl_input=element->GetInput(OceantransportSpcdslEnum); _assert_(dsl_input);
+	Input* str_input=element->GetInput(OceantransportSpcstrEnum); _assert_(str_input);
+
+	/*Ok, we have the velocities in inputs, fill in solution */
+	Gauss* gauss=element->NewGauss();
+	for(int i=0;i<numnodes;i++){
+		gauss->GaussVertex(i);
+		bp_input->GetInputValue(&bp,gauss);
+		dsl_input->GetInputValue(&dsl,gauss);
+		str_input->GetInputValue(&str,gauss);
+		values[i*3+0]=bp;
+		values[i*3+1]=dsl;
+		values[i*3+2]=str;
+	}
+
+	/*Add value to global vector*/
+	solution->SetValues(numdof,doflist,values,INS_VAL);
+
+	/*Free resources:*/
+	delete gauss;
+	xDelete<int>(doflist);
+	xDelete<IssmDouble>(values);
+}/*}}}*/
+void           OceantransportAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           OceantransportAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int         i,domaintype;
+	int*        doflist=NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*3;
+
+	/*Fetch dof list and allocate solution vectors*/
+	element->GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values    = xNew<IssmDouble>(numdof);
+	IssmDouble* bp        = xNew<IssmDouble>(numnodes);
+	IssmDouble* dsl        = xNew<IssmDouble>(numnodes);
+	IssmDouble* str        = xNew<IssmDouble>(numnodes);
+	IssmDouble  strmean;
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
+
+	/*Retrieve bp,dsl and str:*/
+	strmean=0;
+	for(i=0;i<numnodes;i++){
+		bp[i]=values[i*3+0];
+		dsl[i]=values[i*3+1];
+		str[i]=values[i*3+2];
+		strmean+=str[i]/numnodes;
+
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(bp[i])) _error_("NaN found in bottom pressure solution vector");
+		if(xIsInf<IssmDouble>(bp[i])) _error_("Inf found in bottom pressure  solution vector");
+		if(xIsNan<IssmDouble>(dsl[i])) _error_("NaN found in dsl solution vector");
+		if(xIsInf<IssmDouble>(dsl[i])) _error_("Inf found in dsl solution vector");
+		if(xIsNan<IssmDouble>(str[i])) _error_("NaN found in str solution vector");
+		if(xIsInf<IssmDouble>(str[i])) _error_("Inf found in str solution vector");
+	}
+
+	/*Add bp, dsl and str as inputs to the tria element: */
+	element->AddInput(BottomPressureEnum,bp,P1Enum);
+	element->AddInput(DslEnum,dsl,P1Enum);
+	element->AddInput(StrEnum,&strmean,P0Enum); 
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(bp);
+	xDelete<IssmDouble>(str);
+	xDelete<IssmDouble>(dsl);
+	xDelete<IssmDouble>(values);
+	xDelete<int>(doflist);
+
+}/*}}}*/
+void           OceantransportAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/OceantransportAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/OceantransportAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/OceantransportAnalysis.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file OceantransportAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _OceantransportAnalysis_
+#define _OceantransportAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class OceantransportAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SamplingAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SamplingAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SamplingAnalysis.cpp	(revision 27955)
@@ -0,0 +1,470 @@
+#include "./SamplingAnalysis.h" //
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include <random>
+
+#define FINITEELEMENT P1Enum
+#define 	NUMVERTICES   3
+
+/* Reimplementation of IsFaceOnBoundary with two edges on boundary supported */
+bool IsFaceOnBoundary(Element*  element)
+{
+
+	IssmDouble values[NUMVERTICES];
+	IssmDouble sum;
+
+	/*Retrieve all inputs and parameters*/
+	element->GetInputListOnVertices(&values[0],MeshVertexonboundaryEnum);
+	sum = values[0]+values[1]+values[2];
+
+	_assert_(sum==0. || sum==1. || sum==2. || sum==3.);
+
+	if(sum>1.){
+	 	return true;
+	}
+	else{
+	 return false;
+	}
+}
+
+/*Model processing*/
+void SamplingAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
+void SamplingAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
+void SamplingAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	int finiteelement;
+	finiteelement = FINITEELEMENT;
+
+	/*Check in 2d*/
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) _error_("Only 2D horizontal domain is implemented.");
+
+	::CreateNodes(nodes,iomodel,SamplingAnalysisEnum,finiteelement);
+
+}/*}}}*/
+int  SamplingAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void SamplingAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int    finiteelement;
+
+	/*Finite element type*/
+	finiteelement = FINITEELEMENT;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+
+	/*Create inputs: */
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonboundary",MeshVertexonboundaryEnum);
+
+  iomodel->FetchDataToInput(inputs,elements,"md.sampling.kappa",SamplingKappaEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.sampling.beta",SamplingBetaEnum,0.);
+	iomodel->FetchDataToInput(inputs,elements,"md.sampling.tau",SamplingTauEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.sample",SampleEnum,0.);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.sample",SampleNoiseEnum,0.);
+	if(iomodel->solution_enum==TransientSolutionEnum) iomodel->FetchDataToInput(inputs,elements,"md.sampling.phi",SamplingPhiEnum,0.);
+
+}/*}}}*/
+void SamplingAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int     numoutputs;
+	char**  requestedoutputs = NULL;
+
+	parameters->AddObject(iomodel->CopyConstantObject("md.sampling.alpha",SamplingAlphaEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.sampling.robin",SamplingRobinEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.sampling.seed",SamplingSeedEnum));
+
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.sampling.requested_outputs");
+	parameters->AddObject(new IntParam(SamplingNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(SamplingRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.sampling.requested_outputs");
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           SamplingAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           SamplingAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* SamplingAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* SamplingAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("not implemented");
+}/*}}}*/
+ElementMatrix* SamplingAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	//if(!element->IsIceInElement()) return NULL; // Ice in element not required for sampling capability
+
+	/*Intermediaries*/
+	bool robin;
+	int      domaintype;
+
+	/*compute all stiffness matrices for this element*/
+
+	ElementMatrix* Ke = NULL;
+	element->FindParam(&robin,SamplingRobinEnum);
+
+  if(!robin) Ke=CreateKMatrixModifiedHelmholtz(element);
+  else{
+		ElementMatrix* Ke1=CreateKMatrixModifiedHelmholtz(element);
+		ElementMatrix* Ke2=CreateKMatrixRobinBC(element);
+		Ke =new ElementMatrix(Ke1,Ke2);
+
+		delete Ke1;
+		delete Ke2;
+  }
+
+	/*clean-up and return*/
+	return Ke;
+
+}/*}}}*/
+ElementMatrix* SamplingAnalysis::CreateKMatrixModifiedHelmholtz(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	//if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int dim;
+	IssmDouble  D,Jdet;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble kappa;
+
+	/*Get problem dimension*/
+	dim=2;	// Only 2D horizontal domain is implemented so far
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(dim*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input*	kappa_input=element->GetInput(SamplingKappaEnum); _assert_(kappa_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		kappa_input->GetInputValue(&kappa,gauss); _assert_(kappa>0);
+
+		D=gauss->weight*Jdet;
+
+		/* Laplacian operator */
+		for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j] += D*(dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i]);
+			}
+ 		}
+
+		/* Identity identity */
+		for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += D*kappa*kappa*(basis[j]*basis[i]);
+			}
+ 		}
+
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+
+}/*}}}*/
+ElementMatrix* SamplingAnalysis::CreateKMatrixRobinBC(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	//if(!element->IsIceInElement()) return NULL;
+
+	/*If no boundary, return NULL*/
+	if(!IsFaceOnBoundary(element)) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  D,Jdet;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble* xyz_list_boundary = NULL;
+	IssmDouble beta;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetLevelCoordinates(&xyz_list_boundary,xyz_list,MeshVertexonboundaryEnum,1.);
+	Input*	beta_input=element->GetInput(SamplingBetaEnum); _assert_(beta_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(xyz_list,xyz_list_boundary,3);
+	while(gauss->next()){
+
+		element->JacobianDeterminantSurface(&Jdet,xyz_list_boundary,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		beta_input->GetInputValue(&beta,gauss); _assert_(beta>=0);
+
+		D=gauss->weight*Jdet;
+
+		for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j] += D*beta*(basis[j]*basis[i]);
+			}
+ 		}
+
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_boundary);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return Ke;
+
+}/*}}}*/
+ElementVector* SamplingAnalysis::CreatePVector(Element* element){/*{{{*/
+	//_error_("not supported");
+	return NULL;
+}/*}}}*/
+void           SamplingAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,SampleEnum);
+}/*}}}*/
+void           SamplingAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("not supported");
+}/*}}}*/
+void           SamplingAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+    /*Fetch number of nodes and dof for this finite element*/
+    int numnodes = element->GetNumberOfNodes();
+
+		/*Fetch dof list and allocate solution vector*/
+		int* doflist=NULL;
+    element->GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+    IssmDouble* newsample = xNew<IssmDouble>(numnodes);
+		IssmDouble* tau = xNew<IssmDouble>(numnodes);
+		element->GetInputListOnNodes(&tau[0],SamplingTauEnum);
+
+    /*Use the dof list to index into the solution vector: */
+    for(int i=0;i<numnodes;i++){
+			newsample[i]=solution[doflist[i]] / tau[i]; // new
+
+			/*Check solution*/
+			if(xIsNan<IssmDouble>(newsample[i])) _error_("NaN found in solution vector");
+			if(xIsInf<IssmDouble>(newsample[i])) _error_("Inf found in solution vector");
+		}
+
+    /*Add sample inputs to the tria element: */
+    element->AddInput(SampleEnum,newsample,element->GetElementType());
+
+    /*Free resources:*/
+    xDelete<IssmDouble>(newsample);
+		xDelete<IssmDouble>(tau);
+    xDelete<int>(doflist);
+ }/*}}}*/
+void           SamplingAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+  return;
+}/*}}}*/
+
+ElementMatrix* SamplingAnalysis::CreateMassMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	//if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  D,Jdet;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Me     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		D=gauss->weight*Jdet;
+		TripleMultiply(basis,1,numnodes,1,
+					&D,1,1,0,
+					basis,1,numnodes,0,
+					&Me->values[0],1);
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return Me;
+}/*}}}*/
+void           SamplingAnalysis::LumpedKMatrix(Vector<IssmDouble>** pKlff,FemModel* femmodel){/*{{{*/
+
+	/*Initialize Lumped mass matrix (actually we just save its diagonal)*/
+	int fsize      = femmodel->nodes->NumberOfDofs(FsetEnum);
+	int flocalsize = femmodel->nodes->NumberOfDofsLocal(FsetEnum);
+	Vector<IssmDouble>* Klff = new Vector<IssmDouble>(flocalsize,fsize);
+
+	/*Create and assemble matrix*/
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element*       element = xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		ElementMatrix* KLe     = this->CreateKMatrix(element);
+		if(KLe){
+			KLe->Lump();
+			KLe->AddDiagonalToGlobal(Klff);
+		}
+		delete KLe;
+	}
+	Klff->Assemble();
+
+	/*Assign output pointer*/
+	*pKlff=Klff;
+}/*}}}*/
+void           SamplingAnalysis::KMatrix(Matrix<IssmDouble>** pKff,FemModel* femmodel){/*{{{*/
+
+	/*Initialize K matrix*/
+	Matrix<IssmDouble> *Kff = NULL;
+	AllocateSystemMatricesx(&Kff,NULL,NULL,NULL,femmodel);
+
+	/*Create and assemble matrix*/
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element*       element = xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		ElementMatrix* Ke     = this->CreateKMatrix(element);
+		if(Ke){
+			Ke->AddToGlobal(Kff);
+		}
+		delete Ke;
+	}
+	Kff->Assemble();
+
+	/*Assign output pointer*/
+	*pKff=Kff;
+
+}/*}}}*/
+void           SamplingAnalysis::LumpedMassMatrix(Vector<IssmDouble>** pMlff,FemModel* femmodel){/*{{{*/
+
+	/*Initialize Lumped mass matrix (actually we just save its diagonal)*/
+	int fsize      = femmodel->nodes->NumberOfDofs(FsetEnum);
+	int flocalsize = femmodel->nodes->NumberOfDofsLocal(FsetEnum);
+	Vector<IssmDouble>* Mlff = new Vector<IssmDouble>(flocalsize,fsize);
+
+	/*Create and assemble matrix*/
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element*       element = xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		ElementMatrix* MLe     = this->CreateMassMatrix(element);
+		if(MLe){
+			MLe->Lump();
+			MLe->AddDiagonalToGlobal(Mlff);
+		}
+		delete MLe;
+	}
+	Mlff->Assemble();
+
+	/*Assign output pointer*/
+	*pMlff=Mlff;
+}/*}}}*/
+void           SamplingAnalysis::MassMatrix(Matrix<IssmDouble>** pMff,FemModel* femmodel){/*{{{*/
+
+	/*Initialize Mass matrix*/
+	Matrix<IssmDouble> *Mff = NULL;
+	AllocateSystemMatricesx(&Mff,NULL,NULL,NULL,femmodel);
+
+	/*Create and assemble matrix*/
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element*       element = xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		ElementMatrix* MLe     = this->CreateMassMatrix(element);
+		if(MLe){
+			MLe->AddToGlobal(Mff);
+		}
+		delete MLe;
+	}
+	Mff->Assemble();
+
+	/*Assign output pointer*/
+	*pMff=Mff;
+}/*}}}*/
+void 						SamplingAnalysis::UpdateTransientSample(FemModel *	femmodel){
+
+	for(int j=0;j<femmodel->elements->Size();j++){
+			Element* element=(Element*)femmodel->elements->GetObjectByOffset(j);
+			UpdateTransientSample(element);
+	 }
+
+}
+void 						SamplingAnalysis::UpdateTransientSample(Element *  	element){
+
+	/*Intermediaries */
+	IssmDouble phi, sample, noise;
+
+	/*Fetch number vertices for this element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize new sample*/
+	IssmDouble* sample_new = xNew<IssmDouble>(numvertices);
+
+	/*Retrieve all inputs and parameters*/
+	Input*	sample_input=element->GetInput(SampleOldEnum); _assert_(sample_input);
+	Input*	noise_input=element->GetInput(SampleNoiseEnum); _assert_(noise_input);
+	Input*	phi_input=element->GetInput(SamplingPhiEnum); _assert_(phi_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss();
+  for(int iv=0;iv<numvertices;iv++){
+  	gauss->GaussVertex(iv);
+
+		/*Get input values at gauss points*/
+		sample_input->GetInputValue(&sample,gauss);
+		noise_input->GetInputValue(&noise,gauss);
+		phi_input->GetInputValue(&phi,gauss);
+
+		/*Get new sample*/
+		sample_new[iv] = phi*sample + noise;
+
+  }
+
+  element->AddInput(SampleEnum,sample_new,element->GetElementType());
+
+  /*Clean up and return*/
+  xDelete<IssmDouble>(sample_new);
+  delete gauss;
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SamplingAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SamplingAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SamplingAnalysis.h	(revision 27955)
@@ -0,0 +1,46 @@
+/*! \file SamplingAnalysis.h
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _SamplingAnalysis_
+#define _SamplingAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class SamplingAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementMatrix* CreateKMatrixModifiedHelmholtz(Element* element);
+		ElementMatrix* CreateKMatrixRobinBC(Element* element);
+		ElementMatrix* CreateMassMatrix(Element* element);
+    ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+
+		void           LumpedKMatrix(Vector<IssmDouble>** pKLff,FemModel* femmodel);
+		void           KMatrix(Matrix<IssmDouble>** pKff,FemModel* femmodel);
+		void           LumpedMassMatrix(Vector<IssmDouble>** pMLff,FemModel* femmodel);
+		void           MassMatrix(Matrix<IssmDouble>** pMff,FemModel* femmodel);
+
+		void 					UpdateTransientSample(FemModel* femmodel);
+		void 					UpdateTransientSample(Element *  	element);
+
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SealevelchangeAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SealevelchangeAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SealevelchangeAnalysis.cpp	(revision 27955)
@@ -0,0 +1,702 @@
+#include "./SealevelchangeAnalysis.h"
+#include <math.h>
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../classes/Inputs/TransientInput.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../cores/cores.h"
+
+/*Model processing*/
+void SealevelchangeAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	/*No constraints*/
+}/*}}}*/
+void SealevelchangeAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	/*No loads*/
+}/*}}}*/
+void SealevelchangeAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+	::CreateNodes(nodes,iomodel,SealevelchangeAnalysisEnum,P1Enum);
+}/*}}}*/
+void SealevelchangeAnalysis::DeleteBarystaticContributionsParam(FemModel* femmodel){/*{{{*/
+	BarystaticContributions* barycontrib=NULL;
+	GenericParam<BarystaticContributions*>* barycontribparam=NULL;
+
+	barycontribparam = xDynamicCast<GenericParam<BarystaticContributions*>*>(femmodel->parameters->FindParamObject(BarystaticContributionsEnum));
+	barycontrib=barycontribparam->GetParameterValue();
+
+	delete barycontrib;
+}/*}}}*/
+int  SealevelchangeAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void SealevelchangeAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int isexternal=0;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	/*Create inputs: */
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.bed",BedEnum);
+
+	iomodel->FetchDataToInput(inputs,elements,"md.solidearth.transfercount",CouplingTransferCountEnum);
+
+	/*external solidearthsolution: solid-Earth model*/
+	iomodel->FetchData(&isexternal,"md.solidearth.isexternal");
+
+	if(isexternal){
+		iomodel->FetchDataToInput(inputs,elements,"md.solidearth.external.displacementeast",SolidearthExternalDisplacementEastRateEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.solidearth.external.displacementnorth",SolidearthExternalDisplacementNorthRateEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.solidearth.external.displacementup",SolidearthExternalDisplacementUpRateEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.solidearth.external.geoid",SolidearthExternalGeoidRateEnum);
+
+		/*Resolve Mmes using the modelid, if necessary:*/
+		if (inputs->GetInputObjectEnum(SolidearthExternalDisplacementUpRateEnum)==DatasetInputEnum){
+			int modelid;
+
+			/*retrieve model id: */
+			iomodel->FetchData(&modelid,"md.solidearth.external.modelid");
+
+			/*replace dataset of forcings with only one, the modelid'th:*/
+			MmeToInputFromIdx(inputs,elements,modelid,SolidearthExternalDisplacementNorthRateEnum, P1Enum);
+			MmeToInputFromIdx(inputs,elements,modelid,SolidearthExternalDisplacementEastRateEnum, P1Enum);
+			MmeToInputFromIdx(inputs,elements,modelid,SolidearthExternalDisplacementUpRateEnum, P1Enum);
+			MmeToInputFromIdx(inputs,elements,modelid,SolidearthExternalGeoidRateEnum, P1Enum);
+		}
+	}
+
+	/*Initialize solid earth motion and sea level: */
+	iomodel->ConstantToInput(inputs,elements,0.,BedEastEnum,P1Enum);
+	iomodel->ConstantToInput(inputs,elements,0.,BedNorthEnum,P1Enum);
+    iomodel->FetchDataToInput(inputs,elements,"md.initialization.sealevel",SealevelEnum);
+
+	/*Initialize loads:*/
+	iomodel->ConstantToInput(inputs,elements,0.,DeltaTwsEnum,P1Enum);
+	iomodel->ConstantToInput(inputs,elements,0.,DeltaIceThicknessEnum,P1Enum);
+	iomodel->ConstantToInput(inputs,elements,0.,DeltaBottomPressureEnum,P1Enum);
+
+}/*}}}*/
+void SealevelchangeAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int         nl;
+	int         ntimesteps;
+	IssmDouble* love_h=NULL;
+	IssmDouble* love_k=NULL;
+	IssmDouble* love_l=NULL;
+	IssmDouble* love_th=NULL;
+	IssmDouble* love_tk=NULL;
+	IssmDouble* love_tl=NULL;
+	IssmDouble* love_pmtf_colinear=NULL;
+	IssmDouble* love_pmtf_ortho=NULL;
+	IssmDouble* love_timefreq=NULL;
+	bool        love_istime=true;
+	int         externalnature=0;
+	int         isexternal=0;
+
+	IssmDouble* G_gravi = NULL;
+	IssmDouble* G_gravi_local = NULL;
+	IssmDouble* G_viscoelastic = NULL;
+	IssmDouble* G_viscoelastic_interpolated = NULL;
+	IssmDouble* G_viscoelastic_local = NULL;
+	IssmDouble* U_viscoelastic = NULL;
+	IssmDouble* U_viscoelastic_interpolated = NULL;
+	IssmDouble* U_viscoelastic_local = NULL;
+	IssmDouble* H_viscoelastic = NULL;
+	IssmDouble* H_viscoelastic_interpolated= NULL;
+	IssmDouble* H_viscoelastic_local = NULL;
+	IssmDouble* Pmtf_col_interpolated = NULL;
+	IssmDouble* Pmtf_ortho_interpolated = NULL;
+	IssmDouble* Pmtf_z_interpolated = NULL;
+	IssmDouble* Love_th2_interpolated = NULL;
+	IssmDouble* Love_tk2_interpolated = NULL;
+	IssmDouble* Love_tl2_interpolated = NULL;
+
+	int         M,m,lower_row,upper_row;
+	IssmDouble  degacc=.01;
+	IssmDouble  timeacc;
+	IssmDouble  planetradius=0;
+	IssmDouble  planetarea=0;
+	IssmDouble  constant=0;
+	IssmDouble  rho_earth;
+	int		isgrd=0;
+	bool		selfattraction=false;
+	bool		elastic=false;
+	bool		viscous=false;
+	bool		rotation=false;
+	int         ndeg;
+	int         horiz;
+
+	bool istime=true;
+	IssmDouble start_time,final_time;
+	int  nt,precomputednt;
+
+	int     numoutputs;
+	char**  requestedoutputs = NULL;
+	int* recvcounts = NULL;
+	int* displs=NULL;
+
+	/*transition vectors: */
+	IssmDouble **transitions    = NULL;
+	int         *transitions_M    = NULL;
+	int         *transitions_N    = NULL;
+	int          ntransitions;
+	IssmDouble*  partitionice=NULL;
+	IssmDouble*  partitionhydro=NULL;
+	IssmDouble*  partitionocean=NULL;
+	IssmDouble*  bslcice_partition=NULL;
+	IssmDouble*  bslchydro_partition=NULL;
+	IssmDouble*  bslcocean_partition=NULL;
+	int          npartice,nparthydro,npartocean,nel;
+	int          grdmodel;
+
+	/*some constant parameters: */
+	parameters->AddObject(iomodel->CopyConstantObject("md.dsl.model",DslModelEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.isexternal",SolidearthIsExternalEnum));
+	iomodel->FetchData(&isexternal,"md.solidearth.isexternal");
+	if(isexternal) parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.external.nature",SolidearthExternalNatureEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.runfrequency",SolidearthSettingsRunFrequencyEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.degacc",SolidearthSettingsDegreeAccuracyEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.reltol",SolidearthSettingsReltolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.abstol",SolidearthSettingsAbstolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.maxiter",SolidearthSettingsMaxiterEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.selfattraction",SolidearthSettingsSelfAttractionEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.horiz",SolidearthSettingsHorizEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.elastic",SolidearthSettingsElasticEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.viscous",SolidearthSettingsViscousEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.rotation",SolidearthSettingsRotationEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.rotational.equatorialmoi",RotationalEquatorialMoiEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.rotational.polarmoi",RotationalPolarMoiEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.rotational.angularvelocity",RotationalAngularVelocityEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.grdocean",SolidearthSettingsGrdOceanEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.ocean_area_scaling",SolidearthSettingsOceanAreaScalingEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.sealevelloading",SolidearthSettingsSealevelLoadingEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.isgrd",SolidearthSettingsGRDEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.compute_bp_grd",SolidearthSettingsComputeBpGrdEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.planetradius",SolidearthPlanetRadiusEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.cross_section_shape",SolidearthSettingsCrossSectionShapeEnum));
+
+	parameters->AddObject(new DoubleParam(CumBslcEnum,0.0));
+	parameters->AddObject(new DoubleParam(CumBslcIceEnum,0.0));
+	parameters->AddObject(new DoubleParam(CumBslcHydroEnum,0.0));
+	parameters->AddObject(new DoubleParam(CumGmtslcEnum,0.0));
+	/*compute planet area and plug into parameters:*/
+	iomodel->FetchData(&planetradius,"md.solidearth.planetradius");
+	iomodel->FetchData(&rho_earth,"md.materials.earth_density");
+	planetarea=4*M_PI*planetradius*planetradius;
+	parameters->AddObject(new DoubleParam(SolidearthPlanetAreaEnum,planetarea));
+
+	/*Deal with partition of the barystatic contribution:*/
+	iomodel->FetchData(&npartice,"md.solidearth.npartice");
+	parameters->AddObject(new IntParam(SolidearthNpartIceEnum,npartice));
+	if(npartice){
+		iomodel->FetchData(&partitionice,&nel,NULL,"md.solidearth.partitionice");
+		parameters->AddObject(new DoubleMatParam(SolidearthPartitionIceEnum,partitionice,nel,1));
+		parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.npartice",SolidearthNpartIceEnum));
+		bslcice_partition=xNewZeroInit<IssmDouble>(npartice);
+		parameters->AddObject(new DoubleMatParam(CumBslcIcePartitionEnum,bslcice_partition,npartice,1));
+		xDelete<IssmDouble>(partitionice);
+	}
+
+	iomodel->FetchData(&nparthydro,"md.solidearth.nparthydro");
+	parameters->AddObject(new IntParam(SolidearthNpartHydroEnum,nparthydro));
+	if(nparthydro){
+		iomodel->FetchData(&partitionhydro,&nel,NULL,"md.solidearth.partitionhydro");
+		parameters->AddObject(new DoubleMatParam(SolidearthPartitionHydroEnum,partitionhydro,nel,1));
+		parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.nparthydro",SolidearthNpartHydroEnum));
+		bslchydro_partition=xNewZeroInit<IssmDouble>(nparthydro);
+		parameters->AddObject(new DoubleMatParam(CumBslcHydroPartitionEnum,bslchydro_partition,nparthydro,1));
+		xDelete<IssmDouble>(partitionhydro);
+	}
+
+	iomodel->FetchData(&npartocean,"md.solidearth.npartocean");
+	parameters->AddObject(new IntParam(SolidearthNpartOceanEnum,npartocean));
+	if(npartocean){
+		iomodel->FetchData(&partitionocean,&nel,NULL,"md.solidearth.partitionocean");
+		parameters->AddObject(new DoubleMatParam(SolidearthPartitionOceanEnum,partitionocean,nel,1));
+		parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.npartocean",SolidearthNpartOceanEnum));
+		bslcocean_partition=xNewZeroInit<IssmDouble>(npartocean);
+		parameters->AddObject(new DoubleMatParam(CumBslcOceanPartitionEnum,bslcocean_partition,npartocean,1));
+		xDelete<IssmDouble>(partitionocean);
+	}
+	/*New optimized code:*/
+	ToolkitsOptionsFromAnalysis(parameters,SealevelchangeAnalysisEnum); //this is requested by the BarystaticContributions class inner vectors.
+	BarystaticContributions* barystaticcontributions=new BarystaticContributions(iomodel);
+	parameters->AddObject(new GenericParam<BarystaticContributions*>(barystaticcontributions,BarystaticContributionsEnum));
+
+	/*Deal with external multi-model ensembles: {{{*/
+	if(isexternal){
+		iomodel->FetchData(&externalnature,"md.solidearth.external.nature");
+		if(externalnature>=3){
+			IssmDouble modelid; 
+			int nummodels;
+
+			/*create double param, not int param, because Dakota will be updating it as a double potentially: */
+			iomodel->FetchData(&modelid,"md.solidearth.external.modelid");
+			parameters->AddObject(new DoubleParam(SolidearthExternalModelidEnum,modelid));
+			parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.external.nummodels",SolidearthExternalNummodelsEnum));
+			iomodel->FetchData(&nummodels,"md.solidearth.external.nummodels");
+
+			/*quick checks: */
+			if(nummodels<=0)_error_("mme solidearth solution object in  md.solidearth.external field should contain at least 1 ensemble model!");
+			if(modelid<=0 || modelid>nummodels)_error_("modelid field in md.solidearth.external field should be between 1 and the number of ensemble runs!");
+		} /*}}}*/
+	}
+
+	parameters->FindParam(&grdmodel,GrdModelEnum);
+	parameters->FindParam(&isgrd,SolidearthSettingsGRDEnum);
+	if(grdmodel==ElasticEnum && isgrd){
+		/*Deal with elasticity {{{*/
+		iomodel->FetchData(&selfattraction,"md.solidearth.settings.selfattraction");
+		iomodel->FetchData(&elastic,"md.solidearth.settings.elastic");
+		iomodel->FetchData(&viscous,"md.solidearth.settings.viscous");
+		iomodel->FetchData(&rotation,"md.solidearth.settings.rotation");
+		iomodel->FetchData(&horiz,"md.solidearth.settings.horiz");
+
+		if(selfattraction){
+			/*compute green functions for a range of angles*/
+			iomodel->FetchData(&degacc,"md.solidearth.settings.degacc");
+			M=reCast<int,IssmDouble>(180./degacc+1.);
+		}
+
+		//default values
+		nt=1;
+		ntimesteps=1;
+		/*love numbers: */
+		if(viscous || elastic){
+			int dummy;
+
+			iomodel->FetchData(&timeacc,"md.solidearth.settings.timeacc");
+			iomodel->FetchData(&start_time,"md.timestepping.start_time");
+			iomodel->FetchData(&final_time,"md.timestepping.final_time");
+			iomodel->FetchData(&love_istime,"md.solidearth.lovenumbers.istime");
+			iomodel->FetchData(&love_timefreq,&precomputednt,&dummy,"md.solidearth.lovenumbers.timefreq");
+			iomodel->FetchData(&love_h,&ndeg,&precomputednt,"md.solidearth.lovenumbers.h");
+			iomodel->FetchData(&love_k,&ndeg,&precomputednt,"md.solidearth.lovenumbers.k");
+			iomodel->FetchData(&love_l,&ndeg,&precomputednt,"md.solidearth.lovenumbers.l");
+
+			parameters->AddObject(new DoubleParam(SolidearthSettingsTimeAccEnum,timeacc));
+			//parameters->AddObject(new DoubleMatParam(LoadLoveHEnum,love_h,ndeg,precomputednt));
+			//parameters->AddObject(new DoubleMatParam(LoadLoveKEnum,love_k,ndeg,precomputednt));
+			//parameters->AddObject(new DoubleMatParam(LoadLoveLEnum,love_l,ndeg,precomputednt));
+
+			if (rotation){
+				iomodel->FetchData(&love_th,&ndeg,&precomputednt,"md.solidearth.lovenumbers.th");
+				iomodel->FetchData(&love_tk,&ndeg,&precomputednt,"md.solidearth.lovenumbers.tk");
+				iomodel->FetchData(&love_tl,&ndeg,&precomputednt,"md.solidearth.lovenumbers.tl");
+				iomodel->FetchData(&love_pmtf_colinear,&dummy,&precomputednt,"md.solidearth.lovenumbers.pmtf_colinear");
+				iomodel->FetchData(&love_pmtf_ortho,&dummy,&precomputednt,"md.solidearth.lovenumbers.pmtf_ortho");
+
+				parameters->AddObject(new DoubleMatParam(LovePolarMotionTransferFunctionColinearEnum,love_pmtf_colinear,1,precomputednt));
+				parameters->AddObject(new DoubleMatParam(LovePolarMotionTransferFunctionOrthogonalEnum,love_pmtf_ortho,1,precomputednt));
+				//parameters->AddObject(new DoubleMatParam(TidalLoveHEnum,love_th,ndeg,precomputednt));
+				//parameters->AddObject(new DoubleMatParam(TidalLoveKEnum,love_tk,ndeg,precomputednt));
+				//parameters->AddObject(new DoubleMatParam(TidalLoveLEnum,love_tl,ndeg,precomputednt));
+			}
+
+			parameters->AddObject(new DoubleMatParam(LoveTimeFreqEnum,love_timefreq,precomputednt,1));
+			parameters->AddObject(new BoolParam(LoveIsTimeEnum,love_istime));
+
+			// AD performance is sensitive to calls to ensurecontiguous.
+			// // Providing "t" will cause ensurecontiguous to be called.
+			if(viscous){
+				IssmDouble* viscoustimes=NULL;
+				ntimesteps=precomputednt; 
+				nt=reCast<int,IssmDouble>((final_time-start_time)/timeacc)+1;
+
+				parameters->AddObject(new IntParam(SealevelchangeViscousNumStepsEnum,nt));
+				/*Initialize viscous stack times:*/
+				viscoustimes=xNew<IssmDouble>(nt);
+				for(int t=0;t<nt;t++){
+					viscoustimes[t]=start_time+timeacc*t;
+				}
+				parameters->AddObject(new DoubleVecParam(SealevelchangeViscousTimesEnum,viscoustimes,nt));
+				parameters->AddObject(new IntParam(SealevelchangeViscousIndexEnum,0));
+				xDelete<IssmDouble>(viscoustimes);
+				if (rotation){
+					IssmDouble* viscouspolarmotion=NULL;
+					viscouspolarmotion=xNewZeroInit<IssmDouble>(3*nt);
+					parameters->AddObject(new DoubleMatParam(SealevelchangeViscousPolarMotionEnum,viscouspolarmotion,3,nt));
+					xDelete<IssmDouble>(viscouspolarmotion);
+				}
+			}
+#ifdef _HAVE_AD_
+			U_viscoelastic=xNew<IssmDouble>(M*ntimesteps,"t");
+			if(horiz)H_viscoelastic=xNew<IssmDouble>(M*ntimesteps,"t");
+#else
+			U_viscoelastic=xNew<IssmDouble>(M*ntimesteps);
+			if(horiz)H_viscoelastic=xNew<IssmDouble>(M*ntimesteps);
+#endif
+		}
+		if(selfattraction){
+			/*compute combined legendre + love number (elastic green function):*/
+			m=DetermineLocalSize(M,IssmComm::GetComm());
+			GetOwnershipBoundariesFromRange(&lower_row,&upper_row,m,IssmComm::GetComm());
+#ifdef _HAVE_AD_
+			G_gravi=xNew<IssmDouble>(M,"t");
+			G_gravi_local=xNew<IssmDouble>(m,"t");
+			G_viscoelastic=xNew<IssmDouble>(M*ntimesteps,"t");
+			G_viscoelastic_local=xNew<IssmDouble>(m*ntimesteps,"t");
+#else
+			G_gravi=xNew<IssmDouble>(M);
+			G_gravi_local=xNew<IssmDouble>(m);
+			G_viscoelastic=xNew<IssmDouble>(M*ntimesteps);
+			G_viscoelastic_local=xNew<IssmDouble>(m*ntimesteps);
+#endif
+		}
+		if(viscous | elastic){
+#ifdef _HAVE_AD_
+			U_viscoelastic_local=xNew<IssmDouble>(m*ntimesteps,"t");
+			if(horiz)H_viscoelastic_local=xNew<IssmDouble>(m*ntimesteps,"t");
+#else
+			U_viscoelastic_local=xNew<IssmDouble>(m*ntimesteps);
+			if(horiz)H_viscoelastic_local=xNew<IssmDouble>(m*ntimesteps);
+#endif
+		}
+
+		if(rotation) parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.lovenumbers.tk2secular",TidalLoveK2SecularEnum));
+		constant=3/rho_earth/planetarea;
+		if(selfattraction){
+			for(int i=lower_row;i<upper_row;i++){
+				IssmDouble alpha,x;
+				alpha= reCast<IssmDouble>(i)*degacc * M_PI / 180.0;
+				G_gravi_local[i-lower_row]= constant*.5/sin(alpha/2.0);
+			}
+			if(viscous | elastic){
+				for(int i=lower_row;i<upper_row;i++){
+					IssmDouble alpha,x;
+					alpha= reCast<IssmDouble>(i)*degacc * M_PI / 180.0;
+
+					for(int t=0;t<ntimesteps;t++){
+						G_viscoelastic_local[(i-lower_row)*ntimesteps+t]= (1.0+love_k[(ndeg-1)*precomputednt+t]-love_h[(ndeg-1)*precomputednt+t])*G_gravi_local[i-lower_row];
+						U_viscoelastic_local[(i-lower_row)*ntimesteps+t]= (love_h[(ndeg-1)*precomputednt+t])*G_gravi_local[i-lower_row];
+						if(horiz)H_viscoelastic_local[(i-lower_row)*ntimesteps+t]= 0; 
+					}
+
+					IssmDouble Pn = 0.; 
+					IssmDouble Pn1 = 0.; 
+					IssmDouble Pn2 = 0.; 
+					IssmDouble Pn_p = 0.; 
+					IssmDouble Pn_p1 = 0.; 
+					IssmDouble Pn_p2 = 0.; 
+
+					for (int n=0;n<ndeg;n++) {
+
+						/*compute legendre polynomials: P_n(cos\theta) & d P_n(cos\theta)/ d\theta: */
+						if(n==0){
+							Pn=1; 
+							Pn_p=0; 
+						}
+						else if(n==1){ 
+							Pn = cos(alpha); 
+							Pn_p = 1; 
+						}
+						else{
+							Pn = ( (2*n-1)*cos(alpha)*Pn1 - (n-1)*Pn2 ) /n;
+							Pn_p = ( (2*n-1)*(Pn1+cos(alpha)*Pn_p1) - (n-1)*Pn_p2 ) /n;
+						}
+						Pn2=Pn1; Pn1=Pn;
+						Pn_p2=Pn_p1; Pn_p1=Pn_p;
+
+						for(int t=0;t<ntimesteps;t++){
+							IssmDouble deltalove_G;
+							IssmDouble deltalove_U;
+
+							deltalove_G = (love_k[n*precomputednt+t]-love_k[(ndeg-1)*precomputednt+t]-love_h[n*precomputednt+t]+love_h[(ndeg-1)*precomputednt+t]);
+							deltalove_U = (love_h[n*precomputednt+t]-love_h[(ndeg-1)*precomputednt+t]);
+
+							G_viscoelastic_local[(i-lower_row)*ntimesteps+t] += constant*deltalove_G*Pn;		                // gravitational potential 
+							U_viscoelastic_local[(i-lower_row)*ntimesteps+t] += constant*deltalove_U*Pn;		                // vertical (up) displacement 
+							if(horiz)H_viscoelastic_local[(i-lower_row)*ntimesteps+t] += constant*sin(alpha)*love_l[n*precomputednt+t]*Pn_p;		// horizontal displacements 
+						}
+					}
+				}
+			}
+			else { //just copy G_gravi into G_viscoelastic
+				for(int i=lower_row;i<upper_row;i++){
+					for(int t=0;t<ntimesteps;t++){
+						G_viscoelastic_local[(i-lower_row)*ntimesteps+t]= G_gravi_local[i-lower_row];
+					}
+				}
+			}
+			/*merge G_viscoelastic_local into G_viscoelastic; U_viscoelastic_local into U_viscoelastic; H_viscoelastic_local to H_viscoelastic:{{{*/
+			recvcounts=xNew<int>(IssmComm::GetSize());
+			displs=xNew<int>(IssmComm::GetSize());
+			int  rc;
+			int  offset;
+
+			//deal with selfattraction first: 
+			ISSM_MPI_Allgather(&m,1,ISSM_MPI_INT,recvcounts,1,ISSM_MPI_INT,IssmComm::GetComm());
+			/*displs: */
+			ISSM_MPI_Allgather(&lower_row,1,ISSM_MPI_INT,displs,1,ISSM_MPI_INT,IssmComm::GetComm());
+			/*All gather:*/
+			ISSM_MPI_Allgatherv(G_gravi_local, m, ISSM_MPI_DOUBLE, G_gravi, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+
+			rc=m*ntimesteps;
+			offset=lower_row*ntimesteps;
+			ISSM_MPI_Allgather(&rc,1,ISSM_MPI_INT,recvcounts,1,ISSM_MPI_INT,IssmComm::GetComm());
+			ISSM_MPI_Allgather(&offset,1,ISSM_MPI_INT,displs,1,ISSM_MPI_INT,IssmComm::GetComm());
+			ISSM_MPI_Allgatherv(G_viscoelastic_local, m*ntimesteps, ISSM_MPI_DOUBLE, G_viscoelastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+			if(elastic){
+				ISSM_MPI_Allgatherv(U_viscoelastic_local, m*ntimesteps, ISSM_MPI_DOUBLE, U_viscoelastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+				if(horiz)ISSM_MPI_Allgatherv(H_viscoelastic_local, m*ntimesteps, ISSM_MPI_DOUBLE, H_viscoelastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+			}
+
+			/*free resources: */
+			xDelete<int>(recvcounts);
+			xDelete<int>(displs);
+
+			/*Avoid singularity at 0: */
+			G_gravi[0]=G_gravi[1];
+			for(int t=0;t<ntimesteps;t++){
+				G_viscoelastic[t]=G_viscoelastic[ntimesteps+t];
+			}
+			if(elastic){
+				for(int t=0;t<ntimesteps;t++){
+					U_viscoelastic[t]=U_viscoelastic[ntimesteps+t];
+					if(horiz)H_viscoelastic[t]=H_viscoelastic[ntimesteps+t];
+				}
+			}
+
+			/*Reinterpolate viscoelastic green kernels onto a regular gridded time 
+			 *with steps equal to timeacc:*/
+			if(viscous){
+				nt=reCast<int,IssmDouble>((final_time-start_time)/timeacc)+1;
+#ifdef _HAVE_AD_
+				G_viscoelastic_interpolated=xNew<IssmDouble>(M*nt,"t");
+				U_viscoelastic_interpolated=xNew<IssmDouble>(M*nt,"t");
+				if(horiz) H_viscoelastic_interpolated=xNew<IssmDouble>(M*nt,"t");
+				if(rotation){
+					Pmtf_col_interpolated=xNew<IssmDouble>(nt,"t");
+					Pmtf_ortho_interpolated=xNew<IssmDouble>(nt,"t");
+					Pmtf_z_interpolated=xNew<IssmDouble>(nt,"t");
+					Love_tk2_interpolated=xNew<IssmDouble>(nt,"t");
+					Love_th2_interpolated=xNew<IssmDouble>(nt,"t");
+					if (horiz) Love_tl2_interpolated=xNew<IssmDouble>(nt,"t");
+				}
+#else
+				G_viscoelastic_interpolated=xNew<IssmDouble>(M*nt);
+				U_viscoelastic_interpolated=xNew<IssmDouble>(M*nt);
+				if(horiz) H_viscoelastic_interpolated=xNew<IssmDouble>(M*nt);
+				if(rotation){
+					Pmtf_col_interpolated=xNew<IssmDouble>(nt);
+					Pmtf_ortho_interpolated=xNew<IssmDouble>(nt);
+					Pmtf_z_interpolated=xNew<IssmDouble>(nt);
+					Love_tk2_interpolated=xNew<IssmDouble>(nt);
+					Love_th2_interpolated=xNew<IssmDouble>(nt);
+					if (horiz) Love_tl2_interpolated=xNew<IssmDouble>(nt);
+				}
+#endif
+				for(int t=0;t<nt;t++){
+					IssmDouble lincoeff;
+					IssmDouble viscoelastic_time=t*timeacc;
+					int        timeindex2=-1;
+					/*Find a way to interpolate precomputed Gkernels to our solution time stepping:*/
+					if(t!=0){
+						for(int t2=0;t2<ntimesteps;t2++){
+							if (viscoelastic_time<love_timefreq[t2]){
+								timeindex2=t2-1;
+								if(timeindex2<0)_error_("Temporal Love numbers are computed  with a time accuracy superior to the requested solution time step!");
+								lincoeff=(viscoelastic_time-love_timefreq[t2-1])/(love_timefreq[t2]-love_timefreq[t2-1]);
+								break;
+							}
+						}
+						if(timeindex2==-1)_error_("Temporal love numbers should be extended in time to encompass the requested solution time interval!");
+					}
+					else{
+						timeindex2=0;
+						lincoeff=0;
+					}
+
+					for(int index=0;index<M;index++){
+						int timeindex=index*nt+t;
+						int timepreindex= index*ntimesteps+timeindex2;
+						G_viscoelastic_interpolated[timeindex]=(1-lincoeff)*G_viscoelastic[timepreindex]+lincoeff*G_viscoelastic[timepreindex+1];
+						U_viscoelastic_interpolated[timeindex]=(1-lincoeff)*U_viscoelastic[timepreindex]+lincoeff*U_viscoelastic[timepreindex+1];
+						if(horiz)H_viscoelastic_interpolated[timeindex]=(1-lincoeff)*H_viscoelastic[timepreindex]+lincoeff*H_viscoelastic[timepreindex+1];
+					}
+
+					if(rotation){
+						int timepreindex= 2*precomputednt+timeindex2;
+						Pmtf_col_interpolated[t]=(1.0-lincoeff)*love_pmtf_colinear[timeindex2]+lincoeff*love_pmtf_colinear[timeindex2+1];
+						Pmtf_ortho_interpolated[t]=(1.0-lincoeff)*love_pmtf_ortho[timeindex2]+lincoeff*love_pmtf_ortho[timeindex2+1];
+						Pmtf_z_interpolated[t]=1.0+(1.0-lincoeff)*love_k[timepreindex]+lincoeff*love_k[timepreindex+1];
+						Love_tk2_interpolated[t]=(1.0-lincoeff)*love_tk[timepreindex]+lincoeff*love_tk[timepreindex+1];
+						Love_th2_interpolated[t]=(1.0-lincoeff)*love_th[timepreindex]+lincoeff*love_th[timepreindex+1];
+						if (horiz) Love_tl2_interpolated[t]=(1.0-lincoeff)*love_tl[timepreindex]+lincoeff*love_tl[timepreindex+1];
+					}
+				}
+			}
+			else {
+
+				nt=1; //in elastic, or if we run only selfattraction, we need only one step
+#ifdef _HAVE_AD_
+				G_viscoelastic_interpolated=xNew<IssmDouble>(M,"t");
+#else
+				G_viscoelastic_interpolated=xNew<IssmDouble>(M);
+#endif
+				xMemCpy<IssmDouble>(G_viscoelastic_interpolated,G_viscoelastic,M);
+
+				if(elastic){
+#ifdef _HAVE_AD_
+					U_viscoelastic_interpolated=xNew<IssmDouble>(M,"t");
+					if (horiz) H_viscoelastic_interpolated=xNew<IssmDouble>(M,"t");
+#else
+					U_viscoelastic_interpolated=xNew<IssmDouble>(M);
+					if (horiz) H_viscoelastic_interpolated=xNew<IssmDouble>(M);
+#endif
+					xMemCpy<IssmDouble>(U_viscoelastic_interpolated,U_viscoelastic,M);
+					if (horiz) xMemCpy<IssmDouble>(H_viscoelastic_interpolated,H_viscoelastic,M);
+
+					if(rotation){ //if this cpu handles degree 2
+#ifdef _HAVE_AD_
+						Pmtf_col_interpolated=xNew<IssmDouble>(1,"t");
+						Pmtf_ortho_interpolated=xNew<IssmDouble>(1,"t");
+						Pmtf_z_interpolated=xNew<IssmDouble>(1,"t");
+						Love_tk2_interpolated=xNew<IssmDouble>(1,"t");
+						Love_th2_interpolated=xNew<IssmDouble>(1,"t");
+						if (horiz) Love_tl2_interpolated=xNew<IssmDouble>(1,"t");
+#else
+						Pmtf_col_interpolated=xNew<IssmDouble>(1);
+						Pmtf_ortho_interpolated=xNew<IssmDouble>(1);
+						Pmtf_z_interpolated=xNew<IssmDouble>(1);
+						Love_tk2_interpolated=xNew<IssmDouble>(1);
+						Love_th2_interpolated=xNew<IssmDouble>(1);
+						if (horiz) Love_tl2_interpolated=xNew<IssmDouble>(1);
+#endif
+
+						Pmtf_col_interpolated[0]=love_pmtf_colinear[0];
+						Pmtf_ortho_interpolated[0]=love_pmtf_ortho[0];
+						Pmtf_z_interpolated[0]=1.0+love_k[2];
+						Love_tk2_interpolated[0]=love_tk[2];
+						Love_th2_interpolated[0]=love_th[2];
+						if (horiz) Love_tl2_interpolated[0]=love_tl[2];
+					}
+
+				}
+			}	
+			/*Save our precomputed tables into parameters*/
+			parameters->AddObject(new DoubleVecParam(SealevelchangeGSelfAttractionEnum,G_gravi,M));
+			parameters->AddObject(new DoubleVecParam(SealevelchangeGViscoElasticEnum,G_viscoelastic_interpolated,M*nt));
+			if(viscous || elastic){
+				parameters->AddObject(new DoubleVecParam(SealevelchangeUViscoElasticEnum,U_viscoelastic_interpolated,M*nt));
+				if(horiz)parameters->AddObject(new DoubleVecParam(SealevelchangeHViscoElasticEnum,H_viscoelastic_interpolated,M*nt));
+				if(rotation){
+					parameters->AddObject(new DoubleVecParam(SealevelchangePolarMotionTransferFunctionColinearEnum,Pmtf_col_interpolated,nt));
+					parameters->AddObject(new DoubleVecParam(SealevelchangePolarMotionTransferFunctionOrthogonalEnum,Pmtf_ortho_interpolated,nt));
+					parameters->AddObject(new DoubleVecParam(SealevelchangePolarMotionTransferFunctionZEnum,Pmtf_z_interpolated,nt));
+					parameters->AddObject(new DoubleVecParam(SealevelchangeTidalH2Enum,Love_th2_interpolated,nt));
+					parameters->AddObject(new DoubleVecParam(SealevelchangeTidalK2Enum,Love_tk2_interpolated,nt));
+					if (horiz) parameters->AddObject(new DoubleVecParam(SealevelchangeTidalL2Enum,Love_tl2_interpolated,nt));
+				}
+			}
+			/*free resources: */
+			xDelete<IssmDouble>(G_gravi);
+			xDelete<IssmDouble>(G_gravi_local);
+			xDelete<IssmDouble>(G_viscoelastic);
+			xDelete<IssmDouble>(G_viscoelastic_local);
+			xDelete<IssmDouble>(G_viscoelastic_interpolated);
+			if(elastic){
+				xDelete<IssmDouble>(love_timefreq);
+				xDelete<IssmDouble>(love_h);
+				xDelete<IssmDouble>(love_k);
+				xDelete<IssmDouble>(love_l);
+				xDelete<IssmDouble>(love_th);
+				xDelete<IssmDouble>(love_tk);
+				xDelete<IssmDouble>(love_tl);
+
+				xDelete<IssmDouble>(G_viscoelastic_interpolated);
+				xDelete<IssmDouble>(U_viscoelastic);
+				xDelete<IssmDouble>(U_viscoelastic_interpolated);
+				xDelete<IssmDouble>(U_viscoelastic_local);
+				xDelete<IssmDouble>(U_viscoelastic_interpolated);
+				if(horiz){
+					xDelete<IssmDouble>(H_viscoelastic);
+					xDelete<IssmDouble>(H_viscoelastic_interpolated);
+					xDelete<IssmDouble>(H_viscoelastic_local);
+					xDelete<IssmDouble>(H_viscoelastic_interpolated);
+				}
+				if(rotation){
+					xDelete<IssmDouble>(love_pmtf_colinear);
+					xDelete<IssmDouble>(love_pmtf_ortho);
+					xDelete<IssmDouble>(Pmtf_col_interpolated);
+					xDelete<IssmDouble>(Pmtf_ortho_interpolated);
+					xDelete<IssmDouble>(Pmtf_z_interpolated);
+					xDelete<IssmDouble>(Love_tk2_interpolated);
+					xDelete<IssmDouble>(Love_th2_interpolated);
+					if (horiz) xDelete<IssmDouble>(Love_tl2_interpolated);
+				}
+			}
+		} /*}}}*/
+
+		/*Indicate we have not yet run the Geometry Core module: */
+		parameters->AddObject(new BoolParam(SealevelchangeGeometryDoneEnum,false));
+		/*}}}*/
+	}
+
+	/*Transitions:{{{ */
+	iomodel->FetchData(&transitions,&transitions_M,&transitions_N,&ntransitions,"md.solidearth.transitions");
+	if(transitions){
+		parameters->AddObject(new DoubleMatArrayParam(SealevelchangeTransitionsEnum,transitions,ntransitions,transitions_M,transitions_N));
+
+		for(int i=0;i<ntransitions;i++){
+			IssmDouble* transition=transitions[i];
+			xDelete<IssmDouble>(transition);
+		}
+		xDelete<IssmDouble*>(transitions);
+		xDelete<int>(transitions_M);
+		xDelete<int>(transitions_N);
+	} /*}}}*/
+	/*Requested outputs {{{*/
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.solidearth.requested_outputs");
+	if(numoutputs)parameters->AddObject(new StringArrayParam(SealevelchangeRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.solidearth.requested_outputs");
+	/*}}}*/
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           SealevelchangeAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           SealevelchangeAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+
+	/*run sea level change core geometry only once, after the Model Processor is done:*/
+	sealevelchange_initialgeometry(femmodel);
+
+}/*}}}*/
+ElementVector* SealevelchangeAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* SealevelchangeAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* SealevelchangeAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+ElementVector* SealevelchangeAnalysis::CreatePVector(Element* element){/*{{{*/
+_error_("not implemented yet");
+}/*}}}*/
+void           SealevelchangeAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           SealevelchangeAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           SealevelchangeAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	_error_("not implemeneted yet!");
+
+}/*}}}*/
+void           SealevelchangeAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SealevelchangeAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SealevelchangeAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SealevelchangeAnalysis.h	(revision 27955)
@@ -0,0 +1,35 @@
+/*! \file SealevelchangeAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _SealevelchangeAnalysis_
+#define _SealevelchangeAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class SealevelchangeAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		static void DeleteBarystaticContributionsParam(FemModel* femmodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SmbAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SmbAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SmbAnalysis.cpp	(revision 27955)
@@ -0,0 +1,625 @@
+#include "./SmbAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+// FIX
+#include "./shared/io/Print/Print.h"
+
+/*Model processing*/
+void SmbAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	/*No constraints*/
+}/*}}}*/
+void SmbAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	/*No loads*/
+}/*}}}*/
+void SmbAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+	::CreateNodes(nodes,iomodel,SmbAnalysisEnum,P1Enum);
+}/*}}}*/
+int  SmbAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void SmbAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int    smb_model;
+	bool   isdelta18o,ismungsm,isd18opd,issetpddfac,isprecipscaled,istemperaturescaled,isfirnwarming,isstochastic;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	/*Figure out smb model: */
+	iomodel->FindConstant(&smb_model,"md.smb.model");
+	iomodel->FindConstant(&isstochastic,"md.stochasticforcing.isstochasticforcing");
+	switch(smb_model){
+		case SMBforcingEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.mass_balance",SmbMassBalanceEnum,0.);
+			if(isstochastic){
+				iomodel->FetchDataToInput(inputs,elements,"md.stochasticforcing.default_id",StochasticForcingDefaultIdEnum);
+				iomodel->FetchDataToInput(inputs,elements,"md.smb.mass_balance",BaselineSmbMassBalanceEnum,0.);
+			}
+			break;
+		case SMBgembEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.Ta",SmbTaEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.V",SmbVEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.dswrf",SmbDswrfEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.dswdiffrf",SmbDswdiffrfEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.dlwrf",SmbDlwrfEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.P",SmbPEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.eAir",SmbEAirEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.pAir",SmbPAirEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.zTop",SmbZTopEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.dzTop",SmbDzTopEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.dzMin",SmbDzMinEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.zY",SmbZYEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.zMax",SmbZMaxEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.zMin",SmbZMinEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.Tmean",SmbTmeanEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.Vmean",SmbVmeanEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.C",SmbCEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.Tz",SmbTzEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.Vz",SmbVzEnum);
+			InputUpdateFromConstantx(inputs,elements,false,SmbIsInitializedEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.Dzini",SmbDziniEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.Dini",SmbDiniEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.Reini",SmbReiniEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.Gdnini",SmbGdniniEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.Gspini",SmbGspiniEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.ECini",SmbECiniEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.Wini",SmbWiniEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.Aini",SmbAiniEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.Adiffini",SmbAdiffiniEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.Tini",SmbTiniEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.Sizeini",SmbSizeiniEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.aValue",SmbAValueEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.dulwrfValue",SmbDulwrfValueEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.teValue",SmbTeValueEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.szaValue",SmbSzaValueEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.cotValue",SmbCotValueEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.ccsnowValue",SmbCcsnowValueEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.cciceValue",SmbCciceValueEnum);
+			break;
+		case SMBpddEnum:
+			iomodel->FindConstant(&isdelta18o,"md.smb.isdelta18o");
+			iomodel->FindConstant(&ismungsm,"md.smb.ismungsm");
+			iomodel->FindConstant(&issetpddfac,"md.smb.issetpddfac");
+			iomodel->FetchDataToInput(inputs,elements,"md.thermal.spctemperature",ThermalSpctemperatureEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.s0p",SmbS0pEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.s0t",SmbS0tEnum);
+			if(isdelta18o || ismungsm){
+				iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.temperatures_lgm",SmbTemperaturesLgmEnum);
+				iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.temperatures_presentday",SmbTemperaturesPresentdayEnum);
+				iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.precipitations_presentday",SmbPrecipitationsPresentdayEnum);
+				iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.precipitations_lgm",SmbPrecipitationsLgmEnum);
+			}else{
+				iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.precipitation",SmbPrecipitationEnum);
+				iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.monthlytemperatures",SmbMonthlytemperaturesEnum);
+			}
+			if(issetpddfac){
+				iomodel->FetchDataToInput(inputs,elements,"md.smb.pddfac_snow",SmbPddfacSnowEnum,-1.);
+				iomodel->FetchDataToInput(inputs,elements,"md.smb.pddfac_ice",SmbPddfacIceEnum,-1.);
+			}
+			break;
+		case SMBpddSicopolisEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.s0p",SmbS0pEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.s0t",SmbS0tEnum);
+			iomodel->FindConstant(&isfirnwarming,"md.smb.isfirnwarming");
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.smb_corr",SmbSmbCorrEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.precipitation_anomaly",SmbPrecipitationsAnomalyEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.temperature_anomaly",SmbTemperaturesAnomalyEnum);
+			iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.monthlytemperatures",SmbMonthlytemperaturesEnum);
+			iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.precipitation",SmbPrecipitationEnum);
+			break;
+		case SMBd18opddEnum:
+			iomodel->FindConstant(&istemperaturescaled,"md.smb.istemperaturescaled");
+			iomodel->FindConstant(&isprecipscaled,"md.smb.isprecipscaled");
+			iomodel->FindConstant(&ismungsm,"md.smb.ismungsm");
+			iomodel->FindConstant(&isd18opd,"md.smb.isd18opd");
+			iomodel->FindConstant(&issetpddfac,"md.smb.issetpddfac");
+			iomodel->FetchDataToInput(inputs,elements,"md.thermal.spctemperature",ThermalSpctemperatureEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.s0p",SmbS0pEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.s0t",SmbS0tEnum);
+			if(isd18opd){
+				iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.temperatures_presentday",SmbTemperaturesPresentdayEnum);
+				iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.precipitations_presentday",SmbPrecipitationsPresentdayEnum);
+				if(!istemperaturescaled){
+					/*Fetch array*/
+					IssmDouble* doublearray = NULL;
+					int         M,N;
+					iomodel->FetchData(&doublearray,&M,&N,"md.smb.temperatures_reconstructed");
+					if(M!=iomodel->numberofvertices+1) _error_("md.smb.temperatures_reconstructed should have nbv+1 rows");
+					if(N%12!=0) _error_("md.smb.temperatures_reconstructed should have a multiple of 12 columns (since it is monthly)");
+
+					/*Build indices*/
+					int* ids = xNew<int>(N); for(int i=0;i<N;i++) ids[i] = i;
+
+					for(Object* & object : elements->objects){
+						Element* element=xDynamicCast<Element*>(object);
+						element->DatasetInputCreate(doublearray,M-1,N,ids,N,inputs,iomodel,SmbTemperaturesReconstructedEnum);
+					}
+					xDelete<int>(ids);
+					iomodel->DeleteData(doublearray,"md.smb.temperatures_reconstructed");
+				}
+				if(!isprecipscaled){
+					/*Fetch array*/
+					IssmDouble* doublearray = NULL;
+					int         M,N;
+					iomodel->FetchData(&doublearray,&M,&N,"md.smb.precipitations_reconstructed");
+					if(M!=iomodel->numberofvertices+1) _error_("md.smb.precipitations_reconstructed should have nbv+1 rows");
+					if(N%12!=0) _error_("md.smb.precipitations_reconstructed should have a multiple of 12 columns (since it is monthly)");
+
+					/*Build indices*/
+					int* ids = xNew<int>(N); for(int i=0;i<N;i++) ids[i] = i;
+
+					for(Object* & object : elements->objects){
+						Element* element=xDynamicCast<Element*>(object);
+						element->DatasetInputCreate(doublearray,M-1,N,ids,N,inputs,iomodel,SmbPrecipitationsReconstructedEnum);
+					}
+					xDelete<int>(ids);
+					iomodel->DeleteData(doublearray,"md.smb.precipitations_reconstructed");
+				}
+			}
+			if(issetpddfac){
+				iomodel->FetchDataToInput(inputs,elements,"md.smb.pddfac_snow",SmbPddfacSnowEnum,-1.);
+				iomodel->FetchDataToInput(inputs,elements,"md.smb.pddfac_ice",SmbPddfacIceEnum,-1.);
+			}
+			break;
+		case SMBgradientsEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.href",SmbHrefEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.smbref",SmbSmbrefEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.b_pos",SmbBPosEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.b_neg",SmbBNegEnum);
+			break;
+		case SMBgradientselaEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.ela",SmbElaEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.b_pos",SmbBPosEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.b_neg",SmbBNegEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.b_max",SmbBMaxEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.b_min",SmbBMinEnum);
+			break;
+		case SMBarmaEnum:
+         iomodel->FetchDataToInput(inputs,elements,"md.smb.basin_id",SmbBasinsIdEnum);
+         break;
+		case SMBhenningEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.smbref",SmbSmbrefEnum,0.);
+			break;
+		case SMBcomponentsEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.accumulation",SmbAccumulationEnum,0.);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.evaporation",SmbEvaporationEnum,0.);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.runoff",SmbRunoffEnum,0.);
+			break;
+		case SMBmeltcomponentsEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.accumulation",SmbAccumulationEnum,0.);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.evaporation",SmbEvaporationEnum,0.);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.melt",SmbMeltEnum,0.);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.refreeze",SmbRefreezeEnum,0.);
+			break;
+		case SMBgradientscomponentsEnum:
+			/* Nothing to add to input */
+			break;
+		case SMBsemicEnum:
+			int ismethod;
+			//if(VerboseSolution()) _printf0_("   smb semic: UpdateElements.\n");
+			//iomodel->FetchDataToInput(inputs,elements,"md.thermal.spctemperature",ThermalSpctemperatureEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.s0gcm",SmbS0gcmEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.dailysnowfall",SmbDailysnowfallEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.dailyrainfall",SmbDailyrainfallEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.dailydsradiation",SmbDailydsradiationEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.dailydlradiation",SmbDailydlradiationEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.dailywindspeed",SmbDailywindspeedEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.dailypressure",SmbDailypressureEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.dailyairdensity",SmbDailyairdensityEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.dailyairhumidity",SmbDailyairhumidityEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.smb.dailytemperature",SmbDailytemperatureEnum);
+			// assign initial SEMIC temperature from initialization class.
+			if(VerboseSolution()) _printf0_("   smb semic: UpdateElements - temperature.\n");
+			iomodel->FetchDataToInput(inputs,elements,"md.initialization.temperature",TemperatureEnum);
+
+			iomodel->FindConstant(&ismethod,"md.smb.ismethod");
+			if (ismethod == 1){
+				if(VerboseSolution()) _printf0_("   smb semic: UpdateElements - albedo.\n");
+				iomodel->FetchDataToInput(inputs,elements,"md.smb.albedo",SmbAlbedoInitEnum);
+				iomodel->FetchDataToInput(inputs,elements,"md.smb.albedo_snow",SmbAlbedoSnowInitEnum);
+				if(VerboseSolution()) _printf0_("   smb semic: UpdateElements - Hice/Hsnow.\n");
+				iomodel->FetchDataToInput(inputs,elements,"md.smb.hice",SmbHIceInitEnum);
+				iomodel->FetchDataToInput(inputs,elements,"md.smb.hsnow",SmbHSnowInitEnum);
+
+				// initial Temperature amplitude.
+				if(VerboseSolution()) _printf0_("   smb semic: UpdateElements - Tamp.\n");
+				iomodel->FetchDataToInput(inputs,elements,"md.smb.Tamp",SmbTampEnum);
+
+				// assign masking 
+				iomodel->FetchDataToInput(inputs,elements,"md.smb.mask",SmbMaskEnum);
+				iomodel->FetchDataToInput(inputs,elements,"md.smb.qmr",SmbSemicQmrInitEnum);
+				if(VerboseSolution()) _printf0_("   smb semic: UpdateElements - done.\n");
+			}
+			break;
+		case SMBdebrisEvattEnum:
+                        iomodel->FetchDataToInput(inputs,elements,"md.initialization.debris",DebrisThicknessEnum);
+                        iomodel->FetchDataToInput(inputs,elements,"md.smb.s0t",SmbS0tEnum);
+                        iomodel->FetchDataToInput(inputs,elements,"md.smb.snowheight",SmbSnowheightEnum);
+                        iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.temperature",SmbMonthlytemperaturesEnum);
+                        iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.precipitation",SmbPrecipitationEnum);
+                        iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.dsradiation",SmbMonthlydsradiationEnum);
+                        iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.dlradiation",SmbMonthlydlradiationEnum);
+                        iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.windspeed",SmbMonthlywindspeedEnum);
+                        iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.airhumidity",SmbMonthlyairhumidityEnum);
+                        iomodel->FetchDataToInput(inputs,elements,"md.smb.precipitation_anomaly",SmbPrecipitationsAnomalyEnum);
+                        iomodel->FetchDataToInput(inputs,elements,"md.smb.temperature_anomaly",SmbTemperaturesAnomalyEnum);
+                        iomodel->FetchDataToInput(inputs,elements,"md.smb.dsradiation_anomaly",SmbDsradiationAnomalyEnum);
+                        iomodel->FetchDataToInput(inputs,elements,"md.smb.dlradiation_anomaly",SmbDlradiationAnomalyEnum);
+                        iomodel->FetchDataToInput(inputs,elements,"md.smb.windspeed_anomaly",SmbWindspeedAnomalyEnum);
+                        iomodel->FetchDataToInput(inputs,elements,"md.smb.airhumidity_anomaly",SmbAirhumidityAnomalyEnum);
+                        break;
+		default:
+			_error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
+	}
+
+}/*}}}*/
+void SmbAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int     numoutputs;
+	char**  requestedoutputs = NULL;
+	bool    isdelta18o,ismungsm,isd18opd,issetpddfac,interp,cycle,isfirnwarming;
+	int     smb_model, smbslices, averaging;
+	IssmDouble *temp = NULL;
+	int         N,M;
+
+	parameters->AddObject(iomodel->CopyConstantObject("md.smb.model",SmbEnum));
+
+	iomodel->FindConstant(&smb_model,"md.smb.model");
+	iomodel->FindConstant(&interp,"md.timestepping.interp_forcing");
+	iomodel->FindConstant(&cycle,"md.timestepping.cycle_forcing");
+
+	iomodel->FindConstant(&smbslices,"md.smb.steps_per_step");
+	parameters->AddObject(new IntParam(SmbStepsPerStepEnum,smbslices));
+
+	parameters->AddObject(iomodel->CopyConstantObject("md.smb.averaging",SmbAveragingEnum));
+
+	switch(smb_model){
+		case SMBforcingEnum:
+			break;
+		case SMBgembEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.aIdx",SmbAIdxEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.eIdx",SmbEIdxEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.tcIdx",SmbTcIdxEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.swIdx",SmbSwIdxEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.denIdx",SmbDenIdxEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.dsnowIdx",SmbDsnowIdxEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.cldFrac",SmbCldFracEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.t0wet",SmbT0wetEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.t0dry",SmbT0dryEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.K",SmbKEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.aSnow",SmbASnowEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.aIce",SmbAIceEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.dt",SmbDtEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isgraingrowth",SmbIsgraingrowthEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isalbedo",SmbIsalbedoEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isshortwave",SmbIsshortwaveEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isthermal",SmbIsthermalEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isaccumulation",SmbIsaccumulationEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.ismelt",SmbIsmeltEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isdensification",SmbIsdensificationEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isturbulentflux",SmbIsturbulentfluxEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isconstrainsurfaceT",SmbIsconstrainsurfaceTEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isdeltaLWup",SmbIsdeltaLWupEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.InitDensityScaling",SmbInitDensityScalingEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.ThermoDeltaTScaling",SmbThermoDeltaTScalingEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.adThresh",SmbAdThreshEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.teThresh",SmbTeThreshEnum));
+			break;
+		case SMBpddEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isdelta18o",SmbIsdelta18oEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.ismungsm",SmbIsmungsmEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.issetpddfac",SmbIssetpddfacEnum));
+			iomodel->FindConstant(&isdelta18o,"md.smb.isdelta18o");
+			iomodel->FindConstant(&ismungsm,"md.smb.ismungsm");
+
+			if(ismungsm){
+			  iomodel->FetchData(&temp,&N,&M,"md.smb.Pfac"); _assert_(N==2);
+			  parameters->AddObject(new TransientParam(SmbPfacEnum,&temp[0],&temp[M],interp,cycle,M));
+			  iomodel->DeleteData(temp,"md.smb.Pfac");
+
+			  iomodel->FetchData(&temp,&N,&M,"md.smb.Tdiff"); _assert_(N==2);
+			  parameters->AddObject(new TransientParam(SmbTdiffEnum,&temp[0],&temp[M],interp,cycle,M));
+			  iomodel->DeleteData(temp,"md.smb.Tdiff");
+
+			  iomodel->FetchData(&temp,&N,&M,"md.smb.sealev"); _assert_(N==2);
+			  parameters->AddObject(new TransientParam(SmbSealevEnum,&temp[0],&temp[M],interp,cycle,M));
+			  iomodel->DeleteData(temp,"md.smb.sealev");
+			}
+			if(isdelta18o){
+				iomodel->FetchData(&temp,&N,&M,"md.smb.delta18o"); _assert_(N==2);
+				parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,cycle,M));
+				iomodel->DeleteData(temp,"md.smb.delta18o");
+
+				iomodel->FetchData(&temp,&N,&M,"md.smb.delta18o_surface"); _assert_(N==2);
+				parameters->AddObject(new TransientParam(SmbDelta18oSurfaceEnum,&temp[0],&temp[M],interp,cycle,M));
+				iomodel->DeleteData(temp,"md.smb.delta18o_surface");
+			}
+
+			break;
+		case SMBpddSicopolisEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isfirnwarming",SmbIsfirnwarmingEnum));
+			break;
+		case SMBd18opddEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.ismungsm",SmbIsmungsmEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.isd18opd",SmbIsd18opdEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.issetpddfac",SmbIssetpddfacEnum));
+			iomodel->FindConstant(&ismungsm,"md.smb.ismungsm");
+			iomodel->FindConstant(&isd18opd,"md.smb.isd18opd");
+			iomodel->FindConstant(&issetpddfac,"md.smb.issetpddfac");
+			if(isd18opd){
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.f",SmbFEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.istemperaturescaled",SmbIstemperaturescaledEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.isprecipscaled",SmbIsprecipscaledEnum));
+				iomodel->FetchData(&temp,&N,&M,"md.smb.delta18o"); _assert_(N==2);
+				parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,cycle,M));
+				iomodel->DeleteData(temp,"md.smb.delta18o");
+
+				IssmDouble yts;
+				bool istemperaturescaled,isprecipscaled;
+				iomodel->FindConstant(&yts,"md.constants.yts");
+				iomodel->FindConstant(&istemperaturescaled,"md.smb.istemperaturescaled");
+				iomodel->FindConstant(&isprecipscaled,"md.smb.isprecipscaled");
+				if(!istemperaturescaled){
+					/*Fetch array*/
+					IssmDouble* doublearray = NULL;
+					int         M,N;
+					iomodel->FetchData(&doublearray,&M,&N,"md.smb.temperatures_reconstructed");
+					if(M!=iomodel->numberofvertices+1) _error_("md.smb.temperatures_reconstructed should have nbv+1 rows");
+					if(N%12!=0) _error_("md.smb.temperatures_reconstructed should have a multiple of 12 columns (since it is monthly)");
+					int numyears = N/12; _assert_(numyears*12==N);
+
+					/*Check times*/
+					#ifdef _ISSM_DEBUG_
+					for(int i=0;i<numyears;i++){
+						for(int j=1;j<12;j++){
+							//_assert_(floor(doublearray[(M-1)*N+i*12+j]/yts)==floor(doublearray[(M-1)*N+i*12]/yts));
+							_assert_(doublearray[(M-1)*N+i*12+j]>doublearray[(M-1)*N+i*12+j-1]);
+						}
+					}
+					#endif
+
+					/*Build time*/
+					IssmDouble* times = xNew<IssmDouble>(numyears); for(int i=0;i<numyears;i++) times[i] = doublearray[(M-1)*N+i*12];
+					parameters->AddObject(new DoubleVecParam(SmbTemperaturesReconstructedYearsEnum,times,numyears));
+					xDelete<IssmDouble>(times);
+					iomodel->DeleteData(doublearray,"md.smb.temperatures_reconstructed");
+				}
+				if(!isprecipscaled){
+					/*Fetch array*/
+					IssmDouble* doublearray = NULL;
+					int         M,N;
+					iomodel->FetchData(&doublearray,&M,&N,"md.smb.precipitations_reconstructed");
+					if(M!=iomodel->numberofvertices+1) _error_("md.smb.precipitations_reconstructed should have nbv+1 rows");
+					if(N%12!=0) _error_("md.smb.precipitations_reconstructed should have a multiple of 12 columns (since it is monthly)");
+					int numyears = N/12; _assert_(numyears*12==N);
+
+					/*Check times*/
+					#ifdef _ISSM_DEBUG_
+					for(int i=0;i<numyears;i++){
+						for(int j=1;j<12;j++){
+							//_assert_(floor(doublearray[(M-1)*N+i*12+j]/yts)==floor(doublearray[(M-1)*N+i*12]/yts));
+							_assert_(doublearray[(M-1)*N+i*12+j]>doublearray[(M-1)*N+i*12+j-1]);
+						}
+					}
+					#endif
+
+					/*Build time*/
+					IssmDouble* times = xNew<IssmDouble>(numyears); for(int i=0;i<numyears;i++) times[i] = doublearray[(M-1)*N+i*12];
+					parameters->AddObject(new DoubleVecParam(SmbPrecipitationsReconstructedYearsEnum,times,numyears));
+					xDelete<IssmDouble>(times);
+					iomodel->DeleteData(doublearray,"md.smb.precipitations_reconstructed");
+				}
+			}
+
+			break;
+		case SMBgradientsEnum:
+			/*Nothing to add to parameters*/
+			break;
+		case SMBgradientselaEnum:
+			/*Nothing to add to parameters*/
+			break;
+		case SMBarmaEnum:
+         /*Nothing to add to parameters*/
+         break;
+		case SMBhenningEnum:
+			/*Nothing to add to parameters*/
+			break;
+		case SMBcomponentsEnum:
+			break;
+		case SMBmeltcomponentsEnum:
+			break;
+		case SMBgradientscomponentsEnum:
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.accualti",SmbAccualtiEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.runoffalti",SmbRunoffaltiEnum));
+
+				iomodel->FetchData(&temp,&N,&M,"md.smb.accugrad"); _assert_(N==2);
+				parameters->AddObject(new TransientParam(SmbAccugradEnum,&temp[0],&temp[M],interp,cycle,M));
+				iomodel->DeleteData(temp,"md.smb.accugrad");
+				iomodel->FetchData(&temp,&N,&M,"md.smb.runoffgrad"); _assert_(N==2);
+				parameters->AddObject(new TransientParam(SmbRunoffgradEnum,&temp[0],&temp[M],interp,cycle,M));
+				iomodel->DeleteData(temp,"md.smb.runoffgrad");
+
+				iomodel->FetchData(&temp,&N,&M,"md.smb.accuref"); _assert_(N==2);
+				parameters->AddObject(new TransientParam(SmbAccurefEnum,&temp[0],&temp[M],interp,cycle,M));
+				iomodel->DeleteData(temp,"md.smb.accuref");
+				iomodel->FetchData(&temp,&N,&M,"md.smb.runoffref"); _assert_(N==2);
+				parameters->AddObject(new TransientParam(SmbRunoffrefEnum,&temp[0],&temp[M],interp,cycle,M));
+				iomodel->DeleteData(temp,"md.smb.runoffref");
+			break;
+		case SMBsemicEnum:
+			int ismethod;
+			parameters->FindParam(&ismethod,SmbSemicMethodEnum);
+			if (ismethod == 1){
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.desfacElevation",SmbDesfacElevEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.hcrit",SmbSemicHcritEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.rcrit",SmbSemicRcritEnum));
+				/*Define albedo parameters.*/
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.albedo_scheme",SmbAlbedoSchemeEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.alb_smax",SmbAlbedoSnowMaxEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.alb_smin",SmbAlbedoSnowMinEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.albi",SmbAlbedoIceEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.albl",SmbAlbedoLandEnum));
+
+				//albedo parameter - slatter
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.tmin",SmbSemicTmaxEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.tmax",SmbSemicTminEnum));
+
+				//albedo parameter - isba & denby
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.mcrit",SmbSemicMcritEnum));
+				//albedo parameter - isba
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.tau_a",SmbSemicTauAEnum)); 
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.tau_f",SmbSemicTauFEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.wcrit",SmbSemicWcritEnum));
+				//albedo parameter - alex
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.tmid",SmbSemicTmidEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.afac",SmbSemicAfacEnum));
+			}
+			/*Nothing to add to parameters*/
+			break;
+		case SMBdebrisEvattEnum:
+			/*Nothing to add to parameters*/
+			break;
+		default:
+			_error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
+	}
+
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.smb.requested_outputs");
+	parameters->AddObject(new IntParam(SmbNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(SmbRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.smb.requested_outputs");
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           SmbAnalysis::Core(FemModel* femmodel){/*{{{*/
+
+	int    smb_model;
+
+	/*Figure out smb model: */
+	femmodel->parameters->FindParam(&smb_model,SmbEnum);
+
+	/*branch to correct module*/
+	switch(smb_model){
+		case SMBforcingEnum:
+			SmbForcingx(femmodel);
+			break;
+		case SMBgembEnum:
+			Gembx(femmodel);
+			break;
+		case SMBpddEnum:
+			bool isdelta18o,ismungsm;
+			femmodel->parameters->FindParam(&isdelta18o,SmbIsdelta18oEnum);
+			femmodel->parameters->FindParam(&ismungsm,SmbIsmungsmEnum);
+			if(isdelta18o){
+				if(VerboseSolution()) _printf0_("   call Delta18oParameterization module\n");
+				Delta18oParameterizationx(femmodel);
+			}
+			if(ismungsm){
+				if(VerboseSolution()) _printf0_("   call MungsmtpParameterization module\n");
+				MungsmtpParameterizationx(femmodel);
+			}
+			if(VerboseSolution()) _printf0_("   call positive degree day module\n");
+			PositiveDegreeDayx(femmodel);
+			break;
+		case SMBpddSicopolisEnum:
+			if(VerboseSolution()) _printf0_("   call SICOPOLIS positive degree day module\n");
+			PositiveDegreeDaySicopolisx(femmodel);
+			break;
+		case SMBd18opddEnum:
+			bool isd18opd;
+			femmodel->parameters->FindParam(&isd18opd,SmbIsd18opdEnum);
+			if(isd18opd){
+				if(VerboseSolution()) _printf0_("   call Delta18opdParameterization module\n");
+				Delta18opdParameterizationx(femmodel);
+				if(VerboseSolution()) _printf0_("   call positive degree day module\n");
+				PositiveDegreeDayx(femmodel);
+			}
+			break;
+		case SMBgradientsEnum:
+			if(VerboseSolution())_printf0_("	call smb gradients module\n");
+			SmbGradientsx(femmodel);
+			break;
+		case SMBgradientselaEnum:
+			if(VerboseSolution())_printf0_("	call smb gradients ela module\n");
+			SmbGradientsElax(femmodel);
+			break;
+		case SMBarmaEnum:
+			if(VerboseSolution())_printf0_("    call smb arma module\n");
+			Smbarmax(femmodel);
+			break;
+		case SMBhenningEnum:
+			if(VerboseSolution())_printf0_("  call smb Henning module\n");
+			SmbHenningx(femmodel);
+			break;
+		case SMBcomponentsEnum:
+			if(VerboseSolution())_printf0_("  call smb Components module\n");
+			SmbComponentsx(femmodel);
+			break;
+		case SMBmeltcomponentsEnum:
+			if(VerboseSolution())_printf0_("  call smb Melt Components module\n");
+			SmbMeltComponentsx(femmodel);
+			break;
+		case SMBgcmEnum:
+			/*Nothing to be done*/
+			break;
+		case SMBgradientscomponentsEnum:
+			if(VerboseSolution())_printf0_("	call smb gradients components module\n");
+			SmbGradientsComponentsx(femmodel);
+			break;
+		case SMBsemicEnum:
+			#ifdef _HAVE_SEMIC_
+			if(VerboseSolution())_printf0_("   call smb SEMIC module\n");
+			int ismethod;
+			femmodel->parameters->FindParam(&ismethod,SmbSemicMethodEnum);
+			SmbSemicx(femmodel,ismethod);
+			#else
+			_error_("SEMIC not installed");
+			#endif //_HAVE_SEMIC_
+			break;
+		case SMBdebrisEvattEnum:
+                        if(VerboseSolution())_printf0_("        call smb Evatt debris module\n");
+                        SmbDebrisEvattx(femmodel);
+                        break;
+		default:
+			_error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
+	}
+
+}/*}}}*/
+void           SmbAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* SmbAnalysis::CreateDVector(Element* element){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementMatrix* SmbAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* SmbAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+ElementVector* SmbAnalysis::CreatePVector(Element* element){/*{{{*/
+_error_("not implemented yet");
+}/*}}}*/
+void           SmbAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           SmbAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           SmbAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void           SmbAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SmbAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SmbAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SmbAnalysis.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file SmbAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _SmbAnalysis_
+#define _SmbAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class SmbAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SmoothAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SmoothAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SmoothAnalysis.cpp	(revision 27955)
@@ -0,0 +1,227 @@
+#include "./SmoothAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void SmoothAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void SmoothAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+}/*}}}*/
+void SmoothAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	::CreateNodes(nodes,iomodel,SmoothAnalysisEnum,P1Enum);
+
+}/*}}}*/
+int  SmoothAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void SmoothAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+}/*}}}*/
+void SmoothAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           SmoothAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           SmoothAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* SmoothAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* SmoothAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* SmoothAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/* Intermediaries */
+	int         domaintype;
+	IssmDouble  Jdet,thickness,l;
+	IssmDouble *xyz_list = NULL;
+
+	/*Check dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes);
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->FindParam(&l,SmoothThicknessMultiplierEnum); _assert_(l>0.);
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* thickness_input = element->GetInput(ThicknessEnum); _assert_(thickness_input);
+
+	/* Start looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		thickness_input->GetInputValue(&thickness,gauss);
+		if(thickness<50.) thickness=50.;
+
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += gauss->weight*Jdet*(
+							basis[i]*basis[j]
+							+(l*thickness)*(l*thickness)*(dbasis[0*numnodes+i]*dbasis[0*numnodes+j] + dbasis[1*numnodes+i]*dbasis[1*numnodes+j])
+							);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list);
+	return Ke;
+}/*}}}*/
+ElementVector* SmoothAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Get basal element*/
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries */
+	int         input_enum;
+	IssmDouble  Jdet,value;
+	IssmDouble *xyz_list  = NULL;
+	Input     *input = NULL;
+
+	/*SPECIFICS: Driving stress for balance velocities*/
+	Input*      H_input = NULL, *surface_input = NULL, *vx_input = NULL, *vy_input = NULL;
+	IssmDouble  taud_x,norms,normv,vx,vy;
+	IssmDouble  rho_ice,gravity,slope[2],thickness;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&input_enum,InputToSmoothEnum);
+
+	switch(input_enum){
+		case DrivingStressXEnum:
+		case DrivingStressYEnum:{
+			rho_ice       = element->FindParam(MaterialsRhoIceEnum);
+			gravity       = element->FindParam(ConstantsGEnum);
+			H_input       = element->GetInput(ThicknessEnum); _assert_(H_input);
+			surface_input = element->GetInput(SurfaceEnum);   _assert_(surface_input);
+			vx_input      = element->GetInput(VxEnum);
+			vy_input      = element->GetInput(VyEnum);
+			}
+			break;
+		case SurfaceSlopeXEnum:
+		case SurfaceSlopeYEnum:{
+			surface_input = element->GetInput(SurfaceEnum);   _assert_(surface_input);
+			}
+			break;
+		default: input = element->GetInput(input_enum);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		switch(input_enum){
+			case DrivingStressXEnum: 
+			case DrivingStressYEnum:{
+				H_input->GetInputValue(&thickness,gauss);
+				surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+				if(vx_input && vy_input){
+					vx_input->GetInputValue(&vx,gauss);
+					vy_input->GetInputValue(&vy,gauss);
+					norms = sqrt(slope[0]*slope[0]+slope[1]*slope[1]+1.e-10);
+					normv = sqrt(vx*vx + vy*vy);
+					if(normv>15./(365.*24.*3600.)){
+						slope[0] = -vx/normv*norms;
+						slope[1] = -vy/normv*norms;
+					}
+				}
+				if(input_enum==DrivingStressXEnum)
+				 value = rho_ice*gravity*thickness*slope[0];
+				else
+				 value = rho_ice*gravity*thickness*slope[1];
+			}
+			break;
+			case SurfaceSlopeXEnum: 
+				surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+				value = slope[0];
+				break;
+			case SurfaceSlopeYEnum:
+				surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+				value = slope[1];
+				break;
+			default:
+				input->GetInputValue(&value,gauss);
+		}
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*value*basis[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           SmoothAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           SmoothAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           SmoothAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	int inputenum,domaintype,elementtype;
+
+	element->FindParam(&inputenum,InputToSmoothEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->InputUpdateFromSolutionOneDof(solution,inputenum);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}/*}}}*/
+void           SmoothAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SmoothAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SmoothAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/SmoothAnalysis.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file SmoothAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _SmoothAnalysis_
+#define _SmoothAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class SmoothAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/StressbalanceAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/StressbalanceAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/StressbalanceAnalysis.cpp	(revision 27955)
@@ -0,0 +1,8619 @@
+#include "./StressbalanceAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../classes/IoModel.h"
+#include "../classes/FemModel.h"
+#include "../classes/Constraints/Constraints.h"
+#include "../classes/Constraints/Constraint.h"
+#include "../classes/Constraints/SpcStatic.h"
+#include "../classes/Params/Parameters.h"
+#include "../classes/Nodes.h"
+#include "../classes/Node.h"
+#include "../classes/Elements/Elements.h"
+#include "../classes/Elements/Element.h"
+#include "../modules/ModelProcessorx/ModelProcessorx.h"
+#include "../modules/IoModelToConstraintsx/IoModelToConstraintsx.h"
+#include "../modules/InputUpdateFromConstantx/InputUpdateFromConstantx.h"
+#include "../modules/SetActiveNodesLSMx/SetActiveNodesLSMx.h"
+#include "../cores/cores.h"
+
+//#define FSANALYTICAL 10
+//#define LATERALFRICTION 1
+//#define DISCSLOPE 1 //testing for SSA
+
+/*Model processing*/
+void StressbalanceAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*Intermediary*/
+	int        i,j;
+	int        finiteelement,p_fe,v_fe;
+	IssmDouble g;
+	IssmDouble rho_ice;
+	IssmDouble FSreconditioning;
+	bool       isSIA,isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling;
+	bool       spcpresent = false;
+	int        Mx,Nx;
+	int        My,Ny;
+	int        Mz,Nz;
+	IssmDouble *spcvx          = NULL;
+	IssmDouble *spcvy          = NULL;
+	IssmDouble *spcvz          = NULL;
+	IssmDouble *nodeonSSA = NULL;
+	IssmDouble *nodeonHO   = NULL;
+	IssmDouble *nodeonFS   = NULL;
+	IssmDouble *nodeonbase      = NULL;
+	IssmDouble *groundedice_ls = NULL;
+	IssmDouble *vertices_type  = NULL;
+	IssmDouble *surface        = NULL;
+	IssmDouble *z              = NULL;
+	IssmDouble *timesx=NULL;
+	IssmDouble *timesy=NULL;
+	IssmDouble *timesz=NULL;
+   IssmDouble* values=NULL;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&g,"md.constants.g");
+	iomodel->FindConstant(&rho_ice,"md.materials.rho_ice");
+	iomodel->FindConstant(&FSreconditioning,"md.stressbalance.FSreconditioning");
+	iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
+	iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
+	iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
+	iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO");
+	iomodel->FindConstant(&isHO,"md.flowequation.isHO");
+	iomodel->FindConstant(&isFS,"md.flowequation.isFS");
+
+	/*Is this model only SIA??*/
+	if(!isSSA && !isHO && !isFS && !isL1L2 && !isMOLHO) return;
+
+	/*Do we have coupling*/
+	if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
+	 iscoupling = true;
+	else
+	 iscoupling = false;
+
+	/*If no coupling, call Regular IoModelToConstraintsx, else, use P1 elements only*/
+	if(!iscoupling){
+
+		/*Get finite element type*/
+		if(isSSA)       iomodel->FindConstant(&finiteelement,"md.flowequation.fe_SSA");
+		else if(isL1L2) finiteelement = P1Enum;
+		else if(isMOLHO) finiteelement = P1Enum;
+		else if(isHO)   iomodel->FindConstant(&finiteelement,"md.flowequation.fe_HO");
+		else if(isFS){  iomodel->FindConstant(&finiteelement,"md.flowequation.fe_FS");
+			/*Deduce velocity interpolation from finite element*/
+			switch(finiteelement){
+				case P1P1Enum              : v_fe = P1Enum;       p_fe = P1Enum;   break;
+				case P1P1GLSEnum           : v_fe = P1Enum;       p_fe = P1Enum;   break;
+				case MINIcondensedEnum     : v_fe = P1bubbleEnum; p_fe = P1Enum;   break;
+				case MINIEnum              : v_fe = P1bubbleEnum; p_fe = P1Enum;   break;
+				case TaylorHoodEnum        : v_fe = P2Enum;       p_fe = P1Enum;   break;
+				case XTaylorHoodEnum       : v_fe = P2Enum;       p_fe = P1Enum;   break;
+				case LATaylorHoodEnum      : v_fe = P2Enum;       p_fe = NoneEnum; break;
+				case LACrouzeixRaviartEnum : v_fe = P2bubbleEnum; p_fe = NoneEnum; break;
+				case OneLayerP4zEnum       : v_fe = P2xP4Enum;    p_fe = P1Enum;   break;
+				case CrouzeixRaviartEnum   : v_fe = P2bubbleEnum; p_fe = P1DGEnum; break;
+				default: _error_("finite element "<<EnumToStringx(finiteelement)<<" not supported");
+			}
+		}
+		else{
+			_error_("model not supported yet");
+		}
+
+		if(isFS){
+
+			/*Constraint at the bedrock interface (v.n = vz = 0) (Coordinates will be updated according to the bed slope)*/
+			iomodel->FetchData(&vertices_type,NULL,NULL,"md.flowequation.vertex_equation");
+			iomodel->FetchData(&nodeonFS,NULL,NULL,"md.flowequation.borderFS");
+			iomodel->FetchData(&nodeonbase,NULL,NULL,"md.mesh.vertexonbase");
+			iomodel->FetchData(&groundedice_ls,NULL,NULL,"md.mask.ocean_levelset");
+			if(iomodel->domaintype==Domain3DEnum){
+				iomodel->FetchData(&spcvz,&Mz,&Nz,"md.stressbalance.spcvz");
+			}
+			else if (iomodel->domaintype==Domain2DverticalEnum){
+				iomodel->FetchData(&spcvz,&Mz,&Nz,"md.stressbalance.spcvy");
+			}
+			else{
+				_error_("not supported yet");
+			}
+			if(iomodel->domaintype==Domain3DEnum){
+				IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceAnalysisEnum,v_fe,0);
+				IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy",StressbalanceAnalysisEnum,v_fe,1);
+				IoModelToConstraintsx(constraints,iomodel,spcvz,Mz,Nz,StressbalanceAnalysisEnum,v_fe,2);
+				iomodel->DeleteData(spcvz,"md.stressbalance.spcvz");
+			}
+			else if (iomodel->domaintype==Domain2DverticalEnum){
+				IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceAnalysisEnum,v_fe,0);
+				IoModelToConstraintsx(constraints,iomodel,spcvz,Mz,Nz,StressbalanceAnalysisEnum,v_fe,1);
+				iomodel->DeleteData(spcvz,"md.stressbalance.spcvy");
+			}
+			else{
+				_error_("not supported yet");
+			}
+			iomodel->DeleteData(vertices_type,"md.flowequation.vertex_equation");
+			iomodel->DeleteData(nodeonFS,"md.flowequation.borderFS");
+			iomodel->DeleteData(nodeonbase,"md.mesh.vertexonbase");
+			iomodel->DeleteData(groundedice_ls,"md.mask.ocean_levelset");
+
+			/*Pressure spc*/
+			int count = constraints->Size();
+			iomodel->FetchData(&vertices_type,NULL,NULL,"md.flowequation.vertex_equation");
+			iomodel->FetchData(&surface,NULL,NULL,"md.geometry.surface");
+			iomodel->FetchData(&z,NULL,NULL,"md.mesh.z");
+			bool addpressurespc = false;
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum && iomodel->my_vertices[i]){
+					addpressurespc = true;
+					break;
+				}
+			}
+			if(addpressurespc){
+				switch(finiteelement){
+					case P1P1Enum: case P1P1GLSEnum:
+						for(i=0;i<iomodel->numberofvertices;i++){
+							if(iomodel->my_vertices[i]){
+								if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){
+									constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));
+									count++;
+								}
+							}
+						}
+						break;
+					case MINIEnum: case MINIcondensedEnum:
+						for(i=0;i<iomodel->numberofvertices;i++){
+							if(iomodel->my_vertices[i]){
+								if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){
+									constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+iomodel->numberofelements+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));
+									count++;
+								}
+							}
+						}
+						break;
+					case TaylorHoodEnum:
+						for(i=0;i<iomodel->numberofvertices;i++){
+							if(iomodel->my_vertices[i]){
+								if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){
+									constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofverticalfaces+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum));
+									count++;
+								}
+							}
+						}
+						break;
+					default:
+						_error_("not implemented yet");
+				}
+			}
+			iomodel->DeleteData(vertices_type,"md.flowequation.vertex_equation");
+			iomodel->DeleteData(surface,"md.geometry.surface");
+			iomodel->DeleteData(z,"md.mesh.z");
+		}
+		else{
+			if(!isMOLHO){
+				IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceAnalysisEnum,finiteelement,0);
+				if(iomodel->domaintype!=Domain2DverticalEnum){
+					IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy",StressbalanceAnalysisEnum,finiteelement,1);
+				}
+			}
+			else{//MOLHO 
+				IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx_base",StressbalanceAnalysisEnum,finiteelement,0);
+				IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx_shear",StressbalanceAnalysisEnum,finiteelement,1);
+				IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy_base",StressbalanceAnalysisEnum,finiteelement,2);
+				IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy_shear",StressbalanceAnalysisEnum,finiteelement,3);
+			}
+		}
+
+		return;
+	}
+
+	/*Constraints: fetch data: */
+	iomodel->FetchData(&spcvx,&Mx,&Nx,"md.stressbalance.spcvx");
+	iomodel->FetchData(&spcvy,&My,&Ny,"md.stressbalance.spcvy");
+	iomodel->FetchData(&spcvz,&Mz,&Nz,"md.stressbalance.spcvz");
+	iomodel->FetchData(&nodeonSSA,NULL,NULL,"md.flowequation.borderSSA");
+	if(iomodel->domaintype==Domain3DEnum)iomodel->FetchData(&nodeonHO,NULL,NULL,"md.flowequation.borderHO");
+	if(iomodel->domaintype==Domain3DEnum)iomodel->FetchData(&nodeonFS,NULL,NULL,"md.flowequation.borderFS");
+	if(iomodel->domaintype==Domain3DEnum)iomodel->FetchData(&nodeonbase,NULL,NULL,"md.mesh.vertexonbase");
+	if(iomodel->domaintype==Domain3DEnum)iomodel->FetchData(&groundedice_ls,NULL,NULL,"md.mask.ocean_levelset");
+	iomodel->FetchData(&vertices_type,NULL,NULL,"md.flowequation.vertex_equation");
+	iomodel->FetchData(&surface,NULL,NULL,"md.geometry.surface");
+	iomodel->FetchData(&z,NULL,NULL,"md.mesh.z");
+
+	/*Initialize counter: */
+	int count=0;
+
+	/*figure out times: */
+	timesx=xNew<IssmDouble>(Nx);
+	for(j=0;j<Nx;j++){
+		timesx[j]=spcvx[(Mx-1)*Nx+j];
+	}
+	/*figure out times: */
+	timesy=xNew<IssmDouble>(Ny);
+	for(j=0;j<Ny;j++){
+		timesy[j]=spcvy[(My-1)*Ny+j];
+	}
+	/*figure out times: */
+	timesz=xNew<IssmDouble>(Nz);
+	for(j=0;j<Nz;j++){
+		timesz[j]=spcvz[(Mz-1)*Nz+j];
+	}
+
+	/*Create spcs from x,y,z, as well as the spc values on those spcs: */
+	for(i=0;i<iomodel->numberofvertices;i++){
+		if(iomodel->my_vertices[i]){
+
+			/*Start with adding spcs of coupling: zero at the border SSA/HO for the appropriate dofs*/
+			if(IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==SSAHOApproximationEnum){
+				/*If grionSSA, spc HO dofs: 3 & 4*/
+					if (reCast<int,IssmDouble>(nodeonHO[i])){
+						constraints->AddObject(new SpcStatic(count+1,i+1,0,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						constraints->AddObject(new SpcStatic(count+1,i+1,1,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						if (!xIsNan<IssmDouble>(spcvx[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,2,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+						if (!xIsNan<IssmDouble>(spcvy[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,3,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+
+					}
+					else if (reCast<int,IssmDouble>(nodeonSSA[i])){
+						constraints->AddObject(new SpcStatic(count+1,i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						constraints->AddObject(new SpcStatic(count+1,i+1,3,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						if (!xIsNan<IssmDouble>(spcvx[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+						if (!xIsNan<IssmDouble>(spcvy[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+
+					}
+					else _error_("if vertices_type is SSAHO, you shoud have nodeonHO or nodeonSSA");
+			}
+			/*Also add spcs of coupling: zero at the border HO/FS for the appropriate dofs*/
+			else if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==HOFSApproximationEnum){
+				/*If grion,HO spc FS dofs: 3 4 & 5*/
+					if (reCast<int,IssmDouble>(nodeonHO[i])){
+						constraints->AddObject(new SpcStatic(count+1,i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						constraints->AddObject(new SpcStatic(count+1,i+1,3,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						constraints->AddObject(new SpcStatic(count+1,i+1,4,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						if (!xIsNan<IssmDouble>(spcvx[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+						if (!xIsNan<IssmDouble>(spcvy[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+
+					}
+					else if (reCast<int,IssmDouble>(nodeonFS[i])){ //spc HO nodes: 1 & 2
+						constraints->AddObject(new SpcStatic(count+1,i+1,0,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						constraints->AddObject(new SpcStatic(count+1,i+1,1,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						if (!xIsNan<IssmDouble>(spcvx[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,2,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+						if (!xIsNan<IssmDouble>(spcvy[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,3,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+						if (!xIsNan<IssmDouble>(spcvz[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,4,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+					}
+					else _error_("if vertices_type is HOFS, you shoud have nodeonHO or nodeonFS");
+			}
+			/*Also add spcs of coupling: zero at the border HO/FS for the appropriate dofs*/
+			else if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==SSAFSApproximationEnum){
+				/*If grion,HO spc FS dofs: 3 4 & 5*/
+					if (reCast<int,IssmDouble>(nodeonSSA[i])){
+						constraints->AddObject(new SpcStatic(count+1,i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						constraints->AddObject(new SpcStatic(count+1,i+1,3,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						constraints->AddObject(new SpcStatic(count+1,i+1,4,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						if (!xIsNan<IssmDouble>(spcvx[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+						if (!xIsNan<IssmDouble>(spcvy[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+
+					}
+					else if (reCast<int,IssmDouble>(nodeonFS[i])){ //spc SSA nodes: 1 & 2
+						constraints->AddObject(new SpcStatic(count+1,i+1,0,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						constraints->AddObject(new SpcStatic(count+1,i+1,1,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+						if (!xIsNan<IssmDouble>(spcvx[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,2,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+						if (!xIsNan<IssmDouble>(spcvy[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,3,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+						if (!xIsNan<IssmDouble>(spcvz[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,4,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+							count++;
+						}
+					}
+					else _error_("if vertices_type is SSAFS, you shoud have nodeonSSA or nodeonFS");
+			}
+			/*Now add the regular spcs*/
+			else{
+				if (Mx==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvx[i])){
+					constraints->AddObject(new SpcStatic(count+1,i+1,0,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+					count++;
+
+				}
+				else if (Mx==iomodel->numberofvertices+1) {
+					/*figure out times and values: */
+					values=xNew<IssmDouble>(Nx);
+					spcpresent=false;
+					for(j=0;j<Nx;j++){
+						values[j]=spcvx[i*Nx+j];
+						if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
+					}
+
+					if(spcpresent){
+						constraints->AddObject(new SpcTransient(count+1,i+1,0,Nx,timesx,values,StressbalanceAnalysisEnum));
+						count++;
+					}
+					xDelete<IssmDouble>(values);
+				}
+				else if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==SIAApproximationEnum){
+					constraints->AddObject(new SpcDynamic(count+1,i+1,0,0.,StressbalanceAnalysisEnum));
+					count++;
+				}
+
+				if (My==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvy[i])){
+					constraints->AddObject(new SpcStatic(count+1,i+1,1,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vy.
+					count++;
+				}
+				else if (My==iomodel->numberofvertices+1){
+					/*figure out times and values: */
+					values=xNew<IssmDouble>(Ny);
+					spcpresent=false;
+					for(j=0;j<Ny;j++){
+						values[j]=spcvy[i*Ny+j];
+						if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
+					}
+					if(spcpresent){
+						constraints->AddObject(new SpcTransient(count+1,i+1,1,Ny,timesy,values,StressbalanceAnalysisEnum));
+						count++;
+					}
+					xDelete<IssmDouble>(values);
+				}
+				else if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==SIAApproximationEnum){
+					constraints->AddObject(new SpcDynamic(count+1,i+1,1,0.,StressbalanceAnalysisEnum));
+					count++;
+				}
+
+				if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==FSApproximationEnum ||  (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum)){
+					if (Mz==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvz[i])){
+						constraints->AddObject(new SpcStatic(count+1,i+1,2,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
+						count++;
+					}
+					else if (Mz==iomodel->numberofvertices+1){
+						/*figure out times and values: */
+						values=xNew<IssmDouble>(Nz);
+						spcpresent=false;
+						for(j=0;j<Nz;j++){
+							values[j]=spcvz[i*Nz+j];
+							if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
+						}
+						if(spcpresent){
+							constraints->AddObject(new SpcTransient(count+1,i+1,2,Nz,timesz,values,StressbalanceAnalysisEnum));
+							count++;
+						}
+						xDelete<IssmDouble>(values);
+					}
+
+				}
+				if (IoCodeToEnumVertexEquation(reCast<int>(vertices_type[i]))==NoneApproximationEnum){
+					constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+i+1,0,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
+					count++;
+				}
+			}
+		}
+	}
+
+	/*Free data: */
+	iomodel->DeleteData(spcvx,"md.stressbalance.spcvx");
+	iomodel->DeleteData(spcvy,"md.stressbalance.spcvy");
+	iomodel->DeleteData(spcvz,"md.stressbalance.spcvz");
+	iomodel->DeleteData(nodeonSSA,"md.flowequation.borderSSA");
+	if(iomodel->domaintype==Domain3DEnum)iomodel->DeleteData(nodeonHO,"md.flowequation.borderHO");
+	if(iomodel->domaintype==Domain3DEnum)iomodel->DeleteData(nodeonFS,"md.flowequation.borderFS");
+	if(iomodel->domaintype==Domain3DEnum)iomodel->DeleteData(nodeonbase,"md.mesh.vertexonbase");
+	if(iomodel->domaintype==Domain3DEnum)iomodel->DeleteData(groundedice_ls,"md.mask.ocean_levelset");
+	iomodel->DeleteData(vertices_type,"md.flowequation.vertex_equation");
+	iomodel->DeleteData(surface,"md.geometry.surface");
+	iomodel->DeleteData(z,"md.mesh.z");
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(timesx);
+	xDelete<IssmDouble>(timesy);
+	xDelete<IssmDouble>(timesz);
+	xDelete<IssmDouble>(values);
+
+}/*}}}*/
+void StressbalanceAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Intermediary*/
+	const int   RIFTINFOSIZE = 12;
+	int         i;
+	int         count;
+	int         penpair_ids[2];
+	bool        isSSA,isL1L2,isMOLHO,isHO,isFS;
+	int         numpenalties,numrifts,numriftsegments;
+	IssmDouble *riftinfo       = NULL;
+	IssmDouble *penalties      = NULL;
+	int         assert_int;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
+	iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO");
+	iomodel->FindConstant(&isFS,"md.flowequation.isFS");
+	iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
+	iomodel->FindConstant(&isHO,"md.flowequation.isHO");
+	iomodel->FindConstant(&numrifts,"md.rifts.numrifts");
+
+	/*Is this SIA only?*/
+	if(!isSSA && !isHO && !isFS && !isL1L2 && !isMOLHO) return;
+
+	/*Initialize counter: */
+	count=0;
+
+	/*Create Penpair for penalties: */
+	iomodel->FetchData(&penalties,&numpenalties,NULL,"md.stressbalance.vertex_pairing");
+
+	for(i=0;i<numpenalties;i++){
+
+		if(iomodel->my_vertices[reCast<int,IssmDouble>(penalties[2*i+0]-1)]){
+
+			/*In debugging mode, check that the second node is in the same cpu*/
+			assert_int=iomodel->my_vertices[reCast<int,IssmDouble>(penalties[2*i+1]-1)]; _assert_(assert_int);
+
+			/*Get node ids*/
+			penpair_ids[0]=reCast<int,IssmDouble>(penalties[2*i+0]);
+			penpair_ids[1]=reCast<int,IssmDouble>(penalties[2*i+1]);
+
+			/*Create Load*/
+			loads->AddObject(new Penpair(count+1,&penpair_ids[0]));
+			count++;
+		}
+	}
+
+	/*Free resources: */
+	iomodel->DeleteData(penalties,"md.stressbalance.vertex_pairing");
+
+	/*Create Riffront loads for rifts: */
+	if(numrifts){
+		iomodel->FetchData(&riftinfo,&numriftsegments,NULL,"md.rifts.riftstruct");
+		iomodel->FetchData(5,"md.rifts.riftstruct","md.geometry.thickness","md.geometry.base","md.geometry.surface","md.mask.ocean_levelset");
+		for(i=0;i<numriftsegments;i++){
+			if(iomodel->my_elements[reCast<int,IssmDouble>(*(riftinfo+RIFTINFOSIZE*i+2))-1]){
+				loads->AddObject(new Riftfront(count+1,i,iomodel));
+				count++;
+			}
+		}
+		iomodel->DeleteData(5,"md.rifts.riftstruct","md.geometry.thickness","md.geometry.base","md.geometry.surface","md.mask.ocean_levelset");
+		xDelete<IssmDouble>(riftinfo);
+	}
+}/*}}}*/
+void StressbalanceAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	/*Intermediary*/
+	bool isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling;
+	int  finiteelement=-1,approximation=-1;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
+	iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
+	iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO");
+	iomodel->FindConstant(&isHO,"md.flowequation.isHO");
+	iomodel->FindConstant(&isFS,"md.flowequation.isFS");
+
+	/*Now, check that we have non SIA elements */
+	if(!isSSA && !isL1L2 && !isMOLHO && !isHO && !isFS) return;
+
+	/*Do we have coupling*/
+	if( (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
+	 iscoupling = true;
+	else
+	 iscoupling = false;
+
+	/*If no coupling, call Regular CreateNodes, else, use P1 elements only*/
+	if(!iscoupling){
+
+		/*Get finite element type*/
+		if(isSSA){
+			approximation=SSAApproximationEnum;
+			iomodel->FindConstant(&finiteelement,"md.flowequation.fe_SSA");
+		}
+		else if(isL1L2){
+			approximation = L1L2ApproximationEnum;
+			finiteelement = P1Enum;
+		}
+		else if(isMOLHO){
+			approximation = MOLHOApproximationEnum;
+			finiteelement = P1Enum;
+		}
+		else if(isHO){
+			approximation = HOApproximationEnum;
+			iomodel->FindConstant(&finiteelement,"md.flowequation.fe_HO");
+		}
+		else if(isFS){
+			approximation = FSApproximationEnum;
+			iomodel->FindConstant(&finiteelement,"md.flowequation.fe_FS");
+		}
+		if(!isamr){
+			iomodel->FetchData(3,"md.flowequation.borderSSA","md.flowequation.vertex_equation","md.stressbalance.referential");
+			if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(3,"md.mesh.vertexonbase","md.mesh.vertexonsurface","md.flowequation.borderFS");
+		}
+		::CreateNodes(nodes,iomodel,StressbalanceAnalysisEnum,finiteelement,isamr,approximation);
+		if(!isamr){
+			iomodel->DeleteData(6,"md.mesh.vertexonbase","md.mesh.vertexonsurface","md.flowequation.borderSSA","md.flowequation.vertex_equation",
+					"md.stressbalance.referential","md.flowequation.borderFS");
+		}
+	}
+	else{
+		/*Coupling: we are going to create P1 Elements only*/
+		iomodel->FetchData(6,"md.mesh.vertexonbase","md.mesh.vertexonsurface","md.flowequation.borderSSA","md.flowequation.borderFS",
+					"md.flowequation.vertex_equation","md.stressbalance.referential");
+		if(isFS){
+			int* approximations = xNew<int>(2*iomodel->numberofvertices+iomodel->numberofelements);
+			for(int i=0;i<iomodel->numberofvertices;i++){
+				approximation = IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]));
+				if(approximation==FSApproximationEnum)  approximation=FSvelocityEnum;
+				approximations[i] = approximation;
+			}
+			for(int i=0;i<iomodel->numberofelements;i++) approximations[iomodel->numberofvertices+i] = FSvelocityEnum;
+			for(int i=0;i<iomodel->numberofvertices;i++) approximations[iomodel->numberofvertices+iomodel->numberofelements+i] = FSpressureEnum;
+			::CreateNodes(nodes,iomodel,StressbalanceAnalysisEnum,MINIcondensedEnum,isamr,0,approximations);
+			xDelete<int>(approximations);
+
+			for(Object* & object: nodes->objects){
+				Node* node=xDynamicCast<Node*>(object);
+				int   sid = node->Sid();
+				if(sid>=iomodel->numberofvertices+iomodel->numberofelements){
+					/*Constrain pressure if not FS*/
+					int id = sid - (iomodel->numberofvertices+iomodel->numberofelements);
+					approximation=IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[id]));
+					if(approximation==HOApproximationEnum || approximation==SSAApproximationEnum){
+						node->Deactivate();
+					}
+				}
+			}
+		}
+		else{
+			int* approximations = xNew<int>(iomodel->numberofvertices);
+			for(int i=0;i<iomodel->numberofvertices;i++) approximations[i] = IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]));
+			::CreateNodes(nodes,iomodel,StressbalanceAnalysisEnum,P1Enum,isamr,0,approximations);
+			xDelete<int>(approximations);
+		}
+		iomodel->DeleteData(6,"md.mesh.vertexonbase","md.mesh.vertexonsurface","md.flowequation.borderSSA","md.flowequation.borderFS",
+					"md.flowequation.vertex_equation","md.stressbalance.referential");
+	}
+}/*}}}*/
+int  StressbalanceAnalysis::DofsPerNode(int** pdoftype,int domaintype,int approximation){/*{{{*/
+
+	/*output*/
+	int *doftype = NULL;
+	int  numdofs;
+
+	switch(approximation){
+		case SSAApproximationEnum:
+			 switch(domaintype){
+				 case Domain3DEnum:           numdofs=2; break;
+				 case Domain2DhorizontalEnum: numdofs=2; break;
+				 case Domain2DverticalEnum:   numdofs=1; break;
+				 default: _error_("mesh type not supported yet");
+			 }
+			 break;
+		case L1L2ApproximationEnum: numdofs = 2; break;
+		case MOLHOApproximationEnum: numdofs = 4; break;
+		case HOApproximationEnum:
+			 switch(domaintype){
+				 case Domain3DEnum:         numdofs=2; break;
+				 case Domain2DverticalEnum: numdofs=1; break;
+				 default: _error_("mesh type not supported yet");
+			 }
+			 break;
+		case SIAApproximationEnum:  numdofs =2; break;
+		case FSvelocityEnum:
+			 switch(domaintype){
+				 case Domain3DEnum:         numdofs=3; break;
+				 case Domain2DverticalEnum: numdofs=2; break;
+				 default: _error_("mesh type not supported yet");
+			}
+			break;
+		case FSpressureEnum: numdofs=1; break;
+		case NoneApproximationEnum:
+			 switch(domaintype){
+				 case Domain3DEnum:         numdofs=4; break;
+				 case Domain2DverticalEnum: numdofs=3; break;
+				 default: _error_("mesh type not supported yet");
+			}
+			break;
+		case SSAHOApproximationEnum:
+			numdofs=4;
+			doftype=xNew<int>(numdofs);
+			doftype[0]=SSAApproximationEnum;
+			doftype[1]=SSAApproximationEnum;
+			doftype[2]=HOApproximationEnum;
+			doftype[3]=HOApproximationEnum;
+			break;
+		case HOFSApproximationEnum:
+			numdofs=5;
+			doftype=xNew<int>(numdofs);
+			doftype[0]=HOApproximationEnum;
+			doftype[1]=HOApproximationEnum;
+			doftype[2]=FSvelocityEnum;
+			doftype[3]=FSvelocityEnum;
+			doftype[4]=FSvelocityEnum;
+			break;
+		case SSAFSApproximationEnum:
+			numdofs=5;
+			doftype=xNew<int>(numdofs);
+			doftype[0]=SSAApproximationEnum;
+			doftype[1]=SSAApproximationEnum;
+			doftype[2]=FSvelocityEnum;
+			doftype[3]=FSvelocityEnum;
+			doftype[4]=FSvelocityEnum;
+			break;
+		default:
+			_error_("Approximation " << EnumToStringx(approximation) << " not implemented yet");
+	}
+
+	/*Assign output pointer and return*/
+	*pdoftype = doftype;
+	return numdofs;
+}/*}}}*/
+void StressbalanceAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Intermediaries*/
+	int    materials_type,finiteelement,fe_FS;
+	int    approximation;
+	int*   finiteelement_list=NULL;
+	bool   isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling;
+	bool   control_analysis;
+	bool   dakota_analysis;
+	bool   ismovingfront;
+
+	/*Fetch constants needed: */
+	iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
+	iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
+	iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO");
+	iomodel->FindConstant(&isHO,"md.flowequation.isHO");
+	iomodel->FindConstant(&isFS,"md.flowequation.isFS");
+	iomodel->FindConstant(&control_analysis,"md.inversion.iscontrol");
+	iomodel->FindConstant(&dakota_analysis,"md.qmu.isdakota");
+	iomodel->FindConstant(&materials_type,"md.materials.type");
+	iomodel->FindConstant(&ismovingfront,"md.transient.ismovingfront");
+
+	/*return if no processing required*/
+	if(!isSSA && !isL1L2 && !isMOLHO && !isHO && !isFS) return;
+
+	/*Fetch data needed and allocate vectors: */
+	iomodel->FetchData(1,"md.flowequation.element_equation");
+	finiteelement_list=xNewZeroInit<int>(iomodel->numberofelements);
+
+	/*Do we have coupling*/
+	if( (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
+	 iscoupling = true;
+	else
+	 iscoupling = false;
+
+	/*Get finite element type*/
+	if(!iscoupling){
+		if(isSSA)       iomodel->FindConstant(&finiteelement,"md.flowequation.fe_SSA");
+		else if(isL1L2) finiteelement = P1Enum;
+		else if(isMOLHO) finiteelement = P1Enum;
+		else if(isHO)   iomodel->FindConstant(&finiteelement,"md.flowequation.fe_HO");
+		else if(isFS)   iomodel->FindConstant(&finiteelement,"md.flowequation.fe_FS");
+		for(int i=0;i<iomodel->numberofelements;i++){
+			finiteelement_list[i]=finiteelement;
+		}
+	}
+	else{
+		if(isFS){
+			for(int i=0;i<iomodel->numberofelements;i++){
+				approximation=IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[i]));
+				if(approximation==FSApproximationEnum || approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+					finiteelement_list[i]=MINIcondensedEnum;
+				}
+				else{
+					finiteelement_list[i]=P1Enum;
+				}
+			}
+		}
+		else{
+			finiteelement = P1Enum;
+			for(int i=0;i<iomodel->numberofelements;i++){
+				finiteelement_list[i]=finiteelement;
+			}
+		}
+	}
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,finiteelement_list[i]);
+
+			/*Need to know the type of approximation for this element*/
+			if(iomodel->Data("md.flowequation.element_equation")){
+				inputs->SetInput(ApproximationEnum,counter,IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[i])));
+			}
+
+			counter++;
+		}
+	}
+
+	/*Create inputs: */
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum,0.);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum,0.);
+	/*MOLHO*/
+	if(isMOLHO){
+		iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxShearEnum,0.);
+		iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyShearEnum,0.);
+		/*3D MOLHO also need to have VxBase and VyBase for reconstruting Vx and Vy*/
+		if (iomodel->domaintype==Domain3DEnum) {
+			iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxBaseEnum,0.);
+			iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyBaseEnum,0.);
+		}
+	}
+   if(iomodel->domaintype==Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxBaseEnum,0.);
+		iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyBaseEnum,0.);
+		iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxSurfaceEnum,0.);
+		iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VySurfaceEnum,0.);
+	}
+	iomodel->FetchDataToInput(inputs,elements,"md.stressbalance.loadingforcex",LoadingforceXEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.stressbalance.loadingforcey",LoadingforceYEnum);
+	#ifdef LATERALFRICTION
+	iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonboundary",MeshVertexonboundaryEnum);
+	#endif
+
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+	if(iomodel->domaintype==Domain3DEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.flowequation.borderFS",FlowequationBorderFSEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.stressbalance.loadingforcez",LoadingforceZEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.initialization.vz",VzEnum,0.);
+	}
+	if(isFS){
+		iomodel->FetchDataToInput(inputs,elements,"md.initialization.pressure",PressureEnum,0.);
+
+		/*Add basal forcings to compute melt rate*/
+		bool isstochastic;
+	   int basalforcing_model;
+	   int melt_parameterization;
+	   iomodel->FindConstant(&basalforcing_model,"md.basalforcings.model");
+	   iomodel->FindConstant(&isstochastic,"md.stochasticforcing.isstochasticforcing");
+	   iomodel->FindConstant(&melt_parameterization,"md.frontalforcings.parameterization");
+		switch(basalforcing_model){
+			case FloatingMeltRateEnum:
+				iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.floatingice_melting_rate",BasalforcingsFloatingiceMeltingRateEnum);
+				if(isstochastic){
+					iomodel->FetchDataToInput(inputs,elements,"md.stochasticforcing.default_id",StochasticForcingDefaultIdEnum);
+					iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.floatingice_melting_rate",BaselineBasalforcingsFloatingiceMeltingRateEnum);
+				}
+				break;
+			case LinearFloatingMeltRateEnum:
+				break;
+			case MismipFloatingMeltRateEnum:
+				iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum);
+				break;
+			case MantlePlumeGeothermalFluxEnum:
+				break;
+			case SpatialLinearFloatingMeltRateEnum:
+				iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.deepwater_melting_rate",BasalforcingsSpatialDeepwaterMeltingRateEnum);
+				iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.deepwater_elevation",BasalforcingsSpatialDeepwaterElevationEnum);
+				iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.upperwater_melting_rate",BasalforcingsSpatialUpperwaterMeltingRateEnum);
+				iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.upperwater_elevation",BasalforcingsSpatialUpperwaterElevationEnum);
+				if(isstochastic){
+					iomodel->FetchDataToInput(inputs,elements,"md.stochasticforcing.default_id",StochasticForcingDefaultIdEnum);
+					iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.deepwater_melting_rate",BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum);
+				}
+				break;
+			case BasalforcingsPicoEnum:
+				iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.basin_id",BasalforcingsPicoBasinIdEnum);
+				iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.overturning_coeff",BasalforcingsPicoOverturningCoeffEnum);
+				break;
+			case BasalforcingsIsmip6Enum:
+				iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.basin_id",BasalforcingsIsmip6BasinIdEnum);
+				break;
+			case BeckmannGoosseFloatingMeltRateEnum:
+				bool isthermalforcing;
+				iomodel->FindConstant(&isthermalforcing,"md.basalforcings.isthermalforcing");
+      	   iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum);
+      	   if(isthermalforcing==0){
+      	      iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.ocean_salinity",BasalforcingsOceanSalinityEnum);
+      	      iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.ocean_temp",BasalforcingsOceanTempEnum);
+      	   }
+      	   else if(melt_parameterization!=FrontalForcingsRignotarmaEnum){
+      	      iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.ocean_thermalforcing",ThermalForcingEnum);
+      	   }
+				break;
+			default:
+				_error_("Basal forcing model "<<EnumToStringx(basalforcing_model)<<" not supported yet");
+		}
+	}
+	/*LATH parameters*/
+	iomodel->FindConstant(&fe_FS,"md.flowequation.fe_FS");
+	if(fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum){
+		InputUpdateFromConstantx(inputs,elements,0.,SigmaNNEnum);
+	}
+
+	/*Friction*/
+	FrictionUpdateInputs(elements, inputs, iomodel);
+
+	/*Free data: */
+	iomodel->DeleteData(1,"md.flowequation.element_equation");
+	xDelete<int>(finiteelement_list);
+}/*}}}*/
+void StressbalanceAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	/*Intermediaries*/
+	int     fe_FS;
+	int     numoutputs;
+	char**  requestedoutputs = NULL;
+	int     materials_type;
+
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isSIA",FlowequationIsSIAEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isSSA",FlowequationIsSSAEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isL1L2",FlowequationIsL1L2Enum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isMOLHO",FlowequationIsMOLHOEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isHO",FlowequationIsHOEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isFS",FlowequationIsFSEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.fe_FS",FlowequationFeFSEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isNitscheBC",FlowequationIsNitscheEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.FSNitscheGamma",FeFSNitscheGammaEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.restol",StressbalanceRestolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.reltol",StressbalanceReltolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.abstol",StressbalanceAbstolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.isnewton",StressbalanceIsnewtonEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.maxiter",StressbalanceMaxiterEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.penalty_factor",StressbalancePenaltyFactorEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.rift_penalty_threshold",StressbalanceRiftPenaltyThresholdEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.FSreconditioning",StressbalanceFSreconditioningEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.shelf_dampening",StressbalanceShelfDampeningEnum));
+
+	/*XTH LATH parameters*/
+	iomodel->FindConstant(&fe_FS,"md.flowequation.fe_FS");
+	if(fe_FS==XTaylorHoodEnum || fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum){
+		parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.augmented_lagrangian_r",AugmentedLagrangianREnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.augmented_lagrangian_rlambda",AugmentedLagrangianRlambdaEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.XTH_theta",AugmentedLagrangianThetaEnum));
+	}
+
+	iomodel->FindConstant(&materials_type,"md.materials.type");
+	if(materials_type==MatdamageiceEnum){
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.law",DamageLawEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.kappa",DamageKappaEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.damage.stress_threshold",DamageStressThresholdEnum));
+	}
+
+	/*Requested outputs*/
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.stressbalance.requested_outputs");
+	parameters->AddObject(new IntParam(StressbalanceNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(StressbalanceRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.stressbalance.requested_outputs");
+
+	/*Friction*/
+	FrictionUpdateParameters(parameters, iomodel);
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           StressbalanceAnalysis::Core(FemModel* femmodel){/*{{{*/
+
+	/*Intermediaries*/
+	bool isSSA,isL1L2,isMOLHO,isHO,isFS;
+	bool conserve_loads = true;
+	int  newton,domaintype,fe_FS;
+
+	/* recover parameters:*/
+	femmodel->parameters->FindParam(&isSSA,FlowequationIsSSAEnum);
+	femmodel->parameters->FindParam(&isL1L2,FlowequationIsL1L2Enum);
+	femmodel->parameters->FindParam(&isMOLHO,FlowequationIsMOLHOEnum);
+	femmodel->parameters->FindParam(&isHO,FlowequationIsHOEnum);
+	femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
+	femmodel->parameters->FindParam(&fe_FS,FlowequationFeFSEnum);
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&newton,StressbalanceIsnewtonEnum);
+
+	if(isFS && !(isSSA || isHO || isL1L2 || isMOLHO)){
+		femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+
+		bool is_schur_cg_solver = false;
+		#ifdef _HAVE_PETSC_
+		int solver_type;
+		PetscOptionsDetermineSolverType(&solver_type);
+
+		if(solver_type==FSSolverEnum) is_schur_cg_solver = true;
+		#endif
+
+		if(is_schur_cg_solver)
+		 solutionsequence_schurcg(femmodel);
+		else if (fe_FS==XTaylorHoodEnum)
+		 solutionsequence_la_theta(femmodel);
+		else if (fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum)
+		 solutionsequence_la(femmodel);
+		else if(newton>0)
+		 solutionsequence_newton(femmodel);
+		else
+		 solutionsequence_nonlinear(femmodel,conserve_loads);
+	}
+	else if(!isFS && (isSSA || isHO || isL1L2 || isMOLHO)){
+		femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+		if(newton>0)
+		 solutionsequence_newton(femmodel);
+		else
+		 solutionsequence_nonlinear(femmodel,conserve_loads);
+
+		if(domaintype==Domain2DverticalEnum && isSSA){
+			femmodel->parameters->SetParam(VxEnum,InputToExtrudeEnum);
+			extrudefrombase_core(femmodel);
+			femmodel->parameters->SetParam(VelEnum,InputToExtrudeEnum);
+			extrudefrombase_core(femmodel);
+		}
+	}
+	else if ((isSSA || isL1L2 || isMOLHO || isHO) && isFS){
+		if(VerboseSolution()) _printf0_("   computing coupling between lower order models and FS\n");
+		solutionsequence_FScoupling_nonlinear(femmodel,conserve_loads);
+	}
+	else{
+		_error_("not supported");
+	}
+
+}/*}}}*/
+void           StressbalanceAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreateDVector(Element* element){/*{{{*/
+
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	switch(approximation){
+		case FSApproximationEnum:
+			return CreateDVectorFS(element);
+		default:
+			return NULL; //no need for doftypes outside of FS approximation
+	}
+	return NULL;
+
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	switch(approximation){
+		case SSAApproximationEnum:
+			return CreateJacobianMatrixSSA(element);
+		case HOApproximationEnum:
+			return CreateJacobianMatrixHO(element);
+		case FSApproximationEnum:
+			return CreateJacobianMatrixFS(element);
+		case NoneApproximationEnum:
+			return NULL;
+		default:
+			_error_("Approximation "<<EnumToStringx(approximation)<<" not supported");
+	}
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	switch(approximation){
+		case SIAApproximationEnum:
+			return NULL;
+		case SSAApproximationEnum:
+			return CreateKMatrixSSA(element);
+		case L1L2ApproximationEnum:
+			return CreateKMatrixL1L2(element);
+		case MOLHOApproximationEnum:
+			return CreateKMatrixMOLHO(element);
+		case HOApproximationEnum:
+			return CreateKMatrixHO(element);
+		case FSApproximationEnum:
+			return CreateKMatrixFS(element);
+		case SSAHOApproximationEnum:
+			return CreateKMatrixSSAHO(element);
+		case HOFSApproximationEnum:
+			return CreateKMatrixHOFS(element);
+		case SSAFSApproximationEnum:
+			return CreateKMatrixSSAFS(element);
+		case NoneApproximationEnum:
+			return NULL;
+		default:
+			_error_("Approximation "<<EnumToStringx(approximation)<<" not supported");
+	}
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	switch(approximation){
+		case SIAApproximationEnum:
+			return NULL;
+		case SSAApproximationEnum:
+			return CreatePVectorSSA(element);
+		case L1L2ApproximationEnum:
+			return CreatePVectorL1L2(element);
+		case MOLHOApproximationEnum:
+			return CreatePVectorMOLHO(element);
+		case HOApproximationEnum:
+			return CreatePVectorHO(element);
+		case FSApproximationEnum:
+			return CreatePVectorFS(element);
+		case SSAHOApproximationEnum:
+			return CreatePVectorSSAHO(element);
+		case HOFSApproximationEnum:
+			return CreatePVectorHOFS(element);
+		case SSAFSApproximationEnum:
+			return CreatePVectorSSAFS(element);
+		case NoneApproximationEnum:
+			return NULL;
+		default:
+			_error_("Approximation "<<EnumToStringx(approximation)<<" not supported");
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	switch(approximation){
+		case FSApproximationEnum: case NoneApproximationEnum:
+			GetSolutionFromInputsFS(solution,element);
+			return;
+		case SSAApproximationEnum: case HOApproximationEnum: case L1L2ApproximationEnum: case SIAApproximationEnum:
+			GetSolutionFromInputsHoriz(solution,element);
+			return;
+		case MOLHOApproximationEnum:
+			GetSolutionFromInputsMOLHO(solution,element);
+			return;
+		case SSAHOApproximationEnum: case HOFSApproximationEnum: case SSAFSApproximationEnum:
+			/*the elements around will create the solution*/
+			return;
+		default:
+			_error_("Approximation "<<EnumToStringx(approximation)<<"("<<approximation<<") not supported");
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::GetSolutionFromInputsHoriz(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+
+	IssmDouble   vx,vy;
+	int          domaintype,dim,approximation,dofpernode;
+	int*         doflist = NULL;
+
+	/*Get some parameters*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum: dim = 2; dofpernode = 2; break;
+		case Domain2DverticalEnum:   dim = 2; dofpernode = 1; break;
+		case Domain3DEnum:           dim = 3; dofpernode = 2; break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*dofpernode;
+	element->GetInputValue(&approximation,ApproximationEnum);
+
+	/*Fetch dof list and allocate solution vector*/
+	element->GetDofList(&doflist,approximation,GsetEnum);
+	IssmDouble* values = xNew<IssmDouble>(numdof);
+
+	/*Get inputs*/
+	Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=NULL;
+	if(domaintype!=Domain2DverticalEnum){vy_input=element->GetInput(VyEnum); _assert_(vy_input);}
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+	Gauss* gauss=element->NewGauss();
+	for(int i=0;i<numnodes;i++){
+		gauss->GaussNode(element->FiniteElement(),i);
+
+		/*Recover vx and vy*/
+		vx_input->GetInputValue(&vx,gauss);
+		values[i*dofpernode+0]=vx;
+		if(dofpernode==2){
+			vy_input->GetInputValue(&vy,gauss);
+			values[i*dofpernode+1]=vy;
+		}
+	}
+
+	solution->SetValues(numdof,doflist,values,INS_VAL);
+
+	/*Free resources:*/
+	delete gauss;
+	xDelete<IssmDouble>(values);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           StressbalanceAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	switch(approximation){
+		case FSApproximationEnum: case NoneApproximationEnum:
+			InputUpdateFromSolutionFS(solution,element);
+			return;
+		case SIAApproximationEnum:
+			return;
+		case SSAApproximationEnum:
+			InputUpdateFromSolutionSSA(solution,element);
+			return;
+		case HOApproximationEnum:
+			InputUpdateFromSolutionHO(solution,element);
+			return;
+		case L1L2ApproximationEnum:
+			InputUpdateFromSolutionL1L2(solution,element);
+			return;
+		case MOLHOApproximationEnum:
+			InputUpdateFromSolutionMOLHO(solution,element);
+			return;
+		case SSAHOApproximationEnum:
+			InputUpdateFromSolutionSSAHO(solution,element);
+			return;
+		case HOFSApproximationEnum:
+			InputUpdateFromSolutionHOFS(solution,element);
+			return;
+		case SSAFSApproximationEnum:
+			InputUpdateFromSolutionSSAFS(solution,element);
+			return;
+		default:
+			_error_("Approximation "<<EnumToStringx(approximation)<<" not supported");
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
+
+/*SSA*/
+ElementMatrix* StressbalanceAnalysis::CreateJacobianMatrixSSA(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement(true);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Intermediaries */
+	IssmDouble Jdet,thickness;
+	IssmDouble eps1dotdphii,eps1dotdphij;
+	IssmDouble eps2dotdphii,eps2dotdphij;
+	IssmDouble mu_prime;
+	IssmDouble epsilon[3];/* epsilon=[exx,eyy,exy];*/
+	IssmDouble eps1[2],eps2[2];
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element matrix, vectors and Gaussian points*/
+	ElementMatrix* Ke=this->CreateKMatrixSSA(element); //Initialize Jacobian with regular SSA (first part of the Gateau derivative)
+	IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* thickness_input = basalelement->GetInput(ThicknessEnum);_assert_(thickness_input);
+	Input* vx_input        = basalelement->GetInput(VxEnum);       _assert_(vx_input);
+	Input* vy_input        = basalelement->GetInput(VyEnum);       _assert_(vy_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		thickness_input->GetInputValue(&thickness, gauss);
+		basalelement->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+		basalelement->material->ViscositySSADerivativeEpsSquare(&mu_prime,&epsilon[0],gauss);
+		eps1[0]=2*epsilon[0]+epsilon[1];   eps2[0]=epsilon[2];
+		eps1[1]=epsilon[2];                eps2[1]=epsilon[0]+2*epsilon[1];
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				eps1dotdphii=eps1[0]*dbasis[0*numnodes+i]+eps1[1]*dbasis[1*numnodes+i];
+				eps1dotdphij=eps1[0]*dbasis[0*numnodes+j]+eps1[1]*dbasis[1*numnodes+j];
+				eps2dotdphii=eps2[0]*dbasis[0*numnodes+i]+eps2[1]*dbasis[1*numnodes+i];
+				eps2dotdphij=eps2[0]*dbasis[0*numnodes+j]+eps2[1]*dbasis[1*numnodes+j];
+
+				Ke->values[2*numnodes*(2*i+0)+2*j+0]+=gauss->weight*Jdet*2.*mu_prime*thickness*eps1dotdphij*eps1dotdphii;
+				Ke->values[2*numnodes*(2*i+0)+2*j+1]+=gauss->weight*Jdet*2.*mu_prime*thickness*eps2dotdphij*eps1dotdphii;
+				Ke->values[2*numnodes*(2*i+1)+2*j+0]+=gauss->weight*Jdet*2.*mu_prime*thickness*eps1dotdphij*eps2dotdphii;
+				Ke->values[2*numnodes*(2*i+1)+2*j+1]+=gauss->weight*Jdet*2.*mu_prime*thickness*eps2dotdphij*eps2dotdphii;
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	basalelement->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+
+	/*clean-up and return*/
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixSSA(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum: case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement(true);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixSSAViscous(basalelement);
+	ElementMatrix* Ke2=CreateKMatrixSSAFriction(basalelement);
+	#ifdef LATERALFRICTION
+	ElementMatrix* Ke3=CreateKMatrixSSALateralFriction(basalelement);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2,Ke3);
+	delete Ke3;
+	#else
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+	#endif
+
+	/*clean-up and return*/
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixSSAFriction(Element* element){/*{{{*/
+
+	/*Return if element is inactive*/
+	if(element->IsAllFloating() || !element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int         dim,domaintype;
+	bool        mainlyfloating;
+	int         friction_style,point1;
+	IssmDouble  alpha2,Jdet,fraction1,fraction2;
+	IssmDouble  gllevelset,phi=1.;
+	IssmDouble *xyz_list  = NULL;
+	Gauss*      gauss     = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1;break;
+		case Domain2DhorizontalEnum: dim = 2;break;
+		case Domain3DEnum:           dim = 2;break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*dim;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke = element->NewElementMatrix(SSAApproximationEnum);
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&friction_style,GroundinglineFrictionInterpolationEnum);
+	Input* surface_input    = element->GetInput(SurfaceEnum); _assert_(surface_input);
+	Input* gllevelset_input = NULL;
+
+	/*build friction object, used later on: */
+	Friction* friction=new Friction(element,dim);
+
+	/*Recover portion of element that is grounded*/
+	if(!(friction_style==SubelementFriction2Enum)) phi=element->GetGroundedPortion(xyz_list);
+	if(friction_style==SubelementFriction2Enum){
+		gllevelset_input=element->GetInput(MaskOceanLevelsetEnum); _assert_(gllevelset_input);
+		element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+	   gauss = element->NewGauss(point1,fraction1,fraction2,mainlyfloating,2);
+	}
+	else{
+		gauss = element->NewGauss(2);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	while(gauss->next()){
+
+		friction->GetAlpha2(&alpha2,gauss);
+		if(friction_style==SubelementFriction1Enum) alpha2=phi*alpha2;
+		else if(friction_style==SubelementFriction2Enum){
+			gllevelset_input->GetInputValue(&gllevelset, gauss);
+			if(gllevelset<0.) alpha2=0.;
+		}
+		else if(friction_style==NoFrictionOnPartiallyFloatingEnum){
+			if (phi<0.99999999) alpha2=0.;
+		}
+		else  _error_("friction interpolation "<<EnumToStringx(friction_style)<<" not implemented yet");
+
+		element->NodalFunctions(basis,gauss);
+		element->JacobianDeterminant(&Jdet, xyz_list,gauss);
+
+		if(dim==2){
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[2*i*2*numnodes+2*j]       += alpha2*gauss->weight*Jdet*basis[i]*basis[j];
+					Ke->values[(2*i+1)*2*numnodes+2*j+1] += alpha2*gauss->weight*Jdet*basis[i]*basis[j];
+				}
+			}
+		}
+		else{
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += alpha2*gauss->weight*Jdet*basis[i]*basis[j];
+				}
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	if(dim==2) element->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	delete friction;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixSSALateralFriction(Element* element){/*{{{*/
+
+	/*Return if element is inactive*/
+	if(!element->IsIceInElement()) return NULL;
+
+	/*If no boundary, return NULL*/
+	if(!element->IsFaceOnBoundary()) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  alpha2;
+	IssmDouble  Jdet;
+	int         domaintype;
+	IssmDouble  icefront;
+	IssmDouble *xyz_list          = NULL;
+	IssmDouble *xyz_list_boundary = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype==Domain2DverticalEnum) return NULL; //not supported yet
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int dim      = 2;
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*dim;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke = element->NewElementMatrix(SSAApproximationEnum);
+	IssmDouble*    B  = xNew<IssmDouble>(dim*numdof);
+	IssmDouble*    D  = xNewZeroInit<IssmDouble>(dim*dim);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetLevelCoordinates(&xyz_list_boundary,xyz_list,MeshVertexonboundaryEnum,1.);
+	Input* icelevelset_input = element->GetInput(MaskIceLevelsetEnum); _assert_(icelevelset_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(xyz_list,xyz_list_boundary,3);
+	while(gauss->next()){
+
+		this->GetBSSAFriction(B,element,dim,xyz_list,gauss);
+		element->JacobianDeterminantSurface(&Jdet,xyz_list_boundary,gauss);
+		icelevelset_input->GetInputValue(&icefront, gauss);
+		if(icefront==0.)
+		 alpha2=0.;
+		else
+		 alpha2=2.e+12;
+		for(int i=0;i<dim;i++) D[i*dim+i]=alpha2*gauss->weight*Jdet;
+
+		TripleMultiply(B,dim,numdof,1,
+					D,dim,dim,0,
+					B,dim,numdof,0,
+					&Ke->values[0],1);
+	}
+
+	/*Transform Coordinate System*/
+	if(dim==2) element->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_boundary);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(D);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixSSAViscous(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int         dim,domaintype;
+	IssmDouble  viscosity,thickness,Jdet;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1; break;
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 2; break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*dim;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix(SSAApproximationEnum);
+	IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* thickness_input=element->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* vx_input=element->GetInput(VxEnum);               _assert_(vx_input);
+	Input* vy_input    = NULL;
+	if(dim==2){
+		vy_input    = element->GetInput(VyEnum);       _assert_(vy_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		thickness_input->GetInputValue(&thickness, gauss);
+		element->material->ViscositySSA(&viscosity,dim,xyz_list,gauss,vx_input,vy_input);
+
+		if(dim==2){
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[2*i*2*numnodes+2*j] += gauss->weight*Jdet*viscosity*thickness*(
+								4.*dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i]
+								);
+					Ke->values[2*i*2*numnodes+2*j+1] += gauss->weight*Jdet*viscosity*thickness*(
+								2.*dbasis[1*numnodes+j]*dbasis[0*numnodes+i] + dbasis[0*numnodes+j]*dbasis[1*numnodes+i]
+								);
+					Ke->values[(2*i+1)*2*numnodes+2*j] += gauss->weight*Jdet*viscosity*thickness*(
+								2.*dbasis[0*numnodes+j]*dbasis[1*numnodes+i] + dbasis[1*numnodes+j]*dbasis[0*numnodes+i]
+								);
+					Ke->values[(2*i+1)*2*numnodes+2*j+1] += gauss->weight*Jdet*viscosity*thickness*(
+								dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + 4.*dbasis[1*numnodes+j]*dbasis[1*numnodes+i]
+								);
+				}
+			}
+		}
+		else{
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += gauss->weight*Jdet*viscosity*thickness*(
+								4.*dbasis[0*numnodes+j]*dbasis[0*numnodes+i]
+								);
+				}
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	if(dim==2) element->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	return Ke;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorSSA(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum: case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorSSADrivingStress(basalelement);
+	ElementVector* pe2=CreatePVectorSSAFront(basalelement);
+	ElementVector* pe =new ElementVector(pe1,pe2);
+
+	/*clean-up and return*/
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	delete pe1;
+	delete pe2;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorSSADrivingStress(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int         dim,domaintype;
+	IssmDouble  thickness,Jdet,slope[2];
+	IssmDouble* xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1;break;
+		case Domain2DhorizontalEnum: dim = 2;break;
+		case Domain3DEnum:           dim = 2;break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe    = element->NewElementVector(SSAApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input*     thickness_input=element->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input*     surface_input  =element->GetInput(SurfaceEnum);   _assert_(surface_input);
+	IssmDouble rhog = element->FindParam(MaterialsRhoIceEnum)*element->FindParam(ConstantsGEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	#ifndef DISCSLOPE
+	Gauss* gauss=element->NewGauss(2);
+	#else
+	Gauss* gauss=NULL;
+	Gauss* gauss_subelem=NULL;
+	bool partly_floating=false;
+	bool mainlyfloating=false;
+	int point1;
+	IssmDouble fraction1,fraction2;
+	IssmDouble phi=element->GetGroundedPortion(xyz_list);
+	if(phi>0.00000001 && phi<0.99999999) partly_floating=true;
+
+	int ig=-1;// needed for driving stress parameterization
+	if(partly_floating){
+		element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+	   gauss=element->NewGauss(point1,fraction1,fraction2,3); //considering the entire element
+		gauss_subelem=element->NewGauss(fraction1,fraction2,3);//gauss on each subelement
+	}
+	else{
+		gauss=element->NewGauss(2);//original
+	}
+	#endif
+
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis, gauss);
+
+		thickness_input->GetInputValue(&thickness,gauss); _assert_(thickness>0);
+		surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+		#ifdef DISCSLOPE
+		if(gauss_subelem && partly_floating){
+			ig++;
+			gauss_subelem->next();
+			_assert_(std::abs(gauss_subelem->weight-gauss->weight)<0.0000001);
+			/*Compute the discontinuous surface slope for this gauss point/subelement*/
+			this->ComputeSurfaceSlope(&slope[0],gauss_subelem,gauss,point1,fraction1,fraction2,ig,dim,element);
+		}
+		#endif
+
+		for(int i=0;i<numnodes;i++){
+			pe->values[i*dim+0]+=-rhog*thickness*slope[0]*Jdet*gauss->weight*basis[i];
+			if(dim==2) pe->values[i*dim+1]+=-rhog*thickness*slope[1]*Jdet*gauss->weight*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	if(dim==2) element->TransformLoadVectorCoord(pe,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	#ifdef DISCSLOPE
+	if(gauss_subelem) delete gauss_subelem;
+	#endif
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorSSAFront(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*If no front, return NULL*/
+	if(!element->IsIcefront()) return NULL;
+
+	/*Intermediaries*/
+	int         dim,domaintype;
+	IssmDouble  Jdet,thickness,base,sealevel,water_pressure,ice_pressure;
+	IssmDouble  surface_under_water,base_under_water,pressure;
+	IssmDouble *xyz_list = NULL;
+	IssmDouble *xyz_list_front = NULL;
+	IssmDouble  normal[2];
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1;break;
+		case Domain2DhorizontalEnum: dim = 2;break;
+		case Domain3DEnum:           dim = 2;break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector(SSAApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	Input* thickness_input = element->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* base_input       = element->GetInput(BaseEnum);       _assert_(base_input);
+	Input* sealevel_input       = element->GetInput(SealevelEnum);       _assert_(sealevel_input);
+	IssmDouble rho_water   = element->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble rho_ice     = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble gravity     = element->FindParam(ConstantsGEnum);
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetIcefrontCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum);
+	element->NormalSection(&normal[0],xyz_list_front);
+
+	/*Start looping on Gaussian points*/
+	Gauss* gauss=element->NewGauss(xyz_list,xyz_list_front,3);
+	while(gauss->next()){
+		thickness_input->GetInputValue(&thickness,gauss);
+		sealevel_input->GetInputValue(&sealevel,gauss);
+		base_input->GetInputValue(&base,gauss);
+		element->JacobianDeterminantSurface(&Jdet,xyz_list_front,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		surface_under_water = min(0.,thickness+base-sealevel); // 0 if the top of the glacier is above water level
+		base_under_water    = min(0.,base-sealevel);           // 0 if the bottom of the glacier is above water level
+		water_pressure = 1.0/2.0*gravity*rho_water*(surface_under_water*surface_under_water - base_under_water*base_under_water);
+		ice_pressure   = 1.0/2.0*gravity*rho_ice*thickness*thickness;
+		pressure = ice_pressure + water_pressure;
+
+		for(int i=0;i<numnodes;i++){
+			pe->values[dim*i+0]+= pressure*Jdet*gauss->weight*normal[0]*basis[i];
+			if(dim==2) pe->values[dim*i+1]+= pressure*Jdet*gauss->weight*normal[1]*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	if(dim==2) element->TransformLoadVectorCoord(pe,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_front);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           StressbalanceAnalysis::GetBSSA(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3] where Bi is of size 3*2.
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by:
+	 *                   2D                      1D
+	 *       Bi=[ dN/dx           0    ]   Bi=[ dN/dx ]
+	 *          [   0           dN/dy  ]
+	 *          [ 1/2*dN/dy  1/2*dN/dx ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 3x(2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(dim*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B: */
+	if(dim==2){
+		for(int i=0;i<numnodes;i++){
+			B[2*numnodes*0+2*i+0] = dbasis[0*numnodes+i];
+			B[2*numnodes*0+2*i+1] = 0.;
+			B[2*numnodes*1+2*i+0] = 0.;
+			B[2*numnodes*1+2*i+1] = dbasis[1*numnodes+i];
+			B[2*numnodes*2+2*i+0] = .5*dbasis[1*numnodes+i];
+			B[2*numnodes*2+2*i+1] = .5*dbasis[0*numnodes+i];
+		}
+	}
+	else{
+		for(int i=0;i<numnodes;i++){
+			B[i] = dbasis[i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBSSAFriction(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3] where Bi is square and of size 2.
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by:
+	 *                       2D             1D
+	 *                 Bi=[ N   0 ]    Bi = N
+	 *                    [ 0   N ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 2 x (numdof*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* basis=xNew<IssmDouble>(numnodes);
+	element->NodalFunctions(basis,gauss);
+
+	/*Build L: */
+	if(dim==2){
+		for(int i=0;i<numnodes;i++){
+			B[2*numnodes*0+2*i+0] = basis[i];
+			B[2*numnodes*0+2*i+1] = 0.;
+			B[2*numnodes*1+2*i+0] = 0.;
+			B[2*numnodes*1+2*i+1] = basis[i];
+		}
+	}
+	else{
+		for(int i=0;i<numnodes;i++){
+			B[i] = basis[i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBSSAprime(IssmDouble* Bprime,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B'  matrix. B'=[B1' B2' B3'] where Bi' is of size 3*2.
+	 * For node i, Bi' can be expressed in the actual coordinate system
+	 * by:
+	 *                         2D                        1D
+	 *       Bi_prime=[ 2*dN/dx    dN/dy ]     Bi_prime=[ 2*dN/dx ]
+	 *                [   dN/dx  2*dN/dy ]
+	 *                [   dN/dy    dN/dx ]
+	 * where hNis the finiteelement function for node i.
+	 *
+	 * We assume B' has been allocated already, of size: 3x(2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(dim*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B': */
+	if(dim==2){
+		for(int i=0;i<numnodes;i++){
+			Bprime[2*numnodes*0+2*i+0] = 2.*dbasis[0*numnodes+i];
+			Bprime[2*numnodes*0+2*i+1] =    dbasis[1*numnodes+i];
+			Bprime[2*numnodes*1+2*i+0] =    dbasis[0*numnodes+i];
+			Bprime[2*numnodes*1+2*i+1] = 2.*dbasis[1*numnodes+i];
+			Bprime[2*numnodes*2+2*i+0] =    dbasis[1*numnodes+i];
+			Bprime[2*numnodes*2+2*i+1] =    dbasis[0*numnodes+i];
+		}
+	}
+	else{
+		for(int i=0;i<numnodes;i++){
+			Bprime[i] = 2.*dbasis[i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolutionSSA(IssmDouble* solution,Element* element){/*{{{*/
+
+	int         i,dim,domaintype;
+	IssmDouble  rho_ice,g;
+	int*        doflist=NULL;
+	IssmDouble* xyz_list=NULL;
+	Element*    basalelement=NULL;
+
+	/*Deal with pressure first*/
+	int numvertices = element->GetNumberOfVertices();
+	IssmDouble* pressure  = xNew<IssmDouble>(numvertices);
+	IssmDouble* thickness = xNew<IssmDouble>(numvertices);
+	IssmDouble* surface   = xNew<IssmDouble>(numvertices);
+
+	element->FindParam(&domaintype,DomainTypeEnum);
+	rho_ice =element->FindParam(MaterialsRhoIceEnum);
+	g       =element->FindParam(ConstantsGEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->GetInputListOnVertices(thickness,ThicknessEnum);
+			for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*thickness[i];
+			dim=2;
+			break;
+		case Domain3DEnum:
+			element->GetVerticesCoordinates(&xyz_list);
+			element->GetInputListOnVertices(surface,SurfaceEnum);
+			for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
+			dim=2;
+			break;
+		case Domain2DverticalEnum:
+			element->GetVerticesCoordinates(&xyz_list);
+			element->GetInputListOnVertices(surface,SurfaceEnum);
+			for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+1]);
+			dim=1;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+	element->AddInput(PressureEnum,pressure,P1Enum);
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(thickness);
+	xDelete<IssmDouble>(surface);
+
+	/*Get basal element*/
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum: case Domain2DverticalEnum:
+			if(!element->IsOnBase()){xDelete<IssmDouble>(xyz_list); return;}
+			basalelement=element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+	int numdof   = numnodes*dim;
+
+	/*Fetch dof list and allocate solution vectors*/
+	basalelement->GetDofListLocal(&doflist,SSAApproximationEnum,GsetEnum);
+	IssmDouble* values = xNew<IssmDouble>(numdof);
+	IssmDouble* vx     = xNew<IssmDouble>(numnodes);
+	IssmDouble* vy     = xNew<IssmDouble>(numnodes);
+	IssmDouble* vz     = xNew<IssmDouble>(numnodes);
+	IssmDouble* vel    = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
+
+	/*Transform solution in Cartesian Space*/
+	if(dim==2) basalelement->TransformSolutionCoord(&values[0],XYEnum);
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+	for(i=0;i<numnodes;i++){
+		vx[i]=values[i*dim+0];
+		if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector");
+
+		if(dim==2){
+			vy[i]=values[i*dim+1];
+			if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector");
+			if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector");
+		}
+	}
+
+	/*Get Vz and compute vel*/
+	if(dim==2){
+		basalelement->GetInputListOnNodes(&vz[0],VzEnum,0.);
+		for(i=0;i<numnodes;i++) vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i] + vz[i]*vz[i]);
+	}
+	else{
+		basalelement->GetInputListOnNodes(&vy[0],VyEnum,0.);
+		for(i=0;i<numnodes;i++) vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i]);
+	}
+
+	/*Add vx and vy as inputs to the tria element: */
+	/*Also add surface vx and vy for the misfit, and base vx and vy for friction*/
+	element->AddBasalInput(VxEnum,vx,element->GetElementType());
+	element->AddBasalInput(VxSurfaceEnum,vx,element->GetElementType());
+	element->AddBasalInput(VxBaseEnum,vx,element->GetElementType());
+	if(dim==2) {
+		element->AddBasalInput(VyEnum,vy,element->GetElementType());
+		element->AddBasalInput(VySurfaceEnum,vy,element->GetElementType());
+		element->AddBasalInput(VyBaseEnum,vy,element->GetElementType());
+	}
+	element->AddBasalInput(VelEnum,vel,element->GetElementType());
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(vel);
+	xDelete<IssmDouble>(vz);
+	xDelete<IssmDouble>(vy);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<int>(doflist);
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+#ifdef DISCSLOPE
+void StressbalanceAnalysis::ComputeSurfaceSlope(IssmDouble* slope,Gauss* gauss_DG,Gauss* gauss_CG,int point1,IssmDouble fraction1,IssmDouble fraction2,int ig,int dim,Element* element){/*{{{*/
+
+	/*Compute the surface slope for each subelement, for a given integration point (gauss)*/
+	int numnodes=element->GetNumberOfNodes();
+	IssmDouble rho_ice=element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble rho_water=element->FindParam(MaterialsRhoSeawaterEnum); //ocean
+	IssmDouble* H=xNew<IssmDouble>(numnodes);
+	IssmDouble* S=xNew<IssmDouble>(numnodes);
+	IssmDouble* S_subelem=xNew<IssmDouble>(numnodes);
+	IssmDouble H_f1,H_f2,S_f1,S_f2;
+
+	/*Get nodal deriviatives of the subelements related to the Gauss point*/
+	IssmDouble* dbasis_subelem=xNew<IssmDouble>(dim*numnodes);//CG basis for each subelement
+	this->NodalFunctionsDerivativesRGB(dbasis_subelem,gauss_DG,gauss_CG,point1,fraction1,fraction2,ig,dim,element);
+
+	/*Define thickness at the grounding line (on element edges)*/
+	element->GetInputListOnNodes(H,ThicknessEnum); // thickness on vertices
+	switch(point1){//{{{
+		case 0:
+			H_f1=H[0]+(H[1]-H[0])*fraction1;
+			H_f2=H[0]+(H[2]-H[0])*fraction2;
+			break;
+		case 1:
+			H_f1=H[1]+(H[2]-H[1])*fraction1;
+			H_f2=H[1]+(H[0]-H[1])*fraction2;
+			break;
+		case 2:
+			H_f1=H[2]+(H[0]-H[2])*fraction1;
+			H_f2=H[2]+(H[1]-H[2])*fraction2;
+			break;
+		default:
+			_error_("index "<<point1<<" not supported yet");
+	}//}}}
+
+	/*Define surface at the grounding (on element edges)*/
+	S_f1=H_f1*(1-rho_ice/rho_water);
+	S_f2=H_f2*(1-rho_ice/rho_water);
+	element->GetInputListOnNodes(S,SurfaceEnum); // surface on vertices
+
+	/*Define surface on the subelement vertices*/
+   if(ig<4){ // BLUE element itapopo only if order is = 3
+		switch(point1){ //{{{
+			case 0:
+				S_subelem[0]=S[0];
+				S_subelem[1]=S_f1;
+				S_subelem[2]=S_f2;
+				break;
+			case 1:
+				S_subelem[0]=S[1];
+				S_subelem[1]=S_f1;
+				S_subelem[2]=S_f2;
+				break;
+			case 2:
+				S_subelem[0]=S[2];
+				S_subelem[1]=S_f1;
+				S_subelem[2]=S_f2;
+				break;
+			default:
+				_error_("index "<<point1<<" not supported yet");
+		}//}}}
+	}
+	if(ig>3 && ig<8){ // GREEN element
+		switch(point1){ //{{{
+			case 0:
+				S_subelem[0]=S_f1;
+				S_subelem[1]=S[2];
+				S_subelem[2]=S_f2;
+				break;
+			case 1:
+				S_subelem[0]=S_f1;
+				S_subelem[1]=S[0];
+				S_subelem[2]=S_f2;
+				break;
+			case 2:
+				S_subelem[0]=S_f1;
+				S_subelem[1]=S[1];
+				S_subelem[2]=S_f2;
+				break;
+			default:
+				_error_("index "<<point1<<" not supported yet");
+		}//}}}
+	}
+	if(ig>7){ // RED element
+		switch(point1){ //{{{
+			case 0:
+				S_subelem[0]=S_f1;
+				S_subelem[1]=S[1];
+				S_subelem[2]=S[2];
+				break;
+			case 1:
+				S_subelem[0]=S_f1;
+				S_subelem[1]=S[2];
+				S_subelem[2]=S[0];
+				break;
+			case 2:
+				S_subelem[0]=S_f1;
+				S_subelem[1]=S[0];
+				S_subelem[2]=S[1];
+				break;
+			default:
+				_error_("index "<<point1<<" not supported yet");
+		}//}}}
+	}
+
+	//_printf_("\t"<<"H[1]\t"<<"H[2]\t"<<"H[3]\t"<<"S[1]\t"<<"S[2]\t"<<"S[3]\n");
+	//_printf_("\t"<<H[0]<<"\t"<<H[1]<<"\t"<<H[2]<<"\t"<<S[0]<<"\t"<<S[1]<<"\t"<<S[2]<<"\n");
+	//_printf_("\t H_f1 \t H_f2 \t S_f1 \t S_f2 \n");
+	//_printf_("\t"<< H_f1 <<"\t"<< H_f2 << "\t" << S_f1 << "\t" << S_f2<< "\n");
+	//_printf_("\t"<<"S_subelem[1]\t"<<"S_subelem[2]\t"<<"S_subelem[3]\n");
+	//_printf_("\t"<<S_subelem[0]<<"\t"<<S_subelem[1]<<"\t"<<S_subelem[2]<<"\n");
+
+	/*Compute slope*/
+	slope[0]=0;
+	slope[1]=0;
+	for(int i=0;i<numnodes;i++){
+		slope[0]+=S_subelem[i]*dbasis_subelem[numnodes*0+i]; //dSdx
+		slope[1]+=S_subelem[i]*dbasis_subelem[numnodes*1+i]; //dSdy
+	}
+
+	/*Clean up*/
+	xDelete<IssmDouble>(dbasis_subelem);
+	xDelete<IssmDouble>(H);
+	xDelete<IssmDouble>(S);
+	xDelete<IssmDouble>(S_subelem);
+
+}/*}}}*/
+void StressbalanceAnalysis::NodalFunctionsDerivativesRGB(IssmDouble* dbasis_subelem,Gauss* gauss_DG,Gauss* gauss_CG,int point1,IssmDouble fraction1,IssmDouble fraction2,int ig,int dim,Element* element){/*{{{*/
+
+	/*Fetch number of nodes for this finite element*/
+   int numnodes = element->GetNumberOfNodes();
+   IssmDouble dbasis_ref[dim*numnodes];
+   IssmDouble Jinv[2][2];
+   //IssmDouble* dbasis_subelem = xNew<IssmDouble>(dim*numnodes);//CG basis for each subelement
+   IssmDouble* xyz_list_RGB = xNew<IssmDouble>(3*numnodes); // x,y,z per node
+   IssmDouble* xyz_list = NULL;
+
+   element->GetVerticesCoordinates(&xyz_list);
+   Tria* tria = xDynamicCast<Tria*>(element);
+
+   /*Get nodal functions derivatives*/
+   tria->GetNodalFunctionsDerivativesReference(dbasis_ref,gauss_DG,P1Enum); //gauss is not used here
+
+   if(ig<4){ // BLUE element itapopo only if order is = 3
+      switch(point1){//{{{
+         case 0:
+            /*Vertex 0 - local in the subelement*/
+            xyz_list_RGB[3*0+0]=xyz_list[3*0+0]; //x
+            xyz_list_RGB[3*0+1]=xyz_list[3*0+1]; //y
+            /*Vertex 1*/
+            xyz_list_RGB[3*1+0]=xyz_list[3*0+0]+(xyz_list[3*1+0]-xyz_list[3*0+0])*fraction1; //x
+            xyz_list_RGB[3*1+1]=xyz_list[3*0+1]+(xyz_list[3*1+1]-xyz_list[3*0+1])*fraction1; //y
+            /*Vertex 2*/
+            xyz_list_RGB[3*2+0]=xyz_list[3*0+0]+(xyz_list[3*2+0]-xyz_list[3*0+0])*fraction2; //x;
+            xyz_list_RGB[3*2+1]=xyz_list[3*0+1]+(xyz_list[3*2+1]-xyz_list[3*0+1])*fraction2; //y;
+            break;
+			 case 1:
+            /*Vertex 0 - local in the subelement*/
+            xyz_list_RGB[3*0+0]=xyz_list[3*1+0]; //x
+            xyz_list_RGB[3*0+1]=xyz_list[3*1+1]; //y
+            /*Vertex 1*/
+            xyz_list_RGB[3*1+0]=xyz_list[3*1+0]+(xyz_list[3*2+0]-xyz_list[3*1+0])*fraction1; //x
+            xyz_list_RGB[3*1+1]=xyz_list[3*1+1]+(xyz_list[3*2+1]-xyz_list[3*1+1])*fraction1; //y
+            /*Vertex 2*/
+            xyz_list_RGB[3*2+0]=xyz_list[3*1+0]+(xyz_list[3*0+0]-xyz_list[3*1+0])*fraction2; //x;
+            xyz_list_RGB[3*2+1]=xyz_list[3*1+1]+(xyz_list[3*0+1]-xyz_list[3*1+1])*fraction2; //y;
+            break;
+			case 2:
+            /*Vertex 0 - local in the subelement*/
+            xyz_list_RGB[3*0+0]=xyz_list[3*2+0]; //x
+            xyz_list_RGB[3*0+1]=xyz_list[3*2+1]; //y
+            /*Vertex 1*/
+            xyz_list_RGB[3*1+0]=xyz_list[3*2+0]+(xyz_list[3*0+0]-xyz_list[3*2+0])*fraction1; //x
+            xyz_list_RGB[3*1+1]=xyz_list[3*2+1]+(xyz_list[3*0+1]-xyz_list[3*2+1])*fraction1; //y
+            /*Vertex 2*/
+            xyz_list_RGB[3*2+0]=xyz_list[3*2+0]+(xyz_list[3*1+0]-xyz_list[3*2+0])*fraction2; //x;
+            xyz_list_RGB[3*2+1]=xyz_list[3*2+1]+(xyz_list[3*1+1]-xyz_list[3*2+1])*fraction2; //y;
+            break;
+         default:
+            _error_("index "<<point1<<" not supported yet");
+      }//}}}
+   }
+	if(ig>3 && ig<8){ // GREEN element
+      switch(point1){//{{{
+         case 0:
+            /*Vertex 0 - local in the subelement*/
+            xyz_list_RGB[3*0+0]=xyz_list[3*0+0]+(xyz_list[3*1+0]-xyz_list[3*0+0])*fraction1; //x
+            xyz_list_RGB[3*0+1]=xyz_list[3*0+1]+(xyz_list[3*1+1]-xyz_list[3*0+1])*fraction1; //y
+            /*Vertex 1*/
+            xyz_list_RGB[3*1+0]=xyz_list[3*2+0]; //x
+            xyz_list_RGB[3*1+1]=xyz_list[3*2+1]; //y
+            /*Vertex 2*/
+            xyz_list_RGB[3*2+0]=xyz_list[3*0+0]+(xyz_list[3*2+0]-xyz_list[3*0+0])*fraction2; //x;
+            xyz_list_RGB[3*2+1]=xyz_list[3*0+1]+(xyz_list[3*2+1]-xyz_list[3*0+1])*fraction2; //y;
+            break;
+			 case 1:
+            /*Vertex 0*/
+            xyz_list_RGB[3*0+0]=xyz_list[3*1+0]+(xyz_list[3*2+0]-xyz_list[3*1+0])*fraction1; //x
+            xyz_list_RGB[3*0+1]=xyz_list[3*1+1]+(xyz_list[3*2+1]-xyz_list[3*1+1])*fraction1; //y
+            /*Vertex 1*/
+            xyz_list_RGB[3*1+0]=xyz_list[3*0+0]; //x
+            xyz_list_RGB[3*1+1]=xyz_list[3*0+1]; //y
+            /*Vertex 2*/
+            xyz_list_RGB[3*2+0]=xyz_list[3*1+0]+(xyz_list[3*0+0]-xyz_list[3*1+0])*fraction2; //x;
+            xyz_list_RGB[3*2+1]=xyz_list[3*1+1]+(xyz_list[3*0+1]-xyz_list[3*1+1])*fraction2; //y;
+            break;
+			case 2:
+            /*Vertex 0*/
+            xyz_list_RGB[3*0+0]=xyz_list[3*2+0]+(xyz_list[3*0+0]-xyz_list[3*2+0])*fraction1; //x
+            xyz_list_RGB[3*0+1]=xyz_list[3*2+1]+(xyz_list[3*0+1]-xyz_list[3*2+1])*fraction1; //y
+            /*Vertex 1*/
+            xyz_list_RGB[3*1+0]=xyz_list[3*1+0]; //x
+            xyz_list_RGB[3*1+1]=xyz_list[3*1+1]; //y
+            /*Vertex 2*/
+            xyz_list_RGB[3*2+0]=xyz_list[3*2+0]+(xyz_list[3*1+0]-xyz_list[3*2+0])*fraction2; //x;
+            xyz_list_RGB[3*2+1]=xyz_list[3*2+1]+(xyz_list[3*1+1]-xyz_list[3*2+1])*fraction2; //y;
+            break;
+         default:
+            _error_("index "<<point1<<" not supported yet");
+      }//}}}
+   }
+	if(ig>7){ // RED element
+      switch(point1){//{{{
+         case 0:
+            /*Vertex 0*/
+            xyz_list_RGB[3*0+0]=xyz_list[3*0+0]+(xyz_list[3*1+0]-xyz_list[3*0+0])*fraction1; //x
+            xyz_list_RGB[3*0+1]=xyz_list[3*0+1]+(xyz_list[3*1+1]-xyz_list[3*0+1])*fraction1; //y
+            /*Vertex 1*/
+            xyz_list_RGB[3*1+0]=xyz_list[3*1+0]; //x
+            xyz_list_RGB[3*1+1]=xyz_list[3*1+1]; //y
+            /*Vertex 2*/
+            xyz_list_RGB[3*2+0]=xyz_list[3*2+0]; //x;
+            xyz_list_RGB[3*2+1]=xyz_list[3*2+1]; //y;
+            break;
+         case 1:
+				/*Vertex 0*/
+            xyz_list_RGB[3*0+0]=xyz_list[3*1+0]+(xyz_list[3*2+0]-xyz_list[3*1+0])*fraction1; //x
+            xyz_list_RGB[3*0+1]=xyz_list[3*1+1]+(xyz_list[3*2+1]-xyz_list[3*1+1])*fraction1; //y
+            /*Vertex 1*/
+            xyz_list_RGB[3*1+0]=xyz_list[3*2+0]; //x
+            xyz_list_RGB[3*1+1]=xyz_list[3*2+1]; //y
+            /*Vertex 2*/
+            xyz_list_RGB[3*2+0]=xyz_list[3*0+0]; //x;
+            xyz_list_RGB[3*2+1]=xyz_list[3*0+1]; //y;
+            break;
+			case 2:
+            /*Vertex 0*/
+            xyz_list_RGB[3*0+0]=xyz_list[3*2+0]+(xyz_list[3*0+0]-xyz_list[3*2+0])*fraction1; //x
+            xyz_list_RGB[3*0+1]=xyz_list[3*2+1]+(xyz_list[3*0+1]-xyz_list[3*2+1])*fraction1; //y
+            /*Vertex 1*/
+            xyz_list_RGB[3*1+0]=xyz_list[3*0+0]; //x
+            xyz_list_RGB[3*1+1]=xyz_list[3*0+1]; //y
+            /*Vertex 2*/
+            xyz_list_RGB[3*2+0]=xyz_list[3*1+0]; //x;
+            xyz_list_RGB[3*2+1]=xyz_list[3*1+1]; //y;
+            break;
+         default:
+            _error_("index "<<point1<<" not supported yet");
+      }//}}}
+   }
+
+	//std::cout<<"	ig="<<ig<<std::endl;
+	//std::cout<<"	"<<xyz_list_RGB[0*numnodes+0]<<"\t"<<xyz_list_RGB[1*numnodes+0]<<"\t"<<xyz_list_RGB[2*numnodes+0]<<std::endl; //x
+	//std::cout<<"	"<<xyz_list_RGB[0*numnodes+1]<<"\t"<<xyz_list_RGB[1*numnodes+1]<<"\t"<<xyz_list_RGB[2*numnodes+1]<<std::endl; //y
+
+   /*Get Jacobian*/
+	tria->GetJacobianInvert(&Jinv[0][0],xyz_list_RGB,gauss_CG); // gauss is not used here
+
+	/*Build dbasis CG in the subelement*/
+	for(int i=0;i<numnodes;i++){
+		dbasis_subelem[numnodes*0+i]=Jinv[0][0]*dbasis_ref[0*numnodes+i]+Jinv[0][1]*dbasis_ref[1*numnodes+i];//dPhi_i/dx
+		dbasis_subelem[numnodes*1+i]=Jinv[1][0]*dbasis_ref[0*numnodes+i]+Jinv[1][1]*dbasis_ref[1*numnodes+i];//dPhi_i/dy
+	}
+
+   xDelete<IssmDouble>(xyz_list);
+   xDelete<IssmDouble>(xyz_list_RGB);
+   //xDelete<IssmDouble>(dbasis_subelem);
+
+}/*}}}*/
+#endif
+
+/*L1L2*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixL1L2(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixL1L2Viscous(element);
+	ElementMatrix* Ke2=CreateKMatrixL1L2Friction(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixL1L2Friction(Element* element){/*{{{*/
+
+	if(!element->IsOnBase() || element->IsAllFloating()) return NULL;
+	Element* basalelement = element->SpawnBasalElement();
+	ElementMatrix* Ke = CreateKMatrixSSAFriction(basalelement);
+
+	/*clean-up and return*/
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixL1L2Viscous(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble  viscosity,Jdet;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get element on base*/
+	Element* basalelement = element->GetBasalElement()->SpawnBasalElement(true);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke     = basalelement->NewElementMatrix(L1L2ApproximationEnum);
+	IssmDouble*    dbasis = xNew<IssmDouble>(3*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* surface_input = element->GetInput(SurfaceEnum); _assert_(surface_input);
+	Input* vx_input      = element->GetInput(VxEnum);      _assert_(vx_input);
+	Input* vy_input      = element->GetInput(VyEnum);      _assert_(vy_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss      = element->NewGauss(5);
+	Gauss* gauss_base = basalelement->NewGauss();
+	while(gauss->next()){
+		gauss->SynchronizeGaussBase(gauss_base);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		basalelement->NodalFunctionsDerivatives(dbasis,xyz_list,gauss_base);
+
+		element->material->ViscosityL1L2(&viscosity,xyz_list,gauss,vx_input,vy_input,surface_input);
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[2*i*2*numnodes+2*j] += gauss->weight*Jdet*viscosity*(
+							4.*dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i]
+							);
+				Ke->values[2*i*2*numnodes+2*j+1] += gauss->weight*Jdet*viscosity*(
+							2.*dbasis[1*numnodes+j]*dbasis[0*numnodes+i] + dbasis[0*numnodes+j]*dbasis[1*numnodes+i]
+							);
+				Ke->values[(2*i+1)*2*numnodes+2*j] += gauss->weight*Jdet*viscosity*(
+							2.*dbasis[0*numnodes+j]*dbasis[1*numnodes+i] + dbasis[1*numnodes+j]*dbasis[0*numnodes+i]
+							);
+				Ke->values[(2*i+1)*2*numnodes+2*j+1] += gauss->weight*Jdet*viscosity*(
+							dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + 4.*dbasis[1*numnodes+j]*dbasis[1*numnodes+i]
+							);
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	basalelement->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	delete gauss_base;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	return Ke;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorL1L2(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum: case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorL1L2DrivingStress(basalelement);
+	ElementVector* pe2=CreatePVectorL1L2Front(basalelement);
+	ElementVector* pe =new ElementVector(pe1,pe2);
+
+	/*clean-up and return*/
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	delete pe1;
+	delete pe2;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorL1L2DrivingStress(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble  thickness,Jdet,slope[2];
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe    = element->NewElementVector(L1L2ApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input*     thickness_input=element->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input*     surface_input  =element->GetInput(SurfaceEnum);   _assert_(surface_input);
+	IssmDouble rhog = element->FindParam(MaterialsRhoIceEnum)*element->FindParam(ConstantsGEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis, gauss);
+
+		thickness_input->GetInputValue(&thickness,gauss);
+		surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			pe->values[i*2+0]+=-rhog*thickness*slope[0]*Jdet*gauss->weight*basis[i];
+			pe->values[i*2+1]+=-rhog*thickness*slope[1]*Jdet*gauss->weight*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorL1L2Front(Element* element){/*{{{*/
+
+	/*If no front, return NULL*/
+	if(!element->IsIcefront()) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  Jdet,thickness,base,sealevel,water_pressure,ice_pressure;
+	IssmDouble  surface_under_water,base_under_water,pressure;
+	IssmDouble *xyz_list = NULL;
+	IssmDouble *xyz_list_front = NULL;
+	IssmDouble  normal[2];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector(L1L2ApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	Input* thickness_input = element->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* base_input       = element->GetInput(BaseEnum);       _assert_(base_input);
+	Input* sealevel_input       = element->GetInput(SealevelEnum);       _assert_(sealevel_input);
+	IssmDouble rho_water   = element->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble rho_ice     = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble gravity     = element->FindParam(ConstantsGEnum);
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetIcefrontCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum);
+	element->NormalSection(&normal[0],xyz_list_front);
+
+	/*Start looping on Gaussian points*/
+	Gauss* gauss=element->NewGauss(xyz_list,xyz_list_front,3);
+	while(gauss->next()){
+		thickness_input->GetInputValue(&thickness,gauss);
+		base_input->GetInputValue(&base,gauss);
+		sealevel_input->GetInputValue(&sealevel,gauss);
+		element->JacobianDeterminantSurface(&Jdet,xyz_list_front,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		surface_under_water = min(0.,thickness+base-sealevel); // 0 if the top of the glacier is above water level
+		base_under_water    = min(0.,base-sealevel);           // 0 if the bottom of the glacier is above water level
+		water_pressure = 1.0/2.0*gravity*rho_water*(surface_under_water*surface_under_water - base_under_water*base_under_water);
+		ice_pressure   = 1.0/2.0*gravity*rho_ice*thickness*thickness;
+		pressure = ice_pressure + water_pressure;
+
+		for (int i=0;i<numnodes;i++){
+			pe->values[2*i+0]+= pressure*Jdet*gauss->weight*normal[0]*basis[i];
+			pe->values[2*i+1]+= pressure*Jdet*gauss->weight*normal[1]*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_front);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolutionL1L2(IssmDouble* solution,Element* element){/*{{{*/
+
+	int         i,dim,domaintype;
+	IssmDouble  rho_ice,g;
+	int*        doflist=NULL;
+	IssmDouble* xyz_list=NULL;
+	Element*    basalelement=NULL;
+
+	/*Deal with pressure first*/
+	int numvertices = element->GetNumberOfVertices();
+	IssmDouble* pressure  = xNew<IssmDouble>(numvertices);
+	IssmDouble* thickness = xNew<IssmDouble>(numvertices);
+	IssmDouble* surface   = xNew<IssmDouble>(numvertices);
+
+	element->FindParam(&dim,DomainDimensionEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+	rho_ice =element->FindParam(MaterialsRhoIceEnum);
+	g       =element->FindParam(ConstantsGEnum);
+	if(dim==2){
+		element->GetInputListOnVertices(thickness,ThicknessEnum);
+		for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*thickness[i];
+	}
+	else{
+		element->GetVerticesCoordinates(&xyz_list);
+		element->GetInputListOnVertices(surface,SurfaceEnum);
+		for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
+	}
+	element->AddInput(PressureEnum,pressure,P1Enum);
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(thickness);
+	xDelete<IssmDouble>(surface);
+
+	/*Get basal element*/
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()){xDelete<IssmDouble>(xyz_list); return;}
+			basalelement=element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+	int numdof   = numnodes*2;
+
+	/*Fetch dof list and allocate solution vectors*/
+	basalelement->GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values    = xNew<IssmDouble>(numdof);
+	IssmDouble* vx        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vy        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vz        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vel       = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
+
+	/*Transform solution in Cartesian Space*/
+	basalelement->TransformSolutionCoord(&values[0],XYEnum);
+	basalelement->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+	for(i=0;i<numnodes;i++){
+		vx[i]=values[i*2+0];
+		vy[i]=values[i*2+1];
+
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Get Vz and compute vel*/
+	basalelement->GetInputListOnNodes(&vz[0],VzEnum,0.);
+	for(i=0;i<numnodes;i++) vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i] + vz[i]*vz[i]);
+
+	/*Add vx and vy as inputs to the tria element: */
+	element->AddBasalInput(VxEnum,vx,element->GetElementType());
+	element->AddBasalInput(VyEnum,vy,element->GetElementType());
+	element->AddBasalInput(VelEnum,vel,element->GetElementType());
+
+	/*Also add surface vx and vy for the misfit, and base vx and vy for friction*/
+	element->AddBasalInput(VxSurfaceEnum,vx,element->GetElementType());
+	element->AddBasalInput(VySurfaceEnum,vy,element->GetElementType());
+	element->AddBasalInput(VxBaseEnum,vx,element->GetElementType());
+	element->AddBasalInput(VyBaseEnum,vy,element->GetElementType());
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(vel);
+	xDelete<IssmDouble>(vz);
+	xDelete<IssmDouble>(vy);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<int>(doflist);
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+
+/*MOLHO*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixMOLHO(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum: 
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement(true);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixMOLHOViscous(basalelement);
+	ElementMatrix* Ke2=CreateKMatrixMOLHOFriction(basalelement);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+
+	/*clean-up and return*/
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixMOLHOFriction(Element* element){/*{{{*/
+
+	if(element->IsAllFloating()) return NULL;
+
+	/*Intermediaries*/
+	int         dim,domaintype;
+	bool        mainlyfloating;
+	int         friction_style,point1;
+	IssmDouble  alpha2,Jdet,fraction1,fraction2;
+	IssmDouble  gllevelset,phi=1.;
+	IssmDouble *xyz_list  = NULL;
+	Gauss*      gauss     = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1;break;
+		case Domain2DhorizontalEnum: dim = 2;break;
+		case Domain3DEnum:           dim = 2;break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*dim;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke = element->NewElementMatrix(MOLHOApproximationEnum);
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&friction_style,GroundinglineFrictionInterpolationEnum);
+	Input* surface_input    = element->GetInput(SurfaceEnum); _assert_(surface_input);
+	Input* gllevelset_input = NULL;
+
+	/*build friction object, used later on: */
+	Friction* friction=new Friction(element, dim);
+
+	/*Recover portion of element that is grounded*/
+	if(!(friction_style==SubelementFriction2Enum)) phi=element->GetGroundedPortion(xyz_list);
+	if(friction_style==SubelementFriction2Enum){
+		gllevelset_input=element->GetInput(MaskOceanLevelsetEnum); _assert_(gllevelset_input);
+		element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+	   gauss = element->NewGauss(point1,fraction1,fraction2,mainlyfloating,2);
+	}
+	else{
+		gauss = element->NewGauss(2);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	while(gauss->next()){
+
+		friction->GetAlpha2(&alpha2,gauss);
+		if(friction_style==SubelementFriction1Enum) alpha2=phi*alpha2;
+		else if(friction_style==SubelementFriction2Enum){
+			gllevelset_input->GetInputValue(&gllevelset, gauss);
+			if(gllevelset<0.) alpha2=0.;
+		}
+		else if(friction_style==NoFrictionOnPartiallyFloatingEnum){
+			if (phi<0.99999999) alpha2=0.;
+		}
+		else  _error_("friction interpolation "<<EnumToStringx(friction_style)<<" not implemented yet");
+
+		element->NodalFunctions(basis,gauss);
+		element->JacobianDeterminant(&Jdet, xyz_list,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[(4*i+0)*2*2*numnodes+4*j+0] += alpha2*gauss->weight*Jdet*basis[i]*basis[j];
+				Ke->values[(4*i+2)*2*2*numnodes+4*j+2] += alpha2*gauss->weight*Jdet*basis[i]*basis[j];
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	delete friction;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixMOLHOViscous(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  viscosity[4],Jdet,thickness,n;
+	IssmDouble *xyz_list = NULL;
+	int      domaintype;
+	int dim=2;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix(MOLHOApproximationEnum);
+	IssmDouble*    dbasis = xNew<IssmDouble>(2*numnodes); // like SSA
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes); // like SSA
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* thickness_input= element->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* surface_input  = element->GetInput(SurfaceEnum);   _assert_(surface_input);
+	Input* vxbase_input   = element->GetInput(VxBaseEnum);    _assert_(vxbase_input); 
+	Input* vybase_input   = element->GetInput(VyBaseEnum);    _assert_(vybase_input);
+	Input* vxshear_input  = element->GetInput(VxShearEnum);   _assert_(vxshear_input); //shear vx at the surface 
+	Input* vyshear_input  = element->GetInput(VyShearEnum);   _assert_(vyshear_input); //shear vy at the surface
+	Input* n_input			 = element->GetInput(MaterialsRheologyNEnum); _assert_(n_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss      = element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+		element->NodalFunctions(basis, gauss);
+
+		thickness_input->GetInputValue(&thickness, gauss);
+		n_input->GetInputValue(&n,gauss);
+		element->material->ViscosityMOLHO(&viscosity[0],dim,xyz_list,gauss,vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input);
+
+		for(int i=0;i<numnodes;i++){//shape functions on tria element
+			for(int j=0;j<numnodes;j++){
+				Ke->values[(4*i+0)*2*2*numnodes+4*j+0] += gauss->weight*Jdet*viscosity[0]*thickness*(
+							4.*dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i]
+							);//K11
+				Ke->values[(4*i+0)*2*2*numnodes+4*j+1] += gauss->weight*Jdet*viscosity[1]*thickness*(
+							4.*dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i]
+							)*(n+1)/(n+2);//K12
+				Ke->values[(4*i+0)*2*2*numnodes+4*j+2] += gauss->weight*Jdet*viscosity[0]*thickness*(
+							2.*dbasis[1*numnodes+j]*dbasis[0*numnodes+i] + dbasis[0*numnodes+j]*dbasis[1*numnodes+i]
+							);//K13
+				Ke->values[ (4*i+0)*2*2*numnodes+4*j+3] += gauss->weight*Jdet*viscosity[1]*thickness*(
+                     2.*dbasis[1*numnodes+j]*dbasis[0*numnodes+i] + dbasis[0*numnodes+j]*dbasis[1*numnodes+i]
+                     )*(n+1)/(n+2);//K14
+
+				Ke->values[(4*i+1)*2*2*numnodes+4*j+0] += gauss->weight*Jdet*viscosity[1]*thickness*(
+							4.*dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i]
+							)*(n+1)/(n+2);//K21
+				Ke->values[(4*i+1)*2*2*numnodes+4*j+1] += gauss->weight*Jdet*viscosity[2]*thickness*(
+							4.*dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i]
+							)*2*pow(n+1,2)/((2*n+3)*(n+2)) 
+							+ 
+							gauss->weight*Jdet*viscosity[3]*basis[j]*basis[i]*pow(n+1,2)/(thickness*(2*n+1))
+							;//K22
+				Ke->values[(4*i+1)*2*2*numnodes+4*j+2] += gauss->weight*Jdet*viscosity[1]*thickness*(
+							2.*dbasis[1*numnodes+j]*dbasis[0*numnodes+i] + dbasis[0*numnodes+j]*dbasis[1*numnodes+i]
+							)*(n+1)/(n+2);//K23
+				Ke->values[(4*i+1)*2*2*numnodes+4*j+3] += gauss->weight*Jdet*viscosity[2]*thickness*(
+							2.*dbasis[1*numnodes+j]*dbasis[0*numnodes+i] + dbasis[0*numnodes+j]*dbasis[1*numnodes+i]
+							)*2*pow(n+1,2)/((2*n+3)*(n+2));//K24
+
+				Ke->values[(4*i+2)*2*2*numnodes+4*j+0] += gauss->weight*Jdet*viscosity[0]*thickness*(
+							2.*dbasis[0*numnodes+j]*dbasis[1*numnodes+i] + dbasis[1*numnodes+j]*dbasis[0*numnodes+i]
+							);//K31
+				Ke->values[(4*i+2)*2*2*numnodes+4*j+1] += gauss->weight*Jdet*viscosity[1]*thickness*(
+							2.*dbasis[0*numnodes+j]*dbasis[1*numnodes+i] + dbasis[1*numnodes+j]*dbasis[0*numnodes+i]
+							)*(n+1)/(n+2);//K32
+				Ke->values[(4*i+2)*2*2*numnodes+4*j+2] += gauss->weight*Jdet*viscosity[0]*thickness*(
+							4.*dbasis[1*numnodes+j]*dbasis[1*numnodes+i] + dbasis[0*numnodes+j]*dbasis[0*numnodes+i]
+							);//K33
+				Ke->values[(4*i+2)*2*2*numnodes+4*j+3] += gauss->weight*Jdet*viscosity[1]*thickness*(
+							4.*dbasis[1*numnodes+j]*dbasis[1*numnodes+i] + dbasis[0*numnodes+j]*dbasis[0*numnodes+i]
+							)*(n+1)/(n+2);//K34
+
+				Ke->values[(4*i+3)*2*2*numnodes+4*j+0] += gauss->weight*Jdet*viscosity[1]*thickness*(
+                     2.*dbasis[0*numnodes+j]*dbasis[1*numnodes+i] + dbasis[1*numnodes+j]*dbasis[0*numnodes+i]
+                     )*(n+1)/(n+2);//K41
+				Ke->values[(4*i+3)*2*2*numnodes+4*j+1] += gauss->weight*Jdet*viscosity[2]*thickness*(
+                     2.*dbasis[0*numnodes+j]*dbasis[1*numnodes+i] + dbasis[1*numnodes+j]*dbasis[0*numnodes+i]
+                     )*2*pow(n+1,2)/((2*n+3)*(n+2));//K42
+				Ke->values[(4*i+3)*2*2*numnodes+4*j+2] += gauss->weight*Jdet*viscosity[1]*thickness*(
+							4.*dbasis[1*numnodes+j]*dbasis[1*numnodes+i] + dbasis[0*numnodes+j]*dbasis[0*numnodes+i]
+							)*(n+1)/(n+2);//K43
+				Ke->values[(4*i+3)*2*2*numnodes+4*j+3] += gauss->weight*Jdet*viscosity[2]*thickness*(
+							4.*dbasis[1*numnodes+j]*dbasis[1*numnodes+i] + dbasis[0*numnodes+j]*dbasis[0*numnodes+i]
+							)*2*pow(n+1,2)/((2*n+3)*(n+2))
+							+ 
+							gauss->weight*Jdet*viscosity[3]*basis[j]*basis[i]*pow(n+1,2)/(thickness*(2*n+1))
+							;//K44
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	//basalelement->TransformStiffnessMatrixCoord(Ke,XYMOLHOEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(basis);
+	return Ke;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorMOLHO(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int      domaintype;
+	Element* basalelement;
+
+	/*Get basal element*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum: case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorMOLHODrivingStress(basalelement);
+	ElementVector* pe2=CreatePVectorMOLHOFront(basalelement);
+	ElementVector* pe =new ElementVector(pe1,pe2);
+
+	/*clean-up and return*/
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	delete pe1;
+	delete pe2;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorMOLHODrivingStress(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble  thickness,Jdet,slope[2],n;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe    = element->NewElementVector(MOLHOApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input*     thickness_input=element->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input*     surface_input  =element->GetInput(SurfaceEnum);   _assert_(surface_input);
+	Input*     n_input        =element->GetInput(MaterialsRheologyNEnum); _assert_(n_input);
+	IssmDouble rhog = element->FindParam(MaterialsRhoIceEnum)*element->FindParam(ConstantsGEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis, gauss);
+
+		thickness_input->GetInputValue(&thickness,gauss);
+		surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+		n_input->GetInputValue(&n,gauss);
+
+		for(int i=0;i<numnodes;i++){// per node: vx (basal vx), vshx, vy (basal vy), vshy
+			pe->values[i*4+0]+=-rhog*thickness*slope[0]*Jdet*gauss->weight*basis[i]; //F1
+			pe->values[i*4+1]+=-rhog*thickness*slope[0]*Jdet*gauss->weight*basis[i]*(n+1)/(n+2); //F2
+			pe->values[i*4+2]+=-rhog*thickness*slope[1]*Jdet*gauss->weight*basis[i]; //F3
+			pe->values[i*4+3]+=-rhog*thickness*slope[1]*Jdet*gauss->weight*basis[i]*(n+1)/(n+2); //F4
+		}
+	}
+
+	/*Transform coordinate system*/
+	//element->TransformLoadVectorCoord(pe,XYMOLHOEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorMOLHOFront(Element* element){/*{{{*/
+
+	/*If no front, return NULL*/
+	if(!element->IsIcefront()) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  Jdet,thickness,base,sealevel,water_pressure,ice_pressure;
+	IssmDouble  water_pressure_sh,ice_pressure_sh,pressure_sh,pressure,n,s,b;
+	IssmDouble *xyz_list = NULL;
+	IssmDouble *xyz_list_front = NULL;
+	IssmDouble  normal[2];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector(MOLHOApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	Input* thickness_input = element->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* base_input      = element->GetInput(BaseEnum);       _assert_(base_input);
+	Input* sealevel_input  = element->GetInput(SealevelEnum);       _assert_(sealevel_input);
+	Input* n_input         = element->GetInput(MaterialsRheologyNEnum); _assert_(n_input);
+	IssmDouble rho_water   = element->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble rho_ice     = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble gravity     = element->FindParam(ConstantsGEnum);
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetIcefrontCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum);
+	element->NormalSection(&normal[0],xyz_list_front);
+
+	/*Start looping on Gaussian points*/
+	Gauss* gauss=element->NewGauss(xyz_list,xyz_list_front,3);
+	while(gauss->next()){
+		thickness_input->GetInputValue(&thickness,gauss);
+		base_input->GetInputValue(&base,gauss);
+		n_input->GetInputValue(&n,gauss);
+		sealevel_input->GetInputValue(&sealevel,gauss);
+		element->JacobianDeterminantSurface(&Jdet,xyz_list_front,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		b = base-sealevel; // ice base shifted by the sea level
+		s = thickness+b;   // ice surface shifted by the sea level
+		/*Vertically integrated pressure - SSA type*/
+		water_pressure = -(1.0/2.0)*gravity*rho_water*(b*b);
+		ice_pressure   =  (1.0/2.0)*gravity*rho_ice*thickness*thickness;
+		pressure = ice_pressure + water_pressure;
+		/*Vertically integrated pressure - HO type*/
+		water_pressure_sh = gravity*rho_water*( -b*b/2 - (s*thickness/(n+2))*(1-pow(s/thickness,n+2)) + (thickness*thickness/(n+3))*(1-pow(s/thickness,n+3)) );
+		ice_pressure_sh   = gravity*rho_ice*thickness*thickness*(n+1)/(2*(n+3));
+		pressure_sh = ice_pressure_sh + water_pressure_sh;
+		if (b>0) {
+			pressure = ice_pressure;
+			pressure_sh = ice_pressure_sh;
+		}
+
+		for (int i=0;i<numnodes;i++){
+			pe->values[i*4+0]+= pressure*Jdet*gauss->weight*normal[0]*basis[i]; // F1
+			pe->values[i*4+1]+= pressure_sh*Jdet*gauss->weight*normal[0]*basis[i]; // F2
+			pe->values[i*4+2]+= pressure*Jdet*gauss->weight*normal[1]*basis[i]; // F3
+			pe->values[i*4+3]+= pressure_sh*Jdet*gauss->weight*normal[1]*basis[i]; // F4
+		}
+	}
+
+	/*Transform coordinate system*/
+	//element->TransformLoadVectorCoord(pe,XYMOLHOEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_front);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolutionMOLHO(IssmDouble* solution,Element* element){/*{{{*/
+
+	int         i,dim,domaintype;
+	IssmDouble  rho_ice,g;
+	int*        doflist=NULL;
+	IssmDouble* xyz_list=NULL;
+	Element*    basalelement=NULL;
+
+	/*Deal with pressure first*/
+	int numvertices = element->GetNumberOfVertices();
+	IssmDouble* pressure  = xNew<IssmDouble>(numvertices);
+	IssmDouble* thickness = xNew<IssmDouble>(numvertices);
+	IssmDouble* surface   = xNew<IssmDouble>(numvertices);
+
+	element->FindParam(&domaintype,DomainTypeEnum);
+	rho_ice =element->FindParam(MaterialsRhoIceEnum);
+	g       =element->FindParam(ConstantsGEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->GetInputListOnVertices(thickness,ThicknessEnum);
+			for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*thickness[i];
+			dim=2;
+			break;
+		case Domain3DEnum:
+			element->GetVerticesCoordinates(&xyz_list);
+			element->GetInputListOnVertices(surface,SurfaceEnum);
+			for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
+			dim=2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+	element->AddInput(PressureEnum,pressure,P1Enum);
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(thickness);
+	xDelete<IssmDouble>(surface);
+
+	/*Get basal element*/
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = element;
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()){xDelete<IssmDouble>(xyz_list); return;}
+			basalelement=element->SpawnBasalElement();
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+	int numdof   = numnodes*dim*2; //2xdim DOFs per node
+
+	/*Fetch dof list and allocate solution vectors*/
+	basalelement->GetDofListLocal(&doflist,MOLHOApproximationEnum,GsetEnum); 
+	IssmDouble* values    = xNew<IssmDouble>(numdof);
+	IssmDouble* vbx       = xNew<IssmDouble>(numnodes);
+	IssmDouble* vby       = xNew<IssmDouble>(numnodes);
+   IssmDouble* vshx      = xNew<IssmDouble>(numnodes); 
+   IssmDouble* vshy      = xNew<IssmDouble>(numnodes);
+	IssmDouble* vsx       = xNew<IssmDouble>(numnodes);
+	IssmDouble* vsy       = xNew<IssmDouble>(numnodes);
+	IssmDouble* vx        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vy        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vz        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vel       = xNew<IssmDouble>(numnodes);
+	IssmDouble* n			 = xNew<IssmDouble>(numnodes);
+	IssmDouble* H			 = xNew<IssmDouble>(numnodes);
+	IssmDouble* s			 = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
+
+	/*Transform solution in Cartesian Space*/
+	if(dim==2) basalelement->TransformSolutionCoord(&values[0],XYEnum);
+
+   /*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+   for(i=0;i<numnodes;i++){ //numnodes of the 2D mesh in which the MOLHO is written
+      vbx[i] =values[i*4+0]; //base vx
+      vshx[i]=values[i*4+1]; //shear vx
+		vsx[i] =vbx[i]+vshx[i]; //surface vx
+		if(xIsNan<IssmDouble>(vbx[i]))	_error_("NaN found in solution vector");
+      if(xIsInf<IssmDouble>(vbx[i]))	_error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(vshx[i]))	_error_("NaN found in solution vector");
+      if(xIsInf<IssmDouble>(vshx[i]))	_error_("Inf found in solution vector");
+		vby[i] =values[i*4+2]; //base vy
+		vshy[i]=values[i*4+3]; //shear vy
+		vsy[i] =vby[i]+vshy[i]; //surface vy
+		if(xIsNan<IssmDouble>(vby[i]))	_error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vby[i]))	_error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(vshy[i]))	_error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vshy[i]))	_error_("Inf found in solution vector");
+	}
+
+	/*Add vx and vy as inputs to the tria element (shear velocities): */
+	element->AddBasalInput(VxShearEnum,vshx,element->GetElementType());
+	element->AddBasalInput(VyShearEnum,vshy,element->GetElementType());
+
+	/*Add vx and vy as inputs to the tria element (base velocities): */
+	element->AddBasalInput(VxBaseEnum,vbx,element->GetElementType());
+	element->AddBasalInput(VyBaseEnum,vby,element->GetElementType());
+
+	/*Add vx and vy as inputs to the tria element (surface velocities): */
+	element->AddBasalInput(VxSurfaceEnum,vsx,element->GetElementType());
+	element->AddBasalInput(VySurfaceEnum,vsy,element->GetElementType());
+
+	/*Compute the vertically averaged velocities on each node*/
+	basalelement->GetInputListOnNodes(&n[0],MaterialsRheologyNEnum,0.); 
+
+	/* Reconstruct vx, vy and vz solutions for 3D problem
+	 * Add vx and vy as inputs to the tria element (vertically averaged velocities): */
+
+   switch(domaintype){
+      case Domain2DhorizontalEnum:
+			for(i=0;i<numnodes;i++){ //numnodes of the 2D mesh in which the MOLHO is written
+				vx[i]=vbx[i]+vshx[i]*(n[i]+1)/(n[i]+2);
+				vy[i]=vby[i]+vshy[i]*(n[i]+1)/(n[i]+2);
+				vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i]); 
+			}
+			element->AddBasalInput(VxEnum,vx,element->GetElementType());
+			element->AddBasalInput(VyEnum,vy,element->GetElementType());
+			element->AddBasalInput(VelEnum,vel,element->GetElementType()); 
+         break;
+      case Domain3DEnum:
+		   basalelement->GetInputListOnNodes(&H[0],ThicknessEnum,0.);
+		   basalelement->GetInputListOnNodes(&s[0],SurfaceEnum,0.);
+			element->Recover3DMOLHOInput(VxEnum, numnodes, vbx, vshx, n, H, s);
+			element->Recover3DMOLHOInput(VyEnum, numnodes, vby, vshy, n, H, s);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(vel);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(vy);
+	xDelete<IssmDouble>(vz);
+	xDelete<IssmDouble>(vby);
+	xDelete<IssmDouble>(vbx);
+	xDelete<IssmDouble>(vsy);
+	xDelete<IssmDouble>(vsx);
+	xDelete<IssmDouble>(vshy);
+	xDelete<IssmDouble>(vshx);
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(n);
+	xDelete<IssmDouble>(s);
+	xDelete<IssmDouble>(H);
+	xDelete<int>(doflist);
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+}/*}}}*/
+void           StressbalanceAnalysis::GetSolutionFromInputsMOLHO(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+
+	IssmDouble   vbx,vby,vshx,vshy;
+	int          domaintype,dim,approximation,dofpernode;
+	int*         doflist = NULL;
+
+	/*Get some parameters*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum: dim = 2; dofpernode = 4; break;
+		case Domain3DEnum: dim = 2; dofpernode = 4; break;
+		case Domain2DverticalEnum: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*dofpernode;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation!=MOLHOApproximationEnum) _error_("mesh "<<EnumToStringx(approximation)<<" not supported here");
+
+	/*Fetch dof list and allocate solution vector*/
+	element->GetDofList(&doflist,approximation,GsetEnum); 
+	IssmDouble* values = xNew<IssmDouble>(numdof);
+
+	/*Get inputs*/
+	Input* vxbase_input	=element->GetInput(VxBaseEnum);	_assert_(vxbase_input);
+	Input* vxshear_input	=element->GetInput(VxShearEnum);	_assert_(vxshear_input);
+	Input* vybase_input	=element->GetInput(VyBaseEnum);	_assert_(vybase_input);
+	Input* vyshear_input	=element->GetInput(VyShearEnum);	_assert_(vyshear_input);
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+	Gauss* gauss=element->NewGauss();
+	for(int i=0;i<numnodes;i++){
+		gauss->GaussNode(element->FiniteElement(),i);
+
+		/*Recover vx and vy*/
+		vxbase_input->GetInputValue(&vbx,gauss);	//base vx
+		vxshear_input->GetInputValue(&vshx,gauss);//shear vx
+		values[i*dofpernode+0]=vbx;  //base vx
+		values[i*dofpernode+1]=vshx; //shear vx
+		vybase_input->GetInputValue(&vby,gauss);	//base vy
+		vyshear_input->GetInputValue(&vshy,gauss);//shear vy
+		values[i*dofpernode+2]=vby; //base vy
+		values[i*dofpernode+3]=vshy;//shear vy  
+	}
+
+	solution->SetValues(numdof,doflist,values,INS_VAL);
+
+	/*Free resources:*/
+	delete gauss;
+	xDelete<IssmDouble>(values);
+	xDelete<int>(doflist);
+}/*}}}*/
+
+/*HO*/
+ElementMatrix* StressbalanceAnalysis::CreateJacobianMatrixHO(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble Jdet;
+	IssmDouble eps1dotdphii,eps1dotdphij;
+	IssmDouble eps2dotdphii,eps2dotdphij;
+	IssmDouble mu_prime;
+	IssmDouble epsilon[5]; /* epsilon=[exx,eyy,exy,exz,eyz];*/
+	IssmDouble eps1[3],eps2[3];
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element matrix, vectors and Gaussian points*/
+	ElementMatrix* Ke=this->CreateKMatrixHO(element); //Initialize Jacobian with regular HO (first part of the Gateau derivative)
+	IssmDouble*    dbasis = xNew<IssmDouble>(3*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input = element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input = element->GetInput(VyEnum); _assert_(vy_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGauss(5);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		element->StrainRateHO(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+		element->material->ViscosityHODerivativeEpsSquare(&mu_prime,&epsilon[0],gauss);
+		eps1[0]=2*epsilon[0]+epsilon[1];   eps2[0]=epsilon[2];
+		eps1[1]=epsilon[2];                eps2[1]=epsilon[0]+2*epsilon[1];
+		eps1[2]=epsilon[3];                eps2[2]=epsilon[4];
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				eps1dotdphii=eps1[0]*dbasis[0*numnodes+i]+eps1[1]*dbasis[1*numnodes+i]+eps1[2]*dbasis[2*numnodes+i];
+				eps1dotdphij=eps1[0]*dbasis[0*numnodes+j]+eps1[1]*dbasis[1*numnodes+j]+eps1[2]*dbasis[2*numnodes+j];
+				eps2dotdphii=eps2[0]*dbasis[0*numnodes+i]+eps2[1]*dbasis[1*numnodes+i]+eps2[2]*dbasis[2*numnodes+i];
+				eps2dotdphij=eps2[0]*dbasis[0*numnodes+j]+eps2[1]*dbasis[1*numnodes+j]+eps2[2]*dbasis[2*numnodes+j];
+
+				Ke->values[2*numnodes*(2*i+0)+2*j+0]+=gauss->weight*Jdet*2.*mu_prime*eps1dotdphij*eps1dotdphii;
+				Ke->values[2*numnodes*(2*i+0)+2*j+1]+=gauss->weight*Jdet*2.*mu_prime*eps2dotdphij*eps1dotdphii;
+				Ke->values[2*numnodes*(2*i+1)+2*j+0]+=gauss->weight*Jdet*2.*mu_prime*eps1dotdphij*eps2dotdphii;
+				Ke->values[2*numnodes*(2*i+1)+2*j+1]+=gauss->weight*Jdet*2.*mu_prime*eps2dotdphij*eps2dotdphii;
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixHO(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixHOViscous(element);
+	ElementMatrix* Ke2=CreateKMatrixHOFriction(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixHOFriction(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	if(element->IsAllFloating() || !element->IsOnBase()) return NULL;
+
+	/*Intermediaries*/
+	int         dim;
+	bool        mainlyfloating;
+	int         friction_style,point1;
+	IssmDouble  alpha2,Jdet,fraction1,fraction2;
+	IssmDouble  gllevelset,phi=1.;
+	IssmDouble *xyz_list_base = NULL;
+	Gauss*      gauss         = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*(dim-1);
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix(HOApproximationEnum);
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->FindParam(&friction_style,GroundinglineFrictionInterpolationEnum);
+	Input* gllevelset_input = NULL;
+
+	/*build friction object, used later on: */
+	/*dim=4 is special for HO, which is actually 2.5D*/
+	Friction* friction=new Friction(element,dim==3?2.5:1);
+
+	/*Recover portion of element that is grounded*/
+	if(!(friction_style==SubelementFriction2Enum)) phi=element->GetGroundedPortion(xyz_list_base);
+	if(friction_style==SubelementFriction2Enum){
+		gllevelset_input=element->GetInput(MaskOceanLevelsetEnum); _assert_(gllevelset_input);
+		element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+		gauss = element->NewGauss(point1,fraction1,fraction2,mainlyfloating,2);
+	}
+	else{
+		gauss=element->NewGaussBase(2);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	while(gauss->next()){
+
+		friction->GetAlpha2(&alpha2,gauss);
+		if(friction_style==SubelementFriction1Enum) alpha2=phi*alpha2;
+		else if(friction_style==SubelementFriction2Enum){
+			gllevelset_input->GetInputValue(&gllevelset, gauss);
+			if(gllevelset<0.) alpha2=0.;
+		}
+		else if(friction_style==NoFrictionOnPartiallyFloatingEnum){
+			if (phi<0.99999999) alpha2=0.;
+		}
+		else  _error_("friction interpolation "<<EnumToStringx(friction_style)<<" not implemented yet");
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		if(dim==3){
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[2*i*2*numnodes+2*j]       += alpha2*gauss->weight*Jdet*basis[i]*basis[j];
+					Ke->values[(2*i+1)*2*numnodes+2*j+1] += alpha2*gauss->weight*Jdet*basis[i]*basis[j];
+				}
+			}
+		}
+		else{
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += alpha2*gauss->weight*Jdet*basis[i]*basis[j];
+				}
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	if(dim==3) element->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	delete friction;
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(basis);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixHOViscous(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int         dim,bsize;
+	IssmDouble  viscosity,Jdet;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*(dim-1);
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix(HOApproximationEnum);
+	IssmDouble*    dbasis = xNew<IssmDouble>(dim*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input    = element->GetInput(VxEnum);       _assert_(vx_input);
+	Input* vy_input    = NULL;
+	if(dim==3){
+		vy_input=element->GetInput(VyEnum);          _assert_(vy_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGauss(5);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+		element->material->ViscosityHO(&viscosity,dim,xyz_list,gauss,vx_input,vy_input);
+
+		if(dim==3){
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[2*i*2*numnodes+2*j] += gauss->weight*Jdet*viscosity*(
+								4.*dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i] + dbasis[2*numnodes+j]*dbasis[2*numnodes+i]
+								);
+					Ke->values[2*i*2*numnodes+2*j+1] += gauss->weight*Jdet*viscosity*(
+								2.*dbasis[1*numnodes+j]*dbasis[0*numnodes+i] + dbasis[0*numnodes+j]*dbasis[1*numnodes+i]
+								);
+					Ke->values[(2*i+1)*2*numnodes+2*j] += gauss->weight*Jdet*viscosity*(
+								2.*dbasis[0*numnodes+j]*dbasis[1*numnodes+i] + dbasis[1*numnodes+j]*dbasis[0*numnodes+i]
+								);
+					Ke->values[(2*i+1)*2*numnodes+2*j+1] += gauss->weight*Jdet*viscosity*(
+								dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + 4.*dbasis[1*numnodes+j]*dbasis[1*numnodes+i] + dbasis[2*numnodes+j]*dbasis[2*numnodes+i]
+								);
+				}
+			}
+		}
+		else{
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += gauss->weight*Jdet*viscosity*(
+								4.*dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i]
+								);
+				}
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	if(dim==3) element->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	return Ke;
+}/*}}}*/
+#ifdef FSANALYTICAL
+ElementVector* StressbalanceAnalysis::CreatePVectorHO(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int         dim;
+	IssmDouble  x_coord,y_coord,z_coord;
+	IssmDouble  Jdet,forcex,forcey,forcez;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe=element->NewElementVector(HOApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(3);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis, gauss);
+
+		x_coord=element->GetXcoord(xyz_list,gauss);
+		y_coord=element->GetYcoord(xyz_list,gauss);
+		if(dim==3) z_coord=element->GetZcoord(xyz_list,gauss);
+		else z_coord=0.;
+
+		forcex=fx(x_coord,y_coord,z_coord,FSANALYTICAL);
+		forcey=fy(x_coord,y_coord,z_coord,FSANALYTICAL);
+
+		for(int i=0;i<numnodes;i++){
+			pe->values[i*(dim-1)+0]+=forcex*Jdet*gauss->weight*basis[i];
+			pe->values[i*(dim-1)+1]+=forcey*Jdet*gauss->weight*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	if(dim==3) element->TransformLoadVectorCoord(pe,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return pe;
+}/*}}}*/
+#else
+ElementVector* StressbalanceAnalysis::CreatePVectorHO(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorHODrivingStress(element);
+	ElementVector* pe2=CreatePVectorHOFront(element);
+	ElementVector* pe =new ElementVector(pe1,pe2);
+
+	/*clean-up and return*/
+	delete pe1;
+	delete pe2;
+	return pe;
+}/*}}}*/
+#endif
+ElementVector* StressbalanceAnalysis::CreatePVectorHODrivingStress(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int         dim;
+	IssmDouble  Jdet,slope[3];
+	IssmDouble* xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and vectors*/
+	ElementVector* pe=element->NewElementVector(HOApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input*     surface_input = element->GetInput(SurfaceEnum);   _assert_(surface_input);
+	IssmDouble rhog = element->FindParam(MaterialsRhoIceEnum)*element->FindParam(ConstantsGEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(3);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis, gauss);
+		surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			pe->values[i*(dim-1)+0]+=-rhog*slope[0]*Jdet*gauss->weight*basis[i];
+			if(dim==3) pe->values[i*(dim-1)+1]+=-rhog*slope[1]*Jdet*gauss->weight*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	if(dim==3) element->TransformLoadVectorCoord(pe,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorHOFront(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*If no front, return NULL*/
+	if(!element->IsIcefront()) return NULL;
+
+	/*Intermediaries*/
+	int         dim;
+	IssmDouble  Jdet,surface,sealevel,z,water_pressure,ice_pressure;
+	IssmDouble  surface_under_water,base_under_water,pressure;
+	IssmDouble* xyz_list       = NULL;
+	IssmDouble* xyz_list_front = NULL;
+	IssmDouble  normal[3];
+	Gauss*      gauss = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes    = element->GetNumberOfNodes();
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector(HOApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	Input* surface_input = element->GetInput(SurfaceEnum); _assert_(surface_input);
+	Input* sealevel_input       = element->GetInput(SealevelEnum);       _assert_(sealevel_input);
+	IssmDouble rho_water = element->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble rho_ice   = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble gravity   = element->FindParam(ConstantsGEnum);
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetIcefrontCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum);
+	element->NormalSection(&normal[0],xyz_list_front);
+
+	/*Initialize gauss points*/
+	IssmDouble zmax=xyz_list[0*3+(dim-1)]; for(int i=1;i<numvertices;i++) if(xyz_list[i*3+(dim-1)]>zmax) zmax=xyz_list[i*3+(dim-1)];
+	IssmDouble zmin=xyz_list[0*3+(dim-1)]; for(int i=1;i<numvertices;i++) if(xyz_list[i*3+(dim-1)]<zmin) zmin=xyz_list[i*3+(dim-1)];
+	if(zmax>0. && zmin<0.) gauss=element->NewGauss(xyz_list,xyz_list_front,3,10);//refined in vertical because of the sea level discontinuity
+	else                   gauss=element->NewGauss(xyz_list,xyz_list_front,3,3);
+
+	/* Start  looping on the number of gaussian points: */
+	while(gauss->next()){
+		surface_input->GetInputValue(&surface,gauss);
+		sealevel_input->GetInputValue(&sealevel,gauss);
+		if(dim==3) z=element->GetZcoord(xyz_list,gauss);
+		else       z=element->GetYcoord(xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->JacobianDeterminantSurface(&Jdet,xyz_list_front,gauss);
+
+		water_pressure = rho_water*gravity*min(0.,z-sealevel);//0 if the gaussian point is above water level
+		ice_pressure   = rho_ice*gravity*(surface-z);
+		pressure       = ice_pressure + water_pressure;
+
+		for (int i=0;i<numnodes;i++){
+			pe->values[(dim-1)*i+0]+= pressure*Jdet*gauss->weight*normal[0]*basis[i];
+			if(dim==3) pe->values[(dim-1)*i+1]+= pressure*Jdet*gauss->weight*normal[1]*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	if(dim==3)element->TransformLoadVectorCoord(pe,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_front);
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           StressbalanceAnalysis::GetBHO(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3 B4 B5 B6] where Bi is of size 5*2.
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by:
+	 *                   3D                        2D
+	 *
+	 *       Bi=[ dh/dx          0      ]  Bi=[ dh/dx]
+	 *          [   0           dh/dy   ]     [ dh/dy]
+	 *          [ 1/2*dh/dy  1/2*dh/dx  ]
+	 *          [ 1/2*dh/dz      0      ]
+	 *          [  0         1/2*dh/dz  ]
+	 * where h is the interpolation function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 5x(2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(dim*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B: */
+	if(dim==2){
+		for(int i=0;i<numnodes;i++){
+			B[numnodes*0+i] = dbasis[0*numnodes+i];
+			B[numnodes*1+i] = .5*dbasis[1*numnodes+i];
+		}
+	}
+	else{
+		for(int i=0;i<numnodes;i++){
+			B[2*numnodes*0+2*i+0] = dbasis[0*numnodes+i];
+			B[2*numnodes*0+2*i+1] = 0.;
+			B[2*numnodes*1+2*i+0] = 0.;
+			B[2*numnodes*1+2*i+1] = dbasis[1*numnodes+i];
+			B[2*numnodes*2+2*i+0] = .5*dbasis[1*numnodes+i];
+			B[2*numnodes*2+2*i+1] = .5*dbasis[0*numnodes+i];
+			B[2*numnodes*3+2*i+0] = .5*dbasis[2*numnodes+i];
+			B[2*numnodes*3+2*i+1] = 0.;
+			B[2*numnodes*4+2*i+0] = 0.;
+			B[2*numnodes*4+2*i+1] = .5*dbasis[2*numnodes+i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBHOFriction(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3] where Bi is square and of size 2.
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by:
+	 *                       3D           2D
+	 *                 Bi=[ N   0 ]    Bi=N
+	 *                    [ 0   N ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 2 x (numdof*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* basis=xNew<IssmDouble>(numnodes);
+	element->NodalFunctions(basis,gauss);
+
+	/*Build L: */
+	if(dim==3){
+		for(int i=0;i<numnodes;i++){
+			B[2*numnodes*0+2*i+0] = basis[i];
+			B[2*numnodes*0+2*i+1] = 0.;
+			B[2*numnodes*1+2*i+0] = 0.;
+			B[2*numnodes*1+2*i+1] = basis[i];
+		}
+	}
+	else{
+		for(int i=0;i<numnodes;i++){
+			B[i] = basis[i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBHOprime(IssmDouble* Bprime,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B'  matrix. B'=[B1' B2' B3'] where Bi' is of size 3*2.
+	 * For node i, Bi' can be expressed in the actual coordinate system
+	 * by:
+	 *                          3D                      2D
+	 *       Bi_prime=[ 2*dN/dx    dN/dy ] Bi_prime=[ 2*dN/dx ]
+	 *                [   dN/dx  2*dN/dy ]          [   dN/dy ]
+	 *                [   dN/dy    dN/dx ]
+	 * where hNis the finiteelement function for node i.
+	 *
+	 * We assume B' has been allocated already, of size: 3x(2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(dim*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B': */
+	if(dim==3){
+		for(int i=0;i<numnodes;i++){
+			Bprime[2*numnodes*0+2*i+0] = 2.*dbasis[0*numnodes+i];
+			Bprime[2*numnodes*0+2*i+1] = dbasis[1*numnodes+i];
+			Bprime[2*numnodes*1+2*i+0] = dbasis[0*numnodes+i];
+			Bprime[2*numnodes*1+2*i+1] = 2.*dbasis[1*numnodes+i];
+			Bprime[2*numnodes*2+2*i+0] = dbasis[1*numnodes+i];
+			Bprime[2*numnodes*2+2*i+1] = dbasis[0*numnodes+i];
+			Bprime[2*numnodes*3+2*i+0] = dbasis[2*numnodes+i];
+			Bprime[2*numnodes*3+2*i+1] = 0.;
+			Bprime[2*numnodes*4+2*i+0] = 0.;
+			Bprime[2*numnodes*4+2*i+1] = dbasis[2*numnodes+i];
+		}
+	}
+	else{
+		for(int i=0;i<numnodes;i++){
+			Bprime[numnodes*0+i] = 2.*dbasis[0*numnodes+i];
+			Bprime[numnodes*1+i] = dbasis[1*numnodes+i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolutionHO(IssmDouble* solution,Element* element){/*{{{*/
+
+	int         i,domaintype,dim;
+	int*        doflist=NULL;
+	IssmDouble* xyz_list=NULL;
+
+	/*Deal with pressure first*/
+	int numvertices = element->GetNumberOfVertices();
+	IssmDouble* pressure  = xNew<IssmDouble>(numvertices);
+	IssmDouble* surface   = xNew<IssmDouble>(numvertices);
+
+	element->FindParam(&domaintype,DomainTypeEnum);
+	IssmDouble rho_ice =element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble g       =element->FindParam(ConstantsGEnum);
+	switch(domaintype){
+		case Domain3DEnum:
+			element->GetVerticesCoordinates(&xyz_list);
+			element->GetInputListOnVertices(surface,SurfaceEnum);
+			for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
+			dim=3;
+			break;
+		case Domain2DverticalEnum:
+			element->GetVerticesCoordinates(&xyz_list);
+			element->GetInputListOnVertices(surface,SurfaceEnum);
+			for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+1]);
+			dim=2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+	element->AddInput(PressureEnum,pressure,P1Enum);
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(surface);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*(dim-1);
+
+	/*Fetch dof list and allocate solution vectors*/
+	element->GetDofListLocal(&doflist,HOApproximationEnum,GsetEnum);
+	IssmDouble* values = xNew<IssmDouble>(numdof);
+	IssmDouble* vx     = xNew<IssmDouble>(numnodes);
+	IssmDouble* vy     = xNew<IssmDouble>(numnodes);
+	IssmDouble* vz     = xNew<IssmDouble>(numnodes);
+	IssmDouble* vel    = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
+
+	/*Transform solution in Cartesian Space*/
+	if(dim==3) element->TransformSolutionCoord(&values[0],XYEnum);
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+	for(i=0;i<numnodes;i++){
+		vx[i]=values[i*(dim-1)+0];
+		if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector");
+		if(dim==3){
+			vy[i]=values[i*(dim-1)+1];
+			if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector");
+			if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector");
+		}
+	}
+
+	/*Get Vz and compute vel*/
+	if(dim==3){
+		element->GetInputListOnNodes(&vz[0],VzEnum,0.);
+		for(i=0;i<numnodes;i++) vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i] + vz[i]*vz[i]);
+	}
+	else{
+		element->GetInputListOnNodes(&vy[0],VyEnum,0.);
+		for(i=0;i<numnodes;i++) vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i]);
+	}
+
+	/*Add vx and vy as inputs to the element: */
+	element->AddInput(VxEnum,vx,element->GetElementType());
+	if(dim==3)element->AddInput(VyEnum,vy,element->GetElementType());
+	element->AddInput(VelEnum,vel,element->GetElementType());
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(vel);
+	xDelete<IssmDouble>(vz);
+	xDelete<IssmDouble>(vy);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<int>(doflist);
+}/*}}}*/
+
+/*FS*/
+ElementVector* StressbalanceAnalysis::CreateDVectorFS(Element* element){/*{{{*/
+
+	int dim;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+
+	/*Initialize output vector*/
+	ElementVector* de = element->NewElementVector(FSvelocityEnum);
+
+	for(int i=0;i<vnumnodes;i++){
+		for(int j=0;j<dim;j++) de->values[i*dim+j]=VelocityEnum;
+	}
+	for(int i=0;i<pnumnodes;i++){
+		de->values[vnumnodes*dim+i]=PressureEnum;
+	}
+
+	return de;
+
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateJacobianMatrixFS(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	int        i,j;
+	IssmDouble Jdet;
+	IssmDouble eps1dotdphii,eps1dotdphij;
+	IssmDouble eps2dotdphii,eps2dotdphij;
+	IssmDouble eps3dotdphii,eps3dotdphij;
+	IssmDouble mu_prime;
+	IssmDouble epsilon[6]; /* epsilon=[exx,eyy,ezz,exy,exz,eyz];*/
+	IssmDouble eps1[3],eps2[3],eps3[3];
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numdof    = vnumnodes*3 + pnumnodes*1;
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	for(i=0;i<vnumnodes;i++) cs_list[i]           = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Initialize Element matrix, vectors and Gaussian points*/
+	ElementMatrix* Ke=this->CreateKMatrixFS(element); //Initialize Jacobian with regular FS (first part of the Gateau derivative)
+	IssmDouble*    dbasis = xNew<IssmDouble>(3*vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input = element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input = element->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input = element->GetInput(VzEnum); _assert_(vz_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGauss(5);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsDerivativesVelocity(dbasis,xyz_list,gauss);
+
+		//element->StrainRateFS(&epsilon[0],xyz_list,gauss,vx_input,vy_input,vz_input);
+		//eps1[0]=epsilon[0];   eps2[0]=epsilon[3];   eps3[0]=epsilon[4];
+		//eps1[1]=epsilon[3];   eps2[1]=epsilon[1];   eps3[1]=epsilon[5];
+		//eps1[2]=epsilon[4];   eps2[2]=epsilon[5];   eps3[2]=epsilon[2];
+		element->StrainRateHO(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+		eps1[0]=epsilon[0];   eps2[0]=epsilon[2];   eps3[0]=epsilon[3];
+		eps1[1]=epsilon[2];   eps2[1]=epsilon[1];   eps3[1]=epsilon[4];
+		eps1[2]=epsilon[3];   eps2[2]=epsilon[4];   eps3[2]= -epsilon[0] -epsilon[1];
+		element->material->ViscosityFSDerivativeEpsSquare(&mu_prime,&epsilon[0],gauss);
+
+		for(i=0;i<vnumnodes;i++){
+			for(j=0;j<vnumnodes;j++){
+				eps1dotdphii=eps1[0]*dbasis[0*vnumnodes+i]+eps1[1]*dbasis[1*vnumnodes+i]+eps1[2]*dbasis[2*vnumnodes+i];
+				eps1dotdphij=eps1[0]*dbasis[0*vnumnodes+j]+eps1[1]*dbasis[1*vnumnodes+j]+eps1[2]*dbasis[2*vnumnodes+j];
+				eps2dotdphii=eps2[0]*dbasis[0*vnumnodes+i]+eps2[1]*dbasis[1*vnumnodes+i]+eps2[2]*dbasis[2*vnumnodes+i];
+				eps2dotdphij=eps2[0]*dbasis[0*vnumnodes+j]+eps2[1]*dbasis[1*vnumnodes+j]+eps2[2]*dbasis[2*vnumnodes+j];
+				eps3dotdphii=eps3[0]*dbasis[0*vnumnodes+i]+eps3[1]*dbasis[1*vnumnodes+i]+eps3[2]*dbasis[2*vnumnodes+i];
+				eps3dotdphij=eps3[0]*dbasis[0*vnumnodes+j]+eps3[1]*dbasis[1*vnumnodes+j]+eps3[2]*dbasis[2*vnumnodes+j];
+
+				Ke->values[numdof*(3*i+0)+3*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps1dotdphii;
+				Ke->values[numdof*(3*i+0)+3*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps1dotdphii;
+				Ke->values[numdof*(3*i+0)+3*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps1dotdphii;
+
+				Ke->values[numdof*(3*i+1)+3*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps2dotdphii;
+				Ke->values[numdof*(3*i+1)+3*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps2dotdphii;
+				Ke->values[numdof*(3*i+1)+3*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps2dotdphii;
+
+				Ke->values[numdof*(3*i+2)+3*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps3dotdphii;
+				Ke->values[numdof*(3*i+2)+3*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps3dotdphii;
+				Ke->values[numdof*(3*i+2)+3*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps3dotdphii;
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<int>(cs_list);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixFS(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Get type of algorithm*/
+	int fe_FS;
+	bool isNitsche;
+
+	element->FindParam(&fe_FS,FlowequationFeFSEnum);
+	element->FindParam(&isNitsche,FlowequationIsNitscheEnum);
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=NULL;
+	if(fe_FS==XTaylorHoodEnum)
+	 Ke1=CreateKMatrixFSViscousXTH(element);
+	else if(fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum)
+	 Ke1=CreateKMatrixFSViscousLA(element);
+	else if(fe_FS==P1P1GLSEnum)
+	 Ke1=CreateKMatrixFSViscousGLS(element);
+	else
+	 Ke1=CreateKMatrixFSViscous(element);
+
+	ElementMatrix* Ke2;
+	if (isNitsche) {
+		Ke2 = CreateKMatrixFSFrictionNitsche(element);
+	}
+	else {
+		Ke2 = CreateKMatrixFSFriction(element);
+	}
+	ElementMatrix* Ke3=CreateKMatrixFSShelf(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2,Ke3);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	delete Ke3;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixFSShelf(Element* element){/*{{{*/
+
+	if(!element->IsAllFloating() || !element->IsOnBase()) return NULL;
+
+	/*If on not water or not FS, skip stiffness: */
+	int approximation,shelf_dampening;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation!=FSApproximationEnum && approximation!=SSAFSApproximationEnum && approximation!=HOFSApproximationEnum) return NULL;
+	element->FindParam(&shelf_dampening,StressbalanceShelfDampeningEnum);
+	if(shelf_dampening==0) return NULL;
+
+	/*Intermediaries*/
+	bool        mainlyfloating;
+	int         j,i,dim;
+	IssmDouble  Jdet,slope2,scalar,dt;
+	IssmDouble  slope[3];
+	IssmDouble *xyz_list_base = NULL;
+	IssmDouble *xyz_list      = NULL;
+	Gauss*      gauss         = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numdof    = vnumnodes*dim + pnumnodes;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke = element->NewElementMatrix(FSvelocityEnum);
+	IssmDouble*    vbasis = xNew<IssmDouble>(vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	if(dt==0)   dt=1.e+5;
+	IssmDouble  rho_water     = element->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble  gravity       = element->FindParam(ConstantsGEnum);
+	Input*      base_input = element->GetInput(BaseEnum); _assert_(base_input);
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=element->NewGaussBase(3);
+	while(gauss->next()){
+
+		base_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+		element->NodalFunctionsVelocity(vbasis,gauss);
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		if(dim==2) slope2=slope[0]*slope[0];
+		else if(dim==3) slope2=slope[0]*slope[0]+slope[1]*slope[1];
+		scalar  = rho_water*gravity*sqrt(1+slope2)*gauss->weight*Jdet*dt;
+		for(i=0;i<vnumnodes;i++){
+			for(j=0;j<vnumnodes;j++){
+				Ke->values[numdof*((i+1)*dim-1)+(j+1)*dim-1] += scalar*vbasis[i]*vbasis[j];
+			}
+		}
+	}
+
+	/*DO NOT Transform Coordinate System: this stiffness matrix is already expressed in tangential coordinates*/
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(vbasis);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixFSViscous(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         i,dim;
+	IssmDouble  viscosity,FSreconditioning,Jdet;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numdof    = vnumnodes*dim + pnumnodes;
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke   = element->NewElementMatrix(FSvelocityEnum);
+	IssmDouble* vdbasis = xNew<IssmDouble>(dim*vnumnodes);
+	IssmDouble* pbasis  = xNew<IssmDouble>(pnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	Input* vx_input=element->GetInput(VxEnum);     _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum);     _assert_(vy_input);
+	Input* vz_input = NULL;
+	if(dim==3){vz_input=element->GetInput(VzEnum); _assert_(vz_input);}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGauss(5);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsDerivativesVelocity(vdbasis,xyz_list,gauss);
+		element->NodalFunctionsPressure(pbasis,gauss);
+		element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+
+		if(dim==2 || dim==3){
+			/*Stress balance*/
+			for(int i=0;i<vnumnodes;i++){
+				for(int j=0;j<vnumnodes;j++){
+					for (int p=0;p<dim;p++){
+						for (int q=0;q<dim;q++){
+							/* diagonal only */
+							Ke->values[(dim*i+p)*numdof+dim*j+p] += gauss->weight*Jdet*viscosity*(vdbasis[q*vnumnodes+j]*vdbasis[q*vnumnodes+i]);
+							/* All the entries */
+							Ke->values[(dim*i+p)*numdof+dim*j+q] += gauss->weight*Jdet*viscosity*(vdbasis[p*vnumnodes+j]*vdbasis[q*vnumnodes+i]);
+						}
+					}
+				}
+				for(int k=0;k<pnumnodes;k++){
+					for (int p=0;p<dim;p++){
+						Ke->values[(dim*i+p)*numdof+dim*vnumnodes+k] += gauss->weight*Jdet*FSreconditioning*(-pbasis[k]*vdbasis[p*vnumnodes+i]);
+					}
+				}
+			}
+			/*Incompressibility*/
+			for(int k=0;k<pnumnodes;k++){
+				for(int j=0;j<vnumnodes;j++){
+					for (int p=0;p<dim;p++){
+						Ke->values[(dim*vnumnodes+k)*numdof+dim*j+p] += gauss->weight*Jdet*(-FSreconditioning*vdbasis[p*vnumnodes+j]*pbasis[k]);
+					}
+				}
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(pbasis);
+	xDelete<IssmDouble>(vdbasis);
+	xDelete<int>(cs_list);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreatePressureMassMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         i,dim;
+	IssmDouble  FSreconditioning,Jdet;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numdof    = vnumnodes*dim + pnumnodes;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke  = element->NewElementMatrix(FSvelocityEnum);
+	IssmDouble* pbasis = xNew<IssmDouble>(pnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	//element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGauss(5);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsPressure(pbasis,gauss);
+
+		if(dim==3 || dim==2){
+			/*Pressure mass matrix*/
+			for(int k=0;k<pnumnodes;k++){
+				for(int j=0;j<pnumnodes;j++){
+					Ke->values[(dim*vnumnodes+k)*numdof+dim*vnumnodes+j] += gauss->weight*Jdet*(pbasis[j]*pbasis[k]);
+				}
+			}
+		}else{
+			_error_("STOP");
+		}
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(pbasis);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateSchurPrecondMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         i,dim;
+	IssmDouble  viscosity,FSreconditioning,Jdet;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numdof    = vnumnodes*dim + pnumnodes;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke  = element->NewElementMatrix(FSvelocityEnum);
+	IssmDouble* pbasis = xNew<IssmDouble>(pnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	//element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	Input* vx_input=element->GetInput(VxEnum);     _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum);     _assert_(vy_input);
+	Input* vz_input = NULL;
+	if(dim==3){vz_input=element->GetInput(VzEnum); _assert_(vz_input);}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGauss(5);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsPressure(pbasis,gauss);
+		element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+
+		if(dim==3 || dim==2){
+			/*Pressure mass matrix*/
+			for(int k=0;k<pnumnodes;k++){
+				for(int j=0;j<pnumnodes;j++){
+					Ke->values[(dim*vnumnodes+k)*numdof+dim*vnumnodes+j] += gauss->weight*1./viscosity*Jdet*(pbasis[j]*pbasis[k]);
+				}
+			}
+		}else{
+			_error_("STOP");
+		}
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(pbasis);
+	return Ke;
+}/*}}}*/
+
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixFSViscousGLS(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         i,dim;
+	IssmDouble  viscosity,FSreconditioning,Jdet;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numdof    = vnumnodes*dim + pnumnodes;
+
+	/* only work for P1 elements */
+	if (dim == 2) {_assert_(vnumnodes==3);}
+	else if (dim == 3) {_assert_(vnumnodes==6);}
+	else {_error_("GLS is not implemented except for 2D and 3D problems.");}
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke   = element->NewElementMatrix(FSvelocityEnum);
+	IssmDouble* vdbasis = xNew<IssmDouble>(dim*vnumnodes);
+	IssmDouble* pbasis  = xNew<IssmDouble>(pnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	Input* vx_input=element->GetInput(VxEnum);     _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum);     _assert_(vy_input);
+	Input* vz_input = NULL;
+	if(dim==3){vz_input=element->GetInput(VzEnum); _assert_(vz_input);}
+
+	/* prepare viscosity gradient for GLS */
+	IssmDouble NodalViscosity[6];
+	IssmDouble gradViscos[3];
+	IssmDouble etapq, s, Tau, mk, hk;
+	IssmDouble hx, hy, hz;
+	IssmDouble SU[3*(3+1)*6];
+    Gauss* vert = element->NewGauss();
+	/* Compute the nodal values of the viscosity */
+	for(int i=0;i<vnumnodes;i++){
+    	vert->GaussNode(element->element_type, i);
+		element->material->ViscosityFS(&NodalViscosity[i],dim,xyz_list,vert,vx_input,vy_input,vz_input);
+	}
+	delete vert;
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGauss(5);
+	while(gauss->next()){
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsDerivativesVelocity(vdbasis,xyz_list,gauss);
+		element->NodalFunctionsPressure(pbasis,gauss);
+		element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+
+		/* compute viscosity gradient at the gaussian point */
+		element->ValueP1DerivativesOnGauss(&gradViscos[0],NodalViscosity,xyz_list,gauss);
+
+		/*  weight*detJ */
+		s = gauss->weight*Jdet;
+
+		/* GLS Stabilization */
+		mk = 1.0 /3.0;
+		element->ElementSizes(&hx,&hy,&hz);
+		// hk = max(max(hx, hy), hz);
+		hk = max(hx, hy);
+		Tau = - mk * hk * hk * 0.125 / viscosity;
+
+		for (int q=0;q<dim;q++){
+			/* column 1-3 for the velocities */
+			for (int p=0;p<dim;p++){
+				for(int i=0;i<vnumnodes;i++){
+					SU[q*numdof+i*dim+p] = (-gradViscos[p])*vdbasis[q*vnumnodes+i];
+				}
+			}
+			/* add the diagnal components */
+			for(int i=0;i<vnumnodes;i++){
+				for (int p=0;p<dim;p++){
+					SU[q*numdof+i*dim+q] += (-gradViscos[p])*vdbasis[p*vnumnodes+i];
+				}
+			}
+			/* column 4 for the pressure */
+			for(int i=0;i<pnumnodes;i++){
+					SU[q*numdof+dim*vnumnodes+i] = FSreconditioning*vdbasis[q*vnumnodes+i];
+			}
+		}
+
+		if(dim==2 || dim==3){
+			/*Stress balance*/
+			for(int i=0;i<vnumnodes;i++){
+				for(int j=0;j<vnumnodes;j++){
+					for (int p=0;p<dim;p++){
+						for (int q=0;q<dim;q++){
+							/* diagonal only */
+							Ke->values[(dim*i+p)*numdof+dim*j+p] += s*viscosity*(vdbasis[q*vnumnodes+j]*vdbasis[q*vnumnodes+i]);
+							/* All the entries */
+							Ke->values[(dim*i+p)*numdof+dim*j+q] += s*viscosity*(vdbasis[p*vnumnodes+j]*vdbasis[q*vnumnodes+i]);
+						}
+					}
+				}
+				for(int k=0;k<pnumnodes;k++){
+					for (int p=0;p<dim;p++){
+						Ke->values[(dim*i+p)*numdof+dim*vnumnodes+k] += s*FSreconditioning*(-pbasis[k]*vdbasis[p*vnumnodes+i]);
+					}
+				}
+			}
+			/*Incompressibility*/
+			for(int k=0;k<pnumnodes;k++){
+				for(int j=0;j<vnumnodes;j++){
+					for (int p=0;p<dim;p++){
+						Ke->values[(dim*vnumnodes+k)*numdof+dim*j+p] += s*(-FSreconditioning*vdbasis[p*vnumnodes+j]*pbasis[k]);
+					}
+				}
+			}
+
+			/* GLS */
+			for(int i=0;i<numdof;i++){
+				for(int j=0;j<numdof;j++){
+					for (int p=0;p<dim;p++){
+							Ke->values[i*numdof+j] += Tau * s * SU[p*numdof+i]*SU[p*numdof+j];
+					}
+				}
+			}
+		}
+	}
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(pbasis);
+	xDelete<IssmDouble>(vdbasis);
+	xDelete<int>(cs_list);
+	return Ke;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorFSViscousGLS(Element* element){/*{{{*/
+
+	int         i,dim;
+	IssmDouble  Jdet,forcex,forcey,forcez;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numdof    = vnumnodes*dim + pnumnodes;
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Initialize vectors*/
+	ElementVector* pe     = element->NewElementVector(FSvelocityEnum);
+	IssmDouble*    vbasis = xNew<IssmDouble>(vnumnodes);
+	IssmDouble*    vdbasis = xNew<IssmDouble>(dim*vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	IssmDouble  rho_ice =element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  gravity =element->FindParam(ConstantsGEnum);
+	Input*      loadingforcex_input=element->GetInput(LoadingforceXEnum);  _assert_(loadingforcex_input);
+	Input*      loadingforcey_input=element->GetInput(LoadingforceYEnum);  _assert_(loadingforcey_input);
+	Input*      loadingforcez_input=NULL;
+	if(dim==3){
+		loadingforcez_input=element->GetInput(LoadingforceZEnum);  _assert_(loadingforcez_input);
+	}
+
+	/* prepare viscosity gradient for GLS */
+	Input* vx_input=element->GetInput(VxEnum);     _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum);     _assert_(vy_input);
+	Input* vz_input = NULL;
+	if(dim==3){vz_input=element->GetInput(VzEnum); _assert_(vz_input);}
+
+	IssmDouble viscosity,FSreconditioning;
+	IssmDouble NodalViscosity[6];
+	IssmDouble gradViscos[3];
+	IssmDouble etapq, s, Tau, mk, hk;
+	IssmDouble hx, hy, hz;
+	IssmDouble SU[3*(3+1)*6];
+    Gauss* vert = element->NewGauss();
+
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	/* Compute the nodal values of the viscosity */
+	for(int i=0;i<vnumnodes;i++){
+    	vert->GaussNode(element->element_type, i);
+		element->material->ViscosityFS(&NodalViscosity[i],dim,xyz_list,vert,vx_input,vy_input,vz_input);
+	}
+	delete vert;
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(5);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsVelocity(vbasis,gauss);
+		element->NodalFunctionsDerivativesVelocity(vdbasis,xyz_list,gauss);
+
+		loadingforcex_input->GetInputValue(&forcex,gauss);
+		loadingforcey_input->GetInputValue(&forcey,gauss);
+		if(dim==3) loadingforcez_input->GetInputValue(&forcez,gauss);
+
+		/* compute viscosity gradient at the gaussian point */
+		element->ValueP1DerivativesOnGauss(&gradViscos[0],NodalViscosity,xyz_list,gauss);
+		/*  weight*detJ */
+		s = gauss->weight*Jdet;
+		/* GLS Stabilization */
+		element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+		mk = 1.0 /3.0;
+		element->ElementSizes(&hx,&hy,&hz);
+		// hk = max(max(hx, hy), hz);
+		hk = max(hx, hy);
+		Tau = - mk * hk * hk * 0.125 / viscosity;
+
+		for (int q=0;q<dim;q++){
+			/* column 1-3 for the velocities */
+			for (int p=0;p<dim;p++){
+				for(int i=0;i<vnumnodes;i++){
+					SU[q*numdof+i*dim+p] = (-gradViscos[p])*vdbasis[q*vnumnodes+i];
+				}
+			}
+			/* add the diagnal components */
+			for(int i=0;i<vnumnodes;i++){
+				for (int p=0;p<dim;p++){
+					SU[q*numdof+i*dim+q] += (-gradViscos[p])*vdbasis[p*vnumnodes+i];
+				}
+			}
+			/* column 4 for the pressure */
+			for(int i=0;i<pnumnodes;i++){
+					SU[q*numdof+dim*vnumnodes+i] = FSreconditioning*vdbasis[q*vnumnodes+i];
+			}
+		}
+		for(i=0;i<vnumnodes;i++){
+			pe->values[i*dim+0] += +rho_ice*forcex *Jdet*gauss->weight*vbasis[i];
+			pe->values[i*dim+1] += +rho_ice*forcey *Jdet*gauss->weight*vbasis[i];
+			if(dim==3) pe->values[i*dim+2] += +rho_ice*forcez*Jdet*gauss->weight*vbasis[i];
+
+			pe->values[i*dim+dim-1] += -rho_ice*gravity*Jdet*gauss->weight*vbasis[i];
+		}
+
+		for(int i=0;i<numdof;i++){
+			pe->values[i] += Tau*Jdet*gauss->weight*rho_ice*(-gravity)*SU[(dim-1)*numdof+i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<int>(cs_list);
+	xDelete<IssmDouble>(vbasis);
+	xDelete<IssmDouble>(vdbasis);
+	xDelete<IssmDouble>(xyz_list);
+	return pe;
+}/*}}}*/
+
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixFSViscousLA(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         i,dim,epssize;
+	IssmDouble  r,rl,Jdet,viscosity,DU,DUl;
+	IssmDouble	normal[3];
+	IssmDouble *xyz_list = NULL;
+	IssmDouble *xyz_list_base = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+	element->FindParam(&r,AugmentedLagrangianREnum);
+	if(dim==2) epssize = 3;
+	else       epssize = 6;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->GetNumberOfNodes(P1Enum);
+	int lnumnodes = element->GetNumberOfNodes(P2Enum);
+	int numdof    = vnumnodes*dim;
+	int pnumdof   = pnumnodes;
+	int lnumdof   = lnumnodes;
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke       = element->NewElementMatrix(FSvelocityEnum);
+	IssmDouble*    B        = xNew<IssmDouble>(epssize*numdof);
+	IssmDouble*    Bprime   = xNew<IssmDouble>(epssize*numdof);
+	IssmDouble*    BtBUzawa = xNewZeroInit<IssmDouble>(numdof*pnumdof);
+	IssmDouble*    BU       = xNew<IssmDouble>(pnumdof);
+	IssmDouble*    BprimeU  = xNew<IssmDouble>(numdof);
+	IssmDouble*    D        = xNewZeroInit<IssmDouble>(epssize*epssize);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input = element->GetInput(VxEnum);     _assert_(vx_input);
+	Input* vy_input = element->GetInput(VyEnum);     _assert_(vy_input);
+	Input* vz_input = NULL;
+	if(dim==3){vz_input = element->GetInput(VzEnum); _assert_(vz_input);}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGauss(5);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		this->GetBFSvel(B,element,dim,xyz_list,gauss);
+		this->GetBFSprimevel(Bprime,element,dim,xyz_list,gauss);
+
+		element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+		for(i=0;i<epssize;i++)   D[i*epssize+i] = 2*viscosity*gauss->weight*Jdet;
+
+		TripleMultiply(B,epssize,numdof,1,
+					D,epssize,epssize,0,
+					Bprime,epssize,numdof,0,
+					&Ke->values[0],1);
+
+		this->GetBFSUzawa(BU,element,dim,xyz_list,gauss);
+		this->GetBFSprimeUzawa(BprimeU,element,dim,xyz_list,gauss);
+
+		DU = gauss->weight*Jdet*sqrt(r);
+
+		TripleMultiply(BU,1,pnumdof,1,
+					&DU,1,1,0,
+					BprimeU,1,numdof,0,
+					BtBUzawa,1);
+	}
+
+	/*The pressure augmentation should not be transformed*/
+	MatrixMultiply(BtBUzawa,pnumdof,numdof,1,
+				BtBUzawa,pnumdof,numdof,0,
+				&Ke->values[0],1);
+
+	if(element->IsOnBase() && 0){
+		element->FindParam(&rl,AugmentedLagrangianRlambdaEnum);
+		element->GetVerticesCoordinatesBase(&xyz_list_base);
+		element->NormalBase(&normal[0],xyz_list_base);
+
+		IssmDouble* Dlambda  = xNewZeroInit<IssmDouble>(dim*dim);
+		IssmDouble* C        = xNewZeroInit<IssmDouble>(dim*lnumdof);
+		IssmDouble* Cprime   = xNewZeroInit<IssmDouble>(dim*numdof);
+		IssmDouble* CtCUzawa = xNewZeroInit<IssmDouble>(numdof*lnumdof);
+
+		delete gauss;
+		gauss = element->NewGaussBase(5);
+		while(gauss->next()){
+
+			element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+			this->GetCFS(C,element,dim,xyz_list,gauss);
+			this->GetCFSprime(Cprime,element,dim,xyz_list,gauss);
+			for(i=0;i<dim;i++) Dlambda[i*dim+i] = gauss->weight*Jdet*sqrt(normal[i]*normal[i])*sqrt(rl);
+			TripleMultiply(C,dim,lnumdof,1,
+						Dlambda,dim,dim,0,
+						Cprime,dim,numdof,0,
+						CtCUzawa,1);
+		}
+
+		/*The sigma naugmentation should not be transformed*/
+		MatrixMultiply(CtCUzawa,lnumdof,numdof,1,
+					CtCUzawa,lnumdof,numdof,0,
+					&Ke->values[0],1);
+
+		/*Delete base part*/
+		xDelete<IssmDouble>(Dlambda);
+		xDelete<IssmDouble>(C);
+		xDelete<IssmDouble>(Cprime);
+		xDelete<IssmDouble>(CtCUzawa);
+		xDelete<IssmDouble>(xyz_list_base);
+	}
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(D);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(BprimeU);
+	xDelete<IssmDouble>(BU);
+	xDelete<IssmDouble>(BtBUzawa);
+	xDelete<int>(cs_list);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixFSViscousXTH(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         i,dim,epssize;
+	IssmDouble  r,FSreconditioning,Jdet;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+	element->FindParam(&r,AugmentedLagrangianREnum);
+	if(dim==2) epssize = 3;
+	else       epssize = 6;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numdof    = vnumnodes*dim + pnumnodes;
+	int bsize     = epssize + 2;
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix(FSvelocityEnum);
+	IssmDouble*    B      = xNew<IssmDouble>(bsize*numdof);
+	IssmDouble*    Bprime = xNew<IssmDouble>(bsize*numdof);
+	IssmDouble*    D      = xNewZeroInit<IssmDouble>(bsize*bsize);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	Input* vx_input=element->GetInput(VxEnum);     _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum);     _assert_(vy_input);
+	Input* vz_input;
+	if(dim==3){vz_input=element->GetInput(VzEnum); _assert_(vz_input);}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGauss(5);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		this->GetBFS(B,element,dim,xyz_list,gauss);
+		this->GetBFSprime(Bprime,element,dim,xyz_list,gauss);
+
+		for(i=0;i<epssize;i++)     D[i*bsize+i] = + r*gauss->weight*Jdet;
+		for(i=epssize;i<bsize;i++) D[i*bsize+i] = - FSreconditioning*gauss->weight*Jdet;
+
+		TripleMultiply(B,bsize,numdof,1,
+					D,bsize,bsize,0,
+					Bprime,bsize,numdof,0,
+					&Ke->values[0],1);
+	}
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(D);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(B);
+	xDelete<int>(cs_list);
+	return Ke;
+}/*}}}*/
+#ifdef FSANALYTICAL
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixFSFriction(Element* element){/*{{{*/
+
+	if(element->IsAllFloating() || !element->IsOnBase()) return NULL;
+
+	/*If on water or not FS, skip stiffness: */
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation!=FSApproximationEnum && approximation!=SSAFSApproximationEnum && approximation!=HOFSApproximationEnum) return NULL;
+
+	/*Intermediaries*/
+	int         i,dim;
+	IssmDouble  alpha2,Jdet;
+	IssmDouble  x_coord,y_coord,z_coord;
+	IssmDouble *xyz_list_base = NULL;
+	IssmDouble *xyz_list      = NULL;
+	Gauss*      gauss         = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numdof    = vnumnodes*dim + pnumnodes;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke = element->NewElementMatrix(FSvelocityEnum);
+	IssmDouble*    B  = xNew<IssmDouble>(dim*numdof);
+	IssmDouble*    D  = xNewZeroInit<IssmDouble>(dim*dim);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input         = element->GetInput(VxEnum);      _assert_(vx_input);
+	Input* vy_input         = element->GetInput(VyEnum);      _assert_(vy_input);
+	Input* vz_input         = NULL;
+	if(dim==3){    vz_input = element->GetInput(VzEnum);      _assert_(vz_input);}
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=element->NewGaussBase(10);
+	while(gauss->next()){
+
+		x_coord=element->GetXcoord(xyz_list,gauss);
+		y_coord=element->GetYcoord(xyz_list,gauss);
+		if(dim==3) z_coord=element->GetZcoord(xyz_list,gauss);
+		else z_coord=0.;
+
+		alpha2=alpha(x_coord,y_coord,z_coord,FSANALYTICAL);
+
+		this->GetBFSFriction(B,element,dim,xyz_list_base,gauss);
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		for(int i=0;i<dim;i++) D[i*dim+i] = alpha2*gauss->weight*Jdet; //taub_x = -alpha2 v_x (same for y)
+
+		TripleMultiply(B,dim,numdof,1,
+					D,dim,dim,0,
+					B,dim,numdof,0,
+					&Ke->values[0],1);
+	}
+
+	/*DO NOT Transform Coordinate System: this stiffness matrix is already expressed in tangential coordinates*/
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(D);
+	return Ke;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorFS(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	ElementVector* pe = NULL;
+
+	ElementVector* pe1=CreatePVectorFSViscous(element);
+	ElementVector* pe2=CreatePVectorFSFriction(element);
+	ElementVector* pe3=CreatePVectorFSStress(element);
+	pe =new ElementVector(pe1,pe2,pe3);
+	delete pe1;
+	delete pe2;
+	delete pe3;
+
+	/*clean-up and return*/
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorFSFriction(Element* element){/*{{{*/
+
+	if(!element->IsOnBase()) return NULL;
+
+	/*Intermediaries*/
+	int         dim;
+	IssmDouble  alpha2,Jdet;
+	IssmDouble  bed_normal[3];
+	IssmDouble *xyz_list_base = NULL;
+	Gauss*      gauss         = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+
+	/*Initialize Element matrix and vectors*/
+	ElementVector* pe = element->NewElementVector(FSvelocityEnum);
+	IssmDouble*    vbasis = xNew<IssmDouble>(vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	Input*  alpha2_input=element->GetInput(FrictionCoefficientEnum); _assert_(alpha2_input);
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=element->NewGaussBase(3);
+	while(gauss->next()){
+
+		alpha2_input->GetInputValue(&alpha2, gauss);
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctionsVelocity(vbasis,gauss);
+		element->NormalBase(&bed_normal[0],xyz_list_base);
+
+		for(int i=0;i<vnumnodes;i++){
+			pe->values[i*dim+0] += - alpha2*gauss->weight*Jdet*vbasis[i]*bed_normal[1];
+			pe->values[i*dim+1] += alpha2*gauss->weight*Jdet*vbasis[i]*bed_normal[0];
+			if(dim==3){
+				pe->values[i*dim+2]+= alpha2*gauss->weight*Jdet*vbasis[i];
+			}
+		}
+
+	}
+
+	/*DO NOT Transform Coordinate System: this stiffness matrix is already expressed in tangential coordinates*/
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(vbasis);
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorFSStress(Element* element){/*{{{*/
+
+	/*Skipping for now*/
+	return NULL;
+	if(!element->IsOnBase()) return NULL;
+
+	/*Intermediaries*/
+	int         dim;
+	IssmDouble  sigmann,sigmant,Jdet,bedslope,beta;
+	IssmDouble *xyz_list_base = NULL;
+	Gauss*      gauss         = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+
+	/*Initialize Element matrix and vectors*/
+	ElementVector* pe = element->NewElementVector(FSvelocityEnum);
+	IssmDouble*    vbasis = xNew<IssmDouble>(vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	Input*  sigmann_input=element->GetInput(VzEnum); _assert_(sigmann_input);
+	Input*  sigmant_input=element->GetInput(TemperatureEnum); _assert_(sigmant_input);
+	Input*  bedslope_input=element->GetInput(BedSlopeXEnum);     _assert_(bedslope_input);
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=element->NewGaussBase(3);
+	while(gauss->next()){
+
+		sigmann_input->GetInputValue(&sigmann, gauss);
+		sigmant_input->GetInputValue(&sigmant, gauss);
+		bedslope_input->GetInputValue(&bedslope, gauss);
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctionsVelocity(vbasis,gauss);
+
+		beta=sqrt(1+bedslope*bedslope);
+		for(int i=0;i<vnumnodes;i++){
+			pe->values[i*dim+0] += - (1./beta)*(-bedslope*sigmann + sigmant)*gauss->weight*Jdet*vbasis[i];
+			pe->values[i*dim+1] += - (1./beta)*(sigmann + bedslope*sigmant)*gauss->weight*Jdet*vbasis[i];
+			if(dim==3){
+				//pe->values[i*dim+2]+= alpha2*gauss->weight*Jdet*vbasis[i];
+				_error_("3d not supported yet");
+			}
+		}
+
+	}
+
+	/*DO NOT Transform Coordinate System: this stiffness matrix is already expressed in tangential coordinates*/
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(vbasis);
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorFSViscous(Element* element){/*{{{*/
+
+	int         i,dim,fe_FS;
+	IssmDouble  x_coord,y_coord,z_coord;
+	IssmDouble  Jdet,forcex,forcey,forcez;
+	IssmDouble *xyz_list = NULL;
+
+	element->FindParam(&fe_FS,FlowequationFeFSEnum);
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Initialize vectors*/
+	ElementVector* pe     = element->NewElementVector(FSvelocityEnum);
+	IssmDouble*    vbasis = xNew<IssmDouble>(vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(5);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsVelocity(vbasis,gauss);
+
+		x_coord=element->GetXcoord(xyz_list,gauss);
+		y_coord=element->GetYcoord(xyz_list,gauss);
+		if(dim==3) z_coord=element->GetZcoord(xyz_list,gauss);
+		else z_coord=0.;
+
+		forcex=fx(x_coord,y_coord,z_coord,FSANALYTICAL);
+		forcey=fy(x_coord,y_coord,z_coord,FSANALYTICAL);
+		forcez=fz(x_coord,y_coord,z_coord,FSANALYTICAL);
+
+		for(i=0;i<vnumnodes;i++){
+			pe->values[i*dim+0] += forcex *Jdet*gauss->weight*vbasis[i];
+			pe->values[i*dim+1] += forcey *Jdet*gauss->weight*vbasis[i];
+			if(dim==3) pe->values[i*dim+2] += forcez *Jdet*gauss->weight*vbasis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<int>(cs_list);
+	xDelete<IssmDouble>(vbasis);
+	xDelete<IssmDouble>(xyz_list);
+	if(fe_FS==XTaylorHoodEnum){
+		ElementVector* pe2=CreatePVectorFSViscousXTH(element);
+		ElementVector* pe3 = new ElementVector(pe,pe2);
+		delete pe;
+		delete pe2;
+		return pe3;
+	}
+	else if(fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum){
+		ElementVector* pe2=CreatePVectorFSViscousLA(element);
+		ElementVector* pe3 = new ElementVector(pe,pe2);
+		delete pe;
+		delete pe2;
+		return pe3;
+	}
+	return pe;
+}/*}}}*/
+#else
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixFSFriction(Element* element){/*{{{*/
+
+	if(element->IsAllFloating() || !element->IsOnBase()) return NULL;
+
+	/*If on water or not FS, skip stiffness: */
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation!=FSApproximationEnum && approximation!=SSAFSApproximationEnum && approximation!=HOFSApproximationEnum) return NULL;
+
+	/*Intermediaries*/
+	bool        mainlyfloating;
+	int         dim,domaintype;
+	int         friction_style,point1;
+	IssmDouble  alpha2,Jdet,fraction1,fraction2;
+	IssmDouble  gllevelset,phi=1.;
+	IssmDouble *xyz_list_base = NULL;
+	Gauss*      gauss         = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numdof    = vnumnodes*dim + pnumnodes;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke = element->NewElementMatrix(FSvelocityEnum);
+	IssmDouble* vbasis=xNew<IssmDouble>(vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->FindParam(&friction_style,GroundinglineFrictionInterpolationEnum);
+	Input* gllevelset_input = NULL;
+
+	/*build friction object, used later on: */
+	Friction* friction=new Friction(element,dim==3?3:1);
+
+	/*Recover portion of element that is grounded*/
+	if(!(friction_style==SubelementFriction2Enum)) phi=element->GetGroundedPortion(xyz_list_base);
+	if(friction_style==SubelementFriction2Enum){
+		if(domaintype==Domain2DverticalEnum) _error_("Subelement Friction 2 not implemented yet for Flowline");
+		gllevelset_input=element->GetInput(MaskOceanLevelsetEnum); _assert_(gllevelset_input);
+		element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+		//gauss = element->NewGauss(point1,fraction1,fraction2,mainlyfloating,2);
+		gauss=element->NewGaussBase(3);
+	}
+	else{
+		gauss=element->NewGaussBase(3);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	while(gauss->next()){
+
+		friction->GetAlpha2(&alpha2,gauss);
+		if(friction_style==SubelementFriction1Enum) alpha2=phi*alpha2;
+		else if(friction_style==SubelementFriction2Enum){
+			gllevelset_input->GetInputValue(&gllevelset, gauss);
+			if(gllevelset<0.) alpha2=0.;
+		}
+		else if(friction_style==NoFrictionOnPartiallyFloatingEnum){
+			if (phi<0.99999999) alpha2=0.;
+		}
+		else  _error_("friction interpolation "<<EnumToStringx(friction_style)<<" not implemented yet");
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctionsVelocity(vbasis,gauss);
+
+		if(dim==3){
+			/*Stress balance*/
+			for(int i=0;i<vnumnodes;i++){
+				for(int j=0;j<vnumnodes;j++){
+					Ke->values[(3*i+0)*numdof+3*j+0] += alpha2*gauss->weight*Jdet*vbasis[i]*vbasis[j];
+					Ke->values[(3*i+1)*numdof+3*j+1] += alpha2*gauss->weight*Jdet*vbasis[i]*vbasis[j];
+					Ke->values[(3*i+2)*numdof+3*j+2] += alpha2*gauss->weight*Jdet*vbasis[i]*vbasis[j];
+				}
+			}
+		}
+		else{
+			/*Stress balance*/
+			for(int i=0;i<vnumnodes;i++){
+				for(int j=0;j<vnumnodes;j++){
+					Ke->values[(2*i+0)*numdof+2*j+0] += alpha2*gauss->weight*Jdet*vbasis[i]*vbasis[j];
+					Ke->values[(2*i+1)*numdof+2*j+1] += alpha2*gauss->weight*Jdet*vbasis[i]*vbasis[j];
+				}
+			}
+		}
+	}
+
+	/*DO NOT Transform Coordinate System: this stiffness matrix is already expressed in tangential coordinates*/
+
+	/*Clean up and return*/
+	delete gauss;
+	delete friction;
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(vbasis);
+	return Ke;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorFS(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	ElementVector* pe = NULL;
+	int fe_FS;
+	element->FindParam(&fe_FS,FlowequationFeFSEnum);
+
+	if(fe_FS==XTaylorHoodEnum){
+		ElementVector* pe1=CreatePVectorFSViscous(element);
+		ElementVector* pe2=CreatePVectorFSShelf(element);
+		ElementVector* pe3=CreatePVectorFSFront(element);
+		ElementVector* petemp =new ElementVector(pe1,pe2,pe3);
+		ElementVector* pe4=CreatePVectorFSViscousXTH(element);
+		pe = new ElementVector(petemp,pe4);
+		delete pe1;
+		delete pe2;
+		delete pe3;
+		delete petemp;
+		delete pe4;
+	}
+	else if(fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum){
+		ElementVector* pe1=CreatePVectorFSViscous(element);
+		ElementVector* pe2=CreatePVectorFSShelf(element);
+		ElementVector* pe3=CreatePVectorFSFront(element);
+		ElementVector* petemp =new ElementVector(pe1,pe2,pe3);
+		ElementVector* pe4=CreatePVectorFSViscousLA(element);
+		pe = new ElementVector(petemp,pe4);
+		delete pe1;
+		delete pe2;
+		delete pe3;
+		delete petemp;
+		delete pe4;
+	}
+	else if(fe_FS==P1P1GLSEnum) {
+		ElementVector* pe1=CreatePVectorFSViscousGLS(element);
+		ElementVector* pe2=CreatePVectorFSShelf(element);
+		ElementVector* pe3=CreatePVectorFSFront(element);
+		pe =new ElementVector(pe1,pe2,pe3);
+		delete pe1;
+		delete pe2;
+		delete pe3;
+	}
+	else{
+		ElementVector* pe1=CreatePVectorFSViscous(element);
+		ElementVector* pe2=CreatePVectorFSShelf(element);
+		ElementVector* pe3=CreatePVectorFSFront(element);
+		pe =new ElementVector(pe1,pe2,pe3);
+		delete pe1;
+		delete pe2;
+		delete pe3;
+	}
+
+	/*clean-up and return*/
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorFSViscous(Element* element){/*{{{*/
+
+	int         i,dim;
+	IssmDouble  Jdet,forcex,forcey,forcez;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Initialize vectors*/
+	ElementVector* pe     = element->NewElementVector(FSvelocityEnum);
+	IssmDouble*    vbasis = xNew<IssmDouble>(vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	IssmDouble  rho_ice =element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  gravity =element->FindParam(ConstantsGEnum);
+	Input*      loadingforcex_input=element->GetInput(LoadingforceXEnum);  _assert_(loadingforcex_input);
+	Input*      loadingforcey_input=element->GetInput(LoadingforceYEnum);  _assert_(loadingforcey_input);
+	Input*      loadingforcez_input=NULL;
+	if(dim==3){
+		loadingforcez_input=element->GetInput(LoadingforceZEnum);  _assert_(loadingforcez_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(5);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsVelocity(vbasis,gauss);
+
+		loadingforcex_input->GetInputValue(&forcex,gauss);
+		loadingforcey_input->GetInputValue(&forcey,gauss);
+		if(dim==3) loadingforcez_input->GetInputValue(&forcez,gauss);
+
+		for(i=0;i<vnumnodes;i++){
+			pe->values[i*dim+0] += +rho_ice*forcex *Jdet*gauss->weight*vbasis[i];
+			pe->values[i*dim+1] += +rho_ice*forcey *Jdet*gauss->weight*vbasis[i];
+			if(dim==3) pe->values[i*dim+2] += +rho_ice*forcez*Jdet*gauss->weight*vbasis[i];
+
+			pe->values[i*dim+dim-1] += -rho_ice*gravity*Jdet*gauss->weight*vbasis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<int>(cs_list);
+	xDelete<IssmDouble>(vbasis);
+	xDelete<IssmDouble>(xyz_list);
+	return pe;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixFSFrictionNitsche(Element* element){/*{{{*/
+
+	if(element->IsAllFloating() || !element->IsOnBase()) return NULL;
+
+	/*If on water or not FS, skip stiffness: */
+	int approximation;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation!=FSApproximationEnum && approximation!=SSAFSApproximationEnum && approximation!=HOFSApproximationEnum) return NULL;
+
+	/*Intermediaries*/
+	bool        mainlyfloating;
+	int         dim,domaintype;
+	int         friction_style,point1;
+	IssmDouble  alpha2,Jdet,fraction1,fraction2;
+	IssmDouble  viscosity, FSreconditioning;
+	IssmDouble  gllevelset,phi=1.;
+	IssmDouble *xyz_list_base = NULL;
+	IssmDouble *xyz_list = NULL;
+	Gauss*      gauss         = NULL;
+	/*coefficient of Nitsche's method*/
+	IssmDouble gamma, hx, hy, hz;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numdof    = vnumnodes*dim + pnumnodes;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke = element->NewElementMatrix(FSvelocityEnum);
+	IssmDouble* vbasis = xNew<IssmDouble>(vnumnodes);
+	IssmDouble* vdbasis = xNew<IssmDouble>(dim*vnumnodes);
+	IssmDouble* pbasis  = xNew<IssmDouble>(pnumnodes);
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(int i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(int i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(int i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&friction_style,GroundinglineFrictionInterpolationEnum);
+	Input* gllevelset_input = NULL;
+	Input* vx_input=element->GetInput(VxEnum);     _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum);     _assert_(vy_input);
+	Input* vz_input = NULL;
+	if(dim==3){vz_input=element->GetInput(VzEnum); _assert_(vz_input);}
+
+	/*build friction object, used later on: */
+	Friction* friction=new Friction(element,dim==3?3:1);
+
+	/*Recover portion of element that is grounded*/
+	if(!(friction_style==SubelementFriction2Enum)) phi=element->GetGroundedPortion(xyz_list_base);
+	if(friction_style==SubelementFriction2Enum){
+		if(domaintype==Domain2DverticalEnum) _error_("Subelement Friction 2 not implemented yet for Flowline");
+		gllevelset_input=element->GetInput(MaskOceanLevelsetEnum); _assert_(gllevelset_input);
+		element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+		gauss=element->NewGaussBase(3);
+	}
+	else{
+		gauss=element->NewGaussBase(3);
+	}
+
+	element->ElementSizes(&hx,&hy,&hz);
+	element->FindParam(&gamma,FeFSNitscheGammaEnum);
+
+	gamma = gamma / sqrt(hx*hx+hy*hy+hz*hz);
+
+	/* Start  looping on the number of gaussian points: */
+	while(gauss->next()){
+		friction->GetAlpha2(&alpha2,gauss);
+		if(friction_style==SubelementFriction1Enum) alpha2=phi*alpha2;
+		else if(friction_style==SubelementFriction2Enum){
+			gllevelset_input->GetInputValue(&gllevelset, gauss);
+			if(gllevelset<0.) alpha2=0.;
+		}
+		else if(friction_style==NoFrictionOnPartiallyFloatingEnum){
+			if (phi<0.99999999) alpha2=0.;
+		}
+		else  _error_("friction interpolation "<<EnumToStringx(friction_style)<<" not implemented yet");
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctionsVelocity(vbasis,gauss);
+		/* The full element is needed for calculating derivative of the basis functions */
+		element->NodalFunctionsDerivativesVelocity(vdbasis,xyz_list,gauss);
+		element->NodalFunctionsPressure(pbasis,gauss);
+		element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+
+		for(int i=0;i<vnumnodes;i++){
+			for(int j=0;j<vnumnodes;j++){
+				for (int d=0; d<dim; d++) {
+						Ke->values[(dim*i+d)*numdof+dim*j+d] += alpha2*gauss->weight*Jdet*vbasis[i]*vbasis[j];
+				}
+			}
+		}
+		/* -------- Nitsche terms -------- */
+		/* Boundary terms for integration by parts.
+			The coefficient matrix of n*sigma*n-gamma*n*u is stored in the following order:
+			rows--dimensions, columns--number of nodes.
+			If we consider nsigma as a 1d vector, it has exactly the same order as the unknown vector.
+		*/
+		for(int i=0;i<vnumnodes;i++){
+			for(int j=0;j<vnumnodes;j++){
+				/* gamma*(n*u)*(n*v) */
+				Ke->values[(dim*i+(dim-1))*numdof+dim*j+(dim-1)] += gauss->weight*Jdet * (gamma*viscosity) * vbasis[j] * vbasis[i];
+				/* -sigma(v)*(n*u) */
+				Ke->values[(dim*i+(dim-1))*numdof+dim*j+(dim-1)] += (- gauss->weight*Jdet) * 2.0 * viscosity * (-vbasis[j]) * vdbasis[(dim-1)*vnumnodes+i];
+				/* -sigma(u)*(n*v) */
+				Ke->values[(dim*i+(dim-1))*numdof+dim*j+(dim-1)] += (- gauss->weight*Jdet) * 2.0 * viscosity * vdbasis[(dim-1)*vnumnodes+j] * (-vbasis[i]);
+			}
+		}
+		/* pressure x velocity  component A12, +p*(n*v) */
+		for(int k=0;k<pnumnodes;k++){
+			for(int i=0;i<vnumnodes;i++){
+				Ke->values[(dim*i+dim-1)*numdof+dim*vnumnodes+k] += gauss->weight*Jdet * FSreconditioning*pbasis[k] * (-vbasis[i]);
+			}
+		}
+		/* velocity x pressure component A21, +(n*u)*q */
+		for(int k=0;k<pnumnodes;k++){
+			for(int j=0;j<vnumnodes;j++){
+				Ke->values[(dim*vnumnodes+k)*numdof+dim*j+dim-1] += gauss->weight*Jdet * (-vbasis[j]) * FSreconditioning*pbasis[k];
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	delete friction;
+	xDelete<IssmDouble>(xyz_list_base);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(vbasis);
+	xDelete<IssmDouble>(vdbasis);
+	xDelete<IssmDouble>(pbasis);
+	return Ke;
+}/*}}}*/
+#endif
+ElementVector* StressbalanceAnalysis::CreatePVectorFSFront(Element* element){/*{{{*/
+
+	/*If no front, return NULL*/
+	if(!element->IsIcefront()) return NULL;
+
+	/*Intermediaries*/
+	int         i,dim;
+	IssmDouble  Jdet,pressure,surface,sealevel,z;
+	IssmDouble	normal[3];
+	IssmDouble *xyz_list       = NULL;
+	IssmDouble *xyz_list_front = NULL;
+	Gauss      *gauss          = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes   = element->NumberofNodesVelocity();
+	int pnumnodes   = element->NumberofNodesPressure();
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Initialize vectors*/
+	ElementVector* pe     = element->NewElementVector(FSvelocityEnum);
+	IssmDouble*    vbasis = xNew<IssmDouble>(vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetIcefrontCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum);
+	element->NormalSection(&normal[0],xyz_list_front);
+	Input* surface_input  = element->GetInput(SurfaceEnum); _assert_(surface_input);
+	Input* sealevel_input       = element->GetInput(SealevelEnum);       _assert_(sealevel_input);
+	IssmDouble  rho_water = element->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble  gravity   = element->FindParam(ConstantsGEnum);
+
+	/*Initialize gauss points*/
+	IssmDouble zmax=xyz_list[0*3+(dim-1)]; for(int i=1;i<numvertices;i++) if(xyz_list[i*3+(dim-1)]>zmax) zmax=xyz_list[i*3+(dim-1)];
+	IssmDouble zmin=xyz_list[0*3+(dim-1)]; for(int i=1;i<numvertices;i++) if(xyz_list[i*3+(dim-1)]<zmin) zmin=xyz_list[i*3+(dim-1)];
+	if(zmax>0. && zmin<0.) gauss=element->NewGauss(xyz_list,xyz_list_front,3,30);//refined in vertical because of the sea level discontinuity
+	else                   gauss=element->NewGauss(xyz_list,xyz_list_front,3,3);
+
+	/* Start  looping on the number of gaussian points: */
+	while(gauss->next()){
+
+		element->JacobianDeterminantSurface(&Jdet,xyz_list_front,gauss);
+		element->NodalFunctionsVelocity(vbasis,gauss);
+		surface_input->GetInputValue(&surface,gauss);
+		sealevel_input->GetInputValue(&sealevel,gauss);
+		if(dim==3) z=element->GetZcoord(xyz_list,gauss);
+		else       z=element->GetYcoord(xyz_list,gauss);
+		pressure = rho_water*gravity*min(0.,z-sealevel);//0 if the gaussian point is above water level
+
+		for (int i=0;i<vnumnodes;i++){
+			pe->values[dim*i+0]+= pressure*Jdet*gauss->weight*normal[0]*vbasis[i];
+			pe->values[dim*i+1]+= pressure*Jdet*gauss->weight*normal[1]*vbasis[i];
+			if(dim==3) pe->values[dim*i+2]+= pressure*Jdet*gauss->weight*normal[2]*vbasis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<int>(cs_list);
+	xDelete<IssmDouble>(vbasis);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_front);
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorFSShelf(Element* element){/*{{{*/
+
+	int         i,dim;
+	IssmDouble  Jdet,water_pressure,base;
+	IssmDouble *xyz_list_base = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnBase() || !element->IsAllFloating()) return NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Initialize vectors*/
+	ElementVector* pe     = element->NewElementVector(FSvelocityEnum);
+	IssmDouble*    vbasis = xNew<IssmDouble>(vnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	Input*      base_input=element->GetInput(BaseEnum); _assert_(base_input);
+	IssmDouble  rho_water=element->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble  gravity  =element->FindParam(ConstantsGEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(5);
+	while(gauss->next()){
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctionsVelocity(vbasis,gauss);
+
+		base_input->GetInputValue(&base, gauss);
+		water_pressure=gravity*rho_water*base;
+
+		for(i=0;i<vnumnodes;i++){
+				pe->values[i*dim+(dim-1)]+=-water_pressure*gauss->weight*Jdet*vbasis[i];
+		}
+	}
+
+	/* shelf dampening*/
+	int shelf_dampening;
+	element->FindParam(&shelf_dampening,StressbalanceShelfDampeningEnum);
+	if(shelf_dampening) {
+		Input*      mb_input=element->GetInput(BasalforcingsFloatingiceMeltingRateEnum); _assert_(mb_input);
+		IssmDouble  dt,mb;
+		element->FindParam(&dt,TimesteppingTimeStepEnum);
+		gauss->Reset();
+		while(gauss->next()){
+			element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+			element->NodalFunctionsVelocity(vbasis,gauss);
+			mb_input->GetInputValue(&mb, gauss);
+			for(i=0;i<vnumnodes;i++){
+				pe->values[i*dim+(dim-1)] += -dt*rho_water*gravity*mb*gauss->weight*Jdet*vbasis[i];
+			}
+		}
+	}
+
+	/*DO NOT Transform Coordinate System: this stiffness matrix is already expressed in tangential coordinates*/
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<int>(cs_list);
+	xDelete<IssmDouble>(vbasis);
+	xDelete<IssmDouble>(xyz_list_base);
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorFSViscousLA(Element* element){/*{{{*/
+
+	int         i,dim;
+	IssmDouble  Jdet,pressure;
+	IssmDouble  bed_normal[3];
+	IssmDouble *xyz_list      = NULL;
+	IssmDouble *xyz_list_base = NULL;
+	Gauss*      gauss         = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(numnodes);
+	if(dim==2) for(i=0;i<numnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<numnodes;i++) cs_list[i] = XYZEnum;
+
+	/*Initialize vectors*/
+	ElementVector* pe      = element->NewElementVector(FSvelocityEnum);
+	IssmDouble*    dbasis  = xNew<IssmDouble>(3*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/*Get pressure and sigmann*/
+	Input* pressure_input=element->GetInput(PressureEnum); _assert_(pressure_input);
+	Input* sigmann_input =element->GetInput(SigmaNNEnum);  _assert_(sigmann_input);
+
+	gauss=element->NewGauss(5);
+	while(gauss->next()){
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		pressure_input->GetInputValue(&pressure, gauss);
+		element->NodalFunctionsDerivativesVelocity(dbasis,xyz_list,gauss);
+
+		for(i=0;i<numnodes;i++){
+			pe->values[i*dim+0] += pressure*gauss->weight*Jdet*dbasis[0*numnodes+i];
+			pe->values[i*dim+1] += pressure*gauss->weight*Jdet*dbasis[1*numnodes+i];
+			if(dim==3) pe->values[i*dim+2]+= pressure*gauss->weight*Jdet*dbasis[2*numnodes+i];
+		}
+	}
+
+	if(element->IsOnBase() && 0){
+		IssmDouble   sigmann;
+		IssmDouble*  vbasis = xNew<IssmDouble>(numnodes);
+
+		element->GetVerticesCoordinatesBase(&xyz_list_base);
+		element->NormalBase(&bed_normal[0],xyz_list_base);
+
+		delete gauss;
+		gauss=element->NewGaussBase(5);
+		while(gauss->next()){
+
+			element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+			element->NodalFunctionsVelocity(vbasis,gauss);
+			sigmann_input->GetInputValue(&sigmann, gauss);
+
+			for(i=0;i<numnodes;i++){
+				pe->values[i*dim+0] += + sigmann*bed_normal[0]*gauss->weight*Jdet*vbasis[i];
+				pe->values[i*dim+1] += + sigmann*bed_normal[1]*gauss->weight*Jdet*vbasis[i];
+				if(dim==3) pe->values[i*dim+2] += + sigmann*bed_normal[2]*gauss->weight*Jdet*vbasis[i];
+			}
+		}
+		xDelete<IssmDouble>(xyz_list_base);
+		xDelete<IssmDouble>(vbasis);
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<int>(cs_list);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorFSViscousXTH(Element* element){/*{{{*/
+
+	int         i,tausize,dim;
+	IssmDouble  Jdet,r;
+	IssmDouble  epsxx,epsyy,epszz,epsxy,epsxz,epsyz;
+	IssmDouble  sigmapxx,sigmapyy,sigmapzz,sigmapxy,sigmapxz,sigmapyz;
+	IssmDouble *xyz_list = NULL;
+	Gauss*      gauss    = NULL;
+
+	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
+	if(dim==2) tausize = 3;
+	else       tausize = 6;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int tnumnodes = element->GetNumberOfVertices();      //Tensors, P1 DG
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i]  = PressureEnum;
+
+	/*Initialize vectors*/
+	ElementVector* pe      = element->NewElementVector(FSvelocityEnum);
+	IssmDouble*    Dstar   = xNewZeroInit<IssmDouble>((dim*vnumnodes)*(tausize*tnumnodes));
+	IssmDouble*    tau     = xNew<IssmDouble>(tausize*tnumnodes);
+	IssmDouble*    d       = xNew<IssmDouble>(tausize*tnumnodes);
+	IssmDouble*    vdbasis = xNew<IssmDouble>(dim*vnumnodes);
+	IssmDouble*    tbasis  = xNew<IssmDouble>(tnumnodes);
+	IssmDouble*    D       = xNewZeroInit<IssmDouble>(tausize*tnumnodes*tausize*tnumnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->FindParam(&r,AugmentedLagrangianREnum);
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/*Get d and tau*/
+	Input* epsxx_input=element->GetInput(StrainRatexxEnum); _assert_(epsxx_input);
+	Input* epsyy_input=element->GetInput(StrainRateyyEnum); _assert_(epsyy_input);
+	Input* epsxy_input=element->GetInput(StrainRatexyEnum); _assert_(epsxy_input);
+	Input* epszz_input=NULL; Input* epsxz_input=NULL; Input* epsyz_input=NULL;
+	Input* sigmapxx_input=element->GetInput(DeviatoricStressxxEnum); _assert_(sigmapxx_input);
+	Input* sigmapyy_input=element->GetInput(DeviatoricStressyyEnum); _assert_(sigmapyy_input);
+	Input* sigmapxy_input=element->GetInput(DeviatoricStressxyEnum); _assert_(sigmapxy_input);
+	Input* sigmapzz_input=NULL; Input* sigmapxz_input=NULL; Input* sigmapyz_input=NULL;
+	if(dim==3){
+		epszz_input=element->GetInput(StrainRatezzEnum); _assert_(epszz_input);
+		epsxz_input=element->GetInput(StrainRatexzEnum); _assert_(epsxz_input);
+		epsyz_input=element->GetInput(StrainRateyzEnum); _assert_(epsyz_input);
+		sigmapzz_input=element->GetInput(DeviatoricStresszzEnum); _assert_(sigmapzz_input);
+		sigmapxz_input=element->GetInput(DeviatoricStressxzEnum); _assert_(sigmapxz_input);
+		sigmapyz_input=element->GetInput(DeviatoricStressyzEnum); _assert_(sigmapyz_input);
+	}
+
+	gauss = element->NewGauss();
+	for(int i=0;i<tnumnodes;i++){
+		gauss->GaussNode(P1DGEnum,i);
+
+		epsxx_input->GetInputValue(&epsxx,gauss); sigmapxx_input->GetInputValue(&sigmapxx,gauss);
+		epsyy_input->GetInputValue(&epsyy,gauss); sigmapyy_input->GetInputValue(&sigmapyy,gauss);
+		epsxy_input->GetInputValue(&epsxy,gauss); sigmapxy_input->GetInputValue(&sigmapxy,gauss);
+		if(dim==2){
+			d[i*tausize+0]=epsxx;  tau[i*tausize+0]=sigmapxx;
+			d[i*tausize+1]=epsyy;  tau[i*tausize+1]=sigmapyy;
+			d[i*tausize+2]=epsxy;  tau[i*tausize+2]=sigmapxy;
+		}
+		else{
+			epszz_input->GetInputValue(&epszz,gauss); sigmapzz_input->GetInputValue(&sigmapzz,gauss);
+			epsxz_input->GetInputValue(&epsxz,gauss); sigmapxz_input->GetInputValue(&sigmapxz,gauss);
+			epsyz_input->GetInputValue(&epsyz,gauss); sigmapyz_input->GetInputValue(&sigmapyz,gauss);
+			d[i*tausize+0]=epsxx;  tau[i*tausize+0]=sigmapxx;
+			d[i*tausize+1]=epsyy;  tau[i*tausize+1]=sigmapyy;
+			d[i*tausize+2]=epszz;  tau[i*tausize+2]=sigmapzz;
+			d[i*tausize+3]=epsxy;  tau[i*tausize+3]=sigmapxy;
+			d[i*tausize+4]=epsxz;  tau[i*tausize+4]=sigmapxz;
+			d[i*tausize+5]=epsyz;  tau[i*tausize+5]=sigmapyz;
+		}
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	delete gauss;
+	gauss=element->NewGauss(5);
+	while(gauss->next()){
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Create Dstar*/
+		/*In dim = 2
+		 *
+		 *       <----------------- tausize ---------------> x tnumnodes
+		 *       |  gamma_ij^x         0       gamma_ij^y  | ^
+		 * Dij = |                                         | dim
+		 *       |     0          gamma_ij^y   gamma_ij^x  | v
+		 *                                                   x
+		 *                                                   vnumnodes
+		 *
+		 *In dim = 3
+		 *
+		 *       |  gamma_ij^x         0          0         gamma_ij^y  gamma_ij^z      0      |
+		 *       |                                                                             |
+		 * Dij = |     0          gamma_ij^y      0         gamma_ij^x     0        gamma_ij^z |
+		 *       |                                                                             |
+		 *       |     0               0      gamma_ij^z        0       gamma_ij^x  gamma_ij^y |
+		 *
+		 * gamma_ij^x = zeta_j dphi_i/dx
+		 *
+		 * where:
+		 *   - zeta_j is the nodal function for the j^th node of the tensor (P1DG)
+		 *   - phi_i  is the nodal function for the i^th node of the velocity (P2)*/
+		element->NodalFunctionsDerivativesVelocity(vdbasis,xyz_list,gauss);
+		element->NodalFunctionsTensor(tbasis,gauss);
+		if(dim==2){
+			for(int i=0;i<vnumnodes;i++){
+				for(int j=0;j<tnumnodes;j++){
+					Dstar[(i*dim+0)*tausize*tnumnodes + j*tausize+0] += gauss->weight*Jdet*tbasis[j]*vdbasis[0*vnumnodes+i];
+					Dstar[(i*dim+0)*tausize*tnumnodes + j*tausize+2] += gauss->weight*Jdet*tbasis[j]*vdbasis[1*vnumnodes+i];
+
+					Dstar[(i*dim+1)*tausize*tnumnodes + j*tausize+1] += gauss->weight*Jdet*tbasis[j]*vdbasis[1*vnumnodes+i];
+					Dstar[(i*dim+1)*tausize*tnumnodes + j*tausize+2] += gauss->weight*Jdet*tbasis[j]*vdbasis[0*vnumnodes+i];
+				}
+			}
+		}
+		else{
+			for(int i=0;i<vnumnodes;i++){
+				for(int j=0;j<tnumnodes;j++){
+					Dstar[(i*dim+0)*tausize*tnumnodes + j*tausize+0] += gauss->weight*Jdet*tbasis[j]*vdbasis[0*vnumnodes+i];
+					Dstar[(i*dim+0)*tausize*tnumnodes + j*tausize+3] += gauss->weight*Jdet*tbasis[j]*vdbasis[1*vnumnodes+i];
+					Dstar[(i*dim+0)*tausize*tnumnodes + j*tausize+4] += gauss->weight*Jdet*tbasis[j]*vdbasis[2*vnumnodes+i];
+
+					Dstar[(i*dim+1)*tausize*tnumnodes + j*tausize+1] += gauss->weight*Jdet*tbasis[j]*vdbasis[1*vnumnodes+i];
+					Dstar[(i*dim+1)*tausize*tnumnodes + j*tausize+3] += gauss->weight*Jdet*tbasis[j]*vdbasis[0*vnumnodes+i];
+					Dstar[(i*dim+1)*tausize*tnumnodes + j*tausize+5] += gauss->weight*Jdet*tbasis[j]*vdbasis[2*vnumnodes+i];
+
+					Dstar[(i*dim+2)*tausize*tnumnodes + j*tausize+2] += gauss->weight*Jdet*tbasis[j]*vdbasis[2*vnumnodes+i];
+					Dstar[(i*dim+2)*tausize*tnumnodes + j*tausize+4] += gauss->weight*Jdet*tbasis[j]*vdbasis[0*vnumnodes+i];
+					Dstar[(i*dim+2)*tausize*tnumnodes + j*tausize+5] += gauss->weight*Jdet*tbasis[j]*vdbasis[1*vnumnodes+i];
+				}
+			}
+		}
+	}
+
+	/*contribution -Dstar tau*/
+	for(i=0;i<tausize*tnumnodes;i++) D[i*(tausize*tnumnodes)+i] = -1.;
+	TripleMultiply(Dstar,dim*vnumnodes,tausize*tnumnodes,0,
+				D,tausize*tnumnodes,tausize*tnumnodes,0,
+				tau,tausize*tnumnodes,1,0,
+				&pe->values[0],1);
+
+	/*contribution + r Dstar d*/
+	for(i=0;i<tausize*tnumnodes;i++) D[i*(tausize*tnumnodes)+i] = +r;
+	TripleMultiply(Dstar,dim*vnumnodes,tausize*tnumnodes,0,
+				D,tausize*tnumnodes,tausize*tnumnodes,0,
+				d,tausize*tnumnodes,1,0,
+				&pe->values[0],1);
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<int>(cs_list);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(Dstar);
+	xDelete<IssmDouble>(d);
+	xDelete<IssmDouble>(D);
+	xDelete<IssmDouble>(tau);
+	xDelete<IssmDouble>(vdbasis);
+	xDelete<IssmDouble>(tbasis);
+	return pe;
+}/*}}}*/
+void           StressbalanceAnalysis::GetBFS(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[Bv1 Bv2 ... Bp1 Bp2 ...] where Bvi is of size 3*3.
+	 * For node i, Bvi can be expressed in the actual coordinate system
+	 * by: 	   Bvi=[ dphi/dx          0        ]
+	 *					 [   0           dphi/dy     ]
+	 *					 [ 1/2*dphi/dy    1/2*dphi/dx]
+	 *					 [   0             0         ]
+	 *					 [ dphi/dx         dphi/dy   ]
+	 *
+	 *         Bpi=[  0    ]
+	 *					[  0    ]
+	 *					[  0    ]
+	 *					[ phi_p ]
+	 *					[  0    ]
+	 *
+	 *	In 3d:
+	 *     	   Bvi=[ dh/dx          0             0      ]
+	 *					[   0           dh/dy           0      ]
+	 *					[   0             0           dh/dz    ]
+	 *					[ 1/2*dh/dy    1/2*dh/dx        0      ]
+	 *					[ 1/2*dh/dz       0         1/2*dh/dx  ]
+	 *					[   0          1/2*dh/dz    1/2*dh/dy  ]
+	 *					[   0             0             0      ]
+	 *					[ dh/dx         dh/dy         dh/dz    ]
+	 *
+	 *         Bpi=[ 0 ]
+	 *					[ 0 ]
+	 *					[ 0 ]
+	 *					[ 0 ]
+	 *					[ 0 ]
+	 *					[ 0 ]
+	 *					[ h ]
+	 *					[ 0 ]
+	 *	where phi is the finiteelement function for node i.
+	 *	Same thing for Bb except the last column that does not exist.
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int pnumnodes = element->NumberofNodesPressure();
+	int vnumnodes = element->NumberofNodesVelocity();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* vdbasis=xNew<IssmDouble>(dim*vnumnodes);
+	IssmDouble* pbasis =xNew<IssmDouble>(pnumnodes);
+	element->NodalFunctionsDerivativesVelocity(vdbasis,xyz_list,gauss);
+	element->NodalFunctionsPressure(pbasis,gauss);
+
+	/*Build B: */
+	if(dim==2){
+		for(int i=0;i<vnumnodes;i++){
+			B[(dim*vnumnodes+pnumnodes)*0+dim*i+0] = vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*0+dim*i+1] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*1+dim*i+0] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*1+dim*i+1] = vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*2+dim*i+0] = .5*vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*2+dim*i+1] = .5*vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*3+dim*i+0] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*3+dim*i+1] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*4+dim*i+0] = vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*4+dim*i+1] = vdbasis[1*vnumnodes+i];
+		}
+		for(int i=0;i<pnumnodes;i++){
+			B[(dim*vnumnodes+pnumnodes)*0+(dim*vnumnodes)+i] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*1+(dim*vnumnodes)+i] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*2+(dim*vnumnodes)+i] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*3+(dim*vnumnodes)+i] = pbasis[i];
+			B[(dim*vnumnodes+pnumnodes)*4+(dim*vnumnodes)+i] = 0.;
+		}
+	}
+	else{
+		for(int i=0;i<vnumnodes;i++){
+			B[(dim*vnumnodes+pnumnodes)*0+dim*i+0] = vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*0+dim*i+1] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*0+dim*i+2] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*1+dim*i+0] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*1+dim*i+1] = vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*1+dim*i+2] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*2+dim*i+0] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*2+dim*i+1] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*2+dim*i+2] = vdbasis[2*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*3+dim*i+0] = .5*vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*3+dim*i+1] = .5*vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*3+dim*i+2] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*4+dim*i+0] = .5*vdbasis[2*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*4+dim*i+1] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*4+dim*i+2] = .5*vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*5+dim*i+0] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*5+dim*i+1] = .5*vdbasis[2*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*5+dim*i+2] = .5*vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*6+dim*i+0] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*6+dim*i+1] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*6+dim*i+2] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*7+dim*i+0] = vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*7+dim*i+1] = vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes+pnumnodes)*7+dim*i+2] = vdbasis[2*vnumnodes+i];
+		}
+		for(int i=0;i<pnumnodes;i++){
+			B[(dim*vnumnodes+pnumnodes)*0+(dim*vnumnodes)+i] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*1+(dim*vnumnodes)+i] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*2+(dim*vnumnodes)+i] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*3+(dim*vnumnodes)+i] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*4+(dim*vnumnodes)+i] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*5+(dim*vnumnodes)+i] = 0.;
+			B[(dim*vnumnodes+pnumnodes)*6+(dim*vnumnodes)+i] = pbasis[i];
+			B[(dim*vnumnodes+pnumnodes)*7+(dim*vnumnodes)+i] = 0.;
+		}
+	}
+
+	/*Clean up*/
+	xDelete<IssmDouble>(vdbasis);
+	xDelete<IssmDouble>(pbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBFSFriction(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/* Compute L  matrix. L=[L1 L2 L3] where Li is square and of size numdof.
+	 * For node i, Li can be expressed in the actual coordinate system
+	 * by in 3d
+	 *       Li=[ h 0 0 0 ]
+	 *	 	      [ 0 h 0 0 ]
+	 *	in 2d:
+	 *       Li=[ h 0 0 ]
+	 * where h is the interpolation function for node i.
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int pnumnodes = element->NumberofNodesPressure();
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumdof   = pnumnodes;
+	int vnumdof   = vnumnodes*dim;
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* vbasis=xNew<IssmDouble>(vnumnodes);
+	element->NodalFunctionsVelocity(vbasis,gauss);
+
+	/*Build B: */
+	if(dim==3){
+		for(int i=0;i<vnumnodes;i++){
+			B[(vnumdof+pnumdof)*0+3*i+0] = vbasis[i];
+			B[(vnumdof+pnumdof)*0+3*i+1] = 0.;
+			B[(vnumdof+pnumdof)*0+3*i+2] = 0.;
+
+			B[(vnumdof+pnumdof)*1+3*i+0] = 0.;
+			B[(vnumdof+pnumdof)*1+3*i+1] = vbasis[i];
+			B[(vnumdof+pnumdof)*1+3*i+2] = 0.;
+
+			B[(vnumdof+pnumdof)*2+3*i+0] = 0.;
+			B[(vnumdof+pnumdof)*2+3*i+1] = 0.;
+			B[(vnumdof+pnumdof)*2+3*i+2] = vbasis[i];
+		}
+		for(int i=0;i<pnumnodes;i++){
+			B[(vnumdof+pnumdof)*0+i+vnumdof+0] = 0.;
+			B[(vnumdof+pnumdof)*1+i+vnumdof+0] = 0.;
+			B[(vnumdof+pnumdof)*2+i+vnumdof+0] = 0.;
+		}
+	}
+	else{
+		for(int i=0;i<vnumnodes;i++){
+			B[(vnumdof+pnumdof)*0+2*i+0] = vbasis[i];
+			B[(vnumdof+pnumdof)*0+2*i+1] = 0.;
+
+			B[(vnumdof+pnumdof)*1+2*i+0] = 0.;
+			B[(vnumdof+pnumdof)*1+2*i+1] = vbasis[i];
+		}
+
+		for(int i=0;i<pnumnodes;i++){
+			B[(vnumdof+pnumdof)*0+i+vnumdof+0] = 0.;
+			B[(vnumdof+pnumdof)*1+i+vnumdof+0] = 0.;
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(vbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBFSprime(IssmDouble* Bprime,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*	Compute B'  matrix. B'=[B1' B2' B3' B4' B5' B6' Bb'] where Bi' is of size 3*2.
+	 *	For node i, Bi' can be expressed in the actual coordinate system
+	 *	by:
+	 *			Bvi' = [  dphi/dx     0     ]
+	 *					 [     0      dphi/dy ]
+	 *					 [  dphi/dy   dphi/dx ]
+	 *					 [  dphi/dx   dphi/dy ]
+	 *					 [     0      0       ]
+	 *
+	 * by: 	  Bpi=[  0  ]
+	 *					[  0  ]
+	 *					[  0  ]
+	 *					[  0  ]
+	 *					[ phi ]
+	 *
+	 *	In 3d
+	 *     	   Bvi=[ dh/dx     0        0    ]
+	 *					[   0      dh/dy      0    ]
+	 *					[   0        0      dh/dz  ]
+	 *					[ dh/dy    dh/dx      0    ]
+	 *					[ dh/dz      0      dh/dx  ]
+	 *					[   0      dh/dz    dh/dy  ]
+	 *					[ dh/dx    dh/dy    dh/dz  ]
+	 *					[   0        0        0    ]
+	 *
+	 *         Bpi=[ 0 ]
+	 *					[ 0 ]
+	 *					[ 0 ]
+	 *					[ 0 ]
+	 *					[ 0 ]
+	 *					[ 0 ]
+	 *					[ 0 ]
+	 *					[ h ]
+	 *	where phi is the finiteelement function for node i.
+	 *	In 3d:
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int pnumnodes = element->NumberofNodesPressure();
+	int vnumnodes = element->NumberofNodesVelocity();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* vdbasis=xNew<IssmDouble>(dim*vnumnodes);
+	IssmDouble* pbasis =xNew<IssmDouble>(pnumnodes);
+	element->NodalFunctionsDerivativesVelocity(vdbasis,xyz_list,gauss);
+	element->NodalFunctionsPressure(pbasis,gauss);
+
+	/*Build B_prime: */
+	if(dim==2){
+		for(int i=0;i<vnumnodes;i++){
+			Bprime[(dim*vnumnodes+pnumnodes)*0+dim*i+0] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*0+dim*i+1] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*1+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*1+dim*i+1] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*2+dim*i+0] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*2+dim*i+1] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*3+dim*i+0] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*3+dim*i+1] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*4+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*4+dim*i+1] = 0.;
+		}
+		for(int i=0;i<pnumnodes;i++){
+			Bprime[(dim*vnumnodes+pnumnodes)*0+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*1+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*2+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*3+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*4+(dim*vnumnodes)+i] = pbasis[i];
+		}
+	}
+	else{
+		for(int i=0;i<vnumnodes;i++){
+			Bprime[(dim*vnumnodes+pnumnodes)*0+dim*i+0] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*0+dim*i+1] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*0+dim*i+2] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*1+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*1+dim*i+1] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*1+dim*i+2] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*2+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*2+dim*i+1] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*2+dim*i+2] = vdbasis[2*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*3+dim*i+0] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*3+dim*i+1] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*3+dim*i+2] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*4+dim*i+0] = vdbasis[2*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*4+dim*i+1] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*4+dim*i+2] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*5+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*5+dim*i+1] = vdbasis[2*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*5+dim*i+2] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*6+dim*i+0] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*6+dim*i+1] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*6+dim*i+2] = vdbasis[2*vnumnodes+i];
+			Bprime[(dim*vnumnodes+pnumnodes)*7+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*7+dim*i+1] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*7+dim*i+2] = 0.;
+		}
+		for(int i=0;i<pnumnodes;i++){
+			Bprime[(dim*vnumnodes+pnumnodes)*0+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*1+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*2+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*3+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*4+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*5+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*6+(dim*vnumnodes)+i] = 0.;
+			Bprime[(dim*vnumnodes+pnumnodes)*7+(dim*vnumnodes)+i] = pbasis[i];
+		}
+	}
+
+	/*Clean up*/
+	xDelete<IssmDouble>(vdbasis);
+	xDelete<IssmDouble>(pbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBFSprimeUzawa(IssmDouble* Bprime,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*	Compute B'  matrix. B'=[B1' B2' B3' B4' B5' B6'] where Bi' is of size 3*2.
+	 *	For node i, Bi' can be expressed in the actual coordinate system
+	 *	by:
+	 *			Bvi' = [  dphi/dx   dphi/dy ]
+	 *
+	 *	In 3d
+	 *     	   Bvi=[ dh/dx   dh/dy    dh/dz  ]
+	 *	where phi is the finiteelement function for node i.
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* vdbasis=xNew<IssmDouble>(dim*vnumnodes);
+	element->NodalFunctionsDerivativesVelocity(vdbasis,xyz_list,gauss);
+
+	/*Build B_prime: */
+	if(dim==2){
+		for(int i=0;i<vnumnodes;i++){
+			Bprime[dim*i+0] = vdbasis[0*vnumnodes+i];
+			Bprime[dim*i+1] = vdbasis[1*vnumnodes+i];
+		}
+	}
+	else{
+		for(int i=0;i<vnumnodes;i++){
+			Bprime[dim*i+0] = vdbasis[0*vnumnodes+i];
+			Bprime[dim*i+1] = vdbasis[1*vnumnodes+i];
+			Bprime[dim*i+2] = vdbasis[2*vnumnodes+i];
+		}
+	}
+
+	/*Clean up*/
+	xDelete<IssmDouble>(vdbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBFSprimevel(IssmDouble* Bprime,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*	Compute B'  matrix. B'=[B1' B2' B3' B4' B5' B6' Bb'] where Bi' is of size 3*2.
+	 *	For node i, Bi' can be expressed in the actual coordinate system
+	 *	by:
+	 *			Bvi' = [  dphi/dx     0     ]
+	 *					 [     0      dphi/dy ]
+	 *					 [  dphi/dy   dphi/dx ]
+	 *
+	 *	In 3d
+	 *     	   Bvi=[ dh/dx     0        0    ]
+	 *					[   0      dh/dy      0    ]
+	 *					[   0        0      dh/dz  ]
+	 *					[ dh/dy    dh/dx      0    ]
+	 *					[ dh/dz      0      dh/dx  ]
+	 *					[   0      dh/dz    dh/dy  ]
+	 *	where phi is the finiteelement function for node i.
+	 *	In 3d:
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* vdbasis=xNew<IssmDouble>(dim*vnumnodes);
+	element->NodalFunctionsDerivativesVelocity(vdbasis,xyz_list,gauss);
+
+	/*Build B_prime: */
+	if(dim==2){
+		for(int i=0;i<vnumnodes;i++){
+			Bprime[(dim*vnumnodes)*0+dim*i+0] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*0+dim*i+1] = 0.;
+			Bprime[(dim*vnumnodes)*1+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes)*1+dim*i+1] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*2+dim*i+0] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*2+dim*i+1] = vdbasis[0*vnumnodes+i];
+		}
+	}
+	else{
+		for(int i=0;i<vnumnodes;i++){
+			Bprime[(dim*vnumnodes)*0+dim*i+0] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*0+dim*i+1] = 0.;
+			Bprime[(dim*vnumnodes)*0+dim*i+2] = 0.;
+			Bprime[(dim*vnumnodes)*1+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes)*1+dim*i+1] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*1+dim*i+2] = 0.;
+			Bprime[(dim*vnumnodes)*2+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes)*2+dim*i+1] = 0.;
+			Bprime[(dim*vnumnodes)*2+dim*i+2] = vdbasis[2*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*3+dim*i+0] = vdbasis[1*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*3+dim*i+1] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*3+dim*i+2] = 0.;
+			Bprime[(dim*vnumnodes)*4+dim*i+0] = vdbasis[2*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*4+dim*i+1] = 0.;
+			Bprime[(dim*vnumnodes)*4+dim*i+2] = vdbasis[0*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*5+dim*i+0] = 0.;
+			Bprime[(dim*vnumnodes)*5+dim*i+1] = vdbasis[2*vnumnodes+i];
+			Bprime[(dim*vnumnodes)*5+dim*i+2] = vdbasis[1*vnumnodes+i];
+		}
+	}
+
+	/*Clean up*/
+	xDelete<IssmDouble>(vdbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBFSUzawa(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[Bp1 Bp2 ...] where Bpi=phi_pi.
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int pnumnodes;
+	if(dim==2) pnumnodes=3;
+	else pnumnodes=6;
+	//int pnumnodes = element->NumberofNodes(P1Enum);
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* basis =xNew<IssmDouble>(pnumnodes);
+	element->NodalFunctionsP1(basis,gauss);
+
+	/*Build B: */
+	for(int i=0;i<pnumnodes;i++){
+		B[i] = basis[i];
+	}
+
+	/*Clean up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBFSvel(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[Bv1 Bv2 ... Bp1 Bp2 ...] where Bvi is of size 3*3.
+	 * For node i, Bvi can be expressed in the actual coordinate system
+	 * by: 	   Bvi=[ dphi/dx          0        ]
+	 *					 [   0           dphi/dy     ]
+	 *					 [ 1/2*dphi/dy    1/2*dphi/dx]
+	 *
+	 *
+	 *	In 3d:
+	 *     	   Bvi=[ dh/dx          0             0      ]
+	 *					[   0           dh/dy           0      ]
+	 *					[   0             0           dh/dz    ]
+	 *					[ 1/2*dh/dy    1/2*dh/dx        0      ]
+	 *					[ 1/2*dh/dz       0         1/2*dh/dx  ]
+	 *					[   0          1/2*dh/dz    1/2*dh/dy  ]
+	 *
+	 *	where phi is the finiteelement function for node i.
+	 *	Same thing for Bb except the last column that does not exist.
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* vdbasis=xNew<IssmDouble>(dim*vnumnodes);
+	element->NodalFunctionsDerivativesVelocity(vdbasis,xyz_list,gauss);
+
+	/*Build B: */
+	if(dim==2){
+		for(int i=0;i<vnumnodes;i++){
+			B[(dim*vnumnodes)*0+dim*i+0] = vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes)*0+dim*i+1] = 0.;
+			B[(dim*vnumnodes)*1+dim*i+0] = 0.;
+			B[(dim*vnumnodes)*1+dim*i+1] = vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes)*2+dim*i+0] = .5*vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes)*2+dim*i+1] = .5*vdbasis[0*vnumnodes+i];
+		}
+	}
+	else{
+		for(int i=0;i<vnumnodes;i++){
+			B[(dim*vnumnodes)*0+dim*i+0] = vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes)*0+dim*i+1] = 0.;
+			B[(dim*vnumnodes)*0+dim*i+2] = 0.;
+			B[(dim*vnumnodes)*1+dim*i+0] = 0.;
+			B[(dim*vnumnodes)*1+dim*i+1] = vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes)*1+dim*i+2] = 0.;
+			B[(dim*vnumnodes)*2+dim*i+0] = 0.;
+			B[(dim*vnumnodes)*2+dim*i+1] = 0.;
+			B[(dim*vnumnodes)*2+dim*i+2] = vdbasis[2*vnumnodes+i];
+			B[(dim*vnumnodes)*3+dim*i+0] = .5*vdbasis[1*vnumnodes+i];
+			B[(dim*vnumnodes)*3+dim*i+1] = .5*vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes)*3+dim*i+2] = 0.;
+			B[(dim*vnumnodes)*4+dim*i+0] = .5*vdbasis[2*vnumnodes+i];
+			B[(dim*vnumnodes)*4+dim*i+1] = 0.;
+			B[(dim*vnumnodes)*4+dim*i+2] = .5*vdbasis[0*vnumnodes+i];
+			B[(dim*vnumnodes)*5+dim*i+0] = 0.;
+			B[(dim*vnumnodes)*5+dim*i+1] = .5*vdbasis[2*vnumnodes+i];
+			B[(dim*vnumnodes)*5+dim*i+2] = .5*vdbasis[1*vnumnodes+i];
+		}
+	}
+
+	/*Clean up*/
+	xDelete<IssmDouble>(vdbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetCFS(IssmDouble* C,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute C  matrix. C=[Cp1 Cp2 ...] where:
+	 *     Cpi=[phi phi].
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int lnumnodes = element->GetNumberOfNodes(P2Enum);
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* basis =xNew<IssmDouble>(lnumnodes);
+	element->NodalFunctionsP2(basis,gauss);
+
+	/*Build B: */
+	for(int i=0;i<lnumnodes;i++){
+		C[lnumnodes*0+i] = basis[i];
+		C[lnumnodes*1+i] = basis[i];
+	}
+
+	/*Clean up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetCFSprime(IssmDouble* Cprime,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*	Compute C'  matrix. C'=[C1' C2' ...]
+	 *			Ci' = [  phi  0  ]
+	 *			      [   0  phi ]
+	 *
+	 *	In 3d
+	 *			Ci' = [  phi  0   0  ]
+	 *			      [   0  phi  0  ]
+	 *			      [   0   0  phi ]
+	 *	where phi is the finiteelement function for node i.
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int vnumdof   = vnumnodes*dim;
+
+	IssmDouble* vbasis=xNew<IssmDouble>(vnumnodes);
+	element->NodalFunctionsVelocity(vbasis,gauss);
+
+	/*Build B: */
+	if(dim==3){
+		for(int i=0;i<vnumnodes;i++){
+			Cprime[vnumdof*0+3*i+0] = vbasis[i];
+			Cprime[vnumdof*0+3*i+1] = 0.;
+			Cprime[vnumdof*0+3*i+2] = 0.;
+
+			Cprime[vnumdof*1+3*i+0] = 0.;
+			Cprime[vnumdof*1+3*i+1] = vbasis[i];
+			Cprime[vnumdof*1+3*i+2] = 0.;
+
+			Cprime[vnumdof*2+3*i+0] = 0.;
+			Cprime[vnumdof*2+3*i+1] = 0.;
+			Cprime[vnumdof*2+3*i+2] = vbasis[i];
+		}
+	}
+	else{
+		for(int i=0;i<vnumnodes;i++){
+			Cprime[vnumdof*0+2*i+0] = vbasis[i];
+			Cprime[vnumdof*0+2*i+1] = 0.;
+
+			Cprime[vnumdof*1+2*i+0] = 0.;
+			Cprime[vnumdof*1+2*i+1] = vbasis[i];
+		}
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(vbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetSolutionFromInputsFS(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+
+	int*         vdoflist=NULL;
+	int*         pdoflist=NULL;
+	Input*       vz_input=NULL;
+	int          dim;
+	IssmDouble   vx,vy,vz,p;
+	IssmDouble   FSreconditioning;
+
+	/*Get some parameters*/
+	element->FindParam(&dim,DomainDimensionEnum);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int vnumdof   = vnumnodes*dim;
+	int pnumdof   = pnumnodes*1;
+
+	/*Initialize values*/
+	IssmDouble* vvalues = xNew<IssmDouble>(vnumdof);
+	IssmDouble* pvalues = xNew<IssmDouble>(pnumdof);
+
+	/*Get dof list: */
+	element->GetDofListVelocity(&vdoflist,GsetEnum);
+	element->GetDofListPressure(&pdoflist,GsetEnum);
+	Input*     vx_input=element->GetInput(VxEnum);       _assert_(vx_input);
+	Input*     vy_input=element->GetInput(VyEnum);       _assert_(vy_input);
+	if(dim==3){vz_input=element->GetInput(VzEnum);       _assert_(vz_input);}
+	Input*     p_input =element->GetInput(PressureEnum); _assert_(p_input);
+
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+
+	/*Ok, we have the velocities in inputs, fill in solution */
+	Gauss* gauss = element->NewGauss();
+	for(int i=0;i<vnumnodes;i++){
+		gauss->GaussNode(element->VelocityInterpolation(),i);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vvalues[i*dim+0]=vx;
+		vvalues[i*dim+1]=vy;
+		if(dim==3){
+			vz_input->GetInputValue(&vz,gauss);
+			vvalues[i*dim+2]=vz;
+		}
+	}
+	for(int i=0;i<pnumnodes;i++){
+		gauss->GaussNode(element->PressureInterpolation(),i);
+		p_input->GetInputValue(&p ,gauss);
+		pvalues[i]=p/FSreconditioning;
+	}
+
+	/*Do NOT account for bubble using GetInputValue! This is wrong*/
+	if(element->VelocityInterpolation()==P1bubblecondensedEnum ||
+				element->VelocityInterpolation()==P1bubbleEnum){
+		vvalues[(vnumnodes-1)*dim+0]=0.;
+		vvalues[(vnumnodes-1)*dim+1]=0.;
+		if(dim==3) vvalues[(vnumnodes-1)*dim+2]=0.;
+	}
+
+	/*Add value to global vector*/
+	solution->SetValues(vnumdof,vdoflist,vvalues,INS_VAL);
+	if(pnumdof>0) solution->SetValues(pnumdof,pdoflist,pvalues,INS_VAL);
+
+	/*Free resources:*/
+	delete gauss;
+	xDelete<int>(pdoflist);
+	xDelete<int>(vdoflist);
+	xDelete<IssmDouble>(pvalues);
+	xDelete<IssmDouble>(vvalues);
+}/*}}}*/
+void           StressbalanceAnalysis::InitializeXTH(Elements* elements,Parameters* parameters){/*{{{*/
+
+	/*Intermediaries*/
+	int        dim;
+	IssmDouble dvx[3],dvy[3],dvz[3];
+	IssmDouble viscosity;
+	IssmDouble *xyz_list = NULL;
+
+	/*Get problem dimension*/
+	parameters->FindParam(&dim,DomainDimensionEnum);
+
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+
+		/*Get inputs and parameters*/
+		element->GetVerticesCoordinates(&xyz_list);
+		Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
+		Input* vy_input=element->GetInput(VyEnum); _assert_(vy_input);
+		Input* vz_input;
+		if(dim==3){vz_input=element->GetInput(VzEnum); _assert_(vz_input);}
+
+		/*Allocate new inputs*/
+		int tnumnodes = element->GetNumberOfVertices();      //Tensors, P1 DG
+		IssmDouble* epsxx = xNew<IssmDouble>(tnumnodes); IssmDouble* sigmapxx = xNew<IssmDouble>(tnumnodes);
+		IssmDouble* epsyy = xNew<IssmDouble>(tnumnodes); IssmDouble* sigmapyy = xNew<IssmDouble>(tnumnodes);
+		IssmDouble* epsxy = xNew<IssmDouble>(tnumnodes); IssmDouble* sigmapxy = xNew<IssmDouble>(tnumnodes);
+		IssmDouble* epszz = NULL;                        IssmDouble* sigmapzz = NULL;
+		IssmDouble* epsxz = NULL;                        IssmDouble* sigmapxz = NULL;
+		IssmDouble* epsyz = NULL;                        IssmDouble* sigmapyz = NULL;
+		if(dim==3){
+			epszz = xNew<IssmDouble>(tnumnodes); sigmapzz = xNew<IssmDouble>(tnumnodes);
+			epsxz = xNew<IssmDouble>(tnumnodes); sigmapxz = xNew<IssmDouble>(tnumnodes);
+			epsyz = xNew<IssmDouble>(tnumnodes); sigmapyz = xNew<IssmDouble>(tnumnodes);
+		}
+
+		/*Get d and tau*/
+		Gauss* gauss = element->NewGauss();
+		for(int i=0;i<tnumnodes;i++){
+			gauss->GaussNode(P1DGEnum,i);
+
+			vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+			vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+			if(dim==3){
+				vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
+			}
+
+			element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+			epsxx[i] = dvx[0];                sigmapxx[i] = 2.*viscosity*epsxx[i];
+			epsyy[i] = dvy[1];                sigmapyy[i] = 2.*viscosity*epsyy[i];
+			epsxy[i] = 0.5*(dvx[1] + dvy[0]); sigmapxy[i] = 2.*viscosity*epsxy[i];
+			if(dim==3){
+				epszz[i] = dvz[2];                sigmapzz[i] = 2.*viscosity*epszz[i];
+				epsxz[i] = 0.5*(dvx[2] + dvz[0]); sigmapxz[i] = 2.*viscosity*epsxz[i];
+				epsyz[i] = 0.5*(dvy[2] + dvz[1]); sigmapyz[i] = 2.*viscosity*epsyz[i];
+			}
+		}
+
+		/*Add inputs*/
+		element->AddInput(StrainRatexxEnum,epsxx,P1DGEnum); element->AddInput(DeviatoricStressxxEnum,sigmapxx,P1DGEnum);
+		element->AddInput(StrainRateyyEnum,epsyy,P1DGEnum); element->AddInput(DeviatoricStressyyEnum,sigmapyy,P1DGEnum);
+		element->AddInput(StrainRatexyEnum,epsxy,P1DGEnum); element->AddInput(DeviatoricStressxyEnum,sigmapxy,P1DGEnum);
+		if(dim==3){
+			element->AddInput(StrainRatezzEnum,epszz,P1DGEnum); element->AddInput(DeviatoricStresszzEnum,sigmapzz,P1DGEnum);
+			element->AddInput(StrainRatexzEnum,epsxz,P1DGEnum); element->AddInput(DeviatoricStressxzEnum,sigmapxz,P1DGEnum);
+			element->AddInput(StrainRateyzEnum,epsyz,P1DGEnum); element->AddInput(DeviatoricStressyzEnum,sigmapyz,P1DGEnum);
+		}
+
+		/*Clean up*/
+		delete gauss;
+		xDelete<IssmDouble>(xyz_list);
+		xDelete<IssmDouble>(epsxx); xDelete<IssmDouble>(sigmapxx);
+		xDelete<IssmDouble>(epsyy); xDelete<IssmDouble>(sigmapyy);
+		xDelete<IssmDouble>(epszz); xDelete<IssmDouble>(sigmapzz);
+		xDelete<IssmDouble>(epsxy); xDelete<IssmDouble>(sigmapxy);
+		xDelete<IssmDouble>(epsxz); xDelete<IssmDouble>(sigmapxz);
+		xDelete<IssmDouble>(epsyz); xDelete<IssmDouble>(sigmapyz);
+	}
+
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolutionFS(IssmDouble* solution,Element* element){/*{{{*/
+
+	int          i,dim;
+	int*         vdoflist=NULL;
+	int*         pdoflist=NULL;
+	IssmDouble   FSreconditioning;
+
+	element->FindParam(&dim,DomainDimensionEnum);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int vnumdof   = vnumnodes*dim;
+	int pnumdof   = pnumnodes*1;
+
+	/*Initialize values*/
+	IssmDouble* values   = xNew<IssmDouble>(vnumdof+pnumdof);
+	IssmDouble* vx       = xNew<IssmDouble>(vnumnodes);
+	IssmDouble* vy       = xNew<IssmDouble>(vnumnodes);
+	IssmDouble* vz       = xNew<IssmDouble>(vnumnodes);
+	IssmDouble* vel      = xNew<IssmDouble>(vnumnodes);
+	IssmDouble* pressure = xNew<IssmDouble>(pnumnodes);
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	if(dim==2) for(i=0;i<vnumnodes;i++) cs_list[i] = XYEnum;
+	else       for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Get dof list: */
+	element->GetDofListLocalVelocity(&vdoflist,GsetEnum);
+	element->GetDofListLocalPressure(&pdoflist,GsetEnum);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<vnumdof;i++) values[i]        =solution[vdoflist[i]];
+	for(i=0;i<pnumdof;i++) values[vnumdof+i]=solution[pdoflist[i]];
+
+	/*Transform solution in Cartesian Space*/
+	element->TransformSolutionCoord(values,cs_list);
+
+	/*Ok, we have vx and vy in values, fill in all arrays: */
+	for(i=0;i<vnumnodes;i++){
+		vx[i] = values[i*dim+0];
+		vy[i] = values[i*dim+1];
+		if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector");
+
+		if(dim==3){
+			vz[i] = values[i*dim+2];
+			if(xIsNan<IssmDouble>(vz[i])) _error_("NaN found in solution vector");
+			if(xIsInf<IssmDouble>(vz[i])) _error_("Inf found in solution vector");
+		}
+	}
+	for(i=0;i<pnumnodes;i++){
+		pressure[i] = values[vnumdof+i];
+		if(xIsNan<IssmDouble>(pressure[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(pressure[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Recondition pressure and compute vel: */
+	for(i=0;i<pnumnodes;i++) pressure[i] = pressure[i]*FSreconditioning;
+	if(dim==3) for(i=0;i<vnumnodes;i++) vel[i] = sqrt(vx[i]*vx[i] + vy[i]*vy[i] + vz[i]*vz[i]);
+	else       for(i=0;i<vnumnodes;i++) vel[i] = sqrt(vx[i]*vx[i] + vy[i]*vy[i]);
+
+	/*Add vx and vy as inputs to the tria element: */
+	int v_interp =  element->VelocityInterpolation();
+	if(v_interp==P1bubbleEnum) v_interp=P1Enum;
+	if(v_interp == P1bubblecondensedEnum) v_interp = P1Enum;
+	element->AddInput(VxEnum, vx, v_interp);
+	element->AddInput(VyEnum, vy, v_interp);
+	element->AddInput(VelEnum,vel,v_interp);
+	if(pnumdof>0) element->AddInput(PressureEnum,pressure,element->PressureInterpolation());
+	if(dim==3) element->AddInput(VzEnum,vz,v_interp);
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(vel);
+	xDelete<IssmDouble>(vz);
+	xDelete<IssmDouble>(vy);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(values);
+	xDelete<int>(vdoflist);
+	xDelete<int>(pdoflist);
+	xDelete<int>(cs_list);
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolutionFSXTH_d(Elements* elements,Parameters* parameters){/*{{{*/
+
+	/*Intermediaries*/
+	int         dim,tausize;
+	IssmDouble  epsxx,epsyy,epszz,epsxy,epsxz,epsyz,D_scalar;
+	IssmDouble  epsxx_old,epsyy_old,epszz_old,epsxy_old,epsxz_old,epsyz_old;
+	IssmDouble  sigmapxx,sigmapyy,sigmapzz,sigmapxy,sigmapxz,sigmapyz;
+	IssmDouble  dvx[3],dvy[3],dvz[3],B,n;
+	IssmDouble *xyz_list = NULL;
+	IssmDouble  Jdet,r;
+
+	parameters->FindParam(&r,AugmentedLagrangianREnum);
+	parameters->FindParam(&dim,DomainDimensionEnum);
+	if(dim==2) tausize = 3;
+	else       tausize = 6;
+
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+
+		/*Get inputs and parameters*/
+		element->GetVerticesCoordinates(&xyz_list);
+		Input*  B_input=element->GetInput(MaterialsRheologyBEnum); _assert_(B_input);
+		Input*  n_input=element->GetInput(MaterialsRheologyNEnum); _assert_(n_input);
+		Input* vx_input=element->GetInput(VxEnum);                 _assert_(vx_input);
+		Input* vy_input=element->GetInput(VyEnum);                 _assert_(vy_input);
+		Input* vz_input;
+		if(dim==3){vz_input=element->GetInput(VzEnum); _assert_(vz_input);}
+
+		/*Fetch number of nodes and dof for this finite element*/
+		int tnumnodes = element->GetNumberOfVertices();      //Tensors, P1 DG
+
+		/*Initialize vectors*/
+		IssmDouble* tbasis = xNew<IssmDouble>(tnumnodes);
+		IssmDouble* Ke     = xNewZeroInit<IssmDouble>(tnumnodes*tnumnodes);
+		IssmDouble* pe_xx  = xNewZeroInit<IssmDouble>(tnumnodes);
+		IssmDouble* pe_yy  = xNewZeroInit<IssmDouble>(tnumnodes);
+		IssmDouble* pe_xy  = xNewZeroInit<IssmDouble>(tnumnodes);
+		IssmDouble* pe_zz  = NULL; IssmDouble* pe_xz  = NULL; IssmDouble* pe_yz  = NULL;
+		if(dim==3){
+			pe_zz = xNewZeroInit<IssmDouble>(tnumnodes);
+			pe_xz = xNewZeroInit<IssmDouble>(tnumnodes);
+			pe_yz = xNewZeroInit<IssmDouble>(tnumnodes);
+		}
+
+		/*Get previous d*/
+		Input* epsxx_input=element->GetInput(StrainRatexxEnum); _assert_(epsxx_input);
+		Input* epsyy_input=element->GetInput(StrainRateyyEnum); _assert_(epsyy_input);
+		Input* epsxy_input=element->GetInput(StrainRatexyEnum); _assert_(epsxy_input);
+		Input* epszz_input=NULL; Input* epsxz_input=NULL; Input* epsyz_input=NULL;
+		if(dim==3){
+			epszz_input=element->GetInput(StrainRatezzEnum); _assert_(epszz_input);
+			epsxz_input=element->GetInput(StrainRatexzEnum); _assert_(epsxz_input);
+			epsyz_input=element->GetInput(StrainRateyzEnum); _assert_(epsyz_input);
+		}
+
+		/*Get tau*/
+		Input* sigmapxx_input=element->GetInput(DeviatoricStressxxEnum); _assert_(sigmapxx_input);
+		Input* sigmapyy_input=element->GetInput(DeviatoricStressyyEnum); _assert_(sigmapyy_input);
+		Input* sigmapxy_input=element->GetInput(DeviatoricStressxyEnum); _assert_(sigmapxy_input);
+		Input* sigmapzz_input=NULL; Input* sigmapxz_input=NULL; Input* sigmapyz_input=NULL;
+		if(dim==3){
+			sigmapzz_input=element->GetInput(DeviatoricStresszzEnum); _assert_(sigmapzz_input);
+			sigmapxz_input=element->GetInput(DeviatoricStressxzEnum); _assert_(sigmapxz_input);
+			sigmapyz_input=element->GetInput(DeviatoricStressyzEnum); _assert_(sigmapyz_input);
+		}
+
+		Gauss* gauss=element->NewGauss(5);
+		while(gauss->next()){
+			element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+			element->NodalFunctionsTensor(tbasis,gauss);
+
+			/*Get tau from inputs*/
+			sigmapxx_input->GetInputValue(&sigmapxx,gauss);
+			sigmapyy_input->GetInputValue(&sigmapyy,gauss);
+			sigmapxy_input->GetInputValue(&sigmapxy,gauss);
+			if(dim==3){
+				sigmapzz_input->GetInputValue(&sigmapzz,gauss);
+				sigmapxz_input->GetInputValue(&sigmapxz,gauss);
+				sigmapyz_input->GetInputValue(&sigmapyz,gauss);
+			}
+
+			/*Get previous d*/
+			epsxx_input->GetInputValue(&epsxx_old,gauss);
+			epsyy_input->GetInputValue(&epsyy_old,gauss);
+			epsxy_input->GetInputValue(&epsxy_old,gauss);
+			if(dim==3){
+				epszz_input->GetInputValue(&epszz_old,gauss);
+				epsxz_input->GetInputValue(&epsxz_old,gauss);
+				epsyz_input->GetInputValue(&epsyz_old,gauss);
+			}
+
+			/*Calculate d from previous results*/
+			vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+			vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+			if(dim==3){
+				vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
+			}
+			epsxx = dvx[0];
+			epsyy = dvy[1];
+			epsxy = 0.5*(dvx[1] + dvy[0]);
+			if(dim==3){
+				epszz = dvz[2];
+				epsxz = 0.5*(dvx[2] + dvz[0]);
+				epsyz = 0.5*(dvy[2] + dvz[1]);
+			}
+
+			/*Solve 2 eta_0 |d|^s-1 + r |d| = |rD(u) + tau|*/
+			IssmDouble coef1,coef2,coef3;
+			B_input->GetInputValue(&B,gauss);
+			n_input->GetInputValue(&n,gauss);
+			coef1 = B*pow(1./sqrt(2.),(1.-n)/n); //2 eta_0 = 2 * B/(2* (1/sqrt(2)  )^(n-1)/n )
+			coef2 = r;
+			if(dim==2){
+				coef3 = sqrt(
+							  (r*epsxx + sigmapxx)*(r*epsxx + sigmapxx)
+							+ (r*epsyy + sigmapyy)*(r*epsyy + sigmapyy)
+							+ 2*(r*epsxy + sigmapxy)*(r*epsxy + sigmapxy)
+							);
+			}
+			else{
+				coef3 = sqrt(
+					  		  (r*epsxx + sigmapxx)*(r*epsxx + sigmapxx)
+							+ (r*epsyy + sigmapyy)*(r*epsyy + sigmapyy)
+							+ (r*epszz + sigmapzz)*(r*epszz + sigmapzz)
+							+ 2*(r*epsxy + sigmapxy)*(r*epsxy + sigmapxy)
+							+ 2*(r*epsxz + sigmapxz)*(r*epsxz + sigmapxz)
+							+ 2*(r*epsyz + sigmapyz)*(r*epsyz + sigmapyz)
+							);
+			}
+			IssmDouble dnorm;
+			if(dim==2){
+				dnorm = sqrt( epsxx_old*epsxx_old + epsyy_old*epsyy_old + 2.*epsxy_old*epsxy_old );
+			}
+			else{
+				dnorm = sqrt( epsxx_old*epsxx_old + epsyy_old*epsyy_old + epszz_old*epszz_old
+							+2.*(epsxy_old*epsxy_old + epsxz_old*epsxz_old + epsyz_old*epsyz_old));
+			}
+			/*Initial guess cannot be 0 otherwise log(0)  - inf*/
+			if(dnorm==0.) dnorm=1.;
+			NewtonSolveDnorm(&dnorm,coef1,coef2,coef3,n,dnorm);
+			_assert_(dnorm>=0.);
+			_assert_(!xIsNan<IssmDouble>(dnorm));
+
+			/*Create Ke*/
+			D_scalar=(coef1*pow(dnorm,(1.-n)/n)+r)*gauss->weight*Jdet;
+			TripleMultiply(tbasis,tnumnodes,1,0,
+						&D_scalar,1,1,0,
+						tbasis,1,tnumnodes,0,
+						Ke,1);
+
+			/*Create Right hand sides*/
+			for(int ii=0;ii<tnumnodes;ii++) pe_xx[ii] += (r*epsxx+sigmapxx)*tbasis[ii]*gauss->weight*Jdet;
+			for(int ii=0;ii<tnumnodes;ii++) pe_yy[ii] += (r*epsyy+sigmapyy)*tbasis[ii]*gauss->weight*Jdet;
+			for(int ii=0;ii<tnumnodes;ii++) pe_xy[ii] += (r*epsxy+sigmapxy)*tbasis[ii]*gauss->weight*Jdet;
+			if(dim==3){
+				for(int ii=0;ii<tnumnodes;ii++) pe_zz[ii] += (r*epszz+sigmapzz)*tbasis[ii]*gauss->weight*Jdet;
+				for(int ii=0;ii<tnumnodes;ii++) pe_xz[ii] += (r*epsxz+sigmapxz)*tbasis[ii]*gauss->weight*Jdet;
+				for(int ii=0;ii<tnumnodes;ii++) pe_yz[ii] += (r*epsyz+sigmapyz)*tbasis[ii]*gauss->weight*Jdet;
+			}
+		}
+
+		/*Solve the systems*/
+		IssmDouble* d_xx = xNew<IssmDouble>(tnumnodes);
+		IssmDouble* d_yy = xNew<IssmDouble>(tnumnodes);
+		IssmDouble* d_xy = xNew<IssmDouble>(tnumnodes);
+		IssmDouble* d_zz = NULL;
+		IssmDouble* d_xz = NULL;
+		IssmDouble* d_yz = NULL;
+		if(dim==2){
+			_assert_(tnumnodes==3);
+			Matrix3x3Solve(&d_xx[0],Ke,pe_xx);
+			Matrix3x3Solve(&d_yy[0],Ke,pe_yy);
+			Matrix3x3Solve(&d_xy[0],Ke,pe_xy);
+			for(int i=0;i<3;i++) _assert_(!xIsNan<IssmDouble>(d_xx[i]));
+			for(int i=0;i<3;i++) _assert_(!xIsNan<IssmDouble>(d_yy[i]));
+			for(int i=0;i<3;i++) _assert_(!xIsNan<IssmDouble>(d_xx[i]));
+			element->AddInput(StrainRatexxEnum,d_xx,P1DGEnum);
+			element->AddInput(StrainRateyyEnum,d_yy,P1DGEnum);
+			element->AddInput(StrainRatexyEnum,d_xy,P1DGEnum);
+		}
+		else{
+			_assert_(tnumnodes==4);
+			d_zz = xNew<IssmDouble>(tnumnodes);
+			d_xz = xNew<IssmDouble>(tnumnodes);
+			d_yz = xNew<IssmDouble>(tnumnodes);
+			Matrix4x4Solve(&d_xx[0],Ke,pe_xx);
+			Matrix4x4Solve(&d_yy[0],Ke,pe_yy);
+			Matrix4x4Solve(&d_xy[0],Ke,pe_xy);
+			Matrix4x4Solve(&d_zz[0],Ke,pe_zz);
+			Matrix4x4Solve(&d_xz[0],Ke,pe_xz);
+			Matrix4x4Solve(&d_yz[0],Ke,pe_yz);
+			element->AddInput(StrainRatexxEnum,d_xx,P1DGEnum);
+			element->AddInput(StrainRateyyEnum,d_yy,P1DGEnum);
+			element->AddInput(StrainRatexyEnum,d_xy,P1DGEnum);
+			element->AddInput(StrainRatezzEnum,d_zz,P1DGEnum);
+			element->AddInput(StrainRatexzEnum,d_xz,P1DGEnum);
+			element->AddInput(StrainRateyzEnum,d_yz,P1DGEnum);
+		}
+
+		/*Clean up*/
+		delete gauss;
+		xDelete<IssmDouble>(xyz_list);
+		xDelete<IssmDouble>(tbasis);
+		xDelete<IssmDouble>(Ke);
+		xDelete<IssmDouble>(pe_xx); xDelete<IssmDouble>(d_xx);
+		xDelete<IssmDouble>(pe_yy); xDelete<IssmDouble>(d_yy);
+		xDelete<IssmDouble>(pe_zz); xDelete<IssmDouble>(d_zz);
+		xDelete<IssmDouble>(pe_xy); xDelete<IssmDouble>(d_xy);
+		xDelete<IssmDouble>(pe_xz); xDelete<IssmDouble>(d_xz);
+		xDelete<IssmDouble>(pe_yz); xDelete<IssmDouble>(d_yz);
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolutionFSXTH_tau(Elements* elements,Parameters* parameters){/*{{{*/
+
+	/*Intermediaries*/
+	int         dim,tausize;
+	IssmDouble  epsxx,epsyy,epszz,epsxy,epsxz,epsyz,D_scalar;
+	IssmDouble  d_xx,d_yy,d_zz,d_xy,d_xz,d_yz;
+	IssmDouble  sigmapxx,sigmapyy,sigmapzz,sigmapxy,sigmapxz,sigmapyz;
+	IssmDouble  dvx[3],dvy[3],dvz[3];
+	IssmDouble *xyz_list = NULL;
+	IssmDouble  Jdet,r;
+
+	parameters->FindParam(&r,AugmentedLagrangianREnum);
+	parameters->FindParam(&dim,DomainDimensionEnum);
+	if(dim==2) tausize = 3;
+	else       tausize = 6;
+
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+
+		/*Get inputs and parameters*/
+		element->GetVerticesCoordinates(&xyz_list);
+		Input* vx_input=element->GetInput(VxEnum);                 _assert_(vx_input);
+		Input* vy_input=element->GetInput(VyEnum);                 _assert_(vy_input);
+		Input* vz_input=NULL;
+		if(dim==3){vz_input=element->GetInput(VzEnum); _assert_(vz_input);}
+
+		/*Get previous tau*/
+		Input* sigmapxx_input=element->GetInput(DeviatoricStressxxEnum); _assert_(sigmapxx_input);
+		Input* sigmapyy_input=element->GetInput(DeviatoricStressyyEnum); _assert_(sigmapyy_input);
+		Input* sigmapxy_input=element->GetInput(DeviatoricStressxyEnum); _assert_(sigmapxy_input);
+		Input* sigmapzz_input=NULL; Input* sigmapxz_input=NULL; Input* sigmapyz_input=NULL;
+		if(dim==3){
+			sigmapzz_input=element->GetInput(DeviatoricStresszzEnum); _assert_(sigmapzz_input);
+			sigmapxz_input=element->GetInput(DeviatoricStressxzEnum); _assert_(sigmapxz_input);
+			sigmapyz_input=element->GetInput(DeviatoricStressyzEnum); _assert_(sigmapyz_input);
+		}
+
+		/*Get NEW d*/
+		Input* epsxx_input=element->GetInput(StrainRatexxEnum); _assert_(epsxx_input);
+		Input* epsyy_input=element->GetInput(StrainRateyyEnum); _assert_(epsyy_input);
+		Input* epsxy_input=element->GetInput(StrainRatexyEnum); _assert_(epsxy_input);
+		Input* epszz_input=NULL; Input* epsxz_input=NULL; Input* epsyz_input=NULL;
+		if(dim==3){
+			epszz_input=element->GetInput(StrainRatezzEnum); _assert_(epszz_input);
+			epsxz_input=element->GetInput(StrainRatexzEnum); _assert_(epsxz_input);
+			epsyz_input=element->GetInput(StrainRateyzEnum); _assert_(epsyz_input);
+		}
+
+		/*Fetch number of nodes and dof for this finite element*/
+		int tnumnodes = element->GetNumberOfVertices();      //Tensors, P1 DG
+
+		/*Update tau accordingly*/
+		IssmDouble* tau_xx = xNew<IssmDouble>(tnumnodes);
+		IssmDouble* tau_yy = xNew<IssmDouble>(tnumnodes);
+		IssmDouble* tau_xy = xNew<IssmDouble>(tnumnodes);
+		IssmDouble* tau_zz = NULL;
+		IssmDouble* tau_xz = NULL;
+		IssmDouble* tau_yz = NULL;
+		if(dim==3){
+			tau_zz = xNew<IssmDouble>(tnumnodes);
+			tau_xz = xNew<IssmDouble>(tnumnodes);
+			tau_yz = xNew<IssmDouble>(tnumnodes);
+		}
+		Gauss* gauss = element->NewGauss();
+		for(int ig=0;ig<tnumnodes;ig++){
+			gauss->GaussNode(P1DGEnum,ig);
+
+			/*Get D(u)*/
+			vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+			vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+			if(dim==3){
+				vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
+			}
+			epsxx = dvx[0];
+			epsyy = dvy[1];
+			epsxy = 0.5*(dvx[1] + dvy[0]);
+			if(dim==3){
+				epszz = dvz[2];
+				epsxz = 0.5*(dvx[2] + dvz[0]);
+				epsyz = 0.5*(dvy[2] + dvz[1]);
+			}
+
+			/*Get tau^(n-1) from inputs*/
+			sigmapxx_input->GetInputValue(&sigmapxx,gauss);
+			sigmapyy_input->GetInputValue(&sigmapyy,gauss);
+			sigmapxy_input->GetInputValue(&sigmapxy,gauss);
+			if(dim==3){
+				sigmapzz_input->GetInputValue(&sigmapzz,gauss);
+				sigmapxz_input->GetInputValue(&sigmapxz,gauss);
+				sigmapyz_input->GetInputValue(&sigmapyz,gauss);
+			}
+
+			/*Get new d*/
+			epsxx_input->GetInputValue(&d_xx,gauss);
+			epsyy_input->GetInputValue(&d_yy,gauss);
+			epsxy_input->GetInputValue(&d_xy,gauss);
+			if(dim==3){
+				epszz_input->GetInputValue(&d_zz,gauss);
+				epsxz_input->GetInputValue(&d_xz,gauss);
+				epsyz_input->GetInputValue(&d_yz,gauss);
+			}
+
+			/*Get d and update tau accordingly*/
+			tau_xx[ig] = sigmapxx + r*(epsxx - d_xx);
+			tau_yy[ig] = sigmapyy + r*(epsyy - d_yy);
+			tau_xy[ig] = sigmapxy + r*(epsxy - d_xy);
+			if(dim==3){
+				tau_zz[ig] = sigmapzz + r*(epszz - d_zz);
+				tau_xz[ig] = sigmapxz + r*(epsxz - d_xz);
+				tau_yz[ig] = sigmapyz + r*(epsyz - d_yz);
+			}
+		}
+
+		/*Add inputs*/
+		element->AddInput(DeviatoricStressxxEnum,tau_xx,P1DGEnum);
+		element->AddInput(DeviatoricStressyyEnum,tau_yy,P1DGEnum);
+		element->AddInput(DeviatoricStressxyEnum,tau_xy,P1DGEnum);
+		if(dim==3){
+			element->AddInput(DeviatoricStresszzEnum,tau_zz,P1DGEnum);
+			element->AddInput(DeviatoricStressxzEnum,tau_xz,P1DGEnum);
+			element->AddInput(DeviatoricStressyzEnum,tau_yz,P1DGEnum);
+		}
+
+		/*Clean up and */
+		delete gauss;
+		xDelete<IssmDouble>(xyz_list);
+		xDelete<IssmDouble>(tau_xx);
+		xDelete<IssmDouble>(tau_yy);
+		xDelete<IssmDouble>(tau_zz);
+		xDelete<IssmDouble>(tau_xy);
+		xDelete<IssmDouble>(tau_xz);
+		xDelete<IssmDouble>(tau_yz);
+	}
+}/*}}}*/
+
+/*Coupling (Tiling)*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixCouplingHOFS(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Constants*/
+	int numnodes       = 3*6+1;
+	int numdofp        = 2*6;
+	int numdofs        = 4*6 + 3;
+	int numdoftotal    = (2+4)*6+ 3;
+
+	/*Intermediaries*/
+	int   i,j,init;
+	int*   cs_list     = xNew<int>(6*3+1);
+	int*   cs_list2    = xNew<int>(6*2+1);
+	Node  **node_list  = xNew<Node*>(6*3+1);
+
+	/*Some parameters needed*/
+	init = element->FiniteElement();
+
+	/*prepare node list*/
+	for(i=0;i<6+1;i++){
+		node_list[i+6] = element->GetNode(i);
+		cs_list[i+6]   = XYZEnum;
+		cs_list2[i]    = XYZEnum;
+	}
+	for(i=0;i<6;i++){
+		node_list[i]       = element->GetNode(i);
+		node_list[i+2*6+1] = element->GetNode(i+6*1);
+		cs_list[i]         = XYEnum;
+		cs_list[i+2*6+1]   = PressureEnum;
+		cs_list2[i+6+1]    = PressureEnum;
+	}
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=element->NewElementMatrixCoupling(6,HOApproximationEnum);
+	ElementMatrix* Ke2=element->NewElementMatrix(FSvelocityEnum);
+	ElementMatrix* Ke=new ElementMatrix(Ke1,Ke2);
+	delete Ke1; delete Ke2;
+
+	/*Compute HO Matrix with P1 element type\n");*/
+	Ke1=CreateKMatrixFS(element); element->TransformInvStiffnessMatrixCoord(Ke1,node_list,2*6+1,cs_list2);
+	int indices[3]={18,19,20};
+	Ke1->StaticCondensation(3,&indices[0]);
+	element->SetTemporaryElementType(P1Enum); // P1 needed for HO
+	Ke2=CreateKMatrixHO(element); element->TransformInvStiffnessMatrixCoord(Ke2,XYEnum);
+	element->SetTemporaryElementType(init); // P1 needed for HO
+	/*Compute FS Matrix and condense it \n");*/
+
+	for(i=0;i<numdofs;i++) for(j=0;j<6;j++){
+		Ke->values[(i+numdofp)*numdoftotal+2*j+0]+=Ke1->values[i*numdofs+3*j+0];
+		Ke->values[(i+numdofp)*numdoftotal+2*j+1]+=Ke1->values[i*numdofs+3*j+1];
+	}
+	for(i=0;i<numdofp;i++) for(j=0;j<6;j++){
+		Ke->values[i*numdoftotal+numdofp+3*j+0]+=Ke2->values[i*numdofp+2*j+0];
+		Ke->values[i*numdoftotal+numdofp+3*j+1]+=Ke2->values[i*numdofp+2*j+1];
+	}
+
+	/*Transform Coordinate System*/ //Do not transform, already done in the matrices
+	element->TransformStiffnessMatrixCoord(Ke,node_list,numnodes,cs_list);
+
+	/*clean-up and return*/
+	xDelete<int>(cs_list);
+	xDelete<int>(cs_list2);
+	xDelete<Node*>(node_list);
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixCouplingSSAFS(Element* element){/*{{{*/
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixCouplingSSAFSViscous(element);
+	ElementMatrix* Ke2=CreateKMatrixCouplingSSAFSFriction(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixCouplingSSAFSFriction(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Constants*/
+	const int numdofs   = (6+1)*3 + 6*1;
+	const int numdofm   = 6 *2;
+	const int numdof2d  = 3 *3;
+	const int numdof2dm = 3 *2;
+	const int numdoftot = 6*2 + (6+1)*3 +6; // HO + FS vel + FS Pressure
+
+	/*Intermediaries */
+	int        i,j,approximation;
+	int        dim=3;
+	IssmDouble FSreconditioning,viscosity,alpha2_gauss,Jdet2d;
+	IssmDouble bed_normal[3];
+	IssmDouble LSSAFS[8][numdof2dm];
+	IssmDouble LprimeSSAFS[8][numdofs];
+	IssmDouble DLSSAFS[8][8]={0.0};
+	IssmDouble LFSSSA[4][numdof2d];
+	IssmDouble LprimeFSSSA[4][numdof2dm];
+	IssmDouble DLFSSSA[4][4]={0.0};
+	IssmDouble Ke_drag[numdof2dm][numdofs]={0.0};
+	IssmDouble Ke_drag2[numdof2d][numdof2dm]={0.0};
+	IssmDouble *xyz_list      = NULL;
+	IssmDouble *xyz_list_tria = NULL;
+
+	/*If on water or not FS, skip stiffness: */
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(element->IsAllFloating() || !element->IsOnBase()) return NULL;
+
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numnodes  = 2*vnumnodes-1+pnumnodes;
+
+	/*Prepare node list*/
+	int* cs_list = xNew<int>(2*vnumnodes-1+pnumnodes);
+	Node **node_list = xNew<Node*>(2*vnumnodes-1+pnumnodes);
+	for(i=0;i<vnumnodes-1;i++){
+		node_list[i] = element->GetNode(i);
+		cs_list[i]   = XYEnum;
+	}
+	for(i=0;i<vnumnodes;i++){
+		node_list[i+vnumnodes-1] = element->GetNode(i);
+		cs_list[i+vnumnodes-1]   = XYZEnum;
+	}
+	for(i=0;i<pnumnodes;i++){
+		node_list[2*vnumnodes-1+i] = element->GetNode(vnumnodes+i);
+		cs_list[2*vnumnodes-1+i]   = PressureEnum;
+	}
+
+	ElementMatrix* Ke1=element->NewElementMatrixCoupling(6,SSAApproximationEnum);
+	ElementMatrix* Ke2=element->NewElementMatrix(FSvelocityEnum);
+	ElementMatrix* Ke=new ElementMatrix(Ke1,Ke2);
+	delete Ke1; delete Ke2;
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetVerticesCoordinatesBase(&xyz_list_tria);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input=element->GetInput(VzEnum); _assert_(vz_input);
+
+	/*build friction object, used later on: */
+	Friction* friction=new Friction(element,3);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminantBase(&Jdet2d,xyz_list_tria,gauss);
+		this->GetLSSAFS(&LSSAFS[0][0], element,gauss);
+		this->GetLprimeSSAFS(&LprimeSSAFS[0][0], element,xyz_list, gauss);
+		this->GetLFSSSA(&LFSSSA[0][0],element, gauss);
+		this->GetLprimeFSSSA(&LprimeFSSSA[0][0], element,xyz_list, gauss);
+
+		element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+
+		element->NormalBase(&bed_normal[0],xyz_list_tria);
+		friction->GetAlpha2(&alpha2_gauss,gauss);
+
+		DLSSAFS[0][0]=alpha2_gauss*gauss->weight*Jdet2d;
+		DLSSAFS[1][1]=alpha2_gauss*gauss->weight*Jdet2d;
+		DLSSAFS[2][2]=-alpha2_gauss*gauss->weight*Jdet2d*bed_normal[0]*bed_normal[2];
+		DLSSAFS[3][3]=-alpha2_gauss*gauss->weight*Jdet2d*bed_normal[1]*bed_normal[2];
+		DLSSAFS[4][4]=-2*viscosity*gauss->weight*Jdet2d*bed_normal[0];
+		DLSSAFS[5][5]=-2*viscosity*gauss->weight*Jdet2d*bed_normal[1];
+		DLSSAFS[6][6]=FSreconditioning*gauss->weight*Jdet2d*bed_normal[0];
+		DLSSAFS[7][7]=FSreconditioning*gauss->weight*Jdet2d*bed_normal[1];
+
+		DLFSSSA[0][0]=alpha2_gauss*gauss->weight*Jdet2d;
+		DLFSSSA[1][1]=alpha2_gauss*gauss->weight*Jdet2d;
+		DLFSSSA[2][2]=-alpha2_gauss*gauss->weight*Jdet2d*bed_normal[0]*bed_normal[2];
+		DLFSSSA[3][3]=-alpha2_gauss*gauss->weight*Jdet2d*bed_normal[1]*bed_normal[2];
+
+		TripleMultiply( &LSSAFS[0][0],8,numdof2dm,1,
+					&DLSSAFS[0][0],8,8,0,
+					&LprimeSSAFS[0][0],8,numdofs,0,
+					&Ke_drag[0][0],1);
+
+		TripleMultiply( &LFSSSA[0][0],4,numdof2d,1,
+					&DLFSSSA[0][0],4,4,0,
+					&LprimeFSSSA[0][0],4,numdof2dm,0,
+					&Ke_drag2[0][0],1);
+	}
+
+	for(i=0;i<numdof2dm;i++) for(j=0;j<numdofs;j++) Ke->values[i*numdoftot+j+numdofm]+=Ke_drag[i][j];
+	for(i=0;i<numdof2d;i++) for(j=0;j<numdof2dm;j++) Ke->values[(i+numdofm)*numdoftot+j]+=Ke_drag2[i][j];
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,node_list,numnodes,cs_list);
+
+	/*Clean up and return*/
+	xDelete<int>(cs_list);
+	xDelete<Node*>(node_list);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_tria);
+	delete gauss;
+	delete friction;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixCouplingSSAFSViscous(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Constants*/
+	const int numdofm     = 2 *3;
+	const int numdofs     = 4 *6+ 3;
+	const int numdoftotal = 2 *numdofm+numdofs;
+
+	/*Intermediaries */
+	int        i,j;
+	int        dim=3;
+	IssmDouble Jdet,viscosity,FSreconditioning,D_scalar;
+	IssmDouble B[4][numdofs];
+	IssmDouble Bprime[4][numdofm];
+	IssmDouble B2[3][numdofm];
+	IssmDouble Bprime2[3][numdofs];
+	IssmDouble D[4][4]={0.0};            // material matrix, simple scalar matrix.
+	IssmDouble D2[3][3]={0.0};            // material matrix, simple scalar matrix.
+	IssmDouble Ke_gg[numdofs][numdofm]={0.0}; //local element stiffness matrix
+	IssmDouble Ke_gg2[numdofm][numdofs]={0.0}; //local element stiffness matrix
+	IssmDouble *xyz_list    = NULL;
+
+	/*Find penta on bed as FS must be coupled to the dofs on the bed: */
+	Element* pentabase=element->GetBasalElement();
+	Element* basaltria=pentabase->SpawnBasalElement();
+
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numnodes  = 2*vnumnodes-1+pnumnodes;
+
+	/*Prepare node list*/
+	int* cs_list     = xNew<int>(2*vnumnodes-1+pnumnodes);
+	Node **node_list = xNew<Node*>(2*vnumnodes-1+pnumnodes);
+	for(i=0;i<vnumnodes-1;i++){
+		node_list[i] = pentabase->GetNode(i);
+		cs_list[i]   = XYEnum;
+	}
+	for(i=0;i<vnumnodes;i++){
+		node_list[i+vnumnodes-1] = element->GetNode(i);
+		cs_list[i+vnumnodes-1]   = XYZEnum;
+	}
+	for(i=0;i<pnumnodes;i++){
+		node_list[2*vnumnodes-1+i] = element->GetNode(vnumnodes+i);
+		cs_list[2*vnumnodes-1+i]   = PressureEnum;
+	}
+
+	/*Initialize Element matrix and return if necessary*/
+	ElementMatrix* Ke1=pentabase->NewElementMatrixCoupling(6,SSAApproximationEnum);
+	ElementMatrix* Ke2=element->NewElementMatrix(FSvelocityEnum);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+	delete Ke1; delete Ke2;
+
+	/* Get node coordinates and dof list: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input=element->GetInput(VzEnum); _assert_(vz_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(5);
+	Gauss* gauss_tria=new GaussTria();
+	while(gauss->next()){
+		gauss->SynchronizeGaussBase(gauss_tria);
+
+		element->JacobianDeterminant(&Jdet, xyz_list,gauss);
+		this->GetBSSAFS(&B[0][0],element,xyz_list, gauss);
+		this->GetBprimeSSAFSTria(&Bprime[0][0], basaltria,xyz_list, gauss_tria);
+		this->GetBSSAFSTria(&B2[0][0], basaltria,xyz_list, gauss_tria);
+		this->GetBprimeSSAFS(&Bprime2[0][0], element,xyz_list, gauss);
+
+		element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+
+		D_scalar=2*viscosity*gauss->weight*Jdet;
+		for (i=0;i<3;i++) D[i][i]=D_scalar;
+		D[3][3]=-gauss->weight*Jdet*FSreconditioning;
+		for (i=0;i<3;i++) D2[i][i]=D_scalar;
+
+		TripleMultiply( &B[0][0],4,numdofs,1,
+					&D[0][0],4,4,0,
+					&Bprime[0][0],4,numdofm,0,
+					&Ke_gg[0][0],1);
+
+		TripleMultiply( &B2[0][0],3,numdofm,1,
+					&D2[0][0],3,3,0,
+					&Bprime2[0][0],3,numdofs,0,
+					&Ke_gg2[0][0],1);
+
+	}
+	for(i=0;i<numdofs;i++) for(j=0;j<numdofm;j++) Ke->values[(i+2*numdofm)*numdoftotal+j]+=Ke_gg[i][j];
+	for(i=0;i<numdofm;i++) for(j=0;j<numdofs;j++) Ke->values[i*numdoftotal+(j+2*numdofm)]+=Ke_gg2[i][j];
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,node_list,numnodes,cs_list);
+
+	/*Clean-up and return*/
+	xDelete<int>(cs_list);
+	xDelete<Node*>(node_list);
+	xDelete<IssmDouble>(xyz_list);
+	delete basaltria->material; delete basaltria;
+	delete gauss;
+	delete gauss_tria;
+	return Ke;
+
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixCouplingSSAHO(Element* element){/*{{{*/
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixCouplingSSAHOViscous(element);
+	ElementMatrix* Ke2=CreateKMatrixCouplingSSAHOFriction(element);
+	ElementMatrix* Ke=new ElementMatrix(Ke1,Ke2);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixCouplingSSAHOFriction(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	if(element->IsAllFloating() || !element->IsOnBase()) return NULL;
+
+	/*Constants*/
+	int numnodes    = element->GetNumberOfNodes();
+	int numdof      = 2*numnodes;
+	int numdoftotal = 4*numnodes;
+
+	/*Intermediaries */
+	int         i,j;
+	IssmDouble  Jdet2d,alpha2;
+	IssmDouble *xyz_list_tria = NULL;
+	IssmDouble* L             = xNewZeroInit<IssmDouble>(2*numdof);
+	IssmDouble  DL[2][2]      = {{ 0,0 },{0,0}}; //for basal drag
+	IssmDouble  DL_scalar;
+	IssmDouble* Ke_gg         = xNewZeroInit<IssmDouble>(numdof*numdof);
+	Node      **node_list     = xNew<Node*>(2*numnodes);
+	int*        cs_list       = xNew<int>(2*numnodes);
+
+	/*Initialize Element matrix and return if necessary*/
+	ElementMatrix* Ke1=element->NewElementMatrix(SSAApproximationEnum);
+	ElementMatrix* Ke2=element->NewElementMatrix(HOApproximationEnum);
+	ElementMatrix* Ke=new ElementMatrix(Ke1,Ke2);
+	delete Ke1; delete Ke2;
+
+	/*Prepare node list*/
+	for(i=0;i<numnodes;i++){
+		node_list[i+0*numnodes] = element->GetNode(i);
+		node_list[i+1*numnodes] = element->GetNode(i);
+		cs_list[i+0*numnodes] = XYEnum;
+		cs_list[i+1*numnodes] = XYEnum;
+	}
+
+	/*retrieve inputs :*/
+	element->GetVerticesCoordinatesBase(&xyz_list_tria);
+
+	/*build friction object, used later on: */
+	Friction* friction=new Friction(element,2);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(2);
+	while(gauss->next()){
+
+		/*Friction: */
+		friction->GetAlpha2(&alpha2,gauss);
+		element->JacobianDeterminantBase(&Jdet2d, xyz_list_tria,gauss);
+		this->GetBHOFriction(L,element,3,xyz_list_tria,gauss);
+
+		DL_scalar=alpha2*gauss->weight*Jdet2d;
+		for (i=0;i<2;i++) DL[i][i]=DL_scalar;
+
+		/*  Do the triple producte tL*D*L: */
+		TripleMultiply( L,2,numdof,1,
+					&DL[0][0],2,2,0,
+					L,2,numdof,0,
+					Ke_gg,1);
+	}
+
+	for(i=0;i<numdof;i++) for(j=0;j<numdof;j++) Ke->values[i*numdoftotal+(numdof+j)]+=Ke_gg[i*numdof+j];
+	for(i=0;i<numdof;i++) for(j=0;j<numdof;j++) Ke->values[(i+numdof)*numdoftotal+j]+=Ke_gg[i*numdof+j];
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,node_list,2*numnodes,cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	delete friction;
+	xDelete<int>(cs_list);
+	xDelete<Node*>(node_list);
+	xDelete<IssmDouble>(xyz_list_tria);
+	xDelete<IssmDouble>(Ke_gg);
+	xDelete<IssmDouble>(L);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixCouplingSSAHOViscous(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Constants*/
+	int numnodes    = element->GetNumberOfNodes();
+	int numdofm     = 1 *numnodes; //*2/2
+	int numdofp     = 2 *numnodes;
+	int numdoftotal = 2 *2 *numnodes;//2 dof per nodes and 2 sets of nodes for HO and SSA
+
+	/*Intermediaries */
+	int         i,j;
+	IssmDouble  Jdet,viscosity;
+	IssmDouble  *xyz_list      = NULL;
+	IssmDouble* B              = xNew<IssmDouble>(3*numdofp);
+	IssmDouble* Bprime         = xNew<IssmDouble>(3*numdofm);
+	IssmDouble  D[3][3]={0.0}; // material matrix, simple scalar matrix.
+	IssmDouble  D_scalar;
+	IssmDouble* Ke_gg          = xNewZeroInit<IssmDouble>(numdofp*numdofm);
+	Node       **node_list     = xNew<Node*>(2*numnodes);
+	int*         cs_list= xNew<int>(2*numnodes);
+
+	/*Find penta on bed as HO must be coupled to the dofs on the bed: */
+	Element* pentabase=element->GetBasalElement();
+	Element* basaltria=pentabase->SpawnBasalElement();
+
+	/*prepare node list*/
+	for(i=0;i<numnodes;i++){
+		node_list[i+0*numnodes] = pentabase->GetNode(i);
+		node_list[i+1*numnodes] = element  ->GetNode(i);
+		cs_list[i+0*numnodes] = XYEnum;
+		cs_list[i+1*numnodes] = XYEnum;
+	}
+
+	/*Initialize Element matrix*/
+	ElementMatrix* Ke1= pentabase->NewElementMatrix(SSAApproximationEnum);
+	ElementMatrix* Ke2= element  ->NewElementMatrix(HOApproximationEnum);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+	delete Ke1; delete Ke2;
+
+	/* Get node coordinates and dof list: */
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input   =element->GetInput(VxEnum);       _assert_(vx_input);
+	Input* vy_input   =element->GetInput(VyEnum);       _assert_(vy_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(5);
+	Gauss* gauss_tria=new GaussTria();
+	while(gauss->next()){
+		gauss->SynchronizeGaussBase(gauss_tria);
+
+		element->JacobianDeterminant(&Jdet, xyz_list,gauss);
+		this->GetBSSAHO(B, element,xyz_list, gauss);
+		this->GetBSSAprime(Bprime,basaltria,2,xyz_list, gauss_tria);
+		element->material->ViscosityHO(&viscosity,3,xyz_list,gauss,vx_input,vy_input);
+
+		D_scalar=2*viscosity*gauss->weight*Jdet;
+		for (i=0;i<3;i++) D[i][i]=D_scalar;
+
+		TripleMultiply( B,3,numdofp,1,
+					&D[0][0],3,3,0,
+					Bprime,3,numdofm,0,
+					Ke_gg,1);
+	}
+	for(i=0;i<numdofp;i++) for(j=0;j<numdofm;j++) Ke->values[(i+2*numdofm)*numdoftotal+j]+=Ke_gg[i*numdofm+j];
+	for(i=0;i<numdofm;i++) for(j=0;j<numdofp;j++) Ke->values[i*numdoftotal+(j+2*numdofm)]+=Ke_gg[j*numdofm+i];
+
+	/*Transform Coordinate System*/
+	element->TransformStiffnessMatrixCoord(Ke,node_list,2*numnodes,cs_list);
+
+	/*Clean-up and return*/
+	basaltria->DeleteMaterials(); delete basaltria;
+
+	delete gauss;
+	delete gauss_tria;
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(Ke_gg);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<Node*>(node_list);
+	xDelete<int>(cs_list);
+	return Ke;
+
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixHOFS(Element* element){/*{{{*/
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixFS(element);
+	int indices[3]={18,19,20};
+	Ke1->StaticCondensation(3,&indices[0]);
+	int init = element->FiniteElement();
+	element->SetTemporaryElementType(P1Enum); // P1 needed for HO
+	ElementMatrix* Ke2=CreateKMatrixHO(element);
+	element->SetTemporaryElementType(init); // P1 needed for HO
+	ElementMatrix* Ke3=CreateKMatrixCouplingHOFS(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2,Ke3);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	delete Ke3;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixSSAFS(Element* element){/*{{{*/
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixFS(element);
+	int indices[3]={18,19,20};
+	Ke1->StaticCondensation(3,&indices[0]);
+	int init = element->FiniteElement();
+	element->SetTemporaryElementType(P1Enum);
+	ElementMatrix* Ke2=CreateKMatrixSSA3d(element);
+	element->SetTemporaryElementType(init);
+	ElementMatrix* Ke3=CreateKMatrixCouplingSSAFS(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2,Ke3);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	delete Ke3;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixSSAHO(Element* element){/*{{{*/
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixSSA3d(element);
+	ElementMatrix* Ke2=CreateKMatrixHO(element);
+	ElementMatrix* Ke3=CreateKMatrixCouplingSSAHO(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2,Ke3);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	delete Ke3;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixSSA3d(Element* element){/*{{{*/
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixSSA3dViscous(element);
+	ElementMatrix* Ke2=CreateKMatrixSSA3dFriction(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixSSA3dFriction(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Initialize Element matrix and return if necessary*/
+	if(element->IsAllFloating() || !element->IsOnBase()) return NULL;
+
+	/*Build a tria element using the 3 nodes of the base of the penta. Then use
+	 * the tria functionality to build a friction stiffness matrix on these 3
+	 * nodes: */
+	Element* basalelement = element->SpawnBasalElement();
+	ElementMatrix* Ke=CreateKMatrixSSAFriction(basalelement);
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+
+	/*clean-up and return*/
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceAnalysis::CreateKMatrixSSA3dViscous(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Constants*/
+	const int    numdof2d=2*3;
+
+	/*Intermediaries */
+	int         i,j,approximation;
+	int         dim=3;
+	IssmDouble  Jdet,viscosity;
+	IssmDouble  epsilon[5],oldepsilon[5];       /* epsilon=[exx,eyy,exy,exz,eyz];*/
+	IssmDouble  epsilons[6];                    //6 for FS
+	IssmDouble  B[3][numdof2d];
+	IssmDouble  Bprime[3][numdof2d];
+	IssmDouble  D[3][3]= {0.0};                 // material matrix, simple scalar matrix.
+	IssmDouble  D_scalar;
+	IssmDouble  Ke_gg[numdof2d][numdof2d]={0.0};
+	IssmDouble  *xyz_list  = NULL;
+
+	/*Find penta on bed as this is a SSA elements: */
+	Element* pentabase=element->GetBasalElement();
+	Element* basaltria=pentabase->SpawnBasalElement(true);
+
+	/*Initialize Element matrix*/
+	ElementMatrix* Ke=basaltria->NewElementMatrix(SSAApproximationEnum);
+	element->GetInputValue(&approximation,ApproximationEnum);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input   =element->GetInput(VxEnum);       _assert_(vx_input);
+	Input* vy_input   =element->GetInput(VyEnum);       _assert_(vy_input);
+	Input* vz_input   =element->GetInput(VzEnum);       _assert_(vz_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(5);
+	Gauss* gauss_tria=new GaussTria();
+	while(gauss->next()){
+		gauss->SynchronizeGaussBase(gauss_tria);
+
+		element->JacobianDeterminant(&Jdet, xyz_list,gauss);
+		this->GetBSSA(&B[0][0],basaltria,2,xyz_list, gauss_tria);
+		this->GetBSSAprime(&Bprime[0][0],basaltria,2,xyz_list, gauss_tria);
+
+		if(approximation==SSAHOApproximationEnum){
+			element->material->ViscosityHO(&viscosity,dim,xyz_list,gauss,vx_input,vy_input);
+		}
+		else if (approximation==SSAFSApproximationEnum){
+			element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+		}
+		else _error_("approximation " << approximation << " (" << EnumToStringx(approximation) << ") not supported yet");
+
+		D_scalar=2*viscosity*gauss->weight*Jdet;
+		for (i=0;i<3;i++) D[i][i]=D_scalar;
+
+		TripleMultiply( &B[0][0],3,numdof2d,1,
+					&D[0][0],3,3,0,
+					&Bprime[0][0],3,numdof2d,0,
+					&Ke_gg[0][0],1);
+
+	}
+	for(i=0;i<numdof2d;i++) for(j=0;j<numdof2d;j++) Ke->values[i*numdof2d+j]+=Ke_gg[i][j];
+
+	/*Transform Coordinate System*/
+	basaltria->TransformStiffnessMatrixCoord(Ke,XYEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	delete basaltria->material;
+	delete basaltria;
+	delete gauss_tria;
+	delete gauss;
+	return Ke;
+
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorCouplingHOFS(Element* element){/*{{{*/
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorCouplingHOFSViscous(element);
+	ElementVector* pe2=CreatePVectorCouplingHOFSFriction(element);
+	ElementVector* pe =new ElementVector(pe1,pe2);
+
+	/*clean-up and return*/
+	delete pe1;
+	delete pe2;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorCouplingHOFSFriction(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int         i,approximation;
+	int         dim=3;
+	IssmDouble  Jdet,Jdet2d,FSreconditioning;
+	IssmDouble	bed_normal[3];
+	IssmDouble  viscosity, w, alpha2_gauss;
+	IssmDouble  dw[3];
+	IssmDouble	*xyz_list_tria = NULL;
+	IssmDouble  *xyz_list      = NULL;
+	IssmDouble  basis[6]; //for the six nodes of the penta
+
+	/*Initialize Element vector and return if necessary*/
+	if(!element->IsOnBase() || element->IsAllFloating()) return NULL;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation!=HOFSApproximationEnum) return NULL;
+
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+	int numnodes  = vnumnodes+pnumnodes;
+
+	/*Prepare coordinate system list*/
+	int*   cs_list   = xNew<int>(vnumnodes+pnumnodes);
+	Node **node_list = xNew<Node*>(vnumnodes+pnumnodes);
+	for(i=0;i<vnumnodes;i++){
+		cs_list[i]           = XYZEnum;
+		node_list[i]           = element->GetNode(i);
+	}
+	for(i=0;i<pnumnodes;i++){
+		cs_list[vnumnodes+i] = PressureEnum;
+		node_list[vnumnodes+i] = element->GetNode(vnumnodes+i);
+	}
+
+	ElementVector* pe=element->NewElementVector(FSvelocityEnum);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetVerticesCoordinatesBase(&xyz_list_tria);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	Input* vx_input=  element->GetInput(VxEnum);   _assert_(vx_input);
+	Input* vy_input=  element->GetInput(VyEnum);   _assert_(vy_input);
+	Input* vz_input=  element->GetInput(VzEnum);   _assert_(vz_input);
+	Input* vzHO_input=element->GetInput(VzHOEnum); _assert_(vzHO_input);
+
+	/*build friction object, used later on: */
+	Friction* friction=new Friction(element,3);
+
+	/* Start looping on the number of gauss 2d (nodes on the bedrock) */
+	Gauss* gauss=element->NewGaussBase(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminantBase(&Jdet2d,xyz_list_tria,gauss);
+		element->NodalFunctionsP1(basis, gauss);
+
+		vzHO_input->GetInputValue(&w, gauss);
+		vzHO_input->GetInputDerivativeValue(&dw[0],xyz_list,gauss);
+
+		element->NormalBase(&bed_normal[0],xyz_list_tria);
+		element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+		friction->GetAlpha2(&alpha2_gauss,gauss);
+
+		for(i=0;i<3;i++){
+			pe->values[i*3+0]+=Jdet2d*gauss->weight*(alpha2_gauss*w*bed_normal[0]*bed_normal[2]+2*viscosity*dw[2]*bed_normal[0])*basis[i];
+			pe->values[i*3+1]+=Jdet2d*gauss->weight*(alpha2_gauss*w*bed_normal[1]*bed_normal[2]+2*viscosity*dw[2]*bed_normal[1])*basis[i];
+			pe->values[i*3+2]+=Jdet2d*gauss->weight*2*viscosity*(dw[0]*bed_normal[0]+dw[1]*bed_normal[1]+dw[2]*bed_normal[2])*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,node_list,vnumnodes+pnumnodes,cs_list);
+
+	/*Clean up and return*/
+	xDelete<int>(cs_list);
+	xDelete<Node*>(node_list);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_tria);
+	delete gauss;
+	delete friction;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorCouplingHOFSViscous(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int         i,approximation;
+	int         dim=3;
+	IssmDouble  viscosity,Jdet,FSreconditioning;
+	IssmDouble  dw[3];
+	IssmDouble  *xyz_list = NULL;
+	IssmDouble  basis[6]; //for the six nodes of the penta
+	IssmDouble  dbasis[3][6]; //for the six nodes of the penta
+
+	/*Initialize Element vector and return if necessary*/
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation!=HOFSApproximationEnum) return NULL;
+	int   vnumnodes = element->NumberofNodesVelocity();
+	int   pnumnodes = element->NumberofNodesPressure();
+
+	/*Prepare coordinate system list*/
+	int*   cs_list   = xNew<int>(vnumnodes+pnumnodes);
+	Node **node_list = xNew<Node*>(vnumnodes+pnumnodes);
+	for(i=0;i<vnumnodes;i++){
+		cs_list[i]             = XYZEnum;
+		node_list[i]           = element->GetNode(i);
+	}
+	for(i=0;i<pnumnodes;i++){
+		cs_list[vnumnodes+i]   = PressureEnum;
+		node_list[vnumnodes+i] = element->GetNode(vnumnodes+i);
+	}
+	ElementVector* pe = element->NewElementVector(FSvelocityEnum);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	Input* vx_input   =element->GetInput(VxEnum);   _assert_(vx_input);
+	Input* vy_input   =element->GetInput(VyEnum);   _assert_(vy_input);
+	Input* vz_input   =element->GetInput(VzEnum);   _assert_(vz_input);
+	Input* vzHO_input=element->GetInput(VzHOEnum);  _assert_(vzHO_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(5);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet, xyz_list,gauss);
+		element->NodalFunctionsP1(&basis[0],gauss);
+		element->NodalFunctionsP1Derivatives(&dbasis[0][0],xyz_list,gauss);
+
+		element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+		vzHO_input->GetInputDerivativeValue(&dw[0],xyz_list,gauss);
+
+		for(i=0;i<6;i++){
+			pe->values[i*3+0]+=-Jdet*gauss->weight*viscosity*dw[0]*dbasis[2][i];
+			pe->values[i*3+1]+=-Jdet*gauss->weight*viscosity*dw[1]*dbasis[2][i];
+			pe->values[i*3+2]+=-Jdet*gauss->weight*viscosity*(dw[0]*dbasis[0][i]+dw[1]*dbasis[1][i]+2*dw[2]*dbasis[2][i]);
+			pe->values[3*vnumnodes+i]+=Jdet*gauss->weight*FSreconditioning*dw[2]*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,node_list,vnumnodes+pnumnodes,cs_list);
+
+	/*Clean up and return*/
+	xDelete<int>(cs_list);
+	xDelete<Node*>(node_list);
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorCouplingSSAFS(Element* element){/*{{{*/
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorCouplingSSAFSViscous(element);
+	ElementVector* pe2=CreatePVectorCouplingSSAFSFriction(element);
+	ElementVector* pe =new ElementVector(pe1,pe2);
+
+	/*clean-up and return*/
+	delete pe1;
+	delete pe2;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorCouplingSSAFSFriction(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int         i,j,approximation;
+	int         dim=3;
+	IssmDouble  Jdet,Jdet2d,FSreconditioning;
+	IssmDouble	bed_normal[3];
+	IssmDouble  viscosity, w, alpha2_gauss;
+	IssmDouble  dw[3];
+	IssmDouble  basis[6]; //for the six nodes of the penta
+	IssmDouble	*xyz_list_tria = NULL;
+	IssmDouble  *xyz_list      = NULL;
+
+	/*Initialize Element vector and return if necessary*/
+	if(!element->IsOnBase() || element->IsAllFloating()) return NULL;
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation!=SSAFSApproximationEnum) return NULL;
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+
+	/*Prepare coordinate system list*/
+	int* cs_list     = xNew<int>(vnumnodes+pnumnodes);
+	Node **node_list = xNew<Node*>(vnumnodes+pnumnodes);
+	for(i=0;i<vnumnodes;i++){
+		cs_list[i]             = XYZEnum;
+		node_list[i]           = element->GetNode(i);
+	}
+	for(i=0;i<pnumnodes;i++){
+		cs_list[vnumnodes+i]   = PressureEnum;
+		node_list[vnumnodes+i] = element->GetNode(vnumnodes+i);
+	}
+	ElementVector* pe=element->NewElementVector(FSvelocityEnum);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetVerticesCoordinatesBase(&xyz_list_tria);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	Input* vx_input=   element->GetInput(VxEnum);    _assert_(vx_input);
+	Input* vy_input=   element->GetInput(VyEnum);    _assert_(vy_input);
+	Input* vz_input=   element->GetInput(VzEnum);    _assert_(vz_input);
+	Input* vzSSA_input=element->GetInput(VzSSAEnum); _assert_(vzSSA_input);
+
+	/*build friction object, used later on: */
+	Friction* friction=new Friction(element,3);
+
+	/* Start looping on the number of gauss 2d (nodes on the bedrock) */
+	Gauss* gauss=element->NewGaussBase(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminantBase(&Jdet2d,xyz_list_tria,gauss);
+		element->NodalFunctionsP1(basis, gauss);
+
+		vzSSA_input->GetInputValue(&w, gauss);
+		vzSSA_input->GetInputDerivativeValue(&dw[0],xyz_list,gauss);
+
+		element->NormalBase(&bed_normal[0],xyz_list_tria);
+		element->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
+		friction->GetAlpha2(&alpha2_gauss,gauss);
+
+		for(i=0;i<3;i++){
+			pe->values[i*3+0]+=Jdet2d*gauss->weight*(alpha2_gauss*w*bed_normal[0]*bed_normal[2]+2*viscosity*dw[2]*bed_normal[0])*basis[i];
+			pe->values[i*3+1]+=Jdet2d*gauss->weight*(alpha2_gauss*w*bed_normal[1]*bed_normal[2]+2*viscosity*dw[2]*bed_normal[1])*basis[i];
+			pe->values[i*3+2]+=Jdet2d*gauss->weight*2*viscosity*(dw[0]*bed_normal[0]+dw[1]*bed_normal[1]+dw[2]*bed_normal[2])*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,node_list,vnumnodes+pnumnodes,cs_list);
+
+	/*Clean up and return*/
+	xDelete<int>(cs_list);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_tria);
+	xDelete<Node*>(node_list);
+	delete gauss;
+	delete friction;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorCouplingSSAFSViscous(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int         i,approximation;
+	IssmDouble  viscosity,Jdet,FSreconditioning;
+	IssmDouble  dw[3];
+	IssmDouble  *xyz_list = NULL;
+	IssmDouble  basis[6]; //for the six nodes of the penta
+	IssmDouble  dbasis[3][6]; //for the six nodes of the penta
+
+	/*Initialize Element vector and return if necessary*/
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation!=SSAFSApproximationEnum) return NULL;
+	int vnumnodes = element->NumberofNodesVelocity();
+	int pnumnodes = element->NumberofNodesPressure();
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	Node **node_list = xNew<Node*>(vnumnodes+pnumnodes);
+	for(i=0;i<vnumnodes;i++){
+		cs_list[i]             = XYZEnum;
+		node_list[i]           = element->GetNode(i);
+	}
+	for(i=0;i<pnumnodes;i++){
+		cs_list[vnumnodes+i]   = PressureEnum;
+		node_list[vnumnodes+i] = element->GetNode(vnumnodes+i);
+	}
+	ElementVector* pe=element->NewElementVector(FSvelocityEnum);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	Input* vx_input   =element->GetInput(VxEnum);      _assert_(vx_input);
+	Input* vy_input   =element->GetInput(VyEnum);      _assert_(vy_input);
+	Input* vz_input   =element->GetInput(VzEnum);      _assert_(vz_input);
+	Input* vzSSA_input=element->GetInput(VzSSAEnum);   _assert_(vzSSA_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(5);
+	while(gauss->next()){
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsP1(&basis[0], gauss);
+		element->NodalFunctionsP1Derivatives(&dbasis[0][0],xyz_list, gauss);
+
+		vzSSA_input->GetInputDerivativeValue(&dw[0],xyz_list,gauss);
+		element->material->ViscosityFS(&viscosity,3,xyz_list,gauss,vx_input,vy_input,vz_input);
+
+		for(i=0;i<6;i++){
+			pe->values[i*3+0]+=-Jdet*gauss->weight*viscosity*dw[0]*dbasis[2][i];
+			pe->values[i*3+1]+=-Jdet*gauss->weight*viscosity*dw[1]*dbasis[2][i];
+			pe->values[i*3+2]+=-Jdet*gauss->weight*viscosity*(dw[0]*dbasis[0][i]+dw[1]*dbasis[1][i]+2*dw[2]*dbasis[2][i]);
+			pe->values[3*vnumnodes+i]+=Jdet*gauss->weight*FSreconditioning*dw[2]*basis[i];
+		}
+	}
+
+	/*Transform coordinate system*/
+	element->TransformLoadVectorCoord(pe,node_list,vnumnodes+pnumnodes,cs_list);
+
+	/*Clean up and return*/
+	xDelete<int>(cs_list);
+	xDelete<Node*>(node_list);
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorHOFS(Element* element){/*{{{*/
+
+	/*compute all load vectors for this element*/
+	int init = element->FiniteElement();
+	element->SetTemporaryElementType(P1Enum);
+	ElementVector* pe1=CreatePVectorHO(element);
+	element->SetTemporaryElementType(init);
+	ElementVector* pe2=CreatePVectorFS(element);
+	int indices[3]={18,19,20};
+	element->SetTemporaryElementType(MINIcondensedEnum);
+	ElementMatrix* Ke = CreateKMatrixFS(element);
+	element->SetTemporaryElementType(init);
+	pe2->StaticCondensation(Ke,3,&indices[0]);
+	delete Ke;
+	ElementVector* pe3=CreatePVectorCouplingHOFS(element);
+	ElementVector* pe =new ElementVector(pe1,pe2,pe3);
+
+	/*clean-up and return*/
+	delete pe1;
+	delete pe2;
+	delete pe3;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorSSAFS(Element* element){/*{{{*/
+
+	/*compute all load vectors for this element*/
+	int init = element->FiniteElement();
+	element->SetTemporaryElementType(P1Enum); // P1 needed for HO
+	ElementVector* pe1=CreatePVectorSSA(element);
+	element->SetTemporaryElementType(init); // P1 needed for HO
+	ElementVector* pe2=CreatePVectorFS(element);
+	int indices[3]={18,19,20};
+	element->SetTemporaryElementType(MINIcondensedEnum); // P1 needed for HO
+	ElementMatrix* Ke = CreateKMatrixFS(element);
+	element->SetTemporaryElementType(init); // P1 needed for HO
+	pe2->StaticCondensation(Ke,3,&indices[0]);
+	delete Ke;
+	ElementVector* pe3=CreatePVectorCouplingSSAFS(element);
+	ElementVector* pe =new ElementVector(pe1,pe2,pe3);
+
+	/*clean-up and return*/
+	delete pe1;
+	delete pe2;
+	delete pe3;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceAnalysis::CreatePVectorSSAHO(Element* element){/*{{{*/
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorSSA(element);
+	ElementVector* pe2=CreatePVectorHO(element);
+	ElementVector* pe =new ElementVector(pe1,pe2);
+
+	/*clean-up and return*/
+	delete pe1;
+	delete pe2;
+	return pe;
+}/*}}}*/
+void           StressbalanceAnalysis::GetBprimeSSAFS(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute Bprime  matrix. Bprime=[Bprime1 Bprime2 Bprime3 Bprime4 Bprime5 Bprime6] where Bprimei is of size 5*2.
+	 * For node i, Bprimei can be expressed in the actual coordinate system
+	 * by:
+	 *       Bprimei=[ 2*dh/dx    dh/dy   0   0 ]
+	 *               [  dh/dx    2*dh/dy  0   0 ]
+	 *               [  dh/dy     dh/dx   0   0 ]
+	 * where h is the interpolation function for node i.
+	 *
+	 * We assume Bprime has been allocated already, of size: 5x(2*NUMNODESP1)
+	 */
+
+	int    i;
+	IssmDouble dbasismini[3][7];
+
+	/*Get dbasis in actual coordinate system: */
+	element->NodalFunctionsMINIDerivatives(&dbasismini[0][0],xyz_list, gauss);
+
+	/*Build Bprime: */
+	for(i=0;i<6;i++){
+		Bprime[(3*7+6)*0+3*i+0] = 2.*dbasismini[0][i];
+		Bprime[(3*7+6)*0+3*i+1] = dbasismini[1][i];
+		Bprime[(3*7+6)*0+3*i+2] = 0.;
+		Bprime[(3*7+6)*1+3*i+0] = dbasismini[0][i];
+		Bprime[(3*7+6)*1+3*i+1] = 2.*dbasismini[1][i];
+		Bprime[(3*7+6)*1+3*i+2] = 0.;
+		Bprime[(3*7+6)*2+3*i+0] = dbasismini[1][i];
+		Bprime[(3*7+6)*2+3*i+1] = dbasismini[0][i];
+		Bprime[(3*7+6)*2+3*i+2] = 0.;
+	}
+
+	for(i=0;i<1;i++){ //Add zeros for the bubble function
+		Bprime[(3*7+6)*0+3*(6+i)+0] = 0.;
+		Bprime[(3*7+6)*0+3*(6+i)+1] = 0.;
+		Bprime[(3*7+6)*0+3*(6+i)+2] = 0.;
+		Bprime[(3*7+6)*1+3*(6+i)+0] = 0.;
+		Bprime[(3*7+6)*1+3*(6+i)+1] = 0.;
+		Bprime[(3*7+6)*1+3*(6+i)+2] = 0.;
+		Bprime[(3*7+6)*2+3*(6+i)+0] = 0.;
+		Bprime[(3*7+6)*2+3*(6+i)+1] = 0.;
+		Bprime[(3*7+6)*2+3*(6+i)+2] = 0.;
+	}
+
+	for(i=0;i<6;i++){ //last column not for the bubble function
+		Bprime[(3*7+6)*0+7*3+i] = 0.;
+		Bprime[(3*7+6)*1+7*3+i] = 0.;
+		Bprime[(3*7+6)*2+7*3+i] = 0.;
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::GetBprimeSSAFSTria(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute Bprime  matrix. Bprime=[Bprime1 Bprime2 Bprime3] where Bprimei is of size 3*2.
+	 * For node i, Bprimei can be expressed in the actual coordinate system
+	 * by:
+	 *       Bprimei=[  dN/dx    0   ]
+	 *               [    0    dN/dy ]
+	 *               [  dN/dy  dN/dx ]
+	 N               [  dN/dx  dN/dy ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume Bprime has been allocated already, of size: 3x(2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions*/
+	IssmDouble* dbasis=xNew<IssmDouble>(2*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build Bprime: */
+	for(int i=0;i<numnodes;i++){
+		Bprime[2*numnodes*0+2*i+0] = dbasis[0*numnodes+i];
+		Bprime[2*numnodes*0+2*i+1] = 0.;
+		Bprime[2*numnodes*1+2*i+0] = 0.;
+		Bprime[2*numnodes*1+2*i+1] = dbasis[1*numnodes+i];
+		Bprime[2*numnodes*2+2*i+0] = dbasis[1*numnodes+i];
+		Bprime[2*numnodes*2+2*i+1] = dbasis[0*numnodes+i];
+		Bprime[2*numnodes*3+2*i+0] = dbasis[0*numnodes+i];
+		Bprime[2*numnodes*3+2*i+1] = dbasis[1*numnodes+i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBSSAFS(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3 B4 B5 B6] where Bi is of size 5*2.
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by:
+	 *       Bi=[ dh/dx          0       0   0 ]
+	 *          [   0           dh/dy    0   0 ]
+	 *          [ 1/2*dh/dy  1/2*dh/dx   0   0 ]
+	 *          [   0            0       0   h ]
+	 * where h is the interpolation function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 5x(2*NUMNODESP1)
+	 */
+
+	int i;
+	IssmDouble dbasismini[3][7];
+	IssmDouble basis[6];
+
+	/*Get dbasis in actual coordinate system: */
+	element->NodalFunctionsMINIDerivatives(&dbasismini[0][0],xyz_list, gauss);
+	element->NodalFunctionsP1(basis,gauss);
+
+	/*Build B: */
+	for(i=0;i<6;i++){
+		B[(3*7+6)*0+3*i+0] = dbasismini[0][i];
+		B[(3*7+6)*0+3*i+1] = 0.;
+		B[(3*7+6)*0+3*i+2] = 0.;
+		B[(3*7+6)*1+3*i+0] = 0.;
+		B[(3*7+6)*1+3*i+1] = dbasismini[1][i];
+		B[(3*7+6)*1+3*i+2] = 0.;
+		B[(3*7+6)*2+3*i+0] = 0.5*dbasismini[1][i];
+		B[(3*7+6)*2+3*i+1] = 0.5*dbasismini[0][i];
+		B[(3*7+6)*2+3*i+2] = 0.;
+		B[(3*7+6)*3+3*i+0] = 0.;
+		B[(3*7+6)*3+3*i+1] = 0.;
+		B[(3*7+6)*3+3*i+2] = 0.;
+	}
+	for(i=0;i<1;i++){
+		B[(3*7+6)*0+3*(6+i)+0] = 0.;
+		B[(3*7+6)*0+3*(6+i)+1] = 0.;
+		B[(3*7+6)*0+3*(6+i)+2] = 0.;
+		B[(3*7+6)*1+3*(6+i)+0] = 0.;
+		B[(3*7+6)*1+3*(6+i)+1] = 0.;
+		B[(3*7+6)*1+3*(6+i)+2] = 0.;
+		B[(3*7+6)*2+3*(6+i)+0] = 0.;
+		B[(3*7+6)*2+3*(6+i)+1] = 0.;
+		B[(3*7+6)*2+3*(6+i)+2] = 0.;
+		B[(3*7+6)*3+3*(6+i)+0] = 0.;
+		B[(3*7+6)*3+3*(6+i)+1] = 0.;
+		B[(3*7+6)*3+3*(6+i)+2] = 0.;
+	}
+
+	for(i=0;i<6;i++){ //last column not for the bubble function
+		B[(3*7+6)*0+7*3+i] = 0;
+		B[(3*7+6)*1+7*3+i] = 0;
+		B[(3*7+6)*2+7*3+i] = 0;
+		B[(3*7+6)*3+7*3+i] = basis[i];
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::GetBSSAFSTria(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3] where Bi is of size 3*2.
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by:
+	 *       Bi=[   dN/dx         0     ]
+	 *          [       0       dN/dy   ]
+	 *          [  1/2*dN/dy  1/2*dN/dx ]
+	 * where N is the finiteelement function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 3x(2*numnodes)
+	 */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions derivatives*/
+	IssmDouble* dbasis=xNew<IssmDouble>(2*numnodes);
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B': */
+	for(int i=0;i<numnodes;i++){
+		B[2*numnodes*0+2*i+0] = dbasis[0*numnodes+i];
+		B[2*numnodes*0+2*i+1] = 0.;
+		B[2*numnodes*1+2*i+0] = 0.;
+		B[2*numnodes*1+2*i+1] = dbasis[1*numnodes+i];
+		B[2*numnodes*2+2*i+0] = 0.5*dbasis[1*numnodes+i];
+		B[2*numnodes*2+2*i+1] = 0.5*dbasis[0*numnodes+i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetBSSAHO(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. B=[B1 B2 B3 B4 B5 B6] where Bi is of size 3*2.
+	 * For node i, Bi can be expressed in the actual coordinate system
+	 * by:
+	 *       Bi=[ dh/dx          0      ]
+	 *          [   0           dh/dy   ]
+	 *          [ 1/2*dh/dy  1/2*dh/dx  ]
+	 * where h is the interpolation function for node i.
+	 *
+	 * We assume B has been allocated already, of size: 5x(2*NUMNODESP1)
+	 */
+
+	int numnodes = element->GetNumberOfNodes();
+	IssmDouble* dbasis=xNew<IssmDouble>(3*numnodes);
+
+	/*Get dbasis in actual coordinate system: */
+	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		B[2*numnodes*0+2*i+0] = dbasis[0*numnodes+i];
+		B[2*numnodes*0+2*i+1] = 0.;
+		B[2*numnodes*1+2*i+0] = 0.;
+		B[2*numnodes*1+2*i+1] = dbasis[1*numnodes+i];
+		B[2*numnodes*2+2*i+0] = .5*dbasis[1*numnodes+i];
+		B[2*numnodes*2+2*i+1] = .5*dbasis[0*numnodes+i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(dbasis);
+}/*}}}*/
+void           StressbalanceAnalysis::GetLprimeFSSSA(IssmDouble* LprimeFS,Element* element,IssmDouble* xyz_list,Gauss* gauss_in){/*{{{*/
+	/* Compute Lprime  matrix. Lprime=[Lp1 Lp2 Lp3] where Lpi is square and of size numdof.
+	 * For node i, Lpi can be expressed in the actual coordinate system
+	 * by:
+	 *       Lpi=[ h    0 ]
+	 *		       [ 0    h ]
+	 *		       [ h    0 ]
+	 *		       [ 0    h ]
+	 * where h is the interpolation function for node i.
+	 */
+	int num_dof=2;
+	IssmDouble basis[3];
+
+	/*Cast gauss to GaussPenta*/
+	_assert_(gauss_in->Enum()==GaussPentaEnum);
+	GaussPenta* gauss = xDynamicCast<GaussPenta*>(gauss_in);
+
+	/*Get basis in actual coordinate system: */
+	basis[0]=gauss->coord1*(1-gauss->coord4)/2.0;
+	basis[1]=gauss->coord2*(1-gauss->coord4)/2.0;
+	basis[2]=gauss->coord3*(1-gauss->coord4)/2.0;
+
+	/*Build LprimeFS: */
+	for(int i=0;i<3;i++){
+		LprimeFS[num_dof*3*0+num_dof*i+0] = basis[i];
+		LprimeFS[num_dof*3*0+num_dof*i+1] = 0.;
+		LprimeFS[num_dof*3*1+num_dof*i+0] = 0.;
+		LprimeFS[num_dof*3*1+num_dof*i+1] = basis[i];
+		LprimeFS[num_dof*3*2+num_dof*i+0] = basis[i];
+		LprimeFS[num_dof*3*2+num_dof*i+1] = 0.;
+		LprimeFS[num_dof*3*3+num_dof*i+0] = 0.;
+		LprimeFS[num_dof*3*3+num_dof*i+1] = basis[i];
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::GetLprimeSSAFS(IssmDouble* LprimeFS,Element* element,IssmDouble* xyz_list,Gauss* gauss_in){/*{{{*/
+	/* Compute Lprime  matrix. Lprime=[Lp1 Lp2 Lp3] where Lpi is square and of size numdof.
+	 * For node i, Lpi can be expressed in the actual coordinate system
+	 * by:
+	 *       Lpi=[ h    0    0   0]
+	 *		       [ 0    h    0   0]
+	 *		       [ 0    0    h   0]
+	 *		       [ 0    0    h   0]
+	 *		       [ 0    0  dh/dz 0]
+	 *		       [ 0    0  dh/dz 0]
+	 *           [ 0    0    0   h]
+	 *           [ 0    0    0   h]
+	 * where h is the interpolation function for node i.
+	 */
+	int num_dof=3;
+	int num_dof_vel=3*7;
+	int num_dof_total=3*7+1*6;
+	IssmDouble basis[3];
+	IssmDouble dbasis[3][6];
+
+	/*Cast gauss to GaussPenta*/
+	_assert_(gauss_in->Enum()==GaussPentaEnum);
+	GaussPenta* gauss = xDynamicCast<GaussPenta*>(gauss_in);
+
+	/*Get basis in actual coordinate system: */
+	basis[0]=gauss->coord1*(1-gauss->coord4)/2.0;
+	basis[1]=gauss->coord2*(1-gauss->coord4)/2.0;
+	basis[2]=gauss->coord3*(1-gauss->coord4)/2.0;
+
+	element->NodalFunctionsP1Derivatives(&dbasis[0][0],xyz_list,gauss);
+
+	/*Build LprimeFS: */
+	for(int i=0;i<3;i++){
+		LprimeFS[num_dof_total*0+num_dof*i+0] = basis[i];
+		LprimeFS[num_dof_total*0+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*0+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*1+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*1+num_dof*i+1] = basis[i];
+		LprimeFS[num_dof_total*1+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*2+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*2+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*2+num_dof*i+2] = basis[i];
+		LprimeFS[num_dof_total*3+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*3+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*3+num_dof*i+2] = basis[i];
+		LprimeFS[num_dof_total*4+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*4+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*4+num_dof*i+2] = dbasis[2][i];
+		LprimeFS[num_dof_total*5+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*5+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*5+num_dof*i+2] = dbasis[2][i];
+		LprimeFS[num_dof_total*6+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*6+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*6+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*7+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*7+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*7+num_dof*i+2] = 0.;
+	}
+	for(int i=3;i<7;i++){
+		LprimeFS[num_dof_total*0+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*0+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*0+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*1+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*1+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*1+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*2+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*2+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*2+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*3+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*3+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*3+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*4+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*4+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*4+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*5+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*5+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*5+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*6+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*6+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*6+num_dof*i+2] = 0.;
+		LprimeFS[num_dof_total*7+num_dof*i+0] = 0.;
+		LprimeFS[num_dof_total*7+num_dof*i+1] = 0.;
+		LprimeFS[num_dof_total*7+num_dof*i+2] = 0.;
+	}
+	for(int i=0;i<3;i++){
+		LprimeFS[num_dof_total*0+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*1+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*2+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*3+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*4+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*5+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*6+num_dof_vel+i] = basis[i];
+		LprimeFS[num_dof_total*7+num_dof_vel+i] = basis[i];
+	}
+	for(int i=3;i<6;i++){
+		LprimeFS[num_dof_total*0+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*1+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*2+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*3+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*4+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*5+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*6+num_dof_vel+i] = 0.;
+		LprimeFS[num_dof_total*7+num_dof_vel+i] = 0.;
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::GetLFSSSA(IssmDouble* LFS,Element* element,Gauss* gauss_in){/*{{{*/
+	/* Compute L  matrix. L=[L1 L2 L3] where Li is square and of size numdof.
+	 * For node i, Li can be expressed in the actual coordinate system
+	 * by:
+	 *       Li=[ h    0    0 ]
+	 *	 	      [ 0    h    0 ]
+	 *		      [ 0    0    h ]
+	 *		      [ 0    0    h ]
+	 * where h is the interpolation function for node i.
+	 */
+
+	int num_dof=3;
+	IssmDouble basis[3];
+
+	/*Cast gauss to GaussPenta*/
+	_assert_(gauss_in->Enum()==GaussPentaEnum);
+	GaussPenta* gauss = xDynamicCast<GaussPenta*>(gauss_in);
+
+	/*Get basis in actual coordinate system: */
+	basis[0]=gauss->coord1*(1-gauss->coord4)/2.0;
+	basis[1]=gauss->coord2*(1-gauss->coord4)/2.0;
+	basis[2]=gauss->coord3*(1-gauss->coord4)/2.0;
+
+	/*Build LFS: */
+	for(int i=0;i<3;i++){
+		LFS[num_dof*3*0+num_dof*i+0] = basis[i];
+		LFS[num_dof*3*0+num_dof*i+1] = 0.;
+		LFS[num_dof*3*0+num_dof*i+2] = 0.;
+		LFS[num_dof*3*1+num_dof*i+0] = 0.;
+		LFS[num_dof*3*1+num_dof*i+1] = basis[i];
+		LFS[num_dof*3*1+num_dof*i+2] = 0.;
+		LFS[num_dof*3*2+num_dof*i+0] = 0.;
+		LFS[num_dof*3*2+num_dof*i+1] = 0.;
+		LFS[num_dof*3*2+num_dof*i+2] = basis[i];
+		LFS[num_dof*3*3+num_dof*i+0] = 0.;
+		LFS[num_dof*3*3+num_dof*i+1] = 0.;
+		LFS[num_dof*3*3+num_dof*i+2] = basis[i];
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::GetLSSAFS(IssmDouble* LFS,Element* element,Gauss* gauss_in){/*{{{*/
+	/*
+	 * Compute L  matrix. L=[L1 L2 L3] where Li is square and of size numdof.
+	 * For node i, Li can be expressed in the actual coordinate system
+	 * by:
+	 *       Li=[ h    0 ]
+	 *	 	      [ 0    h ]
+	 *	 	      [ h    0 ]
+	 *	 	      [ 0    h ]
+	 *	 	      [ h    0 ]
+	 *	 	      [ 0    h ]
+	 *	 	      [ h    0 ]
+	 *	 	      [ 0    h ]
+	 * where h is the interpolation function for node i.
+	 */
+
+	int num_dof=2;
+	IssmDouble basis[3];
+
+	/*Cast gauss to GaussPenta*/
+	_assert_(gauss_in->Enum()==GaussPentaEnum);
+	GaussPenta* gauss = xDynamicCast<GaussPenta*>(gauss_in);
+
+	/*Get basis in actual coordinate system: */
+	basis[0]=gauss->coord1*(1-gauss->coord4)/2.0;
+	basis[1]=gauss->coord2*(1-gauss->coord4)/2.0;
+	basis[2]=gauss->coord3*(1-gauss->coord4)/2.0;
+
+	/*Build LFS: */
+	for(int i=0;i<3;i++){
+		LFS[num_dof*3*0+num_dof*i+0] = basis[i];
+		LFS[num_dof*3*0+num_dof*i+1] = 0;
+		LFS[num_dof*3*1+num_dof*i+0] = 0;
+		LFS[num_dof*3*1+num_dof*i+1] = basis[i];
+		LFS[num_dof*3*2+num_dof*i+0] = basis[i];
+		LFS[num_dof*3*2+num_dof*i+1] = 0;
+		LFS[num_dof*3*3+num_dof*i+0] = 0;
+		LFS[num_dof*3*3+num_dof*i+1] = basis[i];
+		LFS[num_dof*3*4+num_dof*i+0] = basis[i];
+		LFS[num_dof*3*4+num_dof*i+1] = 0;
+		LFS[num_dof*3*5+num_dof*i+0] = 0;
+		LFS[num_dof*3*5+num_dof*i+1] = basis[i];
+		LFS[num_dof*3*6+num_dof*i+0] = basis[i];
+		LFS[num_dof*3*6+num_dof*i+1] = 0;
+		LFS[num_dof*3*7+num_dof*i+0] = 0;
+		LFS[num_dof*3*7+num_dof*i+1] = basis[i];
+	}
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolutionHOFS(IssmDouble* solution,Element* element){/*{{{*/
+
+	int         i;
+	IssmDouble  rho_ice,g,FSreconditioning;
+	int*        doflistHO  = NULL;
+	int*        doflistFSv = NULL;
+	int*        doflistFSp = NULL;
+
+	/*Only works with Penta for now*/
+	if(element->ObjectEnum()!=PentaEnum) _error_("Coupling not supported for "<<EnumToStringx(element->ObjectEnum()));
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes  = 6;
+	int numdofHO  = 6*2;
+	int numdofFSv = 6*3;
+	int numdofFSp = 6;
+
+	/*Fetch dof list and allocate solution vectors*/
+	element->GetDofListLocal(&doflistFSv,FSvelocityEnum,GsetEnum);
+	element->GetDofListLocal(&doflistHO, HOApproximationEnum, GsetEnum);
+	element->GetDofListLocalPressure(&doflistFSp,GsetEnum);
+	IssmDouble* HOvalues  = xNew<IssmDouble>(numdofHO);
+	IssmDouble* FSvalues  = xNew<IssmDouble>(numdofFSv+numdofFSp);
+	IssmDouble* vx        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vy        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vz        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vzHO      = xNew<IssmDouble>(numnodes);
+	IssmDouble* vzFS      = xNew<IssmDouble>(numnodes);
+	IssmDouble* vel       = xNew<IssmDouble>(numnodes);
+	IssmDouble* pressure  = xNew<IssmDouble>(numnodes);
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(2*numnodes);
+	for(i=0;i<numnodes;i++) cs_list[i]          = XYZEnum;
+	for(i=0;i<numnodes;i++) cs_list[numnodes+i] = PressureEnum;
+
+	/*Use the dof list to index into the solution vector: */
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	for(i=0;i<numdofHO ;i++) HOvalues[i]=solution[doflistHO[i]];
+	for(i=0;i<numdofFSv;i++) FSvalues[i]=solution[doflistFSv[i]];
+	for(i=0;i<numdofFSp;i++) FSvalues[numdofFSv+i]=solution[doflistFSp[i]];
+
+	/*Transform solution in Cartesian Space*/
+	element->TransformSolutionCoord(FSvalues,2*numnodes,cs_list);
+	element->TransformSolutionCoord(HOvalues,numnodes,XYEnum);
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+	for(i=0;i<numnodes;i++){
+		vx[i]       = FSvalues[i*3+0]+HOvalues[i*2+0];
+		vy[i]       = FSvalues[i*3+1]+HOvalues[i*2+1];
+		vzFS[i]     = FSvalues[i*3+2];
+		pressure[i] = FSvalues[numnodes*3+i]*FSreconditioning;
+
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(vx[i]))       _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vx[i]))       _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(vy[i]))       _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vy[i]))       _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(vzFS[i]))     _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vzFS[i]))     _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(pressure[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(pressure[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Get Vz and compute vel*/
+	element->GetInputListOnVertices(vzHO,VzHOEnum);
+	for(i=0;i<numnodes;i++){
+		vz[i] = vzHO[i]+vzFS[i];
+		vel[i]= sqrt(vx[i]*vx[i] + vy[i]*vy[i] + vz[i]*vz[i]);
+	}
+
+	/*Add vx and vy as inputs to element: */
+	element->AddInput(VxEnum,vx,P1Enum);
+	element->AddInput(VyEnum,vy,P1Enum);
+	element->AddInput(VzEnum,vz,P1Enum);
+	element->AddInput(VzFSEnum,vzFS,P1Enum);
+	element->AddInput(VelEnum,vel,P1Enum);
+	element->AddInput(PressureEnum,pressure,P1Enum);
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(vel);
+	xDelete<IssmDouble>(vz);
+	xDelete<IssmDouble>(vzHO);
+	xDelete<IssmDouble>(vzFS);
+	xDelete<IssmDouble>(vy);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(FSvalues);
+	xDelete<IssmDouble>(HOvalues);
+	xDelete<int>(doflistFSp);
+	xDelete<int>(doflistFSv);
+	xDelete<int>(doflistHO);
+	xDelete<int>(cs_list);
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolutionSSAFS(IssmDouble* solution,Element* element){/*{{{*/
+
+	int         i;
+	IssmDouble  rho_ice,g,FSreconditioning;
+	int*        doflistSSA  = NULL;
+	int*        doflistFSv = NULL;
+	int*        doflistFSp = NULL;
+
+	/*we have to add results of this element for FS and results from the element
+	 * at base for SSA, so we need to have the pointer toward the basal element*/
+	Element* basalelement=element->GetBasalElement();
+	if(basalelement->ObjectEnum()!=PentaEnum){
+		_error_("Coupling not supported for "<<EnumToStringx(basalelement->ObjectEnum()));
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes  = 6;
+	int numdof2d  = numnodes;
+	int numdofSSA = 6*2;
+	int numdofFSv = 6*3;
+	int numdofFSp = 6;
+
+	/*Fetch dof list and allocate solution vectors*/
+	element->GetDofListLocal(&doflistFSv,FSvelocityEnum,GsetEnum);
+	element->GetDofListLocalPressure(&doflistFSp,GsetEnum);
+	basalelement->GetDofListLocal(&doflistSSA, SSAApproximationEnum, GsetEnum);
+	IssmDouble* SSAvalues  = xNew<IssmDouble>(numdofSSA);
+	IssmDouble* FSvalues  = xNew<IssmDouble>(numdofFSv+numdofFSp);
+	IssmDouble* vx        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vy        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vz        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vzSSA      = xNew<IssmDouble>(numnodes);
+	IssmDouble* vzFS      = xNew<IssmDouble>(numnodes);
+	IssmDouble* vel       = xNew<IssmDouble>(numnodes);
+	IssmDouble* pressure  = xNew<IssmDouble>(numnodes);
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(2*numnodes);
+	for(i=0;i<numnodes;i++) cs_list[i]          = XYZEnum;
+	for(i=0;i<numnodes;i++) cs_list[numnodes+i] = PressureEnum;
+
+	/*Use the dof list to index into the solution vector: */
+	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	for(i=0;i<numdof2d;i++){
+		SSAvalues[i]          = solution[doflistSSA[i]];
+		SSAvalues[i+numdof2d] = solution[doflistSSA[i]];
+	}
+	for(i=0;i<numdofFSv;i++) FSvalues[i]=solution[doflistFSv[i]];
+	for(i=0;i<numdofFSp;i++) FSvalues[numdofFSv+i]=solution[doflistFSp[i]];
+
+	/*Transform solution in Cartesian Space*/
+	element->TransformSolutionCoord(FSvalues,2*numnodes,cs_list);
+	element->TransformSolutionCoord(SSAvalues,numnodes,XYEnum);
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+
+	for(i=0;i<numnodes;i++){
+		vx[i]       = FSvalues[i*3+0]+SSAvalues[i*2+0];
+		vy[i]       = FSvalues[i*3+1]+SSAvalues[i*2+1];
+		vzFS[i]     = FSvalues[i*3+2];
+		pressure[i] = FSvalues[numnodes*3+i]*FSreconditioning;
+
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(vx[i]))       _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vx[i]))       _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(vy[i]))       _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vy[i]))       _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(vzFS[i]))     _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vzFS[i]))     _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(pressure[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(pressure[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Get Vz and compute vel*/
+	element->GetInputListOnVertices(vzSSA,VzSSAEnum);
+	for(i=0;i<numnodes;i++){
+		vz[i] = vzSSA[i]+vzFS[i];
+		vel[i]= sqrt(vx[i]*vx[i] + vy[i]*vy[i] + vz[i]*vz[i]);
+	}
+
+	/*Add vx and vy as inputs to element: */
+	element->AddInput(VxEnum,vx,P1Enum);
+	element->AddInput(VyEnum,vy,P1Enum);
+	element->AddInput(VzEnum,vz,P1Enum);
+	element->AddInput(VzFSEnum,vzFS,P1Enum);
+	element->AddInput(VelEnum,vel,P1Enum);
+	element->AddInput(PressureEnum,pressure,P1Enum);
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(vel);
+	xDelete<IssmDouble>(vz);
+	xDelete<IssmDouble>(vzSSA);
+	xDelete<IssmDouble>(vzFS);
+	xDelete<IssmDouble>(vy);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(FSvalues);
+	xDelete<IssmDouble>(SSAvalues);
+	xDelete<int>(doflistFSp);
+	xDelete<int>(doflistFSv);
+	xDelete<int>(doflistSSA);
+	xDelete<int>(cs_list);
+}/*}}}*/
+void           StressbalanceAnalysis::InputUpdateFromSolutionSSAHO(IssmDouble* solution,Element* element){/*{{{*/
+
+	int         i,domaintype;
+	IssmDouble  rho_ice,g;
+	int*        SSAdoflist = NULL;
+	int*        HOdoflist  = NULL;
+	IssmDouble* xyz_list   = NULL;
+
+	/*we have to add results of this element for HO and results from the element
+	 * at base for SSA, so we need to have the pointer toward the basal element*/
+	Element* basalelement=element->GetBasalElement();
+	if(basalelement->ObjectEnum()!=PentaEnum){
+		_error_("Coupling not supported for "<<EnumToStringx(basalelement->ObjectEnum()));
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*2;
+	int numdof2d = numnodes;
+
+	/*Fetch dof list and allocate solution vectors*/
+	basalelement->GetDofListLocal(&SSAdoflist,SSAApproximationEnum,GsetEnum);
+	element     ->GetDofListLocal(&HOdoflist, HOApproximationEnum, GsetEnum);
+	IssmDouble* HOvalues  = xNew<IssmDouble>(numdof);
+	IssmDouble* SSAvalues = xNew<IssmDouble>(numdof);
+	IssmDouble* vx        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vy        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vz        = xNew<IssmDouble>(numnodes);
+	IssmDouble* vel       = xNew<IssmDouble>(numnodes);
+	IssmDouble* pressure  = xNew<IssmDouble>(numnodes);
+	IssmDouble* surface   = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numdof2d;i++){
+		HOvalues[i]  = solution[HOdoflist[i]];
+		SSAvalues[i] = solution[SSAdoflist[i]];
+	}
+	for(i=numdof2d;i<numdof;i++){
+		HOvalues[i]  = solution[HOdoflist[i]];
+		SSAvalues[i] = SSAvalues[i-numdof2d];
+	}
+
+	/*Transform solution in Cartesian Space*/
+	basalelement->TransformSolutionCoord(SSAvalues,XYEnum);
+	element->TransformSolutionCoord(HOvalues,XYEnum);
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+	for(i=0;i<numnodes;i++){
+		vx[i]=SSAvalues[i*2+0]+HOvalues[i*2+0];
+		vy[i]=SSAvalues[i*2+1]+HOvalues[i*2+1];
+
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Get Vz and compute vel*/
+	element->GetInputListOnNodes(&vz[0],VzEnum,0.);
+	for(i=0;i<numnodes;i++) vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i] + vz[i]*vz[i]);
+
+	/*For pressure: we have not computed pressure in this analysis, for this element. We are in 2D,
+	 *so the pressure is just the pressure at the bedrock: */
+	rho_ice = element->FindParam(MaterialsRhoIceEnum);
+	g       = element->FindParam(ConstantsGEnum);
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetInputListOnNodes(&surface[0],SurfaceEnum);
+	for(i=0;i<numnodes;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
+
+	/*Add vx and vy as inputs to element: */
+	element->AddInput(VxEnum,vx,P1Enum);
+	element->AddInput(VyEnum,vy,P1Enum);
+	element->AddInput(VelEnum,vel,P1Enum);
+	element->AddInput(PressureEnum,pressure,P1Enum);
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(surface);
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(vel);
+	xDelete<IssmDouble>(vz);
+	xDelete<IssmDouble>(vy);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(SSAvalues);
+	xDelete<IssmDouble>(HOvalues);
+	xDelete<int>(SSAdoflist);
+	xDelete<int>(HOdoflist);
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/StressbalanceAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/StressbalanceAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/StressbalanceAnalysis.h	(revision 27955)
@@ -0,0 +1,153 @@
+/*! \file StressbalanceAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _StressbalanceAnalysis_
+#define _StressbalanceAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class StressbalanceAnalysis: public Analysis{
+
+  public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GetSolutionFromInputsHoriz(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+
+		/*SSA*/
+		ElementMatrix* CreateJacobianMatrixSSA(Element* element);
+		ElementMatrix* CreateKMatrixSSA(Element* element);
+		ElementMatrix* CreateKMatrixSSAFriction(Element* element);
+		ElementMatrix* CreateKMatrixSSALateralFriction(Element* element);
+		ElementMatrix* CreateKMatrixSSAViscous(Element* element);
+		ElementVector* CreatePVectorSSA(Element* element);
+		ElementVector* CreatePVectorSSAFront(Element* element);
+		ElementVector* CreatePVectorSSADrivingStress(Element* element);
+		void           GetBSSA(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBSSAFriction(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBSSAprime(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           InputUpdateFromSolutionSSA(IssmDouble* solution,Element* element);
+		void				ComputeSurfaceSlope(IssmDouble* slope,Gauss* gauss_DG,Gauss* gauss_CG,int point1,IssmDouble fraction1,IssmDouble fraction2,int ig,int dim,Element* element);
+		void				NodalFunctionsDerivativesRGB(IssmDouble* dbasis_subelem,Gauss* gauss_DG,Gauss* gauss_CG,int point1,IssmDouble fraction1,IssmDouble fraction2,int ig,int dim,Element* element);
+
+		/*L1L2*/
+		ElementMatrix* CreateKMatrixL1L2(Element* element);
+		ElementMatrix* CreateKMatrixL1L2Friction(Element* element);
+		ElementMatrix* CreateKMatrixL1L2Viscous(Element* element);
+		ElementVector* CreatePVectorL1L2(Element* element);
+		ElementVector* CreatePVectorL1L2Front(Element* element);
+		ElementVector* CreatePVectorL1L2DrivingStress(Element* element);
+		void           InputUpdateFromSolutionL1L2(IssmDouble* solution,Element* element);
+		/*MOLHO*/
+		ElementMatrix* CreateKMatrixMOLHO(Element* element);
+		ElementMatrix* CreateKMatrixMOLHOFriction(Element* element);
+		ElementMatrix* CreateKMatrixMOLHOViscous(Element* element);
+		ElementVector* CreatePVectorMOLHO(Element* element);
+		ElementVector* CreatePVectorMOLHOFront(Element* element);
+		ElementVector* CreatePVectorMOLHODrivingStress(Element* element);
+		void           InputUpdateFromSolutionMOLHO(IssmDouble* solution,Element* element);
+		void           GetSolutionFromInputsMOLHO(Vector<IssmDouble>* solution,Element* element);
+		/*HO*/
+		ElementMatrix* CreateJacobianMatrixHO(Element* element);
+		ElementMatrix* CreateKMatrixHO(Element* element);
+		ElementMatrix* CreateKMatrixHOFriction(Element* element);
+		ElementMatrix* CreateKMatrixHOViscous(Element* element);
+		ElementVector* CreatePVectorHO(Element* element);
+		ElementVector* CreatePVectorHOFront(Element* element);
+		ElementVector* CreatePVectorHODrivingStress(Element* element);
+		void           GetBHO(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBHOFriction(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBHOprime(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           InputUpdateFromSolutionHO(IssmDouble* solution,Element* element);
+		/*FS*/
+		ElementVector* CreateDVectorFS(Element* element);
+		ElementMatrix* CreateJacobianMatrixFS(Element* element);
+		ElementMatrix* CreateKMatrixFS(Element* element);
+		ElementMatrix* CreateKMatrixFSFriction(Element* element);
+		ElementMatrix* CreateKMatrixFSFrictionNitsche(Element* element);
+		ElementMatrix* CreateKMatrixFSShelf(Element* element);
+		ElementMatrix* CreateKMatrixFSViscous(Element* element);
+		ElementMatrix* CreateKMatrixFSViscousGLS(Element* element);
+		ElementMatrix* CreateKMatrixFSViscousLA(Element* element);
+		ElementMatrix* CreateKMatrixFSViscousXTH(Element* element);
+		ElementMatrix* CreatePressureMassMatrix(Element* element);
+		ElementMatrix* CreateSchurPrecondMatrix(Element* element);
+		ElementVector* CreatePVectorFS(Element* element);
+		ElementVector* CreatePVectorFSFriction(Element* element);
+		ElementVector* CreatePVectorFSFront(Element* element);
+		ElementVector* CreatePVectorFSShelf(Element* element);
+		ElementVector* CreatePVectorFSStress(Element* element);
+		ElementVector* CreatePVectorFSViscous(Element* element);
+		ElementVector* CreatePVectorFSViscousGLS(Element* element);
+		ElementVector* CreatePVectorFSViscousLA(Element* element);
+		ElementVector* CreatePVectorFSViscousXTH(Element* element);
+		void           GetBFS(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBFSFriction(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBFSprime(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBFSprimeUzawa(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBFSprimevel(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBFSUzawa(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBFSvel(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetCFS(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetCFSprime(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetSolutionFromInputsFS(Vector<IssmDouble>* solution,Element* element);
+		void           InitializeXTH(Elements* elements,Parameters* parameters);
+		void           InputUpdateFromSolutionFS(IssmDouble* solution,Element* element);
+		void           InputUpdateFromSolutionFSXTH_d(Elements* elements,Parameters* parameters);
+		void           InputUpdateFromSolutionFSXTH_tau(Elements* elements,Parameters* parameters);
+
+		/*Coupling*/
+		ElementMatrix* CreateKMatrixCouplingHOFS(Element* element);
+		ElementMatrix* CreateKMatrixCouplingSSAFS(Element* element);
+		ElementMatrix* CreateKMatrixCouplingSSAFSFriction(Element* element);
+		ElementMatrix* CreateKMatrixCouplingSSAFSViscous(Element* element);
+		ElementMatrix* CreateKMatrixCouplingSSAHO(Element* element);
+		ElementMatrix* CreateKMatrixCouplingSSAHOFriction(Element* element);
+		ElementMatrix* CreateKMatrixCouplingSSAHOViscous(Element* element);
+		ElementMatrix* CreateKMatrixHOFS(Element* element);
+		ElementMatrix* CreateKMatrixSSAFS(Element* element);
+		ElementMatrix* CreateKMatrixSSAHO(Element* element);
+		ElementMatrix* CreateKMatrixSSA3d(Element* element);
+		ElementMatrix* CreateKMatrixSSA3dFriction(Element* element);
+		ElementMatrix* CreateKMatrixSSA3dViscous(Element* element);
+		ElementVector* CreatePVectorSSAFS(Element* element);
+		ElementVector* CreatePVectorSSAHO(Element* element);
+		ElementVector* CreatePVectorCouplingSSAFS(Element* element);
+		ElementVector* CreatePVectorCouplingSSAFSFriction(Element* element);
+		ElementVector* CreatePVectorCouplingSSAFSViscous(Element* element);
+		ElementVector* CreatePVectorHOFS(Element* element);
+		ElementVector* CreatePVectorCouplingHOFS(Element* element);
+		ElementVector* CreatePVectorCouplingHOFSFriction(Element* element);
+		ElementVector* CreatePVectorCouplingHOFSViscous(Element* element);
+		void           GetBprimeSSAFS(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBprimeSSAFSTria(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBSSAFS(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBSSAFSTria(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetBSSAHO(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetLFSSSA(IssmDouble* L,Element* element,Gauss* gauss);
+		void           GetLprimeFSSSA(IssmDouble* Lprime,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetLprimeSSAFS(IssmDouble* Lprime,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+		void           GetLSSAFS(IssmDouble* L,Element* element,Gauss* gauss);
+		void           InputUpdateFromSolutionHOFS(IssmDouble* solution,Element* element);
+		void           InputUpdateFromSolutionSSAFS(IssmDouble* solution,Element* element);
+		void           InputUpdateFromSolutionSSAHO(IssmDouble* solution,Element* element);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/StressbalanceSIAAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 27955)
@@ -0,0 +1,627 @@
+#include "./StressbalanceSIAAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+/*Model processing*/
+void StressbalanceSIAAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*Intermediaries*/
+	bool       isSIA,isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
+	iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
+	iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
+	iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO");
+	iomodel->FindConstant(&isHO,"md.flowequation.isHO");
+	iomodel->FindConstant(&isFS,"md.flowequation.isFS");
+
+	/*Now, is the flag isSIA on? otherwise, do nothing: */
+	if (!isSIA) return;
+
+	/*Do we have coupling*/
+	if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
+	 iscoupling = true;
+	else
+	 iscoupling = false;
+
+	/*If no coupling, call Regular IoModelToConstraintsx, else, OLD stuff, keep for now*/
+	if(!iscoupling){
+		IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvx",StressbalanceSIAAnalysisEnum,P1Enum,0);
+		IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvy",StressbalanceSIAAnalysisEnum,P1Enum,1);
+	}
+	else{
+		/*Fetch data: */
+		iomodel->FetchData(3,"md.stressbalance.spcvx","md.stressbalance.spcvy","md.flowequation.vertex_equation");
+
+		/*Initialize conunter*/
+		int count = 0;
+
+		/*vx and vy are spc'd if we are not on nodeonSIA: */
+		for(int i=0;i<iomodel->numberofvertices;i++){
+			/*keep only this partition's nodes:*/
+			if((iomodel->my_vertices[i])){
+				if (IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]))!=SIAApproximationEnum){
+
+					constraints->AddObject(new SpcStatic(count+1,i+1,0,0,StressbalanceSIAAnalysisEnum));
+					count++;
+
+					constraints->AddObject(new SpcStatic(count+1,i+1,1,0,StressbalanceSIAAnalysisEnum));
+					count++;
+				}
+				else{
+					if (!xIsNan<IssmDouble>(iomodel->Data("md.stressbalance.spcvx")[i])){
+						constraints->AddObject(new SpcStatic(count+1,i+1,0,iomodel->Data("md.stressbalance.spcvx")[i],StressbalanceSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+					}
+
+					if (!xIsNan<IssmDouble>(iomodel->Data("md.stressbalance.spcvy")[i])){
+						constraints->AddObject(new SpcStatic(count+1,i+1,1,iomodel->Data("md.stressbalance.spcvy")[i],StressbalanceSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
+						count++;
+					}
+				}
+			}
+		}
+	}
+
+	/*Free data: */
+	iomodel->DeleteData(3,"md.stressbalance.spcvx","md.stressbalance.spcvy","md.flowequation.vertex_equation");
+
+}/*}}}*/
+void StressbalanceSIAAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*No loads*/
+
+}/*}}}*/
+void StressbalanceSIAAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	/*Intermediaries*/
+	bool  isSIA;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
+
+	/*Now, is the flag isSIA on? otherwise, do nothing: */
+	if(!isSIA) return;
+
+	/*First create nodes*/
+	int    lid=0;
+	iomodel->FetchData(4,"md.flowequation.borderSSA","md.flowequation.borderFS","md.flowequation.vertex_equation","md.stressbalance.referential");
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	}
+
+	::CreateNodes(nodes,iomodel,StressbalanceSIAAnalysisEnum,P1Enum,SIAApproximationEnum);
+	for(Object* & object: nodes->objects){
+		Node* node=xDynamicCast<Node*>(object);
+		int   sid = node->Sid();
+		int approximation=IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[sid]));
+		if(approximation!=SIAApproximationEnum) node->Deactivate();
+	}
+	iomodel->DeleteData(6,"md.mesh.vertexonbase","md.mesh.vertexonsurface","md.flowequation.borderSSA","md.flowequation.borderFS","md.flowequation.vertex_equation","md.stressbalance.referential");
+
+}/*}}}*/
+int  StressbalanceSIAAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 2;
+}/*}}}*/
+void StressbalanceSIAAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Fetch data needed: */
+	bool   isSIA;
+	bool   ismovingfront;
+	iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
+	iomodel->FindConstant(&ismovingfront,"md.transient.ismovingfront");
+
+	/*Now, is the flag SIA on? otherwise, do nothing: */
+	if (!isSIA)return;
+
+	iomodel->FetchData(1,"md.flowequation.element_equation");
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			/*Need to know the type of approximation for this element*/
+			if(iomodel->Data("md.flowequation.element_equation")){
+				inputs->SetInput(ApproximationEnum,counter,IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[i])));
+			}
+			counter++;
+		}
+	}
+
+	/*Free data: */
+	iomodel->DeleteData(1,"md.flowequation.element_equation");
+
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
+	if(ismovingfront){
+		if(iomodel->domaintype!=Domain2DhorizontalEnum)
+			iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum); // required for updating active nodes
+	}
+
+	/*Friction*/
+	FrictionUpdateInputs(elements, inputs, iomodel);
+
+}/*}}}*/
+void StressbalanceSIAAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	/*Friction*/
+	FrictionUpdateParameters(parameters, iomodel);
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           StressbalanceSIAAnalysis::Core(FemModel* femmodel){/*{{{*/
+
+		if(VerboseSolution()) _printf0_("   computing SIA velocities\n");
+		femmodel->SetCurrentConfiguration(StressbalanceSIAAnalysisEnum);
+		solutionsequence_linear(femmodel);
+}/*}}}*/
+void           StressbalanceSIAAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+_error_("not implemented");
+}/*}}}*/
+ElementVector* StressbalanceSIAAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* StressbalanceSIAAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* StressbalanceSIAAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			return CreateKMatrix2D(element);
+		case Domain3DEnum:
+			return CreateKMatrix3D(element);
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}/*}}}*/
+ElementMatrix* StressbalanceSIAAnalysis::CreateKMatrix2D(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	IssmDouble connectivity;
+
+	/*Fetch number vertices for this element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke=element->NewElementMatrix();
+	for(int iv=0;iv<numvertices;iv++){
+		connectivity=(IssmDouble)element->VertexConnectivity(iv);
+		Ke->values[(2*iv+0)*2*numvertices+(2*iv+0)]=1./connectivity;
+		Ke->values[(2*iv+1)*2*numvertices+(2*iv+1)]=1./connectivity;
+	}
+
+	/*Clean up and return*/
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceSIAAnalysis::CreateKMatrix3D(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int         i0,i1,j0,j1,nodeup,nodedown,numsegments;
+	IssmDouble  slope[2],connectivity[2],one0,one1;
+	int        *pairindices = NULL;
+
+	/*Fetch number vertices for this element*/
+	int numvertices = element->GetNumberOfVertices();
+	int numdof      = 2*numvertices;
+
+	/*Initialize Element vector*/
+	ElementMatrix* Ke=element->NewElementMatrix();
+
+	element->VerticalSegmentIndices(&pairindices,&numsegments);
+	for(int is=0;is<numsegments;is++){
+		nodedown = pairindices[is*2+0];
+		nodeup   = pairindices[is*2+1];
+		connectivity[0]=(IssmDouble)element->VertexConnectivity(nodedown);
+		connectivity[1]=(IssmDouble)element->VertexConnectivity(nodeup);
+		one0=1./connectivity[0];
+		one1=1./connectivity[1];
+
+		/*2 dofs of first node*/
+		i0=2*nodedown;  i1=2*nodedown+1;
+		/*2 dofs of second node*/
+		j0=2*nodeup;    j1=2*nodeup+1;
+
+		/*Create matrix for these two nodes*/
+		if(element->IsOnBase() && element->IsOnSurface()){
+			Ke->values[i0*numdof+i0] = +one0;
+			Ke->values[i1*numdof+i1] = +one0;
+			Ke->values[j0*numdof+i0] = -one1;
+			Ke->values[j0*numdof+j0] = +one1;
+			Ke->values[j1*numdof+i1] = -one1;
+			Ke->values[j1*numdof+j1] = +one1;
+		}
+		else if(element->IsOnBase()){
+			Ke->values[i0*numdof+i0] = one0;
+			Ke->values[i1*numdof+i1] = one0;
+			Ke->values[j0*numdof+i0] = -2.*one1;
+			Ke->values[j0*numdof+j0] = +2.*one1;
+			Ke->values[j1*numdof+i1] = -2.*one1;
+			Ke->values[j1*numdof+j1] = +2.*one1;
+		}
+		else if(element->IsOnSurface()){
+			Ke->values[j0*numdof+i0] = -one1;
+			Ke->values[j0*numdof+j0] = +one1;
+			Ke->values[j1*numdof+i1] = -one1;
+			Ke->values[j1*numdof+j1] = +one1;
+		}
+		else{ //node is on two horizontal layers and beams include the values only once, so the have to use half of the connectivity
+			Ke->values[j0*numdof+i0] = -2.*one1;
+			Ke->values[j0*numdof+j0] = +2.*one1;
+			Ke->values[j1*numdof+i1] = -2.*one1;
+			Ke->values[j1*numdof+j1] = +2.*one1;
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(pairindices);
+	return Ke;
+}/*}}}*/
+ElementVector* StressbalanceSIAAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	int domaintype;
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			return CreatePVector2D(element);
+		case Domain3DEnum:
+			return CreatePVector3D(element);
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+}/*}}}*/
+ElementVector* StressbalanceSIAAnalysis::CreatePVector2D(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int        frictionlaw = 1;
+	IssmDouble ub,vb,slope2,drag,thickness,surface,connectivity;
+	IssmDouble slope[2];
+
+	/*Fetch number vertices for this element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize Element vector*/
+	ElementVector* pe=element->NewElementVector();
+
+	/*Retrieve all inputs and parameters*/
+	IssmDouble  rho_ice    = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  gravity    = element->FindParam(ConstantsGEnum);
+	IssmDouble  B,n;
+	Input* B_input         = element->GetInput(MaterialsRheologyBbarEnum);_assert_(B_input);
+	Input* n_input         = element->GetInput(MaterialsRheologyNEnum);   _assert_(n_input);
+	Input* slopex_input    = element->GetInput(SurfaceSlopeXEnum);        _assert_(slopex_input);
+	Input* slopey_input    = element->GetInput(SurfaceSlopeYEnum);        _assert_(slopey_input);
+	Input* thickness_input = element->GetInput(ThicknessEnum);            _assert_(thickness_input);
+	Input* surface_input   = element->GetInput(SurfaceEnum);              _assert_(surface_input);
+	Input* drag_input      = NULL;
+	if(frictionlaw!=5 && frictionlaw!=1){
+		drag_input = element->GetInput(FrictionCoefficientEnum);  _assert_(drag_input);
+	}
+
+	Gauss* gauss=element->NewGauss();
+	for(int iv=0;iv<numvertices;iv++){
+		gauss->GaussVertex(iv);
+
+		connectivity=(IssmDouble)element->VertexConnectivity(iv);
+
+		B_input->GetInputValue(&B,gauss);
+		n_input->GetInputValue(&n,gauss);
+		thickness_input->GetInputValue(&thickness,gauss);
+		surface_input->GetInputValue(&surface,gauss);
+		slopex_input->GetInputValue(&slope[0],gauss);
+		slopey_input->GetInputValue(&slope[1],gauss);
+		slope2=slope[0]*slope[0]+slope[1]*slope[1];
+
+		switch(frictionlaw){
+			case 1:
+				/*Payne 1995 (m = 1, B = 5e-3/yts = 1.58e-10  m/s/Pa*/
+				ub=-1.58*1.e-10*rho_ice*gravity*thickness*slope[0];
+				vb=-1.58*1.e-10*rho_ice*gravity*thickness*slope[1];
+				break;
+			case 2:
+				/*Ritz et al. 1996*/
+				drag_input->GetInputValue(&drag,gauss);
+				ub=drag*(rho_ice*gravity*thickness)*(rho_ice*gravity*thickness)*slope[0]/sqrt(slope2);
+				vb=drag*(rho_ice*gravity*thickness)*(rho_ice*gravity*thickness)*slope[1]/sqrt(slope2);
+				break;
+			case 3:
+				/*Rutt et al. 2009*/
+				drag_input->GetInputValue(&drag,gauss);
+				ub=-drag*rho_ice*gravity*thickness*slope[0];
+				vb=-drag*rho_ice*gravity*thickness*slope[1];
+				break;
+			case 4:
+				/*Henning Akesson*/
+				drag = -4e-15 * surface + 8.6e-12;
+				ub=-drag*rho_ice*gravity*thickness*slope[0];
+				vb=-drag*rho_ice*gravity*thickness*slope[1];
+				break;
+			case 6:
+				/*No sliding*/
+				ub=0.;
+				vb=0.;
+				break;
+			default:
+				_error_("Not supported yet");
+		}
+
+		pe->values[2*iv+0]=(ub-2.*pow(rho_ice*gravity,n)*pow(slope2,((n-1.)/2.))*pow(thickness,n+1.)/(pow(B,n)*(n+2))*slope[0])/connectivity;
+		pe->values[2*iv+1]=(vb-2.*pow(rho_ice*gravity,n)*pow(slope2,((n-1.)/2.))*pow(thickness,n+1.)/(pow(B,n)*(n+2))*slope[1])/connectivity;
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceSIAAnalysis::CreatePVector3D(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int         frictionlaw = 1;
+	int         nodeup,nodedown,numsegments;
+	IssmDouble  ub,vb,slope2,drag,surface,thickness,constant_part,z,Jdet;
+	IssmDouble  slope[2],connectivity[2],xyz_list_line[2][3];
+	IssmDouble *xyz_list = NULL;
+	int        *pairindices = NULL;
+
+	/*Fetch number vertices for this element*/
+	int numvertices = element->GetNumberOfVertices();
+
+	/*Initialize Element vector*/
+	ElementVector* pe=element->NewElementVector();
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	IssmDouble  rho_ice    = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  gravity    = element->FindParam(ConstantsGEnum);
+	IssmDouble B,n;
+	Input* B_input         = element->GetInput(MaterialsRheologyBEnum);   _assert_(B_input);
+	Input* n_input         = element->GetInput(MaterialsRheologyNEnum);   _assert_(n_input);
+	Input* surface_input   = element->GetInput(SurfaceEnum);              _assert_(surface_input);
+	Input* slopex_input    = element->GetInput(SurfaceSlopeXEnum);        _assert_(slopex_input);
+	Input* slopey_input    = element->GetInput(SurfaceSlopeYEnum);        _assert_(slopey_input);
+	Input* thickness_input = element->GetInput(ThicknessEnum);            _assert_(thickness_input);
+	Input* drag_input      = NULL;
+	Friction* friction     = NULL;
+	if(frictionlaw!=5 && frictionlaw!=1){
+		drag_input = element->GetInput(FrictionCoefficientEnum);  _assert_(drag_input);
+	}
+	else if(frictionlaw==5){
+		friction=new Friction(element,3);
+	}
+
+	/*Get Vertical segment indices*/
+	element->VerticalSegmentIndices(&pairindices,&numsegments);
+	for(int is=0;is<numsegments;is++){
+		nodedown = pairindices[is*2+0];
+		nodeup   = pairindices[is*2+1];
+		connectivity[0]=(IssmDouble)element->VertexConnectivity(nodedown);
+		connectivity[1]=(IssmDouble)element->VertexConnectivity(nodeup);
+		for(int i=0;i<3;i++){
+			xyz_list_line[0][i]=xyz_list[nodedown*3+i];
+			xyz_list_line[1][i]=xyz_list[nodeup*3+i];
+		}
+
+		Gauss* gauss=element->NewGaussLine(nodedown,nodeup,3);
+		while(gauss->next()){
+
+			B_input->GetInputValue(&B,gauss);
+			n_input->GetInputValue(&n,gauss);
+			slopex_input->GetInputValue(&slope[0],gauss);
+			slopey_input->GetInputValue(&slope[1],gauss);
+			surface_input->GetInputValue(&surface,gauss);
+			thickness_input->GetInputValue(&thickness,gauss);
+
+			slope2=slope[0]*slope[0]+slope[1]*slope[1];
+			constant_part=-2.*pow(rho_ice*gravity,n)*pow(slope2,((n-1.)/2.));
+
+			z = element->GetZcoord(xyz_list,gauss);
+			element->JacobianDeterminantLine(&Jdet,&xyz_list_line[0][0],gauss);
+
+			if(element->IsOnSurface()){
+				pe->values[2*nodeup+0]+=constant_part*pow((surface-z)/B,n)*slope[0]*Jdet*gauss->weight/connectivity[1];
+				pe->values[2*nodeup+1]+=constant_part*pow((surface-z)/B,n)*slope[1]*Jdet*gauss->weight/connectivity[1];
+			}
+			else{/*connectivity is too large, should take only half on it*/
+				pe->values[2*nodeup+0]+=constant_part*pow((surface-z)/B,n)*slope[0]*Jdet*gauss->weight*2./connectivity[1];
+				pe->values[2*nodeup+1]+=constant_part*pow((surface-z)/B,n)*slope[1]*Jdet*gauss->weight*2./connectivity[1];
+			}
+		}
+
+		/*Deal with basal velocities*/
+		if(element->IsOnBase()){
+			/*Make sure to now push the gauss point to the base*/
+			delete gauss; gauss=element->NewGauss();
+			gauss->GaussVertex(nodedown);
+			switch(frictionlaw){
+				case 1:
+					/*Payne 1995 (m = 1, B = 5e-3/yts = 1.58e-10  m/s/Pa*/
+					ub=-1.58*1.e-10*rho_ice*gravity*thickness*slope[0];
+					vb=-1.58*1.e-10*rho_ice*gravity*thickness*slope[1];
+					break;
+				case 2:
+					/*Ritz et al. 1996*/
+					drag_input->GetInputValue(&drag,gauss);
+					ub=drag*(rho_ice*gravity*thickness)*(rho_ice*gravity*thickness)*slope[0]/sqrt(slope2);
+					vb=drag*(rho_ice*gravity*thickness)*(rho_ice*gravity*thickness)*slope[1]/sqrt(slope2);
+					break;
+				case 3:
+					/*Rutt et al. 2009*/
+					drag_input->GetInputValue(&drag,gauss);
+					ub=-drag*rho_ice*gravity*thickness*slope[0];
+					vb=-drag*rho_ice*gravity*thickness*slope[1];
+					break;
+				case 4:
+					/*Henning Akesson*/
+					drag_input->GetInputValue(&drag,gauss);
+					drag = -4e-15 * surface + 8.6e-12;
+					ub=-drag*rho_ice*gravity*thickness*slope[0];
+					vb=-drag*rho_ice*gravity*thickness*slope[1];
+					break;
+				case 5: /*Weertman temp for Kevin*/{
+					friction->GetAlpha2WeertmanTemp(&drag,gauss);
+					ub = -1./drag * rho_ice*gravity*thickness*slope[0];
+					vb = -1./drag * rho_ice*gravity*thickness*slope[1];
+					}
+					break;
+				default:
+					_error_("Not supported yet");
+			}
+
+			pe->values[2*nodedown+0]+=ub/connectivity[0];
+			pe->values[2*nodedown+1]+=vb/connectivity[0];
+		}
+		delete gauss;
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(pairindices);
+	xDelete<IssmDouble>(xyz_list);
+	if(frictionlaw==5) delete friction;
+	return pe;
+
+}/*}}}*/
+void           StressbalanceSIAAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+
+	IssmDouble vx,vy;
+	int       *doflist = NULL;
+
+	/*Fetch number of nodes and initialize values*/
+	int         numnodes = element->GetNumberOfNodes();
+	int         numdof   = numnodes*2;
+	IssmDouble* values   = xNew<IssmDouble>(numdof);
+
+	/*Get dof list and inputs */
+	element->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum); _assert_(vy_input);
+
+	/*Ok, we have the velocities in inputs, fill in solution */
+	Gauss* gauss=element->NewGauss();
+	for(int i=0;i<numnodes;i++){
+		gauss->GaussVertex(i);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		values[i*2+0]=vx;
+		values[i*2+1]=vy;
+	}
+
+	/*Add value to global vector*/
+	solution->SetValues(numdof,doflist,values,INS_VAL);
+
+	/*Free resources:*/
+	delete gauss;
+	xDelete<int>(doflist);
+	xDelete<IssmDouble>(values);
+}/*}}}*/
+void           StressbalanceSIAAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           StressbalanceSIAAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int         i,domaintype;
+	IssmDouble  rho_ice,g;
+	int*        doflist=NULL;
+	IssmDouble* xyz_list=NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int numdof   = numnodes*2;
+
+	/*Fetch dof list and allocate solution vectors*/
+	element->GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values    = xNew<IssmDouble>(numdof);
+	IssmDouble* vx        = xNew<IssmDouble>(numdof);
+	IssmDouble* vy        = xNew<IssmDouble>(numdof);
+	IssmDouble* vz        = xNew<IssmDouble>(numdof);
+	IssmDouble* vel       = xNew<IssmDouble>(numdof);
+	IssmDouble* pressure  = xNew<IssmDouble>(numdof);
+	IssmDouble* thickness = xNew<IssmDouble>(numdof);
+	IssmDouble* surface   = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
+
+	/*Transform solution in Cartesian Space*/
+	element->TransformSolutionCoord(&values[0],XYEnum);
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+	for(i=0;i<numnodes;i++){
+		vx[i]=values[i*2+0];
+		vy[i]=values[i*2+1];
+
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector");
+		if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Get Vz and compute vel*/
+	element->GetInputListOnNodes(&vz[0],VzEnum,0.);
+	for(i=0;i<numnodes;i++) vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i] + vz[i]*vz[i]);
+
+	/*For pressure: we have not computed pressure in this analysis, for this element. We are in 2D,
+	 *so the pressure is just the pressure at the bedrock: */
+	rho_ice  = element->FindParam(MaterialsRhoIceEnum);
+	g        = element->FindParam(ConstantsGEnum);
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			element->GetInputListOnNodes(&thickness[0],ThicknessEnum);
+			for(i=0;i<numnodes;i++) pressure[i]=rho_ice*g*thickness[i];
+			break;
+		case Domain3DEnum:
+			element->GetVerticesCoordinates(&xyz_list);
+			element->GetInputListOnNodes(&surface[0],SurfaceEnum);
+			for(i=0;i<numnodes;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Add vx and vy as inputs to the tria element: */
+	element->AddInput(VxEnum,vx,P1Enum);
+	element->AddInput(VyEnum,vy,P1Enum);
+	element->AddInput(VelEnum,vel,P1Enum);
+	element->AddInput(PressureEnum,pressure,P1Enum);
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(thickness);
+	xDelete<IssmDouble>(surface);
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(vel);
+	xDelete<IssmDouble>(vz);
+	xDelete<IssmDouble>(vy);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           StressbalanceSIAAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/StressbalanceSIAAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/StressbalanceSIAAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/StressbalanceSIAAnalysis.h	(revision 27955)
@@ -0,0 +1,38 @@
+/*! \file StressbalanceSIAAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _StressbalanceSIAAnalysis_
+#define _StressbalanceSIAAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class StressbalanceSIAAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementMatrix* CreateKMatrix2D(Element* element);
+		ElementMatrix* CreateKMatrix3D(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		ElementVector* CreatePVector2D(Element* element);
+		ElementVector* CreatePVector3D(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/StressbalanceVerticalAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/StressbalanceVerticalAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/StressbalanceVerticalAnalysis.cpp	(revision 27955)
@@ -0,0 +1,686 @@
+#include "./StressbalanceVerticalAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+//#define INWOOVZ 1 //For Inwoo Park 0: incompressible assumption(IA), 1: internal deformation(ID), 2: IA+ID
+
+/*Model processing*/
+void StressbalanceVerticalAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*Intermediary*/
+	bool        isSIA,isSSA,isL1L2,isMOLHO,isHO,isFS,iscoupling;
+	int         Mz,Nz;
+	IssmDouble *spcvz = NULL;
+
+	/*return if not 3d mesh*/
+	if(iomodel->domaintype!=Domain3DEnum) return;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
+	iomodel->FindConstant(&isSSA,"md.flowequation.isSSA");
+	iomodel->FindConstant(&isL1L2,"md.flowequation.isL1L2");
+	iomodel->FindConstant(&isMOLHO,"md.flowequation.isMOLHO");
+	iomodel->FindConstant(&isHO,"md.flowequation.isHO");
+	iomodel->FindConstant(&isFS,"md.flowequation.isFS");
+
+	/*Do we have coupling*/
+	if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isMOLHO?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
+	 iscoupling = true;
+	else
+	 iscoupling = false;
+
+	/*If no coupling, call Regular IoModelToConstraintsx, else, use P1 elements only*/
+	if(!iscoupling){
+		IoModelToConstraintsx(constraints,iomodel,"md.stressbalance.spcvz",StressbalanceVerticalAnalysisEnum,P1Enum,0);
+	}
+	else{
+		/*Fetch data: */
+		iomodel->FetchData(1,"md.flowequation.borderFS");
+		/*Fetch Spc*/
+		iomodel->FetchData(&spcvz,&Mz,&Nz,"md.stressbalance.spcvz");
+		if(Nz>1) _error_("not supported yet (needs to be coded)");
+
+		/*Initialize counter*/
+		int count=0;
+
+		/*Create spcs from x,y,z, as well as the spc values on those spcs: */
+		for(int i=0;i<iomodel->numberofvertices;i++){
+
+			/*keep only this partition's nodes:*/
+			if(iomodel->my_vertices[i]){
+
+				if (reCast<int,IssmDouble>(iomodel->Data("md.flowequation.borderFS")[i])){
+					constraints->AddObject(new SpcStatic(count+1,i+1,0,0,StressbalanceVerticalAnalysisEnum)); //spc to zero as vertical velocity is done in Horiz for FS
+					count++;
+				}
+				else if (!xIsNan<IssmDouble>(spcvz[i])){
+					constraints->AddObject(new SpcStatic(count+1,i+1,0,
+									spcvz[i],StressbalanceVerticalAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+					count++;
+
+				}
+			} 
+		}
+
+		/*Free data: */
+		iomodel->DeleteData(1,"md.flowequation.borderFS");
+		iomodel->DeleteData(spcvz,"md.stressbalance.spcvz");
+	}
+
+}/*}}}*/
+void StressbalanceVerticalAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*No loads*/
+
+}/*}}}*/
+void StressbalanceVerticalAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	/*return if not 3d mesh*/
+	if(iomodel->domaintype!=Domain3DEnum) return;
+
+	iomodel->FetchData(3,"md.mesh.vertexonbase","md.mesh.vertexonsurface","md.flowequation.vertex_equation");
+	::CreateNodes(nodes,iomodel,StressbalanceVerticalAnalysisEnum,P1Enum);
+	iomodel->DeleteData(3,"md.mesh.vertexonbase","md.mesh.vertexonsurface","md.flowequation.vertex_equation");
+}/*}}}*/
+int  StressbalanceVerticalAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void StressbalanceVerticalAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*return if not 3d mesh*/
+	if(iomodel->domaintype!=Domain3DEnum) return;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+	iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
+	#ifdef INWOOVZ
+	iomodel->FetchDataToInput(inputs,elements,"md.smb.mass_balance",SmbMassBalanceEnum);
+	#endif
+
+	/*Add basal forcings to compute melt rate*/
+	bool isstochastic;
+   int basalforcing_model;
+   int melt_parameterization;
+   iomodel->FindConstant(&basalforcing_model,"md.basalforcings.model");
+   iomodel->FindConstant(&isstochastic,"md.stochasticforcing.isstochasticforcing");
+   iomodel->FindConstant(&melt_parameterization,"md.frontalforcings.parameterization");
+	switch(basalforcing_model){
+		case FloatingMeltRateEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.floatingice_melting_rate",BasalforcingsFloatingiceMeltingRateEnum);
+			if(isstochastic){
+            iomodel->FetchDataToInput(inputs,elements,"md.stochasticforcing.default_id",StochasticForcingDefaultIdEnum);
+            iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.floatingice_melting_rate",BaselineBasalforcingsFloatingiceMeltingRateEnum);
+         }
+			break;
+		case LinearFloatingMeltRateEnum:
+			break;
+		case MismipFloatingMeltRateEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum);
+			break;
+		case MantlePlumeGeothermalFluxEnum:
+			break;
+		case SpatialLinearFloatingMeltRateEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.deepwater_melting_rate",BasalforcingsSpatialDeepwaterMeltingRateEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.deepwater_elevation",BasalforcingsSpatialDeepwaterElevationEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.upperwater_melting_rate",BasalforcingsSpatialUpperwaterMeltingRateEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.upperwater_elevation",BasalforcingsSpatialUpperwaterElevationEnum);
+			if(isstochastic){
+            iomodel->FetchDataToInput(inputs,elements,"md.stochasticforcing.default_id",StochasticForcingDefaultIdEnum);
+            iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.deepwater_melting_rate",BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum);
+         }
+			break;
+		case BasalforcingsPicoEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.basin_id",BasalforcingsPicoBasinIdEnum);
+			break;
+		case BasalforcingsIsmip6Enum:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.basin_id",BasalforcingsIsmip6BasinIdEnum);
+			break;
+		case BeckmannGoosseFloatingMeltRateEnum:
+			bool isthermalforcing;
+         iomodel->FindConstant(&isthermalforcing,"md.basalforcings.isthermalforcing");
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum);
+         if(isthermalforcing==0){
+            iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.ocean_salinity",BasalforcingsOceanSalinityEnum);
+            iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.ocean_temp",BasalforcingsOceanTempEnum);
+         }
+         else if(melt_parameterization!=FrontalForcingsRignotarmaEnum){
+            iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.ocean_thermalforcing",ThermalForcingEnum);
+         }
+			break;
+		default:
+			_error_("Basal forcing model "<<EnumToStringx(basalforcing_model)<<" not supported yet");
+	}
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum,0.);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum,0.);
+}/*}}}*/
+void StressbalanceVerticalAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	/* specific parameters*/
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           StressbalanceVerticalAnalysis::Core(FemModel* femmodel){/*{{{*/
+
+		if(VerboseSolution()) _printf0_("   computing vertical velocities\n");
+		femmodel->SetCurrentConfiguration(StressbalanceVerticalAnalysisEnum);
+		solutionsequence_linear(femmodel);
+}/*}}}*/
+void           StressbalanceVerticalAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* StressbalanceVerticalAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* StressbalanceVerticalAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* StressbalanceVerticalAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	bool hack = false;
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixVolume(element);
+	ElementMatrix* Ke2=NULL;
+	if(hack) Ke2=CreateKMatrixBase(element);
+	else Ke2=CreateKMatrixSurface(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+
+}/*}}}*/
+ElementMatrix* StressbalanceVerticalAnalysis::CreateKMatrixBase(Element* element){/*{{{*/
+
+	if(!element->IsOnBase()) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  D,Jdet,normal[3];
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke    = element->NewElementMatrix(NoneApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGaussBase(2);
+	element->NormalBase(&normal[0],xyz_list);
+	while(gauss->next()){
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		D = -gauss->weight*Jdet*normal[2];
+
+		for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D*basis[i]*basis[j];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceVerticalAnalysis::CreateKMatrixSurface(Element* element){/*{{{*/
+
+	if(!element->IsOnSurface()) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  D,Jdet,normal[3];
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke    = element->NewElementMatrix(NoneApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesTop(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGaussTop(2);
+	element->NormalTop(&normal[0],xyz_list);
+	while(gauss->next()){
+
+		element->JacobianDeterminantTop(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		D = -gauss->weight*Jdet*normal[2];
+
+		for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D*basis[i]*basis[j];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	return Ke;
+}/*}}}*/
+ElementMatrix* StressbalanceVerticalAnalysis::CreateKMatrixVolume(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble  Jdet;
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix(NoneApproximationEnum);
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(3*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += gauss->weight*Jdet*(
+							basis[j]*dbasis[2*numnodes+i]
+							);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(basis);
+	return Ke;
+
+}/*}}}*/
+ElementVector* StressbalanceVerticalAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	bool hack = false;
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorVolume(element);
+	ElementVector* pe2=NULL;
+	if(hack) pe2=CreatePVectorSurface(element);
+	else     pe2=CreatePVectorBase(element);
+	ElementVector* pe =new ElementVector(pe1,pe2);
+
+	/*clean-up and return*/
+	delete pe1;
+	delete pe2;
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceVerticalAnalysis::CreatePVectorBase(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	int         approximation;
+	IssmDouble *xyz_list      = NULL;
+	IssmDouble *xyz_list_base = NULL;
+	IssmDouble  Jdet,slope[3];
+	IssmDouble  vx,vy,vz=0.,dbdx,dbdy;
+	IssmDouble  gmb,fmb,phi,basalmeltingvalue;
+
+	if(!element->IsOnBase()) return NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->GetInputValue(&approximation,ApproximationEnum);
+	Input* base_input=element->GetInput(BaseEnum);                                               _assert_(base_input);
+	Input* groundedice_input=element->GetInput(MaskOceanLevelsetEnum);                     _assert_(groundedice_input);
+	Input* groundedice_melting_input=element->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(groundedice_melting_input);
+	Input* floatingice_melting_input=element->GetInput(BasalforcingsFloatingiceMeltingRateEnum); _assert_(floatingice_melting_input);
+	Input* vx_input=element->GetInput(VxEnum);                                                   _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum);                                                   _assert_(vy_input);
+	Input* vzFS_input=NULL;
+	if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+		vzFS_input=element->GetInput(VzFSEnum);       _assert_(vzFS_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(2);
+	while(gauss->next()){
+
+		groundedice_melting_input->GetInputValue(&gmb,gauss);
+		floatingice_melting_input->GetInputValue(&fmb,gauss);
+		groundedice_input->GetInputValue(&phi,gauss);
+		base_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+			vzFS_input->GetInputValue(&vz,gauss);
+		}
+		dbdx=slope[0];
+		dbdy=slope[1];
+		if(phi>0.) basalmeltingvalue=gmb;
+		else basalmeltingvalue=fmb;
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=-Jdet*gauss->weight*(vx*dbdx+vy*dbdy-vz-basalmeltingvalue)*basis[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_base);
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceVerticalAnalysis::CreatePVectorSurface(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	int         approximation;
+	IssmDouble *xyz_list      = NULL;
+	IssmDouble *xyz_list_surface= NULL;
+	IssmDouble  Jdet,slope[3];
+	IssmDouble  vx,vy,vz=0.,dsdx,dsdy;
+	IssmDouble  smb,smbvalue;
+
+	if(!element->IsOnSurface()) return NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetVerticesCoordinatesTop(&xyz_list_surface);
+	element->GetInputValue(&approximation,ApproximationEnum);
+	Input* surface_input    =element->GetInput(SurfaceEnum);   _assert_(surface_input);
+	Input* smb_input=element->GetInput(SmbMassBalanceEnum);    _assert_(smb_input);
+	Input* vx_input=element->GetInput(VxEnum);                 _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum);                 _assert_(vy_input);
+	Input* vzFS_input=NULL;
+	if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+		vzFS_input=element->GetInput(VzFSEnum); _assert_(vzFS_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussTop(2);
+	while(gauss->next()){
+
+		smb_input->GetInputValue(&smb,gauss);
+		surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+			vzFS_input->GetInputValue(&vz,gauss);
+		}
+		dsdx=slope[0];
+		dsdy=slope[1];
+
+		element->JacobianDeterminantTop(&Jdet,xyz_list_surface,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=-Jdet*gauss->weight*(vx*dsdx+vy*dsdy-vz+smb)*basis[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_surface);
+	return pe;
+}/*}}}*/
+ElementVector* StressbalanceVerticalAnalysis::CreatePVectorVolume(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int         approximation;
+	IssmDouble  Jdet,dudx,dvdy,dwdz;
+	IssmDouble  du[3],dv[3],dw[3];
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and basis functions*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetInputValue(&approximation,ApproximationEnum);
+	Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum); _assert_(vy_input);
+	Input* vzFS_input=NULL;
+	if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+		vzFS_input=element->GetInput(VzFSEnum); _assert_(vzFS_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		vx_input->GetInputDerivativeValue(&du[0],xyz_list,gauss);
+		vy_input->GetInputDerivativeValue(&dv[0],xyz_list,gauss);
+		if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+			vzFS_input->GetInputDerivativeValue(&dw[0],xyz_list,gauss);
+			dwdz=dw[2];
+		}
+		else dwdz=0;
+		dudx=du[0];
+		dvdy=dv[1];
+
+		for(int i=0;i<numnodes;i++) pe->values[i] += (dudx+dvdy+dwdz)*Jdet*gauss->weight*basis[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list);
+	return pe;
+}/*}}}*/
+void           StressbalanceVerticalAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,VzEnum);
+}/*}}}*/
+void           StressbalanceVerticalAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           StressbalanceVerticalAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int          numnodes = element->GetNumberOfNodes();
+	int          numdof=numnodes*1;
+
+	int          i;
+	int          approximation;
+	int*         doflist  = NULL;
+	IssmDouble*  xyz_list = NULL;
+	IssmDouble   rho_ice,g;
+
+	/*Get the approximation and do nothing if the element in FS or None*/
+	element->GetInputValue(&approximation,ApproximationEnum);
+	if(approximation==FSApproximationEnum || approximation==NoneApproximationEnum){
+		return;
+	}
+
+	/*Get dof list and vertices coordinates: */
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble*  values    = xNew<IssmDouble>(numdof);
+	IssmDouble*  vx        = xNew<IssmDouble>(numnodes);
+	IssmDouble*  vy        = xNew<IssmDouble>(numnodes);
+	IssmDouble*  vz        = xNew<IssmDouble>(numnodes);
+	IssmDouble*  vzSSA     = xNew<IssmDouble>(numnodes);
+	IssmDouble*  vzHO      = xNew<IssmDouble>(numnodes);
+	IssmDouble*  vzFS      = xNew<IssmDouble>(numnodes);
+	IssmDouble*  vel       = xNew<IssmDouble>(numnodes);
+	IssmDouble*  pressure  = xNew<IssmDouble>(numnodes);
+	IssmDouble*  surface   = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector vz: */
+	for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
+	for(i=0;i<numdof;i++){
+		vz[i]=values[i*1+0];
+
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(vz[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(vz[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Get Vx and Vy*/
+	element->GetInputListOnNodes(&vx[0],VxEnum,0.0); //default is 0
+	element->GetInputListOnNodes(&vy[0],VyEnum,0.0); //default is 0
+
+	/*Do some modifications if we actually have a HOFS or SSAFS element*/
+	if(approximation==HOFSApproximationEnum){
+		Input* vzFS_input=element->GetInput(VzFSEnum);
+		if (vzFS_input){
+			if (vzFS_input->ObjectEnum()!=PentaInputEnum) _error_("Cannot compute Vel as VzFS is of type " << EnumToStringx(vzFS_input->ObjectEnum()));
+			element->GetInputListOnNodes(&vzFS[0],VzFSEnum,0.);
+		}
+		else _error_("Cannot compute Vz as VzFS in not present in HOFS element");
+		for(i=0;i<numnodes;i++){
+			vzHO[i]=vz[i];
+			vz[i]=vzHO[i]+vzFS[i];
+		}
+	}
+	else if(approximation==SSAFSApproximationEnum){
+		Input* vzFS_input=element->GetInput(VzFSEnum);
+		if (vzFS_input){
+			if (vzFS_input->ObjectEnum()!=PentaInputEnum) _error_("Cannot compute Vel as VzFS is of type " << EnumToStringx(vzFS_input->ObjectEnum()));
+			element->GetInputListOnNodes(&vzFS[0],VzFSEnum,0.);
+		}
+		else _error_("Cannot compute Vz as VzFS in not present in SSAFS element");
+		for(i=0;i<numnodes;i++){
+			vzSSA[i]=vz[i];
+			vz[i]=vzSSA[i]+vzFS[i];
+		}
+	}
+
+	#ifdef INWOOVZ
+	IssmDouble*  thickness = xNew<IssmDouble>(numnodes);
+	IssmDouble*  base	     = xNew<IssmDouble>(numnodes);
+	IssmDouble*  smb       = xNew<IssmDouble>(numnodes);
+
+	IssmDouble rheology_n=element->material->GetN();
+	IssmDouble isvelbc   = 10./(365.25*24*3600); /*10 m/yr*/
+	/*Set analytical vertical velocity field at slow flow region.*/
+	if(INWOOVZ == 1){
+		element->GetInputListOnNodes(&thickness[0],ThicknessEnum,0.);
+		element->GetInputListOnNodes(&base[0],BaseEnum,0.);
+		element->GetInputListOnNodes(&smb[0],SmbMassBalanceEnum,0.);
+		for(i=0;i<numnodes;i++){
+			IssmDouble eta = (base[i]+thickness[i]-xyz_list[i*3+2])/thickness[i];
+			vz[i] = -(pow(eta,rheology_n+2.0)-1-(rheology_n+2.0)*(eta-1.))/(rheology_n+1.)*smb[i];
+		}	
+	}
+	else if(INWOOVZ== 2) {
+		element->GetInputListOnNodes(&thickness[0],ThicknessEnum,0.);
+		element->GetInputListOnNodes(&base[0],BaseEnum,0.);
+		element->GetInputListOnNodes(&smb[0],SmbMassBalanceEnum,0.);
+		for(i=0;i<numnodes;i++){
+			if ( vx[i]*vx[i]+vy[i]*vy[i] < isvelbc*isvelbc ){
+				IssmDouble eta = (base[i]+thickness[i]-xyz_list[i*3+2])/thickness[i];
+				vz[i] = -(pow(eta,rheology_n+2.0)-1-(rheology_n+2.0)*(eta-1.))/(rheology_n+1.)*smb[i];
+			}
+		}	
+	}
+	else if(INWOOVZ==0){
+		/*nothing to add*/
+	}
+	else{
+		_error_("not supported yet");
+	}
+
+	/*Cleanup*/
+	xDelete<IssmDouble>(smb);
+	xDelete<IssmDouble>(base);
+	xDelete<IssmDouble>(thickness);
+	#endif
+
+	/*Now Compute vel*/
+	for(i=0;i<numnodes;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
+
+	/*For pressure: we have not computed pressure in this analysis, for this element. We are in 3D, 
+	 *so the pressure is just the pressure at the z elevation: except it this is a HOFS element */
+	if(approximation!=HOFSApproximationEnum &&  approximation!=SSAFSApproximationEnum){
+		rho_ice = element->FindParam(MaterialsRhoIceEnum);
+		g       = element->FindParam(ConstantsGEnum);
+		element->GetInputListOnNodes(&surface[0],SurfaceEnum,0.);
+		for(i=0;i<numnodes;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
+	}
+	if(approximation!=HOFSApproximationEnum && approximation!=SSAFSApproximationEnum){
+		element->AddInput(PressureEnum,pressure,element->GetElementType());
+	}
+	else if(approximation==HOFSApproximationEnum){
+		element->AddInput(VzHOEnum,vzHO,P1Enum);
+	}
+	else if(approximation==SSAFSApproximationEnum){
+		element->AddInput(VzSSAEnum,vzSSA,P1Enum);
+	}
+	element->AddInput(VzEnum,vz,P1Enum);
+	element->AddInput(VelEnum,vel,P1Enum);
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(surface);
+	xDelete<IssmDouble>(pressure);
+	xDelete<IssmDouble>(vel);
+	xDelete<IssmDouble>(vz);
+	xDelete<IssmDouble>(vzSSA);
+	xDelete<IssmDouble>(vzHO);
+	xDelete<IssmDouble>(vzFS);
+	xDelete<IssmDouble>(vy);
+	xDelete<IssmDouble>(vx);
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           StressbalanceVerticalAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	SetActiveNodesLSMx(femmodel);
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/StressbalanceVerticalAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/StressbalanceVerticalAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/StressbalanceVerticalAnalysis.h	(revision 27955)
@@ -0,0 +1,40 @@
+/*! \file StressbalanceVerticalAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _StressbalanceVerticalAnalysis_
+#define _StressbalanceVerticalAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class StressbalanceVerticalAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementMatrix* CreateKMatrixBase(Element* element);
+		ElementMatrix* CreateKMatrixSurface(Element* element);
+		ElementMatrix* CreateKMatrixVolume(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		ElementVector* CreatePVectorBase(Element* element);
+		ElementVector* CreatePVectorSurface(Element* element);
+		ElementVector* CreatePVectorVolume(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ThermalAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ThermalAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ThermalAnalysis.cpp	(revision 27955)
@@ -0,0 +1,763 @@
+#include "./ThermalAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void ThermalAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*Intermediary*/
+	int        M,N;
+	int finiteelement;
+	iomodel->FindConstant(&finiteelement,"md.thermal.fe");
+	_assert_(finiteelement==P1Enum);
+
+	/*Output*/
+	IssmDouble *spcvector  = NULL;
+	IssmDouble *spcvectorstatic  = NULL;
+	IssmDouble *issurface = NULL;
+
+	/*Only 3d mesh supported*/
+	if(iomodel->domaintype!=Domain3DEnum) _error_("not supported yet");
+
+	/*Specific case for PDD, we want the constaints to be updated by the PDD scheme itself*/
+	bool isdynamic = false;
+	if(iomodel->solution_enum==ThermalSolutionEnum){
+		/*No PDD scheme, keep default*/
+	}
+	else if(iomodel->solution_enum==SteadystateSolutionEnum){
+		/*No PDD scheme, keep default*/
+	}
+	else if (iomodel->solution_enum==TransientSolutionEnum){
+		int smb_model;
+		iomodel->FindConstant(&smb_model,"md.smb.model");
+		if(smb_model==SMBpddEnum)				isdynamic=true;
+		if(smb_model==SMBd18opddEnum)			isdynamic=true;
+		if(smb_model==SMBpddSicopolisEnum)  isdynamic=true;
+	}
+	else{
+		_error_("Solution "<<EnumToStringx(iomodel->solution_enum)<<" not supported yet");
+	}
+
+	/*Fetch data: */
+	iomodel->FetchData(&issurface,&M,&N,"md.mesh.vertexonsurface"); _assert_(N>0); _assert_(M==iomodel->numberofvertices);
+	iomodel->FetchData(&spcvector,&M,&N,"md.thermal.spctemperature");
+	iomodel->FetchData(&spcvectorstatic,&M,&N,"md.thermal.spctemperature");
+
+	/*Convert spcs from temperatures to enthalpy*/
+	_assert_(N>0); _assert_(M>=iomodel->numberofvertices);
+	for(int i=0;i<iomodel->numberofvertices;i++){
+		for(int j=0;j<N;j++){
+			if (isdynamic){
+				if (issurface[i]==1)spcvectorstatic[i*N+j] = NAN;
+				else spcvector[i*N+j] = NAN;
+			}
+		}
+	}
+
+	if(isdynamic){
+		IoModelToDynamicConstraintsx(constraints,iomodel,spcvector,iomodel->numberofvertices,1,ThermalAnalysisEnum,finiteelement);
+		IoModelToConstraintsx(constraints,iomodel,spcvectorstatic,M,N,ThermalAnalysisEnum,finiteelement);
+	}
+	else{
+		IoModelToConstraintsx(constraints,iomodel,spcvector,M,N,ThermalAnalysisEnum,finiteelement);
+	}
+
+	/*Free resources:*/
+	iomodel->DeleteData(spcvector,"md.thermal.spctemperature");
+	iomodel->DeleteData(spcvectorstatic,"md.thermal.spctemperature");
+	iomodel->DeleteData(issurface,"md.mesh.vertexonsurface");
+
+}/*}}}*/
+void ThermalAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	if(iomodel->domaintype==Domain2DhorizontalEnum) _error_("2d meshes not supported yet");
+
+	/*create penalties for nodes: no node can have a temperature over the melting point*/
+	iomodel->FetchData(1,"md.thermal.spctemperature");
+	CreateSingleNodeToElementConnectivity(iomodel);
+
+	for(int i=0;i<iomodel->numberofvertices;i++){
+
+		/*keep only this partition's nodes:*/
+		if(iomodel->my_vertices[i]){
+			if (xIsNan<IssmDouble>(iomodel->Data("md.thermal.spctemperature")[i])){ //No penalty applied on spc nodes!
+				loads->AddObject(new Pengrid(i+1,i,iomodel));
+			}
+		}
+	}
+	iomodel->DeleteData(1,"md.thermal.spctemperature");
+
+}/*}}}*/
+void ThermalAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	int finiteelement;
+	iomodel->FindConstant(&finiteelement,"md.thermal.fe");
+	_assert_(finiteelement==P1Enum);
+
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+	::CreateNodes(nodes,iomodel,ThermalAnalysisEnum,finiteelement);
+	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+}/*}}}*/
+int  ThermalAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void ThermalAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	int basalforcing_model,materialstype;
+
+	/*Now, is the model 3d? otherwise, do nothing: */
+	if(iomodel->domaintype==Domain2DhorizontalEnum)return;
+
+	/*Update elements: */
+	int finiteelement;
+	iomodel->FindConstant(&finiteelement,"md.thermal.fe");
+	_assert_(finiteelement==P1Enum);
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+
+	bool dakota_analysis, ismovingfront;
+	iomodel->FindConstant(&dakota_analysis,"md.qmu.isdakota");
+	iomodel->FindConstant(&ismovingfront,"md.transient.ismovingfront");
+	iomodel->FindConstant(&materialstype,"md.materials.type");
+
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.thickness",ThicknessEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.sealevel",SealevelEnum,0);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	}
+	iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.pressure",PressureEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.temperature",TemperatureEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vz",VzEnum);
+	InputUpdateFromConstantx(inputs,elements,0.,VxMeshEnum);
+	InputUpdateFromConstantx(inputs,elements,0.,VyMeshEnum);
+	InputUpdateFromConstantx(inputs,elements,0.,VzMeshEnum);
+
+	/*Rheology type*/
+	iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_B",MaterialsRheologyBEnum);
+	switch(materialstype){
+		case MatenhancediceEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_n",MaterialsRheologyNEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_E",MaterialsRheologyEEnum);
+			break;
+		case MatdamageiceEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_n",MaterialsRheologyNEnum);
+			break;
+		case MatestarEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_Ec",MaterialsRheologyEcEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_Es",MaterialsRheologyEsEnum);
+			break;
+		case MaticeEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_n",MaterialsRheologyNEnum);
+			break;
+		default:
+			_error_("not supported");
+	}
+	if(ismovingfront){
+		iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum); // required for updating active nodes
+	}
+	/*Basal forcings variables*/
+	iomodel->FindConstant(&basalforcing_model,"md.basalforcings.model");
+	switch(basalforcing_model){
+		case MantlePlumeGeothermalFluxEnum:
+			break;
+		default:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.geothermalflux",BasalforcingsGeothermalfluxEnum);
+			break;
+	}
+
+	/*Friction*/
+	FrictionUpdateInputs(elements, inputs, iomodel);
+}/*}}}*/
+void ThermalAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int     numoutputs;
+	char**  requestedoutputs = NULL;
+
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.maxiter",ThermalMaxiterEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.stabilization",ThermalStabilizationEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.penalty_factor",ThermalPenaltyFactorEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.penalty_threshold",ThermalPenaltyThresholdEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.penalty_lock",ThermalPenaltyLockEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.isenthalpy",ThermalIsenthalpyEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.thermal.isdynamicbasalspc",ThermalIsdynamicbasalspcEnum));
+
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.thermal.requested_outputs");
+	parameters->AddObject(new IntParam(ThermalNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(ThermalRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.thermal.requested_outputs");
+
+	/*Friction*/
+	FrictionUpdateParameters(parameters, iomodel);
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           ThermalAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           ThermalAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* ThermalAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* ThermalAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* ThermalAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*compute all stiffness matrices for this element*/
+	ElementMatrix* Ke1=CreateKMatrixVolume(element);
+	ElementMatrix* Ke2=CreateKMatrixShelf(element);
+	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
+
+	/*clean-up and return*/
+	delete Ke1;
+	delete Ke2;
+	return Ke;
+}/*}}}*/
+ElementMatrix* ThermalAnalysis::CreateKMatrixShelf(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Initialize Element matrix and return if necessary*/
+	if(!element->IsOnBase() || !element->IsAllFloating()) return NULL;
+
+	IssmDouble  dt,Jdet,D;
+	IssmDouble *xyz_list_base = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnBase() || !element->IsAllFloating()) return NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize vectors*/
+	ElementMatrix* Ke    = element->NewElementMatrix();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	IssmDouble gravity             = element->FindParam(ConstantsGEnum);
+	IssmDouble rho_water           = element->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble rho_ice             = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble heatcapacity        = element->FindParam(MaterialsHeatcapacityEnum);
+	IssmDouble mixed_layer_capacity= element->FindParam(MaterialsMixedLayerCapacityEnum);
+	IssmDouble thermal_exchange_vel= element->FindParam(MaterialsThermalExchangeVelocityEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(4);
+	while(gauss->next()){
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		D=gauss->weight*Jdet*rho_water*mixed_layer_capacity*thermal_exchange_vel/(heatcapacity*rho_ice);
+		if(reCast<bool,IssmDouble>(dt)) D=dt*D;
+		for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D*basis[i]*basis[j];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list_base);
+	return Ke;
+}/*}}}*/
+ElementMatrix* ThermalAnalysis::CreateKMatrixVolume(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	int         stabilization;
+	IssmDouble  Jdet,dt,u,v,w,um,vm,wm,vel;
+	IssmDouble  h,hx,hy,hz,vx,vy,vz,D_scalar;
+	IssmDouble  tau_parameter,diameter;
+	IssmDouble  tau_parameter_anisotropic[2],tau_parameter_hor,tau_parameter_ver;	
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(3*numnodes);
+	IssmDouble     K[3][3];
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&stabilization,ThermalStabilizationEnum);
+	IssmDouble  rho_water           = element->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble  rho_ice             = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  gravity             = element->FindParam(ConstantsGEnum);
+	IssmDouble  heatcapacity        = element->FindParam(MaterialsHeatcapacityEnum);
+	IssmDouble  thermalconductivity = element->FindParam(MaterialsThermalconductivityEnum);
+	IssmDouble  kappa = thermalconductivity/(rho_ice*heatcapacity);
+	Input* vx_input  = element->GetInput(VxEnum);     _assert_(vx_input);
+	Input* vy_input  = element->GetInput(VyEnum);     _assert_(vy_input);
+	Input* vz_input  = element->GetInput(VzEnum);     _assert_(vz_input);
+	Input* vxm_input = element->GetInput(VxMeshEnum); _assert_(vxm_input);
+	Input* vym_input = element->GetInput(VyMeshEnum); _assert_(vym_input);
+	Input* vzm_input = element->GetInput(VzMeshEnum); _assert_(vzm_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(4);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		D_scalar=gauss->weight*Jdet;
+		if(dt!=0.) D_scalar=D_scalar*dt;
+
+		/*Conduction: */
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += D_scalar*kappa*(
+							dbasis[0*numnodes+j]*dbasis[0*numnodes+i] + dbasis[1*numnodes+j]*dbasis[1*numnodes+i] + dbasis[2*numnodes+j]*dbasis[2*numnodes+i]
+							);
+			}
+		}
+
+		/*Advection: */
+		vx_input->GetInputValue(&u,gauss); vxm_input->GetInputValue(&um,gauss); vx=u-um;
+		vy_input->GetInputValue(&v,gauss); vym_input->GetInputValue(&vm,gauss); vy=v-vm;
+		vz_input->GetInputValue(&w,gauss); vzm_input->GetInputValue(&wm,gauss); vz=w-wm;
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += D_scalar*(
+							vx*dbasis[0*numnodes+j]*basis[i] + vy*dbasis[1*numnodes+j]*basis[i] +vz*dbasis[2*numnodes+j]*basis[i]
+							);
+			}
+		}
+
+		/*Transient: */
+		if(dt!=0.){
+			D_scalar=gauss->weight*Jdet;
+			for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D_scalar*basis[j]*basis[i];
+			D_scalar=D_scalar*dt;
+		}
+
+		/*Artifficial diffusivity*/
+		if(stabilization==1){
+			element->ElementSizes(&hx,&hy,&hz);
+			vel=sqrt(vx*vx + vy*vy + vz*vz)+1.e-14;
+			h=sqrt( pow(hx*vx/vel,2) + pow(hy*vy/vel,2) + pow(hz*vz/vel,2));
+			K[0][0]=h/(2.*vel)*fabs(vx*vx);  K[0][1]=h/(2.*vel)*fabs(vx*vy); K[0][2]=h/(2.*vel)*fabs(vx*vz);
+			K[1][0]=h/(2.*vel)*fabs(vy*vx);  K[1][1]=h/(2.*vel)*fabs(vy*vy); K[1][2]=h/(2.*vel)*fabs(vy*vz);
+			K[2][0]=h/(2.*vel)*fabs(vz*vx);  K[2][1]=h/(2.*vel)*fabs(vz*vy); K[2][2]=h/(2.*vel)*fabs(vz*vz);
+			for(int i=0;i<3;i++) for(int j=0;j<3;j++) K[i][j] = D_scalar*K[i][j];
+
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += (
+								dbasis[0*numnodes+i] *(K[0][0]*dbasis[0*numnodes+j] + K[0][1]*dbasis[1*numnodes+j]+ K[0][2]*dbasis[2*numnodes+j]) +
+								dbasis[1*numnodes+i] *(K[1][0]*dbasis[0*numnodes+j] + K[1][1]*dbasis[1*numnodes+j]+ K[1][2]*dbasis[2*numnodes+j]) +
+								dbasis[2*numnodes+i] *(K[2][0]*dbasis[0*numnodes+j] + K[2][1]*dbasis[1*numnodes+j]+ K[2][2]*dbasis[2*numnodes+j]) 
+								);
+				}
+			}
+		}
+		else if(stabilization==2){
+			diameter=element->MinEdgeLength(xyz_list);
+			tau_parameter=element->StabilizationParameter(u-um,v-vm,w-wm,diameter,kappa);
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j]+=tau_parameter*D_scalar*
+					  ((u-um)*dbasis[0*numnodes+i]+(v-vm)*dbasis[1*numnodes+i]+(w-wm)*dbasis[2*numnodes+i])*
+					  ((u-um)*dbasis[0*numnodes+j]+(v-vm)*dbasis[1*numnodes+j]+(w-wm)*dbasis[2*numnodes+j]);
+				}
+			}
+			if(dt!=0.){
+				D_scalar=gauss->weight*Jdet;
+				for(int i=0;i<numnodes;i++){
+					for(int j=0;j<numnodes;j++){
+						Ke->values[i*numnodes+j]+=tau_parameter*D_scalar*basis[j]*((u-um)*dbasis[0*numnodes+i]+(v-vm)*dbasis[1*numnodes+i]+(w-wm)*dbasis[2*numnodes+i]);
+					}
+				}
+			}
+		}
+		/*anisotropic SUPG*/
+		else if(stabilization==3){
+			element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+			element->ElementSizes(&hx,&hy,&hz);
+			element->StabilizationParameterAnisotropic(&tau_parameter_anisotropic[0],u-um,v-vm,w-wm,hx,hy,hz,kappa);
+			tau_parameter_hor=tau_parameter_anisotropic[0];
+			tau_parameter_ver=tau_parameter_anisotropic[1];
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j]+=D_scalar*
+						(sqrt(tau_parameter_hor)*(u-um)*dbasis[0*numnodes+i]+sqrt(tau_parameter_hor)*(v-vm)*dbasis[1*numnodes+i]+sqrt(tau_parameter_ver)*(w-wm)*dbasis[2*numnodes+i])*
+						(sqrt(tau_parameter_hor)*(u-um)*dbasis[0*numnodes+j]+sqrt(tau_parameter_hor)*(v-vm)*dbasis[1*numnodes+j]+sqrt(tau_parameter_ver)*(w-wm)*dbasis[2*numnodes+j]);
+				}
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* ThermalAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*compute all load vectors for this element*/
+	ElementVector* pe1=CreatePVectorVolume(element);
+	ElementVector* pe2=CreatePVectorSheet(element);
+	ElementVector* pe3=CreatePVectorShelf(element);
+	ElementVector* pe =new ElementVector(pe1,pe2,pe3);
+
+	/*clean-up and return*/
+	delete pe1;
+	delete pe2;
+	delete pe3;
+	return pe;
+}/*}}}*/
+ElementVector* ThermalAnalysis::CreatePVectorSheet(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/* Geothermal flux on ice sheet base and basal friction */
+	if(!element->IsOnBase() || element->IsAllFloating()) return NULL;
+
+	IssmDouble  dt,Jdet,geothermalflux,vx,vy,vz;
+	IssmDouble  alpha2,scalar,basalfriction,heatflux;
+	IssmDouble *xyz_list_base = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input* vx_input             = element->GetInput(VxEnum);                          _assert_(vx_input);
+	Input* vy_input             = element->GetInput(VyEnum);                          _assert_(vy_input);
+	Input* vz_input             = element->GetInput(VzEnum);                          _assert_(vz_input);
+	Input* geothermalflux_input = element->GetInput(BasalforcingsGeothermalfluxEnum); _assert_(geothermalflux_input);
+	IssmDouble  rho_ice             = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  heatcapacity        = element->FindParam(MaterialsHeatcapacityEnum);
+
+	/*Build friction element, needed later: */
+	Friction* friction=new Friction(element,3);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss   = element->NewGaussBase(4);
+	while(gauss->next()){
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		geothermalflux_input->GetInputValue(&geothermalflux,gauss);
+		friction->GetAlpha2(&alpha2,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vz_input->GetInputValue(&vz,gauss);
+		vz = 0.;//FIXME
+		basalfriction = alpha2*(vx*vx + vy*vy + vz*vz);
+		heatflux      = (basalfriction+geothermalflux)/(rho_ice*heatcapacity);
+
+		scalar = gauss->weight*Jdet*heatflux;
+		if(dt!=0.) scalar=dt*scalar;
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=scalar*basis[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	delete friction;
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list_base);
+	return pe;
+}/*}}}*/
+ElementVector* ThermalAnalysis::CreatePVectorShelf(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	IssmDouble  t_pmp,dt,Jdet,scalar_ocean,pressure;
+	IssmDouble *xyz_list_base = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnBase() || !element->IsAllFloating()) return NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list_base);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input*      pressure_input=element->GetInput(PressureEnum); _assert_(pressure_input);
+	IssmDouble  gravity             = element->FindParam(ConstantsGEnum);
+	IssmDouble  rho_water           = element->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble  rho_ice             = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  heatcapacity        = element->FindParam(MaterialsHeatcapacityEnum);
+	IssmDouble  mixed_layer_capacity= element->FindParam(MaterialsMixedLayerCapacityEnum);
+	IssmDouble  thermal_exchange_vel= element->FindParam(MaterialsThermalExchangeVelocityEnum);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussBase(4);
+	while(gauss->next()){
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		pressure_input->GetInputValue(&pressure,gauss);
+		t_pmp=element->TMeltingPoint(pressure);
+
+		scalar_ocean=gauss->weight*Jdet*rho_water*mixed_layer_capacity*thermal_exchange_vel*(t_pmp)/(heatcapacity*rho_ice);
+		if(reCast<bool,IssmDouble>(dt)) scalar_ocean=dt*scalar_ocean;
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=scalar_ocean*basis[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list_base);
+	return pe;
+}/*}}}*/
+ElementVector* ThermalAnalysis::CreatePVectorVolume(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	int         stabilization;
+	IssmDouble  Jdet,phi,dt;
+	IssmDouble  temperature;
+	IssmDouble  tau_parameter,diameter,hx,hy,hz;
+	IssmDouble  tau_parameter_anisotropic[2],tau_parameter_hor,tau_parameter_ver;
+	IssmDouble  u,v,w;
+	IssmDouble  scalar_def,scalar_transient;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe     = element->NewElementVector();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+	IssmDouble*    dbasis = xNew<IssmDouble>(3*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	IssmDouble  rho_ice             = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble  heatcapacity        = element->FindParam(MaterialsHeatcapacityEnum);
+	IssmDouble  thermalconductivity = element->FindParam(MaterialsThermalconductivityEnum);
+	IssmDouble  kappa = thermalconductivity/(rho_ice*heatcapacity);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	element->FindParam(&stabilization,ThermalStabilizationEnum);
+	Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input=element->GetInput(VzEnum); _assert_(vz_input);
+	Input* temperature_input = NULL;
+	if(reCast<bool,IssmDouble>(dt)){temperature_input = element->GetInput(TemperatureEnum); _assert_(temperature_input);}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(4);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		element->ViscousHeating(&phi,xyz_list,gauss,vx_input,vy_input,vz_input);
+
+		scalar_def=phi/(rho_ice*heatcapacity)*Jdet*gauss->weight;
+		if(reCast<bool,IssmDouble>(dt)) scalar_def=scalar_def*dt;
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=scalar_def*basis[i];
+
+		/* Build transient now */
+		if(reCast<bool,IssmDouble>(dt)){
+			temperature_input->GetInputValue(&temperature, gauss);
+			scalar_transient=temperature*Jdet*gauss->weight;
+			for(int i=0;i<numnodes;i++) pe->values[i]+=scalar_transient*basis[i];
+		}
+
+		if(stabilization==2){
+			element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+			diameter=element->MinEdgeLength(xyz_list);
+			vx_input->GetInputValue(&u,gauss);
+			vy_input->GetInputValue(&v,gauss);
+			vz_input->GetInputValue(&w,gauss);
+
+			tau_parameter=element->StabilizationParameter(u,v,w,diameter,kappa);
+
+			for(int i=0;i<numnodes;i++) pe->values[i]+=tau_parameter*scalar_def*(u*dbasis[0*numnodes+i]+v*dbasis[1*numnodes+i]+w*dbasis[2*numnodes+i]);
+			if(reCast<bool,IssmDouble>(dt)){
+				for(int i=0;i<numnodes;i++) pe->values[i]+=tau_parameter*scalar_transient*(u*dbasis[0*numnodes+i]+v*dbasis[1*numnodes+i]+w*dbasis[2*numnodes+i]);
+			}
+		}
+		/* anisotropic SUPG */
+		else if(stabilization==3){
+			element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+			element->ElementSizes(&hx,&hy,&hz);
+			vx_input->GetInputValue(&u,gauss);
+			vy_input->GetInputValue(&v,gauss);
+			vz_input->GetInputValue(&w,gauss);
+			element->StabilizationParameterAnisotropic(&tau_parameter_anisotropic[0],u,v,w,hx,hy,hz,kappa);
+			tau_parameter_hor=tau_parameter_anisotropic[0];
+			tau_parameter_ver=tau_parameter_anisotropic[1];
+
+			for(int i=0;i<numnodes;i++) pe->values[i]+=scalar_def*(tau_parameter_hor*u*dbasis[0*numnodes+i]+tau_parameter_hor*v*dbasis[1*numnodes+i]+tau_parameter_ver*w*dbasis[2*numnodes+i]);
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(dbasis);
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return pe;
+
+}/*}}}*/
+void           ThermalAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,TemperatureEnum);
+}/*}}}*/
+void           ThermalAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           ThermalAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	bool        converged;
+	int         i,rheology_law;
+	int        *doflist   = NULL;
+	IssmDouble *xyz_list  = NULL;
+	bool        hack      = false;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Fetch dof list and allocate solution vector*/
+	element->GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values    = xNew<IssmDouble>(numnodes);
+	IssmDouble* surface   = xNew<IssmDouble>(numnodes);
+	IssmDouble* B         = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numnodes;i++){
+		values[i]=solution[doflist[i]];
+
+		/*Check solution*/
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+		//if(values[i]<0)      _printf_("temperature < 0°K found in solution vector\n");
+		//if(values[i]>275)    _printf_("temperature > 275°K found in solution vector (Paterson's rheology associated is negative)\n");
+	}
+
+	/*Force temperature between [Tpmp-50 Tpmp] to disable penalties*/
+	if(hack){
+		IssmDouble* pressure = xNew<IssmDouble>(numnodes);
+		element->GetInputListOnNodes(&pressure[0],PressureEnum);
+		for(i=0;i<numnodes;i++){
+			if(values[i]>element->TMeltingPoint(pressure[i]))     values[i]=element->TMeltingPoint(pressure[i]);
+			if(values[i]<element->TMeltingPoint(pressure[i])-50.) values[i]=element->TMeltingPoint(pressure[i])-50.;
+		}
+		xDelete<IssmDouble>(pressure);
+	}
+
+	/*Get all inputs and parameters*/
+	element->GetInputValue(&converged,ConvergedEnum);
+	if(converged){
+		element->AddInput(TemperatureEnum,values,element->GetElementType());
+
+		IssmDouble* n = xNew<IssmDouble>(numnodes);
+		if(element->material->ObjectEnum()==MatestarEnum){
+			for(i=0;i<numnodes;i++) n[i]=3.;
+		}
+		else{
+			element->GetInputListOnNodes(&n[0],MaterialsRheologyNEnum);
+		}
+
+		/*Update Rheology only if converged (we must make sure that the temperature is below melting point
+		 * otherwise the rheology could be negative*/
+		element->FindParam(&rheology_law,MaterialsRheologyLawEnum);
+		element->GetInputListOnNodes(&surface[0],SurfaceEnum);
+
+		switch(rheology_law){
+			case NoneEnum:
+				/*Do nothing: B is not temperature dependent*/
+				break;
+			case BuddJackaEnum:
+				for(i=0;i<numnodes;i++) B[i]=BuddJacka(values[i]);
+				element->AddInput(MaterialsRheologyBEnum,&B[0],element->GetElementType());
+				break;
+			case CuffeyEnum:
+				for(i=0;i<numnodes;i++) B[i]=Cuffey(values[i]);
+				element->AddInput(MaterialsRheologyBEnum,&B[0],element->GetElementType());
+				break;
+			case PatersonEnum:
+				for(i=0;i<numnodes;i++) B[i]=Paterson(values[i]);
+				element->AddInput(MaterialsRheologyBEnum,&B[0],element->GetElementType());
+				break;
+			case NyeH2OEnum:
+				for(i=0;i<numnodes;i++) B[i]=NyeH2O(values[i]);
+				element->AddInput(MaterialsRheologyBEnum,&B[0],element->GetElementType());
+				break; 
+			case NyeCO2Enum:
+				for(i=0;i<numnodes;i++) B[i]=NyeCO2(values[i]);
+				element->AddInput(MaterialsRheologyBEnum,&B[0],element->GetElementType());
+				break;
+			case ArrheniusEnum:{
+				element->GetVerticesCoordinates(&xyz_list);
+				for(i=0;i<numnodes;i++) B[i]=Arrhenius(values[i],surface[i]-xyz_list[i*3+2],n[i]);
+				element->AddInput(MaterialsRheologyBEnum,&B[0],element->GetElementType());
+				break;
+				}
+			default:
+				_error_("Rheology law " << EnumToStringx(rheology_law) << " not supported yet");
+		}
+		xDelete<IssmDouble>(n);
+	}
+	else{
+		element->AddInput(TemperaturePicardEnum,values,element->GetElementType());
+	}
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(surface);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           ThermalAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ThermalAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ThermalAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/ThermalAnalysis.h	(revision 27955)
@@ -0,0 +1,39 @@
+/*! \file ThermalAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _THERMALANALYSIS_
+#define _THERMALANALYSIS_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class ThermalAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementMatrix* CreateKMatrixShelf(Element* element);
+		ElementMatrix* CreateKMatrixVolume(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		ElementVector* CreatePVectorSheet(Element* element);
+		ElementVector* CreatePVectorShelf(Element* element);
+		ElementVector* CreatePVectorVolume(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/UzawaPressureAnalysis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/UzawaPressureAnalysis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/UzawaPressureAnalysis.cpp	(revision 27955)
@@ -0,0 +1,298 @@
+#include "./UzawaPressureAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void UzawaPressureAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	return;
+}/*}}}*/
+void UzawaPressureAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	return;
+}/*}}}*/
+void UzawaPressureAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
+
+	int finiteelement;
+	int fe_FS;
+
+	iomodel->FindConstant(&fe_FS,"md.flowequation.fe_FS");
+	if(fe_FS==LATaylorHoodEnum) finiteelement = P1Enum;
+	else if(fe_FS==LACrouzeixRaviartEnum) finiteelement = P1DGEnum;
+	else _error_("solution not supported yet");
+
+	::CreateNodes(nodes,iomodel,UzawaPressureAnalysisEnum,finiteelement);
+}/*}}}*/
+int  UzawaPressureAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void UzawaPressureAnalysis::UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Update elements: */
+	int finiteelement;
+	int counter=0;
+	int fe_FS;
+
+	iomodel->FindConstant(&fe_FS,"md.flowequation.fe_FS");
+	if(fe_FS==LATaylorHoodEnum) finiteelement = P1Enum;
+	else if(fe_FS==LACrouzeixRaviartEnum) finiteelement = P1DGEnum;
+	else _error_("solution not supported yet");
+
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(inputs,i,iomodel,analysis_counter,analysis_type,finiteelement);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum,0.);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum,0.);
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchDataToInput(inputs,elements,"md.initialization.vz",VzEnum,0.);
+	iomodel->FetchDataToInput(inputs,elements,"md.initialization.pressure",PressureEnum,0.);
+	InputUpdateFromConstantx(inputs,elements,0.,SigmaNNEnum);
+}/*}}}*/
+void UzawaPressureAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.augmented_lagrangian_rhop",AugmentedLagrangianRhopEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.augmented_lagrangian_rholambda",AugmentedLagrangianRholambdaEnum));
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           UzawaPressureAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+void           UzawaPressureAnalysis::PreCore(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* UzawaPressureAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* UzawaPressureAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* UzawaPressureAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble  D_scalar,Jdet;
+	IssmDouble *xyz_list = NULL;
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke   = element->NewElementMatrix();
+	IssmDouble*    M    = xNew<IssmDouble>(numnodes);
+
+	IssmDouble connectivity;
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	int numvertices = element->GetNumberOfVertices();
+
+	//Gauss* gauss = element->NewGauss(5);
+	//while(gauss->next()){
+	//	element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+	//	this->GetM(M,element,gauss);
+	//	D_scalar=gauss->weight*Jdet;
+	//	//TripleMultiply(M,1,numnodes,1,
+	//	//			&D_scalar,1,1,0,
+	//	//			M,1,numnodes,0,
+	//	//			&Ke->values[0],1);
+
+	//}
+	for(int iv=0;iv<numvertices;iv++){
+		connectivity=(IssmDouble)element->VertexConnectivity(iv);
+		Ke->values[iv*numvertices+iv]=1./connectivity;
+	}
+
+	/*Clean up and return*/
+	//delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(M);
+	return Ke;
+}/*}}}*/
+ElementVector* UzawaPressureAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Intermediaries*/
+	int          dim;
+	IssmDouble   Jdet,rhop,divu;
+	IssmDouble   *xyz_list = NULL;
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Retrieve all inputs and parameters*/
+	element->FindParam(&dim,DomainDimensionEnum);
+	element->FindParam(&rhop,AugmentedLagrangianRhopEnum);
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/*Initialize Element matrix and vectors*/
+	ElementVector *pe    = element->NewElementVector();
+	IssmDouble    *basis = xNew<IssmDouble>(numnodes);
+	IssmDouble     dvx[3];
+	IssmDouble     dvy[3];
+	IssmDouble     dvz[3];
+
+	Input* vx_input=element->GetInput(VxEnum);     _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum);     _assert_(vy_input);
+	Input* vz_input = NULL;
+	if(dim==3){vz_input=element->GetInput(VzEnum); _assert_(vz_input);}
+
+	Gauss* gauss = element->NewGauss(5);
+	while(gauss->next()){
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis, gauss);
+		vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+		if(dim==3){
+			vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
+		}
+
+		divu=dvx[0]+dvy[1];
+		if (dim==3) divu=divu+dvz[2];
+
+		for(int i=0;i<numnodes;i++){
+			pe->values[i] += - rhop * divu * Jdet * gauss->weight * basis[i];
+		}
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	return pe;
+}/*}}}*/
+void           UzawaPressureAnalysis::GetM(IssmDouble* M,Element* element,Gauss* gauss){/*{{{*/
+	/*Compute B  matrix. M=[M1 M2 M3] */
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Get nodal functions*/
+	IssmDouble* basis=xNew<IssmDouble>(numnodes);
+	element->NodalFunctions(basis,gauss);
+
+	/*Build B: */
+	for(int i=0;i<numnodes;i++){
+		M[i] = basis[i];
+	}
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(basis);
+}/*}}}*/
+void           UzawaPressureAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void           UzawaPressureAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           UzawaPressureAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	int        dim;
+	int        *doflist       = NULL;
+	IssmDouble rholambda,un,vx,vy,vz,sigmann;
+	IssmDouble *xyz_list_base = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes      = element->GetNumberOfNodes();
+	int numnodessigma;
+	if(element->element_type==P1Enum) numnodessigma=element->GetNumberOfNodes(P2Enum);
+	else if(element->element_type==P1DGEnum) numnodessigma=element->GetNumberOfNodes(P2Enum);
+	else _error_("finite element not supported yet");
+
+	element->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch dof list and allocate solution vector*/
+	element->GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values        = xNew<IssmDouble>(numnodes);
+	IssmDouble* valueslambda  = xNewZeroInit<IssmDouble>(numnodessigma);
+	IssmDouble* pressure      = xNew<IssmDouble>(numnodes);
+	Input* vx_input           = element->GetInput(VxEnum);      _assert_(vx_input);
+	Input* vy_input           = element->GetInput(VyEnum);      _assert_(vy_input);
+	Input* vz_input           = NULL;
+	if(dim==3){vz_input       = element->GetInput(VzEnum);      _assert_(vz_input);}
+	element->GetInputListOnNodes(&pressure[0],PressureEnum);
+
+	/*Update pressure enum first*/
+	for(int i=0;i<numnodes;i++){
+		values[i]  = pressure[i] + solution[doflist[i]];
+	}
+	element->AddInput(PressureEnum,values,element->GetElementType());
+
+	/*Now compute sigmann if on base*/
+	if(element->IsOnBase() && 0){ 
+		Input* sigmann_input      = element->GetInput(SigmaNNEnum); _assert_(sigmann_input);
+		if(dim==3) _error_("not implemented yet");
+
+		int baselist[3];
+		int onbase=0;
+		IssmDouble  Jdet;
+		IssmDouble bed_normal[3];
+		IssmDouble  Jlambda[3][3]  = {0.0};
+		IssmDouble  Cuk[3]         = {0.0};
+		IssmDouble  deltalambda[3] = {0.0};
+		IssmDouble* vertexonbase  = xNew<IssmDouble>(numnodessigma);
+		Input* vertexonbase_input = element->GetInput(MeshVertexonbaseEnum); _assert_(vertexonbase_input);
+		Gauss* gauss = element->NewGauss();
+
+		IssmDouble* basis = xNewZeroInit<IssmDouble>(numnodessigma);
+		element->GetVerticesCoordinatesBase(&xyz_list_base);
+		element->NormalBase(&bed_normal[0],xyz_list_base);
+		element->FindParam(&rholambda,AugmentedLagrangianRholambdaEnum);
+
+		for(int i=0;i<numnodessigma;i++){
+			gauss->GaussNode(P2Enum,i);
+			vertexonbase_input->GetInputValue(&vertexonbase[i], gauss);
+			if(vertexonbase[i]==1){ 
+				baselist[onbase]=i;
+				onbase += 1;
+			}
+		}
+		if(onbase!=3) _error_("basal nodes of element not found");
+
+		delete gauss;
+		gauss = element->NewGaussBase(3);
+		while(gauss->next()){
+
+			/*Compute Jlambda*/
+			element->NodalFunctionsP2(basis,gauss);
+			element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
+			for(int i=0;i<3;i++){
+				for(int j=0;j<3;j++){
+					Jlambda[i][j] += Jdet*gauss->weight*basis[baselist[i]]*basis[baselist[j]];
+				}
+			}
+
+			/*Compute rho_lambd C u^k*/
+			vx_input->GetInputValue(&vx, gauss);
+			vy_input->GetInputValue(&vy, gauss);
+			un=bed_normal[0]*vx + bed_normal[1]*vy;
+			for(int i=0;i<3;i++) Cuk[i] += - un*rholambda*Jdet*gauss->weight*basis[baselist[i]];
+		}
+
+		/*Now update sigmann*/
+		Matrix3x3Solve(&deltalambda[0],&Jlambda[0][0],&Cuk[0]);
+		delete gauss;
+		gauss = element->NewGauss();
+		for(int i=0;i<3;i++){
+			gauss->GaussNode(P2Enum,baselist[i]);
+			sigmann_input->GetInputValue(&sigmann, gauss);
+			valueslambda[baselist[i]] = sigmann + deltalambda[i];
+		}
+
+		delete gauss;
+		xDelete<IssmDouble>(vertexonbase);
+		xDelete<IssmDouble>(xyz_list_base);
+		xDelete<IssmDouble>(basis);
+
+		element->AddInput(SigmaNNEnum,valueslambda,P2Enum);
+	}
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(valueslambda);
+	xDelete<IssmDouble>(pressure);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           UzawaPressureAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/UzawaPressureAnalysis.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/UzawaPressureAnalysis.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/UzawaPressureAnalysis.h	(revision 27955)
@@ -0,0 +1,35 @@
+/*! \file UzawaPressureAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _UzawaPressureAnalysis_
+#define _UzawaPressureAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class UzawaPressureAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,Inputs* inputs,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
+
+		/*Finite element Analysis*/
+		void           Core(FemModel* femmodel);
+		void           PreCore(FemModel* femmodel);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetM(IssmDouble* M,Element* element,Gauss* gauss);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element*  element,int control_type,int control_interp,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/analyses/analyses.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/analyses/analyses.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/analyses/analyses.h	(revision 27955)
@@ -0,0 +1,54 @@
+/*
+ * analyses.h:
+ */
+
+#ifndef _ANALYSES_H_
+#define _ANALYSES_H_
+
+#include "./Analysis.h"
+
+#include "./AdjointBalancethicknessAnalysis.h"
+#include "./AdjointBalancethickness2Analysis.h"
+#include "./AdjointHorizAnalysis.h"
+#include "./AgeAnalysis.h"
+#include "./BalancethicknessAnalysis.h"
+#include "./Balancethickness2Analysis.h"
+#include "./BalancethicknessSoftAnalysis.h"
+#include "./BalancevelocityAnalysis.h"
+#include "./DamageEvolutionAnalysis.h"
+#include "./DebrisAnalysis.h"
+#include "./DepthAverageAnalysis.h"
+#include "./EnthalpyAnalysis.h"
+#include "./ExtrudeFromBaseAnalysis.h"
+#include "./ExtrudeFromTopAnalysis.h"
+#include "./ExtrapolationAnalysis.h"
+#include "./FreeSurfaceBaseAnalysis.h"
+#include "./FreeSurfaceTopAnalysis.h"
+#include "./GLheightadvectionAnalysis.h"
+#include "./LoveAnalysis.h"
+#include "./EsaAnalysis.h"
+#include "./HydrologyArmapwAnalysis.h"
+#include "./HydrologyDCEfficientAnalysis.h"
+#include "./HydrologyDCInefficientAnalysis.h"
+#include "./HydrologyShreveAnalysis.h"
+#include "./HydrologyTwsAnalysis.h"
+#include "./HydrologyGlaDSAnalysis.h"
+#include "./HydrologyShaktiAnalysis.h"
+#include "./HydrologyPismAnalysis.h"
+#include "./LevelsetAnalysis.h"
+#include "./MasstransportAnalysis.h"
+#include "./OceantransportAnalysis.h"
+#include "./SamplingAnalysis.h"
+#include "./SmbAnalysis.h"
+#include "./SealevelchangeAnalysis.h"
+#include "./MeltingAnalysis.h"
+#include "./SmoothAnalysis.h"
+#include "./StressbalanceAnalysis.h"
+#include "./StressbalanceSIAAnalysis.h"
+#include "./StressbalanceVerticalAnalysis.h"
+#include "./UzawaPressureAnalysis.h"
+#include "./L2ProjectionBaseAnalysis.h"
+#include "./L2ProjectionEPLAnalysis.h"
+#include "./ThermalAnalysis.h"
+#include "./EnumToAnalysis.h"
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/AdjacentTriangle.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/AdjacentTriangle.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/AdjacentTriangle.cpp	(revision 27955)
@@ -0,0 +1,57 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "AdjacentTriangle.h"
+#include "Mesh.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+	//See header file
+
+	/*Methods*/
+	int  AdjacentTriangle::Locked() const {/*{{{*/
+		return t->AdjEdgeIndex[a] & 4;
+	}
+	/*}}}*/
+	int  AdjacentTriangle::GetAllFlag_UnSwap() const {/*{{{*/
+		// take all flag except MarkUnSwap
+		return t->AdjEdgeIndex[a] & 1012;
+	}
+	/*}}}*/
+	void AdjacentTriangle::SetLock(){/*{{{*/
+		t->SetLocked(a);
+	}
+	/*}}}*/
+	AdjacentTriangle AdjacentTriangle::Adj() const {/*{{{*/
+		return  t->Adj(a);
+	}
+	/*}}}*/
+	BamgVertex* AdjacentTriangle::EdgeVertex(const int & i) const {/*{{{*/
+		return t->vertices[VerticesOfTriangularEdge[a][i]];
+	}
+	/*}}}*/
+	long long & AdjacentTriangle::det() const {/*{{{*/
+		return t->det;
+	}
+	/*}}}*/
+	int AdjacentTriangle::swap(){/*{{{*/
+		return  t->swap(a);
+	}
+	/*}}}*/
+	void AdjacentTriangle::SetAdj2(const AdjacentTriangle & ta, int l  ){/*{{{*/
+		//set Adjacent Triangle of a triangle
+		if(t) {
+			t->adj[a]=ta.t;
+			t->AdjEdgeIndex[a]=ta.a|l;
+		}
+		if(ta.t) {
+			ta.t->adj[ta.a] = t ;
+			ta.t->AdjEdgeIndex[ta.a] = a| l ;
+		}
+	}
+	/*}}}*/
+
+} 
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/AdjacentTriangle.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/AdjacentTriangle.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/AdjacentTriangle.h	(revision 27955)
@@ -0,0 +1,42 @@
+#ifndef _TRIANGLEADJACENT_H_
+#define _TRIANGLEADJACENT_H_
+
+#include "./include.h"
+#include "./BamgVertex.h"
+
+namespace bamg {
+
+	class Triangle;
+	class Triangle;
+
+	class AdjacentTriangle {
+
+		public:
+			Triangle* t; //pointer toward the triangle
+			int  a;      //Edge number
+
+			//Constructors
+			AdjacentTriangle():a(0),t(NULL) {};
+			AdjacentTriangle(Triangle* tt,int  aa): t(tt),a(aa &3) {};
+
+			//Operators
+			operator Triangle * () const {return t;}
+			operator Triangle & () const {return *t;}
+			operator int() const {return a;}
+			AdjacentTriangle & operator++(){ a= NextEdge[a]; return *this; }
+			AdjacentTriangle operator--(){ a= PreviousEdge[a]; return *this; }
+
+			//Methods
+
+			//Methods
+			int  Locked() const;
+			int  GetAllFlag_UnSwap() const;
+			void SetLock();
+			void SetAdj2(const AdjacentTriangle &ta, int l=0);
+			int  swap();
+			AdjacentTriangle Adj() const;
+			BamgVertex* EdgeVertex(const int & i) const;
+			long long& det() const;
+	};
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgGeom.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgGeom.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgGeom.cpp	(revision 27955)
@@ -0,0 +1,30 @@
+#include "./bamgobjects.h"
+#include "../shared/shared.h"
+
+/*Constructors/Destructors*/
+BamgGeom::BamgGeom(){/*{{{*/
+
+	this->VerticesSize[0]=0,          this->VerticesSize[1]=0;          this->Vertices=NULL;
+	this->EdgesSize[0]=0,             this->EdgesSize[1]=0;             this->Edges=NULL;
+	this->TangentAtEdgesSize[0]=0,    this->TangentAtEdgesSize[1]=0;    this->TangentAtEdges=NULL;
+	this->CornersSize[0]=0,           this->CornersSize[1]=0;           this->Corners=NULL;
+	this->RequiredVerticesSize[0]=0,  this->RequiredVerticesSize[1]=0;  this->RequiredVertices=NULL;
+	this->RequiredEdgesSize[0]=0,     this->RequiredEdgesSize[1]=0;     this->RequiredEdges=NULL;
+	this->CrackedEdgesSize[0]=0,      this->CrackedEdgesSize[1]=0;      this->CrackedEdges=NULL;
+	this->SubDomainsSize[0]=0,        this->SubDomainsSize[1]=0;        this->SubDomains=NULL;
+
+}
+/*}}}*/
+BamgGeom::~BamgGeom(){/*{{{*/
+
+	xDelete<double>(this->Vertices);
+	xDelete<double>(this->Edges);
+	xDelete<double>(this->TangentAtEdges);
+	xDelete<double>(this->Corners);
+	xDelete<double>(this->RequiredVertices);
+	xDelete<double>(this->RequiredEdges);
+	xDelete<double>(this->CrackedEdges);
+	xDelete<double>(this->SubDomains);
+
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgGeom.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgGeom.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgGeom.h	(revision 27955)
@@ -0,0 +1,31 @@
+/*!\file:  BamgGeom.h
+ */ 
+
+#ifndef _BAMGGEOM_H_
+#define _BAMGGEOM_H_
+
+class BamgGeom{
+
+	public:
+		int     VerticesSize[2];
+		double* Vertices;
+		int     EdgesSize[2];
+		double* Edges;
+		int     TangentAtEdgesSize[2];
+		double* TangentAtEdges;
+		int     CornersSize[2];
+		double* Corners;
+		int     RequiredVerticesSize[2];
+		double* RequiredVertices;
+		int     RequiredEdgesSize[2];
+		double* RequiredEdges;
+		int     CrackedEdgesSize[2];
+		double* CrackedEdges;
+		int     SubDomainsSize[2];
+		double* SubDomains;
+
+		BamgGeom();
+		~BamgGeom();
+};
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgMesh.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgMesh.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgMesh.cpp	(revision 27955)
@@ -0,0 +1,51 @@
+#include "./bamgobjects.h"
+#include "../shared/shared.h"
+
+/*Constructors/Destructors*/
+BamgMesh::BamgMesh(){/*{{{*/
+
+	this->VerticesSize[0]=0,                  this->VerticesSize[1]=0;                 this->Vertices=NULL;          this->PreviousNumbering = NULL;
+	this->EdgesSize[0]=0,                     this->EdgesSize[1]=0;                    this->Edges=NULL;
+	this->TrianglesSize[0]=0,                 this->TrianglesSize[1]=0;                this->Triangles=NULL;
+
+	this->SubDomainsSize[0]=0,                this->SubDomainsSize[1]=0;               this->SubDomains=NULL;
+	this->SubDomainsFromGeomSize[0]=0,        this->SubDomainsFromGeomSize[1]=0;       this->SubDomainsFromGeom=NULL;
+	this->CrackedVerticesSize[0]=0,           this->CrackedVerticesSize[1]=0;          this->CrackedVertices=NULL;
+	this->CrackedEdgesSize[0]=0,              this->CrackedEdgesSize[1]=0;             this->CrackedEdges=NULL;
+
+	this->VerticesOnGeomVertexSize[0]=0,      this->VerticesOnGeomVertexSize[1]=0;     this->VerticesOnGeomVertex=NULL;
+	this->VerticesOnGeomEdgeSize[0]=0,        this->VerticesOnGeomEdgeSize[1]=0;       this->VerticesOnGeomEdge=NULL;
+	this->EdgesOnGeomEdgeSize[0]=0,           this->EdgesOnGeomEdgeSize[1]=0;          this->EdgesOnGeomEdge=NULL;
+
+	this->IssmEdgesSize[0]=0,                 this->IssmEdgesSize[1]=0;                this->IssmEdges=NULL;
+	this->IssmSegmentsSize[0]=0,              this->IssmSegmentsSize[1]=0;             this->IssmSegments=NULL;
+
+	this->ElementConnectivitySize[0]=0,       this->ElementConnectivitySize[1]=0;      this->ElementConnectivity=NULL;
+	this->NodalConnectivitySize[0]=0,         this->NodalConnectivitySize[1]=0;        this->NodalConnectivity=NULL;
+	this->NodalElementConnectivitySize[0]=0,  this->NodalElementConnectivitySize[1]=0; this->NodalElementConnectivity=NULL;
+}
+/*}}}*/
+BamgMesh::~BamgMesh(){/*{{{*/
+
+	xDelete<double>(this->Vertices);
+	xDelete<double>(this->PreviousNumbering);
+	xDelete<double>(this->Edges);
+	xDelete<double>(this->Triangles);
+
+	xDelete<double>(this->SubDomains);
+	xDelete<double>(this->SubDomainsFromGeom);
+	xDelete<double>(this->CrackedVertices);
+	xDelete<double>(this->CrackedEdges);
+
+	xDelete<double>(this->VerticesOnGeomVertex);
+	xDelete<double>(this->VerticesOnGeomEdge);
+	xDelete<double>(this->EdgesOnGeomEdge);
+
+	xDelete<double>(this->IssmEdges);
+	xDelete<double>(this->IssmSegments);
+
+	xDelete<double>(this->ElementConnectivity);
+	xDelete<double>(this->NodalConnectivity);
+	xDelete<double>(this->NodalElementConnectivity);
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgMesh.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgMesh.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgMesh.h	(revision 27955)
@@ -0,0 +1,51 @@
+/*!\file:  BamgMesh.h
+ */ 
+
+#ifndef _BAMGMESH_H_
+#define _BAMGMESH_H_
+
+class BamgMesh{
+
+	public:
+
+		int     VerticesSize[2];
+		double* Vertices;
+		double* PreviousNumbering;
+		int     EdgesSize[2];
+		double* Edges;
+		int     TrianglesSize[2];
+		double* Triangles;
+
+		int     VerticesOnGeomVertexSize[2];
+		double* VerticesOnGeomVertex;
+		int     VerticesOnGeomEdgeSize[2];
+		double* VerticesOnGeomEdge;
+		int     EdgesOnGeomEdgeSize[2];
+		double* EdgesOnGeomEdge;
+
+		int     SubDomainsSize[2];
+		double* SubDomains;
+		int     SubDomainsFromGeomSize[2];
+		double* SubDomainsFromGeom;
+		int     CrackedVerticesSize[2];
+		double* CrackedVertices;
+		int     CrackedEdgesSize[2];
+		double* CrackedEdges;
+
+		/*Output for ISSM*/
+		int     IssmEdgesSize[2];
+		double* IssmEdges;
+		int     IssmSegmentsSize[2];
+		double* IssmSegments;
+		int     ElementConnectivitySize[2];
+		double* ElementConnectivity;
+		int     NodalConnectivitySize[2];
+		double* NodalConnectivity;
+		int     NodalElementConnectivitySize[2];
+		double* NodalElementConnectivity;
+
+		BamgMesh();
+		~BamgMesh();
+};
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgOpts.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgOpts.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgOpts.cpp	(revision 27955)
@@ -0,0 +1,110 @@
+#include "./bamgobjects.h"
+#include "../shared/shared.h"
+
+/*Constructors/Destructors*/
+BamgOpts::BamgOpts(){/*{{{*/
+
+	this->anisomax          = 0;
+	this->cutoff            = 0;
+	this->coeff             = 0;
+	this->errg              = 0;
+	this->gradation         = 0;
+	this->Hessiantype       = 0;
+	this->maxnbv            = 0;
+	this->maxsubdiv         = 0;
+	this->Metrictype        = 0;
+	this->nbjacobi          = 0;
+	this->nbsmooth          = 0;
+	this->omega             = 0;
+	this->power             = 0;
+	this->verbose           = 0;
+
+	this->Crack             = 0;
+	this->KeepVertices      = 0;
+	this->splitcorners      = 0;
+
+	this->hmin              = 0;
+	this->hmax              = 0;
+	this->hminVertices=NULL; this->hminVerticesSize[0]=this->hminVerticesSize[1]=0;
+	this->hmaxVertices=NULL; this->hmaxVerticesSize[0]=this->hmaxVerticesSize[1]=0;
+	this->hVertices=NULL;    this->hVerticesLength=0;
+	this->metric=NULL;       this->metricSize[0]=this->metricSize[1]=0;
+	this->field=NULL;        this->fieldSize[0]=this->fieldSize[1]=0;
+	this->err=NULL;          this->errSize[0]=this->errSize[1]=0;
+
+}
+/*}}}*/
+BamgOpts::~BamgOpts(){/*{{{*/
+
+	xDelete<double>(this->hminVertices);
+	xDelete<double>(this->hmaxVertices);
+	xDelete<double>(this->hVertices);
+	xDelete<double>(this->metric);
+	xDelete<double>(this->field);
+	xDelete<double>(this->err);
+
+}
+/*}}}*/
+
+/*Methods*/
+void BamgOpts::Check(void){/*{{{*/
+
+	if(this->anisomax<1) _error_("'anisomax' option should be >=1");
+	if(this->coeff==0) _error_("'coeff' should be positive");
+	if(this->errg<0) _error_("'errg' option should be >0");
+	if(this->gradation<1) _error_("'gradation' option should be >=1");
+	if(this->Hessiantype!=0  && this->Hessiantype!=1) _error_("'Hessiantype' supported options are 0 and 1");
+	if(this->maxnbv<3) _error_("'maxnbv' option should be >3");
+	if(this->maxsubdiv<=1) _error_("'maxsubdiv' should be >1");
+	if(this->Metrictype!=0   && this->Metrictype!=1 && this->Metrictype!=2) _error_("'Metrictype' supported options are 0, 1 and 2");
+	if(this->nbjacobi<=0) _error_("'nbjacobi' option should be >0");
+	if(this->nbsmooth<=0) _error_("'nbsmooth' option should be >0");
+
+	if(this->Crack!=0  && this->Crack!=1) _error_("'Crack' supported options are 0 and 1");
+	if(this->KeepVertices!=0 && this->KeepVertices!=1) _error_("'KeepVertices' supported options are 0 and 1");
+
+	if(this->hmin<=0) _error_("'hmin' option should be >0");
+	if(this->hmax<=0 || this->hmax<this->hmin) _error_("'hmax' option should be between 0 and hmin=" << this->hmin);
+	if(this->hminVertices && this->hminVerticesSize[1]!=1) _error_("'hminVertices' should be a column");
+	if(this->hmaxVertices && this->hmaxVerticesSize[1]!=1) _error_("'hmaxVertices' should be a column");
+	if(this->hVertices && this->hVerticesLength<2) _error_("'hVertices' should be a vector");
+	if(this->metric && (this->metricSize[1]!=1 && this->metricSize[1]!=3)) _error_("'metric' should have either 1 (iso) or 3 (aniso) columns.");
+	if(this->field){
+		if(this->errSize[1]!=this->fieldSize[1]) _error_("'err' should have "<< this->fieldSize[1]<<" columns");
+		for(int i=0;i<this->fieldSize[1];i++){if (this->err[i]<=0) _error_("'err' option should be >0");};
+	}
+
+}
+/*}}}*/
+void BamgOpts::Echo(){/*{{{*/
+
+	_printf_("anisomax: "    << this->anisomax<<"\n");
+	_printf_("cutoff: "      << this->cutoff<<"\n");
+	_printf_("coeff: "       << this->coeff<<"\n");
+	_printf_("errg: "        << this->errg<<"\n");
+	_printf_("gradation: "   << this->gradation<<"\n");
+	_printf_("Hessiantype: " << this->Hessiantype<<"\n");
+	_printf_("maxnbv: "      << this->maxnbv<<"\n");
+	_printf_("maxsubdiv: "   << this->maxsubdiv<<"\n");
+	_printf_("Metrictype: "  << this->Metrictype<<"\n");
+	_printf_("nbjacobi: "    << this->nbjacobi<<"\n");
+	_printf_("nbsmooth: "    << this->nbsmooth<<"\n");
+	_printf_("omega: "       << this->omega<<"\n");
+	_printf_("power: "       << this->power<<"\n");
+	_printf_("verbose: "     << this->verbose<<"\n");
+   _printf_("\n"<<"\n");
+	_printf_("Crack: "        << this->Crack<<"\n");
+	_printf_("KeepVertices: " << this->KeepVertices<<"\n");
+	_printf_("splitcorners: " << this->splitcorners<<"\n");
+
+	_printf_("hmin: "<<this->hmin<<"\n");
+	_printf_("hmax: "<<this->hmax<<"\n");
+   _printf_("hVerticesLength: "  << this->hVerticesLength     << "\n");
+   _printf_("hminVerticesSize: " << this->hminVerticesSize[0] << "x"    << this->hminVerticesSize[1] << "\n");
+   _printf_("hmaxVerticesSize: " << this->hmaxVerticesSize[0] << "x"    << this->hmaxVerticesSize[1] << "\n");
+   _printf_("metricSize: "       << this->metricSize[0]       << "x"    << this->metricSize[1]       << "\n");
+   _printf_("fieldSize: "        << this->fieldSize[0]        << "x"    << this->fieldSize[1]        << "\n");
+   _printf_("errSize: "          << this->errSize[0]          << "x"    << this->errSize[1]          << "\n");
+
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgOpts.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgOpts.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgOpts.h	(revision 27955)
@@ -0,0 +1,56 @@
+/*!\file:  BamgOpts.h
+ * \brief place holder for optimization function arguments
+ */
+
+#ifndef _BAMGOPTS_H_
+#define _BAMGOPTS_H_
+
+class BamgOpts{
+
+	public:
+
+		/*Parameters*/
+		double  anisomax;
+		double  cutoff;
+		double  coeff;
+		double  errg;
+		double  gradation;
+		int     Hessiantype;
+		int     maxnbv;
+		double  maxsubdiv;
+		int     Metrictype;
+		int     nbjacobi;
+		int     nbsmooth;
+		double  omega;
+		double  power;
+		int     verbose;
+
+		/*Flags*/
+		int     Crack;
+		int     KeepVertices;
+		int     splitcorners;
+
+		/*Metric related*/
+		double  hmin;
+		double  hmax;
+		int     hminVerticesSize[2];
+		double* hminVertices;
+		int     hmaxVerticesSize[2];
+		double* hmaxVertices;
+		int     hVerticesLength;
+		double* hVertices;
+		int     metricSize[2];
+		double* metric;
+		int     fieldSize[2];
+		double* field;
+		int     errSize[2];
+		double* err;
+
+		BamgOpts();
+		~BamgOpts();
+
+		void Check(void);
+		void Echo(void);
+
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgQuadtree.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgQuadtree.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgQuadtree.cpp	(revision 27955)
@@ -0,0 +1,519 @@
+#include <limits.h>
+#include <string.h>
+#include <stdlib.h>
+#include "./bamgobjects.h"
+
+namespace bamg {
+
+#define ABS(i) ((i)<0 ?-(i) :(i))
+#define MAXDEPTH  30
+#define MAXISIZE  1073741824 //2^30
+#define MAXICOORD 1073741823 //2^30 - 1 = =111...111 (29 times one)
+
+	/*DOCUMENTATION What is a BamgQuadtree? {{{
+	 * A Quadtree is a very simple way to group vertices according
+	 * to their locations. A square that holds all the points of the mesh
+	 * (or the geometry) is divided into 4 boxes. As soon as one box
+	 * hold more than 4 vertices, it is divided into 4 new boxes, etc...
+	 * There cannot be more than MAXDEEP (=30) subdivision.
+	 * This process is like a Dichotomy in dimension 2
+	 *
+	 *  + - -  -    - -    -    - - + -   - + - + - + - -     - - +
+	 *  |                           |       |   | X |             |
+	 *                                      + - + - +
+	 *  |                           |       |   |   |             |
+	 *                              + -   - + - + - +             +
+	 *  |                           |       |       |             |
+	 *                         
+	 *  |                           |       |       |             |
+	 *  + - -  -    - -    -    - - + -   - + -   - + - -     - - +
+	 *  |                           |               |             |
+	 *                         
+	 *  |                           |               |             |
+	 *                         
+	 *  |                           |               |             |
+	 *  |                           |               |             |
+	 *  + - -  -    - -    -    - - + -   -   -   - + - -     - - +
+	 *  |                           |                             |
+	 *                         
+	 *  |                           |                             |
+	 *                         
+	 *  |                           |                             |
+	 *                         
+	 *  |                           |                             |
+	 *  |                           |                             |
+	 *  |                           |                             |
+	 *  |                           |                             |
+	 *  |                           |                             |
+	 *  + - -  -    - -    -    - - + -   -   -   -   - -     - - +
+	 *
+	 * The coordinate system used in a quadtree are integers to avoid
+	 * round-off errors. The vertex in the lower left box has the coordinates
+	 * (0 0) 
+	 * The upper right vertex has the follwing coordinates:
+	 * 2^30 -1           2^30 -1        in decimal
+	 * 0 1 1 1 .... 1    0 1 1 1 .... 1 in binary
+	 *  \--   29  --/     \--   29  --/
+	 * Using binaries is therefore very easy to locate a vertex in a box:
+	 * we just need to look at the bits from the left to the right (See ::Add)
+	 }}}*/
+
+	/*Constructors/Destructors*/
+	BamgQuadtree::BamgQuadtree(){/*{{{*/
+
+		/*Initialize fields*/
+		this->NbQuadtreeBox = 0;
+		this->NbVertices    = 0;
+
+		/*Create Root, pointer toward the main box*/
+		this->root=NewBamgQuadtreeBox();
+
+	} /*}}}*/
+	BamgQuadtree::BamgQuadtree(Mesh * t,long nbv){ /*{{{*/
+
+		/*Initialize fields*/
+		this->NbQuadtreeBox = 0;
+		this->NbVertices    = 0;
+
+		/*Create Root, pointer toward the main box*/
+		this->root=NewBamgQuadtreeBox();
+
+		/*Check Sizes*/
+		_assert_(MAXISIZE>MAXICOORD);
+
+		/*Add all vertices of the mesh*/
+		if(nbv==-1) nbv=t->nbv;
+		for(int i=0;i<nbv;i++){
+			this->Add(t->vertices[i]);
+		}
+
+	}
+	/*}}}*/
+	BamgQuadtree::~BamgQuadtree() {/*{{{*/
+
+		vector<BamgQuadtreeBox*>::reverse_iterator object;
+		for(object=boxcontainer.rbegin() ; object <boxcontainer.rend(); object++ ){
+			delete (*object);
+		}
+		boxcontainer.clear();
+		root=NULL;
+	}
+	/*}}}*/
+
+	/*Methods*/
+	void          BamgQuadtree::Add(BamgVertex &w){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, BamgQuadtree.cpp/Add)*/
+		BamgQuadtreeBox** pb=NULL;
+		BamgQuadtreeBox*  b=NULL;
+
+		/*Get integer coodinate of current point w*/
+		long i=w.i.x, j=w.i.y;
+
+		/*Initialize level*/
+		long level=MAXISIZE;
+
+		/*Get inital box (the largest)*/
+		pb = &root;
+
+		/*Find the smallest box where w is located*/
+		while((b=*pb) && (b->nbitems<0)){ 
+
+			//shift b->nbitems by -1
+			b->nbitems--;
+
+			//shifted righ by one bit: level=00000010 -> 00000001
+			level >>= 1;
+
+			//Get next subbox according to the bit value (level)
+			pb = &b->box[BoxNumber(i,j,level)];
+		}
+
+		/*OK, we have found b, a Subbox holding vertices (might be full)
+		  check that the vertex is not already in the box*/
+		if (b){      
+			if (b->nbitems > 3 &&  b->v[3] == &w) return;
+			if (b->nbitems > 2 &&  b->v[2] == &w) return;
+			if (b->nbitems > 1 &&  b->v[1] == &w) return;
+			if (b->nbitems > 0 &&  b->v[0] == &w) return;
+		}
+
+		/*check that l is not 0 (this should not happen as MAXDEPTH = 30)*/
+		_assert_(level>0);
+
+		/*Now, try to add the vertex, if the subbox is full (nbitems=4), we have to divide it
+		  in 4 new subboxes*/
+		while ((b= *pb) && (b->nbitems == 4)){ // the BamgQuadtreeBox is full
+
+			/*Copy the 4 vertices in the current BamgQuadtreebox*/
+			BamgVertex* v4[4];
+			v4[0]= b->v[0];
+			v4[1]= b->v[1];
+			v4[2]= b->v[2];
+			v4[3]= b->v[3];
+
+			/*set nbitems as negative 
+			 * (box full -> holds 4 pointers toward subboxes and not 4 vertices)*/
+			b->nbitems = -b->nbitems;
+
+			/*Initialize the 4 pointers toward the 4 subboxes*/
+			b->box[0]=b->box[1]=b->box[2]=b->box[3]=NULL;
+
+			/*level = 0010000 -> 0001000*/
+			level >>= 1;
+
+			/*Put the four vertices in the new boxes*/
+			for (int k=0;k<4;k++){
+
+				int          ij;
+				/*bb is the new "sub"box of b where v4[k] is located*/
+				BamgQuadtreeBox *bb = b->box[ij=BoxNumber(v4[k]->i.x,v4[k]->i.y,level)];
+
+				// alloc the BamgQuadtreeBox
+				if (!bb) bb=b->box[ij]=NewBamgQuadtreeBox(); 
+
+				/*Copy the current vertex*/
+				bb->v[bb->nbitems++] = v4[k];
+			}
+
+			/*Get the subbox where w (i,j) is located*/
+			pb = &b->box[BoxNumber(i,j,level)];
+		}
+
+		/*alloc the BamgQuadtreeBox if necessary*/
+		if (!(b=*pb)) b=*pb= NewBamgQuadtreeBox();
+
+		/*Add w*/
+		b->v[b->nbitems++]=&w;
+
+		//Increase NbVertices by one (we have one new vertex)
+		NbVertices++;
+	}
+	/*}}}*/
+	int           BamgQuadtree::BoxNumber(int i,int j,int l){/*{{{*/
+		/* 
+		 * 
+		 *    J    j
+		 *    ^    ^
+		 *    |    | +--------+--------+
+		 *    |    | |        |        |
+		 * 1X |    | |   2    |   3    |
+		 *    |    | |        |        |
+		 *    |    | +--------+--------+
+		 *    |    | |        |        |
+		 * 0X |    | |   0    |   1    |
+		 *    |    | |        |        |
+		 *    |    | +--------+--------+
+		 *    |    +-----------------------> i
+		 *    |         
+		 *    |----------------------------> I
+		 *              X0        X1  
+		 *
+		 * box 0 -> I=0 J=0 BoxNumber=00  = 0
+		 * box 1 -> I=1 J=0 BoxNumber=01  = 1
+		 * box 2 -> I=0 J=1 BoxNumber=10  = 2
+		 * box 3 -> I=1 J=1 BoxNumber=11  = 3
+		 */
+		//BoxNumber(i,j,l) returns the box number of i and j with respect to l
+		//if !j&l and !i&l -> 0 (box zero: lower left )
+		//if !j&l and  i&l -> 1 (box one:  lower right)
+		//if  j&l and !i&l -> 2 (box two:  upper left )
+		//if  j&l and  i&l -> 3 (box three:upper right)
+		return ((j&l) ? ((i&l) ? 3:2 ) :((i&l) ? 1:0 ));
+	}/*}}}*/
+	bool          BamgQuadtree::Intersection(int a,int b,int x,int y){/*{{{*/
+		/*is [x y] in [a b]*/
+		return ((y) > (a)) && ((x) <(b));
+	}/*}}}*/
+	BamgVertex*   BamgQuadtree::NearestVertex(int xi,int yi) {/*{{{*/
+
+		/*initial output as NULL (no vertex found)*/
+		BamgVertex*  nearest_v=NULL;
+
+		/*if the tree is empty, return NULL pointer*/
+		if(!this->root->nbitems) return nearest_v; 
+
+		/*Project coordinates (xi,yi) onto [0,MAXICOORD-1] x [0,MAXICOORD-1]*/
+		int xi2 = xi;
+		int yi2 = yi;
+		if(xi<0)        xi2 = 0;
+		if(xi>MAXISIZE) xi2 = MAXICOORD;
+		if(yi<0)        yi2 = 0;
+		if(yi>MAXISIZE) yi2 = MAXICOORD;
+
+		/*Get inital box (the largest)*/
+		BamgQuadtreeBox* b = this->root;
+
+		/*Initialize level and sizes for largest box*/
+		int levelbin = (1L<<MAXDEPTH);// = 2^30
+		int        h = MAXISIZE;
+		int       hb = MAXISIZE;
+		int       i0 = 0;
+		int       j0 = 0;
+
+		/*else, find the smallest non-empty BamgQuadtreeBox containing  the point (i,j)*/
+		while(b->nbitems<0){
+
+			int hb2 = hb >> 1;                  //size of the current box
+			int k   = BoxNumber(xi2,yi2,hb2);   //box number (0,1,2 or 3)
+			BamgQuadtreeBox* b0  = b->box[k];   //pointer toward current box
+
+			/* break if box is empty (Keep previous box b)*/
+			if((b0==NULL) || (b0->nbitems==0)) break;
+
+			/*Get next Quadtree box*/
+			b  = b0;
+			hb = hb2;
+			this->SubBoxCoords(&i0,&j0,k,hb2);
+		}
+
+		/*The box b, is the smallest box containing the point (i,j) and
+		 * has the following properties:
+		 * - n0: number of items (>0 if vertices, else boxes)
+		 * - hb: box size (int)
+		 * - i0: x coordinate of the lower left corner
+		 * - j0: y coordinate of the lower left corner*/
+		int n0 = b->nbitems;
+
+		/* if the current subbox is holding vertices, we are almost done*/
+		if(n0>0){  
+			/*loop over the vertices of the box and find the closest vertex*/
+			for(int k=0;k<n0;k++){
+				int xiv = b->v[k]->i.x;
+				int yiv = b->v[k]->i.y;
+
+				int h0 = Norm(xi2,xiv,yi2,yiv);
+
+				/*is it smaller than previous value*/
+				if(h0<h){
+					h = h0;
+					nearest_v = b->v[k];
+				}
+			}
+			/*return closest vertex*/
+			return nearest_v;
+		}
+
+		/* general case: the current box is empty, we have to go backwards
+			and find the closest not-empty box and find the closest vertex*/
+
+		/*Initialize search variables*/
+		BamgQuadtreeBox* pb[MAXDEPTH];
+		int pi[MAXDEPTH];
+		int ii[MAXDEPTH];
+		int jj[MAXDEPTH];
+		pb[0]=b;                             //pointer toward the box b
+		pi[0]=b->nbitems>0?(int)b->nbitems:4;//number of boxes in b
+		ii[0]=i0;                            //i coordinate of the box lowest left corner
+		jj[0]=j0;                            //j coordinate of the box lowest left corner
+
+		/*initialize h: smallest box size, containing a vertex close to w*/
+		h=hb;
+
+		/*Main loop*/
+		int level=0;
+		do{
+			/*get current box*/
+			b = pb[level];
+
+			/*Loop over the items in current box (if not empty!)*/
+			while(pi[level]){
+
+				/*We are looping now over the items of b. k is the current index (in [0 3])*/
+				pi[level]--;
+				int k=pi[level];
+
+				/*if the current subbox is holding vertices (b->nbitems<0 is subboxes)*/
+				if (b->nbitems>0){
+					int h0 = Norm(xi2,b->v[k]->i.x,yi2,b->v[k]->i.y);
+					if (h0<h){
+						h=h0;
+						nearest_v=b->v[k];
+					}
+				}
+				/*else: current box b is pointing toward 4 boxes
+				 * test sub-box k and go deeper into the tree if it is non empty
+				 * and contains the point w modulo a size h that is either the size of the smallest
+				 * non empty box containing w, or the closest point to w (so far) */
+				else{
+					BamgQuadtreeBox* b0=b;
+
+					/*if the next box exists:*/
+					if((b=b->box[k])){
+
+						/*Get size (hb) and coordinates of the current sub-box lowest left corner*/
+						hb>>=1;
+						int iii = ii[level];
+						int jjj = jj[level];
+						this->SubBoxCoords(&iii,&jjj,k,hb);
+
+						/*if the current point (xi2,yi2) is in b (modulo h), this box is good:
+						 * it is holding vertices that are close to w */
+						if(this->Intersection(iii,iii+hb,xi2-h,xi2+h) && this->Intersection(jjj,jjj+hb,yi2-h,yi2+h)){
+							level++;
+							pb[level] = b;
+							pi[level] = b->nbitems>0 ? b->nbitems:4  ;
+							ii[level] = iii;
+							jj[level] = jjj;
+						}
+
+						/*else go backwards*/
+						else{
+							/*shifted righ by one bit: hb=001000000 -> 01000000*/
+							b=b0;
+							hb<<=1;
+						}
+					}
+					else{
+						/*Current box is NULL, go to next subbox of b (k=k-1)*/
+						b=b0;
+					}
+				}
+			}
+
+			/*We have found a vertex, now, let's try the other boxes of the previous level
+			 * in case there is a vertex closest to w that has not yet been tested*/
+			hb <<= 1;
+		}while(level--);
+
+		/*return nearest vertex pointer*/
+		return nearest_v;
+	}
+	/*}}}*/
+	int           BamgQuadtree::Norm(int xi1,int xi2,int yi1,int yi2){/*{{{*/
+
+		int deltax = xi2 - xi1;
+		int deltay = yi2 - yi1;
+
+		if(deltax<0) deltax = -deltax;
+		if(deltay<0) deltay = -deltay;
+
+		if(deltax> deltay){
+			return deltax;
+		}
+		else{
+			return deltay;
+		}
+	}/*}}}*/
+	void          BamgQuadtree::SubBoxCoords(int* pi,int*pj,int boxnumber,int length){/*{{{*/
+		/* 
+		 *         j (first bit)
+		 *         ^
+		 *         | +--------+--------+
+		 *         | |        |        |
+		 *   1X    | |   2    |   3    |
+		 *         | |        |        |
+		 *         | +--------+--------+
+		 *         | |        |        |
+		 *   0X    | |   0    |   1    |
+		 *         | |        |        |
+		 *         | +--------+--------+
+		 *         +-----------------------> i (second bit)
+		 *               X0       X1
+		 */
+
+		/*Add sub-box coordinate to i and j*/
+		//_assert_(!(*pi & length));
+		//_assert_(!(*pj & length));
+
+		/*length if first  bit of boxnumber is 1, elengthse 0*/
+		*pi += ((boxnumber & 1) ? length:0);
+		/*length if second bit of boxnumber is 1, elengthse 0*/
+		*pj += ((boxnumber & 2) ? length:0);
+
+	}/*}}}*/
+	BamgVertex*   BamgQuadtree::TooClose(BamgVertex* v,double threshold,int hx,int hy){/*{{{*/
+
+		const int i=v->i.x;
+		const int j=v->i.y;
+		const double Xx = v->r.x;
+		const double Xy = v->r.y;
+		Metric* Mx = new Metric(v->m);
+
+		BamgQuadtreeBox *pb[MAXDEPTH];
+		int  pi[MAXDEPTH];
+		int  ii[MAXDEPTH], jj[MAXDEPTH];
+		int l=0; // level
+		BamgQuadtreeBox* b;
+		int hb =  MAXISIZE;
+		int i0=0,j0=0;
+
+		// BamgVertex *vn=0;
+
+		if(!root->nbitems) return 0; // empty tree 
+
+		// general case
+		pb[0]=root;
+		pi[0]=root->nbitems>0 ?(int)root->nbitems:4;
+		ii[0]=i0;
+		jj[0]=j0;
+		do{
+			b= pb[l];
+			while(pi[l]--){ 	      
+				int k = pi[l];
+
+				if(b->nbitems>0){ // BamgVertex BamgQuadtreeBox none empty
+					int i2x = b->v[k]->i.x;
+					int i2y = b->v[k]->i.y;
+					if (ABS(i-i2x)<hx && ABS(j-i2y) <hy ){
+						double XYx = b->v[k]->r.x - Xx;
+						double XYy = b->v[k]->r.y - Xy;
+						if(LengthInterpole(Mx->Length(XYx,XYy),b->v[k]->m.Length(XYx,XYy)) < threshold){
+							delete Mx;
+							return b->v[k]; 
+						}
+					}
+				}
+				else{ // Pointer BamgQuadtreeBox 
+					BamgQuadtreeBox *b0=b;
+					if ((b=b->box[k])){
+						hb >>=1 ; // div by 2
+						int iii = ii[l];
+						int jjj = jj[l];
+						this->SubBoxCoords(&iii,&jjj,k,hb);
+
+						if(this->Intersection(iii,iii+hb,i-hx,i+hx) && this->Intersection(jjj,jjj+hb,j-hy,j+hy)){
+							pb[++l]=  b;
+							pi[l]= b->nbitems>0 ?(int)  b->nbitems : 4  ;
+							ii[l]= iii;
+							jj[l]= jjj;
+
+						}
+						else{
+							b=b0;
+							hb <<=1 ;
+						}
+					}
+					else{
+						b=b0;
+					}
+				}
+			}
+			hb <<= 1; // mul by 2 
+		}while(l--);
+
+		delete Mx;
+		return 0;
+	}
+	/*}}}*/
+
+	BamgQuadtree::BamgQuadtreeBox* BamgQuadtree::NewBamgQuadtreeBox(void){/*{{{*/
+
+		/*Output*/
+		BamgQuadtreeBox* newbox=NULL;
+
+		/*Create and initialize a new box*/
+		newbox=new BamgQuadtreeBox;
+		newbox->nbitems=0;
+		newbox->box[0]=NULL;
+		newbox->box[1]=NULL;
+		newbox->box[2]=NULL;
+		newbox->box[3]=NULL;
+
+		/*Add root to the container*/
+		boxcontainer.push_back(newbox);
+		this->NbQuadtreeBox++;
+
+		/*currentbox now points toward next quadtree box*/
+		return newbox;
+	}/*}}}*/
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgQuadtree.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgQuadtree.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgQuadtree.h	(revision 27955)
@@ -0,0 +1,50 @@
+/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, BamgQuadtree.h)*/
+#ifndef _BAMGQUADTREE_H
+#define _BAMGQUADTREE_H
+
+#include <vector>
+#include "./include.h"
+class BamgVertex;
+
+namespace bamg {
+	class BamgQuadtree{
+
+		private:
+
+			/*A quadtree box contains a maximum of 4 vertices. 4 other quadtree boxes are
+			 * created if a fifth vertex is added to the same box. A Quadtree box is therefore
+			 * composed of EITHER:
+			 * - up to 4 vertices
+			 * - 4 "sub" quadtree boxes*/
+			class BamgQuadtreeBox{ 
+				public:
+					int              nbitems;
+					BamgQuadtreeBox *box[4];
+					BamgVertex      *v[4];
+			};
+
+			/*BamgQuadtree private Fields*/
+			std::vector<BamgQuadtreeBox*> boxcontainer;
+
+		public:
+
+			/*BamgQuadtree public Fields*/
+			BamgQuadtreeBox *root;            // main box
+			long             NbQuadtreeBox;   // total number of boxes
+			long             NbVertices;      // number of points
+
+			BamgQuadtree();
+			BamgQuadtree(Mesh *t,long nbv=-1);
+			~BamgQuadtree();
+
+			void             Add(BamgVertex &w);
+			int              BoxNumber(int i,int j,int l);
+			bool             Intersection(int a,int b,int x,int y);
+			BamgVertex      *NearestVertex(int i,int j);
+			BamgQuadtreeBox *NewBamgQuadtreeBox(void);
+			int              Norm(int xi1,int yi1,int xi2,int yi2);
+			void             SubBoxCoords(int* pi,int*pj,int boxcoord,int length);
+			BamgVertex      *TooClose(BamgVertex*,double,int,int);
+	};
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgVertex.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgVertex.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgVertex.cpp	(revision 27955)
@@ -0,0 +1,217 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "./bamgobjects.h"
+#include "../shared/shared.h"
+#include "./det.h"
+
+namespace bamg {
+
+	/*Constructor/Destructor*/
+	BamgVertex::BamgVertex(){ /*{{{*/
+		this->PreviousNumber = 0;
+	}/*}}}*/
+
+	/*Methods*/
+	void BamgVertex::Echo(void){/*{{{*/
+
+		_printf_("Vertex:\n");
+		_printf_("  integer   coordinates i.x: " << i.x << ", i.y: " << i.y << "\n");
+		_printf_("  Euclidean coordinates r.x: " << r.x << ", r.y: " << r.y << "\n");
+		_printf_("  ReferenceNumber = " << ReferenceNumber << "\n");
+		_printf_("  PreviousNumber  = " << PreviousNumber << "\n");
+		m.Echo();
+
+		return;
+	}
+	/*}}}*/
+	int  BamgVertex::GetReferenceNumber() const { /*{{{*/
+		return ReferenceNumber;
+	}
+	/*}}}*/
+	void BamgVertex::MetricFromHessian(const double Hxx,const double Hyx, const double Hyy,const double smin,const double smax,const double s,double err,BamgOpts* bamgopts){/*{{{*/
+		/*Compute Metric from Hessian*/
+
+		/*get options*/
+		double power=(bamgopts->power);
+		double anisomax=(bamgopts->anisomax);
+		double CutOff=bamgopts->cutoff;
+		double hmin=(bamgopts->hmin);
+		double hmax=(bamgopts->hmax);
+		double coef=bamgopts->coeff;
+		int    Metrictype=(bamgopts->Metrictype);
+
+		/*Intermediary*/
+		double ci;
+
+		/*compute multiplicative coefficient depending on Metric Type (2/9 because it is 2d)*/
+
+		//Absolute Error
+		/*
+		 *            2         1       
+		 *Metric M = ---  ------------   Abs(Hessian)
+		 *            9   err * coeff^2  
+		 */
+		if (Metrictype==0){
+			ci= 2.0/9.0 * 1/(err*coef*coef);
+		}
+
+		//Relative Error
+		/*
+		 *            2         1            Abs(Hessian)
+		 *Metric M = ---  ------------  ----------------------
+		 *            9   err * coeff^2  max( |s| , cutoff*max(|s|) )
+		 *
+		 */
+		else if (Metrictype==1){
+			ci= 2.0/9.0 * 1/(err*coef*coef) * 1/Max( Abs(s), CutOff*(Max(Abs(smin),Abs(smax))));
+		}
+
+		//Rescaled absolute error
+		/*
+		 *            2         1            Abs(Hessian)
+		 *Metric M = ---  ------------  ---------------------- 
+		 *            9   err * coeff^2       (smax-smin)
+		 */
+		else if (Metrictype==2){
+			ci= 2.0/9.0 * 1/(err*coef*coef) * 1/(smax-smin);
+		}
+		else{
+			_error_("Metrictype " << Metrictype << " not supported yet (use 0,1 or 2(default))");
+		}
+
+		//initialize metric Miv with ci*H
+		Metric Miv(Hxx*ci,Hyx*ci,Hyy*ci);
+
+		//Get eigen values and vectors of Miv
+		EigenMetric Vp(Miv);
+
+		//move eigen valuse to their absolute values
+		Vp.Abs();
+
+		//Apply a power if requested by user
+		if(power!=1.0) Vp.pow(power);
+
+		//modify eigen values according to hmin and hmax
+		Vp.Maxh(hmax);
+		Vp.Minh(hmin);
+
+		//Bound anisotropy by 1/(anisomax)^2
+		Vp.BoundAniso2(1/(anisomax*anisomax));
+
+		//rebuild Metric from Vp
+		Metric MVp(Vp);
+
+		//Apply Metric to vertex
+		m.IntersectWith(MVp);
+
+	}
+	/*}}}*/
+	long BamgVertex::Optim(int i,int koption){ /*{{{*/
+		long ret=0;
+		if ( t && (IndexInTriangle >= 0 ) && (IndexInTriangle <3) ){
+			ret = t->Optim(IndexInTriangle,koption);
+			if(i==0){
+				t =0; // for no future optim
+				IndexInTriangle= 0;
+			}
+		}
+		return ret;
+	}
+	/*}}}*/
+	double  BamgVertex::Smoothing(Mesh &Th,Mesh &BTh,Triangle* &tstart ,double omega){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Smoothing)*/
+
+		BamgVertex* s=this;
+		BamgVertex &vP = *s,vPsave=vP;
+
+		Triangle* tbegin= t , *tria = t , *ttc;
+
+		int k=0,kk=0,j = EdgesVertexTriangle[IndexInTriangle][0],jc;
+		R2 P(s->r),PNew(0,0);
+		do {
+			k++; 
+
+			if (!tria->Hidden(j)){
+				BamgVertex &vQ = (*tria)[VerticesOfTriangularEdge[j][0]]; 
+
+				R2 Q = vQ,QP(P-Q);
+				double lQP = LengthInterpole(vP,vQ,QP);
+				PNew += Q+QP/Max(lQP,1e-20);
+				kk ++;
+			}
+			ttc =  tria->TriangleAdj(j);
+			jc = NextEdge[tria->NuEdgeTriangleAdj(j)];
+			tria = ttc;
+			j = NextEdge[jc];
+			if (k>=2000){
+				_error_("k>=2000 (Maximum number of iterations reached)");
+			}
+		} while ( tbegin != tria); 
+		if (kk<4) return 0;
+		PNew = PNew/(double)kk;
+		R2 Xmove((PNew-P)*omega);
+		PNew = P+Xmove;
+		double delta=Norme2_2(Xmove); 
+
+		long long deta[3];
+		I2 IBTh  = BTh.R2ToI2(PNew);
+
+		tstart=BTh.TriangleFindFromCoord(IBTh,deta,tstart);  
+
+		if (tstart->det <0){ // outside
+			double ba,bb;
+			AdjacentTriangle edge= CloseBoundaryEdge(IBTh,tstart,ba,bb) ;
+			tstart = edge;
+			vP.m= Metric(ba,*edge.EdgeVertex(0),bb,*edge.EdgeVertex(1));
+		}
+		else { // inside
+			double   aa[3];
+			double s = deta[0]+deta[1]+deta[2];
+			aa[0]=deta[0]/s;
+			aa[1]=deta[1]/s;
+			aa[2]=deta[2]/s;
+			vP.m = Metric(aa,(*tstart)[0],(*tstart)[1],(*tstart)[2]);
+		}
+
+		// recompute the det of the triangle
+		vP.r = PNew;
+
+		vP.i = Th.R2ToI2(PNew);
+
+		BamgVertex vPnew = vP;
+
+		int ok=1;
+		int loop=1;
+		k=0;
+		while (ok){
+			ok =0;
+			do {
+				k++; 
+				double detold = tria->det;
+				tria->det =  bamg::det( (*tria)[0],(*tria)[1]  ,(*tria)[2]);
+				if (loop) {
+					if (tria->det<0) ok =1;			       
+					else if ( (double)tria->det < detold/2 ) ok=1;
+				}
+				tria->SetUnMarkUnSwap(0);
+				tria->SetUnMarkUnSwap(1);
+				tria->SetUnMarkUnSwap(2);
+				ttc =  tria->TriangleAdj(j);
+				jc = NextEdge[tria->NuEdgeTriangleAdj(j)];
+				tria = ttc;
+				j = NextEdge[jc];
+				if (k>=2000){
+					_error_("k>=2000");
+				}
+			}while ( tbegin != tria); 
+
+			if (ok && loop) vP=vPsave; // no move 
+			loop=0;
+		}
+		return delta;
+	}
+	/*}}}*/
+} 
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgVertex.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgVertex.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/BamgVertex.h	(revision 27955)
@@ -0,0 +1,55 @@
+#ifndef _BAMGVERTEX_H_
+#define _BAMGVERTEX_H_
+
+#include "./include.h"
+#include "./Metric.h"
+#include "./BamgOpts.h"
+
+namespace bamg {
+
+	class Triangle;
+	class Mesh;
+	class VertexOnGeom;
+	class VertexOnEdge;
+
+	class BamgVertex {
+
+		public:
+
+			/*Fields*/
+			I2        i;                 // integer coordinates
+			R2        r;                 // real coordinates
+			Metric    m;
+			long      ReferenceNumber;
+			long      PreviousNumber;
+			short     IndexInTriangle;              // the vertex number in triangle; varies between 0 and 2 in t
+
+			union {
+				Triangle     *t;                      // one triangle which is containing the vertex
+				long          color;
+				BamgVertex   *MeshVertexHook;         // used in geometry BamgVertex to know the Mesh Vertex associated
+				VertexOnGeom *GeomEdgeHook;    // if IndexInTriangle == 8; // set with Mesh::SetVertexFieldOn()
+				BamgVertex   *BackgroundVertexHook;   // if IndexInTriangle == 16 on Background vertex Mesh::SetVertexFieldOnBTh()
+				VertexOnEdge *BackgroundEdgeHook;     // if IndexInTriangle == 32 on Background edge
+			};
+
+			/*Operators*/
+			operator I2() const {return i;}             // Cast operator
+			operator const R2 & () const {return r;}    // Cast operator
+			operator Metric () const {return m;}        // Cast operator
+			double operator()(R2 x) const { return m.Length(x.x,x.y);} // Get x in the metric m
+
+			/*methods (No constructor and no destructors...)*/
+			BamgVertex();
+			double Smoothing(Mesh & ,Mesh & ,Triangle  * & ,double =1);
+			void   MetricFromHessian(const double Hxx,const double Hyx, const double Hyy, const double smin,const double smax,const double s,const double err,BamgOpts* bamgopts);
+			void   Echo();
+			int    GetReferenceNumber() const;
+			I2     GetIntegerCoordinates() const{return this->i;};// avoid operator I2()
+			long   Optim(int =1,int =0); 
+
+			//inline functions
+			inline void Set(const BamgVertex &rec,const Mesh & ,Mesh & ){*this=rec;}
+	};
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/CrackedEdge.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/CrackedEdge.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/CrackedEdge.cpp	(revision 27955)
@@ -0,0 +1,32 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "CrackedEdge.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+	CrackedEdge::CrackedEdge() {/*{{{*/
+		a=NULL;
+		b=NULL;
+		E=NULL;
+		e1=NULL;
+		e2=NULL;
+		indexa[0]=-1;
+		indexa[1]=-1;
+		indexa[2]=-1;
+		indexb[0]=-1;
+		indexb[1]=-1;
+		indexb[2]=-1;
+		length=0;
+		normal.x=0;
+		normal.y=0;
+
+	}
+	/*}}}*/
+
+	/*Methods*/
+
+} 
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/CrackedEdge.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/CrackedEdge.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/CrackedEdge.h	(revision 27955)
@@ -0,0 +1,30 @@
+#ifndef _CRACKEDEDGE_H_
+#define _CRACKEDEDGE_H_
+
+#include "./typedefs.h"
+
+namespace bamg {
+
+	class Triangle;
+	class GeomEdge;
+	class Edge;
+
+	class CrackedEdge {
+
+		public:
+			Triangle* a;
+			Triangle* b; 
+			GeomEdge* E;
+			Edge* e1;
+			Edge* e2;
+			double length;
+			R2     normal;
+			long   indexa[3];
+			long   indexb[3];
+
+			//Constructors
+			CrackedEdge();
+	};
+
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Curve.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Curve.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Curve.cpp	(revision 27955)
@@ -0,0 +1,28 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "Curve.h"
+#include "Geometry.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+	Curve::Curve(){/*{{{*/
+		FirstEdge=NULL;
+		LastEdge=NULL;
+		FirstVertexIndex=0;
+		LastVertexIndex=0;
+	} 
+	/*}}}*/
+
+	/*Methods*/
+	void Curve::Set(const Curve & rec,const Geometry & Gh ,Geometry & GhNew){/*{{{*/
+		*this = rec;
+		FirstEdge = GhNew.edges + Gh.GetId(FirstEdge);    
+		LastEdge = GhNew.edges + Gh.GetId(LastEdge); 
+	}
+	/*}}}*/
+
+} 
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Curve.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Curve.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Curve.h	(revision 27955)
@@ -0,0 +1,25 @@
+#ifndef _CURVE_H_
+#define _CURVE_H_
+
+#include "../shared/shared.h"
+
+namespace bamg {
+
+	class GeomEdge;
+	class Curve;
+	class Geometry;
+
+	class Curve {
+		public:
+			GeomEdge *FirstEdge; //First edge of the curve
+			GeomEdge *LastEdge;  //Last edge of the curve
+			int FirstVertexIndex;       //Last vertex index in the last edge
+			int LastVertexIndex;        //First Vertex index in the first edge
+
+			//Methods
+			Curve();
+			void Set(const Curve & rec,const Geometry & Th ,Geometry & ThNew);
+	};
+
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Edge.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Edge.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Edge.cpp	(revision 27955)
@@ -0,0 +1,51 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "Edge.h"
+#include "Mesh.h"
+#include "Geometry.h"
+#include "../shared/shared.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+
+	/*Methods*/
+	void Edge::Set(const Mesh & Th ,long i,Mesh & ThNew){ /*{{{*/
+		*this = Th.edges[i];
+		v[0] = ThNew.vertices + Th.GetId(v[0]);    
+		v[1] = ThNew.vertices + Th.GetId(v[1]);
+		if (GeomEdgeHook) 
+		 GeomEdgeHook =  ThNew.Gh.edges+Th.Gh.GetId(GeomEdgeHook);
+		if (adj[0]) adj[0] =   ThNew.edges +   Th.GetId(adj[0]);
+		if (adj[1]) adj[1] =   ThNew.edges +   Th.GetId(adj[1]);
+	}
+	/*}}}*/
+	void Edge::Echo(void){ /*{{{*/
+		_printf_("Edge:\n");
+		_printf_("   pointers towards two vertices: " << v[0] << " " << v[1] << "\n");
+		_printf_("   ReferenceNumber = " << ReferenceNumber << "\n");
+		_printf_("   GeomEdgeHook = " << GeomEdgeHook << "\n");
+		_printf_("   two adjacent edges on the same curve: " << adj[0] << " " << adj[1] << "\n");
+	}
+	/*}}}*/
+	void Edge::Renumbering(BamgVertex *vb,BamgVertex *ve, long *renu){/*{{{*/
+
+		if (v[0] >=vb && v[0] <ve) v[0] = vb + renu[v[0]-vb];
+		if (v[1] >=vb && v[1] <ve) v[1] = vb + renu[v[1]-vb];
+
+	}
+	/*}}}*/
+	int Edge::Intersection(const  Edge & e){ /*{{{*/
+
+		/*some shecks*/
+		if (!(adj[0]==&e || adj[1]==&e)){ _error_("Intersection bug"); }
+		_assert_(adj[0]==&e || adj[1]==&e);
+
+		return adj[0]==&e?0:1;
+	}
+	/*}}}*/
+
+} 
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Edge.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Edge.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Edge.h	(revision 27955)
@@ -0,0 +1,34 @@
+#ifndef _EDGE_H_
+#define _EDGE_H_
+
+#include "./BamgVertex.h"
+#include "../shared/shared.h"
+#include "./GeomEdge.h"
+
+namespace bamg {
+
+	class Mesh;
+
+	class Edge {
+
+		public:
+			BamgVertex      *v[2];
+			long             ReferenceNumber;
+			GeomEdge *GeomEdgeHook;
+			Edge            *adj[2];       // the 2 adj edges if on the same curve
+
+			//Operators
+			BamgVertex       &operator[](int i){return *v[i];   };
+			BamgVertex       *operator()(int     i){return v[i];};
+			R2                operator()(double  t) const;// return the point
+			const BamgVertex &operator[](int i) const{return *v[i];};
+
+			//Methods
+			void Renumbering(BamgVertex *vb,BamgVertex *ve, long *renu);
+			int  Intersection(const  Edge & e);
+			void Set(const Mesh &,long,Mesh &);
+			void Echo(void);
+
+	};
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/EigenMetric.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/EigenMetric.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/EigenMetric.cpp	(revision 27955)
@@ -0,0 +1,145 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "Metric.h"
+#include "../shared/shared.h"
+
+namespace bamg {
+
+	/*Constructor*/
+	EigenMetric::EigenMetric(const Metric& M){/*{{{*/
+		/*From a metric (a11,a21,a22), get eigen values lambda1 and lambda2 and one eigen vector v*/
+
+		/*Intermediaries*/
+		double a11=M.a11,a21=M.a21,a22=M.a22;
+		double normM;
+		double delta,b;
+
+		/*To get the eigen values, we must solve the following equation:
+		 *     | a11 - lambda    a21        |
+		 * det |                            | = 0
+		 *     | a21             a22-lambda |
+		 *
+		 * We have to solve the following polynom:
+		 *  lamda^2 + ( -a11 -a22)*lambda + (a11*a22-a21*a21) = 0*/
+
+		/*Compute polynom determinant*/
+		b=-a11-a22;
+		delta=b*b - 4*(a11*a22-a21*a21);
+
+		/*Compute norm of M to avoid round off errors*/
+		normM=a11*a11 + a22*a22 + a21*a21;
+
+		/*1: normM too small: eigen values = 0*/
+		if(normM<1.e-30){
+			lambda1=0;
+			lambda2=0;
+			vx=1;
+			vy=0;
+		}
+		/*2: delta is small -> double root*/
+		else if (delta < 1.e-5*normM){
+			lambda1=-b/2;
+			lambda2=-b/2;
+			vx=1;
+			vy=0;
+		}
+		/*3: general case -> two roots*/
+		else{
+			delta     = sqrt(delta);
+			lambda1   = (-b-delta)/2.0;
+			lambda2   = (-b+delta)/2.0;
+
+			/*Now, one must find the eigen vectors. For that we use the following property of the inner product
+			 *    <Ax,y> = <x,tAy>
+			 * Here, M'(M-lambda*Id) is symmetrical, which gives:
+			 *    ∀(x,y)∈R²xR² <M'x,y> = <M'y,x>
+			 * And we have the following:
+			 *    if y∈Ker(M'), ∀x∈R² <M'x,y> = <x,M'y> = 0
+			 * We have shown that
+			 *    Im(M') ⊥ Ker(M')
+			 *
+			 * To find the eigen vectors of M, we only have to find two vectors
+			 * of the image of M' and take their perpendicular as long as they are
+			 * not 0.
+			 * To do that, we take the images (1,0) and (0,1):
+			 *  x1 = (a11 - lambda)      x2 = a21
+			 *  y1 = a21                 y2 = (a22-lambda)
+			 *
+			 * We take the vector that has the larger norm and take its perpendicular.*/
+
+			double norm1 = (a11-lambda1)*(a11-lambda1) + a21*a21; 
+			double norm2 = a21*a21 + (a22-lambda1)*(a22-lambda1);
+
+			if (norm2<norm1){
+				norm1=sqrt(norm1);
+				vx = - a21/norm1;
+				vy = (a11-lambda1)/norm1;
+			}
+			else{
+				norm2=sqrt(norm2);
+				vx = - (a22-lambda1)/norm2;
+				vy = a21/norm2;
+			}
+		}
+
+	}
+	/*}}}*/
+	EigenMetric::EigenMetric(double r1,double r2,const D2& vp1){/*{{{*/
+		this->lambda1 = r1;
+		this->lambda2 = r2;
+		this->vx = vp1.x;
+		this->vy = vp1.y;
+	}/*}}}*/
+
+	/*Methods*/
+	void   EigenMetric::Abs(){/*{{{*/
+		lambda1=bamg::Abs(lambda1),lambda2=bamg::Abs(lambda2);
+	}/*}}}*/
+	double EigenMetric::Aniso2() const  { /*{{{*/
+		return lmax()/lmin();
+	}/*}}}*/
+	void EigenMetric::Echo(void){/*{{{*/
+
+		_printf_("EigenMetric:\n");
+		_printf_("   lambda1: " << lambda1 << "\n");
+		_printf_("   lambda2: " << lambda2 << "\n");
+		_printf_("   vx: " << vx << "\n");
+		_printf_("   vy: " << vy << "\n");
+
+		return;
+	}
+	/*}}}*/
+	double EigenMetric::hmin() const {/*{{{*/
+		return sqrt(1/bamg::Max3(lambda1,lambda2,1e-30));
+	}/*}}}*/
+	double EigenMetric::hmax() const {/*{{{*/
+		return sqrt(1/bamg::Max(bamg::Min(lambda1,lambda2),1e-30));
+	}/*}}}*/
+	double EigenMetric::lmax() const {/*{{{*/
+		return bamg::Max3(lambda1,lambda2,1e-30);
+	}/*}}}*/
+	double EigenMetric::lmin() const {/*{{{*/
+		return bamg::Max(bamg::Min(lambda1,lambda2),1e-30);
+	}/*}}}*/
+	void   EigenMetric::Min(double a) { /*{{{*/
+		lambda1=bamg::Min(a,lambda1); lambda2=bamg::Min(a,lambda2) ;
+	}/*}}}*/
+	void   EigenMetric::Max(double a) { /*{{{*/
+		//change eigen values
+		lambda1=bamg::Max(a,lambda1); lambda2=bamg::Max(a,lambda2) ;
+	}/*}}}*/
+	void   EigenMetric::Minh(double h) {/*{{{*/
+		Min(1.0/(h*h));
+	}/*}}}*/
+	void   EigenMetric::Maxh(double h) {/*{{{*/
+		//Call Max function
+		Max(1.0/(h*h));
+	}/*}}}*/
+	void   EigenMetric::pow(double p){/*{{{*/
+		lambda1=::pow(lambda1,p);lambda2=::pow(lambda2,p);
+	}/*}}}*/
+
+} 
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/GeomEdge.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/GeomEdge.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/GeomEdge.cpp	(revision 27955)
@@ -0,0 +1,100 @@
+#include <cstdio>
+#include <string.h>
+#include <cmath>
+
+#include "../shared/shared.h"
+
+#include "GeomEdge.h"
+#include "Geometry.h"
+
+using namespace std;
+
+namespace bamg {
+
+	/*Constructor/Destructor*/
+
+	/*Methods*/
+	int    GeomEdge::Cracked() const  {/*{{{*/
+		return type &1;  
+	}/*}}}*/
+	R2 GeomEdge::F(double theta) const{/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/F)*/
+		// parametrization of the curve edge
+
+	   R2 A=v[0]->r,B=v[1]->r;
+		double ca,cb,cta,ctb;
+
+		//Check that theta is in [0 1]
+		_assert_(theta>-1e-12 && theta<1+1e-12);
+
+		if (TgA()){ 
+			if (TgB()){ //Hermite interpolation
+				cb =  theta*theta*(3-2*theta);
+				ca =  1-cb;     
+				cta = (1-theta)*(1-theta)*theta;
+				ctb = (theta-1)*theta*theta ;
+			}
+			else {
+				double t = theta;
+				cb = t*t;
+				ca = 1-cb;
+				cta= t-cb;
+				ctb=0;    
+			}
+		}
+		else{
+			if (TgB()){
+				double t = 1-theta;
+				ca = t*t;
+				cb = 1-ca;
+				ctb= -t+ca;
+				cta=0;    
+			}
+			else { // lagrange P1
+				ca =(1-theta);
+				cb = theta;
+				cta=ctb=0;
+			}
+		}
+		return A*ca + B*cb + tg[0]*cta + tg[1]*ctb;
+	  }
+	/*}}}*/
+	int    GeomEdge::Mark()    const  {/*{{{*/
+		return type &16; 
+	}/*}}}*/
+	int    GeomEdge::Required()       {/*{{{*/
+		return type &64; 
+	}/*}}}*/
+	void GeomEdge::Set(const GeomEdge & rec,const Geometry & Gh ,Geometry & GhNew){ /*{{{*/
+		*this = rec;
+		v[0] = GhNew.vertices + Gh.GetId(v[0]);    
+		v[1] = GhNew.vertices + Gh.GetId(v[1]); 
+		if (Adj[0]) Adj[0] =  GhNew.edges + Gh.GetId(Adj[0]);     
+		if (Adj[1]) Adj[1] =  GhNew.edges + Gh.GetId(Adj[1]);     
+	}
+	/*}}}*/
+	void   GeomEdge::SetCracked()     { /*{{{*/
+		type |= 1;/*=>1st digit to 1*/
+	}/*}}}*/
+	void   GeomEdge::SetTgA()         { /*{{{*/
+		type |=4; /*=>2d digit to 1*/
+	}/*}}}*/
+	void   GeomEdge::SetTgB()         { /*{{{*/
+		type |=8; /*=> 3d digit to 1*/
+	}/*}}}*/
+	void   GeomEdge::SetMark()        { /*{{{*/
+		type |=16;/*=> 4th digiy to 1*/
+	}/*}}}*/
+	void   GeomEdge::SetUnMark()      { /*{{{*/
+		type &= 1007 /* 1023-16 = 000111110111 => 4th digit to 0*/;
+	}/*}}}*/
+	void   GeomEdge::SetRequired()    { /*{{{*/
+		type |= 64;/*=>6th digit to 1*/ 
+	}/*}}}*/
+	int    GeomEdge::TgA()     const  {/*{{{*/
+		return type &4;  
+	}/*}}}*/
+	int    GeomEdge::TgB()     const  {/*{{{*/
+		return type &8;  
+	}/*}}}*/
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/GeomEdge.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/GeomEdge.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/GeomEdge.h	(revision 27955)
@@ -0,0 +1,44 @@
+#ifndef _GEOMETRICALEDGE_H_
+#define _GEOMETRICALEDGE_H_
+
+#include "./include.h"
+
+namespace bamg {
+
+	class GeomVertex;
+	class Geometry;
+
+	class GeomEdge {
+
+		public:
+			GeomVertex *v[2];
+			long               ReferenceNumber;
+			long               CurveNumber;
+			R2                 tg[2];              // the 2 tangentes (tg[0] =0 => no continuity)
+			GeomEdge   *Adj[2];
+			int                AdjVertexIndex[2]; // for a given vertex, this gives the index of the vertex in the adjacent edge (0 or 1)
+			int                type;
+
+			//Operators
+			GeomVertex       & operator[](int i){return *v[i];};
+			const GeomVertex & operator[](int i) const { return *v[i];};
+			GeomVertex       * operator()(int i){return v[i];};  
+
+			//Methods
+			R2     F(double theta) const ; // parametrization of the curve edge
+			int    Cracked() const;
+			int    TgA()     const;
+			int    TgB()     const;
+			int    Mark()    const;
+			int    Required();
+			void   SetCracked();
+			void   SetTgA();
+			void   SetTgB();
+			void   SetMark();
+			void   SetUnMark();
+			void   SetRequired();
+			void   Set(const GeomEdge & rec,const Geometry & Th ,Geometry & ThNew);
+	};
+
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/GeomSubDomain.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/GeomSubDomain.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/GeomSubDomain.cpp	(revision 27955)
@@ -0,0 +1,19 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "GeomSubDomain.h"
+#include "Geometry.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+
+	/*Methods*/
+	void GeomSubDomain::Set(const GeomSubDomain & rec,const Geometry & Gh ,const Geometry & GhNew){/*{{{*/
+		*this = rec;
+		edge = Gh.GetId(edge) + GhNew.edges;
+	}/*}}}*/
+
+} 
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/GeomSubDomain.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/GeomSubDomain.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/GeomSubDomain.h	(revision 27955)
@@ -0,0 +1,22 @@
+#ifndef _GEOMETRICALSUBDOMAIN_H_
+#define _GEOMETRICALSUBDOMAIN_H_
+
+#include "./include.h"
+
+namespace bamg {
+
+	class GeomEdge;
+	class Geometry;
+
+	class GeomSubDomain {
+		public:
+			GeomEdge *edge;
+			int              direction;   // -1 or 1
+			long             ReferenceNumber;
+
+			//Methods
+			void Set(const GeomSubDomain &,const Geometry & ,const Geometry &);
+	};
+
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/GeomVertex.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/GeomVertex.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/GeomVertex.cpp	(revision 27955)
@@ -0,0 +1,33 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "GeomVertex.h"
+#include "../shared/shared.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+	//See header file
+
+	/*Methods*/
+	int  GeomVertex::Corner() const {/*{{{*/
+		return type & 4;
+	}
+	/*}}}*/
+	int  GeomVertex::Required()const {/*{{{*/
+		// a corner is required
+		return type & 6;
+	}
+	/*}}}*/
+	void GeomVertex::SetCorner(){/*{{{*/
+		type |= 4;
+	}
+	/*}}}*/
+	void GeomVertex::SetRequired(){/*{{{*/
+		type |= 2;
+	}
+	/*}}}*/
+
+} 
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/GeomVertex.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/GeomVertex.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/GeomVertex.h	(revision 27955)
@@ -0,0 +1,30 @@
+#ifndef _GEOMETRICALVERTEX_H_
+#define _GEOMETRICALVERTEX_H_
+
+#include "./include.h"
+#include "BamgVertex.h"
+
+namespace bamg {
+
+	class Geometry;
+
+	class GeomVertex : public BamgVertex { 
+
+		public:
+			friend class Geometry;
+
+			int type;
+
+			//Constructors
+			GeomVertex():type(0){};
+
+			//Methods
+			int  Corner() const;
+			int  Required()const;
+			void SetCorner();
+			void SetRequired();
+
+	};
+
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Geometry.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Geometry.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Geometry.cpp	(revision 27955)
@@ -0,0 +1,929 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "./bamgobjects.h"
+#include "../shared/shared.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+	Geometry::Geometry(){/*{{{*/
+		Init();
+	}
+	/*}}}*/
+	Geometry::Geometry(BamgGeom* bamggeom, BamgOpts* bamgopts){/*{{{*/
+		Init();
+		ReadGeometry(bamggeom,bamgopts);
+		PostRead();
+	}
+	/*}}}*/
+	Geometry::Geometry(const Geometry & Gh) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/Geometry)*/
+
+		long i;
+		*this = Gh;
+		NbRef =0;
+		quadtree=0;
+		vertices = nbv ? new GeomVertex[nbv] : NULL;
+		edges = nbe ? new GeomEdge[nbe]:NULL;
+		curves= nbcurves ? new Curve[nbcurves]:NULL;
+		subdomains = nbsubdomains ? new GeomSubDomain[nbsubdomains]:NULL;
+		for (i=0;i<nbe;i++)
+		 edges[i].Set(Gh.edges[i],Gh,*this);
+		for (i=0;i<nbcurves;i++)
+		 curves[i].Set(Gh.curves[i],Gh,*this);
+		for (i=0;i<nbsubdomains;i++)
+		 subdomains[i].Set(Gh.subdomains[i],Gh,*this);
+	}
+	/*}}}*/
+	Geometry::~Geometry() {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/~Geometry)*/
+		if(NbRef>0){   _printf_("Trying to delete geometry and NbRef>0, probably due to an error. NbRef:" << NbRef); return;}
+		if(vertices)   delete [] vertices;  vertices=0;
+		if(edges)      delete [] edges;     edges=0;
+		if(quadtree)   delete    quadtree;  quadtree=0;
+		if(curves)     delete [] curves;    curves=0;nbcurves=0;
+		if(subdomains) delete [] subdomains;subdomains=0;
+		Init();
+	}
+	/*}}}*/
+
+	/*IO*/
+	void Geometry::ReadGeometry(BamgGeom* bamggeom,BamgOpts* bamgopts){/*{{{*/
+
+		int verbose;
+		nbcurves=0;
+
+		double Hmin = HUGE_VAL;// the infinie value
+		int i,j,n,i0,i1,i2,i3;
+
+		/*initialize some variables*/
+		verbose= bamgopts->verbose;
+		nbv    = bamggeom->VerticesSize[0];
+		nbe    = bamggeom->EdgesSize[0];
+
+		//some checks
+		if (bamggeom->Vertices==NULL) _error_("the domain provided does not contain any vertex");
+		if (bamggeom->Edges==NULL) _error_("the domain provided does not contain any edge");
+
+		//Vertices
+		if (bamggeom->Vertices){
+			if(verbose>5) _printf_("      processing Vertices\n");
+			if (bamggeom->VerticesSize[1]!=3) _error_("Vertices should have 3 columns");
+			vertices = new GeomVertex[nbv];
+			for (i=0;i<nbv;i++) {
+				vertices[i].r.x=(double)bamggeom->Vertices[i*3+0];
+				vertices[i].r.y=(double)bamggeom->Vertices[i*3+1];
+				vertices[i].ReferenceNumber=(long)bamggeom->Vertices[i*3+2];
+				vertices[i].color =0;
+				vertices[i].type=0;
+			}
+			/*find domain extrema (pmin,pmax) that will define the square box used for by the quadtree*/
+			pmin =  vertices[0].r;
+			pmax =  vertices[0].r;
+			for (i=0;i<nbv;i++) {
+				pmin.x = Min(pmin.x,vertices[i].r.x);
+				pmin.y = Min(pmin.y,vertices[i].r.y);
+				pmax.x = Max(pmax.x,vertices[i].r.x);
+				pmax.y = Max(pmax.y,vertices[i].r.y);
+			}
+			/*Offset pmin and pmax to avoid round-off errors*/
+			R2 offset = (pmax-pmin)*0.05;
+			pmin -= offset;
+			pmax += offset;
+			/*coefIcoor is the coefficient used for integer coordinates:
+			 *                       (x-pmin.x)
+			 * Icoor x = (2^30 -1) ------------
+			 *                          D
+			 * where D is the longest side of the domain (direction x or y)
+			 * so that (x-pmin.x)/D is in ]0 1[
+			 *
+			 * coefIcoor = (2^30 -1)/D
+			 */
+			int MaxICoord = 1073741823;
+			coefIcoor=(MaxICoord)/(Max(pmax.x-pmin.x,pmax.y-pmin.y));
+			if(coefIcoor<=0) _error_("coefIcoor should be positive");
+		}
+		else{
+			_error_("No BamgVertex provided");
+		}
+
+		//Edges
+		if (bamggeom->Edges){
+			R2      zerovector(0,0);
+			double* verticeslength=NULL;
+
+			if(verbose>5) _printf_("      processing Edges\n");
+			if (bamggeom->EdgesSize[1]!=3) _error_("Edges should have 3 columns");
+			edges = new GeomEdge[nbe];
+
+			//initialize verticeslength (sum of the lengths of the edges holding vertex)
+			verticeslength = new double[nbv];
+			for(i=0;i<nbv;i++) verticeslength[i]=0;
+
+			/*Loop over the edges*/
+			for (i=0;i<nbe;i++){
+
+				i1=(int)bamggeom->Edges[i*3+0]-1; //-1 for C indexing
+				i2=(int)bamggeom->Edges[i*3+1]-1; //-1 for C indexing
+				edges[i].v[0]= vertices + i1;     //pointer toward vertex i1 (=&vertices[i1])
+				edges[i].v[1]= vertices + i2;     //pointer toward vertex i2
+				edges[i].ReferenceNumber=(long)bamggeom->Edges[i*3+2];
+
+				//get length of edge
+				R2     x12=vertices[i2].r-vertices[i1].r;
+				double l12=sqrt((x12,x12));
+				Hmin=Min(Hmin,l12);
+
+				//initialize other fields
+				edges[i].tg[0]=zerovector;
+				edges[i].tg[1]=zerovector;
+				edges[i].AdjVertexIndex[0] = edges[i].AdjVertexIndex[1] = -1;
+				edges[i].Adj[0] = edges[i].Adj[1] = NULL;
+				edges[i].type = 0;
+
+				//Cracked?
+				if (edges[i].ReferenceNumber!=1) edges[i].SetCracked();
+
+				//prepare metric
+				vertices[i1].color++;
+				vertices[i2].color++;
+				verticeslength[i1] += l12;
+				verticeslength[i2] += l12;
+			}
+
+			// definition the default of the given mesh size
+			for (i=0;i<nbv;i++) {
+				if (vertices[i].color > 0)
+				 vertices[i].m=Metric(verticeslength[i] /(double) vertices[i].color);
+				else
+				 vertices[i].m=Metric(Hmin);
+			}
+			delete [] verticeslength;
+
+		}
+		else{
+			_error_("No edges provided");
+		}
+
+		//hVertices
+		if(bamgopts->hVertices && bamgopts->hVerticesLength==nbv){
+			if(verbose>5) _printf_("      processing hVertices\n");
+			for (i=0;i< nbv;i++){
+				if (!xIsNan<IssmPDouble>(bamgopts->hVertices[i])){
+					vertices[i].m=Metric((double)bamgopts->hVertices[i]);
+				}
+			}
+		}
+
+		//MetricVertices
+		if(bamgopts->metric && bamgopts->metric[0]==nbv){
+			if(verbose>5) _printf_("      processing MetricVertices\n");
+			for (i=0;i< nbv;i++) {
+				vertices[i].m = Metric((double)bamgopts->metric[i*3+0],(double)bamgopts->metric[i*3+1],(double)bamgopts->metric[i*3+2]);
+			}
+		}
+
+		//TangentAtEdges
+		if (bamggeom->TangentAtEdges){
+			if(verbose>5) _printf_("      processing TangentAtEdges");
+			if (bamggeom->TangentAtEdgesSize[1]!=4) _error_("TangentAtEdges should have 4 columns");
+			int n,i,j,k;
+			R2 tg;
+
+			n=bamggeom->TangentAtEdgesSize[0];
+			for (k=0;k<n;k++) {
+				i=(int)bamggeom->TangentAtEdges[k*4+0]-1; //for C indexing
+				j=(int)bamggeom->TangentAtEdges[k*4+1]-1; //for C indexing
+				tg.x=bamggeom->TangentAtEdges[k*4+2];
+				tg.y=bamggeom->TangentAtEdges[k*4+3];
+				if (i<0 || i>=nbe) _error_("TangentAtEdges first index exceeds matrix dimension");
+				if (j!=0 && j!=1)  _error_("TangentAtEdges second index should be 1 or 2 only");
+				edges[i].tg[j] = tg;
+			}
+		}
+
+		//Corners
+		if(bamggeom->Corners){
+			if(verbose>5) _printf_("      processing Corners");
+			if (bamggeom->CornersSize[1]!=1) _error_("Corners should have 1 column");
+			n=bamggeom->CornersSize[0];
+			for (i=0;i<n;i++) {
+				j=(int)bamggeom->Corners[i]-1; //for C indexing
+				if (j>nbv-1 || j<0) _error_("Bad corner definition: should in [0 " << nbv << "]");
+				/*Required => at the same time SetRequired and SetCorner*/
+				vertices[j].SetCorner();
+				vertices[j].SetRequired();
+			}
+		}
+
+		//RequiredVertices
+		if(bamggeom->RequiredVertices){
+			if(verbose>5) _printf_("      processing RequiredVertices\n");
+			if (bamggeom->RequiredVerticesSize[1]!=1) _error_("RequiredVertices should have 1 column");
+			n=bamggeom->RequiredVerticesSize[0];
+			for (i=0;i<n;i++) {
+				j=(int)bamggeom->RequiredVertices[i]-1; //for C indexing
+				if (j>nbv-1 || j<0) _error_("Bad RequiredVerticess  definition: should in [0 " << nbv << "]");
+				vertices[j].SetRequired();
+			}
+		}
+
+		//RequiredEdges
+		if(bamggeom->RequiredEdges){
+			if(verbose>5) _printf_("      processing RequiredEdges\n");
+			if (bamggeom->RequiredEdgesSize[1]!=1) _error_("RequiredEdges should have 1 column");
+			n=bamggeom->RequiredEdgesSize[0];
+			for (i=0;i<n;i++) {
+				j=(int)bamggeom->RequiredEdges[i]-1; //for C indexing
+				if (j>nbe-1 || j<0) _error_("Bad RequiredEdges definition: should in [0 " << nbe << "]");
+				edges[j].SetRequired();
+			}
+		}
+
+		//SubDomain
+		if(bamggeom->SubDomains){
+			if(verbose>5) _printf_("      processing SubDomains\n");
+			if (bamggeom->SubDomainsSize[1]!=4) _error_("SubDomains should have 4 columns");
+			nbsubdomains=bamggeom->SubDomainsSize[0];
+			subdomains = new GeomSubDomain[nbsubdomains];
+			for (i=0;i<nbsubdomains;i++){
+				i0=(int)bamggeom->SubDomains[i*4+0];
+				i1=(int)bamggeom->SubDomains[i*4+1];
+				i2=(int)bamggeom->SubDomains[i*4+2];
+				i3=(int)bamggeom->SubDomains[i*4+3];
+				if (i0!=2) _error_("Bad Subdomain definition: first number should be 2 (for Edges)");
+				if (i1>nbe || i1<=0) _error_("Bad Subdomain definition: second number should in [1 " << nbe << "] (edge number)");
+				subdomains[i].edge=edges + (i1-1);
+				subdomains[i].direction = (int) i2;
+				subdomains[i].ReferenceNumber = i3;
+			}
+		}
+	}
+	/*}}}*/
+	void Geometry::WriteGeometry(BamgGeom* bamggeom, BamgOpts* bamgopts){/*{{{*/
+
+		int verbose;
+		int nbreq=0;
+		int nbreqv=0;
+		int nbtan=0;
+		int i,count;
+
+		/*Get options*/
+		verbose=bamgopts->verbose;
+
+		/*Vertices*/
+		if(verbose>5) _printf_("      writing Vertices\n");
+		bamggeom->VerticesSize[0]=nbv;
+		bamggeom->VerticesSize[1]=3;
+		if (nbv){
+			bamggeom->Vertices=xNew<double>(3*nbv);
+			for (i=0;i<nbv;i++){
+				bamggeom->Vertices[i*3+0]=vertices[i].r.x;
+				bamggeom->Vertices[i*3+1]=vertices[i].r.y;
+				bamggeom->Vertices[i*3+2]=vertices[i].GetReferenceNumber();
+
+				//update counters
+				if (vertices[i].Required()) nbreqv++;
+			}
+		}
+
+		/*Edges*/
+		if(verbose>5) _printf_("      writing Edges\n");
+		bamggeom->EdgesSize[0]=nbe;
+		bamggeom->EdgesSize[1]=3;
+		if (nbe){
+			bamggeom->Edges=xNew<double>(3*nbe);
+			for (i=0;i<nbe;i++){
+				bamggeom->Edges[i*3+0]=GetId(edges[i][0])+1; //back to Matlab indexing
+				bamggeom->Edges[i*3+1]=GetId(edges[i][1])+1; //back to Matlab indexing
+				bamggeom->Edges[i*3+2]=(double)edges[i].ReferenceNumber;
+
+				//update counters
+				if (edges[i].Required()) nbreq++;
+				if (edges[i].TgA() && edges[i][0].Corner()) nbtan++;
+				if (edges[i].TgB() && edges[i][1].Corner()) nbtan++;
+			}
+		}
+
+		/*RequiredEdges*/
+		if(verbose>5) _printf_("      writing " << nbreq << " RequiredEdges\n");
+		bamggeom->RequiredEdgesSize[0]=nbreq;
+		bamggeom->RequiredEdgesSize[1]=1;
+		if (nbreq){
+			bamggeom->RequiredEdges=xNew<double>(1*nbreq);
+			count=0;
+			for (i=0;i<nbe;i++){
+				if (edges[i].Required()){
+					bamggeom->RequiredEdges[count]=i+1; //back to Matlab indexing
+					count=count+1;
+				}
+			}
+		}
+
+		//No corners
+
+		/*RequiredVertices*/
+		if(verbose>5) _printf_("      writing " << nbreqv << " RequiredVertices\n");
+		bamggeom->RequiredVerticesSize[0]=nbreqv;
+		bamggeom->RequiredVerticesSize[1]=1;
+		if (nbreqv){
+			bamggeom->RequiredVertices=xNew<double>(1*nbreqv);
+			count=0;
+			for (i=0;i<nbv;i++){
+				if (vertices[i].Required()){
+					bamggeom->RequiredVertices[count]=i+1; //back to Matlab indexing
+					count=count+1;
+				}
+			}
+		}
+
+		/*SubDomains*/
+		if(verbose>5) _printf_("      writing SubDomains\n");
+		bamggeom->SubDomainsSize[0]=nbsubdomains;
+		bamggeom->SubDomainsSize[1]=4;
+		if (nbsubdomains){
+			bamggeom->SubDomains=xNew<double>(4*nbsubdomains);
+			for (i=0;i<nbsubdomains;i++){
+				bamggeom->SubDomains[4*i+0]=2;
+				bamggeom->SubDomains[4*i+1]=GetId(subdomains[i].edge)+1; //back to Matlab indexing
+				bamggeom->SubDomains[4*i+2]=subdomains[i].direction;
+				bamggeom->SubDomains[4*i+3]=subdomains[i].ReferenceNumber;
+			}
+		}
+
+		/*TangentAtEdges*/
+		if(verbose>5) _printf_("      writing TangentAtEdges\n");
+		bamggeom->TangentAtEdgesSize[0]=nbtan;
+		bamggeom->TangentAtEdgesSize[1]=4;
+		if (nbtan){
+			bamggeom->TangentAtEdges=xNew<double>(4*nbtan);
+			for (i=0;i<nbe;i++){
+				if (edges[i].TgA() && edges[i][0].Corner()){
+					bamggeom->TangentAtEdges[4*i+0]=i+1; //back to Matlab indexing
+					bamggeom->TangentAtEdges[4*i+1]=1;
+					bamggeom->TangentAtEdges[4*i+2]=edges[i].tg[0].x;
+					bamggeom->TangentAtEdges[4*i+3]=edges[i].tg[0].y;
+				}
+				if (edges[i].TgB() && edges[i][1].Corner()){
+					bamggeom->TangentAtEdges[4*i+0]=i+1; //back to Matlab indexing
+					bamggeom->TangentAtEdges[4*i+1]=2;
+					bamggeom->TangentAtEdges[4*i+2]=edges[i].tg[1].x;
+					bamggeom->TangentAtEdges[4*i+3]=edges[i].tg[1].y;
+				}
+			}
+		}
+	}
+	/*}}}*/
+
+	/*Methods*/
+	void Geometry::Echo(void){/*{{{*/
+
+		_printf_("Geometry:\n");
+		_printf_("   nbv  (number of vertices) : " << nbv << "\n");
+		_printf_("   nbe  (number of edges)    : " << nbe << "\n");
+		_printf_("   nbsubdomains: " << nbsubdomains << "\n");
+		_printf_("   nbcurves: " << nbcurves << "\n");
+		_printf_("   vertices: " << vertices << "\n");
+		_printf_("   edges: " << edges << "\n");
+		_printf_("   quadtree: " << quadtree << "\n");
+		_printf_("   subdomains: " << subdomains << "\n");
+		_printf_("   curves: " << curves << "\n");
+		_printf_("   pmin (x,y): (" << pmin.x << " " << pmin.y << ")\n");
+		_printf_("   pmax (x,y): (" << pmax.x << " " << pmax.y << ")\n");
+		_printf_("   coefIcoor: " << coefIcoor << "\n");
+
+		return;
+	}
+	/*}}}*/
+	void Geometry::Init(void){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/EmptyGeometry)*/
+
+		NbRef=0;
+		nbv=0;
+		nbe=0;
+		quadtree=NULL;
+		curves=NULL;
+		edges=NULL;
+		vertices=NULL;
+		nbsubdomains=0;
+		nbcurves=0;
+		subdomains=NULL;
+	}
+	/*}}}*/
+	double Geometry::MinimalHmin() {/*{{{*/
+		/* coeffIcoor = (2^30-1)/D
+		 * We cannot go beyond hmin = D/2^30 because of the quadtree
+		 * hmin is therefore approximately 2/coeffIcoor */
+		return 2.0/coefIcoor;
+	}/*}}}*/
+	double Geometry::MaximalHmax() {/*{{{*/
+		return Max(pmax.x-pmin.x,pmax.y-pmin.y);
+	}/*}}}*/
+	long Geometry::GetId(const GeomVertex & t) const  {/*{{{*/
+		return &t - vertices;
+	}/*}}}*/
+	long Geometry::GetId(const GeomVertex * t) const  {/*{{{*/
+		return t - vertices;
+	}/*}}}*/
+	long Geometry::GetId(const GeomEdge & t) const  {/*{{{*/
+		return &t - edges;
+	}/*}}}*/
+	long Geometry::GetId(const GeomEdge * t) const  {/*{{{*/
+		return t - edges;
+	}/*}}}*/
+	long Geometry::GetId(const Curve * c) const  {/*{{{*/
+		return c - curves;
+	}/*}}}*/
+	void Geometry::PostRead(bool checkcurve){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/AfterRead)*/
+
+		long          i          ,j,k;
+		long         *head_v   = new long[nbv];
+		long         *next_p   = new long[2 *nbe];
+		float        *eangle   = new float[nbe];
+		double        eps      = 1e-20;
+		BamgQuadtree  quadtree;                            // build quadtree to find duplicates
+
+		k=0;
+
+		//build quadtree for this geometry
+		for (i=0;i<nbv;i++){
+
+			/*build integer coordinates (non unique)
+			  these coordinates are used by the quadtree to group
+			  the vertices by groups of 5:
+			  All the coordinates are transformed to ]0,1[^2
+			  then, the integer coordinates are computed using
+			  the transformation ]0,1[^2 -> [0 2^30-1[^2 for a quadtree of depth 30*/
+			vertices[i].i=R2ToI2(vertices[i].r);
+
+			/*find nearest vertex already present in the quadtree (NULL if empty)*/
+			BamgVertex* v=quadtree.NearestVertex(vertices[i].i.x,vertices[i].i.y);
+
+			/*if there is a vertex found that is to close to vertices[i] -> error*/
+			if( v && Norme1(v->r - vertices[i].r) < eps ){
+				_printf_("reference numbers: " << v->ReferenceNumber << " " << vertices[i].ReferenceNumber << "\n");
+				_printf_("Id: " << i+1 << "\n");
+				_printf_("Coords: ["<<v->r.x<<" "<<v->r.y<<"] ["<<vertices[i].r.x<<" "<<vertices[i].r.y<<"]\n");
+
+				delete [] next_p;
+				delete [] head_v;
+				delete [] eangle;
+				_error_("two points of the geometry are very close to each other (see reference numbers above)");
+			}
+
+			/*Add vertices[i] to the quadtree*/
+			quadtree.Add(vertices[i]);
+		}
+
+		/* Here we use a powerful chaining algorithm
+		 *
+		 * 1. What is a chaining algorithm?
+		 *
+		 * If F is a function that goes from i in [0 n] to j in [0 m]
+		 * and we want to compute the reciprocal function F-1 of F
+		 * (what are the antecedents of a given j in Im(F) )
+		 * We use 2 lists:
+		 *    head_F[j] that holds the head of lists
+		 *    next_F[i] that holds the list of elements that have the same image
+		 *
+		 * Example:
+		 *    i1, i2, ..., ip in [0,n] are all antecedents of a given j in [0 m]
+		 *    head_F[j] = ip
+		 *    next_F[ip]= ip-1
+		 *    ....
+		 *    next_F[i2]= i1
+		 *    next_F[i1]= -1  //end of the list
+		 *
+		 * Algorithm:
+		 *    for(j=0;j<m;j++)  head_F[j] = -1 //initialization
+		 *    for(i=0;i<n;i++){
+		 *       j=F[i];
+		 *       next_F[i]= head_F[j];
+		 *       head_F[j]=i;
+		 *    }
+		 *
+		 *    Then, we can go through all the elements that have for image j:
+		 *    for(i=head_F[j]; i!=-1; i=next_F[i])
+		 *    initialization of i by i=head_F[j]
+		 *    stop the loop when i=-1 (end of the chain)
+		 *    iterate using i=next_F[i] (next element that have for image j)
+		 *
+		 * 2. How to use this algorithm here?
+		 *
+		 * Here F is a function that associates two vertices v0 and v1 for a given edge E
+		 * We want to build the reciprocal function: what are the edges that contains
+		 * a vertex v?
+		 * To do so, we use the same chaining algorithm but there is a difficulty
+		 * coming from the fact that for F we have a couple of vertices and not one
+		 * vertex.
+		 * To overcome this difficulty, we use a global indexing exactly like in
+		 * C/C++ so that
+		 * a member of a 2-column-table can be described by one index p=i*2+j
+		 * i=(int)p/2 line number of p
+		 * j=p%2      column number of p
+		 *
+		 * Algorithm:
+		 *    for(i=0;i<nbv;i++)  head_v[i] = -1 //initialization
+		 *    for(i=0;i<nbe;i++){
+		 *       for(j=0;j<2;j++){
+		 *          p=2*i+j;
+		 *          v=edges(i,j);
+		 *          next_p[p]= head_v[v];
+		 *          head_v[v]=p;
+		 *       }
+		 *    }
+		 */
+
+		//initialize head_v as -1
+		for (i=0;i<nbv;i++) head_v[i]=-1;
+		k=0;
+		for (i=0;i<nbe;i++) {
+			//compute vector of edge i that goes from vertex 0 to vertex 1
+			R2 v10=edges[i].v[1]->r - edges[i].v[0]->r;
+			double lv10=Norme2(v10);
+			//check that its length is not 0
+			if(lv10==0){
+				delete [] next_p;
+				delete [] head_v;
+				delete [] eangle;
+                _printf_("Length of edge " << i << " is 0\n");
+				_error_("Length of edge " << i << " is 0");
+			}
+			//compute angle in [-Pi Pi]
+			eangle[i] = atan2(v10.y,v10.x);
+			//build chains head_v and next_p
+			for (j=0;j<2;j++){
+				long v=GetId(edges[i].v[j]);
+				next_p[k]=head_v[v];
+				head_v[v]=k++; //post increment: head_v[v]=k; and then k=k+1;
+			}
+		}
+
+		//sort head_v by order of increasing edges angle
+		for (i=0;i<nbv;i++) {
+			int exch=1,ord=0;
+
+			//exchange vertices position in head_v and next_p till tey are sorted
+			while (exch){
+				long *p=head_v+i;
+				long *po=p;
+				long  n=*p;
+				float angleold=-1000 ; // angle = - infinity
+				ord=0; exch=0;
+
+				// loop over the edges that contain the vertex i (till -1)
+				while (n >=0){
+					ord++;
+					long  i1=n/2;       // i1 = floor (n/2)      -> Edge number
+					long  j1=n%2;       // j1 = 1 if n is odd    -> Vertex index for this edge (0 or 1)
+					long* pn=next_p+n;
+
+					//Next vertex index
+					n=*pn;
+
+					//compute angle between horizontal axis and v0->v1
+					float angle = j1 ? OppositeAngle(eangle[i1]):  eangle[i1];
+
+					//exchange if the current edge angle is smaller than the previous one
+					if (angleold > angle){
+						exch=1;
+						*pn=*po;  // next_p[n] = n + 1
+						*po=*p;   //
+						*p=n;     // next_p[n+1] = n
+						po=pn;    // po now point toward pn (invert next and current)
+					}
+
+					//else, continue going to the next edge position
+					else{                        //  to have : po -> p -> pn
+						angleold=angle; // update maximum angle
+						po=p;           // po now point toward p  (current position)
+						p=pn;           // p  now point toward pn (next position)
+					}
+				}
+			}
+
+			/*Do we want to check for curve? Default is no, but if we are reconstructing, it's better to turn it on with a small threshold*/
+			if(checkcurve){
+				/*angular test on current vertex to guess whether it is a corner (ord = number of edges holding i) */
+				if(ord==2){
+					IssmDouble MaxCornerAngle = 1*Pi/180; /*default is 1 degree*/
+					long  n1 = head_v[i];
+					long  n2 = next_p[n1];
+					long  i1 = n1/2, i2 = n2/2; // edge number
+					long  j1 = n1%2, j2 = n2%2; // vertex in the edge
+					float angle1=  j1 ? OppositeAngle(eangle[i1]) : eangle[i1];
+					float angle2= !j2 ? OppositeAngle(eangle[i2]) : eangle[i2];
+					float da12 = Abs(angle2-angle1);
+					if (( da12 >= MaxCornerAngle ) && (da12 <= 2*Pi -MaxCornerAngle)) {
+						vertices[i].SetCorner() ;
+					}
+					/* if the edge type/referencenumber a changing then is SetRequired();*/
+					if(edges[i1].type != edges[i2].type || edges[i1].Required()){
+						vertices[i].SetRequired();
+					}
+					if(edges[i1].ReferenceNumber != edges[i2].ReferenceNumber) {
+						vertices[i].SetRequired();
+					}
+				}
+				if(ord!=2) vertices[i].SetCorner();
+			}
+			else{
+				/*all vertices provided in geometry are corners (ord = number of edges holding i)*/
+				vertices[i].SetCorner() ;
+				if(ord==2){
+					long  n1 = head_v[i];
+					long  n2 = next_p[n1];
+					long  i1 = n1/2, i2 = n2/2; // edge number
+					long  j1 = n1%2, j2 = n2%2; // vertex in the edge
+					/* if the edge type/referencenumber a changing then is SetRequired();*/
+					if (edges[i1].type != edges[i2].type || edges[i1].Required()){
+						vertices[i].SetRequired();
+					}
+					if (edges[i1].ReferenceNumber != edges[i2].ReferenceNumber) {
+						vertices[i].SetRequired();
+					}
+				}
+			}
+
+			/*close the list around the vertex to have a circular loop*/
+			long no=-1, ne = head_v[i];
+			while (ne >=0) ne = next_p[no=ne];
+			if(no>=0) next_p[no] = head_v[i];
+		}
+
+		/*Check that the list makes sense (we have all the time the same vertex)
+		 * and build adjacent edges*/
+		k =0;
+		for (i=0;i<nbe;i++){
+			for (j=0;j<2;j++){
+
+				long n1 = next_p[k++];
+				long i1 = n1/2 ,j1=n1%2;
+
+				if( edges[i1].v[j1] != edges[i].v[j]) _error_("Problem while processing edges: check the edge list");
+
+				edges[i1].Adj[j1] = edges + i;
+				edges[i1].AdjVertexIndex[j1] = j;
+			}
+		}
+
+		/* generation of  all the tangents*/
+		for (i=0;i<nbe;i++) {
+			R2    AB =edges[i].v[1]->r -edges[i].v[0]->r;// AB = vertex0 -> vertex1
+			double lAB=Norme2(AB);                       // Get length of AB
+			double ltg2[2]={0.0};                        // initialize tangent
+
+			//loop over the 2 vertices of the edge
+			for (j=0;j<2;j++) {
+				R2     tg =edges[i].tg[j];
+				double ltg=Norme2(tg);
+
+				//by default, tangent=[0 0]
+				if(ltg==0){
+					//if the current vertex of the edge is not a corner
+					if(!edges[i].v[j]->Corner()){
+						/*The tangent is set as the vector between the
+						 * previous and next vertices connected to current vertex
+						 * normed by the edge length*/
+						tg = edges[i].v[1-j]->r - edges[i].Adj[j]->v[1-edges[i].AdjVertexIndex[j]]->r;
+						ltg= Norme2(tg);
+						tg = tg *(lAB/ltg);
+						ltg= lAB;
+					}
+					//else:  a Corner no tangent => nothing to do
+				}
+				else{
+					//tangent has already been computed
+					tg = tg*(lAB/ltg),ltg=lAB;
+				}
+
+				ltg2[j] = ltg;
+
+				if ((tg,AB)<0) tg = -tg;
+
+				edges[i].tg[j]=tg;
+			}
+			if (ltg2[0]!=0) edges[i].SetTgA();
+			if (ltg2[1]!=0) edges[i].SetTgB();
+		}
+
+		/* generation of  all curves (from corner to corner)*/
+		/*We proceed in 2 steps: first allocate, second build*/
+		for (int step=0;step<2;step++){
+
+			//unmark all edges
+			for (i=0;i<nbe;i++) edges[i].SetUnMark();
+			long  nb_marked_edges=0;
+
+			//initialize number of curves
+			nbcurves = 0;
+
+			for (int level=0;level<2 && nb_marked_edges!=nbe;level++){
+				for (i=0;i<nbe;i++){
+
+					GeomEdge & ei=edges[i];
+					for(j=0;j<2;j++){
+						/*If current edge ei is unmarked and (level=1 or vertex i is required (corner)):
+						 * we do have the first edge of a new curve*/
+						if (!ei.Mark() && (level || ei[j].Required())) {
+							int k0=j,k1;
+							GeomEdge   *e=&ei;
+							GeomVertex *a=(*e)(k0); // begin
+							if(curves){
+								curves[nbcurves].FirstEdge=e;
+								curves[nbcurves].FirstVertexIndex=k0;
+							}
+							int nee=0;
+							for(;;){
+								nee++;
+								k1 = 1-k0; // next vertex of the edge
+								e->SetMark();
+								nb_marked_edges++;
+								e->CurveNumber=nbcurves;
+								GeomVertex *b=(*e)(k1);
+
+								//break if we have reached the other end of the curve
+								if (a==b || b->Required()){
+									if(curves){
+										curves[nbcurves].LastEdge=e;
+										curves[nbcurves].LastVertexIndex=k1;
+									}
+									break;
+								}
+								//else: go to next edge (adjacent)
+								else{
+									k0 = e->AdjVertexIndex[k1];//  vertex in next edge
+									e  = e->Adj[k1]; // next edge
+								}
+							}
+							nbcurves++;
+							if(level) a->SetRequired();
+						}
+					}
+				}
+			}
+			_assert_(nb_marked_edges && nbe);
+			//allocate if first step
+			if(step==0) curves=new Curve[nbcurves];
+		}
+
+		/*clean up*/
+		delete [] next_p;
+		delete [] head_v;
+		delete [] eangle;
+
+	}
+	/*}}}*/
+	GeomEdge* Geometry::ProjectOnCurve(const Edge &e,double s,BamgVertex &V,VertexOnGeom &GV) const {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/ProjectOnCurve)*/
+		/*Add a vertex on an existing geometrical edge according to the metrics of the two vertices constituting the edge*/
+		/*FIXME: should go away*/
+
+		double save_s=s;
+		int NbTry=0;
+
+retry:
+
+		s=save_s;
+		GeomEdge* on=e.GeomEdgeHook;
+		if (!on){
+			_error_("ProjectOnCurve error message: edge provided should be on geometry");
+		}
+		if (!e[0].GeomEdgeHook ||  !e[1].GeomEdgeHook){
+			_error_("ProjectOnCurve error message: at least one of the vertex of the edge provided is not on geometry");
+		}
+
+		//Get the two vertices of the edge
+		const BamgVertex &v0=e[0];
+		const BamgVertex &v1=e[1];
+
+		//Get position of V0, V1 and vector v0->v1
+		R2 V0=v0,V1=v1,V01=V1-V0;
+
+		//Get geometrical vertices corresponding to v0 and v1
+		VertexOnGeom  vg0=*v0.GeomEdgeHook,  vg1=*v1.GeomEdgeHook;
+
+		//build two pointers towrad current geometrical edge
+		GeomEdge *eg0=on, *eg1=on;
+
+		//Get edge direction and swap v0 and v1 if necessary
+		R2 Ag=(R2)(*on)[0],Bg=(R2)(*on)[1],AB=Bg-Ag;
+		int OppositeSens = (V01,AB)<0;
+		int direction0=0,direction1=1;
+		if (OppositeSens) s=1-s,Exchange(vg0,vg1),Exchange(V0,V1);
+
+		//Compute metric of new vertex as a linear interpolation of the two others
+		V.m=Metric(1.0-s,v0.m,s,v1.m);
+
+		const int mxe=100;
+		GeomEdge* ge[mxe+1];
+		int     directionge[mxe+1];
+		double  lge[mxe+1];
+		int bge=mxe/2,tge=bge;
+		ge[bge] = e.GeomEdgeHook;
+		directionge[bge]=1;
+
+		while(eg0!=(GeomEdge*)vg0 && (*eg0)(direction0)!=(GeomVertex*)vg0){
+			if (bge<=0) {
+				if(NbTry) {
+					_printf_("Fatal Error: on the class Mesh before call Geometry::ProjectOnCurve\n");
+					_printf_("That bug might come from:\n");
+					_printf_(" 1)  a mesh edge  containing more than " << mxe/2 << " geometrical edges\n");
+					_printf_(" 2)  code bug : be sure that we call   Mesh::SetVertexFieldOn() before\n");
+					_printf_("To solve the problem do a coarsening of the geometrical mesh or change the constant value of mxe (dangerous)\n");
+					_error_("see above");
+				}
+				NbTry++;
+				goto retry;
+			}
+			GeomEdge* tmpge = eg0;
+			ge[--bge] =eg0 = eg0->Adj[direction0];
+			_assert_(bge>=0 && bge<=mxe);
+			direction0 = 1-( directionge[bge] = tmpge->AdjVertexIndex[direction0]);
+		}
+		while (eg1 != (GeomEdge*) vg1  &&  (*eg1)(direction1) != (GeomVertex*) vg1) {
+			if(tge>=mxe ) {
+				_printf_("WARNING: on the class Mesh before call Geometry::ProjectOnCurve is having issues (isn't it Eric?)\n");
+				NbTry++;
+				if (NbTry<2) goto retry;
+				_printf_("Fatal Error: on the class Mesh before call Geometry::ProjectOnCurve\n");
+				_printf_("That bug might come from:\n");
+				_printf_(" 1)  a mesh edge  contening more than " << mxe/2 << " geometrical edges\n");
+				_printf_(" 2)  code bug : be sure that we call   Mesh::SetVertexFieldOn() before\n");
+				_printf_("To solve the problem do a coarsening of the geometrical mesh or change the constant value of mxe (dangerous)\n");
+				_error_("see above");
+			}
+			GeomEdge* tmpge = eg1;
+			ge[++tge] =eg1 = eg1->Adj[direction1];
+			directionge[tge]= direction1 = 1-tmpge->AdjVertexIndex[direction1];
+			_assert_(tge>=0 && tge<=mxe);
+		}
+
+		if ((*eg0)(direction0)==(GeomVertex*)vg0)
+		 vg0=VertexOnGeom(*(BamgVertex*) vg0,*eg0,direction0); //vg0 = absisce
+
+		if ((*eg1)(direction1)==(GeomVertex*)vg1)
+		 vg1=VertexOnGeom(*(BamgVertex*) vg1,*eg1,direction1);
+
+		double sg;
+		if (eg0 == eg1) {
+			double s0=vg0,s1=vg1;
+			sg =  s0*(1.0-s) +  s*s1;
+			on=eg0;
+		}
+		else {
+			R2 AA=V0,BB;
+			double s0,s1;
+			int i=bge;
+			double ll=0;
+			for(i=bge;i<tge;i++){
+				_assert_(i>=0 && i<=mxe);
+				BB =  (*ge[i])[directionge[i]];
+				lge[i]=ll += Norme2(AA-BB);
+				AA=BB ;}
+				lge[tge]=ll+=Norme2(AA-V1);
+				// search the geometrical edge
+				_assert_(s<=1.0);
+				double ls= s*ll;
+				on =0;
+				s0 = vg0;
+				s1= directionge[bge];
+				double l0=0,l1;
+				i=bge;
+				while (  (l1=lge[i]) < ls ) {
+					_assert_(i>=0 && i<=mxe);
+					i++,s0=1-(s1=directionge[i]),l0=l1;
+				}
+				on=ge[i];
+				if (i==tge)
+				 s1=vg1;
+
+				s  =(ls-l0)/(l1-l0);
+				sg =s0*(1.0-s)+s*s1;
+		}
+		_assert_(on);
+		V.r= on->F(sg);
+		GV=VertexOnGeom(V,*on,sg);
+		return on;
+	}
+	/*}}}*/
+	I2 Geometry::R2ToI2(const R2 & P) const {/*{{{*/
+		/*coefIcoor is the coefficient used for integer coordinates:
+		 *                       (x-pmin.x)
+		 * Icoor x = (2^30 -1) ------------
+		 *                          D
+		 * where D is the longest side of the domain (direction x or y)
+		 * so that (x-pmin.x)/D is in ]0 1[
+		 *
+		 * coefIcoor = (2^30 -1)/D
+		 */
+		return  I2( (int) (coefIcoor*(P.x-pmin.x)) ,(int) (coefIcoor*(P.y-pmin.y)) );
+	}/*}}}*/
+	void Geometry::UnMarkEdges() {/*{{{*/
+		for (int i=0;i<nbe;i++) edges[i].SetUnMark();
+	}/*}}}*/
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Geometry.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Geometry.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Geometry.h	(revision 27955)
@@ -0,0 +1,66 @@
+#ifndef _GEOMETRY_H_
+#define _GEOMETRY_H_
+
+#include "./include.h"
+#include "./BamgGeom.h"
+#include "./BamgOpts.h"
+#include "./GeomVertex.h"
+#include "./GeomEdge.h"
+#include "./Curve.h"
+
+namespace bamg {
+
+	class Triangle;
+	class BamgQuadtree;
+	class GeomSubDomain;
+	class Edge;
+
+	class Geometry { 
+
+		public:
+
+			long           NbRef;                 // counter of ref on the this class if 0 we can delete
+			long           nbv;                   // number of vertices
+			long           nbe;                   // number of edges
+			long           nbsubdomains;
+			long           nbcurves;
+			GeomVertex    *vertices;
+			GeomEdge      *edges;
+			BamgQuadtree  *quadtree;
+			GeomSubDomain *subdomains;
+			Curve         *curves;
+			R2             pmin,pmax;             // domain extrema coordinates
+			double         coefIcoor;             // coef to integer coordinates;
+
+			//Constructor/Destructors
+			~Geometry(); 
+			Geometry();
+			Geometry(const Geometry & Gh);
+			Geometry(BamgGeom* bamggeom, BamgOpts* bamgopts);
+
+			//Operators
+			const GeomVertex &operator[](long i) const { return vertices[i]; };
+			GeomVertex       &operator[](long i) { return vertices[i];       };
+			const GeomEdge   &operator()(long i) const { return edges[i];    };
+			GeomEdge         &operator()(long  i) { return edges[i];         };
+
+			//Methods
+			void             Echo();
+			I2               R2ToI2(const R2 &P) const;
+			double           MinimalHmin();
+			double           MaximalHmax();
+			void             ReadGeometry(BamgGeom *bamggeom, BamgOpts*bamgopts);
+			void             Init(void);
+			void             PostRead(bool checkcurve=false);
+			long             GetId(const GeomVertex &t) const;
+			long             GetId(const GeomVertex *t) const;
+			long             GetId(const GeomEdge &t) const;
+			long             GetId(const GeomEdge *t) const;
+			long             GetId(const Curve *c) const;
+			void             UnMarkEdges();
+			GeomEdge        *ProjectOnCurve(const Edge &,double,BamgVertex &,VertexOnGeom &) const;
+			void             WriteGeometry(BamgGeom *bamggeom, BamgOpts*bamgopts);
+	};
+
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/ListofIntersectionTriangles.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/ListofIntersectionTriangles.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/ListofIntersectionTriangles.cpp	(revision 27955)
@@ -0,0 +1,390 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "./bamgobjects.h"
+#include "../shared/shared.h"
+#include "./det.h"
+
+namespace bamg {
+
+	/*Constructors Destructors*/
+	ListofIntersectionTriangles::ListofIntersectionTriangles(int n,int m)/*{{{*/
+	  : MaxSize(n), Size(0), len(-1),state(-1),lIntTria(new IntersectionTriangles[n]) ,
+	  NbSeg(0), MaxNbSeg(m), lSegsI(new SegInterpolation[m]){
+	  }
+	/*}}}*/
+	ListofIntersectionTriangles::~ListofIntersectionTriangles(){/*{{{*/
+		if (lIntTria) delete [] lIntTria,lIntTria=0;
+		if (lSegsI) delete [] lSegsI,lSegsI=0;
+	} 
+	/*}}}*/
+
+	/*Methods*/
+	void ListofIntersectionTriangles::Init(void){/*{{{*/
+		state=0;
+		len=0;
+		Size=0;
+	}
+	/*}}}*/
+	double  ListofIntersectionTriangles::Length(){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Length)*/
+
+		// computation of the length
+
+		// check Size
+		if (Size<=0){
+			_error_("Size<=0");
+		}
+
+		Metric Mx,My;
+		int ii,jj;
+		R2 x,y,xy;
+
+		SegInterpolation* SegI=lSegsI;
+		lSegsI[NbSeg].last=Size;
+		int EndSeg=Size;
+
+		y = lIntTria[0].x;
+		double sxy, s = 0;
+		lIntTria[0].s =0;
+		SegI->lBegin=s;
+
+		for (jj=0,ii=1;ii<Size;jj=ii++) {  
+			// seg jj,ii
+			x  = y;
+			y  = lIntTria[ii].x;
+			xy = y-x;
+			Mx = lIntTria[ii].m;
+			My = lIntTria[jj].m;
+			sxy= LengthInterpole(Mx,My,xy);
+			s += sxy;
+			lIntTria[ii].s = s;
+			if (ii == EndSeg){
+				SegI->lEnd=s;
+				SegI++;
+				EndSeg=SegI->last;
+				SegI->lBegin=s;
+			}
+		}
+		len = s;
+		SegI->lEnd=s;
+
+		return s;
+	}
+	/*}}}*/
+	int  ListofIntersectionTriangles::NewItem(Triangle * tt,double d0,double d1,double d2) { /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/NewItem)*/
+
+		int n;
+		R2 x(0,0);
+		if ( d0) x =      (*tt)[0].r * d0;
+		if ( d1) x = x +  (*tt)[1].r * d1;
+		if ( d2) x = x +  (*tt)[2].r * d2;
+		// newer add same point 
+		if(!Size ||  Norme2_2(lIntTria[Size-1].x-x)) {
+			if (Size==MaxSize) ReShape();
+			lIntTria[Size].t=tt;
+			lIntTria[Size].bary[0]=d0;
+			lIntTria[Size].bary[1]=d1;
+			lIntTria[Size].bary[2]=d2;
+			lIntTria[Size].x = x;
+			Metric m0,m1,m2;
+			BamgVertex * v;
+			if ((v=(*tt)(0))) m0    = v->m;
+			if ((v=(*tt)(1))) m1    = v->m;
+			if ((v=(*tt)(2))) m2    = v->m;
+			lIntTria[Size].m =  Metric(lIntTria[Size].bary,m0,m1,m2);
+			n=Size++;}
+		else n=Size-1;
+		return n;
+	}
+	/*}}}*/
+	int ListofIntersectionTriangles::NewItem(R2 A,const Metric & mm) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/NewItem)*/
+
+		int n;
+		if(!Size ||  Norme2_2(lIntTria[Size-1].x-A)) {
+			if (Size==MaxSize) ReShape();
+			lIntTria[Size].t=0;
+			lIntTria[Size].x=A;
+			lIntTria[Size].m=mm;
+			n=Size++;
+		}
+		else  n=Size-1;
+		return  n; 
+	}
+	/*}}}*/
+	long ListofIntersectionTriangles::NewPoints(BamgVertex* vertices,long &nbv,long maxnbv){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/NewPoints)*/
+
+		//If length<1.5, do nothing
+		double s=Length();
+		if (s<1.5) return 0;
+
+		const long nbvold=nbv;
+		int ii = 1 ;
+		R2 y,x;
+		Metric My,Mx ;
+		double sx =0,sy;
+		int nbi=Max(2,(int) (s+0.5));
+		double sint=s/nbi;
+		double si  =sint;
+
+		int EndSeg=Size;
+		SegInterpolation* SegI=NULL;
+		if (NbSeg) SegI=lSegsI,EndSeg=SegI->last;
+
+		for (int k=1;k<nbi;k++){
+			while ((ii < Size) && ( lIntTria[ii].s <= si )){
+				if (ii++ == EndSeg){
+					SegI++;
+					EndSeg=SegI->last;
+				}
+			}
+
+			int ii1=ii-1;
+			x  =lIntTria[ii1].x;
+			sx =lIntTria[ii1].s;
+			Metric Mx=lIntTria[ii1].m;
+			y  =lIntTria[ii].x;
+			sy =lIntTria[ii].s;
+			Metric My=lIntTria[ii].m;
+			double lxy = sy-sx;
+			double cy = abscisseInterpole(Mx,My,y-x,(si-sx)/lxy);
+
+			R2 C;
+			double cx = 1-cy;
+			C = SegI ? SegI->F(si): x * cx + y *cy;
+			//C.Echo();
+			//x.Echo();
+			//y.Echo();
+			//_printf_("cx = " << cx << ", cy=" << cy << "\n");
+
+			si += sint;
+			if ( nbv<maxnbv) {
+				vertices[nbv].r = C;
+				vertices[nbv++].m = Metric(cx,lIntTria[ii-1].m,cy,lIntTria[ii].m);
+			}
+			else return nbv-nbvold;
+		  }
+		return nbv-nbvold;
+	}
+	/*}}}*/
+	void ListofIntersectionTriangles::ReShape(){ /*{{{*/
+
+		int newsize = MaxSize*2;
+		IntersectionTriangles* nw = new IntersectionTriangles[newsize];
+		_assert_(nw);
+
+		// recopy
+		for (int i=0;i<MaxSize;i++) nw[i] = lIntTria[i];       
+		long int verbosity=0;
+		if(verbosity>3) _printf_("   ListofIntersectionTriangles  ReShape Maxsize " << MaxSize << " -> " << MaxNbSeg << "\n");
+		MaxSize = newsize; 
+		delete [] lIntTria;// remove old
+		lIntTria = nw; // copy pointer
+	}
+	/*}}}*/
+	void ListofIntersectionTriangles::SplitEdge(Mesh & Bh, const R2 &A,const R2  &B,int nbegin) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/ListofIntersectionTriangles)*/
+
+		Triangle *tbegin, *t;
+
+		long long deta[3], deti,detj;
+		double ba[3];
+		int ifirst=-1,ilast;
+		int i0,i1,i2;
+		int ocut,i,j,k=-1;
+		//  int OnAVertices =0;
+		long long dt[3];
+		I2 a = Bh.R2ToI2(A) ,b= Bh.R2ToI2(B);// compute  the Icoor a,b
+		I2 vi,vj;  
+		int iedge =-1;// not a edge
+
+		if(nbegin)  {// optimisation 
+			// we suppose  knowing the starting  triangle
+			t=tbegin=lIntTria[ilast=(Size-1)].t;
+			if (tbegin->det>=0) 
+			 ifirst = ilast;}  
+		else {// not optimisation 
+			Init();
+			t=tbegin = Bh.TriangleFindFromCoord(a,deta);
+			if( t->det>=0)
+			 ilast=NewItem(t,double(deta[0])/t->det,double(deta[1])/t->det,double(deta[2])/t->det);
+			else 
+			  {// find the nearest boundary edge  of the vertex A
+				// find a edge or such normal projection a the edge IJ is on the edge
+				//   <=> IJ.IA >=0 && IJ.AJ >=0
+				ilast=ifirst;
+				double ba,bb;
+				AdjacentTriangle edge=CloseBoundaryEdge(a,t,ba,bb);
+				BamgVertex & v0 = *edge.EdgeVertex(0), & v1 = *edge.EdgeVertex(1);
+				NewItem(A,Metric(ba,v0,bb,v1));
+				t=edge;
+				// test if the point b is in the same side
+				if (det(v0.i,v1.i,b)>=0) {
+					AdjacentTriangle edge=CloseBoundaryEdge(a,t,ba,bb);
+					BamgVertex & v0 = *edge.EdgeVertex(0), & v1 = *edge.EdgeVertex(1);
+					NewItem(A,Metric(ba,v0,bb,v1));
+					return;
+				}
+			  } // find the nearest boundary edge  of the vertex A
+		} // end not optimisation 
+		if (t->det<0) {  // outside departure
+			while (t->det <0) { // intersection boundary edge and a,b,
+				k=(*t)(0) ?  ((  (*t)(1) ? ( (*t)(2) ? -1 : 2) : 1  )) : 0;
+				if (k<0){
+					_error_("k<0");
+				}
+				ocut = OppositeEdge[k];
+				i=VerticesOfTriangularEdge[ocut][0];
+				j=VerticesOfTriangularEdge[ocut][1];
+				vi=(*t)[i];
+				vj=(*t)[j];
+				deti = bamg::det(a,b,vi);
+				detj = bamg::det(a,b,vj);
+				if (deti>0) // go to  i direction on gamma
+				 ocut = PreviousEdge[ocut];      
+				else if (detj<=0) // go to j direction on gamma
+				 ocut = NextEdge[ocut];         
+				AdjacentTriangle tadj =t->Adj(ocut);
+				t = tadj;
+				iedge= tadj; 
+				if (t == tbegin) { // 
+					double ba,bb;
+					AdjacentTriangle edge=CloseBoundaryEdge(a,t,ba,bb);
+					BamgVertex & v0 = *edge.EdgeVertex(0), & v1 = *edge.EdgeVertex(1);
+					NewItem(A,Metric(ba,v0,bb,v1));
+					return;
+				}
+			} //  end while (t->det <0)
+			// theoriticaly we have: deti =<0 and detj>0
+
+			// computation of barycentric coor
+			// test if the point b is on size on t
+			// we revert vi,vj because vi,vj is def in Adj triangle
+			if ( det(vi,vj,b)>=0) {
+				t=tbegin;
+				double ba,bb;
+				AdjacentTriangle edge=CloseBoundaryEdge(b,t,ba,bb);
+				NewItem(B,Metric(ba,*edge.EdgeVertex(0),bb,*edge.EdgeVertex(1)));
+				return;
+			}
+			else
+			  {
+				k = OppositeVertex[iedge];
+				i=VerticesOfTriangularEdge[iedge][0];
+				j=VerticesOfTriangularEdge[iedge][1];
+				double dij = detj-deti;
+				if (i+j+k != 0 + 1 +2){
+					_error_("i+j+k != 0 + 1 +2");
+				}
+				ba[j] =  detj/dij;
+				ba[i] = -deti/dij;
+				ba[k] = 0;
+				ilast=NewItem(t,ba[0],ba[1],ba[2]); }
+		}  //  outside departure
+
+		// recherche the intersection of [a,b] with Bh Mesh.
+		// we know  a triangle ta contening the vertex a
+		// we have 2 case for intersection [a,b] with a edge [A,B] of Bh
+		// 1) the intersection point is in ]A,B[
+		// 2)                        is A or B
+		// first version --- 
+		for (;;) {
+			//    t->Draw();
+			if (iedge < 0) {
+				i0 =0;i1=1;i2=2;
+				dt[0] =bamg::det(a,b,(*t)[0]);
+				dt[1] =bamg::det(a,b,(*t)[1]);
+				dt[2] =bamg::det(a,b,(*t)[2]);}
+			else {
+				i2 = iedge;
+				i0 = NextEdge[i2];
+				i1 = NextEdge[i0]; 
+				dt[VerticesOfTriangularEdge[iedge][0]] = detj;// we revert i,j because
+				dt[VerticesOfTriangularEdge[iedge][1]] = deti;// we take the Triangle by the other side
+				dt[iedge] = det(a,b,(*t)[OppositeVertex[iedge]]);}
+
+				// so we have just to see the transition from - to + of the det0..2 on edge of t
+				// because we are going from a to b
+				if       ((dt[i=VerticesOfTriangularEdge[i0][0]] <  0) &&
+							( dt[j=VerticesOfTriangularEdge[i0][1]] > 0))
+				 ocut =i0;
+				else  if ((dt[i=VerticesOfTriangularEdge[i1][0]] <  0) &&
+							(dt[j=VerticesOfTriangularEdge[i1][1]] >  0))
+				 ocut =i1;
+				else  if ((dt[i=VerticesOfTriangularEdge[i2][0]] <  0) && 
+							(dt[j=VerticesOfTriangularEdge[i2][1]] >  0))
+				 ocut =i2;
+				else if   ((dt[i=VerticesOfTriangularEdge[i0][0]] == 0) &&
+							( dt[j=VerticesOfTriangularEdge[i0][1]] >  0))
+				 ocut =i0;
+				else  if ((dt[i=VerticesOfTriangularEdge[i1][0]] == 0) &&
+							(dt[j=VerticesOfTriangularEdge[i1][1]] >  0))
+				 ocut =i1;
+				else  if ((dt[i=VerticesOfTriangularEdge[i2][0]] == 0) && 
+							(dt[j=VerticesOfTriangularEdge[i2][1]] >  0))
+				 ocut =i2;
+				else if   ((dt[i=VerticesOfTriangularEdge[i0][0]] <  0) &&
+							( dt[j=VerticesOfTriangularEdge[i0][1]] == 0))
+				 ocut =i0;
+				else  if ((dt[i=VerticesOfTriangularEdge[i1][0]] <  0) &&
+							(dt[j=VerticesOfTriangularEdge[i1][1]] == 0))
+				 ocut =i1;
+				else  if ((dt[i=VerticesOfTriangularEdge[i2][0]] <  0) && 
+							(dt[j=VerticesOfTriangularEdge[i2][1]] == 0))
+				 ocut =i2;
+				else { //  On a edge (2 zero)
+					k =0;
+					if (dt[0]) ocut=0,k++; 
+					if (dt[1]) ocut=1,k++; 
+					if (dt[2]) ocut=2,k++;
+					if(k == 1) {
+						if (dt[ocut] >0) // triangle upper AB
+						 ocut = NextEdge[ocut];
+						i= VerticesOfTriangularEdge[ocut][0];
+						j= VerticesOfTriangularEdge[ocut][1];
+					}
+					else {
+						_error_("Bug Split Edge");
+					}
+				}
+
+				k = OppositeVertex[ocut];
+
+				long long detbij = bamg::det((*t)[i],(*t)[j],b);
+
+				if (detbij >= 0) { //we find the triangle contening b
+					dt[0]=bamg::det((*t)[1],(*t)[2],b);
+					dt[1]=bamg::det((*t)[2],(*t)[0],b);
+					dt[2]=bamg::det((*t)[0],(*t)[1],b);
+					double dd = t->det;
+					NewItem(t,dt[0]/dd,dt[1]/dd,dt[2]/dd);      
+					return ;}
+				else { // next triangle by  adjacent by edge ocut 
+					deti = dt[i];
+					detj = dt[j];
+					double dij = detj-deti;
+					ba[i] =  detj/dij;
+					ba[j] = -deti/dij;
+					ba[3-i-j ] = 0;
+					ilast=NewItem(t, ba[0],ba[1],ba[2]);      
+
+					AdjacentTriangle ta =t->Adj(ocut);
+					t = ta;
+					iedge= ta; 
+					if (t->det <= 0)  {
+						double ba,bb;
+						AdjacentTriangle edge=CloseBoundaryEdge(b,t,ba,bb);
+						NewItem(B,Metric(ba,*edge.EdgeVertex(0),bb,*edge.EdgeVertex(1)));
+						return;
+					}
+				}// we  go outside of omega 
+		} // for(;;)
+	}
+	/*}}}*/
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/ListofIntersectionTriangles.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/ListofIntersectionTriangles.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/ListofIntersectionTriangles.h	(revision 27955)
@@ -0,0 +1,72 @@
+#ifndef _LISTOFINTERSECTIONTRIANGLES_H_
+#define _LISTOFINTERSECTIONTRIANGLES_H_
+
+#include "./include.h"
+
+namespace bamg {
+
+	class Triangle;
+
+	class ListofIntersectionTriangles {
+
+		class IntersectionTriangles {
+
+			public: 
+				Triangle *t;
+				double    bary[3];   // use if t != 0
+				R2        x;
+				Metric    m;
+				double    s;         // curvilinear coordinate
+				double    sp;        // length of the previous segment in m
+				double    sn;        // length of the next segment in m
+		};
+
+		class SegInterpolation {
+
+			public:
+				GeomEdge *e;
+				double           sBegin  ,sEnd; // abscisse of the seg on edge parameter
+				double           lBegin  ,lEnd; // length abscisse set in ListofIntersectionTriangles::Length
+				int              last;          // last index in ListofIntersectionTriangles for this Sub seg of edge
+
+				//Methods
+				R2 F(double s){ 
+					double c01=lEnd-lBegin, c0=(lEnd-s)/c01, c1=(s-lBegin)/c01;
+					if (lBegin>s || s>lEnd){
+						_error_("lBegin>s || s>lEnd");
+					}
+					return e->F(sBegin*c0+sEnd*c1);
+				}
+		};
+
+		public:
+
+			int                    MaxSize;
+			int                    Size;
+			double                 len;
+			int                    state;
+			IntersectionTriangles *lIntTria;
+			int                    NbSeg;
+			int                    MaxNbSeg;
+			SegInterpolation      *lSegsI;
+
+			//Constructors/Destructors
+			ListofIntersectionTriangles(int n=256,int m=16);
+			~ListofIntersectionTriangles();
+
+			//Operators
+			IntersectionTriangles & operator[](int i) {return lIntTria[i];}
+			operator int&() {return Size;}
+
+			//Methods
+			void   Init();
+			int    NewItem(Triangle *tt,double d0,double d1,double d2);
+			int    NewItem(R2 ,const Metric &);
+			void   SplitEdge(Mesh &,const R2 &,const R2 &,int nbegin=0);
+			double Length();
+			long   NewPoints(BamgVertex *,long &nbv,long maxnbv);
+			void   ReShape();
+	};
+
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Mesh.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Mesh.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Mesh.cpp	(revision 27955)
@@ -0,0 +1,5054 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "../shared/shared.h"
+#include "./bamgobjects.h"
+#include "./det.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+	Mesh::Mesh(BamgGeom* bamggeom,BamgMesh* bamgmesh, BamgOpts* bamgopts):Gh(*(new Geometry())),BTh(*this){ /*{{{*/
+
+		/*Initialize fields*/
+		Init(0);
+
+		/*Read Geometry if provided*/
+		if(bamggeom->Edges) {
+			Gh.ReadGeometry(bamggeom,bamgopts);
+			Gh.PostRead();
+		}
+
+		/*Read background mesh*/
+		ReadMesh(bamgmesh,bamgopts);
+
+		/*Build Geometry if not provided*/
+		if(bamggeom->Edges==NULL) {
+			/*Recreate geometry if needed*/
+			_printf_("WARNING: mesh present but no geometry found. Reconstructing...\n");
+			BuildGeometryFromMesh(bamgopts);
+			Gh.PostRead(true);
+		}
+
+		/*Set integer coordinates*/
+		SetIntCoor();
+
+		/*Fill holes and generate mesh properties*/
+		ReconstructExistingMesh(bamgopts);
+	}
+	/*}}}*/
+	Mesh::Mesh(int* index,double* x,double* y,int nods,int nels,BamgOpts* bamgopts):Gh(*(new Geometry())),BTh(*this){/*{{{*/
+
+		Init(0);
+		ReadMesh(index,x,y,nods,nels,bamgopts);
+		SetIntCoor();
+		ReconstructExistingMesh(bamgopts);
+	}
+	/*}}}*/
+	Mesh::Mesh(double* x,double* y,int nods,BamgOpts* bamgopts):Gh(*(new Geometry())),BTh(*this){/*{{{*/
+		Triangulate(x,y,nods,bamgopts);
+	}
+	/*}}}*/
+	Mesh::Mesh(const Mesh & Tho,const int *flag ,const int *bb,BamgOpts* bamgopts) : Gh(*(new Geometry())), BTh(*this) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Triangles)*/
+
+		  int i,k,itadj;
+		  int kt=0;
+		  int * kk    = new int [Tho.nbv];
+		  long * reft = new long[Tho.nbt];
+		  long nbInT =    Tho.TriangleReferenceList(reft);
+		  long * refv = new long[Tho.nbv];
+
+		  for (i=0;i<Tho.nbv;i++)
+			kk[i]=-1;
+		  for (i=0;i<Tho.nbv;i++)
+			refv[i]=0;
+		  int nbNewBedge =0;
+		  //  int nbOldBedge =0;  
+		  for (i=0;i<Tho.nbt;i++)
+			if(  reft[i] >=0 && flag[i]) 
+			  {
+				const Triangle & t = Tho.triangles[i];
+				kt++;
+				kk[Tho.GetId(t[0])]=1;
+				kk[Tho.GetId(t[1])]=1;
+				kk[Tho.GetId(t[2])]=1;
+				itadj=Tho.GetId(t.TriangleAdj(0));
+				if (  reft[itadj] >=0 && !flag[itadj])
+				  { nbNewBedge++;
+					refv[Tho.GetId(t[VerticesOfTriangularEdge[0][0]])]=bb[i];
+					refv[Tho.GetId(t[VerticesOfTriangularEdge[0][1]])]=bb[i];
+				  }
+				itadj=Tho.GetId(t.TriangleAdj(1));
+				if (  reft[itadj] >=0 && !flag[itadj])
+				  { nbNewBedge++;
+					refv[Tho.GetId(t[VerticesOfTriangularEdge[1][0]])]=bb[i];
+					refv[Tho.GetId(t[VerticesOfTriangularEdge[1][1]])]=bb[i];}
+					itadj=Tho.GetId(t.TriangleAdj(2));
+					if (  reft[itadj] >=0 && !flag[itadj])
+					  { nbNewBedge++;
+						refv[Tho.GetId(t[VerticesOfTriangularEdge[2][0]])]=bb[i];
+						refv[Tho.GetId(t[VerticesOfTriangularEdge[2][1]])]=bb[i];}
+			  }
+		  k=0;
+		  for (i=0;i<Tho.nbv;i++){
+			  if (kk[i]>=0) kk[i]=k++;
+			}
+		  _printf_("   number of vertices " << k << ", remove = " << Tho.nbv - k << "\n");
+		  _printf_("   number of triangles " << kt << ", remove = " << nbInT-kt << "\n");
+		  _printf_("   number of New boundary edge " << nbNewBedge << "\n");
+		  long imaxnbv =k;
+		  Init(imaxnbv);
+		  for (i=0;i<Tho.nbv;i++)
+			if (kk[i]>=0) 
+			  {
+				vertices[nbv] = Tho.vertices[i];
+				if (!vertices[nbv].GetReferenceNumber())
+				 vertices[nbv].ReferenceNumber = refv[i];
+				nbv++;
+			  }
+		  if (imaxnbv != nbv){
+			  delete [] kk;
+			  delete [] refv;
+			  _error_("imaxnbv != nbv");
+		  }
+		  for (i=0;i<Tho.nbt;i++)
+			if(reft[i] >=0 && flag[i]){
+				const Triangle & t = Tho.triangles[i];
+				int i0 = Tho.GetId(t[0]);
+				int i1 = Tho.GetId(t[1]);
+				int i2 = Tho.GetId(t[2]);
+				if(i0<0 || i1<0 || i2<0){
+					delete [] refv;
+					_error_("i0<0 || i1<0 || i2< 0");
+				}
+				if(i0>=Tho.nbv || i1>=Tho.nbv || i2>=Tho.nbv){
+					delete [] refv;
+					_error_("i0>=Tho.nbv || i1>=Tho.nbv || i2>=Tho.nbv");
+				}
+				triangles[nbt] = Triangle(this,kk[i0],kk[i1],kk[i2]);
+				triangles[nbt].color = Tho.subdomains[reft[i]].ReferenceNumber; 
+				nbt++;           
+			  }
+		  if (nbt==0 && nbv==0){
+			  delete [] refv;
+			  _error_("All triangles have been removed");
+		  }
+		  delete [] kk;
+		  delete [] reft;
+		  delete [] refv;
+		  BuildGeometryFromMesh(bamgopts);
+		  Gh.PostRead(); 
+		  SetIntCoor();
+		  ReconstructExistingMesh(bamgopts);
+
+		  /*Final checks*/
+		  _assert_(kt==nbt);
+		  _assert_(nbsubdomains);
+		  _assert_(subdomains[0].head && subdomains[0].head->link); 
+	  }
+	/*}}}*/
+	Mesh::Mesh(Mesh & Th,Geometry * pGh,Mesh * pBth,long maxnbv_in)/*{{{*/
+	  : Gh(*(pGh?pGh:&Th.Gh)), BTh(*(pBth?pBth:this)) {
+		  /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Triangles)*/
+		  Gh.NbRef++;
+		  maxnbv_in = Max(maxnbv_in,Th.nbv); 
+		  long i;
+		  // do all the allocation to be sure all the pointer existe
+
+		  Init(maxnbv_in);// to make the allocation 
+		  // copy of triangles
+		  nbv = Th.nbv;
+		  nbt = Th.nbt;
+		  nbe = Th.nbe;
+		  nbsubdomains = Th.nbsubdomains;
+		  nbtout = Th.nbtout;
+		  NbVerticesOnGeomVertex = Th.NbVerticesOnGeomVertex;
+		  if(NbVerticesOnGeomVertex)
+			VerticesOnGeomVertex = new VertexOnGeom[NbVerticesOnGeomVertex];
+		  NbVerticesOnGeomEdge = Th.NbVerticesOnGeomEdge;
+		  if (NbVerticesOnGeomEdge)
+			VerticesOnGeomEdge = new VertexOnGeom[NbVerticesOnGeomEdge] ;
+		  if (& BTh == & Th.BTh){ // same background 
+			  BTh.NbRef++;
+			  NbVertexOnBThVertex = Th.NbVertexOnBThVertex;
+			  if(NbVertexOnBThVertex)
+				VertexOnBThVertex = new VertexOnVertex[NbVertexOnBThVertex];
+			  NbVertexOnBThEdge = Th.NbVertexOnBThEdge;
+			  if(NbVertexOnBThEdge)
+				VertexOnBThEdge = new VertexOnEdge[NbVertexOnBThEdge];
+			 }
+		  else { // no add on background mesh 
+			  BTh.NbRef++;
+			  NbVertexOnBThVertex=0;
+			  VertexOnBThVertex=0;
+			  NbVertexOnBThEdge=0;
+			  VertexOnBThEdge=0;
+			 }
+
+		  if(nbe)
+			edges = new Edge[nbe];
+		  if(nbsubdomains)
+			subdomains = new SubDomain[nbsubdomains];
+		  pmin = Th.pmin;
+		  pmax = Th.pmax;
+		  coefIcoor = Th.coefIcoor;
+		  for(i=0;i<nbt;i++)
+			triangles[i].Set(Th.triangles[i],Th,*this);
+		  for(i=0;i<nbe;i++)
+			edges[i].Set(Th,i,*this);
+		  for(i=0;i<nbv;i++)
+			vertices[i].Set(Th.vertices[i],Th,*this);
+		  for(i=0;i<nbsubdomains;i++)  
+			subdomains[i].Set(Th,i,*this);
+		  for (i=0;i<NbVerticesOnGeomVertex;i++)
+			VerticesOnGeomVertex[i].Set(Th.VerticesOnGeomVertex[i],Th,*this);
+		  for (i=0;i<NbVerticesOnGeomEdge;i++)
+			VerticesOnGeomEdge[i].Set(Th.VerticesOnGeomEdge[i],Th,*this);
+		  quadtree=0;
+
+	  }
+	/*}}}*/
+	Mesh::Mesh(long imaxnbv,Mesh & BT,BamgOpts* bamgopts,int keepBackVertices) :Gh(BT.Gh),BTh(BT) {/*{{{*/
+		this->Init(imaxnbv);
+		TriangulateFromGeom1(bamgopts,keepBackVertices);
+	}
+	/*}}}*/
+	Mesh::Mesh(long imaxnbv,Geometry & G,BamgOpts* bamgopts):Gh(G),BTh(*this){/*{{{*/
+		Init(imaxnbv);
+		TriangulateFromGeom0(bamgopts);
+	}
+	/*}}}*/
+	Mesh::~Mesh() {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Triangles)*/
+
+		if(vertices)             delete [] vertices;
+		if(edges)                delete [] edges;
+		if(triangles)            delete [] triangles;
+		if(quadtree)             delete    quadtree;
+		if(orderedvertices)      delete [] orderedvertices;
+		if(subdomains)           delete []  subdomains;
+		if(VerticesOnGeomEdge)   delete [] VerticesOnGeomEdge;
+		if(VerticesOnGeomVertex) delete [] VerticesOnGeomVertex;
+		if(VertexOnBThVertex)    delete [] VertexOnBThVertex;
+		if(VertexOnBThEdge)      delete [] VertexOnBThEdge;
+
+		if (Gh.NbRef>0) Gh.NbRef--;
+		else if (Gh.NbRef==0) delete &Gh;
+		if(&BTh != this){
+			if (BTh.NbRef>0) BTh.NbRef--;
+			else if (BTh.NbRef==0) delete &BTh;
+		}
+		Init(0); // set all to zero 
+	}
+	/*}}}*/
+
+	/*IO*/
+	void Mesh::ReadMesh(int* index,double* x,double* y,int nods,int nels,BamgOpts* bamgopts){/*{{{*/
+
+		long i1,i2,i3;
+		long i;
+		Metric M1(1);
+		int verbose=0;
+		bool* nodeflags=NULL;
+
+		nbv=nods;
+		maxnbv=nbv;
+		nbt=nels;
+		if(bamgopts) verbose=bamgopts->verbose;
+
+		//Vertices
+		if (verbose) _printf_("Reading vertices (" << nbv << ")\n");
+		vertices=xNew<BamgVertex>(nbv);
+		orderedvertices=xNew<BamgVertex*>(nbv);
+		for (i=0;i<nbv;i++){
+			vertices[i].r.x=x[i];
+			vertices[i].r.y=y[i];
+			vertices[i].ReferenceNumber=1;
+			vertices[i].m=M1;
+			vertices[i].color=0;
+		}
+		maxnbt=2*maxnbv-2; // for filling The Holes and quadrilaterals 
+
+		//Triangles
+		if (verbose) _printf_("Reading triangles (" << nbt << ")\n");
+		triangles =new Triangle[maxnbt]; //we cannot allocate only nbt triangles since 
+		nodeflags=xNew<bool>(nbv);
+		for(i=0;i<nbv;i++) nodeflags[i]=false;
+		//other triangles will be added for each edge
+		for (i=0;i<nbt;i++){
+			Triangle & t = triangles[i];
+			i1=(long)index[i*3+0]-1; //for C indexing
+			i2=(long)index[i*3+1]-1; //for C indexing
+			i3=(long)index[i*3+2]-1; //for C indexing
+			t=Triangle(this,i1,i2,i3);
+			t.color=1;
+			nodeflags[i1]=nodeflags[i2]=nodeflags[i3]=true;
+		}
+
+		/*Recreate geometry: */
+		if (verbose) _printf_("Building Geometry\n");
+		BuildGeometryFromMesh();
+		if (verbose) _printf_("Completing geometry\n");
+		Gh.PostRead();
+
+		/*Check that there is no orphan*/
+		bool isorphan=false;
+		for(i=0;i<nbv;i++){
+			if(!nodeflags[i]){
+				_printf_("Vertex " << i+1 << " does not belong to any element\n");
+				isorphan=true;
+			}
+		}
+		if(isorphan) _error_("Orphan found in mesh, see ids above");
+
+		/*Clean up*/
+		xDelete<bool>(nodeflags);
+	}
+	/*}}}*/
+	void Mesh::ReadMesh(BamgMesh* bamgmesh, BamgOpts* bamgopts){/*{{{*/
+
+		int    verbose=0;
+		double Hmin = HUGE_VAL;    // the infinie value
+		long   i1,i2,i3;
+		long   i,j;
+		Metric M1(1);
+
+		/*Check needed pointer*/
+		_assert_(bamgmesh);
+
+		if(bamgopts) verbose=bamgopts->verbose;
+
+		nbv=bamgmesh->VerticesSize[0];
+		maxnbv=nbv;
+		nbt=bamgmesh->TrianglesSize[0];
+
+		//Vertices
+		if(bamgmesh->Vertices){
+			if(verbose>5) _printf_("      processing Vertices\n");
+
+			vertices=xNew<BamgVertex>(nbv);
+			orderedvertices=xNew<BamgVertex*>(nbv);
+
+			for (i=0;i<nbv;i++){
+				vertices[i].r.x=bamgmesh->Vertices[i*3+0];
+				vertices[i].r.y=bamgmesh->Vertices[i*3+1];
+				vertices[i].ReferenceNumber=(long)bamgmesh->Vertices[i*3+2];
+				vertices[i].m=M1;
+				vertices[i].color=0;
+			}
+			maxnbt=2*maxnbv-2; // for filling The Holes and quadrilaterals 
+		}
+		else{
+			if(verbose>5) _error_("no Vertices found in the initial mesh");
+		}
+
+		//Triangles
+		if(bamgmesh->Triangles){
+			if(verbose>5) _printf_("      processing Triangles\n");
+			triangles =new Triangle[maxnbt]; //we cannot allocate only nbt triangles since 
+			//other triangles will be added for each edge
+			for (i=0;i<nbt;i++){
+				Triangle &t=triangles[i];
+				i1=(long)bamgmesh->Triangles[i*4+0]-1; //for C indexing
+				i2=(long)bamgmesh->Triangles[i*4+1]-1; //for C indexing
+				i3=(long)bamgmesh->Triangles[i*4+2]-1; //for C indexing
+				t=Triangle(this,i1,i2,i3);
+				t.color=(long)bamgmesh->Triangles[i*4+3];
+			}
+		}
+		else{
+			if(verbose>5) _error_("no Triangles found in the initial mesh");
+		}
+
+		//VerticesOnGeomEdge
+		if(bamgmesh->VerticesOnGeomEdge){
+			if(verbose>5) _printf_("      processing VerticesOnGeomEdge\n");
+			NbVerticesOnGeomEdge=bamgmesh->VerticesOnGeomEdgeSize[0];
+			VerticesOnGeomEdge= new  VertexOnGeom[NbVerticesOnGeomEdge] ;
+			for (i=0;i<NbVerticesOnGeomEdge;i++){
+				long  i1,i2;
+				double s;
+				i1=(long)  bamgmesh->VerticesOnGeomEdge[i*3+0]-1; //for C indexing
+				i2=(long)  bamgmesh->VerticesOnGeomEdge[i*3+1]-1; //for C indexing
+				s =(double)bamgmesh->VerticesOnGeomEdge[i*3+2];
+				VerticesOnGeomEdge[i]=VertexOnGeom(vertices[i1],Gh.edges[i2],s);
+			}
+		}
+
+		//VerticesOnGeomVertex
+		if(bamgmesh->VerticesOnGeomVertexSize[0]){
+			if(verbose>5) _printf_("      processing VerticesOnGeomVertex\n");
+			NbVerticesOnGeomVertex=bamgmesh->VerticesOnGeomVertexSize[0];
+			VerticesOnGeomVertex  = new  VertexOnGeom[NbVerticesOnGeomVertex] ;
+			for (i=0;i<NbVerticesOnGeomVertex;i++){
+				long  i1,i2;
+				i1=(long)bamgmesh->VerticesOnGeomVertex[i*2+0]-1; //for C indexing
+				i2=(long)bamgmesh->VerticesOnGeomVertex[i*2+1]-1; //for C indexing
+				VerticesOnGeomVertex[i]=VertexOnGeom(vertices[i1],Gh.vertices[i2]);
+			}
+		}
+
+		//Edges
+		if (bamgmesh->Edges){
+			int i1,i2;
+			double* len=NULL;
+
+			if(verbose>5) _printf_("      processing Edges\n");
+			nbe=bamgmesh->EdgesSize[0];
+			edges= new Edge[nbe];
+			//initialize length of each edge (used to provided metric)
+			len= new double[nbv];
+			for(i=0;i<nbv;i++) len[i]=0;
+
+			for (i=0;i<nbe;i++){
+				i1=(int)bamgmesh->Edges[i*3+0]-1; //-1 for C indexing
+				i2=(int)bamgmesh->Edges[i*3+1]-1; //-1 for C indexing
+				edges[i].ReferenceNumber=(long)bamgmesh->Edges[i*3+2];
+				edges[i].v[0]= vertices +i1;
+				edges[i].v[1]= vertices +i2;
+				edges[i].adj[0]=NULL;
+				edges[i].adj[1]=NULL;
+				R2 x12=vertices[i2].r-vertices[i1].r;
+				double l12=sqrt((x12,x12));
+
+				//prepare metric
+				vertices[i1].color++;
+				vertices[i2].color++;
+				len[i1]+=l12;
+				len[i2]+=l12;
+				Hmin = Min(Hmin,l12);
+			}
+
+			// definition  the default of the given mesh size 
+			for (i=0;i<nbv;i++){
+				if (vertices[i].color>0) 
+				 vertices[i].m=Metric(len[i]/(double)vertices[i].color);
+				else 
+				 vertices[i].m=Metric(Hmin);
+			}
+			delete [] len;
+
+			// construction of edges[].adj 
+			for (i=0;i<nbv;i++){ 
+				vertices[i].color=(vertices[i].color ==2) ?-1:-2;
+			}
+			for (i=0;i<nbe;i++){
+				for (j=0;j<2;j++) { 
+					BamgVertex *v=edges[i].v[j];
+					long i0=v->color,j0;
+					if(i0==-1){
+						v->color=i*2+j;
+					}
+					else if (i0>=0) {// i and i0 edge are adjacent by the vertex v
+						j0 = i0%2;
+						i0 = i0/2;
+						_assert_(v==edges[i0 ].v[j0]);
+						edges[i ].adj[j ] =edges +i0;
+						edges[i0].adj[j0] =edges +i ;
+						v->color = -3;
+					}
+				}
+			}
+		}
+
+		//EdgeOnGeomEdge
+		if(bamgmesh->EdgesOnGeomEdge){
+			if(verbose>5) _printf_("      processing EdgesOnGeomEdge\n");
+			int i1,i2,i,j;
+			i2=bamgmesh->EdgesOnGeomEdgeSize[0];
+			for (i1=0;i1<i2;i1++) {
+				i=(int)bamgmesh->EdgesOnGeomEdge[i1*2+0]-1; //C indexing
+				j=(int)bamgmesh->EdgesOnGeomEdge[i1*2+1]-1; //C indexing
+				//Check value
+				if(!(i>=0 && j>=0 && i<nbe && j<Gh.nbe)) {
+					_error_("ReadMesh error: EdgesOnGeomEdge edge provided (line " << i1+1 << ": [" << i+1 << " " << j+1 << "]) is incorrect (must be positive, [0<i<nbe=" << nbe << " 0<j<Gh.nbe=" << Gh.nbe << "]");
+				}
+				edges[i].GeomEdgeHook=Gh.edges+j;
+			}
+		}
+
+		//SubDomain
+		if(bamgmesh->SubDomains){
+			long i3,head,direction;
+			if(verbose>5) _printf_("      processing SubDomains\n");
+			nbsubdomains=bamgmesh->SubDomainsSize[0];
+			subdomains = new SubDomain [ nbsubdomains ];
+			for (i=0;i<nbsubdomains;i++) {
+				i3  =(int)bamgmesh->SubDomains[i*4+0];
+				head=(int)bamgmesh->SubDomains[i*4+1]-1;//C indexing
+				direction=(int)bamgmesh->SubDomains[i*4+2];
+				if (i3!=3) _error_("Bad Subdomain definition: first number should be 3");
+				if (head<0 || head>=nbt) _error_("Bad Subdomain definition: head should in [1 " << nbt << "] (triangle number)");
+				subdomains[i].head = triangles+head;
+				subdomains[i].direction = direction;
+				subdomains[i].ReferenceNumber = i3;
+			}
+		}
+
+	}
+	/*}}}*/
+	void Mesh::WriteMesh(BamgMesh* bamgmesh,BamgOpts* bamgopts){/*{{{*/
+
+		/*Intermediary*/
+		int i,j,k,num,i1,i2;
+		long n;
+		int* head_1=NULL;
+		int* next_1=NULL;
+		int* connectivitysize_1=NULL;
+		int  connectivitymax_1=0;
+		int verbose=0;
+
+		/*Check needed pointer*/
+		_assert_(bamgmesh);
+
+		/*Get options*/
+		if(bamgopts) verbose=bamgopts->verbose;
+
+		/*Build reft that holds the number the subdomain number of each triangle, and the real numbering of the elements*/
+		long* reft = new long[nbt];
+		long* numt = new long[nbt];
+		long nbInT = TriangleReferenceList(reft);
+		TriangleIntNumbering(numt);
+
+		/*Chaining algorithm used to generate connectivity tables and other outputs*/
+
+		//Memory Allocation
+		head_1=xNew<int>(nbv);
+		next_1=xNew<int>(3*nbt);
+		connectivitysize_1=xNew<int>(nbv);
+
+		//Initialization
+		for (i=0;i<nbv;i++) head_1[i]=-1;
+		for (i=0;i<nbv;i++) connectivitysize_1[i]=0;
+		k=0;
+		//Chains generation
+		for (i=0;i<nbt;i++) {
+			//Do not take into account outside triangles (reft<0)
+			if (reft[i]>=0){
+				for (j=0;j<3;j++){
+					int v=GetId(triangles[i][j]); //jth vertex of the ith triangle
+					if (k>3*nbt-1 || k<0) _error_("k = " << k << ", nbt = " << nbt);
+					next_1[k]=head_1[v];
+					if (v>nbv-1 || v<0)   _error_("v = " << v << ", nbv = " << nbv);
+					head_1[v]=k++;
+					connectivitysize_1[v]+=1;
+				}
+			}
+		}
+		//Get maximum connectivity
+		connectivitymax_1=0;
+		for (i=0;i<nbv;i++){
+			if (connectivitysize_1[i]>connectivitymax_1) connectivitymax_1=connectivitysize_1[i];
+		}
+
+		/*OK, now build outputs*/
+
+		/*Vertices*/
+		if(verbose>5) _printf_("      writing Vertices\n");
+		bamgmesh->VerticesSize[0]=nbv;
+		bamgmesh->VerticesSize[1]=3;
+		if(nbv){
+			bamgmesh->Vertices=xNew<double>(3*nbv);
+			bamgmesh->PreviousNumbering=xNew<double>(nbv);
+			for (i=0;i<nbv;i++){
+				bamgmesh->Vertices[i*3+0]=vertices[i].r.x;
+				bamgmesh->Vertices[i*3+1]=vertices[i].r.y;
+				bamgmesh->Vertices[i*3+2]=vertices[i].GetReferenceNumber();
+				bamgmesh->PreviousNumbering[i]=vertices[i].PreviousNumber;
+			}
+		}
+
+		/*Edges*/
+		if(verbose>5) _printf_("      writing Edges\n");
+		bamgmesh->EdgesSize[0]=nbe;
+		bamgmesh->EdgesSize[1]=3;
+		int NumIssmSegments=0;
+		if (nbe){
+			bamgmesh->Edges=xNew<double>(3*nbe);
+			for (i=0;i<nbe;i++){
+				bamgmesh->Edges[i*3+0]=GetId(edges[i][0])+1; //back to M indexing
+				bamgmesh->Edges[i*3+1]=GetId(edges[i][1])+1; //back to M indexing
+				bamgmesh->Edges[i*3+2]=edges[i].ReferenceNumber;
+				if(edges[i].GeomEdgeHook){
+					NumIssmSegments++;
+				}
+			}
+		}
+
+		/*Element edges*/
+		if(verbose>5) _printf_("      writing element edges\n");
+		SetOfEdges4* edge4=new SetOfEdges4(nbt*3,nbv);
+		double* elemedge=NULL;
+		elemedge=xNew<double>(3*nbt);
+		for (i=0;i<3*nbt;i++) elemedge[i]=-2.;//will become -1
+		k=0;
+		for (i=0;i<nbt;i++){
+			//Do not take into account outside triangles (reft<0)
+			if (reft[i]>=0){
+				for  (j=0;j<3;j++) {
+					i1=GetId(triangles[i][VerticesOfTriangularEdge[j][0]]);
+					i2=GetId(triangles[i][VerticesOfTriangularEdge[j][1]]);
+					n =edge4->SortAndFind(i1,i2);
+					if (n==-1){
+						//first time
+						n=edge4->SortAndAdd(i1,i2);
+						elemedge[n*2+0]=double(k);
+					}
+					else{
+						//second time
+						elemedge[n*2+1]=double(k);
+					}
+				}
+				k++;
+			}
+		}
+		bamgmesh->IssmEdgesSize[0]=edge4->nb();
+		bamgmesh->IssmEdgesSize[1]=4;
+		bamgmesh->IssmEdges=xNew<double>(4*edge4->nb());
+		for (i=0;i<edge4->nb();i++){
+			/*Invert first two vertices if necessary*/
+			bool found=false;
+			for (j=0;j<3;j++){
+				if (triangles[(int)elemedge[2*i+0]](j)==vertices+edge4->i(i)){
+					if (triangles[(int)elemedge[2*i+0]]((j+1)%3)==vertices+edge4->j(i)){
+						//trigonometric direction
+						bamgmesh->IssmEdges[i*4+0]=edge4->i(i)+1;// back to M indexing
+						bamgmesh->IssmEdges[i*4+1]=edge4->j(i)+1;// back to M indexing
+					}
+					else{
+						bamgmesh->IssmEdges[i*4+0]=edge4->j(i)+1;// back to M indexing
+						bamgmesh->IssmEdges[i*4+1]=edge4->i(i)+1;// back to M indexing
+					}
+					found=true;
+					break;
+				}
+			}
+			_assert_(found);
+			bamgmesh->IssmEdges[i*4+2]=elemedge[2*i+0]+1; // back to M indexing
+			bamgmesh->IssmEdges[i*4+3]=elemedge[2*i+1]+1; // back to M indexing
+		}
+		//clean up
+		delete edge4;
+		xDelete<double>(elemedge);
+
+		/*IssmSegments*/
+		if(verbose>5) _printf_("      writing IssmSegments\n");
+		bamgmesh->IssmSegmentsSize[0]=NumIssmSegments;
+		bamgmesh->IssmSegmentsSize[1]=4;
+		bamgmesh->IssmSegments=xNew<double>(4*NumIssmSegments);
+		num=0;
+		for (i=0;i<nbe;i++){
+			if(edges[i].GeomEdgeHook){
+				//build segment
+				int i1=GetId(edges[i][0]);
+				int i2=GetId(edges[i][1]);
+				bool stop=false;
+				for(j=head_1[i1];j!=-1;j=next_1[j]){
+					for(k=0;k<3;k++){
+						if (GetId(triangles[(int)j/3][k])==i1){
+							if (GetId(triangles[(int)j/3][(int)((k+1)%3)])==i2){
+								bamgmesh->IssmSegments[num*4+0]=GetId(edges[i][0])+1; //back to M indexing
+								bamgmesh->IssmSegments[num*4+1]=GetId(edges[i][1])+1; //back to M indexing
+								bamgmesh->IssmSegments[num*4+2]=(int)j/3+1;            //back to M indexing
+								bamgmesh->IssmSegments[num*4+3]=edges[i].ReferenceNumber;
+								num+=1;
+								stop=true;
+								break;
+							}
+							if (GetId(triangles[(int)j/3][(int)((k+2)%3)])==i2){
+								bamgmesh->IssmSegments[num*4+0]=GetId(edges[i][1])+1; //back to M indexing
+								bamgmesh->IssmSegments[num*4+1]=GetId(edges[i][0])+1; //back to M indexing
+								bamgmesh->IssmSegments[num*4+2]=(int)j/3+1;            //back to M indexing
+								bamgmesh->IssmSegments[num*4+3]=edges[i].ReferenceNumber;
+								num+=1;
+								stop=true;
+								break;
+							}
+						}
+					}
+					if(stop) break;
+				}
+				if (!stop){
+					_error_("Element holding segment [" << i1+1 << " " << i2+1 << "] not found...");
+				}
+			}
+		}
+
+		/*Triangles*/
+		if(verbose>5) _printf_("      writing Triangles\n");
+		k=nbInT;
+		num=0;
+		bamgmesh->TrianglesSize[0]=k;
+		bamgmesh->TrianglesSize[1]=4;
+		if (k){
+			bamgmesh->Triangles=xNew<double>(4*k);
+			for (i=0;i<nbt;i++){
+				Triangle &t=triangles[i];
+				//reft[i]=-1 for outside triangle
+				if (reft[i]>=0 && !( t.Hidden(0) || t.Hidden(1) || t.Hidden(2) )){
+					bamgmesh->Triangles[num*4+0]=GetId(t[0])+1; //back to M indexing
+					bamgmesh->Triangles[num*4+1]=GetId(t[1])+1; //back to M indexing
+					bamgmesh->Triangles[num*4+2]=GetId(t[2])+1; //back to M indexing
+					bamgmesh->Triangles[num*4+3]=subdomains[reft[i]].ReferenceNumber;
+					num=num+1;
+				}
+			}
+		}
+
+		/*SubDomains*/
+		if(verbose>5) _printf_("      writing SubDomains\n");
+		bamgmesh->SubDomainsSize[0]=nbsubdomains;
+		bamgmesh->SubDomainsSize[1]=4;
+		if (nbsubdomains){
+			bamgmesh->SubDomains=xNew<double>(4*nbsubdomains);
+			for (i=0;i<nbsubdomains;i++){
+				bamgmesh->SubDomains[i*4+0]=3;
+				bamgmesh->SubDomains[i*4+1]=reft[GetId(subdomains[i].head)]+1;//MATLAB indexing
+				bamgmesh->SubDomains[i*4+2]=1;
+				bamgmesh->SubDomains[i*4+3]=subdomains[i].ReferenceNumber;
+			}
+		}
+
+		/*SubDomainsFromGeom*/
+		if(verbose>5) _printf_("      writing SubDomainsFromGeom\n");
+		bamgmesh->SubDomainsFromGeomSize[0]=Gh.nbsubdomains;
+		bamgmesh->SubDomainsFromGeomSize[1]=4;
+		if (Gh.nbsubdomains){
+			bamgmesh->SubDomainsFromGeom=xNew<double>(4*Gh.nbsubdomains);
+			for (i=0;i<Gh.nbsubdomains;i++){
+				bamgmesh->SubDomainsFromGeom[i*4+0]=2;
+				bamgmesh->SubDomainsFromGeom[i*4+1]=GetId(subdomains[i].edge)+1; //back to Matlab indexing
+				bamgmesh->SubDomainsFromGeom[i*4+2]=subdomains[i].direction;
+				bamgmesh->SubDomainsFromGeom[i*4+3]=Gh.subdomains[i].ReferenceNumber;
+			}
+		}
+
+		/*VerticesOnGeomVertex*/
+		if(verbose>5) _printf_("      writing VerticesOnGeomVertex\n");
+		bamgmesh->VerticesOnGeomVertexSize[0]=NbVerticesOnGeomVertex;
+		bamgmesh->VerticesOnGeomVertexSize[1]=2;
+		if (NbVerticesOnGeomVertex){
+			bamgmesh->VerticesOnGeomVertex=xNew<double>(2*NbVerticesOnGeomVertex);
+			for (i=0;i<NbVerticesOnGeomVertex;i++){
+				VertexOnGeom &v=VerticesOnGeomVertex[i];
+				_assert_(v.OnGeomVertex());
+				bamgmesh->VerticesOnGeomVertex[i*2+0]=GetId((BamgVertex*)v)+1; //back to Matlab indexing
+				bamgmesh->VerticesOnGeomVertex[i*2+1]=Gh.GetId((GeomVertex*)v)+1; //back to Matlab indexing
+			}
+		}
+
+		/*VertexOnGeomEdge*/
+		if(verbose>5) _printf_("      writing VerticesOnGeomEdge\n");
+		bamgmesh->VerticesOnGeomEdgeSize[0]=NbVerticesOnGeomEdge;
+		bamgmesh->VerticesOnGeomEdgeSize[1]=3;
+		if (NbVerticesOnGeomEdge){
+			bamgmesh->VerticesOnGeomEdge=xNew<double>(3*NbVerticesOnGeomEdge);
+			for (i=0;i<NbVerticesOnGeomEdge;i++){
+				const VertexOnGeom &v=VerticesOnGeomEdge[i];
+				if (!v.OnGeomEdge()){
+					_error_("A vertices supposed to be OnGeomEdge is actually not");
+				}
+				bamgmesh->VerticesOnGeomEdge[i*3+0]=GetId((BamgVertex*)v)+1; //back to Matlab indexing
+				bamgmesh->VerticesOnGeomEdge[i*3+1]=Gh.GetId((const GeomEdge*)v)+1; //back to Matlab indexing
+				bamgmesh->VerticesOnGeomEdge[i*3+2]=(double)v; //absisce
+			}
+		}
+
+		/*EdgesOnGeomEdge*/
+		if(verbose>5) _printf_("      writing EdgesOnGeomEdge\n");
+		k=0;
+		for (i=0;i<nbe;i++){
+			if (edges[i].GeomEdgeHook) k=k+1;
+		}
+		bamgmesh->EdgesOnGeomEdgeSize[0]=k;
+		bamgmesh->EdgesOnGeomEdgeSize[1]=2;
+		if (k){
+			bamgmesh->EdgesOnGeomEdge=xNew<double>(2*(int)k);
+			int count=0;
+			for (i=0;i<nbe;i++){
+				if (edges[i].GeomEdgeHook){
+					bamgmesh->EdgesOnGeomEdge[count*2+0]=(double)i+1; //back to Matlab indexing
+					bamgmesh->EdgesOnGeomEdge[count*2+1]=(double)Gh.GetId(edges[i].GeomEdgeHook)+1; //back to Matlab indexing
+					count=count+1;
+				}
+			}
+		}
+
+		/*Element Connectivity*/
+		if(verbose>5) _printf_("      writing Element connectivity\n");
+		bamgmesh->ElementConnectivitySize[0]=nbt-nbtout;
+		bamgmesh->ElementConnectivitySize[1]=3;
+		bamgmesh->ElementConnectivity=xNew<double>(3*(nbt-nbtout));
+		for (i=0;i<3*(nbt-nbtout);i++) bamgmesh->ElementConnectivity[i]=NAN;
+		num=0;
+		for (i=0;i<nbt;i++){
+			if (reft[i]>=0){
+				for (j=0;j<3;j++){
+					k=GetId(triangles[i].TriangleAdj(j));
+					if (reft[k]>=0){
+						_assert_(3*num+j<3*(nbt-nbtout));
+						bamgmesh->ElementConnectivity[3*num+j]=k+1; // back to Matlab indexing
+					}
+				}
+				num+=1;
+			}
+		}
+
+		/*ElementNodal Connectivity*/
+		if(verbose>5) _printf_("      writing Nodal element connectivity\n");
+		bamgmesh->NodalElementConnectivitySize[0]=nbv;
+		bamgmesh->NodalElementConnectivitySize[1]=connectivitymax_1;
+		bamgmesh->NodalElementConnectivity=xNew<double>(connectivitymax_1*nbv);
+		for (i=0;i<connectivitymax_1*nbv;i++) bamgmesh->NodalElementConnectivity[i]=NAN;
+		for (i=0;i<nbv;i++){
+			k=0;
+			for(j=head_1[i];j!=-1;j=next_1[j]){
+				_assert_(connectivitymax_1*i+k < connectivitymax_1*nbv);
+				bamgmesh->NodalElementConnectivity[connectivitymax_1*i+k]=floor((double)j/3)+1;
+				k++;
+			}
+		}
+
+		/*Nodal Connectivity*/
+		if(verbose>5) _printf_("      writing Nodal connectivity\n");
+		//chaining algorithm (again...)
+		int* head_2=NULL;
+		int* next_2=NULL;
+		int* connectivitysize_2=NULL;
+		int  connectivitymax_2=0;
+		i1=bamgmesh->IssmEdgesSize[0];
+		i2=bamgmesh->IssmEdgesSize[1];
+		head_2=xNew<int>(nbv);
+		next_2=xNew<int>(2*i1);
+		connectivitysize_2=xNew<int>(nbv);
+		//Initialization
+		for (i=0;i<nbv;i++) head_2[i]=-1;
+		for (i=0;i<nbv;i++) connectivitysize_2[i]=0;
+		k=0;
+		//Chains generation
+		for (i=0;i<i1;i++) {
+			for (j=0;j<2;j++){
+				int v=(int)bamgmesh->IssmEdges[i*i2+j]-1; //back to C indexing
+				if (k>2*i1-1 || k<0) _error_("Index exceed matrix dimensions (k=" << k << " not in [0 " << 2*i1-1 << "]");
+				next_2[k]=head_2[v];
+				if (v>nbv-1 || v<0)   _error_("Index exceed matrix dimensions (v=" << v << " not in [0 " << nbv-1 << "])");
+				head_2[v]=k++;
+				connectivitysize_2[v]+=1;
+			}
+		}
+		//Get maximum connectivity
+		for (i=0;i<nbv;i++){
+			if (connectivitysize_2[i]>connectivitymax_2) connectivitymax_2=connectivitysize_2[i];
+		}
+		//Build output
+		connectivitymax_2++;//add last column for size
+		bamgmesh->NodalConnectivitySize[0]=nbv;
+		bamgmesh->NodalConnectivitySize[1]=connectivitymax_2;
+		bamgmesh->NodalConnectivity=xNew<double>(connectivitymax_2*nbv);
+		for (i=0;i<connectivitymax_2*nbv;i++) bamgmesh->NodalConnectivity[i]=0;
+		for (i=0;i<nbv;i++){
+			k=0;
+			for(j=head_2[i];j!=-1;j=next_2[j]){
+				_assert_(connectivitymax_2*i+k < connectivitymax_2*nbv);
+				num=(int)bamgmesh->IssmEdges[int(j/2)*i2+0];
+				if (i+1==num){ //carefull, ElementEdge is in M indexing
+					//i is the first vertex of the edge, it is therefore connected to the second vertex
+					bamgmesh->NodalConnectivity[connectivitymax_2*i+k]=bamgmesh->IssmEdges[int(j/2)*i2+1];
+				}
+				else{
+					bamgmesh->NodalConnectivity[connectivitymax_2*i+k]=num;
+				}
+				k++;
+			}
+			bamgmesh->NodalConnectivity[connectivitymax_2*(i+1)-1]=k;
+		}
+
+		/*Cracked vertices*/
+		if(verbose>5) _printf_("      writing Cracked vertices\n");
+		bamgmesh->CrackedVerticesSize[0]=NbCrackedVertices;
+		bamgmesh->CrackedVerticesSize[1]=2;
+		if (NbCrackedVertices){
+			bamgmesh->CrackedVertices=xNew<double>(2*NbCrackedVertices);
+			for (i=0;i<NbCrackedVertices;i++){
+				bamgmesh->CrackedVertices[i*2+0]=CrackedVertices[i*2+0]+1; //M indexing
+				bamgmesh->CrackedVertices[i*2+1]=CrackedVertices[i*2+1]+1; //M indexing
+			}
+		}
+
+		/*Cracked vertices*/
+		if(verbose>5) _printf_("      writing Cracked vertices\n");
+		bamgmesh->CrackedEdgesSize[0]=NbCrackedEdges;
+		bamgmesh->CrackedEdgesSize[1]=4;
+		if (NbCrackedEdges){
+			bamgmesh->CrackedEdges=xNew<double>(2*NbCrackedEdges);
+			for (i=0;i<NbCrackedEdges;i++){
+				bamgmesh->CrackedEdges[i*2+0]=0;//CrackedEdges[i]->+1; //M indexing
+				bamgmesh->CrackedEdges[i*2+1]=0;//CrackedEdges[i]-]->+1; //M indexing
+			}
+		}
+
+		//clean up
+		xDelete<int>(connectivitysize_1);
+		xDelete<int>(head_1);
+		xDelete<int>(next_1);
+		xDelete<int>(connectivitysize_2);
+		xDelete<int>(head_2);
+		xDelete<int>(next_2);
+		delete [] reft;
+		delete [] numt;
+	}
+	/*}}}*/
+	void Mesh::ReadMetric(const BamgOpts* bamgopts) {/*{{{*/
+
+		/*Intermediary*/
+		int  i,j;
+		int verbose=0;
+
+		/*Check pointer*/
+		_assert_(bamgopts);
+
+		/*Get options*/
+		verbose=bamgopts->verbose;
+
+		if(verbose>3) _printf_("      processing metric\n");
+		double hmin = Max(bamgopts->hmin,MinimalHmin());
+		double hmax = Min(bamgopts->hmax,MaximalHmax());
+		double coef = bamgopts->coeff;
+
+		//for now we only use j==3
+		j=3;
+
+		for (i=0;i<nbv;i++){
+			double h;
+			if (j == 1){
+				h=bamgopts->metric[i];
+				vertices[i].m=Metric(Max(hmin,Min(hmax, h*coef)));
+			}
+			else if (j==3){
+				//do not erase metric computed by hVertices
+				if (vertices[i].m.a11==1 && vertices[i].m.a21==0 && vertices[i].m.a22==1){
+					double a,b,c;	     
+					a=bamgopts->metric[i*3+0];
+					b=bamgopts->metric[i*3+1];
+					c=bamgopts->metric[i*3+2];
+					Metric M(a,b,c);
+					EigenMetric Vp(M/coef);
+
+					Vp.Maxh(hmax);
+					Vp.Minh(hmin);
+					vertices[i].m = Vp;
+				}
+			}
+		}
+	}
+	/*}}}*/
+	void Mesh::WriteMetric(BamgOpts* bamgopts) {/*{{{*/
+		int i;
+		_assert_(bamgopts);
+		xDelete<double>(bamgopts->metric);
+		bamgopts->metric=xNew<double>(3*nbv);
+		for (i=0;i<nbv;i++){
+			bamgopts->metric[i*3+0]=vertices[i].m.a11;
+			bamgopts->metric[i*3+1]=vertices[i].m.a21;
+			bamgopts->metric[i*3+2]=vertices[i].m.a22;
+		}
+	}
+	/*}}}*/
+	void Mesh::WriteIndex(int** pindex,int* pnels){/*{{{*/
+
+		/*Intermediary*/
+		int i,k;
+
+		/*output*/
+		int* index=NULL;
+		int  num=0;
+
+		/*Get number of triangles*/
+		k=0;
+		for (i=0;i<nbt;i++){
+			Triangle &t=triangles[i];
+			if(t.det>0) k++;
+		}
+
+		if (k){
+			index=xNew<int>(3*k);
+			for (i=0;i<nbt;i++){
+				Triangle &t=triangles[i];
+				if (t.det>0 && !(t.Hidden(0)||t.Hidden(1) || t.Hidden(2) )){
+					/*Remove triangles that have a bad aspect ratio*/
+					//if(t.Anisotropy()<2 & t.Length()<1.e+5){
+						index[num*3+0]=GetId(t[0])+1; //back to M indexing
+						index[num*3+1]=GetId(t[1])+1; //back to M indexing
+						index[num*3+2]=GetId(t[2])+1; //back to M indexing
+						num=num+1;
+					//}
+				}
+			}
+		}
+
+		/*Assign output pointers*/
+		*pindex=index;
+		*pnels=num;
+	}
+	/*}}}*/
+
+	/*Methods*/
+	void Mesh::AddMetric(BamgOpts* bamgopts){/*{{{*/
+		//  Hessiantype = 0 =>  H is computed using double L2 projection
+		//  Hessiantype = 1 =>  H is computed with green formula
+
+		/*Check pointer*/
+		_assert_(bamgopts);
+
+		/*Options*/
+		int Hessiantype=bamgopts->Hessiantype;
+
+		if (Hessiantype==0){
+			BuildMetric0(bamgopts);
+		}
+		else if (Hessiantype==1){
+			BuildMetric1(bamgopts);
+		}
+		else{
+			_error_("Hessiantype " << Hessiantype << " not supported yet (1->use Green formula, 0-> double L2 projection)");
+		}
+	}
+	/*}}}*/
+	void Mesh::AddVertex( BamgVertex &s,Triangle* t, long long* det3){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Add)*/
+		// -------------------------------
+		//             s2
+		//                               !
+		//             /|\               !
+		//            / | \              !
+		//           /  |  \             !
+		//    tt1   /   |   \ tt0        !
+		//         /    |s   \           !
+		//        /     .     \          !
+		//       /  .      `   \         !
+		//      / .           ` \        !
+		//      ----------------         !
+		//   s0       tt2       s1
+		//-------------------------------
+
+		/*Intermediaries*/
+		Triangle* tt[3];       //the three triangles
+		long long det3local[3];   //three determinants (integer)
+		int nbzerodet =0;      //number of zeros in det3
+		int izerodet=-1;       //egde containing the vertex s
+		int iedge; 
+
+		/*three vertices of t*/
+		BamgVertex* s0=t->GetVertex(0);
+		BamgVertex* s1=t->GetVertex(1);
+		BamgVertex* s2=t->GetVertex(2);
+
+		//determinant of t
+		long long detOld=t->det;
+
+		/* infvertexindex = index of the infinite vertex (NULL)
+			if no infinite vertex (NULL) infvertexindex=-1
+			else if v_i is infinite, infvertexindex=i*/
+		int infvertexindex = s0 ? ((s1? (s2?-1:2):1)):0;
+
+		//some checks
+		if(((infvertexindex <0 ) && (detOld <0)) ||  ((infvertexindex >=0) && (detOld >0)) ){
+			_error_("inconsistent configuration (Contact ISSM developers)");
+		}
+
+		// if det3 does not exist, build it 
+		if (!det3){ 
+			//allocate
+			det3 = det3local;
+			//if no infinite vertex
+			if (infvertexindex<0 ) {
+				det3[0]=bamg::det(s .GetIntegerCoordinates(),s1->GetIntegerCoordinates(),s2->GetIntegerCoordinates());
+				det3[1]=bamg::det(s0->GetIntegerCoordinates(),s .GetIntegerCoordinates(),s2->GetIntegerCoordinates());
+				det3[2]=bamg::det(s0->GetIntegerCoordinates(),s1->GetIntegerCoordinates(),s.GetIntegerCoordinates());}
+			else { 
+				// one of &s1  &s2  &s0 is NULL
+				det3[0]= s0 ? -1 : bamg::det(s.GetIntegerCoordinates(),s1->GetIntegerCoordinates(),s2->GetIntegerCoordinates()) ;
+				det3[1]= s1 ? -1 : bamg::det(s0->GetIntegerCoordinates(),s.GetIntegerCoordinates(),s2->GetIntegerCoordinates()) ;
+				det3[2]= s2 ? -1 : bamg::det(s0->GetIntegerCoordinates(),s1->GetIntegerCoordinates(),s.GetIntegerCoordinates()) ;
+			}
+		}
+
+		if (!det3[0]) izerodet=0,nbzerodet++;
+		if (!det3[1]) izerodet=1,nbzerodet++;
+		if (!det3[2]) izerodet=2,nbzerodet++;
+
+		//if nbzerodet>0, point s is on an egde or on a vertex 
+		if  (nbzerodet>0){ 
+			/*s is on an edge*/
+			if (nbzerodet==1) {
+				iedge = OppositeEdge[izerodet];
+				AdjacentTriangle ta = t->Adj(iedge);
+
+				/*if the point is one the boundary 
+				  add the point in outside part */
+				if (t->det>=0){ // inside triangle
+					if (((Triangle*)ta)->det<0 ) {
+						// add in outside triangle 
+						AddVertex(s,( Triangle *)ta);
+						return;
+					}
+				}
+			}
+			else{
+				_error_("Cannot add a vertex more than once. Check duplicates");
+			}
+		}
+
+		// remove de MarkUnSwap edge
+		t->SetUnMarkUnSwap(0);
+		t->SetUnMarkUnSwap(1);
+		t->SetUnMarkUnSwap(2);
+
+		tt[0]= t;
+		tt[1]= &triangles[nbt++];
+		tt[2]= &triangles[nbt++];
+
+		if (nbt>maxnbt) _error_("Not enough triangles");
+
+		*tt[1]=*tt[2]=*t;
+		tt[0]->link=tt[1];
+		tt[1]->link=tt[2]; 
+
+		(*tt[0])(OppositeVertex[0])=&s;
+		(*tt[1])(OppositeVertex[1])=&s;
+		(*tt[2])(OppositeVertex[2])=&s;
+
+		tt[0]->det=det3[0];
+		tt[1]->det=det3[1];
+		tt[2]->det=det3[2];         
+
+		//  update adj des triangles externe 
+		tt[0]->SetAdjAdj(0);
+		tt[1]->SetAdjAdj(1);
+		tt[2]->SetAdjAdj(2);
+		//  update des adj des 3 triangle interne
+		const int i0 = 0;
+		const int i1= NextEdge[i0];
+		const int i2 = PreviousEdge[i0];
+
+		tt[i0]->SetAdj2(i2,tt[i2],i0);
+		tt[i1]->SetAdj2(i0,tt[i0],i1);
+		tt[i2]->SetAdj2(i1,tt[i1],i2);
+
+		tt[0]->SetSingleVertexToTriangleConnectivity();
+		tt[1]->SetSingleVertexToTriangleConnectivity();
+		tt[2]->SetSingleVertexToTriangleConnectivity();
+
+		// swap if the point s is on a edge
+		if(izerodet>=0) {
+			int rswap=tt[izerodet]->swap(iedge);
+
+			if (!rswap) {
+				_error_("swap the point s is on a edge");
+			}
+		}
+
+	}/*}}}*/
+	void Mesh::BoundAnisotropy(BamgOpts* bamgopts,double anisomax,double hminaniso) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/BoundAnisotropy)*/
+
+		int verbose=0;
+		double lminaniso = 1./ (Max(hminaniso*hminaniso,1e-100));
+
+		//Get options
+		if(bamgopts) verbose=bamgopts->verbose;
+
+		//display info
+		if (verbose > 1)  _printf_("   BoundAnisotropy by " << anisomax << "\n");
+
+		double h1=1.e30,h2=1e-30;
+		double coef = 1./(anisomax*anisomax);
+		double hn1=1.e30,hn2=1e-30,rnx =1.e-30,rx=0;  
+
+		//loop over all vertices
+		for (int i=0;i<nbv;i++){
+			EigenMetric Vp(vertices[i]);
+			double lmax=Vp.lmax();
+			Vp*=Min(lminaniso,lmax)/lmax;
+			Vp.BoundAniso2(coef);
+			vertices[i].m = Vp;
+
+			//info to be displayed
+			if (verbose>2){
+				h1 =Min(h1,Vp.lmin());
+				h2 =Max(h2,Vp.lmax());
+				hn1=Min(hn1,Vp.lmin());
+				hn2=Max(hn2,Vp.lmax());
+				rx =Max(rx,Vp.Aniso2());
+				rnx= Max(rnx,Vp.Aniso2());
+			}
+		}
+
+		//display info
+		if (verbose>2){
+			_printf_("      input:  Hmin = " << pow(h2,-0.5)  << ", Hmax = " << pow(h1,-0.5) << ", factor of anisotropy max  = " << pow(rx,0.5) << "\n");
+			_printf_("      output: Hmin = " << pow(hn2,-0.5) << ", Hmax = " << pow(hn1,-0.5)<< ", factor of anisotropy max  = " <<pow(rnx,0.5) << "\n");
+		}
+	}
+	/*}}}*/
+	void Mesh::BuildGeometryFromMesh(BamgOpts* bamgopts){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/ConsGeometry)*/
+
+		/*Reconstruct Geometry from Mesh*/
+
+		/*Intermediary*/
+		int i,j,k,kk,it,jt;
+		int    verbose=0;
+
+		/*Recover options*/
+		if(bamgopts) verbose=bamgopts->verbose;
+
+		//display info
+		if (verbose>1) _printf_("   construction of the geometry from the 2d mesh\n");
+
+		//check that the mesh is not empty
+		if(nbt<=0 || nbv <=0 ) _error_("nbt or nbv is negative (Mesh empty?)");
+
+		/*Construction of the edges*/
+
+		/*initialize st and edge4*/
+		SetOfEdges4* edge4= new SetOfEdges4(nbt*3,nbv);
+		long*        st   = new long[nbt*3];
+
+		/*initialize st as -1 (chaining algorithm)*/
+		for (i=0;i<nbt*3;i++) st[i]=-1;
+
+		/*build edge4 (chain)*/
+		for (i=0;i<nbe;i++){
+			edge4->SortAndAdd(GetId(edges[i][0]),GetId(edges[i][1]));
+		}
+		/*check that there is no double edge*/
+		if (nbe !=  edge4->nb()){ 
+			delete [] st;
+			_error_("Some Double edge in the mesh, the number is " << nbe << ", nbe4=" << edge4->nb()); 
+		}
+		//keep nbe in nbeold
+		long nbeold = nbe;
+
+		//Go through the triangles and add the edges in edge4 if they are not there yet
+		for (i=0;i<nbt;i++){
+			//3 edges per triangle
+			for  (j=0;j<3;j++) {
+				//Add Edge to edge4 (k=numberofedges in edge4)
+				long k =edge4->SortAndAdd(GetId(triangles[i][VerticesOfTriangularEdge[j][0]]), GetId(triangles[i][VerticesOfTriangularEdge[j][1]]));
+				long invisible = triangles[i].Hidden(j);
+
+				//if st[k] has not been changed yet, add 3*i+j (= vertex position in the index)
+				if(st[k]==-1) st[k]=3*i+j;
+
+				//else st[k]>=0 -> the edge already exist, check
+				else if(st[k]>=0) {
+					//check that it is not an edge on boundary (should not already exist)
+					if (triangles[i].TriangleAdj(j) || triangles[st[k]/3].TriangleAdj((int) (st[k]%3))){
+						_error_("problem in Geometry reconstruction: an edge on boundary is duplicated (double element?)");
+					}
+					/*OK, the element is not on boundary, is belongs to 2 triangles -> build Adjacent triangles list*/
+					triangles[i].SetAdj2(j,triangles + st[k] / 3,(int) (st[k]%3));
+					if (invisible)  triangles[i].SetHidden(j);
+					/* if k < nbe mark the edge as on Boundary (Locked)*/
+					if (k<nbe) {
+						triangles[i].SetLocked(j);
+					}
+					/*set st[k] as negative so that the edge should not be called again*/
+					st[k]=-2-st[k]; 
+				}
+				else {
+					/*else (see 3 lines above), the edge has been called more than twice: return error*/
+					_printf_("The edge (" << GetId(triangles[i][VerticesOfTriangularEdge[j][0]]) << "," << GetId(triangles[i][VerticesOfTriangularEdge[j][1]]) << ") belongs to more than 2 triangles (" << k << ")\n");
+					_printf_("Edge " << j << " of triangle " << i << "\n");
+					_printf_("Edge " << (-st[k]+2)%3 << " of triangle " << (-st[k]+2)/3 << "\n");
+					_printf_("Edge " << triangles[(-st[k]+2)/3].NuEdgeTriangleAdj((int)((-st[k]+2)%3)) << " of triangle " << GetId(triangles[(-st[k]+2)/3].TriangleAdj((int)((-st[k]+2)%3))) << "\n");
+					_error_("An edge belongs to more than 2 triangles");
+				}	
+			}
+		}
+
+		//delete edge4
+		long nbedges = edge4->nb(); // the total number of edges 
+		delete edge4; edge4=NULL;
+
+		//display info
+		if(verbose>5) {
+			_printf_("         info on Mesh:\n");
+			_printf_("            - number of vertices    = " << nbv << "\n"); 
+			_printf_("            - number of triangles   = " << nbt << "\n"); 
+			_printf_("            - number of given edges = " << nbe << "\n"); 
+			_printf_("            - number of all edges   = " << nbedges << "\n"); 
+			_printf_("            - Euler number 1 - nb of holes = " << nbt-nbedges+nbv << "\n"); 
+		}
+
+		/*check consistency of edge[].adj and geometrical required  vertices*/
+		k=0; kk=0;
+		for (i=0;i<nbedges;i++){
+			//internal edge
+			if (st[i] <-1) {
+				//get triangle number back
+				it =  (-2-st[i])/3;
+				//get edge position back
+				j  =  (int) ((-2-st[i])%3);
+				Triangle &tt=*triangles[it].TriangleAdj(j);
+				if (triangles[it].color != tt.color|| i < nbeold) k++;
+			}
+			//boundary edge (alone)
+			else if (st[i] >=0) 
+			 kk++;
+		}
+
+		/*Constructions of edges*/
+		k += kk;
+		kk=0;
+		if (k) {
+			nbe = k;
+			Edge* edgessave=edges;
+			edges = new Edge[nbe];
+			k =0;
+
+			//display info
+			if(verbose>4) _printf_("   Construction of the edges " << nbe << "\n");
+
+			for (i=0;i<nbedges;i++){ 
+				long  add= -1;
+
+				//internal edge (belongs to two triangles)
+				if (st[i] <-1){ 
+					it =  (-2-st[i])/3;
+					j  =  (int) ((-2-st[i])%3);
+					Triangle & tt = * triangles[it].TriangleAdj(j);
+					if (triangles[it].color !=  tt.color || i < nbeold) add=k++;
+				}
+				//boundary edge
+				else if (st[i] >=0){
+					it = st[i]/3;
+					j  = (int) (st[i]%3);
+					add=k++;
+				}
+				if (add>=0 && add < nbe){
+					edges[add].v[0] = &triangles[it][VerticesOfTriangularEdge[j][0]];
+					edges[add].v[1] = &triangles[it][VerticesOfTriangularEdge[j][1]];
+					edges[add].GeomEdgeHook=NULL; 
+					//if already existed
+					if (i<nbeold){
+						edges[add].ReferenceNumber=edgessave[i].ReferenceNumber; 		      
+						edges[add].GeomEdgeHook=edgessave[i].GeomEdgeHook; //  HACK to get required edges
+						_printf_("oh no...\n");
+					}
+					else
+					 edges[add].ReferenceNumber=Min(edges[add].v[0]->GetReferenceNumber(),edges[add].v[1]->GetReferenceNumber());
+				  }
+			}
+
+			//check that we have been through all edges
+			if (k!=nbe){
+				_error_("problem in edge construction process: k!=nbe (should not happen)");
+			}
+			//delete edgessave
+			if (edgessave) delete [] edgessave;
+		}
+
+		/*Color the vertices*/
+
+		//initialize color of all vertices as 0
+		for (i=0;i<nbv;i++) vertices[i].color =0;
+
+		//go through the edges and add a color to corresponding vertices
+		//(A vertex in 4 edges will have a color 4)
+		for (i=0;i<nbe;i++){
+		 for (j=0;j<2;j++) edges[i].v[j]->color++;
+		}
+
+		//change the color: if a vertex belongs to 2 edges -1, else -2
+		for (i=0;i<nbv;i++) {
+			vertices[i].color=(vertices[i].color ==2)? -1 : -2;
+		}
+
+		/*Build edges[i].adj: adjacency of each edge (if on the same curve)*/
+		for (i=0;i<nbe;i++){
+			for (j=0;j<2;j++){ 
+				//get current vertex
+				BamgVertex* v=edges[i].v[j];
+				//get vertex color (i0)
+				long i0=v->color;
+				long j0;
+
+				//if color<0 (first time), no adjacent edge
+				if(i0<0) edges[i].adj[j]=NULL;
+
+				//if color=-1 (corner),change the vertex color as 2*i+j (position of the vertex in edges)
+				if(i0==-1) v->color=i*2+j;
+
+				//if color>=0 (i and i0 edge are adjacent by the vertex v)
+				else if (i0>=0) {
+					//get position of v in edges back
+					j0 =  i0%2; //column in edges
+					i0 =  i0/2; //line in edges
+
+					//check that we have the correct vertex
+					if (v!=edges[i0 ].v[j0]){
+						_error_("v!=edges[i0 ].v[j0]: this should not happen as the vertex belongs to this edge");
+					}
+
+					//Add adjacence
+					edges[i ].adj[j ]=edges +i0;
+					edges[i0].adj[j0]=edges +i ;
+
+					//change color to -3
+					v->color = -3;
+				}
+			}
+		}
+
+		/*Reconstruct subdomains info*/
+
+		//check that nbsubdomains is empty
+		if(nbsubdomains) _error_("nbsubdomains should be 0");
+		nbsubdomains=0;
+
+		//color the subdomains
+		long* colorT= new long[nbt];
+		Triangle *tt,*t;
+
+		//initialize the color of each triangle as -1
+		for (it=0;it<nbt;it++) colorT[it]=-1;
+
+		//loop over the triangles
+		for (it=0;it<nbt;it++){
+
+			//if the triangle has not been colored yet:
+			if (colorT[it]<0){
+
+				//color = number of subdomains
+				colorT[it]=nbsubdomains;
+
+				//color all the adjacent triangles of T that share a non marked edge
+				int level =1;
+				int kolor=triangles[it].color;
+				st[0]=it; // stack 
+				st[1]=0;
+				k=1;
+				while (level>0){
+					if( (j=st[level]++)<3 ){ 
+						t = &triangles[st[level-1]];
+						tt=t->TriangleAdj((int)j);
+
+						//color the adjacent triangle
+						if ( ! t->Locked(j) && tt && (colorT[jt = GetId(tt)] == -1) && ( tt->color==kolor)) {
+							colorT[jt]=nbsubdomains;
+							st[++level]=jt;
+							st[++level]=0;
+							k++;
+						}
+					}
+					else level-=2;
+				}
+				nbsubdomains++;
+			}
+		}
+		if (verbose> 3) _printf_("      The Number of sub domain = " << nbsubdomains << "\n"); 
+
+		//build subdomains
+		long isd;
+		subdomains = new SubDomain[nbsubdomains];
+
+		//initialize subdomains[isd].head as 0
+		for (isd=0;isd<nbsubdomains;isd++) subdomains[isd].head =0;
+
+		k=0;
+		for (it=0;it<nbt;it++){
+			for (int j=0;j<3;j++){
+				tt=triangles[it].TriangleAdj(j);
+				if ((!tt || tt->color != triangles[it].color) && !subdomains[isd=colorT[it]].head){
+					subdomains[isd].head = triangles+it;
+					subdomains[isd].ReferenceNumber =  triangles[it].color;
+					subdomains[isd].direction = j; // hack
+					subdomains[isd].edge = 0;
+					k++;
+				}
+			}
+		}
+		//check that we have been through all subdomains
+		if (k!= nbsubdomains){
+			delete [] colorT;
+			_error_("k!= nbsubdomains");
+		}
+		//delete colorT and st
+		delete [] colorT;
+		delete [] st;
+
+		/*Reconstruct Geometry Gh*/
+
+		//build colorV -1 for all vertex and 0 for the vertices belonging to edges
+		long* colorV = new long[nbv];
+		for (i=0;i<nbv;i++) colorV[i]=-1;
+		for (i=0;i<nbe;i++){
+		 for ( j=0;j<2;j++) colorV[GetId(edges[i][j])]=0;
+		}
+		//number the vertices belonging to edges
+		k=0;
+		for (i=0;i<nbv;i++){
+		 if(!colorV[i]) colorV[i]=k++;
+		}
+
+		//Build Gh
+		Gh.nbv=k;
+		Gh.nbe = nbe;
+		Gh.vertices = new GeomVertex[k];
+		Gh.edges = new GeomEdge[nbe];
+		Gh.nbsubdomains = nbsubdomains;
+		Gh.subdomains = new GeomSubDomain[nbsubdomains];
+		if (verbose>3) _printf_("   number of vertices = " << Gh.nbv << "\n   number of edges = " << Gh.nbe << "\n");
+		NbVerticesOnGeomVertex = Gh.nbv;
+		VerticesOnGeomVertex = new VertexOnGeom[NbVerticesOnGeomVertex];
+		NbVerticesOnGeomEdge =0;
+		VerticesOnGeomEdge =0;
+
+		//Build VertexOnGeom
+		for (i=0;i<nbv;i++){
+			if((j=colorV[i])>=0){
+				BamgVertex & v = Gh.vertices[j];
+				v = vertices[i];
+				v.color =0;
+				VerticesOnGeomVertex[j] = VertexOnGeom(vertices[i], Gh.vertices[j]);
+			}
+		}
+
+		//Buid pmin and pmax of Gh (extrema coordinates)
+		Gh.pmin =  Gh.vertices[0].r;
+		Gh.pmax =  Gh.vertices[0].r;
+		// recherche des extrema des vertices pmin,pmax
+		for (i=0;i<Gh.nbv;i++) {
+			Gh.pmin.x = Min(Gh.pmin.x,Gh.vertices[i].r.x);
+			Gh.pmin.y = Min(Gh.pmin.y,Gh.vertices[i].r.y);
+			Gh.pmax.x = Max(Gh.pmax.x,Gh.vertices[i].r.x);
+			Gh.pmax.y = Max(Gh.pmax.y,Gh.vertices[i].r.y);
+		}
+		R2 DD05 = (Gh.pmax-Gh.pmin)*0.05;
+		Gh.pmin -=  DD05;
+		Gh.pmax +=  DD05;
+
+		//Build Gh.coefIcoor
+		long MaxICoord = 1073741823; //2^30 - 1 = =111...111 (29 times one)
+		Gh.coefIcoor= (MaxICoord)/(Max(Gh.pmax.x-Gh.pmin.x,Gh.pmax.y-Gh.pmin.y));
+		if (Gh.coefIcoor<=0){
+			delete [] colorV;
+			_error_("Gh.coefIcoor<=0 in infered Geometry (this should not happen)");
+		}
+
+		/*Build Gh.edges*/
+
+		//initialize len as 0
+		double * len = new double[Gh.nbv];
+		for(i=0;i<Gh.nbv;i++) len[i]=0;
+
+		//initialize edge4 again
+		edge4= new SetOfEdges4(nbe,nbv);  
+		double hmin = HUGE_VAL;
+		int kreq=0;
+		for (i=0;i<nbe;i++){
+
+			long i0 = GetId(edges[i][0]);
+			long i1 = GetId(edges[i][1]);
+			long j0 = colorV[i0];
+			long j1 = colorV[i1];
+
+			Gh.edges[i].v[0] = Gh.vertices +  j0;
+			Gh.edges[i].v[1] = Gh.vertices +  j1;
+
+			Gh.edges[i].type = 0;
+
+			Gh.edges[i].tg[0]=R2();
+			Gh.edges[i].tg[1]=R2();
+
+			bool required= edges[i].GeomEdgeHook; 
+			if(required) kreq++;
+			edges[i].GeomEdgeHook =  Gh.edges + i;
+			if(required){
+				Gh.edges[i].v[0]->SetRequired();
+				Gh.edges[i].v[1]->SetRequired();
+				Gh.edges[i].SetRequired();
+			}
+
+			R2 x12 = Gh.vertices[j0].r-Gh.vertices[j1].r;
+			double l12=Norme2(x12);        
+			hmin = Min(hmin,l12);
+
+			Gh.vertices[j1].color++;
+			Gh.vertices[j0].color++;
+
+			len[j0]+= l12;
+			len[j1] += l12;
+			hmin = Min(hmin,l12);
+			Gh.edges[i].ReferenceNumber  = edges[i].ReferenceNumber;
+
+			k = edge4->SortAndAdd(i0,i1);
+			if (k != i){
+				delete [] len;
+				delete [] colorV;
+				_error_("problem in Edge4 construction: k != i");
+			}
+		}
+
+		//Build metric for all vertices of Gh
+		for (i=0;i<Gh.nbv;i++){
+		 if (Gh.vertices[i].color > 0) 
+		  Gh.vertices[i].m=  Metric(len[i] /(double) Gh.vertices[i].color);
+		 else 
+		  Gh.vertices[i].m=  Metric(hmin);
+		}
+		//delete len
+		delete [] len;
+
+		//Build Gh.subdomains
+		for (i=0;i<nbsubdomains;i++){
+			it = GetId(subdomains[i].head);
+			j = subdomains[i].direction;
+			long i0 = GetId(triangles[it][VerticesOfTriangularEdge[j][0]]);
+			long i1 = GetId(triangles[it][VerticesOfTriangularEdge[j][1]]);
+			k = edge4->SortAndFind(i0,i1);
+			if(k<0){
+				delete [] colorV;
+				_error_("This should not happen");
+			}
+			subdomains[i].direction = (vertices + i0 == edges[k].v[0]) ? 1 : -1;
+			subdomains[i].edge = edges+k;
+			Gh.subdomains[i].edge = Gh.edges + k;
+			Gh.subdomains[i].direction  =  subdomains[i].direction;
+			Gh.subdomains[i].ReferenceNumber =  subdomains[i].ReferenceNumber;
+		}
+
+		delete edge4;
+		delete [] colorV;
+
+		//unset adj
+		for (i=0;i<nbt;i++){
+			for (j=0;j<3;j++){
+				triangles[i].SetAdj2(j,0,triangles[i].GetAllflag(j));
+			}
+		}
+
+	}
+	/*}}}*/
+	void Mesh::BuildMetric0(BamgOpts* bamgopts){/*{{{*/
+
+		/*Options*/
+		double* s=NULL;
+		long    nbsol;
+		int     verbose=0;
+
+		int   i,j,k,iA,iB,iC;
+		int   iv;
+
+		/*Check pointer*/
+		_assert_(bamgopts);
+
+		/*Recover options*/
+		verbose=bamgopts->verbose;
+
+		/*Get and process fields*/
+		s=bamgopts->field;
+		nbsol=bamgopts->fieldSize[1];
+
+		/*Check size*/
+		if (bamgopts->fieldSize[0] != nbv) _error_("'field' should have " << nbv << " rows");
+
+		//initialization of some variables
+		double* ss=(double*)s;
+		double  sA,sB,sC;
+		double*  detT = new double[nbt];
+		double*  sumareas = new double[nbv];
+		double*  alpha= new double[nbt*3];
+		double*  beta = new double[nbt*3];
+		double*  dx_elem    = new double[nbt];
+		double*  dy_elem    = new double[nbt];
+		double*  dx_vertex  = new double[nbv];
+		double*  dy_vertex  = new double[nbv];
+		double*  dxdx_elem  = new double[nbt];
+		double*  dxdy_elem  = new double[nbt];
+		double*  dydy_elem  = new double[nbt];
+		double*  dxdx_vertex= new double[nbv];
+		double*  dxdy_vertex= new double[nbv];
+		double*  dydy_vertex= new double[nbv];
+
+		//display infos
+		if(verbose>1) {
+			_printf_("   Construction of Metric: number of field: " << nbsol << " (nbt=" << nbt << ", nbv=" << nbv << ")\n");
+		}
+
+		//first, build the chains that will be used for the Hessian computation, as weel as the area of each element
+		int* head_s=NULL;
+		head_s=xNew<int>(nbv);
+		int* next_p=NULL;
+		next_p=xNew<int>(3*nbt);
+		int  p=0;
+		//initialization
+		for(i=0;i<nbv;i++){
+			sumareas[i]=0;
+			head_s[i]=-1;
+		}
+		for(i=0;i<nbt;i++){
+
+			//lopp over the real triangles (no boundary elements)
+			if(triangles[i].link){ 
+
+				//get current triangle t
+				const Triangle &t=triangles[i];
+
+				// coor of 3 vertices 
+				R2 A=t[0];
+				R2 B=t[1];
+				R2 C=t[2];
+
+				//compute triangle determinant (2*Area)
+				double dett = bamg::Area2(A,B,C);
+				detT[i]=dett;
+
+				/*The nodal functions are such that for a vertex A:
+				 *    N_A(x,y)=alphaA x + beta_A y +gamma_A
+				 *    N_A(A) = 1,   N_A(B) = 0,   N_A(C) = 0
+				 * solving this system of equation (determinant = 2Area(T) != 0 if A,B and C are not inlined)
+				 * leads to:
+				 *    N_A = (xB yC - xC yB + x(yB-yC) +y(xC-xB))/(2*Area(T))
+				 * and this gives:
+				 *    alpha_A = (yB-yC)/(2*Area(T))*/
+				alpha[i*3+0]=(B.y-C.y)/dett;
+				alpha[i*3+1]=(C.y-A.y)/dett;
+				alpha[i*3+2]=(A.y-B.y)/dett;
+				beta[ i*3+0]=(C.x-B.x)/dett;
+				beta[ i*3+1]=(A.x-C.x)/dett;
+				beta[ i*3+2]=(B.x-A.x)/dett;
+
+				//compute chains
+				for(j=0;j<3;j++){
+					k=GetId(triangles[i][j]);
+					next_p[p]=head_s[k];
+					head_s[k]=p++;
+
+					//add area to sumareas
+					sumareas[k]+=dett;
+				}
+
+			}
+		}
+
+		/*Check err, we need to make sure it has the right size!*/
+		bool    deleteerr = false;
+		double* err       = NULL;
+		if(bamgopts->errSize[0]==1){
+			/*Let's copy this value for all vertices*/
+			err =  new double[nbv*bamgopts->errSize[1]];
+			for(int i=0;i<nbv;i++){
+				for(int j=0;j<bamgopts->errSize[1];j++){
+					err[i*bamgopts->errSize[1]+j] = bamgopts->err[j];
+				}
+			}
+			deleteerr = true;
+		}
+		else if(bamgopts->errSize[0]==this->nbv){
+			/*Nothing to do, already right size*/
+			err = bamgopts->err;
+		}
+		else{
+			_error_("number of rows in 'err' not supported: size "<<bamgopts->errSize[0]<<"x"<<bamgopts->errSize[1]<<" (nbv is "<<this->nbv<<")");
+		}
+
+		/*for all Solutions*/
+		for (int nusol=0;nusol<nbsol;nusol++) {
+			double smin=ss[nusol],smax=ss[nusol];
+
+			//get min(s), max(s) and initialize Hessian (dxdx,dxdy,dydy)
+			for ( iv=0,k=0; iv<nbv; iv++){
+				smin=Min(smin,ss[iv*nbsol+nusol]);
+				smax=Max(smax,ss[iv*nbsol+nusol]);
+			}
+			double sdelta=smax-smin;
+			double absmax=Max(Abs(smin),Abs(smax));
+
+			//display info
+			if(verbose>2) _printf_("      Solution " << nusol << ", Min = " << smin << ", Max = " << smax << ", Delta = " << sdelta << "\n");
+
+			//skip constant field
+			if (sdelta < 1.0e-10*Max(absmax,1e-20)){
+				_printf_("      Solution " << nusol << " is constant, skipping...\n");
+				continue;
+			}
+
+			//initialize the hessian and gradient matrices
+			for ( iv=0,k=0; iv<nbv; iv++) dxdx_vertex[iv]=dxdy_vertex[iv]=dydy_vertex[iv]=dx_vertex[iv]=dy_vertex[iv]=0;
+
+			//1: Compute gradient for each element (exact)
+			for (i=0;i<nbt;i++){
+				if(triangles[i].link){
+					// number of the 3 vertices
+					iA = GetId(triangles[i][0]);
+					iB = GetId(triangles[i][1]);
+					iC = GetId(triangles[i][2]);
+
+					// value of the P1 fonction on 3 vertices 
+					sA = ss[iA*nbsol+nusol];
+					sB = ss[iB*nbsol+nusol];
+					sC = ss[iC*nbsol+nusol];
+
+					//gradient = (sum alpha_i s_i, sum_i beta_i s_i)
+					dx_elem[i]=sA*alpha[3*i+0]+sB*alpha[3*i+1]+sC*alpha[3*i+2];
+					dy_elem[i]=sA*beta[ 3*i+0]+sB*beta[ 3*i+1]+sC*beta[ 3*i+2];
+				}
+			}
+
+			//2: then compute a gradient for each vertex using a P2 projection
+			for(i=0;i<nbv;i++){
+				for(p=head_s[i];p!=-1;p=next_p[p]){
+					//Get triangle number
+					k=(long)(p/3);
+					dx_vertex[i]+=dx_elem[k]*detT[k]/sumareas[i];
+					dy_vertex[i]+=dy_elem[k]*detT[k]/sumareas[i];
+				}
+			}
+
+			//3: compute Hessian matrix on each element
+			for (i=0;i<nbt;i++){
+				if(triangles[i].link){
+					// number of the 3 vertices
+					iA = GetId(triangles[i][0]);
+					iB = GetId(triangles[i][1]);
+					iC = GetId(triangles[i][2]);
+
+					//Hessian
+					dxdx_elem[i]=dx_vertex[iA]*alpha[3*i+0]+dx_vertex[iB]*alpha[3*i+1]+dx_vertex[iC]*alpha[3*i+2];
+					dxdy_elem[i]=dy_vertex[iA]*alpha[3*i+0]+dy_vertex[iB]*alpha[3*i+1]+dy_vertex[iC]*alpha[3*i+2];
+					dydy_elem[i]=dy_vertex[iA]*beta[3*i+0]+dy_vertex[iB]*beta[3*i+1]+dy_vertex[iC]*beta[3*i+2];
+				}
+			}
+
+			//4: finaly compute Hessian on each vertex using the second P2 projection
+			for(i=0;i<nbv;i++){
+				for(p=head_s[i];p!=-1;p=next_p[p]){
+					//Get triangle number
+					k=(long)(p/3);
+					dxdx_vertex[i]+=dxdx_elem[k]*detT[k]/sumareas[i];
+					dxdy_vertex[i]+=dxdy_elem[k]*detT[k]/sumareas[i];
+					dydy_vertex[i]+=dydy_elem[k]*detT[k]/sumareas[i];
+				}
+			}
+
+			/*Compute Metric from Hessian*/
+			for(iv=0;iv<nbv;iv++){
+				vertices[iv].MetricFromHessian(dxdx_vertex[iv],dxdy_vertex[iv],dydy_vertex[iv],smin,smax,ss[iv*nbsol+nusol],err[iv*nbsol+nusol],bamgopts);
+			}
+
+		}//for all solutions
+
+		//clean up
+		xDelete<int>(head_s);
+		xDelete<int>(next_p);
+		delete [] detT;
+		delete [] alpha;
+		delete [] beta;
+		delete [] sumareas;
+		delete [] dx_elem;
+		delete [] dy_elem;
+		delete [] dx_vertex;
+		delete [] dy_vertex;
+		delete [] dxdx_elem;
+		delete [] dxdy_elem;
+		delete [] dydy_elem;
+		delete [] dxdx_vertex;
+		delete [] dxdy_vertex;
+		delete [] dydy_vertex;
+		if(deleteerr) delete [] err;
+	}
+	/*}}}*/
+	void Mesh::BuildMetric1(BamgOpts* bamgopts){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/IntersectConsMetric)*/
+
+		/*Options*/
+		double* s=NULL;
+		long nbsol;
+		int NbJacobi;
+		int verbose;
+
+		/*Check pointer*/
+		_assert_(bamgopts);
+
+		/*Recover options*/
+		verbose=bamgopts->verbose;
+		NbJacobi=bamgopts->nbjacobi;
+
+		/*Get and process fields*/
+		s=bamgopts->field;
+		nbsol=bamgopts->fieldSize[1];
+
+		/*Check size*/
+		if (bamgopts->fieldSize[0] != nbv) _error_("'field' should have " << nbv << " rows");
+
+		//initialization of some variables
+		long    i,k,iA,iB,iC,iv;
+		R2      O(0,0);
+		double* ss=(double*)s;
+		double  sA,sB,sC;
+		double*  detT = new double[nbt];
+		double*  Mmass= new double[nbv];
+		double*  Mmassxx= new double[nbv];
+		double*  dxdx= new double[nbv];
+		double*  dxdy= new double[nbv];
+		double*  dydy= new double[nbv];
+		double*  workT= new double[nbt];
+		double*  workV= new double[nbv];
+		int*    OnBoundary = new int[nbv];
+
+		//display infos
+		if(verbose>1) {
+			_printf_("   Construction of Metric: number of field: " << nbsol << " (nbt=" << nbt << ", nbv=" << nbv << ")\n");
+		}
+
+		//initialize Mmass, OnBoundary and Massxx by zero
+		for (iv=0;iv<nbv;iv++){
+			Mmass[iv]=0;
+			OnBoundary[iv]=0;
+			Mmassxx[iv]=0;
+		}
+
+		//Build detT Mmas Mmassxx workT and OnBoundary
+		for (i=0;i<nbt;i++){ 
+
+			//lopp over the real triangles (no boundary elements)
+			if(triangles[i].link){ 
+
+				//get current triangle t
+				const Triangle &t=triangles[i];
+
+				// coor of 3 vertices 
+				R2 A=t[0];
+				R2 B=t[1];
+				R2 C=t[2];
+
+				// number of the 3 vertices
+				iA = GetId(t[0]);
+				iB = GetId(t[1]);
+				iC = GetId(t[2]);
+
+				//compute triangle determinant (2*Area)
+				double dett = bamg::Area2(A,B,C);
+				detT[i]=dett;
+				dett /= 6;
+
+				// construction of OnBoundary (flag=1 if on boundary, else 0)
+				int nbb=0;
+				for(int j=0;j<3;j++){
+					//get adjacent triangle
+					Triangle *ta=t.Adj(j);
+					//if there is no adjacent triangle, the edge of the triangle t is on boundary
+					if ( !ta || !ta->link){
+						//mark the two vertices of the edge as OnBoundary
+						OnBoundary[GetId(t[VerticesOfTriangularEdge[j][0]])]=1;
+						OnBoundary[GetId(t[VerticesOfTriangularEdge[j][1]])]=1;
+						nbb++;
+					}
+				}
+
+				//number of vertices on boundary for current triangle t
+				workT[i] = nbb;
+
+				//Build Mmass Mmass[i] = Mmass[i] + Area/3
+				Mmass[iA] += dett;
+				Mmass[iB] += dett;
+				Mmass[iC] += dett;
+
+				//Build Massxx = Mmass
+				Mmassxx[iA] += dett;
+				Mmassxx[iB] += dett;
+				Mmassxx[iC] += dett;
+			}
+
+			//else: the triangle is a boundary triangle -> workT=-1
+			else workT[i]=-1;
+		}
+
+		/*Check err, we need to make sure it has the right size!*/
+		bool    deleteerr = false;
+		double* err       = NULL;
+		if(bamgopts->errSize[0]==1){
+			/*Let's copy this value for all vertices*/
+			err =  new double[nbv*bamgopts->errSize[1]];
+			for(int i=0;i<nbv;i++){
+				for(int j=0;j<bamgopts->errSize[1];j++){
+					err[i*bamgopts->errSize[1]+j] = bamgopts->err[j];
+				}
+			}
+			deleteerr = true;
+		}
+		else if(bamgopts->errSize[0]==this->nbv){
+			/*Nothing to do, already right size*/
+			err = bamgopts->err;
+		}
+		else{
+			_error_("number of rows in 'err' not supported: size "<<bamgopts->errSize[0]<<"x"<<bamgopts->errSize[1]<<" (nbv is "<<this->nbv<<")");
+		}
+
+		//for all Solution  
+		for (int nusol=0;nusol<nbsol;nusol++) {
+
+			double smin=ss[nusol],smax=ss[nusol];
+			double h1=1.e30,h2=1e-30,rx=0;
+			double hn1=1.e30,hn2=1e-30,rnx =1.e-30;  
+
+			//get min(s), max(s) and initialize Hessian (dxdx,dxdy,dydy)
+			for ( iv=0,k=0; iv<nbv; iv++ ){
+				dxdx[iv]=dxdy[iv]=dydy[iv]=0;
+				smin=Min(smin,ss[iv*nbsol+nusol]);
+				smax=Max(smax,ss[iv*nbsol+nusol]);
+			}
+			double sdelta=smax-smin;
+			double absmax=Max(Abs(smin),Abs(smax));
+
+			//display info
+			if(verbose>2) _printf_("      Solution " << nusol << ", Min = " << smin << ", Max = " << smax << ", Delta = " << sdelta << ", number of fields = " << nbsol << "\n");
+
+			//skip constant field
+			if (sdelta < 1.0e-10*Max(absmax,1e-20) ){
+				if (verbose>2) _printf_("      Solution " << nusol << " is constant, skipping...\n");
+				continue;
+			}
+
+			//pointer toward ss that is also a pointer toward s (solutions)
+			double* sf=ss; 
+
+				//initialize the hessian matrix
+				for ( iv=0,k=0; iv<nbv; iv++) dxdx[iv]=dxdy[iv]=dydy[iv]=0;
+
+				//loop over the triangles
+				for (i=0;i<nbt;i++){
+
+					//for real all triangles 
+					if(triangles[i].link){
+
+						// coor of 3 vertices 
+						R2 A=triangles[i][0];
+						R2 B=triangles[i][1];
+						R2 C=triangles[i][2];
+
+						//warning: the normal is internal and the size is the length of the edge
+						R2 nAB = Orthogonal(B-A);
+						R2 nBC = Orthogonal(C-B);
+						R2 nCA = Orthogonal(A-C);
+						//note that :  nAB + nBC + nCA == 0 
+
+						// number of the 3 vertices
+						iA = GetId(triangles[i][0]);
+						iB = GetId(triangles[i][1]);
+						iC = GetId(triangles[i][2]);
+
+						// for the test of  boundary edge
+						// the 3 adj triangles 
+						Triangle *tBC = triangles[i].TriangleAdj(OppositeEdge[0]);
+						Triangle *tCA = triangles[i].TriangleAdj(OppositeEdge[1]);
+						Triangle *tAB = triangles[i].TriangleAdj(OppositeEdge[2]);
+
+						// value of the P1 fonction on 3 vertices 
+						sA = ss[iA*nbsol+nusol];
+						sB = ss[iB*nbsol+nusol];
+						sC = ss[iC*nbsol+nusol];
+
+						/*The nodal functions are such that for a vertex A:
+						  N_A(x,y)=alphaA x + beta_A y +gamma_A
+						  N_A(A) = 1,   N_A(B) = 0,   N_A(C) = 0
+						  solving this system of equation (determinant = 2Area(T) != 0 if A,B and C are not inlined)
+						  leads to:
+						  N_A = (xB yC - xC yB + x(yB-yC) +y(xC-xB))/(2*Area(T))
+						  and this gives:
+						  alpha_A = (yB-yC)/(2*Area(T))
+						  beta_A = (xC-xB)/(2*Area(T))
+						  and therefore:
+						  grad N_A = nA / detT
+						  for an interpolation of a solution s:
+						  grad(s) = s * sum_{i=A,B,C} grad(N_i) */
+
+						R2 Grads=(nAB*sC+nBC*sA+nCA*sB)/detT[i];
+
+						//Use Green to compute Hessian Matrix
+
+						// if edge on boundary no contribution  => normal = 0
+						if ( !tBC || !tBC->link ) nBC=O;
+						if ( !tCA || !tCA->link ) nCA=O;
+						if ( !tAB || !tAB->link ) nAB=O;
+
+						// remark we forgot a 1/2 because
+						//       int_{edge} w_i = 1/2 if i is in edge 
+						//                         0  if not
+						// if we don't take the  boundary 
+						dxdx[iA] += ( nCA.x + nAB.x ) *Grads.x;
+						dxdx[iB] += ( nAB.x + nBC.x ) *Grads.x;
+						dxdx[iC] += ( nBC.x + nCA.x ) *Grads.x;
+
+						//warning optimization (1) the division by 2 is done on the metric construction
+						dxdy[iA] += (( nCA.y + nAB.y ) *Grads.x + ( nCA.x + nAB.x ) *Grads.y) ;
+						dxdy[iB] += (( nAB.y + nBC.y ) *Grads.x + ( nAB.x + nBC.x ) *Grads.y) ;
+						dxdy[iC] += (( nBC.y + nCA.y ) *Grads.x + ( nBC.x + nCA.x ) *Grads.y) ; 
+
+						dydy[iA] += ( nCA.y + nAB.y ) *Grads.y;
+						dydy[iB] += ( nAB.y + nBC.y ) *Grads.y;
+						dydy[iC] += ( nBC.y + nCA.y ) *Grads.y;
+
+					} // for real all triangles 
+				}
+
+				long kk=0;
+				for ( iv=0,k=0 ; iv<nbv; iv++){
+					if(Mmassxx[iv]>0){
+						dxdx[iv] /= 2*Mmassxx[iv];
+						// warning optimization (1) on term dxdy[iv]*ci/2 
+						dxdy[iv] /= 4*Mmassxx[iv];
+						dydy[iv] /= 2*Mmassxx[iv];
+						// Compute the matrix with abs(eigen value)
+						Metric M(dxdx[iv], dxdy[iv], dydy[iv]);
+						EigenMetric Vp(M);
+						Vp.Abs();
+						M = Vp;
+						dxdx[iv] = M.a11;
+						dxdy[iv] = M.a21;
+						dydy[iv] = M.a22;
+					}
+					else kk++;
+				}
+
+				// correction of second derivative
+				// by a laplacien
+				double* dd;
+				for (int xy = 0;xy<3;xy++) {
+					if      (xy==0) dd=dxdx;
+					else if (xy==1) dd=dxdy;
+					else if (xy==2) dd=dydy;
+					else{
+						delete [] detT;
+						delete [] Mmass;
+						delete [] workT;
+						delete [] workV;
+						delete [] Mmassxx;
+						delete [] OnBoundary;
+						_error_("not supported yet");
+					}
+					// do leat 2 iteration for boundary problem
+					for (int ijacobi=0;ijacobi<Max(NbJacobi,2);ijacobi++){
+						for (i=0;i<nbt;i++) 
+						 if(triangles[i].link){// the real triangles 
+							 // number of the 3 vertices
+							 iA = GetId(triangles[i][0]);
+							 iB = GetId(triangles[i][1]);
+							 iC = GetId(triangles[i][2]);
+							 double cc=3;
+							 if(ijacobi==0)
+							  cc = Max((double) ((Mmassxx[iA]>0)+(Mmassxx[iB]>0)+(Mmassxx[iC]>0)),1.);
+							 workT[i] = (dd[iA]+dd[iB]+dd[iC])/cc;
+						 }
+						for (iv=0;iv<nbv;iv++) workV[iv]=0;
+
+						for (i=0;i<nbt;i++){ 
+							if(triangles[i].link){ // the real triangles 
+								// number of the 3 vertices
+								iA = GetId(triangles[i][0]);
+								iB = GetId(triangles[i][1]);
+								iC = GetId(triangles[i][2]);
+								double cc =  workT[i]*detT[i];
+								workV[iA] += cc;
+								workV[iB] += cc;
+								workV[iC] += cc;
+							}
+						}
+
+						for (iv=0;iv<nbv;iv++){
+							if( ijacobi<NbJacobi || OnBoundary[iv]){
+								dd[iv] = workV[iv]/(Mmass[iv]*6);
+							}
+						}
+					}
+				}
+
+				/*Compute Metric from Hessian*/
+				for ( iv=0;iv<nbv;iv++){
+					vertices[iv].MetricFromHessian(dxdx[iv],dxdy[iv],dydy[iv],smin,smax,ss[iv*nbsol+nusol],err[iv*nbsol+nusol],bamgopts);
+				}
+
+		}// end for all solution 
+
+		delete [] detT;
+		delete [] Mmass;
+		delete [] dxdx;
+		delete [] dxdy;
+		delete [] dydy;
+		delete [] workT;
+		delete [] workV;
+		delete [] Mmassxx;
+		delete [] OnBoundary;
+		if(deleteerr) delete [] err;
+
+	}
+	/*}}}*/
+	void Mesh::CrackMesh(BamgOpts* bamgopts) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/CrackMesh)*/
+
+		/*Intermediary*/
+		int i,j,k,num,count;
+		int i1,i2;
+		int j1,j2;
+		int verbose=0;
+
+		/*Options*/
+		if(bamgopts) verbose=bamgopts->verbose;
+
+		//  computed the number of cracked edge
+		for (k=i=0;i<nbe;i++){
+			if(edges[i].GeomEdgeHook->Cracked()) k++;
+		}
+
+		//Return if no edge is cracked
+		if(k==0) return;
+		if (verbose>4) _printf_("      number of Cracked Edges = " << k << "\n");
+
+		//Initialize Cracked edge
+		NbCrackedEdges=k;
+		CrackedEdges=new CrackedEdge[k];
+
+		//Compute number of Cracked Vertices
+		k=0;
+		NbCrackedVertices=0;
+
+		int* splitvertex=new int[nbv];
+		for (i=0;i<nbv;i++) splitvertex[i]=0;
+
+		for (i=0;i<nbe;i++){
+			if(edges[i].GeomEdgeHook->Cracked()){
+
+				//Fill edges fields of CrackedEdges
+				CrackedEdges[k  ].E =edges[i].GeomEdgeHook;
+				CrackedEdges[k++].e1=&edges[i];
+
+				//Get number of the two vertices on the edge
+				i1=GetId(edges[i][0]);
+				i2=GetId(edges[i][1]);
+				_assert_(i1>=0 && i1<nbv && i2>=0 && i2<nbv);
+				splitvertex[i1]++;
+				splitvertex[i2]++;
+
+				//If the vertex has already been flagged once, it is a cracked vertex (tip otherwise)
+				if (splitvertex[i1]==2) NbCrackedVertices++;
+				if (splitvertex[i2]==2) NbCrackedVertices++;
+
+				//The vertex cannot be marked more than twice
+				if (splitvertex[i1]==3 || splitvertex[i2]==3){
+					delete [] splitvertex;
+					_error_("Crossing rifts not supported yet");
+				}
+			}
+		}
+		_assert_(k==NbCrackedEdges);
+
+		//Add new vertices
+		if (verbose>4) _printf_("      number of Cracked Vertices = " << NbCrackedVertices << "\n");
+		if (NbCrackedVertices){
+			CrackedVertices=xNew<long>(2*NbCrackedVertices);
+			num=0;
+			for (i=0;i<nbv;i++){
+				if (splitvertex[i]==2){
+					CrackedVertices[num*2+0]=i;      //index of first vertex
+					CrackedVertices[num*2+1]=nbv+num;//index of new vertex
+					num++;
+				}
+			}
+			_assert_(num==NbCrackedVertices);
+		}
+		delete [] splitvertex;
+
+		//Now, find the triangles that hold a cracked edge
+		CreateSingleVertexToTriangleConnectivity();
+
+		long* Edgeflags=new long[NbCrackedEdges];
+		for(i=0;i<NbCrackedEdges;i++) Edgeflags[i]=0;
+
+		for(i=0;i<NbCrackedEdges;i++){
+			//Get the numbers of the 2 vertices of the crren cracked edge
+			i1=GetId((*CrackedEdges[i].e1)[0]);
+			i2=GetId((*CrackedEdges[i].e1)[1]);
+
+			//find a triangle holding the vertex i1 (first vertex of the ith cracked edge)
+			Triangle* tbegin=vertices[i1].t;
+			k=vertices[i1].IndexInTriangle;//local number of i in triangle tbegin
+			_assert_(GetId((*tbegin)[k])==GetId(vertices[i1]));
+
+			//Now, we are going to go through the adjacent triangle that hold i1 till
+			//we find one that has the cracked edge
+			AdjacentTriangle ta(tbegin,EdgesVertexTriangle[k][0]);
+			count=0;
+			do {
+				for(j=0;j<3;j++){
+					//Find the position of i1 in the triangle index
+					if (GetId((*ta.t)[j])==i1){
+						j1=j;
+						break;
+					}
+				}
+				for(j=0;j<3;j++){
+					//Check wether i2 is also in the triangle index
+					if (GetId((*ta.t)[j])==i2){
+						j2=j;
+						//Invert j1 and j2 if necessary
+						if ((j1+1)%3==j2){
+							int j3=j1;
+							j1=j2;
+							j2=j3;
+						}
+						if (Edgeflags[i]==0){
+							//first element
+							CrackedEdges[i].a=ta.t;
+							CrackedEdges[i].length=Norme2((*ta.t)[j1].r-(*ta.t)[j2].r);
+							CrackedEdges[i].normal=Orthogonal((*ta.t)[j1].r-(*ta.t)[j2].r);
+						}
+						else{
+							//Second element -> to renumber
+							CrackedEdges[i].b=ta.t;
+							CrackedEdges[i].length=Norme2((*ta.t)[j1].r-(*ta.t)[j2].r);
+							CrackedEdges[i].normal=Orthogonal((*ta.t)[j1].r-(*ta.t)[j2].r);
+						}
+						Edgeflags[i]++;
+						break;
+					}
+				}
+				//_printf_(element_renu[GetId(ta.t)] << " -> " << GetId((*ta.t)[0])+1 << " " << GetId((*ta.t)[1])+1 << " " << GetId((*ta.t)[2])+1 << ", edge [" << i1 << "->" << j1 << " " << i2 << "->" << j2 << "]\n");
+				ta = Next(ta).Adj(); 
+				if (count++>50) _error_("Maximum number of iteration exceeded");
+			}while ((tbegin != ta)); 
+		}
+
+		//Check EdgeFlag
+		for(i=0;i<NbCrackedEdges;i++){
+			if (Edgeflags[i]!=2){
+				_error_("A problem occured: at least one crack edge (number " << i+1 << ") does not belong to 2 elements");
+			}
+		}
+		delete [] Edgeflags;
+
+		//Reset BamgVertex to On
+		SetVertexFieldOn();
+
+	}
+	/*}}}*/
+	void Mesh::Echo(void) {/*{{{*/
+
+		int i;
+
+		_printf_("Mesh Echo:\n");
+		_printf_("   nbv = " << nbv << "\n");
+		_printf_("   nbt = " << nbt << "\n");
+		_printf_("   nbe = " << nbe << "\n");
+		_printf_("   index:\n");
+		for (i=0;i<nbt;i++){
+			_printf_("   " << setw(4) << i+1 << ": [" 
+						<< setw(4) << (((BamgVertex*)triangles[i](0))?GetId(triangles[i][0])+1:0) << " " 
+						<< setw(4) << (((BamgVertex*)triangles[i](1))?GetId(triangles[i][1])+1:0) << " " 
+						<< setw(4) << (((BamgVertex*)triangles[i](2))?GetId(triangles[i][2])+1:0) << "]\n");
+		}
+		_printf_("   coordinates:\n");
+		for (i=0;i<nbv;i++){
+			_printf_("   " << setw(4) << i+1 << ": [" << vertices[i].r.x << " " << vertices[i].r.y << "] and [" << vertices[i].i.x << " " << vertices[i].i.y << "]\n");
+		}
+
+	}
+	/*}}}*/
+	void Mesh::ForceBoundary(BamgOpts* bamgopts) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/ForceBoundary)*/
+
+		int verbose=0;
+		int k=0;
+		int nbfe=0,nbswp=0,Nbswap=0;
+
+		/*Get options*/
+		if(bamgopts) verbose=bamgopts->verbose;
+
+		//display
+		if (verbose > 2) _printf_("   ForceBoundary  nb of edge: " << nbe << "\n");
+
+		//check that there is no triangle with 0 determinant
+		for (int t = 0; t < nbt; t++){
+			if (!triangles[t].det) k++;
+		}
+		if (k!=0) {
+			_error_("there is " << k << " triangles of mes = 0");
+		}
+
+		//Force Edges
+		AdjacentTriangle ta(0,0);
+		for (int i = 0; i < nbe; i++){
+
+			//Force edge i
+			nbswp =  ForceEdge(edges[i][0],edges[i][1],ta);
+			if (nbswp<0) k++;
+			else Nbswap += nbswp;
+
+			if (nbswp) nbfe++;
+			if ( nbswp < 0 && k < 5){
+				_error_("Missing Edge " << i << ", v0=" << GetId(edges[i][0]) << ",v1=" << GetId(edges[i][1]));
+			}
+		}
+
+		if (k!=0) {
+			_error_("There are " << k << " lost edges, the boundary might be crossing");
+		}
+		for (int j=0;j<nbv;j++){
+			Nbswap +=  vertices[j].Optim(1,0);
+		}
+		if (verbose > 3) _printf_("      number of inforced edge = " << nbfe << ", number of swap= " << Nbswap << "\n"); 
+	}
+	/*}}}*/
+	void Mesh::FindSubDomain(BamgOpts* bamgopts,int OutSide) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/FindSubDomain)*/
+
+		int verbose=0;
+
+		/*Get options*/
+		if(bamgopts) verbose=bamgopts->verbose;
+
+		if (verbose >2){
+			if (OutSide) _printf_("   Find all external sub-domain\n"); 
+			else _printf_("   Find all internal sub-domain\n");
+		}
+		short * HeapArete = new short[nbt];
+		Triangle  **  HeapTriangle = new Triangle*  [nbt];
+		Triangle *t,*t1;
+		long k,it;
+
+		/*No color by default*/
+		for(int itt=0;itt<nbt;itt++) triangles[itt].link=0;
+
+		long  NbSubDomTot =0;
+		for(it=0;it<nbt;it++)  { 
+			if( !triangles[it].link ){
+				t = triangles + it;
+				NbSubDomTot++;; // new composante connexe
+				long i = 0; // niveau de la pile 
+				t->link = t ; // sd forme d'un triangle cicular link
+
+				HeapTriangle[i] =t ; 
+				HeapArete[i] = 3;
+
+				while(i >= 0) // boucle sur la pile
+				  { while (HeapArete[i]--) // boucle sur les 3 aretes 
+					  { 
+						int na =  HeapArete[i];
+						Triangle * tc =  HeapTriangle[i]; // triangle courant
+						if( ! tc->Locked(na)) // arete non frontiere
+						  {
+							Triangle * ta = tc->TriangleAdj(na) ; // næ triangle adjacent
+							if (ta->link == 0 ) // non deja chainer => on enpile
+							  { 
+								i++;
+								ta->link = t->link ;  // on chaine les triangles
+								t->link = ta ;  // d'un meme sous domaine          
+								HeapArete[i] = 3; // pour les 3 triangles adjacents
+								HeapTriangle[i] = ta;
+							  }}
+					  } // deplie fin de boucle sur les 3 adjacences
+					i--;
+				  }          
+			}      
+		}
+
+		// supression de tous les sous domaine infini <=>  contient le sommet NULL
+		it =0;
+		nbtout = 0;
+		while (it<nbt) {
+			if (triangles[it].link) 
+			  { 
+				if (!( triangles[it](0) &&  triangles[it](1) &&  triangles[it](2) )) 
+				  {
+					// infini triangle 
+					NbSubDomTot --;
+					t=&triangles[it];
+					nbtout--;  // on fait un coup de trop. 
+					while  (t){
+						nbtout++;
+						t1=t;
+						t=t->link;
+						t1->link=0;
+					}
+				  }
+			  }   
+			it++;} // end while (it<nbt)
+			if (nbt == nbtout ||  !NbSubDomTot) {
+				delete [] HeapArete;
+				delete [] HeapTriangle;
+				_error_("The boundary is not close: all triangles are outside");
+			}
+
+			delete [] HeapArete;
+			delete [] HeapTriangle;
+
+			if (OutSide|| !Gh.subdomains || !Gh.nbsubdomains ) 
+			  { // No geom sub domain
+				long i;
+				if (subdomains) delete [] subdomains;
+				subdomains = new SubDomain[ NbSubDomTot];
+				nbsubdomains=  NbSubDomTot;
+				for ( i=0;i<nbsubdomains;i++) {
+					subdomains[i].head=NULL;
+					subdomains[i].ReferenceNumber=i+1;
+				}
+				long * mark = new long[nbt];
+				for (it=0;it<nbt;it++)
+				 mark[it]=triangles[it].link ? -1 : -2;
+
+				it =0;
+				k = 0;
+				while (it<nbt) {
+					if (mark[it] == -1) {
+						t1 = & triangles[it];
+						t = t1->link;
+						mark[it]=k;
+						subdomains[k].head = t1;
+						do {
+							mark[GetId(t)]=k;
+							t=t->link;
+						} while (t!=t1);
+						mark[it]=k++;}
+						//    else if(mark[it] == -2 ) triangles[it].Draw(999);
+						it++;} // end white (it<nbt)
+						if (k!=nbsubdomains){
+							delete [] mark;
+							_error_("k!=nbsubdomains");
+						}
+						if(OutSide){
+							//  to remove all the sub domain by parity adjacents
+							//  because in this case we have only the true boundary edge
+							//  so the boundary is manifold
+							long nbk = nbsubdomains;
+							while (nbk)
+							 for (it=0;it<nbt && nbk ;it++)
+							  for (int na=0;na<3 && nbk ;na++)
+								 {
+								  Triangle *ta = triangles[it].TriangleAdj(na);
+								  long kl = ta ? mark[GetId(ta)] : -2;
+								  long kr = mark[it];
+								  if(kr !=kl) {
+									  if (kl >=0 && subdomains[kl].ReferenceNumber <0 && kr >=0 && subdomains[kr].ReferenceNumber>=0)
+										nbk--,subdomains[kr].ReferenceNumber=subdomains[kl].ReferenceNumber-1;
+									  if (kr >=0 && subdomains[kr].ReferenceNumber <0 && kl >=0 && subdomains[kl].ReferenceNumber>=0)
+										nbk--,subdomains[kl].ReferenceNumber=subdomains[kr].ReferenceNumber-1;
+									  if(kr<0 && kl >=0 && subdomains[kl].ReferenceNumber>=0)
+										nbk--,subdomains[kl].ReferenceNumber=-1;
+									  if(kl<0 && kr >=0 && subdomains[kr].ReferenceNumber>=0)
+										nbk--,subdomains[kr].ReferenceNumber=-1;
+								  }
+								 }
+							long  j=0;
+							for ( i=0;i<nbsubdomains;i++)
+							 if((-subdomains[i].ReferenceNumber) %2) { // good 
+								 if(i != j) 
+								  Exchange(subdomains[i],subdomains[j]);
+								 j++;}
+							 else{ 
+								 t= subdomains[i].head;
+								 while (t){
+									 nbtout++;
+									 t1=t;
+									 t=t->link;
+									 t1->link=0;
+								 }//while (t)
+								}
+							if(verbose>4) _printf_("      Number of removes subdomains (OutSideMesh) = " << nbsubdomains-j << "\n");
+							nbsubdomains=j;
+						  }
+
+						delete []  mark; 
+
+			  }
+			else{ // find the head for all subdomains
+				if (Gh.nbsubdomains != nbsubdomains && subdomains)
+				 delete [] subdomains, subdomains=0;
+				if (! subdomains  ) 
+				 subdomains = new SubDomain[ Gh.nbsubdomains];
+				nbsubdomains =Gh.nbsubdomains;
+				CreateSingleVertexToTriangleConnectivity();
+				long * mark = new long[nbt];
+				Edge **GeomEdgetoEdge = MakeGeomEdgeToEdge();
+
+				for (it=0;it<nbt;it++)
+				 mark[it]=triangles[it].link ? -1 : -2;
+				long inew =0;
+				for (int i=0;i<nbsubdomains;i++) {
+					GeomEdge &eg = *Gh.subdomains[i].edge;
+					subdomains[i].ReferenceNumber = Gh.subdomains[i].ReferenceNumber;
+					// by carefull is not easy to find a edge create from a GeomEdge 
+					// see routine MakeGeomEdgeToEdge
+					Edge &e = *GeomEdgetoEdge[Gh.GetId(eg)];
+					_assert_(&e);
+					BamgVertex * v0 =  e(0),*v1 = e(1);
+					Triangle *t  = v0->t;
+					int direction = Gh.subdomains[i].direction;
+					// test if ge and e is in the same direction 
+					if (((eg[0].r-eg[1].r),(e[0].r-e[1].r))<0) direction = -direction ;
+					subdomains[i].direction = direction;
+					subdomains[i].edge = &e;
+					_assert_(t && direction);
+
+					AdjacentTriangle  ta(t,EdgesVertexTriangle[v0->IndexInTriangle][0]);// previous edges
+
+					while (1) {
+						_assert_(v0==ta.EdgeVertex(1));
+						if (ta.EdgeVertex(0) == v1) { // ok we find the edge
+							if (direction>0)  
+							 subdomains[i].head=t=Adj(ta);
+							else 
+							 subdomains[i].head=t=ta;
+							if(t<triangles || t >= triangles+nbt || t->det < 0 || t->link == 0) {
+								_error_("bad definition of SubSomain " << i);
+							}
+							long it = GetId(t);
+							if (mark[it] >=0) {
+								break;
+							}
+							if(i != inew) 
+							 Exchange(subdomains[i],subdomains[inew]);
+							inew++;
+							Triangle *tt=t;
+							long kkk=0;
+							do 
+							  {
+								kkk++;
+								if (mark[GetId(tt)]>=0){
+									_error_("mark[GetId(tt)]>=0");
+								}
+								mark[GetId(tt)]=i;
+								tt=tt->link;
+							  } while (tt!=t);
+							break;
+						}
+						ta = Previous(Adj(ta));         
+						if(t == (Triangle *) ta) {
+							_error_("bad definition of SubSomain " << i);
+						}
+					}
+				}
+
+				if (inew < nbsubdomains) {
+					if (verbose>5) _printf_("WARNING: " << nbsubdomains-inew << " SubDomains are being removed\n");
+					nbsubdomains=inew;}
+
+					for (it=0;it<nbt;it++)
+					 if ( mark[it] ==-1 ) 
+					  nbtout++,triangles[it].link =0;
+					delete [] GeomEdgetoEdge;
+					delete [] mark;
+
+			  }
+			nbtout=0;
+			for (it=0;it<nbt;it++) 
+			 if(!triangles[it].link)  nbtout++;
+	}
+	/*}}}*/
+	long Mesh::GetId(const Triangle & t) const  { /*{{{*/
+		return &t - triangles;
+	}
+	/*}}}*/
+	long Mesh::GetId(const Triangle * t) const  { /*{{{*/
+		return t - triangles;
+	}
+	/*}}}*/
+	long Mesh::GetId(const BamgVertex & t) const  { /*{{{*/
+		return &t - vertices;
+	}
+	/*}}}*/
+	long Mesh::GetId(const BamgVertex * t) const  { /*{{{*/
+		return t - vertices;
+	}
+	/*}}}*/
+	long Mesh::GetId(const Edge & t) const  { /*{{{*/
+		return &t - edges;
+	}
+	/*}}}*/
+	long Mesh::GetId(const Edge * t) const  { /*{{{*/
+		return t - edges;
+	}
+	/*}}}*/
+	void Mesh::Init(long maxnbv_in) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/PreInit)*/
+
+		/*Initialize fields*/
+		this->NbRef                  = 0;
+		this->quadtree               = NULL;
+		this->nbv                    = 0;
+		this->nbt                    = 0;
+		this->nbe                    = 0;
+		this->edges                  = NULL;
+		this->nbsubdomains           = 0;
+		this->subdomains             = NULL;
+		this->maxnbv                 = maxnbv_in;
+		this->maxnbt                 = 2 *maxnbv_in-2;
+		this->NbVertexOnBThVertex    = 0;
+		this->VertexOnBThVertex      = NULL;
+		this->NbVertexOnBThEdge      = 0;
+		this->VertexOnBThEdge        = NULL;
+		this->NbCrackedVertices      = 0;
+		this->CrackedVertices        = NULL;
+		this->NbCrackedEdges         = 0;
+		this->CrackedEdges           = NULL;
+		this->NbVerticesOnGeomVertex = 0;
+		this->VerticesOnGeomVertex   = NULL;
+		this->NbVerticesOnGeomEdge   = 0;
+		this->VerticesOnGeomEdge     = NULL;
+
+		/*Initialize random seed*/
+		this->randomseed = 1;
+
+		/*Allocate if maxnbv_in>0*/
+		if(maxnbv_in){
+			this->vertices=new BamgVertex[this->maxnbv];
+			this->orderedvertices=new BamgVertex* [this->maxnbv];
+			this->triangles=new Triangle[this->maxnbt];
+         _assert_(this->vertices);
+         _assert_(this->orderedvertices);
+			_assert_(this->triangles);
+		}
+		else{
+			this->vertices        = NULL;
+			this->orderedvertices = NULL;
+			this->triangles       = NULL;
+			this->maxnbt          = 0;
+		} 
+	}
+	/*}}}*/
+	void Mesh::Insert(BamgOpts* bamgopts){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Insert)*/
+
+		/*Insert points in the existing Geometry*/
+
+		//Intermediary
+		long i;
+		int verbose=0;
+
+		/*Get options*/
+		if(bamgopts) verbose=bamgopts->verbose;
+
+		//Display info
+		if (verbose>2) _printf_("   Insert initial " << nbv << " vertices\n");
+
+		//Compute integer coordinates for the existing vertices
+		SetIntCoor();
+
+		/*Now we want to build a list (orderedvertices) of the vertices in a random
+		 * order. To do so, we use the following method:
+		 *
+		 * From an initial k0 in [0 nbv[ random (vertex number)
+		 * the next k (vertex number) is computed using a big
+		 * prime number (PN>>nbv) following:
+		 *
+		 * k_{i+1} = k_i + PN  [nbv]
+		 *
+		 * let's show that:
+		 *
+		 *   for all j in [0 nbv[, there is a unique i in [0 nbv[ such that k_i=j
+		 *
+		 * Let's assume that there are 2 distinct j1 and j2 such that
+		 * k_j1 = k_j2
+		 *
+		 * This means that
+		 *  
+		 *  k0+j1*PN = k0+j2*PN [nbv]
+		 *  (j1-j2)*PN =0       [nbv]
+		 * since PN is a prime number larger than nbv, and nbv!=1
+		 *  j1-j2=0             [nbv]
+		 * BUT
+		 *  j1 and j2 are in [0 nbv[ which is impossible.
+		 *
+		 *  We hence have built a random list of nbv elements of
+		 *  [0 nbv[ all distincts*/
+
+		//Get Prime number
+		const long PrimeNumber= BigPrimeNumber(nbv);
+		long k0=this->RandomNumber(nbv);
+		if (verbose>4) _printf_("      Prime Number = "<<PrimeNumber<<"\n");
+		if (verbose>4) _printf_("      k0 = "<<k0<<"\n");
+
+		//Build orderedvertices
+		for (i=0; i<nbv; i++){
+			orderedvertices[i]=&vertices[k0=(k0+PrimeNumber)%nbv];
+		}
+
+		/*Modify orderedvertices such that the first 3 vertices form a triangle*/
+
+		//get first vertex i such that [0,1,i] are not aligned
+		for (i=2; det(orderedvertices[0]->i,orderedvertices[1]->i,orderedvertices[i]->i)==0;){
+			//if i is higher than nbv, it means that all the determinants are 0,
+			//all vertices are aligned!
+			if  (++i>=nbv) _error_("all the vertices are aligned");
+		}
+		if (verbose>4) _printf_("      i = "<<i<<"\n");
+		// exchange i et 2 in "orderedvertices" so that
+		// the first 3 vertices are not aligned (real triangle)
+		Exchange(orderedvertices[2], orderedvertices[i]);
+
+		/*Take the first edge formed by the first two vertices and build
+		 * the initial simple mesh from this edge and 2 boundary triangles*/
+
+		BamgVertex *v0=orderedvertices[0], *v1=orderedvertices[1];
+
+		nbt = 2;
+		triangles[0](0) = NULL;//infinite vertex
+		triangles[0](1) = v0;
+		triangles[0](2) = v1;
+		triangles[1](0) = NULL;//infinite vertex
+		triangles[1](2) = v0;
+		triangles[1](1) = v1;
+
+		//Build adjacence
+		const int e0 = OppositeEdge[0];
+		const int e1 = NextEdge[e0];
+		const int e2 = PreviousEdge[e0];
+		triangles[0].SetAdj2(e0, &triangles[1] ,e0);
+		triangles[0].SetAdj2(e1, &triangles[1] ,e2);
+		triangles[0].SetAdj2(e2, &triangles[1] ,e1);
+
+		triangles[0].det = -1;  //boundary triangle: det = -1
+		triangles[1].det = -1;  //boundary triangle: det = -1
+
+		triangles[0].SetSingleVertexToTriangleConnectivity();
+		triangles[1].SetSingleVertexToTriangleConnectivity();
+
+		triangles[0].link=&triangles[1];
+		triangles[1].link=&triangles[0];
+
+		//build quadtree
+		if (!quadtree)  quadtree = new BamgQuadtree(this,0);
+		quadtree->Add(*v0);
+		quadtree->Add(*v1);
+
+		/*Now, add the vertices One by One*/
+		long NbSwap=0;
+		if (verbose>3) _printf_("   Begining of insertion process...\n");
+		if (verbose>4) _printf_("      nbv = "<<nbv<<"\n");
+
+		for (long icount=2; icount<nbv; icount++) {
+
+			//Get new vertex
+			BamgVertex *newvertex=orderedvertices[icount];
+
+			//Find the triangle in which newvertex is located
+			long long det3[3];
+			Triangle* tcvi = TriangleFindFromCoord(newvertex->i,det3); //(newvertex->i = integer coordinates)
+
+			//Add newvertex to the quadtree
+			quadtree->Add(*newvertex); 
+
+			//Add newvertex to the existing mesh
+			AddVertex(*newvertex,tcvi,det3);
+
+			//Make the mesh Delaunay around newvertex by swaping the edges
+			NbSwap += newvertex->Optim(1,0);
+		}
+
+		//Display info
+		if (verbose>3) {
+			_printf_("      NbSwap of insertion: " << NbSwap << "\n");
+			_printf_("      NbSwap/nbv:          " << NbSwap/nbv << "\n");
+		}
+	}
+	/*}}}*/
+	long Mesh::InsertNewPoints(long nbvold,long & NbTSwap,BamgOpts* bamgopts) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/InsertNewPoints)*/
+
+		int verbose=0;
+		double seuil= 1.414/2.;// for two close point 
+		long i;
+		long NbSwap=0;
+		long long det3[3];
+
+		/*Get options*/
+		if(bamgopts) verbose=bamgopts->verbose;
+
+		//number of new points
+		const long nbvnew=nbv-nbvold;
+
+		//display info if required
+		if (verbose>5) _printf_("      Try to Insert " << nbvnew << " new points\n");
+
+		//return if no new points
+		if (!nbvnew) return 0; 
+
+		/*construction of a random order*/
+		const long PrimeNumber= BigPrimeNumber(nbv)  ;
+		long k3 = this->RandomNumber(nbvnew);
+		//loop over the new points
+		for (int is3=0; is3<nbvnew; is3++){
+			long j=nbvold +(k3 = (k3+PrimeNumber)%nbvnew);
+			long i=nbvold+is3; 
+			orderedvertices[i]= vertices + j;
+			orderedvertices[i]->ReferenceNumber=i;
+		}
+
+		// for all the new point
+		long iv=nbvold;
+		for(i=nbvold;i<nbv;i++){
+			BamgVertex &vi=*orderedvertices[i];
+			vi.i=R2ToI2(vi.r);
+			vi.r=I2ToR2(vi.i);
+			double hx,hy;
+			vi.m.Box(hx,hy);
+			int hi=(int) (hx*coefIcoor),hj=(int) (hy*coefIcoor);
+			if(!quadtree->TooClose(&vi,seuil,hi,hj)){
+				// a good new point 
+				BamgVertex &vj = vertices[iv];
+				long  j=vj.ReferenceNumber; 
+				if (&vj!=orderedvertices[j]){
+					_error_("&vj!= orderedvertices[j]");
+				}
+				if(i!=j){ 
+					Exchange(vi,vj);
+					Exchange(orderedvertices[j],orderedvertices[i]);
+				}
+				vj.ReferenceNumber=0; 
+				Triangle *tcvj=TriangleFindFromCoord(vj.i,det3);
+				if (tcvj && !tcvj->link){
+					_printf_("While trying to add the following point:\n");
+					vj.Echo();
+					_printf_("BAMG determined that it was inside the following triangle, which probably lies outside of the geometric domain\n");
+					tcvj->Echo();
+					_error_("problem inserting point in InsertNewPoints (tcvj=" << tcvj << " and tcvj->link=" << tcvj->link << ")");
+				}
+				quadtree->Add(vj);
+				AddVertex(vj,tcvj,det3);
+				NbSwap += vj.Optim(1);          
+				iv++;
+			}
+			else{
+				vi.PreviousNumber = 0;
+			}
+		} 
+		if (verbose>3) {
+			_printf_("         number of new points: " << iv << "\n");
+			_printf_("         number of to close (?) points: " << nbv-iv << "\n");
+			_printf_("         number of swap after: " << NbSwap << "\n");
+		}
+		nbv = iv;
+
+		for (i=nbvold;i<nbv;i++) NbSwap += vertices[i].Optim(1);  
+		if (verbose>3) _printf_("   NbSwap=" << NbSwap << "\n");
+
+		NbTSwap +=  NbSwap ;
+		return nbv-nbvold;
+	}
+	/*}}}*/
+	Edge** Mesh::MakeGeomEdgeToEdge() {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/MakeGeomEdgeToEdge)*/
+
+		if (!Gh.nbe){
+			_error_("!Gh.nbe");
+		}
+		Edge **e= new Edge* [Gh.nbe];
+
+		long i;
+		for ( i=0;i<Gh.nbe ; i++)
+		 e[i]=NULL;
+		for ( i=0;i<nbe ; i++) 
+		  { 
+			Edge * ei = edges+i;
+			GeomEdge *GeomEdgeHook = ei->GeomEdgeHook; 
+			e[Gh.GetId(GeomEdgeHook)] = ei;    
+		  }
+		for ( i=0;i<nbe ; i++) 
+		 for (int ii=0;ii<2;ii++) { 
+			 Edge * ei = edges+i;
+			 GeomEdge *GeomEdgeHook = ei->GeomEdgeHook;
+			 int j= ii;
+			 while (!(*GeomEdgeHook)[j].Required()) { 
+				 Adj(GeomEdgeHook,j); // next geom edge
+				 j=1-j;
+				 if (e[Gh.GetId(GeomEdgeHook)])  break; // optimisation
+				 e[Gh.GetId(GeomEdgeHook)] = ei; 
+			 }
+		 }
+
+		int kk=0;
+		for ( i=0;i<Gh.nbe ; i++){
+			if (!e[i]){
+				kk++;
+				if(kk<10) _printf_("BUG: the geometrical edge " << i << " is on no edge curve\n");
+			}
+		}
+		if(kk){
+			delete [] e;
+			_error_("See above");
+		}
+
+		return e;
+	}
+	/*}}}*/
+	void Mesh::MakeBamgQuadtree() {  /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/MakeBamgQuadtree)*/
+		if(!quadtree) quadtree = new BamgQuadtree(this);
+	}
+	/*}}}*/
+	double Mesh::MaximalHmax() {/*{{{*/
+		return Max(pmax.x-pmin.x,pmax.y-pmin.y);
+	}
+	/*}}}*/
+	void  Mesh::MaxSubDivision(BamgOpts* bamgopts,double maxsubdiv) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/MaxSubDivision)*/
+
+		/*Intermediaries*/
+		int verbose=0;
+
+		/*Get options*/
+		if(bamgopts) verbose=bamgopts->verbose;
+
+		const  double maxsubdiv2 = maxsubdiv*maxsubdiv;
+		if(verbose>1) _printf_("   Limit the subdivision of a edges in the new mesh by " << maxsubdiv << "\n");
+		// for all the edges 
+		// if the len of the edge is to long 
+		long it,nbchange=0;    
+		double lmax=0;
+		for (it=0;it<nbt;it++){
+			Triangle &t=triangles[it];
+			for (int j=0;j<3;j++){
+				Triangle *ptt=t.TriangleAdj(j);
+				Triangle &tt = *ptt;
+				if ( (!ptt ||  it < GetId(tt)) && ( tt.link || t.link)){
+					BamgVertex &v0 = t[VerticesOfTriangularEdge[j][0]];
+					BamgVertex &v1 = t[VerticesOfTriangularEdge[j][1]];
+					R2 AB= (R2) v1-(R2) v0;
+					Metric M = v0;
+					double l = M(AB,AB);
+					lmax = Max(lmax,l);
+					if(l> maxsubdiv2){
+						R2 AC = M.Orthogonal(AB);// the ortogonal vector of AB in M
+						double lc = M(AC,AC);
+						D2xD2 Rt(AB,AC);// Rt.x = AB , Rt.y = AC;
+						D2xD2 Rt1(Rt.inv());
+						D2xD2 D(maxsubdiv2,0,0,lc);
+						D2xD2 MM = Rt1*D*Rt1.t();
+						v0.m =  M = Metric(MM.x.x,MM.y.x,MM.y.y);
+						nbchange++;
+					}
+					M = v1;
+					l = M(AB,AB);
+					lmax = Max(lmax,l);
+					if(l> maxsubdiv2){
+						R2 AC = M.Orthogonal(AB);// the ortogonal vector of AB in M
+						double lc = M(AC,AC);
+						D2xD2 Rt(AB,AC);// Rt.x = AB , Rt.y = AC;
+						D2xD2 Rt1(Rt.inv());
+						D2xD2 D(maxsubdiv2,0,0,lc);
+						D2xD2  MM = Rt1*D*Rt1.t();
+						v1.m =  M = Metric(MM.x.x,MM.y.x,MM.y.y);
+						nbchange++;
+					}
+				}
+			}
+		}
+		if(verbose>3){
+			_printf_("      number of metric changes = " << nbchange << ", maximum number of subdivision of a edges before change = " << pow(lmax,0.5) << "\n");
+		}
+	}
+	/*}}}*/
+	Metric Mesh::MetricAt(const R2 & A){ /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/MetricAt)*/
+
+		I2 a = R2ToI2(A);
+		long long deta[3];
+		Triangle * t =TriangleFindFromCoord(a,deta);
+		if (t->det <0) { // outside
+			double ba,bb;
+			AdjacentTriangle edge= CloseBoundaryEdge(a,t,ba,bb) ;
+			return Metric(ba,*edge.EdgeVertex(0),bb,*edge.EdgeVertex(1));}
+		else { // inside
+			double   aa[3];
+			double s = deta[0]+deta[1]+deta[2];
+			aa[0]=deta[0]/s;
+			aa[1]=deta[1]/s;
+			aa[2]=deta[2]/s;
+			return Metric(aa,(*t)[0],(*t)[1],(*t)[2]);
+		}
+	}
+	/*}}}*/
+	double Mesh::MinimalHmin() {/*{{{*/
+		return 2.0/coefIcoor;
+	}
+	/*}}}*/
+	BamgVertex* Mesh::NearestVertex(int i,int j) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/NearestVertex)*/
+		return  quadtree->NearestVertex(i,j); 
+	} 
+	/*}}}*/
+	void  Mesh::NewPoints(Mesh & Bh,BamgOpts* bamgopts,int KeepVertices){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/NewPoints)*/
+
+		int i,j,k;
+		int verbose=0;
+		long NbTSwap=0;
+		long nbtold=nbt;
+		long nbvold=nbv;
+		long Headt=0;
+		long next_t;
+		long* first_np_or_next_t=new long[maxnbt];
+		Triangle* t=NULL;
+
+		/*Recover options*/
+		if(bamgopts) verbose=bamgopts->verbose;
+
+		/*First, insert old points if requested*/
+		if(KeepVertices && (&Bh != this) && (nbv+Bh.nbv< maxnbv)){
+			if (verbose>5) _printf_("         Inserting initial mesh points\n");
+			bool pointsoutside = false;
+			for(i=0;i<Bh.nbv;i++){ 
+				BamgVertex &bv=Bh[i];
+				/*Do not insert if the point is outside*/
+				long long det3[3];
+				Triangle* tcvj=TriangleFindFromCoord(bv.i,det3);
+				if(tcvj->det<0 || !tcvj->link){
+					pointsoutside = true;
+					continue;
+				}
+				IssmDouble area_1=((bv.r.x -(*tcvj)(2)->r.x)*((*tcvj)(1)->r.y-(*tcvj)(2)->r.y) 
+						- (bv.r.y -(*tcvj)(2)->r.y)*((*tcvj)(1)->r.x-(*tcvj)(2)->r.x));
+				IssmDouble area_2=(((*tcvj)(0)->r.x -(*tcvj)(2)->r.x)*(bv.r.y -(*tcvj)(2)->r.y) 
+						- ((*tcvj)(0)->r.y -(*tcvj)(2)->r.y)*(bv.r.x -(*tcvj)(2)->r.x));
+				IssmDouble area_3 =((bv.r.x -(*tcvj)(1)->r.x)*((*tcvj)(0)->r.y-(*tcvj)(1)->r.y)
+						- (bv.r.y -(*tcvj)(1)->r.y)*((*tcvj)(0)->r.x-(*tcvj)(1)->r.x));
+				if(area_1<0 || area_2<0 || area_3<0){
+					pointsoutside = true;
+					continue;
+				}
+				if(!bv.GeomEdgeHook){
+					vertices[nbv].r              = bv.r;
+					vertices[nbv].PreviousNumber = i+1;
+					vertices[nbv++].m = bv.m;
+				}
+			}
+			//if(pointsoutside) _printf_("WARNING: One or more points of the initial mesh fall outside of the geometric boundary\n");
+			Bh.CreateSingleVertexToTriangleConnectivity();     
+			InsertNewPoints(nbvold,NbTSwap,bamgopts);
+		}
+		else Bh.CreateSingleVertexToTriangleConnectivity();     
+
+		// generation of the list of next Triangle 
+		for(i=0;i<nbt;i++) first_np_or_next_t[i]=-(i+1);
+		// the next traingle of i is -first_np_or_next_t[i]
+
+		// Big loop (most time consuming)
+		int iter=0;
+		if (verbose>5) _printf_("         Big loop\n");
+		do {
+			/*Update variables*/
+			iter++;
+			nbtold=nbt;
+			nbvold=nbv;
+
+			/*We test all triangles*/
+			i=Headt;
+			next_t=-first_np_or_next_t[i];
+			for(t=&triangles[i];i<nbt;t=&triangles[i=next_t],next_t=-first_np_or_next_t[i]){
+
+				//check i
+				if (i<0 || i>=nbt ){
+					_error_("Index problem in NewPoints (i=" << i << " not in [0 " << nbt-1 << "])");
+				}
+				//change first_np_or_next_t[i]
+				first_np_or_next_t[i] = iter; 
+
+				//Loop over the edges of t
+				for(j=0;j<3;j++){
+					AdjacentTriangle tj(t,j);
+					BamgVertex &vA = *tj.EdgeVertex(0);
+					BamgVertex &vB = *tj.EdgeVertex(1);
+
+					//if t is a boundary triangle, or tj locked, continue
+					if (!t->link)     continue;
+					if (t->det <0)    continue;
+					if (t->Locked(j)) continue;
+
+					AdjacentTriangle tadjj = t->Adj(j);	  
+					Triangle* ta=tadjj;
+
+					//if the adjacent triangle is a boundary triangle, continue
+					if (ta->det<0) continue;	  
+
+					R2 A=vA;
+					R2 B=vB;
+					k=GetId(ta);
+
+					//if this edge has already been done, go to next edge of triangle
+					if(first_np_or_next_t[k]==iter) continue;
+
+					lIntTria.SplitEdge(Bh,A,B);
+					lIntTria.NewPoints(vertices,nbv,maxnbv);
+				} // end loop for each edge 
+			}// for triangle   
+
+			if (!InsertNewPoints(nbvold,NbTSwap,bamgopts)) break;
+			for (i=nbtold;i<nbt;i++) first_np_or_next_t[i]=iter;
+			Headt = nbt; // empty list 
+
+			// for all the triangle containing the vertex i
+			for (i=nbvold;i<nbv;i++){ 
+				BamgVertex*          s  = vertices + i;
+				AdjacentTriangle ta(s->t, EdgesVertexTriangle[s->IndexInTriangle][1]);
+				Triangle*        tbegin= (Triangle*) ta;
+				long kt;
+				do { 
+					kt = GetId((Triangle*) ta);
+					if (first_np_or_next_t[kt]>0){
+						first_np_or_next_t[kt]=-Headt;
+						Headt=kt;
+					}
+					if (ta.EdgeVertex(0)!=s){
+						_error_("ta.EdgeVertex(0)!=s");
+					}
+					ta = Next(Adj(ta));
+				} while ( (tbegin != (Triangle*) ta)); 
+			}
+
+		}while(nbv!=nbvold);
+		delete [] first_np_or_next_t;
+
+		long NbSwapf =0;
+		for(i=0;i<nbv;i++) NbSwapf += vertices[i].Optim(0);
+	}/*}}}*/
+	GeomEdge*   Mesh::ProjectOnCurve( Edge & BhAB, BamgVertex &  vA, BamgVertex & vB,/*{{{*/
+				double theta,BamgVertex & R,VertexOnEdge &  BR,VertexOnGeom & GR) {
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshQuad.cpp/ProjectOnCurve)*/
+
+		void *pA=0,*pB=0;
+		double tA=0,tB=0;
+		R2 A=vA,B=vB;
+		BamgVertex * pvA=&vA, * pvB=&vB;
+		if (vA.IndexInTriangle == IsVertexOnVertex){
+			pA=vA.BackgroundVertexHook;
+		}
+		else if (vA.IndexInTriangle == IsVertexOnEdge){
+			pA=vA.BackgroundEdgeHook->be;
+			tA=vA.BackgroundEdgeHook->abcisse;
+		}
+		else {
+			_error_("ProjectOnCurve On BamgVertex " << BTh.GetId(vA) << " forget call to SetVertexFieldOnBTh");
+		} 
+
+		if (vB.IndexInTriangle == IsVertexOnVertex){
+			pB=vB.BackgroundVertexHook;
+		}
+		else if(vB.IndexInTriangle == IsVertexOnEdge){
+			pB=vB.BackgroundEdgeHook->be;
+			tB=vB.BackgroundEdgeHook->abcisse;
+		}
+		else {
+			_error_("ProjectOnCurve On BamgVertex " << BTh.GetId(vB) << " forget call to SetVertexFieldOnBTh");
+		} 
+		Edge * e = &BhAB;
+		if (!pA || !pB || !e){
+			_error_("!pA || !pB || !e");
+		}
+		// be carefull the back ground edge e is on same geom edge 
+		// of the initiale edge def by the 2 vertex A B;
+		//check Is a background Mesh;   
+		if (e<BTh.edges || e>=BTh.edges+BTh.nbe){
+			_error_("e<BTh.edges || e>=BTh.edges+BTh.nbe");
+		}
+		// walk on BTh edge 
+		//not finish ProjectOnCurve with BackGround Mesh);
+		// 1 first find a back ground edge contening the vertex A
+		// 2 walk n back gound boundary to find the final vertex B
+
+		if( vA.IndexInTriangle == IsVertexOnEdge) 
+		  { // find the start edge 
+			e = vA.BackgroundEdgeHook->be;	 
+
+		  } 
+		else if (vB.IndexInTriangle == IsVertexOnEdge) 
+		  {
+			theta = 1-theta;
+			Exchange(tA,tB);
+			Exchange(pA,pB);
+			Exchange(pvA,pvB);
+			Exchange(A,B);
+			e =  vB.BackgroundEdgeHook->be;
+
+		  } 
+		else{ // do the search by walking 
+			_error_("case not supported yet");
+		}
+
+		// find the direction of walking with direction of edge and pA,PB;
+		R2 AB=B-A;
+
+		double cosE01AB = (( (R2) (*e)[1] - (R2) (*e)[0] ) , AB);
+		int kkk=0;
+		int direction = (cosE01AB>0) ? 1 : 0;
+
+		//   double l=0; // length of the edge AB
+		double abscisse = -1;
+
+		for (int step=0;step<2;step++){
+			// 2 times algo:
+			//    1 for computing the length l
+			//    2 for find the vertex 
+			int  iii;
+			BamgVertex  *v0=pvA,*v1; 
+			Edge *neee,*eee;
+			double lg =0; // length of the curve 
+			double te0;
+			// we suppose take the curve's abcisse 
+			for ( eee=e,iii=direction,te0=tA;
+						eee && ((( void*) eee) != pB) && (( void*) (v1=&((*eee)[iii]))) != pB ;
+						neee = eee->adj[iii],iii = 1-neee->Intersection(*eee),eee = neee,v0=v1,te0=1-iii ) { 
+
+				kkk=kkk+1;
+				_assert_(kkk<100);
+				_assert_(eee);
+				double lg0 = lg;
+				double dp = LengthInterpole(v0->m,v1->m,(R2) *v1 - (R2) *v0);
+				lg += dp;
+				if (step && abscisse <= lg) { // ok we find the geom edge 
+					double sss  =   (abscisse-lg0)/dp;
+					double thetab = te0*(1-sss)+ sss*iii;
+					_assert_(thetab>=0 && thetab<=1);
+					BR = VertexOnEdge(&R,eee,thetab);
+					return  Gh.ProjectOnCurve(*eee,thetab,R,GR);
+				}
+			}
+			// we find the end 
+			if (v1 != pvB){
+				if (( void*) v1 == pB)
+				 tB = iii;
+
+				double lg0 = lg;
+				_assert_(eee);
+				v1 = pvB;
+				double dp = LengthInterpole(v0->m,v1->m,(R2) *v1 - (R2) *v0);
+				lg += dp;	
+				abscisse = lg*theta;
+				if (abscisse <= lg && abscisse >= lg0 ) // small optimisation we know the lenght because end
+				  { // ok we find the geom edge 
+					double sss  =   (abscisse-lg0)/dp;
+					double thetab = te0*(1-sss)+ sss*tB;
+					_assert_(thetab>=0 && thetab<=1);
+					BR = VertexOnEdge(&R,eee,thetab);
+					return  Gh.ProjectOnCurve(*eee,thetab,R,GR);
+				  }
+			}
+			abscisse = lg*theta;
+
+		}
+		_error_("Big bug...");
+		return 0; // just for the compiler 
+	}                  
+	/*}}}*/
+	void Mesh::ReconstructExistingMesh(BamgOpts* bamgopts){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/FillHoleInMesh)*/
+
+		/*This routine reconstruct an existing mesh to make it CONVEX:
+		 * -all the holes are filled
+		 * -concave boundaries are filled
+		 * A convex mesh is required for a lot of operations. This is why every mesh
+		 * goes through this process.
+		 * This routine also generates mesh properties such as adjencies,...
+		 */
+
+		/*Intermediary*/
+		int verbose=0;
+
+		/*Get options*/
+		if(bamgopts) verbose=bamgopts->verbose;
+
+		// generation of the integer coordinate
+
+		// find extrema coordinates of vertices pmin,pmax
+		long i;
+		if(verbose>2) _printf_("      Reconstruct mesh of " << nbv << " vertices\n"); 
+
+		//initialize orderedvertices
+		_assert_(orderedvertices);
+		for (i=0;i<nbv;i++) orderedvertices[i]=0;
+
+		//Initialize nbsubdomains
+		nbsubdomains =0;
+
+		/* generation of triangles adjacency*/
+
+		//First add existing edges
+		long kk =0;
+		SetOfEdges4* edge4= new SetOfEdges4(nbt*3,nbv);
+		for (i=0;i<nbe;i++){
+			kk=kk+(i==edge4->SortAndAdd(GetId(edges[i][0]),GetId(edges[i][1])));
+		}
+		if (kk != nbe){ 
+			_error_("There are " << kk-nbe << " double edges in the mesh");
+		}
+
+		//Add edges of all triangles in existing mesh
+		long* st = new long[nbt*3];
+		for (i=0;i<nbt*3;i++) st[i]=-1;
+		for (i=0;i<nbt;i++){
+			for (int j=0;j<3;j++){
+
+				//Add current triangle edge to edge4
+				long k =edge4->SortAndAdd(GetId(triangles[i][VerticesOfTriangularEdge[j][0]]),GetId(triangles[i][VerticesOfTriangularEdge[j][1]]));
+
+				long invisible=triangles[i].Hidden(j);
+
+				//If the edge has not been added to st, add it
+				if(st[k]==-1) st[k]=3*i+j;
+
+				//If the edge already exists, add adjacency
+				else if(st[k]>=0) {
+					_assert_(!triangles[i].TriangleAdj(j));
+					_assert_(!triangles[st[k]/3].TriangleAdj((int) (st[k]%3)));
+
+					triangles[i].SetAdj2(j,triangles+st[k]/3,(int)(st[k]%3));
+					if (invisible) triangles[i].SetHidden(j);
+					if (k<nbe)     triangles[i].SetLocked(j);
+
+					//Make st[k] negative so that it will throw an error message if it is found again
+					st[k]=-2-st[k]; 
+				}
+
+				//An edge belongs to 2 triangles
+				else {
+					_error_("The edge (" << GetId(triangles[i][VerticesOfTriangularEdge[j][0]]) << " , " << GetId(triangles[i][VerticesOfTriangularEdge[j][1]]) << ") belongs to more than 2 triangles");
+				}
+			}
+		}
+
+		//Display info if required
+		if(verbose>5) {
+			_printf_("         info of Mesh:\n");
+			_printf_("            - number of vertices    = " << nbv << " \n"); 
+			_printf_("            - number of triangles   = " << nbt << " \n"); 
+			_printf_("            - number of given edges = " << nbe << " \n"); 
+			_printf_("            - number of all edges   = " << edge4->nb() << "\n"); 
+			_printf_("            - Euler number 1 - nb of holes = " << nbt-edge4->nb()+nbv << "\n"); 
+		}
+
+		//check the consistency of edge[].adj and the geometrical required vertex
+		long k=0;
+		for (i=0;i<edge4->nb();i++){
+			if (st[i]>=0){ // edge alone 
+				if (i<nbe){
+					long i0=edge4->i(i);
+					orderedvertices[i0] = vertices+i0;
+					long i1=edge4->j(i);
+					orderedvertices[i1] = vertices+i1;
+				}
+				else {
+					k=k+1;
+					if (k<10) {
+						//print only 10 edges
+						_printf_("Lost boundary edges " << i << " : " << edge4->i(i) << " " << edge4->j(i) << "\n");
+					}
+					else if (k==10){
+						_printf_("Other lost boundary edges not shown...\n");
+					}
+				}
+			}
+		}
+		if(k) {
+			_error_(k << " boundary edges (from the geometry) are not defined as mesh edges");
+		}
+
+		/* mesh generation with boundary points*/
+		long nbvb=0;
+		for (i=0;i<nbv;i++){ 
+			vertices[i].t=0;
+			vertices[i].IndexInTriangle=0;
+			if (orderedvertices[i]) orderedvertices[nbvb++]=orderedvertices[i];
+		}
+
+		Triangle* savetriangles=triangles;
+		long savenbt=nbt;
+		long savemaxnbt=maxnbt;
+		SubDomain* savesubdomains=subdomains;
+		subdomains=0;
+
+		long  Nbtriafillhole=2*nbvb;
+		Triangle* triafillhole=new Triangle[Nbtriafillhole];
+		triangles = triafillhole;
+
+		nbt=2;
+		maxnbt= Nbtriafillhole;
+
+		//Find a vertex that is not aligned with vertices 0 and 1
+		for (i=2;det(orderedvertices[0]->i,orderedvertices[1]->i,orderedvertices[i]->i)==0;) 
+		 if  (++i>=nbvb) {
+			 _error_("ReconstructExistingMesh: All the vertices are aligned");
+		 }
+		//Move this vertex (i) to the 2d position in orderedvertices
+		Exchange(orderedvertices[2], orderedvertices[i]);
+
+		/*Reconstruct mesh beginning with 2 triangles*/
+		BamgVertex *  v0=orderedvertices[0], *v1=orderedvertices[1];
+
+		triangles[0](0) = NULL; // Infinite vertex
+		triangles[0](1) = v0;
+		triangles[0](2) = v1;
+
+		triangles[1](0) = NULL;// Infinite vertex
+		triangles[1](2) = v0;
+		triangles[1](1) = v1;
+		const int e0 = OppositeEdge[0];
+		const int e1 = NextEdge[e0];
+		const int e2 = PreviousEdge[e0];
+		triangles[0].SetAdj2(e0, &triangles[1] ,e0);
+		triangles[0].SetAdj2(e1, &triangles[1] ,e2);
+		triangles[0].SetAdj2(e2, &triangles[1] ,e1);
+
+		triangles[0].det = -1;  // boundary triangles
+		triangles[1].det = -1;  // boundary triangles
+
+		triangles[0].SetSingleVertexToTriangleConnectivity();
+		triangles[1].SetSingleVertexToTriangleConnectivity();
+
+		triangles[0].link=&triangles[1];
+		triangles[1].link=&triangles[0];
+
+		if (!quadtree) delete quadtree; //ReInitialise;
+		quadtree = new BamgQuadtree(this,0);
+		quadtree->Add(*v0);
+		quadtree->Add(*v1);
+
+		// vertices are added one by one
+		long NbSwap=0;
+		for (int icount=2; icount<nbvb; icount++) {
+			BamgVertex *vi  = orderedvertices[icount];
+			long long det3[3];
+			Triangle *tcvi = TriangleFindFromCoord(vi->i,det3);
+			quadtree->Add(*vi); 
+			AddVertex(*vi,tcvi,det3);
+			NbSwap += vi->Optim(1,1);
+		}
+
+		//enforce the boundary 
+		AdjacentTriangle ta(0,0);
+		long nbloss = 0,knbe=0;
+		for ( i = 0; i < nbe; i++){
+			if (st[i] >=0){ //edge alone => on border
+				BamgVertex &a=edges[i][0], &b=edges[i][1];
+				if (a.t && b.t){
+					knbe++;
+					if (ForceEdge(a,b,ta)<0) nbloss++;
+				}
+			}
+		}
+		if(nbloss) {
+			_error_("we lost " << nbloss << " existing edges other " << knbe);
+		}
+
+		FindSubDomain(bamgopts,1);
+		// remove all the hole 
+		// remove all the good sub domain
+		long krm =0;
+		for (i=0;i<nbt;i++){
+			if (triangles[i].link){ // remove triangles
+				krm++;
+				for (int j=0;j<3;j++){
+					AdjacentTriangle ta =  triangles[i].Adj(j);
+					Triangle &tta = *(Triangle*)ta;
+					//if edge between remove and not remove 
+					if(! tta.link){ 
+						// change the link of ta;
+						int ja = ta;
+						BamgVertex *v0= ta.EdgeVertex(0);
+						BamgVertex *v1= ta.EdgeVertex(1);
+						long k =edge4->SortAndAdd(v0?GetId(v0):nbv,v1? GetId(v1):nbv);
+
+						_assert_(st[k]>=0);
+						tta.SetAdj2(ja,savetriangles + st[k] / 3,(int) (st[k]%3));
+						ta.SetLock();
+						st[k]=-2-st[k]; 
+					}
+				}
+			}
+		}
+		long NbTfillHoll =0;
+		for (i=0;i<nbt;i++){
+			if (triangles[i].link) {
+				triangles[i]=Triangle((BamgVertex *) NULL,(BamgVertex *) NULL,(BamgVertex *) NULL);
+				triangles[i].color=-1;
+			}
+			else{
+				triangles[i].color= savenbt+ NbTfillHoll++;
+			}
+		}
+		_assert_(savenbt+NbTfillHoll<=savemaxnbt);
+
+		// copy of the outside triangles in saveMesh 
+		for (i=0;i<nbt;i++){
+			if(triangles[i].color>=0) {
+				savetriangles[savenbt]=triangles[i];
+				savetriangles[savenbt].link=0;
+				savenbt++;
+			}
+		}
+		// gestion of the adj
+		k =0;
+		Triangle * tmax = triangles + nbt;
+		for (i=0;i<savenbt;i++) { 
+			Triangle & ti = savetriangles[i];
+			for (int j=0;j<3;j++){
+				Triangle * ta = ti.TriangleAdj(j);
+				int aa = ti.NuEdgeTriangleAdj(j);
+				int lck = ti.Locked(j);
+				if (!ta) k++; // bug 
+				else if ( ta >= triangles && ta < tmax){
+					ta= savetriangles + ta->color;
+					ti.SetAdj2(j,ta,aa);
+					if(lck) ti.SetLocked(j);
+				}
+			}
+		}
+
+		// restore triangles;
+		nbt=savenbt;
+		maxnbt=savemaxnbt;
+		delete [] triangles;
+		delete [] subdomains;
+		triangles = savetriangles;
+		subdomains = savesubdomains;
+		if (k) {
+			_error_("number of triangles edges alone = " << k);
+		}
+		FindSubDomain(bamgopts);
+
+		delete edge4;
+		delete [] st;
+		for (i=0;i<nbv;i++) quadtree->Add(vertices[i]);
+
+		SetVertexFieldOn();
+
+		/*Check requirements consistency*/
+		for (i=0;i<nbe;i++){
+			/*If the current mesh edge is on Geometry*/
+			if(edges[i].GeomEdgeHook){
+				for(int j=0;j<2;j++){
+					/*Go through the edges adjacent to current edge (if on the same curve)*/
+					if (!edges[i].adj[j]){
+						/*The edge is on Geometry and does not have 2 adjacent edges... (not on a closed curve)*/
+						/*Check that the 2 vertices are on geometry AND required*/
+						if(!edges[i][j].GeomEdgeHook->IsRequiredVertex()){
+							_printf_("ReconstructExistingMesh error message: problem with the edge number " << i+1 << ": [" << GetId(edges[i][0])+1 << " " << GetId(edges[i][1])+1 << "]\n");
+							_printf_("This edge is on geometrical edge number " << Gh.GetId(edges[i].GeomEdgeHook)+1 << "\n");
+							if (edges[i][j].GeomEdgeHook->OnGeomVertex())
+							 _printf_("the vertex number " << GetId(edges[i][j])+1 << " of this edge is a geometric BamgVertex number " << Gh.GetId(edges[i][j].GeomEdgeHook->gv)+1 << "\n");
+							else if (edges[i][j].GeomEdgeHook->OnGeomEdge())
+							 _printf_("the vertex number " << GetId(edges[i][j])+1 << " of this edge is a geometric Edge number " << Gh.GetId(edges[i][j].GeomEdgeHook->ge)+1 << "\n");
+							else
+							 _printf_("Its pointer is " << edges[i][j].GeomEdgeHook << "\n");
+
+							_printf_("This edge is on geometry and has no adjacent edge (open curve) and one of the tip is not required\n");
+							_error_("See above (might be cryptic...)");
+						}
+					}
+				}
+			}
+		}
+	}
+	/*}}}*/
+	void Mesh::TrianglesRenumberBySubDomain(bool justcompress){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/ReNumberingTheTriangleBySubDomain)*/
+
+		long *renu= new long[nbt];
+		Triangle *t0,*t,*te=triangles+nbt;
+		long k=0,it,i,j;
+
+		for ( it=0;it<nbt;it++) 
+		 renu[it]=-1; // outside triangle 
+		for ( i=0;i<nbsubdomains;i++)
+		  { 
+			t=t0=subdomains[i].head;
+			if (!t0){ // not empty sub domain
+				_error_("!t0");
+			}
+			do { 
+				long kt = GetId(t);
+				if (kt<0 || kt >= nbt ){
+					_error_("kt<0 || kt >= nbt");
+				}
+				if (renu[kt]!=-1){
+					_error_("renu[kt]!=-1");
+				}
+				renu[kt]=k++;
+			}
+			while (t0 != (t=t->link));
+		  }
+		// take is same numbering if possible    
+		if(justcompress)
+		 for ( k=0,it=0;it<nbt;it++) 
+		  if(renu[it] >=0 ) 
+			renu[it]=k++;
+
+		// put the outside triangles at the end
+		for ( it=0;it<nbt;it++){
+			if (renu[it]==-1) renu[it]=k++;
+		}
+		if (k != nbt){
+			_error_("k != nbt");
+		}
+		// do the change on all the pointeur 
+		for ( it=0;it<nbt;it++)
+		 triangles[it].Renumbering(triangles,te,renu);
+
+		for ( i=0;i<nbsubdomains;i++)
+		 subdomains[i].head=triangles+renu[GetId(subdomains[i].head)];
+
+		// move the Triangles  without a copy of the array 
+		// be carefull not trivial code 
+		for ( it=0;it<nbt;it++) // for all sub cycles of the permutation renu
+		 if (renu[it] >= 0) // a new sub cycle
+			{ 
+			 i=it;
+			 Triangle ti=triangles[i],tj;
+			 while ( (j=renu[i]) >= 0) 
+				{ // i is old, and j is new 
+				 renu[i] = -1; // mark 
+				 tj = triangles[j]; // save new
+				 triangles[j]= ti; // new <- old
+				 i=j;     // next 
+				 ti = tj;
+				}  
+			}
+		delete [] renu;
+
+	}
+	/*}}}*/
+	void Mesh::SetIntCoor(const char * strfrom) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/SetIntCoor)*/
+
+		/*Set integer coordinate for existing vertices*/
+
+		//Get extrema coordinates of the existing vertices
+		pmin =  vertices[0].r;
+		pmax =  vertices[0].r;
+		long i;
+		for (i=0;i<nbv;i++) {
+			pmin.x = Min(pmin.x,vertices[i].r.x);
+			pmin.y = Min(pmin.y,vertices[i].r.y);
+			pmax.x = Max(pmax.x,vertices[i].r.x);
+			pmax.y = Max(pmax.y,vertices[i].r.y);
+		}
+		R2 DD = (pmax-pmin)*0.05;
+		pmin = pmin-DD;
+		pmax = pmax+DD; 
+
+		//Compute coefIcoor
+		long MaxICoord = 1073741823; //2^30 - 1 = =111...111 (29 times one)
+		coefIcoor= (MaxICoord)/(Max(pmax.x-pmin.x,pmax.y-pmin.y));
+		if (coefIcoor<=0){
+			_error_("coefIcoor should be positive, a problem in the geometry is likely");
+		}
+
+		// generation of integer coord  
+		for (i=0;i<nbv;i++) {
+			vertices[i].i = R2ToI2(vertices[i].r);    
+		}
+
+		// computation of the det 
+		int number_of_errors=0;
+		for (i=0;i<nbt;i++) {
+			BamgVertex* v0 = triangles[i](0);
+			BamgVertex* v1 = triangles[i](1);
+			BamgVertex* v2 = triangles[i](2);
+
+			//If this is not a boundary triangle
+			if (v0 && v1 && v2){
+
+				/*Compute determinant*/
+				triangles[i].det= det(v0->GetIntegerCoordinates(),v1->GetIntegerCoordinates(),v2->GetIntegerCoordinates());
+
+				/*Check that determinant is positive*/
+				if (triangles[i].det <=0){
+
+					/*increase number_of_errors and print error only for the first 20 triangles*/
+					number_of_errors++;
+					if (number_of_errors<20){
+						_printf_("Area of Triangle " << i+1 << " < 0 (det=" << triangles[i].det << ")\n");
+					}
+				}
+			}
+
+			//else, set as -1
+			else triangles[i].det=-1;
+		}
+
+		if (number_of_errors) _error_("Fatal error: some triangles have negative areas, see above");
+	}
+	/*}}}*/
+	void Mesh::SmoothingVertex(BamgOpts* bamgopts,int nbiter,double omega ) { /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/SmoothingVertex)*/
+
+		/*Intermediaries*/
+		int verbose=0;
+
+		/*Get options*/
+		if(bamgopts) verbose=bamgopts->verbose;
+
+		//  if quatree exist remove it end reconstruct
+		if (quadtree) delete quadtree;
+		quadtree=0;
+		CreateSingleVertexToTriangleConnectivity();
+		Triangle vide; // a triangle to mark the boundary vertex
+		Triangle   ** tstart= new Triangle* [nbv];
+		long i,j,k;
+		//   attention si Background == Triangle alors on ne peut pas utiliser la rechech rapide 
+		if ( this == & BTh)
+		 for ( i=0;i<nbv;i++)
+		  tstart[i]=vertices[i].t;     
+		else 
+		 for ( i=0;i<nbv;i++)
+		  tstart[i]=0;
+		for ( j=0;j<NbVerticesOnGeomVertex;j++ ) 
+		 tstart[ GetId(VerticesOnGeomVertex[j].meshvertex)]=&vide;
+		for ( k=0;k<NbVerticesOnGeomEdge;k++ ) 
+		 tstart[ GetId(VerticesOnGeomEdge[k].meshvertex)]=&vide;
+		if(verbose>2) _printf_("   SmoothingVertex: nb Iteration = " << nbiter << ", Omega=" << omega << "\n");
+		for (k=0;k<nbiter;k++)
+		  {
+			long i,NbSwap =0;
+			double delta =0;
+			for ( i=0;i<nbv;i++)
+			 if (tstart[i] != &vide) // not a boundary vertex 
+			  delta=Max(delta,vertices[i].Smoothing(*this,BTh,tstart[i],omega));
+			for ( i=0;i<nbv;i++)
+			 if (tstart[i] != &vide) // not a boundary vertex 
+			  NbSwap += vertices[i].Optim(1);
+			if (verbose>3) _printf_("      move max = " << pow(delta,0.5) << ", iteration = " << k << ", nb of swap = " << NbSwap << "\n");
+		  }
+
+		delete [] tstart;
+		if (quadtree) quadtree= new BamgQuadtree(this);
+	}
+	/*}}}*/
+	void Mesh::SmoothMetric(BamgOpts* bamgopts,double raisonmax) { /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/SmoothMetric)*/
+
+		/*Intermediaries*/
+		int verbose=0;
+
+		/*Get options*/
+		if(bamgopts) verbose=bamgopts->verbose;
+
+		if(raisonmax<1.1) return;
+		if(verbose > 1) _printf_("   Mesh::SmoothMetric raisonmax = " << raisonmax << "\n");
+		CreateSingleVertexToTriangleConnectivity();
+		long i,j,kch,kk,ip;
+		long *first_np_or_next_t0 = new long[nbv];
+		long *first_np_or_next_t1 = new long[nbv];
+		long Head0 =0,Head1=-1;
+		double logseuil= log(raisonmax);
+
+		for(i=0;i<nbv-1;i++)
+		 first_np_or_next_t0[i]=i+1; 
+		first_np_or_next_t0[nbv-1]=-1;// end;
+		for(i=0;i<nbv;i++)
+		 first_np_or_next_t1[i]=-1;
+		kk=0;
+		while(Head0>=0&& kk++<100){
+			kch=0;
+			for(i=Head0;i>=0;i=first_np_or_next_t0[ip=i],first_np_or_next_t0[ip]=-1) {
+				//  pour tous les triangles autour du sommet s
+				Triangle* t= vertices[i].t;
+				if (!t){
+					_error_("!t");
+				}
+				BamgVertex & vi = vertices[i];
+				AdjacentTriangle ta(t,EdgesVertexTriangle[vertices[i].IndexInTriangle][0]);
+				BamgVertex *pvj0 = ta.EdgeVertex(0);
+				while (1) {
+					ta=Previous(Adj(ta));
+					if (vertices+i != ta.EdgeVertex(1)){
+						_error_("vertices+i != ta.EdgeVertex(1)");
+					}
+					BamgVertex *pvj = (ta.EdgeVertex(0));
+					BamgVertex & vj = *pvj;
+					if(pvj){
+						j= &vj-vertices;
+						if (j<0 || j >= nbv){
+							_error_("j<0 || j >= nbv");
+						}
+						R2 Aij = (R2) vj - (R2) vi;
+						double ll =  Norme2(Aij);
+						if (0) {  
+							double hi = ll/vi.m.Length(Aij.x,Aij.y);
+							double hj = ll/vj.m.Length(Aij.x,Aij.y);
+							if(hi < hj)
+							  {
+								double dh=(hj-hi)/ll;
+								if (dh>logseuil) {
+									vj.m.IntersectWith(vi.m/(1 +logseuil*ll/hi));
+									if(first_np_or_next_t1[j]<0)
+									 kch++,first_np_or_next_t1[j]=Head1,Head1=j;
+								}
+							  }
+						} 
+						else
+						  {
+							double li = vi.m.Length(Aij.x,Aij.y);
+							if( vj.m.IntersectWith(vi.m/(1 +logseuil*li)) )
+							 if(first_np_or_next_t1[j]<0) // if the metrix change 
+							  kch++,first_np_or_next_t1[j]=Head1,Head1=j;
+						  }
+					}
+					if  ( &vj ==  pvj0 ) break;
+				}
+			}
+			Head0 = Head1;
+			Head1 = -1;
+			Exchange(first_np_or_next_t0,first_np_or_next_t1);
+		}
+		if(verbose>2) _printf_("      number of iterations = " << kch << "\n"); 
+		delete [] first_np_or_next_t0;
+		delete [] first_np_or_next_t1;
+	}
+	/*}}}*/
+	long  Mesh::SplitInternalEdgeWithBorderVertices(){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/SplitInternalEdgeWithBorderVertices)*/
+
+		long NbSplitEdge=0;
+		SetVertexFieldOn();  
+		long it;
+		long nbvold=nbv;
+		long int verbose=2;
+		for (it=0;it<nbt;it++){
+			Triangle &t=triangles[it];
+			if (t.link)
+			 for (int j=0;j<3;j++)
+			  if(!t.Locked(j) && !t.Hidden(j)){
+
+				  Triangle *ptt = t.TriangleAdj(j);
+				  Triangle &tt = *ptt;
+
+				  if( ptt && tt.link && it < GetId(tt)) 
+					 { // an internal edge 
+					  BamgVertex &v0 = t[VerticesOfTriangularEdge[j][0]];
+					  BamgVertex &v1 = t[VerticesOfTriangularEdge[j][1]];
+					  if (v0.GeomEdgeHook && v1.GeomEdgeHook){
+						  R2 P= ((R2) v0 + (R2) v1)*0.5;
+						  if ( nbv<maxnbv) {
+							  vertices[nbv].r = P;
+							  vertices[nbv++].m = Metric(0.5,v0.m,0.5,v1.m);
+							  vertices[nbv].ReferenceNumber=0;
+						  }
+						  NbSplitEdge++;
+					  }
+					 }
+			  }
+		}
+		CreateSingleVertexToTriangleConnectivity();    
+		if (nbvold!=nbv){
+			long  iv = nbvold;
+			long NbSwap = 0;
+			long long det3[3];  
+			for (int i=nbvold;i<nbv;i++) {// for all the new point
+				BamgVertex & vi = vertices[i];
+				vi.i = R2ToI2(vi.r);
+				vi.r = I2ToR2(vi.i);
+
+				// a good new point 
+				vi.ReferenceNumber=0; 
+				Triangle *tcvi = TriangleFindFromCoord(vi.i,det3);
+				if (tcvi && !tcvi->link) {
+					_printf_("problem inserting point in SplitInternalEdgeWithBorderVertices (tcvj && !tcvj->link)\n");
+				}
+
+				quadtree->Add(vi);
+				if (!tcvi || tcvi->det<0){// internal
+					_error_("!tcvi || tcvi->det < 0");
+				}
+				AddVertex(vi,tcvi,det3);
+				NbSwap += vi.Optim(1);          
+				iv++;
+			}
+			if (verbose>3) {
+				_printf_("   number of points: " << iv << "\n");
+				_printf_("   number of swap to  split internal edges with border vertices: " << NbSwap << "\n");
+				nbv = iv;
+			}
+		}
+		if (NbSplitEdge>nbv-nbvold) _printf_("WARNING: not enough vertices to split all internal edges, we lost " << NbSplitEdge - ( nbv-nbvold) << " edges. To fix this, increase 'maxnbv' (see bamg help)\n");
+		if (verbose>2) _printf_("SplitInternalEdgeWithBorderVertices: Number of splited edge " << NbSplitEdge << "\n");
+
+		return  NbSplitEdge;
+	}
+	/*}}}*/
+	I2 Mesh::R2ToI2(const R2 & P) const {/*{{{*/
+		return  I2( (int) (coefIcoor*(P.x-pmin.x)),(int) (coefIcoor*(P.y-pmin.y)) );
+	}
+	/*}}}*/
+	R2 Mesh::I2ToR2(const I2 & P) const {/*{{{*/
+		return  R2( (double) P.x/coefIcoor+pmin.x, (double) P.y/coefIcoor+pmin.y);
+	}
+	/*}}}*/
+	Triangle * Mesh::TriangleFindFromCoord(const I2 & B,long long det3[3], Triangle *tstart){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/FindTriangleContening)*/
+
+		Triangle * t=0;	
+		int j,jp,jn,jj;
+		int counter;
+
+		/*Get starting triangle. Take tsart if provided*/
+		if (tstart) t=tstart;
+
+		/*Else find the closest Triangle using the quadtree*/
+		else {
+
+			/*Check that the quadtree does exist*/
+			if (!quadtree) _error_("no starting triangle provided and no quadtree available");
+
+			/*Call NearestVertex*/
+			BamgVertex *a = quadtree->NearestVertex(B.x,B.y) ;
+
+			/*Check output (Vertex a)*/
+			if (!a)    _error_("problem while trying to find nearest vertex from a given point. No output found");
+			if (!a->t) _error_("no triangle is associated to vertex number " << GetId(a)+1 << " (orphan?)");
+			_assert_(a>=vertices && a<vertices+nbv);
+
+			/*Get starting triangle*/
+			t = a->t;
+			_assert_(t>=triangles && t<triangles+nbt);
+		}
+
+		long long  detop ;
+
+		/*initialize number of test triangle*/
+		counter=0; 
+
+		/*The initial triangle might be outside*/
+		while (t->det < 0){ 
+
+			/*Get a real vertex from this triangle (k0)*/
+			int k0=(*t)(0)?(((*t)(1)?((*t)(2)?-1:2):1)):0;
+			_assert_(k0>=0);// k0 the NULL vertex
+			int k1=NextVertex[k0],k2=PreviousVertex[k0];
+			det3[k0]=det(B,(*t)[k1],(*t)[k2]);
+			det3[k1]=det3[k2]=-1;     
+			if (det3[k0] > 0) // outside B 
+			 return t; 
+			t = t->TriangleAdj(OppositeEdge[k0]);
+			counter++;
+			_assert_(counter<2);
+		}
+
+		jj=0;
+		detop = det(*(*t)(VerticesOfTriangularEdge[jj][0]),*(*t)(VerticesOfTriangularEdge[jj][1]),B);
+
+		while(t->det>0){
+
+			/*Increase counter*/
+			if (++counter>=10000) _error_("Maximum number of iteration reached (threshold = " << counter << ").");
+
+			j= OppositeVertex[jj];
+			det3[j] = detop;  //det(*b,*s1,*s2);
+			jn = NextVertex[j];
+			jp = PreviousVertex[j];
+			det3[jp]= det(*(*t)(j),*(*t)(jn),B);
+			det3[jn] = t->det-det3[j] -det3[jp];
+
+			// count the number k of  det3 <0
+			int k=0,ii[3];
+			if (det3[0] < 0 ) ii[k++]=0; 
+			if (det3[1] < 0 ) ii[k++]=1;
+			if (det3[2] < 0 ) ii[k++]=2;
+			// 0 => ok
+			// 1 => go in way 1
+			// 2 => two way go in way 1 or 2 randomly
+
+			if (k==0) break;
+			if (k==2 && this->RandomNumber(1)) Exchange(ii[0],ii[1]);
+			_assert_(k<3);
+			AdjacentTriangle t1 = t->Adj(jj=ii[0]);
+			if ((t1.det() < 0 ) && (k == 2))
+			 t1 = t->Adj(jj=ii[1]);
+			t=t1;
+			j=t1;// for optimisation we now the -det[OppositeVertex[j]];
+			detop = -det3[OppositeVertex[jj]];
+			jj = j;
+		}
+
+		if (t->det<0) // outside triangle 
+		 det3[0]=det3[1]=det3[2]=-1,det3[OppositeVertex[jj]]=detop;
+		return t;
+	}
+	/*}}}*/
+	void Mesh::TriangleIntNumbering(long* renumbering){/*{{{*/
+
+		long num=0;
+		for (int i=0;i<nbt;i++){
+			if (triangles[i].det>0) renumbering[i]=num++;
+			else renumbering[i]=-1;
+		}
+		return;   
+	}
+	/*}}}*/
+	long  Mesh::TriangleReferenceList(long* reft) const {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/ConsRefTriangle)*/
+
+		Triangle *t0,*t;
+		long k=0, num;   
+
+		//initialize all triangles as -1 (outside)
+		for (int it=0;it<nbt;it++) reft[it]=-1;
+
+		//loop over all subdomains
+		for (int i=0;i<nbsubdomains;i++){ 
+
+			//first triangle of the subdomain i
+			t=t0=subdomains[i].head;
+
+			//check that the subdomain is not empty
+			if (!t0){ _error_("At least one subdomain is empty");}
+
+			//loop
+			do{
+				k++;
+
+				//get current triangle number
+				num = GetId(t);
+
+				//check that num is in [0 nbt[
+				_assert_(num>=0 && num<nbt);
+
+				//reft of this triangle is the subdomain number
+				reft[num]=i;
+
+			} while (t0 != (t=t->link));
+			//stop when all triangles of subdomains have been tagged
+
+		}
+		return k;   
+	}
+	/*}}}*/
+	void Mesh::Triangulate(double* x,double* y,int nods,BamgOpts* bamgopts){/*{{{*/
+
+		int verbose=0;
+		int i;
+		Metric M1(1);
+
+		/*Get options*/
+		if(bamgopts) verbose=bamgopts->verbose;
+
+		/*Initialize mesh*/
+		Init(nods);//this resets nbv to 0
+		nbv=nods;
+
+		//Vertices
+		if(verbose) _printf_("Reading vertices (" << nbv << ")\n");
+		for(i=0;i<nbv;i++){
+			vertices[i].r.x=x[i];
+			vertices[i].r.y=y[i];
+			vertices[i].ReferenceNumber=1;
+			vertices[i].m=M1;
+			vertices[i].color=0;
+		}
+		maxnbt=2*maxnbv-2; // for filling The Holes and quadrilaterals 
+
+		/*Insert Vertices*/
+		Insert(bamgopts);
+	}
+	/*}}}*/
+	void Mesh::TriangulateFromGeom0(BamgOpts* bamgopts){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/GeomToTriangles0)*/
+		/*Generate mesh from geometry*/
+
+		/*Intermediaries*/
+		int                i,k;
+		int					 verbose=0;
+		int                nbcurves    = 0;
+		int                NbNewPoints,NbEdgeCurve;
+		double             lcurve,lstep,s;
+		const int          MaxSubEdge  = 10;
+
+		R2          AB;
+		GeomVertex *a, *b;
+		BamgVertex *va,*vb;
+		GeomEdge   *e;
+
+		// add a ref to GH to make sure that it is not destroyed by mistake
+		Gh.NbRef++;
+
+		/*Get options*/
+		if(bamgopts) verbose=bamgopts->verbose;
+
+		//build background mesh flag (1 if background, else 0)
+		bool background=(&BTh != this);
+
+		/*Build VerticesOnGeomVertex*/
+
+		//Compute the number of geometrical vertices that we are going to use to mesh
+		for (i=0;i<Gh.nbv;i++){
+			if (Gh[i].Required()) NbVerticesOnGeomVertex++;
+		}
+		//allocate
+		VerticesOnGeomVertex = new VertexOnGeom[NbVerticesOnGeomVertex];  
+		if(NbVerticesOnGeomVertex >= maxnbv) _error_("too many vertices on geometry: " << NbVerticesOnGeomVertex << " >= " << maxnbv);
+		_assert_(nbv==0);
+		//Build VerticesOnGeomVertex
+		for (i=0;i<Gh.nbv;i++){
+			/* Add vertex only if required*/
+			if (Gh[i].Required()) {//Gh  vertices Required
+
+				//Add the vertex
+				_assert_(nbv<maxnbv);
+				vertices[nbv]=Gh[i];
+
+				//Add pointer from geometry (Gh) to vertex from mesh (Th)
+				Gh[i].MeshVertexHook=vertices+nbv;
+
+				//Build VerticesOnGeomVertex for current point
+				VerticesOnGeomVertex[nbv]=VertexOnGeom(*Gh[i].MeshVertexHook,Gh[i]);
+
+				//nbv increment
+				nbv++;
+			}
+		}
+
+		/*Build VerticesOnGeomEdge*/
+
+		//check that edges is still empty (Init)
+		_assert_(!edges);
+
+		/* Now we are going to create the first edges corresponding
+		 * to the one present in the geometry provided.
+		 * We proceed in 2 steps
+		 *  -step 0: we count all the edges
+		 *           we allocate the number of edges at the end of step 0
+		 *  -step 1: the edges are created */
+		for (int step=0;step<2;step++){
+
+			//initialize number of edges and number of edges max
+			long nbex=0;
+			nbe=0;
+			long NbVerticesOnGeomEdge0=NbVerticesOnGeomEdge;
+			Gh.UnMarkEdges();	
+			nbcurves=0;
+
+			//go through the edges of the geometry
+			for (i=0;i<Gh.nbe;i++){
+
+				//ei = current Geometrical edge
+				GeomEdge &ei=Gh.edges[i];   
+
+				//loop over the two vertices of the edge ei
+				for(int j=0;j<2;j++) {
+
+					/*Take only required vertices (corner->beginning of a new curve)*/
+					if (!ei.Mark() && ei[j].Required()){ 
+
+						long  nbvend=0;
+						Edge* PreviousNewEdge=NULL;
+						lstep = -1;
+
+						/*If Edge is required (do that only once for the 2 vertices)*/
+						if(ei.Required()){
+							if (j==0){
+								//do not create internal points if required (take it as is)
+								if(step==0) nbe++;
+								else{ 
+									e=&ei;
+									a=ei(0);
+									b=ei(1);
+
+									//check that edges has been allocated
+									_assert_(edges);
+									edges[nbe].v[0]=a->MeshVertexHook;
+									edges[nbe].v[1]=b->MeshVertexHook;;
+									edges[nbe].ReferenceNumber = e->ReferenceNumber;
+									edges[nbe].GeomEdgeHook = e;
+									edges[nbe].adj[0] = 0;
+									edges[nbe].adj[1] = 0;
+									nbe++;
+								}
+							}
+						}
+
+						/*If Edge is not required: we are on a curve*/
+						else {
+							for (int kstep=0;kstep<=step;kstep++){
+								//kstep=0, compute number of edges (discretize curve)
+								//kstep=1  create the points and edge
+								PreviousNewEdge=0;
+								NbNewPoints=0;
+								NbEdgeCurve=0;
+								if (nbvend>=maxnbv) _error_("maximum number of vertices too low! Check the domain outline or increase maxnbv");
+								lcurve =0;
+								s = lstep; //-1 initially, then length of each sub edge
+
+								/*reminder: i = edge number, j=[0;1] vertex index in edge*/
+								k=j;            // k = vertex index in edge (0 or 1)
+								e=&ei;          // e = reference of current edge
+								a=ei(k);        // a = pointer toward the kth vertex of the current edge
+								va = a->MeshVertexHook; // va = pointer toward mesh vertex associated
+								e->SetMark();   // Mark edge
+
+								/*Loop until we reach the end of the curve*/
+								for(;;){ 
+									k = 1-k;            // other vertx index of the curve
+									b = (*e)(k);        // b = pointer toward the other vertex of the current edge
+									AB= b->r - a->r;   // AB = vector of the current edge
+									Metric MA = background ? BTh.MetricAt(a->r) :a->m ;  //Get metric associated to A
+									Metric MB = background ? BTh.MetricAt(b->r) :b->m ;  //Get metric associated to B
+									double ledge = (MA.Length(AB.x,AB.y) + MB.Length(AB.x,AB.y))/2;                  //Get edge length in metric
+
+									/* We are now creating the mesh edges from the geometrical edge selected above.
+									 * The edge will be divided according to the metric previously computed and cannot
+									 * be divided more than 10 times (MaxSubEdge). */
+
+									//By default, there is only one subedge that is the geometrical edge itself
+									int NbSubEdge = 1;
+
+									//initialize lSubEdge, holding the length of each subedge (cannot be higher than 10)
+									double lSubEdge[MaxSubEdge];
+
+									//Build Subedges according to the edge length
+									if (ledge < 1.5){
+										//if ledge < 1.5 (between one and 2), take the edge as is
+										lSubEdge[0] = ledge;
+									}
+									//else, divide the edge
+									else {
+										//compute number of subedges (division of the edge), Maximum is 10
+										NbSubEdge = Min( MaxSubEdge, (int) (ledge +0.5));
+										/*Now, we are going to divide the edge according to the metric.
+										 * Get segment by sement along the edge.
+										 * Build lSubEdge, which holds the distance between the first vertex
+										 * of the edge and the next point on the edge according to the 
+										 * discretization (each SubEdge is AB)*/
+										R2 A,B;
+										A=a->r;
+										Metric MAs=MA,MBs;
+										ledge=0; 
+										double x =0, xstep= 1./NbSubEdge;
+										for (int kk=0; kk < NbSubEdge; kk++,A=B,MAs=MBs ) {
+											x += xstep;
+											B =  e->F(k ? x : 1-x);
+											MBs= background ? BTh.MetricAt(B) : Metric(1-x,MA,x,MB);
+											AB = A-B;
+											lSubEdge[kk]=(ledge+=(MAs.Length(AB.x,AB.y)+MBs.Length(AB.x,AB.y))/2);
+										}
+									}
+
+									double lcurveb = lcurve+ledge;
+
+									/*Now, create corresponding points*/
+									while(s>=lcurve && s<=lcurveb && nbv<nbvend){
+
+										/*Schematic of current curve
+										 *
+										 *  a                   vb                  b          // vertex
+										 *  0              ll0     ll1              ledge      // length from a
+										 *  + --- + - ... - + --S-- + --- + - ... - +          // where is S
+										 *  0              kk0     kk1              NbSubEdge  // Sub edge index
+										 *
+										 */
+
+										double ss = s-lcurve;
+
+										/*Find the SubEdge containing ss using Dichotomy*/
+										int kk0=-1,kk1=NbSubEdge-1,kkk;
+										double ll0=0,ll1=ledge,llk;
+										while (kk1-kk0>1){
+											if (ss < (llk=lSubEdge[kkk=(kk0+kk1)/2]))
+											 kk1=kkk,ll1=llk;
+											else
+											 kk0=kkk,ll0=llk;
+										}
+										_assert_(kk1!=kk0);
+
+										/*Curvilinear coordinate in [0 1] of ss in current edge*/
+										// WARNING: This is what we would do
+										// ssa = (ss-ll0)/(ll1-ll0);
+										// aa = (kk0+ssa)/NbSubEdge
+										// This is what Bamg does:
+										double sbb = (ss-ll0)/(ll1-ll0);
+										/*Curvilinear coordinate in [0 1] of ss in current curve*/
+										double bb = (kk1+sbb)/NbSubEdge;
+										double aa = 1-bb;
+
+										// new vertex on edge
+										vb = &vertices[nbv++];
+										vb->m = Metric(aa,a->m,bb,b->m);
+										vb->ReferenceNumber = e->ReferenceNumber;
+										double abcisse = k ? bb : aa;
+										vb->r =  e->F(abcisse);
+										VerticesOnGeomEdge[NbVerticesOnGeomEdge++]= VertexOnGeom(*vb,*e,abcisse);        
+
+										// to take into account the direction of the edge
+										s += lstep;
+										edges[nbe].v[0]=va;
+										edges[nbe].v[1]=vb;
+										edges[nbe].ReferenceNumber =e->ReferenceNumber;
+										edges[nbe].GeomEdgeHook = e;
+										edges[nbe].adj[0] = PreviousNewEdge;
+										if(PreviousNewEdge) PreviousNewEdge->adj[1]=&edges[nbe];
+										PreviousNewEdge=edges+nbe;
+										nbe++;
+										va = vb;
+									}
+
+									/*We just added one edge to the curve: Go to the next one*/
+									lcurve = lcurveb;
+									e->SetMark();
+									a=b;
+
+									/*If b is required, we are on a new curve->break*/
+									if (b->Required()) break;
+									int kprev=k;
+									k = e->AdjVertexIndex[kprev];// next vertices
+									e = e->Adj[kprev];
+									_assert_(e);
+								}// for(;;)
+								vb = b->MeshVertexHook;
+
+								/*Number of edges in the last disretized curve*/
+								NbEdgeCurve = Max((long) (lcurve +0.5), (long) 1);
+								/*Number of internal vertices in the last disretized curve*/
+								NbNewPoints = NbEdgeCurve-1;
+								if(!kstep){
+									NbVerticesOnGeomEdge0 += NbNewPoints;
+									nbcurves++;
+								}
+								nbvend=nbv+NbNewPoints; 
+								lstep = lcurve / NbEdgeCurve; //approximately one
+							}// end of curve --
+							if (edges) { // last edges of the curves 
+								edges[nbe].v[0]=va;
+								edges[nbe].v[1]=vb;
+								edges[nbe].ReferenceNumber = e->ReferenceNumber;
+								edges[nbe].GeomEdgeHook = e;
+								edges[nbe].adj[0] = PreviousNewEdge;
+								edges[nbe].adj[1] = 0;
+								if(PreviousNewEdge) PreviousNewEdge->adj[1] = & edges[nbe];
+								nbe++;
+							}
+							else nbe += NbEdgeCurve;
+						} // end on  curve ---
+					}
+				}
+			} // for (i=0;i<nbe;i++)
+			if(!step) {
+				_assert_(!edges);
+				_assert_(!VerticesOnGeomEdge);
+
+				edges = new Edge[nbex=nbe];
+				if(NbVerticesOnGeomEdge0) VerticesOnGeomEdge = new VertexOnGeom[NbVerticesOnGeomEdge0];
+
+				// do the vertex on a geometrical vertex
+				_assert_(VerticesOnGeomEdge || NbVerticesOnGeomEdge0==0);
+				NbVerticesOnGeomEdge0 = NbVerticesOnGeomEdge;       
+			}
+			else{
+				_assert_(NbVerticesOnGeomEdge==NbVerticesOnGeomEdge0);
+			}
+		}
+
+		//Insert points inside existing triangles
+		if (verbose>4) _printf_("      -- current number of vertices = " << nbv << "\n");
+		if (verbose>3) _printf_("      Creating initial Constrained Delaunay Triangulation...\n");
+		if (verbose>3) _printf_("         Inserting boundary points\n");
+		Insert(bamgopts);
+
+		//Force the boundary
+		if (verbose>3) _printf_("         Forcing boundaries\n");
+		ForceBoundary(bamgopts);
+
+		//Extract SubDomains
+		if (verbose>3) _printf_("         Extracting subdomains\n");
+		FindSubDomain(bamgopts);
+
+		if (verbose>3) _printf_("      Inserting internal points\n");
+		NewPoints(*this,bamgopts,0) ;
+		if (verbose>4) _printf_("      -- current number of vertices = " << nbv << "\n");
+	}
+	/*}}}*/
+	void Mesh::TriangulateFromGeom1(BamgOpts* bamgopts,int KeepVertices){ /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/GeomToTriangles1)*/
+
+		/*Intermediaries*/
+		int verbose=0;
+
+		/*Get options*/
+		if(bamgopts) verbose=bamgopts->verbose;
+
+		Gh.NbRef++;// add a ref to Gh
+
+		/************************************************************************* 
+		 * method in 2 steps
+		 * 1 - compute the number of new edges to allocate
+		 * 2 - construct the edges
+		 * remark:
+		 * in this part we suppose to have a background mesh with the same geometry 
+		 * 
+		 * To construct the discretization of the new mesh we have to 
+		 * rediscretize the boundary of background Mesh 
+		 * because we have only the pointeur from the background mesh to the geometry.
+		 * We need the abcisse of the background mesh vertices on geometry
+		 * so a vertex is 
+		 * 0 on GeomVertex ;
+		 * 1 on GeomEdge + abcisse
+		 * 2 internal 
+		 *************************************************************************/
+
+		//Check that background mesh and current mesh do have the same geometry
+		_assert_(&BTh.Gh==&Gh);
+		BTh.NbRef++; // add a ref to BackGround Mesh
+
+		//Initialize new mesh
+		BTh.SetVertexFieldOn();
+		int* bcurve = new int[Gh.nbcurves]; // 
+
+		/* There are 2 ways to make the loop 
+		 * 1) on the geometry 
+		 * 2) on the background mesh
+		 *  if you do the loop on geometry, we don't have the pointeur on background,
+		 *  and if you do the loop in background we have the pointeur on geometry
+		 * so do the walk on  background */
+
+		NbVerticesOnGeomVertex=0;
+		NbVerticesOnGeomEdge=0;
+
+		/*STEP 1 copy of Required vertices*/
+
+		int i; 
+		for (i=0;i<Gh.nbv;i++) if (Gh[i].Required()) NbVerticesOnGeomVertex++;
+		printf("\n");
+		if(NbVerticesOnGeomVertex >= maxnbv){
+			delete [] bcurve;
+			_error_("too many vertices on geometry: " << NbVerticesOnGeomVertex << " >= " << maxnbv);
+		}
+
+		VerticesOnGeomVertex = new VertexOnGeom[  NbVerticesOnGeomVertex];
+		VertexOnBThVertex    = new VertexOnVertex[NbVerticesOnGeomVertex];
+
+		//At this point there is NO vertex but vertices should have been allocated by Init
+		_assert_(vertices);
+		for (i=0;i<Gh.nbv;i++){
+			if (Gh[i].Required()) {//Gh vertices Required
+				vertices[nbv]  =Gh[i];
+				vertices[nbv].i=I2(0,0);
+				Gh[i].MeshVertexHook = vertices + nbv;// save Geom -> Th
+				VerticesOnGeomVertex[nbv]= VertexOnGeom(vertices[nbv],Gh[i]);
+				nbv++;
+			}
+			else Gh[i].MeshVertexHook=0;
+		} 
+		for (i=0;i<BTh.NbVerticesOnGeomVertex;i++){ 
+			VertexOnGeom &vog=BTh.VerticesOnGeomVertex[i];
+			if (vog.IsRequiredVertex()){
+				GeomVertex* gv=vog;
+				BamgVertex *bv = vog;
+				_assert_(gv->MeshVertexHook); // use of Geom -> Th
+				VertexOnBThVertex[NbVertexOnBThVertex++]=VertexOnVertex(gv->MeshVertexHook,bv);
+				gv->MeshVertexHook->m = bv->m; // for taking the metric of the background mesh
+			}
+		}
+		_assert_(NbVertexOnBThVertex==NbVerticesOnGeomVertex); /*This might be due to MaxCornerAngle too small*/
+
+		/*STEP 2: reseed boundary edges*/
+
+		//  find the begining of the curve in BTh
+		Gh.UnMarkEdges();	
+		int bfind=0;
+		for (int i=0;i<Gh.nbcurves;i++) bcurve[i]=-1; 
+
+		/*Loop over the backgrounf mesh BTh edges*/
+		for (int iedge=0;iedge<BTh.nbe;iedge++){      
+			Edge &ei = BTh.edges[iedge];
+
+			/*Loop over the 2 vertices of the current edge*/
+			for(int je=0;je<2;je++){
+
+				/* If one of the vertex is required we are in a new curve*/
+				if (ei[je].GeomEdgeHook->IsRequiredVertex()){ 
+
+					/*Get curve number*/
+					int nc=ei.GeomEdgeHook->CurveNumber;
+
+					//_printf_("Dealing with curve number " << nc << "\n");
+					//_printf_("edge on geometry is same as GhCurve? " << (ei.GeomEdgeHook==Gh.curves[nc].FirstEdge || ei.GeomEdgeHook==Gh.curves[nc].LastEdge)?"yes":"no\n");
+					//if(ei.GeomEdgeHook==Gh.curves[nc].FirstEdge || ei.GeomEdgeHook==Gh.curves[nc].LastEdge){
+					//	_printf_("Do we have the right extremity? curve first vertex -> " << ((GeomVertex *)*ei[je].GeomEdgeHook==&(*Gh.curves[nc].FirstEdge)[Gh.curves[nc].FirstVertexIndex])?"yes":"no\n");
+					//	_printf_("Do we have the right extremity? curve last  vertex -> " << ((GeomVertex *)*ei[je].GeomEdgeHook==&(*Gh.curves[nc].LastEdge)[Gh.curves[nc].LastVertexIndex])?"yes":"no\n");
+					//}
+					//BUG FIX from original bamg
+					/*Check that we are on the same edge and right vertex (0 or 1) */
+					if(ei.GeomEdgeHook==Gh.curves[nc].FirstEdge  && (GeomVertex *)*ei[je].GeomEdgeHook==&(*Gh.curves[nc].FirstEdge)[Gh.curves[nc].FirstVertexIndex]){
+						bcurve[nc]=iedge*2+je;
+						bfind++;	
+					}
+					else if ((ei.GeomEdgeHook==Gh.curves[nc].LastEdge  && (GeomVertex *)*ei[je].GeomEdgeHook==&(*Gh.curves[nc].LastEdge)[Gh.curves[nc].LastVertexIndex]) && bcurve[nc]==-1){
+						bcurve[nc]=iedge*2+je;
+						bfind++;	
+					}
+				}
+			}
+		} 
+		if (bfind!=Gh.nbcurves){
+			delete [] bcurve;
+			_error_("problem generating number of curves (" << Gh.nbcurves << " found in the geometry but " << bfind << " curve found in the mesh)");
+		}
+
+		// method in 2 + 1 step 
+		//  0.0) compute the length and the number of vertex to do allocation
+		//  1.0) recompute the length
+		//  1.1) compute the  vertex 
+
+		long nbex=0,NbVerticesOnGeomEdgex=0;
+		for (int step=0; step <2;step++){
+
+			long NbOfNewPoints=0;
+			long NbOfNewEdge=0;
+			long iedge;
+			Gh.UnMarkEdges();	
+			double L=0;
+
+			/*Go through all geometrical curve*/
+			for (int icurve=0;icurve<Gh.nbcurves;icurve++){ 
+
+				/*Get edge and vertex (index) of background mesh on this curve*/
+				iedge=bcurve[icurve]/2;
+				int jedge=bcurve[icurve]%2;
+
+				/*Get edge of Bth with index iedge*/
+				Edge &ei = BTh.edges[iedge];
+
+				/*Initialize variables*/
+				double Lstep=0;             // step between two points   (phase==1) 
+				long NbCreatePointOnCurve=0;// Nb of new points on curve (phase==1) 
+
+				/*Do phase 0 to step*/
+				for(int phase=0;phase<=step;phase++){
+
+					/*Current curve pointer*/
+					Curve *curve= Gh.curves+icurve;
+
+					/*Get index of current curve*/
+					int icurveequi= Gh.GetId(curve);
+
+					/*For phase 0, check that we are at the begining of the curve only*/
+					if(phase==0 &&  icurveequi!=icurve)  continue;
+
+					int   k0=jedge,k1;
+					Edge* pe=  BTh.edges+iedge;
+					int   iedgeequi=bcurve[icurveequi]/2;
+					int   jedgeequi=bcurve[icurveequi]%2;
+
+					int k0equi=jedgeequi,k1equi;		  
+					Edge * peequi= BTh.edges+iedgeequi;
+					GeomEdge *ongequi = peequi->GeomEdgeHook;
+
+					double sNew=Lstep;// abscisse of the new points (phase==1) 
+					L=0;// length of the curve
+					long i=0;// index of new points on the curve
+					GeomVertex * GA0 = *(*peequi)[k0equi].GeomEdgeHook;
+					BamgVertex *A0;
+					A0 = GA0->MeshVertexHook;  // the vertex in new mesh
+					BamgVertex *A1;
+					VertexOnGeom *GA1;
+					Edge* PreviousNewEdge = 0;
+
+					// New Curve phase 
+					_assert_(A0-vertices>=0 && A0-vertices<nbv);
+					if(ongequi->Required()){
+						GeomVertex *GA1 = *(*peequi)[1-k0equi].GeomEdgeHook;
+						A1 = GA1->MeshVertexHook;  //
+					}       
+					else {
+						for(;;){
+							Edge &ee=*pe; 
+							Edge &eeequi=*peequi; 
+							k1 = 1-k0; // next vertex of the edge 
+							k1equi= 1 - k0equi;
+							_assert_(pe && ee.GeomEdgeHook);
+							ee.GeomEdgeHook->SetMark();
+							BamgVertex & v0=ee[0], & v1=ee[1];
+							R2 AB=(R2)v1-(R2)v0;
+							double L0=L,LAB;
+							LAB=LengthInterpole(v0.m,v1.m,AB);
+							L+= LAB;
+
+							if (phase){
+								// computation of the new points for the given curve
+								while ((i!=NbCreatePointOnCurve) && sNew<=L) { 
+
+									//some checks
+									_assert_(sNew>=L0);
+									_assert_(LAB);
+									_assert_(vertices && nbv<maxnbv);
+									_assert_(edges && nbe<nbex);
+									_assert_(VerticesOnGeomEdge && NbVerticesOnGeomEdge<NbVerticesOnGeomEdgex);
+
+									// new vertex on edge
+									A1=vertices+nbv++;
+									GA1=VerticesOnGeomEdge+NbVerticesOnGeomEdge;
+									Edge* e = edges + nbe++;
+									double se= (sNew-L0)/LAB;
+									if (se<0 || se>=1.000000001){
+										_error_("Problem creating point on a boundary: se=" << se << " should be in [0 1]");
+									}
+									se = abscisseInterpole(v0.m,v1.m,AB,se,1);
+									if (se<0 || se>1){
+										_error_("Problem creating point on a boundary: se=" << se << " should be in [0 1]");
+									}
+									se = k1         ? se : 1. - se;
+									se = k1==k1equi ? se : 1. - se;
+									VertexOnBThEdge[NbVerticesOnGeomEdge++] = VertexOnEdge(A1,&eeequi,se); // save 
+									ongequi=Gh.ProjectOnCurve(eeequi,se,*A1,*GA1); 
+									A1->ReferenceNumber = eeequi.ReferenceNumber;
+									e->GeomEdgeHook = ongequi;
+									e->v[0]=A0;
+									e->v[1]=A1;
+									e->ReferenceNumber = eeequi.ReferenceNumber;
+									e->adj[0]=PreviousNewEdge;
+
+									if (PreviousNewEdge) PreviousNewEdge->adj[1]=e;
+									PreviousNewEdge=e;
+									A0=A1;
+									sNew += Lstep;
+									if (++i== NbCreatePointOnCurve) break;
+								}
+							}
+
+							//some checks
+							_assert_(ee.GeomEdgeHook->CurveNumber==ei.GeomEdgeHook->CurveNumber);
+							if (ee[k1].GeomEdgeHook->IsRequiredVertex()) {
+								_assert_(eeequi[k1equi].GeomEdgeHook->IsRequiredVertex());
+								GeomVertex * GA1 = *eeequi[k1equi].GeomEdgeHook;
+								A1=GA1->MeshVertexHook;// the vertex in new mesh
+								_assert_(A1-vertices>=0 && A1-vertices<nbv);
+								break;
+							}
+							if (!ee.adj[k1]) {
+								_error_("adj edge " << BTh.GetId(ee) << ", nbe=" << nbe << ", Gh.vertices=" << Gh.vertices);
+							}
+							pe = ee.adj[k1]; // next edge
+							k0 = pe->Intersection(ee); 
+							peequi= eeequi.adj[k1equi];  // next edge
+							k0equi=peequi->Intersection(eeequi);            
+						}// for(;;) end of the curve
+					}
+
+					if (phase){ // construction of the last edge
+						Edge* e=edges + nbe++;
+						e->GeomEdgeHook  = ongequi;
+						e->v[0]=A0;
+						e->v[1]=A1;
+						e->ReferenceNumber = peequi->ReferenceNumber;
+						e->adj[0]=PreviousNewEdge;
+						e->adj[1]=0;
+						if (PreviousNewEdge) PreviousNewEdge->adj[1]=e;
+						PreviousNewEdge = e;
+
+						_assert_(i==NbCreatePointOnCurve);
+					}
+
+					if (!phase)  { // 
+						long NbSegOnCurve = Max((long)(L+0.5),(long) 1);// nb of seg
+						Lstep = L/NbSegOnCurve; 
+						NbCreatePointOnCurve = NbSegOnCurve-1;
+						NbOfNewEdge += NbSegOnCurve;
+						NbOfNewPoints += NbCreatePointOnCurve;
+					}
+				}
+			}//  end of curve loop 
+
+			//Allocate memory
+			if(step==0){
+				if(nbv+NbOfNewPoints > maxnbv) {
+					_error_("too many vertices on geometry: " << nbv+NbOfNewPoints << " >= " << maxnbv);
+				}
+				edges = new Edge[NbOfNewEdge];
+				nbex = NbOfNewEdge;
+				if(NbOfNewPoints) {
+					VerticesOnGeomEdge    = new VertexOnGeom[NbOfNewPoints];
+					NbVertexOnBThEdge     = NbOfNewPoints;
+					VertexOnBThEdge       = new  VertexOnEdge[NbOfNewPoints];
+					NbVerticesOnGeomEdgex = NbOfNewPoints;
+				}
+				NbOfNewPoints =0;
+				NbOfNewEdge = 0;
+			}
+		}
+		_assert_(nbe!=0);
+		delete [] bcurve;
+
+		//Insert points inside existing triangles
+		if (verbose>4) _printf_("      -- current number of vertices = " << nbv << "\n");
+		if (verbose>3) _printf_("      Creating initial Constrained Delaunay Triangulation...\n");
+		if (verbose>3) _printf_("         Inserting boundary points\n");
+		Insert(bamgopts);
+
+		//Force the boundary
+		if (verbose>3) _printf_("         Forcing boundaries\n");
+		ForceBoundary(bamgopts);
+
+		//Extract SubDomains
+		if (verbose>3) _printf_("         Extracting subdomains\n");
+		FindSubDomain(bamgopts);
+
+		if (verbose>3) _printf_("      Inserting internal points\n");
+		NewPoints(BTh,bamgopts,KeepVertices) ;
+		if (verbose>4) _printf_("      -- current number of vertices = " << nbv << "\n");
+	}
+	/*}}}*/
+	long  Mesh::RandomNumber(long max){/*{{{*/
+		/*  Generate a random number from 0 to max-1 using linear congruential
+		 *  random number generator*/
+
+		this->randomseed = (this->randomseed * 1366l + 150889l) % 714025l;
+		return this->randomseed / (714025l / max + 1);
+	} /*}}}*/
+	int Mesh::ForceEdge(BamgVertex &a, BamgVertex & b,AdjacentTriangle & taret)  { /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/ForceEdge)*/
+
+		int NbSwap =0;
+		if (!a.t || !b.t){ // the 2 vertex is in a mesh
+			_error_("!a.t || !b.t");
+		}
+		int k=0;
+		taret=AdjacentTriangle(0,0); // erreur 
+
+		AdjacentTriangle tta(a.t,EdgesVertexTriangle[a.IndexInTriangle][0]);
+		BamgVertex   *v1, *v2 = tta.EdgeVertex(0),*vbegin =v2;
+		// we turn around a in the  direct direction  
+
+		long long det2 = v2 ? det(*v2,a,b): -1 , det1;
+		if(v2) // normal case 
+		 det2 = det(*v2,a,b);
+		else { // no chance infini vertex try the next
+			tta= Previous(Adj(tta));
+			v2 = tta.EdgeVertex(0);
+			vbegin =v2;
+			if (!v2){
+				_error_("!v2");
+			}
+			det2 = det(*v2,a,b);
+		}
+
+		while (v2 != &b) {
+			AdjacentTriangle tc = Previous(Adj(tta));    
+			v1 = v2; 
+			v2 = tc.EdgeVertex(0);
+			det1 = det2;
+			det2 =  v2 ? det(*v2,a,b): det2; 
+
+			if((det1 < 0) && (det2 >0)) { 
+				// try to force the edge 
+				BamgVertex * va = &a, *vb = &b;
+				tc = Previous(tc);
+				if (!v1 || !v2){
+					_error_("!v1 || !v2");
+				}
+				long long detss = 0,l=0;
+				while ((this->SwapForForcingEdge(  va,  vb, tc, detss, det1,det2,NbSwap)))
+				 if(l++ > 10000000) {
+					 _error_("Loop in forcing Egde, nb de swap=" << NbSwap << ", nb of try swap (" << l << ") too big");
+				 }
+				BamgVertex *aa = tc.EdgeVertex(0), *bb = tc.EdgeVertex(1);
+				if (((aa == &a ) && (bb == &b)) ||((bb ==  &a ) && (aa == &b))){
+					tc.SetLock();
+					a.Optim(1,0);
+					b.Optim(1,0);
+					taret = tc;
+					return NbSwap;
+				}
+				else 
+				  {
+					taret = tc;
+					return -2; // error  boundary is crossing
+				  }
+			}
+			tta = tc;
+			k++;
+			if (k>=2000){
+				_error_("k>=2000");
+			}
+			if ( vbegin == v2 ) return -1;// error 
+		}
+
+		tta.SetLock();
+		taret=tta;
+		a.Optim(1,0);
+		b.Optim(1,0);
+		return NbSwap; 
+	}
+	/*}}}*/
+	int Mesh::SwapForForcingEdge(BamgVertex   *  & pva ,BamgVertex  * &   pvb ,AdjacentTriangle & tt1,long long & dets1, long long & detsa,long long & detsb, int & NbSwap) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/SwapForForcingEdge)*/
+		// l'arete ta coupe l'arete pva pvb
+		// de cas apres le swap sa coupe toujours
+		// on cherche l'arete suivante 
+		// on suppose que detsa >0 et detsb <0
+		// attention la routine echange pva et pvb 
+
+		if(tt1.Locked()) return 0; // frontiere croise 
+
+		AdjacentTriangle tt2 = Adj(tt1);
+		Triangle *t1=tt1,*t2=tt2;// les 2 triangles adjacent
+		short a1=tt1,a2=tt2;// les 2 numero de l arete dans les 2 triangles
+		if ( a1<0 || a1>=3 ){
+			_error_("a1<0 || a1>=3");
+		}
+
+		BamgVertex & sa= (* t1)[VerticesOfTriangularEdge[a1][0]];
+		BamgVertex & s1= (*t1)[OppositeVertex[a1]];
+		BamgVertex & s2= (*t2)[OppositeVertex[a2]];
+
+		long long dets2 = det(*pva,*pvb,s2);
+		long long det1=t1->det , det2=t2->det ;
+		long long detT = det1+det2;
+		if ((det1<=0 ) || (det2<=0)){
+			_error_("(det1<=0 ) || (det2<=0)");
+		}
+		if ( (detsa>=0) || (detsb<=0) ){ // [a,b] cut infinite line va,bb
+			_error_("(detsa>=0) || (detsb<=0)");
+		}
+		long long ndet1 = bamg::det(s1,sa,s2);
+		long long ndet2 = detT - ndet1;
+
+		int ToSwap =0; //pas de swap
+		if ((ndet1 >0) && (ndet2 >0)) 
+		  { // on peut swaper  
+			if ((dets1 <=0 && dets2 <=0) || (dets2 >=0 && detsb >=0))
+			 ToSwap =1; 
+			else // swap alleatoire 
+			 if (this->RandomNumber(1)) 
+			  ToSwap =2; 
+		  }
+		if (ToSwap) NbSwap++,
+		 bamg::swap(t1,a1,t2,a2,&s1,&s2,ndet1,ndet2);
+
+		int ret=1;
+
+		if (dets2 < 0) {// haut
+			dets1 = ToSwap ? dets1 : detsa ;
+			detsa = dets2; 
+			tt1 =  Previous(tt2) ;}
+		else if (dets2 > 0){// bas 
+			dets1 = ToSwap ? dets1 : detsb ;
+			detsb = dets2;
+			//xxxx tt1 = ToSwap ? tt1 : Next(tt2);
+			if(!ToSwap) tt1 =  Next(tt2);
+		}
+		else { // changement de direction 
+			ret = -1;
+			Exchange(pva,pvb);
+			Exchange(detsa,detsb);
+			Exchange(dets1,dets2);
+			Exchange(tt1,tt2);
+			dets1=-dets1;
+			dets2=-dets2;
+			detsa=-detsa;
+			detsb=-detsb;
+
+			if(ToSwap){
+				if (dets2 < 0) {// haut
+					dets1 = (ToSwap ? dets1 : detsa) ;
+					detsa = dets2; 
+					tt1 =  Previous(tt2) ;}
+				else if(dets2 > 0){// bas 
+					dets1 = (ToSwap ? dets1 : detsb) ;
+					detsb =  dets2;
+					if(!ToSwap) tt1 =  Next(tt2);
+				}
+				else {// on a fin ???
+					tt1 = Next(tt2);
+					ret =0;}
+			}
+
+		}
+		return ret;
+	}
+	/*}}}*/
+
+	/*Intermediary*/
+	AdjacentTriangle CloseBoundaryEdge(I2 A,Triangle *t, double &a,double &b) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/CloseBoundaryEdge)*/
+
+		int k=(*t)(0) ?  ((  (*t)(1) ? ( (*t)(2) ? -1 : 2) : 1  )) : 0;
+		int dir=0;
+		if (k<0){
+			_error_("k<0");
+		}
+		int kkk=0;  
+		long long IJ_IA,IJ_AJ;
+		AdjacentTriangle edge(t,OppositeEdge[k]);          
+		for (;;edge = dir >0 ? Next(Adj(Next(edge))) : Previous(Adj(Previous(edge)))) {  
+			kkk++;
+			if (kkk>=1000){
+				_error_("kkk>=1000");
+			}
+			BamgVertex  &vI =  *edge.EdgeVertex(0);
+			BamgVertex  &vJ =  *edge.EdgeVertex(1);
+			I2 I=vI, J=vJ, IJ= J-I;
+			IJ_IA = (IJ ,(A-I));
+			if (IJ_IA<0) {
+				if (dir>0) {a=1;b=0;return edge;}// change of signe => I
+				else {dir=-1;
+					continue;}};// go in direction i 
+					IJ_AJ = (IJ ,(J-A));
+					if (IJ_AJ<0) {
+						if(dir<0)  {a=0;b=1;return edge;}            
+						else {dir = 1;
+							continue;}}// go in direction j
+							double IJ2 = IJ_IA + IJ_AJ;
+							if (IJ2==0){
+								_error_("IJ2==0");
+							}
+							a= IJ_AJ/IJ2;
+							b= IJ_IA/IJ2;
+							return edge;
+		} 
+	}
+	/*}}}*/
+	void  swap(Triangle *t1,short a1, Triangle *t2,short a2, BamgVertex *s1,BamgVertex *s2,long long det1,long long det2){ /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/swap)*/
+		// --------------------------------------------------------------
+		// short a2=aa[a];// les 2 numero de l arete dans les 2 triangles
+		//                               
+		//               sb                     sb    
+		//             / | \                   /   \                      !
+		//         as1/  |  \                 /a2   \                     !
+		//           /   |   \               /    t2 \                    !
+		//       s1 /t1  | t2 \s2  -->   s1 /___as2___\s2                 !
+		//          \  a1|a2  /             \   as1   /  
+		//           \   |   /               \ t1    /   
+		//            \  |  / as2             \   a1/    
+		//             \ | /                   \   /     
+		//              sa                       sa   
+		//  -------------------------------------------------------------
+		int as1 = NextEdge[a1];
+		int as2 = NextEdge[a2];
+		int ap1 = PreviousEdge[a1];
+		int ap2 = PreviousEdge[a2];
+		(*t1)(VerticesOfTriangularEdge[a1][1]) = s2 ; // avant sb
+		(*t2)(VerticesOfTriangularEdge[a2][1]) = s1  ; // avant sa
+		// mise a jour des 2 adjacences externes 
+		AdjacentTriangle taas1 = t1->Adj(as1),
+							  taas2 = t2->Adj(as2),
+							  tas1(t1,as1), tas2(t2,as2),
+							  ta1(t1,a1),ta2(t2,a2);
+		// externe haut gauche
+		taas1.SetAdj2(ta2, taas1.GetAllFlag_UnSwap());
+		// externe bas droite
+		taas2.SetAdj2(ta1, taas2.GetAllFlag_UnSwap());
+		// remove the Mark  UnMarkSwap 
+		t1->SetUnMarkUnSwap(ap1);
+		t2->SetUnMarkUnSwap(ap2);
+		// interne 
+		tas1.SetAdj2(tas2);
+
+		t1->det = det1;
+		t2->det = det2;
+
+		t1->SetSingleVertexToTriangleConnectivity();
+		t2->SetSingleVertexToTriangleConnectivity();
+	} // end swap 
+	/*}}}*/
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Mesh.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Mesh.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Mesh.h	(revision 27955)
@@ -0,0 +1,171 @@
+#ifndef _MESH_H_
+#define _MESH_H_
+
+#include "./include.h"
+#include "./BamgOpts.h"
+#include "./BamgMesh.h"
+#include "./BamgGeom.h"
+#include "./Triangle.h"
+#include "./VertexOnGeom.h"
+#include "./VertexOnVertex.h"
+#include "./VertexOnEdge.h"
+#include "./ListofIntersectionTriangles.h"
+
+namespace bamg {
+
+	class Geometry;
+	class CrackedEdge;
+	class BamgQuadtree;
+	class SubDomain;
+
+	class Mesh {
+
+		public:
+
+			Geometry                    & Gh;                    // Geometry
+			Mesh                        & BTh;                   // Background Mesh Bth== *this =>no background
+			BamgVertex                   *vertices;
+			Triangle                     *triangles;
+			Edge                         *edges;
+			BamgQuadtree                 *quadtree;
+			BamgVertex                  **orderedvertices;
+			SubDomain                    *subdomains;
+			long                          NbRef;                 // counter of ref on the this class if 0 we can delete
+			long                          maxnbv,maxnbt;         // nombre max de sommets , de triangles
+			long                          nbv,nbt,nbe;           // nb of vertices, of triangles and edges
+			long                          nbsubdomains;
+			long                          nbtout;                // Nb of oudeside triangle
+
+			R2                            pmin,pmax;             // extrema
+			double                        coefIcoor;             // coef to integer
+			ListofIntersectionTriangles   lIntTria;
+			long									randomseed;            //used for random number generation
+
+			long                          NbVerticesOnGeomVertex;
+			VertexOnGeom                 *VerticesOnGeomVertex;
+			long                          NbVerticesOnGeomEdge;
+			VertexOnGeom                 *VerticesOnGeomEdge;
+			long                          NbVertexOnBThVertex;
+			VertexOnVertex               *VertexOnBThVertex;
+			long                          NbVertexOnBThEdge;
+			VertexOnEdge                 *VertexOnBThEdge;
+			long                          NbCrackedVertices;
+			long                         *CrackedVertices;
+			long                          NbCrackedEdges;
+			CrackedEdge                  *CrackedEdges;
+
+			//Constructors/Destructors
+			Mesh(BamgGeom* bamggeom,BamgMesh* bamgmesh,BamgOpts* bamgopts);
+			Mesh(int* index,double* x,double* y,int nods,int nels,BamgOpts* bamgopts);/*MeshConvert*/
+			Mesh(double* x,double* y,int nods,BamgOpts* bamgopts); /*BamgTriangulate*/
+			Mesh(Mesh &,Geometry * pGh=0,Mesh* pBTh=0,long maxnbv_in=0 ); //copy operator
+			Mesh(const Mesh &,const int *flag,const int *bb,BamgOpts* bamgopts); // truncature
+			Mesh(long maxnbv,Mesh & BT,BamgOpts* bamgopts,int keepBackVertices=1);
+			Mesh(long maxnbv,Geometry & G,BamgOpts* bamgopts);
+			~Mesh(); 
+
+			//Operators
+			const BamgVertex &operator[](long i) const { return vertices[i];  };
+			BamgVertex       &operator[](long i) { return vertices[i];        };
+			const Triangle   &operator()(long i) const { return triangles[i]; };
+			Triangle         &operator()(long  i) { return triangles[i];             };
+
+			//Methods
+			void SetIntCoor(const char * from =0);
+			double MinimalHmin();
+			double MaximalHmax();
+			I2 R2ToI2(const R2 & P) const;
+			R2 I2ToR2(const I2 & P) const;
+			void AddVertex(BamgVertex & s,Triangle * t,long long *  =0) ;
+			void Insert(BamgOpts* bamgopts);
+			void Echo(void);
+			void ForceBoundary(BamgOpts* bamgopts);
+			void FindSubDomain(BamgOpts* bamgopts,int OutSide=0);
+			long TriangleReferenceList(long*) const;
+			void TriangleIntNumbering(long* renumbering);
+			void CrackMesh(BamgOpts* bamgopts);
+			void SmoothMetric(BamgOpts* bamgopts,double raisonmax) ;
+			void BoundAnisotropy(BamgOpts* bamgopts,double anisomax,double hminaniso= 1e-100) ;
+			Edge** MakeGeomEdgeToEdge();
+			long SplitInternalEdgeWithBorderVertices();
+			void MakeBamgQuadtree();
+			void MaxSubDivision(BamgOpts* bamgopts,double maxsubdiv);
+			void NewPoints(Mesh &,BamgOpts* bamgopts,int KeepVertices=1);
+			long InsertNewPoints(long nbvold,long & NbTSwap,BamgOpts* bamgopts); 
+			void TrianglesRenumberBySubDomain(bool justcompress=false);
+			void SmoothingVertex(BamgOpts* bamgopts,int =3,double=0.3);
+			Metric MetricAt (const R2 &);
+			GeomEdge* ProjectOnCurve( Edge & AB, BamgVertex &  A, BamgVertex & B,double theta, BamgVertex & R,VertexOnEdge & BR,VertexOnGeom & GR);
+			long GetId(const Triangle & t) const;
+			long GetId(const Triangle * t) const;
+			long GetId(const BamgVertex & t) const;
+			long GetId(const BamgVertex * t) const;
+			long GetId(const Edge & t) const;
+			long GetId(const Edge * t) const;
+			BamgVertex* NearestVertex(int i,int j) ;
+			Triangle* TriangleFindFromCoord(const I2 & ,long long [3],Triangle *tstart=0);
+			void ReadMesh(int* index,double* x,double* y,int nods,int nels,BamgOpts* bamgopts);
+			void ReadMesh(BamgMesh* bamgmesh, BamgOpts* bamgopts);
+			void WriteMesh(BamgMesh* bamgmesh,BamgOpts* bamgopts);
+			void ReadMetric(const BamgOpts* bamgopts);
+			void WriteMetric(BamgOpts* bamgopts);
+			void WriteIndex(int** pindex,int* pnels);
+			void AddMetric(BamgOpts* bamgopts);
+			void BuildMetric0(BamgOpts* bamgopts);
+			void BuildMetric1(BamgOpts* bamgopts);
+			void BuildGeometryFromMesh(BamgOpts* bamgopts=NULL);
+			long RandomNumber(long max);
+			void ReconstructExistingMesh(BamgOpts* bamgopts);
+
+			//Inline methods
+			inline  void CreateSingleVertexToTriangleConnectivity(){
+				for (int i=0;i<nbv;i++) vertices[i].IndexInTriangle=0, vertices[i].t=NULL;
+				for (int i=0;i<nbt;i++) triangles[i].SetSingleVertexToTriangleConnectivity();
+			}
+			inline  void  UnMarkUnSwapTriangle(){
+				for (int i=0;i<nbt;i++)
+				 for(int j=0;j<3;j++)
+				  triangles[i].SetUnMarkUnSwap(j);
+			  }
+			inline  void  SetVertexFieldOn(){
+				for (int i=0;i<nbv;i++)                    vertices[i].GeomEdgeHook=NULL;
+				for (int j=0;j<NbVerticesOnGeomVertex;j++) VerticesOnGeomVertex[j].SetOn();
+				for (int k=0;k<NbVerticesOnGeomEdge;k++ )  VerticesOnGeomEdge[k].SetOn();
+			}	       
+			inline  void   SetVertexFieldOnBTh(){
+				for (int i=0;i<nbv;i++)                 vertices[i].GeomEdgeHook=NULL;
+				for (int j=0;j<NbVertexOnBThVertex;j++) VertexOnBThVertex[j].SetOnBTh();
+				for (int k=0;k<NbVertexOnBThEdge;k++ )  VertexOnBThEdge[k].SetOnBTh();
+			}
+
+		private:
+			void TriangulateFromGeom1(BamgOpts* bamgopts,int KeepVertices=1);// the real constructor mesh adaption
+			void TriangulateFromGeom0(BamgOpts* bamgopts);// the real constructor mesh generator
+			void Triangulate(double* x,double* y,int nods,BamgOpts* bamgopts);
+			void Init(long);
+			int ForceEdge(BamgVertex &a, BamgVertex & b,AdjacentTriangle & taret) ;
+			int SwapForForcingEdge(BamgVertex   *  & pva ,BamgVertex  * &   pvb ,
+						AdjacentTriangle & tt1,long long & dets1,
+						long long & detsa,long long & detsb, int & nbswap);
+	};
+
+	/*Intermediary*/
+	AdjacentTriangle CloseBoundaryEdge(I2 ,Triangle *, double &,double &) ;
+	void  swap(Triangle *t1,short a1,
+				Triangle *t2,short a2,
+				BamgVertex *s1,BamgVertex *s2,long long det1,long long det2);
+
+	inline AdjacentTriangle Previous(const AdjacentTriangle & ta){
+		return AdjacentTriangle(ta.t,PreviousEdge[ta.a]);
+	}
+	inline AdjacentTriangle Next(const AdjacentTriangle & ta){
+		return AdjacentTriangle(ta.t,NextEdge[ta.a]);
+	}
+	inline  AdjacentTriangle Adj(const AdjacentTriangle & a){
+		return  a.Adj();
+	}
+	inline void Adj(GeomEdge * & on,int &i){
+		int j=i;i=on->AdjVertexIndex[i];on=on->Adj[j];
+	}
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Metric.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Metric.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Metric.cpp	(revision 27955)
@@ -0,0 +1,369 @@
+#include <cstdio>
+#include <string.h>
+#include <cmath>
+
+#include "Metric.h"
+#include "../shared/shared.h"
+
+using namespace std;
+
+namespace bamg {
+
+	SaveMetricInterpole  LastMetricInterpole;
+
+	/*Constructor/Destructor*/
+	Metric::Metric(double a){/*{{{*/
+
+		/*Isotropic metric for a length of a as unit*/
+		this->a11 = 1./(a*a);
+		this->a21 = 0.;
+		this->a22 = 1./(a*a);
+
+	}/*}}}*/
+	Metric::Metric(double a11_in,double a21_in,double a22_in){/*{{{*/
+
+		this->a11 = a11_in;
+		this->a21 = a21_in;
+		this->a22 = a22_in;
+
+	}/*}}}*/
+	Metric::Metric(const double  a[3],const Metric m0,const Metric m1,const Metric m2 ){/*{{{*/
+
+		/*Create metric using 3 inputs*/
+		Metric mab(a[0]*m0.a11 + a[1]*m1.a11 + a[2]*m2.a11,
+					a[0]*m0.a21 + a[1]*m1.a21 + a[2]*m2.a21,
+					a[0]*m0.a22 + a[1]*m1.a22 + a[2]*m2.a22);
+
+		/*Convert to eigen metric*/
+		EigenMetric vab(mab);
+		double v1x = + vab.vx;
+		double v1y = + vab.vy;
+		double v2x = - vab.vy;
+		double v2y = + vab.vx;
+
+		double h1=a[0] / m0.Length(v1x,v1y) + a[1] / m1.Length(v1x,v1y) + a[2] / m2.Length(v1x,v1y);
+		double h2=a[0] / m0.Length(v2x,v2y) + a[1] / m1.Length(v2x,v2y) + a[2] / m2.Length(v2x,v2y);
+
+		vab.lambda1 =  1. / (h1*h1);
+		vab.lambda2 =  1. / (h2*h2);
+
+		/*Build metric from vab*/
+		double v00=vab.vx*vab.vx;
+		double v11=vab.vy*vab.vy;
+		double v01=vab.vx*vab.vy;
+		this->a11=v00*vab.lambda1+v11*vab.lambda2;
+		this->a21=v01*(vab.lambda1-vab.lambda2);
+		this->a22=v00*vab.lambda2+v11*vab.lambda1;
+
+	} /*}}}*/
+	Metric::Metric(double  a,const Metric ma,double  b,const Metric mb) { /*{{{*/
+
+		/*Compute metric (linear combination of ma and mb)*/
+		Metric mab(a*ma.a11+b*mb.a11,a*ma.a21+b*mb.a21,a*ma.a22+b*mb.a22);
+
+		/*Get Eigen values and vectors*/
+		EigenMetric vab(mab);
+		double v1x = + vab.vx;
+		double v1y = + vab.vy;
+		double v2x = - vab.vy;
+		double v2y = + vab.vx;
+
+		/*Modify eigen values (a+b=1)*/
+		double h1 = a/ma.Length(v1x,v1y) + b/mb.Length(v1x,v1y);
+		double h2 = a/ma.Length(v2x,v2y) + b/mb.Length(v2x,v2y);
+		vab.lambda1 =  1./(h1*h1);
+		vab.lambda2 =  1./(h2*h2);
+
+		/*Build metric from vab*/
+		double v00=vab.vx*vab.vx;
+		double v11=vab.vy*vab.vy;
+		double v01=vab.vx*vab.vy;
+		this->a11=v00*vab.lambda1+v11*vab.lambda2;
+		this->a21=v01*(vab.lambda1-vab.lambda2);
+		this->a22=v00*vab.lambda2+v11*vab.lambda1;
+	}
+	/*}}}*/
+
+	/*Methods*/
+	double Metric::det() const {/*{{{*/
+		return a11*a22-a21*a21;
+	}  /*}}}*/
+	void Metric::Echo(void){/*{{{*/
+
+		_printf_("Metric:\n");
+		_printf_("   [a11 a21 a22]: [" << a11 << " " << a21 << " " << a22 << "]\n");
+
+		return;
+	}
+	/*}}}*/
+	int Metric::IntersectWith(const Metric& M2) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/IntersectWith)*/
+
+		/*Get a new metric from an existing metric (M1=this)
+		 * and a new metric given in input M2 using a 
+		 * Simultaneous Matrix Reduction:
+		 * If M1 and M2 are 2 metrics, we must build N=M1^-1 M2 (Alauzet2003 p16) 
+		 * the eigen vectors of N form a matrix P
+		 * The new metric M = M1 inter M2 is then given by:
+		 *
+		 *      -T [ max(lambda1, mu1)          0         ]  -1				 
+		 * M = P   [                                      ] P		 
+		 *         [        0            max(lambda2, mu2)] 
+		 *
+		 * where lambdai and mui can be computed using Rayleigh formula: 
+		 *    lambdai = vi' M1 vi
+		 * with vi eigen vectors of N (columns of P)
+		 */
+
+		int         change=0;
+		Metric &M1=*this;
+		D2xD2       P;
+
+		//Get P, eigen vectors of N=inv(M1) M2
+		SimultaneousMatrixReduction(*this,M2,P);
+
+		//extract the eigen vectors of P (columns)
+		R2 v1(P.x.x,P.y.x);
+		R2 v2(P.x.y,P.y.y);
+
+		//compute lambdai mui
+		double lambda1=M1(v1,v1);
+		double lambda2=M1(v2,v2);
+		double mu1=M2(v1,v1);
+		double mu2=M2(v2,v2);
+
+		//check where any change needs to be done on M1
+		if ( lambda1 < mu1 )  change=1,lambda1=mu1;
+		if ( lambda2 < mu2 )  change=1,lambda2=mu2; 
+
+		//update M1 if necessary
+		if (change) {
+			D2xD2 invP(P.inv());
+			D2xD2 D(lambda1,0,0,lambda2); 
+			D2xD2 M(invP.t()*D*invP);
+			a11=M.x.x;
+			a21=0.5*(M.x.y+M.y.x);
+			a22=M.y.y;
+		}
+		return change;
+	}
+	/*}}}*/
+	double Metric::Length(double Ax,double Ay) const{/*{{{*/
+		/*Length of A in the current metric*/
+		return sqrt(Ax*Ax*a11+2*Ax*Ay*a21+Ay*Ay*a22);
+	}
+	/*}}}*/
+
+	/*Intermediary*/
+	double LengthInterpole(const Metric& Ma,const  Metric& Mb, R2 AB) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/LengthInterpole)*/
+
+		double k=1./2.;
+		int level=0;
+		static int kkk=0;
+		static  Metric Ms1[32],Ms2[32];
+		static double lMs1[32],lMs2[32];
+		static double K[32];
+		double l=0,sss=0;
+		Ms1[level]=Ma;
+		Ms2[level]=Mb;
+		double sa =  Ma.Length(AB.x,AB.y);
+		double sb =  Mb.Length(AB.x,AB.y);
+		lMs1[level]=sa;
+		lMs2[level]=sb;
+		K[level]=k;
+		level++;
+		int i=0;
+		double * L= LastMetricInterpole.L, *S = LastMetricInterpole.S;
+		double  sstop = 0.1; // Max(0.6,(sa+sb)/5000);
+		while (level) {
+			level--;
+			Metric M1=Ms1[level];
+			Metric M2=Ms2[level];
+			k=K[level];
+			double s1=  lMs1[level];
+			double s2=  lMs2[level];
+
+			double s= (s1+s2)*k;
+			if( s > sstop   && level < 30 && i < 500-level ) {
+				Metric Mi(0.5,M1,0.5,M2);
+				double si = Mi.Length(AB.x,AB.y);
+				if( Abs((s1+s2)-(si+si)) > s1*0.001) 
+				  {
+					k=k/2;
+					// we begin by the end to walk in the correct direction from a to b
+					// due to the stack 
+					Ms1[level]=Mi;
+					Ms2[level]=M2;
+					lMs1[level]=si;
+					lMs2[level]=s2;
+					K[level]=k;
+					level++;
+					Ms1[level]=M1;
+					Ms2[level]=Mi;
+					lMs1[level]=s1;
+					lMs2[level]=si;
+					K[level]=k;
+					level++;
+				  }
+				else
+				 L[i]= l += s,S[i]=sss+=k,i++;
+			}
+			else 
+			 L[i]= l += s,S[i]=sss+=k,i++;
+		}
+		// warning for optimisation S is in [0:0.5] not in [0:1]
+		if (i>=512){
+			_error_("i>=512");
+		}
+		LastMetricInterpole.lab=l;
+		LastMetricInterpole.opt=i;
+		if (i>200 && kkk++<10) _printf_("WARNING: LengthInterpole: ( i=" << i << " l=" << l << " sss=" << sss << " ) " << sstop << "\n"); 
+		return l;
+	}
+	/*}}}*/
+	void SimultaneousMatrixReduction( Metric M1,  Metric M2, D2xD2 &V) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/ReductionSimultanee)*/
+
+		/*In this routine we must return a matrix V that is composed of the 
+		 * eigen vectors of N=inv(M1) M2.
+		 * Instead of looking at N directly, we are going to use the fact that
+		 * M1 and M2 are symmetrical, positive definite. 
+		 * The eigen values of N are given by solving
+		 *    inv(M1) M2 V = lambda V
+		 * which is equivalent to
+		 *    M2 V = lambda M1 V
+		 * and we will hence solve
+		 *    (M2 - lambda M1) V = 0
+		 */
+
+		//M1 and M2 components
+		double a11=M1.a11,a21=M1.a21,a22=M1.a22;
+		double b11=M2.a11,b21=M2.a21,b22=M2.a22;
+
+		/*To get the eigen values, we solve the following problem:
+		 *    det(M2-lambda M1) = 0
+		 *    (b11 - lambda a11)(b22-lambda a22) - (b21-lambda a21)^2
+		 * and we have the following trinome:
+		 *    a lambda^2 + b lambda + c =0
+		 * with:
+		 *    a = a11 a22 - a21 a21 (=det(M1))
+		 *    b = -a11 b22 -b11 a22 + 2 b21 a21
+		 *    c = b11 b22 - b21 b21 (=det(M2))
+		 *    */
+		const double a= a11*a22  - a21*a21;
+		const double b=-a11*b22 - b11*a22+2*b21*a21;
+		const double c=-b21*b21 + b11*b22;
+		const double bb=b*b,ac=a*c;
+		const double delta= bb-4*ac;
+
+		// first, case of a double root if:
+		//  - all the terms are very small (a??)
+		//  - or : delta is very small
+		if ( (bb + Abs(ac) < 1.0e-34 ) ||  (delta < 1.0e-6*bb) ){
+			//all vectors are eigen vectors -> choose 1,0 and 0,1
+			V= D2xD2(1,0,0,1);
+		}
+
+		//general case: two distinct roots: lambda1 and lambda2
+		else {
+
+			/*Compute eigen values*/
+			const double delta2 = sqrt(delta);
+			double lambda[2];
+			lambda[0]= (-b - delta2)/(2*a);
+			lambda[1]= (-b + delta2)/(2*a);
+
+			/*compute eigen vectors*/
+			double vp[2][2];
+			double v0,v1,v2;
+			double s0,s1;
+
+			for(int i=0;i<2;i++){
+				/*Now, one must find the eigen vectors. For that we use the 
+				 * following property of the inner product
+				 *    (Ax,b) = transp(b) Ax = transp(x) transp(A) b
+				 *           = (transp(A) b ,x)
+				 * Here we are dealing with A= M2 - lambda M1 which is symmetrical:
+				 *    for all (x,y) in R2 
+				 *       ((M2 - lambda M1)x,y)=((M2 - lambda M1)y,x)
+				 * If y is in Ker(M2 - lambda M1):
+				 *    for all x in R2
+				 *       ((M2 - lambda M1)y,x)=0
+				 * This shows that:
+				 *    Ker(M2 - lambda M1) is orthogonal to Im(M2 - lambda M1)
+				 * To find the eigen vectors, we only have to find two vectors
+				 * of the image and take their perpendicular as long as they are
+				 * not 0.
+				 * To do that, we take (1,0) and (0,1) and take the larger norm*/
+
+				//compute V = M2 - lambdai M1
+				v0 = b11 - lambda[i]*a11;
+				v1 = b21 - lambda[i]*a21;
+				v2 = b22 - lambda[i]*a22;
+
+				// compute s1=norm(V(1,0)) and s0=norm(V(0,1))
+				s0 = v0*v0 + v1*v1;
+				s1 = v1*v1 + v2*v2;
+
+				//compute vp1 = (vp1x,vp1y)
+				if(s1 < s0){
+					s0=sqrt(s0);
+					vp[0][i]=   v1/s0;
+					vp[1][i]= - v0/s0;
+				}
+				else{
+					s1=sqrt(s1);
+					vp[0][i]=   v2/s1;
+					vp[1][i]= - v1/s1;
+				}
+			}
+
+			//compute V from vp
+			V=D2xD2(vp[0][0],vp[0][1],vp[1][0],vp[1][1]);
+		}
+	}
+	/*}}}*/
+	double abscisseInterpole(const Metric& Ma,const  Metric& Mb, R2 AB,double s,int optim) { /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/abscisseInterpole)*/
+
+		if(!optim)  LengthInterpole(Ma,Mb,AB);
+		double l  = s* LastMetricInterpole.lab,r;
+		int j=LastMetricInterpole.opt-1;
+
+		double * L= LastMetricInterpole.L, *S = LastMetricInterpole.S;
+		// warning for optimisation S is the abcisse in [0:0.5]
+		// and L is le lenght 
+		if(l<=L[0]){
+			r=2*S[0]*l/L[0];
+		}
+		else if (l>=L[j]){
+			r=1;
+		}
+		else{
+			int i=0;
+			while (j-i>1){
+				int k;
+				k= (i+j)/2;
+				if(l<=L[k]){
+					j=k;// l<=L[j] 
+				}
+				else{
+					i=k; //  L[i]<l
+				}
+			};
+			if (i==j){
+				r = 2*S[i];
+			}
+			else{
+				r =  2*(S[i]*(L[j]-l)+ S[j]*(l-L[i]))/(L[j]-L[i]);
+			}
+		}
+		if (r>1 || r<0){
+			_error_("r>1 || r<0");
+		}
+		return r ;
+	}
+	/*}}}*/
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Metric.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Metric.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Metric.h	(revision 27955)
@@ -0,0 +1,135 @@
+#ifndef _METRIC_H
+#define _METRIC_H
+
+#include "./include.h"
+#include "../shared/shared.h"
+#include "R2.h"
+#include <math.h>
+
+namespace bamg {
+
+	typedef P2<double,double>    D2;
+	typedef P2xP2<double,double> D2xD2;
+
+	class Metric;
+	class EigenMetric;
+
+	class Metric{
+
+		public:
+
+			//fields
+			double a11,a21,a22;
+
+			//friends
+			friend class EigenMetric;
+
+			//functions
+			Metric():a11(0),a21(0),a22(0){};
+			Metric(const EigenMetric&);
+			Metric(double a);
+			Metric(double a,double b,double c);
+			Metric(double  a,const Metric ma,double  b,const Metric mb);
+			Metric(const double  a[3],const Metric m0,const Metric m1,const Metric m2 );
+			void        Echo();
+			double      det() const;
+			int         IntersectWith(const  Metric& M2);
+			inline void Box(double &hx,double &hy) const;
+
+			/*The following functions must remain the the header file because it is called before Metric
+			 * is compiled by other classes*/
+			R2 Orthogonal(const R2 x){ return R2(-(a21*x.x+a22*x.y),a11*x.x+a21*x.y); }
+			R2 Orthogonal(const I2 x){ return R2(-(a21*x.x+a22*x.y),a11*x.x+a21*x.y); }
+			double Length(double Ax,double Ay) const;
+
+			//operators
+			Metric operator*(double c) const {double c2=c*c;return  Metric(a11*c2,a21*c2,a22*c2);} 
+			Metric operator/(double c) const {double c2=1/(c*c);return  Metric(a11*c2,a21*c2,a22*c2);} 
+			operator D2xD2(){ return D2xD2(a11,a21,a21,a22);}
+			//double  operator()(R2 x) const { return sqrt(x.x*x.x*a11+2*x.x*x.y*a21+x.y*x.y*a22);};        // length of x in metric sqrt(<Mx,x>) FIXME: replace by Length!
+			double  operator()(R2 x,R2 y) const { return x.x*y.x*a11+(x.x*x.y+x.y*y.x)*a21+x.y*y.y*a22;};
+
+	};
+
+	class EigenMetric{
+		public:
+
+			//fields
+			double lambda1,lambda2;
+			double vx,vy;
+
+			//friends
+			friend  class Metric;
+
+			//functions
+			EigenMetric(const Metric& );
+			EigenMetric(double r1,double r2,const D2& vp1);
+			void   Echo();
+			void   Abs();
+			void   pow(double  p);
+			void   Min(double  a);
+			void   Max(double  a);
+			void   Minh(double h);
+			void   Maxh(double h);
+			double hmin()   const;
+			double hmax()   const;
+			double lmax()   const;
+			double lmin()   const;
+			double Aniso2() const;
+			inline void BoundAniso2(const double coef);
+
+			//operators
+			void operator *=(double coef){ lambda1*=coef;lambda2*=coef;}
+	};
+
+	class SaveMetricInterpole {
+		friend double LengthInterpole(const Metric& Ma,const  Metric& Mb, R2 AB);
+		friend double abscisseInterpole(const Metric& Ma ,const  Metric& Mb, R2 ,double s,int optim);
+		public:
+		int opt;
+		double lab;
+		double L[1024],S[1024];
+	};
+
+	extern SaveMetricInterpole  LastMetricInterpole; // for optimization 
+	//Functions
+	void  SimultaneousMatrixReduction( Metric M1,  Metric M2,D2xD2 &V);
+	double LengthInterpole(const Metric& Ma,const  Metric& Mb, R2 AB);
+	double abscisseInterpole(const Metric& Ma,const  Metric& Mb, R2 AB,double s,int optim=0);
+
+	//inlines
+	inline void  EigenMetric::BoundAniso2(const double coef){
+		if (coef<=1.00000000001){
+			if (lambda1 < lambda2)
+			 lambda1 = bamg::Max(lambda1,lambda2*coef);
+			else
+			 lambda2 = bamg::Max(lambda2,lambda1*coef);
+		}
+		else{  //TO BE CHECKED
+			if (lambda1 > lambda2)
+			 lambda1 = bamg::Min(lambda1,lambda2*coef);
+			else
+			 lambda2 = bamg::Min(lambda2,lambda1*coef);
+		}
+	}
+	inline Metric::Metric(const EigenMetric& M) {
+		double v00=M.vx*M.vx;
+		double v11=M.vy*M.vy;
+		double v01=M.vx*M.vy;
+		a11=v00*M.lambda1+v11*M.lambda2;
+		a21=v01*(M.lambda1-M.lambda2);
+		a22=v00*M.lambda2+v11*M.lambda1;
+	}
+	inline   void  Metric::Box(double &hx,double &hy) const {
+		double d=  a11*a22-a21*a21;
+		hx = sqrt(a22/d);
+		hy = sqrt(a11/d);
+	}
+	inline double LengthInterpole(double la,double lb) {
+		return ( Abs(la - lb) < 1.0e-6*Max3(la,lb,1.0e-20) ) ?  (la+lb)/2  : la*lb*log(la/lb)/(la-lb);
+	}
+	inline double abscisseInterpole(double la,double lb,double lab,double s){
+		return ( Abs(la - lb) <1.0e-6*Max3(la,lb,1.0e-20))  ? s : (exp(s*lab*(la-lb)/(la*lb))-1)*lb/(la-lb);
+	}
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/R2.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/R2.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/R2.h	(revision 27955)
@@ -0,0 +1,101 @@
+/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, R2.h)*/
+#ifndef _R2_H
+#define _R2_H
+
+#include <cstdio>
+#include "../shared/shared.h"
+
+namespace bamg {
+
+	template <class R,class RR> class P2{
+
+		  public:  
+
+			  //fields
+			  R x,y;
+
+			  //functions
+			  P2 () :x(0),y(0) {};
+			  P2 (R a,R b)  :x(a),y(b)  {}
+			  P2 (P2 A,P2 B) : x(B.x-A.x),y(B.y-A.y) {}
+			  void Echo() const{
+				  printf("Member of P2:\n");
+				  std::cout<<"   x: "<<x<<std::endl;
+				  std::cout<<"   y: "<<y<<std::endl;
+			  }
+			  //operators
+			  RR       operator,(const P2<R,RR> & cc) const {return  (RR) x* (RR) cc.x+(RR) y* (RR) cc.y;} //scalar product
+			  P2<R,RR> operator+(const P2<R,RR> & cc) const {return P2<R,RR>(x+cc.x,y+cc.y);}
+			  P2<R,RR> operator-(const P2<R,RR> & cc) const {return P2<R,RR>(x-cc.x,y-cc.y);}
+			  P2<R,RR> operator-()  const{return P2<R,RR>(-x,-y);}
+			  P2<R,RR> operator*(R  cc) const {return P2<R,RR>(x*cc,y*cc);}
+			  P2<R,RR> operator/(R  cc) const {return P2<R,RR>(x/cc,y/cc);}
+			  P2<R,RR> operator+=(const  P2<R,RR> & cc) {x += cc.x;y += cc.y;return *this;}
+			  P2<R,RR> operator/=(const  R r) {x /= r;y /= r;return *this;}
+			  P2<R,RR> operator*=(const  R r) {x *= r;y *= r;return *this;}
+			  P2<R,RR> operator-=(const  P2<R,RR> & cc) {x -= cc.x;y -= cc.y;return *this;}
+
+	  };
+
+	template <class R,class RR> class P2xP2{
+
+		  public:
+
+			  //fields
+			  P2<R,RR> x,y; 
+
+			  //functions
+			  P2xP2 (): x(),y()  {}
+			  P2xP2 (P2<R,RR> a,P2<R,RR> b): x(a),y(b) {}
+			  P2xP2 (P2<R,RR> a,P2<R,RR> b,P2<R,RR> c ): x(b-a),y(c-a) {}
+			  P2xP2 (R xx,R xy,R yx,R yy) :x(xx,xy),y(yx,yy) {}
+			  void Echo(){
+				  printf("Member of P2xP2:\n");
+				  printf("   x.x: %g   x.y: %g\n",x.x,x.y);
+				  printf("   y.x: %g   y.x: %g\n",y.x,y.y);
+			  }
+			  RR          det() const {return (RR) x.x* (RR) y.y - (RR) x.y * (RR) y.x;}
+			  P2xP2<R,RR> inv()  const{
+				  RR d = (*this).det(); 
+				  return P2xP2<R,RR>((R)( y.y /d) ,(R)(-x.y/d),(R)( -y.x/d) ,(R)( x.x/d) );
+			  };
+			  P2xP2<R,RR> t()  {return P2xP2<R,RR>(x.x,y.x,x.y,y.y);} //transposer 
+			  P2<R,RR>    tx() {return P2<R,RR>(x.x,y.x);} 
+			  P2<R,RR>    ty() {return P2<R,RR>(x.y,y.y);} 
+			  //Operators
+			  P2<R,RR>     operator*(const P2<R,RR>& c) const {return P2<R,RR>(x.x*c.x + x.y*c.y, y.x*c.x + y.y*c.y);}
+			  P2xP2<R,RR>  operator*(P2xP2<R,RR> c) const{
+				  return  P2xP2<R,RR>(x.x*c.x.x + x.y*c.y.x,
+							  x.x*c.x.y + x.y*c.y.y,
+							  y.x*c.x.x + y.y*c.y.x,
+							  y.x*c.x.y + y.y*c.y.y);
+			  }
+	  };  
+
+	//inline functions
+	template  <class R,class RR>  
+	  inline RR Det(const P2<R,RR> x,const P2<R,RR> y) {
+		  return (RR) x.x * (RR) y.y - (RR) x.y * (RR) y.x ;
+	  } 
+	template  <class R,class RR>  
+	  inline RR Area2 (const P2<R,RR> a,const P2<R,RR> b,const P2<R,RR> c) {
+		  return Det(b-a,c-a) ;
+	  }
+	template  <class R,class RR>  
+	  inline R Norme1 (const P2<R,RR> x) {
+		  return (Abs(x.x)+Abs(x.y)) ;
+	  } 
+	template  <class R,class RR>  
+	  inline RR Norme2_2 (const P2<R,RR> x) {
+		  return (RR)x.x*(RR)x.x + (RR)x.y*(RR)x.y ;
+	  } 
+	template  <class R,class RR>  
+	  inline RR Norme2 (const P2<R,RR> x) {
+		  return sqrt((RR)x.x*(RR)x.x + (RR)x.y*(RR)x.y) ;
+	  } 
+	template  <class R,class RR>  
+	  inline P2<R,RR> Orthogonal (const P2<R,RR> x) {
+		  return  P2<R,RR>(-x.y,x.x);
+	  } 
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/SetOfE4.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/SetOfE4.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/SetOfE4.cpp	(revision 27955)
@@ -0,0 +1,107 @@
+#include "./bamgobjects.h"
+
+using namespace std;
+namespace bamg {
+
+	/*Constructor*/
+	SetOfEdges4::SetOfEdges4(long mmx,long nnx){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, SetOfEdges4.cpp/SetOfEdges4)*/
+
+		/*Intermediary*/
+		int i;
+
+		//initialize fields
+		nx   =nnx;   //number of vertices
+		nbax =mmx;   // 3 * number of triangles
+		NbOfEdges=0;
+		head = new long [nx];
+		Edges= new IntEdge[nbax];
+
+		//initialize head (-1 everywhere)
+		i=nx;
+		while(i--) head[i]=-1;
+	}
+	/*}}}*/
+
+	/*Methods*/ 
+	long SetOfEdges4::add(long ii,long jj) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, SetOfEdges4.cpp/add)*/
+
+		/*Intermediary*/
+		int h,n;
+
+		//get n from h (usually h=ii)
+		_assert_(head);
+		n=head[h=Abs(ii)%nx];
+
+		//go through the existing edges that holds h (=ii) and check that 
+		//the edge ii jj is not already in Edge
+		while (n >= 0){
+
+			//if the edge ii jj is already in Edges, return n
+			if (ii == Edges[n].i && jj == Edges[n].j) return n;
+
+			//else go to next edge that holds ii
+			else n = Edges[n].next;
+		}
+
+		//check that nbax <=NbOfEdges
+		if (nbax <=NbOfEdges ) {
+			_error_("SetOfEdges4::add overflow: NbOfEdges=" << NbOfEdges << " > nbax=" << nbax);
+		}
+
+		//update chain
+		Edges[NbOfEdges].i=ii;
+		Edges[NbOfEdges].j=jj;
+		Edges[NbOfEdges].next= head[h];
+		head[h] = NbOfEdges;
+		return NbOfEdges ++;
+	}
+	/*}}}*/
+	long SetOfEdges4::find(long ii,long jj) { /*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, SetOfEdges4.cpp/find)*/
+
+		/*Intermediary*/
+		int n;
+
+		//check that head is not empty
+		_assert_(head);
+
+		//get n from h (usually h=ii)
+		n=head[Abs(ii)%nx];
+
+		//go through the existing edges that holds h (=ii) and return position in Edge
+		while (n >= 0){
+
+			//if the edge ii jj is already in Edges, return n
+			if (ii == Edges[n].i && jj == Edges[n].j) return n;
+
+			//else go to next edge that holds ii
+			else n = Edges[n].next;
+		}
+
+		//if we reach this point, the edge does not exist return -1
+		return -1;
+	}
+	/*}}}*/
+	long SetOfEdges4::i(long k){/*{{{*/
+		return Edges[k].i;
+	}
+	/*}}}*/
+	long SetOfEdges4::j(long k){/*{{{*/
+		return Edges[k].j;
+	}
+	/*}}}*/
+	long SetOfEdges4::nb(){/*{{{*/
+		return NbOfEdges;
+	}
+	/*}}}*/
+	long SetOfEdges4::SortAndAdd (long ii,long jj) {/*{{{*/
+		return ii <=jj ? add (ii,jj)  : add (jj,ii) ;
+	}
+	/*}}}*/
+	long SetOfEdges4::SortAndFind (long ii,long jj) {/*{{{*/
+		return ii <=jj ? find (ii,jj)  : find (jj,ii) ;
+	}
+	/*}}}*/
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/SetOfE4.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/SetOfE4.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/SetOfE4.h	(revision 27955)
@@ -0,0 +1,41 @@
+#ifndef _SetOfEdge4_h
+#define _SetOfEdge4_h
+
+namespace bamg {
+
+	class SetOfEdges4;
+
+	class IntEdge{
+		friend class SetOfEdges4;
+		public:
+		long i,j;
+		long next; 
+	};
+
+	class SetOfEdges4 {
+
+		private:
+			long nx,nbax,NbOfEdges;
+			long* head; 
+			IntEdge* Edges;
+
+		public:
+
+			// Constructors
+			SetOfEdges4(long ,long);// nb Edges mx , nb de sommet 
+			~SetOfEdges4() {delete [] head; delete [] Edges;}
+
+			//operators
+			IntEdge & operator[](long k){return  Edges[k];}
+
+			//Methods
+			long add (long ii,long jj);
+			long SortAndAdd (long ii,long jj);
+			long nb();
+			long find (long ii,long jj);
+			long SortAndFind (long ii,long jj);
+			long i(long k);
+			long j(long k);
+	};
+}
+#endif 
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/SubDomain.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/SubDomain.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/SubDomain.cpp	(revision 27955)
@@ -0,0 +1,27 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "SubDomain.h"
+#include "Mesh.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+
+	/*Methods*/
+	void SubDomain::Set(const Mesh & Th ,long i,Mesh & ThNew){/*{{{*/
+		*this = Th.subdomains[i];
+		if( head-Th.triangles<0 || head-Th.triangles>=Th.nbt){
+			_error_("head-Th.triangles<0 || head-Th.triangles>=Th.nbt");
+		}
+		head = ThNew.triangles + Th.GetId(head) ; 
+		if(edge-Th.edges<0 || edge-Th.edges>=Th.nbe){
+			_error_("edge-Th.edges<0 || edge-Th.edges>=Th.nbe");
+		}
+		edge = ThNew.edges+ Th.GetId(edge);
+	}
+	/*}}}*/
+
+} 
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/SubDomain.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/SubDomain.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/SubDomain.h	(revision 27955)
@@ -0,0 +1,26 @@
+#ifndef _SUBDOMAIN_H_
+#define _SUBDOMAIN_H_
+
+#include "./include.h"
+#include "./Edge.h"
+
+namespace bamg {
+
+	class Triangle;
+	class Mesh;
+
+	class SubDomain {
+
+		public:
+
+			Triangle *head;
+			long      ReferenceNumber;
+			int       direction;   // -1 or 1
+			Edge     *edge;        // to geometrical
+
+			//Methods
+			void Set(const Mesh &,long,Mesh &);
+	};
+
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Triangle.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Triangle.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Triangle.cpp	(revision 27955)
@@ -0,0 +1,339 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "./bamgobjects.h"
+#include "../shared/shared.h"
+#include "./det.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+	Triangle::Triangle(void){/*{{{*/
+
+	}
+	/*}}}*/
+	Triangle::Triangle(Mesh *Th,long i,long j,long k) {/*{{{*/
+		BamgVertex *v=Th->vertices;
+		long nbv = Th->nbv;
+		if (i<0 || j<0 || k<0){
+			_error_("i<0 || j<0 || k<0");
+		}
+		if (i>=nbv || j>=nbv || k>=nbv){
+			_error_("i>=nbv || j>=nbv || k>=nbv");
+		}
+		vertices[0]=v+i;
+		vertices[1]=v+j;
+		vertices[2]=v+k;
+		adj[0]=adj[1]=adj[2]=0;
+		AdjEdgeIndex[0]=AdjEdgeIndex[1]=AdjEdgeIndex[2]=0;
+		det=0;
+	}
+	/*}}}*/
+	Triangle::Triangle(BamgVertex *v0,BamgVertex *v1,BamgVertex *v2){/*{{{*/
+		vertices[0]=v0;
+		vertices[1]=v1;
+		vertices[2]=v2;
+		adj[0]=adj[1]=adj[2]=0;
+		AdjEdgeIndex[0]=AdjEdgeIndex[1]=AdjEdgeIndex[2]=0;
+		if (v0) det=0;
+		else {
+			det=-1;
+			link=NULL;};  
+	}
+	/*}}}*/
+
+	/*Methods*/
+	AdjacentTriangle Triangle::Adj(int i)  const {/*{{{*/
+		return AdjacentTriangle(adj[i],AdjEdgeIndex[i]&3);
+	};/*}}}*/
+	double Triangle::Length() const{/*{{{*/
+
+		double l;
+
+		/*Get three vertices A,B and C*/
+		R2 A=*this->vertices[0];
+		R2 B=*this->vertices[1];
+		R2 C=*this->vertices[2];
+
+		/*Compute edges*/
+		R2 e1=B-A;
+		R2 e2=C-A;
+		R2 e3=B-C;
+
+		/*Compute edge length*/
+		l=Norme2(e1);
+		l=max(l,Norme2(e2));
+		l=max(l,Norme2(e3));
+
+		return l;
+	};/*}}}*/
+	void Triangle::Echo(void){/*{{{*/
+
+		int i;
+
+		_printf_("Triangle:\n");
+		_printf_("   vertices pointer towards three vertices\n");
+		_printf_("      vertices[0] vertices[1] vertices[2] = " << vertices[0] << " " << vertices[1] << " " << vertices[2] << "\n");
+		_printf_("   adj pointer towards three adjacent triangles\n");
+		_printf_("      adj[0] adj[1] adj[2] = " << adj[0] << " " << adj[1] << " " << adj[2] << "\n");
+		_printf_("   det (integer triangle determinant) = " << det << "\n");
+		if (link){
+			_printf_("   link (pointer toward duplicate triangle)= " << link << "\n");
+		}
+		else{
+			_printf_("   color = " << color << "\n");
+		}
+
+		_printf_("\nThree vertices:\n");
+		for(i=0;i<3;i++){
+			if (vertices[i]){
+				vertices[i]->Echo();
+			}
+			else{
+				_printf_("   vertex " << i+1 << " does not exist\n");
+			}
+		}
+
+		return;
+	}
+	/*}}}*/
+	int    Triangle::GetAllflag(int a){/*{{{*/
+		return AdjEdgeIndex[a] & 1020;
+	}/*}}}*/
+	int    Triangle::Hidden(int a)const {/*{{{*/
+		return AdjEdgeIndex[a]&16;
+	} /*}}}*/
+	int    Triangle::Locked(int a)const {/*{{{*/
+		return AdjEdgeIndex[a]&4;
+	} /*}}}*/
+	short  Triangle::NuEdgeTriangleAdj(int i) const {/*{{{*/
+		/*Number of the  adjacent edge in adj tria (make sure it is between 0 and 2*/
+		return AdjEdgeIndex[i&3]&3;
+	}/*}}}*/
+	long  Triangle::Optim(short i,int koption) {/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Optim)*/
+
+		// turn around (positive direction)
+		Triangle *t=this;
+		long NbSwap =0;
+		int  k = 0;
+		int  j = OppositeEdge[i];
+		int  jp= PreviousEdge[j];
+
+		// initialize tp, jp the previous triangle & edge
+		Triangle *tp=adj[jp];
+		jp = AdjEdgeIndex[jp]&3;
+		do {
+			while (t->swap(j,koption)){
+				if (k>=20000) _error_("k>=20000");
+				NbSwap++;
+				k++;
+				t=  tp->adj[jp];      // set unchange t qnd j for previous triangles
+				j=  NextEdge[tp->AdjEdgeIndex[jp]&3];
+			}
+			// end on this  Triangle 
+			tp = t;
+			jp = NextEdge[j];
+
+			t=  tp->adj[jp];      // set unchange t qnd j for previous triangles
+			j=  NextEdge[tp->AdjEdgeIndex[jp]&3];
+
+		} while( t != this);
+		return NbSwap;
+	}
+	/*}}}*/
+	void  Triangle::Renumbering(Triangle *tb,Triangle *te, long *renu){/*{{{*/
+
+		if (link  >=tb && link  <te) link  = tb + renu[link -tb];
+		if (adj[0] >=tb && adj[0] <te) adj[0] = tb + renu[adj[0]-tb];
+		if (adj[1] >=tb && adj[1] <te) adj[1] = tb + renu[adj[1]-tb];
+		if (adj[2] >=tb && adj[2] <te) adj[2] = tb + renu[adj[2]-tb];    
+	}/*}}}*/
+	void Triangle::Renumbering(BamgVertex *vb,BamgVertex *ve, long *renu){/*{{{*/
+		if (vertices[0] >=vb && vertices[0] <ve) vertices[0] = vb + renu[vertices[0]-vb];
+		if (vertices[1] >=vb && vertices[1] <ve) vertices[1] = vb + renu[vertices[1]-vb];
+		if (vertices[2] >=vb && vertices[2] <ve) vertices[2] = vb + renu[vertices[2]-vb];    
+	}/*}}}*/
+	void Triangle::Set(const Triangle & rec,const Mesh & Th ,Mesh & ThNew){ /*{{{*/
+		*this = rec;
+		if ( vertices[0] ) vertices[0] = ThNew.vertices +  Th.GetId(vertices[0]);
+		if ( vertices[1] ) vertices[1] = ThNew.vertices +  Th.GetId(vertices[1]);
+		if ( vertices[2] ) vertices[2] = ThNew.vertices +  Th.GetId(vertices[2]);
+		if(adj[0]) adj[0] =  ThNew.triangles + Th.GetId(adj[0]);
+		if(adj[1]) adj[1] =  ThNew.triangles + Th.GetId(adj[1]);
+		if(adj[2]) adj[2] =  ThNew.triangles + Th.GetId(adj[2]);
+		if (link  >= Th.triangles && link  < Th.triangles + Th.nbt)
+		 link = ThNew.triangles + Th.GetId(link);
+	}
+	/*}}}*/
+	void Triangle::SetAdjAdj(short a){/*{{{*/
+		// Copy all the mark 
+		a &= 3;
+		Triangle *tt=adj[a];
+		AdjEdgeIndex [a] &= 55; // remove MarkUnSwap
+		short aatt = AdjEdgeIndex[a] & 3;
+		if(tt){ 
+			tt->adj[aatt]=this;
+			tt->AdjEdgeIndex[aatt]=a + (AdjEdgeIndex[a] & 60 ) ;
+		}
+	}/*}}}*/
+	void Triangle::SetAdj2(short a,Triangle *t,short aat){/*{{{*/
+		/*For current triangle:
+		 * - a is the index of the edge were the adjency is set (in [0 2])
+		 * - t is the adjacent triangle
+		 * - aat is the index of the same edge in the adjacent triangle*/
+		adj[a]=t;
+		AdjEdgeIndex[a]=aat;
+		if(t){ //if t!=NULL add adjacent triangle to t (this)
+			t->adj[aat]=this;
+			t->AdjEdgeIndex[aat]=a;
+		}
+	}/*}}}*/
+	void Triangle::SetHidden(int a){/*{{{*/
+		//Get Adjacent Triangle number a
+		Triangle* t = adj[a];
+		//if it exist
+		//C|=D -> C=(C|D) bitwise inclusive OR
+		if(t) t->AdjEdgeIndex[AdjEdgeIndex[a] & 3] |=16;
+		AdjEdgeIndex[a] |= 16;
+	}/*}}}*/
+	void Triangle::SetLocked(int a){/*{{{*/
+		//mark the edge as on Boundary
+		Triangle * t = adj[a];
+		t->AdjEdgeIndex[AdjEdgeIndex[a] & 3] |=4;
+		AdjEdgeIndex[a] |= 4;
+	}/*}}}*/
+	void Triangle::SetMarkUnSwap(int a){/*{{{*/
+		Triangle * t = adj[a];
+		t->AdjEdgeIndex[AdjEdgeIndex[a] & 3] |=8;
+		AdjEdgeIndex[a] |=8 ;
+	}/*}}}*/
+	void Triangle::SetSingleVertexToTriangleConnectivity() { /*{{{*/
+		if (vertices[0]) (vertices[0]->t=this,vertices[0]->IndexInTriangle=0);
+		if (vertices[1]) (vertices[1]->t=this,vertices[1]->IndexInTriangle=1);
+		if (vertices[2]) (vertices[2]->t=this,vertices[2]->IndexInTriangle=2);
+	}/*}}}*/
+	void Triangle::SetUnMarkUnSwap(int a){ /*{{{*/
+		Triangle * t = adj[a];
+		t->AdjEdgeIndex[AdjEdgeIndex[a] & 3] &=55; // 23 + 32 
+		AdjEdgeIndex[a] &=55 ;
+	}/*}}}*/
+	Triangle* Triangle::TriangleAdj(int i) const {/*{{{*/
+		return adj[i&3];
+	}/*}}}*/
+	int Triangle::swap(short a,int koption){/*{{{*/
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/swap)*/
+
+		if(a/4 !=0) return 0;// arete lock or MarkUnSwap
+
+		Triangle *t1=this,*t2=adj[a];// les 2 triangles adjacent
+		short a1=a,a2=AdjEdgeIndex[a];// les 2 numero de l arete dans les 2 triangles
+		if(a2/4 !=0) return 0; // arete lock or MarkUnSwap
+
+		BamgVertex  *sa=t1->vertices[VerticesOfTriangularEdge[a1][0]];
+		BamgVertex  *sb=t1->vertices[VerticesOfTriangularEdge[a1][1]];
+		BamgVertex  *s1=t1->vertices[OppositeVertex[a1]];
+		BamgVertex  *s2=t2->vertices[OppositeVertex[a2]];
+
+		long long det1=t1->det , det2=t2->det ;
+		long long detT = det1+det2;
+		long long detA = Abs(det1) + Abs(det2);
+		long long detMin = Min(det1,det2);
+
+		int OnSwap = 0;       
+		// si 2 triangle infini (bord) => detT = -2;
+		if (sa == 0) {// les deux triangles sont frontieres
+			det2=bamg::det(s2->i,sb->i,s1->i);
+			OnSwap = det2 >0;}
+		else if (sb == 0) { // les deux triangles sont frontieres
+			det1=bamg::det(s1->i,sa->i,s2->i);
+			OnSwap = det1 >0;}
+		else if(( s1 != 0) && (s2 != 0) ) {
+			det1 = bamg::det(s1->i,sa->i,s2->i);
+			det2 = detT - det1;
+			OnSwap = (Abs(det1) + Abs(det2)) < detA;
+
+			long long detMinNew=Min(det1,det2);
+			if (! OnSwap &&(detMinNew>0)) {
+				OnSwap = detMin ==0;
+				if (! OnSwap) {
+					int  kopt = koption;
+					while (1)
+					 if(kopt) {
+						 // critere de Delaunay pure isotrope
+						 long long xb1 = sb->i.x - s1->i.x,
+								  x21 = s2->i.x - s1->i.x,
+								  yb1 = sb->i.y - s1->i.y,
+								  y21 = s2->i.y - s1->i.y,
+								  xba = sb->i.x - sa->i.x, 
+								  x2a = s2->i.x - sa->i.x,
+								  yba = sb->i.y - sa->i.y,
+								  y2a = s2->i.y - sa->i.y;
+						 double
+							cosb12 =  double(xb1*x21 + yb1*y21),
+									 cosba2 =  double(xba*x2a + yba*y2a) ,
+									 sinb12 = double(det2),
+									 sinba2 = double(t2->det);
+
+						 // angle b12 > angle ba2 => cotg(angle b12) < cotg(angle ba2)
+						 OnSwap =  ((double) cosb12 * (double)  sinba2) <  ((double) cosba2 * (double) sinb12);
+						 break;
+					 }
+					 else {	
+						 // critere de Delaunay anisotrope 
+						 double som;
+						 I2 AB=(I2) *sb - (I2) *sa;
+						 I2 MAB2=((I2) *sb + (I2) *sa);
+						 R2 MAB(MAB2.x*0.5,MAB2.y*0.5);
+						 I2 A1=(I2) *s1 - (I2) *sa;
+						 I2 D = (I2) * s1 - (I2) * sb ;
+						 R2 S2(s2->i.x,s2->i.y);
+						 R2 S1(s1->i.x,s1->i.y);
+							{
+							 Metric M=s1->m;
+							 R2 ABo = M.Orthogonal(AB);
+							 R2 A1o = M.Orthogonal(A1);
+							 // (A+B)+ x ABo = (S1+B)/2+ y A1 
+							 // ABo x - A1o y =  (S1+B)/2-(A+B)/2 = (S1-B)/2 = D/2
+							 double dd = Abs(ABo.x*A1o.y)+Abs(ABo.y*A1o.x);
+							 double d = (ABo.x*A1o.y - ABo.y*A1o.x)*2; // because D/2
+							 if (Abs(d) > dd*1.e-3) {
+								 R2 C(MAB+ABo*((D.x*A1o.y - D.y*A1o.x)/d));
+								 som  = M.Length(C.x-S2.x,C.y-S2.y) / M.Length(C.x-S1.x,C.y-S1.y);
+							 } else 
+								{kopt=1;continue;}
+
+							}
+							{
+							 Metric M=s2->m;
+							 R2 ABo = M.Orthogonal(AB);
+							 R2 A1o = M.Orthogonal(A1);
+							 // (A+B)+ x ABo = (S1+B)/2+ y A1 
+							 // ABo x - A1o y =  (S1+B)/2-(A+B)/2 = (S1-B)/2 = D/2 
+							 double dd = Abs(ABo.x*A1o.y)+Abs(ABo.y*A1o.x);
+							 double d = (ABo.x*A1o.y - ABo.y*A1o.x)*2; // because D/2
+							 if(Abs(d) > dd*1.e-3) {
+								 R2 C(MAB+ABo*((D.x*A1o.y - D.y*A1o.x)/d));
+								 som += M.Length(C.x-S2.x,C.y-S2.y) / M.Length(C.x-S1.x,C.y-S1.y);
+							 } else 
+								{kopt=1;continue;}
+							}
+						 OnSwap = som < 2;
+						 break;
+					 }
+
+				} // OnSwap 
+			} // (! OnSwap &&(det1 > 0) && (det2 > 0) )
+		}
+		if( OnSwap ) 
+		 bamg::swap(t1,a1,t2,a2,s1,s2,det1,det2);
+		else {
+			t1->SetMarkUnSwap(a1);     
+		}
+		return OnSwap;
+	}
+	/*}}}*/
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Triangle.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Triangle.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/Triangle.h	(revision 27955)
@@ -0,0 +1,69 @@
+#ifndef _TRIANGLE_H_
+#define _TRIANGLE_H_
+
+#include "./include.h"
+#include "AdjacentTriangle.h"
+
+namespace bamg {
+
+	class Mesh;
+	class BamgVertex;
+	class Triangle;
+
+	class Triangle {
+
+		friend class AdjacentTriangle;
+
+		private:
+			BamgVertex *vertices[3];        // 3 vertices if t is triangle, t[i] allowed by access function, (*t)[i] if pointer
+			Triangle   *adj[3];             // 3 pointers toward the adjacent triangles
+			short       AdjEdgeIndex[3];   // edge id in the adjacent triangles. The edge number 1 is the edge number AdjEdgeIndex[1] in the Adjacent triangle 1
+
+		public: 
+			long long det; //Integer determinant (twice its area)
+			union { 
+				Triangle *link;
+				long      color;
+			};
+
+			//Constructors/Destructors
+			Triangle();
+			Triangle(Mesh *Th,long i,long j,long k);
+			Triangle(BamgVertex *v0,BamgVertex *v1,BamgVertex *v2);
+
+			//Operators
+			const BamgVertex & operator[](int i) const {return *vertices[i];};
+			BamgVertex & operator[](int i)  {return *vertices[i];};
+			const BamgVertex * operator()(int i) const {return vertices[i];};
+			BamgVertex * & operator()(int i)  {return vertices[i];};
+
+			//Methods
+			void              Echo();
+			double            Length() const;
+			int               swap(short a1,int=0);
+			long              Optim(short a,int =0);
+			int               Locked(int a)const;
+			int               Hidden(int a)const;
+			int               GetAllflag(int a);
+			short             NuEdgeTriangleAdj(int i) const;
+			AdjacentTriangle  Adj(int i) const;
+			Triangle         *TriangleAdj(int i) const;
+			void              Renumbering(Triangle   *tb,Triangle *te, long *renu);
+			void              Renumbering(BamgVertex *vb,BamgVertex *ve, long *renu);
+			void              SetAdjAdj(short a);
+			void              SetAdj2(short a,Triangle *t,short aat);
+			void              SetSingleVertexToTriangleConnectivity();
+			void              SetHidden(int a);
+			void              SetLocked(int a);
+			void              SetMarkUnSwap(int a);
+			void              SetUnMarkUnSwap(int a);
+
+			//Inline methods
+			void  Set(const Triangle &,const Mesh &,Mesh &);
+			int   In(BamgVertex *v) const { return vertices[0]==v || vertices[1]==v || vertices[2]==v ;}
+			BamgVertex* GetVertex(int i){return vertices[i];}; // FIXME: this is used to avoid BamgVertex * operator()
+
+	};
+
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/VertexOnEdge.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/VertexOnEdge.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/VertexOnEdge.cpp	(revision 27955)
@@ -0,0 +1,23 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "VertexOnEdge.h"
+#include "Mesh.h"
+
+namespace bamg {
+
+	/*Methods*/
+	void VertexOnEdge::Set(const Mesh & Th ,long i,Mesh & ThNew){/*{{{*/
+		*this = Th.VertexOnBThEdge[i];  
+		v = ThNew.vertices + Th.GetId(v);
+	}
+	/*}}}*/
+	void VertexOnEdge::SetOnBTh(){/*{{{*/
+		v->BackgroundEdgeHook=this;
+		v->IndexInTriangle=IsVertexOnEdge;  
+	}
+	/*}}}*/
+
+} 
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/VertexOnEdge.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/VertexOnEdge.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/VertexOnEdge.h	(revision 27955)
@@ -0,0 +1,35 @@
+#ifndef _VERTEXONEDGE_H_
+#define _VERTEXONEDGE_H_
+
+#include "./include.h"
+#include "./Edge.h"
+
+namespace bamg {
+
+	class Mesh;
+	class BamgVertex;
+
+	class VertexOnEdge {
+
+		public:
+			BamgVertex* v;
+			Edge*   be;
+			double abcisse;
+
+			//Constructors
+			VertexOnEdge(BamgVertex * w, Edge *bw,double s) :v(w),be(bw),abcisse(s) {};
+			VertexOnEdge(){};
+
+			//Operators
+			operator double () const { return abcisse;}
+			operator BamgVertex* () const { return v;}  
+			operator Edge* () const { return be;}  
+			BamgVertex & operator[](int i) const { return (*be)[i];}
+
+			//Methods
+			void SetOnBTh();
+			void Set(const Mesh &,long,Mesh &);  
+	};
+
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/VertexOnGeom.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/VertexOnGeom.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/VertexOnGeom.cpp	(revision 27955)
@@ -0,0 +1,63 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "VertexOnGeom.h"
+#include "Mesh.h"
+#include "Geometry.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+	VertexOnGeom::VertexOnGeom(){/*{{{*/
+		meshvertex=NULL;
+		curvilincoord=0;
+		gv=0;
+	} 
+	/*}}}*/
+	VertexOnGeom::VertexOnGeom(BamgVertex & m,GeomVertex &g){/*{{{*/
+		meshvertex=&m;
+		curvilincoord=-1;
+		gv=&g;
+	}
+	/*}}}*/
+	VertexOnGeom::VertexOnGeom(BamgVertex & m,GeomEdge &g,double s){/*{{{*/
+		meshvertex=&m;
+		curvilincoord=s;
+		ge=&g;
+	}
+	/*}}}*/
+
+	/*Methods*/
+	void VertexOnGeom::Set(const VertexOnGeom & rec,const Mesh & Th ,Mesh & ThNew){/*{{{*/
+		*this = rec;  
+		meshvertex = ThNew.vertices + Th.GetId(meshvertex);
+		if(gv){
+		 if (curvilincoord < 0 )
+		  gv = ThNew.Gh.vertices + Th.Gh.GetId(gv);
+		 else
+		  ge = ThNew.Gh.edges + Th.Gh.GetId(ge);
+		}
+
+	}
+	/*}}}*/
+	int VertexOnGeom::OnGeomVertex()const{/*{{{*/
+		return curvilincoord<0;
+	}
+	/*}}}*/
+	int VertexOnGeom::OnGeomEdge() const{/*{{{*/
+		return curvilincoord>=0;
+	}
+	/*}}}*/
+	int VertexOnGeom::IsRequiredVertex() {/*{{{*/
+		return ((curvilincoord<0 ? (gv?gv->Required():0):0 ));
+	}
+	/*}}}*/
+	void VertexOnGeom::SetOn(){/*{{{*/
+		meshvertex->GeomEdgeHook=this;
+		meshvertex->IndexInTriangle=IsVertexOnGeom;
+	}
+	/*}}}*/
+
+} 
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/VertexOnGeom.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/VertexOnGeom.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/VertexOnGeom.h	(revision 27955)
@@ -0,0 +1,45 @@
+#ifndef _VERTEXONGEOM_H_
+#define _VERTEXONGEOM_H_
+
+#include "./include.h"
+#include "./GeomVertex.h"
+
+namespace bamg {
+
+	class Mesh;
+	class BamgVertex;
+	class GeomEdge;
+
+	class VertexOnGeom{
+
+		public:
+
+			BamgVertex* meshvertex;
+			double curvilincoord;  
+			union{ 
+				GeomVertex* gv; // if curvilincoord <0; 
+				GeomEdge*   ge; // if curvilincoord in [0..1]
+			};
+
+			//Constructors/Destructors
+			VertexOnGeom();
+			VertexOnGeom(BamgVertex & m,GeomVertex &g);
+			VertexOnGeom(BamgVertex & m,GeomEdge &g,double s);
+
+			//Operators
+			operator BamgVertex*() const  {return meshvertex;}
+			operator GeomVertex * () const  {return gv;}
+			operator GeomEdge * () const  {return ge;}
+			operator const double & () const {return curvilincoord;}
+
+			//Methods
+			int  OnGeomVertex()const;
+			int  OnGeomEdge() const;
+			int  IsRequiredVertex();
+			void SetOn();
+
+			//Inline methods
+			void Set(const VertexOnGeom&,const Mesh &,Mesh &);  
+	};
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/VertexOnVertex.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/VertexOnVertex.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/VertexOnVertex.cpp	(revision 27955)
@@ -0,0 +1,30 @@
+#include <cstdio>
+#include <cstring>
+#include <cmath>
+#include <ctime>
+
+#include "VertexOnVertex.h"
+#include "Mesh.h"
+
+namespace bamg {
+
+	/*Constructors/Destructors*/
+	VertexOnVertex::VertexOnVertex() {/*{{{*/
+		v=NULL;
+		bv=NULL;
+	};/*}}}*/
+	VertexOnVertex::VertexOnVertex(BamgVertex * w,BamgVertex *bw) :v(w),bv(bw){/*{{{*/
+
+	}/*}}}*/
+
+	/*Methods*/
+	void VertexOnVertex::Set(const Mesh &Th ,long i,Mesh &ThNew) { /*{{{*/
+		*this = Th.VertexOnBThVertex[i];  
+		v     = ThNew.vertices + Th.GetId(v);
+	}
+	/*}}}*/
+	void VertexOnVertex::SetOnBTh(){/*{{{*/
+		v->BackgroundVertexHook=bv;v->IndexInTriangle=IsVertexOnVertex;
+	}/*}}}*/
+
+} 
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/VertexOnVertex.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/VertexOnVertex.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/VertexOnVertex.h	(revision 27955)
@@ -0,0 +1,27 @@
+#ifndef _VERTEXONVERTEX_H_
+#define _VERTEXONVERTEX_H_
+
+#include "./include.h"
+#include "./BamgVertex.h"
+
+namespace bamg {
+
+	class Mesh;
+
+	class VertexOnVertex {
+
+		public:
+			BamgVertex* v;
+			BamgVertex* bv;
+
+			//Constructors
+			VertexOnVertex();
+			VertexOnVertex(BamgVertex * w,BamgVertex *bw);
+
+			//Methods
+			void SetOnBTh();
+			void Set(const Mesh &,long,Mesh &);
+	};
+
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/bamgobjects.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/bamgobjects.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/bamgobjects.h	(revision 27955)
@@ -0,0 +1,32 @@
+/* \file bamgobjects.h
+ * \brief: prototype header for all bamg related objects.
+ */
+
+#ifndef BAMG_OBJECTS_H_
+#define BAMG_OBJECTS_H_
+
+/*Bamg: */
+#include "./BamgOpts.h"
+#include "./BamgGeom.h"
+#include "./BamgMesh.h"
+#include "./Metric.h"
+#include "./BamgVertex.h"
+#include "./AdjacentTriangle.h"
+#include "./Edge.h"
+#include "./GeomVertex.h"
+#include "./GeomEdge.h"
+#include "./Curve.h"
+#include "./Triangle.h"
+#include "./ListofIntersectionTriangles.h"
+#include "./GeomSubDomain.h"
+#include "./SubDomain.h"
+#include "./VertexOnGeom.h"
+#include "./VertexOnVertex.h"
+#include "./VertexOnEdge.h"
+#include "./CrackedEdge.h"
+#include "./Mesh.h"
+#include "./Geometry.h"
+#include "./BamgQuadtree.h"
+#include "./SetOfE4.h"
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/det.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/det.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/det.h	(revision 27955)
@@ -0,0 +1,15 @@
+#ifndef _BAMGDET_H_
+#define _BAMGDET_H_
+
+#include "./include.h"
+
+namespace bamg {
+
+	long long inline det(const I2 &a,const I2 & b,const I2 &c){
+		long long bax = b.x - a.x ,bay = b.y - a.y; 
+		long long cax = c.x - a.x ,cay = c.y - a.y; 
+		return  bax*cay - bay*cax;
+	}
+
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/include.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/include.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/include.h	(revision 27955)
@@ -0,0 +1,11 @@
+/*!\file: include.h
+ * \brief prototypes for include.h
+ */ 
+
+#ifndef _INCLUDE2_H_
+#define  _INCLUDE2_H_
+
+#include "./macros.h"
+#include "./typedefs.h"
+
+#endif //ifndef _INCLUDE2_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/macros.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/macros.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/macros.h	(revision 27955)
@@ -0,0 +1,23 @@
+#ifndef _BAMGMACROS_H
+#define _BAMGMACROS_H
+
+#include "./typedefs.h"
+
+namespace bamg {
+
+	const double Pi =3.141592653589793238462643383279502884197169399375105820974944592308;
+	const float  fPi=3.141592653589793238462643383279502884197169399375105820974944592308;
+	const  int   IsVertexOnGeom = 8;
+	const  int   IsVertexOnVertex = 16;
+	const  int   IsVertexOnEdge = 32;
+	static const short VerticesOfTriangularEdge[3][2] = {{1,2},{2,0},{0,1}};
+	static const short EdgesVertexTriangle[3][2] = {{1,2},{2,0},{0,1}};
+	static const short OppositeVertex[3] = {0,1,2};
+	static const short OppositeEdge[3] =  {0,1,2};
+	static const short NextEdge[3] = {1,2,0};
+	static const short PreviousEdge[3] = {2,0,1};
+	static const short NextVertex[3] = {1,2,0};
+	static const short PreviousVertex[3] = {2,0,1};
+}
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/bamg/typedefs.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/bamg/typedefs.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/bamg/typedefs.h	(revision 27955)
@@ -0,0 +1,15 @@
+#ifndef _BAMGTYPEDEFS_H
+#define _BAMGTYPEDEFS_H
+
+#include "./R2.h"
+
+namespace bamg {
+
+	/*Integer coordinates types*/
+
+	/*I2 and R2*/
+	typedef P2<int,long long>  I2;
+	typedef P2<double,double>  R2;
+}
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/AmrBamg.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/AmrBamg.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/AmrBamg.cpp	(revision 27955)
@@ -0,0 +1,217 @@
+/*!\file AmrBamg.cpp
+ * \brief: implementation of the adaptive mesh refinement tool based on bamg
+ */
+
+#ifdef HAVE_CONFIG_H
+    #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./AmrBamg.h"
+#include "../bamg/bamgobjects.h"
+#include "../modules/Bamgx/Bamgx.h"
+
+using namespace bamg;
+using namespace std;
+
+/*Constructor, copy, clean up and destructor*/
+AmrBamg::AmrBamg(){/*{{{*/
+
+	/*These attributes MUST be setup by FemModel*/
+	this->fieldenum								= -1;
+	this->keepmetric								= -1;
+	this->groundingline_resolution			= -1;
+	this->groundingline_distance				= -1;
+	this->icefront_resolution					= -1;
+	this->icefront_distance						= -1;
+	this->thicknesserror_resolution			= -1;
+	this->thicknesserror_threshold			= -1;
+	this->thicknesserror_groupthreshold 	= -1;
+	this->thicknesserror_maximum				= -1;
+	this->deviatoricerror_resolution			= -1;
+	this->deviatoricerror_threshold			= -1;
+	this->deviatoricerror_groupthreshold	= -1;
+	this->deviatoricerror_maximum				= -1;
+
+	/*Geometry and mesh as NULL*/
+	this->geometry									= NULL;
+	this->fathermesh								= NULL;
+	this->previousmesh							= NULL;
+	this->elementslist							= NULL;
+	this->x											= NULL;
+	this->y											= NULL;
+	this->numberofvertices						= -1;
+	this->numberofelements						= -1;
+
+	/*Only initialize options for now (same as bamg.m)*/
+	this->options									= new BamgOpts();
+	this->options->anisomax						= 10.e30;
+	this->options->cutoff						= 10.e-5;
+	this->options->coeff							= 1;
+	this->options->errg							= 0.1;
+	this->options->gradation					= -1; //MUST be setup by the FemModel 
+	this->options->Hessiantype					= 0;
+	this->options->maxnbv						= 1e6;
+	this->options->maxsubdiv					= 10;
+	this->options->Metrictype					= 0;
+	this->options->nbjacobi						= 1;
+	this->options->nbsmooth						= 3;
+	this->options->omega							= 1.8;
+	this->options->power							= 1;
+	this->options->verbose						= 0;
+	this->options->Crack							= 0;
+	this->options->KeepVertices				= 1; /*!!!!! VERY IMPORTANT !!!!! This avoid numerical errors when remeshing*/
+	this->options->splitcorners				= 1;
+	this->options->hmin							= -1;/*MUST be setup by the FemModel*/
+	this->options->hmax							= -1;/*MUST be setup by the FemModel*/
+	this->options->err							= xNew<IssmDouble>(1);
+	this->options->err[0]						= -1;/*MUST be setup by the FemModel*/
+	this->options->errSize[0]					= 1;
+	this->options->errSize[1]					= 1;
+}
+/*}}}*/
+AmrBamg::~AmrBamg(){/*{{{*/
+
+	if(this->geometry) delete this->geometry;
+	if(this->fathermesh) delete this->fathermesh;
+	if(this->previousmesh) delete this->previousmesh;
+	if(this->options) delete this->options;
+	if(this->x) xDelete<IssmDouble>(this->x);
+	if(this->y) xDelete<IssmDouble>(this->y);
+	if(this->elementslist) xDelete<int>(this->elementslist);
+}
+/*}}}*/
+
+/*Methods*/
+void AmrBamg::SetMesh(int** elementslist_in,IssmDouble** x_in,IssmDouble** y_in,int* numberofvertices_in,int* numberofelements_in){/*{{{*/
+
+	/*Delete previous mesh and keep the entire mesh*/
+	if(this->elementslist) xDelete<int>(this->elementslist);
+	if(this->x) xDelete<IssmDouble>(this->x);
+	if(this->y) xDelete<IssmDouble>(this->y);
+
+	this->elementslist		= *elementslist_in;
+	this->x						= *x_in;
+	this->y						= *y_in;
+	this->numberofvertices	= *numberofvertices_in;
+	this->numberofelements	= *numberofelements_in;
+}/*}}}*/
+void AmrBamg::GetMesh(int** elementslist_out,IssmDouble** x_out,IssmDouble** y_out,int* numberofvertices_out,int* numberofelements_out){/*{{{*/
+
+	/*Get the entire mesh*/
+	*elementslist_out		= this->elementslist;
+	*x_out					= this->x;
+	*y_out					= this->y;
+	*numberofvertices_out= this->numberofvertices;
+	*numberofelements_out= this->numberofelements;
+}/*}}}*/
+void AmrBamg::Initialize(){/*{{{*/
+
+	/*Check options*/
+	_assert_(this->options);
+	this->options->Check();
+
+	/*Read father mesh and create geometry*/
+	Mesh* Th=new Mesh(this->elementslist,this->x,this->y,this->numberofvertices,this->numberofelements,this->options);
+
+	/*Write geometry*/
+	this->geometry = new BamgGeom();
+	Th->Gh.WriteGeometry(this->geometry,this->options);
+
+	/*Write father mesh*/
+	this->fathermesh = new BamgMesh();
+	Th->WriteMesh(this->fathermesh,this->options);
+
+	/*Cleanup and return*/
+	delete Th;
+}/*}}}*/
+void AmrBamg::ExecuteRefinementBamg(IssmDouble* field,IssmDouble* hmaxVertices,int** pdatalist,IssmDouble** pxylist,int** pelementslist){/*{{{*/
+
+	/*Intermediaries*/
+	BamgGeom* geomout=new BamgGeom();
+	BamgMesh* meshout=new BamgMesh();
+
+	/*Some checks*/
+	_assert_(this->geometry);
+	_assert_(this->options);
+	_assert_(this->fathermesh);
+	_assert_(field || hmaxVertices);//at least one is necessary
+
+	/*Prepare field for metric*/
+	this->options->field			 = field;
+	this->options->hmaxVertices = hmaxVertices;
+
+	/*remesh*/
+	if(this->previousmesh){
+		this->options->fieldSize[0]			= this->previousmesh->VerticesSize[0];
+		this->options->fieldSize[1]			= 1;
+		this->options->hmaxVerticesSize[0]	= this->previousmesh->VerticesSize[0];
+		this->options->hmaxVerticesSize[1]	= 1;
+		Bamgx(meshout,geomout,this->previousmesh,this->geometry,this->options);
+	}
+	else{
+		this->options->fieldSize[0]			= this->fathermesh->VerticesSize[0];
+		this->options->fieldSize[1]			= 1;
+		this->options->hmaxVerticesSize[0]	= this->fathermesh->VerticesSize[0];
+		this->options->hmaxVerticesSize[1]	= 1;
+		Bamgx(meshout,geomout,this->fathermesh,this->geometry,this->options);
+	}
+
+	/*remove field and hmaxVertices for memory management (FemModel is taking care of deleting it)*/
+	this->options->field = NULL;
+	this->options->fieldSize[0] = 0;
+	this->options->fieldSize[1] = 0;
+	this->options->hmaxVertices = NULL;
+	this->options->hmaxVerticesSize[0] = 0;
+	this->options->hmaxVerticesSize[1] = 0;
+
+	/*verify if the metric will be reseted or not*/
+	if(this->keepmetric==0){
+		if(this->options->metric) xDelete<IssmDouble>(this->options->metric);
+		this->options->metricSize[0] = 0;
+		this->options->metricSize[1] = 0;
+	}
+
+	/*Change previous mesh*/
+	if(this->previousmesh) delete this->previousmesh;
+	this->previousmesh = meshout;
+
+	/*Prepare output*/
+	int nbv				= meshout->VerticesSize[0];
+	int nbt				= meshout->TrianglesSize[0];
+	int *datalist		= xNew<int>(2);
+	IssmDouble *xylist= xNew<IssmDouble>(nbv*2);
+	int* elementslist = xNew<int>(nbt*3);
+
+	datalist[0] = nbv;
+	datalist[1] = nbt;
+
+	for(int i=0;i<nbv;i++){
+		xylist[2*i]		= meshout->Vertices[i*3+0];
+		xylist[2*i+1]	= meshout->Vertices[i*3+1];
+	}
+
+	for(int i=0;i<nbt;i++){
+		elementslist[3*i+0] = reCast<int>(meshout->Triangles[4*i+0]);
+		elementslist[3*i+1] = reCast<int>(meshout->Triangles[4*i+1]);
+		elementslist[3*i+2] = reCast<int>(meshout->Triangles[4*i+2]);
+	}
+
+	/*Assign pointers*/
+	*pdatalist		= datalist;
+	*pxylist			= xylist;
+	*pelementslist = elementslist;
+
+	/*Cleanup and return*/
+	delete geomout;
+}/*}}}*/
+void AmrBamg::SetBamgOpts(IssmDouble hmin_in,IssmDouble hmax_in,IssmDouble err_in,IssmDouble gradation_in){/*{{{*/
+
+	if(!this->options) _error_("AmrBamg->options is NULL!");
+
+	this->options->hmin     = hmin_in; 
+	this->options->hmax     = hmax_in; 
+	this->options->err[0]	= err_in; 
+	this->options->gradation= gradation_in; 
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/AmrBamg.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/AmrBamg.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/AmrBamg.h	(revision 27955)
@@ -0,0 +1,58 @@
+#ifndef AMRBAMG
+#define AMRBAMG
+
+/*Includes*/
+#include "../shared/shared.h"
+#include "../toolkits/toolkits.h"
+
+#include "../bamg/BamgMesh.h"
+#include "../bamg/BamgGeom.h"
+#include "../bamg/BamgOpts.h"
+
+class AmrBamg{
+
+	public:
+		int fieldenum;
+		int keepmetric;
+		IssmDouble groundingline_resolution;
+		IssmDouble groundingline_distance;
+		IssmDouble icefront_resolution;
+		IssmDouble icefront_distance;
+		IssmDouble thicknesserror_resolution;
+		IssmDouble thicknesserror_threshold;
+		IssmDouble thicknesserror_groupthreshold;
+		IssmDouble thicknesserror_maximum;
+		IssmDouble deviatoricerror_resolution;
+		IssmDouble deviatoricerror_threshold;
+		IssmDouble deviatoricerror_groupthreshold;
+		IssmDouble deviatoricerror_maximum;
+
+		/* Constructor, destructor etc*/
+		AmrBamg();
+
+		~AmrBamg();
+
+		/*General methods*/
+		void Initialize();
+		void SetMesh(int** elementslist_in,IssmDouble** x_in,IssmDouble** y_in,int* numberofvertices,int* numberofelements);
+		void GetMesh(int** elementslist_out,IssmDouble** x_out,IssmDouble** y_out,int* numberofvertices,int* numberofelements);
+		void ExecuteRefinementBamg(IssmDouble* field,IssmDouble* hmaxVertices,int** pdatalist,IssmDouble** pxylist,int** pelementslist);
+		void SetBamgOpts(IssmDouble hmin_in,IssmDouble hmax_in,IssmDouble err_in,IssmDouble gradation_in);
+
+		/*Access Method*/
+		BamgOpts* GetBamgOpts(){return this->options;}
+
+	private:
+		BamgGeom* geometry;
+		BamgMesh* fathermesh;
+		BamgMesh* previousmesh;
+		BamgOpts* options;
+		/*entire mesh*/
+		IssmDouble* x;
+		IssmDouble* y;
+		int* elementslist;
+		int numberofvertices;
+		int numberofelements;
+};
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/AmrNeopz.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/AmrNeopz.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/AmrNeopz.cpp	(revision 27955)
@@ -0,0 +1,1001 @@
+/*!\file AdaptiveMeshrefinement.cpp
+ * \brief: implementation of the adaptive mesh refinement tool based on NeoPZ library: github.com/labmec/neopz
+ */
+
+#ifdef HAVE_CONFIG_H
+    #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./AmrNeopz.h"
+
+/*Includes*/
+/*{{{*/
+/*Common includes*/
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <climits>
+#include <cfloat>
+
+/*NeoPZ includes*/
+#include <pz_config.h>
+#include <pzreal.h>
+#include <pzvec.h>
+#include <pzeltype.h>
+
+#include <TPZRefPatternTools.h>
+#include <TPZRefPatternDataBase.h>
+#include <TPZRefPattern.h>
+
+#include <tpzchangeel.h>
+#include <TPZGeoElement.h>
+#include <pzreftriangle.h>
+#include <pzgeotriangle.h>
+#include <tpzgeoelrefpattern.h>
+#include <pzgraphmesh.h>
+#include <TPZVTKGeoMesh.h>
+/*}}}*/
+
+using namespace pzgeom;
+
+/*Constructor, copy, clean up and destructor*/
+AmrNeopz::AmrNeopz(){/*{{{*/
+
+	/*Set pointers to NULL*/
+	this->fathermesh						= NULL;
+	this->previousmesh					= NULL;
+	this->refinement_type				= -1;
+	this->level_max						= -1;
+	this->gradation						= -1;
+	this->lag								= -1;
+   this->groundingline_distance		= -1;
+	this->icefront_distance				= -1;
+	this->thicknesserror_threshold	= -1;
+	this->deviatoricerror_threshold	= -1;
+	this->deviatoricerror_maximum		= -1;
+	this->thicknesserror_maximum		= -1;
+	this->sid2index.clear();
+	this->index2sid.clear();
+	this->specialelementsindex.clear();
+	this->x									= NULL;
+	this->y									= NULL;
+	this->elementslist					= NULL;
+	this->numberofvertices				= -1;
+	this->numberofelements				= -1;
+}
+/*}}}*/
+AmrNeopz::AmrNeopz(const AmrNeopz &cp){/*{{{*/
+	this->Initialize(); 
+	this->operator =(cp);
+}
+/*}}}*/
+AmrNeopz & AmrNeopz::operator =(const AmrNeopz &cp){/*{{{*/
+
+	/*Clean all attributes*/
+	this->CleanUp();
+	/*Copy all data*/
+	this->fathermesh						= new TPZGeoMesh(*cp.fathermesh);
+	this->previousmesh					= new TPZGeoMesh(*cp.previousmesh);
+	this->refinement_type				= cp.refinement_type;
+	this->level_max						= cp.level_max;
+	this->gradation						= cp.gradation;
+	this->lag								= cp.lag;
+   this->groundingline_distance		= cp.groundingline_distance;
+	this->icefront_distance				= cp.icefront_distance;
+	this->thicknesserror_threshold	= cp.thicknesserror_threshold;
+	this->deviatoricerror_threshold	= cp.deviatoricerror_threshold;
+	this->deviatoricerror_maximum		= cp.deviatoricerror_maximum;
+	this->thicknesserror_maximum		= cp.thicknesserror_maximum;
+	this->sid2index.clear();
+	this->sid2index.resize(cp.sid2index.size());
+	for(int i=0;i<cp.sid2index.size();i++) this->sid2index[i]=cp.sid2index[i];
+	this->index2sid.clear();
+	this->index2sid.resize(cp.index2sid.size());
+	for(int i=0;i<cp.index2sid.size();i++) this->index2sid[i]=cp.index2sid[i];
+	this->specialelementsindex.clear();
+	this->specialelementsindex.resize(cp.specialelementsindex.size());
+	for(int i=0;i<cp.specialelementsindex.size();i++) this->specialelementsindex[i]=cp.specialelementsindex[i];
+
+	return *this;
+}
+/*}}}*/
+AmrNeopz::~AmrNeopz(){/*{{{*/
+	int writemesh = 0;//only to restart
+	if(writemesh) this->WriteMesh();
+	this->CleanUp();
+	gRefDBase.clear();
+}
+/*}}}*/
+void AmrNeopz::CleanUp(){/*{{{*/
+
+	/*Verify and delete all data*/
+	if(this->fathermesh)    delete this->fathermesh;
+	if(this->previousmesh)  delete this->previousmesh;
+	if(this->x)					xDelete<IssmDouble>(this->x);
+	if(this->y)					xDelete<IssmDouble>(this->y);
+	if(this->elementslist)	xDelete<int>(this->elementslist);
+	this->refinement_type				= -1;
+	this->level_max						= -1;
+	this->gradation						= -1;
+	this->lag								= -1;
+   this->groundingline_distance		= -1;
+	this->icefront_distance				= -1;
+	this->thicknesserror_threshold	= -1;
+	this->deviatoricerror_threshold	= -1;
+	this->deviatoricerror_maximum		= -1;
+	this->thicknesserror_maximum		= -1;
+	this->numberofvertices				= -1;
+	this->numberofelements				= -1;
+	this->sid2index.clear();
+	this->index2sid.clear();
+	this->specialelementsindex.clear();
+}
+/*}}}*/
+
+/*Mesh refinement methods*/
+void AmrNeopz::SetMesh(int** elementslist_in,IssmDouble** x_in,IssmDouble** y_in,int* numberofvertices_in,int* numberofelements_in){/*{{{*/
+
+   /*Delete previous mesh and keep the entire mesh*/
+   if(this->elementslist) xDelete<int>(this->elementslist);
+   if(this->x) xDelete<IssmDouble>(this->x);
+   if(this->y) xDelete<IssmDouble>(this->y);
+
+   this->elementslist      = *elementslist_in;
+   this->x                 = *x_in;
+   this->y                 = *y_in;
+   this->numberofvertices  = *numberofvertices_in;
+   this->numberofelements  = *numberofelements_in;
+}/*}}}*/
+void AmrNeopz::GetMesh(int** elementslist_out,IssmDouble** x_out,IssmDouble** y_out,int* numberofvertices_out,int* numberofelements_out){/*{{{*/
+
+   /*Get the entire mesh*/
+   *elementslist_out    = this->elementslist;
+   *x_out               = this->x;
+   *y_out               = this->y;
+   *numberofvertices_out= this->numberofvertices;
+   *numberofelements_out= this->numberofelements;
+}/*}}}*/
+void AmrNeopz::ExecuteRefinement(double* gl_distance,double* if_distance,double* deviatoricerror,double* thicknesserror,int** pdatalist,double** pxylist,int** pelementslist){/*{{{*/
+
+	/*IMPORTANT! pelementslist are in Matlab indexing*/
+	/*NEOPZ works only in C indexing*/
+	if(!this->fathermesh || !this->previousmesh) _error_("Impossible to execute refinement: fathermesh or previousmesh is NULL!\n");
+	if(this->refinement_type!=0 && this->refinement_type!=1) _error_("Impossible to execute refinement: refinement type is not defined!\n");
+
+	/*Input verifications*/
+	if(this->deviatoricerror_threshold>0	&& !deviatoricerror) _error_("deviatoricerror is NULL!\n");
+	if(this->thicknesserror_threshold>0		&& !thicknesserror)	_error_("thicknesserror is NULL!\n");
+	if(this->groundingline_distance>0		&& !gl_distance)		_error_("gl_distance is NULL!\n");
+	if(this->icefront_distance>0				&& !if_distance)		_error_("if_distance is NULL!\n");
+	/*Attributes verifications*/
+	if(this->deviatoricerror_threshold>0	&& this->deviatoricerror_groupthreshold<DBL_EPSILON)	_error_("group threshold is too small!");
+	if(this->thicknesserror_threshold>0		&& this->thicknesserror_groupthreshold<DBL_EPSILON)	_error_("group threshold is too small!");
+
+	/*Intermediaries*/
+	bool verbose=VerboseSolution();
+
+	/*Execute refinement*/
+	this->RefineMeshOneLevel(verbose,gl_distance,if_distance,deviatoricerror,thicknesserror);
+
+	/*Get new geometric mesh in ISSM data structure*/
+	this->GetMesh(this->previousmesh,pdatalist,pxylist,pelementslist);
+
+	/*Verify the new geometry*/
+	this->CheckMesh(pdatalist,pxylist,pelementslist);
+}
+/*}}}*/
+void AmrNeopz::RefineMeshOneLevel(bool &verbose,double* gl_distance,double* if_distance,double* deviatoricerror,double* thicknesserror){/*{{{*/
+
+	/*Intermediaries*/
+	int nelem							=-1;
+	int side2D							= 6;
+	int sid								=-1;
+	int count							=-1;
+	int criteria						=-1;
+	int numberofcriteria				=-1;
+	int nconformelements				= this->sid2index.size();
+	double gl_distance_h				=-1;
+	double gl_distance_hmax			= this->groundingline_distance;
+	double if_distance_h				=-1;
+	double if_distance_hmax			= this->icefront_distance;
+	double gl_groupdistance			=-1;
+	double if_groupdistance			=-1;
+	double d_maxerror					=-1;
+	double t_maxerror					=-1;
+	double deviatoric_grouperror	=-1;
+	double thickness_grouperror	=-1;
+	TPZGeoMesh* gmesh					= NULL; 
+	TPZVec<REAL> qsi(2,0.),cp(3,0.);
+	TPZVec<TPZGeoEl*> sons;
+	std::vector<int> index;
+
+	/*Calculate the number of criteria{{{*/
+	numberofcriteria=0;
+	if(this->deviatoricerror_threshold>0)	numberofcriteria++;
+	if(this->thicknesserror_threshold>0)	numberofcriteria++;
+	if(this->groundingline_distance>0)		numberofcriteria++;
+	if(this->icefront_distance>0)				numberofcriteria++;
+	/*}}}*/
+
+	/*Calculate the maximum of the estimators, if requested{{{*/
+	if(this->deviatoricerror_threshold>0 && this->deviatoricerror_maximum<DBL_EPSILON){ 
+		for(int i=0;i<nconformelements;i++) this->deviatoricerror_maximum=max(this->deviatoricerror_maximum,deviatoricerror[i]);
+	}
+	if(this->thicknesserror_threshold>0 && this->thicknesserror_maximum<DBL_EPSILON){
+		for(int i=0;i<nconformelements;i++) this->thicknesserror_maximum=max(this->thicknesserror_maximum,thicknesserror[i]);
+	}
+	/*}}}*/
+
+	/*First, verify if special elements have min distance or high errors{{{*/
+	gmesh=this->previousmesh;
+	for(int i=0;i<this->specialelementsindex.size();i++){
+		if(this->specialelementsindex[i]==-1) _error_("index is -1!\n");
+		if(!gmesh->Element(this->specialelementsindex[i])) _error_("element is null!\n");
+		if(!gmesh->Element(this->specialelementsindex[i])->Father()) _error_("father is null!\n");
+		if(gmesh->Element(this->specialelementsindex[i])->HasSubElement()) _error_("special element has sub elements!\n");
+		sons.clear();
+		gmesh->Element(this->specialelementsindex[i])->Father()->GetHigherSubElements(sons);
+		/*Limits*/
+		gl_distance_h	= gl_distance_hmax*std::pow(this->gradation,this->level_max-gmesh->Element(this->specialelementsindex[i])->Level());
+		if_distance_h	= if_distance_hmax*std::pow(this->gradation,this->level_max-gmesh->Element(this->specialelementsindex[i])->Level());
+		d_maxerror		= this->deviatoricerror_threshold*this->deviatoricerror_maximum;
+		t_maxerror		= this->thicknesserror_threshold*this->thicknesserror_maximum;
+		/*Calculate the distance and error of the group (sons)*/
+		gl_groupdistance=INFINITY;if_groupdistance=INFINITY;deviatoric_grouperror=0;thickness_grouperror=0;
+		for(int s=0;s<sons.size();s++){
+			sid=this->index2sid[sons[s]->Index()];
+			if(sid<0) continue;
+			if(this->groundingline_distance>0)		gl_groupdistance=std::min(gl_groupdistance,gl_distance[sid]); 
+			if(this->icefront_distance>0)				if_groupdistance=std::min(if_groupdistance,if_distance[sid]); 
+			if(this->deviatoricerror_threshold>0)	deviatoric_grouperror+=deviatoricerror[sid];
+			if(this->thicknesserror_threshold>0)	thickness_grouperror+=thicknesserror[sid];
+		}	
+		criteria=0;
+		if(this->groundingline_distance>0		&& gl_groupdistance<gl_distance_h+DBL_EPSILON)		criteria++;
+		if(this->icefront_distance>0				&& if_groupdistance<if_distance_h+DBL_EPSILON)		criteria++;
+		if(this->deviatoricerror_threshold>0	&& deviatoric_grouperror>d_maxerror-DBL_EPSILON)	criteria++;
+		if(this->thicknesserror_threshold>0		&& thickness_grouperror>t_maxerror-DBL_EPSILON)		criteria++;
+		/*Finally, it keeps the father index if it must be refine*/
+		if(criteria) index.push_back(gmesh->Element(this->specialelementsindex[i])->FatherIndex());
+	}
+	/*}}}*/
+
+	/*Now, detele the special elements{{{*/
+	if(this->refinement_type==1) this->DeleteSpecialElements(verbose,gmesh);
+	else this->specialelementsindex.clear();
+	/*}}}*/
+
+	/*Set the mesh and delete previousmesh if refinement type is 0{{{*/
+	if(this->refinement_type==0){
+		delete this->previousmesh;	
+		gmesh=this->fathermesh;
+	}
+	/*}}}*/
+
+	/*Unrefinement process: loop over level of refinements{{{*/
+	if(verbose) _printf_("\tunrefinement process...\n");
+	if(verbose) _printf_("\ttotal: ");
+	count=0;
+
+	nelem=gmesh->NElements();//must keep here
+	for(int i=0;i<nelem;i++){
+		if(!gmesh->Element(i)) continue;
+		if(gmesh->Element(i)->MaterialId()!=this->GetElemMaterialID()) continue;
+		if(gmesh->Element(i)->HasSubElement()) continue;
+		if(gmesh->Element(i)->Level()==0) continue;
+		if(!gmesh->Element(i)->Father()) _error_("father is NULL!\n");
+		/*Limits with lag*/
+		gl_distance_h = this->lag*gl_distance_hmax*std::pow(this->gradation,this->level_max-gmesh->Element(i)->Level());
+		if_distance_h = this->lag*if_distance_hmax*std::pow(this->gradation,this->level_max-gmesh->Element(i)->Level());
+		d_maxerror	  = this->deviatoricerror_groupthreshold*this->deviatoricerror_maximum;
+		t_maxerror	  = this->thicknesserror_groupthreshold*this->thicknesserror_maximum;
+		/*Get the sons of the father (sibilings)*/	
+		sons.clear();
+		gmesh->Element(i)->Father()->GetHigherSubElements(sons);
+		if(sons.size()!=4) continue;//delete just group of 4 elements. This avoids big holes in the mesh
+		/*Find the minimal distance and the error of the group*/	
+		gl_groupdistance=INFINITY;if_groupdistance=INFINITY;deviatoric_grouperror=0;thickness_grouperror=0;
+		for(int s=0;s<sons.size();s++){
+			sid=this->index2sid[sons[s]->Index()];
+			/*Verify if this group have solutions*/
+			if(sid<0){gl_groupdistance=INFINITY;if_groupdistance=INFINITY;deviatoric_grouperror=INFINITY;thickness_grouperror=INFINITY;continue;} 
+			/*Distance and error of the group*/
+			if(this->groundingline_distance>0)		gl_groupdistance=std::min(gl_groupdistance,gl_distance[sid]); 
+			if(this->icefront_distance>0)				if_groupdistance=std::min(if_groupdistance,if_distance[sid]); 
+			if(this->deviatoricerror_threshold>0)	deviatoric_grouperror+=deviatoricerror[sid]; 
+			if(this->thicknesserror_threshold>0)	thickness_grouperror+=thicknesserror[sid]; 
+		}
+		/*Verify the criteria*/
+		criteria=0;
+		if(this->groundingline_distance>0		&& gl_groupdistance>gl_distance_h-DBL_EPSILON)		criteria++;
+		if(this->icefront_distance>0				&& if_groupdistance>if_distance_h-DBL_EPSILON)		criteria++;
+		if(this->deviatoricerror_threshold>0	&& deviatoric_grouperror<d_maxerror+DBL_EPSILON)	criteria++;
+		if(this->thicknesserror_threshold>0		&& thickness_grouperror<t_maxerror+DBL_EPSILON)		criteria++;
+		/*Now, if the group attends the criteria, unrefine it*/
+		if(criteria==numberofcriteria){ 
+			gmesh->Element(i)->Father()->ResetSubElements(); count++;
+			for(int s=0;s<sons.size();s++){this->index2sid[sons[s]->Index()]=-1;gmesh->DeleteElement(sons[s],sons[s]->Index());}
+		}
+	}
+	if(verbose) _printf_(""<<count<<"\n");
+	/*Adjust the connectivities before continue*/
+	//gmesh->BuildConnectivity(); this is not necessary
+	/*}}}*/
+
+	/*Refinement process: loop over level of refinements{{{*/
+	if(verbose) _printf_("\trefinement process (level max = "<<this->level_max<<")\n");
+	if(verbose) _printf_("\ttotal: ");
+	count=0;
+	nelem=gmesh->NElements();//must keep here
+	for(int i=0;i<nelem;i++){
+		if(!gmesh->Element(i)) continue;
+		if(gmesh->Element(i)->MaterialId()!=this->GetElemMaterialID()) continue;
+		if(gmesh->Element(i)->HasSubElement()) continue;
+		if(gmesh->Element(i)->Level()==this->level_max) continue;
+		/*Verify if this element has solutions*/
+		sid=this->index2sid[gmesh->Element(i)->Index()];
+		if(sid<0) continue;
+		/*Set the distance for level h*/
+		gl_distance_h	= gl_distance_hmax*std::pow(this->gradation,this->level_max-(gmesh->Element(i)->Level()+1));//+1: current element level is <level_max
+		if_distance_h	= if_distance_hmax*std::pow(this->gradation,this->level_max-(gmesh->Element(i)->Level()+1));//+1: current element level is <level_max
+		d_maxerror		= this->deviatoricerror_threshold*this->deviatoricerror_maximum;
+		t_maxerror		= this->thicknesserror_threshold*this->thicknesserror_maximum;
+		/*Verify distance and error of the element, if requested*/
+		criteria=0;
+		if(this->groundingline_distance>0		&& gl_distance[sid]<gl_distance_h+DBL_EPSILON)	criteria++; 
+		if(this->icefront_distance>0				&& if_distance[sid]<if_distance_h+DBL_EPSILON)	criteria++; 
+		if(this->deviatoricerror_threshold>0	&& deviatoricerror[sid]>d_maxerror-DBL_EPSILON)	criteria++; 
+		if(this->thicknesserror_threshold>0		&& thicknesserror[sid]>t_maxerror-DBL_EPSILON)	criteria++; 
+		/*Now, if it attends any criterion, keep the element index to refine in next step*/
+		if(criteria)index.push_back(i);
+	}
+	/*Now, refine the elements*/
+	for(int i=0;i<index.size();i++){ 
+		if(!gmesh->Element(index[i])) DebugStop();
+		if(!gmesh->Element(index[i])->HasSubElement()){gmesh->Element(index[i])->Divide(sons);count++;}
+	}
+	if(verbose) _printf_(""<<count<<"\n");
+	/*Adjust the connectivities before continue*/
+	//gmesh->BuildConnectivity();//this is not necessary
+	/*}}}*/
+
+	/*Now, apply smoothing and insert special elements to avoid hanging nodes{{{*/
+	this->RefineMeshWithSmoothing(verbose,gmesh);
+	if(this->refinement_type==0) this->previousmesh=this->CreateRefPatternMesh(gmesh);//in this case, gmesh==this->fathermesh
+	gmesh=this->previousmesh;//previous mesh is always refined to avoid hanging nodes
+	this->RefineMeshToAvoidHangingNodes(verbose,gmesh);
+	/*}}}*/
+}
+/*}}}*/
+int AmrNeopz::VerifyRefinementType(TPZGeoEl* geoel,TPZGeoMesh* gmesh){/*{{{*/
+
+	/*
+	 * 0 : no refinement
+	 * 1 : special refinement (to avoid hanging nodes)
+	 * 2 : uniform refinment
+	 * */
+	if(!geoel) _error_("geoel is NULL!\n");
+
+	/*Output*/
+	int type=0;
+
+	/*Intermediaries*/
+	TPZVec<TPZGeoEl*> sons;
+
+	/*Loop over neighboors (sides 3, 4 and 5)*/
+	for(int j=3;j<6;j++){
+		if(!gmesh->Element(geoel->NeighbourIndex(j))->HasSubElement()) continue;
+		sons.clear();
+		gmesh->Element(geoel->NeighbourIndex(j))->GetHigherSubElements(sons);
+		if(sons.size()) type++; //if neighbour was refined
+		if(sons.size()>4) type++; //if neighbour's level is > element level+1
+		if(type>1) break;
+	}
+
+	/*Verify and return*/
+	if(type>1) type=2;
+
+	return type;
+}
+/*}}}*/
+void AmrNeopz::RefineMeshWithSmoothing(bool &verbose,TPZGeoMesh* gmesh){/*{{{*/
+
+	/*Intermediaries*/
+	int nelem		=-1;
+	int count		=-1;
+	int type			=-1;
+	int typecount	=-1;
+
+	TPZVec<TPZGeoEl*> sons;
+
+	/*Refinement process: loop over level of refinements*/
+	if(verbose) _printf_("\tsmoothing process (level max = "<<this->level_max<<")\n");
+	if(verbose) _printf_("\ttotal: ");
+
+	count=1;
+
+	while(count>0){
+		count=0;
+		nelem=gmesh->NElements();//must keep here
+		for(int i=0;i<nelem;i++){
+			if(!gmesh->Element(i)) continue;
+			if(gmesh->Element(i)->MaterialId()!=this->GetElemMaterialID()) continue;
+			if(gmesh->Element(i)->HasSubElement()) continue;
+			if(gmesh->Element(i)->Level()==this->level_max) continue;
+			/*loop over neighboors (sides 3, 4 and 5). Important: neighbours has the same dimension of the element*/
+			type=this->VerifyRefinementType(gmesh->Element(i),gmesh);
+			if(type<2){
+				typecount=0;
+				for(int j=3;j<6;j++){
+					if(gmesh->Element(gmesh->Element(i)->NeighbourIndex(j))->HasSubElement()) continue;
+					if(gmesh->Element(i)->NeighbourIndex(j)==i) typecount++;//neighbour==this element, element at the border
+					if(this->VerifyRefinementType(gmesh->Element(gmesh->Element(i)->NeighbourIndex(j)),gmesh)==1) typecount++;
+					if(typecount>1 && type==1) type=2;
+					else if(typecount>2 && type==0) type=2;
+					if(type==2) break;
+				}
+			}
+
+			/*refine the element if requested*/
+			if(type==2){gmesh->Element(i)->Divide(sons);	count++;}
+		}
+		if(verbose){
+			if(count==0) _printf_(""<<count<<"\n");
+			else _printf_(""<<count<<", ");
+		}
+		/*Adjust the connectivities before continue*/
+		//gmesh->BuildConnectivity();//this is not necessary
+	}
+}
+/*}}}*/
+void AmrNeopz::RefineMeshToAvoidHangingNodes(bool &verbose,TPZGeoMesh* gmesh){/*{{{*/
+
+	/*Now, insert special elements to avoid hanging nodes*/
+	if(verbose) _printf_("\trefining to avoid hanging nodes (total: ");
+
+	/*Intermediaries*/
+	int nelem=-1;
+	int count= 1;
+
+	while(count>0){
+		nelem=gmesh->NElements();//must keep here
+		count=0;
+		for(int i=0;i<nelem;i++){
+			/*Get geometric element and verify if it has already been refined. Geoel may not have been previously refined*/
+			TPZGeoEl * geoel=gmesh->Element(i);
+			if(!geoel) continue;
+			if(geoel->HasSubElement()) continue;
+			if(geoel->MaterialId() != this->GetElemMaterialID()) continue;
+			/*Get the refinement pattern for this element and refine it*/
+			TPZAutoPointer<TPZRefPattern> refp=TPZRefPatternTools::PerfectMatchRefPattern(geoel);
+			if(refp){
+				/*Non-uniform refinement*/
+				TPZVec<TPZGeoEl *> sons;
+				geoel->SetRefPattern(refp);
+				geoel->Divide(sons);
+				count++;
+				/*Keep the index of the special elements*/
+				for(int j=0;j<sons.size();j++) this->specialelementsindex.push_back(sons[j]->Index());
+			}
+		}
+		if(verbose){
+			if(count==0) _printf_(""<<count<<")\n");
+			else _printf_(""<<count<<", ");
+		}
+		//gmesh->BuildConnectivity();//this is not necessary
+	}
+}
+/*}}}*/
+void AmrNeopz::DeleteSpecialElements(bool &verbose,TPZGeoMesh* gmesh){/*{{{*/
+
+	/*Intermediaries*/
+	int count=0;
+
+	if(verbose) _printf_("\tdelete "<<this->specialelementsindex.size()<<" special elements (total: ");
+	for(int i=0;i<this->specialelementsindex.size();i++){
+		if(this->specialelementsindex[i]==-1) continue;
+		if(!gmesh->Element(this->specialelementsindex[i])) continue;
+		if(gmesh->Element(this->specialelementsindex[i])->Father()) gmesh->Element(this->specialelementsindex[i])->Father()->ResetSubElements();
+		gmesh->DeleteElement(gmesh->Element(this->specialelementsindex[i]),this->specialelementsindex[i]);
+      this->index2sid[this->specialelementsindex[i]]=-1;
+		count++;
+	}
+	if(verbose) _printf_(""<<count<<")\n");
+	/*Cleanup*/
+	this->specialelementsindex.clear();
+	/*Adjust connectivities*/
+	//gmesh->BuildConnectivity();//this is not necessary
+}
+/*}}}*/
+void AmrNeopz::GetMesh(TPZGeoMesh* gmesh,int** pdata,double** pxy, int** pelements){/*{{{*/
+
+	/* IMPORTANT! pelements are in Matlab indexing
+	   NEOPZ works only in C indexing.
+		This method cleans up and updated the this->sid2index
+		and this->index2sid and fills in it with the new mesh.
+		Avoid to call this method before Refinement Process.*/
+
+	/*Intermediaries */
+	long sid,nodeindex;
+	int nconformelements,nconformvertices;
+	int ntotalvertices		= gmesh->NNodes();
+	int* newelements			= NULL;
+	int* newdata				= NULL;
+	double* newmeshXY			= NULL;
+	TPZGeoEl* geoel			= NULL;
+	long* vertex_index2sid 	= xNew<long>(ntotalvertices);
+	this->index2sid.clear(); this->index2sid.resize(gmesh->NElements());
+	this->sid2index.clear();
+
+	/*Fill in the vertex_index2sid vector with non usual index value*/
+	for(int i=0;i<gmesh->NNodes();i++) vertex_index2sid[i]=-1;
+
+	/*Fill in the this->index2sid vector with non usual index value*/
+	for(int i=0;i<gmesh->NElements();i++) this->index2sid[i]=-1;
+
+	/*Get elements without sons and fill in the vertex_index2sid with used vertices (indexes) */
+	sid=0;
+	for(int i=0;i<gmesh->NElements();i++){//over gmesh elements index 
+		geoel=gmesh->ElementVec()[i];
+		if(!geoel) continue;
+		if(geoel->HasSubElement()) continue;
+		if(geoel->MaterialId() != this->GetElemMaterialID()) continue;
+		this->sid2index.push_back(geoel->Index());//keep the element index
+		this->index2sid[geoel->Index()]=this->sid2index.size()-1;//keep the element sid
+		for(int j=0;j<this->GetNumberOfNodes();j++){
+      	nodeindex=geoel->NodeIndex(j);
+      	if(nodeindex<0) _error_("nodeindex is <0\n");
+			if(vertex_index2sid[nodeindex]==-1){
+      		vertex_index2sid[nodeindex]=sid; 
+				sid++;
+			}
+      }	
+	}
+
+	/* Create new mesh structure and fill it */
+	nconformelements	= (int)this->sid2index.size();
+	nconformvertices	= (int)sid;
+	newelements			= xNew<int>(nconformelements*this->GetNumberOfNodes());
+	newmeshXY			= xNew<double>(nconformvertices*2);
+	newdata				= xNew<int>(2);
+	newdata[0]			= nconformvertices;
+	newdata[1]			= nconformelements;
+
+	for(int i=0;i<ntotalvertices;i++){//over the TPZNode index (fill in the ISSM vertices coords)
+		sid=vertex_index2sid[i];
+		if(sid==-1) continue;//skip this index (node no used)
+		TPZVec<REAL> coords(3,0.);
+		gmesh->NodeVec()[i].GetCoordinates(coords);
+		newmeshXY[2*sid]		= coords[0]; // X
+		newmeshXY[2*sid+1]	= coords[1]; // Y
+	}
+
+	for(int i=0;i<this->sid2index.size();i++){//over the sid (fill the ISSM elements)
+		for(int j=0;j<this->GetNumberOfNodes();j++) {
+			geoel	= gmesh->ElementVec()[this->sid2index[i]];
+			sid	= vertex_index2sid[geoel->NodeIndex(j)];
+			newelements[i*this->GetNumberOfNodes()+j]=(int)sid+1;//C to Matlab indexing
+		}
+		/*Verify the Jacobian determinant. If detJ<0, swap the 2 first postions:
+		  a -> b
+		  b -> a */
+		double detJ,xa,xb,xc,ya,yb,yc;
+		int a,b,c;
+
+		a=newelements[i*this->GetNumberOfNodes()+0]-1;
+		b=newelements[i*this->GetNumberOfNodes()+1]-1;
+		c=newelements[i*this->GetNumberOfNodes()+2]-1;
+
+		xa=newmeshXY[2*a]; ya=newmeshXY[2*a+1];
+		xb=newmeshXY[2*b]; yb=newmeshXY[2*b+1];
+		xc=newmeshXY[2*c]; yc=newmeshXY[2*c+1];
+
+		detJ=(xb-xa)*(yc-ya)-(xc-xa)*(yb-ya);
+
+		/*verify and swap, if necessary*/
+		if(detJ<0) {
+			newelements[i*this->GetNumberOfNodes()+0]=b+1;//a->b
+			newelements[i*this->GetNumberOfNodes()+1]=a+1;//b->a
+		}
+	}
+
+	/*Setting outputs*/
+	*pdata		= newdata;
+	*pxy		   = newmeshXY;
+	*pelements	= newelements;
+
+	/*Cleanup*/
+	xDelete<long>(vertex_index2sid);
+}
+/*}}}*/
+void AmrNeopz::Initialize(){/*{{{*/
+
+	/* IMPORTANT! elements come in Matlab indexing
+		NEOPZ works only in C indexing*/
+
+	if(this->numberofvertices<=0) _error_("Impossible to create initial mesh: nvertices is <= 0!\n");
+   if(this->numberofelements<=0) _error_("Impossible to create initial mesh: nelements is <= 0!\n");
+	if(this->refinement_type!=0 && this->refinement_type!=1) _error_("Impossible to create initial mesh: refinement type is not defined!\n");
+
+    /*Verify and creating initial mesh*/
+   if(!this->x || !this->y || !this->elementslist) _error_("Mesh data structure is NULL!\n");
+	if(this->fathermesh || this->previousmesh) _error_("Initial mesh already exists!\n");
+
+   this->fathermesh = new TPZGeoMesh();
+	this->fathermesh->NodeVec().Resize(this->numberofvertices);
+
+	/*Set the vertices (geometric nodes in NeoPZ context)*/
+	for(int i=0;i<this->numberofvertices;i++){  
+      /*x,y,z coords*/
+		TPZManVector<REAL,3> coord(3,0.);
+      coord[0]= this->x[i];
+      coord[1]= this->y[i];
+      coord[2]= 0.;
+      /*Insert in the mesh*/
+      this->fathermesh->NodeVec()[i].SetCoord(coord);
+		this->fathermesh->NodeVec()[i].SetNodeId(i);
+	}
+
+	/*Generate the elements*/
+	int64_t index;
+   const int mat = this->GetElemMaterialID();
+   TPZManVector<int64_t> elem(this->GetNumberOfNodes(),0);
+	this->index2sid.clear(); this->index2sid.resize(this->numberofelements);
+   this->sid2index.clear();
+
+	for(int i=0;i<this->numberofelements;i++){
+		for(int j=0;j<this->GetNumberOfNodes();j++) elem[j]=this->elementslist[i*this->GetNumberOfNodes()+j]-1;//Convert Matlab to C indexing
+      switch(this->GetNumberOfNodes()){
+			case 3: this->fathermesh->CreateGeoElement(ETriangle,elem,mat,index,this->refinement_type);	break;
+         default:	_error_("mesh not supported yet");
+		}
+      /*Define the element ID*/        
+      this->fathermesh->ElementVec()[index]->SetId(i);
+		/*Initialize sid2index and index2sid*/
+		this->sid2index.push_back((int)index);
+		this->index2sid[(int)index]=this->sid2index.size()-1;//keep the element sid
+	}
+   /*Build element and node connectivities*/
+   this->fathermesh->BuildConnectivity();
+	/*Set previous mesh*/
+	if(this->refinement_type==1) this->previousmesh=new TPZGeoMesh(*this->fathermesh);
+	else this->previousmesh=this->CreateRefPatternMesh(this->fathermesh); 
+}
+/*}}}*/
+TPZGeoMesh* AmrNeopz::CreateRefPatternMesh(TPZGeoMesh* gmesh){/*{{{*/
+
+	TPZGeoMesh *newgmesh = new TPZGeoMesh();
+   newgmesh->CleanUp();
+
+   int nnodes  = gmesh->NNodes();
+	int nelem   = gmesh->NElements();
+   int mat     = this->GetElemMaterialID();;
+   int reftype = 1;
+   int64_t index; 
+
+	//nodes
+	newgmesh->NodeVec().Resize(nnodes);
+   for(int i=0;i<nnodes;i++) newgmesh->NodeVec()[i] = gmesh->NodeVec()[i];
+
+   //elements
+   for(int i=0;i<nelem;i++){
+   	TPZGeoEl * geoel = gmesh->Element(i);
+
+		if(!geoel){
+			index=newgmesh->ElementVec().AllocateNewElement();
+			newgmesh->ElementVec()[index] = NULL;
+			continue;
+		}
+
+		TPZManVector<int64_t> elem(3,0);
+      for(int j=0;j<3;j++) elem[j] = geoel->NodeIndex(j);
+
+      newgmesh->CreateGeoElement(ETriangle,elem,mat,index,reftype);
+		newgmesh->ElementVec()[index]->SetId(geoel->Id());
+
+      TPZGeoElRefPattern<TPZGeoTriangle>* newgeoel = dynamic_cast<TPZGeoElRefPattern<TPZGeoTriangle>*>(newgmesh->ElementVec()[index]);
+
+      //old neighbourhood
+      const int nsides = TPZGeoTriangle::NSides;
+      TPZVec< std::vector<TPZGeoElSide> > neighbourhood(nsides);
+      TPZVec<long> NodesSequence(0);
+      for(int s = 0; s < nsides; s++){
+      	neighbourhood[s].resize(0);
+      	TPZGeoElSide mySide(geoel,s);
+      	TPZGeoElSide neighS = mySide.Neighbour();
+         if(mySide.Dimension() == 0){
+         	long oldSz = NodesSequence.NElements();
+            NodesSequence.resize(oldSz+1);
+            NodesSequence[oldSz] = geoel->NodeIndex(s);
+         }
+      	while(mySide != neighS){
+         	neighbourhood[s].push_back(neighS);
+            neighS = neighS.Neighbour();
+         }
+      }
+
+      //inserting in new element
+      for(int s = 0; s < nsides; s++){
+      	TPZGeoEl * tempEl = newgeoel;
+         TPZGeoElSide tempSide(newgeoel,s);
+         int byside = s;
+         for(unsigned long n = 0; n < neighbourhood[s].size(); n++){
+         	TPZGeoElSide neighS = neighbourhood[s][n];
+            tempEl->SetNeighbour(byside, neighS);
+            tempEl = neighS.Element();
+            byside = neighS.Side();
+         }
+         tempEl->SetNeighbour(byside, tempSide);
+      }
+
+      long fatherindex = geoel->FatherIndex();
+      if(fatherindex>-1) newgeoel->SetFather(fatherindex);
+
+      if(!geoel->HasSubElement()) continue;
+
+      int nsons = geoel->NSubElements();
+
+      TPZAutoPointer<TPZRefPattern> ref = gRefDBase.GetUniformRefPattern(ETriangle);
+      newgeoel->SetRefPattern(ref);
+
+      for(int j=0;j<nsons;j++){
+      	TPZGeoEl* son = geoel->SubElement(j);
+         if(!son){
+             DebugStop();
+         }
+         newgeoel->SetSubElement(j,son);
+      }
+   }
+
+	/*Now, build connectivities*/
+	newgmesh->BuildConnectivity();
+
+	return newgmesh;
+}
+/*}}}*/
+void AmrNeopz::CheckMesh(int** pdata,double** pxy,int** pelements){/*{{{*/
+
+	/*Basic verification*/
+	if(!pdata) _error_("Impossible to continue: pdata is NULL!\n");
+	if(**pdata<=0) _error_("Impossible to continue: nvertices <=0!\n");
+	if(*(*pdata+1)<=0) _error_("Impossible to continue: nelements <=0!\n");
+	if(!pxy) _error_("Impossible to continue: pxy is NULL!\n");
+	if(!pelements) _error_("Impossible to continue: pelements is NULL!\n");
+}
+/*}}}*/
+void AmrNeopz::PrintGMeshVTK(TPZGeoMesh* gmesh,std::ofstream &file,bool matColor){/*{{{*/
+
+	file.clear();
+	long nelements = gmesh->NElements();
+	TPZGeoEl *gel;
+	std::stringstream node, connectivity, type, material;
+
+	//Header
+	file << "# vtk DataFile Version 3.0" << std::endl;
+	file << "TPZGeoMesh VTK Visualization" << std::endl;
+	file << "ASCII" << std::endl << std::endl;
+	file << "DATASET UNSTRUCTURED_GRID" << std::endl;
+	file << "POINTS ";
+
+	long actualNode = -1, size = 0, nVALIDelements = 0;
+	for(long el = 0; el < nelements; el++){
+	  gel = gmesh->ElementVec()[el];
+	  if(!gel )//|| (gel->Type() == EOned && !gel->IsLinearMapping()))//Exclude Arc3D and Ellipse3D
+	  {
+			continue;
+	  }
+	  if(gel->HasSubElement())
+	  {
+			continue;
+	  }
+	  MElementType elt = gel->Type();
+	  int elNnodes = MElementType_NNodes(elt);
+
+	  size += (1+elNnodes);
+	  connectivity << elNnodes;
+
+	  for(int t = 0; t < elNnodes; t++)
+	  {
+			for(int c = 0; c < 3; c++)
+			{
+				 double coord = gmesh->NodeVec()[gel->NodeIndex(t)].Coord(c);
+				 node << coord << " ";
+			}
+			node << std::endl;
+
+			actualNode++;
+			connectivity << " " << actualNode;
+	  }
+	  connectivity << std::endl;
+
+	  int elType = this->GetVTK_ElType(gel);
+	  type << elType << std::endl;
+
+	  if(matColor == true)
+	  {
+			material << gel->MaterialId() << std::endl;
+	  }
+	  else
+	  {
+			material << gel->Index() << std::endl;
+	  }
+
+	  nVALIDelements++;
+	}
+	node << std::endl;
+	actualNode++;
+	file << actualNode << " float" << std::endl << node.str();
+
+	file << "CELLS " << nVALIDelements << " ";
+
+	file << size << std::endl;
+	file << connectivity.str() << std::endl;
+
+	file << "CELL_TYPES " << nVALIDelements << std::endl;
+	file << type.str() << std::endl;
+
+	file << "CELL_DATA" << " " << nVALIDelements << std::endl;
+	file << "FIELD FieldData 1" << std::endl;
+	if(matColor == true)
+	{
+	  file << "material 1 " << nVALIDelements << " int" << std::endl;
+	}
+	else
+	{
+	  file << "ElementIndex 1 " << nVALIDelements << " int" << std::endl;
+	}
+	file << material.str();
+	file.close();
+}
+/*}}}*/
+int AmrNeopz::GetVTK_ElType(TPZGeoEl * gel){/*{{{*/
+
+	MElementType pzElType = gel->Type();
+
+    int elType = -1;
+    switch (pzElType)
+    {
+        case(EPoint):
+        {
+            elType = 1;
+            break;
+        }
+        case(EOned):
+        {
+            elType = 3;    
+            break;
+        }
+        case (ETriangle):
+        {
+            elType = 5;
+            break;                
+        }
+        case (EQuadrilateral):
+        {
+            elType = 9;
+            break;                
+        }
+        case (ETetraedro):
+        {
+            elType = 10;
+            break;                
+        }
+        case (EPiramide):
+        {
+            elType = 14;
+            break;                
+        }
+        case (EPrisma):
+        {
+            elType = 13;
+            break;                
+        }
+        case (ECube):
+        {
+            elType = 12;
+            break;                
+        }
+        default:
+        {
+            std::cout << "Element type not found on " << __PRETTY_FUNCTION__ << std::endl;
+            DebugStop();
+            break;    
+        }
+    }
+    if(elType == -1)
+    {
+        std::cout << "Element type not found on " << __PRETTY_FUNCTION__ << std::endl;
+        std::cout << "MIGHT BE CURVED ELEMENT (quadratic or quarter point)" << std::endl;
+        DebugStop();
+    }
+
+    return elType;
+}
+/*}}}*/
+void AmrNeopz::ReadMesh(){/*{{{*/
+
+	std::string fathermeshfile		= "/home/santos/issm_fathermesh.txt";
+	std::string previousmeshfile	= "/home/santos/issm_previousmesh.txt";
+	std::string amrfile				= "/home/santos/issm_amr.txt";
+	std::ifstream amrifstream(amrfile.c_str());				
+	int size,value;
+
+	TPZPersistenceManager::OpenRead(fathermeshfile);
+	this->fathermesh = dynamic_cast<TPZGeoMesh *>(TPZPersistenceManager::ReadFromFile());
+	TPZPersistenceManager::CloseRead();
+
+	TPZPersistenceManager::OpenRead(previousmeshfile);
+	this->previousmesh = dynamic_cast<TPZGeoMesh *>(TPZPersistenceManager::ReadFromFile());
+   TPZPersistenceManager::CloseRead();
+
+	if(!amrifstream.is_open()) _error_("amr ifstream is not open!");
+	amrifstream.seekg(0);
+
+	this->sid2index.clear();
+	this->index2sid.clear();
+	this->specialelementsindex.clear();
+
+	amrifstream>>size;
+	for(int i=0;i<size;i++){
+		amrifstream>>value;
+		this->sid2index.push_back(value);
+	}
+
+	amrifstream>>size;
+	for(int i=0;i<size;i++){
+		amrifstream>>value;
+		this->index2sid.push_back(value);
+	}
+
+	amrifstream>>size;
+	for(int i=0;i<size;i++){
+		amrifstream>>value;
+		this->specialelementsindex.push_back(value);
+	}
+}
+/*}}}*/
+void AmrNeopz::WriteMesh(){/*{{{*/
+
+	std::string fathermeshfile		= "/home/santos/issm_fathermesh.txt";
+	std::string previousmeshfile	= "/home/santos/issm_previousmesh.txt";
+	std::string amrfile				= "/home/santos/issm_amr.txt";
+	std::ofstream amrofstream(amrfile.c_str());				
+
+	if(this->fathermesh){
+		TPZPersistenceManager::OpenWrite(fathermeshfile);
+		TPZPersistenceManager::WriteToFile(this->fathermesh);
+		TPZPersistenceManager::CloseWrite();
+	}
+
+	if(this->previousmesh){
+		TPZPersistenceManager::OpenWrite(previousmeshfile);
+		TPZPersistenceManager::WriteToFile(this->previousmesh);
+		TPZPersistenceManager::CloseWrite();
+	}
+
+	if(this->sid2index.size()>0){
+		amrofstream << this->sid2index.size() << std::endl;
+		for(int i=0;i<this->sid2index.size();i++) {
+			amrofstream << this->sid2index[i] << std::endl;
+		}
+	}
+
+	if(this->index2sid.size()>0){
+		amrofstream << this->index2sid.size() << std::endl;
+		for(int i=0;i<this->index2sid.size();i++) {
+			amrofstream << this->index2sid[i] << std::endl;
+		}
+	}
+
+	if(this->specialelementsindex.size()){
+		amrofstream << this->specialelementsindex.size() << std::endl;
+		for(int i=0;i<this->specialelementsindex.size();i++) {
+			amrofstream << this->specialelementsindex[i] << std::endl;
+		}
+	}
+	amrofstream.flush();
+	amrofstream.close();
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/AmrNeopz.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/AmrNeopz.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/AmrNeopz.h	(revision 27955)
@@ -0,0 +1,80 @@
+#ifndef AMRNEOPZ
+#define AMRNEOPZ
+
+/*Includes*/
+/*{{{*/
+/*NeoPZ includes*/
+#include <pzgmesh.h>
+/*ISSM includes*/
+#include "../shared/shared.h"
+/*}}}*/
+
+class AmrNeopz{
+
+public:
+	/*Public attributes{{{*/
+	/* 
+	 * to refine:
+	 * distance_h = initial_distance * gradation ^ (level_max-h)
+	 * to unrefine:
+	 * distance_h = lag * initial_distance * gradation ^ (level_max-h)
+	 */
+	int refinement_type;						//0 uniform (faster); 1 refpattern  
+	int level_max;								//max level of refinement
+	double gradation;							//geometric progression ratio to calculate radius of level h
+	double lag;									//lag used in the unrefine process
+	/*Target and estimators*/
+	double groundingline_distance;		//all elements with distance from grounding line <= groundingline_distance will be refined
+	double icefront_distance;				//all elements with distance from ice front <= icefront_distance will be refined
+	double thicknesserror_threshold;		//if ==0, it will not be used
+	double thicknesserror_groupthreshold;//group threshold
+	double thicknesserror_maximum;		//max value of the error estimator; in general, it is defined in the first time step. Attention with restart
+	double deviatoricerror_threshold;	//if ==0, it will not be used
+	double deviatoricerror_groupthreshold;//group threshold
+	double deviatoricerror_maximum;		//max value of the error estimator; in general, it is defined in the first time step. Attention with restart
+	/*}}}*/
+	/*Public methods{{{*/
+	/* Constructor, destructor etc*/
+	AmrNeopz();															
+	AmrNeopz(const AmrNeopz &cp); 					
+	AmrNeopz & operator= (const AmrNeopz &cp);	
+	virtual ~AmrNeopz();												
+	/*General methods*/
+	void CleanUp();
+	void Initialize();
+   void ExecuteRefinement(double* gl_distance,double* if_distance,double* deviatoricerror,double* thicknesserror,int** pdatalist,double** pxy,int** pelementslist);
+	void SetMesh(int** elementslist_in,IssmDouble** x_in,IssmDouble** y_in,int* numberofvertices,int* numberofelements);
+	void GetMesh(int** elementslist_out,IssmDouble** x_out,IssmDouble** y_out,int* numberofvertices,int* numberofelements);
+	void CheckMesh(int** pdata,double** pxy,int** pelements);
+	void ReadMesh();
+	void WriteMesh();
+	/*}}}*/
+private:
+	/*Private attributes{{{*/
+	std::vector<int> sid2index;					// Vector that keeps index of PZGeoMesh elements used in the ISSM mesh (sid) 
+	std::vector<int> index2sid;					// Vector that keeps sid of issm mesh elements used in the neopz mesh (index) 
+	std::vector<int> specialelementsindex;		// Vector that keeps index of the special elements (created to avoid haning nodes) 
+	TPZGeoMesh *fathermesh;							// Entire mesh without refinement if refinement_type==1; refined with hanging nodes if efinement_type==0
+	TPZGeoMesh *previousmesh;						// Refined mesh without hanging nodes (it is always refpattern type), used to generate ISSM mesh
+	IssmDouble* x; 									// Entire mesh
+   IssmDouble* y;
+   int* elementslist;
+   int numberofvertices;
+   int numberofelements;	
+	/*}}}*/
+	/*Private methods{{{*/
+   void RefineMeshOneLevel(bool &verbose,double* gl_distance,double* if_distance,double* deviatoricerror,double* thicknesserror);
+	void RefineMeshWithSmoothing(bool &verbose,TPZGeoMesh* gmesh);
+	void RefineMeshToAvoidHangingNodes(bool &verbose,TPZGeoMesh* gmesh);
+	void DeleteSpecialElements(bool &verbose,TPZGeoMesh* gmesh);
+	void GetMesh(TPZGeoMesh* gmesh,int** pdata,double** pxy,int** pelements);
+	TPZGeoMesh* CreateRefPatternMesh(TPZGeoMesh* gmesh);
+   inline int GetElemMaterialID(){return 1;} 
+	inline int GetNumberOfNodes(){return 3;}
+	void PrintGMeshVTK(TPZGeoMesh *gmesh,std::ofstream &file,bool matColor=true);
+	int GetVTK_ElType(TPZGeoEl* gel);
+	int VerifyRefinementType(TPZGeoEl* geoel,TPZGeoMesh* gmesh);
+	/*}}}*/
+};
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/BarystaticContributions.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/BarystaticContributions.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/BarystaticContributions.cpp	(revision 27955)
@@ -0,0 +1,185 @@
+/*!\file BarystaticContributions.c
+ * \brief: implementation of the BarystaticContributions object
+ */
+
+/*Include files: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./BarystaticContributions.h" 
+#include "../toolkits/toolkits.h"
+#include "./classes.h"
+/*}}}*/
+
+/*Constructors and destructors:*/
+BarystaticContributions::BarystaticContributions(IoModel* iomodel ){ /*{{{*/
+
+	int nel;
+
+	iomodel->FetchData(&nice,"md.solidearth.npartice");
+	if(nice){
+		iomodel->FetchData(&pice,&nel,NULL,"md.solidearth.partitionice");
+		ice=new Vector<IssmDouble>(nice);
+		cumice=new Vector<IssmDouble>(nice); cumice->Set(0); cumice->Assemble();
+	}
+	else{
+		ice=new Vector<IssmDouble>(1);
+		cumice=new Vector<IssmDouble>(1);
+	}
+
+	iomodel->FetchData(&nhydro,"md.solidearth.nparthydro");
+	if(nhydro){
+		iomodel->FetchData(&phydro,&nel,NULL,"md.solidearth.partitionhydro");
+		hydro=new Vector<IssmDouble>(nhydro);
+		cumhydro=new Vector<IssmDouble>(nhydro); cumhydro->Set(0); cumhydro->Assemble();
+	}
+	else{
+		hydro=new Vector<IssmDouble>(1);
+		cumhydro=new Vector<IssmDouble>(1);
+	}
+	iomodel->FetchData(&nocean,"md.solidearth.npartocean");
+	if(nocean){
+		iomodel->FetchData(&pocean,&nel,NULL,"md.solidearth.partitionocean");
+		ocean=new Vector<IssmDouble>(nocean);
+		cumocean=new Vector<IssmDouble>(nocean); cumocean->Set(0); cumocean->Assemble();
+	}
+	else{
+		ocean=new Vector<IssmDouble>(1);
+		cumocean=new Vector<IssmDouble>(1);
+	}
+
+} /*}}}*/
+BarystaticContributions::~BarystaticContributions(){ /*{{{*/
+	delete ice;   delete cumice;
+	delete hydro; delete cumhydro;
+	delete ocean; delete cumocean;
+	if(nice)xDelete<IssmDouble>(pice);
+	if(nhydro)xDelete<IssmDouble>(phydro);
+	if(nocean)xDelete<IssmDouble>(pocean);
+}; /*}}}*/
+
+/*Support routines:*/
+IssmDouble BarystaticContributions::Total(){ /*{{{*/
+
+	IssmDouble  sumice,sumhydro,sumocean;
+
+	ice->Assemble();
+	hydro->Assemble();
+	ocean->Assemble();
+
+	ice->Sum(&sumice);
+	hydro->Sum(&sumhydro);
+	ocean->Sum(&sumocean);
+
+	return sumice+sumhydro+sumocean;
+
+} /*}}}*/
+IssmDouble BarystaticContributions::CumTotal(){ /*{{{*/
+
+	IssmDouble sumice,sumhydro,sumocean;
+
+	cumice->Assemble();
+	cumhydro->Assemble();
+	cumocean->Assemble();
+
+	cumice->Sum(&sumice);
+	cumhydro->Sum(&sumhydro);
+	cumocean->Sum(&sumocean);
+
+	return sumice+sumhydro+sumocean;
+
+} /*}}}*/
+void BarystaticContributions::Cumulate(Parameters* parameters){ /*{{{*/
+
+	cumice->AXPY(ice,1);
+	cumocean->AXPY(ocean,1);
+	cumhydro->AXPY(hydro,1);
+
+} /*}}}*/
+void BarystaticContributions::Set(int eid, IssmDouble icevalue, IssmDouble hydrovalue, IssmDouble oceanvalue){ /*{{{*/
+
+	int id;
+	if(nice){
+		id=reCast<int>(pice[eid]);
+		ice->SetValue(id,icevalue,ADD_VAL);
+	}
+	else{
+		ice->SetValue(0,icevalue,ADD_VAL);
+	}
+
+	if(nhydro){
+		id=reCast<int>(phydro[eid]);
+		hydro->SetValue(id,hydrovalue,ADD_VAL);
+	}
+	else{
+		hydro->SetValue(0,hydrovalue,ADD_VAL);
+	}
+
+	if(nocean){
+		id=reCast<int>(pocean[eid]);
+		ocean->SetValue(id,oceanvalue,ADD_VAL);
+	}
+	else{
+		ocean->SetValue(0,oceanvalue,ADD_VAL);
+	}
+
+} /*}}}*/
+void BarystaticContributions::Reset(){ /*{{{*/
+
+	ice->Set(0.);
+	hydro->Set(0.);
+	ocean->Set(0.);
+
+} /*}}}*/
+void BarystaticContributions::Save(Results* results, Parameters* parameters, IssmDouble oceanarea){ /*{{{*/
+
+	int        step;
+	IssmDouble time;
+	IssmDouble rho_water;
+
+	IssmDouble* cumice_serial=NULL;
+	IssmDouble* cumhydro_serial=NULL;
+	IssmDouble* cumocean_serial=NULL;
+
+	IssmDouble sumice,sumhydro,sumocean;
+
+	parameters->FindParam(&step,StepEnum);
+	parameters->FindParam(&time,TimeEnum);
+	parameters->FindParam(&rho_water,MaterialsRhoSeawaterEnum);
+
+	ice->Sum(&sumice); hydro->Sum(&sumhydro); ocean->Sum(&sumocean);
+	results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,BslcEnum,this->Total()/oceanarea/rho_water,step,time));
+	results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,BslcIceEnum,sumice/oceanarea/rho_water,step,time));
+	results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,BslcHydroEnum,sumice/oceanarea/rho_water,step,time));
+	results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,BslcOceanEnum,sumocean/oceanarea/rho_water,step,time));
+
+	cumice->Sum(&sumice); cumhydro->Sum(&sumhydro); cumocean->Sum(&sumocean);
+	results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,CumBslcEnum,this->CumTotal()/oceanarea/rho_water,step,time));
+	results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,CumBslcIceEnum,sumice/oceanarea/rho_water,step,time));
+	results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,CumBslcHydroEnum,sumhydro/oceanarea/rho_water,step,time));
+	results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,CumBslcOceanEnum,sumocean/oceanarea/rho_water,step,time));
+
+	if(nice){
+		cumice_serial=this->cumice->ToMPISerial0(); for (int i=0;i<nice;i++)cumice_serial[i]=cumice_serial[i]/oceanarea/rho_water;
+		results->AddResult(new GenericExternalResult<IssmDouble*>(results->Size()+1,CumBslcIcePartitionEnum,cumice_serial,nice,1,step,time));
+	}
+	if(nhydro){
+		cumhydro_serial=this->cumhydro->ToMPISerial0(); for (int i=0;i<nhydro;i++)cumhydro_serial[i]=cumhydro_serial[i]/oceanarea/rho_water;
+		results->AddResult(new GenericExternalResult<IssmDouble*>(results->Size()+1,CumBslcHydroPartitionEnum,cumhydro_serial,nhydro,1,step,time));
+	}
+	if(nocean){
+		cumocean_serial=this->cumocean->ToMPISerial0(); for (int i=0;i<nocean;i++)cumocean_serial[i]=cumocean_serial[i]/oceanarea/rho_water;
+		results->AddResult(new GenericExternalResult<IssmDouble*>(results->Size()+1,CumBslcOceanPartitionEnum,cumocean_serial,nocean,1,step,time));
+	}
+
+	if(IssmComm::GetRank()==0){
+		if(nice)xDelete<IssmDouble>(cumice_serial);
+		if(nhydro)xDelete<IssmDouble>(cumhydro_serial);
+		if(nocean)xDelete<IssmDouble>(cumocean_serial);
+	}
+	return;
+
+} /*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/BarystaticContributions.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/BarystaticContributions.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/BarystaticContributions.h	(revision 27955)
@@ -0,0 +1,47 @@
+/*!\file BarystaticContributions.h
+ * \brief: header file for barystatic contribution object
+ */
+
+#ifndef _BARYSTATICCONTRIBUTIONS_H_
+#define _BARYSTATICCONTRIBUTIONS_H_
+
+/*Headers:*/
+class IoModel;
+class Parameters;
+class Results;
+template <class doubletype> class Vector;
+#include "../shared/shared.h"
+
+class BarystaticContributions {
+
+	public: 
+
+		Vector<IssmDouble>* ice;  //contributions to every ice partition (size nice x 1)
+		Vector<IssmDouble>* cumice;  //cumulated contributions to every ice partition
+		int                 nice; //number of ice partitions 
+		IssmDouble*         pice; //ice partition (nel)
+
+		Vector<IssmDouble>* hydro;  //contributions to every hydro partition (size nhydro x 1)
+		Vector<IssmDouble>* cumhydro;  //cumulated contributions to every hydro partition
+		int                 nhydro; //number of hydro partitions 
+		IssmDouble*         phydro; //hydro partition (nel)
+
+		Vector<IssmDouble>* ocean;  //contributions to every ocean partition (size nocean x 1)
+		Vector<IssmDouble>* cumocean;  //cumulated contributions to every ocean partition
+		int                 nocean; //number of ocean partitions 
+		IssmDouble*         pocean; //ocean partition (nel)
+
+		/*BarystaticContributions constructors, destructors :*/
+		BarystaticContributions(IoModel* iomodel );
+		~BarystaticContributions();
+
+		/*routines:*/
+		IssmDouble Total();
+		IssmDouble CumTotal();
+		void Cumulate(Parameters* parameters);
+		void Save(Results* results, Parameters* parameters, IssmDouble oceanarea);
+		void Set(int eid, IssmDouble icevalue, IssmDouble hydrovalue, IssmDouble oceanvalue);
+		void Reset();
+
+};
+#endif  /* _BARYSTATICCONTRIBUTIONS_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfdragcoeffabsgrad.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfdragcoeffabsgrad.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfdragcoeffabsgrad.cpp	(revision 27955)
@@ -0,0 +1,206 @@
+/*!\file Cfdragcoeffabsgrad.cpp
+ * \brief: Cfdragcoeffabsgrad Object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./classes.h"
+#include "./ExternalResults/ExternalResult.h"
+#include "./ExternalResults/Results.h"
+#include "../datastructures/datastructures.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "../modules/SurfaceAreax/SurfaceAreax.h"
+#include "../classes/Params/Parameters.h"
+#include "../classes/gauss/Gauss.h"
+#include "./Inputs/DatasetInput.h"
+/*}}}*/
+
+/*Cfdragcoeffabsgrad constructors, destructors :*/
+Cfdragcoeffabsgrad::Cfdragcoeffabsgrad(){/*{{{*/
+
+	this->definitionenum = -1;
+	this->name = NULL;
+	this->J = 0.;
+	this->firsttimepassed = false;
+}
+/*}}}*/
+Cfdragcoeffabsgrad::Cfdragcoeffabsgrad(char* in_name, int in_definitionenum){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+
+	this->name		= xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->J = 0.;
+	this->firsttimepassed = false;
+}
+/*}}}*/
+Cfdragcoeffabsgrad::Cfdragcoeffabsgrad(char* in_name, int in_definitionenum, IssmDouble in_J){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+
+	this->name		= xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->J = in_J;
+	this->firsttimepassed = false;
+}
+/*}}}*/
+Cfdragcoeffabsgrad::Cfdragcoeffabsgrad(char* in_name, int in_definitionenum, IssmDouble in_J, bool in_firsttimepassed){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+
+	this->name		= xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->J = in_J;
+	this->firsttimepassed = in_firsttimepassed;
+}
+/*}}}*/
+Cfdragcoeffabsgrad::~Cfdragcoeffabsgrad(){/*{{{*/
+	if(this->name)xDelete(this->name);
+}
+/*}}}*/
+/*Object virtual function resolutoin: */
+Object* Cfdragcoeffabsgrad::copy() {/*{{{*/
+	Cfdragcoeffabsgrad* mf = new Cfdragcoeffabsgrad(this->name,this->definitionenum, this->J, this->firsttimepassed);
+	return (Object*) mf;
+}
+/*}}}*/
+void Cfdragcoeffabsgrad::DeepEcho(void){/*{{{*/
+	this->Echo();
+}
+/*}}}*/
+void Cfdragcoeffabsgrad::Echo(void){/*{{{*/
+	_printf_(" Cfdragcoeffabsgrad: " << name << " " << this->definitionenum << "\n");
+}
+/*}}}*/
+int Cfdragcoeffabsgrad::Id(void){/*{{{*/
+	return -1;
+}
+/*}}}*/
+void Cfdragcoeffabsgrad::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+
+	/*ok, marshall operations: */
+   int object_enum=CfdragcoeffabsgradEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->definitionenum);
+	marshallhandle->call(this->name);
+	marshallhandle->call(this->J);
+	marshallhandle->call(this->firsttimepassed);
+} 
+/*}}}*/
+int Cfdragcoeffabsgrad::ObjectEnum(void){/*{{{*/
+	return CfdragcoeffabsgradEnum;
+}
+/*}}}*/
+/*Definition virtual function resolutoin: */
+int Cfdragcoeffabsgrad::DefinitionEnum(){/*{{{*/
+	return this->definitionenum;
+}
+/*}}}*/
+char* Cfdragcoeffabsgrad::Name(){/*{{{*/
+	char* name2=xNew<char>(strlen(this->name)+1);
+	xMemCpy(name2,this->name,strlen(this->name)+1);
+
+	return name2;
+}
+/*}}}*/
+IssmDouble Cfdragcoeffabsgrad::Response(FemModel* femmodel){/*{{{*/
+
+	/*recover parameters: */
+	IssmDouble J_part=0.;
+	IssmDouble J_sum=0.;
+
+	if (!this->firsttimepassed){
+		for(Object* & object : femmodel->elements->objects){
+			Element* element=xDynamicCast<Element*>(object);
+			J_part+=this->Cfdragcoeffabsgrad_Calculation(element);
+		}
+
+		ISSM_MPI_Allreduce ( (void*)&J_part,(void*)&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+		this->J=J_sum;
+
+		this->firsttimepassed = true;
+	}
+	return this->J;
+}/*}}}*/
+IssmDouble Cfdragcoeffabsgrad::Cfdragcoeffabsgrad_Calculation(Element* element){/*{{{*/
+
+	int        domaintype,numcomponents,frictionlaw;
+	IssmDouble Jelem=0.;
+	IssmDouble Jdet;
+	IssmDouble dp[2],weight;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnBase()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn surface element*/
+	Element* basalelement = element->SpawnBasalElement();
+
+	/* Get node coordinates*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Get input if it already exists*/
+	DatasetInput *datasetinput = basalelement->GetDatasetInput(definitionenum);  _assert_(datasetinput);
+	Input        *drag_input   = NULL;
+
+	/* get the friction law: if 2-Weertman, 11-Schoof, 14-RegularizedCoulomb 15-RegularizedCoulomb2, which has a different names of C */
+	element->FindParam(&frictionlaw, FrictionLawEnum);
+	switch(frictionlaw) {
+		case 2:
+		case 11:
+		case 14:
+		case 15:
+			drag_input = basalelement->GetInput(FrictionCEnum); _assert_(drag_input);
+			break;
+		default:
+			drag_input = basalelement->GetInput(FrictionCoefficientEnum); _assert_(drag_input);
+	}
+
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		datasetinput->GetInputValue(&weight,gauss,WeightsSurfaceObservationEnum);
+		drag_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+
+		/*Add to cost function*/
+		Jelem+=weight*.5*dp[0]*dp[0]*Jdet*gauss->weight;
+		if(numcomponents==2) Jelem+=weight*.5*dp[1]*dp[1]*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfdragcoeffabsgrad.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfdragcoeffabsgrad.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfdragcoeffabsgrad.h	(revision 27955)
@@ -0,0 +1,44 @@
+/*!\file Cfdragcoeffabsgrad.h
+ * \brief: header file for Cfdragcoeffabsgrad object
+ */
+
+#ifndef _CFDRAGCOEFFABSGRAD_H_
+#define _CFDRAGCOEFFABSGRAD_H_
+
+/*Headers:*/
+#include "./Definition.h"
+#include "./FemModel.h"
+
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum);
+
+class Cfdragcoeffabsgrad: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		char       *name;
+		bool			firsttimepassed;
+		IssmDouble  J;
+
+		/*Cfdragcoeffabsgrad constructors, destructors :*/
+		Cfdragcoeffabsgrad();
+		Cfdragcoeffabsgrad(char* in_name, int in_definitionenum);
+		Cfdragcoeffabsgrad(char* in_name, int in_definitionenum, IssmDouble in_J);
+		Cfdragcoeffabsgrad(char* in_name, int in_definitionenum, IssmDouble in_J, bool in_firsttimepassed);
+		~Cfdragcoeffabsgrad();
+
+		/*Object virtual function resolutoin: */
+		Object *copy();
+		void    DeepEcho(void);
+		void    Echo(void);
+		int     Id(void);
+		void    Marshall(MarshallHandle  *marshallhandle);
+		int     ObjectEnum(void);
+
+		/*Definition virtual function resolutoin: */
+		int         DefinitionEnum();
+		char       *Name();
+		IssmDouble  Response(FemModel                       *femmodel);
+		IssmDouble  Cfdragcoeffabsgrad_Calculation(Element  *element);
+};
+#endif  /* _CFDRAGCOEFFABSGRAD_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfdragcoeffabsgradtransient.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfdragcoeffabsgradtransient.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfdragcoeffabsgradtransient.cpp	(revision 27955)
@@ -0,0 +1,243 @@
+/*!\file Cfdragcoeffabsgradtransient.cpp
+ * \brief: Cfdragcoeffabsgradtransient Object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./classes.h"
+#include "./ExternalResults/ExternalResult.h"
+#include "./ExternalResults/Results.h"
+#include "../datastructures/datastructures.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "../modules/SurfaceAreax/SurfaceAreax.h"
+#include "../classes/Params/Parameters.h"
+#include "../classes/gauss/Gauss.h"
+#include "./Inputs/DatasetInput.h"
+/*}}}*/
+
+/*Cfdragcoeffabsgradtransient constructors, destructors :*/
+Cfdragcoeffabsgradtransient::Cfdragcoeffabsgradtransient(){/*{{{*/
+
+	this->definitionenum = -1;
+	this->name = NULL;
+	this->datatimes         = NULL;
+	this->passedflags   = NULL;
+	this->J = 0.;
+}
+/*}}}*/
+Cfdragcoeffabsgradtransient::Cfdragcoeffabsgradtransient(char* in_name, int in_definitionenum, int in_num_datatimes, IssmDouble* in_datatimes, bool* in_passedflags, IssmDouble in_J){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+
+	this->name		= xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+	
+	this->num_datatimes = in_num_datatimes;
+
+	/*Allocate arrays*/
+	_assert_(this->num_datatimes>0);
+	this->datatimes   = xNew<IssmDouble>(this->num_datatimes);
+	this->passedflags = xNew<bool>(this->num_datatimes);
+	xMemCpy<IssmDouble>(this->datatimes,in_datatimes,this->num_datatimes);
+	xMemCpy<bool>(this->passedflags,in_passedflags,this->num_datatimes);
+
+	this->J = in_J;
+}
+/*}}}*/
+Cfdragcoeffabsgradtransient::Cfdragcoeffabsgradtransient(char* in_name, int in_definitionenum, int in_num_datatimes, IssmDouble* in_datatimes){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+
+	this->name		= xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->num_datatimes = in_num_datatimes;
+
+	/*Allocate arrays*/
+	_assert_(this->num_datatimes>0);
+	this->datatimes   = xNew<IssmDouble>(this->num_datatimes);
+	this->passedflags = xNew<bool>(this->num_datatimes);
+	xMemCpy<IssmDouble>(this->datatimes,in_datatimes,this->num_datatimes);
+
+	/*initialize passedtimes to false*/
+	for(int i=0;i<this->num_datatimes;i++) this->passedflags[i]= false;
+	this->J = 0;
+}
+/*}}}*/
+Cfdragcoeffabsgradtransient::~Cfdragcoeffabsgradtransient(){/*{{{*/
+	if(this->name)xDelete(this->name);
+	if(this->datatimes) xDelete(this->datatimes);
+	if(this->passedflags) xDelete(this->passedflags);
+}
+/*}}}*/
+/*Object virtual function resolutoin: */
+Object* Cfdragcoeffabsgradtransient::copy() {/*{{{*/
+	Cfdragcoeffabsgradtransient* mf = new Cfdragcoeffabsgradtransient(this->name,this->definitionenum, this->num_datatimes, this->datatimes,this->passedflags, this->J);
+	return (Object*) mf;
+}
+/*}}}*/
+void Cfdragcoeffabsgradtransient::DeepEcho(void){/*{{{*/
+	this->Echo();
+}
+/*}}}*/
+void Cfdragcoeffabsgradtransient::Echo(void){/*{{{*/
+	_printf_(" Cfdragcoeffabsgradtransient: " << name << " " << this->definitionenum << "\n");
+	_error_("not implemented yet");
+}
+/*}}}*/
+int Cfdragcoeffabsgradtransient::Id(void){/*{{{*/
+	return -1;
+}
+/*}}}*/
+void Cfdragcoeffabsgradtransient::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+
+	/*ok, marshall operations: */
+   int object_enum=CfdragcoeffabsgradtransientEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->definitionenum);
+	marshallhandle->call(this->name);
+	marshallhandle->call(this->num_datatimes);
+   marshallhandle->call(this->datatimes,this->num_datatimes);
+   marshallhandle->call(this->passedflags,this->num_datatimes);
+   marshallhandle->call(this->J);
+} 
+/*}}}*/
+int Cfdragcoeffabsgradtransient::ObjectEnum(void){/*{{{*/
+	return CfdragcoeffabsgradtransientEnum;
+}
+/*}}}*/
+/*Definition virtual function resolutoin: */
+int Cfdragcoeffabsgradtransient::DefinitionEnum(){/*{{{*/
+	return this->definitionenum;
+}
+/*}}}*/
+char* Cfdragcoeffabsgradtransient::Name(){/*{{{*/
+	char* name2=xNew<char>(strlen(this->name)+1);
+	xMemCpy(name2,this->name,strlen(this->name)+1);
+
+	return name2;
+}
+/*}}}*/
+IssmDouble Cfdragcoeffabsgradtransient::Response(FemModel* femmodel){/*{{{*/
+
+	/*recover time parameters: */
+	IssmDouble time;
+	femmodel->parameters->FindParam(&time,TimeEnum);
+	
+	/*Find closest datatime that is less than time*/
+	int pos=-1;
+	for(int i=0;i<this->num_datatimes;i++){
+		if(this->datatimes[i]<=time){
+			pos = i;
+		}
+		else{
+			break;
+		}
+	}
+
+	/*if pos=-1, time is earlier than the first data observation in this dataset*/
+	if(pos==-1){
+		_assert_(this->J==0.);
+		return 0.;
+	}
+
+	/*Check that we have not yet calculated this cost function*/
+	if(this->passedflags[pos]){
+		return this->J;
+	}
+	
+	/*Calculate cost function for this time slice*/
+	IssmDouble J_part=0.;
+	IssmDouble J_sum=0.;
+
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		J_part+=this->Cfdragcoeffabsgradtransient_Calculation(element);
+	}
+
+	ISSM_MPI_Allreduce ( (void*)&J_part,(void*)&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	this->passedflags[pos]= true;
+	this->J += J_sum;
+	
+	return this->J;
+}/*}}}*/
+IssmDouble Cfdragcoeffabsgradtransient::Cfdragcoeffabsgradtransient_Calculation(Element* element){/*{{{*/
+
+	int        domaintype,numcomponents,frictionlaw;
+	IssmDouble Jelem=0.;
+	IssmDouble Jdet;
+	IssmDouble dp[2],weight;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnBase()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn surface element*/
+	Element* basalelement = element->SpawnBasalElement();
+
+	/* Get node coordinates*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Get input if it already exists*/
+	DatasetInput *datasetinput = basalelement->GetDatasetInput(definitionenum);  _assert_(datasetinput);
+	Input        *drag_input   = NULL;
+
+	/* get the friction law: if 2-Weertman, 11-Schoof, 14-RegularizedCoulomb 15-RegularizedCoulomb2, which has a different names of C */
+	element->FindParam(&frictionlaw, FrictionLawEnum);
+	switch(frictionlaw) {
+		case 2:
+		case 11:
+		case 14:
+		case 15:
+			drag_input = basalelement->GetInput(FrictionCEnum); _assert_(drag_input);
+			break;
+		default:
+			drag_input = basalelement->GetInput(FrictionCoefficientEnum); _assert_(drag_input);
+	}
+
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		datasetinput->GetInputValue(&weight,gauss,WeightsSurfaceObservationEnum);
+		drag_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+
+		/*Add to cost function*/
+		Jelem+=weight*.5*dp[0]*dp[0]*Jdet*gauss->weight;
+		if(numcomponents==2) Jelem+=weight*.5*dp[1]*dp[1]*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfdragcoeffabsgradtransient.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfdragcoeffabsgradtransient.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfdragcoeffabsgradtransient.h	(revision 27955)
@@ -0,0 +1,45 @@
+/*!\file Cfdragcoeffabsgradtransient.h
+ * \brief: header file for Cfdragcoeffabsgradtransient object
+ */
+
+#ifndef _CFDRAGCOEFFABSGRADTRANSIENT_H_
+#define _CFDRAGCOEFFABSGRADTRANSIENT_H_
+
+/*Headers:*/
+#include "./Definition.h"
+class FemModel;
+
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum);
+
+class Cfdragcoeffabsgradtransient: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		char       *name;
+		int         num_datatimes;
+		IssmDouble *datatimes;
+		bool       *passedflags;
+		IssmDouble  J;
+
+		/*Cfdragcoeffabsgradtransient constructors, destructors :*/
+		Cfdragcoeffabsgradtransient();
+		Cfdragcoeffabsgradtransient(char* in_name, int in_definitionenum, int num_datatimes, IssmDouble* in_datatime);
+		Cfdragcoeffabsgradtransient(char* in_name, int in_definitionenum, int num_datatimes, IssmDouble* in_datatime, bool* in_timepassedflag, IssmDouble in_J);
+		~Cfdragcoeffabsgradtransient();
+
+		/*Object virtual function resolutoin: */
+		Object *copy();
+		void    DeepEcho(void);
+		void    Echo(void);
+		int     Id(void);
+		void    Marshall(MarshallHandle  *marshallhandle);
+		int     ObjectEnum(void);
+
+		/*Definition virtual function resolutoin: */
+		int         DefinitionEnum();
+		char       *Name();
+		IssmDouble  Response(FemModel                       *femmodel);
+		IssmDouble  Cfdragcoeffabsgradtransient_Calculation(Element  *element);
+};
+#endif  /* _CFDRAGCOEFFABSGRADTRANSIENT_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cflevelsetmisfit.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cflevelsetmisfit.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cflevelsetmisfit.cpp	(revision 27955)
@@ -0,0 +1,216 @@
+/*!\file Cflevelsetmisfit.cpp
+ * \brief: Cflevelsetmisfit Object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./classes.h"
+#include "./ExternalResults/ExternalResult.h"
+#include "./ExternalResults/Results.h"
+#include "../datastructures/datastructures.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "../modules/SurfaceAreax/SurfaceAreax.h"
+#include "../classes/Params/Parameters.h"
+#include "../classes/gauss/Gauss.h"
+#include "./Inputs/DatasetInput.h"
+/*}}}*/
+
+/*Cflevelsetmisfit constructors, destructors :*/
+Cflevelsetmisfit::Cflevelsetmisfit(){/*{{{*/
+
+	this->definitionenum = -1;
+	this->name = NULL;
+	this->model_enum = UNDEF;
+	this->datatime=0.;
+	this->timepassedflag = false;
+	this->J = 0.;
+}
+/*}}}*/
+Cflevelsetmisfit::Cflevelsetmisfit(char* in_name, int in_definitionenum, int in_model_enum, IssmDouble in_datatime){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+
+	this->name		= xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->model_enum=in_model_enum;
+	this->datatime=in_datatime;
+	this->timepassedflag=false;
+	this->J = 0.;
+}
+/*}}}*/
+Cflevelsetmisfit::Cflevelsetmisfit(char* in_name, int in_definitionenum, int in_model_enum, IssmDouble in_datatime, bool in_timepassedflag, IssmDouble in_J){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+
+	this->name		= xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->model_enum=in_model_enum;
+	this->datatime=in_datatime;
+	this->timepassedflag=in_timepassedflag;
+	this->J = in_J;
+}
+/*}}}*/
+Cflevelsetmisfit::~Cflevelsetmisfit(){/*{{{*/
+	if(this->name)xDelete(this->name);
+}
+/*}}}*/
+/*Object virtual function resolutoin: */
+Object* Cflevelsetmisfit::copy() {/*{{{*/
+	Cflevelsetmisfit* mf = new Cflevelsetmisfit(this->name,this->definitionenum, this->model_enum,this->datatime,this->timepassedflag, this->J);
+	return (Object*) mf;
+}
+/*}}}*/
+void Cflevelsetmisfit::DeepEcho(void){/*{{{*/
+	this->Echo();
+}
+/*}}}*/
+void Cflevelsetmisfit::Echo(void){/*{{{*/
+	_printf_(" Cflevelsetmisfit: " << name << " " << this->definitionenum << "\n");
+	_printf_("    model_enum: " << model_enum << " " << EnumToStringx(model_enum) << "\n");
+	_printf_("    datatime: " << datatime << "\n");
+	_printf_("	  timepassedflag: "<<timepassedflag<<"\n");
+}
+/*}}}*/
+int Cflevelsetmisfit::Id(void){/*{{{*/
+	return -1;
+}
+/*}}}*/
+void Cflevelsetmisfit::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+
+	/*ok, marshall operations: */
+   int object_enum=CflevelsetmisfitEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->definitionenum);
+	marshallhandle->call(this->model_enum);
+	marshallhandle->call(this->name);
+	marshallhandle->call(this->datatime);
+	marshallhandle->call(this->timepassedflag);
+	marshallhandle->call(this->J);
+} 
+/*}}}*/
+int Cflevelsetmisfit::ObjectEnum(void){/*{{{*/
+	return CflevelsetmisfitEnum;
+}
+/*}}}*/
+/*Definition virtual function resolutoin: */
+int Cflevelsetmisfit::DefinitionEnum(){/*{{{*/
+	return this->definitionenum;
+}
+/*}}}*/
+char* Cflevelsetmisfit::Name(){/*{{{*/
+	char* name2=xNew<char>(strlen(this->name)+1);
+	xMemCpy(name2,this->name,strlen(this->name)+1);
+
+	return name2;
+}
+/*}}}*/
+IssmDouble Cflevelsetmisfit::Response(FemModel* femmodel){/*{{{*/
+	 /*diverse: */
+	 IssmDouble time;
+
+	 /*recover time parameters: */
+	 femmodel->parameters->FindParam(&time,TimeEnum);
+	 if(datatime<=time && !timepassedflag){
+
+		 IssmDouble J_part = 0.;
+		 IssmDouble J_sum  = 0.;
+
+		 for(Object* & object : femmodel->elements->objects){
+			 Element* element=xDynamicCast<Element*>(object);
+			 J_part+=this->Cflevelsetmisfit_Calculation(element,model_enum);
+		 }
+
+		 ISSM_MPI_Allreduce ( (void*)&J_part,(void*)&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		 ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+		 this->timepassedflag = true;
+		 this->J = J_sum;
+	 }
+
+	 return this->J;
+ }/*}}}*/
+IssmDouble Cflevelsetmisfit::Cflevelsetmisfit_Calculation(Element* element, int model_enum){/*{{{*/
+
+	int        domaintype,numcomponents;
+	IssmDouble Jelem=0.;
+	IssmDouble misfit,Jdet;
+	IssmDouble model,obs,weight;
+	IssmDouble modelLevel,obsLevel;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnSurface()) return 0.;
+
+	/*If on water, return 0: */
+//	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn surface element*/
+	Element* topelement = element->SpawnTopElement();
+
+	/* Get node coordinates*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	DatasetInput *datasetinput = topelement->GetDatasetInput(definitionenum); _assert_(datasetinput);
+	Input        *model_input  = topelement->GetInput(model_enum);            _assert_(model_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(2);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		datasetinput->GetInputValue(&weight,gauss,WeightsLevelsetObservationEnum);
+		model_input->GetInputValue(&model,gauss);
+		datasetinput->GetInputValue(&obs,gauss,LevelsetObservationEnum);
+
+		/*Compute Levelset misfit:
+		 *  J = || H(\phi) - H(\phi_obs)||^2
+		 *                                           */
+//		modelLevel = this->Heaviside(model);
+//		obsLevel = this->Heaviside(obs);
+		modelLevel = model;
+		obsLevel = obs;
+
+		misfit=0.5*(modelLevel-obsLevel)*(modelLevel-obsLevel);
+
+//		if (modelLevel*obsLevel<0.0) {
+		/*Add to cost function*/
+			Jelem+=misfit*weight*Jdet*gauss->weight;
+//		}
+	}
+
+	/*clean up and Return: */
+	if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}/*}}}*/
+IssmDouble Cflevelsetmisfit::Heaviside(IssmDouble x){/*{{{*/
+	if (x>0) return 1.;
+	else if (x<0) return -1.;
+	else return 0.;
+}
+	/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cflevelsetmisfit.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cflevelsetmisfit.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cflevelsetmisfit.h	(revision 27955)
@@ -0,0 +1,46 @@
+/*!\file Cflevelsetmisfit.h
+ * \brief: header file for Cflevelsetmisfit object
+ */
+
+#ifndef _CFLEVELSETMISFIT_H_
+#define _CFLEVELSETMISFIT_H_
+
+/*Headers:*/
+#include "./Definition.h"
+#include "./FemModel.h"
+
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum);
+
+class Cflevelsetmisfit: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		int         model_enum;
+		char       *name;
+		IssmDouble  datatime;
+		bool        timepassedflag;
+		IssmDouble  J;
+
+		/*Cflevelsetmisfit constructors, destructors :*/
+		Cflevelsetmisfit();
+		Cflevelsetmisfit(char* in_name, int in_definitionenum, int in_model_enum, IssmDouble in_datatime);
+		Cflevelsetmisfit(char* in_name, int in_definitionenum, int in_model_enum, IssmDouble in_datatime, bool timepassedflag, IssmDouble in_J);
+		~Cflevelsetmisfit();
+
+		/*Object virtual function resolutoin: */
+		Object* copy();
+		void DeepEcho(void);
+		void Echo(void);
+		int Id(void);
+		void Marshall(MarshallHandle* marshallhandle);
+		int ObjectEnum(void);
+
+		/*Definition virtual function resolutoin: */
+		int DefinitionEnum();
+		char* Name();
+		IssmDouble Response(FemModel* femmodel);
+		IssmDouble Cflevelsetmisfit_Calculation(Element* element, int model_enum);
+		IssmDouble Heaviside(IssmDouble x);
+};
+#endif  /* _CFLEVELSETMISFIT_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfrheologybbarabsgrad.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfrheologybbarabsgrad.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfrheologybbarabsgrad.cpp	(revision 27955)
@@ -0,0 +1,192 @@
+/*!\file Cfrheologybbarabsgrad.cpp
+ * \brief: Cfrheologybbarabsgrad Object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./classes.h"
+#include "./ExternalResults/ExternalResult.h"
+#include "./ExternalResults/Results.h"
+#include "../datastructures/datastructures.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "../modules/SurfaceAreax/SurfaceAreax.h"
+#include "../classes/Params/Parameters.h"
+#include "../classes/gauss/Gauss.h"
+#include "./Inputs/DatasetInput.h"
+/*}}}*/
+
+/*Cfrheologybbarabsgrad constructors, destructors :*/
+Cfrheologybbarabsgrad::Cfrheologybbarabsgrad(){/*{{{*/
+
+	this->definitionenum = -1;
+	this->name = NULL;
+	this->J = 0.;
+	this->firsttimepassed = false;
+}
+/*}}}*/
+Cfrheologybbarabsgrad::Cfrheologybbarabsgrad(char* in_name, int in_definitionenum){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+
+	this->name		= xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->J=0;
+	this->firsttimepassed = false;
+}
+/*}}}*/
+Cfrheologybbarabsgrad::Cfrheologybbarabsgrad(char* in_name, int in_definitionenum, IssmDouble in_J){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+
+	this->name		= xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->J=in_J;
+	this->firsttimepassed = false;
+}
+/*}}}*/
+Cfrheologybbarabsgrad::Cfrheologybbarabsgrad(char* in_name, int in_definitionenum, IssmDouble in_J, bool in_firsttimepassed){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+
+	this->name		= xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->J=in_J;
+	this->firsttimepassed = in_firsttimepassed;
+}
+/*}}}*/
+Cfrheologybbarabsgrad::~Cfrheologybbarabsgrad(){/*{{{*/
+	if(this->name)xDelete(this->name);
+}
+/*}}}*/
+/*Object virtual function resolutoin: */
+Object* Cfrheologybbarabsgrad::copy() {/*{{{*/
+	Cfrheologybbarabsgrad* mf = new Cfrheologybbarabsgrad(this->name,this->definitionenum, this->J, this->firsttimepassed);
+	return (Object*) mf;
+}
+/*}}}*/
+void Cfrheologybbarabsgrad::DeepEcho(void){/*{{{*/
+	this->Echo();
+}
+/*}}}*/
+void Cfrheologybbarabsgrad::Echo(void){/*{{{*/
+	_printf_(" Cfrheologybbarabsgrad: " << name << " " << this->definitionenum << "\n");
+}
+/*}}}*/
+int Cfrheologybbarabsgrad::Id(void){/*{{{*/
+	return -1;
+}
+/*}}}*/
+void Cfrheologybbarabsgrad::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+	
+	/*ok, marshall operations: */
+	int object_enum=CfrheologybbarabsgradEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->definitionenum);
+	marshallhandle->call(this->name);
+	marshallhandle->call(this->J);
+	marshallhandle->call(this->firsttimepassed);
+} 
+/*}}}*/
+int Cfrheologybbarabsgrad::ObjectEnum(void){/*{{{*/
+	return CfrheologybbarabsgradEnum;
+}
+/*}}}*/
+/*Definition virtual function resolutoin: */
+int Cfrheologybbarabsgrad::DefinitionEnum(){/*{{{*/
+	return this->definitionenum;
+}
+/*}}}*/
+char* Cfrheologybbarabsgrad::Name(){/*{{{*/
+	char* name2=xNew<char>(strlen(this->name)+1);
+	xMemCpy(name2,this->name,strlen(this->name)+1);
+
+	return name2;
+}
+/*}}}*/
+IssmDouble Cfrheologybbarabsgrad::Response(FemModel* femmodel){/*{{{*/
+
+	/*recover parameters: */
+	IssmDouble J_part=0.;
+	IssmDouble J_sum=0.;
+
+	if (!this->firsttimepassed){
+		for(Object* & object : femmodel->elements->objects){
+			Element* element=xDynamicCast<Element*>(object);
+			J_part+=this->Cfrheologybbarabsgrad_Calculation(element);
+		}
+
+		ISSM_MPI_Allreduce( (void*)&J_part,(void*)&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+		this->J = J_sum;
+
+		this->firsttimepassed = true;
+	}
+	return this->J;
+}/*}}}*/
+IssmDouble Cfrheologybbarabsgrad::Cfrheologybbarabsgrad_Calculation(Element* element){/*{{{*/
+
+	int        domaintype,numcomponents;
+	IssmDouble Jelem=0.;
+	IssmDouble Jdet;
+	IssmDouble dp[2],weight;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnBase()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn surface element*/
+	Element* basalelement = element->SpawnBasalElement();
+
+	/* Get node coordinates*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Get input if it already exists*/
+	DatasetInput *datasetinput = basalelement->GetDatasetInput(definitionenum);  _assert_(datasetinput);
+	Input* rheologyb_input=basalelement->GetInput(MaterialsRheologyBbarEnum);                  _assert_(rheologyb_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		datasetinput->GetInputValue(&weight,gauss,WeightsSurfaceObservationEnum);
+		rheologyb_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+
+		/*Add to cost function*/
+		Jelem+=weight*.5*dp[0]*dp[0]*Jdet*gauss->weight;
+		if(numcomponents==2) Jelem+=weight*.5*dp[1]*dp[1]*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfrheologybbarabsgrad.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfrheologybbarabsgrad.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfrheologybbarabsgrad.h	(revision 27955)
@@ -0,0 +1,45 @@
+/*!\file Cfrheologybbarabsgrad.h
+ * \brief: header file for Cfrheologybbarabsgrad object
+ */
+
+#ifndef _CFRHEOLOGYBBARABSGRAD_H_
+#define _CFRHEOLOGYBBARABSGRAD_H_
+
+/*Headers:*/
+#include "./Definition.h"
+#include "./FemModel.h"
+
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum);
+void  GetVectorFromInputsx( IssmDouble** pvector, int* pvector_size, FemModel* femmodel,int name);
+
+class Cfrheologybbarabsgrad: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		char*       name;
+		bool			firsttimepassed;
+		IssmDouble  J;
+
+		/*Cfrheologybbarabsgrad constructors, destructors :*/
+		Cfrheologybbarabsgrad();
+		Cfrheologybbarabsgrad(char* in_name, int in_definitionenum);
+		Cfrheologybbarabsgrad(char* in_name, int in_definitionenum, IssmDouble in_J);
+		Cfrheologybbarabsgrad(char* in_name, int in_definitionenum, IssmDouble in_J, bool in_firsttimepassed);
+		~Cfrheologybbarabsgrad();
+
+		/*Object virtual function resolutoin: */
+		Object* copy();
+		void DeepEcho(void);
+		void Echo(void);
+		int Id(void);
+		void Marshall(MarshallHandle* marshallhandle);
+		int ObjectEnum(void);
+
+		/*Definition virtual function resolutoin: */
+		int DefinitionEnum();
+		char* Name();
+		IssmDouble Response(FemModel* femmodel);
+		IssmDouble Cfrheologybbarabsgrad_Calculation(Element* element);
+};
+#endif  /* _CFRHEOLOGYBBARABSGRAD_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfrheologybbarabsgradtransient.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfrheologybbarabsgradtransient.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfrheologybbarabsgradtransient.cpp	(revision 27955)
@@ -0,0 +1,227 @@
+/*!\file Cfrheologybbarabsgradtransient.cpp
+ * \brief: Cfrheologybbarabsgradtransient Object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./classes.h"
+#include "./ExternalResults/ExternalResult.h"
+#include "./ExternalResults/Results.h"
+#include "../datastructures/datastructures.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "../modules/SurfaceAreax/SurfaceAreax.h"
+#include "../classes/Params/Parameters.h"
+#include "../classes/gauss/Gauss.h"
+#include "./Inputs/DatasetInput.h"
+/*}}}*/
+
+/*Cfrheologybbarabsgradtransient constructors, destructors :*/
+Cfrheologybbarabsgradtransient::Cfrheologybbarabsgradtransient(){/*{{{*/
+
+	this->definitionenum = -1;
+	this->name = NULL;
+	this->datatimes         = NULL;
+	this->passedflags   = NULL;
+	this->J = 0.;
+}
+/*}}}*/
+Cfrheologybbarabsgradtransient::Cfrheologybbarabsgradtransient(char* in_name, int in_definitionenum, int in_num_datatimes, IssmDouble* in_datatimes, bool* in_passedflags, IssmDouble in_J){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+
+	this->name		= xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->num_datatimes = in_num_datatimes;
+
+	/*Allocate arrays*/
+	_assert_(this->num_datatimes>0);
+	this->datatimes   = xNew<IssmDouble>(this->num_datatimes);
+	this->passedflags = xNew<bool>(this->num_datatimes);
+	xMemCpy<IssmDouble>(this->datatimes,in_datatimes,this->num_datatimes);
+	xMemCpy<bool>(this->passedflags,in_passedflags,this->num_datatimes);
+
+	this->J = in_J;
+}
+/*}}}*/
+Cfrheologybbarabsgradtransient::Cfrheologybbarabsgradtransient(char* in_name, int in_definitionenum, int in_num_datatimes, IssmDouble* in_datatimes){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+
+	this->name		= xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->num_datatimes = in_num_datatimes;
+
+	/*Allocate arrays*/
+	_assert_(this->num_datatimes>0);
+	this->datatimes   = xNew<IssmDouble>(this->num_datatimes);
+	this->passedflags = xNew<bool>(this->num_datatimes);
+	xMemCpy<IssmDouble>(this->datatimes,in_datatimes,this->num_datatimes);
+
+	/*initialize passedtimes to false*/
+	for(int i=0;i<this->num_datatimes;i++) this->passedflags[i]= false;
+	this->J = 0;
+}
+/*}}}*/
+Cfrheologybbarabsgradtransient::~Cfrheologybbarabsgradtransient(){/*{{{*/
+	if(this->name)xDelete(this->name);
+}
+/*}}}*/
+/*Object virtual function resolutoin: */
+Object* Cfrheologybbarabsgradtransient::copy() {/*{{{*/
+	Cfrheologybbarabsgradtransient* mf = new Cfrheologybbarabsgradtransient(this->name,this->definitionenum, this->num_datatimes, this->datatimes, this->passedflags, this->J);
+	return (Object*) mf;
+}
+/*}}}*/
+void Cfrheologybbarabsgradtransient::DeepEcho(void){/*{{{*/
+	this->Echo();
+}
+/*}}}*/
+void Cfrheologybbarabsgradtransient::Echo(void){/*{{{*/
+	_printf_(" Cfrheologybbarabsgradtransient: " << name << " " << this->definitionenum << "\n");
+	_error_("not implemented yet");
+}
+/*}}}*/
+int Cfrheologybbarabsgradtransient::Id(void){/*{{{*/
+	return -1;
+}
+/*}}}*/
+void Cfrheologybbarabsgradtransient::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+	
+	/*ok, marshall operations: */
+	int object_enum=CfrheologybbarabsgradtransientEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->definitionenum);
+	marshallhandle->call(this->name);
+	marshallhandle->call(this->num_datatimes);
+   marshallhandle->call(this->datatimes,this->num_datatimes);
+   marshallhandle->call(this->passedflags,this->num_datatimes);
+   marshallhandle->call(this->J);
+} 
+/*}}}*/
+int Cfrheologybbarabsgradtransient::ObjectEnum(void){/*{{{*/
+	return CfrheologybbarabsgradtransientEnum;
+}
+/*}}}*/
+/*Definition virtual function resolutoin: */
+int Cfrheologybbarabsgradtransient::DefinitionEnum(){/*{{{*/
+	return this->definitionenum;
+}
+/*}}}*/
+char* Cfrheologybbarabsgradtransient::Name(){/*{{{*/
+	char* name2=xNew<char>(strlen(this->name)+1);
+	xMemCpy(name2,this->name,strlen(this->name)+1);
+
+	return name2;
+}
+/*}}}*/
+IssmDouble Cfrheologybbarabsgradtransient::Response(FemModel* femmodel){/*{{{*/
+
+	/*recover time parameters: */
+	IssmDouble time;
+	femmodel->parameters->FindParam(&time,TimeEnum);
+	
+	/*Find closest datatime that is less than time*/
+	int pos=-1;
+	for(int i=0;i<this->num_datatimes;i++){
+		if(this->datatimes[i]<=time){
+			pos = i;
+		}
+		else{
+			break;
+		}
+	}
+
+	/*if pos=-1, time is earlier than the first data observation in this dataset*/
+	if(pos==-1){
+		_assert_(this->J==0.);
+		return 0.;
+	}
+	
+	/*Check that we have not yet calculated this cost function*/
+	if(this->passedflags[pos]){
+		return this->J;
+	}
+	
+	/*Calculate cost function for this time slice*/
+	IssmDouble J_part=0.;
+	IssmDouble J_sum=0.;
+
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		J_part+=this->Cfrheologybbarabsgradtransient_Calculation(element);
+	}
+
+	ISSM_MPI_Allreduce( (void*)&J_part,(void*)&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	this->passedflags[pos]= true;
+	this->J += J_sum;
+
+	return this->J;
+}/*}}}*/
+IssmDouble Cfrheologybbarabsgradtransient::Cfrheologybbarabsgradtransient_Calculation(Element* element){/*{{{*/
+
+	int        domaintype,numcomponents;
+	IssmDouble Jelem=0.;
+	IssmDouble Jdet;
+	IssmDouble dp[2],weight;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnBase()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn surface element*/
+	Element* basalelement = element->SpawnBasalElement();
+
+	/* Get node coordinates*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Get input if it already exists*/
+	DatasetInput *datasetinput = basalelement->GetDatasetInput(definitionenum);  _assert_(datasetinput);
+	Input* rheologyb_input=basalelement->GetInput(MaterialsRheologyBbarEnum);                  _assert_(rheologyb_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		datasetinput->GetInputValue(&weight,gauss,WeightsSurfaceObservationEnum);
+		rheologyb_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+
+		/*Add to cost function*/
+		Jelem+=weight*.5*dp[0]*dp[0]*Jdet*gauss->weight;
+		if(numcomponents==2) Jelem+=weight*.5*dp[1]*dp[1]*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfrheologybbarabsgradtransient.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfrheologybbarabsgradtransient.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfrheologybbarabsgradtransient.h	(revision 27955)
@@ -0,0 +1,45 @@
+/*!\file Cfrheologybbarabsgradtransient.h
+ * \brief: header file for Cfrheologybbarabsgradtransient object
+ */
+
+#ifndef _CFRHEOLOGYBBARABSGRADTRANSIENT_H_
+#define _CFRHEOLOGYBBARABSGRADTRANSIENT_H_
+
+/*Headers:*/
+#include "./Definition.h"
+class FemModel;
+
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum);
+
+class Cfrheologybbarabsgradtransient: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		char       *name;
+		int         num_datatimes;
+		IssmDouble *datatimes;
+		bool       *passedflags;
+		IssmDouble  J;
+
+		/*Cfrheologybbarabsgradtransient constructors, destructors :*/
+		Cfrheologybbarabsgradtransient();
+		Cfrheologybbarabsgradtransient(char* in_name, int in_definitionenum, int num_datatimes, IssmDouble* in_datatime);
+		Cfrheologybbarabsgradtransient(char* in_name, int in_definitionenum, int num_datatimes, IssmDouble* in_datatime, bool* in_timepassedflag, IssmDouble in_J);
+		~Cfrheologybbarabsgradtransient();
+
+		/*Object virtual function resolutoin: */
+		Object* copy();
+		void DeepEcho(void);
+		void Echo(void);
+		int Id(void);
+		void Marshall(MarshallHandle* marshallhandle);
+		int ObjectEnum(void);
+
+		/*Definition virtual function resolutoin: */
+		int DefinitionEnum();
+		char* Name();
+		IssmDouble Response(FemModel* femmodel);
+		IssmDouble Cfrheologybbarabsgradtransient_Calculation(Element* element);
+};
+#endif  /* _CFRHEOLOGYBBARABSGRADTRANSIENT_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfsurfacelogvel.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfsurfacelogvel.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfsurfacelogvel.cpp	(revision 27955)
@@ -0,0 +1,226 @@
+/*!\file Cfsurfacelogvel.cpp
+ * \brief: Cfsurfacelogvel Object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./classes.h"
+#include "./ExternalResults/ExternalResult.h"
+#include "./ExternalResults/Results.h"
+#include "../datastructures/datastructures.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "../modules/SurfaceAreax/SurfaceAreax.h"
+#include "../classes/Params/Parameters.h"
+#include "../classes/gauss/Gauss.h"
+#include "./Inputs/DatasetInput.h"
+/*}}}*/
+
+/*Cfsurfacelogvel constructors, destructors :*/
+Cfsurfacelogvel::Cfsurfacelogvel(){/*{{{*/
+
+	this->definitionenum = -1;
+	this->name = NULL;
+	this->datatime=0.;
+	this->timepassedflag = false;
+	this->J = 0.;
+
+}
+/*}}}*/
+Cfsurfacelogvel::Cfsurfacelogvel(char* in_name, int in_definitionenum, IssmDouble in_datatime){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+
+	this->name		= xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->datatime=in_datatime;
+
+	this->timepassedflag=false;
+	this->J=0.;
+
+}
+/*}}}*/
+Cfsurfacelogvel::Cfsurfacelogvel(char* in_name, int in_definitionenum, IssmDouble in_datatime, bool in_timepassedflag,IssmDouble in_J){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+
+	this->name		= xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->datatime=in_datatime;
+	this->timepassedflag=in_timepassedflag;
+	this->J=in_J;
+
+}
+/*}}}*/
+Cfsurfacelogvel::~Cfsurfacelogvel(){/*{{{*/
+	if(this->name)xDelete(this->name);
+}
+/*}}}*/
+/*Object virtual function resolutoin: */
+Object* Cfsurfacelogvel::copy() {/*{{{*/
+	Cfsurfacelogvel* mf = new Cfsurfacelogvel(this->name,this->definitionenum,this->datatime,this->timepassedflag, this->J);
+	return (Object*) mf;
+}
+/*}}}*/
+void Cfsurfacelogvel::DeepEcho(void){/*{{{*/
+	this->Echo();
+}
+/*}}}*/
+void Cfsurfacelogvel::Echo(void){/*{{{*/
+	_printf_(" Cfsurfacelogvel: " << name << " " << this->definitionenum << "\n");
+	_printf_("    datatime: " << datatime << "\n");
+	_printf_("	  timepassedflag: "<<timepassedflag<<"\n");
+	_printf_("	  J: "<<J<<"\n");
+}
+/*}}}*/
+int Cfsurfacelogvel::Id(void){/*{{{*/
+	return -1;
+}
+/*}}}*/
+void Cfsurfacelogvel::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+	int object_enum=CfsurfacelogvelEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->definitionenum);
+	marshallhandle->call(this->name);
+	marshallhandle->call(this->datatime);
+	marshallhandle->call(this->timepassedflag);
+	marshallhandle->call(this->J);
+} 
+/*}}}*/
+int Cfsurfacelogvel::ObjectEnum(void){/*{{{*/
+	return CfsurfacelogvelEnum;
+}
+/*}}}*/
+/*Definition virtual function resolutoin: */
+int Cfsurfacelogvel::DefinitionEnum(){/*{{{*/
+	return this->definitionenum;
+}
+/*}}}*/
+char* Cfsurfacelogvel::Name(){/*{{{*/
+	char* name2=xNew<char>(strlen(this->name)+1);
+	xMemCpy(name2,this->name,strlen(this->name)+1);
+
+	return name2;
+}
+/*}}}*/
+IssmDouble Cfsurfacelogvel::Response(FemModel* femmodel){/*{{{*/
+
+	/*recover time parameters: */
+	IssmDouble time;
+	femmodel->parameters->FindParam(&time,TimeEnum);
+
+	if(this->datatime<=time && !this->timepassedflag){
+
+		IssmDouble J_part=0.;
+		IssmDouble J_sum=0.;
+
+		for(Object* & object : femmodel->elements->objects){
+			Element* element=xDynamicCast<Element*>(object);
+			J_part+=this->Cfsurfacelogvel_Calculation(element,definitionenum);
+		}
+
+		ISSM_MPI_Allreduce ( (void*)&J_part,(void*)&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+		this->timepassedflag = true;
+		this->J = J_sum;
+	}
+
+	return this->J;
+}/*}}}*/
+IssmDouble Cfsurfacelogvel::Cfsurfacelogvel_Calculation(Element* element, int definitionenum){/*{{{*/
+
+	int        domaintype,numcomponents;
+	IssmDouble Jelem=0.;
+	IssmDouble epsvel=2.220446049250313e-16;
+	IssmDouble meanvel=3.170979198376458e-05; /*1000 m/yr*/
+	IssmDouble velocity_mag,obs_velocity_mag;
+	IssmDouble misfit,Jdet;
+	IssmDouble vx,vy,vxobs,vyobs,weight;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnSurface()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn surface element*/
+	Element* topelement = element->SpawnTopElement();
+
+	/* Get node coordinates*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Get model values*/
+	Input *vx_input = topelement->GetInput(VxEnum); _assert_(vx_input);
+	Input *vy_input = NULL;
+	if(numcomponents==2){
+		vy_input = topelement->GetInput(VyEnum); _assert_(vy_input);
+	}
+
+	/*Retrieve all inputs we will be needing: */
+	DatasetInput *datasetinput = topelement->GetDatasetInput(definitionenum); _assert_(datasetinput);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(2);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		datasetinput->GetInputValue(&weight,gauss,WeightsSurfaceObservationEnum);
+		vx_input->GetInputValue(&vx,gauss);
+		datasetinput->GetInputValue(&vxobs,gauss,VxObsEnum);
+		if(numcomponents==2){
+			vy_input->GetInputValue(&vy,gauss);
+			datasetinput->GetInputValue(&vyobs,gauss,VyObsEnum);
+		}
+
+		/*Compute SurfaceLogVelMisfit:
+		 *        *                 [        vel + eps     ] 2
+		 *               * J = 4 \bar{v}^2 | log ( -----------  ) |
+		 *                          [       vel   + eps    ]
+		 *                                      obs
+		 */
+		if(numcomponents==1){
+			velocity_mag    =fabs(vx)+epsvel;
+			obs_velocity_mag=fabs(vxobs)+epsvel;
+		}
+		else{
+			velocity_mag    =sqrt(vx*vx+vy*vy)+epsvel;
+			obs_velocity_mag=sqrt(vxobs*vxobs+vyobs*vyobs)+epsvel;
+		}
+
+		misfit=4*pow(meanvel,2)*pow(log(velocity_mag/obs_velocity_mag),2);
+
+		/*Add to cost function*/
+		Jelem+=misfit*weight*Jdet*gauss->weight;
+
+	}
+
+	/*clean up and Return: */
+	if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfsurfacelogvel.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfsurfacelogvel.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfsurfacelogvel.h	(revision 27955)
@@ -0,0 +1,44 @@
+/*!\file Cfsurfacelogvel.h
+ * \brief: header file for Cfsurfacelogvel object
+ */
+
+#ifndef _CFSURFACELOGVEL_H_
+#define _CFSURFACELOGVEL_H_
+
+/*Headers:*/
+#include "./Definition.h"
+#include "./FemModel.h"
+
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum);
+
+class Cfsurfacelogvel: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		char*       name;
+		IssmDouble	datatime;
+		bool			timepassedflag;
+		IssmDouble  J;
+
+		/*Cfsurfacelogvel constructors, destructors :*/
+		Cfsurfacelogvel();
+		Cfsurfacelogvel(char* in_name, int in_definitionenum, IssmDouble in_datatime);
+		Cfsurfacelogvel(char* in_name, int in_definitionenum, IssmDouble in_datatime, bool timepassedflag, IssmDouble in_J);
+		~Cfsurfacelogvel();
+
+		/*Object virtual function resolutoin: */
+		Object *copy();
+		void    DeepEcho(void);
+		void    Echo(void);
+		int     Id(void);
+		void    Marshall(MarshallHandle  *marshallhandle);
+		int     ObjectEnum(void);
+
+		/*Definition virtual function resolutoin: */
+		int DefinitionEnum();
+		char* Name();
+		IssmDouble Response(FemModel* femmodel);
+		IssmDouble Cfsurfacelogvel_Calculation(Element* element, int definitionenum);
+};
+#endif  /* _CFSURFACELOGVEL_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfsurfacesquare.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfsurfacesquare.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfsurfacesquare.cpp	(revision 27955)
@@ -0,0 +1,210 @@
+/*!\file Cfsurfacesquare.cpp
+ * \brief: Cfsurfacesquare Object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./classes.h"
+#include "./ExternalResults/ExternalResult.h"
+#include "./ExternalResults/Results.h"
+#include "../datastructures/datastructures.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "../modules/SurfaceAreax/SurfaceAreax.h"
+#include "../classes/Params/Parameters.h"
+#include "../classes/gauss/Gauss.h"
+#include "./Inputs/DatasetInput.h"
+/*}}}*/
+
+/*Cfsurfacesquare constructors, destructors :*/
+Cfsurfacesquare::Cfsurfacesquare(){/*{{{*/
+
+	this->definitionenum   = -1;
+	this->name             = NULL;
+	this->model_enum       = UNDEF;
+	this->datatime         = 0.;
+	this->timepassedflag   = false;
+	this->J                = 0.;
+}
+/*}}}*/
+Cfsurfacesquare::Cfsurfacesquare(char* in_name, int in_definitionenum, int in_model_enum, IssmDouble in_datatime){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+
+	this->name		= xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->model_enum=in_model_enum;
+	this->datatime=in_datatime;
+	this->timepassedflag=false;
+	this->J=0.;
+}
+/*}}}*/
+Cfsurfacesquare::Cfsurfacesquare(char* in_name, int in_definitionenum, int in_model_enum, IssmDouble in_datatime, bool in_timepassedflag, IssmDouble in_J){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+
+	this->name		= xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->model_enum=in_model_enum;
+	this->datatime=in_datatime;
+	this->timepassedflag=in_timepassedflag;
+	this->J=in_J;
+}
+/*}}}*/
+Cfsurfacesquare::~Cfsurfacesquare(){/*{{{*/
+	if(this->name)xDelete(this->name);
+}
+/*}}}*/
+
+/*Object virtual function resolutoin: */
+Object* Cfsurfacesquare::copy() {/*{{{*/
+	Cfsurfacesquare* mf = new Cfsurfacesquare(this->name,this->definitionenum, this->model_enum,this->datatime,this->timepassedflag,this->J);
+	return (Object*) mf;
+}
+/*}}}*/
+void Cfsurfacesquare::DeepEcho(void){/*{{{*/
+	this->Echo();
+}
+/*}}}*/
+void Cfsurfacesquare::Echo(void){/*{{{*/
+	_printf_(" Cfsurfacesquare: " << name << " " << this->definitionenum << "\n");
+	_printf_("    model_enum: " << model_enum << " " << EnumToStringx(model_enum) << "\n");
+	_printf_("    datatime: " << datatime << "\n");
+	_printf_("	  timepassedflag: "<<timepassedflag<<"\n");
+	_printf_("	  J: "<<J<<"\n");
+}
+/*}}}*/
+int Cfsurfacesquare::Id(void){/*{{{*/
+	return -1;
+}
+/*}}}*/
+void Cfsurfacesquare::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+
+	int object_enum=CfsurfacesquareEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->definitionenum);
+	marshallhandle->call(this->model_enum);
+	marshallhandle->call(this->name);
+	marshallhandle->call(this->datatime);
+	marshallhandle->call(this->timepassedflag);
+	marshallhandle->call(this->J);
+} 
+/*}}}*/
+int Cfsurfacesquare::ObjectEnum(void){/*{{{*/
+	return CfsurfacesquareEnum;
+}
+/*}}}*/
+
+/*Definition virtual function resolutoin: */
+int Cfsurfacesquare::DefinitionEnum(){/*{{{*/
+	return this->definitionenum;
+}
+/*}}}*/
+char* Cfsurfacesquare::Name(){/*{{{*/
+	char* name2=xNew<char>(strlen(this->name)+1);
+	xMemCpy(name2,this->name,strlen(this->name)+1);
+
+	return name2;
+}
+/*}}}*/
+IssmDouble Cfsurfacesquare::Response(FemModel* femmodel){/*{{{*/
+
+	/*recover time parameters: */
+	IssmDouble time;
+	femmodel->parameters->FindParam(&time,TimeEnum);
+
+	/*Do the calculation only if this is the first time we are passed datatime*/
+	if(this->datatime<=time && !this->timepassedflag){
+
+		IssmDouble J_part=0.;
+		IssmDouble J_sum=0.;
+
+		for(Object* & object : femmodel->elements->objects){
+			Element* element=xDynamicCast<Element*>(object);
+			J_part+=this->Cfsurfacesquare_Calculation(element,model_enum);
+		}
+
+		ISSM_MPI_Allreduce ( (void*)&J_part,(void*)&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+		this->timepassedflag = true;
+		this->J = J_sum;
+	}
+
+	return this->J;
+}
+/*}}}*/
+IssmDouble Cfsurfacesquare::Cfsurfacesquare_Calculation(Element* element, int model_enum){/*{{{*/
+
+	int        domaintype,numcomponents;
+	IssmDouble Jelem=0.;
+	IssmDouble misfit,Jdet;
+	IssmDouble model,obs,weight;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnSurface()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn surface element*/
+	Element* topelement = element->SpawnTopElement();
+
+	/* Get node coordinates*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	DatasetInput *datasetinput = topelement->GetDatasetInput(definitionenum); _assert_(datasetinput);
+	Input        *model_input  = topelement->GetInput(model_enum);            _assert_(model_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(2);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		datasetinput->GetInputValue(&weight,gauss,WeightsSurfaceObservationEnum);
+		model_input->GetInputValue(&model,gauss);
+		datasetinput->GetInputValue(&obs,gauss,SurfaceObservationEnum);
+
+		/*Compute SurfaceAbsVelMisfitEnum:
+		 *        *
+		 *               *      1  [           2              2 ]
+		 *                      * J = --- | (u - u   )  +  (v - v   )  |
+		 *                             *      2  [       obs            obs   ]
+		 *                                    *
+		 *                                           */
+		misfit=0.5*(model-obs)*(model-obs);
+
+		/*Add to cost function*/
+		Jelem+=misfit*weight*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfsurfacesquare.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfsurfacesquare.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfsurfacesquare.h	(revision 27955)
@@ -0,0 +1,45 @@
+/*!\file Cfsurfacesquare.h
+ * \brief: header file for Cfsurfacesquare object
+ */
+
+#ifndef _CFSURFACESQUARE_H_
+#define _CFSURFACESQUARE_H_
+
+/*Headers:*/
+#include "./Definition.h"
+#include "./FemModel.h"
+
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum);
+
+class Cfsurfacesquare: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		int         model_enum;
+		char       *name;
+		IssmDouble  datatime;
+		bool        timepassedflag;
+		IssmDouble  J;
+
+		/*Cfsurfacesquare constructors, destructors :*/
+		Cfsurfacesquare();
+		Cfsurfacesquare(char* in_name, int in_definitionenum, int in_model_enum, IssmDouble in_datatime);
+		Cfsurfacesquare(char* in_name, int in_definitionenum, int in_model_enum, IssmDouble in_datatime, bool timepassedflag, IssmDouble in_J);
+		~Cfsurfacesquare();
+
+		/*Object virtual function resolutoin: */
+		Object *copy();
+		void    DeepEcho(void);
+		void    Echo(void);
+		int     Id(void);
+		void    Marshall(MarshallHandle  *marshallhandle);
+		int     ObjectEnum(void);
+
+		/*Definition virtual function resolutoin: */
+		int         DefinitionEnum();
+		char       *Name();
+		IssmDouble  Response(FemModel                    *femmodel);
+		IssmDouble  Cfsurfacesquare_Calculation(Element  *element, int model_enum);
+};
+#endif  /* _CFSURFACESQUARE_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfsurfacesquaretransient.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfsurfacesquaretransient.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfsurfacesquaretransient.cpp	(revision 27955)
@@ -0,0 +1,235 @@
+/*!\file Cfsurfacesquaretransient.cpp
+ * \brief: Cfsurfacesquaretransient Object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./classes.h"
+#include "./ExternalResults/ExternalResult.h"
+#include "./ExternalResults/Results.h"
+#include "../datastructures/datastructures.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "../modules/SurfaceAreax/SurfaceAreax.h"
+#include "../classes/Params/Parameters.h"
+#include "../classes/gauss/Gauss.h"
+#include "./Inputs/DatasetInput.h"
+/*}}}*/
+
+/*Cfsurfacesquaretransient constructors, destructors :*/
+Cfsurfacesquaretransient::Cfsurfacesquaretransient(){/*{{{*/
+
+	this->definitionenum = -1;
+	this->name           = NULL;
+	this->model_enum     = UNDEF;
+	this->datatimes      = NULL;
+	this->passedflags    = NULL;
+	this->J              = 0.;
+}
+/*}}}*/
+Cfsurfacesquaretransient::Cfsurfacesquaretransient(char* in_name, int in_definitionenum, int in_model_enum, int in_num_datatimes, IssmDouble* in_datatimes, bool* in_passedflags, IssmDouble in_J){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+
+	this->name = xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->model_enum=in_model_enum;
+	this->num_datatimes = in_num_datatimes;
+
+	/*Allocate arrays*/
+	_assert_(this->num_datatimes>0);
+	this->datatimes   = xNew<IssmDouble>(this->num_datatimes);
+	this->passedflags = xNew<bool>(this->num_datatimes);
+	xMemCpy<IssmDouble>(this->datatimes,in_datatimes,this->num_datatimes);
+	xMemCpy<bool>(this->passedflags,in_passedflags,this->num_datatimes);
+
+	this->J = in_J;
+}
+/*}}}*/
+Cfsurfacesquaretransient::Cfsurfacesquaretransient(char* in_name, int in_definitionenum, int in_model_enum, int in_num_datatimes, IssmDouble* in_datatimes){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+
+	this->name = xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->model_enum=in_model_enum;
+	this->num_datatimes = in_num_datatimes;
+
+	/*Allocate arrays*/
+	_assert_(this->num_datatimes>0);
+	this->datatimes   = xNew<IssmDouble>(this->num_datatimes);
+	this->passedflags = xNew<bool>(this->num_datatimes);
+	xMemCpy<IssmDouble>(this->datatimes,in_datatimes,this->num_datatimes);
+
+	/*initialize passedtimes to false*/
+	for(int i=0;i<this->num_datatimes;i++) this->passedflags[i]= false;
+	this->J = 0;
+}
+/*}}}*/
+Cfsurfacesquaretransient::~Cfsurfacesquaretransient(){/*{{{*/
+	if(this->name) xDelete(this->name);
+	if(this->datatimes) xDelete(this->datatimes);
+	if(this->passedflags) xDelete(this->passedflags);
+}
+/*}}}*/
+
+/*Object virtual function resolutoin: */
+Object* Cfsurfacesquaretransient::copy() {/*{{{*/
+	Cfsurfacesquaretransient* output = new Cfsurfacesquaretransient(this->name,this->definitionenum, this->model_enum, this->num_datatimes, this->datatimes,this->passedflags, this->J);
+	return (Object*)output;
+}
+/*}}}*/
+void Cfsurfacesquaretransient::DeepEcho(void){/*{{{*/
+	this->Echo();
+}
+/*}}}*/
+void Cfsurfacesquaretransient::Echo(void){/*{{{*/
+	_printf_(" Cfsurfacesquaretransient: " << name << " " << this->definitionenum << "\n");
+	_printf_("    model_enum: " << model_enum << " " << EnumToStringx(model_enum) << "\n");
+	_error_("not implemented yet");
+}
+/*}}}*/
+int Cfsurfacesquaretransient::Id(void){/*{{{*/
+	return -1;
+}
+/*}}}*/
+void Cfsurfacesquaretransient::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+
+	int object_enum=CfsurfacesquaretransientEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->definitionenum);
+	marshallhandle->call(this->model_enum);
+	marshallhandle->call(this->name);
+	marshallhandle->call(this->num_datatimes);
+	marshallhandle->call(this->datatimes,this->num_datatimes);
+	marshallhandle->call(this->passedflags,this->num_datatimes);
+	marshallhandle->call(this->J);
+} 
+/*}}}*/
+int Cfsurfacesquaretransient::ObjectEnum(void){/*{{{*/
+	return CfsurfacesquaretransientEnum;
+}
+/*}}}*/
+
+/*Definition virtual function resolutoin: */
+int Cfsurfacesquaretransient::DefinitionEnum(){/*{{{*/
+	return this->definitionenum;
+}
+/*}}}*/
+char* Cfsurfacesquaretransient::Name(){/*{{{*/
+	char* name2=xNew<char>(strlen(this->name)+1);
+	xMemCpy(name2,this->name,strlen(this->name)+1);
+
+	return name2;
+}
+/*}}}*/
+IssmDouble Cfsurfacesquaretransient::Response(FemModel* femmodel){/*{{{*/
+
+	/*recover model time parameters: */
+	IssmDouble time;
+	femmodel->parameters->FindParam(&time,TimeEnum);
+
+	/*Find closest datatime that is less than time*/
+	int pos=-1;
+	for(int i=0;i<this->num_datatimes;i++){
+		if(this->datatimes[i]<=time){
+			pos = i;
+		}
+		else{
+			break;
+		}
+	}
+
+	/*if pos=-1, time is earlier than the first data observation in this dataset*/
+	if(pos==-1){
+		_assert_(this->J==0.);
+		return 0.;
+	}
+
+	/*Check that we have not yet calculated this cost function*/
+	if(this->passedflags[pos]){
+		return this->J;
+	}
+
+	/*Calculate cost function for this time slice*/
+	IssmDouble J_part=0.;
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		J_part+=this->Cfsurfacesquaretransient_Calculation(element,model_enum);
+	}
+
+	/*Sum across partition*/
+	IssmDouble J_sum;
+	ISSM_MPI_Allreduce((void*)&J_part,(void*)&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Record this cost function so that we do not recalculate it later*/
+	this->passedflags[pos]= true;
+	this->J += J_sum;
+
+	/*Return full cost function this far*/
+	return this->J;
+}/*}}}*/
+IssmDouble Cfsurfacesquaretransient::Cfsurfacesquaretransient_Calculation(Element* element, int model_enum){/*{{{*/
+
+	IssmDouble Jelem=0.;
+	IssmDouble misfit,Jdet;
+	IssmDouble model,obs,weight;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnSurface()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Spawn surface element*/
+	Element* topelement = element->SpawnTopElement();
+
+	/* Get node coordinates*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	DatasetInput *datasetinput = topelement->GetDatasetInput(definitionenum); _assert_(datasetinput);
+	Input        *model_input  = topelement->GetInput(model_enum);            _assert_(model_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(2);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		datasetinput->GetInputValue(&weight,gauss,WeightsSurfaceObservationEnum);
+		datasetinput->GetInputValue(&obs,gauss,SurfaceObservationEnum);
+		model_input->GetInputValue(&model,gauss);
+
+		/*Compute Misfit
+		 *     
+		 *       1  [           2 ]
+		 *  J = --- | (x - x   )  |
+		 *       2  [       obs   ]
+		 **/
+		misfit=0.5*(model-obs)*(model-obs);
+
+		/*Add to cost function*/
+		Jelem+=misfit*weight*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfsurfacesquaretransient.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfsurfacesquaretransient.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Cfsurfacesquaretransient.h	(revision 27955)
@@ -0,0 +1,46 @@
+/*!\file Cfsurfacesquaretransient.h
+ * \brief: header file for Cfsurfacesquaretransient object
+ */
+
+#ifndef _CFSURFACESQUARETRANSIENT_H_
+#define _CFSURFACESQUARETRANSIENT_H_
+
+/*Headers:*/
+#include "./Definition.h"
+class FemModel;
+
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum);
+
+class Cfsurfacesquaretransient: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		int         model_enum;
+		char       *name;
+		int         num_datatimes;
+		IssmDouble *datatimes;
+		bool       *passedflags;
+		IssmDouble  J;
+
+		/*Cfsurfacesquaretransient constructors, destructors :*/
+		Cfsurfacesquaretransient();
+		Cfsurfacesquaretransient(char* in_name, int in_definitionenum, int in_model_enum,int num_datatimes, IssmDouble* in_datatime);
+		Cfsurfacesquaretransient(char* in_name, int in_definitionenum, int in_model_enum,int num_datatimes, IssmDouble* in_datatime, bool* in_timepassedflag, IssmDouble in_J);
+		~Cfsurfacesquaretransient();
+
+		/*Object virtual function resolutoin: */
+		Object *copy();
+		void    DeepEcho(void);
+		void    Echo(void);
+		int     Id(void);
+		void    Marshall(MarshallHandle  *marshallhandle);
+		int     ObjectEnum(void);
+
+		/*Definition virtual function resolutoin: */
+		int         DefinitionEnum();
+		char       *Name();
+		IssmDouble  Response(FemModel *femmodel);
+		IssmDouble  Cfsurfacesquaretransient_Calculation(Element  *element, int model_enum);
+};
+#endif  /* _CFSURFACESQUARE_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/Constraint.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/Constraint.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/Constraint.h	(revision 27955)
@@ -0,0 +1,28 @@
+/*!\file:  Constraint.h
+ * \brief abstract class for Constraint object
+ * This class is a place holder for constraints
+ * It is derived from Object, so DataSets can contain them.
+ */ 
+
+#ifndef _CONSTRAINT_H_
+#define _CONSTRAINT_H_
+
+/*Headers:*/
+/*{{{*/
+class Nodes;
+#include "../../datastructures/datastructures.h"
+#include "../../toolkits/toolkits.h"
+/*}}}*/
+
+class Constraint: public Object{
+
+	public: 
+
+		virtual      ~Constraint(){};
+		virtual void ActivatePenaltyMethod(void)=0;
+		virtual void ConstrainNode(Nodes* nodes,Parameters* parameters)=0;
+		virtual void PenaltyDofAndValue(int* dof,IssmDouble* value,Nodes* nodes,Parameters* parameters)=0;
+		virtual void InputUpdateFromVectorDakota(IssmDouble* vector,Nodes* nodes,int name,int type) = 0;
+
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/Constraints.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/Constraints.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/Constraints.cpp	(revision 27955)
@@ -0,0 +1,30 @@
+/*
+ * \file Constraints.cpp
+ * \brief: Implementation of Constraints class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Constraints.h"
+#include "./Constraint.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+using namespace std;
+/*}}}*/
+
+/*Numerics: */
+void Constraints::ActivatePenaltyMethod(int in_analysis){/*{{{*/
+
+	for(Object* & object: this->objects){
+		Constraint* constraint=(Constraint*)object;
+		constraint->ActivatePenaltyMethod();
+	}
+
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/Constraints.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/Constraints.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/Constraints.h	(revision 27955)
@@ -0,0 +1,32 @@
+#ifndef _CONTAINER_CONSTRAINTS_H_
+#define  _CONTAINER_CONSTRAINTS_H_
+
+/*forward declarations */
+#include "../../datastructures/datastructures.h"
+#include "../../shared/shared.h"
+
+/*! \brief Declaration of Constraints class. 
+ *
+ * Declaration of Constraints class for handling Single Point Constraints (SPCs).
+ * Constraints are vector lists (Containers) of Constraint objects.
+ */ 
+class Constraints: public DataSet{
+
+	public:
+
+		/*Object constructors and destructor*/
+		Constraints(){/*{{{*/
+			enum_type=ConstraintsEnum;
+			return;
+		}
+		/*}}}*/
+		~Constraints(){/*{{{*/
+			return;
+		}
+		/*}}}*/
+
+		/*numerics*/
+		void ActivatePenaltyMethod(int in_analysis);
+};
+
+#endif //ifndef _CONSTRAINTS_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/SpcDynamic.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/SpcDynamic.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/SpcDynamic.cpp	(revision 27955)
@@ -0,0 +1,142 @@
+/*!\file SpcDynamic.c
+ * \brief: implementation of the SpcDynamic object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "./Constraint.h"
+#include "../../shared/shared.h"
+
+/*SpcDynamic constructors and destructor*/
+SpcDynamic::SpcDynamic(){/*{{{*/
+	return;
+}
+/*}}}*/
+SpcDynamic::SpcDynamic(int spc_id,int spc_nodeid, int spc_dof,IssmDouble value_in,int spc_analysis_type){/*{{{*/
+
+	id           = spc_id;
+	nodeid        = spc_nodeid;
+	dof           = spc_dof;
+	value         = value_in;
+	analysis_type = spc_analysis_type;
+	isset         = false;
+	penalty       = false;
+
+	return;
+}
+/*}}}*/
+SpcDynamic::~SpcDynamic(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* SpcDynamic::copy() {/*{{{*/
+
+	SpcDynamic* spcdyn = new SpcDynamic(*this); 
+
+	spcdyn->id=this->id;
+	spcdyn->nodeid=this->nodeid;
+	spcdyn->dof=this->dof;
+	spcdyn->value=this->value;
+	spcdyn->analysis_type=this->analysis_type;
+	spcdyn->isset=this->isset;
+
+	return (Object*) spcdyn;
+}
+/*}}}*/
+void    SpcDynamic::DeepEcho(void){/*{{{*/
+
+	this->Echo();
+	return;
+}		
+/*}}}*/
+void    SpcDynamic::Echo(void){/*{{{*/
+
+	_printf_("SpcDynamic:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   nodeid: " << nodeid << "\n");
+	_printf_("   dof: " << dof << "\n");
+	_printf_("   value: " << value << "\n");
+	_printf_("   isset: " <<(isset?"true":"false") << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	return;
+}
+/*}}}*/
+int     SpcDynamic::Id(void){ return id; }/*{{{*/
+/*}}}*/
+void    SpcDynamic::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = SpcDynamicEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->id);
+	marshallhandle->call(this->nodeid);
+	marshallhandle->call(this->dof);
+	marshallhandle->call(this->value);
+	marshallhandle->call(this->analysis_type);
+	marshallhandle->call(this->isset);
+	marshallhandle->call(this->penalty);
+
+}
+/*}}}*/
+int     SpcDynamic::ObjectEnum(void){/*{{{*/
+
+	return SpcDynamicEnum;
+
+}
+/*}}}*/
+
+/*Constraint virtual functions definitions: */
+void SpcDynamic::ActivatePenaltyMethod(void){/*{{{*/
+	this->penalty = true;
+}
+/*}}}*/
+void SpcDynamic::ConstrainNode(Nodes* nodes,Parameters* parameters){/*{{{*/
+
+	Node* node=NULL;
+
+	/*Chase through nodes and find the node to which this SpcDynamic applys: */
+	node=(Node*)nodes->GetObjectById(NULL,nodeid);
+
+	/*Apply constraint: */
+	if(node){ //in case the spc is dealing with a node on another cpu
+
+		/*We should first check that the value has been set... (test306)*/
+		node->ApplyConstraint(dof,value);
+	}
+}
+/*}}}*/
+
+/*SpcDynamic functions*/
+int        SpcDynamic::GetDof(){/*{{{*/
+	return dof;
+}
+/*}}}*/
+int        SpcDynamic::GetNodeId(){/*{{{*/
+
+	return nodeid;
+}
+/*}}}*/
+IssmDouble SpcDynamic::GetValue(){/*{{{*/
+	_assert_(this->isset);
+	_assert_(!xIsNan<IssmDouble>(value));
+	return value;
+}
+/*}}}*/
+void       SpcDynamic::SetDynamicConstraint(Nodes* nodes,IssmDouble* yg_serial){/*{{{*/
+
+	int pos;
+
+	Node* node=(Node*)nodes->GetObjectById(NULL,nodeid);
+	pos=node->GetDof(dof,GsetEnum);
+
+	this->value=yg_serial[pos];
+	this->isset=true;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/SpcDynamic.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/SpcDynamic.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/SpcDynamic.h	(revision 27955)
@@ -0,0 +1,53 @@
+/*!\file SpcDynamic.h
+ * \brief: header file for spc object
+ */
+
+#ifndef _SPCDynamic_H_
+#define _SPCDynamic_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../../datastructures/datastructures.h"
+/*}}}*/
+
+class SpcDynamic: public Constraint{
+
+	private: 
+		int        id;              /*! id, to track it */
+		int        nodeid;          /*!node id          */
+		int        dof;             /*!component        */
+		IssmDouble value;           /*value             */
+		bool       isset;
+		int        analysis_type;
+		bool       penalty;         /*Is this a penalty constraint */
+
+	public:
+
+		/*SpcDynamic constructors, destructors*/
+		SpcDynamic();
+		SpcDynamic(int id_in,int nodeid, int dof,IssmDouble value_in,int analysis_type);
+		~SpcDynamic();
+
+		/*Object virtual functions definitions*/
+		Object *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+
+		/*Constraint virtual functions definitions*/
+		void ActivatePenaltyMethod(void);
+		void ConstrainNode(Nodes* nodes,Parameters* parameters);
+		void PenaltyDofAndValue(int* dof,IssmDouble* value,Nodes* nodes,Parameters* parameters){_error_("not implemented yet");};
+		void InputUpdateFromVectorDakota(IssmDouble* vector,Nodes* nodes,int name,int type){_error_("not implemented yet");};
+
+		/*SpcDynamic management*/
+		int        GetDof();
+		int        GetNodeId();
+		IssmDouble GetValue();
+		void       SetDynamicConstraint(Nodes  *nodes,IssmDouble *yg_serial);
+
+};
+
+#endif  /* _SPCStatic_H_*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/SpcStatic.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/SpcStatic.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/SpcStatic.cpp	(revision 27955)
@@ -0,0 +1,183 @@
+/*!\file SpcStatic.c
+ * \brief: implementation of the SpcStatic object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "./Constraint.h"
+#include "../../shared/shared.h"
+
+/*SpcStatic constructors and destructor*/
+SpcStatic::SpcStatic(){/*{{{*/
+	return;
+}
+/*}}}*/
+SpcStatic::SpcStatic(int spc_id,int spc_nodeid, int spc_dof,IssmDouble spc_value,int spc_analysis_type){/*{{{*/
+
+	id           = spc_id;
+	nodeid        = spc_nodeid;
+	dof           = spc_dof;
+	value         = spc_value;
+	analysis_type = spc_analysis_type;
+	penalty       = false;
+
+	return;
+}
+/*}}}*/
+SpcStatic::~SpcStatic(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* SpcStatic::copy() {/*{{{*/
+
+	SpcStatic* spcstat = new SpcStatic(*this); 
+
+	spcstat->id=this->id;
+	spcstat->nodeid=this->nodeid;
+	spcstat->dof=this->dof;
+	spcstat->value=this->value;
+	spcstat->analysis_type=this->analysis_type;
+
+	return (Object*) spcstat;
+}
+/*}}}*/
+void    SpcStatic::DeepEcho(void){/*{{{*/
+
+	_printf_("SpcStatic:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   nodeid: " << nodeid << "\n");
+	_printf_("   dof: " << dof << "\n");
+	_printf_("   value: " << value << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	return;
+}		
+/*}}}*/
+void    SpcStatic::Echo(void){/*{{{*/
+
+	_printf_("SpcStatic:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   nodeid: " << nodeid << "\n");
+	_printf_("   dof: " << dof << "\n");
+	_printf_("   value: " << value << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	return;
+}
+/*}}}*/
+int     SpcStatic::Id(void){ return id; }/*{{{*/
+/*}}}*/
+void    SpcStatic::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = SpcStaticEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->id);
+	marshallhandle->call(this->nodeid);
+	marshallhandle->call(this->dof);
+	marshallhandle->call(this->value);
+	marshallhandle->call(this->analysis_type);
+	marshallhandle->call(this->penalty);
+
+}
+/*}}}*/
+int     SpcStatic::ObjectEnum(void){/*{{{*/
+
+	return SpcStaticEnum;
+
+}
+/*}}}*/
+
+/*Constraint virtual functions definitions: */
+void SpcStatic::ActivatePenaltyMethod(void){/*{{{*/
+	   this->penalty = true;
+}
+/*}}}*/
+void SpcStatic::ConstrainNode(Nodes* nodes,Parameters* parameters){/*{{{*/
+
+	/*Chase through nodes and find the node to which this SpcStatic applys: */
+	Node* node=(Node*)nodes->GetObjectById(NULL,nodeid);
+
+	/*Apply constraint: */
+	if(!this->penalty && node){ //in case the spc is dealing with a node on another cpu
+		node->ApplyConstraint(dof,value);
+	}
+}
+/*}}}*/
+void SpcStatic::InputUpdateFromVectorDakota(IssmDouble* vector,Nodes* nodes,int name,int type){/*{{{*/
+
+	/*Only update if this is a constraint parameter*/
+	if(name != BalancethicknessSpcthicknessEnum) return;
+
+	/*Chase through nodes and find the node to which this SpcStatic applies: */
+	Node* node=(Node*)nodes->GetObjectById(NULL,nodeid);
+
+	/*Apply constraint: */
+	if(node){ //in case the spc is dealing with a node on another cpu
+		int sid = node->Sid();
+		this->value = vector[sid];
+		_assert_(!xIsNan<IssmDouble>(this->value)); 
+	}
+}
+/*}}}*/
+void SpcStatic::PenaltyDofAndValue(int* pdof,IssmDouble* pvalue,Nodes* nodes,Parameters* parameters){/*{{{*/
+
+	if(!this->penalty) _error_("cannot return dof and value for non penalty constraint");
+
+	IssmDouble value_out = this->value;
+	int gdof;
+
+	/*Chase through nodes and find the node to which this SpcTransient applys: */
+	Node* node=(Node*)nodes->GetObjectById(NULL,nodeid);
+
+	if(node){ //in case the spc is dealing with a node on another cpu
+
+		/*Get gdof */
+		gdof = node->GetDof(dof,GsetEnum);
+		if(xIsNan<IssmDouble>(value_out)) gdof = -1;
+	}
+	else{
+		value_out = NAN;
+		gdof = -1;
+	}
+
+	/*Assign output pointers*/
+	*pdof   = gdof;
+	*pvalue = value_out;
+}
+/*}}}*/
+
+void SpcStatic::UpdateSpcThicknessAD(IssmDouble* vector,Nodes* nodes){/*{{{*/
+
+	/*Chase through nodes and find the node to which this SpcStatic applies: */
+	Node* node=(Node*)nodes->GetObjectById(NULL,nodeid);
+
+	/*Apply constraint: */
+	if(node){ //in case the spc is dealing with a node on another cpu
+		int sid = node->Sid();
+		this->value = vector[sid];
+		_assert_(!xIsNan<IssmDouble>(this->value)); 
+	}
+}
+/*}}}*/
+
+/*SpcStatic functions*/
+int        SpcStatic::GetDof(){/*{{{*/
+	return dof;
+}
+/*}}}*/
+int        SpcStatic::GetNodeId(){/*{{{*/
+
+	return nodeid;
+}
+/*}}}*/
+IssmDouble SpcStatic::GetValue(){/*{{{*/
+	_assert_(!xIsNan<IssmDouble>(value));
+	return value;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/SpcStatic.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/SpcStatic.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/SpcStatic.h	(revision 27955)
@@ -0,0 +1,53 @@
+/*!\file SpcStatic.h
+ * \brief: header file for spc object
+ */
+
+#ifndef _SPCStatic_H_
+#define _SPCStatic_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../../datastructures/datastructures.h"
+/*}}}*/
+
+class SpcStatic: public Constraint{
+
+	private: 
+		int        id;
+		int        nodeid;
+		int        dof;
+		IssmDouble value;
+		int        analysis_type;
+		bool       penalty;
+
+	public:
+
+		/*SpcStatic constructors, destructors:{{{*/
+		SpcStatic();
+		SpcStatic(int id,int nodeid, int dof,IssmDouble value,int analysis_type);
+		~SpcStatic();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void  Marshall(MarshallHandle* marshallhandle);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Constraint virtual functions definitions: {{{*/
+		void ActivatePenaltyMethod(void);
+		void ConstrainNode(Nodes* nodes,Parameters* parameters);
+		void PenaltyDofAndValue(int* dof,IssmDouble* value,Nodes* nodes,Parameters* parameters);
+		void InputUpdateFromVectorDakota(IssmDouble* vector,Nodes* nodes,int name,int type);
+		/*}}}*/
+		/*SpcStatic management:{{{ */
+		int    GetDof();
+		int    GetNodeId();
+		IssmDouble GetValue();
+		/*}}}*/
+		void UpdateSpcThicknessAD(IssmDouble* vector,Nodes* nodes);
+
+};
+
+#endif  /* _SPCStatic_H_*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/SpcTransient.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/SpcTransient.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/SpcTransient.cpp	(revision 27955)
@@ -0,0 +1,230 @@
+/*!\file SpcTransient.c
+ * \brief: implementation of the SpcTransient object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "./Constraint.h"
+#include "shared/shared.h"
+
+/*SpcTransient constructors and destructor*/
+SpcTransient::SpcTransient(){/*{{{*/
+	penalty       = false;
+	id            = -1;
+	nodeid        = -1;
+	dof           = -1;
+	values        = NULL;
+	times         = NULL;
+	nsteps        = -1;
+	analysis_type = -1;
+	return;
+}
+/*}}}*/
+SpcTransient::SpcTransient(int spc_id,int spc_nodeid, int spc_dof,int spc_nsteps, IssmDouble* spc_times, IssmDouble* spc_values,int spc_analysis_type){/*{{{*/
+
+	penalty = false;
+	id     = spc_id;
+	nodeid  = spc_nodeid;
+	dof     = spc_dof;
+	nsteps  = spc_nsteps;
+	if(spc_nsteps){
+		values = xNew<IssmDouble>(spc_nsteps);
+		times  = xNew<IssmDouble>(spc_nsteps);
+		xMemCpy<IssmDouble>(values,spc_values,nsteps);
+		xMemCpy<IssmDouble>(times,spc_times,nsteps);
+	}
+	analysis_type=spc_analysis_type;
+	return;
+}
+/*}}}*/
+SpcTransient::~SpcTransient(){/*{{{*/
+	xDelete<IssmDouble>(times);
+	xDelete<IssmDouble>(values);
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* SpcTransient::copy() {/*{{{*/
+	return new SpcTransient(id,nodeid,dof,nsteps,times,values,analysis_type);
+}
+/*}}}*/
+void    SpcTransient::DeepEcho(void){/*{{{*/
+	this->Echo();
+}		
+/*}}}*/
+void    SpcTransient::Echo(void){/*{{{*/
+
+	int i;
+	_printf_("SpcTransient:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   nodeid: " << nodeid << "\n");
+	_printf_("   dof: " << dof << "\n");
+	_printf_("   nsteps: " << nsteps << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	_printf_("   steps|times|values\n");
+	for(i=0;i<nsteps;i++){
+		_printf_(i << "-" << times[i] << ":" << values[i] << "\n");
+	}
+	return;
+}
+/*}}}*/
+int     SpcTransient::Id(void){/*{{{*/
+	return id;
+}
+/*}}}*/
+void    SpcTransient::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = SpcTransientEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->id);
+	marshallhandle->call(this->nodeid);
+	marshallhandle->call(this->dof);
+	marshallhandle->call(this->analysis_type);
+	marshallhandle->call(this->penalty);
+	marshallhandle->call(this->nsteps);
+	if(nsteps){
+		marshallhandle->call(this->values,nsteps);
+		marshallhandle->call(this->times,nsteps);
+	}
+	else{
+		this->values=NULL;
+		this->times=NULL;
+	}
+}/*}}}*/
+int     SpcTransient::ObjectEnum(void){/*{{{*/
+
+	return SpcTransientEnum;
+
+}
+/*}}}*/
+
+/*Constraint virtual functions definitions:*/
+void SpcTransient::ActivatePenaltyMethod(void){/*{{{*/
+	   this->penalty = true;
+}
+/*}}}*/
+void SpcTransient::ConstrainNode(Nodes* nodes,Parameters* parameters){/*{{{*/
+
+	Node       *node  = NULL;
+	IssmDouble  time  = 0.;
+	int         i;
+	IssmDouble  alpha = -1.;
+	IssmDouble  value;
+	bool        found = false;
+
+	/*Chase through nodes and find the node to which this SpcTransient applys: */
+	node=(Node*)nodes->GetObjectById(NULL,nodeid);
+
+	if(!this->penalty && node){ //in case the spc is dealing with a node on another cpu
+
+		/*Retrieve time in parameters: */
+		parameters->FindParam(&time,TimeEnum);
+
+		/*Now, go fetch value for this time: */
+		if (time<=times[0]){
+			value=values[0];
+			found=true;
+		}
+		else if (time>=times[nsteps-1]){
+			value=values[nsteps-1];
+			found=true;
+		}
+		else{
+			for(i=0;i<nsteps-1;i++){
+				if (times[i]<=time && time<times[i+1]){
+					alpha=(time-times[i])/(times[i+1]-times[i]);
+					value=(1-alpha)*values[i]+alpha*values[i+1];
+					found=true;
+					break;
+				}
+			}
+		}
+
+		if(!found)_error_("could not find time segment for constraint");
+
+		/*Apply or relax constraint: */
+		if(xIsNan<IssmDouble>(value)){
+			node->RelaxConstraint(dof);
+		}
+		else node->ApplyConstraint(dof,value);
+	}
+}
+/*}}}*/
+void SpcTransient::PenaltyDofAndValue(int* pdof,IssmDouble* pvalue,Nodes* nodes,Parameters* parameters){/*{{{*/
+
+	if(!this->penalty) _error_("cannot return dof and value for non penalty constraint");
+
+	Node       *node  = NULL;
+	IssmDouble  time  = 0.;
+	int         i,gdof;
+	IssmDouble  alpha = -1.;
+	IssmDouble  value;
+	bool        found = false;
+
+	/*Chase through nodes and find the node to which this SpcTransient applys: */
+	node=(Node*)nodes->GetObjectById(NULL,nodeid);
+
+	if(node){ //in case the spc is dealing with a node on another cpu
+
+		/*Retrieve time in parameters: */
+		parameters->FindParam(&time,TimeEnum);
+
+		/*Now, go fetch value for this time: */
+		if (time<=times[0]){
+			value=values[0];
+			found=true;
+		}
+		else if (time>=times[nsteps-1]){
+			value=values[nsteps-1];
+			found=true;
+		}
+		else{
+			for(i=0;i<nsteps-1;i++){
+				if (times[i]<=time && time<times[i+1]){
+					alpha=(time-times[i])/(times[i+1]-times[i]);
+					value=(1-alpha)*values[i]+alpha*values[i+1];
+					found=true;
+					break;
+				}
+			}
+		}
+		if(!found)_error_("could not find time segment for constraint");
+
+		/*Get gdof */
+		gdof = node->GetDof(dof,GsetEnum);
+		if(xIsNan<IssmDouble>(value)){
+			gdof = -1;
+		}
+	}
+	else{
+		value = NAN;
+		gdof = -1;
+	}
+
+	/*Assign output pointers*/
+	*pdof   = gdof;
+	*pvalue = value;
+}
+/*}}}*/
+
+/*SpcTransient functions*/
+int        SpcTransient::GetDof(){/*{{{*/
+	return dof;
+}
+/*}}}*/
+int        SpcTransient::GetNodeId(){/*{{{*/
+
+	return nodeid;
+}
+/*}}}*/
+IssmDouble SpcTransient::GetValue(){/*{{{*/
+	return values[0];
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/SpcTransient.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/SpcTransient.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Constraints/SpcTransient.h	(revision 27955)
@@ -0,0 +1,54 @@
+/*!\file SpcTransient.h
+ * \brief: header file for spc object
+ */
+
+#ifndef _SPCTRANSIENT_H_
+#define _SPCTRANSIENT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../../datastructures/datastructures.h"
+/*}}}*/
+
+class SpcTransient: public Constraint{
+
+	private: 
+		int         id;              /* id, to track it             */
+		int         nodeid;          /*node id                      */
+		int         dof;             /*component                    */
+		IssmDouble *values;          /*different values in time     */
+		IssmDouble *times;           /*different time steps         */
+		int         nsteps;          /*number of time steps         */
+		int         analysis_type;
+		bool        penalty;         /*Is this a penalty constraint */
+
+	public:
+
+		/*SpcTransient constructors, destructors:{{{*/
+		SpcTransient();
+		SpcTransient(int id_in,int nodeid, int dof,int nsteps, IssmDouble* times, IssmDouble* values,int analysis_type);
+		~SpcTransient();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object* copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id(); 
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+		/*}}}*/
+		/*Constraint virtual functions definitions: {{{*/
+		void   ActivatePenaltyMethod(void);
+		void   ConstrainNode(Nodes* nodes,Parameters* parameters);
+		void   PenaltyDofAndValue(int* dof,IssmDouble* value,Nodes* nodes,Parameters* parameters);
+		void InputUpdateFromVectorDakota(IssmDouble* vector,Nodes* nodes,int name,int type){_error_("not implemented yet");};
+		/*}}}*/
+		/*SpcTransient management:{{{ */
+		int        GetDof();
+		int        GetNodeId();
+		IssmDouble GetValue();
+		/*}}}*/
+
+};
+
+#endif  /* _SPCTRANSIENT_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Contour.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Contour.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Contour.h	(revision 27955)
@@ -0,0 +1,92 @@
+/*!\file Contour.h
+ * \brief: header file for Contour object
+ */
+
+#ifndef _CONTOUR_H_
+#define _CONTOUR_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "../datastructures/datastructures.h"
+/*}}}*/
+
+template <class doubletype>
+class Contour: public Object{
+
+	public: 
+
+		int         id;
+		int         nods;     //number of vertices in the contour
+		doubletype *x;
+		doubletype *y;
+		bool        closed;   //is this contour closed?
+
+		/*Contour constructors, destructors :*/
+		Contour(){/*{{{*/
+			this->id     = 0;
+			this->nods   = 0;
+			this->x      = NULL;
+			this->y      = NULL;
+			this->closed = false;
+		}
+		/*}}}*/
+		Contour(int pid,int pnods, doubletype* px, doubletype* py,bool pclosed){/*{{{*/
+
+			this->id     = pid;
+			this->nods   = pnods;
+			this->closed = pclosed;
+			if(nods){
+				this->x=xNew<doubletype>(nods);
+				xMemCpy<doubletype>(this->x,px,nods);
+				this->y=xNew<doubletype>(nods);
+				xMemCpy<doubletype>(this->y,py,nods);
+			}
+		}
+		/*}}}*/
+		~Contour(){/*{{{*/
+			xDelete<doubletype>(this->x);
+			xDelete<doubletype>(this->y);
+		}
+		/*}}}*/
+
+		/*Object virtual function resolutoin: */
+		Object* copy() {/*{{{*/
+
+			Contour* contour = new Contour(this->id,this->nods,this->x,this->y,this->closed);
+
+			return (Object*) contour;
+		}
+		/*}}}*/
+		void DeepEcho(void){/*{{{*/
+			this->Echo();
+		}
+		/*}}}*/
+		void Echo(void){/*{{{*/
+			_printf_(" Contour: " << id << "\n");
+			_printf_("    nods: " << nods << "\n");
+			_printf_("  closed: " << (closed?"true":"false") << "\n");
+			if(nods){
+				_printf_("   x , y:\n");
+				for(int i=0;i<nods;i++){
+					_printf_(i << ": " << x[i] << " | " << y[i] << "\n");
+				}
+			}
+		}
+		/*}}}*/
+		int Id(void){/*{{{*/
+			return id;
+		}
+		/*}}}*/
+		void Marshall(MarshallHandle* marshallhandle){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
+		int ObjectEnum(void){/*{{{*/
+			return ContourEnum;
+		}
+		/*}}}*/
+
+};
+
+#endif  /* _CONTOUR_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Contours.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Contours.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Contours.cpp	(revision 27955)
@@ -0,0 +1,65 @@
+/*
+ * \file Contours.cpp
+ * \brief: Implementation of Contours class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Contours.h"
+#include "../shared/shared.h"
+#include "./Contour.h"
+
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+Contours::Contours(){/*{{{*/
+	enum_type=ContoursEnum;
+	return;
+}
+/*}}}*/
+Contours::~Contours(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Numerics: */
+int ExpWrite(Contours* contours,char* domainname){/*{{{*/
+
+	/*I/O: */
+	FILE* fid=NULL;
+	Contour<double>* contour = NULL;
+
+	/*open domain outline file for writing: */
+	if((fid=fopen(domainname,"w"))==NULL) _error_("could not open domain file " << domainname);
+	int counter = 0;
+	for(Object* & object : contours->objects){
+		contour=(Contour<double>*)object;
+
+		/*Write header: */
+		fprintf(fid,"## Name:%s\n",domainname);
+		fprintf(fid,"## Icon:0\n");
+		fprintf(fid,"# Points Count	Value\n");
+		fprintf(fid,"%u %s\n",contour->nods  ,"1.");
+		fprintf(fid,"# X pos	Y pos\n");
+
+		/*Write vertices: */
+		for(int i=0;i<contour->nods;i++){
+			fprintf(fid,"%lf\t%lf\n",contour->x[i],contour->y[i]);
+		}
+
+		/*Write blank line: */
+		if(counter<contours->Size()-1) fprintf(fid,"\n");
+		counter++;
+	}
+
+	/*close Exp file: */
+	fclose(fid);
+
+	return 1;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Contours.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Contours.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Contours.h	(revision 27955)
@@ -0,0 +1,46 @@
+/*!\brief Declaration of Contours class.
+ */ 
+
+#ifndef _CONTAINER_CONTOURS_H_
+#define  _CONTAINER_CONTOURS_H_
+
+#include "../datastructures/datastructures.h"
+#include "./Contour.h"
+
+class Contours: public DataSet{
+
+	public:
+
+		/*constructors, destructors*/
+		Contours();
+		~Contours();
+};
+
+/*Methods that relate to datasets: */
+int ExpWrite(Contours* contours,char* domainname);
+template <class doubletype> Contours* ExpRead(char* domainname){ /*{{{*/
+
+	/*intermediary: */
+	int          nprof;
+	int         *profnvertices = NULL;
+	doubletype **pprofx        = NULL;
+	doubletype **pprofy        = NULL;
+
+	/*If domainname is an empty string, return empty dataset*/
+	if (strcmp(domainname,"")==0){
+		nprof=0;
+	}
+	else{
+		ExpRead<doubletype>(&nprof,&profnvertices,&pprofx, &pprofy, NULL,domainname);
+	}
+
+	/*now create dataset of contours: */
+	Contours *domain=new Contours();
+
+	for(int i=0;i<nprof;i++){
+		domain->AddObject(new Contour<doubletype>(i,profnvertices[i],pprofx[i],pprofy[i],1));
+	}
+	return domain;
+} /*}}}*/
+
+#endif //ifndef _CONTOURS_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Dakota/IssmDirectApplicInterface.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Dakota/IssmDirectApplicInterface.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Dakota/IssmDirectApplicInterface.h	(revision 27955)
@@ -0,0 +1,140 @@
+/*!\file:  IssmDirectApplicInterface.* This code is only valid for Dakota versions lower than 5!
+ *
+ * \brief: derived DirectApplicInterface class declaration and implementation, taylored to the ISSM cores. 
+ * This class is registered into the interface database of Dakota, and is used to directly call ISSM cores 
+ * from Dakota. 
+ *
+ * This routine helps running ISSM and Dakota in library mode, for Dakota versions that are <=5, and which 
+ * do not really support parallelism. In library mode, Dakota does not 
+ * run as an execuatble. Its capabilities are linked into the ISSM software, and ISSM calls dakota routines 
+ * directly from the dakota library. dakota_core.cpp is the code that is in charge of calling those routines. 
+ *
+ * Prior to versions 6 and more, Dakota had its own way of running in parallel (for embarassingly parallel jobs). 
+ * We do not want that, as ISSM knows exactly how to run "really parallel" jobs that use all CPUS. To bypass Dakota's parallelism, 
+ * we overloaded the constructor for the parallel library (see the Dakota patch in the externalpackages/dakota
+ * directory). This overloaded constructor fires up Dakota serially on CPU 0 only! We take care of broadcasting 
+ * to the other CPUS, hence ISSM is running in parallel, and Dakota serially on CPU0. 
+ *
+ * Now, how does CPU 0 drive all other CPUS to carry out sensitivity analysese? By synchronizing its call to 
+ * our ISSM cores (stressbalance_core, thermal_core, transient_core, etc ...) on CPU 0 with all other CPUS. 
+ * This explains the structure of dakota_core.cpp, where cpu 0 runs Dakota, the Dakota pluggin fires up DakotaSpawnCore.cpp, 
+ * while the other CPUS are waiting for a broadcast from CPU0, once they get it, they also fire up 
+ * DakotaSpawnCore. In the end, DakotaSpawnCore is fired up on all CPUS, with CPU0 having Dakota inputs, that it will 
+ * broacast to other CPUS. 
+ *
+ * Now, how does dakota call the DakotaSpawnCore routine? The DakotaSpawnCore is embedded into the IssmDirectApplicInterface object 
+ * which is derived from the Direct Interface Dakota objct. This is the only way to run Dakota in library 
+ * mode (see their developper guide for more info). Dakota registers the IssmDirectApplicInterface object into its own 
+ * database, and calls on the embedded DakotaSpawnCore from CPU0. 
+ *
+ */ 
+
+/*Issm Configuration: {{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif 
+/*}}}*/
+
+#if !defined(_WRAPPERS_) && defined(_HAVE_DAKOTA_) && (_DAKOTA_MAJOR_ <= 5) //this only works for Dakota <=5, which had no effective parallel capabilities yet.
+
+/*Dakota include files:{{{*/
+#if (_DAKOTA_MAJOR_ < 5 || (_DAKOTA_MAJOR_ == 5 && _DAKOTA_MINOR_ < 3))
+#include <DirectApplicInterface.H>
+#include <DakotaResponse.H>
+#include <ParamResponsePair.H>
+#include <system_defs.h>
+#include <ProblemDescDB.H>
+#include <ParallelLibrary.H>
+#else
+#include <DirectApplicInterface.hpp>
+#include <DakotaResponse.hpp>
+#include <ParamResponsePair.hpp>
+#include <ProblemDescDB.hpp>
+#include <ParallelLibrary.hpp>
+#endif
+/*}}}*/
+
+int  DakotaSpawnCore(double* d_responses, int d_numresponses, double* d_variables, char** d_variables_descriptors,int d_numvariables, void* void_femmodel,int counter);
+
+/*IssmDirectApplicInterface class */
+namespace SIM {
+	class IssmDirectApplicInterface: public Dakota::DirectApplicInterface{
+		public:
+			/*these fields are used by core solutions: */
+			void *femmodel;
+			int   counter;
+			/*Constructors/Destructors*/
+			IssmDirectApplicInterface(const Dakota::ProblemDescDB& problem_db,void* in_femmodel):Dakota::DirectApplicInterface(problem_db){/*{{{*/
+				femmodel = in_femmodel;
+				counter  = 0;
+			}/*}}}*/
+			~IssmDirectApplicInterface(){/*{{{*/
+				/* Virtual destructor handles referenceCount at Interface level. */ 
+			}/*}}}*/
+		protected:
+			/*execute the input filter portion of a direct evaluation invocation*/
+			//int derived_map_if(const Dakota::String& if_name);
+			/*execute an analysis code portion of a direct evaluation invocation*/
+			int derived_map_ac(const Dakota::String& driver){/*{{{*/
+
+				int i;
+				IssmDouble* variables=NULL;
+				char** variable_descriptors=NULL;
+				char*  variable_descriptor=NULL;
+				IssmDouble* responses=NULL;
+
+				/*increae counter: */
+				counter++;
+
+				/*Before launching analysis, we need to transfer the dakota inputs into Issm 
+				 *readable variables: */
+
+				/*First, the variables: */
+				variables=xNew<IssmDouble>(numACV);
+				for(i=0;i<numACV;i++){
+					variables[i]=xC[i];
+				}
+				/*The descriptors: */
+				variable_descriptors=xNew<char*>(numACV);
+				for(i=0;i<numACV;i++){
+					std::string label=xCLabels[i];
+					variable_descriptor=xNew<char>(strlen(label.c_str())+1);
+					memcpy(variable_descriptor,label.c_str(),(strlen(label.c_str())+1)*sizeof(char));
+
+					variable_descriptors[i]=variable_descriptor;
+				}
+
+				/*Initialize responses: */
+				responses=xNewZeroInit<IssmDouble>(numFns);
+
+				/*run core solution: */
+				DakotaSpawnCore(responses,numFns, variables,variable_descriptors,numACV,femmodel,counter);
+
+				/*populate responses: */
+				for(i=0;i<numFns;i++){
+					fnVals[i]=responses[i];
+				}
+
+				/*Free resources:*/
+				xDelete<IssmDouble>(variables);
+				for(i=0;i<numACV;i++){
+					variable_descriptor=variable_descriptors[i];
+					xDelete<char>(variable_descriptor);
+				}
+				xDelete<char*>(variable_descriptors);
+				xDelete<IssmDouble>(responses);
+
+				return 0;
+			}/*}}}*/
+			/*execute the output filter portion of a direct evaluation invocation*/
+			//int derived_map_of(const Dakota::String& of_name);
+			/*add for issm: */
+			int GetCounter(){/*{{{*/
+				return counter;
+			}/*}}}*/
+		private:
+	};
+} 
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Dakota/IssmParallelDirectApplicInterface.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Dakota/IssmParallelDirectApplicInterface.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Dakota/IssmParallelDirectApplicInterface.cpp	(revision 27955)
@@ -0,0 +1,154 @@
+/*!\file:  see IssmParallelDirectApplicInterface.h for documentation.  */ 
+
+/*Issm Configuration: {{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+/*}}}*/
+
+#if !defined(_WRAPPERS_) && defined(_HAVE_DAKOTA_) && _DAKOTA_MAJOR_ >= 6
+
+#include "../classes.h"
+#include "../../cores/cores.h"
+#include "../../modules/modules.h"
+
+namespace SIM {
+	IssmParallelDirectApplicInterface::IssmParallelDirectApplicInterface(const Dakota::ProblemDescDB& problem_db, const MPI_Comm& evaluation_comm, int argc, char** argv) :Dakota::DirectApplicInterface(problem_db){ /*{{{*/
+
+		int world_rank;
+		ISSM_MPI_Comm_rank(ISSM_MPI_COMM_WORLD,&world_rank);
+
+		/*Build an femmodel if you are a slave, using the corresponding communicator:*/
+		if(world_rank!=0){
+			femmodel_init= new FemModel(argc,argv,evaluation_comm);
+			femmodel_init->profiler->Start(CORE);
+		}
+
+	}
+	/*}}}*/
+	IssmParallelDirectApplicInterface::~IssmParallelDirectApplicInterface(){ /*{{{*/
+
+		int world_rank;
+		ISSM_MPI_Comm_rank(ISSM_MPI_COMM_WORLD,&world_rank);
+
+		if(world_rank!=0){
+
+			/*Wrap up: */
+			femmodel_init->profiler->Stop(CORE);
+			femmodel_init->CleanUp(); //only close file pointers on rank 0 of slave 1!
+
+			/*Delete Model: */
+			delete femmodel_init;
+		}
+	}
+	/*}}}*/
+	int IssmParallelDirectApplicInterface::derived_map_ac(const Dakota::String& ac_name){/*{{{*/
+
+		FemModel* femmodel;
+
+		char     **responses_descriptors    = NULL;      //these are ours! there are only numresponsedescriptors of them, not d_numresponses!!!
+		char      *response_descriptor      = NULL;
+		int        numresponsedescriptors;
+		int        solution_type;
+		bool       control_analysis         = false;
+		void     (*solutioncore)(FemModel*) = NULL;
+		void     (*solutionprecore)(FemModel*) = NULL;
+		bool       nodakotacore             = true;
+
+		int world_rank;
+		ISSM_MPI_Comm_rank(ISSM_MPI_COMM_WORLD,&world_rank);
+
+		/*Only have slaves work!:*/
+		if(world_rank==0)return 0;
+
+		#ifdef MPI_DEBUG
+		_printf0_("eval server id" << evalServerId << " invoking " << ac_name << " within SIM::IssmParallelDirectApplicInterface." << std::endl);
+		_printf0_("evalServerId " << evalServerId << "evaluation_id " << currEvalId <<  "\n");
+		#endif // MPI_DEBUG
+
+		int i;
+		IssmDouble  *variables            = NULL;
+		char       **variable_descriptors = NULL;
+		char        *variable_descriptor  = NULL;
+		IssmDouble  *responses            = NULL;
+
+		/*Before launching evaluation, we need to transfer the dakota inputs into Issm readable variables: */
+
+		/*First, the variables: */
+		variables=xNew<IssmDouble>(numACV);
+		for(i=0;i<numACV;i++){
+			variables[i]=xC[i];
+		}
+		/*The descriptors: */
+		variable_descriptors=xNew<char*>(numACV);
+		for(i=0;i<numACV;i++){
+			std::string label=xCLabels[i];
+			variable_descriptor=xNew<char>(strlen(label.c_str())+1);
+			memcpy(variable_descriptor,label.c_str(),(strlen(label.c_str())+1)*sizeof(char));
+
+			variable_descriptors[i]=variable_descriptor;
+		}
+
+		/*Initialize responses: */
+		responses=xNewZeroInit<IssmDouble>(numFns);
+
+		/*Launch cores that are not used during the uncertainty quantification: */
+		WrapperPreCorePointerFromSolutionEnum(&solutionprecore,femmodel_init->parameters,solution_type);
+		if(solutionprecore)solutionprecore(femmodel_init);
+
+		/*Make a copy of femmodel, so we start this new evaluation run for this specific sample with a brand 
+		 * new copy of the model, which has not been tempered with by previous evaluation runs: */
+		femmodel=femmodel_init->copy();
+
+		/*retrieve parameters: */
+		femmodel->parameters->FindParam(&responses_descriptors,&numresponsedescriptors,QmuResponsedescriptorsEnum);
+		femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+		femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+
+		/*include currEvalId in parameters:*/
+		femmodel->parameters->SetParam(currEvalId,QmuCurrEvalIdEnum);
+
+		/*Modify core inputs in objects contained in femmodel, to reflect the dakota variables inputs: */
+		InputUpdateFromDakotax(femmodel,variables,variable_descriptors,numACV);
+
+		/*Determine solution sequence: */
+		if(VerboseQmu()) _printf0_("Starting " << EnumToStringx(solution_type) << " core:\n");
+		WrapperCorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type,nodakotacore);
+
+		/*Run the core solution sequence: */
+		solutioncore(femmodel);
+
+		/*compute responses: */
+		if(VerboseQmu()) _printf0_("compute dakota responses:\n");
+		femmodel->DakotaResponsesx(responses,responses_descriptors,numresponsedescriptors,numFns);
+
+		/*Output results for this iteration: */
+		if(VerboseQmu()) _printf0_("output results for this iteration: \n");
+		OutputResultsx(femmodel);
+
+		/*populate responses: */
+		for(i=0;i<numFns;i++){
+			fnVals[i]=responses[i];
+		}
+
+		/*Free resources:*/
+		xDelete<IssmDouble>(variables);
+		for(i=0;i<numACV;i++){
+			variable_descriptor=variable_descriptors[i];
+			xDelete<char>(variable_descriptor);
+		}
+		xDelete<char*>(variable_descriptors);
+		for(i=0;i<numresponsedescriptors;i++){
+			response_descriptor=responses_descriptors[i];
+			xDelete<char>(response_descriptor);
+		}
+		if(responses_descriptors) xDelete<char*>(responses_descriptors);
+		xDelete<IssmDouble>(responses);
+		delete femmodel;
+
+		return 0;
+	}/*}}}*/
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Dakota/IssmParallelDirectApplicInterface.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Dakota/IssmParallelDirectApplicInterface.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Dakota/IssmParallelDirectApplicInterface.h	(revision 27955)
@@ -0,0 +1,51 @@
+/*!\file:  IssmParallelDirectApplicInterface.h. This code is only valid for Dakota versions higher than 6!
+ *
+ * \brief: derived ParallelDirectApplicInterface class declaration and implementation, taylored to ISSM.
+ * This class is registered into the interface database of Dakota, and is used to directly call ISSM cores 
+ * from Dakota. 
+ *
+ * This routine helps running ISSM and Dakota in library mode, for Dakota versions that are >=6, and that fully 
+ * support parallelism.  The setup is radically different than from version <6! Now, dakota runs the show more. 
+ * The reason is that dakota now controls the parallelism in a master/slave setup, and hands over to ISSM a  bunch 
+ * of slave communicators, which are then used to run our simulations. Because ISSM is now ESMF compliant, we can 
+ * use these communicators to create separate identical FemModel instances on each slave communicator! This allows 
+ * us to scale to large jobs (think 1000's of cpus), which we split into multiple sub-slave communicators, which 
+ * run the sampling (or forward different, local reliability, optimization you name it) simulations on each slave. 
+ * 
+ * This is all bootstraped from the main issm_dakota main, (see c/main directory), which is heavily inspired on the
+ * main found in the dakota/src/library_mode.cpp code. We also have to create an ISSM code that registers into the 
+ * dakota database, which is capable of running ISSM. This is derived from the Dakota class called 
+ * ParallelDirectApplicInterface. 
+ */ 
+#ifndef _ISSMPARALLELDIRECTAPPLICINTERFACE_
+#define _ISSMPARALLELDIRECTAPPLICINTERFACE_
+
+/*Issm Configuration: {{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+/*}}}*/
+
+#if !defined(_WRAPPERS_) && defined(_HAVE_DAKOTA_) && _DAKOTA_MAJOR_ >= 6
+
+#include <DirectApplicInterface.hpp>
+class FemModel;
+
+namespace SIM {
+	class IssmParallelDirectApplicInterface: public Dakota::DirectApplicInterface{
+
+		private: 
+			FemModel* femmodel_init;
+		public:
+			IssmParallelDirectApplicInterface(const Dakota::ProblemDescDB& problem_db, const MPI_Comm& evaluation_comm, int argc, char** argv);
+			~IssmParallelDirectApplicInterface();
+		protected:
+			/// execute an analysis code portion of a direct evaluation invocation
+			int derived_map_ac(const Dakota::String& ac_name);
+	};
+}
+/*}}}*/
+#endif
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Definition.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Definition.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Definition.h	(revision 27955)
@@ -0,0 +1,20 @@
+/*!\file: Definition.h: abstract class used by some objects to behave like response objects 
+ * that can be called according to a string (the output definition)
+ */ 
+
+#ifndef _DEFINITION_H_
+#define  _DEFINITION_H_
+
+/*Headers:*/
+class FemModel;
+class Definition {
+
+	public:
+		virtual       ~Definition(){};
+		virtual char*  Name()=0;
+		virtual int    DefinitionEnum()=0;
+		virtual IssmDouble  Response(FemModel*)=0;
+
+};
+
+#endif //ifndef _DEFINITION_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/DependentObject.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/DependentObject.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/DependentObject.cpp	(revision 27955)
@@ -0,0 +1,90 @@
+/*!\file DependentObject.c
+ * \brief: implementation of the DependentObject object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./classes.h"
+#include "shared/shared.h"
+#include "../modules/modules.h"
+
+/*DependentObject constructors and destructor*/
+DependentObject::DependentObject(){/*{{{*/
+	this->name=NULL;
+	this->response_value=0.;
+}
+/*}}}*/
+DependentObject::DependentObject(char* in_name){/*{{{*/
+
+	this->name=xNew<char>(strlen(in_name)+1); xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+	this->response_value=0.;
+
+}/*}}}*/
+DependentObject::DependentObject(char* in_name,IssmDouble in_response){/*{{{*/
+
+	this->name=xNew<char>(strlen(in_name)+1); xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+	this->response_value=in_response;
+
+}/*}}}*/
+DependentObject::~DependentObject(){ //destructor/*{{{*/
+	xDelete<char>(this->name);
+}/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* DependentObject::copy(void) { /*{{{*/
+	return new DependentObject(name,response_value);
+} /*}}}*/
+void DependentObject::DeepEcho(void){/*{{{*/
+	this->Echo();
+}
+/*}}}*/
+void DependentObject::Echo(void){/*{{{*/
+
+	_printf_("DependentObject:\n");
+	_printf_("   name: " << this->name << "\n");
+	_printf_("   response_value: " << this->response_value<< "\n");
+}
+/*}}}*/
+int  DependentObject::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+int  DependentObject::ObjectEnum(void){/*{{{*/
+
+	return DependentObjectEnum;
+
+}
+/*}}}*/
+void DependentObject::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+
+	int object_enum = DependentObjectEnum;
+	marshallhandle->call(object_enum);
+
+	/*Marshall name (tricky)*/
+	marshallhandle->call(this->name);
+
+	marshallhandle->call(this->response_value);
+}/*}}}*/
+
+/*DependentObject methods: */
+void  DependentObject::RecordResponsex(FemModel* femmodel){/*{{{*/
+
+	/*Is this some special type of response for which we need to go in the output definitions? :*/
+	if (StringToEnumx(this->name,false)==-1){
+		this->response_value = OutputDefinitionsResponsex(femmodel,this->name);
+	}
+	else{
+		femmodel->Responsex(&this->response_value, this->name);
+	}
+}
+/*}}}*/
+IssmDouble DependentObject::GetValue(void){/*{{{*/
+	return this->response_value;
+}
+/*}}}*/
+void DependentObject::ResetResponseValue(){/*{{{*/
+	this->response_value=0.;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/DependentObject.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/DependentObject.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/DependentObject.h	(revision 27955)
@@ -0,0 +1,42 @@
+/*!\file: DependentObject.h
+ * \brief prototype for DependentObject.h
+ */ 
+
+#ifndef _DEPENDENTOBJECT_H_
+#define  _DEPENDENTOBJECT_H_
+
+/*{{{*/
+#include "../datastructures/datastructures.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+class FemModel;
+
+class DependentObject: public Object{
+
+	public:
+
+		char* name;
+		IssmDouble response_value;
+
+		/*DependentObject constructors, destructors */
+		DependentObject();
+		DependentObject(char* name);
+		DependentObject(char* name, IssmDouble in_response);
+		~DependentObject();
+
+		/*Object virtual functions definitions*/
+		Object *copy(void);
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		int     ObjectEnum();
+		void    Marshall(MarshallHandle  *marshallhandle);
+
+		/*DependentObject methods: */
+		void       RecordResponsex(FemModel*femmodel);
+		IssmDouble GetValue(void);
+		void       ResetResponseValue(void);
+
+};
+#endif //ifndef _DEPENDENTOBJECT_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Element.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Element.cpp	(revision 27955)
@@ -0,0 +1,6170 @@
+/*!\file Element.cpp
+ * \brief: implementation of the Element object
+ */
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include <math.h>
+#include <stdio.h>
+#include <string.h>
+#include "../classes.h"
+#include "../../shared/shared.h"
+#include "../../modules/SurfaceMassBalancex/SurfaceMassBalancex.h"
+#include "../Inputs/BoolInput.h"
+#include "../Inputs/TransientInput.h"
+#include "../Inputs/ElementInput.h"
+#include "../Inputs/PentaInput.h"
+#include "../Inputs/DatasetInput.h"
+#include "../Inputs/ControlInput.h"
+#include "../Inputs/ArrayInput.h"
+#include "../Inputs/IntArrayInput.h"
+/*}}}*/
+#define MAXVERTICES 6 /*Maximum number of vertices per element, currently Penta, to avoid dynamic mem allocation*/
+
+#ifdef _HAVE_SEMIC_
+/* SEMIC prototype {{{*/
+extern "C" void run_semic_(IssmDouble *sf_in, IssmDouble *rf_in, IssmDouble *swd_in, IssmDouble *lwd_in, IssmDouble *wind_in, IssmDouble *sp_in, IssmDouble *rhoa_in,
+			IssmDouble *qq_in, IssmDouble *tt_in, IssmDouble *tsurf_out, IssmDouble *smb_out, IssmDouble *saccu_out, IssmDouble *smelt_out);
+
+extern "C" void run_semic_transient_(int *nx, int *ntime, int *nloop, 
+			IssmDouble *sf_in, IssmDouble *rf_in, IssmDouble *swd_in, 
+			IssmDouble *lwd_in, IssmDouble *wind_in, IssmDouble *sp_in, IssmDouble *rhoa_in,
+			IssmDouble *qq_in, IssmDouble *tt_in, IssmDouble *tsurf_in, IssmDouble *qmr_in,
+			IssmDouble *tstic,
+			IssmDouble *hcrit, IssmDouble *rcrit,
+			IssmDouble *mask, IssmDouble *hice, IssmDouble *hsnow,
+			IssmDouble *albedo_in, IssmDouble *albedo_snow_in,
+			int *alb_scheme, IssmDouble *alb_smax, IssmDouble *alb_smin, IssmDouble *albi, IssmDouble *albl,
+			IssmDouble *Tamp, 
+			IssmDouble *tmin, IssmDouble *tmax, IssmDouble *tmid, IssmDouble *mcrit, IssmDouble *wcrit, IssmDouble *tau_a, IssmDouble* tau_f, IssmDouble *afac, bool *verbose,
+			IssmDouble *tsurf_out, IssmDouble *smb_out, IssmDouble *smbi_out, IssmDouble *smbs_out, IssmDouble *saccu_out, IssmDouble *smelt_out, IssmDouble *refr_out, IssmDouble *albedo_out, IssmDouble *albedo_snow_out, IssmDouble *hsnow_out, IssmDouble *hice_out, IssmDouble *qmr_out);
+#endif
+// _HAVE_SEMIC_
+/*}}}*/
+/*Constructors/destructor/copy*/
+Element::Element(){/*{{{*/
+	this->id  = -1;
+	this->sid = -1;
+	this->lid = -1;
+	this->inputs    = NULL;
+	this->nodes      = NULL;
+	this->vertices   = NULL;
+	this->material   = NULL;
+	this->parameters = NULL;
+	this->element_type_list=NULL;
+}/*}}}*/
+Element::~Element(){/*{{{*/
+	xDelete<int>(element_type_list);
+}
+/*}}}*/
+
+/*Other*/
+bool       Element::AnyFSet(){/*{{{*/
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = this->GetNumberOfNodes();
+
+	for(int i=0;i<numnodes;i++){
+		if(nodes[i]->FSize()) return true;
+	}
+	return false;
+}/*}}}*/
+void       Element::ArmaProcess(bool isstepforarma,int arorder,int maorder,int numparams,int numbreaks,IssmDouble tstep_arma,IssmDouble* polyparams,IssmDouble* arlagcoefs,IssmDouble* malagcoefs,IssmDouble* datebreaks,bool isfieldstochastic,int enum_type){/*{{{*/
+   const int numvertices = this->GetNumberOfVertices();
+	int         numperiods = numbreaks+1; 
+   int         basinid,M,N,arenum_type,maenum_type,basinenum_type,noiseenum_type,outenum_type,indperiod;
+   IssmDouble  time,dt,starttime,noiseterm;
+   IssmDouble* arlagcoefs_basin     = xNew<IssmDouble>(arorder);
+   IssmDouble* malagcoefs_basin     = xNew<IssmDouble>(maorder);
+   IssmDouble* datebreaks_basin     = xNew<IssmDouble>(numbreaks);
+   IssmDouble* polyparams_basin     = xNew<IssmDouble>(numperiods*numparams);
+   IssmDouble* varlist              = xNew<IssmDouble>(numvertices);
+   IssmDouble* sumpoly              = xNewZeroInit<IssmDouble>(arorder+1);
+   IssmDouble* valuesautoregression = NULL;
+   IssmDouble* valuesmovingaverage  = NULL;
+   Input*      noiseterm_input      = NULL;
+
+   /*Get field-specific enums*/
+   switch(enum_type){
+      case(SMBarmaEnum):
+         arenum_type    = SmbValuesAutoregressionEnum;
+         maenum_type    = SmbValuesMovingaverageEnum;
+         basinenum_type = SmbBasinsIdEnum;
+         noiseenum_type = SmbARMANoiseEnum;
+         outenum_type   = SmbMassBalanceEnum;
+         break;
+      case(FrontalForcingsRignotarmaEnum):
+         arenum_type    = ThermalforcingValuesAutoregressionEnum;
+         maenum_type    = ThermalforcingValuesMovingaverageEnum;
+         basinenum_type = FrontalForcingsBasinIdEnum;
+         noiseenum_type = ThermalforcingARMANoiseEnum;
+         outenum_type   = ThermalForcingEnum;
+         break;
+		case(BasalforcingsDeepwaterMeltingRatearmaEnum):
+         arenum_type    = BasalforcingsDeepwaterMeltingRateValuesAutoregressionEnum;
+         maenum_type    = BasalforcingsDeepwaterMeltingRateValuesMovingaverageEnum;
+         basinenum_type = BasalforcingsLinearBasinIdEnum;
+         noiseenum_type = BasalforcingsDeepwaterMeltingRateNoiseEnum;
+         outenum_type   = BasalforcingsSpatialDeepwaterMeltingRateEnum;
+         break;
+		case(FrontalForcingsSubglacialDischargearmaEnum):
+         arenum_type    = SubglacialdischargeValuesAutoregressionEnum;
+         maenum_type    = SubglacialdischargeValuesMovingaverageEnum;
+         basinenum_type = FrontalForcingsBasinIdEnum;
+         noiseenum_type = SubglacialdischargeARMANoiseEnum;
+         outenum_type   = FrontalForcingsSubglacialDischargeEnum;
+         break;
+		case(HydrologyarmapwEnum):
+         arenum_type    = WaterPressureValuesAutoregressionEnum;
+         maenum_type    = WaterPressureValuesMovingaverageEnum;
+         basinenum_type = HydrologyBasinsIdEnum;
+         noiseenum_type = FrictionWaterPressureNoiseEnum;
+         outenum_type   = WaterPressureArmaPerturbationEnum;
+         break;
+	}
+
+	/*Get time parameters*/
+   this->parameters->FindParam(&time,TimeEnum);
+   this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+   this->parameters->FindParam(&starttime,TimesteppingStartTimeEnum);
+
+   /*Get basin coefficients*/
+   this->GetInputValue(&basinid,basinenum_type);
+	for(int i=0;i<arorder;i++) arlagcoefs_basin[i]   = arlagcoefs[basinid*arorder+i];
+	for(int i=0;i<maorder;i++) malagcoefs_basin[i]   = malagcoefs[basinid*maorder+i];
+	for(int i=0;i<numparams;i++){
+		for(int j=0;j<numperiods;j++) polyparams_basin[i*numperiods+j] = polyparams[basinid*numparams*numperiods+i*numperiods+j];
+	}
+	if(numbreaks>0){
+		for(int i=0;i<numbreaks;i++) datebreaks_basin[i] = datebreaks[basinid*numbreaks+i];
+	}
+
+	/*Compute terms from polynomial parameters from arorder steps back to present*/
+	IssmDouble telapsed_break;
+	IssmDouble tatstep;
+	for(int s=0;s<arorder+1;s++){
+		tatstep = time-s*tstep_arma;
+		if(numbreaks>0){
+			/*Find index of tatstep compared to the breakpoints*/
+			indperiod = 0;
+			for(int i=0;i<numbreaks;i++){
+				if(tatstep>=datebreaks_basin[i]) indperiod = i+1;
+			}
+			/*Compute polynomial with parameters of indperiod*/
+			if(indperiod==0) telapsed_break = tatstep-starttime;
+			else             telapsed_break = tatstep-datebreaks_basin[indperiod-1];
+			for(int j=0;j<numparams;j++)   sumpoly[s] = sumpoly[s]+polyparams_basin[indperiod+j*numperiods]*pow(telapsed_break,j);
+		}
+		else for(int j=0;j<numparams;j++) sumpoly[s] = sumpoly[s]+polyparams_basin[j*numperiods]*pow(tatstep-starttime,j);
+	}
+
+	/*Initialze autoregressive and moving-average values at first time step*/
+	if(time<=starttime+dt){
+		IssmDouble* initvaluesautoregression = xNewZeroInit<IssmDouble>(numvertices*arorder);
+		IssmDouble* initvaluesmovingaverage  = xNewZeroInit<IssmDouble>(numvertices*maorder);
+		for(int i=0;i<numvertices*arorder;i++) initvaluesautoregression[i]=polyparams_basin[0];
+      this->inputs->SetArrayInput(arenum_type,this->lid,initvaluesautoregression,numvertices*arorder);
+      this->inputs->SetArrayInput(maenum_type,this->lid,initvaluesmovingaverage,numvertices*maorder);
+      xDelete<IssmDouble>(initvaluesautoregression);
+      xDelete<IssmDouble>(initvaluesmovingaverage);
+	}
+
+   /*Get noise, autoregressive terms, moving-average terms*/
+	if(isfieldstochastic){
+      noiseterm_input = this->GetInput(noiseenum_type);
+      Gauss* gauss = this->NewGauss();
+      noiseterm_input->GetInputValue(&noiseterm,gauss);
+      delete gauss;
+   }
+   else noiseterm = 0.0;
+   this->inputs->GetArray(arenum_type,this->lid,&valuesautoregression,&M);
+   this->inputs->GetArray(maenum_type,this->lid,&valuesmovingaverage,&M);
+	
+	/*If not ARMA model timestep: take the old values of variable*/
+   if(isstepforarma==false){
+      for(int i=0;i<numvertices;i++) varlist[i]=valuesautoregression[i];
+   }
+   /*If ARMA model timestep: compute variable values on vertices from ARMA*/
+   else{
+      for(int v=0;v<numvertices;v++){
+
+         /*Compute autoregressive term*/
+         IssmDouble autoregressionterm=0.;
+         for(int ii=0;ii<arorder;ii++) autoregressionterm += arlagcoefs_basin[ii]*(valuesautoregression[v+ii*numvertices]-sumpoly[ii+1]);
+			/*Compute moving-average term*/
+         IssmDouble movingaverageterm=0.;
+         for(int ii=0;ii<maorder;ii++) movingaverageterm  += malagcoefs_basin[ii]*valuesmovingaverage[v+ii*numvertices];
+
+			/*Stochastic variable value*/
+         varlist[v] = sumpoly[0]+autoregressionterm+movingaverageterm+noiseterm;
+      
+			/*Impose zero-bound*/
+			if(outenum_type == ThermalForcingEnum || outenum_type == FrontalForcingsSubglacialDischargeEnum) varlist[v] = max(varlist[v],0.0);
+
+		}
+
+      /*Update autoregression and moving-average values*/
+      IssmDouble* temparrayar = xNew<IssmDouble>(numvertices*arorder);
+      IssmDouble* temparrayma = xNew<IssmDouble>(numvertices*maorder);
+      /*Assign newest values and shift older values*/
+      for(int i=0;i<numvertices;i++) temparrayar[i] = varlist[i];
+      for(int i=0;i<numvertices;i++) temparrayma[i] = noiseterm;
+      for(int i=0;i<(arorder-1)*numvertices;i++) temparrayar[i+numvertices] = valuesautoregression[i];
+      for(int i=0;i<(maorder-1)*numvertices;i++) temparrayma[i+numvertices] = valuesmovingaverage[i];
+		this->inputs->SetArrayInput(arenum_type,this->lid,temparrayar,numvertices*arorder);
+      this->inputs->SetArrayInput(maenum_type,this->lid,temparrayma,numvertices*maorder);
+      xDelete<IssmDouble>(temparrayar);
+      xDelete<IssmDouble>(temparrayma);
+   }
+
+   /*Add input to element*/
+   this->AddInput(outenum_type,varlist,P1Enum);
+
+   /*Cleanup*/
+   xDelete<IssmDouble>(arlagcoefs_basin);
+   xDelete<IssmDouble>(malagcoefs_basin);
+   xDelete<IssmDouble>(datebreaks_basin);
+   xDelete<IssmDouble>(polyparams_basin);
+   xDelete<IssmDouble>(sumpoly);
+   xDelete<IssmDouble>(varlist);
+   xDelete<IssmDouble>(valuesautoregression);
+   xDelete<IssmDouble>(valuesmovingaverage);
+}
+
+/*}}}*/
+void       Element::BasinLinearFloatingiceMeltingRate(IssmDouble* deepwaterel,IssmDouble* upperwatermelt,IssmDouble* upperwaterel,IssmDouble* perturbation){/*{{{*/
+
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+
+	int basinid;
+   IssmDouble alpha;
+   IssmDouble base[MAXVERTICES];
+   IssmDouble values[MAXVERTICES];
+   IssmDouble deepwatermelt[MAXVERTICES];
+
+	/*Get element-specific values*/
+	this->GetInputValue(&basinid,BasalforcingsLinearBasinIdEnum);
+	this->GetInputListOnVertices(&base[0],BaseEnum);
+   this->GetInputListOnVertices(&deepwatermelt[0],BasalforcingsSpatialDeepwaterMeltingRateEnum);
+
+	/*Compute melt rate at vertices according to basin-specific values of input arguments*/
+   for(int i=0;i<NUM_VERTICES;i++){
+		if(base[i]>=upperwaterel[basinid]){
+         values[i]=upperwatermelt[basinid];
+      }
+      else if (base[i]<deepwaterel[basinid]){
+         values[i]=deepwatermelt[i];
+      }
+      else{
+         alpha = (base[i]-upperwaterel[basinid])/(deepwaterel[basinid]-upperwaterel[basinid]);
+         values[i]=deepwatermelt[i]*alpha+(1.-alpha)*upperwatermelt[basinid];
+      }
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in melt");
+		if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in melt");
+		if(fabs(values[i])>1.e+10) _error_("melt exceeds 1.e+10");
+   }
+
+   this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,&values[0],P1Enum);
+}/*}}}*/
+void       Element::CalvingRateToVector(){/*{{{*/
+
+	/*We are provided a calving rate, figure out the x/y components*/
+	int         dim,domaintype;
+	IssmDouble  vx,vy,vel,dphidx,dphidy,dphi,c;
+	IssmDouble  calvingratex[MAXVERTICES];
+	IssmDouble  calvingratey[MAXVERTICES];
+
+	/*Get problem dimension and whether there is moving front or not*/
+	this->FindParam(&domaintype,DomainTypeEnum);
+
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1; break;
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 2; break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+	if(dim==1) _error_("not implemented in 1D...");
+
+	Input *calvingrate_input = this->GetInput(CalvingCalvingrateEnum);     _assert_(calvingrate_input);
+	Input *vx_input          = this->GetInput(VxEnum);  _assert_(vx_input);
+	Input *vy_input          = this->GetInput(VyEnum); _assert_(vy_input);
+	Input *lsf_slopex_input  = this->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input);
+	Input *lsf_slopey_input  = this->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input);
+
+	/*Allocate arrays*/
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+
+	/* Start looping on the number of vertices: */
+	Gauss* gauss=this->NewGauss();
+	for (int iv=0;iv<NUM_VERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+      calvingrate_input->GetInputValue(&c,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		lsf_slopex_input->GetInputValue(&dphidx,gauss);
+		lsf_slopey_input->GetInputValue(&dphidy,gauss);
+
+		vel=sqrt(vx*vx + vy*vy) + 1e-14;
+		dphi=sqrt(dphidx*dphidx+dphidy*dphidy)+ 1e-14;
+
+		if(false){
+			/*Velocity direction*/
+			calvingratex[iv] = c*vx/vel;
+         calvingratey[iv] = c*vy/vel;
+		}
+		else{
+			/*Lelvelset gradient (perpendicular to ice front)*/
+         calvingratex[iv] = c*dphidx/dphi;
+         calvingratey[iv] = c*dphidy/dphi;
+		}
+	}
+
+
+	/*Add to inputs*/
+	this->AddInput(CalvingratexEnum,&calvingratex[0],P1DGEnum);
+	this->AddInput(CalvingrateyEnum,&calvingratey[0],P1DGEnum);
+	//this->AddInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum); /*Do not change calving rate, that's our input!*/
+
+	/*Clean up and return*/
+	delete gauss;
+}/*}}}*/
+void       Element::CalvingSetZeroRate(){/*{{{*/
+
+	/*Set calving rate as 0, this is probably because we are  dealing with discrete calving laws*/
+	IssmDouble  calvingratex[MAXVERTICES] = {0.};
+	IssmDouble  calvingratey[MAXVERTICES] = {0.};
+	IssmDouble  calvingrate[MAXVERTICES]  = {0.};
+	this->AddInput(CalvingratexEnum,&calvingratex[0],P1DGEnum);
+	this->AddInput(CalvingrateyEnum,&calvingratey[0],P1DGEnum);
+	this->AddInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum);
+}/*}}}*/
+void       Element::ComputeLambdaS(){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble vx,vy,vz,vmag;
+	IssmDouble dvx[3],dvy[3],dvz[3],dvmag[3];
+	IssmDouble eps[3][3],epseff,epsprime;
+	IssmDouble lambdas[MAXVERTICES];
+	int         dim;
+	IssmDouble *xyz_list = NULL;
+
+	/*Retrieve all inputs we will be needing: */
+	this->GetVerticesCoordinates(&xyz_list);
+	parameters->FindParam(&dim,DomainDimensionEnum);
+	Input* vx_input=this->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=this->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input=NULL;
+	if(dim==3){vz_input=this->GetInput(VzEnum); _assert_(vz_input);}
+
+	/*Allocate arrays*/
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+
+	/* Start looping on the number of vertices: */
+	Gauss* gauss=this->NewGauss();
+	for (int iv=0;iv<NUM_VERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		/*Get velocity derivatives in all directions*/
+		_assert_(dim>1);
+		_assert_(vx_input);
+		vx_input->GetInputValue(&vx,gauss);
+		vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		_assert_(vy_input);
+		vy_input->GetInputValue(&vy,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+		if(dim==3){
+			_assert_(vz_input);
+			vz_input->GetInputValue(&vz,gauss);
+			vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
+		}
+		else{
+			vz = 0.;
+			dvz[0] = 0.; dvz[1] = 0.; dvz[2] = 0.;
+			dvx[2]= 0.;
+			dvy[2]= 0.;
+		}
+		/*Calculate velocity magnitude and its derivative*/
+		vmag = sqrt(vx*vx+vy*vy+vz*vz);
+		if(vmag<1e-12){
+			vmag=1e-12;
+			dvmag[0]=0;
+			dvmag[1]=0;
+			dvmag[2]=0;
+		}
+		else{
+			dvmag[0]=1./(2*sqrt(vmag))*(2*vx*dvx[0]+2*vy*dvy[0]+2*vz*dvz[0]);
+			dvmag[1]=1./(2*sqrt(vmag))*(2*vx*dvx[1]+2*vy*dvy[1]+2*vz*dvz[1]);
+			dvmag[2]=1./(2*sqrt(vmag))*(2*vx*dvx[2]+2*vy*dvy[2]+2*vz*dvz[2]);
+		}
+		/*Build strain rate tensor*/
+		eps[0][0] = dvx[0];             eps[0][1] = .5*(dvx[1]+dvy[0]); eps[0][2] = .5*(dvx[2]+dvz[0]);
+		eps[1][0] = .5*(dvx[1]+dvy[0]); eps[1][1] = dvy[1];             eps[1][2] = .5*(dvy[2]+dvz[1]);
+		eps[2][0] = .5*(dvx[2]+dvz[0]); eps[2][1] = .5*(dvy[2]+dvz[1]); eps[2][2] = dvz[2];
+
+		/*effective strain rate*/
+		epseff = 0.;
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
+		epseff = sqrt(eps[0][0]*eps[0][0] + eps[1][1]*eps[1][1] + eps[0][1]*eps[0][1] +  eps[0][2]*eps[0][2] + eps[1][2]*eps[1][2] + eps[0][0]*eps[1][1]);
+
+		EstarStrainrateQuantities(&epsprime,vx,vy,vz,vmag,&dvx[0],&dvy[0],&dvz[0],&dvmag[0]);
+		lambdas[iv]=EstarLambdaS(epseff,epsprime);
+	}
+
+	/*Add Stress tensor components into inputs*/
+	this->AddInput(LambdaSEnum,&lambdas[0],P1Enum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+}/*}}}*/
+void       Element::ComputeNewDamage(){/*{{{*/
+
+	IssmDouble *xyz_list=NULL;
+	IssmDouble  eps_xx,eps_xy,eps_yy,eps_xz,eps_yz,eps_zz,eps_eff;
+	IssmDouble  epsmin=1.e-27;
+	IssmDouble  eps_0,kappa,sigma_0,B,D,n,envelopeD;
+	int         dim,counter=0;
+	IssmDouble  k1,k2,threshold=1.e-12;
+
+	/* Retrieve parameters */
+	this->GetVerticesCoordinates(&xyz_list);
+	this->ComputeStrainRate();
+	parameters->FindParam(&dim,DomainDimensionEnum);
+	parameters->FindParam(&kappa,DamageKappaEnum);
+	parameters->FindParam(&sigma_0,DamageStressThresholdEnum);
+
+	/* Retrieve inputs */
+	Input* eps_xx_input=this->GetInput(StrainRatexxEnum); _assert_(eps_xx_input);
+	Input* eps_yy_input=this->GetInput(StrainRateyyEnum); _assert_(eps_yy_input);
+	Input* eps_xy_input=this->GetInput(StrainRatexyEnum); _assert_(eps_xy_input);
+	Input* eps_xz_input=NULL;
+	Input* eps_yz_input=NULL;
+	Input* eps_zz_input=NULL;
+	if(dim==3){
+		eps_xz_input=this->GetInput(StrainRatexzEnum); _assert_(eps_xz_input);
+		eps_yz_input=this->GetInput(StrainRateyzEnum); _assert_(eps_yz_input);
+		eps_zz_input=this->GetInput(StrainRatezzEnum); _assert_(eps_zz_input);
+	}
+
+	/* Fetch number of nodes and allocate output*/
+	int numnodes = this->GetNumberOfNodes();
+	IssmDouble* newD = xNew<IssmDouble>(numnodes);
+
+	/* Retrieve domain-dependent inputs */
+	Input* n_input=this->GetInput(MaterialsRheologyNEnum); _assert_(n_input);
+	Input* damage_input = NULL;
+	Input* B_input = NULL;
+	int domaintype;
+	parameters->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype==Domain2DhorizontalEnum){
+		damage_input = this->GetInput(DamageDbarOldEnum);  _assert_(damage_input);
+		B_input=this->GetInput(MaterialsRheologyBbarEnum); _assert_(B_input);
+	}
+	else{
+		damage_input = this->GetInput(DamageDOldEnum);   _assert_(damage_input);
+		B_input=this->GetInput(MaterialsRheologyBEnum); _assert_(B_input);
+	}
+
+	/* Start looping on the number of nodes: */
+	Gauss* gauss=this->NewGauss();
+	for (int i=0;i<numnodes;i++){
+		gauss->GaussNode(this->GetElementType(),i);
+
+		eps_xx_input->GetInputValue(&eps_xx,gauss);
+		eps_yy_input->GetInputValue(&eps_yy,gauss);
+		eps_xy_input->GetInputValue(&eps_xy,gauss);
+		if(dim==3){
+			eps_xz_input->GetInputValue(&eps_xz,gauss);
+			eps_yz_input->GetInputValue(&eps_yz,gauss);
+			eps_zz_input->GetInputValue(&eps_zz,gauss);
+		}
+		else{eps_xz=0; eps_yz=0; eps_zz=0;}
+
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
+		eps_eff=sqrt(eps_xx*eps_xx+eps_yy*eps_yy+eps_xy*eps_xy+eps_xz*eps_xz+eps_yz*eps_yz+eps_xx*eps_yy+epsmin*epsmin);
+
+		B_input->GetInputValue(&B,gauss);
+		n_input->GetInputValue(&n,gauss);
+		damage_input->GetInputValue(&D,gauss);
+
+		/* Compute threshold strain rate from threshold stress */
+		eps_0=pow(sigma_0/B,n);
+
+		if(eps_eff>eps_0){
+			/* Compute damage on envelope curve for existing level of effective strain rate */
+			envelopeD=1.-pow(eps_0/eps_eff,1./n)*exp(-(eps_eff-eps_0)/(eps_0*(kappa-1.)));
+
+			if(envelopeD>D){
+				newD[i]=envelopeD;
+			}
+			else newD[i]=D;
+		}
+		else newD[i]=D;
+	}
+
+	/* Add new damage input to DamageEnum and NewDamageEnum */
+	this->AddInput(NewDamageEnum,newD,P1DGEnum);
+	if(domaintype==Domain2DhorizontalEnum){
+		this->AddInput(DamageDbarEnum,newD,this->GetElementType());
+	}
+	else{
+		this->AddInput(DamageDEnum,newD,this->GetElementType());
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(newD);
+	delete gauss;
+
+}/*}}}*/
+void       Element::ComputeStrainRate(){/*{{{*/
+
+	int         dim;
+	IssmDouble *xyz_list = NULL;
+	IssmDouble  epsilon[6];
+
+	/*Retrieve all inputs we will be needing: */
+	this->GetVerticesCoordinates(&xyz_list);
+	parameters->FindParam(&dim,DomainDimensionEnum);
+	Input* vx_input=this->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=this->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input=NULL;
+	if(dim==3){vz_input=this->GetInput(VzEnum); _assert_(vz_input);}
+
+	/*Allocate arrays*/
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+	_assert_(NUM_VERTICES<=MAXVERTICES);
+
+	IssmDouble eps_xx[MAXVERTICES];
+	IssmDouble eps_yy[MAXVERTICES];
+	IssmDouble eps_zz[MAXVERTICES];
+	IssmDouble eps_xy[MAXVERTICES];
+	IssmDouble eps_xz[MAXVERTICES];
+	IssmDouble eps_yz[MAXVERTICES];
+	IssmDouble eps_ef[MAXVERTICES];
+
+	/* Start looping on the number of vertices: */
+	Gauss* gauss=this->NewGauss();
+	for (int iv=0;iv<NUM_VERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		/*Compute strain rate viscosity and pressure: */
+		if(dim==2)
+		 this->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+		else
+		 this->StrainRateFS(&epsilon[0],xyz_list,gauss,vx_input,vy_input,vz_input);
+
+		if(dim==2){
+			/* epsilon=[exx,eyy,exy];*/
+			eps_xx[iv]=epsilon[0];
+			eps_yy[iv]=epsilon[1];
+			eps_xy[iv]=epsilon[2];
+			/* eps_eff^2 = 1/2 ( exx^2 + eyy^2 + 2*exy^2 )*/
+			eps_ef[iv] = 1./sqrt(2.)*sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + 2.*epsilon[2]*epsilon[2]);
+		}
+		else{
+			/*epsilon=[exx eyy ezz exy exz eyz]*/
+			eps_xx[iv]=epsilon[0];
+			eps_yy[iv]=epsilon[1];
+			eps_zz[iv]=epsilon[2];
+			eps_xy[iv]=epsilon[3];
+			eps_xz[iv]=epsilon[4];
+			eps_yz[iv]=epsilon[5];
+			/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
+			eps_ef[iv] = sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[3]*epsilon[3] +  epsilon[4]*epsilon[4] + epsilon[5]*epsilon[5] + epsilon[0]*epsilon[1]);
+		}
+	}
+
+	/*Add Stress tensor components into inputs*/
+	this->AddInput(StrainRatexxEnum,&eps_xx[0],P1Enum);
+	this->AddInput(StrainRatexyEnum,&eps_xy[0],P1Enum);
+	this->AddInput(StrainRatexzEnum,&eps_xz[0],P1Enum);
+	this->AddInput(StrainRateyyEnum,&eps_yy[0],P1Enum);
+	this->AddInput(StrainRateyzEnum,&eps_yz[0],P1Enum);
+	this->AddInput(StrainRatezzEnum,&eps_zz[0],P1Enum);
+	this->AddInput(StrainRateeffectiveEnum,&eps_ef[0],P1Enum);
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+}
+/*}}}*/
+void       Element::CoordinateSystemTransform(IssmDouble** ptransform,Node** nodes_list,int numnodes,int* cs_array){/*{{{*/
+
+	int         i,counter;
+	int         numdofs   = 0;
+	IssmDouble  norm;
+	IssmDouble *transform = NULL;
+	IssmDouble  coord_system[3][3];
+
+	/*Some checks in debugging mode*/
+	_assert_(numnodes && nodes_list);
+
+	/*Get total number of dofs*/
+	for(i=0;i<numnodes;i++){
+		switch(cs_array[i]){
+			case PressureEnum: numdofs+=1; break;
+			case XYEnum:       numdofs+=2; break;
+			case XYZEnum:      numdofs+=3; break;
+			default: _error_("Coordinate system " << EnumToStringx(cs_array[i]) << " not supported yet");
+		}
+	}
+
+	/*Allocate and initialize transform matrix*/
+	transform=xNew<IssmDouble>(numdofs*numdofs);
+	for(i=0;i<numdofs*numdofs;i++) transform[i]=0.0;
+
+	/*Create transform matrix for all nodes (x,y for 2d and x,y,z for 3d). It is a block matrix
+	 *for 3 nodes:
+
+	 *     | T1 0  0 |
+	 * Q = | 0  T2 0 |
+	 *     | 0  0  T3|
+	 *
+	 * Where T1 is the transform matrix for node 1. It is a simple copy of the coordinate system
+	 * associated to this node*/
+	counter=0;
+	for(i=0;i<numnodes;i++){
+		nodes_list[i]->GetCoordinateSystem(&coord_system[0][0]);
+		switch(cs_array[i]){
+			case PressureEnum:
+				/*DO NOT change anything*/
+				transform[(numdofs)*(counter) + counter] = 1.;
+				counter+=1;
+				break;
+			case XYEnum:
+				/*We remove the z component, we need to renormalize x and y: x=[x1 x2 0] y=[-x2 x1 0]*/
+				norm = sqrt( coord_system[0][0]*coord_system[0][0] + coord_system[1][0]*coord_system[1][0]); _assert_(norm>1.e-4);
+				transform[(numdofs)*(counter+0) + counter+0] =   coord_system[0][0]/norm;
+				transform[(numdofs)*(counter+0) + counter+1] = - coord_system[1][0]/norm;
+				transform[(numdofs)*(counter+1) + counter+0] =   coord_system[1][0]/norm;
+				transform[(numdofs)*(counter+1) + counter+1] =   coord_system[0][0]/norm;
+				counter+=2;
+				break;
+			case XYZEnum:
+				/*The 3 coordinates are changed (x,y,z)*/
+				transform[(numdofs)*(counter+0) + counter+0] = coord_system[0][0];
+				transform[(numdofs)*(counter+0) + counter+1] = coord_system[0][1];
+				transform[(numdofs)*(counter+0) + counter+2] = coord_system[0][2];
+				transform[(numdofs)*(counter+1) + counter+0] = coord_system[1][0];
+				transform[(numdofs)*(counter+1) + counter+1] = coord_system[1][1];
+				transform[(numdofs)*(counter+1) + counter+2] = coord_system[1][2];
+				transform[(numdofs)*(counter+2) + counter+0] = coord_system[2][0];
+				transform[(numdofs)*(counter+2) + counter+1] = coord_system[2][1];
+				transform[(numdofs)*(counter+2) + counter+2] = coord_system[2][2];
+				counter+=3;
+				break;
+			default:
+				_error_("Coordinate system " << EnumToStringx(cs_array[i]) << " not supported yet");
+		}
+	}
+
+	/*Assign output pointer*/
+	*ptransform=transform;
+}
+/*}}}*/
+void       Element::DeepEcho(void){/*{{{*/
+
+	_printf_(EnumToStringx(this->ObjectEnum())<<" element:\n");
+	_printf_("   id : "<<this->id <<"\n");
+	_printf_("   sid: "<<this->sid<<"\n");
+	_printf_("   lid: "<<this->lid<<"\n");
+	if(vertices){
+		const int NUM_VERTICES = this->GetNumberOfVertices();
+		for(int i=0;i<NUM_VERTICES;i++) vertices[i]->Echo();
+	}
+	else _printf_("vertices = NULL\n");
+
+	if(nodes){
+		int numnodes = this->GetNumberOfNodes();
+		for(int i=0;i<numnodes;i++) nodes[i]->DeepEcho();
+	}
+	else _printf_("nodes = NULL\n");
+
+	if (material) material->DeepEcho();
+	else _printf_("material = NULL\n");
+
+	_printf_("   parameters\n");
+	if (parameters) parameters->DeepEcho();
+	else _printf_("parameters = NULL\n");
+
+	_printf_("   inputs\n");
+	if(inputs) inputs->DeepEcho();
+	else _printf_("inputs=NULL\n");
+
+	return;
+}
+/*}}}*/
+void       Element::DeleteMaterials(void){/*{{{*/
+	delete this->material;
+}/*}}}*/
+void       Element::Delta18oParameterization(void){/*{{{*/
+
+	/*Are we on the base? If not, return*/
+	if(!IsOnBase()) return;
+
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+	const int NUM_VERTICES_MONTHS_PER_YEAR	= NUM_VERTICES * 12;
+
+	int        i;
+	int*        vertexlids=xNew<int>(NUM_VERTICES);
+	IssmDouble* monthlytemperatures=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* monthlyprec=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* TemperaturesPresentday=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* TemperaturesLgm=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* PrecipitationsPresentday=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* tmp=xNew<IssmDouble>(NUM_VERTICES);
+
+	/*Recover parameters*/
+	IssmDouble time,yts,finaltime;
+	this->parameters->FindParam(&time,TimeEnum);
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+	this->parameters->FindParam(&finaltime,TimesteppingFinalTimeEnum);
+	this->GetVerticesLidList(vertexlids);
+	IssmDouble time_yr=floor(time/yts)*yts;
+
+	/*Recover present day temperature and precipitation*/
+	DatasetInput* dinput1=this->GetDatasetInput(SmbTemperaturesPresentdayEnum);   _assert_(dinput1);
+	DatasetInput* dinput2=this->GetDatasetInput(SmbTemperaturesLgmEnum);          _assert_(dinput2);
+	DatasetInput* dinput3=this->GetDatasetInput(SmbPrecipitationsPresentdayEnum); _assert_(dinput3);
+
+	/*loop over vertices: */
+	Gauss* gauss=this->NewGauss();
+	for(int month=0;month<12;month++){
+		for(int iv=0;iv<NUM_VERTICES;iv++){
+			gauss->GaussVertex(iv);
+			dinput1->GetInputValue(&TemperaturesPresentday[iv*12+month],gauss,month);
+			dinput2->GetInputValue(&TemperaturesLgm[iv*12+month],gauss,month);
+			dinput3->GetInputValue(&PrecipitationsPresentday[iv*12+month],gauss,month);
+
+			PrecipitationsPresentday[iv*12+month]=PrecipitationsPresentday[iv*12+month]*yts;
+		}
+	}
+
+	/*Recover delta18o and Delta18oSurface at present day, lgm and at time t*/
+	IssmDouble Delta18oPresent,Delta18oLgm,Delta18oTime;
+	IssmDouble Delta18oSurfacePresent,Delta18oSurfaceLgm,Delta18oSurfaceTime;
+	this->parameters->FindParam(&Delta18oPresent,SmbDelta18oEnum,finaltime);
+	this->parameters->FindParam(&Delta18oLgm,SmbDelta18oEnum,(finaltime-(21000*yts)));
+	this->parameters->FindParam(&Delta18oTime,SmbDelta18oEnum,time);
+	this->parameters->FindParam(&Delta18oSurfacePresent,SmbDelta18oSurfaceEnum,finaltime);
+	this->parameters->FindParam(&Delta18oSurfaceLgm,SmbDelta18oSurfaceEnum,(finaltime-(21000*yts)));
+	this->parameters->FindParam(&Delta18oSurfaceTime,SmbDelta18oSurfaceEnum,time);
+
+	/*Compute the temperature and precipitation*/
+	for(int iv=0;iv<NUM_VERTICES;iv++){
+		ComputeDelta18oTemperaturePrecipitation(Delta18oSurfacePresent, Delta18oSurfaceLgm, Delta18oSurfaceTime,
+					Delta18oPresent, Delta18oLgm, Delta18oTime,
+					&PrecipitationsPresentday[iv*12],
+					&TemperaturesLgm[iv*12], &TemperaturesPresentday[iv*12],
+					&monthlytemperatures[iv*12], &monthlyprec[iv*12]);
+	}
+
+	/*Update inputs*/
+	for (int imonth=0;imonth<12;imonth++) {
+		for(i=0;i<NUM_VERTICES;i++) tmp[i]=monthlytemperatures[i*12+imonth];
+		switch(this->ObjectEnum()){
+			case TriaEnum: this->inputs->SetTriaDatasetInput(SmbMonthlytemperaturesEnum,imonth,P1Enum,NUM_VERTICES,vertexlids,tmp); break;
+			case PentaEnum: this->inputs->SetPentaDatasetInput(SmbMonthlytemperaturesEnum,imonth,P1Enum,NUM_VERTICES,vertexlids,tmp); break;
+			default: _error_("Not implemented yet");
+		}
+		for(i=0;i<NUM_VERTICES;i++) tmp[i]=monthlyprec[i*12+imonth]/yts;
+		switch(this->ObjectEnum()){
+			case TriaEnum: this->inputs->SetTriaDatasetInput(SmbPrecipitationEnum,imonth,P1Enum,NUM_VERTICES,vertexlids,tmp); break;
+			case PentaEnum: this->inputs->SetPentaDatasetInput(SmbPrecipitationEnum,imonth,P1Enum,NUM_VERTICES,vertexlids,tmp); break;
+			default: _error_("Not implemented yet");
+		}
+	}
+
+	switch(this->ObjectEnum()){
+		case TriaEnum: break;
+		case PentaEnum:
+		case TetraEnum:
+         this->DatasetInputExtrude(SmbMonthlytemperaturesEnum,-1);
+         this->DatasetInputExtrude(SmbPrecipitationEnum,-1);
+         break;
+		default: _error_("Not implemented yet");
+	}
+
+	/*clean-up*/
+	delete gauss;
+	xDelete<IssmDouble>(monthlytemperatures);
+	xDelete<IssmDouble>(monthlyprec);
+	xDelete<IssmDouble>(TemperaturesPresentday);
+	xDelete<IssmDouble>(TemperaturesLgm);
+	xDelete<IssmDouble>(PrecipitationsPresentday);
+	xDelete<IssmDouble>(tmp);
+	xDelete<int>(vertexlids);
+
+} /*}}}*/
+void       Element::Delta18opdParameterization(void){/*{{{*/
+	/*Are we on the base? If not, return*/
+	if(!IsOnBase()) return;
+
+	const int NUM_VERTICES 					= this->GetNumberOfVertices();
+	const int NUM_VERTICES_MONTHS_PER_YEAR	= NUM_VERTICES * 12;
+
+	int        	i,offset;
+	int*        vertexlids=xNew<int>(NUM_VERTICES);
+	IssmDouble* monthlytemperatures=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* monthlyprec=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* TemperaturesPresentday=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* PrecipitationsPresentday=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* TemperaturesReconstructed=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* PrecipitationsReconstructed=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* tmp=xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble Delta18oTime;
+	IssmDouble f;
+	IssmDouble time,yts,time_yr,month,time_climt,time_climp,del_clim;
+	this->parameters->FindParam(&time,TimeEnum);
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+	this->parameters->FindParam(&f,SmbFEnum);
+	this->GetVerticesLidList(vertexlids);
+	time_yr=floor(time/yts)*yts;
+	time_climt=ceil(time/yts + 1e-10)*yts;
+	time_climp=ceil(time/yts + 1e-10)*yts;
+
+	/*Get some pdd parameters*/
+	bool isTemperatureScaled,isPrecipScaled;
+	IssmDouble dpermil=this->FindParam(SmbDpermilEnum);
+	this->parameters->FindParam(&isTemperatureScaled,SmbIstemperaturescaledEnum);
+	this->parameters->FindParam(&isPrecipScaled,SmbIsprecipscaledEnum);
+
+	/*Recover present day temperature and precipitation*/
+	DatasetInput *dinput3 = NULL;
+	DatasetInput *dinput4 = NULL;
+	int            offset_t,offset_p,N;
+	if(!isTemperatureScaled){
+		IssmDouble* time_temp_scaled = NULL;
+		parameters->FindParam(&time_temp_scaled,&N,SmbTemperaturesReconstructedYearsEnum);
+		if(!binary_search(&offset_t,time_climt,time_temp_scaled,N)) _error_("time not sorted?");
+		if(offset_t<0) offset_t=0;
+		xDelete<IssmDouble>(time_temp_scaled);
+		dinput3=this->GetDatasetInput(SmbTemperaturesReconstructedEnum); _assert_(dinput3);
+	}
+	if(!isPrecipScaled){
+		IssmDouble* time_precip_scaled = NULL;
+		parameters->FindParam(&time_precip_scaled,&N,SmbPrecipitationsReconstructedYearsEnum);
+		if(!binary_search(&offset_p,time_climt,time_precip_scaled,N)) _error_("time not sorted?");
+		if(offset_p<0) offset_p=0;
+		xDelete<IssmDouble>(time_precip_scaled);
+		dinput4=this->GetDatasetInput(SmbPrecipitationsReconstructedEnum); _assert_(dinput4);
+	}
+
+	/*Get present day temp and precip (monthly)*/
+	DatasetInput *dinput1 = this->GetDatasetInput(SmbTemperaturesPresentdayEnum);   _assert_(dinput1);
+	DatasetInput *dinput2 = this->GetDatasetInput(SmbPrecipitationsPresentdayEnum); _assert_(dinput2);
+
+	/*loop over vertices: */
+	Gauss* gauss=this->NewGauss();
+	for(int month=0;month<12;month++) {
+		for(int iv=0;iv<NUM_VERTICES;iv++) {
+			gauss->GaussVertex(iv);
+			dinput1->GetInputValue(&TemperaturesPresentday[iv*12+month],gauss,month);
+			dinput2->GetInputValue(&PrecipitationsPresentday[iv*12+month],gauss,month);
+			PrecipitationsPresentday[iv*12+month]=PrecipitationsPresentday[iv*12+month]*yts;
+
+			if(!isTemperatureScaled){
+				dinput3->GetInputValue(&TemperaturesReconstructed[iv*12+month],gauss,offset_t*12+month);
+			}
+			if(!isPrecipScaled){
+				dinput4->GetInputValue(&PrecipitationsReconstructed[iv*12+month],gauss,offset_p*12+month);
+				PrecipitationsReconstructed[iv*12+month]=PrecipitationsReconstructed[iv*12+month]*yts;
+			}
+		}
+	}
+
+	/*Recover interpolation parameters at time t*/
+	this->parameters->FindParam(&Delta18oTime,SmbDelta18oEnum,time);
+
+	/*Compute the temperature and precipitation*/
+	for(int iv=0;iv<NUM_VERTICES;iv++){
+		ComputeD18OTemperaturePrecipitationFromPD(Delta18oTime,dpermil,isTemperatureScaled,isPrecipScaled,
+					f,&PrecipitationsPresentday[iv*12], &TemperaturesPresentday[iv*12],
+					&PrecipitationsReconstructed[iv*12], &TemperaturesReconstructed[iv*12],
+					&monthlytemperatures[iv*12], &monthlyprec[iv*12]);
+	}
+
+	/*Update inputs*/
+	for (int imonth=0;imonth<12;imonth++) {
+		for(i=0;i<NUM_VERTICES;i++) tmp[i]=monthlytemperatures[i*12+imonth];
+		switch(this->ObjectEnum()){
+			case TriaEnum:  this->inputs->SetTriaDatasetInput(SmbMonthlytemperaturesEnum,imonth,P1Enum,NUM_VERTICES,vertexlids,tmp); break;
+			case PentaEnum: this->inputs->SetPentaDatasetInput(SmbMonthlytemperaturesEnum,imonth,P1Enum,NUM_VERTICES,vertexlids,tmp); break;
+			default: _error_("Not implemented yet");
+		}
+		for(i=0;i<NUM_VERTICES;i++) tmp[i]=monthlyprec[i*12+imonth]/yts;
+		switch(this->ObjectEnum()){
+			case TriaEnum:  this->inputs->SetTriaDatasetInput(SmbPrecipitationEnum,imonth,P1Enum,NUM_VERTICES,vertexlids,tmp); break;
+			case PentaEnum: this->inputs->SetPentaDatasetInput(SmbPrecipitationEnum,imonth,P1Enum,NUM_VERTICES,vertexlids,tmp); break;
+			default: _error_("Not implemented yet");
+		}
+	}
+
+	switch(this->ObjectEnum()){
+		case TriaEnum: break;
+		case PentaEnum:
+		case TetraEnum:
+         this->DatasetInputExtrude(SmbMonthlytemperaturesEnum,-1);
+         this->DatasetInputExtrude(SmbPrecipitationEnum,-1);
+         break;
+		default: _error_("Not implemented yet");
+	}
+
+	/*clean-up*/
+	delete gauss;
+	xDelete<IssmDouble>(monthlytemperatures);
+	xDelete<IssmDouble>(monthlyprec);
+	xDelete<IssmDouble>(TemperaturesPresentday);
+	xDelete<IssmDouble>(PrecipitationsPresentday);
+	xDelete<IssmDouble>(TemperaturesReconstructed);
+	xDelete<IssmDouble>(PrecipitationsReconstructed);
+	xDelete<IssmDouble>(tmp);
+	xDelete<int>(vertexlids);
+
+} /*}}}*/
+void       Element::SmbGradCompParameterization(void){/*{{{*/
+
+	/*Are we on the base? If not, return*/
+	if(!IsOnBase()) return;
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+
+	IssmDouble accuref, runoffref;  //reference values at given altitude
+	IssmDouble accugrad, runoffgrad; //gradients from reference altitude
+
+	IssmDouble smb[MAXVERTICES];
+	IssmDouble surf[MAXVERTICES];
+	IssmDouble accu[MAXVERTICES];
+	IssmDouble runoff[MAXVERTICES];
+
+	/*Get material parameters :*/
+	IssmDouble rho_water = this->FindParam(MaterialsRhoFreshwaterEnum);
+	IssmDouble rho_ice   = this->FindParam(MaterialsRhoIceEnum);
+
+	/*Recover parameters*/
+	IssmDouble time       = this->FindParam(TimeEnum);
+	IssmDouble accualti   = this->FindParam(SmbAccualtiEnum);
+	IssmDouble runoffalti = this->FindParam(SmbRunoffaltiEnum);
+
+	/*Recover reference values at current time*/
+	parameters->FindParam(&accugrad,SmbAccugradEnum,time);
+	parameters->FindParam(&runoffgrad,SmbRunoffgradEnum,time);
+	parameters->FindParam(&accuref,SmbAccurefEnum,time);
+	parameters->FindParam(&runoffref,SmbRunoffrefEnum,time);
+
+	/*Recover surface elevation*/
+	GetInputListOnVertices(&surf[0],SurfaceEnum);
+
+	/*Compute the temperature and precipitation*/
+	for(int iv=0;iv<NUM_VERTICES;iv++){
+		accu[iv]   = max(0.,(accuref+(surf[iv]-accualti)*accugrad));
+		runoff[iv] = max(0.,(runoffref+(surf[iv]-runoffalti)*runoffgrad));
+		smb[iv]    = (accu[iv]-runoff[iv])*rho_ice/rho_water;
+	}
+
+	switch(this->ObjectEnum()){
+	case TriaEnum:
+		this->AddInput(SmbMassBalanceSubstepEnum,&smb[0],P1Enum);
+		this->AddInput(SmbRunoffSubstepEnum,&runoff[0],P1Enum);
+		break;
+	case PentaEnum:
+		this->AddInput(SmbMassBalanceSubstepEnum,&smb[0],P1Enum);
+		this->AddInput(SmbRunoffSubstepEnum,&runoff[0],P1Enum);
+		this->InputExtrude(SmbMassBalanceSubstepEnum,-1);
+		this->InputExtrude(SmbRunoffSubstepEnum,-1);
+		break;
+	default: _error_("Not implemented yet");
+	}
+}
+/*}}}*/
+IssmDouble Element::Divergence(void){/*{{{*/
+	/*Compute element divergence*/
+
+	/*Intermediaries*/
+	int        dim;
+	IssmDouble Jdet;
+	IssmDouble divergence=0.;
+	IssmDouble dvx[3],dvy[3],dvz[3];
+	IssmDouble *xyz_list = NULL;
+
+	/*Get inputs and parameters*/
+	this->FindParam(&dim,DomainDimensionEnum);
+	Input* vx_input = this->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input = this->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input = NULL;
+	if(dim==3){
+		vz_input = this->GetInput(VzEnum); _assert_(vz_input);
+	}
+	this->GetVerticesCoordinates(&xyz_list);
+
+	Gauss* gauss=this->NewGauss(5);
+	while(gauss->next()){
+
+		this->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get strain rate assuming that epsilon has been allocated*/
+		vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+		if(dim==2){
+			divergence += (dvx[0]+dvy[1])*gauss->weight*Jdet;
+		}
+		else{
+			vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
+			divergence += (dvx[0]+dvy[1]+dvz[2])*gauss->weight*Jdet;
+		}
+
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return divergence;
+}/*}}}*/
+void       Element::dViscositydBFS(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/
+
+	/*Intermediaries*/
+	int materialstype;
+	IssmDouble dmudB;
+	IssmDouble epsilon3d[6];/* epsilon=[exx,eyy,exy,exy,exz,eyz];    */
+	IssmDouble epsilon2d[3];/* epsilon=[exx,eyy,exy];    */
+	IssmDouble eps_eff;
+	IssmDouble eps0=1.e-27;
+
+	if(dim==3){
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
+		this->StrainRateFS(&epsilon3d[0],xyz_list,gauss,vx_input,vy_input,vz_input);
+		eps_eff = sqrt(epsilon3d[0]*epsilon3d[0] + epsilon3d[1]*epsilon3d[1] + epsilon3d[3]*epsilon3d[3] +  epsilon3d[4]*epsilon3d[4] + epsilon3d[5]*epsilon3d[5] + epsilon3d[0]*epsilon3d[1]+eps0*eps0);
+	}
+	else{
+		/* eps_eff^2 = 1/2 ( exx^2 + eyy^2 + 2*exy^2 )*/
+		this->StrainRateSSA(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = 1./sqrt(2.)*sqrt(epsilon2d[0]*epsilon2d[0] + epsilon2d[1]*epsilon2d[1] + 2.*epsilon2d[2]*epsilon2d[2]);
+	}
+	/*Get viscosity*/
+	materialstype=this->material->ObjectEnum();
+	switch(materialstype){
+		case MaticeEnum:
+			material->GetViscosity_B(&dmudB,eps_eff,gauss);
+			break;
+		case MatestarEnum:
+			material->ViscosityBFS(&dmudB,dim,xyz_list,gauss,vx_input,vy_input,vz_input,eps_eff);
+			break;
+		default: _error_("not supported");
+	}
+
+	/*Assign output pointer*/
+	*pdmudB=dmudB;
+
+}
+/*}}}*/
+void       Element::dViscositydBHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+
+	/*Intermediaries*/
+	int materialstype;
+	IssmDouble dmudB;
+	IssmDouble epsilon3d[5];/* epsilon=[exx,eyy,exy,exy,exz,eyz];    */
+	IssmDouble epsilon2d[2];/* epsilon=[exx,eyy,exy];    */
+	IssmDouble eps_eff;
+	IssmDouble eps0=1.e-27;
+
+	if(dim==3){
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
+		this->StrainRateHO(&epsilon3d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = sqrt(epsilon3d[0]*epsilon3d[0] + epsilon3d[1]*epsilon3d[1] + epsilon3d[2]*epsilon3d[2] + epsilon3d[3]*epsilon3d[3] +  epsilon3d[4]*epsilon3d[4] + epsilon3d[0]*epsilon3d[1]+eps0*eps0);
+	}
+	else{
+		/* eps_eff^2 = 1/2 ( exx^2 + eyy^2 + 2*exy^2 )*/
+		this->StrainRateHO2dvertical(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = 1./sqrt(2.)*sqrt(epsilon2d[0]*epsilon2d[0] + 2.*epsilon2d[1]*epsilon2d[1] + eps0*eps0);
+	}
+	/*Get viscosity*/
+	materialstype=this->material->ObjectEnum();
+	switch(materialstype){
+		case MaticeEnum:
+			material->GetViscosity_B(&dmudB,eps_eff,gauss);
+			break;
+		case MatestarEnum:
+			material->ViscosityBHO(&dmudB,dim,xyz_list,gauss,vx_input,vy_input,eps_eff);
+			break;
+		default: _error_("not supported");
+	}
+
+	/*Assign output pointer*/
+	*pdmudB=dmudB;
+
+}
+/*}}}*/
+void       Element::dViscositydBMOLHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input, Input* vxshear_input ,Input* vyshear_input,Input* thickness_input,Input* n_input, IssmDouble zeta){/*{{{*/
+
+	/*Intermediaries*/
+	int materialstype;
+	IssmDouble dmudB;
+	IssmDouble epsilon[5];/* epsilon=[exx,eyy,exy,exy,exz,eyz];    */
+	IssmDouble eps_eff;
+	IssmDouble eps0=1.e-27;
+
+	/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
+   this->StrainRateMOLHO(&epsilon[0],xyz_list,gauss,
+				vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
+   eps_eff=sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[2]*epsilon[2]
+				+ epsilon[3]*epsilon[3] + epsilon[4]*epsilon[4] + epsilon[0]*epsilon[1] + eps0*eps0);
+
+	/*Get viscosity*/
+	materialstype=this->material->ObjectEnum();
+	switch(materialstype){
+		case MaticeEnum:
+			material->GetViscosity_B(&dmudB,eps_eff,gauss);
+			break;
+		default: _error_("not supported");
+	}
+
+	/*Assign output pointer*/
+	*pdmudB=dmudB;
+
+}
+/*}}}*/
+void       Element::dViscositydBSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+
+	/*Intermediaries*/
+	int materialstype;
+	IssmDouble dmudB;
+	IssmDouble epsilon2d[3];/* epsilon=[exx,eyy,exy];    */
+	IssmDouble epsilon1d;   /* epsilon=[exx];    */
+	IssmDouble eps_eff;
+
+	if(dim==2){
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exx*eyy*/
+		this->StrainRateSSA(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = sqrt(epsilon2d[0]*epsilon2d[0] + epsilon2d[1]*epsilon2d[1] + epsilon2d[2]*epsilon2d[2] + epsilon2d[0]*epsilon2d[1]);
+	}
+	else{
+		/* eps_eff^2 = 1/2 exx^2*/
+		this->StrainRateSSA1d(&epsilon1d,xyz_list,gauss,vx_input);
+		eps_eff = sqrt(epsilon1d*epsilon1d/2.);
+	}
+
+	/*Get viscosity*/
+	materialstype=this->material->ObjectEnum();
+	switch(materialstype){
+		case MaticeEnum:
+			material->GetViscosity_B(&dmudB,eps_eff,gauss);
+			break;
+		case MatestarEnum:
+			material->ViscosityBSSA(&dmudB,dim,xyz_list,gauss,vx_input,vy_input,eps_eff);
+			break;
+		default: _error_("not supported");
+	}
+
+	/*Assign output pointer*/
+	*pdmudB=dmudB;
+
+}
+/*}}}*/
+void       Element::dViscositydDSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble dmudB;
+	IssmDouble epsilon2d[3];/* epsilon=[exx,eyy,exy];    */
+	IssmDouble epsilon1d;   /* epsilon=[exx];    */
+	IssmDouble eps_eff;
+
+	if(dim==2){
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exx*eyy*/
+		this->StrainRateSSA(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = sqrt(epsilon2d[0]*epsilon2d[0] + epsilon2d[1]*epsilon2d[1] + epsilon2d[2]*epsilon2d[2] + epsilon2d[0]*epsilon2d[1]);
+	}
+	else{
+		/* eps_eff^2 = 1/2 exx^2*/
+		this->StrainRateSSA1d(&epsilon1d,xyz_list,gauss,vx_input);
+		eps_eff = sqrt(epsilon1d*epsilon1d/2.);
+	}
+
+	/*Get viscosity*/
+	material->GetViscosity_D(&dmudB,eps_eff,gauss);
+
+	/*Assign output pointer*/
+	*pdmudB=dmudB;
+
+}
+/*}}}*/
+void       Element::Echo(void){/*{{{*/
+	_printf_(EnumToStringx(this->ObjectEnum())<<" element:\n");
+	_printf_("   id : "<<this->id <<"\n");
+	_printf_("   sid: "<<this->sid<<"\n");
+	_printf_("   lid: "<<this->lid<<"\n");
+	if(vertices){
+		const int NUM_VERTICES = this->GetNumberOfVertices();
+		for(int i=0;i<NUM_VERTICES;i++) vertices[i]->Echo();
+	}
+	else _printf_("vertices = NULL\n");
+
+	if(nodes){
+		int numnodes = this->GetNumberOfNodes();
+		for(int i=0;i<numnodes;i++) {
+			_printf_("nodes[" << i << "] = " << nodes[i]);
+			nodes[i]->Echo();
+		}
+	}
+	else _printf_("nodes = NULL\n");
+
+	if (material) material->Echo();
+	else _printf_("material = NULL\n");
+
+	_printf_("   parameters\n");
+	if (parameters) parameters->Echo();
+	else _printf_("parameters = NULL\n");
+
+	_printf_("   inputs\n");
+	if (inputs) inputs->Echo();
+	else _printf_("inputs=NULL\n");
+}
+/*}}}*/
+void       Element::FindParam(bool* pvalue,int paramenum){/*{{{*/
+	this->parameters->FindParam(pvalue,paramenum);
+}/*}}}*/
+void       Element::FindParam(int* pvalue,int paramenum){/*{{{*/
+	this->parameters->FindParam(pvalue,paramenum);
+}/*}}}*/
+void       Element::FindParam(IssmDouble* pvalue,int paramenum){/*{{{*/
+	this->parameters->FindParam(pvalue,paramenum);
+}/*}}}*/
+IssmDouble Element::FindParam(int paramenum){/*{{{*/
+	return this->parameters->FindParam(paramenum);
+}/*}}}*/
+void       Element::FindParam(int** pvalues,int* psize,int paramenum){/*{{{*/
+	this->parameters->FindParam(pvalues,psize,paramenum);
+}/*}}}*/
+IssmDouble Element::FloatingArea(IssmDouble* mask, bool scaled){/*{{{*/
+
+	/*Retrieve values of the mask defining the element: */
+	for(int i=0;i<this->GetNumberOfVertices();i++){
+		if(mask[this->vertices[i]->Sid()]<=0.){
+			return 0.;
+		}
+	}
+
+	/*Return: */
+	return this->FloatingArea(scaled);
+}
+/*}}}*/
+void       Element::GetDofList(int** pdoflist,int approximation_enum,int setenum){/*{{{*/
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = this->GetNumberOfNodes();
+
+	/*First, figure out size of doflist and create it: */
+	int numberofdofs=0;
+	for(int i=0;i<numnodes;i++) numberofdofs+=nodes[i]->GetNumberOfDofs(approximation_enum,GsetEnum);
+
+	/*Allocate output*/
+	int* doflist=xNew<int>(numberofdofs);
+
+	/*Populate: */
+	int count=0;
+	for(int i=0;i<numnodes;i++){
+		nodes[i]->GetDofList(&doflist[count],approximation_enum,setenum);
+		count+=nodes[i]->GetNumberOfDofs(approximation_enum,GsetEnum);
+	}
+
+	/*Assign output pointers:*/
+	*pdoflist=doflist;
+}
+/*}}}*/
+void       Element::GetDofListLocal(int** pdoflist,int approximation_enum,int setenum){/*{{{*/
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = this->GetNumberOfNodes();
+
+	/*First, figure out size of doflist and create it: */
+	int numberofdofs=0;
+	for(int i=0;i<numnodes;i++) numberofdofs+=nodes[i]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+
+	/*Allocate output*/
+	int* doflist=xNew<int>(numberofdofs);
+
+	/*Populate: */
+	int count=0;
+	for(int i=0;i<numnodes;i++){
+		_assert_(count<numberofdofs);
+		nodes[i]->GetDofListLocal(doflist+count,approximation_enum,setenum);
+		count+=nodes[i]->GetNumberOfDofs(approximation_enum,GsetEnum);
+	}
+
+	/*Assign output pointers:*/
+	*pdoflist=doflist;
+}
+/*}}}*/
+void       Element::GetDofListPressure(int** pdoflist,int setenum){/*{{{*/
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = this->NumberofNodesVelocity();
+	int pnumnodes = this->NumberofNodesPressure();
+
+	/*First, figure out size of doflist and create it: */
+	int numberofdofs=0;
+	for(int i=vnumnodes;i<vnumnodes+pnumnodes;i++) numberofdofs+=nodes[i]->GetNumberOfDofs(FSApproximationEnum,setenum);
+
+	/*Allocate output*/
+	int* doflist=xNew<int>(numberofdofs);
+
+	/*Populate: */
+	int count=0;
+	for(int i=vnumnodes;i<vnumnodes+pnumnodes;i++){
+		nodes[i]->GetDofList(doflist+count,FSApproximationEnum,setenum);
+		count+=nodes[i]->GetNumberOfDofs(FSApproximationEnum,setenum);
+	}
+
+	/*Assign output pointers:*/
+	*pdoflist=doflist;
+}
+/*}}}*/
+void       Element::GetDofListVelocity(int** pdoflist,int setenum){/*{{{*/
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = this->NumberofNodesVelocity();
+
+	/*First, figure out size of doflist and create it: */
+	int numberofdofs=0;
+	for(int i=0;i<numnodes;i++) numberofdofs+=nodes[i]->GetNumberOfDofs(FSvelocityEnum,setenum);
+
+	/*Allocate output*/
+	int* doflist=xNew<int>(numberofdofs);
+
+	/*Populate: */
+	int count=0;
+	for(int i=0;i<numnodes;i++){
+		nodes[i]->GetDofList(doflist+count,FSvelocityEnum,setenum);
+		count+=nodes[i]->GetNumberOfDofs(FSvelocityEnum,setenum);
+	}
+
+	/*Assign output pointers:*/
+	*pdoflist=doflist;
+}
+/*}}}*/
+void       Element::GetDofListLocalPressure(int** pdoflist,int setenum){/*{{{*/
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = this->NumberofNodesVelocity();
+	int pnumnodes = this->NumberofNodesPressure();
+
+	/*First, figure out size of doflist and create it: */
+	int numberofdofs=0;
+	for(int i=vnumnodes;i<vnumnodes+pnumnodes;i++) numberofdofs+=nodes[i]->GetNumberOfDofs(FSApproximationEnum,setenum);
+
+	/*Allocate output*/
+	int* doflist=xNew<int>(numberofdofs);
+
+	/*Populate: */
+	int count=0;
+	for(int i=vnumnodes;i<vnumnodes+pnumnodes;i++){
+		nodes[i]->GetDofListLocal(doflist+count,FSApproximationEnum,setenum);
+		count+=nodes[i]->GetNumberOfDofs(FSApproximationEnum,setenum);
+	}
+
+	/*Assign output pointers:*/
+	*pdoflist=doflist;
+}
+/*}}}*/
+void       Element::GetDofListLocalVelocity(int** pdoflist,int setenum){/*{{{*/
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = this->NumberofNodesVelocity();
+
+	/*First, figure out size of doflist and create it: */
+	int numberofdofs=0;
+	for(int i=0;i<numnodes;i++) numberofdofs+=nodes[i]->GetNumberOfDofs(FSvelocityEnum,setenum);
+
+	/*Allocate output*/
+	int* doflist=xNew<int>(numberofdofs);
+
+	/*Populate: */
+	int count=0;
+	for(int i=0;i<numnodes;i++){
+		nodes[i]->GetDofListLocal(doflist+count,FSvelocityEnum,setenum);
+		count+=nodes[i]->GetNumberOfDofs(FSvelocityEnum,setenum);
+	}
+
+	/*Assign output pointers:*/
+	*pdoflist=doflist;
+}
+/*}}}*/
+void       Element::GetInputListOnNodes(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue){/*{{{*/
+	Input *input    = this->GetInput(enumtype);
+	this->GetInputListOnNodes(pvalue,input,defaultvalue);
+}
+/*}}}*/
+void       Element::GetInputListOnNodes(IssmDouble* pvalue,int enumtype){/*{{{*/
+
+	Input *input    = this->GetInput(enumtype);
+	if(!input) _error_("Input " << EnumToStringx(enumtype) << " not found in element");
+	this->GetInputListOnNodes(pvalue,input,0.);
+
+}
+/*}}}*/
+void       Element::GetInputListOnNodesVelocity(IssmDouble* pvalue,int enumtype){/*{{{*/
+
+	_assert_(pvalue);
+
+	int     numnodes = this->NumberofNodesVelocity();
+	Input *input    = this->GetInput(enumtype);
+	if(!input) _error_("Input " << EnumToStringx(enumtype) << " not found in element");
+
+	/* Start looping on the number of vertices: */
+	Gauss* gauss=this->NewGauss();
+	for(int iv=0;iv<numnodes;iv++){
+		gauss->GaussNode(this->VelocityInterpolation(),iv);
+		input->GetInputValue(&pvalue[iv],gauss);
+	}
+	delete gauss;
+}
+/*}}}*/
+void       Element::GetInputListOnVertices(IssmDouble* pvalue,int enumtype){/*{{{*/
+
+	/*Recover input*/
+	Input* input2=this->GetInput(enumtype);
+	if(!input2) _error_("input "<<EnumToStringx(enumtype)<<" not found in element");
+	this->GetInputListOnVertices(pvalue,input2,0.);
+}
+/*}}}*/
+void       Element::GetInputListOnVerticesAtTime(IssmDouble* pvalue, int enumtype, IssmDouble time){/*{{{*/
+
+	/*Recover input*/
+	Input* input=this->GetInput(enumtype,time);
+	if (!input) _error_("Input " << EnumToStringx(enumtype) << " not found in element");
+	this->GetInputListOnVertices(pvalue,input,0.);
+}
+/*}}}*/
+void       Element::GetInputListOnVertices(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue){/*{{{*/
+	Input* input=this->GetInput(enumtype);
+	this->GetInputListOnVertices(pvalue,input,defaultvalue);
+}
+/*}}}*/
+void       Element::GetInputLocalMinMaxOnNodes(IssmDouble* min,IssmDouble* max,IssmDouble* ug){/*{{{*/
+
+	/*Get number of nodes for this element*/
+	int numnodes = this->GetNumberOfNodes();
+
+	/*Some checks to avoid segmentation faults*/
+	_assert_(ug);
+	_assert_(numnodes>0);
+	_assert_(nodes);
+
+	/*Get element minimum/maximum*/
+	IssmDouble input_min = ug[nodes[0]->GetDof(0,GsetEnum)];
+	IssmDouble input_max = input_min;
+	for(int i=1;i<numnodes;i++){
+		if(ug[nodes[i]->GetDof(0,GsetEnum)] < input_min) input_min = ug[nodes[i]->GetDof(0,GsetEnum)];
+		if(ug[nodes[i]->GetDof(0,GsetEnum)] > input_max) input_max = ug[nodes[i]->GetDof(0,GsetEnum)];
+	}
+
+	/*Second loop to reassign min and max with local extrema*/
+	for(int i=0;i<numnodes;i++){
+		if(min[nodes[i]->GetDof(0,GsetEnum)]>input_min) min[nodes[i]->GetDof(0,GsetEnum)] = input_min;
+		if(max[nodes[i]->GetDof(0,GsetEnum)]<input_max) max[nodes[i]->GetDof(0,GsetEnum)] = input_max;
+	}
+}
+/*}}}*/
+void       Element::GetInputValue(bool* pvalue,int inputenum){/*{{{*/
+
+	this->inputs->GetInputValue(pvalue,inputenum,this->lid);
+
+}/*}}}*/
+void       Element::GetInputValue(int* pvalue,int inputenum){/*{{{*/
+
+	this->inputs->GetInputValue(pvalue,inputenum,this->lid);
+
+}/*}}}*/
+void       Element::GetInputValue(IssmDouble* pvalue,int inputenum){/*{{{*/
+
+	this->inputs->GetInputValue(pvalue,inputenum,this->lid);
+
+}/*}}}*/
+void       Element::GetInputValue(IssmDouble* pvalue,Gauss* gauss,int inputenum){/*{{{*/
+
+	Input* input=this->GetInput(inputenum);
+	if(!input) _error_("Input " << EnumToStringx(inputenum) << " not found in element");
+	input->GetInputValue(pvalue,gauss);
+
+}/*}}}*/
+Node*      Element::GetNode(int nodeindex){/*{{{*/
+	_assert_(nodeindex>=0);
+	_assert_(nodeindex<this->GetNumberOfNodes(this->element_type));
+	return this->nodes[nodeindex];
+}/*}}}*/
+int        Element::GetNodeIndex(Node* node){/*{{{*/
+
+	_assert_(this->nodes);
+	int numnodes = this->GetNumberOfNodes(this->element_type);
+
+	for(int i=0;i<numnodes;i++){
+		if(node==nodes[i]) return i;
+	}
+	_error_("Node provided not found among element nodes");
+
+}
+/*}}}*/
+void       Element::GetNodesLidList(int* lidlist){/*{{{*/
+
+	_assert_(lidlist);
+	_assert_(nodes);
+	int numnodes = this->GetNumberOfNodes();
+	for(int i=0;i<numnodes;i++){
+		lidlist[i]=nodes[i]->Lid();
+	}
+}
+/*}}}*/
+void       Element::GetNodesSidList(int* sidlist){/*{{{*/
+
+	_assert_(sidlist);
+	_assert_(nodes);
+	int numnodes = this->GetNumberOfNodes();
+	for(int i=0;i<numnodes;i++){
+		sidlist[i]=nodes[i]->Sid();
+	}
+}
+/*}}}*/
+void       Element::GetPhi(IssmDouble* phi, IssmDouble*  epsilon, IssmDouble viscosity){/*{{{*/
+	/*Compute deformational heating from epsilon and viscosity */
+
+	IssmDouble epsilon_matrix[3][3];
+	IssmDouble epsilon_eff;
+	IssmDouble epsilon_sqr[3][3];
+
+	/* Build epsilon matrix */
+	epsilon_matrix[0][0]=epsilon[0];
+	epsilon_matrix[1][0]=epsilon[3];
+	epsilon_matrix[2][0]=epsilon[4];
+	epsilon_matrix[0][1]=epsilon[3];
+	epsilon_matrix[1][1]=epsilon[1];
+	epsilon_matrix[2][1]=epsilon[5];
+	epsilon_matrix[0][2]=epsilon[4];
+	epsilon_matrix[1][2]=epsilon[5];
+	epsilon_matrix[2][2]=epsilon[2];
+
+	/* Effective value of epsilon_matrix */
+	epsilon_sqr[0][0]=epsilon_matrix[0][0]*epsilon_matrix[0][0];
+	epsilon_sqr[1][0]=epsilon_matrix[1][0]*epsilon_matrix[1][0];
+	epsilon_sqr[2][0]=epsilon_matrix[2][0]*epsilon_matrix[2][0];
+	epsilon_sqr[0][1]=epsilon_matrix[0][1]*epsilon_matrix[0][1];
+	epsilon_sqr[1][1]=epsilon_matrix[1][1]*epsilon_matrix[1][1];
+	epsilon_sqr[2][1]=epsilon_matrix[2][1]*epsilon_matrix[2][1];
+	epsilon_sqr[0][2]=epsilon_matrix[0][2]*epsilon_matrix[0][2];
+	epsilon_sqr[1][2]=epsilon_matrix[1][2]*epsilon_matrix[1][2];
+	epsilon_sqr[2][2]=epsilon_matrix[2][2]*epsilon_matrix[2][2];
+	epsilon_eff=1/sqrt(2.)*sqrt(epsilon_sqr[0][0]+epsilon_sqr[0][1]+ epsilon_sqr[0][2]+ epsilon_sqr[1][0]+ epsilon_sqr[1][1]+ epsilon_sqr[1][2]+ epsilon_sqr[2][0]+ epsilon_sqr[2][1]+ epsilon_sqr[2][2]);
+
+	/*Phi = Tr(sigma * eps)
+	 *    = Tr(sigma'* eps)
+	 *    = 2 * eps_eff * sigma'_eff
+	 *    = 4 * mu * eps_eff ^2*/
+	*phi=4.*epsilon_eff*epsilon_eff*viscosity;
+}
+/*}}}*/
+void       Element::GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution, int enum_type){/*{{{*/
+
+	int        *doflist = NULL;
+	IssmDouble  value;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->GetNumberOfNodes();
+
+	/*Fetch dof list and allocate solution vector*/
+	GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values = xNew<IssmDouble>(numnodes);
+
+	/*Get inputs*/
+	Input* enum_input=this->GetInput(enum_type); _assert_(enum_input);
+
+	/*Ok, we have the values, fill in the array: */
+	Gauss* gauss=this->NewGauss();
+	for(int i=0;i<numnodes;i++){
+		gauss->GaussNode(this->element_type,i);
+
+		enum_input->GetInputValue(&value,gauss);
+		values[i]=value;
+	}
+
+	solution->SetValues(numnodes,doflist,values,INS_VAL);
+
+	/*Free resources:*/
+	xDelete<int>(doflist);
+	xDelete<IssmDouble>(values);
+	delete gauss;
+}
+/*}}}*/
+void       Element::GetVectorFromInputs(Vector<IssmDouble>* vector,int input_enum,int type){/*{{{*/
+
+	switch(type){
+		case ElementSIdEnum:{
+         IssmDouble  value;
+			Input* input=this->GetInput(input_enum); _assert_(input);
+			input->GetInputAverage(&value);
+			vector->SetValue(this->sid,value,INS_VAL);
+                          }
+			break;
+		case VertexPIdEnum:{
+         int        doflist[MAXVERTICES];
+         IssmDouble values[MAXVERTICES];
+			const int  NUM_VERTICES = this->GetNumberOfVertices();
+			/*Fill in values*/
+			this->GetVerticesPidList(&doflist[0]);
+			this->GetInputListOnVertices(&values[0],input_enum);
+			vector->SetValues(NUM_VERTICES,doflist,values,INS_VAL);
+                         }
+			break;
+		case VertexSIdEnum:{
+         int        doflist[MAXVERTICES];
+         IssmDouble values[MAXVERTICES];
+			const int  NUM_VERTICES = this->GetNumberOfVertices();
+			/*Fill in values*/
+			this->GetVerticesSidList(doflist);
+			this->GetInputListOnVertices(values,input_enum);
+			vector->SetValues(NUM_VERTICES,doflist,values,INS_VAL);
+                         }
+			break;
+		case NodesEnum:{
+         int         numnodes = this->GetNumberOfNodes();
+         int        *doflist  = xNew<int>(numnodes);
+         IssmDouble *values   = xNew<IssmDouble>(numnodes);
+			/*Fill in values*/
+			this->GetInputListOnNodes(values,input_enum);
+			this->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+			vector->SetValues(numnodes,doflist,values,INS_VAL);
+         xDelete<int>(doflist);
+         xDelete<IssmDouble>(values);
+                     }
+			break;
+		case NodeSIdEnum:{
+         int         numnodes = this->GetNumberOfNodes();
+         int        *doflist  = xNew<int>(numnodes);
+         IssmDouble *values   = xNew<IssmDouble>(numnodes);
+			/*Fill in values*/
+			this->GetNodesSidList(doflist);
+			this->GetInputListOnNodes(values,input_enum);
+			vector->SetValues(numnodes,doflist,values,INS_VAL);
+         xDelete<int>(doflist);
+         xDelete<IssmDouble>(values);
+                       }
+			break;
+		default:
+			_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
+	}
+
+}/*}}}*/
+void       Element::GetVectorFromInputs(Vector<IssmDouble>* vector,int input_enum,int type, IssmDouble time){/*{{{*/
+
+	switch(type){
+		case VertexPIdEnum:{
+			int        doflist[MAXVERTICES];
+			IssmDouble values[MAXVERTICES];
+			const int  NUM_VERTICES = this->GetNumberOfVertices();
+			/*Fill in values*/
+			this->GetVerticesPidList(doflist);
+			this->GetInputListOnVerticesAtTime(values,input_enum,time);
+			vector->SetValues(NUM_VERTICES,doflist,&values[0],INS_VAL);
+								 }
+			break;
+		case VertexSIdEnum:{
+			int        doflist[MAXVERTICES];
+			IssmDouble values[MAXVERTICES];
+			const int  NUM_VERTICES = this->GetNumberOfVertices();
+			/*Fill in values*/
+			this->GetVerticesSidList(doflist);
+			this->GetInputListOnVerticesAtTime(values,input_enum,time);
+			vector->SetValues(NUM_VERTICES,doflist,&values[0],INS_VAL);
+								 }
+			break;
+		default:
+			_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
+	}
+}
+/*}}}*/
+void       Element::GetVerticesLidList(int* lidlist){/*{{{*/
+
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+	for(int i=0;i<NUM_VERTICES;i++) lidlist[i]=vertices[i]->Lid();
+
+}
+/*}}}*/
+void       Element::GetVerticesPidList(int* pidlist){/*{{{*/
+
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+	for(int i=0;i<NUM_VERTICES;i++) pidlist[i]=vertices[i]->Pid();
+
+}
+/*}}}*/
+void       Element::GetVerticesConnectivityList(int* connectivity){/*{{{*/
+
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+	for(int i=0;i<NUM_VERTICES;i++) connectivity[i]=this->vertices[i]->Connectivity();
+}
+/*}}}*/
+void       Element::GetVerticesCoordinates(IssmDouble** pxyz_list){/*{{{*/
+
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+
+	IssmDouble* xyz_list    = xNew<IssmDouble>(NUM_VERTICES*3);
+	::GetVerticesCoordinates(xyz_list,this->vertices,NUM_VERTICES);
+
+	*pxyz_list = xyz_list;
+
+}/*}}}*/
+void       Element::GetVerticesSidList(int* sidlist){/*{{{*/
+
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+	for(int i=0;i<NUM_VERTICES;i++) sidlist[i]=this->vertices[i]->Sid();
+}
+/*}}}*/
+IssmDouble Element::GetXcoord(IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	/*output*/
+	IssmDouble x;
+
+	/*Create list of x*/
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+	IssmDouble x_list[MAXVERTICES];
+	for(int i=0;i<NUM_VERTICES;i++) x_list[i]=xyz_list[i*3+0];
+
+	/*Get value at gauss point*/
+	ValueP1OnGauss(&x,&x_list[0],gauss);
+	return x;
+}/*}}}*/
+IssmDouble Element::GetYcoord(IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	/*output*/
+	IssmDouble y;
+
+	/*Create list of y*/
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+	IssmDouble y_list[MAXVERTICES];
+	for(int i=0;i<NUM_VERTICES;i++) y_list[i]=xyz_list[i*3+1];
+
+	/*Get value at gauss point*/
+	ValueP1OnGauss(&y,&y_list[0],gauss);
+	return y;
+}/*}}}*/
+IssmDouble Element::GetZcoord(IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	/*output*/
+	IssmDouble z;
+
+	/*Create list of z*/
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+	IssmDouble z_list[MAXVERTICES];
+	for(int i=0;i<NUM_VERTICES;i++) z_list[i]=xyz_list[i*3+2];
+
+	/*Get value at gauss point*/
+	ValueP1OnGauss(&z,&z_list[0],gauss);
+	return z;
+}/*}}}*/
+void       Element::GradientIndexing(int* indexing,int control_index){/*{{{*/
+
+	/*Get number of controls*/
+	int num_controls;
+	bool isautodiff;
+	int* N=NULL;
+	int* M=NULL;
+	int* interp=NULL;
+	parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	parameters->FindParam(&N,NULL,ControlInputSizeNEnum);
+	parameters->FindParam(&M,NULL,ControlInputSizeMEnum);
+	parameters->FindParam(&interp,NULL,ControlInputInterpolationEnum);
+
+	/*Get number of vertices*/
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+
+	/*Get starting index of gradient for this control*/
+	int start = 0;
+	for(int n=0;n<control_index;n++) start+=N[n]*M[n];
+
+	/*Create index*/
+	if(interp[control_index]==P1Enum){
+		for(int n=0;n<N[control_index];n++){
+			for(int i=0;i<NUM_VERTICES;i++){
+				indexing[i+n*NUM_VERTICES]= start + n*M[control_index] + this->vertices[i]->Sid();
+			}
+		}
+	}
+	else if(interp[control_index]==P0Enum){
+		for(int n=0;n<N[control_index];n++){
+				indexing[n]= start + n*M[control_index] + this->Sid();
+		}
+	}
+	else{
+		_error_("interpolation not supported");
+	}
+
+	xDelete<int>(M);
+	xDelete<int>(N);
+	xDelete<int>(interp);
+}
+/*}}}*/
+IssmDouble Element::GroundedArea(IssmDouble* mask, bool scaled){/*{{{*/
+
+	/*Retrieve values of the mask defining the element: */
+	for(int i=0;i<this->GetNumberOfVertices();i++){
+		if(mask[this->vertices[i]->Sid()]<=0.){
+			return 0.;
+		}
+	}
+
+	/*Return: */
+	return this->GroundedArea(scaled);
+}
+/*}}}*/
+bool       Element::HasNodeOnBase(){/*{{{*/
+	Input* input=this->GetInput(MeshVertexonbaseEnum); _assert_(input);
+	return (input->GetInputMax()>0.);
+}/*}}}*/
+bool       Element::HasNodeOnSurface(){/*{{{*/
+	Input* input=this->GetInput(MeshVertexonsurfaceEnum); _assert_(input);
+	return (input->GetInputMax()>0.);
+}/*}}}*/
+IssmDouble Element::IceMass(bool scaled){/*{{{*/
+
+	IssmDouble rho_ice;
+
+	if(!IsIceInElement())return 0.; //do not contribute to the volume of the ice!
+
+	/*recover ice density: */
+	rho_ice=FindParam(MaterialsRhoIceEnum);
+
+	return rho_ice*this->IceVolume(scaled);
+}
+/*}}}*/
+IssmDouble Element::IceMass(IssmDouble* mask, bool scaled){/*{{{*/
+
+	/*Retrieve values of the mask defining the element: */
+	for(int i=0;i<this->GetNumberOfVertices();i++){
+		if(mask[this->vertices[i]->Sid()]<=0.){
+			return 0.;
+		}
+	}
+
+	/*Return: */
+	return this->IceMass(scaled);
+}
+/*}}}*/
+IssmDouble Element::IceVolume(IssmDouble* mask, bool scaled){/*{{{*/
+
+	/*Retrieve values of the mask defining the element: */
+	for(int i=0;i<this->GetNumberOfVertices();i++){
+		if(mask[this->vertices[i]->Sid()]<=0.){
+			return 0.;
+		}
+	}
+
+	/*Return: */
+	return this->IceVolume(scaled);
+}
+/*}}}*/
+IssmDouble Element::IceVolumeAboveFloatation(IssmDouble* mask, bool scaled){/*{{{*/
+
+	/*Retrieve values of the mask defining the element: */
+	for(int i=0;i<this->GetNumberOfVertices();i++){
+		if(mask[this->vertices[i]->Sid()]<=0.){
+			return 0.;
+		}
+	}
+
+	/*Return: */
+	return this->IceVolumeAboveFloatation(scaled);
+}
+/*}}}*/
+int        Element::Id(){/*{{{*/
+
+	return this->id;
+
+}
+/*}}}*/
+void       Element::InputCreate(IssmDouble* vector,Inputs* inputs,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int code){/*{{{*/
+
+	/*Branch on type of vector: nodal or elementary: */
+	if(vector_type==1){ //nodal vector
+
+		const int NUM_VERTICES = this->GetNumberOfVertices();
+
+		int        vertexids[MAXVERTICES];
+		int        vertexlids[MAXVERTICES];
+		IssmDouble values[MAXVERTICES];
+
+		/*Recover vertices ids needed to initialize inputs*/
+		_assert_(iomodel->elements);
+		for(int i=0;i<NUM_VERTICES;i++){
+			vertexids[i] =reCast<int>(iomodel->elements[NUM_VERTICES*this->Sid()+i]); //ids for vertices are in the elements array from Matlab
+			vertexlids[i]=iomodel->my_vertices_lids[vertexids[i]-1];
+		}
+
+		/*Are we in transient or static? */
+		if(M==1){
+			if(N!=1) _error_("Size of Input "<<EnumToStringx(vector_enum)<<" "<<M<<"x"<<N<<" not supported");
+			_assert_(N==1);
+			this->SetElementInput(inputs,vector_enum,vector[0]);
+		}
+
+		else if(M==iomodel->numberofvertices){
+			if(N!=1) _error_("Size of Input "<<EnumToStringx(vector_enum)<<" "<<M<<"x"<<N<<" not supported");
+			for(int i=0;i<NUM_VERTICES;i++) values[i]=vector[vertexids[i]-1];
+			this->SetElementInput(inputs,NUM_VERTICES,vertexlids,values,vector_enum);
+		}
+		else if(M==iomodel->numberofvertices+1){
+			/*create transient input: */
+			IssmDouble* times = xNew<IssmDouble>(N);
+			for(int t=0;t<N;t++) times[t] = vector[(M-1)*N+t];
+			inputs->SetTransientInput(vector_enum,times,N);
+			TransientInput* transientinput = inputs->GetTransientInput(vector_enum);
+			for(int t=0;t<N;t++){
+				for(int i=0;i<NUM_VERTICES;i++) values[i]=vector[N*(vertexids[i]-1)+t];
+				switch(this->ObjectEnum()){
+					case TriaEnum:  transientinput->AddTriaTimeInput( t,NUM_VERTICES,vertexlids,&values[0],P1Enum); break;
+					case PentaEnum: transientinput->AddPentaTimeInput(t,NUM_VERTICES,vertexlids,&values[0],P1Enum); break;
+					default: _error_("Not implemented yet");
+				}
+			}
+			xDelete<IssmDouble>(times);
+		}
+		else if(M==iomodel->numberofelements){
+
+			/*This is a Patch!*/
+			IssmDouble* evalues = xNew<IssmDouble>(N);
+			for(int j=0;j<N;j++) evalues[j]=vector[this->Sid()*N+j];
+
+			if (N==this->GetNumberOfNodes(P1Enum)){
+				this->SetElementInput(inputs,NUM_VERTICES,vertexlids,evalues,vector_enum);
+			}
+			else if(N==this->GetNumberOfNodes(P0Enum)){
+				this->SetElementInput(inputs,vector_enum,evalues[0]);
+			}
+			else if(N==this->GetNumberOfNodes(P1xP2Enum)){ _assert_(this->ObjectEnum()==PentaEnum);
+				inputs->SetPentaInput(vector_enum,P1xP2Enum,this->lid,N,evalues);
+			}
+			else if(N==this->GetNumberOfNodes(P1xP3Enum)){ _assert_(this->ObjectEnum()==PentaEnum);
+				inputs->SetPentaInput(vector_enum,P1xP3Enum,this->lid,N,evalues);
+			}
+			else{
+				_error_("Size of Input "<<EnumToStringx(vector_enum)<<" "<<M<<"x"<<N<<" not supported");
+			}
+			xDelete<IssmDouble>(evalues);
+
+		}
+		else{
+			_error_("Size of Input "<<EnumToStringx(vector_enum)<<" "<<M<<"x"<<N<<" not supported");
+		}
+	}
+	else if(vector_type==2){ //element vector
+
+		/*Are we in transient or static? */
+		if(M==1){
+			if(N!=1) _error_("Size of Input "<<EnumToStringx(vector_enum)<<" "<<M<<"x"<<N<<" not supported");
+			this->SetElementInput(inputs,vector_enum,vector[0]);
+		}
+		else if(M==2){
+			/*create transient input: */
+			IssmDouble* times = xNew<IssmDouble>(N);
+			for(int t=0;t<N;t++) times[t] = vector[(M-1)*N+t];
+
+			inputs->SetTransientInput(vector_enum,times,N);
+			TransientInput* transientinput = inputs->GetTransientInput(vector_enum);
+
+			for(int t=0;t<N;t++){
+				IssmDouble value=vector[t]; //values are on the first line, times are on the second line
+				switch(this->ObjectEnum()){
+					case TriaEnum:  transientinput->AddTriaTimeInput( t,1,&(this->lid),&value,P0Enum); break;
+					case PentaEnum: transientinput->AddPentaTimeInput(t,1,&(this->lid),&value,P0Enum); break;
+					default: _error_("Not implemented yet");
+				}
+			}
+			xDelete<IssmDouble>(times);
+		}
+		else if(M==iomodel->numberofelements){
+			if(N!=1) _error_("Size of Input "<<EnumToStringx(vector_enum)<<" "<<M<<"x"<<N<<" not supported");
+			if (code==5){ //boolean
+				this->SetBoolInput(inputs,vector_enum,reCast<bool>(vector[this->Sid()]));
+			}
+			else if (code==6){ //integer
+				this->SetIntInput(inputs,vector_enum,reCast<int>(vector[this->Sid()]));
+			}
+			else if (code==7){ //IssmDouble
+				this->SetElementInput(inputs,vector_enum,vector[this->Sid()]);
+			}
+			else _error_("could not recognize nature of vector from code " << code);
+		}
+		else if(M==iomodel->numberofelements+1){
+			/*create transient input: */
+			IssmDouble* times = xNew<IssmDouble>(N);
+			for(int t=0;t<N;t++) times[t] = vector[(M-1)*N+t];
+			inputs->SetTransientInput(vector_enum,times,N);
+			TransientInput* transientinput = inputs->GetTransientInput(vector_enum);
+			for(int t=0;t<N;t++){
+				IssmDouble value=vector[N*this->Sid()+t];
+				switch(this->ObjectEnum()){
+					case TriaEnum:  transientinput->AddTriaTimeInput( t,1,&(this->lid),&value,P0Enum); break;
+					case PentaEnum: transientinput->AddPentaTimeInput(t,1,&(this->lid),&value,P0Enum); break;
+					default: _error_("Not implemented yet");
+				}
+			}
+			xDelete<IssmDouble>(times);
+		}
+
+		else{
+			_error_("Size of Input "<<EnumToStringx(vector_enum)<<" "<<M<<"x"<<N<<" not supported");
+		}
+	}
+	else if(vector_type==3){ //Double array matrix
+
+		/*For right now we are static */
+		if(M==iomodel->numberofelements){
+			IssmDouble* layers = xNewZeroInit<IssmDouble>(N);
+			for(int t=0;t<N;t++) layers[t] = vector[N*this->Sid()+t];
+			inputs->SetArrayInput(vector_enum,this->lid,layers,N);
+			xDelete<IssmDouble>(layers);
+		}
+		else{
+			_error_("Size of Input "<<EnumToStringx(vector_enum)<<" "<<M<<"x"<<N<<" not supported");
+		}
+	}
+	else{
+		_error_("Cannot add input for vector type " << vector_type << " (not supported)");
+	}
+}
+/*}}}*/
+void       Element::InputCreateP1FromConstant(Inputs* inputs,IoModel* iomodel,IssmDouble value_in,int vector_enum){/*{{{*/
+
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+
+	int        vertexids[MAXVERTICES];
+	int        vertexlids[MAXVERTICES];
+	IssmDouble values[MAXVERTICES];
+
+	/*Recover vertices ids needed to initialize inputs*/
+	_assert_(iomodel->elements);
+	for(int i=0;i<NUM_VERTICES;i++){
+		vertexids[i] =reCast<int>(iomodel->elements[NUM_VERTICES*this->Sid()+i]); //ids for vertices are in the elements array from Matlab
+		vertexlids[i]=iomodel->my_vertices_lids[vertexids[i]-1];
+	}
+
+	for(int i=0;i<NUM_VERTICES;i++) values[i]=value_in;
+	this->SetElementInput(inputs,NUM_VERTICES,vertexlids,values,vector_enum);
+
+}
+/*}}}*/
+void       Element::ControlInputCreate(IssmDouble* vector,IssmDouble* min_vector,IssmDouble* max_vector,Inputs* inputs,IoModel* iomodel,int M,int N,IssmDouble scale,int input_enum,int id){/*{{{*/
+
+	/*Intermediaries*/
+	const int numvertices = this->GetNumberOfVertices();
+	IssmDouble  value,value_min,value_max;
+
+	int         vertexids[MAXVERTICES];
+	int         vertexlids[MAXVERTICES];
+	IssmDouble  values[MAXVERTICES];
+	IssmDouble  values_min[MAXVERTICES];
+	IssmDouble  values_max[MAXVERTICES];
+
+	/*Some sanity checks*/
+	_assert_(vector);
+	_assert_(min_vector);
+	_assert_(max_vector);
+
+	/*Recover vertices ids needed to initialize inputs*/
+	_assert_(iomodel->elements);
+	for(int i=0;i<numvertices;i++){
+		vertexids[i]=reCast<int>(iomodel->elements[numvertices*this->Sid()+i]); //ids for vertices are in the elements array from Matlab
+		vertexlids[i]=iomodel->my_vertices_lids[vertexids[i]-1];
+	}
+
+	/*Are we in transient or static? */
+	if(M==iomodel->numberofvertices && N==1){
+		for(int i=0;i<numvertices;i++){
+			values[i]     = vector[vertexids[i]-1];
+			values_min[i] = scale*min_vector[vertexids[i]-1];
+			values_max[i] = scale*max_vector[vertexids[i]-1];
+		}
+		this->AddControlInput(input_enum,inputs,iomodel,&values[0],&values_min[0],&values_max[0],P1Enum,id);
+	}
+	else if(M==iomodel->numberofelements && N==1){
+		values[0]     = vector[this->Sid()];
+		values_min[0] = scale*min_vector[this->Sid()];
+		values_max[0] = scale*max_vector[this->Sid()];
+		this->AddControlInput(input_enum,inputs,iomodel,&values[0],&values_min[0],&values_max[0],P0Enum,id);
+	}
+	else if(M==iomodel->numberofelements+1 && N>1){
+
+		/*create transient input: */
+		IssmDouble* times = xNew<IssmDouble>(N);
+		for(int t=0;t<N;t++) times[t] = vector[(M-1)*N+t];
+		inputs->SetTransientControlInput(input_enum,id,times,N);
+
+		/*Get input*/
+		ControlInput* control_input = inputs->GetControlInput(input_enum); _assert_(control_input);
+		TransientInput* transientinput_val = control_input->GetTransientInput("value");
+		TransientInput* transientinput_min = control_input->GetTransientInput("lowerbound");
+		TransientInput* transientinput_max = control_input->GetTransientInput("upperbound");
+		for(int t=0;t<N;t++){
+			value     = vector[N*this->Sid()+t];
+			value_min = scale*min_vector[N*this->Sid()+t];
+			value_max = scale*max_vector[N*this->Sid()+t];
+			switch(this->ObjectEnum()){
+				case TriaEnum:
+					transientinput_val->AddTriaTimeInput( t,1,&(this->lid),&value,P0Enum);
+					transientinput_min->AddTriaTimeInput( t,1,&(this->lid),&value_min,P0Enum);
+					transientinput_max->AddTriaTimeInput( t,1,&(this->lid),&value_max,P0Enum);
+					break;
+				case PentaEnum:
+					//transientinput->AddPentaTimeInput(t,1,&(this->lid),&value,P0Enum);
+					_error_("to be implemented");
+					break;
+				default: _error_("Not implemented yet");
+			}
+		}
+		xDelete<IssmDouble>(times);
+	}
+	else if(M==iomodel->numberofvertices+1 && N>1){
+
+		/*create transient input: */
+		IssmDouble* times = xNew<IssmDouble>(N);
+		for(int t=0;t<N;t++) times[t] = vector[(M-1)*N+t];
+		inputs->SetTransientControlInput(input_enum,id,times,N);
+
+		/*Get input*/
+		ControlInput* control_input = inputs->GetControlInput(input_enum); _assert_(control_input);
+		TransientInput* transientinput_val = control_input->GetTransientInput("value");
+		TransientInput* transientinput_min = control_input->GetTransientInput("lowerbound");
+		TransientInput* transientinput_max = control_input->GetTransientInput("upperbound");
+		for(int t=0;t<N;t++){
+			for(int i=0;i<numvertices;i++){
+				values[i]     = vector[N*(vertexids[i]-1)+t];
+				values_min[i] = scale*min_vector[N*(vertexids[i]-1)+t];
+				values_max[i] = scale*max_vector[N*(vertexids[i]-1)+t];
+			}
+			switch(this->ObjectEnum()){
+				case TriaEnum:
+					transientinput_val->AddTriaTimeInput( t,numvertices,vertexlids,&values[0],P1Enum);
+					transientinput_min->AddTriaTimeInput( t,numvertices,vertexlids,&values_min[0],P1Enum);
+					transientinput_max->AddTriaTimeInput( t,numvertices,vertexlids,&values_max[0],P1Enum);
+					break;
+				case PentaEnum:
+					//transientinput->AddPentaTimeInput(t,1,&(this->lid),&value,P0Enum);
+					_error_("to be implemented");
+					break;
+				default: _error_("Not implemented yet");
+			}
+		}
+		xDelete<IssmDouble>(times);
+	}
+	else _error_("not currently supported type of M and N attempted");
+}/*}}}*/
+void       Element::DatasetInputAdd(int enum_type,IssmDouble* vector,Inputs* inputs,IoModel* iomodel,int M,int N,int vector_type,int input_enum,int input_id){/*{{{*/
+	/*enum_type: the name of the DatasetInput (eg Outputdefinition1)
+	 * vector: information being stored (eg observations)
+	 * vector_type: is if by element or by vertex
+	 * input_enum: is the name of the vector being stored
+	 */
+
+	/*Branch on type of vector: nodal or elementary: */
+	if(vector_type==1){ //nodal vector
+
+		const int NUM_VERTICES = this->GetNumberOfVertices();
+
+		int        vertexids[MAXVERTICES];
+		int        vertexlids[MAXVERTICES];
+		IssmDouble values[MAXVERTICES];
+
+		/*Recover vertices ids needed to initialize inputs*/
+		_assert_(iomodel->elements);
+		for(int i=0;i<NUM_VERTICES;i++){
+			vertexids[i] =reCast<int>(iomodel->elements[NUM_VERTICES*this->Sid()+i]); //ids for vertices are in the elements array from Matlab
+			vertexlids[i]=iomodel->my_vertices_lids[vertexids[i]-1];
+		}
+
+		/*Are we in transient or static? */
+		if(M==1){
+			values[0]=vector[0];
+			//this->AddInput(vector_enum,values,P0Enum);
+			_error_("not implemented yet");
+		}
+		else if(M==iomodel->numberofvertices){
+			for(int i=0;i<NUM_VERTICES;i++) values[i]=vector[vertexids[i]-1];
+			switch(this->ObjectEnum()){
+				case TriaEnum:  inputs->SetTriaDatasetInput(enum_type,input_id,P1Enum,NUM_VERTICES,vertexlids,values); break;
+				case PentaEnum: inputs->SetPentaDatasetInput(enum_type,input_id,P1Enum,NUM_VERTICES,vertexlids,values); break;
+				default: _error_("Not implemented yet for "<<this->ObjectEnum());
+			}
+		}
+		else if(M==iomodel->numberofvertices+1){
+			/*create transient input: */
+			IssmDouble* times = xNew<IssmDouble>(N);
+			for(int t=0;t<N;t++) times[t] = vector[(M-1)*N+t];
+			TransientInput* transientinput = inputs->SetDatasetTransientInput(enum_type,input_id,times,N);
+			for(int t=0;t<N;t++){
+				for(int i=0;i<NUM_VERTICES;i++) values[i]=vector[N*(vertexids[i]-1)+t];
+				switch(this->ObjectEnum()){
+					case TriaEnum:  transientinput->AddTriaTimeInput( t,NUM_VERTICES,vertexlids,values,P1Enum); break;
+					case PentaEnum: transientinput->AddPentaTimeInput(t,NUM_VERTICES,vertexlids,values,P1Enum); break;
+					default: _error_("Not implemented yet");
+				}
+			}
+			xDelete<IssmDouble>(times);
+		}
+		else{
+			_error_("not implemented yet (M="<<M<<")");
+		}
+	}
+	else if(vector_type==2){ //element vector
+		_error_("not supported");
+
+		IssmDouble value;
+
+		/*Are we in transient or static? */
+		if(M==iomodel->numberofelements){
+			_error_("not implemented");
+		}
+		else if(M==iomodel->numberofelements+1){
+			_error_("not supported");
+		}
+		else _error_("element vector is either numberofelements or numberofelements+1 long. Field provided (" << EnumToStringx(input_enum) << ") is " << M << " long");
+	}
+	else if(vector_type==3){ //element vector
+		_error_("not supported");
+
+		///*For right now we are static */
+		//if(M==iomodel->numberofelements){
+		//	/*create transient input: */
+		//	IssmDouble* layers = xNewZeroInit<IssmDouble>(N);;
+		//	for(t=0;t<N;t++) layers[t] = vector[N*this->Sid()+t];
+		//	DoubleArrayInput* arrayinput=new DoubleArrayInput(input_enum,layers,N);
+		//	xDelete<IssmDouble>(layers);
+		//}
+		//else _error_("element vector is either numberofelements or numberofelements+1 long. Field provided (" << EnumToStringx(input_enum) << ") is " << M << " long");
+	}
+	else{
+		_error_("Cannot add input for vector type " << vector_type << " (not supported)");
+	}
+}
+/*}}}*/
+void       Element::InputUpdateFromConstant(int constant, int name){/*{{{*/
+
+	/*Check that name is an element input*/
+	if(!IsInputEnum(name)) _error_("Enum "<<EnumToStringx(name)<<" is not in IsInput");
+
+	/*update input*/
+	this->SetIntInput(this->inputs,name,constant);
+}
+/*}}}*/
+void       Element::InputUpdateFromConstant(IssmDouble constant, int name){/*{{{*/
+
+	/*Check that name is an element input*/
+	if(!IsInputEnum(name)) return;
+
+	/*update input*/
+	this->SetElementInput(name,constant);
+}
+/*}}}*/
+void       Element::InputUpdateFromConstant(IssmDouble constant, int name, int type){/*{{{*/
+
+	/*Check that name is an element input*/
+	if(!IsInputEnum(name)) return;
+
+	/*update input*/
+	this->SetElementInput(name,constant,type);
+}
+/*}}}*/
+void       Element::InputUpdateFromConstant(bool constant, int name){/*{{{*/
+
+	/*Check that name is an element input*/
+	if(!IsInputEnum(name)) return;
+
+	/*update input*/
+	this->SetBoolInput(this->inputs,name,constant);
+}
+/*}}}*/
+bool       Element::IsOnSurface(){/*{{{*/
+	return this->isonsurface;
+}/*}}}*/
+bool       Element::IsOnBase(){/*{{{*/
+	return this->isonbase;
+}/*}}}*/
+bool       Element::IsAllFloating(){/*{{{*/
+
+	bool shelf;
+	int  migration_style;
+	parameters->FindParam(&migration_style,GroundinglineMigrationEnum);
+
+	Input* input = this->GetInput(MaskOceanLevelsetEnum); _assert_(input);
+
+	if(migration_style==SubelementMigrationEnum){ //Floating if all nodes are floating
+		if(input->GetInputMax() <= 0.) shelf=true;
+		else shelf=false;
+	}
+	else if(migration_style==ContactEnum){
+		if(input->GetInputMin() < 0.) shelf=true;
+		else shelf=false;
+	}
+	else if(migration_style==NoneEnum || migration_style==AggressiveMigrationEnum || migration_style==SoftMigrationEnum || migration_style==GroundingOnlyEnum){ //Floating if all nodes are floating
+		if(input->GetInputMin() > 0.) shelf=false;
+		else shelf=true;
+	}
+	else _error_("migration_style not implemented yet");
+
+	return shelf;
+}/*}}}*/
+bool       Element::IsAllGrounded(){/*{{{*/
+
+	Input* input=this->GetInput(MaskOceanLevelsetEnum); _assert_(input);
+	if(input->GetInputMin() < 0.){
+		return false;
+	}
+	else{
+		return true;
+	}
+}/*}}}*/
+bool       Element::IsGrounded(){/*{{{*/
+	/*At least ONE node is grounded (partially grounded returns true)*/
+
+	Input* input=this->GetInput(MaskOceanLevelsetEnum); _assert_(input);
+	if(input->GetInputMax() > 0.){
+		return true;
+	}
+	else{
+		return false;
+	}
+}/*}}}*/
+bool       Element::IsIceInElement(){/*{{{*/
+	Input* input=this->GetInput(MaskIceLevelsetEnum); _assert_(input);
+	return (input->GetInputMin()<0.);
+}
+/*}}}*/
+bool       Element::IsIceOnlyInElement(){/*{{{*/
+	Input* input=this->GetInput(MaskIceLevelsetEnum); _assert_(input);
+	return (input->GetInputMax()<=0.);
+}
+/*}}}*/
+bool       Element::IsLandInElement(){/*{{{*/
+	Input* input=this->GetInput(MaskOceanLevelsetEnum); _assert_(input);
+	return (input->GetInputMax()>0.);
+}
+/*}}}*/
+bool       Element::IsOceanInElement(){/*{{{*/
+	Input* input=this->GetInput(MaskOceanLevelsetEnum); _assert_(input);
+	return (input->GetInputMin()<0.);
+}
+/*}}}*/
+bool       Element::IsOceanOnlyInElement(){/*{{{*/
+	Input* input=this->GetInput(MaskOceanLevelsetEnum); _assert_(input);
+	return (input->GetInputMax()<=0.);
+}
+/*}}}*/
+bool       Element::IsAllMinThicknessInElement(){/*{{{*/
+
+	IssmDouble minthickness = this->FindParam(MasstransportMinThicknessEnum);
+
+	Input* input=this->GetInput(ThicknessEnum); _assert_(input);
+	if(input->GetInputMax()<=(minthickness+0.00000001)){
+		return true;
+	}
+	else{
+                return false;
+        }
+}
+/*}}}*/
+void       Element::Ismip6FloatingiceMeltingRate(){/*{{{*/
+
+	if(!this->IsIceInElement() || !this->IsAllFloating() || !this->IsOnBase()) return;
+
+	int         basinid,num_basins,M,N;
+	IssmDouble  tf,gamma0,base,delta_t_basin,mean_tf_basin,absval,meltanomaly;
+	bool        islocal;
+	IssmDouble* delta_t = NULL;
+	IssmDouble* mean_tf = NULL;
+	IssmDouble* depths  = NULL;
+
+	/*Allocate some arrays*/
+	const int numvertices = this->GetNumberOfVertices();
+	IssmDouble basalmeltrate[MAXVERTICES];
+
+	/*Get variables*/
+	IssmDouble rhoi = this->FindParam(MaterialsRhoIceEnum);
+	IssmDouble rhow = this->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble lf   = this->FindParam(MaterialsLatentheatEnum);
+	IssmDouble cp   = this->FindParam(MaterialsMixedLayerCapacityEnum);
+
+	/*Hard code sea water density to be consistent with ISMIP6 documentation*/
+	rhow = 1028.;
+
+	/* Get parameters and inputs */
+	this->GetInputValue(&basinid,BasalforcingsIsmip6BasinIdEnum);
+	this->parameters->FindParam(&num_basins,BasalforcingsIsmip6NumBasinsEnum);
+	this->parameters->FindParam(&gamma0,BasalforcingsIsmip6Gamma0Enum);
+	this->parameters->FindParam(&delta_t,&M,BasalforcingsIsmip6DeltaTEnum);    _assert_(M==num_basins);
+	this->parameters->FindParam(&islocal,BasalforcingsIsmip6IsLocalEnum);
+	if(!islocal) {
+		this->parameters->FindParam(&mean_tf,&N,BasalforcingsIsmip6AverageTfEnum); _assert_(N==num_basins);
+	}
+	Input* tf_input = this->GetInput(BasalforcingsIsmip6TfShelfEnum);              _assert_(tf_input);
+	Input* meltanomaly_input = this->GetInput(BasalforcingsIsmip6MeltAnomalyEnum); _assert_(meltanomaly_input);
+	delta_t_basin = delta_t[basinid];
+	if(!islocal) mean_tf_basin = mean_tf[basinid];
+
+	/*Compute melt rate for Local and Nonlocal parameterizations*/
+	Gauss* gauss=this->NewGauss();
+	for(int i=0;i<numvertices;i++){
+		gauss->GaussVertex(i);
+		tf_input->GetInputValue(&tf,gauss);
+		meltanomaly_input->GetInputValue(&meltanomaly,gauss);
+		if(!islocal) {
+			absval = mean_tf_basin+delta_t_basin;
+			if (absval<0) {absval = -1.*absval;}
+			basalmeltrate[i] = gamma0*pow((rhow*cp)/(rhoi*lf),2)*(tf+delta_t_basin)*absval + meltanomaly;
+		}
+		else{
+			basalmeltrate[i] = gamma0*pow((rhow*cp)/(rhoi*lf),2)*pow(max(tf+delta_t_basin,0.),2) + meltanomaly;
+		}
+	}
+
+	/*Return basal melt rate*/
+	this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,basalmeltrate,P1DGEnum);
+
+	/*Cleanup and return*/
+	delete gauss;
+	xDelete<IssmDouble>(delta_t);
+	xDelete<IssmDouble>(mean_tf);
+	xDelete<IssmDouble>(depths);
+
+}/*}}}*/
+void       Element::LapseRateBasinSMB(int numelevbins, IssmDouble* lapserates, IssmDouble* elevbins,IssmDouble* refelevation){/*{{{*/
+
+	/*Variable declaration*/
+   const int numvertices = this->GetNumberOfVertices();
+   bool isadjustsmb = false;
+	int basinid,bb1,bb2,mindex;
+	IssmDouble ela,refelevation_b,time,dt,fracyear,yts;
+   IssmDouble monthsteps[12]  = {0.,1./12,2./12,3./12,4./12,5./12,6./12,7./12,8./12,9./12,10./12,11./12};
+   IssmDouble* surfacelist  = xNew<IssmDouble>(numvertices);
+   IssmDouble* smblist      = xNew<IssmDouble>(numvertices);
+   /* numelevbins values of lapse rates at current month */
+	IssmDouble* lapserates_b = xNew<IssmDouble>(numelevbins);
+   /* (numelevbins-1) limits between elevation bins at current month (be cautious with indexing) */
+	IssmDouble* elevbins_b   = xNew<IssmDouble>(numelevbins-1);
+
+	/*Find month of current time step*/
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+   this->parameters->FindParam(&time,TimeEnum);
+   this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 
+   fracyear     = time/yts-floor(time/yts);
+   for(int i=1;i<12;i++){
+		if(fracyear>=monthsteps[i-1]) mindex = i-1;
+	}
+   if(fracyear>=monthsteps[11]) mindex = 11;
+
+   /*Retrieve SMB values non-adjusted for SMB lapse rate*/
+   this->GetInputListOnVertices(smblist,SmbMassBalanceEnum);
+	/*Get surface elevation on vertices*/
+	this->GetInputListOnVertices(surfacelist,SurfaceEnum);
+   /*Get basin-specific parameters of the element*/
+   this->GetInputValue(&basinid,SmbBasinsIdEnum);
+   refelevation_b = refelevation[basinid];
+	/*Retrieve bins and laps rates for this basin at this month*/
+	for(int ii=0;ii<(numelevbins-1);ii++) elevbins_b[ii] = elevbins[basinid*(numelevbins-1)*12+mindex*(numelevbins-1)+ii];
+	for(int ii=0;ii<numelevbins;ii++){
+		lapserates_b[ii] = lapserates[basinid*numelevbins*12+mindex*numelevbins+ii];
+		if(lapserates_b[ii]!=0) isadjustsmb=true;
+	}
+	
+	/*Adjust SMB if any lapse rate value is non-zero*/
+	if(isadjustsmb){
+
+		_assert_(dt<yts);
+	   for(int v=0;v<numvertices;v++){
+	      /*Find elevation bin of Reference elevation and of Vertex*/
+			bb1 = 0;
+			bb2 = 0;
+			for(int ii=0;ii<(numelevbins-1);ii++){
+				if(surfacelist[v]>=elevbins_b[ii]) bb1 = ii+1;
+				if(refelevation_b>=elevbins_b[ii]) bb2 = ii+1;
+			}
+
+			/*Vertex and Reference elevation in same elevation bin*/
+			if(bb1==bb2){
+				smblist[v] = smblist[v]+(surfacelist[v]-refelevation_b)*lapserates_b[bb2];
+			}
+			/*Vertex in lower elevation bin than Reference elevation*/
+			if(bb1<bb2){
+				smblist[v] = smblist[v]+(elevbins_b[bb2-1]-refelevation_b)*lapserates_b[bb2];
+				for(int ii=bb2-1;ii>bb1;ii--) smblist[v] = smblist[v]+(elevbins_b[ii-1]-elevbins_b[ii])*lapserates_b[ii];
+				smblist[v] = smblist[v]+(surfacelist[v]-elevbins_b[bb1])*lapserates_b[bb1];
+			}
+			/*Vertex in higher elevation bin than Reference elevation*/
+			if(bb1>bb2){
+				smblist[v] = smblist[v]+(elevbins_b[bb2]-refelevation_b)*lapserates_b[bb2];
+				for(int ii=bb2+1;ii<bb1;ii++) smblist[v] = smblist[v]+(elevbins_b[ii]-elevbins_b[ii-1])*lapserates_b[ii];
+				smblist[v] = smblist[v]+(surfacelist[v]-elevbins_b[bb1-1])*lapserates_b[bb1];
+			}
+		}
+	}
+
+   /*Add input to element*/
+   this->AddInput(SmbMassBalanceEnum,smblist,P1Enum);
+
+   /*Cleanup*/
+   xDelete<IssmDouble>(lapserates_b);
+   xDelete<IssmDouble>(elevbins_b);
+   xDelete<IssmDouble>(surfacelist);
+   xDelete<IssmDouble>(smblist);
+}/*}}}*/
+void       Element::LinearFloatingiceMeltingRate(){/*{{{*/
+
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+
+	IssmDouble deepwaterel,upperwaterel,deepwatermelt,upperwatermelt;
+	IssmDouble base[MAXVERTICES];
+	IssmDouble perturbation[MAXVERTICES];
+	IssmDouble values[MAXVERTICES];
+	IssmDouble time;
+
+	parameters->FindParam(&time,TimeEnum);
+	parameters->FindParam(&deepwaterel,BasalforcingsDeepwaterElevationEnum,time);
+	parameters->FindParam(&deepwatermelt,BasalforcingsDeepwaterMeltingRateEnum,time);
+	parameters->FindParam(&upperwaterel,BasalforcingsUpperwaterElevationEnum,time);
+	parameters->FindParam(&upperwatermelt,BasalforcingsUpperwaterMeltingRateEnum,time);
+	_assert_(upperwaterel>deepwaterel);
+
+	this->GetInputListOnVertices(&base[0],BaseEnum);
+	this->GetInputListOnVertices(&perturbation[0],BasalforcingsPerturbationMeltingRateEnum);
+	for(int i=0;i<NUM_VERTICES;i++){
+		if(base[i]>=upperwaterel){
+			values[i]=upperwatermelt;
+		}
+		else if (base[i]<deepwaterel){
+			values[i]=deepwatermelt;
+		}
+		else{
+			IssmDouble alpha = (base[i]-upperwaterel)/(deepwaterel-upperwaterel);
+			values[i]=deepwatermelt*alpha+(1.-alpha)*upperwatermelt;
+		}
+
+		/*Add perturbation*/
+		values[i] += perturbation[i];
+	}
+
+	this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,values,P1Enum);
+
+}/*}}}*/
+void       Element::SpatialLinearFloatingiceMeltingRate(){/*{{{*/
+
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+
+	IssmDouble alpha;
+	IssmDouble deepwatermelt[MAXVERTICES];
+	IssmDouble deepwaterel[MAXVERTICES];
+	IssmDouble upperwatermelt[MAXVERTICES];
+	IssmDouble upperwaterel[MAXVERTICES];
+	IssmDouble perturbation[MAXVERTICES];
+	IssmDouble base[MAXVERTICES];
+	IssmDouble values[MAXVERTICES];
+
+	this->GetInputListOnVertices(&base[0],BaseEnum);
+	this->GetInputListOnVertices(&deepwatermelt[0],BasalforcingsSpatialDeepwaterMeltingRateEnum);
+	this->GetInputListOnVertices(&deepwaterel[0],BasalforcingsSpatialDeepwaterElevationEnum);
+	this->GetInputListOnVertices(&upperwatermelt[0],BasalforcingsSpatialUpperwaterMeltingRateEnum);
+	this->GetInputListOnVertices(&upperwaterel[0],BasalforcingsSpatialUpperwaterElevationEnum);
+   this->GetInputListOnVertices(&perturbation[0],BasalforcingsPerturbationMeltingRateEnum);
+
+	for(int i=0;i<NUM_VERTICES;i++){
+		if(base[i]>=upperwaterel[i]){
+			values[i]=upperwatermelt[i];
+		}
+		else if (base[i]<deepwaterel[i]){
+			values[i]=deepwatermelt[i];
+		}
+		else{
+			alpha = (base[i]-upperwaterel[i])/(deepwaterel[i]-upperwaterel[i]);
+			values[i]=deepwatermelt[i]*alpha+(1.-alpha)*upperwatermelt[i];
+		}
+		values[i] += perturbation[i];
+	}
+
+	this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,&values[0],P1Enum);
+}/*}}}*/
+void       Element::MantlePlumeGeothermalFlux(){/*{{{*/
+
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+	IssmDouble  mantleconductivity,nusselt,dtbg,plumeradius,topplumedepth,bottomplumedepth,plumex,plumey;
+	IssmDouble  crustthickness,uppercrustthickness,uppercrustheat,lowercrustheat;
+	IssmDouble  crustheat,plumeheat,dt,middleplumedepth,a,e,eprime,A0,lambda,Alambda,dAlambda;
+	IssmDouble  x,y,z,c;
+	IssmDouble  values[MAXVERTICES];
+	IssmDouble *xyz_list = NULL;
+
+	parameters->FindParam(&mantleconductivity,BasalforcingsMantleconductivityEnum);
+	parameters->FindParam(&nusselt,BasalforcingsNusseltEnum);
+	parameters->FindParam(&dtbg,BasalforcingsDtbgEnum);
+	parameters->FindParam(&plumeradius,BasalforcingsPlumeradiusEnum);
+	parameters->FindParam(&topplumedepth,BasalforcingsTopplumedepthEnum);
+	parameters->FindParam(&bottomplumedepth,BasalforcingsBottomplumedepthEnum);
+	parameters->FindParam(&plumex,BasalforcingsPlumexEnum);
+	parameters->FindParam(&plumey,BasalforcingsPlumeyEnum);
+	parameters->FindParam(&crustthickness,BasalforcingsCrustthicknessEnum);
+	parameters->FindParam(&uppercrustthickness,BasalforcingsUppercrustthicknessEnum);
+	parameters->FindParam(&uppercrustheat,BasalforcingsUppercrustheatEnum);
+	parameters->FindParam(&lowercrustheat,BasalforcingsLowercrustheatEnum);
+
+	this->GetVerticesCoordinates(&xyz_list);
+	c=plumeradius;
+	a=(bottomplumedepth-topplumedepth)/2.;
+	e=pow(a*a-c*c,1./2.)/a;
+	A0=(1-pow(e,2.))/pow(e,3.)*(1./2.*log((1+e)/(1-e))-e);
+	for(int i=0;i<NUM_VERTICES;i++){
+		y=xyz_list[i*3+0]-plumex;
+		z=xyz_list[i*3+1]-plumey;
+		x=-(a+topplumedepth+crustthickness);
+		lambda=(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2)))))/2;
+		dAlambda=(-8*a*pow(c,2)*x*(-2*pow(a,2)+2*pow(c,2)+sqrt(2)*sqrt((a-c)*(a+c))*sqrt(pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2))))))*(pow(a,4)*(pow(y,2)+pow(z,2))+pow(c,4)*(pow(y,2)+pow(z,2))+pow(pow(x,2)+pow(y,2)+pow(z,2),2)*(pow(x,2)+pow(y,2)+pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2)))))+pow(c,2)*(pow(x,4)-pow(x,2)*(pow(y,2)+pow(z,2))-(pow(y,2)+pow(z,2))*(2*pow(y,2)+2*pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2))))))+pow(a,2)*(-pow(x,4)+pow(x,2)*(pow(y,2)+pow(z,2))+(pow(y,2)+pow(z,2))*(-2*pow(c,2)+2*(pow(y,2)+pow(z,2))+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2))))))))/(sqrt((a-c)*(a+c))*sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2))))*pow(pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2)))),3.5)*pow(-(sqrt(2)*sqrt((a-c)*(a+c)))+sqrt(pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2))))),2)*(sqrt(2)*sqrt((a-c)*(a+c))+sqrt(pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2)))))));
+		eprime=pow((a*a-plumeradius*plumeradius)/(a*a+lambda),1./2.);
+		Alambda=(1.-e*e)/(e*e*e)*(1./2.*log((1.+eprime)/(1.-eprime))-eprime);
+		dt=dtbg-(nusselt-1.)/(1.+A0*(nusselt-1.))*(Alambda*dtbg+x*dtbg*dAlambda);
+		plumeheat=mantleconductivity*dt;
+		crustheat=uppercrustheat*uppercrustthickness+lowercrustheat*(crustthickness-uppercrustthickness);
+		values[i]=crustheat+plumeheat;
+	}
+
+	this->AddInput(BasalforcingsGeothermalfluxEnum,&values[0],P1Enum);
+	xDelete<IssmDouble>(xyz_list);
+
+}/*}}}*/
+void       Element::MarshallElement2(MarshallHandle* marshallhandle,int numanalyses){/*{{{*/
+
+	_assert_(this);
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD){
+		this->nodes = NULL;
+	}
+
+	int object_enum = ElementEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->id);
+	marshallhandle->call(this->sid);
+	marshallhandle->call(this->lid);
+	marshallhandle->call(this->element_type);
+	marshallhandle->call(this->element_type_list,numanalyses);
+}
+/*}}}*/
+void       Element::MigrateGroundingLine(IssmDouble* phi_ungrounding){/*{{{*/
+
+	const int  NUM_VERTICES = this->GetNumberOfVertices();
+	int        migration_style;
+	IssmDouble bed_hydro,yts;
+	IssmDouble melting[MAXVERTICES];
+	IssmDouble phi[MAXVERTICES];
+	IssmDouble h[MAXVERTICES];
+	IssmDouble s[MAXVERTICES];
+	IssmDouble b[MAXVERTICES];
+	IssmDouble r[MAXVERTICES];
+	IssmDouble sl[MAXVERTICES];
+
+	/*Recover info at the vertices: */
+	parameters->FindParam(&migration_style,GroundinglineMigrationEnum);
+	parameters->FindParam(&yts,ConstantsYtsEnum);
+	GetInputListOnVertices(&h[0],ThicknessEnum);
+	GetInputListOnVertices(&s[0],SurfaceEnum);
+	GetInputListOnVertices(&b[0],BaseEnum);
+	GetInputListOnVertices(&r[0],BedEnum);
+	GetInputListOnVertices(&sl[0],SealevelEnum);
+	GetInputListOnVertices(&phi[0],MaskOceanLevelsetEnum);
+	IssmDouble rho_water   = FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble rho_ice     = FindParam(MaterialsRhoIceEnum);
+	IssmDouble density     = rho_ice/rho_water;
+
+	/*go through vertices, and update inputs, considering them to be TriaVertex type: */
+	for(int i=0;i<NUM_VERTICES;i++){
+		/* Contact FS*/
+		if(migration_style == ContactEnum){
+			phi[i]=phi_ungrounding[vertices[i]->Pid()];
+			if(phi[i]>=0.) b[i]=r[i];
+		}
+		else if(migration_style == GroundingOnlyEnum && b[i]<r[i]){
+			/*Ice shelf: if bed below bathymetry, impose it at the bathymetry and update surface, elso do nothing */
+			b[i]=r[i];
+		}
+		else if(phi[i]<=0.){
+			if(b[i]<=r[i]){
+				b[i]        = r[i];
+				s[i]        = b[i]+h[i];
+			}
+		}
+		/*Ice sheet: if hydrostatic bed above bathymetry, ice sheet starts to unground, elso do nothing */
+		/*Change only if AggressiveMigration or if the ice sheet is in contact with the ocean*/
+		else{ // phi>0
+			bed_hydro=-density*h[i]+sl[i];
+			if (bed_hydro>r[i]){
+				/*Unground only if the element is connected to the ice shelf*/
+				if(migration_style==AggressiveMigrationEnum || migration_style==SubelementMigrationEnum){
+					s[i] = (1.-density)*h[i]+sl[i];
+					b[i] = -density*h[i]+sl[i];
+				}
+				else if(migration_style==SoftMigrationEnum && phi_ungrounding[vertices[i]->Pid()]<0.){
+					s[i] = (1.-density)*h[i]+sl[i];
+					b[i] = -density*h[i]+sl[i];
+				}
+				else{
+					if(migration_style!=SoftMigrationEnum && migration_style!=ContactEnum && migration_style!=GroundingOnlyEnum) _error_("Error: migration should be Aggressive, Soft, Subelement, Contact or GroundingOnly");
+				}
+			}
+		}
+	}
+
+	/*Recalculate phi*/
+	for(int i=0;i<NUM_VERTICES;i++){
+		if(migration_style==SoftMigrationEnum){
+			bed_hydro=-density*h[i]+sl[i];
+			if(phi[i]<0. || bed_hydro<=r[i] || phi_ungrounding[vertices[i]->Pid()]<0.){
+				phi[i]=h[i]+(r[i]-sl[i])/density;
+			}
+		}
+		else if(migration_style!=ContactEnum){
+			phi[i]=h[i]+(r[i]-sl[i])/density;
+		}
+		else{
+			/*do nothing*/
+		}
+	}
+	this->AddInput(MaskOceanLevelsetEnum,&phi[0],P1Enum);
+
+	/*Update inputs*/
+	this->AddInput(SurfaceEnum,&s[0],P1Enum);
+	this->AddInput(BaseEnum,&b[0],P1Enum);
+
+}/*}}}*/
+void       Element::MismipFloatingiceMeltingRate(){/*{{{*/
+
+	IssmDouble thresholdthickness,upperdepthmelt;
+	IssmDouble base[MAXVERTICES];
+	IssmDouble bed[MAXVERTICES];
+	IssmDouble meltratefactor[MAXVERTICES];
+	IssmDouble values[MAXVERTICES];
+
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+
+	parameters->FindParam(&thresholdthickness,BasalforcingsThresholdThicknessEnum);
+	parameters->FindParam(&upperdepthmelt,BasalforcingsUpperdepthMeltEnum);
+	this->GetInputListOnVertices(base,BaseEnum);
+	this->GetInputListOnVertices(bed,BedEnum);
+	this->GetInputListOnVertices(meltratefactor,BasalforcingsMeltrateFactorEnum);
+	for(int i=0;i<NUM_VERTICES;i++){
+		if(base[i]>upperdepthmelt){
+			values[i]=0;
+		}
+		else{
+			values[i]=meltratefactor[i]*tanh((base[i]-bed[i])/thresholdthickness)*(upperdepthmelt-base[i]);
+		}
+	}
+
+	this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,values,P1Enum);
+
+}/*}}}*/
+void       Element::MonthlyFactorBasin(IssmDouble* monthlyfac,int enum_type){/*{{{*/
+	
+	/*Variable declaration*/
+	bool ratevariable;
+   const int numvertices = this->GetNumberOfVertices();
+	int basinid,mindex,mindexnext,basinenum_type,varenum_type,indperiod;
+   IssmDouble time,dt,fracyear,fracyearnext,fracmonth,fracmonthnext,yts; 
+   IssmDouble monthsteps[12]  = {0.,1./12,2./12,3./12,4./12,5./12,6./12,7./12,8./12,9./12,10./12,11./12};
+   IssmDouble* monthlyfac_b   = xNew<IssmDouble>(12);
+   IssmDouble* monthlyrate_b  = xNew<IssmDouble>(12);
+	IssmDouble* fracdtinmonth  = xNew<IssmDouble>(12);
+	IssmDouble* rateinmonth    = xNew<IssmDouble>(numvertices*12);
+	IssmDouble* varlistinput   = xNew<IssmDouble>(numvertices);
+	IssmDouble* varlist        = xNewZeroInit<IssmDouble>(numvertices);
+
+	/*Get field-specific enums*/
+   switch(enum_type){
+      case(FrontalForcingsSubglacialDischargearmaEnum):
+         basinenum_type = FrontalForcingsBasinIdEnum;
+         varenum_type   = FrontalForcingsSubglacialDischargeEnum;
+         ratevariable   = true;
+			break;
+		case(HydrologyarmapwEnum):
+         basinenum_type = HydrologyBasinsIdEnum;
+         varenum_type   = FrictionWaterPressureEnum;
+         ratevariable   = false;
+			break;
+	}
+	
+	/*Evaluate the month index now and at (now-timestepjump)*/
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+	this->parameters->FindParam(&time,TimeEnum);
+   this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); _assert_(dt<yts);
+	fracyear     = time/yts-floor(time/yts);
+	fracyearnext = (time+dt)/yts-floor((time+dt)/yts);
+	for(int i=1;i<12;i++){
+		if(fracyear>=monthsteps[i-1])     mindex     = i-1;
+		if(fracyearnext>=monthsteps[i-1]) mindexnext = i-1;
+	}
+	if(fracyear>=monthsteps[11])         mindex     = 11;
+	if(fracyearnext>=monthsteps[11])     mindexnext = 11;
+
+	/*Calculate fraction of the time step spent in each month*/
+	for(int i=0;i<12;i++){
+		if(mindex<i && mindexnext>i)                            fracdtinmonth[i] = 1.0/dt*yts/12.0;
+		else if(mindex<i && mindexnext<i && mindexnext<mindex)  fracdtinmonth[i] = 1.0/dt*yts/12.0;
+		else if(mindex>i && mindexnext<mindex && mindexnext>i)  fracdtinmonth[i] = 1.0/dt*yts/12.0;
+		else if(mindex>i && mindexnext<mindex && mindexnext==i) fracdtinmonth[i] = 1.0/dt*yts*(fracyearnext-monthsteps[i]);
+		else if(mindex==i && mindexnext==i)                     fracdtinmonth[i] = 1.0/dt*yts*(fracyearnext-fracyear); 
+		else if(mindex==i && mindexnext!=mindex)                fracdtinmonth[i] = 1.0/dt*yts*(1.0/12-(fracyear-monthsteps[i]));
+		else if(mindexnext==i && mindex!=mindexnext)            fracdtinmonth[i] = 1.0/dt*yts*(fracyearnext-monthsteps[i]);
+		else	                                                  fracdtinmonth[i] = 0.0;
+	}
+
+	/*Get basin-specific parameters of the element*/
+   this->GetInputValue(&basinid,basinenum_type);
+	for(int i=0;i<12;i++) monthlyfac_b[i]   = monthlyfac[basinid*12+i];
+
+	/*Retrieve input*/
+	this->GetInputListOnVertices(varlistinput,varenum_type);
+
+	/*Calculate monthly rate for each month and weight-average it for application over dt*/
+	for(int v=0;v<numvertices;v++){
+		for(int i=0;i<12;i++){
+			if(ratevariable){
+				rateinmonth[v*12+i] = varlistinput[v]*monthlyfac_b[i]*12;
+				varlist[v]          = varlist[v]+fracdtinmonth[i]*rateinmonth[v*12+i];
+			}
+			else varlist[v]       = varlist[v]+fracdtinmonth[i]*monthlyfac_b[i]*varlistinput[v];
+		}
+	}
+	/*Update input*/
+   this->AddInput(varenum_type,varlist,P1DGEnum);
+
+	/*Clean-up*/
+	xDelete<IssmDouble>(fracdtinmonth);
+	xDelete<IssmDouble>(rateinmonth);
+	xDelete<IssmDouble>(monthlyfac_b);
+	xDelete<IssmDouble>(monthlyrate_b);
+	xDelete<IssmDouble>(varlist);
+	xDelete<IssmDouble>(varlistinput);
+}/*}}}*/
+void       Element::MonthlyPiecewiseLinearEffectBasin(int nummonthbreaks,IssmDouble* monthlyintercepts,IssmDouble* monthlytrends,IssmDouble* monthlydatebreaks,int enum_type){/*{{{*/
+	
+	/*Variable declaration*/
+   const int numvertices = this->GetNumberOfVertices();
+	int basinid,mindex,basinenum_type,varenum_type,indperiod;
+	int numperiods = nummonthbreaks+1;
+   IssmDouble time,fracyear,yts; 
+   IssmDouble monthsteps[12] = {0.,1./12,2./12,3./12,4./12,5./12,6./12,7./12,8./12,9./12,10./12,11./12};
+   IssmDouble* datebreaks_b  = xNew<IssmDouble>(nummonthbreaks);
+	IssmDouble* intercepts_b  = xNew<IssmDouble>(numperiods*12);
+	IssmDouble* trends_b      = xNew<IssmDouble>(numperiods*12);
+	IssmDouble* varlist       = xNew<IssmDouble>(numvertices);
+
+	/*Get field-specific enums*/
+   switch(enum_type){
+      case(FrontalForcingsRignotarmaEnum):
+         basinenum_type = FrontalForcingsBasinIdEnum;
+         varenum_type   = ThermalForcingEnum;
+         break;
+	}
+	
+	/*Evaluate the month index*/
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+	this->parameters->FindParam(&time,TimeEnum);
+	fracyear = time/yts-floor(time/yts);
+	for(int i=1;i<12;i++){
+		if(fracyear>=monthsteps[i-1]) mindex = i-1;
+	}
+	if(fracyear>=monthsteps[11])     mindex = 11;
+
+	/*Get basin-specific parameters of the element*/
+   this->GetInputValue(&basinid,basinenum_type);
+	if(nummonthbreaks>0){
+      for(int i=0;i<nummonthbreaks;i++) datebreaks_b[i] = monthlydatebreaks[basinid*nummonthbreaks+i];
+   }
+	for(int i=0;i<numperiods;i++){
+		intercepts_b[i]  = monthlyintercepts[basinid*12*numperiods+mindex+12*i];
+		trends_b[i]      = monthlytrends[basinid*12*numperiods+mindex+12*i];
+	}
+
+	/*Compute piecewise-linear function*/
+	IssmDouble telapsed_break,piecewiselin;
+	if(nummonthbreaks>0){
+		/*Find index of time compared to the breakpoints*/
+		indperiod = 0;
+		for(int i=0;i<nummonthbreaks;i++){
+			if(time>datebreaks_b[i]) indperiod = i+1;
+		}
+		/*Compute intercept+trend terms with parameters of indperiod*/
+      if(indperiod==0) telapsed_break = time;
+      else             telapsed_break = time-datebreaks_b[indperiod-1];
+      piecewiselin = intercepts_b[indperiod]+trends_b[indperiod]*telapsed_break;
+	}
+   else piecewiselin = intercepts_b[indperiod]+trends_b[indperiod]*time;
+
+	/*Retrieve values non-adjusted for monthly effects*/
+   this->GetInputListOnVertices(varlist,varenum_type);
+
+	/*Adjust values using monthly effects*/
+	for(int v=0;v<numvertices;v++) varlist[v] = varlist[v]+piecewiselin;
+
+	/*Add input to element*/
+   this->AddInput(varenum_type,varlist,P1Enum);
+
+	/*Clean-up*/
+   xDelete<IssmDouble>(datebreaks_b);
+   xDelete<IssmDouble>(intercepts_b);
+   xDelete<IssmDouble>(trends_b);
+	xDelete<IssmDouble>(varlist);
+}
+/*}}}*/
+void       Element::BeckmannGoosseFloatingiceMeltingRate(){/*{{{*/
+
+	bool isthermalforcing;       
+	int numvertices                 = this->GetNumberOfVertices();
+	IssmDouble T_fr,T_forcing,ocean_heat_flux;
+	/*Material properties*/
+	IssmDouble rho_water            = this->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble rho_ice              = this->FindParam(MaterialsRhoIceEnum);
+	IssmDouble latentheat           = this->FindParam(MaterialsLatentheatEnum);
+	IssmDouble mixed_layer_capacity = this->FindParam(MaterialsMixedLayerCapacityEnum);
+	IssmDouble thermal_exchange_vel = this->FindParam(MaterialsThermalExchangeVelocityEnum);
+
+	IssmDouble base[MAXVERTICES];
+	IssmDouble values[MAXVERTICES];
+	IssmDouble oceansalinity [MAXVERTICES];
+	IssmDouble oceantemp[MAXVERTICES];
+	IssmDouble oceanthermalforcing[MAXVERTICES];
+	IssmDouble meltratefactor[MAXVERTICES];
+
+	/*Determine if we use temperature-and-salinity or thermal forcing*/
+	this->parameters->FindParam(&isthermalforcing,BasalforcingsIsThermalForcingEnum);
+	/*Retrieve Inputs*/
+	this->GetInputListOnVertices(base,BaseEnum);
+	this->GetInputListOnVertices(meltratefactor,BasalforcingsMeltrateFactorEnum);
+	if(isthermalforcing==false){
+		this->GetInputListOnVertices(oceansalinity,BasalforcingsOceanSalinityEnum);
+		this->GetInputListOnVertices(oceantemp,BasalforcingsOceanTempEnum);
+	}
+	else{
+		this->GetInputListOnVertices(oceanthermalforcing,ThermalForcingEnum);
+	}
+
+	Gauss* gauss=this->NewGauss();
+	for(int i=0;i<numvertices;i++){
+		/*Case of temperature-and-salinity inputs*/
+		if(isthermalforcing==false){
+			T_fr       = (0.0939-0.057*oceansalinity[i]+7.64e-4*base[i]); //freezing point [degC]
+			T_forcing  = oceantemp[i]-T_fr; //thermal forcing [K]
+		}
+		/*Case of thermal forcing input*/
+		else{
+			T_forcing  = oceanthermalforcing[i]; 
+		}
+		/*Compute heat flux from (Beckmann and Goosse, 2003) (>0 means heat flux from ocean to ice)*/
+		ocean_heat_flux = meltratefactor[i]*rho_water*mixed_layer_capacity*thermal_exchange_vel*T_forcing; // ocean-to-ice heat flux [W/m^2]
+		/*Save melt values [m/s]*/
+		values[i]       = ocean_heat_flux/(latentheat*rho_ice);
+	}
+	this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,values,P1Enum);
+	delete gauss;
+}/*}}}*/
+void       Element::MungsmtpParameterization(void){/*{{{*/
+	/*Are we on the base? If not, return*/
+	if(!IsOnBase()) return;
+
+	const int NUM_VERTICES 					= this->GetNumberOfVertices();
+	const int NUM_VERTICES_MONTHS_PER_YEAR 	= NUM_VERTICES * 12;
+
+	int i;
+	int*        vertexlids=xNew<int>(NUM_VERTICES);
+	IssmDouble* monthlytemperatures=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* monthlyprec=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* TemperaturesPresentday=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* TemperaturesLgm=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* PrecipitationsPresentday=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* PrecipitationsLgm=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* tmp=xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble TdiffTime,PfacTime;
+
+	/*Recover parameters*/
+	IssmDouble time,yts,time_yr;
+	this->parameters->FindParam(&time,TimeEnum);
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+	this->GetVerticesLidList(vertexlids);
+	time_yr=floor(time/yts)*yts;
+
+	/*Recover present day temperature and precipitation*/
+	DatasetInput* dinput1=this->GetDatasetInput(SmbTemperaturesPresentdayEnum);   _assert_(dinput1);
+	DatasetInput* dinput2=this->GetDatasetInput(SmbTemperaturesLgmEnum);          _assert_(dinput2);
+	DatasetInput* dinput3=this->GetDatasetInput(SmbPrecipitationsPresentdayEnum); _assert_(dinput3);
+	DatasetInput* dinput4=this->GetDatasetInput(SmbPrecipitationsLgmEnum);        _assert_(dinput4);
+
+	/*loop over vertices: */
+	Gauss* gauss=this->NewGauss();
+	for(int month=0;month<12;month++) {
+		for(int iv=0;iv<NUM_VERTICES;iv++) {
+			gauss->GaussVertex(iv);
+			dinput1->GetInputValue(&TemperaturesPresentday[iv*12+month],gauss,month);
+			dinput2->GetInputValue(&TemperaturesLgm[iv*12+month],gauss,month);
+			dinput3->GetInputValue(&PrecipitationsPresentday[iv*12+month],gauss,month);
+			dinput4->GetInputValue(&PrecipitationsLgm[iv*12+month],gauss,month);
+
+			PrecipitationsPresentday[iv*12+month]=PrecipitationsPresentday[iv*12+month]*yts;
+			PrecipitationsLgm[iv*12+month]=PrecipitationsLgm[iv*12+month]*yts;
+		}
+	}
+
+	/*Recover interpolation parameters at time t*/
+	this->parameters->FindParam(&TdiffTime,SmbTdiffEnum,time);
+	this->parameters->FindParam(&PfacTime,SmbPfacEnum,time);
+
+	/*Compute the temperature and precipitation*/
+	for(int iv=0;iv<NUM_VERTICES;iv++){
+		ComputeMungsmTemperaturePrecipitation(TdiffTime,PfacTime,
+					&PrecipitationsLgm[iv*12],&PrecipitationsPresentday[iv*12],
+					&TemperaturesLgm[iv*12], &TemperaturesPresentday[iv*12],
+					&monthlytemperatures[iv*12], &monthlyprec[iv*12]);
+	}
+
+	/*Update inputs*/
+	for (int imonth=0;imonth<12;imonth++) {
+		for(i=0;i<NUM_VERTICES;i++) tmp[i]=monthlytemperatures[i*12+imonth];
+		switch(this->ObjectEnum()){
+			case TriaEnum:  this->inputs->SetTriaDatasetInput(SmbMonthlytemperaturesEnum,imonth,P1Enum,NUM_VERTICES,vertexlids,tmp); break;
+			case PentaEnum: this->inputs->SetPentaDatasetInput(SmbMonthlytemperaturesEnum,imonth,P1Enum,NUM_VERTICES,vertexlids,tmp); break;
+			default: _error_("Not implemented yet");
+		}
+		for(i=0;i<NUM_VERTICES;i++) tmp[i]=monthlyprec[i*12+imonth]/yts;
+		switch(this->ObjectEnum()){
+			case TriaEnum:  this->inputs->SetTriaDatasetInput(SmbPrecipitationEnum,imonth,P1Enum,NUM_VERTICES,vertexlids,tmp); break;
+			case PentaEnum: this->inputs->SetPentaDatasetInput(SmbPrecipitationEnum,imonth,P1Enum,NUM_VERTICES,vertexlids,tmp); break;
+			default: _error_("Not implemented yet");
+		}
+	}
+
+	switch(this->ObjectEnum()){
+		case TriaEnum: break;
+		case PentaEnum:
+		case TetraEnum:
+							this->DatasetInputExtrude(SmbMonthlytemperaturesEnum,-1);
+							this->DatasetInputExtrude(SmbPrecipitationEnum,-1);
+							break;
+		default: _error_("Not implemented yet");
+	}
+
+	/*clean-up*/
+	delete gauss;
+	xDelete<IssmDouble>(monthlytemperatures);
+	xDelete<IssmDouble>(monthlyprec);
+	xDelete<IssmDouble>(TemperaturesPresentday);
+	xDelete<IssmDouble>(TemperaturesLgm);
+	xDelete<IssmDouble>(PrecipitationsPresentday);
+	xDelete<IssmDouble>(PrecipitationsLgm);
+	xDelete<IssmDouble>(tmp);
+	xDelete<int>(vertexlids);
+
+}
+/*}}}*/
+ElementMatrix* Element::NewElementMatrix(int approximation_enum){/*{{{*/
+	return new ElementMatrix(nodes,this->GetNumberOfNodes(),this->parameters,approximation_enum);
+}
+/*}}}*/
+ElementMatrix* Element::NewElementMatrixCoupling(int number_nodes,int approximation_enum){/*{{{*/
+	return new ElementMatrix(nodes,number_nodes,this->parameters,approximation_enum);
+}
+/*}}}*/
+ElementVector* Element::NewElementVector(int approximation_enum){/*{{{*/
+	return new ElementVector(nodes,this->GetNumberOfNodes(),this->parameters,approximation_enum);
+}
+/*}}}*/
+void       Element::PicoUpdateBoxid(int* max_boxid_basin_list){/*{{{*/
+
+	if(!this->IsIceInElement() || !this->IsAllFloating()) return;
+
+	int        basin_id;
+	IssmDouble dist_gl,dist_cf;
+
+	this->GetInputValue(&basin_id,BasalforcingsPicoBasinIdEnum);
+	IssmDouble boxid_max=reCast<IssmDouble>(max_boxid_basin_list[basin_id])+1.;
+
+	Input* dist_gl_input=this->GetInput(DistanceToGroundinglineEnum); _assert_(dist_gl_input);
+	Input* dist_cf_input=this->GetInput(DistanceToCalvingfrontEnum);  _assert_(dist_cf_input);
+
+	/*Get dist_gl and dist_cf at center of element*/
+	Gauss* gauss=this->NewGauss(1); gauss->GaussPoint(0);
+	dist_gl_input->GetInputValue(&dist_gl,gauss);
+	dist_cf_input->GetInputValue(&dist_cf,gauss);
+	delete gauss;
+
+	/*Ensure values are positive for floating ice*/
+	dist_gl = fabs(dist_gl);
+	dist_cf = fabs(dist_cf);
+
+	/*Compute relative distance to grounding line*/
+	IssmDouble rel_dist_gl=dist_gl/(dist_gl+dist_cf);
+
+	/*Assign box numbers based on rel_dist_gl*/
+	int boxid = -1;
+	for(IssmDouble i=0.;i<boxid_max;i++){
+		IssmDouble lowbound  = 1. -sqrt((boxid_max-i   )/boxid_max);
+		IssmDouble highbound = 1. -sqrt((boxid_max-i-1.)/boxid_max);
+		if(rel_dist_gl>=lowbound && rel_dist_gl<=highbound){
+			boxid=reCast<int>(i);
+			break;
+		}
+	}
+	if(boxid==-1) _error_("No boxid found for element " << this->Sid() << "!");
+
+	this->SetIntInput(this->inputs,BasalforcingsPicoBoxIdEnum, boxid);
+
+}/*}}}*/
+void       Element::PicoUpdateBox(int loopboxid){/*{{{*/
+
+	if(!this->IsIceInElement() || !this->IsAllFloating()) return;
+
+	int boxid;
+	this->GetInputValue(&boxid,BasalforcingsPicoBoxIdEnum);
+	if(loopboxid!=boxid) return;
+
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+	int        basinid, maxbox, num_basins, numnodes, M;
+	IssmDouble gamma_T, overturning_coeff, thickness;
+	IssmDouble pressure, T_star,p_coeff, q_coeff;
+	bool       isplume;
+
+	/*Get variables*/
+	IssmDouble rhoi       = this->FindParam(MaterialsRhoIceEnum);
+	IssmDouble rhow       = this->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble earth_grav = this->FindParam(ConstantsGEnum);
+	IssmDouble rho_star   = 1033.;             // kg/m^3
+	IssmDouble nu         = rhoi/rhow;
+	IssmDouble latentheat = this->FindParam(MaterialsLatentheatEnum);
+	IssmDouble c_p_ocean  = this->FindParam(MaterialsMixedLayerCapacityEnum);
+	IssmDouble lambda     = latentheat/c_p_ocean;
+	IssmDouble a          = -0.0572;          // K/psu
+	IssmDouble b          = 0.0788 + this->FindParam(MaterialsMeltingpointEnum);  //K
+	IssmDouble c          = 7.77e-4;
+	IssmDouble alpha      = 7.5e-5;           // 1/K
+	IssmDouble Beta       = 7.7e-4;           // K
+
+	/* Get non-box-specific parameters and inputs */
+	this->parameters->FindParam(&num_basins, BasalforcingsPicoNumBasinsEnum);
+	this->parameters->FindParam(&gamma_T,BasalforcingsPicoGammaTEnum);
+	this->parameters->FindParam(&maxbox,BasalforcingsPicoMaxboxcountEnum);
+	this->GetInputValue(&basinid,BasalforcingsPicoBasinIdEnum);
+	this->parameters->FindParam(&isplume, BasalforcingsPicoIsplumeEnum);
+	Input *thickness_input = this->GetInput(ThicknessEnum); 
+   _assert_(basinid<=num_basins);
+   _assert_(thickness_input);
+
+	IssmDouble* boxareas = NULL;
+	this->parameters->FindParam(&boxareas,&M,BasalforcingsPicoBoxAreaEnum);
+	_assert_(M==num_basins*maxbox);
+
+	IssmDouble area_boxi        = boxareas[basinid*maxbox+boxid];
+	IssmDouble g1               = area_boxi*gamma_T;
+
+	IssmDouble basalmeltrates_shelf[MAXVERTICES];
+	IssmDouble potential_pressure_melting_point[MAXVERTICES];
+	IssmDouble Tocs[MAXVERTICES];
+	IssmDouble Socs[MAXVERTICES];
+
+	/* First box calculations */
+	if(boxid==0){
+		/* Get box1 parameters and inputs */
+		IssmDouble time, toc_farocean, soc_farocean;
+      IssmDouble overturnings[MAXVERTICES];
+		this->parameters->FindParam(&time,TimeEnum);
+		this->parameters->FindParam(&toc_farocean, basinid, time, BasalforcingsPicoFarOceantemperatureEnum);
+		this->parameters->FindParam(&soc_farocean, basinid, time, BasalforcingsPicoFarOceansalinityEnum);
+		IssmDouble s1 = soc_farocean/(nu*lambda);
+		Input *overturningC_input = this->GetInput(BasalforcingsPicoOverturningCoeffEnum); _assert_(overturningC_input);
+
+		/* Start looping on the number of verticies and calculate ocean vars */
+		Gauss* gauss=this->NewGauss();
+		for(int i=0;i<NUM_VERTICES;i++){
+			gauss->GaussVertex(i);
+			thickness_input->GetInputValue(&thickness,gauss);
+			overturningC_input->GetInputValue(&overturning_coeff,gauss);
+			pressure = (rhoi*earth_grav*1e-4)*thickness;
+			T_star   = a*soc_farocean+b-c*pressure-toc_farocean;
+			p_coeff  = g1/(overturning_coeff*rho_star*(Beta*s1-alpha));
+			q_coeff  = T_star*(g1/(overturning_coeff*rho_star*(Beta*s1-alpha)));
+
+			/* To avoid negatives under the square root */
+			if((0.25*pow(p_coeff,2)-q_coeff)<0) q_coeff = 0.25*p_coeff*p_coeff;
+
+			Tocs[i] = toc_farocean-(-0.5*p_coeff+sqrt(0.25*pow(p_coeff,2)-q_coeff));
+			Socs[i] = soc_farocean-(soc_farocean/(nu*lambda))*(toc_farocean-Tocs[i]);
+			potential_pressure_melting_point[i] = a*Socs[i]+b-c*pressure;
+			if(!isplume) basalmeltrates_shelf[i] = (-gamma_T/(nu*lambda))*(potential_pressure_melting_point[i]-Tocs[i]);
+			overturnings[i] = overturning_coeff*rho_star*(Beta*(soc_farocean-Socs[i])-alpha*(toc_farocean-Tocs[i]));
+		}
+
+		if(!isplume) this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,&basalmeltrates_shelf[0],P1DGEnum);
+		this->AddInput(BasalforcingsPicoSubShelfOceanTempEnum,&Tocs[0],P1DGEnum);
+		this->AddInput(BasalforcingsPicoSubShelfOceanSalinityEnum,&Socs[0],P1DGEnum);
+		this->AddInput(BasalforcingsPicoSubShelfOceanOverturningEnum,&overturnings[0],P1DGEnum);
+
+		/*Cleanup and return*/
+		delete gauss;
+	}
+
+	/* Subsequent box calculations */
+	else {
+		/* Get subsequent box parameters and inputs */
+		IssmDouble* toc_weighted_avg         = NULL;
+		IssmDouble* soc_weighted_avg         = NULL;
+		IssmDouble* overturning_weighted_avg = NULL;
+		this->parameters->FindParam(&toc_weighted_avg,&num_basins,BasalforcingsPicoAverageTemperatureEnum);
+		this->parameters->FindParam(&soc_weighted_avg,&num_basins,BasalforcingsPicoAverageSalinityEnum);
+		this->parameters->FindParam(&overturning_weighted_avg,&num_basins,BasalforcingsPicoAverageOverturningEnum);
+		IssmDouble mean_toc                  = toc_weighted_avg[basinid];
+		IssmDouble mean_soc                  = soc_weighted_avg[basinid];
+		IssmDouble mean_overturning          = overturning_weighted_avg[basinid];
+		IssmDouble g2                        = g1/(nu*lambda);
+
+		/* Start looping on the number of verticies and calculate ocean vars */
+		Gauss* gauss=this->NewGauss();
+		for(int i=0;i<NUM_VERTICES;i++){
+			gauss->GaussVertex(i);
+			thickness_input->GetInputValue(&thickness,gauss);
+			pressure = (rhoi*earth_grav*1.e-4)*thickness;
+			T_star   = a*mean_soc+b-c*pressure-mean_toc;
+			Tocs[i]  = mean_toc+T_star*(g1/(mean_overturning+g1-g2*a*mean_soc));
+			Socs[i]  = mean_soc-mean_soc*((mean_toc-Tocs[i])/(nu*lambda));
+			potential_pressure_melting_point[i] = a*Socs[i]+b-c*pressure;
+			if(!isplume) basalmeltrates_shelf[i] = (-gamma_T/(nu*lambda))*(potential_pressure_melting_point[i]-Tocs[i]);
+		}
+
+		if(!isplume) this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,basalmeltrates_shelf,P1DGEnum);
+		this->AddInput(BasalforcingsPicoSubShelfOceanTempEnum,Tocs,P1DGEnum);
+		this->AddInput(BasalforcingsPicoSubShelfOceanSalinityEnum,Socs,P1DGEnum);
+
+		/*Cleanup and return*/
+		xDelete<IssmDouble>(toc_weighted_avg);
+		xDelete<IssmDouble>(soc_weighted_avg);
+		xDelete<IssmDouble>(overturning_weighted_avg);
+		delete gauss;
+	}
+
+	/*Cleanup and return*/
+	xDelete<IssmDouble>(boxareas);
+
+}/*}}}*/
+void       Element::PicoComputeBasalMelt(){/*{{{*/
+
+	if(!this->IsIceInElement() || !this->IsAllFloating()) return;
+
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+
+	IssmDouble E0, Cd, CdT, YT, lam1, lam2, lam3, M0, CdTS0, y1, y2, x0;
+	IssmDouble Tf_gl, YTS, CdTS, G1, G2, G3, g_alpha, M, l, X_hat, M_hat;
+	IssmDouble alpha, zgl, Toc, Soc, z_base, yts, slopex, slopey;
+
+	/*Get variables*/
+	E0    = 3.6e-2;        //Entrainment coefficient
+	Cd    = 2.5e-3;        //Drag coefficient
+	CdT   = 1.1e-3;        //Turbulent heat exchange coefficient
+	YT    = CdT/sqrt(Cd);  //Heat exchange coefficient
+	lam1  = -5.73e-2;      //Freezing point-salinity coefficient (degrees C)
+	lam2  = 8.32e-2;       //Freezing point offset (degrees C)
+	lam3  = 7.61e-4;       //Freezing point-depth coefficient (K m-1)
+	M0    = 10.;           //Melt-rate parameter (m yr-1 C-2)
+	CdTS0 = 6e-4;          //Heat exchange parameter
+	y1    = 0.545;         //Heat exchange parameter
+	y2    = 3.5e-5;        //Heat exchange parameter
+	x0    = 0.56;          //Dimentionless scaling factor
+
+	/*Define arrays*/
+	IssmDouble basalmeltrates_shelf[MAXVERTICES];
+
+	/*Polynomial coefficients*/
+	IssmDouble p[12];
+	p[0]  =  0.1371330075095435;
+	p[1]  =  5.527656234709359E1;
+	p[2]  = -8.951812433987858E2;
+	p[3]  =  8.927093637594877E3;
+	p[4]  = -5.563863123811898E4;
+	p[5]  =  2.218596970948727E5;
+	p[6]  = -5.820015295669482E5;
+	p[7]  =  1.015475347943186E6;
+	p[8]  = -1.166290429178556E6;
+	p[9]  =  8.466870335320488E5;
+	p[10] = -3.520598035764990E5;
+	p[11] =  6.387953795485420E4;
+
+	/*Get inputs*/
+	Input* zgl_input         = this->GetInput(GroundinglineHeightEnum);                     _assert_(zgl_input);
+	Input* toc_input         = this->GetInput(BasalforcingsPicoSubShelfOceanTempEnum);      _assert_(toc_input);
+	Input* soc_input         = this->GetInput(BasalforcingsPicoSubShelfOceanSalinityEnum);  _assert_(soc_input);
+	Input* base_input        = this->GetInput(BaseEnum);                                    _assert_(base_input);
+	Input* baseslopex_input  = this->GetInput(BaseSlopeXEnum);                              _assert_(baseslopex_input);
+	Input* baseslopey_input  = this->GetInput(BaseSlopeYEnum);                              _assert_(baseslopey_input);
+	this->FindParam(&yts, ConstantsYtsEnum);
+
+	/*Loop over the number of vertices in this element*/
+	Gauss* gauss=this->NewGauss();
+	for(int i=0;i<NUM_VERTICES;i++){
+		gauss->GaussVertex(i);
+
+		/*Get inputs*/
+		zgl_input->GetInputValue(&zgl,gauss);
+		toc_input->GetInputValue(&Toc,gauss); //(K)
+		soc_input->GetInputValue(&Soc,gauss);
+		base_input->GetInputValue(&z_base,gauss);
+		baseslopex_input->GetInputValue(&slopex,gauss);
+		baseslopey_input->GetInputValue(&slopey,gauss);
+
+		/*Compute ice shelf base slope (radians)*/
+		alpha = atan(sqrt(slopex*slopex + slopey*slopey));
+		if(alpha>=M_PI) alpha = M_PI - 0.001;               //ensure sin(alpha) > 0 for meltrate calculations
+
+		/*Make necessary conversions*/
+		Toc = Toc-273.15;
+		if(zgl>z_base) zgl=z_base;
+
+		/*Low bound for Toc to ensure X_hat is between 0 and 1*/
+		if(Toc<lam1*Soc+lam2) Toc=lam1*Soc+lam2;
+
+		/*Compute parameters needed for melt-rate calculation*/
+		Tf_gl = lam1*Soc+lam2+lam3*zgl;                                              //Characteristic freezing point
+		YTS = YT*(y1+y2*(((Toc-Tf_gl)*E0*sin(alpha))/(lam3*(CdTS0+E0*sin(alpha))))); //Effective heat exchange coefficient
+		CdTS = sqrt(Cd)*YTS;                                                         //Heat exchange coefficient
+		G1 = sqrt(sin(alpha)/(Cd+E0*sin(alpha)));                                    //Geometric factor
+		G2 = sqrt(CdTS/(CdTS+E0*sin(alpha)));                                        //Geometric factor
+		G3 = (E0*sin(alpha))/(CdTS+E0*sin(alpha));                                   //Geometric factor
+		g_alpha = G1*G2*G3;                                                          //Melt scaling factor
+		M = M0*g_alpha*pow((Toc-Tf_gl),2);                                           //Melt-rate scale
+		l = ((Toc-Tf_gl)*(x0*CdTS+E0*sin(alpha)))/(lam3*x0*(CdTS+E0*sin(alpha)));    //Length scale
+		X_hat = (z_base-zgl)/l;                                                      //Dimentionless coordinate system
+
+		/*Compute polynomial fit*/
+		M_hat = 0.;                                                                  //Reset summation variable for each node
+		for(int ii=0;ii<12;ii++) {
+			M_hat += p[ii]*pow(X_hat,ii);                                               //Polynomial fit
+		}
+
+		/*Compute melt-rate*/
+		basalmeltrates_shelf[i] = (M*M_hat)/yts;                                     //Basal melt-rate (m/s)
+	}
+
+	/*Save computed melt-rate*/
+	this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,&basalmeltrates_shelf[0],P1DGEnum);
+
+	/*Cleanup and return*/
+	delete gauss;
+}/*}}}*/
+void       Element::PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm,bool issetpddfac){/*{{{*/
+
+	const int NUM_VERTICES 		= this->GetNumberOfVertices();
+	const int NUM_VERTICES_MONTHS_PER_YEAR = NUM_VERTICES * 12;
+
+	int  		i,vertexlids[MAXVERTICES];
+	IssmDouble* agd=xNew<IssmDouble>(NUM_VERTICES); // surface mass balance
+	IssmDouble* melt=xNew<IssmDouble>(NUM_VERTICES); // surface mass balance
+	IssmDouble* accu=xNew<IssmDouble>(NUM_VERTICES); // surface mass balance
+	IssmDouble* monthlytemperatures=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* monthlyprec=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* yearlytemperatures=xNew<IssmDouble>(NUM_VERTICES); memset(yearlytemperatures, 0., NUM_VERTICES*sizeof(IssmDouble));
+	IssmDouble* tmp=xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble* h=xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble* s=xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble* s0p=xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble* s0t=xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble pddsnowfac = -1.;
+	IssmDouble pddicefac = -1.;
+	IssmDouble rho_water,rho_ice,desfac,rlaps,rlapslgm;
+	IssmDouble PfacTime,TdiffTime,sealevTime;
+	IssmDouble mavg=1./12.; //factor for monthly average
+
+	/*Get vertex Lids for later*/
+	this->GetVerticesLidList(&vertexlids[0]);
+
+	/*Get material parameters :*/
+	rho_water=this->FindParam(MaterialsRhoSeawaterEnum);
+	rho_ice=this->FindParam(MaterialsRhoIceEnum);
+
+	/*Get some pdd parameters*/
+	desfac=this->FindParam(SmbDesfacEnum);
+	rlaps=this->FindParam(SmbRlapsEnum);
+	rlapslgm=this->FindParam(SmbRlapslgmEnum);
+
+	IssmDouble time,yts,time_yr;
+	this->parameters->FindParam(&time,TimeEnum);
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+	time_yr=floor(time/yts)*yts;
+
+	/*Get inputs*/
+	DatasetInput* dinput =this->GetDatasetInput(SmbMonthlytemperaturesEnum); _assert_(dinput);
+	DatasetInput* dinput2=this->GetDatasetInput(SmbPrecipitationEnum);       _assert_(dinput2);
+
+	/*loop over vertices: */
+	Gauss* gauss=this->NewGauss();
+	for(int month=0;month<12;month++) {
+		/*Recover monthly temperatures and precipitation and compute the yearly mean temperatures*/
+
+		for(int iv=0;iv<NUM_VERTICES;iv++) {
+			gauss->GaussVertex(iv);
+			dinput->GetInputValue(&monthlytemperatures[iv*12+month],gauss,month);
+			// yearlytemperatures[iv]=yearlytemperatures[iv]+monthlytemperatures[iv*12+month]*mavg; // Has to be in Kelvin
+			monthlytemperatures[iv*12+month]=monthlytemperatures[iv*12+month]-273.15; // conversion from Kelvin to celcius for PDD module
+			dinput2->GetInputValue(&monthlyprec[iv*12+month],gauss,month);
+			monthlyprec[iv*12+month]=monthlyprec[iv*12+month]*yts;
+		}
+	}
+
+	/*Recover Pfac, Tdiff and sealev at time t:
+	 *     This parameters are used to interpolate the temperature
+	 *         and precipitaton between PD and LGM when ismungsm==1 */
+	if (ismungsm==1){
+		this->parameters->FindParam(&TdiffTime,SmbTdiffEnum,time);
+		this->parameters->FindParam(&sealevTime,SmbSealevEnum,time);
+	}
+	else {
+		TdiffTime=0;
+		sealevTime=0;
+	}
+
+	/*Recover pdd factors at time t.
+	 *     This parameter is set, if the user wants to define the
+	 *     pdd factors regionally, if issetpddfac==1 in the d18opdd method */
+	Input* input  = NULL;
+	Input* input2 = NULL;
+	if(issetpddfac==1){
+		input  = this->GetInput(SmbPddfacSnowEnum); _assert_(input);
+		input2 = this->GetInput(SmbPddfacIceEnum); _assert_(input2);
+	}
+
+	/*Recover info at the vertices: */
+	GetInputListOnVertices(&h[0],ThicknessEnum);
+	GetInputListOnVertices(&s[0],SurfaceEnum);
+	GetInputListOnVertices(&s0p[0],SmbS0pEnum);
+	GetInputListOnVertices(&s0t[0],SmbS0tEnum);
+
+	/*measure the surface mass balance*/
+	for(int iv = 0; iv<NUM_VERTICES; iv++){
+		gauss->GaussVertex(iv);
+		pddsnowfac=0.;
+		pddicefac=0.;
+		if(issetpddfac==1){
+			input->GetInputValue(&pddsnowfac,gauss);
+			input2->GetInputValue(&pddicefac,gauss);
+		}
+		agd[iv]=PddSurfaceMassBalance(&monthlytemperatures[iv*12], &monthlyprec[iv*12],
+					pdds, pds, &melt[iv], &accu[iv], signorm, yts, h[iv], s[iv],
+					desfac, s0t[iv], s0p[iv],rlaps,rlapslgm,TdiffTime,sealevTime,
+					pddsnowfac,pddicefac,rho_water,rho_ice);
+		/*Get yearlytemperatures */
+		for(int month=0;month<12;month++) {
+			yearlytemperatures[iv]=yearlytemperatures[iv]+(monthlytemperatures[iv*12+month]+273.15)*mavg; // Has to be in Kelvin
+		}
+	}
+
+	/*Update inputs*/
+	switch(this->ObjectEnum()){
+		case TriaEnum:
+			this->AddInput(TemperaturePDDEnum,&yearlytemperatures[0],P1Enum);
+			this->AddInput(SmbMassBalanceEnum,&agd[0],P1Enum);
+			this->AddInput(SmbAccumulationEnum,&accu[0],P1Enum);
+			this->AddInput(SmbMeltEnum,&melt[0],P1Enum);
+			break;
+		case PentaEnum:
+			bool isthermal;
+         this->parameters->FindParam(&isthermal,TransientIsthermalEnum);
+         if(isthermal){
+				if(IsOnSurface()){
+					/*Here, we want to change the BC of the thermal model, keep
+					 * the temperatures as they are for the base of the penta and
+					 * yse yearlytemperatures for the top*/
+					PentaInput* temp_input = xDynamicCast<PentaInput*>(this->GetInput(TemperatureEnum)); _assert_(temp_input);
+					switch(temp_input->GetInputInterpolationType()){
+						case P1Enum:
+							temp_input->element_values[3] = yearlytemperatures[3];
+							temp_input->element_values[4] = yearlytemperatures[4];
+							temp_input->element_values[5] = yearlytemperatures[5];
+							temp_input->SetInput(P1Enum,NUM_VERTICES,&vertexlids[0],temp_input->element_values);
+							break;
+						case P1xP2Enum:
+						case P1xP3Enum:
+						case P1xP4Enum:
+						case P1DGEnum:
+							temp_input->element_values[3] = yearlytemperatures[3];
+							temp_input->element_values[4] = yearlytemperatures[4];
+							temp_input->element_values[5] = yearlytemperatures[5];
+							temp_input->SetInput(temp_input->GetInputInterpolationType(),this->lid,this->GetNumberOfNodes(temp_input->GetInputInterpolationType()),temp_input->element_values);
+							break;
+						default:
+							_error_("Interpolation "<<EnumToStringx(temp_input->GetInputInterpolationType())<<" not supported yet");
+					}
+
+					bool isenthalpy;
+					this->parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);
+					if(isenthalpy){
+						/*Convert that to enthalpy for the enthalpy model*/
+						PentaInput* enth_input = xDynamicCast<PentaInput*>(this->GetInput(EnthalpyEnum)); _assert_(enth_input);
+						switch(enth_input->GetInputInterpolationType()){
+							case P1Enum:
+								ThermalToEnthalpy(&enth_input->element_values[3],yearlytemperatures[3],0.,0.);
+								ThermalToEnthalpy(&enth_input->element_values[4],yearlytemperatures[4],0.,0.);
+								ThermalToEnthalpy(&enth_input->element_values[5],yearlytemperatures[5],0.,0.);
+								enth_input->SetInput(P1Enum,NUM_VERTICES,&vertexlids[0],enth_input->element_values);
+								break;
+							case P1xP2Enum:
+							case P1xP3Enum:
+							case P1xP4Enum:
+							case P1DGEnum:
+								ThermalToEnthalpy(&enth_input->element_values[3],yearlytemperatures[3],0.,0.);
+								ThermalToEnthalpy(&enth_input->element_values[4],yearlytemperatures[4],0.,0.);
+								ThermalToEnthalpy(&enth_input->element_values[5],yearlytemperatures[5],0.,0.);
+								enth_input->SetInput(enth_input->GetInputInterpolationType(),this->lid,this->GetNumberOfNodes(enth_input->GetInputInterpolationType()),enth_input->element_values);
+								break;
+							default:
+								_error_("Interpolation "<<EnumToStringx(temp_input->GetInputInterpolationType())<<" not supported yet");
+						}
+					}
+				}
+			}
+			this->AddInput(SmbMassBalanceEnum,&agd[0],P1Enum);
+			this->AddInput(TemperaturePDDEnum,&yearlytemperatures[0],P1Enum);
+			this->AddInput(SmbAccumulationEnum,&accu[0],P1Enum);
+			this->AddInput(SmbMeltEnum,&melt[0],P1Enum);
+			this->InputExtrude(TemperaturePDDEnum,-1);
+			this->InputExtrude(SmbMassBalanceEnum,-1);
+			this->InputExtrude(SmbAccumulationEnum,-1);
+			this->InputExtrude(SmbMeltEnum,-1);
+			break;
+		default: _error_("Not implemented yet");
+	}
+
+	/*clean-up*/
+	delete gauss;
+	xDelete<IssmDouble>(monthlytemperatures);
+	xDelete<IssmDouble>(monthlyprec);
+	xDelete<IssmDouble>(agd);
+	xDelete<IssmDouble>(melt);
+	xDelete<IssmDouble>(accu);
+	xDelete<IssmDouble>(yearlytemperatures);
+	xDelete<IssmDouble>(h);
+	xDelete<IssmDouble>(s);
+	xDelete<IssmDouble>(s0t);
+	xDelete<IssmDouble>(s0p);
+	xDelete<IssmDouble>(tmp);
+}
+/*}}}*/
+void       Element::PositiveDegreeDaySicopolis(bool isfirnwarming){/*{{{*/
+
+	/* General FIXMEs: get Tmelting point, pddicefactor, pddsnowfactor, sigma from parameters/user input */
+
+	const int NUM_VERTICES 		= this->GetNumberOfVertices();
+	const int NUM_VERTICES_MONTHS_PER_YEAR	= NUM_VERTICES * 12;
+
+	int        	i,vertexlids[MAXVERTICES];;
+	IssmDouble* smb=xNew<IssmDouble>(NUM_VERTICES);		// surface mass balance
+	IssmDouble* melt=xNew<IssmDouble>(NUM_VERTICES);		// melting comp. of surface mass balance
+	IssmDouble* accu=xNew<IssmDouble>(NUM_VERTICES);		// accuumulation comp. of surface mass balance
+	IssmDouble* melt_star=xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble* monthlytemperatures=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* monthlyprec=xNew<IssmDouble>(NUM_VERTICES_MONTHS_PER_YEAR);
+	IssmDouble* yearlytemperatures=xNew<IssmDouble>(NUM_VERTICES); memset(yearlytemperatures, 0., NUM_VERTICES*sizeof(IssmDouble));
+	IssmDouble* s=xNew<IssmDouble>(NUM_VERTICES);			// actual surface height
+	IssmDouble* s0p=xNew<IssmDouble>(NUM_VERTICES);		// reference elevation for precip.
+	IssmDouble* s0t=xNew<IssmDouble>(NUM_VERTICES);		// reference elevation for temperature
+	IssmDouble* smbcorr=xNew<IssmDouble>(NUM_VERTICES); // surface mass balance correction; will be added after pdd call
+	IssmDouble* p_ampl=xNew<IssmDouble>(NUM_VERTICES);	// precip anomaly
+	IssmDouble* t_ampl=xNew<IssmDouble>(NUM_VERTICES);	// remperature anomaly
+	IssmDouble rho_water,rho_ice,desfac,rlaps;
+	IssmDouble inv_twelve=1./12.;								//factor for monthly average
+	IssmDouble time,yts,time_yr;
+
+	/*Get vertex Lids for later*/
+	this->GetVerticesLidList(&vertexlids[0]);
+
+	/*Get material parameters :*/
+	rho_water=this->FindParam(MaterialsRhoSeawaterEnum);
+	rho_ice=this->FindParam(MaterialsRhoIceEnum);
+
+	/*Get parameters for height corrections*/
+	desfac=this->FindParam(SmbDesfacEnum);
+	rlaps=this->FindParam(SmbRlapsEnum);
+
+	/* Get time */
+	this->parameters->FindParam(&time,TimeEnum);
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+	time_yr=floor(time/yts)*yts;
+
+	/* Set parameters for finrnwarming */
+	IssmDouble MU_0         = 9.7155; //Firn-warming correction, in (d*deg C)/(mm WE)
+	IssmDouble mu           = MU_0*(1000.0*86400.0)*(rho_ice/rho_water);   // (d*deg C)/(mm WE) --> (s*deg C)/(m IE)
+
+	/*Get inputs*/
+	DatasetInput* dinput =this->GetDatasetInput(SmbMonthlytemperaturesEnum); _assert_(dinput);
+	DatasetInput* dinput2=this->GetDatasetInput(SmbPrecipitationEnum);       _assert_(dinput2);
+
+	/*loop over vertices: */
+	Gauss* gauss=this->NewGauss();
+	for(int month=0;month<12;month++){
+
+		for(int iv=0;iv<NUM_VERTICES;iv++){
+			gauss->GaussVertex(iv);
+			dinput->GetInputValue(&monthlytemperatures[iv*12+month],gauss,month);
+			monthlytemperatures[iv*12+month]=monthlytemperatures[iv*12+month]-273.15; // conversion from Kelvin to celcius for PDD module
+			dinput2->GetInputValue(&monthlyprec[iv*12+month],gauss,month);
+			monthlyprec[iv*12+month]=monthlyprec[iv*12+month]*yts;
+		}
+	}
+
+	/*Recover info at the vertices: */
+	GetInputListOnVertices(&s[0],SurfaceEnum);
+	GetInputListOnVertices(&s0p[0],SmbS0pEnum);
+	GetInputListOnVertices(&s0t[0],SmbS0tEnum);
+	GetInputListOnVertices(&smbcorr[0],SmbSmbCorrEnum);
+	GetInputListOnVertices(&t_ampl[0],SmbTemperaturesAnomalyEnum);
+	GetInputListOnVertices(&p_ampl[0],SmbPrecipitationsAnomalyEnum);
+
+	/*measure the surface mass balance*/
+	for (int iv = 0; iv<NUM_VERTICES; iv++){
+		smb[iv]=PddSurfaceMassBalanceSicopolis(&monthlytemperatures[iv*12], &monthlyprec[iv*12],
+					&melt[iv], &accu[iv], &melt_star[iv], &t_ampl[iv], &p_ampl[iv], yts, s[iv],
+					desfac, s0t[iv], s0p[iv],rlaps,rho_water,rho_ice);
+
+		/* make correction */
+		smb[iv] = smb[iv]+smbcorr[iv];
+		/*Get yearlytemperatures */
+		for(int month=0;month<12;month++) yearlytemperatures[iv]=yearlytemperatures[iv]+((monthlytemperatures[iv*12+month]+273.15)+t_ampl[iv])*inv_twelve; // Has to be in Kelvin
+
+		if(isfirnwarming){
+			if(melt_star[iv]>=melt[iv]){
+				yearlytemperatures[iv]= yearlytemperatures[iv]+mu*(melt_star[iv]-melt[iv]);
+			}
+			else{
+				yearlytemperatures[iv]= yearlytemperatures[iv];
+			}
+		}
+		if (yearlytemperatures[iv]>273.15) yearlytemperatures[iv]=273.15;
+	}
+
+	switch(this->ObjectEnum()){
+		case TriaEnum:
+			//this->AddInput(TemperatureEnum,&yearlytemperatures[0],P1Enum);
+			this->AddInput(TemperaturePDDEnum,&yearlytemperatures[0],P1Enum);
+			this->AddInput(SmbMassBalanceEnum,&smb[0],P1Enum);
+			this->AddInput(SmbAccumulationEnum,&accu[0],P1Enum);
+			this->AddInput(SmbMeltEnum,&melt[0],P1Enum);
+			break;
+		case PentaEnum:
+			bool isthermal;
+			this->parameters->FindParam(&isthermal,TransientIsthermalEnum);
+			if(isthermal){
+				bool isenthalpy;
+				this->parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);
+				if(IsOnSurface()){
+					/*Here, we want to change the BC of the thermal model, keep
+					 * the temperatures as they are for the base of the penta and
+					 * use yearlytemperatures for the top*/
+
+					/*FIXME: look at other function Element::PositiveDegreeDay and propagate change! Just assert for now*/
+					PentaInput* temp_input = xDynamicCast<PentaInput*>(this->GetInput(TemperatureEnum)); _assert_(temp_input);
+					switch(temp_input->GetInputInterpolationType()){
+						case P1Enum:
+							temp_input->element_values[3] = yearlytemperatures[3];
+							temp_input->element_values[4] = yearlytemperatures[4];
+							temp_input->element_values[5] = yearlytemperatures[5];
+							temp_input->SetInput(P1Enum,NUM_VERTICES,&vertexlids[0],temp_input->element_values);
+							break;
+						case P1DGEnum:
+						case P1xP2Enum:
+						case P1xP3Enum:
+						case P1xP4Enum:
+							temp_input->element_values[3] = yearlytemperatures[3];
+							temp_input->element_values[4] = yearlytemperatures[4];
+							temp_input->element_values[5] = yearlytemperatures[5];
+							temp_input->SetInput(temp_input->GetInputInterpolationType(),this->lid,this->GetNumberOfNodes(temp_input->GetInputInterpolationType()),temp_input->element_values);
+							break;
+						default:
+							_error_("Interpolation "<<EnumToStringx(temp_input->GetInputInterpolationType())<<" not supported yet");
+					}
+
+					if(isenthalpy){
+						/*Convert that to enthalpy for the enthalpy model*/
+						PentaInput* enth_input = xDynamicCast<PentaInput*>(this->GetInput(EnthalpyEnum)); _assert_(enth_input);
+						switch(enth_input->GetInputInterpolationType()){
+							case P1Enum:
+								ThermalToEnthalpy(&enth_input->element_values[3],yearlytemperatures[3],0.,0.);
+								ThermalToEnthalpy(&enth_input->element_values[4],yearlytemperatures[4],0.,0.);
+								ThermalToEnthalpy(&enth_input->element_values[5],yearlytemperatures[5],0.,0.);
+								enth_input->SetInput(P1Enum,NUM_VERTICES,&vertexlids[0],enth_input->element_values);
+								break;
+							case P1DGEnum:
+							case P1xP2Enum:
+							case P1xP3Enum:
+							case P1xP4Enum:
+								ThermalToEnthalpy(&enth_input->element_values[3],yearlytemperatures[3],0.,0.);
+								ThermalToEnthalpy(&enth_input->element_values[4],yearlytemperatures[4],0.,0.);
+								ThermalToEnthalpy(&enth_input->element_values[5],yearlytemperatures[5],0.,0.);
+								enth_input->SetInput(enth_input->GetInputInterpolationType(),this->lid,this->GetNumberOfNodes(enth_input->GetInputInterpolationType()),enth_input->element_values);
+								break;
+							default:
+								_error_("Interpolation "<<EnumToStringx(temp_input->GetInputInterpolationType())<<" not supported yet");
+						}
+					}
+				}
+			}
+			this->AddInput(SmbMassBalanceEnum,&smb[0],P1Enum);
+			this->AddInput(TemperaturePDDEnum,&yearlytemperatures[0],P1Enum);
+			this->AddInput(SmbAccumulationEnum,&accu[0],P1Enum);
+			this->AddInput(SmbMeltEnum,&melt[0],P1Enum);
+			this->InputExtrude(TemperaturePDDEnum,-1);
+			this->InputExtrude(SmbMassBalanceEnum,-1);
+			this->InputExtrude(SmbAccumulationEnum,-1);
+			this->InputExtrude(SmbMeltEnum,-1);
+			break;
+		default: _error_("Not implemented yet");
+	}
+
+	/*clean-up*/
+	delete gauss;
+	xDelete<IssmDouble>(monthlytemperatures);
+	xDelete<IssmDouble>(monthlyprec);
+	xDelete<IssmDouble>(smb);
+	xDelete<IssmDouble>(melt);
+	xDelete<IssmDouble>(accu);
+	xDelete<IssmDouble>(yearlytemperatures);
+	xDelete<IssmDouble>(s);
+	xDelete<IssmDouble>(s0t);
+	xDelete<IssmDouble>(s0p);
+	xDelete<IssmDouble>(t_ampl);
+	xDelete<IssmDouble>(p_ampl);
+	xDelete<IssmDouble>(smbcorr);
+	xDelete<IssmDouble>(melt_star);
+}
+/*}}}*/
+void       Element::SmbDebrisEvatt(){/*{{{*/
+
+        const int NUM_VERTICES          = this->GetNumberOfVertices();
+        const int NUM_VERTICES_DAYS_PER_YEAR  = NUM_VERTICES * 365; // 365 FIXME
+
+        int             i,vertexlids[MAXVERTICES];;
+        IssmDouble* smb=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* melt=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* summermelt=xNew<IssmDouble>(NUM_VERTICES); 
+        IssmDouble* albedo=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* summeralbedo=xNew<IssmDouble>(NUM_VERTICES); 
+        IssmDouble* accu=xNew<IssmDouble>(NUM_VERTICES);
+        
+        // climate inputs
+        IssmDouble* temperature=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+        IssmDouble* precip=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+        IssmDouble* lw=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+        IssmDouble* sw=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+        IssmDouble* wind=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+        IssmDouble* humidity=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+        IssmDouble* yearlytemperatures=xNew<IssmDouble>(NUM_VERTICES); memset(yearlytemperatures, 0., NUM_VERTICES*sizeof(IssmDouble));
+        IssmDouble* p_ampl=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* t_ampl=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* lw_ampl=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* sw_ampl=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* wind_ampl=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* humidity_ampl=xNew<IssmDouble>(NUM_VERTICES);
+
+        IssmDouble* surface=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* s0t=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* snowheight=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* debriscover=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble rho_water,rho_ice,Tf,debris,debris_here;
+        IssmDouble qlaps,rlaps,dsgrad,dlgrad,windspeedgrad,humiditygrad,Tm;
+        IssmDouble inv_twelve=1./365.;
+        IssmDouble time,yts,time_yr,lambda;
+        IssmDouble DailyMelt,CleanIceDailyMelt, CumDailyMelt=0,CleanIceMelt,CumDailySummerMelt=0;
+        IssmDouble MeanAlbedo=0, MeanSummerAlbedo=0;
+        bool isdebris,isAnderson,iscryokarst;
+        this->parameters->FindParam(&isdebris,TransientIsdebrisEnum);
+        this->parameters->FindParam(&isAnderson,SmbDebrisIsAndersonEnum);
+        this->parameters->FindParam(&iscryokarst,SmbDebrisIsCryokarstEnum);
+        IssmDouble PhiD=0.,p;
+        IssmDouble icealbedo=this->FindParam(SmbIcealbedoEnum);
+        IssmDouble snowalbedo=this->FindParam(SmbSnowalbedoEnum);
+        IssmDouble debrisalbedo=this->FindParam(SmbDebrisalbedoEnum);
+        IssmDouble Lm=this->FindParam(MaterialsLatentheatEnum); 
+        IssmDouble D0=this->FindParam(SmbDebrisAndersonD0Enum);
+        int step;
+        this->FindParam(&step,StepEnum);
+
+        // cryokarst
+        int dim=1,domaintype;
+        this->parameters->FindParam(&domaintype,DomainTypeEnum);
+        if(domaintype!=Domain2DverticalEnum){
+                        dim=2;
+        }
+        IssmDouble taud_plus=110e3, taud_minus=60e3;
+        IssmDouble taud, slope, gravity, taudx, taudy;
+        this->parameters->FindParam(&gravity,ConstantsGEnum);
+        IssmDouble* slopex         = xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* slopey         = xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* icethickness   = xNew<IssmDouble>(NUM_VERTICES);
+
+        /*Get material parameters :*/
+        rho_water=this->FindParam(MaterialsRhoSeawaterEnum);
+        rho_ice=this->FindParam(MaterialsRhoIceEnum);
+        IssmDouble sconv=(rho_water/rho_ice); 
+        Tf=this->FindParam(MaterialsMeltingpointEnum);
+
+        /*Get parameters for height corrections*/
+        qlaps=this->FindParam(SmbDesfacEnum); // comment MR; on alpine galciers we dont have the desertification effect
+        rlaps=this->FindParam(SmbRlapsEnum);
+        dsgrad=this->FindParam(SmbSWgradEnum);
+        dlgrad=this->FindParam(SmbLWgradEnum);
+        windspeedgrad=this->FindParam(SmbWindspeedgradEnum);
+        humiditygrad=this->FindParam(SmbHumiditygradEnum);
+
+        /* Get time */
+        this->parameters->FindParam(&time,TimeEnum);
+        this->parameters->FindParam(&yts,ConstantsYtsEnum);
+        time_yr=floor(time/yts)*yts;
+
+        /*Get inputs*/
+        DatasetInput* tempday     =this->GetDatasetInput(SmbMonthlytemperaturesEnum); _assert_(tempday);
+        DatasetInput* precipday   =this->GetDatasetInput(SmbPrecipitationEnum);       _assert_(precipday);
+        DatasetInput* lwday       =this->GetDatasetInput(SmbMonthlydlradiationEnum); _assert_(lwday);
+        DatasetInput* swday       =this->GetDatasetInput(SmbMonthlydsradiationEnum);       _assert_(swday);
+        DatasetInput* windday     =this->GetDatasetInput(SmbMonthlywindspeedEnum); _assert_(windday);
+        DatasetInput* humidityday =this->GetDatasetInput(SmbMonthlyairhumidityEnum); _assert_(humidityday);
+
+        /*loop over vertices: */
+        Gauss* gauss=this->NewGauss();
+        for(int month=0;month<365;month++){
+                for(int iv=0;iv<NUM_VERTICES;iv++){
+                        gauss->GaussVertex(iv);
+                        tempday->GetInputValue(&temperature[iv*365+month],gauss,month);
+                        temperature[iv*365+month]=temperature[iv*365+month]-Tf; // conversion from Kelvin to celcius for PDD module
+                        precipday->GetInputValue(&precip[iv*365+month],gauss,month);
+                        precip[iv*365+month]=precip[iv*365+month]*yts; // from m/s to m/a
+                        lwday->GetInputValue(&lw[iv*365+month],gauss,month);
+                        swday->GetInputValue(&sw[iv*365+month],gauss,month);
+                        windday->GetInputValue(&wind[iv*365+month],gauss,month);
+                        humidityday->GetInputValue(&humidity[iv*365+month],gauss,month);
+                }
+        }
+
+        /*Recover info at the vertices: */
+        GetInputListOnVertices(&surface[0],SurfaceEnum);
+        GetInputListOnVertices(&s0t[0],SmbS0tEnum);
+        GetInputListOnVertices(&snowheight[0],SmbSnowheightEnum);
+        GetInputListOnVertices(&debriscover[0],DebrisThicknessEnum);
+        GetInputListOnVertices(&t_ampl[0],SmbTemperaturesAnomalyEnum);
+        GetInputListOnVertices(&p_ampl[0],SmbPrecipitationsAnomalyEnum);
+        GetInputListOnVertices(&lw_ampl[0],SmbDsradiationAnomalyEnum);
+        GetInputListOnVertices(&sw_ampl[0],SmbDlradiationAnomalyEnum);
+        GetInputListOnVertices(&wind_ampl[0],SmbWindspeedAnomalyEnum);
+        GetInputListOnVertices(&humidity_ampl[0],SmbAirhumidityAnomalyEnum);
+        if(iscryokarst){
+                GetInputListOnVertices(&slopex[0],SurfaceSlopeXEnum);
+                GetInputListOnVertices(&icethickness[0],ThicknessEnum);
+                if(dim==2){
+                        GetInputListOnVertices(&slopey[0],SurfaceSlopeYEnum);
+                }
+                taudx=rho_ice*gravity*icethickness[i]*slopex[i];
+                if(dim==2) taudy=rho_ice*gravity*icethickness[i]*slopey[i];
+                taud=sqrt(taudx*taudx+taudy*taudy);
+        }
+        IssmDouble Alphaeff,Alphaeff_cleanice;
+
+        /*measure the surface mass balance*/
+        for (int iv = 0; iv<NUM_VERTICES; iv++){
+
+                IssmDouble st=(surface[iv]-s0t[iv])/1000.;
+
+                int ismb_end=1;
+                if(isdebris & !isAnderson) ismb_end=2;
+                for (int ismb=0;ismb<ismb_end;ismb++){
+                        if(ismb==0){
+                                // calc a reference smb to identify accum and melt region; debris only develops in ablation area
+                                debris=0.;
+                                PhiD=0.;
+                                if(isAnderson) debris_here=debriscover[iv]; // store debris for later
+                        }else{
+                                // debris only develops in ablation area
+                                /*if((accu[iv]/yts-CleanIceMelt)<(-1e-2)/yts){
+                                        debris=debriscover[iv];
+                                }else{
+                                        debris=0.;
+                                }*/
+                                debris=0.;
+                                if(debris<=0.) debris=0.;
+                                if(isdebris) PhiD=FindParam(DebrisPackingFractionEnum);
+                                CumDailyMelt=0;
+                                CumDailySummerMelt=0;
+                                debris_here=debriscover[iv];
+                        }
+
+                        /* Now run the debris part */
+
+                        // Climate inputs
+                        IssmDouble Tm;          // C air temperature
+                        IssmDouble In;          // Wm^-2 incoming long wave
+                        IssmDouble Q;           // Wm^-2 incoming short wave
+                        IssmDouble Um;          // ms^-1 measured wind speed
+                        IssmDouble Humidity;    // relative humidity
+                        IssmDouble P;           // precip
+
+                        // other parameters
+                        IssmDouble Qh=0.006;   // kg m^-3      saturated humidity level // not used
+                        IssmDouble Qm=0.8*Qh;  // kg m^-3      measured humiditiy level // not used
+                        IssmDouble Rhoaa=1.22; // kgm^-3       air densitiy
+                        IssmDouble K=0.585;    // Wm^-1K^-1    thermal conductivity          0.585
+                        IssmDouble Xr=0.01;    // ms^-1        surface roughness             0.01
+                        IssmDouble Ustar=0.16; // ms^-1        friction velocity             0.16
+                        IssmDouble Ca=1000;    // jkg^-1K^-1   specific heat capacity of air
+                        IssmDouble Lv=2.50E+06;// jkg^-1K^-1   latent heat of evaporation
+                        IssmDouble Eps=0.95;   //              thermal emissivity
+                        IssmDouble Sigma=5.67E-08;// Wm^-2K^-4    Stefan Boltzmann constant
+                        IssmDouble Gamma=180.;    // m^-1         wind speed attenuation        234
+                
+                        // Calculate effective albedo
+                        IssmDouble Alphaeff,Alphaeff_cleanice;
+                        IssmDouble mean_ela,delta=2000;
+                        
+                        // compute cleanice albedo based on previous SMB distribution
+                        //if(step==1){
+                                mean_ela=3000; //FIXME
+                        //}else{
+                        //        mean_ela=FindParam(SmbMeanElaEnum);
+                        //}
+                        Alphaeff_cleanice=icealbedo+(snowalbedo-icealbedo)*(1+tanh(PI*(surface[iv]-mean_ela)/delta))/2;
+                        Alphaeff=Alphaeff_cleanice; // will be updated below
+
+                        
+                        accu[iv]=0.;
+                        for (int iday=0;iday<365;iday++) {
+
+                                Tm=temperature[iv*365+iday]-st*rlaps;//+t_ampl[iv];//+(rand()%10-5)/5;
+                                In=lw[iv*365+iday]-st*dlgrad+lw_ampl[iv];
+                                Q=sw[iv*365+iday]+st*dsgrad+sw_ampl[iv];
+                                Humidity=humidity[iv*365+iday]-st*humiditygrad+humidity_ampl[iv];
+                                Um=wind[iv*365+iday]-st*windspeedgrad+wind_ampl[iv];
+                                P=(qlaps*st*precip[iv*365+iday]+precip[iv*365+iday]+p_ampl[iv])*sconv/365.; // convert precip from w.e. -> i.e
+
+                                /*Partition of precip in solid and liquid parts */
+                                IssmDouble temp_plus=1; 
+                                IssmDouble temp_minus=-1.;
+                                IssmDouble frac_solid;
+                                if(Tm>=temp_plus){
+                                        frac_solid=0;
+                                }else if(Tm<=temp_minus){
+                                        frac_solid=1;
+                                }else{
+                                        frac_solid=1*(1-cos(PI*(temp_plus-Tm)/(temp_plus-temp_minus)))/2;
+                                }
+
+                                /*Get yearly temperatures and accumulation */
+                                yearlytemperatures[iv]=yearlytemperatures[iv]+((temperature[iv*365+iday]-rlaps*st+Tf+t_ampl[iv]))/365; // Has to be in Kelvin
+                                accu[iv]=accu[iv]+P*frac_solid;
+                                if(yearlytemperatures[iv]>Tf) yearlytemperatures[iv]=Tf;
+
+                                CleanIceDailyMelt=((In-(Eps*Sigma*(Tf*Tf*Tf*Tf))+
+                                        Q*(1.-Alphaeff)+
+                                        (Rhoaa*Ca*Ustar*Ustar)/(Um-Ustar*(2.-(exp(Gamma*Xr))))*Tm)/((1-PhiD)*rho_ice*Lm)/(1.+
+                                        ((Rhoaa*Ca*Ustar*Ustar)/(Um-Ustar*(2.-(exp(Gamma*Xr))))+4.*Eps*Sigma*(Tf*Tf*Tf))/
+                                        K*debris)-(Lv*Ustar*Ustar*((Humidity))*(exp(-Gamma*Xr)))/((1.-PhiD)*
+                                        rho_ice*Lm*Ustar)/(((Um
+                                        -2.*Ustar)*exp(-Gamma*Xr))/Ustar+exp(Gamma*debris)));
+                                if(CleanIceDailyMelt<0) CleanIceDailyMelt=0.;
+                                DailyMelt=CleanIceDailyMelt;
+
+                                if(ismb==1){
+
+                                        //snowheight[iv]=snowheight[iv]+(P-CleanIceDailyMelt*yts/365);
+                                        IssmDouble sn_prev;
+                                        sn_prev=snowheight[iv];
+                                        snowheight[iv]=sn_prev+(-CleanIceDailyMelt*yts/365);//P
+                                        
+                                        if(snowheight[iv]<=0) snowheight[iv]=0.;
+                                        if(snowheight[iv]<=0.0001){
+                                                p=debris_here*PhiD/(2*0.2*0.01); //Eq. 51 from Evatt et al 2015 without source term g*t
+                                                if(p>1.) p=1.;
+                                                if(p>=0.999){
+                                                        Alphaeff=debrisalbedo;
+                                                } else {
+                                                        Alphaeff=Alphaeff_cleanice+p*(debrisalbedo-Alphaeff_cleanice);
+                                                }
+                                                debris=debris_here;
+                                                DailyMelt=((In-(Eps*Sigma*(Tf*Tf*Tf*Tf))+
+                                                        Q*(1.-Alphaeff)+
+                                                        (Rhoaa*Ca*Ustar*Ustar)/(Um-Ustar*(2.-(exp(Gamma*Xr))))*Tm)/((1-PhiD)*rho_ice*Lm)/(1.+
+                                                        ((Rhoaa*Ca*Ustar*Ustar)/(Um-Ustar*(2.-(exp(Gamma*Xr))))+4.*Eps*Sigma*(Tf*Tf*Tf))/
+                                                        K*debris)-(Lv*Ustar*Ustar*((Humidity))*(exp(-Gamma*Xr)))/((1.-PhiD)*
+                                                        rho_ice*Lm*Ustar)/(((Um-2.*Ustar)*exp(-Gamma*Xr))/Ustar+exp(Gamma*debris)));
+                                                if(DailyMelt<0) DailyMelt=0.;
+                                                MeanSummerAlbedo=MeanSummerAlbedo+Alphaeff;
+                                                CumDailySummerMelt=CumDailySummerMelt+DailyMelt/365;
+                                        }
+                                }
+                                CumDailyMelt=CumDailyMelt+DailyMelt/365;
+                        }
+                        MeanAlbedo=MeanAlbedo+Alphaeff;
+                        if(ismb==0) CleanIceMelt=CumDailyMelt;
+                }
+
+                if(iscryokarst){
+                        if(taud>=taud_plus){
+                                lambda=0;
+                        }else if(taud>=taud_minus & taud<taud_plus){
+                                lambda=0.1*(1-cos(PI*(taud_plus-taud)/(taud_plus-taud_minus)))/2;
+                        }else if(taud<taud_minus){
+                                lambda=0.1;
+                        }
+                }
+
+                // update values
+                melt[iv]=CumDailyMelt; // is already in m/s
+                accu[iv]=accu[iv]/yts;
+                if(isAnderson){
+                        smb[iv]=(accu[iv]-melt[iv])*D0/(D0+debris_here);
+                        if(iscryokarst){ 
+                                smb[iv]=lambda*(accu[iv]-melt[iv])+(1-lambda)*(accu[iv]-melt[iv])*D0/(D0+debris_here);
+                        }else{
+                                smb[iv]=(accu[iv]-melt[iv])*D0/(D0+debris_here);
+                        }
+                }else{
+                        if(iscryokarst){ 
+                                smb[iv]=lambda*(accu[iv]-CleanIceMelt)+(1-lambda)*(accu[iv]-melt[iv]);
+                        }else{
+                                smb[iv]=(accu[iv]-melt[iv]);
+                        }
+                }
+                albedo[iv]=MeanAlbedo;
+                summeralbedo[iv]=MeanSummerAlbedo;
+                summermelt[iv]=CumDailySummerMelt;
+        }
+
+        this->AddInput(SmbMassBalanceEnum,smb,P1Enum);
+        this->AddInput(SmbAccumulationEnum,accu,P1Enum);
+        this->AddInput(SmbMeltEnum,melt,P1Enum);
+        this->AddInput(SmbSummerMeltEnum,summermelt,P1Enum);
+        this->AddInput(SmbSnowheightEnum,snowheight,P1Enum);
+        this->AddInput(SmbAlbedoEnum,albedo,P1Enum);
+        this->AddInput(SmbSummerAlbedoEnum,summeralbedo,P1Enum);
+        this->AddInput(TemperaturePDDEnum,yearlytemperatures,P1Enum); // TemperaturePDD is wrong here, but don't want to create new Enum ...
+
+        /*clean-up*/
+        xDelete<IssmDouble>(temperature);
+        xDelete<IssmDouble>(precip);
+        xDelete<IssmDouble>(lw);
+        xDelete<IssmDouble>(sw);
+        xDelete<IssmDouble>(wind);
+        xDelete<IssmDouble>(humidity);
+        xDelete<IssmDouble>(smb);
+        xDelete<IssmDouble>(surface);
+        xDelete<IssmDouble>(melt);
+        xDelete<IssmDouble>(summermelt);
+        xDelete<IssmDouble>(albedo);
+        xDelete<IssmDouble>(summeralbedo);
+        xDelete<IssmDouble>(accu);
+        xDelete<IssmDouble>(yearlytemperatures);
+        xDelete<IssmDouble>(s0t);
+        xDelete<IssmDouble>(snowheight);
+        xDelete<IssmDouble>(debriscover);
+        xDelete<IssmDouble>(t_ampl);
+        xDelete<IssmDouble>(p_ampl);
+        xDelete<IssmDouble>(lw_ampl);
+        xDelete<IssmDouble>(sw_ampl);
+        xDelete<IssmDouble>(humidity_ampl);
+        xDelete<IssmDouble>(wind_ampl);
+        xDelete<IssmDouble>(slopex);
+        xDelete<IssmDouble>(slopey);
+        xDelete<IssmDouble>(icethickness);
+}
+/*}}}*/
+
+
+
+void       Element::ResultInterpolation(int* pinterpolation,int* pnodesperelement,int* parray_size, int output_enum){/*{{{*/
+
+	/*Some intputs need to be computed, even if they are already in inputs, they might not be up to date!*/
+	switch(output_enum){
+		case ViscousHeatingEnum: this->ViscousHeatingCreateInput(); break;
+		case StressMaxPrincipalEnum: this->StressMaxPrincipalCreateInput(); break;
+		case StressTensorxxEnum:
+		case StressTensorxyEnum:
+		case StressTensorxzEnum:
+		case StressTensoryyEnum:
+		case StressTensoryzEnum:
+		case StressTensorzzEnum: this->ComputeStressTensor(); break;
+		case StrainRatexxEnum:
+		case StrainRatexyEnum:
+		case StrainRatexzEnum:
+		case StrainRateyyEnum:
+		case StrainRateyzEnum:
+		case StrainRatezzEnum:
+		case StrainRateeffectiveEnum: this->ComputeStrainRate(); break;
+		case DeviatoricStressxxEnum:
+		case DeviatoricStressxyEnum:
+		case DeviatoricStressxzEnum:
+		case DeviatoricStressyyEnum:
+		case DeviatoricStressyzEnum:
+		case DeviatoricStresszzEnum:
+		case DeviatoricStress1Enum:
+		case DeviatoricStress2Enum:
+		case DeviatoricStresseffectiveEnum: this->ComputeDeviatoricStressTensor(); break;
+		case EsaStrainratexxEnum:
+		case EsaStrainratexyEnum:
+		case EsaStrainrateyyEnum:
+		case EsaRotationrateEnum: this->ComputeEsaStrainAndVorticity(); break;
+		case SigmaNNEnum: this->ComputeSigmaNN(); break;
+		case LambdaSEnum: this->ComputeLambdaS(); break;
+		case StressIntensityFactorEnum: this->StressIntensityFactor(); break;
+		case CalvingratexEnum:
+		case CalvingrateyEnum:
+		case CalvingCalvingrateEnum:
+												  this->StrainRateparallel();
+												  this->StrainRateperpendicular();
+												  int calvinglaw;
+												  this->FindParam(&calvinglaw,CalvingLawEnum);
+												  switch(calvinglaw){
+													  case DefaultCalvingEnum:
+														  //do nothing
+														  break;
+													  case CalvingLevermannEnum:
+														  this->CalvingRateLevermann();
+														  break;
+													  case CalvingPollardEnum:
+														  this->CalvingPollard();
+														  break;
+													  case CalvingVonmisesEnum:
+													  case CalvingDev2Enum:
+														  this->CalvingRateVonmises();
+														  break;
+													  case CalvingVonmisesADEnum:
+														  this->CalvingRateVonmisesAD();
+														  break;
+													  case CalvingCrevasseDepthEnum:
+														  this->CalvingCrevasseDepth();
+														  break;
+													  case CalvingParameterizationEnum:
+														  this->CalvingRateParameterization();
+														  break;
+													  case CalvingCalvingMIPEnum:
+														  this->CalvingRateCalvingMIP();
+														  break;
+													  case CalvingTestEnum:
+														  this->CalvingRateTest();
+														  break;
+													  default:
+														  _error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+												  }
+												  break;
+		case CalvingFluxLevelsetEnum: this->CalvingFluxLevelset(); break;
+		case CalvingMeltingFluxLevelsetEnum: this->CalvingMeltingFluxLevelset(); break;
+		case StrainRateparallelEnum: this->StrainRateparallel(); break;
+		case StrainRateperpendicularEnum: this->StrainRateperpendicular(); break;
+		case SurfaceCrevasseEnum: this->CalvingCrevasseDepth(); break;
+		case SigmaVMEnum: this->ComputeSigmaVM(); break;
+		case PartitioningEnum: this->inputs->SetInput(PartitioningEnum,this->lid,IssmComm::GetRank()); break;
+	}
+
+	/*If this input is not already in Inputs, maybe it needs to be computed?*/
+	switch(this->inputs->GetInputObjectEnum(output_enum)){
+		case TriaInputEnum:
+		case PentaInputEnum:
+		case ControlInputEnum:
+		case TransientInputEnum:{
+			Input* input2 = this->GetInput(output_enum);
+			if(!input2) _error_("input "<<EnumToStringx(output_enum)<<" not found in element");
+			*pinterpolation   = input2->GetResultInterpolation();
+			*pnodesperelement = input2->GetResultNumberOfNodes();
+			*parray_size      = input2->GetResultArraySize();
+			}
+			break;
+		case BoolInputEnum:
+			*pinterpolation   = P0Enum;
+			*pnodesperelement = 1;
+			*parray_size      = 1;
+			break;
+		case IntInputEnum:
+			*pinterpolation   = P0Enum;
+			*pnodesperelement = 1;
+			*parray_size      = 1;
+			break;
+		case ArrayInputEnum:{
+			int M;
+			this->inputs->GetArray(output_enum,this->lid,NULL,&M);
+			*pinterpolation   = P0ArrayEnum;
+			*pnodesperelement = 1;
+			*parray_size      = M;
+			}
+			break;
+		default:
+			_error_("Input type \""<<EnumToStringx(this->inputs->GetInputObjectEnum(output_enum))<<"\" not supported yet (While trying to return "<<EnumToStringx(output_enum)<<")");
+	}
+
+	/*Assign output pointer*/
+
+	return;
+}/*}}}*/
+void       Element::ResultToPatch(IssmDouble* values,int nodesperelement,int output_enum){/*{{{*/
+
+	/*Find input*/
+	Input* input=this->GetInput(output_enum);
+	if(!input) _error_("input "<<EnumToStringx(output_enum)<<" not found in element");
+
+	/*Cast to ElementInput*/
+	if(input->ObjectEnum()!=TriaInputEnum && input->ObjectEnum()!=PentaInputEnum){
+		_error_("Input "<<EnumToStringx(output_enum)<<" is not an ElementInput");
+	}
+	ElementInput* element_input = xDynamicCast<ElementInput*>(input);
+
+	/*Get Number of nodes and make sure that it is the same as the one provided*/
+	int numnodes = this->GetNumberOfNodes(element_input->GetInputInterpolationType());
+	_assert_(numnodes==nodesperelement);
+
+	/*Fill in arrays*/
+	for(int i=0;i<numnodes;i++) values[this->sid*numnodes + i] = element_input->element_values[i];
+
+} /*}}}*/
+void       Element::ResultToMatrix(IssmDouble* values,int ncols,int output_enum){/*{{{*/
+
+	IssmDouble* array = NULL;
+	int         m;
+	this->inputs->GetArray(output_enum,this->lid,&array,&m);
+	for(int i=0;i<m;i++) values[this->Sid()*ncols + i] = array[i];
+	xDelete<IssmDouble>(array);
+
+} /*}}}*/
+void       Element::ResultToVector(Vector<IssmDouble>* vector,int output_enum){/*{{{*/
+
+	IssmDouble values[MAXVERTICES];
+	int        connectivity[MAXVERTICES];
+	int        sidlist[MAXVERTICES];
+
+	switch(this->inputs->GetInputObjectEnum(output_enum)){
+		case TriaInputEnum:
+		case PentaInputEnum:
+		case ControlInputEnum:
+		case TransientInputEnum:{
+
+			Input* input2 = this->GetInput(output_enum);
+			if(!input2) _error_("input "<<EnumToStringx(output_enum)<<" not found in element");
+
+			switch(input2->GetResultInterpolation()){
+				case P0Enum:{
+					IssmDouble  value;
+					bool        bvalue;
+					Gauss* gauss = this->NewGauss();
+					input2->GetInputValue(&value,gauss);
+					delete gauss;
+					vector->SetValue(this->Sid(),value,INS_VAL);
+					break;
+					}
+				case P1Enum:{
+					const int NUM_VERTICES = this->GetNumberOfVertices();
+
+					this->GetVerticesSidList(&sidlist[0]);
+					this->GetVerticesConnectivityList(&connectivity[0]);
+					this->GetInputListOnVertices(&values[0],output_enum);
+					for(int i=0;i<NUM_VERTICES;i++) values[i] = values[i]/reCast<IssmDouble>(connectivity[i]);
+					vector->SetValues(NUM_VERTICES,sidlist,values,ADD_VAL);
+					break;
+					}
+				default:
+					_error_("interpolation "<<EnumToStringx(input2->GetResultInterpolation())<<" not supported yet");
+				}
+			}
+			break;
+		case BoolInputEnum:
+			bool bvalue;
+			this->GetInputValue(&bvalue,output_enum);
+			vector->SetValue(this->Sid(),reCast<IssmDouble>(bvalue),INS_VAL);
+			break;
+		case IntInputEnum:
+			int ivalue;
+			this->GetInputValue(&ivalue,output_enum);
+			vector->SetValue(this->Sid(),reCast<IssmDouble>(ivalue),INS_VAL);
+			break;
+		default:
+			_error_("Input type \""<<EnumToStringx(this->inputs->GetInputObjectEnum(output_enum))<<"\" not supported yet");
+	}
+
+} /*}}}*/
+void       Element::RignotMeltParameterization(){/*{{{*/
+
+	const int numvertices = this->GetNumberOfVertices();
+   IssmDouble A, B, alpha, beta;
+   IssmDouble bed,qsg,qsg_basin,TF,yts;
+   int numbasins,basinid;
+   IssmDouble* basin_icefront_area=NULL;
+
+   /* Coefficients */
+   A    = 3e-4;
+   B    = 0.15;
+   alpha = 0.39;
+   beta = 1.18;
+
+   /*Get inputs*/
+	this->GetInputValue(&basinid,FrontalForcingsBasinIdEnum);
+	Input* bed_input = this->GetInput(BedEnum);                     _assert_(bed_input);
+   Input* qsg_input = this->GetInput(FrontalForcingsSubglacialDischargeEnum);     _assert_(qsg_input);
+   Input* TF_input  = this->GetInput(ThermalForcingEnum);          _assert_(TF_input);
+
+	this->FindParam(&yts, ConstantsYtsEnum);
+   this->parameters->FindParam(&numbasins,FrontalForcingsNumberofBasinsEnum);
+   this->parameters->FindParam(&basin_icefront_area,&numbasins,FrontalForcingsBasinIcefrontAreaEnum);
+   IssmDouble meltrates[numvertices];  
+
+   /* Start looping on the number of vertices: */
+	Gauss* gauss=this->NewGauss();
+   for(int iv=0;iv<numvertices;iv++){
+		gauss->GaussVertex(iv);
+
+      /* Get variables */
+      bed_input->GetInputValue(&bed,gauss);
+      qsg_input->GetInputValue(&qsg,gauss);
+		TF_input->GetInputValue(&TF,gauss);
+
+      if(basin_icefront_area[basinid]==0.) meltrates[iv]=0.;
+      else{
+         /* change the unit of qsg (m^3/d -> m/d) with ice front area */
+         qsg_basin=qsg/basin_icefront_area[basinid];
+
+         /* calculate melt rates */
+         meltrates[iv]=((A*max(-bed,0.)*pow(max(qsg_basin,0.),alpha)+B)*pow(max(TF,0.),beta))/86400; //[m/s]
+		}
+
+      if(xIsNan<IssmDouble>(meltrates[iv])) _error_("NaN found in vector");
+      if(xIsInf<IssmDouble>(meltrates[iv])) _error_("Inf found in vector");
+   }
+
+   /*Add input*/
+   this->AddInput(CalvingMeltingrateEnum,&meltrates[0],P1Enum);
+
+   /*Cleanup and return*/
+   delete gauss;
+	xDelete<IssmDouble>(basin_icefront_area);
+}
+/*}}}*/
+void       Element::SetBoolInput(Inputs* inputs,int enum_in,bool value){/*{{{*/
+
+	_assert_(inputs);
+	inputs->SetInput(enum_in,this->lid,value);
+
+}
+/*}}}*/
+void       Element::SetIntInput(Inputs* inputs,int enum_in,int value){/*{{{*/
+
+	_assert_(inputs);
+	inputs->SetInput(enum_in,this->lid,value);
+
+}
+/*}}}*/
+void       Element::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum, int analysis_type){/*{{{*/
+
+	/*Intermediaries*/
+	const int numnodes = this->GetNumberOfNodes();
+	/*Output */
+	int d_nz = 0;
+	int o_nz = 0;
+
+	/*Loop over all nodes*/
+	for(int i=0;i<numnodes;i++){
+		int nodelid = this->nodes[i]->Lid();
+		if(!flags[nodelid]){
+			/*flag current node so that no other element processes it*/
+			flags[nodelid]=true;
+
+			flagsindices[flagsindices_counter[0]]=nodelid;
+			flagsindices_counter[0]++;
+
+			/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
+			switch(set2_enum){
+				case FsetEnum:
+					if(nodes[i]->FSize()){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case GsetEnum:
+					if(nodes[i]->gsize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case SsetEnum:
+					if(nodes[i]->SSize()){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				default: _error_("not supported");
+			}
+		}
+	}
+
+	/*Special case: 2d/3d coupling, the node of this element might be connected
+	 *to the basal element*/
+	int approximation,numlayers;
+	if(analysis_type==StressbalanceAnalysisEnum){
+		this->GetInputValue(&approximation,ApproximationEnum);
+		if(approximation==SSAHOApproximationEnum || approximation==SSAFSApproximationEnum){
+			parameters->FindParam(&numlayers,MeshNumberoflayersEnum);
+			o_nz += numlayers*3;
+			d_nz += numlayers*3;
+		}
+	}
+
+	/*Assign output pointers: */
+	*pd_nz=d_nz;
+	*po_nz=o_nz;
+}
+/*}}}*/
+#ifdef _HAVE_SEMIC_
+void       Element::SmbSemic(){/*{{{*/
+
+	/*only compute SMB at the surface: */
+	if (!IsOnSurface()) return;
+
+	const int NUM_VERTICES 					= this->GetNumberOfVertices();
+	const int NUM_VERTICES_DAYS_PER_YEAR 	= NUM_VERTICES * 365;
+
+	IssmDouble* s=xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble* s0gcm=xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble* st=xNew<IssmDouble>(NUM_VERTICES);
+
+	// daily forcing inputs
+	IssmDouble* dailyrainfall=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+	IssmDouble* dailysnowfall=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+	IssmDouble* dailydlradiation=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+	IssmDouble* dailydsradiation=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+	IssmDouble* dailywindspeed=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+	IssmDouble* dailypressure=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+	IssmDouble* dailyairdensity=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+	IssmDouble* dailyairhumidity=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+	IssmDouble* dailytemperature=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+	// daily outputs
+	IssmDouble* tsurf_out=xNew<IssmDouble>(NUM_VERTICES); memset(tsurf_out, 0., NUM_VERTICES*sizeof(IssmDouble));
+	IssmDouble* smb_out=xNew<IssmDouble>(NUM_VERTICES); memset(smb_out, 0., NUM_VERTICES*sizeof(IssmDouble));
+	IssmDouble* saccu_out=xNew<IssmDouble>(NUM_VERTICES); memset(saccu_out, 0., NUM_VERTICES*sizeof(IssmDouble));
+	IssmDouble* smelt_out=xNew<IssmDouble>(NUM_VERTICES); memset(smelt_out, 0., NUM_VERTICES*sizeof(IssmDouble));
+
+	IssmDouble rho_water,rho_ice,desfac,rlaps,rdl;
+	IssmDouble time,yts,time_yr;
+
+	/* Get time: */
+	this->parameters->FindParam(&time,TimeEnum);
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+	time_yr=floor(time/yts)*yts;
+
+	/*Get material parameters :*/
+	rho_water=this->FindParam(MaterialsRhoSeawaterEnum);
+	rho_ice=this->FindParam(MaterialsRhoIceEnum);
+	desfac=this->FindParam(SmbDesfacEnum);
+	rlaps=this->FindParam(SmbRlapsEnum);
+	rdl=this->FindParam(SmbRdlEnum);
+
+	/* Recover info at the vertices: */
+	GetInputListOnVertices(&s[0],SurfaceEnum);
+	GetInputListOnVertices(&s0gcm[0],SmbS0gcmEnum);
+
+	/* loop over vertices and days */ //FIXME account for leap years (365 -> 366)
+	Gauss* gauss=this->NewGauss();
+	for (int iday = 0; iday < 365; iday++){
+		/* Retrieve inputs: */
+		Input* dailysnowfall_input    = this->GetInput(SmbDailysnowfallEnum,time_yr+(iday+1)/365.*yts); _assert_(dailysnowfall_input);
+		Input* dailyrainfall_input    = this->GetInput(SmbDailyrainfallEnum,time_yr+(iday+1)/365.*yts); _assert_(dailyrainfall_input);
+		Input* dailydlradiation_input = this->GetInput(SmbDailydlradiationEnum,time_yr+(iday+1)/365.*yts); _assert_(dailydlradiation_input);
+		Input* dailydsradiation_input = this->GetInput(SmbDailydsradiationEnum,time_yr+(iday+1)/365.*yts); _assert_(dailydsradiation_input);
+		Input* dailywindspeed_input   = this->GetInput(SmbDailywindspeedEnum,time_yr+(iday+1)/365.*yts); _assert_(dailywindspeed_input);
+		Input* dailypressure_input    = this->GetInput(SmbDailypressureEnum,time_yr+(iday+1)/365.*yts); _assert_(dailypressure_input);
+		Input* dailyairdensity_input  = this->GetInput(SmbDailyairdensityEnum,time_yr+(iday+1)/365.*yts); _assert_(dailyairdensity_input);
+		Input* dailyairhumidity_input = this->GetInput(SmbDailyairhumidityEnum,time_yr+(iday+1)/365.*yts); _assert_(dailyairhumidity_input);
+		Input* dailytemperature_input = this->GetInput(SmbDailytemperatureEnum,time_yr+(iday+1)/365.*yts); _assert_(dailytemperature_input);
+
+		for(int iv=0;iv<NUM_VERTICES;iv++){
+			gauss->GaussVertex(iv);
+			/* get forcing */
+			dailyrainfall_input->GetInputValue(&dailyrainfall[iv*365+iday],gauss);
+			dailysnowfall_input->GetInputValue(&dailysnowfall[iv*365+iday],gauss);
+			dailydlradiation_input->GetInputValue(&dailydlradiation[iv*365+iday],gauss);
+			dailydsradiation_input->GetInputValue(&dailydsradiation[iv*365+iday],gauss);
+			dailywindspeed_input->GetInputValue(&dailywindspeed[iv*365+iday],gauss);
+			dailypressure_input->GetInputValue(&dailypressure[iv*365+iday],gauss);
+			dailyairdensity_input->GetInputValue(&dailyairdensity[iv*365+iday],gauss);
+			dailyairhumidity_input->GetInputValue(&dailyairhumidity[iv*365+iday],gauss);
+			dailytemperature_input->GetInputValue(&dailytemperature[iv*365+iday],gauss);
+
+			/* Surface temperature correction */
+			st[iv]=(s[iv]-s0gcm[iv])/1000.;
+			dailytemperature[iv*365+iday]=dailytemperature[iv*365+iday]-rlaps *st[iv];
+
+			/* Precipitation correction (Vizcaino et al. 2010) */
+			if (s0gcm[iv] < 2000.0) {
+				dailysnowfall[iv*365+iday] = dailysnowfall[iv*365+iday]*exp(desfac*(max(s[iv],2000.0)-2000.0));
+				dailyrainfall[iv*365+iday] = dailyrainfall[iv*365+iday]*exp(desfac*(max(s[iv],2000.0)-2000.0));
+			}else{
+				dailysnowfall[iv*365+iday] = dailysnowfall[iv*365+iday]*exp(desfac*(max(s[iv],2000.0)-s0gcm[iv]));
+				dailyrainfall[iv*365+iday] = dailyrainfall[iv*365+iday]*exp(desfac*(max(s[iv],2000.0)-s0gcm[iv]));
+			}
+
+			/* downward longwave radiation correction (Marty et al. 2002) */
+			st[iv]=(s[iv]-s0gcm[iv])/1000.;
+			dailydlradiation[iv*365+iday]=dailydlradiation[iv*365+iday]+rdl*st[iv];
+		}
+	}
+
+	for (int iv = 0; iv<NUM_VERTICES; iv++){
+		/* call semic */
+		run_semic_(&dailysnowfall[iv*365], &dailyrainfall[iv*365], &dailydsradiation[iv*365], &dailydlradiation[iv*365],
+					&dailywindspeed[iv*365], &dailypressure[iv*365], &dailyairdensity[iv*365], &dailyairhumidity[iv*365], &dailytemperature[iv*365],
+					&tsurf_out[iv], &smb_out[iv], &saccu_out[iv], &smelt_out[iv]);
+	}
+
+	switch(this->ObjectEnum()){
+		case TriaEnum:
+			this->AddInput(TemperatureSEMICEnum,&tsurf_out[0],P1Enum); // TODO add TemperatureSEMICEnum to EnumDefinitions
+			this->AddInput(SmbMassBalanceEnum,&smb_out[0],P1Enum);
+			this->AddInput(SmbAccumulationEnum,&saccu_out[0],P1Enum);
+			this->AddInput(SmbMeltEnum,&smelt_out[0],P1Enum);
+			break;
+		case PentaEnum:
+			// TODO
+			break;
+		case TetraEnum:
+			// TODO
+			break;
+		default: _error_("Not implemented yet");
+	}
+
+	/*clean-up*/
+	delete gauss;
+	xDelete<IssmDouble>(dailysnowfall);
+	xDelete<IssmDouble>(dailyrainfall);
+	xDelete<IssmDouble>(dailydlradiation);
+	xDelete<IssmDouble>(dailydsradiation);
+	xDelete<IssmDouble>(dailywindspeed);
+	xDelete<IssmDouble>(dailypressure);
+	xDelete<IssmDouble>(dailyairdensity);
+	xDelete<IssmDouble>(dailyairhumidity);
+	xDelete<IssmDouble>(dailypressure);
+	xDelete<IssmDouble>(dailytemperature);
+	xDelete<IssmDouble>(smb_out);
+	xDelete<IssmDouble>(smelt_out);
+	xDelete<IssmDouble>(saccu_out);
+	xDelete<IssmDouble>(tsurf_out);
+	xDelete<IssmDouble>(s);
+	xDelete<IssmDouble>(st);
+	xDelete<IssmDouble>(s0gcm);
+}
+/*}}}*/
+void       Element::SmbSemicTransient(){/*{{{*/
+
+	bool isverbose=VerboseSmb();
+	if(isverbose && this->Sid()==0){
+		_printf0_("smb core: initialize.\n");
+	}
+	/*only compute SMB at the surface: */
+	if (!IsOnSurface()) return;
+
+	const int NUM_VERTICES 					= this->GetNumberOfVertices();
+
+	// daily forcing inputs
+	IssmDouble* dailyrainfall   =xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble* dailysnowfall   =xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble* dailydlradiation=xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble* dailydsradiation=xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble* dailywindspeed  =xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble* dailypressure   =xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble* dailyairdensity =xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble* dailyairhumidity=xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble* dailytemperature=xNew<IssmDouble>(NUM_VERTICES);
+
+	// inputs: geometry
+	IssmDouble* s=xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble* s0gcm=xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble* st=xNew<IssmDouble>(NUM_VERTICES);
+
+	// inputs
+	IssmDouble* tsurf_in        =xNew<IssmDouble>(NUM_VERTICES); 
+	IssmDouble* mask_in         =xNew<IssmDouble>(NUM_VERTICES); 
+	IssmDouble* Tamp_in         =xNew<IssmDouble>(NUM_VERTICES); 
+	IssmDouble* albedo_in       =xNew<IssmDouble>(NUM_VERTICES); 
+	IssmDouble* albedo_snow_in  =xNew<IssmDouble>(NUM_VERTICES); 
+	IssmDouble* hice_in         =xNew<IssmDouble>(NUM_VERTICES); 
+	IssmDouble* hsnow_in        =xNew<IssmDouble>(NUM_VERTICES); 
+	IssmDouble* qmr_in          =xNew<IssmDouble>(NUM_VERTICES); 
+
+	// outputs
+	IssmDouble* tsurf_out  =xNew<IssmDouble>(NUM_VERTICES); memset(tsurf_out, 0., NUM_VERTICES*sizeof(IssmDouble));
+	IssmDouble* smb_out    =xNew<IssmDouble>(NUM_VERTICES); memset(smb_out, 0., NUM_VERTICES*sizeof(IssmDouble));
+	IssmDouble* smbi_out   =xNew<IssmDouble>(NUM_VERTICES); memset(smb_out, 0., NUM_VERTICES*sizeof(IssmDouble));
+	IssmDouble* smbs_out   =xNew<IssmDouble>(NUM_VERTICES); memset(smb_out, 0., NUM_VERTICES*sizeof(IssmDouble));
+	IssmDouble* saccu_out  =xNew<IssmDouble>(NUM_VERTICES); memset(saccu_out, 0., NUM_VERTICES*sizeof(IssmDouble));
+	IssmDouble* smelt_out  =xNew<IssmDouble>(NUM_VERTICES); memset(smelt_out, 0., NUM_VERTICES*sizeof(IssmDouble));
+	IssmDouble* refr_out  =xNew<IssmDouble>(NUM_VERTICES); memset(refr_out, 0., NUM_VERTICES*sizeof(IssmDouble));
+	IssmDouble* albedo_out =xNew<IssmDouble>(NUM_VERTICES); memset(albedo_out, 0., NUM_VERTICES*sizeof(IssmDouble));
+	IssmDouble* albedo_snow_out =xNew<IssmDouble>(NUM_VERTICES); memset(albedo_snow_out, 0., NUM_VERTICES*sizeof(IssmDouble));
+	IssmDouble* hsnow_out   =xNew<IssmDouble>(NUM_VERTICES); memset(hsnow_out, 0., NUM_VERTICES*sizeof(IssmDouble));
+	IssmDouble* hice_out    =xNew<IssmDouble>(NUM_VERTICES); memset(hice_out, 0., NUM_VERTICES*sizeof(IssmDouble));
+	IssmDouble* qmr_out     =xNew<IssmDouble>(NUM_VERTICES); memset(qmr_out, 0., NUM_VERTICES*sizeof(IssmDouble)); 
+
+	IssmDouble rho_water,rho_ice,desfac,desfacElev,rlaps,rdl;
+	IssmDouble alb_smax, alb_smin, albi, albl;
+	IssmDouble hcrit, rcrit; // parameters for ? and refreezing.
+	int alb_scheme;
+	// albedo parameters - slatter
+	IssmDouble tmin, tmax;
+	// albedo parameters - isba
+	IssmDouble mcrit, tau_a, tau_f, wcrit;
+	// albedo parameters - alex
+	IssmDouble tmid, afac;
+
+	IssmDouble tstart, time,yts,time_yr,dt;
+
+	/* Get time: */
+	this->parameters->FindParam(&time,TimeEnum);
+	this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+	this->parameters->FindParam(&tstart,TimesteppingStartTimeEnum);
+	time_yr=floor(time/yts)*yts;
+	//dt = dt * yts;
+
+	/*Get material parameters :*/
+	rho_water=this->FindParam(MaterialsRhoFreshwaterEnum);
+	rho_ice=this->FindParam(MaterialsRhoIceEnum);
+	desfac=this->FindParam(SmbDesfacEnum);
+	desfacElev=this->FindParam(SmbDesfacElevEnum);
+	rlaps=this->FindParam(SmbRlapsEnum);
+	rdl=this->FindParam(SmbRdlEnum);
+
+	this->FindParam(&alb_scheme,SmbAlbedoSchemeEnum);
+	this->FindParam(&hcrit,SmbSemicHcritEnum);
+	this->FindParam(&rcrit,SmbSemicRcritEnum);
+	alb_smax=this->FindParam(SmbAlbedoSnowMaxEnum);
+	alb_smin=this->FindParam(SmbAlbedoSnowMinEnum);
+	albi=this->FindParam(SmbAlbedoIceEnum);
+	albl=this->FindParam(SmbAlbedoLandEnum);
+
+	// albedo parameters
+	this->FindParam(&tmid,SmbSemicTmidEnum);
+	this->FindParam(&tmin,SmbSemicTminEnum);
+	this->FindParam(&tmax,SmbSemicTmaxEnum);
+	this->FindParam(&mcrit,SmbSemicMcritEnum);
+	this->FindParam(&wcrit,SmbSemicWcritEnum);
+	this->FindParam(&tau_a,SmbSemicTauAEnum);
+	this->FindParam(&tau_f,SmbSemicTauFEnum);
+	this->FindParam(&afac,SmbSemicAfacEnum);
+
+	/* Recover info at the vertices: */
+	GetInputListOnVertices(&s[0],SurfaceEnum);
+	GetInputListOnVertices(&s0gcm[0],SmbS0gcmEnum);
+
+	if(isverbose && this->Sid()==0){
+		_printf0_("smb core: allocate inputs.\n");
+		_printf0_("smb core: time_yr  : " << time_yr/yts <<"\n");
+		_printf0_("smb core: time     : " << time <<"\n");
+		_printf0_("smb core: dt       : " << dt <<"\n");
+	}
+	/* loop over vertices and days */
+	Gauss* gauss=this->NewGauss();
+	/* Retrieve inputs: */
+	Input* dailysnowfall_input    = this->GetInput(SmbDailysnowfallEnum,time); _assert_(dailysnowfall_input);
+	Input* dailyrainfall_input    = this->GetInput(SmbDailyrainfallEnum,time); _assert_(dailyrainfall_input);
+	Input* dailydlradiation_input = this->GetInput(SmbDailydlradiationEnum,time); _assert_(dailydlradiation_input);
+	Input* dailydsradiation_input = this->GetInput(SmbDailydsradiationEnum,time); _assert_(dailydsradiation_input);
+	Input* dailywindspeed_input   = this->GetInput(SmbDailywindspeedEnum,time); _assert_(dailywindspeed_input);
+	Input* dailypressure_input    = this->GetInput(SmbDailypressureEnum,time); _assert_(dailypressure_input);
+	Input* dailyairdensity_input  = this->GetInput(SmbDailyairdensityEnum,time); _assert_(dailyairdensity_input);
+	Input* dailyairhumidity_input = this->GetInput(SmbDailyairhumidityEnum,time); _assert_(dailyairhumidity_input);
+	Input* dailytemperature_input = this->GetInput(SmbDailytemperatureEnum,time); _assert_(dailytemperature_input);
+
+	/*temporal Enum depending on time*/
+	int enum_temp       =TemperatureSEMICEnum;
+	int enum_hice       =SmbHIceEnum;
+	int enum_hsnow      =SmbHSnowEnum;
+	int enum_albedo     =SmbAlbedoEnum;
+	int enum_albedo_snow=SmbAlbedoSnowEnum;
+	int enum_qmr        =SmbSemicQmrEnum;
+	if (tstart+dt == time) {
+		/* Load inital value at first time step*/
+		enum_temp=TemperatureEnum;
+		enum_hice=SmbHIceInitEnum;
+		enum_hsnow=SmbHSnowInitEnum;
+		enum_albedo=SmbAlbedoInitEnum;
+		enum_albedo_snow=SmbAlbedoSnowInitEnum;
+		enum_qmr        =SmbSemicQmrInitEnum;
+	} 
+	//if(isverbose && this->Sid()==0)_printf0_("smb core: assign temp.\n");
+	Input* tsurf_input       = this->GetInput(enum_temp); _assert_(tsurf_in);
+	//if(isverbose && this->Sid()==0)_printf0_("smb core: assign mask.\n");
+	Input* mask_input        = this->GetInput(SmbMaskEnum); _assert_(mask_input);
+	//if(isverbose && this->Sid()==0)_printf0_("smb core: assign Tamp.\n");
+	Input* Tamp_input        = this->GetInput(SmbTampEnum); _assert_(Tamp_input);
+	//if(isverbose && this->Sid()==0)_printf0_("smb core: assign albedo.\n");
+	Input* albedo_input      = this->GetInput(enum_albedo); _assert_(albedo_input);
+	Input* albedo_snow_input = this->GetInput(enum_albedo_snow); _assert_(albedo_snow_input);
+	Input* hice_input        = this->GetInput(enum_hice); _assert_(hice_input);
+	Input* hsnow_input       = this->GetInput(enum_hsnow); _assert_(hsnow_input);
+	Input* qmr_input         = this->GetInput(enum_qmr); _assert_(qmr_input);
+
+	if(isverbose && this->Sid()==0)_printf0_("smb core: assign inputs done....\n");
+	for(int iv=0;iv<NUM_VERTICES;iv++){
+		gauss->GaussVertex(iv);
+		/* get forcing */
+		dailyrainfall_input->GetInputValue(&dailyrainfall[iv],gauss);
+		dailysnowfall_input->GetInputValue(&dailysnowfall[iv],gauss);
+		dailydlradiation_input->GetInputValue(&dailydlradiation[iv],gauss);
+		dailydsradiation_input->GetInputValue(&dailydsradiation[iv],gauss);
+		dailywindspeed_input->GetInputValue(&dailywindspeed[iv],gauss);
+		dailypressure_input->GetInputValue(&dailypressure[iv],gauss);
+		dailyairdensity_input->GetInputValue(&dailyairdensity[iv],gauss);
+		dailyairhumidity_input->GetInputValue(&dailyairhumidity[iv],gauss);
+		dailytemperature_input->GetInputValue(&dailytemperature[iv],gauss);
+		tsurf_input->GetInputValue(&tsurf_in[iv],gauss);
+
+		/* Get Albedo information */
+		albedo_input->GetInputValue(&albedo_in[iv],gauss);
+		albedo_snow_input->GetInputValue(&albedo_snow_in[iv],gauss);
+		mask_input->GetInputValue(&mask_in[iv],gauss);
+		Tamp_input->GetInputValue(&Tamp_in[iv],gauss);
+
+		hsnow_input->GetInputValue(&hsnow_in[iv],gauss);
+		hice_input->GetInputValue(&hice_in[iv],gauss);
+		qmr_input->GetInputValue(&qmr_in[iv],gauss);
+
+		/* Surface temperature correction */
+		st[iv]=(s[iv]-s0gcm[iv])/1000.;
+		dailytemperature[iv]=dailytemperature[iv]-rlaps *st[iv];
+
+		/* Precipitation correction (Vizcaino et al. 2010) */
+		if (s0gcm[iv] < desfacElev) {
+			dailysnowfall[iv] = dailysnowfall[iv]*exp(desfac*(max(s[iv],desfacElev)-desfacElev));
+			dailyrainfall[iv] = dailyrainfall[iv]*exp(desfac*(max(s[iv],desfacElev)-desfacElev));
+		}else{
+			dailysnowfall[iv] = dailysnowfall[iv]*exp(desfac*(max(s[iv],desfacElev)-s0gcm[iv]));
+			dailyrainfall[iv] = dailyrainfall[iv]*exp(desfac*(max(s[iv],desfacElev)-s0gcm[iv]));
+		}
+
+		/* downward longwave radiation correction (Marty et al. 2002) */
+		st[iv]=(s[iv]-s0gcm[iv])/1000.;
+		dailydlradiation[iv]=dailydlradiation[iv]+rdl*st[iv];
+	}
+	if(isverbose && this->Sid()==0){
+		_printf0_("smb core: assign tsurf_in        :" << tsurf_in[0] << "\n");
+		_printf0_("smb core: assign dailytemperature:" << dailytemperature[0] << "\n");
+		_printf0_("smb core: assign hsnow           :" << hsnow_in[0] << "\n");
+		_printf0_("smb core: assign hice            :" << hice_in[0] << "\n");
+		_printf0_("smb core: assign mask            :" << mask_in[0] << "\n");
+		_printf0_("smb core: assign Tamp            :" << Tamp_in[0] << "\n");
+		_printf0_("smb core: assign albedo          :" << albedo_in[0] << "\n");
+		_printf0_("smb core: assign albedo_snow     :" << albedo_snow_in[0] << "\n");
+		_printf0_("smb core: assign albedo_scheme   :" << alb_scheme  << "\n");
+		_printf0_("smb core: assign qmr             :" << qmr_in[0]  << "\n");
+	}
+
+	if(isverbose && this->Sid()==0)_printf0_("smb core: call run_semic_transient module.\n");
+	/* call semic */
+	int nx=NUM_VERTICES, ntime=1, nloop=1;
+	bool semic_verbose=false; //VerboseSmb();
+	run_semic_transient_(&nx, &ntime, &nloop,
+			dailysnowfall,  dailyrainfall, dailydsradiation, dailydlradiation,
+			dailywindspeed, dailypressure, dailyairdensity,  dailyairhumidity, dailytemperature, tsurf_in, qmr_in, 
+			&dt,
+			&hcrit, &rcrit, 
+			mask_in, hice_in, hsnow_in, 
+			albedo_in, albedo_snow_in,
+			&alb_scheme, &alb_smax, &alb_smin, &albi, &albl,
+			Tamp_in,
+			&tmin, &tmax, &tmid, &mcrit, &wcrit, &tau_a, &tau_f, &afac, &semic_verbose,
+			tsurf_out, smb_out, smbi_out, smbs_out, saccu_out, smelt_out, refr_out, albedo_out, albedo_snow_out, hsnow_out, hice_out, qmr_out);
+
+	for (int iv = 0; iv<NUM_VERTICES; iv++){
+		/* 
+		 unit conversion: water -> ice
+		 w.e. : water equivalenet.
+		 */
+		smb_out[iv]  = smb_out[iv]*yts;  // w.e. m/sec -> m/yr
+		smbi_out[iv] = smbi_out[iv]*rho_water/rho_ice; // w.e. m/sec -> ice m/yr
+		smbs_out[iv] = smbs_out[iv]*yts; // w.e. m/sec -> m/yr
+		saccu_out[iv] = saccu_out[iv]*yts; // w.e. m/sec -> m/yr
+		smelt_out[iv] = smelt_out[iv]*rho_water/rho_ice; // w.e. m/sec -> ice m/yr
+		refr_out[iv]  = refr_out[iv]*rho_water/rho_ice; // w.e. m/sec -> ice m/yr
+	}
+
+	if(isverbose && this->Sid()==0){
+		_printf0_("smb core: tsurf_out " << tsurf_out[0] << " " << tsurf_out[1] << " " << tsurf_out[2] << "\n");
+		_printf0_("smb core: hice_out  " << hice_out[0] << " " <<  hice_out[1] << " " << hice_out[2] << "\n");
+		_printf0_("smb core: hsnow_out " << hsnow_out[0] << "\n");
+		_printf0_("smb core: smb_ice   " << smbi_out[0]*yts << "\n");
+		_printf0_("smb core: smb_ice   " << albedo_out[0] <<" "<<albedo_out[1] << " " << albedo_out[2] << "\n");
+	}
+
+	switch(this->ObjectEnum()){
+		case TriaEnum:
+			this->AddInput(TemperatureSEMICEnum,  &tsurf_out[0],P1DGEnum);
+			// SMBout = SMB_ice + SMB_snow values.
+			//this->AddInput(SmbMassBalanceTotalEnum,&smb_out[0],P1DGEnum);
+			// water equivalent SMB ice to ice equivalent.
+			this->AddInput(SmbMassBalanceEnum,     &smbi_out[0],P1DGEnum);
+			this->AddInput(SmbMassBalanceIceEnum,  &smbi_out[0],P1DGEnum);
+			this->AddInput(SmbMassBalanceSnowEnum, &smbs_out[0],P1DGEnum);
+			this->AddInput(SmbMassBalanceSemicEnum,&smb_out[0],P1DGEnum);
+			//this->AddInput(SmbMassBalanceSnowEnum,&smbs_out[0],P1DGEnum);
+			// saccu - accumulation of snow.
+			this->AddInput(SmbAccumulationEnum,&saccu_out[0],P1DGEnum);
+			// smelt 
+			this->AddInput(SmbMeltEnum,        &smelt_out[0],P1DGEnum);
+			this->AddInput(SmbRefreezeEnum,    &refr_out[0],P1DGEnum);
+			this->AddInput(SmbAlbedoEnum,      &albedo_out[0],P1DGEnum);
+			this->AddInput(SmbAlbedoSnowEnum,  &albedo_snow_out[0],P1DGEnum);
+			this->AddInput(SmbHSnowEnum,       &hsnow_out[0],P1DGEnum);
+			this->AddInput(SmbHIceEnum,        &hice_out[0],P1DGEnum);
+			this->AddInput(SmbSemicQmrEnum,    &qmr_out[0],P1DGEnum);
+			break;
+		case PentaEnum:
+			// TODO
+			break;
+		case TetraEnum:
+			// TODO
+			break;
+		default: _error_("Not implemented yet");
+	}
+
+	/*clean-up {{{*/
+	delete gauss;
+	xDelete<IssmDouble>(dailysnowfall);
+	xDelete<IssmDouble>(dailyrainfall);
+	xDelete<IssmDouble>(dailydlradiation);
+	xDelete<IssmDouble>(dailydsradiation);
+	xDelete<IssmDouble>(dailywindspeed);
+	xDelete<IssmDouble>(dailypressure);
+	xDelete<IssmDouble>(dailyairdensity);
+	xDelete<IssmDouble>(dailyairhumidity);
+	xDelete<IssmDouble>(dailypressure);
+	xDelete<IssmDouble>(dailytemperature);
+
+	/*for outputs*/
+	xDelete<IssmDouble>(tsurf_out);
+	xDelete<IssmDouble>(smb_out);
+	xDelete<IssmDouble>(smbi_out);
+	xDelete<IssmDouble>(smbs_out);
+	xDelete<IssmDouble>(saccu_out);
+	xDelete<IssmDouble>(smelt_out);
+	xDelete<IssmDouble>(refr_out);
+	xDelete<IssmDouble>(albedo_out);
+	xDelete<IssmDouble>(albedo_snow_out);
+	xDelete<IssmDouble>(hsnow_out);
+	xDelete<IssmDouble>(hice_out);
+	xDelete<IssmDouble>(qmr_out);
+
+	/*for inputs*/
+	xDelete<IssmDouble>(hsnow_in);
+	xDelete<IssmDouble>(hice_in);
+	xDelete<IssmDouble>(mask_in);
+	xDelete<IssmDouble>(Tamp_in);
+	xDelete<IssmDouble>(albedo_in);
+	xDelete<IssmDouble>(albedo_snow_in);
+	xDelete<IssmDouble>(tsurf_in);
+	xDelete<IssmDouble>(qmr_in);
+
+	/* for inputs:geometry */
+	xDelete<IssmDouble>(s);
+	xDelete<IssmDouble>(st);
+	xDelete<IssmDouble>(s0gcm);
+	/*}}}*/
+}
+/*}}}*/
+#endif // _HAVE_SEMIC_
+int        Element::Sid(){/*{{{*/
+
+	return this->sid;
+
+}
+/*}}}*/
+void       Element::SmbGemb(IssmDouble timeinputs, int count){/*{{{*/
+
+	/*only compute SMB at the surface: */
+	if (!IsOnSurface()) return;
+
+	/*Intermediary variables: {{{*/
+	bool       isinitialized;
+	IssmDouble zTop=0.0;
+	IssmDouble dzTop=0.0;
+	IssmDouble zMax=0.0;
+	IssmDouble zMin=0.0;
+	IssmDouble zY=0.0;
+	IssmDouble dzMin=0.0;
+	IssmDouble Tmean=0.0;
+	IssmDouble Vmean=0.0;
+	IssmDouble C=0.0;
+	IssmDouble Tz,Vz=0.0;
+	IssmDouble yts;
+	IssmDouble Ta=0.0;
+	IssmDouble V=0.0;
+	IssmDouble dlw=0.0;
+	IssmDouble dsw=0.0;
+	IssmDouble dswdiff=0.0;
+	IssmDouble P=0.0;
+	IssmDouble eAir=0.0;
+	IssmDouble pAir=0.0;
+	IssmDouble teValue=1.0;
+	IssmDouble aValue=0.0;
+	IssmDouble dulwrfValue=0.0;
+	IssmDouble szaValue=0.0;
+	IssmDouble cotValue=0.0;
+	IssmDouble ccsnowValue=0.0;
+	IssmDouble cciceValue=0.0;
+	IssmDouble dt,time,smb_dt;
+	int        aIdx=0;
+	int        eIdx=0;
+	int        tcIdx=0;
+	int        denIdx=0;
+	int        dsnowIdx=0;
+	int        swIdx=0;
+	IssmDouble cldFrac,t0wet, t0dry, K;
+	IssmDouble lhf=0.0;
+	IssmDouble shf=0.0;
+	IssmDouble dayEC=0.0;
+	IssmDouble initMass=0.0;
+   IssmDouble sumR=0.0;
+	IssmDouble sumF=0.0;
+	IssmDouble sumM=0.0;
+	IssmDouble sumMsurf=0.0;
+	IssmDouble sumEC=0.0;
+	IssmDouble sumP=0.0;
+	IssmDouble sumRa=0.0;
+	IssmDouble sumW=0.0;
+	IssmDouble sumMassAdd=0.0;
+	IssmDouble fac=0.0;
+	IssmDouble sumMass=0.0;
+	IssmDouble dMass=0.0;
+	IssmDouble accsumR=0.0;
+	IssmDouble accsumF=0.0;
+	IssmDouble accsumM=0.0;
+	IssmDouble accsumSMB=0.0;
+	IssmDouble accsumEC=0.0;
+	IssmDouble accsumP=0.0;
+	IssmDouble accsumRa=0.0;
+	bool isgraingrowth,isalbedo,isshortwave,isthermal,isaccumulation,ismelt,isdensification,isturbulentflux;
+	bool isconstrainsurfaceT=false;
+	bool isdeltaLWup=false;
+	IssmDouble init_scaling=0.0;
+	IssmDouble thermo_scaling=1.0;
+	IssmDouble adThresh=1023.0;
+	IssmDouble teThresh=10;
+	/*}}}*/
+	/*Output variables:{{{ */
+	IssmDouble* dz=NULL;
+	IssmDouble* d = NULL;
+	IssmDouble* re = NULL;
+	IssmDouble* gdn = NULL;
+	IssmDouble* gsp = NULL;
+	IssmDouble  EC = 0.0;
+	IssmDouble  ulw = 0.0;
+	IssmDouble  netSW=0.0;
+	IssmDouble  netLW=0.0;
+	IssmDouble  meanULW=0.0;
+	IssmDouble  meanLHF=0.0;
+	IssmDouble  meanSHF=0.0;
+	IssmDouble* W = NULL;
+	IssmDouble* a = NULL;
+	IssmDouble* adiff = NULL;
+	IssmDouble* swf=NULL;
+	IssmDouble* T = NULL;
+	IssmDouble  T_bottom = 0.0;
+	IssmDouble  M = 0.0;
+	IssmDouble  Msurf = 0.0;
+	IssmDouble  R = 0.0;
+	IssmDouble  F = 0.0;
+	IssmDouble  Ra = 0.0;
+	IssmDouble  mAdd = 0.0;
+	IssmDouble  dz_add = 0.0;
+	IssmDouble* dzini=NULL;
+	IssmDouble* dini = NULL;
+	IssmDouble* reini = NULL;
+	IssmDouble* gdnini = NULL;
+	IssmDouble* gspini = NULL;
+	IssmDouble* Wini = NULL;
+	IssmDouble* aini = NULL;
+	IssmDouble* adiffini = NULL;
+	IssmDouble* Tini = NULL;
+	int         m=0;
+	/*}}}*/
+
+	/*Retrieve material properties and parameters:{{{ */
+	IssmDouble rho_ice   = FindParam(MaterialsRhoIceEnum);
+	IssmDouble rho_water = FindParam(MaterialsRhoFreshwaterEnum);
+	IssmDouble aSnow     = parameters->FindParam(SmbASnowEnum);
+	IssmDouble aIce      = parameters->FindParam(SmbAIceEnum);
+	parameters->FindParam(&time,TimeEnum);                        /*transient core time at which we run the smb core*/
+	parameters->FindParam(&dt,TimesteppingTimeStepEnum);          /*transient core time step*/
+	parameters->FindParam(&yts,ConstantsYtsEnum);
+	parameters->FindParam(&smb_dt,SmbDtEnum);                     /*time period for the smb solution,  usually smaller than the glaciological dt*/
+	parameters->FindParam(&aIdx,SmbAIdxEnum);
+	parameters->FindParam(&eIdx,SmbEIdxEnum);
+	parameters->FindParam(&tcIdx,SmbTcIdxEnum);
+	parameters->FindParam(&denIdx,SmbDenIdxEnum);
+	parameters->FindParam(&swIdx,SmbSwIdxEnum);
+	parameters->FindParam(&dsnowIdx,SmbDsnowIdxEnum);
+	parameters->FindParam(&cldFrac,SmbCldFracEnum);
+	parameters->FindParam(&t0wet,SmbT0wetEnum);
+	parameters->FindParam(&t0dry,SmbT0dryEnum);
+	parameters->FindParam(&K,SmbKEnum);
+	parameters->FindParam(&isgraingrowth,SmbIsgraingrowthEnum);
+	parameters->FindParam(&isalbedo,SmbIsalbedoEnum);
+	parameters->FindParam(&isshortwave,SmbIsshortwaveEnum);
+	parameters->FindParam(&isthermal,SmbIsthermalEnum);
+	parameters->FindParam(&isaccumulation,SmbIsaccumulationEnum);
+	parameters->FindParam(&ismelt,SmbIsmeltEnum);
+	parameters->FindParam(&isdensification,SmbIsdensificationEnum);
+	parameters->FindParam(&isturbulentflux,SmbIsturbulentfluxEnum);
+	parameters->FindParam(&isconstrainsurfaceT,SmbIsconstrainsurfaceTEnum);
+	parameters->FindParam(&isdeltaLWup,SmbIsdeltaLWupEnum);
+	parameters->FindParam(&init_scaling,SmbInitDensityScalingEnum);
+	parameters->FindParam(&thermo_scaling,SmbThermoDeltaTScalingEnum);
+	parameters->FindParam(&adThresh,SmbAdThreshEnum);
+	parameters->FindParam(&teThresh,SmbTeThreshEnum);
+	/*}}}*/
+	/*Retrieve inputs: {{{*/
+	Input *zTop_input          = this->GetInput(SmbZTopEnum);         _assert_(zTop_input);
+	Input *dzTop_input         = this->GetInput(SmbDzTopEnum);        _assert_(dzTop_input);
+	Input *dzMin_input         = this->GetInput(SmbDzMinEnum);        _assert_(dzMin_input);
+	Input *zMax_input          = this->GetInput(SmbZMaxEnum);         _assert_(zMax_input);
+	Input *zMin_input          = this->GetInput(SmbZMinEnum);         _assert_(zMin_input);
+	Input *zY_input            = this->GetInput(SmbZYEnum);           _assert_(zY_input);
+	Input *Tmean_input         = this->GetInput(SmbTmeanEnum);        _assert_(Tmean_input);
+	Input *Vmean_input         = this->GetInput(SmbVmeanEnum);        _assert_(Vmean_input);
+	Input *C_input             = this->GetInput(SmbCEnum);            _assert_(C_input);
+	Input *Tz_input            = this->GetInput(SmbTzEnum);           _assert_(Tz_input);
+	Input *Vz_input            = this->GetInput(SmbVzEnum);           _assert_(Vz_input);
+	Input *EC_input            = NULL;
+
+	/*Retrieve input values:*/
+	Gauss* gauss=this->NewGauss(1); gauss->GaussPoint(0);
+
+	this->GetInputValue(&isinitialized,SmbIsInitializedEnum);
+	zTop_input->GetInputValue(&zTop,gauss);
+	dzTop_input->GetInputValue(&dzTop,gauss);
+	dzMin_input->GetInputValue(&dzMin,gauss);
+	zMax_input->GetInputValue(&zMax,gauss);
+	zMin_input->GetInputValue(&zMin,gauss);
+	zY_input->GetInputValue(&zY,gauss);
+	Tmean_input->GetInputValue(&Tmean,gauss);
+	Vmean_input->GetInputValue(&Vmean,gauss);
+	C_input->GetInputValue(&C,gauss);
+	Tz_input->GetInputValue(&Tz,gauss);
+	Vz_input->GetInputValue(&Vz,gauss);
+	/*}}}*/
+
+	/*First, check that the initial structures have been setup in GEMB. If not, initialize profile variables: layer thickness dz, * density d, temperature T, etc. {{{*/
+	if(!isinitialized){
+		if(VerboseSmb() && this->Sid()==0)_printf0_("smb core: Initializing grid\n");
+		//if(this->Sid()==1) for(int i=0;i<m;i++)_printf_("z[" << i << "]=" <<
+		//dz[i] << "\n");
+
+		this->inputs->GetArray(SmbDziniEnum,this->lid,&dzini,&m);
+		this->inputs->GetArray(SmbDiniEnum,this->lid,&dini,&m);
+		this->inputs->GetArray(SmbReiniEnum,this->lid,&reini,&m);
+		this->inputs->GetArray(SmbGdniniEnum,this->lid,&gdnini,&m);
+		this->inputs->GetArray(SmbGspiniEnum,this->lid,&gspini,&m);
+		this->inputs->GetArray(SmbWiniEnum,this->lid,&Wini,&m);
+		this->inputs->GetArray(SmbAiniEnum,this->lid,&aini,&m);
+		this->inputs->GetArray(SmbAdiffiniEnum,this->lid,&adiffini,&m);
+		this->inputs->GetArray(SmbTiniEnum,this->lid,&Tini,&m);
+		EC_input = this->GetInput(SmbECiniEnum);  _assert_(EC_input);
+		EC_input->GetInputAverage(&EC);
+
+		/*Retrieve the correct value of m (without the zeroes at the end)*/
+		this->GetInputValue(&m,SmbSizeiniEnum);
+
+		if(m==2){ //Snow properties are initialized with default values. Vertical grid has to be initialized too
+			//            if(VerboseSmb() && this->Sid()==0)_printf0_("Snow properties initialized w DEFAULT values\n");
+
+			/*initialize profile variables:*/
+			GembgridInitialize(&dz, &m, zTop, dzTop, zMax, zY);
+
+			d = xNew<IssmDouble>(m); for(int i=0;i<m;i++)d[i]=dini[0]; //ice density [kg m-3]
+			re = xNew<IssmDouble>(m); for(int i=0;i<m;i++)re[i]=reini[0];         //set grain size to old snow [mm]
+			gdn = xNew<IssmDouble>(m); for(int i=0;i<m;i++)gdn[i]=gdnini[0];         //set grain dentricity to old snow
+			gsp = xNew<IssmDouble>(m); for(int i=0;i<m;i++)gsp[i]=gspini[0];         //set grain sphericity to old snow
+			W = xNew<IssmDouble>(m); for(int i=0;i<m;i++)W[i]=Wini[0];             //set water content to zero [kg m-2]
+			a = xNew<IssmDouble>(m); for(int i=0;i<m;i++)a[i]=aini[0];         //set albedo equal to fresh snow [fraction]
+			adiff = xNew<IssmDouble>(m); for(int i=0;i<m;i++)adiff[i]=adiffini[0];         //set diffusive albedo equal to 1 [fraction]
+			T = xNew<IssmDouble>(m); for(int i=0;i<m;i++)T[i]=Tmean;         //set initial grid cell temperature to the annual mean temperature [K]
+			/*/!\ Default value of T can not be retrived from SMBgemb.m (like other snow properties)
+			 *    because don't know Tmean yet when set default values.
+			 *    Default value of 0C given in SMBgemb.m is overwritten here with value of Tmean*/
+
+			//fixed lower temperature bounday condition - T is fixed
+			T_bottom=T[m-1];
+		}
+		else{ //Retrieve snow properties from previous run. Need to provide values for all layers
+			//            if(VerboseSmb() && this->Sid()==0)_printf0_("Snow properties initialized w RESTART values\n");
+
+			dz = xNew<IssmDouble>(m);for(int i=0;i<m;i++)dz[i]=dzini[i];
+			d = xNew<IssmDouble>(m);for(int i=0;i<m;i++)d[i]=dini[i];
+			re = xNew<IssmDouble>(m);for(int i=0;i<m;i++)re[i]=reini[i];
+			gdn = xNew<IssmDouble>(m);for(int i=0;i<m;i++)gdn[i]=gdnini[i];
+			gsp = xNew<IssmDouble>(m);for(int i=0;i<m;i++)gsp[i]=gspini[i];
+			W = xNew<IssmDouble>(m);for(int i=0;i<m;i++)W[i]=Wini[i];
+			a = xNew<IssmDouble>(m);for(int i=0;i<m;i++)a[i]=aini[i];
+			adiff = xNew<IssmDouble>(m);for(int i=0;i<m;i++)adiff[i]=adiffini[i];
+			T = xNew<IssmDouble>(m);for(int i=0;i<m;i++)T[i]=Tini[i];
+
+			//fixed lower temperature bounday condition - T is fixed
+			_assert_(m>0);
+			T_bottom=T[m-1];
+		}
+
+		this->SetElementInput(SmbAccumulatedECEnum,0.0);
+		this->SetElementInput(SmbAccumulatedMassBalanceEnum,0.0);
+		this->SetElementInput(SmbAccumulatedMeltEnum,0.0);
+		this->SetElementInput(SmbAccumulatedRunoffEnum,0.0);
+		this->SetElementInput(SmbAccumulatedRefreezeEnum,0.0);
+		this->SetElementInput(SmbAccumulatedRainEnum,0.0);
+		this->SetElementInput(SmbAccumulatedPrecipitationEnum,0.0);
+
+		/*Flag the initialization:*/
+		this->SetBoolInput(this->inputs,SmbIsInitializedEnum,true);
+	}
+	else{
+		/*Recover inputs: */
+		this->inputs->GetArray(SmbDzEnum,this->lid,&dz,&m);
+		this->inputs->GetArray(SmbDEnum,this->lid,&d,&m);
+		this->inputs->GetArray(SmbReEnum,this->lid,&re,&m);
+		this->inputs->GetArray(SmbGdnEnum,this->lid,&gdn,&m);
+		this->inputs->GetArray(SmbGspEnum,this->lid,&gsp,&m);
+		this->inputs->GetArray(SmbWEnum,this->lid,&W,&m);
+		this->inputs->GetArray(SmbAEnum,this->lid,&a,&m);
+		this->inputs->GetArray(SmbAdiffEnum,this->lid,&adiff,&m);
+		this->inputs->GetArray(SmbTEnum,this->lid,&T,&m);
+		EC_input = this->GetInput(SmbECDtEnum);  _assert_(EC_input);
+		EC_input->GetInputAverage(&EC);
+
+		//fixed lower temperature bounday condition - T is fixed
+		_assert_(m>0);
+		T_bottom=T[m-1];
+	} /*}}}*/
+
+	// determine initial mass [kg]
+	initMass=0; for(int i=0;i<m;i++) initMass += dz[i]*d[i] + W[i];
+
+	// initialize cumulative variables
+	sumR = 0; sumF=0; sumM = 0; sumEC = 0; sumP = 0; sumMassAdd = 0; sumMsurf = 0; sumRa = 0;
+
+	//before starting loop, realize that the transient core runs this smb_core at time = time +deltaT.
+   //go back to time - deltaT:
+   time-=dt;
+
+	if(VerboseSmb() && this->Sid()==0 && IssmComm::GetRank()==0)_printf0_("Time: t=" << setprecision(8) << timeinputs/365.0/24.0/3600.0 << " yr/" << (time+dt)/365.0/24.0/3600.0 << " yr" << setprecision(3) << " Step: " << count << "\n");
+
+	/*Get daily accumulated inputs {{{*/
+	if (count>1){
+		Input *sumEC_input         = this->GetInput(SmbECEnum);  _assert_(sumEC_input);
+		Input *sumM_input          = this->GetInput(SmbMeltEnum);  _assert_(sumM_input);
+		Input *sumR_input          = this->GetInput(SmbRunoffEnum);  _assert_(sumR_input);
+		Input *sumF_input          = this->GetInput(SmbRefreezeEnum);  _assert_(sumF_input);
+		Input *sumRa_input         = this->GetInput(SmbRainEnum);  _assert_(sumRa_input);
+		Input *sumP_input          = this->GetInput(SmbPrecipitationEnum);  _assert_(sumP_input);
+		Input *ULW_input           = this->GetInput(SmbMeanULWEnum);  _assert_(ULW_input);
+		Input *LW_input            = this->GetInput(SmbNetLWEnum);  _assert_(LW_input);
+		Input *SW_input            = this->GetInput(SmbNetSWEnum);  _assert_(SW_input);
+		Input *LHF_input           = this->GetInput(SmbMeanLHFEnum);  _assert_(LHF_input);
+		Input *SHF_input           = this->GetInput(SmbMeanSHFEnum);  _assert_(SHF_input);
+		Input *DzAdd_input         = this->GetInput(SmbDzAddEnum);  _assert_(DzAdd_input);
+		Input *MassAdd_input       = this->GetInput(SmbMAddEnum);  _assert_(MassAdd_input);
+		Input *InitMass_input      = this->GetInput(SmbMInitnum);  _assert_(InitMass_input);
+		Input *sumMsurf_input         = this->GetInput(SmbMSurfEnum);  _assert_(sumMsurf_input);
+
+		ULW_input->GetInputAverage(&meanULW);
+		LW_input->GetInputAverage(&netLW);
+		SW_input->GetInputAverage(&netSW);
+		LHF_input->GetInputAverage(&meanLHF);
+		SHF_input->GetInputAverage(&meanSHF);
+		DzAdd_input->GetInputAverage(&dz_add);
+		MassAdd_input->GetInputAverage(&sumMassAdd);
+		sumMassAdd=sumMassAdd*dt;
+		InitMass_input->GetInputAverage(&initMass);
+		sumEC_input->GetInputAverage(&sumEC);
+		sumEC=sumEC*dt*rho_ice;
+		sumM_input->GetInputAverage(&sumM);
+		sumM=sumM*dt*rho_ice;
+		sumMsurf_input->GetInputAverage(&sumMsurf);
+      sumMsurf=sumMsurf*dt*rho_ice;
+		sumR_input->GetInputAverage(&sumR);
+		sumR=sumR*dt*rho_ice;
+		sumF_input->GetInputAverage(&sumF);
+		sumF=sumF*dt*rho_ice;
+		sumRa_input->GetInputAverage(&sumRa);
+		sumRa=sumRa*dt*rho_ice;
+		sumP_input->GetInputAverage(&sumP);
+		sumP=sumP*dt*rho_ice;
+	}
+	/*}}}*/
+
+	// Get time forcing inputs
+	Input *Ta_input  = this->GetInput(SmbTaEnum,timeinputs);    _assert_(Ta_input);
+	Input *V_input   = this->GetInput(SmbVEnum,timeinputs);     _assert_(V_input);
+	Input *Dlwr_input= this->GetInput(SmbDlwrfEnum,timeinputs); _assert_(Dlwr_input);
+	Input *Dswr_input= this->GetInput(SmbDswrfEnum,timeinputs); _assert_(Dswr_input);
+	Input *Dswrdiff_input= this->GetInput(SmbDswdiffrfEnum,timeinputs); _assert_(Dswrdiff_input);
+	Input *P_input   = this->GetInput(SmbPEnum,timeinputs);     _assert_(P_input);
+	Input *eAir_input= this->GetInput(SmbEAirEnum,timeinputs);  _assert_(eAir_input);
+	Input *pAir_input= this->GetInput(SmbPAirEnum,timeinputs);  _assert_(pAir_input);
+	Input *teValue_input= this->GetInput(SmbTeValueEnum,timeinputs); _assert_(teValue_input);
+	Input *aValue_input= this->GetInput(SmbAValueEnum,timeinputs); _assert_(aValue_input);
+	Input *dulwrfValue_input= this->GetInput(SmbDulwrfValueEnum,timeinputs); _assert_(dulwrfValue_input);
+	Input *szaValue_input= this->GetInput(SmbSzaValueEnum,timeinputs); _assert_(szaValue_input);
+	Input *cotValue_input= this->GetInput(SmbCotValueEnum,timeinputs); _assert_(cotValue_input);
+	Input *ccsnowValue_input= this->GetInput(SmbCcsnowValueEnum,timeinputs); _assert_(ccsnowValue_input);
+	Input *cciceValue_input= this->GetInput(SmbCciceValueEnum,timeinputs); _assert_(cciceValue_input);
+
+	/*extract daily data:{{{*/
+	Ta_input->GetInputValue(&Ta,gauss);//screen level air temperature [K]
+	V_input->GetInputValue(&V,gauss);  //wind speed [m s-1]
+	Dlwr_input->GetInputValue(&dlw,gauss);   //downward longwave radiation flux [W m-2]
+	Dswr_input->GetInputValue(&dsw,gauss);   //downward shortwave radiation flux [W m-2]
+	Dswrdiff_input->GetInputValue(&dswdiff,gauss);   //downward shortwave diffuse radiation flux [W m-2]
+	P_input->GetInputValue(&P,gauss);        //precipitation [kg m-2]
+	eAir_input->GetInputValue(&eAir,gauss);  //screen level vapor pressure [Pa]
+	pAir_input->GetInputValue(&pAir,gauss);  // screen level air pressure [Pa]
+	teValue_input->GetInputValue(&teValue,gauss);  // Emissivity [0-1]
+	dulwrfValue_input->GetInputValue(&dulwrfValue,gauss);  // LWup perturbation [W m-2]
+	aValue_input->GetInputValue(&aValue,gauss);  // Albedo [0 1]
+	szaValue_input->GetInputValue(&szaValue,gauss);  // Solar Zenith Angle [degree]
+	cotValue_input->GetInputValue(&cotValue,gauss);  // Cloud Optical Thickness
+	ccsnowValue_input->GetInputValue(&ccsnowValue,gauss); //concentration of light absorbing carbon for snow [ppm1]
+	cciceValue_input->GetInputValue(&cciceValue,gauss); //concentration of light absorbing carbon for ice [ppm1]
+	//_printf_("Time: " << t << " Ta: " << Ta << " V: " << V << " dlw: " << dlw << " dsw: " << dsw << " P: " << P << " eAir: " << eAir << " pAir: " << pAir << "\n");
+	/*}}}*/
+
+	/*Snow grain metamorphism:*/
+	if(isgraingrowth)grainGrowth(&re, &gdn, &gsp, T, dz, d, W, smb_dt, m, aIdx,this->Sid());
+
+	/*Snow, firn and ice albedo:*/
+	if(isalbedo)albedo(&a,&adiff,aIdx,re,dz,d,cldFrac,aIce,aSnow,aValue,adThresh,T,W,P,EC,Msurf,ccsnowValue,cciceValue,szaValue,cotValue,t0wet,t0dry,K,smb_dt,rho_ice,m,this->Sid());
+
+	/*Distribution of absorbed short wave radation with depth:*/
+	if(isshortwave)shortwave(&swf, swIdx, aIdx, dsw, dswdiff, a[0], adiff[0], d, dz, re,rho_ice,m,this->Sid());
+
+	/*Calculate net shortwave [W m-2]*/
+	netSW = netSW + cellsum(swf,m)*smb_dt/dt;
+
+	if(isconstrainsurfaceT){
+		if (m>0) T[0]=Ta;
+		if (m>1) T[1]=Ta;
+	}
+	/*Thermal profile computation:*/
+	if(isthermal)thermo(&shf, &lhf, &EC, &T, &ulw, re, dz, d, swf, dlw, Ta, V, eAir, pAir, tcIdx, eIdx, teValue, dulwrfValue, teThresh, W[0], smb_dt, dzMin, m, Vz, Tz, thermo_scaling,rho_ice,this->Sid(),isconstrainsurfaceT,isdeltaLWup);
+
+	/*Change in thickness of top cell due to evaporation/condensation  assuming same density as top cell.
+	 * need to fix this in case all or more of cell evaporates */
+	dz[0] = dz[0] + EC / d[0];
+
+	/*Add snow/rain to top grid cell adjusting cell depth, temperature and density*/
+	if(isaccumulation)accumulation(&T, &dz, &d, &W, &a, &adiff, &re, &gdn, &gsp, &Ra, &m, aIdx, dsnowIdx, Tmean, Ta, P, dzMin, aSnow, C, V, Vmean, rho_ice,this->Sid());
+
+	/*Calculate water production, M [kg m-2] resulting from snow/ice temperature exceeding 273.15 deg K
+	 * (> 0 deg C), runoff R [kg m-2] and resulting changes in density and determine wet compaction [m]*/
+	if(ismelt)melt(&M, &Msurf, &R, &F, &mAdd, &dz_add, &T, &d, &dz, &W, &a, &adiff, &re, &gdn, &gsp, &m, Ra, dzMin, zMax, zMin, zTop, zY, rho_ice,this->Sid());
+
+	/*Allow non-melt densification and determine compaction [m]*/
+	if(isdensification)densification(&d,&dz, T, re, denIdx, aIdx, swIdx, adThresh, C, smb_dt, Tmean,rho_ice,m,this->Sid());
+
+	/*Calculate net longwave [W m-2]*/
+	meanULW = meanULW + ulw*smb_dt/dt;
+	netLW = netLW + (dlw - ulw)*smb_dt/dt;
+
+	/*Verbose some results in debug mode: {{{*/
+	if(VerboseSmb() && 0){
+		_printf_("smb log: count[" << count << "] m[" << m << "] "
+					<< setprecision(16)   << "T[" << cellsum(T,m)  << "] "
+					<< "d[" << cellsum(d,m)  << "] "
+					<< "dz[" << cellsum(dz,m)  << "] "
+					<< "a[" << cellsum(a,m)  << "] "
+					<< "W[" << cellsum(W,m)  << "] "
+					<< "re[" << cellsum(re,m)  << "] "
+					<< "gdn[" << cellsum(gdn,m)  << "] "
+					<< "gsp[" << cellsum(gsp,m)  << "] "
+					<< "swf[" << netSW << "] "
+					<< "lwf[" << netLW << "] "
+					<< "a[" << a << "] "
+					<< "adiff[" << adiff << "] "
+					<< "te[" << teValue << "] "
+					<< "\n");
+	} /*}}}*/
+
+	meanLHF = meanLHF + lhf*smb_dt/dt;
+	meanSHF = meanSHF + shf*smb_dt/dt;
+
+	/*Sum component mass changes [kg m-2]*/
+	sumMassAdd = mAdd + sumMassAdd;
+	sumM = M + sumM;
+	sumMsurf = Msurf + sumMsurf;
+	sumR = R + sumR;
+	sumW = cellsum(W,m);
+	sumP = P +  sumP;
+	sumEC = EC + sumEC;  // evap (-)/cond(+)
+	sumRa = Ra + sumRa;
+	sumF = F + sumF;
+
+	/*Calculate total system mass:*/
+	sumMass=0;
+	fac=0;
+	for(int i=0;i<m;i++){
+		sumMass += dz[i]*d[i];
+		if (d[i] > 0) fac += dz[i]*(rho_ice - fmin(d[i],rho_ice));
+	}
+
+	#if defined(_HAVE_AD_)
+	/*we want to avoid the round operation at all cost. Not differentiable.*/
+	_error_("not implemented yet");
+	#else
+	dMass = sumMass + sumR + sumW - sumP - sumEC - initMass - sumMassAdd;
+	dMass = round(dMass * 100.0)/100.0;
+
+	/*Check mass conservation:*/
+	if (dMass != 0.0){
+		_printf_("Time: " << setprecision(8) << timeinputs/365.0/24.0/3600.0 << ",total system mass not conserved in MB function \n");
+		_printf_("sumMass: " << sumMass << " sumR: " << sumR << " sumW: " << sumW << " sumP: " << sumP << " sumEC: " << sumEC << " initMass: " << initMass << " sumMassAdd: " << sumMassAdd << " \n");
+	}
+	#endif
+
+	/*Check bottom grid cell T is unchanged:*/
+	if(VerboseSmb() && this->Sid()==0 && IssmComm::GetRank()==0){
+		if (T[m-1]!=T_bottom) _printf_("T(end)~=T_bottom" << "\n");
+	}
+
+	/*Save accumulated inputs {{{*/
+   Input *accsumEC_input         = this->GetInput(SmbAccumulatedECEnum);  _assert_(accsumEC_input);
+   Input *accsumM_input          = this->GetInput(SmbAccumulatedMeltEnum);  _assert_(accsumM_input);
+	Input *accsumR_input          = this->GetInput(SmbAccumulatedRunoffEnum);  _assert_(accsumR_input);
+	Input *accsumF_input          = this->GetInput(SmbAccumulatedRefreezeEnum);  _assert_(accsumF_input);
+	Input *accsumRa_input         = this->GetInput(SmbAccumulatedRainEnum);  _assert_(accsumRa_input);
+	Input *accsumP_input          = this->GetInput(SmbAccumulatedPrecipitationEnum);  _assert_(accsumP_input);
+	Input *accsumSMB_input        = this->GetInput(SmbAccumulatedMassBalanceEnum);  _assert_(accsumSMB_input);
+
+   accsumEC_input->GetInputAverage(&accsumEC);
+	accsumM_input->GetInputAverage(&accsumM);
+	accsumR_input->GetInputAverage(&accsumR);
+	accsumF_input->GetInputAverage(&accsumF);
+	accsumRa_input->GetInputAverage(&accsumRa);
+	accsumP_input->GetInputAverage(&accsumP);
+	accsumSMB_input->GetInputAverage(&accsumSMB);
+
+	this->SetElementInput(SmbAccumulatedECEnum,accsumEC+EC/rho_ice);
+	this->SetElementInput(SmbAccumulatedMassBalanceEnum,accsumSMB+(P + EC -R)/rho_ice);
+	this->SetElementInput(SmbAccumulatedMeltEnum,accsumM+M/rho_ice);
+	this->SetElementInput(SmbAccumulatedRunoffEnum,accsumR+R/rho_ice);
+	this->SetElementInput(SmbAccumulatedRefreezeEnum,accsumF+F/rho_ice);
+	this->SetElementInput(SmbAccumulatedRainEnum,accsumRa+Ra/rho_ice);
+	this->SetElementInput(SmbAccumulatedPrecipitationEnum,accsumP+P/rho_ice);
+   /*}}}*/
+
+	/*Save generated inputs: */
+	this->inputs->SetArrayInput(SmbDzEnum,this->lid,dz,m);
+	this->inputs->SetArrayInput(SmbDEnum,this->lid,d,m);
+	this->inputs->SetArrayInput(SmbReEnum,this->lid,re,m);
+	this->inputs->SetArrayInput(SmbGdnEnum,this->lid,gdn,m);
+	this->inputs->SetArrayInput(SmbGspEnum,this->lid,gsp,m);
+	this->inputs->SetArrayInput(SmbTEnum,this->lid,T,m);
+	this->inputs->SetArrayInput(SmbWEnum,this->lid,W,m);
+	this->inputs->SetArrayInput(SmbAEnum,this->lid,a,m);
+	this->inputs->SetArrayInput(SmbAdiffEnum,this->lid,adiff,m);
+	this->SetElementInput(SmbECEnum,sumEC/dt/rho_ice);
+	this->SetElementInput(SmbMassBalanceEnum,(sumP + sumEC -sumR)/dt/rho_ice);
+	this->SetElementInput(SmbMeltEnum,sumM/dt/rho_ice);
+	this->SetElementInput(SmbRunoffEnum,sumR/dt/rho_ice);
+	this->SetElementInput(SmbRefreezeEnum,sumF/dt/rho_ice);
+	this->SetElementInput(SmbRainEnum,sumRa/dt/rho_ice);
+	this->SetElementInput(SmbPrecipitationEnum,sumP/dt/rho_ice);
+	this->SetElementInput(SmbMeanULWEnum,meanULW);
+	this->SetElementInput(SmbNetLWEnum,netLW);
+	this->SetElementInput(SmbNetSWEnum,netSW);
+	this->SetElementInput(SmbMeanLHFEnum,meanLHF);
+	this->SetElementInput(SmbMeanSHFEnum,meanSHF);
+	this->SetElementInput(SmbDzAddEnum,dz_add);
+	this->SetElementInput(SmbMInitnum,initMass);
+	this->SetElementInput(SmbMAddEnum,sumMassAdd/dt);
+	this->SetElementInput(SmbMSurfEnum,sumMsurf/dt/rho_ice);
+	this->SetElementInput(SmbWAddEnum,sumW/dt);
+	this->SetElementInput(SmbFACEnum,fac/1000.); // output in meters
+	this->SetElementInput(SmbECDtEnum,EC);
+
+	/*Free allocations:{{{*/
+	if(dz) xDelete<IssmDouble>(dz);
+	if(d) xDelete<IssmDouble>(d);
+	if(re) xDelete<IssmDouble>(re);
+	if(gdn) xDelete<IssmDouble>(gdn);
+	if(gsp) xDelete<IssmDouble>(gsp);
+	if(W) xDelete<IssmDouble>(W);
+	if(a) xDelete<IssmDouble>(a);
+	if(adiff) xDelete<IssmDouble>(adiff);
+	if(T) xDelete<IssmDouble>(T);
+	if(dzini) xDelete<IssmDouble>(dzini);
+	if(dini) xDelete<IssmDouble>(dini);
+	if(reini) xDelete<IssmDouble>(reini);
+	if(gdnini) xDelete<IssmDouble>(gdnini);
+	if(gspini) xDelete<IssmDouble>(gspini);
+	if(Wini) xDelete<IssmDouble>(Wini);
+	if(aini) xDelete<IssmDouble>(aini);
+	if(adiffini) xDelete<IssmDouble>(adiffini);
+	if(Tini) xDelete<IssmDouble>(Tini);
+	if(swf) xDelete<IssmDouble>(swf);
+
+	delete gauss;
+	/*}}}*/
+}
+/*}}}*/
+void       Element::SubglacialWaterPressure(int output_enum){/*{{{*/
+
+	bool ispwHydroArma;
+   int M;
+   int numvertices = this->GetNumberOfVertices();
+   IssmDouble p_water[numvertices];
+   IssmDouble* perturbationvalues = xNew<IssmDouble>(numvertices);
+   Gauss* gauss=this->NewGauss();
+   Friction* friction = new Friction(this);
+   /*Calculate subglacial water pressure*/
+   for(int i=0;i<numvertices;i++){
+         gauss->GaussVertex(i);
+         p_water[i] = friction->SubglacialWaterPressure(gauss);
+   }
+   /*Add perturbation in water pressure if HydrologyIsWaterPressureArmaEnum is true*/
+   this->parameters->FindParam(&ispwHydroArma,HydrologyIsWaterPressureArmaEnum);
+   if(ispwHydroArma){
+      this->GetInputListOnVertices(perturbationvalues,WaterPressureArmaPerturbationEnum);
+		for(int i=0;i<numvertices;i++) p_water[i] = p_water[i]+perturbationvalues[i];
+   }
+   /*Save*/
+   this->AddInput(output_enum,p_water,P1DGEnum);
+   /*Clean-up*/
+   delete gauss;
+   delete friction;
+   xDelete<IssmDouble>(perturbationvalues);
+
+}/*}}}*/
+void       Element::StrainRateESA(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble dvx[3];
+	IssmDouble dvy[3];
+
+	/*Check that both inputs have been found*/
+	if(!vx_input || !vy_input){
+		_error_("Input missing. Here are the input pointers we have for vx: " << vx_input << ", vy: " << vy_input << "\n");
+	}
+
+	/*Get strain rate assuming that epsilon has been allocated*/
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+	epsilon[0] = dvx[0];	// normal strain rate x-direction
+	epsilon[1] = dvy[1]; // normal strain rate y-direction
+	epsilon[2] = 0.5*(dvx[1] + dvy[0]); // shear strain rate
+	epsilon[3] = 0.5*(dvx[1] - dvy[0]); // rotation rate
+
+}/*}}}*/
+void       Element::StrainRateFS(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/
+	/*Compute the 3d Strain Rate (6 components):
+	 *
+	 * epsilon=[exx eyy ezz exy exz eyz]
+	 */
+
+	/*Intermediaries*/
+	IssmDouble dvx[3];
+	IssmDouble dvy[3];
+	IssmDouble dvz[3];
+
+	/*Check that both inputs have been found*/
+	if (!vx_input || !vy_input || !vz_input){
+		_error_("Input missing. Here are the input pointers we have for vx: " << vx_input << ", vy: " << vy_input << ", vz: " << vz_input << "\n");
+	}
+
+	/*Get strain rate assuming that epsilon has been allocated*/
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+	vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
+
+	epsilon[0] = dvx[0];
+	epsilon[1] = dvy[1];
+	epsilon[2] = dvz[2];
+	epsilon[3] = 0.5*(dvx[1] + dvy[0]);
+	epsilon[4] = 0.5*(dvx[2] + dvz[0]);
+	epsilon[5] = 0.5*(dvy[2] + dvz[1]);
+
+}/*}}}*/
+void       Element::StrainRateHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+	/*Compute the 3d Blatter/HOStrain Rate (5 components):
+	 *
+	 * epsilon=[exx eyy exy exz eyz]
+	 *
+	 * with exz=1/2 du/dz
+	 *      eyz=1/2 dv/dz
+	 *
+	 * the contribution of vz is neglected
+	 */
+
+	/*Intermediaries*/
+	IssmDouble dvx[3];
+	IssmDouble dvy[3];
+
+	/*Check that both inputs have been found*/
+	if (!vx_input || !vy_input){
+		_error_("Input missing. Here are the input pointers we have for vx: " << vx_input << ", vy: " << vy_input << "\n");
+	}
+
+	/*Get strain rate assuming that epsilon has been allocated*/
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+	epsilon[0] = dvx[0];
+	epsilon[1] = dvy[1];
+	epsilon[2] = 0.5*(dvx[1] + dvy[0]);
+	epsilon[3] = 0.5*dvx[2];
+	epsilon[4] = 0.5*dvy[2];
+
+}/*}}}*/
+void       Element::StrainRateHO2dvertical(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+	/*Compute the 2d Blatter/HOStrain Rate (2 components):
+	 *
+	 * epsilon=[exx exz]
+	 *
+	 * with exz=1/2 du/dz
+	 *
+	 * the contribution of vz is neglected
+	 */
+
+	/*Intermediaries*/
+	IssmDouble dvx[3];
+
+	/*Check that both inputs have been found*/
+	if (!vx_input){
+		_error_("Input missing. Here are the input pointers we have for vx: " << vx_input <<"\n");
+	}
+
+	/*Get strain rate assuming that epsilon has been allocated*/
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	epsilon[0] = dvx[0];
+	epsilon[1] = 0.5*dvx[1];
+
+}/*}}}*/
+void       Element::StrainRateMOLHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input,IssmDouble zeta){/*{{{*/
+	/*Compute the 2d Blatter/MOLHO Strain Rate (5 components) for a given vertical coordinate (zeta):
+	 *
+	 * epsilon=[exx eyy exy exz eyz]
+	 *
+	 * with exz=1/2 du/dz
+	 *      eyz=1/2 dv/dz
+	 *
+	 * the contribution of vz is neglected
+	 *
+	 * zeta = (surface - z)/thickness 
+	 * i.e., zeta=0 <=> ice surface
+	 * i.e., zeta=1 <=> ice base
+	 */
+
+	/*Intermediaries*/
+	IssmDouble dvxb[2];  // [dvx/dx, dvx/dy] at the base
+	IssmDouble dvyb[2];  // [dvy/dx, dvy/dy] at the base
+	IssmDouble dvxsh[2]; // [dvx/dx, dvx/dy] at the surface (only the shear)
+	IssmDouble dvysh[2]; // [dvy/dx, dvy/dy] at the surface (only the shear)
+	IssmDouble vxsh,vysh; // shear vx and shear at the surface
+	IssmDouble thickness,n;
+
+	/*Check that both inputs have been found*/
+	if (!vxbase_input || !vybase_input || !vxshear_input || !vyshear_input || !thickness_input || !n_input){
+		_error_("Input missing. Here are the input pointers we have for vxb: " << vxbase_input << ", vyb: " << vybase_input << ", vxshear: " << vxshear_input << ", vyshear: " << vyshear_input << ", thickness: " << thickness_input << ", n: " << n_input<< "\n");
+	}
+
+	/*Get strain rate assuming that epsilon has been allocated*/
+	vxbase_input->GetInputDerivativeValue(&dvxb[0],xyz_list,gauss);
+	vybase_input->GetInputDerivativeValue(&dvyb[0],xyz_list,gauss);
+	vxshear_input->GetInputDerivativeValue(&dvxsh[0],xyz_list,gauss);
+	vyshear_input->GetInputDerivativeValue(&dvysh[0],xyz_list,gauss);
+	thickness_input->GetInputValue(&thickness,gauss); _assert_(thickness>0);
+   vxshear_input->GetInputValue(&vxsh,gauss);
+   vyshear_input->GetInputValue(&vysh,gauss);
+   n_input->GetInputValue(&n,gauss);
+
+	epsilon[0] = dvxb[0] + dvxsh[0]*( 1 - pow(zeta,n+1) );
+	epsilon[1] = dvyb[1] + dvysh[1]*( 1 - pow(zeta,n+1) );
+	epsilon[2] = 0.5*( dvxb[1] + dvxsh[1]*( 1 - pow(zeta,n+1) ) + dvyb[0] + dvysh[0]*( 1 - pow(zeta,n+1) ) ); 
+	epsilon[3] = 0.5*(vxsh/thickness)*(n+1)*pow(zeta,n);
+	epsilon[4] = 0.5*(vysh/thickness)*(n+1)*pow(zeta,n);
+
+}/*}}}*/
+void       Element::StrainRateSSA(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble dvx[3];
+	IssmDouble dvy[3];
+
+	/*Check that both inputs have been found*/
+	if(!vx_input || !vy_input){
+		_error_("Input missing. Here are the input pointers we have for vx: " << vx_input << ", vy: " << vy_input << "\n");
+	}
+
+	/*Get strain rate assuming that epsilon has been allocated*/
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+	epsilon[0] = dvx[0];
+	epsilon[1] = dvy[1];
+	epsilon[2] = 0.5*(dvx[1] + dvy[0]);
+
+}/*}}}*/
+void       Element::StrainRateSSA1d(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble dvx[3];
+
+	/*Check that both inputs have been found*/
+	if (!vx_input){
+		_error_("Input missing. Here are the input pointers we have for vx: " << vx_input << "\n");
+	}
+
+	/*Get strain rate assuming that epsilon has been allocated*/
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	*epsilon = dvx[0];
+
+}/*}}}*/
+void       Element::StressMaxPrincipalCreateInput(void){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble *xyz_list = NULL;
+	IssmDouble  sigma_xx,sigma_yy,sigma_zz,sigma_xy,sigma_xz,sigma_yz;
+	IssmDouble  a,b,c,d,x[3],max;
+	int         dim,numroots;
+
+	/*First: get stress tensor*/
+	this->ComputeStressTensor();
+
+	/*Get domain dimension*/
+	this->FindParam(&dim,DomainDimensionEnum);
+
+	/*Fetch number vertices and allocate memory*/
+	const int NUM_VERTICES  = this->GetNumberOfVertices();
+	IssmDouble maxprincipal[MAXVERTICES];
+
+	/*Retrieve all inputs and parameters*/
+	this->GetVerticesCoordinatesBase(&xyz_list);
+	Input* sigma_xx_input  = this->GetInput(StressTensorxxEnum); _assert_(sigma_xx_input);
+	Input* sigma_yy_input  = this->GetInput(StressTensoryyEnum); _assert_(sigma_yy_input);
+	Input* sigma_xy_input  = this->GetInput(StressTensorxyEnum); _assert_(sigma_xy_input);
+	Input* sigma_xz_input  = NULL;
+	Input* sigma_yz_input  = NULL;
+	Input* sigma_zz_input  = NULL;
+	if(dim==3){
+		sigma_xz_input  = this->GetInput(StressTensorxzEnum); _assert_(sigma_xz_input);
+		sigma_yz_input  = this->GetInput(StressTensoryzEnum); _assert_(sigma_yz_input);
+		sigma_zz_input  = this->GetInput(StressTensorzzEnum); _assert_(sigma_zz_input);
+	}
+
+	/*loop over vertices: */
+	Gauss* gauss=this->NewGauss();
+	for(int iv=0;iv<NUM_VERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		sigma_xx_input->GetInputValue(&sigma_xx,gauss);
+		sigma_yy_input->GetInputValue(&sigma_yy,gauss);
+		sigma_xy_input->GetInputValue(&sigma_xy,gauss);
+		if(dim==3){
+			sigma_xz_input->GetInputValue(&sigma_xz,gauss);
+			sigma_yz_input->GetInputValue(&sigma_yz,gauss);
+			sigma_zz_input->GetInputValue(&sigma_zz,gauss);
+		}
+
+		if(dim==2){
+			a = 0.;
+			b = 1.;
+			c = -sigma_yy -sigma_xx;
+			d = sigma_xx*sigma_yy - sigma_xy*sigma_xy;
+		}
+		else{
+			a = -1.;
+			b = sigma_xx+sigma_yy+sigma_zz;
+			c = -sigma_xx*sigma_yy -sigma_xx*sigma_zz -sigma_yy*sigma_zz + sigma_xy*sigma_xy +sigma_xz*sigma_xz +sigma_yz*sigma_yz;
+			d = sigma_xx*sigma_yy*sigma_zz - sigma_xx*sigma_yz*sigma_yz -sigma_yy*sigma_xz*sigma_xz - sigma_zz*sigma_xy*sigma_xy + 2.*sigma_xy*sigma_xz*sigma_yz;
+		}
+
+		/*Get roots of polynomials*/
+		cubic(a,b,c,d,x,&numroots);
+
+		/*Initialize maximum eigne value*/
+		if(numroots>0){
+			max = fabs(x[0]);
+		}
+		else{
+			_error_("No eigen value found");
+		}
+
+		/*Get max*/
+		for(int i=1;i<numroots;i++){
+			if(fabs(x[i])>max) max = fabs(x[i]);
+		}
+
+		maxprincipal[iv]=max;
+	}
+
+	/*Create input*/
+	this->AddInput(StressMaxPrincipalEnum,&maxprincipal[0],P1Enum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+}
+/*}}}*/
+IssmDouble Element::TotalFloatingBmb(IssmDouble* mask, bool scaled){/*{{{*/
+
+	/*Retrieve values of the mask defining the element: */
+	for(int i=0;i<this->GetNumberOfVertices();i++){
+		if(mask[this->vertices[i]->Sid()]<=0.){
+			return 0.;
+		}
+	}
+
+	/*Return: */
+	return this->TotalFloatingBmb(scaled);
+}
+/*}}}*/
+IssmDouble Element::TotalGroundedBmb(IssmDouble* mask, bool scaled){/*{{{*/
+
+	/*Retrieve values of the mask defining the element: */
+	for(int i=0;i<this->GetNumberOfVertices();i++){
+		if(mask[this->vertices[i]->Sid()]<=0.){
+			return 0.;
+		}
+	}
+
+	/*Return: */
+	return this->TotalGroundedBmb(scaled);
+}
+/*}}}*/
+IssmDouble Element::TotalSmb(IssmDouble* mask, bool scaled){/*{{{*/
+
+	/*Retrieve values of the mask defining the element: */
+	for(int i=0;i<this->GetNumberOfVertices();i++){
+		if(mask[this->vertices[i]->Sid()]<=0.){
+			return 0.;
+		}
+	}
+
+	/*Return: */
+	return this->TotalSmb(scaled);
+}
+/*}}}*/
+IssmDouble Element::TotalSmbMelt(IssmDouble* mask, bool scaled){/*{{{*/
+
+	/*Retrieve values of the mask defining the element: */
+	for(int i=0;i<this->GetNumberOfVertices();i++){
+		if(mask[this->vertices[i]->Sid()]<=0.){
+			return 0.;
+		}
+	}
+
+	/*Return: */
+	return this->TotalSmbMelt(scaled);
+}
+/*}}}*/
+IssmDouble Element::TotalSmbRefreeze(IssmDouble* mask, bool scaled){/*{{{*/
+
+	/*Retrieve values of the mask defining the element: */
+	for(int i=0;i<this->GetNumberOfVertices();i++){
+		if(mask[this->vertices[i]->Sid()]<=0.){
+			return 0.;
+		}
+	}
+
+	/*Return: */
+	return this->TotalSmbRefreeze(scaled);
+}
+/*}}}*/
+void       Element::TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,int transformenum){/*{{{*/
+
+	/*All nodes have the same Coordinate System*/
+	int numnodes  = this->GetNumberOfNodes();
+	int* cs_array = xNew<int>(numnodes);
+	for(int i=0;i<numnodes;i++) cs_array[i]=transformenum;
+
+	/*Call core*/
+	TransformInvStiffnessMatrixCoord(Ke,this->nodes,numnodes,cs_array);
+
+	/*Clean-up*/
+	xDelete<int>(cs_array);
+}/*}}}*/
+void       Element::TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes_list,int numnodes,int* cs_array){/*{{{*/
+
+	int         i,j;
+	int         numdofs   = 0;
+	IssmDouble *transform = NULL;
+	IssmDouble *values    = NULL;
+
+	/*Get total number of dofs*/
+	for(i=0;i<numnodes;i++){
+		switch(cs_array[i]){
+			case PressureEnum: numdofs+=1; break;
+			case XYEnum:       numdofs+=2; break;
+			case XYZEnum:      numdofs+=3; break;
+			default: _error_("Coordinate system " << EnumToStringx(cs_array[i]) << " not supported yet");
+		}
+	}
+
+	/*Copy current stiffness matrix*/
+	values=xNew<IssmDouble>(Ke->nrows*Ke->nrows);
+	for(i=0;i<Ke->nrows;i++) for(j=0;j<Ke->nrows;j++) values[i*Ke->nrows+j]=Ke->values[i*Ke->nrows+j];
+
+	/*Get Coordinate Systems transform matrix*/
+	CoordinateSystemTransform(&transform,nodes_list,numnodes,cs_array);
+
+	/*Transform matrix: R*Ke*R^T */
+	TripleMultiply(transform,numdofs,numdofs,0,
+				values,Ke->nrows,Ke->nrows,0,
+				transform,numdofs,numdofs,1,
+				&Ke->values[0],0);
+
+	/*Free Matrix*/
+	xDelete<IssmDouble>(transform);
+	xDelete<IssmDouble>(values);
+}/*}}}*/
+void       Element::TransformLoadVectorCoord(ElementVector* pe,int transformenum){/*{{{*/
+
+	/*All nodes have the same Coordinate System*/
+	int  numnodes = this->GetNumberOfNodes();
+	int* cs_array = xNew<int>(numnodes);
+	for(int i=0;i<numnodes;i++) cs_array[i]=transformenum;
+
+	/*Call core*/
+	this->TransformLoadVectorCoord(pe,this->nodes,numnodes,cs_array);
+
+	/*Clean-up*/
+	xDelete<int>(cs_array);
+}/*}}}*/
+void       Element::TransformLoadVectorCoord(ElementVector* pe,int* cs_array){/*{{{*/
+
+	this->TransformLoadVectorCoord(pe,this->nodes,this->GetNumberOfNodes(),cs_array);
+
+}/*}}}*/
+void       Element::TransformLoadVectorCoord(ElementVector* pe,Node** nodes_list,int numnodes,int* cs_array){/*{{{*/
+
+	int         i;
+	int         numdofs   = 0;
+	IssmDouble *transform = NULL;
+	IssmDouble *values    = NULL;
+
+	/*Get total number of dofs*/
+	for(i=0;i<numnodes;i++){
+		switch(cs_array[i]){
+			case PressureEnum: numdofs+=1; break;
+			case XYEnum:       numdofs+=2; break;
+			case XYZEnum:      numdofs+=3; break;
+			default: _error_("Coordinate system " << EnumToStringx(cs_array[i]) << " not supported yet");
+		}
+	}
+
+	/*Copy current load vector*/
+	values=xNew<IssmDouble>(pe->nrows);
+	for(i=0;i<pe->nrows;i++) values[i]=pe->values[i];
+
+	/*Get Coordinate Systems transform matrix*/
+	CoordinateSystemTransform(&transform,nodes_list,numnodes,cs_array);
+
+	/*Transform matrix: R^T*pe */
+	MatrixMultiply(transform,numdofs,numdofs,1,
+				values,pe->nrows,1,0,
+				&pe->values[0],0);
+
+	/*Free Matrices*/
+	xDelete<IssmDouble>(transform);
+	xDelete<IssmDouble>(values);
+}/*}}}*/
+void       Element::TransformSolutionCoord(IssmDouble* values,int transformenum){/*{{{*/
+
+	/*All nodes have the same Coordinate System*/
+	int  numnodes = this->GetNumberOfNodes();
+	int* cs_array = xNew<int>(numnodes);
+	for(int i=0;i<numnodes;i++) cs_array[i]=transformenum;
+
+	/*Call core*/
+	this->TransformSolutionCoord(values,this->nodes,numnodes,cs_array);
+
+	/*Clean-up*/
+	xDelete<int>(cs_array);
+}/*}}}*/
+void       Element::TransformSolutionCoord(IssmDouble* values,int* transformenum_list){/*{{{*/
+	this->TransformSolutionCoord(values,this->nodes,this->GetNumberOfNodes(),transformenum_list);
+}/*}}}*/
+void       Element::TransformSolutionCoord(IssmDouble* values,int numnodes,int transformenum){/*{{{*/
+
+	/*All nodes have the same Coordinate System*/
+	int* cs_array = xNew<int>(numnodes);
+	for(int i=0;i<numnodes;i++) cs_array[i]=transformenum;
+
+	/*Call core*/
+	this->TransformSolutionCoord(values,this->nodes,numnodes,cs_array);
+
+	/*Clean-up*/
+	xDelete<int>(cs_array);
+}/*}}}*/
+void       Element::TransformSolutionCoord(IssmDouble* solution,int numnodes,int* cs_array){/*{{{*/
+	this->TransformSolutionCoord(solution,this->nodes,numnodes,cs_array);
+}/*}}}*/
+void       Element::TransformSolutionCoord(IssmDouble* values,Node** nodes_list,int numnodes,int transformenum){/*{{{*/
+	/*NOT NEEDED*/
+	/*All nodes have the same Coordinate System*/
+	int* cs_array = xNew<int>(numnodes);
+	for(int i=0;i<numnodes;i++) cs_array[i]=transformenum;
+
+	/*Call core*/
+	this->TransformSolutionCoord(values,nodes_list,numnodes,cs_array);
+
+	/*Clean-up*/
+	xDelete<int>(cs_array);
+}/*}}}*/
+void       Element::TransformSolutionCoord(IssmDouble* solution,Node** nodes_list,int numnodes,int* cs_array){/*{{{*/
+
+	int         i;
+	int         numdofs   = 0;
+	IssmDouble *transform = NULL;
+	IssmDouble *values    = NULL;
+
+	/*Get total number of dofs*/
+	for(i=0;i<numnodes;i++){
+		switch(cs_array[i]){
+			case PressureEnum: numdofs+=1; break;
+			case XYEnum:       numdofs+=2; break;
+			case XYZEnum:      numdofs+=3; break;
+			default: _error_("Coordinate system " << EnumToStringx(cs_array[i]) << " not supported yet");
+		}
+	}
+
+	/*Copy current solution vector*/
+	values=xNew<IssmDouble>(numdofs);
+	for(i=0;i<numdofs;i++) values[i]=solution[i];
+
+	/*Get Coordinate Systems transform matrix*/
+	CoordinateSystemTransform(&transform,nodes_list,numnodes,cs_array);
+
+	/*Transform matrix: R*U */
+	MatrixMultiply(transform,numdofs,numdofs,0,
+				values,numdofs,1,0,
+				&solution[0],0);
+
+	/*Free Matrices*/
+	xDelete<IssmDouble>(transform);
+	xDelete<IssmDouble>(values);
+}/*}}}*/
+void       Element::TransformStiffnessMatrixCoord(ElementMatrix* Ke,int transformenum){/*{{{*/
+
+	/*All nodes have the same Coordinate System*/
+	int  numnodes = this->GetNumberOfNodes();
+	int* cs_array = xNew<int>(numnodes);
+	for(int i=0;i<numnodes;i++) cs_array[i]=transformenum;
+
+	/*Call core*/
+	this->TransformStiffnessMatrixCoord(Ke,this->nodes,numnodes,cs_array);
+
+	/*Clean-up*/
+	xDelete<int>(cs_array);
+}/*}}}*/
+void       Element::TransformStiffnessMatrixCoord(ElementMatrix* Ke,int* transformenum_list){/*{{{*/
+	this->TransformStiffnessMatrixCoord(Ke,this->nodes,this->GetNumberOfNodes(),transformenum_list);
+}/*}}}*/
+void       Element::TransformStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes_list,int numnodes,int* cs_array){/*{{{*/
+
+	int         numdofs = 0;
+	IssmDouble *transform = NULL;
+	IssmDouble *values    = NULL;
+
+	/*Get total number of dofs*/
+	for(int i=0;i<numnodes;i++){
+		switch(cs_array[i]){
+			case PressureEnum: numdofs+=1; break;
+			case XYEnum:       numdofs+=2; break;
+			case XYZEnum:      numdofs+=3; break;
+			default: _error_("Coordinate system " << EnumToStringx(cs_array[i]) << " not supported yet");
+		}
+	}
+
+	/*Copy current stiffness matrix*/
+	values=xNew<IssmDouble>(Ke->nrows*Ke->nrows);
+	for(int i=0;i<Ke->nrows*Ke->nrows;i++) values[i]=Ke->values[i];
+
+	/*Get Coordinate Systems transform matrix*/
+	CoordinateSystemTransform(&transform,nodes_list,numnodes,cs_array);
+
+	/*Transform matrix: R^T*Ke*R */
+	TripleMultiply(transform,numdofs,numdofs,1,
+				values,Ke->nrows,Ke->nrows,0,
+				transform,numdofs,numdofs,0,
+				&Ke->values[0],0);
+
+	/*Free Matrix*/
+	xDelete<IssmDouble>(transform);
+	xDelete<IssmDouble>(values);
+}/*}}}*/
+void       Element::ViscousHeatingCreateInput(void){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble phi;
+	IssmDouble thickness;
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number vertices and allocate memory*/
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+	IssmDouble viscousheating[MAXVERTICES];
+
+	/*Retrieve all inputs and parameters*/
+	this->GetVerticesCoordinates(&xyz_list);
+	Input* vx_input = this->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input = this->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input = this->GetInput(VzEnum); _assert_(vz_input);
+
+	/*loop over vertices: */
+	Gauss* gauss=this->NewGauss();
+	for (int iv=0;iv<NUM_VERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		this->ViscousHeating(&phi,xyz_list,gauss,vx_input,vy_input,vz_input);
+
+		viscousheating[iv]=phi;
+	}
+
+	/*Create PentaVertex input, which will hold the basal friction:*/
+	this->AddInput(ViscousHeatingEnum,&viscousheating[0],P1Enum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+}
+/*}}}*/
+
+/*Enthalpy*/
+void       Element::ThermalToEnthalpy(IssmDouble * penthalpy,IssmDouble temperature,IssmDouble waterfraction,IssmDouble pressure){/*{{{*/
+
+	/*Ouput*/
+	IssmDouble enthalpy;
+
+	/*Get necessary parameters*/
+	IssmDouble latentheat,referencetemperature,heatcapacity;
+	parameters->FindParam(&latentheat,MaterialsLatentheatEnum);
+	parameters->FindParam(&referencetemperature,ConstantsReferencetemperatureEnum);
+	parameters->FindParam(&heatcapacity,MaterialsHeatcapacityEnum);
+
+	if(temperature<TMeltingPoint(pressure)){
+		enthalpy=heatcapacity*(temperature-referencetemperature);
+	}
+	else{
+		enthalpy=PureIceEnthalpy(pressure)+latentheat*waterfraction;
+	}
+
+	/*Assign output pointers:*/
+	*penthalpy=enthalpy;
+}
+/*}}}*/
+IssmDouble Element::TMeltingPoint(IssmDouble pressure){/*{{{*/
+
+	/*Get necessary parameters*/
+	IssmDouble beta,meltingpoint;
+	parameters->FindParam(&beta,MaterialsBetaEnum);
+	parameters->FindParam(&meltingpoint,MaterialsMeltingpointEnum);
+
+	return meltingpoint-beta*pressure;
+}
+/*}}}*/
+void       Element::EnthalpyToThermal(IssmDouble* ptemperature,IssmDouble* pwaterfraction,IssmDouble enthalpy,IssmDouble pressure){/*{{{*/
+
+	/*Ouput*/
+	IssmDouble temperature,waterfraction;
+
+	/*Get necessary parameters*/
+	IssmDouble latentheat,referencetemperature,heatcapacity;
+	parameters->FindParam(&latentheat,MaterialsLatentheatEnum);
+	parameters->FindParam(&referencetemperature,ConstantsReferencetemperatureEnum);
+	parameters->FindParam(&heatcapacity,MaterialsHeatcapacityEnum);
+
+	if(enthalpy<PureIceEnthalpy(pressure)){
+		temperature=referencetemperature+enthalpy/heatcapacity;
+		waterfraction=0.;
+	}
+	else{
+		temperature=TMeltingPoint(pressure);
+		waterfraction=(enthalpy-PureIceEnthalpy(pressure))/latentheat;
+	}
+
+	/*Assign output pointers:*/
+	*pwaterfraction=waterfraction;
+	*ptemperature=temperature;
+}
+/*}}}*/
+IssmDouble Element::EnthalpyDiffusionParameter(IssmDouble enthalpy,IssmDouble pressure){/*{{{*/
+
+	/*Get necessary parameters*/
+	IssmDouble heatcapacity,thermalconductivity,temperateiceconductivity;
+	parameters->FindParam(&heatcapacity,MaterialsHeatcapacityEnum);
+	parameters->FindParam(&thermalconductivity,MaterialsThermalconductivityEnum);
+	parameters->FindParam(&temperateiceconductivity,MaterialsTemperateiceconductivityEnum);
+
+	if(enthalpy<PureIceEnthalpy(pressure)){
+		return thermalconductivity/heatcapacity;
+	}
+	else{
+		return temperateiceconductivity/heatcapacity;
+	}
+}
+/*}}}*/
+IssmDouble Element::EnthalpyDiffusionParameterVolume(int numvertices,IssmDouble* enthalpy,IssmDouble* pressure){/*{{{*/
+
+	IssmDouble  lambda;                 // fraction of cold ice
+	IssmDouble  kappa,kappa_c,kappa_t;  //enthalpy conductivities
+	IssmDouble  Hc,Ht;
+	IssmDouble PIE[MAXVERTICES];
+	IssmDouble dHpmp[MAXVERTICES];
+
+	for(int iv=0; iv<numvertices; iv++){
+		PIE[iv]=PureIceEnthalpy(pressure[iv]);
+		dHpmp[iv]=enthalpy[iv]-PIE[iv];
+	}
+
+	bool allequalsign=true;
+	if(dHpmp[0]<0){
+		for(int iv=1; iv<numvertices;iv++) allequalsign=(allequalsign && (dHpmp[iv]<0));
+	}
+	else{
+		for(int iv=1; iv<numvertices;iv++) allequalsign=(allequalsign && (dHpmp[iv]>=0));
+	}
+
+	if(allequalsign){
+		kappa=EnthalpyDiffusionParameter(enthalpy[0], pressure[0]);
+	}
+	else {
+		/* return harmonic mean of thermal conductivities, weighted by fraction of cold/temperate ice,
+			cf Patankar 1980, pp44 */
+		kappa_c=EnthalpyDiffusionParameter(PureIceEnthalpy(0.)-1.,0.);
+		kappa_t=EnthalpyDiffusionParameter(PureIceEnthalpy(0.)+1.,0.);
+		Hc=0.; Ht=0.;
+		for(int iv=0; iv<numvertices;iv++){
+			if(enthalpy[iv]<PIE[iv])
+			 Hc+=(PIE[iv]-enthalpy[iv]);
+			else
+			 Ht+=(enthalpy[iv]-PIE[iv]);
+		}
+		_assert_((Hc+Ht)>0.);
+		lambda = Hc/(Hc+Ht);
+		kappa  = 1./(lambda/kappa_c + (1.-lambda)/kappa_t);
+	}
+
+	/*Clean up and return*/
+	return kappa;
+}
+/*}}}*/
+IssmDouble Element::PureIceEnthalpy(IssmDouble pressure){/*{{{*/
+
+	/*Get necessary parameters*/
+	IssmDouble referencetemperature,heatcapacity;
+	parameters->FindParam(&referencetemperature,ConstantsReferencetemperatureEnum);
+	parameters->FindParam(&heatcapacity,MaterialsHeatcapacityEnum);
+
+	return heatcapacity*(TMeltingPoint(pressure)-referencetemperature);
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Element.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Element.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Element.h	(revision 27955)
@@ -0,0 +1,430 @@
+/*!\file:  Element.h
+ * \brief abstract class for Element object
+ * This class is a place holder for the Tria and the Penta elements.
+ * It is derived from Element, so DataSets can contain them.
+*/
+
+#ifndef _ELEMENT_H_
+#define _ELEMENT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../../datastructures/datastructures.h"
+#include "../../toolkits/toolkits.h"
+class DataSet;
+class Parameters;
+class Parameter;
+class Elements;
+class Loads;
+class Nodes;
+class Node;
+class Vertices;
+class Vertex;
+class Materials;
+class Material;
+class Matlitho;
+class Inputs;
+class Inputs;
+class Input;
+class Input;
+class ElementInput;
+class DatasetInput;
+class IoModel;
+class SealevelGeometry;
+class Gauss;
+class GrdLoads;
+class ElementVector;
+template <class doublematrix> class Matrix;
+template <class doubletype> class Vector;
+class ElementMatrix;
+class ElementVector;
+class BarystaticContributions;
+/*}}}*/
+
+class Element: public Object{
+
+	public:
+		int          id;
+		int          sid;
+		int          lid;
+		Inputs     *inputs;
+		Node       **nodes;
+		Vertex     **vertices;
+		Material    *material;
+		Parameters  *parameters;
+		bool         isonsurface;
+		bool         isonbase;
+
+		int* element_type_list;
+		int  element_type;
+
+	public:
+		/*Constructors/Destructores*/
+		Element();
+		~Element();
+
+		/*Functions*/
+		/*bool               AllActive(void);*/
+		/*bool               AnyActive(void);*/
+		bool               AnyFSet(void);
+      void               ArmaProcess_pre18Oct2022(bool isstepforarma,int arorder,int maorder,IssmDouble telapsed_arma,IssmDouble tstep_arma,IssmDouble* termconstant,IssmDouble* trend,IssmDouble* arlagcoefs,IssmDouble* malagcoefs,bool isfieldstochastic,int enum_type);
+      void               ArmaProcess(bool isstepforarma,int arorder,int maorder,int numparams,int numbreaks,IssmDouble tstep_arma,IssmDouble* polyparams,IssmDouble* arlagcoefs,IssmDouble* malagcoefs,IssmDouble* datebreaks,bool isfieldstochastic,int enum_type);
+		void               BasinLinearFloatingiceMeltingRate(IssmDouble* deepwaterel,IssmDouble* upperwatermelt,IssmDouble* upperwaterel,IssmDouble* perturbation);
+		void               CalvingSetZeroRate(void);
+		void               CalvingRateToVector(void);
+		void               ComputeLambdaS(void);
+		void               ComputeNewDamage();
+		void               ComputeStrainRate();
+		void               CoordinateSystemTransform(IssmDouble** ptransform,Node** nodes,int numnodes,int* cs_array);
+		void               DeepEcho();
+		void               DeleteMaterials(void);
+		void               Delta18oParameterization(void);
+		void               Delta18opdParameterization(void);
+		void               SmbGradCompParameterization(void);
+		IssmDouble         Divergence(void);
+		void               dViscositydBFS(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
+		void               dViscositydBHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void               dViscositydBSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void               dViscositydBMOLHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input, Input* vxshear_input ,Input* vyshear_input,Input* thickness_input,Input* n_input, IssmDouble zeta);
+		void               dViscositydDSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void               Echo();
+		void               FindParam(bool* pvalue,int paramenum);
+		void               FindParam(int* pvalue,int paramenum);
+		void               FindParam(IssmDouble* pvalue,int paramenum);
+		IssmDouble         FindParam(int paramenum);
+		void               FindParam(int** pvalues,int* psize,int paramenum);
+		IssmDouble         FloatingArea(IssmDouble* mask, bool scaled);
+		void	             GetDofList(int** pdoflist,int approximation_enum,int setenum);
+		void	             GetDofListPressure(int** pdoflist,int setenum);
+		void	             GetDofListVelocity(int** pdoflist,int setenum);
+		void	             GetDofListLocal(int** pdoflist,int approximation_enum,int setenum);
+		void	             GetDofListLocalPressure(int** pdoflist,int setenum);
+		void	             GetDofListLocalVelocity(int** pdoflist,int setenum);
+		void               GetInputListOnNodes(IssmDouble* pvalue,int enumtype);
+		void               GetInputListOnNodes(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue);
+		void               GetInputListOnNodesVelocity(IssmDouble* pvalue,int enumtype);
+		void               GetInputListOnVertices(IssmDouble* pvalue,int enumtype);
+		void               GetInputListOnVerticesAtTime(IssmDouble* pvalue,int enumtype,IssmDouble time);
+		void               GetInputListOnVertices(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue);
+		void               GetInputLocalMinMaxOnNodes(IssmDouble* min,IssmDouble* max,IssmDouble* ug);
+		void               GetInputValue(bool* pvalue,int enum_type);
+		void               GetInputValue(int* pvalue,int enum_type);
+		void               GetInputValue(IssmDouble* pvalue,int enum_type);
+		void               GetInputValue(IssmDouble* pvalue,Gauss* gauss,int enum_type);
+		Node*              GetNode(int nodeindex);
+		int                GetNodeIndex(Node* node);
+		void               GetNodesLidList(int* lidlist);
+		void               GetNodesSidList(int* sidlist);
+		void               GetPhi(IssmDouble* phi, IssmDouble*  epsilon, IssmDouble viscosity);
+		void               GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int solutionenum);
+		void               GetVectorFromInputs(Vector<IssmDouble>* vector, int name_enum, int type);
+		void               GetVectorFromInputs(Vector<IssmDouble>* vector, int name_enum, int type,IssmDouble time);
+		void	             GetVerticesLidList(int* lidlist);
+		void	             GetVerticesPidList(int* pidlist);
+		void               GetVerticesConnectivityList(int* connectivitylist);
+		void               GetVerticesCoordinates(IssmDouble** xyz_list);
+		void               GetVerticesSidList(int* sidlist);
+		IssmDouble         GetXcoord(IssmDouble* xyz_list,Gauss* gauss);
+		IssmDouble         GetYcoord(IssmDouble* xyz_list,Gauss* gauss);
+		IssmDouble         GetZcoord(IssmDouble* xyz_list,Gauss* gauss);
+		void               GradientIndexing(int* indexing,int control_index);
+		IssmDouble         GroundedArea(IssmDouble* mask, bool scaled);
+		bool               HasNodeOnBase();
+		bool               HasNodeOnSurface();
+		IssmDouble         IceMass(bool scaled);
+		IssmDouble         IceMass(IssmDouble* mask, bool scaled);
+		IssmDouble         IceVolume(IssmDouble* mask, bool scaled);
+		IssmDouble         IceVolumeAboveFloatation(IssmDouble* mask, bool scaled);
+		int                Id();
+		void               InputCreate(IssmDouble* vector,Inputs* inputs,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int code);
+		void               InputCreateP1FromConstant(Inputs* inputs,IoModel* iomodel,IssmDouble value,int vector_enum);
+		void               ControlInputCreate(IssmDouble* doublearray,IssmDouble* independents_min,IssmDouble* independents_max,Inputs*inputs,IoModel* iomodel,int M,int N,IssmDouble scale,int input_enum,int id);
+		void					 DatasetInputAdd(int enum_type,IssmDouble* vector,Inputs* inputs,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int input_enum);
+		void               InputUpdateFromConstant(IssmDouble constant, int name);
+		void               InputUpdateFromConstant(int constant, int name);
+		void               InputUpdateFromConstant(bool constant, int name);
+		void               InputUpdateFromConstant(IssmDouble constant, int name, int type);
+
+		bool               IsAllFloating();
+		bool               IsAllGrounded();
+		bool               IsGrounded();
+		bool               IsOnBase();
+		bool               IsOnSurface();
+		bool               IsIceInElement();
+		bool               IsIceOnlyInElement();
+		bool               IsOceanInElement();
+		bool               IsOceanOnlyInElement();
+		bool		   IsAllMinThicknessInElement();
+		bool               IsLandInElement();
+		void               Ismip6FloatingiceMeltingRate();
+		void               LapseRateBasinSMB(int numelevbins, IssmDouble* lapserates, IssmDouble* elevbins,IssmDouble* refelevation);
+		void               LinearFloatingiceMeltingRate();
+		void               SpatialLinearFloatingiceMeltingRate();
+		void               MantlePlumeGeothermalFlux();
+		void               MarshallElement2(MarshallHandle* marshallhandle,int numanalyses);
+		void               MigrateGroundingLine(IssmDouble* sheet_ungrounding);
+		void               MismipFloatingiceMeltingRate();
+		void               MonthlyFactorBasin(IssmDouble* monthlyfac,int enum_type); 
+		void               MonthlyPiecewiseLinearEffectBasin(int nummonthbreaks,IssmDouble* monthlyintercepts,IssmDouble* monthlytrends,IssmDouble* monthlydatebreaks,int enum_type); 
+		void               BeckmannGoosseFloatingiceMeltingRate();
+		void               MungsmtpParameterization(void);
+		ElementMatrix*     NewElementMatrix(int approximation_enum=NoneApproximationEnum);
+		ElementMatrix*     NewElementMatrixCoupling(int number_nodes,int approximation_enum=NoneApproximationEnum);
+		ElementVector*     NewElementVector(int approximation_enum=NoneApproximationEnum);
+		void               PicoUpdateBoxid(int* pmax_boxid_basin);
+		void               PicoUpdateBox(int loopboxid);
+		void               PicoComputeBasalMelt();
+		void               PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm,bool issetpddfac);
+		void               PositiveDegreeDaySicopolis(bool isfirnwarming);
+		void               SmbDebrisEvatt();
+		void               RignotMeltParameterization();
+		void               ResultInterpolation(int* pinterpolation,int*nodesperelement,int* parray_size, int output_enum);
+		void               ResultToPatch(IssmDouble* values,int nodesperelement,int output_enum);
+		void               ResultToMatrix(IssmDouble* values,int ncols,int output_enum);
+		void               ResultToVector(Vector<IssmDouble>* vector,int output_enum);
+		void               SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum, int analysis_type);
+		void               SetBoolInput(Inputs* inputs,int enum_in,bool value);
+
+		void               SetIntInput(Inputs* inputs,int enum_in,int value);
+		void               SmbSemic();
+		void               SmbSemicTransient();
+		int                Sid();
+		void               SmbGemb(IssmDouble timeinputs, int count);
+		void               StrainRateESA(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void               StrainRateFS(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
+		void               StrainRateHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void               StrainRateHO2dvertical(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void               StrainRateMOLHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input,IssmDouble zeta);
+		void               StrainRateSSA(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void               StrainRateSSA1d(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input);
+		void               StressMaxPrincipalCreateInput(void);
+		void               SubglacialWaterPressure(int output_enum);
+		IssmDouble         TotalFloatingBmb(IssmDouble* mask, bool scaled);
+		IssmDouble         TotalGroundedBmb(IssmDouble* mask, bool scaled);
+		IssmDouble         TotalSmb(IssmDouble* mask, bool scaled);
+		IssmDouble         TotalSmbMelt(IssmDouble* mask, bool scaled);
+		IssmDouble         TotalSmbRefreeze(IssmDouble* mask, bool scaled);
+		void               TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,int cs_enum);
+		void               TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int cs_enum);
+		void               TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int* cs_array);
+		void               TransformLoadVectorCoord(ElementVector* pe,int cs_enum);
+		void               TransformLoadVectorCoord(ElementVector* pe,int* cs_array);
+		void               TransformLoadVectorCoord(ElementVector* pe,Node** nodes,int numnodes,int cs_enum);
+		void               TransformLoadVectorCoord(ElementVector* pe,Node** nodes,int numnodes,int* cs_array);
+		void               TransformLoadVectorCoord(ElementVector* pe,int numnodes,int transformenum){_error_("not implemented yet");};/*Tiling only*/
+		void               TransformLoadVectorCoord(ElementVector* pe,int numnodes,int* transformenum_list){_error_("not implemented yet");};/*Tiling only*/
+		void               TransformSolutionCoord(IssmDouble* solution,int cs_enum);
+		void               TransformSolutionCoord(IssmDouble* solution,int* cs_array);
+		void               TransformSolutionCoord(IssmDouble* solution,int numnodes,int cs_enum);
+		void               TransformSolutionCoord(IssmDouble* solution,int numnodes,int* cs_array);
+		void               TransformSolutionCoord(IssmDouble* solution,Node** nodes,int numnodes,int cs_enum);
+		void               TransformSolutionCoord(IssmDouble* solution,Node** nodes,int numnodes,int* cs_array);
+		void               TransformStiffnessMatrixCoord(ElementMatrix* Ke,int cs_enum);
+		void               TransformStiffnessMatrixCoord(ElementMatrix* Ke,int* cs_array);
+		void               TransformStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int cs_enum);
+		void               TransformStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int* cs_array);
+		void               TransformStiffnessMatrixCoord(ElementMatrix* Ke,int numnodes,int* transformenum_list){_error_("not implemented yet");};/*Tiling only*/
+		void               ViscousHeatingCreateInput(void);
+		void               ThermalToEnthalpy(IssmDouble * penthalpy,IssmDouble temperature,IssmDouble waterfraction,IssmDouble pressure);
+		IssmDouble         TMeltingPoint(IssmDouble pressure);
+		void               EnthalpyToThermal(IssmDouble* ptemperature,IssmDouble* pwaterfraction,IssmDouble enthalpy,IssmDouble pressure);
+		IssmDouble         EnthalpyDiffusionParameter(IssmDouble enthalpy,IssmDouble pressure);
+		IssmDouble         EnthalpyDiffusionParameterVolume(int numvertices,IssmDouble* enthalpy,IssmDouble* pressure);
+		IssmDouble         PureIceEnthalpy(IssmDouble pressure);
+
+		/*Virtual functions*/
+		virtual void       AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum){_error_("not implemented");};
+		virtual void       AddInput(int input_enum, IssmDouble* values, int interpolation_enum){_error_("not implemented");};
+		virtual void       AddControlInput(int input_enum,Inputs* inputs,IoModel* iomodel,IssmDouble* values,IssmDouble* values_min,IssmDouble* values_max, int interpolation_enum,int id){_error_("not supported yet");};
+		virtual void       DatasetInputCreate(IssmDouble* array,int M,int N,int* individual_enums,int num_inputs,Inputs* inputs,IoModel* iomodel,int input_enum){_error_("not supported");};
+		virtual void       AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part)=0;
+		virtual void		 BasalNodeIndices(int* pnumindices,int** pindices,int finiteelement){_error_("not implemented yet");};
+		virtual void       CalvingRateParameterization(void){_error_("not implemented yet");};
+		virtual void       CalvingRateCalvingMIP(void){_error_("not implemented yet");};
+		virtual void       CalvingRateVonmises(void){_error_("not implemented yet");};
+		virtual void       CalvingRateVonmisesAD(void){_error_("not implemented yet");};
+		virtual void       CalvingRateTest(void){_error_("not implemented yet");};
+		virtual void       CalvingCrevasseDepth(void){_error_("not implemented yet");};
+		virtual void	    CalvingRateLevermann(void)=0;
+		virtual void	    CalvingPollard(void){_error_("not implemented yet");};
+		virtual void       CalvingFluxLevelset(void){_error_("not implemented yet");};
+		virtual void       CalvingMeltingFluxLevelset(void){_error_("not implemented yet");};
+		virtual IssmDouble CharacteristicLength(void)=0;
+		virtual void       ComputeBasalStress(void){_error_("not implemented yet");};
+		virtual void       ComputeDeviatoricStressTensor(void)=0;
+		virtual void       ComputeSigmaNN(void)=0;
+		virtual void       ComputeSigmaVM(void){_error_("not implemented yet");};
+		virtual void       ComputeStressTensor(void)=0;
+		virtual void       ComputeEsaStrainAndVorticity(void)=0;
+		virtual void       Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters,Inputs* inputsin)=0;
+		virtual void       ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index,int offset,int M,int N,int interp)=0;
+		virtual void       ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum,int control_interp)=0;
+		virtual void       CreateDistanceInputFromSegmentlist(IssmDouble* distances,int distanceenum){_error_("not implemented yet");};
+		virtual void       CreateInputTimeAverage(int transientinput_enum,int averagedinput_enum,IssmDouble init_time,IssmDouble end_time,int averaging_method){_error_("not implemented yet "<<this->ObjectEnum());};
+		virtual void       ElementResponse(IssmDouble* presponse,int response_enum)=0;
+		virtual void       ElementSizes(IssmDouble* phx,IssmDouble* phy,IssmDouble* phz)=0;
+		virtual void       ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze, Vector<IssmDouble>* vareae, bool spherical=false)=0;
+		virtual void       ElementCoordinates(Vector<IssmDouble>* vlonge,Vector<IssmDouble>* vlate,Vector<IssmDouble>* vareae)=0;
+		virtual int        FiniteElement(void)=0;
+		virtual IssmDouble FloatingArea(bool scaled)=0;
+		virtual void       FSContactMigration(Vector<IssmDouble>* vertex_sigmann,Vector<IssmDouble>* vertex_waterpressure)=0;
+		virtual Element*   GetBasalElement(void)=0;
+		virtual int        GetElementType(void)=0;
+		virtual IssmDouble GetHorizontalSurfaceArea(void){_error_("not implemented");};
+		virtual void       GetGroundedPart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlyfloating)=0;
+		virtual IssmDouble GetGroundedPortion(IssmDouble* xyz_list)=0;
+		virtual void        GetFractionGeometry(IssmDouble* weights, IssmDouble* pphi, int* ppoint1,IssmDouble* pfraction1,IssmDouble* pfraction2, bool* ptrapezeisnegative, IssmDouble* gl)=0;
+		virtual void       GetNodalWeightsAndAreaAndCentroidsFromLeveset(IssmDouble* loadweights, IssmDouble* ploadarea, IssmDouble* platbar, IssmDouble* plongbar, IssmDouble late, IssmDouble longe, IssmDouble area,  int levelsetenum)=0;
+		virtual void       GetNodalWeightsAndAreaAndCentroidsFromLeveset(IssmDouble* loadweights, IssmDouble* ploadarea, IssmDouble* platbar, IssmDouble* plongbar, IssmDouble late, IssmDouble longe, IssmDouble area, int levelset1enum, int levelset2enum)=0;
+		virtual void        GetBarycenterFromLevelset(IssmDouble* platbar, IssmDouble* plongbar,IssmDouble phi,IssmDouble fraction1,IssmDouble fraction2,IssmDouble late, IssmDouble longe, int point1,int istrapeze1, IssmDouble planetradius)=0;
+
+		virtual IssmDouble GetIcefrontArea(){_error_("not implemented");};
+		virtual void       GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum)=0;
+		virtual DatasetInput* GetDatasetInput(int inputenum){_error_("not implemented");};
+		virtual Input*    GetInput(int inputenum)=0;
+		virtual Input*    GetInput(int inputenum,IssmDouble time)=0;
+		virtual Input*    GetInput(int inputenum,IssmDouble start_time,IssmDouble end_time,int averaging_method)=0;
+		virtual void       GetInputValue(IssmDouble* pvalue,Vertex* vertex,int enumtype){_error_("not implemented yet");};
+		virtual void       GetInputValue(IssmDouble* pvalue,Node* node,int enumtype){_error_("not implemented yet");};
+		virtual void       GetInputListOnVertices(IssmDouble* pvalue,Input* input,IssmDouble default_value)=0;
+		virtual void       GetInputListOnNodes(IssmDouble* pvalue,Input* input,IssmDouble default_value)=0;
+		virtual void       GetLevelCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum,IssmDouble level)=0;
+		virtual void       GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* levelsetvalues)=0;
+		virtual int        GetVertexIndex(Vertex* vertex){_error_("not implemented");};;
+		virtual int        GetNumberOfNodes(void)=0;
+		virtual int        GetNumberOfNodes(int enum_type)=0;
+		virtual int        GetNumberOfVertices(void)=0;
+		virtual void       GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,int N,const char* data,int offset)=0;
+		virtual void       GetVerticesCoordinatesBase(IssmDouble** xyz_list)=0;
+		virtual void       GetVerticesCoordinatesTop(IssmDouble** xyz_list)=0;
+		virtual IssmDouble GroundedArea(bool scaled)=0;
+		virtual IssmDouble IceVolume(bool scaled)=0;
+		virtual IssmDouble IceVolumeAboveFloatation(bool scaled)=0;
+		virtual IssmDouble IcefrontMassFlux(bool scaled){_error_("not implemented");};
+		virtual IssmDouble IcefrontMassFluxLevelset(bool scaled){_error_("not implemented");};
+		virtual IssmDouble GroundinglineMassFlux(bool scaled){_error_("not implemented");};
+		virtual void       InputDepthAverageAtBase(int enum_type,int average_enum_type)=0;
+		virtual void       DatasetInputExtrude(int input_enum,int start){_error_("not implemented yet");};
+		virtual void       InputExtrude(int input_enum,int start)=0;
+		virtual void       InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solution,int inputenum)=0;
+		virtual void       InputUpdateFromSolutionOneDof(IssmDouble* solution,int inputenum)=0;
+		#ifdef _HAVE_DAKOTA_
+		virtual void  InputUpdateFromMatrixDakota(IssmDouble* matrix, int rows, int ncols, int name, int type)=0;
+		virtual void  InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type)=0;
+		virtual void  InputScaleFromDakota(IssmDouble* distributed_values, IssmDouble* partition, int npart, int nt, int name)=0;
+		#endif
+		virtual void  InputUpdateFromIoModel(int index, IoModel* iomodel)=0;
+		virtual void  InputUpdateFromVector(IssmDouble* vector, int name, int type)=0;
+		virtual bool       IsFaceOnBoundary(void)=0;
+		virtual bool       IsIcefront(void)=0;
+		virtual bool       IsNodeOnShelfFromFlags(IssmDouble* flags)=0;
+
+		virtual bool       IsZeroLevelset(int levelset_enum)=0;
+		virtual void       JacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss)=0;
+		virtual void       JacobianDeterminantBase(IssmDouble* Jdet,IssmDouble* xyz_list_base,Gauss* gauss)=0;
+		virtual void       JacobianDeterminantLine(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss)=0;
+		virtual void       JacobianDeterminantSurface(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss)=0;
+		virtual void       JacobianDeterminantTop(IssmDouble* Jdet,IssmDouble* xyz_list_base,Gauss* gauss)=0;
+		virtual void       Marshall(MarshallHandle* marshallhandle)=0;
+		virtual IssmDouble Masscon(IssmDouble* levelset)=0;
+		virtual IssmDouble MassFlux(IssmDouble* segment)=0;
+		virtual IssmDouble MassFlux(IssmDouble x1,IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id)=0;
+		virtual IssmDouble MinEdgeLength(IssmDouble* xyz_list)=0;
+		virtual IssmDouble Misfit(int modelenum,int observationenum,int weightsenum)=0;
+		virtual IssmDouble MisfitArea(int weightsenum)=0;
+		virtual void	   MovingFrontalVelocity(void){_error_("not implemented yet");};
+		virtual Gauss*     NewGauss(void)=0;
+		virtual Gauss*     NewGauss(int order)=0;
+		virtual Gauss*     NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order)=0;
+		virtual Gauss*     NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert)=0;
+		virtual Gauss*     NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order)=0;
+		virtual Gauss*     NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,int order)=0;
+      virtual Gauss*     NewGauss(IssmDouble fraction1,IssmDouble fraction2,int order)=0;
+		virtual Gauss*     NewGaussBase(int order)=0;
+		virtual Gauss*     NewGaussLine(int vertex1,int vertex2,int order)=0;
+		virtual Gauss*     NewGaussTop(int order)=0;
+		virtual void       NodalFunctions(IssmDouble* basis,Gauss* gauss)=0;
+		virtual void       NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss)=0;
+		virtual void       NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss)=0;
+		virtual void       NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss)=0;
+		virtual void       NodalFunctionsPressure(IssmDouble* basis, Gauss* gauss)=0;
+		virtual void       NodalFunctionsP1(IssmDouble* basis,Gauss* gauss)=0;
+		virtual void       NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss)=0;
+		virtual void       NodalFunctionsP2(IssmDouble* basis,Gauss* gauss)=0;
+		virtual void       NodalFunctionsVelocity(IssmDouble* basis, Gauss* gauss)=0;
+		virtual void       NodalFunctionsTensor(IssmDouble* basis, Gauss* gauss)=0;
+		virtual int        NodalValue(IssmDouble* pvalue, int index, int natureofdataenum)=0;
+		virtual void       NormalBase(IssmDouble* normal,IssmDouble* xyz_list)=0;
+		virtual void       NormalSection(IssmDouble* normal,IssmDouble* xyz_list)=0;
+		virtual void       NormalTop(IssmDouble* normal,IssmDouble* xyz_list)=0;
+		virtual int        NumberofNodesPressure(void)=0;
+		virtual int        NumberofNodesVelocity(void)=0;
+		virtual void       PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding)=0;
+		virtual int        PressureInterpolation()=0;
+      virtual void       Recover3DMOLHOInput(int targetVel_enum, int numnodes, IssmDouble* vb,  IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s){_error_("not implemented yet");};
+		virtual void       ReduceMatrices(ElementMatrix* Ke,ElementVector* pe)=0;
+		virtual void       ResetFSBasalBoundaryCondition()=0;
+		virtual void       ResetHooks()=0;
+		virtual void       SetElementInput(int enum_in,IssmDouble value){_error_("not implemented yet");};
+		virtual void       SetElementInput(int enum_in,IssmDouble value, int type)=0;
+		virtual void       SetElementInput(Inputs* inputs,int enum_in,IssmDouble values){_error_("not implemented yet");};
+		virtual void       SetElementInput(Inputs* inputs,int numindices,int* indices,IssmDouble* values,int enum_in){_error_("not implemented yet");};
+		virtual void       SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index,int offset,int M,int N)=0;
+		virtual void       SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters)=0;
+		virtual void       SetTemporaryElementType(int element_type_in)=0;
+	   virtual Element*   SpawnBasalElement(bool depthaverage_materials=false)=0;
+		virtual Element*   SpawnTopElement(void)=0;
+		virtual bool       IsSpawnedElement(void)=0;
+		virtual IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa)=0;
+		virtual void       StabilizationParameterAnisotropic(IssmDouble* tau_parameter_anisotropic, IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble hx, IssmDouble hy, IssmDouble hz, IssmDouble kappa)=0;
+		virtual void	    StrainRateparallel(void)=0;
+		virtual void	    StrainRateperpendicular(void)=0;
+		virtual void	    StressIntensityFactor(void)=0;
+		virtual IssmDouble SurfaceArea(void)=0;
+		virtual void       TangentBase(IssmDouble* bed_tangent,IssmDouble* bed_normal){_error_("not implemented yet");};
+		virtual int        TensorInterpolation()=0;
+		virtual IssmDouble TimeAdapt()=0;
+		virtual IssmDouble TotalCalvingFluxLevelset(bool scaled){_error_("not implemented");};
+		virtual IssmDouble TotalCalvingMeltingFluxLevelset(bool scaled){_error_("not implemented");};
+		virtual IssmDouble TotalFloatingBmb(bool scaled)=0;
+		virtual IssmDouble TotalGroundedBmb(bool scaled)=0;
+		virtual IssmDouble TotalSmb(bool scaled)=0;
+		virtual IssmDouble TotalSmbMelt(bool scaled)=0;
+		virtual IssmDouble TotalSmbRefreeze(bool scaled)=0;
+		virtual void       Update(Inputs* inputs,int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finite_element)=0;
+		virtual void       UpdateConstraintsExtrudeFromBase(void)=0;
+		virtual void       UpdateConstraintsExtrudeFromTop(void)=0;
+		virtual int        UpdatePotentialUngrounding(IssmDouble* potential_sheet_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf)=0;
+		virtual void       ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss)=0;
+		virtual void       ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss)=0;
+		virtual int        VelocityInterpolation()=0;
+		virtual int        VertexConnectivity(int vertexindex)=0;
+		virtual void       VerticalSegmentIndices(int** pindices,int* pnumseg)=0;
+		virtual void       VerticalSegmentIndicesBase(int** pindices,int* pnumseg)=0;
+		virtual void       ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not implemented yet");};
+		virtual void       WriteFieldIsovalueSegment(DataSet* segments,int fieldenum,IssmDouble fieldvalue){_error_("not implemented yet");};
+
+		#ifdef _HAVE_ESA_
+		virtual void          EsaGeodetic2D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast, Vector<IssmDouble>* pX, Vector<IssmDouble>* pY,IssmDouble* xx,IssmDouble* yy)=0;
+		virtual void          EsaGeodetic3D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz)=0;
+		#endif
+		#ifdef _HAVE_SEALEVELCHANGE_
+		virtual IssmDouble    GetArea3D(void)=0;
+		virtual IssmDouble    GetAreaSpherical(void)=0;
+		virtual IssmDouble    GetTriangleAreaSpherical(IssmDouble xyz_list[3][3])=0;
+		virtual void          GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,Matlitho* litho, IssmDouble* x,IssmDouble* y)=0;
+
+		virtual void       SealevelchangeGeometrySubElementKernel(SealevelGeometry* slgeom)=0;
+		virtual void       SealevelchangeShift(GrdLoads* loads, IssmDouble offset, SealevelGeometry* slgeom)=0;
+		virtual void       SealevelchangeGeometryInitial(IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae, int* lids, int* vcount)=0;
+		virtual void       SealevelchangeGeometryCentroidLoads(SealevelGeometry* slgeom, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae)=0;
+		virtual void       SealevelchangeGeometrySubElementLoads(SealevelGeometry* slgeom, IssmDouble* areae)=0;
+		virtual void       SealevelchangeBarystaticLoads(GrdLoads* loads, BarystaticContributions* barycontrib, SealevelGeometry* slgeom)=0;
+		virtual void       SealevelchangeConvolution(IssmDouble* sealevelpercpu, GrdLoads* loads, IssmDouble* rotationvector,SealevelGeometry* slgeom)=0;
+		virtual void       SealevelchangeOceanAverage(GrdLoads* loads, Vector<IssmDouble>* oceanareas, Vector<IssmDouble>* subelementoceanareas, IssmDouble* sealevelpercpu, SealevelGeometry* slgeom)=0;
+		virtual void       SealevelchangeDeformationConvolution(IssmDouble* sealevelpercpu, GrdLoads* loads, IssmDouble* rotationvector,SealevelGeometry* slgeom)=0;
+		virtual void       SealevelchangeUpdateViscousFields(IssmDouble lincoeff, int newindex, int offset)=0;
+		#endif
+
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/ElementHook.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/ElementHook.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/ElementHook.cpp	(revision 27955)
@@ -0,0 +1,244 @@
+/*!\file ElementHook.c
+ * \brief: implementation of the ElementHook object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*Object constructors and destructor*/
+ElementHook::ElementHook(){/*{{{*/
+	numanalyses=UNDEF;
+	this->hnodes     = NULL;
+	this->hvertices  = NULL;
+	this->hmaterial  = NULL;
+	this->hneighbors = NULL;
+}
+/*}}}*/
+ElementHook::~ElementHook(){/*{{{*/
+
+	if(this->hnodes){
+		for(int i=0;i<this->numanalyses;i++){
+			if(this->hnodes[i]) delete this->hnodes[i]; 
+		}
+		delete [] this->hnodes;
+	}
+	delete hvertices;
+	delete hmaterial;
+	delete hneighbors;
+}
+/*}}}*/
+ElementHook::ElementHook(int in_numanalyses,int element_id,int numvertices,IoModel* iomodel){/*{{{*/
+
+	/*retrieve material_id*/
+	int material_id;
+	material_id = element_id;
+
+	/*retrieve vertices ids*/
+	int* vertex_ids = xNew<int>(numvertices);
+	for(int i=0;i<numvertices;i++){ 
+		vertex_ids[i]=reCast<int>(iomodel->elements[(element_id-1)*numvertices+i]);
+	}
+
+	this->numanalyses = in_numanalyses;
+	this->hnodes      = new Hook*[in_numanalyses];
+	this->hvertices   = new Hook(&vertex_ids[0],numvertices);
+	this->hmaterial   = new Hook(&material_id,1);
+	this->hneighbors  = NULL;
+
+	/*Initialize hnodes as NULL*/
+	for(int i=0;i<this->numanalyses;i++){
+		this->hnodes[i]=NULL;
+	}
+
+	/*Clean up*/
+	xDelete<int>(vertex_ids);
+
+}
+/*}}}*/
+void ElementHook::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int i;
+	bool* hnodesi_null=NULL; /*intermediary needed*/
+	bool  hnodes_null=true; /*this could be NULL on empty constructor*/
+	bool  hneighbors_null=true; /*don't deal with hneighbors, unless explicitely asked to*/
+
+	_assert_(this);
+
+	/*preliminary, before marshall starts: */
+	if(marshallhandle->OperationNumber()!=MARSHALLING_LOAD){
+		if(this->hneighbors)hneighbors_null=false;
+		if(this->hnodes){
+			hnodes_null=false;
+			hnodesi_null=xNew<bool>(numanalyses);
+			for(i=0;i<numanalyses;i++){
+				if(this->hnodes[i])hnodesi_null[i]=false;
+				else hnodesi_null[i]=true;
+			}
+		}
+	}
+
+	/*ok, marshall operations: */
+	int object_enum = ElementHookEnum;
+	marshallhandle->call(object_enum);
+	marshallhandle->call(this->numanalyses);
+	marshallhandle->call(hneighbors_null);
+	marshallhandle->call(hnodes_null);
+	marshallhandle->call(hnodesi_null,numanalyses);
+
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD){
+
+		if (!hnodes_null)this->hnodes = new Hook*[numanalyses];
+		else this->hnodes=NULL;
+		this->hvertices   = new Hook();
+		this->hmaterial   = new Hook();
+		if(!hneighbors_null)this->hneighbors  = new Hook();
+		else this->hneighbors=NULL;
+
+		/*Initialize hnodes: */
+		if (this->hnodes){
+			for(int i=0;i<this->numanalyses;i++){
+				if(!hnodesi_null[i])this->hnodes[i]=new Hook();
+				else this->hnodes[i]=NULL;
+			}
+		}
+	}
+
+	if (this->hnodes){ 
+		for (i=0;i<numanalyses;i++) if(this->hnodes[i])this->hnodes[i]->Marshall(marshallhandle);
+	}
+	this->hvertices->Marshall(marshallhandle);
+	this->hmaterial->Marshall(marshallhandle);
+	if(this->hneighbors)this->hneighbors->Marshall(marshallhandle);
+
+	/*Free resources: */
+	if(hnodesi_null) xDelete<bool>(hnodesi_null);
+
+}
+/*}}}*/
+
+void ElementHook::DeepEcho(){/*{{{*/
+
+	_printf_(" ElementHook DeepEcho:\n");
+	_printf_("  numanalyses : "<< this->numanalyses <<"\n");
+
+	_printf_("  hnodes:\n");
+	if(hnodes){
+		for(int i=0;i<this->numanalyses;i++) {
+			if(hnodes[i]) hnodes[i]->DeepEcho();
+			else _printf_("  hnodes["<< i << "] = NULL\n"); 
+		}
+	}
+	else _printf_("  hnodes = NULL\n");
+
+	_printf_("  hvertices:\n");
+	if(hvertices) hvertices->DeepEcho();
+	else _printf_("  hvertices = NULL\n");
+
+	_printf_("  hmaterial:\n");
+	if(hmaterial) hmaterial->DeepEcho();
+   else _printf_("  hmaterial = NULL\n");
+
+	_printf_("  hneighbors:\n");
+	if(hneighbors) hneighbors->DeepEcho();
+   else _printf_("  hneighbors = NULL\n");
+
+	return;
+}
+/*}}}*/
+void ElementHook::Echo(){/*{{{*/
+
+	_printf_(" ElementHook Echo:\n");
+	_printf_("  numanalyses : "<< this->numanalyses <<"\n");
+
+	_printf_("  hnodes:\n");
+	if(hnodes){
+		for(int i=0;i<this->numanalyses;i++) {
+			if(hnodes[i]) hnodes[i]->Echo();
+		}
+	}
+	else _printf_("  hnodes = NULL\n");
+
+	_printf_("  hvertices:\n");
+	if(hvertices) hvertices->Echo();
+	else _printf_("  hvertices = NULL\n");
+
+	_printf_("  hmaterial:\n");
+	if(hmaterial) hmaterial->Echo();
+   else _printf_("  hmaterial = NULL\n");
+
+	_printf_("  hneighbors:\n");
+	if(hneighbors) hneighbors->Echo();
+   else _printf_("  hneighbors = NULL\n");
+
+	return;
+}
+/*}}}*/
+void ElementHook::InitHookNeighbors(int* element_ids){/*{{{*/
+	this->hneighbors=new Hook(element_ids,2);
+}
+/*}}}*/
+void ElementHook::SetHookNodes(int* node_ids,int numnodes,int analysis_counter){/*{{{*/
+	if(this->hnodes) this->hnodes[analysis_counter]= new Hook(node_ids,numnodes);
+}
+/*}}}*/
+void ElementHook::SpawnSegHook(ElementHook* triahook,int index1,int index2){/*{{{*/
+
+	triahook->numanalyses=this->numanalyses;
+
+	int indices[2];
+	indices[0]=index1;
+	indices[1]=index2;
+
+	/*Spawn nodes hook*/
+	triahook->hnodes=new Hook*[this->numanalyses];
+	for(int i=0;i<this->numanalyses;i++){
+		/*Do not do anything if Hook is empty*/
+		if (!this->hnodes[i] || this->hnodes[i]->GetNum()==0){
+			triahook->hnodes[i]=NULL;
+		}
+		else{
+			triahook->hnodes[i]=this->hnodes[i]->Spawn(indices,2);
+		}
+	}
+
+	/*do not spawn hmaterial. material will be taken care of by Tria*/
+	triahook->hmaterial=NULL;
+	triahook->hvertices=(Hook*)this->hvertices->Spawn(indices,2);
+}
+/*}}}*/
+void ElementHook::SpawnTriaHook(ElementHook* triahook,int index1,int index2,int index3){/*{{{*/
+
+	/*Create arrow of indices depending on location (0=base 1=surface)*/
+	int indices[3];
+	indices[0] = index1;
+	indices[1] = index2;
+	indices[2] = index3;
+
+	triahook->numanalyses=this->numanalyses;
+
+	/*Spawn nodes hook*/
+	triahook->hnodes=new Hook*[this->numanalyses];
+	for(int i=0;i<this->numanalyses;i++){
+		/*Do not do anything if Hook is empty*/
+		if (!this->hnodes[i] || this->hnodes[i]->GetNum()==0){
+			triahook->hnodes[i]=NULL;
+		}
+		else{
+			triahook->hnodes[i]=this->hnodes[i]->Spawn(indices,3);
+		}
+	}
+
+	/*do not spawn hmaterial. material will be taken care of by Penta*/
+	triahook->hmaterial=NULL;
+	triahook->hvertices=(Hook*)this->hvertices->Spawn(indices,3);
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/ElementHook.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/ElementHook.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/ElementHook.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*!\file: ElementHook.h
+ * \brief prototypes for ElementHook.h
+ */ 
+
+#ifndef _ELEMENTHOOK_H_
+#define _ELEMENTHOOK_H_
+
+class Hook;
+class IoModel;
+
+class ElementHook{
+
+	public: 
+		int    numanalyses;   //number of analysis types
+		Hook **hnodes;        // set of nodes for each analysis type
+		Hook  *hvertices;     // vertices
+		Hook  *hmaterial;     // 1 ice material
+		Hook  *hneighbors;    // 2 elements, first down, second up in 3d only
+
+		/*constructors, destructors*/
+		ElementHook();
+		ElementHook(int in_numanalyses,int material_id,int numvertices,IoModel* iomodel);
+		~ElementHook();
+		void Marshall(MarshallHandle* marshallhandle);
+
+		void DeepEcho();
+		void Echo();
+		void InitHookNeighbors(int* element_ids);               //3d only
+		void SetHookNodes(int* node_ids,int numnodes,int analysis_counter);
+		void SpawnSegHook(ElementHook* triahook,int ndex1,int index2); //2d only
+		void SpawnTriaHook(ElementHook* triahook,int index1,int index2,int index3); //3d only
+};
+
+#endif //ifndef _ELEMENTHOOK_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Elements.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Elements.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Elements.cpp	(revision 27955)
@@ -0,0 +1,104 @@
+/*
+ * \file Elements.cpp
+ * \brief: Implementation of Elements class, derived from DataSet class
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Element.h"
+#include "./Elements.h"
+#include "../Params/Parameters.h"
+#include "../ExternalResults/Results.h"
+#include "../ExternalResults/GenericExternalResult.h"
+#include "../../toolkits/toolkits.h"
+#include "../../shared/shared.h"
+
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+Elements::Elements(){/*{{{*/
+	enum_type=MeshElementsEnum;
+	return;
+}
+/*}}}*/
+Elements::~Elements(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object management*/
+void Elements::Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters,Inputs* inputs){/*{{{*/
+
+	vector<Object*>::iterator object;
+
+	for(object=objects.begin() ; object < objects.end(); object++ ){
+		Element* element=xDynamicCast<Element*>((*object));
+		element->Configure(elements,loads,nodes,vertices,materials,parameters,inputs);
+	}
+
+}/*}}}*/
+int  Elements::MaxNumNodes(void){/*{{{*/
+
+	int max=0;
+	int allmax;
+	int numnodes=0;
+
+	/*Now go through all elements, and get how many nodes they own, unless they are clone nodes: */
+	for(Object* & object : this->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		numnodes=element->GetNumberOfNodes();
+		if(numnodes>max)max=numnodes;
+	}
+
+	/*Grab max of all cpus: */
+	ISSM_MPI_Allreduce((void*)&max,(void*)&allmax,1,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
+	max=allmax;
+
+	return max;
+}
+/*}}}*/
+int  Elements::NumberOfElements(void){/*{{{*/
+
+	int local_nelem;
+	int numberofelements;
+
+	local_nelem=this->Size();
+	ISSM_MPI_Allreduce((void*)&local_nelem,(void*)&numberofelements,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
+
+	return numberofelements;
+}
+/*}}}*/
+void Elements::ResetHooks(){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Element* element=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		element=xDynamicCast<Element*>((*object));
+		element->ResetHooks();
+
+	}
+
+}
+/*}}}*/
+void Elements::SetCurrentConfiguration(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Element* element=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		element=xDynamicCast<Element*>((*object));
+		element->SetCurrentConfiguration(elements,loads,nodes,materials,parameters);
+
+	}
+
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Elements.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Elements.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Elements.h	(revision 27955)
@@ -0,0 +1,33 @@
+#ifndef _CONTAINER_ELEMENTS_H_
+#define  _CONTAINER_ELEMENTS_H_
+
+/*forward declarations */
+#include "../../datastructures/datastructures.h"
+class Materials;
+class Parameters;
+class Vertices;
+class Loads;
+class Nodes;
+class Results;
+
+/*! \brief Declaration of Elements class 
+ *
+ * Declaration of Elements class.  Elements are vector lists (Containers) of Element objects.
+ */ 
+class Elements: public DataSet{
+
+	public:
+
+		/*constructors, destructors*/
+		Elements();
+		~Elements();
+
+		/*numerics*/
+		void   Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters,Inputs* inputs);
+		int    MaxNumNodes(void);
+		int    NumberOfElements(void);
+		void   SetCurrentConfiguration(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
+		void   ResetHooks();
+};
+
+#endif //ifndef _ELEMENTS_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Penta.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Penta.cpp	(revision 27955)
@@ -0,0 +1,5196 @@
+/*!\file Penta.cpp
+ * \brief: implementation of the Penta object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../Inputs/PentaInput.h"
+#include "../Inputs/ControlInput.h"
+#include "../Inputs/TransientInput.h"
+#include "../Inputs/DatasetInput.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMVERTICES   6
+#define NUMVERTICES2D 3
+
+/*Constructors/destructor/copy*/
+Penta::~Penta(){/*{{{*/
+	this->parameters=NULL;
+}
+/*}}}*/
+Penta::Penta(int penta_id, int penta_sid,int penta_lid,IoModel* iomodel,int nummodels)/*{{{*/
+	:ElementHook(nummodels,penta_id,NUMVERTICES,iomodel){
+
+	int penta_elements_ids[2];
+
+	/*Checks in debugging mode*/
+	_assert_(iomodel->Data("md.mesh.upperelements"));
+	_assert_(iomodel->Data("md.mesh.lowerelements"));
+
+	/*id: */
+	this->id  = penta_id;
+	this->sid = penta_sid;
+	this->lid = penta_lid;
+
+	/*surface and base*/
+	this->isonsurface = false;
+	this->isonbase    = false;
+
+	/*Build neighbors list*/
+	if (xIsNan<IssmDouble>(iomodel->Data("md.mesh.upperelements")[penta_sid]) || iomodel->Data("md.mesh.upperelements")[penta_sid]==-1.) penta_elements_ids[1]=this->id; //upper penta is the same penta
+	else                                    penta_elements_ids[1]=reCast<int,IssmDouble>((iomodel->Data("md.mesh.upperelements")[penta_sid]));
+	if (xIsNan<IssmDouble>(iomodel->Data("md.mesh.lowerelements")[penta_sid]) || iomodel->Data("md.mesh.lowerelements")[penta_sid]==-1.) penta_elements_ids[0]=this->id; //lower penta is the same penta
+	else                                    penta_elements_ids[0]=reCast<int,IssmDouble>((iomodel->Data("md.mesh.lowerelements")[penta_sid]));
+	this->InitHookNeighbors(penta_elements_ids);
+
+	//this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
+	this->parameters=NULL;
+
+	/*initialize pointers:*/
+	this->nodes             = NULL;
+	this->vertices          = NULL;
+	this->material          = NULL;
+	this->verticalneighbors = NULL;
+
+	/*Only allocate pointer*/
+	this->element_type_list=xNew<int>(nummodels);
+
+	/*surface and base*/
+	_assert_(iomodel->Data("md.mesh.vertexonsurface"));
+	_assert_(iomodel->Data("md.mesh.vertexonbase"));
+	this->isonsurface = false;
+	this->isonbase    = false;
+	IssmDouble sum = 0.;
+	for(int i=0;i<NUMVERTICES;i++) sum += iomodel->Data("md.mesh.vertexonsurface")[reCast<int>(iomodel->elements[(penta_id-1)*NUMVERTICES+i])-1];
+	_assert_(sum>=0 && sum<4);
+	if(sum>2.5) this->isonsurface = true;
+	sum = 0.;
+	for(int i=0;i<NUMVERTICES;i++) sum += iomodel->Data("md.mesh.vertexonbase")[reCast<int>(iomodel->elements[(penta_id-1)*NUMVERTICES+i])-1];
+	_assert_(sum>=0 && sum<4);
+	if(sum>2.5) this->isonbase = true;
+}
+/*}}}*/
+Object* Penta::copy() {/*{{{*/
+
+	int i;
+	Penta* penta=NULL;
+
+	penta=new Penta();
+
+	//deal with PentaRef mother class
+	int nanalyses = this->numanalyses;
+	if(nanalyses > 0){
+		penta->element_type_list=xNew<int>(nanalyses);
+		for(i=0;i<nanalyses;i++) {
+			if (this->element_type_list[i]) penta->element_type_list[i]=this->element_type_list[i];
+			else penta->element_type_list[i] = 0;
+		}
+	}
+	else penta->element_type_list = NULL;
+	penta->element_type=this->element_type;
+	penta->numanalyses=nanalyses;
+
+	//deal with ElementHook mother class
+	if (this->hnodes){
+		penta->hnodes=xNew<Hook*>(penta->numanalyses);
+		for(i=0;i<penta->numanalyses;i++){
+			if (this->hnodes[i]) penta->hnodes[i] = (Hook*)(this->hnodes[i]->copy());
+			else penta->hnodes[i] = NULL;
+		}
+	}
+	else penta->hnodes = NULL;
+
+	penta->hvertices = (Hook*)this->hvertices->copy();
+	penta->hmaterial = (Hook*)this->hmaterial->copy();
+	if (this->hneighbors) penta->hneighbors = (Hook*)(this->hneighbors->copy());
+	else penta->hneighbors = NULL;
+
+	/*deal with Tria fields: */
+	penta->id  = this->id;
+	penta->sid = this->sid;
+	penta->lid = this->lid;
+	penta->isonbase  = this->isonbase;
+	penta->isonsurface  = this->isonsurface;
+
+	/*point parameters: */
+	penta->parameters=this->parameters;
+
+	/*recover objects: */
+	if (this->nodes) {
+		unsigned int num_nodes = 6;
+		penta->nodes = xNew<Node*>(num_nodes); //we cannot rely on an analysis_counter to tell us which analysis_type we are running, so we just copy the nodes.
+		for(i=0;i<num_nodes;i++) if(this->nodes[i]) penta->nodes[i]=this->nodes[i]; else penta->nodes[i] = NULL;
+	}
+	else penta->nodes = NULL;
+
+	penta->vertices = (Vertex**)this->hvertices->deliverp();
+	penta->material = (Material*)this->hmaterial->delivers();
+	penta->verticalneighbors = (Penta**)this->hneighbors->deliverp();
+
+	return penta;
+
+}
+/*}}}*/
+void Penta::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = PentaEnum;
+   marshallhandle->call(object_enum);
+	marshallhandle->call(this->isonsurface);
+	marshallhandle->call(this->isonbase);
+
+	/*Call parent classes: */
+	ElementHook::Marshall(marshallhandle);
+	Element::MarshallElement2(marshallhandle,this->numanalyses);
+	PentaRef::Marshall(marshallhandle);
+
+	vertices = (Vertex**)this->hvertices->deliverp();
+	material = (Material*)this->hmaterial->delivers();
+	verticalneighbors = (Penta**)this->hneighbors->deliverp();
+}/*}}}*/
+
+/*Other*/
+void       Penta::AddBasalInput(int input_enum,IssmDouble* values, int interpolation_enum){/*{{{*/
+
+	_assert_(this->inputs);
+	if(!IsOnBase()) return;
+	else{
+		if(interpolation_enum==P1Enum || interpolation_enum==P1DGEnum){
+			IssmDouble extrudedvalues[NUMVERTICES];
+			for(int i=0;i<NUMVERTICES2D;i++){
+				extrudedvalues[i]=values[i];
+				extrudedvalues[i+NUMVERTICES2D]=values[i];
+			}
+			Penta* penta=this;
+			for(;;){
+				penta->AddInput(input_enum,&extrudedvalues[0],interpolation_enum);
+				if (penta->IsOnSurface()) break;
+				penta=penta->GetUpperPenta(); _assert_(penta->Id()!=this->id);
+			}
+		}
+		else if(interpolation_enum==P0Enum){
+			Penta* penta=this;
+			for(;;){
+				penta->AddInput(input_enum,&values[0],interpolation_enum);
+				if (penta->IsOnSurface()) break;
+				penta=penta->GetUpperPenta(); _assert_(penta->Id()!=this->id);
+			}
+		}
+		else _error_("Interpolation "<<EnumToStringx(interpolation_enum)<<" not implemented yet");
+	}
+
+}
+/*}}}*/
+void       Penta::AddInput(int input_enum,IssmDouble* values, int interpolation_enum){/*{{{*/
+
+	/**/
+	int vertexlids[NUMVERTICES];
+
+	/*Call inputs method*/
+	_assert_(this->inputs);
+	switch(interpolation_enum){
+		case P1Enum:
+			for(int i=0;i<NUMVERTICES;i++) vertexlids[i]=this->vertices[i]->lid;
+			inputs->SetPentaInput(input_enum,interpolation_enum,NUMVERTICES,vertexlids,values);
+			break;
+		case P1DGEnum:
+			inputs->SetPentaInput(input_enum,interpolation_enum,this->lid,NUMVERTICES,values);
+			break;
+		default:
+			inputs->SetPentaInput(input_enum,interpolation_enum,this->lid,this->GetNumberOfNodes(interpolation_enum),values);
+	}
+
+}
+/*}}}*/
+void       Penta::AddControlInput(int input_enum,Inputs* inputs,IoModel* iomodel,IssmDouble* values,IssmDouble* values_min,IssmDouble* values_max, int interpolation_enum,int id){/*{{{*/
+
+	/*Intermediaries*/
+	int vertexlids[NUMVERTICES];
+
+	_assert_(iomodel->elements);
+	for(int i=0;i<NUMVERTICES;i++){
+		int vertexid =reCast<int>(iomodel->elements[NUMVERTICES*this->Sid()+i]); //ids for vertices are in the elements array from Matlab
+		vertexlids[i]=iomodel->my_vertices_lids[vertexid-1];
+	}
+
+	/*Create Control Input*/
+	inputs->SetControlInput(input_enum,PentaInputEnum,interpolation_enum,id);
+	ControlInput* control_input = inputs->GetControlInput(input_enum); _assert_(input_enum);
+
+	/*Call inputs method*/
+	switch(interpolation_enum){
+		case P0Enum:
+			control_input->SetControl(interpolation_enum,1,&this->lid,values,values_min,values_max);
+			break;
+		case P1Enum:
+			control_input->SetControl(interpolation_enum,NUMVERTICES,&vertexlids[0],values,values_min,values_max);
+			break;
+		default:
+			_error_("Cannot add \""<<EnumToStringx(input_enum)<<"\" interpolation "<<EnumToStringx(interpolation_enum)<<" not supported");
+	}
+
+}
+/*}}}*/
+void       Penta::DatasetInputCreate(IssmDouble* array,int M,int N,int* individual_enums,int num_inputs,Inputs* inputs,IoModel* iomodel,int input_enum){/*{{{*/
+
+	/*Intermediaries*/
+	int        vertexsids[NUMVERTICES];
+	int        vertexlids[NUMVERTICES];
+	IssmDouble nodeinputs[NUMVERTICES];
+
+	/*Some sanity checks*/
+	if(num_inputs<1)                 _error_("Cannot create a DatasetInput of size <1");
+	if(M!=iomodel->numberofvertices) _error_("Input size not supported yet");
+	if(N!=num_inputs)                _error_("Sizes are not consistent");
+
+	/*Get indices*/
+	_assert_(iomodel->elements);
+	for(int i=0;i<NUMVERTICES;i++){
+		vertexsids[i] = reCast<int>(iomodel->elements[NUMVERTICES*this->Sid()+i])-1;
+		vertexlids[i] = iomodel->my_vertices_lids[vertexsids[i]];
+	}
+
+	/*Create inputs and add to DataSetInput*/
+	for(int i=0;i<num_inputs;i++){
+		for(int j=0;j<NUMVERTICES;j++) nodeinputs[j]=array[vertexsids[j]*N+i];
+		inputs->SetPentaDatasetInput(input_enum,individual_enums[i],P1Enum,NUMVERTICES,vertexlids,nodeinputs);
+	}
+}
+/*}}}*/
+void       Penta::BasalNodeIndices(int* pnumindices,int** pindices,int finiteelement){/*{{{*/
+
+	PentaRef::BasalNodeIndices(pnumindices,pindices,finiteelement);
+
+}
+/*}}}*/
+void       Penta::AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part){/*{{{*/
+	_error_("Not supported yet!");
+}
+/*}}}*/
+void       Penta::CalvingRateVonmises(){/*{{{*/
+
+	if(!this->IsOnBase()) return;
+	this->ComputeSigmaVM();
+
+	IssmDouble  calvingrate[NUMVERTICES];
+	IssmDouble  vx,vy;
+	IssmDouble  sigma_vm,sigma_max,sigma_max_floating,sigma_max_grounded;
+	IssmDouble  groundedice,bed,sealevel;
+
+	/*Depth average B for stress calculation*/
+	this->InputDepthAverageAtBase(VxEnum,VxAverageEnum);
+	this->InputDepthAverageAtBase(VyEnum,VyAverageEnum);
+
+	/*Retrieve all inputs and parameters we will need*/
+	Input* vx_input = this->GetInput(VxAverageEnum); _assert_(vx_input);
+	Input* vy_input = this->GetInput(VyAverageEnum); _assert_(vy_input);
+	Input* gr_input = this->GetInput(MaskOceanLevelsetEnum); _assert_(gr_input);
+	Input* bs_input = this->GetInput(BaseEnum);                    _assert_(bs_input);
+	Input* smax_fl_input = this->GetInput(CalvingStressThresholdFloatingiceEnum); _assert_(smax_fl_input);
+	Input* smax_gr_input = this->GetInput(CalvingStressThresholdGroundediceEnum); _assert_(smax_gr_input);
+	Input* sl_input  = this->GetInput(SealevelEnum); _assert_(sl_input);
+	Input* sigma_vm_input = this->GetInput(SigmaVMEnum); _assert_(sigma_vm_input);
+
+	/* Start looping on the number of vertices: */
+	GaussPenta gauss;
+	for(int iv=0;iv<3;iv++){
+		gauss.GaussVertex(iv);
+
+		/*Get velocity components and thickness*/
+		vx_input->GetInputValue(&vx,&gauss);
+		vy_input->GetInputValue(&vy,&gauss);
+		sigma_vm_input->GetInputValue(&sigma_vm,&gauss);
+		gr_input->GetInputValue(&groundedice,&gauss);
+		bs_input->GetInputValue(&bed,&gauss);
+		smax_fl_input->GetInputValue(&sigma_max_floating,&gauss);
+		smax_gr_input->GetInputValue(&sigma_max_grounded,&gauss);
+		sl_input->GetInputValue(&sealevel,&gauss);
+
+		/*Tensile stress threshold*/
+		if(groundedice<0)
+		 sigma_max = sigma_max_floating;
+		else
+		 sigma_max = sigma_max_grounded;
+
+		/*Assign values*/
+		if(bed>sealevel){
+			calvingrate[iv] = 0.;
+		}
+		else{
+			calvingrate[iv] = sqrt(vx*vx+vy*vy)*sigma_vm/sigma_max;
+		}
+	}
+
+	/*Add input*/
+	this->AddBasalInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum);
+	this->CalvingRateToVector();
+
+	/*Extrude*/
+	this->InputExtrude(CalvingCalvingrateEnum,-1);
+	this->InputExtrude(CalvingratexEnum,-1);
+	this->InputExtrude(CalvingrateyEnum,-1);
+}
+/*}}}*/
+void       Penta::CalvingRateLevermann(){/*{{{*/
+
+	IssmDouble  strainparallel;
+	IssmDouble  propcoeff;
+	IssmDouble  strainperpendicular;
+	IssmDouble  calvingrate[NUMVERTICES];
+
+	/*Retrieve all inputs and parameters we will need*/
+	Input* vx_input=this->GetInput(VxEnum);																		_assert_(vx_input);
+	Input* vy_input=this->GetInput(VyEnum);																		_assert_(vy_input);
+	Input* strainparallel_input=this->GetInput(StrainRateparallelEnum);								_assert_(strainparallel_input);
+	Input* strainperpendicular_input=this->GetInput(StrainRateperpendicularEnum);              _assert_(strainperpendicular_input);
+	Input* levermanncoeff_input=this->GetInput(CalvinglevermannCoeffEnum);                     _assert_(levermanncoeff_input);
+
+	/* Start looping on the number of vertices: */
+	GaussPenta gauss;
+	for(int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/* Get the value we need*/
+		strainparallel_input->GetInputValue(&strainparallel,&gauss);
+		strainperpendicular_input->GetInputValue(&strainperpendicular,&gauss);
+		levermanncoeff_input->GetInputValue(&propcoeff,&gauss);
+
+		/*Calving rate proportionnal to the positive product of the strain rate along the ice flow direction and the strain rate perpendicular to the ice flow */
+		calvingrate[iv]=propcoeff*strainparallel*strainperpendicular;
+		if(calvingrate[iv]<0){
+			calvingrate[iv]=0;
+		}
+	}
+
+	/*Add input*/
+	this->AddBasalInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum);
+	this->CalvingRateToVector();
+}/*}}}*/
+void       Penta::CalvingFluxLevelset(){/*{{{*/
+
+	/*Make sure there is an ice front here*/
+	if(!IsIceInElement() || !IsZeroLevelset(MaskIceLevelsetEnum)){
+		IssmDouble flux_per_area=0;
+		this->AddInput(CalvingFluxLevelsetEnum,&flux_per_area,P0Enum);
+	}
+	else{
+		int               index1,index2;
+		const IssmPDouble epsilon = 1.e-15;
+		IssmDouble        s1,s2;
+		IssmDouble        gl[NUMVERTICES];
+		IssmDouble        xyz_front[2][3];
+
+		IssmDouble  xyz_list[NUMVERTICES][3];
+      ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+		/*Recover parameters and values*/
+		Element::GetInputListOnVertices(&gl[0],MaskIceLevelsetEnum);
+
+		/*Be sure that values are not zero*/
+		if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+		if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+		if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+		int pt1 = 0;
+		int pt2 = 1;
+		if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+
+			/*Portion of the segments*/
+			s1=gl[2]/(gl[2]-gl[1]);
+			s2=gl[2]/(gl[2]-gl[0]);
+			if(gl[2]<0.){
+				pt1 = 1; pt2 = 0;
+			}
+			xyz_front[pt2][0]=xyz_list[2][0]+s1*(xyz_list[1][0]-xyz_list[2][0]);
+			xyz_front[pt2][1]=xyz_list[2][1]+s1*(xyz_list[1][1]-xyz_list[2][1]);
+			xyz_front[pt2][2]=xyz_list[2][2]+s1*(xyz_list[1][2]-xyz_list[2][2]);
+			xyz_front[pt1][0]=xyz_list[2][0]+s2*(xyz_list[0][0]-xyz_list[2][0]);
+			xyz_front[pt1][1]=xyz_list[2][1]+s2*(xyz_list[0][1]-xyz_list[2][1]);
+			xyz_front[pt1][2]=xyz_list[2][2]+s2*(xyz_list[0][2]-xyz_list[2][2]);
+		}
+		else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+
+			/*Portion of the segments*/
+			s1=gl[0]/(gl[0]-gl[1]);
+			s2=gl[0]/(gl[0]-gl[2]);
+			if(gl[0]<0.){
+				pt1 = 1; pt2 = 0;
+			}
+
+			xyz_front[pt1][0]=xyz_list[0][0]+s1*(xyz_list[1][0]-xyz_list[0][0]);
+			xyz_front[pt1][1]=xyz_list[0][1]+s1*(xyz_list[1][1]-xyz_list[0][1]);
+			xyz_front[pt1][2]=xyz_list[0][2]+s1*(xyz_list[1][2]-xyz_list[0][2]);
+			xyz_front[pt2][0]=xyz_list[0][0]+s2*(xyz_list[2][0]-xyz_list[0][0]);
+			xyz_front[pt2][1]=xyz_list[0][1]+s2*(xyz_list[2][1]-xyz_list[0][1]);
+			xyz_front[pt2][2]=xyz_list[0][2]+s2*(xyz_list[2][2]-xyz_list[0][2]);
+		}
+		else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+
+			/*Portion of the segments*/
+			s1=gl[1]/(gl[1]-gl[0]);
+			s2=gl[1]/(gl[1]-gl[2]);
+			if(gl[1]<0.){
+				pt1 = 1; pt2 = 0;
+			}
+
+			xyz_front[pt2][0]=xyz_list[1][0]+s1*(xyz_list[0][0]-xyz_list[1][0]);
+			xyz_front[pt2][1]=xyz_list[1][1]+s1*(xyz_list[0][1]-xyz_list[1][1]);
+			xyz_front[pt2][2]=xyz_list[1][2]+s1*(xyz_list[0][2]-xyz_list[1][2]);
+			xyz_front[pt1][0]=xyz_list[1][0]+s2*(xyz_list[2][0]-xyz_list[1][0]);
+			xyz_front[pt1][1]=xyz_list[1][1]+s2*(xyz_list[2][1]-xyz_list[1][1]);
+			xyz_front[pt1][2]=xyz_list[1][2]+s2*(xyz_list[2][2]-xyz_list[1][2]);
+		}
+		else{
+			_error_("case not possible");
+		}
+
+		/*Some checks in debugging mode*/
+		_assert_(s1>=0 && s1<=1.);
+		_assert_(s2>=0 && s2<=1.);
+
+		/*Get normal vector*/
+		IssmDouble normal[3];
+		this->NormalSectionBase(&normal[0],&xyz_front[0][0]);
+		normal[0] = -normal[0];
+		normal[1] = -normal[1];
+
+		/*Get inputs*/
+		IssmDouble flux = 0.;
+		IssmDouble area = 0.;
+		IssmDouble calvingratex,calvingratey,thickness,Jdet,flux_per_area;
+		IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
+		Input* thickness_input=this->GetInput(ThicknessEnum); _assert_(thickness_input);
+		Input* calvingratex_input=NULL;
+		Input* calvingratey_input=NULL;
+		calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+		calvingratey_input=this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
+
+		/*Start looping on Gaussian points*/
+		Gauss* gauss=this->NewGaussBase(&xyz_list[0][0],&xyz_front[0][0],3);
+		while(gauss->next()){
+			thickness_input->GetInputValue(&thickness,gauss);
+			calvingratex_input->GetInputValue(&calvingratex,gauss);
+			calvingratey_input->GetInputValue(&calvingratey,gauss);
+			this->JacobianDeterminantLine(&Jdet,&xyz_front[0][0],gauss);
+
+			flux += rho_ice*Jdet*gauss->weight*thickness*(calvingratex*normal[0] + calvingratey*normal[1]);
+			area += Jdet*gauss->weight*thickness;
+
+			flux_per_area=flux/area;
+		}
+
+		this->AddInput(CalvingFluxLevelsetEnum,&flux_per_area,P0Enum);
+
+		/*Clean up and return*/
+		delete gauss;
+	}
+}
+/*}}}*/
+void       Penta::CalvingMeltingFluxLevelset(){/*{{{*/
+
+	/*Make sure there is an ice front here*/
+	if(!IsIceInElement() || !IsZeroLevelset(MaskIceLevelsetEnum)){
+		IssmDouble flux_per_area=0;
+		this->AddInput(CalvingMeltingFluxLevelsetEnum,&flux_per_area,P0Enum);
+	}
+	else{
+		int               index1,index2;
+		const IssmPDouble epsilon = 1.e-15;
+		IssmDouble        s1,s2;
+		IssmDouble        gl[NUMVERTICES];
+		IssmDouble        xyz_front[2][3];
+
+		IssmDouble  xyz_list[NUMVERTICES][3];
+      ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+		/*Recover parameters and values*/
+		Element::GetInputListOnVertices(&gl[0],MaskIceLevelsetEnum);
+
+		/*Be sure that values are not zero*/
+		if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+		if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+		if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+		int pt1 = 0;
+		int pt2 = 1;
+		if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+
+			/*Portion of the segments*/
+			s1=gl[2]/(gl[2]-gl[1]);
+			s2=gl[2]/(gl[2]-gl[0]);
+			if(gl[2]<0.){
+				pt1 = 1; pt2 = 0;
+			}
+			xyz_front[pt2][0]=xyz_list[2][0]+s1*(xyz_list[1][0]-xyz_list[2][0]);
+			xyz_front[pt2][1]=xyz_list[2][1]+s1*(xyz_list[1][1]-xyz_list[2][1]);
+			xyz_front[pt2][2]=xyz_list[2][2]+s1*(xyz_list[1][2]-xyz_list[2][2]);
+			xyz_front[pt1][0]=xyz_list[2][0]+s2*(xyz_list[0][0]-xyz_list[2][0]);
+			xyz_front[pt1][1]=xyz_list[2][1]+s2*(xyz_list[0][1]-xyz_list[2][1]);
+			xyz_front[pt1][2]=xyz_list[2][2]+s2*(xyz_list[0][2]-xyz_list[2][2]);
+		}
+		else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+
+			/*Portion of the segments*/
+			s1=gl[0]/(gl[0]-gl[1]);
+			s2=gl[0]/(gl[0]-gl[2]);
+			if(gl[0]<0.){
+				pt1 = 1; pt2 = 0;
+			}
+
+			xyz_front[pt1][0]=xyz_list[0][0]+s1*(xyz_list[1][0]-xyz_list[0][0]);
+			xyz_front[pt1][1]=xyz_list[0][1]+s1*(xyz_list[1][1]-xyz_list[0][1]);
+			xyz_front[pt1][2]=xyz_list[0][2]+s1*(xyz_list[1][2]-xyz_list[0][2]);
+			xyz_front[pt2][0]=xyz_list[0][0]+s2*(xyz_list[2][0]-xyz_list[0][0]);
+			xyz_front[pt2][1]=xyz_list[0][1]+s2*(xyz_list[2][1]-xyz_list[0][1]);
+			xyz_front[pt2][2]=xyz_list[0][2]+s2*(xyz_list[2][2]-xyz_list[0][2]);
+		}
+		else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+
+			/*Portion of the segments*/
+			s1=gl[1]/(gl[1]-gl[0]);
+			s2=gl[1]/(gl[1]-gl[2]);
+			if(gl[1]<0.){
+				pt1 = 1; pt2 = 0;
+			}
+
+			xyz_front[pt2][0]=xyz_list[1][0]+s1*(xyz_list[0][0]-xyz_list[1][0]);
+			xyz_front[pt2][1]=xyz_list[1][1]+s1*(xyz_list[0][1]-xyz_list[1][1]);
+			xyz_front[pt2][2]=xyz_list[1][2]+s1*(xyz_list[0][2]-xyz_list[1][2]);
+			xyz_front[pt1][0]=xyz_list[1][0]+s2*(xyz_list[2][0]-xyz_list[1][0]);
+			xyz_front[pt1][1]=xyz_list[1][1]+s2*(xyz_list[2][1]-xyz_list[1][1]);
+			xyz_front[pt1][2]=xyz_list[1][2]+s2*(xyz_list[2][2]-xyz_list[1][2]);
+		}
+		else{
+			_error_("case not possible");
+		}
+
+		/*Some checks in debugging mode*/
+		_assert_(s1>=0 && s1<=1.);
+		_assert_(s2>=0 && s2<=1.);
+
+		/*Get normal vector*/
+		IssmDouble normal[3];
+		this->NormalSectionBase(&normal[0],&xyz_front[0][0]);
+		normal[0] = -normal[0];
+		normal[1] = -normal[1];
+
+		/*Get inputs*/
+		IssmDouble flux = 0.;
+		IssmDouble area = 0.;
+		IssmDouble calvingratex,calvingratey,vx,vy,vel,meltingrate,meltingratex,meltingratey,thickness,Jdet,flux_per_area;
+		IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
+		Input* thickness_input=this->GetInput(ThicknessEnum); _assert_(thickness_input);
+		Input* calvingratex_input=NULL;
+		Input* calvingratey_input=NULL;
+		Input* vx_input=NULL;
+		Input* vy_input=NULL;
+		Input* meltingrate_input=NULL;
+		calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+		calvingratey_input=this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
+		vx_input=this->GetInput(VxEnum); _assert_(vx_input);
+		vy_input=this->GetInput(VyEnum); _assert_(vy_input);
+		meltingrate_input=this->GetInput(CalvingMeltingrateEnum); _assert_(meltingrate_input);
+
+		/*Start looping on Gaussian points*/
+		Gauss* gauss=this->NewGaussBase(&xyz_list[0][0],&xyz_front[0][0],3);
+		while(gauss->next()){
+			thickness_input->GetInputValue(&thickness,gauss);
+			calvingratex_input->GetInputValue(&calvingratex,gauss);
+			calvingratey_input->GetInputValue(&calvingratey,gauss);
+			vx_input->GetInputValue(&vx,gauss);
+			vy_input->GetInputValue(&vy,gauss);
+			vel=vx*vx+vy*vy;
+			meltingrate_input->GetInputValue(&meltingrate,gauss);
+			meltingratex=meltingrate*vx/(sqrt(vel)+1.e-14);
+			meltingratey=meltingrate*vy/(sqrt(vel)+1.e-14);
+			this->JacobianDeterminantLine(&Jdet,&xyz_front[0][0],gauss);
+
+			flux += rho_ice*Jdet*gauss->weight*thickness*((calvingratex+meltingratex)*normal[0] + (calvingratey+meltingratey)*normal[1]);
+			area += Jdet*gauss->weight*thickness;
+
+			flux_per_area=flux/area;
+		}
+
+		this->AddInput(CalvingMeltingFluxLevelsetEnum,&flux_per_area,P0Enum);
+
+		/*Clean up and return*/
+		delete gauss;
+	}
+}
+/*}}}*/
+void       Penta::ComputeBasalStress(void){/*{{{*/
+
+	_error_("not implemented (needs to be redone)");
+	int         i,j;
+	int         dofv[3]={0,1,2};
+	int         dofp[1]={3};
+	int         analysis_type,approximation;
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  xyz_list_tria[3][3];
+	IssmDouble  rho_ice,gravity,FSreconditioning;
+	IssmDouble  pressure,viscosity,Jdet2d;
+	IssmDouble  bed_normal[3];
+	IssmDouble  basalforce[3] = {0.};
+	IssmDouble  epsilon[6]; /* epsilon=[exx,eyy,ezz,exy,exz,eyz];*/
+	IssmDouble  stresstensor[6]={0.0};
+	IssmDouble  sigma_xx,sigma_yy,sigma_zz;
+	IssmDouble  sigma_xy,sigma_xz,sigma_yz;
+	IssmDouble  surface=0,value=0;
+	GaussPenta* gauss;
+
+	/*retrive parameters: */
+	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+	this->Element::GetInputValue(&approximation,ApproximationEnum);
+
+	/*Check analysis_types*/
+	if (analysis_type!=StressbalanceAnalysisEnum) _error_("Not supported yet!");
+	if (approximation!=FSApproximationEnum) _error_("Not supported yet!");
+
+	/*retrieve some parameters: */
+	this->parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+
+	if(!IsOnBase()){
+		//put zero
+		//sigma_b->SetValue(id-1,0.0,INS_VAL);
+		return;
+	}
+
+	/*recovre material parameters: */
+	rho_ice=FindParam(MaterialsRhoIceEnum);
+	gravity=FindParam(ConstantsGEnum);
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	for(i=0;i<3;i++) for(j=0;j<3;j++) xyz_list_tria[i][j]=xyz_list[i][j];
+
+	/*Retrieve all inputs we will be needing: */
+	Input* pressure_input=this->GetInput(PressureEnum); _assert_(pressure_input);
+	Input* vx_input=this->GetInput(VxEnum);             _assert_(vx_input);
+	Input* vy_input=this->GetInput(VyEnum);             _assert_(vy_input);
+	Input* vz_input=this->GetInput(VzEnum);             _assert_(vz_input);
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=new GaussPenta(0,1,2,2);
+	while(gauss->next()){
+
+		/*Compute strain rate viscosity and pressure: */
+		this->StrainRateFS(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);
+		this->material->ViscosityFS(&viscosity,3,&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);
+		pressure_input->GetInputValue(&pressure,gauss);
+
+		/*Compute Stress*/
+		sigma_xx=2*viscosity*epsilon[0]-pressure*FSreconditioning; // sigma = nu eps - pressure
+		sigma_yy=2*viscosity*epsilon[1]-pressure*FSreconditioning;
+		sigma_zz=2*viscosity*epsilon[2]-pressure*FSreconditioning;
+		sigma_xy=2*viscosity*epsilon[3];
+		sigma_xz=2*viscosity*epsilon[4];
+		sigma_yz=2*viscosity*epsilon[5];
+
+		/*Get normal vector to the bed */
+		NormalBase(&bed_normal[0],&xyz_list_tria[0][0]);
+
+		/*basalforce*/
+		basalforce[0] += sigma_xx*bed_normal[0] + sigma_xy*bed_normal[1] + sigma_xz*bed_normal[2];
+		basalforce[1] += sigma_xy*bed_normal[0] + sigma_yy*bed_normal[1] + sigma_yz*bed_normal[2];
+		basalforce[2] += sigma_xz*bed_normal[0] + sigma_yz*bed_normal[1] + sigma_zz*bed_normal[2];
+
+		GetTriaJacobianDeterminant(&Jdet2d, &xyz_list_tria[0][0],gauss);
+		value+=sigma_zz*Jdet2d*gauss->weight;
+		surface+=Jdet2d*gauss->weight;
+	}
+	value=value/surface;
+
+	/*Add value to output*/
+	//sigma_b->SetValue(id-1,value,INS_VAL);
+}
+/*}}}*/
+void       Penta::ComputeDeviatoricStressTensor(){/*{{{*/
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  viscosity;
+	IssmDouble  epsilon[6]; /* epsilon=[exx,eyy,ezz,exy,exz,eyz];*/
+	IssmDouble  tau_xx[NUMVERTICES];
+	IssmDouble	tau_yy[NUMVERTICES];
+	IssmDouble	tau_zz[NUMVERTICES];
+	IssmDouble  tau_xy[NUMVERTICES];
+	IssmDouble	tau_xz[NUMVERTICES];
+	IssmDouble	tau_yz[NUMVERTICES];
+	IssmDouble	tau_eff[NUMVERTICES];
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs we will be needing: */
+	Input* vx_input=this->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=this->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input=this->GetInput(VzEnum); _assert_(vz_input);
+
+	/* Start looping on the number of vertices: */
+	GaussPenta gauss;
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/*Compute strain rate viscosity and pressure: */
+		this->StrainRateFS(&epsilon[0],&xyz_list[0][0],&gauss,vx_input,vy_input,vz_input);
+		this->material->ViscosityFS(&viscosity,3,&xyz_list[0][0],&gauss,vx_input,vy_input,vz_input);
+
+		/*Compute Stress*/
+		tau_xx[iv]=2*viscosity*epsilon[0]; // tau = nu eps
+		tau_yy[iv]=2*viscosity*epsilon[1];
+		tau_zz[iv]=2*viscosity*epsilon[2];
+		tau_xy[iv]=2*viscosity*epsilon[3];
+		tau_xz[iv]=2*viscosity*epsilon[4];
+		tau_yz[iv]=2*viscosity*epsilon[5];
+
+		tau_eff[iv] = tau_xx[iv]*tau_xx[iv] + tau_yy[iv]*tau_yy[iv] + tau_zz[iv]*tau_zz[iv] +
+		  2*tau_xy[iv]*tau_xy[iv] + 2*tau_xz[iv]*tau_xz[iv] + 2*tau_yz[iv]*tau_yz[iv];
+
+		tau_eff[iv] = sqrt(tau_eff[iv]/2.);
+	}
+
+	/*Add Stress tensor components into inputs*/
+	this->AddInput(DeviatoricStressxxEnum,&tau_xx[0],P1DGEnum);
+	this->AddInput(DeviatoricStressxyEnum,&tau_xy[0],P1DGEnum);
+	this->AddInput(DeviatoricStressxzEnum,&tau_xz[0],P1DGEnum);
+	this->AddInput(DeviatoricStressyyEnum,&tau_yy[0],P1DGEnum);
+	this->AddInput(DeviatoricStressyzEnum,&tau_yz[0],P1DGEnum);
+	this->AddInput(DeviatoricStresszzEnum,&tau_zz[0],P1DGEnum);
+	this->AddInput(DeviatoricStresseffectiveEnum,&tau_eff[0],P1DGEnum);
+}
+/*}}}*/
+void       Penta::ComputeStressTensor(){/*{{{*/
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  pressure,viscosity;
+	IssmDouble  epsilon[6]; /* epsilon=[exx,eyy,exy];*/
+	IssmDouble  sigma_xx[NUMVERTICES];
+	IssmDouble	sigma_yy[NUMVERTICES];
+	IssmDouble	sigma_zz[NUMVERTICES];
+	IssmDouble  sigma_xy[NUMVERTICES];
+	IssmDouble	sigma_xz[NUMVERTICES];
+	IssmDouble	sigma_yz[NUMVERTICES];
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs we will be needing: */
+	Input* pressure_input=this->GetInput(PressureEnum); _assert_(pressure_input);
+	Input* vx_input=this->GetInput(VxEnum);             _assert_(vx_input);
+	Input* vy_input=this->GetInput(VyEnum);             _assert_(vy_input);
+	Input* vz_input=this->GetInput(VzEnum);             _assert_(vz_input);
+
+	/* Start looping on the number of vertices: */
+	GaussPenta gauss;
+	for(int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/*Compute strain rate viscosity and pressure: */
+		this->StrainRateFS(&epsilon[0],&xyz_list[0][0],&gauss,vx_input,vy_input,vz_input);
+		this->material->ViscosityFS(&viscosity,3,&xyz_list[0][0],&gauss,vx_input,vy_input,vz_input);
+		pressure_input->GetInputValue(&pressure,&gauss);
+
+		/*Compute Stress*/
+		sigma_xx[iv]=2*viscosity*epsilon[0]-pressure; // sigma = nu eps - pressure
+		sigma_yy[iv]=2*viscosity*epsilon[1]-pressure;
+		sigma_zz[iv]=2*viscosity*epsilon[2]-pressure;
+		sigma_xy[iv]=2*viscosity*epsilon[3];
+		sigma_xz[iv]=2*viscosity*epsilon[4];
+		sigma_yz[iv]=2*viscosity*epsilon[5];
+	}
+
+	/*Add Stress tensor components into inputs*/
+	this->AddInput(StressTensorxxEnum,&sigma_xx[0],P1DGEnum);
+	this->AddInput(StressTensorxyEnum,&sigma_xy[0],P1DGEnum);
+	this->AddInput(StressTensorxzEnum,&sigma_xz[0],P1DGEnum);
+	this->AddInput(StressTensoryyEnum,&sigma_yy[0],P1DGEnum);
+	this->AddInput(StressTensoryzEnum,&sigma_yz[0],P1DGEnum);
+	this->AddInput(StressTensorzzEnum,&sigma_zz[0],P1DGEnum);
+}
+/*}}}*/
+void       Penta::ComputeSigmaVM(){/*{{{*/
+
+	if(!this->IsOnBase()) return;
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  epsilon[3]; /* epsilon=[exx,eyy,exy];*/
+	IssmDouble  lambda1,lambda2,ex,ey,vx,vy,vel;
+	IssmDouble  B,n;
+	IssmDouble  sigma_vm[NUMVERTICES];
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Depth average B for stress calculation*/
+	this->InputDepthAverageAtBase(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum);
+	this->InputDepthAverageAtBase(VxEnum,VxAverageEnum);
+	this->InputDepthAverageAtBase(VyEnum,VyAverageEnum);
+
+	/*Retrieve all inputs and parameters we will need*/
+	Input* vx_input = this->GetInput(VxAverageEnum); _assert_(vx_input);
+	Input* vy_input = this->GetInput(VyAverageEnum); _assert_(vy_input);
+	Input* B_input  = this->GetInput(MaterialsRheologyBbarEnum);   _assert_(B_input);
+	Input* n_input  = this->GetInput(MaterialsRheologyNEnum);   _assert_(n_input);
+
+	/* Start looping on the number of vertices: */
+	GaussPenta gauss;
+	for(int iv=0;iv<3;iv++){
+		gauss.GaussVertex(iv);
+
+		/*Get velocity components and thickness*/
+		B_input->GetInputValue(&B,&gauss);
+		n_input->GetInputValue(&n,&gauss);
+		vx_input->GetInputValue(&vx,&gauss);
+		vy_input->GetInputValue(&vy,&gauss);
+		vel=sqrt(vx*vx+vy*vy)+1.e-14;
+
+		/*Compute strain rate and viscosity: */
+		this->StrainRateSSA(&epsilon[0],&xyz_list[0][0],&gauss,vx_input,vy_input);
+
+		/*Get Eigen values*/
+		Matrix2x2Eigen(&lambda1,&lambda2,&ex,&ey,epsilon[0],epsilon[2],epsilon[1]);
+		_assert_(!xIsNan<IssmDouble>(lambda1));
+		_assert_(!xIsNan<IssmDouble>(lambda2));
+
+		/*Process Eigen values (only account for extension)*/
+		lambda1 = max(lambda1,0.);
+		lambda2 = max(lambda2,0.);
+
+		/*Calculate sigma_vm*/
+		IssmDouble epse_2    = 1./2. *(lambda1*lambda1 + lambda2*lambda2);
+		sigma_vm[iv] = sqrt(3.) * B * pow(epse_2,1./(2.*n));
+	}
+
+	/*Add input*/
+	this->AddBasalInput(SigmaVMEnum,&sigma_vm[0],P1DGEnum);
+	this->InputExtrude(SigmaVMEnum,-1);
+}
+/*}}}*/
+void       Penta::Configure(Elements* elementsin, Loads* loadsin, Nodes* nodesin,Vertices* verticesin, Materials* materialsin, Parameters* parametersin,Inputs* inputsin){/*{{{*/
+
+	int analysis_counter;
+
+	/*go into parameters and get the analysis_counter: */
+	parametersin->FindParam(&analysis_counter,AnalysisCounterEnum);
+
+	/*Get Element type*/
+	this->element_type=this->element_type_list[analysis_counter];
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	if (this->hnodes[analysis_counter]) this->hnodes[analysis_counter]->configure(nodesin);
+	this->hvertices->configure(verticesin);
+	this->hmaterial->configure(materialsin);
+	this->hneighbors->configure(elementsin);
+
+	/*Now, go pick up the objects inside the hooks: */
+	if (this->hnodes[analysis_counter]) this->nodes=(Node**)this->hnodes[analysis_counter]->deliverp();
+	else this->nodes=NULL;
+	this->vertices          = (Vertex**)this->hvertices->deliverp();
+	this->material          = (Material*)this->hmaterial->delivers();
+	this->verticalneighbors = (Penta**)this->hneighbors->deliverp();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+	this->inputs=inputsin;
+}
+/*}}}*/
+void       Penta::ControlInputSetGradient(IssmDouble* gradient,int control_enum,int control_index,int offset,int M,int N,int interp){/*{{{*/
+
+	IssmDouble  values[NUMVERTICES];
+	int         lidlist[NUMVERTICES];
+	int         idlist[NUMVERTICES];
+
+	if(control_enum==MaterialsRheologyBbarEnum) control_enum = MaterialsRheologyBEnum;
+	if(control_enum==DamageDbarEnum)            control_enum = DamageDEnum;
+
+	ElementInput* input=this->inputs->GetControlInputData(control_enum,"gradient");   _assert_(input);
+	this->GetVerticesLidList(&lidlist[0]);
+	GradientIndexing(&idlist[0],control_index);
+
+	/*Get values on vertices*/
+	if(input->ObjectEnum()==PentaInputEnum && input->GetInputInterpolationType()==P1Enum){
+		_assert_(N==1);
+		for(int i=0;i<NUMVERTICES;i++){
+			values[i] = gradient[idlist[i]];
+		}
+		input->SetInput(P1Enum,NUMVERTICES,&lidlist[0],&values[0]);
+	}
+	else if(input->ObjectEnum()==PentaInputEnum && input->GetInputInterpolationType()==P0Enum){
+		_assert_(N==1);
+		input->SetInput(P0Enum,this->lid,gradient[idlist[0]]);
+	}
+	else if(input->ObjectEnum()==TransientInputEnum){
+		for(int n=0;n<N;n++){
+			_error_("not implemented");
+			//Input* new_input = new PentaInput(control_enum,gradient,P1Enum);
+			//controlinput->SetInput(new_input,n);
+			//controlinput->Configure(parameters);
+		}
+	}
+	else _error_("Type not supported");
+
+}
+/*}}}*/
+void       Penta::ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum,int control_interp){/*{{{*/
+
+	int         sidlist[NUMVERTICES];
+	int         lidlist[NUMVERTICES];
+	int         connectivity[NUMVERTICES];
+	IssmPDouble values[NUMVERTICES];
+	IssmPDouble gradients[NUMVERTICES];
+	IssmDouble  value,gradient;
+
+	/*Get relevant inputs*/
+	if(control_enum==MaterialsRheologyBbarEnum) control_enum = MaterialsRheologyBEnum;
+	if(control_enum==DamageDbarEnum)            control_enum = DamageDEnum;
+	ElementInput* control_value    = this->inputs->GetControlInputData(control_enum,"value");    _assert_(control_value);
+	ElementInput* control_gradient = this->inputs->GetControlInputData(control_enum,"gradient"); _assert_(control_gradient);
+
+	if(control_interp==P1Enum){
+		_assert_(control_value->GetInputInterpolationType()==P1Enum);
+		_assert_(control_gradient->GetInputInterpolationType()==P1Enum);
+
+		this->GetVerticesConnectivityList(&connectivity[0]);
+		this->GetVerticesSidList(&sidlist[0]);
+		this->GetVerticesLidList(&lidlist[0]);
+
+		control_value->Serve(NUMVERTICES,&lidlist[0]);
+		control_gradient->Serve(NUMVERTICES,&lidlist[0]);
+
+		GaussPenta gauss;
+		for (int iv=0;iv<NUMVERTICES;iv++){
+			gauss.GaussVertex(iv);
+
+			control_value->GetInputValue(&value,&gauss);
+			control_gradient->GetInputValue(&gradient,&gauss);
+
+			values[iv]    = reCast<IssmPDouble>(value)/reCast<IssmPDouble>(connectivity[iv]);
+			gradients[iv] = reCast<IssmPDouble>(gradient)/reCast<IssmPDouble>(connectivity[iv]);
+		}
+
+		vector_control->SetValues(NUMVERTICES,&sidlist[0],&values[0],ADD_VAL);
+		vector_gradient->SetValues(NUMVERTICES,&sidlist[0],&gradients[0],ADD_VAL);
+	}
+	else if(control_interp==P0Enum){
+		_assert_(control_value->GetInputInterpolationType()==P0Enum);
+		_assert_(control_gradient->GetInputInterpolationType()==P0Enum);
+
+		control_value->Serve(1,&this->lid);
+		control_gradient->Serve(1,&this->lid);
+
+		vector_control->SetValue(this->sid,reCast<IssmPDouble>(control_value->element_values[0]),ADD_VAL);
+		vector_gradient->SetValue(this->sid,reCast<IssmPDouble>(control_gradient->element_values[0]),ADD_VAL);
+	}
+	else{
+		_error_("not supported");
+	}
+
+}/*}}}*/
+void       Penta::CreateDistanceInputFromSegmentlist(IssmDouble* distances,int distanceenum){/*{{{*/
+
+	/*Get current field and vertex coordinates*/
+	IssmDouble ls[NUMVERTICES],distance;
+	Element::GetInputListOnVertices(&ls[0],distanceenum);
+
+	/*Get distance from list of segments and reset ls*/
+	for(int j=0;j<NUMVERTICES;j++){
+		distance=distances[this->vertices[j]->Lid()];
+		if(xIsNan<IssmDouble>(distance)) _error_("NaN found in vector");
+		if(xIsInf<IssmDouble>(distance)) _error_("Inf found in vector");
+
+		if(ls[j]>0){
+			ls[j] = distance;
+		}
+		else{
+			ls[j] = - distance;
+		}
+	}
+
+	/*Update Levelset*/
+	this->AddInput(distanceenum,&ls[0],P1Enum);
+}
+/*}}}*/
+void       Penta::CreateInputTimeAverage(int transientinput_enum,int averagedinput_enum,IssmDouble start_time,IssmDouble end_time,int averaging_method){/*{{{*/
+	_assert_(end_time>start_time);
+
+	/*Get transient input time steps*/
+	TransientInput* transient_input  = this->inputs->GetTransientInput(transientinput_enum);
+	PentaInput* averaged_input = transient_input->GetPentaInput(start_time,end_time,averaging_method);
+	Input* averaged_copy = averaged_input->copy();
+
+	averaged_copy->ChangeEnum(averagedinput_enum);
+	this->inputs->AddInput(averaged_copy);
+}
+/*}}}*/
+void       Penta::ElementResponse(IssmDouble* presponse,int response_enum){/*{{{*/
+
+	switch(response_enum){
+		case MaterialsRheologyBbarEnum:
+			*presponse=this->material->GetBbar(NULL);
+			break;
+		case DamageDbarEnum:
+			*presponse=this->material->GetDbar(NULL);
+			break;
+		case VelEnum:
+			{
+
+				/*Get input:*/
+				IssmDouble vel;
+				Input* vel_input=this->GetInput(VelEnum); _assert_(vel_input);
+				vel_input->GetInputAverage(&vel);
+
+				/*Assign output pointers:*/
+				*presponse=vel;
+			}
+			break;
+		default:
+			_error_("Response type " << EnumToStringx(response_enum) << " not supported yet!");
+	}
+
+}
+/*}}}*/
+void       Penta::ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz){/*{{{*/
+
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble xmin,ymin,zmin;
+	IssmDouble xmax,ymax,zmax;
+
+	/*Get xyz list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	xmin=xyz_list[0][0]; xmax=xyz_list[0][0];
+	ymin=xyz_list[0][1]; ymax=xyz_list[0][1];
+	zmin=xyz_list[0][2]; zmax=xyz_list[0][2];
+
+	for(int i=1;i<NUMVERTICES;i++){
+		if(xyz_list[i][0]<xmin) xmin=xyz_list[i][0];
+		if(xyz_list[i][0]>xmax) xmax=xyz_list[i][0];
+		if(xyz_list[i][1]<ymin) ymin=xyz_list[i][1];
+		if(xyz_list[i][1]>ymax) ymax=xyz_list[i][1];
+		if(xyz_list[i][2]<zmin) zmin=xyz_list[i][2];
+		if(xyz_list[i][2]>zmax) zmax=xyz_list[i][2];
+	}
+
+	*hx=xmax-xmin;
+	*hy=ymax-ymin;
+	*hz=zmax-zmin;
+}
+/*}}}*/
+int        Penta::FiniteElement(void){/*{{{*/
+	return this->element_type;
+}
+/*}}}*/
+IssmDouble Penta::FloatingArea(bool scaled){/*{{{*/
+
+	/*Intermediaries*/
+	int         domaintype;
+	IssmDouble  phi,base_area,scalefactor,floatingarea;
+	IssmDouble  xyz_list[NUMVERTICES][3];
+
+	if(!IsIceInElement() || !IsOnBase())return 0.;
+
+	/*Get problem dimension*/
+	this->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype!=Domain3DEnum) _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	phi=this->GetGroundedPortion(&xyz_list[0][0]);
+	base_area= 1./2.*fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
+
+	floatingarea=(1-phi)*base_area;
+
+	if(scaled==true){
+		Input* scalefactor_input = this->GetInput(MeshScaleFactorEnum); _assert_(scalefactor_input);
+		scalefactor_input->GetInputAverage(&scalefactor);
+		floatingarea=floatingarea*scalefactor;
+	}
+
+	/*Clean up and return*/
+	return floatingarea;
+}
+/*}}}*/
+void       Penta::FSContactMigration(Vector<IssmDouble>* vertex_sigmann,Vector<IssmDouble>* vertex_waterpressure){/*{{{*/
+
+	if(!IsOnBase()) return;
+
+	int approximation;
+	this->Element::GetInputValue(&approximation,ApproximationEnum);
+	if(approximation==HOApproximationEnum || approximation==SSAApproximationEnum || approximation==SSAHOApproximationEnum || approximation==HOFSApproximationEnum){
+		_error_("Cannot compute contact condition for non FS elements");
+	}
+
+	/*Intermediaries*/
+	IssmDouble  bed_normal[3],base[NUMVERTICES],bed[NUMVERTICES],surface[NUMVERTICES],phi[NUMVERTICES];
+	IssmDouble  water_pressure[NUMVERTICES],pressureice[NUMVERTICES],pressure[NUMVERTICES];
+	IssmDouble  sigmaxx[NUMVERTICES],sigmayy[NUMVERTICES],sigmazz[NUMVERTICES],sigmaxy[NUMVERTICES];
+	IssmDouble  sigmayz[NUMVERTICES],sigmaxz[NUMVERTICES],sigma_nn[NUMVERTICES];
+	IssmDouble  viscosity,epsilon[NUMVERTICES];
+	Element::GetInputListOnVertices(&base[0],BaseEnum);
+	Element::GetInputListOnVertices(&bed[0],BedEnum);
+	Element::GetInputListOnVertices(&surface[0],SurfaceEnum);
+	Element::GetInputListOnVertices(&pressure[0],PressureEnum);
+	Element::GetInputListOnVertices(&phi[0],MaskOceanLevelsetEnum);
+	IssmDouble rho_ice   = FindParam(MaterialsRhoIceEnum);
+	IssmDouble rho_water = FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble gravity   = FindParam(ConstantsGEnum);
+
+	/* Get node coordinates and dof list: */
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs we will be needing: */
+	Input* vx_input = this->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input = this->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input = this->GetInput(VzEnum); _assert_(vz_input);
+
+	/*1. Recover stresses at the base*/
+	GaussPenta gauss;
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/*Compute strain rate viscosity and pressure: */
+		this->StrainRateFS(&epsilon[0],&xyz_list[0][0],&gauss,vx_input,vy_input,vz_input);
+		this->material->ViscosityFS(&viscosity,3,&xyz_list[0][0],&gauss,vx_input,vy_input,vz_input);
+		/*FIXME: this is for Hongju only*/
+		//pressureice[iv]=gravity*rho_ice*(surface[iv]-base[iv]);
+		//if (pressure[iv]/pressureice[iv]>1)	pressure[iv]=pressureice[iv];
+
+		/*Compute Stress*/
+		sigmaxx[iv]=2*viscosity*epsilon[0]-pressure[iv]; // sigma = nu eps - pressure
+		sigmayy[iv]=2*viscosity*epsilon[1]-pressure[iv];
+		sigmazz[iv]=2*viscosity*epsilon[2]-pressure[iv];
+		sigmaxy[iv]=2*viscosity*epsilon[3];
+		sigmaxz[iv]=2*viscosity*epsilon[4];
+		sigmayz[iv]=2*viscosity*epsilon[5];
+	}
+
+	/*2. compute contact condition*/
+	for(int i=0;i<NUMVERTICES;i++){
+
+		/*If was grounded*/
+		if (phi[i]>=0.){
+			NormalBase(&bed_normal[0],&xyz_list[0][0]);
+			sigma_nn[i]=-1*(sigmaxx[i]*bed_normal[0]*bed_normal[0] + sigmayy[i]*bed_normal[1]*bed_normal[1] + sigmazz[i]*bed_normal[2]*bed_normal[2]+2*sigmaxy[i]*bed_normal[0]*bed_normal[1]+2*sigmaxz[i]*bed_normal[0]*bed_normal[2]+2*sigmayz[i]*bed_normal[1]*bed_normal[2]);
+			water_pressure[i]=-gravity*rho_water*base[i];
+			vertex_sigmann->SetValue(vertices[i]->Pid(),sigma_nn[i],ADD_VAL);
+			vertex_waterpressure->SetValue(vertices[i]->Pid(),water_pressure[i],ADD_VAL);
+		}
+
+		/*If was floating*/
+		else{
+			/*Tricky part:
+			 * 1. if base is now touching, we put 1 for sigma_nn and leave water pressure at 0 so that the rest of the module will reground this vertex
+			 * 2. if base is still above bed, water pressure is set as 1, sigma_nn is left as 0, so the GL module will keep it afloat*/
+			if(base[i]<bed[i]) vertex_sigmann->SetValue(vertices[i]->Pid(),+1.,ADD_VAL);
+			else vertex_waterpressure->SetValue(vertices[i]->Pid(),+1.,ADD_VAL);
+		}
+	}
+}
+/*}}}*/
+void       Penta::GetAreaCoordinates(IssmDouble* area_coordinates,IssmDouble* xyz_zero,IssmDouble* xyz_list,int numpoints){/*{{{*/
+	/*Computeportion of the element that is grounded*/
+
+	int         i,j,k;
+	IssmDouble  area_init,area_portion;
+	IssmDouble  xyz_bis[3][3];
+
+	area_init=fabs(xyz_list[1*3+0]*xyz_list[2*3+1] - xyz_list[1*3+1]*xyz_list[2*3+0] + xyz_list[0*3+0]*xyz_list[1*3+1] - xyz_list[0*3+1]*xyz_list[1*3+0] + xyz_list[2*3+0]*xyz_list[0*3+1] - xyz_list[2*3+1]*xyz_list[0*3+0])/2.;
+
+	/*Initialize xyz_list with original xyz_list of triangle coordinates*/
+	for(j=0;j<3;j++){
+		for(k=0;k<3;k++){
+			xyz_bis[j][k]=xyz_list[j*3+k];
+		}
+	}
+	for(i=0;i<numpoints;i++){
+		for(j=0;j<3;j++){
+			for(k=0;k<3;k++){
+				/*Change appropriate line*/
+				xyz_bis[j][k]=xyz_zero[i*3+k];
+			}
+
+			/*Compute area fraction*/
+			area_portion=fabs(xyz_bis[1][0]*xyz_bis[2][1] - xyz_bis[1][1]*xyz_bis[2][0] + xyz_bis[0][0]*xyz_bis[1][1] - xyz_bis[0][1]*xyz_bis[1][0] + xyz_bis[2][0]*xyz_bis[0][1] - xyz_bis[2][1]*xyz_bis[0][0])/2.;
+			*(area_coordinates+3*i+j)=area_portion/area_init;
+
+			/*Reinitialize xyz_list*/
+			for(k=0;k<3;k++){
+				/*Reinitialize xyz_list with original coordinates*/
+				xyz_bis[j][k]=xyz_list[j*3+k];
+			}
+		}
+	}
+}
+/*}}}*/
+Element*   Penta::GetBasalElement(void){/*{{{*/
+
+	/*Output*/
+	Element* element=this->GetBasalPenta();
+	return element;
+}
+/*}}}*/
+Penta*     Penta::GetBasalPenta(void){/*{{{*/
+
+	/*Output*/
+	Penta* penta=NULL;
+
+	/*Go through all pentas till the bed is reached*/
+	penta=this;
+	for(;;){
+		/*Stop if we have reached the surface, else, take lower penta*/
+		if (penta->IsOnBase()) break;
+
+		/* get lower Penta*/
+		penta=penta->GetLowerPenta();
+		_assert_(penta->Id()!=this->id);
+	}
+
+	/*return output*/
+	return penta;
+}
+/*}}}*/
+int        Penta::GetElementType(){/*{{{*/
+
+	/*return PentaRef field*/
+	return this->element_type;
+}
+/*}}}*/
+void       Penta::GetFractionGeometry2D(IssmDouble* weights, IssmDouble* pphi, int* ppoint1,IssmDouble* pfraction1,IssmDouble* pfraction2, bool* ptrapezeisnegative, IssmDouble* gl){/*{{{*/
+
+  /*Compute portion of element that is grounded based on levelset at the 3 lower vertices of the Penta element*/
+   bool               trapezeisnegative=true;
+   int                point;
+   const IssmPDouble  epsilon= 1.e-15;
+   IssmDouble         f1,f2,phi;
+
+   /*Weights*/
+   IssmDouble loadweights_g[NUMVERTICES];
+   IssmDouble total_weight = 0;
+
+   _assert_(!xIsNan<IssmDouble>(gl[0]));
+   _assert_(!xIsNan<IssmDouble>(gl[1]));
+   _assert_(!xIsNan<IssmDouble>(gl[2]));
+
+   /*Be sure that values are not zero*/
+   if(gl[0]==0.) gl[0] = gl[0]+epsilon;
+   if(gl[1]==0.) gl[1] = gl[1]+epsilon;
+   if(gl[2]==0.) gl[2] = gl[2]+epsilon;
+
+   /*Check that not all nodes are positive or negative: */
+   if(gl[0]>0 && gl[1]>0 && gl[2]>0){
+      point = 0;
+      f1    = 1.;
+      f2    = 1.;
+   }
+   else if(gl[0]<0 && gl[1]<0 && gl[2]<0){
+      point = 0;
+      f1    = 0.;
+      f2    = 0.;
+   }
+	else{
+		if(gl[0]*gl[1]*gl[2]<0) trapezeisnegative = false;
+
+		/*Find the similar nodes*/
+		if(gl[0]*gl[1]>0){ 
+			point = 2;
+			f1    = gl[2]/(gl[2]-gl[0]);
+			f2    = gl[2]/(gl[2]-gl[1]);
+		}
+		else if(gl[1]*gl[2]>0){ 
+			point = 0;
+			f1    = gl[0]/(gl[0]-gl[1]);
+			f2    = gl[0]/(gl[0]-gl[2]);
+		}
+		else if(gl[0]*gl[2]>0){ 
+			point = 1;
+			f1    = gl[1]/(gl[1]-gl[2]);
+			f2    = gl[1]/(gl[1]-gl[0]);
+		}
+		else _error_("case not possible");
+	}
+	if(trapezeisnegative) phi = 1.-f1*f2;
+	else                  phi = f1*f2;
+	
+	/*Compute weights*/
+	Gauss* gauss = this->NewGauss(point,f1,f2,1-trapezeisnegative,2);
+
+	total_weight = 0.0;
+	for(int i=0;i<NUMVERTICES2D;i++)weights[i] = 0;
+	while(gauss->next()){
+		GetNodalFunctions(&loadweights_g[0],gauss,P1Enum);
+		for(int i=0;i<NUMVERTICES2D;i++)weights[i] += loadweights_g[i]*gauss->weight;
+		total_weight += gauss->weight;
+	}
+	delete gauss;
+
+	/*Normalizing to phi such that weights provide coefficients for integration over subelement (for averaging:phi*weights)*/
+   if(total_weight>0.) for(int i=0;i<NUMVERTICES2D;i++) weights[i] = weights[i]*phi/total_weight;
+	else for(int i=0;i<NUMVERTICES2D;i++) weights[i] = 0.0;
+	
+	/*Assign output pointers*/
+	*pphi               = phi;
+	*ppoint1            = point;
+	*pfraction1         = f1;
+	*pfraction2         = f2;
+	*ptrapezeisnegative = trapezeisnegative;
+}
+/*}}}*/
+void       Penta::GetGroundedPart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlyfloating){/*{{{*/
+	/*Computeportion of the element that is grounded*/
+
+	bool               floating=true;
+	int                point;
+	const IssmPDouble  epsilon= 1.e-15;
+	IssmDouble         gl[NUMVERTICES];
+	IssmDouble         f1,f2;
+
+	/*Recover parameters and values*/
+	Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum);
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+	/*Check that not all nodes are grounded or floating*/
+	if(gl[0]>0 && gl[1]>0 && gl[2]>0){ // All grounded
+		point=0;
+		f1=1.;
+		f2=1.;
+	}
+	else if(gl[0]<0 && gl[1]<0 && gl[2]<0){ //All floating
+		point=0;
+		f1=0.;
+		f2=0.;
+	}
+	else{
+		if(gl[0]*gl[1]*gl[2]<0) floating=false;
+
+		if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+			point=2;
+			f1=gl[2]/(gl[2]-gl[0]);
+			f2=gl[2]/(gl[2]-gl[1]);
+		}
+		else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+			point=0;
+			f1=gl[0]/(gl[0]-gl[1]);
+			f2=gl[0]/(gl[0]-gl[2]);
+		}
+		else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+			point=1;
+			f1=gl[1]/(gl[1]-gl[2]);
+			f2=gl[1]/(gl[1]-gl[0]);
+		}
+		else _error_("case not possible");
+	}
+	*point1=point;
+	*fraction1=f1;
+	*fraction2=f2;
+	*mainlyfloating=floating;
+}
+/*}}}*/
+IssmDouble Penta::GetGroundedPortion(IssmDouble* xyz_list){/*{{{*/
+	/*Computeportion of the element that is grounded*/
+
+	bool               mainlyfloating = true;
+	const IssmPDouble  epsilon= 1.e-15;
+	IssmDouble         phi,s1,s2;
+	IssmDouble         gl[NUMVERTICES];
+
+	/*Recover parameters and values*/
+	Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum);
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+	/*Check that not all nodes are grounded or floating*/
+	if(gl[0]>0 && gl[1]>0 && gl[2]>0){ // All grounded
+		phi=1;
+	}
+	else if(gl[0]<0 && gl[1]<0 && gl[2]<0){ //All floating
+		phi=0;
+	}
+	else{
+		/*Figure out if two nodes are floating or grounded*/
+		if(gl[0]*gl[1]*gl[2]>0) mainlyfloating=false;
+
+		if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+			s1=gl[2]/(gl[2]-gl[1]);
+			s2=gl[2]/(gl[2]-gl[0]);
+		}
+		else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+			s1=gl[0]/(gl[0]-gl[1]);
+			s2=gl[0]/(gl[0]-gl[2]);
+		}
+		else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+			s1=gl[1]/(gl[1]-gl[0]);
+			s2=gl[1]/(gl[1]-gl[2]);
+		}
+		else _error_("case not possible");
+		if(mainlyfloating){
+			phi = (1-s1*s2);
+		}
+		else{
+			phi = s1*s2;
+		}
+	}
+
+	_assert_(phi<=1. && phi>=0.);
+	return phi;
+}
+/*}}}*/
+IssmDouble Penta::GetIcefrontArea(){/*{{{*/
+
+	/*We need to be on base and cross the levelset*/
+	if(!IsZeroLevelset(MaskIceLevelsetEnum)) return 0;
+	if(!this->IsOnBase()) return 0;
+
+	/*Spawn Tria element from the base of the Penta: */
+	Tria* tria=(Tria*)SpawnTria(0,1,2);
+	IssmDouble frontarea = tria->GetIcefrontArea();
+	delete tria->material; delete tria;
+
+	return frontarea;
+}/*}}}*/
+void       Penta::GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){/*{{{*/
+
+	/* Intermediaries */
+	const int dim=3;
+	int i, dir,nrfrontnodes;
+	IssmDouble  levelset[NUMVERTICES];
+
+	/*Recover parameters and values*/
+	Element::GetInputListOnVertices(&levelset[0],levelsetenum);
+
+	int* indicesfront = xNew<int>(NUMVERTICES);
+	/* Get basal nodes where there is no ice */
+	nrfrontnodes=0;
+	for(i=0;i<NUMVERTICES2D;i++){
+		if(levelset[i]>=0.){
+			indicesfront[nrfrontnodes]=i;
+			nrfrontnodes++;
+		}
+	}
+	_assert_(nrfrontnodes==2);
+
+	/* arrange order of basal frontnodes such that they are oriented counterclockwise */
+	if((NUMVERTICES2D+indicesfront[0]-indicesfront[1])%NUMVERTICES2D!=NUMVERTICES2D-1){
+		int index=indicesfront[0];
+		indicesfront[0]=indicesfront[1];
+		indicesfront[1]=index;
+	}
+
+	IssmDouble* xyz_front = xNew<IssmDouble>(2*dim*nrfrontnodes);
+	/* Return basal and top front nodes */
+	for(i=0;i<nrfrontnodes;i++){
+		for(dir=0;dir<dim;dir++){
+			int ind1=i*dim+dir, ind2=(2*nrfrontnodes-1-i)*dim+dir; // vertex structure front segment: base0, base1, top1, top0
+			xyz_front[ind1]=xyz_list[dim*indicesfront[i]+dir];
+			xyz_front[ind2]=xyz_list[dim*(indicesfront[i]+NUMVERTICES2D)+dir];
+		}
+	}
+
+	*pxyz_front=xyz_front;
+
+	xDelete<int>(indicesfront);
+}/*}}}*/
+Input*    Penta::GetInput(int inputenum){/*{{{*/
+
+	/*Get Input from dataset*/
+	PentaInput* input = this->inputs->GetPentaInput(inputenum);
+	if(!input) return input;
+
+	/*Intermediaries*/
+	int numindices;
+	int indices[30]; /*Max numnodes*/
+
+	/*Check interpolation*/
+	int interpolation = input->GetInterpolation();
+	if(interpolation==P1Enum){
+		numindices = 6;
+		for(int i=0;i<6;i++) indices[i] = vertices[i]->lid;
+		input->Serve(numindices,&indices[0]);
+	}
+	else{
+		input->Serve(this->lid,this->GetNumberOfNodes(interpolation));
+	}
+
+	/*Tell input it is NOT collapsed*/
+	//input->SetServeCollapsed(0); FIXME: not needed?
+
+	/*Return*/
+	return input;
+}/*}}}*/
+Input*    Penta::GetInput(int inputenum,IssmDouble time){/*{{{*/
+
+	/*Get Input from dataset*/
+	PentaInput* input = this->inputs->GetPentaInput(inputenum,time);
+	if(!input) return input;
+
+	/*Intermediaries*/
+	int numindices;
+	int indices[30]; /*Max numnodes*/
+
+	/*Check interpolation*/
+	int interpolation = input->GetInterpolation();
+	if(interpolation==P1Enum){
+		numindices = 6;
+		for(int i=0;i<6;i++) indices[i] = vertices[i]->lid;
+		input->Serve(numindices,&indices[0]);
+	}
+	else{
+		input->Serve(this->lid,this->GetNumberOfNodes(interpolation));
+	}
+
+	/*Tell input it is NOT collapsed*/
+	//input->SetServeCollapsed(0); FIXME: not needed?
+
+	/*Return*/
+	return input;
+}/*}}}*/
+void       Penta::GetInputListOnVertices(IssmDouble* pvalue,Input* input,IssmDouble default_value){/*{{{*/
+
+	/*Checks in debugging mode*/
+	_assert_(pvalue);
+
+	/* Start looping on the number of vertices: */
+	if(input){
+		GaussPenta gauss;
+		for(int iv=0;iv<NUMVERTICES;iv++){
+			gauss.GaussVertex(iv);
+			input->GetInputValue(&pvalue[iv],&gauss);
+		}
+	}
+	else{
+		for(int iv=0;iv<NUMVERTICES;iv++) pvalue[iv] = default_value;
+	}
+}
+/*}}}*/
+void       Penta::GetInputListOnNodes(IssmDouble* pvalue,Input* input,IssmDouble default_value){/*{{{*/
+
+	/*Checks in debugging mode*/
+	_assert_(pvalue);
+
+	/*What type of finite element are we dealing with?*/
+	int fe       = this->FiniteElement();
+	int numnodes = this->GetNumberOfNodes();
+
+	/* Start looping on the number of vertices: */
+	if(input){
+		GaussPenta gauss;
+		for(int iv=0;iv<numnodes;iv++){
+			gauss.GaussNode(fe,iv);
+			input->GetInputValue(&pvalue[iv],&gauss);
+		}
+	}
+	else{
+		for(int iv=0;iv<numnodes;iv++) pvalue[iv] = default_value;
+	}
+}
+/*}}}*/
+DatasetInput* Penta::GetDatasetInput(int inputenum){/*{{{*/
+
+	DatasetInput* datasetinput = this->inputs->GetDatasetInput(inputenum);
+	if(!datasetinput) return NULL;
+
+	for(int i=0;i<datasetinput->GetNumIds();i++){
+
+		PentaInput* input = datasetinput->GetPentaInputByOffset(i); _assert_(input);
+
+		/*Intermediaries*/
+		int numindices;
+		int indices[30]; /*Max numnodes*/
+
+		/*Check interpolation*/
+		int interpolation = input->GetInterpolation();
+		if(interpolation==P1Enum){
+			numindices = 6;
+			for(int i=0;i<6;i++) indices[i] = vertices[i]->lid;
+			input->Serve(numindices,&indices[0]);
+		}
+		else{
+			input->Serve(this->lid,this->GetNumberOfNodes(interpolation));
+		}
+
+	}
+
+	return datasetinput;
+}/*}}}*/
+void       Penta::GetInputValue(IssmDouble* pvalue,Node* node,int enumtype){/*{{{*/
+
+	Input* input=this->GetInput(enumtype);
+	if(!input) _error_("No input of type " << EnumToStringx(enumtype) << " found in tria");
+
+	int index = this->GetNodeIndex(node);
+
+	GaussPenta gauss;
+	gauss.GaussNode(this->element_type,index);
+	input->GetInputValue(pvalue,&gauss);
+}
+/*}}}*/
+void       Penta::GetInputValue(IssmDouble* pvalue,Vertex* vertex,int enumtype){/*{{{*/
+
+	Input* input=this->GetInput(enumtype);
+	if(!input) _error_("No input of type " << EnumToStringx(enumtype) << " found in tria");
+
+	int index = this->GetVertexIndex(vertex);
+
+	GaussPenta gauss;
+	gauss.GaussVertex(index);
+	input->GetInputValue(pvalue,&gauss);
+}
+/*}}}*/
+Penta*     Penta::GetLowerPenta(void){/*{{{*/
+
+	Penta* lower_penta=NULL;
+
+	lower_penta=(Penta*)verticalneighbors[0]; //first one (0) under, second one (1) above
+
+	return lower_penta;
+}
+/*}}}*/
+void       Penta::GetLevelsetIntersectionBase(int** pindices, int* pnumiceverts, IssmDouble* fraction, int levelset_enum, IssmDouble level){/*{{{*/
+
+	/* GetLevelsetIntersection computes:
+	 * 1. indices of element, sorted in [iceverts, noiceverts] in counterclockwise fashion,
+	 * 2. fraction of intersected triangle edges intersected by levelset, lying below level*/
+
+	/*Intermediaries*/
+	int i, numiceverts, numnoiceverts;
+	int ind0, ind1, lastindex;
+	int indices_ice[NUMVERTICES2D],indices_noice[NUMVERTICES2D];
+	IssmDouble lsf[NUMVERTICES];
+	int* indices = xNew<int>(NUMVERTICES2D);
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&lsf[0],levelset_enum);
+
+	/* Determine distribution of ice over element.
+	 * Exploit: ice/no-ice parts are connected, so find starting vertex of segment*/
+	lastindex=0;
+	for(i=0;i<NUMVERTICES2D;i++){ // go backwards along vertices, and check for sign change
+		ind0=(NUMVERTICES2D-i)%NUMVERTICES2D;
+		ind1=(ind0-1+NUMVERTICES2D)%NUMVERTICES2D;
+		if((lsf[ind0]-level)*(lsf[ind1]-level)<=0.){ // levelset has been crossed, find last index belonging to segment
+			if(lsf[ind1]==level) //if levelset intersects 2nd vertex, choose this vertex as last
+				lastindex=ind1;
+			else
+				lastindex=ind0;
+			break;
+		}
+	}
+
+	numiceverts=0;
+	numnoiceverts=0;
+	for(i=0;i<NUMVERTICES2D;i++){
+		ind0=(lastindex+i)%NUMVERTICES2D;
+		if(lsf[i]<=level){
+			indices_ice[numiceverts]=i;
+			numiceverts++;
+		}
+		else{
+			indices_noice[numnoiceverts]=i;
+			numnoiceverts++;
+		}
+	}
+	//merge indices
+	for(i=0;i<numiceverts;i++){indices[i]=indices_ice[i];}
+	for(i=0;i<numnoiceverts;i++){indices[numiceverts+i]=indices_noice[i];}
+
+	switch (numiceverts){
+		case 0: // no vertex has ice: element is ice free, no intersection
+			for(i=0;i<2;i++)
+				fraction[i]=0.;
+			break;
+		case 1: // one vertex has ice:
+			for(i=0;i<2;i++){
+				fraction[i]=(level-lsf[indices[0]])/(lsf[indices[numiceverts+i]]-lsf[indices[0]]);
+			}
+			break;
+		case 2: // two vertices have ice: fraction is computed from first ice vertex to last in CCW fashion
+			for(i=0;i<2;i++){
+				fraction[i]=(level-lsf[indices[i]])/(lsf[indices[numiceverts]]-lsf[indices[i]]);
+			}
+			break;
+		case NUMVERTICES2D: // all vertices have ice: return triangle area
+			for(i=0;i<2;i++)
+				fraction[i]=1.;
+			break;
+		default:
+			_error_("Wrong number of ice vertices in Penta::GetLevelsetIntersectionBase!");
+			break;
+	}
+
+	*pindices=indices;
+	*pnumiceverts=numiceverts;
+}
+/*}}}*/
+int        Penta::GetVertexIndex(Vertex* vertex){/*{{{*/
+	_assert_(vertices);
+	for(int i=0;i<NUMVERTICES;i++){
+		if(vertex==vertices[i])
+		 return i;
+	}
+	_error_("Vertex provided not found among element vertices");
+}
+/*}}}*/
+int        Penta::GetNumberOfNodes(void){/*{{{*/
+	return this->NumberofNodes(this->element_type);
+}
+/*}}}*/
+int        Penta::GetNumberOfNodes(int enum_type){/*{{{*/
+	return this->NumberofNodes(enum_type);
+}
+/*}}}*/
+int        Penta::GetNumberOfVertices(void){/*{{{*/
+	return NUMVERTICES;
+}
+/*}}}*/
+Penta*     Penta::GetUpperPenta(void){/*{{{*/
+
+	Penta* upper_penta=NULL;
+
+	upper_penta=(Penta*)verticalneighbors[1]; //first one (0) under, second one (1) above
+
+	return upper_penta;
+}
+/*}}}*/
+void       Penta::GetVectorFromControlInputs(Vector<IssmDouble>* vector,int control_enum,int control_index,int N,const char* data,int offset){/*{{{*/
+
+	/*Get input*/
+	if(control_enum==MaterialsRheologyBbarEnum) control_enum=MaterialsRheologyBEnum;
+	ElementInput* input=this->inputs->GetControlInputData(control_enum,data);   _assert_(input);
+
+	/*Lid list once for all*/
+	int lidlist[NUMVERTICES];
+	for(int i=0;i<NUMVERTICES;i++) lidlist[i] = vertices[i]->lid;
+
+	/*Check what input we are dealing with*/
+	switch(input->ObjectEnum()){
+		case PentaInputEnum:
+			  {
+				IssmDouble values[NUMVERTICES];
+				int        idlist[NUMVERTICES];
+
+				PentaInput* triainput = xDynamicCast<PentaInput*>(input);
+
+				/*Create list of indices and values for global vector*/
+				GradientIndexing(&idlist[0],control_index);
+
+				if(triainput->GetInputInterpolationType()==P1Enum){
+					input->Serve(NUMVERTICES,&lidlist[0]);
+					for(int i=0;i<NUMVERTICES;i++) values[i] = triainput->element_values[i];
+					vector->SetValues(NUMVERTICES,idlist,values,INS_VAL);
+				}
+				else if(triainput->GetInputInterpolationType()==P0Enum){
+					input->Serve(1,&this->lid);
+					vector->SetValue(idlist[0],triainput->element_values[0],INS_VAL);
+				}
+				else{
+					_error_("not supported yet");
+				}
+				break;
+			  }
+
+		case TransientInputEnum:
+				{
+					TransientInput* transientinput = xDynamicCast<TransientInput*>(input);
+					int  N = transientinput->numtimesteps;
+					int* M = NULL;
+					parameters->FindParam(&M,NULL,ControlInputSizeMEnum);
+					int* idlist = xNew<int>(NUMVERTICES*N);
+					IssmDouble* values = xNew<IssmDouble>(NUMVERTICES*N);
+					for(int t=0;t<transientinput->numtimesteps;t++) {
+						IssmDouble time = transientinput->GetTimeByOffset(t);
+						_error_("not implemented, SEE TRIA!");
+						//PentaInput* timeinput = xDynamicCast<PentaInput*>(transientinput->GetTimeInput(time));
+						//if(timeinput->interpolation_type!=P1Enum) _error_("not supported yet");
+						//input->Serve(NUMVERTICES,&lidlist[0]);
+						///*Create list of indices and values for global vector*/
+						//for(int i=0;i<NUMVERTICES;i++){
+						//		idlist[N*i+t] = offset + this->vertices[i]->Sid()+t*M[control_index];
+						//		values[N*i+t] = timeinput->values[i];
+						//}
+					}
+					vector->SetValues(NUMVERTICES*transientinput->numtimesteps,idlist,values,INS_VAL);
+					xDelete<int>(M);
+					xDelete<int>(idlist);
+					xDelete<IssmDouble>(values);
+					break;
+				}
+		default: _error_("input "<<EnumToStringx(input->ObjectEnum())<<" not supported yet");
+	}
+}/*}}}*/
+void       Penta::GetVerticesCoordinatesBase(IssmDouble** pxyz_list){/*{{{*/
+
+	IssmDouble* xyz_list = xNew<IssmDouble>(NUMVERTICES2D*3);
+	::GetVerticesCoordinates(xyz_list,this->vertices,NUMVERTICES2D);
+
+	/*Assign output pointer*/
+	*pxyz_list = xyz_list;
+
+}/*}}}*/
+void       Penta::GetVerticesCoordinatesTop(IssmDouble** pxyz_list){/*{{{*/
+
+	IssmDouble* xyz_list = xNew<IssmDouble>(NUMVERTICES2D*3);
+	::GetVerticesCoordinates(xyz_list,&this->vertices[3],NUMVERTICES2D);
+
+	/*Assign output pointer*/
+	*pxyz_list = xyz_list;
+
+}/*}}}*/
+IssmDouble Penta::GroundedArea(bool scaled){/*{{{*/
+
+	/*Intermediaries*/
+	int         domaintype;
+	IssmDouble  phi,base_area,scalefactor,groundedarea;
+	IssmDouble  xyz_list[NUMVERTICES][3];
+
+	if(!IsIceInElement() || !IsOnBase())return 0.;
+
+	/*Get problem dimension*/
+	this->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype!=Domain3DEnum) _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	phi=this->GetGroundedPortion(&xyz_list[0][0]);
+	base_area= 1./2.*fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
+
+	groundedarea=phi*base_area;
+
+	if(scaled==true){
+		Input* scalefactor_input = this->GetInput(MeshScaleFactorEnum); _assert_(scalefactor_input);
+		scalefactor_input->GetInputAverage(&scalefactor);
+		groundedarea=groundedarea*scalefactor;
+	}
+	/*Clean up and return*/
+	return groundedarea;
+}
+/*}}}*/
+IssmDouble Penta::GroundinglineMassFlux(bool scaled){/*{{{*/
+
+	/*Make sure there is a grounding line here*/
+	if(!IsOnBase()) return 0;
+	if(!IsIceInElement()) return 0;
+	if(!IsZeroLevelset(MaskOceanLevelsetEnum)) return 0;
+
+	/*Scaled not implemented yet...*/
+	_assert_(!scaled);
+
+	int               index1,index2;
+	const IssmPDouble epsilon = 1.e-15;
+	IssmDouble        s1,s2;
+	IssmDouble        gl[NUMVERTICES];
+	IssmDouble        xyz_front[2][3];
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Recover parameters and values*/
+	Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum);
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+	int pt1 = 0;
+	int pt2 = 1;
+	if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+
+		/*Portion of the segments*/
+		s1=gl[2]/(gl[2]-gl[1]);
+		s2=gl[2]/(gl[2]-gl[0]);
+		if(gl[2]<0.){
+			pt1 = 1; pt2 = 0;
+		}
+		xyz_front[pt2][0]=xyz_list[2][0]+s1*(xyz_list[1][0]-xyz_list[2][0]);
+		xyz_front[pt2][1]=xyz_list[2][1]+s1*(xyz_list[1][1]-xyz_list[2][1]);
+		xyz_front[pt2][2]=xyz_list[2][2]+s1*(xyz_list[1][2]-xyz_list[2][2]);
+		xyz_front[pt1][0]=xyz_list[2][0]+s2*(xyz_list[0][0]-xyz_list[2][0]);
+		xyz_front[pt1][1]=xyz_list[2][1]+s2*(xyz_list[0][1]-xyz_list[2][1]);
+		xyz_front[pt1][2]=xyz_list[2][2]+s2*(xyz_list[0][2]-xyz_list[2][2]);
+	}
+	else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+
+		/*Portion of the segments*/
+		s1=gl[0]/(gl[0]-gl[1]);
+		s2=gl[0]/(gl[0]-gl[2]);
+		if(gl[0]<0.){
+			pt1 = 1; pt2 = 0;
+		}
+
+		xyz_front[pt1][0]=xyz_list[0][0]+s1*(xyz_list[1][0]-xyz_list[0][0]);
+		xyz_front[pt1][1]=xyz_list[0][1]+s1*(xyz_list[1][1]-xyz_list[0][1]);
+		xyz_front[pt1][2]=xyz_list[0][2]+s1*(xyz_list[1][2]-xyz_list[0][2]);
+		xyz_front[pt2][0]=xyz_list[0][0]+s2*(xyz_list[2][0]-xyz_list[0][0]);
+		xyz_front[pt2][1]=xyz_list[0][1]+s2*(xyz_list[2][1]-xyz_list[0][1]);
+		xyz_front[pt2][2]=xyz_list[0][2]+s2*(xyz_list[2][2]-xyz_list[0][2]);
+	}
+	else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+
+		/*Portion of the segments*/
+		s1=gl[1]/(gl[1]-gl[0]);
+		s2=gl[1]/(gl[1]-gl[2]);
+		if(gl[1]<0.){
+			pt1 = 1; pt2 = 0;
+		}
+
+		xyz_front[pt2][0]=xyz_list[1][0]+s1*(xyz_list[0][0]-xyz_list[1][0]);
+		xyz_front[pt2][1]=xyz_list[1][1]+s1*(xyz_list[0][1]-xyz_list[1][1]);
+		xyz_front[pt2][2]=xyz_list[1][2]+s1*(xyz_list[0][2]-xyz_list[1][2]);
+		xyz_front[pt1][0]=xyz_list[1][0]+s2*(xyz_list[2][0]-xyz_list[1][0]);
+		xyz_front[pt1][1]=xyz_list[1][1]+s2*(xyz_list[2][1]-xyz_list[1][1]);
+		xyz_front[pt1][2]=xyz_list[1][2]+s2*(xyz_list[2][2]-xyz_list[1][2]);
+	}
+	else{
+		_error_("case not possible");
+	}
+
+	/*Some checks in debugging mode*/
+	_assert_(s1>=0 && s1<=1.);
+	_assert_(s2>=0 && s2<=1.);
+
+	/*Get normal vector*/
+	IssmDouble normal[3];
+	this->NormalSectionBase(&normal[0],&xyz_front[0][0]);
+	normal[0] = -normal[0];
+	normal[1] = -normal[1];
+
+	this->InputDepthAverageAtBase(VxEnum,VxAverageEnum);
+	this->InputDepthAverageAtBase(VyEnum,VyAverageEnum);
+
+	/*Get inputs*/
+	IssmDouble flux = 0.;
+	IssmDouble vx,vy,thickness,Jdet;
+	IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
+	Input *thickness_input = this->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input *vx_input        = this->GetInput(VxAverageEnum); _assert_(vx_input);
+	Input *vy_input        = this->GetInput(VyAverageEnum); _assert_(vy_input);
+
+	/*Start looping on Gaussian points*/
+	Gauss* gauss=this->NewGaussBase(&xyz_list[0][0],&xyz_front[0][0],3);
+	while(gauss->next()){
+		thickness_input->GetInputValue(&thickness,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		this->JacobianDeterminantLine(&Jdet,&xyz_front[0][0],gauss);
+
+		flux += rho_ice*Jdet*gauss->weight*thickness*(vx*normal[0] + vy*normal[1]);
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	return flux;
+}
+/*}}}*/
+IssmDouble Penta::IcefrontMassFluxLevelset(bool scaled){/*{{{*/
+
+	/*Make sure there is an ice front here*/
+	if(!IsIceInElement() || !IsZeroLevelset(MaskIceLevelsetEnum) || !IsOnBase()) return 0;
+
+	/*Scaled not implemented yet...*/
+	_assert_(!scaled);
+
+	int               index1,index2;
+	const IssmPDouble epsilon = 1.e-15;
+	IssmDouble        s1,s2;
+	IssmDouble        gl[NUMVERTICES];
+	IssmDouble        xyz_front[2][3];
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Recover parameters and values*/
+	Element::GetInputListOnVertices(&gl[0],MaskIceLevelsetEnum);
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+	int pt1 = 0;
+	int pt2 = 1;
+	if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+
+		/*Portion of the segments*/
+		s1=gl[2]/(gl[2]-gl[1]);
+		s2=gl[2]/(gl[2]-gl[0]);
+		if(gl[2]<0.){
+			pt1 = 1; pt2 = 0;
+		}
+		xyz_front[pt2][0]=xyz_list[2][0]+s1*(xyz_list[1][0]-xyz_list[2][0]);
+		xyz_front[pt2][1]=xyz_list[2][1]+s1*(xyz_list[1][1]-xyz_list[2][1]);
+		xyz_front[pt2][2]=xyz_list[2][2]+s1*(xyz_list[1][2]-xyz_list[2][2]);
+		xyz_front[pt1][0]=xyz_list[2][0]+s2*(xyz_list[0][0]-xyz_list[2][0]);
+		xyz_front[pt1][1]=xyz_list[2][1]+s2*(xyz_list[0][1]-xyz_list[2][1]);
+		xyz_front[pt1][2]=xyz_list[2][2]+s2*(xyz_list[0][2]-xyz_list[2][2]);
+	}
+	else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+
+		/*Portion of the segments*/
+		s1=gl[0]/(gl[0]-gl[1]);
+		s2=gl[0]/(gl[0]-gl[2]);
+		if(gl[0]<0.){
+			pt1 = 1; pt2 = 0;
+		}
+
+		xyz_front[pt1][0]=xyz_list[0][0]+s1*(xyz_list[1][0]-xyz_list[0][0]);
+		xyz_front[pt1][1]=xyz_list[0][1]+s1*(xyz_list[1][1]-xyz_list[0][1]);
+		xyz_front[pt1][2]=xyz_list[0][2]+s1*(xyz_list[1][2]-xyz_list[0][2]);
+		xyz_front[pt2][0]=xyz_list[0][0]+s2*(xyz_list[2][0]-xyz_list[0][0]);
+		xyz_front[pt2][1]=xyz_list[0][1]+s2*(xyz_list[2][1]-xyz_list[0][1]);
+		xyz_front[pt2][2]=xyz_list[0][2]+s2*(xyz_list[2][2]-xyz_list[0][2]);
+	}
+	else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+
+		/*Portion of the segments*/
+		s1=gl[1]/(gl[1]-gl[0]);
+		s2=gl[1]/(gl[1]-gl[2]);
+		if(gl[1]<0.){
+			pt1 = 1; pt2 = 0;
+		}
+
+		xyz_front[pt2][0]=xyz_list[1][0]+s1*(xyz_list[0][0]-xyz_list[1][0]);
+		xyz_front[pt2][1]=xyz_list[1][1]+s1*(xyz_list[0][1]-xyz_list[1][1]);
+		xyz_front[pt2][2]=xyz_list[1][2]+s1*(xyz_list[0][2]-xyz_list[1][2]);
+		xyz_front[pt1][0]=xyz_list[1][0]+s2*(xyz_list[2][0]-xyz_list[1][0]);
+		xyz_front[pt1][1]=xyz_list[1][1]+s2*(xyz_list[2][1]-xyz_list[1][1]);
+		xyz_front[pt1][2]=xyz_list[1][2]+s2*(xyz_list[2][2]-xyz_list[1][2]);
+	}
+	else{
+		_error_("case not possible");
+	}
+
+	/*Some checks in debugging mode*/
+	_assert_(s1>=0 && s1<=1.);
+	_assert_(s2>=0 && s2<=1.);
+
+	/*Get normal vector*/
+	IssmDouble normal[3];
+	this->NormalSectionBase(&normal[0],&xyz_front[0][0]);
+	normal[0] = -normal[0];
+	normal[1] = -normal[1];
+
+	this->InputDepthAverageAtBase(VxEnum,VxAverageEnum);
+	this->InputDepthAverageAtBase(VyEnum,VyAverageEnum);
+
+	/*Get inputs*/
+	IssmDouble flux = 0.;
+	IssmDouble vx,vy,thickness,Jdet;
+	IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
+	Input* thickness_input=this->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* vx_input=NULL;
+	Input* vy_input=NULL;
+	vx_input=this->GetInput(VxAverageEnum); _assert_(vx_input);
+	vy_input=this->GetInput(VyAverageEnum); _assert_(vy_input);
+
+	/*Start looping on Gaussian points*/
+	Gauss* gauss=this->NewGaussBase(&xyz_list[0][0],&xyz_front[0][0],3);
+	while(gauss->next()){
+		thickness_input->GetInputValue(&thickness,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		this->JacobianDeterminantLine(&Jdet,&xyz_front[0][0],gauss);
+
+		flux += rho_ice*Jdet*gauss->weight*thickness*(vx*normal[0] + vy*normal[1]);
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	return flux;
+}
+/*}}}*/
+IssmDouble Penta::IceVolume(bool scaled){/*{{{*/
+
+	/*The volume of a troncated prism is base * 1/3 sum(length of edges)*/
+	IssmDouble base,height,scalefactor;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble lsf[NUMVERTICES];
+
+	if(!IsIceInElement()) return 0;
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	Element::GetInputListOnVertices(&lsf[0],MaskIceLevelsetEnum);
+	/*Deal with partially ice-covered elements*/
+	if(lsf[0]*lsf[1]<=0 || lsf[0]*lsf[2]<=0 || lsf[1]*lsf[2]<=0){
+		bool        istrapneg;
+		int         point;
+		IssmDouble  f1,f2,phi;
+		IssmDouble  heights[NUMVERTICES2D];
+		IssmDouble  weights[NUMVERTICES2D];
+		IssmDouble  lsf2d[NUMVERTICES2D];
+		for(int i=0;i<NUMVERTICES2D;i++){
+			heights[i] = xyz_list[i+NUMVERTICES2D][2]-xyz_list[i][2];
+			lsf2d[i]   = lsf[i];
+		}
+		GetFractionGeometry2D(&weights[0],&phi,&point,&f1,&f2,&istrapneg,lsf2d);
+		
+		IssmDouble basetot;
+		height = 0.0;
+		for(int i=0;i<NUMVERTICES2D;i++) height += weights[i]/phi*heights[i];
+		basetot = 1./2.*fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
+		base    = basetot*phi;	
+	
+		/*Account for scaling factor averaged over subelement 2D area*/
+		if(scaled==true){
+			IssmDouble scalefactor_vertices[NUMVERTICES];
+			Element::GetInputListOnVertices(&scalefactor_vertices[0],MeshScaleFactorEnum);
+			/*Compute loop only over lower vertices: i<NUMVERTICES2D*/
+			scalefactor = 0.0;
+			for(int i=0;i<NUMVERTICES2D;i++) scalefactor += weights[i]/phi*scalefactor_vertices[i];
+			base = base*scalefactor;
+		}
+	}
+
+	else{ 
+		/*First calculate the area of the base (cross section triangle)
+		 * http://en.wikipedia.org/wiki/Pentangle
+		 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/
+		base = 1./2.*fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
+	
+		if(scaled==true){ //scale for area projection correction
+			Input* scalefactor_input = this->GetInput(MeshScaleFactorEnum); _assert_(scalefactor_input);
+			scalefactor_input->GetInputAverage(&scalefactor);
+			base=base*scalefactor;
+		}
+	
+		/*Now get the average height*/
+		height = 1./3.*((xyz_list[3][2]-xyz_list[0][2])+(xyz_list[4][2]-xyz_list[1][2])+(xyz_list[5][2]-xyz_list[2][2]));
+	}
+
+	/*Return: */
+	return base*height;
+}
+/*}}}*/
+IssmDouble Penta::IceVolumeAboveFloatation(bool scaled){/*{{{*/
+
+	/*Volume above floatation: H + rho_water/rho_ice*bathymetry for nodes on the bed*/
+	IssmDouble rho_ice,rho_water;
+	IssmDouble base,bed,surface,bathymetry,scalefactor;
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	if(!IsIceInElement() || IsAllFloating() || !IsOnBase())return 0;
+
+	rho_ice=FindParam(MaterialsRhoIceEnum);
+	rho_water=FindParam(MaterialsRhoSeawaterEnum);
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*First calculate the area of the base (cross section triangle)
+	 * http://en.wikipedia.org/wiki/Pentangle
+	 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/
+	base = 1./2.*fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
+	if(scaled==true){
+		Input* scalefactor_input = this->GetInput(MeshScaleFactorEnum); _assert_(scalefactor_input);
+		scalefactor_input->GetInputAverage(&scalefactor);
+		base=base*scalefactor;
+	}
+
+	/*Now get the average height above floatation*/
+	Input* surface_input    = this->GetInput(SurfaceEnum);    _assert_(surface_input);
+	Input* base_input        = this->GetInput(BaseEnum);        _assert_(base_input);
+	Input* bed_input = this->GetInput(BedEnum); _assert_(bed_input);
+	if(!bed_input) _error_("Could not find bed");
+	surface_input->GetInputAverage(&surface);
+	base_input->GetInputAverage(&bed);
+	bed_input->GetInputAverage(&bathymetry);
+
+	/*Return: */
+	return base*(surface - bed + min( rho_water/rho_ice * bathymetry, 0.) );
+}
+/*}}}*/
+void       Penta::InputDepthAverageAtBase(int original_enum,int average_enum){/*{{{*/
+
+	IssmDouble  Jdet,value;
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  xyz_list_line[2][3];
+	IssmDouble  total[NUMVERTICES]       = {0.};
+	int         lidlist[NUMVERTICES];
+	IssmDouble  intz[NUMVERTICES]        = {0.};
+	Input     *original_input           = NULL;
+	Input     *depth_averaged_input     = NULL;
+
+	/*Are we on the base? If not, return*/
+	if(!IsOnBase()) return;
+
+	/*Now follow all the upper element from the base to the surface to integrate the input*/
+	Penta* penta = this;
+	int    step  = 0;
+	Gauss* gauss[3];
+	for(int iv=0;iv<3;iv++) gauss[iv] = penta->NewGaussLine(iv,iv+3,3);
+
+	for(;;){
+
+		/*Step1: Get original input (to be depth-avegaged): */
+		original_input=penta->GetInput(original_enum);
+		if(!original_input) _error_("could not find input with enum " << EnumToStringx(original_enum));
+
+		/*Step2: Create element thickness input*/
+		::GetVerticesCoordinates(&xyz_list[0][0],penta->vertices,NUMVERTICES);
+		for(int iv=0;iv<3;iv++){
+			/*Get segment length*/
+			for(int i=0;i<3;i++){
+				xyz_list_line[0][i]=xyz_list[iv][i];
+				xyz_list_line[1][i]=xyz_list[iv+3][i];
+			}
+			/*Integrate over edge*/
+			gauss[iv]->Reset();
+			while(gauss[iv]->next()){
+				penta->JacobianDeterminantLine(&Jdet,&xyz_list_line[0][0],gauss[iv]);
+				original_input->GetInputValue(&value,gauss[iv]);
+				total[iv] += value*Jdet*gauss[iv]->weight;
+				intz[iv]  += Jdet*gauss[iv]->weight;
+			}
+		}
+
+		/*Stop if we have reached the surface, else, take upper penta*/
+		if(penta->IsOnSurface()) break;
+
+		/* get upper Penta*/
+		penta=penta->GetUpperPenta(); _assert_(penta->Id()!=this->id);
+		step++;
+	}
+	for(int iv=0;iv<3;iv++) delete gauss[iv];
+
+	/*Now we only need to divide the depth integrated input by the total thickness!*/
+	for(int iv=0;iv<3;iv++){
+		total[iv  ] = total[iv]/intz[iv];
+		total[iv+3] = total[iv];
+	}
+	GetVerticesLidList(&lidlist[0]);
+	switch(original_input->ObjectEnum()){
+		case PentaInputEnum:
+		case ControlInputEnum:
+			this->inputs->SetPentaInput(average_enum,P1Enum,NUMVERTICES,lidlist,&total[0]);
+			break;
+		default:
+			_error_("Interpolation " << EnumToStringx(original_input->ObjectEnum()) << " not supported yet");
+	}
+}
+/*}}}*/
+void       Penta::DatasetInputExtrude(int enum_type,int start){/*{{{*/
+
+	_assert_(start==-1 || start==+1);
+	_assert_(this->inputs);
+
+	/*Are we on the the boundary we want to be?*/
+	if(start==-1 && !IsOnBase())    return;
+	if(start==+1 && !IsOnSurface()) return;
+
+	/*Get original input*/
+	DatasetInput* dinput = this->inputs->GetDatasetInput(enum_type);
+
+	int lidlist[NUMVERTICES];
+	this->GetVerticesLidList(&lidlist[0]);
+
+	for(int id=0;id<dinput->GetNumIds();id++){
+
+		PentaInput* pentainput = dinput->GetPentaInputByOffset(id);
+		pentainput->Serve(NUMVERTICES,&lidlist[0]);
+
+		if(pentainput->GetInterpolation()==P1Enum){
+
+			/*Extrude values first*/
+			IssmDouble extrudedvalues[NUMVERTICES];
+			this->GetInputListOnVertices(&extrudedvalues[0],pentainput,0.);
+
+			if(start==-1){
+				for(int i=0;i<NUMVERTICES2D;i++) extrudedvalues[i+NUMVERTICES2D]=extrudedvalues[i];
+			}
+			else{
+				for(int i=0;i<NUMVERTICES2D;i++) extrudedvalues[i]=extrudedvalues[i+NUMVERTICES2D];
+			}
+
+			/*Propagate to other Pentas*/
+			Penta* penta=this;
+			for(;;){
+
+				/*Add input of the basal element to penta->inputs*/
+				int vertexlids[NUMVERTICES];
+				penta->GetVerticesLidList(&vertexlids[0]);
+				pentainput->SetInput(P1Enum,NUMVERTICES,&vertexlids[0],&extrudedvalues[0]);
+
+				/*Stop if we have reached the surface/base*/
+				if(start==-1 && penta->IsOnSurface()) break;
+				if(start==+1 && penta->IsOnBase())    break;
+
+				/*get upper/lower Penta*/
+				if(start==-1) penta=penta->GetUpperPenta();
+				else          penta=penta->GetLowerPenta();
+				_assert_(penta->Id()!=this->id);
+			}
+		}
+		else{
+			_error_("not implemented yet");
+		}
+	}
+}
+/*}}}*/
+void       Penta::ControlInputExtrude(int enum_type,int start){/*{{{*/
+
+	_assert_(start==-1 || start==+1);
+	_assert_(this->inputs);
+
+	/*Are we on the the boundary we want to be?*/
+	if(start==-1 && !IsOnBase())    return;
+	if(start==+1 && !IsOnSurface()) return;
+
+	/*Get original input*/
+	ElementInput* input  = this->inputs->GetControlInputData(enum_type,"value");
+	if(input->ObjectEnum()!=PentaInputEnum) _error_("not supported yet");
+	PentaInput* pentainput = xDynamicCast<PentaInput*>(input);
+	ElementInput* input2 = this->inputs->GetControlInputData(enum_type,"savedvalues");
+	if(input->ObjectEnum()!=PentaInputEnum) _error_("not supported yet");
+	PentaInput* pentainput2= xDynamicCast<PentaInput*>(input2);
+	/*FIXME: this should not be necessary*/
+	ElementInput* input3 = this->inputs->GetControlInputData(enum_type,"gradient");
+	if(input->ObjectEnum()!=PentaInputEnum) _error_("not supported yet");
+	PentaInput* pentainput3= xDynamicCast<PentaInput*>(input3);
+
+	int lidlist[NUMVERTICES];
+	this->GetVerticesLidList(&lidlist[0]);
+	pentainput->Serve(NUMVERTICES,&lidlist[0]);
+	pentainput2->Serve(NUMVERTICES,&lidlist[0]);
+	pentainput3->Serve(NUMVERTICES,&lidlist[0]);
+
+	if(pentainput->GetInterpolation()==P1Enum){
+
+		/*Extrude values first*/
+		IssmDouble extrudedvalues[NUMVERTICES];
+		IssmDouble extrudedvalues2[NUMVERTICES];
+		IssmDouble extrudedvalues3[NUMVERTICES];
+
+		this->GetInputListOnVertices(&extrudedvalues[0],pentainput,0.);
+		this->GetInputListOnVertices(&extrudedvalues2[0],pentainput2,0.);
+		this->GetInputListOnVertices(&extrudedvalues3[0],pentainput3,0.);
+
+		if(start==-1){
+			for(int i=0;i<NUMVERTICES2D;i++) extrudedvalues[i+NUMVERTICES2D]=extrudedvalues[i];
+			for(int i=0;i<NUMVERTICES2D;i++) extrudedvalues2[i+NUMVERTICES2D]=extrudedvalues2[i];
+			for(int i=0;i<NUMVERTICES2D;i++) extrudedvalues3[i+NUMVERTICES2D]=extrudedvalues3[i]/2.; /*FIXME: this is just for NR*/
+			for(int i=0;i<NUMVERTICES2D;i++) extrudedvalues3[i]=extrudedvalues3[i]/2.; /*FIXME: this is just for NR*/
+		}
+		else{
+			for(int i=0;i<NUMVERTICES2D;i++) extrudedvalues[i]=extrudedvalues[i+NUMVERTICES2D];
+			for(int i=0;i<NUMVERTICES2D;i++) extrudedvalues2[i]=extrudedvalues2[i+NUMVERTICES2D];
+		}
+
+		/*Propagate to other Pentas*/
+		Penta* penta=this;
+		for(;;){
+
+			if(penta->IsOnSurface() && start==-1){ /*FIXME: this is just for NR*/
+				for(int i=0;i<NUMVERTICES2D;i++) extrudedvalues3[i+NUMVERTICES2D]=0.;
+			}
+
+			/*Add input of the basal element to penta->inputs*/
+			int vertexlids[NUMVERTICES];
+			penta->GetVerticesLidList(&vertexlids[0]);
+			pentainput->SetInput(P1Enum,NUMVERTICES,&vertexlids[0],&extrudedvalues[0]);
+			pentainput2->SetInput(P1Enum,NUMVERTICES,&vertexlids[0],&extrudedvalues2[0]);
+			if(start==-1 && !penta->IsOnBase()){
+				pentainput3->SetInput(P1Enum,NUMVERTICES,&vertexlids[0],&extrudedvalues3[0]);
+			}
+
+			/*Stop if we have reached the surface/base*/
+			if(start==-1 && penta->IsOnSurface()) break;
+			if(start==+1 && penta->IsOnBase())    break;
+
+			/*get upper/lower Penta*/
+			if(start==-1) penta=penta->GetUpperPenta();
+			else          penta=penta->GetLowerPenta();
+			_assert_(penta->Id()!=this->id);
+		}
+	}
+	else{
+		_error_("not implemented yet");
+	}
+}
+/*}}}*/
+void       Penta::InputExtrude(int enum_type,int start){/*{{{*/
+
+	_assert_(start==-1 || start==+1);
+	_assert_(this->inputs);
+
+	/*Are we on the the boundary we want to be?*/
+	if(start==-1 && !IsOnBase())    return;
+	if(start==+1 && !IsOnSurface()) return;
+
+	/*Get original input*/
+	Input* input = this->GetInput(enum_type);
+	if(input->ObjectEnum()!=PentaInputEnum) _error_("not supported yet");
+	PentaInput* pentainput = xDynamicCast<PentaInput*>(input);
+
+	if(pentainput->GetInterpolation()==P1Enum || pentainput->GetInterpolation()==P1DGEnum){
+		/*Extrude values first*/
+		IssmDouble extrudedvalues[NUMVERTICES];
+
+		Element::GetInputListOnVertices(&extrudedvalues[0],enum_type);
+		if(start==-1){
+			for(int i=0;i<NUMVERTICES2D;i++) extrudedvalues[i+NUMVERTICES2D]=extrudedvalues[i];
+		}
+		else{
+			for(int i=0;i<NUMVERTICES2D;i++) extrudedvalues[i]=extrudedvalues[i+NUMVERTICES2D];
+		}
+
+		/*Propagate to other Pentas*/
+		Penta* penta=this;
+		for(;;){
+
+			/*Add input of the basal element to penta->inputs*/
+			penta->AddInput(enum_type,&extrudedvalues[0],pentainput->GetInterpolation());
+
+			/*Stop if we have reached the surface/base*/
+			if(start==-1 && penta->IsOnSurface()) break;
+			if(start==+1 && penta->IsOnBase())    break;
+
+			/*get upper/lower Penta*/
+			if(start==-1) penta=penta->GetUpperPenta();
+			else          penta=penta->GetLowerPenta();
+			_assert_(penta->Id()!=this->id);
+		}
+	}
+	else{
+		_error_("interpolation "<<EnumToStringx(pentainput->GetInterpolation())<<" not implemented yet (while trying to extrude "<<EnumToStringx(enum_type)<<")");
+	}
+}
+/*}}}*/
+void       Penta::InputUpdateFromIoModel(int index,IoModel* iomodel){ /*{{{*/
+
+	/*Intermediaries*/
+	int         i,j;
+	int         penta_vertex_ids[NUMVERTICES];
+	IssmDouble  nodeinputs[NUMVERTICES];
+	IssmDouble  cmmininputs[NUMVERTICES];
+	IssmDouble  cmmaxinputs[NUMVERTICES];
+
+	IssmDouble  yts;
+	bool    control_analysis;
+	char**  controls = NULL;
+	int     num_control_type,num_responses;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&yts,"md.constants.yts");
+	iomodel->FindConstant(&control_analysis,"md.inversion.iscontrol");
+	if(control_analysis) iomodel->FindConstant(&num_control_type,"md.inversion.num_control_parameters");
+	if(control_analysis) iomodel->FindConstant(&num_responses,"md.inversion.num_cost_functions");
+
+	/*Recover vertices ids needed to initialize inputs*/
+	_assert_(iomodel->elements);
+	for(i=0;i<NUMVERTICES;i++){
+		penta_vertex_ids[i]=iomodel->elements[NUMVERTICES*index+i]; //ids for vertices are in the elements array from Matlab
+	}
+}
+/*}}}*/
+void       Penta::InputUpdateFromSolutionOneDof(IssmDouble* solution,int enum_type){/*{{{*/
+
+	/*Intermediary*/
+	int* doflist = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(this->element_type);
+
+	/*Fetch dof list and allocate solution vector*/
+	GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(int i=0;i<numnodes;i++){
+		values[i]=solution[doflist[i]];
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Add input to the element: */
+	this->AddInput(enum_type,values,this->element_type);
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<int>(doflist);
+}
+/*}}}*/
+void       Penta::InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solution,int enum_type){/*{{{*/
+
+	const int  numdof   = NUMVERTICES;
+	const int  numdof2d = NUMVERTICES2D;
+
+	IssmDouble  values[numdof];
+	int*    doflist = NULL;
+	Penta  *penta   = NULL;
+
+	/*If not on bed, return*/
+	if (!IsOnBase()) return;
+
+	/*Get dof list: */
+	GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+
+	/*Use the dof list to index into the solution vector and extrude it */
+	for(int i=0;i<numdof2d;i++){
+		values[i]         =solution[doflist[i]];
+		values[i+numdof2d]=values[i];
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Start looping over all elements above current element and update all inputs*/
+	penta=this;
+	for(;;){
+		/*Add input to the element: */
+		penta->AddInput(enum_type,values,P1Enum);
+
+		/*Stop if we have reached the surface*/
+		if (penta->IsOnSurface()) break;
+
+		/* get upper Penta*/
+		penta=penta->GetUpperPenta(); _assert_(penta->Id()!=this->id);
+	}
+
+	/*Free resources:*/
+	xDelete<int>(doflist);
+}
+/*}}}*/
+void       Penta::InputUpdateFromVector(IssmDouble* vector, int name, int type){/*{{{*/
+
+	const int   numdof         = NUMVERTICES;
+	int        *doflist        = NULL;
+	IssmDouble  values[numdof];
+	int         lidlist[NUMVERTICES];
+
+	GetVerticesLidList(&lidlist[0]);
+
+	/*Check that name is an element input*/
+	if(!IsInputEnum(name)) _error_("Enum "<<EnumToStringx(name)<<" is not in IsInput");
+
+	switch(type){
+		case VertexLIdEnum:
+			for (int i=0;i<NUMVERTICES;i++){
+				values[i]=vector[this->vertices[i]->Lid()];
+			}
+			/*update input*/
+			inputs->SetPentaInput(name,P1Enum,NUMVERTICES,lidlist,values);
+			return;
+
+		case VertexPIdEnum:
+			for (int i=0;i<NUMVERTICES;i++){
+				values[i]=vector[this->vertices[i]->Pid()];
+			}
+			/*update input*/
+			inputs->SetPentaInput(name,P1Enum,NUMVERTICES,lidlist,values);
+			return;
+
+		case VertexSIdEnum:
+			for (int i=0;i<NUMVERTICES;i++){
+				values[i]=vector[this->vertices[i]->Sid()];
+			}
+			/*update input*/
+			inputs->SetPentaInput(name,P1Enum,NUMVERTICES,lidlist,values);
+			return;
+
+		case NodesEnum:
+			/*Get dof list: */
+			GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+
+			/*Use the dof list to index into the vector: */
+			for(int i=0;i<numdof;i++){
+				values[i]=vector[doflist[i]];
+				if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+				if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+			}
+			/*Add input to the element: */
+			inputs->SetPentaInput(name,P1Enum,NUMVERTICES,lidlist,values);
+
+			/*Free resources:*/
+			xDelete<int>(doflist);
+			return;
+
+	  case NodeSIdEnum:
+			for(int i=0;i<NUMVERTICES;i++){
+				values[i]=vector[nodes[i]->Sid()];
+				if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+				if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+			}
+			/*Add input to the element: */
+			inputs->SetPentaInput(name,P1Enum,NUMVERTICES,lidlist,values);
+
+			/*Free resources:*/
+			xDelete<int>(doflist);
+			return;
+
+	  default:
+			_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
+	}
+}
+/*}}}*/
+bool       Penta::IsIcefront(void){/*{{{*/
+
+	bool isicefront;
+	int i,nrice;
+   IssmDouble ls[NUMVERTICES];
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&ls[0],MaskIceLevelsetEnum);
+
+	/* If only one vertex has ice, there is an ice front here */
+	isicefront=false;
+	if(IsIceInElement()){
+		nrice=0;
+		for(i=0;i<NUMVERTICES2D;i++)
+			if(ls[i]<0.) nrice++;
+		if(nrice==1) isicefront= true;
+	}
+	return isicefront;
+}/*}}}*/
+bool       Penta::IsNodeOnShelfFromFlags(IssmDouble* flags){/*{{{*/
+
+	int  i;
+	bool shelf=false;
+
+	for(i=0;i<NUMVERTICES;i++){
+		if (flags[vertices[i]->Pid()]<0.){
+			shelf=true;
+			break;
+		}
+	}
+	return shelf;
+}
+/*}}}*/
+bool       Penta::IsZeroLevelset(int levelset_enum){/*{{{*/
+
+	bool        iszerols;
+	IssmDouble  ls[NUMVERTICES];
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&ls[0],levelset_enum);
+
+	/*If the level set has always same sign, there is no ice front here*/
+	iszerols = false;
+	if(IsIceInElement()){
+		if(ls[0]*ls[1]<0. || ls[0]*ls[2]<0. || (ls[0]*ls[1]*ls[2]==0. && ls[0]*ls[1]+ls[0]*ls[2]+ls[1]*ls[2]<=0.)){
+			iszerols = true;
+		}
+	}
+	return iszerols;
+}
+/*}}}*/
+void       Penta::JacobianDeterminant(IssmDouble* pJdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetJacobianDeterminant(pJdet,xyz_list,(GaussPenta*)gauss);
+
+}
+/*}}}*/
+void       Penta::JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetTriaJacobianDeterminant(pJdet,xyz_list_base,(GaussPenta*)gauss);
+
+}
+/*}}}*/
+void       Penta::JacobianDeterminantLine(IssmDouble* pJdet,IssmDouble* xyz_list_line,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetSegmentJacobianDeterminant(pJdet,xyz_list_line,(GaussPenta*)gauss);
+
+}
+/*}}}*/
+void       Penta::JacobianDeterminantSurface(IssmDouble* pJdet,IssmDouble* xyz_list_quad,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetQuadJacobianDeterminant(pJdet,xyz_list_quad,(GaussPenta*)gauss);
+
+}
+/*}}}*/
+void       Penta::JacobianDeterminantTop(IssmDouble* pJdet,IssmDouble* xyz_list_top,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetTriaJacobianDeterminant(pJdet,xyz_list_top,(GaussPenta*)gauss);
+
+}
+/*}}}*/
+IssmDouble Penta::MassFlux(IssmDouble* segment){/*{{{*/
+
+	IssmDouble mass_flux=0;
+
+	if(!IsOnBase()) return mass_flux;
+
+	/*Depth Averaging Vx and Vy*/
+	this->InputDepthAverageAtBase(VxEnum,VxAverageEnum);
+	this->InputDepthAverageAtBase(VyEnum,VyAverageEnum);
+
+	/*Spawn Tria element from the base of the Penta: */
+	Tria* tria=(Tria*)SpawnTria(0,1,2);
+	mass_flux=tria->MassFlux(segment);
+	delete tria->material; delete tria;
+
+	/*clean up and return*/
+	return mass_flux;
+}
+/*}}}*/
+IssmDouble Penta::MassFlux(IssmDouble x1, IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id){/*{{{*/
+
+	IssmDouble mass_flux=0;
+
+	if(!IsOnBase()) return mass_flux;
+
+	/*Depth Averaging Vx and Vy*/
+	this->InputDepthAverageAtBase(VxEnum,VxAverageEnum);
+	this->InputDepthAverageAtBase(VyEnum,VyAverageEnum);
+
+	/*Spawn Tria element from the base of the Penta: */
+	Tria* tria=(Tria*)SpawnTria(0,1,2);
+	mass_flux=tria->MassFlux(x1,y1,x2,y2,segment_id);
+	delete tria->material; delete tria;
+
+	/*clean up and return*/
+	return mass_flux;
+}
+/*}}}*/
+IssmDouble Penta::MinEdgeLength(IssmDouble* xyz_list){/*{{{*/
+	/*Return the minimum lenght of the nine egdes of the penta*/
+
+	int    i,node0,node1;
+	int    edges[9][2]={{0,1},{0,2},{1,2},{3,4},{3,5},{4,5},{0,3},{1,4},{2,5}}; //list of the nine edges
+	IssmDouble length;
+	IssmDouble minlength=-1;
+
+	for(i=0;i<9;i++){
+		/*Find the two nodes for this edge*/
+		node0=edges[i][0];
+		node1=edges[i][1];
+
+		/*Compute the length of this edge and compare it to the minimal length*/
+		length=sqrt(pow(xyz_list[node0*3+0]-xyz_list[node1*3+0],2)+pow(xyz_list[node0*3+1]-xyz_list[node1*3+1],2)+pow(xyz_list[node0*3+2]-xyz_list[node1*3+2],2));
+		if(length<minlength || minlength<0) minlength=length;
+	}
+
+	return minlength;
+}
+/*}}}*/
+void	      Penta::MovingFrontalVelocity(void){/*{{{*/
+
+	if(!this->IsOnBase()) return;
+	int        domaintype, calvinglaw, i;
+	IssmDouble v[3],w[3],c[3],m[3],dlsf[3];
+	IssmDouble norm_dlsf, norm_calving, calvingrate, meltingrate, groundedice;
+	IssmDouble migrationmax, calvinghaf, heaviside, haf_eps;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble movingfrontvx[NUMVERTICES];
+	IssmDouble movingfrontvy[NUMVERTICES];
+	IssmDouble vel;
+	int        dim=2;
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	Input* calvingratex_input = NULL;
+	Input* calvingratey_input = NULL;
+	Input* calvingrate_input  = NULL;
+	Input* meltingrate_input  = NULL;
+
+	/*Load levelset function gradients*/
+	Input *lsf_slopex_input = this->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input);
+	Input *lsf_slopey_input = this->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input);
+	Input *vx_input         = this->GetInput(VxAverageEnum);              _assert_(vx_input);
+	Input *vy_input         = this->GetInput(VyAverageEnum);              _assert_(vy_input);
+	Input *gr_input         = this->GetInput(MaskOceanLevelsetEnum);      _assert_(gr_input);
+
+	/*Get problem dimension and whether there is moving front or not*/
+	this->FindParam(&calvinglaw,CalvingLawEnum);
+	switch(calvinglaw){
+		case DefaultCalvingEnum:
+		case CalvingVonmisesEnum:
+		case CalvingLevermannEnum:
+			calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+			calvingratey_input=this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
+			meltingrate_input = this->GetInput(CalvingMeltingrateEnum);     _assert_(meltingrate_input);
+			break;
+		case CalvingMinthicknessEnum:
+		case CalvingHabEnum:
+		case CalvingCrevasseDepthEnum:
+			meltingrate_input = this->GetInput(CalvingMeltingrateEnum);     _assert_(meltingrate_input);
+			break;
+		case CalvingDev2Enum:
+			this->FindParam(&calvinghaf,CalvingHeightAboveFloatationEnum);
+			calvingrate_input = this->GetInput(CalvingCalvingrateEnum);     _assert_(calvingrate_input);
+			meltingrate_input = this->GetInput(CalvingMeltingrateEnum);     _assert_(meltingrate_input);
+			break;
+		default:
+			_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+	}
+
+	/* Start looping on the number of vertices: */
+	GaussPenta gauss;
+	for(int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/* Advection */
+		vx_input->GetInputValue(&v[0],&gauss);
+		vy_input->GetInputValue(&v[1],&gauss);
+		gr_input->GetInputValue(&groundedice,&gauss);
+      lsf_slopex_input->GetInputValue(&dlsf[0],&gauss);
+      lsf_slopey_input->GetInputValue(&dlsf[1],&gauss);
+      norm_dlsf=sqrt(dlsf[0]*dlsf[0] + dlsf[1]*dlsf[1]);
+
+		/*Get calving speed*/
+		switch(calvinglaw){
+			/*"Contiuous" calving*/
+			case DefaultCalvingEnum:
+			case CalvingVonmisesEnum:
+			case CalvingLevermannEnum:
+				calvingratex_input->GetInputValue(&c[0],&gauss);
+				calvingratey_input->GetInputValue(&c[1],&gauss);
+				meltingrate_input->GetInputValue(&meltingrate,&gauss);
+				if(groundedice<0) meltingrate = 0.;
+				m[0]=meltingrate*dlsf[0]/norm_dlsf;
+				m[1]=meltingrate*dlsf[1]/norm_dlsf;
+				break;
+
+			/*"Discrete" calving*/
+			case CalvingMinthicknessEnum:
+			case CalvingHabEnum:
+			case CalvingCrevasseDepthEnum:
+				meltingrate_input->GetInputValue(&meltingrate,&gauss);
+				if(groundedice<0) meltingrate = 0.;
+
+				if(norm_dlsf>1.e-10)
+				 for(i=0;i<dim;i++){
+					 c[i]=0.;
+					 m[i]=meltingrate*dlsf[i]/norm_dlsf;
+				 }
+				else
+				 for(i=0;i<dim;i++){
+					 c[i]=0.;
+					 m[i]=0.;
+				 }
+				break;
+
+			case CalvingDev2Enum:
+				  {
+					calvingrate_input->GetInputValue(&calvingrate,&gauss);
+					meltingrate_input->GetInputValue(&meltingrate,&gauss);
+					gr_input->GetInputValue(&groundedice,&gauss);
+
+					//idea: no retreat on ice above critical calving height "calvinghaf" . Limit using regularized Heaviside function.
+					vel=sqrt(v[0]*v[0] + v[1]*v[1]);
+					haf_eps=10.;
+					if(groundedice-calvinghaf<=-haf_eps){
+						// ice floats freely below calvinghaf: calve freely
+						// undercutting has no effect:
+						meltingrate=0.;
+					}
+					else if(groundedice-calvinghaf>=haf_eps){
+						// ice is well above calvinghaf -> no calving back, i.e. limit calving rate to ice velocity
+						calvingrate=min(calvingrate,vel);
+						// ice is almost grounded: frontal undercutting has maximum effect (do nothing).
+					}
+					else{ // ice is close to calvinghaf: smooth transition between limitation and free calving.
+						//heaviside: 0 for floating, 1 for grounded
+						heaviside=(groundedice-calvinghaf+haf_eps)/(2.*haf_eps) + sin(M_PI*(groundedice-calvinghaf)/haf_eps)/(2.*M_PI);
+						calvingrate=heaviside*(min(calvingrate,vel)-calvingrate)+calvingrate;
+						meltingrate=heaviside*meltingrate+0.;
+					}
+
+					if(norm_dlsf>1.e-10)
+					 for(i=0;i<dim;i++){
+						 c[i]=calvingrate*dlsf[i]/norm_dlsf;
+						 m[i]=meltingrate*dlsf[i]/norm_dlsf;
+					 }
+					else
+					 for(i=0;i<dim;i++){
+						 c[i]=0.;
+						 m[i]=0.;
+					 }
+					break;
+				  }
+
+			default:
+				_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+		}
+
+		for(i=0;i<dim;i++) w[i]=v[i]-c[i]-m[i];
+
+		movingfrontvx[iv] = w[0];
+		movingfrontvy[iv] = w[1];		
+	}
+
+	/*Add input*/
+	this->AddInput(MovingFrontalVxEnum,&movingfrontvx[0],P1DGEnum);
+	this->AddInput(MovingFrontalVyEnum,&movingfrontvy[0],P1DGEnum);
+	this->InputExtrude(MovingFrontalVxEnum,-1);
+	this->InputExtrude(MovingFrontalVyEnum,-1);
+}
+/*}}}*/
+Gauss*     Penta::NewGauss(void){/*{{{*/
+	return new GaussPenta();
+}
+/*}}}*/
+Gauss*     Penta::NewGauss(int order){/*{{{*/
+	return new GaussPenta(order,order);
+}
+/*}}}*/
+Gauss*     Penta::NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert){/*{{{*/
+
+	IssmDouble  area_coordinates[4][3];
+
+	GetAreaCoordinates(&area_coordinates[0][0],xyz_list_front,xyz_list,4);
+
+	return new GaussPenta(area_coordinates,order_horiz,order_vert);
+}
+/*}}}*/
+Gauss*     Penta::NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order){/*{{{*/
+	return new GaussPenta(point1,fraction1,fraction2,mainlyfloating,order);
+}
+/*}}}*/
+Gauss*     Penta::NewGaussBase(int order){/*{{{*/
+	return new GaussPenta(0,1,2,order);
+}
+/*}}}*/
+Gauss*     Penta::NewGaussBase(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz){/*{{{*/
+
+	IssmDouble  area_coordinates[2][3];
+
+	GetAreaCoordinates(&area_coordinates[0][0],xyz_list_front,xyz_list,2);
+
+	return new GaussPenta(area_coordinates,order_horiz);
+}
+/*}}}*/
+Gauss*     Penta::NewGaussLine(int vertex1,int vertex2,int order){/*{{{*/
+	return new GaussPenta(vertex1,vertex2,order);
+}
+/*}}}*/
+Gauss*     Penta::NewGaussTop(int order){/*{{{*/
+	return new GaussPenta(3,4,5,order);
+}
+/*}}}*/
+void       Penta::NodalFunctions(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctions(basis,(GaussPenta*)gauss,this->element_type);
+
+}
+/*}}}*/
+void       Penta::NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussPenta*)gauss,this->element_type);
+
+}
+/*}}}*/
+void       Penta::NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussPenta*)gauss,this->VelocityInterpolation());
+
+}
+/*}}}*/
+void       Penta::NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussPenta*)gauss,P1bubbleEnum);
+
+}
+/*}}}*/
+void       Penta::NodalFunctionsPressure(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctions(basis,(GaussPenta*)gauss,this->PressureInterpolation());
+
+}
+/*}}}*/
+void       Penta::NodalFunctionsP1(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctions(basis,(GaussPenta*)gauss,P1Enum);
+
+}
+/*}}}*/
+void       Penta::NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussPenta*)gauss,P1Enum);
+
+}
+/*}}}*/
+void       Penta::NodalFunctionsP2(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctions(basis,(GaussPenta*)gauss,P2Enum);
+
+}
+/*}}}*/
+void       Penta::NodalFunctionsVelocity(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctions(basis,(GaussPenta*)gauss,this->VelocityInterpolation());
+
+}
+/*}}}*/
+void       Penta::NodalFunctionsTensor(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctions(basis,(GaussPenta*)gauss,this->TensorInterpolation());
+
+}
+/*}}}*/
+int        Penta::NodalValue(IssmDouble* pvalue, int index, int natureofdataenum){/*{{{*/
+
+	int i;
+	int found=0;
+	IssmDouble value;
+	GaussPenta gauss;
+
+	/*First, serarch the input: */
+	Input* data=this->GetInput(natureofdataenum);
+
+	/*figure out if we have the vertex id: */
+	found=0;
+	for(i=0;i<NUMVERTICES;i++){
+		if(index==vertices[i]->Id()){
+			/*Do we have natureofdataenum in our inputs? :*/
+			if(data){
+				/*ok, we are good. retrieve value of input at vertex :*/
+				gauss.GaussVertex(i);
+				data->GetInputValue(&value,&gauss);
+				found=1;
+				break;
+			}
+		}
+	}
+
+	if(found)*pvalue=value;
+	return found;
+}
+/*}}}*/
+void       Penta::NormalBase(IssmDouble* bed_normal,IssmDouble* xyz_list){/*{{{*/
+
+	IssmDouble v13[3],v23[3];
+	IssmDouble normal[3];
+	IssmDouble normal_norm;
+
+	for(int i=0;i<3;i++){
+		v13[i]=xyz_list[0*3+i]-xyz_list[2*3+i];
+		v23[i]=xyz_list[1*3+i]-xyz_list[2*3+i];
+	}
+
+	normal[0]=v13[1]*v23[2]-v13[2]*v23[1];
+	normal[1]=v13[2]*v23[0]-v13[0]*v23[2];
+	normal[2]=v13[0]*v23[1]-v13[1]*v23[0];
+	normal_norm=sqrt(normal[0]*normal[0]+ normal[1]*normal[1]+ normal[2]*normal[2]);
+
+	/*Bed normal is opposite to surface normal*/
+	bed_normal[0]=-normal[0]/normal_norm;
+	bed_normal[1]=-normal[1]/normal_norm;
+	bed_normal[2]=-normal[2]/normal_norm;
+}
+/*}}}*/
+void       Penta::NormalSection(IssmDouble* normal,IssmDouble* xyz_list){/*{{{*/
+
+	/*Build unit outward pointing vector*/
+	IssmDouble AB[3];
+	IssmDouble AC[3];
+	IssmDouble norm;
+
+	AB[0]=xyz_list[1*3+0] - xyz_list[0*3+0];
+	AB[1]=xyz_list[1*3+1] - xyz_list[0*3+1];
+	AB[2]=xyz_list[1*3+2] - xyz_list[0*3+2];
+	AC[0]=xyz_list[2*3+0] - xyz_list[0*3+0];
+	AC[1]=xyz_list[2*3+1] - xyz_list[0*3+1];
+	AC[2]=xyz_list[2*3+2] - xyz_list[0*3+2];
+
+	cross(normal,AB,AC);
+	norm=sqrt(normal[0]*normal[0]+normal[1]*normal[1]+normal[2]*normal[2]);
+
+	for(int i=0;i<3;i++) normal[i]=normal[i]/(norm+1e-10);
+}
+/*}}}*/
+void       Penta::NormalSectionBase(IssmDouble* normal,IssmDouble* xyz_list){/*{{{*/
+
+	/*Build unit outward pointing vector*/
+	IssmDouble vector[2];
+	IssmDouble norm;
+
+	vector[0]=xyz_list[1*3+0] - xyz_list[0*3+0];
+	vector[1]=xyz_list[1*3+1] - xyz_list[0*3+1];
+
+	norm=sqrt(vector[0]*vector[0] + vector[1]*vector[1]);
+
+	normal[0]= + vector[1]/norm;
+	normal[1]= - vector[0]/norm;
+}
+/*}}}*/
+void       Penta::NormalTop(IssmDouble* top_normal,IssmDouble* xyz_list){/*{{{*/
+
+	int i;
+	IssmDouble v13[3],v23[3];
+	IssmDouble normal[3];
+	IssmDouble normal_norm;
+
+	for (i=0;i<3;i++){
+		v13[i]=xyz_list[0*3+i]-xyz_list[2*3+i];
+		v23[i]=xyz_list[1*3+i]-xyz_list[2*3+i];
+	}
+
+	normal[0]=v13[1]*v23[2]-v13[2]*v23[1];
+	normal[1]=v13[2]*v23[0]-v13[0]*v23[2];
+	normal[2]=v13[0]*v23[1]-v13[1]*v23[0];
+	normal_norm=sqrt(normal[0]*normal[0] + normal[1]*normal[1] + normal[2]*normal[2]);
+
+	top_normal[0]=normal[0]/normal_norm;
+	top_normal[1]=normal[1]/normal_norm;
+	top_normal[2]=normal[2]/normal_norm;
+}
+/*}}}*/
+int        Penta::NumberofNodesPressure(void){/*{{{*/
+	return PentaRef::NumberofNodes(this->PressureInterpolation());
+}
+/*}}}*/
+int        Penta::NumberofNodesVelocity(void){/*{{{*/
+	return PentaRef::NumberofNodes(this->VelocityInterpolation());
+}
+/*}}}*/
+int        Penta::ObjectEnum(void){/*{{{*/
+
+	return PentaEnum;
+
+}
+/*}}}*/
+void       Penta::PotentialUngrounding(Vector<IssmDouble>* potential_ungrounding){/*{{{*/
+
+	IssmDouble  h[NUMVERTICES],r[NUMVERTICES],gl[NUMVERTICES];
+	IssmDouble  bed_hydro;
+	IssmDouble  rho_water,rho_ice,density;
+
+	/*material parameters: */
+	rho_water=FindParam(MaterialsRhoSeawaterEnum);
+	rho_ice=FindParam(MaterialsRhoIceEnum);
+	density=rho_ice/rho_water;
+	Element::GetInputListOnVertices(&h[0],ThicknessEnum);
+	Element::GetInputListOnVertices(&r[0],BedEnum);
+	Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum);
+
+	/*go through vertices, and figure out which ones are on the ice sheet, and want to unground: */
+	for(int i=0;i<NUMVERTICES;i++){
+		/*Find if grounded vertices want to start floating*/
+		if (gl[i]>0.){
+			bed_hydro=-density*h[i];
+			if(bed_hydro>r[i]){
+				/*Vertex that could potentially unground, flag it*/
+				potential_ungrounding->SetValue(vertices[i]->Pid(),1,INS_VAL);
+			}
+		}
+	}
+}
+/*}}}*/
+int        Penta::PressureInterpolation(void){/*{{{*/
+	return PentaRef::PressureInterpolation(this->element_type);
+}
+/*}}}*/
+void       Penta::Recover3DMOLHOInput(int targetVel_enum, int numnodes, IssmDouble* vb,  IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s){/*{{{*/
+   /* Recover the velocity acording to v=vb+(1-\zeta^{n+1})vsh, where \zeta=(s-z)/H
+    * The variables vb, vsh, n, H and s are all from the 2D horizontal mesh(Tria), with "numnodes" DOFs
+    * To project to penta the DOFs are doubled in size
+    *
+    */
+   _assert_(this->inputs);
+   if(!IsOnBase()) return;
+   else{
+      if(targetVel_enum==VxEnum || targetVel_enum==VyEnum){
+         IssmDouble vel[NUMVERTICES2D*5];
+         IssmDouble* xyz_list = NULL;
+			IssmDouble zi;
+         Penta* penta = this;
+			numnodes = penta->NumberofNodes(P1xP4Enum);
+         _assert_(NUMVERTICES2D*5-numnodes==0);
+			GaussPenta gauss;
+
+         for(;;){
+            penta->GetVerticesCoordinates(&xyz_list);
+            for(int i=0;i<NUMVERTICES2D;i++) {
+					for (int j=0;j<5;j++){
+						/* Get z-coordinate of the current node */
+						gauss.GaussNode(P1xP4Enum, i+j*NUMVERTICES2D);
+						zi = this->GetZcoord(xyz_list, &gauss);
+	               vel[i+j*NUMVERTICES2D] = vb[i] + vsh[i]*(1.0-pow((s[i]-zi)/H[i], (n[i]+1)));
+					}
+            }
+				xDelete<IssmDouble>(xyz_list);
+
+            /*Add to the bottom side of the element*/
+            penta->AddInput(targetVel_enum,&vel[0],P1xP4Enum);
+            if (penta->IsOnSurface()) break;
+            penta=penta->GetUpperPenta(); _assert_(penta->Id()!=this->id);
+         }
+      }
+      else _error_("not implemented yet");
+   }
+
+}
+/*}}}*/
+void       Penta::ReduceMatrices(ElementMatrix* Ke,ElementVector* pe){/*{{{*/
+
+	int analysis_type;
+	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	if(pe){
+		if(analysis_type==StressbalanceAnalysisEnum){
+			if(this->element_type==MINIcondensedEnum){
+				int approximation;
+				this->Element::GetInputValue(&approximation,ApproximationEnum);
+				if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+					//Do nothing, condensation already done in PVectorCoupling
+				}
+				else{
+					int indices[3]={18,19,20};
+					pe->StaticCondensation(Ke,3,&indices[0]);
+				}
+			}
+			else if(this->element_type==P1bubblecondensedEnum){
+				int size   = nodes[6]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+				int offset = 0;
+				for(int i=0;i<6;i++) offset+=nodes[i]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+				int* indices=xNew<int>(size);
+				for(int i=0;i<size;i++) indices[i] = offset+i;
+				pe->StaticCondensation(Ke,size,indices);
+				xDelete<int>(indices);
+			}
+		}
+	}
+
+	if(Ke){
+		if(analysis_type==StressbalanceAnalysisEnum){
+			int approximation;
+			this->Element::GetInputValue(&approximation,ApproximationEnum);
+			if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+				//Do nothing condensatino already done for Stokes part
+			}
+			else{
+				if(this->element_type==MINIcondensedEnum){
+					int indices[3]={18,19,20};
+					Ke->StaticCondensation(3,&indices[0]);
+				}
+				else if(this->element_type==P1bubblecondensedEnum){
+					int size   = nodes[6]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+					int offset = 0;
+					for(int i=0;i<6;i++) offset+=nodes[i]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+					int* indices=xNew<int>(size);
+					for(int i=0;i<size;i++) indices[i] = offset+i;
+					Ke->StaticCondensation(size,indices);
+					xDelete<int>(indices);
+				}
+			}
+		}
+	}
+}
+/*}}}*/
+void       Penta::ResetFSBasalBoundaryCondition(void){/*{{{*/
+
+	int          approximation;
+	int          numindices;
+	int         *indices = NULL;
+	bool		isNitsche;
+	IssmDouble   slopex,slopey,groundedice;
+	IssmDouble   xz_plane[6];
+	IssmDouble*  vertexapproximation= NULL;
+
+	/*For FS only: we want the CS to be tangential to the bedrock*/
+	this->Element::GetInputValue(&approximation,ApproximationEnum);
+	this->FindParam(&isNitsche,FlowequationIsNitscheEnum);
+
+	if(!IsOnBase() || (approximation!=FSApproximationEnum && approximation!=SSAFSApproximationEnum &&  approximation!=HOFSApproximationEnum)) return;
+
+	/*Get number of nodes for velocity only and base*/
+	BasalNodeIndices(&numindices,&indices,this->VelocityInterpolation());
+
+	/*Get inputs*/
+	Input* slopex_input=this->GetInput(BedSlopeXEnum); _assert_(slopex_input);
+	Input* slopey_input=this->GetInput(BedSlopeYEnum); _assert_(slopey_input);
+	Input* groundedicelevelset_input=this->GetInput(MaskOceanLevelsetEnum); _assert_(groundedicelevelset_input);
+
+	/*Loop over basal nodes and update their CS*/
+	GaussPenta gauss;
+	for(int i=0;i<numindices;i++){//FIXME
+		gauss.GaussNode(this->VelocityInterpolation(),indices[i]);
+
+		slopex_input->GetInputValue(&slopex,&gauss);
+		slopey_input->GetInputValue(&slopey,&gauss);
+		groundedicelevelset_input->GetInputValue(&groundedice,&gauss);
+
+		/*New X axis          New Z axis*/
+		xz_plane[0]=1.;       xz_plane[3]=-slopex;
+		xz_plane[1]=0.;       xz_plane[4]=-slopey;
+		xz_plane[2]=slopex;   xz_plane[5]=1.;
+
+		if (!isNitsche) {
+			if(groundedice>=0){
+				if(this->nodes[indices[i]]->GetApproximation()==FSvelocityEnum){
+					this->nodes[indices[i]]->DofInSSet(2); //vz
+				}
+				else if(this->nodes[indices[i]]->GetApproximation()==SSAFSApproximationEnum || this->nodes[indices[i]]->GetApproximation()==HOFSApproximationEnum){
+					this->nodes[indices[i]]->DofInSSet(4); //vz
+				}
+				else _error_("Flow equation approximation"<<EnumToStringx(this->nodes[indices[i]]->GetApproximation())<<" not supported yet");
+			}
+			else{
+				if(this->nodes[indices[i]]->GetApproximation()==FSvelocityEnum){
+					this->nodes[indices[i]]->DofInFSet(2); //vz
+				}
+				else if(this->nodes[indices[i]]->GetApproximation()==SSAFSApproximationEnum || this->nodes[indices[i]]->GetApproximation()==HOFSApproximationEnum){
+					this->nodes[indices[i]]->DofInFSet(4); //vz
+				}
+				else _error_("Flow equation approximation"<<EnumToStringx(this->nodes[indices[i]]->GetApproximation())<<" not supported yet");
+			}
+		}
+		XZvectorsToCoordinateSystem(&this->nodes[indices[i]]->coord_system[0][0],&xz_plane[0]);
+	}
+
+	/*cleanup*/
+	xDelete<int>(indices);
+}
+/*}}}*/
+void       Penta::ResetHooks(){/*{{{*/
+
+	if(this->nodes) xDelete<Node*>(this->nodes);
+	this->nodes=NULL;
+	this->vertices=NULL;
+	this->material=NULL;
+	this->verticalneighbors=NULL;
+	this->parameters=NULL;
+
+	//deal with ElementHook mother class
+	for(int i=0;i<this->numanalyses;i++) if(this->hnodes[i]) this->hnodes[i]->reset();
+	this->hvertices->reset();
+	this->hmaterial->reset();
+	if(this->hneighbors) this->hneighbors->reset();
+
+}
+/*}}}*/
+void       Penta::SetElementInput(int enum_in,IssmDouble value){/*{{{*/
+
+	this->SetElementInput(this->inputs,enum_in,value);
+
+}
+/*}}}*/
+void       Penta::SetElementInput(Inputs* inputs,int enum_in,IssmDouble value){/*{{{*/
+
+	_assert_(inputs);
+	inputs->SetPentaInput(enum_in,P0Enum,this->lid,value);
+
+}
+/*}}}*/
+void       Penta::SetElementInput(Inputs* inputs,int numindices,int* indices,IssmDouble* values,int enum_in){/*{{{*/
+
+	_assert_(inputs);
+	inputs->SetPentaInput(enum_in,P1Enum,numindices,indices,values);
+
+}
+/*}}}*/
+void       Penta::SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index,int offset, int M, int N){/*{{{*/
+
+	IssmDouble  values[NUMVERTICES];
+	int         lidlist[NUMVERTICES];
+	int         idlist[NUMVERTICES],control_init;
+
+	/*Specific case for depth averaged quantities*/
+	control_init=control_enum;
+	if(control_enum==MaterialsRheologyBbarEnum){
+		control_enum=MaterialsRheologyBEnum;
+		if(!IsOnBase()) return;
+	}
+	if(control_enum==DamageDbarEnum){
+		control_enum=DamageDEnum;
+		if(!IsOnBase()) return;
+	}
+
+	/*Prepare index list*/
+	ElementInput* input=this->inputs->GetControlInputData(control_enum,"value");   _assert_(input);
+	this->GetVerticesLidList(&lidlist[0]);
+	GradientIndexing(&idlist[0],control_index);
+
+	/*Get values on vertices*/
+	if(input->ObjectEnum()==PentaInputEnum && input->GetInputInterpolationType()==P1Enum){
+		_assert_(N==1);
+		for(int i=0;i<NUMVERTICES;i++){
+			values[i] = vector[idlist[i]];
+		}
+		input->SetInput(P1Enum,NUMVERTICES,&lidlist[0],&values[0]);
+	}
+	else if(input->ObjectEnum()==PentaInputEnum && input->GetInputInterpolationType()==P0Enum){
+		_assert_(N==1);
+		input->SetInput(P0Enum,this->lid,vector[idlist[0]]);
+	}
+	else if(input->ObjectEnum()==TransientInputEnum){
+		for(int n=0;n<N;n++){
+			_error_("not implemented");
+			//Input* new_input = new PentaInput(control_enum,values,P1Enum);
+			//controlinput->SetInput(new_input,n);
+			//controlinput->Configure(parameters);
+		}
+	}
+	else _error_("Type not supported");
+
+	/*Extrude depending on the control*/
+	if(control_init==MaterialsRheologyBbarEnum){
+		this->ControlInputExtrude(control_enum,-1);
+	}
+	if(control_init==DamageDbarEnum){
+		this->ControlInputExtrude(control_enum,-1);
+	}
+}
+/*}}}*/
+void       Penta::SetCurrentConfiguration(Elements* elementsin, Loads* loadsin, Nodes* nodesin, Materials* materialsin, Parameters* parametersin){/*{{{*/
+
+	/*go into parameters and get the analysis_counter: */
+	int analysis_counter;
+	parametersin->FindParam(&analysis_counter,AnalysisCounterEnum);
+
+	/*Get Element type*/
+	this->element_type=this->element_type_list[analysis_counter];
+
+	/*Pick up nodes*/
+	if(this->hnodes[analysis_counter]) this->nodes=(Node**)this->hnodes[analysis_counter]->deliverp();
+	else this->nodes=NULL;
+
+}
+/*}}}*/
+void       Penta::SetTemporaryElementType(int element_type_in){/*{{{*/
+	this->element_type=element_type_in;
+}
+/*}}}*/
+Element*   Penta::SpawnBasalElement(bool depthaverage_materials){/*{{{*/
+
+	_assert_(this->IsOnBase());
+
+	if(depthaverage_materials){
+		switch(this->material->ObjectEnum()){
+			case MaticeEnum:
+				this->InputDepthAverageAtBase(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum);
+				if(this->material->IsDamage())this->InputDepthAverageAtBase(DamageDEnum,DamageDbarEnum);
+				if(this->material->IsEnhanced())this->InputDepthAverageAtBase(MaterialsRheologyEEnum,MaterialsRheologyEbarEnum);
+				break;
+			case MatestarEnum:
+				this->InputDepthAverageAtBase(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum);
+				this->InputDepthAverageAtBase(MaterialsRheologyEcEnum,MaterialsRheologyEcbarEnum);
+				this->InputDepthAverageAtBase(MaterialsRheologyEsEnum,MaterialsRheologyEsbarEnum);
+				break;
+			default:
+				_error_("not supported yet");
+		}
+	}
+
+	return SpawnTria(0,1,2);
+}
+/*}}}*/
+Element*   Penta::SpawnTopElement(void){/*{{{*/
+
+	_assert_(this->IsOnSurface());
+	return SpawnTria(3,4,5);
+}
+/*}}}*/
+Tria*      Penta::SpawnTria(int index1,int index2,int index3){/*{{{*/
+
+	int analysis_counter;
+
+	/*go into parameters and get the analysis_counter: */
+	this->parameters->FindParam(&analysis_counter,AnalysisCounterEnum);
+
+	/*Create Tria*/
+	Tria* tria=new Tria();
+	tria->id=this->id;
+	tria->sid=this->sid;
+	tria->lid=this->lid;
+	tria->parameters=this->parameters;
+	tria->inputs=this->inputs;
+	tria->element_type=P1Enum; //Only P1 CG for now (TO BE CHANGED)
+
+	if(index1==0 && index2==1 && index3==2){
+		tria->iscollapsed = 1;
+		if(this->nodes)tria->nodes=this->nodes;
+		if(this->vertices)tria->vertices=this->vertices;
+	}
+	else if(index1==3 && index2==4 && index3==5){
+		tria->iscollapsed = 2;
+		if(this->nodes)tria->nodes=&this->nodes[3];
+		if(this->vertices)tria->vertices=&this->vertices[3];
+	}
+	else _error_("Spawn supported only for surface and basal elements");
+	/*Spawn material*/
+	tria->material=(Material*)this->material->copy2(tria);
+
+	/*Return new Tria*/
+	return tria;
+}
+/*}}}*/
+bool       Penta::IsSpawnedElement(void){/*{{{*/
+
+	/*Penta cannot be collapsed elements*/
+	return false;
+
+}/*}}}*/
+IssmDouble Penta::StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){/*{{{*/
+	/*Compute stabilization parameter*/
+	/*kappa=thermalconductivity/(rho_ice*heatcapacity) for thermal model*/
+	/*kappa=enthalpydiffusionparameter for enthalpy model*/
+
+	IssmDouble normu;
+	IssmDouble tau_parameter;
+
+	normu=pow(pow(u,2)+pow(v,2)+pow(w,2),0.5);
+	if(normu*diameter/(3*2*kappa)<1){
+		tau_parameter=pow(diameter,2)/(3*2*2*kappa);
+	}
+	else tau_parameter=diameter/(2*normu);
+
+	return tau_parameter;
+}/*}}}*/
+void Penta::StabilizationParameterAnisotropic(IssmDouble* tau_parameter_anisotropic, IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble hx, IssmDouble hy, IssmDouble hz, IssmDouble kappa){/*{{{*/
+	/*Compute stabilization parameter*/
+	/*kappa=thermalconductivity/(rho_ice*heatcapacity) for thermal model*/
+	/*kappa=enthalpydiffusionparameter for enthalpy model*/
+
+	IssmDouble normu,hk,C,area,p;
+
+	/* compute tau for the horizontal direction */
+	p=2.; C=3.;
+	normu=pow(pow(u,p)+pow(v,p)+pow(w,p),1./p);
+	hk=sqrt(pow(hx,2)+pow(hy,2));
+
+	if(normu*hk/(C*2*kappa)<1){
+		tau_parameter_anisotropic[0]=pow(hk,2)/(C*2*2*kappa);
+	}
+	else tau_parameter_anisotropic[0]=hk/(2*normu);
+
+	/* compute tau for the vertical direction */
+	hk=hz;
+	if(normu*hk/(C*2*kappa)<1){
+		tau_parameter_anisotropic[1]=pow(hk,2)/(C*2*2*kappa);
+	}
+	else{
+		tau_parameter_anisotropic[1]=hk/(2*normu);
+	}
+}
+/*}}}*/
+void       Penta::StrainRateparallel(){/*{{{*/
+
+	IssmDouble  epsilon[6];
+	IssmDouble  vx,vy,vel;
+	IssmDouble  strainxx;
+	IssmDouble  strainxy;
+	IssmDouble  strainyy;
+	IssmDouble  strainparallel[NUMVERTICES];
+
+	/* Get node coordinates and dof list: */
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs we will need*/
+	Input* vx_input=this->GetInput(VxEnum);                                  _assert_(vx_input);
+	Input* vy_input=this->GetInput(VyEnum);                                  _assert_(vy_input);
+	Input* vz_input=this->GetInput(VzEnum);												_assert_(vz_input);
+
+	/* Start looping on the number of vertices: */
+	GaussPenta gauss;
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/* Get the value we need*/
+		vx_input->GetInputValue(&vx,&gauss);
+		vy_input->GetInputValue(&vy,&gauss);
+		vel=vx*vx+vy*vy;
+
+		/*Compute strain rate and viscosity: */
+		this->StrainRateFS(&epsilon[0],&xyz_list[0][0],&gauss,vx_input,vy_input,vz_input);
+		strainxx=epsilon[0];
+		strainyy=epsilon[1];
+		strainxy=epsilon[3];
+
+		/*strainparallel= Strain rate along the ice flow direction */
+		strainparallel[iv]=(vx*vx*(strainxx)+vy*vy*(strainyy)+2*vy*vx*strainxy)/(vel+1.e-14);
+	}
+
+	/*Add input*/
+	this->AddInput(StrainRateparallelEnum,&strainparallel[0],P1DGEnum);
+}
+/*}}}*/
+void       Penta::StrainRateperpendicular(){/*{{{*/
+
+	IssmDouble  epsilon[6];
+	IssmDouble  vx,vy,vel;
+	IssmDouble  strainxx;
+	IssmDouble  strainxy;
+	IssmDouble  strainyy;
+	IssmDouble  strainperpendicular[NUMVERTICES];
+
+	/* Get node coordinates and dof list: */
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs we will need*/
+	Input* vx_input=this->GetInput(VxEnum);                                  _assert_(vx_input);
+	Input* vy_input=this->GetInput(VyEnum);                                  _assert_(vy_input);
+	Input* vz_input=this->GetInput(VzEnum);												_assert_(vz_input);
+
+	/* Start looping on the number of vertices: */
+	GaussPenta gauss;
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/* Get the value we need*/
+		vx_input->GetInputValue(&vx,&gauss);
+		vy_input->GetInputValue(&vy,&gauss);
+		vel=vx*vx+vy*vy;
+
+		/*Compute strain rate and viscosity: */
+		this->StrainRateFS(&epsilon[0],&xyz_list[0][0],&gauss,vx_input,vy_input,vz_input);
+		strainxx=epsilon[0];
+		strainyy=epsilon[1];
+		strainxy=epsilon[3];
+
+		/*strainperpendicular= Strain rate perpendicular to the ice flow direction */
+		strainperpendicular[iv]=(vx*vx*(strainyy)+vy*vy*(strainxx)-2*vy*vx*strainxy)/(vel+1.e-14);
+	}
+
+	/*Add input*/
+	this->AddInput(StrainRateperpendicularEnum,&strainperpendicular[0],P1DGEnum);
+}
+/*}}}*/
+void       Penta::StressIntensityFactor(){/*{{{*/
+
+	/* Check if we are on the base */
+	if(!IsOnBase()) return;
+
+	IssmDouble  ki[6]={0.};
+	IssmDouble  const_grav=9.81;
+	IssmDouble  rho_ice=900;
+	IssmDouble  rho_water=1000;
+	IssmDouble  Jdet[3];
+	IssmDouble  pressure,vx,vy,vel,deviaxx,deviaxy,deviayy,water_depth,prof,stress_xx,thickness;
+
+	Penta* penta=this;
+	for(;;){
+
+		IssmDouble  xyz_list[NUMVERTICES][3];
+		/* Get node coordinates and dof list: */
+		::GetVerticesCoordinates(&xyz_list[0][0],penta->vertices,NUMVERTICES);
+
+		///*Compute the Jacobian for the vertical integration*/
+		Jdet[0]=(xyz_list[3][2]-xyz_list[0][2])*0.5;
+		Jdet[1]=(xyz_list[4][2]-xyz_list[1][2])*0.5;
+		Jdet[2]=(xyz_list[5][2]-xyz_list[2][2])*0.5;
+
+		/*Retrieve all inputs we will need*/
+		Input* vx_input=this->GetInput(VxEnum);                                  _assert_(vx_input);
+		Input* vy_input=this->GetInput(VyEnum);                                  _assert_(vy_input);
+		Input* vel_input=this->GetInput(VelEnum);                                _assert_(vel_input);
+		Input* pressure_input=this->GetInput(PressureEnum);                      _assert_(pressure_input);
+		Input* deviaxx_input=this->GetInput(DeviatoricStressxxEnum);             _assert_(deviaxx_input);
+		Input* deviaxy_input=this->GetInput(DeviatoricStressxyEnum);             _assert_(deviaxy_input);
+		Input* deviayy_input=this->GetInput(DeviatoricStressyyEnum);             _assert_(deviayy_input);
+		Input* surface_input=this->GetInput(SurfaceEnum);								_assert_(surface_input);
+		Input* thickness_input=this->GetInput(ThicknessEnum);							_assert_(thickness_input);
+
+		/* Start looping on the number of 2D vertices: */
+		for(int ig=0;ig<3;ig++){
+			GaussPenta* gauss=new GaussPenta(ig,3+ig,11);
+			while(gauss->next()){
+
+				/* Get the value we need*/
+				pressure_input->GetInputValue(&pressure,gauss);
+				vx_input->GetInputValue(&vx,gauss);
+				vy_input->GetInputValue(&vy,gauss);
+				vel_input->GetInputValue(&vel,gauss);
+				deviaxx_input->GetInputValue(&deviaxx,gauss);
+				deviaxy_input->GetInputValue(&deviaxy,gauss);
+				deviayy_input->GetInputValue(&deviayy,gauss);
+				surface_input->GetInputValue(&water_depth,gauss);
+				thickness_input->GetInputValue(&thickness,gauss);
+				prof=water_depth-penta->GetZcoord(&xyz_list[0][0],gauss);
+
+				/*stress_xx= Deviatoric stress along the ice flow direction plus cryostatic pressure */
+				stress_xx=(vx*vx*(deviaxx)+vy*vy*(deviayy)+2*vy*vx*deviaxy)/(vel*vel+1.e-6);
+
+				if(prof<water_depth&prof<thickness){
+					/* Compute the local stress intensity factor*/
+					ki[ig]+=Jdet[ig]*gauss->weight*stress_xx*StressIntensityIntegralWeight(prof,min(water_depth,thickness),thickness);
+				}
+			}
+			delete gauss;
+		}
+
+		/*Stop if we have reached the surface/base*/
+		if(penta->IsOnSurface()) break;
+
+		/*get upper Penta*/
+		penta=penta->GetUpperPenta();
+		_assert_(penta->Id()!=this->id);
+	}
+
+	/*Add input*/
+	this->AddInput(StressIntensityFactorEnum,&ki[0],P1Enum);
+	this->InputExtrude(StressIntensityFactorEnum,-1);
+}
+/*}}}*/
+IssmDouble Penta::SurfaceArea(void){/*{{{*/
+
+	int    approximation;
+	IssmDouble S;
+	Tria*  tria=NULL;
+
+	/*retrieve inputs :*/
+	this->Element::GetInputValue(&approximation,ApproximationEnum);
+
+	/*If on water, return 0: */
+	if(!IsIceInElement())return 0;
+
+	/*Bail out if this element if:
+	 * -> Non SSA not on the surface
+	 * -> SSA (2d model) and not on bed) */
+	if ((approximation!=SSAApproximationEnum && !IsOnSurface()) || (approximation==SSAApproximationEnum && !IsOnBase())){
+		return 0;
+	}
+	else if (approximation==SSAApproximationEnum){
+
+		/*This element should be collapsed into a tria element at its base. Create this tria element,
+		 * and compute SurfaceArea*/
+		tria=(Tria*)SpawnTria(0,1,2);
+		S=tria->SurfaceArea();
+		delete tria->material; delete tria;
+		return S;
+	}
+	else{
+
+		tria=(Tria*)SpawnTria(3,4,5);
+		S=tria->SurfaceArea();
+		delete tria->material; delete tria;
+		return S;
+	}
+}
+/*}}}*/
+void       Penta::TangentBase(IssmDouble* bed_tangent,IssmDouble* bed_normal){/*{{{*/
+	/*
+	 To compute the two tangent bed_tangent[0:2] and bed_tangent[3:5] from the given normal vecotr.
+	*/
+	IssmDouble n1, n2, n3;
+	IssmDouble tangent_norm;
+
+	n1 = fabs(bed_normal[0]);
+	n2 = fabs(bed_normal[1]);
+	n3 = fabs(bed_normal[2]);
+
+	/* For the first tangent, on x-y plane in most cases*/
+	if ((n1<=n3) && (n2<=n3)) {
+		bed_tangent[0] = 0.0;
+		bed_tangent[1] = -bed_normal[2];
+		bed_tangent[2] = bed_normal[1];
+	}
+	else {
+		bed_tangent[0] = -bed_normal[1];
+		bed_tangent[1] = bed_normal[0];
+		bed_tangent[2] = 0.0;
+	}
+	tangent_norm = sqrt(bed_tangent[0]*bed_tangent[0]+bed_tangent[1]*bed_tangent[1]+bed_tangent[2]*bed_tangent[2]);
+	for(int i=0;i<3;i++) bed_tangent[i] = bed_tangent[i]/tangent_norm;
+	/* The second tangent*/
+	bed_tangent[3] = bed_normal[1]*bed_tangent[2] - bed_normal[2]*bed_tangent[1];
+	bed_tangent[4] = bed_normal[2]*bed_tangent[0] - bed_normal[0]*bed_tangent[2];
+	bed_tangent[5] = bed_normal[0]*bed_tangent[1] - bed_normal[1]*bed_tangent[0];
+	tangent_norm = sqrt(bed_tangent[3]*bed_tangent[3]+bed_tangent[4]*bed_tangent[4]+bed_tangent[5]*bed_tangent[5]);
+	for(int i=3;i<6;i++) bed_tangent[i] = bed_tangent[i]/tangent_norm;
+
+	IssmDouble checksum = 0.0;
+	for (int i=0;i<3;i++) {
+		checksum += bed_normal[i]*bed_tangent[i];
+		checksum += bed_normal[i]*bed_tangent[i+3];
+		checksum += bed_tangent[i]*bed_tangent[i+3];
+	}
+	_assert_(fabs(checksum)<1e-10);
+}
+/*}}}*/
+IssmDouble Penta::TimeAdapt(void){/*{{{*/
+
+	/*intermediary: */
+	bool       ishydro;
+	IssmDouble C;
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*get CFL coefficient:*/
+	this->parameters->FindParam(&C,TimesteppingCflCoefficientEnum);
+	this->parameters->FindParam(&ishydro,TransientIshydrologyEnum);
+
+	/*Get for Vx and Vy, the max of abs value: */
+	Input* vx_input = this->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input = this->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input = this->GetInput(VzEnum); _assert_(vz_input);
+	IssmDouble maxabsvx = vx_input->GetInputMaxAbs();
+	IssmDouble maxabsvy = vy_input->GetInputMaxAbs();
+	IssmDouble maxabsvz = vz_input->GetInputMaxAbs();
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	IssmDouble minx=xyz_list[0][0];
+	IssmDouble maxx=xyz_list[0][0];
+	IssmDouble miny=xyz_list[0][1];
+	IssmDouble maxy=xyz_list[0][1];
+	IssmDouble minz=xyz_list[0][2];
+	IssmDouble maxz=xyz_list[0][2];
+
+	for(int i=1;i<NUMVERTICES;i++){
+		if(xyz_list[i][0]<minx) minx=xyz_list[i][0];
+		if(xyz_list[i][0]>maxx) maxx=xyz_list[i][0];
+		if(xyz_list[i][1]<miny) miny=xyz_list[i][1];
+		if(xyz_list[i][1]>maxy) maxy=xyz_list[i][1];
+		if(xyz_list[i][2]<minz) minz=xyz_list[i][2];
+		if(xyz_list[i][2]>maxz) maxz=xyz_list[i][2];
+	}
+	IssmDouble dx=maxx-minx;
+	IssmDouble dy=maxy-miny;
+	IssmDouble dz=maxz-minz;
+
+	/*CFL criterion: */
+	IssmDouble dt = C/(maxabsvx/dx+maxabsvy/dy+maxabsvz/dz + 1.e-18);
+
+	/*Check hydro timestep also and take the minimum*/
+	if(ishydro){
+		if(IsOnBase()){
+			Input* vx_input = this->GetInput(HydrologyWaterVxEnum); _assert_(vx_input);
+			Input* vy_input = this->GetInput(HydrologyWaterVyEnum); _assert_(vy_input);
+			IssmDouble maxabsvx = vx_input->GetInputMaxAbs();
+			IssmDouble maxabsvy = vy_input->GetInputMaxAbs();
+
+			/*CFL criterion: */
+			IssmDouble dt2 = C/(maxabsvx/dx+maxabsvy/dy + 1.e-18);
+			if(dt2<dt) dt = dt2;
+		}
+	}
+
+	return dt;
+}/*}}}*/
+IssmDouble Penta::TotalCalvingFluxLevelset(bool scaled){/*{{{*/
+
+	/*Make sure there is an ice front here*/
+	if(!IsIceInElement() || !IsZeroLevelset(MaskIceLevelsetEnum) || !IsOnBase()) return 0;
+
+	/*Scaled not implemented yet...*/
+	_assert_(!scaled);
+
+	int               index1,index2;
+	const IssmPDouble epsilon = 1.e-15;
+	IssmDouble        s1,s2;
+	IssmDouble        gl[NUMVERTICES];
+	IssmDouble        xyz_front[2][3];
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Recover parameters and values*/
+	Element::GetInputListOnVertices(&gl[0],MaskIceLevelsetEnum);
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+	int pt1 = 0;
+	int pt2 = 1;
+	if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+
+		/*Portion of the segments*/
+		s1=gl[2]/(gl[2]-gl[1]);
+		s2=gl[2]/(gl[2]-gl[0]);
+		if(gl[2]<0.){
+			pt1 = 1; pt2 = 0;
+		}
+		xyz_front[pt2][0]=xyz_list[2][0]+s1*(xyz_list[1][0]-xyz_list[2][0]);
+		xyz_front[pt2][1]=xyz_list[2][1]+s1*(xyz_list[1][1]-xyz_list[2][1]);
+		xyz_front[pt2][2]=xyz_list[2][2]+s1*(xyz_list[1][2]-xyz_list[2][2]);
+		xyz_front[pt1][0]=xyz_list[2][0]+s2*(xyz_list[0][0]-xyz_list[2][0]);
+		xyz_front[pt1][1]=xyz_list[2][1]+s2*(xyz_list[0][1]-xyz_list[2][1]);
+		xyz_front[pt1][2]=xyz_list[2][2]+s2*(xyz_list[0][2]-xyz_list[2][2]);
+	}
+	else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+
+		/*Portion of the segments*/
+		s1=gl[0]/(gl[0]-gl[1]);
+		s2=gl[0]/(gl[0]-gl[2]);
+		if(gl[0]<0.){
+			pt1 = 1; pt2 = 0;
+		}
+
+		xyz_front[pt1][0]=xyz_list[0][0]+s1*(xyz_list[1][0]-xyz_list[0][0]);
+		xyz_front[pt1][1]=xyz_list[0][1]+s1*(xyz_list[1][1]-xyz_list[0][1]);
+		xyz_front[pt1][2]=xyz_list[0][2]+s1*(xyz_list[1][2]-xyz_list[0][2]);
+		xyz_front[pt2][0]=xyz_list[0][0]+s2*(xyz_list[2][0]-xyz_list[0][0]);
+		xyz_front[pt2][1]=xyz_list[0][1]+s2*(xyz_list[2][1]-xyz_list[0][1]);
+		xyz_front[pt2][2]=xyz_list[0][2]+s2*(xyz_list[2][2]-xyz_list[0][2]);
+	}
+	else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+
+		/*Portion of the segments*/
+		s1=gl[1]/(gl[1]-gl[0]);
+		s2=gl[1]/(gl[1]-gl[2]);
+		if(gl[1]<0.){
+			pt1 = 1; pt2 = 0;
+		}
+
+		xyz_front[pt2][0]=xyz_list[1][0]+s1*(xyz_list[0][0]-xyz_list[1][0]);
+		xyz_front[pt2][1]=xyz_list[1][1]+s1*(xyz_list[0][1]-xyz_list[1][1]);
+		xyz_front[pt2][2]=xyz_list[1][2]+s1*(xyz_list[0][2]-xyz_list[1][2]);
+		xyz_front[pt1][0]=xyz_list[1][0]+s2*(xyz_list[2][0]-xyz_list[1][0]);
+		xyz_front[pt1][1]=xyz_list[1][1]+s2*(xyz_list[2][1]-xyz_list[1][1]);
+		xyz_front[pt1][2]=xyz_list[1][2]+s2*(xyz_list[2][2]-xyz_list[1][2]);
+	}
+	else{
+		_error_("case not possible");
+	}
+
+	/*Some checks in debugging mode*/
+	_assert_(s1>=0 && s1<=1.);
+	_assert_(s2>=0 && s2<=1.);
+
+	/*Get normal vector*/
+	IssmDouble normal[3];
+	this->NormalSectionBase(&normal[0],&xyz_front[0][0]);
+	normal[0] = -normal[0];
+	normal[1] = -normal[1];
+
+	/*Get inputs*/
+	IssmDouble flux = 0.;
+	IssmDouble calvingratex,calvingratey,thickness,Jdet;
+	IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
+	Input* thickness_input=this->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* calvingratex_input=NULL;
+	Input* calvingratey_input=NULL;
+	calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+	calvingratey_input=this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
+
+	/*Start looping on Gaussian points*/
+	Gauss* gauss=this->NewGaussBase(&xyz_list[0][0],&xyz_front[0][0],3);
+	while(gauss->next()){
+		thickness_input->GetInputValue(&thickness,gauss);
+		calvingratex_input->GetInputValue(&calvingratex,gauss);
+		calvingratey_input->GetInputValue(&calvingratey,gauss);
+		this->JacobianDeterminantLine(&Jdet,&xyz_front[0][0],gauss);
+
+		flux += rho_ice*Jdet*gauss->weight*thickness*(calvingratex*normal[0] + calvingratey*normal[1]);
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	return flux;
+}
+/*}}}*/
+IssmDouble Penta::TotalCalvingMeltingFluxLevelset(bool scaled){/*{{{*/
+
+	/*Make sure there is an ice front here*/
+	if(!IsIceInElement() || !IsZeroLevelset(MaskIceLevelsetEnum) || !IsOnBase()) return 0;
+
+	/*Scaled not implemented yet...*/
+	_assert_(!scaled);
+
+	int               index1,index2;
+	const IssmPDouble epsilon = 1.e-15;
+	IssmDouble        s1,s2;
+	IssmDouble        gl[NUMVERTICES];
+	IssmDouble        xyz_front[2][3];
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Recover parameters and values*/
+	Element::GetInputListOnVertices(&gl[0],MaskIceLevelsetEnum);
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+	int pt1 = 0;
+	int pt2 = 1;
+	if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+
+		/*Portion of the segments*/
+		s1=gl[2]/(gl[2]-gl[1]);
+		s2=gl[2]/(gl[2]-gl[0]);
+		if(gl[2]<0.){
+			pt1 = 1; pt2 = 0;
+		}
+		xyz_front[pt2][0]=xyz_list[2][0]+s1*(xyz_list[1][0]-xyz_list[2][0]);
+		xyz_front[pt2][1]=xyz_list[2][1]+s1*(xyz_list[1][1]-xyz_list[2][1]);
+		xyz_front[pt2][2]=xyz_list[2][2]+s1*(xyz_list[1][2]-xyz_list[2][2]);
+		xyz_front[pt1][0]=xyz_list[2][0]+s2*(xyz_list[0][0]-xyz_list[2][0]);
+		xyz_front[pt1][1]=xyz_list[2][1]+s2*(xyz_list[0][1]-xyz_list[2][1]);
+		xyz_front[pt1][2]=xyz_list[2][2]+s2*(xyz_list[0][2]-xyz_list[2][2]);
+	}
+	else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+
+		/*Portion of the segments*/
+		s1=gl[0]/(gl[0]-gl[1]);
+		s2=gl[0]/(gl[0]-gl[2]);
+		if(gl[0]<0.){
+			pt1 = 1; pt2 = 0;
+		}
+
+		xyz_front[pt1][0]=xyz_list[0][0]+s1*(xyz_list[1][0]-xyz_list[0][0]);
+		xyz_front[pt1][1]=xyz_list[0][1]+s1*(xyz_list[1][1]-xyz_list[0][1]);
+		xyz_front[pt1][2]=xyz_list[0][2]+s1*(xyz_list[1][2]-xyz_list[0][2]);
+		xyz_front[pt2][0]=xyz_list[0][0]+s2*(xyz_list[2][0]-xyz_list[0][0]);
+		xyz_front[pt2][1]=xyz_list[0][1]+s2*(xyz_list[2][1]-xyz_list[0][1]);
+		xyz_front[pt2][2]=xyz_list[0][2]+s2*(xyz_list[2][2]-xyz_list[0][2]);
+	}
+	else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+
+		/*Portion of the segments*/
+		s1=gl[1]/(gl[1]-gl[0]);
+		s2=gl[1]/(gl[1]-gl[2]);
+		if(gl[1]<0.){
+			pt1 = 1; pt2 = 0;
+		}
+
+		xyz_front[pt2][0]=xyz_list[1][0]+s1*(xyz_list[0][0]-xyz_list[1][0]);
+		xyz_front[pt2][1]=xyz_list[1][1]+s1*(xyz_list[0][1]-xyz_list[1][1]);
+		xyz_front[pt2][2]=xyz_list[1][2]+s1*(xyz_list[0][2]-xyz_list[1][2]);
+		xyz_front[pt1][0]=xyz_list[1][0]+s2*(xyz_list[2][0]-xyz_list[1][0]);
+		xyz_front[pt1][1]=xyz_list[1][1]+s2*(xyz_list[2][1]-xyz_list[1][1]);
+		xyz_front[pt1][2]=xyz_list[1][2]+s2*(xyz_list[2][2]-xyz_list[1][2]);
+	}
+	else{
+		_error_("case not possible");
+	}
+
+	/*Some checks in debugging mode*/
+	_assert_(s1>=0 && s1<=1.);
+	_assert_(s2>=0 && s2<=1.);
+
+	/*Get normal vector*/
+	IssmDouble normal[3];
+	this->NormalSectionBase(&normal[0],&xyz_front[0][0]);
+	normal[0] = -normal[0];
+	normal[1] = -normal[1];
+
+	this->InputDepthAverageAtBase(VxEnum,VxAverageEnum);
+	this->InputDepthAverageAtBase(VyEnum,VyAverageEnum);
+
+	/*Get inputs*/
+	IssmDouble flux = 0.;
+	IssmDouble calvingratex,calvingratey,vx,vy,vel,meltingrate,meltingratex,meltingratey,thickness,Jdet;
+	IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
+	Input* thickness_input=this->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* calvingratex_input=NULL;
+	Input* calvingratey_input=NULL;
+	Input* vx_input=NULL;
+	Input* vy_input=NULL;
+	Input* meltingrate_input=NULL;
+	calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+	calvingratey_input=this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
+	vx_input=this->GetInput(VxAverageEnum); _assert_(vx_input);
+	vy_input=this->GetInput(VyAverageEnum); _assert_(vy_input);
+	meltingrate_input=this->GetInput(CalvingMeltingrateEnum); _assert_(meltingrate_input);
+
+	/*Start looping on Gaussian points*/
+	Gauss* gauss=this->NewGaussBase(&xyz_list[0][0],&xyz_front[0][0],3);
+	while(gauss->next()){
+		thickness_input->GetInputValue(&thickness,gauss);
+		calvingratex_input->GetInputValue(&calvingratex,gauss);
+		calvingratey_input->GetInputValue(&calvingratey,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vel=vx*vx+vy*vy;
+		meltingrate_input->GetInputValue(&meltingrate,gauss);
+		meltingratex=meltingrate*vx/(sqrt(vel)+1.e-14);
+		meltingratey=meltingrate*vy/(sqrt(vel)+1.e-14);
+		this->JacobianDeterminantLine(&Jdet,&xyz_front[0][0],gauss);
+
+		flux += rho_ice*Jdet*gauss->weight*thickness*((calvingratex+meltingratex)*normal[0] + (calvingratey+meltingratey)*normal[1]);
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	return flux;
+}
+/*}}}*/
+IssmDouble Penta::TotalFloatingBmb(bool scaled){/*{{{*/
+
+	/*The fbmb[kg yr-1] of one element is area[m2] * melting_rate [kg m^-2 yr^-1]*/
+	int        point1;
+	bool       mainlyfloating;
+	IssmDouble fbmb=0;
+	IssmDouble rho_ice,fraction1,fraction2,floatingmelt,Jdet,scalefactor;
+	IssmDouble Total_Fbmb=0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	Gauss*     gauss     = NULL;
+
+   if(!IsIceInElement() || !IsOnBase())return 0;
+
+	/*Get material parameters :*/
+	rho_ice=FindParam(MaterialsRhoIceEnum);
+	Input* floatingmelt_input = this->GetInput(BasalforcingsFloatingiceMeltingRateEnum); _assert_(floatingmelt_input);
+	Input* gllevelset_input = this->GetInput(MaskOceanLevelsetEnum); _assert_(gllevelset_input);
+	Input* scalefactor_input = NULL;
+	if(scaled==true){
+		scalefactor_input = this->GetInput(MeshScaleFactorEnum); _assert_(scalefactor_input);
+	}
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+	/* Start  looping on the number of gaussian points: */
+	gauss = this->NewGauss(point1,fraction1,fraction2,1-mainlyfloating,3);
+	while(gauss->next()){
+		this->JacobianDeterminantBase(&Jdet,&xyz_list[0][0],gauss);
+		floatingmelt_input->GetInputValue(&floatingmelt,gauss);
+		if(scaled==true){
+			scalefactor_input->GetInputValue(&scalefactor,gauss);
+		}
+		else scalefactor=1;
+		fbmb+=floatingmelt*Jdet*gauss->weight*scalefactor;
+	}
+
+   Total_Fbmb=rho_ice*fbmb;	        // from volume to mass
+
+	/*Return: */
+	delete gauss;
+	return Total_Fbmb;
+}
+/*}}}*/
+IssmDouble Penta::TotalGroundedBmb(bool scaled){/*{{{*/
+
+	/*The gbmb[kg yr-1] of one element is area[m2] * gounded melting rate [kg m^-2 yr^-1]*/
+	int        point1;
+	bool       mainlyfloating;
+	IssmDouble gbmb=0;
+	IssmDouble rho_ice,fraction1,fraction2,groundedmelt,Jdet,scalefactor;
+	IssmDouble Total_Gbmb=0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	Gauss*     gauss     = NULL;
+
+   if(!IsIceInElement() || !IsOnBase())return 0;
+
+	/*Get material parameters :*/
+	rho_ice=FindParam(MaterialsRhoIceEnum);
+	Input* groundedmelt_input = this->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(groundedmelt_input);
+	Input* gllevelset_input   = this->GetInput(MaskOceanLevelsetEnum); _assert_(gllevelset_input);
+	Input* scalefactor_input  = NULL;
+	if(scaled==true){
+		scalefactor_input = this->GetInput(MeshScaleFactorEnum); _assert_(scalefactor_input);
+	}
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+	/* Start  looping on the number of gaussian points: */
+	gauss = this->NewGauss(point1,fraction1,fraction2,mainlyfloating,3);
+	while(gauss->next()){
+		this->JacobianDeterminantBase(&Jdet,&xyz_list[0][0],gauss);
+		groundedmelt_input->GetInputValue(&groundedmelt,gauss);
+		if(scaled==true){
+			scalefactor_input->GetInputValue(&scalefactor,gauss);
+		}
+		else scalefactor=1;
+		gbmb+=groundedmelt*Jdet*gauss->weight*scalefactor;
+	}
+
+   Total_Gbmb=rho_ice*gbmb;	        // from volume to mass
+
+	/*Return: */
+	delete gauss;
+	return Total_Gbmb;
+}
+/*}}}*/
+IssmDouble Penta::TotalSmb(bool scaled){/*{{{*/
+
+	/*The smb[Gt yr-1] of one element is area[m2] * smb [ m ice yr^-1] * rho_ice [kg m-3] / 1e+10^12 */
+	IssmDouble base,smb,rho_ice,scalefactor;
+	IssmDouble Total_Smb=0;
+	IssmDouble lsf[NUMVERTICES];
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Get material parameters :*/
+	rho_ice=FindParam(MaterialsRhoIceEnum);
+
+	if(!IsIceInElement() || !IsOnSurface()) return 0.;
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*First calculate the area of the base (cross section triangle)
+	 * http://en.wikipedia.org/wiki/Triangle
+	 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/
+	base = 1./2. * fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
+
+	/*Now get the average SMB over the element*/
+	Element::GetInputListOnVertices(&lsf[0],MaskIceLevelsetEnum);
+   if(lsf[0]*lsf[1]<=0 || lsf[0]*lsf[2]<=0 || lsf[1]*lsf[2]<=0){
+		/*Partially ice-covered element*/
+		bool mainlyice;
+      int point;
+      IssmDouble* smb_vertices = xNew<IssmDouble>(NUMVERTICES);
+		IssmDouble  weights[NUMVERTICES2D];
+		IssmDouble  lsf2d[NUMVERTICES2D];
+      IssmDouble f1,f2,phi;
+      Element::GetInputListOnVertices(&smb_vertices[0],SmbMassBalanceEnum);
+		for(int i=0;i<NUMVERTICES2D;i++) lsf2d[i] = lsf[i];
+		GetFractionGeometry2D(weights,&phi,&point,&f1,&f2,&mainlyice,lsf2d);
+		smb = 0.0;
+		for(int i=0;i<NUMVERTICES2D;i++) smb += weights[i]*smb_vertices[i];
+
+		if(scaled==true){
+         IssmDouble* scalefactor_vertices   = xNew<IssmDouble>(NUMVERTICES);
+         Element::GetInputListOnVertices(&scalefactor_vertices[0],MeshScaleFactorEnum);
+         /*Compute loop only over lower vertices: i<NUMVERTICES2D*/
+         scalefactor = 0.0;
+         for(int i=0;i<NUMVERTICES2D;i++) scalefactor += weights[i]/phi*scalefactor_vertices[i];
+         xDelete<IssmDouble>(scalefactor_vertices);
+		}
+		else scalefactor = 1.0;
+
+		/*Cleanup*/
+      xDelete<IssmDouble>(smb_vertices);
+	}
+
+	else{
+		/*Fully ice-covered element*/
+		Input* smb_input = this->GetInput(SmbMassBalanceEnum); _assert_(smb_input);
+		smb_input->GetInputAverage(&smb);
+
+		if(scaled==true){
+			Input* scalefactor_input = this->GetInput(MeshScaleFactorEnum); _assert_(scalefactor_input);
+			scalefactor_input->GetInputAverage(&scalefactor);// average scalefactor on element
+		}
+		else scalefactor=1.0;
+	}
+
+	Total_Smb=rho_ice*base*smb*scalefactor;// smb on element in kg s-1
+
+	/*Return: */
+	return Total_Smb;
+}
+/*}}}*/
+IssmDouble Penta::TotalSmbMelt(bool scaled){/*{{{*/
+
+	/*The smbmelt[Gt yr-1] of one element is area[m2] * smb [ m ice yr^-1] * rho_ice [kg m-3] / 1e+10^12 */
+	IssmDouble base,smbmelt,rho_ice,scalefactor;
+	IssmDouble Total_SmbMelt=0;
+	IssmDouble lsf[NUMVERTICES];
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Get material parameters :*/
+	rho_ice=FindParam(MaterialsRhoIceEnum);
+
+	if(!IsIceInElement() || !IsOnSurface()) return 0.;
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*First calculate the area of the base (cross section triangle)
+	 * http://en.wikipedia.org/wiki/Triangle
+	 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/
+	base = 1./2. * fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
+
+	/*Now get the average SMB over the element*/
+	Element::GetInputListOnVertices(&lsf[0],MaskIceLevelsetEnum);
+   if(lsf[0]*lsf[1]<=0 || lsf[0]*lsf[2]<=0 || lsf[1]*lsf[2]<=0){
+		/*Partially ice-covered element*/
+		bool mainlyice;
+      int point;
+      IssmDouble* smbmelt_vertices = xNew<IssmDouble>(NUMVERTICES);
+		IssmDouble  weights[NUMVERTICES2D];
+		IssmDouble  lsf2d[NUMVERTICES2D];
+      IssmDouble f1,f2,phi;
+      Element::GetInputListOnVertices(&smbmelt_vertices[0],SmbMeltEnum);
+		for(int i=0;i<NUMVERTICES2D;i++) lsf2d[i] = lsf[i];
+		GetFractionGeometry2D(weights,&phi,&point,&f1,&f2,&mainlyice,lsf2d);
+		smbmelt = 0.0;
+		for(int i=0;i<NUMVERTICES2D;i++) smbmelt += weights[i]*smbmelt_vertices[i];
+
+		if(scaled==true){
+         IssmDouble* scalefactor_vertices   = xNew<IssmDouble>(NUMVERTICES);
+         Element::GetInputListOnVertices(&scalefactor_vertices[0],MeshScaleFactorEnum);
+         /*Compute loop only over lower vertices: i<NUMVERTICES2D*/
+         scalefactor = 0.0;
+         for(int i=0;i<NUMVERTICES2D;i++) scalefactor += weights[i]/phi*scalefactor_vertices[i];
+         xDelete<IssmDouble>(scalefactor_vertices);
+		}
+		else scalefactor = 1.0;
+
+		/*Cleanup*/
+      xDelete<IssmDouble>(smbmelt_vertices);
+	}
+
+	else{
+		/*Fully ice-covered element*/
+		Input* smbmelt_input = this->GetInput(SmbMeltEnum); _assert_(smbmelt_input);
+		smbmelt_input->GetInputAverage(&smbmelt);
+
+		if(scaled==true){
+			Input* scalefactor_input = this->GetInput(MeshScaleFactorEnum); _assert_(scalefactor_input);
+			scalefactor_input->GetInputAverage(&scalefactor);// average scalefactor on element
+		}
+		else scalefactor=1.0;
+	}
+
+	Total_SmbMelt=rho_ice*base*smbmelt*scalefactor;// smbmelt on element in kg s-1
+
+	/*Return: */
+	return Total_SmbMelt;
+}
+/*}}}*/
+IssmDouble Penta::TotalSmbRefreeze(bool scaled){/*{{{*/
+
+	/*The smbrefreeze[Gt yr-1] of one element is area[m2] * smb [ m ice yr^-1] * rho_ice [kg m-3] / 1e+10^12 */
+	IssmDouble base,smbrefreeze,rho_ice,scalefactor;
+	IssmDouble Total_SmbRefreeze=0;
+	IssmDouble lsf[NUMVERTICES];
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Get material parameters :*/
+	rho_ice=FindParam(MaterialsRhoIceEnum);
+
+	if(!IsIceInElement() || !IsOnSurface()) return 0.;
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*First calculate the area of the base (cross section triangle)
+	 * http://en.wikipedia.org/wiki/Triangle
+	 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/
+	base = 1./2. * fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
+
+	/*Now get the average SMB over the element*/
+	Element::GetInputListOnVertices(&lsf[0],MaskIceLevelsetEnum);
+   if(lsf[0]*lsf[1]<=0 || lsf[0]*lsf[2]<=0 || lsf[1]*lsf[2]<=0){
+		/*Partially ice-covered element*/
+		bool mainlyice;
+      int point;
+      IssmDouble* smbrefreeze_vertices = xNew<IssmDouble>(NUMVERTICES);
+		IssmDouble  weights[NUMVERTICES2D];
+		IssmDouble  lsf2d[NUMVERTICES2D];
+      IssmDouble f1,f2,phi;
+      Element::GetInputListOnVertices(&smbrefreeze_vertices[0],SmbRefreezeEnum);
+		for(int i=0;i<NUMVERTICES2D;i++) lsf2d[i] = lsf[i];
+		GetFractionGeometry2D(weights,&phi,&point,&f1,&f2,&mainlyice,lsf2d);
+		smbrefreeze = 0.0;
+		for(int i=0;i<NUMVERTICES2D;i++) smbrefreeze += weights[i]*smbrefreeze_vertices[i];
+
+		if(scaled==true){
+         IssmDouble* scalefactor_vertices   = xNew<IssmDouble>(NUMVERTICES);
+         Element::GetInputListOnVertices(&scalefactor_vertices[0],MeshScaleFactorEnum);
+         /*Compute loop only over lower vertices: i<NUMVERTICES2D*/
+         scalefactor = 0.0;
+         for(int i=0;i<NUMVERTICES2D;i++) scalefactor += weights[i]/phi*scalefactor_vertices[i];
+         xDelete<IssmDouble>(scalefactor_vertices);
+		}
+		else scalefactor = 1.0;
+
+		/*Cleanup*/
+      xDelete<IssmDouble>(smbrefreeze_vertices);
+	}
+
+	else{
+		/*Fully ice-covered element*/
+		Input* smbrefreeze_input = this->GetInput(SmbRefreezeEnum); _assert_(smbrefreeze_input);
+		smbrefreeze_input->GetInputAverage(&smbrefreeze);
+
+		if(scaled==true){
+			Input* scalefactor_input = this->GetInput(MeshScaleFactorEnum); _assert_(scalefactor_input);
+			scalefactor_input->GetInputAverage(&scalefactor);// average scalefactor on element
+		}
+		else scalefactor=1.0;
+	}
+
+	Total_SmbRefreeze=rho_ice*base*smbrefreeze*scalefactor;// smbrefreeze on element in kg s-1
+
+	/*Return: */
+	return Total_SmbRefreeze;
+}
+/*}}}*/
+void       Penta::Update(Inputs* inputs,int index,IoModel* iomodel,int analysis_counter,int analysis_type,int finiteelement_type){ /*{{{*/
+
+	/*Intermediaries*/
+	int        i;
+	int        penta_vertex_ids[6];
+	IssmDouble nodeinputs[6];
+	IssmDouble yts;
+	bool       dakota_analysis;
+	int        numnodes;
+	int*       penta_node_ids = NULL;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&yts,"md.constants.yts");
+	iomodel->FindConstant(&dakota_analysis,"md.qmu.isdakota");
+
+	/*Checks if debuging*/
+	_assert_(iomodel->elements);
+	_assert_(index==this->sid);
+
+	/*Recover element type*/
+	this->element_type_list[analysis_counter]=finiteelement_type;
+
+	/*Recover vertices ids needed to initialize inputs*/
+	for(i=0;i<6;i++) penta_vertex_ids[i]=iomodel->elements[6*index+i]; //ids for vertices are in the elements array from Matlab
+
+	/*Recover nodes ids needed to initialize the node hook.*/
+	switch(finiteelement_type){
+		case P1Enum:
+			numnodes         = 6;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[0]=iomodel->elements[6*index+0];
+			penta_node_ids[1]=iomodel->elements[6*index+1];
+			penta_node_ids[2]=iomodel->elements[6*index+2];
+			penta_node_ids[3]=iomodel->elements[6*index+3];
+			penta_node_ids[4]=iomodel->elements[6*index+4];
+			penta_node_ids[5]=iomodel->elements[6*index+5];
+			break;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			numnodes         = 7;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[0]=iomodel->elements[6*index+0];
+			penta_node_ids[1]=iomodel->elements[6*index+1];
+			penta_node_ids[2]=iomodel->elements[6*index+2];
+			penta_node_ids[3]=iomodel->elements[6*index+3];
+			penta_node_ids[4]=iomodel->elements[6*index+4];
+			penta_node_ids[5]=iomodel->elements[6*index+5];
+			penta_node_ids[6]=iomodel->numberofvertices+index+1;
+			break;
+		case P1xP2Enum:
+			numnodes         = 9;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoverticaledgeconnectivity[3*index+0]+1;
+			penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoverticaledgeconnectivity[3*index+1]+1;
+			penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoverticaledgeconnectivity[3*index+2]+1;
+			break;
+		case P1xP3Enum:
+			numnodes         = 12;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->numberofvertices+2*iomodel->elementtoverticaledgeconnectivity[3*index+0]+1;
+			penta_node_ids[ 7]=iomodel->numberofvertices+2*iomodel->elementtoverticaledgeconnectivity[3*index+1]+1;
+			penta_node_ids[ 8]=iomodel->numberofvertices+2*iomodel->elementtoverticaledgeconnectivity[3*index+2]+1;
+			penta_node_ids[ 9]=iomodel->numberofvertices+2*iomodel->elementtoverticaledgeconnectivity[3*index+0]+2;
+			penta_node_ids[10]=iomodel->numberofvertices+2*iomodel->elementtoverticaledgeconnectivity[3*index+1]+2;
+			penta_node_ids[11]=iomodel->numberofvertices+2*iomodel->elementtoverticaledgeconnectivity[3*index+2]+2;
+			break;
+		case P2xP1Enum:
+			numnodes         = 12;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtohorizontaledgeconnectivity[6*index+0]+1;
+			penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtohorizontaledgeconnectivity[6*index+1]+1;
+			penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtohorizontaledgeconnectivity[6*index+2]+1;
+			penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtohorizontaledgeconnectivity[6*index+3]+1;
+			penta_node_ids[10]=iomodel->numberofvertices+iomodel->elementtohorizontaledgeconnectivity[6*index+4]+1;
+			penta_node_ids[11]=iomodel->numberofvertices+iomodel->elementtohorizontaledgeconnectivity[6*index+5]+1;
+			break;
+		case P1xP4Enum:
+			numnodes         = 15;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->elements[6*index+0]; /*Vertex 1*/
+			penta_node_ids[ 1]=iomodel->elements[6*index+1]; /*Vertex 2*/
+			penta_node_ids[ 2]=iomodel->elements[6*index+2]; /*Vertex 3*/
+			penta_node_ids[ 3]=iomodel->elements[6*index+3]; /*Vertex 4*/
+			penta_node_ids[ 4]=iomodel->elements[6*index+4]; /*Vertex 5*/
+			penta_node_ids[ 5]=iomodel->elements[6*index+5]; /*Vertex 6*/
+			penta_node_ids[ 6]=iomodel->numberofvertices+3*iomodel->elementtoverticaledgeconnectivity[3*index+0]+1; /*mid vertical edge 1*/
+			penta_node_ids[ 7]=iomodel->numberofvertices+3*iomodel->elementtoverticaledgeconnectivity[3*index+1]+1; /*mid vertical edge 2*/
+			penta_node_ids[ 8]=iomodel->numberofvertices+3*iomodel->elementtoverticaledgeconnectivity[3*index+2]+1; /*mid vertical edge 3*/
+			penta_node_ids[ 9]=iomodel->numberofvertices+3*iomodel->elementtoverticaledgeconnectivity[3*index+0]+2; /* 1/4 vertical edge 1*/
+			penta_node_ids[10]=iomodel->numberofvertices+3*iomodel->elementtoverticaledgeconnectivity[3*index+1]+2; /* 1/4 vertical edge 2*/
+			penta_node_ids[11]=iomodel->numberofvertices+3*iomodel->elementtoverticaledgeconnectivity[3*index+2]+2; /* 1/4 vertical edge 3*/
+			penta_node_ids[12]=iomodel->numberofvertices+3*iomodel->elementtoverticaledgeconnectivity[3*index+0]+3; /* 3/4 vertical edge 1*/
+			penta_node_ids[13]=iomodel->numberofvertices+3*iomodel->elementtoverticaledgeconnectivity[3*index+1]+3; /* 3/4 vertical edge 2*/
+			penta_node_ids[14]=iomodel->numberofvertices+3*iomodel->elementtoverticaledgeconnectivity[3*index+2]+3; /* 3/4 vertical edge 3*/
+			break;
+		case P2xP4Enum:
+			numnodes         = 30;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->elements[6*index+0]; /*Vertex 1*/
+			penta_node_ids[ 1]=iomodel->elements[6*index+1]; /*Vertex 2*/
+			penta_node_ids[ 2]=iomodel->elements[6*index+2]; /*Vertex 3*/
+			penta_node_ids[ 3]=iomodel->elements[6*index+3]; /*Vertex 4*/
+			penta_node_ids[ 4]=iomodel->elements[6*index+4]; /*Vertex 5*/
+			penta_node_ids[ 5]=iomodel->elements[6*index+5]; /*Vertex 6*/
+			penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1; /*mid vertical edge 1*/
+			penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1; /*mid vertical edge 2*/
+			penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1; /*mid vertical edge 3*/
+			penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1; /*mid basal edge 1*/
+			penta_node_ids[10]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1; /*mid basal edge 2*/
+			penta_node_ids[11]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1; /*mid basal edge 3*/
+			penta_node_ids[12]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1; /*mid top edge 1*/
+			penta_node_ids[13]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1; /*mid top edge 2*/
+			penta_node_ids[14]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1; /*mid top edge 3*/
+			penta_node_ids[15]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*index+0]+1; /* 1/4 vertical edge 1*/
+			penta_node_ids[16]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*index+1]+1; /* 1/4 vertical edge 2*/
+			penta_node_ids[17]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*index+2]+1; /* 1/4 vertical edge 3*/
+			penta_node_ids[18]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*index+0]+2; /* 3/4 vertical edge 1*/
+			penta_node_ids[19]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*index+1]+2; /* 3/4 vertical edge 2*/
+			penta_node_ids[20]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*index+2]+2; /* 3/4 vertical edge 3*/
+			penta_node_ids[21]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*index+0]+1; /* 1/4 vertical face 1*/
+			penta_node_ids[22]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*index+1]+1; /* 1/4 vertical face 2*/
+			penta_node_ids[23]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*index+2]+1; /* 1/4 vertical face 3*/
+			penta_node_ids[24]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*index+0]+2; /* 2/4 vertical face 1*/
+			penta_node_ids[25]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*index+1]+2; /* 2/4 vertical face 2*/
+			penta_node_ids[26]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*index+2]+2; /* 2/4 vertical face 3*/
+			penta_node_ids[27]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*index+0]+3; /* 3/4 vertical face 1*/
+			penta_node_ids[28]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*index+1]+3; /* 3/4 vertical face 2*/
+			penta_node_ids[29]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*index+2]+3; /* 3/4 vertical face 3*/
+			break;
+		case P2Enum:
+			numnodes         = 18;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;
+			penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;
+			penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;
+			penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;
+			penta_node_ids[10]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;
+			penta_node_ids[11]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;
+			penta_node_ids[12]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;
+			penta_node_ids[13]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;
+			penta_node_ids[14]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;
+			penta_node_ids[15]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtoverticalfaceconnectivity[3*index+0]+1;
+			penta_node_ids[16]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtoverticalfaceconnectivity[3*index+1]+1;
+			penta_node_ids[17]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtoverticalfaceconnectivity[3*index+2]+1;
+			break;
+		case P2bubbleEnum: case P2bubblecondensedEnum:
+			numnodes         = 19;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;
+			penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;
+			penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;
+			penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;
+			penta_node_ids[10]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;
+			penta_node_ids[11]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;
+			penta_node_ids[12]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;
+			penta_node_ids[13]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;
+			penta_node_ids[14]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;
+			penta_node_ids[15]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1;
+			penta_node_ids[16]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1;
+			penta_node_ids[17]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1;
+			penta_node_ids[18]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+index+1;
+			break;
+		case P1P1Enum: case P1P1GLSEnum:
+			numnodes         = 12;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->elements[6*index+5];
+
+			penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elements[6*index+0];
+			penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elements[6*index+1];
+			penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elements[6*index+2];
+			penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->elements[6*index+3];
+			penta_node_ids[10]=iomodel->numberofvertices+iomodel->elements[6*index+4];
+			penta_node_ids[11]=iomodel->numberofvertices+iomodel->elements[6*index+5];
+			break;
+		case MINIEnum: case MINIcondensedEnum:
+			numnodes         = 13;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->numberofvertices+index+1;
+
+			penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+0];
+			penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+1];
+			penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+2];
+			penta_node_ids[10]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+3];
+			penta_node_ids[11]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+4];
+			penta_node_ids[12]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*index+5];
+			break;
+		case TaylorHoodEnum:
+			numnodes         = 24;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;
+			penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;
+			penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;
+			penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;
+			penta_node_ids[10]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;
+			penta_node_ids[11]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;
+			penta_node_ids[12]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;
+			penta_node_ids[13]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;
+			penta_node_ids[14]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;
+			penta_node_ids[15]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtoverticalfaceconnectivity[3*index+0]+1;
+			penta_node_ids[16]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtoverticalfaceconnectivity[3*index+1]+1;
+			penta_node_ids[17]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtoverticalfaceconnectivity[3*index+2]+1;
+
+			penta_node_ids[18]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofverticalfaces+iomodel->elements[6*index+0];
+			penta_node_ids[19]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofverticalfaces+iomodel->elements[6*index+1];
+			penta_node_ids[20]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofverticalfaces+iomodel->elements[6*index+2];
+			penta_node_ids[21]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofverticalfaces+iomodel->elements[6*index+3];
+			penta_node_ids[22]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofverticalfaces+iomodel->elements[6*index+4];
+			penta_node_ids[23]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofverticalfaces+iomodel->elements[6*index+5];
+			break;
+		case LATaylorHoodEnum:
+			numnodes         = 18;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;
+			penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;
+			penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;
+			penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;
+			penta_node_ids[10]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;
+			penta_node_ids[11]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;
+			penta_node_ids[12]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;
+			penta_node_ids[13]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;
+			penta_node_ids[14]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;
+			penta_node_ids[15]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1;
+			penta_node_ids[16]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1;
+			penta_node_ids[17]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1;
+			break;
+		case OneLayerP4zEnum:
+			numnodes         = 30+6;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->elements[6*index+0]; /*Vertex 1*/
+			penta_node_ids[ 1]=iomodel->elements[6*index+1]; /*Vertex 2*/
+			penta_node_ids[ 2]=iomodel->elements[6*index+2]; /*Vertex 3*/
+			penta_node_ids[ 3]=iomodel->elements[6*index+3]; /*Vertex 4*/
+			penta_node_ids[ 4]=iomodel->elements[6*index+4]; /*Vertex 5*/
+			penta_node_ids[ 5]=iomodel->elements[6*index+5]; /*Vertex 6*/
+			penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1; /*mid vertical edge 1*/
+			penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1; /*mid vertical edge 2*/
+			penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1; /*mid vertical edge 3*/
+			penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1; /*mid basal edge 1*/
+			penta_node_ids[10]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1; /*mid basal edge 2*/
+			penta_node_ids[11]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1; /*mid basal edge 3*/
+			penta_node_ids[12]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1; /*mid top edge 1*/
+			penta_node_ids[13]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1; /*mid top edge 2*/
+			penta_node_ids[14]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1; /*mid top edge 3*/
+			penta_node_ids[15]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*index+0]+1; /* 1/4 vertical edge 1*/
+			penta_node_ids[16]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*index+1]+1; /* 1/4 vertical edge 2*/
+			penta_node_ids[17]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*index+2]+1; /* 1/4 vertical edge 3*/
+			penta_node_ids[18]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*index+0]+2; /* 3/4 vertical edge 1*/
+			penta_node_ids[19]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*index+1]+2; /* 3/4 vertical edge 2*/
+			penta_node_ids[20]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*index+2]+2; /* 3/4 vertical edge 3*/
+			penta_node_ids[21]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*index+0]+1; /* 1/4 vertical face 1*/
+			penta_node_ids[22]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*index+1]+1; /* 1/4 vertical face 2*/
+			penta_node_ids[23]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*index+2]+1; /* 1/4 vertical face 3*/
+			penta_node_ids[24]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*index+0]+2; /* 2/4 vertical face 1*/
+			penta_node_ids[25]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*index+1]+2; /* 2/4 vertical face 2*/
+			penta_node_ids[26]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*index+2]+2; /* 2/4 vertical face 3*/
+			penta_node_ids[27]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*index+0]+3; /* 3/4 vertical face 1*/
+			penta_node_ids[28]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*index+1]+3; /* 3/4 vertical face 2*/
+			penta_node_ids[29]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*index+2]+3; /* 3/4 vertical face 3*/
+
+			penta_node_ids[30]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->numberofverticalfaces+iomodel->elements[6*index+0];
+			penta_node_ids[31]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->numberofverticalfaces+iomodel->elements[6*index+1];
+			penta_node_ids[32]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->numberofverticalfaces+iomodel->elements[6*index+2];
+			penta_node_ids[33]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->numberofverticalfaces+iomodel->elements[6*index+3];
+			penta_node_ids[34]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->numberofverticalfaces+iomodel->elements[6*index+4];
+			penta_node_ids[35]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->numberofverticalfaces+iomodel->elements[6*index+5];
+			break;
+		case CrouzeixRaviartEnum:
+			numnodes         = 25;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;
+			penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;
+			penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;
+			penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;
+			penta_node_ids[10]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;
+			penta_node_ids[11]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;
+			penta_node_ids[12]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;
+			penta_node_ids[13]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;
+			penta_node_ids[14]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;
+			penta_node_ids[15]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1;
+			penta_node_ids[16]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1;
+			penta_node_ids[17]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1;
+			penta_node_ids[18]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+index+1;
+
+			penta_node_ids[19]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+1;
+			penta_node_ids[20]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+2;
+			penta_node_ids[21]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+3;
+			penta_node_ids[22]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+4;
+			penta_node_ids[23]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+5;
+			penta_node_ids[24]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+iomodel->numberofelements+6*index+6;
+			break;
+		case LACrouzeixRaviartEnum:
+			numnodes         = 19;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[ 0]=iomodel->elements[6*index+0];
+			penta_node_ids[ 1]=iomodel->elements[6*index+1];
+			penta_node_ids[ 2]=iomodel->elements[6*index+2];
+			penta_node_ids[ 3]=iomodel->elements[6*index+3];
+			penta_node_ids[ 4]=iomodel->elements[6*index+4];
+			penta_node_ids[ 5]=iomodel->elements[6*index+5];
+			penta_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+0]+1;
+			penta_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+1]+1;
+			penta_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+2]+1;
+			penta_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+3]+1;
+			penta_node_ids[10]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+4]+1;
+			penta_node_ids[11]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+5]+1;
+			penta_node_ids[12]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+6]+1;
+			penta_node_ids[13]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+7]+1;
+			penta_node_ids[14]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*index+8]+1;
+			penta_node_ids[15]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+2]+1;
+			penta_node_ids[16]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+3]+1;
+			penta_node_ids[17]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtofaceconnectivity[5*index+4]+1;
+			penta_node_ids[18]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberoffaces+index+1;
+			break;
+		default:
+			_error_("Finite element "<<EnumToStringx(finiteelement_type)<<" not supported yet");
+	}
+
+	/*hooks: */
+	this->SetHookNodes(penta_node_ids,numnodes,analysis_counter); this->nodes=NULL;
+	xDelete<int>(penta_node_ids);
+
+	/*Defaults if not provided in iomodel*/
+	switch(analysis_type){
+
+		case StressbalanceAnalysisEnum:
+			_assert_(iomodel->Data("md.flowequation.element_equation"));
+
+			if((IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[index])))==HOFSApproximationEnum){
+				int vertexlids[NUMVERTICES];
+				for(i=0;i<NUMVERTICES;i++) vertexlids[i]=iomodel->my_vertices_lids[penta_vertex_ids[i]-1];
+				/*Create VzHO and VzFS Enums*/
+				if(iomodel->Data("md.initialization.vz") && iomodel->Data("md.flowequation.borderFS")){
+					for(i=0;i<6;i++) nodeinputs[i]=iomodel->Data("md.initialization.vz")[penta_vertex_ids[i]-1]*iomodel->Data("md.flowequation.borderFS")[penta_vertex_ids[i]-1];
+					this->SetElementInput(inputs,NUMVERTICES,vertexlids,nodeinputs,VzFSEnum);
+					for(i=0;i<6;i++) nodeinputs[i]=iomodel->Data("md.initialization.vz")[penta_vertex_ids[i]-1]*(1-iomodel->Data("md.flowequation.borderFS")[penta_vertex_ids[i]-1]);
+					this->SetElementInput(inputs,NUMVERTICES,vertexlids,nodeinputs,VzHOEnum);
+				}
+				else{
+					for(i=0;i<6;i++)nodeinputs[i]=0;
+					this->SetElementInput(inputs,NUMVERTICES,vertexlids,nodeinputs,VzFSEnum);
+					this->SetElementInput(inputs,NUMVERTICES,vertexlids,nodeinputs,VzHOEnum);
+				}
+			}
+			if((IoCodeToEnumElementEquation(reCast<int>(iomodel->Data("md.flowequation.element_equation")[index])))==SSAFSApproximationEnum){
+				int vertexlids[NUMVERTICES];
+				for(i=0;i<NUMVERTICES;i++) vertexlids[i]=iomodel->my_vertices_lids[penta_vertex_ids[i]-1];
+				/*Create VzSSA and VzFS Enums*/
+				if(iomodel->Data("md.initialization.vz") && iomodel->Data("md.flowequation.borderFS")){
+					for(i=0;i<6;i++) nodeinputs[i]=iomodel->Data("md.initialization.vz")[penta_vertex_ids[i]-1]*iomodel->Data("md.flowequation.borderFS")[penta_vertex_ids[i]-1];
+					this->SetElementInput(inputs,NUMVERTICES,vertexlids,nodeinputs,VzFSEnum);
+					for(i=0;i<6;i++) nodeinputs[i]=iomodel->Data("md.initialization.vz")[penta_vertex_ids[i]-1]*(1-iomodel->Data("md.flowequation.borderFS")[penta_vertex_ids[i]-1]);
+					this->SetElementInput(inputs,NUMVERTICES,vertexlids,nodeinputs,VzSSAEnum);
+				}
+				else{
+					for(i=0;i<6;i++)nodeinputs[i]=0;
+					this->SetElementInput(inputs,NUMVERTICES,vertexlids,nodeinputs,VzFSEnum);
+					this->SetElementInput(inputs,NUMVERTICES,vertexlids,nodeinputs,VzSSAEnum);
+				}
+			}
+			break;
+		default:
+			/*No update for other solution types*/
+			break;
+	}
+}
+/*}}}*/
+void       Penta::UpdateConstraintsExtrudeFromBase(void){/*{{{*/
+
+	if(!IsOnBase()) return;
+
+	int        extrusioninput;
+	IssmDouble value,isonbase;
+
+	this->parameters->FindParam(&extrusioninput,InputToExtrudeEnum);
+	Input* input = this->GetInput(extrusioninput);      _assert_(extrusioninput);
+	Input* onbase = this->GetInput(MeshVertexonbaseEnum); _assert_(onbase);
+
+	GaussPenta gauss;
+	for(int iv=0;iv<this->NumberofNodes(this->element_type);iv++){
+		gauss.GaussNode(this->element_type,iv);
+		onbase->GetInputValue(&isonbase,&gauss);
+		if(isonbase==1.){
+			input->GetInputValue(&value,&gauss);
+			this->nodes[iv]->ApplyConstraint(0,value);
+		}
+	}
+}/*}}}*/
+void       Penta::UpdateConstraintsExtrudeFromTop(void){/*{{{*/
+
+	if(!IsOnSurface()) return;
+
+	int extrusioninput;
+	int indices[3]={3,4,5};
+	IssmDouble value;
+
+	this->parameters->FindParam(&extrusioninput,InputToExtrudeEnum);
+	Input* input = this->GetInput(extrusioninput); _assert_(extrusioninput);
+
+	GaussPenta gauss;
+	for(int i=0;i<3;i++){
+		gauss.GaussNode(P1Enum,indices[i]);
+		input->GetInputValue(&value,&gauss);
+		this->nodes[indices[i]]->ApplyConstraint(0,value);
+	}
+
+}
+/*}}}*/
+int        Penta::UpdatePotentialUngrounding(IssmDouble* vertices_potentially_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf){/*{{{*/
+
+	int i;
+	int nflipped=0;
+
+	/*Go through nodes, and whoever is on the potential_ungrounding, ends up in nodes_on_iceshelf: */
+	for(i=0;i<NUMVERTICES;i++){
+		if (reCast<bool,IssmDouble>(vertices_potentially_ungrounding[vertices[i]->Pid()])){
+			vec_nodes_on_iceshelf->SetValue(vertices[i]->Pid(),-1.,INS_VAL);
+
+			/*If node was not on ice shelf, we flipped*/
+			if(nodes_on_iceshelf[vertices[i]->Pid()]>=0.){
+				nflipped++;
+			}
+		}
+	}
+	return nflipped;
+}
+/*}}}*/
+void       Penta::ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	PentaRef::GetInputDerivativeValue(dvalue,values,xyz_list,gauss,P1Enum);
+}
+/*}}}*/
+void       Penta::ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss){/*{{{*/
+	PentaRef::GetInputValue(pvalue,values,gauss,P1Enum);
+}
+/*}}}*/
+int        Penta::VelocityInterpolation(void){/*{{{*/
+	return PentaRef::VelocityInterpolation(this->element_type);
+}
+/*}}}*/
+int        Penta::VertexConnectivity(int vertexindex){/*{{{*/
+	_assert_(this->vertices);
+	return this->vertices[vertexindex]->Connectivity();
+}
+/*}}}*/
+void       Penta::VerticalSegmentIndices(int** pindices,int* pnumseg){/*{{{*/
+
+	/*output*/
+	int *indices = xNew<int>(3*2);
+	indices[0*2 + 0] = 0; indices[0*2 + 1] = 3;
+	indices[1*2 + 0] = 1; indices[1*2 + 1] = 4;
+	indices[2*2 + 0] = 2; indices[2*2 + 1] = 5;
+
+	/*Assign output pointers*/
+	*pindices = indices;
+	*pnumseg  = 3;
+}
+/*}}}*/
+void       Penta::VerticalSegmentIndicesBase(int** pindices,int* pnumseg){/*{{{*/
+
+	PentaRef::VerticalSegmentIndicesBase(pindices,pnumseg,this->GetElementType());
+
+	return;
+}
+/*}}}*/
+void       Penta::ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble phi;
+	IssmDouble viscosity;
+	IssmDouble epsilon[6];
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->StrainRateFS(&epsilon[0],xyz_list,(GaussPenta*)gauss,vx_input,vy_input,vz_input);
+	this->material->ViscosityFS(&viscosity,3,xyz_list,(GaussPenta*)gauss,vx_input,vy_input,vz_input);
+	GetPhi(&phi,&epsilon[0],viscosity);
+
+	/*Assign output pointer*/
+	*pphi = phi;
+}
+/*}}}*/
+
+#ifdef _HAVE_DAKOTA_
+void       Penta::InputScaleFromDakota(IssmDouble* distributed_values, IssmDouble* partition, int npart, int nt, int name){/*{{{*/
+
+	int interp;
+	int type;
+
+	/*Branch according to whether we have a transient or not input: */
+	type=this->inputs->GetInputObjectEnum(name);
+	if(type==PentaInputEnum){
+		/*Figure out if we are P0 or P1 interpolation: */
+		PentaInput* pentainput = this->inputs->GetPentaInput(name);
+		PentaInput* pentainput2 = this->inputs->GetPentaInput(DummyEnum);
+		interp=pentainput->GetInterpolation();
+
+		if (interp==P0Enum){
+			/*Update the value if this element belongs to the partition: */
+			if(partition[this->Sid()]!=-1){
+				int lid=this->lid; pentainput->Serve(1,&lid);
+				/*scale P0 value  for this element, corresponding to the partition:*/
+				IssmDouble value = pentainput->element_values[0];
+				value*=distributed_values[(int)partition[this->Sid()]];
+				pentainput2->SetInput(P0Enum,this->lid,value);
+			}
+		}
+		else if (interp==P1Enum){
+			IssmDouble values[NUMVERTICES];
+			int lidlist[NUMVERTICES];
+			this->GetVerticesLidList(&lidlist[0]);
+			pentainput->Serve(NUMVERTICES,&lidlist[0]);
+			for (int i=0;i<NUMVERTICES;i++){
+				values[i]=pentainput->element_values[i];
+				if(partition[this->vertices[i]->Sid()]!=-1) values[i]*=distributed_values[(int)partition[this->vertices[i]->Sid()]];
+			}
+			pentainput2->SetInput(P1Enum,NUMVERTICES,&lidlist[0],&values[0]);
+		}
+		else _error_("Penta::InputScaleFromDakota error message: input interpolation " << EnumToStringx(interp) << " not supported yet!");
+	}
+	else if(type==TransientInputEnum){
+
+		IssmDouble* steps=NULL;
+		int nsteps;
+		TransientInput* transientinput = NULL;
+		TransientInput* transientinput2 = NULL;
+
+		/*retrieve transient input:*/
+		transientinput= this->inputs->GetTransientInput(name);
+		transientinput2= this->inputs->GetTransientInput(DummyEnum);
+
+		/*retrieve time steps: */
+		transientinput->GetAllTimes(&steps,&nsteps);
+
+		/*double check:*/
+		if (nsteps!=nt && nt!=1) _error_("Penta:InputScaleFromDakota error message: transient input " << EnumToStringx(name) <<
+				" should have the same number of time steps as the number of time values distributed by Dakota: " << nt << "\n");
+
+		/*needed to update inputs:*/
+		int lidlist[NUMVERTICES];
+		this->GetVerticesLidList(&lidlist[0]);
+
+		/*go through the transient inputs, and update:*/
+		for (int i=0;i<nsteps;i++){
+			PentaInput* pentainput=transientinput->GetPentaInput(i);
+			PentaInput* pentainput2=transientinput2->GetPentaInput(i);
+			interp=pentainput->GetInterpolation();
+
+			if (interp==P0Enum){
+				/*Update the value if this element belongs to the partition: */
+				if(partition[this->Sid()]!=-1){
+					int lid=this->lid; pentainput->Serve(1,&lid);
+					/*scale P0 value  for this element, corresponding to the partition:*/
+					IssmDouble value = pentainput->element_values[0];
+					if(nt==1) value*=distributed_values[(int)partition[this->Sid()]]; //we scale all the time steps  with the same distributed_value
+					else value*=distributed_values[(int)partition[this->Sid()]*nsteps+i]; //we scale all the time steps with distributed value for each step
+
+					pentainput2->SetInput(P0Enum,this->lid,value);
+				}
+			}
+			else if (interp==P1Enum){
+				IssmDouble values[NUMVERTICES];
+				pentainput->Serve(NUMVERTICES,&lidlist[0]);
+				for (int j=0;j<NUMVERTICES;j++){
+					values[j]=pentainput->element_values[j];
+					if(partition[this->vertices[i]->Sid()]!=-1){
+						if(nt==1) values[j]*=distributed_values[(int)partition[this->vertices[j]->Sid()]];//we scale all the time steps  with the same distributed_value
+						else values[j]*=distributed_values[(int)partition[this->vertices[j]->Sid()]*nsteps+i];//we scale all the time steps with distributed value for each step
+					}
+				}
+				pentainput2->SetInput(P1Enum,NUMVERTICES,&lidlist[0],&values[0]);
+			}
+			else _error_("Penta::InputScaleFromDakota error message: input interpolation " << EnumToStringx(interp) << " not supported yet!");
+		}
+	}
+	else _error_("Penta::InputScaleFromDakota error message: input type " << EnumToStringx(name) << " not supported yet!");
+}
+/*}}}*/
+void       Penta::InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols, int name, int type){/*{{{*/
+
+	/*Check that name is an element input*/
+	if(!IsInputEnum(name)) _error_("Enum "<<EnumToStringx(name)<<" is not in IsInput");
+	TransientInput* transientinput = inputs->GetTransientInput(name);
+
+	switch(type){
+
+		case VertexEnum:
+
+			/*Get LID lists once for all*/
+			IssmDouble  values[NUMVERTICES];
+			int         lidlist[NUMVERTICES];
+			this->GetVerticesLidList(&lidlist[0]);
+
+			/*Create transient input: */
+			for(int t=0;t<ncols;t++){ //ncols is the number of times
+
+				/*create input values: */
+				for(int i=0;i<6;i++){
+					int row=this->vertices[i]->Sid();
+					values[i]=matrix[ncols*row+t];
+				}
+
+				/*time:*/
+				IssmDouble time=matrix[(nrows-1)*ncols+t];
+
+				transientinput->AddPentaTimeInput(t,NUMVERTICES,&lidlist[0],&values[0],P1Enum);
+			}
+			break;
+
+		case ElementEnum:
+			/*Get value for the element: */
+			for(int t=0;t<ncols;t++){ //ncols is the number of times
+				IssmDouble value=matrix[ncols*(this->Sid())+t];
+				IssmDouble time=matrix[(nrows-1)*ncols+t];
+				transientinput->AddPentaTimeInput(t,1,&(this->lid),&value,P0Enum);
+			}
+			break;
+
+		default:
+			_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
+	}
+
+}
+/*}}}*/
+void       Penta::InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*{{{*/
+
+	int i,j;
+
+	/*Check that name is an element input*/
+	if(!IsInputEnum(name)) _error_("Enum "<<EnumToStringx(name)<<" is not in IsInput");
+
+	switch(type){
+
+		case VertexEnum:
+
+			/*New PentaInput*/
+			IssmDouble values[6];
+
+			/*Get values on the 6 vertices*/
+			for (i=0;i<6;i++){
+				values[i]=vector[this->vertices[i]->Sid()]; //careful, vector of values here is not parallel distributed, but serial distributed (from a serial Dakota core!)
+			}
+
+			/*Branch on the specified type of update: */
+			switch(name){
+				case ThicknessEnum:
+					/*Update thickness + surface: assume bed is constant. On ice shelves, takes hydrostatic equilibrium*/
+					IssmDouble  thickness[6];
+					IssmDouble  thickness_init[6];
+					IssmDouble  hydrostatic_ratio[6];
+					IssmDouble  surface[6];
+					IssmDouble  bed[6];
+
+					/*retrieve inputs: */
+					Element::GetInputListOnVertices(&thickness_init[0],ThicknessEnum);
+					Element::GetInputListOnVertices(&hydrostatic_ratio[0],GeometryHydrostaticRatioEnum);
+					Element::GetInputListOnVertices(&bed[0],BaseEnum);
+					Element::GetInputListOnVertices(&surface[0],SurfaceEnum);
+
+					/*build new thickness: */
+//					for(j=0;j<6;j++)thickness[j]=values[j];
+
+					/*build new bed and surface: */
+					if (this->IsAllFloating()){
+						/*hydrostatic equilibrium: */
+						IssmDouble rho_ice,rho_water,di;
+						rho_ice=this->FindParam(MaterialsRhoIceEnum);
+						rho_water=this->FindParam(MaterialsRhoSeawaterEnum);
+
+						di=rho_ice/rho_water;
+
+						/*build new thickness: */
+						for (j=0; j<6; j++) {
+						/*  for observed/interpolated/hydrostatic thickness, remove scaling from any hydrostatic thickness  */
+							if     (hydrostatic_ratio[j] >= 0.)
+								thickness[j]=values[j]-(values[j]/thickness_init[j]-1.)*hydrostatic_ratio[j]*surface[j]/(1.-di);
+						/*  for minimum thickness, don't scale  */
+							else
+								thickness[j]=thickness_init[j];
+
+						/*  check the computed thickness and update bed  */
+							if (thickness[j] < 0.)
+								thickness[j]=1./(1.-di);
+							bed[j]=surface[j]-thickness[j];
+						}
+
+//						for(j=0;j<6;j++){
+//							surface[j]=(1-di)*thickness[j];
+//							bed[j]=-di*thickness[j];
+//						}
+					}
+					else{
+						/*build new thickness: */
+						for (j=0; j<6; j++) {
+						/*  for observed thickness, use scaled value  */
+							if(hydrostatic_ratio[j] >= 0.)
+								thickness[j]=values[j];
+						/*  for minimum thickness, don't scale  */
+							else
+								thickness[j]=thickness_init[j];
+						}
+
+						/*update bed on grounded ice: */
+//						for(j=0;j<6;j++)surface[j]=bed[j]+thickness[j];
+						for(j=0;j<6;j++)bed[j]=surface[j]-thickness[j];
+					}
+
+					/*Add new inputs: */
+					this->AddInput(ThicknessEnum,thickness,P1Enum);
+					this->AddInput(BaseEnum,bed,P1Enum);
+					this->AddInput(SurfaceEnum,surface,P1Enum);
+					break;
+
+				default:
+					this->AddInput(name,values,P1Enum);
+			}
+			break;
+
+		case ElementEnum:
+			IssmDouble value;
+			/*Get value for the element: */
+			value=vector[this->Sid()]; //careful, vector of values here is not parallel distributed, but serial distributed (from a serial Dakota core!)
+			this->AddInput(name,&value,P0Enum);
+			break;
+
+		default:
+			_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
+	}
+
+}
+/*}}}*/
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Penta.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Penta.h	(revision 27955)
@@ -0,0 +1,244 @@
+/*! \file Penta.h
+ *  \brief: header file for penta object
+ */
+
+#ifndef _PENTA_H_
+#define _PENTA_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Element.h"
+#include "./ElementHook.h"
+#include "./PentaRef.h"
+class Object;
+class Parameters;
+class Results;
+class Inputs;
+class Input;
+class IoModel;
+class Node;
+class Material;
+class Matlitho;
+class Tria;
+class ElementMatrix;
+class ElementVector;
+class GaussPenta;
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/Enum/Enum.h"
+/*}}}*/
+
+class Penta: public Element,public ElementHook,public PentaRef{
+
+	public:
+
+		Penta      **verticalneighbors;           // 2 neighbors: first one under, second one above
+
+		/*Penta constructors and destructor: {{{*/
+		Penta(){};
+		Penta(int penta_id,int penta_sid,int penta_lid,IoModel* iomodel,int nummodels);
+		~Penta();
+		/*}}}*/
+		/*Object virtual functions definitions: {{{*/
+		Object *copy();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+		/*}}}*/
+		/*Penta routines:{{{*/
+		void           AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum);
+		void           AddInput(int input_enum, IssmDouble* values, int interpolation_enum);
+		void           AddControlInput(int input_enum,Inputs* inputs,IoModel* iomodel,IssmDouble* values,IssmDouble* values_min,IssmDouble* values_max, int interpolation_enum,int id);
+		void           ControlInputExtrude(int enum_type,int start);
+		void           ComputeSigmaVM(void);
+		void           DatasetInputExtrude(int enum_type,int start);
+		void           DatasetInputCreate(IssmDouble* array,int M,int N,int* individual_enums,int num_inputs,Inputs* inputs,IoModel* iomodel,int input_enum);
+		void           AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part);
+		void           BasalNodeIndices(int* pnumindices,int** pindices,int finiteelement);
+		void           CalvingRateVonmises();
+		void           CalvingRateLevermann();
+		void           CalvingFluxLevelset();
+		void           CalvingMeltingFluxLevelset();
+		IssmDouble     CharacteristicLength(void){_error_("not implemented yet");};
+		void           ComputeBasalStress(void);
+		void           ComputeDeviatoricStressTensor();
+		void           ComputeEsaStrainAndVorticity(){_error_("not implemented yet!");};
+		void           ComputeSigmaNN(){_error_("not implemented yet");};
+		void           ComputeStressTensor();
+		//void           ComputeMeanEla(IssmDouble* paltitude, int* pcounter);
+		void           Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters,Inputs* inputsin);
+		void           ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index,int offset,int M,int N,int interp);
+		void           ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum,int control_interp);
+		void				CreateDistanceInputFromSegmentlist(IssmDouble* distances,int distanceenum);
+		ElementMatrix* CreateBasalMassMatrix(void);
+		void           CreateInputTimeAverage(int transientinput_enum,int averagedinput_enum,IssmDouble start_time,IssmDouble end_time,int averaging_method);
+		void           ElementResponse(IssmDouble* presponse,int response_enum);
+		void           ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze,Vector<IssmDouble>* vareae,bool spherical=false){_error_("not implemented yet");};
+		void           ElementCoordinates(Vector<IssmDouble>* vlonge,Vector<IssmDouble>* vlate,Vector<IssmDouble>* vareae){_error_("not implemented yet");};
+		void           ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz);
+		int            FiniteElement(void);
+		IssmDouble     FloatingArea(bool scaled);
+		void           FSContactMigration(Vector<IssmDouble>* vertex_sigmann,Vector<IssmDouble>* vertex_waterpressure);
+		IssmDouble     GetArea3D(void){_error_("not implemented yet!");};
+		IssmDouble     GetAreaSpherical(void){_error_("not implemented yet!");};
+		void           GetAreaCoordinates(IssmDouble *area_coordinates,IssmDouble* xyz_zero,IssmDouble* xyz_list,int numpoints);
+		IssmDouble     GetTriangleAreaSpherical(IssmDouble xyz_list[3][3]){_error_("not implemented yet");};
+		Element*       GetBasalElement(void);
+		Penta*         GetBasalPenta(void);
+		int            GetElementType(void);
+		void           GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating);
+		IssmDouble     GetGroundedPortion(IssmDouble* xyz_list);
+		void           GetFractionGeometry(IssmDouble* weights, IssmDouble* pphi, int* ppoint1,IssmDouble* pfraction1,IssmDouble* pfraction2, bool* ptrapezeisnegative, IssmDouble* gl){_error_("not implemented yet");};
+		void           GetFractionGeometry2D(IssmDouble* weights, IssmDouble* pphi, int* ppoint1,IssmDouble* pfraction1,IssmDouble* pfraction2, bool* ptrapezeisnegative, IssmDouble* gl);
+		void       GetNodalWeightsAndAreaAndCentroidsFromLeveset(IssmDouble* loadweights, IssmDouble* ploadarea, IssmDouble* platbar, IssmDouble* plongbar, IssmDouble late, IssmDouble longe, IssmDouble area,  int levelsetenum){_error_("not implemented yet");};
+		void       GetNodalWeightsAndAreaAndCentroidsFromLeveset(IssmDouble* loadweights, IssmDouble* ploadarea, IssmDouble* platbar, IssmDouble* plongbar, IssmDouble late, IssmDouble longe, IssmDouble area, int levelset1enum, int levelset2enum){_error_("not implemented yet");};
+		void        GetBarycenterFromLevelset(IssmDouble* platbar, IssmDouble* plongbar,IssmDouble phi,IssmDouble fraction1,IssmDouble fraction2,IssmDouble late, IssmDouble longe, int point1,int istrapeze1, IssmDouble planetradius){_error_("not implemented yet");};
+		IssmDouble		GetIcefrontArea();
+		void           GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum);
+		Input*        GetInput(int enumtype);
+		Input*        GetInput(int enumtype,IssmDouble time);
+		Input*        GetInput(int inputenum,IssmDouble start_time,IssmDouble end_time,int averaging_method){_error_("not implemented yet!");};
+		void        GetInputListOnVertices(IssmDouble* pvalue,Input* input,IssmDouble default_value);
+		void        GetInputListOnNodes(IssmDouble* pvalue,Input* input,IssmDouble default_value);
+		DatasetInput* GetDatasetInput(int inputenum);
+		void           GetInputValue(IssmDouble* pvalue,Vertex* vertex,int enumtype);
+		void           GetInputValue(IssmDouble* pvalue,Node* node,int enumtype);
+		void           GetLevelCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum,IssmDouble level){_error_("not implemented yet");};
+		void           GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* levelsetvalues){_error_("not implemented yet");};
+		void				GetLevelsetIntersectionBase(int** pindices, int* pnumiceverts, IssmDouble* fraction, int levelset_enum, IssmDouble level);
+		int            GetNumberOfNodes(void);
+		int            GetNumberOfNodes(int enum_type);
+		int            GetNumberOfVertices(void);
+		Penta*         GetLowerPenta(void);
+		Penta*         GetUpperPenta(void);
+		void           GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,int N,const char* data,int offset);
+		int            GetVertexIndex(Vertex* vertex);
+		void           GetVerticesCoordinatesBase(IssmDouble** pxyz_list);
+		void           GetVerticesCoordinatesTop(IssmDouble** pxyz_list);
+		IssmDouble     GroundedArea(bool scaled);
+		IssmDouble     GroundinglineMassFlux(bool scaled);
+		IssmDouble		IcefrontMassFluxLevelset(bool scaled);
+		IssmDouble     IceVolume(bool scaled);
+		IssmDouble     IceVolumeAboveFloatation(bool scaled);
+		void           InputDepthAverageAtBase(int enum_type,int average_enum_type);
+		void	         InputExtrude(int enum_type,int start);
+		void           InputUpdateFromIoModel(int index, IoModel* iomodel);
+		void           InputUpdateFromSolutionOneDof(IssmDouble* solutiong,int enum_type);
+		void           InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solutiong,int enum_type);
+		void           InputUpdateFromVector(IssmDouble* vector, int name, int type);
+		bool           IsFaceOnBoundary(void){_error_("not implemented yet");};
+		bool           IsIcefront(void);
+		bool           IsNodeOnShelfFromFlags(IssmDouble* flags);
+		bool           IsZeroLevelset(int levelset_enum);
+		void           JacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void           JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
+		void           JacobianDeterminantLine(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void           JacobianDeterminantSurface(IssmDouble*  pJdet, IssmDouble* xyz_list,Gauss* gauss);
+		void           JacobianDeterminantTop(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
+		IssmDouble     Masscon(IssmDouble* levelset){_error_("not implemented yet");};
+		IssmDouble     MassFlux(IssmDouble* segment);
+		IssmDouble     MassFlux(IssmDouble x1,IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id);
+		IssmDouble     MinEdgeLength(IssmDouble* xyz_list);
+		IssmDouble     Misfit(int modelenum,int observationenum,int weightsenum){_error_("not implemented yet");};
+		IssmDouble     MisfitArea(int weightsenum){_error_("not implemented yet");};
+		void           MovingFrontalVelocity(void);
+		Gauss*         NewGauss(void);
+		Gauss*         NewGauss(int order);
+		Gauss*         NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order){_error_("not implemented yet");};
+		Gauss*         NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert);
+		Gauss*         NewGaussBase(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz);
+		Gauss*         NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order);
+		Gauss*         NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,int order){_error_("not implemented yet");};
+		Gauss*         NewGauss(IssmDouble fraction1,IssmDouble fraction2,int order){_error_("not implemented yet");};
+		Gauss*         NewGaussBase(int order);
+		Gauss*         NewGaussLine(int vertex1,int vertex2,int order);
+		Gauss*         NewGaussTop(int order);
+		void           NodalFunctions(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void           NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void           NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void           NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsP1(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void           NodalFunctionsP2(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsTensor(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss);
+		void	         NormalBase(IssmDouble* bed_normal, IssmDouble* xyz_list);
+		void           NormalSection(IssmDouble* normal,IssmDouble* xyz_list);
+		void           NormalSectionBase(IssmDouble* normal,IssmDouble* xyz_list);
+		void	         NormalTop(IssmDouble* bed_normal, IssmDouble* xyz_list);
+		int            NodalValue(IssmDouble* pvalue, int index, int natureofdataenum);
+		int            NumberofNodesPressure(void);
+		int            NumberofNodesVelocity(void);
+		void           PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding);
+		int            PressureInterpolation();
+      void           Recover3DMOLHOInput(int targetVel_enum, int numnodes, IssmDouble* vb,  IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s);
+		void           ReduceMatrices(ElementMatrix* Ke,ElementVector* pe);
+		void           ResetFSBasalBoundaryCondition(void);
+		void           ResetHooks();
+		void           SetElementInput(int enum_in,IssmDouble value);
+		void           SetElementInput(int enum_in,IssmDouble value,int type){_error_("not implemented yet");};
+		void           SetElementInput(Inputs* inputs,int enum_in,IssmDouble value);
+		void           SetElementInput(Inputs* inputs,int enum_in,IssmDouble value,int type){_error_("not implemented yet");};
+		void           SetElementInput(Inputs* inputs,int numindices,int* indices,IssmDouble* values,int enum_in);
+		void           SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index,int offset, int M,int N);
+		void           SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters);
+		void           SetTemporaryElementType(int element_type_in);
+	   Element*       SpawnBasalElement(bool depthaverage_materials);
+		Element*       SpawnTopElement(void);
+		bool           IsSpawnedElement(void);
+		Tria*	         SpawnTria(int index1,int index2,int index3);
+		IssmDouble     StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa);
+		void           StabilizationParameterAnisotropic(IssmDouble* tau_parameter_anisotropic, IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble hx, IssmDouble hy, IssmDouble hz, IssmDouble kappa);
+		void           StressIntensityFactor();
+		void           StrainRateparallel();
+		void           StrainRateperpendicular();
+		IssmDouble     SurfaceArea(void);
+		void       	   TangentBase(IssmDouble* bed_tangent,IssmDouble* bed_normal);
+		int            TensorInterpolation(){_error_("not implemented yet");};
+		IssmDouble     TimeAdapt();
+		IssmDouble		TotalCalvingFluxLevelset(bool scaled);
+		IssmDouble		TotalCalvingMeltingFluxLevelset(bool scaled);
+		IssmDouble     TotalFloatingBmb(bool scaled);
+		IssmDouble     TotalGroundedBmb(bool scaled);
+		IssmDouble     TotalSmb(bool scaled);
+		IssmDouble     TotalSmbMelt(bool scaled);
+		IssmDouble     TotalSmbRefreeze(bool scaled);
+		void           Update(Inputs* inputs,int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement);
+		void           UpdateConstraintsExtrudeFromBase(void);
+		void           UpdateConstraintsExtrudeFromTop(void);
+		int            UpdatePotentialUngrounding(IssmDouble* potential_sheet_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf);
+		void           ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss);
+		void           ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss);
+		int            VelocityInterpolation();
+		int            VertexConnectivity(int vertexindex);
+		void           VerticalSegmentIndices(int** pindices,int* pnumseg);
+		void           VerticalSegmentIndicesBase(int** pindices,int* pnumseg);
+		void           ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
+
+		#ifdef _HAVE_DAKOTA_
+		void  InputUpdateFromMatrixDakota(IssmDouble* matrix, int nows, int ncols, int name, int type);
+		void  InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type);
+		void  InputScaleFromDakota(IssmDouble* distributed_values, IssmDouble* partition, int npart, int nt, int name);
+
+		#endif
+
+		#ifdef _HAVE_ESA_
+		void    EsaGeodetic2D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,Vector<IssmDouble>* pX,Vector<IssmDouble>* pY,IssmDouble* xx,IssmDouble* yy){_error_("not implemented yet!");};
+		void    EsaGeodetic3D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz){_error_("not implemented yet!");};
+		#endif
+		#ifdef _HAVE_SEALEVELCHANGE_
+		void       GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,Matlitho* litho, IssmDouble* x,IssmDouble* y){_error_("not implemented yet");};
+		void       SealevelchangeGeometrySubElementKernel(SealevelGeometry* slgeom){_error_("not implemented yet");};
+		void       SealevelchangeShift(GrdLoads* loads,  IssmDouble offset, SealevelGeometry* slgeom){_error_("not implemented yet");};
+		void       SealevelchangeGeometryInitial(IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae, int* lids,int* vcount){_error_("not implemented yet");};
+		void       SealevelchangeGeometryCentroidLoads(SealevelGeometry* slgeom, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae){_error_("not implemented yet");};
+		void       SealevelchangeGeometrySubElementLoads(SealevelGeometry* slgeom, IssmDouble* areae){_error_("not implemented yet");};
+		void       SealevelchangeBarystaticLoads(GrdLoads* loads,  BarystaticContributions* barycontrib, SealevelGeometry* slgeom){_error_("not implemented yet");};
+		void       SealevelchangeConvolution(IssmDouble* sealevelpercpu, GrdLoads* loads, IssmDouble* rotationvector,SealevelGeometry* slgeom){_error_("not implemented yet");};
+		void       SealevelchangeOceanAverage(GrdLoads* loads, Vector<IssmDouble>* oceanareas, Vector<IssmDouble>* subelementoceanareas, IssmDouble* sealevelpercpu, SealevelGeometry* slgeom){_error_("not implemented yet");};
+		void       SealevelchangeDeformationConvolution(IssmDouble* sealevelpercpu, GrdLoads* loads,  IssmDouble* rotationvector,SealevelGeometry* slgeom){_error_("not implemented yet");};
+		void       SealevelchangeUpdateViscousFields(IssmDouble lincoeff, int newindex, int offset){_error_("not implemented yet");};
+		#endif
+
+		/*}}}*/
+};
+#endif  /* _PENTA_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/PentaRef.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/PentaRef.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/PentaRef.cpp	(revision 27955)
@@ -0,0 +1,1356 @@
+/*!\file PentaRef.cpp
+ * \brief: implementation of the PentaRef object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMNODESP0    1
+#define NUMNODESP1    6
+#define NUMNODESP1_2d 3
+#define NUMNODESP1b   7
+#define NUMNODESP1xP2 9
+#define NUMNODESP1xP3 12
+#define NUMNODESP1xP4 15
+#define NUMNODESP2xP1 12
+#define NUMNODESP2    18
+#define NUMNODESP2b   19
+#define NUMNODESP2xP4 30
+#define NUMNODESMAX   30
+
+/*Object constructors and destructor*/
+PentaRef::PentaRef(){/*{{{*/
+}
+/*}}}*/
+PentaRef::~PentaRef(){/*{{{*/
+}
+/*}}}*/
+
+/*Reference Element numerics*/
+void PentaRef::BasalNodeIndices(int* pnumindices,int** pindices,int finiteelement){/*{{{*/
+
+	/*Output*/
+	int  numindices;
+	int* indices = NULL;
+
+	switch(finiteelement){
+		case P1Enum: case P1DGEnum:
+			numindices = 3;
+			indices    = xNew<int>(numindices);
+			indices[0] = 0;
+			indices[1] = 1;
+			indices[2] = 2;
+			break;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			numindices = 3;
+			indices    = xNew<int>(numindices);
+			indices[0] = 0;
+			indices[1] = 1;
+			indices[2] = 2;
+			break;
+		case P2xP1Enum:
+			numindices = 6;
+			indices    = xNew<int>(numindices);
+			indices[0] = 0;
+			indices[1] = 1;
+			indices[2] = 2;
+			indices[3] = 6;
+			indices[4] = 7;
+			indices[5] = 8;
+			break;
+		case P1xP2Enum:
+			numindices = 3;
+			indices    = xNew<int>(numindices);
+			indices[0] = 0;
+			indices[1] = 1;
+			indices[2] = 2;
+			break;
+		case P1xP3Enum:
+			numindices = 3;
+			indices    = xNew<int>(numindices);
+			indices[0] = 0;
+			indices[1] = 1;
+			indices[2] = 2;
+			break;
+		case P1xP4Enum:
+			numindices = 3;
+			indices    = xNew<int>(numindices);
+			indices[0] = 0;
+			indices[1] = 1;
+			indices[2] = 2;
+			break;
+		case P2Enum:
+			numindices = 6;
+			indices    = xNew<int>(numindices);
+			indices[0] = 0;
+			indices[1] = 1;
+			indices[2] = 2;
+			indices[3] = 9;
+			indices[4] = 10;
+			indices[5] = 11;
+			break;
+		case P2bubbleEnum:
+			numindices = 6;
+			indices    = xNew<int>(numindices);
+			indices[0] = 0;
+			indices[1] = 1;
+			indices[2] = 2;
+			indices[3] = 9;
+			indices[4] = 10;
+			indices[5] = 11;
+			break;
+		case P2xP4Enum:
+			numindices = 6;
+			indices    = xNew<int>(numindices);
+			indices[0] = 0;
+			indices[1] = 1;
+			indices[2] = 2;
+			indices[3] = 9;
+			indices[4] = 10;
+			indices[5] = 11;
+			break;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+	/*Assign output pointer*/
+	*pnumindices = numindices;
+	*pindices    = indices;
+}
+/*}}}*/
+void PentaRef::GetInputDerivativeValue(IssmDouble* p, IssmDouble* plist,IssmDouble* xyz_list, Gauss* gauss,int finiteelement){/*{{{*/
+	/*From node values of parameter p (p_list[0], p_list[1], p_list[2],
+	 * p_list[3], p_list[4] and p_list[4]), return parameter derivative value at
+	 * gaussian point specified by gauss_coord:
+	 *   dp/dx=p_list[0]*dh1/dx+p_list[1]*dh2/dx+p_list[2]*dh3/dx+p_list[3]*dh4/dx+p_list[4]*dh5/dx+p_list[5]*dh6/dx;
+	 *   dp/dy=p_list[0]*dh1/dy+p_list[1]*dh2/dy+p_list[2]*dh3/dy+p_list[3]*dh4/dy+p_list[4]*dh5/dy+p_list[5]*dh6/dy;
+	 *   dp/dz=p_list[0]*dh1/dz+p_list[1]*dh2/dz+p_list[2]*dh3/dz+p_list[3]*dh4/dz+p_list[4]*dh5/dz+p_list[5]*dh6/dz;
+	 *
+	 *   p is a vector of size 3x1 already allocated.
+	 *
+	 * WARNING: For a significant gain in performance, it is better to use
+	 * static memory allocation instead of dynamic.
+	 */
+
+	/*Allocate derivatives of basis functions*/
+	IssmDouble  dbasis[3*NUMNODESMAX];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+	_assert_(numnodes<=NUMNODESMAX);
+
+	/*Get basis functions derivatives at this point*/
+	GetNodalFunctionsDerivatives(&dbasis[0],xyz_list,gauss,finiteelement);
+
+	/*Calculate parameter for this Gauss point*/
+	IssmDouble dpx=0.;
+	IssmDouble dpy=0.;
+	IssmDouble dpz=0.;
+	for(int i=0;i<numnodes;i++) dpx += dbasis[0*numnodes+i]*plist[i];
+	for(int i=0;i<numnodes;i++) dpy += dbasis[1*numnodes+i]*plist[i];
+	for(int i=0;i<numnodes;i++) dpz += dbasis[2*numnodes+i]*plist[i];
+
+	/*Assign values*/
+	p[0]=dpx;
+	p[1]=dpy;
+	p[2]=dpz;
+}
+/*}}}*/
+void PentaRef::GetInputValue(IssmDouble* pvalue,IssmDouble* plist,Gauss* gauss,int finiteelement){/*{{{*/
+	/* WARNING: For a significant gain in performance, it is better to use
+	 * static memory allocation instead of dynamic.*/
+
+	/*Allocate basis functions*/
+	IssmDouble  basis[NUMNODESMAX];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+	_assert_(numnodes<=NUMNODESMAX);
+
+	/*Get basis functions at this point*/
+	GetNodalFunctions(&basis[0],gauss,finiteelement);
+
+	/*Calculate parameter for this Gauss point*/
+	IssmDouble value =0.;
+	for(int i=0;i<numnodes;i++) value += basis[i]*plist[i];
+
+	/*Assign output pointer*/
+	*pvalue = value;
+}
+/*}}}*/
+void PentaRef::GetJacobian(IssmDouble* J, IssmDouble* xyz_list,Gauss* gauss_in){/*{{{*/
+	/*The Jacobian is constant over the element, discard the gaussian points. 
+	 * J is assumed to have been allocated of size 2x2.*/
+
+	IssmDouble A1,A2,A3;  // area coordinates
+	IssmDouble xi,eta,zi; // parametric coordinates
+	IssmDouble x1,x2,x3,x4,x5,x6;
+	IssmDouble y1,y2,y3,y4,y5,y6;
+	IssmDouble z1,z2,z3,z4,z5,z6;
+	IssmDouble j_const_reciprocal; // SQRT3/12.0
+
+	/*Cast gauss to GaussPenta*/
+	_assert_(gauss_in->Enum()==GaussPentaEnum);
+	GaussPenta* gauss = xDynamicCast<GaussPenta*>(gauss_in);
+
+	/*Figure out xi,eta and zi (parametric coordinates), for this gaussian point: */
+	A1  = gauss->coord1;
+	A2  = gauss->coord2;
+	A3  = gauss->coord3;
+	xi  = A2-A1;
+	eta = SQRT3*A3;
+	zi  = gauss->coord4;
+
+	x1=xyz_list[3*0+0];
+	x2=xyz_list[3*1+0];
+	x3=xyz_list[3*2+0];
+	x4=xyz_list[3*3+0];
+	x5=xyz_list[3*4+0];
+	x6=xyz_list[3*5+0];
+
+	y1=xyz_list[3*0+1];
+	y2=xyz_list[3*1+1];
+	y3=xyz_list[3*2+1];
+	y4=xyz_list[3*3+1];
+	y5=xyz_list[3*4+1];
+	y6=xyz_list[3*5+1];
+
+	z1=xyz_list[3*0+2];
+	z2=xyz_list[3*1+2];
+	z3=xyz_list[3*2+2];
+	z4=xyz_list[3*3+2];
+	z5=xyz_list[3*4+2];
+	z6=xyz_list[3*5+2];
+
+	j_const_reciprocal=SQRT3/12;
+
+	J[3*0+0] = 0.25*(x1-x2-x4+x5)*zi+0.25*(-x1+x2-x4+x5);
+	J[3*1+0] = j_const_reciprocal*(x1+x2-2*x3-x4-x5+2*x6)*zi+j_const_reciprocal*(-x1-x2+2*x3-x4-x5+2*x6);
+	J[3*2+0] = j_const_reciprocal*(x1+x2-2*x3-x4-x5+2*x6)*eta+0.25*(x1-x2-x4+x5)*xi +0.25*(-x1+x5-x2+x4);
+
+	J[3*0+1] = 0.25*(y1-y2-y4+y5)*zi+0.25*(-y1+y2-y4+y5);
+	J[3*1+1] = j_const_reciprocal*(y1+y2-2*y3-y4-y5+2*y6)*zi+j_const_reciprocal*(-y1-y2+2*y3-y4-y5+2*y6);
+	J[3*2+1] = j_const_reciprocal*(y1+y2-2*y3-y4-y5+2*y6)*eta+0.25*(y1-y2-y4+y5)*xi+0.25*(y4-y1+y5-y2);
+
+	J[3*0+2] = 0.25*(z1-z2-z4+z5)*zi+0.25*(-z1+z2-z4+z5);
+	J[3*1+2] = j_const_reciprocal*(z1+z2-2*z3-z4-z5+2*z6)*zi+j_const_reciprocal*(-z1-z2+2*z3-z4-z5+2*z6);
+	J[3*2+2] = j_const_reciprocal*(z1+z2-2*z3-z4-z5+2*z6)*eta+0.25*(z1-z2-z4+z5)*xi+0.25*(-z1+z5-z2+z4);
+}
+/*}}}*/
+void PentaRef::GetJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*On a penta, Jacobian varies according to coordinates. We need to get the Jacobian, and take 
+	 * the determinant of it: */
+	IssmDouble J[3][3];
+
+	/*Get Jacobian*/
+	GetJacobian(&J[0][0],xyz_list,gauss);
+
+	/*Get Determinant*/
+	Matrix3x3Determinant(Jdet,&J[0][0]);
+	if(*Jdet<0) _error_("negative jacobian determinant!");
+
+}
+/*}}}*/
+void PentaRef::GetJacobianInvert(IssmDouble* Jinv, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	/*Jacobian*/
+	IssmDouble J[3][3];
+
+	/*Call Jacobian routine to get the jacobian:*/
+	GetJacobian(&J[0][0], xyz_list, gauss);
+
+	/*Invert Jacobian matrix: */
+	Matrix3x3Invert(Jinv,&J[0][0]);
+}
+/*}}}*/
+void PentaRef::GetNodalFunctions(IssmDouble* basis,Gauss* gauss_in,int finiteelement){/*{{{*/
+	/*This routine returns the values of the nodal functions  at the gaussian point.*/
+
+	_assert_(basis);
+
+	/*Cast gauss to GaussPenta*/
+	_assert_(gauss_in->Enum()==GaussPentaEnum);
+	GaussPenta* gauss = xDynamicCast<GaussPenta*>(gauss_in);
+
+	/*Get current coordinates in reference element*/
+	IssmDouble zeta=gauss->coord4;
+
+	switch(finiteelement){
+		case P0Enum: 
+			basis[0]=1.;
+			return;
+		case P1Enum: case P1DGEnum:
+			basis[0]=gauss->coord1*(1.-zeta)/2.;
+			basis[1]=gauss->coord2*(1.-zeta)/2.;
+			basis[2]=gauss->coord3*(1.-zeta)/2.;
+			basis[3]=gauss->coord1*(1.+zeta)/2.;
+			basis[4]=gauss->coord2*(1.+zeta)/2.;
+			basis[5]=gauss->coord3*(1.+zeta)/2.;
+			return;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			basis[0]=gauss->coord1*(1.-zeta)/2.;
+			basis[1]=gauss->coord2*(1.-zeta)/2.;
+			basis[2]=gauss->coord3*(1.-zeta)/2.;
+			basis[3]=gauss->coord1*(1.+zeta)/2.;
+			basis[4]=gauss->coord2*(1.+zeta)/2.;
+			basis[5]=gauss->coord3*(1.+zeta)/2.;
+			basis[6]=27.*gauss->coord1*gauss->coord2*gauss->coord3*(1.+zeta)*(1.-zeta);
+			return;
+			#ifndef _HAVE_AD_
+		case P2xP1Enum:
+			/*Corner nodes*/
+			basis[ 0]=gauss->coord1*(2.*gauss->coord1-1.)*(1.-zeta)/2.;
+			basis[ 1]=gauss->coord2*(2.*gauss->coord2-1.)*(1.-zeta)/2.;
+			basis[ 2]=gauss->coord3*(2.*gauss->coord3-1.)*(1.-zeta)/2.;
+			basis[ 3]=gauss->coord1*(2.*gauss->coord1-1.)*(1.+zeta)/2.;
+			basis[ 4]=gauss->coord2*(2.*gauss->coord2-1.)*(1.+zeta)/2.;
+			basis[ 5]=gauss->coord3*(2.*gauss->coord3-1.)*(1.+zeta)/2.;
+			/*mid-sides of triangles*/
+			basis[ 6]=4.*gauss->coord3*gauss->coord2*(1.-zeta)/2.;
+			basis[ 7]=4.*gauss->coord3*gauss->coord1*(1.-zeta)/2.;
+			basis[ 8]=4.*gauss->coord1*gauss->coord2*(1.-zeta)/2.;
+			basis[ 9]=4.*gauss->coord3*gauss->coord2*(1.+zeta)/2.;
+			basis[10]=4.*gauss->coord3*gauss->coord1*(1.+zeta)/2.;
+			basis[11]=4.*gauss->coord1*gauss->coord2*(1.+zeta)/2.;
+			return;
+		case P1xP2Enum:
+			/*Corner nodes*/
+			basis[ 0]=gauss->coord1*zeta*(zeta-1.)/2.;
+			basis[ 1]=gauss->coord2*zeta*(zeta-1.)/2.;
+			basis[ 2]=gauss->coord3*zeta*(zeta-1.)/2.;
+			basis[ 3]=gauss->coord1*zeta*(zeta+1.)/2.;
+			basis[ 4]=gauss->coord2*zeta*(zeta+1.)/2.;
+			basis[ 5]=gauss->coord3*zeta*(zeta+1.)/2.;
+			/*mid-sides of quads*/
+			basis[ 6]=gauss->coord1*(1.-zeta*zeta);
+			basis[ 7]=gauss->coord2*(1.-zeta*zeta);
+			basis[ 8]=gauss->coord3*(1.-zeta*zeta);
+			return;
+		case P2Enum:
+			/*Corner nodes*/
+			basis[ 0]=gauss->coord1*(2.*gauss->coord1-1.)*zeta*(zeta-1.)/2.;
+			basis[ 1]=gauss->coord2*(2.*gauss->coord2-1.)*zeta*(zeta-1.)/2.;
+			basis[ 2]=gauss->coord3*(2.*gauss->coord3-1.)*zeta*(zeta-1.)/2.;
+			basis[ 3]=gauss->coord1*(2.*gauss->coord1-1.)*zeta*(zeta+1.)/2.;
+			basis[ 4]=gauss->coord2*(2.*gauss->coord2-1.)*zeta*(zeta+1.)/2.;
+			basis[ 5]=gauss->coord3*(2.*gauss->coord3-1.)*zeta*(zeta+1.)/2.;
+			/*mid-sides of quads*/
+			basis[ 6]=gauss->coord1*(2.*gauss->coord1-1.)*(1.-zeta*zeta);
+			basis[ 7]=gauss->coord2*(2.*gauss->coord2-1.)*(1.-zeta*zeta);
+			basis[ 8]=gauss->coord3*(2.*gauss->coord3-1.)*(1.-zeta*zeta);
+			/*mid-sides of triangles*/
+			basis[ 9]=4.*gauss->coord3*gauss->coord2*zeta*(zeta-1.)/2.;
+			basis[10]=4.*gauss->coord3*gauss->coord1*zeta*(zeta-1.)/2.;
+			basis[11]=4.*gauss->coord1*gauss->coord2*zeta*(zeta-1.)/2.;
+			basis[12]=4.*gauss->coord3*gauss->coord2*zeta*(zeta+1.)/2.;
+			basis[13]=4.*gauss->coord3*gauss->coord1*zeta*(zeta+1.)/2.;
+			basis[14]=4.*gauss->coord1*gauss->coord2*zeta*(zeta+1.)/2.;
+			/*quad faces*/
+			basis[15]=4.*gauss->coord3*gauss->coord2*(1.-zeta*zeta);
+			basis[16]=4.*gauss->coord3*gauss->coord1*(1.-zeta*zeta);
+			basis[17]=4.*gauss->coord1*gauss->coord2*(1.-zeta*zeta);
+			return;
+		case P2bubbleEnum: case P2bubblecondensedEnum:
+			/*Corner nodes*/
+			basis[ 0]=gauss->coord1*(2.*gauss->coord1-1.)*zeta*(zeta-1.)/2.;
+			basis[ 1]=gauss->coord2*(2.*gauss->coord2-1.)*zeta*(zeta-1.)/2.;
+			basis[ 2]=gauss->coord3*(2.*gauss->coord3-1.)*zeta*(zeta-1.)/2.;
+			basis[ 3]=gauss->coord1*(2.*gauss->coord1-1.)*zeta*(zeta+1.)/2.;
+			basis[ 4]=gauss->coord2*(2.*gauss->coord2-1.)*zeta*(zeta+1.)/2.;
+			basis[ 5]=gauss->coord3*(2.*gauss->coord3-1.)*zeta*(zeta+1.)/2.;
+			/*mid-sides of quads*/
+			basis[ 6]=gauss->coord1*(2.*gauss->coord1-1.)*(1.-zeta*zeta);
+			basis[ 7]=gauss->coord2*(2.*gauss->coord2-1.)*(1.-zeta*zeta);
+			basis[ 8]=gauss->coord3*(2.*gauss->coord3-1.)*(1.-zeta*zeta);
+			/*mid-sides of triangles*/
+			basis[ 9]=4.*gauss->coord3*gauss->coord2*zeta*(zeta-1.)/2.;
+			basis[10]=4.*gauss->coord3*gauss->coord1*zeta*(zeta-1.)/2.;
+			basis[11]=4.*gauss->coord1*gauss->coord2*zeta*(zeta-1.)/2.;
+			basis[12]=4.*gauss->coord3*gauss->coord2*zeta*(zeta+1.)/2.;
+			basis[13]=4.*gauss->coord3*gauss->coord1*zeta*(zeta+1.)/2.;
+			basis[14]=4.*gauss->coord1*gauss->coord2*zeta*(zeta+1.)/2.;
+			/*quad faces*/
+			basis[15]=4.*gauss->coord3*gauss->coord2*(1.-zeta*zeta);
+			basis[16]=4.*gauss->coord3*gauss->coord1*(1.-zeta*zeta);
+			basis[17]=4.*gauss->coord1*gauss->coord2*(1.-zeta*zeta);
+			/*bubble*/
+			basis[18]=27.*gauss->coord1*gauss->coord2*gauss->coord3*(1.+zeta)*(1.-zeta);
+			return;
+		case P2xP4Enum :
+			/*Corner nodes*/
+			basis[ 0]=gauss->coord1*(2.*gauss->coord1-1.)*(2./3.)*(zeta-1.)*(zeta-0.5 )*(zeta)*(zeta+0.5);
+			basis[ 1]=gauss->coord2*(2.*gauss->coord2-1.)*(2./3.)*(zeta-1.)*(zeta-0.5 )*(zeta)*(zeta+0.5);
+			basis[ 2]=gauss->coord3*(2.*gauss->coord3-1.)*(2./3.)*(zeta-1.)*(zeta-0.5 )*(zeta)*(zeta+0.5);
+			basis[ 3]=gauss->coord1*(2.*gauss->coord1-1.)*(2./3.)*(zeta-0.5)*(zeta)*(zeta+0.5)*(zeta +1.);
+			basis[ 4]=gauss->coord2*(2.*gauss->coord2-1.)*(2./3.)*(zeta-0.5)*(zeta)*(zeta+0.5)*(zeta +1.);
+			basis[ 5]=gauss->coord3*(2.*gauss->coord3-1.)*(2./3.)*(zeta-0.5)*(zeta)*(zeta+0.5)*(zeta +1.);
+			/*mid-sides of quads*/
+			basis[ 6]=gauss->coord1*(2.*gauss->coord1-1)*4.*(zeta-1.)*(zeta-0.5)*(zeta+0.5)*(zeta+1.);
+			basis[ 7]=gauss->coord2*(2.*gauss->coord2-1)*4.*(zeta-1.)*(zeta-0.5)*(zeta+0.5)*(zeta+1.);
+			basis[ 8]=gauss->coord3*(2.*gauss->coord3-1)*4.*(zeta-1.)*(zeta-0.5)*(zeta+0.5)*(zeta+1.);
+			/*mid-sides of triangles*/
+			basis[ 9]=4.*gauss->coord2*gauss->coord3*(2./3.)*(zeta-1.)*(zeta-0.5)*zeta*(zeta+0.5);
+			basis[10]=4.*gauss->coord1*gauss->coord3*(2./3.)*(zeta-1.)*(zeta-0.5)*zeta*(zeta+0.5);
+			basis[11]=4.*gauss->coord1*gauss->coord2*(2./3.)*(zeta-1.)*(zeta-0.5)*zeta*(zeta+0.5);
+			basis[12]=4.*gauss->coord2*gauss->coord3*(2./3.)*(zeta-0.5)*zeta*(zeta+0.5)*(zeta+1.);
+			basis[13]=4.*gauss->coord1*gauss->coord3*(2./3.)*(zeta-0.5)*zeta*(zeta+0.5)*(zeta+1.);
+			basis[14]=4.*gauss->coord1*gauss->coord2*(2./3.)*(zeta-0.5)*zeta*(zeta+0.5)*(zeta+1.);
+			/*quarter-sides of quads*/
+			basis[15]=gauss->coord1*(2.*gauss->coord1-1.)*(-8./3.)*(zeta-1.0)*(zeta-0.5)*zeta*(zeta+1.);
+			basis[16]=gauss->coord2*(2.*gauss->coord2-1.)*(-8./3.)*(zeta-1.0)*(zeta-0.5)*zeta*(zeta+1.);
+			basis[17]=gauss->coord3*(2.*gauss->coord3-1.)*(-8./3.)*(zeta-1.0)*(zeta-0.5)*zeta*(zeta+1.);
+			basis[18]=gauss->coord1*(2.*gauss->coord1-1.)*(-8./3.)*(zeta-1.0)*zeta*(zeta+0.5)*(zeta+1.);
+			basis[19]=gauss->coord2*(2.*gauss->coord2-1.)*(-8./3.)*(zeta-1.0)*zeta*(zeta+0.5)*(zeta+1.);
+			basis[20]=gauss->coord3*(2.*gauss->coord3-1.)*(-8./3.)*(zeta-1.0)*zeta*(zeta+0.5)*(zeta+1.);
+			/* mid-sides of interior triangles*/
+			basis[21]=4.*gauss->coord2*gauss->coord3*(-8./3.)*(zeta-1.0)*(zeta-0.5)*zeta*(zeta+1.);
+			basis[22]=4.*gauss->coord1*gauss->coord3*(-8./3.)*(zeta-1.0)*(zeta-0.5)*zeta*(zeta+1.);
+			basis[23]=4.*gauss->coord1*gauss->coord2*(-8./3.)*(zeta-1.0)*(zeta-0.5)*zeta*(zeta+1.);
+			basis[24]=4.*gauss->coord2*gauss->coord3*4.*(zeta-1.0)*(zeta-0.5)*(zeta+0.5)*(zeta+1.);
+			basis[25]=4.*gauss->coord1*gauss->coord3*4.*(zeta-1.0)*(zeta-0.5)*(zeta+0.5)*(zeta+1.);
+			basis[26]=4.*gauss->coord1*gauss->coord2*4.*(zeta-1.0)*(zeta-0.5)*(zeta+0.5)*(zeta+1.);
+			basis[27]=4.*gauss->coord2*gauss->coord3*(-8./3.)*(zeta-1.0)*zeta*(zeta+0.5)*(zeta+1.);
+			basis[28]=4.*gauss->coord1*gauss->coord3*(-8./3.)*(zeta-1.0)*zeta*(zeta+0.5)*(zeta+1.);
+			basis[29]=4.*gauss->coord1*gauss->coord2*(-8./3.)*(zeta-1.0)*zeta*(zeta+0.5)*(zeta+1.);
+			return;
+		case P1xP3Enum :
+			/*Corner nodes*/
+			basis[ 0]=-(9.)/(16.)*gauss->coord1*(zeta-1)*(zeta-1./3.)*(zeta+1./3.);	
+			basis[ 1]=-(9.)/(16.)*gauss->coord2*(zeta-1)*(zeta-1./3.)*(zeta+1./3.);	
+			basis[ 2]=-(9.)/(16.)*gauss->coord3*(zeta-1)*(zeta-1./3.)*(zeta+1./3.);	
+			basis[ 3]=(9.)/(16.)*gauss->coord1*(zeta-1./3.)*(zeta+1./3.)*(zeta+1.);
+			basis[ 4]=(9.)/(16.)*gauss->coord2*(zeta-1./3.)*(zeta+1./3.)*(zeta+1.);
+			basis[ 5]=(9.)/(16.)*gauss->coord3*(zeta-1./3.)*(zeta+1./3.)*(zeta+1.);
+			/*third-sides of quads*/
+			basis[ 6]=(27.)/(16.)*gauss->coord1*(zeta-1)*(zeta-1./3.)*(zeta+1.);
+			basis[ 7]=(27.)/(16.)*gauss->coord2*(zeta-1)*(zeta-1./3.)*(zeta+1.);
+			basis[ 8]=(27.)/(16.)*gauss->coord3*(zeta-1)*(zeta-1./3.)*(zeta+1.);
+			basis[ 9]=-(27.)/(16.)*gauss->coord1*(zeta-1)*(zeta+1./3.)*(zeta+1.);
+			basis[10]=-(27.)/(16.)*gauss->coord2*(zeta-1)*(zeta+1./3.)*(zeta+1.);
+			basis[11]=-(27.)/(16.)*gauss->coord3*(zeta-1)*(zeta+1./3.)*(zeta+1.);
+			return;
+		case P1xP4Enum :
+			/*Corner nodes*/
+			basis[ 0]=gauss->coord1*(2./3.)*(zeta-1.)*(zeta-0.5 )*(zeta)*(zeta+0.5);
+			basis[ 1]=gauss->coord2*(2./3.)*(zeta-1.)*(zeta-0.5 )*(zeta)*(zeta+0.5);
+			basis[ 2]=gauss->coord3*(2./3.)*(zeta-1.)*(zeta-0.5 )*(zeta)*(zeta+0.5);
+			basis[ 3]=gauss->coord1*(2./3.)*(zeta-0.5)*(zeta)*(zeta+0.5)*(zeta +1.);
+			basis[ 4]=gauss->coord2*(2./3.)*(zeta-0.5)*(zeta)*(zeta+0.5)*(zeta +1.);
+			basis[ 5]=gauss->coord3*(2./3.)*(zeta-0.5)*(zeta)*(zeta+0.5)*(zeta +1.);
+			/*mid-sides of quads (center of vertical edges)*/
+			basis[ 6]=gauss->coord1*4.*(zeta-1.)*(zeta-0.5)*(zeta+0.5)*(zeta+1.);
+			basis[ 7]=gauss->coord2*4.*(zeta-1.)*(zeta-0.5)*(zeta+0.5)*(zeta+1.);
+			basis[ 8]=gauss->coord3*4.*(zeta-1.)*(zeta-0.5)*(zeta+0.5)*(zeta+1.);
+			/*quarter-sides of quads (-0.5 and +0.5 of vertical edges)*/
+			basis[ 9]=gauss->coord1*(-8./3.)*(zeta-1.0)*(zeta-0.5)*zeta*(zeta+1.);
+			basis[10]=gauss->coord2*(-8./3.)*(zeta-1.0)*(zeta-0.5)*zeta*(zeta+1.);
+			basis[11]=gauss->coord3*(-8./3.)*(zeta-1.0)*(zeta-0.5)*zeta*(zeta+1.);
+			basis[12]=gauss->coord1*(-8./3.)*(zeta-1.0)*zeta*(zeta+0.5)*(zeta+1.);
+			basis[13]=gauss->coord2*(-8./3.)*(zeta-1.0)*zeta*(zeta+0.5)*(zeta+1.);
+			basis[14]=gauss->coord3*(-8./3.)*(zeta-1.0)*zeta*(zeta+0.5)*(zeta+1.);
+			return;
+			#endif
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+}
+/*}}}*/
+void PentaRef::GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, Gauss* gauss,int finiteelement){/*{{{*/
+
+	/*This routine returns the values of the nodal functions derivatives  (with respect to the 
+	 * actual coordinate system): */
+	IssmDouble    Jinv[3][3];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+
+	/*Get nodal functions derivatives in reference triangle*/
+	IssmDouble dbasis_ref[3*NUMNODESMAX];
+	GetNodalFunctionsDerivativesReference(dbasis_ref,gauss,finiteelement);
+
+	/*Get Jacobian invert: */
+	GetJacobianInvert(&Jinv[0][0], xyz_list, gauss);
+
+	/*Build dbasis: 
+	 *
+	 * [dhi/dx]= Jinv'*[dhi/dr]
+	 * [dhi/dy]        [dhi/ds]
+	 * [dhi/dz]        [dhi/dzeta]
+	 */
+
+	for(int i=0;i<numnodes;i++){
+		dbasis[numnodes*0+i]=Jinv[0][0]*dbasis_ref[0*numnodes+i]+Jinv[0][1]*dbasis_ref[1*numnodes+i]+Jinv[0][2]*dbasis_ref[2*numnodes+i];
+		dbasis[numnodes*1+i]=Jinv[1][0]*dbasis_ref[0*numnodes+i]+Jinv[1][1]*dbasis_ref[1*numnodes+i]+Jinv[1][2]*dbasis_ref[2*numnodes+i];
+		dbasis[numnodes*2+i]=Jinv[2][0]*dbasis_ref[0*numnodes+i]+Jinv[2][1]*dbasis_ref[1*numnodes+i]+Jinv[2][2]*dbasis_ref[2*numnodes+i];
+	}
+}
+/*}}}*/
+void PentaRef::GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,Gauss* gauss_in,int finiteelement){/*{{{*/
+
+	/*This routine returns the values of the nodal functions derivatives  (with respect to the 
+	 * natural coordinate system) at the gaussian point. */
+
+	_assert_(dbasis && gauss_in);
+
+	/*Cast gauss to GaussPenta*/
+	_assert_(gauss_in->Enum()==GaussPentaEnum);
+	GaussPenta* gauss = xDynamicCast<GaussPenta*>(gauss_in);
+
+	/*Get current coordinates in reference element*/
+	IssmDouble zeta=gauss->coord4;
+
+	switch(finiteelement){
+		case P0Enum: 
+			/*Zero derivative*/
+			dbasis[NUMNODESP0*0+0]   = 0.;
+			dbasis[NUMNODESP0*1+0]   = 0.;
+			dbasis[NUMNODESP0*2+0]   = 0.;
+			return;
+		case P1Enum: case P1DGEnum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP1*0+0]   = (zeta-1.)/4.;
+			dbasis[NUMNODESP1*1+0]   = SQRT3/12.*(zeta-1.);
+			dbasis[NUMNODESP1*2+0]   = -.5*gauss->coord1;
+			/*Nodal function 2*/
+			dbasis[NUMNODESP1*0+1]   = (1.-zeta)/4.;
+			dbasis[NUMNODESP1*1+1]   = SQRT3/12.*(zeta-1);
+			dbasis[NUMNODESP1*2+1]   = -.5*gauss->coord2;
+			/*Nodal function 3*/
+			dbasis[NUMNODESP1*0+2]   = 0.;
+			dbasis[NUMNODESP1*1+2]   = SQRT3/6.*(1.-zeta);
+			dbasis[NUMNODESP1*2+2]   = -.5*gauss->coord3;
+			/*Nodal function 4*/
+			dbasis[NUMNODESP1*0+3]   = -(1.+zeta)/4.;
+			dbasis[NUMNODESP1*1+3]   = -SQRT3/12.*(1.+zeta);
+			dbasis[NUMNODESP1*2+3]   = .5*gauss->coord1;
+			/*Nodal function 5*/
+			dbasis[NUMNODESP1*0+4]   = (1.+zeta)/4.;
+			dbasis[NUMNODESP1*1+4]   = -SQRT3/12.*(1.+zeta);
+			dbasis[NUMNODESP1*2+4]   = .5*gauss->coord2;
+			/*Nodal function 6*/
+			dbasis[NUMNODESP1*0+5]   = 0.;
+			dbasis[NUMNODESP1*1+5]   = SQRT3/6.*(1.+zeta);
+			dbasis[NUMNODESP1*2+5]   = .5*gauss->coord3;
+			return;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP1b*0+0]   = (zeta-1.)/4.;
+			dbasis[NUMNODESP1b*1+0]   = SQRT3/12.*(zeta-1.);
+			dbasis[NUMNODESP1b*2+0]   = -.5*gauss->coord1;
+			/*Nodal function 2*/
+			dbasis[NUMNODESP1b*0+1]   = (1.-zeta)/4.;
+			dbasis[NUMNODESP1b*1+1]   = SQRT3/12.*(zeta-1);
+			dbasis[NUMNODESP1b*2+1]   = -.5*gauss->coord2;
+			/*Nodal function 3*/
+			dbasis[NUMNODESP1b*0+2]   = 0.;
+			dbasis[NUMNODESP1b*1+2]   = SQRT3/6.*(1.-zeta);
+			dbasis[NUMNODESP1b*2+2]   = -.5*gauss->coord3;
+			/*Nodal function 4*/
+			dbasis[NUMNODESP1b*0+3]   = -(1.+zeta)/4.;
+			dbasis[NUMNODESP1b*1+3]   = -SQRT3/12.*(1.+zeta);
+			dbasis[NUMNODESP1b*2+3]   = .5*gauss->coord1;
+			/*Nodal function 5*/
+			dbasis[NUMNODESP1b*0+4]   = (1.+zeta)/4.;
+			dbasis[NUMNODESP1b*1+4]   = -SQRT3/12.*(1.+zeta);
+			dbasis[NUMNODESP1b*2+4]   = .5*gauss->coord2;
+			/*Nodal function 6*/
+			dbasis[NUMNODESP1b*0+5]   = 0.;
+			dbasis[NUMNODESP1b*1+5]   = SQRT3/6.*(1.+zeta);
+			dbasis[NUMNODESP1b*2+5]   = .5*gauss->coord3;
+			/*Nodal function 7*/
+			dbasis[NUMNODESP1b*0+6] = 27.*(1.+zeta)*(1.-zeta)*(-.5*gauss->coord2*gauss->coord3 + .5*gauss->coord1*gauss->coord3);
+			dbasis[NUMNODESP1b*1+6] = 27.*(1.+zeta)*(1.-zeta)*SQRT3*(-1./6.*gauss->coord2*gauss->coord3 - 1./6.*gauss->coord1*gauss->coord3 +1./3.*gauss->coord1*gauss->coord2);
+			dbasis[NUMNODESP1b*2+6] = -54*gauss->coord1*gauss->coord2*gauss->coord3*zeta;
+			return;
+			#ifndef _HAVE_AD_
+		case P2xP1Enum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP2xP1*0+0 ] = .5*(1.-zeta)*(-2.*gauss->coord1 + 0.5);
+			dbasis[NUMNODESP2xP1*1+0 ] = .5*(1.-zeta)*(-2.*SQRT3/3.*gauss->coord1 + SQRT3/6.);
+			dbasis[NUMNODESP2xP1*2+0 ] = -.5*gauss->coord1*(2.*gauss->coord1-1.);
+			/*Nodal function 2*/
+			dbasis[NUMNODESP2xP1*0+1 ] = .5*(1.-zeta)*(+2.*gauss->coord2 - 0.5);
+			dbasis[NUMNODESP2xP1*1+1 ] = .5*(1.-zeta)*(-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.);
+			dbasis[NUMNODESP2xP1*2+1 ] = -.5*gauss->coord2*(2.*gauss->coord2-1.);
+			/*Nodal function 3*/
+			dbasis[NUMNODESP2xP1*0+2 ] = 0.;
+			dbasis[NUMNODESP2xP1*1+2 ] = .5*(1.-zeta)*(4.*SQRT3/3.*gauss->coord3 - SQRT3/3.);
+			dbasis[NUMNODESP2xP1*2+2 ] = -.5*gauss->coord3*(2.*gauss->coord3-1.);
+			/*Nodal function 4*/
+			dbasis[NUMNODESP2xP1*0+3 ] = .5*(1.+zeta)*(-2.*gauss->coord1 + 0.5);
+			dbasis[NUMNODESP2xP1*1+3 ] = .5*(1.+zeta)*(-2.*SQRT3/3.*gauss->coord1 + SQRT3/6.);
+			dbasis[NUMNODESP2xP1*2+3 ] = .5*gauss->coord1*(2.*gauss->coord1-1.);
+			/*Nodal function 5*/
+			dbasis[NUMNODESP2xP1*0+4 ] = .5*(1.+zeta)*(+2.*gauss->coord2 - 0.5);
+			dbasis[NUMNODESP2xP1*1+4 ] = .5*(1.+zeta)*(-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.);
+			dbasis[NUMNODESP2xP1*2+4 ] = .5*gauss->coord2*(2.*gauss->coord2-1.);
+			/*Nodal function 6*/
+			dbasis[NUMNODESP2xP1*0+5 ] = 0.;
+			dbasis[NUMNODESP2xP1*1+5 ] = .5*(1.+zeta)*(4.*SQRT3/3.*gauss->coord3 - SQRT3/3.);
+			dbasis[NUMNODESP2xP1*2+5 ] = .5*gauss->coord3*(2.*gauss->coord3-1.);
+
+			/*Nodal function 7*/
+			dbasis[NUMNODESP2xP1*0+6 ] = (1.-zeta)*gauss->coord3;
+			dbasis[NUMNODESP2xP1*1+6 ] = .5*(1.-zeta)*(+4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2xP1*2+6 ] = -2.*gauss->coord3*gauss->coord2;
+			/*Nodal function 8*/
+			dbasis[NUMNODESP2xP1*0+7 ] = -(1.-zeta)*gauss->coord3;
+			dbasis[NUMNODESP2xP1*1+7 ] = .5*(1.-zeta)*(+4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2xP1*2+7 ] = -2.*gauss->coord3*gauss->coord1;
+			/*Nodal function 9*/
+			dbasis[NUMNODESP2xP1*0+8 ] = (1.-zeta)*(gauss->coord1-gauss->coord2);
+			dbasis[NUMNODESP2xP1*1+8 ] = .5*(1.-zeta)*(-2.*SQRT3/3.*(gauss->coord1+gauss->coord2));
+			dbasis[NUMNODESP2xP1*2+8 ] = -2.*gauss->coord1*gauss->coord2;
+			/*Nodal function 10*/
+			dbasis[NUMNODESP2xP1*0+9 ] = (1.+zeta)*gauss->coord3;
+			dbasis[NUMNODESP2xP1*1+9 ] = .5*(1.+zeta)*(+4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2xP1*2+9 ] = 2.*gauss->coord3*gauss->coord2;
+			/*Nodal function 11*/
+			dbasis[NUMNODESP2xP1*0+10] = -(1.+zeta)*gauss->coord3;
+			dbasis[NUMNODESP2xP1*1+10] = .5*(1.+zeta)*(+4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2xP1*2+10] = 2.*gauss->coord3*gauss->coord1;
+			/*Nodal function 12*/
+			dbasis[NUMNODESP2xP1*0+11] = (1.+zeta)*(gauss->coord1-gauss->coord2);
+			dbasis[NUMNODESP2xP1*1+11] = .5*(1.+zeta)*(-2.*SQRT3/3.*(gauss->coord1+gauss->coord2));
+			dbasis[NUMNODESP2xP1*2+11] = 2.*gauss->coord1*gauss->coord2;
+			return;
+		case P1xP2Enum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP1xP2*0+0]   = -zeta*(zeta-1.)/4.;
+			dbasis[NUMNODESP1xP2*1+0]   = -SQRT3/12.*zeta*(zeta-1.);
+			dbasis[NUMNODESP1xP2*2+0]   = .5*(2.*zeta-1.)*gauss->coord1;
+			/*Nodal function 2*/
+			dbasis[NUMNODESP1xP2*0+1]   = zeta*(zeta-1.)/4.;
+			dbasis[NUMNODESP1xP2*1+1]   = -SQRT3/12.*zeta*(zeta-1);
+			dbasis[NUMNODESP1xP2*2+1]   = .5*(2.*zeta-1.)*gauss->coord2;
+			/*Nodal function 3*/
+			dbasis[NUMNODESP1xP2*0+2]   = 0.;
+			dbasis[NUMNODESP1xP2*1+2]   = SQRT3/6.*zeta*(zeta-1.);
+			dbasis[NUMNODESP1xP2*2+2]   = .5*(2.*zeta-1.)*gauss->coord3;
+			/*Nodal function 4*/
+			dbasis[NUMNODESP1xP2*0+3]   = -zeta*(zeta+1)/4.;
+			dbasis[NUMNODESP1xP2*1+3]   = -SQRT3/12.*zeta*(zeta+1.);
+			dbasis[NUMNODESP1xP2*2+3]   = .5*(2.*zeta+1.)*gauss->coord1;
+			/*Nodal function 5*/
+			dbasis[NUMNODESP1xP2*0+4]   = zeta*(zeta+1.)/4.;
+			dbasis[NUMNODESP1xP2*1+4]   = -SQRT3/12.*zeta*(zeta+1.);
+			dbasis[NUMNODESP1xP2*2+4]   = .5*(2.*zeta+1.)*gauss->coord2;
+			/*Nodal function 6*/
+			dbasis[NUMNODESP1xP2*0+5]   = 0.;
+			dbasis[NUMNODESP1xP2*1+5]   = SQRT3/6.*zeta*(zeta+1.);
+			dbasis[NUMNODESP1xP2*2+5]   = .5*(2.*zeta+1.)*gauss->coord3;
+
+			/*Nodal function 7*/
+			dbasis[NUMNODESP1xP2*0+6 ] = -0.5*(1.-zeta*zeta);
+			dbasis[NUMNODESP1xP2*1+6 ] = -SQRT3/6.*(1.-zeta*zeta);
+			dbasis[NUMNODESP1xP2*2+6 ] = -2.*zeta*gauss->coord1;
+			/*Nodal function 8*/
+			dbasis[NUMNODESP1xP2*0+7 ] = 0.5*(1.-zeta*zeta);
+			dbasis[NUMNODESP1xP2*1+7 ] = -SQRT3/6.*(1.-zeta*zeta);
+			dbasis[NUMNODESP1xP2*2+7 ] = -2.*zeta*gauss->coord2;
+			/*Nodal function 9*/
+			dbasis[NUMNODESP1xP2*0+8 ] = 0.;
+			dbasis[NUMNODESP1xP2*1+8 ] = SQRT3/3.*(1.-zeta*zeta);
+			dbasis[NUMNODESP1xP2*2+8 ] = -2.*zeta*gauss->coord3;
+			return;
+		case P2Enum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP2*0+0 ] = .5*zeta*(zeta-1.)*(-2.*gauss->coord1 + 0.5);
+			dbasis[NUMNODESP2*1+0 ] = .5*zeta*(zeta-1.)*(-2.*SQRT3/3.*gauss->coord1 + SQRT3/6.);
+			dbasis[NUMNODESP2*2+0 ] = .5*(2.*zeta-1.)*gauss->coord1*(2.*gauss->coord1-1.);
+			/*Nodal function 2*/
+			dbasis[NUMNODESP2*0+1 ] = .5*zeta*(zeta-1.)*(+2.*gauss->coord2 - 0.5);
+			dbasis[NUMNODESP2*1+1 ] = .5*zeta*(zeta-1.)*(-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.);
+			dbasis[NUMNODESP2*2+1 ] = .5*(2.*zeta-1.)*gauss->coord2*(2.*gauss->coord2-1.);
+			/*Nodal function 3*/
+			dbasis[NUMNODESP2*0+2 ] = 0.;
+			dbasis[NUMNODESP2*1+2 ] = .5*zeta*(zeta-1.)*(4.*SQRT3/3.*gauss->coord3 - SQRT3/3.);
+			dbasis[NUMNODESP2*2+2 ] = .5*(2.*zeta-1.)*gauss->coord3*(2.*gauss->coord3-1.);
+			/*Nodal function 4*/
+			dbasis[NUMNODESP2*0+3 ] = .5*zeta*(zeta+1.)*(-2.*gauss->coord1 + 0.5);
+			dbasis[NUMNODESP2*1+3 ] = .5*zeta*(zeta+1.)*(-2.*SQRT3/3.*gauss->coord1 + SQRT3/6.);
+			dbasis[NUMNODESP2*2+3 ] = .5*(2.*zeta+1.)*gauss->coord1*(2.*gauss->coord1-1.);
+			/*Nodal function 5*/
+			dbasis[NUMNODESP2*0+4 ] = .5*zeta*(zeta+1.)*(+2.*gauss->coord2 - 0.5);
+			dbasis[NUMNODESP2*1+4 ] = .5*zeta*(zeta+1.)*(-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.);
+			dbasis[NUMNODESP2*2+4 ] = .5*(2.*zeta+1.)*gauss->coord2*(2.*gauss->coord2-1.);
+			/*Nodal function 6*/
+			dbasis[NUMNODESP2*0+5 ] = 0.;
+			dbasis[NUMNODESP2*1+5 ] = .5*zeta*(zeta+1.)*(4.*SQRT3/3.*gauss->coord3 - SQRT3/3.);
+			dbasis[NUMNODESP2*2+5 ] = .5*(2.*zeta+1.)*gauss->coord3*(2.*gauss->coord3-1.);
+
+			/*Nodal function 7*/
+			dbasis[NUMNODESP2*0+6 ] = (-2.*gauss->coord1 + 0.5)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2*1+6 ] = (-2.*SQRT3/3.*gauss->coord1 + SQRT3/6.)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2*2+6 ] = -2.*zeta*gauss->coord1*(2.*gauss->coord1-1.);
+			/*Nodal function 8*/
+			dbasis[NUMNODESP2*0+7 ] = (+2.*gauss->coord2 - 0.5)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2*1+7 ] = (-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2*2+7 ] = -2.*zeta*gauss->coord2*(2.*gauss->coord2-1.);
+			/*Nodal function 9*/
+			dbasis[NUMNODESP2*0+8 ] = 0.;
+			dbasis[NUMNODESP2*1+8 ] = (+4.*SQRT3/3.*gauss->coord3 - SQRT3/3.)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2*2+8 ] = -2.*zeta*gauss->coord3*(2.*gauss->coord3-1.);
+
+			/*Nodal function 10*/
+			dbasis[NUMNODESP2*0+9 ] = zeta*(zeta-1.)*gauss->coord3;
+			dbasis[NUMNODESP2*1+9 ] = .5*zeta*(zeta-1.)*(+4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2*2+9 ] = 2.*gauss->coord3*gauss->coord2*(2.*zeta-1.);
+			/*Nodal function 11*/
+			dbasis[NUMNODESP2*0+10] = -zeta*(zeta-1.)*gauss->coord3;
+			dbasis[NUMNODESP2*1+10] = .5*zeta*(zeta-1.)*(+4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2*2+10] = 2.*gauss->coord3*gauss->coord1*(2.*zeta-1.);
+			/*Nodal function 12*/
+			dbasis[NUMNODESP2*0+11] = zeta*(zeta-1.)*(gauss->coord1-gauss->coord2);
+			dbasis[NUMNODESP2*1+11] = .5*zeta*(zeta-1.)*(-2.*SQRT3/3.*(gauss->coord1+gauss->coord2));
+			dbasis[NUMNODESP2*2+11] = 2.*gauss->coord1*gauss->coord2*(2.*zeta-1.);
+			/*Nodal function 13*/
+			dbasis[NUMNODESP2*0+12] = zeta*(zeta+1.)*gauss->coord3;
+			dbasis[NUMNODESP2*1+12] = .5*zeta*(zeta+1.)*(+4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2*2+12] = 2.*gauss->coord3*gauss->coord2*(2.*zeta+1.);
+			/*Nodal function 14*/
+			dbasis[NUMNODESP2*0+13] = -zeta*(zeta+1.)*gauss->coord3;
+			dbasis[NUMNODESP2*1+13] = .5*zeta*(zeta+1.)*(+4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2*2+13] = 2.*gauss->coord3*gauss->coord1*(2.*zeta+1.);
+			/*Nodal function 15*/
+			dbasis[NUMNODESP2*0+14] = zeta*(zeta+1.)*(gauss->coord1-gauss->coord2);
+			dbasis[NUMNODESP2*1+14] = .5*zeta*(zeta+1.)*(-2.*SQRT3/3.*(gauss->coord1+gauss->coord2));
+			dbasis[NUMNODESP2*2+14] = 2.*gauss->coord1*gauss->coord2*(2.*zeta+1.);
+
+			/*Nodal function 16*/
+			dbasis[NUMNODESP2*0+15] = 2.*gauss->coord3*(1.-zeta*zeta);
+			dbasis[NUMNODESP2*1+15] = (1.-zeta*zeta)*(+4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2*2+15] = -2.*zeta*4.*gauss->coord3*gauss->coord2;
+			/*Nodal function 17*/
+			dbasis[NUMNODESP2*0+16] = -2.*gauss->coord3*(1.-zeta*zeta);
+			dbasis[NUMNODESP2*1+16] = (1.-zeta*zeta)*(+4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2*2+16] = -2.*zeta*4.*gauss->coord3*gauss->coord1;
+			/*Nodal function 18*/
+			dbasis[NUMNODESP2*0+17] = 2.*(gauss->coord1-gauss->coord2)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2*1+17] = (1.-zeta*zeta)*(-2.*SQRT3/3.*(gauss->coord1+gauss->coord2));
+			dbasis[NUMNODESP2*2+17] = -2.*zeta*4.*gauss->coord1*gauss->coord2;
+			return;
+		case P2bubbleEnum: case P2bubblecondensedEnum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP2b*0+0 ] = .5*zeta*(zeta-1.)*(-2.*gauss->coord1 + 0.5);
+			dbasis[NUMNODESP2b*1+0 ] = .5*zeta*(zeta-1.)*(-2.*SQRT3/3.*gauss->coord1 + SQRT3/6.);
+			dbasis[NUMNODESP2b*2+0 ] = .5*(2.*zeta-1.)*gauss->coord1*(2.*gauss->coord1-1.);
+			/*Nodal function 2*/
+			dbasis[NUMNODESP2b*0+1 ] = .5*zeta*(zeta-1.)*(+2.*gauss->coord2 - 0.5);
+			dbasis[NUMNODESP2b*1+1 ] = .5*zeta*(zeta-1.)*(-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.);
+			dbasis[NUMNODESP2b*2+1 ] = .5*(2.*zeta-1.)*gauss->coord2*(2.*gauss->coord2-1.);
+			/*Nodal function 3*/
+			dbasis[NUMNODESP2b*0+2 ] = 0.;
+			dbasis[NUMNODESP2b*1+2 ] = .5*zeta*(zeta-1.)*(4.*SQRT3/3.*gauss->coord3 - SQRT3/3.);
+			dbasis[NUMNODESP2b*2+2 ] = .5*(2.*zeta-1.)*gauss->coord3*(2.*gauss->coord3-1.);
+			/*Nodal function 4*/
+			dbasis[NUMNODESP2b*0+3 ] = .5*zeta*(zeta+1.)*(-2.*gauss->coord1 + 0.5);
+			dbasis[NUMNODESP2b*1+3 ] = .5*zeta*(zeta+1.)*(-2.*SQRT3/3.*gauss->coord1 + SQRT3/6.);
+			dbasis[NUMNODESP2b*2+3 ] = .5*(2.*zeta+1.)*gauss->coord1*(2.*gauss->coord1-1.);
+			/*Nodal function 5*/
+			dbasis[NUMNODESP2b*0+4 ] = .5*zeta*(zeta+1.)*(+2.*gauss->coord2 - 0.5);
+			dbasis[NUMNODESP2b*1+4 ] = .5*zeta*(zeta+1.)*(-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.);
+			dbasis[NUMNODESP2b*2+4 ] = .5*(2.*zeta+1.)*gauss->coord2*(2.*gauss->coord2-1.);
+			/*Nodal function 6*/
+			dbasis[NUMNODESP2b*0+5 ] = 0.;
+			dbasis[NUMNODESP2b*1+5 ] = .5*zeta*(zeta+1.)*(4.*SQRT3/3.*gauss->coord3 - SQRT3/3.);
+			dbasis[NUMNODESP2b*2+5 ] = .5*(2.*zeta+1.)*gauss->coord3*(2.*gauss->coord3-1.);
+
+			/*Nodal function 7*/
+			dbasis[NUMNODESP2b*0+6 ] = (-2.*gauss->coord1 + 0.5)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2b*1+6 ] = (-2.*SQRT3/3.*gauss->coord1 + SQRT3/6.)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2b*2+6 ] = -2.*zeta*gauss->coord1*(2.*gauss->coord1-1.);
+			/*Nodal function 8*/
+			dbasis[NUMNODESP2b*0+7 ] = (+2.*gauss->coord2 - 0.5)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2b*1+7 ] = (-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2b*2+7 ] = -2.*zeta*gauss->coord2*(2.*gauss->coord2-1.);
+			/*Nodal function 9*/
+			dbasis[NUMNODESP2b*0+8 ] = 0.;
+			dbasis[NUMNODESP2b*1+8 ] = (+4.*SQRT3/3.*gauss->coord3 - SQRT3/3.)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2b*2+8 ] = -2.*zeta*gauss->coord3*(2.*gauss->coord3-1.);
+
+			/*Nodal function 10*/
+			dbasis[NUMNODESP2b*0+9 ] = zeta*(zeta-1.)*gauss->coord3;
+			dbasis[NUMNODESP2b*1+9 ] = .5*zeta*(zeta-1.)*(+4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2b*2+9 ] = 2.*gauss->coord3*gauss->coord2*(2.*zeta-1.);
+			/*Nodal function 11*/
+			dbasis[NUMNODESP2b*0+10] = -zeta*(zeta-1.)*gauss->coord3;
+			dbasis[NUMNODESP2b*1+10] = .5*zeta*(zeta-1.)*(+4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2b*2+10] = 2.*gauss->coord3*gauss->coord1*(2.*zeta-1.);
+			/*Nodal function 12*/
+			dbasis[NUMNODESP2b*0+11] = zeta*(zeta-1.)*(gauss->coord1-gauss->coord2);
+			dbasis[NUMNODESP2b*1+11] = .5*zeta*(zeta-1.)*(-2.*SQRT3/3.*(gauss->coord1+gauss->coord2));
+			dbasis[NUMNODESP2b*2+11] = 2.*gauss->coord1*gauss->coord2*(2.*zeta-1.);
+			/*Nodal function 13*/
+			dbasis[NUMNODESP2b*0+12] = zeta*(zeta+1.)*gauss->coord3;
+			dbasis[NUMNODESP2b*1+12] = .5*zeta*(zeta+1.)*(+4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2b*2+12] = 2.*gauss->coord3*gauss->coord2*(2.*zeta+1.);
+			/*Nodal function 14*/
+			dbasis[NUMNODESP2b*0+13] = -zeta*(zeta+1.)*gauss->coord3;
+			dbasis[NUMNODESP2b*1+13] = .5*zeta*(zeta+1.)*(+4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2b*2+13] = 2.*gauss->coord3*gauss->coord1*(2.*zeta+1.);
+			/*Nodal function 15*/
+			dbasis[NUMNODESP2b*0+14] = zeta*(zeta+1.)*(gauss->coord1-gauss->coord2);
+			dbasis[NUMNODESP2b*1+14] = .5*zeta*(zeta+1.)*(-2.*SQRT3/3.*(gauss->coord1+gauss->coord2));
+			dbasis[NUMNODESP2b*2+14] = 2.*gauss->coord1*gauss->coord2*(2.*zeta+1.);
+
+			/*Nodal function 16*/
+			dbasis[NUMNODESP2b*0+15] = 2.*gauss->coord3*(1.-zeta*zeta);
+			dbasis[NUMNODESP2b*1+15] = (1.-zeta*zeta)*(+4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2b*2+15] = -2.*zeta*4.*gauss->coord3*gauss->coord2;
+			/*Nodal function 17*/
+			dbasis[NUMNODESP2b*0+16] = -2.*gauss->coord3*(1.-zeta*zeta);
+			dbasis[NUMNODESP2b*1+16] = (1.-zeta*zeta)*(+4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3);
+			dbasis[NUMNODESP2b*2+16] = -2.*zeta*4.*gauss->coord3*gauss->coord1;
+			/*Nodal function 18*/
+			dbasis[NUMNODESP2b*0+17] = 2.*(gauss->coord1-gauss->coord2)*(1.-zeta*zeta);
+			dbasis[NUMNODESP2b*1+17] = (1.-zeta*zeta)*(-2.*SQRT3/3.*(gauss->coord1+gauss->coord2));
+			dbasis[NUMNODESP2b*2+17] = -2.*zeta*4.*gauss->coord1*gauss->coord2;
+
+			/*Nodal function 19*/
+			dbasis[NUMNODESP2b*0+18] = 27.*(1.+zeta)*(1.-zeta)*(-.5*gauss->coord2*gauss->coord3 + .5*gauss->coord1*gauss->coord3);
+			dbasis[NUMNODESP2b*1+18] = 27.*(1.+zeta)*(1.-zeta)*SQRT3*(-1./6.*gauss->coord2*gauss->coord3 - 1./6.*gauss->coord1*gauss->coord3 +1./3.*gauss->coord1*gauss->coord2);
+			dbasis[NUMNODESP2b*2+18] = -54*gauss->coord1*gauss->coord2*gauss->coord3*zeta;
+			return;
+		case P2xP4Enum :
+			/*Nodal function 1*/
+			dbasis[NUMNODESP2xP4*0+0 ] = (-2* gauss->coord1 + 0.5 ) *(2./3.) *(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5) ; 
+			dbasis[NUMNODESP2xP4*1+0 ] = (-((2.*SQRT3)/(3.))*gauss->coord1 + (SQRT3/6.) )*(2./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5) ; 
+			dbasis[NUMNODESP2xP4*2+0 ] =  gauss->coord1 *(2.* gauss->coord1 -1)* 2./3.*( (2.*zeta-1)*(zeta -0.5)*(zeta +0.5) + 2.* zeta *zeta *(zeta -1.)); 
+			/*Nodal function 2*/
+			dbasis[NUMNODESP2xP4*0+1 ] = (2.*gauss->coord2 - 0.5 ) *(2./3.) *(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5) ; 
+			dbasis[NUMNODESP2xP4*1+1 ] = (-((2.*SQRT3)/(3.))*gauss->coord2 + (SQRT3/6.) )*(2./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5) ; 
+			dbasis[NUMNODESP2xP4*2+1 ] = gauss->coord2*(2.*gauss->coord2 -1.)* 2./3.* ((2.*zeta-1.)*(zeta -0.5)*(zeta +0.5) + 2. * zeta *zeta*(zeta -1.)); 
+			/*Nodal function 3*/
+			dbasis[NUMNODESP2xP4*0+2 ] = 0. ; 
+			dbasis[NUMNODESP2xP4*1+2 ] = (((4.*SQRT3)/(3.))*gauss->coord3 - (SQRT3)/(3.))*(2./3.)*(zeta -1.)*(zeta-0.5)*(zeta)*(zeta+0.5); 
+			dbasis[NUMNODESP2xP4*2+2 ] = gauss->coord3*(2.* gauss->coord3 -1.)* 2./3.*( (2.*zeta-1.)*(zeta -0.5)*(zeta +0.5) + 2.*zeta *zeta*(zeta -1.)); 
+			/*Nodal function 4*/
+			dbasis[NUMNODESP2xP4*0+3 ] = (-2.* gauss->coord1 + 0.5 ) *(2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+3 ] = (-((2.*SQRT3)/(3.)) *gauss->coord1 + (SQRT3)/(6.) ) *(2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*2+3 ] = gauss->coord1*(2.*gauss->coord1 -1.)* 2./3.*( (2.*zeta+1.)*(zeta -0.5)*(zeta +0.5) + 2.*zeta *zeta*(zeta +1.)); 
+			/*Nodal function 5*/
+			dbasis[NUMNODESP2xP4*0+4 ] = (2*gauss->coord2 - 0.5 ) *(2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+4 ] = (-((2.*SQRT3)/(3.)) *gauss->coord2 + (SQRT3/6.))*(2./3.)*(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. );
+			dbasis[NUMNODESP2xP4*2+4 ] = gauss->coord2 *(2.*gauss->coord2 -1.)* 2./3.*( (2.*zeta+1.)*(zeta -0.5)*(zeta +0.5) + 2.*zeta *zeta*(zeta +1.)); 
+			/*Nodal function 6*/
+			dbasis[NUMNODESP2xP4*0+5 ] = 0. ; 
+			dbasis[NUMNODESP2xP4*1+5 ] = (((4.*SQRT3)/(3.))*gauss->coord3 - SQRT3/3. ) *(2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*2+5 ] = gauss->coord3 *(2.*gauss->coord3 -1.)* 2./3.*( (2.*zeta+1.)*(zeta -0.5)*(zeta +0.5) + 2.*zeta *zeta*(zeta +1)); 
+			/*Nodal function 7*/
+			dbasis[NUMNODESP2xP4*0+6 ] =  (-2.* gauss->coord1 + 0.5 ) * 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*1+6 ] =  (-((2.*SQRT3)/(3.)) *gauss->coord1 + (SQRT3)/(6.) )* 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1.)  ; 
+			dbasis[NUMNODESP2xP4*2+6 ] =  gauss->coord1*(2.*gauss->coord1-1)* 4.*( 4.*zeta *zeta*zeta - (5./2.)*zeta ); 
+			/*Nodal function 8*/
+			dbasis[NUMNODESP2xP4*0+7 ] =  (2*gauss->coord2 - 0.5 )* 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*1+7 ] =  (-((2.*SQRT3)/(3.)) *gauss->coord2 + (SQRT3)/(6.)) * 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. )  ; 
+			dbasis[NUMNODESP2xP4*2+7 ] =  gauss->coord2*(2.*gauss->coord2-1)* 4.*( 4.*zeta *zeta*zeta - (5./2.)*zeta ); 
+			/*Nodal function 9*/
+			dbasis[NUMNODESP2xP4*0+8 ] = 0. ; 
+			dbasis[NUMNODESP2xP4*1+8 ] = (((4.*SQRT3)/(3.))*gauss->coord3 - SQRT3/3. ) * 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. )  ; 
+			dbasis[NUMNODESP2xP4*2+8 ] = gauss->coord3*(2.*gauss->coord3-1)* 4.*( 4.*zeta *zeta*zeta - (5./2.)*zeta ); 
+			/*Nodal function 10*/
+			dbasis[NUMNODESP2xP4*0+9 ] = 2.*gauss->coord3 * 2./3.*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5) ; 
+			dbasis[NUMNODESP2xP4*1+9 ] = (4.* SQRT3/3.* gauss->coord2- 2.*SQRT3/3. *gauss->coord3) *(2./3.) *(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5);
+			dbasis[NUMNODESP2xP4*2+9 ] = 4.* gauss->coord2 * gauss->coord3 *(2./3.)*((2.*zeta-1.)*(zeta -0.5)*(zeta +0.5) + 2.* zeta*zeta*(zeta -1.)); 
+			/*Nodal function 11*/
+			dbasis[NUMNODESP2xP4*0+10] = -2.* gauss->coord3* 2./3.*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5) ; 
+			dbasis[NUMNODESP2xP4*1+10] = (4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3) * (2./3.) *(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5);
+			dbasis[NUMNODESP2xP4*2+10] = 4.* gauss->coord3*gauss->coord1 *(2./3.)*( (2*zeta-1.)*(zeta -0.5)*(zeta +0.5) + 2* zeta * zeta*(zeta -1));
+			/*Nodal function 12*/
+			dbasis[NUMNODESP2xP4*0+11] = 2.* (gauss->coord1- gauss->coord2)* (2./3.) *(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5) ; 
+			dbasis[NUMNODESP2xP4*1+11] = -2.* SQRT3/3.*(gauss->coord2 +gauss->coord1) *(2./3.) *(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5);
+			dbasis[NUMNODESP2xP4*2+11] = 4.* gauss->coord1*gauss->coord2 *(2./3.) *( (2.*zeta-1)*(zeta -0.5)*(zeta +0.5) + 2* zeta* zeta*(zeta -1));
+			/*Nodal function 13*/
+			dbasis[NUMNODESP2xP4*0+12] = 2.* gauss->coord3 * 2./3.*(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*1+12] = (4.*SQRT3/3.* gauss->coord2 - 2.*SQRT3/3. *gauss->coord3) *(2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. );
+			dbasis[NUMNODESP2xP4*2+12] = 4.*gauss->coord2*gauss->coord3 *(2./3.)*( (2.*zeta+1.)*(zeta -0.5)*(zeta +0.5) + 2*zeta*zeta*(zeta +1.)); 
+			/*Nodal function 14*/
+			dbasis[NUMNODESP2xP4*0+13] = - 2.*gauss->coord3* 2./3.*(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*1+13] = (4.*SQRT3/3.*gauss->coord1- 2.*SQRT3/3.*gauss->coord3) * (2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. );
+			dbasis[NUMNODESP2xP4*2+13] = 4.*gauss->coord3*gauss->coord1 *(2./3.)*( (2.*zeta+1.)*(zeta -0.5)*(zeta +0.5) + 2.*zeta *zeta*(zeta +1.)); 
+			/*Nodal function 15*/
+			dbasis[NUMNODESP2xP4*0+14] = 2.* (gauss->coord1- gauss->coord2)* (2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*1+14] = -2.* SQRT3/3.*(gauss->coord2 +gauss->coord1) *(2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. );
+			dbasis[NUMNODESP2xP4*2+14] = 4.*gauss->coord1*gauss->coord2 *(2./3.)*( (2.*zeta+1.)*(zeta -0.5)*(zeta +0.5) + 2* zeta *zeta*(zeta +1.)); 
+			/*Nodal function 16*/
+			dbasis[NUMNODESP2xP4*0+15] = (-2.* gauss->coord1 + 0.5 )* (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*1+15] = (-2.*SQRT3/3. *gauss->coord1 + SQRT3/6.) * (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+15] = gauss->coord1*(2.*gauss->coord1-1) * (-8./3.)*((2.*zeta -1.)*(zeta-0.5)*(zeta +1.) +zeta*(zeta -1.)*( 2.*zeta + 0.5)); 
+			/*Nodal function 17*/
+			dbasis[NUMNODESP2xP4*0+16] = (2*gauss->coord2 - 0.5 )* (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*1+16] = (-2.*SQRT3/3. *gauss->coord2 + SQRT3/6.)* (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+16] = gauss->coord2*(2.*gauss->coord2-1) * (-8./3.)*((2.*zeta -1.)*(zeta-0.5)*(zeta +1.) +zeta *(zeta -1.)*( 2.*zeta + 0.5)); 
+			/*Nodal function 18*/
+			dbasis[NUMNODESP2xP4*0+17] = 0. ; 
+			dbasis[NUMNODESP2xP4*1+17] = (4.*SQRT3/3.*gauss->coord3 - SQRT3/3. )* (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+17] = gauss->coord3*(2*gauss->coord3-1) * (-8./3.)*((2.*zeta-1.)*(zeta-0.5)*(zeta +1.) +zeta *(zeta -1.)*( 2.*zeta + 0.5));
+			/*Nodal function 19*/
+			dbasis[NUMNODESP2xP4*0+18] = (-2.* gauss->coord1 + 0.5 ) * (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*1+18] =  (-2.*SQRT3/3. *gauss->coord1 + SQRT3/6. )* (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+18] = gauss->coord1*(2.*gauss->coord1-1) * (-8./3.)*((2.*zeta -1. ) *(zeta+0.5)* (zeta +1.) +  zeta* (zeta -1.)*( 2.*zeta + 3./2.));
+			/*Nodal function 20*/
+			dbasis[NUMNODESP2xP4*0+19] = (2*gauss->coord2 - 0.5 )* (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*1+19] = (-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.) * (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+19] = gauss->coord2*(2.*gauss->coord2-1)* (-8./3.)*((2.*zeta -1. )*(zeta+0.5)*(zeta +1.) +  zeta*(zeta -1.)*( 2.*zeta + 3./2.)); 
+			/*Nodal function 21*/
+			dbasis[NUMNODESP2xP4*0+20] = 0 ; 
+			dbasis[NUMNODESP2xP4*1+20] = (4.*SQRT3/3.*gauss->coord3 - SQRT3/3.)* (-8./3.)*(zeta - 1.)*(zeta + 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+20] = gauss->coord3*(2*gauss->coord3-1) * (-8./3.)*((2. *zeta -1. )*(zeta+0.5)*(zeta +1.) +  zeta*(zeta -1.)*( 2.*zeta + 3./2.));
+			/*Nodal function 22*/
+			dbasis[NUMNODESP2xP4*0+21] = 2. *gauss->coord3 * (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+21] = (4.* SQRT3/3.*gauss->coord2- 2.*SQRT3/3.*gauss->coord3) * (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+21] = 4.*gauss->coord2 *gauss->coord3* (-8./3.)*((2.*zeta -1. )*(zeta-0.5)*(zeta +1.) +  zeta*(zeta -1.)*( 2.*zeta + 0.5)); 
+			/*Nodal function 23*/
+			dbasis[NUMNODESP2xP4*0+22] = -2. *gauss->coord3 *( -8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+22] = (4.* SQRT3/3.*gauss->coord1- 2.*SQRT3/3.*gauss->coord3 )*(-8./3.)*(zeta -1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+22] = 4.*gauss->coord1*gauss->coord3* (-8./3.)*((2.*zeta -1. )*(zeta-0.5)*(zeta +1.) +  zeta*(zeta -1.)*( 2.*zeta + 0.5)); 
+			/*Nodal function 24*/
+			dbasis[NUMNODESP2xP4*0+23] = 2.*(gauss->coord1- gauss->coord2) * (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+23] = -2.*SQRT3/3.*(gauss->coord2+ gauss->coord1) * (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+23] = 4.*gauss->coord1*gauss->coord2* (-8./3.)*((2.*zeta -1. )* (zeta-0.5) *(zeta +1.) +  zeta* (zeta -1.)*( 2.*zeta + 0.5));
+			/*Nodal function 25*/
+			dbasis[NUMNODESP2xP4*0+24] = 2. *gauss->coord3 *4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+24] = (4.*SQRT3/3.*gauss->coord2 - 2.* SQRT3/3. *gauss->coord3) *4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+24] = 4.* gauss->coord2 * gauss->coord3* 4.*( 4.* zeta*zeta*zeta - 5./2. *zeta ); 
+			/*Nodal function 26*/
+			dbasis[NUMNODESP2xP4*0+25] = -2. *gauss->coord3*4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+25] = (4.*SQRT3/3.*gauss->coord1- 2.*SQRT3/3.*gauss->coord3 )*4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+25] = 4. * gauss->coord1 * gauss->coord3 *4.*( 4. *zeta*zeta*zeta - 5./2.* zeta );
+			/*Nodal function 27*/
+			dbasis[NUMNODESP2xP4*0+26] = 2.*( gauss->coord1-gauss->coord2) * 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+26] = -2.* SQRT3/3.*(gauss->coord1+ gauss->coord2 )*4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+26] = 4. *gauss->coord1 *gauss->coord2 *4.*( 4.* zeta*zeta*zeta - 5./2.*zeta ); 
+			/*Nodal function 28*/
+			dbasis[NUMNODESP2xP4*0+27] = 2.* gauss->coord3* (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+27] = (4.*SQRT3/3.*gauss->coord2- 2.*SQRT3/3.*gauss->coord3) * (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+27] = 4.* gauss->coord2*gauss->coord3* (-8./3.)*((2.*zeta -1. )*(zeta+0.5)*(zeta +1.) +zeta*(zeta -1.)*( 2.*zeta + 3./2.)); 
+			/*Nodal function 29*/
+			dbasis[NUMNODESP2xP4*0+28] = -2.*gauss->coord3 *(-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+28] = (4.*SQRT3/3.*gauss->coord1- 2.*SQRT3/3.*gauss->coord3) * (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+28] = 4.* gauss->coord1*gauss->coord3* (-8./3.)*((2.*zeta -1. )*(zeta+0.5)*(zeta +1.) +zeta*(zeta -1.)*( 2.*zeta + 3./2.)); 
+			/*Nodal function 30*/
+			dbasis[NUMNODESP2xP4*0+29] = 2.*(gauss->coord1-gauss->coord2)* (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP2xP4*1+29] = -2.*SQRT3/3.*(gauss->coord1+gauss->coord2) * (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP2xP4*2+29] = 4.* gauss->coord1*gauss->coord2 * (-8./3.)*((2.*zeta -1. )*(zeta+0.5)*(zeta +1) +zeta*(zeta -1.)*( 2.*zeta + 3./2.)); 
+			return;
+		case P1xP3Enum :
+			/*Nodal function 1*/
+			dbasis[NUMNODESP1xP3*0+0 ] =  (9./32.)*(zeta-1)*(zeta-1./3.)*(zeta+1./3.);
+			dbasis[NUMNODESP1xP3*1+0 ] = ((3.*SQRT3)/32.)*(zeta-1)*(zeta-1./3.)*(zeta+1./3.);
+			dbasis[NUMNODESP1xP3*2+0 ] =- (9./16.)* gauss->coord1 *( 2. *zeta *( zeta -1. ) + ( zeta - (1./3.) )*( zeta + (1./3.) ));
+			/*Nodal function 2*/
+			dbasis[NUMNODESP1xP3*0+1 ] = - (9./32.)*(zeta-1)*(zeta-1./3.)*(zeta+1./3.);
+			dbasis[NUMNODESP1xP3*1+1 ] = ((3.*SQRT3)/32.) *(zeta-1)*(zeta-1./3.)*(zeta+1./3.);
+			dbasis[NUMNODESP1xP3*2+1 ] =- (9./16.)*gauss->coord2 *( 2.* zeta* ( zeta -1. ) + ( zeta - (1./3.) )*( zeta + (1./3.) ));
+			/*Nodal function 3*/
+			dbasis[NUMNODESP1xP3*0+2 ] =  0.;
+			dbasis[NUMNODESP1xP3*1+2 ] = - ((3.*SQRT3)/16.)*(zeta-1)*(zeta-1./3.)*(zeta+1./3.);
+			dbasis[NUMNODESP1xP3*2+2 ] = - (9./16.)* gauss->coord3* ( 2. *zeta *( zeta -1. ) + ( zeta - (1./3.) )*( zeta + (1./3.) ));
+			/*Nodal function 4*/	 
+			dbasis[NUMNODESP1xP3*0+3 ] = -  (9./32.)*(zeta-1./3.)*(zeta+1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*1+3 ] =  -((3.*SQRT3)/32.) *(zeta-1./3.)*(zeta+1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*2+3 ] = (9./16.)* gauss->coord1*( 2.* zeta *( zeta +1. ) + ( zeta - (1./3.) )*( zeta + (1./3.) ));
+			/*Nodal function 5*/	
+			dbasis[NUMNODESP1xP3*0+4 ] =   (9./32.)* (zeta-1./3.)*(zeta+1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*1+4 ] = - ((3.*SQRT3)/32.) *(zeta-1./3.)*(zeta+1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*2+4 ] = (9./16.)* gauss->coord2* ( 2.* zeta *( zeta +1. ) + ( zeta - (1./3.) )*( zeta + (1./3.) ));
+			/*Nodal function 6*/	
+			dbasis[NUMNODESP1xP3*0+5 ] =  0.;
+			dbasis[NUMNODESP1xP3*1+5 ] =  ((3.*SQRT3)/16.)  *(zeta-1./3.)*(zeta+1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*2+5 ] =  (9./16.)* gauss->coord3 *( 2.* zeta * ( zeta  + 1. ) + ( zeta - (1./3.) )*( zeta + (1./3.) ));
+			/*Nodal function 7*/	
+			dbasis[NUMNODESP1xP3*0+6 ] = -  (27./32.) *(zeta-1)*(zeta-1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*1+6 ] = -  (9.*SQRT3/32.) *(zeta-1)*(zeta-1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*2+6 ] =  gauss->coord1*(27./16.)*( 2.* zeta *( zeta - (1./3.)) + ( zeta - 1. )*( zeta + 1. ));
+			/*Nodal function 8*/	
+			dbasis[NUMNODESP1xP3*0+7 ] =  (27./32.) *(zeta-1)*(zeta-1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*1+7 ] = -((9.*SQRT3)/32.) *(zeta-1)*(zeta-1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*2+7 ] =  gauss->coord2*(27./16.)*( 2.* zeta *( zeta - (1./3.)) + ( zeta - 1. )*( zeta + 1. ));
+			/*Nodal function 9*/	
+			dbasis[NUMNODESP1xP3*0+8 ] = 0.;
+			dbasis[NUMNODESP1xP3*1+8 ] =  ((9.*SQRT3)/16.) *(zeta-1.)*(zeta-1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*2+8 ] =  gauss->coord3*(27./16.)*( 2. *zeta *( zeta - (1./3.)) + ( zeta - 1. )*( zeta + 1. ));
+			/*Nodal function 10*/	
+			dbasis[NUMNODESP1xP3*0+9 ] = (27./32.) *(zeta-1.)*(zeta+1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*1+9 ] = ((9.*SQRT3)/32.) *(zeta-1.)*(zeta+1./3.)*(zeta+1.);
+			dbasis[NUMNODESP1xP3*2+9 ] =  -gauss->coord1 *(27./16.)*( 2* zeta *( zeta + (1./3.)) + ( zeta - 1. )*( zeta + 1. ));
+			/*Nodal function 11*/	
+			dbasis[NUMNODESP1xP3*0+10] = - (27./32.) *(zeta-1)*(zeta+1./3.)*(zeta+1);
+			dbasis[NUMNODESP1xP3*1+10] = ((9.*SQRT3)/32.)  *(zeta-1.)*(zeta+1./3.)*(zeta+1);
+			dbasis[NUMNODESP1xP3*2+10] = -gauss->coord2 *(27./16.) *( 2.* zeta *( zeta + (1./3.)) + ( zeta - 1. )*( zeta + 1. ));
+			/*Nodal function 12*/	
+			dbasis[NUMNODESP1xP3*0+11] = 0.;
+			dbasis[NUMNODESP1xP3*1+11] = -((9.*SQRT3)/16.) *(zeta-1.)*(zeta+1./3.)*(zeta+1);
+			dbasis[NUMNODESP1xP3*2+11] = -gauss->coord3 *(27./16.)*( 2.* zeta *( zeta + (1./3.)) + ( zeta - 1. )*( zeta + 1. ));
+			return;
+		case P1xP4Enum :
+			/*Nodal function 1*/
+			dbasis[NUMNODESP1xP4*0+0 ] = -0.5*(2./3.)     *(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5);
+			dbasis[NUMNODESP1xP4*1+0 ] = -SQRT3/6.*(2./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5); 
+			dbasis[NUMNODESP1xP4*2+0 ] =  gauss->coord1 * 2./3.*( (2.*zeta-1)*(zeta -0.5)*(zeta +0.5) + 2.* zeta *zeta *(zeta -1.)); 
+			/*Nodal function 2*/
+			dbasis[NUMNODESP1xP4*0+1 ] = +0.5*(2./3.)     *(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5);
+			dbasis[NUMNODESP1xP4*1+1 ] = -SQRT3/6.*(2./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5);
+			dbasis[NUMNODESP1xP4*2+1 ] = gauss->coord2* 2./3.* ((2.*zeta-1.)*(zeta -0.5)*(zeta +0.5) + 2. * zeta *zeta*(zeta -1.)); 
+			/*Nodal function 3*/
+			dbasis[NUMNODESP1xP4*0+2 ] = 0. ; 
+			dbasis[NUMNODESP1xP4*1+2 ] = SQRT3/3.*(2./3.)*(zeta -1.)*(zeta-0.5)*(zeta)*(zeta+0.5); 
+			dbasis[NUMNODESP1xP4*2+2 ] = gauss->coord3* 2./3.*( (2.*zeta-1.)*(zeta -0.5)*(zeta +0.5) + 2.*zeta *zeta*(zeta -1.)); 
+			/*Nodal function 4*/
+			dbasis[NUMNODESP1xP4*0+3 ] = -0.5 *(2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP1xP4*1+3 ] = -SQRT3/6.*(2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP1xP4*2+3 ] = gauss->coord1* 2./3.*( (2.*zeta+1.)*(zeta -0.5)*(zeta +0.5) + 2.*zeta *zeta*(zeta +1.)); 
+			/*Nodal function 5*/
+			dbasis[NUMNODESP1xP4*0+4 ] = +0.5 *    (2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP1xP4*1+4 ] = -SQRT3/6.*(2./3.)*(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. );
+			dbasis[NUMNODESP1xP4*2+4 ] = gauss->coord2 * 2./3.*( (2.*zeta+1.)*(zeta -0.5)*(zeta +0.5) + 2.*zeta *zeta*(zeta +1.)); 
+			/*Nodal function 6*/
+			dbasis[NUMNODESP1xP4*0+5 ] = 0. ; 
+			dbasis[NUMNODESP1xP4*1+5 ] = SQRT3/3.*(2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. ); 
+			dbasis[NUMNODESP1xP4*2+5 ] = gauss->coord3 * 2./3.*( (2.*zeta+1.)*(zeta -0.5)*(zeta +0.5) + 2.*zeta *zeta*(zeta +1)); 
+
+			/*Nodal function 7*/
+			dbasis[NUMNODESP1xP4*0+6 ] = -0.5 * 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP1xP4*1+6 ] = -SQRT3/6.* 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1.)  ; 
+			dbasis[NUMNODESP1xP4*2+6 ] = gauss->coord1* 4.*( 4.*zeta *zeta*zeta - (5./2.)*zeta ); 
+			/*Nodal function 8*/
+			dbasis[NUMNODESP1xP4*0+7 ] = +0.5* 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP1xP4*1+7 ] = -SQRT3/6.* 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. )  ; 
+			dbasis[NUMNODESP1xP4*2+7 ] = gauss->coord2* 4.*( 4.*zeta *zeta*zeta - (5./2.)*zeta ); 
+			/*Nodal function 9*/
+			dbasis[NUMNODESP1xP4*0+8 ] = 0. ; 
+			dbasis[NUMNODESP1xP4*1+8 ] = SQRT3/3. * 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. )  ; 
+			dbasis[NUMNODESP1xP4*2+8 ] = gauss->coord3* 4.*( 4.*zeta *zeta*zeta - (5./2.)*zeta ); 
+
+			/*Nodal function 10*/
+			dbasis[NUMNODESP1xP4*0+9 ] = -0.5* (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP1xP4*1+9 ] = -SQRT3/6.* (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP1xP4*2+9 ] = gauss->coord1* (-8./3.)*((2.*zeta -1.)*(zeta-0.5)*(zeta +1.) +zeta*(zeta -1.)*( 2.*zeta + 0.5)); 
+			/*Nodal function 11*/
+			dbasis[NUMNODESP1xP4*0+10] = +0.5* (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP1xP4*1+10] = -SQRT3/6.* (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP1xP4*2+10] = gauss->coord2* (-8./3.)*((2.*zeta -1.)*(zeta-0.5)*(zeta +1.) +zeta *(zeta -1.)*( 2.*zeta + 0.5)); 
+			/*Nodal function 12*/
+			dbasis[NUMNODESP1xP4*0+11] = 0. ; 
+			dbasis[NUMNODESP1xP4*1+11] = SQRT3/3.* (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP1xP4*2+11] = gauss->coord3* (-8./3.)*((2.*zeta-1.)*(zeta-0.5)*(zeta +1.) +zeta *(zeta -1.)*( 2.*zeta + 0.5));
+			/*Nodal function 13*/
+			dbasis[NUMNODESP1xP4*0+12] = -0.5* (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP1xP4*1+12] = -SQRT3/6.* (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP1xP4*2+12] = gauss->coord1* (-8./3.)*((2.*zeta -1. ) *(zeta+0.5)* (zeta +1.) +  zeta* (zeta -1.)*( 2.*zeta + 3./2.));
+			/*Nodal function 14*/
+			dbasis[NUMNODESP1xP4*0+13] = +0.5* (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP1xP4*1+13] = -SQRT3/6.* (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ; 
+			dbasis[NUMNODESP1xP4*2+13] = gauss->coord2* (-8./3.)*((2.*zeta -1. )*(zeta+0.5)*(zeta +1.) +  zeta*(zeta -1.)*( 2.*zeta + 3./2.)); 
+			/*Nodal function 15*/
+			dbasis[NUMNODESP1xP4*0+14] = 0 ; 
+			dbasis[NUMNODESP1xP4*1+14] = SQRT3/3.* (-8./3.)*(zeta - 1.)*(zeta + 0.5)*(zeta)*(zeta +1. ) ; 
+			dbasis[NUMNODESP1xP4*2+14] = gauss->coord3* (-8./3.)*((2. *zeta -1. )*(zeta+0.5)*(zeta +1.) +  zeta*(zeta -1.)*( 2.*zeta + 3./2.));
+
+			return;
+			#endif
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+}
+/*}}}*/
+void PentaRef::GetQuadJacobianDeterminant(IssmDouble* Jdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*This routine returns the values of the nodal functions  at the gaussian point.*/
+
+	IssmDouble x1,x2,x3,x4,y1,y2,y3,y4,z1,z2,z3,z4;
+
+	x1=xyz_list[0*3+0];
+	y1=xyz_list[0*3+1];
+	z1=xyz_list[0*3+2];
+	x2=xyz_list[1*3+0];
+	y2=xyz_list[1*3+1];
+	z2=xyz_list[1*3+2];
+	x3=xyz_list[2*3+0];
+	y3=xyz_list[2*3+1];
+	z3=xyz_list[2*3+2];
+	x4=xyz_list[3*3+0];
+	y4=xyz_list[3*3+1];
+	z4=xyz_list[3*3+2];
+
+	/*Jdet = (Area of the trapezoid)/(Area trapezoid ref) with AreaRef = 4*/
+	/*Area of a trabezoid = altitude * (base1 + base2)/2 */
+	*Jdet= sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)) * (z4-z1 + z3-z2)/8.;
+	if(*Jdet<0.) _error_("negative jacobian determinant!");
+
+}
+/*}}}*/
+void PentaRef::GetSegmentJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*The Jacobian determinant is constant over the element, discard the gaussian points. 
+	 * J is assumed to have been allocated of size 2x2.*/
+
+	IssmDouble x1=xyz_list[3*0+0];
+	IssmDouble y1=xyz_list[3*0+1];
+	IssmDouble z1=xyz_list[3*0+2];
+	IssmDouble x2=xyz_list[3*1+0];
+	IssmDouble y2=xyz_list[3*1+1];
+	IssmDouble z2=xyz_list[3*1+2];
+
+	*Jdet=.5*sqrt(pow(x2-x1,2) + pow(y2-y1,2) + pow(z2-z1,2));
+	if(*Jdet<0) _error_("negative jacobian determinant!");
+
+}
+/*}}}*/
+void PentaRef::GetTriaJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*The Jacobian determinant is constant over the element, discard the gaussian points. 
+	 * J is assumed to have been allocated of size 2x2.*/
+
+	IssmDouble x1=xyz_list[3*0+0];
+	IssmDouble y1=xyz_list[3*0+1];
+	IssmDouble z1=xyz_list[3*0+2];
+	IssmDouble x2=xyz_list[3*1+0];
+	IssmDouble y2=xyz_list[3*1+1];
+	IssmDouble z2=xyz_list[3*1+2];
+	IssmDouble x3=xyz_list[3*2+0];
+	IssmDouble y3=xyz_list[3*2+1];
+	IssmDouble z3=xyz_list[3*2+2];
+
+	/*Jdet = norm( AB ^ AC ) / (2 * area of the reference triangle), with areaRef=sqrt(3) */
+	*Jdet=SQRT3/6.*pow(pow(((y2-y1)*(z3-z1)-(z2-z1)*(y3-y1)),2)+pow(((z2-z1)*(x3-x1)-(x2-x1)*(z3-z1)),2)+pow(((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)),2),0.5);
+	if(*Jdet<0) _error_("negative jacobian determinant!");
+}
+/*}}}*/
+void PentaRef::VerticalSegmentIndicesBase(int** pindices,int* pnumseg,int finiteelement){/*{{{*/
+
+	/*Output*/
+	int  numseg;
+	int* indices = NULL;
+
+	switch(finiteelement){
+		case P1Enum: case P1DGEnum:
+			numseg = 3;
+			indices = xNew<int>(numseg*2);
+			indices[0*2 + 0] = 0; indices[0*2 + 1] = 3;
+			indices[1*2 + 0] = 1; indices[1*2 + 1] = 4;
+			indices[2*2 + 0] = 2; indices[2*2 + 1] = 5;
+			break;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			numseg = 3;
+			indices = xNew<int>(numseg*2);
+			indices[0*2 + 0] = 0; indices[0*2 + 1] = 3;
+			indices[1*2 + 0] = 1; indices[1*2 + 1] = 4;
+			indices[2*2 + 0] = 2; indices[2*2 + 1] = 5;
+			break;
+		case P2xP1Enum:
+			numseg = 6;
+			indices = xNew<int>(numseg*2);
+			indices[0*2 + 0] = 0; indices[0*2 + 1] = 3;
+			indices[1*2 + 0] = 1; indices[1*2 + 1] = 4;
+			indices[2*2 + 0] = 2; indices[2*2 + 1] = 5;
+			indices[3*2 + 0] = 6; indices[3*2 + 1] = 9;
+			indices[4*2 + 0] = 7; indices[4*2 + 1] = 10;
+			indices[5*2 + 0] = 8; indices[5*2 + 1] = 11;
+			break;
+		case P1xP2Enum:
+			numseg = 3;
+			indices = xNew<int>(numseg*2);
+			indices[0*2 + 0] = 0; indices[0*2 + 1] = 6;
+			indices[1*2 + 0] = 1; indices[1*2 + 1] = 7;
+			indices[2*2 + 0] = 2; indices[2*2 + 1] = 8;
+			break;
+		case P1xP3Enum:
+			numseg = 3;
+			indices = xNew<int>(numseg*2);
+			indices[0*2 + 0] = 0; indices[0*2 + 1] = 6;
+			indices[1*2 + 0] = 1; indices[1*2 + 1] = 7;
+			indices[2*2 + 0] = 2; indices[2*2 + 1] = 8;
+			break;
+		case P1xP4Enum:
+			numseg = 3;
+			indices = xNew<int>(numseg*2);
+			indices[0*2 + 0] = 0; indices[0*2 + 1] = 6;
+			indices[1*2 + 0] = 1; indices[1*2 + 1] = 7;
+			indices[2*2 + 0] = 2; indices[2*2 + 1] = 8;
+			break;
+		case P2Enum:
+			numseg = 6;
+			indices = xNew<int>(numseg*2);
+			indices[0*2 + 0] = 0;  indices[0*2 + 1] = 6;
+			indices[1*2 + 0] = 1;  indices[1*2 + 1] = 7;
+			indices[2*2 + 0] = 2;  indices[2*2 + 1] = 8;
+			indices[3*2 + 0] = 9;  indices[3*2 + 1] = 15;
+			indices[4*2 + 0] = 10; indices[4*2 + 1] = 16;
+			indices[5*2 + 0] = 11; indices[5*2 + 1] = 17;
+			break;
+		case P2bubbleEnum:
+			numseg = 6;
+			indices = xNew<int>(numseg*2);
+			indices[0*2 + 0] = 0;  indices[0*2 + 1] = 6;
+			indices[1*2 + 0] = 1;  indices[1*2 + 1] = 7;
+			indices[2*2 + 0] = 2;  indices[2*2 + 1] = 8;
+			indices[3*2 + 0] = 9;  indices[3*2 + 1] = 15;
+			indices[4*2 + 0] = 10; indices[4*2 + 1] = 16;
+			indices[5*2 + 0] = 11; indices[5*2 + 1] = 17;
+			break;
+		case P2xP4Enum:
+			numseg = 6;
+			indices = xNew<int>(numseg*2);
+			indices[0*2 + 0] = 0;  indices[0*2 + 1] = 6;
+			indices[1*2 + 0] = 1;  indices[1*2 + 1] = 7;
+			indices[2*2 + 0] = 2;  indices[2*2 + 1] = 8;
+			indices[3*2 + 0] = 9;  indices[3*2 + 1] = 15;
+			indices[4*2 + 0] = 10; indices[4*2 + 1] = 16;
+			indices[5*2 + 0] = 11; indices[5*2 + 1] = 17;
+			break;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+	/*Assign output pointer*/
+	*pnumseg   = numseg;
+	*pindices  = indices;
+}
+/*}}}*/
+int  PentaRef::NumberofNodes(int finiteelement){/*{{{*/
+
+	switch(finiteelement){
+		case NoneEnum:              return 0;
+		case P0Enum:                return NUMNODESP0;
+		case P1Enum:                return NUMNODESP1;
+		case P1DGEnum:              return NUMNODESP1;
+		case P1bubbleEnum:          return NUMNODESP1b;
+		case P1bubblecondensedEnum: return NUMNODESP1b;
+		case P2Enum:                return NUMNODESP2;
+		case P2bubbleEnum:          return NUMNODESP2b;
+		case P2bubblecondensedEnum: return NUMNODESP2b;
+		case P2xP1Enum:             return NUMNODESP2xP1;
+		case P1xP2Enum:             return NUMNODESP1xP2;
+		case P2xP4Enum:             return NUMNODESP2xP4;
+		case P1xP3Enum:             return NUMNODESP1xP3;
+		case P1xP4Enum:             return NUMNODESP1xP4;
+		case P1P1Enum:              return NUMNODESP1*2;
+		case P1P1GLSEnum:           return NUMNODESP1*2;
+		case MINIcondensedEnum:     return NUMNODESP1b+NUMNODESP1;
+		case MINIEnum:              return NUMNODESP1b+NUMNODESP1;
+		case TaylorHoodEnum:        return NUMNODESP2+NUMNODESP1;
+		case LATaylorHoodEnum:      return NUMNODESP2;
+		case OneLayerP4zEnum:       return NUMNODESP2xP4+NUMNODESP1;
+		case CrouzeixRaviartEnum:   return NUMNODESP2b+NUMNODESP1;
+		case LACrouzeixRaviartEnum: return NUMNODESP2b;
+		default:       _error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
+int  PentaRef::PressureInterpolation(int fe_stokes){/*{{{*/
+
+	switch(fe_stokes){
+		case P1P1Enum:              return P1Enum;
+		case P1P1GLSEnum:           return P1Enum;
+		case MINIcondensedEnum:     return P1Enum;
+		case MINIEnum:              return P1Enum;
+		case TaylorHoodEnum:        return P1Enum;
+		case LATaylorHoodEnum:      return NoneEnum;
+		case OneLayerP4zEnum:       return P1Enum;
+		case CrouzeixRaviartEnum:   return P1DGEnum;
+		case LACrouzeixRaviartEnum: return NoneEnum;
+		default:       _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
+void PentaRef::SurfaceNodeIndices(int* pnumindices,int** pindices,int finiteelement){/*{{{*/
+
+	/*Output*/
+	int  numindices;
+	int* indices = NULL;
+
+	switch(finiteelement){
+		case P1Enum: case P1DGEnum:
+			numindices = 3;
+			indices    = xNew<int>(numindices);
+			indices[0] = 3;
+			indices[1] = 4;
+			indices[2] = 5;
+			break;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			numindices = 3;
+			indices    = xNew<int>(numindices);
+			indices[0] = 3;
+			indices[1] = 4;
+			indices[2] = 5;
+			break;
+		case P2xP1Enum:
+			numindices = 6;
+			indices    = xNew<int>(numindices);
+			indices[0] = 3;
+			indices[1] = 4;
+			indices[2] = 5;
+			indices[3] = 9;
+			indices[4] = 10;
+			indices[5] = 11;
+			break;
+		case P1xP2Enum:
+		case P1xP3Enum:
+		case P1xP4Enum:
+			numindices = 3;
+			indices    = xNew<int>(numindices);
+			indices[0] = 3;
+			indices[1] = 4;
+			indices[2] = 5;
+			break;
+		case P2Enum:
+			numindices = 6;
+			indices    = xNew<int>(numindices);
+			indices[0] = 3;
+			indices[1] = 4;
+			indices[2] = 5;
+			indices[3] = 12;
+			indices[4] = 13;
+			indices[5] = 14;
+			break;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+	/*Assign output pointer*/
+	*pnumindices = numindices;
+	*pindices    = indices;
+}
+/*}}}*/
+int  PentaRef::TensorInterpolation(int fe_stokes){/*{{{*/
+
+	switch(fe_stokes){
+		case XTaylorHoodEnum:    return P1DGEnum;
+		default: _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
+int  PentaRef::VelocityInterpolation(int fe_stokes){/*{{{*/
+
+	switch(fe_stokes){
+		case P1P1Enum:              return P1Enum;
+		case P1P1GLSEnum:           return P1Enum;
+		case MINIcondensedEnum:     return P1bubbleEnum;
+		case MINIEnum:              return P1bubbleEnum;
+		case TaylorHoodEnum:        return P2Enum;
+		case LATaylorHoodEnum:      return P2Enum;
+		case OneLayerP4zEnum:       return P2xP4Enum;
+		case CrouzeixRaviartEnum:   return P2bubbleEnum;
+		case LACrouzeixRaviartEnum: return P2bubbleEnum;
+		default:       _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/PentaRef.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/PentaRef.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/PentaRef.h	(revision 27955)
@@ -0,0 +1,38 @@
+/*!\file:  PentaRef.h
+ * \brief abstract class for handling Penta oriented routines, like nodal functions, 
+ * strain rate generation, etc ...
+ */ 
+
+#ifndef _PENTAREF_H_
+#define _PENTAREF_H_
+
+class Gauss;
+class PentaRef{
+
+	public: 
+		PentaRef();
+		~PentaRef();
+
+		/*Numerics*/
+		void BasalNodeIndices(int* pnumindices,int** pindices,int finiteelement);
+		void GetInputDerivativeValue(IssmDouble* pvalues, IssmDouble* plist,IssmDouble* xyz_list, Gauss* gauss,int finiteelement);
+		void GetInputValue(IssmDouble* pvalue,IssmDouble* plist, Gauss* gauss,int finiteelement);
+		void GetJacobian(IssmDouble* J, IssmDouble* xyz_list,Gauss* gauss);
+		void GetJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void GetJacobianInvert(IssmDouble*  Jinv, IssmDouble* xyz_list,Gauss* gauss);
+		void GetLprimeFSSSA(IssmDouble* LprimeFSSSA, IssmDouble* xyz_list, Gauss* gauss);
+		void GetNodalFunctions(IssmDouble* basis, Gauss* gauss,int finiteelement);
+		void GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss,int finiteelement);
+		void GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,Gauss* gauss,int finiteelement);
+		void GetQuadJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void GetSegmentJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void GetTriaJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void VerticalSegmentIndicesBase(int** pindices,int* pnumseg,int finiteelement);
+		void Marshall(MarshallHandle* marshallhandle){ /*do nothing */};
+		int  NumberofNodes(int finiteelement);
+		int  PressureInterpolation(int fe_stokes);
+		void SurfaceNodeIndices(int* pnumindices,int** pindices,int finiteelement);
+		int  TensorInterpolation(int fe_stokes);
+		int  VelocityInterpolation(int fe_stokes);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Seg.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Seg.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Seg.cpp	(revision 27955)
@@ -0,0 +1,458 @@
+/*!\file Seg.cpp
+ * \brief: implementation of the Segment object
+ */
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include "../classes.h"
+#include "../Inputs/SegInput.h"
+#include "../Inputs/TriaInput.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMVERTICES 2
+/*Constructors/destructor/copy*/
+Seg::Seg(int seg_id, int seg_sid,int seg_lid,IoModel* iomodel,int nummodels)/*{{{*/
+		:ElementHook(nummodels,seg_id,NUMVERTICES,iomodel){
+
+			this->iscollapsed = 0;
+			this->collapsed_ids[0] = -1;
+			this->collapsed_ids[1] = -1;
+
+			/*id: */
+			this->id  = seg_id;
+			this->sid = seg_sid;
+			this->lid = seg_lid;
+
+			/*surface and base*/
+			this->isonsurface = false;
+			this->isonbase    = false;
+
+			//this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
+			this->parameters = NULL;
+
+			/*initialize pointers:*/
+			this->nodes    = NULL;
+			this->vertices = NULL;
+			this->material = NULL;
+
+			/*Only allocate pointer*/
+			this->element_type_list=xNew<int>(nummodels);
+
+			/*surface and base*/
+			this->isonsurface = true;
+			this->isonbase    = true;
+		}
+/*}}}*/
+Seg::~Seg(){/*{{{*/
+	this->parameters=NULL;
+}
+/*}}}*/
+Object* Seg::copy(){/*{{{*/
+
+	int i;
+	Seg* seg=NULL;
+
+	seg=new Seg();
+
+	seg->iscollapsed=this->iscollapsed;
+	seg->collapsed_ids[0]=this->collapsed_ids[0];
+	seg->collapsed_ids[1]=this->collapsed_ids[1];
+
+	//deal with TriaRef mother class
+	int nanalyses = this->numanalyses;
+	if(nanalyses > 0){
+		seg->element_type_list=xNew<int>(nanalyses);
+		for(i=0;i<nanalyses;i++){
+			if (this->element_type_list[i]) seg->element_type_list[i]=this->element_type_list[i];
+			else seg->element_type_list[i] = 0;
+		}
+	}
+	else seg->element_type_list = NULL;
+	seg->element_type=this->element_type;
+	seg->numanalyses=nanalyses;
+
+	//deal with ElementHook mother class
+	if (this->hnodes){
+		seg->hnodes=xNew<Hook*>(seg->numanalyses);
+		for(i=0;i<seg->numanalyses;i++){
+			if (this->hnodes[i]) seg->hnodes[i] = (Hook*)(this->hnodes[i]->copy());
+			else seg->hnodes[i] = NULL;
+		}
+	}
+	else seg->hnodes = NULL;
+
+	seg->hvertices = (Hook*)this->hvertices->copy();
+	seg->hmaterial = (Hook*)this->hmaterial->copy();
+	seg->hneighbors = NULL;
+
+	/*deal with Element fields: */
+	seg->id  = this->id;
+	seg->sid = this->sid;
+	seg->lid = this->lid;
+	seg->isonbase  = this->isonbase;
+	seg->isonsurface  = this->isonsurface;
+
+	/*point parameters: */
+	seg->parameters=this->parameters;
+
+	/*recover objects: */
+	if (this->nodes){
+		unsigned int num_nodes = 3;
+		seg->nodes = xNew<Node*>(num_nodes); //we cannot rely on an analysis_counter to tell us which analysis_type we are running, so we just copy the nodes.
+		for(i=0;i<num_nodes;i++) if(this->nodes[i]) seg->nodes[i]=this->nodes[i]; else seg->nodes[i] = NULL;
+	}
+	else seg->nodes = NULL;
+
+	seg->vertices = (Vertex**)this->hvertices->deliverp();
+	seg->material = (Material*)this->hmaterial->delivers();
+
+	return seg;
+
+}
+/*}}}*/
+void Seg::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = SegEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->iscollapsed);
+	marshallhandle->call(this->isonsurface);
+	marshallhandle->call(this->isonbase);
+	marshallhandle->call(this->collapsed_ids[0]);
+	marshallhandle->call(this->collapsed_ids[1]);
+
+	/*Call parent classes: */
+	ElementHook::Marshall(marshallhandle);
+	Element::MarshallElement2(marshallhandle,this->numanalyses);
+	SegRef::Marshall(marshallhandle);
+
+	vertices = (Vertex**)this->hvertices->deliverp();
+	material = (Material*)this->hmaterial->delivers();
+
+}
+/*}}}*/
+
+IssmDouble Seg::CharacteristicLength(void){/*{{{*/
+
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble x1,y1,x2,y2;
+
+	/*Get xyz list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	x1=xyz_list[0][0]; y1=xyz_list[0][1];
+	x2=xyz_list[1][0]; y2=xyz_list[1][1];
+
+	return sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
+}
+/*}}}*/
+int        Seg::FiniteElement(void){/*{{{*/
+	return this->element_type;
+}
+/*}}}*/
+void       Seg::GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){/*{{{*/
+
+	/* Intermediaries */
+	int nrfrontnodes,index;
+	IssmDouble  levelset[NUMVERTICES];
+
+	/*Recover parameters and values*/
+	Element::GetInputListOnVertices(&levelset[0],levelsetenum);
+
+	/* Get nodes where there is no ice */
+	nrfrontnodes=0;
+	for(int i=0;i<NUMVERTICES;i++){
+		if(levelset[i]>=0.){
+			index=i;
+			nrfrontnodes++;
+		}
+	}
+
+	_assert_(nrfrontnodes==1);
+
+	IssmDouble* xyz_front = xNew<IssmDouble>(3);
+
+	/* Return nodes */
+	for(int dir=0;dir<3;dir++){
+		xyz_front[dir]=xyz_list[3*index+dir];
+	}
+
+	*pxyz_front=xyz_front;
+}/*}}}*/
+Input*    Seg::GetInput(int inputenum){/*{{{*/
+
+	if(this->iscollapsed){
+		TriaInput* input = this->inputs->GetTriaInput(inputenum);
+		if(!input) return input;
+
+		/*Intermediaries*/
+		int numindices;
+		int indices[7];
+
+		/*Check interpolation*/
+		int interpolation = input->GetInterpolation();
+		switch(interpolation){
+			case P0Enum:
+				numindices = 1;
+				indices[0] = this->lid;
+				input->Serve(numindices,&indices[0]);
+				break;
+			case P1Enum:
+				numindices = 2;
+				for(int i=0;i<numindices;i++) indices[i] = vertices[i]->lid;
+				input->Serve(numindices,&indices[0]);
+				break;
+			case P1DGEnum:
+			case P1bubbleEnum:
+			default:
+				input->ServeCollapsed(this->lid,this->collapsed_ids[0],this->collapsed_ids[1]);
+				break;
+		}
+		/*Flag as collapsed for later use*/
+		input->SetServeCollapsed(true);
+
+		return input;
+	}
+	else{
+		SegInput* input = this->inputs->GetSegInput(inputenum);
+		if(!input) return input;
+
+		/*Intermediaries*/
+		int numindices;
+		int indices[7];
+
+		/*Check interpolation*/
+		int interpolation = input->GetInterpolation();
+		switch(interpolation){
+			case P0Enum:
+				numindices = 1;
+				indices[0] = this->lid;
+				input->Serve(numindices,&indices[0]);
+				break;
+			case P1Enum:
+				numindices = 3;
+				for(int i=0;i<3;i++) indices[i] = vertices[i]->lid;
+				input->Serve(numindices,&indices[0]);
+				break;
+			case P1DGEnum:
+				numindices = 3;
+				input->Serve(this->lid,numindices);
+				break;
+			default:
+				input->Serve(this->lid,this->GetNumberOfNodes(interpolation));
+		}
+
+		return input;
+	}
+}/*}}}*/
+Input*    Seg::GetInput(int inputenum,IssmDouble time){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+IssmDouble Seg::GetGroundedPortion(IssmDouble* xyz_list){/*{{{*/
+	/*Computeportion of the element that is grounded*/ 
+
+	bool              mainlyfloating = true;
+	const IssmPDouble epsilon        = 1.e-15;
+	IssmDouble        phi;
+	IssmDouble        gl[NUMVERTICES];
+
+	/*Recover parameters and values*/
+	Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum);
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+
+	if(gl[0]>0 && gl[1]>0) phi=1; // All grounded
+	else if(gl[0]<0 && gl[1]<0) phi=0; // All floating
+	else if(gl[0]<0 && gl[1]>0){ //1 grounded
+		phi=1./(1.-gl[0]/gl[1]);
+	}
+	else if(gl[1]<0 && gl[0]>0){ //0 grounded
+		phi=1./(1.-gl[1]/gl[0]);
+	}
+
+	if(phi>1 || phi<0) _error_("Error. Problem with portion of grounded element: value should be between 0 and 1");
+
+	return phi;
+}
+/*}}}*/
+int        Seg::GetNumberOfNodes(void){/*{{{*/
+	return this->NumberofNodes(this->element_type);
+}
+/*}}}*/
+int        Seg::GetNumberOfVertices(void){/*{{{*/
+	return NUMVERTICES;
+}
+/*}}}*/
+void       Seg::GetVerticesCoordinates(IssmDouble** pxyz_list){/*{{{*/
+
+	IssmDouble* xyz_list = xNew<IssmDouble>(NUMVERTICES*3);
+	::GetVerticesCoordinates(xyz_list,this->vertices,NUMVERTICES);
+
+	/*Assign output pointer*/
+	*pxyz_list = xyz_list;
+
+}/*}}}*/
+void       Seg::GetInputListOnVertices(IssmDouble* pvalue,Input* input,IssmDouble default_value){/*{{{*/
+
+	/*Checks in debugging mode*/
+	_assert_(pvalue);
+
+	/* Start looping on the number of vertices: */
+	if(input){
+		GaussSeg gauss;
+		for(int iv=0;iv<NUMVERTICES;iv++){
+			gauss.GaussVertex(iv);
+			input->GetInputValue(&pvalue[iv],&gauss);
+		}
+	}
+	else{
+		for(int iv=0;iv<NUMVERTICES;iv++) pvalue[iv] = default_value;
+	}
+}
+/*}}}*/
+void       Seg::GetInputListOnNodes(IssmDouble* pvalue,Input* input,IssmDouble default_value){/*{{{*/
+
+	/*Checks in debugging mode*/
+	_assert_(pvalue);
+
+	/*What type of finite element are we dealing with?*/
+	int fe       = this->FiniteElement();
+	int numnodes = this->GetNumberOfNodes();
+
+	/* Start looping on the number of vertices: */
+	if(input){
+		GaussSeg gauss;
+		for(int iv=0;iv<numnodes;iv++){
+			gauss.GaussNode(fe,iv);
+			input->GetInputValue(&pvalue[iv],&gauss);
+		}
+	}
+	else{
+		for(int iv=0;iv<numnodes;iv++) pvalue[iv] = default_value;
+	}
+}
+/*}}}*/
+bool       Seg::IsIcefront(void){/*{{{*/
+
+	bool isicefront;
+	int i,nrice;
+	IssmDouble ls[NUMVERTICES];
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&ls[0],MaskIceLevelsetEnum);
+
+	/* If only one vertex has ice, there is an ice front here */
+	isicefront=false;
+	if(IsIceInElement()){
+		nrice=0;       
+		for(i=0;i<NUMVERTICES;i++)
+		 if(ls[i]<0.) nrice++;
+		if(nrice==1) isicefront= true;
+	}
+	return isicefront;
+}/*}}}*/
+bool       Seg::IsSpawnedElement(void){/*{{{*/
+
+	if(this->iscollapsed!=0){
+		return true;
+	}
+
+	return false;
+
+}/*}}}*/
+void       Seg::JacobianDeterminant(IssmDouble* pJdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussSegEnum);
+	this->GetJacobianDeterminant(pJdet,xyz_list,(GaussSeg*)gauss);
+
+}
+/*}}}*/
+void       Seg::JacobianDeterminantSurface(IssmDouble* pJdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	*pJdet = 1.;
+
+}
+/*}}}*/
+Gauss*     Seg::NewGauss(void){/*{{{*/
+	return new GaussSeg();
+}
+/*}}}*/
+Gauss*     Seg::NewGauss(int order){/*{{{*/
+	return new GaussSeg(order);
+}
+/*}}}*/
+Gauss*     Seg::NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order){/*{{{*/
+
+	/*Output*/
+	Gauss* gauss = NULL;
+
+	if(xyz_list_front[0] == xyz_list[0]){
+		gauss = new GaussSeg(-1.);
+	}
+	else if(xyz_list_front[0] == xyz_list[3*1+0]){
+		gauss = new GaussSeg(+1.);
+	}
+	else{
+		_error_("front is not located on element edge");
+	}
+
+	return gauss;
+}
+/*}}}*/
+void       Seg::NodalFunctions(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussSegEnum);
+	this->GetNodalFunctions(basis,(GaussSeg*)gauss,this->element_type);
+
+}
+/*}}}*/
+void       Seg::NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussSegEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussSeg*)gauss,this->element_type);
+
+}
+/*}}}*/
+void       Seg::NodalFunctionsP1(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussSegEnum);
+	this->GetNodalFunctions(basis,(GaussSeg*)gauss,P1Enum);
+
+}
+/*}}}*/
+void       Seg::NodalFunctionsP2(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussSegEnum);
+	this->GetNodalFunctions(basis,(GaussSeg*)gauss,P2Enum);
+
+}
+/*}}}*/
+void       Seg::NormalSection(IssmDouble* normal,IssmDouble* xyz_list_front){/*{{{*/
+
+	IssmDouble* xyz_list = xNew<IssmDouble>(NUMVERTICES*3);
+	::GetVerticesCoordinates(xyz_list,this->vertices,NUMVERTICES);
+
+	if(xyz_list_front[0]>xyz_list[0])
+	 normal[0]= + 1.;
+	else
+	 normal[0]= - 1.;
+
+	xDelete<IssmDouble>(xyz_list);
+}
+/*}}}*/
+int        Seg::ObjectEnum(void){/*{{{*/
+
+	return SegEnum;
+
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Seg.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Seg.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Seg.h	(revision 27955)
@@ -0,0 +1,202 @@
+/*! \file Seg.h
+ *  \brief: header file for seg object
+ */
+
+#ifndef _SEG_H_
+#define _SEG_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Element.h"
+#include "./ElementHook.h"
+#include "./SegRef.h"
+class Parameters;
+class Inputs;
+class IoModel;
+class Results;
+class Node;
+class Material;
+class Matlitho;
+class ElementMatrix;
+class ElementVector;
+class Vertex;
+
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/Enum/Enum.h"
+/*}}}*/
+
+class Seg: public Element,public ElementHook,public SegRef{
+
+	public:
+		int iscollapsed;
+		int collapsed_ids[2];
+
+		/*Seg constructors, destructors {{{*/
+		Seg(){};
+		Seg(int seg_id,int seg_sid,int seg_lid,IoModel* iomodel,int nummodels);
+		~Seg();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object *copy();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+		/*}}}*/
+		/*Element virtual functions definitions: {{{*/
+		void        AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part){_error_("not implemented yet");};
+		void        CalvingRateLevermann(void){_error_("not implemented yet");};
+		IssmDouble  CharacteristicLength(void);
+		void        ComputeDeviatoricStressTensor(){_error_("not implemented yet");};
+		void        ComputeEsaStrainAndVorticity(){_error_("not implemented yet!");};
+		void        ComputeSigmaNN(){_error_("not implemented yet");};
+		void        ComputeStressTensor(){_error_("not implemented yet");};
+		void        Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters,Inputs* inputsin){_error_("not implemented yet");};
+		void        ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index,int offset,int M,int N,int interp){_error_("not implemented yet");};
+		void        ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum,int control_interp){_error_("not implemented yet");};
+		void        ElementResponse(IssmDouble* presponse,int response_enum){_error_("not implemented yet");};
+		void        ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze,Vector<IssmDouble>* vareae,bool spherical=false){_error_("not implemented yet");};
+		void        ElementCoordinates(Vector<IssmDouble>* vlonge,Vector<IssmDouble>* vlate,Vector<IssmDouble>* vareae){_error_("not implemented yet");};
+		void        ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz){_error_("not implemented yet");};
+		int         FiniteElement(void);
+		IssmDouble  FloatingArea(bool scaled){_error_("not implemented yet");};
+		void        FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){_error_("not implemented yet");};
+		Element*    GetBasalElement(void){_error_("not implemented yet");};
+		int         GetElementType(void){_error_("not implemented yet");};
+		void        GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating){_error_("not implemented yet");};
+		IssmDouble  GetGroundedPortion(IssmDouble* xyz_list);
+		void        GetFractionGeometry(IssmDouble* weights, IssmDouble* pphi, int* ppoint1,IssmDouble* pfraction1,IssmDouble* pfraction2, bool* ptrapezeisnegative, IssmDouble* gl){_error_("not implemented yet");};
+		void       GetNodalWeightsAndAreaAndCentroidsFromLeveset(IssmDouble* loadweights, IssmDouble* ploadarea, IssmDouble* platbar, IssmDouble* plongbar, IssmDouble late, IssmDouble longe, IssmDouble area,  int levelsetenum){_error_("not implemented yet");};
+		void       GetNodalWeightsAndAreaAndCentroidsFromLeveset(IssmDouble* loadweights, IssmDouble* ploadarea, IssmDouble* platbar, IssmDouble* plongbar, IssmDouble late, IssmDouble longe, IssmDouble area,  int levelset1enum, int levelset2enum){_error_("not implemented yet");};
+		void        GetBarycenterFromLevelset(IssmDouble* platbar, IssmDouble* plongbar,IssmDouble phi,IssmDouble fraction1,IssmDouble fraction2,IssmDouble late, IssmDouble longe, int point1,int istrapeze1, IssmDouble planetradius){_error_("not implemented yet");};
+		void		GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum);
+		Input*     GetInput(int enumtype);
+		Input*     GetInput(int enumtype,IssmDouble time);
+		Input*     GetInput(int inputenum,IssmDouble start_time,IssmDouble end_time,int averaging_method){_error_("not implemented yet!");};
+		void        GetInputListOnVertices(IssmDouble* pvalue,Input* input,IssmDouble default_value);
+		void        GetInputListOnNodes(IssmDouble* pvalue,Input* input,IssmDouble default_value);
+		void        GetInputValue(IssmDouble* pvalue,Vertex* vertex,int enumtype){_error_("not implemented yet");};
+		void		   GetLevelCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum,IssmDouble level){_error_("not implemented");};
+		void        GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* levelsetvalues){_error_("not implemented yet");};
+		int         GetNumberOfNodes(void);
+		int         GetNumberOfNodes(int enum_type){_error_("not implemented yet");};
+		int         GetNumberOfVertices(void);
+		void        GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,int N,const char* data,int offset){_error_("not implemented yet");};
+		void        GetVerticesCoordinates(IssmDouble** pxyz_list);
+		void        GetVerticesCoordinatesBase(IssmDouble** pxyz_list){_error_("not implemented yet");};
+		void        GetVerticesCoordinatesTop(IssmDouble** pxyz_list){_error_("not implemented yet");};
+		IssmDouble  GroundedArea(bool scaled){_error_("not implemented yet");};
+		IssmDouble  IceVolume(bool scaled){_error_("not implemented yet");};
+		IssmDouble  IceVolumeAboveFloatation(bool scaled){_error_("not implemented yet");};
+		void        InputDepthAverageAtBase(int enum_type,int average_enum_type){_error_("not implemented yet");};
+		void        InputExtrude(int enum_type,int start){_error_("not implemented"); /*For penta only*/};
+		void        InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
+		void        InputUpdateFromSolutionOneDof(IssmDouble* solution,int inputenum){_error_("not implemented yet");};
+		void        InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solution,int inputenum){_error_("not implemented yet");};
+		void        InputUpdateFromVector(IssmDouble* vector, int name, int type){_error_("not implemented yet");};
+		bool        IsFaceOnBoundary(void){_error_("not implemented yet");};
+		bool		   IsIcefront(void);
+		bool        IsNodeOnShelfFromFlags(IssmDouble* flags){_error_("not implemented yet");};
+		bool        IsZeroLevelset(int levelset_enum){_error_("not implemented");};
+		void        JacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void        JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss){_error_("not implemented yet");};
+		void        JacobianDeterminantLine(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void        JacobianDeterminantSurface(IssmDouble*  pJdet, IssmDouble* xyz_list,Gauss* gauss);
+		void        JacobianDeterminantTop(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss){_error_("not implemented yet");};
+		IssmDouble  Masscon(IssmDouble* levelset){_error_("not implemented yet");};
+		IssmDouble  MassFlux(IssmDouble* segment){_error_("not implemented yet");};
+		IssmDouble  MassFlux(IssmDouble x1,IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id){_error_("not implemented yet");}
+		void        MaterialUpdateFromTemperature(void){_error_("not implemented yet");};
+		IssmDouble  MinEdgeLength(IssmDouble* xyz_list){_error_("not implemented yet");};
+		IssmDouble  Misfit(int modelenum,int observationenum,int weightsenum){_error_("not implemented yet");};
+		IssmDouble  MisfitArea(int weightsenum){_error_("not implemented yet");};
+		Gauss*      NewGauss(void);
+		Gauss*      NewGauss(int order);
+      Gauss*      NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order);
+      Gauss*      NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert){_error_("not implemented yet");};
+      Gauss*      NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order){_error_("not implemented yet");};
+      Gauss*      NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,int order){_error_("not implemented yet");};
+      Gauss*      NewGauss(IssmDouble fraction1,IssmDouble fraction2,int order){_error_("not implemented yet");};
+		Gauss*      NewGaussBase(int order){_error_("not implemented yet");};
+		Gauss*      NewGaussLine(int vertex1,int vertex2,int order){_error_("not implemented yet");};
+		Gauss*      NewGaussTop(int order){_error_("not implemented yet");};
+		int         NodalValue(IssmDouble* pvalue, int index, int natureofdataenum){_error_("not implemented yet");};
+		void        NodalFunctions(IssmDouble* basis,Gauss* gauss);
+		void        NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void        NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void        NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void        NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");};
+		void        NodalFunctionsP1(IssmDouble* basis,Gauss* gauss);
+		void        NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void        NodalFunctionsP2(IssmDouble* basis,Gauss* gauss);
+		void        NodalFunctionsTensor(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");};
+		void        NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");};
+		void        NormalBase(IssmDouble* normal,IssmDouble* xyz_list){_error_("not implemented yet");};
+		void        NormalSection(IssmDouble* normal,IssmDouble* xyz_list);
+		void        NormalTop(IssmDouble* normal,IssmDouble* xyz_list){_error_("not implemented yet");};
+		int         NumberofNodesPressure(void){_error_("not implemented yet");};
+		int         NumberofNodesVelocity(void){_error_("not implemented yet");};
+		void        PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding){_error_("not implemented yet");};
+		int         PressureInterpolation(void){_error_("not implemented yet");};
+		void        ReduceMatrices(ElementMatrix* Ke,ElementVector* pe){_error_("not implemented yet");};
+		void        ResetFSBasalBoundaryCondition(void){_error_("not implemented yet");};
+		void        ResetHooks(){_error_("not implemented yet");};
+		void        SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index,int offset,int M,int N){_error_("not implemented yet");};
+		void        SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters){_error_("not implemented yet");};
+		void        SetTemporaryElementType(int element_type_in){_error_("not implemented yet");};
+	   Element*    SpawnBasalElement(bool depthaverage_materials){_error_("not implemented yet");};
+		Element*    SpawnTopElement(void){_error_("not implemented yet");};
+		bool        IsSpawnedElement(void);
+		void       SetElementInput(int enum_in,IssmDouble value, int type){_error_("not implemented yet");};
+		IssmDouble  StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){_error_("not implemented yet");};
+		void        StabilizationParameterAnisotropic(IssmDouble* tau_parameter_anisotropic, IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble hx, IssmDouble hy,  IssmDouble hz, IssmDouble kappa){_error_("not implemented yet");};
+		void        StrainRateparallel(void){_error_("not implemented yet");};
+		void        StrainRateperpendicular(void){_error_("not implemented yet");};
+		void        StressIntensityFactor(void){_error_("not implemented yet");};
+		IssmDouble  SurfaceArea(void){_error_("not implemented yet");};
+		int         TensorInterpolation(void){_error_("not implemented yet");};
+		IssmDouble  TimeAdapt(){_error_("not implemented yet");};
+		IssmDouble  TotalFloatingBmb(bool scaled){_error_("not implemented yet");};
+		IssmDouble  TotalGroundedBmb(bool scaled){_error_("not implemented yet");};
+		IssmDouble  TotalSmb(bool scaled){_error_("not implemented yet");};
+		IssmDouble  TotalSmbMelt(bool scaled){_error_("not implemented yet");};
+		IssmDouble  TotalSmbRefreeze(bool scaled){_error_("not implemented yet");};
+		void        Update(Inputs* inputs,int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement){_error_("not implemented yet");};
+		void        UpdateConstraintsExtrudeFromBase(){_error_("not implemented");};
+		void        UpdateConstraintsExtrudeFromTop(){_error_("not implemented");};
+		int         UpdatePotentialUngrounding(IssmDouble* vertices_potentially_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf){_error_("not implemented yet");};
+		void        ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void        ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss){_error_("not implemented yet");};
+		int         VelocityInterpolation(void){_error_("not implemented yet");};
+		int         VertexConnectivity(int vertexindex){_error_("not implemented yet");};
+		void        VerticalSegmentIndices(int** pindices,int* pnumseg){_error_("not implemented yet");};
+		void        VerticalSegmentIndicesBase(int** pindices,int* pnumseg){_error_("not implemented yet");};
+		IssmDouble     GetArea3D(void){_error_("not implemented yet!");};
+		IssmDouble     GetAreaSpherical(void){_error_("not implemented yet!");};
+		IssmDouble GetTriangleAreaSpherical(IssmDouble xyz_list[3][3]){_error_("not implemented yet");};
+
+#ifdef _HAVE_ESA_
+		void    EsaGeodetic2D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,Vector<IssmDouble>* pX,Vector<IssmDouble>* pY,IssmDouble* xx,IssmDouble* yy){_error_("not implemented yet!");};
+		void    EsaGeodetic3D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz){_error_("not implemented yet!");};
+#endif
+#ifdef _HAVE_SEALEVELCHANGE_
+		void       GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,Matlitho* litho, IssmDouble* x,IssmDouble* y){_error_("not implemented yet");};
+		void       SealevelchangeGeometrySubElementKernel(SealevelGeometry* slgeom){_error_("not implemented yet");};
+		void       SealevelchangeShift(GrdLoads* loads, IssmDouble offset, SealevelGeometry* slgeom){_error_("not implemented yet");};
+		void       SealevelchangeGeometryInitial(IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae, int* lids,int* vcount){_error_("not implemented yet");};
+		void       SealevelchangeGeometryCentroidLoads(SealevelGeometry* slgeom, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae){_error_("not implemented yet");};
+		void       SealevelchangeGeometrySubElementLoads(SealevelGeometry* slgeom, IssmDouble* areae){_error_("not implemented yet");};
+		void       SealevelchangeBarystaticLoads(GrdLoads* loads,  BarystaticContributions* barycontrib, SealevelGeometry* slgeom){_error_("not implemented yet");};
+		void       SealevelchangeConvolution(IssmDouble* sealevelpercpu, GrdLoads* loads, IssmDouble* rotationvector,SealevelGeometry* slgeom){_error_("not implemented yet");};
+		void       SealevelchangeOceanAverage(GrdLoads* loads, Vector<IssmDouble>* oceanareas, Vector<IssmDouble>* subelementoceanareas, IssmDouble* sealevelpercpu, SealevelGeometry* slgeom){_error_("not implemented yet");};
+		void       SealevelchangeDeformationConvolution(IssmDouble* sealevelpercpu, GrdLoads* loads, IssmDouble* rotationvector,SealevelGeometry* slgeom){_error_("not implemented yet");};
+		void       SealevelchangeUpdateViscousFields(IssmDouble lincoeff, int newindex, int offset){_error_("not implemented yet");};
+#endif
+
+#ifdef _HAVE_DAKOTA_
+		void  InputUpdateFromMatrixDakota(IssmDouble* matrix, int nows, int ncols, int name, int type){_error_("not implemented yet");};
+		void  InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){_error_("not implemented yet");};
+		void  InputScaleFromDakota(IssmDouble* distributed_values, IssmDouble* partition, int npart, int nt, int name){_error_("not implemented yet!");}
+;
+#endif
+		/*}}}*/
+};
+#endif  /* _SEG_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/SegRef.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/SegRef.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/SegRef.cpp	(revision 27955)
@@ -0,0 +1,202 @@
+/*!\file SegRef.c
+ * \brief: implementation of the SegRef object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMNODESP0  1
+#define NUMNODESP1  2
+#define NUMNODESMAX 2
+
+/*Object constructors and destructor*/
+SegRef::SegRef(){/*{{{*/
+}
+/*}}}*/
+SegRef::~SegRef(){/*{{{*/
+}
+/*}}}*/
+
+/*Reference Element numerics*/
+void SegRef::GetInputDerivativeValue(IssmDouble* p, IssmDouble* plist,IssmDouble* xyz_list, GaussSeg* gauss,int finiteelement){/*{{{*/
+
+	/*From node values of parameter p (plist[0],plist[1]), return parameter derivative value at gaussian 
+	 * point specified by gauss_basis:
+	 *   dp/dx=plist[0]*dh1/dx+plist[1]*dh2/dx
+	 *
+	 * p is a vector already allocated.
+	 *
+	 * WARNING: For a significant gain in performance, it is better to use
+	 * static memory allocation instead of dynamic.
+	 */
+
+	/*Allocate derivatives of basis functions*/
+	IssmDouble  dbasis[1*NUMNODESMAX];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+	_assert_(numnodes<=NUMNODESMAX);
+
+	/*Get basis functions derivatives at this point*/
+	GetNodalFunctionsDerivatives(&dbasis[0],xyz_list,gauss,finiteelement);
+
+	/*Calculate parameter for this Gauss point*/
+	IssmDouble dpx=0.;
+	for(int i=0;i<numnodes;i++) dpx += dbasis[0*numnodes+i]*plist[i];
+
+	/*Assign values*/
+	p[0]=dpx;
+}
+/*}}}*/
+void SegRef::GetInputValue(IssmDouble* p, IssmDouble* plist, GaussSeg* gauss,int finiteelement){/*{{{*/
+	/* WARNING: For a significant gain in performance, it is better to use
+	 * static memory allocation instead of dynamic.*/
+
+	/*Allocate basis functions*/
+	IssmDouble  basis[NUMNODESMAX];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+	_assert_(numnodes<=NUMNODESMAX);
+
+	/*Get basis functions at this point*/
+	GetNodalFunctions(&basis[0],gauss,finiteelement);
+
+	/*Calculate parameter for this Gauss point*/
+	IssmDouble value =0.;
+	for(int i=0;i<numnodes;i++) value += basis[i]*plist[i];
+
+	/*Assign output pointer*/
+	*p = value;
+}
+/*}}}*/
+void SegRef::GetJacobian(IssmDouble* J, IssmDouble* xyz_list,GaussSeg* gauss){/*{{{*/
+	/*The Jacobian is constant over the element, discard the gaussian points. 
+	 * J is assumed to have been allocated of size 1*/
+
+	IssmDouble x1=xyz_list[3*0+0];
+	IssmDouble x2=xyz_list[3*1+0];
+
+	*J=.5*fabs(x2-x1);
+}
+/*}}}*/
+void SegRef::GetJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,GaussSeg* gauss){/*{{{*/
+	/*The Jacobian determinant is constant over the element, discard the gaussian points. 
+	 * J is assumed to have been allocated of size 1.*/
+
+	/*Call Jacobian routine to get the jacobian:*/
+	GetJacobian(Jdet, xyz_list, gauss);
+	if(*Jdet<0) _error_("negative jacobian determinant!");
+
+}
+/*}}}*/
+void SegRef::GetJacobianInvert(IssmDouble* Jinv, IssmDouble* xyz_list,GaussSeg* gauss){/*{{{*/
+
+	/*Jacobian*/
+	IssmDouble J;
+
+	/*Call Jacobian routine to get the jacobian:*/
+	GetJacobian(&J, xyz_list, gauss);
+
+	/*Invert Jacobian matrix: */
+	*Jinv = 1./J;
+}
+/*}}}*/
+void SegRef::GetNodalFunctions(IssmDouble* basis,GaussSeg* gauss,int finiteelement){/*{{{*/
+	/*This routine returns the values of the nodal functions  at the gaussian point.*/
+
+	_assert_(basis);
+
+	switch(finiteelement){
+		case P0Enum:
+			basis[0]=1.;
+			return;
+		case P1Enum: case P1DGEnum:
+			basis[0]=(1.-gauss->coord1)/2.;
+			basis[1]=(1.+gauss->coord1)/2.;
+			return;
+		case P2Enum:
+			basis[0]=(gauss->coord1-1.)*gauss->coord1/2.;
+			basis[1]=gauss->coord1*(1.+gauss->coord1)/2.;
+			basis[2]=(1.-gauss->coord1)*(1.+gauss->coord1);
+			return;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+}
+/*}}}*/
+void SegRef::GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, GaussSeg* gauss,int finiteelement){/*{{{*/
+
+	/*This routine returns the values of the nodal functions derivatives  (with respect to the 
+	 * actual coordinate system): */
+	IssmDouble    Jinv;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+
+	/*Get nodal functions derivatives in reference triangle*/
+	IssmDouble dbasis_ref[1*NUMNODESMAX];
+	GetNodalFunctionsDerivativesReference(dbasis_ref,gauss,finiteelement); 
+
+	/*Get Jacobian invert: */
+	GetJacobianInvert(&Jinv, xyz_list, gauss);
+
+	/*Build dbasis: 
+	 * [dhi/dx]= Jinv*[dhi/dr]
+	 */
+	for(int i=0;i<numnodes;i++){
+		dbasis[i] = Jinv*dbasis_ref[i];
+	}
+}
+/*}}}*/
+void SegRef::GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,GaussSeg* gauss,int finiteelement){/*{{{*/
+	/*This routine returns the values of the nodal functions derivatives  (with respect to the 
+	 * natural coordinate system) at the gaussian point. */
+
+	_assert_(dbasis && gauss);
+
+	switch(finiteelement){
+		case P0Enum:
+			/*Nodal function 1*/
+			dbasis[0] = 0.;
+			break;
+		case P1Enum: case P1DGEnum:
+			/*Nodal function 1*/
+			dbasis[0] = -0.5;
+			/*Nodal function 2*/
+			dbasis[1] = 0.5;
+			return;
+		case P2Enum:
+			/*Nodal function 1*/
+			dbasis[0] = (gauss->coord1-1.)/2. + gauss->coord1/2.;
+			dbasis[1] = (1.+gauss->coord1)/2. + gauss->coord1/2.;
+			dbasis[2] = -2.*gauss->coord1;
+			return;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+}
+/*}}}*/
+int  SegRef::NumberofNodes(int finiteelement){/*{{{*/
+
+	switch(finiteelement){
+		case P0Enum:                return NUMNODESP0;
+		case P1Enum:                return NUMNODESP1;
+		case P1DGEnum:              return NUMNODESP1;
+		default: _error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/SegRef.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/SegRef.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/SegRef.h	(revision 27955)
@@ -0,0 +1,29 @@
+
+/*!\file:  SegRef.h
+ * \brief abstract class for handling Seg oriented routines, like nodal functions, 
+ * strain rate generation, etc ...
+ */ 
+
+#ifndef _SEGREF_H_
+#define _SEGREF_H_
+
+class GaussSeg;
+
+class SegRef{
+
+	public: 
+		SegRef();
+		~SegRef();
+
+		void GetInputDerivativeValue(IssmDouble* p, IssmDouble* plist,IssmDouble* xyz_list, GaussSeg* gauss,int finiteelement);
+		void GetInputValue(IssmDouble* p, IssmDouble* plist, GaussSeg* gauss,int finiteelement);
+		void GetJacobian(IssmDouble* J, IssmDouble* xyz_list,GaussSeg* gauss);
+		void GetJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,GaussSeg* gauss);
+		void GetJacobianInvert(IssmDouble* Jinv, IssmDouble* xyz_list,GaussSeg* gauss);
+		void GetNodalFunctions(IssmDouble* basis,GaussSeg* gauss,int finiteelement);
+		void GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, GaussSeg* gauss,int finiteelement);
+		void GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,GaussSeg* gauss,int finiteelement);
+		void Marshall(MarshallHandle* marshallhandle){ /*do nothing */};
+		int  NumberofNodes(int finiteelement);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Tetra.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Tetra.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Tetra.cpp	(revision 27955)
@@ -0,0 +1,967 @@
+/*!\file Tetra.cpp
+ * \brief: implementation of the Tetrament object
+ */
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include "../classes.h"
+#include "../Inputs/ElementInput.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMVERTICES 4
+
+/*Constructors/destructor/copy*/
+Tetra::Tetra(int tet_id, int tet_sid,int tet_lid,IoModel* iomodel,int nummodels)/*{{{*/
+		:ElementHook(nummodels,tet_id,NUMVERTICES,iomodel){
+
+			/*id: */
+			this->id  = tet_id;
+			this->sid = tet_sid;
+			this->lid = tet_lid;
+
+			/*surface and base*/
+			this->isonsurface = false;
+			this->isonbase    = false;
+
+			//this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
+			this->parameters = NULL;
+
+			/*initialize pointers:*/
+			this->nodes    = NULL;
+			this->vertices = NULL;
+			this->material = NULL;
+
+			/*Only allocate pointer*/
+			this->element_type_list=xNew<int>(nummodels);
+
+			/*surface and base*/
+			_assert_(iomodel->Data("md.mesh.vertexonsurface"));
+			_assert_(iomodel->Data("md.mesh.vertexonbase"));
+			this->isonsurface = false;
+			this->isonbase    = false;
+			IssmDouble sum = 0.;
+			for(int i=0;i<NUMVERTICES;i++) sum += iomodel->Data("md.mesh.vertexonsurface")[reCast<int>(iomodel->elements[(tet_id-1)*NUMVERTICES+i])-1];
+			_assert_(sum>=0 && sum<4);
+			if(sum>2.5) this->isonsurface = true;
+			sum = 0.;
+			for(int i=0;i<NUMVERTICES;i++) sum += iomodel->Data("md.mesh.vertexonbase")[reCast<int>(iomodel->elements[(tet_id-1)*NUMVERTICES+i])-1];
+			_assert_(sum>=0 && sum<4);
+			if(sum>2.5) this->isonbase = true;
+		}
+/*}}}*/
+Tetra::~Tetra(){/*{{{*/
+	this->parameters=NULL;
+}
+/*}}}*/
+Object* Tetra::copy() {/*{{{*/
+
+	int i;
+	Tetra* tetra=NULL;
+
+	tetra=new Tetra();
+
+	//deal with TetraRef mother class
+	int nanalyses = this->numanalyses;
+	if(nanalyses > 0){
+		tetra->element_type_list=xNew<int>(nanalyses);
+		for(i=0;i<nanalyses;i++){
+			if (this->element_type_list[i]) tetra->element_type_list[i]=this->element_type_list[i];
+			else tetra->element_type_list[i] = 0;
+		}
+	}
+	else tetra->element_type_list = NULL;
+	tetra->element_type=this->element_type;
+	tetra->numanalyses=nanalyses;
+
+	//deal with ElementHook mother class
+	if (this->hnodes){
+		tetra->hnodes=xNew<Hook*>(tetra->numanalyses);
+		for(i=0;i<tetra->numanalyses;i++){
+			if (this->hnodes[i]) tetra->hnodes[i] = (Hook*)(this->hnodes[i]->copy());
+			else tetra->hnodes[i] = NULL;
+		}
+	}
+	else tetra->hnodes = NULL;
+
+	tetra->hvertices = (Hook*)this->hvertices->copy();
+	tetra->hmaterial = (Hook*)this->hmaterial->copy();
+	tetra->hneighbors = NULL;
+
+	/*deal with Tria fields: */
+	tetra->id  = this->id;
+	tetra->sid = this->sid;
+	tetra->lid = this->lid;
+	tetra->isonbase  = this->isonbase;
+	tetra->isonsurface  = this->isonsurface;
+
+	/*point parameters: */
+	tetra->parameters=this->parameters;
+
+	/*recover objects: */
+	unsigned int num_nodes = 4;
+	tetra->nodes = xNew<Node*>(num_nodes); //we cannot rely on an analysis_counter to tell us which analysis_type we are running, so we just copy the nodes.
+	for(i=0;i<num_nodes;i++) if(this->nodes[i]) tetra->nodes[i]=this->nodes[i]; else tetra->nodes[i] = NULL;
+
+	tetra->vertices = (Vertex**)this->hvertices->deliverp();
+	tetra->material = (Material*)this->hmaterial->delivers();
+
+	return tetra;
+}
+/*}}}*/
+void Tetra::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = TetraEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->isonsurface);
+	marshallhandle->call(this->isonbase);
+
+	/*Call parent classes: */
+	ElementHook::Marshall(marshallhandle);
+	Element::MarshallElement2(marshallhandle,this->numanalyses);
+	TetraRef::Marshall(marshallhandle);
+
+	vertices = (Vertex**)this->hvertices->deliverp();
+	material = (Material*)this->hmaterial->delivers();
+
+}
+/*}}}*/
+
+void     Tetra::Configure(Elements* elementsin, Loads* loadsin, Nodes* nodesin,Vertices* verticesin, Materials* materialsin, Parameters* parametersin,Inputs* inputsin){/*{{{*/
+
+	int analysis_counter;
+
+	/*go into parameters and get the analysis_counter: */
+	parametersin->FindParam(&analysis_counter,AnalysisCounterEnum);
+
+	/*Get Element type*/
+	this->element_type=this->element_type_list[analysis_counter];
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	if (this->hnodes[analysis_counter]) this->hnodes[analysis_counter]->configure(nodesin);
+	this->hvertices->configure(verticesin);
+	this->hmaterial->configure(materialsin);
+
+	/*Now, go pick up the objects inside the hooks: */
+	if (this->hnodes[analysis_counter]) this->nodes=(Node**)this->hnodes[analysis_counter]->deliverp();
+	else this->nodes=NULL;
+	this->vertices          = (Vertex**)this->hvertices->deliverp();
+	this->material          = (Material*)this->hmaterial->delivers();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+	this->inputs=inputsin;
+}
+/*}}}*/
+void     Tetra::ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz){/*{{{*/
+
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble xmin,ymin,zmin;
+	IssmDouble xmax,ymax,zmax;
+
+	/*Get xyz list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	xmin=xyz_list[0][0]; xmax=xyz_list[0][0];
+	ymin=xyz_list[0][1]; ymax=xyz_list[0][1];
+	zmin=xyz_list[0][2]; zmax=xyz_list[0][2];
+
+	for(int i=1;i<NUMVERTICES;i++){
+		if(xyz_list[i][0]<xmin) xmin=xyz_list[i][0];
+		if(xyz_list[i][0]>xmax) xmax=xyz_list[i][0];
+		if(xyz_list[i][1]<ymin) ymin=xyz_list[i][1];
+		if(xyz_list[i][1]>ymax) ymax=xyz_list[i][1];
+		if(xyz_list[i][2]<zmin) zmin=xyz_list[i][2];
+		if(xyz_list[i][2]>zmax) zmax=xyz_list[i][2];
+	}
+
+	*hx=xmax-xmin;
+	*hy=ymax-ymin;
+	*hz=zmax-zmin;
+}
+/*}}}*/
+void     Tetra::FaceOnBaseIndices(int* pindex1,int* pindex2,int* pindex3){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	int        indices[4][3] = {{0,1,2},{0,3,1},{1,3,2},{0,2,3}};
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&values[0],MeshVertexonbaseEnum);
+
+	for(int i=0;i<4;i++){
+		if(values[indices[i][0]] == 1. && values[indices[i][1]] == 1. && values[indices[i][2]] == 1.){
+			*pindex1 = indices[i][0];
+			*pindex2 = indices[i][1];
+			*pindex3 = indices[i][2];
+			return;
+		}
+	}
+
+	_error_("Could not find 3 vertices on bed");
+}
+/*}}}*/
+void     Tetra::FaceOnFrontIndices(int* pindex1,int* pindex2,int* pindex3){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	int        indices[4][3] = {{0,1,2},{0,3,1},{1,3,2},{0,2,3}};
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&values[0],MaskIceLevelsetEnum);
+
+	for(int i=0;i<4;i++){
+		if(values[indices[i][0]] == 0. && values[indices[i][1]] == 0. && values[indices[i][2]] == 0.){
+			*pindex1 = indices[i][0];
+			*pindex2 = indices[i][1];
+			*pindex3 = indices[i][2];
+			return;
+		}
+	}
+
+	_error_("Could not find 3 vertices on bed");
+}
+/*}}}*/
+void     Tetra::FaceOnSurfaceIndices(int* pindex1,int* pindex2,int* pindex3){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	int        indices[4][3] = {{0,1,2},{0,3,1},{1,3,2},{0,2,3}};
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&values[0],MeshVertexonsurfaceEnum);
+
+	for(int i=0;i<4;i++){
+		if(values[indices[i][0]] == 1. && values[indices[i][1]] == 1. && values[indices[i][2]] == 1.){
+			*pindex1 = indices[i][0];
+			*pindex2 = indices[i][1];
+			*pindex3 = indices[i][2];
+			return;
+		}
+	}
+
+	_error_("Could not find 3 vertices on bed");
+}
+/*}}}*/
+int      Tetra::FiniteElement(void){/*{{{*/
+	return this->element_type;
+} /*}}}*/
+int      Tetra::GetElementType(){/*{{{*/
+
+	/*return TetraRef field*/
+	return this->element_type;
+}
+/*}}}*/
+Input*    Tetra::GetInput(int inputenum){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+Input*    Tetra::GetInput(int inputenum,IssmDouble time){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void       Tetra::GetInputListOnVertices(IssmDouble* pvalue,Input* input,IssmDouble default_value){/*{{{*/
+
+	/*Checks in debugging mode*/
+	_assert_(pvalue);
+
+	/* Start looping on the number of vertices: */
+	if(input){
+		GaussTetra gauss;
+		for(int iv=0;iv<NUMVERTICES;iv++){
+			gauss.GaussVertex(iv);
+			input->GetInputValue(&pvalue[iv],&gauss);
+		}
+	}
+	else{
+		for(int iv=0;iv<NUMVERTICES;iv++) pvalue[iv] = default_value;
+	}
+}
+/*}}}*/
+void       Tetra::GetInputListOnNodes(IssmDouble* pvalue,Input* input,IssmDouble default_value){/*{{{*/
+
+	/*Checks in debugging mode*/
+	_assert_(pvalue);
+
+	/*What type of finite element are we dealing with?*/
+	int fe       = this->FiniteElement();
+	int numnodes = this->GetNumberOfNodes();
+
+	/* Start looping on the number of vertices: */
+	if(input){
+		GaussTetra gauss;
+		for(int iv=0;iv<numnodes;iv++){
+			gauss.GaussNode(fe,iv);
+			input->GetInputValue(&pvalue[iv],&gauss);
+		}
+	}
+	else{
+		for(int iv=0;iv<numnodes;iv++) pvalue[iv] = default_value;
+	}
+}
+/*}}}*/
+void     Tetra::GetInputValue(IssmDouble* pvalue,Node* node,int enumtype){/*{{{*/
+
+	Input* input=this->GetInput(enumtype);
+	if(!input) _error_("No input of type " << EnumToStringx(enumtype) << " found in tria");
+
+	GaussTetra* gauss=new GaussTetra();
+	gauss->GaussVertex(this->GetNodeIndex(node));
+
+	input->GetInputValue(pvalue,gauss);
+	delete gauss;
+}
+/*}}}*/
+int      Tetra::GetNumberOfNodes(void){/*{{{*/
+	return this->NumberofNodes(this->element_type);
+}
+/*}}}*/
+int      Tetra::GetNumberOfVertices(void){/*{{{*/
+	return NUMVERTICES;
+}
+/*}}}*/
+void     Tetra::GetVerticesCoordinatesBase(IssmDouble** pxyz_list){/*{{{*/
+
+	int        indices[3];
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Element XYZ list*/
+	::GetVerticesCoordinates(&xyz_list[0][0],this->vertices,NUMVERTICES);
+
+	/*Allocate Output*/
+	IssmDouble* xyz_list_edge = xNew<IssmDouble>(3*3);
+	this->FaceOnBaseIndices(&indices[0],&indices[1],&indices[2]);
+	for(int i=0;i<3;i++) for(int j=0;j<3;j++) xyz_list_edge[i*3+j]=xyz_list[indices[i]][j];
+
+	/*Assign output pointer*/
+	*pxyz_list = xyz_list_edge;
+
+}/*}}}*/
+void     Tetra::GetVerticesCoordinatesTop(IssmDouble** pxyz_list){/*{{{*/
+
+	int        indices[3];
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Element XYZ list*/
+	::GetVerticesCoordinates(&xyz_list[0][0],this->vertices,NUMVERTICES);
+
+	/*Allocate Output*/
+	IssmDouble* xyz_list_edge = xNew<IssmDouble>(3*3);
+	this->FaceOnSurfaceIndices(&indices[0],&indices[1],&indices[2]);
+	for(int i=0;i<3;i++) for(int j=0;j<3;j++) xyz_list_edge[i*3+j]=xyz_list[indices[i]][j];
+
+	/*Assign output pointer*/
+	*pxyz_list = xyz_list_edge;
+
+}/*}}}*/
+bool     Tetra::HasFaceOnBase(){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	IssmDouble sum;
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&values[0],MeshVertexonbaseEnum);
+	sum = values[0]+values[1]+values[2]+values[3];
+
+	_assert_(sum==0. || sum==1. || sum==2. || sum==3.);
+
+	if(sum==3){
+		return true;
+	}
+	else{
+		return false;
+	}
+}
+/*}}}*/
+bool     Tetra::HasFaceOnSurface(){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	IssmDouble sum;
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&values[0],MeshVertexonsurfaceEnum);
+	sum = values[0]+values[1]+values[2]+values[3];
+
+	_assert_(sum==0. || sum==1. || sum==2. || sum==3.);
+
+	if(sum==3){
+		return true;
+	}
+	else{
+		return false;
+	}
+}
+/*}}}*/
+void     Tetra::InputUpdateFromIoModel(int index,IoModel* iomodel){ /*{{{*/
+
+	/*Intermediaries*/
+	int         i,j;
+	int         tetra_vertex_ids[NUMVERTICES];
+	IssmDouble  nodeinputs[NUMVERTICES];
+	IssmDouble  cmmininputs[NUMVERTICES];
+	IssmDouble  cmmaxinputs[NUMVERTICES];
+
+	IssmDouble  yts;
+	bool    control_analysis;
+	char**  controls = NULL;
+	int     num_control_type,num_responses;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&yts,"md.constants.yts");
+	iomodel->FindConstant(&control_analysis,"md.inversion.iscontrol");
+	if(control_analysis) iomodel->FindConstant(&num_control_type,"md.inversion.num_control_parameters");
+	if(control_analysis) iomodel->FindConstant(&num_responses,"md.inversion.num_cost_functions");
+
+	/*Recover vertices ids needed to initialize inputs*/
+	_assert_(iomodel->elements);
+	for(i=0;i<NUMVERTICES;i++){ 
+		tetra_vertex_ids[i]=iomodel->elements[NUMVERTICES*index+i]; //ids for vertices are in the elements array from Matlab
+	}
+}
+/*}}}*/
+void     Tetra::InputUpdateFromSolutionOneDof(IssmDouble* solution,int enum_type){/*{{{*/
+
+	/*Intermediary*/
+	int* doflist = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(this->element_type);
+
+	/*Fetch dof list and allocate solution vector*/
+	GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values    = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(int i=0;i<numnodes;i++){
+		values[i]=solution[doflist[i]];
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector");
+	}
+
+	/*Add input to the element: */
+	this->AddInput(enum_type,values,this->element_type);
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<int>(doflist);
+}
+/*}}}*/
+bool     Tetra::IsIcefront(void){/*{{{*/
+
+	/*Retrieve all inputs and parameters*/
+	IssmDouble ls[NUMVERTICES];
+	Element::GetInputListOnVertices(&ls[0],MaskIceLevelsetEnum);
+
+	/* If only one vertex has ice, there is an ice front here */
+	if(IsIceInElement()){
+		int nrice=0;       
+		for(int i=0;i<NUMVERTICES;i++) if(ls[i]<0.) nrice++;
+		if(nrice==1) return true;
+	}
+	return false;
+}/*}}}*/
+void     Tetra::JacobianDeterminant(IssmDouble* pJdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetJacobianDeterminant(pJdet,xyz_list,(GaussTetra*)gauss);
+
+}
+/*}}}*/
+void     Tetra::JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetJacobianDeterminantFace(pJdet,xyz_list_base,(GaussTetra*)gauss);
+
+}
+/*}}}*/
+void     Tetra::JacobianDeterminantSurface(IssmDouble* pJdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetJacobianDeterminantFace(pJdet,xyz_list,(GaussTetra*)gauss);
+
+}
+/*}}}*/
+void     Tetra::JacobianDeterminantTop(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetJacobianDeterminantFace(pJdet,xyz_list_base,(GaussTetra*)gauss);
+
+}
+/*}}}*/
+Gauss*   Tetra::NewGauss(void){/*{{{*/
+	return new GaussTetra();
+}
+/*}}}*/
+Gauss*   Tetra::NewGauss(int order){/*{{{*/
+	return new GaussTetra(order);
+}
+/*}}}*/
+Gauss*   Tetra::NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert){/*{{{*/
+	/*FIXME: this is messed up, should provide indices and not xyz_list!*/
+	int indices[3];
+	this->FaceOnFrontIndices(&indices[0],&indices[1],&indices[2]);
+	return new GaussTetra(indices[0],indices[1],indices[2],max(order_horiz,order_vert));
+}
+/*}}}*/
+Gauss*   Tetra::NewGaussBase(int order){/*{{{*/
+
+	int indices[3];
+	this->FaceOnBaseIndices(&indices[0],&indices[1],&indices[2]);
+	return new GaussTetra(indices[0],indices[1],indices[2],order);
+}
+/*}}}*/
+Gauss*   Tetra::NewGaussTop(int order){/*{{{*/
+
+	int indices[3];
+	this->FaceOnSurfaceIndices(&indices[0],&indices[1],&indices[2]);
+	return new GaussTetra(indices[0],indices[1],indices[2],order);
+}
+/*}}}*/
+void     Tetra::NodalFunctions(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetNodalFunctions(basis,(GaussTetra*)gauss,this->element_type);
+
+}
+/*}}}*/
+void     Tetra::NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussTetra*)gauss,this->element_type);
+
+}
+/*}}}*/
+void     Tetra::NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussTetra*)gauss,this->VelocityInterpolation());
+
+}
+/*}}}*/
+void     Tetra::NodalFunctionsPressure(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetNodalFunctions(basis,(GaussTetra*)gauss,this->PressureInterpolation());
+
+}
+/*}}}*/
+void     Tetra::NodalFunctionsTensor(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetNodalFunctions(basis,(GaussTetra*)gauss,this->TensorInterpolation());
+
+}
+/*}}}*/
+void     Tetra::NodalFunctionsVelocity(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->GetNodalFunctions(basis,(GaussTetra*)gauss,this->VelocityInterpolation());
+
+}
+/*}}}*/
+void     Tetra::NormalBase(IssmDouble* bed_normal,IssmDouble* xyz_list){/*{{{*/
+
+	IssmDouble v13[3],v23[3];
+	IssmDouble normal[3];
+	IssmDouble normal_norm;
+
+	for(int i=0;i<3;i++){
+		v13[i]=xyz_list[0*3+i]-xyz_list[2*3+i];
+		v23[i]=xyz_list[1*3+i]-xyz_list[2*3+i];
+	}
+
+	normal[0]=v13[1]*v23[2]-v13[2]*v23[1];
+	normal[1]=v13[2]*v23[0]-v13[0]*v23[2];
+	normal[2]=v13[0]*v23[1]-v13[1]*v23[0];
+	normal_norm=sqrt(normal[0]*normal[0]+ normal[1]*normal[1]+ normal[2]*normal[2]);
+
+	/*Bed normal is opposite to surface normal*/
+	bed_normal[0]=-normal[0]/normal_norm;
+	bed_normal[1]=-normal[1]/normal_norm;
+	bed_normal[2]=-normal[2]/normal_norm;
+
+	_assert_(bed_normal[2]<0.);
+}
+/*}}}*/
+void     Tetra::NormalSection(IssmDouble* normal,IssmDouble* xyz_list){/*{{{*/
+
+	/*Build unit outward pointing vector*/
+	IssmDouble AB[3];
+	IssmDouble AC[3];
+	IssmDouble norm;
+
+	AB[0]=xyz_list[1*3+0] - xyz_list[0*3+0];
+	AB[1]=xyz_list[1*3+1] - xyz_list[0*3+1];
+	AB[2]=xyz_list[1*3+2] - xyz_list[0*3+2];
+	AC[0]=xyz_list[2*3+0] - xyz_list[0*3+0];
+	AC[1]=xyz_list[2*3+1] - xyz_list[0*3+1];
+	AC[2]=xyz_list[2*3+2] - xyz_list[0*3+2];
+
+	cross(normal,AB,AC);
+	norm=sqrt(normal[0]*normal[0]+normal[1]*normal[1]+normal[2]*normal[2]);
+
+	for(int i=0;i<3;i++) normal[i]=normal[i]/(norm+1e-10);
+}
+/*}}}*/
+void     Tetra::NormalTop(IssmDouble* top_normal,IssmDouble* xyz_list){/*{{{*/
+
+	IssmDouble v13[3],v23[3];
+	IssmDouble normal[3];
+	IssmDouble normal_norm;
+
+	for(int i=0;i<3;i++){
+		v13[i]=xyz_list[0*3+i]-xyz_list[2*3+i];
+		v23[i]=xyz_list[1*3+i]-xyz_list[2*3+i];
+	}
+
+	normal[0]=v13[1]*v23[2]-v13[2]*v23[1];
+	normal[1]=v13[2]*v23[0]-v13[0]*v23[2];
+	normal[2]=v13[0]*v23[1]-v13[1]*v23[0];
+	normal_norm=sqrt(normal[0]*normal[0]+ normal[1]*normal[1]+ normal[2]*normal[2]);
+
+	top_normal[0]=normal[0]/normal_norm;
+	top_normal[1]=normal[1]/normal_norm;
+	top_normal[2]=normal[2]/normal_norm;
+	_assert_(top_normal[2]>0.);
+}
+/*}}}*/
+int      Tetra::NumberofNodesPressure(void){/*{{{*/
+	return TetraRef::NumberofNodes(this->PressureInterpolation());
+}
+/*}}}*/
+int      Tetra::NumberofNodesVelocity(void){/*{{{*/
+	return TetraRef::NumberofNodes(this->VelocityInterpolation());
+}
+/*}}}*/
+int      Tetra::ObjectEnum(void){/*{{{*/
+
+	return TetraEnum;
+
+}/*}}}*/
+int      Tetra::PressureInterpolation(void){/*{{{*/
+	return TetraRef::PressureInterpolation(this->element_type);
+}
+/*}}}*/
+void     Tetra::ReduceMatrices(ElementMatrix* Ke,ElementVector* pe){/*{{{*/
+
+	if(pe){
+		if(this->element_type==MINIcondensedEnum){
+			int indices[3]={12,13,14};
+			pe->StaticCondensation(Ke,3,&indices[0]);
+		}
+		else if(this->element_type==P1bubblecondensedEnum){
+			int size   = nodes[4]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int offset = 0;
+			for(int i=0;i<4;i++) offset+=nodes[i]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int* indices=xNew<int>(size);
+			for(int i=0;i<size;i++) indices[i] = offset+i;
+			pe->StaticCondensation(Ke,size,indices);
+			xDelete<int>(indices);
+		}
+	}
+
+	if(Ke){
+		if(this->element_type==MINIcondensedEnum){
+			int indices[3]={12,13,14};
+			Ke->StaticCondensation(3,&indices[0]);
+		}
+		else if(this->element_type==P1bubblecondensedEnum){
+			int size   = nodes[4]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int offset = 0;
+			for(int i=0;i<4;i++) offset+=nodes[i]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int* indices=xNew<int>(size);
+			for(int i=0;i<size;i++) indices[i] = offset+i;
+			Ke->StaticCondensation(size,indices);
+			xDelete<int>(indices);
+		}
+	}
+}
+/*}}}*/
+void     Tetra::ResetFSBasalBoundaryCondition(void){/*{{{*/
+
+	int numnodes = this->GetNumberOfNodes();
+
+	int          approximation;
+	IssmDouble*  vertexonbase= NULL;
+	IssmDouble   slopex,slopey,groundedice;
+	IssmDouble   xz_plane[6];
+
+	/*For FS only: we want the CS to be tangential to the bedrock*/
+	this->Element::GetInputValue(&approximation,ApproximationEnum);
+	if(!HasNodeOnBase() ||  approximation!=FSApproximationEnum) return;
+
+	//printf("element number %i \n",this->id);
+	/*Get inputs*/
+	Input* slopex_input=this->GetInput(BedSlopeXEnum); _assert_(slopex_input);
+	Input* slopey_input=this->GetInput(BedSlopeYEnum); _assert_(slopey_input);
+	Input* groundedicelevelset_input=this->GetInput(MaskOceanLevelsetEnum); _assert_(groundedicelevelset_input);
+	vertexonbase = xNew<IssmDouble>(numnodes);
+	this->GetInputListOnNodesVelocity(&vertexonbase[0],MeshVertexonbaseEnum);
+
+	/*Loop over basal nodes and update their CS*/
+	GaussTetra* gauss = new GaussTetra();
+	for(int i=0;i<this->NumberofNodesVelocity();i++){
+
+		if(vertexonbase[i]==1){
+			gauss->GaussNode(this->VelocityInterpolation(),i);
+
+			slopex_input->GetInputValue(&slopex,gauss);
+			slopey_input->GetInputValue(&slopey,gauss);
+			groundedicelevelset_input->GetInputValue(&groundedice,gauss);
+
+			/*New X axis          New Z axis*/
+			xz_plane[0]=1.;       xz_plane[3]=-slopex;  
+			xz_plane[1]=0.;       xz_plane[4]=-slopey;  
+			xz_plane[2]=slopex;   xz_plane[5]=1.;          
+
+			if(groundedice>0){
+				if(this->nodes[i]->GetApproximation()==FSvelocityEnum){
+					this->nodes[i]->DofInSSet(2); //vz 
+				}
+				else _error_("Flow equation approximation"<<EnumToStringx(this->nodes[i]->GetApproximation())<<" not supported yet");
+			}
+			else{
+				if(this->nodes[i]->GetApproximation()==FSvelocityEnum){
+					this->nodes[i]->DofInFSet(2); //vz
+				}
+				else _error_("Flow equation approximation"<<EnumToStringx(this->nodes[i]->GetApproximation())<<" not supported yet");
+			}
+
+			XZvectorsToCoordinateSystem(&this->nodes[i]->coord_system[0][0],&xz_plane[0]);
+		}
+	}
+
+	/*cleanup*/
+	xDelete<IssmDouble>(vertexonbase);
+	delete gauss;
+}
+/*}}}*/
+void     Tetra::ResetHooks(){/*{{{*/
+
+	if(this->nodes) xDelete<Node*>(this->nodes);
+	this->nodes=NULL;
+	this->vertices=NULL;
+	this->material=NULL;
+	this->parameters=NULL;
+
+	//deal with ElementHook mother class
+	for(int i=0;i<this->numanalyses;i++) if(this->hnodes[i]) this->hnodes[i]->reset();
+	this->hvertices->reset();
+	this->hmaterial->reset();
+	if(this->hneighbors) this->hneighbors->reset();
+}
+/*}}}*/
+void     Tetra::SetCurrentConfiguration(Elements* elementsin, Loads* loadsin, Nodes* nodesin, Materials* materialsin, Parameters* parametersin){/*{{{*/
+
+	/*go into parameters and get the analysis_counter: */
+	int analysis_counter;
+	parametersin->FindParam(&analysis_counter,AnalysisCounterEnum);
+
+	/*Get Element type*/
+	this->element_type=this->element_type_list[analysis_counter];
+
+	/*Pick up nodes*/
+	if(this->hnodes[analysis_counter]) this->nodes=(Node**)this->hnodes[analysis_counter]->deliverp();
+	else this->nodes=NULL;
+
+}
+/*}}}*/
+Element* Tetra::SpawnBasalElement(bool depthaverage_materials){/*{{{*/
+
+	_assert_(HasFaceOnBase());
+
+	int index1,index2,index3;
+	this->FaceOnBaseIndices(&index1,&index2,&index3);
+	return SpawnTria(index1,index2,index3);
+}/*}}}*/
+Element* Tetra::SpawnTopElement(void){/*{{{*/
+
+	_assert_(HasFaceOnSurface());
+
+	int index1,index2,index3;
+	this->FaceOnSurfaceIndices(&index1,&index2,&index3);
+	return SpawnTria(index1,index2,index3);
+}/*}}}*/
+bool       Tetra::IsSpawnedElement(void){/*{{{*/
+
+   /*Tetras cannot be collapsed elements*/
+   return false;
+
+}/*}}}*/
+Tria*    Tetra::SpawnTria(int index1,int index2,int index3){/*{{{*/
+
+	int analysis_counter;
+
+	/*go into parameters and get the analysis_counter: */
+	this->parameters->FindParam(&analysis_counter,AnalysisCounterEnum);
+
+	/*Create Tria*/
+	Tria* tria=new Tria();
+	tria->id=this->id;
+	tria->parameters=this->parameters;
+	tria->element_type=P1Enum; //Only P1 CG for now (TO BE CHANGED)
+	this->SpawnTriaHook(xDynamicCast<ElementHook*>(tria),index1,index2,index3);
+
+	/*Spawn material*/
+	tria->material=(Material*)this->material->copy2(tria);
+
+	/*recover nodes, material*/
+	tria->nodes    = (Node**)tria->hnodes[analysis_counter]->deliverp();
+	tria->vertices = (Vertex**)tria->hvertices->deliverp();
+
+	/*Return new Tria*/
+	return tria;
+}
+/*}}}*/
+int      Tetra::TensorInterpolation(void){/*{{{*/
+	return TetraRef::TensorInterpolation(this->element_type);
+}
+/*}}}*/
+void     Tetra::Update(Inputs* inputs,int index,IoModel* iomodel,int analysis_counter,int analysis_type,int finiteelement_type){ /*{{{*/
+
+	/*Intermediaries*/
+	int        i;
+	int        tetra_vertex_ids[6];
+	IssmDouble nodeinputs[6];
+	IssmDouble yts;
+	bool       dakota_analysis;
+	bool       isFS;
+	int        numnodes;
+	int*       tetra_node_ids = NULL;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&yts,"md.constants.yts");
+	iomodel->FindConstant(&dakota_analysis,"md.qmu.isdakota");
+	iomodel->FindConstant(&isFS,"md.flowequation.isFS");
+
+	/*Checks if debuging*/
+	_assert_(iomodel->elements);
+	_assert_(index==this->sid); 
+
+	/*Recover element type*/
+	this->element_type_list[analysis_counter]=finiteelement_type;
+
+	/*Recover vertices ids needed to initialize inputs*/
+	for(i=0;i<4;i++) tetra_vertex_ids[i]=iomodel->elements[4*index+i]; //ids for vertices are in the elements array from Matlab
+
+	/*Recover nodes ids needed to initialize the node hook.*/
+	switch(finiteelement_type){
+		case P1Enum:
+			numnodes         = 4;
+			tetra_node_ids   = xNew<int>(numnodes);
+			tetra_node_ids[0]=iomodel->elements[4*index+0];
+			tetra_node_ids[1]=iomodel->elements[4*index+1];
+			tetra_node_ids[2]=iomodel->elements[4*index+2];
+			tetra_node_ids[3]=iomodel->elements[4*index+3];
+			break;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			numnodes         = 5;
+			tetra_node_ids   = xNew<int>(numnodes);
+			tetra_node_ids[0]=iomodel->elements[4*index+0];
+			tetra_node_ids[1]=iomodel->elements[4*index+1];
+			tetra_node_ids[2]=iomodel->elements[4*index+2];
+			tetra_node_ids[3]=iomodel->elements[4*index+3];
+			tetra_node_ids[4]=iomodel->numberofvertices+index+1;
+			break;
+		case P2Enum:
+			numnodes        = 10;
+			tetra_node_ids   = xNew<int>(numnodes);
+			tetra_node_ids[0]=iomodel->elements[4*index+0];
+			tetra_node_ids[1]=iomodel->elements[4*index+1];
+			tetra_node_ids[2]=iomodel->elements[4*index+2];
+			tetra_node_ids[3]=iomodel->elements[4*index+3];
+			tetra_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+0]+1;
+			tetra_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+1]+1;
+			tetra_node_ids[6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+2]+1;
+			tetra_node_ids[7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+3]+1;
+			tetra_node_ids[8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+4]+1;
+			tetra_node_ids[9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+5]+1;
+			break;
+		case MINIEnum: case MINIcondensedEnum:
+			numnodes         = 9;
+			tetra_node_ids   = xNew<int>(numnodes);
+			tetra_node_ids[0]=iomodel->elements[4*index+0];
+			tetra_node_ids[1]=iomodel->elements[4*index+1];
+			tetra_node_ids[2]=iomodel->elements[4*index+2];
+			tetra_node_ids[3]=iomodel->elements[4*index+3];
+			tetra_node_ids[4]=iomodel->numberofvertices+index+1;
+
+			tetra_node_ids[5]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[4*index+0];
+			tetra_node_ids[6]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[4*index+1];
+			tetra_node_ids[7]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[4*index+2];
+			tetra_node_ids[8]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[4*index+3];
+			break;
+		case TaylorHoodEnum:
+		case XTaylorHoodEnum:
+			numnodes        = 14;
+			tetra_node_ids  = xNew<int>(numnodes);
+			tetra_node_ids[0]=iomodel->elements[4*index+0];
+			tetra_node_ids[1]=iomodel->elements[4*index+1];
+			tetra_node_ids[2]=iomodel->elements[4*index+2];
+			tetra_node_ids[3]=iomodel->elements[4*index+3];
+			tetra_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+0]+1;
+			tetra_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+1]+1;
+			tetra_node_ids[6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+2]+1;
+			tetra_node_ids[7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+3]+1;
+			tetra_node_ids[8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+4]+1;
+			tetra_node_ids[9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+5]+1;
+
+			tetra_node_ids[10]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[4*index+0];
+			tetra_node_ids[11]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[4*index+1];
+			tetra_node_ids[12]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[4*index+2];
+			tetra_node_ids[13]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[4*index+3];
+			break;
+		case LATaylorHoodEnum:
+			numnodes        = 10;
+			tetra_node_ids  = xNew<int>(numnodes);
+			tetra_node_ids[0]=iomodel->elements[4*index+0];
+			tetra_node_ids[1]=iomodel->elements[4*index+1];
+			tetra_node_ids[2]=iomodel->elements[4*index+2];
+			tetra_node_ids[3]=iomodel->elements[4*index+3];
+			tetra_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+0]+1;
+			tetra_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+1]+1;
+			tetra_node_ids[6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+2]+1;
+			tetra_node_ids[7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+3]+1;
+			tetra_node_ids[8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+4]+1;
+			tetra_node_ids[9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[6*index+5]+1;
+			break;
+		default:
+			_error_("Finite element "<<EnumToStringx(finiteelement_type)<<" not supported yet");
+	}
+
+	/*hooks: */
+	this->SetHookNodes(tetra_node_ids,numnodes,analysis_counter); this->nodes=NULL;
+	xDelete<int>(tetra_node_ids);
+
+	/*Fill with IoModel*/
+	this->InputUpdateFromIoModel(index,iomodel);
+}
+/*}}}*/
+void     Tetra::ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss){/*{{{*/
+	TetraRef::GetInputValue(pvalue,values,gauss,P1Enum);
+}
+/*}}}*/
+int      Tetra::VelocityInterpolation(void){/*{{{*/
+	return TetraRef::VelocityInterpolation(this->element_type);
+}
+/*}}}*/
+void     Tetra::ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble phi;
+	IssmDouble viscosity;
+	IssmDouble epsilon[6];
+
+	_assert_(gauss->Enum()==GaussTetraEnum);
+	this->StrainRateFS(&epsilon[0],xyz_list,(GaussTetra*)gauss,vx_input,vy_input,vz_input);
+	this->material->ViscosityFS(&viscosity,3,xyz_list,(GaussTetra*)gauss,vx_input,vy_input,vz_input);
+	GetPhi(&phi,&epsilon[0],viscosity);
+
+	/*Assign output pointer*/
+	*pphi = phi;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Tetra.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Tetra.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Tetra.h	(revision 27955)
@@ -0,0 +1,208 @@
+/*! \file Tetra.h
+ *  \brief: header file for seg object
+ */
+
+#ifndef _TETRA_H_
+#define _TETRA_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Element.h"
+#include "./ElementHook.h"
+#include "./TetraRef.h"
+class Parameters;
+class Inputs;
+class IoModel;
+class Results;
+class Node;
+class Material;
+class Matlitho;
+class ElementMatrix;
+class ElementVector;
+class Vertex;
+
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/Enum/Enum.h"
+/*}}}*/
+
+class Tetra: public Element,public ElementHook,public TetraRef{
+
+	public:
+
+		/*Tetra constructors, destructors {{{*/
+		Tetra(){};
+		Tetra(int tet_id,int tet_sid,int tet_lid,IoModel* iomodel,int nummodels);
+		~Tetra();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object *copy();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+		/*}}}*/
+		/*Element virtual functions definitions: {{{*/
+		void        AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part){_error_("not implemented yet");};
+		void        CalvingRateLevermann(void){_error_("not implemented yet");};
+		IssmDouble  CharacteristicLength(void){_error_("not implemented yet");};
+		void        ComputeSigmaNN(){_error_("not implemented yet");};
+		void        ComputeStressTensor(){_error_("not implemented yet");};
+		void        ComputeDeviatoricStressTensor(){_error_("not implemented yet");};
+		void        ComputeEsaStrainAndVorticity(){_error_("not implemented yet!");};
+		void        Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters,Inputs* inputsin);
+		void        ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index,int offset,int M,int N,int interp){_error_("not implemented yet");};
+		void        ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum,int control_interp){_error_("not implemented yet");};
+		IssmDouble  DragCoefficientAbsGradient(void){_error_("not implemented yet");};
+		void        ElementResponse(IssmDouble* presponse,int response_enum){_error_("not implemented yet");};
+		void        ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze,Vector<IssmDouble>* vareae,bool spherical=false){_error_("not implemented yet");};
+		void        ElementCoordinates(Vector<IssmDouble>* vlonge,Vector<IssmDouble>* vlate,Vector<IssmDouble>* vareae){_error_("not implemented yet");};
+		void        ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz);
+		void        FaceOnBaseIndices(int* pindex1,int* pindex2,int* pindex3);
+		void        FaceOnFrontIndices(int* pindex1,int* pindex2,int* pindex3);
+		void        FaceOnSurfaceIndices(int* pindex1,int* pindex2,int* pindex3);
+		int         FiniteElement(void);
+		IssmDouble  FloatingArea(bool scaled){_error_("not implemented yet");};
+		void        FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){_error_("not implemented yet");};
+		IssmDouble  GetArea3D(void){_error_("not implemented yet!");};
+		IssmDouble  GetAreaSpherical(void){_error_("not implemented yet!");};
+		IssmDouble  GetTriangleAreaSpherical(IssmDouble xyz_list[3][3]){_error_("not implemented yet");};
+		Element*    GetBasalElement(void){_error_("not implemented yet");};
+		int         GetElementType(void);
+		void        GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating){_error_("not implemented yet");};
+		IssmDouble  GetGroundedPortion(IssmDouble* xyz_list){_error_("not implemented yet");};
+		void        GetFractionGeometry(IssmDouble* weights, IssmDouble* pphi, int* ppoint1,IssmDouble* pfraction1,IssmDouble* pfraction2, bool* ptrapezeisnegative, IssmDouble* gl){_error_("not implemented yet");};
+		void       GetNodalWeightsAndAreaAndCentroidsFromLeveset(IssmDouble* loadweights, IssmDouble* ploadarea, IssmDouble* platbar, IssmDouble* plongbar, IssmDouble late, IssmDouble longe, IssmDouble area,  int levelsetenum){_error_("not implemented yet");};
+		void       GetNodalWeightsAndAreaAndCentroidsFromLeveset(IssmDouble* loadweights, IssmDouble* ploadarea, IssmDouble* platbar, IssmDouble* plongbar, IssmDouble late, IssmDouble longe, IssmDouble area,  int levelset1enum, int levelset2enum){_error_("not implemented yet");};
+		void        GetBarycenterFromLevelset(IssmDouble* platbar, IssmDouble* plongbar,IssmDouble phi,IssmDouble fraction1,IssmDouble fraction2,IssmDouble late, IssmDouble longe, int point1,int istrapeze1, IssmDouble planetradius){_error_("not implemented yet");};
+		void		   GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented yet");};
+		Input*     GetInput(int enumtype);
+		Input*     GetInput(int enumtype,IssmDouble time);
+		Input*     GetInput(int inputenum,IssmDouble start_time,IssmDouble end_time,int averaging_method){_error_("not implemented yet!");};
+		void        GetInputListOnVertices(IssmDouble* pvalue,Input* input,IssmDouble default_value);
+		void        GetInputListOnNodes(IssmDouble* pvalue,Input* input,IssmDouble default_value);
+		void        GetInputValue(IssmDouble* pvalue,Node* node,int enumtype);
+		void		   GetLevelCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum,IssmDouble level){_error_("not implemented yet");};
+		void        GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* levelsetvalues){_error_("not implemented yet");};
+		int         GetNumberOfNodes(void);
+		int         GetNumberOfNodes(int enum_type){_error_("not implemented yet");};
+		int         GetNumberOfVertices(void);
+		void        GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,int N,const char* data,int offset){_error_("not implemented yet");};
+		void        GetVerticesCoordinatesBase(IssmDouble** pxyz_list);
+		void        GetVerticesCoordinatesTop(IssmDouble** pxyz_list);
+		void        GradientIndexing(int* indexing,int control_index){_error_("not implemented yet");};
+		IssmDouble  GroundedArea(bool scaled){_error_("not implemented yet");};
+		bool        HasFaceOnBase();
+		bool        HasFaceOnSurface();
+		IssmDouble  IceVolume(bool scaled){_error_("not implemented yet");};
+		IssmDouble  IceVolumeAboveFloatation(bool scaled){_error_("not implemented yet");};
+		bool        IsFaceOnBoundary(void){_error_("not implemented yet");};
+		bool		   IsIcefront(void);
+		bool        IsNodeOnShelfFromFlags(IssmDouble* flags){_error_("not implemented yet");};
+		bool        IsZeroLevelset(int levelset_enum){_error_("not implemented");};
+		void        InputDepthAverageAtBase(int enum_type,int average_enum_type){_error_("not implemented yet");};
+		void        InputExtrude(int enum_type,int start){_error_("not implemented"); /*For penta only*/};
+		void        InputUpdateFromIoModel(int index, IoModel* iomodel);
+		void        InputUpdateFromSolutionOneDof(IssmDouble* solution,int inputenum);
+		void        InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solution,int inputenum){_error_("not implemented yet");};
+		void        InputUpdateFromVector(IssmDouble* vector, int name, int type){_error_("not implemented yet");};
+		void        JacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void        JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
+		void        JacobianDeterminantLine(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void        JacobianDeterminantSurface(IssmDouble*  pJdet, IssmDouble* xyz_list,Gauss* gauss);
+		void        JacobianDeterminantTop(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
+		IssmDouble  Masscon(IssmDouble* levelset){_error_("not implemented yet");};
+		IssmDouble  MassFlux(IssmDouble* segment){_error_("not implemented yet");};
+		IssmDouble  MassFlux(IssmDouble x1,IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id){_error_("not implemented yet");}
+		void        MaterialUpdateFromTemperature(void){_error_("not implemented yet");};
+		IssmDouble  MinEdgeLength(IssmDouble* xyz_list){_error_("not implemented yet");};
+		IssmDouble  Misfit(int modelenum,int observationenum,int weightsenum){_error_("not implemented yet");};
+		IssmDouble  MisfitArea(int weightsenum){_error_("not implemented yet");};
+		Gauss*      NewGauss(void);
+		Gauss*      NewGauss(int order);
+      Gauss*      NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order){_error_("not implemented yet");};
+      Gauss*      NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert);
+      Gauss*      NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order){_error_("not implemented yet");};
+      Gauss*      NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,int order){_error_("not implemented yet");};
+      Gauss*      NewGauss(IssmDouble fraction1,IssmDouble fraction2,int order){_error_("not implemented yet");};
+		Gauss*      NewGaussBase(int order);
+		Gauss*      NewGaussLine(int vertex1,int vertex2,int order){_error_("not implemented yet");};
+		Gauss*      NewGaussTop(int order);
+		void        NodalFunctions(IssmDouble* basis,Gauss* gauss);
+		void        NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void        NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void        NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void        NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss);
+		void        NodalFunctionsP1(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");};
+		void        NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void        NodalFunctionsP2(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");};
+		void        NodalFunctionsTensor(IssmDouble* basis,Gauss* gauss);
+		void        NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss);
+		int         NodalValue(IssmDouble* pvalue, int index, int natureofdataenum){_error_("not implemented yet");};
+		void        NormalBase(IssmDouble* normal,IssmDouble* xyz_list);
+		void        NormalSection(IssmDouble* normal,IssmDouble* xyz_list);
+		void        NormalTop(IssmDouble* normal,IssmDouble* xyz_list);
+		int         NumberofNodesPressure(void);
+		int         NumberofNodesVelocity(void);
+		void        PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding){_error_("not implemented yet");};
+		int         PressureInterpolation(void);
+		void        ResetFSBasalBoundaryCondition(void);
+		void        ResetHooks();
+		void        ReduceMatrices(ElementMatrix* Ke,ElementVector* pe);
+		void        SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index,int offset,int M, int N){_error_("not implemented yet");};
+		void        SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters);
+		void        SetTemporaryElementType(int element_type_in){_error_("not implemented yet");};
+		void        SetElementInput(Inputs* inputs,int enum_in,IssmDouble value,int type){_error_("not implemented yet");};
+		void        SetElementInput(int enum_in, IssmDouble value, int type){_error_("not implemented yet");};
+	   Element*    SpawnBasalElement(bool depthaverage_materials);
+		Element*    SpawnTopElement(void);
+		bool        IsSpawnedElement(void);
+		Tria*       SpawnTria(int index1,int index2,int index3);
+		IssmDouble  StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){_error_("not implemented yet");};
+		void        StabilizationParameterAnisotropic(IssmDouble* tau_parameter_anisotropic, IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble hx, IssmDouble hy, IssmDouble hz, IssmDouble kappa){_error_("not implemented yet");};
+		void        StrainRateparallel(void){_error_("not implemented yet");};
+		void        StrainRateperpendicular(void){_error_("not implemented yet");};
+		void        StressIntensityFactor(void){_error_("not implemented yet");};
+		IssmDouble  SurfaceArea(void){_error_("not implemented yet");};
+		int         TensorInterpolation(void);
+		IssmDouble  TimeAdapt(){_error_("not implemented yet");};
+		IssmDouble  TotalFloatingBmb(bool scaled){_error_("not implemented yet");};
+		IssmDouble  TotalGroundedBmb(bool scaled){_error_("not implemented yet");};
+		IssmDouble  TotalSmb(bool scaled){_error_("not implemented yet");};
+		IssmDouble  TotalSmbMelt(bool scaled){_error_("not implemented yet");};
+		IssmDouble  TotalSmbRefreeze(bool scaled){_error_("not implemented yet");};
+		void        Update(Inputs* inputs,int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement);
+		void        UpdateConstraintsExtrudeFromBase(){_error_("not implemented");};
+		void        UpdateConstraintsExtrudeFromTop(){_error_("not implemented");};
+		int         UpdatePotentialUngrounding(IssmDouble* vertices_potentially_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf){_error_("not implemented yet");};
+		void        ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void        ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss);
+		int         VelocityInterpolation(void);
+		int         VertexConnectivity(int vertexindex){_error_("not implemented yet");};
+		void        VerticalSegmentIndices(int** pindices,int* pnumseg){_error_("not implemented yet");};
+		void        VerticalSegmentIndicesBase(int** pindices,int* pnumseg){_error_("not implemented yet");};
+		void        ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
+
+#ifdef _HAVE_ESA_
+		void    EsaGeodetic2D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,Vector<IssmDouble>* pX,Vector<IssmDouble>* pY,IssmDouble* xx,IssmDouble* yy){_error_("not implemented yet!");};
+		void    EsaGeodetic3D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz){_error_("not implemented yet!");};
+#endif
+#ifdef _HAVE_SEALEVELCHANGE_
+		void       GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt, Matlitho* litho, IssmDouble* x,IssmDouble* y){_error_("not implemented yet");};
+		void       SealevelchangeGeometrySubElementKernel(SealevelGeometry* slgeom){_error_("not implemented yet");};
+		void       SealevelchangeShift(GrdLoads* loads,  IssmDouble offset, SealevelGeometry* slgeom){_error_("not implemented yet");};
+		void       SealevelchangeGeometryInitial(IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae, int* lids, int* vcount){_error_("not implemented yet");};
+		void       SealevelchangeGeometryCentroidLoads(SealevelGeometry* slgeom, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae){_error_("not implemented yet");};
+		void       SealevelchangeGeometrySubElementLoads(SealevelGeometry* slgeom, IssmDouble* areae){_error_("not implemented yet");};
+		void       SealevelchangeBarystaticLoads(GrdLoads* loads, BarystaticContributions* barycontrib, SealevelGeometry* slgeom){_error_("not implemented yet");};
+		void       SealevelchangeConvolution(IssmDouble* sealevelpercpu, GrdLoads* loads, IssmDouble* rotationvector,SealevelGeometry* slgeom){_error_("not implemented yet");};
+		void       SealevelchangeOceanAverage(GrdLoads* loads, Vector<IssmDouble>* oceanareas, Vector<IssmDouble>* subelementoceanareas, IssmDouble* sealevelpercpu, SealevelGeometry* slgeom){_error_("not implemented yet");};
+		void       SealevelchangeDeformationConvolution(IssmDouble* sealevelpercpu, GrdLoads* loads,  IssmDouble* rotationvector,SealevelGeometry* slgeom){_error_("not implemented yet");};
+		void       SealevelchangeUpdateViscousFields(IssmDouble lincoeff, int newindex, int offset){_error_("not implemented yet");};
+#endif
+
+#ifdef _HAVE_DAKOTA_
+		void  InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){_error_("not implemented yet");};
+		void  InputUpdateFromMatrixDakota(IssmDouble* matrix, int nows, int ncols, int name, int type){_error_("not implemented yet");};
+		void  InputScaleFromDakota(IssmDouble* distributed_values, IssmDouble* partition, int npart, int nt, int name){_error_("not implemented yet!");}
+#endif
+		/*}}}*/
+};
+#endif  /* _TETRA_H_*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/TetraRef.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/TetraRef.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/TetraRef.cpp	(revision 27955)
@@ -0,0 +1,406 @@
+/*!\file TetraRef.c
+ * \brief: implementation of the TetraRef object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMNODESP0  1
+#define NUMNODESP1  4
+#define NUMNODESP1b 5
+#define NUMNODESP2  10
+#define NUMNODESMAX 10
+
+/*Object constructors and destructor*/
+TetraRef::TetraRef(){/*{{{*/
+}
+/*}}}*/
+TetraRef::~TetraRef(){/*{{{*/
+}
+/*}}}*/
+
+/*Reference Element numerics*/
+void TetraRef::GetInputDerivativeValue(IssmDouble* p, IssmDouble* plist,IssmDouble* xyz_list, GaussTetra* gauss,int finiteelement){/*{{{*/
+	/*From node values of parameter p (p_list[0], p_list[1], p_list[2],
+	 * p_list[3], p_list[4] and p_list[4]), return parameter derivative value at
+	 * gaussian point specified by gauss_coord:
+	 *   dp/dx=p_list[0]*dh1/dx+p_list[1]*dh2/dx+p_list[2]*dh3/dx+p_list[3]*dh4/dx+p_list[4]*dh5/dx+p_list[5]*dh6/dx;
+	 *   dp/dy=p_list[0]*dh1/dy+p_list[1]*dh2/dy+p_list[2]*dh3/dy+p_list[3]*dh4/dy+p_list[4]*dh5/dy+p_list[5]*dh6/dy;
+	 *   dp/dz=p_list[0]*dh1/dz+p_list[1]*dh2/dz+p_list[2]*dh3/dz+p_list[3]*dh4/dz+p_list[4]*dh5/dz+p_list[5]*dh6/dz;
+	 *
+	 *   p is a vector of size 3x1 already allocated.
+	 *
+	 * WARNING: For a significant gain in performance, it is better to use
+	 * static memory allocation instead of dynamic.
+	 */
+
+	/*Allocate derivatives of basis functions*/
+	IssmDouble  dbasis[3*NUMNODESMAX];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+	_assert_(numnodes<=NUMNODESMAX);
+
+	/*Get basis functions derivatives at this point*/
+	GetNodalFunctionsDerivatives(&dbasis[0],xyz_list,gauss,finiteelement);
+
+	/*Calculate parameter for this Gauss point*/
+	IssmDouble dpx=0.;
+	IssmDouble dpy=0.;
+	IssmDouble dpz=0.;
+	for(int i=0;i<numnodes;i++) dpx += dbasis[0*numnodes+i]*plist[i];
+	for(int i=0;i<numnodes;i++) dpy += dbasis[1*numnodes+i]*plist[i];
+	for(int i=0;i<numnodes;i++) dpz += dbasis[2*numnodes+i]*plist[i];
+
+	/*Assign values*/
+	p[0]=dpx;
+	p[1]=dpy;
+	p[2]=dpz;
+}
+/*}}}*/
+void TetraRef::GetInputValue(IssmDouble* p, IssmDouble* plist, Gauss* gauss,int finiteelement){/*{{{*/
+	/* WARNING: For a significant gain in performance, it is better to use
+	 * static memory allocation instead of dynamic.*/
+
+	/*Allocate basis functions*/
+	IssmDouble  basis[NUMNODESMAX];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+	_assert_(numnodes<=NUMNODESMAX);
+
+	/*Get basis functions at this point*/
+	GetNodalFunctions(&basis[0],gauss,finiteelement);
+
+	/*Calculate parameter for this Gauss point*/
+	IssmDouble value =0.;
+	for(int i=0;i<numnodes;i++) value += basis[i]*plist[i];
+
+	/*Assign output pointer*/
+	*p = value;
+}
+/*}}}*/
+void TetraRef::GetJacobian(IssmDouble* J, IssmDouble* xyz_list,GaussTetra* gauss){/*{{{*/
+	/*The Jacobian is constant over the element, discard the gaussian points. 
+	 * J is assumed to have been allocated of size 1*/
+
+	IssmDouble x1=xyz_list[3*0+0];
+	IssmDouble x2=xyz_list[3*1+0];
+	IssmDouble x3=xyz_list[3*2+0];
+	IssmDouble x4=xyz_list[3*3+0];
+
+	IssmDouble y1=xyz_list[3*0+1];
+	IssmDouble y2=xyz_list[3*1+1];
+	IssmDouble y3=xyz_list[3*2+1];
+	IssmDouble y4=xyz_list[3*3+1];
+
+	IssmDouble z1=xyz_list[3*0+2];
+	IssmDouble z2=xyz_list[3*1+2];
+	IssmDouble z3=xyz_list[3*2+2];
+	IssmDouble z4=xyz_list[3*3+2];
+
+	J[3*0+0] = x2-x1;
+	J[3*0+1] = y2-y1;
+	J[3*0+2] = z2-z1;
+
+	J[3*1+0] = x3-x1;
+	J[3*1+1] = y3-y1;
+	J[3*1+2] = z3-z1;
+
+	J[3*2+0] = x4-x1;
+	J[3*2+1] = y4-y1;
+	J[3*2+2] = z4-z1;
+}
+/*}}}*/
+void TetraRef::GetJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,GaussTetra* gauss){/*{{{*/
+	/*The Jacobian determinant is constant over the element, discard the gaussian points. 
+	 * J is assumed to have been allocated of size 2x2.*/
+	IssmDouble J[3][3];
+
+	/*Call Jacobian routine to get the jacobian:*/
+	GetJacobian(&J[0][0],xyz_list, gauss);
+
+	/*Get Determinant*/
+	Matrix3x3Determinant(Jdet,&J[0][0]);
+	if(*Jdet<0) _error_("negative jacobian determinant!");
+
+}
+/*}}}*/
+void TetraRef::GetJacobianDeterminantFace(IssmDouble*  Jdet, IssmDouble* xyz_list,GaussTetra* gauss){/*{{{*/
+	/*The Jacobian determinant is constant over the element, discard the gaussian points. 
+	 * J is assumed to have been allocated of size 2x2.*/
+
+	IssmDouble x1=xyz_list[3*0+0];
+	IssmDouble y1=xyz_list[3*0+1];
+	IssmDouble z1=xyz_list[3*0+2];
+	IssmDouble x2=xyz_list[3*1+0];
+	IssmDouble y2=xyz_list[3*1+1];
+	IssmDouble z2=xyz_list[3*1+2];
+	IssmDouble x3=xyz_list[3*2+0];
+	IssmDouble y3=xyz_list[3*2+1];
+	IssmDouble z3=xyz_list[3*2+2];
+
+	/*Jdet = norm( AB ^ AC ) / (2 * area of the reference triangle), with areaRef=sqrt(3) */
+	*Jdet=SQRT3/6.*pow(pow(((y2-y1)*(z3-z1)-(z2-z1)*(y3-y1)),2)+pow(((z2-z1)*(x3-x1)-(x2-x1)*(z3-z1)),2)+pow(((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)),2),0.5);
+	if(*Jdet<0) _error_("negative jacobian determinant!");
+}
+/*}}}*/
+void TetraRef::GetJacobianInvert(IssmDouble* Jinv, IssmDouble* xyz_list,GaussTetra* gauss){/*{{{*/
+
+	/*Jacobian*/
+	IssmDouble J[3][3];
+
+	/*Call Jacobian routine to get the jacobian:*/
+	GetJacobian(&J[0][0], xyz_list, gauss);
+
+	/*Invert Jacobian matrix: */
+	Matrix3x3Invert(Jinv,&J[0][0]);
+}
+/*}}}*/
+void TetraRef::GetNodalFunctions(IssmDouble* basis,Gauss* gauss_in,int finiteelement){/*{{{*/
+	/*This routine returns the values of the nodal functions  at the gaussian point.*/
+
+	_assert_(basis);
+
+	/*Cast gauss to GaussTetra*/
+	_assert_(gauss_in->Enum()==GaussTetraEnum);
+	GaussTetra* gauss = xDynamicCast<GaussTetra*>(gauss_in);
+
+	switch(finiteelement){
+		case P0Enum:
+			basis[0]=1.;
+			return;
+		case P1Enum: case P1DGEnum:
+			basis[0]=gauss->coord1;
+			basis[1]=gauss->coord2;
+			basis[2]=gauss->coord3;
+			basis[3]=gauss->coord4;
+			return;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			/*Corner nodes*/
+			basis[0]=gauss->coord1;
+			basis[1]=gauss->coord2;
+			basis[2]=gauss->coord3;
+			basis[3]=gauss->coord4;
+			/*bubble*/
+			basis[4]=256.*gauss->coord1*gauss->coord2*gauss->coord3*gauss->coord4;
+			return;
+		case P2Enum:
+			/*Vertices*/
+			basis[0]=gauss->coord1*(2.*gauss->coord1-1.);
+			basis[1]=gauss->coord2*(2.*gauss->coord2-1.);
+			basis[2]=gauss->coord3*(2.*gauss->coord3-1.);
+			basis[3]=gauss->coord4*(2.*gauss->coord4-1.);
+			/*Edges*/
+			basis[4]=4.*gauss->coord2*gauss->coord3;
+			basis[5]=4.*gauss->coord1*gauss->coord3;
+			basis[6]=4.*gauss->coord1*gauss->coord2;
+			basis[7]=4.*gauss->coord2*gauss->coord4;
+			basis[8]=4.*gauss->coord3*gauss->coord4;
+			basis[9]=4.*gauss->coord1*gauss->coord4;
+			return;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+}
+/*}}}*/
+void TetraRef::GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, GaussTetra* gauss,int finiteelement){/*{{{*/
+
+	/*This routine returns the values of the nodal functions derivatives  (with respect to the 
+	 * actual coordinate system): */
+	IssmDouble    Jinv[3][3];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+
+	/*Get nodal functions derivatives in reference triangle*/
+	IssmDouble dbasis_ref[3*NUMNODESMAX];
+	GetNodalFunctionsDerivativesReference(dbasis_ref,gauss,finiteelement); 
+
+	/*Get Jacobian invert: */
+	GetJacobianInvert(&Jinv[0][0], xyz_list, gauss);
+
+	/*Build dbasis: 
+	 *
+	 * [dhi/dx]= Jinv'*[dhi/dr]
+	 * [dhi/dy]        [dhi/ds]
+	 * [dhi/dz]        [dhi/dzeta]
+	 */
+
+	for(int i=0;i<numnodes;i++){
+		dbasis[numnodes*0+i]=Jinv[0][0]*dbasis_ref[0*numnodes+i]+Jinv[0][1]*dbasis_ref[1*numnodes+i]+Jinv[0][2]*dbasis_ref[2*numnodes+i];
+		dbasis[numnodes*1+i]=Jinv[1][0]*dbasis_ref[0*numnodes+i]+Jinv[1][1]*dbasis_ref[1*numnodes+i]+Jinv[1][2]*dbasis_ref[2*numnodes+i];
+		dbasis[numnodes*2+i]=Jinv[2][0]*dbasis_ref[0*numnodes+i]+Jinv[2][1]*dbasis_ref[1*numnodes+i]+Jinv[2][2]*dbasis_ref[2*numnodes+i];
+	}
+}
+/*}}}*/
+void TetraRef::GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,GaussTetra* gauss,int finiteelement){/*{{{*/
+	/*This routine returns the values of the nodal functions derivatives  (with respect to the 
+	 * natural coordinate system) at the gaussian point. */
+
+	_assert_(dbasis && gauss);
+
+	switch(finiteelement){
+		case P0Enum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP0*0+0] = 0.;
+			dbasis[NUMNODESP0*1+0] = 0.;
+			dbasis[NUMNODESP0*2+0] = 0.;
+			return;
+		case P1Enum: case P1DGEnum:
+			dbasis[NUMNODESP1*0+0] = -1.;
+			dbasis[NUMNODESP1*1+0] = -1.;
+			dbasis[NUMNODESP1*2+0] = -1.;
+
+			dbasis[NUMNODESP1*0+1] = 1.;
+			dbasis[NUMNODESP1*1+1] = 0.;
+			dbasis[NUMNODESP1*2+1] = 0.;
+
+			dbasis[NUMNODESP1*0+2] = 0.;
+			dbasis[NUMNODESP1*1+2] = 1.;
+			dbasis[NUMNODESP1*2+2] = 0.;
+
+			dbasis[NUMNODESP1*0+3] = 0.;
+			dbasis[NUMNODESP1*1+3] = 0.;
+			dbasis[NUMNODESP1*2+3] = 1.;
+			return;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			dbasis[NUMNODESP1b*0+0] = -1.;
+			dbasis[NUMNODESP1b*1+0] = -1.;
+			dbasis[NUMNODESP1b*2+0] = -1.;
+
+			dbasis[NUMNODESP1b*0+1] = 1.;
+			dbasis[NUMNODESP1b*1+1] = 0.;
+			dbasis[NUMNODESP1b*2+1] = 0.;
+
+			dbasis[NUMNODESP1b*0+2] = 0.;
+			dbasis[NUMNODESP1b*1+2] = 1.;
+			dbasis[NUMNODESP1b*2+2] = 0.;
+
+			dbasis[NUMNODESP1b*0+3] = 0.;
+			dbasis[NUMNODESP1b*1+3] = 0.;
+			dbasis[NUMNODESP1b*2+3] = 1.;
+
+			dbasis[NUMNODESP1b*0+4] = 256.*(-gauss->coord2*gauss->coord3*gauss->coord4+gauss->coord1*gauss->coord3*gauss->coord4);
+			dbasis[NUMNODESP1b*1+4] = 256.*(-gauss->coord2*gauss->coord3*gauss->coord4+gauss->coord1*gauss->coord2*gauss->coord4);
+			dbasis[NUMNODESP1b*2+4] = 256.*(-gauss->coord2*gauss->coord3*gauss->coord4+gauss->coord1*gauss->coord2*gauss->coord3);
+			return;
+		case P2Enum:
+			dbasis[NUMNODESP2*0+0] = -4.*gauss->coord1+1.;
+			dbasis[NUMNODESP2*1+0] = -4.*gauss->coord1+1.;
+			dbasis[NUMNODESP2*2+0] = -4.*gauss->coord1+1.;
+
+			dbasis[NUMNODESP2*0+1] = 4.*gauss->coord2-1.;
+			dbasis[NUMNODESP2*1+1] = 0.;
+			dbasis[NUMNODESP2*2+1] = 0.;
+
+			dbasis[NUMNODESP2*0+2] = 0.;
+			dbasis[NUMNODESP2*1+2] = 4.*gauss->coord3-1.;
+			dbasis[NUMNODESP2*2+2] = 0.;
+
+			dbasis[NUMNODESP2*0+3] = 0.;
+			dbasis[NUMNODESP2*1+3] = 0.;
+			dbasis[NUMNODESP2*2+3] = 4.*gauss->coord4-1.;
+
+			dbasis[NUMNODESP2*0+4] = 4.*gauss->coord3;
+			dbasis[NUMNODESP2*1+4] = 4.*gauss->coord2;
+			dbasis[NUMNODESP2*2+4] = 0.;
+
+			dbasis[NUMNODESP2*0+5] = -4.*gauss->coord3;
+			dbasis[NUMNODESP2*1+5] = 4.*(gauss->coord1-gauss->coord3);
+			dbasis[NUMNODESP2*2+5] = -4.*gauss->coord3;
+
+			dbasis[NUMNODESP2*0+6] = 4.*(gauss->coord1-gauss->coord2);
+			dbasis[NUMNODESP2*1+6] = -4.*gauss->coord2;
+			dbasis[NUMNODESP2*2+6] = -4.*gauss->coord2;
+
+			dbasis[NUMNODESP2*0+7] = 4.*gauss->coord4;
+			dbasis[NUMNODESP2*1+7] = 0.;
+			dbasis[NUMNODESP2*2+7] = 4.*gauss->coord2;
+
+			dbasis[NUMNODESP2*0+8] = 0.;
+			dbasis[NUMNODESP2*1+8] = 4.*gauss->coord4;
+			dbasis[NUMNODESP2*2+8] = 4.*gauss->coord3;
+
+			dbasis[NUMNODESP2*0+9] = -4.*gauss->coord4;
+			dbasis[NUMNODESP2*1+9] = -4.*gauss->coord4;
+			dbasis[NUMNODESP2*2+9] = 4.*(gauss->coord1-gauss->coord4);
+			return;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+}
+/*}}}*/
+int  TetraRef::NumberofNodes(int finiteelement){/*{{{*/
+
+	switch(finiteelement){
+		case P0Enum:                return NUMNODESP0;
+		case P1Enum:                return NUMNODESP1;
+		case P1DGEnum:              return NUMNODESP1;
+		case P1bubbleEnum:          return NUMNODESP1b;
+		case P1bubblecondensedEnum: return NUMNODESP1b;
+		case P2Enum:                return NUMNODESP2;
+		case P1P1Enum:              return NUMNODESP1*2;
+		case P1P1GLSEnum:           return NUMNODESP1*2;
+		case MINIcondensedEnum:     return NUMNODESP1b+NUMNODESP1;
+		case MINIEnum:              return NUMNODESP1b+NUMNODESP1;
+		case TaylorHoodEnum:        return NUMNODESP2+NUMNODESP1;
+		case LATaylorHoodEnum:      return NUMNODESP2;
+		case XTaylorHoodEnum:       return NUMNODESP2+NUMNODESP1;
+		default: _error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
+int  TetraRef::PressureInterpolation(int fe_stokes){/*{{{*/
+
+	switch(fe_stokes){
+		case P1P1Enum:          return P1Enum;
+		case P1P1GLSEnum:       return P1Enum;
+		case MINIcondensedEnum: return P1Enum;
+		case MINIEnum:          return P1Enum;
+		case TaylorHoodEnum:    return P1Enum;
+		case LATaylorHoodEnum:  return NoneEnum;
+		case XTaylorHoodEnum:   return P1Enum;
+		default:       _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet");
+	}
+
+	return -1;
+}/*}}}*/
+int  TetraRef::TensorInterpolation(int fe_stokes){/*{{{*/
+	/*This routine returns the values of the nodal functions  at the gaussian point.*/
+
+	switch(fe_stokes){
+		case XTaylorHoodEnum: return P1DGEnum;
+		default: _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet");
+	}
+}
+/*}}}*/
+int  TetraRef::VelocityInterpolation(int fe_stokes){/*{{{*/
+
+	switch(fe_stokes){
+		case P1P1Enum:          return P1Enum;
+		case P1P1GLSEnum:       return P1Enum;
+		case MINIcondensedEnum: return P1bubbleEnum;
+		case MINIEnum:          return P1bubbleEnum;
+		case TaylorHoodEnum:    return P2Enum;
+		case LATaylorHoodEnum:  return P2Enum;
+		case XTaylorHoodEnum:   return P2Enum;
+		default:       _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/TetraRef.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/TetraRef.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/TetraRef.h	(revision 27955)
@@ -0,0 +1,33 @@
+
+/*!\file:  TetraRef.h
+ * \brief abstract class for handling Tetra oriented routines, like nodal functions, 
+ * strain rate generation, etc ...
+ */ 
+
+#ifndef _TETRAREF_H_
+#define _TETRAREF_H_
+
+class GaussTetra;
+
+class TetraRef{
+
+	public: 
+		TetraRef();
+		~TetraRef();
+
+		void GetInputDerivativeValue(IssmDouble* p, IssmDouble* plist,IssmDouble* xyz_list, GaussTetra* gauss,int finiteelement);
+		void GetInputValue(IssmDouble* p, IssmDouble* plist, Gauss* gauss,int finiteelement);
+		void GetJacobian(IssmDouble* J, IssmDouble* xyz_list,GaussTetra* gauss);
+		void GetJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,GaussTetra* gauss);
+		void GetJacobianDeterminantFace(IssmDouble*  Jdet, IssmDouble* xyz_list,GaussTetra* gauss);
+		void GetJacobianInvert(IssmDouble* Jinv, IssmDouble* xyz_list,GaussTetra* gauss);
+		void GetNodalFunctions(IssmDouble* basis,Gauss* gauss_in,int finiteelement);
+		void GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, GaussTetra* gauss,int finiteelement);
+		void GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,GaussTetra* gauss,int finiteelement);
+		void Marshall(MarshallHandle* marshallhandle){ /*do nothing */};
+		int  NumberofNodes(int finiteelement);
+		int  PressureInterpolation(int fe_stokes);
+		int  TensorInterpolation(int fe_stokes);
+		int  VelocityInterpolation(int fe_stokes);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Tria.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Tria.cpp	(revision 27955)
@@ -0,0 +1,8439 @@
+/*!\file Tria.cpp
+ * \brief: implementation of the Tria object
+ */
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+//#include <gsl_cblas.h>
+#include "../classes.h"
+#include "../Inputs/TriaInput.h"
+#include "../Inputs/PentaInput.h"
+#include "../Inputs/ControlInput.h"
+#include "../Inputs/DatasetInput.h"
+#include "../Inputs/TransientInput.h"
+#include "../../shared/shared.h"
+#ifdef _HAVE_SEALEVELCHANGE_
+#include "../../modules/GiaDeflectionCorex/GiaDeflectionCorex.h"
+#endif
+/*}}}*/
+
+/*Element macros*/
+#define NUMVERTICES   3
+#define NUMVERTICES1D 2
+//#define MICI          0 //1 = DeConto & Pollard, 2 = Anna Crawford DOMINOS
+
+/*Constructors/destructor/copy*/
+Tria::Tria(int tria_id,int tria_sid,int tria_lid,IoModel* iomodel,int nummodels)/*{{{*/
+	:ElementHook(nummodels,tria_id,NUMVERTICES,iomodel){
+
+		this->iscollapsed = 0;
+
+		/*id: */
+		this->id  = tria_id;
+		this->sid = tria_sid;
+		this->lid = tria_lid;
+
+		/*this->parameters: we still can't point to it, it may not even exist. Configure will handle this.*/
+		this->parameters = NULL;
+
+		/*initialize pointers:*/
+		this->nodes    = NULL;
+		this->vertices = NULL;
+		this->material = NULL;
+		if(nummodels>0){
+			this->element_type_list=xNew<int>(nummodels);
+			for(int i=0;i<nummodels;i++) this->element_type_list[i] = 0;
+		}
+		else this->element_type_list = NULL;
+
+		/*surface and base*/
+		IssmDouble sum;
+		this->isonsurface = false;
+		this->isonbase    = false;
+		switch(iomodel->domaintype){
+			case Domain2DverticalEnum:
+				_assert_(iomodel->Data("md.mesh.vertexonsurface"));
+				_assert_(iomodel->Data("md.mesh.vertexonbase"));
+				sum = 0.;
+				for(int i=0;i<NUMVERTICES;i++) sum += iomodel->Data("md.mesh.vertexonsurface")[reCast<int>(iomodel->elements[(tria_id-1)*NUMVERTICES+i])-1];
+				_assert_(sum>=0 && sum<3);
+				if(sum>1.) this->isonsurface = true;
+				sum = 0.;
+				for(int i=0;i<NUMVERTICES;i++) sum += iomodel->Data("md.mesh.vertexonbase")[reCast<int>(iomodel->elements[(tria_id-1)*NUMVERTICES+i])-1];
+				_assert_(sum>=0 && sum<3);
+				if(sum>1.) this->isonbase = true;
+				break;
+			case Domain2DhorizontalEnum:
+			case Domain3DsurfaceEnum:
+				this->isonsurface = true;
+				this->isonbase    = true;
+				break;
+			default: _error_("mesh "<<EnumToStringx(iomodel->domaintype)<<" not supported yet");
+		}
+
+}/*}}}*/
+Tria::~Tria(){/*{{{*/
+	this->parameters=NULL;
+}
+/*}}}*/
+Object* Tria::copy() {/*{{{*/
+
+	int i;
+	Tria* tria=NULL;
+
+	tria=new Tria();
+
+	tria->iscollapsed=this->iscollapsed;
+
+	//deal with TriaRef mother class
+	int nanalyses = this->numanalyses;
+	if(nanalyses > 0){
+		tria->element_type_list=xNew<int>(nanalyses);
+		for(i=0;i<nanalyses;i++){
+			if (this->element_type_list[i]) tria->element_type_list[i]=this->element_type_list[i];
+			else tria->element_type_list[i] = 0;
+		}
+	}
+	else tria->element_type_list = NULL;
+	tria->element_type=this->element_type;
+	tria->numanalyses=nanalyses;
+
+	//deal with ElementHook mother class
+	if (this->hnodes){
+		tria->hnodes=xNew<Hook*>(tria->numanalyses);
+		for(i=0;i<tria->numanalyses;i++){
+			if (this->hnodes[i]) tria->hnodes[i] = (Hook*)(this->hnodes[i]->copy());
+			else tria->hnodes[i] = NULL;
+		}
+	}
+	else tria->hnodes = NULL;
+
+	tria->hvertices = (Hook*)this->hvertices->copy();
+	if(this->hmaterial)tria->hmaterial = (Hook*)this->hmaterial->copy();
+	tria->hneighbors = NULL;
+
+	/*deal with Tria fields: */
+	tria->id  = this->id;
+	tria->sid = this->sid;
+	tria->lid = this->lid;
+	tria->isonbase  = this->isonbase;
+	tria->isonsurface  = this->isonsurface;
+
+	/*point parameters: */
+	tria->parameters=this->parameters;
+
+	/*recover objects: */
+	if (this->nodes){
+		unsigned int num_nodes = 3;
+		tria->nodes = xNew<Node*>(num_nodes); //we cannot rely on an analysis_counter to tell us which analysis_type we are running, so we just copy the nodes.
+		for(i=0;i<num_nodes;i++) if(this->nodes[i]) tria->nodes[i]=this->nodes[i]; else tria->nodes[i] = NULL;
+	}
+	else tria->nodes = NULL;
+
+	tria->vertices = (Vertex**)this->hvertices->deliverp();
+	if(this->hmaterial)tria->material = (Material*)this->hmaterial->delivers();
+
+	return tria;
+}
+/*}}}*/
+void Tria::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = TriaEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->iscollapsed);
+	marshallhandle->call(this->isonsurface);
+	marshallhandle->call(this->isonbase);
+
+	/*Call parent classes: */
+	ElementHook::Marshall(marshallhandle);
+	Element::MarshallElement2(marshallhandle,this->numanalyses);
+	TriaRef::Marshall(marshallhandle);
+
+	vertices = (Vertex**)this->hvertices->deliverp();
+	material = (Material*)this->hmaterial->delivers();
+
+}
+/*}}}*/
+
+/*Other*/
+void       Tria::AddBasalInput(int input_enum,IssmDouble* values, int interpolation_enum){/*{{{*/
+
+	/*Call inputs method*/
+	_assert_(this->inputs);
+
+	int domaintype;
+	parameters->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+		case Domain3DsurfaceEnum:
+			this->AddInput(input_enum,values,interpolation_enum);
+			break;
+		case Domain2DverticalEnum:{
+			_error_("not implemented yet");
+										  }
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+}
+/*}}}*/
+void       Tria::AddInput(int input_enum,IssmDouble* values, int interpolation_enum){/*{{{*/
+
+	/*Intermediaries*/
+	int vertexlids[NUMVERTICES];
+
+	/*Call inputs method*/
+	if(!this->inputs){
+		int* temp = xNew<int>(3);
+		_error_("inputs not set");
+	}
+	_assert_(this->inputs);
+	switch(interpolation_enum){
+		case P1Enum:
+			for(int i=0;i<NUMVERTICES;i++) vertexlids[i]=this->vertices[i]->lid;
+			inputs->SetTriaInput(input_enum,interpolation_enum,NUMVERTICES,vertexlids,values);
+			break;
+		case P1DGEnum:
+			for(int i=0;i<NUMVERTICES;i++) vertexlids[i]=this->vertices[i]->lid;
+			inputs->SetTriaInput(input_enum,interpolation_enum,this->lid,NUMVERTICES,values);
+			break;
+		default:
+			inputs->SetTriaInput(input_enum,interpolation_enum,this->lid,this->GetNumberOfNodes(interpolation_enum),values);
+	}
+
+}
+/*}}}*/
+void       Tria::AddControlInput(int input_enum,Inputs* inputs,IoModel* iomodel,IssmDouble* values,IssmDouble* values_min,IssmDouble* values_max, int interpolation_enum,int id){/*{{{*/
+
+	/*Intermediaries*/
+	int vertexlids[NUMVERTICES];
+
+	_assert_(iomodel->elements);
+	for(int i=0;i<NUMVERTICES;i++){
+		int vertexid =reCast<int>(iomodel->elements[NUMVERTICES*this->Sid()+i]); //ids for vertices are in the elements array from Matlab
+		vertexlids[i]=iomodel->my_vertices_lids[vertexid-1];
+	}
+
+	/*Create Control Input*/
+	inputs->SetControlInput(input_enum,TriaInputEnum,interpolation_enum,id);
+	ControlInput* control_input = inputs->GetControlInput(input_enum); _assert_(input_enum);
+
+	/*Call inputs method*/
+	switch(interpolation_enum){
+		case P0Enum:
+			control_input->SetControl(interpolation_enum,1,&this->lid,values,values_min,values_max);
+			break;
+		case P1Enum:
+			for(int i=0;i<NUMVERTICES;i++){
+				if(xIsNan<IssmDouble>(values[i])) values[i] = 0.;
+				if(xIsNan<IssmDouble>(values_min[i])) values_min[i] = 0.;
+				if(xIsNan<IssmDouble>(values_max[i])) values_max[i] = 0.;
+			}
+			control_input->SetControl(interpolation_enum,NUMVERTICES,&vertexlids[0],values,values_min,values_max);
+			break;
+		default:
+			_error_("Cannot add \""<<EnumToStringx(input_enum)<<"\" interpolation "<<EnumToStringx(interpolation_enum)<<" not supported");
+	}
+
+}
+/*}}}*/
+void       Tria::DatasetInputCreate(IssmDouble* array,int M,int N,int* individual_enums,int num_inputs,Inputs* inputs,IoModel* iomodel,int input_enum){/*{{{*/
+
+	/*Intermediaries*/
+	int        vertexsids[NUMVERTICES];
+	int        vertexlids[NUMVERTICES];
+	IssmDouble nodeinputs[NUMVERTICES];
+
+	/*Some sanity checks*/
+	if(num_inputs<1)                 _error_("Cannot create a DatasetInput of size <1");
+	if(M!=iomodel->numberofvertices) _error_("Input size not supported yet");
+	if(N!=num_inputs)                _error_("Sizes are not consistent");
+
+	/*Get indices*/
+	_assert_(iomodel->elements);
+	for(int i=0;i<NUMVERTICES;i++){
+		vertexsids[i] = reCast<int>(iomodel->elements[NUMVERTICES*this->Sid()+i])-1;
+		vertexlids[i] = iomodel->my_vertices_lids[vertexsids[i]];
+	}
+
+	/*Create inputs and add to DataSetInput*/
+	for(int i=0;i<num_inputs;i++){
+		for(int j=0;j<NUMVERTICES;j++) nodeinputs[j]=array[vertexsids[j]*N+i];
+		inputs->SetTriaDatasetInput(input_enum,individual_enums[i],P1Enum,NUMVERTICES,vertexlids,nodeinputs);
+	}
+}
+/*}}}*/
+void       Tria::AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part){/*{{{*/
+
+	bool       already = false;
+	int        i,j;
+	int        partition[NUMVERTICES];
+	int        offsetsid[NUMVERTICES];
+	int        offsetdof[NUMVERTICES];
+	IssmDouble area;
+	IssmDouble mean;
+
+	/*First, get the area: */
+	area=this->GetArea();
+
+	/*Figure out the average for this element: */
+	this->GetVerticesSidList(&offsetsid[0]);
+	this->GetVerticesPidList(&offsetdof[0]);
+	mean=0;
+	for(i=0;i<NUMVERTICES;i++){
+		partition[i]=reCast<int>(qmu_part[offsetsid[i]]);
+		mean=mean+1.0/NUMVERTICES*vertex_response[offsetdof[i]];
+	}
+
+	/*Add contribution: */
+	for(i=0;i<NUMVERTICES;i++){
+		already=false;
+		for(j=0;j<i;j++){
+			if (partition[i]==partition[j]){
+				already=true;
+				break;
+			}
+		}
+		if(!already){
+			partition_contributions->SetValue(partition[i],mean*area,ADD_VAL);
+			partition_areas->SetValue(partition[i],area,ADD_VAL);
+		};
+	}
+}
+/*}}}*/
+void       Tria::CalvingRateVonmises(){/*{{{*/
+
+	/*First, compute Von Mises Stress*/
+	this->ComputeSigmaVM();
+
+	/*Now compute calving rate*/
+	IssmDouble  calvingrate[NUMVERTICES];
+	IssmDouble  sigma_vm,vx,vy;
+	IssmDouble  sigma_max,sigma_max_floating,sigma_max_grounded,n;
+	IssmDouble  groundedice,bed,sealevel;
+
+	/*Retrieve all inputs and parameters we will need*/
+	Input* vx_input       = this->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input       = this->GetInput(VyEnum); _assert_(vy_input);
+	Input* gr_input       = this->GetInput(MaskOceanLevelsetEnum); _assert_(gr_input);
+	Input* bs_input       = this->GetInput(BaseEnum);                    _assert_(bs_input);
+	Input* smax_fl_input  = this->GetInput(CalvingStressThresholdFloatingiceEnum); _assert_(smax_fl_input);
+	Input* smax_gr_input  = this->GetInput(CalvingStressThresholdGroundediceEnum); _assert_(smax_gr_input);
+	Input* sl_input       = this->GetInput(SealevelEnum); _assert_(sl_input);
+	Input* sigma_vm_input = this->GetInput(SigmaVMEnum); _assert_(sigma_vm_input);
+
+	/* Start looping on the number of vertices: */
+	GaussTria gauss;
+	for(int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/*Get velocity components and thickness*/
+		sigma_vm_input->GetInputValue(&sigma_vm,&gauss);
+		vx_input->GetInputValue(&vx,&gauss);
+		vy_input->GetInputValue(&vy,&gauss);
+		gr_input->GetInputValue(&groundedice,&gauss);
+		bs_input->GetInputValue(&bed,&gauss);
+		smax_fl_input->GetInputValue(&sigma_max_floating,&gauss);
+		smax_gr_input->GetInputValue(&sigma_max_grounded,&gauss);
+		sl_input->GetInputValue(&sealevel,&gauss);
+
+		/*Tensile stress threshold*/
+		if(groundedice<0)
+		 sigma_max = sigma_max_floating;
+		else
+		 sigma_max = sigma_max_grounded;
+
+		/*Assign values*/
+		if(bed>sealevel){
+			calvingrate[iv] = 0.;
+		}
+		else{
+			calvingrate[iv] = sqrt(vx*vx+vy*vy)*sigma_vm/sigma_max;
+		}
+	}
+
+	/*Add input*/
+	this->AddInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum);
+   this->CalvingRateToVector();
+}
+/*}}}*/
+void       Tria::CalvingRateVonmisesAD(){/*{{{*/
+
+	/*First, compute Von Mises Stress*/
+	this->ComputeSigmaVM();
+
+	/*Now compute calving rate*/
+	IssmDouble  calvingrate[NUMVERTICES];
+	IssmDouble  sigma_vm,vx,vy;
+	IssmDouble  sigma_max,sigma_max_floating,sigma_max_grounded,n;
+	IssmDouble  groundedice,bed,sealevel;
+	int M;
+	int basinid;
+	IssmDouble* sigma_max_floating_basin=NULL;
+	IssmDouble* sigma_max_grounded_basin=NULL;
+
+	/*Retrieve all inputs and parameters we will need*/
+	Input* vx_input       = this->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input       = this->GetInput(VyEnum); _assert_(vy_input);
+	Input* gr_input       = this->GetInput(MaskOceanLevelsetEnum); _assert_(gr_input);
+	Input* bs_input       = this->GetInput(BaseEnum);                    _assert_(bs_input);
+	Input* sl_input       = this->GetInput(SealevelEnum); _assert_(sl_input);
+	Input* sigma_vm_input = this->GetInput(SigmaVMEnum); _assert_(sigma_vm_input);
+
+	this->Element::GetInputValue(&basinid,CalvingBasinIdEnum);
+
+	parameters->FindParam(&sigma_max_floating_basin,&M,CalvingADStressThresholdFloatingiceEnum);
+	parameters->FindParam(&sigma_max_grounded_basin,&M,CalvingADStressThresholdGroundediceEnum);
+
+	sigma_max_floating = sigma_max_floating_basin[basinid];
+	sigma_max_grounded = sigma_max_grounded_basin[basinid];
+
+	/* Start looping on the number of vertices: */
+	GaussTria gauss;
+	for(int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/*Get velocity components and thickness*/
+		sigma_vm_input->GetInputValue(&sigma_vm,&gauss);
+		vx_input->GetInputValue(&vx,&gauss);
+		vy_input->GetInputValue(&vy,&gauss);
+		gr_input->GetInputValue(&groundedice,&gauss);
+		bs_input->GetInputValue(&bed,&gauss);
+		sl_input->GetInputValue(&sealevel,&gauss);
+
+		/*Tensile stress threshold*/
+		if(groundedice<0)
+		 sigma_max = sigma_max_floating;
+		else
+		 sigma_max = sigma_max_grounded;
+
+		/*Assign values*/
+		if(bed>sealevel){
+			calvingrate[iv] = 0.;
+		}
+		else{
+			calvingrate[iv] = sqrt(vx*vx+vy*vy)*sigma_vm/sigma_max;
+		}
+	}
+
+	/*Add input*/
+	this->AddInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum);
+   this->CalvingRateToVector();
+}
+/*}}}*/
+void       Tria::CalvingRateTest(){/*{{{*/
+
+	IssmDouble  calvingratex[NUMVERTICES];
+	IssmDouble  calvingratey[NUMVERTICES];
+	IssmDouble  calvingrate[NUMVERTICES];
+	IssmDouble  vx,vy,vel;
+	IssmDouble  dphidx, dphidy, dphi;
+	IssmDouble  time;
+	IssmDouble  coeff, indrate;
+	IssmDouble  bed, bedrate = 1.0;
+
+	/*Retrieve all inputs and parameters we will need*/
+	parameters->FindParam(&time,TimeEnum);
+	parameters->FindParam(&coeff,CalvingTestSpeedfactorEnum,time);
+	parameters->FindParam(&indrate,CalvingTestIndependentRateEnum,time);
+
+	Input *bs_input = this->GetInput(BedEnum);_assert_(bs_input);
+	Input* vx_input = this->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input = this->GetInput(VyEnum); _assert_(vy_input);
+	Input *lsf_slopex_input  = this->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input);
+   Input *lsf_slopey_input  = this->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input);
+
+	/* Start looping on the number of vertices: */
+	GaussTria gauss;
+	for(int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/*Get velocity components and thickness*/
+		vx_input->GetInputValue(&vx,&gauss);
+		vy_input->GetInputValue(&vy,&gauss);
+
+		lsf_slopex_input->GetInputValue(&dphidx,&gauss);
+      lsf_slopey_input->GetInputValue(&dphidy,&gauss);
+
+		bs_input->GetInputValue(&bed,&gauss);
+		bedrate = (bed>0)?0.0:1.0;
+
+      vel=sqrt(vx*vx + vy*vy) + 1e-14;
+      dphi=sqrt(dphidx*dphidx+dphidy*dphidy)+ 1e-14;
+
+		calvingratex[iv]= coeff*vx + bedrate*indrate*dphidx/dphi;
+		calvingratey[iv]= coeff*vy + bedrate*indrate*dphidy/dphi;
+		calvingrate[iv] = sqrt(calvingratex[iv]*calvingratex[iv] + calvingratey[iv]*calvingratey[iv]);
+	}
+
+	/*Add input*/
+	this->AddInput(CalvingratexEnum,&calvingratex[0],P1DGEnum);
+	this->AddInput(CalvingrateyEnum,&calvingratey[0],P1DGEnum);
+	this->AddInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum);
+}
+/*}}}*/
+void       Tria::CalvingCrevasseDepth(){/*{{{*/
+
+	IssmDouble  calvingrate[NUMVERTICES];
+	IssmDouble  vx,vy;
+	IssmDouble  water_height, bed,Hab,thickness,surface;
+	IssmDouble  surface_crevasse[NUMVERTICES], basal_crevasse[NUMVERTICES], crevasse_depth[NUMVERTICES], H_surf, H_surfbasal;
+	IssmDouble  strainparallel, straineffective,B,n;
+	IssmDouble  s_xx,s_xy,s_yy,s1,s2,stmp;
+	int         crevasse_opening_stress;
+
+	/*reset if no ice in element*/
+	if(!this->IsIceInElement()){
+		for(int i=0;i<NUMVERTICES;i++){
+			surface_crevasse[i] = 0.;
+			basal_crevasse[i] = 0.;
+			crevasse_depth[i] = 0.;
+		}
+		this->AddInput(SurfaceCrevasseEnum,&surface_crevasse[0],P1DGEnum);
+		this->AddInput(BasalCrevasseEnum,&basal_crevasse[0],P1DGEnum);
+		this->AddInput(CrevasseDepthEnum,&crevasse_depth[0],P1DGEnum);
+		return;
+	}
+
+	/*retrieve the type of crevasse_opening_stress*/
+	this->parameters->FindParam(&crevasse_opening_stress,CalvingCrevasseDepthEnum);
+
+	IssmDouble rho_ice        = this->FindParam(MaterialsRhoIceEnum);
+	IssmDouble rho_seawater   = this->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble rho_freshwater = this->FindParam(MaterialsRhoFreshwaterEnum);
+	IssmDouble constant_g     = this->FindParam(ConstantsGEnum);
+
+	Input*   H_input                 = this->GetInput(ThicknessEnum); _assert_(H_input);
+	Input*   bed_input               = this->GetInput(BedEnum); _assert_(bed_input);
+	Input*   surface_input           = this->GetInput(SurfaceEnum); _assert_(surface_input);
+	Input*	strainrateparallel_input  = this->GetInput(StrainRateparallelEnum);  _assert_(strainrateparallel_input);
+	Input*	strainrateeffective_input = this->GetInput(StrainRateeffectiveEnum); _assert_(strainrateeffective_input);
+	Input*	vx_input                  = this->GetInput(VxEnum); _assert_(vx_input);
+	Input*	vy_input                  = this->GetInput(VxEnum); _assert_(vy_input);
+	Input*   waterheight_input       = this->GetInput(WaterheightEnum); _assert_(waterheight_input);
+	Input*   s_xx_input              = this->GetInput(DeviatoricStressxxEnum);     _assert_(s_xx_input);
+	Input*   s_xy_input              = this->GetInput(DeviatoricStressxyEnum);     _assert_(s_xy_input);
+	Input*   s_yy_input              = this->GetInput(DeviatoricStressyyEnum);     _assert_(s_yy_input);
+	Input*	B_input  = this->GetInput(MaterialsRheologyBbarEnum);   _assert_(B_input);
+	Input*	n_input  = this->GetInput(MaterialsRheologyNEnum);   _assert_(n_input);
+
+	/*Loop over all elements of this partition*/
+	GaussTria gauss;
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		H_input->GetInputValue(&thickness,&gauss);
+		bed_input->GetInputValue(&bed,&gauss);
+		surface_input->GetInputValue(&surface,&gauss);
+
+		vx_input->GetInputValue(&vx,&gauss);
+		vy_input->GetInputValue(&vy,&gauss);
+		waterheight_input->GetInputValue(&water_height,&gauss);
+		s_xx_input->GetInputValue(&s_xx,&gauss);
+		s_xy_input->GetInputValue(&s_xy,&gauss);
+		s_yy_input->GetInputValue(&s_yy,&gauss);
+
+      /*Get longitudinal or maximum Eigen stress*/
+		if(crevasse_opening_stress==0){
+         /*Otero2010: balance between the tensile deviatoric stress and ice overburden pressure*/
+			strainrateparallel_input->GetInputValue(&strainparallel,&gauss);
+			strainrateeffective_input->GetInputValue(&straineffective,&gauss);
+			B_input->GetInputValue(&B,&gauss);
+			n_input->GetInputValue(&n,&gauss);
+         s1 =  B * strainparallel * pow(straineffective, (1./n)-1);
+		}
+		else if(crevasse_opening_stress==1){
+         /*Benn2017,Todd2018: maximum principal stress */
+			Matrix2x2Eigen(&s1,&s2,NULL,NULL,s_xx,s_xy,s_yy);
+			s1 = max(0.,max(s1,s2));
+		}
+      else{
+         _error_("not supported");
+      }
+
+      /*Surface crevasse: sigma'_xx - rho_i g d + rho_fw g d_w = 0*/
+      surface_crevasse[iv] = 2*s1 / (rho_ice*constant_g) + (rho_freshwater/rho_ice)*water_height;
+		if(surface_crevasse[iv]<0.){
+			surface_crevasse[iv]=0.;
+			water_height = 0.;
+		}
+
+      /*Basal crevasse: sigma'_xx - rho_i g (H-d) - rho_w g (b+d) = 0*/
+      if(bed>0.){
+         basal_crevasse[iv] = 0.;
+      }
+      else{
+         Hab = thickness - (rho_seawater/rho_ice) * (-bed);
+         if(Hab<0.)  Hab=0.;
+         basal_crevasse[iv] = (rho_ice/(rho_seawater-rho_ice))* (2*s1/ (rho_ice*constant_g)-Hab);
+         if(basal_crevasse[iv]<0.) basal_crevasse[iv]=0.;
+      }
+
+      /*Total crevasse depth (surface + basal)*/
+		crevasse_depth[iv]   = surface_crevasse[iv] + basal_crevasse[iv];
+	}
+
+	this->AddInput(SurfaceCrevasseEnum,&surface_crevasse[0],P1DGEnum);
+	this->AddInput(BasalCrevasseEnum,&basal_crevasse[0],P1DGEnum);
+	this->AddInput(CrevasseDepthEnum,&crevasse_depth[0],P1DGEnum);
+}
+/*}}}*/
+void       Tria::CalvingRateLevermann(){/*{{{*/
+
+	IssmDouble  strainparallel;
+	IssmDouble  propcoeff,bed;
+	IssmDouble  strainperpendicular;
+	IssmDouble  calvingrate[NUMVERTICES];
+
+	/*Retrieve all inputs and parameters we will need*/
+	Input *bs_input                  = this->GetInput(BaseEnum);                    _assert_(bs_input);
+	Input *strainparallel_input      = this->GetInput(StrainRateparallelEnum);      _assert_(strainparallel_input);
+	Input *strainperpendicular_input = this->GetInput(StrainRateperpendicularEnum); _assert_(strainperpendicular_input);
+	Input *levermanncoeff_input      = this->GetInput(CalvinglevermannCoeffEnum);   _assert_(levermanncoeff_input);
+
+	/* Start looping on the number of vertices: */
+	GaussTria gauss;
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/* Get the value we need*/
+		strainparallel_input->GetInputValue(&strainparallel,&gauss);
+		strainperpendicular_input->GetInputValue(&strainperpendicular,&gauss);
+		levermanncoeff_input->GetInputValue(&propcoeff,&gauss);
+		bs_input->GetInputValue(&bed,&gauss);
+
+		/*Calving rate proportionnal to the positive product of the strain rate along the ice flow direction and the strain rate perpendicular to the ice flow */
+		if(strainparallel>0. && strainperpendicular>0. && bed<=0.){
+			calvingrate[iv]=propcoeff*strainparallel*strainperpendicular;
+		}
+		else
+			calvingrate[iv]=0.;
+	}
+
+	/*Add input*/
+	this->AddInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum);
+	this->CalvingRateToVector();
+}/*}}}*/
+void       Tria::CalvingPollard(){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble calvingrate[NUMVERTICES];
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble dvx[2], dvy[2];
+	IssmDouble B, n, H, bed, vx, vy, vel, smb;
+	IssmDouble ds, db, da, dt, dw, r, R;
+
+	if(!IsIceInElement()){
+		for (int iv=0;iv<NUMVERTICES;iv++) calvingrate[iv]=0.;
+		this->AddInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum);
+		this->CalvingRateToVector();
+		return;
+	}
+
+	/*Retrieve all inputs and parameters we will need*/
+	IssmDouble rc        = FindParam(CalvingRcEnum);
+	IssmDouble rho_ice   = FindParam(MaterialsRhoIceEnum);
+	IssmDouble rho_water = FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble gravity   = FindParam(ConstantsGEnum);
+   IssmDouble mig_max   = FindParam(MigrationMaxEnum);
+
+	/*Retrieve all inputs and parameters we will need */
+	Input *bs_input  = this->GetInput(BaseEnum);                  _assert_(bs_input);
+	Input *vx_input  = this->GetInput(VxEnum);                    _assert_(vx_input);
+	Input *vy_input  = this->GetInput(VyEnum);                    _assert_(vy_input);
+	Input *B_input   = this->GetInput(MaterialsRheologyBbarEnum); _assert_(B_input);
+	Input *n_input   = this->GetInput(MaterialsRheologyNEnum);    _assert_(n_input);
+	Input *H_input   = this->GetInput(ThicknessEnum);             _assert_(H_input);
+	Input *smb_input = this->GetInput(SmbMassBalanceEnum);        _assert_(smb_input);
+
+	/* Start looping on the number of vertices: */
+	GaussTria gauss;
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/* Get the value we need*/
+		bs_input->GetInputValue(&bed,&gauss);
+
+		/*Only calve if bed is below sea level, as always*/
+		if(bed<=0.){
+
+			/*Get Triangle node coordinates*/
+			::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+			/*Get strain rates*/
+			vx_input->GetInputDerivativeValue(&dvx[0],&xyz_list[0][0],&gauss);
+			vy_input->GetInputDerivativeValue(&dvy[0],&xyz_list[0][0],&gauss);
+
+			/*Get other inputs*/
+			B_input->GetInputValue(&B,&gauss);
+         n_input->GetInputValue(&n,&gauss);
+         H_input->GetInputValue(&H,&gauss);
+         vx_input->GetInputValue(&vx,&gauss);
+         vy_input->GetInputValue(&vy,&gauss);
+         smb_input->GetInputValue(&smb,&gauss);
+
+			/*1. with surface crevasses, ds*/
+			ds = 2./(rho_ice*gravity) * B * pow( max(0.,dvx[0]) + max(0.,dvy[1]) , 1./n);
+
+         /*2. basal crevasses*/
+         db = (rho_ice)/(rho_water - rho_ice) * ds;
+
+         /*3. "Additional" crevasse opening*/
+			vel = sqrt(vx*vx + vy*vy);
+			da = H* max(0., log(vel*365*24*3600/1600.))/log(1.2);
+
+         /*4. deal with shallow ice*/
+         dt = H* max(0., min(1., (150. - H)/50.));
+
+         /*5. water induced opening*/
+         dw = 0.;
+         R = smb*365.25*24*3600; //convert from m/s to m/yr
+			if(R>1.5 && R<=3.){
+            dw = 4*1.5*(R - 1.5);
+         }
+         else if(R>3.){
+            dw = R*R;
+         }
+
+         /*Total calving rate*/
+         r = (ds+db+da+dt+dw)/H;
+			//if(this->Id()==1){
+			//	printf("rc = %g\n",rc);
+			//	printf("ds = %g\n",ds);
+			//}
+			calvingrate[iv]= mig_max * max(0., min(1., (r - rc)/(1 - rc))); //P&DC: mig_max = 3000 m/yr
+			_assert_(!xIsNan<IssmDouble>(calvingrate[iv]));
+			_assert_(!xIsInf<IssmDouble>(calvingrate[iv]));
+		}
+		else
+		 calvingrate[iv]=0.;
+	}
+
+	/*Add input*/
+	this->AddInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum);
+	this->CalvingRateToVector();
+}/*}}}*/
+void       Tria::CalvingFluxLevelset(){/*{{{*/
+
+	/*Make sure there is an ice front here*/
+	if(!IsIceInElement() || !IsZeroLevelset(MaskIceLevelsetEnum)){
+		IssmDouble flux_per_area=0;
+		this->AddInput(CalvingFluxLevelsetEnum,&flux_per_area,P0Enum);
+	}
+	else{
+		int               domaintype,index1,index2;
+		const IssmPDouble epsilon = 1.e-15;
+		IssmDouble        s1,s2;
+		IssmDouble        gl[NUMVERTICES];
+		IssmDouble        xyz_front[2][3];
+
+		IssmDouble  xyz_list[NUMVERTICES][3];
+		::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+		/*Recover parameters and values*/
+		parameters->FindParam(&domaintype,DomainTypeEnum);
+		Element::GetInputListOnVertices(&gl[0],MaskIceLevelsetEnum);
+
+		/*Be sure that values are not zero*/
+		if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+		if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+		if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+		if(domaintype==Domain2DverticalEnum){
+			_error_("not implemented");
+		}
+		else if(domaintype==Domain2DhorizontalEnum || domaintype==Domain3DEnum || domaintype==Domain3DsurfaceEnum){
+			int pt1 = 0;
+			int pt2 = 1;
+			if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+
+				/*Portion of the segments*/
+				s1=gl[2]/(gl[2]-gl[1]);
+				s2=gl[2]/(gl[2]-gl[0]);
+				if(gl[2]<0.){
+					pt1 = 1; pt2 = 0;
+				}
+				xyz_front[pt2][0]=xyz_list[2][0]+s1*(xyz_list[1][0]-xyz_list[2][0]);
+				xyz_front[pt2][1]=xyz_list[2][1]+s1*(xyz_list[1][1]-xyz_list[2][1]);
+				xyz_front[pt2][2]=xyz_list[2][2]+s1*(xyz_list[1][2]-xyz_list[2][2]);
+				xyz_front[pt1][0]=xyz_list[2][0]+s2*(xyz_list[0][0]-xyz_list[2][0]);
+				xyz_front[pt1][1]=xyz_list[2][1]+s2*(xyz_list[0][1]-xyz_list[2][1]);
+				xyz_front[pt1][2]=xyz_list[2][2]+s2*(xyz_list[0][2]-xyz_list[2][2]);
+			}
+			else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+
+				/*Portion of the segments*/
+				s1=gl[0]/(gl[0]-gl[1]);
+				s2=gl[0]/(gl[0]-gl[2]);
+				if(gl[0]<0.){
+					pt1 = 1; pt2 = 0;
+				}
+
+				xyz_front[pt1][0]=xyz_list[0][0]+s1*(xyz_list[1][0]-xyz_list[0][0]);
+				xyz_front[pt1][1]=xyz_list[0][1]+s1*(xyz_list[1][1]-xyz_list[0][1]);
+				xyz_front[pt1][2]=xyz_list[0][2]+s1*(xyz_list[1][2]-xyz_list[0][2]);
+				xyz_front[pt2][0]=xyz_list[0][0]+s2*(xyz_list[2][0]-xyz_list[0][0]);
+				xyz_front[pt2][1]=xyz_list[0][1]+s2*(xyz_list[2][1]-xyz_list[0][1]);
+				xyz_front[pt2][2]=xyz_list[0][2]+s2*(xyz_list[2][2]-xyz_list[0][2]);
+			}
+			else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+
+				/*Portion of the segments*/
+				s1=gl[1]/(gl[1]-gl[0]);
+				s2=gl[1]/(gl[1]-gl[2]);
+				if(gl[1]<0.){
+					pt1 = 1; pt2 = 0;
+				}
+
+				xyz_front[pt2][0]=xyz_list[1][0]+s1*(xyz_list[0][0]-xyz_list[1][0]);
+				xyz_front[pt2][1]=xyz_list[1][1]+s1*(xyz_list[0][1]-xyz_list[1][1]);
+				xyz_front[pt2][2]=xyz_list[1][2]+s1*(xyz_list[0][2]-xyz_list[1][2]);
+				xyz_front[pt1][0]=xyz_list[1][0]+s2*(xyz_list[2][0]-xyz_list[1][0]);
+				xyz_front[pt1][1]=xyz_list[1][1]+s2*(xyz_list[2][1]-xyz_list[1][1]);
+				xyz_front[pt1][2]=xyz_list[1][2]+s2*(xyz_list[2][2]-xyz_list[1][2]);
+			}
+			else{
+				_error_("case not possible");
+			}
+
+		}
+		else _error_("mesh type "<<EnumToStringx(domaintype)<<"not supported yet ");
+
+		/*Some checks in debugging mode*/
+		_assert_(s1>=0 && s1<=1.);
+		_assert_(s2>=0 && s2<=1.);
+
+		/*Get normal vector*/
+		IssmDouble normal[3];
+		this->NormalSection(&normal[0],&xyz_front[0][0]);
+		normal[0] = -normal[0];
+		normal[1] = -normal[1];
+
+		/*Get inputs*/
+		IssmDouble flux = 0.;
+		IssmDouble area = 0.;
+		IssmDouble calvingratex,calvingratey,thickness,Jdet,flux_per_area;
+		IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
+		Input* thickness_input    = this->GetInput(ThicknessEnum); _assert_(thickness_input);
+		Input* calvingratex_input = this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+		Input* calvingratey_input = this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
+
+		/*Start looping on Gaussian points*/
+		Gauss* gauss=this->NewGauss(&xyz_list[0][0],&xyz_front[0][0],3);
+		while(gauss->next()){
+			thickness_input->GetInputValue(&thickness,gauss);
+			calvingratex_input->GetInputValue(&calvingratex,gauss);
+			calvingratey_input->GetInputValue(&calvingratey,gauss);
+			this->JacobianDeterminantSurface(&Jdet,&xyz_front[0][0],gauss);
+
+			flux += rho_ice*Jdet*gauss->weight*thickness*(calvingratex*normal[0] + calvingratey*normal[1]);
+			area += Jdet*gauss->weight*thickness;
+
+			flux_per_area=flux/area;
+		}
+
+		this->AddInput(CalvingFluxLevelsetEnum,&flux_per_area,P0Enum);
+
+		/*Clean up and return*/
+		delete gauss;
+	}
+}
+/*}}}*/
+void       Tria::CalvingMeltingFluxLevelset(){/*{{{*/
+
+	/*Make sure there is an ice front here*/
+	if(!IsIceInElement() || !IsZeroLevelset(MaskIceLevelsetEnum)){
+		IssmDouble flux_per_area=0;
+		this->AddInput(CalvingMeltingFluxLevelsetEnum,&flux_per_area,P0Enum);
+	}
+	else{
+		int               domaintype,index1,index2;
+		const IssmPDouble epsilon = 1.e-15;
+		IssmDouble        s1,s2;
+		IssmDouble        gl[NUMVERTICES];
+		IssmDouble        xyz_front[2][3];
+
+		IssmDouble  xyz_list[NUMVERTICES][3];
+      ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+		/*Recover parameters and values*/
+		parameters->FindParam(&domaintype,DomainTypeEnum);
+		Element::GetInputListOnVertices(&gl[0],MaskIceLevelsetEnum);
+
+		/*Be sure that values are not zero*/
+		if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+		if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+		if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+		if(domaintype==Domain2DverticalEnum){
+			_error_("not implemented");
+		}
+		else if(domaintype==Domain2DhorizontalEnum || domaintype==Domain3DEnum || domaintype==Domain3DsurfaceEnum){
+			int pt1 = 0;
+			int pt2 = 1;
+			if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+
+				/*Portion of the segments*/
+				s1=gl[2]/(gl[2]-gl[1]);
+				s2=gl[2]/(gl[2]-gl[0]);
+				if(gl[2]<0.){
+					pt1 = 1; pt2 = 0;
+				}
+				xyz_front[pt2][0]=xyz_list[2][0]+s1*(xyz_list[1][0]-xyz_list[2][0]);
+				xyz_front[pt2][1]=xyz_list[2][1]+s1*(xyz_list[1][1]-xyz_list[2][1]);
+				xyz_front[pt2][2]=xyz_list[2][2]+s1*(xyz_list[1][2]-xyz_list[2][2]);
+				xyz_front[pt1][0]=xyz_list[2][0]+s2*(xyz_list[0][0]-xyz_list[2][0]);
+				xyz_front[pt1][1]=xyz_list[2][1]+s2*(xyz_list[0][1]-xyz_list[2][1]);
+				xyz_front[pt1][2]=xyz_list[2][2]+s2*(xyz_list[0][2]-xyz_list[2][2]);
+			}
+			else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+
+				/*Portion of the segments*/
+				s1=gl[0]/(gl[0]-gl[1]);
+				s2=gl[0]/(gl[0]-gl[2]);
+				if(gl[0]<0.){
+					pt1 = 1; pt2 = 0;
+				}
+
+				xyz_front[pt1][0]=xyz_list[0][0]+s1*(xyz_list[1][0]-xyz_list[0][0]);
+				xyz_front[pt1][1]=xyz_list[0][1]+s1*(xyz_list[1][1]-xyz_list[0][1]);
+				xyz_front[pt1][2]=xyz_list[0][2]+s1*(xyz_list[1][2]-xyz_list[0][2]);
+				xyz_front[pt2][0]=xyz_list[0][0]+s2*(xyz_list[2][0]-xyz_list[0][0]);
+				xyz_front[pt2][1]=xyz_list[0][1]+s2*(xyz_list[2][1]-xyz_list[0][1]);
+				xyz_front[pt2][2]=xyz_list[0][2]+s2*(xyz_list[2][2]-xyz_list[0][2]);
+			}
+			else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+
+				/*Portion of the segments*/
+				s1=gl[1]/(gl[1]-gl[0]);
+				s2=gl[1]/(gl[1]-gl[2]);
+				if(gl[1]<0.){
+					pt1 = 1; pt2 = 0;
+				}
+
+				xyz_front[pt2][0]=xyz_list[1][0]+s1*(xyz_list[0][0]-xyz_list[1][0]);
+				xyz_front[pt2][1]=xyz_list[1][1]+s1*(xyz_list[0][1]-xyz_list[1][1]);
+				xyz_front[pt2][2]=xyz_list[1][2]+s1*(xyz_list[0][2]-xyz_list[1][2]);
+				xyz_front[pt1][0]=xyz_list[1][0]+s2*(xyz_list[2][0]-xyz_list[1][0]);
+				xyz_front[pt1][1]=xyz_list[1][1]+s2*(xyz_list[2][1]-xyz_list[1][1]);
+				xyz_front[pt1][2]=xyz_list[1][2]+s2*(xyz_list[2][2]-xyz_list[1][2]);
+			}
+			else{
+				_error_("case not possible");
+			}
+
+		}
+		else _error_("mesh type "<<EnumToStringx(domaintype)<<"not supported yet ");
+
+		/*Some checks in debugging mode*/
+		_assert_(s1>=0 && s1<=1.);
+		_assert_(s2>=0 && s2<=1.);
+
+		/*Get normal vector*/
+		IssmDouble normal[3];
+		this->NormalSection(&normal[0],&xyz_front[0][0]);
+		normal[0] = -normal[0];
+		normal[1] = -normal[1];
+
+		/*Get inputs*/
+		IssmDouble flux = 0.;
+		IssmDouble area = 0.;
+		IssmDouble calvingratex,calvingratey,vx,vy,vel,meltingrate,meltingratex,meltingratey,thickness,Jdet,flux_per_area;
+		IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
+		Input* thickness_input    = this->GetInput(ThicknessEnum); _assert_(thickness_input);
+		Input* calvingratex_input = this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+		Input* calvingratey_input = this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
+		Input* vx_input           = this->GetInput(VxEnum); _assert_(vx_input);
+		Input* vy_input           = this->GetInput(VyEnum); _assert_(vy_input);
+		Input* meltingrate_input  = this->GetInput(CalvingMeltingrateEnum); _assert_(meltingrate_input);
+
+		/*Start looping on Gaussian points*/
+		Gauss* gauss=this->NewGauss(&xyz_list[0][0],&xyz_front[0][0],3);
+		while(gauss->next()){
+			thickness_input->GetInputValue(&thickness,gauss);
+			calvingratex_input->GetInputValue(&calvingratex,gauss);
+			calvingratey_input->GetInputValue(&calvingratey,gauss);
+			vx_input->GetInputValue(&vx,gauss);
+			vy_input->GetInputValue(&vy,gauss);
+			vel=vx*vx+vy*vy;
+			meltingrate_input->GetInputValue(&meltingrate,gauss);
+			meltingratex=meltingrate*vx/(sqrt(vel)+1.e-14);
+			meltingratey=meltingrate*vy/(sqrt(vel)+1.e-14);
+			this->JacobianDeterminantSurface(&Jdet,&xyz_front[0][0],gauss);
+
+			flux += rho_ice*Jdet*gauss->weight*thickness*((calvingratex+meltingratex)*normal[0] + (calvingratey+meltingratey)*normal[1]);
+			area += Jdet*gauss->weight*thickness;
+
+			flux_per_area=flux/area;
+		}
+
+		this->AddInput(CalvingMeltingFluxLevelsetEnum,&flux_per_area,P0Enum);
+
+		/*Clean up and return*/
+		delete gauss;
+	}
+}
+/*}}}*/
+void       Tria::CalvingRateParameterization(){/*{{{*/
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  epsilon[3]; /* epsilon=[exx,eyy,exy];*/
+	IssmDouble  calvingrate[NUMVERTICES];
+	IssmDouble  lambda1,lambda2,ex,ey,vx,vy,vel;
+	IssmDouble  sigma_vm[NUMVERTICES];
+	IssmDouble  B, n;
+	IssmDouble  epse_2,groundedice,bed,sealevel;
+	IssmDouble  arate, rho_ice, rho_water, thickness;
+	int			use_parameter=-1;
+	IssmDouble  gamma, theta, alpha, xoffset, yoffset;
+	IssmDouble  vel_lower, vel_upper, vel_threshold, vrate, truncateVrate, vel_max;
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs and parameters we will need*/
+	Input *vx_input      = this->GetInput(VxEnum);                                _assert_(vx_input);
+	Input *vy_input      = this->GetInput(VyEnum);                                _assert_(vy_input);
+	Input *B_input       = this->GetInput(MaterialsRheologyBbarEnum);             _assert_(B_input);
+	Input *gr_input      = this->GetInput(MaskOceanLevelsetEnum);                 _assert_(gr_input);
+	Input *bs_input      = this->GetInput(BedEnum);                               _assert_(bs_input);
+	Input *H_input       = this->GetInput(ThicknessEnum);                         _assert_(H_input);
+	Input *n_input       = this->GetInput(MaterialsRheologyNEnum);                _assert_(n_input);
+	Input *sl_input      = this->GetInput(SealevelEnum);                          _assert_(sl_input);
+	Input *arate_input   = this->GetInput(CalvingAblationrateEnum);               _assert_(arate_input);
+
+	/* Ice and sea water density */
+	this->FindParam(&rho_ice,MaterialsRhoIceEnum);
+	this->FindParam(&rho_water,MaterialsRhoSeawaterEnum);
+
+	/* Use which parameter  */
+	this->FindParam(&use_parameter, CalvingUseParamEnum);
+	this->FindParam(&theta, CalvingThetaEnum);
+	this->FindParam(&alpha, CalvingAlphaEnum);
+	this->FindParam(&xoffset, CalvingXoffsetEnum);
+	this->FindParam(&yoffset, CalvingYoffsetEnum);
+	this->FindParam(&vel_lower, CalvingVelLowerboundEnum);
+	this->FindParam(&vel_upper, CalvingVelUpperboundEnum);
+	this->FindParam(&vel_threshold, CalvingVelThresholdEnum);
+	this->FindParam(&vel_max, CalvingVelMaxEnum);
+
+	/* Start looping on the number of vertices: */
+	GaussTria* gauss=new GaussTria();
+	for(int iv=0;iv<NUMVERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		/*Get velocity components and thickness*/
+		B_input->GetInputValue(&B,gauss);
+		n_input->GetInputValue(&n,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		gr_input->GetInputValue(&groundedice,gauss);
+		bs_input->GetInputValue(&bed,gauss);
+		H_input->GetInputValue(&thickness,gauss);
+		vel=sqrt(vx*vx+vy*vy)+1.e-14;
+		sl_input->GetInputValue(&sealevel,gauss);
+		arate_input->GetInputValue(&arate,gauss);
+		/* reduce the arate by a factor depends on a fixed velocity threshold */
+		vrate = 1.0;
+		if (vel < vel_threshold) vrate = vel / vel_threshold;
+		/* parameter used in the calving law: real time max vel, or predefined vel range*/
+		if (vel_upper <= vel_lower) {
+			truncateVrate = vel / vel_max;
+		}
+		else {
+			truncateVrate = (min(vel_upper, max(vel_lower, vel))-vel_lower) / (vel_upper - vel_lower);
+		}
+
+		/*Compute strain rate and viscosity: */
+		this->StrainRateSSA(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);
+
+		/*Get Eigen values*/
+		Matrix2x2Eigen(&lambda1,&lambda2,&ex,&ey,epsilon[0],epsilon[2],epsilon[1]);
+		_assert_(!xIsNan<IssmDouble>(lambda1));
+		_assert_(!xIsNan<IssmDouble>(lambda2));
+
+		/*Process Eigen values (only account for extension)*/
+		lambda1 = max(lambda1,0.);
+		lambda2 = max(lambda2,0.);
+
+		/*Calculate sigma_vm*/
+		epse_2    = 1./2. *(lambda1*lambda1 + lambda2*lambda2);
+		sigma_vm[iv]  = sqrt(3.) * B * pow(epse_2,1./(2.*n));
+
+		switch (use_parameter) { 
+			case 0:
+				/* 0 Linear: f(x) = y_{o} + \alpha (x+x_{o}) */
+				gamma = yoffset + alpha * (bed+xoffset);
+				break;
+			case 1:
+				/* 1 tanh: f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o})) */
+				gamma = yoffset -  0.5*theta*tanh(alpha*(bed+xoffset));
+				break;
+			case 2:
+				/* 2 tanh(thicknes): f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o})) */
+				gamma = yoffset -  0.5*theta*tanh(alpha*(-thickness+xoffset));
+				break;
+			case 3:
+				/* 3 tanh(normal vel): f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o})) */
+				gamma = yoffset -  0.5*theta*tanh(alpha*(truncateVrate+xoffset));
+				break;
+			case 4:
+				/* 4 tanh(normal vel), cross (0,0): f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o})) */
+				gamma = 0.5*theta*(tanh(alpha*xoffset) - tanh(alpha*(truncateVrate+xoffset)));
+				break;
+			case 5:
+				/* 5 Linear: f(x) = y_{o} + \alpha (x+x_{o}) */
+				gamma = yoffset + alpha * (truncateVrate+xoffset);
+				break;
+			case -1:
+				/* nothing, just the arate*/
+				gamma = 1;
+				break;
+			default:
+				_error_("The parameter is not supported yet!");
+		}
+
+		/* set upper and lower bounds */
+		if (gamma > 1.0) gamma = 1.0;
+		if (gamma < 0.0) gamma = 0.0;
+		if (bed >= sealevel) gamma = 0.0;
+
+		/*-------------------------------------------*/
+		calvingrate[iv] = arate*gamma*vrate;
+	}
+	/*Add input*/
+	this->AddInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum);
+	this->AddInput(SigmaVMEnum,&sigma_vm[0],P1DGEnum);
+	this->CalvingRateToVector();
+
+	/*Clean up and return*/
+	delete gauss;
+}
+/*}}}*/
+void       Tria::CalvingRateCalvingMIP(){/*{{{*/
+
+	IssmDouble  calvingrate[NUMVERTICES];
+	IssmDouble  calvingratex[NUMVERTICES];
+	IssmDouble  calvingratey[NUMVERTICES];
+	int			experiment = 1;  /* exp:1 by default */
+	int         dim, domaintype;
+	IssmDouble	vx, vy, vel, c, wrate;
+	IssmDouble  time, groundedice, yts;
+
+	/*Get problem dimension and whether there is moving front or not*/
+	this->FindParam(&domaintype,DomainTypeEnum);
+	this->FindParam(&time,TimeEnum);
+	this->FindParam(&yts,ConstantsYtsEnum);
+
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1; break;
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 2; break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+	if(dim==1) _error_("not implemented in 1D...");
+
+	/*Retrieve all inputs and parameters we will need*/
+	Input *vx_input      = this->GetInput(VxEnum);                                _assert_(vx_input);
+	Input *vy_input      = this->GetInput(VyEnum);                                _assert_(vy_input);
+	Input *wrate_input   = this->GetInput(CalvingAblationrateEnum);               _assert_(wrate_input); 
+	Input* gr_input      = this->GetInput(MaskOceanLevelsetEnum);						_assert_(gr_input);
+
+	/* Use which experiment: use existing Enum */
+	this->FindParam(&experiment, CalvingUseParamEnum);
+
+	/* Start looping on the number of vertices: */
+	GaussTria gauss;
+	for(int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/*Get velocity components */
+		vx_input->GetInputValue(&vx,&gauss);
+		vy_input->GetInputValue(&vy,&gauss);
+		vel=sqrt(vx*vx+vy*vy)+1.e-14;
+
+		/* no calving for grounded ice in EXP4 */
+		gr_input->GetInputValue(&groundedice,&gauss);
+
+		switch (experiment) { 
+			case 1:
+			case 3:
+				/* Exp 1 and 3: set c=v-wrate, wrate=0, so that w=0 */
+				wrate = 0.0;
+				break;
+			case 2:
+				/* Exp 2: set c=v-wrate(given)*/
+				wrate_input->GetInputValue(&wrate,&gauss);
+				break;
+			case 4:
+				/* Exp 4: set c=v-wrate(given), for the first 500 years, then c=0 for the second 500 years*/
+				if((groundedice<0) && (time<=500.0*yts)) {
+				//	wrate_input->GetInputValue(&wrate,&gauss);
+					wrate = -750*sin(2.0*M_PI*time/yts/1000)/yts;  // m/a -> m/s
+				}
+				else {
+					/* no calving on the grounded ice*/
+					wrate = vel;
+				}
+				break;
+			default:
+				_error_("The experiment is not supported yet!");
+		}
+
+		calvingrate[iv] = vel - wrate;
+		calvingratex[iv] = vx - wrate*vx/vel;
+		calvingratey[iv] = vy - wrate*vy/vel;
+	}
+	/*Add input*/
+	this->AddInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum);
+	this->AddInput(CalvingratexEnum,&calvingratex[0],P1DGEnum);
+	this->AddInput(CalvingrateyEnum,&calvingratey[0],P1DGEnum);
+}
+/*}}}*/
+IssmDouble Tria::CharacteristicLength(void){/*{{{*/
+
+	return sqrt(2*this->GetArea());
+}
+/*}}}*/
+void       Tria::ComputeBasalStress(void){/*{{{*/
+	_error_("Not Implemented yet");
+}
+/*}}}*/
+void       Tria::ComputeDeviatoricStressTensor(){/*{{{*/
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  viscosity,lambda1,lambda2;
+	IssmDouble  epsilon[3]; /* epsilon=[exx,eyy,exy];*/
+	IssmDouble  tau_xx[NUMVERTICES];
+	IssmDouble	tau_yy[NUMVERTICES];
+	IssmDouble	tau_zz[NUMVERTICES]={0,0,0};
+	IssmDouble  tau_xy[NUMVERTICES];
+	IssmDouble	tau_xz[NUMVERTICES]={0,0,0};
+	IssmDouble	tau_yz[NUMVERTICES]={0,0,0};
+	IssmDouble  tau_e[NUMVERTICES];
+	IssmDouble  tau_1[NUMVERTICES];
+	IssmDouble  tau_2[NUMVERTICES];
+	int domaintype,dim=2;
+
+	/*Get approximation*/
+	int approximation;
+	this->Element::GetInputValue(&approximation,ApproximationEnum);
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs we will be needing: */
+	this->FindParam(&domaintype,DomainTypeEnum);
+	Input* vx_input=this->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=this->GetInput(VyEnum); _assert_(vy_input);
+
+	/* Start looping on the number of vertices: */
+	GaussTria gauss;
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/*Compute strain rate and viscosity: */
+		this->StrainRateSSA(&epsilon[0],&xyz_list[0][0],&gauss,vx_input,vy_input);
+		switch(approximation){
+			case SSAApproximationEnum:
+				this->material->ViscositySSA(&viscosity,dim,&xyz_list[0][0],&gauss,vx_input,vy_input);
+				break;
+			case HOApproximationEnum:
+				this->material->ViscosityHO(&viscosity,dim,&xyz_list[0][0],&gauss,vx_input,vy_input);
+				break;
+			case FSApproximationEnum:
+				this->material->ViscosityFS(&viscosity,dim,&xyz_list[0][0],&gauss,vx_input,vy_input,NULL);
+				break;
+			default:
+				_error_("not supported yet");
+		}
+
+		/*Compute Stress*/
+		tau_xx[iv]=2*viscosity*epsilon[0]; // tau = nu eps
+		tau_yy[iv]=2*viscosity*epsilon[1];
+		tau_xy[iv]=2*viscosity*epsilon[2];
+		tau_e[iv]=1/sqrt(2)*sqrt(pow(tau_xx[iv],2)+pow(tau_yy[iv],2)+2*pow(tau_xy[iv],2));
+
+		/*Get Eigen values*/
+		Matrix2x2Eigen(&tau_2[iv],&tau_1[iv],NULL,NULL,tau_xx[iv],tau_xy[iv],tau_yy[iv]);
+	}
+
+	/*Add Stress tensor components into inputs*/
+	this->AddInput(DeviatoricStressxxEnum,&tau_xx[0],P1DGEnum);
+	this->AddInput(DeviatoricStressxyEnum,&tau_xy[0],P1DGEnum);
+	this->AddInput(DeviatoricStressxzEnum,&tau_xz[0],P1DGEnum);
+	this->AddInput(DeviatoricStressyyEnum,&tau_yy[0],P1DGEnum);
+	this->AddInput(DeviatoricStressyzEnum,&tau_yz[0],P1DGEnum);
+	this->AddInput(DeviatoricStresszzEnum,&tau_zz[0],P1DGEnum);
+	this->AddInput(DeviatoricStresseffectiveEnum,&tau_e[0],P1DGEnum);
+	this->AddInput(DeviatoricStress1Enum,&tau_1[0],P1DGEnum);
+	this->AddInput(DeviatoricStress2Enum,&tau_2[0],P1DGEnum);
+}
+/*}}}*/
+void	      Tria::ComputeEsaStrainAndVorticity(){ /*{{{*/
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  epsilon[4]; /* epsilon=[exx,eyy,exy+ (shear),exy- (rotation)];*/
+	IssmDouble  strain_xx[NUMVERTICES];
+	IssmDouble  strain_yy[NUMVERTICES];
+	IssmDouble  strain_xy[NUMVERTICES];
+	IssmDouble  vorticity_xy[NUMVERTICES];
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs we will be needing: */
+	Input* vx_input=this->GetInput(EsaXmotionEnum); _assert_(vx_input);
+	Input* vy_input=this->GetInput(EsaYmotionEnum); _assert_(vy_input);
+
+	/* Start looping on the number of vertices: */
+	GaussTria gauss;
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/*Compute strain rate and vorticity rate: */
+		this->StrainRateESA(&epsilon[0],&xyz_list[0][0],&gauss,vx_input,vy_input);
+
+		/*Compute Stress*/
+		strain_xx[iv]=epsilon[0];
+		strain_yy[iv]=epsilon[1];
+		strain_xy[iv]=epsilon[2];
+		vorticity_xy[iv]=epsilon[3];
+	}
+
+	/*Add Stress tensor components into inputs*/
+	this->AddInput(EsaStrainratexxEnum,&strain_xx[0],P1DGEnum);
+	this->AddInput(EsaStrainrateyyEnum,&strain_yy[0],P1DGEnum);
+	this->AddInput(EsaStrainratexyEnum,&strain_xy[0],P1DGEnum);
+	this->AddInput(EsaRotationrateEnum,&vorticity_xy[0],P1DGEnum);
+}
+/*}}}*/
+void       Tria::ComputeSigmaNN(){/*{{{*/
+
+	if(!IsOnBase()){
+		IssmDouble sigma_nn[3]={0.};
+		this->AddInput(SigmaNNEnum,&sigma_nn[0],P1Enum);
+		return;
+	}
+	else{
+		IssmDouble* xyz_list=NULL;
+		IssmDouble *xyz_list_base=NULL;
+		IssmDouble  pressure,viscosity;
+		IssmDouble  sigma_nn[3];
+		IssmDouble  sigma_xx,sigma_xy,sigma_yy;
+		IssmDouble  epsilon[3]; /* epsilon=[exx,eyy,exy];*/
+		IssmDouble  base_normal[2];
+		int domaintype,dim=2;
+
+		/* Get node coordinates and dof list: */
+		GetVerticesCoordinates(&xyz_list);
+	   GetVerticesCoordinatesBase(&xyz_list_base);
+
+		/*Retrieve all inputs we will be needing: */
+		this->FindParam(&domaintype,DomainTypeEnum);
+		if(domaintype==Domain2DhorizontalEnum) _error_("stress tensor calculation not supported for mesh of type " <<EnumToStringx(domaintype)<<", extrude mesh or call ComputeDeviatoricStressTensor");
+		Input* pressure_input=this->GetInput(PressureEnum); _assert_(pressure_input);
+		Input* vx_input=this->GetInput(VxEnum);             _assert_(vx_input);
+		Input* vy_input=this->GetInput(VyEnum);             _assert_(vy_input);
+
+		/* Start looping on the number of vertices: */
+		Gauss* gauss = this->NewGauss();
+		for(int i=0;i<NUMVERTICES;i++){
+			gauss->GaussNode(P1Enum,i);
+
+			/*Compute strain rate viscosity and pressure: */
+			this->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+			this->material->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,NULL);
+			pressure_input->GetInputValue(&pressure,gauss);
+
+			/*Compute Stress*/
+			sigma_xx=2*viscosity*epsilon[0]-pressure; // sigma = nu eps - pressure
+			sigma_yy=2*viscosity*epsilon[1]-pressure;
+			sigma_xy=2*viscosity*epsilon[2];
+
+			/*Get normal vector to the bed */
+			NormalBase(&base_normal[0],xyz_list_base);
+
+			/*Compute sigma_nn*/
+			sigma_nn[i]=sigma_xx*base_normal[0]*base_normal[0] + 2*sigma_xy*base_normal[0]*base_normal[1] + sigma_yy*base_normal[1]*base_normal[1];
+		}
+
+		/*Add Stress tensor components into inputs*/
+		this->AddInput(SigmaNNEnum,&sigma_nn[0],P1Enum);
+
+		/*Clean up and return*/
+		xDelete<IssmDouble>(xyz_list);
+		xDelete<IssmDouble>(xyz_list_base);
+		delete gauss;
+	}
+}
+/*}}}*/
+void       Tria::ComputeSigmaVM(){/*{{{*/
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  epsilon[3]; /* epsilon=[exx,eyy,exy];*/
+	IssmDouble  lambda1,lambda2,ex,ey,vx,vy,vel;
+	IssmDouble  sigma_vm[NUMVERTICES];
+	IssmDouble  B,n;
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs and parameters we will need*/
+	Input* vx_input = this->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input = this->GetInput(VyEnum); _assert_(vy_input);
+	Input* B_input  = this->GetInput(MaterialsRheologyBbarEnum);   _assert_(B_input);
+	Input* n_input  = this->GetInput(MaterialsRheologyNEnum); _assert_(n_input);
+
+	/* Start looping on the number of vertices: */
+	GaussTria gauss;
+	for(int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/*Get velocity components and thickness*/
+		B_input->GetInputValue(&B,&gauss);
+		n_input->GetInputValue(&n,&gauss);
+		vx_input->GetInputValue(&vx,&gauss);
+		vy_input->GetInputValue(&vy,&gauss);
+		vel=sqrt(vx*vx+vy*vy)+1.e-14;
+
+		/*Compute strain rate and viscosity: */
+		this->StrainRateSSA(&epsilon[0],&xyz_list[0][0],&gauss,vx_input,vy_input);
+
+		/*Get Eigen values*/
+		Matrix2x2Eigen(&lambda1,&lambda2,&ex,&ey,epsilon[0],epsilon[2],epsilon[1]);
+		_assert_(!xIsNan<IssmDouble>(lambda1));
+		_assert_(!xIsNan<IssmDouble>(lambda2));
+
+		/*Process Eigen values (only account for extension)*/
+		lambda1 = max(lambda1,0.);
+		lambda2 = max(lambda2,0.);
+
+		/*Calculate sigma_vm*/
+		IssmDouble epse_2 = 1./2. *(lambda1*lambda1 + lambda2*lambda2);
+		sigma_vm[iv]  = sqrt(3.) * B * pow(epse_2,1./(2.*n));
+	}
+
+	/*Add input*/
+	this->AddInput(SigmaVMEnum,&sigma_vm[0],P1DGEnum);
+}
+/*}}}*/
+void       Tria::ComputeStressTensor(){/*{{{*/
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  pressure,viscosity;
+	IssmDouble  epsilon[3]; /* epsilon=[exx,eyy,exy];*/
+	IssmDouble  sigma_xx[NUMVERTICES];
+	IssmDouble	sigma_yy[NUMVERTICES];
+	IssmDouble	sigma_zz[NUMVERTICES]={0,0,0};
+	IssmDouble  sigma_xy[NUMVERTICES];
+	IssmDouble	sigma_xz[NUMVERTICES]={0,0,0};
+	IssmDouble	sigma_yz[NUMVERTICES]={0,0,0};
+	int domaintype,dim=2;
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs we will be needing: */
+	this->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype==Domain2DhorizontalEnum) _error_("stress tensor calculation not supported for mesh of type " <<EnumToStringx(domaintype)<<", extrude mesh or call ComputeDeviatoricStressTensor");
+	Input* pressure_input=this->GetInput(PressureEnum); _assert_(pressure_input);
+	Input* vx_input=this->GetInput(VxEnum);             _assert_(vx_input);
+	Input* vy_input=this->GetInput(VyEnum);             _assert_(vy_input);
+
+	/* Start looping on the number of vertices: */
+	GaussTria gauss;
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/*Compute strain rate viscosity and pressure: */
+		this->StrainRateSSA(&epsilon[0],&xyz_list[0][0],&gauss,vx_input,vy_input);
+		this->material->ViscositySSA(&viscosity,dim,&xyz_list[0][0],&gauss,vx_input,vy_input);
+		pressure_input->GetInputValue(&pressure,&gauss);
+
+		/*Compute Stress*/
+		sigma_xx[iv]=2*viscosity*epsilon[0]-pressure; // sigma = nu eps - pressure
+		sigma_yy[iv]=2*viscosity*epsilon[1]-pressure;
+		sigma_xy[iv]=2*viscosity*epsilon[2];
+	}
+
+	/*Add Stress tensor components into inputs*/
+	this->AddInput(StressTensorxxEnum,&sigma_xx[0],P1DGEnum);
+	this->AddInput(StressTensorxyEnum,&sigma_xy[0],P1DGEnum);
+	this->AddInput(StressTensorxzEnum,&sigma_xz[0],P1DGEnum);
+	this->AddInput(StressTensoryyEnum,&sigma_yy[0],P1DGEnum);
+	this->AddInput(StressTensoryzEnum,&sigma_yz[0],P1DGEnum);
+	this->AddInput(StressTensorzzEnum,&sigma_zz[0],P1DGEnum);
+}
+/*}}}*/
+void       Tria::Configure(Elements* elementsin, Loads* loadsin,Nodes* nodesin,Vertices *verticesin,Materials* materialsin, Parameters* parametersin,Inputs* inputsin){/*{{{*/
+
+	/*go into parameters and get the analysis_counter: */
+	int analysis_counter;
+	parametersin->FindParam(&analysis_counter,AnalysisCounterEnum);
+
+	/*Get Element type*/
+	if (this->element_type_list) this->element_type=this->element_type_list[analysis_counter];
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	if(this->hnodes){
+		if (this->hnodes[analysis_counter]) this->hnodes[analysis_counter]->configure(nodesin);
+		else this->hnodes[analysis_counter] = NULL;
+	}
+	else this->hnodes = NULL;
+	this->hvertices->configure(verticesin);
+	if(this->hmaterial) this->hmaterial->configure(materialsin);
+
+	/*Now, go pick up the objects inside the hooks: */
+	if(this->hnodes && this->hnodes[analysis_counter]) this->nodes=(Node**)this->hnodes[analysis_counter]->deliverp();
+	else this->nodes=NULL;
+	this->vertices = (Vertex**)this->hvertices->deliverp();
+	if(this->hmaterial)this->material = (Material*)this->hmaterial->delivers();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+	this->inputs=inputsin;
+}/*}}}*/
+void       Tria::ControlInputSetGradient(IssmDouble* gradient,int control_enum,int control_index,int offset,int M,int N,int interp){/*{{{*/
+
+	IssmDouble  values[NUMVERTICES];
+	int         lidlist[NUMVERTICES];
+
+	/*Get list of ids for this element and this control*/
+	int* idlist = xNew<int>(NUMVERTICES*N);
+	GradientIndexing(&idlist[0],control_index);
+
+	ControlInput* control_input=this->inputs->GetControlInput(control_enum); _assert_(control_input);
+	this->GetVerticesLidList(&lidlist[0]);
+
+	/*Get values on vertices*/
+	if(control_input->layout_enum==TriaInputEnum){
+		ElementInput* gradient_input = control_input->GetInput("gradient"); _assert_(gradient_input);
+		if(gradient_input->GetInputInterpolationType()==P1Enum){
+			_assert_(N==1);
+			for(int i=0;i<NUMVERTICES;i++) values[i] = gradient[idlist[i]];
+			gradient_input->SetInput(P1Enum,NUMVERTICES,&lidlist[0],&values[0]);
+		}
+		else if(gradient_input->GetInputInterpolationType()==P0Enum){
+			_assert_(N==1);
+			gradient_input->SetInput(P0Enum,this->lid,gradient[idlist[0]]);
+		}
+		else{
+			_error_("not implemented yet");
+		}
+	}
+	else if(control_input->layout_enum==TransientInputEnum){
+		_assert_(N>1);
+
+		int* interp = NULL;
+		parameters->FindParam(&interp,NULL,ControlInputInterpolationEnum);
+
+		TransientInput* gradient_input = control_input->GetTransientInput("gradient"); _assert_(gradient_input);
+
+		for(int n=0;n<N;n++){
+			if(interp[control_index]==P1Enum){
+				for(int i=0;i<NUMVERTICES;i++) values[i] = gradient[idlist[i]];
+				gradient_input->AddTriaTimeInput(n,NUMVERTICES,&lidlist[0],&values[0],P1Enum);
+			}
+			else if(interp[control_index]==P0Enum){
+				gradient_input->AddTriaTimeInput(n,1,&(this->lid),&gradient[idlist[n]],P0Enum);
+			}
+			else{
+				_error_("not implemented yet");
+			}
+		}
+		xDelete<int>(interp);
+	}
+	else _error_("Type not supported");
+
+	/*Clean up*/
+	xDelete<int>(idlist);
+
+}/*}}}*/
+void       Tria::ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum,int control_interp){/*{{{*/
+
+	int         sidlist[NUMVERTICES];
+	int         lidlist[NUMVERTICES];
+	int         connectivity[NUMVERTICES];
+	IssmPDouble values[NUMVERTICES];
+	IssmPDouble gradients[NUMVERTICES];
+	IssmDouble  value,gradient;
+
+	/*Get relevant inputs*/
+	ElementInput* control_value    = this->inputs->GetControlInputData(control_enum,"value");    _assert_(control_value);
+	ElementInput* control_gradient = this->inputs->GetControlInputData(control_enum,"gradient"); _assert_(control_gradient);
+
+	if(control_interp==P1Enum){
+		_assert_(control_value->GetInputInterpolationType()==P1Enum);
+		_assert_(control_gradient->GetInputInterpolationType()==P1Enum);
+
+		this->GetVerticesConnectivityList(&connectivity[0]);
+		this->GetVerticesSidList(&sidlist[0]);
+		this->GetVerticesLidList(&lidlist[0]);
+
+		control_value->Serve(NUMVERTICES,&lidlist[0]);
+		control_gradient->Serve(NUMVERTICES,&lidlist[0]);
+
+		GaussTria gauss;
+		for (int iv=0;iv<NUMVERTICES;iv++){
+			gauss.GaussVertex(iv);
+
+			control_value->GetInputValue(&value,&gauss);
+			control_gradient->GetInputValue(&gradient,&gauss);
+
+			values[iv]    = reCast<IssmPDouble>(value)/reCast<IssmPDouble>(connectivity[iv]);
+			gradients[iv] = reCast<IssmPDouble>(gradient)/reCast<IssmPDouble>(connectivity[iv]);
+		}
+
+		vector_control->SetValues(NUMVERTICES,&sidlist[0],&values[0],ADD_VAL);
+		vector_gradient->SetValues(NUMVERTICES,&sidlist[0],&gradients[0],ADD_VAL);
+	}
+	else if(control_interp==P0Enum){
+		_assert_(control_value->GetInputInterpolationType()==P0Enum);
+		_assert_(control_gradient->GetInputInterpolationType()==P0Enum);
+
+		control_value->Serve(1,&this->lid);
+		control_gradient->Serve(1,&this->lid);
+
+		vector_control->SetValue(this->sid,reCast<IssmPDouble>(control_value->element_values[0]),ADD_VAL);
+		vector_gradient->SetValue(this->sid,reCast<IssmPDouble>(control_gradient->element_values[0]),ADD_VAL);
+	}
+	else{
+		_error_("not supported");
+	}
+
+}/*}}}*/
+void       Tria::CreateDistanceInputFromSegmentlist(IssmDouble* distances,int distanceenum){/*{{{*/
+
+	/*Get current field and vertex coordinates*/
+	IssmDouble ls[NUMVERTICES],distance;
+	Element::GetInputListOnVertices(&ls[0],distanceenum);
+
+	/*Get distance from list of segments and reset ls*/
+	for(int j=0;j<NUMVERTICES;j++){
+		distance=distances[this->vertices[j]->Lid()];
+		if(xIsNan<IssmDouble>(distance)) _error_("NaN found in vector");
+		if(xIsInf<IssmDouble>(distance)) _error_("Inf found in vector");
+
+		if(ls[j]>0){
+			ls[j] = distance;
+		}
+		else{
+			ls[j] = - distance;
+		}
+	}
+
+	/*Update Levelset*/
+	this->AddInput(distanceenum,&ls[0],P1Enum);
+}
+/*}}}*/
+int        Tria::EdgeOnBaseIndex(void){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	int        indices[3][2] = {{1,2},{2,0},{0,1}};
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&values[0],MeshVertexonbaseEnum);
+
+	for(int i=0;i<3;i++){
+		if(values[indices[i][0]] == 1. && values[indices[i][1]] == 1.){
+			return i;
+		}
+	}
+
+	_printf_("list of vertices on bed: "<<values[0]<<" "<<values[1]<<" "<<values[2]);
+	_error_("Could not find 2 vertices on bed");
+}
+/*}}}*/
+void       Tria::EdgeOnBaseIndices(int* pindex1,int* pindex2){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	int        indices[3][2] = {{1,2},{2,0},{0,1}};
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&values[0],MeshVertexonbaseEnum);
+
+	for(int i=0;i<3;i++){
+		if(values[indices[i][0]] == 1. && values[indices[i][1]] == 1.){
+			*pindex1 = indices[i][0];
+			*pindex2 = indices[i][1];
+			return;
+		}
+	}
+
+	_printf_("list of vertices on bed: "<<values[0]<<" "<<values[1]<<" "<<values[2]);
+	_error_("Could not find 2 vertices on bed");
+}
+/*}}}*/
+int        Tria::EdgeOnSurfaceIndex(void){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	int        indices[3][2] = {{1,2},{2,0},{0,1}};
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&values[0],MeshVertexonsurfaceEnum);
+
+	for(int i=0;i<3;i++){
+		if(values[indices[i][0]] == 1. && values[indices[i][1]] == 1.){
+			return i;
+		}
+	}
+
+	_printf_("list of vertices on surface: "<<values[0]<<" "<<values[1]<<" "<<values[2]);
+	_error_("Could not find 2 vertices on surface");
+}
+/*}}}*/
+void       Tria::EdgeOnSurfaceIndices(int* pindex1,int* pindex2){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	int        indices[3][2] = {{1,2},{2,0},{0,1}};
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&values[0],MeshVertexonsurfaceEnum);
+
+	for(int i=0;i<3;i++){
+		if(values[indices[i][0]] == 1. && values[indices[i][1]] == 1.){
+			*pindex1 = indices[i][0];
+			*pindex2 = indices[i][1];
+			return;
+		}
+	}
+
+	_printf_("list of vertices on surface: "<<values[0]<<" "<<values[1]<<" "<<values[2]);
+	_error_("Could not find 2 vertices on surface");
+}
+/*}}}*/
+void       Tria::ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze, Vector<IssmDouble>* vareae, bool spherical){/*{{{*/
+
+	/*Look for x,y,z coordinates:*/
+	IssmDouble xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],this->vertices,NUMVERTICES);
+
+	/*Find centroid:*/
+	IssmDouble xe=(xyz_list[0][0]+xyz_list[1][0]+xyz_list[2][0])/3.0;
+	IssmDouble ye=(xyz_list[0][1]+xyz_list[1][1]+xyz_list[2][1])/3.0;
+	IssmDouble ze=(xyz_list[0][2]+xyz_list[1][2]+xyz_list[2][2])/3.0;
+
+	if(!spherical){
+		IssmDouble area;
+		vxe->SetValue(this->sid,xe,INS_VAL);
+		vye->SetValue(this->sid,ye,INS_VAL);
+		vze->SetValue(this->sid,ze,INS_VAL);
+		area=this->GetAreaSpherical();
+		vareae->SetValue(this->sid,area,INS_VAL);
+
+		/*in addition, put in in the inputs:*/
+		this->inputs->SetDoubleInput(AreaEnum,this->lid,area);
+	}
+	else _error_("spherical coordinates not supported yet!");
+	return;
+}
+/*}}}*/
+void       Tria::ElementCoordinates(Vector<IssmDouble>* vlonge,Vector<IssmDouble>* vlate,Vector<IssmDouble>* vareae){ /*{{{*/
+
+	IssmDouble planetradius;
+
+	/*Look for x,y,z coordinates:*/
+	IssmDouble xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],this->vertices,NUMVERTICES);
+	IssmDouble area,xe,ye,ze,late,longe;
+
+	/*Find centroid:*/
+	xe=(xyz_list[0][0]+xyz_list[1][0]+xyz_list[2][0])/3.0;
+	ye=(xyz_list[0][1]+xyz_list[1][1]+xyz_list[2][1])/3.0;
+	ze=(xyz_list[0][2]+xyz_list[1][2]+xyz_list[2][2])/3.0;
+
+	late= asin(ze/sqrt(pow(xe,2.0)+pow(ye,2.0)+pow(ze,2.0)));
+	longe= atan2(ye,xe);
+	area=this->GetAreaSpherical();
+
+	vlonge->SetValue(this->sid,longe,INS_VAL);
+	vlate->SetValue(this->sid,late,INS_VAL);
+	vareae->SetValue(this->sid,area,INS_VAL);
+
+	return;
+}
+/*}}}*/
+void       Tria::ElementResponse(IssmDouble* presponse,int response_enum){/*{{{*/
+
+	switch(response_enum){
+		case MaterialsRheologyBbarEnum:
+			*presponse=this->material->GetBbar(NULL);
+			break;
+
+		case VelEnum:{
+
+			/*Get input:*/
+			IssmDouble vel;
+			Input* vel_input=this->GetInput(VelEnum); _assert_(vel_input);
+			vel_input->GetInputAverage(&vel);
+
+			/*Assign output pointers:*/
+			*presponse=vel;}
+			break;
+		default:
+			_error_("Response type " << EnumToStringx(response_enum) << " not supported yet!");
+	}
+
+}
+/*}}}*/
+void       Tria::ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz){/*{{{*/
+
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble xmin,ymin;
+	IssmDouble xmax,ymax;
+
+	/*Get xyz list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	xmin=xyz_list[0][0]; xmax=xyz_list[0][0];
+	ymin=xyz_list[0][1]; ymax=xyz_list[0][1];
+
+	for(int i=1;i<NUMVERTICES;i++){
+		if(xyz_list[i][0]<xmin) xmin=xyz_list[i][0];
+		if(xyz_list[i][0]>xmax) xmax=xyz_list[i][0];
+		if(xyz_list[i][1]<ymin) ymin=xyz_list[i][1];
+		if(xyz_list[i][1]>ymax) ymax=xyz_list[i][1];
+	}
+
+	*hx=xmax-xmin;
+	*hy=ymax-ymin;
+	*hz=0.;
+}
+/*}}}*/
+int        Tria::FiniteElement(void){/*{{{*/
+	return this->element_type;
+}
+/*}}}*/
+IssmDouble Tria::FloatingArea(bool scaled){/*{{{*/
+
+	/*Intermediaries*/
+	int         domaintype;
+	IssmDouble  phi,scalefactor,floatingarea;
+
+	if(!IsIceInElement())return 0.;
+
+	/*Get problem dimension*/
+	this->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype!=Domain2DhorizontalEnum && domaintype!=Domain3DEnum) _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	phi=this->GetGroundedPortion(&xyz_list[0][0]);
+	floatingarea=(1-phi)*this->GetArea();
+	if(scaled==true){
+		Input* scalefactor_input = this->GetInput(MeshScaleFactorEnum); _assert_(scalefactor_input);
+		scalefactor_input->GetInputAverage(&scalefactor);
+		floatingarea=floatingarea*scalefactor;
+	}
+
+	/*Clean up and return*/
+	return floatingarea;
+}
+/*}}}*/
+void       Tria::FSContactMigration(Vector<IssmDouble>* vertex_sigmann,Vector<IssmDouble>* vertex_waterpressure){/*{{{*/
+
+	if(!IsOnBase()) return;
+
+	int approximation;
+	this->Element::GetInputValue(&approximation,ApproximationEnum);
+
+	if(approximation==HOApproximationEnum || approximation==SSAApproximationEnum || approximation==SSAHOApproximationEnum){
+		_error_(" contact contiditon only works for FS elements");
+	}
+	/*Intermediaries*/
+	IssmDouble  bed_normal[2],base[NUMVERTICES],bed[NUMVERTICES],surface[NUMVERTICES],phi[NUMVERTICES];
+	IssmDouble  water_pressure[NUMVERTICES],pressureice[NUMVERTICES],pressure[NUMVERTICES];
+	IssmDouble  sigmaxx[NUMVERTICES],sigmayy[NUMVERTICES],sigmaxy[NUMVERTICES],sigma_nn[NUMVERTICES];
+	IssmDouble  viscosity,epsilon[NUMVERTICES];
+	Element::GetInputListOnVertices(&base[0],BaseEnum);
+	Element::GetInputListOnVertices(&bed[0],BedEnum);
+	Element::GetInputListOnVertices(&surface[0],SurfaceEnum);
+	Element::GetInputListOnVertices(&pressure[0],PressureEnum);
+	Element::GetInputListOnVertices(&phi[0],MaskOceanLevelsetEnum);
+	IssmDouble rho_ice   = FindParam(MaterialsRhoIceEnum);
+	IssmDouble rho_water = FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble gravity   = FindParam(ConstantsGEnum);
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs we will be needing: */
+	Input* vx_input       = this->GetInput(VxEnum);       _assert_(vx_input);
+	Input* vy_input       = this->GetInput(VyEnum);       _assert_(vy_input);
+
+	/*1. Recover stresses at the base*/
+	GaussTria gauss;
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/*Compute strain rate viscosity and pressure: */
+		this->StrainRateSSA(&epsilon[0],&xyz_list[0][0],&gauss,vx_input,vy_input);
+		this->material->ViscosityFS(&viscosity,2,&xyz_list[0][0],&gauss,vx_input,vy_input,NULL);
+		/*FIXME: this is for Hongju only*/
+		//	pressureice[iv]=gravity*rho_ice*(surface[iv]-base[iv]);
+		//	if (pressure[iv]/pressureice[iv]>1) pressure[iv]=pressureice[iv];
+
+		/*Compute Stress*/
+		sigmaxx[iv]=2*viscosity*epsilon[0]-pressure[iv];
+		sigmayy[iv]=2*viscosity*epsilon[1]-pressure[iv];
+		sigmaxy[iv]=2*viscosity*epsilon[2];
+	}
+
+	/*2. compute contact condition*/
+	for(int i=0;i<NUMVERTICES;i++){
+		/*If was grounded*/
+		if (phi[i]>=0.){
+			NormalBase(&bed_normal[0],&xyz_list[0][0]);
+			sigma_nn[i]=-1*(sigmaxx[i]*bed_normal[0]*bed_normal[0] + sigmayy[i]*bed_normal[1]*bed_normal[1]+2*sigmaxy[i]*bed_normal[0]*bed_normal[1]);
+			water_pressure[i]=-gravity*rho_water*base[i];
+			vertex_sigmann->SetValue(vertices[i]->Pid(),sigma_nn[i],ADD_VAL);
+			vertex_waterpressure->SetValue(vertices[i]->Pid(),water_pressure[i],ADD_VAL);
+		}
+		/*If was floating*/
+		else{
+			/*Tricky part:
+			 * 1. if base is now touching, we put 1 for sigma_nn and leave water pressure at 0 so that the rest of the module will reground this vertex
+			 * 2. if base is still above bed, water pressure is set as 1, sigma_nn is left as 0, so the GL module will keep it afloat*/
+			if(base[i]<bed[i]) vertex_sigmann->SetValue(vertices[i]->Pid(),+1.,ADD_VAL);
+			vertex_waterpressure->SetValue(vertices[i]->Pid(),+1.,ADD_VAL);
+		}
+	}
+}
+/*}}}*/
+IssmDouble Tria::GetArea(void){/*{{{*/
+
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble x1,y1,x2,y2,x3,y3;
+
+	/*Get xyz list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	x1=xyz_list[0][0]; y1=xyz_list[0][1];
+	x2=xyz_list[1][0]; y2=xyz_list[1][1];
+	x3=xyz_list[2][0]; y3=xyz_list[2][1];
+
+	_assert_(x2*y3 - y2*x3 + x1*y2 - y1*x2 + x3*y1 - y3*x1>0);
+	return (x2*y3 - y2*x3 + x1*y2 - y1*x2 + x3*y1 - y3*x1)/2;
+}
+/*}}}*/
+IssmDouble Tria::GetHorizontalSurfaceArea(void){/*{{{*/
+
+	return this->GetArea();
+}
+/*}}}*/
+IssmDouble Tria::GetArea3D(void){/*{{{*/
+
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble x1,y1,z1,x2,y2,z2,x3,y3,z3;
+	IssmDouble detm1,detm2,detm3;
+
+	/*Get xyz list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	x1=xyz_list[0][0]; y1=xyz_list[0][1]; z1=xyz_list[0][2];
+	x2=xyz_list[1][0]; y2=xyz_list[1][1]; z2=xyz_list[1][2];
+	x3=xyz_list[2][0]; y3=xyz_list[2][1]; z3=xyz_list[2][2];
+
+	detm1=x1*y2 - x2*y1 - x1*y3 + x3*y1 + x2*y3 - x3*y2;
+	detm2=y1*z2 - y2*z1 - y1*z3 + y3*z1 + y2*z3 - y3*z2;
+	detm3=x2*z1 - x1*z2 + x1*z3 - x3*z1 - x2*z3 + x3*z2;
+
+	return sqrt(pow(detm1,2) + pow(detm2,2) + pow(detm3,2))/2;
+}
+/*}}}*/
+IssmDouble Tria::GetAreaIce(void){/*{{{*/
+
+	/*return area of element covered by ice*/
+	/*Intermediaries*/
+	int numiceverts;
+	IssmDouble area_fraction;
+	IssmDouble s[2]; // s:fraction of intersected triangle edges that lie inside ice
+	int* indices=NULL;
+
+	this->GetLevelsetIntersection(&indices, &numiceverts, s, MaskIceLevelsetEnum, 0.);
+
+	switch (numiceverts){
+		case 0: // no vertex has ice: element is ice free
+			area_fraction=0.;
+			break;
+		case 1: // one vertex has ice: get area of triangle
+			area_fraction=s[0]*s[1];
+			break;
+		case 2: // two vertices have ice: get area of quadrangle
+			area_fraction=s[0]+s[1]-s[0]*s[1];
+			break;
+		case NUMVERTICES: // all vertices have ice: return triangle area
+			area_fraction=1.;
+			break;
+		default:
+			_error_("Wrong number of ice vertices in Tria::GetAreaIce!");
+			break;
+	}
+	_assert_((area_fraction>=0.) && (area_fraction<=1.));
+
+	xDelete<int>(indices);
+	return area_fraction*this->GetArea();
+}/*}}}*/
+IssmDouble Tria::GetAreaSpherical(void){/*{{{*/
+
+	bool spherical=true;
+	IssmDouble llr_list[NUMVERTICES][3];
+	IssmDouble x1,y1,z1,x2,y2,z2,x3,y3,z3;
+	IssmDouble arc12,arc23,arc31,semi_peri,excess;
+
+	/*retrieve coordinates: lat,long,radius */
+	::GetVerticesCoordinates(&llr_list[0][0],vertices,NUMVERTICES,spherical);
+	x1=llr_list[0][0]/180.*M_PI; y1=llr_list[0][1]/180.*M_PI; z1=llr_list[0][2];
+	x2=llr_list[1][0]/180.*M_PI; y2=llr_list[1][1]/180.*M_PI; z2=llr_list[1][2];
+	x3=llr_list[2][0]/180.*M_PI; y3=llr_list[2][1]/180.*M_PI; z3=llr_list[2][2];
+
+	/*compute great circle distance between vertices */
+	arc12=2.*asin(sqrt(pow(sin(0.5*(x2-x1)),2)+cos(x1)*cos(x2)*pow(sin(0.5*(y2-y1)),2)));
+	arc23=2.*asin(sqrt(pow(sin(0.5*(x3-x2)),2)+cos(x2)*cos(x3)*pow(sin(0.5*(y3-y2)),2)));
+	arc31=2.*asin(sqrt(pow(sin(0.5*(x1-x3)),2)+cos(x3)*cos(x1)*pow(sin(0.5*(y1-y3)),2)));
+
+	/*semi parameter */
+	semi_peri=(arc12+arc23+arc31)/2;
+
+	/*spherical excess */
+	excess=4.*atan(sqrt(tan(semi_peri/2)*tan((semi_peri-arc12)/2)*tan((semi_peri-arc23)/2)*tan((semi_peri-arc31)/2)));
+
+	/*area = excess*radius^2 */
+	return excess*pow((z1+z2+z3)/3,2);
+}
+/*}}}*/
+void       Tria::GetAreaCoordinates(IssmDouble* area_coordinates,IssmDouble* xyz_zero,IssmDouble* xyz_list,int numpoints){/*{{{*/
+	/*Computeportion of the element that is grounded*/
+
+	int         i,j,k;
+	IssmDouble  area_init,area_portion;
+	IssmDouble  xyz_bis[NUMVERTICES][3];
+
+	area_init=GetArea();
+
+	/*Initialize xyz_list with original xyz_list of triangle coordinates*/
+	for(j=0;j<3;j++){
+		for(k=0;k<3;k++){
+			xyz_bis[j][k]=xyz_list[j*3+k];
+		}
+	}
+	for(i=0;i<numpoints;i++){
+		for(j=0;j<3;j++){
+			for(k=0;k<3;k++){
+				/*Change appropriate line*/
+				xyz_bis[j][k]=xyz_zero[i*3+k];
+			}
+
+			/*Compute area fraction*/
+			area_portion=fabs(xyz_bis[1][0]*xyz_bis[2][1] - xyz_bis[1][1]*xyz_bis[2][0] + xyz_bis[0][0]*xyz_bis[1][1] - xyz_bis[0][1]*xyz_bis[1][0] + xyz_bis[2][0]*xyz_bis[0][1] - xyz_bis[2][1]*xyz_bis[0][0])/2.;
+			*(area_coordinates+3*i+j)=area_portion/area_init;
+
+			/*Reinitialize xyz_list*/
+			for(k=0;k<3;k++){
+				/*Reinitialize xyz_list with original coordinates*/
+				xyz_bis[j][k]=xyz_list[j*3+k];
+			}
+		}
+	}
+}
+/*}}}*/
+int        Tria::GetElementType(){/*{{{*/
+
+	/*return TriaRef field*/
+	return this->element_type;
+
+}
+/*}}}*/
+void       Tria::GetGroundedPart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* pmainlyfloating){/*{{{*/
+	/*Computeportion of the element that is grounded*/
+
+	bool               floating=true;
+	int                point;
+	const IssmPDouble  epsilon= 1.e-15;
+	IssmDouble         gl[NUMVERTICES];
+	IssmDouble         f1,f2;
+
+	/*Recover parameters and values*/
+	Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum);
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+	/*Check that not all nodes are grounded or floating*/
+	if(gl[0]>0 && gl[1]>0 && gl[2]>0){ // All grounded
+		point=0;
+		f1=1.;
+		f2=1.;
+	}
+	else if(gl[0]<0 && gl[1]<0 && gl[2]<0){ //All floating
+		point=0;
+		f1=0.;
+		f2=0.;
+	}
+	else{
+		if(gl[0]*gl[1]*gl[2]<0) floating=false;
+
+		if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+			point=2;
+			f1=gl[2]/(gl[2]-gl[0]);
+			f2=gl[2]/(gl[2]-gl[1]);
+		}
+		else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+			point=0;
+			f1=gl[0]/(gl[0]-gl[1]);
+			f2=gl[0]/(gl[0]-gl[2]);
+		}
+		else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+			point=1;
+			f1=gl[1]/(gl[1]-gl[2]);
+			f2=gl[1]/(gl[1]-gl[0]);
+		}
+		else _error_("case not possible");
+	}
+	*point1=point;
+	*fraction1=f1;
+	*fraction2=f2;
+	*pmainlyfloating=floating;
+}
+/*}}}*/
+IssmDouble Tria::GetGroundedPortion(IssmDouble* xyz_list){/*{{{*/
+	/*Computeportion of the element that is grounded*/
+
+	bool              mainlyfloating = true;
+	int               domaintype,index1,index2;
+	const IssmPDouble epsilon        = 1.e-15;
+	IssmDouble        phi,s1,s2;
+	IssmDouble        gl[NUMVERTICES];
+
+	/*Recover parameters and values*/
+	parameters->FindParam(&domaintype,DomainTypeEnum);
+	Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum);
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+	if(domaintype==Domain2DverticalEnum){
+		this->EdgeOnBaseIndices(&index1,&index2);
+		if(gl[index1]>0 && gl[index2]>0) phi=1; // All grounded
+		else if(gl[index1]<0 && gl[index2]<0) phi=0; // All floating
+		else if(gl[index1]<0 && gl[index2]>0){ //index2 grounded
+			phi=1./(1.-gl[index1]/gl[index2]);
+		}
+		else if(gl[index2]<0 && gl[index1]>0){ //index1 grounded
+			phi=1./(1.-gl[index2]/gl[index1]);
+		}
+
+	}
+	else if(domaintype==Domain2DhorizontalEnum || domaintype==Domain3DEnum || domaintype==Domain3DsurfaceEnum){
+		/*Check that not all nodes are grounded or floating*/
+		if(gl[0]>0 && gl[1]>0 && gl[2]>0){ // All grounded
+			phi=1;
+		}
+		else if(gl[0]<0 && gl[1]<0 && gl[2]<0){ //All floating
+			phi=0;
+		}
+		else{
+			/*Figure out if two nodes are floating or grounded*/
+			if(gl[0]*gl[1]*gl[2]>0) mainlyfloating=false;
+
+			if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+				s1=gl[2]/(gl[2]-gl[1]);
+				s2=gl[2]/(gl[2]-gl[0]);
+			}
+			else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+				s1=gl[0]/(gl[0]-gl[1]);
+				s2=gl[0]/(gl[0]-gl[2]);
+			}
+			else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+				s1=gl[1]/(gl[1]-gl[0]);
+				s2=gl[1]/(gl[1]-gl[2]);
+			}
+			else _error_("case not possible");
+			if(mainlyfloating){
+				phi = (1-s1*s2);
+			}
+			else{
+				phi = s1*s2;
+			}
+		}
+	}
+	else _error_("mesh type "<<EnumToStringx(domaintype)<<"not supported yet ");
+
+	_assert_(phi<=1. && phi>=0.);
+	return phi;
+}
+/*}}}*/
+void       Tria::GetFractionGeometry(IssmDouble* weights, IssmDouble* pphi, int* ppoint1,IssmDouble* pfraction1,IssmDouble* pfraction2, bool* ptrapezeisnegative, IssmDouble* gl){/*{{{*/
+
+	/*Computeportion of the element that is grounded*/
+	bool               trapezeisnegative=true; //default value
+	int                point;
+	const IssmPDouble  epsilon= 1.e-15;
+	IssmDouble         f1,f2,phi;
+
+	/*Weights: */
+	Gauss* gauss=NULL;
+	IssmDouble loadweights_g[NUMVERTICES];
+	IssmDouble total_weight=0;
+
+	_assert_(!xIsNan<IssmDouble>(gl[0]));
+	_assert_(!xIsNan<IssmDouble>(gl[1]));
+	_assert_(!xIsNan<IssmDouble>(gl[2]));
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+	/*Check that not all nodes are positive or negative: */
+	if(gl[0]>0 && gl[1]>0 && gl[2]>0){ // All positive
+		point=0;
+		f1=1.;
+		f2=1.;
+	}
+	else if(gl[0]<0 && gl[1]<0 && gl[2]<0){ //All negative
+		point=0;
+		f1=0.;
+		f2=0.;
+	}
+	else{
+		if(gl[0]*gl[1]*gl[2]<0) trapezeisnegative=false; //no matter what configuration, there has to be two positive vertices, which means the trapeze is positive.
+
+		if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+			point=2;
+			f1=gl[2]/(gl[2]-gl[0]);
+			f2=gl[2]/(gl[2]-gl[1]);
+		}
+		else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+			point=0;
+			f1=gl[0]/(gl[0]-gl[1]);
+			f2=gl[0]/(gl[0]-gl[2]);
+		}
+		else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+			point=1;
+			f1=gl[1]/(gl[1]-gl[2]);
+			f2=gl[1]/(gl[1]-gl[0]);
+		}
+		else _error_("case not possible");
+	}
+	if(trapezeisnegative) phi=1-f1*f2;
+	else phi=f1*f2;
+
+	/*Compute weights:*/
+	gauss = this->NewGauss(point,f1,f2,1-trapezeisnegative,2); //VV correction (16Nov2021)
+
+	total_weight=0;
+	for(int i=0;i<NUMVERTICES;i++)weights[i]=0;
+	while(gauss->next()){
+		TriaRef::GetNodalFunctions(&loadweights_g[0], gauss,P1Enum);
+		for(int i=0;i<NUMVERTICES;i++)weights[i]+=loadweights_g[i]*gauss->weight;
+		total_weight+=gauss->weight;
+	}
+	/*Normalizing to phi such that weights provide coefficients for integration over subelement (for averaging:phi*weights)*/  
+	if(total_weight>0.) for(int i=0;i<NUMVERTICES;i++)weights[i]/=total_weight/phi; 
+	else for(int i=0;i<NUMVERTICES;i++)weights[i]=0;
+
+	/*Free resources:*/
+	delete gauss;
+
+	/*Assign output pointers:*/
+	*pphi=phi;
+	*ppoint1=point;
+	*pfraction1=f1;
+	*pfraction2=f2;
+	*ptrapezeisnegative=trapezeisnegative;
+}
+/*}}}*/
+IssmDouble Tria::GetTriangleAreaSpherical(IssmDouble xyz_list[3][3]){/*{{{*/
+
+	IssmDouble x1,y1,z1,x2,y2,z2,x3,y3,z3;
+	IssmDouble arc12,arc23,arc31,semi_peri,excess;
+	IssmDouble lat1,lat2,lat3;
+	IssmDouble long1,long2,long3;
+	IssmDouble r1,r2,r3;
+
+	/*retrieve x,y,z coordinates: */
+	x1=xyz_list[0][0]; y1=xyz_list[0][1]; z1=xyz_list[0][2];
+	x2=xyz_list[1][0]; y2=xyz_list[1][1]; z2=xyz_list[1][2];
+	x3=xyz_list[2][0]; y3=xyz_list[2][1]; z3=xyz_list[2][2];
+
+	/*Build lat,long, r:*/
+	r1=sqrt(pow(x1,2.0)+pow(y1,2.0)+pow(z1,2.0));
+	r2=sqrt(pow(x2,2.0)+pow(y2,2.0)+pow(z2,2.0));
+	r3=sqrt(pow(x3,2.0)+pow(y3,2.0)+pow(z3,2.0));
+
+	lat1=asin(z1/r1); long1=atan2(y1,x1);
+	lat2=asin(z2/r2); long2=atan2(y2,x2);
+	lat3=asin(z3/r3); long3=atan2(y3,x3);
+
+	/*compute great circle distance between vertices */
+	arc12=2.*asin(sqrt(pow(sin(0.5*(lat2-lat1)),2)+cos(lat1)*cos(lat2)*pow(sin(0.5*(long2-long1)),2)));
+	arc23=2.*asin(sqrt(pow(sin(0.5*(lat3-lat2)),2)+cos(lat2)*cos(lat3)*pow(sin(0.5*(long3-long2)),2)));
+	arc31=2.*asin(sqrt(pow(sin(0.5*(lat1-lat3)),2)+cos(lat3)*cos(lat1)*pow(sin(0.5*(long1-long3)),2)));
+
+	/*semi parameter */
+	semi_peri=(arc12+arc23+arc31)/2;
+
+	/*spherical excess */
+	excess=4.*atan(sqrt(tan(semi_peri/2)*tan((semi_peri-arc12)/2)*tan((semi_peri-arc23)/2)*tan((semi_peri-arc31)/2)));
+
+	/*area = excess*radius^2 */
+	return excess*pow((r1+r2+r3)/3,2);
+}
+/*}}}*/
+void       Tria:: GetBarycenterFromLevelset(IssmDouble* platbar, IssmDouble* plongbar,IssmDouble phi,IssmDouble fraction1,IssmDouble fraction2,IssmDouble late, IssmDouble longe, int point1,int istrapeze1, IssmDouble planetradius){ /*{{{*/
+
+	int i0,i1,i2;
+
+	IssmDouble xyz0[3][3];
+	IssmDouble barycenter[3]={0};
+	IssmDouble centroid[3]={0};
+
+	::GetVerticesCoordinates(&xyz0[0][0],vertices,NUMVERTICES); // initial triangle
+
+	i0=point1;
+	i1=(point1+1)%3;
+	i2=(point1+2)%3;
+
+	//Barycenter of the subelement triangle:
+	for (int i=0;i<3;i++) barycenter[i]=xyz0[i0][i]*(3.0-fraction1-fraction2)/3.0 + fraction1/3.0*xyz0[i1][i] + fraction2/3.0*xyz0[i2][i];
+
+	if (istrapeze1){
+		centroid[0]=planetradius*cos(late*M_PI/180.0) * cos(longe*M_PI/180.0); //x
+		centroid[1]=planetradius*cos(late*M_PI/180.0) * sin(longe*M_PI/180.0);  //y
+		centroid[2]=planetradius*sin(late*M_PI/180.0);					//z
+
+		// centroid_el *area_el= barycenter_triangle * area_triangle + barycenter_trapeze * area_trapeze
+		// and phi_trapeze = area_trapeze/area_el = (1 - area_triangle/area_el)
+		// => barycenter_trapeze = (centroid_el - barycenter_triangle * (1-phi_trapeze) )/phi_trapeze
+		for (int i=0;i<3;i++) barycenter[i] =(centroid[i] -barycenter[i]*(1.0-phi))/phi;
+
+	}
+
+	//recompute planetradius from the barycenter onwards:
+	planetradius=sqrt( pow(barycenter[0],2.0)+ pow(barycenter[1],2.0)+ pow(barycenter[2],2.0));
+
+	*platbar=asin(barycenter[2]/planetradius)*180.0/M_PI;
+	*plongbar=atan2(barycenter[1],barycenter[0])*180.0/M_PI;
+
+} /*}}}*/
+void       Tria::GetNodalWeightsAndAreaAndCentroidsFromLeveset(IssmDouble* loadweights, IssmDouble* ploadarea, IssmDouble* platbar, IssmDouble* plongbar, IssmDouble late, IssmDouble longe, IssmDouble area,  int levelsetenum){ /*{{{*/
+
+	IssmDouble phi;
+	IssmDouble fraction1,fraction2;
+	bool istrapeze1;  
+	bool flip1=false;
+	int  point1;
+	IssmDouble levelset[NUMVERTICES];
+	IssmDouble planetradius;
+
+	this->parameters->FindParam(&planetradius,SolidearthPlanetRadiusEnum);
+
+	//figure out if we are flipping the levelsets: 
+	if(levelsetenum<0){
+		levelsetenum=-levelsetenum;
+		flip1=true;
+	}
+	//figure out area where we have loads
+	Element::GetInputListOnVertices(&levelset[0],levelsetenum);
+	if(flip1)for(int i=0;i<NUMVERTICES;i++)levelset[i]=-levelset[i];
+
+	//compute sea level load weights
+	this->GetFractionGeometry(loadweights,&phi,&point1,&fraction1,&fraction2,&istrapeze1,levelset);
+
+	//failsafe for phi so small that GetFractionGeometry returns 0	
+	if (phi==0) phi=1e-16;
+
+	for (int i=0;i<NUMVERTICES;i++) loadweights[i]/=phi;
+	this->GetBarycenterFromLevelset(platbar,plongbar, phi, fraction1, fraction2, late, longe, point1,istrapeze1,planetradius);
+
+	/*assign output pointers:*/
+	*ploadarea=phi*area;
+
+} /*}}}*/
+void       Tria::GetNodalWeightsAndAreaAndCentroidsFromLeveset(IssmDouble* loadweights, IssmDouble* ploadarea, IssmDouble* platbar, IssmDouble* plongbar, IssmDouble late, IssmDouble longe, IssmDouble area,  int levelset1enum, int levelset2enum){ /*{{{*/
+
+	bool istrapeze1, istrapeze2;
+	IssmDouble phi1,phi2, d,e,f,g,h1,h2;
+	int point1, point2,  i0,i1,i2,j0,j1,j2;
+	IssmDouble weights1[3],weights2[3];
+	IssmDouble levelset1[3];
+	IssmDouble levelset2[3];
+
+	bool flip1=false;
+	bool flip2=false;
+
+	IssmDouble xyz0[3][3];
+	IssmDouble xyz1[3][3]={0};
+	IssmDouble xyz2[3][3]={0};
+	IssmDouble xyz3[3][3]={0};
+	IssmDouble xyz[8][3]={0};
+	IssmDouble w[8][NUMVERTICES]={0};
+	IssmDouble areasub=0;
+	IssmDouble area1=0;
+	IssmDouble area2=0;
+	IssmDouble area3=0;
+
+	int tria0[3]={0,1,2};
+	int tria1[3]={-1};
+	int tria2[3]={-1};
+	int tria3[3]={-1};
+
+	IssmDouble w1[3][3]={0};
+	IssmDouble w2[3][3]={0};
+	IssmDouble w3[3][3]={0};
+
+	IssmDouble barycenter[3]={0};
+	IssmDouble planetradius;
+
+	//figure out if we are flipping the levelsets: 
+	if(levelset1enum<0){
+		levelset1enum=-levelset1enum;
+		flip1=true;
+	}
+	if(levelset2enum<0){
+		levelset2enum=-levelset2enum;
+		flip2=true;
+	}
+
+	//recover levelsets: 
+	Element::GetInputListOnVertices(&levelset1[0],levelset1enum);
+	if(flip1)for(int i=0;i<NUMVERTICES;i++)levelset1[i]=-levelset1[i];
+	Element::GetInputListOnVertices(&levelset2[0],levelset2enum);
+	if(flip2)for(int i=0;i<NUMVERTICES;i++)levelset2[i]=-levelset2[i];
+
+	//We want the fraction of the element where both levelsets are negative.
+	//Early return if either of them is >=0 on all vertices
+	if (levelset1[0]>=0 && levelset1[1]>=0 && levelset1[2]>=0) {
+		for (int i=0;i<NUMVERTICES;i++) loadweights[i]=0.0;
+		*ploadarea= 0.0;
+		*platbar=late; //just default to centroid of triangle
+		*plongbar=longe; 
+		return;
+	}
+	if (levelset2[0]>=0 && levelset2[1]>=0 && levelset2[2]>=0) {
+		for (int i=0;i<NUMVERTICES;i++) loadweights[i]=0.0;
+		*ploadarea= 0.0;
+		*platbar=late; //just default to centroid of triangle
+		*plongbar=longe; 
+		return;
+	}
+
+	//If everyone is negative, no need to calculate any fraction
+	if (levelset1[0]<=0 && levelset1[1]<=0 && levelset1[2]<=0 && levelset2[0]<=0 && levelset2[1]<=0 && levelset2[2]<=0) {
+		for (int i=0;i<NUMVERTICES;i++) loadweights[i]=1.0/NUMVERTICES;
+		*ploadarea= area;
+		*platbar=late;
+		*plongbar=longe;
+		return;
+	}
+
+	/*recover planet radius:*/
+	this->parameters->FindParam(&planetradius,SolidearthPlanetRadiusEnum);
+
+	//If just one levelset is all negative, just take the partitioning of the other, no interaction between them
+	if (levelset1[0]<=0 && levelset1[1]<=0 && levelset1[2]<=0) {
+		this->GetFractionGeometry(loadweights,&phi2,&point2,&f,&g,&istrapeze2,levelset2);
+		this->GetBarycenterFromLevelset(platbar,plongbar, phi2, f, g, late, longe, point2,istrapeze2,planetradius);
+		for (int i=0;i<NUMVERTICES;i++) loadweights[i]/=phi2;
+		*ploadarea=area*phi2;
+		return;
+	}
+	if (levelset2[0]<=0 && levelset2[1]<=0 && levelset2[2]<=0) {
+		this->GetFractionGeometry(loadweights,&phi1,&point1,&d,&e,&istrapeze1,levelset1);
+		this->GetBarycenterFromLevelset(platbar,plongbar, phi1, d, e, late, longe, point1,istrapeze1,planetradius);
+		for (int i=0;i<NUMVERTICES;i++) loadweights[i]/=phi1;
+		*ploadarea=area*phi1;
+		return;
+	}
+
+	this->GetFractionGeometry(&weights1[0],&phi1,&point1,&d,&e,&istrapeze1,levelset1);
+	this->GetFractionGeometry(&weights2[0],&phi2,&point2,&f,&g,&istrapeze2,levelset2);
+
+	//Early return if levelsets are not independent
+	if (istrapeze1==istrapeze2 && point1==point2 && phi1==phi2){
+		//the two levelsets are redundant: levelset1 = positivescalar * levelset2
+		this->GetBarycenterFromLevelset(platbar,plongbar, phi1, d, e, late, longe, point1,istrapeze1,planetradius);
+		*ploadarea=area*phi1;
+		for (int i=0;i<NUMVERTICES;i++) loadweights[i]=weights1[i]/phi1;
+		return;
+	}
+	if (istrapeze1!=istrapeze2 && point1==point2 && phi1==(1.0-phi2)){
+		//the two levelsets are incompatible: levelset1 = negativescalar * levelset2
+		*plongbar=longe;
+		*platbar=late;
+		*ploadarea=0.0;
+		for (int i=0;i<NUMVERTICES;i++) loadweights[i]=0.0;
+		return;
+	}
+
+	::GetVerticesCoordinates(&xyz0[0][0],vertices,NUMVERTICES); // initial triangle
+
+	//Let our element be triangle ABC with:
+	i0=point1; //A
+	i1=(point1+1)%3; //B
+	i2=(point1+2)%3; //C
+
+	j0=point2; //Can be A, B or C
+	j1=(point2+1)%3; //anticlockwise point from j0
+	j2=(point2+2)%3; //clockwise point from j0
+
+	/* Below we define the relative fractional lengths of ABC where the zero-level contours of the two level sets intersect with ABC and each other. For example D is the intersection of level set 1 with side AB with fractional length d=[AD]/[AB].
+
+	   levelset1 intersects ABC on D and E:
+	   A------D---B
+	   <--d--->		
+
+	   A-----E----C
+	   <--e-->
+
+	   levelset2 intersects ABC on F and G:
+	   j0---F------j1
+	   <--f->
+
+	   j0-------G--j2
+	   <---g---->
+
+	   levelset1 and 2 intersect on H (when that intersection exists inside the element)
+	   D----H------E
+	   <-h1->
+
+	   F-----H----G
+	   <--h2->
+	*/
+
+	if (point2==i0){
+		h1= g*(d-f)/(d*g-e*f);
+		h2= e/g * h1;
+	}
+        else if (point2==i1){
+		h1=f*(1.0-g-d)/(f*(e-d)-e*g);
+		h2= 1.0-e/f * h1;
+	}
+	else if (point2==i2){
+		h1= (g*(1.0-f-d)+f*d)/(g*(e-d) +f*d); 
+		h2= (d*(f+e-1))/(g*(e-d) +f*d);
+	}
+
+	//interpolant weights of each point. Any field F[0,1,2] provided at the original vertices [0,1,2] will be equal on point k to sum_i (F[i] * w[k][i])
+	w[i0][i0]=1; //A
+	w[i1][i1]=1; //B
+	w[i2][i2]=1; //C
+	w[3][i0]=1.0-d; w[3][i1]=d; //D
+	w[4][i0]=1.0-e; w[4][i2]=e; //E
+	w[5][j0]=1.0-f; w[5][j1]=f; //F
+	w[6][j0]=1.0-g; w[6][j2]=g; //G
+	for (int j=0;j<3;j++) w[7][j]=w[3][j]*(1.0-h1) + w[4][j]*h1; //H: we interpolate the intersection point H between D and E at fraction h1
+
+	for (int k=0;k<8;k++){
+		for (int i=0;i<NUMVERTICES;i++) {
+			for (int j=0;j<3;j++) xyz[k][j]+=xyz0[i][j]*w[k][i];
+		}
+	}
+
+		//point2 can be either i0,i1 or i2. We start the search with i1 and i2 as they have less computational cost in ifs
+		if(point2==i2){ /*{{{*/
+			if (e>1.0-f){ /*{{{*/
+				if (!istrapeze1 && !istrapeze2){
+					tria1[0]=5; tria1[1]= 7; tria1[2]= 4; // FHE
+					area1=h2*(e+f-1.0)*g;
+				}
+				else if (!istrapeze1 && istrapeze2){
+					tria1[0]=i0; tria1[1]= 3; tria1[2]= 5; //ADF
+					area1=d*(1.0-f);
+					tria2[0]=3; tria2[1]= 7; tria2[2]= 5; //DHF
+					area2=d*h1*(e+f-1.0);
+				}
+				else if (istrapeze1 && !istrapeze2){
+					tria1[0]=7; tria1[1]= 6; tria1[2]= 4; //HGE
+					area1=g*(1.0-h2)*(e+f-1.0);
+					tria2[0]=4; tria2[1]= 6; tria2[2]= i2; //EGC
+					area2=g*(1.0-e);
+				}
+				else { //istrapeze1 && istrapeze2
+					tria1[0]=3; tria1[1]= i1; tria1[2]= 6; //DBG
+					area1=(1.0-d)*(1.0-g);
+					tria2[0]=3; tria2[1]= 6; tria2[2]= 7; //DGH
+					area2=g*((1.0-f)*(1.0-h2)+h2*e)+d*(1.0-e-g);
+				}  /*}}}*/
+			}
+			else if (e<=1.0-f){ /*{{{*/
+				if (!istrapeze1 && !istrapeze2){
+				}
+				else if (!istrapeze1 && istrapeze2){
+					tria1[0]=i0; tria1[1]= 3; tria1[2]= 4; //ADE
+					area1=d*e;
+				}
+				else if (istrapeze1 && !istrapeze2){
+					tria1[0]=5; tria1[1]= 6; tria1[2]= i2; //FGC
+					area1=f*g;
+				}
+				else { //istrapeze1 && istrapeze2
+					tria1[0]=3; tria1[1]= i1; tria1[2]= 5; //DBF
+			                area1=(1.0-d)*(1.0-f);
+					tria2[0]=4; tria2[1]= 3; tria2[2]= 5;  //EDF
+			                area2=d*(1.0-e-f);
+					tria3[0]=5; tria3[1]= i1; tria3[2]= 6; //FBG
+			                area3=f*(1.0-g);
+				} /*}}}*/
+			} 
+		}/*}}}*/    
+		else if(point2==i1){ /*{{{*/
+			if (d>1.0-g){ /*{{{*/
+				if (!istrapeze1 && !istrapeze2){
+					tria1[0]=6; tria1[1]= 3; tria1[2]= 7; //GDH
+					area1=(1.0-h2)*(d+g-1.0)*f;
+				}
+				else if (!istrapeze1 && istrapeze2){
+					tria1[0]=i0; tria1[1]= 6; tria1[2]= 4; //AGE
+			                area1=(1.0-g)*e;
+					tria2[0]=6; tria2[1]= 7; tria2[2]= 4; //GHE
+			                area2=e*(1.0-h1)*(g+d-1.0);
+				}
+				else if (istrapeze1 && !istrapeze2){
+					tria1[0]=i1; tria1[1]= 5; tria1[2]= 3; //BFD
+			                area1=(1.0-d)*f;
+					tria2[0]=3; tria2[1]= 5; tria2[2]= 7; //DFH
+					area2=f*h2*(d+g-1.0);
+				}
+				else { //istrapeze1 && istrapeze2
+					tria1[0]=7; tria1[1]= 5; tria1[2]= 4; //HFE
+			                area1=e*((1.0-d)*(1.0-h1)+h1*g)+f*(1.0-g-e);
+					tria2[0]=4; tria2[1]= 5; tria2[2]= i2;//EFC
+			                area2=(1.0-e)*(1.0-f);
+				}  /*}}}*/
+			}
+			else if (d<=1.0-g){ /*{{{*/
+				if (!istrapeze1 && !istrapeze2){
+				}
+				else if (!istrapeze1 && istrapeze2){
+					tria1[0]=i0; tria1[1]= 3; tria1[2]= 4; //ADE
+			                area1=d*e;
+				}
+				else if (istrapeze1 && !istrapeze2){
+					tria1[0]=6; tria1[1]= i1; tria1[2]= 5; //GBF
+			                area1=f*g;
+				}
+				else { //istrapeze1 && istrapeze2
+					tria1[0]=3; tria1[1]= 6; tria1[2]= 4; //DGE
+					area1=e*(1.0-d-g);
+					tria2[0]=6; tria2[1]= i2; tria2[2]= 4; //GCE
+					area2=(1.0-g)*(1.0-e);
+					tria3[0]=6; tria3[1]= 5; tria3[2]= i2; //GFC
+					area3=g*(1.0-f);
+				} /*}}}*/
+			}
+
+		}/*}}}*/
+		else{ /*{{{*/
+			if (d<=f && e>=g){  /*{{{*/
+				if (!istrapeze1 && !istrapeze2){
+					tria1[0]=i0; tria1[1]= 3; tria1[2]= 7; //ADH
+			                area1=h1*d*e;
+					tria2[0]=i0; tria2[1]= 7; tria2[2]= 6; //AHG
+			                area2=(1.0-h2)*f*g;
+				}
+				else if (!istrapeze1 && istrapeze2){
+					tria1[0]=6; tria1[1]= 7; tria1[2]= 4; //GHE
+			                area1=(e-g)*d*(1.0-h1);
+				}
+				else if (istrapeze1 && !istrapeze2){
+					tria1[0]=3; tria1[1]= 5; tria1[2]= 7; //DFH
+					area1=(f-d)*g*h2;
+				}
+				else { //istrapeze1 && istrapeze2
+					tria1[0]=5; tria1[1]= i1; tria1[2]= 7; //FBH
+			                area1=g*h2*(1.0-f);
+					tria2[0]=7; tria2[1]= i1; tria2[2]= i2;//HBC
+			                area2=1.0+d*(h1-e*h1-1.0)+g*h2*(d-1.0);
+					tria3[0]=7; tria3[1]= i2; tria3[2]= 4; //HCE
+			                area3=d*(1.0-h1)*(1.0-e);
+				} /*}}}*/
+			}
+			else if (d>=f && e<=g){ /*{{{*/
+				if (!istrapeze1 && !istrapeze2){
+					tria1[0]=i0; tria1[1]= 5; tria1[2]= 7; //AFH
+			                area1=h2*f*g;
+					tria2[0]=i0; tria2[1]= 7; tria2[2]= 4; //AHE
+			                area2=(1.0-h1)*d*e;
+				}else if (!istrapeze1 && istrapeze2){
+					tria1[0]=5; tria1[1]= 3; tria1[2]= 7; //FDH
+			                area1=(d-f)*e*h1;
+				}else if (istrapeze1 && !istrapeze2){
+					tria1[0]=4; tria1[1]= 7; tria1[2]= 6; //EHG
+			                area1=(g-e)*f*(1.0-h2);
+				}else { //istrapeze1 && istrapeze2
+					tria1[0]=3; tria1[1]= i1; tria1[2]= 7; //DBH
+			                area1=e*h1*(1.0-d);
+					tria2[0]=7; tria2[1]= i1; tria2[2]= 6; //HCG
+			                area2=f*(1.0-h2)*(1.0-g);
+					tria3[0]=6; tria3[1]= i1; tria3[2]= i2; //HBC
+			                area3=1.0+f*(h2-g*h2-1.0)+e*h1*(f-1.0);
+				}  /*}}}*/
+			}
+			else if (d<=f && e<=g){ /*{{{*/
+				if (!istrapeze1 && !istrapeze2){
+					tria1[0]=i0; tria1[1]= 3; tria1[2]= 4;//ADE
+					area1=d*e;
+				}else if (!istrapeze1 && istrapeze2){
+				}else if (istrapeze1 && !istrapeze2){
+					tria1[0]=3; tria1[1]= 5; tria1[2]= 6; //DFG
+			                area1=g*(f-d);
+					tria2[0]=3; tria2[1]= 6; tria2[2]= 4; //DGE
+			                area2=d*(g-e);
+				}else { //istrapeze1 && istrapeze2
+					tria1[0]=5; tria1[1]= i2; tria1[2]= 6; //FCG
+			                area1=f*(1.0-g);
+					tria2[0]=5; tria2[1]= i1; tria2[2]= i2;//FBC
+			                area2=1.0-f;
+				}  /*}}}*/
+			}
+			else if (d>=f && e>=g){ /*{{{*/
+				if (!istrapeze1 && !istrapeze2){
+					tria1[0]=i0; tria1[1]= 5; tria1[2]= 6; //AFG
+			                area1=f*g;
+				}else if (!istrapeze1 && istrapeze2){
+					tria1[0]=5; tria1[1]= 4; tria1[2]= 6; //FEG
+			                area1=f*(e-g);
+					tria2[0]=5; tria2[1]= 3; tria2[2]= 4; //FDE
+			                area2=e*(d-f);
+				}else if (istrapeze1 && !istrapeze2){
+				}else { //istrapeze1 && istrapeze2
+					tria1[0]=3; tria1[1]= i1; tria1[2]= i2; //DBC
+			                area1=1.0-d;
+					tria2[0]=3; tria2[1]= i2; tria2[2]= 4;//DCE
+			                area2=d*(1.0-e);
+				}  /*}}}*/
+			} 
+		} /*}}}*/
+
+	if(tria1[0]>-1){ 
+		for (int i=0;i<NUMVERTICES;i++){
+			for (int j=0;j<3;j++) {
+				xyz1[i][j]=xyz[tria1[i]][j];
+				w1[i][j]=w[tria1[i]][j];
+			}
+		}
+		area1*=area; //dimensionalize the fractional area from [0:1] to [0:area]
+	}
+	if(tria2[0]>-1){ 
+		for (int i=0;i<NUMVERTICES;i++){
+			for (int j=0;j<3;j++) {
+				xyz2[i][j]=xyz[tria2[i]][j];
+				w2[i][j]=w[tria2[i]][j];
+			}
+		}
+		area2*=area;
+	}
+	if(tria3[0]>-1){ 
+		for (int i=0;i<NUMVERTICES;i++){
+			for (int j=0;j<3;j++) {
+				xyz3[i][j]=xyz[tria3[i]][j];
+				w3[i][j]=w[tria3[i]][j];
+			}
+		}
+		area3*=area;
+	}
+
+	areasub=area1+area2+area3;
+
+	if (areasub>0){
+		for (int j=0;j<3;j++){
+			for (int i=0;i<NUMVERTICES;i++) {
+				loadweights[j]+=w1[i][j]*area1 + w2[i][j]*area2 + w3[i][j]*area3;
+				barycenter[j]+=xyz1[i][j]*area1+xyz2[i][j]*area2+xyz3[i][j]*area3;
+			}
+			loadweights[j]/=areasub*3.0;
+			barycenter[j]/=areasub *3.0;
+		}
+		*platbar=asin(barycenter[2]/sqrt(pow(barycenter[0],2.0)+pow(barycenter[1],2.0)+pow(barycenter[2],2.0)))*180.0/M_PI;
+		*plongbar=atan2(barycenter[1],barycenter[0])*180.0/M_PI;
+	} 
+	else {
+		for(int j=0;j<3;j++)loadweights[j]=0.0;
+		*platbar=late;
+		*plongbar=longe;
+	}
+	*ploadarea=areasub;
+
+} /*}}}*/
+IssmDouble Tria::GetIcefrontArea(){/*{{{*/
+
+	IssmDouble  bed[NUMVERTICES];
+	IssmDouble	Haverage,frontarea;
+	IssmDouble  x1,y1,x2,y2,distance;
+	IssmDouble lsf[NUMVERTICES], Haux[NUMVERTICES], surfaces[NUMVERTICES], bases[NUMVERTICES];
+	int* indices=NULL;
+
+	/*Return if no ice front present*/
+	if(!IsZeroLevelset(MaskIceLevelsetEnum)) return 0;
+	//if(!this->IsIcefront()) return 0.;
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&bed[0],BedEnum);
+	Element::GetInputListOnVertices(&surfaces[0],SurfaceEnum);
+	Element::GetInputListOnVertices(&bases[0],BaseEnum);
+	Element::GetInputListOnVertices(&lsf[0],MaskIceLevelsetEnum);
+
+	/*Only continue if all 3 vertices are below sea level*/
+	for(int i=0;i<NUMVERTICES;i++) if(bed[i]>=0.) return 0.;
+
+	/*2. Find coordinates of where levelset crosses 0*/
+	int         numiceverts;
+	IssmDouble  s[2],x[2],y[2];
+	this->GetLevelsetIntersection(&indices, &numiceverts, &s[0],MaskIceLevelsetEnum,0.);
+	_assert_(numiceverts);
+	if(numiceverts>2){
+		Input* ls_input = this->GetInput(MaskIceLevelsetEnum);
+		ls_input->Echo();
+	}
+
+	/*3 Write coordinates*/
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],this->vertices,NUMVERTICES);
+	int counter = 0;
+	if((numiceverts>0) && (numiceverts<NUMVERTICES)){
+		for(int i=0;i<numiceverts;i++){
+			for(int n=numiceverts;n<NUMVERTICES;n++){ // iterate over no-ice vertices
+				x[counter] = xyz_list[indices[i]][0]+s[counter]*(xyz_list[indices[n]][0]-xyz_list[indices[i]][0]);
+				y[counter] = xyz_list[indices[i]][1]+s[counter]*(xyz_list[indices[n]][1]-xyz_list[indices[i]][1]);
+				counter++;
+			}
+		}
+	}
+	else if(numiceverts==NUMVERTICES){ //NUMVERTICES ice vertices: calving front lies on element edge
+
+		for(int i=0;i<NUMVERTICES;i++){
+			if(lsf[indices[i]]==0.){
+				x[counter]=xyz_list[indices[i]][0];
+				y[counter]=xyz_list[indices[i]][1];
+				counter++;
+			}
+			if(counter==2) break;
+		}
+		if(counter==1){
+			/*We actually have only 1 vertex on levelset, write a single point as a segment*/
+			x[counter]=x[0];
+			y[counter]=y[0];
+			counter++;
+		}
+	}
+	else{
+		_error_("not sure what's going on here...");
+	}
+	x1=x[0]; y1=y[0]; x2=x[1]; y2=y[1];
+	distance=sqrt(pow((x1-x2),2)+pow((y1-y2),2));
+	if(distance<1e-3) return 0.;
+
+	IssmDouble H[4];
+	for(int iv=0;iv<NUMVERTICES;iv++) Haux[iv]=-bed[indices[iv]]; //sort bed in ice/noice
+	xDelete<int>(indices);
+
+	switch(numiceverts){
+		case 1: // average over triangle
+			H[0]=Haux[0];
+			H[1]=Haux[0]+s[0]*(Haux[1]-Haux[0]);
+			H[2]=Haux[0]+s[1]*(Haux[2]-Haux[0]);
+			Haverage=(H[1]+H[2])/2;
+			break;
+		case 2: // average over quadrangle
+			H[0]=Haux[0];
+			H[1]=Haux[1];
+			H[2]=Haux[0]+s[0]*(Haux[2]-Haux[0]);
+			H[3]=Haux[1]+s[1]*(Haux[2]-Haux[1]);
+			Haverage=(H[2]+H[3])/2;
+			break;
+		case 3:
+			if(counter==1) distance = 0; //front has 0 width on this element because levelset is 0 at a single vertex
+			else if(counter==2){ //two vertices with levelset=0: averaging ice front depth over both
+				Haverage = 0;
+				for(int i=0;i<NUMVERTICES;i++){
+					if(lsf[indices[i]]==0.) Haverage -= Haux[indices[i]]/2;
+					if(Haverage<Haux[indices[i]]/2-1e-3) break; //done with the two vertices
+				}
+			}
+			break;
+		default:
+			_error_("Number of ice covered vertices wrong in Tria::GetIceFrontArea(void)");
+			break;
+	}
+	frontarea=distance*Haverage;
+
+	_assert_(frontarea>0);
+	return frontarea;
+}
+/*}}}*/
+void       Tria::GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){/*{{{*/
+
+	/* Intermediaries */
+	IssmDouble  levelset[NUMVERTICES];
+	int         indicesfront[NUMVERTICES];
+
+	/*Recover parameters and values*/
+	Element::GetInputListOnVertices(&levelset[0],levelsetenum);
+
+	/* Get nodes where there is no ice */
+	int num_frontnodes=0;
+	for(int i=0;i<NUMVERTICES;i++){
+		if(levelset[i]>=0.){
+			indicesfront[num_frontnodes]=i;
+			num_frontnodes++;
+		}
+	}
+	_assert_(num_frontnodes==2);
+
+	/* arrange order of frontnodes such that they are oriented counterclockwise */
+	if((NUMVERTICES+indicesfront[0]-indicesfront[1])%NUMVERTICES!=NUMVERTICES-1){
+		int index=indicesfront[0];
+		indicesfront[0]=indicesfront[1];
+		indicesfront[1]=index;
+	}
+
+	IssmDouble* xyz_front = xNew<IssmDouble>(3*2);
+	/* Return nodes */
+	for(int i=0;i<2;i++){
+		for(int j=0;j<3;j++){
+			xyz_front[3*i+j]=xyz_list[3*indicesfront[i]+j];
+		}
+	}
+
+	*pxyz_front=xyz_front;
+}/*}}}*/
+Input*    Tria::GetInput(int inputenum){/*{{{*/
+
+	/*Get Input from dataset*/
+	if(this->iscollapsed){
+		PentaInput* input = this->inputs->GetPentaInput(inputenum);
+		if(!input) return input;
+
+		this->InputServe(input);
+		return input;
+	}
+	else{
+		TriaInput* input = this->inputs->GetTriaInput(inputenum);
+		if(!input) return input;
+		this->InputServe(input);
+		return input;
+	}
+}/*}}}*/
+Input*    Tria::GetInput(int inputenum,IssmDouble time){/*{{{*/
+
+	/*Get Input from dataset*/
+	if(this->iscollapsed){
+		PentaInput* input = this->inputs->GetPentaInput(inputenum,time);
+		if(!input) return input;
+
+		this->InputServe(input);
+		return input;
+	}
+	else{
+		TriaInput* input = this->inputs->GetTriaInput(inputenum,time);
+		if(!input) return input;
+
+		this->InputServe(input);
+		return input;
+	}
+}/*}}}*/
+Input*    Tria::GetInput(int inputenum,IssmDouble start_time, IssmDouble end_time, int averaging_method){/*{{{*/
+
+	/*Get Input from dataset*/
+	if(this->iscollapsed){
+		PentaInput* input = this->inputs->GetPentaInput(inputenum,start_time,end_time,averaging_method);
+		if(!input) return input;
+
+		this->InputServe(input);
+		return input;
+	}
+	else{
+		TriaInput* input = this->inputs->GetTriaInput(inputenum,start_time,end_time,averaging_method);
+		if(!input) return input;
+
+		this->InputServe(input);
+		return input;
+	}
+}/*}}}*/
+void       Tria::GetInputListOnVertices(IssmDouble* pvalue,Input* input,IssmDouble default_value){/*{{{*/
+
+	/*Checks in debugging mode*/
+	_assert_(pvalue);
+
+	/* Start looping on the number of vertices: */
+	if(input){
+		GaussTria gauss;
+		for(int iv=0;iv<NUMVERTICES;iv++){
+			gauss.GaussVertex(iv);
+			input->GetInputValue(&pvalue[iv],&gauss);
+		}
+	}
+	else{
+		for(int iv=0;iv<NUMVERTICES;iv++) pvalue[iv] = default_value;
+	}
+}
+/*}}}*/
+void       Tria::GetInputListOnNodes(IssmDouble* pvalue,Input* input,IssmDouble default_value){/*{{{*/
+
+	/*Checks in debugging mode*/
+	_assert_(pvalue);
+
+	/*What type of finite element are we dealing with?*/
+	int fe       = this->FiniteElement();
+	int numnodes = this->GetNumberOfNodes();
+
+	/* Start looping on the number of vertices: */
+	if(input){
+		GaussTria gauss;
+		for(int iv=0;iv<numnodes;iv++){
+			gauss.GaussNode(fe,iv);
+			input->GetInputValue(&pvalue[iv],&gauss);
+		}
+	}
+	else{
+		for(int iv=0;iv<numnodes;iv++) pvalue[iv] = default_value;
+	}
+}
+/*}}}*/
+void       Tria::InputServe(Input* input_in){/*{{{*/
+
+	/*Return NULL pointer if input is NULL*/
+	if(!input_in) return;
+
+	/*Get Input from dataset*/
+	if(this->iscollapsed){
+		_assert_(input_in->ObjectEnum()==PentaInputEnum);
+		PentaInput* input = xDynamicCast<PentaInput*>(input_in);
+
+		/*Intermediaries*/
+		int numindices;
+		int indices[3];
+
+		/*Check interpolation*/
+		int interpolation = input->GetInterpolation();
+		switch(interpolation){
+			case P0Enum:
+				numindices = 1;
+				indices[0] = this->lid;
+				input->Serve(numindices,&indices[0]);
+				break;
+			case P1Enum:
+				numindices = 3;
+				for(int i=0;i<3;i++) indices[i] = vertices[i]->lid;
+				input->Serve(numindices,&indices[0]);
+				break;
+			case P1xP2Enum:
+			case P1xP3Enum:
+			case P1xP4Enum:
+			case P1DGEnum:
+			case P1bubbleEnum:
+				input->ServeCollapsed(this->lid,this->iscollapsed);
+				break;
+			default: _error_("interpolation "<<EnumToStringx(interpolation)<<" not supported");
+		}
+
+		/*Flag as collapsed for later use*/
+		input->SetServeCollapsed(true);
+		return;
+	}
+	else{
+		_assert_(input_in->ObjectEnum()==TriaInputEnum);
+		TriaInput* input = xDynamicCast<TriaInput*>(input_in);
+
+		/*Intermediaries*/
+		int numindices;
+		int indices[7];
+
+		/*Check interpolation*/
+		int interpolation = input->GetInterpolation();
+		switch(interpolation){
+			case P0Enum:
+				numindices = 1;
+				indices[0] = this->lid;
+				input->Serve(numindices,&indices[0]);
+				break;
+			case P1Enum:
+				numindices = 3;
+				for(int i=0;i<3;i++) indices[i] = vertices[i]->lid;
+				input->Serve(numindices,&indices[0]);
+				break;
+			case P1DGEnum:
+				numindices = 3;
+				input->Serve(this->lid,numindices);
+				break;
+			default:
+				input->Serve(this->lid,this->GetNumberOfNodes(interpolation));
+				break;
+		}
+		return;
+	}
+}/*}}}*/
+DatasetInput* Tria::GetDatasetInput(int inputenum){/*{{{*/
+
+	DatasetInput* datasetinput = this->inputs->GetDatasetInput(inputenum);
+	if(!datasetinput) return NULL;
+
+	for(int i=0;i<datasetinput->GetNumIds();i++){
+
+		/*Get Input from dataset*/
+		if(this->iscollapsed){
+
+			PentaInput* input = datasetinput->GetPentaInputByOffset(i); _assert_(input);
+
+			/*Intermediaries*/
+			int numindices;
+			int indices[3];
+
+			/*Check interpolation*/
+			int interpolation = input->GetInterpolation();
+			switch(interpolation){
+				case P0Enum:
+					numindices = 1;
+					indices[0] = this->lid;
+					input->Serve(numindices,&indices[0]);
+					break;
+				case P1Enum:
+					numindices = 3;
+					for(int i=0;i<3;i++) indices[i] = vertices[i]->lid;
+					input->Serve(numindices,&indices[0]);
+					break;
+				case P1DGEnum:
+				case P1bubbleEnum:
+					input->ServeCollapsed(this->lid,this->iscollapsed);
+					break;
+				default: _error_("interpolation "<<EnumToStringx(interpolation)<<" not supported");
+			}
+
+			/*Flag as collapsed for later use*/
+			input->SetServeCollapsed(true);
+		}
+		else{
+
+			TriaInput* input = datasetinput->GetTriaInputByOffset(i); _assert_(input);
+
+			/*Intermediaries*/
+			int numindices;
+			int indices[7];
+
+			/*Check interpolation*/
+			int interpolation = input->GetInterpolation();
+			switch(interpolation){
+				case P0Enum:
+					numindices = 1;
+					indices[0] = this->lid;
+					input->Serve(numindices,&indices[0]);
+					break;
+				case P1Enum:
+					numindices = 3;
+					for(int i=0;i<3;i++) indices[i] = vertices[i]->lid;
+					input->Serve(numindices,&indices[0]);
+					break;
+				case P1DGEnum:
+					numindices = 3;
+					input->Serve(this->lid,numindices);
+					break;
+				default: _error_("interpolation "<<EnumToStringx(interpolation)<<" not supported");
+			}
+
+		}
+	}
+
+	return datasetinput;
+}/*}}}*/
+void       Tria::CreateInputTimeAverage(int transientinput_enum,int averagedinput_enum,IssmDouble start_time,IssmDouble end_time, int averaging_method){/*{{{*/
+
+	_assert_(end_time>start_time);
+
+	/*Get transient input time steps*/
+	TransientInput* transient_input  = this->inputs->GetTransientInput(transientinput_enum);
+	TriaInput* averaged_input = transient_input->GetTriaInput(start_time,end_time,averaging_method);
+	Input* averaged_copy = averaged_input->copy();
+
+	averaged_copy->ChangeEnum(averagedinput_enum);
+	this->inputs->AddInput(averaged_copy);
+}
+/*}}}*/
+void       Tria::GetInputAveragesUpToCurrentTime(int input_enum,IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){/*{{{*/
+
+	/*Get transient input time steps*/
+	int         numtimesteps;
+	IssmDouble *timesteps    = NULL;
+	TransientInput* transient_input  = this->inputs->GetTransientInput(input_enum);
+
+	transient_input->GetAllTimes(&timesteps,&numtimesteps);
+
+	/*Figure out how many time steps we are going to return: */
+	int  numsteps               = 0;
+	bool iscurrenttime_included = false;
+	for(int i=0;i<numtimesteps;i++){
+		if(timesteps[i]==currenttime) iscurrenttime_included=true;
+		if(timesteps[i]>currenttime)  break;
+		else numsteps++;
+	}
+	if(iscurrenttime_included==false)numsteps++;
+
+	/*allocate: */
+	IssmDouble* times=xNew<IssmDouble>(numsteps);
+	IssmDouble* values=xNew<IssmDouble>(numsteps);
+
+	for(int i=0;i<numsteps;i++){
+		if((iscurrenttime_included==false) && (i==(numsteps-1))){
+			Input* input = this->GetInput(input_enum,currenttime);
+			input->GetInputAverage(&values[i]);
+			times[i]=currenttime;
+		}
+		else{
+			TriaInput* input = transient_input->GetTriaInput(i);
+			this->InputServe(input);
+			input->GetInputAverage(&values[i]);
+			times[i]=timesteps[i];
+		}
+	}
+
+	/*Assign output pointers*/
+	xDelete<IssmDouble>(timesteps);
+	*pvalues=values;
+	*ptimes=times;
+	*pnumtimes=numtimesteps;
+}
+/*}}}*/
+void       Tria::GetInputValue(IssmDouble* pvalue,Node* node,int enumtype){/*{{{*/
+
+	Input* input=this->GetInput(enumtype);
+	if(!input) _error_("No input of type " << EnumToStringx(enumtype) << " found in tria");
+
+	int index = this->GetNodeIndex(node);
+
+	GaussTria gauss;
+	gauss.GaussNode(this->element_type,index);
+	input->GetInputValue(pvalue,&gauss);
+}
+/*}}}*/
+void       Tria::GetInputValue(IssmDouble* pvalue,Vertex* vertex,int enumtype){/*{{{*/
+
+	Input* input=this->GetInput(enumtype);
+	if(!input) _error_("No input of type " << EnumToStringx(enumtype) << " found in tria");
+
+	int index = this->GetVertexIndex(vertex);
+
+	GaussTria gauss;
+	gauss.GaussVertex(index);
+	input->GetInputValue(pvalue,&gauss);
+}
+/*}}}*/
+void       Tria::GetLevelCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum,IssmDouble level){/*{{{*/
+
+	/* Intermediaries */
+	int i, dir,nrfrontnodes;
+	IssmDouble  levelset[NUMVERTICES];
+	int indicesfront[NUMVERTICES];
+
+	/*Recover parameters and values*/
+	Element::GetInputListOnVertices(&levelset[0],levelsetenum);
+
+	/* Get nodes where there is no ice */
+	nrfrontnodes=0;
+	for(i=0;i<NUMVERTICES;i++){
+		if(levelset[i]==level){
+			indicesfront[nrfrontnodes]=i;
+			nrfrontnodes++;
+		}
+	}
+
+	_assert_(nrfrontnodes==2);
+
+	/* arrange order of frontnodes such that they are oriented counterclockwise */
+	if((NUMVERTICES+indicesfront[0]-indicesfront[1])%NUMVERTICES!=NUMVERTICES-1){
+		int index=indicesfront[0];
+		indicesfront[0]=indicesfront[1];
+		indicesfront[1]=index;
+	}
+
+	IssmDouble* xyz_front = xNew<IssmDouble>(3*nrfrontnodes);
+	/* Return nodes */
+	for(i=0;i<nrfrontnodes;i++){
+		for(dir=0;dir<3;dir++){
+			xyz_front[3*i+dir]=xyz_list[3*indicesfront[i]+dir];
+		}
+	}
+
+	*pxyz_front=xyz_front;
+
+}/*}}}*/
+void       Tria::GetLevelsetIntersection(int** pindices, int* pnumiceverts, IssmDouble* fraction, int levelset_enum, IssmDouble level){/*{{{*/
+
+	/* GetLevelsetIntersection computes:
+	 * 1. indices of element, sorted in [iceverts, noiceverts] in counterclockwise fashion,
+	 * 2. fraction of intersected triangle edges intersected by levelset, lying below level*/
+
+	/*Intermediaries*/
+	int numiceverts, numnoiceverts;
+	int ind0, ind1, lastindex;
+	int indices_ice[NUMVERTICES],indices_noice[NUMVERTICES];
+	IssmDouble lsf[NUMVERTICES];
+	int* indices = xNew<int>(NUMVERTICES);
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&lsf[0],levelset_enum);
+
+	/* Determine distribution of ice over element.
+	 * Exploit: ice/no-ice parts are connected, so find starting vertex of segment*/
+	lastindex=0;
+	for(int i=0;i<NUMVERTICES;i++){ // go backwards along vertices, and check for sign change
+		ind0=(NUMVERTICES-i)%NUMVERTICES;
+		ind1=(ind0-1+NUMVERTICES)%NUMVERTICES;
+		if((lsf[ind0]-level)*(lsf[ind1]-level)<=0.){ // levelset has been crossed, find last index belonging to segment
+			if(lsf[ind1]==level) //if levelset intersects 2nd vertex, choose this vertex as last
+				lastindex=ind1;
+			else
+				lastindex=ind0;
+			break;
+		}
+	}
+
+	numiceverts=0;
+	numnoiceverts=0;
+	for(int i=0;i<NUMVERTICES;i++){
+		ind0=(lastindex+i)%NUMVERTICES;
+		if(lsf[i]<=level){
+			indices_ice[numiceverts]=i;
+			numiceverts++;
+		}
+		else{
+			indices_noice[numnoiceverts]=i;
+			numnoiceverts++;
+		}
+	}
+	//merge indices
+	for(int i=0;i<numiceverts;  i++){
+		indices[i]=indices_ice[i];
+	}
+	for(int i=0;i<numnoiceverts;i++){
+		indices[numiceverts+i]=indices_noice[i];
+	}
+
+	switch(numiceverts){
+		case 0: // no vertex has ice: element is ice free, no intersection
+			for(int i=0;i<2;i++)
+				fraction[i]=0.;
+			break;
+		case 1: // one vertex has ice:
+			for(int i=0;i<2;i++){
+				fraction[i]=(level-lsf[indices[0]])/(lsf[indices[numiceverts+i]]-lsf[indices[0]]);
+			}
+			break;
+		case 2: // two vertices have ice: fraction is computed from first ice vertex to last in CCW fashion
+			for(int i=0;i<2;i++){
+				fraction[i]=(level-lsf[indices[i]])/(lsf[indices[numiceverts]]-lsf[indices[i]]);
+			}
+			break;
+		case NUMVERTICES: // all vertices have ice: return triangle area
+			for(int i=0;i<2;i++)
+				fraction[i]=1.;
+			break;
+		default:
+			_error_("Wrong number of ice vertices in Tria::GetLevelsetIntersection!");
+			break;
+	}
+
+	*pindices=indices;
+	*pnumiceverts=numiceverts;
+}
+/*}}}*/
+void       Tria::GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* gl){/*{{{*/
+
+	/*Computeportion of the element that has a positive levelset*/
+
+	bool               negative=true;
+	int                point=0;
+	const IssmPDouble  epsilon= 1.e-15;
+	IssmDouble         f1,f2;
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+	/*Check that not all nodes are positive or negative*/
+	if(gl[0]>0 && gl[1]>0 && gl[2]>0){ // All positive
+		point=0;
+		f1=1.;
+		f2=1.;
+	}
+	else if(gl[0]<0 && gl[1]<0 && gl[2]<0){ //All negative
+		point=0;
+		f1=0.;
+		f2=0.;
+	}
+	else{
+		if(gl[0]*gl[1]*gl[2]<0) negative=false;
+
+		if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+			point=2;
+			f1=gl[2]/(gl[2]-gl[0]);
+			f2=gl[2]/(gl[2]-gl[1]);
+		}
+		else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+			point=0;
+			f1=gl[0]/(gl[0]-gl[1]);
+			f2=gl[0]/(gl[0]-gl[2]);
+		}
+		else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+			point=1;
+			f1=gl[1]/(gl[1]-gl[2]);
+			f2=gl[1]/(gl[1]-gl[0]);
+		}
+		else{
+			_error_("This case should NOT be happening");
+		}
+	}
+	*point1=point;
+	*fraction1=f1;
+	*fraction2=f2;
+	*mainlynegative=negative;
+}
+/*}}}*/
+int        Tria::GetVertexIndex(Vertex* vertex){/*{{{*/
+	_assert_(vertices);
+	for(int i=0;i<NUMVERTICES;i++){
+		if(vertex==vertices[i])
+		 return i;
+	}
+	_error_("Vertex provided not found among element vertices");
+}
+/*}}}*/
+int        Tria::GetNumberOfNodes(void){/*{{{*/
+	if (this->nodes) return this->NumberofNodes(this->element_type);
+	else return 0;
+}
+/*}}}*/
+int        Tria::GetNumberOfNodes(int enum_type){/*{{{*/
+	return this->NumberofNodes(enum_type);
+}
+/*}}}*/
+int        Tria::GetNumberOfVertices(void){/*{{{*/
+	return NUMVERTICES;
+}
+/*}}}*/
+void       Tria::GetVectorFromControlInputs(Vector<IssmDouble>* vector,int control_enum,int control_index,int N,const char* data,int offset){/*{{{*/
+
+	/*Get list of ids for this element and this control*/
+	int* idlist = xNew<int>(NUMVERTICES*N);
+	int  lidlist[NUMVERTICES];
+	this->GradientIndexing(&idlist[0],control_index);
+	this->GetVerticesLidList(&lidlist[0]);
+
+	/*Get Control*/
+	ControlInput* control_input=this->inputs->GetControlInput(control_enum); _assert_(control_input);
+
+	/*Get values on vertices*/
+	if(control_input->layout_enum==TriaInputEnum){
+		_assert_(N==1);
+		TriaInput* input = xDynamicCast<TriaInput*>(control_input->GetInput(data)); _assert_(input);
+
+		if(input->GetInputInterpolationType()==P1Enum){
+			IssmDouble values[NUMVERTICES];
+			input->Serve(NUMVERTICES,&lidlist[0]);
+			for(int i=0;i<NUMVERTICES;i++) values[i] = input->element_values[i];
+			vector->SetValues(NUMVERTICES,idlist,values,INS_VAL);
+		}
+		else if(input->GetInputInterpolationType()==P0Enum){
+			input->Serve(1,&this->lid);
+			vector->SetValue(idlist[0],input->element_values[0],INS_VAL);
+		}
+		else{
+			_error_("not supported yet");
+		}
+	}
+	else if(control_input->layout_enum==TransientInputEnum){
+		TransientInput* input = control_input->GetTransientInput(data); _assert_(input);
+		_assert_(N==input->numtimesteps);
+		IssmDouble* values = xNew<IssmDouble>(NUMVERTICES*N);
+
+		int count = 0;
+		for(int n=0;n<N;n++){
+			TriaInput* input_n = input->GetTriaInput(n); _assert_(input_n);
+			if(input_n->GetInputInterpolationType()==P1Enum){
+				input_n->Serve(NUMVERTICES,&lidlist[0]);
+				for(int i=0;i<NUMVERTICES;i++) values[count+i] = input_n->element_values[i];
+				count=count+NUMVERTICES;
+			}
+			else if(input_n->GetInputInterpolationType()==P0Enum){
+				input_n->Serve(1,&this->lid);
+				values[n] = input_n->element_values[0];
+				count++;
+			}
+			else{
+				_error_("not implemented yet");
+			}
+		}
+		vector->SetValues(count,idlist,values,INS_VAL);
+		xDelete<IssmDouble>(values);
+	}
+	else _error_("Type not supported");
+
+	/*Clean up*/
+	xDelete<int>(idlist);
+}
+/*}}}*/
+void       Tria::GetVerticesCoordinatesBase(IssmDouble** pxyz_list){/*{{{*/
+
+	int        indices[2];
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Element XYZ list*/
+	::GetVerticesCoordinates(&xyz_list[0][0],this->vertices,NUMVERTICES);
+
+	/*Allocate Output*/
+	IssmDouble* xyz_list_edge = xNew<IssmDouble>(2*3);
+	this->EdgeOnBaseIndices(&indices[0],&indices[1]);
+	for(int i=0;i<2;i++) for(int j=0;j<2;j++) xyz_list_edge[i*3+j]=xyz_list[indices[i]][j];
+
+	/*Assign output pointer*/
+	*pxyz_list = xyz_list_edge;
+
+}/*}}}*/
+void       Tria::GetVerticesCoordinatesTop(IssmDouble** pxyz_list){/*{{{*/
+
+	int        indices[2];
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Element XYZ list*/
+	::GetVerticesCoordinates(&xyz_list[0][0],this->vertices,NUMVERTICES);
+
+	/*Allocate Output*/
+	IssmDouble* xyz_list_edge = xNew<IssmDouble>(2*3);
+	this->EdgeOnSurfaceIndices(&indices[0],&indices[1]);
+	for(int i=0;i<2;i++) for(int j=0;j<2;j++) xyz_list_edge[i*3+j]=xyz_list[indices[i]][j];
+
+	/*Assign output pointer*/
+	*pxyz_list = xyz_list_edge;
+
+}/*}}}*/
+IssmDouble Tria::GroundedArea(bool scaled){/*{{{*/
+
+	/*Intermediaries*/
+	int         domaintype;
+	IssmDouble  phi,scalefactor,groundedarea;
+
+	if(!IsIceInElement())return 0.;
+
+	/*Get problem dimension*/
+	this->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype!=Domain2DhorizontalEnum && domaintype!=Domain3DEnum) _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	phi=this->GetGroundedPortion(&xyz_list[0][0]);
+	groundedarea=phi*this->GetArea();
+	if(scaled==true){
+		Input* scalefactor_input = this->GetInput(MeshScaleFactorEnum); _assert_(scalefactor_input);
+		scalefactor_input->GetInputAverage(&scalefactor);
+		groundedarea=groundedarea*scalefactor;
+	}
+
+	/*Clean up and return*/
+	return groundedarea;
+}
+/*}}}*/
+bool       Tria::HasEdgeOnBase(){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	IssmDouble sum;
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&values[0],MeshVertexonbaseEnum);
+	sum = values[0]+values[1]+values[2];
+
+	_assert_(sum==0. || sum==1. || sum==2.);
+
+	if(sum==3.)  _error_("Two edges on bed not supported yet...");
+
+	if(sum>1.){
+		return true;
+	}
+	else{
+		return false;
+	}
+}
+/*}}}*/
+bool       Tria::HasEdgeOnSurface(){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	IssmDouble sum;
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&values[0],MeshVertexonsurfaceEnum);
+	sum = values[0]+values[1]+values[2];
+
+	_assert_(sum==0. || sum==1. || sum==2.);
+
+	if(sum==3.)  _error_("Two edges on surface not supported yet...");
+
+	if(sum>1.){
+		return true;
+	}
+	else{
+		return false;
+	}
+}
+/*}}}*/
+IssmDouble Tria::IcefrontMassFlux(bool scaled){/*{{{*/
+
+	/*Make sure there is an ice front here*/
+	if(!IsIceInElement() || !IsIcefront()) return 0;
+
+	/*Scaled not implemented yet...*/
+	_assert_(!scaled);
+
+	/*Get domain type*/
+	int domaintype;
+	parameters->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Get ice front coordinates*/
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	IssmDouble* xyz_front = NULL;
+	this->GetIcefrontCoordinates(&xyz_front,&xyz_list[0][0],MaskIceLevelsetEnum);
+
+	/*Get normal vector*/
+	IssmDouble normal[3];
+	this->NormalSection(&normal[0],xyz_front);
+	//normal[0] = -normal[0];
+	//normal[1] = -normal[1];
+
+	/*Get inputs*/
+	IssmDouble flux = 0.;
+	IssmDouble vx,vy,thickness,Jdet;
+	IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
+	Input* thickness_input=this->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* vx_input=NULL;
+	Input* vy_input=NULL;
+	if(domaintype==Domain2DhorizontalEnum){
+		vx_input=this->GetInput(VxEnum); _assert_(vx_input);
+		vy_input=this->GetInput(VyEnum); _assert_(vy_input);
+	}
+	else{
+		vx_input=this->GetInput(VxAverageEnum); _assert_(vx_input);
+		vy_input=this->GetInput(VyAverageEnum); _assert_(vy_input);
+	}
+
+	/*Start looping on Gaussian points*/
+	Gauss* gauss=this->NewGauss(&xyz_list[0][0],xyz_front,3);
+	while(gauss->next()){
+		thickness_input->GetInputValue(&thickness,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		this->JacobianDeterminantSurface(&Jdet,xyz_front,gauss);
+
+		flux += rho_ice*Jdet*gauss->weight*thickness*(vx*normal[0] + vy*normal[1]);
+	}
+
+	/*Cleanup and return*/
+	xDelete<IssmDouble>(xyz_front);
+	delete gauss;
+	return flux;
+}
+/*}}}*/
+IssmDouble Tria::IcefrontMassFluxLevelset(bool scaled){/*{{{*/
+
+	/*Make sure there is an ice front here*/
+	if(!IsIceInElement() || !IsZeroLevelset(MaskIceLevelsetEnum)) return 0;
+
+	/*Scaled not implemented yet...*/
+	_assert_(!scaled);
+
+	int               domaintype,index1,index2;
+	const IssmPDouble epsilon = 1.e-15;
+	IssmDouble        s1,s2;
+	IssmDouble        gl[NUMVERTICES];
+	IssmDouble        xyz_front[2][3];
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Recover parameters and values*/
+	parameters->FindParam(&domaintype,DomainTypeEnum);
+	Element::GetInputListOnVertices(&gl[0],MaskIceLevelsetEnum);
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+	if(domaintype==Domain2DverticalEnum){
+		_error_("not implemented");
+	}
+	else if(domaintype==Domain2DhorizontalEnum || domaintype==Domain3DEnum || domaintype==Domain3DsurfaceEnum){
+		int pt1 = 0;
+		int pt2 = 1;
+		if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+
+			/*Portion of the segments*/
+			s1=gl[2]/(gl[2]-gl[1]);
+			s2=gl[2]/(gl[2]-gl[0]);
+			if(gl[2]<0.){
+				pt1 = 1; pt2 = 0;
+			}
+			xyz_front[pt2][0]=xyz_list[2][0]+s1*(xyz_list[1][0]-xyz_list[2][0]);
+			xyz_front[pt2][1]=xyz_list[2][1]+s1*(xyz_list[1][1]-xyz_list[2][1]);
+			xyz_front[pt2][2]=xyz_list[2][2]+s1*(xyz_list[1][2]-xyz_list[2][2]);
+			xyz_front[pt1][0]=xyz_list[2][0]+s2*(xyz_list[0][0]-xyz_list[2][0]);
+			xyz_front[pt1][1]=xyz_list[2][1]+s2*(xyz_list[0][1]-xyz_list[2][1]);
+			xyz_front[pt1][2]=xyz_list[2][2]+s2*(xyz_list[0][2]-xyz_list[2][2]);
+		}
+		else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+
+			/*Portion of the segments*/
+			s1=gl[0]/(gl[0]-gl[1]);
+			s2=gl[0]/(gl[0]-gl[2]);
+			if(gl[0]<0.){
+				pt1 = 1; pt2 = 0;
+			}
+
+			xyz_front[pt1][0]=xyz_list[0][0]+s1*(xyz_list[1][0]-xyz_list[0][0]);
+			xyz_front[pt1][1]=xyz_list[0][1]+s1*(xyz_list[1][1]-xyz_list[0][1]);
+			xyz_front[pt1][2]=xyz_list[0][2]+s1*(xyz_list[1][2]-xyz_list[0][2]);
+			xyz_front[pt2][0]=xyz_list[0][0]+s2*(xyz_list[2][0]-xyz_list[0][0]);
+			xyz_front[pt2][1]=xyz_list[0][1]+s2*(xyz_list[2][1]-xyz_list[0][1]);
+			xyz_front[pt2][2]=xyz_list[0][2]+s2*(xyz_list[2][2]-xyz_list[0][2]);
+		}
+		else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+
+			/*Portion of the segments*/
+			s1=gl[1]/(gl[1]-gl[0]);
+			s2=gl[1]/(gl[1]-gl[2]);
+			if(gl[1]<0.){
+				pt1 = 1; pt2 = 0;
+			}
+
+			xyz_front[pt2][0]=xyz_list[1][0]+s1*(xyz_list[0][0]-xyz_list[1][0]);
+			xyz_front[pt2][1]=xyz_list[1][1]+s1*(xyz_list[0][1]-xyz_list[1][1]);
+			xyz_front[pt2][2]=xyz_list[1][2]+s1*(xyz_list[0][2]-xyz_list[1][2]);
+			xyz_front[pt1][0]=xyz_list[1][0]+s2*(xyz_list[2][0]-xyz_list[1][0]);
+			xyz_front[pt1][1]=xyz_list[1][1]+s2*(xyz_list[2][1]-xyz_list[1][1]);
+			xyz_front[pt1][2]=xyz_list[1][2]+s2*(xyz_list[2][2]-xyz_list[1][2]);
+		}
+		else{
+			_error_("case not possible");
+		}
+
+	}
+	else _error_("mesh type "<<EnumToStringx(domaintype)<<"not supported yet ");
+
+	/*Some checks in debugging mode*/
+	_assert_(s1>=0 && s1<=1.);
+	_assert_(s2>=0 && s2<=1.);
+
+	/*Get normal vector*/
+	IssmDouble normal[3];
+	this->NormalSection(&normal[0],&xyz_front[0][0]);
+	normal[0] = -normal[0];
+	normal[1] = -normal[1];
+
+	/*Get inputs*/
+	IssmDouble flux = 0.;
+	IssmDouble vx,vy,thickness,Jdet;
+	IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
+	Input* thickness_input=this->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* vx_input=NULL;
+	Input* vy_input=NULL;
+	if(domaintype==Domain2DhorizontalEnum){
+		vx_input=this->GetInput(VxEnum); _assert_(vx_input);
+		vy_input=this->GetInput(VyEnum); _assert_(vy_input);
+	}
+	else{
+		vx_input=this->GetInput(VxAverageEnum); _assert_(vx_input);
+		vy_input=this->GetInput(VyAverageEnum); _assert_(vy_input);
+	}
+
+	/*Start looping on Gaussian points*/
+	Gauss* gauss=this->NewGauss(&xyz_list[0][0],&xyz_front[0][0],3);
+	while(gauss->next()){
+		thickness_input->GetInputValue(&thickness,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		this->JacobianDeterminantSurface(&Jdet,&xyz_front[0][0],gauss);
+
+		flux += rho_ice*Jdet*gauss->weight*thickness*(vx*normal[0] + vy*normal[1]);
+	}
+
+	/*Cleanup and return*/
+	delete gauss;
+	return flux;
+}
+/*}}}*/
+IssmDouble Tria::GroundinglineMassFlux(bool scaled){/*{{{*/
+
+	/*Make sure there is a grounding line here*/
+	if(!IsIceInElement()) return 0;
+	if(!IsZeroLevelset(MaskOceanLevelsetEnum)) return 0;
+
+	/*Scaled not implemented yet...*/
+	_assert_(!scaled);
+
+	int               domaintype,index1,index2;
+	const IssmPDouble epsilon = 1.e-15;
+	IssmDouble        s1,s2;
+	IssmDouble        gl[NUMVERTICES];
+	IssmDouble        xyz_front[2][3];
+
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Recover parameters and values*/
+	parameters->FindParam(&domaintype,DomainTypeEnum);
+	Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum);
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+	if(domaintype==Domain2DverticalEnum){
+		_error_("not implemented");
+	}
+	else if(domaintype==Domain2DhorizontalEnum || domaintype==Domain3DEnum || domaintype==Domain3DsurfaceEnum){
+		int pt1 = 0;
+		int pt2 = 1;
+		if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+
+			/*Portion of the segments*/
+			s1=gl[2]/(gl[2]-gl[1]);
+			s2=gl[2]/(gl[2]-gl[0]);
+			if(gl[2]<0.){
+				pt1 = 1; pt2 = 0;
+			}
+			xyz_front[pt2][0]=xyz_list[2][0]+s1*(xyz_list[1][0]-xyz_list[2][0]);
+			xyz_front[pt2][1]=xyz_list[2][1]+s1*(xyz_list[1][1]-xyz_list[2][1]);
+			xyz_front[pt2][2]=xyz_list[2][2]+s1*(xyz_list[1][2]-xyz_list[2][2]);
+			xyz_front[pt1][0]=xyz_list[2][0]+s2*(xyz_list[0][0]-xyz_list[2][0]);
+			xyz_front[pt1][1]=xyz_list[2][1]+s2*(xyz_list[0][1]-xyz_list[2][1]);
+			xyz_front[pt1][2]=xyz_list[2][2]+s2*(xyz_list[0][2]-xyz_list[2][2]);
+		}
+		else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+
+			/*Portion of the segments*/
+			s1=gl[0]/(gl[0]-gl[1]);
+			s2=gl[0]/(gl[0]-gl[2]);
+			if(gl[0]<0.){
+				pt1 = 1; pt2 = 0;
+			}
+
+			xyz_front[pt1][0]=xyz_list[0][0]+s1*(xyz_list[1][0]-xyz_list[0][0]);
+			xyz_front[pt1][1]=xyz_list[0][1]+s1*(xyz_list[1][1]-xyz_list[0][1]);
+			xyz_front[pt1][2]=xyz_list[0][2]+s1*(xyz_list[1][2]-xyz_list[0][2]);
+			xyz_front[pt2][0]=xyz_list[0][0]+s2*(xyz_list[2][0]-xyz_list[0][0]);
+			xyz_front[pt2][1]=xyz_list[0][1]+s2*(xyz_list[2][1]-xyz_list[0][1]);
+			xyz_front[pt2][2]=xyz_list[0][2]+s2*(xyz_list[2][2]-xyz_list[0][2]);
+		}
+		else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+
+			/*Portion of the segments*/
+			s1=gl[1]/(gl[1]-gl[0]);
+			s2=gl[1]/(gl[1]-gl[2]);
+			if(gl[1]<0.){
+				pt1 = 1; pt2 = 0;
+			}
+
+			xyz_front[pt2][0]=xyz_list[1][0]+s1*(xyz_list[0][0]-xyz_list[1][0]);
+			xyz_front[pt2][1]=xyz_list[1][1]+s1*(xyz_list[0][1]-xyz_list[1][1]);
+			xyz_front[pt2][2]=xyz_list[1][2]+s1*(xyz_list[0][2]-xyz_list[1][2]);
+			xyz_front[pt1][0]=xyz_list[1][0]+s2*(xyz_list[2][0]-xyz_list[1][0]);
+			xyz_front[pt1][1]=xyz_list[1][1]+s2*(xyz_list[2][1]-xyz_list[1][1]);
+			xyz_front[pt1][2]=xyz_list[1][2]+s2*(xyz_list[2][2]-xyz_list[1][2]);
+		}
+		else{
+			_error_("case not possible");
+		}
+
+	}
+	else _error_("mesh type "<<EnumToStringx(domaintype)<<"not supported yet ");
+
+	/*Some checks in debugging mode*/
+	_assert_(s1>=0 && s1<=1.);
+	_assert_(s2>=0 && s2<=1.);
+
+	/*Get normal vector*/
+	IssmDouble normal[3];
+	this->NormalSection(&normal[0],&xyz_front[0][0]);
+
+	/*Get inputs*/
+	IssmDouble flux = 0.;
+	IssmDouble vx,vy,thickness,Jdet;
+	IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
+	Input* thickness_input=this->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* vx_input=NULL;
+	Input* vy_input=NULL;
+	if(domaintype==Domain2DhorizontalEnum){
+		vx_input=this->GetInput(VxEnum); _assert_(vx_input);
+		vy_input=this->GetInput(VyEnum); _assert_(vy_input);
+	}
+	else{
+		vx_input=this->GetInput(VxAverageEnum); _assert_(vx_input);
+		vy_input=this->GetInput(VyAverageEnum); _assert_(vy_input);
+	}
+
+	/*Start looping on Gaussian points*/
+	Gauss* gauss=this->NewGauss(&xyz_list[0][0],&xyz_front[0][0],3);
+	while(gauss->next()){
+		thickness_input->GetInputValue(&thickness,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		this->JacobianDeterminantSurface(&Jdet,&xyz_front[0][0],gauss);
+
+		flux += rho_ice*Jdet*gauss->weight*thickness*(vx*normal[0] + vy*normal[1]);
+	}
+
+	/*Cleanup and return*/
+	delete gauss;
+	return flux;
+}
+/*}}}*/
+IssmDouble Tria::IceVolume(bool scaled){/*{{{*/
+
+	/*The volume of a truncated prism is area_base * 1/numedges sum(length of edges)*/
+
+	/*Intermediaries*/
+	int i, numiceverts;
+	IssmDouble area_base,surface,base,Haverage,scalefactor;
+	IssmDouble Haux[NUMVERTICES], surfaces[NUMVERTICES], bases[NUMVERTICES];
+	IssmDouble SFaux[NUMVERTICES], scalefactors[NUMVERTICES];
+	IssmDouble s[2]; // s:fraction of intersected triangle edges, that lies inside ice
+	int* indices=NULL;
+	IssmDouble* H=NULL;
+	IssmDouble* SF=NULL;
+
+	if(!IsIceInElement())return 0.;
+
+	int domaintype;
+	parameters->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Relict code
+	if(false && IsIcefront()){
+		//Assumption: linear ice thickness profile on element.
+		//Hence ice thickness at intersection of levelset function with triangle edge is linear interpolation of ice thickness at vertices.
+		this->GetLevelsetIntersection(&indices, &numiceverts, s, MaskIceLevelsetEnum, 0.);
+		int numthk=numiceverts+2;
+		H=xNew<IssmDouble>(numthk);
+		//Correct area distortion caused by projection if requestion
+		area_base=this->GetAreaIce();
+		if(scaled==true){
+			Element::GetInputListOnVertices(&scalefactors[0],MeshScaleFactorEnum);
+			for(i=0;i<NUMVERTICES;i++) SFaux[i]= scalefactors[indices[i]]; //sort thicknesses in ice/noice
+			switch(numiceverts){
+				case 1: // average over triangle
+					SF[0]=SFaux[0];
+					SF[1]=SFaux[0]+s[0]*(SFaux[1]-SFaux[0]);
+					SF[2]=SFaux[0]+s[1]*(SFaux[2]-SFaux[0]);
+					break;
+				case 2: // average over quadrangle
+					SF[0]=SFaux[0];
+					SF[1]=SFaux[1];
+					SF[2]=SFaux[0]+s[0]*(SFaux[2]-SFaux[0]);
+					SF[3]=SFaux[1]+s[1]*(SFaux[2]-SFaux[1]);
+					break;
+				default:
+					_error_("Number of ice covered vertices wrong in Tria::IceVolume()");
+					break;
+			}
+			scalefactor=0.;
+			for(i=0;i<numthk;i++)	scalefactor+=SF[i];
+			scalefactor/=IssmDouble(numthk);
+			area_base=area_base*scalefactor;
+		}
+		Element::GetInputListOnVertices(&surfaces[0],SurfaceEnum);
+		Element::GetInputListOnVertices(&bases[0],BaseEnum);
+		for(i=0;i<NUMVERTICES;i++) Haux[i]= surfaces[indices[i]]-bases[indices[i]]; //sort thicknesses in ice/noice
+		switch(numiceverts){
+			case 1: // average over triangle
+				H[0]=Haux[0];
+				H[1]=Haux[0]+s[0]*(Haux[1]-Haux[0]);
+				H[2]=Haux[0]+s[1]*(Haux[2]-Haux[0]);
+				break;
+			case 2: // average over quadrangle
+				H[0]=Haux[0];
+				H[1]=Haux[1];
+				H[2]=Haux[0]+s[0]*(Haux[2]-Haux[0]);
+				H[3]=Haux[1]+s[1]*(Haux[2]-Haux[1]);
+				break;
+			default:
+				_error_("Number of ice covered vertices wrong in Tria::IceVolume()");
+				break;
+		}
+		Haverage=0.;
+		for(i=0;i<numthk;i++)	Haverage+=H[i];
+		Haverage/=IssmDouble(numthk);
+	}*/
+
+   IssmDouble lsf[NUMVERTICES];
+	Element::GetInputListOnVertices(&lsf[0],MaskIceLevelsetEnum);
+   /*Deal with partially ice-covered elements*/
+	if(lsf[0]*lsf[1]<=0 || lsf[0]*lsf[2]<=0 || lsf[1]*lsf[2]<=0){
+		bool istrapneg;
+      int point;
+      IssmDouble weights[NUMVERTICES];
+      IssmDouble surfaces[NUMVERTICES];
+      IssmDouble bases[NUMVERTICES];
+      IssmDouble Hice[NUMVERTICES];
+      IssmDouble area_basetot,f1,f2,phi;
+      /*Average thickness over subelement*/
+		Element::GetInputListOnVertices(&surfaces[0],SurfaceEnum);
+      Element::GetInputListOnVertices(&bases[0],BaseEnum);
+      GetFractionGeometry(weights,&phi,&point,&f1,&f2,&istrapneg,lsf);
+      for(int i=0;i<NUMVERTICES;i++) Hice[i] = surfaces[i]-bases[i];
+      Haverage = 0.0;
+		/*Use weights[i]/phi to get average thickness over subelement*/
+      for(int i=0;i<NUMVERTICES;i++) Haverage += weights[i]/phi*Hice[i];
+		/*Get back area of ice-covered base*/
+		area_basetot = this->GetArea();
+		area_base    = phi*area_basetot;
+
+		/*Account for scaling factor averaged over subelement*/
+		if(scaled==true){
+			IssmDouble* scalefactor_vertices = xNew<IssmDouble>(NUMVERTICES);
+			Element::GetInputListOnVertices(&scalefactor_vertices[0],MeshScaleFactorEnum);
+			scalefactor = 0.0;
+			for(int i=0;i<NUMVERTICES;i++) scalefactor += weights[i]/phi*scalefactor_vertices[i];
+			area_base = area_base*scalefactor;
+			xDelete<IssmDouble>(scalefactor_vertices);
+		}
+   }
+	else{
+		/*First get back the area of the base*/
+		area_base=this->GetArea();
+		if(scaled==true){
+			Input* scalefactor_input = this->GetInput(MeshScaleFactorEnum); _assert_(scalefactor_input);
+			scalefactor_input->GetInputAverage(&scalefactor);
+			area_base=area_base*scalefactor;
+		}
+
+		/*Now get the average height*/
+		Input* surface_input = this->GetInput(SurfaceEnum); _assert_(surface_input);
+		Input* base_input    = this->GetInput(BaseEnum);    _assert_(base_input);
+		surface_input->GetInputAverage(&surface);
+		base_input->GetInputAverage(&base);
+		Haverage=surface-base;
+	}
+
+	/*Cleanup & return: */
+	xDelete<int>(indices);
+	xDelete<IssmDouble>(H);
+	xDelete<IssmDouble>(SF);
+
+	if(domaintype==Domain2DverticalEnum){
+	  return area_base;
+	}
+	else{
+	  return area_base*Haverage;
+	}
+}
+/*}}}*/
+IssmDouble Tria::IceVolumeAboveFloatation(bool scaled){/*{{{*/
+
+	/*The volume above floatation: H + rho_water/rho_ice * bathymetry */
+	IssmDouble rho_ice,rho_water;
+	IssmDouble base,surface,bed,bathymetry,scalefactor;
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	if(!IsIceInElement() || IsAllFloating())return 0;
+
+	rho_ice=FindParam(MaterialsRhoIceEnum);
+	rho_water=FindParam(MaterialsRhoSeawaterEnum);
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*First calculate the area of the base (cross section triangle)
+	 * http://en.wikipedia.org/wiki/Triangle
+	 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/
+	base = 1./2. * fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
+	if(scaled==true){
+		Input* scalefactor_input = this->GetInput(MeshScaleFactorEnum); _assert_(scalefactor_input);
+		scalefactor_input->GetInputAverage(&scalefactor);
+		base=base*scalefactor;
+	}
+
+	/*Now get the average height and bathymetry*/
+	Input* surface_input = this->GetInput(SurfaceEnum); _assert_(surface_input);
+	Input* base_input    = this->GetInput(BaseEnum);    _assert_(base_input);
+	Input* bed_input     = this->GetInput(BedEnum);     _assert_(bed_input);
+	if(!bed_input) _error_("Could not find bed");
+	surface_input->GetInputAverage(&surface);
+	base_input->GetInputAverage(&bed);
+	bed_input->GetInputAverage(&bathymetry);
+
+	/*Return: */
+	return base*(surface-bed+min(rho_water/rho_ice*bathymetry,0.));
+}
+/*}}}*/
+void       Tria::InputDepthAverageAtBase(int enum_type,int average_enum_type){/*{{{*/
+
+	/*New input*/
+	Input* oldinput=NULL;
+	Input* newinput=NULL;
+
+	/*copy input of enum_type*/
+	oldinput=this->GetInput(enum_type);
+	if(!oldinput)_error_("could not find old input with enum: " << EnumToStringx(enum_type));
+	newinput=oldinput->copy();
+
+	/*Assign new name (average)*/
+	newinput->ChangeEnum(average_enum_type);
+
+	/*Add new input to current element*/
+	_error_("not implemented");
+}
+/*}}}*/
+void       Tria::InputUpdateFromIoModel(int index, IoModel* iomodel){ //i is the element index/*{{{*/
+
+	/*Intermediaries*/
+	int        i,j;
+	int        tria_vertex_ids[3];
+	IssmDouble nodeinputs[3];
+	IssmDouble cmmininputs[3];
+	IssmDouble cmmaxinputs[3];
+	bool       control_analysis,ad_analysis   = false;
+	int        num_control_type,num_responses;
+	char**     controls = NULL;
+	IssmDouble yts;
+
+	/*Get parameters: */
+	iomodel->FindConstant(&yts,"md.constants.yts");
+	iomodel->FindConstant(&control_analysis,"md.inversion.iscontrol");
+	iomodel->FindConstant(&ad_analysis, "md.autodiff.isautodiff");
+	if(control_analysis && !ad_analysis) iomodel->FindConstant(&num_control_type,"md.inversion.num_control_parameters");
+	if(control_analysis && !ad_analysis) iomodel->FindConstant(&num_responses,"md.inversion.num_cost_functions");
+	if(control_analysis && ad_analysis) iomodel->FindConstant(&num_control_type,"md.autodiff.num_independent_objects");
+	if(control_analysis && ad_analysis) iomodel->FindConstant(&num_responses,"md.autodiff.num_dependent_objects");
+
+	/*Recover vertices ids needed to initialize inputs*/
+	for(i=0;i<3;i++){
+		tria_vertex_ids[i]=reCast<int>(iomodel->elements[3*index+i]); //ids for vertices are in the elements array from Matlab
+	}
+}
+/*}}}*/
+void       Tria::InputUpdateFromSolutionOneDof(IssmDouble* solution,int enum_type){/*{{{*/
+
+	/*Intermediary*/
+	int* doflist = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(this->element_type);
+
+	/*Fetch dof list and allocate solution vector*/
+	GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values    = xNew<IssmDouble>(numnodes);
+
+	/*Use the dof list to index into the solution vector: */
+	for(int i=0;i<numnodes;i++){
+		values[i]=solution[doflist[i]];
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+		if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector, SID = " << this->Sid());
+	}
+
+	/*Add input to the element: */
+	this->AddInput(enum_type,values,this->element_type);
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<int>(doflist);
+}
+/*}}}*/
+void       Tria::InputUpdateFromVector(IssmDouble* vector, int name, int type){/*{{{*/
+
+	/*Check that name is an element input*/
+	if(!IsInputEnum(name)) _error_("Enum "<<EnumToStringx(name)<<" is not in IsInput");
+
+	int         numnodes;
+	IssmDouble  value;
+	int         lidlist[NUMVERTICES];
+	int        *doflist = NULL;
+	IssmDouble *values  = NULL;
+
+	GetVerticesLidList(&lidlist[0]);
+
+	switch(type){
+		case VertexLIdEnum:
+			values = xNew<IssmDouble>(NUMVERTICES);
+			for(int i=0;i<NUMVERTICES;i++){
+				values[i]=vector[this->vertices[i]->Lid()];
+				if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in vector");
+				if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in vector");
+			}
+			/*update input*/
+			inputs->SetTriaInput(name,P1Enum,NUMVERTICES,lidlist,values);
+			break;
+
+		case VertexPIdEnum:
+			values = xNew<IssmDouble>(NUMVERTICES);
+			for(int i=0;i<NUMVERTICES;i++){
+				values[i]=vector[this->vertices[i]->Pid()];
+				if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in vector");
+				if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in vector");
+			}
+			/*update input*/
+			inputs->SetTriaInput(name,P1Enum,NUMVERTICES,lidlist,values);
+			break;
+
+		case VertexSIdEnum:
+			values = xNew<IssmDouble>(NUMVERTICES);
+			for(int i=0;i<NUMVERTICES;i++){
+				values[i]=vector[this->vertices[i]->Sid()];
+				if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in vector");
+				if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in vector");
+			}
+			/*update input*/
+			inputs->SetTriaInput(name,P1Enum,NUMVERTICES,lidlist,values);
+			break;
+
+		case NodesEnum:
+			/*Get number of nodes and dof list: */
+			numnodes = this->NumberofNodes(this->element_type);
+			values   = xNew<IssmDouble>(numnodes);
+			GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+
+			for(int i=0;i<numnodes;i++){
+				values[i]=vector[doflist[i]];
+				if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in vector");
+				if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in vector");
+			}
+			//this->inputs->AddInput(new TriaInput(name,values,this->element_type));
+			_error_("not implemented");
+			break;
+
+		case NodeSIdEnum:
+			/*Get number of nodes and dof list: */
+			numnodes = this->NumberofNodes(this->element_type);
+			values   = xNew<IssmDouble>(numnodes);
+
+			for(int i=0;i<numnodes;i++){
+				values[i]=vector[nodes[i]->Sid()];
+				if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in vector");
+				if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in vector");
+			}
+			if(this->element_type==P1Enum){
+				inputs->SetTriaInput(name,P1Enum,NUMVERTICES,lidlist,values);
+			}
+			else{
+				inputs->SetTriaInput(name,this->element_type,this->lid,numnodes,values);
+			}
+			break;
+
+		case ElementEnum:
+			value=vector[this->Sid()];
+			if(xIsNan<IssmDouble>(value)) _error_("NaN found in vector");
+			if(xIsInf<IssmDouble>(value)) _error_("Inf found in vector");
+			/*update input*/
+			//this->inputs->AddInput(new DoubleInput(name,value));
+			//inputs->SetTriaInput(name,P1Enum,NUMVERTICES,lidlist,values);
+			_error_("not implemented");
+			break;
+
+		default:
+			_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
+	}
+
+	/*Clean-up*/
+	xDelete<int>(doflist);
+	xDelete<IssmDouble>(values);
+
+}
+/*}}}*/
+bool       Tria::IsFaceOnBoundary(void){/*{{{*/
+
+	IssmDouble values[NUMVERTICES];
+	IssmDouble sum;
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&values[0],MeshVertexonboundaryEnum);
+	sum = values[0]+values[1]+values[2];
+
+	_assert_(sum==0. || sum==1. || sum==2.);
+
+	if(sum==3.)  _error_("Two edges on boundary not supported yet...");
+
+	if(sum>1.){
+		return true;
+	}
+	else{
+		return false;
+	}
+}/*}}}*/
+bool       Tria::IsIcefront(void){/*{{{*/
+
+	bool isicefront;
+	int i,nrice;
+   IssmDouble ls[NUMVERTICES];
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&ls[0],MaskIceLevelsetEnum);
+
+	/* If only one vertex has ice, there is an ice front here */
+	isicefront=false;
+	if(IsIceInElement()){
+		nrice=0;
+		for(i=0;i<NUMVERTICES;i++)
+			if(ls[i]<0.) nrice++;
+		if(nrice==1) isicefront= true;
+	}
+	return isicefront;
+}/*}}}*/
+bool       Tria::IsNodeOnShelfFromFlags(IssmDouble* flags){/*{{{*/
+
+	int  i;
+	bool shelf=false;
+
+	for(i=0;i<NUMVERTICES;i++){
+		if (flags[vertices[i]->Pid()]<0.){
+			shelf=true;
+			break;
+		}
+	}
+	return shelf;
+}
+/*}}}*/
+bool       Tria::IsZeroLevelset(int levelset_enum){/*{{{*/
+
+	bool iszerols;
+	IssmDouble ls[NUMVERTICES];
+
+	/*Retrieve all inputs and parameters*/
+	Element::GetInputListOnVertices(&ls[0],levelset_enum);
+
+	/*If the level set is awlays <0, there is no ice front here*/
+	iszerols= false;
+	if(IsIceInElement()){
+		if(ls[0]*ls[1]<0. || ls[0]*ls[2]<0. || (ls[0]*ls[1]*ls[2]==0. && ls[0]*ls[1]+ls[0]*ls[2]+ls[1]*ls[2]<=0.)){
+			iszerols = true;
+		}
+	}
+
+	return iszerols;
+}
+/*}}}*/
+void       Tria::JacobianDeterminant(IssmDouble* pJdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetJacobianDeterminant(pJdet,xyz_list,(GaussTria*)gauss);
+
+}
+/*}}}*/
+void       Tria::JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetSegmentJacobianDeterminant(pJdet,xyz_list_base,(GaussTria*)gauss);
+
+}
+/*}}}*/
+void       Tria::JacobianDeterminantSurface(IssmDouble* pJdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetSegmentJacobianDeterminant(pJdet,xyz_list,(GaussTria*)gauss);
+
+}
+/*}}}*/
+void       Tria::JacobianDeterminantTop(IssmDouble* pJdet,IssmDouble* xyz_list_top,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetSegmentJacobianDeterminant(pJdet,xyz_list_top,(GaussTria*)gauss);
+
+}
+/*}}}*/
+IssmDouble Tria::Masscon(IssmDouble* levelset){ /*{{{*/
+
+	/*intermediary: */
+	IssmDouble  thickness;
+	IssmDouble  Jdet;
+	int         point1;
+	IssmDouble  fraction1,fraction2;
+	bool        mainlynegative=true;
+
+	/* Get node coordinates and dof list: */
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve inputs required:*/
+	Input* thickness_input=this->GetInput(ThicknessEnum); _assert_(thickness_input);
+
+	/*Retrieve material parameters: */
+	IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
+
+	/*Retrieve values of the levelset defining the masscon: */
+	IssmDouble values[NUMVERTICES];
+	for(int i=0;i<NUMVERTICES;i++){
+		values[i]=levelset[this->vertices[i]->Sid()];
+	}
+
+	/*Ok, use the level set values to figure out where we put our gaussian points:*/
+	this->GetLevelsetPositivePart(&point1,&fraction1,&fraction2,&mainlynegative,&values[0]);
+	Gauss* gauss = this->NewGauss(point1,fraction1,fraction2,mainlynegative,4);
+
+	IssmDouble volume=0.;
+	while(gauss->next()){
+		this->JacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		thickness_input->GetInputValue(&thickness, gauss);
+		volume+=thickness*gauss->weight*Jdet;
+	}
+
+	/* clean up and Return: */
+	delete gauss;
+	return rho_ice*volume;
+}
+/*}}}*/
+IssmDouble Tria::MassFlux(IssmDouble x1, IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id){/*{{{*/
+
+	int        domaintype;
+	IssmDouble mass_flux=0.;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble vx1,vx2,vy1,vy2,h1,h2;
+
+	/*Get material parameters :*/
+	IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
+
+	/*First off, check that this segment belongs to this element: */
+	if (segment_id!=this->id)_error_("error message: segment with id " << segment_id << " does not belong to element with id:" << this->id);
+
+	/*Get xyz list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*get area coordinates of 0 and 1 locations: */
+	GaussTria gauss_1;
+	gauss_1.GaussFromCoords(x1,y1,&xyz_list[0][0]);
+	GaussTria gauss_2;
+	gauss_2.GaussFromCoords(x2,y2,&xyz_list[0][0]);
+
+	/*Get segment length and normal (needs to be properly oriented)*/
+	IssmDouble nx=cos(atan2(x1-x2,y2-y1));
+	IssmDouble ny=sin(atan2(x1-x2,y2-y1));
+	IssmDouble length=sqrt(pow(x2-x1,2)+pow(y2-y1,2));
+
+	/*Get velocity and thickness*/
+	this->parameters->FindParam(&domaintype,DomainTypeEnum);
+	Input* thickness_input=this->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* vx_input=NULL;
+	Input* vy_input=NULL;
+	if(domaintype==Domain2DhorizontalEnum){
+		vx_input=this->GetInput(VxEnum); _assert_(vx_input);
+		vy_input=this->GetInput(VyEnum); _assert_(vy_input);
+	}
+	else{
+		vx_input=this->GetInput(VxAverageEnum); _assert_(vx_input);
+		vy_input=this->GetInput(VyAverageEnum); _assert_(vy_input);
+	}
+
+	thickness_input->GetInputValue(&h1, &gauss_1);
+	thickness_input->GetInputValue(&h2, &gauss_2);
+	vx_input->GetInputValue(&vx1,&gauss_1);
+	vx_input->GetInputValue(&vx2,&gauss_2);
+	vy_input->GetInputValue(&vy1,&gauss_1);
+	vy_input->GetInputValue(&vy2,&gauss_2);
+
+	mass_flux= rho_ice*length*(
+				(1./3.*(h1-h2)*(vx1-vx2)+0.5*h2*(vx1-vx2)+0.5*(h1-h2)*vx2+h2*vx2)*nx+
+				(1./3.*(h1-h2)*(vy1-vy2)+0.5*h2*(vy1-vy2)+0.5*(h1-h2)*vy2+h2*vy2)*ny
+				);
+
+	/*clean up and return:*/
+	return mass_flux;
+}
+/*}}}*/
+IssmDouble Tria::MassFlux(IssmDouble* segment){/*{{{*/
+	return this->MassFlux(segment[0],segment[1],segment[2],segment[3],reCast<int>(segment[4]));
+}
+/*}}}*/
+IssmDouble Tria::Misfit(int modelenum,int observationenum,int weightsenum){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble model,observation,weight;
+	IssmDouble Jdet;
+	IssmDouble Jelem = 0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	GaussTria *gauss = NULL;
+
+	/*If on water, return 0: */
+	if(!IsIceInElement())return 0;
+
+	/*Retrieve all inputs we will be needing: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	Input* model_input=this->GetInput(modelenum);   _assert_(model_input);
+	Input* observation_input=this->GetInput(observationenum);_assert_(observation_input);
+	Input* weights_input     =this->GetInput(weightsenum);     _assert_(weights_input);
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=new GaussTria(2);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss);
+
+		/*Get parameters at gauss point*/
+		model_input->GetInputValue(&model,gauss);
+		observation_input->GetInputValue(&observation,gauss);
+		weights_input->GetInputValue(&weight,gauss);
+
+		/*compute misfit between model and observation */
+		Jelem+=0.5*(model-observation)*(model-observation)*Jdet*weight*gauss->weight;
+	}
+
+	/* clean up and Return: */
+	delete gauss;
+	return Jelem;
+}
+/*}}}*/
+IssmDouble Tria::MisfitArea(int weightsenum){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble weight;
+	IssmDouble Jdet;
+	IssmDouble Jelem = 0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	GaussTria *gauss = NULL;
+
+	/*If on water, return 0: */
+	if(!IsIceInElement())return 0;
+
+	/*Retrieve all inputs we will be needing: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	Input* weights_input     =this->GetInput(weightsenum);     _assert_(weights_input);
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=new GaussTria(2);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss);
+
+		/*Get parameters at gauss point*/
+		weights_input->GetInputValue(&weight,gauss);
+
+		/*compute misfit between model and observation */
+		Jelem+=Jdet*weight*gauss->weight;
+	}
+
+	/* clean up and Return: */
+	delete gauss;
+	return Jelem;
+}
+/*}}}*/
+void	      Tria::MovingFrontalVelocity(void){/*{{{*/
+
+	int  dim, domaintype, calvinglaw, i;
+	IssmDouble v[3],w[3],c[3],m[3],dlsf[3];
+	IssmDouble norm_dlsf, norm_calving, calvingrate, meltingrate, groundedice;
+	IssmDouble migrationmax, calvinghaf, heaviside, haf_eps;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble movingfrontvx[NUMVERTICES];
+	IssmDouble movingfrontvy[NUMVERTICES];
+	IssmDouble vel;
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	Input* calvingratex_input = NULL;
+	Input* calvingratey_input = NULL;
+	Input* calvingrate_input  = NULL;
+	Input* meltingrate_input  = NULL;
+
+	/*Get problem dimension and whether there is moving front or not*/
+	this->FindParam(&domaintype,DomainTypeEnum);
+	this->FindParam(&calvinglaw,CalvingLawEnum);
+
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1; break;
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 2; break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Load levelset function gradients*/
+   Input *gr_input         = this->GetInput(MaskOceanLevelsetEnum); _assert_(gr_input);
+	Input *lsf_slopex_input = this->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input);
+	Input *lsf_slopey_input = this->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input);
+	Input *vx_input         = this->GetInput(VxEnum);                     _assert_(vx_input);
+	Input *vy_input         = this->GetInput(VyEnum); _assert_(vy_input);
+
+	switch(calvinglaw){
+		case DefaultCalvingEnum:
+		case CalvingVonmisesEnum:
+		case CalvingVonmisesADEnum:
+		case CalvingLevermannEnum:
+		case CalvingPollardEnum:
+		case CalvingTestEnum:
+		case CalvingParameterizationEnum:
+		case CalvingCalvingMIPEnum:
+			calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+			calvingratey_input=this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
+			meltingrate_input = this->GetInput(CalvingMeltingrateEnum);     _assert_(meltingrate_input);
+			break;
+		case CalvingMinthicknessEnum:
+		case CalvingHabEnum:
+		case CalvingCrevasseDepthEnum:
+			meltingrate_input = this->GetInput(CalvingMeltingrateEnum);     _assert_(meltingrate_input);
+			break;
+		case CalvingDev2Enum:
+			this->FindParam(&calvinghaf,CalvingHeightAboveFloatationEnum);
+			calvingrate_input = this->GetInput(CalvingCalvingrateEnum);     _assert_(calvingrate_input);
+			meltingrate_input = this->GetInput(CalvingMeltingrateEnum);     _assert_(meltingrate_input);
+			break;
+		default:
+			_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+	}
+
+	/* Start looping on the number of vertices: */
+	GaussTria gauss;
+	for(int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/* Advection */
+		vx_input->GetInputValue(&v[0],&gauss);
+		vy_input->GetInputValue(&v[1],&gauss);
+		gr_input->GetInputValue(&groundedice,&gauss);
+		lsf_slopex_input->GetInputValue(&dlsf[0],&gauss);
+		if(dim==2) lsf_slopey_input->GetInputValue(&dlsf[1],&gauss);
+
+		norm_dlsf=0.;
+		for(i=0;i<dim;i++) norm_dlsf+=pow(dlsf[i],2);
+		norm_dlsf=sqrt(norm_dlsf);
+
+		/*Get calving speed*/
+		switch(calvinglaw){
+
+			/*RATE calving laws*/
+			case DefaultCalvingEnum:
+			case CalvingVonmisesEnum:
+			case CalvingVonmisesADEnum:
+			case CalvingTestEnum:
+			case CalvingParameterizationEnum:
+			case CalvingLevermannEnum:
+			case CalvingPollardEnum:
+			case CalvingCalvingMIPEnum:
+				calvingratex_input->GetInputValue(&c[0],&gauss);
+				calvingratey_input->GetInputValue(&c[1],&gauss);
+				meltingrate_input->GetInputValue(&meltingrate,&gauss);
+				if(groundedice<0) meltingrate = 0.;
+				m[0]=meltingrate*dlsf[0]/norm_dlsf;
+				m[1]=meltingrate*dlsf[1]/norm_dlsf;
+
+				if(norm_dlsf<1.e-10){
+					for(i=0;i<dim;i++){
+						c[i]=0.; m[i]=0.;
+					}
+				}
+				break;
+
+			/*Discrete calving laws*/
+			case CalvingMinthicknessEnum:
+			case CalvingHabEnum:
+			case CalvingCrevasseDepthEnum:
+				meltingrate_input->GetInputValue(&meltingrate,&gauss);
+
+				if(norm_dlsf>1.e-10)
+				 for(i=0;i<dim;i++){
+					 c[i]=0.;
+					 m[i]=meltingrate*dlsf[i]/norm_dlsf;
+				 }
+				else
+				 for(i=0;i<dim;i++){
+					 c[i]=0.;
+					 m[i]=0.;
+				 }
+				break;
+
+			case CalvingDev2Enum:
+				  {
+					calvingrate_input->GetInputValue(&calvingrate,&gauss);
+					meltingrate_input->GetInputValue(&meltingrate,&gauss);
+					gr_input->GetInputValue(&groundedice,&gauss);
+
+					//idea: no retreat on ice above critical calving height "calvinghaf" . Limit using regularized Heaviside function.
+					vel=sqrt(v[0]*v[0] + v[1]*v[1]);
+					haf_eps=10.;
+					if(groundedice-calvinghaf<=-haf_eps){
+						// ice floats freely below calvinghaf: calve freely
+						// undercutting has no effect:
+						meltingrate=0.;
+					}
+					else if(groundedice-calvinghaf>=haf_eps){
+						// ice is well above calvinghaf -> no calving back, i.e. limit calving rate to ice velocity
+						calvingrate=min(calvingrate,vel);
+						// ice is almost grounded: frontal undercutting has maximum effect (do nothing).
+					}
+					else{ // ice is close to calvinghaf: smooth transition between limitation and free calving.
+						//heaviside: 0 for floating, 1 for grounded
+						heaviside=(groundedice-calvinghaf+haf_eps)/(2.*haf_eps) + sin(PI*(groundedice-calvinghaf)/haf_eps)/(2.*M_PI);
+						calvingrate=heaviside*(min(calvingrate,vel)-calvingrate)+calvingrate;
+						meltingrate=heaviside*meltingrate+0.;
+					}
+
+					if(norm_dlsf>1.e-10)
+					 for(i=0;i<dim;i++){
+						 c[i]=calvingrate*dlsf[i]/norm_dlsf;
+						 m[i]=meltingrate*dlsf[i]/norm_dlsf;
+					 }
+					else
+					 for(i=0;i<dim;i++){
+						 c[i]=0.;
+						 m[i]=0.;
+					 }
+					break;
+				  }
+				calvingratex_input->GetInputValue(&c[0],&gauss);
+				if(dim==2) calvingratey_input->GetInputValue(&c[1],&gauss);
+				for(i=0;i<dim;i++) m[i]=0.;
+				break;
+
+			default:
+				_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+		}
+		for(i=0;i<dim;i++) w[i]=v[i]-c[i]-m[i];
+
+		movingfrontvx[iv] = w[0];
+		movingfrontvy[iv] = w[1];		
+	}
+
+	#ifdef MICI
+	/**************************************  MICI  START ************************************/
+	/*MICI from Crawford et al. 2021:
+	 * Tice = 20C; Bf  ->  I = 3.7e-16; α = 6.9
+	 * Tice = 20C; Bn  ->  I = 5.1e-14; α = 6.0
+	 * Tice = 20C; Bh  ->  I = 3.2e-17; α = 7.2
+	 * Tice = 10C; Bn  ->  I = 6.9e-17; α = 7.3
+	 * Tice = 5C;  Bn  ->  I = 1.9e-16; α = 7.3
+	 */
+	Input* surface_input = this->GetInput(SurfaceEnum); _assert_(surface_input);
+	Input* bed_input     = this->GetInput(BedEnum);     _assert_(bed_input);
+	Input* ls_input      = this->GetInput(MaskIceLevelsetEnum);   _assert_(ls_input);
+	IssmDouble Hc,bed,ls;
+	for(int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		surface_input->GetInputValue(&Hc,&gauss);
+		bed_input->GetInputValue(&bed,&gauss);
+		ls_input->GetInputValue(&ls,&gauss);
+
+		/*use vel direction instead of LSF*/
+		vx_input->GetInputValue(&v[0],&gauss);
+		vy_input->GetInputValue(&v[1],&gauss);
+		vel=sqrt(v[0]*v[0] + v[1]*v[1]);
+		norm_dlsf = max(vel,1.e-10);
+		dlsf[0] = v[0];
+		dlsf[1] = v[1];
+
+		/*Do we assume that the calving front does not move if MICI is not engaged?*/
+		bool regrowth = false;
+		bool apply_as_retreat = true;
+		if(!regrowth){
+			movingfrontvx[iv] = 0.;
+			movingfrontvy[iv] = 0.;
+		}
+
+		//movingfrontvx[iv] = -2000./(365*24*3600.)*dlsf[0]/norm_dlsf;
+		//movingfrontvy[iv] = -2000./(365*24*3600.)*dlsf[1]/norm_dlsf;
+
+		if(MICI==1 && Hc>80. && bed<0. && fabs(ls)<100.e3){ //Pollard & De Conto
+			IssmDouble C = (min(max(Hc,80.),100.) - 80.)/20. * 10./(24*3600.); /*Original MICI! convert from m/day to m/s*/
+
+			/*Front motion = ice speed (v) - calving rate*/
+			movingfrontvx[iv] = v[0]-C*dlsf[0]/norm_dlsf;
+			movingfrontvy[iv] = v[1]-C*dlsf[1]/norm_dlsf;
+		}
+		else if (MICI==2 && Hc>135. && bed<0. && fabs(ls)<100.e3){ // Crawford et all
+
+			/*if 1: RETREAT rate
+			 *if 0: calving rate*/
+			if(0) v[0]=0.; v[1]=0.;
+
+			/*5C Bn (worst case scenario)*/
+			IssmDouble I     = 1.9e-16;
+			IssmDouble alpha = 7.3;
+			IssmDouble C = min(2000.,I*pow(Hc,alpha))/(24*3600.); /*convert from m/day to m/s*/
+
+			/*Front motion = ice speed (v) - calving rate*/
+			movingfrontvx[iv] = v[0] -C*dlsf[0]/norm_dlsf;
+			movingfrontvy[iv] = v[1] -C*dlsf[1]/norm_dlsf;
+
+			/*disable regrowth if calving rate is too low*/
+			if(!regrowth && C<vel){
+				movingfrontvx[iv] = 0.;
+				movingfrontvy[iv] = 0.;
+			}
+		}
+	}
+	#endif
+	/**************************************  END MICI  *************************************/
+
+	/*Add input*/
+	this->AddInput(MovingFrontalVxEnum,&movingfrontvx[0],P1DGEnum);
+	this->AddInput(MovingFrontalVyEnum,&movingfrontvy[0],P1DGEnum);
+}
+/*}}}*/
+Gauss*     Tria::NewGauss(void){/*{{{*/
+	return new GaussTria();
+}
+/*}}}*/
+Gauss*     Tria::NewGauss(int order){/*{{{*/
+	return new GaussTria(order);
+}
+/*}}}*/
+Gauss*     Tria::NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order){/*{{{*/
+
+	IssmDouble  area_coordinates[2][3];
+	GetAreaCoordinates(&area_coordinates[0][0],xyz_list_front,xyz_list,2);
+	return new GaussTria(area_coordinates,order);
+}
+/*}}}*/
+Gauss*     Tria::NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order){/*{{{*/
+
+	return new GaussTria(point1,fraction1,fraction2,mainlyfloating,order);
+}
+/*}}}*/
+Gauss*     Tria::NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,int order){/*{{{*/
+
+	return new GaussTria(point1,fraction1,fraction2,order);
+}
+/*}}}*/
+Gauss*     Tria::NewGauss(IssmDouble fraction1,IssmDouble fraction2,int order){/*{{{*/
+
+	return new GaussTria(fraction1,fraction2,order);
+}
+/*}}}*/
+Gauss*     Tria::NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert){/*{{{*/
+
+	IssmDouble  area_coordinates[2][3];
+	GetAreaCoordinates(&area_coordinates[0][0],xyz_list_front,xyz_list,2);
+	return new GaussTria(area_coordinates,order_vert);
+}
+/*}}}*/
+Gauss*     Tria::NewGaussBase(int order){/*{{{*/
+
+	int indices[2];
+	this->EdgeOnBaseIndices(&indices[0],&indices[1]);
+	return new GaussTria(indices[0],indices[1],order);
+}
+/*}}}*/
+Gauss*     Tria::NewGaussTop(int order){/*{{{*/
+
+	int indices[2];
+	this->EdgeOnSurfaceIndices(&indices[0],&indices[1]);
+	return new GaussTria(indices[0],indices[1],order);
+}
+/*}}}*/
+void       Tria::NodalFunctions(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetNodalFunctions(basis,(GaussTria*)gauss,this->element_type);
+
+}
+/*}}}*/
+void       Tria::NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussTria*)gauss,this->element_type);
+
+}
+/*}}}*/
+void       Tria::NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussTria*)gauss,this->VelocityInterpolation());
+
+}
+/*}}}*/
+void       Tria::NodalFunctionsPressure(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetNodalFunctions(basis,(GaussTria*)gauss,this->PressureInterpolation());
+
+}
+/*}}}*/
+void       Tria::NodalFunctionsP1(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetNodalFunctions(basis,(GaussTria*)gauss,P1Enum);
+
+}
+/*}}}*/
+void       Tria::NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussTria*)gauss,P1Enum);
+
+}
+/*}}}*/
+void       Tria::NodalFunctionsP2(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetNodalFunctions(basis,(GaussTria*)gauss,P2Enum);
+
+}
+/*}}}*/
+void       Tria::NodalFunctionsTensor(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetNodalFunctions(basis,(GaussTria*)gauss,this->TensorInterpolation());
+
+}
+/*}}}*/
+void       Tria::NodalFunctionsVelocity(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetNodalFunctions(basis,(GaussTria*)gauss,this->VelocityInterpolation());
+
+}
+/*}}}*/
+int        Tria::NodalValue(IssmDouble* pvalue, int index, int natureofdataenum){/*{{{*/
+
+	int         found = 0;
+	IssmDouble  value;
+	GaussTria   gauss;
+
+	/*First, serarch the input: */
+	Input* data=this->GetInput(natureofdataenum);
+
+	/*figure out if we have the vertex id: */
+	found=0;
+	for(int i=0;i<NUMVERTICES;i++){
+		if(index==vertices[i]->Sid()){
+			/*Do we have natureofdataenum in our inputs? :*/
+			if(data){
+				/*ok, we are good. retrieve value of input at vertex :*/
+				gauss.GaussVertex(i);
+				data->GetInputValue(&value,&gauss);
+				found=1;
+				break;
+			}
+		}
+	}
+
+	if(found)*pvalue=value;
+	return found;
+}
+/*}}}*/
+void       Tria::NormalBase(IssmDouble* bed_normal,IssmDouble* xyz_list){/*{{{*/
+
+	/*Build unit outward pointing vector*/
+	IssmDouble vector[2];
+	IssmDouble norm;
+
+	vector[0]=xyz_list[1*3+0] - xyz_list[0*3+0];
+	vector[1]=xyz_list[1*3+1] - xyz_list[0*3+1];
+
+	norm=sqrt(vector[0]*vector[0] + vector[1]*vector[1]);
+
+	bed_normal[0]= + vector[1]/norm;
+	bed_normal[1]= - vector[0]/norm;
+	_assert_(bed_normal[1]<0);
+}
+/*}}}*/
+void       Tria::NormalSection(IssmDouble* normal,IssmDouble* xyz_list){/*{{{*/
+
+	/*Build unit outward pointing vector*/
+	IssmDouble vector[2];
+	IssmDouble norm;
+
+	vector[0]=xyz_list[1*3+0] - xyz_list[0*3+0];
+	vector[1]=xyz_list[1*3+1] - xyz_list[0*3+1];
+
+	norm=sqrt(vector[0]*vector[0] + vector[1]*vector[1]);
+
+	normal[0]= + vector[1]/(norm+1e-10);
+	normal[1]= - vector[0]/(norm+1e-10);
+}
+/*}}}*/
+void       Tria::NormalTop(IssmDouble* top_normal,IssmDouble* xyz_list){/*{{{*/
+
+	/*Build unit outward pointing vector*/
+	int index1,index2;
+	IssmDouble vector[2];
+	IssmDouble norm;
+
+	this->EdgeOnSurfaceIndices(&index1,&index2);
+	vector[0]=xyz_list[1*3+0] - xyz_list[0*3+0];
+	vector[1]=xyz_list[1*3+1] - xyz_list[0*3+1];
+
+	norm=sqrt(vector[0]*vector[0] + vector[1]*vector[1]);
+
+	top_normal[0]= + vector[1]/norm;
+	top_normal[1]= - vector[0]/norm;
+	_assert_(top_normal[1]>0);
+}
+/*}}}*/
+int        Tria::ObjectEnum(void){/*{{{*/
+
+	return TriaEnum;
+
+}
+/*}}}*/
+int        Tria::NumberofNodesPressure(void){/*{{{*/
+	return TriaRef::NumberofNodes(this->PressureInterpolation());
+}
+/*}}}*/
+int        Tria::NumberofNodesVelocity(void){/*{{{*/
+	return TriaRef::NumberofNodes(this->VelocityInterpolation());
+}
+/*}}}*/
+void       Tria::PotentialUngrounding(Vector<IssmDouble>* potential_ungrounding){/*{{{*/
+
+	IssmDouble  h[NUMVERTICES],r[NUMVERTICES],gl[NUMVERTICES];
+	IssmDouble  bed_hydro;
+	IssmDouble  rho_water,rho_ice,density;
+
+	/*material parameters: */
+	rho_water=FindParam(MaterialsRhoSeawaterEnum);
+	rho_ice=FindParam(MaterialsRhoIceEnum);
+	density=rho_ice/rho_water;
+	Element::GetInputListOnVertices(&h[0],ThicknessEnum);
+	Element::GetInputListOnVertices(&r[0],BedEnum);
+	Element::GetInputListOnVertices(&gl[0],MaskOceanLevelsetEnum);
+
+	/*go through vertices, and figure out which ones are grounded and want to unground: */
+	for(int i=0;i<NUMVERTICES;i++){
+		/*Find if grounded vertices want to start floating*/
+		if (gl[i]>0.){
+			bed_hydro=-density*h[i];
+			if(bed_hydro>r[i]){
+				/*Vertex that could potentially unground, flag it*/
+				potential_ungrounding->SetValue(vertices[i]->Pid(),1,INS_VAL);
+			}
+		}
+	}
+}
+/*}}}*/
+int        Tria::PressureInterpolation(void){/*{{{*/
+	return TriaRef::PressureInterpolation(this->element_type);
+}
+/*}}}*/
+void       Tria::ReduceMatrices(ElementMatrix* Ke,ElementVector* pe){/*{{{*/
+
+	/*Static condensation if requested*/
+	if(pe){
+		if(this->element_type==MINIcondensedEnum){
+			int indices[2]={6,7};
+			pe->StaticCondensation(Ke,2,&indices[0]);
+		}
+		else if(this->element_type==P1bubblecondensedEnum){
+			int size   = nodes[3]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int offset = 0;
+			for(int i=0;i<3;i++) offset+=nodes[i]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int* indices=xNew<int>(size);
+			for(int i=0;i<size;i++) indices[i] = offset+i;
+			pe->StaticCondensation(Ke,size,indices);
+			xDelete<int>(indices);
+		}
+	}
+
+	if(Ke){
+		if(this->element_type==MINIcondensedEnum){
+			int indices[2]={6,7};
+			Ke->StaticCondensation(2,&indices[0]);
+		}
+		else if(this->element_type==P1bubblecondensedEnum){
+			int size   = nodes[3]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int offset = 0;
+			for(int i=0;i<3;i++) offset+=nodes[i]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int* indices=xNew<int>(size);
+			for(int i=0;i<size;i++) indices[i] = offset+i;
+			Ke->StaticCondensation(size,indices);
+			xDelete<int>(indices);
+		}
+	}
+
+}
+/*}}}*/
+void       Tria::ResetFSBasalBoundaryCondition(void){/*{{{*/
+
+	int numnodes = this->NumberofNodesVelocity();
+
+	int          approximation;
+	IssmDouble*  vertexonbase= NULL;
+	IssmDouble   slope,groundedice;
+	IssmDouble   xz_plane[6];
+
+	/*For FS only: we want the CS to be tangential to the bedrock*/
+	this->Element::GetInputValue(&approximation,ApproximationEnum);
+	if(!HasNodeOnBase() ||  approximation!=FSApproximationEnum) return;
+
+	/*Get inputs*/
+	Input* slope_input=this->GetInput(BedSlopeXEnum);                             _assert_(slope_input);
+	Input* groundedicelevelset_input=this->GetInput(MaskOceanLevelsetEnum); _assert_(groundedicelevelset_input);
+	vertexonbase = xNew<IssmDouble>(numnodes);
+	this->GetInputListOnNodesVelocity(&vertexonbase[0],MeshVertexonbaseEnum);
+
+	/*Loop over basal nodes and update their CS*/
+	GaussTria gauss;
+	for(int i=0;i<this->NumberofNodesVelocity();i++){
+
+		if(vertexonbase[i]==1){
+			gauss.GaussNode(this->VelocityInterpolation(),i);
+			slope_input->GetInputValue(&slope,&gauss);
+			groundedicelevelset_input->GetInputValue(&groundedice,&gauss);
+			IssmDouble theta = atan(slope);
+
+			/*New X axis                  New Z axis*/
+			xz_plane[0]=cos(theta);       xz_plane[3]=0.;
+			xz_plane[1]=sin(theta);       xz_plane[4]=0.;
+			xz_plane[2]=0.;               xz_plane[5]=1.;
+
+			if(groundedice>=0){
+				this->nodes[i]->DofInSSet(1); //vy
+			}
+			else{
+				this->nodes[i]->DofInFSet(1); //vy
+			}
+
+			XZvectorsToCoordinateSystem(&this->nodes[i]->coord_system[0][0],&xz_plane[0]);
+		}
+	}
+
+	/*cleanup*/
+	xDelete<IssmDouble>(vertexonbase);
+}
+/*}}}*/
+void       Tria::ResetHooks(){/*{{{*/
+
+	if(this->nodes) xDelete<Node*>(this->nodes);
+	this->nodes=NULL;
+	this->vertices=NULL;
+	this->material=NULL;
+	this->parameters=NULL;
+
+	//deal with ElementHook mother class
+	for(int i=0;i<this->numanalyses;i++) if(this->hnodes[i]) this->hnodes[i]->reset();
+	this->hvertices->reset();
+	if(this->hmaterial)this->hmaterial->reset();
+	if(this->hneighbors) this->hneighbors->reset();
+
+}
+/*}}}*/
+void       Tria::SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index,int offset,int M, int N){/*{{{*/
+
+	IssmDouble  values[NUMVERTICES];
+	int         lidlist[NUMVERTICES];
+
+	/*Get Domain type*/
+	int domaintype;
+	parameters->FindParam(&domaintype,DomainTypeEnum);
+
+	/*Specific case for depth averaged quantities*/
+	int control_init=control_enum;
+	if(domaintype==Domain2DverticalEnum){
+		if(control_enum==MaterialsRheologyBbarEnum){
+			control_enum=MaterialsRheologyBEnum;
+			if(!IsOnBase()) return;
+		}
+		if(control_enum==DamageDbarEnum){
+			control_enum=DamageDEnum;
+			if(!IsOnBase()) return;
+		}
+	}
+
+	/*Get list of ids for this element and this control*/
+	int* idlist = xNew<int>(NUMVERTICES*N);
+	GradientIndexing(&idlist[0],control_index);
+
+	ControlInput* control_input=this->inputs->GetControlInput(control_enum); _assert_(control_input);
+	this->GetVerticesLidList(&lidlist[0]);
+
+	if(control_input->layout_enum==TriaInputEnum){
+		ElementInput* input = control_input->GetInput("value"); _assert_(input);
+		if(input->GetInputInterpolationType()==P1Enum){
+			_assert_(N==1);
+			for(int i=0;i<NUMVERTICES;i++){
+				values[i] = vector[idlist[i]];
+			}
+			input->SetInput(P1Enum,NUMVERTICES,&lidlist[0],&values[0]);
+		}
+		else if(input->GetInputInterpolationType()==P0Enum){
+			_assert_(N==1);
+			input->SetInput(P0Enum,this->lid,vector[idlist[0]]);
+		}
+		else{
+			_error_("not implemented yet");
+		}
+	}
+	else if(control_input->layout_enum==TransientInputEnum){
+		_assert_(N>1);
+		TransientInput* input = control_input->GetTransientInput("value"); _assert_(input);
+
+		int count = 0;
+		for(int n=0;n<N;n++){
+			TriaInput* input_n = input->GetTriaInput(n); _assert_(input_n);
+			if(input_n->GetInputInterpolationType()==P1Enum){
+				for(int i=0;i<NUMVERTICES;i++){
+					values[i] = vector[idlist[count]];
+					count++;
+				}
+				input_n->SetInput(P1Enum,NUMVERTICES,&lidlist[0],&values[0]);
+			}
+			else if(input_n->GetInputInterpolationType()==P0Enum){
+				input_n->SetInput(P0Enum,this->lid,vector[idlist[count]]);
+				count++;
+			}
+			else{
+				_error_("not implemented yet");
+			}
+		}
+	}
+	else _error_("Type not supported");
+
+	/*Clean up*/
+	xDelete<int>(idlist);
+}
+/*}}}*/
+void       Tria::SetCurrentConfiguration(Elements* elementsin, Loads* loadsin, Nodes* nodesin, Materials* materialsin, Parameters* parametersin){/*{{{*/
+
+	/*go into parameters and get the analysis_counter: */
+	int analysis_counter;
+	parametersin->FindParam(&analysis_counter,AnalysisCounterEnum);
+
+	/*Get Element type*/
+	if(this->element_type_list) this->element_type=this->element_type_list[analysis_counter];
+
+	/*Pick up nodes*/
+	if(this->hnodes && this->hnodes[analysis_counter]){
+		this->nodes=(Node**)this->hnodes[analysis_counter]->deliverp();
+	}
+
+}
+/*}}}*/
+void       Tria::SetElementInput(int enum_in,IssmDouble value){/*{{{*/
+
+	this->SetElementInput(this->inputs,enum_in,value);
+
+}
+/*}}}*/
+void       Tria::SetElementInput(Inputs* inputs,int enum_in,IssmDouble value){/*{{{*/
+
+	_assert_(inputs);
+	inputs->SetTriaInput(enum_in,P0Enum,this->lid,value);
+
+}
+/*}}}*/
+void       Tria::SetElementInput(int enum_in,IssmDouble value,int type){/*{{{*/
+
+	if(type==P0Enum){
+		this->inputs->SetTriaInput(enum_in,P0Enum,this->lid,value);
+	}
+	else if(type==P1Enum){
+		IssmDouble values[3]; 
+		for(int i=0;i<3;i++)values[i]=value;
+		int lidlist[3];
+		this->GetVerticesLidList(&lidlist[0]);
+		this->inputs->SetTriaInput(enum_in,P1Enum,3,&lidlist[0],&values[0]);
+	}
+	else _error_("interpolation type not supported yet");
+}
+/*}}}*/
+void       Tria::SetElementInput(Inputs* inputs,int numindices,int* indices,IssmDouble* values,int enum_in){/*{{{*/
+
+	_assert_(inputs);
+	inputs->SetTriaInput(enum_in,P1Enum,numindices,indices,values);
+
+}
+/*}}}*/
+Element*   Tria::SpawnBasalElement(bool depthaverage_materials){/*{{{*/
+
+	int index1,index2;
+	int domaintype;
+
+	this->parameters->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+		case Domain3DsurfaceEnum:
+			return this;
+		case Domain2DverticalEnum:
+			_assert_(HasEdgeOnBase());
+			this->EdgeOnBaseIndices(&index1,&index2);
+			return SpawnSeg(index1,index2);
+		default:
+			_error_("not implemented yet");
+	}
+}
+/*}}}*/
+Seg*       Tria::SpawnSeg(int index1,int index2){/*{{{*/
+
+	int analysis_counter;
+
+	/*go into parameters and get the analysis_counter: */
+	this->parameters->FindParam(&analysis_counter,AnalysisCounterEnum);
+
+	/*Create Seg*/
+	Seg* seg=new Seg();
+	seg->id=this->id;
+	seg->sid=this->sid;
+	seg->lid=this->lid;
+	seg->inputs=this->inputs;
+	seg->parameters=this->parameters;
+	seg->element_type=P1Enum; //Only P1 CG for now (TO BE CHANGED)
+	this->SpawnSegHook(xDynamicCast<ElementHook*>(seg),index1,index2);
+
+	seg->iscollapsed = 1;
+	seg->collapsed_ids[0] = index1;
+	seg->collapsed_ids[1] = index2;
+
+	/*Spawn material*/
+	seg->material=(Material*)this->material->copy2(seg);
+
+	/*recover nodes, material*/
+	seg->nodes    = (Node**)seg->hnodes[analysis_counter]->deliverp();
+	seg->vertices = (Vertex**)seg->hvertices->deliverp();
+
+	/*Return new Seg*/
+	return seg;
+}
+/*}}}*/
+Element*   Tria::SpawnTopElement(void){/*{{{*/
+
+	int index1,index2;
+	int domaintype;
+
+	this->parameters->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			return this;
+		case Domain2DverticalEnum:
+			_assert_(HasEdgeOnSurface());
+			this->EdgeOnSurfaceIndices(&index1,&index2);
+			return SpawnSeg(index2,index1); //reverse order
+		default:
+			_error_("not implemented yet");
+	}
+}
+/*}}}*/
+bool       Tria::IsSpawnedElement(void){/*{{{*/
+
+	if(this->iscollapsed!=0){
+		return true;
+	}
+
+	return false;
+
+}/*}}}*/
+void       Tria::StrainRateparallel(){/*{{{*/
+
+	IssmDouble  epsilon[3];
+	IssmDouble  vx,vy,vel;
+	IssmDouble  strainxx;
+	IssmDouble  strainxy;
+	IssmDouble  strainyy;
+	IssmDouble  strainparallel[NUMVERTICES];
+
+	/* Get node coordinates and dof list: */
+   IssmDouble  xyz_list[NUMVERTICES][3];
+   ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs we will need*/
+	Input *vx_input = this->GetInput(VxEnum); _assert_(vx_input);
+	Input *vy_input = this->GetInput(VyEnum); _assert_(vy_input);
+
+	/* Start looping on the number of vertices: */
+	GaussTria gauss;
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/* Get the value we need*/
+		vx_input->GetInputValue(&vx,&gauss);
+		vy_input->GetInputValue(&vy,&gauss);
+		vel=vx*vx+vy*vy;
+
+		/*Compute strain rate viscosity and pressure: */
+		this->StrainRateSSA(&epsilon[0],&xyz_list[0][0],&gauss,vx_input,vy_input);
+		strainxx=epsilon[0];
+		strainyy=epsilon[1];
+		strainxy=epsilon[2];
+
+		/*strainparallel= Strain rate along the ice flow direction */
+		strainparallel[iv]=(vx*vx*(strainxx)+vy*vy*(strainyy)+2*vy*vx*strainxy)/(vel+1.e-14);
+	}
+
+	/*Add input*/
+	this->AddInput(StrainRateparallelEnum,&strainparallel[0],P1DGEnum);
+}
+/*}}}*/
+void       Tria::StrainRateperpendicular(){/*{{{*/
+
+	IssmDouble  epsilon[3];
+	IssmDouble  vx,vy,vel;
+	IssmDouble  strainxx;
+	IssmDouble  strainxy;
+	IssmDouble  strainyy;
+	IssmDouble  strainperpendicular[NUMVERTICES];
+
+	/* Get node coordinates and dof list: */
+   IssmDouble  xyz_list[NUMVERTICES][3];
+   ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Retrieve all inputs we will need*/
+	Input *vx_input = this->GetInput(VxEnum); _assert_(vx_input);
+	Input *vy_input = this->GetInput(VyEnum); _assert_(vy_input);
+
+	/* Start looping on the number of vertices: */
+	GaussTria gauss;
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss.GaussVertex(iv);
+
+		/* Get the value we need*/
+		vx_input->GetInputValue(&vx,&gauss);
+		vy_input->GetInputValue(&vy,&gauss);
+		vel=vx*vx+vy*vy;
+
+		/*Compute strain rate viscosity and pressure: */
+		this->StrainRateSSA(&epsilon[0],&xyz_list[0][0],&gauss,vx_input,vy_input);
+		strainxx=epsilon[0];
+		strainyy=epsilon[1];
+		strainxy=epsilon[2];
+
+		/*strainperpendicular= Strain rate perpendicular to the ice flow direction */
+		strainperpendicular[iv]=(vx*vx*(strainyy)+vy*vy*(strainxx)-2*vy*vx*strainxy)/(vel+1.e-14);
+	}
+
+	/*Add input*/
+	this->AddInput(StrainRateperpendicularEnum,&strainperpendicular[0],P1DGEnum);
+}
+/*}}}*/
+IssmDouble Tria::SurfaceArea(void){/*{{{*/
+
+	IssmDouble S;
+	IssmDouble normal[3];
+	IssmDouble v13[3],v23[3];
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*If on water, return 0: */
+	if(!IsIceInElement()) return 0.;
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	for(int i=0;i<3;i++){
+		v13[i]=xyz_list[0][i]-xyz_list[2][i];
+		v23[i]=xyz_list[1][i]-xyz_list[2][i];
+	}
+
+	normal[0]=v13[1]*v23[2]-v13[2]*v23[1];
+	normal[1]=v13[2]*v23[0]-v13[0]*v23[2];
+	normal[2]=v13[0]*v23[1]-v13[1]*v23[0];
+
+	S = 0.5 * sqrt(normal[0]*normal[0] + normal[1]*normal[1] + normal[2]*normal[2]);
+
+	/*Return: */
+	return S;
+}
+/*}}}*/
+int        Tria::TensorInterpolation(void){/*{{{*/
+	return TriaRef::TensorInterpolation(this->element_type);
+}
+/*}}}*/
+IssmDouble Tria::TimeAdapt(void){/*{{{*/
+
+	/*intermediary: */
+	bool       ishydro;
+	IssmDouble C;
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*get CFL coefficient:*/
+	this->parameters->FindParam(&C,TimesteppingCflCoefficientEnum);
+	this->parameters->FindParam(&ishydro,TransientIshydrologyEnum);
+
+	/*Get for Vx and Vy, the max of abs value: */
+	Input* vx_input = this->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input = this->GetInput(VyEnum); _assert_(vy_input);
+	IssmDouble maxabsvx = vx_input->GetInputMaxAbs();
+	IssmDouble maxabsvy = vy_input->GetInputMaxAbs();
+
+	/* Get node coordinates and dof list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	IssmDouble minx=xyz_list[0][0];
+	IssmDouble maxx=xyz_list[0][0];
+	IssmDouble miny=xyz_list[0][1];
+	IssmDouble maxy=xyz_list[0][1];
+
+	for(int i=1;i<NUMVERTICES;i++){
+		if(xyz_list[i][0]<minx) minx=xyz_list[i][0];
+		if(xyz_list[i][0]>maxx) maxx=xyz_list[i][0];
+		if(xyz_list[i][1]<miny) miny=xyz_list[i][1];
+		if(xyz_list[i][1]>maxy) maxy=xyz_list[i][1];
+	}
+	IssmDouble dx=maxx-minx;
+	IssmDouble dy=maxy-miny;
+
+	/*CFL criterion: */
+	IssmDouble dt = C/(maxabsvx/dx+maxabsvy/dy + 1.e-18);
+
+	/*Check hydro timestep also and take the minimum*/
+	if(ishydro){
+		Input* vx_input = this->GetInput(HydrologyWaterVxEnum);
+		Input* vy_input = this->GetInput(HydrologyWaterVyEnum);
+		IssmDouble maxabsvx = 0.03;
+		IssmDouble maxabsvy = 0.03;
+		if(vx_input) maxabsvx = vx_input->GetInputMaxAbs();
+		if(vy_input) maxabsvy = vy_input->GetInputMaxAbs();
+
+		/*CFL criterion: */
+		IssmDouble dt2 = C/(maxabsvx/dx+maxabsvy/dy + 1.e-18);
+		if(dt2<dt) dt = dt2;
+	}
+
+	return dt;
+}
+/*}}}*/
+IssmDouble Tria::TotalCalvingFluxLevelset(bool scaled){/*{{{*/
+
+	/*Make sure there is an ice front here*/
+	if(!IsIceInElement() || !IsZeroLevelset(MaskIceLevelsetEnum)) return 0;
+
+	/*Scaled not implemented yet...*/
+	_assert_(!scaled);
+
+	int               domaintype,index1,index2;
+	const IssmPDouble epsilon = 1.e-15;
+	IssmDouble        s1,s2;
+	IssmDouble        gl[NUMVERTICES];
+	IssmDouble        xyz_front[2][3];
+
+   IssmDouble  xyz_list[NUMVERTICES][3];
+   ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Recover parameters and values*/
+	parameters->FindParam(&domaintype,DomainTypeEnum);
+	Element::GetInputListOnVertices(&gl[0],MaskIceLevelsetEnum);
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+	if(domaintype==Domain2DverticalEnum){
+		_error_("not implemented");
+	}
+	else if(domaintype==Domain2DhorizontalEnum || domaintype==Domain3DEnum || domaintype==Domain3DsurfaceEnum){
+		int pt1 = 0;
+		int pt2 = 1;
+		if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+
+			/*Portion of the segments*/
+			s1=gl[2]/(gl[2]-gl[1]);
+			s2=gl[2]/(gl[2]-gl[0]);
+			if(gl[2]<0.){
+				pt1 = 1; pt2 = 0;
+			}
+			xyz_front[pt2][0]=xyz_list[2][0]+s1*(xyz_list[1][0]-xyz_list[2][0]);
+			xyz_front[pt2][1]=xyz_list[2][1]+s1*(xyz_list[1][1]-xyz_list[2][1]);
+			xyz_front[pt2][2]=xyz_list[2][2]+s1*(xyz_list[1][2]-xyz_list[2][2]);
+			xyz_front[pt1][0]=xyz_list[2][0]+s2*(xyz_list[0][0]-xyz_list[2][0]);
+			xyz_front[pt1][1]=xyz_list[2][1]+s2*(xyz_list[0][1]-xyz_list[2][1]);
+			xyz_front[pt1][2]=xyz_list[2][2]+s2*(xyz_list[0][2]-xyz_list[2][2]);
+		}
+		else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+
+			/*Portion of the segments*/
+			s1=gl[0]/(gl[0]-gl[1]);
+			s2=gl[0]/(gl[0]-gl[2]);
+			if(gl[0]<0.){
+				pt1 = 1; pt2 = 0;
+			}
+
+			xyz_front[pt1][0]=xyz_list[0][0]+s1*(xyz_list[1][0]-xyz_list[0][0]);
+			xyz_front[pt1][1]=xyz_list[0][1]+s1*(xyz_list[1][1]-xyz_list[0][1]);
+			xyz_front[pt1][2]=xyz_list[0][2]+s1*(xyz_list[1][2]-xyz_list[0][2]);
+			xyz_front[pt2][0]=xyz_list[0][0]+s2*(xyz_list[2][0]-xyz_list[0][0]);
+			xyz_front[pt2][1]=xyz_list[0][1]+s2*(xyz_list[2][1]-xyz_list[0][1]);
+			xyz_front[pt2][2]=xyz_list[0][2]+s2*(xyz_list[2][2]-xyz_list[0][2]);
+		}
+		else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+
+			/*Portion of the segments*/
+			s1=gl[1]/(gl[1]-gl[0]);
+			s2=gl[1]/(gl[1]-gl[2]);
+			if(gl[1]<0.){
+				pt1 = 1; pt2 = 0;
+			}
+
+			xyz_front[pt2][0]=xyz_list[1][0]+s1*(xyz_list[0][0]-xyz_list[1][0]);
+			xyz_front[pt2][1]=xyz_list[1][1]+s1*(xyz_list[0][1]-xyz_list[1][1]);
+			xyz_front[pt2][2]=xyz_list[1][2]+s1*(xyz_list[0][2]-xyz_list[1][2]);
+			xyz_front[pt1][0]=xyz_list[1][0]+s2*(xyz_list[2][0]-xyz_list[1][0]);
+			xyz_front[pt1][1]=xyz_list[1][1]+s2*(xyz_list[2][1]-xyz_list[1][1]);
+			xyz_front[pt1][2]=xyz_list[1][2]+s2*(xyz_list[2][2]-xyz_list[1][2]);
+		}
+		else{
+			_error_("case not possible");
+		}
+
+	}
+	else _error_("mesh type "<<EnumToStringx(domaintype)<<"not supported yet ");
+
+	/*Some checks in debugging mode*/
+	_assert_(s1>=0 && s1<=1.);
+	_assert_(s2>=0 && s2<=1.);
+
+	/*Get normal vector*/
+	IssmDouble normal[3];
+	this->NormalSection(&normal[0],&xyz_front[0][0]);
+	normal[0] = -normal[0];
+	normal[1] = -normal[1];
+
+	/*Get inputs*/
+	IssmDouble flux = 0.;
+	IssmDouble calvingratex,calvingratey,thickness,Jdet;
+	IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
+	Input* thickness_input    = this->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* calvingratex_input = this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+	Input* calvingratey_input = this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
+
+	/*Start looping on Gaussian points*/
+	Gauss* gauss=this->NewGauss(&xyz_list[0][0],&xyz_front[0][0],3);
+	while(gauss->next()){
+		thickness_input->GetInputValue(&thickness,gauss);
+		calvingratex_input->GetInputValue(&calvingratex,gauss);
+		calvingratey_input->GetInputValue(&calvingratey,gauss);
+		this->JacobianDeterminantSurface(&Jdet,&xyz_front[0][0],gauss);
+
+		flux += rho_ice*Jdet*gauss->weight*thickness*(calvingratex*normal[0] + calvingratey*normal[1]);
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	return flux;
+}
+/*}}}*/
+IssmDouble Tria::TotalCalvingMeltingFluxLevelset(bool scaled){/*{{{*/
+
+	/*Make sure there is an ice front here*/
+	if(!IsIceInElement() || !IsZeroLevelset(MaskIceLevelsetEnum)) return 0;
+
+	/*Scaled not implemented yet...*/
+	_assert_(!scaled);
+
+	int               domaintype,index1,index2;
+	const IssmPDouble epsilon = 1.e-15;
+	IssmDouble        s1,s2;
+	IssmDouble        gl[NUMVERTICES];
+	IssmDouble        xyz_front[2][3];
+
+   IssmDouble  xyz_list[NUMVERTICES][3];
+   ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*Recover parameters and values*/
+	parameters->FindParam(&domaintype,DomainTypeEnum);
+	Element::GetInputListOnVertices(&gl[0],MaskIceLevelsetEnum);
+
+	/*Be sure that values are not zero*/
+	if(gl[0]==0.) gl[0]=gl[0]+epsilon;
+	if(gl[1]==0.) gl[1]=gl[1]+epsilon;
+	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
+
+	if(domaintype==Domain2DverticalEnum){
+		_error_("not implemented");
+	}
+	else if(domaintype==Domain2DhorizontalEnum || domaintype==Domain3DEnum || domaintype==Domain3DsurfaceEnum){
+		int pt1 = 0;
+		int pt2 = 1;
+		if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
+
+			/*Portion of the segments*/
+			s1=gl[2]/(gl[2]-gl[1]);
+			s2=gl[2]/(gl[2]-gl[0]);
+			if(gl[2]<0.){
+				pt1 = 1; pt2 = 0;
+			}
+			xyz_front[pt2][0]=xyz_list[2][0]+s1*(xyz_list[1][0]-xyz_list[2][0]);
+			xyz_front[pt2][1]=xyz_list[2][1]+s1*(xyz_list[1][1]-xyz_list[2][1]);
+			xyz_front[pt2][2]=xyz_list[2][2]+s1*(xyz_list[1][2]-xyz_list[2][2]);
+			xyz_front[pt1][0]=xyz_list[2][0]+s2*(xyz_list[0][0]-xyz_list[2][0]);
+			xyz_front[pt1][1]=xyz_list[2][1]+s2*(xyz_list[0][1]-xyz_list[2][1]);
+			xyz_front[pt1][2]=xyz_list[2][2]+s2*(xyz_list[0][2]-xyz_list[2][2]);
+		}
+		else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
+
+			/*Portion of the segments*/
+			s1=gl[0]/(gl[0]-gl[1]);
+			s2=gl[0]/(gl[0]-gl[2]);
+			if(gl[0]<0.){
+				pt1 = 1; pt2 = 0;
+			}
+
+			xyz_front[pt1][0]=xyz_list[0][0]+s1*(xyz_list[1][0]-xyz_list[0][0]);
+			xyz_front[pt1][1]=xyz_list[0][1]+s1*(xyz_list[1][1]-xyz_list[0][1]);
+			xyz_front[pt1][2]=xyz_list[0][2]+s1*(xyz_list[1][2]-xyz_list[0][2]);
+			xyz_front[pt2][0]=xyz_list[0][0]+s2*(xyz_list[2][0]-xyz_list[0][0]);
+			xyz_front[pt2][1]=xyz_list[0][1]+s2*(xyz_list[2][1]-xyz_list[0][1]);
+			xyz_front[pt2][2]=xyz_list[0][2]+s2*(xyz_list[2][2]-xyz_list[0][2]);
+		}
+		else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
+
+			/*Portion of the segments*/
+			s1=gl[1]/(gl[1]-gl[0]);
+			s2=gl[1]/(gl[1]-gl[2]);
+			if(gl[1]<0.){
+				pt1 = 1; pt2 = 0;
+			}
+
+			xyz_front[pt2][0]=xyz_list[1][0]+s1*(xyz_list[0][0]-xyz_list[1][0]);
+			xyz_front[pt2][1]=xyz_list[1][1]+s1*(xyz_list[0][1]-xyz_list[1][1]);
+			xyz_front[pt2][2]=xyz_list[1][2]+s1*(xyz_list[0][2]-xyz_list[1][2]);
+			xyz_front[pt1][0]=xyz_list[1][0]+s2*(xyz_list[2][0]-xyz_list[1][0]);
+			xyz_front[pt1][1]=xyz_list[1][1]+s2*(xyz_list[2][1]-xyz_list[1][1]);
+			xyz_front[pt1][2]=xyz_list[1][2]+s2*(xyz_list[2][2]-xyz_list[1][2]);
+		}
+		else{
+			_error_("case not possible");
+		}
+
+	}
+	else _error_("mesh type "<<EnumToStringx(domaintype)<<"not supported yet ");
+
+	/*Some checks in debugging mode*/
+	_assert_(s1>=0 && s1<=1.);
+	_assert_(s2>=0 && s2<=1.);
+
+	/*Get normal vector*/
+	IssmDouble normal[3];
+	this->NormalSection(&normal[0],&xyz_front[0][0]);
+	normal[0] = -normal[0];
+	normal[1] = -normal[1];
+
+	/*Get inputs*/
+	IssmDouble flux = 0.;
+	IssmDouble calvingratex,calvingratey,vx,vy,vel,meltingrate,meltingratex,meltingratey,thickness,Jdet,groundedice;
+	IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
+	Input* thickness_input    = this->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input *gr_input           = this->GetInput(MaskOceanLevelsetEnum); _assert_(gr_input);
+	Input* calvingratex_input = this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+	Input* calvingratey_input = this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
+	Input* vx_input           = this->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input           = this->GetInput(VyEnum); _assert_(vy_input);
+	Input* meltingrate_input  = this->GetInput(CalvingMeltingrateEnum); _assert_(meltingrate_input);
+
+	/*Start looping on Gaussian points*/
+	Gauss* gauss=this->NewGauss(&xyz_list[0][0],&xyz_front[0][0],3);
+	while(gauss->next()){
+		thickness_input->GetInputValue(&thickness,gauss);
+		calvingratex_input->GetInputValue(&calvingratex,gauss);
+		calvingratey_input->GetInputValue(&calvingratey,gauss);
+		gr_input->GetInputValue(&groundedice,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vel=vx*vx+vy*vy;
+		meltingrate_input->GetInputValue(&meltingrate,gauss);
+		if(groundedice<0) meltingrate = 0.;
+		meltingratex=meltingrate*vx/(sqrt(vel)+1.e-14);
+		meltingratey=meltingrate*vy/(sqrt(vel)+1.e-14);
+		this->JacobianDeterminantSurface(&Jdet,&xyz_front[0][0],gauss);
+
+		flux += rho_ice*Jdet*gauss->weight*thickness*((calvingratex+meltingratex)*normal[0] + (calvingratey+meltingratey)*normal[1]);
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	return flux;
+}
+/*}}}*/
+IssmDouble Tria::TotalFloatingBmb(bool scaled){/*{{{*/
+
+	/*The fbmb[kg yr-1] of one element is area[m2] * melting_rate [kg m^-2 yr^-1]*/
+	int        point1;
+	bool       mainlyfloating;
+	IssmDouble fbmb=0;
+	IssmDouble rho_ice,fraction1,fraction2,floatingmelt,Jdet,scalefactor;
+	IssmDouble Total_Fbmb=0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	Gauss*     gauss     = NULL;
+
+   if(!IsIceInElement())return 0;
+
+	/*Get material parameters :*/
+	rho_ice=FindParam(MaterialsRhoIceEnum);
+	Input* floatingmelt_input = this->GetInput(BasalforcingsFloatingiceMeltingRateEnum); _assert_(floatingmelt_input);
+	Input* gllevelset_input   = this->GetInput(MaskOceanLevelsetEnum); _assert_(gllevelset_input);
+	Input* scalefactor_input  = NULL;
+	if(scaled==true){
+		scalefactor_input = this->GetInput(MeshScaleFactorEnum); _assert_(scalefactor_input);
+	}
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+	/* Start  looping on the number of gaussian points: */
+	gauss = this->NewGauss(point1,fraction1,fraction2,1-mainlyfloating,3);
+	while(gauss->next()){
+		this->JacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		floatingmelt_input->GetInputValue(&floatingmelt,gauss);
+		if(scaled==true){
+			scalefactor_input->GetInputValue(&scalefactor,gauss);
+		}
+		else scalefactor=1;
+		fbmb+=floatingmelt*Jdet*gauss->weight*scalefactor;
+	}
+
+   Total_Fbmb=rho_ice*fbmb;	        // from volume to mass
+
+	/*Return: */
+	delete gauss;
+	return Total_Fbmb;
+}
+/*}}}*/
+IssmDouble Tria::TotalGroundedBmb(bool scaled){/*{{{*/
+
+	/*The gbmb[kg yr-1] of one element is area[m2] * gounded melting rate [kg m^-2 yr^-1]*/
+	int        point1;
+	bool       mainlyfloating;
+	IssmDouble gbmb=0;
+	IssmDouble rho_ice,fraction1,fraction2,groundedmelt,Jdet,scalefactor;
+	IssmDouble Total_Gbmb=0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	Gauss*     gauss     = NULL;
+
+   if(!IsIceInElement())return 0;
+
+	/*Get material parameters :*/
+	rho_ice=FindParam(MaterialsRhoIceEnum);
+	Input* groundedmelt_input = this->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(groundedmelt_input);
+	Input* gllevelset_input = this->GetInput(MaskOceanLevelsetEnum); _assert_(gllevelset_input);
+	Input* scalefactor_input = NULL;
+	if(scaled==true){
+		scalefactor_input = this->GetInput(MeshScaleFactorEnum); _assert_(scalefactor_input);
+	}
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+	/* Start  looping on the number of gaussian points: */
+	gauss = this->NewGauss(point1,fraction1,fraction2,mainlyfloating,2);
+	while(gauss->next()){
+		this->JacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		groundedmelt_input->GetInputValue(&groundedmelt,gauss);
+		if(scaled==true){
+			scalefactor_input->GetInputValue(&scalefactor,gauss);
+		}
+		else scalefactor=1;
+		gbmb+=groundedmelt*Jdet*gauss->weight*scalefactor;
+	}
+
+   Total_Gbmb=rho_ice*gbmb;	        // from volume to mass
+
+	/*Return: */
+	delete gauss;
+	return Total_Gbmb;
+}
+/*}}}*/
+IssmDouble Tria::TotalSmb(bool scaled){/*{{{*/
+
+	/*The smb[kg yr-1] of one element is area[m2] * smb [kg m^-2 yr^-1]*/
+	IssmDouble base,smb,rho_ice,scalefactor;
+	IssmDouble Total_Smb=0;
+	IssmDouble lsf[NUMVERTICES];
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Get material parameters :*/
+	rho_ice=FindParam(MaterialsRhoIceEnum);
+
+   if(!IsIceInElement())return 0;
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*First calculate the area of the base (cross section triangle)
+	 * http://en.wikipedia.org/wiki/Triangle
+	 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/
+	base = 1./2. * fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));	// area of element in m2
+	
+	/*Now get the average SMB over the element*/
+	Element::GetInputListOnVertices(&lsf[0],MaskIceLevelsetEnum);
+	if(lsf[0]*lsf[1]<=0 || lsf[0]*lsf[2]<=0 || lsf[1]*lsf[2]<=0){
+		/*Partially ice-covered element*/
+		bool mainlyice;
+      int point;
+      IssmDouble* weights       = xNew<IssmDouble>(NUMVERTICES);
+      IssmDouble* smb_vertices  = xNew<IssmDouble>(NUMVERTICES);
+      IssmDouble f1,f2,phi;
+		
+		Element::GetInputListOnVertices(&smb_vertices[0],SmbMassBalanceEnum);
+		GetFractionGeometry(weights,&phi,&point,&f1,&f2,&mainlyice,lsf);
+		smb = 0.0;
+		for(int i=0;i<NUMVERTICES;i++) smb += weights[i]*smb_vertices[i];
+	
+		if(scaled==true){
+         IssmDouble* scalefactor_vertices = xNew<IssmDouble>(NUMVERTICES);
+         Element::GetInputListOnVertices(&scalefactor_vertices[0],MeshScaleFactorEnum);
+         scalefactor = 0.0;
+         for(int i=0;i<NUMVERTICES;i++) scalefactor += weights[i]/phi*scalefactor_vertices[i];
+         xDelete<IssmDouble>(scalefactor_vertices);
+      }
+		else scalefactor = 1.0;
+
+		/*Cleanup*/
+      xDelete<IssmDouble>(weights);
+      xDelete<IssmDouble>(smb_vertices);
+	}
+	else{
+		/*Fully ice-covered element*/
+		Input* smb_input = this->GetInput(SmbMassBalanceEnum); _assert_(smb_input);
+		smb_input->GetInputAverage(&smb);   // average smb on element in m ice s-1
+
+		if(scaled==true){
+			Input* scalefactor_input = this->GetInput(MeshScaleFactorEnum); _assert_(scalefactor_input);
+			scalefactor_input->GetInputAverage(&scalefactor);// average scalefactor on element
+		}
+		else scalefactor=1.0;
+	}
+	
+   Total_Smb=rho_ice*base*smb*scalefactor;	// smb on element in kg s-1
+
+	/*Return: */
+	return Total_Smb;
+}
+/*}}}*/
+IssmDouble Tria::TotalSmbMelt(bool scaled){/*{{{*/
+
+	/*The smbmelt[kg yr-1] of one element is area[m2] * smbmelt [kg m^-2 yr^-1]*/
+	IssmDouble base,smbmelt,rho_ice,scalefactor;
+	IssmDouble Total_Melt=0;
+	IssmDouble lsf[NUMVERTICES];
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Get material parameters :*/
+	rho_ice=FindParam(MaterialsRhoIceEnum);
+
+   if(!IsIceInElement())return 0;
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*First calculate the area of the base (cross section triangle)
+	 * http://en.wikipedia.org/wiki/Triangle
+	 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/
+	base = 1./2. * fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));	// area of element in m2
+	
+	/*Now get the average SMB over the element*/
+	Element::GetInputListOnVertices(&lsf[0],MaskIceLevelsetEnum);
+	if(lsf[0]*lsf[1]<=0 || lsf[0]*lsf[2]<=0 || lsf[1]*lsf[2]<=0){
+		/*Partially ice-covered element*/
+		bool mainlyice;
+      int point;
+      IssmDouble* weights       = xNew<IssmDouble>(NUMVERTICES);
+      IssmDouble* smbmelt_vertices  = xNew<IssmDouble>(NUMVERTICES);
+      IssmDouble f1,f2,phi;
+		
+		Element::GetInputListOnVertices(&smbmelt_vertices[0],SmbMeltEnum);
+		GetFractionGeometry(weights,&phi,&point,&f1,&f2,&mainlyice,lsf);
+		smbmelt = 0.0;
+		for(int i=0;i<NUMVERTICES;i++) smbmelt += weights[i]*smbmelt_vertices[i];
+	
+		if(scaled==true){
+         IssmDouble* scalefactor_vertices = xNew<IssmDouble>(NUMVERTICES);
+         Element::GetInputListOnVertices(&scalefactor_vertices[0],MeshScaleFactorEnum);
+         scalefactor = 0.0;
+         for(int i=0;i<NUMVERTICES;i++) scalefactor += weights[i]/phi*scalefactor_vertices[i];
+         xDelete<IssmDouble>(scalefactor_vertices);
+      }
+		else scalefactor = 1.0;
+
+		/*Cleanup*/
+      xDelete<IssmDouble>(weights);
+      xDelete<IssmDouble>(smbmelt_vertices);
+	}
+	else{
+		/*Fully ice-covered element*/
+		Input* smbmelt_input = this->GetInput(SmbMeltEnum); _assert_(smbmelt_input);
+		smbmelt_input->GetInputAverage(&smbmelt);   // average smbmelt on element in m ice s-1
+
+		if(scaled==true){
+			Input* scalefactor_input = this->GetInput(MeshScaleFactorEnum); _assert_(scalefactor_input);
+			scalefactor_input->GetInputAverage(&scalefactor);// average scalefactor on element
+		}
+		else scalefactor=1.0;
+	}
+	
+   Total_Melt=rho_ice*base*smbmelt*scalefactor;	// smbmelt on element in kg s-1
+
+	/*Return: */
+	return Total_Melt;
+}
+/*}}}*/
+IssmDouble Tria::TotalSmbRefreeze(bool scaled){/*{{{*/
+
+	/*The smb[kg yr-1] of one element is area[m2] * smb [kg m^-2 yr^-1]*/
+	IssmDouble base,smbrefreeze,rho_ice,scalefactor;
+	IssmDouble Total_Refreeze=0;
+	IssmDouble lsf[NUMVERTICES];
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Get material parameters :*/
+	rho_ice=FindParam(MaterialsRhoIceEnum);
+
+   if(!IsIceInElement())return 0;
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*First calculate the area of the base (cross section triangle)
+	 * http://en.wikipedia.org/wiki/Triangle
+	 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/
+	base = 1./2. * fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));	// area of element in m2
+	
+	/*Now get the average SMB over the element*/
+	Element::GetInputListOnVertices(&lsf[0],MaskIceLevelsetEnum);
+	if(lsf[0]*lsf[1]<=0 || lsf[0]*lsf[2]<=0 || lsf[1]*lsf[2]<=0){
+		/*Partially ice-covered element*/
+		bool mainlyice;
+      int point;
+      IssmDouble* weights       = xNew<IssmDouble>(NUMVERTICES);
+      IssmDouble* smbrefreeze_vertices  = xNew<IssmDouble>(NUMVERTICES);
+      IssmDouble f1,f2,phi;
+		
+		Element::GetInputListOnVertices(&smbrefreeze_vertices[0],SmbRefreezeEnum);
+		GetFractionGeometry(weights,&phi,&point,&f1,&f2,&mainlyice,lsf);
+		smbrefreeze = 0.0;
+		for(int i=0;i<NUMVERTICES;i++) smbrefreeze += weights[i]*smbrefreeze_vertices[i];
+	
+		if(scaled==true){
+         IssmDouble* scalefactor_vertices = xNew<IssmDouble>(NUMVERTICES);
+         Element::GetInputListOnVertices(&scalefactor_vertices[0],MeshScaleFactorEnum);
+         scalefactor = 0.0;
+         for(int i=0;i<NUMVERTICES;i++) scalefactor += weights[i]/phi*scalefactor_vertices[i];
+         xDelete<IssmDouble>(scalefactor_vertices);
+      }
+		else scalefactor = 1.0;
+
+		/*Cleanup*/
+      xDelete<IssmDouble>(weights);
+      xDelete<IssmDouble>(smbrefreeze_vertices);
+	}
+	else{
+		/*Fully ice-covered element*/
+		Input* smbrefreeze_input = this->GetInput(SmbRefreezeEnum); _assert_(smbrefreeze_input);
+		smbrefreeze_input->GetInputAverage(&smbrefreeze);   // average smbrefreeze on element in m ice s-1
+
+		if(scaled==true){
+			Input* scalefactor_input = this->GetInput(MeshScaleFactorEnum); _assert_(scalefactor_input);
+			scalefactor_input->GetInputAverage(&scalefactor);// average scalefactor on element
+		}
+		else scalefactor=1.0;
+	}
+	
+   Total_Refreeze=rho_ice*base*smbrefreeze*scalefactor;	// smbrefreeze on element in kg s-1
+
+	/*Return: */
+	return Total_Refreeze;
+}
+/*}}}*/
+void       Tria::Update(Inputs* inputs,int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finiteelement_type){/*{{{*/
+
+	/*Intermediaries*/
+	int  numnodes;
+	int* tria_node_ids = NULL;
+
+	/*Checks if debuging*/
+	_assert_(iomodel->elements);
+	_assert_(index==this->sid);
+
+	/*Recover element type*/
+	this->element_type_list[analysis_counter]=finiteelement_type;
+
+	/*Recover nodes ids needed to initialize the node hook.*/
+	switch(finiteelement_type){
+		case P0DGEnum:
+			numnodes        = 1;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]= index + 1;
+			break;
+		case P1Enum:
+			numnodes        = 3;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->elements[3*index+2];
+			break;
+		case P1DGEnum:
+			numnodes        = 3;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=3*index+1;
+			tria_node_ids[1]=3*index+2;
+			tria_node_ids[2]=3*index+3;
+			break;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			numnodes        = 4;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->elements[3*index+2];
+			tria_node_ids[3]=iomodel->numberofvertices+index+1;
+			break;
+		case P2Enum:
+			numnodes        = 6;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->elements[3*index+2];
+			tria_node_ids[3]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1;
+			tria_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1;
+			tria_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;
+			break;
+		case P2bubbleEnum: case P2bubblecondensedEnum:
+			numnodes        = 7;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->elements[3*index+2];
+			tria_node_ids[3]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1;
+			tria_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1;
+			tria_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;
+			tria_node_ids[6]=iomodel->numberofvertices+iomodel->numberofedges+index+1;
+			break;
+		case P1P1Enum: case P1P1GLSEnum:
+			numnodes        = 6;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->elements[3*index+2];
+
+			tria_node_ids[3]=iomodel->numberofvertices+iomodel->elements[3*index+0];
+			tria_node_ids[4]=iomodel->numberofvertices+iomodel->elements[3*index+1];
+			tria_node_ids[5]=iomodel->numberofvertices+iomodel->elements[3*index+2];
+			break;
+		case MINIEnum: case MINIcondensedEnum:
+			numnodes       = 7;
+			tria_node_ids  = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->elements[3*index+2];
+			tria_node_ids[3]=iomodel->numberofvertices+index+1;
+
+			tria_node_ids[4]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[3*index+0];
+			tria_node_ids[5]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[3*index+1];
+			tria_node_ids[6]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[3*index+2];
+			break;
+		case TaylorHoodEnum:
+		case XTaylorHoodEnum:
+			numnodes        = 9;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->elements[3*index+2];
+			tria_node_ids[3]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1;
+			tria_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1;
+			tria_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;
+
+			tria_node_ids[6]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[3*index+0];
+			tria_node_ids[7]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[3*index+1];
+			tria_node_ids[8]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[3*index+2];
+			break;
+		case LATaylorHoodEnum:
+			numnodes        = 6;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->elements[3*index+2];
+			tria_node_ids[3]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1;
+			tria_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1;
+			tria_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;
+			break;
+		case CrouzeixRaviartEnum:
+			numnodes        = 10;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->elements[3*index+2];
+			tria_node_ids[3]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1;
+			tria_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1;
+			tria_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;
+			tria_node_ids[6]=iomodel->numberofvertices+iomodel->numberofedges+index+1;
+
+			tria_node_ids[7]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+3*index+1;
+			tria_node_ids[8]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+3*index+2;
+			tria_node_ids[9]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+3*index+3;
+			break;
+		case LACrouzeixRaviartEnum:
+			numnodes        = 7;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->elements[3*index+2];
+			tria_node_ids[3]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+0]+1;
+			tria_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+1]+1;
+			tria_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*index+2]+1;
+			tria_node_ids[6]=iomodel->numberofvertices+iomodel->numberofedges+index+1;
+			break;
+		default:
+			_error_("Finite element "<<EnumToStringx(finiteelement_type)<<" not supported yet");
+	}
+
+	/*hooks: */
+	this->SetHookNodes(tria_node_ids,numnodes,analysis_counter); this->nodes=NULL;
+	xDelete<int>(tria_node_ids);
+}
+/*}}}*/
+void       Tria::UpdateConstraintsExtrudeFromBase(void){/*{{{*/
+
+	if(!HasNodeOnBase()) return;
+
+	int        extrusioninput;
+	IssmDouble value,isonbase;
+
+	this->parameters->FindParam(&extrusioninput,InputToExtrudeEnum);
+	Input* input = this->GetInput(extrusioninput);      _assert_(input);
+	Input* onbase = this->GetInput(MeshVertexonbaseEnum); _assert_(onbase);
+
+	GaussTria gauss;
+	for(int iv=0;iv<this->NumberofNodes(this->element_type);iv++){
+		gauss.GaussNode(this->element_type,iv);
+		onbase->GetInputValue(&isonbase,&gauss);
+		if(isonbase==1.){
+			input->GetInputValue(&value,&gauss);
+			this->nodes[iv]->ApplyConstraint(0,value);
+		}
+	}
+
+}
+/*}}}*/
+void       Tria::UpdateConstraintsExtrudeFromTop(void){/*{{{*/
+
+	if(!HasNodeOnSurface()) return;
+
+	int        extrusioninput;
+	IssmDouble value,isonsurface;
+
+	this->parameters->FindParam(&extrusioninput,InputToExtrudeEnum);
+	Input* input = this->GetInput(extrusioninput); _assert_(input);
+	Input* onsurf = this->GetInput(MeshVertexonsurfaceEnum); _assert_(onsurf);
+
+	GaussTria gauss;
+	for(int iv=0;iv<this->NumberofNodes(this->element_type);iv++){
+		gauss.GaussNode(this->element_type,iv);
+		onsurf->GetInputValue(&isonsurface,&gauss);
+		if(isonsurface==1.){
+			input->GetInputValue(&value,&gauss);
+			this->nodes[iv]->ApplyConstraint(0,value);
+		}
+	}
+}
+/*}}}*/
+int        Tria::UpdatePotentialUngrounding(IssmDouble* vertices_potentially_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf){/*{{{*/
+
+	int i;
+	int nflipped=0;
+
+	/*Go through nodes, and whoever is on the potential_ungrounding, ends up in nodes_on_iceshelf: */
+	for(i=0;i<3;i++){
+		if (reCast<bool>(vertices_potentially_ungrounding[vertices[i]->Pid()])){
+			vec_nodes_on_iceshelf->SetValue(vertices[i]->Pid(),-1.,INS_VAL);
+
+			/*If node was not on ice shelf, we flipped*/
+			if(nodes_on_iceshelf[vertices[i]->Pid()]>=0.){
+				nflipped++;
+			}
+		}
+	}
+	return nflipped;
+}
+/*}}}*/
+void       Tria::ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	TriaRef::GetInputDerivativeValue(dvalue,values,xyz_list,gauss,P1Enum);
+}
+/*}}}*/
+void       Tria::ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss){/*{{{*/
+	TriaRef::GetInputValue(pvalue,values,gauss,P1Enum);
+}
+/*}}}*/
+int        Tria::VelocityInterpolation(void){/*{{{*/
+	return TriaRef::VelocityInterpolation(this->element_type);
+}
+/*}}}*/
+int        Tria::VertexConnectivity(int vertexindex){/*{{{*/
+	_assert_(this->vertices);
+	return this->vertices[vertexindex]->Connectivity();
+}
+/*}}}*/
+void       Tria::WriteFieldIsovalueSegment(DataSet* segments,int fieldenum,IssmDouble fieldvalue){/*{{{*/
+
+	_assert_(fieldvalue==0.); //field value != 0 not implemented yet
+
+	/*Get field on vertices (we do not allow for higher order elements!!)*/
+	IssmDouble lsf[NUMVERTICES];
+	Element::GetInputListOnVertices(&lsf[0],fieldenum);
+
+	/*1. check that we do cross fieldvalue in this element*/
+	IssmDouble minvalue = lsf[0];
+	IssmDouble maxvalue = lsf[0];
+	for(int i=1;i<NUMVERTICES;i++){
+		if(lsf[i]>maxvalue) maxvalue = lsf[i];
+		if(lsf[i]<minvalue) minvalue = lsf[i];
+	}
+	if(minvalue>fieldvalue) return;
+	if(maxvalue<fieldvalue) return;
+
+	/*2. Find coordinates of where levelset crosses 0*/
+	int         numiceverts;
+	IssmDouble  s[2],x[2],y[2];
+	int        *indices = NULL;
+	this->GetLevelsetIntersection(&indices, &numiceverts,&s[0],fieldenum,fieldvalue);
+	_assert_(numiceverts);
+
+	/*3 Write coordinates*/
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],this->vertices,NUMVERTICES);
+	int counter = 0;
+	if((numiceverts>0) && (numiceverts<NUMVERTICES)){
+		for(int i=0;i<numiceverts;i++){
+			for(int n=numiceverts;n<NUMVERTICES;n++){ // iterate over no-ice vertices
+				x[counter] = xyz_list[indices[i]][0]+s[counter]*(xyz_list[indices[n]][0]-xyz_list[indices[i]][0]);
+				y[counter] = xyz_list[indices[i]][1]+s[counter]*(xyz_list[indices[n]][1]-xyz_list[indices[i]][1]);
+				counter++;
+			}
+		}
+	}
+	else if(numiceverts==NUMVERTICES){ //NUMVERTICES ice vertices: calving front lies on element edge
+
+		for(int i=0;i<NUMVERTICES;i++){
+			if(lsf[indices[i]]==0.){
+				x[counter]=xyz_list[indices[i]][0];
+				y[counter]=xyz_list[indices[i]][1];
+				counter++;
+			}
+			if(counter==2) break;
+		}
+		if(counter==1){
+			/*We actually have only 1 vertex on levelset, write a single point as a segment*/
+			x[counter]=x[0];
+			y[counter]=y[0];
+			counter++;
+		}
+	}
+	else{
+		_error_("not sure what's going on here...");
+	}
+
+	/*4. Write segment*/
+	_assert_(counter==2);
+	segments->AddObject(new Contour<IssmDouble>(segments->Size()+1,2,&x[0],&y[0],false));
+
+	/*Cleanup and return*/
+	xDelete<int>(indices);
+}
+/*}}}*/
+
+#ifdef _HAVE_ESA_
+void    Tria::EsaGeodetic2D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,Vector<IssmDouble>* pX,Vector<IssmDouble>* pY,IssmDouble* xx,IssmDouble* yy){ /*{{{*/
+
+	/*diverse:*/
+	int gsize;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble area;
+	IssmDouble earth_radius = 6371012.0;	// Earth's radius [m]
+	IssmDouble I;		//ice/water loading
+	IssmDouble rho_ice, rho_earth;
+
+	/*precomputed elastic green functions:*/
+	IssmDouble* U_elastic_precomputed = NULL;
+	IssmDouble* H_elastic_precomputed = NULL;
+	int         M, hemi;
+
+	/*computation of Green functions:*/
+	IssmDouble* U_elastic= NULL;
+	IssmDouble* N_elastic= NULL;
+	IssmDouble* E_elastic= NULL;
+	IssmDouble* X_elastic= NULL;
+	IssmDouble* Y_elastic= NULL;
+
+	/*optimization:*/
+	bool store_green_functions=false;
+
+	/*Compute ice thickness change: */
+	Input* deltathickness_input=this->GetInput(DeltaIceThicknessEnum);
+	if (!deltathickness_input)_error_("delta thickness input needed to compute elastic adjustment!");
+	deltathickness_input->GetInputAverage(&I);
+
+	/*early return if we are not on the (ice) loading point: */
+	if(I==0) return;
+
+	/*recover material parameters: */
+	rho_ice=FindParam(MaterialsRhoIceEnum);
+	rho_earth=FindParam(MaterialsEarthDensityEnum);
+
+	/*how many dofs are we working with here? */
+	this->parameters->FindParam(&gsize,MeshNumberofverticesEnum);
+
+	/*which hemisphere? for north-south, east-west components*/
+	this->parameters->FindParam(&hemi,EsaHemisphereEnum);
+
+	/*compute area of element:*/
+	area=GetArea();
+
+	/*figure out gravity center of our element (Cartesian): */
+	IssmDouble x_element, y_element;
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	x_element=(xyz_list[0][0]+xyz_list[1][0]+xyz_list[2][0])/3.0;
+	y_element=(xyz_list[0][1]+xyz_list[1][1]+xyz_list[2][1])/3.0;
+
+	/*recover elastic Green's functions for displacement:*/
+	DoubleVecParam* U_parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(EsaUElasticEnum)); _assert_(U_parameter);
+	DoubleVecParam* H_parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(EsaHElasticEnum)); _assert_(H_parameter);
+	U_parameter->GetParameterValueByPointer(&U_elastic_precomputed,&M);
+	H_parameter->GetParameterValueByPointer(&H_elastic_precomputed,&M);
+
+	/*initialize: */
+	U_elastic=xNewZeroInit<IssmDouble>(gsize);
+	N_elastic=xNewZeroInit<IssmDouble>(gsize);
+	E_elastic=xNewZeroInit<IssmDouble>(gsize);
+	X_elastic=xNewZeroInit<IssmDouble>(gsize);
+	Y_elastic=xNewZeroInit<IssmDouble>(gsize);
+
+	int* indices=xNew<int>(gsize);
+	IssmDouble* U_values=xNewZeroInit<IssmDouble>(gsize);
+	IssmDouble* N_values=xNewZeroInit<IssmDouble>(gsize);
+	IssmDouble* E_values=xNewZeroInit<IssmDouble>(gsize);
+	IssmDouble* X_values=xNewZeroInit<IssmDouble>(gsize);
+	IssmDouble* Y_values=xNewZeroInit<IssmDouble>(gsize);
+	IssmDouble dx, dy, dist, alpha, ang, ang2;
+	IssmDouble N_azim, E_azim, X_azim, Y_azim;
+
+	for(int i=0;i<gsize;i++){
+
+		indices[i]=i;
+
+		IssmDouble N_azim=0;
+		IssmDouble E_azim=0;
+
+		/*Compute alpha angle between centroid and current vertex: */
+		dx = x_element - xx[i];		dy = y_element - yy[i];
+		dist = sqrt(pow(dx,2)+pow(dy,2));						// distance between vertex and elemental centroid [m]
+		alpha = dist*360.0/(2*M_PI*earth_radius) * M_PI/180.0;	// [in radians] 360 degree = 2*pi*earth_radius
+
+		/*Compute azimuths, both north and east components: */
+		ang = M_PI/2 - atan2(dy,dx);		// this is bearing angle!
+		Y_azim = cos(ang);
+		X_azim = sin(ang);
+
+		/*Elastic component  (from Eq 17 in Adhikari et al, GMD 2015): */
+		int index=reCast<int,IssmDouble>(alpha/M_PI*(M-1));
+		U_elastic[i] += U_elastic_precomputed[index];
+		Y_elastic[i] += H_elastic_precomputed[index]*Y_azim;
+		X_elastic[i] += H_elastic_precomputed[index]*X_azim;
+
+		/*Add all components to the pUp solution vectors:*/
+		U_values[i]+=3*rho_ice/rho_earth*area/(4*M_PI*pow(earth_radius,2))*I*U_elastic[i];
+		Y_values[i]+=3*rho_ice/rho_earth*area/(4*M_PI*pow(earth_radius,2))*I*Y_elastic[i];
+		X_values[i]+=3*rho_ice/rho_earth*area/(4*M_PI*pow(earth_radius,2))*I*X_elastic[i];
+
+		/*North-south, East-west components */
+		if (hemi == -1) {
+			ang2 = M_PI/2 - atan2(yy[i],xx[i]);
+		}
+		else if (hemi == 1) {
+			ang2 = M_PI/2 - atan2(-yy[i],-xx[i]);
+		}
+		if (hemi != 0){
+			N_azim = Y_azim*cos(ang2) + X_azim*sin(ang2);
+			E_azim = X_azim*cos(ang2) - Y_azim*sin(ang2);
+			N_elastic[i] += H_elastic_precomputed[index]*N_azim;
+			E_elastic[i] += H_elastic_precomputed[index]*E_azim;
+			N_values[i]+=3*rho_ice/rho_earth*area/(4*M_PI*pow(earth_radius,2))*I*N_elastic[i];
+			E_values[i]+=3*rho_ice/rho_earth*area/(4*M_PI*pow(earth_radius,2))*I*E_elastic[i];
+		}
+	}
+
+	pUp->SetValues(gsize,indices,U_values,ADD_VAL);
+	pNorth->SetValues(gsize,indices,N_values,ADD_VAL);
+	pEast->SetValues(gsize,indices,E_values,ADD_VAL);
+	pX->SetValues(gsize,indices,X_values,ADD_VAL);
+	pY->SetValues(gsize,indices,Y_values,ADD_VAL);
+
+	/*Free resources:*/
+	xDelete<int>(indices);
+	xDelete<IssmDouble>(U_values); xDelete<IssmDouble>(N_values); xDelete<IssmDouble>(E_values);
+	xDelete<IssmDouble>(U_elastic); xDelete<IssmDouble>(N_elastic); xDelete<IssmDouble>(E_elastic);
+	xDelete<IssmDouble>(X_values); xDelete<IssmDouble>(Y_values);
+	xDelete<IssmDouble>(X_elastic); xDelete<IssmDouble>(Y_elastic);
+
+	return;
+}
+/*}}}*/
+void    Tria::EsaGeodetic3D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz){ /*{{{*/
+
+	/*diverse:*/
+	int gsize;
+	bool spherical=true;
+	IssmDouble llr_list[NUMVERTICES][3];
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble area,planetarea;
+	IssmDouble I;		//ice/water loading
+	IssmDouble late,longe,re;
+	IssmDouble lati,longi,ri;
+	IssmDouble rho_ice,rho_earth;
+	IssmDouble minlong=400;
+	IssmDouble maxlong=-20;
+
+	/*precomputed elastic green functions:*/
+	IssmDouble* U_elastic_precomputed = NULL;
+	IssmDouble* H_elastic_precomputed = NULL;
+	int         M;
+
+	/*computation of Green functions:*/
+	IssmDouble* U_elastic= NULL;
+	IssmDouble* N_elastic= NULL;
+	IssmDouble* E_elastic= NULL;
+
+	/*optimization:*/
+	bool store_green_functions=false;
+
+	/*Compute ice thickness change: */
+	Input* deltathickness_input=this->GetInput(DeltaIceThicknessEnum);
+	if (!deltathickness_input)_error_("delta thickness input needed to compute elastic adjustment!");
+	deltathickness_input->GetInputAverage(&I);
+
+	/*early return if we are not on the (ice) loading point: */
+	if(I==0) return;
+
+	/*recover material parameters: */
+	rho_ice=FindParam(MaterialsRhoIceEnum);
+	rho_earth=FindParam(MaterialsEarthDensityEnum);
+
+	/*recover earth area: */
+	this->parameters->FindParam(&planetarea,SolidearthPlanetAreaEnum);
+
+	/*how many dofs are we working with here? */
+	this->parameters->FindParam(&gsize,MeshNumberofverticesEnum);
+
+	/*Get area of element: precomputed in the sealevelchange_geometry:*/
+	area=GetAreaSpherical();
+
+	/*element centroid (spherical): */
+	/* Where is the centroid of this element?:{{{*/
+	::GetVerticesCoordinates(&llr_list[0][0],this->vertices,NUMVERTICES,spherical);
+
+	minlong=400; maxlong=-20;
+	for (int i=0;i<NUMVERTICES;i++){
+		llr_list[i][0]=(90-llr_list[i][0]);
+		if(llr_list[i][1]<0)llr_list[i][1]=180+(180+llr_list[i][1]);
+		if(llr_list[i][1]>maxlong)maxlong=llr_list[i][1];
+		if(llr_list[i][1]<minlong)minlong=llr_list[i][1];
+	}
+	if(minlong==0 && maxlong>180){
+		if (llr_list[0][1]==0)llr_list[0][1]=360;
+		if (llr_list[1][1]==0)llr_list[1][1]=360;
+		if (llr_list[2][1]==0)llr_list[2][1]=360;
+	}
+
+	// correction at the north pole: given longitude of the North pole a definition
+	// closer to the other two vertices.
+	if(llr_list[0][0]==0)llr_list[0][1]=(llr_list[1][1]+llr_list[2][1])/2.0;
+	if(llr_list[1][0]==0)llr_list[1][1]=(llr_list[0][1]+llr_list[2][1])/2.0;
+	if(llr_list[2][0]==0)llr_list[2][1]=(llr_list[0][1]+llr_list[1][1])/2.0;
+
+	// correction at the north pole: given longitude of the North pole a definition
+	// closer to the other two vertices.
+	if(llr_list[0][0]==180)llr_list[0][1]=(llr_list[1][1]+llr_list[2][1])/2.0;
+	if(llr_list[1][0]==180)llr_list[1][1]=(llr_list[0][1]+llr_list[2][1])/2.0;
+	if(llr_list[2][0]==180)llr_list[2][1]=(llr_list[0][1]+llr_list[1][1])/2.0;
+
+	late=(llr_list[0][0]+llr_list[1][0]+llr_list[2][0])/3.0;
+	longe=(llr_list[0][1]+llr_list[1][1]+llr_list[2][1])/3.0;
+
+	late=90-late;
+	if(longe>180)longe=longe-360;
+
+	late=late/180.*M_PI;
+	longe=longe/180.*M_PI;
+	/*}}}*/
+
+	/*figure out gravity center of our element (Cartesian): */
+	IssmDouble x_element, y_element, z_element;
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	x_element=(xyz_list[0][0]+xyz_list[1][0]+xyz_list[2][0])/3.0;
+	y_element=(xyz_list[0][1]+xyz_list[1][1]+xyz_list[2][1])/3.0;
+	z_element=(xyz_list[0][2]+xyz_list[1][2]+xyz_list[2][2])/3.0;
+
+	/*recover elastic Green's functions for displacement:*/
+	DoubleVecParam* U_parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(EsaUElasticEnum)); _assert_(U_parameter);
+	DoubleVecParam* H_parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(EsaHElasticEnum)); _assert_(H_parameter);
+	U_parameter->GetParameterValueByPointer(&U_elastic_precomputed,&M);
+	H_parameter->GetParameterValueByPointer(&H_elastic_precomputed,&M);
+
+	/*initialize: */
+	U_elastic=xNewZeroInit<IssmDouble>(gsize);
+	N_elastic=xNewZeroInit<IssmDouble>(gsize);
+	E_elastic=xNewZeroInit<IssmDouble>(gsize);
+
+	int* indices=xNew<int>(gsize);
+	IssmDouble* U_values=xNewZeroInit<IssmDouble>(gsize);
+	IssmDouble* N_values=xNewZeroInit<IssmDouble>(gsize);
+	IssmDouble* E_values=xNewZeroInit<IssmDouble>(gsize);
+	IssmDouble alpha;
+	IssmDouble delPhi,delLambda;
+	IssmDouble dx, dy, dz, x, y, z;
+	IssmDouble N_azim, E_azim;
+
+	for(int i=0;i<gsize;i++){
+
+		indices[i]=i;
+
+		/*Compute alpha angle between centroid and current vertex: */
+		lati=latitude[i]/180.*M_PI; longi=longitude[i]/180.*M_PI;
+
+		delPhi=fabs(lati-late); delLambda=fabs(longi-longe);
+		alpha=2.*asin(sqrt(pow(sin(delPhi/2),2.0)+cos(lati)*cos(late)*pow(sin(delLambda/2),2)));
+
+		/*Compute azimuths, both north and east components: */
+		x = xx[i]; y = yy[i]; z = zz[i];
+		if(latitude[i]==90){
+			x=1e-12; y=1e-12;
+		}
+		if(latitude[i]==-90){
+			x=1e-12; y=1e-12;
+		}
+		dx = x_element-x; dy = y_element-y; dz = z_element-z;
+		N_azim = (-z*x*dx-z*y*dy+(pow(x,2)+pow(y,2))*dz) /pow((pow(x,2)+pow(y,2))*(pow(x,2)+pow(y,2)+pow(z,2))*(pow(dx,2)+pow(dy,2)+pow(dz,2)),0.5);
+		E_azim = (-y*dx+x*dy) /pow((pow(x,2)+pow(y,2))*(pow(dx,2)+pow(dy,2)+pow(dz,2)),0.5);
+
+		/*Elastic component  (from Eq 17 in Adhikari et al, GMD 2015): */
+		int index=reCast<int,IssmDouble>(alpha/M_PI*(M-1));
+		U_elastic[i] += U_elastic_precomputed[index];
+		N_elastic[i] += H_elastic_precomputed[index]*N_azim;
+		E_elastic[i] += H_elastic_precomputed[index]*E_azim;
+
+		/*Add all components to the pUp solution vectors:*/
+		U_values[i]+=3*rho_ice/rho_earth*area/planetarea*I*U_elastic[i];
+		N_values[i]+=3*rho_ice/rho_earth*area/planetarea*I*N_elastic[i];
+		E_values[i]+=3*rho_ice/rho_earth*area/planetarea*I*E_elastic[i];
+	}
+	pUp->SetValues(gsize,indices,U_values,ADD_VAL);
+	pNorth->SetValues(gsize,indices,N_values,ADD_VAL);
+	pEast->SetValues(gsize,indices,E_values,ADD_VAL);
+
+	/*Free resources:*/
+	xDelete<int>(indices);
+	xDelete<IssmDouble>(U_values); xDelete<IssmDouble>(N_values); xDelete<IssmDouble>(E_values);
+	xDelete<IssmDouble>(U_elastic); xDelete<IssmDouble>(N_elastic); xDelete<IssmDouble>(E_elastic);
+
+	return;
+}
+/*}}}*/
+#endif
+#ifdef _HAVE_SEALEVELCHANGE_
+void       Tria::GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt, Matlitho* litho, IssmDouble* x, IssmDouble* y){/*{{{*/
+
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*gia solution parameters:*/
+	IssmDouble ice_mask;
+
+	/*output: */
+	IssmDouble  wi;
+	IssmDouble  dwidt;
+
+	/*arguments to GiaDeflectionCorex: */
+	GiaDeflectionCoreArgs arguments;
+
+	/*how many dofs are we working with here? */
+	int gsize;
+	IssmDouble yts;
+	this->parameters->FindParam(&gsize,MeshNumberofverticesEnum);
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+
+	/*recover gia solution parameters: */
+	int cross_section_shape;
+	this->parameters->FindParam(&cross_section_shape,SolidearthSettingsCrossSectionShapeEnum);
+
+	/*what time is it? :*/
+	IssmDouble currenttime;
+	this->parameters->FindParam(&currenttime,TimeEnum);
+
+	/*recover material parameters: */
+	IssmDouble rho_ice                   = FindParam(MaterialsRhoIceEnum);
+
+	/*recover mantle and lithosphere material properties:*/
+	int numlayers=litho->numlayers;
+
+	/*lithosphere is the last layer, mantle is the penultimate layer. Watch out, radius represents the layers 
+	 *from center to surface of the Earth:*/
+	IssmDouble lithosphere_thickness = litho->radius[numlayers] - litho->radius[numlayers-1];
+	IssmDouble lithosphere_shear_modulus = litho->lame_mu[numlayers-1];
+	IssmDouble lithosphere_density = litho->density[numlayers-1];
+	IssmDouble mantle_shear_modulus = litho->lame_mu[numlayers-2];
+	IssmDouble mantle_density = litho->density[numlayers-2];
+	IssmDouble mantle_viscosity = litho->viscosity[numlayers-2];
+
+	/*early return if we are NOT on an icy element:*/
+	if(!IsIceInElement()) return;
+
+	/*pull thickness averages! */
+	IssmDouble *hes      = NULL;
+	IssmDouble *times    = NULL;
+	int         numtimes;
+	this->GetInputAveragesUpToCurrentTime(TransientAccumulatedDeltaIceThicknessEnum,&hes,&times,&numtimes,currenttime);
+
+	/*pull area of this Tria: */
+	IssmDouble area=this->GetArea();
+
+	/*element radius: */
+	IssmDouble re=sqrt(area/M_PI);
+
+	/*figure out gravity center of our element: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	IssmDouble x0=(xyz_list[0][0]+xyz_list[1][0]+xyz_list[2][0])/3.0;
+	IssmDouble y0=(xyz_list[0][1]+xyz_list[1][1]+xyz_list[2][1])/3.0;
+
+	/*start loading GiaDeflectionCore arguments: */
+	arguments.re=re;
+	arguments.hes=hes;
+	arguments.times=times;
+	arguments.numtimes=numtimes;
+	arguments.currenttime=currenttime;
+	arguments.lithosphere_shear_modulus=lithosphere_shear_modulus;
+	arguments.lithosphere_density=lithosphere_density;
+	arguments.mantle_shear_modulus=mantle_shear_modulus;
+	arguments.mantle_viscosity=mantle_viscosity;
+	arguments.mantle_density=mantle_density;
+	arguments.lithosphere_thickness=lithosphere_thickness;
+	arguments.rho_ice=rho_ice;
+	arguments.idisk=this->id;
+	arguments.iedge=cross_section_shape;
+	arguments.yts=yts;
+
+	for(int i=0;i<gsize;i++){
+		/*compute distance from the center of the tria to the vertex i: */
+		IssmDouble xi=x[i];
+		IssmDouble yi=y[i];
+		IssmDouble ri=sqrt(pow(xi-x0,2)+pow(yi-y0,2));
+
+		/*load ri onto arguments for this vertex i: */
+		arguments.ri=ri;
+
+		/*for this Tria, compute contribution to rebound at vertex i: */
+		GiaDeflectionCorex(&wi,&dwidt,&arguments);
+
+		/*plug value into solution vector: */
+		wg->SetValue(i,wi,ADD_VAL);
+		dwgdt->SetValue(i,dwidt,ADD_VAL);
+	}
+
+	/*Free resources: */
+	xDelete<IssmDouble>(hes);
+	xDelete<IssmDouble>(times);
+
+	return;
+}
+/*}}}*/
+void       Tria::SealevelchangeGeometryInitial(IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae, int* lids, int* n_activevertices){ /*{{{*/
+
+	/*Declarations:{{{*/
+	int nel;
+	IssmDouble area,planetarea,planetradius;
+	IssmDouble constant,ratioe;
+	IssmDouble rho_earth;
+	IssmDouble NewtonG;
+	IssmDouble g, cent_scaling;
+	IssmDouble lati,longi;
+	IssmDouble latitude[NUMVERTICES];
+	IssmDouble longitude[NUMVERTICES];
+	IssmDouble x,y,z,dx,dy,dz,N_azim,E_azim;
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*viscous stacks:*/
+	IssmDouble* viscousRSL = NULL;
+	IssmDouble* viscousU = NULL;
+	IssmDouble* viscousN = NULL;
+	IssmDouble* viscousE = NULL;
+
+	#ifdef _HAVE_RESTRICT_
+	IssmDouble* __restrict__ G_gravi_precomputed=NULL;
+	#else
+	IssmDouble* G_gravi_precomputed=NULL;
+	#endif
+
+	/*viscoelastic green function:*/
+	int index;
+	int M;
+	IssmDouble degacc;
+	IssmDouble doubleindex,lincoef;
+
+	/*Computational flags:*/
+	bool computeselfattraction = false;
+	bool computeelastic = false;
+	bool computerotation = false;
+	bool computeviscous = false;
+	int  horiz;
+	bool istime=true;
+	IssmDouble timeacc=0.;
+	IssmDouble start_time,final_time;
+	int  nt,precomputednt;
+	int grd, grdmodel;
+
+	/*Rotational:*/
+	#ifdef _HAVE_RESTRICT_
+	IssmDouble* __restrict__ Grot=NULL;
+	IssmDouble* __restrict__ GUrot=NULL;
+	IssmDouble* __restrict__ GNrot=NULL;
+	IssmDouble* __restrict__ GErot=NULL;
+	IssmDouble* __restrict__ tide_love_h  = NULL;
+	IssmDouble* __restrict__ tide_love_k  = NULL;
+	IssmDouble* __restrict__ tide_love_l  = NULL;
+	IssmDouble* __restrict__ LoveRotRSL   = NULL;
+	IssmDouble* __restrict__ LoveRotU     = NULL;
+	IssmDouble* __restrict__ LoveRothoriz = NULL;
+	int* __restrict__ AplhaIndex   = NULL;
+	int* __restrict__ AzimuthIndex = NULL;
+	#else
+	IssmDouble* Grot=NULL;
+	IssmDouble* GUrot=NULL;
+	IssmDouble* GNrot=NULL;
+	IssmDouble* GErot=NULL;
+	IssmDouble* tide_love_h  = NULL;
+	IssmDouble* tide_love_k  = NULL;
+	IssmDouble* tide_love_l  = NULL;
+	IssmDouble* LoveRotRSL   = NULL;
+	IssmDouble* LoveRotU     = NULL;
+	IssmDouble* LoveRothoriz = NULL;
+	int* AlphaIndex   = NULL;
+	int* AzimuthIndex = NULL;
+	#endif
+
+	IssmDouble  moi_e, moi_p, omega;
+	IssmDouble  Y21cos     , Y21sin     , Y20;
+	IssmDouble dY21cos_dlat,dY21sin_dlat,dY20_dlat;
+	IssmDouble dY21cos_dlon,dY21sin_dlon;
+	IssmDouble polenudge;
+	/*}}}*/
+
+	/*Recover parameters:{{{ */
+	rho_earth=FindParam(MaterialsEarthDensityEnum);
+	this->parameters->FindParam(&computeselfattraction,SolidearthSettingsSelfAttractionEnum);
+	this->parameters->FindParam(&computeelastic,SolidearthSettingsElasticEnum);
+	this->parameters->FindParam(&computerotation,SolidearthSettingsRotationEnum);
+	this->parameters->FindParam(&computeviscous,SolidearthSettingsViscousEnum);
+	this->parameters->FindParam(&nel,MeshNumberofelementsEnum);
+	this->parameters->FindParam(&planetarea,SolidearthPlanetAreaEnum);
+	this->parameters->FindParam(&planetradius,SolidearthPlanetRadiusEnum);
+	this->parameters->FindParam(&NewtonG,ConstantsNewtonGravityEnum);
+	this->parameters->FindParam(&horiz,SolidearthSettingsHorizEnum);
+	this->parameters->FindParam(&grd,SolidearthSettingsGRDEnum); 
+	this->parameters->FindParam(&grdmodel,GrdModelEnum);
+
+	/*early return:*/
+	if (!grd || grdmodel!=ElasticEnum) return; //Love numbers won't be found in this case, return before loading them
+	if(!computeselfattraction)return;
+
+	if(computerotation){
+		parameters->FindParam(&moi_e,RotationalEquatorialMoiEnum);
+		parameters->FindParam(&moi_p,RotationalPolarMoiEnum);
+		parameters->FindParam(&omega,RotationalAngularVelocityEnum);
+		//parameters->FindParam(&tide_love_h,NULL,NULL,SealevelchangeTidalH2Enum);
+		//parameters->FindParam(&tide_love_k,NULL,NULL,SealevelchangeTidalK2Enum);
+		//if(horiz) parameters->FindParam(&tide_love_l,NULL,NULL,SealevelchangeTidalL2Enum);
+	}
+	/*}}}*/
+
+	/*Recover precomputed green function kernels:{{{*/
+	parameters->FindParam(&degacc,SolidearthSettingsDegreeAccuracyEnum);
+	M=reCast<int,IssmDouble>(180.0/degacc+1.);
+
+	DoubleVecParam* parameter;
+	if(computeelastic){
+		if(computerotation){
+			parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeTidalH2Enum)); _assert_(parameter);
+			parameter->GetParameterValueByPointer((IssmDouble**)&tide_love_h,NULL);
+
+			parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeTidalK2Enum)); _assert_(parameter);
+			parameter->GetParameterValueByPointer((IssmDouble**)&tide_love_k,NULL);
+
+			if (horiz) {
+				parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeTidalL2Enum)); _assert_(parameter);
+				parameter->GetParameterValueByPointer((IssmDouble**)&tide_love_l,NULL);
+			}
+		}
+	}
+	/*}}}*/
+	/*Compute lat long of all vertices in the element:{{{*/
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	for(int i=0;i<NUMVERTICES;i++){
+		latitude[i]= asin(xyz_list[i][2]/planetradius);
+		if((xyz_list[i][2]/planetradius)==1.0)latitude[i]=M_PI/2;
+		longitude[i]= atan2(xyz_list[i][1],xyz_list[i][0]);
+	}
+	/*}}}*/
+	/*Compute green functions:{{{ */
+	if(computeviscous){
+		this->parameters->FindParam(&istime,LoveIsTimeEnum);
+		if(!istime)_error_("Frequency love numbers not supported yet!");
+		this->parameters->FindParam(&timeacc,SolidearthSettingsTimeAccEnum);
+		this->parameters->FindParam(&start_time,TimesteppingStartTimeEnum);
+		this->parameters->FindParam(&final_time,TimesteppingFinalTimeEnum);
+		nt=reCast<int,IssmDouble>((final_time-start_time)/timeacc)+1;
+	}
+	else{
+		nt=1; //in elastic, or if we run only selfattraction, we need only one step
+	}
+
+	AlphaIndex=xNewZeroInit<int>(n_activevertices[this->lid]*nel);
+	if (horiz) AzimuthIndex=xNewZeroInit<int>(n_activevertices[this->lid]*nel);
+	int intmax=pow(2,16)-1;
+
+	int* activevertices=xNew<int>(n_activevertices[this->lid]);
+	
+	int av=0;
+
+	for (int i=0;i<3;i++){
+		if(lids[this->vertices[i]->lid]==this->lid){
+			activevertices[av]=i;
+			for(int e=0;e<nel;e++){
+				IssmDouble alpha;
+				IssmDouble delPhi,delLambda;
+				/*recovers info for this element and vertex:*/
+				IssmDouble late= asin(zze[e]/sqrt( pow(xxe[e],2.0)+ pow(yye[e],2.0)+ pow(zze[e],2.0)));
+				IssmDouble longe= atan2(yye[e],xxe[e]);
+
+				lati=latitude[i];
+				longi=longitude[i];
+
+				/*Computes alpha angle between centroid and current vertex, and indexes alpha in precomputed tables: */
+				delPhi=fabs(lati-late); delLambda=fabs(longi-longe); if (delLambda>M_PI)delLambda=2*M_PI-delLambda;
+				alpha=2.*asin(sqrt(pow(sin(delPhi/2),2)+cos(lati)*cos(late)*pow(sin(delLambda/2),2)));
+				doubleindex=alpha/M_PI*reCast<IssmDouble,int>(M-1); //maps 0<alpha<PI on [0:M-1]
+				index=reCast<int,IssmDouble>(doubleindex); //truncates doubleindex to integer part
+				if ((doubleindex-index)>=0.5) index+=1; //nearest neighbour
+				_assert_(index>=0 && index<M);
+
+				if(horiz){
+					/*Compute azimuths*/
+					dx=cos(lati)*sin(late)-sin(lati)*cos(late)*cos(longe-longi);
+					dy=sin(longe-longi)*cos(late);
+					//angle between horiz motion and North, remapped from a double on [0,2*pi] to a int [0,intmax]
+					AzimuthIndex[av*nel+e]=reCast<int,IssmDouble>(intmax*(atan2(dy,dx)/2/M_PI));
+				}
+				AlphaIndex[av*nel+e]=index;
+			}
+			av+=1;			
+		} //for (int i=0;i<3;i++)
+	} //for(int e=0;e<nel;e++)
+
+	/*Add in inputs:*/
+	this->inputs->SetIntArrayInput(SealevelchangeConvolutionVerticesEnum,this->lid,activevertices,n_activevertices[this->lid]);
+	this->inputs->SetIntArrayInput(SealevelchangeAlphaIndexEnum,this->lid,AlphaIndex,nel*n_activevertices[this->lid]);
+	if(horiz) this->inputs->SetIntArrayInput(SealevelchangeAzimuthIndexEnum,this->lid,AzimuthIndex,nel*n_activevertices[this->lid]);
+
+	/*}}}*/
+	/*Compute rotation kernel:{{{*/
+	if(computerotation){
+		//initialization
+		LoveRotRSL  = xNewZeroInit<IssmDouble>(nt);
+		LoveRotU    = xNewZeroInit<IssmDouble>(nt);
+		if(horiz)LoveRothoriz= xNewZeroInit<IssmDouble>(nt);
+		Grot        = xNewZeroInit<IssmDouble>(3*3*nt); //3 polar motion components * 3 vertices * number of time steps
+		GUrot       = xNewZeroInit<IssmDouble>(3*3*nt);
+
+		if (horiz){
+			GErot=xNewZeroInit<IssmDouble>(3*3*nt);
+			GNrot=xNewZeroInit<IssmDouble>(3*3*nt);
+		}
+
+		/*What is the gravity at planet's surface: */
+		g=4.0/3.0*M_PI*rho_earth*NewtonG*planetradius;
+		cent_scaling=pow(omega*planetradius,2.0); //centrifugal potential dimensioning constant
+		for(int t=0;t<nt;t++){
+			//Amplitude of the rotational feedback
+			//to speed up calculation we include the dimension constant r^2*Omega^2/g, so all 3 of these are in meters
+			LoveRotRSL[t]=((1.0+tide_love_k[t]-tide_love_h[t])/g)*cent_scaling;
+			LoveRotU[t]=(tide_love_h[t]/g)*cent_scaling;
+			if (horiz) LoveRothoriz[t]=(tide_love_l[t]/g)*cent_scaling;
+		}
+		for(int i=0;i<3;i++){
+
+			//Avoid singularity of the poles
+			if (latitude[i]==M_PI/2.){
+				//North pole: nudge south
+				polenudge=-1.e-12;
+			}
+			else if (latitude[i]==-M_PI/2.){
+				//South pole: nudge north
+				polenudge=1.e-12;
+			}
+			else {
+				polenudge=0.0;
+			}
+
+			lati=latitude[i]+polenudge;
+			longi=longitude[i];
+
+			//Spherical harmonic functions of degree 2 (spatial pattern of rotation)
+			Y21cos= -0.5*sin(2.*lati)*cos(longi);
+			Y21sin= -0.5*sin(2.*lati)*sin(longi);
+			Y20   = -(1.0/6.0 - 0.5*cos(2.0*lati));
+
+			if (computeelastic && horiz){
+				//bed_N = Love_l * d(Y)/dlat ;
+				dY21cos_dlat=-cos(2.*lati)*cos(longi);
+				dY21sin_dlat=-cos(2.*lati)*sin(longi);
+				dY20_dlat=   -sin(2.*lati);
+
+				//bed_E = Love_l * 1/cos(lat) * d(Y)/dlon ;
+				dY21cos_dlon=-Y21sin/cos(lati);
+				dY21sin_dlon=Y21cos/cos(lati);
+				//dY20_dlon=0.;
+			}
+
+			for(int t=0;t<nt;t++){
+
+				Grot[0*3*nt+i*nt+t]= LoveRotRSL[t]*Y21cos; //x component of polar motion
+				Grot[1*3*nt+i*nt+t]= LoveRotRSL[t]*Y21sin; //y
+				Grot[2*3*nt+i*nt+t]= LoveRotRSL[t]*Y20;    //z
+
+				if (computeelastic){
+					GUrot[0*3*nt+i*nt+t]= LoveRotU[t]*Y21cos;
+					GUrot[1*3*nt+i*nt+t]= LoveRotU[t]*Y21sin;
+					GUrot[2*3*nt+i*nt+t]= LoveRotU[t]*Y20;
+					if (horiz){
+						//bed_N = Love_l * d(Y)/dlat ;
+						GNrot[0*3*nt+i*nt+t]= LoveRothoriz[t]*dY21cos_dlat;
+						GNrot[1*3*nt+i*nt+t]= LoveRothoriz[t]*dY21sin_dlat;
+						GNrot[2*3*nt+i*nt+t]= LoveRothoriz[t]*dY20_dlat;
+
+						//bed_E = Love_l * 1/cos(lat) * d(Y)/dlon ;
+						GErot[0*3*nt+i*nt+t]= LoveRothoriz[t]*dY21cos_dlon;
+						GErot[1*3*nt+i*nt+t]= LoveRothoriz[t]*dY21sin_dlon;
+						GErot[2*3*nt+i*nt+t]= 0.0;
+					}
+				}
+			}
+		}
+		this->inputs->SetArrayInput(SealevelchangeGrotEnum,this->lid,Grot,3*3*nt);
+		if (computeelastic){
+			this->inputs->SetArrayInput(SealevelchangeGUrotEnum,this->lid,GUrot,3*3*nt);
+			if(horiz){
+				this->inputs->SetArrayInput(SealevelchangeGNrotEnum,this->lid,GNrot,3*3*nt);
+				this->inputs->SetArrayInput(SealevelchangeGErotEnum,this->lid,GErot,3*3*nt);
+			}
+		}
+		/*Free resources:*/
+		xDelete<IssmDouble>(LoveRotRSL);
+		xDelete<IssmDouble>(LoveRotU);
+		if(horiz)xDelete<IssmDouble>(LoveRothoriz);
+	}
+	/*}}}*/
+	/*Initialize viscous stacks: {{{*/
+	if(computeviscous){
+		viscousRSL=xNewZeroInit<IssmDouble>(3*nt);
+		viscousU=xNewZeroInit<IssmDouble>(3*nt);
+
+		this->inputs->SetArrayInput(SealevelchangeViscousRSLEnum,this->lid,viscousRSL,3*nt);
+		this->inputs->SetArrayInput(SealevelchangeViscousUEnum,this->lid,viscousU,3*nt);
+		this->parameters->SetParam(0,SealevelchangeViscousIndexEnum);
+		if(horiz){
+			viscousN=xNewZeroInit<IssmDouble>(3*nt);
+			viscousE=xNewZeroInit<IssmDouble>(3*nt);
+			this->inputs->SetArrayInput(SealevelchangeViscousNEnum,this->lid,viscousN,3*nt);
+			this->inputs->SetArrayInput(SealevelchangeViscousEEnum,this->lid,viscousE,3*nt);
+		}
+	}
+	/*}}}*/
+
+	/*Free allocations:{{{*/
+	#ifdef _HAVE_RESTRICT_
+	delete activevertices;
+	delete AlphaIndex;
+	if(horiz) AzimuthIndex;
+
+	if(computerotation){
+		delete Grot;
+		delete GUrot;
+		if (horiz){
+			delete GNrot;
+			delete GErot;
+		}
+	}
+
+	#else
+	xDelete<int>(activevertices);
+	xDelete<int>(AlphaIndex);
+	if(horiz){
+		xDelete<int>(AzimuthIndex);
+	}
+	if(computerotation){
+		xDelete<IssmDouble>(Grot);
+		xDelete<IssmDouble>(GUrot);
+		if (horiz){
+			xDelete<IssmDouble>(GNrot);
+			xDelete<IssmDouble>(GErot);
+		}
+	}
+	#endif
+	/*}}}*/
+	return;
+
+}
+/*}}}*/
+
+void       Tria::SealevelchangeGeometrySubElementKernel(SealevelGeometry* slgeom){ /*{{{*/
+
+	/*Declarations:{{{*/
+	int nel;
+	IssmDouble planetarea,planetradius;
+	IssmDouble constant,ratioe;
+	IssmDouble rho_earth;
+	IssmDouble lati,longi;
+	IssmDouble latitude[NUMVERTICES];
+	IssmDouble longitude[NUMVERTICES];
+	IssmDouble x,y,z,dx,dy,dz,N_azim,E_azim;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	int* activevertices = NULL;
+	int n_activevertices, av;
+
+	#ifdef _HAVE_RESTRICT_
+	int** __restrict__ AlphaIndex=NULL;
+	int** __restrict__ AzimIndex=NULL;
+
+	#else
+	int** AlphaIndex=NULL;
+	int** AzimIndex=NULL;
+	#endif
+
+	/*viscoelastic green function:*/
+	int index;
+	int M;
+	IssmDouble doubleindex,lincoef, degacc;
+
+	/*Computational flags:*/
+	bool computeselfattraction = false;
+	bool computeelastic = false;
+	bool computeviscous = false;
+	int  horiz;
+	int grd, grdmodel;
+
+	bool istime=true;
+	IssmDouble timeacc=0;
+	IssmDouble start_time,final_time;
+	int  nt,precomputednt;
+	int intmax=pow(2,16)-1;
+
+	/*}}}*/
+	/*Recover parameters:{{{ */
+	rho_earth=FindParam(MaterialsEarthDensityEnum);
+	this->parameters->FindParam(&computeselfattraction,SolidearthSettingsSelfAttractionEnum);
+	this->parameters->FindParam(&computeelastic,SolidearthSettingsElasticEnum);
+	this->parameters->FindParam(&computeviscous,SolidearthSettingsViscousEnum);
+	this->parameters->FindParam(&nel,MeshNumberofelementsEnum);
+	this->parameters->FindParam(&planetarea,SolidearthPlanetAreaEnum);
+	this->parameters->FindParam(&planetradius,SolidearthPlanetRadiusEnum);
+	this->parameters->FindParam(&horiz,SolidearthSettingsHorizEnum);
+	this->parameters->FindParam(&grd,SolidearthSettingsGRDEnum); 
+	this->parameters->FindParam(&grdmodel,GrdModelEnum);
+	/*}}}*/
+
+	/*early return:*/
+	if (!grd || grdmodel!=ElasticEnum) return; //Love numbers won't be found in this case, return before loading them
+	if(!computeselfattraction)return;
+
+	/*Recover precomputed green function kernels:{{{*/
+	parameters->FindParam(&degacc,SolidearthSettingsDegreeAccuracyEnum);
+	M=reCast<int,IssmDouble>(180.0/degacc+1.);
+
+	/*}}}*/
+	/*Compute lat long of all vertices in the element:{{{*/
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	for(int i=0;i<NUMVERTICES;i++){
+		latitude[i]= asin(xyz_list[i][2]/planetradius);
+		longitude[i]= atan2(xyz_list[i][1],xyz_list[i][0]);
+	}
+	/*}}}*/
+	/*Compute green functions:{{{ */
+
+	if(computeviscous){
+		this->parameters->FindParam(&istime,LoveIsTimeEnum);
+		if(!istime)_error_("Frequency love numbers not supported yet!");
+		this->parameters->FindParam(&timeacc,SolidearthSettingsTimeAccEnum);
+		this->parameters->FindParam(&start_time,TimesteppingStartTimeEnum);
+		this->parameters->FindParam(&final_time,TimesteppingFinalTimeEnum);
+		nt=reCast<int,IssmDouble>((final_time-start_time)/timeacc)+1;
+	}
+	else{
+		nt=1; //in elastic, or if we run only selfattraction, we need only one step
+	}
+	AlphaIndex=xNew<int*>(SLGEOM_NUMLOADS);
+	if(horiz) AzimIndex=xNew<int*>(SLGEOM_NUMLOADS);
+
+	this->inputs->GetIntArrayPtr(SealevelchangeConvolutionVerticesEnum,this->lid,&activevertices,&n_activevertices);
+	// 0<=n_activevertices<=3 is the number of vertices this element is in charge of computing fields in during the sea level convolutions
+	// activevertices contains the vertex indices (1,2 and/or 3) in case debugging is required, they are supposed to appear in the same order as slgeom->lids
+
+	//Allocate: 
+	for(int l=0;l<SLGEOM_NUMLOADS;l++){
+		int nbar=slgeom->nbar[l];
+		AlphaIndex[l]=xNewZeroInit<int>(n_activevertices*nbar);
+		if(horiz) AzimIndex[l]=xNewZeroInit<int>(n_activevertices*nbar);
+
+		//av=0;
+		//for (int i=0;i<3;i++){
+		for (int av=0;av<n_activevertices;av++){
+			//if(slgeom->lids[this->vertices[i]->lid]==this->lid){
+			int i=activevertices[av];
+			for(int e=0;e<nbar;e++){
+				IssmDouble alpha;
+				IssmDouble delPhi,delLambda;
+				/*recover info for this element and vertex:*/
+				IssmDouble late= slgeom->latbarycentre[l][e]; 
+				IssmDouble longe= slgeom->longbarycentre[l][e]; 
+				late=late/180*M_PI;
+				longe=longe/180*M_PI;
+				lati=latitude[i];
+				longi=longitude[i];
+					if(horiz){
+					/*Compute azimuths*/
+						dx=cos(lati)*sin(late)-sin(lati)*cos(late)*cos(longe-longi);
+						dy=sin(longe-longi)*cos(late);
+						//angle between horiz motion and North, remapped from a double on [0,2*pi] to a int [0,intmax]
+						AzimIndex[l][av*nbar+e]=reCast<int,IssmDouble>(intmax*(atan2(dy,dx)/2/M_PI));
+					}
+
+				/*Compute alpha angle between centroid and current vertex and index into precomputed tables: */
+				delPhi=fabs(lati-late); delLambda=fabs(longi-longe); if (delLambda>M_PI)delLambda=2*M_PI-delLambda;
+				alpha=2.*asin(sqrt(pow(sin(delPhi/2.0),2.0)+cos(lati)*cos(late)*pow(sin(delLambda/2.0),2.0)));
+				doubleindex=alpha/M_PI*reCast<IssmDouble,int>(M-1); //maps 0<alpha<PI on [0:M-1]
+				index=reCast<int,IssmDouble>(doubleindex); //truncates doubleindex to integer part
+
+				if ((doubleindex-index)>=0.5) index+=1; //nearest neighbour
+				if (index==M-1){ //avoids out of bound case
+					index-=1;
+					lincoef=1;
+				}
+				AlphaIndex[l][av*nbar+e]=index;
+			//}
+			//av+=1;
+			}
+
+		}
+	}
+
+	/*Save all these arrayins for each element:*/
+	for (int l=0;l<SLGEOM_NUMLOADS;l++){
+		this->inputs->SetIntArrayInput(slgeom->AlphaIndexEnum(l),this->lid,AlphaIndex[l],slgeom->nbar[l]*n_activevertices);
+		if(horiz) this->inputs->SetIntArrayInput(slgeom->AzimuthIndexEnum(l),this->lid,AzimIndex[l],slgeom->nbar[l]*n_activevertices);
+	}
+	/*}}}*/
+	/*Free memory:{{{*/
+	for (int l=0;l<SLGEOM_NUMLOADS;l++){
+		xDelete<int>(AlphaIndex[l]);
+		if(horiz) xDelete<int>(AzimIndex[l]);
+	}
+	xDelete<int*>(AlphaIndex);
+	if(horiz) xDelete<int*>(AzimIndex); 
+	
+	/*}}}*/
+	return;
+
+}
+/*}}}*/
+void       Tria::SealevelchangeGeometryCentroidLoads(SealevelGeometry* slgeom, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae){ /*{{{*/
+
+	/* Classic buildup of load weights, centroids and areas *for elements which are fully inside a mask. 
+	 * At the same time, we'll tag the elements that are fractionally only inside a mask*/
+
+	IssmDouble loadweights[3]={0};
+	IssmDouble area;
+	IssmDouble loadweightsocean[3]; //to keep memory of these loads, no need to recompute for bottom pressure.
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble planetradius;
+	IssmDouble late,longe;
+
+	/*flags:*/
+	bool isocean=false;
+	bool isoceanonly=false;
+	bool isice=false;
+	bool isiceonly=false;
+	bool  computeice=false;
+	bool  computebp=false;
+	bool  computehydro=false;
+
+	/*constants:*/
+	IssmDouble constant=0;
+
+	/*recover parameters:*/
+	this->parameters->FindParam(&computeice,TransientIsmasstransportEnum);
+	this->parameters->FindParam(&computebp,TransientIsoceantransportEnum);
+	this->parameters->FindParam(&computehydro,TransientIshydrologyEnum);
+	this->parameters->FindParam(&planetradius,SolidearthPlanetRadiusEnum);
+
+	/*get vertex information:*/
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*answer mask questions:*/
+	isiceonly=this->IsIceOnlyInElement();
+	isice=this->IsIceInElement();
+	isoceanonly=this->IsOceanOnlyInElement();
+	isocean=this->IsOceanInElement();
+	slgeom->isoceanin[this->lid]=isocean; //keep track for later.
+	area=areae[this->sid];
+
+	/*Compute element ids, used to speed up computations in convolution phase:{{{*/
+	for(int i=0;i<NUMVERTICES;i++){
+		slgeom->lids[this->vertices[i]->lid]=this->lid;
+	}
+	/*}}}*/
+
+	/*set barycentre for all elements, to be updated for fractional loads in the next routine: */
+	//late= asin(zze[this->sid]/planetradius)*180.0/M_PI;
+	late= asin(zze[this->sid]/sqrt( pow(xxe[this->sid],2.0)+ pow(yye[this->sid],2.0)+ pow(zze[this->sid],2.0)))*180.0/M_PI;
+	longe= atan2(yye[this->sid],xxe[this->sid])*180.0/M_PI;
+	slgeom->longe[this->lid]=longe;
+	slgeom->late[this->lid]=late;
+
+	/*compute areas and load weights for ocean and flag elements only partially in the ocean:*/
+	if(isoceanonly){ 
+		slgeom->LoadArea[SLGEOM_OCEAN][this->lid]=area;
+		for(int i=0;i<NUMVERTICES;i++) slgeom->LoadWeigths[SLGEOM_OCEAN][i][this->lid]=1.0/3.0;
+
+		#ifdef _ISSM_DEBUG_ /*{{{*/
+		/*Inform mask: */
+		constant=1.0;
+		for(int i=0;i<NUMVERTICES;i++) loadweightsocean[i]=1.0/3.0;
+		this->AddInput(SealevelBarystaticOceanMaskEnum,&constant,P0Enum); 
+		this->AddInput(SealevelBarystaticOceanWeightsEnum,loadweightsocean,P1DGEnum);
+		this->AddInput(SealevelBarystaticOceanAreaEnum,&area,P0Enum);
+		#endif /*}}}*/
+	}
+	else if(!isocean){
+		slgeom->LoadArea[SLGEOM_OCEAN][this->lid]=0;
+		for(int i=0;i<NUMVERTICES;i++) slgeom->LoadWeigths[SLGEOM_OCEAN][i][this->lid]=0.0;
+		#ifdef _ISSM_DEBUG_ /*{{{*/
+		/*Inform mask: */
+		constant=0.0;
+		for(int i=0;i<NUMVERTICES;i++) loadweightsocean[i]=0.0;
+		this->AddInput(SealevelBarystaticOceanMaskEnum,&constant,P0Enum); 
+		this->AddInput(SealevelBarystaticOceanWeightsEnum,loadweightsocean,P1DGEnum);
+		this->AddInput(SealevelBarystaticOceanAreaEnum,&constant,P0Enum);
+		#endif /*}}}*/
+	}
+	else{
+		slgeom->issubelement[SLGEOM_OCEAN][this->lid]=true;
+		slgeom->nsubel[SLGEOM_OCEAN]++;
+	}
+
+	/*early return if we are not on an ice sheet , and we are not requesting 
+	 *hydrology or bottom pressure loads :*/
+	if(!computebp && !computehydro){
+		if(!isice  || isoceanonly) {
+			#ifdef _ISSM_DEBUG_
+			constant=0; 
+			this->AddInput(SealevelBarystaticIceMaskEnum,&constant,P0Enum);
+			this->AddInput(SealevelBarystaticIceAreaEnum,&constant,P0Enum);
+			this->AddInput(SealevelBarystaticIceWeightsEnum,loadweights,P1DGEnum);
+			this->AddInput(SealevelBarystaticHydroMaskEnum,&constant,P0Enum);
+			this->AddInput(SealevelBarystaticHydroWeightsEnum,loadweights,P1DGEnum);
+			this->AddInput(SealevelBarystaticHydroAreaEnum,&constant,P0Enum);
+			this->AddInput(SealevelBarystaticBpMaskEnum,&constant,P0Enum);
+			this->AddInput(SealevelBarystaticBpWeightsEnum,loadweights,P1DGEnum);
+			this->AddInput(SealevelBarystaticBpAreaEnum,&constant,P0Enum);
+			#endif
+			for(int i=0;i<NUMVERTICES;i++){
+				slgeom->LoadWeigths[SLGEOM_ICE][i][this->lid]=0;
+				slgeom->LoadWeigths[SLGEOM_WATER][i][this->lid]=0;
+			}
+			slgeom->LoadArea[SLGEOM_ICE][this->lid]=0;
+			slgeom->LoadArea[SLGEOM_WATER][this->lid]=0;
+			return;
+		}
+	}
+
+	/*early return if we are fully floating and we are not doing bottom pressure loads:*/
+	if(!computebp){
+		if (isoceanonly){
+			#ifdef _ISSM_DEBUG_
+			constant=0;
+			this->AddInput(SealevelBarystaticIceMaskEnum,&constant,P0Enum);
+			this->AddInput(SealevelBarystaticIceWeightsEnum,loadweights,P1DGEnum);
+			this->AddInput(SealevelBarystaticIceAreaEnum,&constant,P0Enum);
+			this->AddInput(SealevelBarystaticHydroMaskEnum,&constant,P0Enum);
+			this->AddInput(SealevelBarystaticHydroWeightsEnum,loadweights,P1DGEnum);
+			this->AddInput(SealevelBarystaticHydroAreaEnum,&constant,P0Enum);
+			this->AddInput(SealevelBarystaticBpMaskEnum,&constant,P0Enum);
+			this->AddInput(SealevelBarystaticBpWeightsEnum,loadweights,P1DGEnum);
+			this->AddInput(SealevelBarystaticBpAreaEnum,&constant,P0Enum);
+			#endif
+			for(int i=0;i<NUMVERTICES;i++){
+				slgeom->LoadWeigths[SLGEOM_ICE][i][this->lid]=0;
+				slgeom->LoadWeigths[SLGEOM_WATER][i][this->lid]=0;
+			}
+			slgeom->LoadArea[SLGEOM_ICE][this->lid]=0;
+			slgeom->LoadArea[SLGEOM_WATER][this->lid]=0;
+			return;
+		}
+	}
+
+	/*early return if we are not on the ocean and we are not doing ice mass transport of 
+	 * hydrology:*/
+	if(!computeice  && !computehydro){
+		if(!isocean){
+			#ifdef _ISSM_DEBUG_
+			constant=0;
+			this->AddInput(SealevelBarystaticIceMaskEnum,&constant,P0Enum);
+			this->AddInput(SealevelBarystaticIceWeightsEnum,loadweights,P1DGEnum);
+			this->AddInput(SealevelBarystaticIceAreaEnum,&constant,P0Enum);
+			this->AddInput(SealevelBarystaticHydroMaskEnum,&constant,P0Enum);
+			this->AddInput(SealevelBarystaticHydroWeightsEnum,loadweights,P1DGEnum);
+			this->AddInput(SealevelBarystaticHydroAreaEnum,&constant,P0Enum);
+			this->AddInput(SealevelBarystaticBpMaskEnum,&constant,P0Enum);
+			this->AddInput(SealevelBarystaticBpWeightsEnum,loadweights,P1DGEnum);
+			this->AddInput(SealevelBarystaticBpAreaEnum,&constant,P0Enum);
+			#endif
+			for(int i=0;i<NUMVERTICES;i++){
+				slgeom->LoadWeigths[SLGEOM_ICE][i][this->lid]=0;
+				slgeom->LoadWeigths[SLGEOM_WATER][i][this->lid]=0;
+			}
+			slgeom->LoadArea[SLGEOM_ICE][this->lid]=0;
+			slgeom->LoadArea[SLGEOM_WATER][this->lid]=0;
+			return;
+		}
+	}
+
+	/*Deal with ice loads if we are on grounded ice:*/
+	if(isice && !isoceanonly && computeice){
+		if(isiceonly && !isocean){
+			slgeom->LoadArea[SLGEOM_ICE][this->lid]=area;
+			for(int i=0;i<NUMVERTICES;i++) slgeom->LoadWeigths[SLGEOM_ICE][i][this->lid]=1.0/3.0;
+
+			#ifdef _ISSM_DEBUG_ /*{{{*/
+			/*Inform mask: */
+			constant=1.0;
+			for(int i=0;i<NUMVERTICES;i++) loadweights[i]=1.0/3.0;
+			this->AddInput(SealevelBarystaticIceMaskEnum,&constant,P0Enum); 
+			this->AddInput(SealevelBarystaticIceWeightsEnum,loadweights,P1DGEnum);
+			this->AddInput(SealevelBarystaticIceAreaEnum,&area,P0Enum);
+			#endif /*}}}*/
+		}
+		else{
+			slgeom->issubelement[SLGEOM_ICE][this->lid]=true;
+			slgeom->nsubel[SLGEOM_ICE]++;
+		}
+	} 
+
+	/*Deal with water loads if we are on ground:*/
+	if(!isoceanonly && computehydro){
+
+		if(!isocean){
+			slgeom->LoadArea[SLGEOM_WATER][this->lid]=area;
+			for(int i=0;i<NUMVERTICES;i++) slgeom->LoadWeigths[SLGEOM_WATER][i][this->lid]=1.0/3.0;
+
+			#ifdef _ISSM_DEBUG_ /*{{{*/
+			/*Inform mask: */
+			constant=1.0;
+			for(int i=0;i<NUMVERTICES;i++) loadweights[i]=1.0/3.0;
+			this->AddInput(SealevelBarystaticHydroMaskEnum,&constant,P0Enum); 
+			this->AddInput(SealevelBarystaticHydroWeightsEnum,loadweights,P1DGEnum);
+			this->AddInput(SealevelBarystaticHydroAreaEnum,&area,P0Enum);
+			#endif /*}}}*/
+		}
+		else{
+			slgeom->issubelement[SLGEOM_WATER][this->lid]=true;
+			slgeom->nsubel[SLGEOM_WATER]++;
+		}
+	}
+
+}
+/*}}}*/
+void       Tria::SealevelchangeBarystaticLoads(GrdLoads* loads,  BarystaticContributions* barycontrib, SealevelGeometry* slgeom){ /*{{{*/
+
+	int nel;
+
+	/*Inputs:*/
+	IssmDouble I[NUMVERTICES]; 
+	IssmDouble W[NUMVERTICES];
+	IssmDouble BP[NUMVERTICES];
+	IssmDouble* areae=NULL;
+
+	/*output: */
+	IssmDouble bslcice=0;
+	IssmDouble bslchydro=0;
+	IssmDouble bslcbp=0;
+	IssmDouble BPavg=0;
+	IssmDouble Iavg=0;
+	IssmDouble Wavg=0;
+
+	/*ice properties: */
+	IssmDouble rho_ice,rho_water,rho_freshwater;
+
+	/*recover some parameters:*/
+	this->parameters->FindParam(&rho_ice,MaterialsRhoIceEnum);
+	this->parameters->FindParam(&rho_water,MaterialsRhoSeawaterEnum);
+	this->parameters->FindParam(&rho_freshwater,MaterialsRhoFreshwaterEnum);
+	this->parameters->FindParam(&areae,&nel,AreaeEnum);
+
+	/*Retrieve inputs:*/
+	Element::GetInputListOnVertices(&I[0],DeltaIceThicknessEnum);
+	Element::GetInputListOnVertices(&W[0],DeltaTwsEnum);
+	Element::GetInputListOnVertices(&BP[0],DeltaBottomPressureEnum);
+
+	for(int i=0;i<NUMVERTICES;i++){
+		Iavg+=I[i]*slgeom->LoadWeigths[SLGEOM_ICE][i][this->lid]*slgeom->LoadArea[SLGEOM_ICE][this->lid];
+		Wavg+=W[i]*slgeom->LoadWeigths[SLGEOM_WATER][i][this->lid]*slgeom->LoadArea[SLGEOM_WATER][this->lid];
+		BPavg+=BP[i]*slgeom->LoadWeigths[SLGEOM_OCEAN][i][this->lid]*slgeom->LoadArea[SLGEOM_OCEAN][this->lid];
+	}
+
+	/*convert from m^3 to kg:*/
+	Iavg*=rho_ice;
+	Wavg*=rho_freshwater;
+	BPavg*=rho_water;
+
+	#ifdef _ISSM_DEBUG_ 
+	this->AddInput(SealevelBarystaticIceLoadEnum,&Iavg,P0Enum);
+	this->AddInput(SealevelBarystaticHydroLoadEnum,&Wavg,P0Enum);
+	this->AddInput(SealevelBarystaticBpLoadEnum,&BPavg,P0Enum);
+	#endif
+
+	/*Compute barystatic component in kg:*/
+	// Note: Iavg, etc, already include partial area factor phi for subelement loading
+	bslcice =   -Iavg;
+	bslchydro = -Wavg;
+	bslcbp =    -BPavg;
+
+	_assert_(!xIsNan<IssmDouble>(bslcice));
+	_assert_(!xIsNan<IssmDouble>(bslchydro));
+	_assert_(!xIsNan<IssmDouble>(bslcbp));
+
+	/*Plug values into subelement load vector:*/
+	if(slgeom->issubelement[SLGEOM_ICE][this->lid]){
+		int intj=slgeom->subelementmapping[SLGEOM_ICE][this->lid];
+		loads->vsubloads[SLGEOM_ICE]->SetValue(intj,Iavg,INS_VAL);
+		Iavg=0; //avoid double counting centroid loads and subelement loads!
+	}
+	if(slgeom->issubelement[SLGEOM_WATER][this->lid]){
+		int intj=slgeom->subelementmapping[SLGEOM_WATER][this->lid];
+		loads->vsubloads[SLGEOM_WATER]->SetValue(intj,Wavg,INS_VAL);
+		Wavg=0;
+	}
+	if(slgeom->issubelement[SLGEOM_OCEAN][this->lid]){
+		int intj=slgeom->subelementmapping[SLGEOM_OCEAN][this->lid];
+		loads->vsubloads[SLGEOM_OCEAN]->SetValue(intj,BPavg,INS_VAL); 
+		BPavg=0;
+	}
+	/*Plug remaining values into centroid load vector:*/
+	loads->vloads->SetValue(this->sid,Iavg+Wavg+BPavg,INS_VAL);
+
+	/*Keep track of barystatic contributions:*/
+	barycontrib->Set(this->Sid(),bslcice,bslchydro,bslcbp);
+
+	/*Free resources*/
+	xDelete<IssmDouble>(areae);
+
+}/*}}}*/
+void       Tria::SealevelchangeGeometrySubElementLoads(SealevelGeometry* slgeom, IssmDouble* areae){ /*{{{*/
+
+	/* Classic buildup of load weights, centroids and areas *for elements which are fully inside a mask. 
+	 * At the same time, we'll tag the elements that are fractionally only inside a mask*/
+
+	IssmDouble loadweights[3]={0};
+	IssmDouble area,loadarea;
+	IssmDouble loadareaocean;
+	IssmDouble loadweightsocean[3]; //to keep memory of these loads, no need to recompute for bottom pressure.
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble latbar=slgeom->late[this->lid];
+	IssmDouble longbar=slgeom->longe[this->lid];
+	IssmDouble constant;
+	IssmDouble nanconstant=NAN;
+
+	/*get vertex and area information:*/
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	area=areae[this->sid];
+
+	#ifdef _ISSM_DEBUG_
+	this->AddInput(SealevelBarystaticIceLatbarEnum,&latbar,P0Enum); 
+	this->AddInput(SealevelBarystaticIceLongbarEnum,&longbar,P0Enum); 
+	this->AddInput(SealevelBarystaticHydroLatbarEnum,&latbar,P0Enum); 
+	this->AddInput(SealevelBarystaticHydroLongbarEnum,&longbar,P0Enum); 
+	this->AddInput(SealevelBarystaticOceanLatbarEnum,&latbar,P0Enum); 
+	this->AddInput(SealevelBarystaticOceanLongbarEnum,&longbar,P0Enum); 
+	#endif
+
+	if(slgeom->issubelement[SLGEOM_OCEAN][this->lid]){
+		int intj=slgeom->subelementmapping[SLGEOM_OCEAN][this->lid];
+
+		this->GetNodalWeightsAndAreaAndCentroidsFromLeveset(&loadweightsocean[0],&loadareaocean,&latbar, &longbar, slgeom->late[this->lid], slgeom->longe[this->lid], area, MaskOceanLevelsetEnum);
+		slgeom->LoadArea[SLGEOM_OCEAN][this->lid]=loadareaocean;
+		slgeom->vareae_subel[SLGEOM_OCEAN]->SetValue(intj,loadareaocean,INS_VAL);
+		slgeom->vlatbarycentre[SLGEOM_OCEAN]->SetValue(intj,latbar,INS_VAL);
+		slgeom->vlongbarycentre[SLGEOM_OCEAN]->SetValue(intj,longbar,INS_VAL);
+
+		for(int i=0;i<NUMVERTICES;i++) slgeom->LoadWeigths[SLGEOM_OCEAN][i][this->lid]=loadweightsocean[i];
+
+		#ifdef _ISSM_DEBUG_ /*{{{*/
+		/*Inform mask: */
+		constant=loadareaocean/area;
+		this->AddInput(SealevelBarystaticOceanMaskEnum,&constant,P0Enum); 
+		this->AddInput(SealevelBarystaticOceanWeightsEnum,loadweightsocean,P1DGEnum);
+		this->AddInput(SealevelBarystaticOceanAreaEnum,&loadareaocean,P0Enum);
+
+		this->AddInput(SealevelBarystaticOceanLatbarEnum,&latbar,P0Enum); 
+		this->AddInput(SealevelBarystaticOceanLongbarEnum,&longbar,P0Enum); 
+		#endif /*}}}*/
+	}
+	if(slgeom->issubelement[SLGEOM_ICE][this->lid]){
+		int intj=slgeom->subelementmapping[SLGEOM_ICE][this->lid];
+
+		this->GetNodalWeightsAndAreaAndCentroidsFromLeveset(&loadweights[0],&loadarea,&latbar, &longbar, slgeom->late[this->lid], slgeom->longe[this->lid], area, -MaskOceanLevelsetEnum,MaskIceLevelsetEnum);
+
+		slgeom->LoadArea[SLGEOM_ICE][this->lid]=loadarea;
+		slgeom->vareae_subel[SLGEOM_ICE]->SetValue(intj,loadarea,INS_VAL);
+		slgeom->vlatbarycentre[SLGEOM_ICE]->SetValue(intj,latbar,INS_VAL);
+		slgeom->vlongbarycentre[SLGEOM_ICE]->SetValue(intj,longbar,INS_VAL);
+
+		for(int i=0;i<NUMVERTICES;i++)slgeom->LoadWeigths[SLGEOM_ICE][i][this->lid]=loadweights[i];
+
+		#ifdef _ISSM_DEBUG_
+		/*Inform mask: */
+		constant=loadarea/area; 
+		this->AddInput(SealevelBarystaticIceMaskEnum,&constant,P0Enum);
+		this->AddInput(SealevelBarystaticIceWeightsEnum,loadweights,P1DGEnum);
+		this->AddInput(SealevelBarystaticIceAreaEnum,&loadarea,P0Enum);
+
+		this->AddInput(SealevelBarystaticIceLatbarEnum,&latbar,P0Enum); 
+		this->AddInput(SealevelBarystaticIceLongbarEnum,&longbar,P0Enum); 
+
+		#endif
+	}
+	if(slgeom->issubelement[SLGEOM_WATER][this->lid]){
+		int intj=slgeom->subelementmapping[SLGEOM_WATER][this->lid];
+
+		this->GetNodalWeightsAndAreaAndCentroidsFromLeveset(&loadweights[0],&loadarea,&latbar, &longbar, slgeom->late[this->lid], slgeom->longe[this->lid], area, -MaskOceanLevelsetEnum);
+
+		slgeom->LoadArea[SLGEOM_WATER][this->lid]=loadarea;
+		slgeom->vareae_subel[SLGEOM_WATER]->SetValue(intj,loadarea,INS_VAL);
+		slgeom->vlatbarycentre[SLGEOM_WATER]->SetValue(intj,latbar,INS_VAL);
+		slgeom->vlongbarycentre[SLGEOM_WATER]->SetValue(intj,longbar,INS_VAL);
+
+		for(int i=0;i<NUMVERTICES;i++)slgeom->LoadWeigths[SLGEOM_WATER][i][this->lid]=loadweights[i];
+
+		#ifdef _ISSM_DEBUG_
+		/*Inform mask: */
+		constant=loadarea/area; 
+		this->AddInput(SealevelBarystaticHydroMaskEnum,&constant,P0Enum);
+		this->AddInput(SealevelBarystaticHydroWeightsEnum,loadweights,P1DGEnum);
+		this->AddInput(SealevelBarystaticHydroAreaEnum,&loadarea,P0Enum);
+
+		this->AddInput(SealevelBarystaticHydroLatbarEnum,&latbar,P0Enum); 
+		this->AddInput(SealevelBarystaticHydroLongbarEnum,&longbar,P0Enum); 
+
+		#endif
+	}
+
+}
+/*}}}*/
+void       Tria::SealevelchangeUpdateViscousFields(IssmDouble lincoeff, int newindex, int offset){ /*{{{*/
+
+	/*Inputs:*/
+	IssmDouble* viscousRSL=NULL;
+	IssmDouble* viscousU=NULL;
+	IssmDouble* viscousN=NULL;
+	IssmDouble* viscousE=NULL;
+	int         viscousnumsteps;
+	int         size;
+	bool        viscous=false;
+	int	    horiz=0;
+
+	this->parameters->FindParam(&viscous,SolidearthSettingsViscousEnum);
+
+	if(viscous){
+		this->parameters->FindParam(&horiz,SolidearthSettingsHorizEnum);
+		this->parameters->FindParam(&viscousnumsteps,SealevelchangeViscousNumStepsEnum);
+
+		this->inputs->GetArrayPtr(SealevelchangeViscousRSLEnum,this->lid,&viscousRSL,&size);
+		this->inputs->GetArrayPtr(SealevelchangeViscousUEnum,this->lid,&viscousU,&size);
+		if(horiz){
+			this->inputs->GetArrayPtr(SealevelchangeViscousNEnum,this->lid,&viscousN,&size);
+			this->inputs->GetArrayPtr(SealevelchangeViscousEEnum,this->lid,&viscousE,&size);
+		}
+
+		for(int i=0;i<NUMVERTICES;i++){
+			viscousRSL[i*viscousnumsteps+newindex+offset]=(1-lincoeff)*viscousRSL[i*viscousnumsteps+newindex]+lincoeff*viscousRSL[i*viscousnumsteps+newindex+1];
+			viscousU[i*viscousnumsteps+newindex+offset]=(1-lincoeff)*viscousU[i*viscousnumsteps+newindex]+lincoeff*viscousU[i*viscousnumsteps+newindex+1];
+			if(horiz){
+				viscousN[i*viscousnumsteps+newindex+offset]=(1-lincoeff)*viscousN[i*viscousnumsteps+newindex]+lincoeff*viscousN[i*viscousnumsteps+newindex+1];
+				viscousE[i*viscousnumsteps+newindex+offset]=(1-lincoeff)*viscousE[i*viscousnumsteps+newindex]+lincoeff*viscousE[i*viscousnumsteps+newindex+1];
+			}
+		}
+	}
+}
+/*}}}*/
+void       Tria::SealevelchangeOceanAverage(GrdLoads* loads, Vector<IssmDouble>* oceanareas, Vector<IssmDouble>* subelementoceanareas, IssmDouble* sealevelpercpu, SealevelGeometry* slgeom){ /*{{{*/
+
+	IssmDouble oceanaverage=0;
+	IssmDouble oceanarea=0;
+	IssmDouble rho_water;
+
+	this->parameters->FindParam(&rho_water,MaterialsRhoSeawaterEnum);
+
+	/*retrieve ocean average and area:*/
+	for(int i=0;i<NUMVERTICES;i++){
+		oceanaverage+=sealevelpercpu[this->vertices[i]->lid]*slgeom->LoadWeigths[SLGEOM_OCEAN][i][this->lid];
+	}
+
+	oceanarea=slgeom->LoadArea[SLGEOM_OCEAN][this->lid];
+	oceanaverage*=rho_water*oceanarea;
+
+	/*add ocean average in the global sealevelloads vector:*/
+	if(slgeom->issubelement[SLGEOM_OCEAN][this->lid]){
+		int intj=slgeom->subelementmapping[SLGEOM_OCEAN][this->lid];
+		loads->vsubsealevelloads->SetValue(intj,oceanaverage,INS_VAL);
+		loads->vsealevelloads->SetValue(this->sid,0.,INS_VAL);
+	}
+	else loads->vsealevelloads->SetValue(this->sid,oceanaverage,INS_VAL);
+
+	#ifdef _ISSM_DEBUG_ 
+	this->AddInput(SealevelBarystaticOceanLoadEnum,&oceanaverage,P0Enum);
+	#endif
+
+	/*add ocean area into a global oceanareas vector:*/
+	if(!loads->sealevelloads){
+		oceanareas->SetValue(this->sid,oceanarea,INS_VAL);
+		if(slgeom->issubelement[SLGEOM_OCEAN][this->lid]){
+			int intj=slgeom->subelementmapping[SLGEOM_OCEAN][this->lid];
+			subelementoceanareas->SetValue(intj,oceanarea,INS_VAL);
+		}
+	}
+}
+/*}}}*/
+void       Tria::SealevelchangeConvolution(IssmDouble* sealevelpercpu, GrdLoads* loads, IssmDouble* polarmotionvector,SealevelGeometry* slgeom){ /*{{{*/
+
+	/*sal green function:*/
+	int* AlphaIndex=NULL;
+	int* AlphaIndexsub[SLGEOM_NUMLOADS];
+	IssmDouble* G=NULL;
+	IssmDouble* Grot=NULL;
+	IssmDouble* rslfield=NULL;
+	DoubleVecParam* parameter;
+	bool computefuture=false;
+
+	bool sal = false;
+	bool viscous = false;
+	bool rotation= false;
+	bool percpu= false;
+	int  size;
+	int  nel,nbar;
+
+
+	this->parameters->FindParam(&sal,SolidearthSettingsSelfAttractionEnum);
+	this->parameters->FindParam(&viscous,SolidearthSettingsViscousEnum);
+	this->parameters->FindParam(&rotation,SolidearthSettingsRotationEnum);
+	this->parameters->FindParam(&nel,MeshNumberofelementsEnum);
+
+	if(sal){
+		parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeGViscoElasticEnum)); _assert_(parameter);
+		parameter->GetParameterValueByPointer((IssmDouble**)&G,NULL);
+
+		if (rotation)	this->inputs->GetArrayPtr(SealevelchangeGrotEnum,this->lid,&Grot,&size);
+
+		rslfield=this->SealevelchangeGxL(G,Grot,loads,polarmotionvector,slgeom,nel,computefuture=false);
+		this->SealevelchangeCollectGrdfield(sealevelpercpu,rslfield,slgeom,nel,percpu=true,SealevelchangeViscousRSLEnum,computefuture=false);
+
+	}
+
+	return;
+} /*}}}*/
+void       Tria::SealevelchangeDeformationConvolution(IssmDouble* sealevelpercpu, GrdLoads* loads, IssmDouble* polarmotionvector,SealevelGeometry* slgeom){ /*{{{*/
+
+	IssmDouble SealevelGrd[3]={0,0,0};
+	IssmDouble RSLGrd[3]={0,0,0};
+	IssmDouble UGrd[3]={0,0,0};
+	IssmDouble NGrd[3]={0,0,0};
+	IssmDouble EGrd[3]={0,0,0};
+	int nel,nbar;
+	bool sal = false;
+	int spatial_component=0;
+	IssmDouble* G=NULL;
+	IssmDouble* GU=NULL;
+	IssmDouble* GH=NULL;
+	IssmDouble* Grot=NULL;
+	IssmDouble* GUrot=NULL;
+	IssmDouble* GNrot=NULL;
+	IssmDouble* GErot=NULL;
+	IssmDouble* grdfield=NULL;
+
+	DoubleVecParam* parameter;
+	bool computefuture=false;
+
+	int horiz;
+	int size;
+
+	bool rotation= false;
+	bool elastic=false;
+	bool percpu=false;
+	bool planethasocean=false;
+
+	this->parameters->FindParam(&nel,MeshNumberofelementsEnum);
+	this->parameters->FindParam(&sal,SolidearthSettingsSelfAttractionEnum);
+	this->parameters->FindParam(&rotation,SolidearthSettingsRotationEnum);
+	this->parameters->FindParam(&elastic,SolidearthSettingsElasticEnum);
+	this->parameters->FindParam(&horiz,SolidearthSettingsHorizEnum);
+	this->parameters->FindParam(&planethasocean,SolidearthSettingsGrdOceanEnum);
+
+	if(sal){
+		parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeGViscoElasticEnum)); _assert_(parameter);
+		parameter->GetParameterValueByPointer((IssmDouble**)&G,NULL);
+
+		if(elastic){
+			parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeUViscoElasticEnum)); _assert_(parameter);
+			parameter->GetParameterValueByPointer((IssmDouble**)&GU,NULL);
+
+			if(horiz){
+				parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeHViscoElasticEnum)); _assert_(parameter);
+				parameter->GetParameterValueByPointer((IssmDouble**)&GH,NULL);
+			}
+			if (rotation) {
+				this->inputs->GetArrayPtr(SealevelchangeGrotEnum,this->lid,&Grot,&size);
+				this->inputs->GetArrayPtr(SealevelchangeGUrotEnum,this->lid,&GUrot,&size);
+				if (horiz){
+					this->inputs->GetArrayPtr(SealevelchangeGErotEnum,this->lid,&GErot,&size);
+					this->inputs->GetArrayPtr(SealevelchangeGNrotEnum,this->lid,&GNrot,&size);
+				}
+			}
+		}
+		//Relative sea level convolution
+		grdfield=this->SealevelchangeGxL(G,Grot,loads,polarmotionvector,slgeom,nel,computefuture=true);
+		this->SealevelchangeCollectGrdfield(&RSLGrd[0],grdfield,slgeom,nel,percpu=false,SealevelchangeViscousRSLEnum,computefuture=true);
+
+		if(elastic){
+			//Bedrock Uplift
+			grdfield=this->SealevelchangeGxL(GU,GUrot,loads,polarmotionvector,slgeom,nel,computefuture=true);
+			this->SealevelchangeCollectGrdfield(&UGrd[0],grdfield,slgeom,nel,percpu=false,SealevelchangeViscousUEnum,computefuture=true);
+
+			if(horiz){
+				//Bedrock North displacement
+				grdfield=this->SealevelchangeHorizGxL(spatial_component=1,GH,GNrot,loads,polarmotionvector,slgeom,nel,computefuture=true);
+				this->SealevelchangeCollectGrdfield(&NGrd[0],grdfield,slgeom,nel,percpu=false,SealevelchangeViscousNEnum,computefuture=true);
+
+				//Bedrock East displacement
+				grdfield=this->SealevelchangeHorizGxL(spatial_component=2,GH,GErot,loads,polarmotionvector,slgeom,nel,computefuture=true);
+				this->SealevelchangeCollectGrdfield(&EGrd[0],grdfield,slgeom,nel,percpu=false,SealevelchangeViscousEEnum,computefuture=true);
+			}
+		}
+	}
+
+	if (planethasocean){ //We must also output the RSL on vertices to compute the ocean mass conservation
+		for(int i=0;i<NUMVERTICES;i++){
+			if(slgeom->lids[this->vertices[i]->lid]==this->lid){
+				sealevelpercpu[this->vertices[i]->lid]=RSLGrd[i];
+			}
+		}
+	}
+
+	/*Create geoid: */
+	for(int i=0;i<NUMVERTICES;i++)SealevelGrd[i]=UGrd[i]+RSLGrd[i];
+
+	/*Create inputs*/
+	this->AddInput(SealevelGRDEnum,SealevelGrd,P1Enum);
+	this->AddInput(BedGRDEnum,UGrd,P1Enum);
+	if(horiz){
+		this->AddInput(BedNorthGRDEnum,NGrd,P1Enum);
+		this->AddInput(BedEastGRDEnum,EGrd,P1Enum);
+	}
+
+} /*}}}*/
+IssmDouble*       Tria::SealevelchangeGxL(IssmDouble* G, IssmDouble* Grot, GrdLoads* loads, IssmDouble* polarmotionvector, SealevelGeometry* slgeom, int nel, bool computefuture) { /*{{{*/
+
+	//This function performs the actual convolution between Green functions and surface Loads for a particular grd field
+	int* AlphaIndex=NULL;
+	int* AlphaIndexsub[SLGEOM_NUMLOADS];
+	int* activevertices=NULL;
+	IssmDouble* grdfield=NULL;
+	int i,e,l,t,a, index, nbar, size, av,ae,b,c;
+	bool rotation=false;
+	int nt=1; //important, ensures there is a defined value if computeviscous is false
+	int n_activevertices=0;
+
+	//viscous
+	bool computeviscous=false;
+	int viscousindex=0; //important
+	int viscousnumsteps=1; //important
+
+	this->parameters->FindParam(&computeviscous,SolidearthSettingsViscousEnum);
+	this->parameters->FindParam(&rotation,SolidearthSettingsRotationEnum);
+
+	//Get green functions indexing & geometry
+	this->inputs->GetIntArrayPtr(SealevelchangeConvolutionVerticesEnum,this->lid,&activevertices,&n_activevertices); //the order in which the vertices appear here should be the same as in slgeom->lids
+	this->inputs->GetIntArrayPtr(SealevelchangeAlphaIndexEnum,this->lid,&AlphaIndex,&size);
+	for (int l=0;l<SLGEOM_NUMLOADS;l++) this->inputs->GetIntArrayPtr(slgeom->AlphaIndexEnum(l),this->lid,&AlphaIndexsub[l],&size);
+
+	if(computeviscous){
+		this->parameters->FindParam(&viscousnumsteps,SealevelchangeViscousNumStepsEnum);
+		this->parameters->FindParam(&viscousindex,SealevelchangeViscousIndexEnum);
+		if(computefuture) {
+			nt=viscousnumsteps-viscousindex+2; //number of time steps remaining to reach final_time, +1 is sufficient with no adaptative time stepping, +2 necessary otherwise; we assume the safe choice here for the sake of simplicity
+			if (nt>viscousnumsteps) nt=viscousnumsteps;
+		}
+		else nt=1;
+	}
+	//allocate
+	grdfield=xNewZeroInit<IssmDouble>(3*nt);
+
+	//early return
+	if (n_activevertices==0) return grdfield;
+
+	if(rotation){ //add rotational feedback
+		for(av=0;av<n_activevertices;av++) { //vertices
+			i=activevertices[av];
+			//if(slgeom->lids[this->vertices[i]->lid]!=this->lid)continue;
+			b=i*nt;
+			for (int m=0;m<3;m++){ //polar motion components
+				for(t=0;t<nt;t++){ //time
+					int index=m*3*viscousnumsteps+i*viscousnumsteps+t;
+					grdfield[b+t]+=Grot[index]*polarmotionvector[m];
+				}
+			}
+		}
+	}
+
+	//Convolution
+	for(av=0;av<n_activevertices;av++) { /*{{{*/
+		i=activevertices[av];
+		//if(slgeom->lids[this->vertices[i]->lid]!=this->lid)continue;
+		b=i*nt;
+		c=av*nel;
+		for(ae=0;ae<loads->nactiveloads;ae++){
+			e=loads->combined_loads_index[ae];
+			a=AlphaIndex[c+e]*viscousnumsteps;
+			for(t=0;t<nt;t++){
+				grdfield[b+t]+=G[a+t]*loads->combined_loads[ae];
+			}
+		}
+		for(l=0;l<SLGEOM_NUMLOADS;l++){
+			nbar=slgeom->nbar[l];
+			c=av*nbar;
+			for (ae=0;ae<loads->nactivesubloads[l];ae++){
+				e=loads->combined_subloads_index[l][ae];
+				a=AlphaIndexsub[l][c+e]*viscousnumsteps;
+				for(t=0;t<nt;t++){
+					grdfield[b+t]+=G[a+t]*loads->combined_subloads[l][ae];
+				}
+			}
+		}
+		//av+=1;
+	} /*}}}*/
+
+	return grdfield;
+
+} /*}}}*/
+IssmDouble*       Tria::SealevelchangeHorizGxL(int spatial_component, IssmDouble* G, IssmDouble* Grot, GrdLoads* loads, IssmDouble* polarmotionvector, SealevelGeometry* slgeom, int nel, bool computefuture) { /*{{{*/
+
+	//This function performs the actual convolution between Green functions and surface Loads for a particular grd field
+	int* AlphaIndex=NULL;
+	int* AzimIndex=NULL;
+	int* AlphaIndexsub[SLGEOM_NUMLOADS];
+	int* AzimIndexsub[SLGEOM_NUMLOADS];
+	int* activevertices = NULL;
+	IssmDouble* grdfield=NULL;
+	int i,e,l,t,a,b,c, index, nbar, av, ae,n_activevertices, size;
+	bool rotation=false;
+	IssmDouble* projected_loads=NULL;
+	IssmDouble* projected_subloads[SLGEOM_NUMLOADS];
+	IssmDouble* horiz_projection=NULL;
+	IssmDouble* horiz_projectionsub[SLGEOM_NUMLOADS];
+	int nt=1; //important, ensures there is a defined value if computeviscous is false
+
+	//viscous
+	bool computeviscous=false;
+	int viscousindex=0; //important
+	int viscousnumsteps=1; //important
+
+	//Get green functions indexing & geometry
+	this->inputs->GetIntArrayPtr(SealevelchangeConvolutionVerticesEnum,this->lid,&activevertices,&n_activevertices);
+	this->inputs->GetIntArrayPtr(SealevelchangeAlphaIndexEnum,this->lid,&AlphaIndex,&size);
+	for (int l=0;l<SLGEOM_NUMLOADS;l++) this->inputs->GetIntArrayPtr(slgeom->AlphaIndexEnum(l),this->lid,&AlphaIndexsub[l],&size);
+	this->inputs->GetIntArrayPtr(SealevelchangeAzimuthIndexEnum,this->lid,&AzimIndex,&size);
+	for (int l=0;l<SLGEOM_NUMLOADS;l++) this->inputs->GetIntArrayPtr(slgeom->AzimuthIndexEnum(l),this->lid,&AzimIndexsub[l],&size);
+
+	//First, figure out how many time steps to compute grdfield for
+	this->parameters->FindParam(&computeviscous,SolidearthSettingsViscousEnum);
+	this->parameters->FindParam(&rotation,SolidearthSettingsRotationEnum);
+	if(computeviscous){
+		this->parameters->FindParam(&viscousnumsteps,SealevelchangeViscousNumStepsEnum);
+		this->parameters->FindParam(&viscousindex,SealevelchangeViscousIndexEnum);
+		if(computefuture) {
+			nt=viscousnumsteps-viscousindex+2; //number of time steps remaining to reach final_time, +1 is sufficient with no adaptative time stepping, +2 necessary otherwise; we assume the safe choice here for the sake of simplicity
+			if (nt>viscousnumsteps) nt=viscousnumsteps;
+		}
+		else nt=1;
+	}
+	//allocate
+	grdfield=xNewZeroInit<IssmDouble>(3*nt);
+	if (n_activevertices==0) return grdfield;
+
+	if(rotation){ //add rotational feedback
+		for(av=0;av<n_activevertices;av++) { //vertices
+			i=activevertices[av];
+			//if(slgeom->lids[this->vertices[i]->lid]!=this->lid)continue;
+			for (int m=0;m<3;m++){ //polar motion components
+				for(t=0;t<nt;t++){ //time
+					int index=m*3*viscousnumsteps+i*viscousnumsteps+t;
+					grdfield[i*nt+t]+=Grot[index]*polarmotionvector[m];
+				}
+			}
+			//}
+		}
+	}
+
+	//Initialize projection vectors
+	horiz_projection=xNewZeroInit<IssmDouble>(loads->nactiveloads);
+	projected_loads=xNewZeroInit<IssmDouble>(loads->nactiveloads);
+	for(l=0;l<SLGEOM_NUMLOADS;l++){
+		//nbar=slgeom->nbar[l];
+		projected_subloads[l]=xNewZeroInit<IssmDouble>(loads->nactivesubloads[l]);
+		horiz_projectionsub[l]=xNewZeroInit<IssmDouble>(loads->nactivesubloads[l]);
+	}
+
+
+	//Convolution
+	//av=0;
+	for(av=0;av<n_activevertices;av++) { //vertices
+		i=activevertices[av];
+		//if(slgeom->lids[this->vertices[i]->lid]!=this->lid)continue;
+		b=i*nt;
+
+		//GxL needs to be projected on the right axis before summation into the grd field
+		//here we apply the projection scalar to the load prior to the actual convolution loop for more efficiency
+
+		//get projection
+		if (spatial_component==1){ //north
+			for(ae=0;ae<loads->nactiveloads;ae++){
+				e=loads->combined_loads_index[ae];
+				horiz_projection[ae]=cos(2.0*M_PI*reCast<IssmDouble,int>(AzimIndex[av*nel+e])/65535.0); // 65535=2^16-1 = max value of 16 bits unsigned int
+			}
+			for(l=0;l<SLGEOM_NUMLOADS;l++){
+				nbar=slgeom->nbar[l];
+				for(ae=0;ae<loads->nactivesubloads[l];ae++){
+					e=loads->combined_subloads_index[l][ae];
+					horiz_projectionsub[l][ae]=cos(2.0*M_PI*reCast<IssmDouble,int>(AzimIndexsub[l][av*nbar+e])/65535.0);
+				}
+			}
+		}
+		else if (spatial_component==2){ //east
+			for(ae=0;ae<loads->nactiveloads;ae++){
+				e=loads->combined_loads_index[ae];
+				horiz_projection[ae]=sin(2.0*M_PI*reCast<IssmDouble,int>(AzimIndex[av*nel+e])/65535.0);
+			}
+			for(l=0;l<SLGEOM_NUMLOADS;l++){
+				nbar=slgeom->nbar[l];
+				for(ae=0;ae<loads->nactivesubloads[l];ae++){
+					e=loads->combined_subloads_index[l][ae];
+					horiz_projectionsub[l][ae]=sin(2.0*M_PI*reCast<IssmDouble,int>(AzimIndexsub[l][av*nbar+e])/65535.0);
+				}
+			}
+		}
+
+		//project load in the right direction 
+		for (ae=0;ae<loads->nactiveloads;ae++){
+			projected_loads[ae]=loads->combined_loads[ae]*horiz_projection[ae];
+		}
+		for(l=0;l<SLGEOM_NUMLOADS;l++){
+			nbar=slgeom->nbar[l];
+			for(ae=0;ae<loads->nactivesubloads[l];ae++){
+				projected_subloads[l][ae]=loads->combined_subloads[l][ae]*horiz_projectionsub[l][ae];
+			}
+		}
+
+		//do the convolution
+		c=av*nel;
+		for(ae=0;ae<loads->nactiveloads;ae++){
+			e=loads->combined_loads_index[ae];
+			a=AlphaIndex[c+e]*viscousnumsteps;
+			for(t=0;t<nt;t++){
+				grdfield[b+t]+=G[a+t]*projected_loads[ae];
+			}
+		}
+		for(l=0;l<SLGEOM_NUMLOADS;l++){
+			nbar=slgeom->nbar[l];
+			c=av*nbar;
+			for(ae=0;ae<loads->nactivesubloads[l];ae++){
+				e=loads->combined_subloads_index[l][ae];
+				a=AlphaIndexsub[l][c+e]*viscousnumsteps;
+				for(t=0;t<nt;t++){
+					grdfield[b+t]+=G[a+t]*projected_subloads[l][ae];
+				}
+			}
+		}
+		//av+=1;
+	} /*}}}*/
+
+
+	//free resources
+	xDelete<IssmDouble>(horiz_projection);
+	xDelete<IssmDouble>(projected_loads);
+	for(l=0;l<SLGEOM_NUMLOADS;l++) {
+		xDelete<IssmDouble>(projected_subloads[l]);
+		xDelete<IssmDouble>(horiz_projectionsub[l]);
+	}
+	return grdfield;
+
+} /*}}}*/
+
+
+void       Tria::SealevelchangeCollectGrdfield(IssmDouble* grdfieldout, IssmDouble* grdfield, SealevelGeometry* slgeom, int nel, bool percpu, int viscousenum, bool computefuture) { /*{{{*/
+
+	//This function aligns grdfield with the requested output format: in a size 3 vector or in a size numberofvertices vector
+	// if compute viscous is on, we also interpolate the field timewise given the current timestepping as well as collect viscous deformation and update the viscous deformation time series for future time steps
+	int i,e,l,t,a, index, nbar, av, n_activevertices;
+	int nt=1;
+
+
+	//viscous
+	bool computeviscous=false;
+	int viscousindex=0; //important
+	int viscousnumsteps=1; //important
+	int* activevertices = NULL;
+	IssmDouble* viscousfield=NULL;
+	IssmDouble* grdfieldinterp=NULL;
+	IssmDouble* viscoustimes=NULL;
+	IssmDouble  final_time;
+	IssmDouble  lincoeff;
+	IssmDouble  timeacc;
+
+	//parameters & initialization
+	this->parameters->FindParam(&computeviscous,SolidearthSettingsViscousEnum);
+	this->inputs->GetIntArrayPtr(SealevelchangeConvolutionVerticesEnum,this->lid,&activevertices,&n_activevertices);
+
+	if(computeviscous){
+		this->parameters->FindParam(&viscousnumsteps,SealevelchangeViscousNumStepsEnum);
+		this->parameters->FindParam(&viscousindex,SealevelchangeViscousIndexEnum);
+		this->parameters->FindParam(&viscoustimes,NULL,SealevelchangeViscousTimesEnum);
+		this->parameters->FindParam(&final_time,TimesteppingFinalTimeEnum);
+		this->parameters->FindParam(&timeacc,SolidearthSettingsTimeAccEnum);
+		this->inputs->GetArrayPtr(viscousenum,this->lid,&viscousfield,NULL);
+		if(computefuture) {
+			nt=viscousnumsteps-viscousindex+2; //number of time steps remaining to reach final_time, +1 is sufficient with no adaptative time stepping, +2 necessary otherwise; we assume the safe choice here for the sake of simplicity
+			if (nt>viscousnumsteps) nt=viscousnumsteps;
+			grdfieldinterp=xNewZeroInit<IssmDouble>(3*viscousnumsteps); 
+		}
+		else nt=1;
+	}
+	
+
+	if(!computeviscous){ /*{{{*/
+		/*elastic or self attraction only case
+		  store values computed on vertices, but don't repeat the computation if another element already computed it!:*/
+		if(percpu){
+			for(av=0;av<n_activevertices;av++) { //vertices
+				i=activevertices[av];
+				//if(slgeom->lids[this->vertices[i]->lid]!=this->lid)continue;
+				grdfieldout[this->vertices[i]->lid]=grdfield[i];
+				//}
+			}
+		}
+		else{
+			for(i=0;i<NUMVERTICES;i++) grdfieldout[i]=grdfield[i];
+		}
+		//free resources
+		xDelete<IssmDouble>(grdfield);
+		return;
+	}
+	else { //viscous case
+		// we need to do up to 3 things (* = only if computefuture)
+		// 1: collect viscous grdfield from past loads due at present-day and add it to grdfield[current_time]
+		// 2*: add new grdfield contribution to the viscous stack for future time steps
+		// 3*: subtract from viscous stack the grdfield that has already been accounted for so we don't add it again at the next time step
+
+		/*update grdfield at present time using viscous stack at present time: */
+		for(av=0;av<n_activevertices;av++) { //vertices
+			i=activevertices[av];
+			//if(slgeom->lids[this->vertices[i]->lid]!=this->lid)continue;
+			grdfield[i*nt+0]+=viscousfield[i*viscousnumsteps+viscousindex]; 
+		}
+
+
+		/* Map new grdfield generated by present-day loads onto viscous time vector*/
+		if(computefuture){
+			//viscousindex time and first time step of grdfield coincide, so just copy that value
+			for(av=0;av<n_activevertices;av++) { //vertices
+				i=activevertices[av];
+				//if(slgeom->lids[this->vertices[i]->lid]!=this->lid)continue;
+				grdfieldinterp[i*viscousnumsteps+viscousindex]=grdfield[i*nt+0];
+			}
+			if(viscoustimes[viscousindex]<final_time){
+				//And interpolate the rest of the points in the future
+				lincoeff=(viscoustimes[viscousindex+1]-viscoustimes[viscousindex])/timeacc;
+				for(av=0;av<n_activevertices;av++) { //vertices
+					i=activevertices[av];
+					//if(slgeom->lids[this->vertices[i]->lid]!=this->lid)continue;
+					int i_time1= i*nt-viscousindex;
+					int i_time2= i*viscousnumsteps;
+					for(int t=viscousindex+1;t<viscousnumsteps;t++){
+						grdfieldinterp[i_time2+t] = (1-lincoeff)*grdfield[i_time1+t-1]
+									  +    lincoeff *grdfield[i_time1+t]
+									  +          viscousfield[i_time2+t];
+						/*update viscous stack with future deformation from present load: */
+						viscousfield[i_time2+t]=grdfieldinterp[i_time2+t]
+								       -grdfieldinterp[i_time2+viscousindex];
+					}
+				}
+			}
+			/*Save viscous stack now that we updated the values:*/
+			this->inputs->SetArrayInput(viscousenum,this->lid,viscousfield,3*viscousnumsteps);
+		}
+
+		/*store values computed on vertices*/
+		if(percpu){
+			for(av=0;av<n_activevertices;av++) { //vertices
+				i=activevertices[av];
+				//if(slgeom->lids[this->vertices[i]->lid]!=this->lid)continue;
+				grdfieldout[this->vertices[i]->lid]=grdfield[i*nt+0];
+				//}
+			}
+		}
+		else{
+			for(i=0;i<NUMVERTICES;i++) grdfieldout[i]=grdfield[i*nt+0];
+		}
+		//free resources
+		xDelete<IssmDouble>(grdfield);
+		xDelete<IssmDouble>(viscoustimes);
+		if (computefuture){
+			xDelete<IssmDouble>(grdfieldinterp);
+		}
+		/*}}}*/
+	}
+} /*}}}*/
+
+void       Tria::SealevelchangeShift(GrdLoads* loads,  IssmDouble offset, SealevelGeometry* slgeom){ /*{{{*/
+
+	offset*=slgeom->LoadArea[SLGEOM_OCEAN][this->lid]; //kg.m^-2 to kg 
+	if(slgeom->isoceanin[this->lid]){
+		if(slgeom->issubelement[SLGEOM_OCEAN][this->lid]){
+			int intj=slgeom->subelementmapping[SLGEOM_OCEAN][this->lid];
+			loads->vsubsealevelloads->SetValue(intj,offset,ADD_VAL);
+		}
+		else loads->vsealevelloads->SetValue(this->sid,offset,ADD_VAL);
+	}
+
+} /*}}}*/
+#endif
+
+#ifdef _HAVE_DAKOTA_
+void       Tria::InputScaleFromDakota(IssmDouble* distributed_values, IssmDouble* partition, int npart, int nt, int name){/*{{{*/
+
+	int interp;
+	int type;
+
+	/*Branch according to whether we have a transient or not input: */
+	type=this->inputs->GetInputObjectEnum(name);
+	if(type==TriaInputEnum){
+		/*Figure out if we are P0 or P1 interpolation: */
+		TriaInput* triainput = this->inputs->GetTriaInput(name);
+		TriaInput* triainput2 = this->inputs->GetTriaInput(DummyEnum);
+		this->InputServe(triainput);
+		interp=triainput->GetInterpolation();
+
+		if (interp==P0Enum){
+			/*Update the value if this element belongs to the partition: */
+			if(partition[this->Sid()]!=-1){
+				/*scale P0 value  for this element, corresponding to the partition:*/
+				IssmDouble value = triainput->element_values[0];
+				value*=distributed_values[(int)partition[this->Sid()]];
+				triainput2->SetInput(P0Enum,this->lid,value);
+			}
+		}
+		else if (interp==P1Enum){
+			IssmDouble values[NUMVERTICES];
+			int lidlist[NUMVERTICES];
+			this->GetVerticesLidList(&lidlist[0]);
+			for (int i=0;i<NUMVERTICES;i++){
+				values[i]=triainput->element_values[i];
+				if(partition[this->vertices[i]->Sid()]!=-1) values[i]*=distributed_values[(int)partition[this->vertices[i]->Sid()]];
+			}
+			triainput2->SetInput(P1Enum,NUMVERTICES,&lidlist[0],&values[0]);
+		}
+		else _error_("Tria::InputScaleFromDakota error message: input interpolation " << EnumToStringx(interp) << " not supported yet!");
+	}
+	else if(type==TransientInputEnum){
+
+		IssmDouble* steps=NULL;
+		int nsteps;
+		TransientInput* transientinput = NULL;
+		TransientInput* transientinput2 = NULL;
+
+		/*retrieve transient input:*/
+		transientinput= this->inputs->GetTransientInput(name); _assert_(transientinput);
+		transientinput2= this->inputs->GetTransientInput(DummyEnum); _assert_(transientinput2);
+
+		/*retrieve time steps: */
+		transientinput->GetAllTimes(&steps,&nsteps);
+
+		/*double check:*/
+		if (nsteps!=nt && nt!=1) _error_("Tria:InputScaleFromDakota error message: transient input " << EnumToStringx(name) <<  
+				" should have the same number of time steps as the number of time values distributed by Dakota: " << nt << "\n");
+
+		/*needed to update inputs:*/
+		int lidlist[NUMVERTICES];
+		this->GetVerticesLidList(&lidlist[0]);
+
+		/*go through the transient inputs, and update:*/
+		for (int i=0;i<nsteps;i++){
+			TriaInput* triainput=transientinput->GetTriaInput(i);
+			TriaInput* triainput2=transientinput2->GetTriaInput(i);
+			this->InputServe(triainput);
+			interp=triainput->GetInterpolation();
+
+			if (interp==P0Enum){
+				/*Update the value if this element belongs to the partition: */
+				if(partition[this->Sid()]!=-1){
+					/*scale P0 value  for this element, corresponding to the partition:*/
+					IssmDouble value = triainput->element_values[0];
+					if(nt==1) value*=distributed_values[(int)partition[this->Sid()]]; //we scale all the time steps  with the same distributed_value 
+					else value*=distributed_values[(int)partition[this->Sid()]*nsteps+i]; //we scale all the time steps with distributed value for each step
+
+					triainput2->SetInput(P0Enum,this->lid,value);
+				}
+			}
+			else if (interp==P1Enum){
+				IssmDouble values[NUMVERTICES];
+				for (int j=0;j<NUMVERTICES;j++){
+					values[j]=triainput->element_values[j];
+					if(partition[this->vertices[j]->Sid()]!=-1){
+						if(nt==1) values[j]*=distributed_values[(int)partition[this->vertices[j]->Sid()]];//we scale all the time steps  with the same distributed_value 
+						else values[j]*=distributed_values[(int)partition[this->vertices[j]->Sid()]*nsteps+i];//we scale all the time steps with distributed value for each step
+					}
+				}
+				triainput2->SetInput(P1Enum,NUMVERTICES,&lidlist[0],&values[0]);
+			}
+			else _error_("Tria::InputScaleFromDakota error message: input interpolation " << EnumToStringx(interp) << " not supported yet!");
+		}
+	}
+	else _error_("Tria::InputScaleFromDakota error message: input type " << EnumToStringx(name) << " not supported yet!");
+}
+/*}}}*/
+void       Tria::InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols, int name, int type){/*{{{*/
+
+	/*Check that name is an element input*/
+	if(!IsInputEnum(name)) _error_("Enum "<<EnumToStringx(name)<<" is not in IsInput");
+	TransientInput* transientinput = inputs->GetTransientInput(name);
+
+	switch(type){
+
+		case VertexEnum:
+
+			/*Get LID lists once for all*/
+			IssmDouble  values[NUMVERTICES];
+			int         lidlist[NUMVERTICES];
+			this->GetVerticesLidList(&lidlist[0]);
+
+			/*Create transient input: */
+			for(int t=0;t<ncols;t++){ //ncols is the number of times
+				for(int i=0;i<3;i++){
+					int row=this->vertices[i]->Sid();
+					values[i]=matrix[ncols*row+t];
+				}
+
+				/*time:*/
+				IssmDouble time=matrix[(nrows-1)*ncols+t];
+
+				transientinput->AddTriaTimeInput(t,NUMVERTICES,&lidlist[0],&values[0],P1Enum);
+			}
+			break;
+
+		case ElementEnum:
+			/*Get value for the element: */
+			for(int t=0;t<ncols;t++){ //ncols is the number of times
+				IssmDouble value=matrix[ncols*(this->Sid())+t];
+				IssmDouble time=matrix[(nrows-1)*ncols+t];
+				transientinput->AddTriaTimeInput(t,1,&(this->lid),&value,P0Enum);
+			}
+			break;
+
+		default:
+			_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
+	}
+}
+/*}}}*/
+void       Tria::InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*{{{*/
+
+	int i,j;
+
+	/*Check that name is an element input*/
+	if(!IsInputEnum(name)) _error_("Enum "<<EnumToStringx(name)<<" is not in IsInput");
+
+	switch(type){
+
+		case VertexEnum:
+
+			/*New TriaInput*/
+			IssmDouble values[3];
+
+			/*Get values on the 3 vertices*/
+			for (i=0;i<3;i++){
+				values[i]=vector[this->vertices[i]->Sid()]; //careful, vector of values here is not parallel distributed, but serial distributed (from a serial Dakota core!)
+			}
+
+			/*Branch on the specified type of update: */
+			switch(name){
+				case ThicknessEnum:
+					IssmDouble  thickness[3];
+					IssmDouble  thickness_init[3];
+					IssmDouble  hydrostatic_ratio[3];
+					IssmDouble  surface[3];
+					IssmDouble  bed[3];
+
+					/*retrieve inputs: */
+					Element::GetInputListOnVertices(&thickness_init[0],ThicknessEnum);
+					Element::GetInputListOnVertices(&hydrostatic_ratio[0],GeometryHydrostaticRatioEnum);
+					Element::GetInputListOnVertices(&bed[0],BaseEnum);
+					Element::GetInputListOnVertices(&surface[0],SurfaceEnum);
+
+					/*build new bed and surface: */
+					if (this->IsAllFloating()){
+						/*hydrostatic equilibrium: */
+						IssmDouble rho_ice,rho_water,di;
+						rho_ice   = this->FindParam(MaterialsRhoIceEnum);
+						rho_water = this->FindParam(MaterialsRhoSeawaterEnum);
+						di        = rho_ice/rho_water;
+
+						/*build new thickness: */
+						for (j=0; j<3; j++) {
+							/*  for observed/interpolated/hydrostatic thickness, remove scaling from any hydrostatic thickness  */
+							if (hydrostatic_ratio[j] >= 0.)
+								thickness[j]=values[j]-(values[j]/thickness_init[j]-1.)*hydrostatic_ratio[j]*surface[j]/(1.-di);
+							/*  for minimum thickness, don't scale  */
+							else
+								thickness[j]=thickness_init[j];
+
+							/*  check the computed thickness and update bed*/
+							if (thickness[j] < 0.) thickness[j]=1./(1.-di);
+							bed[j]=surface[j]-thickness[j];
+						}
+					}
+					else{
+						/*build new thickness: */
+						for (j=0; j<3; j++) {
+							/*  for observed thickness, use scaled value  */
+							if (hydrostatic_ratio[j] >= 0.)
+								thickness[j]=values[j];
+							/*  for minimum thickness, don't scale  */
+							else
+								thickness[j]=thickness_init[j];
+						}
+
+						/*update bed on grounded ice: */
+						for(j=0;j<3;j++)bed[j]=surface[j]-thickness[j];
+					}
+
+					/*Add new inputs: */
+					this->AddInput(ThicknessEnum,thickness,P1Enum);
+					this->AddInput(BaseEnum,bed,P1Enum);
+					this->AddInput(SurfaceEnum,surface,P1Enum);
+
+					break;
+				case MaterialsRheologyBEnum:
+					this->AddInput(MaterialsRheologyBbarEnum,values,P1Enum);
+					break;
+				default:
+					this->AddInput(name,values,P1Enum);
+			}
+			break;
+
+		case ElementEnum:
+			IssmDouble value;
+			/*Get value for the element: */
+			value=vector[this->Sid()]; //careful, vector of values here is not parallel distributed, but serial distributed (from a serial Dakota core!)
+			this->AddInput(name,&value,P0Enum);
+			break;
+		default:
+			_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
+	}
+
+}
+/*}}}*/
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Tria.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/Tria.h	(revision 27955)
@@ -0,0 +1,257 @@
+/*! \file Tria.h
+ *  \brief: header file for tria object
+ */
+
+#ifndef _TRIA_H_
+#define _TRIA_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Element.h"
+#include "./ElementHook.h"
+#include "./TriaRef.h"
+class Parameters;
+class Inputs;
+class IoModel;
+class Results;
+class Node;
+class Material;
+class Matlitho;
+class Seg;
+class ElementMatrix;
+class ElementVector;
+class Vertex;
+class GaussTria;
+
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/Enum/Enum.h"
+/*}}}*/
+
+class Tria: public Element,public ElementHook,public TriaRef{
+
+	public:
+		int iscollapsed;
+
+		/*Tria constructors, destructors {{{*/
+		Tria(){};
+		Tria(int tria_id,int tria_sid,int tria_lid,IoModel* iomodel,int nummodels);
+		~Tria();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object *copy();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{*/
+		#ifdef _HAVE_DAKOTA_
+		void  InputUpdateFromMatrixDakota(IssmDouble* matrix, int nows, int ncols, int name, int type);
+		void  InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type);
+		void  InputScaleFromDakota(IssmDouble* distributed_values, IssmDouble* partition, int npart, int nt, int name);
+		#endif
+		void  InputUpdateFromIoModel(int index, IoModel* iomodel);
+		void  InputUpdateFromVector(IssmDouble* vector, int name, int type);
+		/*}}}*/
+		/*Element virtual functions definitions: {{{*/
+		void        AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part);
+		void			CalvingRateVonmises();
+		void			CalvingRateVonmisesAD();
+		void			CalvingRateTest();
+		void        CalvingCrevasseDepth();
+		void			CalvingRateLevermann();
+		void			CalvingPollard();
+		void			CalvingFluxLevelset();
+		void			CalvingMeltingFluxLevelset();
+		void			CalvingRateParameterization();
+		void			CalvingRateCalvingMIP();
+		IssmDouble  CharacteristicLength(void);
+		void        ComputeBasalStress(void);
+		void        ComputeDeviatoricStressTensor();
+		void        ComputeEsaStrainAndVorticity();
+		void        ComputeSigmaNN();
+		void        ComputeSigmaVM();
+		void        ComputeStressTensor();
+		void        ComputeSurfaceNormalVelocity();
+		void        Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters,Inputs* inputsin);
+		void        ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index,int offset,int M,int N,int interp);
+		void        ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum,int control_interp);
+		void        CreateDistanceInputFromSegmentlist(IssmDouble* distances,int distanceenum);
+		void        ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze, Vector<IssmDouble>* vareae, bool spherical=false);
+		void        ElementCoordinates(Vector<IssmDouble>* vlonge,Vector<IssmDouble>* vlate,Vector<IssmDouble>* vareae);
+		int         EdgeOnBaseIndex();
+		void        EdgeOnBaseIndices(int* pindex1,int* pindex);
+		int         EdgeOnSurfaceIndex();
+		void        EdgeOnSurfaceIndices(int* pindex1,int* pindex);
+		void        ElementResponse(IssmDouble* presponse,int response_enum);
+		void        ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz);
+		int         FiniteElement(void);
+		IssmDouble  FloatingArea(bool scaled);
+		void        FSContactMigration(Vector<IssmDouble>* vertex_sigmann,Vector<IssmDouble>* vertex_waterpressure);
+		Element*    GetBasalElement(void){_error_("not implemented yet");};
+		void        GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* levelsetvalues);
+		void        GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating);
+		IssmDouble  GetGroundedPortion(IssmDouble* xyz_list);
+		void        GetFractionGeometry(IssmDouble* weights, IssmDouble* pphi, int* ppoint1,IssmDouble* pfraction1,IssmDouble* pfraction2, bool* ptrapezeisnegative, IssmDouble* gl);
+		void        GetNodalWeightsAndAreaAndCentroidsFromLeveset(IssmDouble* loadweights, IssmDouble* ploadarea, IssmDouble* platbar, IssmDouble* plongbar, IssmDouble late, IssmDouble longe, IssmDouble area,  int levelsetenum);
+		void        GetNodalWeightsAndAreaAndCentroidsFromLeveset(IssmDouble* loadweights, IssmDouble* ploadarea, IssmDouble* platbar, IssmDouble* plongbar, IssmDouble late, IssmDouble longe, IssmDouble area, int levelset1enum, int levelset2enum);
+		void        GetBarycenterFromLevelset(IssmDouble* platbar, IssmDouble* plongbar,IssmDouble phi,IssmDouble fraction1,IssmDouble fraction2,IssmDouble late, IssmDouble longe, int point1,int istrapeze1, IssmDouble planetradius);
+		IssmDouble  GetTriangleAreaSpherical(IssmDouble xyz_list[3][3]);
+		IssmDouble  GetIcefrontArea();
+		void	      GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum);
+		void        GetInputListOnVertices(IssmDouble* pvalue,Input* input,IssmDouble default_value);
+		void        GetInputListOnNodes(IssmDouble* pvalue,Input* input,IssmDouble default_value);
+		void	      GetLevelCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum,IssmDouble level);
+		int         GetVertexIndex(Vertex* vertex);
+		int         GetNumberOfNodes(void);
+		int         GetNumberOfNodes(int enum_type);
+		int         GetNumberOfVertices(void);
+		void        GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,int N,const char* data,int offset);
+		void        GetVerticesCoordinatesBase(IssmDouble** pxyz_list);
+		void        GetVerticesCoordinatesTop(IssmDouble** pxyz_list);
+		IssmDouble  GroundedArea(bool scaled);
+		bool        HasEdgeOnBase();
+		bool        HasEdgeOnSurface();
+		IssmDouble  IceVolume(bool scaled);
+		IssmDouble  IceVolumeAboveFloatation(bool scaled);
+		IssmDouble  IcefrontMassFlux(bool scaled);
+		IssmDouble  IcefrontMassFluxLevelset(bool scaled);
+		IssmDouble  GroundinglineMassFlux(bool scaled);
+		void        InputDepthAverageAtBase(int enum_type,int average_enum_type);
+		void        InputExtrude(int enum_type,int start){_error_("not implemented"); /*For penta only*/};
+		void        ControlInputExtrude(int enum_type,int start){/*For penta only*/};
+		bool	   	IsFaceOnBoundary(void);
+		bool	   	IsIcefront(void);
+		bool        IsNodeOnShelfFromFlags(IssmDouble* flags);
+		bool        IsZeroLevelset(int levelset_enum);
+		IssmDouble  Masscon(IssmDouble* levelset);
+		IssmDouble  MassFlux(IssmDouble* segment);
+		IssmDouble  MassFlux(IssmDouble x1,IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id);
+		void        MaterialUpdateFromTemperature(void){_error_("not implemented yet");};
+		IssmDouble  Misfit(int modelenum,int observationenum,int weightsenum);
+		IssmDouble  MisfitArea(int weightsenum);
+		int         NodalValue(IssmDouble* pvalue, int index, int natureofdataenum);
+		int         NumberofNodesPressure(void);
+		int         NumberofNodesVelocity(void);
+		void        PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding);
+		int         PressureInterpolation();
+		void        ReduceMatrices(ElementMatrix* Ke,ElementVector* pe);
+		void        ResetFSBasalBoundaryCondition(void);
+		void        ResetHooks();
+		void        ResetLevelsetFromSegmentlist(IssmDouble* segments,int numsegments);
+		void        SetElementInput(int enum_in,IssmDouble value);
+		void        SetElementInput(int enum_in,IssmDouble value,int type);
+		void        SetElementInput(Inputs* inputs,int enum_in,IssmDouble value);
+		void        SetElementInput(Inputs* inputs,int numindices,int* indices,IssmDouble* values,int enum_in);
+		void        SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index,int offset,int M,int N);
+		void        SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters);
+	   Element*    SpawnBasalElement(bool depthaverage_materials);
+		Element*    SpawnTopElement(void);
+		bool        IsSpawnedElement(void);
+		void			StrainRateparallel();
+		void			StrainRateperpendicular();
+		void        StressIntensityFactor(void){_error_("not implemented yet");};
+		IssmDouble  SurfaceArea(void);
+		int         TensorInterpolation();
+		IssmDouble  TimeAdapt();
+		IssmDouble  TotalCalvingFluxLevelset(bool scaled);
+		IssmDouble  TotalCalvingMeltingFluxLevelset(bool scaled);
+		IssmDouble  TotalFloatingBmb(bool scaled);
+		IssmDouble  TotalGroundedBmb(bool scaled);
+		IssmDouble  TotalSmb(bool scaled);
+		IssmDouble  TotalSmbMelt(bool scaled);
+		IssmDouble  TotalSmbRefreeze(bool scaled);
+		void        Update(Inputs* inputs,int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement);
+		int         UpdatePotentialUngrounding(IssmDouble* vertices_potentially_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf);
+		void        ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss);
+		void        ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss);
+		int         VelocityInterpolation();
+		int         VertexConnectivity(int vertexindex);
+		void        VerticalSegmentIndices(int** pindices,int* pnumseg){_error_("not implemented yet");};
+		void        VerticalSegmentIndicesBase(int** pindices,int* pnumseg){_error_("not implemented yet");};
+		void			WriteFieldIsovalueSegment(DataSet* segments,int fieldenum,IssmDouble fieldvalue);
+
+		#ifdef _HAVE_ESA_
+		void    EsaGeodetic2D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,  Vector<IssmDouble>* pX,Vector<IssmDouble>* pY,IssmDouble* xx,IssmDouble* yy);
+		void    EsaGeodetic3D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz);
+		#endif
+		#ifdef _HAVE_SEALEVELCHANGE_
+		void       GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,Matlitho* litho, IssmDouble* x,IssmDouble* y);
+		void       SealevelchangeGeometryInitial(IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae, int* lids, int* vcount);
+		void       SealevelchangeGeometrySubElementKernel(SealevelGeometry* slgeom);
+		void       SealevelchangeGeometrySubElementLoads(SealevelGeometry* slgeom, IssmDouble* areae);
+		void       SealevelchangeGeometryCentroidLoads(SealevelGeometry* slgeom, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae);
+		void       SealevelchangeBarystaticLoads(GrdLoads* loads, BarystaticContributions* barycontrib, SealevelGeometry* slgeom);
+		void       SealevelchangeConvolution(IssmDouble* sealevelpercpu, GrdLoads* loads, IssmDouble* rotationvector,SealevelGeometry* slgeom);
+		void       SealevelchangeOceanAverage(GrdLoads* loads, Vector<IssmDouble>* oceanareas, Vector<IssmDouble>* subelementoceanareas, IssmDouble* sealevelpercpu, SealevelGeometry* slgeom);
+		void       SealevelchangeDeformationConvolution(IssmDouble* sealevelpercpu, GrdLoads* loads, IssmDouble* rotationvector,SealevelGeometry* slgeom);
+		void       SealevelchangeShift(GrdLoads* loads,  IssmDouble offset, SealevelGeometry* slgeom);
+		void       SealevelchangeUpdateViscousFields(IssmDouble lincoeff, int newindex, int offset);
+		#endif
+		/*}}}*/
+		/*Tria specific routines:{{{*/
+		void           AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum);
+		void           AddInput(int input_enum, IssmDouble* values, int interpolation_enum);
+		void           AddControlInput(int input_enum,Inputs* inputs,IoModel* iomodel,IssmDouble* values,IssmDouble* values_min,IssmDouble* values_max, int interpolation_enum,int id);
+		void           DatasetInputCreate(IssmDouble* array,int M,int N,int* individual_enums,int num_inputs,Inputs* inputs,IoModel* iomodel,int input_enum);
+		void           CreateInputTimeAverage(int transientinput_enum,int averagedinput_enum,IssmDouble init_time,IssmDouble end_time,int averaging_method);
+		void           GetInputAveragesUpToCurrentTime(int input_enum,IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime);
+		IssmDouble     GetArea(void);
+		IssmDouble     GetHorizontalSurfaceArea(void);
+		IssmDouble 	   GetArea3D(void);
+		IssmDouble 	   GetAreaIce(void);
+		IssmDouble 	   GetAreaSpherical(void);
+		void           GetAreaCoordinates(IssmDouble *area_coordinates,IssmDouble* xyz_zero,IssmDouble* xyz_list,int numpoints);
+		int            GetElementType(void);
+		Input*        GetInput(int enumtype);
+		Input*        GetInput(int enumtype,IssmDouble time);
+		Input*        GetInput(int inputenum,IssmDouble start_time,IssmDouble end_time,int averaging_method);
+		DatasetInput* GetDatasetInput(int inputenum);
+		void           GetInputValue(IssmDouble* pvalue,Node* node,int enumtype);
+		void           GetInputValue(IssmDouble* pvalue,Vertex* vertex,int enumtype);
+		void		      GetLevelsetIntersection(int** pindices, int* pnumiceverts, IssmDouble* fraction, int levelset_enum, IssmDouble level);
+		void           GetMaterialInputValue(IssmDouble* pvalue,Node* node,int enumtype);
+		void	         InputUpdateFromSolutionOneDof(IssmDouble* solution,int enum_type);
+		void	         InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solution,int enum_type){_error_("not implemented yet");};
+		void           JacobianDeterminant(IssmDouble*  pJdet, IssmDouble* xyz_list,Gauss* gauss);
+		void           JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
+		void           JacobianDeterminantLine(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void           JacobianDeterminantSurface(IssmDouble*  pJdet, IssmDouble* xyz_list,Gauss* gauss);
+		void           JacobianDeterminantTop(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
+		IssmDouble     MinEdgeLength(IssmDouble* xyz_list){_error_("not implemented yet");};
+		void	       MovingFrontalVelocity(void);
+		Gauss*         NewGauss(void);
+		Gauss*         NewGauss(int order);
+        Gauss*         NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order);
+        Gauss*         NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order);
+        Gauss*         NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,int order);
+        Gauss*         NewGauss(IssmDouble fraction1,IssmDouble fraction2,int order);
+        Gauss*         NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert);
+		Gauss*         NewGaussBase(int order);
+		Gauss*         NewGaussLine(int vertex1,int vertex2,int order){_error_("not implemented yet");};
+		Gauss*         NewGaussTop(int order);
+		void           NodalFunctions(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void           NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void           NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void           NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsP1(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
+		void           NodalFunctionsP2(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsTensor(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss);
+		void           NormalBase(IssmDouble* normal,IssmDouble* xyz_list);
+		void           NormalSection(IssmDouble* normal,IssmDouble* xyz_list);
+		void           NormalTop(IssmDouble* normal,IssmDouble* xyz_list);
+		void           SetTemporaryElementType(int element_type_in){_error_("not implemented yet");};
+		void           InputServe(Input* input_in);
+		Seg*	       SpawnSeg(int index1,int index2);
+		IssmDouble     StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){_error_("not implemented yet");};
+		void           StabilizationParameterAnisotropic(IssmDouble* tau_parameter_ansiotropic, IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble hx, IssmDouble hy, IssmDouble hz, IssmDouble kappa){_error_("not implemented yet");};
+		void           UpdateConstraintsExtrudeFromBase(void);
+		void           UpdateConstraintsExtrudeFromTop(void);
+		IssmDouble*    SealevelchangeGxL(IssmDouble* G, IssmDouble* Grot, GrdLoads* loads, IssmDouble* polarmotionvector, SealevelGeometry* slgeom, int nel, bool computefuture);
+		IssmDouble*    SealevelchangeHorizGxL(int spatial_component, IssmDouble* G, IssmDouble* Grot, GrdLoads* loads, IssmDouble* polarmotionvector, SealevelGeometry* slgeom, int nel, bool computefuture);
+		void	       SealevelchangeCollectGrdfield(IssmDouble* grdfieldout, IssmDouble* grdfield, SealevelGeometry* slgeom, int nel, bool percpu, int viscousenum, bool computefuture);
+		/*}}}*/
+
+};
+#endif  /* _TRIA_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/TriaRef.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/TriaRef.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/TriaRef.cpp	(revision 27955)
@@ -0,0 +1,535 @@
+/*!\file TriaRef.c
+ * \brief: implementation of the TriaRef object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMNODESP0  1
+#define NUMNODESP1  3
+#define NUMNODESP1b 4
+#define NUMNODESP2  6
+#define NUMNODESP2b 7
+#define NUMNODESMAX 7
+
+/*Object constructors and destructor*/
+TriaRef::TriaRef(){/*{{{*/
+}
+/*}}}*/
+TriaRef::~TriaRef(){/*{{{*/
+}
+/*}}}*/
+
+/*Reference Element numerics*/
+void TriaRef::GetInputDerivativeValue(IssmDouble* p, IssmDouble* plist,IssmDouble* xyz_list, Gauss* gauss,int finiteelement){/*{{{*/
+	/*From node values of parameter p (plist[0],plist[1],plist[2]), return parameter derivative value at gaussian
+	 * point specified by gauss_basis:
+	 *   dp/dx=plist[0]*dh1/dx+plist[1]*dh2/dx+plist[2]*dh3/dx
+	 *   dp/dx=plist[0]*dh1/dx+plist[1]*dh2/dx+plist[2]*dh3/dx
+	 *
+	 * p is a vector already allocated.
+	 *
+	 * WARNING: For a significant gain in performance, it is better to use
+	 * static memory allocation instead of dynamic.
+	 */
+
+	/*Allocate derivatives of basis functions*/
+	IssmDouble  dbasis[2*NUMNODESMAX];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+	_assert_(numnodes<=NUMNODESMAX);
+
+	/*Get basis functions derivatives at this point*/
+	GetNodalFunctionsDerivatives(&dbasis[0],xyz_list,gauss,finiteelement);
+
+	/*Calculate parameter for this Gauss point*/
+	IssmDouble dpx=0.;
+	IssmDouble dpy=0.;
+	for(int i=0;i<numnodes;i++) dpx += dbasis[0*numnodes+i]*plist[i];
+	for(int i=0;i<numnodes;i++) dpy += dbasis[1*numnodes+i]*plist[i];
+
+	/*Assign values*/
+	p[0]=dpx;
+	p[1]=dpy;
+
+}
+/*}}}*/
+void TriaRef::GetInputValue(IssmDouble* p, IssmDouble* plist, Gauss* gauss,int finiteelement){/*{{{*/
+	/* WARNING: For a significant gain in performance, it is better to use
+	 * static memory allocation instead of dynamic.*/
+
+	/*Allocate basis functions*/
+	IssmDouble  basis[NUMNODESMAX];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+	_assert_(numnodes<=NUMNODESMAX);
+
+	/*Get basis functions at this point*/
+	GetNodalFunctions(&basis[0],gauss,finiteelement);
+
+	/*Calculate parameter for this Gauss point*/
+	IssmDouble value =0.;
+	for(int i=0;i<numnodes;i++) value += basis[i]*plist[i];
+
+	/*Assign output pointer*/
+	*p = value;
+}
+/*}}}*/
+void TriaRef::GetJacobian(IssmDouble* J, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*The Jacobian is constant over the element, discard the gaussian points.
+	 * J is assumed to have been allocated of size 2x2.*/
+
+	IssmDouble x1 = xyz_list[3*0+0];
+	IssmDouble y1 = xyz_list[3*0+1];
+	IssmDouble x2 = xyz_list[3*1+0];
+	IssmDouble y2 = xyz_list[3*1+1];
+	IssmDouble x3 = xyz_list[3*2+0];
+	IssmDouble y3 = xyz_list[3*2+1];
+
+	J[2*0+0] = 0.5*(x2-x1);
+	J[2*1+0] = SQRT3/6.0*(2*x3-x1-x2);
+	J[2*0+1] = 0.5*(y2-y1);
+	J[2*1+1] = SQRT3/6.0*(2*y3-y1-y2);
+}
+/*}}}*/
+void TriaRef::GetJacobianDeterminant(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*The Jacobian determinant is constant over the element, discard the gaussian points.
+	 * J is assumed to have been allocated of size 2x2.*/
+	IssmDouble J[2][2];
+
+	/*Get Jacobian*/
+	GetJacobian(&J[0][0],xyz_list,gauss);
+
+	/*Get Determinant*/
+	Matrix2x2Determinant(Jdet,&J[0][0]);
+	if(*Jdet<0) _error_("negative jacobian determinant!");
+
+}
+/*}}}*/
+void TriaRef::GetJacobianDeterminant3D(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*The Jacobian determinant is constant over the element, discard the gaussian points.
+	 * J is assumed to have been allocated of size 2x2.*/
+	IssmDouble J[2][2];
+
+	/*Get Jacobian*/
+	GetJacobian(&J[0][0],xyz_list,gauss);
+
+	/*Get Determinant*/
+	Matrix2x2Determinant(Jdet,&J[0][0]);
+
+}
+/*}}}*/
+void TriaRef::GetJacobianInvert(IssmDouble*  Jinv, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+
+	/*Jacobian*/
+	IssmDouble J[2][2];
+
+	/*Call Jacobian routine to get the jacobian:*/
+	GetJacobian(&J[0][0], xyz_list, gauss);
+
+	/*Invert Jacobian matrix: */
+	Matrix2x2Invert(Jinv,&J[0][0]);
+
+}
+/*}}}*/
+void TriaRef::GetNodalFunctions(IssmDouble* basis,Gauss* gauss_in,int finiteelement){/*{{{*/
+	/*This routine returns the values of the nodal functions  at the gaussian point.*/
+
+	_assert_(basis);
+
+	/*Cast gauss to GaussTria*/
+	_assert_(gauss_in->Enum()==GaussTriaEnum);
+	GaussTria* gauss = xDynamicCast<GaussTria*>(gauss_in);
+
+	switch(finiteelement){
+		case NoneEnum:
+			return;
+		case P0Enum: case P0DGEnum:
+			basis[0]=1.;
+			return;
+		case P1Enum: case P1DGEnum:
+			basis[0]=gauss->coord1;
+			basis[1]=gauss->coord2;
+			basis[2]=gauss->coord3;
+			return;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			/*Corner nodes*/
+			basis[0]=gauss->coord1;
+			basis[1]=gauss->coord2;
+			basis[2]=gauss->coord3;
+			/*bubble*/
+			basis[3]=27.*gauss->coord1*gauss->coord2*gauss->coord3;
+			return;
+		case P2Enum:
+			/*Corner nodes*/
+			basis[0]=gauss->coord1*(2.*gauss->coord1-1.);
+			basis[1]=gauss->coord2*(2.*gauss->coord2-1.);
+			basis[2]=gauss->coord3*(2.*gauss->coord3-1.);
+			/*Mid-sides*/
+			basis[3]=4.*gauss->coord3*gauss->coord2;
+			basis[4]=4.*gauss->coord3*gauss->coord1;
+			basis[5]=4.*gauss->coord1*gauss->coord2;
+			return;
+		case P2bubbleEnum: case P2bubblecondensedEnum:
+			/*Corner nodes*/
+			basis[0]=gauss->coord1*(2.*gauss->coord1-1.);
+			basis[1]=gauss->coord2*(2.*gauss->coord2-1.);
+			basis[2]=gauss->coord3*(2.*gauss->coord3-1.);
+			/*Mid-sides*/
+			basis[3]=4.*gauss->coord3*gauss->coord2;
+			basis[4]=4.*gauss->coord3*gauss->coord1;
+			basis[5]=4.*gauss->coord1*gauss->coord2;
+			/*bubble*/
+			basis[6]=27.*gauss->coord1*gauss->coord2*gauss->coord3;
+			return;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+}
+/*}}}*/
+void TriaRef::GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, Gauss* gauss,int finiteelement){/*{{{*/
+
+	/*This routine returns the values of the nodal functions derivatives  (with respect to the
+	 * actual coordinate system): */
+	IssmDouble    Jinv[2][2];
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+
+	/*Get nodal functions derivatives in reference triangle*/
+	IssmDouble dbasis_ref[2*NUMNODESMAX];
+	GetNodalFunctionsDerivativesReference(dbasis_ref,gauss,finiteelement);
+
+	/*Get Jacobian invert: */
+	GetJacobianInvert(&Jinv[0][0], xyz_list, gauss);
+
+	/*Build dbasis:
+	 * [dhi/dx]= Jinv*[dhi/dr]
+	 * [dhi/dy]       [dhi/ds]
+	 */
+	for(int i=0;i<numnodes;i++){
+		dbasis[numnodes*0+i] = Jinv[0][0]*dbasis_ref[0*numnodes+i]+Jinv[0][1]*dbasis_ref[1*numnodes+i];
+		dbasis[numnodes*1+i] = Jinv[1][0]*dbasis_ref[0*numnodes+i]+Jinv[1][1]*dbasis_ref[1*numnodes+i];
+	}
+
+}
+/*}}}*/
+void TriaRef::GetSegmentJacobianDeterminant(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+	/*The Jacobian determinant is constant over the element, discard the gaussian points.
+	 * J is assumed to have been allocated*/
+
+	IssmDouble x1 = xyz_list[3*0+0];
+	IssmDouble y1 = xyz_list[3*0+1];
+	IssmDouble x2 = xyz_list[3*1+0];
+	IssmDouble y2 = xyz_list[3*1+1];
+
+	*Jdet = .5*sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
+	if(*Jdet<0) _error_("negative jacobian determinant!");
+
+}
+/*}}}*/
+void TriaRef::GetSegmentNodalFunctions(IssmDouble* basis,Gauss* gauss,int index1,int index2,int finiteelement){/*{{{*/
+	/*This routine returns the values of the nodal functions  at the gaussian point.*/
+
+	_assert_(index1>=0 && index1<3);
+	_assert_(index2>=0 && index2<3);
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+
+	/*Get nodal functions*/
+	IssmDouble* triabasis=xNew<IssmDouble>(numnodes);
+	GetNodalFunctions(triabasis,gauss,finiteelement);
+
+	switch(finiteelement){
+		case P0Enum: case P0DGEnum:
+			basis[0]=triabasis[0];
+			xDelete<IssmDouble>(triabasis);
+			return;
+		case P1Enum: case P1DGEnum:
+			basis[0]=triabasis[index1];
+			basis[1]=triabasis[index2];
+			xDelete<IssmDouble>(triabasis);
+			return;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			basis[0]=triabasis[index1];
+			basis[1]=triabasis[index2];
+			xDelete<IssmDouble>(triabasis);
+			return;
+		case P2Enum:
+			_assert_(index2<index1);
+			basis[0]=triabasis[index1];
+			basis[1]=triabasis[index2];
+			basis[2]=triabasis[3+index2-1];
+			xDelete<IssmDouble>(triabasis);
+			return;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+	/*Clean up*/
+	xDelete<IssmDouble>(triabasis);
+}
+/*}}}*/
+void TriaRef::GetSegmentNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list_tria,Gauss* gauss,int index1,int index2,int finiteelement){/*{{{*/
+	/*This routine returns the values of the nodal functions  at the gaussian point.*/
+
+	_assert_(index1>=0 && index1<3);
+	_assert_(index2>=0 && index2<3);
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = this->NumberofNodes(finiteelement);
+
+	/*Get nodal functions*/
+	IssmDouble* dtriabasis=xNew<IssmDouble>(2*numnodes);
+	GetNodalFunctionsDerivatives(dtriabasis,xyz_list_tria,gauss,finiteelement);
+
+	switch(finiteelement){
+		case P1Enum: case P1DGEnum:
+			dbasis[2*0+0] = dtriabasis[numnodes*0+index1];
+			dbasis[2*0+1] = dtriabasis[numnodes*1+index1];
+			dbasis[2*1+0] = dtriabasis[numnodes*0+index2];
+			dbasis[2*1+1] = dtriabasis[numnodes*1+index2];
+			break;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+	/*Clean up*/
+	xDelete<IssmDouble>(dtriabasis);
+}
+/*}}}*/
+void TriaRef::GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,Gauss* gauss_in,int finiteelement){/*{{{*/
+	/*This routine returns the values of the nodal functions derivatives  (with respect to the
+	 * natural coordinate system) at the gaussian point. */
+
+	_assert_(dbasis && gauss_in);
+
+	/*Cast gauss to GaussTria*/
+	_assert_(gauss_in->Enum()==GaussTriaEnum);
+	GaussTria* gauss = xDynamicCast<GaussTria*>(gauss_in);
+
+	switch(finiteelement){
+		case P0Enum: case P0DGEnum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP0*0+0] = 0.;
+			dbasis[NUMNODESP0*1+0] = 0.;
+			return;
+		case P1Enum: case P1DGEnum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP1*0+0] = -0.5;
+			dbasis[NUMNODESP1*1+0] = -SQRT3/6.;
+			/*Nodal function 2*/
+			dbasis[NUMNODESP1*0+1] = 0.5;
+			dbasis[NUMNODESP1*1+1] = -SQRT3/6.;
+			/*Nodal function 3*/
+			dbasis[NUMNODESP1*0+2] = 0;
+			dbasis[NUMNODESP1*1+2] = SQRT3/3.;
+			return;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP1b*0+0] = -0.5;
+			dbasis[NUMNODESP1b*1+0] = -SQRT3/6.;
+			/*Nodal function 2*/
+			dbasis[NUMNODESP1b*0+1] = 0.5;
+			dbasis[NUMNODESP1b*1+1] = -SQRT3/6.;
+			/*Nodal function 3*/
+			dbasis[NUMNODESP1b*0+2] = 0;
+			dbasis[NUMNODESP1b*1+2] = SQRT3/3.;
+			/*Nodal function 4*/
+			dbasis[NUMNODESP1b*0+3] = 27.*(-.5*gauss->coord2*gauss->coord3 + .5*gauss->coord1*gauss->coord3);
+			dbasis[NUMNODESP1b*1+3] = 27.*SQRT3*(-1./6.*gauss->coord2*gauss->coord3 - 1./6.*gauss->coord1*gauss->coord3 +1./3.*gauss->coord1*gauss->coord2);
+			return;
+		case P2Enum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP2*0+0] = -2.*gauss->coord1 + 0.5;
+			dbasis[NUMNODESP2*1+0] = -2.*SQRT3/3.*gauss->coord1 + SQRT3/6.;
+			/*Nodal function 2*/
+			dbasis[NUMNODESP2*0+1] = +2.*gauss->coord2 - 0.5;
+			dbasis[NUMNODESP2*1+1] = -2.*SQRT3/3.*gauss->coord2 + SQRT3/6.;
+			/*Nodal function 3*/
+			dbasis[NUMNODESP2*0+2] = 0.;
+			dbasis[NUMNODESP2*1+2] = +4.*SQRT3/3.*gauss->coord3 - SQRT3/3.;
+			/*Nodal function 4*/
+			dbasis[NUMNODESP2*0+3] = +2.*gauss->coord3;
+			dbasis[NUMNODESP2*1+3] = +4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3;
+			/*Nodal function 5*/
+			dbasis[NUMNODESP2*0+4] = -2.*gauss->coord3;
+			dbasis[NUMNODESP2*1+4] = +4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3;
+			/*Nodal function 6*/
+			dbasis[NUMNODESP2*0+5] = 2.*(gauss->coord1-gauss->coord2);
+			dbasis[NUMNODESP2*1+5] = -2.*SQRT3/3.*(gauss->coord1+gauss->coord2);
+			return;
+		case P2bubbleEnum: case P2bubblecondensedEnum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP2b*0+0] = -2.*gauss->coord1 + 0.5;
+			dbasis[NUMNODESP2b*1+0] = -2.*SQRT3/3.*gauss->coord1 + SQRT3/6.;
+			/*Nodal function 2*/
+			dbasis[NUMNODESP2b*0+1] = +2.*gauss->coord2 - 0.5;
+			dbasis[NUMNODESP2b*1+1] = -2.*SQRT3/3.*gauss->coord2 + SQRT3/6.;
+			/*Nodal function 3*/
+			dbasis[NUMNODESP2b*0+2] = 0.;
+			dbasis[NUMNODESP2b*1+2] = +4.*SQRT3/3.*gauss->coord3 - SQRT3/3.;
+			/*Nodal function 4*/
+			dbasis[NUMNODESP2b*0+3] = +2.*gauss->coord3;
+			dbasis[NUMNODESP2b*1+3] = +4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3;
+			/*Nodal function 5*/
+			dbasis[NUMNODESP2b*0+4] = -2.*gauss->coord3;
+			dbasis[NUMNODESP2b*1+4] = +4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3;
+			/*Nodal function 6*/
+			dbasis[NUMNODESP2b*0+5] = 2.*(gauss->coord1-gauss->coord2);
+			dbasis[NUMNODESP2b*1+5] = -2.*SQRT3/3.*(gauss->coord1+gauss->coord2);
+			/*Nodal function 7*/
+			dbasis[NUMNODESP2b*0+6] = 27.*(-.5*gauss->coord2*gauss->coord3 + .5*gauss->coord1*gauss->coord3);
+			dbasis[NUMNODESP2b*1+6] = 27.*SQRT3*(-1./6.*gauss->coord2*gauss->coord3 - 1./6.*gauss->coord1*gauss->coord3 +1./3.*gauss->coord1*gauss->coord2);
+			return;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+}
+/*}}}*/
+void TriaRef::NodeOnEdgeIndices(int* pnumindices,int** pindices,int index,int finiteelement){/*{{{*/
+
+	/*Output*/
+	int  numindices;
+	int* indices = NULL;
+
+	switch(finiteelement){
+		case P1Enum: case P1DGEnum: case P1bubbleEnum: case P1bubblecondensedEnum:
+			numindices = 2;
+			indices    = xNew<int>(numindices);
+			switch(index){
+				case 0:
+					indices[0] = 1;
+					indices[1] = 2;
+					break;
+				case 1:
+					indices[0] = 2;
+					indices[1] = 0;
+					break;
+				case 2:
+					indices[0] = 0;
+					indices[1] = 1;
+					break;
+				default:
+					_error_("Edge index provided ("<<index<<") is not between 0 and 2");
+			}
+			break;
+		case P2Enum:
+			numindices = 3;
+			indices    = xNew<int>(numindices);
+			switch(index){
+				case 0:
+					indices[0] = 1;
+					indices[1] = 2;
+					indices[2] = 3;
+					break;
+				case 1:
+					indices[0] = 2;
+					indices[1] = 0;
+					indices[2] = 4;
+					break;
+				case 2:
+					indices[0] = 0;
+					indices[1] = 1;
+					indices[2] = 5;
+					break;
+				default:
+					_error_("Edge index provided ("<<index<<") is not between 0 and 2");
+			}
+			break;
+		default:
+			_error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+	/*Assign output pointer*/
+	*pnumindices = numindices;
+	*pindices    = indices;
+}
+/*}}}*/
+int  TriaRef::NumberofNodes(int finiteelement){/*{{{*/
+
+	switch(finiteelement){
+		case NoneEnum:                return 0;
+		case P0Enum:                  return NUMNODESP0;
+		case P0DGEnum:                return NUMNODESP0;
+		case P1Enum:                  return NUMNODESP1;
+		case P1DGEnum:                return NUMNODESP1;
+		case P1bubbleEnum:            return NUMNODESP1b;
+		case P1bubblecondensedEnum:   return NUMNODESP1b;
+		case P2Enum:                  return NUMNODESP2;
+		case P2bubbleEnum:            return NUMNODESP2b;
+		case P2bubblecondensedEnum:   return NUMNODESP2b;
+		case P1P1Enum:                return NUMNODESP1*2;
+		case P1P1GLSEnum:             return NUMNODESP1*2;
+		case MINIcondensedEnum:       return NUMNODESP1b+NUMNODESP1;
+		case MINIEnum:                return NUMNODESP1b+NUMNODESP1;
+		case TaylorHoodEnum:          return NUMNODESP2+NUMNODESP1;
+		case LATaylorHoodEnum:        return NUMNODESP2;
+		case XTaylorHoodEnum:         return NUMNODESP2+NUMNODESP1;
+		case CrouzeixRaviartEnum:     return NUMNODESP2b+NUMNODESP1;
+		case LACrouzeixRaviartEnum:   return NUMNODESP2b;
+		default: _error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
+int  TriaRef::PressureInterpolation(int fe_stokes){/*{{{*/
+
+	switch(fe_stokes){
+		case P1P1Enum:              return P1Enum;
+		case P1P1GLSEnum:           return P1Enum;
+		case MINIcondensedEnum:     return P1Enum;
+		case MINIEnum:              return P1Enum;
+		case TaylorHoodEnum:        return P1Enum;
+		case LATaylorHoodEnum:      return NoneEnum;
+		case XTaylorHoodEnum:       return P1Enum;
+		case CrouzeixRaviartEnum:   return P1DGEnum;
+		case LACrouzeixRaviartEnum: return NoneEnum;
+		default:       _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
+int  TriaRef::TensorInterpolation(int fe_stokes){/*{{{*/
+	/*This routine returns the values of the nodal functions  at the gaussian point.*/
+
+	switch(fe_stokes){
+		case XTaylorHoodEnum: return P1DGEnum;
+		default: _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet");
+	}
+}
+/*}}}*/
+int  TriaRef::VelocityInterpolation(int fe_stokes){/*{{{*/
+
+	switch(fe_stokes){
+		case P1P1Enum:              return P1Enum;
+		case P1P1GLSEnum:           return P1Enum;
+		case MINIcondensedEnum:     return P1bubbleEnum;
+		case MINIEnum:              return P1bubbleEnum;
+		case TaylorHoodEnum:        return P2Enum;
+		case LATaylorHoodEnum:      return P2Enum;
+		case XTaylorHoodEnum:       return P2Enum;
+		case CrouzeixRaviartEnum:   return P2bubbleEnum;
+		case LACrouzeixRaviartEnum: return P2bubbleEnum;
+		default:       _error_("Element type "<<EnumToStringx(fe_stokes)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/TriaRef.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/TriaRef.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Elements/TriaRef.h	(revision 27955)
@@ -0,0 +1,38 @@
+/*!\file:  TriaRef.h
+ * \brief abstract class for handling Tria oriented routines, like nodal functions, 
+ * strain rate generation, etc ...
+ */ 
+
+#ifndef _TRIAREF_H_
+#define _TRIAREF_H_
+
+class Gauss;
+
+class TriaRef{
+
+	public: 
+		TriaRef();
+		~TriaRef();
+
+		/*Numerics*/
+		void GetInputDerivativeValue(IssmDouble* pp, IssmDouble* plist,IssmDouble* xyz_list, Gauss* gauss,int finiteelement);
+		void GetInputValue(IssmDouble* pp, IssmDouble* plist, Gauss* gauss,int finiteelement);
+		void GetJacobian(IssmDouble* J, IssmDouble* xyz_list,Gauss* gauss);
+		void GetJacobianDeterminant(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void GetJacobianDeterminant3D(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void GetJacobianInvert(IssmDouble*  Jinv, IssmDouble* xyz_list,Gauss* gauss);
+		void GetNodalFunctions(IssmDouble* basis,Gauss* gauss,int finiteelement);
+		void GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, Gauss* gauss,int finiteelement);
+		void GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,Gauss* gauss,int finiteelement);
+		void GetSegmentJacobianDeterminant(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss);
+		void GetSegmentNodalFunctions(IssmDouble* basis,Gauss* gauss, int index1,int index2,int finiteelement);
+		void GetSegmentNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list_tria,Gauss* gauss, int index1,int index2,int finiteelement);
+		void Marshall(MarshallHandle* marshallhandle){ /*do nothing */};
+		void NodeOnEdgeIndices(int* pnumindices,int** pindices,int index,int finiteelement);
+		int  NumberofNodes(int finiteelement);
+		int  PressureInterpolation(int fe_stokes);
+		int  TensorInterpolation(int fe_stokes);
+		int  VelocityInterpolation(int fe_stokes);
+
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/ExternalResults/ExternalResult.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/ExternalResults/ExternalResult.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/ExternalResults/ExternalResult.h	(revision 27955)
@@ -0,0 +1,32 @@
+/*!\file:  ExternalResult.h
+ * \brief abstract class for ExternalResult object
+ */ 
+
+#ifndef _EXTERNALRESULT_H_
+#define _EXTERNALRESULT_H_
+
+/*Headers:*/
+/*{{{*/
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../datastructures/datastructures.h"
+#include "../Node.h"
+/*}}}*/
+
+class ExternalResult: public Object{
+
+	public: 
+
+		virtual         ~ExternalResult(){};
+		virtual int    GetResultEnum(void)=0;
+		virtual char*  GetResultName(void)=0;
+		virtual int    GetStep(void)=0;
+		virtual double GetValue(void)=0;
+		virtual void   WriteData(FILE* fid,bool io_gather)=0;
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/ExternalResults/GenericExternalResult.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/ExternalResults/GenericExternalResult.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/ExternalResults/GenericExternalResult.h	(revision 27955)
@@ -0,0 +1,881 @@
+/*! \file GenericExternalResult.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _GENERIC_EXTERNAL_RESULT_
+#define _GENERIC_EXTERNAL_RESULT_
+
+/*Headers:{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <cstring>
+#include "./ExternalResult.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+template <class ResultType> 
+class GenericExternalResult: public ExternalResult {
+
+	private: 
+		int        id;
+		char*      result_name;
+		ResultType value;
+		int        M;
+		int        N;
+		int        step;
+		IssmDouble time;
+
+	public:
+		/*Diverse: must be in front, as it is used in what follows*/
+		void GenericEcho(void){/*{{{*/
+			_printf_("   id          : " << this->id << "\n");
+			_printf_("   result_name : " << this->result_name<< "\n");
+			_printf_("   step        : " << this->step << "\n");
+			_printf_("   time        : " << this->time << "\n");
+		}
+		/*}}}*/
+		void GenericWriteData(FILE* fid){/*{{{*/ 
+
+			IssmPDouble  passiveDouble;
+
+			/*First write name: */
+			int length=(strlen(this->result_name)+1)*sizeof(char);
+			fwrite(&length,sizeof(int),1,fid);
+			fwrite(this->result_name,length,1,fid);
+
+			/*Now write time and step: */
+			passiveDouble=reCast<IssmPDouble>(time);
+			fwrite(&passiveDouble,sizeof(IssmPDouble),1,fid);
+			fwrite(&step,sizeof(int),1,fid);
+		} /*}}}*/
+		void GenericMarshall(MarshallHandle* marshallhandle){/*{{{*/
+
+			int object_enum = this->ObjectEnum();
+			marshallhandle->call(object_enum);
+			marshallhandle->call(this->id);
+			marshallhandle->call(this->result_name);
+			marshallhandle->call(this->M);
+			marshallhandle->call(this->N);
+			marshallhandle->call(this->step);
+			marshallhandle->call(this->time);
+			marshallhandle->call(this->value);
+		}  /*}}}*/
+
+		/*GenericExternalResult constructors and  destructors*/
+		GenericExternalResult(){ /*{{{*/
+			id          = 0;
+			result_name = NULL;
+			M           = 0;
+			N           = 0;
+			step        = 0;
+			time        = 0;
+			value       = 0;
+		} /*}}}*/
+		GenericExternalResult(int in_id, int in_enum_type,ResultType in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/
+			id        = in_id;
+			step      = in_step;
+			time      = in_time;
+			M         = in_M;
+			N         = in_N;
+
+			/*Copy result in values*/
+			if(M*N){
+				value=xNew<IssmDouble>(M*N);
+				xMemCpy<IssmDouble>(value,in_values,M*N);
+			}
+			else value=NULL;
+
+			/*Convert enum to name*/
+			EnumToStringx(&this->result_name,in_enum_type);
+		}
+/*}}}*/
+		GenericExternalResult(int in_id,const char* name_in,ResultType in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/
+			_error_("template GenericExternalResult(int in_id, int in_enum_type,double* in_values, int in_M,int in_N,int in_step,IssmDouble in_time) not implemented for this ResultType\n");
+		}
+		/*}}}*/
+		GenericExternalResult(int in_id, int in_enum_type,ResultType in_value,int in_step, IssmDouble in_time){ /*{{{*/
+			id        = in_id;
+			value     = in_value;
+			step      = in_step;
+			time      = in_time;
+			M         = 1;
+			N         = 1;
+
+			/*Convert enum to name*/
+			EnumToStringx(&this->result_name,in_enum_type);
+		}
+		/*}}}*/
+		GenericExternalResult(int in_id, int in_enum_type,ResultType in_value){ /*{{{*/
+			id        = in_id;
+			value     = in_value;
+			step      = UNDEF;
+			time      = UNDEF;
+			M         = 1;
+			N         = 1;
+
+			/*Convert enum to name*/
+			EnumToStringx(&this->result_name,in_enum_type);
+		}
+		/*}}}*/
+		GenericExternalResult(int in_id,const char* in_result_name,ResultType in_value,int in_step, IssmDouble in_time){ /*{{{*/
+			id        = in_id;
+			value     = in_value;
+			step      = in_step;
+			time      = in_time;
+			M         = 1;
+			N         = 1;
+
+			/*Copy name*/
+			this->result_name = xNew<char>(strlen(in_result_name)+1);
+			xMemCpy<char>(this->result_name,in_result_name,strlen(in_result_name)+1);
+		}
+		/*}}}*/
+		~GenericExternalResult(){ /*{{{*/
+			xDelete<char>(result_name);
+		} /*}}}*/
+
+		/*Object virtual functions definitions:*/
+		Object* copy(void) { /*{{{*/
+			return new GenericExternalResult<ResultType>(this->id,this->result_name,this->value,this->step,this->time);
+		} /*}}}*/
+		void Echo(void){ /*{{{*/
+			this->DeepEcho();
+		}
+		/*}}}*/
+		void DeepEcho(void){ /*{{{*/
+			_error_("template DeepEcho not implemented for this ResultType\n");
+		}
+		/*}}}*/
+		int Id(void){ /*{{{*/ 
+			return -1; 
+		} /*}}}*/
+		int ObjectEnum(void){ /*{{{*/
+			return GenericExternalResultEnum;
+		} /*}}}*/
+		void Marshall(MarshallHandle* marshallhandle){/*{{{*/
+			_printf_("   WARNING: result "<<this->result_name<<" is a GenericExternalResult and cannot be marshalled (need overload)\n");
+			/*Nothing for now*/
+		} 
+		/*}}}*/
+
+		/*GenericExternalResult management: */
+void  WriteData(FILE* fid,bool io_gather){ /*{{{*/
+
+	int     my_rank;
+	int     type;
+	int     size;
+	IssmPDouble  passiveDouble;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	/*return if now on cpu 0: */
+	if(my_rank)return;
+
+	/*use generic part, same for all ResultTypes: */
+	this->GenericWriteData(fid);
+
+	/*writing a IssmPDouble for Matlab or Python to post-process, type is 1, size is 1: */
+	type=1;
+	size=1;
+	fwrite(&type,sizeof(int),1,fid);
+	fwrite(&size,sizeof(int),1,fid);
+
+	/*cast to a IssmPDouble: */
+	passiveDouble=reCast<IssmPDouble>(value);
+	fwrite(&passiveDouble,size*sizeof(IssmPDouble),1,fid);
+
+} /*}}}*/
+void  Transpose(void){ /*{{{*/
+	_error_("not implemented yet");
+} /*}}}*/
+char* GetResultName(void){ /*{{{*/
+		char* name = xNew<char>(strlen(this->result_name)+1);
+		xMemCpy<char>(name,this->result_name,strlen(this->result_name)+1);
+		return name;
+} /*}}}*/
+int GetResultEnum(void){ /*{{{*/
+		return StringToEnumx(this->result_name,false);
+} /*}}}*/
+int   GetStep(void){ /*{{{*/
+	return this->step;
+} /*}}}*/
+double GetValue(void){ /*{{{*/
+	/*Only supported by IssmPDouble result, error out by default*/
+	_error_("not supported for this type of result");
+} /*}}}*/
+double* GetValues(void){ /*{{{*/
+	/*Only supported by IssmPDouble* result, error out by default*/
+	_error_("not supported for this type of result");
+} /*}}}*/
+};
+
+/*Specific instantiations for bool: */
+template <> inline void GenericExternalResult<bool>::DeepEcho(void){ /*{{{*/
+
+	_printf_("GenericExternalResult<bool>:\n");
+	this->GenericEcho();
+	_printf_("   value: " <<(this->value?"true":"false") << "\n");
+
+} /*}}}*/
+template <> inline int GenericExternalResult<bool>::ObjectEnum(void){ /*{{{*/
+	return BoolExternalResultEnum;
+} /*}}}*/
+template <> inline void GenericExternalResult<bool>::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+	this->GenericMarshall(marshallhandle);
+
+}  /*}}}*/
+
+/*Specific instantiations for int: */
+template <> inline void GenericExternalResult<int>::DeepEcho(void){ /*{{{*/
+
+	_printf_("GenericExternalResult<int>:\n");
+	this->GenericEcho();
+	_printf_("   value: " << this->value << "\n");
+
+} /*}}}*/
+template <> inline int GenericExternalResult<int>::ObjectEnum(void){ /*{{{*/
+	return IntExternalResultEnum;
+} /*}}}*/
+template <> inline void GenericExternalResult<int>::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+	this->GenericMarshall(marshallhandle);
+}  /*}}}*/
+
+/*Specific instantiations for double: */
+template <> inline void GenericExternalResult<double>::DeepEcho(void){ /*{{{*/
+
+	_printf_("GenericExternalResult<double>:\n");
+	this->GenericEcho();
+	_printf_("   value: " << this->value << "\n");
+
+} /*}}}*/
+template <> inline int GenericExternalResult<double>::ObjectEnum(void){ /*{{{*/
+	return DoubleExternalResultEnum;
+} /*}}}*/
+template <> inline double GenericExternalResult<double>::GetValue(void){ /*{{{*/
+	return value;
+} /*}}}*/
+template <> inline void GenericExternalResult<double>::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+	this->GenericMarshall(marshallhandle);
+}  /*}}}*/
+
+/*Specific instantiations for char*: */
+template <> inline GenericExternalResult<char*>::GenericExternalResult(int in_id, int in_enum_type,char* in_value,int in_step, IssmDouble in_time){ /*{{{*/
+
+	id = in_id;
+	value = xNew<char>(strlen(in_value)+1);
+	xMemCpy<char>(value,in_value,(strlen(in_value)+1));
+	step  = in_step;
+	time  = in_time;
+	M     = 1;
+	N     = 1;
+
+	/*Convert enum to name*/
+	EnumToStringx(&this->result_name,in_enum_type);
+
+} /*}}}*/
+template <> inline GenericExternalResult<char*>::GenericExternalResult(int in_id, int in_enum_type,char* in_value){ /*{{{*/
+
+	id = in_id;
+	value = xNew<char>(strlen(in_value)+1);
+	xMemCpy<char>(value,in_value,(strlen(in_value)+1));
+	step = UNDEF;  
+	time  = UNDEF;
+
+	/*Convert enum to name*/
+	EnumToStringx(&this->result_name,in_enum_type);
+
+} /*}}}*/
+template <> inline GenericExternalResult<char*>::~GenericExternalResult(){ /*{{{*/
+	xDelete<char>(result_name);
+	xDelete<char>(value);
+} /*}}}*/
+template <> inline void GenericExternalResult<char*>::DeepEcho(void){ /*{{{*/
+
+	_printf_("GenericExternalResult<char*>:\n");
+	this->GenericEcho();
+	_printf_("   value: " << this->value << "\n");
+
+} /*}}}*/
+template <> inline void GenericExternalResult<char*>::WriteData(FILE* fid,bool io_gather){ /*{{{*/
+
+	int     my_rank;
+	int     type;
+	int     length;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	/*return if now on cpu 0: */
+	if(my_rank)return;
+
+	/*use generic part, same for all ResultTypes: */
+	this->GenericWriteData(fid);
+
+	/*writing a string, type is 2: */
+	type=2;
+	fwrite(&type,sizeof(int),1,fid);
+
+	length=(strlen(this->value)+1)*sizeof(char);
+	fwrite(&length,sizeof(int),1,fid);
+	fwrite(this->value,length,1,fid);
+}
+/*}}}*/
+template <> inline int GenericExternalResult<char*>::ObjectEnum(void){ /*{{{*/
+	return StringExternalResultEnum;
+} /*}}}*/
+template <> inline void GenericExternalResult<char*>::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+	marshallhandle->call(this->id);
+	marshallhandle->call(this->result_name);
+	marshallhandle->call(this->value);
+	marshallhandle->call(this->step);
+	marshallhandle->call(this->time);
+
+}  /*}}}*/
+
+/*Specific instantiations for int*: */
+template <> inline GenericExternalResult<int*>::GenericExternalResult(int in_id, int in_enum_type,int* in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/
+
+	id = in_id;
+	M  = in_M;
+	N  = in_N;
+
+	EnumToStringx(&this->result_name,in_enum_type);
+
+	step = in_step;
+	time = in_time;
+
+	/*Copy result in values*/
+	if(M*N){
+		value=xNew<int>(M*N);
+		xMemCpy<int>(value,in_values,M*N);
+	}
+	else value=NULL;
+}
+/*}}}*/
+template <> inline GenericExternalResult<int*>::GenericExternalResult(int in_id,const char* in_result_name,int* in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/
+
+	id = in_id;
+	M  = in_M;
+	N  = in_N;
+
+	/*Copy name*/
+	this->result_name = xNew<char>(strlen(in_result_name)+1);
+	xMemCpy<char>(this->result_name,in_result_name,strlen(in_result_name)+1);
+
+	step = in_step;
+	time = in_time;
+
+	/*Copy result in values*/
+	if(M*N){
+		value=xNew<int>(M*N);
+		xMemCpy<int>(value,in_values,M*N);
+	}
+	else value=NULL;
+}
+/*}}}*/
+template <> inline GenericExternalResult<int*>::GenericExternalResult(int in_id, int in_enum_type,int* in_value,int in_step, IssmDouble in_time){ /*{{{*/
+	_error_("you cannot initialize a GenericExternalResult<int*> without providing the dimensions of the matrix! Please use a more appropriate constructor!");
+} /*}}}*/
+template <> inline GenericExternalResult<int*>::~GenericExternalResult(){ /*{{{*/
+	xDelete<char>(result_name);
+	xDelete<int>(value);
+} /*}}}*/
+template <> inline void GenericExternalResult<int*>::Echo(void){ /*{{{*/
+
+	_printf_("GenericExternalResult<int*>:\n");
+	this->GenericEcho();
+	_printf_("   matrix size: " << this->M << "-" << this->N << "\n");
+
+} /*}}}*/
+template <> inline void GenericExternalResult<int*>::DeepEcho(void){ /*{{{*/
+
+	int i,j;
+
+	_printf_("GenericExternalResult<int*>:\n");
+	this->GenericEcho();
+
+	_printf_("   matrix size: " << this->M << "-" << this->N << "\n");
+	for (i=0;i<this->M;i++){  
+		_printf_("   [ ");
+		for (j=0;j<this->N;j++){
+			_printf_( " " << setw(11) << this->value[i*this->N+j]);
+		}  
+		_printf_(" ]\n");
+	}  
+
+} /*}}}*/
+template <> inline Object* GenericExternalResult<int*>::copy(void){ /*{{{*/
+	return new GenericExternalResult<int*>(this->id,StringToEnumx(this->result_name),this->value,this->M,this->N,this->step,this->time);
+} /*}}}*/
+template <> inline void GenericExternalResult<int*>::WriteData(FILE* fid,bool io_gather){ /*{{{*/
+
+	int     my_rank;
+	int     type;
+	int     rows,cols;
+	char   *name    = NULL;
+	IssmPDouble passiveDouble;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	if(io_gather){
+		/*we are gathering the data on cpu 0, don't write on other cpus: */
+		if(my_rank) return;
+	}
+
+	/*First write enum: */
+	int length=(strlen(this->result_name)+1)*sizeof(char);
+	fwrite(&length,sizeof(int),1,fid);
+	fwrite(this->result_name,length,1,fid);
+
+	/*Now write time and step: */
+	passiveDouble=reCast<IssmPDouble>(time);
+	fwrite(&passiveDouble,sizeof(IssmPDouble),1,fid);
+	fwrite(&step,sizeof(int),1,fid);
+
+	/*writing an int array, type is 4 (see parseresultsfromdisk.m):*/
+	type=4;
+	fwrite(&type,sizeof(int),1,fid);
+	rows=this->M;
+	fwrite(&rows,sizeof(int),1,fid);
+	cols=this->N;
+	fwrite(&cols,sizeof(int),1,fid);
+	fwrite(value,cols*rows*sizeof(int),1,fid);
+
+}
+/*}}}*/
+template <> inline int GenericExternalResult<int*>::ObjectEnum(void){ /*{{{*/
+	return IntMatExternalResultEnum;
+} /*}}}*/
+template <> inline void GenericExternalResult<int*>::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+
+	int object_enum = this->ObjectEnum();
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->id);
+	marshallhandle->call(this->result_name);
+	marshallhandle->call(this->M);
+	marshallhandle->call(this->N);
+	marshallhandle->call(this->value,M*N);
+	marshallhandle->call(this->step);
+	marshallhandle->call(this->time);
+
+}  /*}}}*/
+
+/*Specific instantiations for IssmPDouble*: */
+template <> inline GenericExternalResult<IssmPDouble*>::GenericExternalResult(int in_id, int in_enum_type,IssmPDouble* in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/
+
+	id = in_id;
+	M  = in_M;
+	N  = in_N;
+
+	EnumToStringx(&this->result_name,in_enum_type);
+
+	step = in_step;
+	time = in_time;
+
+	/*Copy result in values*/
+	if(M*N){
+		value=xNew<IssmPDouble>(M*N);
+		xMemCpy<IssmPDouble>(value,in_values,M*N);
+	}
+	else value=NULL;
+}
+/*}}}*/
+template <> inline GenericExternalResult<IssmPDouble*>::GenericExternalResult(int in_id,const char* in_result_name,IssmPDouble* in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/
+
+	id = in_id;
+	M  = in_M;
+	N  = in_N;
+
+	/*Copy name*/
+	this->result_name = xNew<char>(strlen(in_result_name)+1);
+	xMemCpy<char>(this->result_name,in_result_name,strlen(in_result_name)+1);
+
+	step = in_step;
+	time = in_time;
+
+	/*Copy result in values*/
+	if(M*N){
+		value=xNew<IssmPDouble>(M*N);
+		xMemCpy<IssmPDouble>(value,in_values,M*N);
+	}
+	else value=NULL;
+}
+/*}}}*/
+template <> inline GenericExternalResult<IssmPDouble*>::GenericExternalResult(int in_id, int in_enum_type,IssmPDouble* in_value,int in_step, IssmDouble in_time){ /*{{{*/
+	_error_("you cannot initialize a GenericExternalResult<IssmPDouble*> without providing the dimensions of the matrix! Please use a more appropriate constructor!");
+} /*}}}*/
+template <> inline GenericExternalResult<IssmPDouble*>::~GenericExternalResult(){ /*{{{*/
+	xDelete<char>(result_name);
+	xDelete<IssmPDouble>(value);
+} /*}}}*/
+template <> inline void GenericExternalResult<IssmPDouble*>::Echo(void){ /*{{{*/
+
+	_printf_("GenericExternalResult<IssmPDouble*>:\n");
+	this->GenericEcho();
+	_printf_("   matrix size: " << this->M << "-" << this->N << "\n");
+
+} /*}}}*/
+template <> inline void GenericExternalResult<IssmPDouble*>::DeepEcho(void){ /*{{{*/
+
+	int i,j;
+
+	_printf_("GenericExternalResult<IssmPDouble*>:\n");
+	this->GenericEcho();
+
+	_printf_("   matrix size: " << this->M << "-" << this->N << "\n");
+	for (i=0;i<this->M;i++){  
+		_printf_("   [ ");
+		for (j=0;j<this->N;j++){
+			_printf_( " " << setw(11) << setprecision (5) << this->value[i*this->N+j]);
+		}  
+		_printf_(" ]\n");
+	}  
+
+} /*}}}*/
+template <> inline Object* GenericExternalResult<IssmPDouble*>::copy(void){ /*{{{*/
+	return new GenericExternalResult<IssmPDouble*>(this->id,StringToEnumx(this->result_name),this->value,this->M,this->N,this->step,this->time);
+} /*}}}*/
+template <> inline void GenericExternalResult<IssmPDouble*>::WriteData(FILE* fid,bool io_gather){ /*{{{*/
+
+	int     my_rank;
+	int     type;
+	int     rows,cols;
+	char   *name    = NULL;
+	IssmPDouble passiveDouble;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	if(io_gather){
+		/*we are gathering the data on cpu 0, don't write on other cpus: */
+		if(my_rank) return;
+	}
+
+	/*First write enum: */
+	int length=(strlen(this->result_name)+1)*sizeof(char);
+	fwrite(&length,sizeof(int),1,fid);
+	fwrite(this->result_name,length,1,fid);
+
+	/*Now write time and step: */
+	passiveDouble=reCast<IssmPDouble>(time);
+	fwrite(&passiveDouble,sizeof(IssmPDouble),1,fid);
+	fwrite(&step,sizeof(int),1,fid);
+
+	/*writing a IssmDouble array, type is 3:*/
+	type=3;
+	fwrite(&type,sizeof(int),1,fid);
+	rows=this->M;
+	fwrite(&rows,sizeof(int),1,fid);
+	cols=this->N;
+	fwrite(&cols,sizeof(int),1,fid);
+	fwrite(value,cols*rows*sizeof(IssmPDouble),1,fid);
+
+}
+/*}}}*/
+template <> inline int GenericExternalResult<IssmPDouble*>::ObjectEnum(void){ /*{{{*/
+	return DoubleMatExternalResultEnum;
+} /*}}}*/
+template <> inline double* GenericExternalResult<IssmPDouble*>::GetValues(void){ /*{{{*/
+	return value;
+} /*}}}*/
+template <> inline void GenericExternalResult<IssmPDouble*>::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+
+	int object_enum = this->ObjectEnum();
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->id);
+	marshallhandle->call(this->result_name);
+	marshallhandle->call(this->M);
+	marshallhandle->call(this->N);
+	marshallhandle->call(this->value,M*N);
+	marshallhandle->call(this->step);
+	marshallhandle->call(this->time);
+
+}  /*}}}*/
+template <> inline void GenericExternalResult<IssmPDouble*>::Transpose(void){/*{{{*/
+
+	/*Perform transpose only if we have a matrix*/
+	if(M>1 && N>1){
+		IssmPDouble* temp=xNew<IssmPDouble>(M*N);
+		for(int i=0;i<M;i++){
+			for(int j=0;j<N;j++){
+				temp[j*M+i] = value[i*N+j];
+			}
+		}
+		xDelete<IssmPDouble>(this->value);
+		this->value = temp;
+	}
+
+	/*Switch dimensions*/
+	int temp2 = this->N;
+	this->N = this->M;
+	this->M = temp2;
+
+} /*}}}*/
+
+	/*Specific instantiations for IssmDouble*: */
+#if defined(_HAVE_AD_) && !defined(_WRAPPERS_)  //We hook off this specific specialization when not running ADOLC, otherwise we get a redeclaration with the next specialization. 
+template <> inline GenericExternalResult<IssmDouble*>::~GenericExternalResult(){ /*{{{*/
+	xDelete<char>(result_name);
+	xDelete<IssmDouble>(value);
+} /*}}}*/
+	template <> inline void GenericExternalResult<IssmDouble*>::WriteData(FILE* fid,bool io_gather){ /*{{{*/
+
+		int     i;
+		int     my_rank;
+		int     type;
+		int     rows,cols;
+		char   *name    = NULL;
+		IssmPDouble passiveDouble;
+		IssmPDouble* passiveDoubles;
+
+		/*recover my_rank:*/
+		my_rank=IssmComm::GetRank();
+
+		if(io_gather){
+			/*we are gathering the data on cpu 0, don't write on other cpus: */
+			if(my_rank) return;
+		}
+
+		/*First write enum: */
+		int length=(strlen(this->result_name)+1)*sizeof(char);
+		fwrite(&length,sizeof(int),1,fid);
+		fwrite(this->result_name,length,1,fid);
+
+		/*Now write time and step: */
+		passiveDouble=reCast<IssmPDouble>(time);
+		fwrite(&passiveDouble,sizeof(IssmPDouble),1,fid);
+		fwrite(&step,sizeof(int),1,fid);
+
+		/*writing a IssmDouble array, type is 3:*/
+		type=3;
+		fwrite(&type,sizeof(int),1,fid);
+		rows=this->M;
+		fwrite(&rows,sizeof(int),1,fid);
+		cols=this->N;
+		fwrite(&cols,sizeof(int),1,fid);
+
+		passiveDoubles=xNew<IssmPDouble>(this->M*this->N);
+		for (i=0;i<this->M*this->N;i++)passiveDoubles[i]=reCast<IssmPDouble>(value[i]);
+		fwrite(passiveDoubles,cols*rows*sizeof(IssmPDouble),1,fid);
+		xDelete<IssmPDouble>(passiveDoubles);
+
+	}
+	/*}}}*/
+#endif
+
+	/*Specific instantiations for IssmComplex*: */
+template <> inline GenericExternalResult<IssmComplex*>::GenericExternalResult(int in_id, int in_enum_type,IssmComplex* in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/
+
+	id = in_id;
+	M  = in_M;
+	N  = in_N;
+
+	EnumToStringx(&this->result_name,in_enum_type);
+
+	step = in_step;
+	time = in_time;
+
+	/*Copy result in values*/
+	if(M*N){
+		value=xNew<IssmComplex>(M*N);
+		xMemCpy<IssmComplex>(value,in_values,M*N);
+	}
+	else value=NULL;
+}
+/*}}}*/
+template <> inline void GenericExternalResult<IssmComplex*>::WriteData(FILE* fid,bool io_gather){ /*{{{*/
+
+	int     my_rank;
+	int     type;
+	int     rows,cols;
+	char   *name    = NULL;
+	IssmPDouble passiveDouble;
+	IssmDouble* reals=NULL;
+	IssmDouble* imags=NULL;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	if(io_gather){
+		/*we are gathering the data on cpu 0, don't write on other cpus: */
+		if(my_rank) return;
+	}
+
+	/*First write enum: */
+	int length=(strlen(this->result_name)+1)*sizeof(char);
+	fwrite(&length,sizeof(int),1,fid);
+	fwrite(this->result_name,length,1,fid);
+
+	/*Now write time and step: */
+	passiveDouble=reCast<IssmPDouble>(time);
+	fwrite(&passiveDouble,sizeof(IssmPDouble),1,fid);
+	fwrite(&step,sizeof(int),1,fid);
+
+	/*writing a IssmComplex array, type is 3:*/
+	type=5;
+	fwrite(&type,sizeof(int),1,fid);
+	rows=this->M;
+	fwrite(&rows,sizeof(int),1,fid);
+	cols=this->N;
+	fwrite(&cols,sizeof(int),1,fid);
+
+	/*write complex array into two real arrays:*/
+	reals=xNew<IssmDouble>(cols*rows);
+	imags=xNew<IssmDouble>(cols*rows);
+	for(int i=0;i<cols*rows;i++){
+		reals[i]=value[i].real();
+		imags[i]=value[i].imag();
+	}
+	fwrite(reals,cols*rows*sizeof(IssmComplex),1,fid);
+	fwrite(imags,cols*rows*sizeof(IssmComplex),1,fid);
+
+}
+/*}}}*/
+
+	/*Specifics instantiations for Vector*/
+	template <> inline GenericExternalResult<Vector<IssmPDouble>*>::GenericExternalResult(int in_id, int in_enum_type,Vector<IssmPDouble>* in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/
+		_error_("instanciation not correct");
+	}
+	/*}}}*/
+	template <> inline GenericExternalResult<Vector<IssmPDouble>*>::GenericExternalResult(int in_id, int in_enum_type,Vector<IssmPDouble>* in_value,int in_step, IssmDouble in_time){ /*{{{*/
+		id = in_id;
+		M  = 0;
+		N  = 0;
+
+		/*Convert enum to name*/
+		EnumToStringx(&this->result_name,in_enum_type);
+
+		step = in_step;
+		time = in_time;
+
+		value = in_value;
+	} /*}}}*/
+	template <> inline GenericExternalResult<Vector<IssmPDouble>*>::~GenericExternalResult(){ /*{{{*/
+		xDelete<char>(this->result_name);
+		delete value;
+	} /*}}}*/
+	template <> inline void GenericExternalResult<Vector<IssmPDouble>*>::Echo(void){ /*{{{*/
+
+		_printf_("GenericExternalResult<Vector<IssmPDouble>*>:\n");
+		this->GenericEcho();
+		this->value->Echo();
+
+	} /*}}}*/
+	template <> inline void GenericExternalResult<Vector<IssmPDouble>*>::DeepEcho(void){ /*{{{*/
+
+		this->Echo();
+
+	} /*}}}*/
+	template <> inline Object* GenericExternalResult<Vector<IssmPDouble>*>::copy(void){ /*{{{*/
+		return new GenericExternalResult<Vector<IssmPDouble>*>(this->id,StringToEnumx(this->result_name),this->value,this->step,this->time);
+	} /*}}}*/
+#if defined(_HAVE_AD_) && !defined(_WRAPPERS_)  //We hook off this specific specialization when not running ADOLC, otherwise we get a redeclaration with the next specialization. 
+	template <> inline void GenericExternalResult<Vector<IssmPDouble>*>::WriteData(FILE* fid,bool io_gather){ /*{{{*/
+
+		char *name   = NULL;
+		int   length,rows,cols=1;
+
+		if(!io_gather){
+			_error_("not supported yet");
+		}
+
+		/*Serialize vector on cpu0*/
+		IssmPDouble* serialvalues = this->value->ToMPISerial0();
+
+		if(IssmComm::GetRank()==0){
+			this->value->GetSize(&rows);
+
+			/*First write name: */
+			length=(strlen(this->result_name)+1)*sizeof(char);
+			fwrite(&length,sizeof(int),1,fid);
+			fwrite(this->result_name,length,1,fid);
+
+			/*Now write time and step: */
+			IssmPDouble passiveDouble=reCast<IssmPDouble>(time);
+			fwrite(&passiveDouble,sizeof(IssmPDouble),1,fid);
+			fwrite(&step,sizeof(int),1,fid);
+
+			/*writing a IssmDouble array, type is 3:*/
+			int type=3;
+			fwrite(&type,sizeof(int),1,fid);
+			fwrite(&rows,sizeof(int),1,fid);
+			fwrite(&cols,sizeof(int),1,fid);
+			fwrite(serialvalues,cols*rows*sizeof(IssmPDouble),1,fid);
+		}
+
+		/*Clean up*/
+		xDelete<IssmPDouble>(serialvalues);
+
+	}
+	/*}}}*/
+template <> inline GenericExternalResult<Vector<IssmDouble>*>::~GenericExternalResult(){ /*{{{*/
+	xDelete<char>(this->result_name);
+	delete value;
+} /*}}}*/
+#endif
+	template <> inline int GenericExternalResult<Vector<IssmPDouble>*>::ObjectEnum(void){ /*{{{*/
+		return NoneEnum;
+		/*???? FIXME*/
+	} /*}}}*/
+
+	/*Specifics instantiations for Vector<IssmDouble>*/
+	template <> inline void GenericExternalResult<Vector<IssmDouble>*>::WriteData(FILE* fid,bool io_gather){ /*{{{*/
+
+		int i;
+		char *name   = NULL;
+		int   length,rows,cols=1;
+		IssmDouble*  serialvalues = NULL;
+		IssmPDouble* pserialvalues = NULL;
+
+		if(!io_gather){
+			_error_("not supported yet");
+		}
+
+		/*Serialize vector only on cpu0*/
+		serialvalues = this->value->ToMPISerial0();
+
+		if(IssmComm::GetRank()==0){
+
+			/*Make it passive*/
+			this->value->GetSize(&rows);
+			pserialvalues=xNew<IssmPDouble>(rows);
+			for(i=0;i<rows;i++)pserialvalues[i]=reCast<IssmPDouble>(serialvalues[i]);
+
+			/*First write name: */
+			length=(strlen(this->result_name)+1)*sizeof(char);
+			fwrite(&length,sizeof(int),1,fid);
+			fwrite(this->result_name,length,1,fid);
+
+			/*Now write time and step: */
+			IssmPDouble passiveDouble=reCast<IssmPDouble>(time);
+			fwrite(&passiveDouble,sizeof(IssmPDouble),1,fid);
+			fwrite(&step,sizeof(int),1,fid);
+
+			/*writing a IssmDouble array, type is 3:*/
+			int type=3;
+			fwrite(&type,sizeof(int),1,fid);
+			fwrite(&rows,sizeof(int),1,fid);
+			fwrite(&cols,sizeof(int),1,fid);
+			fwrite(pserialvalues,cols*rows*sizeof(IssmPDouble),1,fid);
+
+			/*Clean up*/
+			xDelete<IssmPDouble>(pserialvalues);
+		}
+
+		/*Clean up*/
+		xDelete<IssmDouble>(serialvalues);
+	}
+	/*}}}*/
+	template <> inline void GenericExternalResult<Vector<IssmDouble>*>::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+		_error_("GenericExternalResult instantiated for type Vector<IssmDouble>* called " << result_name << " not implemented yet");
+	}  /*}}}*/
+
+#endif  /* _EXTERNAL_RESULTOBJECT_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/ExternalResults/Results.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/ExternalResults/Results.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/ExternalResults/Results.cpp	(revision 27955)
@@ -0,0 +1,105 @@
+/*
+ * \file Results.cpp
+ * \brief: Implementation of the Results class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Results.h"
+#include "./ExternalResult.h"
+#include "../../shared/shared.h"
+#include "../Params/Parameters.h"
+
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+Results::Results(){/*{{{*/
+	enum_type=ResultsEnum;
+	return;
+}
+/*}}}*/
+Results::~Results(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object management*/
+int Results::AddResult(ExternalResult* in_result){/*{{{*/
+
+	/*First, go through dataset of inputs and check whether any input
+	 * with the same name is already in. If so, erase the corresponding
+	 * object before adding this new one: */
+
+	/*In debugging mode, check that the input is not a NULL pointer*/
+	_assert_(in_result);
+
+	for(Object* &object : this->objects){
+		ExternalResult* result=xDynamicCast<ExternalResult*>(object);
+
+		if(result->GetStep()==in_result->GetStep()){
+			char*    result_name =    result->GetResultName();
+			char* in_result_name = in_result->GetResultName();
+			if(strcmp(in_result_name,result_name)==0){
+
+				this->DeleteObject(result);
+				xDelete<char>(result_name);
+				xDelete<char>(in_result_name);
+				break;
+			}
+			xDelete<char>(result_name);
+			xDelete<char>(in_result_name);
+		}
+	}
+	this->AddObject(in_result);
+
+	return 1;
+}
+/*}}}*/
+int Results::DeleteResult(int result_enum,int result_step){/*{{{*/
+
+	for(Object* &object : this->objects){
+		ExternalResult* result=xDynamicCast<ExternalResult*>(object);
+		if(result->GetStep()==result_step){
+			if(strcmp(result->GetResultName(),EnumToStringx(result_enum))==0){
+				this->DeleteObject(result);
+				break;
+			}
+		}
+	}
+
+	return 1;
+}
+/*}}}*/
+ExternalResult* Results::FindResult(int result_enum){/*{{{*/
+
+	for(Object* &object : this->objects){
+		ExternalResult* result=xDynamicCast<ExternalResult*>(object);
+		if(result->GetResultEnum()==result_enum){
+			return result;
+		}
+	}
+	return NULL;
+}
+/*}}}*/
+void Results::Write(Parameters* parameters){/*{{{*/
+
+	FILE       *fid  = NULL;
+	bool        io_gather;
+
+	/*Recover file descriptor: */
+	parameters->FindParam(&fid,OutputFilePointerEnum);
+	parameters->FindParam(&io_gather,SettingsIoGatherEnum);
+
+	for(Object* &object : this->objects){
+		ExternalResult* result=xDynamicCast<ExternalResult*>(object);
+		result->WriteData(fid,io_gather);
+	}
+
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/ExternalResults/Results.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/ExternalResults/Results.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/ExternalResults/Results.h	(revision 27955)
@@ -0,0 +1,28 @@
+#ifndef _CONTAINER_RESULTS_H_
+#define _CONTAINER_RESULTS_H_
+
+#include "../../datastructures/datastructures.h"
+
+/*forward declarations */
+class Parameters;
+class ExternalResult;
+
+/*!\brief Declaration of Results class.
+ *
+ * Declaration of Results class.  Results are vector lists (Containers) of Result objects.
+ */ 
+class Results: public DataSet{
+
+	public:
+
+		/*constructors, destructors*/
+		Results();
+		~Results();
+
+		/*Mehthos*/
+		int AddResult(ExternalResult* result);
+		int DeleteResult(int result_enum,int result_step);
+		ExternalResult* FindResult(int result_enum);
+		void Write(Parameters* parameters);
+};
+#endif //ifndef _RESULTS_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/FemModel.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/FemModel.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/FemModel.cpp	(revision 27955)
@@ -0,0 +1,5876 @@
+/*!\file FemModel.cpp
+ * \brief: implementation of the FemModel object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <math.h>
+#include "../cores/cores.h"
+#include "../shared/io/io.h"
+#include "./classes.h"
+#include "./Inputs/TriaInput.h"
+#include "./modules/modules.h"
+#include "../shared/Enum/Enum.h"
+#include "../analyses/analyses.h"
+#include "./Inputs/DatasetInput.h"
+#include "./Inputs/ElementInput.h"
+#include "./Inputs/TransientInput.h"
+
+#if _HAVE_CODIPACK_
+#include <sstream> // for output of the CoDiPack tape
+extern CoDi_global codi_global;
+#endif
+
+#if defined(_HAVE_NEOPZ_) && !defined(_HAVE_AD_)
+#include <TPZRefPatternDataBase.h>
+#endif
+
+/*module includes: {{{*/
+#include "../modules/ModelProcessorx/ModelProcessorx.h"
+#include "../modules/SpcNodesx/SpcNodesx.h"
+#include "../modules/ConfigureObjectsx/ConfigureObjectsx.h"
+#include "../modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.h"
+#include "../modules/GetVectorFromInputsx/GetVectorFromInputsx.h"
+#include "../modules/InputUpdateFromVectorx/InputUpdateFromVectorx.h"
+#include "../modules/NodesDofx/NodesDofx.h"
+#include "../modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.h"
+#include "../modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.h"
+#include "../modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.h"
+#include "../modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.h"
+#include "../modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.h"
+#include "../modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.h"
+#include "../modules/ThicknessAlongGradientx/ThicknessAlongGradientx.h"
+#include "../modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.h"
+#include "../modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.h"
+#include "../modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.h"
+#include "../modules/NodalValuex/NodalValuex.h"
+#include "../modules/AverageOntoPartitionx/AverageOntoPartitionx.h"
+/*}}}*/
+
+/*Object constructors and destructor*/
+FemModel::FemModel(void){ /*{{{*/
+	/*do nothing:*/
+} /*}}}*/
+FemModel::FemModel(int argc,char** argv,ISSM_MPI_Comm incomm,bool trace){/*{{{*/
+
+	/*configuration: */
+	int  solution_type,amrtype,amr_frequency;
+	int  ierr;
+
+	/*File names*/
+	char *lockfilename   = NULL;
+	char *binfilename    = NULL;
+	char *outbinfilename = NULL;
+	char *petscfilename  = NULL;
+	char *restartfilename  = NULL;
+	char *rootpath       = NULL;
+	char *modelname       = NULL;
+
+	/*First things first, store the communicator, and set it as a global variable: */
+	IssmComm::SetComm(incomm);
+
+	/*Now, initialize PETSC: */
+	#ifdef _HAVE_PETSC_
+	PETSC_COMM_WORLD=incomm;
+	ierr=PetscInitialize(&argc,&argv,(char*)0,"");  if(ierr) _error_("Could not initialize Petsc");
+	#endif
+
+	/*Start profiler: */
+	this->profiler=new Profiler();
+	profiler->Start(TOTAL);
+
+	/*From command line arguments, retrieve different filenames needed to create the FemModel: */
+	ProcessArguments(&solution_type,&binfilename,&outbinfilename,&petscfilename,&lockfilename,&restartfilename,&rootpath,&modelname,argc,argv);
+
+	/*Create femmodel from input files: */
+	profiler->Start(MPROCESSOR);
+	this->InitFromFiles(rootpath,binfilename,outbinfilename,petscfilename,lockfilename,restartfilename, modelname, solution_type,trace,NULL);
+	profiler->Stop(MPROCESSOR);
+
+	/*Save communicator in the parameters dataset: */
+	this->parameters->AddObject(new GenericParam<ISSM_MPI_Comm>(incomm,FemModelCommEnum));
+
+   /*AMR stuff*/
+	this->parameters->FindParam(&amr_frequency,TransientAmrFrequencyEnum);
+	this->parameters->FindParam(&amr_frequency,TransientAmrFrequencyEnum);
+	#if defined(_HAVE_NEOPZ_) && !defined(_HAVE_AD_)
+	this->amr = NULL;
+	#endif
+	#if defined(_HAVE_BAMG_) && !defined(_HAVE_AD_)
+	this->amrbamg = NULL;
+	#endif
+	#if !defined(_HAVE_AD_)
+	if(amr_frequency && solution_type==TransientSolutionEnum){
+		/*Verifications. AMR supports SSA, P1 and horizontal 2D domain*/
+		bool isSSA;
+		int domaintype,element_type;
+		this->analysis_counter=-1;
+		this->parameters->FindParam(&isSSA,FlowequationIsSSAEnum);
+		this->parameters->FindParam(&domaintype,DomainTypeEnum);
+		for(int i=0;i<this->nummodels;i++) {
+			if(this->analysis_type_list[i]==StressbalanceAnalysisEnum){
+				analysis_counter=i;
+				break;
+			}
+		}
+		if(analysis_counter==-1) _error_("Could not find alias for analysis_type StressbalanceAnalysisEnum in list of FemModel analyses\n");
+		for(Object* & object : this->elements->objects){
+			Element* element = xDynamicCast<Element*>(object);
+			element_type		= element->element_type_list[analysis_counter];
+			if(element_type!=P1Enum) _error_("Element type "<<EnumToStringx(element_type)<<" not supported with AMR yet!\n");
+		}
+		if(!isSSA) _error_("Flow equation not supported with AMR yet!\n ");
+		if(domaintype!=Domain2DhorizontalEnum) _error_("Domain "<<EnumToStringx(domaintype)<<" not supported with AMR yet!\n");
+
+		this->parameters->FindParam(&amrtype,AmrTypeEnum);
+		switch(amrtype){
+
+			#if defined(_HAVE_NEOPZ_)
+			case AmrNeopzEnum: this->InitializeAdaptiveRefinementNeopz(); break;
+			#endif
+
+			#if defined(_HAVE_BAMG_)
+			case AmrBamgEnum: this->InitializeAdaptiveRefinementBamg(); break;
+			#endif
+
+			default: _error_("not implemented yet");
+		}
+	}
+	#endif
+
+	/*Free resources */
+	xDelete<char>(lockfilename);
+	xDelete<char>(binfilename);
+	xDelete<char>(outbinfilename);
+	xDelete<char>(petscfilename);
+	xDelete<char>(restartfilename);
+	xDelete<char>(modelname);
+	xDelete<char>(rootpath);
+
+}
+/*}}}*/
+FemModel::FemModel(char* rootpath, char* inputfilename, char* outputfilename, char* toolkitsfilename, char* lockfilename, char* restartfilename, char* modelname, ISSM_MPI_Comm incomm, int solution_type,IssmPDouble* X){ /*{{{*/
+
+	bool traceon=true;
+	this->profiler=NULL; /*avoid leak, as we are not using the profiler ever in ad control run. */
+
+	/*Store the communicator, but do not set it as a global variable, as this has already
+	 * been done by the FemModel that called this copy constructor: */
+	IssmComm::SetComm(incomm);
+
+	/*Create femmodel from input files, with trace activated: */
+	profiler->Start(MPROCESSOR);
+	this->InitFromFiles(rootpath,inputfilename,outputfilename,toolkitsfilename,lockfilename,restartfilename, modelname,solution_type,traceon,X);
+	profiler->Stop(MPROCESSOR);
+
+	#if defined(_HAVE_NEOPZ_) && !defined(_HAVE_AD_)
+	this->amr = NULL;
+	#endif
+	#if defined(_HAVE_BAMG_) && !defined(_HAVE_AD_)
+	this->amrbamg = NULL;
+	#endif
+
+	/*Save communicator in the parameters dataset: */
+	this->parameters->AddObject(new GenericParam<ISSM_MPI_Comm>(incomm,FemModelCommEnum));
+}
+/*}}}*/
+FemModel::~FemModel(){/*{{{*/
+
+	/*Intermediary*/
+	FILE *output_fid;
+	char *outbinfilename = NULL;
+	char *lockfilename   = NULL;
+
+	#ifndef _HAVE_JAVASCRIPT_
+	if(this->parameters->Exist(OutputFileNameEnum)) this->parameters->FindParam(&outbinfilename,OutputFileNameEnum);
+	if(this->parameters->Exist(LockFileNameEnum)) this->parameters->FindParam(&lockfilename,LockFileNameEnum);
+	#endif
+
+	/*Delete all the datasets: */
+	if(analysis_type_list)xDelete<int>(analysis_type_list);
+	if(outbinfilename)xDelete<char>(outbinfilename);
+	if(lockfilename)xDelete<char>(lockfilename);
+	if(elements)delete elements;
+	if(vertices)delete vertices;
+	if(this->constraints_list && this->nummodels){
+		for(int i=0;i<this->nummodels;i++) delete this->constraints_list[i];
+		xDelete<Constraints*>(constraints_list);
+	}
+	if(this->loads_list && this->nummodels){
+		for(int i=0;i<this->nummodels;i++) delete this->loads_list[i];
+		xDelete<Loads*>(loads_list);
+	}
+	if(this->nodes_list && this->nummodels){
+		for(int i=0;i<this->nummodels;i++) delete this->nodes_list[i];
+		xDelete<Nodes*>(nodes_list);
+	}
+	if(materials)delete materials;
+	if(parameters)delete parameters;
+	if(inputs)delete inputs;
+	if(results)delete results;
+
+	#if defined(_HAVE_NEOPZ_) && !defined(_HAVE_AD_)
+	if(amr)delete amr;
+	#endif
+
+	#if defined(_HAVE_BAMG_) && !defined(_HAVE_AD_)
+	if(amrbamg)delete amrbamg;
+	#endif
+
+	/*Now delete: */
+	if(profiler)delete profiler;
+}/*}}}*/
+
+/*Object management*/
+int FemModel::AnalysisIndex(int analysis_enum){/*{{{*/
+
+	/*Checks in debugging mode*/
+	_assert_(this->analysis_type_list);
+
+	/*Find analysis in list*/
+	for(int i=0;i<this->nummodels;i++){
+		if(this->analysis_type_list[i]==analysis_enum){
+			return i;
+			break;
+		}
+	}
+
+	/*If you reach this point, analysis has not been found*/
+	_error_("Could not find index of analysis " << EnumToStringx(analysis_enum) << " in list of FemModel analyses");
+
+}/*}}}*/
+void FemModel::CheckPoint(void){/*{{{*/
+
+	FILE* restartfid=NULL;
+	char* restartfilename = NULL;
+	int   femmodel_size;
+	char* femmodel_buffer=NULL;
+	char* femmodel_buffer_ini=NULL;
+
+	/*First, recover the name of the restart file: */
+	parameters->FindParam(&restartfilename,RestartFileNameEnum);
+
+	/*Open file for writing: */
+	restartfid=pfopen(restartfilename,"wb");
+
+	/*Initialize: */
+	femmodel_size=this->Size();
+	_assert_(femmodel_size);
+
+	/*Create buffer to hold marshalled femmodel: */
+	femmodel_buffer=xNew<char>(femmodel_size);
+
+	/*Keep track of initial position of femmodel_buffer: */
+	femmodel_buffer_ini=femmodel_buffer;
+
+	/*Marshall:*/
+   WriteCheckpointFunctor* marshallhandle = new WriteCheckpointFunctor(&femmodel_buffer);
+   this->Marshall(marshallhandle);
+	delete marshallhandle;
+
+	/*Reset position of buffer: */
+	femmodel_buffer=femmodel_buffer_ini;
+
+	/*write buffer: */
+	fwrite(femmodel_buffer,femmodel_size,sizeof(char),restartfid);
+
+	/*Done, close file :*/
+	pfclose(restartfid,restartfilename);
+
+	/*Free resources: */
+	xDelete<char>(femmodel_buffer);
+	xDelete<char>(restartfilename);
+}
+/*}}}*/
+void FemModel::CheckPointAD(int step){/*{{{*/
+
+	/*Get rank*/
+	int my_rank = IssmComm::GetRank();
+
+	/*Get string sizes*/
+	int rank_length = (my_rank == 0 ? 1 : int(log10(static_cast<double>(my_rank))+1));
+	int step_length = (step    == 0 ? 1 : int(log10(static_cast<double>(step))   +1));
+
+	/*Create restart file*/
+	char* restartfilename  = xNew<char>(strlen("AD_step_")+step_length+strlen("_rank_")+rank_length+strlen(".ckpt")+1);
+	sprintf(restartfilename,"%s%i%s%i%s","AD_step_",step,"_rank_",my_rank,".ckpt");
+	this->parameters->AddObject(new StringParam(RestartFileNameEnum,restartfilename));
+
+	/*Write files*/
+	this->CheckPoint();
+
+	/*Clean up and return*/
+	xDelete<char>(restartfilename);
+
+}/*}}}*/
+void FemModel::CleanUp(void){/*{{{*/
+
+	/*Intermediary*/
+	char *lockfilename   = NULL;
+	bool  waitonlock     = false;
+
+	/*Write lock file if requested: */
+	this->parameters->FindParam(&waitonlock,SettingsWaitonlockEnum);
+	this->parameters->FindParam(&lockfilename,LockFileNameEnum);
+	if(waitonlock){
+		_printf0_("write lock file:\n");
+		WriteLockFile(lockfilename);
+	}
+
+	/*Before we delete the profiler, report statistics for this run: */
+	profiler->Stop(TOTAL);  //final tagging
+
+	_printf0_("\n");
+	_printf0_("   "<<setw(40)<<left<<"FemModel initialization elapsed time:"<<setw(7)<<profiler->TotalTime(MPROCESSOR) << "\n");
+	/*Total times*/
+	_printf0_("   "<<setw(40)<<left<<"Total Core solution elapsed time:"<<setw(7)<<profiler->TotalTime(CORE) << "\n");
+
+	/*Linear solver only*/
+	_printf0_("   "<<setw(40)<<left<<"Linear solver elapsed time:"<<setw(7)<<profiler->TotalTime(SOLVER) << " ("<<setprecision(2)<<profiler->TotalTime(SOLVER)/profiler->TotalTime(CORE)*100.<<"%)\n");
+	_printf0_("\n");
+	_printf0_("   Total elapsed time: "
+				<<profiler->TotalTimeModHour(TOTAL)<<" hrs "
+				<<profiler->TotalTimeModMin(TOTAL)<<" min "
+				<<profiler->TotalTimeModSec(TOTAL)<<" sec"
+				);
+	_printf0_("\n");
+
+	/*Finalize PETSC for this model: */
+	#ifdef _HAVE_PETSC_
+	//_printf0_("closing PETSc\n");
+	PetscFinalize();
+	#endif
+
+	/*Cleanup toolkit*/
+	ToolkitOptions::Delete();
+
+	/*Clean up*/
+	xDelete<char>(lockfilename);
+} /*}}}*/
+FemModel* FemModel::copy(void){/*{{{*/
+
+	FemModel* output=NULL;
+	int       i;
+	int       analysis_type;
+
+	output=new FemModel(*this); //Use default copy constructor.
+
+	output->nummodels = this->nummodels;
+	output->solution_type = this->solution_type;
+	output->analysis_counter = this->analysis_counter;
+
+	/*Now, deep copy arrays: */
+	output->analysis_type_list=xNew<int>(nummodels);
+	xMemCpy<int>(output->analysis_type_list,this->analysis_type_list,this->nummodels);
+
+	/*Analysis dependent arrays*/
+	output->constraints_list=xNew<Constraints*>(this->nummodels);
+	output->loads_list=xNew<Loads*>(this->nummodels);
+	output->nodes_list=xNew<Nodes*>(this->nummodels);
+
+	output->profiler=static_cast<Profiler*>(this->profiler->copy());
+
+	output->materials=static_cast<Materials*>(this->materials->Copy());
+	output->parameters=static_cast<Parameters*>(this->parameters->Copy());
+	output->inputs=static_cast<Inputs*>(this->inputs->Copy());
+	output->results=static_cast<Results*>(this->results->Copy());
+	output->vertices=static_cast<Vertices*>(this->vertices->Copy());
+	output->elements=static_cast<Elements*>(this->elements->Copy());
+
+	/*reset hooks for elements, loads and nodes: */
+	output->elements->ResetHooks();
+	output->loads->ResetHooks();
+	output->materials->ResetHooks();
+
+	/*do the post-processing of the datasets to get an FemModel that can actually run analyses: */
+	for(i=0;i<nummodels;i++){
+		output->constraints_list[i] = static_cast<Constraints*>(this->constraints_list[i]->Copy());
+		output->loads_list[i] = static_cast<Loads*>(this->loads_list[i]->Copy());
+		output->nodes_list[i] = static_cast<Nodes*>(this->nodes_list[i]->Copy());
+		analysis_type=output->analysis_type_list[i];
+		output->SetCurrentConfiguration(analysis_type);
+		SpcNodesx(output->nodes_list[i],output->constraints_list[i],output->parameters);
+		NodesDofx(output->nodes_list[i],output->parameters);
+		ConfigureObjectsx(output->elements,output->loads_list[i],output->nodes_list[i],output->vertices,output->materials,output->parameters,output->inputs);
+	}
+
+	/*AMR, no copy for now*/
+	#if defined(_HAVE_NEOPZ_) && !defined(_HAVE_AD_)
+	this->amr = NULL;
+	#endif
+	#if defined(_HAVE_BAMG_) && !defined(_HAVE_AD_)
+	this->amrbamg = NULL;
+	#endif
+
+	/*Reset current configuration: */
+	analysis_type=output->analysis_type_list[analysis_counter];
+	output->SetCurrentConfiguration(analysis_type);
+
+	return output;
+}
+/*}}}*/
+void FemModel::Echo(void){/*{{{*/
+
+	_printf_("FemModel echo: \n");
+	_printf_("   number of fem models: " << nummodels << "\n");
+	_printf_("   analysis_type_list: \n");
+	for(int i=0;i<nummodels;i++)_printf_("     " << i << ": " << EnumToStringx(analysis_type_list[i]) << "\n");
+	_printf_("   current analysis_type: \n");
+	_printf_("     " << analysis_counter << ": " << EnumToStringx(analysis_type_list[analysis_counter]) << "\n");
+
+}
+/*}}}*/
+void FemModel::InitFromFiles(char* rootpath, char* inputfilename, char* outputfilename, char* toolkitsfilename, char* lockfilename, char* restartfilename, char* modelname, const int in_solution_type,bool trace,IssmPDouble* X){/*{{{*/
+
+	/*intermediary*/
+	FILE *IOMODEL            = NULL;
+	FILE *toolkitsoptionsfid = NULL;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Open input file descriptor on cpu 0: */
+	if(my_rank==0) IOMODEL = pfopen0(inputfilename ,"rb");
+
+	/*Open toolkits file: */
+	toolkitsoptionsfid=pfopen(toolkitsfilename,"r");
+
+	/*Now, go create FemModel:*/
+	this->InitFromFids(rootpath,IOMODEL,toolkitsoptionsfid,in_solution_type,trace,X);
+
+	/*Close input file and toolkits file descriptors: */
+	if(my_rank==0) pfclose(IOMODEL,inputfilename);
+	pfclose(toolkitsoptionsfid,toolkitsfilename);
+
+	/*Now save all of these file names into parameters, you never know when you might need them: */
+	this->parameters->AddObject(new StringParam(ToolkitsFileNameEnum,toolkitsfilename));
+	this->parameters->AddObject(new StringParam(ModelnameEnum,modelname));
+	this->parameters->AddObject(new StringParam(RootPathEnum,rootpath));
+	this->parameters->AddObject(new StringParam(InputFileNameEnum,inputfilename));
+	this->parameters->AddObject(new StringParam(OutputFileNameEnum,outputfilename));
+	this->parameters->AddObject(new StringParam(LockFileNameEnum,lockfilename));
+	this->parameters->AddObject(new StringParam(RestartFileNameEnum,restartfilename));
+
+}/*}}}*/
+void FemModel::InitFromFids(char* rootpath, FILE* IOMODEL, FILE* toolkitsoptionsfid, int in_solution_type, bool trace, IssmPDouble* X){/*{{{*/
+
+	/*Initialize internal data: */
+	this->solution_type    = in_solution_type;
+	this->analysis_counter = -1;
+	this->results          = new Results(); //not initialized by CreateDataSets
+
+	/*create IoModel */
+	IoModel* iomodel = new IoModel(IOMODEL,in_solution_type,trace,X);
+
+	/*Figure out what analyses are activated for this solution*/
+	SolutionAnalysesList(&this->analysis_type_list,&this->nummodels,iomodel,this->solution_type);
+
+	/*create datasets for all analyses*/
+	ModelProcessorx(&this->elements,&this->nodes_list,&this->vertices,&this->materials,&this->constraints_list,&this->loads_list,&this->parameters,&this->inputs,iomodel,toolkitsoptionsfid,rootpath,this->solution_type,this->nummodels,this->analysis_type_list);
+
+	/*do the post-processing of the datasets to get an FemModel that can actually run analyses: */
+	for(int i=0;i<nummodels;i++){
+
+		if(VerboseMProcessor()) _printf0_("   Processing finite element model of analysis " << EnumToStringx(analysis_type_list[i]) << ":\n");
+		this->SetCurrentConfiguration(analysis_type_list[i]);
+
+		if(VerboseMProcessor()) _printf0_("      configuring element and loads\n");
+		ConfigureObjectsx(this->elements,this->loads,this->nodes,this->vertices,this->materials,this->parameters,this->inputs);
+
+		if(i==0){
+			if(VerboseMProcessor()) _printf0_("      detecting active vertices\n");
+			GetMaskOfIceVerticesLSMx0(this);
+		}
+
+		if(VerboseMProcessor()) _printf0_("      resolving node constraints\n");
+		SpcNodesx(nodes,this->constraints,parameters);
+
+		if(VerboseMProcessor()) _printf0_("      creating nodal degrees of freedom\n");
+		NodesDofx(nodes,parameters);
+	}
+
+	/*Clean up*/
+	delete iomodel;
+}/*}}}*/
+void FemModel::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	/*Allocate new fields if necessary*/
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD){
+		delete this->materials;
+		delete this->parameters;
+		delete this->inputs;
+		if(this->constraints_list && this->nummodels){
+			for(int i=0;i<this->nummodels;i++) delete this->constraints_list[i];
+			xDelete<Constraints*>(constraints_list);
+		}
+		if(this->loads_list && this->nummodels){
+			for(int i=0;i<this->nummodels;i++) delete this->loads_list[i];
+			xDelete<Loads*>(loads_list);
+		}
+		if(this->nodes_list && this->nummodels){
+			for(int i=0;i<this->nummodels;i++) delete this->nodes_list[i];
+			xDelete<Nodes*>(nodes_list);
+		}
+		delete this->results;
+		delete this->vertices;
+		delete this->elements;
+		xDelete<int>(this->analysis_type_list);
+
+		this->materials   = new Materials();
+		this->parameters  = new Parameters();
+		this->inputs      = new Inputs();
+		this->results     = new Results();
+		this->vertices    = new Vertices();
+		this->elements    = new Elements();
+	}
+
+	int obj_enum = FemModelEnum;
+	marshallhandle->call(obj_enum);
+
+	marshallhandle->call(this->solution_type);
+	marshallhandle->call(this->analysis_counter);
+	marshallhandle->call(this->nummodels);
+	marshallhandle->call(this->analysis_type_list,nummodels);
+
+	this->materials->Marshall(marshallhandle);
+	this->parameters->Marshall(marshallhandle);
+	this->inputs->Marshall(marshallhandle);
+	this->results->Marshall(marshallhandle);
+	this->vertices->Marshall(marshallhandle);
+	this->elements->Marshall(marshallhandle);
+
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD){
+		this->constraints_list = xNew<Constraints*>(this->nummodels);
+		for(int i=0;i<nummodels;i++) this->constraints_list[i] = new Constraints();
+		this->loads_list = xNew<Loads*>(this->nummodels);
+		for(int i=0;i<nummodels;i++) this->loads_list[i] = new Loads();
+		this->nodes_list = xNew<Nodes*>(this->nummodels);
+		for(int i=0;i<nummodels;i++) this->nodes_list[i] = new Nodes();
+	}
+
+	for(int i=0;i<nummodels;i++){
+		this->constraints_list[i]->Marshall(marshallhandle);
+		this->loads_list[i]->Marshall(marshallhandle);
+		this->nodes_list[i]->Marshall(marshallhandle);
+	}
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD){
+		/*reset hooks for elements, loads and nodes:*/
+		this->elements->ResetHooks();
+		this->materials->ResetHooks();
+
+		/*do the post-processing of the datasets to get an FemModel that can actually run analyses:*/
+		for(int i=0;i<nummodels;i++){
+			this->loads_list[i]->ResetHooks();
+			int analysis_type=this->analysis_type_list[i];
+			SetCurrentConfiguration(analysis_type);
+			SpcNodesx(this->nodes_list[i],this->constraints_list[i],this->parameters);
+			NodesDofx(this->nodes_list[i],this->parameters);
+			ConfigureObjectsx(this->elements,this->loads_list[i],this->nodes_list[i],this->vertices,this->materials,this->parameters,this->inputs);
+		}
+
+		/*Reset current configuration*/
+		SetCurrentConfiguration(this->analysis_type_list[this->analysis_counter]);
+	}
+}
+/*}}}*/
+void FemModel::Restart(int verboselevel){ /*{{{*/
+
+	FILE *restartfid          = NULL;
+	char *restartfilename     = NULL;
+	int   femmodel_size       = 0;
+	int   fread_return        = 0;
+	char *femmodel_buffer     = NULL;
+	char *femmodel_buffer_ini = NULL;
+
+	/*First, recover the name of the restart file: */
+	parameters->FindParam(&restartfilename,RestartFileNameEnum);
+
+	/*Now, figure out whether this file actually exists!: */
+	restartfid=pfopen(restartfilename,"r",false);
+
+	if(restartfid==NULL){
+		xDelete<char>(restartfilename);
+		return; //could not find the file, so no restart possible.
+	}
+
+	/*Print banner*/
+   if(verboselevel>1){
+      _printf0_("                                                                    \n");
+      _printf0_("====================================================================\n");
+      _printf0_(" RESTART DETECTED: "<<restartfilename<<                            "\n");
+      _printf0_("====================================================================\n");
+      _printf0_("                                                                    \n");
+   }
+   else if(verboselevel==1){
+      _printf0_("    == restarting from "<<restartfilename<<"\n");
+   }
+   else{
+      /*Do not print anything*/
+   }
+
+	/*Figure out size of buffer to be read: */
+	fseek(restartfid, 0L, SEEK_END);
+	femmodel_size = ftell(restartfid);
+	fseek(restartfid, 0L, SEEK_SET);
+
+	/*Allocate buffer: */
+	femmodel_buffer=xNew<char>(femmodel_size);
+
+	/*Read buffer from file: */
+	fread_return=fread(femmodel_buffer,femmodel_size,sizeof(char),restartfid); if(fread_return!=1)_error_("error reading the buffer from marshalled file!");
+	femmodel_buffer_ini=femmodel_buffer; //keep track of the initial position, so as to free later.
+
+	/*Create new FemModel by demarshalling the buffer: */
+   LoadCheckpointFunctor* marshallhandle = new LoadCheckpointFunctor(&femmodel_buffer);
+   this->Marshall(marshallhandle);
+	delete marshallhandle;
+
+	/*Reset position of buffer: */
+	femmodel_buffer=femmodel_buffer_ini;
+
+	/*Done, close file :*/
+	pfclose(restartfid,restartfilename);
+
+	/*Free resources: */
+	xDelete<char>(restartfilename);
+	xDelete<char>(femmodel_buffer);
+}/*}}}*/
+void FemModel::RestartAD(int step){ /*{{{*/
+
+	/*Get rank*/
+	int my_rank = IssmComm::GetRank();
+
+	/*Get string sizes*/
+	int rank_length = (my_rank == 0 ? 1 : int(log10(static_cast<double>(my_rank))+1));
+	int step_length = (step    == 0 ? 1 : int(log10(static_cast<double>(step))   +1));
+
+	/*Create restart file*/
+	char* restartfilename  = xNew<char>(strlen("AD_step_")+step_length+strlen("_rank_")+rank_length+strlen(".ckpt")+1);
+	sprintf(restartfilename,"%s%i%s%i%s","AD_step_",step,"_rank_",my_rank,".ckpt");
+	this->parameters->AddObject(new StringParam(RestartFileNameEnum,restartfilename));
+
+	/*Read files*/
+	this->Restart(1);
+
+	/*Clean up and return*/
+	xDelete<char>(restartfilename);
+}/*}}}*/
+void FemModel::SetCurrentConfiguration(int configuration_type,int analysis_type){/*{{{*/
+
+	/*Use configuration_type to setup the analysis counter, the configurations of objects etc ... but use
+	 * analysis_type to drive the element numerics. This allows for use of 1 configuration_type for several
+	 * analyses. For example: do a SurfaceSlopeX, SurfaceSlopeY, BedSlopeX and BedSlopeY analysis using the
+	 * Slope configuration.*/
+	int index = AnalysisIndex(configuration_type);
+
+	/*If we already have the right analysis, return*/
+	//if(this->analysis_counter==index) return;
+	this->analysis_counter=index;
+
+	/*Now, plug analysis_counter and analysis_type inside the parameters: */
+	this->parameters->SetParam(analysis_counter,AnalysisCounterEnum);
+	this->parameters->SetParam(analysis_type,AnalysisTypeEnum);
+	this->parameters->SetParam(configuration_type,ConfigurationTypeEnum);
+
+	/*configure elements, loads and nodes, for this new analysis: */
+	this->loads = this->loads_list[this->analysis_counter];
+	this->constraints = this->constraints_list[this->analysis_counter];
+	this->nodes = this->nodes_list[this->analysis_counter];
+	this->loads->SetCurrentConfiguration(elements, loads, nodes,vertices, materials,parameters);
+	this->elements->SetCurrentConfiguration(elements,loads, nodes,vertices, materials,parameters);
+
+	/*take care of toolkits options, that depend on this analysis type (present only after model processor)*/
+	if(this->parameters->Exist(ToolkitsOptionsStringsEnum)){
+		ToolkitsOptionsFromAnalysis(this->parameters,analysis_type);
+		if(VerboseSolver()) _printf0_("      toolkits Options set for analysis: " << EnumToStringx(analysis_type) << "\n");
+	}
+
+}/*}}}*/
+void FemModel::SetCurrentConfiguration(int configuration_type){/*{{{*/
+	this->SetCurrentConfiguration(configuration_type,configuration_type);
+}
+/*}}}*/
+int  FemModel::Size(){ /*{{{*/
+
+	SizeCheckpointFunctor* marshallhandle = new SizeCheckpointFunctor();
+	this->Marshall(marshallhandle);
+	int femmodel_size = marshallhandle->MarshalledSize();
+
+	/*Cleanup and return*/
+	delete marshallhandle;
+	return femmodel_size;
+}
+/*}}}*/
+void FemModel::SolutionAnalysesList(int** panalyses,int* pnumanalyses,IoModel* iomodel,int solutiontype){/*{{{*/
+
+	/*output: */
+	int  numanalyses = 0;
+	int *analyses    = NULL;
+
+	/*Intermediaries*/
+	const int MAXANALYSES = 30;
+	int   analyses_temp[MAXANALYSES];
+
+	/*Analyses lists*/
+	switch(solutiontype){
+
+		case StressbalanceSolutionEnum:{
+			bool isSIA,isFS;
+			int  fe_FS;
+			iomodel->FindConstant(&fe_FS,"md.flowequation.fe_FS");
+			iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
+			iomodel->FindConstant(&isFS,"md.flowequation.isFS");
+			analyses_temp[numanalyses++]=StressbalanceAnalysisEnum;
+			analyses_temp[numanalyses++]=StressbalanceVerticalAnalysisEnum;
+			if(isSIA){
+				analyses_temp[numanalyses++]=StressbalanceSIAAnalysisEnum;
+			}
+			analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
+			analyses_temp[numanalyses++]=ExtrudeFromBaseAnalysisEnum;
+			analyses_temp[numanalyses++]=DepthAverageAnalysisEnum;
+			if(fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum){
+				analyses_temp[numanalyses++]=UzawaPressureAnalysisEnum;
+			}
+			}
+			break;
+
+		case SteadystateSolutionEnum:{
+			bool isSIA,isenthalpy;
+			iomodel->FindConstant(&isSIA,"md.flowequation.isSIA");
+			iomodel->FindConstant(&isenthalpy,"md.thermal.isenthalpy");
+			analyses_temp[numanalyses++]=StressbalanceAnalysisEnum;
+			analyses_temp[numanalyses++]=StressbalanceVerticalAnalysisEnum;
+			if(isSIA){
+				analyses_temp[numanalyses++]=StressbalanceSIAAnalysisEnum;
+			}
+			if(isenthalpy){
+				analyses_temp[numanalyses++]=EnthalpyAnalysisEnum;
+			}
+			else{
+				analyses_temp[numanalyses++]=ThermalAnalysisEnum;
+				analyses_temp[numanalyses++]=MeltingAnalysisEnum;
+			}
+			analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
+			}
+			break;
+
+		case ThermalSolutionEnum:{
+			bool isenthalpy;
+			iomodel->FindConstant(&isenthalpy,"md.thermal.isenthalpy");
+			if(isenthalpy){
+				analyses_temp[numanalyses++]=EnthalpyAnalysisEnum;
+			}
+			else{
+				analyses_temp[numanalyses++]=ThermalAnalysisEnum;
+				analyses_temp[numanalyses++]=MeltingAnalysisEnum;
+			}
+			}
+			break;
+
+		case HydrologySolutionEnum:{
+			int hydrology_model;
+			iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+			if(hydrology_model==HydrologyshreveEnum){
+				analyses_temp[numanalyses++]=HydrologyShreveAnalysisEnum;
+			}
+			else if(hydrology_model==HydrologyGlaDSEnum){
+				analyses_temp[numanalyses++]=HydrologyGlaDSAnalysisEnum;
+			}
+			if(hydrology_model==HydrologyshaktiEnum){
+				analyses_temp[numanalyses++]=HydrologyShaktiAnalysisEnum;
+			}
+			if(hydrology_model==HydrologypismEnum){
+				analyses_temp[numanalyses++]=HydrologyPismAnalysisEnum;
+			}
+			if(hydrology_model==HydrologyTwsEnum){
+				analyses_temp[numanalyses++]=HydrologyTwsAnalysisEnum;
+			}
+			if(hydrology_model==HydrologydcEnum){
+				analyses_temp[numanalyses++]=HydrologyDCInefficientAnalysisEnum;
+				analyses_temp[numanalyses++]=HydrologyDCEfficientAnalysisEnum;
+				analyses_temp[numanalyses++]=L2ProjectionEPLAnalysisEnum;
+				analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
+			}
+			if(hydrology_model==HydrologyarmapwEnum){
+				analyses_temp[numanalyses++]=HydrologyArmapwAnalysisEnum;
+			}
+		}
+			break;
+
+		case MasstransportSolutionEnum:
+			analyses_temp[numanalyses++]=DepthAverageAnalysisEnum;
+			analyses_temp[numanalyses++]=SmbAnalysisEnum;
+			analyses_temp[numanalyses++]=MasstransportAnalysisEnum;
+			analyses_temp[numanalyses++]=ExtrudeFromBaseAnalysisEnum;
+
+			break;
+
+		case BalancethicknessSolutionEnum:
+			analyses_temp[numanalyses++]=BalancethicknessAnalysisEnum;
+			break;
+
+		case Balancethickness2SolutionEnum:
+			analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
+			analyses_temp[numanalyses++]=SmoothAnalysisEnum;
+			analyses_temp[numanalyses++]=Balancethickness2AnalysisEnum;
+			break;
+
+		case BalancethicknessSoftSolutionEnum:
+			analyses_temp[numanalyses++]=BalancethicknessAnalysisEnum;
+			break;
+
+		case BalancevelocitySolutionEnum:
+			analyses_temp[numanalyses++]=BalancevelocityAnalysisEnum;
+			analyses_temp[numanalyses++]=SmoothAnalysisEnum;
+			break;
+
+		case SurfaceSlopeSolutionEnum:
+			analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
+			break;
+
+		case BedSlopeSolutionEnum:
+			analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
+			break;
+
+		case LoveSolutionEnum:
+			analyses_temp[numanalyses++]=LoveAnalysisEnum;
+			break;
+
+		case EsaSolutionEnum:
+			analyses_temp[numanalyses++]=EsaAnalysisEnum;
+			break;
+
+		case SamplingSolutionEnum:
+			analyses_temp[numanalyses++]=SamplingAnalysisEnum;
+			break;
+
+		case SmbSolutionEnum:
+			analyses_temp[numanalyses++]=SmbAnalysisEnum;
+			break;
+
+		case DamageEvolutionSolutionEnum:
+			analyses_temp[numanalyses++]=DamageEvolutionAnalysisEnum;
+			break;
+
+		case TransientSolutionEnum:{
+			/*We have multiple analyses here, process one by one*/
+			bool isSIA,isFS,isthermal,isenthalpy,ismasstransport,isoceantransport,isgroundingline,isstressbalance,ismovingfront,ishydrology,isdamage,issmb,isslc,isesa,isdebris,issampling;
+			iomodel->FindConstant(&isthermal,"md.transient.isthermal");
+			iomodel->FindConstant(&ismovingfront,"md.transient.ismovingfront");
+			iomodel->FindConstant(&ismasstransport,"md.transient.ismasstransport");
+			iomodel->FindConstant(&isoceantransport,"md.transient.isoceantransport");
+			iomodel->FindConstant(&isstressbalance,"md.transient.isstressbalance");
+			iomodel->FindConstant(&isgroundingline,"md.transient.isgroundingline");
+			iomodel->FindConstant(&isdamage,"md.transient.isdamageevolution");
+			iomodel->FindConstant(&ishydrology,"md.transient.ishydrology");
+			iomodel->FindConstant(&issmb,"md.transient.issmb");
+			iomodel->FindConstant(&isslc,"md.transient.isslc");
+			iomodel->FindConstant(&isesa,"md.transient.isesa");
+			iomodel->FindConstant(&isdebris,"md.transient.isdebris");
+			iomodel->FindConstant(&issampling,"md.transient.issampling");
+      int* analyses_iter     = NULL;
+      int  num_analyses_iter = 0;
+			if(isstressbalance){
+				SolutionAnalysesList(&analyses_iter,&num_analyses_iter,iomodel,StressbalanceSolutionEnum);
+            xMemCpy<int>(&analyses_temp[numanalyses],analyses_iter,num_analyses_iter);
+				numanalyses+=num_analyses_iter; xDelete<int>(analyses_iter);
+         }
+			if(isthermal && iomodel->domaintype==Domain3DEnum){
+				SolutionAnalysesList(&analyses_iter,&num_analyses_iter,iomodel,ThermalSolutionEnum);
+            xMemCpy<int>(&analyses_temp[numanalyses],analyses_iter,num_analyses_iter);
+				numanalyses+=num_analyses_iter; xDelete<int>(analyses_iter);
+			}
+			if(ismasstransport || isgroundingline){
+				analyses_temp[numanalyses++]=MasstransportAnalysisEnum;
+				int  basalforcing_model;
+				iomodel->FindConstant(&basalforcing_model,"md.basalforcings.model");
+				if(basalforcing_model==BasalforcingsPicoEnum){
+					bool isplume;
+					iomodel->FindConstant(&isplume,"md.basalforcings.isplume");
+					if(isplume){
+						analyses_temp[numanalyses++]=GLheightadvectionAnalysisEnum;
+					}
+				}
+			}
+			if(issmb) analyses_temp[numanalyses++]=SmbAnalysisEnum;
+			if(ismovingfront){
+				analyses_temp[numanalyses++]=ExtrapolationAnalysisEnum;
+				analyses_temp[numanalyses++]=LevelsetAnalysisEnum;
+			}
+			if(ishydrology){
+				SolutionAnalysesList(&analyses_iter,&num_analyses_iter,iomodel,HydrologySolutionEnum);
+            xMemCpy<int>(&analyses_temp[numanalyses],analyses_iter,num_analyses_iter);
+				numanalyses+=num_analyses_iter; xDelete<int>(analyses_iter);
+			}
+			if(isdamage){
+				analyses_temp[numanalyses++]=DamageEvolutionAnalysisEnum;
+			}
+			if(isoceantransport){
+				analyses_temp[numanalyses++]=OceantransportAnalysisEnum;
+			}
+			if(isslc){
+				analyses_temp[numanalyses++]=SealevelchangeAnalysisEnum;
+			}
+			if(isesa){
+				analyses_temp[numanalyses++]=EsaAnalysisEnum;
+			}
+			if(isdebris){
+				analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
+				analyses_temp[numanalyses++]=SmbAnalysisEnum;
+				analyses_temp[numanalyses++]=ExtrudeFromTopAnalysisEnum;
+				analyses_temp[numanalyses++]=DebrisAnalysisEnum;
+			}
+			if(issampling){
+				analyses_temp[numanalyses++]=SamplingAnalysisEnum;
+			}
+
+			if(iomodel->domaintype==Domain2DverticalEnum || iomodel->domaintype==Domain3DEnum){
+				analyses_temp[numanalyses++]=ExtrudeFromBaseAnalysisEnum;
+				analyses_temp[numanalyses++]=ExtrudeFromTopAnalysisEnum;
+				analyses_temp[numanalyses++]=FreeSurfaceBaseAnalysisEnum;
+				analyses_temp[numanalyses++]=FreeSurfaceTopAnalysisEnum;
+			}
+			analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
+			}
+			break;
+
+		default:
+			_error_("solution type: " << EnumToStringx(solutiontype) << " not supported yet!");
+			break;
+	}
+
+	/*Copy analyses from temp to output*/
+	_assert_(numanalyses<MAXANALYSES);
+	analyses=xNew<int>(numanalyses);
+	for(int i=0;i<numanalyses;i++) analyses[i]=analyses_temp[i];
+
+	/*Assign output pointers:*/
+	if(pnumanalyses) *pnumanalyses=numanalyses;
+	if(panalyses)    *panalyses=analyses;
+	else              xDelete<int>(analyses);
+}/*}}}*/
+void FemModel::Solve(void){/*{{{*/
+
+	/*profiling: */
+	bool profiling = false;
+	IssmDouble solution_time;
+	IssmDouble solution_flops;
+	IssmDouble solution_memory;
+
+	/*solution: */
+	int solution_type;
+	void (*solutioncore)(FemModel*)=NULL; //core solution function pointer
+
+	_printf0_("call computational core:\n");
+
+	/*Retrieve solution_type from parameters: */
+	parameters->FindParam(&solution_type,SolutionTypeEnum);
+
+	/*Figure out which solution core we are going to run with the current solution type: */
+	WrapperCorePointerFromSolutionEnum(&solutioncore,this->parameters,solution_type);
+
+	/*run solution core: */
+	profiler->Start(CORE);
+	solutioncore(this);
+	profiler->Stop(CORE);
+
+	/*run AD core if needed: */
+	profiler->Start(ADCORE);
+	ad_core(this);
+	profiler->Stop(ADCORE);
+
+	/*some profiling results for the core: */
+	parameters->FindParam(&profiling,DebugProfilingEnum);
+	if(profiling){
+
+		solution_time=profiler->TotalTime(CORE);
+		solution_flops=profiler->TotalFlops(CORE);
+		solution_memory=profiler->Memory(CORE);
+
+		_printf0_("\n======================================================\n");
+		_printf0_("Core solution profiling\n");
+		_printf0_("   elapsed time    : " << solution_time   << " Seconds\n");
+		_printf0_("   number of flops : " << solution_flops  << " Flops\n");
+		_printf0_("   memory used     : " << solution_memory << " Bytes\n");
+
+		/*Individual cores*/
+		_printf0_("\nIndividual core profiling\n");
+		if(profiler->Used(THERMALCORE)) _printf0_("   "<<setw(40)<<left<<"Thermal core elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(THERMALCORE) << " sec\n");
+		if(profiler->Used(HYDROLOGYCORE)) _printf0_("   "<<setw(40)<<left<<"Hydrology core elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(HYDROLOGYCORE) << " sec\n");
+		if(profiler->Used(STRESSBALANCECORE)) _printf0_("   "<<setw(40)<<left<<"Stress balance core elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(STRESSBALANCECORE) << " sec\n");
+		if(profiler->Used(DAMAGECORE)) _printf0_("   "<<setw(40)<<left<<"Damage core elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(DAMAGECORE) << " sec\n");
+		if(profiler->Used(MOVINGFRONTCORE)) _printf0_("   "<<setw(40)<<left<<"Moving front core elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(MOVINGFRONTCORE) << " sec\n");
+		if(profiler->Used(MASSTRANSPORTCORE)) _printf0_("   "<<setw(40)<<left<<"Mass transport core elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(MASSTRANSPORTCORE) << " sec\n");
+		if(profiler->Used(SMBCORE)) _printf0_("   "<<setw(40)<<left<<"SMB core elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(SMBCORE) << " sec\n");
+		if(profiler->Used(GROUNDINGLINECORE)) _printf0_("   "<<setw(40)<<left<<"Groundingline migration core elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(GROUNDINGLINECORE) << " sec\n");
+		if(profiler->Used(ESACORE)) _printf0_("   "<<setw(40)<<left<<"ESA core elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(ESACORE) << " sec\n");
+		if(profiler->Used(DEBRISCORE)) _printf0_("   "<<setw(40)<<left<<"DEBRIS core elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(SLRCORE) << " sec\n");
+		if(profiler->Used(SLRCORE)) _printf0_("   "<<setw(40)<<left<<"SLR core elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(SLRCORE) << " sec\n");
+		if(profiler->Used(MPISERIAL)) _printf0_("   "<<setw(40)<<left<<"MPISERIAL elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(MPISERIAL) << " sec\n");
+
+		if(profiler->Used(SEDLOOP)) _printf0_("   "<<setw(40)<<left<<"SedimentLoop elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(SEDLOOP) << " sec\n");
+		if(profiler->Used(SEDMatrix)) _printf0_("   "<<setw(40)<<left<<"SedimentMatrix elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(SEDMatrix) << " sec\n");
+		if(profiler->Used(SEDUpdate)) _printf0_("   "<<setw(40)<<left<<"SedimentUpdate elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(SEDUpdate) << " sec\n");
+		if(profiler->Used(EPLLOOP)) _printf0_("   "<<setw(40)<<left<<"EplLoop elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(EPLLOOP) << " sec\n");
+		if(profiler->Used(EPLMasking)) _printf0_("   "<<setw(40)<<left<<"EPL masking elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(EPLMasking) << " sec\n");
+		if(profiler->Used(EPLMatrices)) _printf0_("   "<<setw(40)<<left<<"EPLMatrices elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(EPLMatrices) << " sec\n");
+		if(profiler->Used(EPLUpdate)) _printf0_("   "<<setw(40)<<left<<"EPLUpdate elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(EPLUpdate) << " sec\n");
+
+		/*Add to results: */
+		results->AddObject(new GenericExternalResult<IssmDouble>(results->Size()+1, ProfilingSolutionTimeEnum,  solution_time));
+		results->AddObject(new GenericExternalResult<IssmDouble>(results->Size()+1, ProfilingCurrentMemEnum,  solution_memory));
+		results->AddObject(new GenericExternalResult<IssmDouble>(results->Size()+1, ProfilingCurrentFlopsEnum, solution_flops));
+
+		#ifdef _HAVE_AD_
+		solution_time   = profiler->TotalTime(ADCORE);
+		solution_flops  = profiler->TotalFlops(ADCORE);
+		solution_memory = profiler->Memory(ADCORE);
+
+		_printf0_("AD profiling\n");
+		_printf0_("   elapsed time    : " << solution_time   << " Seconds\n");
+		_printf0_("   number of flops : " << solution_flops  << " Flops\n");
+		_printf0_("   memory used     : " << solution_memory << " Bytes\n");
+		#endif
+		_printf0_("======================================================\n");
+	}
+}
+/*}}}*/
+
+/*Modules:*/
+void FemModel::BalancethicknessMisfitx(IssmDouble* presponse){/*{{{*/
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	IssmDouble  weight,vx,vy,H,dvx[2],dvy[2],dH[2];
+	IssmDouble  temp,Jdet,dhdt,groundedice_melting,surface_mass_balance;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble  dp[3];
+
+	/*Compute Misfit: */
+	for(Object* & object : this->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+
+		/*If on water, return 0: */
+		if(!element->IsIceInElement()) continue;
+
+		/* Get node coordinates*/
+		element->GetVerticesCoordinates(&xyz_list);
+		DatasetInput* weights_input                   = element->GetDatasetInput(InversionCostFunctionsCoefficientsEnum);   _assert_(weights_input);
+		Input* thickness_input                 = element->GetInput(ThicknessEnum); _assert_(thickness_input);
+		Input* vx_input                        = element->GetInput(VxEnum);                                  _assert_(vx_input);
+		Input* vy_input                        = element->GetInput(VyEnum);                                  _assert_(vy_input);
+		Input* surface_mass_balance_input      = element->GetInput(SmbMassBalanceEnum);          _assert_(surface_mass_balance_input);
+		Input* groundedice_melting_input       = element->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(groundedice_melting_input);
+		Input* dhdt_input                      = element->GetInput(BalancethicknessThickeningRateEnum);      _assert_(dhdt_input);
+
+		/* Start  looping on the number of gaussian points: */
+		Gauss* gauss=element->NewGauss(2);
+		while(gauss->next()){
+
+			/* Get Jacobian determinant: */
+			element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+			/*Get all parameters at gaussian point*/
+			weights_input->GetInputValue(&weight,gauss,BalancethicknessMisfitEnum);
+			thickness_input->GetInputValue(&H, gauss);
+			thickness_input->GetInputDerivativeValue(&dH[0],xyz_list,gauss);
+			surface_mass_balance_input->GetInputValue(&surface_mass_balance,gauss);
+			groundedice_melting_input->GetInputValue(&groundedice_melting,gauss);
+			dhdt_input->GetInputValue(&dhdt,gauss);
+			vx_input->GetInputValue(&vx,gauss);
+			vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+			vy_input->GetInputValue(&vy,gauss);
+			vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+
+			/*Balance thickness soft constraint J = 1/2 (div(Hv)-a)^2*/
+			temp  = vx*dH[0]+vy*dH[1]+H*(dvx[0]+dvy[1]) - (surface_mass_balance-groundedice_melting-dhdt);
+			J    +=weight*1/2*temp*temp*Jdet*gauss->weight;
+		}
+
+		/*clean up and Return: */
+		xDelete<IssmDouble>(xyz_list);
+		delete gauss;
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*presponse=J;
+
+}/*}}}*/
+void FemModel::CalvingRateVonmisesx(){/*{{{*/
+
+	for(Object* & object : this->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+		element->CalvingRateVonmises();
+	}
+}
+/*}}}*/
+void FemModel::CalvingRateLevermannx(){/*{{{*/
+
+	for(Object* & object : this->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+		element->CalvingRateLevermann();
+	}
+}
+/*}}}*/
+void FemModel::CalvingFluxLevelsetx(){/*{{{*/
+
+	for(Object* & object : this->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+		element->CalvingFluxLevelset();
+	}
+}
+/*}}}*/
+void FemModel::CalvingMeltingFluxLevelsetx(){/*{{{*/
+
+	for(Object* & object : this->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+		element->CalvingMeltingFluxLevelset();
+	}
+}
+/*}}}*/
+void FemModel::CostFunctionx(IssmDouble* pJ,IssmDouble** pJlist,int* pn){/*{{{*/
+
+	/*Intermediary*/
+	int      num_responses;
+	int     *responses      = NULL;
+	Results *cost_functions = NULL;
+
+	/*Recover parameters*/
+	parameters->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	parameters->FindParam(&responses,NULL,InversionCostFunctionsEnum);
+
+	/*Get the value of all cost functions*/
+	this->RequestedOutputsx(&cost_functions,responses,num_responses);
+
+	/*Get and add all contributions one by one*/
+	IssmDouble  J=0;
+	IssmDouble* Jlist = xNew<IssmDouble>(num_responses);
+	for(int i=0;i<num_responses;i++){
+		ExternalResult* result=(ExternalResult*)cost_functions->GetObjectByOffset(i);
+		Jlist[i] = reCast<IssmDouble>(result->GetValue());
+		J       += Jlist[i];
+	}
+	_assert_(cost_functions->Size()==num_responses);
+
+	/*Assign output pointers: */
+	delete cost_functions;
+	xDelete<int>(responses);
+	if(pJ)     *pJ     = J;
+	if(pJlist) *pJlist = Jlist;
+	else        xDelete<IssmDouble>(Jlist);
+	if(pn)     *pn     = num_responses;
+}
+/*}}}*/
+void FemModel::DeviatoricStressx(){/*{{{*/
+
+	for(Object* & object : this->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+		element->ComputeDeviatoricStressTensor();
+	}
+}
+/*}}}*/
+void FemModel::DistanceToFieldValue(int fieldenum,IssmDouble fieldvalue,int distanceenum){/*{{{*/
+
+	/*recover my_rank:*/
+	int my_rank   = IssmComm::GetRank();
+	int num_procs = IssmComm::GetSize();
+
+	/*Get domain type (2d or 3d)*/
+	int domaintype;
+	this->parameters->FindParam(&domaintype,DomainTypeEnum);
+
+	/*1: go throug all elements of this partition and figure out how many
+	 * segments we have (corresopnding to field = value)*/
+	DataSet* segments=new DataSet();
+	for(Object* & object : this->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+		if(!element->IsOnBase()) continue;
+		Element* basalelement = element->SpawnBasalElement();
+		basalelement->WriteFieldIsovalueSegment(segments,fieldenum,fieldvalue);
+		if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	}
+
+	/*2: now get the segments from all partitions*/
+	int  segcount=segments->Size();
+	int* allsegcount=xNew<int>(num_procs);
+	ISSM_MPI_Gather(&segcount,1,ISSM_MPI_INT,allsegcount,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	ISSM_MPI_Bcast(allsegcount,num_procs,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/* Every cpu should start its own dof count at the end of the dofcount from cpu-1*/
+	int numseg_offset=0;
+	int numseg=0;
+	for(int i=0;i<my_rank;  i++) numseg_offset+=allsegcount[i];
+	for(int i=0;i<num_procs;i++) numseg+=allsegcount[i];
+	IssmDouble* segmentlist    = xNewZeroInit<IssmDouble>(4*numseg);
+	IssmDouble* allsegmentlist = xNewZeroInit<IssmDouble>(4*numseg);
+	int i=0;
+	for(Object* & object : segments->objects){
+		Contour<IssmDouble>* segment=(Contour<IssmDouble>*)object;
+		_assert_(segment->nods == 2);
+		segmentlist[(numseg_offset+i)*4 + 0] = segment->x[0];
+		segmentlist[(numseg_offset+i)*4 + 1] = segment->y[0];
+		segmentlist[(numseg_offset+i)*4 + 2] = segment->x[1];
+		segmentlist[(numseg_offset+i)*4 + 3] = segment->y[1];
+		i++;
+	}
+
+	ISSM_MPI_Allreduce((void*)segmentlist,(void*)allsegmentlist,4*numseg,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+	delete segments;
+	xDelete<IssmDouble>(segmentlist);
+	xDelete<int>(allsegcount);
+
+	/*3: Add distance input to all elements*/
+	IssmDouble* distances = xNew<IssmDouble>(vertices->Size());
+	IssmDouble  d,xn,yn,dmin;
+	int         last = -1;
+	for(Object* & object : this->vertices->objects){
+      Vertex* vertex= xDynamicCast<Vertex*>(object);
+		IssmDouble x = vertex->x;
+		IssmDouble y = vertex->y;
+
+		/*Most of the time the last checked segment is the closest so start with that one*/
+		if(last>0){
+			dmin = pow(allsegmentlist[4*last+0] - x,2) + pow(y-allsegmentlist[4*last+1],2);
+		}
+		else{
+			dmin = 1.e+50;
+		}
+
+		for(int i=0;i<numseg;i++){
+
+			/*Skip if tip is more than 10xdmin away*/
+			if(pow(allsegmentlist[4*i+0] - x,2)>10*dmin) continue;
+			if(pow(allsegmentlist[4*i+1] - y,2)>10*dmin) continue;
+
+			IssmDouble l2 = (allsegmentlist[4*i+2]-allsegmentlist[4*i+0])*(allsegmentlist[4*i+2]-allsegmentlist[4*i+0]) + (allsegmentlist[4*i+3]-allsegmentlist[4*i+1])*(allsegmentlist[4*i+3]-allsegmentlist[4*i+1]);
+
+			/*Segment has a length of 0*/
+			if(l2==0.){
+				d = (x-allsegmentlist[4*i+0])*(x-allsegmentlist[4*i+0])+(y-allsegmentlist[4*i+1])*(y-allsegmentlist[4*i+1]);
+				if(d<dmin){
+					dmin = d;
+					last = i;
+				}
+				continue;
+			}
+
+			/*Consider the line extending the segment, parameterized as v + t (w - v).
+			 *We find projection of point p onto the line.
+			 *It falls where t = [(p-v) . (w-v)] / |w-v|^2*/
+			IssmDouble t = ((x-allsegmentlist[4*i+0])*(allsegmentlist[4*i+2]-allsegmentlist[4*i+0]) + (y-allsegmentlist[4*i+1])*(allsegmentlist[4*i+3]-allsegmentlist[4*i+1]))/l2;
+			if(t < 0.0){
+				// Beyond the 'v' end of the segment
+				d = (x-allsegmentlist[4*i+0])*(x-allsegmentlist[4*i+0])+(y-allsegmentlist[4*i+1])*(y-allsegmentlist[4*i+1]);
+			}
+			else if (t > 1.0){
+				// Beyond the 'w' end of the segment
+				d = (x-allsegmentlist[4*i+2])*(x-allsegmentlist[4*i+2])+(y-allsegmentlist[4*i+3])*(y-allsegmentlist[4*i+3]);
+			}
+			else{
+				// Projection falls on the segment
+				xn = allsegmentlist[4*i+0] + t * (allsegmentlist[4*i+2] - allsegmentlist[4*i+0]);
+				yn = allsegmentlist[4*i+1] + t * (allsegmentlist[4*i+3] - allsegmentlist[4*i+1]);
+				d = (x-xn)*(x-xn)+(y-yn)*(y-yn);
+			}
+
+			if(d<dmin){
+				dmin = d;
+				last = i;
+			}
+		}
+
+		/*Update signed distance*/
+		_assert_(vertex->lid<vertices->Size());
+		distances[vertex->lid] = sqrt(dmin);
+	}
+
+	for(Object* & object : this->elements->objects){
+      Element* element= xDynamicCast<Element*>(object);
+		element->CreateDistanceInputFromSegmentlist(distances,distanceenum);
+	}
+	//InputUpdateFromVectorx(this,distances,distanceenum,VertexLIdEnum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(distances);
+	xDelete<IssmDouble>(allsegmentlist);
+}/*}}}*/
+void FemModel::Divergencex(IssmDouble* pdiv){/*{{{*/
+
+	IssmDouble local_divergence=0;
+	IssmDouble total_divergence;
+
+	for(Object* & object : this->elements->objects){
+      Element* element= xDynamicCast<Element*>(object);
+		local_divergence+=element->Divergence();
+	}
+	ISSM_MPI_Reduce(&local_divergence,&total_divergence,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_divergence,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pdiv=total_divergence;
+
+}/*}}}*/
+void FemModel::ElementOperationx(void (Element::*function)(void)){ /*{{{*/
+
+	for(Object* & object : this->elements->objects){
+      Element* element= xDynamicCast<Element*>(object);
+		(element->*function)();
+	}
+
+}
+/*}}}*/
+void FemModel::ElementResponsex(IssmDouble* presponse,int response_enum){/*{{{*/
+
+	int found=0;
+	int sumfound=0;
+	int cpu_found=-1;
+	int index;
+	IssmDouble response;
+	Element* element=NULL;
+
+	/*retrieve element we are interested in: */
+	this->parameters->FindParam(&index,IndexEnum);
+	int my_rank=IssmComm::GetRank();
+
+	/*now, go through our elements, and retrieve the one with this id: index: */
+	for(Object* & object : this->elements->objects){
+      element= xDynamicCast<Element*>(object);
+		if (element->Id()==index){
+			found=1;
+			cpu_found=my_rank;
+			break;
+		}
+	}
+
+	/*Broadcast whether we found the element: */
+	ISSM_MPI_Allreduce ( &found,&sumfound,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
+	if(!sumfound)_error_("could not find material with id" << index << " to compute ElementResponse");
+
+	/*Ok, we found the element, compute responseocity: */
+	if(my_rank==cpu_found){
+		element->ElementResponse(&response,response_enum);
+	}
+
+	/*Broadcast and plug into response: */
+	ISSM_MPI_Allreduce ( &cpu_found,&cpu_found,1,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
+	ISSM_MPI_Bcast(&response,1,ISSM_MPI_DOUBLE,cpu_found,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*presponse=response;
+
+}/*}}}*/
+void FemModel::FloatingAreax(IssmDouble* pV, bool scaled){/*{{{*/
+
+	IssmDouble local_floating_area= 0;
+	IssmDouble total_floating_area;
+
+	for(Object* & object : this->elements->objects){
+      Element* element= xDynamicCast<Element*>(object);
+		local_floating_area+=element->FloatingArea(scaled);
+	}
+	ISSM_MPI_Reduce(&local_floating_area,&total_floating_area,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_floating_area,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pV=total_floating_area;
+
+}/*}}}*/
+void FemModel::GetInputLocalMinMaxOnNodesx(IssmDouble** pmin,IssmDouble** pmax,IssmDouble* ug){/*{{{*/
+
+	/*Initialize output vectors*/
+	int numnodes = this->nodes->NumberOfNodes();
+	IssmDouble* uLmin_local = xNew<IssmDouble>(numnodes);
+	IssmDouble* uLmax_local = xNew<IssmDouble>(numnodes);
+	IssmDouble* uLmin = xNew<IssmDouble>(numnodes);
+	IssmDouble* uLmax = xNew<IssmDouble>(numnodes);
+	for(int i=0;i<numnodes;i++){
+		uLmin_local[i] = +1.e+50;
+		uLmax_local[i] = -1.e+50;
+	}
+
+	for(Object* & object : this->elements->objects){
+      Element* element= xDynamicCast<Element*>(object);
+		element->GetInputLocalMinMaxOnNodes(uLmin_local,uLmax_local,ug);
+	}
+
+	/*Synchronize all CPUs*/
+	ISSM_MPI_Allreduce((void*)uLmin_local,(void*)uLmin,numnodes,ISSM_MPI_DOUBLE,ISSM_MPI_MIN,IssmComm::GetComm());
+	ISSM_MPI_Allreduce((void*)uLmax_local,(void*)uLmax,numnodes,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,IssmComm::GetComm());
+	xDelete<IssmDouble>(uLmin_local);
+	xDelete<IssmDouble>(uLmax_local);
+
+	/*Assign output pointers: */
+	*pmin=uLmin;
+	*pmax=uLmax;
+
+}/*}}}*/
+void FemModel::GetLocalVectorWithClonesGset(IssmDouble** plocal_ug,Vector<IssmDouble> *ug){/*{{{*/
+
+	this->nodes->GetLocalVectorWithClonesGset(plocal_ug,ug);
+
+}/*}}}*/
+void FemModel::GetLocalVectorWithClonesVertices(IssmDouble** plocal_vector,Vector<IssmDouble> *vector){/*{{{*/
+
+	/*retrieve vertex info*/
+	int localsize         = this->vertices->NumberOfVerticesLocalAll();
+	int localsize_masters = this->vertices->NumberOfVerticesLocal();
+
+	/*Get local vector of vector*/
+	int        *indices_vector_masters = NULL;
+	IssmDouble *local_vector_masters   = NULL;
+	vector->GetLocalVector(&local_vector_masters,&indices_vector_masters);
+	_assert_(localsize_masters==indices_vector_masters[localsize_masters-1] - indices_vector_masters[0]+1);
+	xDelete<int>(indices_vector_masters);
+
+	/*Now, extend vectors to account for clones (make vectors longer, for clones at the end)*/
+	IssmDouble *local_vector  = xNew<IssmDouble>(localsize);
+	xMemCpy<IssmDouble>(local_vector,local_vector_masters,localsize_masters);
+	xDelete<IssmDouble>(local_vector_masters);
+
+	/*Now send and receive vector for vertices on partition edge*/
+	SyncLocalVectorWithClonesVertices(local_vector);
+
+	/*Assign output pointer*/
+	*plocal_vector = local_vector;
+}/*}}}*/
+void FemModel::SyncLocalVectorWithClonesVertices(IssmDouble* local_vector){/*{{{*/
+
+	/*recover my_rank:*/
+	ISSM_MPI_Status status;
+	int my_rank   = IssmComm::GetRank();
+	int num_procs = IssmComm::GetSize();
+
+	/*Now send and receive vector for vertices on partition edge*/
+	IssmDouble **send_buffers = xNewZeroInit<IssmDouble*>(num_procs);
+	IssmDouble  *recv_buffer  = xNewZeroInit<IssmDouble>(this->vertices->Size());
+	ISSM_MPI_Request  *send_requests = xNew<ISSM_MPI_Request>(num_procs);
+	for (int rank = 0;rank<num_procs;rank++) send_requests[rank] = ISSM_MPI_REQUEST_NULL;
+
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->vertices->common_send[rank]){
+			int  numids = this->vertices->common_send[rank];
+			send_buffers[rank] = xNew<IssmDouble>(numids,"t"); //only one alloc, "t" is required by adolc
+			for(int i=0;i<numids;i++){
+				int   master_lid = this->vertices->common_send_ids[rank][i];
+				Vertex* vertex=xDynamicCast<Vertex*>(this->vertices->GetObjectByOffset(master_lid));
+				_assert_(!vertex->clone);
+            send_buffers[rank][i] = local_vector[vertex->lid];
+			}
+         ISSM_MPI_Isend(send_buffers[rank],numids,ISSM_MPI_DOUBLE,rank,0,IssmComm::GetComm(),&send_requests[rank]);
+		}
+	}
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->vertices->common_recv[rank]){
+			int  numids = this->vertices->common_recv[rank];
+         ISSM_MPI_Recv(recv_buffer,numids,ISSM_MPI_DOUBLE,rank,0,IssmComm::GetComm(),&status);
+			for(int i=0;i<numids;i++){
+				int   master_lid = this->vertices->common_recv_ids[rank][i];
+				Vertex* vertex=xDynamicCast<Vertex*>(this->vertices->GetObjectByOffset(master_lid));
+				_assert_(vertex->clone);
+            local_vector[vertex->lid] = recv_buffer[i];
+			}
+		}
+	}
+   xDelete<IssmDouble>(recv_buffer);
+   for(int rank=0;rank<num_procs;rank++){
+		if(this->vertices->common_send[rank]) ISSM_MPI_Wait(&send_requests[rank],&status);
+		xDelete<IssmDouble>(send_buffers[rank]);
+   }
+   xDelete<IssmDouble*>(send_buffers);
+   xDelete<ISSM_MPI_Request>(send_requests);
+}/*}}}*/
+void FemModel::SyncLocalVectorWithClonesVerticesAdd(IssmDouble* local_vector){/*{{{*/
+
+	/*recover my_rank:*/
+	ISSM_MPI_Status status;
+	int my_rank   = IssmComm::GetRank();
+	int num_procs = IssmComm::GetSize();
+
+	/*Now send and receive vector for vertices on partition edge*/
+	IssmDouble **send_buffers = xNewZeroInit<IssmDouble*>(num_procs);
+	IssmDouble  *recv_buffer  = xNewZeroInit<IssmDouble>(this->vertices->Size());
+	ISSM_MPI_Request  *send_requests = xNew<ISSM_MPI_Request>(num_procs);
+	for (int rank = 0;rank<num_procs;rank++) send_requests[rank] = ISSM_MPI_REQUEST_NULL;
+
+	/*1st: add slaves to master values (reverse of what we usually do)*/
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->vertices->common_recv[rank]){
+			int  numids = this->vertices->common_recv[rank];
+         send_buffers[rank] = xNew<IssmDouble>(numids,"t"); //only one alloc, "t" is required by adolc
+			for(int i=0;i<numids;i++){
+				int   master_lid = this->vertices->common_recv_ids[rank][i];
+				Vertex* vertex=xDynamicCast<Vertex*>(this->vertices->GetObjectByOffset(master_lid));
+				_assert_(vertex->clone);
+				send_buffers[rank][i] = local_vector[vertex->lid];
+			}
+			ISSM_MPI_Isend(send_buffers[rank],numids,ISSM_MPI_DOUBLE,rank,0,IssmComm::GetComm(),&send_requests[rank]);
+		}
+	}
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->vertices->common_send[rank]){
+			int  numids = this->vertices->common_send[rank];
+			ISSM_MPI_Recv(recv_buffer,numids,ISSM_MPI_DOUBLE,rank,0,IssmComm::GetComm(),&status);
+			for(int i=0;i<numids;i++){
+				int   master_lid = this->vertices->common_send_ids[rank][i];
+				Vertex* vertex=xDynamicCast<Vertex*>(this->vertices->GetObjectByOffset(master_lid));
+				_assert_(!vertex->clone);
+				local_vector[vertex->lid] += recv_buffer[i];
+			}
+		}
+	}
+
+	/*Wait until MPI is done*/
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->vertices->common_send[rank]) ISSM_MPI_Wait(&send_requests[rank],&status);
+	}
+
+	/*Now sync masters across partitions*/
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->vertices->common_send[rank]){
+			int  numids = this->vertices->common_send[rank];
+			xDelete<IssmDouble>(send_buffers[rank]);
+			send_buffers[rank] = xNew<IssmDouble>(numids,"t"); //only one alloc, "t" is required by adolc
+			for(int i=0;i<numids;i++){
+				int   master_lid = this->vertices->common_send_ids[rank][i];
+				Vertex* vertex=xDynamicCast<Vertex*>(this->vertices->GetObjectByOffset(master_lid));
+				_assert_(!vertex->clone);
+				send_buffers[rank][i] = local_vector[vertex->lid];
+			}
+			ISSM_MPI_Isend(send_buffers[rank],numids,ISSM_MPI_DOUBLE,rank,0,IssmComm::GetComm(),&send_requests[rank]);
+		}
+	}
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->vertices->common_recv[rank]){
+			int  numids = this->vertices->common_recv[rank];
+			ISSM_MPI_Recv(recv_buffer,numids,ISSM_MPI_DOUBLE,rank,0,IssmComm::GetComm(),&status);
+
+			for(int i=0;i<numids;i++){
+				int   master_lid = this->vertices->common_recv_ids[rank][i];
+				Vertex* vertex=xDynamicCast<Vertex*>(this->vertices->GetObjectByOffset(master_lid));
+				_assert_(vertex->clone);
+				local_vector[vertex->lid] = recv_buffer[i];
+			}
+		}
+	}
+	xDelete<IssmDouble>(recv_buffer);
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->vertices->common_send[rank]) ISSM_MPI_Wait(&send_requests[rank],&status);
+		xDelete<IssmDouble>(send_buffers[rank]);
+	}
+	xDelete<IssmDouble*>(send_buffers);
+	xDelete<ISSM_MPI_Request>(send_requests);
+}/*}}}*/
+void FemModel::GetLocalVectorWithClonesNodes(IssmDouble** plocal_vector,Vector<IssmDouble> *vector){/*{{{*/
+
+	/*recover my_rank:*/
+	ISSM_MPI_Status status;
+	int my_rank   = IssmComm::GetRank();
+	int num_procs = IssmComm::GetSize();
+
+	/*retrieve vertex info*/
+	int localsize         = this->nodes->NumberOfNodesLocalAll();
+	int localsize_masters = this->nodes->NumberOfNodesLocal();
+
+	/*Get local vector of vector*/
+	int        *indices_vector_masters = NULL;
+	IssmDouble *local_vector_masters   = NULL;
+	vector->GetLocalVector(&local_vector_masters,&indices_vector_masters);
+	_assert_(localsize_masters==indices_vector_masters[localsize_masters-1] - indices_vector_masters[0]+1);
+	xDelete<int>(indices_vector_masters);
+
+	/*Now, extend vectors to account for clones (make vectors longer, for clones at the end)*/
+	IssmDouble *local_vector  = xNew<IssmDouble>(localsize);
+	xMemCpy<IssmDouble>(local_vector,local_vector_masters,localsize_masters);
+	xDelete<IssmDouble>(local_vector_masters);
+
+	/*Now send and receive vector for nodes on partition edge*/
+	IssmDouble **send_buffers = xNewZeroInit<IssmDouble*>(num_procs);
+	IssmDouble  *recv_buffer  = xNewZeroInit<IssmDouble>(this->nodes->Size(),"t"); //only one alloc, "t" is required by adolc
+	ISSM_MPI_Request  *send_requests = xNew<ISSM_MPI_Request>(num_procs);
+	for (int rank = 0;rank<num_procs;rank++) send_requests[rank] = ISSM_MPI_REQUEST_NULL;
+
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->nodes->common_send[rank]){
+			int  numids = this->nodes->common_send[rank];
+			send_buffers[rank] = xNew<IssmDouble>(numids,"t"); //only one alloc, "t" is required by adolc
+			for(int i=0;i<numids;i++){
+				int   master_lid = this->nodes->common_send_ids[rank][i];
+				Node* vertex=xDynamicCast<Node*>(this->nodes->GetObjectByOffset(master_lid));
+				_assert_(!vertex->clone);
+				send_buffers[rank][i] = local_vector[vertex->lid];
+			}
+			ISSM_MPI_Isend(send_buffers[rank],numids,ISSM_MPI_DOUBLE,rank,0,IssmComm::GetComm(),&send_requests[rank]);
+		}
+	}
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->nodes->common_recv[rank]){
+			int  numids = this->nodes->common_recv[rank];
+			ISSM_MPI_Recv(recv_buffer,numids,ISSM_MPI_DOUBLE,rank,0,IssmComm::GetComm(),&status);
+			for(int i=0;i<numids;i++){
+				int   master_lid = this->nodes->common_recv_ids[rank][i];
+				Node* vertex=xDynamicCast<Node*>(this->nodes->GetObjectByOffset(master_lid));
+				_assert_(vertex->clone);
+				local_vector[vertex->lid] = recv_buffer[i];
+			}
+		}
+	}
+
+	xDelete<IssmDouble>(recv_buffer);
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->nodes->common_send[rank]) ISSM_MPI_Wait(&send_requests[rank],&status);
+		xDelete<IssmDouble>(send_buffers[rank]);
+	}
+	xDelete<IssmDouble*>(send_buffers);
+	xDelete<ISSM_MPI_Request>(send_requests);
+
+	/*Assign output pointer*/
+	*plocal_vector = local_vector;
+}/*}}}*/
+void FemModel::GroundedAreax(IssmDouble* pV, bool scaled){/*{{{*/
+
+	IssmDouble local_grounded_area= 0;
+	IssmDouble total_grounded_area;
+
+	for(Object* & object : this->elements->objects){
+      Element* element= xDynamicCast<Element*>(object);
+		local_grounded_area+=element->GroundedArea(scaled);
+	}
+	ISSM_MPI_Reduce(&local_grounded_area,&total_grounded_area,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_grounded_area,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pV=total_grounded_area;
+
+}/*}}}*/
+void FemModel::IcefrontAreax(){/*{{{*/
+
+	int numbasins,BasinId;
+	this->parameters->FindParam(&numbasins,FrontalForcingsNumberofBasinsEnum);
+	IssmDouble* basin_icefront_area = xNewZeroInit<IssmDouble>(numbasins);
+
+	for(int basin=0;basin<numbasins;basin++){
+		IssmDouble local_icefront_area = 0;
+		IssmDouble total_icefront_area;
+
+		/*Add contribution of each element to icefront area of the basin*/
+		for(Object* & object : this->elements->objects){
+			Element* element= xDynamicCast<Element*>(object);
+			element->GetInputValue(&BasinId,FrontalForcingsBasinIdEnum);
+			if(BasinId==basin) local_icefront_area+=element->GetIcefrontArea();
+		}
+		ISSM_MPI_Reduce(&local_icefront_area,&total_icefront_area,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm());
+		ISSM_MPI_Bcast(&total_icefront_area,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+		basin_icefront_area[basin]=total_icefront_area;
+	}
+
+	this->parameters->AddObject(new DoubleVecParam(FrontalForcingsBasinIcefrontAreaEnum,basin_icefront_area,numbasins));
+
+	xDelete<IssmDouble>(basin_icefront_area);
+}/*}}}*/
+void FemModel::IcefrontMassFluxx(IssmDouble* pM, bool scaled){/*{{{*/
+
+	IssmDouble local_mass_flux = 0;
+	IssmDouble total_mass_flux;
+
+	for(Object* & object : this->elements->objects){
+		Element* element= xDynamicCast<Element*>(object);
+		local_mass_flux+=element->IcefrontMassFlux(scaled);
+	}
+	ISSM_MPI_Reduce(&local_mass_flux,&total_mass_flux,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_mass_flux,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pM=total_mass_flux;
+
+}/*}}}*/
+void FemModel::IcefrontMassFluxLevelsetx(IssmDouble* pM, bool scaled){/*{{{*/
+
+	IssmDouble local_mass_flux = 0;
+	IssmDouble total_mass_flux;
+
+	for(Object* & object : this->elements->objects){
+		Element* element= xDynamicCast<Element*>(object);
+		local_mass_flux+=element->IcefrontMassFluxLevelset(scaled);
+	}
+	ISSM_MPI_Reduce(&local_mass_flux,&total_mass_flux,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_mass_flux,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pM=total_mass_flux;
+
+}/*}}}*/
+void FemModel::InputMakeDiscontinuous(int enum_in){/*{{{*/
+
+	int numvertices  = 6;
+	IssmDouble* P1DGlist = xNew<IssmDouble>(numvertices);
+
+	for(Object* & object : this->elements->objects){
+		Element* element= xDynamicCast<Element*>(object);
+		element->GetInputListOnVertices(P1DGlist,enum_in);
+		element->AddInput(DummyEnum,P1DGlist,P1DGEnum);
+	}
+	xDelete<IssmDouble>(P1DGlist);
+
+	this->inputs->ChangeEnum(DummyEnum,enum_in);
+	this->inputs->DeleteInput(DummyEnum);
+
+}/*}}}*/
+void FemModel::GroundinglineMassFluxx(IssmDouble* pM, bool scaled){/*{{{*/
+
+	/*First we need to depth average the velocities*/
+	int domaintype;
+	this->parameters->FindParam(&domaintype,DomainTypeEnum);
+	this->parameters->SetParam(VxEnum,InputToDepthaverageInEnum);
+	this->parameters->SetParam(VxAverageEnum,InputToDepthaverageOutEnum);
+	depthaverage_core(this);
+	if(domaintype!=Domain2DverticalEnum){
+		this->parameters->SetParam(VyEnum,InputToDepthaverageInEnum);
+		this->parameters->SetParam(VyAverageEnum,InputToDepthaverageOutEnum);
+		depthaverage_core(this);
+	}
+
+	IssmDouble local_mass_flux = 0;
+	IssmDouble total_mass_flux;
+
+	for(Object* & object : this->elements->objects){
+		Element* element= xDynamicCast<Element*>(object);
+		local_mass_flux+=element->GroundinglineMassFlux(scaled);
+	}
+	ISSM_MPI_Reduce(&local_mass_flux,&total_mass_flux,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_mass_flux,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pM=total_mass_flux;
+
+}/*}}}*/
+void FemModel::IceMassx(IssmDouble* pM, bool scaled){/*{{{*/
+
+	IssmDouble local_ice_mass = 0;
+	IssmDouble total_ice_mass;
+
+	for(Object* & object : this->elements->objects){
+		Element* element= xDynamicCast<Element*>(object);
+		local_ice_mass+=element->IceMass(scaled);
+	}
+	ISSM_MPI_Reduce(&local_ice_mass,&total_ice_mass,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_ice_mass,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pM=total_ice_mass;
+
+}/*}}}*/
+void FemModel::IceVolumeAboveFloatationx(IssmDouble* pV, bool scaled){/*{{{*/
+
+	IssmDouble local_ice_volume_af = 0;
+	IssmDouble total_ice_volume_af;
+
+	for(Object* & object : this->elements->objects){
+		Element* element= xDynamicCast<Element*>(object);
+		local_ice_volume_af+=element->IceVolumeAboveFloatation(scaled);
+	}
+	ISSM_MPI_Reduce(&local_ice_volume_af,&total_ice_volume_af,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_ice_volume_af,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pV=total_ice_volume_af;
+
+}/*}}}*/
+void FemModel::IceVolumex(IssmDouble* pV, bool scaled){/*{{{*/
+
+	IssmDouble local_ice_volume = 0;
+	IssmDouble total_ice_volume;
+
+	for(Object* & object : this->elements->objects){
+		Element* element= xDynamicCast<Element*>(object);
+		local_ice_volume+=element->IceVolume(scaled);
+	}
+	ISSM_MPI_Reduce(&local_ice_volume,&total_ice_volume,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_ice_volume,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pV=total_ice_volume;
+
+}/*}}}*/
+void FemModel::MassFluxx(IssmDouble* pmass_flux){/*{{{*/
+
+	int          i,j;
+	Element     *element       = NULL;
+	int          element_id;
+	bool         ispresent     = false;
+	IssmDouble   mass_flux     = 0;
+	IssmDouble   all_mass_flux = 0;
+	int          counter;
+	IssmDouble **array         = NULL;
+	int          M;
+	int         *mdims_array   = NULL;
+	int         *ndims_array   = NULL;
+	IssmDouble  *segments      = NULL;
+	int          num_segments;
+
+	/*First, figure out which segment to compute our mass flux on. Start with retrieving qmu_mass_flux_segments: */
+	this->parameters->FindParam(&ispresent,MassFluxSegmentsPresentEnum);
+	if(!ispresent)_error_("no mass flux segments available!");
+	this->parameters->FindParam(&array,&M,&mdims_array,&ndims_array,MassFluxSegmentsEnum);
+
+	/*Retrieve index of segments being used for MassFlux computation: */
+	parameters->FindParam(&counter,IndexEnum);
+
+	/*retrieve segments from array: */
+	segments     = array[counter-1]; //matlab to "C" indexing
+	num_segments = mdims_array[counter-1];
+
+	/*Go through segments, and then elements, and figure out which elements belong to a segment.
+	 * When we find one, use the element to compute the mass flux on the segment: */
+	for(i=0;i<num_segments;i++){
+		element_id=reCast<int,IssmDouble>(*(segments+5*i+4));
+		for(Object* & object : this->elements->objects){
+			element = xDynamicCast<Element*>(object);
+			if (element->Id()==element_id){
+				/*We found the element which owns this segment, use it to compute the mass flux: */
+				mass_flux+=element->MassFlux(segments+5*i+0);
+				break;
+			}
+		}
+	}
+
+	ISSM_MPI_Allreduce ( (void*)&mass_flux,(void*)&all_mass_flux,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+	mass_flux=all_mass_flux;
+
+	/*Free resources:*/
+	for(i=0;i<M;i++){
+		IssmDouble* matrix=array[i];
+		xDelete<IssmDouble>(matrix);
+	}
+	xDelete<int>(mdims_array);
+	xDelete<int>(ndims_array);
+	xDelete<IssmDouble*>(array);
+
+	/*Assign output pointers: */
+	*pmass_flux=mass_flux;
+
+}/*}}}*/
+void FemModel::MaxAbsVxx(IssmDouble* pmaxabsvx){/*{{{*/
+
+	int i;
+	IssmDouble maxabsvx;
+	IssmDouble node_maxabsvx;
+	IssmDouble element_maxabsvx;
+
+	/*Go through elements, and request velocity: */
+	maxabsvx=-INFINITY;
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		Input*  input = element->GetInput(VxEnum);
+		element_maxabsvx=input->GetInputMaxAbs();
+		if(element_maxabsvx>maxabsvx) maxabsvx=element_maxabsvx;
+	}
+
+	/*Figure out maximum across the cluster: */
+	ISSM_MPI_Reduce(&maxabsvx,&node_maxabsvx,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_maxabsvx,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	maxabsvx=node_maxabsvx;
+
+	/*Assign output pointers:*/
+	*pmaxabsvx=maxabsvx;
+
+}/*}}}*/
+void FemModel::MaxAbsVyx(IssmDouble* pmaxabsvy){/*{{{*/
+
+	int i;
+	IssmDouble maxabsvy;
+	IssmDouble node_maxabsvy;
+	IssmDouble element_maxabsvy;
+
+	/*Go through elements, and request velocity: */
+	maxabsvy=-INFINITY;
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		Input*  input = element->GetInput(VyEnum);
+		element_maxabsvy=input->GetInputMaxAbs();
+		if(element_maxabsvy>maxabsvy) maxabsvy=element_maxabsvy;
+	}
+
+	/*Figure out maximum across the cluster: */
+	ISSM_MPI_Reduce(&maxabsvy,&node_maxabsvy,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_maxabsvy,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	maxabsvy=node_maxabsvy;
+
+	/*Assign output pointers:*/
+	*pmaxabsvy=maxabsvy;
+
+}/*}}}*/
+void FemModel::MaxAbsVzx(IssmDouble* pmaxabsvz){/*{{{*/
+
+	int i;
+	IssmDouble maxabsvz;
+	IssmDouble node_maxabsvz;
+	IssmDouble element_maxabsvz;
+
+	/*Go through elements, and request velocity: */
+	maxabsvz=-INFINITY;
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		Input*  input = element->GetInput(VzEnum);
+		element_maxabsvz=input->GetInputMaxAbs();
+		if(element_maxabsvz>maxabsvz) maxabsvz=element_maxabsvz;
+	}
+
+	/*Figure out maximum across the cluster: */
+	ISSM_MPI_Reduce(&maxabsvz,&node_maxabsvz,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_maxabsvz,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	maxabsvz=node_maxabsvz;
+
+	/*Assign output pointers:*/
+	*pmaxabsvz=maxabsvz;
+
+}/*}}}*/
+void FemModel::MaxDivergencex(IssmDouble* pdiv){/*{{{*/
+
+	IssmDouble local_divergence;
+	IssmDouble node_max_divergence;
+	IssmDouble max_divergence = -INFINITY;
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		local_divergence=element->Divergence();
+		if(fabs(local_divergence)>max_divergence) max_divergence=fabs(local_divergence);
+	}
+	ISSM_MPI_Reduce(&max_divergence,&node_max_divergence,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_max_divergence,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	max_divergence=node_max_divergence;
+
+	/*Assign output pointers: */
+	*pdiv=max_divergence;
+
+}/*}}}*/
+void FemModel::MaxVelx(IssmDouble* pmaxvel){/*{{{*/
+
+	int i;
+	IssmDouble maxvel;
+	IssmDouble node_maxvel;
+	IssmDouble element_maxvel;
+
+	/*Go through elements, and request velocity: */
+	maxvel=-INFINITY;
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		Input* vel_input = element->GetInput(VelEnum); _assert_(vel_input);
+		element_maxvel = vel_input->GetInputMax();
+		if(element_maxvel>maxvel) maxvel=element_maxvel;
+	}
+
+	/*Figure out maximum across the cluster: */
+	ISSM_MPI_Reduce(&maxvel,&node_maxvel,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_maxvel,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	maxvel=node_maxvel;
+
+	/*Assign output pointers:*/
+	*pmaxvel=maxvel;
+
+}/*}}}*/
+void FemModel::MaxVxx(IssmDouble* pmaxvx){/*{{{*/
+
+	int i;
+	IssmDouble maxvx;
+	IssmDouble node_maxvx;
+	IssmDouble element_maxvx;
+
+	/*Go through elements, and request velocity: */
+	maxvx=-INFINITY;
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		Input* vx_input = element->GetInput(VxEnum); _assert_(vx_input);
+		element_maxvx = vx_input->GetInputMax();
+		if(element_maxvx>maxvx) maxvx=element_maxvx;
+	}
+
+	/*Figure out maximum across the cluster: */
+	ISSM_MPI_Reduce(&maxvx,&node_maxvx,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_maxvx,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	maxvx=node_maxvx;
+
+	/*Assign output pointers:*/
+	*pmaxvx=maxvx;
+
+}/*}}}*/
+void FemModel::MaxVyx(IssmDouble* pmaxvy){/*{{{*/
+
+	int i;
+	IssmDouble maxvy;
+	IssmDouble node_maxvy;
+	IssmDouble element_maxvy;
+
+	/*Go through elements, and request velocity: */
+	maxvy=-INFINITY;
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		Input* vy_input = element->GetInput(VyEnum); _assert_(vy_input);
+		element_maxvy = vy_input->GetInputMax();
+		if(element_maxvy>maxvy) maxvy=element_maxvy;
+	}
+
+	/*Figure out maximum across the cluster: */
+	ISSM_MPI_Reduce(&maxvy,&node_maxvy,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_maxvy,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	maxvy=node_maxvy;
+
+	/*Assign output pointers:*/
+	*pmaxvy=maxvy;
+
+}/*}}}*/
+void FemModel::MaxVzx(IssmDouble* pmaxvz){/*{{{*/
+
+	int i;
+	IssmDouble maxvz;
+	IssmDouble node_maxvz;
+	IssmDouble element_maxvz;
+
+	/*Go through elements, and request velocity: */
+	maxvz=-INFINITY;
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		Input* vz_input = element->GetInput(VzEnum); _assert_(vz_input);
+		element_maxvz = vz_input->GetInputMax();
+		if(element_maxvz>maxvz) maxvz=element_maxvz;
+	}
+
+	/*Figure out maximum across the cluster: */
+	ISSM_MPI_Reduce(&maxvz,&node_maxvz,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_maxvz,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	maxvz=node_maxvz;
+
+	/*Assign output pointers:*/
+	*pmaxvz=maxvz;
+
+}/*}}}*/
+void FemModel::MinVelx(IssmDouble* pminvel){/*{{{*/
+
+	int i;
+	IssmDouble minvel;
+	IssmDouble node_minvel;
+	IssmDouble element_minvel;
+
+	/*Go through elements, and request velocity: */
+	minvel=INFINITY;
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		Input*  input = element->GetInput(VelEnum);
+		element_minvel =input->GetInputMin();
+		if(element_minvel<minvel) minvel=element_minvel;
+	}
+
+	/*Figure out minimum across the cluster: */
+	ISSM_MPI_Reduce(&minvel,&node_minvel,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_minvel,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	minvel=node_minvel;
+
+	/*Assign output pointers:*/
+	*pminvel=minvel;
+
+}/*}}}*/
+void FemModel::MinVxx(IssmDouble* pminvx){/*{{{*/
+
+	int i;
+	IssmDouble minvx;
+	IssmDouble node_minvx;
+	IssmDouble element_minvx;
+
+	/*Go through elements, and request velocity: */
+	minvx=INFINITY;
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		Input*  input = element->GetInput(VxEnum);
+		element_minvx =input->GetInputMin();
+		if(element_minvx<minvx) minvx=element_minvx;
+	}
+
+	/*Figure out minimum across the cluster: */
+	ISSM_MPI_Reduce(&minvx,&node_minvx,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_minvx,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	minvx=node_minvx;
+
+	/*Assign output pointers:*/
+	*pminvx=minvx;
+
+}/*}}}*/
+void FemModel::MinVyx(IssmDouble* pminvy){/*{{{*/
+
+	int i;
+	IssmDouble minvy;
+	IssmDouble node_minvy;
+	IssmDouble element_minvy;
+
+	/*Go through elements, and request velocity: */
+	minvy=INFINITY;
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		Input*  input = element->GetInput(VyEnum);
+		element_minvy =input->GetInputMin();
+		if(element_minvy<minvy) minvy=element_minvy;
+	}
+
+	/*Figure out minimum across the cluster: */
+	ISSM_MPI_Reduce(&minvy,&node_minvy,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_minvy,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	minvy=node_minvy;
+
+	/*Assign output pointers:*/
+	*pminvy=minvy;
+
+}/*}}}*/
+void FemModel::MinVzx(IssmDouble* pminvz){/*{{{*/
+
+	int i;
+	IssmDouble minvz;
+	IssmDouble node_minvz;
+	IssmDouble element_minvz;
+
+	/*Go through elements, and request velocity: */
+	minvz=INFINITY;
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		Input*  input = element->GetInput(VzEnum);
+		element_minvz =input->GetInputMin();
+		if(element_minvz<minvz) minvz=element_minvz;
+	}
+
+	/*Figure out minimum across the cluster: */
+	ISSM_MPI_Reduce(&minvz,&node_minvz,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_minvz,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	minvz=node_minvz;
+
+	/*Assign output pointers:*/
+	*pminvz=minvz;
+
+}/*}}}*/
+void FemModel::MmeToInputFromId(int id, int rootenum, int interpolationenum){ /*{{{*/
+
+	MmeToInputFromIdx(this->inputs,this->elements,id,rootenum,interpolationenum);
+
+}	//}}}
+void FemModel::OmegaAbsGradientx( IssmDouble* pJ){/*{{{*/
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	IssmDouble  omega,weight;
+	IssmDouble  Jdet;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble  dp[3];
+
+	/*Compute Misfit: */
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+
+		/*If on water, return 0: */
+		if(!element->IsIceInElement()) continue;
+
+		/* Get node coordinates*/
+		element->GetVerticesCoordinates(&xyz_list);
+
+		/*Retrieve all inputs we will be needing: */
+		DatasetInput* weights_input = element->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+		Input* omega_input   = element->GetInput(BalancethicknessOmegaEnum);              _assert_(omega_input);
+
+		/* Start  looping on the number of gaussian points: */
+		Gauss* gauss=element->NewGauss(2);
+		while(gauss->next()){
+
+			/* Get Jacobian determinant: */
+			element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+			/*Get all parameters at gaussian point*/
+			weights_input->GetInputValue(&weight,gauss,OmegaAbsGradientEnum);
+			omega_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+
+			/*Tikhonov regularization: J = 1/2 ((dp/dx)^2 + (dp/dy)^2) */
+			//J+=weight*1/2*(dp[0]*dp[0]+dp[1]*dp[1])*Jdet*gauss->weight;
+			J+=weight*1/2*pow(dp[0]*dp[0]+dp[1]*dp[1],2)*Jdet*gauss->weight;
+		}
+
+		/*clean up and Return: */
+		xDelete<IssmDouble>(xyz_list);
+		delete gauss;
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+/*}}}*/
+void FemModel::EtaDiffx( IssmDouble* pJ){/*{{{*/
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	IssmDouble  omega,weight;
+	IssmDouble  Jdet;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble  p,p0;
+
+	/*Compute Misfit: */
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+
+		/*If on water, return 0: */
+		if(!element->IsIceInElement()) continue;
+
+		/* Get node coordinates*/
+		element->GetVerticesCoordinates(&xyz_list);
+
+		/*Retrieve all inputs we will be needing: */
+		DatasetInput* weights_input =element->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+		Input* omega_input   =element->GetInput(BalancethicknessOmegaEnum);              _assert_(omega_input);
+		Input* omega0_input  =element->GetInput(BalancethicknessOmega0Enum);             _assert_(omega0_input);
+
+		/* Start  looping on the number of gaussian points: */
+		Gauss* gauss=element->NewGauss(2);
+		while(gauss->next()){
+
+			/* Get Jacobian determinant: */
+			element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+			/*Get all parameters at gaussian point*/
+			weights_input->GetInputValue(&weight,gauss,EtaDiffEnum);
+			omega_input->GetInputValue(&p,gauss);
+			omega0_input->GetInputValue(&p0,gauss);
+
+			/*Tikhonov regularization: J = 1/2 ((dp/dx)^2 + (dp/dy)^2) */
+			//J+=weight*1/2*(dp[0]*dp[0]+dp[1]*dp[1])*Jdet*gauss->weight;
+			J+=weight*1/2*pow(p - p0,2)*Jdet*gauss->weight;
+		}
+
+		/*clean up and Return: */
+		xDelete<IssmDouble>(xyz_list);
+		delete gauss;
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+/*}}}*/
+void FemModel::OutputControlsx(Results **presults){/*{{{*/
+
+	/*parameters: */
+	int         num_controls,step;
+	IssmDouble  time;
+	int        *control_type   = NULL;
+	int        *control_interp = NULL;
+	int        *M = NULL;
+	int        *N = NULL;
+
+	/*recover results*/
+	Results* results = *presults;
+	if(!results) results = new Results();
+
+	/*Get list of Controls*/
+	this->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	this->parameters->FindParam(&control_type,NULL,InversionControlParametersEnum);
+	this->parameters->FindParam(&M,NULL,ControlInputSizeMEnum);
+	this->parameters->FindParam(&N,NULL,ControlInputSizeNEnum);
+	this->parameters->FindParam(&control_interp,NULL,ControlInputInterpolationEnum);
+	this->parameters->FindParam(&step,StepEnum);
+	this->parameters->FindParam(&time,TimeEnum);
+
+	for(int i=0;i<num_controls;i++){
+
+		int control_enum = control_type[i];
+		int gradient_enum;
+
+		switch(i){
+			case 0: gradient_enum = Gradient1Enum; break;
+			case 1: gradient_enum = Gradient2Enum; break;
+			case 2: gradient_enum = Gradient3Enum; break;
+			case 3: gradient_enum = Gradient4Enum; break;
+			default: _error_("more than 4 controls not implemented yet");
+		}
+
+		/*Allocate vector*/
+		Vector<IssmPDouble> *vector_control  = new Vector<IssmPDouble>(M[i]*N[i]);
+		Vector<IssmPDouble> *vector_gradient = new Vector<IssmPDouble>(M[i]*N[i]);
+
+		/*Fill in vector*/
+		for(Object* & object : this->elements->objects){
+			Element* element = xDynamicCast<Element*>(object);
+			element->ControlToVectors(vector_control,vector_gradient,control_enum,control_interp[i]);
+		}
+		vector_control->Assemble();
+		vector_gradient->Assemble();
+
+		results->AddResult(new GenericExternalResult<Vector<IssmPDouble>*>(results->Size()+1,control_enum,vector_control ,step,time));
+		results->AddResult(new GenericExternalResult<Vector<IssmPDouble>*>(results->Size()+1,gradient_enum,vector_gradient,step,time));
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(control_type);
+	xDelete<int>(control_interp);
+	xDelete<int>(M);
+	xDelete<int>(N);
+}
+/*}}}*/
+void FemModel::RequestedDependentsx(void){/*{{{*/
+
+	/*AD mode on?: */
+	bool isautodiff;
+	parameters->FindParam(&isautodiff,AutodiffIsautodiffEnum);
+
+	if(isautodiff){
+		#ifdef _HAVE_AD_
+		int      num_dependents;
+		DataSet* dependent_objects=NULL;
+		parameters->FindParam(&num_dependents,AutodiffNumDependentsEnum);
+		parameters->FindParam(&dependent_objects,AutodiffDependentObjectsEnum);
+		if(num_dependents){
+			IssmPDouble* dependents=xNew<IssmPDouble>(num_dependents);
+
+			#if defined(_HAVE_CODIPACK_)
+			#if _CODIPACK_MAJOR_==2
+			auto& tape_codi = IssmDouble::getTape();
+			#elif _CODIPACK_MAJOR_==1
+			auto& tape_codi = IssmDouble::getGlobalTape();
+			#else
+			#error "_CODIPACK_MAJOR_ not supported"
+			#endif
+			#endif
+
+			/*Go through our dependent variables, and compute the response:*/
+			int my_rank=IssmComm::GetRank();
+			int i = 0;
+			for(Object* & object : dependent_objects->objects){
+				DependentObject* dep=(DependentObject*)object;
+				dep->RecordResponsex(this);
+				IssmDouble output_value = dep->GetValue();
+				if (my_rank==0) {
+					#if defined(_HAVE_CODIPACK_)
+						tape_codi.registerOutput(output_value);
+						dependents[i] = output_value.getValue();
+						#if _CODIPACK_MAJOR_==2
+						codi_global.output_indices.push_back(output_value.getIdentifier());
+						#elif _CODIPACK_MAJOR_==1
+						codi_global.output_indices.push_back(output_value.getGradientData());
+						#else
+						#error "_CODIPACK_MAJOR_ not supported"
+						#endif
+					#else
+						output_value>>=dependents[i];
+					#endif
+				}
+				i++;
+			}
+			xDelete<IssmPDouble>(dependents);
+		}
+		delete dependent_objects;
+		#else
+		_error_("Should not be requesting dependents when an AD library is not available!");
+		#endif
+	}
+}
+/*}}}*/
+void FemModel::RequestedOutputsx(Results **presults,char** requested_outputs, int numoutputs, bool save_results){/*{{{*/
+
+	/*Intermediaries*/
+	bool        isvec,results_on_nodes;
+	int         step,output_enum,numonnodes;
+	IssmDouble  time;
+	IssmDouble  double_result;
+	const char *output_string = NULL;
+	char**      resultsonnodes = NULL;
+
+	/*recover results*/
+	Results* results = *presults;
+	if(!results) results = new Results();
+
+	/*Get time and step*/
+	parameters->FindParam(&step,StepEnum);
+	parameters->FindParam(&time,TimeEnum);
+	parameters->FindParam(&numonnodes,SettingsNumResultsOnNodesEnum);
+	if(numonnodes) parameters->FindParam(&resultsonnodes,&numonnodes,SettingsResultsOnNodesEnum);
+
+	/*Go through all requested output*/
+	for(int i=0;i<numoutputs;i++){
+		output_string = requested_outputs[i];
+		output_enum   = StringToEnumx(output_string,false);
+		isvec         = false;
+
+		/*If string is not an enum, it is defined in output definitions*/
+		if(output_enum<0){
+			double_result = OutputDefinitionsResponsex(this,output_string);
+			if(save_results){
+				results->AddResult(new GenericExternalResult<IssmPDouble>(results->Size()+1,output_string,reCast<IssmPDouble>(double_result),step,time));
+				continue;
+			}
+		}
+		else{
+			/*last chance for the output definition, if the enum is one of Outputdefinition[1-10]Enum:*/
+			if(output_enum>=Outputdefinition1Enum && output_enum <=Outputdefinition100Enum){
+				double_result = OutputDefinitionsResponsex(this,output_enum);
+				if(save_results){
+					results->AddResult(new GenericExternalResult<IssmPDouble>(results->Size()+1,output_string,reCast<IssmPDouble>(double_result),step,time));
+					continue;
+				}
+			}
+			else{
+				switch(output_enum){
+
+					/*Scalar output*/
+					case DivergenceEnum:                     this->Divergencex(&double_result);                     break;
+					case MaxDivergenceEnum:                  this->MaxDivergencex(&double_result);                  break;
+					case IceMassEnum:                        this->IceMassx(&double_result,false);                  break;
+					case IcefrontMassFluxEnum:               this->IcefrontMassFluxx(&double_result,false);         break;
+					case IcefrontMassFluxLevelsetEnum:       this->IcefrontMassFluxLevelsetx(&double_result,false);         break;
+					case IceMassScaledEnum:                  this->IceMassx(&double_result,true);                   break;
+					case IceVolumeEnum:                      this->IceVolumex(&double_result,false);                break;
+					case IceVolumeScaledEnum:                this->IceVolumex(&double_result,true);                 break;
+					case IceVolumeAboveFloatationEnum:       this->IceVolumeAboveFloatationx(&double_result,false); break;
+					case IceVolumeAboveFloatationScaledEnum: this->IceVolumeAboveFloatationx(&double_result,true);  break;
+					case GroundedAreaEnum:                   this->GroundedAreax(&double_result,false);             break;
+					case GroundedAreaScaledEnum:             this->GroundedAreax(&double_result,true);              break;
+					case GroundinglineMassFluxEnum:          this->GroundinglineMassFluxx(&double_result,false);    break;
+					case FloatingAreaEnum:                   this->FloatingAreax(&double_result,false);             break;
+					case FloatingAreaScaledEnum:             this->FloatingAreax(&double_result,true);              break;
+					case MinVelEnum:                         this->MinVelx(&double_result);                         break;
+					case MaxVelEnum:                         this->MaxVelx(&double_result);                         break;
+					case MinVxEnum:                          this->MinVxx(&double_result);                          break;
+					case MaxVxEnum:                          this->MaxVxx(&double_result);                          break;
+					case MaxAbsVxEnum:                       this->MaxAbsVxx(&double_result);                       break;
+					case MinVyEnum:                          this->MinVyx(&double_result);                          break;
+					case MaxVyEnum:                          this->MaxVyx(&double_result);                          break;
+					case MaxAbsVyEnum:                       this->MaxAbsVyx(&double_result);                       break;
+					case MinVzEnum:                          this->MinVzx(&double_result);                          break;
+					case MaxVzEnum:                          this->MaxVzx(&double_result);                          break;
+					case MaxAbsVzEnum:                       this->MaxAbsVzx(&double_result);                       break;
+					case MassFluxEnum:                       this->MassFluxx(&double_result);                       break;
+					case TotalCalvingFluxLevelsetEnum:		  this->TotalCalvingFluxLevelsetx(&double_result,false);          break;
+					case TotalCalvingMeltingFluxLevelsetEnum:this->TotalCalvingMeltingFluxLevelsetx(&double_result,false);          break;
+					case TotalFloatingBmbEnum:               this->TotalFloatingBmbx(&double_result,false);         break;
+					case TotalFloatingBmbScaledEnum:         this->TotalFloatingBmbx(&double_result,true);          break;
+					case TotalGroundedBmbEnum:               this->TotalGroundedBmbx(&double_result,false);         break;
+					case TotalGroundedBmbScaledEnum:         this->TotalGroundedBmbx(&double_result,true);          break;
+					case TotalSmbEnum:                       this->TotalSmbx(&double_result,false);                 break;
+					case TotalSmbMeltEnum:                   this->TotalSmbMeltx(&double_result,false);             break;
+					case TotalSmbRefreezeEnum:               this->TotalSmbRefreezex(&double_result,false);         break;
+					case TotalSmbScaledEnum:                 this->TotalSmbx(&double_result,true);                  break;
+
+					/*Scalar control output*/
+					case SurfaceAbsVelMisfitEnum:       SurfaceAbsVelMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);        break;
+					case SurfaceRelVelMisfitEnum:       SurfaceRelVelMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);        break;
+					case SurfaceLogVelMisfitEnum:       SurfaceLogVelMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);        break;
+					case SurfaceLogVxVyMisfitEnum:      SurfaceLogVxVyMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);       break;
+					case SurfaceAverageVelMisfitEnum:   SurfaceAverageVelMisfitx(&double_result,this);                                                  break;
+					case ThicknessAbsMisfitEnum:        ThicknessAbsMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);         break;
+					case ThicknessAbsGradientEnum:      this->ThicknessAbsGradientx(&double_result);                                                    break;
+					case ThicknessAlongGradientEnum:    ThicknessAlongGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);     break;
+					case ThicknessAcrossGradientEnum:   ThicknessAcrossGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);    break;
+					case ThicknessPositiveEnum:         this->ThicknessPositivex(&double_result);                                                       break;
+					case RheologyBbarAbsGradientEnum:   RheologyBbarAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);    break;
+					case RheologyBAbsGradientEnum:      RheologyBAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);       break;
+					case RheologyBInitialguessMisfitEnum:  RheologyBInitialguessMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);       break;
+					case DragCoefficientAbsGradientEnum:DragCoefficientAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters); break;
+					case BalancethicknessMisfitEnum:    BalancethicknessMisfitx(&double_result);                                                        break;
+					case SurfaceAbsMisfitEnum:          SurfaceAbsMisfitx(&double_result); break;
+					case OmegaAbsGradientEnum:          OmegaAbsGradientx(&double_result); break;
+					case EtaDiffEnum:                   EtaDiffx(&double_result); break;
+
+					/*Vector special case (maybe should go to specific analysis?)*/
+					case ChannelAreaEnum:
+					case ChannelDischargeEnum:{
+
+							/*Get Number of Channels*/
+							int numchannels_local=0,numchannels;
+							for(int j=0;j<this->loads->Size();j++){
+								if(this->loads->GetEnum(j)==ChannelEnum) numchannels_local++;
+							}
+							ISSM_MPI_Reduce(&numchannels_local,&numchannels,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+							ISSM_MPI_Bcast(&numchannels,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+							IssmPDouble* values    = xNewZeroInit<IssmPDouble>(numchannels);
+							IssmPDouble* allvalues = xNew<IssmPDouble>(numchannels);
+
+							/*Fill-in vector*/
+							for(Object* & object : this->loads->objects){
+								if(object->ObjectEnum()==ChannelEnum){
+									Channel* channel=(Channel*)object;
+									if(output_enum==ChannelAreaEnum){
+										channel->WriteChannelCrossSection(values);
+									}
+									else if(output_enum==ChannelDischargeEnum){
+										channel->WriteChannelDischarge(values);
+									}
+									else{
+										_error_("not supported");
+									}
+								}
+							}
+
+							/*Gather from all cpus*/
+							ISSM_MPI_Allreduce((void*)values,(void*)allvalues,numchannels,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+							xDelete<IssmPDouble>(values);
+
+							if(save_results)results->AddResult(new GenericExternalResult<IssmPDouble*>(results->Size()+1,output_enum,allvalues,numchannels,1,step,time));
+							xDelete<IssmPDouble>(allvalues);
+
+							isvec = true;
+					}
+					break;
+
+				   /*Default is always Vector */
+					default:
+
+					/*Some preliminary calculation may be required (use similar syntax for other inputs)*/
+						if(output_enum==NewDamageEnum){
+							InputDuplicatex(this,DamageDEnum,DamageDOldEnum);
+							InputDuplicatex(this,DamageDbarEnum,DamageDbarOldEnum);
+							this->ElementOperationx(&Element::ComputeNewDamage);
+						}
+
+						/*Vector layout*/
+						if(!IsInputEnum(output_enum)) _error_("Cannot output \""<<EnumToStringx(output_enum)<<"\" because it is not an input");
+						int interpolation,nodesperelement,size,nlines,ncols,array_size;
+						int rank_interpolation=-1,rank_nodesperelement=-1,rank_arraysize=-1,max_rank_arraysize=0;
+						bool isarray=false;
+
+						/*Get interpolation (and compute input if necessary)*/
+						for(Object* & object : this->elements->objects){
+							Element* element = xDynamicCast<Element*>(object);
+							element->ResultInterpolation(&rank_interpolation,&rank_nodesperelement,&rank_arraysize,output_enum);
+							if(rank_arraysize>max_rank_arraysize)max_rank_arraysize=rank_arraysize;
+						}
+						rank_arraysize=max_rank_arraysize;
+
+						/*Broadcast for cpus that do not have any elements*/
+						ISSM_MPI_Reduce(&rank_interpolation,&interpolation,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
+						ISSM_MPI_Reduce(&rank_nodesperelement,&nodesperelement,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
+						ISSM_MPI_Reduce(&rank_arraysize,&array_size,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
+						ISSM_MPI_Bcast(&interpolation,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+						ISSM_MPI_Bcast(&nodesperelement,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+						ISSM_MPI_Bcast(&array_size,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+						results_on_nodes=false;
+						/*Loop to see if this output was requested on nodes*/
+						for(int j=0;j<numonnodes & results_on_nodes==false;j++){
+							if(strcmp(resultsonnodes[j],output_string) == 0 || strcmp(resultsonnodes[j],"all") == 0) results_on_nodes=true;
+						}
+
+						if(results_on_nodes){
+
+							/*Allocate matrices*/
+							int         nbe       = this->elements->NumberOfElements();
+							IssmDouble* values    = xNewZeroInit<IssmDouble>(nbe*nodesperelement);
+							IssmDouble* allvalues = xNew<IssmDouble>(nbe*nodesperelement);
+
+							/*Fill-in matrix*/
+							for(Object* & object : this->elements->objects){
+								Element* element = xDynamicCast<Element*>(object);
+								element->ResultToPatch(values,nodesperelement,output_enum);
+							}
+
+							/*Gather from all cpus*/
+							ISSM_MPI_Allreduce((void*)values,(void*)allvalues,nbe*nodesperelement,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+							xDelete<IssmDouble>(values);
+
+							if(save_results)results->AddResult(new GenericExternalResult<IssmDouble*>(results->Size()+1,output_enum,allvalues,nbe,nodesperelement,step,time));
+							xDelete<IssmDouble>(allvalues);
+
+						}
+						else{
+
+							/*Allocate vector depending on interpolation*/
+							switch(interpolation){
+								case P0Enum: isarray = false; size = this->elements->NumberOfElements(); break;
+								case P1Enum: isarray = false; size = this->vertices->NumberOfVertices(); break;
+								case P0ArrayEnum: isarray = true; nlines = this->elements->NumberOfElements(); ncols= array_size; break;
+								default:     _error_("Interpolation "<<EnumToStringx(interpolation)<<" not supported yet");
+
+							}
+							if(!isarray){
+								Vector<IssmDouble> *vector_result = new Vector<IssmDouble>(size);
+
+								/*Fill in vector*/
+								for(Object* & object : this->elements->objects){
+									Element* element = xDynamicCast<Element*>(object);
+									element->ResultToVector(vector_result,output_enum);
+								}
+								vector_result->Assemble();
+
+								if(save_results){
+									results->AddResult(new GenericExternalResult<Vector<IssmDouble>*>(results->Size()+1,output_enum,vector_result,step,time));
+									/*We do not do a copy for Vectors, so don't delete*/
+								}
+								else{
+									delete vector_result;
+								}
+							}
+							else{
+								IssmDouble* values    = xNewZeroInit<IssmDouble>(nlines*ncols);
+								IssmDouble* allvalues = xNew<IssmDouble>(nlines*ncols);
+
+								/*Fill-in matrix*/
+								for(Object* & object : this->elements->objects){
+									Element* element = xDynamicCast<Element*>(object);
+									element->ResultToMatrix(values,ncols,output_enum);
+								}
+								/*Gather from all cpus*/
+								ISSM_MPI_Allreduce((void*)values,(void*)allvalues,ncols*nlines,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+								xDelete<IssmDouble>(values);
+
+								if(save_results)results->AddResult(new GenericExternalResult<IssmDouble*>(results->Size()+1,output_enum,allvalues,nlines,ncols,step,time));
+								xDelete<IssmDouble>(allvalues);
+							}
+						}
+						isvec = true;
+						break;
+				}
+			}
+
+		}
+
+		/*Add result to Results*/
+		if(!isvec && save_results){
+			results->AddResult(new GenericExternalResult<IssmPDouble>(results->Size()+1,output_string,reCast<IssmPDouble>(double_result),step,time));
+		}
+	}
+
+	/*Clean up*/
+	for(int i=0;i<numonnodes;i++) xDelete<char>(resultsonnodes[i]);
+	xDelete<char*>(resultsonnodes);
+
+	/*Assign pointer and clean up*/
+	*presults = results;
+}
+/*}}}*/
+void FemModel::RequestedOutputsx(Results **presults,int* requested_outputs, int numoutputs,bool save_results){/*{{{*/
+
+	/*Convert list of enums to list of string*/
+	char** enumlist = xNew<char*>(numoutputs);
+	for(int i=0;i<numoutputs;i++) EnumToStringx(&enumlist[i],requested_outputs[i]);
+
+	/*Call main module*/
+	this->RequestedOutputsx(presults,enumlist,numoutputs,save_results);
+
+	/*clean up and return*/
+	for(int i=0;i<numoutputs;i++) xDelete<char>(enumlist[i]);
+	xDelete<char*>(enumlist);
+}
+/*}}}*/
+void FemModel::ResetLevelset(void){/*{{{*/
+
+	this->DistanceToFieldValue(MaskIceLevelsetEnum,0.,MaskIceLevelsetEnum);
+
+}
+/*}}}*/
+void FemModel::Responsex(IssmDouble* responses,const char* response_descriptor){/*{{{*/
+
+	int response_descriptor_enum=StringToEnumx(response_descriptor);
+	this->Responsex(responses, response_descriptor_enum);
+
+}
+/*}}}*/
+void FemModel::Responsex(IssmDouble* responses,int response_descriptor_enum){/*{{{*/
+
+	switch (response_descriptor_enum){
+
+		case DivergenceEnum:                     this->Divergencex(responses); break;
+		case MaxDivergenceEnum:                  this->MaxDivergencex(responses); break;
+		case IceMassEnum:                        this->IceMassx(responses, false); break;
+		case IceMassScaledEnum:                  this->IceMassx(responses, true); break;
+		case IceVolumeEnum:                      this->IceVolumex(responses, false); break;
+		case IceVolumeScaledEnum:                this->IceVolumex(responses, true); break;
+		case IceVolumeAboveFloatationEnum:       this->IceVolumeAboveFloatationx(responses, false); break;
+		case IceVolumeAboveFloatationScaledEnum: this->IceVolumeAboveFloatationx(responses, true); break;
+		case IcefrontMassFluxEnum:               this->IcefrontMassFluxx(responses, false); break;
+		case IcefrontMassFluxLevelsetEnum:       this->IcefrontMassFluxLevelsetx(responses, false); break;
+		case GroundedAreaEnum:                   this->GroundedAreax(responses, false); break;
+		case GroundedAreaScaledEnum:             this->GroundedAreax(responses, true); break;
+		case FloatingAreaEnum:                   this->FloatingAreax(responses, false); break;
+		case FloatingAreaScaledEnum:             this->FloatingAreax(responses, true); break;
+		case MinVelEnum:                         this->MinVelx(responses); break;
+		case MaxVelEnum:                         this->MaxVelx(responses); break;
+		case MinVxEnum:                          this->MinVxx(responses); break;
+		case MaxVxEnum:                          this->MaxVxx(responses); break;
+		case MaxAbsVxEnum:                       this->MaxAbsVxx(responses); break;
+		case MinVyEnum:                          this->MinVyx(responses); break;
+		case MaxVyEnum:                          this->MaxVyx(responses); break;
+		case MaxAbsVyEnum:                       this->MaxAbsVyx(responses); break;
+		case MinVzEnum:                          this->MinVzx(responses); break;
+		case MaxVzEnum:                          this->MaxVzx(responses); break;
+		case MaxAbsVzEnum:                       this->MaxAbsVzx(responses); break;
+		case MassFluxEnum:                       this->MassFluxx(responses); break;
+		case SurfaceAbsVelMisfitEnum:            SurfaceAbsVelMisfitx(responses, elements,nodes, vertices, loads, materials,parameters); break;
+		case SurfaceRelVelMisfitEnum:            SurfaceRelVelMisfitx(responses, elements,nodes, vertices, loads, materials,parameters); break;
+		case SurfaceLogVelMisfitEnum:            SurfaceLogVelMisfitx(responses, elements,nodes, vertices, loads, materials,parameters); break;
+		case SurfaceLogVxVyMisfitEnum:           SurfaceLogVxVyMisfitx(responses, elements,nodes, vertices, loads, materials,parameters); break;
+		case SurfaceAverageVelMisfitEnum:        SurfaceAverageVelMisfitx(responses,this); break;
+		case ThicknessAbsMisfitEnum:             ThicknessAbsMisfitx(responses, elements,nodes, vertices, loads, materials, parameters); break;
+		case ThicknessAbsGradientEnum:           this->ThicknessAbsGradientx(responses); break;
+		case ThicknessAlongGradientEnum:         ThicknessAlongGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break;
+		case ThicknessAcrossGradientEnum:        ThicknessAcrossGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break;
+		case RheologyBbarAbsGradientEnum:        RheologyBbarAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break;
+		case DragCoefficientAbsGradientEnum:     DragCoefficientAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break;
+		case BalancethicknessMisfitEnum:         BalancethicknessMisfitx(responses); break;
+		case TotalCalvingFluxLevelsetEnum:		  this->TotalCalvingFluxLevelsetx(responses, false); break;
+		case TotalCalvingMeltingFluxLevelsetEnum:this->TotalCalvingMeltingFluxLevelsetx(responses, false); break;
+		case TotalFloatingBmbEnum:			        this->TotalFloatingBmbx(responses, false); break;
+		case TotalFloatingBmbScaledEnum:			  this->TotalFloatingBmbx(responses, true); break;
+		case TotalGroundedBmbEnum:			        this->TotalGroundedBmbx(responses, false); break;
+		case TotalGroundedBmbScaledEnum:			  this->TotalGroundedBmbx(responses, true); break;
+		case TotalSmbEnum:					        this->TotalSmbx(responses, false); break;
+		case TotalSmbMeltEnum:					     this->TotalSmbMeltx(responses, false); break;
+		case TotalSmbRefreezeEnum:					  this->TotalSmbRefreezex(responses, false); break;
+		case TotalSmbScaledEnum:					  this->TotalSmbx(responses, true); break;
+		case MaterialsRheologyBbarEnum:          this->ElementResponsex(responses,MaterialsRheologyBbarEnum); break;
+		case VelEnum:                            this->ElementResponsex(responses,VelEnum); break;
+		case FrictionCoefficientEnum:            NodalValuex(responses, FrictionCoefficientEnum,elements,nodes, vertices, loads, materials, parameters); break;
+		default:
+			if(response_descriptor_enum>=Outputdefinition1Enum && response_descriptor_enum <=Outputdefinition100Enum){
+				IssmDouble double_result = OutputDefinitionsResponsex(this,response_descriptor_enum);
+				*responses=double_result;
+			}
+			else _error_("response descriptor \"" << EnumToStringx(response_descriptor_enum) << "\" not supported yet!");
+			break;
+	}
+
+}
+/*}}}*/
+void FemModel::RignotMeltParameterizationx(){/*{{{*/
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		element->RignotMeltParameterization();
+	}
+}
+/*}}}*/
+void FemModel::StrainRateparallelx(){/*{{{*/
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		element->StrainRateparallel();
+	}
+}
+/*}}}*/
+void FemModel::StrainRateperpendicularx(){/*{{{*/
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		element->StrainRateperpendicular();
+	}
+}
+/*}}}*/
+void FemModel::StrainRateeffectivex(){/*{{{*/
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		element->ComputeStrainRate();
+	}
+}
+/*}}}*/
+void FemModel::StressIntensityFactorx(){/*{{{*/
+
+	/*Update input for basal element only*/
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		element->StressIntensityFactor();
+	}
+}
+	/*}}}*/
+void FemModel::SurfaceAbsMisfitx(IssmDouble* presponse){/*{{{*/
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	IssmDouble  surface,surfaceobs,weight;
+	IssmDouble  Jdet;
+	IssmDouble* xyz_list = NULL;
+
+	/*Compute Misfit: */
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+
+		/*If on water, return 0: */
+		if(!element->IsIceInElement()) continue;
+
+		/* Get node coordinates*/
+		element->GetVerticesCoordinates(&xyz_list);
+
+		 /*Retrieve all inputs we will be needing: */
+		 DatasetInput* weights_input   =element->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+		 Input* surface_input   =element->GetInput(SurfaceEnum);                            _assert_(surface_input);
+		 Input* surfaceobs_input=element->GetInput(InversionSurfaceObsEnum);                _assert_(surfaceobs_input);
+
+		 /* Start  looping on the number of gaussian points: */
+		 Gauss* gauss=element->NewGauss(2);
+		 while(gauss->next()){
+
+			 /* Get Jacobian determinant: */
+			 element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+			 /*Get all parameters at gaussian point*/
+			 weights_input->GetInputValue(&weight,gauss,SurfaceAbsMisfitEnum);
+			 surface_input->GetInputValue(&surface,gauss);
+			 surfaceobs_input->GetInputValue(&surfaceobs,gauss);
+
+			 /*Compute SurfaceAbsMisfitEnum*/
+			 J+=0.5*(surface-surfaceobs)*(surface-surfaceobs)*weight*Jdet*gauss->weight;
+		 }
+		 delete gauss;
+		 xDelete<IssmDouble>(xyz_list);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*presponse=J;
+
+}/*}}}*/
+void FemModel::ThicknessAbsGradientx( IssmDouble* pJ){/*{{{*/
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	IssmDouble  thickness,weight;
+	IssmDouble  Jdet;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble  dp[3];
+
+	/*Compute Misfit: */
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+
+		/*If on water, return 0: */
+		if(!element->IsIceInElement()) continue;
+
+		/* Get node coordinates*/
+		element->GetVerticesCoordinates(&xyz_list);
+
+		/*Retrieve all inputs we will be needing: */
+		DatasetInput* weights_input   =element->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+		Input* thickness_input =element->GetInput(ThicknessEnum);                          _assert_(thickness_input);
+
+		/* Start  looping on the number of gaussian points: */
+		Gauss* gauss=element->NewGauss(2);
+		while(gauss->next()){
+
+			/* Get Jacobian determinant: */
+			element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+			/*Get all parameters at gaussian point*/
+			weights_input->GetInputValue(&weight,gauss,ThicknessAbsGradientEnum);
+			thickness_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+
+			/*Tikhonov regularization: J = 1/2 ((dp/dx)^2 + (dp/dy)^2) */
+			J+=weight*1/2*(dp[0]*dp[0]+dp[1]*dp[1])*Jdet*gauss->weight;
+		}
+
+		/*clean up and Return: */
+		xDelete<IssmDouble>(xyz_list);
+		delete gauss;
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+/*}}}*/
+void FemModel::ThicknessAverage(){/*{{{*/
+
+	int elementswidth                   = this->GetElementsWidth();//just 2D mesh, tria elements
+   int numberofvertices                = this->vertices->NumberOfVertices();//total number of vertices
+
+   IssmDouble weight                   = 0.;
+   IssmDouble* totalweight             = NULL;
+	IssmDouble* Hserial						= NULL;
+   IssmDouble* H                       = xNew<IssmDouble>(elementswidth);
+   Vector<IssmDouble>* vecH				= new Vector<IssmDouble>(numberofvertices);
+   Vector<IssmDouble>* vectotalweight  = new Vector<IssmDouble>(numberofvertices);
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+
+		/*check if there is ice in this element*/
+		if(!element->IsIceInElement()) continue;
+
+		/*get H on the vertices*/
+		element->GetInputListOnVertices(H,ThicknessEnum);
+
+      /*weight to calculate the smoothed H*/
+      weight=1.;//simple average
+
+		/*add in the serial vector*/
+      vecH->SetValue(element->vertices[0]->Sid(),weight*H[0],ADD_VAL);
+      vecH->SetValue(element->vertices[1]->Sid(),weight*H[1],ADD_VAL);
+      vecH->SetValue(element->vertices[2]->Sid(),weight*H[2],ADD_VAL);
+      /*total weight*/
+      vectotalweight->SetValue(element->vertices[0]->Sid(),weight,ADD_VAL);
+      vectotalweight->SetValue(element->vertices[1]->Sid(),weight,ADD_VAL);
+      vectotalweight->SetValue(element->vertices[2]->Sid(),weight,ADD_VAL);
+   }
+
+   /*Assemble and serialize*/
+   vecH->Assemble();
+   vectotalweight->Assemble();
+   Hserial=vecH->ToMPISerial();
+   totalweight=vectotalweight->ToMPISerial();
+
+   /*Divide for the total weight*/
+   for(int i=0;i<numberofvertices;i++){
+      _assert_(totalweight[i]>0);
+      Hserial[i]=Hserial[i]/totalweight[i];
+   }
+
+   /*Set element inputs*/
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		H[0]=Hserial[element->vertices[0]->Sid()];
+		H[1]=Hserial[element->vertices[1]->Sid()];
+		H[2]=Hserial[element->vertices[2]->Sid()];
+		element->AddInput(ThicknessEnum,H,P1Enum);
+	}
+
+ 	/*Cleanup*/
+   delete vecH;
+   delete vectotalweight;
+   xDelete<IssmDouble>(H);
+   xDelete<IssmDouble>(Hserial);
+   xDelete<IssmDouble>(totalweight);
+}
+/*}}}*/
+void FemModel::ThicknessPositivex(IssmDouble* pJ){/*{{{*/
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	IssmDouble  thickness,weight;
+	IssmDouble  Jdet;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble  H;
+
+	/*Compute Misfit: */
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+
+		/*If on water, return 0: */
+		if(!element->IsIceInElement()) continue;
+
+		/* Get node coordinates*/
+		element->GetVerticesCoordinates(&xyz_list);
+
+		/*Retrieve all inputs we will be needing: */
+		DatasetInput* weights_input   =element->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+		Input* thickness_input =element->GetInput(ThicknessEnum);                          _assert_(thickness_input);
+
+		/* Start  looping on the number of gaussian points: */
+		Gauss* gauss=element->NewGauss(2);
+		while(gauss->next()){
+
+			/* Get Jacobian determinant: */
+			element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+			/*Get all parameters at gaussian point*/
+			weights_input->GetInputValue(&weight,gauss,ThicknessPositiveEnum);
+			thickness_input->GetInputValue(&H,gauss);
+
+			/*int min(H,0)^2 */
+			if(H<=0){
+				J+=weight*H*H*Jdet*gauss->weight;
+			}
+		}
+
+		/*clean up and Return: */
+		xDelete<IssmDouble>(xyz_list);
+		delete gauss;
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+/*}}}*/
+void FemModel::TimeAdaptx(IssmDouble* pdt){/*{{{*/
+
+	/*intermediary: */
+	IssmDouble   min_dt      = 1.e+50;
+	IssmDouble   node_min_dt = 0.;
+
+	/*Go through elements, and figure out the minimum of the time steps for each element (using CFL criterion): */
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		if(element->IsIceInElement()){ /*verify if there is ice in the element*/
+			IssmDouble dt=element->TimeAdapt();
+			if(dt<min_dt)min_dt=dt;
+		}
+	}
+
+	/*Figure out minimum across the cluster: */
+	ISSM_MPI_Reduce (&min_dt,&node_min_dt,1,ISSM_MPI_DOUBLE,ISSM_MPI_MIN,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&node_min_dt,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	min_dt=node_min_dt;
+
+	/*Constrain dt */
+	IssmDouble dt_low,dt_high;
+	parameters->FindParam(&dt_low,TimesteppingTimeStepMinEnum);
+	parameters->FindParam(&dt_high,TimesteppingTimeStepMaxEnum);
+	if(min_dt<dt_low)  min_dt = dt_low;
+	if(min_dt>dt_high) min_dt = dt_high;
+
+	/*Assign output pointers:*/
+	*pdt=min_dt;
+}/*}}}*/
+void FemModel::TotalCalvingFluxLevelsetx(IssmDouble* pM, bool scaled){/*{{{*/
+
+	IssmDouble local_calving_flux = 0;
+	IssmDouble total_calving_flux;
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		local_calving_flux+=element->TotalCalvingFluxLevelset(scaled);
+	}
+	ISSM_MPI_Reduce(&local_calving_flux,&total_calving_flux,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_calving_flux,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pM=total_calving_flux;
+
+}/*}}}*/
+void FemModel::TotalCalvingMeltingFluxLevelsetx(IssmDouble* pM, bool scaled){/*{{{*/
+
+	IssmDouble local_calving_flux = 0;
+	IssmDouble total_calving_flux;
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		local_calving_flux+=element->TotalCalvingMeltingFluxLevelset(scaled);
+	}
+	ISSM_MPI_Reduce(&local_calving_flux,&total_calving_flux,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_calving_flux,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pM=total_calving_flux;
+
+}/*}}}*/
+void FemModel::TotalFloatingBmbx(IssmDouble* pFbmb, bool scaled){/*{{{*/
+
+	IssmDouble local_fbmb = 0;
+	IssmDouble total_fbmb;
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		local_fbmb+=element->TotalFloatingBmb(scaled);
+	}
+	ISSM_MPI_Reduce(&local_fbmb,&total_fbmb,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_fbmb,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pFbmb=total_fbmb;
+
+}/*}}}*/
+void FemModel::TotalGroundedBmbx(IssmDouble* pGbmb, bool scaled){/*{{{*/
+
+	IssmDouble local_gbmb = 0;
+	IssmDouble total_gbmb;
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		local_gbmb+=element->TotalGroundedBmb(scaled);
+	}
+	ISSM_MPI_Reduce(&local_gbmb,&total_gbmb,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_gbmb,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pGbmb=total_gbmb;
+
+}/*}}}*/
+void FemModel::TotalSmbx(IssmDouble* pSmb, bool scaled){/*{{{*/
+
+	IssmDouble local_smb = 0;
+	IssmDouble total_smb;
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		local_smb+=element->TotalSmb(scaled);
+	}
+	ISSM_MPI_Reduce(&local_smb,&total_smb,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_smb,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pSmb=total_smb;
+
+}/*}}}*/
+void FemModel::TotalSmbMeltx(IssmDouble* pSmbMelt, bool scaled){/*{{{*/
+
+	IssmDouble local_smbmelt = 0;
+	IssmDouble total_smbmelt;
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		local_smbmelt+=element->TotalSmbMelt(scaled);
+	}
+	ISSM_MPI_Reduce(&local_smbmelt,&total_smbmelt,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_smbmelt,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pSmbMelt=total_smbmelt;
+
+}/*}}}*/
+void FemModel::TotalSmbRefreezex(IssmDouble* pSmbRefreeze, bool scaled){/*{{{*/
+
+	IssmDouble local_smbrefreeze = 0;
+	IssmDouble total_smbrefreeze;
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		local_smbrefreeze+=element->TotalSmbRefreeze(scaled);
+	}
+	ISSM_MPI_Reduce(&local_smbrefreeze,&total_smbrefreeze,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_smbrefreeze,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pSmbRefreeze=total_smbrefreeze;
+
+}/*}}}*/
+void FemModel::UpdateConstraintsExtrudeFromBasex(void){ /*{{{*/
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		element->UpdateConstraintsExtrudeFromBase();
+	}
+
+}
+/*}}}*/
+void FemModel::UpdateConstraintsExtrudeFromTopx(void){ /*{{{*/
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		element->UpdateConstraintsExtrudeFromTop();
+	}
+
+}
+/*}}}*/
+void FemModel::UpdateConstraintsx(void){ /*{{{*/
+
+	IssmDouble time,yts;
+	int        analysis_type,config_type;
+
+	/*retrieve parameters: */
+	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+	parameters->FindParam(&config_type,ConfigurationTypeEnum);
+	parameters->FindParam(&time,TimeEnum);
+	parameters->FindParam(&yts,ConstantsYtsEnum);
+
+	int index=AnalysisIndex(config_type);
+	_assert_(this->analysis_type_list[index]==config_type);
+
+	/*start module: */
+	if(VerboseModule()) _printf0_("   Updating constraints and active domain of analysis " << EnumToStringx(analysis_type)  << " for time: " << time/yts << "\n");
+
+	Analysis* analysis= EnumToAnalysis(analysis_type);
+	analysis->UpdateConstraints(this);
+	delete analysis;
+
+	/*Second, constraints might be time dependent: */
+	SpcNodesx(nodes,constraints,parameters);
+
+	/*Now, update degrees of freedoms: */
+	NodesDofx(nodes,parameters);
+
+}/*}}}*/
+int  FemModel::UpdateVertexPositionsx(void){ /*{{{*/
+
+	IssmDouble         *surface = NULL;
+	IssmDouble         *bed     = NULL;
+
+	if(VerboseSolution()) _printf0_("   updating vertices positions\n");
+
+	/*get vertex vectors for bed and thickness: */
+	GetVectorFromInputsx(&surface  ,this, SurfaceEnum,VertexPIdEnum);
+	GetVectorFromInputsx(&bed      ,this, BaseEnum,   VertexPIdEnum);
+
+	/*Allocate vector*/
+	int numvert       = vertices->NumberOfVertices();
+	int numvert_local = vertices->NumberOfVerticesLocal();
+	Vector<IssmDouble> *vx=new Vector<IssmDouble>(numvert_local,numvert);
+	Vector<IssmDouble> *vy=new Vector<IssmDouble>(numvert_local,numvert);
+	Vector<IssmDouble> *vz=new Vector<IssmDouble>(numvert_local,numvert);
+
+	/*Update verices new geometry: */
+	for(Object* & object : this->vertices->objects){
+		Vertex* vertex = xDynamicCast<Vertex*>(object);
+		vertex->UpdatePosition(vx,vy,vz,parameters,surface,bed);
+	}
+
+	/*Assemble mesh velocity*/
+	vx->Assemble();
+	vy->Assemble();
+	vz->Assemble();
+
+	/*Update element inputs*/
+	InputUpdateFromVectorx(this,vx,VxMeshEnum,VertexPIdEnum);
+	InputUpdateFromVectorx(this,vy,VyMeshEnum,VertexPIdEnum);
+	InputUpdateFromVectorx(this,vz,VzMeshEnum,VertexPIdEnum);
+
+	/*Free resources:*/
+	delete vx;
+	delete vy;
+	delete vz;
+	xDelete<IssmDouble>(bed);
+	xDelete<IssmDouble>(surface);
+	return 1;
+}
+/*}}}*/
+
+/*AMR*/
+#ifndef _HAVE_AD_
+void FemModel::ReMesh(void){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble *newx			= NULL;
+	IssmDouble *newy			= NULL;
+	IssmDouble *newz			= NULL;
+	int *newelementslist		= NULL;
+	int newnumberofvertices	= -1;
+	int newnumberofelements = -1;
+
+	int elementswidth       = this->GetElementsWidth();//just tria elements in this version
+	int amrtype,basalforcing_model;
+	bool isgroundingline;
+
+	/*Branch to specific amr depending on requested method*/
+	this->parameters->FindParam(&amrtype,AmrTypeEnum);
+	switch(amrtype){
+		#if defined(_HAVE_NEOPZ_) && !defined(_HAVE_AD_)
+		case AmrNeopzEnum: this->ReMeshNeopz(&newnumberofvertices,&newnumberofelements,&newx,&newy,&newz,&newelementslist); break;
+		#endif
+
+		#if defined(_HAVE_BAMG_) && !defined(_HAVE_AD_)
+		case AmrBamgEnum: this->ReMeshBamg(&newnumberofvertices,&newnumberofelements,&newx,&newy,&newz,&newelementslist); break;
+		#endif
+
+		default: _error_("not implemented yet");
+	}
+
+	/*Create iomodel for model processing*/
+	IoModel* iomodel = new IoModel();
+	this->parameters->FindParam(&iomodel->domaintype,DomainTypeEnum);
+	this->parameters->FindParam(&iomodel->domaindim ,DomainDimensionEnum);
+	this->parameters->FindParam(&iomodel->meshelementtype,MeshElementtypeEnum);
+	iomodel->numberofvertices = newnumberofvertices;
+	iomodel->numberofelements = newnumberofelements;
+	iomodel->elements         = newelementslist;
+	iomodel->AddConstant(new IoConstant(0,"md.rifts.numrifts"));
+	iomodel->AddConstant(new IoConstant(false,"md.transient.isoceancoupling"));
+	bool temp; int tempint;
+	this->parameters->FindParam(&temp,FlowequationIsSIAEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isSIA"));
+	this->parameters->FindParam(&temp,FlowequationIsSSAEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isSSA"));
+	this->parameters->FindParam(&temp,FlowequationIsL1L2Enum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isL1L2"));
+	this->parameters->FindParam(&temp,FlowequationIsMOLHOEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isMOLHO"));
+	this->parameters->FindParam(&temp,FlowequationIsHOEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isHO"));
+	this->parameters->FindParam(&temp,FlowequationIsFSEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isFS"));
+	this->parameters->FindParam(&tempint,MasstransportStabilizationEnum); iomodel->AddConstant(new IoConstant(tempint,"md.masstransport.stabilization"));
+	iomodel->AddConstant(new IoConstant(P1Enum,"md.flowequation.fe_SSA"));
+
+	/*Partitioning the new mesh. Maybe ElementsAndVerticesPartitioning.cpp could be modified to set this without iomodel.*/
+	::ElementsAndVerticesPartitioning(iomodel);
+
+	/*Creating elements*/
+	/*Just Tria in this version*/
+	Elements* new_elements=new Elements();
+	this->CreateElements(newnumberofelements,elementswidth,newelementslist,iomodel->my_elements,new_elements);
+
+	/*Create vertices*/
+	Vertices* new_vertices=new Vertices();
+	CreateNumberNodeToElementConnectivity(iomodel);
+	::CreateVertices(new_elements,new_vertices,iomodel,TransientSolutionEnum,true);
+	for(Object* & object : new_vertices->objects){
+		Vertex *vertex=(Vertex*)object;
+		int     sid = vertex->Sid();
+		vertex->x=newx[sid];
+		vertex->y=newy[sid];
+		vertex->z=newz[sid];
+	}
+
+	/*Creating inputs*/
+	Inputs* new_inputs=new Inputs(newnumberofelements,newnumberofvertices);
+
+	/*Creating materials*/
+	Materials* new_materials=new Materials();
+	this->CreateMaterials(newnumberofelements,iomodel->my_elements,new_materials);
+
+	/*Creating nodes and constraints*/
+	/*Just SSA (2D) and P1 in this version*/
+	Constraints **new_constraints_list = xNew<Constraints*>(this->nummodels);
+	Nodes       **new_nodes_list       = xNew<Nodes*>(this->nummodels);
+
+	this->analysis_counter=-1;
+	for(int i=0;i<this->nummodels;i++){//create nodes for each analysis in analysis_type_list
+
+		int analysis_enum = this->analysis_type_list[i];
+		if(VerboseMProcessor()) _printf0_("   creating datasets for analysis " << EnumToStringx(analysis_enum) << "\n");
+
+		if(this->loads_list[i]->Size()!=0) _error_("not supported yet");
+		new_constraints_list[i] = new Constraints();
+		new_nodes_list[i] = new Nodes();
+
+		/*As the domain is 2D, it is not necessary to create nodes for this analysis*/
+		if(analysis_enum==StressbalanceVerticalAnalysisEnum) continue;
+		Analysis* analysis = EnumToAnalysis(analysis_enum);
+		analysis->CreateNodes(new_nodes_list[i],iomodel,true);
+		delete analysis;
+		this->UpdateElements(newnumberofelements,newelementslist,iomodel->my_elements,i,new_elements);
+		this->CreateConstraints(new_vertices,analysis_enum,new_constraints_list[i]);
+
+		new_constraints_list[i]->Presort();
+		new_nodes_list[i]->Presort();
+	}
+
+	new_elements->Presort();
+	new_vertices->Presort();
+	//this->loads->Presort();
+	new_materials->Presort();
+
+	/*reset hooks*/
+	new_elements->ResetHooks();
+	//this->loads->ResetHooks();
+	new_materials->ResetHooks();
+
+	/*do the post-processing of the datasets to get an FemModel that can actually run analyses: */
+	int analysis_type;
+	for(int i=0;i<this->nummodels;i++){
+		analysis_type=this->analysis_type_list[i];
+		SetCurrentConfiguration(analysis_type);
+
+		this->analysis_counter=i;
+		/*Now, plug analysis_counter and analysis_type inside the parameters: */
+		this->parameters->SetParam(this->analysis_counter,AnalysisCounterEnum);
+		this->parameters->SetParam(analysis_type,AnalysisTypeEnum);
+		this->parameters->SetParam(analysis_type,ConfigurationTypeEnum);
+
+		/*configure elements, loads and nodes, for this new analysis: */
+		new_elements->SetCurrentConfiguration(new_elements,this->loads,new_nodes_list[i],new_vertices,new_materials,this->parameters);
+		this->loads->SetCurrentConfiguration(new_elements,this->loads,new_nodes_list[i],new_vertices,new_materials,this->parameters);
+
+		/*take care of toolkits options, that depend on this analysis type (present only after model processor)*/
+		if(this->parameters->Exist(ToolkitsOptionsStringsEnum)){
+			ToolkitsOptionsFromAnalysis(this->parameters,analysis_type);
+			if(VerboseSolver()) _printf0_("      toolkits Options set for analysis type: " << EnumToStringx(analysis_type) << "\n");
+		}
+
+		ConfigureObjectsx(new_elements,this->loads,new_nodes_list[i],new_vertices,new_materials,this->parameters,new_inputs);
+		SpcNodesx(new_nodes_list[i],new_constraints_list[i],this->parameters);
+		NodesDofx(new_nodes_list[i],this->parameters);
+	}
+
+	/*Interpolate all inputs and insert them into the new elements.*/
+	this->InterpolateInputs(new_vertices,new_elements,new_inputs);
+
+	/*Delete old structure and set new pointers*/
+	delete this->inputs;   this->inputs = new_inputs;
+	delete this->vertices;  this->vertices = new_vertices;
+	delete this->elements;  this->elements = new_elements;
+	delete this->materials; this->materials = new_materials;
+	if(this->constraints_list && this->nummodels){
+		for(int i=0;i<this->nummodels;i++) delete this->constraints_list[i];
+		xDelete<Constraints*>(this->constraints_list);
+	}
+	this->constraints_list= new_constraints_list;
+	if(this->nodes_list && this->nummodels){
+		for(int i=0;i<this->nummodels;i++) delete this->nodes_list[i];
+		xDelete<Nodes*>(this->nodes_list);
+	}
+	this->nodes_list = new_nodes_list;
+
+	/*Reset mask*/
+	GetMaskOfIceVerticesLSMx0(this);
+
+	/*Insert MISMIP+ bed topography FIXME it could be stay in another place*/
+	this->parameters->FindParam(&basalforcing_model,BasalforcingsEnum);
+	if(basalforcing_model==MismipFloatingMeltRateEnum) this->BedrockFromMismipPlus();
+
+	/*Adjust base, thickness and mask grounded ice leve set*/
+	this->parameters->FindParam(&isgroundingline,TransientIsgroundinglineEnum);
+	if(isgroundingline) this->AdjustBaseThicknessAndMask();
+
+	/*Reset current configuration: */
+	analysis_type=this->analysis_type_list[this->analysis_counter];
+	SetCurrentConfiguration(analysis_type);
+
+	/*Set the new mesh*/
+	this->SetMesh(&newelementslist,&newx,&newy,&newnumberofvertices,&newnumberofelements);
+
+	/*Cleanup*/
+	xDelete<IssmDouble>(newz);
+	/*Delete iomodel, but make sure to not erase some pointers*/
+	iomodel->elements = NULL;
+	delete iomodel;
+}
+/*}}}*/
+void FemModel::BedrockFromMismipPlus(void){/*{{{*/
+
+	/*Insert bedrock from mismip+ setup*/
+	/*This was used to Misomip project/simulations*/
+
+	if(VerboseSolution())_printf0_("	call Mismip bedrock adjust module\n");
+
+	IssmDouble x,y,bx,by;
+	int numvertices 		= this->GetElementsWidth();
+	IssmDouble* xyz_list = NULL;
+   IssmDouble* r        = xNew<IssmDouble>(numvertices);
+
+	for(Object* & object : this->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+		element->GetVerticesCoordinates(&xyz_list);
+		for(int i=0;i<numvertices;i++){
+			x		= xyz_list[3*i+0];
+			y		= xyz_list[3*i+1];
+			bx		= -150.-728.8*pow(x/300000.,2)+343.91*pow(x/300000.,4)-50.57*pow(x/300000.,6);
+			by		= 500./(1.+exp((-2./4000.)*(y-80000./2.-24000.)))+500./(1.+exp((2./4000.)*(y-80000./2.+24000.)));
+			r[i]	= max(bx+by,-720.);
+		}
+		/*insert new bedrock*/
+		element->AddInput(BedEnum,&r[0],P1Enum);
+		/*Cleanup*/
+		xDelete<IssmDouble>(xyz_list);
+	}
+   /*Delete*/
+   xDelete<IssmDouble>(r);
+}
+/*}}}*/
+void FemModel::AdjustBaseThicknessAndMask(void){/*{{{*/
+
+	if(VerboseSolution())_printf0_("	call adjust base and thickness module\n");
+
+	int     numvertices = this->GetElementsWidth();
+   IssmDouble rho_water,rho_ice,density,base_float;
+   IssmDouble* phi     = xNew<IssmDouble>(numvertices);
+   IssmDouble* h       = xNew<IssmDouble>(numvertices);
+   IssmDouble* s       = xNew<IssmDouble>(numvertices);
+   IssmDouble* b       = xNew<IssmDouble>(numvertices);
+   IssmDouble* r       = xNew<IssmDouble>(numvertices);
+   IssmDouble* sl      = xNew<IssmDouble>(numvertices);
+
+	for(Object* & object : this->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+
+		element->GetInputListOnVertices(&s[0],SurfaceEnum);
+		element->GetInputListOnVertices(&r[0],BedEnum);
+		element->GetInputListOnVertices(&sl[0],SealevelEnum);
+		rho_water   = element->FindParam(MaterialsRhoSeawaterEnum);
+		rho_ice     = element->FindParam(MaterialsRhoIceEnum);
+		density     = rho_ice/rho_water;
+
+		for(int i=0;i<numvertices;i++){
+			/*calculate base floatation (which supports given surface*/
+			base_float = rho_ice*s[i]/(rho_ice-rho_water);
+			if(r[i]>base_float){
+				b[i] = r[i];
+			}
+			else {
+				b[i] = base_float;
+			}
+
+			if(fabs(sl[i])>0) _error_("Sea level value "<<sl[i]<<" not supported!");
+			/*update thickness and mask grounded ice level set*/
+			h[i]	  = s[i]-b[i];
+			phi[i]  = h[i]+r[i]/density;
+		}
+
+		/*Update inputs*/
+		element->AddInput(MaskOceanLevelsetEnum,&phi[0],P1Enum);
+		element->AddInput(ThicknessEnum,&h[0],P1Enum);
+		element->AddInput(BaseEnum,&b[0],P1Enum);
+	}
+
+   /*Delete*/
+   xDelete<IssmDouble>(phi);
+   xDelete<IssmDouble>(h);
+   xDelete<IssmDouble>(s);
+   xDelete<IssmDouble>(b);
+   xDelete<IssmDouble>(r);
+   xDelete<IssmDouble>(sl);
+}
+/*}}}*/
+void FemModel::GetInputs(int* pnumP0inputs,IssmDouble** pP0inputs,int** pP0input_enums,int** pP0input_interp,int* pnumP1inputs,IssmDouble** pP1inputs,int** pP1input_enums,int** pP1input_interp){/*{{{*/
+
+	int numberofvertices = this->vertices->NumberOfVertices();
+	int numberofelements = this->elements->NumberOfElements();
+	int elementswidth    = this->GetElementsWidth();
+	int numinputs,numP0inputs,numP1inputs;
+	IssmDouble* P0inputs								= NULL;
+	Vector<IssmDouble>* vP0inputs					= NULL;
+	int* P0input_enums								= NULL;
+	int* P0input_interp 								= NULL;
+	IssmDouble* P1inputs								= NULL;
+	Vector<IssmDouble>* vP1inputs					= NULL;
+	int* P1input_enums  								= NULL;
+	int* P1input_interp 								= NULL;
+	int* input_interpolations                 = NULL;
+	int* input_enums                          = NULL;
+   int* pos												= NULL;
+	IssmDouble value									= 0;
+
+	/*Figure out how many inputs we have and their respective interpolation*/
+	this->inputs->GetInputsInterpolations(&numinputs,&input_interpolations,&input_enums);
+
+	/*Count and get enums of all inputs in old mesh*/
+	for(int step=0;step<2;step++){
+		if(step){
+			P0input_enums  = xNew<int>(numP0inputs);
+			P0input_interp = xNew<int>(numP0inputs);
+			P1input_enums  = xNew<int>(numP1inputs);
+			P1input_interp = xNew<int>(numP1inputs);
+		}
+		numP0inputs = 0;
+		numP1inputs = 0;
+		for(int i=0;i<numinputs;i++){
+			int inputinterp = input_interpolations[i];
+			switch(inputinterp){
+				case 0:
+					/*Input not found, go to the next*/
+					break;
+				case P1Enum:
+					if(step){
+						P1input_enums[numP1inputs]  = input_enums[i];
+						P1input_interp[numP1inputs] = inputinterp;
+					}
+					numP1inputs++;
+					break;
+				case P0Enum:
+				case IntInputEnum:
+				case BoolInputEnum:
+					if(step){
+						P0input_enums[numP0inputs]  = input_enums[i];
+						P0input_interp[numP0inputs] = inputinterp;
+					}
+					numP0inputs++;
+					break;
+				default:
+					_error_(EnumToStringx(inputinterp)<<" ("<<inputinterp<<") Not supported yet");
+			}
+		}
+	}
+
+	/*Get P0 and P1 inputs over the elements*/
+	pos		= xNew<int>(elementswidth);
+	vP0inputs= new Vector<IssmDouble>(numberofelements*numP0inputs);
+	vP1inputs= new Vector<IssmDouble>(numberofvertices*numP1inputs);
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+
+		/*Get P0 inputs*/
+		for(int j=0;j<numP0inputs;j++){
+			switch(P0input_interp[j]){
+				case P0Enum:{
+					Input* input=element->GetInput(P0input_enums[j]);
+					input->GetInputAverage(&value);
+				}
+							 break;
+				case IntInputEnum:{
+					int valueint;
+					element->GetInputValue(&valueint,P0input_enums[j]);
+					value = reCast<IssmDouble>(valueint);
+				}
+									 break;
+				case BoolInputEnum:{
+					bool valuebool;
+					element->GetInputValue(&valuebool,P0input_enums[j]);
+					value = reCast<IssmDouble>(valuebool);
+				}
+					break;
+				default:
+					_error_(EnumToStringx(P0input_interp[j])<<" ("<<P0input_interp[j]<<") Not supported yet");
+			}
+			pos[0]=element->Sid()*numP0inputs+j;
+			/*Insert input in the vector*/
+			vP0inputs->SetValues(1,pos,&value,INS_VAL);
+		}
+
+		/*Get P1 inputs*/
+		for(int j=0;j<numP1inputs;j++){
+			Input* temp = element->GetInput(P1input_enums[j]); _assert_(temp);
+			ElementInput* input=xDynamicCast<ElementInput*>(temp);
+			pos[0]=element->vertices[0]->Sid()*numP1inputs+j;
+			pos[1]=element->vertices[1]->Sid()*numP1inputs+j;
+			pos[2]=element->vertices[2]->Sid()*numP1inputs+j;
+			/*Insert input in the vector*/
+			vP1inputs->SetValues(elementswidth,pos,input->element_values,INS_VAL);
+		}
+	}
+
+	/*Assemble and serialize*/
+	vP0inputs->Assemble();
+	vP1inputs->Assemble();
+	P0inputs=vP0inputs->ToMPISerial();
+	P1inputs=vP1inputs->ToMPISerial();
+
+	/*Assign pointers*/
+	*pnumP0inputs		= numP0inputs;
+	*pP0inputs			= P0inputs;
+	*pP0input_enums	= P0input_enums;
+	*pP0input_interp	= P0input_interp;
+	*pnumP1inputs		= numP1inputs;
+	*pP1inputs			= P1inputs;
+	*pP1input_enums	= P1input_enums;
+	*pP1input_interp	= P1input_interp;
+
+	/*Cleanup*/
+	delete vP0inputs;
+	delete vP1inputs;
+	xDelete<int>(input_interpolations);
+	xDelete<int>(input_enums);
+	xDelete<int>(pos);
+}
+/*}}}*/
+void FemModel::InterpolateInputs(Vertices* newfemmodel_vertices,Elements* newfemmodel_elements,Inputs* newinputs){/*{{{*/
+
+	int numberofelements			= -1;												//global, entire old mesh
+	int newnumberofelements		= newfemmodel_elements->Size();			//just on the new partition
+	int numberofvertices			= -1;												//global, entire old mesh
+	int newnumberofvertices 	= newfemmodel_vertices->Size();			//just on the new partition
+	int elementswidth				= this->GetElementsWidth(); //just tria in this version
+	int numP0inputs				= -1;
+	IssmDouble* P0inputs			= NULL; //global, entire old mesh
+	IssmDouble* newP0inputs		= NULL; //just on the new partition
+	int* P0input_enums			= NULL;
+	int* P0input_interp 			= NULL;
+	int numP1inputs				= -1;
+	IssmDouble* P1inputs			= NULL; //global, entire old mesh
+	IssmDouble* newP1inputs 	= NULL; //just on the new partition
+	int* P1input_enums  			= NULL;
+	int* P1input_interp 			= NULL;
+	IssmDouble* values			= NULL;
+   IssmDouble* vector      	= NULL;
+	IssmDouble* x					= NULL;//global, entire old mesh
+	IssmDouble* y					= NULL;//global, entire old mesh
+	int* elementslist				= NULL;//global, entire old mesh
+	IssmDouble* newx				= NULL;//just on the new partition
+	IssmDouble* newy				= NULL;//just on the new partition
+	IssmDouble* newz				= NULL;//just on the new partition
+	IssmDouble* newxc				= NULL;//just on the new partition
+	IssmDouble* newyc				= NULL;//just on the new partition
+	int* newelementslist			= NULL;//just on the new partition
+	int* sidtoindex				= NULL;//global vertices sid to partition index
+
+	/*Get old P0 and P1  inputs (entire mesh)*/
+	this->GetInputs(&numP0inputs,&P0inputs,&P0input_enums,&P0input_interp,&numP1inputs,&P1inputs,&P1input_enums,&P1input_interp);
+
+	/*Get the old mesh (global, entire mesh)*/
+	this->GetMesh(&elementslist,&x,&y,&numberofvertices,&numberofelements);
+
+	/*Get the new mesh (just on the new partition)*/
+	this->GetMeshOnPartition(newfemmodel_vertices,newfemmodel_elements,&newx,&newy,&newz,&newelementslist,&sidtoindex);
+
+	/*Calculate the center points xc and xy (new mesh, new partition)*/
+	newxc=xNewZeroInit<IssmDouble>(newnumberofelements);
+	newyc=xNewZeroInit<IssmDouble>(newnumberofelements);
+	for(int i=0;i<newnumberofelements;i++){
+		for(int j=0;j<elementswidth;j++){
+			int vid = newelementslist[i*elementswidth+j]-1;//Transform to C indexing
+			newxc[i]+=newx[vid]/elementswidth;
+			newyc[i]+=newy[vid]/elementswidth;
+		}
+	}
+
+	/*Interplate P0 inputs in the new mesh (just on the new partition)*/
+	InterpFromMeshToMesh2dx(&newP0inputs,elementslist,x,y,numberofvertices,numberofelements,
+				P0inputs,numberofelements,numP0inputs,
+				newxc,newyc,newnumberofelements,NULL);
+
+	/*Interpolate P1 inputs in the new mesh (just on the new partition)*/
+	InterpFromMeshToMesh2dx(&newP1inputs,elementslist,x,y,numberofvertices,numberofelements,
+				P1inputs,numberofvertices,numP1inputs,
+				newx,newy,newnumberofvertices,NULL);
+
+	/*Insert P0 and P1 inputs into the new elements (just on the new partition)*/
+	int vertexlids[3];
+	values=xNew<IssmDouble>(elementswidth);
+	for(int i=0;i<newfemmodel_elements->Size();i++){//just on the new partition
+		Element* element=xDynamicCast<Element*>(newfemmodel_elements->GetObjectByOffset(i));
+		/*newP0inputs is just on the new partition*/
+		for(int j=0;j<numP0inputs;j++){
+			switch(P0input_interp[j]){
+				case P0Enum:
+					element->SetElementInput(newinputs,P0input_enums[j],newP0inputs[i*numP0inputs+j]);
+					break;
+				case IntInputEnum:
+					element->SetIntInput(newinputs,P0input_enums[j],reCast<int>(newP0inputs[i*numP0inputs+j]));
+					break;
+				case BoolInputEnum:
+					element->SetBoolInput(newinputs,P0input_enums[j],reCast<bool>(newP0inputs[i*numP0inputs+j]));
+					break;
+				default:
+					_error_(EnumToStringx(P0input_interp[j])<<" Not supported yet");
+			}
+		}
+		/*newP1inputs is just on the new partition*/
+		for(int i=0;i<3;i++) vertexlids[i]=element->vertices[i]->lid;
+		for(int j=0;j<numP1inputs;j++){
+			values[0]=newP1inputs[sidtoindex[element->vertices[0]->Sid()]*numP1inputs+j];
+			values[1]=newP1inputs[sidtoindex[element->vertices[1]->Sid()]*numP1inputs+j];
+			values[2]=newP1inputs[sidtoindex[element->vertices[2]->Sid()]*numP1inputs+j];
+			newinputs->SetTriaInput(P1input_enums[j],P1Enum,3,vertexlids,values);
+		}
+	}
+
+	/*Cleanup*/
+	xDelete<IssmDouble>(P0inputs);
+	xDelete<IssmDouble>(newP0inputs);
+	xDelete<int>(P0input_enums);
+	xDelete<int>(P0input_interp);
+	xDelete<IssmDouble>(P1inputs);
+	xDelete<IssmDouble>(newP1inputs);
+	xDelete<int>(P1input_enums);
+	xDelete<int>(P1input_interp);
+	xDelete<IssmDouble>(newx);
+	xDelete<IssmDouble>(newy);
+	xDelete<IssmDouble>(newz);
+	xDelete<IssmDouble>(newxc);
+	xDelete<IssmDouble>(newyc);
+	xDelete<int>(newelementslist);
+	xDelete<int>(sidtoindex);
+	xDelete<IssmDouble>(values);
+}
+/*}}}*/
+void FemModel::WriteMeshInResults(void){/*{{{*/
+
+	/*Write the erros estimators*/
+	this->WriteErrorEstimatorsInResults();
+
+	int step					= -1;
+	int numberofelements = -1;
+	int numberofvertices = -1;
+	IssmDouble time		= -1;
+	IssmDouble* x			= NULL;
+	IssmDouble* y			= NULL;
+	int* elementslist		= NULL;
+
+	if(!this->elements || !this->vertices || !this->results || !this->parameters) return;
+
+	parameters->FindParam(&step,StepEnum);
+	parameters->FindParam(&time,TimeEnum);
+
+	/*Get mesh. Elementslist comes in Matlab indexing*/
+	this->GetMesh(&elementslist,&x,&y,&numberofvertices,&numberofelements);
+
+	/*Write mesh in Results*/
+	this->results->AddResult(new GenericExternalResult<int*>(this->results->Size()+1,MeshElementsEnum,
+					elementslist,numberofelements,this->GetElementsWidth(),step,time));
+
+	this->results->AddResult(new GenericExternalResult<IssmDouble*>(this->results->Size()+1,MeshXEnum,
+					x,numberofvertices,1,step,time));
+
+	this->results->AddResult(new GenericExternalResult<IssmDouble*>(this->results->Size()+1,MeshYEnum,
+					y,numberofvertices,1,step,time));
+}
+/*}}}*/
+void FemModel::WriteErrorEstimatorsInResults(void){/*{{{*/
+
+   int step                   = -1;
+   int numberofelements       = -1;
+   IssmDouble time            = -1;
+   IssmDouble* stresserror    = NULL;
+   IssmDouble* thicknesserror = NULL;
+
+   if(!this->elements || !this->vertices || !this->results || !this->parameters) return;
+
+   parameters->FindParam(&step,StepEnum);
+   parameters->FindParam(&time,TimeEnum);
+   numberofelements=this->elements->NumberOfElements();
+
+   /*Compute the deviatoric stress tensor*/
+   this->ZZErrorEstimator(&stresserror);
+
+   /*Compute the thickness error*/
+   this->ThicknessZZErrorEstimator(&thicknesserror);
+
+   /*Write error estimators in Results*/
+   this->results->AddResult(new GenericExternalResult<IssmDouble*>(this->results->Size()+1,DeviatoricStressErrorEstimatorEnum,
+                                                                  stresserror,numberofelements,1,step,time));
+
+   this->results->AddResult(new GenericExternalResult<IssmDouble*>(this->results->Size()+1,ThicknessErrorEstimatorEnum,
+                                                                  thicknesserror,numberofelements,1,step,time));
+   /*Cleanup*/
+   xDelete<IssmDouble>(stresserror);
+   xDelete<IssmDouble>(thicknesserror);
+
+   return;
+}
+/*}}}*/
+void FemModel::CreateElements(int newnumberofelements,int elementswidth,int* newelementslist,bool* my_elements,Elements* elements){/*{{{*/
+
+	/*newlementslist is in Matlab indexing*/
+	int lid=0;
+	for(int i=0;i<newnumberofelements;i++){
+		if(my_elements[i]){
+			/*Create element - just tria in this version*/
+			Tria *newtria=new Tria();
+			newtria->id=i+1;
+			newtria->sid=i;
+			newtria->lid=lid++;
+			newtria->iscollapsed=0;
+			newtria->isonsurface = true;
+			newtria->isonbase = true;
+			newtria->parameters=NULL;
+			newtria->inputs=NULL;
+			newtria->nodes=NULL;
+			newtria->vertices=NULL;
+			newtria->material=NULL;
+			if(this->nummodels>0){
+				newtria->element_type_list=xNew<int>(this->nummodels);
+				for(int j=0;j<nummodels;j++) newtria->element_type_list[j]=0;
+			}
+			else newtria->element_type_list=NULL;
+
+			/*Element hook*/
+			int material_id=i+1; // retrieve material_id = i+1;
+			/*retrieve vertices ids*/
+			int* vertex_ids=xNew<int>(elementswidth);
+			for(int j=0;j<elementswidth;j++)	vertex_ids[j]=reCast<int>(newelementslist[elementswidth*i+j]);//this Hook wants Matlab indexing
+			/*Setting the hooks*/
+			newtria->numanalyses =this->nummodels;
+			newtria->hnodes		=new Hook*[this->nummodels];
+			newtria->hvertices   =new Hook(&vertex_ids[0],elementswidth);
+			newtria->hmaterial   =new Hook(&material_id,1);
+			newtria->hneighbors  =NULL;
+			/*Initialize hnodes as NULL*/
+			for(int j=0;j<this->nummodels;j++) newtria->hnodes[j]=NULL;
+			/*Clean up*/
+			xDelete<int>(vertex_ids);
+			elements->AddObject(newtria);
+		}
+	}
+
+}
+/*}}}*/
+void FemModel::CreateMaterials(int newnumberofelements,bool* my_elements,Materials* materials){/*{{{*/
+
+	/*Just Matice in this version*/
+	for(int i=0;i<newnumberofelements;i++){
+		if(my_elements[i]){
+			materials->AddObject(new Matice(i+1,i,MaticeEnum));
+		}
+	}
+}
+/*}}}*/
+void FemModel::GetMesh(Vertices* femmodel_vertices, Elements* femmodel_elements,IssmDouble** px, IssmDouble** py, int** pelementslist){/*{{{*/
+
+	if(!femmodel_vertices) _error_("GetMesh: vertices are NULL.");
+	if(!femmodel_elements) _error_("GetMesh: elements are NULL.");
+
+	int numberofvertices = femmodel_vertices->NumberOfVertices();
+	int numberofelements = femmodel_elements->NumberOfElements();
+	int elementswidth		= this->GetElementsWidth(); // just 2D mesh in this version (just tria elements)
+	IssmDouble* x			= NULL;
+	IssmDouble* y			= NULL;
+	IssmDouble* z			= NULL;
+	int* elementslist 	= NULL;
+	int* elem_vertices	= NULL;
+	IssmDouble *id1		= NULL;
+   IssmDouble *id2 		= NULL;
+	IssmDouble *id3 		= NULL;
+
+	/*Get vertices coordinates*/
+	VertexCoordinatesx(&x,&y,&z,femmodel_vertices,false) ;
+
+	/*Get element vertices*/
+	elem_vertices				= xNew<int>(elementswidth);
+	Vector<IssmDouble>* vid1= new Vector<IssmDouble>(numberofelements);
+	Vector<IssmDouble>* vid2= new Vector<IssmDouble>(numberofelements);
+	Vector<IssmDouble>* vid3= new Vector<IssmDouble>(numberofelements);
+
+	/*Go through elements, and for each element, get vertices*/
+   for(Object* & object : femmodel_elements->objects){
+    	Element* element=xDynamicCast<Element*>(object);
+    	element->GetVerticesSidList(elem_vertices);
+    	vid1->SetValue(element->sid,elem_vertices[0],INS_VAL);
+    	vid2->SetValue(element->sid,elem_vertices[1],INS_VAL);
+    	vid3->SetValue(element->sid,elem_vertices[2],INS_VAL);
+   }
+
+	/*Assemble*/
+   vid1->Assemble();
+   vid2->Assemble();
+   vid3->Assemble();
+
+   /*Serialize*/
+	id1 = vid1->ToMPISerial();
+   id2 = vid2->ToMPISerial();
+	id3 = vid3->ToMPISerial();
+
+	/*Construct elements list*/
+	elementslist=xNew<int>(numberofelements*elementswidth);
+	if(numberofelements*elementswidth<0) _error_("numberofelements negative.");
+	for(int i=0;i<numberofelements;i++){
+		elementslist[elementswidth*i+0] = reCast<int>(id1[i])+1; //InterpMesh wants Matlab indexing
+		elementslist[elementswidth*i+1] = reCast<int>(id2[i])+1; //InterpMesh wants Matlab indexing
+		elementslist[elementswidth*i+2] = reCast<int>(id3[i])+1; //InterpMesh wants Matlab indexing
+	}
+
+	/*Assign pointers*/
+	*px				= x;
+	*py				= y;
+	*pelementslist = elementslist; //Matlab indexing. InterMesh uses this type.
+
+	/*Cleanup*/
+	xDelete<int>(elem_vertices);
+	xDelete<IssmDouble>(id1);
+	xDelete<IssmDouble>(id2);
+	xDelete<IssmDouble>(id3);
+	xDelete<IssmDouble>(z);
+	delete vid1;
+	delete vid2;
+	delete vid3;
+}
+/*}}}*/
+void FemModel::GetMesh(int** elementslist, IssmDouble** x, IssmDouble** y, int* numberofvertices, int* numberofelements){/*{{{*/
+
+	int amrtype;
+	this->parameters->FindParam(&amrtype,AmrTypeEnum);
+
+	switch(amrtype){
+
+      #if defined(_HAVE_NEOPZ_)
+      case AmrNeopzEnum: this->amr->GetMesh(elementslist,x,y,numberofvertices,numberofelements); break;
+      #endif
+
+      #if defined(_HAVE_BAMG_)
+      case AmrBamgEnum: this->amrbamg->GetMesh(elementslist,x,y,numberofvertices,numberofelements); break;
+      #endif
+
+      default: _error_("not implemented yet");
+   }
+}/*}}}*/
+void FemModel::SetMesh(int** elementslist, IssmDouble** x, IssmDouble** y, int* numberofvertices, int* numberofelements){/*{{{*/
+
+	int amrtype;
+	this->parameters->FindParam(&amrtype,AmrTypeEnum);
+
+	switch(amrtype){
+
+      #if defined(_HAVE_NEOPZ_)
+      case AmrNeopzEnum: this->amr->SetMesh(elementslist,x,y,numberofvertices,numberofelements); break;
+      #endif
+
+      #if defined(_HAVE_BAMG_)
+      case AmrBamgEnum: this->amrbamg->SetMesh(elementslist,x,y,numberofvertices,numberofelements); break;
+      #endif
+
+      default: _error_("not implemented yet");
+   }
+}/*}}}*/
+void FemModel::GetMeshOnPartition(Vertices* femmodel_vertices,Elements* femmodel_elements,IssmDouble** px,IssmDouble** py,IssmDouble** pz,int** pelementslist,int** psidtoindex){/*{{{*/
+
+	if(!femmodel_vertices) _error_("GetMesh: vertices are NULL.");
+	if(!femmodel_elements) _error_("GetMesh: elements are NULL.");
+
+	int numberofvertices			= femmodel_vertices->Size();	//number of vertices of this partition
+	int numbertotalofvertices	= femmodel_vertices->NumberOfVertices();	//number total of vertices (entire mesh)
+	int numberofelements			= femmodel_elements->Size();  //number of elements of this partition
+	int elementswidth				= this->GetElementsWidth();	//just 2D mesh in this version (just tria elements)
+	IssmDouble* x					= NULL;
+	IssmDouble* y					= NULL;
+	IssmDouble* z					= NULL;
+	int* elementslist				= NULL;
+	int* sidtoindex				= NULL;
+	int* elem_vertices			= NULL;
+
+	/*Get vertices coordinates of this partition*/
+	sidtoindex	= xNewZeroInit<int>(numbertotalofvertices);//entire mesh, all vertices
+	x				= xNew<IssmDouble>(numberofvertices);//just this partition
+	y				= xNew<IssmDouble>(numberofvertices);//just this partitio;
+	z				= xNew<IssmDouble>(numberofvertices);//just this partitio;
+
+	/*Go through in this partition (vertices)*/
+	for(int i=0;i<numberofvertices;i++){//just this partition
+		Vertex* vertex=(Vertex*)femmodel_vertices->GetObjectByOffset(i);
+		/*Attention: no spherical coordinates*/
+		x[i]=vertex->GetX();
+		y[i]=vertex->GetY();
+		z[i]=vertex->GetZ();
+		/*Keep the index and sid pair*/
+		sidtoindex[vertex->Sid()]=i;
+	}
+
+	/*Go through in this partition (elements) and build the element list*/
+	elem_vertices= xNew<int>(elementswidth);
+	elementslist = xNew<int>(numberofelements*elementswidth);
+	if(numberofelements*elementswidth<0) _error_("numberofelements negative.");
+
+	for(int i=0;i<numberofelements;i++){//just this partition
+    	Element* element=xDynamicCast<Element*>(femmodel_elements->GetObjectByOffset(i));
+    	element->GetVerticesSidList(elem_vertices);
+		elementslist[elementswidth*i+0] = sidtoindex[elem_vertices[0]]+1; //InterpMesh wants Matlab indexing
+		elementslist[elementswidth*i+1] = sidtoindex[elem_vertices[1]]+1; //InterpMesh wants Matlab indexing
+		elementslist[elementswidth*i+2] = sidtoindex[elem_vertices[2]]+1; //InterpMesh wants Matlab indexing
+	}
+
+	/*Assign pointers*/
+	*px				= x;
+	*py				= y;
+	*pz				= z;
+	*pelementslist = elementslist; //Matlab indexing. InterMesh uses this type.
+	*psidtoindex	= sidtoindex;  //it is ncessary to insert inputs
+
+	/*Cleanup*/
+	xDelete<int>(elem_vertices);
+}
+/*}}}*/
+void FemModel::CreateConstraints(Vertices* newfemmodel_vertices,int analysis_enum,Constraints* newfemmodel_constraints){/*{{{*/
+
+	/*ATTENTION: JUST SPCVX AND SPCVY*/
+	/*OTHERS CONSTRAINTS MUST BE IMPLEMENTED*/
+	if(analysis_enum!=StressbalanceAnalysisEnum) return;
+	int analysis_index = AnalysisIndex(analysis_enum);
+
+	int numberofnodes_analysistype= this->nodes_list[analysis_index]->NumberOfNodes();
+	int dofpernode						= 2;														//vx and vy
+	int numberofcols					= dofpernode*2;										//to keep dofs and flags in the vspc vector
+	int numberofvertices				= -1;														//global, entire old mesh
+	int numberofelements				= -1;														//global, entire old mesh
+	int newnumberofvertices			= newfemmodel_vertices->Size();					//local, just the new partition
+	int count							= 0;
+	IssmDouble* x						= NULL;													//global, entire old mesh
+	IssmDouble* y						= NULL;													//global, entire old mesh
+	int*			elementslist		= NULL;													//global, entire old mesh
+	IssmDouble* spc					= NULL;													//global, entire old mesh
+	IssmDouble* newx					= NULL;													//local, just new partition
+	IssmDouble* newy					= NULL;													//local, just new partition
+	IssmDouble* newspc				= NULL;													//local, just new partition
+	IssmDouble eps						= 1.e-8;
+	Vector<IssmDouble>* vspc		= new Vector<IssmDouble>(numberofnodes_analysistype*numberofcols);
+
+	/*Get old mesh (global, entire mesh). Elementslist comes in Matlab indexing*/
+	this->GetMesh(&elementslist,&x,&y,&numberofvertices,&numberofelements);
+
+	/*Get vertices coordinates of the new partition*/
+	newx=xNew<IssmDouble>(newnumberofvertices);//just the new partition
+	newy=xNew<IssmDouble>(newnumberofvertices);//just the new partition
+	for(int i=0;i<newnumberofvertices;i++){//just the new partition
+		Vertex* vertex=(Vertex*)newfemmodel_vertices->GetObjectByOffset(i);
+		/*Attention: no spherical coordinates*/
+		newx[i]=vertex->GetX();
+		newy[i]=vertex->GetY();
+	}
+
+	/*Get spcvx and spcvy of old mesh*/
+	for(Object* & object : this->constraints_list[analysis_index]->objects){
+		Constraint* constraint=(Constraint*)object;
+		SpcStatic* spcstatic = xDynamicCast<SpcStatic*>(constraint);
+		int dof					= spcstatic->GetDof();
+		int node					= spcstatic->GetNodeId();
+		IssmDouble spcvalue	= spcstatic->GetValue();
+		int nodeindex			= node-1;
+
+		/*vx and vx flag insertion*/
+		if(dof==0) {//vx
+			vspc->SetValue(nodeindex*numberofcols,spcvalue,INS_VAL);    //vx
+			vspc->SetValue(nodeindex*numberofcols+dofpernode,1,INS_VAL);//vxflag
+		}
+		/*vy and vy flag insertion*/
+		if(dof==1){//vy
+			vspc->SetValue(nodeindex*numberofcols+1,spcvalue,INS_VAL);	//vy
+			vspc->SetValue(nodeindex*numberofcols+dofpernode+1,1,INS_VAL);//vyflag
+		}
+	}
+
+	/*Assemble and serialize*/
+	vspc->Assemble();
+	spc=vspc->ToMPISerial();
+
+	/*Interpolate spc values and flags in the new partition*/
+	InterpFromMeshToMesh2dx(&newspc,elementslist,x,y,numberofvertices,numberofelements,
+								spc,numberofvertices,numberofcols,
+								newx,newy,newnumberofvertices,NULL);
+
+	/*Now, insert the interpolated constraints in the data set (constraints)*/
+	count=0;
+	for(int i=0;i<newnumberofvertices;i++){//just in the new partition
+		Vertex* vertex=(Vertex*)newfemmodel_vertices->GetObjectByOffset(i);
+		/*spcvx*/
+		if(!xIsNan<IssmDouble>(newspc[i*numberofcols]) && newspc[i*numberofcols+dofpernode]>(1-eps)){
+			newfemmodel_constraints->AddObject(new SpcStatic(count+1,vertex->Sid()+1,0,newspc[i*numberofcols],analysis_enum));
+			//add count'th spc, on node i+1, setting dof 1 to vx.
+			count++;
+		}
+	}
+	count=0;
+	for(int i=0;i<newnumberofvertices;i++){//just in the new partition
+		Vertex* vertex=(Vertex*)newfemmodel_vertices->GetObjectByOffset(i);
+		/*spcvy*/
+		if(!xIsNan<IssmDouble>(newspc[i*numberofcols+1]) && newspc[i*numberofcols+dofpernode+1]>(1-eps) ){
+			newfemmodel_constraints->AddObject(new SpcStatic(count+1,vertex->Sid()+1,1,newspc[i*numberofcols+1],analysis_enum));
+			//add count'th spc, on node i+1, setting dof 1 to vx.
+			count++;
+		}
+	}
+
+	/*Cleanup*/
+	xDelete<IssmDouble>(spc);
+	xDelete<IssmDouble>(newspc);
+	xDelete<IssmDouble>(newx);
+	xDelete<IssmDouble>(newy);
+	delete vspc;
+}
+/*}}}*/
+void FemModel::UpdateElements(int newnumberofelements,int* newelementslist,bool* my_elements,int analysis_counter,Elements* newelements){/*{{{*/
+
+	/*newelementslist is in Matlab indexing*/
+
+	/*Update elements, set hnode.
+	This code is in all analysis */
+	int elemcounter=0;
+	for(int iel=0;iel<newnumberofelements;iel++){
+		if(my_elements[iel]){
+			Tria* tria=(Tria*)newelements->GetObjectByOffset(elemcounter);
+			//element update
+			tria->element_type_list[analysis_counter]=P1Enum;
+			int numnodes=3;
+         int* tria_node_ids=xNew<int>(numnodes);
+         tria_node_ids[0]=newelementslist[3*iel+0]; //matlab indexing
+         tria_node_ids[1]=newelementslist[3*iel+1]; //matlab indexing
+         tria_node_ids[2]=newelementslist[3*iel+2]; //matlab indexing
+			tria->SetHookNodes(tria_node_ids,numnodes,analysis_counter); tria->nodes=NULL;
+   		xDelete<int>(tria_node_ids);
+			elemcounter++;
+		}
+	}
+	return;
+}
+/*}}}*/
+void FemModel::SmoothedDeviatoricStressTensor(IssmDouble** ptauxx,IssmDouble** ptauyy,IssmDouble** ptauxy){/*{{{*/
+
+	int elementswidth							= this->GetElementsWidth();//just 2D mesh, tria elements
+   int numberofvertices						= this->vertices->NumberOfVertices();
+   IssmDouble weight 						= 0.;
+	IssmDouble*	tauxx							= NULL;
+	IssmDouble*	tauyy							= NULL;
+	IssmDouble*	tauxy							= NULL;
+   IssmDouble* totalweight 				= NULL;
+	IssmDouble* deviatoricstressxx 		= xNew<IssmDouble>(elementswidth);
+   IssmDouble* deviatoricstressyy 		= xNew<IssmDouble>(elementswidth);
+   IssmDouble* deviatoricstressxy 		= xNew<IssmDouble>(elementswidth);
+   int* elem_vertices 						= xNew<int>(elementswidth);
+   Vector<IssmDouble>* vectauxx			= new Vector<IssmDouble>(numberofvertices);
+   Vector<IssmDouble>* vectauyy			= new Vector<IssmDouble>(numberofvertices);
+   Vector<IssmDouble>* vectauxy			= new Vector<IssmDouble>(numberofvertices);
+   Vector<IssmDouble>* vectotalweight	= new Vector<IssmDouble>(numberofvertices);
+
+	/*Update the Deviatoric Stress tensor over the elements*/
+	this->DeviatoricStressx();
+
+   /*Calculate the Smoothed Deviatoric Stress tensor*/
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+      element->GetInputListOnVertices(deviatoricstressxx,DeviatoricStressxxEnum);
+      element->GetInputListOnVertices(deviatoricstressyy,DeviatoricStressyyEnum);
+      element->GetInputListOnVertices(deviatoricstressxy,DeviatoricStressxyEnum);
+      element->GetVerticesSidList(elem_vertices);
+
+		/*weight to calculate the smoothed deviatoric stress*/
+		Tria* triaelement = xDynamicCast<Tria*>(element);
+		weight				= triaelement->GetArea();//the tria area is a choice for the weight
+
+      /*taux xx*/
+		vectauxx->SetValue(elem_vertices[0],weight*deviatoricstressxx[0],ADD_VAL);
+      vectauxx->SetValue(elem_vertices[1],weight*deviatoricstressxx[1],ADD_VAL);
+      vectauxx->SetValue(elem_vertices[2],weight*deviatoricstressxx[2],ADD_VAL);
+      /*tau yy*/
+		vectauyy->SetValue(elem_vertices[0],weight*deviatoricstressyy[0],ADD_VAL);
+	   vectauyy->SetValue(elem_vertices[1],weight*deviatoricstressyy[1],ADD_VAL);
+      vectauyy->SetValue(elem_vertices[2],weight*deviatoricstressyy[2],ADD_VAL);
+      /*tau xy*/
+		vectauxy->SetValue(elem_vertices[0],weight*deviatoricstressxy[0],ADD_VAL);
+      vectauxy->SetValue(elem_vertices[1],weight*deviatoricstressxy[1],ADD_VAL);
+      vectauxy->SetValue(elem_vertices[2],weight*deviatoricstressxy[2],ADD_VAL);
+		/*total weight*/
+		vectotalweight->SetValue(elem_vertices[0],weight,ADD_VAL);
+      vectotalweight->SetValue(elem_vertices[1],weight,ADD_VAL);
+      vectotalweight->SetValue(elem_vertices[2],weight,ADD_VAL);
+   }
+
+   /*Assemble*/
+   vectauxx->Assemble();
+   vectauyy->Assemble();
+   vectauxy->Assemble();
+   vectotalweight->Assemble();
+
+   /*Serialize*/
+   tauxx			= vectauxx->ToMPISerial();
+   tauyy			= vectauyy->ToMPISerial();
+   tauxy			= vectauxy->ToMPISerial();
+   totalweight	= vectotalweight->ToMPISerial();
+
+	/*Divide for the total weight*/
+	for(int i=0;i<numberofvertices;i++){
+		_assert_(totalweight[i]>0);
+		tauxx[i] = tauxx[i]/totalweight[i];
+		tauyy[i] = tauyy[i]/totalweight[i];
+		tauxy[i] = tauxy[i]/totalweight[i];
+	}
+
+	/*Set output*/
+	(*ptauxx) = tauxx;
+	(*ptauyy) = tauyy;
+	(*ptauxy) = tauxy;
+
+   /*Cleanup*/
+   delete vectauxx;
+   delete vectauyy;
+   delete vectauxy;
+	delete vectotalweight;
+   xDelete<IssmDouble>(deviatoricstressxx);
+   xDelete<IssmDouble>(deviatoricstressyy);
+   xDelete<IssmDouble>(deviatoricstressxy);
+   xDelete<IssmDouble>(totalweight);
+   xDelete<int>(elem_vertices);
+}
+/*}}}*/
+void FemModel::ZZErrorEstimator(IssmDouble** pelementerror){/*{{{*/
+
+	/*Compute the Zienkiewicz and Zhu (ZZ) error estimator for the deviatoric stress tensor.
+	 * Ref.: Zienkiewicz and Zhu, A Simple Error Estimator and Adaptive Procedure for Practical Engineering Analysis, Int. J. Numer. Meth. Eng, 1987*/
+
+	IssmDouble Jdet,error,ftxx,ftyy,ftxy;
+	int sid;
+	int numnodes							= this->GetElementsWidth();//just 2D mesh, tria elements, P1
+	int numberofelements 				= this->elements->NumberOfElements();
+	IssmDouble* xyz_list 				= NULL;
+	IssmDouble* smoothedtauxx			= NULL;
+	IssmDouble* smoothedtauyy			= NULL;
+	IssmDouble* smoothedtauxy			= NULL;
+	IssmDouble* tauxx						= xNew<IssmDouble>(numnodes);
+   IssmDouble* tauyy						= xNew<IssmDouble>(numnodes);
+   IssmDouble* tauxy						= xNew<IssmDouble>(numnodes);
+	IssmDouble* basis 					= xNew<IssmDouble>(numnodes);
+	int* elem_vertices 					= xNew<int>(numnodes);
+   Vector<IssmDouble>* velementerror= new Vector<IssmDouble>(numberofelements);
+
+	/*Get smoothed deviatoric stress tensor*/
+	this->SmoothedDeviatoricStressTensor(&smoothedtauxx,&smoothedtauyy,&smoothedtauxy);
+
+	/*Integrate the error over elements*/
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		element->GetInputListOnVertices(tauxx,DeviatoricStressxxEnum);
+      element->GetInputListOnVertices(tauyy,DeviatoricStressyyEnum);
+      element->GetInputListOnVertices(tauxy,DeviatoricStressxyEnum);
+      element->GetVerticesSidList(elem_vertices);
+
+		/*Integrate*/
+		element->GetVerticesCoordinates(&xyz_list);
+		Gauss* gauss=element->NewGauss(2);
+   	error=0.;
+		while(gauss->next()){
+			element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+			element->NodalFunctions(basis,gauss);
+			ftxx=0;ftyy=0;ftxy=0;
+			for(int n=0;n<numnodes;n++) {
+				ftxx+=(tauxx[n]-smoothedtauxx[elem_vertices[n]])*basis[n];
+				ftyy+=(tauyy[n]-smoothedtauyy[elem_vertices[n]])*basis[n];
+				ftxy+=(tauxy[n]-smoothedtauxy[elem_vertices[n]])*basis[n];
+			}
+			error+=Jdet*gauss->weight*( pow(ftxx,2)+pow(ftyy,2)+pow(ftxy,2) ); //e^2
+		}
+		/*Set the error in the global vector*/
+      sid=element->Sid();
+		error = sqrt(error);//sqrt(e^2)
+		velementerror->SetValue(sid,error,INS_VAL);
+		/*Cleanup intermediaries*/
+		xDelete<IssmDouble>(xyz_list);
+		delete gauss;
+	}
+
+	/*Assemble*/
+   velementerror->Assemble();
+
+   /*Serialize and set output*/
+   (*pelementerror)=velementerror->ToMPISerial();
+
+	/*Cleanup*/
+	xDelete<IssmDouble>(smoothedtauxx);
+	xDelete<IssmDouble>(smoothedtauyy);
+	xDelete<IssmDouble>(smoothedtauxy);
+	xDelete<IssmDouble>(tauxx);
+	xDelete<IssmDouble>(tauyy);
+	xDelete<IssmDouble>(tauxy);
+	xDelete<IssmDouble>(basis);
+	xDelete<int>(elem_vertices);
+	delete velementerror;
+}
+/*}}}*/
+void FemModel::SmoothedGradThickness(IssmDouble** pdHdx,IssmDouble** pdHdy){/*{{{*/
+
+   int elementswidth                   = this->GetElementsWidth();//just 2D mesh, tria elements
+   int numberofvertices                = this->vertices->NumberOfVertices();
+
+   IssmDouble weight                   = 0.;
+   IssmDouble* dHdx                    = NULL;
+   IssmDouble* dHdy                    = NULL;
+   IssmDouble* totalweight             = NULL;
+   IssmDouble* xyz_list                = NULL;
+   IssmDouble* H                       = xNew<IssmDouble>(elementswidth);
+   IssmDouble* GradH                   = xNew<IssmDouble>(2);
+   int* elem_vertices                  = xNew<int>(elementswidth);
+   Vector<IssmDouble>* vecdHdx         = new Vector<IssmDouble>(numberofvertices);
+   Vector<IssmDouble>* vecdHdy         = new Vector<IssmDouble>(numberofvertices);
+   Vector<IssmDouble>* vectotalweight  = new Vector<IssmDouble>(numberofvertices);
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+      element->GetInputListOnVertices(H,ThicknessEnum);
+      element->GetVerticesSidList(elem_vertices);
+      element->GetVerticesCoordinates(&xyz_list);
+
+      /*Get the gradient of thickness at the center point (in fact, GradH is constante over the element)*/
+      Gauss* gauss=element->NewGauss(1);
+      gauss->GaussPoint(0);
+      element->ValueP1DerivativesOnGauss(GradH,H,xyz_list,gauss);
+
+      /*weight to calculate the smoothed grad H*/
+      Tria* triaelement = xDynamicCast<Tria*>(element);
+      weight            = triaelement->GetArea();//the tria area is a choice for the weight
+
+		/*dH/dx*/
+      vecdHdx->SetValue(elem_vertices[0],weight*GradH[0],ADD_VAL);
+      vecdHdx->SetValue(elem_vertices[1],weight*GradH[0],ADD_VAL);
+      vecdHdx->SetValue(elem_vertices[2],weight*GradH[0],ADD_VAL);
+      /*dH/dy*/
+      vecdHdy->SetValue(elem_vertices[0],weight*GradH[1],ADD_VAL);
+      vecdHdy->SetValue(elem_vertices[1],weight*GradH[1],ADD_VAL);
+      vecdHdy->SetValue(elem_vertices[2],weight*GradH[1],ADD_VAL);
+      /*total weight*/
+      vectotalweight->SetValue(elem_vertices[0],weight,ADD_VAL);
+      vectotalweight->SetValue(elem_vertices[1],weight,ADD_VAL);
+      vectotalweight->SetValue(elem_vertices[2],weight,ADD_VAL);
+      /*Cleanup intermediaries*/
+      xDelete<IssmDouble>(xyz_list);
+      delete gauss;
+   }
+
+   /*Assemble*/
+   vecdHdx->Assemble();
+   vecdHdy->Assemble();
+   vectotalweight->Assemble();
+
+   /*Serialize*/
+   dHdx        = vecdHdx->ToMPISerial();
+   dHdy        = vecdHdy->ToMPISerial();
+   totalweight = vectotalweight->ToMPISerial();
+
+   /*Divide for the total weight*/
+   for(int i=0;i<numberofvertices;i++){
+      _assert_(totalweight[i]>0);
+      dHdx[i] = dHdx[i]/totalweight[i];
+      dHdy[i] = dHdy[i]/totalweight[i];
+   }
+
+   /*Set output*/
+   (*pdHdx) = dHdx;
+   (*pdHdy) = dHdy;
+
+ 	/*Cleanup*/
+   delete vecdHdx;
+   delete vecdHdy;
+   delete vectotalweight;
+   xDelete<IssmDouble>(H);
+   xDelete<IssmDouble>(GradH);
+   xDelete<IssmDouble>(totalweight);
+   xDelete<int>(elem_vertices);
+}
+/*}}}*/
+void FemModel::ThicknessZZErrorEstimator(IssmDouble** pelementerror){/*{{{*/
+   /*Compute the Zienkiewicz and Zhu (ZZ) error estimator for the thickness
+    * Ref.: Zienkiewicz and Zhu, A Simple Error Estimator and Adaptive Procedure for Practical Engineering Analysis, Int. J. Numer. Meth. Eng, 1987*/
+
+   IssmDouble Jdet,error,fdHdx,fdHdy;
+   int sid;
+   int numnodes                     = this->GetElementsWidth();//just 2D mesh, tria elements, P1
+   int numberofelements             = this->elements->NumberOfElements();
+   IssmDouble* xyz_list             = NULL;
+   IssmDouble* smoothed_dHdx        = NULL;
+   IssmDouble* smoothed_dHdy        = NULL;
+   IssmDouble* H                    = xNew<IssmDouble>(numnodes);
+   IssmDouble* GradH                = xNew<IssmDouble>(2);
+   IssmDouble* basis                = xNew<IssmDouble>(numnodes);
+   int* elem_vertices               = xNew<int>(numnodes);
+   Vector<IssmDouble>* velementerror= new Vector<IssmDouble>(numberofelements);
+
+   /*Get smoothed deviatoric stress tensor*/
+   this->SmoothedGradThickness(&smoothed_dHdx,&smoothed_dHdy);
+
+	/*Integrate the error over elements*/
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+      element->GetInputListOnVertices(H,ThicknessEnum);
+      element->GetVerticesSidList(elem_vertices);
+      element->GetVerticesCoordinates(&xyz_list);
+      /*Get the gradient of thickness*/
+      Gauss* gaussH=element->NewGauss(1);
+      gaussH->GaussPoint(0);
+      element->ValueP1DerivativesOnGauss(GradH,H,xyz_list,gaussH);
+      /*Integrate*/
+      Gauss* gauss=element->NewGauss(2);
+      error=0.;
+		while(gauss->next()){
+         element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+         element->NodalFunctions(basis,gauss);
+         fdHdx=0;fdHdy=0;
+         for(int n=0;n<numnodes;n++) {
+            fdHdx+=(GradH[0]-smoothed_dHdx[elem_vertices[n]])*basis[n];
+            fdHdy+=(GradH[1]-smoothed_dHdy[elem_vertices[n]])*basis[n];
+         }
+         error+=Jdet*gauss->weight*(pow(fdHdx,2)+pow(fdHdy,2) ); //e^2
+      }
+      /*Set the error in the global vector*/
+      sid=element->Sid();
+		error = sqrt(error); //sqrt( e^2 )
+      velementerror->SetValue(sid,error,INS_VAL);
+      /*Cleanup intermediaries*/
+      xDelete<IssmDouble>(xyz_list);
+      delete gaussH;
+      delete gauss;
+   }
+
+   /*Assemble*/
+   velementerror->Assemble();
+
+   /*Serialize and set output*/
+   (*pelementerror)=velementerror->ToMPISerial();
+
+   /*Cleanup*/
+   xDelete<IssmDouble>(smoothed_dHdx);
+   xDelete<IssmDouble>(smoothed_dHdy);
+   xDelete<IssmDouble>(H);
+   xDelete<IssmDouble>(GradH);
+   xDelete<IssmDouble>(basis);
+   xDelete<int>(elem_vertices);
+   delete velementerror;
+}
+/*}}}*/
+void FemModel::MeanGroundedIceLevelSet(IssmDouble** pmasklevelset){/*{{{*/
+
+   int elementswidth                   = this->GetElementsWidth();
+   int numberofelements                = this->elements->NumberOfElements();
+   IssmDouble* elementlevelset         = xNew<IssmDouble>(elementswidth);
+   Vector<IssmDouble>* vmasklevelset   = new Vector<IssmDouble>(numberofelements);
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+      element->GetInputListOnVertices(elementlevelset,MaskOceanLevelsetEnum);
+      int sid = element->Sid();
+      vmasklevelset->SetValue(sid,(elementlevelset[0]+elementlevelset[1]+elementlevelset[2])/3.,INS_VAL);
+   }
+
+   /*Assemble*/
+   vmasklevelset->Assemble();
+
+   /*Serialize and set output*/
+   (*pmasklevelset)=vmasklevelset->ToMPISerial();
+
+   /*Cleanup*/
+   xDelete<IssmDouble>(elementlevelset);
+   delete vmasklevelset;
+}
+/*}}}*/
+void FemModel::GetElementCenterCoordinates(IssmDouble** pxc,IssmDouble** pyc){/*{{{*/
+
+	/*Intermediaries*/
+   int elementswidth          = this->GetElementsWidth();
+   int numberofelements       = this->elements->NumberOfElements();
+   int* elem_vertices			= xNew<int>(elementswidth);
+   Vector<IssmDouble>* vxc		= new Vector<IssmDouble>(numberofelements);
+   Vector<IssmDouble>* vyc		= new Vector<IssmDouble>(numberofelements);
+	IssmDouble* x					= NULL;
+	IssmDouble* y					= NULL;
+	IssmDouble* z					= NULL;
+	IssmDouble* xyz_list			= NULL;
+	IssmDouble x1,y1,x2,y2,x3,y3;
+
+	/*Insert the element center coordinates*/
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+      //element->GetVerticesSidList(elem_vertices);
+      int sid = element->Sid();
+		element->GetVerticesCoordinates(&xyz_list);
+		x1 = xyz_list[3*0+0];y1 = xyz_list[3*0+1];
+		x2 = xyz_list[3*1+0];y2 = xyz_list[3*1+1];
+		x3 = xyz_list[3*2+0];y3 = xyz_list[3*2+1];
+		vxc->SetValue(sid,(x1+x2+x3)/3.,INS_VAL);
+      vyc->SetValue(sid,(y1+y2+y3)/3.,INS_VAL);
+   }
+
+   /*Assemble*/
+   vxc->Assemble();
+   vyc->Assemble();
+
+   /*Serialize and set output*/
+   (*pxc)=vxc->ToMPISerial();
+   (*pyc)=vyc->ToMPISerial();
+
+   /*Cleanup*/
+	xDelete<IssmDouble>(x);
+	xDelete<IssmDouble>(y);
+	xDelete<IssmDouble>(z);
+	xDelete<IssmDouble>(xyz_list);
+   xDelete<int>(elem_vertices);
+   delete vxc;
+   delete vyc;
+}
+/*}}}*/
+void FemModel::GetZeroLevelSetPoints(IssmDouble** pzerolevelset_points,int &numberofpoints,int levelset_type){/*{{{*/
+
+	/*Here, "zero level set" means grounding line or ice front, depending on the level set type*/
+	/*pzerolevelset_points are the element center points with zero level set. X and Y coords*/
+	if(levelset_type!=MaskOceanLevelsetEnum && levelset_type!=MaskIceLevelsetEnum){
+		_error_("level set type not implemented yet!");
+	}
+
+	/*Outputs*/
+	IssmDouble* zerolevelset_points			= NULL;
+	int npoints										= 0;
+
+	/*Intermediaries*/
+ 	int elementswidth                   	= this->GetElementsWidth();
+   int numberofelements                	= this->elements->NumberOfElements();
+	int* elem_vertices         				= xNew<int>(elementswidth);
+   IssmDouble* levelset      					= xNew<IssmDouble>(elementswidth);
+   IssmDouble* xyz_list							= NULL;
+	Vector<IssmDouble>* vx_zerolevelset		= new Vector<IssmDouble>(numberofelements);
+	Vector<IssmDouble>* vy_zerolevelset		= new Vector<IssmDouble>(numberofelements);
+	IssmDouble* x_zerolevelset					= NULL;
+	IssmDouble* y_zerolevelset					= NULL;
+	int count,sid;
+	IssmDouble xc,yc,x1,y1,x2,y2,x3,y3;
+
+	/*Use the element center coordinate if level set is zero (grounding line or ice front), otherwise set NAN*/
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+      element->GetInputListOnVertices(levelset,levelset_type);
+		element->GetVerticesSidList(elem_vertices);
+		sid= element->Sid();
+		element->GetVerticesCoordinates(&xyz_list);
+		x1 = xyz_list[3*0+0];y1 = xyz_list[3*0+1];
+		x2 = xyz_list[3*1+0];y2 = xyz_list[3*1+1];
+		x3 = xyz_list[3*2+0];y3 = xyz_list[3*2+1];
+		xc	= NAN;
+		yc	= NAN;
+     	Tria* tria 	= xDynamicCast<Tria*>(element);
+		if(tria->IsIceInElement()){/*verify if there is ice in the element*/
+			if(levelset[0]*levelset[1]<0. || levelset[0]*levelset[2]<0. ||
+				abs(levelset[0]*levelset[1])<DBL_EPSILON || abs(levelset[0]*levelset[2])<DBL_EPSILON) {
+				xc=(x1+x2+x3)/3.;
+				yc=(y1+y2+y3)/3.;
+			}
+		}
+		vx_zerolevelset->SetValue(sid,xc,INS_VAL);
+		vy_zerolevelset->SetValue(sid,yc,INS_VAL);
+		xDelete<IssmDouble>(xyz_list);
+	}
+   /*Assemble and serialize*/
+   vx_zerolevelset->Assemble();
+   vy_zerolevelset->Assemble();
+   x_zerolevelset=vx_zerolevelset->ToMPISerial();
+   y_zerolevelset=vy_zerolevelset->ToMPISerial();
+
+	/*Find the number of points*/
+	npoints=0;
+	for(int i=0;i<numberofelements;i++) if(!xIsNan<IssmDouble>(x_zerolevelset[i])) npoints++;
+
+	/*Keep just the element center coordinates with zero level set (compact the structure)*/
+	zerolevelset_points=xNew<IssmDouble>(2*npoints);//x and y
+	count=0;
+	for(int i=0;i<numberofelements;i++){
+		if(!xIsNan<IssmDouble>(x_zerolevelset[i])){
+			zerolevelset_points[2*count]	 = x_zerolevelset[i];
+			zerolevelset_points[2*count+1] = y_zerolevelset[i];
+			count++;
+		}
+	}
+
+	/*Assign outputs*/
+	numberofpoints				= npoints;
+	(*pzerolevelset_points) = zerolevelset_points;
+
+	/*Cleanup*/
+   xDelete<int>(elem_vertices);
+   xDelete<IssmDouble>(levelset);
+	xDelete<IssmDouble>(x_zerolevelset);
+	xDelete<IssmDouble>(y_zerolevelset);
+   xDelete<IssmDouble>(xyz_list);
+	delete vx_zerolevelset;
+	delete vy_zerolevelset;
+}
+/*}}}*/
+#endif
+
+#ifdef  _HAVE_DAKOTA_
+void FemModel::DakotaResponsesx(double* d_responses,char** responses_descriptors,int numresponsedescriptors,int d_numresponses){/*{{{*/
+
+	/*intermediary: */
+	int    i,j;
+	char   root[50];
+	int    index;
+	double femmodel_response;
+	int    flag;
+	double *vertex_response   = NULL;
+	double *qmu_response      = NULL;
+	double *responses_pointer = NULL;
+
+	IssmDouble **response_partitions         = NULL;
+	IssmDouble * response_partition         = NULL;
+	int * response_partitions_npart         = NULL;
+	int          response_partitions_num;
+	int          npart;
+
+	/*retrieve partition vectors for responses that are scaled:*/
+	this->parameters->FindParam(&response_partitions,&response_partitions_num,NULL,NULL,QmuResponsePartitionsEnum);
+	this->parameters->FindParam(&response_partitions_npart,NULL,NULL,QmuResponsePartitionsNpartEnum);
+
+	/*retrieve my_rank: */
+	int my_rank=IssmComm::GetRank();
+
+	/*save the d_responses pointer: */
+	responses_pointer=d_responses;
+
+	//watch out, we have more d_numresponses than numresponsedescriptors, because the responses have been expanded if they were scaled.
+	//because we don't know the d_responses descriptors (the scaled ones) we can't key off them, so we will key off the responses_descriptors: */
+
+	for(i=0;i<numresponsedescriptors;i++){
+
+		flag=DescriptorIndex(root,&index,responses_descriptors[i]);
+
+		if(flag==ScaledEnum){
+
+			/*this response was scaled. pick up the response from the inputs: */
+			GetVectorFromInputsx(&vertex_response,this, StringToEnumx(root),VertexPIdEnum);
+
+			/*recover partition vector: */
+			response_partition=response_partitions[i];
+			npart=response_partitions_npart[i];
+
+			/*Now, average it onto the partition nodes: */
+			AverageOntoPartitionx(&qmu_response,elements,nodes,vertices,loads,materials,parameters,vertex_response,response_partition,npart);
+
+			/*Copy onto our dakota responses: */
+			if(my_rank==0){
+				/*plug response: */
+				for(j=0;j<npart;j++)responses_pointer[j]=qmu_response[j];
+
+				/*increment response_pointer :*/
+				responses_pointer+=npart;
+			}
+
+			/*Free resources:*/
+			xDelete<double>(vertex_response);
+			xDelete<double>(qmu_response);
+
+		}
+		else if (flag==IndexedEnum){
+
+			/*indexed response: plug index into parameters and call response module: */
+			parameters->SetParam(index,IndexEnum);
+
+			this->Responsex(&femmodel_response,root);
+
+			if(my_rank==0){
+				/*plug response: */
+				responses_pointer[0]=femmodel_response;
+
+				/*increment response_pointer :*/
+				responses_pointer++;
+			}
+		}
+		else if (flag==NodalEnum){
+			_error_("nodal response functions not supported yet!");
+
+			/*increment response_pointer :*/
+			responses_pointer++;
+		}
+		else if (flag==RegularEnum){
+
+			/*perfectly normal response function: */
+			this->Responsex(&femmodel_response,root);
+
+			if(my_rank==0){
+				/*plug response: */
+				responses_pointer[0]=femmodel_response;
+
+				/*increment response_pointer :*/
+				responses_pointer++;
+			}
+		}
+		else _error_("flag type " << flag << " not supported yet for response analysis");
+	}
+
+	/*Synthesize echo: {{{*/
+	if(my_rank==0){
+		_printf_("   responses: " << d_numresponses << ": ");
+		for(i=0;i<d_numresponses-1;i++)_printf_(d_responses[i] << "|");
+		_printf_(d_responses[d_numresponses-1]);
+		_printf_("\n");
+	}
+	/*}}}*/
+
+	/*Free resources:*/
+	for(i=0;i<response_partitions_num;i++){
+		IssmDouble* matrix=response_partitions[i];
+		xDelete<IssmDouble>(matrix);
+	}
+	xDelete<IssmDouble*>(response_partitions);
+
+}
+/*}}}*/
+#endif
+#ifdef _HAVE_ESA_
+void FemModel::EsaGeodetic2D(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pX, Vector<IssmDouble>* pY, IssmDouble* xx, IssmDouble* yy){/*{{{*/
+
+	int         ns,nsmax;
+
+	/*Go through elements, and add contribution from each element to the deflection vector wg:*/
+	ns = elements->Size();
+
+	/*Figure out max of ns: */
+	ISSM_MPI_Reduce(&ns,&nsmax,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
+	ISSM_MPI_Bcast(&nsmax,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Call the esa geodetic core: */
+	for(int i=0;i<nsmax;i++){
+		if(i<ns){
+			Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+			element->EsaGeodetic2D(pUp,pNorth,pEast,pX,pY,xx,yy);
+		}
+		if(i%100==0){
+			pUp->Assemble();
+			pNorth->Assemble();
+			pEast->Assemble();
+			pX->Assemble();
+			pY->Assemble();
+		}
+	}
+
+	/*One last time: */
+	pUp->Assemble();
+	pNorth->Assemble();
+	pEast->Assemble();
+	pX->Assemble();
+	pY->Assemble();
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(xx);
+	xDelete<IssmDouble>(yy);
+}
+/*}}}*/
+void FemModel::EsaGeodetic3D(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){/*{{{*/
+
+	int         ns,nsmax;
+
+	/*Go through elements, and add contribution from each element to the deflection vector wg:*/
+	ns = elements->Size();
+
+	/*Figure out max of ns: */
+	ISSM_MPI_Reduce(&ns,&nsmax,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
+	ISSM_MPI_Bcast(&nsmax,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Call the esa geodetic core: */
+	for(int i=0;i<nsmax;i++){
+		if(i<ns){
+			Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+			element->EsaGeodetic3D(pUp,pNorth,pEast,latitude,longitude,radius,xx,yy,zz);
+		}
+		if(i%100==0){
+			pUp->Assemble();
+			pNorth->Assemble();
+			pEast->Assemble();
+		}
+	}
+
+	/*One last time: */
+	pUp->Assemble();
+	pNorth->Assemble();
+	pEast->Assemble();
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(latitude);
+	xDelete<IssmDouble>(longitude);
+	xDelete<IssmDouble>(radius);
+	xDelete<IssmDouble>(xx);
+	xDelete<IssmDouble>(yy);
+	xDelete<IssmDouble>(zz);
+}
+/*}}}*/
+#endif
+void FemModel::HydrologyEPLupdateDomainx(IssmDouble* pEplcount){ /*{{{*/
+
+	Vector<IssmDouble> *mask = NULL;
+	Vector<IssmDouble> *recurence = NULL;
+	Vector<IssmDouble> *active = NULL;
+	IssmDouble         *serial_mask       = NULL;
+	IssmDouble         *serial_rec        = NULL;
+	IssmDouble         *serial_active     = NULL;
+	IssmDouble         *old_active        = NULL;
+	int                *eplzigzag_counter = NULL;
+	int                 eplflip_lock;
+
+	HydrologyDCEfficientAnalysis   *effanalysis  = new HydrologyDCEfficientAnalysis();
+	HydrologyDCInefficientAnalysis *inefanalysis = new HydrologyDCInefficientAnalysis();
+
+	/*Step 1: update mask, the mask might be extended by residual and/or using downstream sediment head*/
+	int numnodes = this->nodes->NumberOfNodes();
+	mask=new Vector<IssmDouble>(numnodes);
+	recurence=new Vector<IssmDouble>(numnodes);
+	this->parameters->FindParam(&eplzigzag_counter,NULL,EplZigZagCounterEnum);
+	this->parameters->FindParam(&eplflip_lock,HydrologydcEplflipLockEnum);
+	GetVectoronBaseFromInputsx(&old_active,this,HydrologydcMaskEplactiveNodeEnum,NodeSIdEnum);
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		effanalysis->HydrologyEPLGetMask(mask,recurence,element);
+	}
+
+	/*check for changes and increment zigzag counter, change the mask if necessary*/
+	recurence->Assemble();
+	serial_rec=recurence->ToMPISerial();
+	for(Object* & object : this->nodes->objects){
+		Node* node = xDynamicCast<Node*>(object);
+		if(serial_rec[node->Sid()]==1.)eplzigzag_counter[node->Lid()] ++;
+		if(eplzigzag_counter[node->Lid()]>eplflip_lock && eplflip_lock!=0){
+			mask->SetValue(node->Sid(),old_active[node->Sid()],INS_VAL);
+		}
+	}
+	this->parameters->SetParam(eplzigzag_counter,this->nodes->Size(),EplZigZagCounterEnum);
+	/*Assemble and serialize*/
+	mask->Assemble();
+	serial_mask=mask->ToMPISerial();
+
+	xDelete<int>(eplzigzag_counter);
+	xDelete<IssmDouble>(serial_rec);
+	xDelete<IssmDouble>(old_active);
+	delete mask;
+	delete recurence;
+
+	/*Update Mask*/
+	InputUpdateFromVectorx(this,serial_mask,HydrologydcMaskEplactiveNodeEnum,NodeSIdEnum);
+	xDelete<IssmDouble>(serial_mask);
+	inefanalysis->ElementizeEplMask(this);
+	/*Step 2: update node activity. If one element is connected to mask=1, all nodes are active*/
+	active=new Vector<IssmDouble>(nodes->NumberOfNodes());
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		effanalysis->HydrologyEPLGetActive(active,element);
+	}
+
+	/*Assemble and serialize*/
+	active->Assemble();
+	serial_active=active->ToMPISerial();
+	delete active;
+
+	/*Update node activation accordingly*/
+	int         counter  = 0; //this is probably not acurate but we are only interested in positivity
+	Element*    basalelement=NULL;
+	int         domaintype;
+	this->parameters->FindParam(&domaintype,DomainTypeEnum);
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		switch(domaintype){
+			case Domain2DhorizontalEnum:
+				basalelement = element;
+				break;
+			case Domain3DEnum:
+				if(!element->IsOnBase()) continue;
+				basalelement = element->SpawnBasalElement();
+				break;
+			default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+		}
+
+		int         numnodes = basalelement->GetNumberOfNodes();
+		IssmDouble *base     = xNew<IssmDouble>(numnodes);
+		basalelement->GetInputListOnNodes(&base[0],BaseEnum);
+		for(int in=0;in<numnodes;in++){
+			Node* node=basalelement->GetNode(in);
+			if(serial_active[node->Sid()]==1.){
+				node->Activate();
+				if(!node->IsClone()) counter++;
+			}
+			else{
+				node->Deactivate();
+				node->ApplyConstraint(0,base[in]);
+			}
+		}
+		xDelete<IssmDouble>(base);
+		if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	}
+	xDelete<IssmDouble>(serial_active);
+	delete effanalysis;
+	delete inefanalysis;
+	int sum_counter;
+	ISSM_MPI_Reduce(&counter,&sum_counter,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&sum_counter,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	counter=sum_counter;
+	*pEplcount = counter;
+	if(VerboseSolution()) {
+		if(counter==0){
+			_printf0_("   No nodes are active in EPL layer \n");
+		}
+		else {
+			_printf0_("   Some active nodes in EPL layer \n");
+		}
+	}
+
+	/*Update dof indexings*/
+	this->UpdateConstraintsx();
+}
+/*}}}*/
+void FemModel::HydrologyIDSupdateDomainx(IssmDouble* pIDScount){ /*{{{*/
+
+	bool                isthermal;
+	Vector<IssmDouble>* mask				= NULL;
+	Vector<IssmDouble>* active				= NULL;
+	IssmDouble*         serial_mask	= NULL;
+	IssmDouble*         serial_active	= NULL;
+
+	HydrologyDCInefficientAnalysis* inefanalysis =  new HydrologyDCInefficientAnalysis();
+	parameters->FindParam(&isthermal,TransientIsthermalEnum);
+
+	/*When solving a thermal model we update the thawed nodes*/
+	if(isthermal){
+		/*Step 1: update mask, the mask correspond to thawed nodes (that have a meltingrate)*/
+		mask=new Vector<IssmDouble>(this->nodes->NumberOfNodes());
+
+		for(Object* & object : this->elements->objects){
+			Element* element = xDynamicCast<Element*>(object);
+			inefanalysis->HydrologyIDSGetMask(mask,element);
+		}
+		/*Assemble and serialize*/
+		mask->Assemble();
+		serial_mask=mask->ToMPISerial();
+		delete mask;
+	}
+	/*for other cases we just grab the mask from the initialisation value*/
+	else{
+		GetVectoronBaseFromInputsx(&serial_mask,this,HydrologydcMaskThawedNodeEnum,NodeSIdEnum);
+	}
+	/*Update Mask and elementize*/
+	InputUpdateFromVectorx(this,serial_mask,HydrologydcMaskThawedNodeEnum,NodeSIdEnum);
+	xDelete<IssmDouble>(serial_mask);
+	inefanalysis->ElementizeIdsMask(this);
+
+	/*get node mask coherent with element mask*/
+	active=new Vector<IssmDouble>(nodes->NumberOfNodes());
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		inefanalysis->HydrologyIdsGetActive(active,element);
+	}
+
+	/*Assemble and serialize*/
+	active->Assemble();
+	serial_active=active->ToMPISerial();
+	delete active;
+
+	/*Update node activation accordingly*/
+	int         counter  = 0; //this is probably not acurate but we are only interested in positivity
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		int         numnodes = element->GetNumberOfNodes();
+		IssmDouble *base     = xNew<IssmDouble>(numnodes);
+
+		element->GetInputListOnNodes(&base[0],BaseEnum);
+
+		for(int in=0;in<numnodes;in++){
+			Node* node=element->GetNode(in);
+			if(serial_active[node->Sid()]==1.){
+				node->Activate();
+				if(!node->IsClone()) counter++;
+			}
+			else{
+				node->Deactivate();
+				node->ApplyConstraint(0,base[in]);
+			}
+		}
+		xDelete<IssmDouble>(base);
+	}
+	xDelete<IssmDouble>(serial_active);
+	delete inefanalysis;
+	int sum_counter;
+	ISSM_MPI_Reduce(&counter,&sum_counter,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&sum_counter,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	counter=sum_counter;
+	*pIDScount = counter;
+	if(VerboseSolution()) {
+		if(counter==0){
+			_printf0_("   No nodes are active in IDS layer \n");
+		}
+		else {
+			_printf0_("   Some active nodes in IDS layer \n");
+		}
+	}
+	/*Update dof indexings*/
+	this->UpdateConstraintsx();
+
+}
+/*}}}*/
+void FemModel::UpdateConstraintsL2ProjectionEPLx(IssmDouble* pL2count){ /*{{{*/
+
+	Vector<IssmDouble>* active        = NULL;
+	IssmDouble*         serial_active = NULL;
+	HydrologyDCEfficientAnalysis* effanalysis = new HydrologyDCEfficientAnalysis();
+
+	/*update node activity. If one element is connected to mask=1, all nodes are active*/
+	this->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
+	active=new Vector<IssmDouble>(nodes->NumberOfNodes());
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		effanalysis->HydrologyEPLGetActive(active,element);
+	}
+
+	/*Assemble and serialize*/
+	active->Assemble();
+	serial_active=active->ToMPISerial();
+	delete active;
+	delete effanalysis;
+
+	/*Update node activation accordingly*/
+	int counter =0;
+	this->SetCurrentConfiguration(L2ProjectionEPLAnalysisEnum);
+	for(Object* & object : this->nodes->objects){
+		Node* node = xDynamicCast<Node*>(object);
+		if(serial_active[node->Sid()]==1.){
+			node->Activate();
+			if(!node->IsClone()) counter++;
+		}
+		else{
+			node->Deactivate();
+		}
+	}
+	xDelete<IssmDouble>(serial_active);
+	int sum_counter;
+	ISSM_MPI_Reduce(&counter,&sum_counter,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&sum_counter,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	counter=sum_counter;
+	*pL2count = counter;
+	if(VerboseSolution()) _printf0_("   Number of active nodes L2 Projection: "<< counter <<"\n");
+}
+/*}}}*/
+void FemModel::InitTransientInputx(int* transientinput_enum,int numoutputs){ /*{{{*/
+
+	for(int i=0;i<numoutputs;i++){
+		this->inputs->DeleteInput(transientinput_enum[i]);
+		this->inputs->SetTransientInput(transientinput_enum[i],NULL,0);
+		/*We need to configure this input!*/
+		TransientInput* transientinput = this->inputs->GetTransientInput(transientinput_enum[i]); _assert_(transientinput);
+		transientinput->Configure(this->parameters);
+	}
+}
+/*}}}*/
+void FemModel::StackTransientInputx(int* input_enum,int* transientinput_enum,IssmDouble subtime,int numoutputs){ /*{{{*/
+
+  for(int i=0;i<numoutputs;i++){
+		if(input_enum[i]<0){
+			_error_("Can't deal with non enum fields for result Stack");
+		}
+		else{
+			for(Object* & object : this->elements->objects){
+				/*Get the right transient input*/
+				Element* element = xDynamicCast<Element*>(object);
+				TransientInput* transientinput = this->inputs->GetTransientInput(transientinput_enum[i]);
+
+				/*Get values and lid list*/
+				const int   numvertices = element->GetNumberOfVertices();
+				IssmDouble* values=xNew<IssmDouble>(numvertices);
+				int        *vertexlids = xNew<int>(numvertices);
+				element->GetInputListOnVertices(&values[0],input_enum[i]);   //this is the enum to stack
+
+				element->GetVerticesLidList(vertexlids);
+
+				switch(element->ObjectEnum()){
+					case TriaEnum:  transientinput->AddTriaTimeInput(subtime,numvertices,vertexlids,values,P1Enum); break;
+					case PentaEnum: transientinput->AddPentaTimeInput(subtime,numvertices,vertexlids,values,P1Enum); break;
+					default: _error_("Not implemented yet");
+				}
+				xDelete<IssmDouble>(values);
+				xDelete<int>(vertexlids);
+			}
+		}
+	}
+}
+/*}}}*/
+void FemModel::StackTransientInputonBasex(int* input_enum,int* transientinput_enum,IssmDouble subtime,int numoutputs){ /*{{{*/
+
+	Element*   basalelement=NULL;
+	int      domaintype;
+	this->parameters->FindParam(&domaintype,DomainTypeEnum);
+
+	for(int i=0;i<numoutputs;i++){
+		if(input_enum[i]<0){
+			_error_("Can't deal with non enum fields for result Stack");
+		}
+		else{
+			for(Object* & object : this->elements->objects){
+				/*Get the right transient input*/
+				Element* element = xDynamicCast<Element*>(object);
+				/*Get basal element*/
+				switch(domaintype){
+					case Domain2DhorizontalEnum:
+						break;
+					case Domain3DEnum:
+						if(!element->IsOnBase()) continue;
+						break;
+					default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+				}
+				/*Get values and lid list*/
+				TransientInput* transientinput = this->inputs->GetTransientInput(transientinput_enum[i]);
+				const int   numvertices = element->GetNumberOfVertices();
+				IssmDouble* values      = xNew<IssmDouble>(numvertices);
+				int        *vertexlids  = xNew<int>(numvertices);
+				switch(domaintype){
+					case Domain2DhorizontalEnum:
+						element->GetInputListOnVertices(&values[0],input_enum[i]); //this is the enum to stack
+						element->GetVerticesLidList(vertexlids);
+						transientinput->AddTriaTimeInput(subtime,numvertices,vertexlids,values,P1Enum);
+						break;
+					case Domain3DEnum:{
+						element->GetInputListOnVertices(&values[0],input_enum[i]); //this is the enum to stack
+						element->GetVerticesLidList(vertexlids);
+						Penta* penta=xDynamicCast<Penta*>(object);
+						for(;;){
+							transientinput->AddPentaTimeInput(subtime,numvertices,vertexlids,values,P1Enum);
+							if (penta->IsOnSurface()) break;
+							penta=penta->GetUpperPenta(); _assert_(penta->Id()!=element->id);
+							penta->GetVerticesLidList(vertexlids);
+						}
+						break;
+					}
+					default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+				}
+				xDelete<IssmDouble>(values);
+				xDelete<int>(vertexlids);
+			}
+		}
+	}
+}
+/*}}}*/
+void FemModel::AverageTransientInputx(int* transientinput_enum,int* averagedinput_enum,IssmDouble init_time,IssmDouble end_time,int numoutputs, int averaging_method){ /*{{{*/
+
+	for(int i=0;i<numoutputs;i++){
+		for(Object* & object : this->elements->objects){
+			Element* element = xDynamicCast<Element*>(object);
+			element->CreateInputTimeAverage(transientinput_enum[i],averagedinput_enum[i],init_time,end_time,averaging_method);
+		}
+	}
+}/*}}}*/
+void FemModel::AverageTransientInputonBasex(int* transientinput_enum,int* averagedinput_enum,IssmDouble init_time,IssmDouble end_time,int numoutputs, int averaging_method){ /*{{{*/
+
+	int      domaintype;
+	this->parameters->FindParam(&domaintype,DomainTypeEnum);
+
+	for(int i=0;i<numoutputs;i++){
+		for(Object* & object : this->elements->objects){
+			Element* element = xDynamicCast<Element*>(object);
+			/*Get basal element*/
+			switch(domaintype){
+				case Domain2DhorizontalEnum:
+					element->CreateInputTimeAverage(transientinput_enum[i],averagedinput_enum[i],init_time,end_time,averaging_method);;
+					break;
+				case Domain3DEnum:
+					if(!element->IsOnBase()) continue;
+					element->CreateInputTimeAverage(transientinput_enum[i],averagedinput_enum[i],init_time,end_time,averaging_method);
+					break;
+				default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+			}
+		}
+	}
+}/*}}}*/
+#ifdef _HAVE_JAVASCRIPT_
+FemModel::FemModel(IssmDouble* buffer, int buffersize, char* toolkits, char* solution, char* modelname,ISSM_MPI_Comm incomm, bool trace){ /*{{{*/
+	/*configuration: */
+	int  solution_type;
+	int  ierr;
+
+	/*First things first, store the communicator, and set it as a global variable: */
+	IssmComm::SetComm(incomm);
+
+	/*Start profiler: */
+	this->profiler=new Profiler();
+	profiler->Start(TOTAL);
+
+	/*From command line arguments, retrieve different filenames needed to create the FemModel: */
+	solution_type=StringToEnumx(solution);
+
+	/*Create femmodel from input files: */
+	profiler->Start(MPROCESSOR);
+	this->InitFromBuffers((char*)buffer,buffersize,toolkits, solution_type,trace,NULL);
+	profiler->Stop(MPROCESSOR);
+
+	/*Save communicator in the parameters dataset: */
+	this->parameters->AddObject(new GenericParam<ISSM_MPI_Comm>(incomm,FemModelCommEnum));
+
+}
+/*}}}*/
+void FemModel::CleanUpJs(char** poutput, size_t* psize){/*{{{*/
+
+	/*Intermediary*/
+	FILE *output_fid;
+	GenericParam<char**>* outputbufferparam=NULL;
+	GenericParam<size_t*>* outputbuffersizeparam=NULL;
+	char** poutputbuffer;
+	size_t* poutputbuffersize;
+
+	/*Before we delete the profiler, report statistics for this run: */
+	profiler->Stop(TOTAL);  //final tagging
+	_printf0_("\n");
+	_printf0_("   "<<setw(40)<<left<<"FemModel initialization elapsed time:"<<profiler->TotalTime(MPROCESSOR) << "\n");
+	_printf0_("   "<<setw(40)<<left<<"Core solution elapsed time:"<<profiler->TotalTime(CORE) << "\n");
+	_printf0_("\n");
+	_printf0_("   Total elapsed time: "
+				<<profiler->TotalTimeModHour(TOTAL)<<" hrs "
+				<<profiler->TotalTimeModMin(TOTAL)<<" min "
+				<<profiler->TotalTimeModSec(TOTAL)<<" sec"
+				);
+	_printf0_("\n");
+
+	/*Before we close the output file, recover the buffer and size:*/
+	outputbufferparam = xDynamicCast<GenericParam<char**>*>(this->parameters->FindParamObject(OutputBufferPointerEnum));
+	poutputbuffer=outputbufferparam->GetParameterValue();
+	outputbuffersizeparam = xDynamicCast<GenericParam<size_t*>*>(this->parameters->FindParamObject(OutputBufferSizePointerEnum));
+	poutputbuffersize=outputbuffersizeparam->GetParameterValue();
+
+	/*Assign output values: */
+	*poutput=*poutputbuffer;
+	*psize=*poutputbuffersize;
+}
+/*}}}*/
+void FemModel::InitFromBuffers(char* buffer, int buffersize, char* toolkits, int in_solution_type, bool trace, IssmPDouble* X){/*{{{*/
+
+	/*intermediary*/
+	FILE       *IOMODEL = NULL;
+	FILE       *toolkitsoptionsfid = NULL;
+	FILE       *output_fid = NULL;
+	int         my_rank;
+	size_t      outputsize;
+	char       *outputbuffer;
+	const char *rootpath = "";   //needed for Dakota runs only, which we won't do here.
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	/*Open input file descriptor on cpu 0: */
+	if(my_rank==0) IOMODEL = fmemopen((void*)buffer, buffersize, "rb");
+
+	/*Open toolkits file descriptor: */
+	toolkitsoptionsfid=fmemopen((void*)toolkits, strlen(toolkits)+1, "r");
+
+	/*Now, go create FemModel:*/
+	this->InitFromFids((char*)rootpath,IOMODEL,toolkitsoptionsfid,in_solution_type,trace,X);
+
+	/*Close input file and toolkits file descriptors: */
+	if(my_rank==0) fclose(IOMODEL);
+	fclose(toolkitsoptionsfid);
+
+	/*Open output file once for all and add output file descriptor to parameters*/
+	output_fid=open_memstream(&outputbuffer,&outputsize);
+	if(output_fid==NULL)_error_("could not initialize output stream");
+	this->parameters->SetParam(output_fid,OutputFilePointerEnum);
+	this->parameters->AddObject(new GenericParam<char**>(&outputbuffer,OutputBufferPointerEnum));
+	this->parameters->AddObject(new GenericParam<size_t*>(&outputsize,OutputBufferSizePointerEnum));
+
+}/*}}}*/
+#endif
+
+#if defined(_HAVE_BAMG_) && !defined(_HAVE_AD_)
+void FemModel::ReMeshBamg(int* pnewnumberofvertices,int* pnewnumberofelements,IssmDouble** pnewx,IssmDouble** pnewy,IssmDouble** pnewz,int** pnewelementslist){/*{{{*/
+
+	/*Output*/
+	IssmDouble *newx			= NULL;
+	IssmDouble *newy			= NULL;
+	IssmDouble *newz			= NULL;
+	IssmDouble *newxylist   = NULL;
+	int *newelementslist		= NULL;
+	int* newdatalist        = NULL;
+	int newnumberofvertices	= -1;
+	int newnumberofelements = -1;
+
+	/*Get Rank*/
+	int my_rank	= IssmComm::GetRank();
+
+	/*Intermediaries*/
+	int numberofvertices 				= this->vertices->NumberOfVertices();
+	IssmDouble* vector_serial			= NULL;
+	IssmDouble* hmaxvertices_serial	= NULL;
+	Vector<IssmDouble> *vector			= NULL;
+
+	/*Get vector to create metric*/
+	if(this->amrbamg->fieldenum!=NoneEnum){
+		GetVectorFromInputsx(&vector,this,this->amrbamg->fieldenum,VertexSIdEnum);
+		vector->Assemble();
+		vector_serial = vector->ToMPISerial();
+	}
+
+	/*Get hmaxVertices to create metric*/
+	if(this->amrbamg->groundingline_distance>0||this->amrbamg->icefront_distance>0||
+		this->amrbamg->thicknesserror_threshold>0||this->amrbamg->deviatoricerror_threshold>0){
+		/*Initialize hmaxvertices with NAN*/
+		hmaxvertices_serial=xNew<IssmDouble>(numberofvertices);
+		for(int i=0;i<numberofvertices;i++) hmaxvertices_serial[i]=NAN;
+		/*Fill hmaxvertices*/
+		if(this->amrbamg->thicknesserror_threshold>0)	this->GethmaxVerticesFromEstimators(hmaxvertices_serial,ThicknessErrorEstimatorEnum);
+		if(this->amrbamg->deviatoricerror_threshold>0)	this->GethmaxVerticesFromEstimators(hmaxvertices_serial,DeviatoricStressErrorEstimatorEnum);
+		if(this->amrbamg->groundingline_distance>0)		this->GethmaxVerticesFromZeroLevelSetDistance(hmaxvertices_serial,MaskOceanLevelsetEnum);
+		if(this->amrbamg->icefront_distance>0)				this->GethmaxVerticesFromZeroLevelSetDistance(hmaxvertices_serial,MaskIceLevelsetEnum);
+	}
+
+	if(my_rank==0){
+		this->amrbamg->ExecuteRefinementBamg(vector_serial,hmaxvertices_serial,&newdatalist,&newxylist,&newelementslist);
+		if(newdatalist[0]<=0 || newdatalist[1]<=0) _error_("Error in the refinement process.");
+	}
+
+   /*Send new mesh to others CPU's*/
+   if(my_rank) newdatalist=xNew<int>(2);
+   ISSM_MPI_Bcast(newdatalist,2,ISSM_MPI_INT,0,IssmComm::GetComm());
+   newnumberofvertices=newdatalist[0];
+   newnumberofelements=newdatalist[1];
+   if(my_rank){
+      newxylist      =xNew<IssmDouble>(newnumberofvertices*2);
+      newelementslist=xNew<int>(newnumberofelements*this->GetElementsWidth());
+   }
+   ISSM_MPI_Bcast(newxylist,newnumberofvertices*2,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+   ISSM_MPI_Bcast(newelementslist,newnumberofelements*this->GetElementsWidth(),ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Reorganize the data*/
+   newx=xNew<IssmDouble>(newnumberofvertices);
+   newy=xNew<IssmDouble>(newnumberofvertices);
+   newz=xNewZeroInit<IssmDouble>(newnumberofvertices);
+   for(int i=0;i<newnumberofvertices;i++){
+      newx[i] = newxylist[2*i];
+      newy[i] = newxylist[2*i+1];
+   }
+
+   /*Assign output pointers*/
+   *pnewnumberofvertices = newnumberofvertices;
+   *pnewnumberofelements = newnumberofelements;
+   *pnewx = newx;
+   *pnewy = newy;
+   *pnewz = newz;
+   *pnewelementslist = newelementslist;
+
+   /*Cleanup*/
+   xDelete<int>(newdatalist);
+   xDelete<IssmDouble>(newxylist);
+   xDelete<IssmDouble>(vector_serial);
+   xDelete<IssmDouble>(hmaxvertices_serial);
+   delete vector;
+}
+/*}}}*/
+void FemModel::InitializeAdaptiveRefinementBamg(void){/*{{{*/
+
+	/*Define variables*/
+	int numberofvertices      = this->vertices->NumberOfVertices();
+	int numberofelements      = this->elements->NumberOfElements();
+	IssmDouble* x             = NULL;
+	IssmDouble* y             = NULL;
+	int* elements             = NULL;
+	IssmDouble hmin,hmax,err,gradation;
+
+   /*Get rank*/
+	int my_rank = IssmComm::GetRank();
+
+	/*Initialize field as NULL for now*/
+	this->amrbamg = NULL;
+
+	/*Get vertices coordinates of the coarse mesh (father mesh)*/
+	this->GetMesh(this->vertices,this->elements,&x,&y,&elements);
+
+	/*Create bamg data structures for bamg*/
+	this->amrbamg = new AmrBamg();
+
+	/*Get amr parameters*/
+	this->parameters->FindParam(&hmin,AmrHminEnum);
+	this->parameters->FindParam(&hmax,AmrHmaxEnum);
+	this->parameters->FindParam(&err,AmrErrEnum);
+	this->parameters->FindParam(&gradation,AmrGradationEnum);
+	this->parameters->FindParam(&this->amrbamg->fieldenum,AmrFieldEnum);
+	this->parameters->FindParam(&this->amrbamg->keepmetric,AmrKeepMetricEnum);
+	this->parameters->FindParam(&this->amrbamg->groundingline_resolution,AmrGroundingLineResolutionEnum);
+	this->parameters->FindParam(&this->amrbamg->groundingline_distance,AmrGroundingLineDistanceEnum);
+	this->parameters->FindParam(&this->amrbamg->icefront_resolution,AmrIceFrontResolutionEnum);
+	this->parameters->FindParam(&this->amrbamg->icefront_distance,AmrIceFrontDistanceEnum);
+	this->parameters->FindParam(&this->amrbamg->thicknesserror_resolution,AmrThicknessErrorResolutionEnum);
+	this->parameters->FindParam(&this->amrbamg->thicknesserror_threshold,AmrThicknessErrorThresholdEnum);
+	this->parameters->FindParam(&this->amrbamg->thicknesserror_groupthreshold,AmrThicknessErrorGroupThresholdEnum);
+	this->parameters->FindParam(&this->amrbamg->thicknesserror_maximum,AmrThicknessErrorMaximumEnum);
+	this->parameters->FindParam(&this->amrbamg->deviatoricerror_resolution,AmrDeviatoricErrorResolutionEnum);
+	this->parameters->FindParam(&this->amrbamg->deviatoricerror_threshold,AmrDeviatoricErrorThresholdEnum);
+	this->parameters->FindParam(&this->amrbamg->deviatoricerror_groupthreshold,AmrDeviatoricErrorGroupThresholdEnum);
+	this->parameters->FindParam(&this->amrbamg->deviatoricerror_maximum,AmrDeviatoricErrorMaximumEnum);
+
+	/*Set BamgOpts*/
+	this->amrbamg->SetBamgOpts(hmin,hmax,err,gradation);
+
+	/*Re-create original mesh and put it in bamg structure (only cpu 0)*/
+	this->amrbamg->SetMesh(&elements,&x,&y,&numberofvertices,&numberofelements);
+	if(my_rank==0){
+		this->amrbamg->Initialize();
+	}
+}
+/*}}}*/
+void FemModel::GethmaxVerticesFromZeroLevelSetDistance(IssmDouble* hmaxvertices,int levelset_type){/*{{{*/
+
+	if(!hmaxvertices) _error_("hmaxvertices is NULL!\n");
+
+	/*Intermediaries*/
+	int numberofvertices			 				= this->vertices->NumberOfVertices();
+   Vector<IssmDouble>* vminvertexdistance = new Vector<IssmDouble>(numberofvertices);
+	IssmDouble* pminvertexdistance 			= NULL;
+	IssmDouble* levelset_points				= NULL;
+	IssmDouble x,y;
+	IssmDouble threshold,resolution;
+	IssmDouble minvertexdistance,distance;
+	int sid,numberofpoints;
+
+	switch(levelset_type){
+		case MaskOceanLevelsetEnum:
+			threshold	= this->amrbamg->groundingline_distance;
+			resolution	= this->amrbamg->groundingline_resolution;
+			break;
+		case MaskIceLevelsetEnum:
+			threshold	= this->amrbamg->icefront_distance;
+			resolution	= this->amrbamg->icefront_resolution;
+			break;
+		default: _error_("not implemented yet");
+	}
+
+	/*Get points which level set is zero (center of elements with zero level set)*/
+   this->GetZeroLevelSetPoints(&levelset_points,numberofpoints,levelset_type);//levelset_points is serial (global)
+
+	for(Object* & object : this->vertices->objects){
+		Vertex* vertex = xDynamicCast<Vertex*>(object);
+      /*Attention: no spherical coordinates*/
+      x	= vertex->GetX();
+      y 	= vertex->GetY();
+      sid= vertex->Sid();
+		minvertexdistance=INFINITY;
+
+		/*Find the minimum vertex distance*/
+		for(int j=0;j<numberofpoints;j++){
+         distance=sqrt((x-levelset_points[2*j])*(x-levelset_points[2*j])+(y-levelset_points[2*j+1])*(y-levelset_points[2*j+1]));
+         minvertexdistance=min(distance,minvertexdistance);
+    	}
+		/*Now, insert in the vector*/
+		vminvertexdistance->SetValue(sid,minvertexdistance,INS_VAL);
+   }
+	/*Assemble*/
+   vminvertexdistance->Assemble();
+
+   /*Assign the pointer*/
+  	pminvertexdistance=vminvertexdistance->ToMPISerial();
+
+	/*Fill hmaxVertices*/
+	for(int i=0;i<numberofvertices;i++){
+		if(pminvertexdistance[i]<threshold){ //hmaxvertices is serial (global)
+			if(xIsNan<IssmDouble>(hmaxvertices[i])) hmaxvertices[i]=resolution;
+			else hmaxvertices[i]=min(resolution,hmaxvertices[i]);
+		}
+	}
+
+	/*Cleanup*/
+	xDelete<IssmDouble>(pminvertexdistance);
+   xDelete<IssmDouble>(levelset_points);
+   delete vminvertexdistance;
+}
+/*}}}*/
+void FemModel::GethmaxVerticesFromEstimators(IssmDouble* hmaxvertices,int errorestimator_type){/*{{{*/
+
+	if(!hmaxvertices) _error_("hmaxvertices is NULL!\n");
+
+	/*Intermediaries*/
+	int elementswidth							= this->GetElementsWidth();
+	int numberofelements						= -1;
+	int numberofvertices						= -1;
+	IssmDouble	hmax							= this->amrbamg->GetBamgOpts()->hmax;
+	IssmDouble* maxlength					= NULL;
+	IssmDouble* error_vertices				= NULL;
+	IssmDouble* error_elements				= NULL;
+	IssmDouble* x								= NULL;
+	IssmDouble* y								= NULL;
+	int* index									= NULL;
+	IssmDouble maxerror,threshold,groupthreshold,resolution,length;
+	IssmDouble L1,L2,L3;
+	int vid,v1,v2,v3;
+	bool refine;
+
+	/*Fill variables*/
+	switch(errorestimator_type){
+		case ThicknessErrorEstimatorEnum:
+			threshold		= this->amrbamg->thicknesserror_threshold;
+			groupthreshold	= this->amrbamg->thicknesserror_groupthreshold;
+			resolution		= this->amrbamg->thicknesserror_resolution;
+			maxerror			= this->amrbamg->thicknesserror_maximum;
+			this->ThicknessZZErrorEstimator(&error_elements);//error is serial, but the calculation is parallel
+			break;
+		case DeviatoricStressErrorEstimatorEnum:
+			threshold		= this->amrbamg->deviatoricerror_threshold;
+			groupthreshold	= this->amrbamg->deviatoricerror_groupthreshold;
+			resolution		= this->amrbamg->deviatoricerror_resolution;
+			maxerror			= this->amrbamg->deviatoricerror_maximum;
+			this->ZZErrorEstimator(&error_elements);//error is serial, but the calculation is parallel
+			break;
+		default: _error_("not implemented yet");
+	}
+	if(!error_elements) _error_("error_elements is NULL!\n");
+	if(groupthreshold<DBL_EPSILON) _error_("group threshold is too small!");
+
+	/*Get mesh*/
+	this->GetMesh(&index,&x,&y,&numberofvertices,&numberofelements);
+	if(numberofelements<0) _error_("number of elements is negative!\n");
+	if(numberofvertices<0) _error_("number of vertices is negative!\n");
+	maxlength		= xNew<IssmDouble>(numberofelements);
+	error_vertices	= xNewZeroInit<IssmDouble>(numberofvertices);
+
+	/*Find the max of the estimators if it was not provided*/
+	if(maxerror<DBL_EPSILON){
+		for(int i=0;i<numberofelements;i++) maxerror=max(maxerror,error_elements[i]);
+		switch(errorestimator_type){
+      	case ThicknessErrorEstimatorEnum:			this->amrbamg->thicknesserror_maximum 	= maxerror;break;
+      	case DeviatoricStressErrorEstimatorEnum: 	this->amrbamg->deviatoricerror_maximum = maxerror;break;
+   	}
+	}
+
+	/*Fill error_vertices (this is the sum of all elements connected to the vertex)*/
+	for(int i=0;i<numberofelements;i++){
+		v1=index[i*elementswidth+0]-1;//Matlab to C indexing
+		v2=index[i*elementswidth+1]-1;//Matlab to C indexing
+		v3=index[i*elementswidth+2]-1;//Matlab to C indexing
+		L1=sqrt(pow(x[v2]-x[v1],2)+pow(y[v2]-y[v1],2));
+		L2=sqrt(pow(x[v3]-x[v2],2)+pow(y[v3]-y[v2],2));
+		L3=sqrt(pow(x[v1]-x[v3],2)+pow(y[v1]-y[v3],2));
+		/*Fill the vectors*/
+		maxlength[i]		=max(L1,max(L2,L3));
+		error_vertices[v1]+=error_elements[i];
+		error_vertices[v2]+=error_elements[i];
+		error_vertices[v3]+=error_elements[i];
+	}
+
+	/*Fill hmaxvertices with the criteria*/
+	for(int i=0;i<numberofelements;i++){
+		/*Refine any element if its error > phi*maxerror*/
+		if(error_elements[i]>threshold*maxerror){
+			/*Now, fill the hmaxvertices if requested*/
+			for(int j=0;j<elementswidth;j++){
+				vid=index[i*elementswidth+j]-1;//Matlab to C indexing
+				if(xIsNan<IssmDouble>(hmaxvertices[vid])) hmaxvertices[vid]=max(maxlength[i]/2.,resolution);//Try first dividing the element
+				else hmaxvertices[vid]=min(max(maxlength[i]/2.,resolution),hmaxvertices[vid]);//Try first dividing the element
+			}
+		}
+		else {
+			/*Try unrefine the element*/
+			if(maxlength[i] < 1.1*hmax/2.){
+				for(int j=0;j<elementswidth;j++){
+					vid=index[i*elementswidth+j]-1;//Matlab to C indexing
+					if(error_vertices[vid]>groupthreshold*maxerror) hmaxvertices[vid]=maxlength[i]; //keep the current resolution
+					else{
+						if(xIsNan<IssmDouble>(hmaxvertices[vid])) hmaxvertices[vid]=min(maxlength[i]*2.,hmax);
+						else hmaxvertices[vid]=min(min(maxlength[i]*2.,hmax),hmaxvertices[vid]);//Try first to duplicate the element
+					}
+				}
+			}
+		}
+	}
+
+	/*Cleanup*/
+   xDelete<IssmDouble>(error_elements);
+   xDelete<IssmDouble>(error_vertices);
+   xDelete<IssmDouble>(maxlength);
+}
+/*}}}*/
+void FemModel::GetVerticeDistanceToZeroLevelSet(IssmDouble** pverticedistance,int levelset_type){/*{{{*/
+
+	//itapopo esse metodo pode ser deletado
+
+	/*Here, "zero level set" means grounding line or ice front, depending on the level set type*/
+	/*pverticedistance is the minimal vertice distance to the grounding line or ice front*/
+	if(levelset_type!=MaskOceanLevelsetEnum && levelset_type!=MaskIceLevelsetEnum){
+		_error_("level set type not implemented yet!");
+	}
+
+	/*Output*/
+	IssmDouble* verticedistance;
+
+	/*Intermediaries*/
+   int numberofvertices       = -1;
+	int numberofelements			= -1;
+   IssmDouble* levelset_points= NULL;
+   IssmDouble* x					= NULL;
+   IssmDouble* y					= NULL;
+	int* elementslist				= NULL;
+	int numberofpoints;
+	IssmDouble distance;
+
+	/*Get vertices coordinates*/
+	this->GetMesh(&elementslist,&x,&y,&numberofvertices,&numberofelements);
+	//this->GetMeshOnPartition(this->vertices,this->elements,&x,&y,&z,&elementslist,&sidtoindex);
+
+	/*Get points which level set is zero (center of elements with zero level set)*/
+	this->GetZeroLevelSetPoints(&levelset_points,numberofpoints,levelset_type);
+
+	/*Find the minimal vertice distance to the zero levelset (grounding line or ice front)*/
+	verticedistance=xNew<IssmDouble>(numberofvertices);
+	for(int i=0;i<numberofvertices;i++){
+		verticedistance[i]=INFINITY;
+		for(int j=0;j<numberofpoints;j++){
+			distance=sqrt((x[i]-levelset_points[2*j])*(x[i]-levelset_points[2*j])+(y[i]-levelset_points[2*j+1])*(y[i]-levelset_points[2*j+1]));
+			verticedistance[i]=min(distance,verticedistance[i]);
+		}
+	}
+
+	/*Assign the pointer*/
+	(*pverticedistance)=verticedistance;
+
+	/*Cleanup*/
+   xDelete<IssmDouble>(levelset_points);
+}
+/*}}}*/
+#endif
+
+#if defined(_HAVE_NEOPZ_) && !defined(_HAVE_AD_)
+void FemModel::ReMeshNeopz(int* pnewnumberofvertices,int* pnewnumberofelements,IssmDouble** pnewx,IssmDouble** pnewy,IssmDouble** pnewz,int** pnewelementslist){/*{{{*/
+
+	/*pnewelementslist keep vertices in Matlab indexing*/
+   int my_rank						= IssmComm::GetRank();
+	IssmDouble* gl_distance		= NULL;
+	IssmDouble* if_distance		= NULL;
+	IssmDouble* deviatoricerror= NULL;
+	IssmDouble* thicknesserror	= NULL;
+	IssmDouble* newx				= NULL;
+   IssmDouble* newy				= NULL;
+   IssmDouble* newz				= NULL;
+	IssmDouble* newxylist		= NULL;
+   int* newelementslist			= NULL;
+	int* newdatalist				= NULL;
+	int newnumberofvertices		= -1;
+	int newnumberofelements		= -1;
+
+	/*Get fields, if requested*/
+	if(this->amr->groundingline_distance>0)		this->GetElementDistanceToZeroLevelSet(&gl_distance,MaskOceanLevelsetEnum);
+   if(this->amr->icefront_distance>0)				this->GetElementDistanceToZeroLevelSet(&if_distance,MaskIceLevelsetEnum);
+   if(this->amr->thicknesserror_threshold>0)		this->ThicknessZZErrorEstimator(&thicknesserror);
+	if(this->amr->deviatoricerror_threshold>0)	this->ZZErrorEstimator(&deviatoricerror);
+
+	if(my_rank==0){
+		this->amr->ExecuteRefinement(gl_distance,if_distance,deviatoricerror,thicknesserror,
+												&newdatalist,&newxylist,&newelementslist);
+		if(newdatalist[0]<=0 || newdatalist[1]<=0) _error_("Error in the ReMeshNeopz.");
+	}
+
+	/*Send new mesh to others CPU's*/
+	if(my_rank) newdatalist=xNew<int>(2);
+   ISSM_MPI_Bcast(newdatalist,2,ISSM_MPI_INT,0,IssmComm::GetComm());
+   newnumberofvertices=newdatalist[0];
+   newnumberofelements=newdatalist[1];
+   if(my_rank){
+      newxylist      =xNew<IssmDouble>(newnumberofvertices*2);
+      newelementslist=xNew<int>(newnumberofelements*this->GetElementsWidth());
+   }
+   ISSM_MPI_Bcast(newxylist,newnumberofvertices*2,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+   ISSM_MPI_Bcast(newelementslist,newnumberofelements*this->GetElementsWidth(),ISSM_MPI_INT,0,IssmComm::GetComm());
+
+   /*Reorganize the data*/
+   newx=xNew<IssmDouble>(newnumberofvertices);
+   newy=xNew<IssmDouble>(newnumberofvertices);
+   newz=xNewZeroInit<IssmDouble>(newnumberofvertices);
+   for(int i=0;i<newnumberofvertices;i++){
+      newx[i] = newxylist[2*i];
+      newy[i] = newxylist[2*i+1];
+   }
+
+	/*Assign the pointers*/
+   (*pnewelementslist)  = newelementslist; //Matlab indexing
+   (*pnewx)             = newx;
+   (*pnewy)             = newy;
+   (*pnewz)             = newz;
+   *pnewnumberofvertices= newnumberofvertices;
+   *pnewnumberofelements= newnumberofelements;
+
+	/*Cleanup*/
+   xDelete<int>(newdatalist);
+   xDelete<IssmDouble>(newxylist);
+   xDelete<IssmDouble>(deviatoricerror);
+   xDelete<IssmDouble>(thicknesserror);
+   xDelete<IssmDouble>(gl_distance);
+   xDelete<IssmDouble>(if_distance);
+}
+/*}}}*/
+void FemModel::InitializeAdaptiveRefinementNeopz(void){/*{{{*/
+
+	/*Define variables*/
+	int my_rank										= IssmComm::GetRank();
+	int numberofvertices							= this->vertices->NumberOfVertices();
+	int numberofelements							= this->elements->NumberOfElements();
+	IssmDouble* x									= NULL;
+	IssmDouble* y									= NULL;
+	int* elements									= NULL;
+	int amr_restart;
+
+	/*Initialize field as NULL for now*/
+	this->amr = NULL;
+
+	/*Get vertices coordinates of the coarse mesh (father mesh)*/
+	/*elements comes in Matlab indexing*/
+	this->GetMesh(this->vertices,this->elements,&x,&y,&elements);
+
+	/*Create initial mesh (coarse mesh) in neopz data structure*/
+	/*Just CPU #0 should keep AMR object*/
+   /*Initialize refinement pattern*/
+	this->SetRefPatterns();
+	this->amr = new AmrNeopz();
+	this->amr->refinement_type=1;//1 is refpattern; 0 is uniform (faster)
+	/*Get amr parameters*/
+	this->parameters->FindParam(&this->amr->level_max,AmrLevelMaxEnum);
+	this->parameters->FindParam(&this->amr->gradation,AmrGradationEnum);
+	this->parameters->FindParam(&this->amr->lag,AmrLagEnum);
+	this->parameters->FindParam(&this->amr->groundingline_distance,AmrGroundingLineDistanceEnum);
+	this->parameters->FindParam(&this->amr->icefront_distance,AmrIceFrontDistanceEnum);
+	this->parameters->FindParam(&this->amr->thicknesserror_threshold,AmrThicknessErrorThresholdEnum);
+	this->parameters->FindParam(&this->amr->thicknesserror_groupthreshold,AmrThicknessErrorGroupThresholdEnum);
+	this->parameters->FindParam(&this->amr->thicknesserror_maximum,AmrThicknessErrorMaximumEnum);
+	this->parameters->FindParam(&this->amr->deviatoricerror_threshold,AmrDeviatoricErrorThresholdEnum);
+	this->parameters->FindParam(&this->amr->deviatoricerror_groupthreshold,AmrDeviatoricErrorGroupThresholdEnum);
+	this->parameters->FindParam(&this->amr->deviatoricerror_maximum,AmrDeviatoricErrorMaximumEnum);
+
+	/*Initialize NeoPZ data structure*/
+	this->amr->SetMesh(&elements,&x,&y,&numberofvertices,&numberofelements);
+	if(my_rank==0){
+		this->parameters->FindParam(&amr_restart,AmrRestartEnum);
+		if(amr_restart){//experimental
+			this->amr->ReadMesh();
+		} else {//this is the default method
+			this->amr->Initialize();
+		}
+	}
+}
+/*}}}*/
+void FemModel::GetElementDistanceToZeroLevelSet(IssmDouble** pelementdistance,int levelset_type){/*{{{*/
+
+	/*Here, "zero level set" means grounding line or ice front, depending on the level set type*/
+	/*pverticedistance is the minimal vertice distance to the grounding line or ice front*/
+	if(levelset_type!=MaskOceanLevelsetEnum && levelset_type!=MaskIceLevelsetEnum){
+		_error_("level set type not implemented yet!");
+	}
+
+	/*Output*/
+	IssmDouble* elementdistance;
+
+	/*Intermediaries*/
+   int numberofelements							= this->elements->NumberOfElements();
+   Vector<IssmDouble>* velementdistance	= new Vector<IssmDouble>(numberofelements);
+   IssmDouble* levelset_points				= NULL;
+	IssmDouble* xyz_list							= NULL;
+	IssmDouble mindistance,distance;
+	IssmDouble xc,yc,x1,y1,x2,y2,x3,y3;
+	int numberofpoints;
+
+	/*Get points which level set is zero (center of elements with zero level set, levelset_points is serial)*/
+	this->GetZeroLevelSetPoints(&levelset_points,numberofpoints,levelset_type);
+
+	for(Object* & object : this->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+      int sid = element->Sid();
+		element->GetVerticesCoordinates(&xyz_list);
+		x1 = xyz_list[3*0+0];y1 = xyz_list[3*0+1];
+		x2 = xyz_list[3*1+0];y2 = xyz_list[3*1+1];
+		x3 = xyz_list[3*2+0];y3 = xyz_list[3*2+1];
+		xc = (x1+x2+x3)/3.;
+		yc = (y1+y2+y3)/3.;
+		mindistance=INFINITY;
+		/*Loop over each point (where level set is zero)*/
+		for(int j=0;j<numberofpoints;j++){
+			distance =sqrt((xc-levelset_points[2*j])*(xc-levelset_points[2*j])+(yc-levelset_points[2*j+1])*(yc-levelset_points[2*j+1]));
+			mindistance=min(distance,mindistance);
+		}
+		velementdistance->SetValue(sid,mindistance,INS_VAL);
+		xDelete<IssmDouble>(xyz_list);
+	}
+
+   /*Assemble*/
+   velementdistance->Assemble();
+
+	/*Assign the pointer*/
+	(*pelementdistance)=velementdistance->ToMPISerial();
+
+	/*Cleanup*/
+   xDelete<IssmDouble>(levelset_points);
+   xDelete<IssmDouble>(xyz_list);
+	delete velementdistance;
+}
+/*}}}*/
+void FemModel::SetRefPatterns(){/*{{{*/
+
+   /*Initialize the global variable of refinement patterns*/
+   gRefDBase.InitializeUniformRefPattern(ETriangle);
+
+	/*Insert specifics patterns to ISSM core*/
+   std::string filepath  = REFPATTERNDIR;
+   std::string filename1 = filepath + "/2D_Triang_Rib_3.rpt";
+   std::string filename2 = filepath + "/2D_Triang_Rib_4.rpt";
+   std::string filename3 = filepath + "/2D_Triang_Rib_5.rpt";
+   std::string filename4 = filepath + "/2D_Triang_Rib_OnlyTriang_Side_3_4.rpt";
+   std::string filename5 = filepath + "/2D_Triang_Rib_OnlyTriang_Side_3_4_permuted.rpt";
+   std::string filename6 = filepath + "/2D_Triang_Rib_OnlyTriang_Side_3_5.rpt";
+   std::string filename7 = filepath + "/2D_Triang_Rib_OnlyTriang_Side_3_5_permuted.rpt";
+   std::string filename8 = filepath + "/2D_Triang_Rib_OnlyTriang_Side_4_5.rpt";
+   std::string filename9 = filepath + "/2D_Triang_Rib_OnlyTriang_Side_4_5_permuted.rpt";
+
+   TPZAutoPointer<TPZRefPattern> refpat1 = new TPZRefPattern(filename1);
+   TPZAutoPointer<TPZRefPattern> refpat2 = new TPZRefPattern(filename2);
+   TPZAutoPointer<TPZRefPattern> refpat3 = new TPZRefPattern(filename3);
+   TPZAutoPointer<TPZRefPattern> refpat4 = new TPZRefPattern(filename4);
+   TPZAutoPointer<TPZRefPattern> refpat5 = new TPZRefPattern(filename5);
+   TPZAutoPointer<TPZRefPattern> refpat6 = new TPZRefPattern(filename6);
+   TPZAutoPointer<TPZRefPattern> refpat7 = new TPZRefPattern(filename7);
+   TPZAutoPointer<TPZRefPattern> refpat8 = new TPZRefPattern(filename8);
+   TPZAutoPointer<TPZRefPattern> refpat9 = new TPZRefPattern(filename9);
+
+   if(!gRefDBase.FindRefPattern(refpat1)) gRefDBase.InsertRefPattern(refpat1);
+   if(!gRefDBase.FindRefPattern(refpat2)) gRefDBase.InsertRefPattern(refpat2);
+   if(!gRefDBase.FindRefPattern(refpat3)) gRefDBase.InsertRefPattern(refpat3);
+   if(!gRefDBase.FindRefPattern(refpat4)) gRefDBase.InsertRefPattern(refpat4);
+   if(!gRefDBase.FindRefPattern(refpat5)) gRefDBase.InsertRefPattern(refpat5);
+   if(!gRefDBase.FindRefPattern(refpat6)) gRefDBase.InsertRefPattern(refpat6);
+   if(!gRefDBase.FindRefPattern(refpat7)) gRefDBase.InsertRefPattern(refpat7);
+   if(!gRefDBase.FindRefPattern(refpat8)) gRefDBase.InsertRefPattern(refpat8);
+   if(!gRefDBase.FindRefPattern(refpat9)) gRefDBase.InsertRefPattern(refpat9);
+}
+/*}}}*/
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/FemModel.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/FemModel.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/FemModel.h	(revision 27955)
@@ -0,0 +1,229 @@
+/*
+ * FemModel.h:
+ */
+
+#ifndef _FEMMODEL_H_
+#define _FEMMODEL_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../toolkits/toolkits.h"
+class DataSet;
+class Parameters;
+class Inputs;
+class Nodes;
+class Vertices;
+class Results;
+class Constraints;
+class Loads;
+class Materials;
+class SealevelMasks;
+class Profiler;
+class Elements;
+#if defined(_HAVE_NEOPZ_) && !defined(_HAVE_AD_)
+#include "./AmrNeopz.h"
+#endif
+#if defined(_HAVE_BAMG_) && !defined(_HAVE_AD_)
+#include "./AmrBamg.h"
+#endif
+/*}}}*/
+
+class FemModel {
+
+	/*no private members, as we need access to these datasets quite often!:*/
+
+	public:
+
+		int          analysis_counter;     //counter into analysis_type_list
+		int         *analysis_type_list;   //list of analyses this femmodel is going to carry out
+		int          nummodels;
+		int          solution_type;
+
+		Profiler*    profiler;             //keep time, cpu and mem statistics while we are running.
+
+		Elements    *elements;             //elements (one set for all analyses)
+		Materials   *materials;            //one set of materials, for each element
+		Parameters  *parameters;           //one set of parameters, independent of the analysis_type
+		Inputs     *inputs;              //one set of inputs, independent of the analysis_type
+		Results     *results;              //results that cannot be fit into the elements
+		Vertices    *vertices;             //one set of vertices
+
+		/*Analysis dependent datasets*/
+		Constraints  *constraints;
+		Constraints **constraints_list;
+		Loads        *loads;
+		Loads       **loads_list;
+		Nodes        *nodes;
+		Nodes       **nodes_list;
+
+		//FIXME: do we want only one class and have virtual functions? or keep 2 classes?
+		#if defined(_HAVE_NEOPZ_) && !defined(_HAVE_AD_)
+		AmrNeopz *amr;		  //adaptive mesh refinement object. It keeps coarse mesh and execute refinement process
+		#endif
+
+		#if defined(_HAVE_BAMG_) && !defined(_HAVE_AD_)
+		AmrBamg *amrbamg; //adaptive mesh refinement object. It keeps coarse mesh and execute refinement process
+		#endif
+
+		/*constructors, destructors: */
+		FemModel(void);
+		FemModel(int argc,char** argv,ISSM_MPI_Comm comm_init,bool trace=false);
+		FemModel(char* rootpath, char* inputfilename, char* outputfilename, char* toolkitsfilename, char* lockfilename, char* restartfilename, char* modelname, ISSM_MPI_Comm incomm, int solution_type,IssmPDouble* X);
+		~FemModel();
+
+		/*Methods:*/
+		int  AnalysisIndex(int);
+		void CheckPoint(void);
+		void CheckPointAD(int step);
+		void CleanUp(void);
+		FemModel* copy();
+		void Echo();
+		int  GetElementsWidth(){return 3;};//just tria elements in this first version
+		void InitFromFiles(char* rootpath, char* inputfilename, char* outputfilename, char* petscfilename, char* lockfilename, char* restartfilename, char* modelname, const int solution_type,bool trace,IssmPDouble* X=NULL);
+		void InitFromFids(char* rootpath, FILE* IOMODEL, FILE* toolkitsoptionsfid, int in_solution_type, bool trace, IssmPDouble* X=NULL);
+		void Marshall(MarshallHandle* marshallhandle);
+		void Restart(int verboselevel=2);
+		void RestartAD(int step);
+		void SetCurrentConfiguration(int configuration_type);
+		void SetCurrentConfiguration(int configuration_type,int analysis_type);
+		int  Size(void);
+		void SolutionAnalysesList(int** panalyses,int* pnumanalyses,IoModel* iomodel,int solutiontype);
+		void Solve(void);
+
+		/*Modules*/
+		void BalancethicknessMisfitx(IssmDouble* pV);
+		void CalvingRateVonmisesx();
+		void CalvingRateLevermannx();
+		void CalvingFluxLevelsetx();
+		void CalvingMeltingFluxLevelsetx();
+		void DeviatoricStressx();
+		void Divergencex(IssmDouble* pdiv);
+		void ElementOperationx(void (Element::*function)(void));
+		void ElementResponsex(IssmDouble* presponse,int response_enum);
+		void FloatingAreax(IssmDouble* pV, bool scaled);
+		void GetInputLocalMinMaxOnNodesx(IssmDouble** pmin,IssmDouble** pmax,IssmDouble* ug);
+		void GetLocalVectorWithClonesGset(IssmDouble** plocal_ug,Vector<IssmDouble> *ug);
+		void GetLocalVectorWithClonesVertices(IssmDouble** plocal_vector,Vector<IssmDouble> *vector);
+		void SyncLocalVectorWithClonesVertices(IssmDouble* local_vector);
+		void SyncLocalVectorWithClonesVerticesAdd(IssmDouble* local_vector);
+		void GetLocalVectorWithClonesNodes(IssmDouble** plocal_vector,Vector<IssmDouble> *vector);
+		void GroundedAreax(IssmDouble* pV, bool scaled);
+		void IcefrontAreax();
+		void IcefrontMassFluxx(IssmDouble* presponse, bool scaled);
+		void IcefrontMassFluxLevelsetx(IssmDouble* presponse, bool scaled);
+		void GroundinglineMassFluxx(IssmDouble* presponse, bool scaled);
+		void IceMassx(IssmDouble* pV, bool scaled);
+		void IceVolumex(IssmDouble* pV, bool scaled);
+		void IceVolumeAboveFloatationx(IssmDouble* pV, bool scaled);
+		void InputMakeDiscontinuous(int enum_in);
+		void MassFluxx(IssmDouble* presponse);
+		void MaxAbsVxx(IssmDouble* presponse);
+		void MaxAbsVyx(IssmDouble* presponse);
+		void MaxAbsVzx(IssmDouble* presponse);
+		void MaxDivergencex(IssmDouble* pdiv);
+		void MaxVelx(IssmDouble* presponse);
+		void MaxVxx(IssmDouble* presponse);
+		void MaxVyx(IssmDouble* presponse);
+		void MaxVzx(IssmDouble* presponse);
+		void MinVelx(IssmDouble* presponse);
+		void MinVxx(IssmDouble* presponse);
+		void MinVyx(IssmDouble* presponse);
+		void MinVzx(IssmDouble* presponse);
+		void MmeToInputFromId(int id, int rootenum, int interpolationenum);
+		void DistanceToFieldValue(int fieldenum,IssmDouble fieldvalue,int distanceenum);
+		void ResetLevelset();
+		void StrainRateparallelx();
+		void StrainRateperpendicularx();
+		void StrainRateeffectivex();
+		void StressIntensityFactorx();
+		void RignotMeltParameterizationx();
+		void TotalCalvingFluxLevelsetx(IssmDouble* pGbmb, bool scaled);
+		void TotalCalvingMeltingFluxLevelsetx(IssmDouble* pGbmb, bool scaled);
+		void TotalFloatingBmbx(IssmDouble* pFbmb, bool scaled);
+		void TotalGroundedBmbx(IssmDouble* pGbmb, bool scaled);
+		void TotalSmbx(IssmDouble* pSmb, bool scaled);
+		void TotalSmbMeltx(IssmDouble* pSmbMelt, bool scaled);
+		void TotalSmbRefreezex(IssmDouble* pSmbRefreeze, bool scaled);
+		#ifdef  _HAVE_DAKOTA_
+		void DakotaResponsesx(double* d_responses,char** responses_descriptors,int numresponsedescriptors,int d_numresponses);
+		#endif
+		void CostFunctionx(IssmDouble* pJ,IssmDouble** pJlist,int* pn);
+		void OutputControlsx(Results **presults);
+		void RequestedDependentsx(void);
+		void RequestedOutputsx(Results **presults,char** requested_outputs, int numoutputs,bool save_results=true);
+		void RequestedOutputsx(Results **presults,int* requested_outputs, int numoutputs,bool save_results=true);
+		void Responsex(IssmDouble* presponse,int response_descriptor_enum);
+		void Responsex(IssmDouble* presponse,const char* response_descriptor);
+		void SurfaceAbsMisfitx( IssmDouble* pJ);
+		void OmegaAbsGradientx( IssmDouble* pJ);
+		void EtaDiffx( IssmDouble* pJ);
+		void ThicknessAverage();
+		void ThicknessAbsGradientx( IssmDouble* pJ);
+		void ThicknessPositivex(IssmDouble* pJ);
+		#ifdef _HAVE_ESA_
+		void EsaGeodetic2D(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pX, Vector<IssmDouble>* pY, IssmDouble* xx, IssmDouble* yy);
+		void EsaGeodetic3D(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz);
+		#endif
+		void HydrologyEPLupdateDomainx(IssmDouble* pEplcount);
+		void HydrologyIDSupdateDomainx(IssmDouble* pIDScount);
+		void TimeAdaptx(IssmDouble* pdt);
+		void UpdateConstraintsExtrudeFromBasex();
+		void UpdateConstraintsExtrudeFromTopx();
+		void UpdateConstraintsL2ProjectionEPLx(IssmDouble* pL2count);
+		void InitTransientInputx(int* transientinput_enum,int numoutputs);
+		void StackTransientInputx(int* input_enum,int* transientinput_enum,IssmDouble hydrotime,int numoutputs);
+		void StackTransientInputonBasex(int* input_enum,int* transientinput_enum,IssmDouble hydrotime,int numoutputs);
+		void AverageTransientInputx(int* transientinput_enum,int* averagedinput_enum,IssmDouble init_time,IssmDouble end_time,int numoutputs,int averaging_method);
+		void AverageTransientInputonBasex(int* transientinput_enum,int* averagedinput_enum,IssmDouble init_time,IssmDouble end_time,int numoutputs,int averaging_method);
+		void UpdateConstraintsx(void);
+		int  UpdateVertexPositionsx(void);
+
+		#ifdef _HAVE_JAVASCRIPT_
+		FemModel(IssmDouble* buffer, int buffersize, char* toolkits, char* solution, char* modelname,ISSM_MPI_Comm incomm, bool trace=false);
+		void CleanUpJs(char** poutput, size_t* psize);
+		void InitFromBuffers(char* buffer, int buffersize, char* toolkits, int solution_type,bool trace,IssmPDouble* X=NULL);
+		#endif
+
+		/*AMR*/
+		#if !defined(_HAVE_AD_)
+		void ReMesh(void);
+		void BedrockFromMismipPlus(void);
+		void AdjustBaseThicknessAndMask(void);
+		void GetMesh(Vertices* femmodel_vertices,Elements* femmodel_elements,IssmDouble** px, IssmDouble** py, int** pelementslist);
+		void GetMesh(int** elementslist, IssmDouble** x, IssmDouble** y, int* numberofvertices, int* numberofelements);
+		void SetMesh(int** elementslist, IssmDouble** x, IssmDouble** y, int* numberofvertices, int* numberofelements);
+		void GetMeshOnPartition(Vertices* femmodel_vertices,Elements* femmodel_elements,IssmDouble** px, IssmDouble** py, IssmDouble** pz, int** pelementslist,int** psidtoindex);
+		void CreateElements(int newnumberofelements,int elementswidth,int* newelementslist,bool* my_elements,Elements* elements);
+		void CreateMaterials(int newnumberofelements,bool* my_elements,Materials* materials);
+		void CreateConstraints(Vertices* newfemmodel_vertices,int analysis_enum,Constraints* newfemmodel_constraints);
+		void GetInputs(int* pnumP0inputs,IssmDouble** pP0inputs,int** pP0input_enums,int** pP0input_interp,int* pnumP1inputs,IssmDouble** pP1inputs,int** pP1input_enums,int** pP1input_interp);
+		void InterpolateInputs(Vertices* newfemmodel_vertices,Elements* newfemmodel_elements,Inputs* new_inputs);
+		void UpdateElements(int newnumberofelements,int* newelementslist,bool* my_elements,int analysis_counter,Elements* newelements);
+		void WriteMeshInResults(void);
+		void WriteErrorEstimatorsInResults(void);
+		void SmoothedDeviatoricStressTensor(IssmDouble** ptauxx,IssmDouble** ptauyy,IssmDouble** ptauxy); //nodal values, just for SSA-P1: TauXX, TauYY, TauXY
+		void ZZErrorEstimator(IssmDouble** pelementerror);
+		void SmoothedGradThickness(IssmDouble** pdHdx,IssmDouble** pdHdy);
+		void ThicknessZZErrorEstimator(IssmDouble** pelementerror);
+		void MeanGroundedIceLevelSet(IssmDouble** pmasklevelset);
+		void GetElementCenterCoordinates(IssmDouble** pxc,IssmDouble** pyc);
+		void GetZeroLevelSetPoints(IssmDouble** pzerolevelset_points,int &numberofpoints,int levelset_type);
+		#endif
+
+		#if defined(_HAVE_BAMG_) && !defined(_HAVE_AD_)
+		void ReMeshBamg(int* pnewnumberofvertices,int* pnewnumberofelements,IssmDouble** pnewx,IssmDouble** pnewy,IssmDouble** pnewz,int** pnewelementslist);
+		void InitializeAdaptiveRefinementBamg(void);
+		void GethmaxVerticesFromZeroLevelSetDistance(IssmDouble* hmaxvertices,int levelset_type);
+		void GethmaxVerticesFromEstimators(IssmDouble* hmaxvertices,int errorestimator_type);
+		void GetVerticeDistanceToZeroLevelSet(IssmDouble** pverticedistance,int leveset_type);
+		#endif
+
+		#if defined(_HAVE_NEOPZ_) && !defined(_HAVE_AD_)
+		void ReMeshNeopz(int* pnewnumberofvertices,int* pnewnumberofelements,IssmDouble** pnewx,IssmDouble** pnewy,IssmDouble** pnewz,int** pnewelementslist);
+		void InitializeAdaptiveRefinementNeopz(void);
+		void GetElementDistanceToZeroLevelSet(IssmDouble** pelementdistance,int levelset_type);
+		void SetRefPatterns(void);
+		#endif
+};
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/GiaDeflectionCoreArgs.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/GiaDeflectionCoreArgs.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/GiaDeflectionCoreArgs.h	(revision 27955)
@@ -0,0 +1,40 @@
+/*!\file:  GiaDeflectionCoreArgs.h
+ * \brief place holder for arguments to the GiaDeflectionCoreArgs routine
+ */ 
+
+#ifndef _GIADEFLECTIONCOREARGS_H_
+#define _GIADEFLECTIONCOREARGS_H_
+
+struct GiaDeflectionCoreArgs{
+
+	/*inputs: */
+	IssmDouble currenttime; 
+	IssmDouble* hes; //loading history (in ice thickness)
+	int numtimes; //loading history length
+	IssmDouble ri; //radial distance from center of disk to vertex  i
+	IssmDouble re; //radius of disk
+	IssmDouble* times; //loading history times
+
+	/*gia material parameters: */
+	IssmDouble lithosphere_density;
+	IssmDouble lithosphere_shear_modulus;
+	IssmDouble lithosphere_thickness;
+	IssmDouble mantle_density;
+	IssmDouble mantle_shear_modulus;
+	IssmDouble mantle_viscosity;
+
+	/*gia solution parameters: */
+	int iedge;
+
+	/*ice properties: */
+	IssmDouble rho_ice;
+
+	/*constants: */
+	IssmDouble yts;
+
+	/*debug info: */
+	int        idisk; //id of the element we are running the gia code in.
+
+};
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/GrdLoads.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/GrdLoads.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/GrdLoads.cpp	(revision 27955)
@@ -0,0 +1,262 @@
+/*
+ * \file GrdLoads.cpp
+ * \brief: Implementation of GrdLoads class
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./GrdLoads.h"
+#include "./SealevelGeometry.h"
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+GrdLoads::GrdLoads(int nel,SealevelGeometry* slgeom){ /*{{{*/
+
+	/*allocate:*/
+	nactiveloads=0;
+
+	vloads=new Vector<IssmDouble>(nel);
+	for (int i=0;i<SLGEOM_NUMLOADS;i++) {
+		vsubloads[i]=new Vector<IssmDouble>(slgeom->nbar[i]);
+		combined_subloads[i]=xNewZeroInit<IssmDouble>(slgeom->nbar[i]);
+	}
+
+	vsealevelloads=new Vector<IssmDouble>(nel);
+	vsealevelloads->Set(0);vsealevelloads->Assemble();
+
+	vsubsealevelloads=new Vector<IssmDouble>(slgeom->nbar[SLGEOM_OCEAN]);
+
+	combined_loads=NULL;
+	combined_loads_index=NULL;
+	for (int i=0;i<SLGEOM_NUMLOADS;i++) {
+		nactivesubloads[i]=0;
+		combined_subloads[i]=NULL;
+		combined_subloads_index[i]=NULL;
+	}
+
+	/*make sure all pointers that are not allocated are NULL:*/
+	loads=NULL;
+	for (int i=0;i<SLGEOM_NUMLOADS;i++)subloads[i]=NULL;
+	sealevelloads=NULL;
+	subsealevelloads=NULL;
+
+
+}; /*}}}*/
+GrdLoads::~GrdLoads(){ /*{{{*/
+
+	delete vloads;
+	xDelete<IssmDouble>(loads);
+	delete vsealevelloads;
+	xDelete<IssmDouble>(sealevelloads);
+	delete vsubsealevelloads;
+	xDelete<IssmDouble>(subsealevelloads);
+	if (combined_loads) xDelete<IssmDouble>(combined_loads);
+	if (combined_loads_index) xDelete<int>(combined_loads_index);
+	for(int i=0;i<SLGEOM_NUMLOADS;i++){
+		delete vsubloads[i];
+		xDelete<IssmDouble>(subloads[i]);
+		if (combined_subloads[i]) xDelete<IssmDouble>(combined_subloads[i]);
+		if (combined_subloads_index[i]) xDelete<int>(combined_subloads_index[i]);
+	}
+
+
+}; /*}}}*/
+
+void GrdLoads::BroadcastLoads(void){ /*{{{*/
+
+	/*Initialize barycentre vectors, now that we know their size: */
+	vloads->Assemble();
+	for (int i=0;i<SLGEOM_NUMLOADS;i++){
+		vsubloads[i]->Assemble();
+	}
+
+	/*Avoid leaks:*/
+	if(loads)xDelete<IssmDouble>(loads);
+	for (int i=0;i<SLGEOM_NUMLOADS;i++){
+		if(subloads[i])xDelete<IssmDouble>(subloads[i]);
+	}
+
+	/*Serialize:*/
+	loads=vloads->ToMPISerial();
+	for (int i=0;i<SLGEOM_NUMLOADS;i++){
+		subloads[i]=vsubloads[i]->ToMPISerial();
+	}
+
+} /*}}}*/
+void GrdLoads::AssembleSealevelLoads(void){ /*{{{*/
+
+	vsealevelloads->Assemble();
+	vsubsealevelloads->Assemble();
+
+} /*}}}*/
+void GrdLoads::BroadcastSealevelLoads(void){ /*{{{*/
+
+	/*Avoid leakds:*/
+	if(sealevelloads)xDelete<IssmDouble>(sealevelloads);
+	if(subsealevelloads)xDelete<IssmDouble>(subsealevelloads);
+
+	/*Serialize:*/
+	sealevelloads=vsealevelloads->ToMPISerial();
+	subsealevelloads=vsubsealevelloads->ToMPISerial();
+
+} /*}}}*/
+void GrdLoads::SHDegree2Coefficients(IssmDouble* deg2coeff, FemModel* femmodel, SealevelGeometry* slgeom){ /*{{{*/
+
+	IssmDouble re, S;
+	int ylmindex, intj;
+	IssmDouble deg2coeff_local[5];
+	//IssmDouble area;
+
+	femmodel->parameters->FindParam(&re,SolidearthPlanetRadiusEnum);
+
+	for (int c=0;c<5;c++) deg2coeff_local[c]=0;
+
+	for(Object* & object : femmodel->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		//first, loads on centroids
+		S=0;
+		S+=loads[element->Sid()];
+
+		if(sealevelloads) S+=sealevelloads[element->Sid()];
+		if(S!=0){
+
+			for (int c=0;c<5;c++){ //degree l=2 has 2*l+1=5 coefficients: 2,0; 2,1cos; 2,1sin; 2,2cos; 2,2sin
+				ylmindex=(4+c)*slgeom->localnel+element->lid; // starting at index=l^2
+				deg2coeff_local[c] += S/re/re*slgeom->Ylm[ylmindex];
+			}
+		}
+		//add loads on subelement barycenters
+		for (int i=0;i<SLGEOM_NUMLOADS;i++){
+			if (slgeom->issubelement[i][element->lid]){
+				intj=slgeom->subelementmapping[i][element->lid];
+				S=0;
+				S+=subloads[i][intj];
+				if(i==SLGEOM_OCEAN && sealevelloads) S+=subsealevelloads[intj];
+				if(S!=0){
+					//area=slgeom->area_subel[i][intj];
+					for (int c=0;c<5;c++){ //degree l=2 has 2*l+1=5 coefficients
+						ylmindex=(4+c)*slgeom->localnel+element->lid; // starting at index=l^2
+						deg2coeff_local[c] += S/re/re*slgeom->Ylm_subel[i][ylmindex];
+					}
+				}
+			}
+		}
+	}
+
+	//sum each degree 2 coefficient across all cpus to get global total
+	ISSM_MPI_Reduce (&deg2coeff_local[0],&deg2coeff[0],1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&deg2coeff[0],1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	ISSM_MPI_Reduce (&deg2coeff_local[1],&deg2coeff[1],1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&deg2coeff[1],1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	ISSM_MPI_Reduce (&deg2coeff_local[2],&deg2coeff[2],1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&deg2coeff[2],1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+}; /*}}}*/ 
+void GrdLoads::Combineloads(int nel,SealevelGeometry* slgeom){ /*{{{*/
+
+	int e,l, nbar, ae;
+	//Determine loads /*{{{*/
+	nactiveloads=0;
+
+	if (combined_loads) xDelete<IssmDouble>(combined_loads);
+	if (combined_loads_index) xDelete<int>(combined_loads_index);
+
+	//find non zero centroid loads, combine with sealevelloads
+	if(sealevelloads){
+		for (e=0;e<nel;e++){
+			if (loads[e]+sealevelloads[e]!=0) nactiveloads++;
+		}
+	}
+	else { 
+		for (e=0;e<nel;e++){
+			if (loads[e]!=0) nactiveloads++;
+		}
+	}
+
+	combined_loads=xNewZeroInit<IssmDouble>(nactiveloads);
+	combined_loads_index=xNewZeroInit<int>(nactiveloads);
+
+	ae=0;
+	if(sealevelloads){
+		for (e=0;e<nel;e++){
+			if (loads[e]+sealevelloads[e]!=0){
+				combined_loads[ae]=loads[e]+sealevelloads[e];
+				combined_loads_index[ae]=e;
+				ae++;
+			}
+		}
+	}
+	else { 
+		for (e=0;e<nel;e++){
+			if (loads[e]!=0){
+				combined_loads[ae]=loads[e];
+				combined_loads_index[ae]=e;
+				ae++;			
+			}
+		}
+	}
+
+
+	//subloads
+	for(l=0;l<SLGEOM_NUMLOADS;l++){
+		nactivesubloads[l]=0;
+		nbar=slgeom->nbar[l];
+		if (combined_subloads[l]) xDelete<IssmDouble>(combined_subloads[l]);
+		if (combined_subloads_index[l]) xDelete<int>(combined_subloads_index[l]);
+
+		//find non zero subelement loads, combine with subsealevelloads
+		if(subsealevelloads && l==SLGEOM_OCEAN){
+			for (e=0;e<nbar;e++){
+				if (subloads[l][e]+subsealevelloads[e]!=0) nactivesubloads[l]++;
+			}
+		}
+		else { 
+			for (e=0;e<nbar;e++){
+				if (subloads[l][e]!=0) nactivesubloads[l]++;;
+			}
+		}
+
+		combined_subloads[l]=xNewZeroInit<IssmDouble>(nactivesubloads[l]);
+		combined_subloads_index[l]=xNewZeroInit<int>(nactivesubloads[l]);
+
+		ae=0;
+		if(subsealevelloads && l==SLGEOM_OCEAN){
+			for (e=0;e<nbar;e++){
+				if (subloads[l][e]+sealevelloads[e]!=0){
+					combined_subloads[l][ae]=subloads[l][e]+sealevelloads[e];
+					combined_subloads_index[l][ae]=e;
+					ae++;
+				}
+			}
+		}
+		else { 
+			for (e=0;e<nbar;e++){
+				if (subloads[l][e]!=0){
+					combined_subloads[l][ae]=subloads[l][e];
+					combined_subloads_index[l][ae]=e;
+					ae++;			
+				}
+			}
+		}
+
+
+		/*for(l=0;l<SLGEOM_NUMLOADS;l++){
+			nbar=slgeom->nbar[l];
+			for (e=0;e<nbar;e++){
+				combined_subloads[l][e]=(subloads[l][e]);
+			}
+		}
+		if(sealevelloads){
+			nbar=slgeom->nbar[SLGEOM_OCEAN];
+			for (e=0;e<nbar;e++){
+				combined_subloads[SLGEOM_OCEAN][e]+=(subsealevelloads[e]);
+			}
+		}*/
+	}
+}; /*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/GrdLoads.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/GrdLoads.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/GrdLoads.h	(revision 27955)
@@ -0,0 +1,40 @@
+/*!\file GrdLoads.h
+ * \brief: header file for GrdLoads
+ */
+
+#ifndef _SEALEVELGRDLOADS_H_
+#define _SEALEVELGRDLOADS_H_
+
+/*Headers:*/
+#include "./SealevelGeometry.h"
+#include "../toolkits/toolkits.h"
+
+class GrdLoads{ 
+
+	public: 
+
+		int nactiveloads=0;
+		int nactivesubloads[SLGEOM_NUMLOADS];
+		Vector<IssmDouble>* vloads=NULL;
+		IssmDouble*         loads=NULL;
+		Vector<IssmDouble>* vsubloads[SLGEOM_NUMLOADS];
+		IssmDouble*         subloads[SLGEOM_NUMLOADS];
+		Vector<IssmDouble>* vsealevelloads=NULL;
+		IssmDouble*         sealevelloads=NULL;
+		Vector<IssmDouble>* vsubsealevelloads=NULL;
+		IssmDouble*         subsealevelloads=NULL;
+		int*         	    combined_loads_index=NULL;
+		int*         	    combined_subloads_index[SLGEOM_NUMLOADS];
+		IssmDouble*         combined_loads=NULL;
+		IssmDouble*         combined_subloads[SLGEOM_NUMLOADS];
+
+		GrdLoads(int nel, SealevelGeometry* slgeom);
+		~GrdLoads();
+
+		void AssembleSealevelLoads(void);
+		void BroadcastLoads(void);
+		void BroadcastSealevelLoads(void);
+		void SHDegree2Coefficients(IssmDouble* deg2coeff, FemModel* femmodel, SealevelGeometry* slgeom);
+		void Combineloads(int nel, SealevelGeometry* slgeom);
+};
+#endif  /* _SEALEVELGRDLOADS_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Hook.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Hook.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Hook.cpp	(revision 27955)
@@ -0,0 +1,253 @@
+/*!\file Hook.cpp
+ * \brief: implementation of the Hook object: see Hook.h for more explanations.
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include "./classes.h"
+#include "../shared/Enum/Enum.h"
+#include "../shared/shared.h"
+
+/*Constructor/Destructors*/
+Hook::Hook(){/*{{{*/
+	this->num     = 0;
+	this->objects = NULL;
+	this->ids     = NULL;
+	this->offsets = NULL;
+}
+/*}}}*/
+Hook::Hook(int* in_ids, int in_num){/*{{{*/
+
+	/*Get number of objects to hook*/
+	this->num=in_num;
+
+	/*Get out if num=0*/
+	if (this->num<=0){
+		/*Empty hook*/
+		this->ids     = NULL;
+		this->objects = NULL;
+		this->offsets = NULL;
+		this->num = 0;
+	}
+	else{
+		/*Allocate: */
+		this->objects=xNew<Object*>(in_num);
+		this->ids=xNew<int>(in_num);
+		this->offsets=xNew<int>(in_num);
+
+		/*Copy ids: */
+		for(int i=0;i<this->num;i++){
+			this->ids[i]     = in_ids[i];
+			this->objects[i] = NULL;
+			this->offsets[i] = 0;
+		}
+	}
+}
+/*}}}*/
+Hook::~Hook(){/*{{{*/
+	xDelete<Object*>(this->objects);
+	xDelete<int>(this->ids);
+	xDelete<int>(this->offsets);
+}
+/*}}}*/
+
+/*Some of the Object functionality: */
+Object* Hook::copy(void){/*{{{*/
+
+	/*output: */
+	Hook* output=NULL;
+
+	/*initalize output: */
+	output=new Hook(this->ids,this->num);
+
+	for(int i=0;i<output->num;i++){
+		output->objects[i] = this->objects[i];
+		output->offsets[i] = this->offsets[i];
+	}
+
+	return (Object*)output;
+}
+/*}}}*/
+void Hook::DeepEcho(void){/*{{{*/
+
+	int i;
+	if (num){
+		_printf_("   Hook: \n");
+		_printf_("      num=" << this->num << "\n");
+		_printf_("      ids: ");
+		for (i=0;i<this->num;i++) _printf_(this->ids[i] << " ");
+		_printf_("\n");
+		_printf_("      offsets: ");
+		for (i=0;i<this->num;i++) _printf_(this->offsets[i] << " ");
+		_printf_("\n");
+		if (!objects) _printf_("      warning: object not hooked yet\n");
+		else{
+			_printf_("      objects:\n   ");
+			for (i=0;i<this->num;i++){
+				_printf_("         object " << i << "\n");
+				if(objects[i]) objects[i]->DeepEcho();
+				else           _printf_("            no object hooked yet (not configured)\n");
+			}
+		}
+	}
+	else{
+		_printf_("   Hook: num=0 \n");
+	}
+}
+/*}}}*/
+void Hook::Echo(void){/*{{{*/
+	_assert_(this);
+	int i;
+	if (num){
+		_printf_("   Hook: \n");
+		_printf_("      num=" << this->num << "\n");
+		_printf_("      ids: ");
+		for(i=0;i<this->num;i++) _printf_(this->ids[i] << " ");
+		_printf_("\n");
+		_printf_("      offsets: ");
+		for (i=0;i<this->num;i++) _printf_(this->offsets[i] << " ");
+		_printf_("\n");
+	}
+	else{
+		_printf_("   Hook: num=0 \n");
+	}
+}
+/*}}}*/
+void Hook::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD) reset();
+
+	int object_enum = HookEnum;
+	marshallhandle->call(object_enum);
+	marshallhandle->call(this->num);
+	if (num<=0){
+		/*Empty hook*/
+		this->ids     = NULL;
+		this->objects = NULL;
+		this->offsets = NULL;
+		this->num = 0;
+	}
+	else{
+		marshallhandle->call(this->ids,num);
+		marshallhandle->call(this->offsets,num);
+		marshallhandle->call(this->objects,num);
+	}
+
+}
+/*}}}*/
+
+/*Hook management: */
+void Hook::configure(DataSet* dataset){/*{{{*/
+
+	/*intermediary: */
+	Object* object=NULL;
+	int i;
+
+	/*Checks if debugging mode*/
+	_assert_(this->num==0 || this->ids!=NULL);
+
+	for(i=0;i<this->num;i++){
+
+		/*is this object id -1? If so, drop this search, it was not requested: */
+		if (this->ids[i]==-1) continue;
+
+		/*Check whether existing this->objects are correct: */
+		if(this->objects[i]){
+			if(this->objects[i]->Id()==this->ids[i]) continue; //this node is good.
+			else this->objects[i]=NULL; //this node was incorrect, reset it.
+		}
+
+		/*May be the object this->offsets into this->objects are valid?: */
+		if(this->offsets[i]!=UNDEF){
+			/* Look at the this->offsets[i]'th node in the nodes dataset. If it has the correct id, 
+			 * we are good: */
+			object=(Object*)dataset->GetObjectByOffset(this->offsets[i]);
+			if (object->Id()==this->ids[i]){
+				this->objects[i]=object;
+				continue;
+			}
+			else this->offsets[i]=UNDEF; //object offset was wrong, reset it.
+		}
+		else this->offsets[i]=UNDEF;
+
+		/*Now, for this->objects that did not get resolved, and for which we have no offset, chase them in the dataset, by id: */
+		if(this->objects[i]==NULL){
+			this->objects[i]=xDynamicCast<Object*>(dataset->GetObjectById(this->offsets+i,this->ids[i])); //remember the offset for later on.
+			/*check the id is correct!: */
+			if (this->objects[i]->Id()!=this->ids[i]) _error_("wrong id: " << this->objects[i]->Id() << " vs " << this->ids[i] << "  in resolved pointer!");
+		}
+	}
+}
+/*}}}*/
+Object** Hook::deliverp(void){/*{{{*/
+	return objects;
+}
+/*}}}*/
+Object* Hook::delivers(void){/*{{{*/
+
+	/*first, check that we only have one T object in our object list: */
+	if (this->num!=1) _error_("trying to deliver a single hook object when hook holds " << this->num << " objects" << "\n");
+
+	/*check NULL: */
+	if (this->objects==NULL) _error_("hook is not pointing to any object, objects pointer is NULL");
+
+	return *objects;
+}
+
+/*}}}*/
+int Hook::GetNum(void){/*{{{*/
+	return this->num;
+}
+/*}}}*/
+int* Hook::Ids(void){/*{{{*/
+	return this->ids;
+}
+/*}}}*/
+void Hook::reset(){/*{{{*/
+
+	/*intermediary: */
+	Object* object=NULL;
+	int i;
+
+	for(i=0;i<this->num;i++){
+			this->objects[i]=NULL; //reset this node.
+	}
+}
+/*}}}*/
+Hook* Hook::Spawn(int* indices, int numindices){/*{{{*/
+
+	/*allocate output*/
+	Hook* output=new Hook();
+
+	/*If this Hook is empty, simply return*/
+	if(this->num==0){
+		output->num=0;
+		return output;
+	}
+
+	/*Else, check that we are requesting a half of num*/
+	if(numindices>this->num) _error_("Cannot spawn hook with " << numindices << " objects from a Hook of " << this->num << " objects");
+
+	/*go pickup the correct objects, ids and offsets :*/
+	output->num=numindices;
+	if(output->num<1) _error_("Trying to spawn an empty ElementProperties!");
+
+	output->objects = xNew<Object*>(output->num);
+	output->ids     = xNew<int>(output->num);
+	output->offsets = xNew<int>(output->num);
+
+	for(int i=0;i<output->num;i++){
+		output->objects[i] = this->objects[indices[i]];
+		output->ids[i]     = this->ids[indices[i]];
+		output->offsets[i] = this->offsets[indices[i]];
+	}
+
+	return output;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Hook.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Hook.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Hook.h	(revision 27955)
@@ -0,0 +1,49 @@
+/*!\file Hook.h
+ * \brief: header file for hook object.
+ * A hook is a class  that can store the id, offset, and object corresponding to this id and offset into a dataset.
+ * For example, an element has a hook to its nodes. A node has a hook to its vertex.  The hook abstracts the need for having
+ * ids and offsets (necesarry for proper configuration of an object) in our objects. 
+ */
+
+#ifndef _HOOK_H_
+#define _HOOK_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../datastructures/datastructures.h"
+/*}}}*/
+
+class Hook{
+
+	private: 
+
+		int     *ids;       //list of object ids, to go look for them in datasets.
+		int      num;       //number of objects being hooked onto
+		Object **objects;   //list of object pointers
+		int     *offsets;   //list of object offsets into datasets, to speed up lookup.
+
+	public:
+
+		/*Hook constructors, destructors: {{{*/
+		Hook();
+		Hook(int* ids, int num);
+		~Hook();
+		/*}}}*/
+		/*Object like functionality:{{{*/
+		Object*    copy(void);
+		void       DeepEcho(void);
+		void       Echo(void);
+		void       Marshall(MarshallHandle* marshallhandle);
+		/*}}}*/
+		/*Hook management: {{{*/
+		void       configure(DataSet* dataset);
+		Object**   deliverp(void); //deliver all objects
+		Object*    delivers(void); //single object deliver
+		int        GetNum(void);
+		int*       Ids(void);
+		void       reset(void);
+		Hook*      Spawn(int* indices, int numindices);
+		/*}}}*/
+};
+
+#endif  /* _HOOK_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/ArrayInput.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/ArrayInput.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/ArrayInput.cpp	(revision 27955)
@@ -0,0 +1,164 @@
+/*!\file ArrayInput.c
+ * \brief: implementation of the ArrayInput object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+#include "./ArrayInput.h"
+
+/*ArrayInput constructors and destructor*/
+ArrayInput::ArrayInput(void){/*{{{*/
+
+	this->numberofelements_local = -1;
+	this->N                      = NULL;
+	this->values                 = NULL;
+
+}/*}}}*/
+ArrayInput::ArrayInput(int nbe_in){/*{{{*/
+
+	_assert_(nbe_in>0);
+	_assert_(nbe_in<1e11);
+	this->numberofelements_local = nbe_in;
+	this->N                      = xNewZeroInit<int>(this->numberofelements_local);
+	this->values                 = xNewZeroInit<IssmDouble*>(this->numberofelements_local);
+
+}/*}}}*/
+ArrayInput::~ArrayInput(){/*{{{*/
+	if(this->values){
+		for(int i=0;i<this->numberofelements_local;i++) if(this->values[i]) xDelete<IssmDouble>(this->values[i]);
+		xDelete<IssmDouble>(this->values);
+	}
+	if(this->N) xDelete<int>(this->N);
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Input* ArrayInput::copy() {/*{{{*/
+
+	ArrayInput* output = new ArrayInput(this->numberofelements_local);
+
+	xMemCpy<int>(output->N,this->N,this->numberofelements_local);
+
+	for(int i=0;i<this->numberofelements_local;i++){
+		if(this->values[i]){
+			_assert_(this->N[i]>0);
+			output->values[i] = xNew<IssmDouble>(this->N[i]);
+			xMemCpy<IssmDouble>(output->values[i],this->values[i],this->N[i]);
+		}
+		else{
+			output->values[i] = NULL;
+		}
+	}
+
+	return output;
+}
+/*}}}*/
+void ArrayInput::DeepEcho(void){/*{{{*/
+	_printf_("ArrayInput Echo:\n");
+	///_printf_("   Size:          "<<N<<"\n");
+	//printarray(this->values,this->M,this->N);
+	//_printf_(setw(15)<<"   ArrayInput "<<setw(25)<<left<<EnumToStringx(this->enum_type)<<" "<<(value?"true":"false") << "\n");
+}
+/*}}}*/
+void ArrayInput::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  ArrayInput::Id(void){/*{{{*/
+	return -1;
+}/*}}}*/
+void ArrayInput::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = ArrayInputEnum;
+	marshallhandle->call(object_enum);
+	marshallhandle->call(this->numberofelements_local);
+
+	/*Allocate memory if reading restart file*/
+	if(marshallhandle->OperationNumber() == MARSHALLING_LOAD){
+		_assert_(this->numberofelements_local>0);
+		_assert_(this->numberofelements_local<1e11);
+		if(this->numberofelements_local){
+			this->N                      = xNewZeroInit<int>(this->numberofelements_local);
+			this->values                 = xNewZeroInit<IssmDouble*>(this->numberofelements_local);
+		}
+		else{
+			this->N      = NULL;
+			this->values = NULL;
+		}
+	}
+
+	/*Marshall N*/
+	if(this->numberofelements_local){
+		marshallhandle->call(this->N,this->numberofelements_local);
+	}
+
+	/*Marshall individual arrays*/
+	if(this->numberofelements_local){
+		for(int i=0;i<this->numberofelements_local;i++){
+			if(this->N[i]){
+
+				/*Allocate if reading restart*/
+				if(marshallhandle->OperationNumber() == MARSHALLING_LOAD){
+					this->values[i] = xNew<IssmDouble>(this->N[i]);
+				}
+				_assert_(this->values[i]);
+				marshallhandle->call(this->values[i],this->N[i]);
+			}
+		}
+	}
+}
+/*}}}*/
+int  ArrayInput::ObjectEnum(void){/*{{{*/
+	return ArrayInputEnum;
+}
+/*}}}*/
+
+/*ArrayInput management*/
+void ArrayInput::SetInput(int row,int numindices,IssmDouble* values_in){/*{{{*/
+
+	_assert_(this);
+	_assert_(row>=0 && row<this->numberofelements_local);
+
+	if(this->N[row] != numindices){
+		if(this->values[row]) xDelete<IssmDouble>(this->values[row]);
+		this->values[row] = xNew<IssmDouble>(numindices);
+	}
+
+	IssmDouble *el_values = this->values[row];
+	for(int i=0;i<numindices;i++) el_values[i] = values_in[i];
+
+	this->N[row] = numindices;
+}
+/*}}}*/
+void ArrayInput::GetArray(int row,IssmDouble** pvalues,int* pN){/*{{{*/
+
+	_assert_(this);
+	_assert_(row>=0 && row<this->numberofelements_local);
+	if(pvalues){
+		IssmDouble* outvalues = xNew<IssmDouble>(this->N[row]);
+		xMemCpy<IssmDouble>(outvalues,this->values[row],this->N[row]);
+		*pvalues = outvalues;
+	}
+	if(pN){
+		*pN = this->N[row];
+	}
+}
+/*}}}*/
+void ArrayInput::GetArrayPtr(int row,IssmDouble** pvalues,int* pN){/*{{{*/
+
+	_assert_(this);
+	_assert_(row>=0 && row<this->numberofelements_local);
+	if(pvalues){
+		*pvalues = this->values[row];
+	}
+	if(pN){
+		*pN = this->N[row];
+	}
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/ArrayInput.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/ArrayInput.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/ArrayInput.h	(revision 27955)
@@ -0,0 +1,34 @@
+#ifndef _ARRAYINPUT2_H_
+#define _ARRAYINPUT2_H_
+
+/*Headers:*/
+#include "./Input.h"
+
+class ArrayInput: public Input{
+
+	private:
+		int         numberofelements_local;
+		int*        N;
+		IssmDouble** values;
+
+	public:
+		/*ArrayInput constructors, destructors: {{{*/
+		ArrayInput();
+		ArrayInput(int nbe_in);
+		~ArrayInput();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Input *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+		/*}}}*/
+		/*ArrayInput management:*/
+		void SetInput(int row,int numinds,IssmDouble* values_in);
+		void GetArray(int row,IssmDouble** pvalues,int* pN);
+		void GetArrayPtr(int row,IssmDouble** pvalues,int* pN);
+
+};
+#endif  /* _ARRAYINPUT_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/BoolInput.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/BoolInput.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/BoolInput.cpp	(revision 27955)
@@ -0,0 +1,95 @@
+/*!\file BoolInput.c
+ * \brief: implementation of the BoolInput object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "./BoolInput.h"
+#include "../../shared/shared.h"
+
+/*BoolInput constructors and destructor*/
+BoolInput::BoolInput(){/*{{{*/
+	this->size   = -1;
+	this->values = NULL;
+}
+/*}}}*/
+BoolInput::BoolInput(int size_in){/*{{{*/
+	_assert_(size_in>0);
+	_assert_(size_in<1e11);
+	this->size   = size_in;
+	this->values = xNew<bool>(size_in);
+}
+/*}}}*/
+BoolInput::~BoolInput(){/*{{{*/
+	xDelete<bool>(this->values);
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Input* BoolInput::copy() {/*{{{*/
+
+	_assert_(this->size);
+	BoolInput* output = new BoolInput(this->size);
+	xMemCpy<bool>(output->values,this->values,this->size);
+
+	return output;
+
+}
+/*}}}*/
+void BoolInput::DeepEcho(void){/*{{{*/
+
+	_printf_("BoolInput Echo:\n");
+	_printf_("   Size:          "<<size<<"\n");
+	printarray(this->values,this->size);
+}
+/*}}}*/
+void BoolInput::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  BoolInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void BoolInput::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = BoolInputEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->size);
+	if(this->size > 0){
+		marshallhandle->call(this->values,this->size);
+	}
+	else this->values = NULL;
+
+}
+/*}}}*/
+int  BoolInput::ObjectEnum(void){/*{{{*/
+
+	return BoolInputEnum;
+
+}
+/*}}}*/
+
+/*BoolInput management*/
+void BoolInput::GetInput(bool* pvalue,int index){/*{{{*/
+
+	_assert_(index>=0); 
+	_assert_(index<this->size); 
+
+	*pvalue = this->values[index];
+}
+/*}}}*/
+void BoolInput::SetInput(int index,bool value){/*{{{*/
+
+	_assert_(index>=0); 
+	_assert_(index<this->size); 
+
+	this->values[index] = value;
+}
+/*}}}*/
+
+/*Object functions*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/BoolInput.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/BoolInput.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/BoolInput.h	(revision 27955)
@@ -0,0 +1,35 @@
+#ifndef _BOOLINPUT2_H_
+#define _BOOLINPUT2_H_
+
+/*Headers:*/
+#include "./Input.h"
+
+class BoolInput: public Input{
+
+	private:
+		int   size;
+		bool* values;
+
+	public:
+		/*BoolInput constructors, destructors: {{{*/
+		BoolInput();
+		BoolInput(int size_in);
+		~BoolInput();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Input *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+		/*}}}*/
+		/*BoolInput management: {{{*/
+		void GetInput(bool* pvalue,int index);
+		void SetInput(int index,bool value);
+		/*}}}*/
+		/*numerics: {{{*/
+		/*}}}*/
+
+};
+#endif  /* _BOOLINPUT_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/ControlInput.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/ControlInput.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/ControlInput.cpp	(revision 27955)
@@ -0,0 +1,324 @@
+/*!\file ControlInput.c
+ * \brief: implementation of the ControlInput object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./ControlInput.h"
+#include "./ElementInput.h"
+#include "./TriaInput.h"
+#include "./PentaInput.h"
+#include "./TransientInput.h"
+//#include "../../toolkits/objects/Vector.h"
+
+/*ControlInput constructors and destructor*/
+ControlInput::ControlInput(){/*{{{*/
+	control_id  = 0;
+	values      = NULL;
+	savedvalues = NULL;
+	minvalues   = NULL;
+	maxvalues   = NULL;
+	gradient    = NULL;
+}
+/*}}}*/
+ControlInput::ControlInput(int nbe, int nbv,int input_layout_enum,int interp,int id){/*{{{*/
+
+	this->control_id  = id;
+	this->layout_enum = input_layout_enum;
+
+	switch(this->layout_enum){
+		case TriaInputEnum:
+			this->values     =new TriaInput(nbe,nbv,interp);
+			this->savedvalues=new TriaInput(nbe,nbv,interp);
+			this->minvalues  =new TriaInput(nbe,nbv,interp);
+			this->maxvalues  =new TriaInput(nbe,nbv,interp);
+			this->gradient   =new TriaInput(nbe,nbv,interp);
+			break;
+		case PentaInputEnum:
+			this->values     =new PentaInput(nbe,nbv,interp);
+			this->savedvalues=new PentaInput(nbe,nbv,interp);
+			this->minvalues  =new PentaInput(nbe,nbv,interp);
+			this->maxvalues  =new PentaInput(nbe,nbv,interp);
+			this->gradient   =new PentaInput(nbe,nbv,interp);
+			break;
+		default:
+			_error_("Input of Enum \"" << EnumToStringx(input_layout_enum) << "\" not supported yet by ControlInput");
+	}
+}
+/*}}}*/
+ControlInput::ControlInput(int enum_in,int nbe, int nbv,int id,IssmDouble* times, int numtimes){/*{{{*/
+
+	this->enum_type   = enum_in;
+	this->control_id  = id;
+	this->layout_enum = TransientInputEnum; /*Tria or Penta?*/
+
+	this->values     =new TransientInput(enum_in,nbe,nbv,times,numtimes);
+	this->savedvalues=new TransientInput(enum_in,nbe,nbv,times,numtimes);
+	this->minvalues  =new TransientInput(enum_in,nbe,nbv,times,numtimes);
+	this->maxvalues  =new TransientInput(enum_in,nbe,nbv,times,numtimes);
+	this->gradient   =new TransientInput(enum_in,nbe,nbv,times,numtimes);
+}
+/*}}}*/
+ControlInput::~ControlInput(){/*{{{*/
+	if(values)      delete values;
+	if(savedvalues) delete savedvalues;
+	if(minvalues)   delete minvalues;
+	if(maxvalues)   delete maxvalues;
+	if(gradient)    delete gradient;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Input* ControlInput::copy() {/*{{{*/
+
+	ControlInput* output=NULL;
+
+	output = new ControlInput();
+	output->enum_type=this->enum_type;
+	output->control_id=this->control_id;
+	output->layout_enum = this->layout_enum;
+
+	if(values)      output->values      = this->values->copy();
+	if(savedvalues) output->savedvalues = this->savedvalues->copy();
+	if(minvalues)   output->minvalues   = this->minvalues->copy();
+	if(maxvalues)   output->maxvalues   = this->maxvalues->copy();
+	if(gradient)    output->gradient    = this->gradient->copy();
+
+	return output;
+}
+/*}}}*/
+void ControlInput::Configure(Parameters* params){/*{{{*/
+	this->values->Configure(params);
+	this->savedvalues->Configure(params);
+	this->minvalues->Configure(params);
+	this->maxvalues->Configure(params);
+	this->gradient->Configure(params);
+}
+/*}}}*/
+void ControlInput::DeepEcho(void){/*{{{*/
+
+	_printf_("ControlInput:\n");
+	_printf_(setw(15)<<"   ControlInput "<<setw(25)<<left<<EnumToStringx(this->enum_type)<<"\n");
+	_printf_(setw(15)<<"   Layout       "<<setw(25)<<left<<EnumToStringx(this->layout_enum)<<"\n");
+	_printf_("---values: \n");     if (values)      values->Echo();
+	_printf_("---savedvalues: \n");if (savedvalues) savedvalues->Echo();
+	_printf_("---minvalues: \n");  if (minvalues)   minvalues->Echo();
+	_printf_("---maxvalues: \n");  if (maxvalues)   maxvalues->Echo();
+	_printf_("---gradient: \n");   if (gradient){    gradient->Echo();} else{_printf_("     Not set yet\n");}
+}
+/*}}}*/
+void ControlInput::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  ControlInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void ControlInput::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = ControlInputEnum;
+   marshallhandle->call(object_enum);
+
+   marshallhandle->call(this->control_id);
+	marshallhandle->call(this->enum_type);
+	marshallhandle->call(this->layout_enum);
+
+	/*Allocate memory*/
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD){
+		switch(this->layout_enum){
+			case TriaInputEnum:
+				this->values     =new TriaInput();
+				this->savedvalues=new TriaInput();
+				this->minvalues  =new TriaInput();
+				this->maxvalues  =new TriaInput();
+				this->gradient   =new TriaInput();
+				break;
+			case PentaInputEnum:
+				this->values     =new PentaInput();
+				this->savedvalues=new PentaInput();
+				this->minvalues  =new PentaInput();
+				this->maxvalues  =new PentaInput();
+				this->gradient   =new PentaInput();
+				break;
+			case TransientInputEnum:
+				this->values     =new TransientInput();
+				this->savedvalues=new TransientInput();
+				this->minvalues  =new TransientInput();
+				this->maxvalues  =new TransientInput();
+				this->gradient   =new TransientInput();
+				break;
+			default:
+				_error_("Input of Enum \"" << EnumToStringx(this->layout_enum) << "\" not supported yet");
+		}
+	}
+
+	this->values->Marshall(marshallhandle);
+	this->savedvalues->Marshall(marshallhandle);
+	this->minvalues->Marshall(marshallhandle);
+	this->maxvalues->Marshall(marshallhandle);
+	this->gradient->Marshall(marshallhandle);
+}
+/*}}}*/
+int  ControlInput::ObjectEnum(void){/*{{{*/
+
+	return ControlInputEnum;
+
+}
+/*}}}*/
+
+void ControlInput::SetControl(int interp,int numindices,int* indices,IssmDouble* values_in,IssmDouble* values_min,IssmDouble* values_max){/*{{{*/
+
+	_assert_(this);
+
+	/*Set input*/
+	if(this->values->ObjectEnum()==TriaInputEnum || this->values->ObjectEnum()==PentaInputEnum){
+		xDynamicCast<ElementInput*>(this->values)->SetInput(interp,numindices,indices,values_in);
+		xDynamicCast<ElementInput*>(this->minvalues)->SetInput(interp,numindices,indices,values_min);
+		xDynamicCast<ElementInput*>(this->maxvalues)->SetInput(interp,numindices,indices,values_max);
+	}
+	else{
+		_error_("not supported");
+	}
+}
+/*}}}*/
+void ControlInput::SetGradient(int interp,int numindices,int* indices,IssmDouble* values_in){/*{{{*/
+
+	_assert_(this);
+	_assert_(this->gradient);
+	if(this->gradient->ObjectEnum()==TriaInputEnum || this->gradient->ObjectEnum()==PentaInputEnum){
+		xDynamicCast<ElementInput*>(this->gradient)->SetInput(interp,numindices,indices,values_in);
+	}
+	else{
+		_error_("not supported");
+	}
+}
+/*}}}*/
+void ControlInput::SetGradient(int interp,int numindices,int* indices,IssmDouble* values_in,int n){/*{{{*/
+
+	if(this->values->ObjectEnum()!=TransientInputEnum)_error_("you are in the wrong place, go home");
+	_assert_(this);
+	_assert_(this->gradient);
+	_error_("S");
+
+	//TransientInput* transient_input = xDynamicCast<TransientInput*>(this->gradient);
+	//TransientInput* values_input    = xDynamicCast<TransientInput*>(this->values);
+	//if(values_input->numtimesteps==transient_input->numtimesteps){
+	//	TransientInput* new_trans_input = new TransientInput(ControlInputGradEnum);
+	//	IssmDouble time = transient_input->GetTimeByOffset(timestep);
+	//	for(int i=0;i<transient_input->numtimesteps;i++){
+	//		if(transient_input->timesteps[i]==time) new_trans_input->AddTimeInput(xDynamicCast<TriaInput*>(gradient_in),time);
+	//		else {
+	//			Input* input = transient_input->GetTimeInput(transient_input->timesteps[i]);
+	//			new_trans_input->AddTimeInput(xDynamicCast<TriaInput*>(input),transient_input->timesteps[i]);
+	//		}
+	//	}
+	//	this->gradient=new_trans_input;
+	//}
+	//else{
+	//	IssmDouble time = values_input->GetTimeByOffset(timestep);
+	//	transient_input->AddTimeInput(gradient_in,time);
+	//}
+
+	//NEW??
+	//this->gradient->SetInput(interp,numindices,indices,values_in);
+}
+/*}}}*/
+void ControlInput::AverageAndReplace(void){/*{{{*/
+	this->values->AverageAndReplace();
+}
+/*}}}*/
+TriaInput* ControlInput::GetTriaInput(){/*{{{*/
+
+	/*Cast and return*/
+	if(this->values->ObjectEnum()==TriaInputEnum){
+		return xDynamicCast<TriaInput*>(this->values);
+	}
+	else if(this->values->ObjectEnum()==TransientInputEnum){
+		return xDynamicCast<TransientInput*>(this->values)->GetTriaInput();
+	}
+	else{
+		_error_("Cannot return a TriaInput");
+	}
+
+}
+/*}}}*/
+PentaInput* ControlInput::GetPentaInput(){/*{{{*/
+
+	/*Cast and return*/
+	if(this->values->ObjectEnum()!=PentaInputEnum){
+		_error_("Cannot return a PentaInput");
+	}
+	return xDynamicCast<PentaInput*>(this->values);
+
+}
+/*}}}*/
+ElementInput* ControlInput::GetInput(const char* data){/*{{{*/
+
+	if(this->gradient->ObjectEnum()==TriaInputEnum || this->gradient->ObjectEnum()==PentaInputEnum){
+		if(strcmp(data,"value")==0){
+			_assert_(values);
+			return xDynamicCast<ElementInput*>(values);
+		}
+		else if(strcmp(data,"savedvalues")==0){
+			_assert_(savedvalues);
+			return xDynamicCast<ElementInput*>(values);
+		}
+		else if (strcmp(data,"lowerbound")==0){
+			_assert_(minvalues);
+			return xDynamicCast<ElementInput*>(minvalues);
+		}
+		else if (strcmp(data,"upperbound")==0){
+			_assert_(maxvalues);
+			return xDynamicCast<ElementInput*>(maxvalues);
+		}
+		else if (strcmp(data,"gradient")==0){
+			_assert_(gradient);
+			return xDynamicCast<ElementInput*>(gradient);
+		}
+		else{
+			_error_("Data " << data << " not supported yet");
+		}
+	}
+	else{
+		int* temp = xNew<int>(3);
+		_error_("Gradient is of type "<<EnumToStringx(this->gradient->ObjectEnum()) <<", which is not supported yet");
+	}
+
+}
+/*}}}*/
+TransientInput* ControlInput::GetTransientInput(const char* data){/*{{{*/
+
+	if(this->values->ObjectEnum()==TransientInputEnum){
+		if(strcmp(data,"value")==0){
+			_assert_(values);
+			return xDynamicCast<TransientInput*>(values);
+		}
+		else if(strcmp(data,"savedvalues")==0){
+			_assert_(savedvalues);
+			return xDynamicCast<TransientInput*>(values);
+		}
+		else if (strcmp(data,"lowerbound")==0){
+			_assert_(minvalues);
+			return xDynamicCast<TransientInput*>(minvalues);
+		}
+		else if (strcmp(data,"upperbound")==0){
+			_assert_(maxvalues);
+			return xDynamicCast<TransientInput*>(maxvalues);
+		}
+		else if (strcmp(data,"gradient")==0){
+			_assert_(gradient);
+			return xDynamicCast<TransientInput*>(gradient);
+		}
+		else{
+			_error_("Data " << data << " not supported yet");
+		}
+	}
+	else{
+		_error_("not supported");
+	}
+
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/ControlInput.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/ControlInput.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/ControlInput.h	(revision 27955)
@@ -0,0 +1,52 @@
+/*! \file ControlInput.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _CONTROLINPUT2_H_
+#define _CONTROLINPUT2_H_
+
+/*Headers:*/
+#include "./Input.h"
+class Gauss;
+class ElementInput;
+class TransientInput;
+
+class ControlInput: public Input{
+
+	public:
+		int    control_id;
+		int    enum_type;
+		int    layout_enum;
+		Input *gradient;
+		Input *maxvalues;
+		Input *minvalues;
+		Input *savedvalues;
+		Input *values;
+
+		/*ControlInput constructors, destructors: {{{*/
+		ControlInput();
+		ControlInput(int nbe, int nbv,int input_layout_enum,int interp,int id);
+		ControlInput(int enum_in,int nbe, int nbv,int id,IssmDouble* times, int numtimes);
+		~ControlInput();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Input* copy();
+		void   Configure(Parameters* params);
+		void   DeepEcho();
+		void   Echo();
+		int    Id(); 
+		void   Marshall(MarshallHandle* marshallhandle);
+		int    ObjectEnum();
+		/*}}}*/
+		void SetInput(Input* in_input){_error_("not impelemented");};
+		void SetInput(Input* in_input,int timeoffset){_error_("not impelemented");};
+		ElementInput* GetInput(const char* data);
+		TransientInput* GetTransientInput(const char* data);
+		void SetControl(int interp,int numindices,int* indices,IssmDouble* values_in,IssmDouble* values_min,IssmDouble* values_max);
+		void SetGradient(int interp,int numindices,int* indices,IssmDouble* values_in);
+		void SetGradient(int interp,int numindices,int* indices,IssmDouble* values_in,int n);
+		TriaInput* GetTriaInput();
+		PentaInput* GetPentaInput();
+		void AverageAndReplace(void);
+};
+#endif  /* _CONTROLINPUT_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/DatasetInput.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/DatasetInput.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/DatasetInput.cpp	(revision 27955)
@@ -0,0 +1,331 @@
+/*!\file DatasetInput.c
+ * \brief: implementation of the datasetinput object
+ */
+/*Headers*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./DatasetInput.h"
+#include "./TriaInput.h"
+#include "./PentaInput.h"
+#include "./TransientInput.h"
+
+/*DatasetInput constructors and destructor*/
+DatasetInput::DatasetInput(){/*{{{*/
+	this->inputs    = NULL;
+	this->numids    = 0;
+	this->ids       = NULL;
+	this->numberofelements_local = -1;
+	this->numberofvertices_local = -1;
+}
+/*}}}*/
+DatasetInput::DatasetInput(int nbe, int nbv){/*{{{*/
+	this->inputs    = NULL;
+	this->numids    = 0;
+	this->ids       = NULL;
+	this->numberofelements_local = nbe;
+	this->numberofvertices_local = nbv;
+}
+/*}}}*/
+DatasetInput::~DatasetInput(){/*{{{*/
+	xDelete<int>(this->ids);
+	for(int i=0;i<this->numids;i++){
+		delete this->inputs[i];
+	}
+	xDelete<Input*>(this->inputs);
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Input* DatasetInput::copy() {/*{{{*/
+
+	DatasetInput* output=NULL;
+
+	output = new DatasetInput();
+	output->numids=this->numids;
+	if(this->numids>0){
+		output->ids=xNew<int>(output->numids);
+		xMemCpy(output->ids,this->ids,output->numids);
+		output->inputs = xNew<Input*>(this->numids);
+		for(int i=0;i<this->numids;i++){
+			output->inputs[i] = this->inputs[i]->copy();
+		}
+	}
+
+	return output;
+}
+/*}}}*/
+void DatasetInput::Configure(Parameters* params){/*{{{*/
+	for(int i=0;i<this->numids;i++){
+		this->inputs[i]->Configure(params);
+	}
+}
+/*}}}*/
+void DatasetInput::DeepEcho(void){/*{{{*/
+
+	_printf_("DatasetInput:\n");
+	_printf_("   numids:"<< this->numids<< "\n");
+	_printf_("      ids: ");
+	for(int i=0;i<this->numids;i++) _printf_(this->ids[i]<<" ("<<EnumToStringx(this->ids[i])<<") ");
+	_printf_("\n");
+	//_printf_("   inputs: \n"); inputs->Echo();
+}
+/*}}}*/
+void DatasetInput::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  DatasetInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void DatasetInput::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = DatasetInputEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->numids);
+	marshallhandle->call(this->numberofelements_local);
+	marshallhandle->call(this->numberofvertices_local);
+	marshallhandle->call(this->ids,numids);
+
+	/*Allocate memory if need be*/
+	int N = this->numids; _assert_(N>=0 && N<1e6);
+	if(marshallhandle->OperationNumber() == MARSHALLING_LOAD){
+		if(N){
+			this->inputs = xNew<Input*>(N);
+			for(int i=0;i<N;i++) this->inputs[i] = NULL;
+		}
+		else{
+			this->inputs = NULL;
+		}
+	}
+
+	/*Marshall!*/
+	if(marshallhandle->OperationNumber()!=MARSHALLING_LOAD){
+		for(int i=0;i<N;i++){
+			_assert_(this->inputs[i]);
+			object_enum = this->inputs[i]->ObjectEnum();
+			marshallhandle->call(object_enum);
+			this->inputs[i]->Marshall(marshallhandle);
+		}
+	}
+	else{
+		for(int i=0;i<N;i++){
+			marshallhandle->call(object_enum);
+
+			if(object_enum==TriaInputEnum){
+				TriaInput* triainput2=new TriaInput();
+				triainput2->Marshall(marshallhandle);
+				this->inputs[i]=triainput2;
+			}
+			else if(object_enum==PentaInputEnum){
+				PentaInput* pentainput2=new PentaInput();
+				pentainput2->Marshall(marshallhandle);
+				this->inputs[i]=pentainput2;
+			}
+			else if(object_enum==TransientInputEnum){
+				TransientInput* transinput2=new TransientInput();
+				transinput2->Marshall(marshallhandle);
+				this->inputs[i]=transinput2;
+			}
+			else{
+				_error_("input "<<EnumToStringx(object_enum)<<" not supported");
+			}
+		}
+	}
+
+}
+/*}}}*/
+int  DatasetInput::ObjectEnum(void){/*{{{*/
+	return DatasetInputEnum;
+}/*}}}*/
+
+void DatasetInput::SetTriaInput(int id,int interp_in,int numinds,int* rows,IssmDouble* values_in){ /*{{{*/
+
+	int  index = -1;
+	for(int i=0;i<this->numids;i++){
+		if(this->ids[i] == id) index = i;
+	}
+
+	/*Create new input if not found*/
+	if(index == -1){
+		int* new_ids = xNew<int>(this->numids+1);
+		if(this->numids) xMemCpy(new_ids,this->ids,this->numids);
+		new_ids[this->numids] = id;
+
+		Input** new_inputs = xNew<Input*>(this->numids+1);
+		if(this->numids) xMemCpy(new_inputs,this->inputs,this->numids);
+		new_inputs[this->numids] = new TriaInput(this->numberofelements_local,this->numberofvertices_local,interp_in);
+		index = this->numids;
+
+		xDelete<int>(this->ids);
+		this->ids = new_ids;
+		xDelete<Input*>(this->inputs);
+		this->inputs = new_inputs;
+
+		this->numids ++;
+	}
+
+	/*Set input*/
+	if(this->inputs[index]->ObjectEnum()!=TriaInputEnum) _error_("cannot add Element values to a "<<EnumToStringx(this->inputs[index]->ObjectEnum()));
+	TriaInput* input = xDynamicCast<TriaInput*>(this->inputs[index]);
+	input->SetInput(interp_in,numinds,rows,values_in);
+
+}
+/*}}}*/
+void DatasetInput::SetPentaInput(int id,int interp_in,int numinds,int* rows,IssmDouble* values_in){ /*{{{*/
+
+	int  index = -1;
+	for(int i=0;i<this->numids;i++){
+		if(this->ids[i] == id) index = i;
+	}
+
+	/*Create new input if not found*/
+	if(index == -1){
+		int* new_ids = xNew<int>(this->numids+1);
+		if(this->numids) xMemCpy(new_ids,this->ids,this->numids);
+		new_ids[this->numids] = id;
+
+		Input** new_inputs = xNew<Input*>(this->numids+1);
+		if(this->numids) xMemCpy(new_inputs,this->inputs,this->numids);
+		new_inputs[this->numids] = new PentaInput(this->numberofelements_local,this->numberofvertices_local,interp_in);
+		index = this->numids;
+
+		xDelete<int>(this->ids);
+		this->ids = new_ids;
+		xDelete<Input*>(this->inputs);
+		this->inputs = new_inputs;
+
+		this->numids ++;
+	}
+
+	/*Set input*/
+	if(this->inputs[index]->ObjectEnum()!=PentaInputEnum) _error_("cannot add Element values to a "<<EnumToStringx(this->inputs[index]->ObjectEnum()));
+	PentaInput* input = xDynamicCast<PentaInput*>(this->inputs[index]);
+	input->SetInput(interp_in,numinds,rows,values_in);
+
+}
+/*}}}*/
+TransientInput* DatasetInput::SetTransientInput(int id,IssmDouble* times,int numtimes){ /*{{{*/
+
+	int  index = -1;
+	for(int i=0;i<this->numids;i++){
+		if(this->ids[i] == id) index = i;
+	}
+
+	/*Create new input if not found*/
+	if(index == -1){
+		int* new_ids = xNew<int>(this->numids+1);
+		if(this->numids) xMemCpy(new_ids,this->ids,this->numids);
+		new_ids[this->numids] = id;
+
+		Input** new_inputs = xNew<Input*>(this->numids+1);
+		if(this->numids) xMemCpy(new_inputs,this->inputs,this->numids);
+		new_inputs[this->numids] = new TransientInput(NoneEnum,this->numberofelements_local,this->numberofvertices_local,times,numtimes);
+		index = this->numids;
+
+		xDelete<int>(this->ids);
+		this->ids = new_ids;
+		xDelete<Input*>(this->inputs);
+		this->inputs = new_inputs;
+
+		this->numids ++;
+	}
+
+	/*Set input*/
+	if(this->inputs[index]->ObjectEnum()!=TransientInputEnum) _error_("cannot add values to a "<<EnumToStringx(this->inputs[index]->ObjectEnum()));
+	TransientInput* input = xDynamicCast<TransientInput*>(this->inputs[index]);
+	return input;
+}
+/*}}}*/
+void DatasetInput::GetInputValue(IssmDouble* pvalue,Gauss* gauss,int id){ /*{{{*/
+
+	int  index = -1;
+	for(int i=0;i<this->numids;i++){
+		if(this->ids[i] == id) index = i;
+	}
+
+	/*Create new input if not found*/
+	if(index == -1){
+		this->Echo();
+		_error_("Could not find input "<<id<<" ("<<EnumToStringx(id)<<"?) in DatasetInput");
+	}
+
+	Input* input = this->inputs[index];
+
+	if(this->inputs[index]->ObjectEnum()==TransientInputEnum){
+		input = xDynamicCast<TransientInput*>(this->inputs[index])->current_input;
+	}
+
+	input->GetInputValue(pvalue,gauss);
+
+}
+/*}}}*/
+IssmDouble DatasetInput::GetInputMin(void){ /*{{{*/
+
+	IssmDouble minvalue,newminvalue;
+	for(int i=0;i<this->numids;i++){
+
+		Input* input = this->inputs[i];
+
+		if(this->inputs[i]->ObjectEnum()==TransientInputEnum){
+			input = xDynamicCast<TransientInput*>(this->inputs[i])->current_input;
+		}
+		newminvalue=input->GetInputMin();
+		if(i==0)minvalue=newminvalue;
+		else minvalue=min(minvalue,newminvalue);
+	}
+	return minvalue;
+
+}
+/*}}}*/
+TransientInput* DatasetInput::GetTransientInputByOffset(int offset){/*{{{*/
+
+	_assert_(offset>=0 && offset<this->numids);
+	_assert_(this->inputs[offset]);
+
+	/*Cast and return*/
+	if(this->inputs[offset]->ObjectEnum()==TransientInputEnum){
+		return xDynamicCast<TransientInput*>(this->inputs[offset]);
+	}
+	else{
+		_error_("Cannot return a TransientInput");
+	}
+}/*}}}*/
+TriaInput* DatasetInput::GetTriaInput(void){/*{{{*/
+
+	return this->GetTriaInputByOffset(0);
+
+}/*}}}*/
+TriaInput* DatasetInput::GetTriaInputByOffset(int offset){/*{{{*/
+
+	_assert_(offset>=0 && offset<this->numids);
+	_assert_(this->inputs[offset]);
+
+	/*Cast and return*/
+	if(this->inputs[offset]->ObjectEnum()==TransientInputEnum){
+		return xDynamicCast<TransientInput*>(this->inputs[offset])->GetTriaInput();
+	}
+	if(this->inputs[offset]->ObjectEnum()!=TriaInputEnum){
+		_error_("Cannot return a TriaInput");
+	}
+	return xDynamicCast<TriaInput*>(this->inputs[offset]);
+
+}/*}}}*/
+PentaInput* DatasetInput::GetPentaInputByOffset(int offset){/*{{{*/
+
+	_assert_(offset>=0 && offset<this->numids);
+	_assert_(this->inputs[offset]);
+
+	/*Cast and return*/
+	if(this->inputs[offset]->ObjectEnum()==TransientInputEnum){
+		return xDynamicCast<TransientInput*>(this->inputs[offset])->GetPentaInput();
+	}
+	if(this->inputs[offset]->ObjectEnum()!=PentaInputEnum){
+		_error_("Cannot return a PentaInput");
+	}
+	return xDynamicCast<PentaInput*>(this->inputs[offset]);
+
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/DatasetInput.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/DatasetInput.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/DatasetInput.h	(revision 27955)
@@ -0,0 +1,50 @@
+/*! \file DatasetInput.h 
+ *  \brief: header file for datasetinput object
+ */
+
+#ifndef _DATASETINPUT2_H_
+#define _DATASETINPUT2_H_
+
+/*Headers:*/
+#include "./Input.h"
+class TriaInput;
+class PentaInput;
+class TransientInput;
+
+class DatasetInput: public Input{
+
+	private:
+		int             numids;
+		Input        **inputs;
+		int            *ids;
+		int             numberofelements_local;
+		int             numberofvertices_local;
+
+	public:
+		int GetNumIds() const {return this->numids;};
+		/*DatasetInput constructors, destructors: {{{*/
+		DatasetInput();
+		DatasetInput(int nbe, int nbv);
+		~DatasetInput();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Input* copy();
+		void    Configure(Parameters* params);
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+		void    SetTriaInput(int interp_in,int numinds,int* rows,IssmDouble* values_in);
+		/*}}}*/
+		IssmDouble GetInputMin();
+		void SetTriaInput(int id,int interp_in,int numinds,int* rows,IssmDouble* values_in);
+		void SetPentaInput(int id,int interp_in,int numinds,int* rows,IssmDouble* values_in);
+		TransientInput* SetTransientInput(int id,IssmDouble* times,int numtimes);
+		PentaInput* GetPentaInputByOffset(int i);
+		TriaInput*  GetTriaInput(void);
+		TriaInput*  GetTriaInputByOffset(int i);
+		TransientInput* GetTransientInputByOffset(int offset);
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss,int index);
+};
+#endif  /* _DATASETINPUT2_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/DoubleInput.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/DoubleInput.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/DoubleInput.cpp	(revision 27955)
@@ -0,0 +1,94 @@
+/*!\file DoubleInput.c
+ * \brief: implementation of the DoubleInput object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+#include "./DoubleInput.h"
+
+/*DoubleInput constructors and destructor*/
+DoubleInput::DoubleInput(){/*{{{*/
+	this->size   = -1;
+	this->values = NULL;
+}
+/*}}}*/
+DoubleInput::DoubleInput(int size_in){/*{{{*/
+	_assert_(size_in>0);
+	_assert_(size_in<1e11);
+	this->size   = size_in;
+	this->values = xNew<IssmDouble>(size_in);
+}
+/*}}}*/
+DoubleInput::~DoubleInput(){/*{{{*/
+	xDelete<IssmDouble>(this->values);
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Input* DoubleInput::copy() {/*{{{*/
+
+	DoubleInput* output = new DoubleInput(this->size);
+	xMemCpy<IssmDouble>(output->values,this->values,this->size);
+
+	return output;
+}
+/*}}}*/
+void DoubleInput::DeepEcho(void){/*{{{*/
+
+	_printf_("DoubleInput Echo:\n");
+	_printf_("   Size:          "<<size<<"\n");
+	printarray(this->values,this->size);
+	//_printf_(setw(15)<<"   DoubleInput "<<setw(25)<<left<<EnumToStringx(this->enum_type)<<" "<<(value?"true":"false") << "\n");
+}
+/*}}}*/
+void DoubleInput::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  DoubleInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void DoubleInput::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = DoubleInputEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->size);
+	if(this->size > 0){
+		marshallhandle->call(this->values,this->size);
+	}
+	else this->values = NULL;
+
+}
+/*}}}*/
+int  DoubleInput::ObjectEnum(void){/*{{{*/
+
+	return DoubleInputEnum;
+
+}
+/*}}}*/
+
+/*DoubleInput management*/
+void DoubleInput::GetInput(IssmDouble* pvalue,int index){/*{{{*/
+
+	_assert_(index>=0); 
+	_assert_(index<this->size); 
+
+	*pvalue = this->values[index];
+}
+/*}}}*/
+void DoubleInput::SetInput(int index,IssmDouble value){/*{{{*/
+
+	_assert_(index>=0); 
+	_assert_(index<this->size); 
+
+	this->values[index] = value;
+}
+/*}}}*/
+
+/*Object functions*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/DoubleInput.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/DoubleInput.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/DoubleInput.h	(revision 27955)
@@ -0,0 +1,33 @@
+#ifndef _DOUBLEINPUT2_H_
+#define _DOUBLEINPUT2_H_
+
+/*Headers:*/
+#include "./Input.h"
+
+class DoubleInput: public Input{
+
+	private:
+		int   size;
+		IssmDouble*  values;
+
+	public:
+		/*DoubleInput constructors, destructors: {{{*/
+		DoubleInput();
+		DoubleInput(int size_in);
+		~DoubleInput();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Input *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+		/*}}}*/
+		/*DoubleInput management: {{{*/
+		void GetInput(IssmDouble* pvalue,int index);
+		void SetInput(int index,IssmDouble value);
+		/*}}}*/
+
+};
+#endif  /* _BOOLINPUT_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/ElementInput.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/ElementInput.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/ElementInput.cpp	(revision 27955)
@@ -0,0 +1,36 @@
+/*!\file ElementInput.c
+ * \brief: implementation of the ElementInput object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+#include "./ElementInput.h"
+
+/*ElementInput constructors and destructor*/
+ElementInput::ElementInput(){/*{{{*/
+	this->interpolation  = -1;
+	this->M              = -1;
+	this->N              = -1;
+	this->isserved       = false;
+	this->element_values = NULL;
+	this->values         = NULL;
+}
+/*}}}*/
+ElementInput::~ElementInput(){/*{{{*/
+	if(this->element_values) xDelete<IssmDouble>(this->element_values);
+	if(this->values)         xDelete<IssmDouble>(this->values);
+}
+/*}}}*/
+
+/*Numerics*/
+int ElementInput::GetInputInterpolationType(void){/*{{{*/
+
+	return this->interpolation;
+
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/ElementInput.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/ElementInput.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/ElementInput.h	(revision 27955)
@@ -0,0 +1,46 @@
+#ifndef _ELEMENTINPUT2_H_
+#define _ELEMENTINPUT2_H_
+
+/*Headers:*/
+#include "./Input.h"
+
+class ElementInput: public Input{
+
+	protected:
+		int         numberofelements_local;
+		int         numberofvertices_local;
+		int         interpolation;
+		int         M,N;
+		bool        isserved;
+		IssmDouble* values;
+
+	public:
+		IssmDouble* element_values;
+
+		/*ElementInput constructors, destructors*/ 
+		ElementInput();
+		~ElementInput();
+
+		int  GetInputInterpolationType();
+
+		/*Object virtual functions definitions:*/
+		virtual Input *copy()=0;
+		virtual void    DeepEcho()=0;
+		virtual void    Echo()=0;
+		virtual int     Id()=0;
+		virtual void    Marshall(MarshallHandle* marshallhandle)=0;
+		virtual int     ObjectEnum()=0;
+		/*Other*/
+		virtual void SetInput(int interp_in,int row,IssmDouble value_in)=0;
+		virtual void SetInput(int interp_in,int numinds,int* rows,IssmDouble* values_in)=0;
+		virtual void SetInput(int interp_in,int row,int numinds,IssmDouble* values_in)=0;
+		virtual int  GetInterpolation()=0;
+		virtual void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, Gauss* gauss)=0;
+		virtual void GetInputValue(IssmDouble* pvalue,Gauss* gauss)=0;
+		virtual void Serve(int numindices,int* indices)=0;
+		virtual void Serve(int row,int numindices)=0;
+		virtual int  GetResultArraySize(void)=0;
+		virtual int  GetResultInterpolation(void)=0;
+		virtual int  GetResultNumberOfNodes(void)=0;
+};
+#endif  /* _ELEMENTINPUT_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/Input.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/Input.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/Input.h	(revision 27955)
@@ -0,0 +1,58 @@
+/*!\file:  Input.h
+ * \brief abstract class for Input object
+ */
+
+#ifndef _INPUT_H_
+#define _INPUT_H_
+
+/*Headers:*/
+#include "../../shared/shared.h"
+#include "../../datastructures/Object.h"
+class Gauss;
+class Parameters;
+class SegInput;
+class TriaInput;
+class PentaInput;
+template <class doubletype> class Vector;
+
+class Input: public Object{
+
+	private:
+		int enum_type;
+	public:
+
+		/*Non virtual functions*/
+		int  InstanceEnum(){return this->enum_type;};
+		void ChangeEnum(int newenumtype){this->enum_type=newenumtype;};
+
+		/*Virtual functions*/
+		virtual ~Input(){};
+		virtual void Configure(Parameters* parameters){return;};
+		virtual Input* copy()=0;
+		//virtual void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("Not implemented yet");};
+		virtual void  GetInputAverage(IssmDouble* pvalue){_error_("Not implemented yet");};
+		virtual IssmDouble GetInputMax(void){_error_("Not implemented yet");};
+		virtual IssmDouble GetInputMaxAbs(void){_error_("Not implemented yet");};
+		virtual IssmDouble GetInputMin(void){_error_("Not implemented yet");};
+		virtual void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, Gauss* gauss){_error_("Not implemented yet");};
+		virtual void GetInputValue(IssmDouble* pvalue,Gauss* gauss){int* temp = xNew<int>(3); _error_("Not implemented yet for");};
+		virtual int  GetInputInterpolationType(){_error_("Not implemented yet");};
+		virtual SegInput*   GetSegInput(){ int* temp = xNew<int>(3); this->Echo(); _error_("Not implemented yet");};
+		virtual TriaInput*  GetTriaInput(){ int* temp = xNew<int>(3); this->Echo(); _error_("Not implemented yet");};
+		virtual PentaInput* GetPentaInput(){int* temp = xNew<int>(3); this->Echo(); _error_("Not implemented yet");};
+		//virtual void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("Not implemented yet");};
+
+		virtual void   AXPY(Input* xinput,IssmDouble scalar){_error_("Not implemented yet");};
+		virtual void   Shift(IssmDouble scalar){_error_("Not implemented yet");};
+		virtual void   PointWiseMult(Input* xinput){_error_("Not implemented yet");};
+		virtual void   Pow(IssmDouble scale_factor){_error_("Not implemented yet");};
+		virtual void   Scale(IssmDouble scale_factor){_error_("Not implemented yet");};
+		virtual void   AverageAndReplace(void){_error_("Not implemented yet");};
+
+		virtual int  GetResultArraySize(void){_error_("Not implemented yet");};
+		virtual int  GetResultInterpolation(void){_error_("Not implemented yet");};
+		virtual int  GetResultNumberOfNodes(void){_error_("Not implemented yet");};
+		//virtual void ResultToMatrix(IssmDouble* values,int ncols,int sid){_error_("not supported yet");};
+		//virtual void ResultToPatch(IssmDouble* values,int nodesperelement,int sid){_error_("not supported yet");};
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/Inputs.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/Inputs.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/Inputs.cpp	(revision 27955)
@@ -0,0 +1,1096 @@
+/*\file Inputs.cpp
+ * \brief: Implementation of the Inputs class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Input.h"
+#include "./Inputs.h"
+
+#include "./BoolInput.h"
+#include "./IntInput.h"
+#include "./DoubleInput.h"
+#include "./ElementInput.h"
+#include "./SegInput.h"
+#include "./TriaInput.h"
+#include "./PentaInput.h"
+#include "./TransientInput.h"
+#include "./ControlInput.h"
+#include "./DatasetInput.h"
+#include "./ArrayInput.h"
+#include "./IntArrayInput.h"
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+Inputs::Inputs(void){/*{{{*/
+
+	this->numberofelements_local = 0;
+	this->numberofvertices_local = 0;
+
+	/*Initialize pointers*/
+	for(int i=0;i<NUMINPUTS;i++) this->inputs[i] = NULL;
+}
+/*}}}*/
+Inputs::Inputs(int nbe,int nbv){/*{{{*/
+
+	this->numberofelements_local = nbe;
+	this->numberofvertices_local = nbv;
+
+	/*Initialize pointers*/
+	for(int i=0;i<NUMINPUTS;i++) this->inputs[i] = NULL;
+}
+/*}}}*/
+Inputs::~Inputs(){/*{{{*/
+	for(int i=0;i<NUMINPUTS;i++){
+		if(this->inputs[i]) delete this->inputs[i];
+	}
+	return;
+}
+/*}}}*/
+
+Inputs* Inputs::Copy(void){/*{{{*/
+
+	Inputs* output = new Inputs(this->numberofelements_local,this->numberofvertices_local);
+
+	for(int i=0;i<NUMINPUTS;i++){
+		if(this->inputs[i]) output->inputs[i]=this->inputs[i]->copy();
+	}
+
+	return output;
+}/*}}}*/
+void Inputs::DeepEcho(void){/*{{{*/
+	for(int i=0;i<NUMINPUTS;i++) {
+		if(this->inputs[i]) this->inputs[i]->DeepEcho();
+	}
+	return;
+}
+/*}}}*/
+void Inputs::Echo(void){/*{{{*/
+	_printf_("Inputs Echo:\n");
+	for(int i=0;i<NUMINPUTS;i++) {
+		if(this->inputs[i]) _printf_(setw(25)<<EnumToStringx(i+InputsSTARTEnum+1)<<": set as "<<EnumToStringx(this->inputs[i]->ObjectEnum())<<"\n");
+	}
+	return;
+}
+/*}}}*/
+void Inputs::DeepEcho(int enum_in){/*{{{*/
+	int index= EnumToIndex(enum_in);
+	if(this->inputs[index])this->inputs[index]->DeepEcho();
+	return;
+}
+/*}}}*/
+void Inputs::Echo(int enum_in){/*{{{*/
+	_printf_("Inputs Echo:\n");
+	int index= EnumToIndex(enum_in);
+	if(this->inputs[index])this->inputs[index]->Echo();
+	return;
+}
+/*}}}*/
+void Inputs::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+
+	int num_inputs=0;
+	int index;
+
+	int object_enum = InputsEnum;
+   marshallhandle->call(object_enum);
+	marshallhandle->call(this->numberofelements_local);
+	marshallhandle->call(this->numberofvertices_local);
+
+	if(marshallhandle->OperationNumber()!=MARSHALLING_LOAD){
+
+		/*Marshall num_inputs first*/
+		for(int i=0;i<NUMINPUTS;i++){
+			if(this->inputs[i]) num_inputs++;
+		}
+		marshallhandle->call(num_inputs);
+
+		/*Marshall Parameters one by one now*/
+		for(int i=0;i<NUMINPUTS;i++){
+			if(this->inputs[i]){
+				object_enum = this->inputs[i]->ObjectEnum();
+				marshallhandle->call(i);
+				marshallhandle->call(object_enum);
+				this->inputs[i]->Marshall(marshallhandle);
+			}
+		}
+	}
+	else{
+
+		/*Get number of inputs marshalled*/
+		marshallhandle->call(num_inputs);
+
+		/*Recover input2eters one by one*/
+		for(int i=0;i<num_inputs;i++){
+
+			/*Recover enum of object first: */
+			marshallhandle->call(index);
+			marshallhandle->call(object_enum);
+
+			if(object_enum==BoolInputEnum){
+				BoolInput* boolinput2=new BoolInput();
+				boolinput2->Marshall(marshallhandle);
+				this->inputs[index]=boolinput2;
+			}
+			else if(object_enum==IntInputEnum){
+				IntInput* intinput2=new IntInput();
+				intinput2->Marshall(marshallhandle);
+				this->inputs[index]=intinput2;
+			}
+			else if(object_enum==TriaInputEnum){
+				TriaInput* triainput2=new TriaInput();
+				triainput2->Marshall(marshallhandle);
+				this->inputs[index]=triainput2;
+			}
+			else if(object_enum==PentaInputEnum){
+				PentaInput* pentainput2=new PentaInput();
+				pentainput2->Marshall(marshallhandle);
+				this->inputs[index]=pentainput2;
+			}
+			else if(object_enum==ControlInputEnum){
+				ControlInput* input=new ControlInput();
+				input->Marshall(marshallhandle);
+				this->inputs[index]=input;
+			}
+			else if(object_enum==TransientInputEnum){
+				TransientInput* input=new TransientInput();
+				input->Marshall(marshallhandle);
+				this->inputs[index]=input;
+			}
+			else if(object_enum==DatasetInputEnum){
+				DatasetInput* input=new DatasetInput();
+				input->Marshall(marshallhandle);
+				this->inputs[index]=input;
+			}
+			else if(object_enum==ArrayInputEnum){
+				ArrayInput* input=new ArrayInput();
+				input->Marshall(marshallhandle);
+				this->inputs[index]=input;
+			}
+			else{
+				_error_("input "<<EnumToStringx(object_enum)<<" not supported");
+			}
+		}
+	}
+}
+/*}}}*/
+
+void Inputs::AddInput(Input* newinput){/*{{{*/
+
+	/*Get Enum from Param*/
+	_assert_(newinput);
+	int input_enum = newinput->InstanceEnum();
+
+	/*Get index in array*/
+	#ifdef _ISSM_DEBUG_
+	if(input_enum<=InputsSTARTEnum) _error_("Cannot add input: Enum "<<EnumToStringx(input_enum)<<" should appear after InputsSTARTEnum");
+	if(input_enum>=InputsENDEnum)   _error_("Cannot add input: Enum "<<EnumToStringx(input_enum)<<" should appear before InputsENDEnum");
+	#endif
+	int index = input_enum - InputsSTARTEnum -1;
+
+	/*Delete input if it already exists*/
+	if(this->inputs[index]){
+		delete this->inputs[index];
+		this->inputs[index] = NULL;
+	}
+
+	/*Add input to array*/
+	this->inputs[index] = newinput;
+}
+/*}}}*/
+void Inputs::ChangeEnum(int oldenumtype,int newenumtype){/*{{{*/
+
+	/*Get indices from enums*/
+	int index_old = EnumToIndex(oldenumtype);
+	int index_new = EnumToIndex(newenumtype);
+
+	/*Delete input if it already exists*/
+	if(this->inputs[index_new]) delete this->inputs[index_new];
+
+	/*Make sure that old one exists*/
+	if(!this->inputs[index_old]){
+		_error_("Input "<<EnumToStringx(oldenumtype)<<" not found");
+	}
+
+	/*Replace Enums*/
+	this->inputs[index_old]->ChangeEnum(newenumtype);
+	this->inputs[index_new] = this->inputs[index_old];
+	this->inputs[index_old] = NULL;
+}/*}}}*/
+void Inputs::Configure(Parameters* parameters){/*{{{*/
+	for(int i=0;i<NUMINPUTS;i++){
+		if(this->inputs[i]) this->inputs[i]->Configure(parameters);
+	}
+}
+/*}}}*/
+int  Inputs::DeleteInput(int input_enum){/*{{{*/
+
+	int index = EnumToIndex(input_enum);
+	if(this->inputs[index]){
+		delete this->inputs[index];
+		this->inputs[index] = NULL;
+	}
+
+	return 1;
+}
+/*}}}*/
+void Inputs::DuplicateInput(int original_enum,int new_enum){/*{{{*/
+
+	_assert_(this);
+
+	/*Get indices from enums*/
+	int index_ori = EnumToIndex(original_enum);
+	int index_new = EnumToIndex(new_enum);
+
+	/*Delete input if it already exists*/
+	if(this->inputs[index_new]) delete this->inputs[index_new];
+
+	/*Make sure that old one exists*/
+	if(!this->inputs[index_ori]){
+		_error_("Input "<<EnumToStringx(original_enum)<<" not found");
+	}
+
+	/*Make a copy*/
+	Input* copy=this->inputs[index_ori]->copy();
+
+	/*Add copy*/
+	this->inputs[index_new] = copy;
+}
+/*}}}*/
+void Inputs::ZAXPY(IssmDouble alpha, int xenum, int yenum, int zenum){/*{{{*/
+
+	_assert_(this);
+
+	/*Get indices from enums*/
+	int index_x = EnumToIndex(xenum);
+	int index_y = EnumToIndex(yenum);
+	int index_z = EnumToIndex(zenum);
+
+	/*Delete output if it already exists*/
+	if(this->inputs[index_z]) delete this->inputs[index_z];
+
+	/*Make sure that old one exists*/
+	if(!this->inputs[index_x]) _error_("Input "<<EnumToStringx(xenum)<<" not found");
+	if(!this->inputs[index_y]) _error_("Input "<<EnumToStringx(yenum)<<" not found");
+
+	/*Make a copy*/
+	this->inputs[index_z]=this->inputs[index_y]->copy();
+
+	/*AXPY: */
+	this->inputs[index_z]->AXPY(this->inputs[index_x],alpha);
+}
+/*}}}*/
+void Inputs::AXPY(IssmDouble alpha, int xenum, int yenum ){/*{{{*/
+
+	_assert_(this);
+
+	/*Get indices from enums*/
+	int index_x = EnumToIndex(xenum);
+	int index_y = EnumToIndex(yenum);
+
+	/*Make sure that old one exists*/
+	if(!this->inputs[index_x]) _error_("Input "<<EnumToStringx(xenum)<<" not found");
+	if(!this->inputs[index_y]) _error_("Input "<<EnumToStringx(yenum)<<" not found");
+
+	/*AXPY: */
+	this->inputs[index_y]->AXPY(this->inputs[index_x],alpha);
+}
+/*}}}*/
+void Inputs::Shift(int xenum, IssmDouble alpha){/*{{{*/
+
+	_assert_(this);
+
+	/*Get indices from enums*/
+	int index_x = EnumToIndex(xenum);
+
+	/*Make sure that x exists*/
+	if(!this->inputs[index_x]) _error_("Input "<<EnumToStringx(xenum)<<" not found");
+
+	/*Shift: */
+	this->inputs[index_x]->Shift(alpha);
+}
+/*}}}*/
+void Inputs::AverageAndReplace(int inputenum){/*{{{*/
+
+	_assert_(this);
+
+	/*Get indices from enums*/
+	int index = EnumToIndex(inputenum);
+	if(!this->inputs[index]) _error_("Input "<<EnumToStringx(inputenum)<<" not found");
+
+	this->inputs[index]->AverageAndReplace();
+}
+/*}}}*/
+int  Inputs::EnumToIndex(int enum_in){/*{{{*/
+
+	_assert_(this);
+
+	/*Make sure this parameter is at the right place*/
+	#ifdef _ISSM_DEBUG_
+	if(enum_in<=InputsSTARTEnum){
+		//int* temp = xNew<int>(3);
+		_error_("Enum "<<EnumToStringx(enum_in)<<" should appear after InputsSTARTEnum");
+	}
+	if(enum_in>=InputsENDEnum){
+		_error_("Enum "<<EnumToStringx(enum_in)<<" should appear before InputsENDEnum");
+	}
+	#endif
+	return enum_in - InputsSTARTEnum -1;
+}/*}}}*/
+bool Inputs::Exist(int enum_in){/*{{{*/
+
+	_assert_(this);
+
+	int index = EnumToIndex(enum_in);
+	if(this->inputs[index]) return true;
+	return false;
+}
+/*}}}*/
+int Inputs::GetInputObjectEnum(int enum_in){/*{{{*/
+
+	_assert_(this);
+
+	int index = EnumToIndex(enum_in);
+	if(!this->inputs[index]) _error_("Input "<<EnumToStringx(enum_in)<<" not found");
+	return this->inputs[index]->ObjectEnum();
+}
+/*}}}*/
+void Inputs::GetInputsInterpolations(int* pnuminputs,int** pinterpolations,int** pinputenums){/*{{{*/
+
+	/*First count number of inputs*/
+	int count = 0;
+	for(int i=0;i<NUMINPUTS;i++){
+		if(this->inputs[i]) count++;
+	}
+	int numinputs = count;
+
+	/*Allocate output*/
+	int* interpolations = xNew<int>(count);
+	int* enumlist       = xNew<int>(count);
+
+	/*Go through all inputs and assign interpolation in vector*/
+	count = 0;
+	for(int i=0;i<NUMINPUTS;i++){
+
+		Input* input=this->inputs[i];
+		if(!input) continue;
+
+		enumlist[count] = i+InputsSTARTEnum+1;
+		switch(input->ObjectEnum()){
+			case BoolInputEnum:
+			case IntInputEnum:
+				interpolations[count] = input->ObjectEnum();
+				break;
+			case TriaInputEnum:
+				interpolations[count] = input->GetResultInterpolation();
+				break;
+			default:
+				_error_("Input "<<EnumToStringx(input->ObjectEnum())<<" not supported yet");
+		}
+		count++;
+	}
+	_assert_(count == numinputs);
+
+	/*Return pointer*/
+	*pnuminputs = numinputs;
+	*pinterpolations = interpolations;
+	*pinputenums = enumlist;
+
+}/*}}}*/
+SegInput* Inputs::GetSegInput(int enum_in){/*{{{*/
+
+	_assert_(this);
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Check that it has the right format*/
+	Input* input = this->inputs[id];
+	if(!input) return NULL;
+
+	return input->GetSegInput();
+}/*}}}*/
+TriaInput* Inputs::GetTriaInput(int enum_in){/*{{{*/
+
+	_assert_(this);
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Check that it has the right format*/
+	Input* input = this->inputs[id];
+	if(!input) return NULL;
+
+	return input->GetTriaInput();
+}/*}}}*/
+TriaInput* Inputs::GetTriaInput(int enum_in,IssmDouble time){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Check that it has the right format*/
+	Input* input = this->inputs[id];
+	if(!input) return NULL;
+
+	if(input->ObjectEnum()==TransientInputEnum){
+		return xDynamicCast<TransientInput*>(input)->GetTriaInput(time);
+	}
+	else{
+		return input->GetTriaInput();
+	}
+}/*}}}*/
+TriaInput* Inputs::GetTriaInput(int enum_in,IssmDouble start_time,IssmDouble end_time,int averaging_method){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Check that it has the right format*/
+	Input* input = this->inputs[id];
+	if(!input) return NULL;
+
+	if(input->ObjectEnum()==TransientInputEnum){
+		return xDynamicCast<TransientInput*>(input)->GetTriaInput(start_time,end_time,averaging_method);
+	}
+	else{
+		_error_("Input "<<EnumToStringx(enum_in)<<" is not an TransientInput");
+	}
+}/*}}}*/
+PentaInput* Inputs::GetPentaInput(int enum_in){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Check that it has the right format*/
+	Input* input = this->inputs[id];
+	if(!input) return NULL;
+
+	return input->GetPentaInput();
+}/*}}}*/
+PentaInput* Inputs::GetPentaInput(int enum_in,IssmDouble time){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Check that it has the right format*/
+	Input* input = this->inputs[id];
+	if(!input) return NULL;
+
+	if(input->ObjectEnum()==TransientInputEnum){
+		return xDynamicCast<TransientInput*>(input)->GetPentaInput(time);
+	}
+	else{
+		return input->GetPentaInput();
+	}
+}/*}}}*/
+PentaInput* Inputs::GetPentaInput(int enum_in,IssmDouble start_time,IssmDouble end_time,int averaging_method){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Check that it has the right format*/
+	Input* input = this->inputs[id];
+	if(!input) return NULL;
+
+	if(input->ObjectEnum()==TransientInputEnum){
+		return xDynamicCast<TransientInput*>(input)->GetPentaInput(start_time,end_time,averaging_method);
+	}
+	else{
+		_error_("Input "<<EnumToStringx(enum_in)<<" is not an TransientInput");
+	}
+}/*}}}*/
+TransientInput* Inputs::GetTransientInput(int enum_in){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Check that it has the right format*/
+	Input* input = this->inputs[id];
+	if(!input) return NULL;
+
+	if(input->ObjectEnum() != TransientInputEnum){
+		_error_("Input "<<EnumToStringx(enum_in)<<" is not an TransientInput");
+	}
+
+	/*Cast and return*/
+	TransientInput* output = xDynamicCast<TransientInput*>(input);
+	return output;
+}/*}}}*/
+ElementInput* Inputs::GetControlInputData(int enum_in,const char* data){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Check that it has the right format*/
+	Input* input = this->inputs[id];
+	if(!input) return NULL;
+	if(input->ObjectEnum() != ControlInputEnum){
+		_error_("Input "<<EnumToStringx(enum_in)<<" is not an ControlInput");
+	}
+
+	/*Cast and return*/
+	return xDynamicCast<ControlInput*>(input)->GetInput(data);
+}/*}}}*/
+DatasetInput* Inputs::GetDatasetInput(int enum_in){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Check that it has the right format*/
+	Input* input = this->inputs[id];
+	if(!input) return NULL;
+	if(input->ObjectEnum() != DatasetInputEnum){
+		_error_("Input "<<EnumToStringx(enum_in)<<" is not an DatasetInput");
+	}
+
+	/*Cast and return*/
+	return xDynamicCast<DatasetInput*>(input);
+}/*}}}*/
+ControlInput* Inputs::GetControlInput(int enum_in){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Check that it has the right format*/
+	Input* input = this->inputs[id];
+	if(!input) return NULL;
+	if(input->ObjectEnum() != ControlInputEnum){
+		_error_("Input "<<EnumToStringx(enum_in)<<" is not an ControlInput");
+	}
+
+	/*Cast and return*/
+	return xDynamicCast<ControlInput*>(input);
+}/*}}}*/
+void Inputs::GetArrayPtr(int enum_in,int row,IssmDouble** pvalues,int* pN){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=ArrayInputEnum) _error_(EnumToStringx(this->inputs[id]->ObjectEnum())<<" cannot return an array");
+	}
+	else{
+		_error_("Input "<<EnumToStringx(enum_in)<<" not found");
+	}
+
+	/*Set input*/
+	ArrayInput* input = xDynamicCast<ArrayInput*>(this->inputs[id]);
+	input->GetArrayPtr(row,pvalues,pN);
+}/*}}}*/
+void Inputs::GetIntArrayPtr(int enum_in,int row,int** pvalues,int* pN){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=IntArrayInputEnum) _error_(EnumToStringx(this->inputs[id]->ObjectEnum())<<" cannot return an int array");
+	}
+	else{
+		_error_("Input "<<EnumToStringx(enum_in)<<" not found");
+	}
+
+	/*Set input*/
+	IntArrayInput* input = xDynamicCast<IntArrayInput*>(this->inputs[id]);
+	input->GetArrayPtr(row,pvalues,pN);
+}/*}}}*/
+void Inputs::GetArray(int enum_in,int row,IssmDouble** pvalues,int* pN){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=ArrayInputEnum) _error_(EnumToStringx(this->inputs[id]->ObjectEnum())<<" cannot return an array");
+	}
+	else{
+		_error_("Input "<<EnumToStringx(enum_in)<<" not found");
+	}
+
+	/*Set input*/
+	ArrayInput* input = xDynamicCast<ArrayInput*>(this->inputs[id]);
+	input->GetArray(row,pvalues,pN);
+}/*}}}*/
+void Inputs::GetIntArray(int enum_in,int row,int** pvalues,int* pN){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=IntArrayInputEnum) _error_(EnumToStringx(this->inputs[id]->ObjectEnum())<<" cannot return an int array");
+	}
+	else{
+		_error_("Input "<<EnumToStringx(enum_in)<<" not found");
+	}
+
+	/*Set input*/
+	IntArrayInput* input = xDynamicCast<IntArrayInput*>(this->inputs[id]);
+	input->GetArray(row,pvalues,pN);
+}/*}}}*/
+void Inputs::GetInputValue(bool* pvalue,int enum_in,int index){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=BoolInputEnum) _error_(EnumToStringx(this->inputs[id]->ObjectEnum())<<" cannot return a bool");
+	}
+	else{
+		_error_("Input "<<EnumToStringx(enum_in)<<" not found");
+	}
+
+	/*Set input*/
+	BoolInput* input = xDynamicCast<BoolInput*>(this->inputs[id]);
+	input->GetInput(pvalue,index);
+}/*}}}*/
+void Inputs::GetInputValue(int* pvalue,int enum_in,int index){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=IntInputEnum) _error_(EnumToStringx(this->inputs[id]->ObjectEnum())<<" cannot return a int");
+	}
+	else{
+		int* temp = xNew<int>(3);
+		_error_("Input "<<EnumToStringx(enum_in)<<" not found");
+	}
+
+	/*Set input*/
+	IntInput* input = xDynamicCast<IntInput*>(this->inputs[id]);
+	input->GetInput(pvalue,index);
+}/*}}}*/
+void Inputs::GetInputValue(IssmDouble* pvalue,int enum_in,int index){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=DoubleInputEnum) _error_(EnumToStringx(this->inputs[id]->ObjectEnum())<<" cannot return a double!");
+	}
+	else{
+		int* temp = xNew<int>(3);
+		_error_("Input "<<EnumToStringx(enum_in)<<" not found");
+	}
+
+	/*Set input*/
+	DoubleInput* input = xDynamicCast<DoubleInput*>(this->inputs[id]);
+	input->GetInput(pvalue,index);
+
+}/*}}}*/
+void Inputs::ResultInterpolation(int* pinterpolation,int* pnodesperelement,int* parray_size, int output_enum){/*{{{*/
+
+	/*Get input */
+	int     index = EnumToIndex(output_enum);
+	Input* input = this->inputs[index];
+
+	/*Check that it is found*/
+	if(!input){
+		_error_("Input "<<EnumToStringx(output_enum)<<" not found and cannot be added to model results");
+	}
+
+	/*Assign output pointer*/
+	*pinterpolation   = input->GetResultInterpolation();
+	*pnodesperelement = input->GetResultNumberOfNodes();
+	*parray_size      = input->GetResultArraySize();
+}/*}}}*/
+void Inputs::SetInput(int enum_in,int index,bool value){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=BoolInputEnum) _error_("cannot add a bool to a "<<EnumToStringx(this->inputs[id]->ObjectEnum()));
+	}
+	else{
+		this->inputs[id] = new BoolInput(this->numberofelements_local);
+	}
+
+	/*Set input*/
+	BoolInput* input = xDynamicCast<BoolInput*>(this->inputs[id]);
+	input->SetInput(index,value);
+}/*}}}*/
+void Inputs::SetInput(int enum_in,int index,int value){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=IntInputEnum) _error_("cannot add an int to a "<<EnumToStringx(this->inputs[id]->ObjectEnum()));
+	}
+	else{
+		this->inputs[id] = new IntInput(this->numberofelements_local);
+	}
+
+	/*Set input*/
+	IntInput* input = xDynamicCast<IntInput*>(this->inputs[id]);
+	input->SetInput(index,value);
+}/*}}}*/
+void Inputs::SetDoubleInput(int enum_in,int index,IssmDouble value){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=DoubleInputEnum) _error_("cannot add a double to a "<<EnumToStringx(this->inputs[id]->ObjectEnum()));
+	}
+	else{
+		this->inputs[id] = new DoubleInput(this->numberofelements_local);
+	}
+
+	/*Set input*/
+	DoubleInput* input = xDynamicCast<DoubleInput*>(this->inputs[id]);
+	input->SetInput(index,value);
+}/*}}}*/
+void Inputs::SetArrayInput(int enum_in,int row,IssmDouble* values,int numlayers){/*{{{*/
+
+	bool recreate = false;
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=ArrayInputEnum){
+			delete this->inputs[id];
+			recreate = true;
+		}
+	}
+	else{
+		recreate = true;
+	}
+
+	if(recreate){
+		this->inputs[id] = new ArrayInput(this->numberofelements_local);
+	}
+
+	/*Set input*/
+	ArrayInput* input = xDynamicCast<ArrayInput*>(this->inputs[id]);
+	input->SetInput(row,numlayers,values);
+}/*}}}*/
+void Inputs::SetIntArrayInput(int enum_in,int row,int* values,int numlayers){/*{{{*/
+
+	bool recreate = false;
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=IntArrayInputEnum){
+			delete this->inputs[id];
+			recreate = true;
+		}
+	}
+	else{
+		recreate = true;
+	}
+
+	if(recreate){
+		this->inputs[id] = new IntArrayInput(this->numberofelements_local);
+	}
+
+	/*Set input*/
+	IntArrayInput* input = xDynamicCast<IntArrayInput*>(this->inputs[id]);
+	input->SetInput(row,numlayers,values);
+}/*}}}*/
+TransientInput* Inputs::SetDatasetTransientInput(int enum_in,int dataset_id,IssmDouble* times,int numtimes){/*{{{*/
+
+	bool recreate = false;
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=DatasetInputEnum){
+			delete this->inputs[id];
+			recreate = true;
+		}
+	}
+	else{
+		recreate = true;
+	}
+
+	if(recreate){
+		this->inputs[id] = new DatasetInput(this->numberofelements_local,this->numberofvertices_local);
+	}
+
+	/*Get Dataset Input now*/
+	DatasetInput* input = xDynamicCast<DatasetInput*>(this->inputs[id]);
+
+	/*Create and return transient input*/
+	return input->SetTransientInput(dataset_id,times,numtimes);
+}/*}}}*/
+void Inputs::SetTransientInput(int enum_in,IssmDouble* times,int numtimes){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		/*Input already there, make sure it is the right type*/
+		if(this->inputs[id]->ObjectEnum()!=TransientInputEnum){
+			_error_("cannot add a TransientInput to a "<<EnumToStringx(this->inputs[id]->ObjectEnum()));
+		}
+	}
+	else{
+		this->inputs[id] = new TransientInput(enum_in,this->numberofelements_local,this->numberofvertices_local,times,numtimes);
+	}
+}/*}}}*/
+void Inputs::SetControlInput(int enum_in,int layout,int interpolation,int control_id){/*{{{*/
+
+	bool recreate = false;
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=ControlInputEnum){
+			delete this->inputs[id];
+			recreate = true;
+		}
+	}
+	else{
+		recreate = true;
+	}
+
+	if(recreate){
+		this->inputs[id] = new ControlInput(this->numberofelements_local,this->numberofvertices_local,layout,interpolation,control_id);
+	}
+
+}/*}}}*/
+void Inputs::SetTransientControlInput(int enum_in,int control_id,IssmDouble* times,int numtimes){/*{{{*/
+
+	bool recreate = false;
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=ControlInputEnum){
+			delete this->inputs[id];
+			recreate = true;
+		}
+	}
+	else{
+		recreate = true;
+	}
+
+	if(recreate){
+		this->inputs[id] = new ControlInput(enum_in,this->numberofelements_local,this->numberofvertices_local,control_id,times,numtimes);
+	}
+
+}/*}}}*/
+void Inputs::SetTriaControlInputGradient(int enum_in,int interpolation,int numindices,int* indices,IssmDouble* values){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(!this->inputs[id]) _error_("could not find Input "<<EnumToStringx(enum_in));
+	if( this->inputs[id]->ObjectEnum()!=ControlInputEnum) _error_("Input "<<EnumToStringx(enum_in)<<" is not a ControlInput");
+
+	/*Set input*/
+	ControlInput* input = xDynamicCast<ControlInput*>(this->inputs[id]);
+	input->SetGradient(interpolation,numindices,indices,values);
+}/*}}}*/
+void Inputs::SetTriaControlInputGradient(int enum_in,int interpolation,int numindices,int* indices,IssmDouble* values,int n){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(!this->inputs[id]) _error_("could not find Input "<<EnumToStringx(enum_in));
+	if( this->inputs[id]->ObjectEnum()!=ControlInputEnum) _error_("Input "<<EnumToStringx(enum_in)<<" is not a ControlInput");
+
+	/*Set input*/
+	ControlInput* input = xDynamicCast<ControlInput*>(this->inputs[id]);
+	input->SetGradient(interpolation,numindices,indices,values,n);
+}/*}}}*/
+void Inputs::SetTriaDatasetInput(int enum_in,int id_in,int interpolation,int numindices,int* indices,IssmDouble* values){/*{{{*/
+
+	bool recreate = false;
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=DatasetInputEnum){
+			delete this->inputs[id];
+			recreate = true;
+		}
+	}
+	else{
+		recreate = true;
+	}
+
+	if(recreate){
+		this->inputs[id] = new DatasetInput(this->numberofelements_local,this->numberofvertices_local);
+	}
+
+	/*Set input*/
+	DatasetInput* input = xDynamicCast<DatasetInput*>(this->inputs[id]);
+	input->SetTriaInput(id_in,P1Enum,numindices,indices,values);
+}/*}}}*/
+void Inputs::SetTriaInput(int enum_in,int interpolation,int row,IssmDouble value){/*{{{*/
+
+	/*This one only supports P0 and P1 because it assumes col=0*/
+	_assert_(interpolation==P0Enum || interpolation==P1Enum);
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=TriaInputEnum) _error_("cannot add a bool to a "<<EnumToStringx(this->inputs[id]->ObjectEnum()));
+	}
+	else{
+		this->inputs[id] = new TriaInput(this->numberofelements_local,this->numberofvertices_local,interpolation);
+	}
+
+	/*Set input*/
+	TriaInput* input = xDynamicCast<TriaInput*>(this->inputs[id]);
+	input->SetInput(interpolation,row,value);
+}/*}}}*/
+void Inputs::SetTriaInput(int enum_in,int interpolation,int numindices,int* indices,IssmDouble* values){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=TriaInputEnum){
+			_error_("cannot add Element values to a "<<EnumToStringx(this->inputs[id]->ObjectEnum())<<" while trying to set "<<EnumToStringx(enum_in));
+		}
+	}
+	else{
+		this->inputs[id] = new TriaInput(this->numberofelements_local,this->numberofvertices_local,interpolation);
+	}
+
+	/*Set input*/
+	TriaInput* input = xDynamicCast<TriaInput*>(this->inputs[id]);
+	input->SetInput(interpolation,numindices,indices,values);
+}/*}}}*/
+void Inputs::SetTriaInput(int enum_in,int interpolation,int row,int numindices,IssmDouble* values){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=TriaInputEnum) _error_("cannot add Element values to a "<<EnumToStringx(this->inputs[id]->ObjectEnum()));
+	}
+	else{
+		this->inputs[id] = new TriaInput(this->numberofelements_local,this->numberofvertices_local,interpolation);
+	}
+
+	/*Set input*/
+	TriaInput* input = xDynamicCast<TriaInput*>(this->inputs[id]);
+	input->SetInput(interpolation,row,numindices,values);
+}/*}}}*/
+void Inputs::SetPentaControlInputGradient(int enum_in,int interpolation,int numindices,int* indices,IssmDouble* values){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(!this->inputs[id]) _error_("could not find Input "<<EnumToStringx(enum_in));
+	if( this->inputs[id]->ObjectEnum()!=ControlInputEnum) _error_("Input "<<EnumToStringx(enum_in)<<" is not a ControlInput");
+
+	/*Set input*/
+	ControlInput* input = xDynamicCast<ControlInput*>(this->inputs[id]);
+	input->SetGradient(interpolation,numindices,indices,values);
+}/*}}}*/
+void Inputs::SetPentaDatasetInput(int enum_in,int id_in,int interpolation,int numindices,int* indices,IssmDouble* values){/*{{{*/
+
+	bool recreate = false;
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=DatasetInputEnum){
+			delete this->inputs[id];
+			recreate = true;
+		}
+	}
+	else{
+		recreate = true;
+	}
+
+	if(recreate){
+		this->inputs[id] = new DatasetInput(this->numberofelements_local,this->numberofvertices_local);
+	}
+
+	/*Set input*/
+	DatasetInput* input = xDynamicCast<DatasetInput*>(this->inputs[id]);
+	input->SetPentaInput(id_in,P1Enum,numindices,indices,values);
+}/*}}}*/
+void Inputs::SetPentaInput(int enum_in,int interpolation,int row,IssmDouble value){/*{{{*/
+
+	/*This one only supports P0 and P1 because it assumes col=0*/
+	_assert_(interpolation==P0Enum || interpolation==P1Enum);
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=PentaInputEnum) _error_("cannot add a bool to a "<<EnumToStringx(this->inputs[id]->ObjectEnum()));
+	}
+	else{
+		this->inputs[id] = new PentaInput(this->numberofelements_local,this->numberofvertices_local,interpolation);
+	}
+
+	/*Set input*/
+	PentaInput* input = xDynamicCast<PentaInput*>(this->inputs[id]);
+	input->SetInput(interpolation,row,value);
+}/*}}}*/
+void Inputs::SetPentaInput(int enum_in,int interpolation,int numindices,int* indices,IssmDouble* values){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=PentaInputEnum) _error_("cannot add Element values to a "<<EnumToStringx(this->inputs[id]->ObjectEnum()));
+	}
+	else{
+		this->inputs[id] = new PentaInput(this->numberofelements_local,this->numberofvertices_local,interpolation);
+	}
+
+	/*Set input*/
+	PentaInput* input = xDynamicCast<PentaInput*>(this->inputs[id]);
+	input->SetInput(interpolation,numindices,indices,values);
+}/*}}}*/
+void Inputs::SetPentaInput(int enum_in,int interpolation,int row,int numindices,IssmDouble* values){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=PentaInputEnum) _error_("cannot add Element values to a "<<EnumToStringx(this->inputs[id]->ObjectEnum()));
+	}
+	else{
+		this->inputs[id] = new PentaInput(this->numberofelements_local,this->numberofvertices_local,interpolation);
+	}
+
+	/*Set input*/
+	PentaInput* input = xDynamicCast<PentaInput*>(this->inputs[id]);
+	input->SetInput(interpolation,row,numindices,values);
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/Inputs.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/Inputs.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/Inputs.h	(revision 27955)
@@ -0,0 +1,102 @@
+#ifndef _CONTAINER_INPUTS2_H_
+#define _CONTAINER_INPUTS2_H_
+
+/*forward declarations */
+class Input;
+class SegInput;
+class TriaInput;
+class PentaInput;
+class TransientInput;
+class ElementInput;
+class DatasetInput;
+class ArrayInput;
+class IntArrayInput;
+class ControlInput;
+class Parameters;
+#include "../../shared/shared.h"
+
+#define NUMINPUTS InputsENDEnum - InputsSTARTEnum -1
+
+/*!\brief Declaration of Inputs class.
+ *
+ * Declaration of Inputs class.  Inputs are a static array of Input objects.
+ */
+class Inputs{
+
+	private:
+		/*Private fields*/
+		Input* inputs[NUMINPUTS];
+		int     numberofelements_local;
+		int     numberofvertices_local;
+
+		/*Private functions*/
+		int     EnumToIndex(int enum_in);
+
+	public:
+
+		/*constructors, destructors*/
+		Inputs();
+		Inputs(int nbe,int nbv);
+		~Inputs();
+
+		/*numerics*/
+		void     AddInput(Input* in_input);
+		void     ChangeEnum(int enumtype,int new_enumtype);
+		void     Configure(Parameters* parameters);
+		Inputs* Copy(void);
+		int      DeleteInput(int enum_type);
+		void     DuplicateInput(int original_enum,int new_enum);
+		void     ZAXPY(IssmDouble alpha, int xenum, int yenum, int zenum);
+		void     AXPY(IssmDouble alpha, int xenum, int yenum);
+		void     Shift(int inputenum, IssmDouble alpha);
+		void     AverageAndReplace(int inputenum);
+		void     DeepEcho(void);
+		void     DeepEcho(int enum_in);
+		void     Echo(void);
+		void     Echo(int enum_in);
+		bool     Exist(int enum_type);
+		void     GetInputsInterpolations(int* pnuminputs,int** pinterpolations,int** penum);
+		void             GetArray(int enum_in,int row,IssmDouble** pvalues,int* pN);
+		void             GetIntArray(int enum_in,int row,int** pvalues,int* pN);
+		void             GetArrayPtr(int enum_in,int row,IssmDouble** pvalues,int* pN);
+		void             GetIntArrayPtr(int enum_in,int row,int** pvalues,int* pN);
+		SegInput*       GetSegInput(int enum_type);
+		TriaInput*      GetTriaInput(int enum_type);
+		TriaInput*      GetTriaInput(int enum_type,IssmDouble time);
+		TriaInput*      GetTriaInput(int enum_in,IssmDouble start_time,IssmDouble end_time,int averaging_method);
+		PentaInput*     GetPentaInput(int enum_type);
+		PentaInput*     GetPentaInput(int enum_type,IssmDouble time);
+		PentaInput*     GetPentaInput(int enum_in,IssmDouble start_time,IssmDouble end_time,int averaging_method);
+		TransientInput* GetTransientInput(int enum_type);
+		ElementInput*   GetControlInputData(int enum_type,const char* data);
+		DatasetInput*   GetDatasetInput(int enum_type);
+		ControlInput*   GetControlInput(int enum_type);
+		void  Marshall(MarshallHandle* marshallhandle);
+		int   GetInputObjectEnum(int enum_type);
+		void  GetInputValue(bool* pvalue,int enum_in,int index);
+		void  GetInputValue(int*  pvalue,int enum_in,int index);
+		void  GetInputValue(IssmDouble*  pvalue,int enum_in,int index);
+		void  ResultInterpolation(int* pinterpolation,int*nodesperelement,int* parray_size, int output_enum);
+		void  SetInput(int enum_in,int index,bool value);
+		void  SetInput(int enum_in,int index,int value);
+		void  SetDoubleInput(int enum_in,int index,IssmDouble value);
+		void  SetTransientInput(int enum_in,IssmDouble* times,int numtimes);
+		void  SetControlInput(int enum_in,int layout,int interpolation,int control_id);
+		void  SetTransientControlInput(int enum_in,int control_id,IssmDouble* times,int numtimes);
+		TransientInput* SetDatasetTransientInput(int enum_in,int id,IssmDouble* times,int numtimes);
+		void  SetArrayInput(int enum_in,int row,IssmDouble* layers,int numlayers);
+		void  SetIntArrayInput(int enum_in,int row,int* layers,int numlayers);
+		void  SetTriaControlInputGradient(int enum_in,int interpolation,int numindices,int* indices,IssmDouble* values);
+		void  SetTriaControlInputGradient(int enum_in,int interpolation,int numindices,int* indices,IssmDouble* values,int n);
+		void  SetTriaDatasetInput(int enum_in,int id,int interpolation,int numindices,int* indices,IssmDouble* values);
+		void  SetTriaInput(int enum_in,int interpolation,int row,IssmDouble values);
+		void  SetTriaInput(int enum_in,int interpolation,int numindices,int* indices,IssmDouble* values);
+		void  SetTriaInput(int enum_in,int interpolation,int row,int numindices,IssmDouble* values);
+		void  SetPentaControlInputGradient(int enum_in,int interpolation,int numindices,int* indices,IssmDouble* values);
+		void  SetPentaDatasetInput(int enum_in,int id,int interpolation,int numindices,int* indices,IssmDouble* values);
+		void  SetPentaInput(int enum_in,int interpolation,int row,IssmDouble values);
+		void  SetPentaInput(int enum_in,int interpolation,int numindices,int* indices,IssmDouble* values);
+		void  SetPentaInput(int enum_in,int interpolation,int row,int numindices,IssmDouble* values);
+};
+
+#endif //ifndef _INPUTS_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/IntArrayInput.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/IntArrayInput.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/IntArrayInput.cpp	(revision 27955)
@@ -0,0 +1,143 @@
+/*!\file IntArrayInput.c
+ * \brief: implementation of the IntArrayInput object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+#include "./IntArrayInput.h"
+
+/*IntArrayInput constructors and destructor*/
+IntArrayInput::IntArrayInput(void){/*{{{*/
+
+	this->numberofelements_local = -1;
+	this->N                      = NULL;
+	this->values                 = NULL;
+
+}/*}}}*/
+IntArrayInput::IntArrayInput(int nbe_in){/*{{{*/
+
+	_assert_(nbe_in>0);
+	_assert_(nbe_in<1e11);
+	this->numberofelements_local = nbe_in;
+	this->N                      = xNewZeroInit<int>(this->numberofelements_local);
+	this->values                 = xNewZeroInit<int*>(this->numberofelements_local);
+
+}/*}}}*/
+IntArrayInput::~IntArrayInput(){/*{{{*/
+	if(this->values){
+		for(int i=0;i<this->numberofelements_local;i++) if(this->values[i]) xDelete<int>(this->values[i]);
+		xDelete<int>(this->values);
+	}
+	if(this->N) xDelete<int>(this->N);
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Input* IntArrayInput::copy() {/*{{{*/
+
+	IntArrayInput* output = new IntArrayInput(this->numberofelements_local);
+
+	xMemCpy<int>(output->N,this->N,this->numberofelements_local);
+
+	for(int i=0;i<this->numberofelements_local;i++){
+		if(this->values[i]){
+			_assert_(this->N[i]>0);
+			output->values[i] = xNew<int>(this->N[i]);
+			xMemCpy<int>(output->values[i],this->values[i],this->N[i]);
+		}
+		else{
+			output->values[i] = NULL;
+		}
+	}
+
+	return output;
+}
+/*}}}*/
+void IntArrayInput::DeepEcho(void){/*{{{*/
+	_printf_("IntArrayInput Echo:\n");
+	///_printf_("   Size:          "<<N<<"\n");
+	//printarray(this->values,this->M,this->N);
+	//_printf_(setw(15)<<"   IntArrayInput "<<setw(25)<<left<<EnumToStringx(this->enum_type)<<" "<<(value?"true":"false") << "\n");
+}
+/*}}}*/
+void IntArrayInput::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  IntArrayInput::Id(void){/*{{{*/
+	return -1;
+}/*}}}*/
+void IntArrayInput::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = IntArrayInputEnum;
+	marshallhandle->call(object_enum);
+	marshallhandle->call(this->numberofelements_local);
+	if(this->numberofelements_local){
+		marshallhandle->call(this->N,this->numberofelements_local);
+		for(int i=0;i<this->numberofelements_local;i++){
+			if(this->values[i]){
+				marshallhandle->call(this->values[i],this->N[i]);
+			}
+		}
+	}
+	else{
+		this->N      = NULL;
+		this->values = NULL;
+	}
+
+}
+/*}}}*/
+int  IntArrayInput::ObjectEnum(void){/*{{{*/
+	return IntArrayInputEnum;
+}
+/*}}}*/
+
+/*IntArrayInput management*/
+void IntArrayInput::SetInput(int row,int numindices,int* values_in){/*{{{*/
+
+	_assert_(this);
+	_assert_(row>=0 && row<this->numberofelements_local);
+
+	if(this->N[row] != numindices){
+		if(this->values[row]) xDelete<int>(this->values[row]);
+		this->values[row] = xNew<int>(numindices);
+	}
+
+	int *el_values = this->values[row];
+	for(int i=0;i<numindices;i++) el_values[i] = values_in[i];
+
+	this->N[row] = numindices;
+}
+/*}}}*/
+void IntArrayInput::GetArray(int row,int** pvalues,int* pN){/*{{{*/
+
+	_assert_(this);
+	_assert_(row>=0 && row<this->numberofelements_local);
+	if(pvalues){
+		int* outvalues = xNew<int>(this->N[row]);
+		xMemCpy<int>(outvalues,this->values[row],this->N[row]);
+		*pvalues = outvalues;
+	}
+	if(pN){
+		*pN = this->N[row];
+	}
+}
+/*}}}*/
+void IntArrayInput::GetArrayPtr(int row,int** pvalues,int* pN){/*{{{*/
+
+	_assert_(this);
+	_assert_(row>=0 && row<this->numberofelements_local);
+	if(pvalues){
+		*pvalues = this->values[row];
+	}
+	if(pN){
+		*pN = this->N[row];
+	}
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/IntArrayInput.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/IntArrayInput.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/IntArrayInput.h	(revision 27955)
@@ -0,0 +1,34 @@
+#ifndef _INTARRAYINPUT_H_
+#define _INTARRAYINPUT_H_
+
+/*Headers:*/
+#include "./Input.h"
+
+class IntArrayInput: public Input{
+
+	private:
+		int         numberofelements_local;
+		int*        N;
+		int** values;
+
+	public:
+		/*IntArrayInput constructors, destructors: {{{*/
+		IntArrayInput();
+		IntArrayInput(int nbe_in);
+		~IntArrayInput();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Input *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+		/*}}}*/
+		/*IntArrayInput management:*/
+		void SetInput(int row,int numinds,int* values_in);
+		void GetArray(int row,int** pvalues,int* pN);
+		void GetArrayPtr(int row,int** pvalues,int* pN);
+
+};
+#endif  /* _INTARRAYINPUT_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/IntInput.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/IntInput.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/IntInput.cpp	(revision 27955)
@@ -0,0 +1,94 @@
+/*!\file IntInput.c
+ * \brief: implementation of the IntInput object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+#include "./IntInput.h"
+
+/*IntInput constructors and destructor*/
+IntInput::IntInput(){/*{{{*/
+	this->size   = -1;
+	this->values = NULL;
+}
+/*}}}*/
+IntInput::IntInput(int size_in){/*{{{*/
+	_assert_(size_in>0);
+	_assert_(size_in<1e11);
+	this->size   = size_in;
+	this->values = xNew<int>(size_in);
+}
+/*}}}*/
+IntInput::~IntInput(){/*{{{*/
+	xDelete<int>(this->values);
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Input* IntInput::copy() {/*{{{*/
+
+	IntInput* output = new IntInput(this->size);
+	xMemCpy<int>(output->values,this->values,this->size);
+
+	return output;
+}
+/*}}}*/
+void IntInput::DeepEcho(void){/*{{{*/
+
+	_printf_("IntInput Echo:\n");
+	_printf_("   Size:          "<<size<<"\n");
+	printarray(this->values,this->size);
+	//_printf_(setw(15)<<"   IntInput "<<setw(25)<<left<<EnumToStringx(this->enum_type)<<" "<<(value?"true":"false") << "\n");
+}
+/*}}}*/
+void IntInput::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  IntInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void IntInput::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = IntInputEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->size);
+	if(this->size > 0){
+		marshallhandle->call(this->values,this->size);
+	}
+	else this->values = NULL;
+
+}
+/*}}}*/
+int  IntInput::ObjectEnum(void){/*{{{*/
+
+	return IntInputEnum;
+
+}
+/*}}}*/
+
+/*IntInput management*/
+void IntInput::GetInput(int* pvalue,int index){/*{{{*/
+
+	_assert_(index>=0); 
+	_assert_(index<this->size); 
+
+	*pvalue = this->values[index];
+}
+/*}}}*/
+void IntInput::SetInput(int index,int value){/*{{{*/
+
+	_assert_(index>=0); 
+	_assert_(index<this->size); 
+
+	this->values[index] = value;
+}
+/*}}}*/
+
+/*Object functions*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/IntInput.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/IntInput.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/IntInput.h	(revision 27955)
@@ -0,0 +1,33 @@
+#ifndef _INTINPUT2_H_
+#define _INTINPUT2_H_
+
+/*Headers:*/
+#include "./Input.h"
+
+class IntInput: public Input{
+
+	private:
+		int   size;
+		int*  values;
+
+	public:
+		/*IntInput constructors, destructors: {{{*/
+		IntInput();
+		IntInput(int size_in);
+		~IntInput();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Input *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+		/*}}}*/
+		/*IntInput management: {{{*/
+		void GetInput(int* pvalue,int index);
+		void SetInput(int index,int value);
+		/*}}}*/
+
+};
+#endif  /* _BOOLINPUT_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/PentaInput.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/PentaInput.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/PentaInput.cpp	(revision 27955)
@@ -0,0 +1,436 @@
+/*!\file PentaInput.c
+ * \brief: implementation of the PentaInput object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+#include "./PentaInput.h"
+
+/*PentaInput constructors and destructor*/
+PentaInput::PentaInput(void){/*{{{*/
+
+	this->numberofelements_local = -1;
+	this->numberofvertices_local = -1;
+	this->isserved       = false;
+	this->isserved_collapsed= 0;
+	this->M = -1;
+	this->N = -1;
+	this->values         = NULL;
+	this->element_values = NULL;
+
+}/*}}}*/
+PentaInput::PentaInput(int nbe_in,int nbv_in,int interp_in){/*{{{*/
+
+	_assert_(nbe_in>0);
+	_assert_(nbe_in<1e11);
+	_assert_(nbv_in>0);
+	_assert_(nbv_in<1e11);
+	this->numberofelements_local = nbe_in;
+	this->numberofvertices_local = nbv_in;
+	this->isserved           = false;
+	this->isserved_collapsed = 0;
+
+	/*Reset takes care of the rest*/
+	this->Reset(interp_in);
+
+}/*}}}*/
+PentaInput::~PentaInput(){/*{{{*/
+	if(this->element_values) xDelete<IssmDouble>(this->element_values);
+	if(this->values)         xDelete<IssmDouble>(this->values);
+}
+/*}}}*/
+void PentaInput::Reset(int interp_in){/*{{{*/
+
+	/*Clean up*/
+	if(this->values)         xDelete<IssmDouble>(this->values);
+	if(this->element_values) xDelete<IssmDouble>(this->element_values);
+
+	/*Set interpolation*/
+	this->interpolation  = interp_in;
+
+	/*Create Sizes*/
+	if(this->interpolation==P1Enum){
+		this->M = this->numberofvertices_local;
+		this->N = 1;
+	}
+	else{
+		this->M = this->numberofelements_local;
+		this->N = PentaRef::NumberofNodes(interp_in);
+	}
+
+	/*Allocate Pointers*/
+	this->values         = xNewZeroInit<IssmDouble>(this->M*this->N);
+	this->element_values = xNewZeroInit<IssmDouble>(PentaRef::NumberofNodes(interp_in));
+}/*}}}*/
+
+/*Object virtual functions definitions:*/
+Input* PentaInput::copy() {/*{{{*/
+
+	/*Create output*/
+	PentaInput* output = new PentaInput(this->numberofelements_local,this->numberofvertices_local,this->interpolation);
+
+	/*Copy values*/
+	xMemCpy<IssmDouble>(output->values,this->values,this->M*this->N);
+
+	/*Return output*/
+	return output;
+
+}
+/*}}}*/
+void PentaInput::DeepEcho(void){/*{{{*/
+	_printf_("PentaInput Echo:\n");
+	_printf_("   interpolation:      "<<EnumToStringx(this->interpolation)<<"\n");
+	_printf_("   nbe_local:          "<<this->numberofvertices_local<<"\n");
+	_printf_("   nbv_local:          "<<this->numberofelements_local<<"\n");
+	_printf_("   Size:               "<<M<<"x"<<N<<"\n");
+	_printf_("   isserved:           "<<(isserved?"true":"false") << "\n");
+	_printf_("   isserved_collapsed: "<<isserved_collapsed << "\n");
+	if(isserved){
+		_printf_("   current values:      ");
+		if(isserved_collapsed){
+			_printf_("[ ");
+			for(int i=0;i<3;i++) _printf_(" "<<this->element_values[i]);
+			_printf_("] ("<<EnumToStringx(this->interpolation)<<")\n");
+		}
+		else{
+			_printf_("[ ");
+			for(int i=0;i<PentaRef::NumberofNodes(this->interpolation);i++) _printf_(" "<<this->element_values[i]);
+			_printf_("] ("<<EnumToStringx(this->interpolation)<<")\n");
+		}
+	}
+}
+/*}}}*/
+void PentaInput::Echo(void){/*{{{*/
+	_printf_(setw(15)<<"   PentaInput "<<setw(25)<<left<<EnumToStringx(-1));
+	if(isserved){
+		if(isserved_collapsed){
+			_printf_("[ ");
+			for(int i=0;i<3;i++) _printf_(" "<<this->element_values[i]);
+			_printf_("] ("<<EnumToStringx(this->interpolation)<<")\n");
+		}
+		else{
+			_printf_("[ ");
+			for(int i=0;i<PentaRef::NumberofNodes(this->interpolation);i++) _printf_(" "<<this->element_values[i]);
+			_printf_("] ("<<EnumToStringx(this->interpolation)<<")\n");
+		}
+	}
+}
+/*}}}*/
+int  PentaInput::Id(void){/*{{{*/
+	return -1;
+}/*}}}*/
+void PentaInput::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = PentaInputEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->numberofelements_local);
+	marshallhandle->call(this->numberofvertices_local);
+	marshallhandle->call(this->interpolation);
+	marshallhandle->call(this->M);
+	marshallhandle->call(this->N);
+	this->isserved = false;
+	this->isserved_collapsed = 0;
+	if(this->M*this->N){
+		marshallhandle->call(this->values,this->M*this->N);
+	}
+	else this->values = NULL;
+
+	if(marshallhandle->OperationNumber() == MARSHALLING_LOAD){
+		this->element_values = xNewZeroInit<IssmDouble>(PentaRef::NumberofNodes(this->interpolation));
+	}
+}
+/*}}}*/
+int  PentaInput::ObjectEnum(void){/*{{{*/
+	return PentaInputEnum;
+}
+/*}}}*/
+
+/*PentaInput management*/
+void PentaInput::SetInput(int interp_in,int row,IssmDouble value_in){/*{{{*/
+
+	_assert_(this);
+	_assert_(row>=0);
+	_assert_(row<this->M);
+	_assert_(this->N==1);
+
+	this->values[row] = value_in;
+	this->isserved    = false;
+}
+/*}}}*/
+void PentaInput::SetInput(int interp_in,int numindices,int* indices,IssmDouble* values_in){/*{{{*/
+
+	_assert_(this);
+	if(interp_in==P1Enum && this->interpolation==P1Enum){
+		_assert_(this->N==1);
+		for(int i=0;i<numindices;i++){
+			int row = indices[i];
+			_assert_(row>=0);
+			_assert_(row<this->M);
+			this->values[row] = values_in[i];
+		}
+	}
+	else if(interp_in==P0Enum && this->interpolation==P0Enum){
+		_assert_(this->N==1);
+		for(int i=0;i<numindices;i++){
+			int row = indices[i];
+			_assert_(row>=0);
+			_assert_(row<this->M);
+			this->values[row] = values_in[i];
+		}
+	}
+	else if(this->interpolation!=P1Enum && interp_in==P1Enum){
+		this->Reset(interp_in);
+		for(int i=0;i<numindices;i++){
+			int row = indices[i];
+			_assert_(row>=0);
+			_assert_(row<this->M);
+			this->values[row] = values_in[i];
+		}
+	}
+	else{
+		_error_("not supported");
+	}
+
+	this->isserved    = false;
+}
+/*}}}*/
+void PentaInput::SetInput(int interp_in,int row,int numindices,IssmDouble* values_in){/*{{{*/
+
+	_assert_(this);
+	if(interp_in==this->interpolation){
+		_assert_(this->N==numindices);
+	}
+	else{
+		this->Reset(interp_in);
+		_assert_(this->N==numindices);
+	}
+	for(int i=0;i<numindices;i++) this->values[row*this->N+i] = values_in[i];
+
+	this->isserved    = false;
+}
+/*}}}*/
+void PentaInput::Serve(int numindices,int* indices){/*{{{*/
+
+	_assert_(this);
+	_assert_(this->N==1);
+
+	for(int i=0;i<numindices;i++){
+		int row = indices[i];
+		_assert_(row>=0);
+		_assert_(row<this->M);
+		this->element_values[i] = this->values[row];
+	}
+
+	/*Set input as served*/
+	this->isserved = true;
+	this->isserved_collapsed = 0;
+}
+/*}}}*/
+void PentaInput::Serve(int row,int numindices){/*{{{*/
+
+	_assert_(this);
+	_assert_(this->N==numindices);
+	_assert_(row<this->M);
+	_assert_(row>=0);
+
+	for(int i=0;i<numindices;i++){
+		this->element_values[i] = this->values[row*this->N+i];
+	}
+
+	/*Set input as served*/
+	this->isserved = true;
+	this->isserved_collapsed = 0;
+}/*}}}*/
+void PentaInput::ServeCollapsed(int row,int state){/*{{{*/
+
+	_assert_(this);
+	_assert_(this->N>=3);
+	_assert_(row<this->M);
+	_assert_(row>=0);
+
+	if(state==1){
+		for(int i=0;i<3;i++) this->element_values[i] = this->values[row*this->N+i];
+		for(int i=3;i<6;i++) this->element_values[i] = 0.;
+	}
+	else if(state==2){
+		for(int i=0;i<3;i++) this->element_values[i] = this->values[row*this->N+3+i];
+		for(int i=3;i<6;i++) this->element_values[i] = 0.;
+	}
+	else{
+		_error_("not supported");
+	}
+
+	/*Set input as served*/
+	this->isserved = true;
+	this->isserved_collapsed = state;
+}/*}}}*/
+void PentaInput::SetServeCollapsed(int state){/*{{{*/
+	this->isserved_collapsed = state;
+}/*}}}*/
+int  PentaInput::GetInterpolation(){/*{{{*/
+	return this->interpolation;
+}/*}}}*/
+void PentaInput::GetInputAverage(IssmDouble* pvalue){/*{{{*/
+	_assert_(this);
+	_assert_(this->isserved);
+
+	/*Output*/
+	IssmDouble value = 0.;
+
+	if(this->isserved_collapsed){
+		if(this->interpolation==P0Enum){
+			value = this->element_values[0];
+		}
+		else{
+			/*Assume P1...*/
+			value = 1./3.*(this->element_values[0] +  this->element_values[1] +  this->element_values[2]);
+		}
+	}
+	else{
+		int        numnodes  = this->NumberofNodes(this->interpolation);
+		IssmDouble numnodesd = reCast<int,IssmDouble>(numnodes);
+
+		for(int i=0;i<numnodes;i++) value+=this->element_values[i];
+		value = value/numnodesd;
+	}
+
+	*pvalue=value;
+}/*}}}*/
+IssmDouble PentaInput::GetInputMin(void){/*{{{*/
+	_assert_(this);
+	_assert_(this->isserved);
+
+	int  numnodes  = this->NumberofNodes(this->interpolation);
+	if(this->isserved_collapsed) numnodes = 3;
+	IssmDouble min=this->element_values[0];
+
+	for(int i=1;i<numnodes;i++){
+		if(this->element_values[i]<min) min=this->element_values[i];
+	}
+	return min;
+}/*}}}*/
+IssmDouble PentaInput::GetInputMax(void){/*{{{*/
+	_assert_(this);
+	_assert_(this->isserved);
+
+	int numnodes  = this->NumberofNodes(this->interpolation);
+	if(this->isserved_collapsed) numnodes = 3;
+	IssmDouble max=this->element_values[0];
+
+	for(int i=1;i<numnodes;i++){
+		if(this->element_values[i]>max) max=this->element_values[i];
+	}
+	return max;
+}/*}}}*/
+IssmDouble PentaInput::GetInputMaxAbs(void){/*{{{*/
+	_assert_(this);
+	_assert_(this->isserved);
+
+	int numnodes  = this->NumberofNodes(this->interpolation);
+	if(this->isserved_collapsed) numnodes = 3;
+	IssmDouble maxabs=fabs(this->element_values[0]);
+
+	for(int i=1;i<numnodes;i++){
+		if(fabs(this->element_values[i])>maxabs) maxabs=fabs(this->element_values[i]);
+	}
+	return maxabs;
+}/*}}}*/
+void PentaInput::GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, Gauss* gauss){/*{{{*/
+	_assert_(this);
+	_assert_(this->isserved);
+	if(this->isserved_collapsed){
+		_assert_(gauss->Enum()==GaussTriaEnum);
+		if(this->interpolation==P0Enum){
+			derivativevalues[0] = 0.;
+			derivativevalues[1] = 0.;
+		}
+		else{
+			TriaRef temp;
+			temp.GetInputDerivativeValue(derivativevalues,this->element_values,xyz_list,(GaussTria*)gauss,P1Enum);
+		}
+	}
+	else{
+		_assert_(gauss->Enum()==GaussPentaEnum);
+		PentaRef::GetInputDerivativeValue(derivativevalues,this->element_values,xyz_list,(GaussPenta*)gauss,this->interpolation);
+	}
+}/*}}}*/
+void PentaInput::GetInputValue(IssmDouble* pvalue,Gauss* gauss){/*{{{*/
+	_assert_(this);
+	_assert_(this->isserved);
+	if(this->isserved_collapsed){
+		_assert_(gauss->Enum()==GaussTriaEnum);
+		if(this->interpolation==P0Enum){
+			*pvalue = this->element_values[0];
+		}
+		else{
+			TriaRef temp;
+			temp.GetInputValue(pvalue,this->element_values,(GaussTria*)gauss,P1Enum);
+		}
+	}
+	else{
+		_assert_(gauss->Enum()==GaussPentaEnum);
+		PentaRef::GetInputValue(pvalue,this->element_values,(GaussPenta*)gauss,this->interpolation);
+	}
+}/*}}}*/
+int  PentaInput::GetResultArraySize(void){/*{{{*/
+	return 1;
+}
+/*}}}*/
+int  PentaInput::GetResultInterpolation(void){/*{{{*/
+	if(this->interpolation==P0Enum || this->interpolation==P0DGEnum){
+		return P0Enum;
+	}
+	return P1Enum;
+}/*}}}*/
+int  PentaInput::GetResultNumberOfNodes(void){/*{{{*/
+	return PentaRef::NumberofNodes(this->interpolation);
+}
+/*}}}*/
+void PentaInput::Scale(IssmDouble alpha){/*{{{*/
+
+	for(int i=0;i<this->M*this->N;i++) this->values[i] = alpha*this->values[i];
+	for(int i=0;i<PentaRef::NumberofNodes(this->interpolation);i++) this->element_values[i] = alpha*this->element_values[i];
+}
+/*}}}*/
+void PentaInput::Pow(IssmDouble alpha){/*{{{*/
+
+	for(int i=0;i<this->M*this->N;i++) this->values[i] = pow(this->values[i],alpha);
+	for(int i=0;i<PentaRef::NumberofNodes(this->interpolation);i++) this->element_values[i] = pow(this->element_values[i],alpha);
+}
+/*}}}*/
+void PentaInput::AXPY(Input* xinput,IssmDouble alpha){/*{{{*/
+
+	/*xinput is of the same type, so cast it: */
+	if(xinput->ObjectEnum()!=PentaInputEnum) _error_("Operation not permitted because xinput is of type " << EnumToStringx(xinput->ObjectEnum()));
+	PentaInput* xpentainput=xDynamicCast<PentaInput*>(xinput);
+	if(xpentainput->GetInterpolation()!=this->interpolation) _error_("Operation not permitted because xinput is of type " << EnumToStringx(xinput->ObjectEnum()));
+
+	/*Carry out the AXPY operation depending on type:*/
+	for(int i=0;i<this->M*this->N;i++) this->values[i] = alpha*xpentainput->values[i] + this->values[i];
+	for(int i=0;i<PentaRef::NumberofNodes(this->interpolation);i++) this->element_values[i] = alpha*xpentainput->element_values[i] + this->element_values[i];
+}
+/*}}}*/
+void PentaInput::PointWiseMult(Input* xinput){/*{{{*/
+
+	/*xinput is of the same type, so cast it: */
+	if(xinput->ObjectEnum()!=PentaInputEnum) _error_("Operation not permitted because xinput is of type " << EnumToStringx(xinput->ObjectEnum()));
+	PentaInput* xpentainput=xDynamicCast<PentaInput*>(xinput);
+	if(xpentainput->GetInterpolation()!=this->interpolation) _error_("Operation not permitted because xinput is of type " << EnumToStringx(xinput->ObjectEnum()));
+
+	/* we need to check that the vector sizes are identical*/
+	if(xpentainput->M!=this->M||xpentainput->N!=this->N) _error_("Operation not permitted because the inputs have different sizes");
+
+	/*Carry out the pointwise operation depending on type:*/
+	for(int i=0;i<this->M*this->N;i++) this->values[i] = xpentainput->values[i] * this->values[i];
+	for(int i=0;i<PentaRef::NumberofNodes(this->interpolation);i++) this->element_values[i] = xpentainput->element_values[i] * this->element_values[i];
+}
+/*}}}*/
+
+/*Object functions*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/PentaInput.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/PentaInput.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/PentaInput.h	(revision 27955)
@@ -0,0 +1,53 @@
+#ifndef _PENTAINPUT2_H_
+#define _PENTAINPUT2_H_
+
+/*Headers:*/
+#include "./ElementInput.h"
+#include "../Elements/PentaRef.h"
+
+class PentaInput: public ElementInput, public PentaRef{
+
+	private:
+		int isserved_collapsed;
+	public:
+		/*PentaInput constructors, destructors: {{{*/
+		PentaInput();
+		PentaInput(int nbe_in,int nbv_in,int interp_in);
+		~PentaInput();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Input *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+		/*}}}*/
+		/*PentaInput management: {{{*/
+		void SetInput(int interp_in,int row,IssmDouble value_in);
+		void SetInput(int interp_in,int numinds,int* rows,IssmDouble* values_in);
+		void SetInput(int interp_in,int row,int numinds,IssmDouble* values_in);
+		int  GetInterpolation();
+		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, Gauss* gauss);
+		void GetInputAverage(IssmDouble* pvalue);
+		IssmDouble GetInputMin();
+		IssmDouble GetInputMax();
+		IssmDouble GetInputMaxAbs();
+		PentaInput* GetPentaInput(){return this;};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss);
+		void Scale(IssmDouble scalar);
+		void Pow(IssmDouble scalar);
+		void AXPY(Input* xinput,IssmDouble scalar);
+		void PointWiseMult(Input* xinput);
+		void Serve(int numindices,int* indices);
+		void Serve(int row,int numindices);
+		void ServeCollapsed(int row,int state);
+		void SetServeCollapsed(int);
+		int  GetResultArraySize(void);
+		int  GetResultInterpolation(void);
+		int  GetResultNumberOfNodes(void);
+		/*}}}*/
+		void Reset(int interp_in);
+
+};
+#endif  /* _TRIAINPUT_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/SegInput.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/SegInput.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/SegInput.cpp	(revision 27955)
@@ -0,0 +1,347 @@
+/*!\file SegInput.c
+ * \brief: implementation of the SegInput object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+#include "./SegInput.h"
+
+/*SegInput constructors and destructor*/
+SegInput::SegInput(void){/*{{{*/
+
+	this->numberofelements_local = -1;
+	this->numberofvertices_local = -1;
+	this->isserved       = false;
+	this->M = -1;
+	this->N = -1;
+	this->values         = NULL;
+	this->element_values = NULL;
+
+}/*}}}*/
+SegInput::SegInput(int nbe_in,int nbv_in,int interp_in){/*{{{*/
+
+	_assert_(nbe_in>0);
+	_assert_(nbe_in<1e11);
+	_assert_(nbv_in>0);
+	_assert_(nbv_in<1e11);
+	this->numberofelements_local = nbe_in;
+	this->numberofvertices_local = nbv_in;
+	this->isserved       = false;
+
+	/*Reset takes care of the rest*/
+	this->Reset(interp_in);
+}/*}}}*/
+SegInput::~SegInput(){/*{{{*/
+	if(this->element_values) xDelete<IssmDouble>(this->element_values);
+	if(this->values)         xDelete<IssmDouble>(this->values);
+}
+/*}}}*/
+void SegInput::Reset(int interp_in){/*{{{*/
+
+	/*Clean up*/
+	if(this->values)         xDelete<IssmDouble>(this->values);
+	if(this->element_values) xDelete<IssmDouble>(this->element_values);
+
+	/*Set interpolation*/
+	this->interpolation  = interp_in;
+
+	/*Create Sizes*/
+	if(this->interpolation==P1Enum){
+		this->M = this->numberofvertices_local;
+		this->N = 1;
+	}
+	else{
+		this->M = this->numberofelements_local;
+		this->N = SegRef::NumberofNodes(interp_in);
+	}
+
+	/*Allocate Pointers*/
+	this->values         = xNewZeroInit<IssmDouble>(this->M*this->N);
+	this->element_values = xNewZeroInit<IssmDouble>(SegRef::NumberofNodes(interp_in));
+}/*}}}*/
+
+/*Object virtual functions definitions:*/
+Input* SegInput::copy() {/*{{{*/
+
+	SegInput* output = new SegInput(this->numberofelements_local,this->numberofvertices_local,this->interpolation);
+
+	xMemCpy<IssmDouble>(output->values,this->values,this->M*this->N);
+	xMemCpy<IssmDouble>(output->element_values,this->element_values,SegRef::NumberofNodes(this->interpolation));
+
+	return output;
+}
+/*}}}*/
+void SegInput::DeepEcho(void){/*{{{*/
+	_printf_("SegInput Echo:\n");
+	_printf_("   interpolation: "<<EnumToStringx(this->interpolation)<<"\n");
+	_printf_("   Size:          "<<M<<"x"<<N<<"\n");
+	_printf_("   isserved:      "<<(isserved?"true":"false") << "\n");
+	if(isserved){
+		_printf_("   current values:      ");
+		for(int i=0;i<3;i++) _printf_(" "<<this->element_values[i]);
+		_printf_("] ("<<EnumToStringx(this->interpolation)<<")\n");
+	}
+	printarray(this->values,this->M,this->N);
+	//_printf_(setw(15)<<"   SegInput "<<setw(25)<<left<<EnumToStringx(this->enum_type)<<" "<<(value?"true":"false") << "\n");
+}
+/*}}}*/
+void SegInput::Echo(void){/*{{{*/
+	_printf_("SegInput Echo:\n");
+	_printf_("   interpolation: "<<EnumToStringx(this->interpolation)<<"\n");
+	_printf_("   Size:          "<<M<<"x"<<N<<"\n");
+	_printf_("   isserved:      "<<(isserved?"true":"false") << "\n");
+	if(isserved){
+		_printf_("   current values:      ");
+		_printf_("[ ");
+		for(int i=0;i<3;i++) _printf_(" "<<this->element_values[i]);
+		_printf_("] ("<<EnumToStringx(this->interpolation)<<")\n");
+	}
+}
+/*}}}*/
+int  SegInput::Id(void){/*{{{*/
+	return -1;
+}/*}}}*/
+void SegInput::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = SegInputEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->numberofelements_local);
+	marshallhandle->call(this->numberofvertices_local);
+	marshallhandle->call(this->interpolation);
+	marshallhandle->call(this->M);
+	marshallhandle->call(this->N);
+	this->isserved = false;
+	if(this->M*this->N){
+		marshallhandle->call(this->values,this->M*this->N);
+	}
+	else this->values = NULL;
+
+	if(marshallhandle->OperationNumber() == MARSHALLING_LOAD){
+		this->element_values = xNewZeroInit<IssmDouble>(SegRef::NumberofNodes(this->interpolation));
+	}
+
+}
+/*}}}*/
+int  SegInput::ObjectEnum(void){/*{{{*/
+	return SegInputEnum;
+}
+/*}}}*/
+
+/*SegInput management*/
+void SegInput::SetInput(int interp_in,int row,IssmDouble value_in){/*{{{*/
+
+	_assert_(this);
+	_assert_(row>=0);
+	_assert_(row<this->M);
+	_assert_(this->N==1);
+
+	this->values[row] = value_in;
+	this->isserved = false;
+}
+/*}}}*/
+void SegInput::SetInput(int interp_in,int numindices,int* indices,IssmDouble* values_in){/*{{{*/
+
+	_assert_(this);
+	if(interp_in==P1Enum && this->interpolation==P1Enum){
+		_assert_(this->N==1);
+		for(int i=0;i<numindices;i++){
+			int row = indices[i];
+			_assert_(row>=0);
+			_assert_(row<this->M);
+			this->values[row] = values_in[i];
+		}
+	}
+	else if(interp_in==P0Enum && this->interpolation==P0Enum){
+		_assert_(this->N==1);
+		for(int i=0;i<numindices;i++){
+			int row = indices[i];
+			_assert_(row>=0);
+			_assert_(row<this->M);
+			this->values[row] = values_in[i];
+		}
+	}
+	else if(this->interpolation!=P1Enum && interp_in==P1Enum){
+		this->Reset(interp_in);
+		for(int i=0;i<numindices;i++){
+			int row = indices[i];
+			_assert_(row>=0);
+			_assert_(row<this->M);
+			this->values[row] = values_in[i];
+		}
+	}
+	else{
+		_error_("Cannot convert "<<EnumToStringx(this->interpolation)<<" to "<<EnumToStringx(interp_in));
+	}
+	this->isserved = false;
+}
+/*}}}*/
+void SegInput::SetInput(int interp_in,int row,int numindices,IssmDouble* values_in){/*{{{*/
+
+	_assert_(this);
+	if(interp_in==this->interpolation){
+		_assert_(this->N==numindices);
+	}
+	else{
+		this->Reset(interp_in);
+		_assert_(this->N==numindices);
+	}
+	for(int i=0;i<numindices;i++) this->values[row*this->N+i] = values_in[i];
+	this->isserved = false;
+}
+/*}}}*/
+void SegInput::Serve(int numindices,int* indices){/*{{{*/
+
+	_assert_(this);
+	_assert_(this->N==1);
+
+	for(int i=0;i<numindices;i++){
+		int row = indices[i];
+		_assert_(row>=0);
+		_assert_(row<this->M);
+		this->element_values[i] = this->values[row];
+	}
+
+	/*Set input as served*/
+	this->isserved = true;
+}
+/*}}}*/
+void SegInput::Serve(int row,int numindices){/*{{{*/
+
+	_assert_(this);
+	_assert_(this->N==numindices);
+	_assert_(row<this->M);
+	_assert_(row>=0);
+
+	for(int i=0;i<numindices;i++){
+		this->element_values[i] = this->values[row*this->N+i];
+	}
+
+	/*Set input as served*/
+	this->isserved = true;
+} /*}}}*/
+int  SegInput::GetInterpolation(){/*{{{*/
+	return this->interpolation;
+}/*}}}*/
+void SegInput::GetInputAverage(IssmDouble* pvalue){/*{{{*/
+	_assert_(this);
+	_assert_(this->isserved);
+
+	int        numnodes  = this->NumberofNodes(this->interpolation);
+	IssmDouble numnodesd = reCast<int,IssmDouble>(numnodes);
+	IssmDouble value     = 0.;
+
+	for(int i=0;i<numnodes;i++) value+=this->element_values[i];
+	value = value/numnodesd;
+
+	*pvalue=value;
+}/*}}}*/
+IssmDouble SegInput::GetInputMin(void){/*{{{*/
+	_assert_(this);
+	_assert_(this->isserved);
+
+	int        numnodes  = this->NumberofNodes(this->interpolation);
+	IssmDouble min=this->element_values[0];
+
+	for(int i=1;i<numnodes;i++){
+		if(this->element_values[i]<min) min=this->element_values[i];
+	}
+	return min;
+}/*}}}*/
+IssmDouble SegInput::GetInputMax(void){/*{{{*/
+	_assert_(this);
+	_assert_(this->isserved);
+
+	int        numnodes  = this->NumberofNodes(this->interpolation);
+	IssmDouble max=this->element_values[0];
+
+	for(int i=1;i<numnodes;i++){
+		if(this->element_values[i]>max) max=this->element_values[i];
+	}
+	return max;
+}/*}}}*/
+IssmDouble SegInput::GetInputMaxAbs(void){/*{{{*/
+	_assert_(this);
+	_assert_(this->isserved);
+
+	int        numnodes  = this->NumberofNodes(this->interpolation);
+	IssmDouble maxabs=fabs(this->element_values[0]);
+
+	for(int i=1;i<numnodes;i++){
+		if(fabs(this->element_values[i])>maxabs) maxabs=fabs(this->element_values[i]);
+	}
+	return maxabs;
+}/*}}}*/
+void SegInput::GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, Gauss* gauss){/*{{{*/
+	_assert_(this);
+	_assert_(this->isserved);
+	_assert_(gauss->Enum()==GaussSegEnum);
+	SegRef::GetInputDerivativeValue(derivativevalues,this->element_values,xyz_list,(GaussSeg*)gauss,this->interpolation);
+}/*}}}*/
+void SegInput::GetInputValue(IssmDouble* pvalue,Gauss* gauss){/*{{{*/
+	_assert_(this);
+	_assert_(this->isserved);
+	_assert_(gauss->Enum()==GaussSegEnum);
+	SegRef::GetInputValue(pvalue,this->element_values,(GaussSeg*)gauss,this->interpolation);
+}/*}}}*/
+int  SegInput::GetResultArraySize(void){/*{{{*/
+	return 1;
+}
+/*}}}*/
+int  SegInput::GetResultInterpolation(void){/*{{{*/
+	if(this->interpolation==P0Enum || this->interpolation==P0DGEnum){
+		return P0Enum;
+	}
+	return P1Enum;
+}/*}}}*/
+int  SegInput::GetResultNumberOfNodes(void){/*{{{*/
+	return SegRef::NumberofNodes(this->interpolation);
+}
+/*}}}*/
+void SegInput::Scale(IssmDouble alpha){/*{{{*/
+
+	for(int i=0;i<this->M*this->N;i++) this->values[i] = alpha*this->values[i];
+	for(int i=0;i<SegRef::NumberofNodes(this->interpolation);i++) this->element_values[i] = alpha*this->element_values[i];
+}
+/*}}}*/
+void SegInput::Pow(IssmDouble alpha){/*{{{*/
+
+	for(int i=0;i<this->M*this->N;i++) this->values[i] = pow(this->values[i],alpha);
+	for(int i=0;i<SegRef::NumberofNodes(this->interpolation);i++) this->element_values[i] = pow(this->element_values[i],alpha);
+}
+/*}}}*/
+void SegInput::AXPY(Input* xinput,IssmDouble alpha){/*{{{*/
+
+	/*xinput is of the same type, so cast it: */
+	if(xinput->ObjectEnum()!=SegInputEnum) _error_("Operation not permitted because xinput is of type " << EnumToStringx(xinput->ObjectEnum()));
+	SegInput* xseginput=xDynamicCast<SegInput*>(xinput);
+	if(xseginput->GetInterpolation()!=this->interpolation) _error_("Operation not permitted because xinput is of type " << EnumToStringx(xinput->ObjectEnum()));
+
+	/*Carry out the AXPY operation depending on type:*/
+	for(int i=0;i<this->M*this->N;i++) this->values[i] = alpha*xseginput->values[i] + this->values[i];
+	for(int i=0;i<SegRef::NumberofNodes(this->interpolation);i++) this->element_values[i] = alpha*xseginput->element_values[i] + this->element_values[i];
+}
+/*}}}*/
+void SegInput::PointWiseMult(Input* xinput){/*{{{*/
+
+	/*xinput is of the same type, so cast it: */
+	if(xinput->ObjectEnum()!=SegInputEnum) _error_("Operation not permitted because xinput is of type " << EnumToStringx(xinput->ObjectEnum()));
+	SegInput* xseginput=xDynamicCast<SegInput*>(xinput);
+	if(xseginput->GetInterpolation()!=this->interpolation) _error_("Operation not permitted because xinput is of type " << EnumToStringx(xinput->ObjectEnum()));
+
+	/* we need to check that the vector sizes are identical*/
+	if(xseginput->M!=this->M||xseginput->N!=this->N) _error_("Operation not permitted because the inputs have different sizes");
+
+	/*Carry out the AXPY operation depending on type:*/
+	for(int i=0;i<this->M*this->N;i++) this->values[i] = xseginput->values[i] * this->values[i];
+	for(int i=0;i<SegRef::NumberofNodes(this->interpolation);i++) this->element_values[i] = xseginput->element_values[i] * this->element_values[i];
+}
+/*}}}*/
+
+/*Object functions*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/SegInput.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/SegInput.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/SegInput.h	(revision 27955)
@@ -0,0 +1,49 @@
+#ifndef _SEGINPUT2_H_
+#define _SEGINPUT2_H_
+
+/*Headers:*/
+#include "./ElementInput.h"
+#include "../Elements/SegRef.h"
+
+class SegInput: public ElementInput, public SegRef{
+
+	public:
+		/*SegInput constructors, destructors: {{{*/
+		SegInput();
+		SegInput(int nbe_in,int nbv_in,int interp_in);
+		~SegInput();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Input *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+		/*}}}*/
+		/*SegInput management: {{{*/
+		void SetInput(int interp_in,int row,IssmDouble value_in);
+		void SetInput(int interp_in,int numinds,int* rows,IssmDouble* values_in);
+		void SetInput(int interp_in,int row,int numinds,IssmDouble* values_in);
+		int  GetInterpolation();
+		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, Gauss* gauss);
+		void GetInputAverage(IssmDouble* pvalue);
+		IssmDouble GetInputMin();
+		IssmDouble GetInputMax();
+		IssmDouble GetInputMaxAbs();
+		SegInput* GetSegInput(){return this;};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss);
+		void Scale(IssmDouble scalar);
+		void Pow(IssmDouble scalar);
+		void AXPY(Input* xinput,IssmDouble scalar);
+		void PointWiseMult(Input* xinput);
+		void Serve(int numindices,int* indices);
+		void Serve(int row,int numindices);
+		int  GetResultArraySize(void);
+		int  GetResultInterpolation(void);
+		int  GetResultNumberOfNodes(void);
+		/*}}}*/
+		void Reset(int interp_in);
+
+};
+#endif  /* _SEGINPUT_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/TransientInput.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/TransientInput.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/TransientInput.cpp	(revision 27955)
@@ -0,0 +1,676 @@
+/*!\file TransientInput.c
+ * \brief: implementation of the TransientInput object
+ */
+/*Headers*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <numeric>
+#include "./TransientInput.h"
+#include "./TriaInput.h"
+#include "./PentaInput.h"
+#include "../../shared/shared.h"
+#include "../Params/Parameters.h"
+
+/*TransientInput constructors and destructor*/
+TransientInput::TransientInput(){/*{{{*/
+
+	enum_type=UNDEF;
+	inputs=NULL;
+	this->numtimesteps=0;
+	this->parameters=NULL;
+	this->timesteps=NULL;
+
+	this->current_input=NULL;
+	this->current_step=-1;
+
+}
+/*}}}*/
+TransientInput::TransientInput(int in_enum_type,int nbe,int nbv,IssmDouble* timesin,int N){/*{{{*/
+
+	/*Set Enum*/
+	this->enum_type=in_enum_type;
+	this->numberofelements_local = nbe;
+	this->numberofvertices_local = nbv;
+
+	/*Allocate values and timesteps, and copy: */
+	_assert_(N>=0 && N<1e6);
+	this->numtimesteps=N;
+	if(N>0){
+		this->timesteps=xNew<IssmDouble>(N);
+		xMemCpy(this->timesteps,timesin,N);
+
+		this->inputs     = xNew<Input*>(N);
+		for(int i=0;i<N;i++) this->inputs[i] = NULL;
+	}
+	else{
+		this->timesteps=0;
+		this->inputs   =0;
+	}
+	this->parameters = NULL;
+	this->current_input=NULL;
+	this->current_step=-1;
+}
+/*}}}*/
+TransientInput::~TransientInput(){/*{{{*/
+
+	for(int i=0;i<this->numtimesteps;i++){
+		delete this->inputs[i];
+	}
+	xDelete<Input*>(this->inputs);
+	xDelete<IssmDouble>(this->timesteps);
+
+	if(this->current_input) delete this->current_input;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Input* TransientInput::copy() {/*{{{*/
+
+	TransientInput* output=NULL;
+
+	output = new TransientInput();
+	output->enum_type=this->enum_type;
+	output->numtimesteps=this->numtimesteps;
+	if(this->numtimesteps>0){
+		output->timesteps=xNew<IssmDouble>(this->numtimesteps);
+		xMemCpy(output->timesteps,this->timesteps,this->numtimesteps);
+		output->inputs = xNew<Input*>(this->numtimesteps);
+		for(int i=0;i<this->numtimesteps;i++){
+			if(this->inputs[i]){
+				output->inputs[i] = this->inputs[i]->copy();
+			}
+			else{
+				output->inputs[i] = NULL;
+			}
+		}
+	}
+	output->parameters=this->parameters;
+
+	return output;
+}/*}}}*/
+void TransientInput::DeepEcho(void){/*{{{*/
+
+	_printf_("TransientInput:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   numtimesteps: " << this->numtimesteps << "\n");
+	_printf_("---inputs: \n");
+	for(int i=0;i<this->numtimesteps;i++){
+		_printf_("   time: " << this->timesteps[i]<<"  ");
+		if(this->inputs[i]) this->inputs[i]->DeepEcho();
+		else                _printf_(" NOT SET! \n");
+	}
+}
+/*}}}*/
+void TransientInput::Configure(Parameters* params){/*{{{*/
+	this->parameters=params;
+}
+/*}}}*/
+void TransientInput::Echo(void){/*{{{*/
+	_printf_("TransientInput:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   numtimesteps: " << this->numtimesteps << "\n");
+	_printf_("---inputs: \n");
+	for(int i=0;i<this->numtimesteps;i++){
+		_printf_("   time: " << this->timesteps[i]<<"  ");
+		if(this->inputs[i]) this->inputs[i]->Echo();
+		else                _printf_(" NOT SET! \n");
+	}
+}
+/*}}}*/
+int  TransientInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void TransientInput::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	bool isnull;
+
+	int object_enum = TransientInputEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->numberofelements_local);
+	marshallhandle->call(this->numberofvertices_local);
+	marshallhandle->call(this->enum_type);
+	marshallhandle->call(this->numtimesteps);
+	marshallhandle->call(this->timesteps,numtimesteps);
+
+	/*Allocate memory if need be*/
+	if(marshallhandle->OperationNumber() == MARSHALLING_LOAD){
+		int N = this->numtimesteps; _assert_(N>=0 && N<1e6);
+		if(N){
+			this->inputs = xNew<Input*>(N);
+			for(int i=0;i<N;i++) this->inputs[i] = NULL;
+		}
+		else{
+			this->inputs = NULL;
+		}
+	}
+
+	/*Marshall!*/
+	if(marshallhandle->OperationNumber()!=MARSHALLING_LOAD){
+		for(int i=0;i<this->numtimesteps;i++){
+
+			//_assert_(this->inputs[i]);
+			isnull = false;
+			if(!this->inputs[i]) isnull = true;
+			marshallhandle->call(isnull);
+
+			if(!isnull){
+				object_enum = this->inputs[i]->ObjectEnum();
+				marshallhandle->call(object_enum);
+				this->inputs[i]->Marshall(marshallhandle);
+			}
+		}
+	}
+	else{
+		for(int i=0;i<this->numtimesteps;i++){
+			marshallhandle->call(isnull);
+			if(!isnull){
+				marshallhandle->call(object_enum);
+
+				if(object_enum==TriaInputEnum){
+					TriaInput* triainput2=new TriaInput();
+					triainput2->Marshall(marshallhandle);
+					this->inputs[i]=triainput2;
+				}
+				else if(object_enum==PentaInputEnum){
+					PentaInput* pentainput2=new PentaInput();
+					pentainput2->Marshall(marshallhandle);
+					this->inputs[i]=pentainput2;
+				}
+				else{
+					_error_("input "<<EnumToStringx(object_enum)<<" not supported");
+				}
+			}
+		}
+	}
+
+}
+/*}}}*/
+int  TransientInput::ObjectEnum(void){/*{{{*/
+
+	return TransientInputEnum;
+
+}
+/*}}}*/
+
+/*Intermediary*/
+void TransientInput::AddTriaTimeInput(IssmDouble time,int numindices,int* indices,IssmDouble* values_in,int interp_in){/*{{{*/
+
+	/*Check whether this is the last time step that we have*/
+	if(this->numtimesteps){
+		if(fabs(this->timesteps[this->numtimesteps-1]-time)<1.0e-5){
+			this->AddTriaTimeInput(this->numtimesteps-1,numindices,indices,values_in,interp_in);
+			return;
+		}
+	}
+
+	/*This is a new time step! we need to add it to the list*/
+	if(this->numtimesteps>0 && time<this->timesteps[this->numtimesteps-1]) _error_("timestep values must increase sequentially, here " << this->timesteps[this->numtimesteps-1] <<" is the last step but smaller than the preceding "<< time<<"\n");
+
+	IssmDouble *old_timesteps = NULL;
+	Input    **old_inputs    = NULL;
+	if (this->numtimesteps > 0){
+		old_timesteps=xNew<IssmDouble>(this->numtimesteps);
+		xMemCpy(old_timesteps,this->timesteps,this->numtimesteps);
+		xDelete<IssmDouble>(this->timesteps);
+		old_inputs=xNew<Input*>(this->numtimesteps);
+		xMemCpy(old_inputs,this->inputs,this->numtimesteps);
+		xDelete<Input*>(this->inputs);
+	}
+
+	this->numtimesteps=this->numtimesteps+1;
+	this->timesteps=xNew<IssmDouble>(this->numtimesteps);
+	this->inputs   = xNew<Input*>(this->numtimesteps);
+
+	if (this->numtimesteps > 1){
+		xMemCpy(this->inputs,old_inputs,this->numtimesteps-1);
+		xMemCpy(this->timesteps,old_timesteps,this->numtimesteps-1);
+		xDelete(old_timesteps);
+		xDelete<Input*>(old_inputs);
+	}
+
+	/*go ahead and plug: */
+	this->timesteps[this->numtimesteps-1] = time;
+	this->inputs[this->numtimesteps-1]    = NULL;
+	this->AddTriaTimeInput(this->numtimesteps-1,numindices,indices,values_in,interp_in);
+
+}
+/*}}}*/
+void TransientInput::AddPentaTimeInput(IssmDouble time,int numindices,int* indices,IssmDouble* values_in,int interp_in){/*{{{*/
+
+	/*Check whether this is the last time step that we have*/
+	if(this->numtimesteps){
+		if(fabs(this->timesteps[this->numtimesteps-1]-time)<1.0e-5){
+			this->AddPentaTimeInput(this->numtimesteps-1,numindices,indices,values_in,interp_in);
+			return;
+		}
+	}
+
+	/*This is a new time step! we need to add it to the list*/
+	if(this->numtimesteps>0 && time<this->timesteps[this->numtimesteps-1]) _error_("timestep values must increase sequentially");
+
+	IssmDouble *old_timesteps = NULL;
+	Input    **old_inputs    = NULL;
+	if (this->numtimesteps > 0){
+		old_timesteps=xNew<IssmDouble>(this->numtimesteps);
+		xMemCpy(old_timesteps,this->timesteps,this->numtimesteps);
+		xDelete<IssmDouble>(this->timesteps);
+		old_inputs=xNew<Input*>(this->numtimesteps);
+		xMemCpy(old_inputs,this->inputs,this->numtimesteps);
+		xDelete<Input*>(this->inputs);
+	}
+
+	this->numtimesteps=this->numtimesteps+1;
+	this->timesteps=xNew<IssmDouble>(this->numtimesteps);
+	this->inputs   = xNew<Input*>(this->numtimesteps);
+
+	if (this->numtimesteps > 1){
+		xMemCpy(this->inputs,old_inputs,this->numtimesteps-1);
+		xMemCpy(this->timesteps,old_timesteps,this->numtimesteps-1);
+		xDelete(old_timesteps);
+		xDelete<Input*>(old_inputs);
+	}
+
+	/*go ahead and plug: */
+	this->timesteps[this->numtimesteps-1] = time;
+	this->inputs[this->numtimesteps-1]    = NULL;
+	this->AddPentaTimeInput(this->numtimesteps-1,numindices,indices,values_in,interp_in);
+
+}
+/*}}}*/
+void TransientInput::AddTriaTimeInput(int step,int numindices,int* indices,IssmDouble* values_in,int interp_in){/*{{{*/
+
+	_assert_(step>=0 && step<this->numtimesteps);
+
+	/*Create it if necessary*/
+	if(this->inputs[step]){
+		if(this->inputs[step]->ObjectEnum()!=TriaInputEnum) _error_("cannot add Element values to a "<<EnumToStringx(this->inputs[step]->ObjectEnum()));
+	}
+	else{
+		this->inputs[step] = new TriaInput(this->numberofelements_local,this->numberofvertices_local,interp_in);
+	}
+
+	/*Set input*/
+	TriaInput* input = xDynamicCast<TriaInput*>(this->inputs[step]);
+	input->SetInput(interp_in,numindices,indices,values_in);
+
+}
+/*}}}*/
+void TransientInput::AddPentaTimeInput(int step,int numindices,int* indices,IssmDouble* values_in,int interp_in){/*{{{*/
+
+	_assert_(step>=0 && step<this->numtimesteps);
+
+	/*Create it if necessary*/
+	if(this->inputs[step]){
+		if(this->inputs[step]->ObjectEnum()!=PentaInputEnum) _error_("cannot add Element values to a "<<EnumToStringx(this->inputs[step]->ObjectEnum()));
+	}
+	else{
+		this->inputs[step] = new PentaInput(this->numberofelements_local,this->numberofvertices_local,interp_in);
+	}
+
+	/*Set input*/
+	PentaInput* input = xDynamicCast<PentaInput*>(this->inputs[step]);
+	input->SetInput(interp_in,numindices,indices,values_in);
+
+}
+/*}}}*/
+void TransientInput::GetAllTimes(IssmDouble** ptimesteps,int* pnumtimesteps){/*{{{*/
+
+	if(ptimesteps){
+		*ptimesteps=xNew<IssmDouble>(this->numtimesteps);
+		xMemCpy(*ptimesteps,this->timesteps,this->numtimesteps);
+	}
+	if(pnumtimesteps){
+		*pnumtimesteps = this->numtimesteps;
+	}
+
+}
+/*}}}*/
+TriaInput* TransientInput::GetTriaInput(){/*{{{*/
+
+	IssmDouble time;
+	this->parameters->FindParam(&time,TimeEnum);
+	return this->GetTriaInput(time);
+
+}
+/*}}}*/
+TriaInput* TransientInput::GetTriaInput(IssmDouble time){/*{{{*/
+
+	/*Set current time input*/
+	this->SetCurrentTimeInput(time);
+	_assert_(this->current_input);
+
+	/*Cast and return*/
+	if(this->current_input->ObjectEnum()!=TriaInputEnum){
+		_error_("Cannot return a TriaInput");
+	}
+	return xDynamicCast<TriaInput*>(this->current_input);
+
+}
+/*}}}*/
+TriaInput* TransientInput::GetTriaInput(IssmDouble start_time, IssmDouble end_time, int averaging_method){/*{{{*/
+
+	/*Set current time input*/
+	this->SetAverageAsCurrentTimeInput(start_time,end_time,averaging_method);
+	_assert_(this->current_input);
+
+	/*Cast and return*/
+	if(this->current_input->ObjectEnum()!=TriaInputEnum){
+		_error_("Cannot return a TriaInput");
+	}
+	return xDynamicCast<TriaInput*>(this->current_input);
+
+}
+/*}}}*/
+TriaInput* TransientInput::GetTriaInput(int offset){/*{{{*/
+
+	/*Check offset*/
+	if(offset<0 || offset>this->numtimesteps-1){
+		_error_("Cannot return input for offset "<<offset);
+	}
+	Input* input = this->inputs[offset];
+
+	/*Cast and return*/
+	_assert_(input);
+	if(input->ObjectEnum()!=TriaInputEnum) _error_("Cannot return a TriaInput");
+	return xDynamicCast<TriaInput*>(input);
+
+}
+/*}}}*/
+PentaInput* TransientInput::GetPentaInput(){/*{{{*/
+
+	IssmDouble time;
+	this->parameters->FindParam(&time,TimeEnum);
+	return this->GetPentaInput(time);
+}
+/*}}}*/
+PentaInput* TransientInput::GetPentaInput(IssmDouble time){/*{{{*/
+
+	/*Set current time input*/
+	this->SetCurrentTimeInput(time);
+	_assert_(this->current_input);
+
+	/*Cast and return*/
+	if(this->current_input->ObjectEnum()!=PentaInputEnum){
+		_error_("Cannot return a PentaInput");
+	}
+	return xDynamicCast<PentaInput*>(this->current_input);
+
+}
+/*}}}*/
+PentaInput* TransientInput::GetPentaInput(int offset){/*{{{*/
+
+	/*Check offset*/
+	if(offset<0 || offset>this->numtimesteps-1){
+		_error_("Cannot return input for offset "<<offset);
+	}
+	Input* input = this->inputs[offset];
+
+	/*Cast and return*/
+	if(input->ObjectEnum()!=PentaInputEnum) _error_("Cannot return a PentaInput");
+	return xDynamicCast<PentaInput*>(input);
+
+}
+/*}}}*/
+PentaInput* TransientInput::GetPentaInput(IssmDouble start_time, IssmDouble end_time, int averaging_method){/*{{{*/
+
+	/*Set current time input*/
+	this->SetAverageAsCurrentTimeInput(start_time,end_time,averaging_method);
+	_assert_(this->current_input);
+
+	/*Cast and return*/
+	if(this->current_input->ObjectEnum()!=PentaInputEnum){
+		_error_("Cannot return a PentaInput");
+	}
+	return xDynamicCast<PentaInput*>(this->current_input);
+
+}
+/*}}}*/
+
+void TransientInput::SetCurrentTimeInput(IssmDouble time){/*{{{*/
+
+	/*First, recover current time from parameters: */
+	bool linear_interp,average,cycle;
+	int  timestepping;
+	IssmDouble dt;
+	this->parameters->FindParam(&linear_interp,TimesteppingInterpForcingEnum);
+	this->parameters->FindParam(&average,TimesteppingAverageForcingEnum);
+	this->parameters->FindParam(&cycle,TimesteppingCycleForcingEnum);
+	this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);          /*transient core time step*/
+	this->parameters->FindParam(&timestepping,TimesteppingTypeEnum);
+
+	if(cycle){
+
+		/*Change input time if we cycle through the forcing*/
+		IssmDouble time0 = this->timesteps[0];
+		IssmDouble time1 = this->timesteps[this->numtimesteps - 1];
+
+		if(timestepping!=AdaptiveTimesteppingEnum){
+			/*We need the end time to be the last timestep that would be taken*/
+			/* i.e., the case where GEMB has time stamps (finer timestep) after the last timestep */
+			/* warning: this assumes dt = constant!!*/
+			IssmDouble nsteps = reCast<int,IssmDouble>(time1/dt);
+			if (reCast<IssmDouble>(nsteps)<time1/dt) nsteps=nsteps+1;
+			time1 = nsteps*dt;
+		}
+
+		/*See by how many intervals we have to offset time*/
+		IssmDouble deltat = time1-time0;
+
+		//int num_intervals = floor((time-time0)/deltat); //Cannot do that because of AD!
+		int num_intervals = reCast<int,IssmDouble>(fabs(time-time0)/deltat);
+
+		/*Uncomment following line if you would like to apply a cycle BEFORE the time series starts*/
+		if(time<time0) num_intervals = -num_intervals-1;
+
+		if(fabs(time-time0)/deltat == reCast<IssmDouble>(num_intervals)){
+			/*Hack to make sure we always cover the last value of the series (discussion with Nicole)*/
+			time = time1;
+		}
+		else{
+			/*Now offset time so that we do the right interpolation below*/
+			time = time - num_intervals*deltat;
+		}
+	}
+
+	/*Figure step out*/
+	int offset, prevoffset;
+	if(!binary_search(&offset,time,this->timesteps,this->numtimesteps)){
+		_error_("Input not found (is TransientInput sorted ?)");
+	}
+	if(!binary_search(&prevoffset,reCast<IssmDouble>(time-dt),this->timesteps,this->numtimesteps)){
+		_error_("Input not found (is TransientInput sorted ?)");
+	}
+
+	if (offset==-1){
+
+		/*get values for the first time: */
+		_assert_(time<this->timesteps[0]);
+
+		/*If already processed return*/
+		if(this->current_step==0.) return;
+
+		/*Prepare input*/
+		if(this->current_input) delete this->current_input;
+		this->current_step = 0.;
+		this->current_input = this->inputs[0]->copy();
+
+	}
+	else if(offset-prevoffset>1 && prevoffset >=0 && average){
+		/*get values for the last time: */
+		_assert_(time>=this->timesteps[offset]);
+
+		/*If already processed return*/
+		if(this->current_step==reCast<IssmDouble>(offset)) return;
+
+		/*Prepare input*/
+		if(this->current_input) delete this->current_input;
+		this->current_step  = reCast<IssmDouble>(offset);
+
+		this->current_input = this->inputs[prevoffset]->copy();
+		for(int i=prevoffset+1;i<offset;i++) {
+			this->current_input->AXPY(this->inputs[i],+1.0);
+		}
+		this->current_input->Scale(1./(offset-prevoffset));
+
+	}
+	else if(offset==(this->numtimesteps-1) || !linear_interp){
+
+		/*get values for the last time: */
+		_assert_(time>=this->timesteps[offset]);
+
+		/*If already processed return*/
+		if(this->current_step==reCast<IssmDouble>(offset)) return;
+
+		/*Prepare input*/
+		if(this->current_input) delete this->current_input;
+		this->current_step  = reCast<IssmDouble>(offset);
+		this->current_input = this->inputs[offset]->copy();
+	}
+	else {
+
+		/*Interpolate */
+		_assert_(time>=this->timesteps[offset] && time<this->timesteps[offset+1]);
+
+		/*get values between two times [offset:offset+1[, Interpolate linearly*/
+		IssmDouble deltat=this->timesteps[offset+1]-this->timesteps[offset];
+		IssmDouble this_step = reCast<IssmDouble>(offset) + (time - this->timesteps[offset])/deltat;
+
+		/*If already processed return*/
+		if(fabs(this->current_step-this_step)<1.e-5) return;
+
+		/*Prepare input*/
+		if(this->current_input) delete this->current_input;
+		this->current_step = this_step;
+		IssmDouble alpha2=(time-this->timesteps[offset])/deltat;
+		IssmDouble alpha1=(1.0-alpha2);
+
+		Input* input1=this->inputs[offset];
+		Input* input2=this->inputs[offset+1];
+
+		this->current_input = input1->copy();
+		this->current_input->Scale(alpha1);
+		this->current_input->AXPY(input2,alpha2);
+	}
+}/*}}}*/
+void TransientInput::SetAverageAsCurrentTimeInput(IssmDouble start_time,IssmDouble end_time, int averaging_method){/*{{{*/
+
+	IssmDouble  dt,durinv;
+	IssmDouble  dtsum=0;
+	IssmDouble  timespan,mid_step;
+	int         found,start_offset,end_offset,input_offset;
+
+
+	/*go through the timesteps, and grab offset for start and end*/
+	found=binary_search(&start_offset,start_time,this->timesteps,this->numtimesteps);
+	if(!found) _error_("Input not found (is TransientInput sorted ?)");
+	found=binary_search(&end_offset,end_time,this->timesteps,this->numtimesteps);
+	if(!found) _error_("Input not found (is TransientInput sorted ?)");
+
+	if(start_offset==-1){
+		timespan=this->timesteps[end_offset]-start_time;
+	}
+	else{
+		timespan=this->timesteps[end_offset]-this->timesteps[start_offset];
+	}
+	mid_step=reCast<IssmDouble>(start_offset)+0.5*timespan;
+	/*If already processed return, we set step in the middle of the interval*/
+	if(fabs(this->current_step-mid_step)<1.e-5) return;
+	/*If not processed set current_step*/
+	if(this->current_input) delete this->current_input;
+	this->current_step = mid_step;
+
+	int offset=start_offset;
+	while(offset < end_offset){
+		if(offset==start_offset){
+			dt=this->timesteps[offset+1]-start_time;
+			_assert_(dt>0.);
+			if(offset==end_offset-1){
+				dt=end_time-start_time;
+				_assert_(dt>0.);
+			}
+		}
+		else if(offset==end_offset-1){
+			dt=end_time-this->timesteps[offset];
+			_assert_(dt>0.);
+		}
+		else{
+			dt=this->timesteps[offset+1]-this->timesteps[offset];
+			_assert_(dt>0.);
+		}
+		Input* stepinput=this->inputs[offset+1]->copy();
+		switch(averaging_method){
+			case 0: /*Arithmetic mean*/
+				if(offset==start_offset){
+					this->current_input=stepinput->copy();
+					this->current_input->Scale(dt);
+				}
+				else{
+					this->current_input->AXPY(stepinput,dt);
+				}
+				break;
+			case 1: /*Geometric mean*/
+				if(offset==start_offset){
+					this->current_input = stepinput->copy();
+					this->current_input->Scale(dt);
+				}
+				else{
+					stepinput->Scale(dt);
+					this->current_input->PointWiseMult(stepinput);
+				}
+				break;
+			case 2: /*Harmonic mean*/
+				if(offset==start_offset){
+					this->current_input = stepinput->copy();
+					this->current_input->Pow(-1);
+					this->current_input->Scale(dt);
+				}
+				else{
+					stepinput->Pow(-1);
+					this->current_input->AXPY(stepinput,dt);
+				}
+			default:
+				_error_("averaging method is not recognised");
+		}
+		delete stepinput;
+		dtsum+=dt;
+		offset+=1;
+	}
+	_assert_(dtsum>0);
+	durinv=1./dtsum;
+	/*Integration done, now normalize*/
+	switch(averaging_method){
+		case 0: //Arithmetic mean
+			this->current_input->Scale(durinv);
+			break;
+		case 1: /*Geometric mean*/
+			this->current_input->Pow(durinv);
+			break;
+		case 2: /*Harmonic mean*/
+			this->current_input->Scale(durinv);
+			this->current_input->Pow(-1);
+		default:
+			_error_("averaging method is not recognised");
+	}
+}/*}}}*/
+IssmDouble  TransientInput::GetTimeByOffset(int offset){/*{{{*/
+	if(offset<0) offset=0;
+	_assert_(offset<this->numtimesteps);
+	return this->timesteps[offset];
+}
+/*}}}*/
+int  TransientInput::GetTimeInputOffset(IssmDouble time){/*{{{*/
+
+	int offset;
+
+	/*go through the timesteps, and figure out which interval we
+	 *     *fall within. Then interpolate the values on this interval: */
+	int found=binary_search(&offset,time,this->timesteps,this->numtimesteps);
+	if(!found) _error_("Input not found (is TransientInput sorted ?)");
+
+	return offset;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/TransientInput.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/TransientInput.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/TransientInput.h	(revision 27955)
@@ -0,0 +1,66 @@
+/*! \file TransientInput.h
+ *  \brief: header file for transientinput object
+ */
+
+#ifndef _TRANSIENTINPUT2_H_
+#define _TRANSIENTINPUT2_H_
+
+/*Headers:*/
+#include "./Input.h"
+class Gauss;
+class Parameters;
+
+class TransientInput: public Input{
+
+	private:
+		int     numberofelements_local;
+		int     numberofvertices_local;
+
+	public:
+		int          enum_type;
+		int          numtimesteps;
+		Input      **inputs;
+		IssmDouble  *timesteps;
+		Parameters  *parameters;      //to find current time.
+
+		IssmDouble   current_step;
+		Input       *current_input;
+
+		/*TransientInput constructors, destructors: {{{*/
+		TransientInput();
+		TransientInput(int in_enum_type,int nbe,int nbv,IssmDouble* times,int N);
+		~TransientInput();
+		void AddTimeInput(Input* input,IssmDouble time); /*FIXME: remove!*/
+		void AddTriaTimeInput(IssmDouble time,int numindices,int* indices,IssmDouble* values_in,int interp_in);
+		void AddPentaTimeInput(IssmDouble time,int numindices,int* indices,IssmDouble* values_in,int interp_in);
+		void AddTriaTimeInput(int step,int numindices,int* indices,IssmDouble* values_in,int interp_in);
+		void AddPentaTimeInput(int step,int numindices,int* indices,IssmDouble* values_in,int interp_in);
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		Input*  copy();
+		void    Configure(Parameters* params);
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+		/*}}}*/
+		/*TransientInput management:*/
+		void         GetAllTimes(IssmDouble** ptimesteps,int* pnumtimesteps);
+		TriaInput*  GetTriaInput();
+		TriaInput*  GetTriaInput(IssmDouble time);
+		TriaInput*  GetTriaInput(IssmDouble start_time,IssmDouble end_time,int averaging_method);
+		TriaInput*  GetTriaInput(int offset);
+		PentaInput* GetPentaInput();
+		PentaInput* GetPentaInput(IssmDouble time);
+		PentaInput* GetPentaInput(int offset);
+		PentaInput* GetPentaInput(IssmDouble start_time,IssmDouble end_time,int averaging_method);
+		Input*      GetTimeInput(IssmDouble time){_error_("This should not happen!");};
+		IssmDouble   GetTimeByOffset(int offset);
+		int          GetTimeInputOffset(IssmDouble time);
+		void         SetCurrentTimeInput(IssmDouble time);
+		void         SetAverageAsCurrentTimeInput(IssmDouble start_time,IssmDouble end_time,int averaging_method);
+		/*numerics:*/
+
+};
+#endif  /* _TRANSIENTINPUT_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/TriaInput.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/TriaInput.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/TriaInput.cpp	(revision 27955)
@@ -0,0 +1,433 @@
+/*!\file TriaInput.c
+ * \brief: implementation of the TriaInput object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+#include "./TriaInput.h"
+
+/*TriaInput constructors and destructor*/
+TriaInput::TriaInput(void){/*{{{*/
+
+	this->numberofelements_local = -1;
+	this->numberofvertices_local = -1;
+	this->isserved       = false;
+	this->isserved_collapsed= 0;
+	this->M = -1;
+	this->N = -1;
+	this->values         = NULL;
+	this->element_values = NULL;
+
+}/*}}}*/
+TriaInput::TriaInput(int nbe_in,int nbv_in,int interp_in){/*{{{*/
+
+	_assert_(nbe_in>0);
+	_assert_(nbe_in<1e11);
+	_assert_(nbv_in>0);
+	_assert_(nbv_in<1e11);
+	this->numberofelements_local = nbe_in;
+	this->numberofvertices_local = nbv_in;
+	this->isserved       = false;
+	this->isserved_collapsed = 0;
+
+	/*Reset takes care of the rest*/
+	this->Reset(interp_in);
+}/*}}}*/
+TriaInput::~TriaInput(){/*{{{*/
+	if(this->element_values) xDelete<IssmDouble>(this->element_values);
+	if(this->values)         xDelete<IssmDouble>(this->values);
+}
+/*}}}*/
+void TriaInput::Reset(int interp_in){/*{{{*/
+
+	/*Clean up*/
+	if(this->values)         xDelete<IssmDouble>(this->values);
+	if(this->element_values) xDelete<IssmDouble>(this->element_values);
+
+	/*Set interpolation*/
+	this->interpolation  = interp_in;
+
+	/*Create Sizes*/
+	if(this->interpolation==P1Enum){
+		this->M = this->numberofvertices_local;
+		this->N = 1;
+	}
+	else{
+		this->M = this->numberofelements_local;
+		this->N = TriaRef::NumberofNodes(interp_in);
+	}
+
+	/*Allocate Pointers*/
+	this->values         = xNewZeroInit<IssmDouble>(this->M*this->N);
+	this->element_values = xNewZeroInit<IssmDouble>(TriaRef::NumberofNodes(interp_in));
+}/*}}}*/
+
+/*Object virtual functions definitions:*/
+Input* TriaInput::copy() {/*{{{*/
+
+	TriaInput* output = new TriaInput(this->numberofelements_local,this->numberofvertices_local,this->interpolation);
+
+	xMemCpy<IssmDouble>(output->values,this->values,this->M*this->N);
+	xMemCpy<IssmDouble>(output->element_values,this->element_values,TriaRef::NumberofNodes(this->interpolation));
+
+	return output;
+}
+/*}}}*/
+void TriaInput::DeepEcho(void){/*{{{*/
+	_printf_("TriaInput Echo:\n");
+	_printf_("   interpolation: "<<EnumToStringx(this->interpolation)<<"\n");
+	_printf_("   Size:          "<<M<<"x"<<N<<"\n");
+	_printf_("   isserved:      "<<(isserved?"true":"false") << "\n");
+	_printf_("   isserved_collapsed: "<<isserved_collapsed << "\n");
+	if(isserved){
+		_printf_("   current values:      ");
+		for(int i=0;i<3;i++) _printf_(" "<<this->element_values[i]);
+		_printf_("] ("<<EnumToStringx(this->interpolation)<<")\n");
+	}
+	printarray(this->values,this->M,this->N);
+	//_printf_(setw(15)<<"   TriaInput "<<setw(25)<<left<<EnumToStringx(this->enum_type)<<" "<<(value?"true":"false") << "\n");
+}
+/*}}}*/
+void TriaInput::Echo(void){/*{{{*/
+	_printf_("TriaInput Echo:\n");
+	_printf_("   interpolation: "<<EnumToStringx(this->interpolation)<<"\n");
+	_printf_("   Size:          "<<M<<"x"<<N<<"\n");
+	_printf_("   isserved:      "<<(isserved?"true":"false") << "\n");
+	_printf_("   isserved_collapsed: "<<isserved_collapsed << "\n");
+	if(isserved){
+		_printf_("   current values:      ");
+		_printf_("[ ");
+		for(int i=0;i<TriaRef::NumberofNodes(this->interpolation);i++) _printf_(" "<<this->element_values[i]);
+		_printf_("] ("<<EnumToStringx(this->interpolation)<<")\n");
+	}
+}
+/*}}}*/
+int  TriaInput::Id(void){/*{{{*/
+	return -1;
+}/*}}}*/
+void TriaInput::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = TriaInputEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->numberofelements_local);
+	marshallhandle->call(this->numberofvertices_local);
+	marshallhandle->call(this->interpolation);
+	marshallhandle->call(this->M);
+	marshallhandle->call(this->N);
+	this->isserved = false;
+	this->isserved_collapsed = 0;
+	if(this->M*this->N){
+		marshallhandle->call(this->values,this->M*this->N);
+	}
+	else this->values = NULL;
+
+	if(marshallhandle->OperationNumber() == MARSHALLING_LOAD){
+		this->element_values = xNewZeroInit<IssmDouble>(TriaRef::NumberofNodes(this->interpolation));
+	}
+
+}
+/*}}}*/
+int  TriaInput::ObjectEnum(void){/*{{{*/
+	return TriaInputEnum;
+}
+/*}}}*/
+
+/*TriaInput management*/
+void TriaInput::SetInput(int interp_in,int row,IssmDouble value_in){/*{{{*/
+
+	_assert_(this);
+	_assert_(row>=0);
+	_assert_(row<this->M);
+	_assert_(this->N==1);
+
+	this->values[row] = value_in;
+	this->isserved = false;
+}
+/*}}}*/
+void TriaInput::SetInput(int interp_in,int numindices,int* indices,IssmDouble* values_in){/*{{{*/
+
+	_assert_(this);
+	if(interp_in==P1Enum && this->interpolation==P1Enum){
+		_assert_(this->N==1);
+		for(int i=0;i<numindices;i++){
+			int row = indices[i];
+			_assert_(row>=0);
+			_assert_(row<this->M);
+			this->values[row] = values_in[i];
+		}
+	}
+	else if(interp_in==P0Enum && this->interpolation==P0Enum){
+		_assert_(this->N==1);
+		for(int i=0;i<numindices;i++){
+			int row = indices[i];
+			_assert_(row>=0);
+			_assert_(row<this->M);
+			this->values[row] = values_in[i];
+		}
+	}
+	else if(this->interpolation!=P1Enum && interp_in==P1Enum){
+		this->Reset(interp_in);
+		for(int i=0;i<numindices;i++){
+			int row = indices[i];
+			_assert_(row>=0);
+			_assert_(row<this->M);
+			this->values[row] = values_in[i];
+		}
+	}
+	else{
+		_error_("Cannot convert "<<EnumToStringx(this->interpolation)<<" to "<<EnumToStringx(interp_in));
+	}
+	this->isserved = false;
+}
+/*}}}*/
+void TriaInput::SetInput(int interp_in,int row,int numindices,IssmDouble* values_in){/*{{{*/
+
+	_assert_(this);
+	if(interp_in==this->interpolation){
+		_assert_(this->N==numindices);
+	}
+	else{
+		this->Reset(interp_in);
+		_assert_(this->N==numindices);
+	}
+	for(int i=0;i<numindices;i++) this->values[row*this->N+i] = values_in[i];
+	this->isserved = false;
+}
+/*}}}*/
+void TriaInput::Serve(int numindices,int* indices){/*{{{*/
+
+	_assert_(this);
+	_assert_(this->N==1);
+
+	for(int i=0;i<numindices;i++){
+		int row = indices[i];
+		_assert_(row>=0);
+		_assert_(row<this->M);
+		this->element_values[i] = this->values[row];
+	}
+
+	/*Set input as served*/
+	this->isserved = true;
+	this->isserved_collapsed = 0;
+}
+/*}}}*/
+void TriaInput::Serve(int row,int numindices){/*{{{*/
+
+	_assert_(this);
+	_assert_(this->N==numindices);
+	_assert_(row<this->M);
+	_assert_(row>=0);
+
+	for(int i=0;i<numindices;i++){
+		this->element_values[i] = this->values[row*this->N+i];
+	}
+
+	/*Set input as served*/
+	this->isserved = true;
+	this->isserved_collapsed = 0;
+} /*}}}*/
+void TriaInput::ServeCollapsed(int row,int id1,int id2){/*{{{*/
+
+	_assert_(this);
+	_assert_(this->N>=3);
+	_assert_(row<this->M);
+	_assert_(row>=0);
+	_assert_(id1>=0 && id1<3);
+	_assert_(id2>=0 && id2<3);
+
+	this->element_values[0] = this->values[row*this->N+id1];
+	this->element_values[1] = this->values[row*this->N+id2];
+
+	/*Set input as served*/
+	this->isserved = true;
+	this->isserved_collapsed = 1;
+}/*}}}*/
+void TriaInput::SetServeCollapsed(bool status){/*{{{*/
+	this->isserved_collapsed = 1;
+}/*}}}*/
+int  TriaInput::GetInterpolation(){/*{{{*/
+	return this->interpolation;
+}/*}}}*/
+void TriaInput::GetInputAverage(IssmDouble* pvalue){/*{{{*/
+	_assert_(this);
+	_assert_(this->isserved);
+
+	int        numnodes  = this->NumberofNodes(this->interpolation);
+	if(this->isserved_collapsed) numnodes = 2;
+	IssmDouble numnodesd = reCast<int,IssmDouble>(numnodes);
+	IssmDouble value     = 0.;
+
+	for(int i=0;i<numnodes;i++) value+=this->element_values[i];
+	value = value/numnodesd;
+
+	*pvalue=value;
+}/*}}}*/
+IssmDouble TriaInput::GetInputMin(void){/*{{{*/
+	_assert_(this);
+	_assert_(this->isserved);
+
+	int        numnodes  = this->NumberofNodes(this->interpolation);
+	if(this->isserved_collapsed) numnodes = 2;
+	IssmDouble min=this->element_values[0];
+
+	for(int i=1;i<numnodes;i++){
+		if(this->element_values[i]<min) min=this->element_values[i];
+	}
+	return min;
+}/*}}}*/
+IssmDouble TriaInput::GetInputMax(void){/*{{{*/
+	_assert_(this);
+	_assert_(this->isserved);
+
+	int        numnodes  = this->NumberofNodes(this->interpolation);
+	if(this->isserved_collapsed) numnodes = 2;
+	IssmDouble max=this->element_values[0];
+
+	for(int i=1;i<numnodes;i++){
+		if(this->element_values[i]>max) max=this->element_values[i];
+	}
+	return max;
+}/*}}}*/
+IssmDouble TriaInput::GetInputMaxAbs(void){/*{{{*/
+	_assert_(this);
+	_assert_(this->isserved);
+
+	int        numnodes  = this->NumberofNodes(this->interpolation);
+	if(this->isserved_collapsed) numnodes = 2;
+	IssmDouble maxabs=fabs(this->element_values[0]);
+
+	for(int i=1;i<numnodes;i++){
+		if(fabs(this->element_values[i])>maxabs) maxabs=fabs(this->element_values[i]);
+	}
+	return maxabs;
+}/*}}}*/
+void TriaInput::GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, Gauss* gauss){/*{{{*/
+	_assert_(this);
+	_assert_(this->isserved);
+
+	if(this->isserved_collapsed){
+		_assert_(gauss->Enum()==GaussSegEnum);
+		if(this->interpolation==P0Enum){
+			derivativevalues[0] = 0.;
+		}
+		else{
+			SegRef temp;
+			temp.GetInputDerivativeValue(derivativevalues,this->element_values,xyz_list,(GaussSeg*)gauss,P1Enum);
+		}
+	}
+	else{
+		_assert_(gauss->Enum()==GaussTriaEnum);
+		TriaRef::GetInputDerivativeValue(derivativevalues,this->element_values,xyz_list,(GaussTria*)gauss,this->interpolation);
+	}
+}/*}}}*/
+void TriaInput::GetInputValue(IssmDouble* pvalue,Gauss* gauss){/*{{{*/
+	_assert_(this);
+	_assert_(this->isserved);
+	if(this->isserved_collapsed){
+		_assert_(gauss->Enum()==GaussSegEnum);
+		if(this->interpolation==P0Enum){
+			*pvalue = this->element_values[0];
+		}
+		else{
+			SegRef temp;
+			temp.GetInputValue(pvalue,this->element_values,(GaussSeg*)gauss,P1Enum);
+		}
+	}
+	else{
+		_assert_(gauss->Enum()==GaussTriaEnum);
+		TriaRef::GetInputValue(pvalue,this->element_values,(GaussTria*)gauss,this->interpolation);
+	}
+}/*}}}*/
+int  TriaInput::GetResultArraySize(void){/*{{{*/
+	return 1;
+}
+/*}}}*/
+int  TriaInput::GetResultInterpolation(void){/*{{{*/
+	if(this->interpolation==P0Enum || this->interpolation==P0DGEnum){
+		return P0Enum;
+	}
+	return P1Enum;
+}/*}}}*/
+int  TriaInput::GetResultNumberOfNodes(void){/*{{{*/
+	return TriaRef::NumberofNodes(this->interpolation);
+}
+/*}}}*/
+void TriaInput::Scale(IssmDouble alpha){/*{{{*/
+
+	for(int i=0;i<this->M*this->N;i++) this->values[i] = alpha*this->values[i];
+	for(int i=0;i<TriaRef::NumberofNodes(this->interpolation);i++) this->element_values[i] = alpha*this->element_values[i];
+}
+/*}}}*/
+void TriaInput::Pow(IssmDouble alpha){/*{{{*/
+
+	for(int i=0;i<this->M*this->N;i++) this->values[i] = pow(this->values[i],alpha);
+	for(int i=0;i<TriaRef::NumberofNodes(this->interpolation);i++) this->element_values[i] = pow(this->element_values[i],alpha);
+}
+/*}}}*/
+void TriaInput::AXPY(Input* xinput,IssmDouble alpha){/*{{{*/
+
+	/*xinput is of the same type, so cast it: */
+	if(xinput->ObjectEnum()!=TriaInputEnum) _error_("Operation not permitted because xinput is of type " << EnumToStringx(xinput->ObjectEnum()));
+	TriaInput* xtriainput=xDynamicCast<TriaInput*>(xinput);
+	if(xtriainput->GetInterpolation()!=this->interpolation) _error_("Operation not permitted because xinput is of type " << EnumToStringx(xinput->ObjectEnum()));
+
+	/*Carry out the AXPY operation depending on type:*/
+	for(int i=0;i<this->M*this->N;i++) this->values[i] = alpha*xtriainput->values[i] + this->values[i];
+	for(int i=0;i<TriaRef::NumberofNodes(this->interpolation);i++) this->element_values[i] = alpha*xtriainput->element_values[i] + this->element_values[i];
+}
+/*}}}*/
+void TriaInput::Shift(IssmDouble alpha){/*{{{*/
+
+	/*Carry out the shift operation:*/
+	for(int i=0;i<this->M*this->N;i++) this->values[i] +=alpha;
+	for(int i=0;i<TriaRef::NumberofNodes(this->interpolation);i++) this->element_values[i] += alpha;
+}
+/*}}}*/
+void TriaInput::PointWiseMult(Input* xinput){/*{{{*/
+
+	/*xinput is of the same type, so cast it: */
+	if(xinput->ObjectEnum()!=TriaInputEnum) _error_("Operation not permitted because xinput is of type " << EnumToStringx(xinput->ObjectEnum()));
+	TriaInput* xtriainput=xDynamicCast<TriaInput*>(xinput);
+	if(xtriainput->GetInterpolation()!=this->interpolation) _error_("Operation not permitted because xinput is of type " << EnumToStringx(xinput->ObjectEnum()));
+
+	/* we need to check that the vector sizes are identical*/
+	if(xtriainput->M!=this->M||xtriainput->N!=this->N) _error_("Operation not permitted because the inputs have different sizes");
+
+	/*Carry out the AXPY operation depending on type:*/
+	for(int i=0;i<this->M*this->N;i++) this->values[i] = xtriainput->values[i] * this->values[i];
+	for(int i=0;i<TriaRef::NumberofNodes(this->interpolation);i++) this->element_values[i] = xtriainput->element_values[i] * this->element_values[i];
+}
+/*}}}*/
+void TriaInput::AverageAndReplace(void){/*{{{*/
+
+	if(this->M!=this->numberofelements_local) _error_("not implemented for P1");
+
+	/*Get local sum and local size*/
+	IssmDouble sum  = 0.;
+	int        weight;
+	for(int i=0;i<this->M*this->N;i++) sum += this->values[i];
+	weight = this->M*this->N;
+
+	/*Get sum across all procs*/
+	IssmDouble all_sum;
+	int        all_weight;
+	ISSM_MPI_Allreduce((void*)&sum,(void*)&all_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+	ISSM_MPI_Allreduce((void*)&weight,(void*)&all_weight,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
+
+	/*Divide by number of procs*/
+	IssmDouble newvalue = all_sum/reCast<IssmPDouble>(all_weight);
+
+	/*Now replace existing input*/
+	this->Reset(P0Enum);
+	for(int i=0;i<this->M*this->N;i++) this->values[i] = newvalue;
+}
+/*}}}*/
+
+/*Object functions*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/TriaInput.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/TriaInput.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Inputs/TriaInput.h	(revision 27955)
@@ -0,0 +1,56 @@
+#ifndef _TRIAINPUT2_H_
+#define _TRIAINPUT2_H_
+
+/*Headers:*/
+#include "./ElementInput.h"
+#include "../Elements/TriaRef.h"
+
+class TriaInput: public ElementInput, public TriaRef{
+
+	private:
+		int isserved_collapsed;
+		int collapsed_ids[2];
+	public:
+		/*TriaInput constructors, destructors: {{{*/
+		TriaInput();
+		TriaInput(int nbe_in,int nbv_in,int interp_in);
+		~TriaInput();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Input *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+		/*}}}*/
+		/*TriaInput management: {{{*/
+		void SetInput(int interp_in,int row,IssmDouble value_in);
+		void SetInput(int interp_in,int numinds,int* rows,IssmDouble* values_in);
+		void SetInput(int interp_in,int row,int numinds,IssmDouble* values_in);
+		int  GetInterpolation();
+		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, Gauss* gauss);
+		void GetInputAverage(IssmDouble* pvalue);
+		IssmDouble GetInputMin();
+		IssmDouble GetInputMax();
+		IssmDouble GetInputMaxAbs();
+		TriaInput* GetTriaInput(){return this;};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss);
+		void Scale(IssmDouble scalar);
+		void Pow(IssmDouble scalar);
+		void AXPY(Input* xinput,IssmDouble scalar);
+		void Shift(IssmDouble scalar);
+		void AverageAndReplace(void);
+		void PointWiseMult(Input* xinput);
+		void Serve(int numindices,int* indices);
+		void Serve(int row,int numindices);
+		void ServeCollapsed(int row,int id0,int in1);
+		void SetServeCollapsed(bool);
+		int  GetResultArraySize(void);
+		int  GetResultInterpolation(void);
+		int  GetResultNumberOfNodes(void);
+		/*}}}*/
+		void Reset(int interp_in);
+
+};
+#endif  /* _TRIAINPUT_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/IoModel.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/IoModel.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/IoModel.cpp	(revision 27955)
@@ -0,0 +1,3143 @@
+/*! \file IoModel.cpp
+ * \brief  file containing the methods that will help in processing the input data coming
+ * into ISSM, from Matlab, or through a binary file opened for reading.
+ */
+
+/*CODES:
+ * 1: boolean constant
+ * 2: integer constant
+ * 3: IssmDouble constant
+ * 5: boolean vector
+ * 6: int vector
+ * 7: IssmDouble vector*/
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <stdint.h>
+
+#include "./classes.h"
+#include "../shared/io/io.h"
+#include "../shared/shared.h"
+#include "../classes/Inputs/TransientInput.h"
+
+#ifdef _HAVE_CODIPACK_
+extern CoDi_global codi_global;
+#include <sstream> // for output of the CoDiPack tape
+#endif
+
+/*IoConstant class and methods*/
+IoConstant::IoConstant(){/*{{{*/
+	this->isindependent = false;
+	this->name          = NULL;
+	this->constant      = NULL;
+}
+/*}}}*/
+IoConstant::~IoConstant(){/*{{{*/
+	xDelete<char>(this->name);
+	delete this->constant;
+}
+/*}}}*/
+IoConstant::IoConstant(bool value,const char* name_in){/*{{{*/
+	this->isindependent = false;
+	this->constant      = new BoolParam(0,value);
+
+	_assert_(name_in);
+	int len=strlen(name_in);
+	this->name=xNew<char>(len+1);
+	memcpy(this->name,name_in,(len+1)*sizeof(char));
+}
+/*}}}*/
+IoConstant::IoConstant(int value,const char* name_in){/*{{{*/
+	this->isindependent = false;
+	this->constant      = new IntParam(0,value);
+
+	_assert_(name_in);
+	int len=strlen(name_in);
+	this->name=xNew<char>(len+1);
+	memcpy(this->name,name_in,(len+1)*sizeof(char));
+}
+/*}}}*/
+IoConstant::IoConstant(IssmDouble value,const char* name_in){/*{{{*/
+	this->isindependent = false;
+	this->constant      = new DoubleParam(0,value);
+
+	_assert_(name_in);
+	int len=strlen(name_in);
+	this->name=xNew<char>(len+1);
+	memcpy(this->name,name_in,(len+1)*sizeof(char));
+}
+/*}}}*/
+IoConstant::IoConstant(char* value,const char* name_in){/*{{{*/
+	this->isindependent = false;
+	this->constant      = new StringParam(0,value);
+
+	_assert_(name_in);
+	int len=strlen(name_in);
+	this->name=xNew<char>(len+1);
+	memcpy(this->name,name_in,(len+1)*sizeof(char));
+}
+/*}}}*/
+IoConstant::IoConstant(char** value,int numstrings,const char* name_in){/*{{{*/
+	this->isindependent = false;
+	this->constant      = new StringArrayParam(0,value,numstrings);
+
+	_assert_(name_in);
+	int len=strlen(name_in);
+	this->name=xNew<char>(len+1);
+	memcpy(this->name,name_in,(len+1)*sizeof(char));
+}
+/*}}}*/
+
+/*IoData class and methods*/
+IoData::IoData(){/*{{{*/
+	this->isindependent = false;
+	this->name          = NULL;
+	this->code          = -1;
+	this->layout        = -1;
+	this->M             = 0;
+	this->N             = 0;
+	this->data          = NULL;
+}
+/*}}}*/
+IoData::~IoData(){/*{{{*/
+	xDelete<char>(this->name);
+	xDelete<IssmDouble>(this->data);
+}
+/*}}}*/
+IoData::IoData(IssmDouble* matrix,int code_in,int layout_in,int M_in,int N_in,const char* name_in){/*{{{*/
+	this->isindependent = false;
+	this->code          = code_in;
+	this->layout        = layout_in;
+	this->M             = M_in;
+	this->N             = N_in;
+	this->data          = matrix; /*do not copy*/
+	_assert_(code_in==5 ||  code_in==6 || code_in==7);
+
+	_assert_(name_in);
+	int len=strlen(name_in);
+	this->name=xNew<char>(len+1);
+	memcpy(this->name,name_in,(len+1)*sizeof(char));
+}
+/*}}}*/
+
+/*IoModel constructors/destructors*/
+IoModel::IoModel(){/*{{{*/
+
+	this->fid=NULL;
+	this->solution_enum=-1;
+
+	this->my_elements=NULL;
+	this->my_faces=NULL;
+	this->my_vfaces=NULL;
+	this->my_edges=NULL;
+	this->my_vedges=NULL;
+	this->my_hedges=NULL;
+	this->my_vertices=NULL;
+	this->my_vertices_lids=NULL;
+	this->epart=NULL;
+
+	this->domaintype=-1;
+	this->domaindim=-1;
+	this->meshelementtype=-1;
+	this->numberofvertices=-1;
+	this->numberofelements=-1;
+	this->numberoffaces=-1;
+	this->numberofverticalfaces=-1;
+	this->numberofedges=-1;
+	this->numberofverticaledges=-1;
+	this->numberofhorizontaledges=-1;
+	this->facescols=-1;
+	this->elements=NULL;
+	this->faces=NULL;
+	this->verticalfaces=NULL;
+	this->edges=NULL;
+	this->verticaledges=NULL;
+	this->horizontaledges=NULL;
+	this->elementtofaceconnectivity           = NULL;
+	this->elementtoverticalfaceconnectivity   = NULL;
+	this->elementtoedgeconnectivity           = NULL;
+	this->elementtoverticaledgeconnectivity   = NULL;
+	this->elementtohorizontaledgeconnectivity = NULL;
+	this->singlenodetoelementconnectivity     = NULL;
+	this->numbernodetoelementconnectivity     = NULL;
+}/*}}}*/
+IoModel::IoModel(FILE* iomodel_handle,int solution_enum_in,bool trace,IssmPDouble* X){/*{{{*/
+
+	bool autodiff=false;
+	bool iscontrol=false;
+
+	/*First, keep track of the file handle: */
+	this->fid=iomodel_handle;
+
+	/*Check that Enums are Synchronized*/
+	this->CheckFile();
+
+	/*Keep track of solution*/
+	this->solution_enum = solution_enum_in;
+
+	/*If we are running in AD mode, we need to start the trace and declare our independent variables now,
+	 *and prevent them from being erased during successive calls to iomodel->FetchConstants, iomodel->FetchData and
+	 iomodel->DeleteData:*/
+	this->StartTrace(trace);
+	this->DeclareIndependents(trace,X);
+
+	/*Initialize and read constants:*/
+	this->FetchConstants(); /*this routine goes through the input file, and fetches bool, int, IssmDouble and string only, nothing memory intensive*/
+
+	/*Is this an autodiff run?*/
+	this->FindConstant(&autodiff,"md.autodiff.isautodiff");
+	this->FindConstant(&iscontrol,"md.inversion.iscontrol");
+	if(trace){
+		autodiff=true;
+	}
+	else{
+		if(autodiff && !iscontrol)
+		 autodiff=true;
+		else
+		 autodiff=false;
+	}
+	this->AddConstant(new IoConstant(autodiff,"md.autodiff.isautodiff"));
+
+	/*Initialize permanent data: */
+	this->my_elements      = NULL;
+	this->my_faces         = NULL;
+	this->my_vfaces        = NULL;
+	this->my_edges         = NULL;
+	this->my_vedges        = NULL;
+	this->my_hedges        = NULL;
+	this->my_vertices      = NULL;
+	this->my_vertices_lids = NULL;
+	this->epart            = NULL;
+
+	FindConstant(&this->domaintype,"md.mesh.domain_type");
+	FindConstant(&this->meshelementtype,"md.mesh.elementtype");
+
+	FetchData(&this->domaindim,"md.mesh.domain_dimension");
+	FetchData(&this->numberofvertices,"md.mesh.numberofvertices");
+	FetchData(&this->numberofelements,"md.mesh.numberofelements");
+	FetchData(&this->elements,NULL,NULL,"md.mesh.elements");
+	this->facescols                           = -1;
+	this->faces                               = NULL;
+	this->verticalfaces                       = NULL;
+	this->edges                               = NULL;
+	this->verticaledges                       = NULL;
+	this->horizontaledges                     = NULL;
+	this->elementtofaceconnectivity           = NULL;
+	this->elementtoverticalfaceconnectivity   = NULL;
+	this->elementtoedgeconnectivity           = NULL;
+	this->elementtoverticaledgeconnectivity   = NULL;
+	this->elementtohorizontaledgeconnectivity = NULL;
+	this->singlenodetoelementconnectivity     = NULL;
+	this->numbernodetoelementconnectivity     = NULL;
+}/*}}}*/
+IoModel::~IoModel(){/*{{{*/
+
+	/*Delete constants*/
+	vector<IoConstant*>::iterator iter1;
+	for(iter1=constants.begin();iter1<constants.end();iter1++){
+		delete *iter1;
+	}
+	this->constants.clear();
+
+	/*Delete data*/
+	vector<IoData*>::iterator iter2;
+	for(iter2=data.begin();iter2<data.end();iter2++){
+		#if defined(_ISSM_DEBUG_)
+		if(!(*iter2)->isindependent){
+			_printf0_("WARNING: IoData \"" << (*iter2)->name << "\" has not been freed (DeleteData has not been called)\n");
+		}
+		#endif
+		delete *iter2;
+	}
+	this->data.clear();
+
+	xDelete<bool>(this->my_elements);
+	xDelete<bool>(this->my_faces);
+	xDelete<bool>(this->my_vfaces);
+	xDelete<bool>(this->my_edges);
+	xDelete<bool>(this->my_vedges);
+	xDelete<bool>(this->my_hedges);
+	xDelete<bool>(this->my_vertices);
+	xDelete<int>(this->my_vertices_lids);
+	xDelete<int>(this->epart);
+
+	xDelete<int>(this->elements);
+	xDelete<int>(this->faces);
+	xDelete<int>(this->verticalfaces);
+	xDelete<int>(this->edges);
+	xDelete<int>(this->verticaledges);
+	xDelete<int>(this->horizontaledges);
+	xDelete<int>(this->elementtofaceconnectivity);
+	xDelete<int>(this->elementtoverticalfaceconnectivity);
+	xDelete<int>(this->elementtoedgeconnectivity);
+	xDelete<int>(this->elementtoverticaledgeconnectivity);
+	xDelete<int>(this->elementtohorizontaledgeconnectivity);
+	xDelete<int>(this->singlenodetoelementconnectivity);
+	xDelete<int>(this->numbernodetoelementconnectivity);
+}
+/*}}}*/
+
+/*IoModel methods*/
+void  IoModel::AddConstant(IoConstant* in_constant){/*{{{*/
+
+	_assert_(in_constant);
+
+	/*Go through dataset of constant and check whether it already exists */
+	vector<IoConstant*>::iterator iter;
+
+	for(iter=constants.begin();iter<constants.end();iter++){
+		if(strcmp((*iter)->name,in_constant->name)==0){
+			delete in_constant;
+			return;
+		}
+	}
+
+	this->constants.push_back(in_constant);
+}
+/*}}}*/
+void  IoModel::AddConstantIndependent(IoConstant* in_constant){/*{{{*/
+
+	_assert_(in_constant);
+
+	/*Set constant as independent*/
+	in_constant->isindependent = true;
+
+	/*Add to constnats*/
+	this->AddConstant(in_constant);
+}
+/*}}}*/
+void  IoModel::AddData(IoData* in_data){/*{{{*/
+
+	_assert_(in_data);
+
+	/*Go through dataset of data and check whether it already exists */
+	vector<IoData*>::iterator iter;
+
+	for(iter=data.begin();iter<data.end();iter++){
+		if(strcmp((*iter)->name,in_data->name)==0){
+			delete in_data;
+			return;
+		}
+	}
+
+	this->data.push_back(in_data);
+}
+/*}}}*/
+void  IoModel::AddDataIndependent(IoData* in_data){/*{{{*/
+
+	_assert_(in_data);
+
+	/*Set data as independent*/
+	in_data->isindependent = true;
+
+	/*Add to constnats*/
+	this->AddData(in_data);
+}
+/*}}}*/
+void  IoModel::CheckFile(void){/*{{{*/
+
+	bool        found;
+	int         record_enum,record_name_size;
+   long long   record_length;
+	char       *record_name = NULL;
+	const char *mddot = "md.";
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Check that some fields have been allocated*/
+	_assert_(this->fid || my_rank);
+
+	/*Go find in the binary file, the position of the data we want to fetch: */
+	if(my_rank==0){ //cpu 0
+
+		/*First set FILE* position to the beginning of the file: */
+		fseek(this->fid,0,SEEK_SET);
+
+		for(;;){
+			/*Read size of first string name: */
+			if(fread(&record_name_size,sizeof(int),1,fid)==0){
+				/*we have reached the end of the file. break: */
+				xDelete<char>(record_name);
+				break;
+			}
+			if(record_name_size<3 || record_name_size>80){
+				_error_("error while looking in binary file. Found a string of size "<<record_name_size);
+			}
+
+			/*Allocate string of correct size: */
+			record_name=xNew<char>(record_name_size+1);
+			record_name[record_name_size]='\0';
+
+			/*Read record_name: */
+			if(fread(record_name,record_name_size*sizeof(char),1,fid)==0){
+				/*we have reached the end of the file. break: */
+				found=false;
+				xDelete<char>(record_name);
+				break;
+			}
+			if(strncmp(record_name,mddot,3)!=0){
+				_error_("error while reading binary file: record does not start with \"md.\": "<<record_name);
+			}
+
+			/*Have we found the last string?*/
+			if(strncmp(record_name,"md.EOF",6)==0){
+				found = true;
+				xDelete<char>(record_name);
+				break;
+			}
+
+			/*Go to next Enum*/
+			if(fread(&record_length,sizeof(long long),1,fid)!=1) _error_("Could not read record_length");
+			fseek(fid,record_length,SEEK_CUR);
+			xDelete<char>(record_name);
+		}
+		if(!found){
+			_printf0_("\n");
+			_printf0_("=========================================================================\n");
+			_printf0_(" Marshalled file is corrupted                                            \n");
+			_printf0_("                                                                         \n");
+			_printf0_("   * Last record found is :                                              \n");
+			_printf0_("     the corresponding model field has probably been marshalled          \n");
+			_printf0_("     incorrectly                                                         \n");
+			_printf0_("                                                                         \n");
+			_printf0_("=========================================================================\n");
+			_printf0_("\n");
+			_error_("Binary file corrupted (See error message above)");
+		}
+	}
+}
+/*}}}*/
+Param* IoModel::CopyConstantObject(const char* constant_name,int param_enum){/*{{{*/
+
+	/*Intermediary*/
+	vector<IoConstant*>::iterator iter;
+
+	for(iter=constants.begin();iter<constants.end();iter++){
+		IoConstant* ioconstant=*iter;
+
+		if(strcmp(ioconstant->name,constant_name)==0){
+			Param* output = ioconstant->constant->copy();
+			output->SetEnum(param_enum);
+			return output;
+		}
+	}
+
+	_error_("Constant \"" << constant_name << "\" not found in iomodel");
+	return NULL;
+}
+/*}}}*/
+IssmDouble* IoModel::Data(const char* data_name){/*{{{*/
+
+	/*Intermediary*/
+	vector<IoData*>::iterator iter;
+
+	for(iter=data.begin();iter<data.end();iter++){
+		IoData* iodata=*iter;
+		if(strcmp(iodata->name,data_name)==0) return iodata->data;
+	}
+
+	return NULL;
+}
+/*}}}*/
+void  IoModel::ConstantToInput(Inputs* inputs,Elements* elements,IssmDouble value, int vector_enum,int type){/*{{{*/
+
+	if (type==P1Enum){
+		for(Object* & object : elements->objects){
+			Element* element=xDynamicCast<Element*>(object);
+			element->InputCreateP1FromConstant(inputs,this,value,vector_enum);
+		}
+	}
+	else _error_("not supported yet!");
+	return;
+}
+/*}}}*/
+void  IoModel::DeclareIndependents(bool trace,IssmPDouble* X){/*{{{*/
+
+	bool autodiff,iscontrol;
+	int  num_independent_objects,temp;
+	int  Xcount=0;
+
+	char** names = NULL;
+	int *types = NULL;
+
+	/*Initialize array detecting whether data[i] is an independent AD mode variable: */
+	this->FetchData(&autodiff,"md.autodiff.isautodiff");
+	this->FetchData(&iscontrol,"md.inversion.iscontrol");
+
+	if(trace || (autodiff && !iscontrol)){
+
+		#ifdef _HAVE_AD_
+		// FIXME codi here we should be able to execute codi version as normal
+		this->FetchData(&num_independent_objects,"md.autodiff.num_independent_objects");
+		if(num_independent_objects){
+			this->FetchMultipleData(&names,&temp,"md.autodiff.independent_name"); _assert_(temp==num_independent_objects);
+			this->FetchMultipleData(&types,NULL,"md.autodiff.independent_type");
+
+			/*create independent objects, and at the same time, fetch the corresponding independent variables,
+			 *and declare them as such in ADOLC: */
+			for(int i=0;i<num_independent_objects;i++){
+
+				if(types[i]==0){
+					/*Scalar*/
+					this->FetchIndependentConstant(&Xcount,X,names[i]);
+				}
+				else if(types[i]==1){
+					/* vector:*/
+					this->FetchIndependentData(&Xcount,X,names[i]);
+				}
+				else{
+					_error_("Independent cannot be of size " << types[i]);
+				}
+			}
+			for(int i=0;i<num_independent_objects;i++) xDelete<char>(names[i]);
+			xDelete<char*>(names);
+			xDelete<int>(types);
+		}
+		#else
+		/*if we asked for AD computations, we have a problem!: */
+		_error_("Cannot carry out AD mode computations without support of ADOLC or CoDiPack compiled in!");
+		#endif
+	}
+}
+/*}}}*/
+void  IoModel::DeleteData(int num,...){/*{{{*/
+
+	/*Intermediaries*/
+	va_list     ap;
+	char       *data_name = NULL;
+	const char *mddot     = "md.";
+	vector<IoData *>::iterator iter;
+
+	/*Go through the entire list of data and delete the corresponding data from the iomodel-data dataset: */
+	va_start(ap,num);
+	for(int i=0;i<num;i++){
+		data_name=va_arg(ap,char*);
+
+		if(strncmp(data_name,mddot,3)!=0) _error_("String provided does not start with \"md.\" ("<<data_name<<")");
+
+		for(iter=data.begin();iter<data.end();iter++){
+			IoData* iodata=*iter;
+			if(strcmp(iodata->name,data_name)==0 && !iodata->isindependent){
+				delete *iter;
+				this->data.erase(iter);
+				break;
+			}
+		}
+	}
+	va_end(ap);
+} /*}}}*/
+void  IoModel::DeleteData(IssmDouble* vector_in,const char* data_name){/*{{{*/
+
+	vector<IoData*>::iterator iter;
+
+	/*do not do anything if pointer is NULL*/
+	if(!vector_in) return;
+
+	/*do not delete if this is an independent variable*/
+	for(iter=data.begin();iter<data.end();iter++){
+		IoData* iodata=*iter;
+		if(strcmp(iodata->name,data_name)==0 && iodata->isindependent){
+			return;
+		}
+	}
+
+	/*Go ahead and delete*/
+	xDelete<IssmDouble>(vector_in);
+} /*}}}*/
+void  IoModel::DeleteData(char*** pstringarray, int numstrings,const char* data_name){/*{{{*/
+
+	char** stringarray=*pstringarray;
+
+	if(numstrings){
+		for(int i=0;i<numstrings;i++){
+			char* string=stringarray[i];
+			xDelete<char>(string);
+		}
+		xDelete<char*>(stringarray);
+	}
+	*pstringarray=NULL;
+} /*}}}*/
+void  IoModel::FetchConstants(void){/*{{{*/
+
+	/*record descriptions; */
+	const char* mddot = "md.";
+	char* record_name = NULL;
+	int   record_name_size;
+	long long record_length;
+	int record_code; //1 to 7 number
+
+	/*records: */
+	int          booleanint  = 0;
+	int          integer     = 0;
+	IssmPDouble  pscalar     = 0;
+	IssmDouble   scalar      = 0;
+	char        *string      = NULL;
+	char       **strings     = NULL;
+	int          string_size,numstrings;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Check that some fields have been allocated*/
+	_assert_(this->fid || my_rank);
+
+	/*Go find in the binary file, the position of the data we want to fetch: */
+	if(my_rank==0){ //cpu 0{{{
+
+		/*First set FILE* position to the beginning of the file: */
+		fseek(this->fid,0,SEEK_SET);
+
+		/*Now march through file looking for the correct data identifiers (bool,int,IssmDouble or string): */
+		for(;;){
+
+			/*Read size of first string name: */
+			if(fread(&record_name_size,sizeof(int),1,fid)==0){
+				/*we have reached the end of the file. break: */
+				record_code=0; //0 means bailout
+				ISSM_MPI_Bcast(&record_code,1,ISSM_MPI_INT,0,IssmComm::GetComm());  /*tell others cpus we are bailing: */
+				break;
+			}
+			if(record_name_size<3 || record_name_size>80){
+				/*we are going to error out, still try and get informatoin for the user:*/
+				record_name=xNew<char>(record_name_size+1);
+				record_name[record_name_size]='\0';
+
+				/*Read record_name: */
+				if(fread(record_name,record_name_size*sizeof(char),1,fid)!=0){};
+
+				_error_("error while looking in binary file. String \"" << record_name << "\" is a string of size "<<record_name_size);
+			}
+
+			/*Allocate string of correct size: */
+			record_name=xNew<char>(record_name_size+1);
+			record_name[record_name_size]='\0';
+
+			/*Read record_name: */
+			if(fread(record_name,record_name_size*sizeof(char),1,fid)==0){
+				_error_("Could not read record name");
+			}
+
+			if(strncmp(record_name,mddot,3)!=0){
+				_error_("error while reading binary file: record does not start with \"md.\": "<<record_name);
+			}
+
+			/* Read the record length and the data type code: */
+			if(fread(&record_length,sizeof(long long),1,this->fid)!=1) _error_("Cound not read record_length");
+			if(fread(&record_code  ,sizeof(int),1,this->fid)!=1) _error_("Cound not read record_code");
+
+			/*Tell other cpus what we are doing: */
+			ISSM_MPI_Bcast(&record_code,1,ISSM_MPI_INT,0,IssmComm::GetComm());  /*tell other cpus what we are going to do: */
+
+			/*Tell other cpus the name of the data, then branch according to the data type: */
+			ISSM_MPI_Bcast(&record_name_size,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+			ISSM_MPI_Bcast(record_name,record_name_size,ISSM_MPI_CHAR,0,IssmComm::GetComm());
+			ISSM_MPI_Bcast(&record_length,1,ISSM_MPI_LONG_LONG_INT,0,IssmComm::GetComm());
+
+			switch(record_code){
+				case 1:
+					/*Read the boolean and broadcast it to other cpus:*/
+					if(fread(&booleanint,sizeof(int),1,this->fid)!=1) _error_("could not read boolean ");
+					ISSM_MPI_Bcast(&booleanint,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+					/*create BoolParam: */
+					this->AddConstant(new IoConstant((bool)booleanint,record_name)); //cast to boolean
+
+					break;
+				case 2:
+					/*Read the integer and broadcast it to other cpus:*/
+					if(fread(&integer,sizeof(int),1,this->fid)!=1) _error_("could not read integer ");
+
+					/*Convert codes to Enums if needed*/
+					if(strcmp(record_name,"md.smb.model")==0) integer = IoCodeToEnumSMB(integer);
+					if(strcmp(record_name,"md.basalforcings.model")==0) integer = IoCodeToEnumBasal(integer);
+					if(strcmp(record_name,"md.calving.law")==0) integer = IoCodeToEnumCalving(integer);
+					if(strcmp(record_name,"md.frontalforcings.parameterization")==0) integer = IoCodeToEnumFrontalforcings(integer);
+					if(strcmp(record_name,"md.hydrology.model")==0) integer = IoCodeToEnumHydrology(integer);
+					if(strcmp(record_name,"md.materials.type")==0) integer = IoCodeToEnumMaterials(integer);
+					if(strcmp(record_name,"md.materials.nature")==0) integer = IoCodeToEnumNature(integer);
+					if(strcmp(record_name,"md.timestepping.type")==0) integer = IoCodeToEnumTimestepping(integer);
+					if(strcmp(record_name,"md.amr.type")==0) integer = IoCodeToEnumAmr(integer);
+					if(strcmp(record_name,"md.solidearth.settings.grdmodel")==0) integer = IoCodeToEnumGrd(integer);
+
+					/*Broadcast to other cpus*/
+					ISSM_MPI_Bcast(&integer,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+					/*create IntParam: */
+					this->AddConstant(new IoConstant(integer,record_name));
+
+					break;
+				case 3:
+					  {
+						/*IssmDouble, check whether it is already there (from "declare independents")*/
+						bool exists = false;
+						vector<IoConstant*>::iterator iter;
+						for(iter=constants.begin();iter<constants.end();iter++){
+							IoConstant* ioconstant=*iter;
+							if(strcmp(ioconstant->name,record_name)==0){
+								exists = true;
+								break;
+							}
+						}
+						if(!exists){
+							if(fread(&pscalar,sizeof(IssmPDouble),1,this->fid)!=1) _error_("could not read scalar ");
+							ISSM_MPI_Bcast(&pscalar,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+							scalar=pscalar;
+
+							/*create DoubleParam: */
+							this->AddConstant(new IoConstant(scalar,record_name));
+						}
+						else{
+							if(fread(&pscalar,sizeof(IssmPDouble),1,this->fid)!=1) _error_("could not read scalar ");
+						}
+					  }
+					break;
+				case 4:
+					/*We have to read a string from disk. First read the dimensions of the string, then the string: */
+					if(fread(&string_size,sizeof(int),1,this->fid)!=1) _error_("could not read length of string ");
+					ISSM_MPI_Bcast(&string_size,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+					if(string_size){
+						string=xNew<char>(string_size+1);
+						string[string_size]='\0';
+
+						/*Read string, then broadcast: */
+						if(fread(string,string_size*sizeof(char),1,this->fid)!=1)_error_(" could not read string ");
+						ISSM_MPI_Bcast(string,string_size,ISSM_MPI_CHAR,0,IssmComm::GetComm());
+					}
+					else{
+						string=xNew<char>(1);
+						string[0]='\0';
+					}
+					/*Convert strings to enums if needed*/
+					if(strcmp(record_name,"md.flowequation.fe_SSA")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.flowequation.fe_HO")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.flowequation.fe_FS")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.thermal.fe")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.levelset.fe")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.groundingline.migration")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.groundingline.friction_interpolation")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.groundingline.melt_interpolation")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.masstransport.hydrostatic_adjustment")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.materials.rheology_law")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.damage.elementinterp")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.mesh.domain_type")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else if(strcmp(record_name,"md.mesh.elementtype")==0){
+						this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+					} else {
+						/*Add string to parameters: */
+						this->AddConstant(new IoConstant(string,record_name));
+					}
+
+					/*Free string*/
+					xDelete<char>(string);
+					break;
+				case 5:
+				case 6:
+				case 7:
+				case 8:
+				case 10:
+					/*We are not interested in this record, too memory intensive. Skip it: */
+					/*skip: */
+					fseek(fid,-sizeof(int),SEEK_CUR); //backtrak 1 integer
+					fseek(fid,record_length,SEEK_CUR);
+					break;
+				case 9:
+					/*String Array*/
+					if(fread(&numstrings,sizeof(int),1,fid)!=1) _error_("could not read length of string array");
+					ISSM_MPI_Bcast(&numstrings,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+					/*Now allocate string array: */
+					if(numstrings){
+						strings=xNew<char*>(numstrings);
+						for(int i=0;i<numstrings;i++)strings[i]=NULL;
+
+						/*Go through strings, and read: */
+						for(int i=0;i<numstrings;i++){
+
+							if(fread(&string_size,sizeof(int),1,fid)!=1) _error_("could not read length of string ");
+							ISSM_MPI_Bcast(&string_size,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+							if(string_size){
+								string=xNew<char>((string_size+1));
+								string[string_size]='\0';
+								if(fread(string,string_size*sizeof(char),1,fid)!=1)_error_(" could not read string ");
+								ISSM_MPI_Bcast(string,string_size,ISSM_MPI_CHAR,0,IssmComm::GetComm());
+							}
+							else{
+								string=xNew<char>(1);
+								string[0]='\0';
+							}
+							strings[i]=string;
+						}
+					}
+
+					/*Add strings to parameters: */
+					this->AddConstant(new IoConstant(strings,numstrings,record_name));
+
+					/*Free string*/
+					for(int i=0;i<numstrings;i++) xDelete<char>(strings[i]);
+					xDelete<char*>(strings);
+					break;
+				default:
+					_error_("unknown record type:" << record_code);
+					break;
+			}
+			xDelete<char>(record_name);
+		}
+	} //}}}
+	else{ //cpu ~0 {{{
+		for(;;){ //wait on cpu 0
+			ISSM_MPI_Bcast(&record_code,1,ISSM_MPI_INT,0,IssmComm::GetComm());  /*get from cpu 0 what we are going to do: */
+			if(record_code==0){
+				break; //we are done, break from the loop
+			}
+			else{
+				ISSM_MPI_Bcast(&record_name_size,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+				_assert_(record_name_size);
+				record_name=xNew<char>((record_name_size+1)); record_name[record_name_size]='\0';
+				ISSM_MPI_Bcast(record_name,record_name_size,ISSM_MPI_CHAR,0,IssmComm::GetComm());
+				ISSM_MPI_Bcast(&record_length,1,ISSM_MPI_LONG_LONG_INT,0,IssmComm::GetComm());
+				switch(record_code){
+					case 1:
+						/*boolean. get it from cpu 0 */
+						ISSM_MPI_Bcast(&booleanint,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+						/*create BoolParam: */
+						this->AddConstant(new IoConstant((bool)booleanint,record_name)); //cast to a boolean
+						break;
+
+					case 2:
+						/*integer. get it from cpu 0 */
+						ISSM_MPI_Bcast(&integer,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+						/*create IntParam: */
+						this->AddConstant(new IoConstant(integer,record_name));
+						break;
+					case 3:
+						/*scalar. get it from cpu 0 */
+						  {
+							/*IssmDouble, check whether it is already there (from "declare independents")*/
+							bool exists = false;
+							vector<IoConstant*>::iterator iter;
+							for(iter=constants.begin();iter<constants.end();iter++){
+								IoConstant* ioconstant=*iter;
+								if(strcmp(ioconstant->name,record_name)==0){
+									exists = true;
+									break;
+								}
+							}
+							if(!exists){
+								ISSM_MPI_Bcast(&pscalar,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+								scalar=pscalar;
+								/*create DoubleParam: */
+								this->AddConstant(new IoConstant(scalar,record_name));
+							}
+						  }
+						break;
+					case 4:
+						ISSM_MPI_Bcast(&string_size,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+						if(string_size){
+							string=xNew<char>((string_size+1));
+							string[string_size]='\0';
+
+							/*Read string from cpu 0: */
+							ISSM_MPI_Bcast(string,string_size,ISSM_MPI_CHAR,0,IssmComm::GetComm());
+						}
+						else{
+							string=xNew<char>(1);
+							string[0]='\0';
+						}
+
+						if(strcmp(record_name,"md.flowequation.fe_SSA")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.flowequation.fe_HO")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.flowequation.fe_FS")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.thermal.fe")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.levelset.fe")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.groundingline.migration")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.groundingline.friction_interpolation")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.groundingline.melt_interpolation")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.masstransport.hydrostatic_adjustment")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.materials.rheology_law")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.damage.elementinterp")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.mesh.domain_type")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else if(strcmp(record_name,"md.mesh.elementtype")==0){
+							this->AddConstant(new IoConstant(StringToEnumx(string),record_name));
+						} else {
+							/*Add string to parameters: */
+							this->AddConstant(new IoConstant(string,record_name));
+						}
+
+						/*Free string*/
+						xDelete<char>(string);
+						break;
+					case 5: break; //do nothing. not interested in this type of data, which is memory intensive.
+					case 6: break; //do nothing. not interested in this type of data, which is memory intensive.
+					case 7: break; //do nothing. not interested in this type of data, which is memory intensive.
+					case 8: break; //do nothing. not interested in this type of data, which is memory intensive.
+					case 10: break; //do nothing. not interested in this type of data, which is memory intensive.
+					case 9:
+							  ISSM_MPI_Bcast(&numstrings,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+							  /*Now allocate string array: */
+							  if(numstrings){
+								  strings=xNew<char*>(numstrings);
+								  for(int i=0;i<numstrings;i++)strings[i]=NULL;
+
+								  /*Go through strings, and read: */
+								  for(int i=0;i<numstrings;i++){
+
+									  ISSM_MPI_Bcast(&string_size,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+									  if(string_size){
+										  string=xNew<char>((string_size+1));
+										  string[string_size]='\0';
+										  ISSM_MPI_Bcast(string,string_size,ISSM_MPI_CHAR,0,IssmComm::GetComm());
+									  }
+									  else{
+										  string=xNew<char>(1);
+										  string[0]='\0';
+									  }
+									  strings[i]=string;
+								  }
+							  }
+
+							  /*Add strings to parameters: */
+							  this->AddConstant(new IoConstant(strings,numstrings,record_name));
+
+							  /*Free string*/
+							  for(int i=0;i<numstrings;i++) xDelete<char>(strings[i]);
+							  xDelete<char*>(strings);
+							  break;
+					default:
+							  _error_("unknown record type:" << record_code);
+							  break;
+				}
+				xDelete<char>(record_name);
+			}
+		}
+	} //}}}
+}/*}}}*/
+void  IoModel::FetchData(bool* pboolean,const char* data_name){/*{{{*/
+
+	/*output: */
+	int   booleanint;
+	int   code;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,data_name);
+
+	if(code!=1)_error_("expecting a boolean for \"" << data_name<<"\"");
+
+	/*We have to read a boolean from disk. */
+	if(my_rank==0){
+		if(fread(&booleanint,sizeof(int),1,fid)!=1) _error_("could not read boolean ");
+	}
+	ISSM_MPI_Bcast(&booleanint,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*cast to bool: */
+	/*Assign output pointers: */
+	*pboolean=(bool)booleanint;
+
+}
+/*}}}*/
+void  IoModel::FetchData(int* pinteger,const char* data_name){/*{{{*/
+
+	/*output: */
+	int   integer;
+	int   code;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,data_name);
+
+	if(code!=2)_error_("expecting an integer for \"" << data_name<<"\"");
+
+	/*We have to read a integer from disk. First read the dimensions of the integer, then the integer: */
+	if(my_rank==0){
+		if(fread(&integer,sizeof(int),1,fid)!=1) _error_("could not read integer ");
+	}
+
+	ISSM_MPI_Bcast(&integer,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pinteger=integer;
+}
+/*}}}*/
+void  IoModel::FetchData(IssmDouble* pscalar,const char* data_name){/*{{{*/
+
+	/*output: */
+	IssmPDouble   scalar;
+	int      code;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,data_name);
+
+	if(code!=3)_error_("expecting a IssmDouble for \""<<data_name<<"\"");
+
+	/*We have to read a scalar from disk. First read the dimensions of the scalar, then the scalar: */
+	if(my_rank==0){
+		if(fread(&scalar,sizeof(IssmPDouble),1,fid)!=1)_error_("could not read scalar ");
+	}
+	ISSM_MPI_Bcast(&scalar,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pscalar=scalar;
+
+}
+/*}}}*/
+void  IoModel::FetchData(IssmDouble** pscalar, const char* data_name){/*{{{*/
+
+   /*output: */
+   IssmPDouble *scalar = NULL;
+   int          code   = 0;
+
+   /*recover my_rank:*/
+   int my_rank=IssmComm::GetRank();
+
+   /*Set file pointer to beginning of the data: */
+   fid=this->SetFilePointerToData(&code,NULL,data_name);
+   if(code!=3)_error_("expecting a IssmDouble for \""<<data_name<<"\"");
+
+   /*Now fetch: */
+
+   /*We have to read a matrix from disk. First read the dimensions of the matrix, then the whole matrix: */
+
+   /*Now allocate matrix: */
+   /*Read matrix on node 0, then broadcast: */
+   scalar=xNew<IssmPDouble>(1);
+   if(my_rank==0) if(fread(scalar,sizeof(IssmPDouble),1,fid)!=1) _error_("could not read matrix ");
+   ISSM_MPI_Bcast(scalar,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+
+   _printf0_("scalar: " << *scalar << "\n");
+   *pscalar=xNew<IssmDouble>(1);
+   *pscalar[0]=scalar[0];
+   xDelete<IssmPDouble>(scalar);
+}
+/*}}}*/
+void  IoModel::FetchData(char** pstring,const char* data_name){/*{{{*/
+
+	/*output: */
+	char* string=NULL;
+	int   string_size;
+	int code=0;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,data_name);
+
+	if(code!=4)_error_("expecting a string for \""<<data_name<<"\"");
+
+	/*Now fetch: */
+
+	/*We have to read a string from disk. First read the dimensions of the string, then the string: */
+	if(my_rank==0){
+		if(fread(&string_size,sizeof(int),1,fid)!=1) _error_("could not read length of string ");
+	}
+
+	ISSM_MPI_Bcast(&string_size,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Now allocate string: */
+	if(string_size){
+		string=xNew<char>((string_size+1));
+		string[string_size]='\0';
+
+		/*Read string on node 0, then broadcast: */
+		if(my_rank==0){
+			if(fread(string,string_size*sizeof(char),1,fid)!=1)_error_(" could not read string ");
+		}
+		ISSM_MPI_Bcast(string,string_size,ISSM_MPI_CHAR,0,IssmComm::GetComm());
+	}
+	else{
+		string=xNew<char>(1);
+		string[0]='\0';
+	}
+
+	/*Assign output pointers: */
+	*pstring=string;
+}
+/*}}}*/
+void  IoModel::FetchData(char*** pstrings,int* pnumstrings,const char* data_name){/*{{{*/
+
+	/*output: */
+	char** strings = NULL;
+	char*  string  = NULL;
+	int    numstrings;
+	int    string_size;
+	int    code;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,data_name);
+
+	if(code!=9)_error_("expecting a string array for \""<<data_name<<"\"");
+
+	/*Now fetch: */
+
+	if(my_rank==0){
+		if(fread(&numstrings,sizeof(int),1,fid)!=1) _error_("could not read length of string array");
+	}
+	ISSM_MPI_Bcast(&numstrings,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Now allocate string array: */
+	if(numstrings){
+		strings=xNew<char*>(numstrings);
+		for(int i=0;i<numstrings;i++) strings[i]=NULL;
+
+		/*Go through strings, and read: */
+		for(int i=0;i<numstrings;i++){
+
+			if(my_rank==0){
+				if(fread(&string_size,sizeof(int),1,fid)!=1) _error_("could not read length of string ");
+			}
+			ISSM_MPI_Bcast(&string_size,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+			if(string_size){
+				string=xNew<char>((string_size+1));
+				string[string_size]='\0';
+				if(my_rank==0){
+					if(fread(string,string_size*sizeof(char),1,fid)!=1)_error_(" could not read string ");
+				}
+				ISSM_MPI_Bcast(string,string_size,ISSM_MPI_CHAR,0,IssmComm::GetComm());
+			}
+			else{
+				string=xNew<char>(1);
+				string[0]='\0';
+			}
+			strings[i]=string;
+		}
+	}
+
+	/*Assign output pointers: */
+	*pstrings = strings;
+	if(pnumstrings) *pnumstrings = numstrings;
+}
+/*}}}*/
+void  IoModel::FetchData(bool** pmatrix,int* pM,int* pN,const char* data_name){/*{{{*/
+
+	/*output: */
+	int M,N;
+	IssmPDouble* matrix=NULL;
+	bool*        bool_matrix=NULL;
+	int code=0;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,data_name);
+
+	if(code!=5 && code!=6 && code!=7)_error_("expecting a IssmDouble, integer or boolean matrix for \""<<data_name<<"\""<<" (Code is "<<code<<")");
+
+	/*Now fetch: */
+
+	/*We have to read a matrix from disk. First read the dimensions of the matrix, then the whole matrix: */
+	/*numberofelements: */
+	if(my_rank==0){
+		if(fread(&M,sizeof(int),1,fid)!=1) _error_("could not read number of rows for matrix ");
+	}
+
+	ISSM_MPI_Bcast(&M,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	if(my_rank==0){
+		if(fread(&N,sizeof(int),1,fid)!=1) _error_("could not read number of columns for matrix ");
+	}
+	ISSM_MPI_Bcast(&N,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Now allocate matrix: */
+	if(M*N){
+		matrix=xNew<IssmPDouble>(M*N);
+
+		/*Read matrix on node 0, then broadcast: */
+		if(my_rank==0){
+			if(fread(matrix,M*N*sizeof(IssmPDouble),1,fid)!=1) _error_("could not read matrix ");
+		}
+
+		ISSM_MPI_Bcast(matrix,M*N,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+	}
+
+	/*Now cast to bool: */
+	if(M*N){
+		bool_matrix=xNew<bool>(M*N);
+		for(int i=0;i<M;i++){
+			for(int j=0;j<N;j++){
+				bool_matrix[i*N+j]=(bool)matrix[i*N+j];
+			}
+		}
+	}
+	else{
+		bool_matrix=NULL;
+	}
+	/*Free resources:*/
+	xDelete<IssmPDouble>(matrix);
+
+	/*Assign output pointers: */
+	*pmatrix=bool_matrix;
+	if (pM)*pM=M;
+	if (pN)*pN=N;
+
+}
+/*}}}*/
+void  IoModel::FetchData(int** pmatrix,int* pM,int* pN,const char* data_name){/*{{{*/
+	int i,j;
+
+	/*output: */
+	int M,N;
+	IssmPDouble* matrix=NULL;
+	int*    integer_matrix=NULL;
+	int code=0;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,data_name);
+
+	if(code!=5 && code!=6 && code!=7)_error_("expecting a IssmDouble, integer or boolean matrix for \""<<data_name<<"\""<<" (Code is "<<code<<")");
+
+	/*Now fetch: */
+
+	/*We have to read a matrix from disk. First read the dimensions of the matrix, then the whole matrix: */
+	/*numberofelements: */
+	if(my_rank==0){
+		if(fread(&M,sizeof(int),1,fid)!=1) _error_("could not read number of rows for matrix ");
+	}
+
+	ISSM_MPI_Bcast(&M,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	if(my_rank==0){
+		if(fread(&N,sizeof(int),1,fid)!=1) _error_("could not read number of columns for matrix ");
+	}
+	ISSM_MPI_Bcast(&N,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Now allocate matrix: */
+	if(M*N){
+		matrix=xNew<IssmPDouble>(M*N);
+
+		/*Read matrix on node 0, then broadcast: */
+		if(my_rank==0){
+			if(fread(matrix,M*N*sizeof(IssmPDouble),1,fid)!=1) _error_("could not read matrix ");
+		}
+
+		ISSM_MPI_Bcast(matrix,M*N,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+	}
+
+	/*Now cast to integer: */
+	if(M*N){
+		integer_matrix=xNew<int>(M*N);
+		for (i=0;i<M;i++){
+			for (j=0;j<N;j++){
+				integer_matrix[i*N+j]=(int)matrix[i*N+j];
+			}
+		}
+	}
+	else{
+		integer_matrix=NULL;
+	}
+	/*Free resources:*/
+	xDelete<IssmPDouble>(matrix);
+
+	/*Assign output pointers: */
+	*pmatrix=integer_matrix;
+	if (pM)*pM=M;
+	if (pN)*pN=N;
+
+}
+/*}}}*/
+void  IoModel::FetchData(IssmDouble** pmatrix,int* pM,int* pN,const char* data_name){/*{{{*/
+
+	/*First, look if has already been loaded (might be an independent variable)*/
+	vector<IoData*>::iterator iter;
+	for(iter=data.begin();iter<data.end();iter++){
+		IoData* iodata=*iter;
+		if(strcmp(iodata->name,data_name)==0){
+			*pmatrix=iodata->data;
+			if(pM) *pM=iodata->M;
+			if(pN) *pN=iodata->N;
+			return;
+		}
+	}
+
+	/*output: */
+	int          M,N;
+	IssmPDouble *matrix = NULL;
+	int          code   = 0;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,data_name);
+	if(code!=5 && code!=6 && code!=7 && code!=10)_error_("expecting a IssmDouble, integer or boolean matrix for \""<<data_name<<"\""<<" (Code is "<<code<<")");
+
+	/*Now fetch: */
+
+	/*We have to read a matrix from disk. First read the dimensions of the matrix, then the whole matrix: */
+	/*numberofelements: */
+	if(my_rank==0){
+		if(fread(&M,sizeof(int),1,fid)!=1) _error_("could not read number of rows for matrix ");
+	}
+	ISSM_MPI_Bcast(&M,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	if(my_rank==0){
+		if(fread(&N,sizeof(int),1,fid)!=1) _error_("could not read number of columns for matrix ");
+	}
+	ISSM_MPI_Bcast(&N,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Now allocate matrix: */
+	if(M*N){
+		if(code==10){
+			/*Special case for Compressed mat*/
+			IssmPDouble offset,range;
+			if(my_rank==0) if(fread(&offset,sizeof(IssmPDouble),1,fid)!=1) _error_("could not read offset");
+			ISSM_MPI_Bcast(&offset,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+
+			if(my_rank==0) if(fread(&range,sizeof(IssmPDouble),1,fid)!=1) _error_("could not read range");
+			ISSM_MPI_Bcast(&range,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+
+			*pmatrix=xNew<IssmDouble>(M*N);
+
+			/*Read matrix*/
+			uint8_t* rawmatrix=xNew<uint8_t>((M-1)*N);
+			if(my_rank==0) if(fread(rawmatrix,(M-1)*N*sizeof(char),1,fid)!=1) _error_("could not read matrix ");
+			ISSM_MPI_Bcast(rawmatrix,(M-1)*N,ISSM_MPI_CHAR,0,IssmComm::GetComm());
+
+			for(int i=0;i<(M-1)*N;++i) (*pmatrix)[i]=offset+range*reCast<IssmDouble>(rawmatrix[i])/255.;
+			xDelete<uint8_t>(rawmatrix);
+
+			/*read time now*/
+			IssmPDouble* timematrix=xNew<IssmPDouble>(N);
+			if(my_rank==0) if(fread(timematrix,N*sizeof(IssmPDouble),1,fid)!=1) _error_("could not read time in compressed matrix");
+			ISSM_MPI_Bcast(timematrix,N,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+
+			for(int i=0;i<N;++i) (*pmatrix)[(M-1)*N+i]=timematrix[i];
+			xDelete<IssmPDouble>(timematrix);
+
+		}
+		else{
+			/*Read matrix on node 0, then broadcast: */
+			matrix=xNew<IssmPDouble>(M*N);
+			if(my_rank==0) if(fread(matrix,M*N*sizeof(IssmPDouble),1,fid)!=1) _error_("could not read matrix ");
+			ISSM_MPI_Bcast(matrix,M*N,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+
+			*pmatrix=xNew<IssmDouble>(M*N);
+			for(int i=0;i<M*N;++i) (*pmatrix)[i]=matrix[i];
+			xDelete<IssmPDouble>(matrix);
+		}
+	}
+	else{
+		*pmatrix=NULL;
+	}
+	/*Assign output pointers: */
+	if(pM) *pM=M;
+	if(pN) *pN=N;
+}
+/*}}}*/
+#ifdef _HAVE_AD_
+void  IoModel::FetchData(IssmPDouble** pmatrix,int* pM,int* pN,const char* data_name){/*{{{*/
+
+	/*First, look if has already been loaded (might be an independent variable)*/
+	vector<IoData*>::iterator iter;
+	for(iter=data.begin();iter<data.end();iter++){
+		IoData* iodata=*iter;
+		if(strcmp(iodata->name,data_name)==0){
+			_error_(data_name <<" has already been loaded as in IssmDouble and cannot be converted to IssmPDouble");
+		}
+	}
+
+	/*output: */
+	int          M,N;
+	IssmPDouble *matrix = NULL;
+	int          code   = 0;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,data_name);
+	if(code!=5 && code!=6 && code!=7 && code!=10)_error_("expecting a IssmDouble, integer or boolean matrix for \""<<data_name<<"\""<<" (Code is "<<code<<")");
+
+	/*Now fetch: */
+
+	/*We have to read a matrix from disk. First read the dimensions of the matrix, then the whole matrix: */
+	/*numberofelements: */
+	if(my_rank==0){
+		if(fread(&M,sizeof(int),1,fid)!=1) _error_("could not read number of rows for matrix ");
+	}
+	ISSM_MPI_Bcast(&M,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	if(my_rank==0){
+		if(fread(&N,sizeof(int),1,fid)!=1) _error_("could not read number of columns for matrix ");
+	}
+	ISSM_MPI_Bcast(&N,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Now allocate matrix: */
+	if(M*N){
+		if(code==10){
+			/*Special case for Compressed mat*/
+			IssmPDouble offset,range;
+			if(my_rank==0) if(fread(&offset,sizeof(IssmPDouble),1,fid)!=1) _error_("could not read offset");
+			ISSM_MPI_Bcast(&offset,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+
+			if(my_rank==0) if(fread(&range,sizeof(IssmPDouble),1,fid)!=1) _error_("could not read range");
+			ISSM_MPI_Bcast(&range,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+
+			*pmatrix=xNew<IssmPDouble>(M*N);
+
+			/*Read matrix*/
+			uint8_t* rawmatrix=xNew<uint8_t>((M-1)*N);
+			if(my_rank==0) if(fread(rawmatrix,(M-1)*N*sizeof(char),1,fid)!=1) _error_("could not read matrix ");
+			ISSM_MPI_Bcast(rawmatrix,(M-1)*N,ISSM_MPI_CHAR,0,IssmComm::GetComm());
+
+			for(int i=0;i<(M-1)*N;++i) (*pmatrix)[i]=offset+range*reCast<IssmPDouble>(rawmatrix[i])/255.;
+			xDelete<uint8_t>(rawmatrix);
+
+			/*read time now*/
+			IssmPDouble* timematrix=xNew<IssmPDouble>(N);
+			if(my_rank==0) if(fread(timematrix,N*sizeof(IssmPDouble),1,fid)!=1) _error_("could not read time in compressed matrix");
+			ISSM_MPI_Bcast(timematrix,N,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+
+			for(int i=0;i<N;++i) (*pmatrix)[(M-1)*N+i]=timematrix[i];
+			xDelete<IssmPDouble>(timematrix);
+
+		}
+		else{
+			/*Read matrix on node 0, then broadcast: */
+			matrix=xNew<IssmPDouble>(M*N);
+			if(my_rank==0) if(fread(matrix,M*N*sizeof(IssmPDouble),1,fid)!=1) _error_("could not read matrix ");
+			ISSM_MPI_Bcast(matrix,M*N,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+			*pmatrix=matrix;
+		}
+	}
+	else{
+		*pmatrix=NULL;
+	}
+	/*Assign output pointers: */
+	if(pM) *pM=M;
+	if(pN) *pN=N;
+}
+/*}}}*/
+void  IoModel::FetchData(IssmPDouble** pscalar,const char* data_name){/*{{{*/
+
+   /*output: */
+   IssmPDouble   *scalar = NULL;
+   int      code;
+
+   /*recover my_rank:*/
+   int my_rank=IssmComm::GetRank();
+
+   /*Set file pointer to beginning of the data: */
+   fid=this->SetFilePointerToData(&code,NULL,data_name);
+
+   if(code!=3)_error_("expecting a IssmDouble for \""<<data_name<<"\"");
+
+   /*We have to read a scalar from disk. First read the dimensions of the scalar, then the scalar: */
+   scalar=xNew<IssmPDouble>(1);
+   if(my_rank==0){
+      if(fread(scalar,sizeof(IssmPDouble),1,fid)!=1)_error_("could not read scalar ");
+   }
+   ISSM_MPI_Bcast(scalar,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+
+
+   /*Assign output pointers: */
+   *pscalar=scalar;
+}
+/*}}}*/
+#endif
+void  IoModel::FetchData(IssmDouble*** pmatrices,int** pmdims,int** pndims, int* pnumrecords,const char* data_name){/*{{{*/
+
+	int i;
+	/*output: */
+	IssmDouble** matrices=NULL;
+	int*     mdims=NULL;
+	int*     ndims=NULL;
+	int      numrecords=0;
+
+	/*intermediary: */
+	int     M, N;
+	IssmPDouble *matrix = NULL;
+	int     code;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,data_name);
+	if(code!=8)_error_("expecting a IssmDouble mat array for \""<<data_name<<"\"");
+
+	/*Now fetch: */
+	if(my_rank==0){
+		if(fread(&numrecords,sizeof(int),1,fid)!=1) _error_("could not read number of records in matrix array ");
+	}
+	ISSM_MPI_Bcast(&numrecords,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	if(numrecords){
+
+		/*Allocate matrices :*/
+		matrices=xNew<IssmDouble*>(numrecords);
+		mdims=xNew<int>(numrecords);
+		ndims=xNew<int>(numrecords);
+
+		for(i=0;i<numrecords;i++){
+			matrices[i]=NULL;
+			mdims[i]=0;
+			ndims[i]=0;
+		}
+
+		/*Loop through records and fetch matrix: */
+		for(i=0;i<numrecords;i++){
+
+			if(my_rank==0){
+				if(fread(&M,sizeof(int),1,fid)!=1) _error_("could not read number of rows in " << i << "th matrix of matrix array");
+			}
+			ISSM_MPI_Bcast(&M,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+			if(my_rank==0){
+				if(fread(&N,sizeof(int),1,fid)!=1) _error_("could not read number of columns in " << i << "th matrix of matrix array");
+			}
+			ISSM_MPI_Bcast(&N,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+			/*Now allocate matrix: */
+			if(M*N){
+				matrix=xNew<IssmPDouble>(M*N);
+
+				/*Read matrix on node 0, then broadcast: */
+				if(my_rank==0){
+					if(fread(matrix,M*N*sizeof(IssmPDouble),1,fid)!=1) _error_("could not read matrix ");
+				}
+
+				ISSM_MPI_Bcast(matrix,M*N,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+				matrices[i]=xNew<IssmDouble>(M*N);
+				for (int j=0;j<M*N;++j) {matrices[i][j]=matrix[j];}
+				xDelete<IssmPDouble>(matrix);
+			}
+			else
+			  matrices[i]=NULL;
+			/*Assign: */
+			mdims[i]=M;
+			ndims[i]=N;
+		}
+	}
+
+	/*Assign output pointers: */
+	*pmatrices=matrices;
+	*pmdims=mdims;
+	*pndims=ndims;
+	*pnumrecords=numrecords;
+}
+/*}}}*/
+void  IoModel::FetchData(Options* options,const char* lastnonoption){/*{{{*/
+
+	/*record descriptions; */
+	const char* mddot = "md.";
+	char* record_name = NULL;
+	int   record_name_size;
+	long long record_length;
+	int   record_code;
+
+	/*records: */
+	IssmDouble   scalar = 0;
+	char        *string = NULL;
+	int          string_size;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Go find in the binary file, the position of the data we want to fetch: */
+	if(my_rank==0){
+		fseek(fid,0,SEEK_SET);
+		for(;;){
+			/*Read size of first string name: */
+			if(fread(&record_name_size,sizeof(int),1,fid)==0) _error_("could not read record_name");
+			if(record_name_size<3 || record_name_size>80) _error_("error while looking in binary file. Found a string of size "<<record_name_size);
+
+			/*Allocate string of correct size: */
+			record_name=xNew<char>(record_name_size+1);
+			record_name[record_name_size]='\0';
+
+			/*Read record_name: */
+			if(fread(record_name,record_name_size*sizeof(char),1,fid)==0)_error_("Could not find field "<<lastnonoption);
+			if(strncmp(record_name,mddot,3)!=0) _error_("error while reading binary file: record does not start with \"md.\": "<<record_name);
+
+			/*Is this the record sought for? : */
+			if(strcmp(record_name,lastnonoption)==0){
+				if(fread(&record_length,sizeof(long long),1,fid)!=1) _error_("Could not read record_length");
+				fseek(fid,record_length,SEEK_CUR);
+				xDelete<char>(record_name);
+				break;
+			}
+			else{
+				if(fread(&record_length,sizeof(long long),1,fid)!=1) _error_("Could not read record_length");
+				fseek(fid,record_length,SEEK_CUR);
+				xDelete<char>(record_name);
+			}
+		}
+	}
+
+	/*Go find in the binary file, the position of the data we want to fetch: */
+	if(my_rank==0){ //cpu 0{{{
+
+		/*Now march through file looking for the correct data identifiers (bool,int,IssmDouble or string): */
+		for(;;){
+
+			/*Read size of first string name: */
+			if(fread(&record_name_size,sizeof(int),1,fid)==0){
+				/*we have reached the end of the file. break: */
+				record_code=0; //0 means bailout
+				ISSM_MPI_Bcast(&record_code,1,ISSM_MPI_INT,0,IssmComm::GetComm());  /*tell others cpus we are bailing: */
+				break;
+			}
+			if(record_name_size<3 || record_name_size>80){
+				_error_("error while looking in binary file. Found a string of size "<<record_name_size);
+			}
+
+			/*Allocate string of correct size: */
+			record_name=xNew<char>(record_name_size+1);
+			record_name[record_name_size]='\0';
+
+			/*Read record_name: */
+			if(fread(record_name,record_name_size*sizeof(char),1,fid)==0){
+				_error_("Could not read record name");
+			}
+			if(strncmp(record_name,mddot,3)!=0){
+				_error_("error while reading binary file: record does not start with \"md.\": "<<record_name);
+			}
+			if(strcmp(record_name,"md.EOF")==0){
+				xDelete<char>(record_name);
+				record_code=0; //0 means bailout
+				ISSM_MPI_Bcast(&record_code,1,ISSM_MPI_INT,0,IssmComm::GetComm());  /*tell others cpus we are bailing: */
+				break;
+			}
+
+			/* Read the record length and the data type code: */
+			if(fread(&record_length,sizeof(long long),1,this->fid)!=1) _error_("Cound not read record_length");
+			if(fread(&record_code  ,sizeof(int),1,this->fid)!=1) _error_("Cound not read record_code");
+
+			/*Tell other cpus what we are doing: */
+			ISSM_MPI_Bcast(&record_code,1,ISSM_MPI_INT,0,IssmComm::GetComm());  /*tell other cpus what we are going to do: */
+
+			/*Tell other cpus the name of the data, then branch according to the data type: */
+			ISSM_MPI_Bcast(&record_name_size,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+			ISSM_MPI_Bcast(record_name,record_name_size,ISSM_MPI_CHAR,0,IssmComm::GetComm());
+			ISSM_MPI_Bcast(&record_length,1,ISSM_MPI_LONG_LONG_INT,0,IssmComm::GetComm());
+
+			switch(record_code){
+				case 3:
+					  {
+						if(fread(&scalar,sizeof(IssmPDouble),1,this->fid)!=1) _error_("could not read scalar ");
+						ISSM_MPI_Bcast(&scalar,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+						GenericOption<IssmDouble>* option = new GenericOption<IssmDouble>();
+						char* optionname=xNew<char>(strlen(record_name)-3+1);
+						xMemCpy(optionname,&record_name[3],strlen(record_name)-3+1);
+						option->value = scalar;
+						option->name  = optionname;
+						option->size[0] = 1;
+						option->size[1] = 1;
+						options->AddOption(option);
+					  }
+					break;
+				case 4:
+					  {
+					/*We have to read a string from disk. First read the dimensions of the string, then the string: */
+					if(fread(&string_size,sizeof(int),1,this->fid)!=1) _error_("could not read length of string ");
+					ISSM_MPI_Bcast(&string_size,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+					if(string_size){
+						string=xNew<char>(string_size+1);
+						string[string_size]='\0';
+
+						/*Read string, then broadcast: */
+						if(fread(string,string_size*sizeof(char),1,this->fid)!=1)_error_(" could not read string ");
+						ISSM_MPI_Bcast(string,string_size,ISSM_MPI_CHAR,0,IssmComm::GetComm());
+					}
+					else{
+						string=xNew<char>(1);
+						string[0]='\0';
+					}
+
+					/*Add string to parameters: */
+					GenericOption<char*>* option = new GenericOption<char*>();
+					char* optionname=xNew<char>(strlen(record_name)-3+1);
+					xMemCpy(optionname,&record_name[3],strlen(record_name)-3+1);
+					option->value = string;
+					option->name  = optionname;
+					option->size[0] = 1;
+					option->size[1] = 1;
+					options->AddOption(option);
+
+					  }
+					break;
+				default:
+					_error_("record type not supported:" << record_code);
+					break;
+			}
+			xDelete<char>(record_name);
+		}
+	} //}}}
+	else{ //cpu ~0 {{{
+		for(;;){ //wait on cpu 0
+			ISSM_MPI_Bcast(&record_code,1,ISSM_MPI_INT,0,IssmComm::GetComm());  /*get from cpu 0 what we are going to do: */
+			if(record_code==0){
+				break; //we are done, break from the loop
+			}
+			else{
+				ISSM_MPI_Bcast(&record_name_size,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+				_assert_(record_name_size);
+				record_name=xNew<char>((record_name_size+1)); record_name[record_name_size]='\0';
+				ISSM_MPI_Bcast(record_name,record_name_size,ISSM_MPI_CHAR,0,IssmComm::GetComm());
+				ISSM_MPI_Bcast(&record_length,1,ISSM_MPI_LONG_LONG_INT,0,IssmComm::GetComm());
+				switch(record_code){
+					case 3:
+						  {
+							if(fread(&scalar,sizeof(IssmPDouble),1,this->fid)!=1) _error_("could not read scalar ");
+							ISSM_MPI_Bcast(&scalar,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+							char* optionname=xNew<char>(strlen(record_name)-3+1);
+							xMemCpy(optionname,&record_name[3],strlen(record_name)-3+1);
+							GenericOption<IssmDouble>* option = new GenericOption<IssmDouble>();
+							option->value = scalar;
+							option->name  = optionname;
+							option->size[0] = 1;
+							option->size[1] = 1;
+							options->AddOption(option);
+						  }
+						break;
+					case 4:
+						  {
+						/*We have to read a string from disk. First read the dimensions of the string, then the string: */
+						if(fread(&string_size,sizeof(int),1,this->fid)!=1) _error_("could not read length of string ");
+						ISSM_MPI_Bcast(&string_size,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+						if(string_size){
+							string=xNew<char>(string_size+1);
+							string[string_size]='\0';
+
+							/*Read string, then broadcast: */
+							if(fread(string,string_size*sizeof(char),1,this->fid)!=1)_error_(" could not read string ");
+							ISSM_MPI_Bcast(string,string_size,ISSM_MPI_CHAR,0,IssmComm::GetComm());
+						}
+						else{
+							string=xNew<char>(1);
+							string[0]='\0';
+						}
+
+						/*Add string to parameters: */
+						char* optionname=xNew<char>(strlen(record_name)-3+1);
+						xMemCpy(optionname,&record_name[3],strlen(record_name)-3+1);
+						GenericOption<char*>* option = new GenericOption<char*>();
+						option->value = string;
+						option->name  = optionname;
+						option->size[0] = 1;
+						option->size[1] = 1;
+						options->AddOption(option);
+						  }
+						break;
+					default:
+						_error_("record type not supported:" << record_code);
+						break;
+				}
+
+			}
+		}
+	} //}}}
+
+}
+/*}}}*/
+void  IoModel::FetchData(int num,...){/*{{{*/
+
+	va_list     ap;
+	int         code,layout;
+	IssmDouble *matrix   = NULL;
+	char*       data_name;
+	int         M,N;
+	bool        exists;
+	const char *mddot     = "md.";
+	vector<IoData*>::iterator iter;
+
+	/*Go through the entire list of names and fetch the corresponding data. Add it to the iomodel->data dataset. Everything
+	 *we fetch is a IssmDouble* : */
+
+	va_start(ap,num);
+	for(int i=0; i<num; i++){
+
+		data_name=va_arg(ap,char*);
+		if(strncmp(data_name,mddot,3)!=0) _error_("String provided does not start with \"md.\" ("<<data_name<<")");
+
+		exists = false;
+
+		for(iter=data.begin();iter<data.end();iter++){
+			IoData* iodata=*iter;
+			if(strcmp(iodata->name,data_name)==0){
+				/*Already there, no need to fetch it*/
+				_assert_(iodata->isindependent);
+				exists = true;
+				break;
+			}
+		}
+
+		if(exists){
+			/*this data has already been checked out! Continue: */
+			continue;
+		}
+		else{
+			/*Add to this->data: */
+			this->SetFilePointerToData(&code,&layout,data_name);
+			this->FetchData(&matrix,&M,&N,data_name);
+			this->AddData(new IoData(matrix,code,layout,M,N,data_name));
+		}
+	}
+	va_end(ap);
+}
+/*}}}*/
+void  IoModel::FetchDataToInput(Inputs* inputs,Elements* elements,const char* vector_name,int input_enum,IssmDouble default_value){/*{{{*/
+
+	/*First, look whether it is not already loaded in this->data*/
+	vector<IoData*>::iterator iter;
+	for(iter=data.begin();iter<data.end();iter++){
+		IoData* iodata=*iter;
+		if(strcmp(iodata->name,vector_name)==0){
+			_assert_(iodata->code==7);
+			for(Object* & object : elements->objects){
+				Element* element=xDynamicCast<Element*>(object);
+				element->InputCreate(iodata->data,inputs,this,iodata->M,iodata->N,iodata->layout,input_enum,iodata->code);//we need i to index into elements.
+			}
+			return;
+		}
+	}
+
+	/*intermediary: */
+	int         code,vector_layout;
+	IssmDouble *doublearray = NULL;
+	int         M,N;
+
+	/*First of, find the record for the name, and get code  of data type: */
+	this->SetFilePointerToData(&code, &vector_layout,vector_name);
+
+	/*Defaulting only supported for double arrays*/
+	if(code!=7 && code!=10) _error_(vector_name<<" is not a double array");
+
+	this->FetchData(&doublearray,&M,&N,vector_name);
+
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		if(!doublearray){
+			element->SetElementInput(inputs,input_enum,default_value);
+		}
+		else{
+			element->InputCreate(doublearray,inputs,this,M,N,vector_layout,input_enum,code);//we need i to index into elements.
+		}
+	}
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(doublearray);
+}
+/*}}}*/
+void  IoModel::FetchDataToInput(Inputs* inputs,Elements* elements,const char* vector_name,int input_enum){/*{{{*/
+
+	/*First, look whether it is not already loaded in this->data*/
+	vector<IoData*>::iterator iter;
+	for(iter=data.begin();iter<data.end();iter++){
+		IoData* iodata=*iter;
+		if(strcmp(iodata->name,vector_name)==0){
+			for(Object* & object : elements->objects){
+				Element* element=xDynamicCast<Element*>(object);
+				element->InputCreate(iodata->data,inputs,this,iodata->M,iodata->N,iodata->layout,input_enum,iodata->code);//we need i to index into elements.
+			}
+			return;
+		}
+	}
+
+	/*intermediary: */
+	int     i;
+	int     code,vector_layout;
+
+	/*variables being fetched: */
+	bool        boolean;
+	int         integer;
+	IssmDouble  scalar;
+	IssmDouble *doublearray = NULL;
+	int         M,N;
+
+	/*First of, find the record for the name, and get code  of data type: */
+	this->SetFilePointerToData(&code, &vector_layout,vector_name);
+
+	switch(code){
+		case 1: //boolean constant
+			this->FetchData(&boolean,vector_name);
+			for(Object* & object : elements->objects){
+				Element* element=xDynamicCast<Element*>(object);
+				element->SetBoolInput(inputs,input_enum,boolean);
+			}
+			break;
+		case 2: //integer constant
+			this->FetchData(&integer,vector_name);
+			for(Object* & object : elements->objects){
+				Element* element=xDynamicCast<Element*>(object);
+				element->SetIntInput(inputs,input_enum,integer);
+			}
+			break;
+		case 3: //IssmDouble constant
+			this->FetchData(&scalar,vector_name);
+			for(Object* & object : elements->objects){
+				Element* element=xDynamicCast<Element*>(object);
+				element->SetElementInput(inputs,input_enum,scalar);
+			}
+			break;
+		case 5: //boolean vector
+			this->FetchData(&doublearray,&M,&N,vector_name); //we still have a doublearray, because it might include times in transient mode
+			if(!doublearray) _error_("\""<<vector_name<<"\" not found in binary file");
+			for(Object* & object : elements->objects){
+				Element* element=xDynamicCast<Element*>(object);
+				element->InputCreate(doublearray,inputs,this,M,N,vector_layout,input_enum,code);//we need i to index into elements.
+			}
+			break;
+		case 6: //int vector
+			this->FetchData(&doublearray,&M,&N,vector_name); //we still have a doublearray, because it might include times in transient mode
+			if(!doublearray) _error_("\""<<vector_name<<"\" not found in binary file");
+			for(Object* & object : elements->objects){
+				Element* element=xDynamicCast<Element*>(object);
+				element->InputCreate(doublearray,inputs,this,M,N,vector_layout,input_enum,code);//we need i to index into elements.
+			}
+			break;
+		case 8: { //MatArray {{{
+
+			/*variables:*/
+			int numarray;
+			IssmDouble** array=NULL; 
+			IssmDouble*  matrix=NULL;
+			IssmDouble*  times = NULL;
+			int* pM = NULL;
+			int* pN = NULL;
+			int M,N;
+
+			/*fetch array of matrices:*/
+			this->FetchData(&array,&pM,&pN,&numarray,vector_name);
+
+			for (int i=0;i<numarray;i++){
+
+				M=pM[i];
+				N=pN[i];
+				matrix=array[i];
+
+				//initialize transient input dataset:
+				TransientInput* transientinput=inputs->SetDatasetTransientInput(input_enum,i, times,N);
+				for(Object* & object : elements->objects){
+
+					/*Get the right transient input*/
+					Element* element=xDynamicCast<Element*>(object);
+
+					/*Get values and lid list*/
+					const int   numvertices = element->GetNumberOfVertices();
+					int        *vertexlids = xNew<int>(numvertices);
+					int        *vertexsids = xNew<int>(numvertices);
+
+					/*Recover vertices ids needed to initialize inputs*/
+					_assert_(this->elements);
+					for(int k=0;k<numvertices;k++){
+						vertexsids[k] =reCast<int>(this->elements[numvertices*element->Sid()+k]-1); //ids for vertices are in the elements array from Matlab
+						vertexlids[k]=this->my_vertices_lids[vertexsids[k]];
+					}
+
+					if(M==this->numberofvertices || M==(this->numberofvertices+1)){
+
+						//recover time vector: 
+						times=xNew<IssmDouble>(N);
+						if(M==this->numberofvertices) times[0] = matrix[M-1];
+						if(M==this->numberofvertices+1) for(int t=0;t<N;t++) times[t] = matrix[(M-1)*N+t];
+
+						IssmDouble* values=xNew<IssmDouble>(numvertices);
+
+						for(int t=0;t<N;t++){
+							for (int k=0;k<numvertices;k++)values[k]=matrix[N*vertexsids[k]+t];
+
+							switch(element->ObjectEnum()){
+								case TriaEnum:  transientinput->AddTriaTimeInput( t,numvertices,vertexlids,values,P1Enum); break;
+								case PentaEnum: transientinput->AddPentaTimeInput(t,numvertices,vertexlids,values,P1Enum); break;
+								default: _error_("Not implemented yet");
+							}
+						}
+						xDelete<IssmDouble>(values);
+					}
+					else if(M==this->numberofelements || M==(this->numberofelements+1)){
+
+						IssmDouble value;
+
+						//recover time vector: 
+						times=xNew<IssmDouble>(N);
+						if(M==this->numberofelements) times[0] = matrix[M-1];
+						if(M==this->numberofelements+1) for(int t=0;t<N;t++) times[t] = matrix[(M-1)*N+t];
+
+						for(int t=0;t<N;t++){ 
+
+							value=matrix[N*element->Sid()+t];
+							switch(element->ObjectEnum()){
+								case TriaEnum:  transientinput->AddTriaTimeInput( t,1,&element->lid,&value,P0Enum); break;
+								case PentaEnum:  transientinput->AddPentaTimeInput( t,1,&element->lid,&value,P0Enum); break;
+								default: _error_("Not implemented yet");
+							}
+						}
+					}
+					else if(M==2 || M==1){
+						IssmDouble value;
+
+						//recover time vector: 
+						times=xNew<IssmDouble>(N);
+						if(M==1) times[0] = 0;
+						if(M==2) for(int t=0;t<N;t++) times[t] = matrix[(M-1)*N+t];
+
+						for(int t=0;t<N;t++){ 
+
+							value=matrix[t];
+							switch(element->ObjectEnum()){
+								case TriaEnum:  transientinput->AddTriaTimeInput( t,1,&element->lid,&value,P0Enum); break;
+								case PentaEnum:  transientinput->AddPentaTimeInput( t,1,&element->lid,&value,P0Enum); break;
+								default: _error_("Not implemented yet");
+							}
+						}
+
+					}
+					else _error_("FetchDataToInput error message: row size of MatArray elements should be either numberofelements (+1) or numberofvertices (+1)");
+
+					xDelete<int>(vertexlids);
+					xDelete<int>(vertexsids);
+				}
+
+				xDelete<IssmDouble>(times);
+			}
+
+			/*Delete data:*/
+			for(int i=0;i<numarray;i++){
+				IssmDouble* matrix=array[i];
+				xDelete<IssmDouble>(matrix);
+			}
+			xDelete<IssmDouble*>(array);
+			xDelete<int>(pM);
+			xDelete<int>(pN); 
+			} //}}}
+			break;
+		case 7: //IssmDouble vector
+		case 10:
+			this->FetchData(&doublearray,&M,&N,vector_name);
+			if(!doublearray) _error_("\""<<vector_name<<"\" not found in binary file");
+			for(Object* & object : elements->objects){
+				Element* element=xDynamicCast<Element*>(object);
+				element->InputCreate(doublearray,inputs,this,M,N,vector_layout,input_enum,code);//we need i to index into elements.
+			}
+			break;
+		default:
+			_error_("data code " << code << " not supported yet (detected while processing \""<<vector_name<<"\")");
+			break;
+	}
+	/*Free resources:*/
+	xDelete<IssmDouble>(doublearray);
+}
+/*}}}*/
+void  IoModel::FetchDataToDatasetInput(Inputs* inputs,Elements* elements,const char* vector_name,int input_enum){/*{{{*/
+
+	/*First, look whether it is not already loaded in this->data*/
+	vector<IoData*>::iterator iter;
+	for(iter=data.begin();iter<data.end();iter++){
+		IoData* iodata=*iter;
+		if(strcmp(iodata->name,vector_name)==0){
+			for(Object* & object : elements->objects){
+				Element* element=xDynamicCast<Element*>(object);
+				_error_("to be implemented...");
+				//element->InputCreate(iodata->data,inputs,this,iodata->M,iodata->N,iodata->layout,input_enum,iodata->code);//we need i to index into elements.
+			}
+			return;
+		}
+	}
+
+	/*intermediary: */
+	int         code,vector_layout;
+	IssmDouble *doublearray = NULL;
+	int         M,N;
+
+	/*First of, find the record for the name, and get code  of data type: */
+	this->SetFilePointerToData(&code,&vector_layout,vector_name);
+
+	switch(code){
+		case 1: //boolean constant
+			_error_("not implemented yet");
+			break;
+		case 2: //integer constant
+			_error_("not implemented yet");
+			break;
+		case 3: //IssmDouble constant
+			_error_("not implemented yet");
+			break;
+		case 5: //boolean vector
+			_error_("not implemented yet");
+			break;
+		case 6: //int vector
+			_error_("not implemented yet");
+			break;
+		case 7: //IssmDouble vector
+			  {
+			this->FetchData(&doublearray,&M,&N,vector_name);
+			if(!doublearray) _error_("\""<<vector_name<<"\" not found in binary file");
+
+			int* ids = xNew<int>(N);
+			for(int i=0;i<N;i++) ids[i] = i;
+
+			for(Object* & object : elements->objects){
+				Element* element=xDynamicCast<Element*>(object);
+				element->DatasetInputCreate(doublearray,M,N,ids,N,inputs,this,input_enum);
+			}
+			xDelete<int>(ids);
+			  }
+			break;
+		case 10: //Compressed matrix
+			  {
+			this->FetchData(&doublearray,&M,&N,vector_name);
+			if(!doublearray) _error_("\""<<vector_name<<"\" not found in binary file");
+
+			int* ids = xNew<int>(N);
+			for(int i=0;i<N;i++) ids[i] = i;
+
+			for(Object* & object : elements->objects){
+				Element* element=xDynamicCast<Element*>(object);
+				element->DatasetInputCreate(doublearray,M,N,ids,N,inputs,this,input_enum);
+			}
+			xDelete<int>(ids);
+			  }
+			break;
+
+		default:
+			_error_("data code " << code << " not supported yet (detected while processing \""<<vector_name<<"\")");
+			break;
+	}
+	/*Free resources:*/
+	xDelete<IssmDouble>(doublearray);
+}
+/*}}}*/
+void  IoModel::FetchIndependentConstant(int* pXcount,IssmPDouble* X,const char* constant_name){/*{{{*/
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*recover Xcount if X is not NULL:*/
+	int Xcount = 0;
+	if(X) Xcount=*pXcount;
+
+	#ifdef _HAVE_AD_ //cannot come here unless you are running AD mode, from DeclaredIndependents:
+
+	/*output: */
+	IssmPDouble  pscalar;
+	IssmDouble   scalar; //same as pscalar, except it's an ADOLC independent variable
+	int          code;
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,NULL,constant_name);
+	if(code!=3) _error_("expecting a IssmDouble for \"" << constant_name<<"\"");
+
+	/*We have to read a scalar from disk. First read the dimensions of the scalar, then the scalar: */
+	if(my_rank==0){
+		if(fread(&pscalar,sizeof(IssmPDouble),1,fid)!=1)_error_("could not read scalar ");
+
+		/*Now, before we even broadcast this to other nodes, declare the scalar  as an independent variable!. If we
+		 *have been supplied an X vector, use it instead of what we just read: */
+		#if defined(_HAVE_CODIPACK_)
+			// FIXME codi here we just assign instead of using "operator <<="
+			if(X){
+				scalar=X[Xcount];
+			} else {
+				scalar=pscalar;
+			}
+			#if _CODIPACK_MAJOR_==2
+			auto& tape_codi = IssmDouble::getTape();
+			tape_codi.registerInput(scalar);
+			codi_global.input_indices.push_back(scalar.getIdentifier());
+			#elif _CODIPACK_MAJOR_==1
+			auto& tape_codi = IssmDouble::getGlobalTape();
+			tape_codi.registerInput(scalar);
+			codi_global.input_indices.push_back(scalar.getGradientData());
+			#else
+			#error "_CODIPACK_MAJOR_ not supported"
+			#endif
+
+		#else
+			if(X){
+				scalar<<=X[Xcount];
+			}
+			else{
+				scalar<<=pscalar;
+			}
+		#endif
+	}
+
+	ISSM_MPI_Bcast(&scalar,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	this->AddConstantIndependent(new IoConstant(scalar,constant_name));
+
+	/*increment offset into X vector, now that we have read 1 value:*/
+	Xcount++; *pXcount=Xcount;
+	#endif
+}
+/*}}}*/
+void  IoModel::FetchIndependentData(int* pXcount,IssmPDouble* X,const char* data_name){/*{{{*/
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*recover Xcount if X is not NULL:*/
+	int Xcount = 0;
+	if(X) Xcount=*pXcount;
+
+	#ifdef _HAVE_AD_ //cannot come here unless you are running AD mode, from DeclaredIndependents:
+
+	/*Intermediaries*/
+	int M,N;
+	IssmPDouble* buffer=NULL; //a buffer to read the data from disk
+	IssmDouble* matrix=NULL; //our independent variable
+	int code,layout;
+
+	/*Set file pointer to beginning of the data: */
+	fid=this->SetFilePointerToData(&code,&layout,data_name);
+	if((code!=5) && (code!=6) && (code!=7))_error_("expecting a IssmDouble, integer or boolean matrix for \"" << data_name<<"\"");
+
+	/*We have to read a matrix from disk. First read the dimensions of the matrix, then the whole matrix: */
+	/*numberofelements: */
+	if(my_rank==0){
+		if(fread(&M,sizeof(int),1,fid)!=1) _error_("could not read number of rows for matrix ");
+	}
+	ISSM_MPI_Bcast(&M,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	if(my_rank==0){
+		if(fread(&N,sizeof(int),1,fid)!=1) _error_("could not read number of columns for matrix ");
+	}
+	ISSM_MPI_Bcast(&N,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Now allocate matrix: */
+	if(M*N){
+		buffer=xNew<IssmPDouble>(M*N);
+// AD performance is sensitive to calls to ensurecontiguous.
+// Providing "t" will cause ensurecontiguous to be called.
+#ifdef _HAVE_AD_
+		matrix=xNew<IssmDouble>(M*N,"t");
+#else
+		matrix=xNew<IssmDouble>(M*N);
+#endif
+
+		/*Read matrix on node 0, then broadcast: */
+		if(my_rank==0){
+			if(fread(buffer,M*N*sizeof(IssmPDouble),1,fid)!=1) _error_("could not read matrix ");
+
+			/*Now, before we even broadcast this to other nodes, declare the whole matrix as a independent variable!
+			  If we have been supplied an X vector, use it instead of what we just read: */
+			#if defined(_HAVE_CODIPACK_)
+				// FIXME codi here we just assign instead of using "operator <<="
+				#if _CODIPACK_MAJOR_==2
+				auto& tape_codi = IssmDouble::getTape();
+				#elif _CODIPACK_MAJOR_==1
+				auto& tape_codi = IssmDouble::getGlobalTape();
+				#else
+				#error "_CODIPACK_MAJOR_ not supported"
+				#endif
+
+				if(X){
+					for (int i=0;i<M*N;i++) {
+						matrix[i]=X[Xcount+i];
+						tape_codi.registerInput(matrix[i]);
+						#if _CODIPACK_MAJOR_==2
+						codi_global.input_indices.push_back(matrix[i].getIdentifier());
+						#elif _CODIPACK_MAJOR_==1
+						codi_global.input_indices.push_back(matrix[i].getGradientData());
+						#else
+						#error "_CODIPACK_MAJOR_ not supported"
+						#endif
+
+					}
+				}
+				else{
+					for (int i=0;i<M*N;i++) {
+						matrix[i]=buffer[i];
+						tape_codi.registerInput(matrix[i]);
+						#if _CODIPACK_MAJOR_==2
+						codi_global.input_indices.push_back(matrix[i].getIdentifier());
+						#elif _CODIPACK_MAJOR_==1
+						codi_global.input_indices.push_back(matrix[i].getGradientData());
+						#else
+						#error "_CODIPACK_MAJOR_ not supported"
+						#endif
+					}
+				}
+			#else /*ADOLC*/
+				if(X){
+					for(int i=0;i<M*N;i++) matrix[i]<<=X[Xcount+i];  /*<<= ADOLC overloaded operator to declare independent*/
+				}
+				else{
+					for(int i=0;i<M*N;i++) matrix[i]<<=buffer[i];
+				}
+			#endif
+		}
+		ISSM_MPI_Bcast(matrix,M*N,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+		xDelete<IssmPDouble>(buffer);
+	}
+	else _error_("cannot declare the independent variable \"" << data_name <<  "\" if it's empty!");
+
+	// FIXME codi is that at all relevant to CoDiPack or can we simply assume the same?
+
+	/*Add to data as independent*/
+	this->AddDataIndependent(new IoData(matrix,code,layout,M,N,data_name));
+
+	/*increment offset into X vector, now that we have read M*N values:*/
+	Xcount+=M*N; *pXcount=Xcount;
+	#endif
+}
+/*}}}*/
+void  IoModel::FetchMultipleData(char*** pstrings,int* pnumstrings,const char* data_name){/*{{{*/
+
+	int  num_instances;
+
+	/*output: */
+	int    numstrings = 0;
+	char **strings    = NULL;
+
+	/*intermediary: */
+	char   *string         = NULL;
+	int     string_size;
+	int    *codes          = NULL;
+	int    *code           = NULL;
+	fpos_t *file_positions = NULL;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Get file pointers to beginning of the data (multiple instances of it): */
+	file_positions=this->SetFilePointersToData(&codes,NULL,&num_instances,data_name);
+
+	if(num_instances){
+		strings=xNew<char*>(num_instances);
+
+		for(int i=0;i<num_instances;i++){
+
+			if(my_rank==0){
+				/*check we are indeed finding a string, not something else: */
+				if(codes[i]!=4)_error_("expecting a string for \""<<data_name<<"\" but code is "<<codes[i]<<" not 4");
+
+				/*We have to read a string from disk. First read the dimensions of the string, then the string: */
+				fsetpos(fid,file_positions+i);
+				if(fread(&string_size,sizeof(int),1,fid)!=1) _error_("could not read length of string ");
+			}
+
+			ISSM_MPI_Bcast(&string_size,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+			/*Now allocate string: */
+			if(string_size){
+				string=xNew<char>((string_size+1));
+				string[string_size]='\0';
+
+				/*Read string on node 0, then broadcast: */
+				if(my_rank==0){
+					if(fread(string,string_size*sizeof(char),1,fid)!=1)_error_(" could not read string ");
+				}
+				ISSM_MPI_Bcast(string,string_size,ISSM_MPI_CHAR,0,IssmComm::GetComm());
+			}
+			else{
+				string=xNew<char>(1);
+				string[0]='\0';
+			}
+			strings[i]=string;
+		}
+	}
+	/*Free resources:*/
+	xDelete<int>(codes);
+	xDelete<fpos_t>(file_positions);
+
+	/*Assign output pointers: */
+	*pstrings=strings;
+	if(pnumstrings) *pnumstrings=num_instances;
+}
+/*}}}*/
+void  IoModel::FetchMultipleData(int** pvector, int* pnum_instances,const char* data_name){/*{{{*/
+
+	int     num_instances;
+	fpos_t* file_positions=NULL;
+
+	/*output: */
+	int* vector=NULL;
+
+	/*intermediary: */
+	int  integer;
+	int *codes   = NULL;
+	int  code;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Get file pointers to beginning of the data (multiple instances of it): */
+	file_positions=this->SetFilePointersToData(&codes,NULL,&num_instances,data_name);
+
+	if(num_instances){
+
+		/*Allocate vector :*/
+		vector=xNew<int>(num_instances);
+
+		for(int i=0;i<num_instances;i++){
+
+			if(my_rank==0){
+				code=codes[i];
+
+				if(code!=2)_error_("expecting an integer for \""<<data_name<<"\"");
+
+				/*We have to read a integer from disk. First read the dimensions of the integer, then the integer: */
+				fsetpos(fid,file_positions+i);
+				if(my_rank==0){
+					if(fread(&integer,sizeof(int),1,fid)!=1) _error_("could not read integer ");
+				}
+			}
+			ISSM_MPI_Bcast(&integer,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+			/*Assign: */
+			vector[i]=integer;
+		}
+	}
+
+	/*Free resources:*/
+	xDelete<fpos_t>(file_positions);
+	xDelete<int>(codes);
+
+	/*Assign output pointers: */
+	*pvector=vector;
+	if(pnum_instances) *pnum_instances=num_instances;
+}
+/*}}}*/
+void  IoModel::FetchMultipleData(IssmDouble** pvector, int* pnum_instances,const char* data_name){/*{{{*/
+
+	int     num_instances;
+	fpos_t* file_positions=NULL;
+
+	/*output: */
+	IssmDouble* vector=NULL;
+
+	/*intermediary: */
+	IssmPDouble          scalar;
+	int         *codes   = NULL;
+	int          code;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Get file pointers to beginning of the data (multiple instances of it): */
+	file_positions=this->SetFilePointersToData(&codes,NULL,&num_instances,data_name);
+
+	if(num_instances){
+
+		/*Allocate vector :*/
+		vector=xNew<IssmDouble>(num_instances);
+
+		for(int i=0;i<num_instances;i++){
+
+			if(my_rank==0){
+				code=codes[i];
+
+				if(code!=3)_error_("expecting a double for \""<<data_name<<"\"");
+
+				/*We have to read a double from disk: */
+				fsetpos(fid,file_positions+i);
+				if(my_rank==0){
+					if(fread(&scalar,sizeof(IssmPDouble),1,fid)!=1) _error_("could not read scalar ");
+				}
+			}
+			ISSM_MPI_Bcast(&scalar,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+
+			/*Assign: */
+			vector[i]=scalar;
+		}
+	}
+
+	/*Free resources:*/
+	xDelete<fpos_t>(file_positions);
+	xDelete<int>(codes);
+
+	/*Assign output pointers: */
+	*pvector=vector;
+	*pnum_instances=num_instances;
+}
+/*}}}*/
+void  IoModel::FetchMultipleData(IssmDouble*** pmatrices,int** pmdims,int** pndims, int* pnumrecords,const char* data_name){/*{{{*/
+
+	int     num_instances;
+	fpos_t* file_positions=NULL;
+
+	/*output: */
+	IssmDouble **matrices = NULL;
+	int         *mdims    = NULL;
+	int         *ndims    = NULL;
+
+	/*intermediary: */
+	int          M, N;
+	IssmPDouble *pmatrix = NULL;
+	IssmDouble  *matrix  = NULL;
+	int         *codes   = NULL;
+	int          code;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Get file pointers to beginning of the data (multiple instances of it): */
+	file_positions=this->SetFilePointersToData(&codes,NULL,&num_instances,data_name);
+
+	if(num_instances){
+
+		/*Allocate matrices :*/
+		matrices=xNew<IssmDouble*>(num_instances);
+		mdims=xNew<int>(num_instances);
+		ndims=xNew<int>(num_instances);
+
+		for(int i=0;i<num_instances;i++){
+
+			if(my_rank==0){
+				code=codes[i];
+
+				if((code!=5) && (code!=6) && (code!=7))_error_("expecting a IssmDouble, integer or boolean matrix for \""<<data_name<<"\"");
+
+				/*We have to read a matrix from disk. First read the dimensions of the matrix, then the whole matrix: */
+				/*numberofelements: */
+				fsetpos(fid,file_positions+i);
+				if(fread(&M,sizeof(int),1,fid)!=1) _error_("could not read number of rows for matrix ");
+			}
+			ISSM_MPI_Bcast(&M,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+			if(my_rank==0){
+				if(fread(&N,sizeof(int),1,fid)!=1) _error_("could not read number of columns for matrix ");
+			}
+			ISSM_MPI_Bcast(&N,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+			/*Now allocate matrix: */
+			if(M*N){
+				pmatrix=xNew<IssmPDouble>(M*N);
+
+				/*Read matrix on node 0, then broadcast: */
+				if(my_rank==0){
+					if(fread(pmatrix,M*N*sizeof(IssmPDouble),1,fid)!=1) _error_("could not read matrix ");
+				}
+				ISSM_MPI_Bcast(pmatrix,M*N,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+
+				//if(this->independents[data_enum]){ FIXME
+				//	/*this data has already been checked out! So cancel all that we've done here, and return
+				//	 * the data[data_enum] directly: */
+				//	matrix=this->data[data_enum];
+				//}
+				//else{
+					matrix=xNew<IssmDouble>(M*N);
+					for (int i=0;i<M*N;++i) matrix[i]=pmatrix[i];
+				//}
+				xDelete<IssmPDouble>(pmatrix);
+			}
+			else
+				matrix=NULL;
+
+			/*Assign: */
+			mdims[i]=M;
+			matrices[i]=matrix;
+			ndims[i]=N;
+		}
+	}
+
+	/*Free resources:*/
+	xDelete<fpos_t>(file_positions);
+	xDelete<int>(codes);
+
+	/*Assign output pointers: */
+	*pmatrices=matrices;
+	if(pmdims){
+		*pmdims=mdims;
+	}
+	else{
+		xDelete<int>(mdims);
+	}
+	if(pndims){
+		*pndims=ndims;
+	}
+	else{
+		xDelete<int>(ndims);
+	}
+	if(pnumrecords){
+		*pnumrecords=num_instances;
+	}
+}
+/*}}}*/
+void  IoModel::FetchMultipleData(int*** pmatrices,int** pmdims,int** pndims, int* pnumrecords,const char* data_name){/*{{{*/
+
+	int     num_instances;
+	fpos_t* file_positions=NULL;
+
+	/*output: */
+	int        **matrices = NULL;
+	int         *mdims    = NULL;
+	int         *ndims    = NULL;
+
+	/*intermediary: */
+	int          M, N;
+	IssmPDouble *pmatrix = NULL;
+	IssmDouble  *matrix  = NULL;
+	int         *integer_matrix=NULL;
+	int         *codes   = NULL;
+	int          code;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Get file pointers to beginning of the data (multiple instances of it): */
+	file_positions=this->SetFilePointersToData(&codes,NULL,&num_instances,data_name);
+
+	if(num_instances){
+
+		/*Allocate matrices :*/
+		matrices=xNew<int*>(num_instances);
+		mdims=xNew<int>(num_instances);
+		ndims=xNew<int>(num_instances);
+
+		for(int i=0;i<num_instances;i++){
+
+			if(my_rank==0){
+				code=codes[i];
+
+				if((code!=5) && (code!=6) && (code!=7))_error_("expecting a IssmDouble, integer or boolean matrix for \""<<data_name<<"\"");
+
+				/*We have to read a matrix from disk. First read the dimensions of the matrix, then the whole matrix: */
+				/*numberofelements: */
+				fsetpos(fid,file_positions+i);
+				if(fread(&M,sizeof(int),1,fid)!=1) _error_("could not read number of rows for matrix ");
+			}
+			ISSM_MPI_Bcast(&M,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+			if(my_rank==0){
+				if(fread(&N,sizeof(int),1,fid)!=1) _error_("could not read number of columns for matrix ");
+			}
+			ISSM_MPI_Bcast(&N,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+			/*Now allocate matrix: */
+			if(M*N){
+				pmatrix=xNew<IssmPDouble>(M*N);
+				integer_matrix=xNew<int>(M*N);
+
+				/*Read matrix on node 0, then broadcast: */
+				if(my_rank==0){
+					if(fread(pmatrix,M*N*sizeof(IssmPDouble),1,fid)!=1) _error_("could not read matrix ");
+				}
+				ISSM_MPI_Bcast(pmatrix,M*N,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+
+				//if(this->independents[data_enum]){ FIXME
+				//	/*this data has already been checked out! So cancel all that we've done here, and return
+				//	 * the data[data_enum] directly: */
+				//	matrix=this->data[data_enum];
+				//	for (int i=0;i<M*N;++i) integer_matrix[i]=reCast<int>(matrix[i]);
+				//}
+				//else{
+					for (int i=0;i<M*N;++i) integer_matrix[i]=pmatrix[i];
+				//}
+				xDelete<IssmPDouble>(pmatrix);
+			}
+			else
+				integer_matrix=NULL;
+
+			/*Assign: */
+			mdims[i]=M;
+			matrices[i]=integer_matrix;
+			ndims[i]=N;
+		}
+	}
+
+	/*Free resources:*/
+	xDelete<fpos_t>(file_positions);
+	xDelete<int>(codes);
+
+	/*Assign output pointers: */
+	*pmatrices=matrices;
+	if(pmdims){
+		*pmdims=mdims;
+	}
+	else{
+		xDelete<int>(mdims);
+	}
+	if(pndims){
+		*pndims=ndims;
+	}
+	else{
+		xDelete<int>(ndims);
+	}
+	*pnumrecords=num_instances;
+}
+/*}}}*/
+void  IoModel::FillIndependents(IssmDouble* xp){/*{{{*/
+
+	_assert_(xp);
+
+	/*Initialize local num ind*/
+	int local_num_ind = 0;
+
+	/*Process constants*/
+	for(vector<IoConstant*>::iterator iter=constants.begin();iter<constants.end();iter++){
+		if((*iter)->isindependent){
+			(*iter)->constant->GetParameterValue(&xp[local_num_ind]);
+			local_num_ind += 1;
+		}
+	}
+
+	/*Process data*/
+	for(vector<IoData*>::iterator iter=data.begin();iter<data.end();iter++){
+		if((*iter)->isindependent){
+			for(int i=0;i<(*iter)->M*(*iter)->N;i++){
+				xp[local_num_ind+i] = (*iter)->data[i];
+			}
+			local_num_ind += (*iter)->M*(*iter)->N;
+		}
+	}
+
+	_assert_(local_num_ind == this->NumIndependents());
+}
+/*}}}*/
+void  IoModel::FindConstant(bool* pvalue,const char* constant_name){/*{{{*/
+
+	/*Intermediary*/
+	vector<IoConstant*>::iterator iter;
+
+	for(iter=constants.begin();iter<constants.end();iter++){
+		IoConstant* ioconstant=*iter;
+
+		if(strcmp(ioconstant->name,constant_name)==0){
+			ioconstant->constant->GetParameterValue(pvalue);
+			return;
+		}
+	}
+
+	for(vector<IoConstant*>::iterator iter=constants.begin();iter<constants.end();iter++) (*iter)->constant->Echo();
+	_error_("Could not find constant \""<<constant_name<<"\"");
+}
+/*}}}*/
+void  IoModel::FindConstant(int* pvalue,const char* constant_name){/*{{{*/
+
+	/*Intermediary*/
+	vector<IoConstant*>::iterator iter;
+
+	for(iter=constants.begin();iter<constants.end();iter++){
+		IoConstant* ioconstant=*iter;
+
+		if(strcmp(ioconstant->name,constant_name)==0){
+			ioconstant->constant->GetParameterValue(pvalue);
+			return;
+		}
+	}
+
+	_error_("Could not find constant \""<<constant_name <<"\"");
+}
+/*}}}*/
+void  IoModel::FindConstant(IssmDouble* pvalue,const char* constant_name){/*{{{*/
+
+	/*Intermediary*/
+	vector<IoConstant*>::iterator iter;
+
+	for(iter=constants.begin();iter<constants.end();iter++){
+		IoConstant* ioconstant=*iter;
+
+		if(strcmp(ioconstant->name,constant_name)==0){
+			ioconstant->constant->GetParameterValue(pvalue);
+			return;
+		}
+	}
+
+	_error_("Could not find constant \""<<constant_name <<"\"");
+}
+/*}}}*/
+void  IoModel::FindConstant(char** pvalue,const char* constant_name){/*{{{*/
+
+	/*Intermediary*/
+	vector<IoConstant*>::iterator iter;
+
+	for(iter=constants.begin();iter<constants.end();iter++){
+		IoConstant* ioconstant=*iter;
+
+		if(strcmp(ioconstant->name,constant_name)==0){
+			ioconstant->constant->GetParameterValue(pvalue);
+			return;
+		}
+	}
+
+	_error_("Could not find constant \""<<constant_name <<"\"");
+}
+/*}}}*/
+void  IoModel::FindConstant(char*** pvalue,int* psize,const char* constant_name){/*{{{*/
+
+	/*Intermediary*/
+	vector<IoConstant*>::iterator iter;
+
+	for(iter=constants.begin();iter<constants.end();iter++){
+		IoConstant* ioconstant=*iter;
+
+		if(strcmp(ioconstant->name,constant_name)==0){
+			ioconstant->constant->GetParameterValue(pvalue,psize);
+			return;
+		}
+	}
+
+	_error_("Could not find constant \""<<constant_name <<"\"");
+}
+/*}}}*/
+int   IoModel::NumIndependents(void){/*{{{*/
+
+	/*Initialize output*/
+	int num_independents = 0;
+
+	/*Process constants*/
+	for(vector<IoConstant*>::iterator iter=constants.begin();iter<constants.end();iter++){
+		if((*iter)->isindependent){
+			num_independents+= 1;
+		}
+	}
+
+	/*Process data*/
+	for(vector<IoData*>::iterator iter=data.begin();iter<data.end();iter++){
+		if((*iter)->isindependent){
+			num_independents+= (*iter)->M*(*iter)->N;
+		}
+	}
+
+	/*return*/
+	return num_independents;
+}
+/*}}}*/
+fpos_t* IoModel::SetFilePointersToData(int** pcodes,int** pvector_types, int* pnum_instances,const char* data_name){/*{{{*/
+
+	int     found          = 0;
+	const char* mddot = "md.";
+	char* record_name = NULL;
+	int   record_name_size;
+	long long  record_length;
+	int     record_code;           //1 to 7 number
+	int     vector_type;           //1 to 7 number
+	int    *vector_types   = NULL;
+	int    *codes          = NULL;
+	int     num_instances  = 0;
+	int     counter;
+	fpos_t *file_positions = NULL;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+	_assert_(strncmp(data_name,mddot,3)==0);
+
+	/*Go find in the binary file, the data we want to fetch and count the number of
+	 * instances it appears: */
+	if(my_rank==0){
+
+		/*First set FILE* position to the beginning of the file: */
+		fseek(fid,0,SEEK_SET);
+
+		/*Now march through file looking for the correct data identifier: */
+		for(;;){
+			/*Read size of first string name: */
+			if(fread(&record_name_size,sizeof(int),1,fid)==0){
+				/*we have reached the end of the file. break: */
+				xDelete<char>(record_name);
+				break;
+			}
+			if(record_name_size<3 || record_name_size>80){
+				_error_("error while looking in binary file. Found a string of size "<<record_name_size);
+			}
+
+			/*Allocate string of correct size: */
+			record_name=xNew<char>(record_name_size+1);
+			record_name[record_name_size]='\0';
+
+			/*Read record_name: */
+			if(fread(record_name,record_name_size*sizeof(char),1,fid)==0){
+				break;
+			}
+			if(strncmp(record_name,mddot,3)!=0){
+				_error_("error while reading binary file: record does not start with \"md.\": "<<record_name);
+			}
+
+			/*Is this the record sought for? : */
+			if(strcmp(record_name,data_name)==0) num_instances++;
+
+			/*Read the record length, and use it to skip the record: */
+			if(fread(&record_length,sizeof(long long),1,fid)!=1) _error_("Could not read record_length");
+			fseek(fid,record_length,SEEK_CUR);
+			xDelete<char>(record_name);
+		}
+
+		/*Ok, initialize the number of file handles we are going to return: */
+		if(num_instances){
+			file_positions = xNew<fpos_t>(num_instances);
+			codes          = xNew<int>(num_instances);
+			vector_types   = xNew<int>(num_instances);
+		}
+
+		/*Reset FILE* position to the beginning of the file, and start again, this time saving the data information
+		 * as we find it: */
+		counter=0;
+		fseek(fid,0,SEEK_SET);
+
+		for(;;){
+			/*Read size of first string name: */
+			if(fread(&record_name_size,sizeof(int),1,fid)==0){
+				/*we have reached the end of the file. break: */
+				break;
+			}
+			if(record_name_size<3 || record_name_size>80){
+				_error_("error while looking in binary file. Found a string of size "<<record_name_size);
+			}
+
+			/*Allocate string of correct size: */
+			record_name=xNew<char>(record_name_size+1);
+			record_name[record_name_size]='\0';
+
+			/*Read record_name: */
+			if(fread(record_name,record_name_size*sizeof(char),1,fid)==0){
+				/*we have reached the end of the file. break: */
+				xDelete<char>(record_name);
+				break;
+			}
+			if(strncmp(record_name,mddot,3)!=0){
+				_error_("error while reading binary file: record does not start with \"md.\": "<<record_name);
+			}
+
+			/*Is this the record sought for? : */
+			if(strcmp(record_name,data_name)==0){
+				/*Ok, we have found the correct string. Pass the record length, and read data type code: */
+				fseek(fid,sizeof(long long),SEEK_CUR);
+				if(fread(&record_code,sizeof(int),1,fid)!=1) _error_("Could not read record_code");
+
+				/*if record_code points to a vector, get its type (nodal or elementary): */
+				if(5<=record_code && record_code<=7){
+					if(fread(&vector_type,sizeof(int),1,fid)!=1) _error_("Could not read vector_type");
+				}
+				codes[counter]        = record_code;
+				vector_types[counter] = vector_type;
+				fgetpos(fid,file_positions+counter);
+
+				/*backup and skip over the record, as we have more work to do: */
+				if(5<=record_code && record_code<=7) fseek(fid,-sizeof(int),SEEK_CUR); /*rewind for nodal or elementary type*/
+				fseek(fid,-sizeof(int),SEEK_CUR);/*rewind for data code*/
+				fseek(fid,-sizeof(long long),SEEK_CUR);/*rewind for record length*/
+
+				/*increment counter: */
+				counter++;
+			}
+
+			/*Read the record length, and use it to skip this record, as it has already been processed: */
+			if(fread(&record_length,sizeof(long long),1,fid)!=1) _error_("Could not read record_length");
+			/*skip: */
+			fseek(fid,record_length,SEEK_CUR);
+			xDelete<char>(record_name);
+		}
+	}
+
+	/*Broadcast data: */
+	ISSM_MPI_Bcast(&num_instances,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Assign output pointers:*/
+	*pcodes         = codes;
+	*pnum_instances = num_instances;
+	if(pvector_types){
+		*pvector_types=vector_types;
+	}
+	else{
+		xDelete<int>(vector_types);
+	}
+	return file_positions;
+}
+/*}}}*/
+FILE* IoModel::SetFilePointerToData(int* pcode,int* pvector_type,const char* data_name){/*{{{*/
+
+	int my_rank;
+
+	int found  = 0;
+	const char* mddot = "md.";
+	char* record_name = NULL;
+	int   record_name_size;
+	long long record_length;
+	int record_code;       //1 to 7 number
+	int vector_type   = 0; //nodal or elementary
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+	if(strncmp(data_name,mddot,3)!=0){
+		_error_("Cannot fetch \""<<data_name<<"\" does not start with \""<<mddot<<"\"");
+	}
+
+	/*Go find in the binary file, the position of the data we want to fetch: */
+	if(my_rank==0){
+
+		/*First set FILE* position to the beginning of the file: */
+		_assert_(fid);
+		fseek(fid,0,SEEK_SET);
+
+		/*Now march through file looking for the correct data identifier: */
+		for(;;){
+			/*Read size of first string name: */
+			if(fread(&record_name_size,sizeof(int),1,fid)==0){
+				/*we have reached the end of the file. break: */
+				xDelete<char>(record_name);
+				break;
+			}
+			if(record_name_size<3 || record_name_size>80){
+				_error_("error while looking in binary file. Found a string of size "<<record_name_size);
+			}
+
+			/*Allocate string of correct size: */
+			record_name=xNew<char>(record_name_size+1);
+			record_name[record_name_size]='\0';
+
+			/*Read record_name: */
+			if(fread(record_name,record_name_size*sizeof(char),1,fid)==0){
+				/*we have reached the end of the file. break: */
+				found=0;
+				xDelete<char>(record_name);
+				break;
+			}
+			if(strncmp(record_name,mddot,3)!=0){
+				_error_("error while reading binary file: record does not start with \"md.\": "<<record_name);
+			}
+
+			/*Is this the record sought for? : */
+			if(strcmp(record_name,data_name)==0){
+				/*Ok, we have found the correct string. Pass the record length, and read data type code: */
+				fseek(fid,sizeof(long long),SEEK_CUR);
+				if(fread(&record_code,sizeof(int),1,fid)!=1) _error_("Could not read record_code");
+				/*if record_code points to a vector, get its type (nodal or elementary): */
+				if((5<=record_code && record_code<=7) || record_code==10){
+					if(fread(&vector_type,sizeof(int),1,fid)!=1) _error_("Could not read vector_type");
+				}
+				found=1;
+				xDelete<char>(record_name);
+				break;
+			}
+			else{
+				/*This is not the correct string, read the record length, and use it to skip this record: */
+				if(fread(&record_length,sizeof(long long),1,fid)!=1) _error_("Could not read record_length");
+				/*skip: */
+				fseek(fid,record_length,SEEK_CUR);
+				xDelete<char>(record_name);
+			}
+		}
+	}
+	ISSM_MPI_Bcast(&found,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	if(!found) _error_("could not find data with name \"" << data_name << "\" in binary file");
+
+	/*Broadcast code and vector type: */
+	ISSM_MPI_Bcast(&record_code,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	ISSM_MPI_Bcast(&vector_type,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Assign output pointers:*/
+	*pcode=record_code;
+	if(pvector_type)*pvector_type=vector_type;
+
+	return fid;
+}
+/*}}}*/
+void  IoModel::StartTrace(bool trace){/*{{{*/
+
+	bool autodiff = false;
+	bool iscontrol = false;
+	bool keep=false;
+	IssmDouble gcTriggerRatio;
+	IssmDouble gcTriggerMaxSize;
+	IssmDouble obufsize;
+	IssmDouble lbufsize;
+	IssmDouble cbufsize;
+	IssmDouble tbufsize;
+
+	int my_rank=IssmComm::GetRank();
+
+	this->FetchData(&autodiff,"md.autodiff.isautodiff");
+	this->FetchData(&iscontrol,"md.inversion.iscontrol");
+
+	if(trace || (autodiff && !iscontrol)){
+
+		#if defined(_HAVE_ADOLC_)
+		/*Retrieve parameters: */
+		this->FetchData(&keep,"md.autodiff.keep");
+		int keepTaylors=keep?1:0;
+		this->FetchData(&gcTriggerRatio,"md.autodiff.gcTriggerRatio");
+		this->FetchData(&gcTriggerMaxSize,"md.autodiff.gcTriggerMaxSize");
+		this->FetchData(&obufsize,"md.autodiff.obufsize");
+		this->FetchData(&lbufsize,"md.autodiff.lbufsize");
+		this->FetchData(&cbufsize,"md.autodiff.cbufsize");
+		this->FetchData(&tbufsize,"md.autodiff.tbufsize");
+
+		/*Set garbage collection parameters: */
+		setStoreManagerControl(reCast<IssmPDouble>(gcTriggerRatio),reCast<size_t>(gcTriggerMaxSize));
+
+		/*Start trace: */
+		int skipFileDeletion=1;
+		trace_on(my_rank,keepTaylors,reCast<size_t>(obufsize),reCast<size_t>(lbufsize),reCast<size_t>(cbufsize),reCast<size_t>(tbufsize),skipFileDeletion);
+
+		#elif defined(_HAVE_CODIPACK_)
+		//fprintf(stderr, "*** Codipack IoModel::StartTrace\n");
+		/*
+		 * FIXME codi
+		 * - ADOL-C variant uses fine grained tracing with various arguments
+		 * - ADOL-C variant sets a garbage collection parameter for its tape
+		 * -> These parameters are not read for the CoDiPack ISSM version!
+		 */
+		#if _CODIPACK_MAJOR_==2
+		auto& tape_codi = IssmDouble::getTape();
+		#elif _CODIPACK_MAJOR_==1
+		auto& tape_codi = IssmDouble::getGlobalTape();
+		#else
+		#error "_CODIPACK_MAJOR_ not supported"
+		#endif
+
+		tape_codi.setActive();
+		#if _AD_TAPE_ALLOC_
+		//alloc_profiler.Tag(StartInit, true);
+		IssmDouble x_t(1.0), y_t(1.0);
+		tape_codi.registerInput(y_t);
+		int codi_allocn = 0;
+		this->FetchData(&codi_allocn,"md.autodiff.tapeAlloc");
+		for(int i = 0;i < codi_allocn;++i) {
+			x_t = y_t * y_t;
+		}
+		/*
+		std::stringstream out_s;
+		IssmDouble::getTape().printStatistics(out_s);
+		_printf0_("StartTrace::Tape Statistics	   : TapeAlloc count=[" << codi_allocn << "]\n" << out_s.str());
+		*/
+		tape_codi.reset();
+		//alloc_profiler.Tag(FinishInit, true);
+		#endif
+		#endif
+	}
+
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/IoModel.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/IoModel.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/IoModel.h	(revision 27955)
@@ -0,0 +1,162 @@
+/* \file IoModel.h
+ * \brief  Header file defining the IoModel structure that will help in processing the input data coming 
+ * into ISSM, from Matlab, or through a binary file opened for reading.
+ * \sa IoModel.cpp
+ */
+
+#ifndef _IOMODEL_H
+#define _IOMODEL_H
+
+#include "../shared/Enum/Enum.h"
+#include <vector>
+
+class Parameters;
+class Elements;
+class Inputs;
+class Param;
+class Options;
+
+class IoConstant { /*holds single IssmDouble, int, bool and char from input*/
+	public:
+		Param* constant; 
+		bool   isindependent;
+		char*  name;
+
+		~IoConstant();
+		IoConstant();
+		IoConstant(bool value,const char* name_in);
+		IoConstant(int value,const char* name_in);
+		IoConstant(IssmDouble value,const char* name_in);
+		IoConstant(char* value,const char* name_in);
+		IoConstant(char** value,int numstrings,const char* name_in);
+};
+
+class IoData { /*holds temporary data (array), memory intensive*/
+	public:
+		int         code;
+		IssmDouble* data;
+		bool        isindependent;
+		int         layout;
+		int         M,N;
+		char*       name;
+
+		~IoData();
+		IoData();
+		IoData(IssmDouble* matrix,int code,int layout_in,int M,int N,const char* name_in);
+};
+
+class IoModel {
+
+	private: 
+		std::vector<IoConstant*> constants; //this dataset holds all IssmDouble, int, bool and char from input
+		std::vector<IoData*>     data;      //this dataset holds temporary data, memory intensive
+
+		/*for AD mode: to keep track of our independent variables we fetch:*/
+		//bool    *independents;
+		//DataSet *independent_objects;
+
+	public:
+		/*pointer to input file*/
+		FILE *fid;
+
+		/*Solution*/
+		int   solution_enum;
+
+		/*Partitioning*/
+		bool *my_elements;
+		bool *my_faces;
+		bool *my_vfaces;
+		bool *my_edges;
+		bool *my_vedges;
+		bool *my_hedges;
+		bool *my_vertices;
+		int  *my_vertices_lids;
+		int  *epart;
+
+		/*Mesh properties and connectivity tables*/
+		int  domaindim;
+		int  domaintype;
+		int *elements;
+		int *edges;
+		int *verticaledges;
+		int *horizontaledges;
+		int *elementtoedgeconnectivity;
+		int *elementtoverticaledgeconnectivity;
+		int *elementtohorizontaledgeconnectivity;
+		int *elementtofaceconnectivity;
+		int *elementtoverticalfaceconnectivity;
+		int *faces;
+		int *verticalfaces;
+		int  facescols;
+		int  meshelementtype;
+		int *numbernodetoelementconnectivity;
+		int  numberofedges;
+		int  numberofverticaledges;
+		int  numberofhorizontaledges;
+		int  numberofelements;
+		int  numberoffaces;
+		int  numberofverticalfaces;
+		int  numberofvertices;
+		int *singlenodetoelementconnectivity;
+
+		/*Methods*/
+		~IoModel();
+		IoModel();
+		IoModel(FILE* iomodel_handle,int solution_enum_in,bool trace,IssmPDouble* X);
+
+		/*NEW*/
+		void        AddConstant(IoConstant* constant_in);
+		void        AddConstantIndependent(IoConstant* constant_in);
+		void        AddData(IoData* data_in);
+		void        AddDataIndependent(IoData* data_in);
+		void        FetchIndependentConstant(int* pXcount,IssmPDouble* X,const char* name);
+		void        FetchIndependentData(int* pXcount,IssmPDouble* X,const char* name);
+		void        FillIndependents(IssmDouble* xp);
+		void        FindConstant(bool* pvalue,const char* constant_name);
+		void        FindConstant(int* pvalue,const char* constant_name);
+		void        FindConstant(IssmDouble* pvalue,const char* constant_name);
+		void        FindConstant(char **pvalue,const char* constant_name);
+		void        FindConstant(char ***pvalue,int* psize,const char* constant_name);
+		int         NumIndependents();
+
+		/*Input/Output*/
+		void        CheckFile(void);
+		Param      *CopyConstantObject(const char* constant_name,int param_enum);
+		void        ConstantToInput(Inputs* inputs,Elements* elements,IssmDouble value, int vector_enum,int type);
+		IssmDouble *Data(const char* data_name);
+		void        DeclareIndependents(bool trace,IssmPDouble* X);
+		void        DeleteData(int num,...);
+		void        DeleteData(IssmDouble* vector,const char* data_name);
+		void        DeleteData(char*** pstringarray, int numstrings,const char* data_name);
+		void        FetchConstants(void);
+		void        FetchData(bool* pboolean,const char* data_name);
+		void        FetchData(int* pinteger,const char* data_name);
+		void        FetchData(IssmDouble* pscalar,const char* data_name);
+		void        FetchData(IssmDouble** pscalar, const char* data_name);	
+		void        FetchData(char** pstring,const char* data_name);
+		void        FetchData(char*** pstrings,int* pnumstrings,const char* data_name);
+		void        FetchData(int** pmatrix,int* pM,int* pN,const char* data_name);
+		void        FetchData(bool**  pboolmatrix,int* pM,int* pN,const char* data_name);
+		void        FetchData(IssmDouble**  pscalarmatrix,int* pM,int* pN,const char* data_name);
+#if _HAVE_AD_  && !defined(_WRAPPERS_)
+		void        FetchData(IssmPDouble**  pscalarmatrix,int* pM,int* pN,const char* data_name);
+		void        FetchData(IssmPDouble** pscalar,const char* data_name);
+#endif
+		void        FetchData(IssmDouble*** pmatrixarray,int** pmdims,int** pndims, int* pnumrecords,const char* data_name);
+		void        FetchData(Options *options,const char* data_name);
+		void        FetchData(int num,...);
+		void        FetchDataToInput(Inputs* inputs,Elements* elements,const char* vector_name,int input_enum);
+		void        FetchDataToInput(Inputs* inputs,Elements* elements,const char* vector_name,int input_enum,IssmDouble default_value);
+		void        FetchDataToDatasetInput(Inputs* inputs,Elements* elements,const char* vector_name,int input_enum);
+		void        FetchIndependent(const char* dependent_name);
+		void        FetchMultipleData(char***   pstringarray,int* pnumstrings,const char* data_name);
+		void        FetchMultipleData(IssmDouble*** pmatrixarray,int** pmdims,int** pndims, int* pnumrecords,const char* data_name);
+		void        FetchMultipleData(int*** pmatrices,int** pmdims,int** pndims, int* pnumrecords,const char* data_name);
+		void        FetchMultipleData(int** pvector, int* pnum_instances,const char* data_name);
+		void        FetchMultipleData(IssmDouble** pvector, int* pM,const char* data_name);
+		fpos_t*     SetFilePointersToData(int** pcodes,int** pvector_types, int* pnum_instances, const char* data_name);
+		FILE*       SetFilePointerToData(int* pcode,int* pvector_type, const char* data_name);
+		void        StartTrace(bool trace);
+};
+
+#endif  /* _IOMODEL_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Channel.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Channel.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Channel.cpp	(revision 27955)
@@ -0,0 +1,815 @@
+/*!\file Channel.c
+ * \brief: implementation of the Channel object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "shared/shared.h"
+#include "../classes.h"
+/*}}}*/	
+
+/*Macros*/
+#define NUMNODES    2
+#define NUMVERTICES 2
+
+#define C_W         4.22e3   /*specific heat capacity of water (J/kg/K)*/
+#define AEPS        2.2204460492503131E-015
+
+/*Channel constructors and destructor*/
+Channel::Channel(){/*{{{*/
+	this->id         = -1;
+	this->sid        = -1;
+	this->parameters = NULL;
+	this->helement   = NULL;
+	this->element    = NULL;
+	this->hnodes     = NULL;
+	this->hvertices  = NULL;
+	this->nodes      = NULL;
+}
+/*}}}*/
+Channel::Channel(int channel_id,IssmDouble channelarea,int index,IoModel* iomodel){/*{{{*/
+//Channel::Channel(int channel_id,int i,int index,IoModel* iomodel)
+
+	this->id=channel_id;
+	this->sid=channel_id-1;
+	this->parameters = NULL;
+	this->element    = NULL;
+	this->nodes      = NULL;
+
+	/*Set channel cross section to 0*/
+	//this->S    = 0.;
+	//this->Sold = 0.;
+	this->S    = channelarea;
+	this->Sold = channelarea;
+	this->discharge = 0.;/*for output only*/
+
+	/*Get edge info*/
+	int i1 = iomodel->faces[4*index+0];
+	int i2 = iomodel->faces[4*index+1];
+	int e1 = iomodel->faces[4*index+2];
+	int e2 = iomodel->faces[4*index+3];
+
+	if(e2==-1){
+		this->boundary = true;
+	}
+	else{
+		this->boundary = false;
+	}
+
+	/*Set Element hook (4th column may be -1 for boundary edges)*/
+	this->helement  = new Hook(&e1,1);
+
+	/*Set Vertices hooks (4th column may be -1 for boundary edges)*/
+	int channel_vertex_ids[2];
+	channel_vertex_ids[0]=i1;
+	channel_vertex_ids[1]=i2;
+	this->hvertices =new Hook(&channel_vertex_ids[0],2);
+
+	/*Set Nodes hooks (!! Assumes P1 CG)*/
+	int channel_node_ids[2];
+	channel_node_ids[0]=i1;
+	channel_node_ids[1]=i2;
+	this->hnodes=new Hook(&channel_node_ids[0],2);
+
+}/*}}}*/
+Channel::~Channel(){/*{{{*/
+	this->parameters=NULL;
+	delete helement;
+	delete hnodes;
+	delete hvertices;
+}/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Channel::copy() {/*{{{*/
+
+	Channel* channel=NULL;
+
+	channel=new Channel();
+
+	/*copy fields: */
+	channel->id=this->id;
+	channel->S=this->S;
+
+	/*point parameters: */
+	channel->parameters=this->parameters;
+
+	/*now deal with hooks and objects: */
+	channel->hnodes    = (Hook*)this->hnodes->copy();
+	channel->hvertices = (Hook*)this->hvertices->copy();
+	channel->helement  = (Hook*)this->helement->copy();
+
+	/*corresponding fields*/
+	channel->nodes    = (Node**)channel->hnodes->deliverp();
+	channel->vertices = (Vertex**)channel->hvertices->deliverp();
+	channel->element  = (Element*)channel->helement->delivers();
+
+	return channel;
+}
+/*}}}*/
+void    Channel::DeepEcho(void){/*{{{*/
+
+	_printf_("Channel:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   S:  " << S << "\n");
+	hnodes->DeepEcho();
+	hvertices->DeepEcho();
+	helement->DeepEcho();
+	_printf_("   parameters\n");
+	if(parameters)
+	 parameters->DeepEcho();
+	else
+	 _printf_("      NULL\n");
+}		
+/*}}}*/
+void    Channel::Echo(void){/*{{{*/
+	_printf_("Channel:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   S:  " << S << "\n");
+	hnodes->Echo();
+	hvertices->Echo();
+	helement->Echo();
+	_printf_("   parameters: " << parameters << "\n");
+}
+/*}}}*/
+int     Channel::Id(void){/*{{{*/
+	return id;
+}
+/*}}}*/
+void    Channel::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	_assert_(this);
+
+	/*ok, marshall operations: */
+	int object_enum;
+	marshallhandle->call(object_enum);
+	marshallhandle->call(this->id);
+	marshallhandle->call(this->S);
+	marshallhandle->call(this->Sold);
+	marshallhandle->call(this->boundary);
+	marshallhandle->call(this->discharge);
+
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD){
+		this->hnodes      = new Hook();
+		this->hvertices   = new Hook();
+		this->helement    = new Hook();
+	}
+
+	this->hnodes->Marshall(marshallhandle);
+	this->helement->Marshall(marshallhandle);
+	this->hvertices->Marshall(marshallhandle);
+
+	/*corresponding fields*/
+	nodes    =(Node**)this->hnodes->deliverp();
+	vertices =(Vertex**)this->hvertices->deliverp();
+	element  =(Element*)this->helement->delivers();
+}
+/*}}}*/
+int     Channel::ObjectEnum(void){/*{{{*/
+	return ChannelEnum;
+}/*}}}*/
+
+/*Load virtual functions definitions:*/
+void  Channel::Configure(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	hnodes->configure((DataSet*)nodesin);
+	hvertices->configure((DataSet*)verticesin);
+	helement->configure((DataSet*)elementsin);
+
+	/*Initialize hooked fields*/
+	this->nodes    = (Node**)hnodes->deliverp();
+	this->vertices = (Vertex**)hvertices->deliverp();
+	this->element  = (Element*)helement->delivers();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+}
+/*}}}*/
+void  Channel::CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs){/*{{{*/
+
+	/*recover some parameters*/
+	ElementMatrix* Ke=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		case HydrologyGlaDSAnalysisEnum:
+			Ke = this->CreateKMatrixHydrologyGlaDS();
+			break;
+		default:
+			_error_("Don't know why we should be here");
+	}
+
+	/*Add to global matrix*/
+	if(Ke){
+		Ke->AddToGlobal(Kff,Kfs);
+		delete Ke;
+	}
+
+}
+/*}}}*/
+void  Channel::CreatePVector(Vector<IssmDouble>* pf){/*{{{*/
+
+	/*recover some parameters*/
+	ElementVector* pe=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		case HydrologyGlaDSAnalysisEnum:
+			pe = this->CreatePVectorHydrologyGlaDS();
+			break;
+		default:
+			_error_("Don't know why we should be here");
+	}
+
+	/*Add to global matrix*/
+	if(pe){
+		pe->AddToGlobal(pf);
+		delete pe;
+	}
+
+}
+/*}}}*/
+void  Channel::GetNodesLidList(int* lidlist){/*{{{*/
+
+	_assert_(lidlist);
+	_assert_(nodes);
+
+	for(int i=0;i<NUMNODES;i++) lidlist[i]=nodes[i]->Lid();
+}
+/*}}}*/
+void  Channel::GetNodesSidList(int* sidlist){/*{{{*/
+
+	_assert_(sidlist);
+	_assert_(nodes);
+
+	for(int i=0;i<NUMNODES;i++) sidlist[i]=nodes[i]->Sid();
+}
+/*}}}*/
+int   Channel::GetNumberOfNodes(void){/*{{{*/
+	return NUMNODES;
+}
+/*}}}*/
+bool  Channel::IsPenalty(void){/*{{{*/
+	return false;
+}
+/*}}}*/
+void  Channel::PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs,IssmDouble kmax){/*{{{*/
+
+	/*No stiffness loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Channel::PenaltyCreatePVector(Vector<IssmDouble>* pf,IssmDouble kmax){/*{{{*/
+
+	/*No penalty loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Channel::ResetHooks(){/*{{{*/
+
+	this->nodes=NULL;
+	this->vertices=NULL;
+	this->element=NULL;
+	this->parameters=NULL;
+
+	/*Get Element type*/
+	this->hnodes->reset();
+	this->hvertices->reset();
+	this->helement->reset();
+
+}
+/*}}}*/
+void  Channel::SetCurrentConfiguration(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+}
+/*}}}*/
+void  Channel::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
+
+	/*Output */
+	int d_nz = 0;
+	int o_nz = 0;
+
+	/*Loop over all nodes*/
+	for(int i=0;i<this->GetNumberOfNodes();i++){
+
+		if(!flags[this->nodes[i]->Lid()]){
+
+			/*flag current node so that no other element processes it*/
+			flags[this->nodes[i]->Lid()]=true;
+
+			flagsindices[flagsindices_counter[0]]=this->nodes[i]->Lid();
+         flagsindices_counter[0]++;
+
+			/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
+			switch(set2_enum){
+				case FsetEnum:
+					if(nodes[i]->FSize()){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case GsetEnum:
+					if(nodes[i]->gsize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case SsetEnum:
+					if(nodes[i]->SSize()){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				default: _error_("not supported");
+			}
+		}
+	}
+
+	/*Assign output pointers: */
+	*pd_nz=d_nz;
+	*po_nz=o_nz;
+}
+/*}}}*/
+
+/*Channel specific functions*/
+ElementMatrix* Channel::CreateKMatrixHydrologyGlaDS(void){/*{{{*/
+
+	/*Initialize Element matrix and return if necessary*/
+	Tria*  tria=(Tria*)element;
+	if(!tria->IsIceInElement()) return NULL;
+	_assert_(tria->FiniteElement()==P1Enum); 
+	int index1=tria->GetVertexIndex(vertices[0]);
+	int index2=tria->GetVertexIndex(vertices[1]);
+
+	/*Intermediaries */
+	IssmDouble  Jdet,v1,qc,fFactor,Afactor,Bfactor,Xifactor;
+	IssmDouble  A,B,n,phi_old,phi,phi_0,dPw,ks,kc,Ngrad;
+	IssmDouble  h_r;
+	IssmDouble  H,h,b,dphi[2],dphids,dphimds,db[2],dbds;
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  xyz_list_tria[3][3];
+	const int   numnodes = NUMNODES;
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke=new ElementMatrix(this->nodes,NUMNODES,this->parameters);
+	IssmDouble     basis[NUMNODES];
+	IssmDouble     dbasisdx[2*NUMNODES];
+	IssmDouble     dbasisds[NUMNODES];
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0]     ,this->vertices,NUMVERTICES);
+	GetVerticesCoordinates(&xyz_list_tria[0][0],tria->vertices,3);
+
+	bool istransition;
+	element->FindParam(&istransition,HydrologyIsTransitionEnum);
+	IssmDouble L         = element->FindParam(MaterialsLatentheatEnum);
+	IssmDouble mu_water  = element->FindParam(MaterialsMuWaterEnum);
+	IssmDouble rho_ice   = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble rho_water = element->FindParam(MaterialsRhoFreshwaterEnum);
+	IssmDouble g         = element->FindParam(ConstantsGEnum);
+	IssmDouble lc        = element->FindParam(HydrologyChannelSheetWidthEnum);
+	IssmDouble c_t       = element->FindParam(HydrologyPressureMeltCoefficientEnum);
+	IssmDouble alpha_c   = element->FindParam(HydrologyChannelAlphaEnum);
+	IssmDouble beta_c    = element->FindParam(HydrologyChannelBetaEnum);
+	IssmDouble alpha_s   = element->FindParam(HydrologySheetAlphaEnum);
+	IssmDouble beta_s    = element->FindParam(HydrologySheetBetaEnum);
+	IssmDouble omega     = element->FindParam(HydrologyOmegaEnum);
+
+	Input* h_input      = element->GetInput(HydrologySheetThicknessEnum);      _assert_(h_input);
+	Input* H_input      = element->GetInput(ThicknessEnum);                    _assert_(H_input);
+	Input* b_input      = element->GetInput(BedEnum);                          _assert_(b_input);
+	Input* B_input      = element->GetInput(MaterialsRheologyBEnum);           _assert_(B_input);
+	Input* n_input      = element->GetInput(MaterialsRheologyNEnum);           _assert_(n_input);
+	Input* ks_input     = element->GetInput(HydrologySheetConductivityEnum);   _assert_(ks_input);
+	Input* kc_input     = element->GetInput(HydrologyChannelConductivityEnum); _assert_(kc_input);
+	Input* hr_input     = element->GetInput(HydrologyBumpHeightEnum);_assert_(hr_input);
+	Input* phi_input    = element->GetInput(HydraulicPotentialEnum);           _assert_(phi_input);
+
+	/*Get tangent vector*/
+	IssmDouble tx = xyz_list_tria[index2][0] - xyz_list_tria[index1][0];
+	IssmDouble ty = xyz_list_tria[index2][1] - xyz_list_tria[index1][1];
+	IssmDouble Lt = sqrt(tx*tx+ty*ty);
+	tx = tx/Lt;
+	ty = ty/Lt;
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=new GaussTria(index1,index2,2);
+	while(gauss->next()){
+
+		tria->GetSegmentJacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		tria->GetSegmentNodalFunctions(&basis[0],gauss,index1,index2,tria->FiniteElement());
+		tria->GetSegmentNodalFunctionsDerivatives(&dbasisdx[0],&xyz_list_tria[0][0],gauss,index1,index2,tria->FiniteElement());
+		dbasisds[0] = dbasisdx[0*2+0]*tx + dbasisdx[0*2+1]*ty;
+		dbasisds[1] = dbasisdx[1*2+0]*tx + dbasisdx[1*2+1]*ty;
+
+		/*Get input values at gauss points*/
+		phi_input->GetInputDerivativeValue(&dphi[0],&xyz_list_tria[0][0],gauss);
+		b_input->GetInputDerivativeValue(&db[0],&xyz_list_tria[0][0],gauss);
+		phi_input->GetInputValue(&phi,gauss);
+		h_input->GetInputValue(&h,gauss);
+		ks_input->GetInputValue(&ks,gauss);
+		kc_input->GetInputValue(&kc,gauss);
+		hr_input->GetInputValue(&h_r,gauss);
+		B_input->GetInputValue(&B,gauss);
+		n_input->GetInputValue(&n,gauss);
+		b_input->GetInputValue(&b,gauss);
+		H_input->GetInputValue(&H,gauss);
+
+		/*Hard code B*/
+		B = Cuffey(273.15-2);
+
+		/*Get values for a few potentials*/
+		phi_0   = rho_water*g*b + rho_ice*g*H;
+		dphids  = dphi[0]*tx + dphi[1]*ty;
+		dphimds = rho_water*g*(db[0]*tx + db[1]*ty);
+		Ngrad   = fabs(dphids);
+		if(Ngrad<AEPS) Ngrad = AEPS;
+		
+		/*Compute the effective conductivity Kc = k h^alpha |grad Phi|^{beta-2} (same for sheet) and use transition model if specified*/
+		IssmDouble Kc;
+		IssmDouble Ks;
+		IssmDouble nu = mu_water/rho_water;
+		if(istransition==1 && omega>=AEPS){
+			IssmDouble hratio = h/h_r;
+			IssmDouble coarg = 1. + 4.*omega*pow(hratio,3-2*alpha_s)*ks*pow(h,3)*Ngrad/nu;
+			Ks = nu/2./omega*pow(hratio,2*alpha_s-3) * (-1 + pow(coarg, 0.5))/Ngrad;
+			Kc = kc * pow(this->S,alpha_c) * pow(Ngrad,beta_c-2.);
+		}
+		else {
+			Ks = ks*pow(h,alpha_s)*pow(Ngrad,beta_s-2.);
+			Kc = kc * pow(this->S,alpha_c) * pow(Ngrad,beta_c-2.);
+		}
+
+		/*Approx. discharge in the sheet flowing folwing in the direction of the channel ofver a width lc*/
+		qc = - Ks * dphids;
+
+		/*d(phi - phi_m)/ds*/
+		dPw = dphids - dphimds;
+
+		/*Compute f factor*/
+		fFactor = 0.;
+		if(this->S>0. || qc*dPw>0.){
+			fFactor = lc * qc;
+		}
+
+		/*Compute Afactor and Bfactor*/
+		Afactor = C_W*c_t*rho_water;
+		Bfactor = 1./L * (1./rho_ice - 1./rho_water);
+		if(dphids>0){
+			Xifactor = + Bfactor * (fabs(-Kc*dphids) + fabs(lc*qc));
+		}
+		else{
+			Xifactor = - Bfactor * (fabs(-Kc*dphids) + fabs(lc*qc));
+		}
+
+		/*Diffusive term*/
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				/*GlaDSCoupledSolver.F90 line 1659*/
+				Ke->values[i*numnodes+j] += gauss->weight*Jdet*(
+							+Kc*dbasisds[i]*dbasisds[j]                               /*Diffusion term*/
+							- Afactor * Bfactor* Kc * dPw * basis[i] * dbasisds[j]    /*First part of Pi*/
+							+ Afactor * fFactor * Bfactor * basis[i] * dbasisds[j]    /*Second part of Pi*/
+							+ Xifactor* basis[i] * dbasisds[j]                        /*Xi term*/
+							);
+			}
+		}
+
+		/*Closing rate term, see Gagliardini and Werder 2018 eq. A2 (v = v1*phi_i + v2(phi_{i+1}))*/
+		A=pow(B,-n);
+		v1 = 2./pow(n,n)*A*S*(pow(fabs(phi_0 - phi),n-1.)*( - n));
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += gauss->weight*Jdet*(-v1)*basis[i]*basis[j];
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	return Ke;
+}
+/*}}}*/
+ElementVector* Channel::CreatePVectorHydrologyGlaDS(void){/*{{{*/
+
+	/*Initialize Element matrix and return if necessary*/
+	Tria* tria=(Tria*)element;
+	if(!tria->IsIceInElement()) return NULL;
+	_assert_(tria->FiniteElement()==P1Enum); 
+	int index1=tria->GetVertexIndex(vertices[0]);
+	int index2=tria->GetVertexIndex(vertices[1]);
+
+	/*Intermediaries */
+	IssmDouble  Jdet,v2,Afactor,Bfactor,fFactor;
+	IssmDouble  A,B,n,phi_old,phi,phi_0,dphimds,dphi[2];
+	IssmDouble  H,h,b,db[2],dphids,qc,dPw,ks,kc,Ngrad;
+	IssmDouble  h_r;
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  xyz_list_tria[3][3];
+	const int   numnodes = NUMNODES;
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe = new ElementVector(this->nodes,NUMNODES,this->parameters);
+	IssmDouble     basis[NUMNODES];
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0],this->vertices,NUMVERTICES);
+	GetVerticesCoordinates(&xyz_list_tria[0][0],tria->vertices,3);
+
+	bool istransition;
+	element->FindParam(&istransition,HydrologyIsTransitionEnum);
+	IssmDouble L         = element->FindParam(MaterialsLatentheatEnum);
+	IssmDouble mu_water  = element->FindParam(MaterialsMuWaterEnum);
+	IssmDouble rho_ice   = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble rho_water = element->FindParam(MaterialsRhoFreshwaterEnum);
+	IssmDouble g         = element->FindParam(ConstantsGEnum);
+	IssmDouble lc        = element->FindParam(HydrologyChannelSheetWidthEnum);
+	IssmDouble c_t       = element->FindParam(HydrologyPressureMeltCoefficientEnum);
+	IssmDouble alpha_s   = element->FindParam(HydrologySheetAlphaEnum);
+	IssmDouble beta_s    = element->FindParam(HydrologySheetBetaEnum);
+	IssmDouble omega     = element->FindParam(HydrologyOmegaEnum);
+
+	Input* h_input      = element->GetInput(HydrologySheetThicknessEnum);      _assert_(h_input);
+	Input* H_input      = element->GetInput(ThicknessEnum);                    _assert_(H_input);
+	Input* b_input      = element->GetInput(BedEnum);                          _assert_(b_input);
+	Input* B_input      = element->GetInput(MaterialsRheologyBEnum);           _assert_(B_input);
+	Input* n_input      = element->GetInput(MaterialsRheologyNEnum);           _assert_(n_input);
+	Input* ks_input     = element->GetInput(HydrologySheetConductivityEnum);   _assert_(ks_input);
+	Input* kc_input     = element->GetInput(HydrologyChannelConductivityEnum); _assert_(kc_input);
+	Input* phi_input    = element->GetInput(HydraulicPotentialEnum);           _assert_(phi_input);
+	Input* hr_input     = element->GetInput(HydrologyBumpHeightEnum);_assert_(hr_input);
+
+	/*Get tangent vector*/
+	IssmDouble tx = xyz_list_tria[index2][0] - xyz_list_tria[index1][0];
+	IssmDouble ty = xyz_list_tria[index2][1] - xyz_list_tria[index1][1];
+	IssmDouble Lt = sqrt(tx*tx+ty*ty);
+	tx = tx/Lt;
+	ty = ty/Lt;
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=new GaussTria(index1,index2,2);
+	while(gauss->next()){
+
+		tria->GetSegmentJacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		tria->GetSegmentNodalFunctions(&basis[0],gauss,index1,index2,tria->FiniteElement());
+
+		/*Get input values at gauss points*/
+		b_input->GetInputDerivativeValue(&db[0],&xyz_list_tria[0][0],gauss);
+		phi_input->GetInputDerivativeValue(&dphi[0],&xyz_list_tria[0][0],gauss);
+		h_input->GetInputValue(&h,gauss);
+		ks_input->GetInputValue(&ks,gauss);
+		kc_input->GetInputValue(&kc,gauss);
+		B_input->GetInputValue(&B,gauss);
+		n_input->GetInputValue(&n,gauss);
+		phi_input->GetInputValue(&phi,gauss);
+		b_input->GetInputValue(&b,gauss);
+		H_input->GetInputValue(&H,gauss);
+		hr_input->GetInputValue(&h_r,gauss);
+
+		/*Hard code B*/
+		B = Cuffey(273.15-2);
+		
+		/*Get values for a few potentials*/
+		phi_0   = rho_water*g*b + rho_ice*g*H;
+		dphids  = dphi[0]*tx + dphi[1]*ty;
+		dphimds = rho_water*g*(db[0]*tx + db[1]*ty);
+		Ngrad   = fabs(dphids);
+		if(Ngrad<AEPS) Ngrad = AEPS;
+
+
+		/*Approx. discharge in the sheet flowing folwing in the direction of the channel ofver a width lc, use transition model if specified*/
+		IssmDouble Ks;
+		if (istransition==1 && omega>=AEPS){
+		IssmDouble hratio = h/h_r;
+			IssmDouble nu = mu_water/rho_water;
+			IssmDouble coarg = 1. + 4.*omega*pow(hratio,3-2*alpha_s)*ks*pow(h,3)*Ngrad/nu;
+			Ks = nu/2./omega*pow(hratio,2*alpha_s-3) * (-1 + pow(coarg, 0.5))/Ngrad;
+		}
+		else {
+			Ks = ks * pow(h,alpha_s) * pow(Ngrad,beta_s-2.);
+		}
+
+		/*Approx. discharge in the sheet flowing folwing in the direction of the channel ofver a width lc*/
+		qc = - Ks * dphids;
+
+		/*d(phi - phi_m)/ds*/
+		dPw = dphids - dphimds;
+
+		/*Compute f factor*/
+		fFactor = 0.;
+		if(this->S>0. || qc*dPw>0.){
+			fFactor = lc * qc;
+		}
+
+		/*Compute Afactor and Bfactor*/
+		Afactor = C_W*c_t*rho_water;
+		Bfactor = 1./L * (1./rho_ice - 1./rho_water);
+
+		/*Compute closing rate*/
+		/*See Gagliardini and Werder 2018 eq. A2 (v = v2(phi_i) + v1*phi_{i+1})*/
+		A=pow(B,-n);
+		v2 = 2./pow(n,n)*A*this->S*(pow(fabs(phi_0 - phi),n-1.)*(phi_0 +(n-1.)*phi));
+
+		for(int i=0;i<numnodes;i++){
+			pe->values[i]+= - Jdet*gauss->weight*(-v2)*basis[i];
+			pe->values[i]+= + Jdet*gauss->weight*Afactor*Bfactor*fFactor*dphimds*basis[i];
+		}
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	return pe;
+}
+/*}}}*/
+void           Channel::SetChannelCrossSectionOld(void){/*{{{*/
+
+	this->Sold = this->S;
+
+} /*}}}*/
+void           Channel::UpdateChannelCrossSection(void){/*{{{*/
+
+	/*Initialize Element matrix and return if necessary*/
+	Tria*  tria=(Tria*)element;
+	if(this->boundary){
+		this->S = 0.;
+		return;
+	}
+	_assert_(tria->FiniteElement()==P1Enum); 
+
+	/*Evaluate all fields on center of edge*/
+	int index1=tria->GetVertexIndex(vertices[0]);
+	int index2=tria->GetVertexIndex(vertices[1]);
+	GaussTria* gauss=new GaussTria();
+	gauss->GaussEdgeCenter(index1,index2);
+
+	/*Set to 0 if inactive*/
+	IssmDouble active;
+	Input* active_input = element->GetInput(HydrologyMaskNodeActivationEnum); _assert_(active_input);
+	active_input->GetInputValue(&active,gauss);
+	if(active!=1.){
+		this->S = 0.;
+		delete gauss;
+		return;
+	}
+
+	/*Intermediaries */
+	IssmDouble  A,B,n,phi,phi_0,ks,kc,Ngrad;
+	IssmDouble  h_r;
+	IssmDouble  H,h,b,dphi[2],dphids,dphimds,db[2],dbds;
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	IssmDouble  xyz_list_tria[3][3];
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0]     ,this->vertices,NUMVERTICES);
+	GetVerticesCoordinates(&xyz_list_tria[0][0],tria->vertices,3);
+
+	bool istransition;
+	element->FindParam(&istransition,HydrologyIsTransitionEnum);
+	IssmDouble L         = element->FindParam(MaterialsLatentheatEnum);
+	IssmDouble rho_ice   = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble rho_water = element->FindParam(MaterialsRhoFreshwaterEnum);
+	IssmDouble mu_water  = element->FindParam(MaterialsMuWaterEnum);
+	IssmDouble g         = element->FindParam(ConstantsGEnum);
+	IssmDouble lc        = element->FindParam(HydrologyChannelSheetWidthEnum);
+	IssmDouble c_t       = element->FindParam(HydrologyPressureMeltCoefficientEnum);
+	IssmDouble dt        = element->FindParam(TimesteppingTimeStepEnum);
+	IssmDouble alpha_c   = element->FindParam(HydrologyChannelAlphaEnum);
+	IssmDouble beta_c    = element->FindParam(HydrologyChannelBetaEnum);
+	IssmDouble alpha_s   = element->FindParam(HydrologySheetAlphaEnum);
+	IssmDouble beta_s    = element->FindParam(HydrologySheetBetaEnum);
+	IssmDouble omega     = element->FindParam(HydrologyOmegaEnum);
+
+	Input* h_input      = element->GetInput(HydrologySheetThicknessEnum);      _assert_(h_input);
+	Input* H_input      = element->GetInput(ThicknessEnum);                    _assert_(H_input);
+	Input* b_input      = element->GetInput(BedEnum);                          _assert_(b_input);
+	Input* B_input      = element->GetInput(MaterialsRheologyBEnum);           _assert_(B_input);
+	Input* n_input      = element->GetInput(MaterialsRheologyNEnum);           _assert_(n_input);
+	Input* ks_input     = element->GetInput(HydrologySheetConductivityEnum);   _assert_(ks_input);
+	Input* kc_input     = element->GetInput(HydrologyChannelConductivityEnum); _assert_(kc_input);
+	Input* phi_input    = element->GetInput(HydraulicPotentialEnum);           _assert_(phi_input);
+	Input* hr_input     = element->GetInput(HydrologyBumpHeightEnum);_assert_(hr_input);
+
+	/*Get tangent vector*/
+	IssmDouble tx = xyz_list_tria[index2][0] - xyz_list_tria[index1][0];
+	IssmDouble ty = xyz_list_tria[index2][1] - xyz_list_tria[index1][1];
+	IssmDouble Lt = sqrt(tx*tx+ty*ty);
+	tx = tx/Lt;
+	ty = ty/Lt;
+
+	/*Get input values at gauss points*/
+	phi_input->GetInputValue(&phi,gauss);
+	phi_input->GetInputDerivativeValue(&dphi[0],&xyz_list_tria[0][0],gauss);
+	h_input->GetInputValue(&h,gauss);
+	ks_input->GetInputValue(&ks,gauss);
+	kc_input->GetInputValue(&kc,gauss);
+	B_input->GetInputValue(&B,gauss);
+	n_input->GetInputValue(&n,gauss);
+	b_input->GetInputValue(&b,gauss);
+	b_input->GetInputDerivativeValue(&db[0],&xyz_list_tria[0][0],gauss);
+	H_input->GetInputValue(&H,gauss);
+	hr_input->GetInputValue(&h_r,gauss);
+
+
+	/*Hard code B*/
+	B = Cuffey(273.15-2);
+
+	/*Get values for a few potentials*/
+	phi_0   = rho_water*g*b + rho_ice*g*H;
+	dphids  = dphi[0]*tx + dphi[1]*ty;
+	dphimds = rho_water*g*(db[0]*tx + db[1]*ty);
+	Ngrad   = fabs(dphids);
+	if(Ngrad<AEPS) Ngrad = AEPS;
+
+	/*d(phi - phi_m)/ds*/
+	IssmDouble dPw = dphids - dphimds;
+
+	/*Approx. discharge in the sheet flowing folwing in the direction of the channel ofver a width lc, use transition model if necessary*/
+	IssmDouble qc;
+	if (istransition==1 && omega>=AEPS){
+	IssmDouble hratio = h/h_r;
+		IssmDouble nu = mu_water/rho_water;
+		IssmDouble coarg = 1. + 4.*omega*pow(hratio,3-2*alpha_s)*ks*pow(h,3)*fabs(Ngrad)/nu;
+		qc = -nu/2./omega*pow(hratio,2*alpha_s-3) * (-1 + pow(coarg, 0.5))*dphids/Ngrad;
+	}
+	else {
+		qc = - ks * pow(h,alpha_s) * pow(Ngrad,beta_s-2.) * dphids;
+	}
+
+	/*Ice rate factor*/
+	A=pow(B,-n);
+
+	IssmDouble C = C_W*c_t*rho_water;
+	IssmDouble Qprime = -kc * pow(Ngrad,beta_c-2.)*dphids;
+	IssmDouble N = phi_0 - phi;
+
+	bool converged  = false;
+	int  count      = 0;
+
+	while(!converged){
+
+		IssmDouble Snew = this->S;
+
+		/*Compute f factor*/
+		IssmDouble fFactor = 0.;
+		if(this->S>0. || qc*dPw>0.){
+			fFactor = lc * qc;
+		}
+
+		IssmDouble alpha = 1./(rho_ice*L)*(
+					fabs(Qprime*pow(Snew,alpha_c-1.)*dphids)
+					+ C*Qprime*pow(Snew,alpha_c-1.)*dPw
+					) - 2./pow(n,n)*A*pow(fabs(N),n-1.)*N;
+
+		IssmDouble beta = 1./(rho_ice*L)*( fabs(lc*qc*dphids) + C*fFactor*dPw );
+
+		/*Solve ODE*/
+		this->S = ODE1(alpha,beta,this->Sold,dt,2);
+		_assert_(!xIsNan<IssmDouble>(this->S)); 
+
+		/*Constrain the cross section to be between 0 and 500 m^2*/
+		if(this->S<0.)   this->S = 0.;
+		if(this->S>100.) this->S = 100.;
+		
+		/*Do not allow channels to grow in areas with no sheet thickness*/
+		if(H<200.) this->S = 0.;
+
+		count++;
+
+		if(fabs((this->S - Snew)/(Snew+AEPS))<1e-8  || count>=10) converged = true;
+	}
+
+	/*Compute new channel discharge for output only*/
+	IssmDouble Kc = kc * pow(this->S,alpha_c) * pow(Ngrad,beta_c-2.);
+	this->discharge = -Kc*dphids;
+
+	/*Clean up and return*/
+	delete gauss;
+}
+/*}}}*/
+void           Channel::WriteChannelCrossSection(IssmPDouble* values){/*{{{*/
+	_assert_(values);
+	values[this->sid] = reCast<IssmPDouble>(this->S);
+}
+/*}}}*/
+void           Channel::WriteChannelDischarge(IssmPDouble* values){/*{{{*/
+	_assert_(values);
+	values[this->sid] = reCast<IssmPDouble>(this->discharge);
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Channel.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Channel.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Channel.h	(revision 27955)
@@ -0,0 +1,93 @@
+/*!\file Channel.h
+ * \brief: header file for icefront object
+ */
+
+#ifndef _CHANNEL_H_
+#define _CHANNEL_H_
+
+/*Headers:*/
+#include "./Load.h"
+class Hook;
+class Parameters;
+class IoModel;
+class Element;
+class Vertex;
+class ElementMatrix;
+class ElementVector;
+
+class Channel: public Load {
+
+	private: 
+		IssmDouble S;
+		IssmDouble Sold;
+		bool       boundary;
+
+		/*output only*/
+		IssmDouble discharge;
+
+	public: 
+		int sid;
+		int id;
+
+		/*Hooks*/
+		Hook *helement;
+		Hook *hnodes;
+		Hook *hvertices;
+
+		/*Corresponding fields*/
+		Element     *element;
+		Vertex     **vertices;
+		Node       **nodes;
+		Parameters  *parameters;
+
+		/*Channel constructors,destructors {{{*/
+		Channel();
+		Channel(int numericalflux_id,IssmDouble channelarea,int index,IoModel* iomodel);
+		//Channel(int numericalflux_id,int i,int index,IoModel* iomodel);
+		~Channel();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{*/
+		void InputUpdateFromConstant(IssmDouble constant, int name){/*Do nothing*/};
+		void InputUpdateFromConstant(int constant, int name){/*Do nothing*/};
+		void InputUpdateFromConstant(bool constant, int name){_error_("Not implemented yet!");}
+		void InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
+		void InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols, int name, int type){/*Do nothing*/}
+		void InputUpdateFromVector(IssmDouble* vector, int name, int type){/*Do nothing*/}
+		void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*Do nothing*/}
+		/*}}}*/
+		/*Load virtual functions definitions: {{{*/
+		void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
+		void CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
+		void CreatePVector(Vector<IssmDouble>* pf);
+		void GetNodesLidList(int* lidlist);
+		void GetNodesSidList(int* sidlist);
+		int  GetNumberOfNodes(void);
+		bool IsPenalty(void);
+		void PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){_error_("Not implemented yet");};
+		void PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
+		void PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
+		void ResetHooks();
+		void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
+		/*}}}*/
+		/*Channel management:{{{*/
+		void           SetChannelCrossSectionOld(void);
+		void           UpdateChannelCrossSection(void);
+		ElementVector* CreatePVectorHydrologyGlaDS(void);
+		ElementMatrix* CreateKMatrixHydrologyGlaDS(void);
+		void           WriteChannelCrossSection(IssmPDouble* values);
+		void           WriteChannelDischarge(IssmPDouble* values);
+		/*}}}*/
+
+};
+
+#endif  /* _NUMERICALFLUX_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Friction.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Friction.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Friction.cpp	(revision 27955)
@@ -0,0 +1,1459 @@
+/*!\file Friction.c
+ * \brief: implementation of the Friction object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+#include "../../modules/InputUpdateFromConstantx/InputUpdateFromConstantx.h"
+/*}}}*/
+
+/*Constructors/destructors*/
+Friction::Friction(){/*{{{*/
+	this->element=NULL;
+	this->law        = 0;
+	this->linearize  = 0;
+	this->apply_dim  = 1.;
+	this->domaintype = -1;
+	this->vx_input=NULL;
+	this->vy_input=NULL;
+	this->vz_input=NULL;
+	this->alpha2_list=NULL;
+	this->alpha2_complement_list=NULL;
+}
+/*}}}*/
+Friction::Friction(Element* element_in){/*{{{*/
+	/* Determine the dimension according to the domain type automatically. 
+	 * There are exceptions, e.g. HO, which needs the user to specify the dimension used in Friciton.*/
+
+	/*Intermediaries*/
+	int linearization_type;
+
+	this->element=element_in;
+	this->linearize  = 0;
+
+	/* Load necessary parameters */
+	element_in->FindParam(&this->law,FrictionLawEnum);
+	element_in->FindParam(&this->domaintype,DomainTypeEnum);
+
+	/* Load VxBase and VyBase for this special case */
+	switch(this->domaintype){
+		case Domain2DhorizontalEnum: 
+			this->apply_dim = 2.;
+			this->vx_input = element_in->GetInput(VxBaseEnum);	_assert_(this->vx_input); 
+			this->vy_input = element_in->GetInput(VyBaseEnum);	_assert_(this->vy_input);
+			this->vz_input = NULL;
+			break;
+      case Domain2DverticalEnum:
+			this->apply_dim = 2.;
+			this->vx_input = element_in->GetInput(VxEnum);	_assert_(this->vx_input);
+			this->vy_input = element_in->GetInput(VyEnum);	_assert_(this->vy_input);
+			this->vz_input = NULL;
+			break;
+      case Domain3DEnum:           
+			this->apply_dim = 3.;
+			this->vx_input = element_in->GetInput(VxEnum);	_assert_(this->vx_input);
+			this->vy_input = element_in->GetInput(VyEnum);	_assert_(this->vy_input);
+			this->vz_input = element_in->GetInput(VzEnum);	_assert_(this->vz_input);
+			break;
+      default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	if(this->law==1 || this->law==2){
+		element_in->FindParam(&linearization_type,FrictionLinearizeEnum);
+		if(linearization_type==0){
+			/*Don't do anything*/
+		}
+		else if(linearization_type==1){
+			int numvertices = this->element->GetNumberOfVertices();
+			this->alpha2_list            = xNew<IssmDouble>(numvertices);
+			this->alpha2_complement_list = xNew<IssmDouble>(numvertices);
+			Gauss* gauss=this->element->NewGauss();
+			for(int iv=0;iv<numvertices;iv++){
+				gauss->GaussVertex(iv);
+				this->GetAlpha2(&this->alpha2_list[iv], gauss);
+				this->GetAlphaComplement(&this->alpha2_complement_list[iv], gauss);
+			}
+			this->linearize = linearization_type; /*Change back, we are now all set!*/
+			delete gauss;
+		}
+		else if(linearization_type==2){
+			this->alpha2_list            = xNew<IssmDouble>(1);
+			this->alpha2_complement_list = xNew<IssmDouble>(1);
+			Gauss* gauss=element->NewGauss(1); gauss->GaussPoint(0);
+			this->GetAlpha2(&this->alpha2_list[0], gauss);
+			this->GetAlphaComplement(&this->alpha2_complement_list[0], gauss);
+			this->linearize = linearization_type; /*Change back, we are now all set!*/
+			delete gauss;
+		}
+		else{
+			_error_("not supported yet");
+		}
+	}
+}
+/*}}}*/
+Friction::Friction(Element* element_in,int dim) : Friction(element_in) {/*{{{*/
+	this->apply_dim = reCast<IssmDouble>(dim);
+}
+/*}}}*/
+Friction::Friction(Element* element_in,IssmDouble dim) : Friction(element_in) {/*{{{*/
+	this->apply_dim = dim;
+}
+/*}}}*/
+Friction::~Friction(){/*{{{*/
+	if(this->linearize){
+		xDelete<IssmDouble>(this->alpha2_list);
+		xDelete<IssmDouble>(this->alpha2_complement_list);
+	}
+}
+/*}}}*/
+
+/*methods: */
+void Friction::Echo(void){/*{{{*/
+	_printf_("Friction:\n");
+	_printf_("   Domain type: " << this->domaintype<< "\n");
+}
+/*}}}*/
+void Friction::GetAlphaComplement(IssmDouble* palpha_complement, Gauss* gauss){/*{{{*/
+
+	if(this->linearize==0){
+		switch(this->law){
+			case 1:
+				GetAlphaViscousComplement(palpha_complement,gauss);
+				break;
+			case 2:
+				GetAlphaWeertmanComplement(palpha_complement, gauss);
+				break;
+			case 3:
+				GetAlphaHydroComplement(palpha_complement,gauss);
+				break;
+			case 4:
+				GetAlphaTempComplement(palpha_complement,gauss);
+				break;
+			case 11:
+				GetAlphaSchoofComplement(palpha_complement,gauss);
+				break;
+			case 13:
+				GetAlphaCoulomb2Complement(palpha_complement,gauss);
+				break;
+			case 14:
+				GetAlphaRegCoulombComplement(palpha_complement,gauss);
+				break;
+			default:
+				_error_("not supported");
+		}
+	}
+	else if(this->linearize==1){
+		this->element->ValueP1OnGauss(palpha_complement, this->alpha2_complement_list, gauss);
+	}
+	else if(this->linearize==2){
+		*palpha_complement = this->alpha2_complement_list[0];
+	}
+	else{
+		_error_("not supported yet");
+	}
+
+	/*Checks*/
+	_assert_(!xIsNan<IssmDouble>(*palpha_complement));
+	_assert_(!xIsInf<IssmDouble>(*palpha_complement));
+
+}/*}}}*/
+void Friction::GetAlphaHydroComplement(IssmDouble* palpha_complement, Gauss* gauss){/*{{{*/
+
+	/*diverse: */
+	IssmDouble  q_exp;
+	IssmDouble  C_param;
+	IssmDouble  As;
+	IssmDouble  n;
+	IssmDouble  alpha;
+	IssmDouble  Chi,Gamma;
+	IssmDouble  alpha_complement;
+
+	/*Recover parameters: */
+	element->GetInputValue(&q_exp,gauss,FrictionQEnum);
+	element->GetInputValue(&C_param,gauss,FrictionCEnum);
+	element->GetInputValue(&As,gauss,FrictionAsEnum);
+	element->GetInputValue(&n,gauss,MaterialsRheologyNEnum);
+
+	/*Get effective pressure and velocity magnitude*/
+	IssmDouble Neff = EffectivePressure(gauss);
+	IssmDouble vmag = VelMag(gauss);
+
+	if (q_exp==1){
+		alpha=1;
+	}
+	else{
+		alpha=(pow(q_exp-1,q_exp-1))/pow(q_exp,q_exp);
+	}
+	Chi   = vmag/(pow(C_param,n)*pow(Neff,n)*As);
+	Gamma = (Chi/(1.+alpha*pow(Chi,q_exp)));
+	/*Check to prevent dividing by zero if vmag==0*/
+	if(vmag==0.) alpha_complement=0.;
+	else	if(Neff==0.) alpha_complement=0.;
+	else	alpha_complement=-(C_param*Neff/(n*vmag)) *
+					pow(Gamma,((1.-n)/n)) *
+					(Gamma/As - (alpha*q_exp*pow(Chi,q_exp-1.)* Gamma * Gamma/As));
+
+	/*Assign output pointers:*/
+	*palpha_complement=alpha_complement;
+}
+/*}}}*/
+void Friction::GetAlphaTempComplement(IssmDouble* palpha_complement, Gauss* gauss){/*{{{*/
+	/*Here, we want to parameterize the friction as a function of temperature
+	 *
+	 * alpha2 = alpha2_viscous * 1/f(T)
+	 *
+	 * where f(T) = exp((T-Tpmp)/gamma)
+	 */
+
+	/*Intermediaries: */
+	IssmDouble  f,T,pressure,Tpmp,gamma;
+	IssmDouble  alpha_complement;
+
+	/*Get viscous part*/
+	this->GetAlphaViscousComplement(&alpha_complement,gauss);
+
+	/*Get pressure melting point (Tpmp) for local pressure and get current temperature*/
+	element->GetInputValue(&T,gauss,TemperatureEnum);
+	element->GetInputValue(&pressure,gauss,PressureEnum);
+	Tpmp = element->TMeltingPoint(pressure);
+
+	/*Compute scaling parameter*/
+	element->parameters->FindParam(&gamma,FrictionGammaEnum);
+	alpha_complement = alpha_complement/ (exp((T-Tpmp)/gamma)+1e-3);
+
+	/*Assign output pointers:*/
+	*palpha_complement=alpha_complement;
+}/*}}}*/
+void Friction::GetAlphaViscousComplement(IssmDouble* palpha_complement, Gauss* gauss){/*{{{*/
+
+	/* FrictionGetAlpha2 computes alpha2= drag^2 * Neff ^r * vel ^(s-1), with Neff=rho_ice*g*thickness+rho_ice*g*base, r=q/p and s=1/p.
+	 * FrictionGetAlphaComplement is used in control methods on drag, and it computes:
+	 * alpha_complement= Neff ^r * vel ^(s-1)*/
+
+	/*diverse: */
+	IssmDouble  r,s;
+	IssmDouble  drag_p,drag_q;
+	IssmDouble  drag_coefficient;
+	IssmDouble  alpha_complement;
+
+	/*Recover parameters: */
+	element->GetInputValue(&drag_p,gauss,FrictionPEnum);
+	element->GetInputValue(&drag_q,gauss,FrictionQEnum);
+	element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
+
+	/*compute r and q coefficients: */
+	r=drag_q/drag_p;
+	s=1./drag_p;
+
+	/*Get effective pressure*/
+	IssmDouble Neff = EffectivePressure(gauss);
+	IssmDouble vmag = VelMag(gauss);
+
+	if(s==1.){
+		/*This is to make AD happy and avoid 0^0*/
+		alpha_complement=pow(Neff,r);
+	}
+	else{
+		/*Check to prevent dividing by zero if vmag==0*/
+		if(vmag==0. && (s-1.)<0.) alpha_complement=0.;
+		else alpha_complement=pow(Neff,r)*pow(vmag,(s-1.));
+	}
+
+	/*Assign output pointers:*/
+	*palpha_complement=alpha_complement;
+}
+/*}}}*/
+void Friction::GetAlphaSchoofComplement(IssmDouble* palpha_complement, Gauss* gauss){/*{{{*/
+
+	/* Compute the complement of Schoof's law for inversion
+	 * d alpha2                       
+	 * -------- = |u_b|^(m-1) *(1+ (C/(Cmax N))^(1/m)|u_b|)^(-m-1)
+	 *  dC                           
+	*/
+	/*diverse: */
+	IssmDouble  m,Cmax;
+	IssmDouble  C, coeff;
+	IssmDouble  alpha_complement;
+
+	/*Recover parameters: */
+	element->GetInputValue(&m,gauss,FrictionMEnum);
+	element->GetInputValue(&Cmax,gauss,FrictionCmaxEnum);
+	element->GetInputValue(&coeff, gauss,FrictionCEnum);
+
+	C = coeff*coeff;
+	/*Get effective pressure*/
+	IssmDouble Neff = EffectivePressure(gauss);
+	IssmDouble vmag = VelMag(gauss);
+
+	/*Check to prevent dividing by zero if vmag==0*/
+	if((vmag==0.) || (Neff == 0.)) {
+		alpha_complement=0.;
+	}
+	else {
+		alpha_complement= pow(vmag, m-1.)*pow((1 + pow(C/(Cmax*Neff),1./m)*vmag), -m-1.);
+	}
+	/*Assign output pointers:*/
+	*palpha_complement=alpha_complement;
+}/*}}}*/
+void Friction::GetAlphaWeertmanComplement(IssmDouble* palpha_complement, Gauss* gauss){/*{{{*/
+
+	/* Compute the complement of Weertman's law for inversion
+	 * alpha2 = C^2 * vel^(1/m-1)
+	 * alpha_complement = vel^(1/m-1)
+	*/
+	/*diverse: */
+	IssmDouble  m;
+	IssmDouble  alpha_complement;
+
+	/*Recover parameters: */
+	element->GetInputValue(&m,gauss,FrictionMEnum);
+
+	/*Get effective pressure*/
+	IssmDouble vmag = VelMag(gauss);
+
+	/*Check to prevent dividing by zero if vmag==0*/
+	if(vmag==0. && (1./m-1.)<0.) alpha_complement=0.;
+	else alpha_complement= pow(vmag, 1.0/m-1.);
+
+	/*Assign output pointers:*/
+	*palpha_complement=alpha_complement;
+}/*}}}*/
+void Friction::GetAlphaRegCoulombComplement(IssmDouble* palpha_complement, Gauss* gauss){/*{{{*/
+
+	/* Compute the complement of regularised Coulombs law for inversion
+	 * d alpha2                       
+	 * -------- = |u_b|^(1/m-1) * (|u_b|/u_0 + 1)^(-1/m)
+	 *  dC                           
+	 */
+
+	/*diverse: */
+	IssmDouble  m, u0;
+	IssmDouble  alpha_complement;
+
+	/*Recover parameters: */
+	element->GetInputValue(&m,gauss,FrictionMEnum);
+	element->parameters->FindParam(&u0,FrictionU0Enum);
+
+	/*Get velocity magnitude*/
+	IssmDouble ub = VelMag(gauss);
+
+	/*Check to prevent dividing by zero if vmag==0*/
+	if(ub==0.) {
+		alpha_complement=0.;
+	}
+	else {
+		/*Compute friction complement*/
+		alpha_complement= (pow(ub,1./m-1.)) / pow(ub/u0 + 1.,1./m);	
+	}
+
+	/*Assign output pointers:*/
+	*palpha_complement=alpha_complement;
+}/*}}}*/
+void Friction::GetAlphaCoulomb2Complement(IssmDouble* palpha_complement, Gauss* gauss){/*{{{*/
+
+	/* Compute the complement of Cornford's friction law for inversion
+	 * d alpha2                       
+	 * ------ = (C*N*v^m)/(C^(2/m)*v + (N/2)^(1/m))^m - (C^(2/m - 1)*C^2*N*v*v^m)/(C^(2/m)*v + (N/2)^(1/m))^(m + 1)
+	 *  dC                           
+	 */
+
+	/*diverse: */
+	IssmDouble  m, C;
+	IssmDouble  alpha_complement;
+
+	/*Recover parameters: */
+	element->GetInputValue(&C,gauss,FrictionCEnum);
+	element->GetInputValue(&m,gauss,FrictionMEnum);
+
+	/*Get effective pressure and velocity magnitude*/
+	IssmDouble N = EffectivePressure(gauss);
+	IssmDouble v = VelMag(gauss);
+
+	/*Compute alpha*/
+	if(v<1e-10){
+		alpha_complement = 0.;
+	}
+	else{
+		alpha_complement= pow(0.5*N,1./m+1)* pow(v,m-1.) * pow(v*pow(C,1./m) +pow(0.5*N,1./m) ,-m-1.);
+	}
+
+	/*Assign output pointers:*/
+	*palpha_complement=alpha_complement/2.;
+}/*}}}*/
+void Friction::GetAlpha2(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	if(this->linearize==0){
+		switch(this->law){
+			case 1:
+				GetAlpha2Viscous(palpha2,gauss);
+				break;
+			case 2:
+				GetAlpha2Weertman(palpha2,gauss);
+				break;
+			case 3:
+				GetAlpha2Hydro(palpha2,gauss);
+				break;
+			case 4:
+				GetAlpha2Temp(palpha2,gauss);
+				break;
+			case 5:
+				GetAlpha2WaterLayer(palpha2,gauss);
+				break;
+			case 6:
+				GetAlpha2WeertmanTemp(palpha2,gauss);
+				break;
+			case 7:
+				GetAlpha2Coulomb(palpha2,gauss);
+				break;
+			case 8:
+				GetAlpha2Shakti(palpha2,gauss);
+				break;
+			case 9:
+				GetAlpha2Josh(palpha2,gauss);
+				break;
+			case 10:
+				GetAlpha2PISM(palpha2,gauss);
+				break;
+			case 11:
+				GetAlpha2Schoof(palpha2,gauss);
+				break;
+			case 12:
+				GetAlpha2Tsai(palpha2,gauss);
+				break;
+			case 13:
+				GetAlpha2Coulomb2(palpha2,gauss);
+				break;
+			case 14:
+				GetAlpha2RegCoulomb(palpha2,gauss);
+				break;
+			case 15:
+				GetAlpha2RegCoulomb2(palpha2,gauss);
+				break;
+			default:
+				_error_("Friction law "<< this->law <<" not supported");
+		}
+	}
+	else if(this->linearize==1){
+		this->element->ValueP1OnGauss(palpha2, this->alpha2_list, gauss);
+	}
+	else if(this->linearize==2){
+		*palpha2 = this->alpha2_list[0];
+	}
+	else{
+		_error_("not supported yet");
+	}
+
+	/*Checks*/
+	_assert_(!xIsNan<IssmDouble>(*palpha2));
+	_assert_(!xIsInf<IssmDouble>(*palpha2));
+	_assert_(*palpha2>=0);
+
+}/*}}}*/
+void Friction::GetAlpha2Coulomb(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	/*This routine calculates the basal friction coefficient
+	  alpha2= drag^2 * Neff ^r * | vel | ^(s-1), with Neff=rho_ice*g*thickness+rho_ice*g*base, r=q/p and s=1/p
+	  alpha2= min(drag^2 * Neff ^r * | vel | ^(s-1), drag_coulomb^2 * Neff*/
+
+	/*diverse: */
+	IssmDouble  r,s;
+	IssmDouble  drag_p, drag_q;
+	IssmDouble  drag_coefficient,drag_coefficient_coulomb;
+	IssmDouble  alpha2,alpha2_coulomb;
+
+	/*Recover parameters: */
+	element->GetInputValue(&drag_p,gauss,FrictionPEnum);
+	element->GetInputValue(&drag_q,gauss,FrictionQEnum);
+	element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
+	element->GetInputValue(&drag_coefficient_coulomb, gauss,FrictionCoefficientcoulombEnum);
+	IssmDouble rho_water = element->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble rho_ice   = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble gravity   = element->FindParam(ConstantsGEnum);
+
+	//compute r and q coefficients: */
+	r=drag_q/drag_p;
+	s=1./drag_p;
+
+	/*Get effective pressure*/
+	bool ispwHydro,ispwStochastic;
+   IssmDouble Neff;
+   element->parameters->FindParam(&ispwStochastic,StochasticForcingIsWaterPressureEnum);
+   element->parameters->FindParam(&ispwHydro,HydrologyIsWaterPressureArmaEnum);
+   if(ispwStochastic || ispwHydro){
+      /*Retrieve pre-computed water pressure and compute ice pressure*/
+      IssmDouble p_ice,p_water,Neff_limit;
+      element->GetInputValue(&p_water,gauss,FrictionWaterPressureEnum);
+      element->parameters->FindParam(&Neff_limit,FrictionEffectivePressureLimitEnum);
+      p_ice = IcePressure(gauss);
+      Neff  = max(Neff_limit*p_ice, p_ice - p_water);
+   }
+   else{
+      /*Compute effective pressure directly*/
+      Neff = EffectivePressure(gauss);
+   }
+	
+	/*Get velocity magnitude*/
+	IssmDouble vmag = VelMag(gauss);
+
+	if(s==1.){
+		/*This is to make AD happy and avoid 0^0*/
+		alpha2=drag_coefficient*drag_coefficient*pow(Neff,r);
+	}
+	else{
+		/*Check to prevent dividing by zero if vmag==0*/
+		if(vmag==0. && (s-1.)<0.) alpha2=0.;
+		else alpha2=drag_coefficient*drag_coefficient*pow(Neff,r)*pow(vmag,(s-1.));
+	}
+
+	if(vmag==0.){
+		alpha2_coulomb=0.;
+	}
+	else{
+		//alpha2_coulomb=drag_coefficient_coulomb*drag_coefficient_coulomb*rho_ice*gravity*max(0.,thickness-floatation_thickness)/vmag;
+		alpha2_coulomb=drag_coefficient_coulomb*drag_coefficient_coulomb*Neff/vmag;
+	}
+
+	if(alpha2_coulomb<alpha2) alpha2=alpha2_coulomb;
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+void Friction::GetAlpha2Hydro(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	/*This routine calculates the basal friction coefficient
+		Based on Gagliardini 2007, needs a good effective pressure computation
+		Not tested so far so use at your own risks
+	  alpha2= NeffC[Chi/(1+alpha*Chi^q)]^(1/n)*|vel|^(-1)  with
+		 Chi=|vel|/(C^n*Neff^n*As)
+		 alpha=(q-1)^(q-1)/q^q */
+
+	/*diverse: */
+	IssmDouble  q_exp;
+	IssmDouble  C_param;
+	IssmDouble  As;
+	IssmDouble  n;
+	IssmDouble  alpha;
+	IssmDouble  Chi,Gamma;
+	IssmDouble  alpha2;
+
+	/*Recover parameters: */
+	element->GetInputValue(&q_exp,gauss,FrictionQEnum);
+	element->GetInputValue(&C_param,gauss,FrictionCEnum);
+	element->GetInputValue(&As,gauss,FrictionAsEnum);
+	element->GetInputValue(&n,gauss,MaterialsRheologyNEnum);
+
+	/*Get effective pressure*/
+	IssmDouble Neff = EffectivePressure(gauss);
+	IssmDouble vmag = VelMag(gauss);
+
+	//compute alpha and Chi coefficients: */
+	if (q_exp==1){
+		alpha=1;
+	}
+	else{
+		alpha=(pow(q_exp-1,q_exp-1))/pow(q_exp,q_exp);
+	}
+	Chi=vmag/(pow(C_param,n)*pow(Neff,n)*As);
+	Gamma=(Chi/(1. + alpha * pow(Chi,q_exp)));
+	/*Check to prevent dividing by zero if vmag==0*/
+	if(vmag==0.) alpha2=0.;
+	else	if (Neff==0) alpha2=0.0;
+	else	alpha2=Neff * C_param * pow(Gamma,1./n) * pow(vmag,-1);
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+void Friction::GetAlpha2Shakti(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	/* FrictionGetAlpha2 computes alpha2= drag^2 * Neff, with Neff=rho_ice*g*thickness+rho_ice*g*(head-base)*/
+
+	/*diverse: */
+	IssmDouble  pressure_ice,pressure_water;
+	IssmDouble  Neff;
+	IssmDouble  drag_coefficient;
+	IssmDouble  base,thickness,head,sealevel;
+	IssmDouble  alpha2;
+
+	/*Recover parameters: */
+	element->GetInputValue(&thickness, gauss,ThicknessEnum);
+	element->GetInputValue(&base, gauss,BaseEnum);
+	element->GetInputValue(&head, gauss,HydrologyHeadEnum);
+	element->GetInputValue(&sealevel, gauss,SealevelEnum);
+	element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
+	IssmDouble rho_water   = element->FindParam(MaterialsRhoFreshwaterEnum);
+	IssmDouble rho_ice     = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble gravity     = element->FindParam(ConstantsGEnum);
+
+	//From base and thickness, compute effective pressure when drag is viscous:
+	pressure_ice   = rho_ice*gravity*thickness;
+	pressure_water = rho_water*gravity*(head-base+sealevel);
+	Neff=pressure_ice-pressure_water;
+	if(Neff<0.) Neff=0.;
+
+	alpha2=drag_coefficient*drag_coefficient*Neff;
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}
+/*}}}*/
+void Friction::GetAlpha2Temp(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+	/*Here, we want to parameterize the friction as a function of temperature
+	 *
+	 * alpha2 = alpha2_viscous * 1/f(T)
+	 *
+	 * where f(T) = exp((T-Tpmp)/gamma)
+	 */
+
+	/*Intermediaries: */
+	IssmDouble  f,T,pressure,Tpmp,gamma;
+	IssmDouble  alpha2;
+
+	/*Get viscous part*/
+	this->GetAlpha2Viscous(&alpha2,gauss);
+
+	/*Get pressure melting point (Tpmp) for local pressure and get current temperature*/
+	element->GetInputValue(&T,gauss,TemperatureEnum);
+	element->GetInputValue(&pressure,gauss,PressureEnum);
+	Tpmp = element->TMeltingPoint(pressure);
+
+	/*Compute scaling parameter*/
+	element->parameters->FindParam(&gamma,FrictionGammaEnum);
+	alpha2 = alpha2 / (exp((T-Tpmp)/gamma)+1e-3);
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+void Friction::GetAlpha2Josh(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+	/*Here, we want to parameterize the friction as a function of temperature
+	 *
+	 * alpha2 = alpha2_viscous * 1/f(T)
+	 *
+	 * where f(T) = exp((T-Tpmp)/gamma)
+	 */
+
+	/*Intermediaries: */
+	IssmDouble  T,Tpmp,deltaT,deltaTref,pressure,diff,drag_coefficient;
+	IssmDouble  alpha2,time,gamma,ref,alp_new,alphascaled;
+	const IssmDouble yts = 365*24*3600.;
+
+	/*Get viscous part*/
+	this->GetAlpha2Viscous(&alpha2,gauss);
+
+	/*Get delta Refs*/
+	element->GetInputValue(&deltaTref,gauss,FrictionPressureAdjustedTemperatureEnum);
+	element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
+	/*New*/
+	/*element->GetInputValue(&deltaTrefsfc,gauss,FrictionSurfaceTemperatureEnum);
+	 *    element->GetInputValue(&Tpdd,gauss,TemperaturePDDEnum);
+	 *       */
+
+	/*Compute delta T*/
+	element->GetInputValue(&T,gauss,TemperatureEnum);
+	element->GetInputValue(&pressure,gauss,PressureEnum);
+	Tpmp = element->TMeltingPoint(pressure);
+	deltaT = T-Tpmp;
+
+	/*Compute gamma*/
+	element->parameters->FindParam(&time,TimeEnum);
+	element->parameters->FindParam(&gamma,FrictionGammaEnum);
+
+	ref = exp(deltaTref/gamma);
+	alp_new = ref/exp(deltaT/gamma);
+
+	alphascaled = sqrt(alp_new)*drag_coefficient;
+	if (alphascaled > 300) alp_new = (300/drag_coefficient)*(300/drag_coefficient);
+
+	alp_new=alp_new*alpha2;
+
+	/*Assign output pointers:*/
+	*palpha2=alp_new;
+}/*}}}*/
+void Friction::GetAlpha2Viscous(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	/*This routine calculates the basal friction coefficient
+	  alpha2= drag^2 * Neff ^r * | vel | ^(s-1), with Neff=rho_ice*g*thickness+rho_ice*g*base, r=q/p and s=1/p**/
+
+	/*diverse: */
+	IssmDouble  r,s;
+	IssmDouble  drag_p, drag_q;
+	IssmDouble  drag_coefficient;
+	IssmDouble  alpha2;
+
+	/*Recover parameters: */
+	element->GetInputValue(&drag_p,gauss,FrictionPEnum);
+	element->GetInputValue(&drag_q,gauss,FrictionQEnum);
+	element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
+
+	/*compute r and q coefficients: */
+	r=drag_q/drag_p;
+	s=1./drag_p;
+
+	/*Get effective pressure and basal velocity*/
+	IssmDouble vmag = VelMag(gauss);
+
+	bool ispwHydro,ispwStochastic;
+   IssmDouble Neff;
+   element->parameters->FindParam(&ispwStochastic,StochasticForcingIsWaterPressureEnum);
+   element->parameters->FindParam(&ispwHydro,HydrologyIsWaterPressureArmaEnum);
+   if(ispwStochastic || ispwHydro){
+      /*Retrieve pre-computed water pressure and compute ice pressure*/
+      IssmDouble p_ice,p_water,Neff_limit;
+      element->GetInputValue(&p_water,gauss,FrictionWaterPressureEnum);
+		element->parameters->FindParam(&Neff_limit,FrictionEffectivePressureLimitEnum);
+      p_ice = IcePressure(gauss);
+      Neff  = max(Neff_limit*p_ice, p_ice - p_water);
+   }	
+	else{
+		/*Compute effective pressure directly*/
+		Neff = EffectivePressure(gauss);
+	}
+
+	/*Check to prevent dividing by zero if vmag==0*/
+	if(s==1.){
+		/*This is to make AD happy and avoid 0^0*/
+		alpha2=drag_coefficient*drag_coefficient*pow(Neff,r);
+	}
+	else{
+		if(vmag==0. && (s-1.)<0.) alpha2=0.;
+		else alpha2=drag_coefficient*drag_coefficient*pow(Neff,r)*pow(vmag,(s-1.));
+	}
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+void Friction::GetAlpha2WaterLayer(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	/*This routine calculates the basal friction coefficient
+	  alpha2= drag^2 * Neff ^r * | vel | ^(s-1), with Neff=rho_ice*g*thickness+rho_ice*g*base, r=q/p and s=1/p**/
+
+	/*diverse: */
+	IssmDouble  r,s;
+	IssmDouble  drag_p, drag_q;
+	IssmDouble  Neff,F;
+	IssmDouble  thickness,base,sealevel;
+	IssmDouble  drag_coefficient,water_layer;
+	IssmDouble  alpha2;
+
+	/*Recover parameters: */
+	element->parameters->FindParam(&F,FrictionFEnum);
+	element->GetInputValue(&drag_p,gauss,FrictionPEnum);
+	element->GetInputValue(&drag_q,gauss,FrictionQEnum);
+	element->GetInputValue(&thickness, gauss,ThicknessEnum);
+	element->GetInputValue(&base, gauss,BaseEnum);
+	element->GetInputValue(&sealevel, gauss,SealevelEnum);
+	element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
+	element->GetInputValue(&water_layer, gauss,FrictionWaterLayerEnum);
+	IssmDouble rho_water   = element->FindParam(MaterialsRhoSeawaterEnum);
+	IssmDouble rho_ice     = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble gravity     = element->FindParam(ConstantsGEnum);
+
+	//compute r and q coefficients: */
+	r=drag_q/drag_p;
+	s=1./drag_p;
+
+	//From base and thickness, compute effective pressure when drag is viscous:
+	if(base>0) base=0;
+	if(water_layer==0) Neff=gravity*rho_ice*thickness+gravity*rho_water*(base-sealevel);
+	else if(water_layer>0) Neff=gravity*rho_ice*thickness*F;
+	else _error_("negative water layer thickness");
+	if(Neff<0) Neff=0;
+
+	IssmDouble vmag = VelMag(gauss);
+
+	if(s==1.){
+		/*This is to make AD happy and avoid 0^0*/
+		alpha2=drag_coefficient*drag_coefficient*pow(Neff,r);
+	}
+	else{
+		/*Check to prevent dividing by zero if vmag==0*/
+		if(vmag==0. && (s-1.)<0.) alpha2=0.;
+		else alpha2=drag_coefficient*drag_coefficient*pow(Neff,r)*pow(vmag,(s-1.));
+	}
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+void Friction::GetAlpha2Weertman(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	/*This routine calculates the basal friction coefficient alpha2= C^2 |v|^(1/m-1) */
+
+	/*diverse: */
+	IssmDouble  C,m;
+	IssmDouble  alpha2;
+
+	/*Recover parameters: */
+	element->GetInputValue(&C,gauss,FrictionCEnum);
+	element->GetInputValue(&m,gauss,FrictionMEnum);
+
+	/*Get velocity magnitude*/
+	IssmDouble vmag = VelMag(gauss);
+
+	/*Check to prevent dividing by zero if vmag==0*/
+	if(vmag==0. && (1./m-1.)<0.) alpha2=0.;
+	else alpha2=C*C*pow(vmag,(1./m-1.));
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+void Friction::GetAlpha2WeertmanTemp(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+	/*Here, we want to parameterize the friction as a function of temperature
+	 *
+	 * alpha2 = alpha2_weertman * 1/f(T)
+	 *
+	 * where f(T) = exp((T-Tpmp)/gamma)
+	 */
+
+	/*Intermediaries: */
+	IssmDouble  f,T,pressure,Tpmp,gamma;
+	IssmDouble  alpha2;
+
+	/*Get viscous part*/
+	this->GetAlpha2Weertman(&alpha2,gauss);
+
+	/*Get pressure melting point (Tpmp) for local pressure and get current temperature*/
+	element->GetInputValue(&T,gauss,TemperatureEnum);
+	element->GetInputValue(&pressure,gauss,PressureEnum);
+	Tpmp = element->TMeltingPoint(pressure);
+
+	/*Compute scaling parameter*/
+	element->parameters->FindParam(&gamma,FrictionGammaEnum);
+	alpha2 = alpha2 / exp((T-Tpmp)/gamma);
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+void Friction::GetAlpha2PISM(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+	/*Here, we want to parameterize the friction using a pseudoplastic friction law,
+	 * computing the basal shear stress as
+	 *
+	 * alpha2 = tau_c (u_b/(abs(u_b)^(1-q)*u_0^q))
+	 *
+	 * The yield stress tau_c is a function of the effective pressure N
+	 * using a Mohr-Coloumb criterion, so that
+	 * tau_c = tan(phi)*N,
+	 * where phi is the till friction angle, representing sediment strength
+	 *
+	 * The effective pressure is given by Eq. (5) in Aschwanden et al. 2016:
+	 *
+	 * N = delta * P0 * 10^((e_0/Cc)(1-(W/Wmax)))
+	 *
+	 * W is calculated by a non-conserving hydrology model in HydrologyPismAnalysis.cpp
+	 *
+	 * see Aschwanden et al. 2016 and Bueler and Brown, 2009 for more details
+	 */
+
+	/*compute ice overburden pressure P0*/
+	IssmDouble thickness,base,P0;
+	element->GetInputValue(&thickness, gauss,ThicknessEnum);
+	element->GetInputValue(&base, gauss,BaseEnum);
+	//element->GetInputValue(&sealevel, gauss,SealevelEnum);
+	IssmDouble rho_ice   = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble gravity   = element->FindParam(ConstantsGEnum);
+	P0 = gravity*rho_ice*thickness;
+
+	/*Compute effective pressure*/
+	IssmDouble  N,delta,W,Wmax,e0,Cc;
+	element->parameters->FindParam(&delta,FrictionDeltaEnum);
+	element->parameters->FindParam(&e0,FrictionVoidRatioEnum);
+	element->GetInputValue(&Cc,gauss,FrictionSedimentCompressibilityCoefficientEnum);
+	element->GetInputValue(&W,gauss,WatercolumnEnum);
+	element->GetInputValue(&Wmax,gauss,HydrologyWatercolumnMaxEnum);
+
+ 	/*Check that water column height is within 0 and upper bound, correct if needed*/
+ 	if(W>Wmax) W=Wmax;
+ 	if(W<0)    W=0.;
+
+	N = delta*P0*pow(10.,(e0/Cc)*(1.-W/Wmax));
+
+	/*Get till friction angles, defined by user [deg]*/
+	IssmDouble phi;
+	element->GetInputValue(&phi,gauss,FrictionTillFrictionAngleEnum);
+
+	/*Convert till friction angle from user-defined deg to rad, which Matlab uses*/
+	phi = phi*PI/180.;
+
+	/*Compute yield stress following a Mohr-Colomb criterion*/
+	IssmDouble tau_c = N*tan(phi);
+
+	/*Compute basal speed*/
+	IssmDouble ub;
+	element->GetInputValue(&ub,gauss,VelEnum);
+
+	/*now compute alpha^2*/
+	IssmDouble u0,q;
+	element->parameters->FindParam(&u0,FrictionThresholdSpeedEnum);
+	element->parameters->FindParam(&q,FrictionPseudoplasticityExponentEnum);
+	IssmDouble alpha2 = tau_c/(pow(ub+1.e-10,1.-q)*pow(u0,q));
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+void Friction::GetAlpha2Schoof(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	/*This routine calculates the basal friction coefficient
+	 *
+	 *               C^2 |u_b|^(m-1)
+	 * alpha2= __________________________
+	 *          (1+(C^2/(Cmax Neff))^1/m |u_b| )^m
+	 *
+	 * */
+
+	/*diverse: */
+	IssmDouble  C,Cmax,m,alpha2;
+
+	/*Recover parameters: */
+	element->GetInputValue(&Cmax,gauss,FrictionCmaxEnum);
+	element->GetInputValue(&C,gauss,FrictionCEnum);
+	element->GetInputValue(&m,gauss,FrictionMEnum);
+
+
+	/*Get effective pressure*/
+	bool ispwStochastic;
+	IssmDouble Neff;
+	element->parameters->FindParam(&ispwStochastic,StochasticForcingIsWaterPressureEnum);
+	if(ispwStochastic){
+		/*Retrieve stochastic water pressure and compute ice pressure*/
+		IssmDouble p_ice,p_water,Neff_limit;
+		element->GetInputValue(&p_water,gauss,FrictionWaterPressureEnum);
+		element->parameters->FindParam(&Neff_limit,FrictionEffectivePressureLimitEnum);
+		p_ice = IcePressure(gauss);
+		Neff  = max(Neff_limit*p_ice, p_ice - p_water);
+	}	
+	else{
+		/*Compute effective pressure directly*/
+		Neff = EffectivePressure(gauss);
+	}
+
+	/*Get velocity magnitude*/
+	IssmDouble ub = VelMag(gauss);
+
+	/*Compute alpha^2*/
+	if((ub<1e-10) ||(Neff==0.0)){
+		alpha2 = 0.;
+	}
+	else{
+		alpha2= (C*C*pow(ub,m-1.)) / pow(1.+  pow(C*C/(Cmax*Neff),1./m)*ub,m);
+	}
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+void Friction::GetAlpha2Tsai(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	/*This routine calculates the basal friction coefficient
+	 *
+	 * alpha2= min(C |ub|^m , f N ) / |ub|
+	 *
+	 * */
+
+	/*diverse: */
+	IssmDouble  C,f,m,alpha2;
+
+	/*Recover parameters: */
+	element->GetInputValue(&f,gauss,FrictionfEnum);
+	element->GetInputValue(&C,gauss,FrictionCEnum);
+	element->GetInputValue(&m,gauss,FrictionMEnum);
+
+	/*Get effective pressure and velocity magnitude*/
+	IssmDouble N  = EffectivePressure(gauss);
+	IssmDouble ub = VelMag(gauss);
+
+	/*Compute alpha^2*/
+	if(ub<1e-10){
+		alpha2 = 0.;
+	}
+	else{
+		alpha2= C*pow(ub,m);
+
+		if(alpha2>f*N) alpha2 = f*N;
+
+		alpha2 = alpha2/ub;
+	}
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+void Friction::GetAlpha2Coulomb2(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	/*This routine calculates the basal friction coefficient
+	 *
+	 *               C^2 |u_b|^(m-1) * (.5*N)
+	 * alpha2= ___________________________________
+	 *          (C^(2/m) |u_b| + (0.5*N)^(1/m) )^m
+	 *
+	 * */
+
+	/*diverse: */
+	IssmDouble  C,m,alpha2;
+
+	/*Recover parameters: */
+	element->GetInputValue(&C,gauss,FrictionCEnum);
+	element->GetInputValue(&m,gauss,FrictionMEnum);
+
+	/*Get effective pressure and velocity magnitude*/
+	IssmDouble N  = EffectivePressure(gauss);
+	IssmDouble ub = VelMag(gauss);
+
+	/*Compute alpha^2*/
+	if(ub<1e-10){
+		alpha2 = 0.;
+	}
+	else{
+		alpha2= (pow(C,2)*pow(ub,m-1.)*(0.5*N)) / pow(pow(C,2./m)*ub + pow(0.5*N,1./m),m);
+	}
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+void Friction::GetAlpha2RegCoulomb(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	/*This routine calculates the basal friction coefficient
+	 *
+	 *               C |u_b|^(1/m-1)
+	 * alpha2= __________________________
+	 *          (|u_b|/u0 + 1 )^(1/m)
+	 *
+	 * */
+
+	/*diverse: */
+	IssmDouble  C,coeff,u0,m,alpha2;
+
+	/*Recover parameters: */
+	element->GetInputValue(&coeff,gauss,FrictionCEnum);
+	element->GetInputValue(&m,gauss,FrictionMEnum);
+	element->parameters->FindParam(&u0,FrictionU0Enum);
+
+	/* scale C for a better inversion */
+	C = coeff*coeff;
+
+	/*Get velocity magnitude*/
+	IssmDouble ub = VelMag(gauss);
+
+	/*Check to prevent dividing by zero if vmag==0*/
+	if(ub==0.) {
+		alpha2=0.;
+	}
+	else {
+		/*Compute alpha^2*/
+		alpha2= (C*pow(ub,1./m-1.)) / pow(ub/u0 + 1.,1./m);
+	}
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+void Friction::GetAlpha2RegCoulomb2(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	/*This routine calculates the basal friction coefficient
+	 *
+	 *               C N |u_b|^(1/m-1)
+	 * alpha2= __________________________
+	 *          (|u_b| + K N^m )^(1/m)
+	 *
+	 * */
+
+	/*diverse: */
+	IssmDouble  C,K,m,alpha2;
+
+	/*Recover parameters: */
+	element->GetInputValue(&C,gauss,FrictionCEnum);
+	element->GetInputValue(&m,gauss,FrictionMEnum);
+	element->GetInputValue(&K,gauss,FrictionKEnum);
+
+	/*Get velocity magnitude*/
+	IssmDouble ub = VelMag(gauss);
+	IssmDouble Neff = EffectivePressure(gauss);
+
+	/*Check to prevent dividing by zero if vmag==0*/
+	if(ub==0. && (m-1.)<0) {
+		alpha2=0.;
+	}
+	else {
+		/*Compute alpha^2*/
+		alpha2= (C*pow(ub,1./m-1.)) * Neff / pow((ub+pow(K*Neff,m)),1./m);
+	}
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+IssmDouble Friction::EffectivePressure(Gauss* gauss){/*{{{*/
+	/*Get effective pressure as a function of  flag */
+
+	/*diverse: */
+	int         coupled_flag;
+	IssmDouble  thickness,base,sealevel;
+	IssmDouble  p_ice,p_water;
+	IssmDouble  Neff,Neff_limit;
+
+	/*Recover parameters: */
+	element->parameters->FindParam(&coupled_flag,FrictionCouplingEnum);
+	element->parameters->FindParam(&Neff_limit,FrictionEffectivePressureLimitEnum);
+
+	/*Compute ice pressure*/
+	p_ice = IcePressure(gauss);
+
+	/*From base and thickness, compute effective pressure when drag is viscous, or get Neff from forcing:*/
+	switch(coupled_flag){
+		case 0:{
+			element->GetInputValue(&base, gauss,BaseEnum);
+			element->GetInputValue(&sealevel, gauss,SealevelEnum);
+			IssmDouble rho_water = element->FindParam(MaterialsRhoSeawaterEnum);
+			IssmDouble gravity   = element->FindParam(ConstantsGEnum);
+			p_water = rho_water*gravity*(sealevel-base);
+			Neff = p_ice - p_water;
+		}
+			break;
+		case 1:{
+			p_water = 0.;
+			Neff = p_ice - p_water;
+		}
+			break;
+		case 2:{
+			element->GetInputValue(&base, gauss,BaseEnum);
+			element->GetInputValue(&sealevel, gauss,SealevelEnum);
+			IssmDouble rho_water = element->FindParam(MaterialsRhoSeawaterEnum);
+			IssmDouble gravity   = element->FindParam(ConstantsGEnum);
+			p_water = max(0.,rho_water*gravity*(sealevel-base));
+			Neff = p_ice - p_water;
+		}
+			break;
+		case 3:{
+			element->GetInputValue(&Neff,gauss,FrictionEffectivePressureEnum);
+		}
+			break;
+		case 4:{
+			element->GetInputValue(&Neff,gauss,EffectivePressureEnum);
+		}
+			break;
+		default:
+			_error_("not supported");
+	}
+
+	/*Make sure Neff is positive*/
+	if(Neff<Neff_limit*p_ice) Neff=Neff_limit*p_ice;
+
+	/*Return effective pressure*/
+	return Neff;
+
+}/*}}}*/
+IssmDouble Friction::IcePressure(Gauss* gauss){/*{{{*/
+	/*Get ice pressure*/
+
+	IssmDouble  thickness,p_ice;
+	/*Recover Inputs and Parameters*/
+	element->GetInputValue(&thickness, gauss,ThicknessEnum);
+	IssmDouble rho_ice = element->FindParam(MaterialsRhoIceEnum);
+	IssmDouble gravity = element->FindParam(ConstantsGEnum);
+
+	/*Compute*/
+	p_ice = gravity*rho_ice*thickness;
+
+	/*Return ice pressure*/
+	return p_ice;
+
+}/*}}}*/
+IssmDouble Friction::SubglacialWaterPressure(Gauss* gauss){/*{{{*/
+	/*Get water pressure as a function of  flag */
+
+	int         coupled_flag;
+	IssmDouble  base,sealevel,p_water;
+
+	/*Recover parameters: */
+	element->parameters->FindParam(&coupled_flag,FrictionCouplingEnum);
+
+	switch(coupled_flag){
+		case 0:{
+			element->GetInputValue(&base, gauss,BaseEnum);
+			element->GetInputValue(&sealevel, gauss,SealevelEnum);
+			IssmDouble rho_water = element->FindParam(MaterialsRhoSeawaterEnum);
+			IssmDouble gravity   = element->FindParam(ConstantsGEnum);
+			p_water = rho_water*gravity*(sealevel-base);
+		}
+			break;
+		case 1:{
+			p_water = 0.;
+		}
+			break;
+		case 2:{
+			element->GetInputValue(&base, gauss,BaseEnum);
+			element->GetInputValue(&sealevel, gauss,SealevelEnum);
+			IssmDouble rho_water = element->FindParam(MaterialsRhoSeawaterEnum);
+			IssmDouble gravity   = element->FindParam(ConstantsGEnum);
+			p_water = max(0.,rho_water*gravity*(sealevel-base));
+		}
+			break;
+		case 3:{
+			_error_("water pressure not computed for coupling==3 in friction law");
+		}
+			break;
+		case 4:{
+			_error_("water pressure not computed for coupling==4 in friction law");
+		}
+			break;
+		default:
+			_error_("not supported");
+	}
+
+	/*Return water pressure*/
+	return p_water;
+
+}/*}}}*/
+IssmDouble Friction::VelMag(Gauss* gauss){/*{{{*/
+	/*Get the velocity magnitude as a function of flag */
+
+	/*diverse*/
+	IssmDouble vx,vy,vz,vmag;
+
+	this->vx_input->GetInputValue(&vx, gauss);
+	this->vy_input->GetInputValue(&vy, gauss);
+
+	if ((this->vz_input == NULL) || (this->apply_dim<3.)) vz = 0.0;
+	else this->vz_input->GetInputValue(&vz, gauss);
+
+	if (this->apply_dim<2.) vy = 0.0;
+
+	vmag = sqrt(vx*vx+vy*vy+vz*vz);
+	return vmag;
+}/*}}}*/
+void Friction::GetBasalSlidingSpeeds(IssmDouble* pvx, Gauss* gauss){/*{{{*/
+
+	this->vx_input->GetInputValue(pvx, gauss);
+	/*Checks*/
+	_assert_(!xIsNan<IssmDouble>(*pvx));
+	_assert_(!xIsInf<IssmDouble>(*pvx));
+}/*}}}*/
+void Friction::GetBasalSlidingSpeeds(IssmDouble* pvx, IssmDouble* pvy, Gauss* gauss){/*{{{*/
+
+	this->vx_input->GetInputValue(pvx, gauss);
+	this->vy_input->GetInputValue(pvy, gauss);
+	/*Checks*/
+	_assert_(!xIsNan<IssmDouble>(*pvx));
+	_assert_(!xIsInf<IssmDouble>(*pvx));
+	_assert_(!xIsNan<IssmDouble>(*pvy));
+	_assert_(!xIsInf<IssmDouble>(*pvy));
+}/*}}}*/
+void Friction::GetBasalSlidingSpeeds(IssmDouble* pvx, IssmDouble* pvy, IssmDouble* pvz, Gauss* gauss){/*{{{*/
+
+	this->vx_input->GetInputValue(pvx, gauss);
+	this->vy_input->GetInputValue(pvy, gauss);
+	this->vz_input->GetInputValue(pvz, gauss);
+	/*Checks*/
+	_assert_(!xIsNan<IssmDouble>(*pvx));
+	_assert_(!xIsInf<IssmDouble>(*pvx));
+	_assert_(!xIsNan<IssmDouble>(*pvy));
+	_assert_(!xIsInf<IssmDouble>(*pvy));
+	_assert_(!xIsNan<IssmDouble>(*pvz));
+	_assert_(!xIsInf<IssmDouble>(*pvz));
+}/*}}}*/
+
+/*IO*/
+void FrictionUpdateInputs(Elements* elements,Inputs* inputs,IoModel* iomodel){/*{{{*/
+
+	/*Intermediaries*/
+	int    frictionlaw;
+	int    frictioncoupling;
+
+	/*Friction law variables*/
+	iomodel->FindConstant(&frictionlaw,"md.friction.law");
+	switch(frictionlaw){
+		case 1:
+			iomodel->FindConstant(&frictioncoupling,"md.friction.coupling");
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.coefficient",FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.p",FrictionPEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.q",FrictionQEnum);
+			if(frictioncoupling==3){
+				iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",FrictionEffectivePressureEnum);}
+			else if(frictioncoupling==4){
+				iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",EffectivePressureEnum);
+			}
+			break;
+		case 2:
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.C",FrictionCEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.m",FrictionMEnum);
+			break;
+		case 3:
+			iomodel->FindConstant(&frictioncoupling,"md.friction.coupling");
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.C",FrictionCEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.As",FrictionAsEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.q",FrictionQEnum);
+			if(frictioncoupling==3){
+				iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",FrictionEffectivePressureEnum);}
+			else if(frictioncoupling==4){
+				iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",EffectivePressureEnum);
+			}
+			break;
+		case 4:
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.coefficient",FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.p",FrictionPEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.q",FrictionQEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.initialization.pressure",PressureEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.initialization.temperature",TemperatureEnum);
+			iomodel->FindConstant(&frictioncoupling,"md.friction.coupling");
+			break;
+		case 5:
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.coefficient",FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.p",FrictionPEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.q",FrictionQEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.water_layer",FrictionWaterLayerEnum);
+			break;
+		case 6:
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.C",FrictionCEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.m",FrictionMEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.initialization.pressure",PressureEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.initialization.temperature",TemperatureEnum);
+			break;
+		case 7:
+			iomodel->FindConstant(&frictioncoupling,"md.friction.coupling");
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.coefficient",FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.coefficientcoulomb",FrictionCoefficientcoulombEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.p",FrictionPEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.q",FrictionQEnum);
+			if(frictioncoupling==3){
+				iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",FrictionEffectivePressureEnum);}
+			else if(frictioncoupling==4){
+				iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",EffectivePressureEnum);
+
+			}
+			break;
+		case 8:
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.coefficient",FrictionCoefficientEnum);
+			break;
+		case 9:
+			iomodel->FetchDataToInput(inputs,elements,"md.initialization.temperature",TemperatureEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.coefficient",FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.pressure_adjusted_temperature",FrictionPressureAdjustedTemperatureEnum);
+			InputUpdateFromConstantx(inputs,elements,1.,FrictionPEnum);
+			InputUpdateFromConstantx(inputs,elements,1.,FrictionQEnum);
+			break;
+		case 10:
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.till_friction_angle",FrictionTillFrictionAngleEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.sediment_compressibility_coefficient",FrictionSedimentCompressibilityCoefficientEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.hydrology.watercolumn_max",HydrologyWatercolumnMaxEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.initialization.watercolumn",WatercolumnEnum,0.);
+			break;
+		case 11:
+			iomodel->FindConstant(&frictioncoupling,"md.friction.coupling");
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.m",FrictionMEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.C",FrictionCEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.Cmax",FrictionCmaxEnum);
+			if(frictioncoupling==3){
+				iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",FrictionEffectivePressureEnum);}
+			else if(frictioncoupling==4){
+				iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",EffectivePressureEnum);
+			}
+			break;
+		case 12:
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.m",FrictionMEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.C",FrictionCEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.f",FrictionfEnum);
+			break;
+		case 13:
+			iomodel->FindConstant(&frictioncoupling,"md.friction.coupling");
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.C",FrictionCEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.m",FrictionMEnum);
+			if(frictioncoupling==3){
+				iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",FrictionEffectivePressureEnum);}
+			else if(frictioncoupling==4){
+				iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",EffectivePressureEnum);
+			}
+			break;
+		case 14:
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.C",FrictionCEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.m",FrictionMEnum);
+			break;
+		case 15:
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.C",FrictionCEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.m",FrictionMEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.friction.K",FrictionKEnum);
+			break;
+		default:
+			_error_("friction law "<< frictionlaw <<" not supported");
+	}
+
+#ifdef _HAVE_ANDROID_
+	inputs->DuplicateInput(FrictionCoefficientEnum,AndroidFrictionCoefficientEnum);
+#endif
+
+}/*}}}*/
+void FrictionUpdateParameters(Parameters* parameters,IoModel* iomodel){/*{{{*/
+
+	parameters->AddObject(iomodel->CopyConstantObject("md.friction.law",FrictionLawEnum));
+
+	/*Set default linearize parameter to 0 for now*/
+	parameters->AddObject(new IntParam(FrictionLinearizeEnum,0));
+
+	int frictionlaw;
+	iomodel->FindConstant(&frictionlaw,"md.friction.law");
+	switch(frictionlaw){
+		case 1:
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.linearize",FrictionLinearizeEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum));
+			break;
+		case 2:
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.linearize",FrictionLinearizeEnum));
+			break;
+		case 3:
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum));
+			break;
+		case 4:
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum));
+			break;
+		case 5:
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.f",FrictionFEnum));
+			break;
+		case 6:
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum));
+			break;
+		case 7:
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum));
+			break;
+		case 8:
+			break;
+		case 9:
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum));
+			parameters->AddObject(new IntParam(FrictionCouplingEnum,2));/*comment this line to use effective pressure from Beuler and Pelt (2015)*/
+			break;
+		case 10:
+			parameters->AddObject(new IntParam(FrictionCouplingEnum,2)); /*comment this line to use effective pressure from Beuler and Pelt (2015)*/
+			parameters->AddObject(new DoubleParam(FrictionEffectivePressureLimitEnum,0.));
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.pseudoplasticity_exponent",FrictionPseudoplasticityExponentEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.threshold_speed",FrictionThresholdSpeedEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.delta",FrictionDeltaEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.void_ratio",FrictionVoidRatioEnum));
+			break;
+		case 11:
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum));
+			break;
+		case 12:
+			parameters->AddObject(new IntParam(FrictionCouplingEnum,2));
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum));
+			break;
+		case 13:
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum));
+			break;
+		case 14:
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.u0",FrictionU0Enum));
+			break;
+		case 15:
+			parameters->AddObject(new IntParam(FrictionCouplingEnum,2));
+			parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum));
+			break;
+		default: _error_("Friction law "<<frictionlaw<<" not implemented yet");
+	}
+
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Friction.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Friction.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Friction.h	(revision 27955)
@@ -0,0 +1,76 @@
+/*!\file Friction.h
+ * \brief: header file for friction object
+ */
+
+#ifndef _FRICTION_H_
+#define _FRICTION_H_
+
+/*Headers:*/
+class Inputs;
+class Elements;
+class Parameters;
+class IoModel;
+class GaussPenta;
+class GaussTria;
+
+class Friction{
+
+	public:
+		Element    *element;
+		int         law;
+		int         domaintype;
+		int         linearize;
+		IssmDouble  apply_dim;
+		Input      *vx_input;
+		Input      *vy_input;
+		Input      *vz_input;
+		IssmDouble *alpha2_list;
+		IssmDouble *alpha2_complement_list;
+
+		/*methods: */
+		Friction();
+		Friction(Element* element_in);
+		Friction(Element* element_in, int dim);
+		Friction(Element* element_in, IssmDouble dim);
+		~Friction();
+
+		void  Echo(void);
+		void  GetAlphaComplement(IssmDouble* alpha_complement,Gauss* gauss);
+		void  GetAlphaHydroComplement(IssmDouble* alpha_complement,Gauss* gauss);
+		void  GetAlphaTempComplement(IssmDouble* alpha_complement,Gauss* gauss);
+		void  GetAlphaViscousComplement(IssmDouble* alpha_complement,Gauss* gauss);
+		void  GetAlphaSchoofComplement(IssmDouble* alpha_complement,Gauss* gauss);
+		void  GetAlphaCoulomb2Complement(IssmDouble* alpha_complement,Gauss* gauss);
+		void  GetAlphaRegCoulombComplement(IssmDouble* alpha_complement,Gauss* gauss);
+		void  GetAlphaWeertmanComplement(IssmDouble* alpha_complement,Gauss* gauss);
+		void  GetAlpha2(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2Coulomb(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2Coulomb2(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2Hydro(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2Josh(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2Shakti(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2Temp(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2Viscous(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2WaterLayer(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2Weertman(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2WeertmanTemp(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2PISM(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2Schoof(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2RegCoulomb(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2RegCoulomb2(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2Tsai(IssmDouble* palpha2,Gauss* gauss);
+
+		IssmDouble EffectivePressure(Gauss* gauss);
+		IssmDouble IcePressure(Gauss* gauss);
+		IssmDouble SubglacialWaterPressure(Gauss* gauss);
+		IssmDouble VelMag(Gauss* gauss);
+		void GetBasalSlidingSpeeds(IssmDouble* pvx, Gauss* gauss);
+		void GetBasalSlidingSpeeds(IssmDouble* pvx, IssmDouble* pvy, Gauss* gauss);
+		void GetBasalSlidingSpeeds(IssmDouble* pvx, IssmDouble* pvy, IssmDouble* pvz, Gauss* gauss);
+};
+
+/*Friction related IO*/
+void FrictionUpdateParameters(Parameters* parameters,IoModel* iomodel);
+void FrictionUpdateInputs(Elements* elements,Inputs* inputs,IoModel* iomodel);
+
+#endif  /* _FRICTION_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Load.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Load.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Load.h	(revision 27955)
@@ -0,0 +1,41 @@
+/*!\file:  Load.h
+ * \brief abstract class for Load object
+ * This class is a place holder for the Icefront  and the Penpair loads.
+ * It is derived from Load, so DataSets can contain them.
+ */ 
+
+#ifndef _LOAD_H_
+#define _LOAD_H_
+
+/*Headers:*/
+class Node;
+template <class doublematrix> class Matrix;
+template <class doubletype> class Vector;
+class Elements;
+class Loads;
+class Nodes;
+class Vertices;
+class Materials;
+class Parameters;
+#include "../../datastructures/datastructures.h"
+
+class Load: public Object{
+
+	public: 
+		virtual       ~Load(){};
+		virtual void  Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters)=0;
+		virtual void  CreateJacobianMatrix(Matrix<IssmDouble>* Jff)=0;
+		virtual void  CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs)=0;
+		virtual void  CreatePVector(Vector<IssmDouble>* pf)=0;
+		virtual void  GetNodesLidList(int* lidlist)=0;
+		virtual void  GetNodesSidList(int* sidlist)=0;
+		virtual int   GetNumberOfNodes(void)=0;
+		virtual bool  IsPenalty(void)=0;
+		virtual void  PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax)=0;
+		virtual void  PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs, IssmDouble kmax)=0;
+		virtual void  PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax)=0;
+		virtual void  ResetHooks()=0;
+		virtual void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters)=0;
+		virtual void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum)=0;
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Loads.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Loads.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Loads.cpp	(revision 27955)
@@ -0,0 +1,187 @@
+/*
+ * \file Loads.cpp
+ * \brief: Implementation of Loads class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <vector>
+#include <functional>
+#include <algorithm>
+
+#include "../../shared/io/Comm/IssmComm.h"
+#include "../../shared/Numerics/recast.h"
+#include "../../shared/Enum/EnumDefinitions.h"
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/MemOps/MemOps.h"
+#include "../../shared/io/Marshalling/Marshalling.h"
+#include "./Loads.h"
+#include "./Load.h"
+
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+Loads::Loads(){/*{{{*/
+	this->enum_type=LoadsEnum;
+	this->numrifts     = 0;
+	this->numpenalties = 0;
+	return;
+}
+/*}}}*/
+Loads::~Loads(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+Loads* Loads::Copy() {/*{{{*/
+
+	int num_proc = IssmComm::GetSize();
+
+	/*Copy dataset*/
+	Loads* output=new Loads();
+	output->sorted=this->sorted;
+	output->numsorted=this->numsorted;
+	output->presorted=this->presorted;
+	for(vector<Object*>::iterator obj=this->objects.begin() ; obj < this->objects.end(); obj++ ){
+		output->AddObject((*obj)->copy());
+	}
+
+	/*Build id_offsets and sorted_ids*/
+	int objsize = this->numsorted;
+	output->id_offsets=NULL;
+	output->sorted_ids=NULL;
+	if(this->sorted && objsize>0 && this->id_offsets){
+		output->id_offsets=xNew<int>(objsize);
+		xMemCpy<int>(output->id_offsets,this->id_offsets,objsize);
+	}
+	if(this->sorted && objsize>0 && this->sorted_ids){
+		output->sorted_ids=xNew<int>(objsize);
+		xMemCpy<int>(output->sorted_ids,this->sorted_ids,objsize);
+	}
+
+	/*Copy other fields*/
+	output->numrifts = this->numrifts;
+	output->numpenalties = this->numpenalties;
+
+	return output;
+}
+/*}}}*/
+void  Loads::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = LoadsEnum;
+	marshallhandle->call(object_enum);
+	marshallhandle->call(this->numrifts);
+	marshallhandle->call(this->numpenalties);
+
+	DataSet::Marshall(marshallhandle);
+}
+/*}}}*/
+
+/*Numerics:*/
+void Loads::Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters){/*{{{*/
+
+	vector<Object*>::iterator object;
+	for(object=objects.begin() ; object < objects.end(); object++){
+		Load* load=xDynamicCast<Load*>(*object);
+		load->Configure(elements,loads,nodes,vertices,materials,parameters);
+	}
+}
+/*}}}*/
+void Loads::Finalize(){/*{{{*/
+
+	/*Count Rifts and penalties*/
+	int ispenalty=0;
+	int isrift=0;
+	int allcount;
+
+	/*Now go through all loads, and get how many nodes they own, unless they are clone nodes: */
+	for(Object* & object : this->objects){
+      Load* load = xDynamicCast<Load*>(object);
+		if(load->IsPenalty()){
+			ispenalty++;
+		}
+      if(load->ObjectEnum()==RiftfrontEnum){
+         isrift++;
+      }
+	}
+
+	/*Grab sum of all cpus: */
+	ISSM_MPI_Allreduce((void*)&ispenalty,(void*)&allcount,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
+	this->numpenalties = allcount;
+
+	ISSM_MPI_Allreduce((void*)&isrift,(void*)&allcount,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
+	this->numrifts= allcount;
+
+}
+/*}}}*/
+bool Loads::IsPenalty(){/*{{{*/
+
+	if(this->numpenalties>0)
+	 return true;
+	else
+	 return false;
+}
+/*}}}*/
+int  Loads::MaxNumNodes(){/*{{{*/
+
+	int max=0;
+	int allmax;
+
+	/*Now go through all loads, and get how many nodes they own, unless they are clone nodes: */
+	for(Object* & object : this->objects){
+      Load* load = xDynamicCast<Load*>(object);
+		int numnodes=load->GetNumberOfNodes();
+		if(numnodes>max)max=numnodes;
+	}
+
+	/*Grab max of all cpus: */
+	ISSM_MPI_Allreduce((void*)&max,(void*)&allmax,1,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
+	return allmax;
+}
+/*}}}*/
+int  Loads::NumberOfLoads(void){/*{{{*/
+
+	int localloads;
+	int numberofloads;
+
+	/*Get number of local loads*/
+	localloads=this->Size();
+
+	/*figure out total number of loads combining all the cpus (no clones here)*/
+	ISSM_MPI_Reduce(&localloads,&numberofloads,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&numberofloads,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	return numberofloads;
+}
+/*}}}*/
+void Loads::ResetHooks(){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Load* load=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		load=xDynamicCast<Load*>((*object));
+		load->ResetHooks();
+
+	}
+
+}
+/*}}}*/
+void Loads::SetCurrentConfiguration(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Load* load=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+		load=xDynamicCast<Load*>(*object);
+		load->SetCurrentConfiguration(elements,loads,nodes,vertices,materials,parameters);
+	}
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Loads.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Loads.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Loads.h	(revision 27955)
@@ -0,0 +1,41 @@
+#ifndef _CONTAINER_LOADS_H_
+#define  _CONTAINER_LOADS_H_
+
+/*forward declarations */
+#include "../../datastructures/datastructures.h"
+class Materials;
+class Parameters;
+class Elements;
+class Vertices;
+class Nodes;
+
+/*!\brief Declaration of Loads class.
+ *
+ * Declaration of Loads class.  Loads are vector lists (Containers) of Load objects.
+ */ 
+class Loads: public DataSet{
+
+	public:
+
+		int numrifts;
+		int numpenalties;
+
+		/*constructors, destructors*/
+		Loads();
+		~Loads();
+
+		/*Objects virtual functions*/
+		Loads* Copy();
+		void   Marshall(MarshallHandle* marshallhandle);
+
+		/*numerics*/
+		void  Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
+		bool  IsPenalty();
+		void  Finalize();
+		int   MaxNumNodes();
+		int   NumberOfLoads();
+		void  ResetHooks();
+		void  SetCurrentConfiguration(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
+};
+
+#endif //ifndef _LOADS_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Moulin.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Moulin.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Moulin.cpp	(revision 27955)
@@ -0,0 +1,512 @@
+/*!\file Moulin.c
+ * \brief: implementation of the Moulin object
+ */
+
+/*Headers*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+#include "../../analyses/analyses.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMVERTICES   1
+
+/*Moulin constructors and destructor*/
+Moulin::Moulin(){/*{{{*/
+	this->parameters=NULL;
+	this->hnode=NULL;
+	this->hvertex=NULL;
+	this->node=NULL;
+	this->helement=NULL;
+	this->element=NULL;
+}
+/*}}}*/
+Moulin::Moulin(int id, int index, IoModel* iomodel){ /*{{{*/
+
+	int pengrid_node_id;
+	int pengrid_element_id;
+
+	/*Some checks if debugging activated*/
+	_assert_(iomodel->singlenodetoelementconnectivity);
+	_assert_(index>=0 && index<iomodel->numberofvertices);
+	_assert_(id);
+
+	/*id: */
+	this->id=id;
+
+	/*hooks: */
+	pengrid_node_id=index+1;
+	pengrid_element_id=iomodel->singlenodetoelementconnectivity[index];
+	_assert_(pengrid_element_id);
+
+	this->hnode=new Hook(&pengrid_node_id,1);
+	this->hvertex=new Hook(&pengrid_node_id,1);
+	this->helement=new Hook(&pengrid_element_id,1);
+
+	//this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
+	this->parameters=NULL;
+	this->node=NULL;
+	this->vertex=NULL;
+	this->element=NULL;
+}
+/*}}}*/
+Moulin::~Moulin(){/*{{{*/
+	delete hnode;
+	delete hvertex;
+	delete helement;
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Moulin::copy() {/*{{{*/
+
+	Moulin* pengrid=NULL;
+
+	pengrid=new Moulin();
+
+	/*copy fields: */
+	pengrid->id=this->id;
+
+	/*point parameters: */
+	pengrid->parameters=this->parameters;
+
+	/*now deal with hooks and objects: */
+	pengrid->hnode=(Hook*)this->hnode->copy();
+	pengrid->hvertex=(Hook*)this->hvertex->copy();
+	pengrid->helement=(Hook*)this->helement->copy();
+
+	/*corresponding fields*/
+	pengrid->node  =(Node*)pengrid->hnode->delivers();
+	pengrid->vertex=(Vertex*)pengrid->hvertex->delivers();
+	pengrid->element=(Element*)pengrid->helement->delivers();
+
+	return pengrid;
+}
+/*}}}*/
+void    Moulin::DeepEcho(void){/*{{{*/
+
+	_printf_("Moulin:\n");
+	_printf_("   id: " << id << "\n");
+	hnode->DeepEcho();
+	hvertex->DeepEcho();
+	helement->DeepEcho();
+	_printf_("   parameters\n");
+	parameters->DeepEcho();
+}
+/*}}}*/
+void    Moulin::Echo(void){/*{{{*/
+
+	_printf_("Moulin:\n");
+	_printf_("   id: " << id << "\n");
+	hnode->Echo();
+	hvertex->Echo();
+	helement->Echo();
+	_printf_("   parameters\n");
+	parameters->Echo();
+	//this->DeepEcho();
+}
+/*}}}*/
+int     Moulin::Id(void){ return id; }/*{{{*/
+/*}}}*/
+void    Moulin::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	_assert_(this);
+
+	/*ok, marshall operations: */
+	int object_enum = MoulinEnum;
+	marshallhandle->call(object_enum);
+	marshallhandle->call(this->id);
+
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD){
+		this->hnode    = new Hook();
+		this->hvertex  = new Hook();
+		this->helement = new Hook();
+	}
+
+	this->hnode->Marshall(marshallhandle);
+	this->hvertex->Marshall(marshallhandle);
+	this->helement->Marshall(marshallhandle);
+
+	/*corresponding fields*/
+	node   =(Node*)this->hnode->delivers();
+	vertex =(Vertex*)this->hvertex->delivers();
+	element=(Element*)this->helement->delivers();
+}
+/*}}}*/
+int     Moulin::ObjectEnum(void){/*{{{*/
+
+	return MoulinEnum;
+}
+/*}}}*/
+
+/*Load virtual functions definitions:*/
+void  Moulin::Configure(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+	/*Take care of hooking up all objects for this load, ie links the objects in the hooks to their respective
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	hnode->configure(nodesin);
+	hvertex->configure(verticesin);
+	helement->configure(elementsin);
+
+	/*Get corresponding fields*/
+	node=(Node*)hnode->delivers();
+	vertex=(Vertex*)hvertex->delivers();
+	element=(Element*)helement->delivers();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+}
+/*}}}*/
+void  Moulin::CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs){/*{{{*/
+
+	/*recover some parameters*/
+	ElementMatrix* Ke=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		case HydrologyGlaDSAnalysisEnum:
+			Ke = this->CreateKMatrixHydrologyGlaDS();
+			break;
+		case HydrologyShaktiAnalysisEnum:
+			/*do nothing: */
+			return;
+		case HydrologyDCInefficientAnalysisEnum:
+			/*do nothing: */
+			return;
+		case HydrologyDCEfficientAnalysisEnum:
+			/*do nothing: */
+			return;
+		default:
+			_error_("Don't know why we should be here");
+
+	}
+	/*Add to global matrix*/
+	if(Ke){
+		Ke->AddToGlobal(Kff,Kfs);
+		delete Ke;
+	}
+
+}
+/*}}}*/
+void  Moulin::CreatePVector(Vector<IssmDouble>* pf){/*{{{*/
+
+	ElementVector* pe=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		case HydrologyGlaDSAnalysisEnum:
+			pe = this->CreatePVectorHydrologyGlaDS();
+			break;
+		case HydrologyShaktiAnalysisEnum:
+			pe = this->CreatePVectorHydrologyShakti();
+			break;
+		case HydrologyDCInefficientAnalysisEnum:
+			pe = this->CreatePVectorHydrologyDCInefficient();
+			break;
+		case HydrologyDCEfficientAnalysisEnum:
+			pe = this->CreatePVectorHydrologyDCEfficient();
+			break;
+		default:
+			_error_("Don't know why we should be here");
+			/*No loads applied, do nothing: */
+			return;
+	}
+	if(pe){
+		pe->AddToGlobal(pf);
+		delete pe;
+	}
+
+}
+/*}}}*/
+void  Moulin::GetNodesLidList(int* lidlist){/*{{{*/
+
+	_assert_(lidlist);
+	_assert_(node);
+
+	lidlist[0]=node->Lid();
+}
+/*}}}*/
+void  Moulin::GetNodesSidList(int* sidlist){/*{{{*/
+
+	_assert_(sidlist);
+	_assert_(node);
+
+	sidlist[0]=node->Sid();
+}
+/*}}}*/
+int   Moulin::GetNumberOfNodes(void){/*{{{*/
+
+	return NUMVERTICES;
+}
+/*}}}*/
+bool  Moulin::IsPenalty(void){/*{{{*/
+	return false;
+}
+/*}}}*/
+void  Moulin::PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs,IssmDouble kmax){/*{{{*/
+
+	/*Don't do anything for now*/
+
+}
+/*}}}*/
+void  Moulin::PenaltyCreatePVector(Vector<IssmDouble>* pf,IssmDouble kmax){/*{{{*/
+
+	/*Don't do anything for now*/
+}
+/*}}}*/
+void  Moulin::ResetHooks(){/*{{{*/
+
+	this->node=NULL;
+	this->element=NULL;
+	this->parameters=NULL;
+
+	/*Get Element type*/
+	this->hnode->reset();
+	this->hvertex->reset();
+	this->helement->reset();
+
+}
+/*}}}*/
+void  Moulin::SetCurrentConfiguration(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+}
+/*}}}*/
+void  Moulin::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
+
+	/*Output */
+	int d_nz = 0;
+	int o_nz = 0;
+
+	if(!flags[this->node->Lid()]){
+
+		/*flag current node so that no other element processes it*/
+		flags[this->node->Lid()]=true;
+
+		flagsindices[flagsindices_counter[0]]=this->node->Lid();
+		flagsindices_counter[0]++;
+
+		/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
+		switch(set2_enum){
+			case FsetEnum:
+				if(node->FSize()){
+					if(this->node->IsClone())
+					 o_nz += 1;
+					else
+					 d_nz += 1;
+				}
+				break;
+			case GsetEnum:
+				if(node->gsize){
+					if(this->node->IsClone())
+					 o_nz += 1;
+					else
+					 d_nz += 1;
+				}
+				break;
+			case SsetEnum:
+				if(node->SSize()){
+					if(this->node->IsClone())
+					 o_nz += 1;
+					else
+					 d_nz += 1;
+				}
+				break;
+			default: _error_("not supported");
+		}
+	}
+
+	/*Assign output pointers: */
+	*pd_nz=d_nz;
+	*po_nz=o_nz;
+}
+/*}}}*/
+
+/*Update virtual functions definitions:*/
+void  Moulin::InputUpdateFromConstant(IssmDouble constant, int name){/*{{{*/
+	/*Nothing*/
+}
+/*}}}*/
+void  Moulin::InputUpdateFromConstant(int constant, int name){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Moulin::InputUpdateFromConstant(bool constant, int name){/*{{{*/
+
+	/*Don't do anything for now*/
+}
+/*}}}*/
+void  Moulin::InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols, int name, int type){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Moulin::InputUpdateFromVector(IssmDouble* vector, int name, int type){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Moulin::InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+
+ElementMatrix* Moulin::CreateKMatrixHydrologyGlaDS(void){/*{{{*/
+
+	/*If this node is not the master node (belongs to another partition of the
+	 * mesh), don't add the moulin input a second time*/
+	if(node->IsClone()) return NULL;
+
+	/*Initialize Element matrix*/
+	ElementMatrix* Ke=new ElementMatrix(&node,1,this->parameters);
+
+	/*Get all inputs and parameters*/
+	IssmDouble dt        = element->FindParam(TimesteppingTimeStepEnum);
+	IssmDouble rho_water = element->FindParam(MaterialsRhoFreshwaterEnum);
+	IssmDouble g         = element->FindParam(ConstantsGEnum);
+	IssmDouble Am        = 0.; //For now...
+
+	/*Load vector*/
+	if(dt>0){
+		Ke->values[0] = +Am/(rho_water*g)/dt;
+	}
+
+	/*Clean up and return*/
+	return Ke;
+}
+/*}}}*/
+ElementVector* Moulin::CreatePVectorHydrologyGlaDS(void){/*{{{*/
+
+	/*If this node is not the master node (belongs to another partition of the
+	 * mesh), don't add the moulin input a second time*/
+	if(node->IsClone()) return NULL;
+
+	/*Initialize Element vector*/
+	ElementVector* pe=new ElementVector(&node,1,this->parameters);
+
+	/*Get all inputs and parameters*/
+	IssmDouble dt        = element->FindParam(TimesteppingTimeStepEnum);
+	IssmDouble rho_water = element->FindParam(MaterialsRhoFreshwaterEnum);
+	IssmDouble g         = element->FindParam(ConstantsGEnum);
+	IssmDouble Am        = 0.; //For now...
+
+	/*Get hydraulic potential*/
+	IssmDouble phi_old,moulin_load;
+	element->GetInputValue(&phi_old,node,HydraulicPotentialOldEnum);
+	element->GetInputValue(&moulin_load,node,HydrologyMoulinInputEnum);
+
+	pe->values[0] = moulin_load;
+	if(dt>0.){
+		pe->values[0] += Am/(rho_water*g) * phi_old/dt;
+	}
+
+	/*Clean up and return*/
+	return pe;
+}
+/*}}}*/
+ElementVector* Moulin::CreatePVectorHydrologyShakti(void){/*{{{*/
+
+	/*If this node is not the master node (belongs to another partition of the
+	 * mesh), don't add the moulin input a second time*/
+	if(node->IsClone()) return NULL;
+
+	IssmDouble moulin_load;
+
+	/*Initialize Element matrix*/
+	ElementVector* pe=new ElementVector(&node,1,this->parameters);
+
+	this->element->GetInputValue(&moulin_load,node,HydrologyMoulinInputEnum);
+	pe->values[0]=moulin_load;
+
+	/*Clean up and return*/
+	return pe;
+}
+/*}}}*/
+ElementVector* Moulin::CreatePVectorHydrologyDCInefficient(void){/*{{{*/
+
+	/*If this node is not the master node (belongs to another partition of the
+	 * mesh), don't add the moulin input a second time*/
+	if(node->IsClone()) return NULL;
+	bool isefficientlayer, active_element;
+	IssmDouble moulin_load,dt;
+	IssmDouble epl_active;
+	/*Initialize Element matrix*/
+	ElementVector* pe=new ElementVector(&node,1,this->parameters);
+
+	this->element->GetInputValue(&moulin_load,node,HydrologydcBasalMoulinInputEnum);
+	parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+	parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum);
+
+	//Test version input in EPL when active
+	if(isefficientlayer){
+		this->element->GetInputValue(&active_element,HydrologydcMaskEplactiveEltEnum);
+		if(!active_element){
+			/* this->element->GetInputValue(&epl_active,node,HydrologydcMaskEplactiveNodeEnum); */
+			/* if(reCast<bool>(epl_active))pe->values[0]=0.0; */
+			/* else { */
+			pe->values[0]=moulin_load*dt;
+			/* 	if (moulin_load>0)_printf_("MoulinInput in Sed is "<<pe->values[0]<<"\n"); */
+			/* 	if (moulin_load>0)pe->Echo(); */
+			/* } */
+			//if (node->Sid()==4)_printf_("MoulinInput in Sed is "<<moulin_load*dt<<"\n");
+		}
+		else pe->values[0]=0.0;
+	}
+	else pe->values[0]=moulin_load*dt;
+
+	//Test only input in sed
+	/* pe->values[0]=moulin_load*dt; */
+
+	/*Clean up and return*/
+	return pe;
+}
+/*}}}*/
+ElementVector* Moulin::CreatePVectorHydrologyDCEfficient(void){/*{{{*/
+
+	/*If this node is not the master node (belongs to another partition of the
+	 * mesh), don't add the moulin input a second time*/
+
+	if(node->IsClone()) return NULL;
+	ElementVector* pe=new ElementVector(&node,1,this->parameters);
+
+	//Test Input in epl if active
+	/* IssmDouble epl_active; */
+	/* this->element->GetInputValue(&epl_active,node,HydrologydcMaskEplactiveNodeEnum); */
+	/* //if(node->Sid()==4)_printf_("Activity is "<<epl_active<<" \n"); */
+	/* if(reCast<bool>(epl_active)){ */
+	/* 	IssmDouble moulin_load,dt; */
+	/* 	this->element->GetInputValue(&moulin_load,node,HydrologydcBasalMoulinInputEnum); */
+	/* 	parameters->FindParam(&dt,TimesteppingTimeStepEnum); */
+	/* 	pe->values[0]=moulin_load*dt; */
+	/* 	if (moulin_load>0)_printf_("MoulinInput in Epl is "<<pe->values[1]<<"\n"); */
+
+	/* } */
+	/* 	else{ */
+	/* 		pe->values[0]=0.0; */
+	/* } */
+	// Test element only test
+	bool active_element;
+	this->element->GetInputValue(&active_element,HydrologydcMaskEplactiveEltEnum);
+	if(active_element){
+		IssmDouble moulin_load,dt;
+		this->element->GetInputValue(&moulin_load,node,HydrologydcBasalMoulinInputEnum);
+		parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+		pe->values[0]=moulin_load*dt;
+	}
+	else pe->values[0]=0.0;
+
+
+	//Test only input is sed
+	/* pe->values[0]=0.0; */
+
+	//Clean up and return
+	return pe;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Moulin.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Moulin.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Moulin.h	(revision 27955)
@@ -0,0 +1,87 @@
+/*!\file Moulin.h
+ * \brief: header file for pengrid object */
+
+#ifndef _MOULIN_H_
+#define _MOULIN_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./Load.h"
+class Hook;
+class Inputs;
+class Parameters;
+class IoModel;
+/*}}}*/
+
+class Moulin: public Load{
+
+	private: 
+
+		int id;
+
+		/*Hooks*/
+		Hook* hnode;     //hook to 1 node
+		Hook* hvertex;   //hook to 1 vertex
+		Hook* helement;  //hook to 1 element
+
+		/*Corresponding fields*/
+		Node    *node;
+		Vertex  *vertex;
+		Element *element;
+
+		Parameters* parameters; //pointer to solution parameters
+
+	public:
+
+		/*Moulin constructors, destructors {{{*/
+		Moulin();
+		Moulin(int index, int id, IoModel* iomodel);
+		~Moulin();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void  Marshall(MarshallHandle* marshallhandle);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{*/
+		void  InputUpdateFromConstant(IssmDouble constant, int name);
+		void  InputUpdateFromConstant(int constant, int name);
+		void  InputUpdateFromConstant(bool constant, int name);
+		void  InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
+		void  InputUpdateFromMatrixDakota(IssmDouble* matrix ,int nrows, int ncols, int name, int type);
+		void  InputUpdateFromVector(IssmDouble* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type);
+		/*}}}*/
+		/*Load virtual functions definitions: {{{*/
+		void  Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void  CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
+		void  CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
+		void  CreatePVector(Vector<IssmDouble>* pf);
+		void  GetNodesSidList(int* sidlist);
+		void  GetNodesLidList(int* lidlist);
+		int   GetNumberOfNodes(void);
+		bool  IsPenalty(void);
+		void  PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){_error_("Not implemented yet");};
+		void  PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
+		void  PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
+		void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
+		void  ResetHooks();
+		/*}}}*/
+
+		ElementMatrix* CreateKMatrixHydrologyGlaDS(void);
+		ElementVector* CreatePVectorHydrologyShakti(void);
+		ElementVector* CreatePVectorHydrologyGlaDS(void);
+		ElementVector* CreatePVectorHydrologyDCInefficient(void);
+		ElementVector* CreatePVectorHydrologyDCEfficient(void);
+};
+
+#endif  /* _MOULIN_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Neumannflux.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Neumannflux.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Neumannflux.cpp	(revision 27955)
@@ -0,0 +1,433 @@
+/*!\file Neumannflux.c
+ * \brief: implementation of the Neumannflux object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "shared/shared.h"
+#include "../classes.h"
+/*}}}*/	
+
+/*Load macros*/
+#define NUMVERTICES 2
+#define NUMNODES_BOUNDARY 2
+
+/*Neumannflux constructors and destructor*/
+Neumannflux::Neumannflux(){/*{{{*/
+	this->parameters = NULL;
+	this->helement   = NULL;
+	this->element    = NULL;
+	this->hnodes     = NULL;
+	this->hvertices  = NULL;
+	this->nodes      = NULL;
+}
+/*}}}*/
+Neumannflux::Neumannflux(int neumannflux_id,int i,IoModel* iomodel,int* segments){/*{{{*/
+
+	/*Some sanity checks*/
+	_assert_(segments);
+
+	/*neumannflux constructor data: */
+	int neumannflux_elem_id;
+	int neumannflux_vertex_ids[2];
+	int neumannflux_node_ids[2];
+
+	/*1: Get vertices ids*/
+	neumannflux_vertex_ids[0]=segments[3*i+0];
+	neumannflux_vertex_ids[1]=segments[3*i+1];
+
+	/*2: Get the ids of the nodes*/
+	neumannflux_node_ids[0]=neumannflux_vertex_ids[0];
+	neumannflux_node_ids[1]=neumannflux_vertex_ids[1];
+
+	/*Get element id*/
+	neumannflux_elem_id = segments[3*i+2];
+
+	/*Ok, we have everything to build the object: */
+	this->id=neumannflux_id;
+
+	/*Hooks: */
+	this->hnodes    =new Hook(&neumannflux_node_ids[0],2);
+	this->hvertices =new Hook(&neumannflux_vertex_ids[0],2);
+	this->helement  =new Hook(&neumannflux_elem_id,1);
+
+	//this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
+	this->parameters=NULL;
+	this->element=NULL;
+	this->nodes=NULL;
+}
+/*}}}*/
+Neumannflux::~Neumannflux(){/*{{{*/
+	this->parameters=NULL;
+	delete helement;
+	delete hnodes;
+	delete hvertices;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Neumannflux::copy() {/*{{{*/
+
+	Neumannflux* neumannflux=NULL;
+
+	neumannflux=new Neumannflux();
+
+	/*copy fields: */
+	neumannflux->id=this->id;
+
+	/*point parameters: */
+	neumannflux->parameters=this->parameters;
+
+	/*now deal with hooks and objects: */
+	neumannflux->hnodes    = (Hook*)this->hnodes->copy();
+	neumannflux->hvertices = (Hook*)this->hvertices->copy();
+	neumannflux->helement  = (Hook*)this->helement->copy();
+
+	/*corresponding fields*/
+	neumannflux->nodes    = (Node**)neumannflux->hnodes->deliverp();
+	neumannflux->vertices = (Vertex**)neumannflux->hvertices->deliverp();
+	neumannflux->element  = (Element*)neumannflux->helement->delivers();
+
+	return neumannflux;
+}
+/*}}}*/
+void    Neumannflux::DeepEcho(void){/*{{{*/
+
+	_printf_("Neumannflux:\n");
+	_printf_("   id: " << id << "\n");
+	hnodes->DeepEcho();
+	hvertices->DeepEcho();
+	helement->DeepEcho();
+	_printf_("   parameters\n");
+	if(parameters)
+	 parameters->DeepEcho();
+	else
+	 _printf_("      NULL\n");
+}		
+/*}}}*/
+void    Neumannflux::Echo(void){/*{{{*/
+	_printf_("Neumannflux:\n");
+	_printf_("   id: " << id << "\n");
+	hnodes->Echo();
+	hvertices->Echo();
+	helement->Echo();
+	_printf_("   parameters: " << parameters << "\n");
+}
+/*}}}*/
+int     Neumannflux::Id(void){/*{{{*/
+	return id;
+}
+/*}}}*/
+void    Neumannflux::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	_assert_(this);
+
+	/*ok, marshall operations: */
+	int object_enum=NeumannfluxEnum;
+	marshallhandle->call(object_enum);
+	marshallhandle->call(this->id);
+
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD){
+		this->hnodes      = new Hook();
+		this->hvertices   = new Hook();
+		this->helement    = new Hook();
+	}
+
+	this->hnodes->Marshall(marshallhandle);
+	this->helement->Marshall(marshallhandle);
+	this->hvertices->Marshall(marshallhandle);
+
+	/*corresponding fields*/
+	nodes    =(Node**)this->hnodes->deliverp();
+	vertices =(Vertex**)this->hvertices->deliverp();
+	element  =(Element*)this->helement->delivers();
+
+}
+/*}}}*/
+int     Neumannflux::ObjectEnum(void){/*{{{*/
+
+	return NeumannfluxEnum;
+
+}
+/*}}}*/
+
+/*Load virtual functions definitions:*/
+void  Neumannflux::Configure(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	hnodes->configure((DataSet*)nodesin);
+	hvertices->configure((DataSet*)verticesin);
+	helement->configure((DataSet*)elementsin);
+
+	/*Initialize hooked fields*/
+	this->nodes    = (Node**)hnodes->deliverp();
+	this->vertices = (Vertex**)hvertices->deliverp();
+	this->element  = (Element*)helement->delivers();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+}
+/*}}}*/
+void  Neumannflux::CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs){/*{{{*/
+
+	/*recover some parameters*/
+	ElementMatrix* Ke=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	/*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */
+	switch(analysis_type){
+		case HydrologyShaktiAnalysisEnum:
+			/*Nothing!*/
+			break;
+		case HydrologyGlaDSAnalysisEnum:
+			/*Nothing!*/
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global matrix*/
+	if(Ke){
+		Ke->AddToGlobal(Kff,Kfs);
+		delete Ke;
+	}
+
+}
+/*}}}*/
+void  Neumannflux::CreatePVector(Vector<IssmDouble>* pf){/*{{{*/
+
+	/*recover some parameters*/
+	ElementVector* pe=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		case HydrologyShaktiAnalysisEnum:
+			pe=CreatePVectorHydrologyShakti();
+			break;
+		case HydrologyGlaDSAnalysisEnum:
+			pe=CreatePVectorHydrologyGlaDS();
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global matrix*/
+	if(pe){
+		pe->AddToGlobal(pf);
+		delete pe;
+	}
+
+}
+/*}}}*/
+void  Neumannflux::GetNodesLidList(int* lidlist){/*{{{*/
+
+	_assert_(lidlist);
+	_assert_(nodes);
+
+	for(int i=0;i<NUMNODES_BOUNDARY;i++) lidlist[i]=nodes[i]->Lid();
+}
+/*}}}*/
+void  Neumannflux::GetNodesSidList(int* sidlist){/*{{{*/
+
+	_assert_(sidlist);
+	_assert_(nodes);
+
+	for(int i=0;i<NUMNODES_BOUNDARY;i++) sidlist[i]=nodes[i]->Sid();
+}
+/*}}}*/
+int   Neumannflux::GetNumberOfNodes(void){/*{{{*/
+
+	return NUMNODES_BOUNDARY;
+}
+/*}}}*/
+bool  Neumannflux::IsPenalty(void){/*{{{*/
+	return false;
+}
+/*}}}*/
+void  Neumannflux::PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs,IssmDouble kmax){/*{{{*/
+
+	/*No stiffness loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Neumannflux::PenaltyCreatePVector(Vector<IssmDouble>* pf,IssmDouble kmax){/*{{{*/
+
+	/*No penalty loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Neumannflux::ResetHooks(){/*{{{*/
+
+	this->nodes=NULL;
+	this->vertices=NULL;
+	this->element=NULL;
+	this->parameters=NULL;
+
+	/*Get Element type*/
+	this->hnodes->reset();
+	this->hvertices->reset();
+	this->helement->reset();
+
+}
+/*}}}*/
+void  Neumannflux::SetCurrentConfiguration(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+}
+/*}}}*/
+void  Neumannflux::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
+
+	/*Output */
+	int d_nz = 0;
+	int o_nz = 0;
+
+	/*Loop over all nodes*/
+	for(int i=0;i<this->GetNumberOfNodes();i++){
+
+		if(!flags[this->nodes[i]->Lid()]){
+
+			/*flag current node so that no other element processes it*/
+			flags[this->nodes[i]->Lid()]=true;
+
+			flagsindices[flagsindices_counter[0]]=this->nodes[i]->Lid();
+         flagsindices_counter[0]++;
+
+			/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
+			switch(set2_enum){
+				case FsetEnum:
+					if(nodes[i]->FSize()){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case GsetEnum:
+					if(nodes[i]->gsize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case SsetEnum:
+					if(nodes[i]->SSize()){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				default: _error_("not supported");
+			}
+		}
+	}
+
+	/*Assign output pointers: */
+	*pd_nz=d_nz;
+	*po_nz=o_nz;
+}
+/*}}}*/
+
+/*Neumannflux management*/
+ElementVector* Neumannflux::CreatePVectorHydrologyShakti(void){/*{{{*/
+
+	/* constants*/
+	const int numdof=2;
+
+	/* Intermediaries*/
+	IssmDouble Jdet,flux;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble basis[numdof];
+
+	/*Initialize Load Vector and return if necessary*/
+	Tria*  tria=NULL;
+	if(element->ObjectEnum()==TriaEnum){
+		tria = (Tria*)this->element;
+	}
+	else if(element->ObjectEnum()==PentaEnum){
+		tria = (Tria*)this->element->SpawnBasalElement();
+	}
+	_assert_(tria->FiniteElement()==P1Enum); 
+	if(!tria->IsIceInElement() || tria->IsAllFloating()) return NULL;
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe=new ElementVector(nodes,NUMNODES_BOUNDARY,this->parameters);
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	Input* flux_input = tria->GetInput(HydrologyNeumannfluxEnum);  _assert_(flux_input); 
+
+	/*Check wether it is an inflow or outflow BC (0 is the middle of the segment)*/
+	int index1=tria->GetVertexIndex(vertices[0]);
+	int index2=tria->GetVertexIndex(vertices[1]);
+
+	/* Start  looping on the number of gaussian points: */
+	GaussTria* gauss=new GaussTria(index1,index2,2);
+	while(gauss->next()){
+
+		tria->GetSegmentJacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		tria->GetSegmentNodalFunctions(&basis[0],gauss,index1,index2,tria->FiniteElement());
+		flux_input->GetInputValue(&flux,gauss);
+
+		for(int i=0;i<numdof;i++) pe->values[i] += gauss->weight*Jdet*flux*basis[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	if(tria->IsSpawnedElement()){tria->DeleteMaterials(); delete tria;};
+	return pe;
+}
+/*}}}*/
+ElementVector* Neumannflux::CreatePVectorHydrologyGlaDS(void){/*{{{*/
+
+	/* constants*/
+	const int numdof=2;
+
+	/* Intermediaries*/
+	IssmDouble Jdet,flux;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble basis[numdof];
+
+	/*Initialize Load Vector and return if necessary*/
+	Tria*  tria=(Tria*)element;
+	_assert_(tria->FiniteElement()==P1Enum); 
+	if(!tria->IsIceInElement() || tria->IsAllFloating()) return NULL;
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe=new ElementVector(nodes,NUMNODES_BOUNDARY,this->parameters);
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	Input* flux_input = tria->GetInput(HydrologyNeumannfluxEnum);  _assert_(flux_input); 
+
+	/*Check wether it is an inflow or outflow BC (0 is the middle of the segment)*/
+	int index1=tria->GetVertexIndex(vertices[0]);
+	int index2=tria->GetVertexIndex(vertices[1]);
+
+	/* Start  looping on the number of gaussian points: */
+	GaussTria* gauss=new GaussTria(index1,index2,2);
+	while(gauss->next()){
+
+		tria->GetSegmentJacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		tria->GetSegmentNodalFunctions(&basis[0],gauss,index1,index2,tria->FiniteElement());
+		flux_input->GetInputValue(&flux,gauss);
+
+		for(int i=0;i<numdof;i++) pe->values[i] += gauss->weight*Jdet*flux*basis[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	return pe;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Neumannflux.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Neumannflux.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Neumannflux.h	(revision 27955)
@@ -0,0 +1,79 @@
+/*!\file Neumannflux.h
+ * \brief: header file for icefront object
+ */
+
+#ifndef _NEUMANNFLUX_H_
+#define _NEUMANNFLUX_H_
+
+/*Headers:*/
+#include "./Load.h"
+class Hook;
+class Parameters;
+class IoModel;
+class Element;
+class Vertex;
+class ElementMatrix;
+class ElementVector;
+
+class Neumannflux: public Load {
+
+	public: 
+		int id;
+
+		/*Hooks*/
+		Hook *helement;
+		Hook *hnodes;
+		Hook *hvertices;
+
+		/*Corresponding fields*/
+		Element     *element;
+		Vertex     **vertices;
+		Node       **nodes;
+		Parameters  *parameters;
+
+		/*Neumannflux constructors,destructors {{{*/
+		Neumannflux();
+		Neumannflux(int numericalflux_id,int i,IoModel* iomodel,int* segments);
+		~Neumannflux();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{*/
+		void InputUpdateFromConstant(IssmDouble constant, int name){/*Do nothing*/};
+		void InputUpdateFromConstant(int constant, int name){/*Do nothing*/};
+		void InputUpdateFromConstant(bool constant, int name){/*Do nothing*/};
+		void InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
+		void InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols, int name, int type){/*Do nothing*/}
+		void InputUpdateFromVector(IssmDouble* vector, int name, int type){/*Do nothing*/}
+		void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*Do nothing*/}
+		/*}}}*/
+		/*Load virtual functions definitions: {{{*/
+		void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
+		void CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
+		void CreatePVector(Vector<IssmDouble>* pf);
+		void GetNodesLidList(int* lidlist);
+		void GetNodesSidList(int* sidlist);
+		int  GetNumberOfNodes(void);
+		bool IsPenalty(void);
+		void PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){_error_("Not implemented yet");};
+		void PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
+		void PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
+		void ResetHooks();
+		void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
+		/*}}}*/
+		/*Neumannflux management:{{{*/
+		ElementVector* CreatePVectorHydrologyShakti(void);
+		ElementVector* CreatePVectorHydrologyGlaDS(void);
+		/*}}}*/
+
+};
+
+#endif  /* _NEUMANNFLUX_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Numericalflux.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Numericalflux.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Numericalflux.cpp	(revision 27955)
@@ -0,0 +1,1006 @@
+/*!\file Numericalflux.c
+ * \brief: implementation of the Numericalflux object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "shared/shared.h"
+#include "../classes.h"
+/*}}}*/	
+
+/*Load macros*/
+#define NUMVERTICES 2
+
+/*Numericalflux constructors and destructor*/
+Numericalflux::Numericalflux(){/*{{{*/
+	this->parameters = NULL;
+	this->helement   = NULL;
+	this->element    = NULL;
+	this->hnodes     = NULL;
+	this->hvertices  = NULL;
+	this->nodes      = NULL;
+}
+/*}}}*/
+Numericalflux::Numericalflux(int numericalflux_id,int i,int index,IoModel* iomodel){/*{{{*/
+
+	/* Intermediary */
+	int pos1,pos2,pos3,pos4;
+	int numnodes;
+
+	/*numericalflux constructor data: */
+	int numericalflux_elem_ids[2];
+	int numericalflux_vertex_ids[2];
+	int numericalflux_node_ids[4];
+	int numericalflux_type;
+   int numericalflux_degree;
+
+	/*Get edge*/
+	int i1 = iomodel->faces[4*index+0];
+	int i2 = iomodel->faces[4*index+1];
+	int e1 = iomodel->faces[4*index+2];
+	int e2 = iomodel->faces[4*index+3];
+
+	/*First, see wether this is an internal or boundary edge (if e2=-1)*/
+	if(e2==-1){
+		/* Boundary edge, only one element */
+		numericalflux_type=BoundaryEnum;
+		numericalflux_elem_ids[0]=e1;
+	}
+	else{
+		/* internal edge: connected to 2 elements */
+		numericalflux_type=InternalEnum;
+		numericalflux_elem_ids[0]=e1;
+		numericalflux_elem_ids[1]=e2;
+	}
+
+   /*FIXME: hardcode element degree for now*/
+   this->flux_degree= P1DGEnum;
+   //this->flux_degree= P0DGEnum;
+
+	/*1: Get vertices ids*/
+	numericalflux_vertex_ids[0]=i1;
+	numericalflux_vertex_ids[1]=i2;
+
+	/*2: Get node ids*/
+	if(numericalflux_type==InternalEnum){
+		/*Get the column where these ids are located in the index*/
+		pos1=pos2=pos3=pos4=UNDEF;
+		for(int j=0;j<3;j++){
+			if(iomodel->elements[3*(e1-1)+j]==i1) pos1=j+1;
+			if(iomodel->elements[3*(e1-1)+j]==i2) pos2=j+1;
+			if(iomodel->elements[3*(e2-1)+j]==i1) pos3=j+1;
+			if(iomodel->elements[3*(e2-1)+j]==i2) pos4=j+1;
+		}
+		_assert_(pos1!=UNDEF && pos2!=UNDEF && pos3!=UNDEF && pos4!=UNDEF);
+
+		/* We have the id of the elements and the position of the vertices in the index
+		 * we can compute their dofs!*/
+		numericalflux_node_ids[0]=3*(e1-1)+pos1;
+		numericalflux_node_ids[1]=3*(e1-1)+pos2;
+		numericalflux_node_ids[2]=3*(e2-1)+pos3;
+		numericalflux_node_ids[3]=3*(e2-1)+pos4;
+	}
+	else{
+		/*Get the column where these ids are located in the index*/
+		pos1=pos2=UNDEF;
+		for(int j=0;j<3;j++){
+			if(iomodel->elements[3*(e1-1)+j]==i1) pos1=j+1;
+			if(iomodel->elements[3*(e1-1)+j]==i2) pos2=j+1;
+		}
+		_assert_(pos1!=UNDEF && pos2!=UNDEF);
+
+		/* We have the id of the elements and the position of the vertices in the index
+		 * we can compute their dofs!*/
+		numericalflux_node_ids[0]=3*(e1-1)+pos1;
+		numericalflux_node_ids[1]=3*(e1-1)+pos2;
+	}
+
+   switch(this->flux_degree){
+      case P0DGEnum:
+         if(numericalflux_type==InternalEnum) numnodes = 2;
+         else numnodes = 1;
+			for(int i=0;i<numnodes;i++) numericalflux_node_ids[i] = numericalflux_elem_ids[i]; 
+         numericalflux_node_ids[1] = numericalflux_elem_ids[1];
+         break;
+      case P1DGEnum:
+         if(numericalflux_type==InternalEnum) numnodes = 4;
+         else numnodes = 2;
+         for(int i=0;i<numnodes;i++) numericalflux_node_ids[i] = numericalflux_node_ids[i]; //FIXME: to be improved...
+         break;
+      default:
+         _error_("not supported yet");
+
+   }
+
+	/*Assign object fields: */
+	this->id          = numericalflux_id;
+	this->flux_type   = numericalflux_type;
+
+	/*Hooks: */
+	this->hnodes    = new Hook(numericalflux_node_ids,numnodes);
+	this->hvertices = new Hook(&numericalflux_vertex_ids[0],2);
+	this->helement  = new Hook(numericalflux_elem_ids,1); // take only the first element for now
+
+	/*other fields*/
+	this->parameters = NULL;
+	this->element    = NULL;
+	this->nodes      = NULL;
+}
+/*}}}*/
+Numericalflux::~Numericalflux(){/*{{{*/
+	this->parameters=NULL;
+	delete helement;
+	delete hnodes;
+	delete hvertices;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Numericalflux::copy() {/*{{{*/
+
+	Numericalflux* numericalflux=NULL;
+
+	numericalflux=new Numericalflux();
+
+	/*copy fields: */
+	numericalflux->id=this->id;
+	numericalflux->flux_type=this->flux_type;
+	numericalflux->flux_degree=this->flux_degree;
+
+	/*point parameters: */
+	numericalflux->parameters=this->parameters;
+
+	/*now deal with hooks and objects: */
+	numericalflux->hnodes    = (Hook*)this->hnodes->copy();
+	numericalflux->hvertices = (Hook*)this->hvertices->copy();
+	numericalflux->helement  = (Hook*)this->helement->copy();
+
+	/*corresponding fields*/
+	numericalflux->nodes    = (Node**)numericalflux->hnodes->deliverp();
+	numericalflux->vertices = (Vertex**)numericalflux->hvertices->deliverp();
+	numericalflux->element  = (Element*)numericalflux->helement->delivers();
+
+	return numericalflux;
+}
+/*}}}*/
+void    Numericalflux::DeepEcho(void){/*{{{*/
+
+	_printf_("Numericalflux:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   flux_type: " << this->flux_type<< "\n");
+	_printf_("   flux_degree: " << this->flux_degree<< "\n");
+	hnodes->DeepEcho();
+	hvertices->DeepEcho();
+	helement->DeepEcho();
+	_printf_("   parameters\n");
+	if(parameters)
+	 parameters->DeepEcho();
+	else
+	 _printf_("      NULL\n");
+}		
+/*}}}*/
+void    Numericalflux::Echo(void){/*{{{*/
+	_printf_("Numericalflux:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   flux_type: " << this->flux_type<< "\n");
+	_printf_("   flux_degree: " << this->flux_degree<< "\n");
+	hnodes->Echo();
+	hvertices->Echo();
+	helement->Echo();
+	_printf_("   parameters: " << parameters << "\n");
+}
+/*}}}*/
+int     Numericalflux::Id(void){/*{{{*/
+	return id;
+}
+/*}}}*/
+void    Numericalflux::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	_assert_(this);
+
+	/*ok, marshall operations: */
+	int object_enum = NumericalfluxEnum;
+	marshallhandle->call(object_enum);
+	marshallhandle->call(this->id);
+	marshallhandle->call(this->flux_type);
+	marshallhandle->call(this->flux_degree);
+
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD){
+		this->hnodes      = new Hook();
+		this->hvertices   = new Hook();
+		this->helement    = new Hook();
+	}
+
+	this->hnodes->Marshall(marshallhandle);
+	this->helement->Marshall(marshallhandle);
+	this->hvertices->Marshall(marshallhandle);
+
+	/*corresponding fields*/
+	nodes    =(Node**)this->hnodes->deliverp();
+	vertices =(Vertex**)this->hvertices->deliverp();
+	element  =(Element*)this->helement->delivers();
+
+}
+/*}}}*/
+int     Numericalflux::ObjectEnum(void){/*{{{*/
+
+	return NumericalfluxEnum;
+
+}
+/*}}}*/
+
+/*Load virtual functions definitions:*/
+void  Numericalflux::Configure(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	hnodes->configure((DataSet*)nodesin);
+	hvertices->configure((DataSet*)verticesin);
+	helement->configure((DataSet*)elementsin);
+
+	/*Initialize hooked fields*/
+	this->nodes    = (Node**)hnodes->deliverp();
+	this->vertices = (Vertex**)hvertices->deliverp();
+	this->element  = (Element*)helement->delivers();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+}
+/*}}}*/
+void  Numericalflux::CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs){/*{{{*/
+
+	/*recover some parameters*/
+	ElementMatrix* Ke=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	/*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */
+	switch(analysis_type){
+		case MasstransportAnalysisEnum:
+			Ke=CreateKMatrixMasstransport();
+			break;
+		case BalancethicknessAnalysisEnum:
+			Ke=CreateKMatrixBalancethickness();
+			break;
+		case AdjointBalancethicknessAnalysisEnum:
+			Ke=CreateKMatrixAdjointBalancethickness();
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global matrix*/
+	if(Ke){
+		Ke->AddToGlobal(Kff,Kfs);
+		delete Ke;
+	}
+
+}
+/*}}}*/
+void  Numericalflux::CreatePVector(Vector<IssmDouble>* pf){/*{{{*/
+
+	/*recover some parameters*/
+	ElementVector* pe=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		case MasstransportAnalysisEnum:
+			pe=CreatePVectorMasstransport();
+			break;
+		case BalancethicknessAnalysisEnum:
+			pe=CreatePVectorBalancethickness();
+			break;
+		case AdjointBalancethicknessAnalysisEnum:
+			pe=CreatePVectorAdjointBalancethickness();
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global matrix*/
+	if(pe){
+		pe->AddToGlobal(pf);
+		delete pe;
+	}
+
+}
+/*}}}*/
+void  Numericalflux::GetNodesLidList(int* lidlist){/*{{{*/
+
+	_assert_(lidlist);
+	_assert_(nodes);
+
+	int numnodes = this->GetNumberOfNodes();
+	for(int i=0;i<numnodes;i++) lidlist[i]=nodes[i]->Lid();
+}
+/*}}}*/
+void  Numericalflux::GetNodesSidList(int* sidlist){/*{{{*/
+
+	_assert_(sidlist);
+	_assert_(nodes);
+
+	int numnodes = this->GetNumberOfNodes();
+	for(int i=0;i<numnodes;i++) sidlist[i]=nodes[i]->Sid();
+}
+/*}}}*/
+int   Numericalflux::GetNumberOfNodes(void){/*{{{*/
+
+	if(this->flux_degree==P0DGEnum){
+		switch(this->flux_type){
+			case InternalEnum:
+				return 2;
+			case BoundaryEnum:
+				return 1;
+			default:
+				_error_("Numericalflux type " << EnumToStringx(this->flux_type) << " not supported yet");
+		}
+	}
+	else if(this->flux_degree==P1DGEnum){
+		switch(this->flux_type){
+			case InternalEnum:
+				return 4;
+			case BoundaryEnum:
+				return 2;
+			default:
+				_error_("Numericalflux type " << EnumToStringx(this->flux_type) << " not supported yet");
+		}
+	}
+	else{
+		_error_("Numericalflux " << EnumToStringx(this->flux_degree) << " not supported yet");
+	}
+
+}
+/*}}}*/
+int   Numericalflux::GetNumberOfNodesOneSide(void){/*{{{*/
+
+	if(this->flux_degree==P0DGEnum){
+		return 1;
+	}
+	else if(this->flux_degree==P1DGEnum){
+		return 2;
+	}
+	else{
+		_error_("Numericalflux " << EnumToStringx(this->flux_degree) << " not supported yet");
+	}
+
+}
+/*}}}*/
+bool  Numericalflux::IsPenalty(void){/*{{{*/
+	return false;
+}
+/*}}}*/
+void  Numericalflux::PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs,IssmDouble kmax){/*{{{*/
+
+	/*No stiffness loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Numericalflux::PenaltyCreatePVector(Vector<IssmDouble>* pf,IssmDouble kmax){/*{{{*/
+
+	/*No penalty loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Numericalflux::ResetHooks(){/*{{{*/
+
+	this->nodes      = NULL;
+	this->vertices   = NULL;
+	this->element    = NULL;
+	this->parameters = NULL;
+
+	/*Get Element type*/
+	this->hnodes->reset();
+	this->hvertices->reset();
+	this->helement->reset();
+
+}
+/*}}}*/
+void  Numericalflux::SetCurrentConfiguration(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+   /*Nothing to do :)*/
+
+}
+/*}}}*/
+void  Numericalflux::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
+
+	/*Output */
+	int d_nz = 0;
+	int o_nz = 0;
+
+	/*Loop over all nodes*/
+	for(int i=0;i<this->GetNumberOfNodes();i++){
+
+		if(!flags[this->nodes[i]->Lid()]){
+
+			/*flag current node so that no other element processes it*/
+			flags[this->nodes[i]->Lid()]=true;
+
+			flagsindices[flagsindices_counter[0]]=this->nodes[i]->Lid();
+         flagsindices_counter[0]++;
+
+			/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
+			switch(set2_enum){
+				case FsetEnum:
+					if(nodes[i]->FSize()){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case GsetEnum:
+					if(nodes[i]->gsize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case SsetEnum:
+					if(nodes[i]->SSize()){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				default: _error_("not supported");
+			}
+		}
+	}
+
+	/*Assign output pointers: */
+	*pd_nz=d_nz;
+	*po_nz=o_nz;
+}
+/*}}}*/
+
+/*Numericalflux management*/
+ElementMatrix* Numericalflux::CreateKMatrixAdjointBalancethickness(void){/*{{{*/
+
+	switch(this->flux_type){
+		case InternalEnum:
+			return CreateKMatrixAdjointBalancethicknessInternal();
+		case BoundaryEnum:
+			return CreateKMatrixAdjointBalancethicknessBoundary();
+		default:
+			_error_("type not supported yet");
+	}
+}
+/*}}}*/
+ElementMatrix* Numericalflux::CreateKMatrixAdjointBalancethicknessBoundary(void){/*{{{*/
+
+	ElementMatrix* Ke=CreateKMatrixBalancethicknessBoundary();
+	if(Ke) Ke->Transpose();
+	return Ke;
+}
+/*}}}*/
+ElementMatrix* Numericalflux::CreateKMatrixAdjointBalancethicknessInternal(void){/*{{{*/
+
+	ElementMatrix* Ke=CreateKMatrixBalancethicknessInternal();
+	if (Ke) Ke->Transpose();
+	return Ke;
+}
+/*}}}*/
+ElementMatrix* Numericalflux::CreateKMatrixBalancethickness(void){/*{{{*/
+
+	switch(this->flux_type){
+		case InternalEnum:
+			return CreateKMatrixBalancethicknessInternal();
+		case BoundaryEnum:
+			return CreateKMatrixBalancethicknessBoundary();
+		default:
+			_error_("type not supported yet");
+	}
+}
+/*}}}*/
+ElementMatrix* Numericalflux::CreateKMatrixBalancethicknessBoundary(void){/*{{{*/
+
+	/*Initialize Element matrix and return if necessary*/
+	Tria* tria=(Tria*)element;
+	if(!tria->IsIceInElement()) return NULL;
+
+	/* Intermediaries*/
+	IssmDouble DL,Jdet,vx,vy,mean_vx,mean_vy;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble normal[2];
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	Input* vxaverage_input=tria->GetInput(VxEnum); _assert_(vxaverage_input); 
+	Input* vyaverage_input=tria->GetInput(VyEnum); _assert_(vyaverage_input); 
+	GetNormal(&normal[0],xyz_list);
+
+	/*Check wether it is an inflow or outflow BC (0 is the middle of the segment)*/
+	int index1=tria->GetVertexIndex(vertices[0]);
+	int index2=tria->GetVertexIndex(vertices[1]);
+
+	GaussTria* gauss=new GaussTria();
+	gauss->GaussEdgeCenter(index1,index2);
+	vxaverage_input->GetInputValue(&mean_vx,gauss);
+	vyaverage_input->GetInputValue(&mean_vy,gauss);
+	delete gauss;
+
+	IssmDouble UdotN=mean_vx*normal[0]+mean_vy*normal[1];
+	if(UdotN<=0){
+		return NULL; /*(u,n)<0 -> inflow, PenaltyCreatePVector will take care of it*/
+	}
+
+	/*Initialize Element vector and other vectors*/
+   int            numnodes = this->GetNumberOfNodes();
+   ElementMatrix *Ke       = new ElementMatrix(nodes,numnodes,this->parameters);
+   IssmDouble    *basis    = xNew<IssmDouble>(numnodes);
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=new GaussTria(index1,index2,2);
+	while(gauss->next()){
+
+		tria->GetSegmentNodalFunctions(&basis[0],gauss,index1,index2,tria->FiniteElement());
+
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+		UdotN=vx*normal[0]+vy*normal[1];
+		tria->GetSegmentJacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		DL=gauss->weight*Jdet*UdotN;
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j]+=DL*basis[i]*basis[j];
+			}
+		}
+	} 
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return Ke;
+}
+/*}}}*/
+ElementMatrix* Numericalflux::CreateKMatrixBalancethicknessInternal(void){/*{{{*/
+
+	/*Initialize Element matrix and return if necessary*/
+	Tria*  tria=(Tria*)element;
+	if(!tria->IsIceInElement()) return NULL;
+
+	/* Intermediaries*/
+	IssmDouble A1,A2,Jdet,vx,vy,UdotN;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble normal[2];
+
+	/*Fetch number of nodes for this flux*/
+	int numnodes       = this->GetNumberOfNodes();
+	int numnodes_plus  = this->GetNumberOfNodesOneSide();
+	int numnodes_minus = numnodes_plus; /*For now we are not doing p-adaptive DG*/
+	_assert_(numnodes==numnodes_plus+numnodes_minus);
+
+	/*Initialize variables*/
+	ElementMatrix *Ke = new ElementMatrix(nodes,numnodes,this->parameters);
+	IssmDouble    *basis_plus  = xNew<IssmDouble>(numnodes_plus);
+	IssmDouble    *basis_minus = xNew<IssmDouble>(numnodes_minus);
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	Input* vxaverage_input=tria->GetInput(VxEnum); _assert_(vxaverage_input); 
+	Input* vyaverage_input=tria->GetInput(VyEnum); _assert_(vyaverage_input); 
+	GetNormal(&normal[0],xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	int index1=tria->GetVertexIndex(vertices[0]);
+	int index2=tria->GetVertexIndex(vertices[1]);
+	GaussTria* gauss=new GaussTria(index1,index2,2);
+	while(gauss->next()){
+
+		tria->GetSegmentNodalFunctions(&basis_plus[0] ,gauss,index1,index2,tria->FiniteElement());
+		tria->GetSegmentNodalFunctions(&basis_minus[0],gauss,index1,index2,tria->FiniteElement());
+
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+		UdotN=vx*normal[0]+vy*normal[1];
+		tria->GetSegmentJacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		A1=gauss->weight*Jdet*UdotN/2;
+		A2=gauss->weight*Jdet*fabs(UdotN)/2;
+
+		/*Term 1 (numerical flux): {Hv}.[[phi]] = 0.5(H+v+ + H-v-)(phi+n+ + phi-n-)
+		 *                                      = v.n/2 (H+phi+ + H-phi+ -H+phi- -H-phi-)
+		 *                                      = v.n/2 (H+phi+ + H-phi+ -H+phi- -H-phi-)
+		 *
+		 *Term 2 (stabilization)  |v.n|/2 [[H]].[[phi]] = |v.n|/2 (H+n+ + H-n-)(phi+n+ + phi-n-)
+		 *                                      = |v.n|/2 (H+phi+ -H-phi+ -H+phi- +H-phi-)
+		 *     | A++ | A+- |
+		 * K = |-----------|
+		 *     | A-+ | A-- |
+		 *
+		 *These 4 terms for each expressions are added independently*/
+
+		/*First term A++*/
+		for(int i=0;i<numnodes_plus;i++){
+			for(int j=0;j<numnodes_plus;j++){
+				Ke->values[i*numnodes+j] += A1*(basis_plus[j]*basis_plus[i]);
+				Ke->values[i*numnodes+j] += A2*(basis_plus[j]*basis_plus[i]);
+			}
+		}
+		/*Second term A+-*/
+		for(int i=0;i<numnodes_plus;i++){
+			for(int j=0;j<numnodes_minus;j++){
+				Ke->values[i*numnodes+numnodes_plus+j] +=  A1*(basis_minus[j]*basis_plus[i]);
+				Ke->values[i*numnodes+numnodes_plus+j] += -A2*(basis_minus[j]*basis_plus[i]);
+			}
+		}
+		/*Third term A-+*/
+		for(int i=0;i<numnodes_minus;i++){
+			for(int j=0;j<numnodes_plus;j++){
+				Ke->values[(numnodes_plus+i)*numnodes+j] += -A1*(basis_plus[j]*basis_minus[i]);
+				Ke->values[(numnodes_plus+i)*numnodes+j] += -A2*(basis_plus[j]*basis_minus[i]);
+			}
+		}
+		/*Fourth term A-+*/
+		for(int i=0;i<numnodes_minus;i++){
+			for(int j=0;j<numnodes_minus;j++){
+				Ke->values[(numnodes_plus+i)*numnodes+numnodes_plus+j] += -A1*(basis_minus[j]*basis_minus[i]);
+				Ke->values[(numnodes_plus+i)*numnodes+numnodes_plus+j] +=  A2*(basis_minus[j]*basis_minus[i]);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+   xDelete<IssmDouble>(basis_plus);
+   xDelete<IssmDouble>(basis_minus);
+	delete gauss;
+	return Ke;
+}
+/*}}}*/
+ElementMatrix* Numericalflux::CreateKMatrixMasstransport(void){/*{{{*/
+
+	switch(this->flux_type){
+		case InternalEnum:
+			return CreateKMatrixMasstransportInternal();
+		case BoundaryEnum:
+			return CreateKMatrixMasstransportBoundary();
+		default:
+			_error_("type not supported yet");
+	}
+}
+/*}}}*/
+ElementMatrix* Numericalflux::CreateKMatrixMasstransportBoundary(void){/*{{{*/
+
+	/*Initialize Element matrix and return if necessary*/
+	Tria*  tria=(Tria*)element;
+	if(!tria->IsIceInElement()) return NULL;
+
+	/* Intermediaries*/
+	IssmDouble DL,Jdet,vx,vy,mean_vx,mean_vy;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble normal[2];
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	IssmDouble dt = parameters->FindParam(TimesteppingTimeStepEnum);
+	Input* vxaverage_input=tria->GetInput(VxEnum); _assert_(vxaverage_input);
+	Input* vyaverage_input=tria->GetInput(VyEnum); _assert_(vyaverage_input);
+	GetNormal(&normal[0],xyz_list);
+
+	/*Check wether it is an inflow or outflow BC (0 is the middle of the segment)*/
+	int index1=tria->GetVertexIndex(vertices[0]);
+	int index2=tria->GetVertexIndex(vertices[1]);
+
+	GaussTria* gauss=new GaussTria();
+	gauss->GaussEdgeCenter(index1,index2);
+	vxaverage_input->GetInputValue(&mean_vx,gauss);
+	vyaverage_input->GetInputValue(&mean_vy,gauss);
+	delete gauss;
+
+	IssmDouble UdotN=mean_vx*normal[0]+mean_vy*normal[1];
+	if(UdotN<=0){
+		return NULL; /*(u,n)<0 -> inflow, PenaltyCreatePVector will take care of it*/
+	}
+
+	/*Initialize Element vector and other vectors*/
+   int            numnodes = this->GetNumberOfNodes();
+   ElementMatrix *Ke       = new ElementMatrix(nodes,numnodes,this->parameters);
+   IssmDouble    *basis    = xNew<IssmDouble>(numnodes);
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=new GaussTria(index1,index2,2);
+	while(gauss->next()){
+
+		tria->GetSegmentNodalFunctions(&basis[0],gauss,index1,index2,tria->FiniteElement());
+
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+		UdotN=vx*normal[0]+vy*normal[1];
+		tria->GetSegmentJacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		DL=gauss->weight*Jdet*dt*UdotN;
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j]+=DL*basis[i]*basis[j];
+			}
+		}
+	} 
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return Ke;
+}
+/*}}}*/
+ElementMatrix* Numericalflux::CreateKMatrixMasstransportInternal(void){/*{{{*/
+
+	/*Initialize Element matrix and return if necessary*/
+	Tria*  tria=(Tria*)element;
+	if(!tria->IsIceInElement()) return NULL;
+
+	/* Intermediaries*/
+	IssmDouble A1,A2,Jdet,vx,vy,UdotN;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble normal[2];
+
+	/*Fetch number of nodes for this flux*/
+	int numnodes       = this->GetNumberOfNodes();
+	int numnodes_plus  = this->GetNumberOfNodesOneSide();
+	int numnodes_minus = numnodes_plus; /*For now we are not doing p-adaptive DG*/
+	_assert_(numnodes==numnodes_plus+numnodes_minus);
+
+	/*Initialize variables*/
+	ElementMatrix *Ke = new ElementMatrix(nodes,numnodes,this->parameters);
+	IssmDouble    *basis_plus  = xNew<IssmDouble>(numnodes_plus);
+	IssmDouble    *basis_minus = xNew<IssmDouble>(numnodes_minus);
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	IssmDouble dt = parameters->FindParam(TimesteppingTimeStepEnum);
+	Input* vxaverage_input=tria->GetInput(VxEnum); _assert_(vxaverage_input); 
+	Input* vyaverage_input=tria->GetInput(VyEnum); _assert_(vyaverage_input); 
+	GetNormal(&normal[0],xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	int index1=tria->GetVertexIndex(vertices[0]);
+	int index2=tria->GetVertexIndex(vertices[1]);
+	GaussTria* gauss=new GaussTria(index1,index2,2);
+	while(gauss->next()){
+
+		tria->GetSegmentNodalFunctions(&basis_plus[0] ,gauss,index1,index2,tria->FiniteElement());
+		tria->GetSegmentNodalFunctions(&basis_minus[0],gauss,index1,index2,tria->FiniteElement());
+
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+		UdotN=vx*normal[0]+vy*normal[1];
+		tria->GetSegmentJacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		A1=gauss->weight*Jdet*dt*UdotN/2;
+		A2=gauss->weight*Jdet*dt*fabs(UdotN)/2;
+
+		/*Term 1 (numerical flux): {Hv}.[[phi]] = 0.5(H+v+ + H-v-)(phi+n+ + phi-n-)
+		 *                                      = v.n/2 (H+phi+ + H-phi+ -H+phi- -H-phi-)
+		 *                                      = v.n/2 (H+phi+ + H-phi+ -H+phi- -H-phi-)
+		 *
+		 *Term 2 (stabilization)  |v.n|/2 [[H]].[[phi]] = |v.n|/2 (H+n+ + H-n-)(phi+n+ + phi-n-)
+		 *                                      = |v.n|/2 (H+phi+ -H-phi+ -H+phi- +H-phi-)
+		 *     | A++ | A+- |
+		 * K = |-----------|
+		 *     | A-+ | A-- |
+		 *
+		 *These 4 terms for each expressions are added independently*/
+
+		/*First term A++*/
+		for(int i=0;i<numnodes_plus;i++){
+			for(int j=0;j<numnodes_plus;j++){
+				Ke->values[i*numnodes+j] += A1*(basis_plus[j]*basis_plus[i]);
+				Ke->values[i*numnodes+j] += A2*(basis_plus[j]*basis_plus[i]);
+			}
+		}
+		/*Second term A+-*/
+		for(int i=0;i<numnodes_plus;i++){
+			for(int j=0;j<numnodes_minus;j++){
+				Ke->values[i*numnodes+numnodes_plus+j] +=  A1*(basis_minus[j]*basis_plus[i]);
+				Ke->values[i*numnodes+numnodes_plus+j] += -A2*(basis_minus[j]*basis_plus[i]);
+			}
+		}
+		/*Third term A-+*/
+		for(int i=0;i<numnodes_minus;i++){
+			for(int j=0;j<numnodes_plus;j++){
+				Ke->values[(numnodes_plus+i)*numnodes+j] += -A1*(basis_plus[j]*basis_minus[i]);
+				Ke->values[(numnodes_plus+i)*numnodes+j] += -A2*(basis_plus[j]*basis_minus[i]);
+			}
+		}
+		/*Fourth term A-+*/
+		for(int i=0;i<numnodes_minus;i++){
+			for(int j=0;j<numnodes_minus;j++){
+				Ke->values[(numnodes_plus+i)*numnodes+numnodes_plus+j] += -A1*(basis_minus[j]*basis_minus[i]);
+				Ke->values[(numnodes_plus+i)*numnodes+numnodes_plus+j] +=  A2*(basis_minus[j]*basis_minus[i]);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+   xDelete<IssmDouble>(basis_plus);
+   xDelete<IssmDouble>(basis_minus);
+	delete gauss;
+	return Ke;
+}
+/*}}}*/
+ElementVector* Numericalflux::CreatePVectorAdjointBalancethickness(void){/*{{{*/
+
+	/*No PVector for the Adjoint*/
+	return NULL;
+}
+/*}}}*/
+ElementVector* Numericalflux::CreatePVectorBalancethickness(void){/*{{{*/
+
+	switch(this->flux_type){
+		case InternalEnum:
+			return CreatePVectorBalancethicknessInternal();
+		case BoundaryEnum:
+			return CreatePVectorBalancethicknessBoundary();
+		default:
+			_error_("type not supported yet");
+	}
+}
+/*}}}*/
+ElementVector* Numericalflux::CreatePVectorBalancethicknessBoundary(void){/*{{{*/
+
+	/*Initialize Load Vector and return if necessary*/
+	Tria*  tria=(Tria*)element;
+	if(!tria->IsIceInElement()) return NULL;
+
+	/* Intermediaries*/
+	IssmDouble DL,Jdet,vx,vy,mean_vx,mean_vy,thickness;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble normal[2];
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	Input* vxaverage_input = tria->GetInput(VxEnum);        _assert_(vxaverage_input);
+	Input* vyaverage_input = tria->GetInput(VyEnum);        _assert_(vyaverage_input);
+	Input* thickness_input = tria->GetInput(ThicknessEnum); _assert_(thickness_input);
+	GetNormal(&normal[0],xyz_list);
+
+	/*Check wether it is an inflow or outflow BC (0 is the middle of the segment)*/
+	int index1=tria->GetVertexIndex(vertices[0]);
+	int index2=tria->GetVertexIndex(vertices[1]);
+	GaussTria* gauss=new GaussTria();
+	gauss->GaussEdgeCenter(index1,index2);
+	vxaverage_input->GetInputValue(&mean_vx,gauss);
+	vyaverage_input->GetInputValue(&mean_vy,gauss);
+	delete gauss;
+	IssmDouble UdotN=mean_vx*normal[0]+mean_vy*normal[1];
+	if(UdotN>0){
+		return NULL; /*(u,n)>0 -> outflow, PenaltyCreateKMatrix will take care of it*/
+	}
+
+	/*Initialize Load Vector */
+	int            numnodes = this->GetNumberOfNodes();
+	ElementVector *pe       = new ElementVector(nodes,numnodes,this->parameters);
+	IssmDouble    *basis    = xNew<IssmDouble>(numnodes);
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=new GaussTria(index1,index2,2);
+	while(gauss->next()){
+
+		tria->GetSegmentNodalFunctions(&basis[0],gauss,index1,index2,tria->FiniteElement());
+
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+		thickness_input->GetInputValue(&thickness,gauss);
+
+		UdotN=vx*normal[0]+vy*normal[1];
+		tria->GetSegmentJacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		DL= - gauss->weight*Jdet*UdotN*thickness;
+
+		for(int i=0;i<numnodes;i++) pe->values[i] += DL*basis[i];
+	}
+
+	/*Clean up and return*/
+   xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}
+/*}}}*/
+ElementVector* Numericalflux::CreatePVectorBalancethicknessInternal(void){/*{{{*/
+
+	/*Nothing added to PVector*/
+	return NULL;
+
+}
+/*}}}*/
+ElementVector* Numericalflux::CreatePVectorMasstransport(void){/*{{{*/
+
+	switch(this->flux_type){
+		case InternalEnum:
+			return CreatePVectorMasstransportInternal();
+		case BoundaryEnum:
+			return CreatePVectorMasstransportBoundary();
+		default:
+			_error_("type not supported yet");
+	}
+}
+/*}}}*/
+ElementVector* Numericalflux::CreatePVectorMasstransportBoundary(void){/*{{{*/
+
+	/*Initialize Load Vector and return if necessary*/
+	Tria* tria=(Tria*)element;
+	if(!tria->IsIceInElement()) return NULL;
+
+	/* Intermediaries*/
+	IssmDouble DL,Jdet,vx,vy,mean_vx,mean_vy,thickness;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble normal[2];
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	IssmDouble dt = parameters->FindParam(TimesteppingTimeStepEnum);
+	Input* vxaverage_input    = tria->GetInput(VxEnum);                        _assert_(vxaverage_input);
+	Input* vyaverage_input    = tria->GetInput(VyEnum);                        _assert_(vyaverage_input);
+	Input* spcthickness_input = tria->GetInput(MasstransportSpcthicknessEnum); _assert_(spcthickness_input);
+	GetNormal(&normal[0],xyz_list);
+
+	/*Check wether it is an inflow or outflow BC (0 is the middle of the segment)*/
+	int index1=tria->GetVertexIndex(vertices[0]);
+	int index2=tria->GetVertexIndex(vertices[1]);
+	GaussTria* gauss=new GaussTria();
+	gauss->GaussEdgeCenter(index1,index2);
+	vxaverage_input->GetInputValue(&mean_vx,gauss);
+	vyaverage_input->GetInputValue(&mean_vy,gauss);
+	delete gauss;
+	IssmDouble UdotN=mean_vx*normal[0]+mean_vy*normal[1];
+	if(UdotN>0){
+		return NULL; /*(u,n)>0 -> outflow, PenaltyCreateKMatrix will take care of it*/
+	}
+
+	/*Initialize Load Vector */
+	int            numnodes = this->GetNumberOfNodes();
+	ElementVector *pe       = new ElementVector(nodes,numnodes,this->parameters);
+	IssmDouble    *basis    = xNew<IssmDouble>(numnodes);
+
+	/* Start  looping on the number of gaussian points: */
+	gauss=new GaussTria(index1,index2,2);
+	while(gauss->next()){
+
+		tria->GetSegmentNodalFunctions(&basis[0],gauss,index1,index2,tria->FiniteElement());
+
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+		spcthickness_input->GetInputValue(&thickness,gauss);
+		if(xIsNan<IssmDouble>(thickness)) _error_("Cannot weakly apply constraint because NaN was provided");
+
+		UdotN=vx*normal[0]+vy*normal[1];
+		tria->GetSegmentJacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		DL= - gauss->weight*Jdet*dt*UdotN*thickness;
+
+		for(int i=0;i<numnodes;i++) pe->values[i] += DL*basis[i];
+	}
+
+	/*Clean up and return*/
+   xDelete<IssmDouble>(basis);
+	delete gauss;
+	return pe;
+}
+/*}}}*/
+ElementVector* Numericalflux::CreatePVectorMasstransportInternal(void){/*{{{*/
+
+	/*Nothing added to PVector*/
+	return NULL;
+
+}
+/*}}}*/
+void           Numericalflux::GetNormal(IssmDouble* normal,IssmDouble xyz_list[4][3]){/*{{{*/
+
+	/*Build unit outward pointing vector*/
+	IssmDouble vector[2];
+
+	vector[0]=xyz_list[1][0] - xyz_list[0][0];
+	vector[1]=xyz_list[1][1] - xyz_list[0][1];
+
+	IssmDouble norm=sqrt(pow(vector[0],2.0)+pow(vector[1],2.0));
+
+	normal[0]= + vector[1]/norm;
+	normal[1]= - vector[0]/norm;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Numericalflux.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Numericalflux.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Numericalflux.h	(revision 27955)
@@ -0,0 +1,97 @@
+/*!\file Numericalflux.h
+ * \brief: header file for icefront object
+ */
+
+#ifndef _NUMERICALFLUX_H_
+#define _NUMERICALFLUX_H_
+
+/*Headers:*/
+#include "./Load.h"
+class Hook;
+class Parameters;
+class IoModel;
+class Element;
+class Vertex;
+class ElementMatrix;
+class ElementVector;
+
+class Numericalflux: public Load {
+
+	public: 
+		int id;
+		int flux_type;
+		int flux_degree;
+
+		/*Hooks*/
+		Hook *helement;
+		Hook *hnodes;
+		Hook *hvertices;
+
+		/*Corresponding fields*/
+		Element     *element;
+		Vertex     **vertices;
+		Node       **nodes;
+		Parameters  *parameters;
+
+		/*Numericalflux constructors,destructors {{{*/
+		Numericalflux();
+		Numericalflux(int numericalflux_id,int i,int index,IoModel* iomodel);
+		~Numericalflux();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{*/
+		void InputUpdateFromConstant(IssmDouble constant, int name){/*Do nothing*/};
+		void InputUpdateFromConstant(int constant, int name){/*Do nothing*/};
+		void InputUpdateFromConstant(bool constant, int name){_error_("Not implemented yet!");}
+		void InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
+		void InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols, int name, int type){/*Do nothing*/}
+		void InputUpdateFromVector(IssmDouble* vector, int name, int type){/*Do nothing*/}
+		void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*Do nothing*/}
+		/*}}}*/
+		/*Load virtual functions definitions: {{{*/
+		void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
+		void CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
+		void CreatePVector(Vector<IssmDouble>* pf);
+		void GetNodesLidList(int* lidlist);
+		void GetNodesSidList(int* sidlist);
+		int  GetNumberOfNodes(void);
+		int  GetNumberOfNodesOneSide(void);
+		bool IsPenalty(void);
+		void PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){_error_("Not implemented yet");};
+		void PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
+		void PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
+		void ResetHooks();
+		void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
+		/*}}}*/
+		/*Numericalflux management:{{{*/
+		ElementMatrix* CreateKMatrixAdjointBalancethickness(void);
+		ElementMatrix* CreateKMatrixAdjointBalancethicknessBoundary(void);
+		ElementMatrix* CreateKMatrixAdjointBalancethicknessInternal(void);
+		ElementMatrix* CreateKMatrixBalancethickness(void);
+		ElementMatrix* CreateKMatrixBalancethicknessBoundary(void);
+		ElementMatrix* CreateKMatrixBalancethicknessInternal(void);
+		ElementMatrix* CreateKMatrixMasstransport(void);
+		ElementMatrix* CreateKMatrixMasstransportBoundary(void);
+		ElementMatrix* CreateKMatrixMasstransportInternal(void);
+		ElementVector* CreatePVectorAdjointBalancethickness(void);
+		ElementVector* CreatePVectorBalancethickness(void);
+		ElementVector* CreatePVectorBalancethicknessBoundary(void);
+		ElementVector* CreatePVectorBalancethicknessInternal(void);
+		ElementVector* CreatePVectorMasstransport(void);
+		ElementVector* CreatePVectorMasstransportBoundary(void);
+		ElementVector* CreatePVectorMasstransportInternal(void);
+		void           GetNormal(IssmDouble* normal,IssmDouble xyz_list[4][3]);
+		/*}}}*/
+
+};
+
+#endif  /* _NUMERICALFLUX_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Pengrid.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Pengrid.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Pengrid.cpp	(revision 27955)
@@ -0,0 +1,638 @@
+/*!\file Pengrid.c
+ * \brief: implementation of the Pengrid object
+ */
+
+/*Headers*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+#include "../../analyses/analyses.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMVERTICES   1
+
+/*Pengrid constructors and destructor*/
+Pengrid::Pengrid(){/*{{{*/
+	this->parameters=NULL;
+	this->hnode=NULL;
+	this->node=NULL;
+	this->helement=NULL;
+	this->element=NULL;
+
+	/*not active, not zigzagging: */
+	active=0;
+	zigzag_counter=0;
+
+}
+/*}}}*/
+Pengrid::Pengrid(int id, int index, IoModel* iomodel){/*{{{*/
+
+	int pengrid_node_id;
+	int pengrid_element_id;
+
+	/*Some checks if debugging activated*/
+	_assert_(iomodel->singlenodetoelementconnectivity);
+	_assert_(index>=0 && index<iomodel->numberofvertices);
+	_assert_(id);
+
+	/*id: */
+	this->id=id;
+
+	/*hooks: */
+	pengrid_node_id=index+1;
+	pengrid_element_id=iomodel->singlenodetoelementconnectivity[index];
+	_assert_(pengrid_element_id);
+
+	this->hnode=new Hook(&pengrid_node_id,1);
+	this->helement=new Hook(&pengrid_element_id,1);
+
+	//this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
+	this->parameters=NULL;
+	this->node=NULL;
+	this->element=NULL;
+
+	//let's not forget internals
+	this->active=0;
+	this->zigzag_counter=0;
+
+}
+/*}}}*/
+Pengrid::~Pengrid(){/*{{{*/
+	delete hnode;
+	delete helement;
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Pengrid::copy() {/*{{{*/
+
+	Pengrid* pengrid=NULL;
+
+	pengrid=new Pengrid();
+
+	/*copy fields: */
+	pengrid->id=this->id;
+
+	/*point parameters: */
+	pengrid->parameters=this->parameters;
+
+	/*now deal with hooks and objects: */
+	pengrid->hnode=(Hook*)this->hnode->copy();
+	pengrid->helement=(Hook*)this->helement->copy();
+
+	/*corresponding fields*/
+	pengrid->node  =(Node*)pengrid->hnode->delivers();
+	pengrid->element=(Element*)pengrid->helement->delivers();
+
+	//let's not forget internals
+	pengrid->active=this->active=0;
+	pengrid->zigzag_counter=this->zigzag_counter=0;
+
+	return pengrid;
+
+}
+/*}}}*/
+void    Pengrid::DeepEcho(void){/*{{{*/
+
+	_printf_("Pengrid:\n");
+	_printf_("   id: " << id << "\n");
+	hnode->DeepEcho();
+	helement->DeepEcho();
+	_printf_("   active " << this->active << "\n");
+	_printf_("   zigzag_counter " << this->zigzag_counter << "\n");
+	_printf_("   parameters\n");
+	parameters->DeepEcho();
+}
+/*}}}*/
+void    Pengrid::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int     Pengrid::Id(void){ return id; }/*{{{*/
+/*}}}*/
+void    Pengrid::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	_assert_(this);
+
+	/*ok, marshall operations: */
+	int object_enum = PengridEnum;
+	marshallhandle->call(object_enum);
+	marshallhandle->call(this->id);
+
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD){
+		this->hnode    = new Hook();
+		this->helement = new Hook();
+	}
+
+	this->hnode->Marshall(marshallhandle);
+	this->helement->Marshall(marshallhandle);
+
+	/*corresponding fields*/
+	node   =(Node*)this->hnode->delivers();
+	element=(Element*)this->helement->delivers();
+
+	marshallhandle->call(this->active);
+	marshallhandle->call(this->zigzag_counter);
+}/*}}}*/
+int     Pengrid::ObjectEnum(void){/*{{{*/
+
+	return PengridEnum;
+}
+/*}}}*/
+
+/*Load virtual functions definitions:*/
+void  Pengrid::Configure(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+	/*Take care of hooking up all objects for this load, ie links the objects in the hooks to their respective
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	hnode->configure(nodesin);
+	helement->configure(elementsin);
+
+	/*Get corresponding fields*/
+	node=(Node*)hnode->delivers();
+	element=(Element*)helement->delivers();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+}
+/*}}}*/
+void  Pengrid::CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs){/*{{{*/
+
+	/*No loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Pengrid::CreatePVector(Vector<IssmDouble>* pf){/*{{{*/
+	/*No loads applied, do nothing, originaly used for moulin input: */
+	return;
+
+}
+/*}}}*/
+void  Pengrid::GetNodesLidList(int* lidlist){/*{{{*/
+
+	_assert_(lidlist);
+	_assert_(node);
+
+	lidlist[0]=node->Lid();
+}
+/*}}}*/
+void  Pengrid::GetNodesSidList(int* sidlist){/*{{{*/
+
+	_assert_(sidlist);
+	_assert_(node);
+
+	sidlist[0]=node->Sid();
+}
+/*}}}*/
+int   Pengrid::GetNumberOfNodes(void){/*{{{*/
+
+	return NUMVERTICES;
+}
+/*}}}*/
+bool  Pengrid::IsPenalty(void){/*{{{*/
+	return true;
+}
+/*}}}*/
+void  Pengrid::PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs,IssmDouble kmax){/*{{{*/
+
+	/*Retrieve parameters: */
+	ElementMatrix* Ke=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		case ThermalAnalysisEnum:
+			Ke=PenaltyCreateKMatrixThermal(kmax);
+			break;
+		case MeltingAnalysisEnum:
+			Ke=PenaltyCreateKMatrixMelting(kmax);
+			break;
+		case HydrologyDCInefficientAnalysisEnum:
+			Ke=PenaltyCreateKMatrixHydrologyDCInefficient(kmax);
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global matrix*/
+	if(Ke){
+		Ke->AddToGlobal(Kff,Kfs);
+		delete Ke;
+	}
+}
+/*}}}*/
+void  Pengrid::PenaltyCreatePVector(Vector<IssmDouble>* pf,IssmDouble kmax){/*{{{*/
+
+	/*Retrieve parameters: */
+	ElementVector* pe=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		case ThermalAnalysisEnum:
+			pe=PenaltyCreatePVectorThermal(kmax);
+			break;
+		case MeltingAnalysisEnum:
+			pe=PenaltyCreatePVectorMelting(kmax);
+			break;
+		case StressbalanceAnalysisEnum: case AdjointHorizAnalysisEnum:
+			break;
+		case HydrologyDCInefficientAnalysisEnum:
+			pe=PenaltyCreatePVectorHydrologyDCInefficient(kmax);
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global Vector*/
+	if(pe){
+		pe->AddToGlobal(pf);
+		delete pe;
+	}
+}
+/*}}}*/
+void  Pengrid::ResetHooks(){/*{{{*/
+
+	this->node=NULL;
+	this->element=NULL;
+	this->parameters=NULL;
+
+	/*Get Element type*/
+	this->hnode->reset();
+	this->helement->reset();
+
+}
+/*}}}*/
+void  Pengrid::SetCurrentConfiguration(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+}
+/*}}}*/
+void  Pengrid::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
+
+	/*Output */
+	int d_nz = 0;
+	int o_nz = 0;
+
+	if(!flags[this->node->Lid()]){
+
+		/*flag current node so that no other element processes it*/
+		flags[this->node->Lid()]=true;
+
+		flagsindices[flagsindices_counter[0]]=this->node->Lid();
+		flagsindices_counter[0]++;
+
+		/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
+		switch(set2_enum){
+			case FsetEnum:
+				if(node->FSize()){
+					if(this->node->IsClone())
+					 o_nz += 1;
+					else
+					 d_nz += 1;
+				}
+				break;
+			case GsetEnum:
+				if(node->gsize){
+					if(this->node->IsClone())
+					 o_nz += 1;
+					else
+					 d_nz += 1;
+				}
+				break;
+			case SsetEnum:
+				if(node->SSize()){
+					if(this->node->IsClone())
+					 o_nz += 1;
+					else
+					 d_nz += 1;
+				}
+				break;
+			default: _error_("not supported");
+		}
+	}
+
+	/*Assign output pointers: */
+	*pd_nz=d_nz;
+	*po_nz=o_nz;
+}
+/*}}}*/
+
+/*Pengrid management:*/
+void           Pengrid::ConstraintActivate(int* punstable){/*{{{*/
+
+	int analysis_type;
+
+	/*Retrieve parameters: */
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+	case StressbalanceAnalysisEnum:
+		/*No penalty to check*/
+		return;
+	case ThermalAnalysisEnum:
+		ConstraintActivateThermal(punstable);
+		break;
+	case MeltingAnalysisEnum:
+		/*No penalty to check*/
+		return;
+	case HydrologyDCInefficientAnalysisEnum:
+		ConstraintActivateHydrologyDCInefficient(punstable);
+		break;
+	default:
+		_error_("analysis: " << EnumToStringx(analysis_type) << " not supported yet");
+	}
+}
+/*}}}*/
+void           Pengrid::ConstraintActivateHydrologyDCInefficient(int* punstable){/*{{{*/
+
+	//   The penalty is stable if it doesn't change during two consecutive iterations.
+	int        unstable=0;
+	int        new_active;
+	int        penalty_lock;
+	IssmDouble pressure;
+	IssmDouble h;
+	IssmDouble h_max;
+	HydrologyDCInefficientAnalysis* inefanalysis = NULL;
+
+	/*check that pengrid is not a clone (penalty to be added only once)*/
+	if(node->IsClone()){
+		unstable=0;
+		*punstable=unstable;
+		return;
+	}
+	if(!element->IsOnBase()){
+		unstable=0;
+		active=0;
+		*punstable=unstable;
+		return;
+	}
+
+	/*Get sediment water head h*/
+	inefanalysis = new HydrologyDCInefficientAnalysis();
+	element->GetInputValue(&h,node,SedimentHeadSubstepEnum);
+	inefanalysis->GetHydrologyDCInefficientHmax(&h_max,element,node);
+	parameters->FindParam(&penalty_lock,HydrologydcPenaltyLockEnum);
+
+	if (h>h_max){
+	 new_active=1;
+	}
+	else{
+	 new_active=0;
+	}
+
+	if(this->active==new_active){
+		unstable=0;
+	}
+	else{
+		unstable=1;
+		if(penalty_lock)zigzag_counter++;
+	}
+
+	/*If penalty keeps zigzagging more than penalty_lock times: */
+	if(penalty_lock){
+		if(zigzag_counter>penalty_lock){
+			unstable=0;
+			active=1;
+		}
+	}
+	/*Set penalty flag*/
+	this->active=new_active;
+
+	/*Assign output pointers:*/
+	delete inefanalysis;
+	*punstable=unstable;
+}
+/*}}}*/
+void           Pengrid::ConstraintActivateThermal(int* punstable){/*{{{*/
+
+	//   The penalty is stable if it doesn't change during to successive iterations.
+	IssmDouble pressure;
+	IssmDouble temperature;
+	IssmDouble t_pmp;
+	int        new_active;
+	int        unstable=0;
+	int        penalty_lock;
+
+	/*recover pointers: */
+	Penta* penta=(Penta*)element;
+
+	/*check that pengrid is not a clone (penalty to be added only once)*/
+	if (node->IsClone()){
+		unstable=0;
+		*punstable=unstable;
+		return;
+	}
+
+	//First recover pressure and temperature values, using the element: */
+	penta->GetInputValue(&pressure,node,PressureEnum);
+	penta->GetInputValue(&temperature,node,TemperaturePicardEnum);
+
+	//Recover our data:
+	parameters->FindParam(&penalty_lock,ThermalPenaltyLockEnum);
+
+	//Compute pressure melting point
+	t_pmp=element->TMeltingPoint(pressure);
+
+	//Figure out if temperature is over melting_point, in which case, this penalty needs to be activated.
+
+	if (temperature>t_pmp){
+		new_active=1;
+	}
+	else{
+		new_active=0;
+	}
+
+	//Figure out stability of this penalty
+	if (active==new_active){
+		unstable=0;
+	}
+	else{
+		unstable=1;
+		if(penalty_lock)zigzag_counter++;
+	}
+
+	/*If penalty keeps zigzagging more than 5 times: */
+	if(penalty_lock){
+		if(zigzag_counter>penalty_lock){
+			unstable=0;
+			active=1;
+		}
+	}
+
+	//Set penalty flag
+	active=new_active;
+
+	//*Assign output pointers:*/
+	*punstable=unstable;
+}
+/*}}}*/
+ElementMatrix* Pengrid::PenaltyCreateKMatrixHydrologyDCInefficient(IssmDouble kmax){/*{{{*/
+	IssmDouble    penalty_factor;
+
+	/*Retrieve parameters*/
+	parameters->FindParam(&penalty_factor,HydrologydcPenaltyFactorEnum);
+
+	/*Initialize Element matrix and return if necessary*/
+	if(!this->active) return NULL;
+	ElementMatrix* Ke=new ElementMatrix(&node,NUMVERTICES,this->parameters);
+
+	Ke->values[0]=kmax*pow(10.,penalty_factor);
+
+	/*Clean up and return*/
+	return Ke;
+}
+/*}}}*/
+ElementMatrix* Pengrid::PenaltyCreateKMatrixMelting(IssmDouble kmax){/*{{{*/
+
+	IssmDouble pressure,temperature,t_pmp;
+	IssmDouble penalty_factor;
+
+	Penta* penta=(Penta*)element;
+
+	/*check that pengrid is not a clone (penalty to be added only once)*/
+	if (node->IsClone()) return NULL;
+	ElementMatrix* Ke=new ElementMatrix(&node,1,this->parameters);
+
+	/*Retrieve all parameters*/
+	penta->GetInputValue(&pressure,node,PressureEnum);
+	penta->GetInputValue(&temperature,node,TemperatureEnum);
+	parameters->FindParam(&penalty_factor,ThermalPenaltyFactorEnum);
+
+	/*Compute pressure melting point*/
+	t_pmp=parameters->FindParam(MaterialsMeltingpointEnum)-parameters->FindParam(MaterialsBetaEnum)*pressure;
+
+	/*Add penalty load*/
+	if (temperature<t_pmp){ //If T<Tpmp, there must be no melting. Therefore, melting should be  constrained to 0 when T<Tpmp, instead of using spcs, use penalties
+		Ke->values[0]=kmax*pow(10.,penalty_factor);
+	}
+
+	/*Clean up and return*/
+	return Ke;
+}
+/*}}}*/
+ElementMatrix* Pengrid::PenaltyCreateKMatrixThermal(IssmDouble kmax){/*{{{*/
+
+	IssmDouble    penalty_factor;
+
+	/*Initialize Element matrix and return if necessary*/
+	if(!this->active) return NULL;
+	ElementMatrix* Ke=new ElementMatrix(&node,NUMVERTICES,this->parameters);
+
+	/*recover parameters: */
+	parameters->FindParam(&penalty_factor,ThermalPenaltyFactorEnum);
+
+	Ke->values[0]=kmax*pow(10.,penalty_factor);
+
+	/*Clean up and return*/
+	return Ke;
+}
+/*}}}*/
+ElementVector* Pengrid::PenaltyCreatePVectorHydrologyDCInefficient(IssmDouble kmax){/*{{{*/
+
+	IssmDouble h_max;
+	IssmDouble penalty_factor;
+	HydrologyDCInefficientAnalysis* inefanalysis = NULL;
+
+	/*Initialize Element matrix and return if necessary*/
+	if(!this->active) return NULL;
+	ElementVector* pe=new ElementVector(&node,1,this->parameters);
+	inefanalysis = new HydrologyDCInefficientAnalysis();
+
+	/*Retrieve parameters*/
+	parameters->FindParam(&penalty_factor,HydrologydcPenaltyFactorEnum);
+
+	/*Get h_max and compute penalty*/
+	inefanalysis->GetHydrologyDCInefficientHmax(&h_max,element,node);
+
+	pe->values[0]=kmax*pow(10.,penalty_factor)*h_max;
+
+	/*Clean up and return*/
+	delete inefanalysis;
+	return pe;
+}
+/*}}}*/
+ElementVector* Pengrid::PenaltyCreatePVectorMelting(IssmDouble kmax){/*{{{*/
+
+	IssmDouble pressure;
+	IssmDouble temperature;
+	IssmDouble melting_offset;
+	IssmDouble t_pmp;
+	IssmDouble dt,penalty_factor;
+
+	/*recover pointers: */
+	Penta* penta=(Penta*)element;
+
+	/*check that pengrid is not a clone (penalty to be added only once)*/
+	if (node->IsClone()) return NULL;
+	ElementVector* pe=new ElementVector(&node,NUMVERTICES,this->parameters);
+
+	/*Retrieve all parameters*/
+	penta->GetInputValue(&pressure,node,PressureEnum);
+	penta->GetInputValue(&temperature,node,TemperatureEnum);
+	parameters->FindParam(&melting_offset,MeltingOffsetEnum);
+	parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+	parameters->FindParam(&penalty_factor,ThermalPenaltyFactorEnum);
+
+	/*Compute pressure melting point*/
+	t_pmp=parameters->FindParam(MaterialsMeltingpointEnum)-parameters->FindParam(MaterialsBetaEnum)*pressure;
+
+	/*Add penalty load
+	  This time, the penalty must have the same value as the one used for the thermal computation
+	  so that the corresponding melting can be computed correctly
+	  In the thermal computation, we used kmax=melting_offset, and the same penalty_factor*/
+	if (temperature<t_pmp){ //%no melting
+		pe->values[0]=0;
+	}
+	else{
+		if (reCast<bool>(dt)) pe->values[0]=melting_offset*pow(10.,penalty_factor)*(temperature-t_pmp)/dt;
+		else    pe->values[0]=melting_offset*pow(10.,penalty_factor)*(temperature-t_pmp);
+	}
+
+	/*Clean up and return*/
+	return pe;
+}
+/*}}}*/
+ElementVector* Pengrid::PenaltyCreatePVectorThermal(IssmDouble kmax){/*{{{*/
+
+	IssmDouble pressure;
+	IssmDouble t_pmp;
+	IssmDouble penalty_factor;
+
+	Penta* penta=(Penta*)element;
+
+	/*Initialize Element matrix and return if necessary*/
+	if(!this->active) return NULL;
+	ElementVector* pe=new ElementVector(&node,1,this->parameters);
+
+	/*Retrieve all parameters*/
+	penta->GetInputValue(&pressure,node,PressureEnum);
+	parameters->FindParam(&penalty_factor,ThermalPenaltyFactorEnum);
+
+	/*Compute pressure melting point*/
+	t_pmp=parameters->FindParam(MaterialsMeltingpointEnum)-parameters->FindParam(MaterialsBetaEnum)*pressure;
+
+	pe->values[0]=kmax*pow(10.,penalty_factor)*t_pmp;
+
+	/*Clean up and return*/
+	return pe;
+}
+/*}}}*/
+void           Pengrid::ResetConstraint(void){/*{{{*/
+	active         = 0;
+	zigzag_counter = 0;
+}
+/*}}}*/
+void           Pengrid::ResetZigzagCounter(){/*{{{*/
+
+	zigzag_counter=0;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Pengrid.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Pengrid.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Pengrid.h	(revision 27955)
@@ -0,0 +1,88 @@
+/*!\file Pengrid.h
+ * \brief: header file for pengrid object */
+
+#ifndef _PENGRID_H_
+#define _PENGRID_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./Load.h"
+class Hook;
+class Inputs;
+class Parameters;
+class IoModel;
+/*}}}*/
+
+class Pengrid: public Load{
+
+	private: 
+
+		int id;
+
+		/*Hooks*/
+		Hook* hnode;  //hook to 1 node
+		Hook* helement;  //hook to 1 element
+
+		/*Corresponding fields*/
+		Node    *node;
+		Element *element;
+
+		Parameters* parameters; //pointer to solution parameters
+
+		/*internals: */
+		int active;
+		int zigzag_counter;
+
+	public:
+
+		/*Pengrid constructors, destructors {{{*/
+		Pengrid();
+		Pengrid(int id, int index, IoModel* iomodel);
+		~Pengrid();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void  Marshall(MarshallHandle* marshallhandle);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Load virtual functions definitions: {{{*/
+		void  Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void  CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
+		void  CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
+		void  CreatePVector(Vector<IssmDouble>* pf);
+		void  GetNodesLidList(int* lidlist);
+		void  GetNodesSidList(int* sidlist);
+		int   GetNumberOfNodes(void);
+		bool  IsPenalty(void);
+		void  PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){_error_("Not implemented yet");};
+		void  PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
+		void  PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
+		void  ResetHooks();
+		void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
+		/*}}}*/
+		/*Pengrid management {{{*/
+		void				ConstraintActivate(int* punstable);
+		void           ConstraintActivateHydrologyDCInefficient(int* punstable);
+		void           ConstraintActivateThermal(int* punstable);
+		ElementMatrix* PenaltyCreateKMatrixHydrologyDCInefficient(IssmDouble kmax);
+		ElementMatrix* PenaltyCreateKMatrixMelting(IssmDouble kmax);
+		ElementMatrix* PenaltyCreateKMatrixThermal(IssmDouble kmax);
+		ElementVector* PenaltyCreatePVectorHydrologyDCInefficient(IssmDouble kmax);
+		ElementVector* PenaltyCreatePVectorMelting(IssmDouble kmax);
+		ElementVector* PenaltyCreatePVectorThermal(IssmDouble kmax);
+		void  ResetConstraint(void);
+		void  ResetZigzagCounter(void);
+		/*}}}*/
+
+};
+
+#endif  /* _PENGRID_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Penpair.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Penpair.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Penpair.cpp	(revision 27955)
@@ -0,0 +1,410 @@
+/*!\file Penpair.c
+ * \brief: implementation of the Penpair object
+ */
+
+/*Headers*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMVERTICES 2
+
+/*Penpair constructors and destructor*/
+Penpair::Penpair(){/*{{{*/
+
+	this->hnodes=NULL;
+	this->nodes=NULL;
+	this->parameters=NULL;
+	return;
+}
+/*}}}*/
+Penpair::Penpair(int penpair_id, int* penpair_node_ids){/*{{{*/
+
+	this->id=penpair_id;
+	this->hnodes=new Hook(penpair_node_ids,2);
+	this->parameters=NULL;
+	this->nodes=NULL;
+
+	return;
+}
+/*}}}*/
+Penpair::~Penpair(){/*{{{*/
+	delete hnodes;
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Penpair::copy() {/*{{{*/
+
+	Penpair* penpair=NULL;
+
+	penpair=new Penpair();
+
+	/*copy fields: */
+	penpair->id=this->id;
+
+	/*now deal with hooks and objects: */
+	penpair->hnodes=(Hook*)this->hnodes->copy();
+	penpair->nodes =(Node**)penpair->hnodes->deliverp();
+
+	/*point parameters: */
+	penpair->parameters=this->parameters;
+
+	return penpair;
+
+}
+/*}}}*/
+void    Penpair::DeepEcho(void){/*{{{*/
+
+	_printf_("Penpair:\n");
+	_printf_("   id: " << id << "\n");
+	hnodes->DeepEcho();
+
+	return;
+}		
+/*}}}*/
+void    Penpair::Echo(void){/*{{{*/
+
+	_printf_("Penpair:\n");
+	_printf_("   id: " << id << "\n");
+	hnodes->Echo();
+
+	return;
+}
+/*}}}*/
+int     Penpair::Id(void){ return id; }/*{{{*/
+/*}}}*/
+void    Penpair::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	_assert_(this);
+
+	/*ok, marshall operations: */
+	int object_enum = PenpairEnum;
+	marshallhandle->call(object_enum);
+	marshallhandle->call(this->id);
+
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD){
+		this->hnodes = new Hook();
+	}
+	this->hnodes->Marshall(marshallhandle);
+
+	/*corresponding fields*/
+	nodes = (Node**)this->hnodes->deliverp();
+}
+/*}}}*/
+int     Penpair::ObjectEnum(void){/*{{{*/
+
+	return PenpairEnum;
+}
+/*}}}*/
+
+/*Load virtual functions definitions:*/
+void  Penpair::Configure(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	hnodes->configure((DataSet*)nodesin);
+
+	/*Initialize hooked fields*/
+	this->nodes  =(Node**)hnodes->deliverp();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+
+}
+/*}}}*/
+void  Penpair::CreateJacobianMatrix(Matrix<IssmDouble>* Jff){/*{{{*/
+	this->CreateKMatrix(Jff,NULL);
+}
+/*}}}*/
+void  Penpair::CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs){/*{{{*/
+	/*If you code this piece, don't forget that a penalty will be inactive if it is dealing with clone nodes*/
+	/*No loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Penpair::CreatePVector(Vector<IssmDouble>* pf){/*{{{*/
+
+	/*No loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Penpair::GetNodesLidList(int* lidlist){/*{{{*/
+
+	_assert_(lidlist);
+	_assert_(nodes);
+
+	for(int i=0;i<NUMVERTICES;i++) lidlist[i]=nodes[i]->Lid();
+}
+/*}}}*/
+void  Penpair::GetNodesSidList(int* sidlist){/*{{{*/
+
+	_assert_(sidlist);
+	_assert_(nodes);
+
+	for(int i=0;i<NUMVERTICES;i++) sidlist[i]=nodes[i]->Sid();
+}
+/*}}}*/
+int   Penpair::GetNumberOfNodes(void){/*{{{*/
+
+	return NUMVERTICES;
+}
+/*}}}*/
+bool  Penpair::IsPenalty(void){/*{{{*/
+	return true;
+}
+/*}}}*/
+void  Penpair::PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){/*{{{*/
+	this->PenaltyCreateKMatrix(Jff,NULL,kmax);
+}
+/*}}}*/
+void  Penpair::PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs,IssmDouble kmax){/*{{{*/
+
+	/*Retrieve parameters: */
+	ElementMatrix* Ke=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		case StressbalanceAnalysisEnum:
+			Ke=PenaltyCreateKMatrixStressbalanceHoriz(kmax);
+			break;
+		case MasstransportAnalysisEnum:
+			Ke=PenaltyCreateKMatrixMasstransport(kmax);
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global Vector*/
+	if(Ke){
+		Ke->AddToGlobal(Kff,Kfs);
+		delete Ke;
+	}
+}
+/*}}}*/
+void  Penpair::PenaltyCreatePVector(Vector<IssmDouble>* pf,IssmDouble kmax){/*{{{*/
+	/*No loads applied, do nothing: */
+	return;
+}
+/*}}}*/
+void  Penpair::ResetHooks(){/*{{{*/
+
+	this->nodes=NULL;
+	this->parameters=NULL;
+
+	/*Get Element type*/
+	this->hnodes->reset();
+
+}
+/*}}}*/
+void  Penpair::SetCurrentConfiguration(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+}
+/*}}}*/
+void  Penpair::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
+
+	/*Output */
+	int d_nz = 0;
+	int o_nz = 0;
+
+	/*Loop over all nodes*/
+	for(int i=0;i<NUMVERTICES;i++){
+
+		if(!flags[this->nodes[i]->Lid()]){
+
+			/*flag current node so that no other element processes it*/
+			flags[this->nodes[i]->Lid()]=true;
+
+			flagsindices[flagsindices_counter[0]]=this->nodes[i]->Lid();
+         flagsindices_counter[0]++;
+			int counter=0;
+
+			/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
+			switch(set2_enum){
+				case FsetEnum:
+					if(nodes[i]->FSize()){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case GsetEnum:
+					if(nodes[i]->gsize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case SsetEnum:
+					if(nodes[i]->SSize()){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				default: _error_("not supported");
+			}
+		}
+	}
+
+	/*Assign output pointers: */
+	*pd_nz=d_nz;
+	*po_nz=o_nz;
+}
+/*}}}*/
+
+/*Update virtual functions definitions:*/
+void  Penpair::InputUpdateFromConstant(IssmDouble constant, int name){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Penpair::InputUpdateFromConstant(int constant, int name){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Penpair::InputUpdateFromConstant(bool constant, int name){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Penpair::InputUpdateFromVector(IssmDouble* vector, int name, int type){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+
+/*Penpair management:*/
+ElementMatrix* Penpair::PenaltyCreateKMatrixMasstransport(IssmDouble kmax){/*{{{*/
+
+	const int numdof=NUMVERTICES*1;
+	IssmDouble penalty_factor;
+
+	/*Initialize Element vector and return if necessary*/
+	ElementMatrix* Ke=new ElementMatrix(nodes,NUMVERTICES,this->parameters);
+
+	/*recover parameters: */
+	parameters->FindParam(&penalty_factor,MasstransportPenaltyFactorEnum);
+
+	//Create elementary matrix: add penalty to 
+	Ke->values[0*numdof+0]=+kmax*pow(10.,penalty_factor);
+	Ke->values[0*numdof+1]=-kmax*pow(10.,penalty_factor);
+	Ke->values[1*numdof+0]=-kmax*pow(10.,penalty_factor);
+	Ke->values[1*numdof+1]=+kmax*pow(10.,penalty_factor);
+
+	/*Clean up and return*/
+	return Ke;
+}
+/*}}}*/
+ElementMatrix* Penpair::PenaltyCreateKMatrixStressbalanceFS(IssmDouble kmax){/*{{{*/
+
+	int        numdof,numdof2,N;
+	IssmDouble penalty_offset;
+
+	/*Initialize Element vector and return if necessary*/
+	ElementMatrix* Ke=new ElementMatrix(nodes,NUMVERTICES,this->parameters,FSvelocityEnum);
+
+	/*recover parameters: */
+	parameters->FindParam(&penalty_offset,StressbalancePenaltyFactorEnum);
+
+	/*Get number of dof for these two nodes*/
+	numdof =this->nodes[0]->GetNumberOfDofs(FSApproximationEnum,GsetEnum);
+	numdof2=this->nodes[1]->GetNumberOfDofs(FSApproximationEnum,GsetEnum);
+	N=NUMVERTICES*numdof;
+
+	/*Add penalty to Element matrix*/
+	for(int i=0;i<numdof;i++){
+		Ke->values[         i*N+i       ]=+kmax*pow(10.,penalty_offset);
+		Ke->values[         i*N+numdof+i]=-kmax*pow(10.,penalty_offset);
+		Ke->values[(numdof+i)*N+i       ]=-kmax*pow(10.,penalty_offset);
+		Ke->values[(numdof+i)*N+numdof+i]=+kmax*pow(10.,penalty_offset);
+	}
+
+	/*Clean up and return*/
+	return Ke;
+}
+/*}}}*/
+ElementMatrix* Penpair::PenaltyCreateKMatrixStressbalanceHoriz(IssmDouble kmax){/*{{{*/
+
+	int    approximation0=nodes[0]->GetApproximation();
+	int    approximation1=nodes[1]->GetApproximation();
+
+	switch(approximation0){
+		case SSAApproximationEnum:
+			switch(approximation1){
+				case SSAApproximationEnum: return PenaltyCreateKMatrixStressbalanceSSAHO(kmax); 
+				case HOApproximationEnum:   return PenaltyCreateKMatrixStressbalanceSSAHO(kmax); 
+				default: _error_("Approximation "<<EnumToStringx(approximation1)<<" not supported yet");
+			}
+		case HOApproximationEnum:
+			switch(approximation1){
+				case SSAApproximationEnum: return PenaltyCreateKMatrixStressbalanceSSAHO(kmax); 
+				case HOApproximationEnum:   return PenaltyCreateKMatrixStressbalanceSSAHO(kmax); 
+				default: _error_("Approximation "<<EnumToStringx(approximation1)<<" not supported yet");
+			}
+		case MOLHOApproximationEnum:
+			switch(approximation1){
+				case MOLHOApproximationEnum:   return PenaltyCreateKMatrixStressbalanceSSAHO(kmax); 
+				default: _error_("Approximation "<<EnumToStringx(approximation1)<<" not supported yet");
+			}
+		case L1L2ApproximationEnum:
+			switch(approximation1){
+				case L1L2ApproximationEnum:   return PenaltyCreateKMatrixStressbalanceSSAHO(kmax); 
+				default: _error_("Approximation "<<EnumToStringx(approximation1)<<" not supported yet");
+			}
+		case FSvelocityEnum:
+			switch(approximation1){
+				case FSvelocityEnum: return PenaltyCreateKMatrixStressbalanceFS(kmax); 
+				case NoneApproximationEnum: return   PenaltyCreateKMatrixStressbalanceFS(kmax); 
+				default: _error_("Approximation "<<EnumToStringx(approximation1)<<" not supported yet");
+			}
+		case NoneApproximationEnum:
+			switch(approximation1){
+				case FSvelocityEnum: return PenaltyCreateKMatrixStressbalanceFS(kmax); 
+				case NoneApproximationEnum: return   PenaltyCreateKMatrixStressbalanceFS(kmax); 
+			}
+		default: _error_("Approximation "<<EnumToStringx(approximation0)<<" not supported yet");
+	}
+}
+/*}}}*/
+ElementMatrix* Penpair::PenaltyCreateKMatrixStressbalanceSSAHO(IssmDouble kmax){/*{{{*/
+
+	int        numdof,numdof2,N;
+	IssmDouble penalty_offset;
+
+	/*Initialize Element vector and return if necessary*/
+	ElementMatrix* Ke=new ElementMatrix(nodes,NUMVERTICES,this->parameters);
+
+	/*recover parameters: */
+	parameters->FindParam(&penalty_offset,StressbalancePenaltyFactorEnum);
+
+	/*Get number of dof for these two nodes*/
+	numdof =this->nodes[0]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+	numdof2=this->nodes[1]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+	_assert_(numdof==numdof2);
+	N=NUMVERTICES*numdof;
+
+	/*Add penalty to Element matrix*/
+	for(int i=0;i<numdof;i++){
+		Ke->values[         i*N+i       ]=+kmax*pow(10.,penalty_offset);
+		Ke->values[         i*N+numdof+i]=-kmax*pow(10.,penalty_offset);
+		Ke->values[(numdof+i)*N+i       ]=-kmax*pow(10.,penalty_offset);
+		Ke->values[(numdof+i)*N+numdof+i]=+kmax*pow(10.,penalty_offset);
+	}
+
+	/*Clean up and return*/
+	return Ke;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Penpair.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Penpair.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Penpair.h	(revision 27955)
@@ -0,0 +1,72 @@
+/*!\file Penpair.h
+ * \brief: header file for penpair object */
+
+#ifndef _PENPAIR_H_
+#define _PENPAIR_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Load.h"
+#include "../Node.h"
+#include "../Elements/Element.h"
+
+class Element;
+/*}}}*/
+
+class Penpair: public Load{
+
+	private: 
+		int          id;
+		Hook        *hnodes;          //hook to 2 nodes
+		Node       **nodes;
+		Parameters  *parameters;      //pointer to solution parameters
+
+	public:
+
+		/*Penpair constructors, destructors: {{{*/
+		Penpair();
+		Penpair(int penpair_id,int* penpair_node_ids);
+		~Penpair();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object*  copy();
+		void     DeepEcho();
+		void     Echo();
+		int      Id(); 
+		void     Marshall(MarshallHandle* marshallhandle);
+		int      ObjectEnum();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{*/
+		void  InputUpdateFromConstant(IssmDouble constant, int name);
+		void  InputUpdateFromConstant(int constant, int name);
+		void  InputUpdateFromConstant(bool constant, int name);
+		void  InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
+		void  InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrow, int ncols,int name, int type){_error_("Not implemented yet!");}
+		void  InputUpdateFromVector(IssmDouble* vector, int name, int type);
+		void  InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){_error_("Not implemented yet!");}
+		/*}}}*/
+			/*Load virtual functions definitions: {{{*/
+		void  Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void  CreateJacobianMatrix(Matrix<IssmDouble>* Jff);
+		void  CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
+		void  CreatePVector(Vector<IssmDouble>* pf);
+		void  GetNodesLidList(int* lidlist);
+		void  GetNodesSidList(int* sidlist);
+		int   GetNumberOfNodes(void);
+		bool  IsPenalty(void);
+		void  PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax);
+		void  PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff,Matrix<IssmDouble>* Kfs,IssmDouble kmax);
+		void  PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
+		void  ResetHooks();
+		void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
+		/*}}}*/
+			/*Penpair management: {{{*/
+		ElementMatrix* PenaltyCreateKMatrixMasstransport(IssmDouble kmax);
+		ElementMatrix* PenaltyCreateKMatrixStressbalanceFS(IssmDouble kmax);
+		ElementMatrix* PenaltyCreateKMatrixStressbalanceHoriz(IssmDouble kmax);
+		ElementMatrix* PenaltyCreateKMatrixStressbalanceSSAHO(IssmDouble kmax);
+		/*}}}*/
+};
+
+#endif  /* _PENPAIR_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Riftfront.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Riftfront.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Riftfront.cpp	(revision 27955)
@@ -0,0 +1,686 @@
+/*!\file Riftfront.cpp
+ * \brief: implementation of the Riftfront object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "shared/shared.h"
+#include "modules/ModelProcessorx/ModelProcessorx.h"
+#include "../classes.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMVERTICES 2
+
+/*Riftfront constructors and destructor*/
+Riftfront::Riftfront(){/*{{{*/
+	this->parameters=NULL;
+	this->hnodes=NULL;
+	this->hvertices=NULL;
+	this->helements=NULL;
+	this->nodes=NULL;
+	this->vertices=NULL;
+	this->elements=NULL;
+}
+/*}}}*/
+Riftfront::Riftfront(int riftfront_id,int i, IoModel* iomodel){/*{{{*/
+
+	/*data: */
+	const int RIFTINFOSIZE = 12;
+	int    riftfront_node_ids[2];
+	int    riftfront_elem_ids[2];
+	IssmDouble riftfront_friction;
+	IssmDouble riftfront_fractionincrement;
+	int    penalty_lock;
+
+	/*intermediary: */
+	int el1    ,el2;
+	int node1  ,node2;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&penalty_lock,"md.stressbalance.rift_penalty_lock");
+
+	/*Ok, retrieve all the data needed to add a penalty between the two nodes: */
+	el1=reCast<int,IssmDouble>(*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+2));
+	el2=reCast<int,IssmDouble>(*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+3)) ;
+
+	node1=reCast<int,IssmDouble>(*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+0));
+	node2=reCast<int,IssmDouble>(*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+1));
+
+	/*id: */
+	this->id=riftfront_id;
+
+	/*hooks: */
+	riftfront_node_ids[0]=node1;
+	riftfront_node_ids[1]=node2;
+	riftfront_elem_ids[0]=el1;
+	riftfront_elem_ids[1]=el2;
+
+	/*Hooks: */
+	this->hnodes=new Hook(riftfront_node_ids,2);
+	this->hvertices=new Hook(riftfront_node_ids,2);
+	this->helements=new Hook(riftfront_elem_ids,2);
+
+	/*computational parameters: */
+	this->active=0;
+	this->frozen=0;
+	this->counter=0;
+	this->prestable=0;
+	this->penalty_lock=penalty_lock;
+	this->material_converged=0;
+	this->normal[0]=*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+4);
+	this->normal[1]=*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+5);
+	this->length=*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+6);
+	this->fraction=*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+9);
+	this->state=reCast<int,IssmDouble>(*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+11));
+
+	//intialize properties
+	this->type=SegmentRiftfrontEnum;
+	this->fill = IoRiftfillToEnum(reCast<int,IssmDouble>(*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+7)));
+	this->friction=*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+8);
+	this->fractionincrement=*(iomodel->Data("md.rifts.riftstruct")+RIFTINFOSIZE*i+10);
+	this->shelf=reCast<bool,IssmDouble>(iomodel->Data("md.mask.ocean_levelset")[node1-1]<0.);
+
+	//parameters and hooked fields: we still can't point to them, they may not even exist. Configure will handle this.
+	this->parameters=NULL;
+	this->nodes= NULL;
+	this->vertices= NULL;
+	this->elements= NULL;
+
+}
+/*}}}*/
+Riftfront::~Riftfront(){/*{{{*/
+	this->parameters=NULL;
+	delete hnodes;
+	delete hvertices;
+	delete helements;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Riftfront::copy() {/*{{{*/
+
+	Riftfront* riftfront=NULL;
+
+	riftfront=new Riftfront();
+
+	/*copy fields: */
+	riftfront->id=this->id;
+	riftfront->type=this->type;
+	riftfront->fill=this->fill;
+	riftfront->friction=this->friction;
+	riftfront->fractionincrement=this->fractionincrement;
+	riftfront->shelf=this->shelf;
+
+	/*point parameters: */
+	riftfront->parameters=this->parameters;
+
+	/*now deal with hooks and objects: */
+	riftfront->hnodes=(Hook*)this->hnodes->copy();
+	riftfront->hvertices=(Hook*)this->hvertices->copy();
+	riftfront->helements=(Hook*)this->helements->copy();
+
+	/*corresponding fields*/
+	riftfront->nodes   =(Node**)riftfront->hnodes->deliverp();
+	riftfront->vertices=(Vertex**)riftfront->hvertices->deliverp();
+	riftfront->elements=(Element**)riftfront->helements->deliverp();
+
+	/*internal data: */
+	riftfront->penalty_lock=this->penalty_lock;
+	riftfront->active=this->active;
+	riftfront->frozen=this->frozen;
+	riftfront->state=this->state;
+	riftfront->counter=this->counter;
+	riftfront->prestable=this->prestable;
+	riftfront->material_converged=this->material_converged;
+	riftfront->normal[0]=this->normal[0];
+	riftfront->normal[1]=this->normal[1];
+	riftfront->length=this->length;
+	riftfront->fraction=this->fraction;
+
+	return riftfront;
+
+}
+/*}}}*/
+void    Riftfront::DeepEcho(void){/*{{{*/
+
+	_printf_("Riftfront:\n");
+	_printf_("   id: " << id << "\n");
+	hnodes->DeepEcho();
+	hvertices->DeepEcho();
+	helements->DeepEcho();
+	_printf_("   parameters\n");
+	if(parameters)parameters->DeepEcho();
+}
+/*}}}*/
+void    Riftfront::Echo(void){/*{{{*/
+
+	_printf_("Riftfront:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   hnodes: " << hnodes << "\n");
+	_printf_("   hvertices: " << hvertices << "\n");
+	_printf_("   helements: " << helements << "\n");
+	_printf_("   parameters: " << parameters << "\n");
+	_printf_("   internal parameters: \n");
+	_printf_("   normal: " << normal[0] << "|" << normal[1] << "\n");
+	_printf_("   length: " << length << "\n");
+	_printf_("   penalty_lock: " << penalty_lock << "\n");
+	_printf_("   active: " <<(active ? "true":"false") << "\n");
+	_printf_("   counter: " << counter << "\n");
+	_printf_("   prestable: " << (prestable ? "true":"false") << "\n");
+	_printf_("   material_converged: " << (material_converged ? "true":"false") << "\n");
+	_printf_("   fill: " << fill << "\n");
+	_printf_("   friction: " << friction << "\n");
+	_printf_("   fraction: " << fraction << "\n");
+	_printf_("   fractionincrement: " << fractionincrement << "\n");
+	_printf_("   state: " << state << "\n");
+	_printf_("   frozen: " << (frozen ? "true":"false") << "\n");
+
+}
+/*}}}*/
+int     Riftfront::Id(void){ return id; }/*{{{*/
+/*}}}*/
+void    Riftfront::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	_assert_(this);
+
+	/*ok, marshall operations: */
+	int object_enum = RiftfrontEnum;
+	marshallhandle->call(object_enum);
+	marshallhandle->call(this->id);
+	marshallhandle->call(this->type);
+	marshallhandle->call(this->fill);
+	marshallhandle->call(this->friction);
+	marshallhandle->call(this->fractionincrement);
+	marshallhandle->call(this->shelf);
+
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD){
+		this->hnodes     = new Hook();
+		this->hvertices  = new Hook();
+		this->helements  = new Hook();
+	}
+
+	this->hnodes->Marshall(marshallhandle);
+	this->hvertices->Marshall(marshallhandle);
+	this->helements->Marshall(marshallhandle);
+
+	/*corresponding fields*/
+	nodes     =(Node**)this->hnodes->deliverp();
+	vertices  =(Vertex**)this->hvertices->deliverp();
+	elements  =(Element**)this->helements->deliverp();
+
+	marshallhandle->call(this->penalty_lock);
+	marshallhandle->call(this->active);
+	marshallhandle->call(this->frozen);
+	marshallhandle->call(this->state);
+	marshallhandle->call(this->counter);
+	marshallhandle->call(this->prestable);
+	marshallhandle->call(this->material_converged);
+	marshallhandle->call(this->normal[0]);
+	marshallhandle->call(this->normal[1]);
+	marshallhandle->call(this->length);
+	marshallhandle->call(this->fraction);
+}/*}}}*/
+int     Riftfront::ObjectEnum(void){/*{{{*/
+
+	return RiftfrontEnum;
+
+}
+/*}}}*/
+
+/*Update virtual functions definitions:*/
+void  Riftfront::InputUpdateFromConstant(bool constant,int name){/*{{{*/
+}
+/*}}}*/
+void  Riftfront::InputUpdateFromConstant(IssmDouble constant,int name){/*{{{*/
+
+}
+/*}}}*/
+void  Riftfront::InputUpdateFromVector(IssmDouble* vector, int name, int type){/*{{{*/
+
+	/*Nothing to update*/
+
+}
+/*}}}*/
+
+/*Load virtual functions definitions:*/
+void  Riftfront::Configure(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/	
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	hnodes->configure(nodesin);
+	hvertices->configure(verticesin);
+	helements->configure(elementsin);
+
+	/*Initialize hooked fields*/
+	this->nodes   =(Node**)hnodes->deliverp();
+	this->vertices=(Vertex**)hvertices->deliverp();
+	this->elements=(Element**)helements->deliverp();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+
+}
+/*}}}*/
+void  Riftfront::CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs){/*{{{*/
+	/*do nothing: */
+	return;
+}
+/*}}}*/
+void  Riftfront::CreatePVector(Vector<IssmDouble>* pf){/*{{{*/
+	/*do nothing: */
+	return;
+}
+/*}}}*/
+void  Riftfront::GetNodesLidList(int* lidlist){/*{{{*/
+
+	_assert_(lidlist);
+	_assert_(nodes);
+
+	for(int i=0;i<NUMVERTICES;i++) lidlist[i]=nodes[i]->Lid();
+}
+/*}}}*/
+void  Riftfront::GetNodesSidList(int* sidlist){/*{{{*/
+
+	_assert_(sidlist);
+	_assert_(nodes);
+
+	for(int i=0;i<NUMVERTICES;i++) sidlist[i]=nodes[i]->Sid();
+}
+/*}}}*/
+int   Riftfront::GetNumberOfNodes(void){/*{{{*/
+
+	return NUMVERTICES;
+}
+/*}}}*/
+bool  Riftfront::IsPenalty(void){/*{{{*/
+	return true;
+}
+/*}}}*/
+void  Riftfront::PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs,IssmDouble kmax){/*{{{*/
+
+	/*Retrieve parameters: */
+	ElementMatrix* Ke=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		case StressbalanceAnalysisEnum:
+			Ke=PenaltyCreateKMatrixStressbalanceHoriz(kmax);
+			break;
+		case AdjointHorizAnalysisEnum:
+			Ke=PenaltyCreateKMatrixStressbalanceHoriz(kmax);
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global Vector*/
+	if(Ke){
+		Ke->AddToGlobal(Kff,Kfs);
+		delete Ke;
+	}
+}
+/*}}}*/
+void  Riftfront::PenaltyCreatePVector(Vector<IssmDouble>* pf,IssmDouble kmax){/*{{{*/
+
+	/*Retrieve parameters: */
+	ElementVector* pe=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		case StressbalanceAnalysisEnum:
+			pe=PenaltyCreatePVectorStressbalanceHoriz(kmax);
+			break;
+		case AdjointHorizAnalysisEnum:
+			/*No penalty applied on load vector*/
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global Vector*/
+	if(pe){
+		pe->AddToGlobal(pf);
+		delete pe;
+	}
+}
+/*}}}*/
+void  Riftfront::ResetHooks(){/*{{{*/
+
+	this->nodes=NULL;
+	this->vertices=NULL;
+	this->elements=NULL;
+	this->parameters=NULL;
+
+	/*Get Element type*/
+	this->hnodes->reset();
+	this->hvertices->reset();
+	this->helements->reset();
+
+}
+/*}}}*/
+void  Riftfront::SetCurrentConfiguration(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+}
+/*}}}*/
+void  Riftfront::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum){/*{{{*/
+
+	/*Output */
+	int d_nz = 0;
+	int o_nz = 0;
+
+	/*Loop over all nodes*/
+	for(int i=0;i<NUMVERTICES;i++){
+
+		if(!flags[this->nodes[i]->Lid()]){
+
+			/*flag current node so that no other element processes it*/
+			flags[this->nodes[i]->Lid()]=true;
+
+			flagsindices[flagsindices_counter[0]]=this->nodes[i]->Lid();
+			flagsindices_counter[0]++;
+
+			/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
+			switch(set2_enum){
+				case FsetEnum:
+					if(nodes[i]->FSize()){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case GsetEnum:
+					if(nodes[i]->gsize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case SsetEnum:
+					if(nodes[i]->SSize()){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				default: _error_("not supported");
+			}
+		}
+	}
+
+	/*Assign output pointers: */
+	*pd_nz=d_nz;
+	*po_nz=o_nz;
+}
+/*}}}*/
+
+/*Riftfront numerics*/
+ElementMatrix* Riftfront::PenaltyCreateKMatrixStressbalanceHoriz(IssmDouble kmax){/*{{{*/
+
+	const int   numdof = 2*NUMVERTICES;
+	IssmDouble  thickness;
+	IssmDouble  h[2];
+	IssmDouble  penalty_offset;
+
+	/*enum of element? */
+	if(elements[0]->ObjectEnum()!=TriaEnum)_error_("only Tria element allowed for Riftfront load!");
+	Tria* tria1=(Tria*)elements[0];
+	Tria* tria2=(Tria*)elements[1];
+
+	/*Initialize Element Matrix*/
+	if(!this->active) return NULL;
+	ElementMatrix* Ke=new ElementMatrix(nodes,NUMVERTICES,this->parameters);
+
+	/*Get some parameters: */
+	this->parameters->FindParam(&penalty_offset,StressbalancePenaltyFactorEnum);
+	tria1->GetInputValue(&h[0],vertices[0],ThicknessEnum);
+	tria2->GetInputValue(&h[1],vertices[1],ThicknessEnum);
+	if (h[0]!=h[1])_error_("different thicknesses not supported for rift fronts");
+	thickness=h[0];
+
+	/*There is contact, we need to constrain the normal velocities (zero penetration), and the 
+	 *contact slip friction. */
+
+	/*From Peter Wriggers book (Computational Contact Mechanics, p191): */
+	Ke->values[0*numdof+0]+= +pow(normal[0],2)*kmax*pow(10,penalty_offset);
+	Ke->values[0*numdof+1]+= +normal[0]*normal[1]*kmax*pow(10,penalty_offset);
+	Ke->values[0*numdof+2]+= -pow(normal[0],2)*kmax*pow(10,penalty_offset);
+	Ke->values[0*numdof+3]+= -normal[0]*normal[1]*kmax*pow(10,penalty_offset);
+
+	Ke->values[1*numdof+0]+= +normal[0]*normal[1]*kmax*pow(10,penalty_offset);
+	Ke->values[1*numdof+1]+= +pow(normal[1],2)*kmax*pow(10,penalty_offset);
+	Ke->values[1*numdof+2]+= -normal[0]*normal[1]*kmax*pow(10,penalty_offset);
+	Ke->values[1*numdof+3]+= -pow(normal[1],2)*kmax*pow(10,penalty_offset);
+
+	Ke->values[2*numdof+0]+= -pow(normal[0],2)*kmax*pow(10,penalty_offset);
+	Ke->values[2*numdof+1]+= -normal[0]*normal[1]*kmax*pow(10,penalty_offset);
+	Ke->values[2*numdof+2]+= +pow(normal[0],2)*kmax*pow(10,penalty_offset);
+	Ke->values[2*numdof+3]+= +normal[0]*normal[1]*kmax*pow(10,penalty_offset);
+
+	Ke->values[3*numdof+0]+= -normal[0]*normal[1]*kmax*pow(10,penalty_offset);
+	Ke->values[3*numdof+1]+= -pow(normal[1],2)*kmax*pow(10,penalty_offset);
+	Ke->values[3*numdof+2]+= +normal[0]*normal[1]*kmax*pow(10,penalty_offset);
+	Ke->values[3*numdof+3]+= +pow(normal[1],2)*kmax*pow(10,penalty_offset);
+
+	/*Now take care of the friction: of type sigma=frictiontangent_velocity2-tangent_velocity1)*/
+
+	Ke->values[0*numdof+0]+= +pow(normal[1],2)*thickness*length*friction;
+	Ke->values[0*numdof+1]+= -normal[0]*normal[1]*thickness*length*friction;
+	Ke->values[0*numdof+2]+= -pow(normal[1],2)*thickness*length*friction;
+	Ke->values[0*numdof+3]+= +normal[0]*normal[1]*thickness*length*friction;
+
+	Ke->values[1*numdof+0]+= -normal[0]*normal[1]*thickness*length*friction;
+	Ke->values[1*numdof+1]+= +pow(normal[0],2)*thickness*length*friction;
+	Ke->values[1*numdof+2]+= +normal[0]*normal[1]*thickness*length*friction;
+	Ke->values[1*numdof+3]+= -pow(normal[0],2)*thickness*length*friction;
+
+	Ke->values[2*numdof+0]+= -pow(normal[1],2)*thickness*length*friction;
+	Ke->values[2*numdof+1]+= +normal[0]*normal[1]*thickness*length*friction;
+	Ke->values[2*numdof+2]+= +pow(normal[1],2)*thickness*length*friction;
+	Ke->values[2*numdof+3]+= -normal[0]*normal[1]*thickness*length*friction;
+
+	Ke->values[3*numdof+0]+= +normal[0]*normal[1]*thickness*length*friction;
+	Ke->values[3*numdof+1]+= -pow(normal[0],2)*thickness*length*friction;
+	Ke->values[3*numdof+2]+= -normal[0]*normal[1]*thickness*length*friction;
+	Ke->values[3*numdof+3]+= +pow(normal[0],2)*thickness*length*friction;
+
+	/*Clean up and return*/
+	return Ke;
+}
+/*}}}*/
+ElementVector* Riftfront::PenaltyCreatePVectorStressbalanceHoriz(IssmDouble kmax){/*{{{*/
+
+	int        j;
+	IssmDouble rho_ice;
+	IssmDouble rho_water;
+	IssmDouble gravity;
+	IssmDouble thickness;
+	IssmDouble h[2];
+	IssmDouble bed;
+	IssmDouble b[2];
+	IssmDouble pressure;
+	IssmDouble pressure_litho;
+	IssmDouble pressure_air;
+	IssmDouble pressure_melange;
+	IssmDouble pressure_water;
+
+	/*enum of element? */
+	if(elements[0]->ObjectEnum()!=TriaEnum)_error_("only Tria element allowed for Riftfront load!");
+	Tria* tria1=(Tria*)elements[0];
+	Tria* tria2=(Tria*)elements[1];
+
+	/*Initialize Element Matrix*/
+	if(this->active) return NULL; /*The penalty is active. No loads implied here.*/
+	ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters);
+
+	/*Get some inputs: */
+	rho_ice=tria1->FindParam(MaterialsRhoIceEnum);
+	rho_water=tria1->FindParam(MaterialsRhoSeawaterEnum);
+	gravity=tria1->FindParam(ConstantsGEnum);
+	tria1->GetInputValue(&h[0],vertices[0],ThicknessEnum);
+	tria2->GetInputValue(&h[1],vertices[1],ThicknessEnum);
+	if (h[0]!=h[1])_error_("different thicknesses not supported for rift fronts");
+	thickness=h[0];
+	tria1->GetInputValue(&b[0],vertices[0],BaseEnum);
+	tria2->GetInputValue(&b[1],vertices[1],BaseEnum);
+	if (b[0]!=b[1])_error_("different beds not supported for rift fronts");
+	bed=b[0];
+
+	/*Ok, this rift is opening. We should put loads on both sides of the rift flanks. Because we are dealing with contact mechanics, 
+	 * and we want to avoid zigzagging of the loads, we want lump the loads onto nodes, not onto surfaces between nodes.:*/
+
+	/*Ok, to compute the pressure, we are going to need material properties, thickness and bed for the two nodes. We assume those properties to 
+	 * be the same across the rift.: */
+
+	/*Ok, now compute the pressure (in norm) that is being applied to the flanks, depending on the type of fill: */
+	if(fill==WaterEnum){
+		if(shelf){
+			/*We are on an ice shelf, hydrostatic equilibrium is used to determine the pressure for water fill: */
+			pressure=rho_ice*gravity*pow(thickness,2)/2.- rho_water*gravity*pow(bed,2)/2.; 
+		}
+		else{
+			//We are on an icesheet, we assume the water column fills the entire front: */
+			pressure=rho_ice*gravity*pow(thickness,2)/2.- rho_water*gravity*pow(thickness,2)/2.; 
+		}
+	}
+	else if(fill==AirEnum){
+		pressure=rho_ice*gravity*pow(thickness,2)/2.;   //icefront on an ice sheet, pressure imbalance ice vs air.
+	}
+	else if(fill==IceEnum){ //icefront finding itself against another icefront (pressure imbalance is fully compensated, ice vs ice)
+		pressure=0;
+	}
+	else if(fill==MelangeEnum){ //icefront finding itself against another icefront (pressure imbalance is fully compensated, ice vs ice)
+
+		if(!shelf) _error_("fill type " << fill << " not supported on ice sheets yet.");
+
+		pressure_litho=rho_ice*gravity*pow(thickness,2)/2.;
+		pressure_air=0;
+		pressure_melange=rho_ice*gravity*pow(fraction*thickness,2)/2.;
+		pressure_water=1.0/2.0*rho_water*gravity*  ( pow(bed,2.0)-pow(rho_ice/rho_water*fraction*thickness,2.0) );
+
+		pressure=pressure_litho-pressure_air-pressure_melange-pressure_water;
+	}
+	else{
+		_error_("fill type " << fill << " not supported yet.");
+	}
+
+	/*Ok, add contribution to first node, along the normal i==0: */
+	for(int j=0;j<2;j++){
+		pe->values[j]+=pressure*normal[j]*length;
+	}
+
+	/*Add contribution to second node, along the opposite normal: i==1 */
+	for(int j=0;j<2;j++){
+		pe->values[2+j]+= -pressure*normal[j]*length;
+	}	
+
+	/*Clean up and return*/
+	return pe;
+}
+/*}}}*/
+int    Riftfront::Constrain(int* punstable){/*{{{*/
+
+	IssmDouble  penetration;
+	bool        activate;
+	int         unstable;
+	IssmDouble  vx1;
+	IssmDouble  vy1;
+	IssmDouble  vx2;
+	IssmDouble  vy2;
+
+	/*Objects: */
+	Tria  *tria1 = NULL;
+	Tria  *tria2 = NULL;
+
+	/*enum of element? */
+	if(elements[0]->ObjectEnum()!=TriaEnum)_error_("only Tria element allowed for Riftfront load!");
+
+	/*recover elements on both side of rift: */
+	tria1=(Tria*)elements[0];
+	tria2=(Tria*)elements[1];
+
+	/*Is this constraint frozen? In which case we don't touch: */
+	if (this->frozen){
+		*punstable=0;
+		return 1;
+	}
+
+	/*Is this rift segment state specified by user input? :*/
+	if (this->state==OpenEnum || this->state==ClosedEnum){
+
+		if(this->state==OpenEnum)this->active=0;
+		if(this->state==ClosedEnum)this->active=1;
+
+		/*this segment is like frozen, no instability here: */
+		*punstable=0;
+		return 1;
+	}
+
+	/*First recover velocity: */
+	tria1->GetInputValue(&vx1,vertices[0],VxEnum);
+	tria2->GetInputValue(&vx2,vertices[1],VxEnum);
+	tria1->GetInputValue(&vy1,vertices[0],VyEnum);
+	tria2->GetInputValue(&vy2,vertices[1],VyEnum);
+
+	/*Node 1 faces node 2, compute penetration of 2 into 1 (V2-V1).N (with N normal vector, and V velocity vector: */
+	penetration=(vx2-vx1)*normal[0]+(vy2-vy1)*normal[1];
+
+	/*activation: */
+	if(penetration<0)activate=true;
+	else  activate=false;
+
+	/*Here, we try to avoid zigzaging. When a penalty activates and deactivates for more than penalty_lock times, 
+	 * we increase the fraction of melange:*/
+	if(this->counter>this->penalty_lock){
+		/*reset counter: */
+		this->counter=0;
+		/*increase melange fraction: */
+		this->fraction+=fractionincrement;
+		if (this->fraction>1)this->fraction=1.;
+		//_printf_("riftfront " << this->Id() << " fraction: " << this->fraction << "\n");
+	}
+
+	//Figure out stability of this penalty
+	if(this->active==activate){
+		unstable=0;
+	}
+	else{
+		unstable=1;
+		this->counter++;
+	}
+
+	//Set penalty flag
+	this->active=activate;
+
+	//if ((penetration>0) && (this->active==1))_printf_("Riftfront " << Id() << " wants to be released\n");
+
+	/*assign output pointer: */
+	*punstable=unstable;
+	return 1;
+}
+/*}}}*/
+void   Riftfront::FreezeConstraints(void){/*{{{*/
+
+	/*Just set frozen flag to 1: */
+	this->frozen=1;
+
+}
+/*}}}*/
+bool   Riftfront::IsFrozen(void){/*{{{*/
+
+	/*Just set frozen flag to 1: */
+	if(this->frozen)return 1;
+	else return 0;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Riftfront.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Riftfront.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Loads/Riftfront.h	(revision 27955)
@@ -0,0 +1,98 @@
+/*!\file Riftfront.h
+ * \brief: header file for riftfront object
+ */
+
+#ifndef _RIFTFRONT_H_
+#define _RIFTFRONT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Load.h"
+class Hook;
+class Parameters;
+class IoModel;
+/*}}}*/
+
+class Riftfront: public Load {
+
+	public:
+		int		id;
+
+		/*properties*/
+		int        type;
+		int        fill;
+		IssmDouble friction;
+		IssmDouble fractionincrement;
+		bool       shelf;
+
+		/*hooks: */
+		Hook* hnodes;
+		Hook* hvertices;
+		Hook* helements;
+
+		/*Corresponding fields*/
+		Node    **nodes;
+		Vertex  **vertices;
+		Element **elements;
+
+		/*computational: */
+		int         penalty_lock;
+		bool        active;
+		bool        frozen;
+		int         counter;
+		bool        prestable;
+		bool        material_converged;
+		IssmDouble  normal[2];
+		IssmDouble  length;
+		IssmDouble  fraction;
+		int         state;
+
+		Parameters *parameters;           //pointer to solution parameters
+
+		/*Riftfrontconstructors,destructors: {{{*/
+		Riftfront();
+		Riftfront(int riftfront_id,int i, IoModel* iomodel);
+		~Riftfront();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object*  copy();
+		void     DeepEcho();
+		void     Echo();
+		int      Id(); 
+		void		Marshall(MarshallHandle* marshallhandle);
+		int      ObjectEnum();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{*/
+		void    InputUpdateFromConstant(IssmDouble constant, int name);
+		void    InputUpdateFromConstant(int constant, int name){_error_("Not implemented yet!");}
+		void    InputUpdateFromConstant(bool constant, int name);
+		void    InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
+		void    InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows,int ncols, int name, int type){_error_("Not implemented yet!");}
+		void    InputUpdateFromVector(IssmDouble* vector, int name, int type);
+		void    InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){_error_("Not implemented yet!");}
+		/*}}}*/
+		/*Load virtual functions definitions: {{{*/
+		void  Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void  CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
+		void  CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
+		void  CreatePVector(Vector<IssmDouble>* pf);
+		void  GetNodesLidList(int* lidlist);
+		void  GetNodesSidList(int* sidlist);
+		int   GetNumberOfNodes(void);
+		bool  IsPenalty(void);
+		void  PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){_error_("Not implemented yet");};
+		void  PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
+		void  PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
+		void  ResetHooks();
+		void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
+		/*}}}*/
+		/*Riftfront specific routines: {{{*/
+		int            Constrain(int* punstable);
+		void           FreezeConstraints(void);
+		bool           IsFrozen(void);
+		ElementMatrix* PenaltyCreateKMatrixStressbalanceHoriz(IssmDouble kmax);
+		ElementVector* PenaltyCreatePVectorStressbalanceHoriz(IssmDouble kmax);
+		/*}}}*/
+};
+#endif  /* _RIFTFRONT_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Masscon.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Masscon.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Masscon.h	(revision 27955)
@@ -0,0 +1,116 @@
+/*!\file Masscon.h
+ * \brief: header file for Masscon object
+ */
+
+#ifndef _MASSCON_H_
+#define _MASSCON_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Definition.h"
+#include "../datastructures/datastructures.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "../classes/Params/Parameters.h"
+/*}}}*/
+
+class Masscon: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		char*       name;
+		IssmDouble* levelset;
+		int         M;
+
+		/*Masscon constructors, destructors :*/
+		Masscon(){/*{{{*/
+
+			this->definitionenum = -1;
+			this->name = NULL;
+			this->levelset=NULL;
+			this->M=0;
+
+		}
+		/*}}}*/
+		Masscon(char* in_name, int in_definitionenum, IssmDouble* levelsetin, int Min){ /*{{{*/
+
+			this->definitionenum=in_definitionenum;
+			this->name   = xNew<char>(strlen(in_name)+1);
+			xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+			this->levelset   = xNew<IssmDouble>(Min);
+			xMemCpy<IssmDouble>(this->levelset, levelsetin, Min);
+
+			this->M=Min;
+
+		}
+		/*}}}*/
+		~Masscon(){/*{{{*/
+			if(this->name)xDelete(this->name); 
+			if(this->levelset)xDelete(this->levelset);
+		}
+		/*}}}*/
+		/*Object virtual function resolutoin: */
+		Object* copy() {/*{{{*/
+			Masscon* mf = new Masscon(this->name,this->definitionenum,this->levelset,this->M);
+			return (Object*) mf;
+		}
+		/*}}}*/
+		void DeepEcho(void){/*{{{*/
+			this->Echo();
+		}
+		/*}}}*/
+		void Echo(void){/*{{{*/
+			_printf_(" Masscon: " << this->name << " " << this->definitionenum << "\n");
+			_printf_("    levelset: " << this->levelset << "\n");
+			_printf_("    M: " << this->M << "\n");
+		}
+		/*}}}*/
+		int Id(void){/*{{{*/
+			return -1;
+		}
+		/*}}}*/
+		void Marshall(MarshallHandle* marshallhandle){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
+		int ObjectEnum(void){/*{{{*/
+			return MassconEnum;
+		}
+		/*}}}*/
+		/*Definition virtual function resolutoin: */
+		int DefinitionEnum(){/*{{{*/
+
+			return this->definitionenum;
+		}
+		/*}}}*/
+		char* Name(){/*{{{*/
+
+			char* name2=xNew<char>(strlen(this->name)+1);
+			xMemCpy(name2,this->name,strlen(this->name)+1);
+
+			return name2;
+		}
+		/*}}}*/
+		 IssmDouble Response(FemModel* femmodel){/*{{{*/
+
+			 int i;
+			 IssmDouble mass_t=0.;
+			 IssmDouble all_mass_t=0.;
+
+			 for(i=0;i<femmodel->elements->Size();i++){
+				 Element* element=(Element*)femmodel->elements->GetObjectByOffset(i);
+				 mass_t+=element->Masscon(this->levelset);
+			 }
+
+			 ISSM_MPI_Allreduce ( (void*)&mass_t,(void*)&all_mass_t,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+			 mass_t=all_mass_t;
+
+			 return mass_t;
+		 }
+			/*}}}*/
+};
+
+#endif  /* _MASSCON_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Massconaxpby.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Massconaxpby.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Massconaxpby.h	(revision 27955)
@@ -0,0 +1,121 @@
+/*!\file Massconaxpby.h
+ * \brief: header file for Massconaxpby object
+ */
+
+#ifndef _MASSCON_AXPBY_H_
+#define _MASSCON_AXPBY_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Definition.h"
+#include "../datastructures/datastructures.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "../classes/Params/Parameters.h"
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,const char* output_string);
+/*}}}*/
+class Massconaxpby: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		char*       name;
+		char*       namex;
+		char*       namey;
+		IssmDouble  alpha;
+		IssmDouble  beta;
+
+		/*Massconaxpby constructors, destructors :*/
+		Massconaxpby(){/*{{{*/
+
+			this->definitionenum = -1;
+			this->name = NULL;
+			this->namex = NULL;
+			this->namey = NULL;
+			this->alpha=UNDEF;
+			this->beta=UNDEF;
+
+		}
+		/*}}}*/
+		Massconaxpby(char* in_name,int in_definitionenum, char* in_namex, char* in_namey, IssmDouble in_alpha,IssmDouble in_beta){ /*{{{*/
+
+			this->definitionenum = in_definitionenum;
+			this->name   = xNew<char>(strlen(in_name)+1);
+			xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+			this->namex   = xNew<char>(strlen(in_namex)+1);
+			xMemCpy<char>(this->namex,in_namex,strlen(in_namex)+1);
+
+			this->namey   = xNew<char>(strlen(in_namey)+1);
+			xMemCpy<char>(this->namey,in_namey,strlen(in_namey)+1);
+
+			this->alpha=in_alpha;
+			this->beta=in_beta;
+
+		}
+		/*}}}*/
+		~Massconaxpby(){/*{{{*/
+			if(this->name)xDelete(this->name); 
+			if(this->namex)xDelete(this->namex); 
+			if(this->namey)xDelete(this->namey); 
+		}
+		/*}}}*/
+		/*Object virtual function resolutoin: */
+		Object* copy() {/*{{{*/
+			Massconaxpby* mf = new Massconaxpby(this->name,this->definitionenum,this->namex,this->namey, this->alpha, this->beta);
+			return (Object*) mf;
+		}
+		/*}}}*/
+		void DeepEcho(void){/*{{{*/
+			this->Echo();
+		}
+		/*}}}*/
+		void Echo(void){/*{{{*/
+			_printf_(" Massconaxpby: " << this->name << " " << this->definitionenum << "\n");
+			_printf_("    namex: " << this->namex << "\n");
+			_printf_("    namey: " << this->namey << "\n");
+			_printf_("    alpha: " << this->alpha << "\n");
+			_printf_("    beta: " << this->beta << "\n");
+		}
+		/*}}}*/
+		int Id(void){/*{{{*/
+			return -1;
+		}
+		/*}}}*/
+		void Marshall(MarshallHandle* marshallhandle){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
+		int ObjectEnum(void){/*{{{*/
+			return MassconaxpbyEnum;
+		}
+		/*}}}*/
+		/*Definition virtual function resolutoin: */
+		int DefinitionEnum(){/*{{{*/
+
+			return this->definitionenum;
+		}
+		/*}}}*/
+		char* Name(){/*{{{*/
+
+			char* name2=xNew<char>(strlen(this->name)+1);
+			xMemCpy(name2,this->name,strlen(this->name)+1);
+
+			return name2;
+		}
+		/*}}}*/
+		 IssmDouble Response(FemModel* femmodel){/*{{{*/
+
+			 IssmDouble xresponse,yresponse;
+
+			 /*Get response from both masscons: */
+			 xresponse=OutputDefinitionsResponsex(femmodel,this->namex);
+			 yresponse=OutputDefinitionsResponsex(femmodel,this->namey);
+
+			 return this->alpha*xresponse+this->beta*yresponse;
+		 }
+			/*}}}*/
+};
+
+#endif  /* _MASSCON_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Massfluxatgate.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Massfluxatgate.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Massfluxatgate.h	(revision 27955)
@@ -0,0 +1,185 @@
+/*!\file Massfluxatgate.h
+ * \brief: header file for Massfluxatgate object
+ */
+
+#ifndef _MASSFLUXATGATE_H_
+#define _MASSFLUXATGATE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Definition.h"
+#include "../datastructures/datastructures.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+/*}}}*/
+
+template <class doubletype> 
+class Massfluxatgate: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		char*       name;
+		int         numsegments;
+		doubletype *x1;
+		doubletype *y1;
+		doubletype *x2;
+		doubletype *y2;
+		int*        elements;
+
+		/*Massfluxatgate constructors, destructors :*/
+		Massfluxatgate(){/*{{{*/
+			this->definitionenum        = -1;
+			this->name        = NULL;
+			this->numsegments = 0;
+			this->elements    = NULL;
+			this->x1				= NULL;
+			this->x2				= NULL;
+			this->y1				= NULL;
+			this->y2				= NULL;
+		}
+		/*}}}*/
+		Massfluxatgate(char* in_name, int in_definitionenum, int in_numsegments, doubletype* in_segments) {/*{{{*/
+
+			int i;
+
+			this->definitionenum=in_definitionenum;
+
+			this->name   = xNew<char>(strlen(in_name)+1);
+			xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+			this->numsegments=in_numsegments;
+
+			if(this->numsegments){
+				this->x1=xNew<doubletype>(this->numsegments);
+				this->x2=xNew<doubletype>(this->numsegments);
+				this->y1=xNew<doubletype>(this->numsegments);
+				this->y2=xNew<doubletype>(this->numsegments);
+				this->elements=xNew<int>(this->numsegments);
+
+				for(i=0;i<this->numsegments;i++){
+					this->x1[i]=in_segments[5*i+0];
+					this->y1[i]=in_segments[5*i+1];
+					this->x2[i]=in_segments[5*i+2];
+					this->y2[i]=in_segments[5*i+3];
+					this->elements[i]=reCast<int,doubletype>(in_segments[5*i+4]);
+				}
+			}
+		}
+		/*}}}*/
+		Massfluxatgate(char* in_name, int in_definitionenum, int in_numsegments, doubletype* in_x1, doubletype* in_y1, doubletype* in_x2, doubletype* in_y2,int* in_elements){/*{{{*/
+
+			this->definitionenum=in_definitionenum;
+			this->name   = xNew<char>(strlen(in_name)+1);
+			xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+			this->numsegments=in_numsegments;
+
+			if(this->numsegments){
+				this->x1=xNew<doubletype>(this->numsegments); xMemCpy<doubletype>(this->x1,in_x1,this->numsegments);
+				this->y1=xNew<doubletype>(this->numsegments); xMemCpy<doubletype>(this->y1,in_y1,this->numsegments);
+				this->x2=xNew<doubletype>(this->numsegments); xMemCpy<doubletype>(this->x2,in_x2,this->numsegments);
+				this->y2=xNew<doubletype>(this->numsegments); xMemCpy<doubletype>(this->y2,in_y2,this->numsegments);
+				this->elements=xNew<int>(this->numsegments); xMemCpy<int>(this->elements,in_elements,this->numsegments);
+
+			}
+		}
+		/*}}}*/
+		~Massfluxatgate(){/*{{{*/
+			if(this->numsegments){
+				xDelete<doubletype>(this->x1);
+				xDelete<doubletype>(this->y1);
+				xDelete<doubletype>(this->x2);
+				xDelete<doubletype>(this->y2);
+				xDelete<int>(this->elements);
+			}
+			xDelete<char>(this->name);
+		}
+		/*}}}*/
+
+		/*Object virtual function resolutoin: */
+		Object* copy() {/*{{{*/
+			return new Massfluxatgate(this->name,this->definitionenum,this->numsegments,this->x1,this->y1,this->x2,this->y2,this->elements); 
+		}
+		/*}}}*/
+		void DeepEcho(void){/*{{{*/
+			this->Echo();
+		}
+		/*}}}*/
+		void Echo(void){/*{{{*/
+			_printf_(" Massfluxatgate: " << name << " " << this->definitionenum << "\n");
+			_printf_("    numsegments: " << numsegments << "\n");
+			if(numsegments){
+				_printf_("   element: x1, y1, x2, y2:\n");
+				for(int i=0;i<numsegments;i++){
+					_printf_(elements[i] << " " << x1[i] << " " << y1[i] << " " << x2[i] << " " << y2[i] << "\n");
+				}
+			}
+		}
+		/*}}}*/
+		int Id(void){/*{{{*/
+			return -1;
+		}
+		/*}}}*/
+		int ObjectEnum(void){/*{{{*/
+			return MassfluxatgateEnum;
+		}
+		/*}}}*/
+		void Marshall(MarshallHandle* marshallhandle){/*{{{*/
+
+			int object_enum = MassfluxatgateEnum;
+			marshallhandle->call(object_enum);
+
+			marshallhandle->call(this->definitionenum);
+			marshallhandle->call(this->name);
+			marshallhandle->call(this->numsegments);
+			marshallhandle->call(this->x1,this->numsegments);
+			marshallhandle->call(this->x2,this->numsegments);
+			marshallhandle->call(this->y1,this->numsegments);
+			marshallhandle->call(this->y2,this->numsegments);
+			marshallhandle->call(this->elements,this->numsegments);
+		} 
+		/*}}}*/
+		/*Definition virtual function resolutoin: */
+		int DefinitionEnum(){/*{{{*/
+
+			return this->definitionenum;
+		}
+		/*}}}*/
+		char* Name(){/*{{{*/
+
+			char* name2=xNew<char>(strlen(this->name)+1);
+			xMemCpy(name2,this->name,strlen(this->name)+1);
+
+			return name2;
+		}
+		/*}}}*/
+		 IssmDouble Response(FemModel* femmodel){/*{{{*/
+
+			int          i,j;
+			Element     *element       = NULL;
+			IssmDouble mass_flux     = 0;
+			IssmDouble all_mass_flux = 0;
+
+			/*Go through segments, and then elements, and figure out which elements belong to a segment. 
+			 * When we find one, use the element to compute the mass flux on the segment: */
+			for(i=0;i<numsegments;i++){
+				for(j=0;j<femmodel->elements->Size();j++){
+					element=(Element*)femmodel->elements->GetObjectByOffset(j);
+					if (element->Id()==this->elements[i]){
+						/*We found the element which owns this segment, use it to compute the mass flux: */
+						mass_flux+=element->MassFlux(x1[i],y1[i],x2[i],y2[i],elements[i]);
+						break;
+					}
+				}
+			}
+
+			ISSM_MPI_Allreduce ( (void*)&mass_flux,(void*)&all_mass_flux,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+			mass_flux=all_mass_flux;
+			return mass_flux;
+		}
+			/*}}}*/
+};
+
+#endif  /* _MASSFLUXATGATE_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Material.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Material.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Material.h	(revision 27955)
@@ -0,0 +1,62 @@
+/*!\file:  Material.h
+ * \brief abstract class for Material object
+ */ 
+
+#ifndef _MATERIAL_H_
+#define _MATERIAL_H_
+
+/*Headers:*/
+/*{{{*/
+class Inputs;
+template <class doubletype> class Vector;
+#include "../../datastructures/datastructures.h"
+#include "../../toolkits/toolkits.h"
+class Element;
+class Elements;
+class Gauss;
+class Input;
+class Input;
+/*}}}*/
+
+class Material: public Object{
+
+	public: 
+		virtual ~Material(){};
+
+		/*Numerics*/
+		virtual void       Configure(Elements* elements)=0;
+		virtual Material*  copy2(Element* element)=0;
+		virtual IssmDouble GetA(Gauss* gauss)=0;
+		virtual IssmDouble GetAbar(Gauss* gauss)=0;
+		virtual IssmDouble GetB(Gauss* gauss)=0;
+		virtual IssmDouble GetBbar(Gauss* gauss)=0;
+		virtual IssmDouble GetD(Gauss* gauss)=0;
+		virtual IssmDouble GetDbar(Gauss* gauss)=0;
+		virtual IssmDouble GetN()=0;
+		virtual void       GetViscosity(IssmDouble* pviscosity,IssmDouble epseff,Gauss* gauss)=0;
+		virtual void       GetViscosityBar(IssmDouble* pviscosity,IssmDouble epseff,Gauss* gauss)=0;
+		virtual void       GetViscosityComplement(IssmDouble* pviscosity_complement, IssmDouble* pepsilon,Gauss* gauss)=0;
+		virtual void       GetViscosityDComplement(IssmDouble* pviscosity_complement, IssmDouble* pepsilon,Gauss* gauss)=0;
+		virtual void       GetViscosityDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* pepsilon,Gauss* gauss)=0;
+		virtual void       GetViscosity_B(IssmDouble* pviscosity,IssmDouble epseff,Gauss* gauss)=0;
+		virtual void       GetViscosity_D(IssmDouble* pviscosity,IssmDouble epseff,Gauss* gauss)=0;
+		virtual void       GetViscosity2dDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* pepsilon,Gauss* gauss)=0;
+		virtual bool       IsDamage()=0;
+		virtual bool       IsEnhanced()=0;
+		virtual void       ResetHooks()=0;
+
+		virtual void       ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss)=0;
+		virtual void       ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss)=0;
+		virtual void       ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss)=0;
+		virtual void       ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input)=0;
+		virtual void       ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input)=0;
+		virtual void       ViscosityMOLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input)=0;
+		virtual void       ViscosityMOLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input)=0;
+		virtual void       ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf)=0;
+		virtual void       ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input)=0;
+		virtual void       ViscosityBFS(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input,IssmDouble epseff)=0;
+		virtual void       ViscosityBHO(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,IssmDouble epseff)=0;
+		virtual void       ViscosityBSSA(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,IssmDouble epseff)=0;
+
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Materials.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Materials.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Materials.cpp	(revision 27955)
@@ -0,0 +1,59 @@
+/*
+ * \file Materials.cpp
+ * \brief: Implementation of Materials class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Materials.h"
+#include "./Material.h"
+#include "../../shared/shared.h"
+
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+Materials::Materials(){/*{{{*/
+	enum_type=MaterialsEnum;
+	return;
+}
+/*}}}*/
+Materials::~Materials(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object management*/
+void Materials::Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Material* material=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		material=xDynamicCast<Material*>(*object);
+		material->Configure(elements);
+
+	}
+
+}
+/*}}}*/
+void Materials::ResetHooks(){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Material* material=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		material=xDynamicCast<Material*>((*object));
+		material->ResetHooks();
+
+	}
+
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Materials.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Materials.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Materials.h	(revision 27955)
@@ -0,0 +1,30 @@
+#ifndef _CONTAINER_MATERIALS_H_
+#define  _CONTAINER_MATERIALS_H_
+
+/*forward declarations */
+#include "../../datastructures/datastructures.h"
+class Parameters;
+class Elements;
+class Vertices;
+class Loads;
+class Nodes;
+
+/*! \brief Declaration of Materials class.
+ *
+ * Declaration of Materials class.  Materials are vector lists (Containers) of Material objects.
+ */ 
+class Materials: public DataSet{
+
+	public:
+
+		/*constructors, destructors*/
+		Materials();
+		~Materials();
+
+		/*numerics*/
+		void  Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
+		void  ResetHooks();
+
+};
+
+#endif //ifndef _MATERIALS_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Matestar.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Matestar.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Matestar.cpp	(revision 27955)
@@ -0,0 +1,622 @@
+/*!\file Matestar.c
+ * \brief: implementation of the Matestar object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Matestar.h"
+#include "./Materials.h"
+#include "../Elements/Element.h"
+#include "../Elements/Tria.h"
+#include "../Elements/Penta.h"
+#include "../Params/Parameters.h"
+#include "../Vertex.h"
+#include "../Hook.h"
+#include "../Node.h"
+#include "../IoModel.h"
+#include "../../shared/shared.h"
+
+/*Matestar constructors and destructor*/
+Matestar::Matestar(){/*{{{*/
+	this->helement=NULL;
+	this->element=NULL;
+	return;
+}
+/*}}}*/
+Matestar::Matestar(int matestar_mid,int index, IoModel* iomodel){/*{{{*/
+
+	/*Intermediaries:*/
+	int    matestar_eid;
+
+	/*Initialize id*/
+	this->mid=matestar_mid;
+
+	/*Hooks: */
+	matestar_eid=index+1;
+	this->helement=new Hook(&matestar_eid,1);
+	this->element=NULL;
+
+	return;
+}
+/*}}}*/
+Matestar::~Matestar(){/*{{{*/
+	delete helement;
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object*   Matestar::copy() {/*{{{*/
+
+	/*Output*/
+	Matestar* matestar=NULL;
+
+	/*Initialize output*/
+	matestar=new Matestar();
+
+	/*copy fields: */
+	matestar->mid=this->mid;
+	matestar->helement=(Hook*)this->helement->copy();
+	matestar->element =(Element*)this->helement->delivers();
+
+	return matestar;
+}
+/*}}}*/
+Material* Matestar::copy2(Element* element_in) {/*{{{*/
+
+	/*Output*/
+	Matestar* matestar=NULL;
+
+	/*Initialize output*/
+	matestar=new Matestar();
+
+	/*copy fields: */
+	matestar->mid=this->mid;
+	matestar->helement=(Hook*)this->helement->copy();
+	matestar->element =element_in;
+
+	return matestar;
+}
+/*}}}*/
+void      Matestar::DeepEcho(void){/*{{{*/
+
+	_printf_("Matestar:\n");
+	_printf_("   mid: " << mid << "\n");
+	_printf_("   element:\n");
+	helement->Echo();
+}		
+/*}}}*/
+void      Matestar::Echo(void){/*{{{*/
+
+	_printf_("Matestar:\n");
+	_printf_("   mid: " << mid << "\n");
+	_printf_("   element:\n");
+	helement->Echo();
+}
+/*}}}*/
+int       Matestar::Id(void){ return mid; }/*{{{*/
+/*}}}*/
+void      Matestar::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD)helement=new Hook(); 
+
+	int object_enum = MatestarEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->mid);
+	this->helement->Marshall(marshallhandle);
+	this->element=(Element*)this->helement->delivers();
+
+}
+/*}}}*/
+int       Matestar::ObjectEnum(void){/*{{{*/
+
+	return MatestarEnum;
+
+}
+/*}}}*/
+
+/*Matestar management*/
+void  Matestar::Configure(Elements* elementsin){/*{{{*/
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	helement->configure((DataSet*)elementsin);
+	this->element  = (Element*)helement->delivers();
+}
+/*}}}*/
+IssmDouble Matestar::GetA(Gauss* gauss){/*{{{*/
+	/*
+	 * A = 1/B^n
+	 */
+
+	IssmDouble B=this->GetB(gauss);
+	IssmDouble n=this->GetN();
+
+	return pow(B,-n);
+}
+/*}}}*/
+IssmDouble Matestar::GetAbar(Gauss* gauss){/*{{{*/
+	/*
+	 * A = 1/B^n
+	 */
+
+	IssmDouble B=this->GetBbar(gauss);
+	IssmDouble n=this->GetN();
+
+	return pow(B,-n);
+}
+/*}}}*/
+IssmDouble Matestar::GetB(Gauss* gauss){/*{{{*/
+
+	/*Output*/
+	IssmDouble B;
+
+	Input* B_input = element->GetInput(MaterialsRheologyBEnum); _assert_(B_input);
+	B_input->GetInputValue(&B,gauss);
+	return B;
+}
+/*}}}*/
+IssmDouble Matestar::GetBbar(Gauss* gauss){/*{{{*/
+
+	/*Output*/
+	IssmDouble Bbar;
+
+	Input* B_input = element->GetInput(MaterialsRheologyBbarEnum); _assert_(B_input);
+	B_input->GetInputValue(&Bbar,gauss);
+	return Bbar;
+}
+/*}}}*/
+IssmDouble Matestar::GetD(Gauss* gauss){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+IssmDouble Matestar::GetDbar(Gauss* gauss){/*{{{*/
+
+	_error_("not implemented yet");
+}
+/*}}}*/
+IssmDouble Matestar::GetEc(Gauss* gauss){/*{{{*/
+
+	/*Output*/
+	IssmDouble Ec;
+
+	Input* Ec_input = element->GetInput(MaterialsRheologyEcEnum); _assert_(Ec_input);
+	Ec_input->GetInputValue(&Ec,gauss);
+	return Ec;
+}
+/*}}}*/
+IssmDouble Matestar::GetEcbar(Gauss* gauss){/*{{{*/
+
+	/*Output*/
+	IssmDouble Ecbar;
+
+	Input* Ecbar_input = element->GetInput(MaterialsRheologyEcbarEnum); _assert_(Ecbar_input);
+	Ecbar_input->GetInputValue(&Ecbar,gauss);
+	return Ecbar;
+}
+/*}}}*/
+IssmDouble Matestar::GetEs(Gauss* gauss){/*{{{*/
+
+	/*Output*/
+	IssmDouble Es;
+
+	Input* Es_input = element->GetInput(MaterialsRheologyEsEnum); _assert_(Es_input);
+	Es_input->GetInputValue(&Es,gauss);
+	return Es;
+}
+/*}}}*/
+IssmDouble Matestar::GetEsbar(Gauss* gauss){/*{{{*/
+
+	/*Output*/
+	IssmDouble Esbar;
+
+	Input* Esbar_input = element->GetInput(MaterialsRheologyEsbarEnum); _assert_(Esbar_input);
+	Esbar_input->GetInputValue(&Esbar,gauss);
+	return Esbar;
+}
+/*}}}*/
+IssmDouble Matestar::GetN(){/*{{{*/
+
+	/*Output*/
+	IssmDouble n=3.0;
+	return n;
+}
+/*}}}*/
+void  Matestar::GetViscosity(IssmDouble* pviscosity,IssmDouble eps_eff,Gauss* gauss){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+void  Matestar::GetViscosityBar(IssmDouble* pviscosity,IssmDouble eps_eff,Gauss* gauss){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+void  Matestar::GetViscosityComplement(IssmDouble* pviscosity_complement, IssmDouble* epsilon,Gauss* gauss){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+void  Matestar::GetViscosityDComplement(IssmDouble* pviscosity_complement, IssmDouble* epsilon,Gauss* gauss){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+void  Matestar::GetViscosityDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* epsilon,Gauss* gauss){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+IssmDouble Matestar::GetViscosityGeneral(IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz,IssmDouble eps_eff,bool isdepthaveraged,Gauss* gauss){/*{{{*/
+
+	/*output: */
+	IssmDouble viscosity;
+
+	/*Intermediaries*/
+	IssmDouble epsprime_norm;
+	IssmDouble lambdas;
+	IssmDouble vmag,dvmag[3];
+	IssmDouble B,Ec,Es,E,n;
+
+	/*Calculate velocity magnitude and its derivative*/
+	vmag = sqrt(vx*vx+vy*vy+vz*vz);
+	if(vmag<1e-12){
+		dvmag[0]=0;
+		dvmag[1]=0;
+		dvmag[2]=0;
+	}
+	else{
+		dvmag[0]=1./(2*sqrt(vmag))*(2*vx*dvx[0]+2*vy*dvy[0]+2*vz*dvz[0]);
+		dvmag[1]=1./(2*sqrt(vmag))*(2*vx*dvx[1]+2*vy*dvy[1]+2*vz*dvz[1]);
+		dvmag[2]=1./(2*sqrt(vmag))*(2*vx*dvx[2]+2*vy*dvy[2]+2*vz*dvz[2]);
+	}
+
+	EstarStrainrateQuantities(&epsprime_norm,vx,vy,vz,vmag,dvx,dvy,dvz,&dvmag[0]);
+	lambdas=EstarLambdaS(eps_eff,epsprime_norm);
+
+	/*Get B and enhancement*/
+	n=GetN(); _assert_(n>0.);
+	if (isdepthaveraged==0.){
+		B=GetB(gauss);   _assert_(B>0.);
+		Ec=GetEc(gauss); _assert_(Ec>=0.); Es=GetEs(gauss); _assert_(Es>=0.);
+	}
+	else{
+		B=GetBbar(gauss);   _assert_(B>0.);
+		Ec=GetEcbar(gauss); _assert_(Ec>=0.);
+		Es=GetEsbar(gauss); _assert_(Es>=0.);
+	}
+
+	/*Get total enhancement factor E(lambdas)*/
+	E = Ec + (Es-Ec)*lambdas*lambdas; _assert_(E>0.);
+
+	/*Compute viscosity*/
+	/*if no strain rate, return maximum viscosity*/
+	if(eps_eff==0.){
+		viscosity = 1.e+14/2.;
+		//viscosity = B;
+		//viscosity=2.5*pow(10.,17);
+	}
+	else{
+		viscosity = B/(2.*pow(E,1./n)*pow(eps_eff,2./n));
+	}
+
+   /*Checks in debugging mode*/
+	if(viscosity<=0) _error_("Negative viscosity");
+
+	/*Assign output pointer*/
+	return viscosity;
+}
+/*}}}*/
+IssmDouble Matestar::GetViscosity_BGeneral(IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz,IssmDouble eps_eff,bool isdepthaveraged,Gauss* gauss){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble dmudB;
+	IssmDouble epsprime_norm;
+	IssmDouble lambdas;
+	IssmDouble vmag,dvmag[3];
+	IssmDouble Ec,Es,E;
+
+	/*Calculate velocity magnitude and its derivative*/
+	vmag = sqrt(vx*vx+vy*vy+vz*vz);
+	if(vmag<1e-12){
+		dvmag[0]=0;
+		dvmag[1]=0;
+		dvmag[2]=0;
+	}
+	else{
+		dvmag[0]=1./(2*sqrt(vmag))*(2*vx*dvx[0]+2*vy*dvy[0]+2*vz*dvz[0]);
+		dvmag[1]=1./(2*sqrt(vmag))*(2*vx*dvx[1]+2*vy*dvy[1]+2*vz*dvz[1]);
+		dvmag[2]=1./(2*sqrt(vmag))*(2*vx*dvx[2]+2*vy*dvy[2]+2*vz*dvz[2]);
+	}
+
+	EstarStrainrateQuantities(&epsprime_norm,vx,vy,vz,vmag,dvx,dvy,dvz,&dvmag[0]);
+	lambdas=EstarLambdaS(eps_eff,epsprime_norm);
+
+	/*Get enhancement*/
+	if (isdepthaveraged==0.){
+		Ec=GetEc(gauss); _assert_(Ec>=0.);
+		Es=GetEs(gauss); _assert_(Es>=0.);
+	}
+	else{
+		Ec=GetEcbar(gauss); _assert_(Ec>=0.);
+		Es=GetEsbar(gauss); _assert_(Es>=0.);
+	}
+
+	/*Get total enhancement factor E(lambdas)*/
+	E = Ec + (Es-Ec)*lambdas*lambdas; _assert_(E>0.);
+
+	/*Compute dmudB*/
+	if(eps_eff==0.) dmudB = 0.;
+	else            dmudB = 1./(2.*pow(E,1./3.)*pow(eps_eff,2./3.));
+
+	/*Assign output*/
+	return dmudB;
+
+}
+/*}}}*/
+void  Matestar::GetViscosity_B(IssmDouble* pdmudB,IssmDouble eps_eff,Gauss* gauss){/*{{{*/
+	 _error_("not implemented yet");
+}
+/*}}}*/
+void  Matestar::GetViscosity_D(IssmDouble* pdmudD,IssmDouble eps_eff,Gauss* gauss){/*{{{*/
+	 _error_("not implemented yet");
+}
+/*}}}*/
+void  Matestar::GetViscosity2dDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* epsilon,Gauss* gauss){/*{{{*/
+	_error_("not implemented yet");
+}
+/*}}}*/
+bool Matestar::IsDamage(){/*{{{*/
+
+	_error_("not implemented yet");
+}
+/*}}}*/
+void  Matestar::ResetHooks(){/*{{{*/
+
+	this->element=NULL;
+
+	/*Get Element type*/
+	this->helement->reset();
+
+}
+/*}}}*/
+void  Matestar::SetCurrentConfiguration(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+}
+/*}}}*/
+void  Matestar::ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss){/*{{{*/
+	this->GetViscosityDerivativeEpsSquare(pmu_prime,epsilon,gauss);
+}/*}}}*/
+void  Matestar::ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void  Matestar::ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+
+void  Matestar::ViscosityBFS(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input,IssmDouble eps_eff){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble vx,vy,vz;
+	IssmDouble dvx[3],dvy[3],dvz[3];
+	bool isdepthaveraged=0.;
+
+	/*Get velocity derivatives in all directions*/
+	_assert_(dim>1);
+	_assert_(vx_input);
+	vx_input->GetInputValue(&vx,gauss);
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	_assert_(vy_input);
+	vy_input->GetInputValue(&vy,gauss);
+	vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+	if(dim==3){
+		_assert_(vz_input);
+		vz_input->GetInputValue(&vz,gauss);
+		vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
+	}
+	else{
+		vz = 0.;
+		dvz[0] = 0.; dvz[1] = 0.; dvz[2] = 0.;
+	}
+
+	/*Compute dmudB*/
+	*pdmudB=GetViscosity_BGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0],eps_eff,isdepthaveraged,gauss);
+}
+/*}}}*/
+void  Matestar::ViscosityBHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,IssmDouble eps_eff){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble vx,vy,vz;
+	IssmDouble dvx[3],dvy[3],dvz[3];
+	bool isdepthaveraged=0.;
+
+	/*Get velocity derivatives in all directions*/
+	_assert_(dim==2 || dim==3);
+	_assert_(vx_input);
+	vx_input->GetInputValue(&vx,gauss);
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	if(dim==3){
+		_assert_(vy_input);
+		vy_input->GetInputValue(&vy,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+	}
+	else{
+		dvx[2] = 0.;
+		vy = 0.;
+		dvy[0] = 0.; dvy[1] = 0.; dvy[2] = 0.;
+	}
+	vz = 0.;
+	dvz[0] = 0.; dvz[1] = 0.; dvz[2] = -dvx[0]-dvy[1];
+
+	/*Compute viscosity*/
+	*pdmudB=GetViscosity_BGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0],eps_eff,isdepthaveraged,gauss);
+}/*}}}*/
+void  Matestar::ViscosityBSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,IssmDouble eps_eff){/*{{{*/
+	/*Intermediaries*/
+	IssmDouble vx,vy,vz;
+	IssmDouble dvx[3],dvy[3],dvz[3];
+	bool isdepthaveraged=1.;
+
+	/*Get velocity derivatives in all directions*/
+	_assert_(dim==1 || dim==2);
+	_assert_(vx_input);
+	vx_input->GetInputValue(&vx,gauss);
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	if(dim==2){
+		_assert_(vy_input);
+		vy_input->GetInputValue(&vy,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+	}
+	else{
+		dvx[1] = 0.;
+		dvx[2] = 0.;
+		vy = 0.;
+		dvy[0] = 0.; dvy[1] = 0.; dvy[2] = 0.;
+	}
+	dvx[2] = 0.;
+	dvy[2] = 0.;
+	vz = 0.;
+	dvz[0] = 0.; dvz[1] = 0.; dvz[2] = -dvx[0]-dvy[1];
+
+	/*Compute viscosity*/
+	*pdmudB=GetViscosity_BGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0],eps_eff,isdepthaveraged,gauss);
+}/*}}}*/
+void  Matestar::ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble vx,vy,vz;
+	IssmDouble dvx[3],dvy[3],dvz[3];
+	IssmDouble epsilon3d[6]; /* epsilon=[exx,eyy,ezz,exy,exz,eyz];*/
+	IssmDouble epsilon2d[3]; /* epsilon=[exx,eyy,exy];*/
+	IssmDouble eps_eff,eps0=1.e-27;
+	bool isdepthaveraged=0.;
+
+	/*Get velocity derivatives in all directions*/
+	_assert_(dim>1);
+	_assert_(vx_input);
+	vx_input->GetInputValue(&vx,gauss);
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	_assert_(vy_input);
+	vy_input->GetInputValue(&vy,gauss);
+	vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+	if(dim==3){
+		_assert_(vz_input);
+		vz_input->GetInputValue(&vz,gauss);
+		vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
+	}
+	else{
+		vz = 0.;
+		dvz[0] = 0.; dvz[1] = 0.; dvz[2] = 0.;
+	}
+
+	if(dim==3){
+      /* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
+		element->StrainRateFS(&epsilon3d[0],xyz_list,gauss,vx_input,vy_input,vz_input);
+		eps_eff = sqrt(epsilon3d[0]*epsilon3d[0] + epsilon3d[1]*epsilon3d[1] + epsilon3d[3]*epsilon3d[3] +  epsilon3d[4]*epsilon3d[4] + epsilon3d[5]*epsilon3d[5] + epsilon3d[0]*epsilon3d[1]+eps0*eps0);
+	}
+	else{
+		/* eps_eff^2 = 1/2 ( exx^2 + eyy^2 + 2*exy^2 )*/
+		element->StrainRateSSA(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = 1./sqrt(2.)*sqrt(epsilon2d[0]*epsilon2d[0] + epsilon2d[1]*epsilon2d[1] + 2.*epsilon2d[2]*epsilon2d[2]);
+	}
+
+	/*Compute viscosity*/
+	*pviscosity=GetViscosityGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0],eps_eff,isdepthaveraged,gauss);
+}
+/*}}}*/
+void  Matestar::ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble vx,vy,vz;
+	IssmDouble dvx[3],dvy[3],dvz[3];
+	IssmDouble epsilon3d[5]; /* epsilon=[exx,eyy,exy,exz,eyz];*/
+	IssmDouble epsilon2d[5]; /* epsilon=[exx,exy];*/
+	IssmDouble eps_eff;
+	bool isdepthaveraged=0.;
+
+   if(dim==3){
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
+		element->StrainRateHO(&epsilon3d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = sqrt(epsilon3d[0]*epsilon3d[0] + epsilon3d[1]*epsilon3d[1] + epsilon3d[2]*epsilon3d[2] +  epsilon3d[3]*epsilon3d[3] + epsilon3d[4]*epsilon3d[4] + epsilon3d[0]*epsilon3d[1]);
+	}
+	else{
+		/* eps_eff^2 = 1/2 (2*exx^2 + 2*exy^2 ) (since eps_zz = - eps_xx)*/
+		element->StrainRateHO2dvertical(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = 1./sqrt(2.)*sqrt(2*epsilon2d[0]*epsilon2d[0] + 2*epsilon2d[1]*epsilon2d[1]);
+	}
+
+	/*Get velocity derivatives in all directions*/
+	_assert_(dim==2 || dim==3);
+	_assert_(vx_input);
+	vx_input->GetInputValue(&vx,gauss);
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	if(dim==3){
+		_assert_(vy_input);
+		vy_input->GetInputValue(&vy,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+	}
+	else{
+		dvx[2] = 0.;
+		vy = 0.;
+		dvy[0] = 0.; dvy[1] = 0.; dvy[2] = 0.;
+	}
+	vz = 0.;
+	dvz[0] = 0.; dvz[1] = 0.; dvz[2] = -dvx[0]-dvy[1];
+
+	/*Compute viscosity*/
+	*pviscosity=GetViscosityGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0],eps_eff,isdepthaveraged,gauss);
+}/*}}}*/
+void  Matestar::ViscosityMOLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void  Matestar::ViscosityMOLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void  Matestar::ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surface_input){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void  Matestar::ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble vx,vy,vz;
+	IssmDouble dvx[3],dvy[3],dvz[3];
+	IssmDouble epsilon2d[3];/* epsilon=[exx,eyy,exy]; */
+	IssmDouble epsilon1d;   /* epsilon=[exx];         */
+	IssmDouble eps_eff;
+	bool isdepthaveraged=1.;
+
+	/*Get velocity derivatives in all directions*/
+	_assert_(dim==1 || dim==2);
+	_assert_(vx_input);
+	vx_input->GetInputValue(&vx,gauss);
+	vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
+	if(dim==2){
+		_assert_(vy_input);
+		vy_input->GetInputValue(&vy,gauss);
+		vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
+	}
+	else{
+		dvx[1] = 0.;
+		dvx[2] = 0.;
+		vy = 0.;
+		dvy[0] = 0.; dvy[1] = 0.; dvy[2] = 0.;
+	}
+	dvx[2] = 0.;
+	dvy[2] = 0.;
+	vz = 0.;
+	dvz[0] = 0.; dvz[1] = 0.; dvz[2] = -dvx[0]-dvy[1];
+
+   if(dim==2){
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exx*eyy*/
+		element->StrainRateSSA(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = sqrt(epsilon2d[0]*epsilon2d[0] + epsilon2d[1]*epsilon2d[1] + epsilon2d[2]*epsilon2d[2] + epsilon2d[0]*epsilon2d[1]);
+	}
+	else{
+		/* eps_eff^2 = exx^2*/
+		element->StrainRateSSA1d(&epsilon1d,xyz_list,gauss,vx_input);
+		eps_eff = fabs(epsilon1d);
+	}
+
+	/*Compute viscosity*/
+	*pviscosity=GetViscosityGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0],eps_eff,isdepthaveraged,gauss);
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Matestar.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Matestar.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Matestar.h	(revision 27955)
@@ -0,0 +1,90 @@
+/*!\file Matestar.h
+ * \brief: header file for matice object
+ */
+
+#ifndef MATESTAR_H_
+#define MATESTAR_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Material.h"
+#include "../Hook.h"
+class IoModel;
+class Elements;
+class Element;
+class Loads;
+class Nodes;
+class Vertices;
+class Materials;
+class Parameters;
+class Gauss;
+class Input;
+/*}}}*/
+
+class Matestar: public Material{
+
+	private: 
+		int      mid;
+		Hook    *helement;
+		Element *element;
+
+	public:
+		/*Matestar constructors, destructors: {{{*/
+		Matestar();
+		Matestar(int mid,int i, IoModel* iomodel);
+		~Matestar();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void  Marshall(MarshallHandle* marshallhandle);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Material virtual functions resolution: {{{*/
+		void   Configure(Elements* elements);
+		Material*  copy2(Element* element);
+		void       GetViscosity(IssmDouble* pviscosity, IssmDouble eps_eff,Gauss* gauss);
+		void       GetViscosityBar(IssmDouble* pviscosity, IssmDouble eps_eff,Gauss* gauss);
+		void       GetViscosityComplement(IssmDouble* pviscosity_complement, IssmDouble* pepsilon,Gauss* gauss);
+		void       GetViscosityDComplement(IssmDouble*, IssmDouble*,Gauss* gauss);
+		void       GetViscosityDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* pepsilon,Gauss* gauss);
+		void       GetViscosity_B(IssmDouble* pviscosity, IssmDouble eps_eff,Gauss* gauss);
+		void       GetViscosity_D(IssmDouble* pviscosity, IssmDouble eps_eff,Gauss* gauss);
+		void       GetViscosity2dDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* pepsilon,Gauss* gauss);
+		IssmDouble GetA(Gauss* gauss);
+		IssmDouble GetAbar(Gauss* gauss);
+		IssmDouble GetB(Gauss* gauss);
+		IssmDouble GetBbar(Gauss* gauss);
+		IssmDouble GetD(Gauss* gauss);
+		IssmDouble GetDbar(Gauss* gauss);
+		IssmDouble GetEc(Gauss* gauss);
+		IssmDouble GetEcbar(Gauss* gauss);
+		IssmDouble GetEs(Gauss* gauss);
+		IssmDouble GetEsbar(Gauss* gauss);
+		IssmDouble GetN();
+		bool       IsDamage();
+		bool       IsEnhanced(){_error_("not supported");};
+		void       ResetHooks();
+		void       SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+
+		void       ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss);
+		void       ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss);
+		void       ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss);
+
+		void       ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
+		void       ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void       ViscosityMOLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input);
+		void       ViscosityMOLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input);
+		void       ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf);
+		void       ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void       ViscosityBFS(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input,IssmDouble eps_eff);
+		void       ViscosityBHO(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,IssmDouble eps_eff);
+		void       ViscosityBSSA(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,IssmDouble eps_eff);
+		/*}}}*/
+		IssmDouble GetViscosityGeneral(IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz,IssmDouble eps_eff,bool isdepthaveraged,Gauss* gauss);
+		IssmDouble GetViscosity_BGeneral(IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz,IssmDouble eps_eff,bool isdepthaveraged,Gauss* gauss);
+};
+
+#endif  /* _MATESTAR_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Matice.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Matice.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Matice.cpp	(revision 27955)
@@ -0,0 +1,948 @@
+/*!\file Matice.c
+ * \brief: implementation of the Matice object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Matice.h"
+#include "./Materials.h"
+#include "../Elements/Element.h"
+#include "../Elements/Tria.h"
+#include "../Elements/Penta.h"
+#include "../Params/Parameters.h"
+#include "../Vertex.h"
+#include "../Hook.h"
+#include "../Node.h"
+#include "../IoModel.h"
+#include "../../shared/shared.h"
+
+/*Matice constructors and destructor*/
+Matice::Matice(){/*{{{*/
+	this->helement=NULL;
+	this->element=NULL;
+	this->isdamaged=false;
+	this->isenhanced=false;
+	return;
+}
+/*}}}*/
+Matice::Matice(int matice_mid,int index, IoModel* iomodel){/*{{{*/
+
+	 /*Get material type and initialize object*/
+   int materialtype;
+   iomodel->FindConstant(&materialtype,"md.materials.type");
+	this->Init(matice_mid,index,materialtype);
+
+}
+/*}}}*/
+Matice::Matice(int matice_mid,int index,int materialtype){/*{{{*/
+
+	this->Init(matice_mid,index,materialtype);
+	return;
+} /*}}}*/
+Matice::~Matice(){/*{{{*/
+	delete helement;
+	return;
+}
+/*}}}*/
+void Matice::Init(int matice_mid,int index,int materialtype){/*{{{*/
+
+	/*Initialize id*/
+	this->mid=matice_mid;
+
+	/*Hooks: */
+	int matice_eid=index+1;
+	this->helement=new Hook(&matice_eid,1);
+	this->element=NULL;
+
+	/*Material specific properties*/
+	switch(materialtype){
+		case MatdamageiceEnum:
+			this->isdamaged = true;
+			this->isenhanced = false;
+			break;
+		case MaticeEnum:
+			this->isdamaged = false;
+			this->isenhanced = false;
+			break;
+		case MatenhancediceEnum:
+			this->isdamaged = false;
+			this->isenhanced = true;
+			break;
+		default:
+			_error_("Material type not recognized");
+	}
+
+	return;
+} /*}}}*/
+
+/*Object virtual functions definitions:*/
+Object*   Matice::copy() {/*{{{*/
+
+	/*Output*/
+	Matice* matice=NULL;
+
+	/*Initialize output*/
+	matice=new Matice();
+
+	/*copy fields: */
+	matice->mid=this->mid;
+	matice->helement=(Hook*)this->helement->copy();
+	matice->element =(Element*)this->helement->delivers();
+	matice->isdamaged = this->isdamaged;
+	matice->isenhanced = this->isenhanced;
+
+	return matice;
+}
+/*}}}*/
+Material* Matice::copy2(Element* element_in) {/*{{{*/
+
+	/*Output*/
+	Matice* matice=NULL;
+
+	/*Initialize output*/
+	matice=new Matice();
+
+	/*copy fields: */
+	matice->mid=this->mid;
+	matice->helement=(Hook*)this->helement->copy();
+	matice->element =element_in;
+	matice->isdamaged = this->isdamaged;
+	matice->isenhanced = this->isenhanced;
+
+	return matice;
+}
+/*}}}*/
+void      Matice::DeepEcho(void){/*{{{*/
+
+	_printf_("Matice:\n");
+	_printf_("   mid: " << mid << "\n");
+	_printf_("   isdamaged: " << isdamaged << "\n");
+	_printf_("   isenhanced: " << isenhanced << "\n");
+
+	/*helement and element DeepEcho were commented to avoid recursion.*/
+	/*Example: element->DeepEcho calls matice->DeepEcho which calls element->DeepEcho etc*/
+	_printf_("   helement:\n");
+	_printf_("		note: helement not printed to avoid recursion.\n");
+	//if(helement) helement->DeepEcho();
+	//else _printf_("   helement = NULL\n");
+
+	_printf_("   element:\n");
+	_printf_("     note: element not printed to avoid recursion.\n");
+	//if(element) element->DeepEcho();
+	//else _printf_("   element = NULL\n");
+}		
+/*}}}*/
+void      Matice::Echo(void){/*{{{*/
+
+	_printf_("Matice:\n");
+	_printf_("   mid: " << mid << "\n");
+	_printf_("   isdamaged: " << isdamaged << "\n");
+	_printf_("   isenhanced: " << isenhanced << "\n");
+
+	/*helement and element Echo were commented to avoid recursion.*/
+	/*Example: element->Echo calls matice->Echo which calls element->Echo etc*/
+	_printf_("   helement:\n");
+	_printf_("     note: helement not printed to avoid recursion.\n");
+	//if(helement) helement->Echo();
+	//else _printf_("   helement = NULL\n");
+
+	_printf_("   element:\n");
+	_printf_("     note: element not printed to avoid recursion.\n");
+	//if(element) element->Echo();
+	//else _printf_("   element = NULL\n");
+}
+/*}}}*/
+int       Matice::Id(void){ return mid; }/*{{{*/
+/*}}}*/
+void      Matice::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD)helement=new Hook(); 
+
+	int object_enum = MaticeEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->mid);
+	marshallhandle->call(this->isdamaged);
+	marshallhandle->call(this->isenhanced);
+	this->helement->Marshall(marshallhandle);
+	this->element=(Element*)this->helement->delivers();
+}/*}}}*/
+int       Matice::ObjectEnum(void){/*{{{*/
+
+	return MaticeEnum;
+
+}
+/*}}}*/
+
+/*Matice management*/
+void  Matice::Configure(Elements* elementsin){/*{{{*/
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	helement->configure((DataSet*)elementsin);
+	this->element  = (Element*)helement->delivers();
+}
+/*}}}*/
+IssmDouble Matice::GetA(Gauss* gauss){/*{{{*/
+	/*
+	 * A = 1/B^n
+	 */
+
+	IssmDouble B=this->GetB(gauss);
+	IssmDouble n=this->GetN();
+
+	return pow(B,-n);
+}
+/*}}}*/
+IssmDouble Matice::GetAbar(Gauss* gauss){/*{{{*/
+	/*
+	 * A = 1/B^n
+	 */
+
+	IssmDouble B=this->GetBbar(gauss);
+	IssmDouble n=this->GetN();
+
+	return pow(B,-n);
+}
+/*}}}*/
+IssmDouble Matice::GetB(Gauss* gauss){/*{{{*/
+
+	_assert_(gauss); 
+
+	/*Output*/
+	IssmDouble B;
+	Input* B_input = element->GetInput(MaterialsRheologyBEnum); _assert_(B_input);
+	B_input->GetInputValue(&B,gauss);
+	return B;
+}
+/*}}}*/
+IssmDouble Matice::GetBbar(Gauss* gauss){/*{{{*/
+
+	_assert_(gauss); 
+
+	/*Output*/
+	IssmDouble Bbar;
+
+	Input* B_input = element->GetInput(MaterialsRheologyBbarEnum); _assert_(B_input);
+	B_input->GetInputValue(&Bbar,gauss);
+	return Bbar;
+}
+/*}}}*/
+IssmDouble Matice::GetD(Gauss* gauss){/*{{{*/
+
+	_assert_(this->isdamaged);
+	/*Output*/
+	IssmDouble D;
+	if(this->isdamaged){
+		Input* D_input = element->GetInput(DamageDEnum); _assert_(D_input);
+		D_input->GetInputValue(&D,gauss);
+	}
+	else{
+		_error_("Cannot get DamageD for non damaged ice");
+	}
+	return D;
+}
+/*}}}*/
+IssmDouble Matice::GetDbar(Gauss* gauss){/*{{{*/
+
+	_assert_(this->isdamaged);
+	/*Output*/
+	IssmDouble Dbar;
+	if(this->isdamaged){
+		Input* D_input = element->GetInput(DamageDbarEnum); _assert_(D_input);
+		D_input->GetInputValue(&Dbar,gauss);
+	}
+	else{
+		_error_("Cannot get DamageD for non damaged ice");
+	}
+	return Dbar;
+}
+/*}}}*/
+IssmDouble Matice::GetE(Gauss* gauss){/*{{{*/
+
+	_assert_(this->isenhanced);
+	/*Output*/
+	IssmDouble E;
+	Input* E_input = element->GetInput(MaterialsRheologyEEnum); _assert_(E_input);
+	E_input->GetInputValue(&E,gauss);
+	return E;
+}
+/*}}}*/
+IssmDouble Matice::GetEbar(Gauss* gauss){/*{{{*/
+
+	_assert_(this->isenhanced);
+	/*Output*/
+	IssmDouble Ebar;
+	Input* E_input = element->GetInput(MaterialsRheologyEbarEnum); _assert_(E_input);
+	E_input->GetInputValue(&Ebar,gauss);
+	return Ebar;
+}
+/*}}}*/
+IssmDouble Matice::GetN(){/*{{{*/
+
+	/*Output*/
+	IssmDouble n;
+	Input* n_input = element->GetInput(MaterialsRheologyNEnum); _assert_(n_input);
+	n_input->GetInputAverage(&n);
+	return n;
+}
+/*}}}*/
+bool       Matice::IsDamage(){/*{{{*/
+
+	return this->isdamaged;
+}
+/*}}}*/
+bool       Matice::IsEnhanced(){/*{{{*/
+
+	return this->isenhanced;
+}
+/*}}}*/
+void  Matice::GetViscosity(IssmDouble* pviscosity,IssmDouble eps_eff,Gauss* gauss){/*{{{*/
+	/*From a string tensor and a material object, return viscosity, using Glen's flow law.
+								(1-D) B
+	  viscosity= -------------------------
+						  2 E^[1/n] eps_eff ^[(n-1)/n]
+
+	  where viscosity is the viscosity, B the flow law parameter , eps_eff is the effective strain rate,
+	  n the flow law exponent, and E is the enhancement factor.
+
+	  If eps_eff = 0 , it means this is the first time SystemMatrices is being run, and we 
+	  return 10^14, initial viscosity.
+	  */
+
+	/*output: */
+	IssmDouble viscosity;
+
+	/*Intermediary: */
+	IssmDouble B,D=0.,E=1.,n;
+
+	/*Get B and n*/
+	B=GetB(gauss); _assert_(B>0.);
+	n=GetN(); _assert_(n>0.);
+	if(this->isdamaged){
+		D=GetD(gauss);
+		_assert_(D>=0. && D<1.);
+	}
+	if(this->isenhanced){
+		E=GetE(gauss);
+		_assert_(E>0.);
+	}
+
+	if (n==1.){
+		/*Linear Viscous behavior (Newtonian fluid) viscosity=B/2E: */
+		viscosity=(1.-D)*B/(2.*E);
+	}
+	else{
+
+		/*if no strain rate, return maximum viscosity*/
+		if(eps_eff==0.){
+			viscosity = 1.e+14/2.;
+			//viscosity = B;
+			//viscosity=2.5*pow(10.,17);
+		}
+
+		else{
+			viscosity=(1.-D)*B/(2.*pow(E,1./n)*pow(eps_eff,(n-1.)/n));
+		}
+	}
+
+	/*Checks in debugging mode*/
+	if(viscosity<=0) _error_("Negative viscosity");
+
+	/*Return: */
+	*pviscosity=viscosity;
+}
+/*}}}*/
+void  Matice::GetViscosityBar(IssmDouble* pviscosity,IssmDouble eps_eff,Gauss* gauss){/*{{{*/
+	/*From a string tensor and a material object, return viscosity, using Glen's flow law.
+								(1-D) B
+	  viscosity= -------------------------
+						  2 E^[1/n] eps_eff ^[(n-1)/n]
+
+	  where B the flow law parameter, eps_eff is the effective strain rate, n the flow law exponent,
+	  and E is the enhancement factor.
+
+	  If eps_eff = 0 , it means this is the first time SystemMatrices is being run, and we 
+	  return 10^14, initial viscosity.
+	  */
+
+	/*output: */
+	IssmDouble viscosity;
+
+	/*Intermediary: */
+	IssmDouble B,D=0.,E=1.,n;
+
+	/*Get B and n*/
+	B=GetBbar(gauss); _assert_(B>0.);
+	n=GetN();    _assert_(n>0.);
+	if(this->isdamaged){
+		D=GetDbar(gauss);
+		_assert_(D>=0. && D<1.);
+	}
+	if(this->isenhanced){
+		E=GetEbar(gauss);
+		_assert_(E>0.);
+	}
+
+	if (n==1.){
+		/*Linear Viscous behavior (Newtonian fluid) viscosity=B/2E: */
+		viscosity=(1.-D)*B/(2.*E);
+	}
+	else{
+		/*if strain rate is 0., it is probably our initial guess, use an average
+		 * viscosity instead of a large one*/
+		if(eps_eff==0.) viscosity = 1.e+14/2.;
+		else{
+			/*if no strain rate, return maximum viscosity*/
+			//if(eps_eff<1.e-6) eps_eff = 1e-6;
+			viscosity=(1.-D)*B/(2.*pow(E,1./n)*pow(eps_eff,(n-1.)/n));
+		}
+	}
+
+	/*Checks in debugging mode*/
+	if(viscosity<=0) _error_("Negative viscosity");
+
+	/*Return: */
+	*pviscosity=viscosity;
+}
+/*}}}*/
+void  Matice::GetViscosityComplement(IssmDouble* pviscosity_complement, IssmDouble* epsilon,Gauss* gauss){/*{{{*/
+	/*Return viscosity accounting for steady state power law creep [Thomas and SSA, 1982]: 
+	 *
+	 *  										                (1-D)
+	 * viscosity= -------------------------------------------------------------------
+	 *  				  2[ exx^2+eyy^2+exx*eyy+exy^2+exz^2+eyz^2 ]^[(n-1)/2n]
+	 *
+	 * If epsilon is NULL, it means this is the first time Gradjb is being run, and we 
+	 * return mu20, initial viscosity.
+	 */
+
+	/*output: */
+	IssmDouble viscosity_complement;
+
+	/*input strain rate: */
+	IssmDouble exx,eyy,exy;
+
+	/*Intermediary value A and exponent e: */
+	IssmDouble A,e;
+	IssmDouble D=0.,n;
+
+	/*Get D and n*/
+	if(this->isdamaged){
+		D=GetDbar(gauss); /* GetD()? */
+		_assert_(D>=0. && D<1.);
+	}
+	n=GetN();
+
+	if(epsilon){
+		exx=*(epsilon+0);
+		eyy=*(epsilon+1);
+		exy=*(epsilon+2);
+
+		/*Build viscosity: mu2=(1-D)/(2*A^e) */
+		A=pow(exx,2)+pow(eyy,2)+pow(exy,2)+exx*eyy;
+		if(A==0){
+			/*Maximum viscosity_complement for 0 shear areas: */
+			viscosity_complement=2.25*pow(10.,17);
+		}
+		else{
+			e=(n-1)/(2*n);
+
+			viscosity_complement=(1-D)/(2*pow(A,e));
+		}
+	}
+	else{
+		viscosity_complement=4.5*pow(10.,17);
+	}
+
+	/*Checks in debugging mode*/
+	_assert_(D>=0 && D<1);
+	_assert_(n>0);
+	_assert_(viscosity_complement>0);
+
+	/*Return: */
+	*pviscosity_complement=viscosity_complement;
+}
+/*}}}*/
+void  Matice::GetViscosityDComplement(IssmDouble* pviscosity_complement, IssmDouble* epsilon,Gauss* gauss){/*{{{*/
+	/*Return viscosity derivative for control method d(mu)/dD: 
+	 *
+	 *  										               B 
+	 * dviscosity= - -------------------------------------------------------------------
+	 *  				  2[ exx^2+eyy^2+exx*eyy+exy^2+exz^2+eyz^2 ]^[(n-1)/2n]
+	 *
+	 * If epsilon is NULL, it means this is the first time Gradjb is being run, and we 
+	 * return mu20, initial viscosity.
+	 */
+
+	/*output: */
+	IssmDouble viscosity_complement;
+
+	/*input strain rate: */
+	IssmDouble exx,eyy,exy;
+
+	/*Intermediary value A and exponent e: */
+	IssmDouble A,e;
+	IssmDouble B,n;
+
+	/*Get B and n*/
+	B=GetBbar(gauss);
+	n=GetN();
+
+	if(epsilon){
+		exx=*(epsilon+0);
+		eyy=*(epsilon+1);
+		exy=*(epsilon+2);
+
+		/*Build viscosity: mu2=B/(2*A^e) */
+		A=pow(exx,2)+pow(eyy,2)+pow(exy,2)+exx*eyy;
+		if(A==0){
+			/*Maximum viscosity_complement for 0 shear areas: */
+			viscosity_complement=- 2.25*pow(10.,17);
+		}
+		else{
+			e=(n-1)/(2*n);
+
+			viscosity_complement=- B/(2*pow(A,e));
+		}
+	}
+	else{
+		viscosity_complement=- 4.5*pow(10.,17);
+	}
+
+	/*Checks in debugging mode*/
+	_assert_(B>0);
+	_assert_(n>0);
+	_assert_(viscosity_complement<0);
+
+	/*Return: */
+	*pviscosity_complement=viscosity_complement;
+}
+/*}}}*/
+void  Matice::GetViscosityDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* epsilon,Gauss* gauss){/*{{{*/
+
+	/*output: */
+	IssmDouble mu_prime;
+	IssmDouble mu,n,eff2;
+
+	/*input strain rate: */
+	IssmDouble exx,eyy,exy,exz,eyz;
+
+	if((epsilon[0]==0) && (epsilon[1]==0) && (epsilon[2]==0) && 
+				(epsilon[3]==0) && (epsilon[4]==0)){
+		mu_prime=0.5*pow(10.,14);
+	}
+	else{
+
+		/*Retrieve strain rate components: */
+		exx=epsilon[0];
+		eyy=epsilon[1];
+		exy=epsilon[2];
+		exz=epsilon[3];
+		eyz=epsilon[4];
+		eff2 = exx*exx + eyy*eyy + exx*eyy + exy*exy + exz*exz + eyz*eyz;
+
+		GetViscosity(&mu,sqrt(eff2),gauss);
+		n=GetN();
+		mu_prime=(1.-n)/(2.*n) * mu/eff2;
+	}
+
+	/*Assign output pointers:*/
+	*pmu_prime=mu_prime;
+}
+/*}}}*/
+void  Matice::GetViscosity_B(IssmDouble* pdmudB,IssmDouble eps_eff,Gauss* gauss){/*{{{*/
+
+	/*output: */
+	IssmDouble dmudB;
+
+	/*Intermediary: */
+	IssmDouble D=0.,E=1.,n;
+
+	/*Get B and n*/
+	n=GetN(); _assert_(n>0.);
+	if(this->isdamaged){
+		D=GetD(gauss);
+		_assert_(D>=0. && D<1.);
+	}
+	if(this->isenhanced){
+		E=GetE(gauss);
+		_assert_(E>0.);
+	}
+
+	if(n==1.){
+		/*Linear Viscous behavior (Newtonian fluid) dmudB=B/2E: */
+		dmudB=(1.-D)/(2.*E);
+	}
+	else{
+		if(eps_eff==0.) dmudB = 0.;
+		else            dmudB = (1.-D)/(2.*pow(E,1./n)*pow(eps_eff,(n-1.)/n));
+	}
+
+	/*Return: */
+	*pdmudB=dmudB;
+}
+/*}}}*/
+void  Matice::GetViscosity_D(IssmDouble* pdmudD,IssmDouble eps_eff,Gauss* gauss){/*{{{*/
+
+	/*output: */
+	IssmDouble dmudD;
+
+	/*Intermediary: */
+	IssmDouble n,B,E=1.;
+
+	/*Get B and n*/
+	n=GetN(); _assert_(n>0.);
+	B=GetBbar(gauss);
+	_assert_(this->isdamaged);
+	if(this->isenhanced){
+		E=GetE(gauss);
+		_assert_(E>0.);
+	}
+
+	if(n==1.){
+		/*Linear Viscous behavior (Newtonian fluid) dmudB=B/2E: */
+		dmudD=-B/(2.*E);
+	}
+	else{
+		if(eps_eff==0.) dmudD = 0.;
+		else            dmudD = -B/(2.*pow(E,1./n)*pow(eps_eff,(n-1.)/n));
+	}
+
+	/*Return: */
+	*pdmudD=dmudD;
+}
+/*}}}*/
+void  Matice::GetViscosity2dDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* epsilon,Gauss* gauss){/*{{{*/
+
+	/*output: */
+	IssmDouble mu_prime;
+	IssmDouble mu,n,eff2;
+
+	/*input strain rate: */
+	IssmDouble exx,eyy,exy;
+
+	if((epsilon[0]==0) && (epsilon[1]==0) && (epsilon[2]==0)){
+		mu_prime=0.5*pow(10.,14);
+	}
+	else{
+		/*Retrive strain rate components: */
+		exx=epsilon[0];
+		eyy=epsilon[1];
+		exy=epsilon[2];
+		eff2 = exx*exx + eyy*eyy + exx*eyy + exy*exy ;
+
+		GetViscosityBar(&mu,sqrt(eff2),gauss);
+		n=GetN();
+		mu_prime=(1.-n)/(2.*n)*mu/eff2;
+	}
+
+	/*Assign output pointers:*/
+	*pmu_prime=mu_prime;
+}
+/*}}}*/
+void  Matice::ResetHooks(){/*{{{*/
+
+	this->element=NULL;
+
+	/*Get Element type*/
+	this->helement->reset();
+
+}
+/*}}}*/
+void  Matice::SetCurrentConfiguration(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+}
+/*}}}*/
+void  Matice::ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss){/*{{{*/
+	this->GetViscosityDerivativeEpsSquare(pmu_prime,epsilon,gauss);
+}/*}}}*/
+void  Matice::ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss){/*{{{*/
+	this->GetViscosityDerivativeEpsSquare(pmu_prime,epsilon,gauss);
+}/*}}}*/
+void  Matice::ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss){/*{{{*/
+	this->GetViscosity2dDerivativeEpsSquare(pmu_prime,epsilon,gauss);
+}/*}}}*/
+
+void  Matice::ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/
+	/*The effective strain rate is defined in Paterson 3d Ed p 91 eq 9,
+	 * and Cuffey p 303 eq 8.18:
+	 *
+	 *  2 eps_eff^2 = eps_xx^2 + eps_yy^2 + eps_zz^2 + 2(eps_xy^2 + eps_xz^2 + eps_yz^2)
+	 *
+	 *  or
+	 *
+	 *  eps_eff = 1/sqrt(2) sqrt( \sum_ij eps_ij^2 )
+	 *
+	 *          = 1/sqrt(2) ||eps||_F
+	 *
+	 *  where ||.||_F is the Frobenius norm */
+
+	/*Intermediaries*/
+	IssmDouble viscosity;
+	IssmDouble epsilon3d[6]; /* epsilon=[exx,eyy,ezz,exy,exz,eyz];*/
+	IssmDouble epsilon2d[3]; /* epsilon=[exx,eyy,exy];            */
+	IssmDouble eps_eff;
+	IssmDouble eps0=1.e-27;
+
+	if(dim==3){
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
+		element->StrainRateFS(&epsilon3d[0],xyz_list,gauss,vx_input,vy_input,vz_input);
+		eps_eff = sqrt(epsilon3d[0]*epsilon3d[0] + epsilon3d[1]*epsilon3d[1] + epsilon3d[3]*epsilon3d[3] +  epsilon3d[4]*epsilon3d[4] + epsilon3d[5]*epsilon3d[5] + epsilon3d[0]*epsilon3d[1]+eps0*eps0);
+	}
+	else{
+		/* eps_eff^2 = 1/2 ( exx^2 + eyy^2 + 2*exy^2 )*/
+		element->StrainRateSSA(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = 1./sqrt(2.)*sqrt(epsilon2d[0]*epsilon2d[0] + epsilon2d[1]*epsilon2d[1] + 2.*epsilon2d[2]*epsilon2d[2]);
+	}
+
+	/*Get viscosity*/
+	this->GetViscosity(&viscosity,eps_eff,gauss);
+
+	/*Assign output pointer*/
+	*pviscosity=viscosity;
+}
+/*}}}*/
+void  Matice::ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble viscosity;
+	IssmDouble epsilon3d[5];/* epsilon=[exx,eyy,exy,exz,eyz];*/
+	IssmDouble epsilon2d[2];/* epsilon=[exx,exy];            */
+	IssmDouble eps_eff;
+
+	if(dim==3){
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
+		element->StrainRateHO(&epsilon3d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = sqrt(epsilon3d[0]*epsilon3d[0] + epsilon3d[1]*epsilon3d[1] + epsilon3d[2]*epsilon3d[2] +  epsilon3d[3]*epsilon3d[3] + epsilon3d[4]*epsilon3d[4] + epsilon3d[0]*epsilon3d[1]);
+	}
+	else{
+		/* eps_eff^2 = 1/2 (2*exx^2 + 2*exy^2 ) (since eps_zz = - eps_xx)*/
+		element->StrainRateHO2dvertical(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = 1./sqrt(2.)*sqrt(2*epsilon2d[0]*epsilon2d[0] + 2*epsilon2d[1]*epsilon2d[1]);
+	}
+
+	/*Get viscosity*/
+	this->GetViscosity(&viscosity,eps_eff,gauss);
+	_assert_(!xIsNan<IssmDouble>(viscosity));
+
+	/*Assign output pointer*/
+	*pviscosity=viscosity;
+}/*}}}*/
+void  Matice::ViscosityMOLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble epsilon[5];	/* epsilon=[exx,eyy,exy,exz,eyz]; */
+	IssmDouble epsilon_eff;
+	IssmDouble zeta,H,n;
+	IssmDouble f[4],F[4];
+	IssmDouble mubar[4];
+	IssmDouble mu;
+	int order=5; 
+
+	for(int i=0;i<4;++i) mubar[i]=0;
+
+	GaussSeg* gauss_seg=new GaussSeg(order);
+	//IssmDouble eps_eff_averaged=0;
+	while(gauss_seg->next()){
+
+		/*Compute zeta for gauss_seg point (0=surface, 1=base)*/
+		zeta=0.5*(gauss_seg->coord1+1);	
+
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy (for a given zeta)*/
+		element->StrainRateMOLHO(&epsilon[0],xyz_list,gauss,
+						vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
+		epsilon_eff=sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[2]*epsilon[2] 
+						  +  epsilon[3]*epsilon[3] + epsilon[4]*epsilon[4] + epsilon[0]*epsilon[1]);
+
+		/*Get viscosity at zeta */
+//?? need to use Bar for the current inversion
+//    this->GetViscosity(&mu,epsilon_eff,gauss);
+		this->GetViscosityBar(&mu, epsilon_eff,gauss);
+		thickness_input->GetInputValue(&H, gauss);
+      n_input->GetInputValue(&n,gauss);
+
+		/*Compute fi and Fi at zeta*/
+		f[0]=1;
+		f[1]=(1-pow(zeta,n+1));
+		f[2]=(1-pow(zeta,n+1))*(1-pow(zeta,n+1));
+		f[3]=((n+1)/H)*pow(zeta,n) * ((n+1)/H)*pow(zeta,n);
+
+		F[0]=H;
+		F[1]=H*(n+1)/(n+2);
+		F[2]=2*H*(n+1)*(n+1)/( (2*n+3)*(n+2) );
+		F[3]=(n+1)*(n+1)/( H*(2*n+1) );
+
+		/*Sum the viscosity*/
+		mubar[0]+=(H/(2*F[0]))*gauss_seg->weight*mu*f[0];
+		mubar[1]+=(H/(2*F[1]))*gauss_seg->weight*mu*f[1];
+		mubar[2]+=(H/(2*F[2]))*gauss_seg->weight*mu*f[2];
+		mubar[3]+=(H/(2*F[3]))*gauss_seg->weight*mu*f[3];
+
+	}//while
+
+	/*Assign output pointer*/
+	pviscosity[0]=mubar[0];
+	pviscosity[1]=mubar[1];
+	pviscosity[2]=mubar[2];
+	pviscosity[3]=mubar[3];
+
+	/*Clean up*/
+	delete gauss_seg;
+}/*}}}*/
+void  Matice::ViscosityMOLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){/*{{{*/
+
+	/* To compute the additional 5 terms in the viscosity appear in the adjoint equation*/
+	/*Intermediaries*/
+	IssmDouble epsilon[5];	/* epsilon=[exx,eyy,exy,exz,eyz]; */
+	IssmDouble epsilon_eff;
+	IssmDouble zeta,H,n;
+	IssmDouble f[9],F[9];
+	IssmDouble mubar[9];
+	IssmDouble mu;
+	int order=10; 
+
+	for(int i=0;i<9;++i) mubar[i]=0;
+
+	GaussSeg* gauss_seg=new GaussSeg(order);
+	//IssmDouble eps_eff_averaged=0;
+	while(gauss_seg->next()){
+		
+		/*Compute zeta for gauss_seg point (0=surface, 1=base)*/
+		zeta=0.5*(gauss_seg->coord1+1);	
+
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy (for a given zeta)*/
+		element->StrainRateMOLHO(&epsilon[0],xyz_list,gauss,
+						vxbase_input,vybase_input,vxshear_input,vyshear_input,thickness_input,n_input,zeta);
+		epsilon_eff=sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[2]*epsilon[2] 
+						  +  epsilon[3]*epsilon[3] + epsilon[4]*epsilon[4] + epsilon[0]*epsilon[1]);
+
+		this->GetViscosity(&mu,epsilon_eff,gauss);
+		/*the adjoint viscosity with zeta dependent term*/
+		mu = mu /epsilon_eff/epsilon_eff;
+
+		thickness_input->GetInputValue(&H, gauss);
+      n_input->GetInputValue(&n,gauss);
+
+		/*Compute fi and Fi at zeta*/
+		f[0]=1;
+		f[1]=(1-pow(zeta,n+1));
+		f[2]=(1-pow(zeta,n+1))*(1-pow(zeta,n+1));
+		f[3]=pow(zeta,2*n); // NOTE: this is different from the forward formulation
+		f[4]=(1-pow(zeta,n+1))*(1-pow(zeta,n+1))*(1-pow(zeta,n+1));
+		f[5]=(1-pow(zeta,n+1))*(1-pow(zeta,n+1))*(1-pow(zeta,n+1))*(1-pow(zeta,n+1));
+		f[6]=(1-pow(zeta,n+1))*pow(zeta,2*n);
+		f[7]=(1-pow(zeta,n+1))*(1-pow(zeta,n+1))*pow(zeta,2*n);
+		f[8]=pow(zeta,4*n);
+
+	
+		F[0]=H;
+		F[1]=H*(n+1)/(n+2);
+		F[2]=2*H*(n+1)*(n+1)/( (2*n+3)*(n+2) );
+		F[3]=H/(2*n+1);
+		F[4]=6*H*(n+1)*(n+1)*(n+1)/( (n+2)*(2*n+3)*(3*n+4) );
+		F[5]=24*H*(n+1)*(n+1)*(n+1)*(n+1)/( (n+2)*(2*n+3)*(3*n+4)*(4*n+5) );
+		F[6]=H*(n+1)/( (2*n+1)*(3*n+2) );
+		F[7]=2*H*(n+1)*(n+1)/( (2*n+1)*(3*n+2)*(4*n+3) );
+		F[8]=H/(4*n+1);
+
+		/*Sum the viscosity*/
+		for(int i=0;i<9;i++) {
+			mubar[i]+=(H/2)*gauss_seg->weight*mu*f[i];
+		}
+	}//while
+
+	/*Assign output pointer*/
+	for(int i=0;i<9;i++) pviscosity[i]=mubar[i];
+
+	/*Clean up*/
+	delete gauss_seg;
+}/*}}}*/
+void  Matice::ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surface_input){/*{{{*/
+	/*Compute the L1L2 viscosity
+	 *
+	 *      1
+	 * mu = - A^-1 (sigma'_e)^(1-n)
+	 *      2
+	 *
+	 * sigma'_e^2 = |sigma'_//|^2 + |sigma'_perp|^2 (see Perego 2012 eq. 17,18)
+	 *
+	 * L1L2 assumptions:
+	 *
+	 * (1) |eps_b|_// = A (|sigma'_//|^2 + |sigma'_perp|^2)^((n-1)/2) |sigma'_//|
+	 * (2) |sigma'_perp|^2 = |rho g (s-z) grad(s)|^2
+	 *
+	 * Assuming that n = 3, we have a polynom of degree 3 to solve (the only unkown is X=|sigma'_//|)
+	 *
+	 * A X^3 + A |rho g (s-z) grad(s)|^2 X - |eps_b|_// = 0     */
+
+	IssmDouble z,s,viscosity,p,q,delta;
+	IssmDouble tau_perp,tau_par,eps_b,A;
+	IssmDouble epsilon[5];   /*exx eyy exy exz eyz*/
+	IssmDouble slope[3];
+
+	/*Check that both inputs have been found*/
+	if (!vx_input || !vy_input || !surface_input) _error_("Input missing");
+
+	/*Get tau_perp*/
+	surface_input->GetInputValue(&s,gauss);
+	surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+	z=this->element->GetZcoord(xyz_list,gauss);
+	tau_perp = element->FindParam(MaterialsRhoIceEnum) * element->FindParam(ConstantsGEnum) * fabs(s-z)*sqrt(slope[0]*slope[0]+slope[1]*slope[1]);
+
+	/* Get eps_b*/
+	element->StrainRateHO(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
+	eps_b = sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[0]*epsilon[1] + epsilon[2]*epsilon[2]);
+	if(eps_b==0.){
+		*pviscosity = 2.5e+17;
+		return;
+	}
+
+	/*Get A*/
+	_assert_(this->GetN()==3.0);
+	A=this->GetA(gauss);
+
+	/*Solve for tau_perp (http://fr.wikipedia.org/wiki/Méthode_de_Cardan)*/
+	p     = tau_perp *tau_perp;
+	q     = - eps_b/A;
+	delta = q *q + p*p*p*4./27.;
+	_assert_(delta>0);
+	tau_par = pow(0.5*(-q+sqrt(delta)),1./3.) - pow(0.5*(q+sqrt(delta)),1./3.);
+
+	/*Viscosity*/
+	viscosity = 1./(2.*A*(tau_par*tau_par + tau_perp*tau_perp));
+	_assert_(!xIsNan(viscosity));
+	_assert_(viscosity > 0.);
+
+	/*Assign output pointer*/
+	*pviscosity = viscosity;
+}/*}}}*/
+void  Matice::ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble viscosity;
+	IssmDouble epsilon2d[3];/* epsilon=[exx,eyy,exy];    */
+	IssmDouble epsilon1d;   /* epsilon=[exx];    */
+	IssmDouble eps_eff;
+
+	if(dim==2){
+		/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exx*eyy*/
+		element->StrainRateSSA(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
+		eps_eff = sqrt(epsilon2d[0]*epsilon2d[0] + epsilon2d[1]*epsilon2d[1] + epsilon2d[2]*epsilon2d[2] + epsilon2d[0]*epsilon2d[1]);
+	}
+	else{
+		/* eps_eff^2 = exx^2*/
+		element->StrainRateSSA1d(&epsilon1d,xyz_list,gauss,vx_input);
+		eps_eff = fabs(epsilon1d);
+	}
+
+	/*Get viscosity*/
+	this->GetViscosityBar(&viscosity,eps_eff,gauss);
+
+	/*Assign output pointer*/
+	*pviscosity=viscosity;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Matice.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Matice.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Matice.h	(revision 27955)
@@ -0,0 +1,90 @@
+/*!\file Matice.h
+ * \brief: header file for matice object
+ */
+
+#ifndef MATICE_H_
+#define MATICE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Material.h"
+#include "../Hook.h"
+class IoModel;
+class Elements;
+class Element;
+class Loads;
+class Nodes;
+class Vertices;
+class Materials;
+class Parameters;
+class Gauss;
+class Input;
+/*}}}*/
+
+class Matice: public Material{
+
+	private: 
+		int      mid;
+		bool     isdamaged;
+		bool     isenhanced;
+		Hook    *helement;
+		Element *element;
+
+	public:
+		/*Matice constructors, destructors: {{{*/
+		Matice();
+		Matice(int mid,int i, IoModel* iomodel);
+		Matice(int mid,int i, int materialtype);
+		~Matice();
+		void Init(int mid,int i, int materialtype);
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void  Marshall(MarshallHandle* marshallhandle);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Material virtual functions resolution: {{{*/
+		void   Configure(Elements* elements);
+		Material*  copy2(Element* element);
+		void       GetViscosity(IssmDouble* pviscosity, IssmDouble eps_eff,Gauss* gauss);
+		void       GetViscosityBar(IssmDouble* pviscosity, IssmDouble eps_eff,Gauss* gauss);
+		void       GetViscosityComplement(IssmDouble* pviscosity_complement, IssmDouble* pepsilon,Gauss* gauss);
+		void       GetViscosityDComplement(IssmDouble*, IssmDouble*,Gauss* gauss);
+		void       GetViscosityDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* pepsilon,Gauss* gauss);
+		void       GetViscosity_B(IssmDouble* pviscosity, IssmDouble eps_eff,Gauss* gauss);
+		void       GetViscosity_D(IssmDouble* pviscosity, IssmDouble eps_eff,Gauss* gauss);
+		void       GetViscosity2dDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* pepsilon,Gauss* gauss);
+		IssmDouble GetA(Gauss* gauss);
+		IssmDouble GetAbar(Gauss* gauss);
+		IssmDouble GetB(Gauss* gauss);
+		IssmDouble GetBbar(Gauss* gauss);
+		IssmDouble GetD(Gauss* gauss);
+		IssmDouble GetDbar(Gauss* gauss);
+		IssmDouble GetE(Gauss* gauss);
+		IssmDouble GetEbar(Gauss* gauss);
+		IssmDouble GetN();
+		bool       IsDamage();
+		bool       IsEnhanced();
+		void       ResetHooks();
+		void       SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+
+		void       ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss);
+		void       ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss);
+		void       ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss);
+
+		void       ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
+		void       ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void       ViscosityMOLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input);
+		void       ViscosityMOLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input);
+		void       ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf);
+		void       ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
+		void       ViscosityBFS(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input,IssmDouble eps_eff){_error_("not supported");};
+		void       ViscosityBHO(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,IssmDouble eps_eff){_error_("not supported");};
+		void       ViscosityBSSA(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,IssmDouble eps_eff){_error_("not supported");};
+		/*}}}*/
+};
+
+#endif  /* _MATICE_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Matlitho.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Matlitho.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Matlitho.cpp	(revision 27955)
@@ -0,0 +1,209 @@
+/*!\file Matlitho.c
+ * \brief: implementation of the Matlitho object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+
+/*Matlitho constructors and destructor*/
+Matlitho::Matlitho(){/*{{{*/
+	this->numlayers         = 0;
+	this->radius            = NULL;
+	this->viscosity         = NULL;
+	this->lame_lambda       = NULL;
+	this->lame_mu           = NULL;
+	this->burgers_viscosity = NULL;
+	this->burgers_mu        = NULL;
+	this->ebm_alpha         = NULL;
+	this->ebm_delta         = NULL;
+	this->ebm_taul          = NULL;
+	this->ebm_tauh          = NULL;
+	this->density           = NULL;
+	this->rheologymodel     = NULL;
+	this->issolid           = NULL;
+	return;
+}
+/*}}}*/
+Matlitho::Matlitho(int matlitho_mid, IoModel* iomodel, bool* issolid_in, int* rheo_in){/*{{{*/
+
+	this->mid=matlitho_mid;
+	iomodel->FindConstant(&this->numlayers,"md.materials.numlayers");
+
+	this->radius=xNew<IssmDouble>(this->numlayers+1);
+	xMemCpy<IssmDouble>(this->radius, iomodel->Data("md.materials.radius"),this->numlayers+1);
+
+	this->viscosity=xNew<IssmDouble>(this->numlayers);
+	xMemCpy<IssmDouble>(this->viscosity, iomodel->Data("md.materials.viscosity"),this->numlayers);
+
+	this->lame_lambda=xNew<IssmDouble>(this->numlayers);
+	xMemCpy<IssmDouble>(this->lame_lambda, iomodel->Data("md.materials.lame_lambda"),this->numlayers);
+
+	this->lame_mu=xNew<IssmDouble>(this->numlayers);
+	xMemCpy<IssmDouble>(this->lame_mu, iomodel->Data("md.materials.lame_mu"),this->numlayers);
+
+	this->burgers_viscosity=xNew<IssmDouble>(this->numlayers);
+	xMemCpy<IssmDouble>(this->burgers_viscosity, iomodel->Data("md.materials.burgers_viscosity"),this->numlayers);
+
+	this->burgers_mu=xNew<IssmDouble>(this->numlayers);
+	xMemCpy<IssmDouble>(this->burgers_mu, iomodel->Data("md.materials.burgers_mu"),this->numlayers);
+
+	this->ebm_alpha=xNew<IssmDouble>(this->numlayers);
+	xMemCpy<IssmDouble>(this->ebm_alpha, iomodel->Data("md.materials.ebm_alpha"),this->numlayers);
+
+	this->ebm_delta=xNew<IssmDouble>(this->numlayers);
+	xMemCpy<IssmDouble>(this->ebm_delta, iomodel->Data("md.materials.ebm_delta"),this->numlayers);
+
+	this->ebm_taul=xNew<IssmDouble>(this->numlayers);
+	xMemCpy<IssmDouble>(this->ebm_taul, iomodel->Data("md.materials.ebm_taul"),this->numlayers);
+
+	this->ebm_tauh=xNew<IssmDouble>(this->numlayers);
+	xMemCpy<IssmDouble>(this->ebm_tauh, iomodel->Data("md.materials.ebm_tauh"),this->numlayers);
+
+	this->density=xNew<IssmDouble>(this->numlayers);
+	xMemCpy<IssmDouble>(this->density, iomodel->Data("md.materials.density"),this->numlayers);
+
+	this->rheologymodel=xNew<int>(this->numlayers);
+	xMemCpy<int>(this->rheologymodel, rheo_in, this->numlayers);
+
+	this->issolid=xNew<bool>(this->numlayers);
+	xMemCpy<bool>(this->issolid, issolid_in, this->numlayers);
+}
+/*}}}*/
+Matlitho::~Matlitho(){/*{{{*/
+
+	xDelete<IssmDouble>(radius);
+	xDelete<IssmDouble>(viscosity);
+	xDelete<IssmDouble>(lame_lambda);
+	xDelete<IssmDouble>(lame_mu);
+	xDelete<IssmDouble>(burgers_viscosity);
+	xDelete<IssmDouble>(burgers_mu);
+	xDelete<IssmDouble>(ebm_alpha);
+	xDelete<IssmDouble>(ebm_delta);
+	xDelete<IssmDouble>(ebm_taul);
+	xDelete<IssmDouble>(ebm_tauh);
+	xDelete<IssmDouble>(density);
+	xDelete<int>(rheologymodel);
+	xDelete<bool>(issolid);
+
+	return;
+}
+/*}}}*/
+void Matlitho::SetMid(int matlitho_mid){/*{{{*/
+	this->mid=matlitho_mid;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Matlitho::copy() {/*{{{*/
+
+	/*Output*/
+	Matlitho* matlitho;
+
+	/*Initialize output*/
+	matlitho=new Matlitho(*this);
+
+	/*copy fields: */
+	matlitho->mid=this->mid;
+	matlitho->numlayers=this->numlayers;
+	if(matlitho->numlayers){
+		matlitho->radius=xNew<IssmDouble>(this->numlayers+1); xMemCpy<IssmDouble>(matlitho->radius, this->radius,this->numlayers+1);
+		matlitho->viscosity=xNew<IssmDouble>(this->numlayers); xMemCpy<IssmDouble>(matlitho->viscosity, this->viscosity,this->numlayers);
+		matlitho->lame_lambda=xNew<IssmDouble>(this->numlayers); xMemCpy<IssmDouble>(matlitho->lame_lambda, this->lame_lambda,this->numlayers);
+		matlitho->lame_mu=xNew<IssmDouble>(this->numlayers); xMemCpy<IssmDouble>(matlitho->lame_mu, this->lame_mu,this->numlayers);
+		matlitho->burgers_viscosity=xNew<IssmDouble>(this->numlayers); xMemCpy<IssmDouble>(matlitho->burgers_viscosity, this->burgers_viscosity,this->numlayers);
+		matlitho->burgers_mu=xNew<IssmDouble>(this->numlayers); xMemCpy<IssmDouble>(matlitho->burgers_mu, this->burgers_mu,this->numlayers);
+		matlitho->ebm_alpha=xNew<IssmDouble>(this->numlayers); xMemCpy<IssmDouble>(matlitho->ebm_alpha, this->ebm_alpha,this->numlayers);
+		matlitho->ebm_delta=xNew<IssmDouble>(this->numlayers); xMemCpy<IssmDouble>(matlitho->ebm_delta, this->ebm_delta,this->numlayers);
+		matlitho->ebm_taul=xNew<IssmDouble>(this->numlayers); xMemCpy<IssmDouble>(matlitho->ebm_taul, this->ebm_taul,this->numlayers);
+		matlitho->ebm_tauh=xNew<IssmDouble>(this->numlayers); xMemCpy<IssmDouble>(matlitho->ebm_tauh, this->ebm_tauh,this->numlayers);
+		matlitho->density=xNew<IssmDouble>(this->numlayers); xMemCpy<IssmDouble>(matlitho->density, this->density,this->numlayers);
+		matlitho->rheologymodel=xNew<int>(this->numlayers); xMemCpy<int>(matlitho->rheologymodel, this->rheologymodel,this->numlayers);
+		matlitho->issolid=xNew<bool>(this->numlayers); xMemCpy<bool>(matlitho->issolid, this->issolid,this->numlayers);
+	}
+
+	return matlitho;
+}
+/*}}}*/
+void Matlitho::DeepEcho(void){/*{{{*/
+
+	this->Echo();
+}		
+/*}}}*/
+void Matlitho::Echo(void){/*{{{*/
+
+	_printf_("Matlitho:\n");
+	_printf_("   mid: " << mid << "\n");
+	_printf_("   numlayers: " << numlayers << "\n");
+	_printf_("layer radius viscosity lame_lambda lame_mu burgers_viscosity burgers_mu ebm_alpha ebm_delta ebm_taul ebm_tauh density rheologymodel issolid\n");
+	for (int i=0;i<numlayers;i++){
+		_printf_(i << " " << radius[i] << " " << viscosity[i] << " " << lame_lambda[i] << " " << lame_mu[i] << " " << burgers_viscosity[i] << " " << burgers_mu[i] << " " << ebm_alpha[i] << " " << ebm_delta[i] << " " << ebm_taul[i] << " " << ebm_tauh[i] << " " << density[i] << " " << rheologymodel[i] << " " << issolid[i]);
+	}
+	return;
+}
+/*}}}*/
+int  Matlitho::Id(void){ return mid; }/*{{{*/
+/*}}}*/
+void Matlitho::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = MatlithoEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->numlayers);
+	if(numlayers) { 
+		marshallhandle->call(this->radius,numlayers+1);
+		marshallhandle->call(this->viscosity,numlayers);
+		marshallhandle->call(this->lame_lambda,numlayers);
+		marshallhandle->call(this->lame_mu,numlayers);
+		marshallhandle->call(this->burgers_viscosity,numlayers);
+		marshallhandle->call(this->burgers_mu,numlayers);
+		marshallhandle->call(this->ebm_alpha,numlayers);
+		marshallhandle->call(this->ebm_delta,numlayers);
+		marshallhandle->call(this->ebm_taul,numlayers);
+		marshallhandle->call(this->ebm_tauh,numlayers);
+		marshallhandle->call(this->density,numlayers);
+		marshallhandle->call(this->rheologymodel,numlayers);
+		marshallhandle->call(this->issolid,numlayers);
+	}
+	else{
+		radius            = NULL;
+		viscosity         = NULL;
+		lame_lambda       = NULL;
+		lame_mu           = NULL;
+		burgers_viscosity = NULL;
+		burgers_mu        = NULL;
+		ebm_alpha         = NULL;
+		ebm_delta         = NULL;
+		ebm_taul          = NULL;
+		ebm_tauh          = NULL;
+		density           = NULL;
+		rheologymodel     = NULL;
+		issolid           = NULL;
+	}
+
+}
+/*}}}*/
+int  Matlitho::ObjectEnum(void){/*{{{*/
+
+	return MatlithoEnum;
+
+}
+/*}}}*/
+
+/*Matlitho management: */
+void       Matlitho::Configure(Elements* elementsin){/*{{{*/
+	/*don't do anything, we don't have a hook to an element! As there is only 
+	 * one Matlitho object!*/
+}
+/*}}}*/
+void       Matlitho::ResetHooks(){/*{{{*/
+	/*don't do anything, we don't have a hook to an element! As there is only 
+	 * one Matlitho object!*/
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Matlitho.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Matlitho.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Materials/Matlitho.h	(revision 27955)
@@ -0,0 +1,86 @@
+/*!\file Matlitho.h
+ * \brief: header file for matlitho object
+ */
+
+#ifndef _MATLITHO_H_
+#define _MATLITHO_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Material.h"
+class IoModel;
+/*}}}*/
+
+class Matlitho: public Material{
+
+	public: 
+		int	      mid;
+		int          numlayers;
+		IssmDouble*  radius;
+		IssmDouble*  viscosity;
+		IssmDouble*  lame_lambda;
+		IssmDouble*  lame_mu;
+		IssmDouble*  burgers_viscosity;
+		IssmDouble*  burgers_mu;
+		IssmDouble*  ebm_alpha;
+		IssmDouble*  ebm_delta;
+		IssmDouble*  ebm_taul;
+		IssmDouble*  ebm_tauh;
+		IssmDouble*  density;
+		int*         rheologymodel;
+		bool*        issolid;
+
+		Matlitho();
+		Matlitho(int matlitho_id, IoModel* iomodel, bool* issolid_in, int* rheo_in);
+		~Matlitho();
+		void SetMid(int matlitho_mid);
+
+		/*Object virtual functions definitions:{{{ */
+		Object *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+		/*}}}*/
+		/*Material virtual functions resolution: {{{*/
+		Material*  copy2(Element* element){_error_("not implemented");};
+		void       Configure(Elements* elements);
+		void       GetViscosity(IssmDouble* pviscosity,IssmDouble eps_eff,Gauss* gauss){_error_("not supported");};
+		void       GetViscosityBar(IssmDouble* pviscosity,IssmDouble eps_eff,Gauss* gauss){_error_("not supported");};
+		void       GetViscosityComplement(IssmDouble* pviscosity_complement, IssmDouble* pepsilon,Gauss* gauss){_error_("not supported");};
+		void       GetViscosityDComplement(IssmDouble* pviscosity_complement, IssmDouble* pepsilon,Gauss* gauss){_error_("not supported");};
+		void       GetViscosityDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* pepsilon,Gauss* gauss){_error_("not supported");};
+		void       GetViscosity_B(IssmDouble* pviscosity,IssmDouble eps_eff,Gauss* gauss){_error_("not supported");};
+		void       GetViscosity_D(IssmDouble* pviscosity,IssmDouble eps_eff,Gauss* gauss){_error_("not supported");};
+		void       GetViscosity2dDerivativeEpsSquare(IssmDouble* pmu_prime, IssmDouble* pepsilon,Gauss* gauss){_error_("not supported");};
+		IssmDouble GetA(Gauss* gauss){_error_("not supported");};
+		IssmDouble GetAbar(Gauss* gauss){_error_("not supported");};
+		IssmDouble GetB(Gauss* gauss){_error_("not supported");};
+		IssmDouble GetBbar(Gauss* gauss){_error_("not supported");};
+		IssmDouble GetD(Gauss* gauss){_error_("not supported");};
+		IssmDouble GetDbar(Gauss* gauss){_error_("not supported");};
+		IssmDouble GetN(){_error_("not supported");};
+		bool       IsDamage(){_error_("not supported");};
+		bool       IsEnhanced(){_error_("not supported");};
+		void       ResetHooks();
+
+		void       ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss){_error_("not supported");};
+		void       ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss){_error_("not supported");};
+		void       ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon,Gauss* gauss){_error_("not supported");};
+
+		void       ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not supported");};
+		void       ViscosityHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not supported");};
+		void       ViscosityMOLHO(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){_error_("not supported");};
+		void       ViscosityMOLHOAdjoint(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input){_error_("not supported");};
+		void       ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf){_error_("not supported");};
+		void       ViscositySSA(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){_error_("not supported");};
+		void       ViscosityBFS(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input,IssmDouble epseff){_error_("not supported");};
+		void       ViscosityBHO(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,IssmDouble epseff){_error_("not supported");};
+		void       ViscosityBSSA(IssmDouble* pmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,IssmDouble epseff){_error_("not supported");};
+
+		/*}}}*/
+
+};
+
+#endif  /* _MATLITHO_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Misfit.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Misfit.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Misfit.cpp	(revision 27955)
@@ -0,0 +1,250 @@
+/*!\file Misfit.cpp
+ * \brief: Misfit object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./classes.h"
+#include "./ExternalResults/ExternalResult.h"
+#include "./ExternalResults/Results.h"
+#include "../datastructures/datastructures.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "../modules/SurfaceAreax/SurfaceAreax.h"
+#include "../classes/Params/Parameters.h"
+#include "../classes/gauss/Gauss.h"
+/*}}}*/
+
+/*Misfit constructors, destructors :*/
+Misfit::Misfit(){/*{{{*/
+
+	this->definitionenum = -1;
+	this->name = NULL;
+	this->model_enum = UNDEF;
+	this->observation_enum = UNDEF;
+	this->weights_enum = UNDEF;
+	this->timeinterpolation=NULL;
+	this->local=1;
+	this->misfit=0;
+	this->lock=0;
+
+}
+/*}}}*/
+Misfit::Misfit(char* in_name, int in_definitionenum, int in_model_enum, int in_observation_enum, char* in_timeinterpolation, int in_local, int in_weights_enum){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+
+	this->name		= xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->timeinterpolation = xNew<char>(strlen(in_timeinterpolation)+1);
+	xMemCpy<char>(this->timeinterpolation,in_timeinterpolation,strlen(in_timeinterpolation)+1);
+
+	this->model_enum=in_model_enum;
+	this->observation_enum=in_observation_enum;
+	this->weights_enum=in_weights_enum;
+	this->local=in_local;
+
+	this->misfit=0;
+	this->lock=0;
+}
+/*}}}*/
+Misfit::~Misfit(){/*{{{*/
+	if(this->name)xDelete(this->name);
+	if(this->timeinterpolation)xDelete(this->timeinterpolation);
+	this->misfit=0;
+	this->lock=0;
+}
+/*}}}*/
+/*Object virtual function resolutoin: */
+Object* Misfit::copy() {/*{{{*/
+	Misfit* mf = new Misfit(this->name,this->definitionenum, this->model_enum,this->observation_enum,this->timeinterpolation,this->local,this->weights_enum);
+	mf->misfit=this->misfit;
+	mf->lock=this->lock;
+	return (Object*) mf;
+}
+/*}}}*/
+void Misfit::DeepEcho(void){/*{{{*/
+	this->Echo();
+}
+/*}}}*/
+void Misfit::Echo(void){/*{{{*/
+	_printf_(" Misfit: " << name << " " << this->definitionenum << "\n");
+	_printf_("    model_enum: " << model_enum << " " << EnumToStringx(model_enum) << "\n");
+	_printf_("    observation_enum: " << observation_enum << " " << EnumToStringx(observation_enum) << "\n");
+	_printf_("    weights_enum: " << weights_enum << " " << EnumToStringx(weights_enum) << "\n");
+	_printf_("    timeinterpolation: " << timeinterpolation << "\n");
+	_printf_("    local: " << local << "\n");
+}
+/*}}}*/
+int Misfit::Id(void){/*{{{*/
+	return -1;
+}
+/*}}}*/
+void Misfit::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+	_error_("not implemented yet!");
+}
+/*}}}*/
+int Misfit::ObjectEnum(void){/*{{{*/
+	return MisfitEnum;
+}
+/*}}}*/
+/*Definition virtual function resolutoin: */
+int Misfit::DefinitionEnum(){/*{{{*/
+	return this->definitionenum;
+}
+/*}}}*/
+char* Misfit::Name(){/*{{{*/
+	char* name2=xNew<char>(strlen(this->name)+1);
+	xMemCpy(name2,this->name,strlen(this->name)+1);
+
+	return name2;
+}
+/*}}}*/
+IssmDouble Misfit::Response(FemModel* femmodel){/*{{{*/
+
+	 /*diverse: */
+	 IssmDouble time,starttime,finaltime;
+	 IssmDouble dt;
+
+	 /*recover time parameters: */
+	 femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum);
+	 femmodel->parameters->FindParam(&finaltime,TimesteppingFinalTimeEnum);
+	 femmodel->parameters->FindParam(&time,TimeEnum);
+	 femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+
+	 if (this->local==1){ /*area integration using elements: {{{*/
+
+		 IssmDouble misfit_t=0.;
+		 IssmDouble all_misfit_t=0.;
+		 IssmDouble area_t=0.;
+		 IssmDouble all_area_t;
+
+		 /*If we are locked, return time average: */
+		 if(this->lock)return misfit/(time-starttime);
+
+		 for(Object* & object : femmodel->elements->objects){
+			 Element* element=xDynamicCast<Element*>(object);
+			 misfit_t+=element->Misfit(model_enum,observation_enum,weights_enum);
+			 area_t+=element->MisfitArea(weights_enum);
+		 }
+
+		 ISSM_MPI_Allreduce ( (void*)&misfit_t,(void*)&all_misfit_t,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		 ISSM_MPI_Allreduce ( (void*)&area_t,(void*)&all_area_t,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		 area_t=all_area_t;
+		 misfit_t=all_misfit_t;
+
+		 /*Divide by surface area if not nill!: */
+		 if (area_t!=0) misfit_t=misfit_t/area_t;
+
+		 /*Add this time's contribution to curent misfit: */
+		 misfit+=dt*misfit_t;
+
+		 /*Do we lock? i.e. are we at final_time? :*/
+		 if(time==finaltime)this->lock=1;
+
+		 /*What we return is the value of misfit / time if transient*/
+		 if(time!=0.) return misfit/(time-starttime);
+		 return misfit;
+	 } /*}}}*/
+	 else if (this->local==2){ /*vertex by vertex computation: {{{*/
+
+		 IssmDouble* model = NULL;
+		 IssmDouble* observation= NULL;
+		 IssmDouble* weights= NULL;
+		 int msize,osize,wsize;
+
+		 /*Are we transient?:*/
+		 if (time==0){
+			 IssmDouble misfit_t=0.;
+
+			 /*get global vectors: */
+			 GetVectorFromInputsx(&model,&msize,femmodel,model_enum);
+			 GetVectorFromInputsx(&observation,&osize,femmodel,observation_enum);_assert_(msize==osize);
+			 GetVectorFromInputsx(&weights,&wsize,femmodel,weights_enum); _assert_(wsize==msize);
+
+			 int count=0;
+			 for (int i=0;i<msize;i++){
+				 misfit_t += pow(model[i]-observation[i],2)*weights[i];
+				 if (weights[i]!=0)count++;
+			 }
+			 misfit=sqrt(misfit_t/count);
+
+			 /*Free resources:*/
+			 xDelete<IssmDouble>(model);
+			 xDelete<IssmDouble>(observation);
+			 xDelete<IssmDouble>(weights);
+
+			 /*return value: */
+			 return misfit;
+		 }
+		 else{
+
+			 IssmDouble misfit_t=0.;
+			 IssmDouble all_misfit_t=0.;
+
+			 /*If we are locked, return time average: */
+			 if(this->lock)return misfit/(time-starttime);
+
+			 /*get global vectors: */
+			 GetVectorFromInputsx(&model,&msize,femmodel,model_enum);
+			 GetVectorFromInputsx(&observation,&osize,femmodel,observation_enum);_assert_(msize==osize);
+			 GetVectorFromInputsx(&weights,&wsize,femmodel,weights_enum); _assert_(wsize==msize);
+
+			 int count=0;
+			 for (int i=0;i<msize;i++){
+				 misfit_t += pow(model[i]-observation[i],2)*weights[i];
+				 if (weights[i]!=0)count++;
+			 }
+			 misfit=sqrt(misfit_t/count);
+
+			 /*Add this time's contribution to curent misfit: */
+			 misfit=sqrt(misfit_t)/count;
+			 misfit+=dt*misfit_t;
+
+			 /*Do we lock? i.e. are we at final_time? :*/
+			 if(time==finaltime)this->lock=1;
+
+			 /*Free resources:*/
+			 xDelete<IssmDouble>(model);
+			 xDelete<IssmDouble>(observation);
+			 xDelete<IssmDouble>(weights);
+
+			 /*What we return is the value of misfit / time: */
+			 return misfit/(time-starttime);
+		 }
+
+	 } /*}}}*/
+	 else{ /*global computation: {{{ */
+
+		 IssmDouble model, observation;
+
+		 /*If we are locked, return time average: */
+		 if(this->lock) return misfit/(time-starttime);
+
+		 /*First, the global  model response: */
+		 model=OutputDefinitionsResponsex(femmodel,this->model_enum);
+		 /*Now, the observation is buried inside the elements, go fish it in the first element (cludgy, needs fixing): */
+		 Element* element = (Element*)femmodel->elements->GetObjectByOffset(0); _assert_(element);
+		 Input*  input   = element->GetInput(observation_enum); _assert_(input);
+		 input->GetInputAverage(&observation);
+
+		 /*Add this time's contribution to curent misfit: */
+		 misfit+=dt*(model-observation);
+
+		 /*Do we lock? i.e. are we at final_time? :*/
+		 if(time==finaltime)this->lock=1;
+
+		 /*What we return is the value of misfit / time: */
+		 return misfit/(time-starttime);
+	 } /*}}}*/
+
+ }
+	/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Misfit.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Misfit.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Misfit.h	(revision 27955)
@@ -0,0 +1,48 @@
+/*!\file Misfit.h
+ * \brief: header file for Misfit object
+ */
+
+#ifndef _MISFIT_H_
+#define _MISFIT_H_
+
+/*Headers:*/
+#include "./Definition.h"
+#include "./FemModel.h"
+
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum);
+void  GetVectorFromInputsx( IssmDouble** pvector, int* pvector_size, FemModel* femmodel,int name);
+
+class Misfit: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		int         local;     
+		int         model_enum;
+		char*       name;
+		int         observation_enum;
+		char*       timeinterpolation;
+		int         weights_enum;
+
+		int         lock; // if lock is on, we just return the value stored in "misfit".  this is used so we don't compute misfit past the final_time
+		IssmDouble  misfit; //value carried over in time.
+
+		/*Misfit constructors, destructors :*/
+		Misfit();
+		Misfit(char* in_name, int in_definitionenum, int in_model_enum, int in_observation_enum, char* in_timeinterpolation, int in_local, int in_weights_enum);
+		~Misfit();
+
+		/*Object virtual function resolutoin: */
+		Object* copy();
+		void DeepEcho(void);
+		void Echo(void);
+		int Id(void);
+		void Marshall(MarshallHandle* marshallhandle);
+		int ObjectEnum(void);
+
+		/*Definition virtual function resolutoin: */
+		int DefinitionEnum();
+		char* Name();
+		IssmDouble Response(FemModel* femmodel);
+};
+#endif  /* _MISFIT_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Nodalvalue.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Nodalvalue.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Nodalvalue.cpp	(revision 27955)
@@ -0,0 +1,109 @@
+/*!\file Nodalvalue.h
+ * \brief: header file for Nodalvalue object
+ */
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Headers:*/
+/*{{{*/
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "../modules/SurfaceAreax/SurfaceAreax.h"
+#include "../classes/Params/Parameters.h"
+#include "../classes/gauss/Gauss.h"
+#include "./classes.h"
+/*}}}*/
+
+		/*Nodalvalue constructors, destructors :*/
+Nodalvalue::Nodalvalue(){/*{{{*/
+
+	this->definitionenum = -1;
+	this->name = NULL;
+	this->model_enum = UNDEF;
+	this->node = -1;
+
+}
+/*}}}*/
+Nodalvalue::Nodalvalue(char* in_name, int in_definitionenum, int in_model_enum, int in_node){/*{{{*/
+
+	this->definitionenum=in_definitionenum;
+	this->name   = xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->model_enum=in_model_enum;
+	this->node=in_node;
+}
+/*}}}*/
+Nodalvalue::~Nodalvalue(){/*{{{*/
+	if(this->name)xDelete(this->name);
+}
+/*}}}*/
+/*Object virtual function resolutoin: */
+Object* Nodalvalue::copy() {/*{{{*/
+	Nodalvalue* mf = new Nodalvalue(this->name,this->definitionenum, this->model_enum,this->node);
+	return (Object*) mf;
+}
+/*}}}*/
+void Nodalvalue::DeepEcho(void){/*{{{*/
+	this->Echo();
+}
+/*}}}*/
+void Nodalvalue::Echo(void){/*{{{*/
+	_printf_(" Nodalvalue: " << name << " " << this->definitionenum << "\n");
+	_printf_("    model_enum: " << model_enum << " " << EnumToStringx(model_enum) << "\n");
+	_printf_("    node: " << node << "\n");
+}
+/*}}}*/
+int Nodalvalue::Id(void){/*{{{*/
+	return -1;
+}
+/*}}}*/
+void Nodalvalue::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+
+	int object_enum=NodalvalueEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->definitionenum);
+	marshallhandle->call(this->model_enum);
+	marshallhandle->call(this->name);
+	marshallhandle->call(this->node);
+} 
+/*}}}*/
+int Nodalvalue::ObjectEnum(void){/*{{{*/
+	return NodalvalueEnum;
+}
+/*}}}*/
+/*Definition virtual function resolutoin: */
+int Nodalvalue::DefinitionEnum(){/*{{{*/
+
+	return this->definitionenum;
+}
+/*}}}*/
+char* Nodalvalue::Name(){/*{{{*/
+
+	char* name2=xNew<char>(strlen(this->name)+1);
+	xMemCpy(name2,this->name,strlen(this->name)+1);
+
+	return name2;
+}
+/*}}}*/
+IssmDouble Nodalvalue::Response(FemModel* femmodel){/*{{{*/
+
+	 /*output:*/
+	 IssmDouble value;
+
+	 /*set index, which will be used by the NodalValue module: */
+	 femmodel->parameters->SetParam(node,IndexEnum);
+
+	 /*call Nodalvalue:*/
+	 NodalValuex(&value, model_enum, femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, 
+			 femmodel->materials, femmodel->parameters);
+
+	 /*done:*/
+	 return value;
+ }
+ /*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Nodalvalue.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Nodalvalue.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Nodalvalue.h	(revision 27955)
@@ -0,0 +1,45 @@
+/*!\file Nodalvalue.h
+ * \brief: header file for Nodalvalue object
+ */
+
+#ifndef _NODALVALUE_H_
+#define _NODALVALUE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Definition.h"
+#include "./FemModel.h"
+/*}}}*/
+
+void NodalValuex( IssmDouble* pnodalvalue, int natureofdataenum,Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum);
+
+class Nodalvalue: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		int         model_enum;
+		char*       name;
+		int         node;
+
+		/*Nodalvalue constructors, destructors :*/
+		Nodalvalue();
+		Nodalvalue(char* in_name, int in_definitionenum, int in_model_enum, int in_node);
+		~Nodalvalue();
+
+		/*Object virtual function resolutoin: */
+		Object *copy();
+		void    DeepEcho(void);
+		void    Echo(void);
+		int     Id(void);
+		void    Marshall(MarshallHandle  *marshallhandle);
+		int     ObjectEnum(void);
+
+		/*Definition virtual function resolutoin: */
+		int DefinitionEnum();
+		char* Name();
+		IssmDouble Response(FemModel* femmodel);
+};
+
+#endif  /* _NODALVALUE_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Node.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Node.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Node.cpp	(revision 27955)
@@ -0,0 +1,861 @@
+/*!\file Node.c
+ * \brief: implementation of the Node object
+ */
+
+/*Include files: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./classes.h"
+#include "shared/shared.h"
+#include "modules/ModelProcessorx/ModelProcessorx.h"
+#include "../analyses/analyses.h"
+/*}}}*/
+
+/*Node constructors and destructors:*/
+Node::Node(){/*{{{*/
+	this->approximation  = 0;
+	this->gsize          = -1;
+	this->clone          = false;
+	this->active         = true;
+	this->freeze         = false;
+	this->f_set          = NULL;
+	this->s_set          = NULL;
+	this->svalues        = NULL;
+	this->doftype        = NULL;
+	this->gdoflist       = NULL;
+	this->fdoflist       = NULL;
+	this->sdoflist       = NULL;
+	this->gdoflist_local = NULL;
+	this->fdoflist_local = NULL;
+	this->sdoflist_local = NULL;
+}
+/*}}}*/
+Node::Node(int node_id,int node_sid,int io_index,bool node_clone,IoModel* iomodel,int node_analysis,int in_approximation,bool isamr){/*{{{*/
+
+	/*id: */
+	this->id            = node_id;
+	this->sid           = node_sid;
+	this->lid           = -1; /*Assigned by Finalize*/
+	this->pid           = -1; /*Assigned by Finalize*/
+	this->analysis_enum = node_analysis;
+	this->clone         = node_clone;
+	this->active        = true;
+	this->freeze        = false;
+
+	/*Initialize coord_system: Identity matrix by default*/
+	for(int k=0;k<3;k++) for(int l=0;l<3;l++) this->coord_system[k][l]=0.0;
+	for(int k=0;k<3;k++) this->coord_system[k][k]=1.0;
+
+	this->approximation=0;
+	if(analysis_enum==StressbalanceAnalysisEnum) this->approximation=in_approximation;
+
+	/*indexing:*/
+	this->indexingupdate = true;
+	this->doftype        = NULL;
+	Analysis *analysis = EnumToAnalysis(analysis_enum);
+	this->gsize = analysis->DofsPerNode(&this->doftype,iomodel->domaintype,in_approximation);
+	delete analysis;
+
+	if(this->gsize>0){
+		this->f_set          = xNew<bool>(this->gsize);
+		this->s_set          = xNew<bool>(this->gsize);
+		this->svalues        = xNew<IssmDouble>(this->gsize);
+		this->gdoflist       = xNew<int>(this->gsize);
+		this->gdoflist_local = xNew<int>(this->gsize);
+		this->fdoflist       = xNew<int>(this->gsize);
+		this->sdoflist       = xNew<int>(this->gsize);
+		this->fdoflist_local = xNew<int>(this->gsize);
+		this->sdoflist_local = xNew<int>(this->gsize);
+	}
+	else{
+		this->f_set          = NULL;
+		this->s_set          = NULL;
+		this->svalues        = NULL;
+		this->gdoflist       = NULL;
+		this->gdoflist_local = NULL;
+		this->fdoflist       = NULL;
+		this->sdoflist       = NULL;
+		this->fdoflist_local = NULL;
+		this->sdoflist_local = NULL;
+	}
+
+	/*Assign values assuming no Dirichlet at this point*/
+	for(int i=0;i<this->gsize;i++){
+		this->f_set[i]    = true;
+		this->s_set[i]    = false;
+		this->svalues[i]  = 0.;
+		this->gdoflist[i] = -1;
+		this->fdoflist[i] = -1;
+		this->sdoflist[i] = -1;
+		this->gdoflist_local[i] = -1;
+		this->fdoflist_local[i] = -1;
+		this->sdoflist_local[i] = -1;
+	}
+
+	/*Stop here if AMR*/
+	if(isamr) return;
+
+	/*Stressbalance Horiz*/
+	if(analysis_enum==StressbalanceAnalysisEnum){
+
+		/*Coordinate system provided, convert to coord_system matrix*/
+		_assert_(iomodel->Data("md.stressbalance.referential")); 
+		XZvectorsToCoordinateSystem(&this->coord_system[0][0],&iomodel->Data("md.stressbalance.referential")[io_index*6]);
+		_assert_(sqrt( coord_system[0][0]*coord_system[0][0] + coord_system[1][0]*coord_system[1][0]) >1.e-4);
+
+		if(iomodel->domaintype!=Domain2DhorizontalEnum && iomodel->domaintype!=Domain3DsurfaceEnum){
+			/*We have a  3d mesh, we may have collapsed elements, hence dead nodes. Freeze them out: */
+			_assert_(iomodel->Data("md.mesh.vertexonbase")); 
+			_assert_(iomodel->Data("md.flowequation.vertex_equation"));
+			if(in_approximation==SSAApproximationEnum && !reCast<int>(iomodel->Data("md.mesh.vertexonbase")[io_index])){
+				this->HardDeactivate();
+			}
+			if(in_approximation==L1L2ApproximationEnum && !reCast<int>(iomodel->Data("md.mesh.vertexonbase")[io_index])){
+				this->HardDeactivate();
+			}
+			if(in_approximation==MOLHOApproximationEnum && !reCast<int>(iomodel->Data("md.mesh.vertexonbase")[io_index])){
+				this->HardDeactivate();
+			}
+			if(in_approximation==SSAHOApproximationEnum && reCast<int>(iomodel->Data("md.flowequation.borderSSA")[io_index])){
+				if(!reCast<int>(iomodel->Data("md.mesh.vertexonbase")[io_index])){
+					this->HardDeactivate();
+				}
+			}
+			if(in_approximation==SSAFSApproximationEnum && reCast<int>(iomodel->Data("md.flowequation.borderSSA")[io_index])){
+				if(!reCast<int>(iomodel->Data("md.mesh.vertexonbase")[io_index])){
+					for(int k=0;k<=1;k++) this->FreezeDof(k);
+				}
+			}
+		}
+		/*spc all nodes on SIA*/
+		if(in_approximation==SIAApproximationEnum){
+			this->HardDeactivate();
+		}
+	}
+
+	/*2d solutions in 3d, we need to constrain all the nodes that are not on base*/
+	if(
+				analysis_enum==FreeSurfaceBaseAnalysisEnum || 
+				analysis_enum==MasstransportAnalysisEnum || 
+				analysis_enum==MeltingAnalysisEnum || 
+				analysis_enum==L2ProjectionBaseAnalysisEnum || 
+				analysis_enum==BalancethicknessAnalysisEnum ||
+				analysis_enum==HydrologyDCInefficientAnalysisEnum ||
+				analysis_enum==HydrologyDCEfficientAnalysisEnum ||
+				analysis_enum==HydrologyShaktiAnalysisEnum ||
+				analysis_enum==HydrologyGlaDSAnalysisEnum ||
+				analysis_enum==GLheightadvectionAnalysisEnum ||
+				analysis_enum==LevelsetAnalysisEnum
+	  ){
+		if(iomodel->domaintype!=Domain2DhorizontalEnum & iomodel->domaintype!=Domain3DsurfaceEnum){
+			/*On a 3d mesh, we may have collapsed elements, hence dead nodes. Freeze them out: */
+			_assert_(iomodel->Data("md.mesh.vertexonbase"));
+			if(!(reCast<bool>(iomodel->Data("md.mesh.vertexonbase")[io_index]))){
+				this->HardDeactivate();
+			}
+		}
+	}
+	if(
+			analysis_enum==FreeSurfaceTopAnalysisEnum ||
+			analysis_enum==DebrisAnalysisEnum
+	  ){
+		if(iomodel->domaintype!=Domain2DhorizontalEnum){
+			/*On a 3d mesh, we may have collapsed elements, hence dead nodes. Freeze them out: */
+			_assert_(iomodel->Data("md.mesh.vertexonsurface"));
+			if(!(reCast<bool>(iomodel->Data("md.mesh.vertexonsurface")[io_index]))){
+				this->HardDeactivate();
+			}
+		}
+	}
+
+}
+/*}}}*/
+Node::~Node(){/*{{{*/
+
+	if(this->f_set)          xDelete<bool>(f_set);
+	if(this->s_set)          xDelete<bool>(s_set);
+	if(this->svalues)        xDelete<IssmDouble>(svalues);
+	if(this->doftype)        xDelete<int>(doftype);
+	if(this->gdoflist)       xDelete<int>(gdoflist);
+	if(this->fdoflist)       xDelete<int>(fdoflist);
+	if(this->sdoflist)       xDelete<int>(sdoflist);
+	if(this->gdoflist_local) xDelete<int>(gdoflist_local);
+	if(this->fdoflist_local) xDelete<int>(fdoflist_local);
+	if(this->sdoflist_local) xDelete<int>(sdoflist_local);
+	return;
+}
+/*}}}*/
+Object* Node::copy(void){/*{{{*/
+
+	/*output: */
+	Node* output=NULL;
+
+	/*initalize output: */
+	output=new Node();
+
+	/*id: */
+	output->id  = this->id;
+	output->sid = this->sid;
+	output->lid = this->lid;
+	output->pid = this->pid;
+	output->analysis_enum = this->analysis_enum;
+	output->approximation = this->approximation;
+
+	/*Initialize coord_system: */
+	for(int k=0;k<3;k++) for(int l=0;l<3;l++) output->coord_system[k][l]=this->coord_system[k][l];
+
+	/*indexing:*/
+	output->indexingupdate = this->indexingupdate;
+	output->gsize  = this->gsize;
+	output->clone  = this->clone;
+	output->active = this->active;
+	output->freeze = this->freeze;
+	if(output->gsize>0){
+		output->f_set=xNew<bool>(output->gsize);
+		output->s_set=xNew<bool>(output->gsize);
+		output->svalues=xNew<IssmDouble>(output->gsize);
+		if(this->doftype) output->doftype=xNew<int>(output->gsize);
+		output->gdoflist=xNew<int>(output->gsize);
+		output->gdoflist_local=xNew<int>(output->gsize);
+		output->fdoflist=xNew<int>(output->gsize);
+		output->fdoflist_local=xNew<int>(output->gsize);
+		output->sdoflist=xNew<int>(output->gsize);
+		output->sdoflist_local=xNew<int>(output->gsize);
+	}
+
+	if(output->gsize>0){
+		memcpy(output->f_set,this->f_set,output->gsize*sizeof(bool));
+		memcpy(output->s_set,this->s_set,output->gsize*sizeof(bool));
+		xMemCpy<IssmDouble>(output->svalues,this->svalues,output->gsize);
+		if(output->doftype)memcpy(output->doftype,this->doftype,output->gsize*sizeof(int));
+		memcpy(output->gdoflist,this->gdoflist,output->gsize*sizeof(int));
+		memcpy(output->gdoflist_local,this->gdoflist_local,output->gsize*sizeof(int));
+		memcpy(output->fdoflist,this->fdoflist,output->gsize*sizeof(int));
+		memcpy(output->fdoflist_local,this->fdoflist_local,output->gsize*sizeof(int));
+		memcpy(output->sdoflist,this->sdoflist,output->gsize*sizeof(int));
+		memcpy(output->sdoflist_local,this->sdoflist_local,output->gsize*sizeof(int));
+	}
+
+	return (Object*)output; 
+}
+/*}}}*/
+void Node::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = NodeEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->id);
+	marshallhandle->call(this->sid);
+	marshallhandle->call(this->lid);
+	marshallhandle->call(this->pid);
+	marshallhandle->call(this->indexingupdate);
+	marshallhandle->call(this->analysis_enum);
+
+	for(int k=0;k<3;k++) for(int l=0;l<3;l++) marshallhandle->call(this->coord_system[k][l]);
+
+	marshallhandle->call(this->gsize);
+	marshallhandle->call(this->clone);
+	marshallhandle->call(this->active);
+	marshallhandle->call(this->freeze);
+	marshallhandle->call(this->f_set,gsize);
+	marshallhandle->call(this->s_set,gsize);
+	marshallhandle->call(this->svalues,gsize);
+	marshallhandle->call(this->doftype,gsize);
+	marshallhandle->call(this->gdoflist,gsize);
+	marshallhandle->call(this->fdoflist,gsize);
+	marshallhandle->call(this->sdoflist,gsize);
+	marshallhandle->call(this->gdoflist_local,gsize);
+	marshallhandle->call(this->fdoflist_local,gsize);
+	marshallhandle->call(this->sdoflist_local,gsize);
+} /*}}}*/
+
+/*Object virtual functions definitions:*/
+void Node::DeepEcho(void){/*{{{*/
+
+	int i;
+	_printf_("Node:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   sid: " << sid << "\n");
+	_printf_("   analysis_enum: " << EnumToStringx(analysis_enum) << "\n");
+	_printf_("   approximation: " << EnumToStringx(approximation) << "\n");
+	_printf_("   indexingupdate: " << indexingupdate << "\n");
+	_printf_("   gsize:  " << gsize << "\n");
+	_printf_("   clone:  " << clone << "\n");
+	_printf_("   active: " << active << "\n");
+	_printf_("   freeze: " << freeze << "\n");
+	_printf_("   f_set = [ ");
+	for(i=0;i<gsize;i++) _printf_((f_set[i]?1:0)<< " ");
+	_printf_("]\n");
+	_printf_("   s_set = [ ");
+	for(i=0;i<gsize;i++) _printf_((s_set[i]?1:0)<< " ");
+	_printf_("]\n");
+	_printf_("   svalues: |");
+	for(i=0;i<this->gsize;i++){
+		if(this->s_set[i])_printf_(" " << svalues[i] << " |");
+	}
+	_printf_("\n");
+	if(doftype){
+		_printf_("   doftype: |");
+		for(i=0;i<gsize;i++){
+			_printf_(" " << doftype[i] << " |");
+		}
+		_printf_("\n");
+	}
+	else _printf_("   doftype: NULL\n");
+
+	_printf_("   g_doflist (" << this->gsize << "): |");
+	for(i=0;i<this->gsize;i++) _printf_(" " << gdoflist[i] << " |");
+	_printf_("\n");
+	_printf_("   g_doflist_local (" << this->gsize << "): |");
+	for(i=0;i<this->gsize;i++) _printf_(" " << gdoflist_local[i] << " |");
+	_printf_("\n");
+
+	_printf_("   f_doflist (" << this->gsize << "): |");
+	for(i=0;i<this->gsize;i++) _printf_(" " << fdoflist[i] << " |");
+	_printf_("\n");
+	_printf_("   f_doflist_local (" << this->gsize << "): |");
+	for(i=0;i<this->gsize;i++) _printf_(" " << fdoflist_local[i] << " |");
+	_printf_("\n");
+
+	_printf_("   s_doflist (" << this->gsize << "): |");
+	for(i=0;i<this->gsize;i++) _printf_(" " << sdoflist[i] << " |");
+	_printf_("\n");
+	_printf_("   s_doflist_local (" << this->gsize << "): |");
+	for(i=0;i<this->gsize;i++) _printf_(" " << sdoflist_local[i] << " |");
+	_printf_("\n");
+
+}
+/*}}}*/
+void Node::Echo(void){/*{{{*/
+
+	_printf_("Node:\n");
+	_printf_("   id : " << id << "\n");
+	_printf_("   sid: " << sid << "\n");
+	_printf_("   lid: " << lid << "\n");
+	_printf_("   pid: " << pid << "\n");
+	_printf_("   analysis_enum: " << EnumToStringx(analysis_enum) << "\n");
+	_printf_("   approximation: " << EnumToStringx(approximation) << "\n");
+	_printf_("   indexingupdate: " << indexingupdate << "\n");
+	_printf_("   gsize:  " << gsize << "\n");
+	_printf_("   clone:  " << clone << "\n");
+	_printf_("   active: " << active << "\n");
+	_printf_("   freeze: " << freeze << "\n");
+}
+/*}}}*/
+int  Node::Id(void){ return id; }/*{{{*/
+/*}}}*/
+int  Node::ObjectEnum(void){/*{{{*/
+
+	return NodeEnum;
+
+}
+/*}}}*/
+
+/*Node management:*/
+void Node::GetCoordinateSystem(IssmDouble* coord_system_out){/*{{{*/
+
+	/*Copy coord_system*/
+	for(int k=0;k<3;k++) for(int l=0;l<3;l++) coord_system_out[3*k+l]=this->coord_system[k][l];
+
+}
+/*}}}*/
+int  Node::GetDof(int dofindex,int setenum){/*{{{*/
+
+	_assert_(!this->indexingupdate);
+	if(setenum==GsetEnum){
+		_assert_(dofindex>=0 && dofindex<gsize);
+		return gdoflist[dofindex];
+	}
+	else if(setenum==FsetEnum){
+		_assert_(dofindex>=0 && dofindex<gsize);
+		return fdoflist[dofindex];
+	}
+	else if(setenum==SsetEnum){
+		_assert_(dofindex>=0 && dofindex<gsize);
+		return sdoflist[dofindex];
+	}
+	else _error_("set of enum type " << EnumToStringx(setenum) << " not supported yet!");
+
+} /*}}}*/
+void Node::GetDofList(int* outdoflist,int approximation_enum,int setenum){/*{{{*/
+	_assert_(!this->indexingupdate);
+	int i;
+
+	int* doflistpointer = NULL;
+	if(setenum==GsetEnum) doflistpointer = gdoflist;
+	else if(setenum==FsetEnum)for(i=0;i<this->gsize;i++) doflistpointer = fdoflist;
+	else if(setenum==SsetEnum)for(i=0;i<this->gsize;i++) doflistpointer = sdoflist;
+	else _error_("not supported");
+
+	if(approximation_enum==NoneApproximationEnum){
+		for(i=0;i<this->gsize;i++) outdoflist[i]=doflistpointer[i];
+	}
+	else{
+		if(doftype){
+			int count = 0;
+			for(i=0;i<this->gsize;i++){
+				if(doftype[i]==approximation_enum) outdoflist[count++]=doflistpointer[i];
+			}
+		}
+		else for(i=0;i<this->gsize;i++) outdoflist[i]=doflistpointer[i];
+	}
+}/*}}}*/
+void Node::GetDofListLocal(int* outdoflist,int approximation_enum,int setenum){/*{{{*/
+
+	_assert_(!this->indexingupdate);
+	int i;
+
+	int* doflistpointer = NULL;
+	if(setenum==GsetEnum) doflistpointer = gdoflist_local;
+	else if(setenum==FsetEnum)for(i=0;i<this->gsize;i++) doflistpointer = fdoflist_local;
+	else if(setenum==SsetEnum)for(i=0;i<this->gsize;i++) doflistpointer = sdoflist_local;
+	else _error_("not supported");
+
+	if(approximation_enum==NoneApproximationEnum){
+		for(i=0;i<this->gsize;i++) outdoflist[i]=doflistpointer[i];
+	}
+	else{
+		if(doftype){
+			int count =0;
+			for(i=0;i<this->gsize;i++){
+				if(doftype[i]==approximation_enum) outdoflist[count++]=doflistpointer[i];
+			}
+		}
+		else for(i=0;i<this->gsize;i++) outdoflist[i]=doflistpointer[i];
+	}
+}
+/*}}}*/
+int  Node::Lid(void){/*{{{*/
+	return lid; 
+}
+/*}}}*/
+int  Node::Sid(void){/*{{{*/
+	return sid; 
+}
+/*}}}*/
+int  Node::Pid(void){/*{{{*/
+	return this->pid; 
+}
+/*}}}*/
+
+/*Node numerics:*/
+void Node::Activate(void){/*{{{*/
+
+	if(!IsActive() && !this->freeze){
+		this->indexingupdate = true;
+		this->active = true;
+		for(int i=0;i<this->gsize;i++){
+			this->f_set[i]    = true;
+			this->s_set[i]    = false;
+			this->svalues[i]  = 0.; 
+		}
+	}
+
+}
+/*}}}*/
+void Node::ApplyConstraint(int dof,IssmDouble value){/*{{{*/
+
+	/*Dof should be added in the s set, describing which 
+	 * dofs are constrained to a certain value (dirichlet boundary condition*/
+	DofInSSet(dof);
+	this->svalues[dof]=value;
+}
+/*}}}*/
+void Node::CreateNodalConstraints(Vector<IssmDouble>* ys){/*{{{*/
+
+	if(this->SSize()){
+		/*Add values into constraint vector: */
+		ys->SetValues(this->gsize,this->sdoflist,this->svalues,INS_VAL);
+	}
+
+}/*}}}*/
+void Node::Deactivate(void){/*{{{*/
+
+	if(IsActive() && !this->freeze){
+		this->indexingupdate = true;
+		this->active = false;
+		/*Constrain to 0. at this point*/
+		for(int i=0;i<this->gsize;i++){
+			this->f_set[i]    = false;
+			this->s_set[i]    = true;
+			this->svalues[i]  = 0.; 
+		}
+	}
+} /*}}}*/
+void Node::DofInFSet(int dof){/*{{{*/
+
+	/*Put dof for this node into the f set (ie, this dof will NOT be constrained 
+	 * to a fixed value during computations. Only do this for active nodes. */
+	_assert_(dof<this->gsize);
+	_assert_(this->active);
+
+	if(!this->f_set[dof]){
+		if(this->freeze) _error_("Cannot change dof of frozen node");
+		this->indexingupdate = true;
+		this->f_set[dof]=true; 
+		this->s_set[dof]=false;
+	}
+}
+/*}}}*/
+void Node::DofInSSet(int dof){/*{{{*/
+
+	/*Put dof for this node into the s set (ie, this dof will be constrained 
+	 * to a fixed value during computations. */
+	_assert_(dof<this->gsize);
+
+	if(this->f_set[dof]){
+		//if(this->freeze) _error_("Cannot change dof of frozen node");
+		this->indexingupdate = true;
+		this->f_set[dof]=false; //n splits into f (for which we solve) and s (single point constraints)
+		this->s_set[dof]=true;
+	}
+}
+/*}}}*/
+void Node::FreezeDof(int dof){/*{{{*/
+
+	DofInSSet(dof); //with 0 displacement for this dof.
+	//FIXME: for now we don't want this element to change so we use freeze
+	this->freeze =true;
+
+}
+/*}}}*/
+int  Node::GetApproximation(){/*{{{*/
+
+	return approximation;
+}
+/*}}}*/
+void Node::SetApproximation(int in_approximation){/*{{{*/
+
+	this->approximation = in_approximation;
+}
+/*}}}*/
+int  Node::GetNumberOfDofs(int approximation_enum,int setenum){/*{{{*/
+
+	/*Get number of degrees of freedom in a node, for a certain set (g,f or s-set)
+	 *and for a certain approximation type: */
+
+	int i;
+	int numdofs=0;
+
+	if(approximation_enum==NoneApproximationEnum){
+		if      (setenum==GsetEnum) numdofs=this->gsize;
+		else if (setenum==FsetEnum) numdofs=this->FSize();
+		else if (setenum==SsetEnum) numdofs=this->SSize();
+		else _error_("set of enum type " << EnumToStringx(setenum) << " not supported yet!");
+	}
+	else{
+		if(setenum==GsetEnum){
+			if(this->doftype){
+				numdofs=0;
+				for(i=0;i<this->gsize;i++){
+					if(this->doftype[i]==approximation_enum) numdofs++;
+				}
+			}
+			else numdofs=this->gsize;
+		}
+		else if (setenum==FsetEnum){
+			if(this->doftype){
+				numdofs=0;
+				for(i=0;i<this->gsize;i++){
+					if((this->doftype[i]==approximation_enum) && (this->f_set[i])) numdofs++;
+				}
+			}
+			else numdofs=this->FSize();
+		}
+		else if (setenum==SsetEnum){
+			if(this->doftype){
+			numdofs=0;
+				for(i=0;i<this->gsize;i++){
+					if((this->doftype[i]==approximation_enum) && (this->s_set[i])) numdofs++;
+				}
+			}
+			else numdofs=this->SSize();
+		}
+		else _error_("set of enum type " << EnumToStringx(setenum) << " not supported yet!");
+	}
+	return numdofs;
+}
+/*}}}*/
+void Node::HardDeactivate(void){/*{{{*/
+
+	this->Deactivate();
+	this->freeze =true;
+
+}
+/*}}}*/
+bool Node::IsActive(void){/*{{{*/
+	return active;
+}/*}}}*/
+int  Node::IsClone(){/*{{{*/
+	return clone;
+}/*}}}*/
+void Node::ReindexingDone(void){/*{{{*/
+	this->indexingupdate = false;
+}/*}}}*/
+void Node::RelaxConstraint(int dof){/*{{{*/
+
+	/*Dof should be added to the f-set, and taken out of the s-set:*/
+	if(this->active){
+		DofInFSet(dof);
+		this->svalues[dof]=0.;
+	}
+}
+/*}}}*/
+bool Node::RequiresDofReindexing(void){/*{{{*/
+
+	return this->indexingupdate;
+
+}
+/*}}}*/
+void Node::VecMerge(Vector<IssmDouble>* ug,IssmDouble* local_uf,int* indices_uf,IssmDouble* local_ys,int* indices_ys){/*{{{*/
+
+	/*Only perform operation if not clone*/
+	if(this->IsClone()) return;
+
+	/*Get F size and S size*/
+	int fsize = this->FSize();
+	int ssize = this->SSize();
+
+	if(fsize){
+		int*        indices = xNew<int>(fsize);
+		IssmDouble* values  = xNew<IssmDouble>(fsize);
+
+		int count = 0;
+		for(int i=0;i<this->gsize;i++){
+			if(this->f_set[i]){
+				_assert_(local_uf);
+				_assert_(this->fdoflist[i]==indices_uf[this->fdoflist_local[i]]);
+
+				values[count] =local_uf[this->fdoflist_local[i]];
+				indices[count]=this->gdoflist[i];
+				count++;
+			}
+		}
+		ug->SetValues(fsize,indices,values,INS_VAL);
+
+		xDelete<IssmDouble>(values);
+		xDelete<int>(indices);
+	}
+	if(ssize){
+		int*        indices = xNew<int>(ssize);
+		IssmDouble* values  = xNew<IssmDouble>(ssize);
+
+		int count = 0;
+		for(int i=0;i<this->gsize;i++){
+			if(this->s_set[i]){
+				_assert_(local_ys);
+				_assert_(this->sdoflist[i]==indices_ys[this->sdoflist_local[i]]);
+
+				values[count] =local_ys[this->sdoflist_local[i]];
+				indices[count]=this->gdoflist[i];
+				count++;
+			}
+		}
+		ug->SetValues(ssize,indices,values,INS_VAL);
+
+		xDelete<IssmDouble>(values);
+		xDelete<int>(indices);
+	}
+}
+/*}}}*/
+void Node::VecReduce(Vector<IssmDouble>* uf, IssmDouble* local_ug,int* indices_ug){/*{{{*/
+
+	/*Only perform operation if not clone*/
+	if(this->IsClone()) return;
+
+	/*Get F size*/
+	int fsize = this->FSize();
+
+	if(fsize){
+		int*        indices = xNew<int>(fsize);
+		IssmDouble* values  = xNew<IssmDouble>(fsize);
+
+		int count = 0;
+		for(int i=0;i<this->gsize;i++){
+			if(this->f_set[i]){
+				_assert_(local_ug);
+				_assert_(this->gdoflist[i]==indices_ug[this->gdoflist_local[i]]);
+				_assert_(this->fdoflist[i]>=0);
+
+				values[count] =local_ug[this->gdoflist_local[i]];
+				indices[count]=this->fdoflist[i];
+				count++;
+			}
+		}
+		_assert_(count==fsize);
+		uf->SetValues(fsize,indices,values,INS_VAL);
+
+		xDelete<IssmDouble>(values);
+		xDelete<int>(indices);
+	}
+}
+/*}}}*/
+
+/* indexing routines:*/
+void Node::DistributeLocalDofs(int* pdofcount,int setenum){/*{{{*/
+
+	/*Get current count*/
+	int dofcount=*pdofcount;
+
+	/*This node should distribute dofs for setenum set (eg, f_set or s_set), go ahead: */
+	if(setenum==GsetEnum){
+		_assert_(this->gsize==0 || this->gdoflist_local);
+		for(int i=0;i<this->gsize;i++) gdoflist_local[i]=dofcount++;
+	}
+	else if(setenum==FsetEnum){
+		for(int i=0;i<this->gsize;i++){
+			if(this->f_set[i]) fdoflist_local[i]=dofcount++;
+			else               fdoflist_local[i]=-1;
+		}
+	}
+	else if(setenum==SsetEnum){
+		for(int i=0;i<this->gsize;i++){
+			if(this->s_set[i]) sdoflist_local[i]=dofcount++;
+			else               sdoflist_local[i]=-1;
+		}
+	}
+	else _error_("set of enum type " << EnumToStringx(setenum) << " not supported yet!");
+
+	/*Assign output pointers: */
+	*pdofcount=dofcount;
+}/*}}}*/
+void Node::DistributeGlobalDofsMasters(int dofcount,int setenum){/*{{{*/
+
+	/*This node is a clone, don't offset the dofs!: */
+	if(clone) return;
+
+	/*This node should off_set the dofs, go ahead: */
+	if(setenum==GsetEnum){
+		_assert_(this->gsize==0 || this->gdoflist);
+		for(int i=0;i<this->gsize;i++) this->gdoflist[i]=this->gdoflist_local[i]+dofcount;
+	}
+	else if(setenum==FsetEnum){
+		for(int i=0;i<this->gsize;i++){
+			if(this->f_set[i]) fdoflist[i]=this->fdoflist_local[i]+dofcount;
+			else               fdoflist[i]=-1;
+		}
+	}
+	else if(setenum==SsetEnum){
+		for(int i=0;i<this->gsize;i++){
+			if(this->s_set[i]) sdoflist[i]=this->sdoflist_local[i]+dofcount;
+			else               sdoflist[i]=-1;
+		}
+	}
+	else _error_("set of enum type " << EnumToStringx(setenum) << " not supported yet!");
+}
+/*}}}*/
+void Node::ShowMasterDofs(int* truedofs,int setenum){/*{{{*/
+
+	_assert_(!this->clone);
+
+	/*Ok, we are not a clone, just plug our dofs into truedofs: */
+	switch(setenum){
+		case GsetEnum:
+			for(int j=0;j<this->gsize;j++) truedofs[j]=gdoflist[j];
+			break;
+		case FsetEnum:
+			for(int j=0;j<this->gsize;j++) truedofs[j]=fdoflist[j];
+			break;
+		case SsetEnum:
+			for(int j=0;j<this->gsize;j++) truedofs[j]=sdoflist[j];
+			break;
+		default:
+			_error_("set of enum type " << EnumToStringx(setenum) << " not supported yet!");
+	}
+
+}
+/*}}}*/
+void Node::UpdateCloneDofs(int* alltruedofs,int setenum){/*{{{*/
+
+	_assert_(this->clone);
+
+	/*Ok, we are a clone node, but we did not create the dofs for this node.
+	 *Therefore, our doflist is garbage right now. Go pick it up in the alltruedofs: */
+	switch(setenum){
+		case GsetEnum:
+			for(int j=0;j<this->gsize;j++) gdoflist[j]=alltruedofs[j];
+			break;
+		case FsetEnum:
+			for(int j=0;j<this->gsize;j++) fdoflist[j]=alltruedofs[j];
+			break;
+		case SsetEnum:
+			for(int j=0;j<this->gsize;j++) sdoflist[j]=alltruedofs[j];
+			break;
+		default:
+			_error_("set of enum type " << EnumToStringx(setenum) << " not supported yet!");
+	}
+}
+/*}}}*/
+int  Node::FSize(void){/*{{{*/
+
+	_assert_(this!=NULL && this->gdoflist);
+
+	int fsize = 0;
+	for(int i=0;i<this->gsize;i++) if(this->f_set[i]) fsize++;
+	return fsize;
+}
+/*}}}*/
+int  Node::SSize(void){/*{{{*/
+
+	_assert_(this!=NULL && this->s_set);
+
+	int ssize = 0;
+	for(int i=0;i<this->gsize;i++) if(this->s_set[i]) ssize++;
+	return ssize;
+}
+/*}}}*/
+
+/*Methods inherent to Node: */
+int* GetGlobalDofList(Node** nodes,int numnodes,int setenum,int approximation){/*{{{*/
+
+	/*output*/
+	int *doflist = NULL;
+
+	if(numnodes){
+
+		/*Allocate:*/
+		int* ndof_list=xNew<int>(numnodes);
+
+		/*First, figure out size of doflist: */
+		int numdof=0;
+		for(int i=0;i<numnodes;i++){
+			ndof_list[i]=nodes[i]->GetNumberOfDofs(approximation,GsetEnum);
+			numdof+=ndof_list[i];
+		}
+
+		if(numdof){
+			/*Allocate: */
+			doflist=xNew<int>(numdof);
+
+			/*Populate: */
+			int count=0;
+			for(int i=0;i<numnodes;i++){
+				nodes[i]->GetDofList(&doflist[count],approximation,setenum);
+				count+=ndof_list[i];
+			}
+		}
+		else doflist=NULL;
+
+		/*Free resources:*/
+		xDelete<int>(ndof_list);
+	}
+
+	return doflist;
+}
+/*}}}*/
+int GetNumberOfDofs(Node** nodes,int numnodes,int setenum,int approximation){/*{{{*/
+
+	/*output: */
+	int numberofdofs=0;
+
+	for(int i=0;i<numnodes;i++){
+		numberofdofs+=nodes[i]->GetNumberOfDofs(approximation,setenum);
+	}
+
+	return numberofdofs;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Node.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Node.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Node.h	(revision 27955)
@@ -0,0 +1,118 @@
+/*!\file Node.h
+ * \brief: header file for node object
+ */
+
+#ifndef _NODE_H_
+#define _NODE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../datastructures/datastructures.h"
+#include "../shared/shared.h"
+class  Inputs;
+class  Hook;
+class  IoModel;
+class  DataSet;
+class  Vertices;
+template <class doubletype> class Vector;
+template <class doubletype> class Matrix;
+class ElementVector;
+class ElementMatrix;
+/*}}}*/
+
+class Node: public Object{
+
+	private:
+		int  approximation; //For ice flow models, we need to know what ice flow approximation is employed on this node
+		bool clone;  //this node is replicated from another one
+		int  id;    // unique arbitrary id.
+		int  sid;   // "serial" id (rank of this node if the dataset was serial on 1 cpu)
+		int  lid;   // "local"  id (rank of this node in current partition)
+		int  pid;   // parallel id (specific to this partition)
+
+		/*Only this function can access these private fields*/
+		//friend void Nodes::Finalize();
+		friend class Nodes;
+		friend class FemModel;
+
+	public: 
+		int  analysis_enum;
+		IssmDouble   coord_system[3][3];
+		bool         indexingupdate;
+
+		/*sizes: */
+		int gsize;   //number of dofs for a node
+
+		/*Activation*/
+		bool active; //Is this node active or inactive (all dofs are constrained)
+		bool freeze; //this is required for 2d solutions, we never activate nodes that are not on base
+
+		/*boundary conditions sets: */
+		bool       *f_set;     //is dof on f-set (on which we solve)
+		bool       *s_set;     //is dof on s-set (on which boundary conditions -dirichlet- are applied)
+		IssmDouble *svalues;   //list of constraint values. size g_size, for ease of use.
+
+		/*types of dofs: */
+		int  *doftype;   //approximation type of the dofs (used only for coupling), size g_size
+
+		/*list of degrees of freedom: */
+		int *gdoflist;
+		int *fdoflist;
+		int *sdoflist;
+		int *gdoflist_local;
+		int *fdoflist_local;
+		int *sdoflist_local;
+
+		/*Node constructors, destructors*/
+		Node();
+		Node(int node_id,int node_sid,int io_index,bool isclone,IoModel* iomodel,int analysis_enum,int approximation_in,bool isamr);
+		~Node();
+
+		/*Object virtual functions definitions:*/
+		Object *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+
+		/*Node numerical routines*/
+		void  Activate(void);
+		void  ApplyConstraint(int dof,IssmDouble value);
+		void  CreateNodalConstraints(Vector<IssmDouble>* ys);
+		void  Deactivate(void);
+		void  DistributeLocalDofs(int* pdofcount,int setenum);
+		void  DofInFSet(int dof);
+		void  DofInSSet(int dof);
+		void  FreezeDof(int dof);
+		int   GetApproximation();
+		void  GetCoordinateSystem(IssmDouble* coord_system_out);
+		int   GetDof(int dofindex,int setenum);
+		void  GetDofList(int* poutdoflist,int approximation_enum,int setenum);
+		void  GetDofListLocal(int* poutdoflist,int approximation_enum,int setenum);
+		int   GetNumberOfDofs(int approximation_enum,int setenum);
+		void  HardDeactivate(void);
+		bool  IsActive(void);
+		int   IsClone();
+		int   Lid(void); 
+		void  DistributeGlobalDofsMasters(int dofcount,int setenum);
+		void  ReindexingDone(void);
+		void  RelaxConstraint(int dof);
+		bool  RequiresDofReindexing(void);
+		void  SetCurrentConfiguration(DataSet* nodes,Vertices* vertices);
+		void  ShowMasterDofs(int* truerows,int setenum);
+		int   Sid(void); 
+		int   Pid(void); 
+		void  UpdateCloneDofs(int* alltruerows,int setenum);
+		void  VecMerge(Vector<IssmDouble>* ug,IssmDouble* local_uf,int* indices_uf,IssmDouble* local_ys,int* indices_ys);
+		void  VecReduce(Vector<IssmDouble>* uf, IssmDouble* local_ug,int* indices_ug);
+		void  SetApproximation(int in_approximation);
+		int   SSize();
+		int   FSize();
+};
+
+/*Methods inherent to Node: */
+int* GetGlobalDofList(Node** nodes,int numnodes,int setenum,int approximation);
+int  GetNumberOfDofs(Node** nodes,int numnodes,int setenum,int approximation);
+
+#endif  /* _NODE_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Nodes.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Nodes.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Nodes.cpp	(revision 27955)
@@ -0,0 +1,546 @@
+/*
+ * \file Nodes.cpp
+ * \brief: Implementation of Nodes class, derived from DataSet class.
+ */
+
+/*Headers*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "../shared/io/Comm/IssmComm.h"
+#include "./Nodes.h"
+#include "./Node.h"
+using namespace std;
+
+/*Object constructors and destructor*/
+Nodes::Nodes(){/*{{{*/
+	this->enum_type             = NodesEnum;
+	this->common_recv           = NULL;
+	this->common_recv_ids       = NULL;
+	this->common_send           = NULL;
+	this->common_send_ids       = NULL;
+	this->numberofnodes         = -1;
+	this->numberofnodes_local   = -1;
+	this->numberofmasters_local = -1;
+	return;
+}
+/*}}}*/
+Nodes::~Nodes(){/*{{{*/
+	int num_proc=IssmComm::GetSize();
+
+	if(this->common_recv) xDelete<int>(common_recv);
+	if(this->common_send) xDelete<int>(common_send);
+	if(this->common_recv_ids){
+		for(int i=0;i<num_proc;i++) if(common_recv_ids[i]) xDelete<int>(common_recv_ids[i]);
+		xDelete<int*>(common_recv_ids);
+	}
+	if(this->common_send_ids){
+		for(int i=0;i<num_proc;i++) if(common_send_ids[i]) xDelete<int>(common_send_ids[i]);
+		xDelete<int*>(common_send_ids);
+	}
+	return;
+}
+/*}}}*/
+
+/*Numerics*/
+Nodes* Nodes::Copy() {/*{{{*/
+
+	int num_proc = IssmComm::GetSize();
+
+	/*Copy dataset*/
+	Nodes* output=new Nodes();
+	output->sorted=this->sorted;
+	output->numsorted=this->numsorted;
+	output->presorted=this->presorted;
+	for(vector<Object*>::iterator obj=this->objects.begin() ; obj < this->objects.end(); obj++ ){
+		output->AddObject((*obj)->copy());
+	}
+
+	/*Build id_offsets and sorted_ids*/
+	int objsize = this->numsorted;
+	output->id_offsets=NULL;
+	output->sorted_ids=NULL;
+	if(this->sorted && objsize>0 && this->id_offsets){
+		output->id_offsets=xNew<int>(objsize);
+		xMemCpy<int>(output->id_offsets,this->id_offsets,objsize);
+	}
+	if(this->sorted && objsize>0 && this->sorted_ids){
+		output->sorted_ids=xNew<int>(objsize);
+		xMemCpy<int>(output->sorted_ids,this->sorted_ids,objsize);
+	}
+
+	/*Copy other fields*/
+	output->numberofnodes         = this->numberofnodes;
+	output->numberofnodes_local   = this->numberofnodes_local;
+	output->numberofmasters_local = this->numberofmasters_local;
+
+	if(this->common_recv){
+		output->common_recv=xNew<int>(num_proc);
+		for(int i=0;i<num_proc;i++) output->common_recv[i]=this->common_recv[i];
+	}
+	if(this->common_send){
+		output->common_send=xNew<int>(num_proc);
+		for(int i=0;i<num_proc;i++) output->common_send[i]=this->common_send[i];
+	}
+	if(this->common_recv_ids){
+		output->common_recv_ids = xNew<int*>(num_proc);
+		for(int i=0;i<num_proc;i++){
+			output->common_recv_ids[i]=xNew<int>(this->common_recv[i]);
+			for(int j=0;j<this->common_recv[i];j++) output->common_recv_ids[i][j]=this->common_recv_ids[i][j];
+		}
+	}
+	if(this->common_send_ids){
+		output->common_send_ids = xNew<int*>(num_proc);
+		for(int i=0;i<num_proc;i++){
+			output->common_send_ids[i]=xNew<int>(this->common_send[i]);
+			for(int j=0;j<this->common_send[i];j++) output->common_send_ids[i][j]=this->common_send_ids[i][j];
+		}
+	}
+
+	return output;
+}
+/*}}}*/
+void  Nodes::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = NodesEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(numberofnodes);
+	marshallhandle->call(numberofnodes_local);
+	marshallhandle->call(numberofmasters_local);
+
+	/*Check that restart is compatible!*/
+	int num_procs=IssmComm::GetSize();
+	int test = num_procs;
+	marshallhandle->call(test);
+	if(test!=num_procs) _error_("number of cores is not the same as before");
+
+	DataSet::Marshall(marshallhandle);
+
+	if(marshallhandle->OperationNumber() == MARSHALLING_LOAD){
+		this->common_recv_ids = xNew<int*>(num_procs);
+		this->common_send_ids = xNew<int*>(num_procs);
+		for(int i=0;i<num_procs;i++){
+			this->common_recv_ids[i] = NULL;
+			this->common_send_ids[i] = NULL;
+		}
+	}
+
+	/*Stop here if no nodes*/
+	if(this->Size()==0) return;
+
+	marshallhandle->call(this->common_recv,num_procs);
+	marshallhandle->call(this->common_send,num_procs);
+	for(int i=0;i<num_procs;i++){
+		if(this->common_recv[i]) marshallhandle->call(this->common_recv_ids[i],this->common_recv[i]);
+		if(this->common_send[i]) marshallhandle->call(this->common_send_ids[i],this->common_send[i]);
+	}
+}
+/*}}}*/
+void  Nodes::DistributeDofs(int setenum){/*{{{*/
+
+	/*recover my_rank:*/
+	ISSM_MPI_Status status;
+	int my_rank   = IssmComm::GetRank();
+	int num_procs = IssmComm::GetSize();
+
+	/*Now, Build local dofs for masters first*/
+	int  dofcount=0;
+	for(Object* & object : this->objects){
+      Node* node = xDynamicCast<Node*>(object);
+		if(!node->IsClone()) node->DistributeLocalDofs(&dofcount,setenum);
+	}
+	/*Build local dofs for clones, they always will be at the end*/
+	int dofcount_local = dofcount;
+	for(Object* & object : this->objects){
+		Node* node = xDynamicCast<Node*>(object);
+		if(node->IsClone()) node->DistributeLocalDofs(&dofcount_local,setenum);
+	}
+
+	/* Now every object has distributed dofs, but locally, and with a dof count starting from
+	 * 0. This means the dofs between all the cpus are not unique. We now offset the dofs of each
+	 * cpus by the total last (master) dofs of the previus cpu, starting from 0.
+	 * First: get number of dofs for each cpu*/
+	int* alldofcount=xNew<int>(num_procs);
+	ISSM_MPI_Gather(&dofcount,1,ISSM_MPI_INT,alldofcount,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	ISSM_MPI_Bcast(alldofcount,num_procs,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/* Every cpu should start its own dof count at the end of the dofcount from cpu-1*/
+	int offset=0;
+	for(int i=0;i<my_rank;i++) offset+=alldofcount[i];
+	xDelete<int>(alldofcount);
+
+	for(Object* & object : this->objects){
+		Node* node = xDynamicCast<Node*>(object);
+		node->DistributeGlobalDofsMasters(offset,setenum);
+	}
+
+	/* Finally, remember that cpus may have skipped some objects, because they were clones. For every
+	 * object that is not a clone, tell them to show their dofs, so that later on, they can get picked
+	 * up by their clones: */
+	int maxdofspernode  = this->MaxNumDofs(GsetEnum);
+	int **send_truedofs = xNewZeroInit<int*>(num_procs);
+	int  *recv_truedofs = xNewZeroInit<int>(this->Size()*maxdofspernode);
+	ISSM_MPI_Request  *send_requests = xNew<ISSM_MPI_Request>(num_procs);
+	for (int rank = 0;rank<num_procs;rank++) send_requests[rank] = ISSM_MPI_REQUEST_NULL;
+
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->common_send[rank]){
+			int  numids = this->common_send[rank];
+			send_truedofs[rank] = xNew<int>(numids*maxdofspernode);
+			for(int i=0;i<numids;i++){
+				Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(this->common_send_ids[rank][i]));
+				node->ShowMasterDofs(&send_truedofs[rank][i*maxdofspernode+0],setenum);
+			}
+			ISSM_MPI_Isend(send_truedofs[rank],numids*maxdofspernode,ISSM_MPI_INT,rank,0,IssmComm::GetComm(),&send_requests[rank]);
+		}
+	}
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->common_recv[rank]){
+			int  numids = this->common_recv[rank];
+			ISSM_MPI_Recv(recv_truedofs,numids*maxdofspernode,ISSM_MPI_INT,rank,0,IssmComm::GetComm(),&status);
+			for(int i=0;i<numids;i++){
+				Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(this->common_recv_ids[rank][i]));
+				node->UpdateCloneDofs(&recv_truedofs[i*maxdofspernode+0],setenum);
+			}
+		}
+	}
+	xDelete<int>(recv_truedofs);
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->common_send[rank]) ISSM_MPI_Wait(&send_requests[rank],&status);
+		xDelete<int>(send_truedofs[rank]);
+	}
+	xDelete<int*>(send_truedofs);
+	xDelete<ISSM_MPI_Request>(send_requests);
+
+	/*Update indexingupdateflag*/
+	for(Object* & object : this->objects){
+		Node* node = xDynamicCast<Node*>(object);
+		node->ReindexingDone();
+	}
+}
+/*}}}*/
+void  Nodes::Finalize(){/*{{{*/
+
+	/*Here we do 4 things:
+	 * - count all nodes once for all so that we do not need to call MPI
+	 *   every time we need to know the total number of vertices
+	 * - Distribute lids (local ids): masters first, slaves second
+	 * - Distribute pids (parallel ids)
+	 * - Distribute Gset once for all
+	 */
+
+	/*recover my_rank:*/
+	ISSM_MPI_Status status;
+	int my_rank   = IssmComm::GetRank();
+	int num_procs = IssmComm::GetSize();
+
+	/*1. set number of nodes once for all*/
+	this->numberofnodes_local=this->Size();
+	this->numberofmasters_local=0;
+	for(Object* & object : this->objects){
+		Node* node = xDynamicCast<Node*>(object);
+		if(!node->clone) this->numberofmasters_local++;
+	}
+	ISSM_MPI_Allreduce((void*)&this->numberofmasters_local,(void*)&this->numberofnodes,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
+
+	/*2. Distribute lids (First: masters, then clones)*/
+	int lid = 0;
+	for(Object* & object : this->objects){
+		Node* node = xDynamicCast<Node*>(object);
+		if(!node->clone) node->lid=lid++;
+	}
+	for(Object* & object : this->objects){
+		Node* node = xDynamicCast<Node*>(object);
+		if(node->clone) node->lid=lid++;
+	}
+
+	/*3. Distribute pids based on lids and offsets*/
+	int* all_num_masters=xNew<int>(num_procs);
+	ISSM_MPI_Gather(&this->numberofmasters_local,1,ISSM_MPI_INT,all_num_masters,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	ISSM_MPI_Bcast(all_num_masters,num_procs,ISSM_MPI_INT,0,IssmComm::GetComm());
+	int offset=0;
+	for(int i=0;i<my_rank;i++) offset+=all_num_masters[i];
+	xDelete<int>(all_num_masters);
+
+	for(Object* & object : this->objects){
+		Node* node = xDynamicCast<Node*>(object);
+		node->pid = node->lid+offset;
+	}
+
+	/* Share pids of masters and update pids of clones*/
+	int **send_truepids = xNewZeroInit<int*>(num_procs);
+	int  *recv_truepids = xNewZeroInit<int>(this->Size());
+	ISSM_MPI_Request* send_requests = xNew<ISSM_MPI_Request>(num_procs);
+	for(int rank=0;rank<num_procs;rank++) send_requests[rank] = ISSM_MPI_REQUEST_NULL;
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->common_send[rank]){
+			int  numids = this->common_send[rank];
+			send_truepids[rank] = xNew<int>(numids);
+			for(int i=0;i<numids;i++){
+				Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(this->common_send_ids[rank][i]));
+				send_truepids[rank][i] = node->pid;
+			}
+			ISSM_MPI_Isend(send_truepids[rank],numids,ISSM_MPI_INT,rank,0,IssmComm::GetComm(),&send_requests[rank]);
+		}
+	}
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->common_recv[rank]){
+			int  numids = this->common_recv[rank];
+			ISSM_MPI_Recv(recv_truepids,numids,ISSM_MPI_INT,rank,0,IssmComm::GetComm(),&status);
+			for(int i=0;i<numids;i++){
+				Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(this->common_recv_ids[rank][i]));
+				node->pid = recv_truepids[i];
+			}
+		}
+	}
+	xDelete<int>(recv_truepids);
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->common_send[rank]) ISSM_MPI_Wait(&send_requests[rank],&status);
+		xDelete<int>(send_truepids[rank]);
+	}
+	xDelete<int*>(send_truepids);
+	xDelete<ISSM_MPI_Request>(send_requests);
+
+	/*4. Distribute G dofs once for all*/
+	//this->DistributeDofs(GsetEnum);
+
+	return;
+}/*}}}*/
+int   Nodes::MaxNumDofs(int setenum){/*{{{*/
+
+	int max=0;
+	int allmax;
+
+	/*Now go through all nodes, and get how many dofs they own, unless they are clone nodes: */
+	for(Object* & object : this->objects){
+		Node* node = xDynamicCast<Node*>(object);
+
+		int numdofs=node->GetNumberOfDofs(NoneApproximationEnum,setenum);
+		if(numdofs>max) max=numdofs;
+	}
+
+	/*Grab max of all cpus: */
+	ISSM_MPI_Allreduce((void*)&max,(void*)&allmax,1,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
+	max=allmax;
+
+	return max;
+}
+/*}}}*/
+int   Nodes::NumberOfDofs(int setenum){/*{{{*/
+
+	int   allnumdofs;
+
+	/*Get number of dofs on current cpu (excluding clones)*/
+	int numdofs=this->NumberOfDofsLocal(setenum);
+
+	/*Gather from all cpus: */
+	ISSM_MPI_Allreduce ((void*)&numdofs,(void*)&allnumdofs,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
+	return allnumdofs;
+}
+/*}}}*/
+int   Nodes::NumberOfDofsLocal(int setenum){/*{{{*/
+
+	int   numdofs=0;
+
+	/*Now go through all nodes, and get how many dofs they own, unless they are clone nodes: */
+	for(Object* & object : this->objects){
+		Node* node = xDynamicCast<Node*>(object);
+
+		/*Ok, this object is a node, ask it to plug values into partition: */
+		if (!node->IsClone()){
+			numdofs+=node->GetNumberOfDofs(NoneApproximationEnum,setenum);
+		}
+	}
+
+	return numdofs;
+}
+/*}}}*/
+int   Nodes::NumberOfDofsLocalAll(int setenum){/*{{{*/
+
+	/*go through all nodes, and get how many dofs they own, unless they are clone nodes: */
+	int numdofs=0;
+	for(Object* & object : this->objects){
+		Node* node = xDynamicCast<Node*>(object);
+		numdofs+=node->GetNumberOfDofs(NoneApproximationEnum,setenum);
+	}
+	return numdofs;
+}
+/*}}}*/
+int   Nodes::NumberOfNodes(void){/*{{{*/
+
+	return this->numberofnodes;
+}
+/*}}}*/
+int   Nodes::NumberOfNodesLocal(void){/*{{{*/
+
+	return this->numberofmasters_local;
+}
+/*}}}*/
+int   Nodes::NumberOfNodesLocalAll(void){/*{{{*/
+
+	return this->numberofnodes_local;
+}
+/*}}}*/
+bool  Nodes::RequiresDofReindexing(void){/*{{{*/
+
+	int flag = 0;
+	int allflag;
+
+	/*Now go through all nodes, and get how many dofs they own, unless they are clone nodes: */
+	for(Object* & object : this->objects){
+		Node* node = xDynamicCast<Node*>(object);
+		if(node->RequiresDofReindexing()){
+			flag = 1;
+			break;
+		}
+	}
+
+	/*Grab max of all cpus: */
+	ISSM_MPI_Allreduce((void*)&flag,(void*)&allflag,1,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
+
+	if(allflag) return true;
+	else        return false;
+}
+/*}}}*/
+
+void  Nodes::CheckDofListAcrossPartitions(void){/*{{{*/
+
+	/*recover my_rank:*/
+	ISSM_MPI_Status status;
+	int my_rank   = IssmComm::GetRank();
+	int num_procs = IssmComm::GetSize();
+
+	/*Display message*/
+	if(VerboseModule()) _printf0_("   Checking degrees of freedom across partitions\n");
+
+	/*Allocate vector to check degrees of freedom*/
+	int gsize      = this->NumberOfDofs(GsetEnum);
+	int glocalsize = this->NumberOfDofsLocal(GsetEnum);
+	Vector<IssmDouble>* dofs_check=new Vector<IssmDouble>(glocalsize,gsize);
+
+	/*First, go over all nodes, and masters can write their f dof and -1 for s-set*/
+	for(Object* & object : this->objects){
+		Node* node = xDynamicCast<Node*>(object);
+
+		/*Skip if clone (will check later)*/
+		if(node->IsClone()) continue;
+
+		/*Write degree of freedom if active*/
+		int count = 0;
+		for(int j=0;j<node->gsize;j++){
+			if(node->f_set[j]){
+				if(node->s_set[j]) _error_("a degree of freedom is both in f and s set!");
+				dofs_check->SetValue(node->gdoflist[j],reCast<IssmDouble>(node->fdoflist[count]),INS_VAL);
+				count++;
+			}
+			else{
+				if(node->s_set[j]==0) _error_("a degree of freedom is neither in f nor in s set!");
+				dofs_check->SetValue(node->gdoflist[j],-1.,INS_VAL);
+			}
+		}
+	}
+	dofs_check->Assemble();
+
+	/*Get local vector with both masters and slaves:*/
+	IssmDouble *local_dofs_check = NULL;
+	this->GetLocalVectorWithClonesGset(&local_dofs_check,dofs_check);
+	delete dofs_check;
+
+	/*Second, go over all nodes, and check that we still have what's expected...*/
+	for(Object* & object : this->objects){
+		Node* node = xDynamicCast<Node*>(object);
+
+		/*Write degree of freedom if active*/
+		int countg = 0;
+		int countf = 0;
+		int counts = 0;
+		for(int j=0;j<node->gsize;j++){
+			int index = node->gdoflist_local[countg];
+			if(node->f_set[j]){
+				if(reCast<int>(local_dofs_check[index]) != node->fdoflist[countf]){
+					_error_("Dof #"<<j<<" of node sid "<<node->Sid()<<" not consistent: "<<local_dofs_check[index]<<"!="<<node->fdoflist[countf]);
+				}
+				countf++;
+			}
+			else{
+				if(local_dofs_check[index] != -1.){
+					_error_("Dof #"<<j<<" of node sid "<<node->Sid()<<" not consistently in s set");
+				}
+				counts++;
+			}
+			countg++;
+		}
+	}
+
+	/*cleanup and return*/
+	xDelete<IssmDouble>(local_dofs_check);
+}/*}}}*/
+void  Nodes::GetLocalVectorWithClonesGset(IssmDouble** plocal_ug,Vector<IssmDouble> *ug){/*{{{*/
+
+	/*recover my_rank:*/
+	ISSM_MPI_Status status;
+	int my_rank   = IssmComm::GetRank();
+	int num_procs = IssmComm::GetSize();
+
+	/*retrieve node info*/
+	int glocalsize         = this->NumberOfDofsLocalAll(GsetEnum);
+	int glocalsize_masters = this->NumberOfDofsLocal(GsetEnum);
+	int maxdofspernode     = this->MaxNumDofs(GsetEnum);
+
+	/*Get local vector of ug*/
+	int        *indices_ug_masters = NULL;
+	IssmDouble *local_ug_masters   = NULL;
+	ug->GetLocalVector(&local_ug_masters,&indices_ug_masters);
+	_assert_(glocalsize_masters==indices_ug_masters[glocalsize_masters-1] - indices_ug_masters[0]+1);
+	xDelete<int>(indices_ug_masters);
+
+	/*Now, extend vectors to account for clones (make vectors longer, for clones at the end)*/
+	IssmDouble *local_ug  = xNew<IssmDouble>(glocalsize);
+	xMemCpy<IssmDouble>(local_ug,local_ug_masters,glocalsize_masters);
+	xDelete<IssmDouble>(local_ug_masters);
+
+	/*Now send and receive ug for nodes on partition edge*/
+	IssmDouble **send_buffers = xNewZeroInit<IssmDouble*>(num_procs);
+	IssmDouble  *recv_buffer  = xNewZeroInit<IssmDouble>(this->Size()*maxdofspernode,"t");
+	ISSM_MPI_Request  *send_requests = xNew<ISSM_MPI_Request>(num_procs);
+	for (int rank = 0;rank<num_procs;rank++) send_requests[rank] = ISSM_MPI_REQUEST_NULL;
+
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->common_send[rank]){
+			int  numids = this->common_send[rank];
+			send_buffers[rank] = xNew<IssmDouble>(numids*maxdofspernode,"t"); //"t" is required by adolc
+			for(int i=0;i<numids;i++){
+				int   master_lid = this->common_send_ids[rank][i];
+				Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(master_lid));
+				_assert_(!node->IsClone());
+				for(int j=0;j<node->gsize;j++) send_buffers[rank][i*maxdofspernode+j]=local_ug[node->gdoflist_local[j]];
+			}
+			ISSM_MPI_Isend(send_buffers[rank],numids*maxdofspernode,ISSM_MPI_DOUBLE,rank,0,IssmComm::GetComm(),&send_requests[rank]);
+		}
+	}
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->common_recv[rank]){
+			int  numids = this->common_recv[rank];
+			ISSM_MPI_Recv(recv_buffer,numids*maxdofspernode,ISSM_MPI_DOUBLE,rank,0,IssmComm::GetComm(),&status);
+			for(int i=0;i<numids;i++){
+				int   master_lid = this->common_recv_ids[rank][i];
+				Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(master_lid));
+				for(int j=0;j<node->gsize;j++) local_ug[node->gdoflist_local[j]] = recv_buffer[i*maxdofspernode+j];
+			}
+		}
+	}
+
+	xDelete<IssmDouble>(recv_buffer);
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->common_send[rank]) ISSM_MPI_Wait(&send_requests[rank],&status);
+		xDelete<IssmDouble>(send_buffers[rank]);
+	}
+	xDelete<IssmDouble*>(send_buffers);
+	xDelete<ISSM_MPI_Request>(send_requests);
+
+	/*Assign output pointer*/
+	*plocal_ug = local_ug;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Nodes.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Nodes.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Nodes.h	(revision 27955)
@@ -0,0 +1,55 @@
+#ifndef _CONTAINER_NODES_H_
+#define  _CONTAINER_NODES_H_
+
+#include "../datastructures/datastructures.h"
+#include "../toolkits/toolkits.h"
+class Parameters;
+class Elements;
+class Vertices;
+class Loads;
+class Nodes;
+class Materials;
+class MarshallHandle;
+
+/*!\brief Declaration of Nodes class.
+ *
+ * Declaration of Nodes class.  Nodes are vector lists of objects (Containers) of Node objects.
+ * Node objects are the degrees of freedom (DOFs) for a particular analysis type (not to be 
+ * confused with a vertex, which defines the (x,y,z) location of a point).
+ */ 
+class Nodes: public DataSet{
+
+	private:
+		int numberofnodes;
+		int numberofnodes_local;
+		int numberofmasters_local;
+	public:
+		int*  common_recv;
+		int** common_recv_ids;
+		int*  common_send;
+		int** common_send_ids;
+
+		/*constructors, destructors*/
+		Nodes();
+		~Nodes();
+
+		/*Objects virtual functions*/
+		Nodes* Copy();
+		void   Marshall(MarshallHandle* marshallhandle);
+
+		/*numerics*/
+		void  DistributeDofs(int SETENUM);
+		void  Finalize(void);
+		int   MaxNumDofs(int setenum);
+		int   NumberOfDofs(int setenum);
+		int   NumberOfDofsLocal(int setenum);
+		int   NumberOfDofsLocalAll(int setenum);
+		int   NumberOfNodes(void);
+		int   NumberOfNodesLocal(void);
+		int   NumberOfNodesLocalAll(void);
+		bool  RequiresDofReindexing(void);
+		void  CheckDofListAcrossPartitions(void);
+		void  GetLocalVectorWithClonesGset(IssmDouble** plocal_vector,Vector<IssmDouble> *vector);
+};
+
+#endif //ifndef _NODES_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Numberedcostfunction.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Numberedcostfunction.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Numberedcostfunction.cpp	(revision 27955)
@@ -0,0 +1,162 @@
+/*!\file Numberedcostfunction.cpp
+ * \brief: implementation for the Numberedcostfunction object
+ */
+/*Include files: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Headers:*/
+//#include "./Definition.h"
+//#include "../datastructures/datastructures.h"
+#include "./classes.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "./ExternalResults/ExternalResult.h"
+#include "./ExternalResults/Results.h"
+#include "../modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.h"
+#include "../modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.h"
+#include "../modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.h"
+#include "../modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.h"
+#include "../modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.h"
+#include "../modules/ThicknessAlongGradientx/ThicknessAlongGradientx.h"
+#include "../modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.h"
+#include "../modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.h"
+#include "../modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.h"
+
+/*}}}*/
+
+/*Numberedcostfunction constructors, destructors :*/
+Numberedcostfunction::Numberedcostfunction(){/*{{{*/
+
+	this->definitionenum = -1;
+	this->name = NULL;
+	this->number_cost_functions = -1;
+	this->cost_functions_list = NULL;
+
+}
+/*}}}*/
+Numberedcostfunction::Numberedcostfunction(char* in_name, int in_definitionenum,int number_cost_functions_in,int* cost_functions_list_in){/*{{{*/
+	_assert_(number_cost_functions_in>0); 
+	_assert_(cost_functions_list_in); 
+
+	this->definitionenum=in_definitionenum;
+	this->name   = xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->number_cost_functions = number_cost_functions_in;
+	this->cost_functions_list = xNew<int>(number_cost_functions_in);
+
+	for(int i=0;i<number_cost_functions_in;i++){
+		this->cost_functions_list[i] = cost_functions_list_in[i];
+	}
+}
+/*}}}*/
+Numberedcostfunction::~Numberedcostfunction(){/*{{{*/
+	xDelete<int>(this->cost_functions_list);
+	if(this->name)xDelete(this->name);
+}
+/*}}}*/
+
+/*Object virtual function resolutoin: */
+Object* Numberedcostfunction::copy() {/*{{{*/
+	Numberedcostfunction* out = new Numberedcostfunction(this->name,this->definitionenum,this->number_cost_functions,this->cost_functions_list);
+	return (Object*)out;
+}
+/*}}}*/
+void Numberedcostfunction::DeepEcho(void){/*{{{*/
+	this->Echo();
+}
+/*}}}*/
+void Numberedcostfunction::Echo(void){/*{{{*/
+	_printf_(" Numberedcostfunction: " << this->name << " " << this->definitionenum << "\n");
+	_printf_("    number_cost_functions: "<<this->number_cost_functions<<"\n");
+	_printf_("    ");
+	for(int i=0;i<this->number_cost_functions;i++){
+		_printf_(this->cost_functions_list[i]<< "  ");
+	}
+	_printf_("\n");
+}
+/*}}}*/
+int Numberedcostfunction::Id(void){/*{{{*/
+	return -1;
+}
+/*}}}*/
+void Numberedcostfunction::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+	_error_("not implemented yet!"); 
+} 
+/*}}}*/
+int Numberedcostfunction::ObjectEnum(void){/*{{{*/
+	return NumberedcostfunctionEnum;
+}
+/*}}}*/
+
+/*Definition virtual function resolutoin: */
+int Numberedcostfunction::DefinitionEnum(){/*{{{*/
+	return this->definitionenum;
+}
+/*}}}*/
+char* Numberedcostfunction::Name(){/*{{{*/
+
+	char* name2=xNew<char>(strlen(this->name)+1);
+	xMemCpy(name2,this->name,strlen(this->name)+1);
+
+	return name2;
+}
+/*}}}*/
+IssmDouble Numberedcostfunction::Response(FemModel* femmodel){/*{{{*/
+
+	 _assert_(number_cost_functions>0 && number_cost_functions<1e3); 
+
+	 /*output:*/
+	 IssmDouble value;
+	 IssmDouble value_sum = 0.;
+
+		/*Scalar control output*/
+	 for(int i=0;i<this->number_cost_functions;i++){
+		 switch(this->cost_functions_list[i]){
+			 case SurfaceAbsVelMisfitEnum:
+				 SurfaceAbsVelMisfitx(&value,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);        
+				 break;
+			 case SurfaceRelVelMisfitEnum:            
+				 SurfaceRelVelMisfitx(&value, femmodel->elements,femmodel->nodes,femmodel-> vertices,femmodel-> loads,femmodel-> materials,femmodel->parameters); 
+				 break;
+			 case SurfaceLogVelMisfitEnum:            
+				 SurfaceLogVelMisfitx(&value,femmodel-> elements,femmodel->nodes,femmodel-> vertices,femmodel-> loads,femmodel-> materials,femmodel->parameters); 
+				 break;
+			 case SurfaceLogVxVyMisfitEnum:           
+				 SurfaceLogVxVyMisfitx(&value,femmodel-> elements,femmodel->nodes,femmodel-> vertices,femmodel-> loads,femmodel-> materials,femmodel->parameters); 
+				 break;
+			 case ThicknessAbsMisfitEnum:             
+				 ThicknessAbsMisfitx(&value,femmodel-> elements,femmodel->nodes,femmodel-> vertices,femmodel-> loads,femmodel-> materials,femmodel-> parameters); 
+				 break;
+			 case ThicknessAbsGradientEnum:             
+				 femmodel->ThicknessAbsGradientx(&value);
+				 break;
+			 case ThicknessAlongGradientEnum:         
+				 ThicknessAlongGradientx(&value,femmodel-> elements,femmodel->nodes,femmodel-> vertices,femmodel-> loads,femmodel-> materials,femmodel-> parameters); 
+				 break;
+			 case ThicknessAcrossGradientEnum:        
+				 ThicknessAcrossGradientx(&value,femmodel-> elements,femmodel->nodes,femmodel-> vertices,femmodel-> loads,femmodel-> materials,femmodel-> parameters); 
+				 break;
+			 case RheologyBbarAbsGradientEnum:        
+				 RheologyBbarAbsGradientx(&value,femmodel-> elements,femmodel->nodes,femmodel-> vertices,femmodel-> loads,femmodel-> materials,femmodel-> parameters); 
+				 break;
+			 case DragCoefficientAbsGradientEnum:     
+				 DragCoefficientAbsGradientx(&value,femmodel-> elements,femmodel->nodes,femmodel-> vertices,femmodel-> loads,femmodel-> materials,femmodel-> parameters); 
+				 break;
+			 default:
+				 _error_(EnumToStringx(this->cost_functions_list[i])<<" not supported");
+		 }
+		 _printf0_("#"<<i+1<<": "<<value<<" ");
+		 value_sum += value;
+ }
+	 _printf0_("\n");
+
+	 /*done:*/
+	return value_sum;
+ }
+ /*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Numberedcostfunction.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Numberedcostfunction.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Numberedcostfunction.h	(revision 27955)
@@ -0,0 +1,42 @@
+/*!\file Numberedcostfunction.h
+ * \brief: header file for Numberedcostfunction object
+ */
+
+#ifndef _NUMBEREDCOSTFUNCTION_H_
+#define _NUMBEREDCOSTFUNCTION_H_
+
+/*Headers:*/
+#include "./Definition.h"
+#include "./FemModel.h"
+
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum);
+
+class Numberedcostfunction: public Object, public Definition{
+
+	public: 
+
+		int   definitionenum;
+		char* name;
+		int   number_cost_functions;
+		int*  cost_functions_list;
+
+		/*Numberedcostfunction constructors, destructors :*/
+		Numberedcostfunction();
+		Numberedcostfunction(char* in_name, int in_definitionenum,int number_cost_functions_in,int* cost_functions_list_in);
+		~Numberedcostfunction();
+
+		/*Object virtual function resolutoin: */
+		Object*	copy();
+		void		DeepEcho(void);
+		void		Echo(void);
+		int		Id(void);
+		void		Marshall(MarshallHandle* marshallhandle);
+		int		ObjectEnum(void);
+
+		/*Definition virtual function resolutoin: */
+		int		DefinitionEnum();
+		char*		Name();
+		IssmDouble Response(FemModel* femmodel);
+};
+
+#endif  /* _NUMBEREDCOSTFUNCTION_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Options/GenericOption.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Options/GenericOption.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Options/GenericOption.h	(revision 27955)
@@ -0,0 +1,114 @@
+/*! \file GenericOption.h 
+ *  \brief: header file for generic option object
+ */
+
+#ifndef _GENERIC_OPTION_
+#define _GENERIC_OPTION_
+
+/*Headers:{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <cstring>
+#include "../../shared/shared.h"
+#include "../../datastructures/datastructures.h"
+#include "./OptionUtilities.h"
+/*}}}*/
+
+template <class OptionType> 
+class GenericOption: public Option {
+
+	public:
+		char       *name;
+		OptionType  value;
+		int         size[2];
+
+		/*GenericOption constructors, destructors*/
+		GenericOption(){ /*{{{*/
+			name = NULL;
+			size[0] = 0;
+			size[1] = 0;
+		} /*}}}*/
+		~GenericOption(){ /*{{{*/
+			if(name) xDelete<char>(name);
+		} /*}}}*/
+
+		/*Object virtual functions definitions:*/
+		Object* copy(){/*{{{*/
+			_error_("Not implemented yet");
+		};/*}}}*/
+		void DeepEcho(){ /*{{{*/
+			char  indent[81]="";
+			this->DeepEcho(indent);
+		} /*}}}*/
+		void DeepEcho(char* indent){ /*{{{*/
+
+			char  cstr[81];
+
+			_printf_(indent << "          name: \"" << name << "\"\n");
+			_printf_(indent << "          size: " << size[0] <<"x"<<size[1]<< "\n");
+			_printf_(indent << "         value: " << value << "\n");
+		} /*}}}*/
+		void Echo(){ /*{{{*/
+			this->DeepEcho();
+		} /*}}}*/
+		int  Id(){/*{{{*/
+			_error_("Not implemented yet");
+		};/*}}}*/
+		int  ObjectEnum(){/*{{{*/
+			return GenericOptionEnum;
+		};/*}}}*/
+
+		/*GenericOption functions: */
+		void  Get(OptionType* pvalue){/*{{{*/
+			*pvalue=value; 
+		};/*}}}*/
+		char* Name(){/*{{{*/
+			return name;
+		};/*}}}*/
+};
+
+#if defined(_HAVE_AD_) && !defined(_WRAPPERS_) 
+/*We hook off this specific specialization when not running ADOLC, otherwise we get a redeclaration with the next specialization*/
+template <> inline void GenericOption<IssmPDouble*>::Get(IssmPDouble** pvalue){ /*{{{*/
+
+	/*Copy vector*/
+	int numel = this->size[0]*this->size[1];
+	IssmPDouble* outvalue=xNew<IssmPDouble>(numel);
+	for(int i=0;i<numel;i++) outvalue[i]=this->value[i];
+
+	/*Assign output pointer*/
+	*pvalue=outvalue;
+} /*}}}*/
+#endif
+template <> inline void GenericOption<IssmDouble*>::Get(IssmDouble** pvalue){ /*{{{*/
+
+	/*Copy vector*/
+	int numel = this->size[0]*this->size[1];
+	IssmDouble* outvalue=xNew<IssmDouble>(numel);
+	for(int i=0;i<numel;i++) outvalue[i]=this->value[i];
+
+	/*Assign output pointer*/
+	*pvalue=outvalue;
+} /*}}}*/
+template <> inline void GenericOption<char*>::Get(char** pvalue){ /*{{{*/
+
+	int   stringsize=strlen(this->value)+1;
+	char* outstring=xNew<char>(stringsize);
+	xMemCpy<char>(outstring,this->value,stringsize);
+
+	*pvalue=outstring;
+} 
+/*}}}*/
+
+/*Special destructors when there is a pointer*/
+template <> inline GenericOption<char*>::~GenericOption(){ /*{{{*/
+	if(name)  xDelete<char>(name);
+	if(value) xDelete<char>(value);
+} 
+/*}}}*/
+
+#endif  /* _OPTIONOBJECT_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Options/Option.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Options/Option.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Options/Option.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file Option.h 
+ *  \brief: header file for option abstract object
+ */
+
+#ifndef _OPTIONOBJECT_H_
+#define _OPTIONOBJECT_H_
+
+/*Headers:{{{*/
+#include "../../shared/shared.h"
+#include "../../datastructures/datastructures.h"
+/*}}}*/
+
+class Option: public Object {
+
+	public:
+
+		/*Option constructors, destructors*/
+		Option(){};
+		~Option(){};
+
+		/*Object virtual functions definitions*/
+		Object       *copy(){_error_("Not implemented yet"); };
+		virtual void  DeepEcho()= 0;
+		virtual void  DeepEcho(char  *indent)=0;
+		virtual void  Echo()= 0;
+		int           Id(){_error_("Not implemented yet"); };
+		void          Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!"); };
+		int           ObjectEnum(){return OptionEnum;};
+
+		/*virtual functions: */
+		virtual char* Name()=0;
+
+};
+#endif  /* _OPTIONOBJECT_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Options/OptionUtilities.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Options/OptionUtilities.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Options/OptionUtilities.cpp	(revision 27955)
@@ -0,0 +1,24 @@
+/*!\file OptionUtilities.cpp
+ * \brief: implementation of the options utilities
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+int StringFromSize(char* cstr, int* size, int ndims) {/*{{{*/
+
+	sprintf(&cstr[0],"[");
+	for(int i=0; i<ndims-1; i++) sprintf(&cstr[strlen(cstr)],"%dx",size[i]);
+	sprintf(&cstr[strlen(cstr)],"%d]",size[ndims-1]);
+
+	return(0);
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Options/OptionUtilities.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Options/OptionUtilities.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Options/OptionUtilities.h	(revision 27955)
@@ -0,0 +1,17 @@
+/*! \file OptionUtilities.h 
+ *  \brief: header file for option object utilities
+ */
+
+#ifndef _OPTIONUTILITIES_H_
+#define _OPTIONUTILITIES_H_
+
+/*Headers:{{{*/
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/Enum/Enum.h"
+
+#include "./Option.h"
+/*}}}*/
+
+int StringFromSize(char* cstr, int* size, int ndims);
+
+#endif  /* _OPTIONUTILITIES_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Options/Options.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Options/Options.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Options/Options.cpp	(revision 27955)
@@ -0,0 +1,104 @@
+/*
+ * \file Options.cpp
+ * \brief: Implementation of Options class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <vector>
+#include <algorithm>
+#include <cstring>
+
+#include "./Options.h"
+#include "../../datastructures/datastructures.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*Object constructors and destructor*/
+Options::Options(){/*{{{*/
+	return;
+}
+/*}}}*/
+Options::~Options(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object management*/
+int  Options::AddOption(Option* in_option){/*{{{*/
+
+	char* name=NULL;
+
+	vector<Object*>::iterator object;
+	Option* option=NULL;
+
+	/*In debugging mode, check that the option is not a NULL pointer*/
+	_assert_(in_option);
+
+	/*Also, check the option name*/
+	name=in_option->Name();
+
+	if(!name) _error_("input option has an empty name");
+	if(strchr(name,'.')) _error_("Option \"" << name << "\" has a protected character \".\"");
+	if(strchr(name,'[')) _error_("Option \"" << name << "\" has a protected character \"[\"");
+	if(strchr(name,']')) _error_("Option \"" << name << "\" has a protected character \"]\"");
+
+	/*Finally, check that no option of the same name already exists in the dataset*/
+	for(object=objects.begin();object<objects.end();object++){
+
+		option=xDynamicCast<Option*>(*object);
+		if (!strcmp(option->Name(),name)){
+			_error_("Options \"" << name << "\" found multiple times");
+			break;
+		}
+	}
+
+	/*OK, all checks went well, add option to dataset*/
+	this->AddObject(in_option);
+
+	return 1;
+}
+/*}}}*/
+Option* Options::GetOption(const char* name){/*{{{*/
+
+	vector<Object*>::iterator object;
+	Option* option=NULL;
+
+	/*Go through options and find option: */
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		option=xDynamicCast<Option*>(*object);
+		//option=(Option*)(*object); //C-like cast
+		/*There is a crash on some machines (Einar Olason) that needs to be fixed*/
+		if(!option){
+			_printf_("The dynamic_cast from Object* to Option* is failing.\n");
+			_printf_("\n");
+			_printf_("A quick workaround consists of using a C-like cast\n");
+			_printf_("\n");
+			_printf_("Open Options.cpp and change the dynamic_cast in Options::GetOption by a C-like cast\n");
+			//_printf_("Open Options.h and replace the dynamic_cast of all the Get functions to C-like cats\n");
+			_printf_("\n");
+			_error_("Make the fix above and recompile ISSM");
+		}
+
+		if (!strncmp(name,option->Name(),strlen(option->Name()))){
+
+			/*OK, now do we have a complete name? If not, it is a cell or a structure, we need to go further*/
+			if(!strcmp(name,option->Name())){
+				return option;
+			}
+			else{
+				_error_("Cannot recover field \"" << name << "\" for an option of type " << EnumToStringx(option->ObjectEnum()));
+			}
+		}
+	}
+
+	/*Option not found return NULL pointer*/
+	return NULL;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Options/Options.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Options/Options.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Options/Options.h	(revision 27955)
@@ -0,0 +1,73 @@
+#ifndef _CONTAINER_OPTIONS_H_
+#define _CONTAINER_OPTIONS_H_
+
+/*forward declarations */
+class Option;
+#include "../../datastructures/datastructures.h"
+#include "./GenericOption.h"
+
+class Options: public DataSet{
+
+	public:
+
+		/*constructors, destructors*/
+		Options();
+		~Options();
+
+		/*numerics*/
+		int     AddOption(Option* in_oobject);
+		Option* GetOption(const char* name);
+
+		template <class OptionType> void Get(OptionType* pvalue,const char* name){ /*{{{*/
+
+			/*Get option*/
+			GenericOption<OptionType>* genericoption=xDynamicCast<GenericOption<OptionType>*>(GetOption(name));
+
+			/*If the pointer is not NULL, the option has been found*/
+			if(genericoption){
+				genericoption->Get(pvalue);
+			}
+			/*Else, the Option does not exist, no default provided*/
+			else{
+				_error_("option of name \"" << name << "\" not found, and no default value has been provided");
+			}
+		}
+		/*}}}*/
+		template <class OptionType> void Get(OptionType* pvalue,const char* name,OptionType default_value){ /*{{{*/
+
+			/*Get option*/
+			GenericOption<OptionType>* genericoption=xDynamicCast<GenericOption<OptionType>*>(GetOption(name));
+
+			/*If the pointer is not NULL, the option has been found*/
+			if(genericoption){
+				genericoption->Get(pvalue);
+			}
+			else{
+				if(GetOption(name)) _printf_("WARNING: option "<<name<<" found but fetched format not consistent, defaulting...\n");
+				*pvalue=default_value;
+			}
+		}
+		/*}}}*/
+
+};
+
+#endif //ifndef _INPUTS_H_
+
+template <> inline void Options::Get(char** pvalue,const char* name,char* default_value){ /*{{{*/
+
+	/*Get option*/
+	GenericOption<char*>* genericoption=xDynamicCast<GenericOption<char*>*>(GetOption(name));
+
+	/*If the pointer is not NULL, the option has been found*/
+	if(genericoption){
+		genericoption->Get(pvalue);
+	}
+	else{
+		/*Make a copy*/
+		int   stringsize=strlen(default_value)+1;
+		char* outstring=xNew<char>(stringsize);
+		xMemCpy<char>(outstring,default_value,stringsize);
+		*pvalue=outstring;
+	}
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/BoolParam.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/BoolParam.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/BoolParam.cpp	(revision 27955)
@@ -0,0 +1,63 @@
+/*!\file BoolParam.c
+ * \brief: implementation of the BoolParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+/*BoolParam constructors and destructor*/
+BoolParam::BoolParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+BoolParam::BoolParam(int in_enum_type,bool in_value){/*{{{*/
+
+	enum_type=in_enum_type;
+	value=in_value;
+}
+/*}}}*/
+BoolParam::~BoolParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* BoolParam::copy() {/*{{{*/
+
+	return new BoolParam(this->enum_type,this->value);
+
+}
+/*}}}*/
+void BoolParam::DeepEcho(void){/*{{{*/
+	_printf_(setw(22)<<"   BoolParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" "<<(value?"true":"false")<<"\n");
+}
+/*}}}*/
+void BoolParam::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int    BoolParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void BoolParam::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = BoolParamEnum;
+	marshallhandle->call(object_enum);
+	marshallhandle->call(this->enum_type);
+	marshallhandle->call(this->value);
+
+}/*}}}*/
+int BoolParam::ObjectEnum(void){/*{{{*/
+
+	return BoolParamEnum;
+
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/BoolParam.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/BoolParam.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/BoolParam.h	(revision 27955)
@@ -0,0 +1,77 @@
+/*! \file BoolParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _BOOLPARAM_H_
+#define _BOOLPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class BoolParam: public Param{
+
+	public:
+		/*just hold 3 values for 3 vertices: */
+		int enum_type;
+		bool value;
+
+		/*BoolParam constructors, destructors: {{{*/
+		BoolParam();
+		BoolParam(int enum_type,bool value);
+		~BoolParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(MarshallHandle* marshallhandle);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){*pbool=value;}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, const char* data){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){this->value=boolean;}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an int");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmPDouble");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(int* pintarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		void  SetGradient(IssmDouble* poutput, int M, int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmDouble");};
+		/*}}}*/
+};
+#endif  /* _BOOLPARAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/ControlParam.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/ControlParam.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/ControlParam.cpp	(revision 27955)
@@ -0,0 +1,252 @@
+/*!\file ControlParam.c
+ * \brief: implementation of the ControlParam object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+
+/*ControlParam constructors and destructor*/
+ControlParam::ControlParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+ControlParam::ControlParam(IssmDouble* in_value, IssmDouble* in_minvalue, IssmDouble* in_maxvalue, int in_enum_type, int in_M,int in_N){/*{{{*/
+
+	this->enum_type=in_enum_type;
+	this->M=in_M;
+	this->N=in_N;
+
+	/*Sanity check, can't hurt*/
+	if(this->N<1) _error_("Parameter is empty");
+	if(this->M<1) _error_("Parameter is empty");
+	if(this->M>2) _error_("Cannot handle more than 2 rows (as a TransientParam)");
+
+	/*Assign value*/
+	this->value=xNew<IssmDouble>(M*N);
+	xMemCpy<IssmDouble>(value,in_value,M*N);
+
+	/*Assign other fields*/
+	this->minvalue=xNew<IssmDouble>(N);
+	xMemCpy<IssmDouble>(minvalue,in_minvalue,N);
+	this->maxvalue=xNew<IssmDouble>(N);
+	xMemCpy<IssmDouble>(maxvalue,in_maxvalue,N);
+	this->gradient=xNewZeroInit<IssmDouble>(N);
+}
+/*}}}*/
+ControlParam::~ControlParam(){/*{{{*/
+	xDelete<IssmDouble>(value);
+	xDelete<IssmDouble>(minvalue);
+	xDelete<IssmDouble>(maxvalue);
+	xDelete<IssmDouble>(gradient);
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* ControlParam::copy() {/*{{{*/
+
+	ControlParam* output = new ControlParam();
+	output->enum_type=this->enum_type;
+	output->M=this->M;
+	output->N=this->N;
+	if(value){
+		output->value=xNew<IssmDouble>(this->M*this->N);
+		xMemCpy<IssmDouble>(output->value,this->value,this->M*this->N);
+	}
+	if(minvalue){
+		output->minvalue=xNew<IssmDouble>(this->N);
+		xMemCpy<IssmDouble>(output->minvalue,this->minvalue,this->N);
+	}
+	if(maxvalue){
+		output->maxvalue=xNew<IssmDouble>(this->N);
+		xMemCpy<IssmDouble>(output->maxvalue,this->maxvalue,this->N);
+	}
+	if(gradient){
+		output->gradient=xNew<IssmDouble>(this->N);
+		xMemCpy<IssmDouble>(output->gradient,this->gradient,this->N);
+	}
+	return output;
+
+}
+/*}}}*/
+void ControlParam::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(22)<<"   ControlParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<"\n ");
+	if (value) _printf_("---value: ");
+	for(int i=0;i<this->M;i++) _printf_(" "<< this->value[i]);
+	_printf_("]\n");
+	if (minvalue) _printf_("---minvalue: ");
+	for(int i=0;i<this->M;i++) _printf_(" "<< this->minvalue[i]);
+	_printf_("]\n");
+	if (maxvalue) _printf_("---maxvalue: ");
+	for(int i=0;i<this->M;i++) _printf_(" "<< this->maxvalue[i]);
+	_printf_("]\n");
+	if (gradient) _printf_("---gradient: " << this->gradient << "\n");
+}
+/*}}}*/
+void ControlParam::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  ControlParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void ControlParam::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = ControlParamEnum;
+   marshallhandle->call(object_enum);
+	marshallhandle->call(this->enum_type);
+	marshallhandle->call(this->M);
+	marshallhandle->call(this->N);
+	marshallhandle->call(this->value,this->M*this->N);
+	marshallhandle->call(this->minvalue,this->N);
+	marshallhandle->call(this->maxvalue,this->N);
+	marshallhandle->call(this->gradient,this->N);
+
+}
+/*}}}*/
+int  ControlParam::ObjectEnum(void){/*{{{*/
+
+	return ControlParamEnum;
+
+}
+/*}}}*/
+
+void  ControlParam::GetParameterValue(IssmDouble** poutput,int* pN, const char* data){/*{{{*/
+
+	IssmDouble* output=xNew<IssmDouble>(N);
+	
+	if(strcmp(data,"value")==0){
+		xMemCpy<IssmDouble>(output,value,N);
+	}
+	else if (strcmp(data,"lowerbound")==0){
+		xMemCpy<IssmDouble>(output,minvalue,N);
+	}
+	else if (strcmp(data,"upperbound")==0){
+		xMemCpy<IssmDouble>(output,maxvalue,N);
+	}
+	else if (strcmp(data,"gradient")==0){
+		xMemCpy<IssmDouble>(output,gradient,N);
+	}
+	else{
+		_error_("Data " << data << " not supported yet");
+	}
+	
+	/*Assign output pointers:*/
+	if(pN) *pN=N;
+	*poutput=output;
+}
+/*}}}*/
+void  ControlParam::GetParameterValue(IssmDouble* poutput){/*{{{*/
+
+	/*Copy entire vector if M==1, or first row if M==2*/
+	if(M==1){
+		xMemCpy<IssmDouble>(poutput,value,N);
+		return;
+	}
+
+	_error_("STOP");
+
+}
+/*}}}*/
+void  ControlParam::GetParameterValue(IssmDouble* poutput, IssmDouble time){/*{{{*/
+
+	if(M==1){
+		*poutput = value[0];
+		return;
+	}
+
+	IssmDouble *timesteps = &this->value[1*this->N+0];
+	IssmDouble output;
+	bool       found;
+
+	/*Ok, we have the time, go through the timesteps, and figure out which interval we 
+	 *fall within. Then interpolate the values on this interval: */
+	if(time<timesteps[0]){
+		/*get values for the first time: */
+		output=this->value[0];
+		found=true;
+	}
+	else if(time>timesteps[this->N-1]){
+		/*get values for the last time: */
+		output=this->value[this->N-1];
+		found=true;
+	}
+	else{
+		/*Find which interval we fall within: */
+		for(int i=0;i<this->N;i++){
+			if(time==timesteps[i]){
+				/*We are right on one step time: */
+				output=this->value[i];
+				found=true;
+				break; //we are done with the time interpolation.
+			}
+			else{
+				if(timesteps[i]<time && time<timesteps[i+1]){
+					/*ok, we have the interval ]i:i+1[. Interpolate linearly for now: */
+					IssmDouble deltat=timesteps[i+1]-timesteps[i];
+					IssmDouble alpha=(time-timesteps[i])/deltat;
+					output=(1.0-alpha)*this->value[i] + alpha*this->value[i+1];
+					found=true;
+					break;
+				}
+				else continue; //keep looking on the next interval
+			}
+		}
+	}
+	if(!found)_error_("did not find time interval on which to interpolate values");
+	//_printf_("for time = "<<time/31536000.<<" yr, melt = "<<output*31536000.<<" m/yr\n");
+
+	*poutput=output;
+}
+/*}}}*/
+void  ControlParam::GetParameterValue(IssmDouble** poutput, int* pN){/*{{{*/
+
+	/*This method should be specific to VectorParams, only one tow required*/
+	_assert_(N>0);
+	_assert_(M==1);
+	IssmDouble* output=xNew<IssmDouble>(N);
+	xMemCpy<IssmDouble>(output,value,N);
+	
+	/*Assign output pointers:*/
+	if(pN) *pN=N;
+	*poutput=output;
+}
+/*}}}*/
+void  ControlParam::SetValue(IssmDouble* poutput,int in_M, int in_N){/*{{{*/
+
+	_assert_(in_N==this->N);
+	_assert_(in_M==1);
+	xMemCpy<IssmDouble>(this->value,poutput,in_N);
+}
+/*}}}*/
+void  ControlParam::SetGradient(IssmDouble* poutput,int in_M, int in_N){/*{{{*/
+
+	_assert_(in_M==1);
+	xMemCpy<IssmDouble>(this->gradient,poutput,in_N);
+}
+/*}}}*/
+void  ControlParam::GetVectorFromControl(Vector<IssmDouble>* vector,int control_index,int in_N,const char* data,int offset){/*{{{*/
+
+	/*Get list of ids for this element and this control*/
+	_assert_(in_N==this->N);
+	int* idlist = xNew<int>(this->N);
+	for(int i=0;i<this->N;i++) idlist[i] = offset+i;
+
+	/*Get data*/
+	IssmDouble* values = NULL;
+	GetParameterValue(&values, NULL, data);
+
+	/*Enter data in vector*/
+	vector->SetValues(this->N,idlist,values,INS_VAL);
+
+	/*Clean up*/
+	xDelete<int>(idlist);
+	xDelete<IssmDouble>(values);
+
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/ControlParam.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/ControlParam.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/ControlParam.h	(revision 27955)
@@ -0,0 +1,82 @@
+/*! \file ControlParam.h 
+ *  \brief: header file for ControlParam object
+ */
+
+#ifndef _CONTROLPARAM_H_
+#define _CONTROLPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class ControlParam: public Param{
+
+	private: 
+		IssmDouble* value;   //Can either be a VecParam or a TransientParam
+		IssmDouble* minvalue;
+		IssmDouble* maxvalue;
+		IssmDouble* gradient; 
+		int         enum_type;
+		int         M,N;
+
+	public:
+		/*ControlParam constructors, destructors: {{{*/
+		ControlParam();
+		ControlParam(IssmDouble* in_value, IssmDouble* in_minvalue, IssmDouble* in_maxvalue, int in_enum_type, int in_M, int in_N);
+		~ControlParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(MarshallHandle* marshallhandle);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param virtual functions definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix");}
+		void  GetParameterValue(IssmDouble* pIssmDouble);
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time);
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM);
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, const char* data);
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a scalar");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("not implemented");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N);
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  SetValue(int* pintarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int mat array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		void  SetGradient(IssmDouble* poutput, int M, int N);
+		void  GetVectorFromControl(Vector<IssmDouble>* vector,int control_index,int N,const char* data,int offset);
+		/*}}}*/
+};
+#endif  /* _DOUBLEPARAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DataSetParam.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DataSetParam.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DataSetParam.cpp	(revision 27955)
@@ -0,0 +1,80 @@
+/*!\file DataSetParam.c
+ * \brief: implementation of the DataSetParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+/*DataSetParam constructors and destructor*/
+DataSetParam::DataSetParam(){/*{{{*/
+	value=NULL;
+	return;
+}
+/*}}}*/
+DataSetParam::DataSetParam(int in_enum_type,DataSet* in_value){/*{{{*/
+
+	enum_type=in_enum_type;
+	value=in_value->Copy();
+}
+/*}}}*/
+DataSetParam::~DataSetParam(){/*{{{*/
+	delete value;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* DataSetParam::copy() {/*{{{*/
+
+	return new DataSetParam(this->enum_type,this->value);
+
+}
+/*}}}*/
+void DataSetParam::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(22)<<"   DataSetParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" ----- begin\n");
+	this->value->Echo();
+	_printf_(setw(22)<<"   DataSetParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" ----- end\n");
+}
+/*}}}*/
+void DataSetParam::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int    DataSetParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void DataSetParam::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD)value=new DataSet();
+
+	int object_enum=DataSetParamEnum;
+	marshallhandle->call(object_enum);
+	marshallhandle->call(this->enum_type);
+	value->Marshall(marshallhandle);
+
+}
+/*}}}*/
+int DataSetParam::ObjectEnum(void){/*{{{*/
+
+	return DataSetParamEnum;
+
+}
+/*}}}*/
+
+/*DataSetParam virtual functions definitions: */
+void DataSetParam::GetParameterValue(DataSet** pdataset){/*{{{*/
+	*pdataset=value->Copy();
+}
+/*}}}*/
+void DataSetParam::SetValue(DataSet* dataset){/*{{{*/
+	this->value=dataset;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DataSetParam.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DataSetParam.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DataSetParam.h	(revision 27955)
@@ -0,0 +1,79 @@
+/*! \file DataSetParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _DATASETPARAM_H_
+#define _DATASETPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class DataSetParam: public Param{
+
+	private: 
+		int   enum_type;
+
+	public:
+		DataSet* value;
+
+		/*DataSetParam constructors, destructors: {{{*/
+		DataSetParam();
+		DataSetParam(int enum_type,DataSet* dataset);
+		~DataSetParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(MarshallHandle* marshallhandle);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){  _error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(FILE** pfile){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a file pointer");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, const char* data){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("DataSet param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(DataSet** pdataset);
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a file pointer");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(int* pintarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(DataSet* dataset);
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("DataSet param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold an array of matrices");}
+		void  SetGradient(IssmDouble* poutput, int M, int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmDouble");};
+		/*}}}*/
+};
+#endif  /* _INTPARAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleMatArrayParam.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleMatArrayParam.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleMatArrayParam.cpp	(revision 27955)
@@ -0,0 +1,234 @@
+/*!\file DoubleMatArrayParam.c
+ * \brief: implementation of the DoubleMatArrayParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+/*DoubleMatArrayParam constructors and destructor*/
+DoubleMatArrayParam::DoubleMatArrayParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+DoubleMatArrayParam::DoubleMatArrayParam(int in_enum_type,IssmDouble** in_array, int in_M, int* in_mdim_array, int* in_ndim_array){/*{{{*/
+
+	int i;
+	IssmDouble* matrix=NULL;
+	int     m,n;
+
+	enum_type=in_enum_type;
+	M=in_M;
+	if(M){
+		array=xNew<IssmDouble*>(M);
+		mdim_array=xNew<int>(M);
+		ndim_array=xNew<int>(M);
+
+		for(i=0;i<M;i++){
+			m=in_mdim_array[i]; 
+			n=in_ndim_array[i];
+
+			mdim_array[i]=m;
+			ndim_array[i]=n;
+
+			if(m*n){
+				matrix=xNew<IssmDouble>(m*n);
+				xMemCpy<IssmDouble>(matrix,in_array[i],m*n);
+			}
+			else{
+				matrix=NULL;
+			}
+			array[i]=matrix;
+		}
+	}
+	else{
+		array=NULL;
+		mdim_array=NULL;
+		ndim_array=NULL;
+	}
+}
+/*}}}*/
+DoubleMatArrayParam::~DoubleMatArrayParam(){/*{{{*/
+
+	int i;
+	IssmDouble* matrix=NULL;
+
+	xDelete<int>(mdim_array);
+	xDelete<int>(ndim_array);
+
+	for(i=0;i<M;i++){
+		matrix=array[i];
+		xDelete<IssmDouble>(matrix);
+	}
+
+	xDelete<IssmDouble*>(array);
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* DoubleMatArrayParam::copy() {/*{{{*/
+
+	return new DoubleMatArrayParam(this->enum_type,this->array, this->M, this->mdim_array,this->ndim_array);
+
+}
+/*}}}*/
+void DoubleMatArrayParam::DeepEcho(void){/*{{{*/
+
+	int i,j,k;
+	int m,n;
+	IssmDouble* matrix=NULL;
+
+	_printf_("DoubleMatArrayParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   array size: " << this->M << "\n");
+	for(i=0;i<M;i++){
+		_printf_("   array " << i << " (" << mdim_array[i] << "x" << ndim_array[i] << "):\n");
+		matrix=array[i];
+		m=mdim_array[i];
+		n=ndim_array[i];
+
+		for(j=0;j<m;j++){
+			_printf_("   ");
+			for(k=0;k<n;k++)_printf_(*(matrix+n*j+k) << " ");
+			_printf_("\n");
+		}
+	}
+}
+/*}}}*/
+void DoubleMatArrayParam::Echo(void){/*{{{*/
+
+	_printf_("DoubleMatArrayParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   array size: " << this->M << "\n");
+	_printf_("   array pointer: " << this->array << "\n");
+
+}
+/*}}}*/
+int    DoubleMatArrayParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void DoubleMatArrayParam::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = DoubleMatArrayParamEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->enum_type);
+	marshallhandle->call(this->M);
+	if(M){
+		marshallhandle->call(this->mdim_array,M);
+		marshallhandle->call(this->ndim_array,M);
+		if(marshallhandle->OperationNumber()==MARSHALLING_LOAD && M) array=xNew<IssmDouble*>(M);
+		for(int i=0;i<M;i++){
+			marshallhandle->call(this->array[i],mdim_array[i]*ndim_array[i]);
+		}
+	}
+	else{
+		array=NULL;
+		mdim_array=NULL;
+		ndim_array=NULL;
+	}
+}
+/*}}}*/
+int DoubleMatArrayParam::ObjectEnum(void){/*{{{*/
+
+	return DoubleMatArrayParamEnum;
+
+}
+/*}}}*/
+
+/*DoubleMatArrayParam virtual functions definitions: */
+void  DoubleMatArrayParam::GetParameterValue(IssmDouble*** pout_array, int* pout_M,int** pout_mdim_array, int** pout_ndim_array){/*{{{*/
+
+	int i,m,n;
+	IssmDouble* matrix=NULL;
+	IssmDouble* out_matrix=NULL;
+
+	/*output: */
+	IssmDouble** out_array=NULL;
+	int      out_M;
+	int*     out_mdim_array=NULL;
+	int*     out_ndim_array=NULL;
+
+	out_M=this->M;
+	if(out_M){
+		out_array=xNew<IssmDouble*>(M);
+		out_mdim_array=xNew<int>(M);
+		out_ndim_array=xNew<int>(M);
+
+		xMemCpy<int>(out_mdim_array,this->mdim_array,M);
+		xMemCpy<int>(out_ndim_array,this->ndim_array,M);
+
+		for(i=0;i<this->M;i++){
+			matrix=this->array[i];
+			m=this->mdim_array[i];
+			n=this->ndim_array[i];
+
+			if(m*n){
+				out_matrix=xNew<IssmDouble>(m*n);
+				xMemCpy<IssmDouble>(out_matrix,matrix,m*n);
+			}
+			else{
+				out_matrix=NULL;
+			}
+			out_array[i]=out_matrix;
+		}
+	}
+	else{
+		out_array=NULL;
+		out_matrix=NULL;
+		out_ndim_array=NULL;
+	}
+
+	/*Assign output pointers:*/
+	if(pout_M) *pout_M=out_M;
+	if(pout_mdim_array) *pout_mdim_array=out_mdim_array;
+	if(pout_ndim_array) *pout_ndim_array=out_ndim_array;
+	*pout_array=out_array;
+
+}
+/*}}}*/
+void  DoubleMatArrayParam::SetValue(IssmDouble** in_array, int in_M, int* in_mdim_array, int* in_ndim_array){/*{{{*/
+
+	int i,m,n;
+	IssmDouble* in_matrix=NULL;
+	IssmDouble* matrix=NULL;
+
+	/*avoid leak: */
+	xDelete<int>(mdim_array);
+	xDelete<int>(ndim_array);
+	for(i=0;i<M;i++){
+		matrix=array[i];
+		xDelete<IssmDouble>(matrix);
+	}
+	xDelete<IssmDouble*>(array);
+
+	/*copy data: */
+	this->M=in_M;
+	this->array=xNew<IssmDouble*>(M);
+	this->mdim_array=xNew<int>(M);
+	this->ndim_array=xNew<int>(M);
+
+	xMemCpy<int>(this->mdim_array,in_mdim_array,M);
+	xMemCpy<int>(this->ndim_array,in_ndim_array,M);
+
+	for(i=0;i<M;i++){
+		in_matrix=in_array[i];
+		m=in_mdim_array[i];
+		n=in_ndim_array[i];
+
+		matrix=xNew<IssmDouble>(m*n);
+		xMemCpy<IssmDouble>(matrix,in_matrix,m*n);
+
+		this->array[i]=matrix;
+	}
+
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleMatArrayParam.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleMatArrayParam.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleMatArrayParam.h	(revision 27955)
@@ -0,0 +1,80 @@
+/*! \file DoubleMatArrayParam.h 
+ *  \brief: header file for object holding an array of serial matrices
+ */
+
+#ifndef _DOUBLEMATARRAYPARAM_H_
+#define _DOUBLEMATARRAYPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class DoubleMatArrayParam: public Param{
+
+	private: 
+		int          enum_type;
+		IssmDouble **array;        //array of matrices
+		int          M;            //size of array
+		int         *mdim_array;   //m-dimensions of matrices in the array
+		int         *ndim_array;   //n-dimensions -f matrices in the array
+
+	public:
+		/*DoubleMatArrayParam constructors, destructors: {{{*/
+		DoubleMatArrayParam();
+		DoubleMatArrayParam(int enum_type,IssmDouble** array, int M, int* mdim_array, int* ndim_array);
+		~DoubleMatArrayParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(MarshallHandle* marshallhandle);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << "cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << "cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << "cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << "cannot return an array of integers");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << "cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << "cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << "cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << "cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << "cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, const char* data){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims);
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << "cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << "cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << "cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a IssmDouble vec array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a IssmDouble mat array");}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a int vec array");}
+		void  SetValue(int* intarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a int mat array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << "cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Bool param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array);
+		void  SetGradient(IssmDouble* poutput, int M, int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmDouble");};
+		/*}}}*/
+};
+#endif  /* _DOUBLEMATARRAYPARAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleMatParam.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleMatParam.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleMatParam.cpp	(revision 27955)
@@ -0,0 +1,125 @@
+/*!\file DoubleMatParam.c
+ * \brief: implementation of the DoubleMatParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+/*DoubleMatParam constructors and destructor*/
+DoubleMatParam::DoubleMatParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+DoubleMatParam::DoubleMatParam(int in_enum_type,IssmDouble* in_value, int in_M,int in_N){/*{{{*/
+
+	enum_type=in_enum_type;
+	M=in_M;
+	N=in_N;
+
+	value=xNew<IssmDouble>(M*N);
+	xMemCpy<IssmDouble>(value,in_value,M*N);
+}
+/*}}}*/
+DoubleMatParam::~DoubleMatParam(){/*{{{*/
+	xDelete<IssmDouble>(value);
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+void DoubleMatParam::Echo(void){/*{{{*/
+
+	_printf_("DoubleMatParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   matrix size: " << this->M << "x" << this->N << "\n");
+
+}
+/*}}}*/
+void DoubleMatParam::DeepEcho(void){/*{{{*/
+
+	int i,j;
+
+	_printf_("DoubleMatParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   matrix size: " << this->M << "x" << this->N << "\n");
+	for(i=0;i<this->M;i++){
+		for(j=0;j<this->N;j++){
+			_printf_(i << " " << j << " " << *(this->value+N*i+j) << "\n");
+		}
+	}
+}
+/*}}}*/
+int    DoubleMatParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+int DoubleMatParam::ObjectEnum(void){/*{{{*/
+
+	return DoubleMatParamEnum;
+
+}
+/*}}}*/
+Param* DoubleMatParam::copy() {/*{{{*/
+
+	return new DoubleMatParam(this->enum_type,this->value,this->M,this->N);
+
+}
+/*}}}*/
+void DoubleMatParam::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = DoubleMatParamEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->enum_type);
+	marshallhandle->call(this->M);
+	marshallhandle->call(this->N);
+	marshallhandle->call(this->value,M*N);
+}
+/*}}}*/
+
+/*DoubleMatParam virtual functions definitions: */
+void  DoubleMatParam::GetParameterValue(IssmDouble** pIssmDoublearray,int* pM,int* pN){/*{{{*/
+	IssmDouble* output=NULL;
+
+	output=xNew<IssmDouble>(M*N);
+	xMemCpy<IssmDouble>(output,value,M*N);
+
+	/*Assign output pointers:*/
+	if(pM) *pM=M;
+	if(pN) *pN=N;
+	*pIssmDoublearray=output;
+}
+/*}}}*/
+void  DoubleMatParam::GetParameterValue(int** pintarray,int* pM,int* pN){/*{{{*/
+	_error_("DoubleMat of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return an array of int");
+}
+/*}}}*/
+void  DoubleMatParam::SetValue(IssmDouble* IssmDoublearray,int in_M,int in_N){/*{{{*/
+
+	/*avoid leak: */
+	xDelete<IssmDouble>(this->value);
+
+	this->value=xNew<IssmDouble>(in_M*in_N);
+	xMemCpy<IssmDouble>(this->value,IssmDoublearray,in_M*in_N);
+
+	this->M=in_M;
+	this->N=in_N;
+}
+/*}}}*/
+
+/*DoubleMatParam specific routines:*/
+void  DoubleMatParam::GetParameterValueByPointer(IssmDouble** pIssmDoublearray,int* pM,int* pN){/*{{{*/
+
+	/*Assign output pointers:*/
+	if(pM) *pM=M;
+	if(pN) *pN=N;
+	*pIssmDoublearray=value;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleMatParam.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleMatParam.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleMatParam.h	(revision 27955)
@@ -0,0 +1,82 @@
+/*! \file DoubleMatParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _DOUBLEMATPARAM_H_
+#define _DOUBLEMATPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class DoubleMatParam: public Param{
+
+	protected: 
+		int         enum_type;
+		IssmDouble *value;
+		int         M;
+		int         N;
+
+	public:
+		/*DoubleMatParam constructors, destructors: {{{*/
+		DoubleMatParam();
+		DoubleMatParam(int enum_type,IssmDouble* value,int M,int N);
+		~DoubleMatParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		void  Echo();
+		void  DeepEcho();
+		int   Id(); 
+		int   ObjectEnum();
+		Param* copy();
+		void Marshall(MarshallHandle* marshallhandle);
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		int   InstanceEnum(){return enum_type;}
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN);
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM,int* pN);
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, const char* data){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble vec array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M,int N);
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int vec array");}
+		void  SetValue(int* intarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int mat array");};
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetGradient(IssmDouble* poutput, int M, int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmDouble");};
+		/*}}}*/
+		/*DoubleMatParam specific routines:{{{*/
+		void  GetParameterValueByPointer(IssmDouble** pIssmDoublearray,int* pM,int* pN);
+		/*}}}*/
+};
+#endif  /* _DOUBLEMATPARAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleParam.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleParam.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleParam.cpp	(revision 27955)
@@ -0,0 +1,88 @@
+/*!\file DoubleParam.c
+ * \brief: implementation of the DoubleParam object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+
+/*DoubleParam constructors and destructor*/
+DoubleParam::DoubleParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+DoubleParam::DoubleParam(int in_enum_type,IssmDouble in_value){/*{{{*/
+
+	enum_type=in_enum_type;
+	value=in_value;
+}
+/*}}}*/
+DoubleParam::~DoubleParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* DoubleParam::copy() {/*{{{*/
+
+	return new DoubleParam(this->enum_type,this->value);
+
+}
+/*}}}*/
+void DoubleParam::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(22)<<"   DoubleParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" "<<this->value<<"\n");
+}
+/*}}}*/
+void DoubleParam::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  DoubleParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void DoubleParam::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = DoubleParamEnum;
+   marshallhandle->call(object_enum);
+	marshallhandle->call(this->enum_type);
+	marshallhandle->call(this->value);
+
+}
+/*}}}*/
+int  DoubleParam::ObjectEnum(void){/*{{{*/
+
+	return DoubleParamEnum;
+
+}
+/*}}}*/
+
+/*DoubleParam virtual functions definitions: */
+void DoubleParam::GetParameterValue(int* pinteger){/*{{{*/
+	_error_("Double param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return an integer");
+}
+/*}}}*/
+void DoubleParam::GetParameterValue(bool* pbool){/*{{{*/
+	_error_("Double param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return an bool");
+}
+/*}}}*/
+void DoubleParam::GetParameterValue(int** pintarray,int* pM){/*{{{*/
+	_error_("Double param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return an array of integers");
+}
+/*}}}*/
+void DoubleParam::GetParameterValue(int** pintarray,int* pM,int* pN){/*{{{*/
+	_error_("Double param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return an array of integers");
+}
+/*}}}*/
+void DoubleParam::GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){/*{{{*/
+	_error_("Double param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return an array of IssmDouble");
+}
+/*}}}*/
+void DoubleParam::GetParameterValue(IssmDouble** pIssmDoublearray,int* pM,int* pN){/*{{{*/
+	_error_("Double param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return an array of IssmDouble");
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleParam.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleParam.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleParam.h	(revision 27955)
@@ -0,0 +1,78 @@
+/*! \file DoubleParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _DOUBLEPARAM_H_
+#define _DOUBLEPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class DoubleParam: public Param{
+
+	private: 
+		/*just hold 3 values for 3 vertices: */
+		int        enum_type;
+		IssmDouble value;
+
+	public:
+		/*DoubleParam constructors, destructors: {{{*/
+		DoubleParam();
+		DoubleParam(int enum_type,IssmDouble value);
+		~DoubleParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(MarshallHandle* marshallhandle);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool);
+		void  GetParameterValue(int* pinteger);
+		void  GetParameterValue(int** pintarray,int* pM);
+		void  GetParameterValue(int** pintarray,int* pM,int* pN);
+		void  GetParameterValue(IssmDouble* pIssmDouble){*pIssmDouble=value;};
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){*pdouble=value;};
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM);
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN);
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, const char* data){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){this->value=(IssmDouble)boolean;}
+		void  SetValue(int integer){this->value=(IssmDouble)integer;}
+		void  SetValue(IssmDouble scalar){this->value=(IssmDouble)scalar;}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(int* pintarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		void  SetGradient(IssmDouble* poutput, int M, int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmDouble");};
+		/*}}}*/
+};
+#endif  /* _DOUBLEPARAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleTransientMatParam.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleTransientMatParam.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleTransientMatParam.cpp	(revision 27955)
@@ -0,0 +1,19 @@
+/*!\file DoubleTransientMatParam.c
+ * \brief: implementation of the DoubleTransientMatParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+DoubleTransientMatParam::DoubleTransientMatParam(int in_enum_type,IssmDouble* in_value, int in_M,int in_N):DoubleMatParam(in_enum_type,in_value,in_M,in_N){/*{{{*/
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleTransientMatParam.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleTransientMatParam.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleTransientMatParam.h	(revision 27955)
@@ -0,0 +1,27 @@
+/*! \file DoubleTransientMatParam.h 
+ *  \brief: header file for DoubleTransientMatParam object
+ */
+
+#ifndef _DOUBLETRANSIENTMATPARAM_H_
+#define _DOUBLETRANSIENTMATPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class DoubleTransientMatParam: public DoubleMatParam{
+
+	public:
+		/*DoubleTransientMatParam constructors, destructors: {{{*/
+		DoubleTransientMatParam(int enum_type,IssmDouble* value,int M,int N);
+		/*}}}*/
+};
+#endif  /* _DOUBLETRANSIENTMATPARAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleVecParam.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleVecParam.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleVecParam.cpp	(revision 27955)
@@ -0,0 +1,122 @@
+/*!\file DoubleVecParam.c
+ * \brief: implementation of the DoubleVecParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+/*DoubleVecParam constructors and destructor*/
+DoubleVecParam::DoubleVecParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+DoubleVecParam::DoubleVecParam(int in_enum_type,IssmDouble* in_values, int in_M){/*{{{*/
+
+	enum_type=in_enum_type;
+	M=in_M;
+
+	if(M){
+		values=xNew<IssmDouble>(M);
+		xMemCpy<IssmDouble>(values,in_values,M);
+	}
+	else values=NULL;
+}
+/*}}}*/
+DoubleVecParam::~DoubleVecParam(){/*{{{*/
+	xDelete<IssmDouble>(values);
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* DoubleVecParam::copy() {/*{{{*/
+
+	return new DoubleVecParam(this->enum_type,this->values,this->M);
+
+}
+/*}}}*/
+void DoubleVecParam::DeepEcho(void){/*{{{*/
+	_printf_(setw(22)<<"   DoubleVecParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" "<<"[");
+	for(int i=0;i<this->M;i++) _printf_(" "<< this->values[i]);
+	_printf_("]\n");
+}
+/*}}}*/
+void DoubleVecParam::Echo(void){/*{{{*/
+
+	_printf_(setw(22)<<"   DoubleVecParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" size: "<<this->M<<"\n");
+
+}
+/*}}}*/
+int    DoubleVecParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void DoubleVecParam::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = DoubleVecParamEnum;
+   marshallhandle->call(object_enum);
+	marshallhandle->call(this->enum_type);
+	marshallhandle->call(this->M);
+	marshallhandle->call(this->values,this->M);
+}
+/*}}}*/
+int DoubleVecParam::ObjectEnum(void){/*{{{*/
+
+	return DoubleVecParamEnum;
+
+}
+/*}}}*/
+
+/*DoubleVecParam virtual functions definitions: */
+void  DoubleVecParam::GetParameterValue(IssmDouble** poutput,int* pM){/*{{{*/
+
+	IssmDouble* output=xNew<IssmDouble>(M);
+	xMemCpy<IssmDouble>(output,values,M);
+
+	/*Assign output pointers:*/
+	if(pM) *pM=M;
+	*poutput=output;
+}
+/*}}}*/
+void  DoubleVecParam::GetParameterValue(IssmDouble** poutput,int* pM,int* pN){/*{{{*/
+
+	IssmDouble* output=xNew<IssmDouble>(this->M);
+	xMemCpy<IssmDouble>(output,values,M);
+
+	/*Assign output pointers:*/
+	if(pM) *pM=this->M;
+	if(pN) *pN=1;
+	*poutput=output;
+}
+/*}}}*/
+void  DoubleVecParam::GetParameterValue(int** pintarray,int* pM){/*{{{*/
+	_error_("DoubleVec param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return an array of int");
+}
+/*}}}*/
+void  DoubleVecParam::SetValue(IssmDouble* IssmDoublearray,int in_M){/*{{{*/
+
+	/*avoid leak: */
+	xDelete<IssmDouble>(this->values);
+
+	this->values=xNew<IssmDouble>(in_M);
+	xMemCpy<IssmDouble>(this->values,IssmDoublearray,in_M);
+
+	this->M=in_M;
+}
+/*}}}*/
+
+/*DoubleVecParam specific routines:*/
+void  DoubleVecParam::GetParameterValueByPointer(IssmDouble** pIssmDoublearray,int* pM){/*{{{*/
+
+	/*Assign output pointers:*/
+	if(pM) *pM=M;
+	*pIssmDoublearray=values;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleVecParam.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleVecParam.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/DoubleVecParam.h	(revision 27955)
@@ -0,0 +1,82 @@
+/*! \file DoubleVecParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _DOUBLEVECPARAM_H_
+#define _DOUBLEVECPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class DoubleVecParam: public Param{
+
+	private: 
+		int         enum_type;
+		IssmDouble *values;
+		int         M;
+
+	public:
+		/*DoubleVecParam constructors, destructors: {{{*/
+		DoubleVecParam();
+		DoubleVecParam(int enum_type,IssmDouble* values,int M);
+		~DoubleVecParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(MarshallHandle* marshallhandle);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param virtual functions definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM);
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");};
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM);
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN);
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, const char* data){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M);
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble mat array");}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int mat array");};
+		void  SetValue(int* pintarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int mat array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		void  SetGradient(IssmDouble* poutput, int M, int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmDouble");};
+		/*}}}*/
+		/*DoubleVecParam specific routines:{{{*/
+		void  GetParameterValueByPointer(IssmDouble** pIssmDoublearray,int* pM);
+		/*}}}*/
+
+};
+#endif  /* _DOUBLEVECPARAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/FileParam.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/FileParam.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/FileParam.cpp	(revision 27955)
@@ -0,0 +1,70 @@
+/*!\file FileParam.c
+ * \brief: implementation of the FileParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+/*FileParam constructors and destructor*/
+FileParam::FileParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+FileParam::FileParam(int in_enum_type,FILE* in_value){/*{{{*/
+
+	enum_type=in_enum_type;
+	value=in_value;
+}
+/*}}}*/
+FileParam::~FileParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* FileParam::copy() {/*{{{*/
+
+	return new FileParam(this->enum_type,this->value);
+
+}
+/*}}}*/
+void FileParam::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(22)<<"   FileParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" "<<this->value<<"\n");
+}
+/*}}}*/
+void FileParam::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  FileParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void FileParam::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = FileParamEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->enum_type);
+	marshallhandle->call(this->value);
+
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD){
+		this->value=NULL; //meaningless file pointer!
+	}
+
+}
+/*}}}*/
+int  FileParam::ObjectEnum(void){/*{{{*/
+
+	return FileParamEnum;
+
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/FileParam.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/FileParam.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/FileParam.h	(revision 27955)
@@ -0,0 +1,77 @@
+/*! \file FileParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _FILEPARAM_H_
+#define _FILEPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class FileParam: public Param{
+
+	private: 
+		int   enum_type;
+		FILE* value;
+
+	public:
+		/*FileParam constructors, destructors: {{{*/
+		FileParam();
+		FileParam(int enum_type,FILE* fid);
+		~FileParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(MarshallHandle* marshallhandle);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){  _error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, const char* data){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("File param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){*pfid=value;};
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(int* pintarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("File param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("File param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold an array of matrices");}
+		void  SetGradient(IssmDouble* poutput, int M, int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmDouble");};
+		/*}}}*/
+};
+#endif  /* _INTPARAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/GenericParam.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/GenericParam.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/GenericParam.h	(revision 27955)
@@ -0,0 +1,106 @@
+/*
+ * GenericParam.h
+ *
+ *  Created on: Aug 29, 2012
+ *      Author: utke
+ */
+
+#ifndef GENERICPARAM_H_
+#define GENERICPARAM_H_
+
+/*Headers:*/
+#ifdef HAVE_CONFIG_H
+        #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./Param.h"
+#include "../../shared/shared.h"
+
+/**
+ * here we have a class that holds an instance of P
+ * but because it should live side by side with
+ * the other instances derived from Param it - unfortunately -
+ * inherits all the accessors that are useless in this context
+ */
+template <class P> class GenericParam: public Param{
+
+        private:
+                P myP;
+                int myEnumVal;
+
+        public:
+                /*GenericParam constructors, destructors: {{{*/
+                GenericParam(int enumVal) : myEnumVal(enumVal){};
+                GenericParam(P Pin, int enumVal) : myP(Pin),myEnumVal(enumVal){};
+                ~GenericParam(){};
+                /*}}}*/
+                /*Object virtual functions definitions:{{{ */
+                // unfortunately,  having to implement such a printer method implies
+                // that any structured P must provide the friend << operator
+                Param* copy() { return new GenericParam<P>(*this); };
+                void  DeepEcho() {
+                  _printf_("GenericParam:\n");
+                  _printf_("   enum:  " << myEnumVal << " (" << EnumToStringx(myEnumVal) << ")\n");
+                  _printf_("   value: " << myP << "\n");;
+                }
+                void  Echo() {DeepEcho();};
+                int   Id(){ return -1; };
+
+                // the "copy"  has to implement the base class abstract function
+                // but I would prefer to drop this not to hide a "new" in here because
+                // it does not clarify  ownership of the newed up instance...
+                // use the default copy constructor instead
+					 void Marshall(MarshallHandle* marshallhandle){
+						 if(this->InstanceEnum()!=FemModelCommEnum){
+							 _printf_("   WARNING: parameter "<<EnumToStringx(this->myEnumVal)<<" is a GenericParam and cannot be marshalled\n");
+						 }
+						 /*Nothing for now*/
+					 }
+                int   ObjectEnum() {return GenericParamEnum;};
+
+                /*}}}*/
+                /*Param vritual function definitions: {{{*/
+                P& GetParameterValue() { return myP;}
+                const P& GetParameterValue()const { return myP;};
+                int   InstanceEnum(){return myEnumVal;}
+
+                // none of these apply ...
+                void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a bool");}
+                void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return an integer");}
+                void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return an array of integers");}
+                void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return an array of integers");}
+                void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a IssmDouble");}
+                void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a IssmDouble for a given time");}
+                void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a string");}
+                void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a string array");}
+                void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a IssmDouble array");}
+                void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a IssmDouble array");}
+					 void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, const char* data){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a IssmDouble array");}
+                void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a matrix array");}
+                void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a Vec");}
+                void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a Mat");}
+                void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a FILE");}
+				void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot return a DataSet");}
+
+					 void  SetEnum(int enum_in){this->myEnumVal = enum_in;};
+                void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold a bool");}
+                void  SetValue(int integer){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold an integer");}
+                void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold an int array");}
+                void  SetValue(int* intarray,int M,int N){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold an int array");}
+                void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold an IssmDouble");}
+                void  SetValue(char* string){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold a string");}
+                void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold a string array");}
+					 void  SetValue(IssmDouble* IssmDoublearray){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold a IssmDouble array");}
+                void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold a IssmDouble array");}
+                void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold a IssmDouble array");}
+                void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold a Vec");}
+                void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold a Mat");}
+                void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold a FILE");}
+                void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold an array of matrices");}
+					 void  SetGradient(IssmDouble* poutput, int M, int N){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold an IssmDouble");};
+
+                /*}}}*/
+};
+
+#endif /* GENERICPARAM_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/IntMatParam.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/IntMatParam.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/IntMatParam.cpp	(revision 27955)
@@ -0,0 +1,111 @@
+/*!\file IntMatParam.c
+ * \brief: implementation of the IntMatParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+/*IntMatParam constructors and destructor*/
+IntMatParam::IntMatParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+IntMatParam::IntMatParam(int in_enum_type,int* in_value, int in_M,int in_N){/*{{{*/
+
+	enum_type=in_enum_type;
+	M=in_M;
+	N=in_N;
+
+	value=xNew<int>(M*N);
+	xMemCpy<int>(value,in_value,M*N);
+}
+/*}}}*/
+IntMatParam::~IntMatParam(){/*{{{*/
+	xDelete<int>(value);
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* IntMatParam::copy() {/*{{{*/
+
+	return new IntMatParam(this->enum_type,this->value,this->M,this->N);
+
+}
+/*}}}*/
+void IntMatParam::DeepEcho(void){/*{{{*/
+
+	int i,j;
+
+	_printf_("IntMatParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   matrix size: " << this->M << "x" << this->N << "\n");
+	for(i=0;i<this->M;i++){
+		for(j=0;j<this->N;j++){
+			_printf_("(" << i << "," << j << ") " << *(this->value+N*i+j) << "\n");
+		}
+	}
+}
+/*}}}*/
+void IntMatParam::Echo(void){/*{{{*/
+
+	_printf_("IntMatParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   matrix size: " << this->M << "x" << this->N << "\n");
+
+}
+/*}}}*/
+int  IntMatParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void IntMatParam::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = IntMatParamEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->enum_type);
+	marshallhandle->call(this->M);
+	marshallhandle->call(this->N);
+	marshallhandle->call(this->value,M*N);
+}
+/*}}}*/
+int  IntMatParam::ObjectEnum(void){/*{{{*/
+
+	return IntMatParamEnum;
+
+}
+/*}}}*/
+
+/*IntMatParam virtual functions definitions: */
+void  IntMatParam::GetParameterValue(int** pintarray,int* pM,int* pN){/*{{{*/
+	int* output=NULL;
+
+	output=xNew<int>(M*N);
+	xMemCpy<int>(output,value,M*N);
+
+	/*Assign output pointers:*/
+	if(pM) *pM=M;
+	if(pN) *pN=N;
+	*pintarray=output;
+}
+/*}}}*/
+void  IntMatParam::SetValue(int* intarray,int in_M,int in_N){/*{{{*/
+
+	/*avoid leak: */
+	xDelete<int>(this->value);
+
+	this->value=xNew<int>(in_M*in_N);
+	xMemCpy<int>(this->value,intarray,in_M*in_N);
+
+	this->M=in_M;
+	this->N=in_N;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/IntMatParam.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/IntMatParam.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/IntMatParam.h	(revision 27955)
@@ -0,0 +1,79 @@
+/*! \file IntMatParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _INTMATPARAM_H_
+#define _INTMATPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class IntMatParam: public Param{
+
+	private: 
+		int enum_type;
+		int* value;
+		int M;
+		int N;
+
+	public:
+		/*IntMatParam constructors, destructors: {{{*/
+		IntMatParam();
+		IntMatParam(int enum_type,int* value,int M,int N);
+		~IntMatParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(MarshallHandle* marshallhandle);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN);
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");};
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, const char* data){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble vec array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble vec array");};
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int vec array");};
+		void  SetValue(int* intarray,int M,int N);
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		void  SetGradient(IssmDouble* poutput, int M, int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmDouble");};
+		/*}}}*/
+};
+#endif  /* _INTMATPARAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/IntParam.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/IntParam.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/IntParam.cpp	(revision 27955)
@@ -0,0 +1,64 @@
+/*!\file IntParam.c
+ * \brief: implementation of the IntParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*IntParam constructors and destructor*/
+IntParam::IntParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+IntParam::IntParam(int in_enum_type,IssmInt in_value){/*{{{*/
+
+	enum_type=in_enum_type;
+	value=in_value;
+}
+/*}}}*/
+IntParam::~IntParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* IntParam::copy() {/*{{{*/
+
+	return new IntParam(this->enum_type,this->value);
+
+}
+/*}}}*/
+void IntParam::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(22)<<"   IntParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" "<<this->value<<"\n");
+}
+/*}}}*/
+void IntParam::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int  IntParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void IntParam::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = IntParamEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->enum_type);
+	marshallhandle->call(this->value);
+}/*}}}*/
+int  IntParam::ObjectEnum(void){/*{{{*/
+
+	return IntParamEnum;
+
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/IntParam.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/IntParam.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/IntParam.h	(revision 27955)
@@ -0,0 +1,78 @@
+/*! \file IntParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _INTPARAM_H_
+#define _INTPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class IntParam: public Param{
+
+	private: 
+		/*just hold 3 values for 3 vertices: */
+		int enum_type;
+		IssmInt value;
+
+	public:
+		/*IntParam constructors, destructors: {{{*/
+		IntParam();
+		IntParam(int enum_type,IssmInt value);
+		~IntParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(MarshallHandle* marshallhandle);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param virtual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){*pinteger=value;}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, const char* data){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a bool");}
+		void  SetValue(int integer){this->value=integer;}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an int array");}
+		void  SetValue(int* intarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an int array");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmDouble");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		void  SetGradient(IssmDouble* poutput, int M, int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmDouble");};
+		/*}}}*/
+};
+#endif  /* _INTPARAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/IntVecParam.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/IntVecParam.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/IntVecParam.cpp	(revision 27955)
@@ -0,0 +1,122 @@
+/*!\file IntVecParam.c
+ * \brief: implementation of the IntVecParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*IntVecParam constructors and destructor*/
+IntVecParam::IntVecParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+IntVecParam::IntVecParam(int in_enum_type,int* in_values, int in_M){/*{{{*/
+
+	enum_type=in_enum_type;
+	M=in_M;
+
+	if(M){
+		values=xNew<int>(M);
+		xMemCpy<int>(values,in_values,M);
+	}
+	else values=NULL;
+}
+/*}}}*/
+IntVecParam::IntVecParam(int in_enum_type,IssmDouble* in_values, int in_M){/*{{{*/
+
+	enum_type=in_enum_type;
+	M=in_M;
+
+	if(M){
+		values=xNew<int>(M);
+		for(int i=0;i<in_M;i++) values[i]=reCast<int>(in_values[i]);
+	}
+	else values=NULL;
+}
+/*}}}*/
+IntVecParam::~IntVecParam(){/*{{{*/
+	xDelete<int>(values);
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* IntVecParam::copy() {/*{{{*/
+
+	return new IntVecParam(this->enum_type,this->values,this->M);
+
+}
+/*}}}*/
+void IntVecParam::DeepEcho(void){/*{{{*/
+	_printf_(setw(22)<<"   IntVecParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" [");
+	for(int i=0;i<this->M;i++) _printf_(" "<<this->values[i]);
+	_printf_("]\n");
+}
+/*}}}*/
+void IntVecParam::Echo(void){/*{{{*/
+
+	this->DeepEcho();
+}
+/*}}}*/
+int  IntVecParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void IntVecParam::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = IntVecParamEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->enum_type);
+	marshallhandle->call(this->M);
+	if(M){ 
+		marshallhandle->call(this->values,M);
+	}
+	else{
+		this->values=NULL;
+	}
+
+}
+/*}}}*/
+int  IntVecParam::ObjectEnum(void){/*{{{*/
+
+	return IntVecParamEnum;
+
+}
+/*}}}*/
+
+/*IntVecParam virtual functions definitions: */
+void  IntVecParam::GetParameterValue(int** pintarray,int* pM){/*{{{*/
+	int* output=NULL;
+
+	if(M){
+		output=xNew<int>(M);
+		xMemCpy<int>(output,values,M);
+	}
+
+	/*Assign output pointers:*/
+	if(pM) *pM=M;
+	*pintarray=output;
+}
+/*}}}*/
+void  IntVecParam::SetValue(int* intarray,int in_M){/*{{{*/
+
+	/*avoid leak: */
+	xDelete<int>(this->values);
+
+	if(in_M){
+		this->values=xNew<int>(in_M);
+		xMemCpy<int>(this->values,intarray,in_M);
+	}
+	else this->values=NULL;
+
+	this->M=in_M;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/IntVecParam.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/IntVecParam.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/IntVecParam.h	(revision 27955)
@@ -0,0 +1,79 @@
+/*! \file IntVecParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _INTVECPARAM_H_
+#define _INTVECPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class IntVecParam: public Param{
+
+	private: 
+		int enum_type;
+		int* values;
+		int M;
+
+	public:
+		/*IntVecParam constructors, destructors: {{{*/
+		IntVecParam();
+		IntVecParam(int enum_type,int* values,int M);
+		IntVecParam(int enum_type,IssmDouble* values,int M);
+		~IntVecParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(MarshallHandle* marshallhandle);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param virtual functions definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM);
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array (maybe in serial?)");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, const char* data){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble mat array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble mat array");}
+		void  SetValue(int* intarray,int M);
+		void  SetValue(int* pintarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int mat array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		void  SetGradient(IssmDouble* poutput, int M, int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmDouble");};
+		/*}}}*/
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/MatrixParam.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/MatrixParam.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/MatrixParam.cpp	(revision 27955)
@@ -0,0 +1,85 @@
+/*!\file MatrixParam.c
+ * \brief: implementation of the MatrixParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*MatrixParam constructors and destructor*/
+MatrixParam::MatrixParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+MatrixParam::MatrixParam(int in_enum_type,Matrix<IssmDouble>* in_value){/*{{{*/
+
+	enum_type=in_enum_type;
+	value=NULL;
+
+	if(in_value){
+		value=in_value->Duplicate();
+	}
+}
+/*}}}*/
+MatrixParam::~MatrixParam(){/*{{{*/
+	delete value;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* MatrixParam::copy() {/*{{{*/
+
+	return new MatrixParam(this->enum_type,this->value);
+
+}
+/*}}}*/
+void MatrixParam::DeepEcho(void){/*{{{*/
+
+	_printf_("MatrixParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	this->value->Echo();
+}
+/*}}}*/
+void MatrixParam::Echo(void){/*{{{*/
+
+	_printf_("MatrixParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+
+}
+/*}}}*/
+int  MatrixParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+int MatrixParam::ObjectEnum(void){/*{{{*/
+
+	return MatrixParamEnum;
+
+}
+/*}}}*/
+
+/*MatrixParam virtual functions definitions: */
+void  MatrixParam::GetParameterValue(Matrix<IssmDouble>** poutput){/*{{{*/
+	Matrix<IssmDouble>* output=NULL;
+
+	if(value){
+		output=value->Duplicate();
+	}
+	*poutput=output;
+}
+/*}}}*/
+void  MatrixParam::SetValue(Matrix<IssmDouble>* matrix){/*{{{*/
+
+	/*avoid leak: */
+	delete value;
+
+	/*copy: */
+	value=matrix->Duplicate();
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/MatrixParam.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/MatrixParam.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/MatrixParam.h	(revision 27955)
@@ -0,0 +1,78 @@
+/*! \file MatrixParam.h 
+ *  \brief: header file for MatrixParam object
+ */
+
+#ifndef _MATRIXPARAM_H_
+#define _MATRIXPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class MatrixParam: public Param{
+
+	private: 
+		/*just hold 3 values for 3 vertices: */
+		int enum_type;
+		Matrix<IssmDouble>* value;
+
+	public:
+		/*MatrixParam constructors, destructors: {{{*/
+		MatrixParam();
+		MatrixParam(int enum_type,Matrix<IssmDouble>* value);
+		~MatrixParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!"); };
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, const char* data){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** poutput);
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(int* pintarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat);
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		void  SetGradient(IssmDouble* poutput, int M, int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmDouble");};
+		/*}}}*/
+};
+#endif  /* _MATRIXPARAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/Param.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/Param.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/Param.h	(revision 27955)
@@ -0,0 +1,70 @@
+/*!\file:  Param.h
+ * \brief abstract class for Param object
+ */ 
+
+#ifndef _PARAM_H_
+#define _PARAM_H_
+
+/*Headers:*/
+/*{{{*/
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../datastructures/datastructures.h"
+#include "../Node.h"
+/*}}}*/
+
+class Param: public Object{
+
+	public: 
+		virtual        ~Param(){};
+
+		/*Virtual functions:*/
+		virtual void  DeepEcho()=0;
+		virtual Param* copy()=0;
+		virtual void  Echo()=0;
+		virtual void  GetParameterValue(bool* pbool)=0;
+		virtual void  GetParameterValue(int* pinteger)=0;
+		virtual void  GetParameterValue(int** pintarray,int* pM)=0;
+		virtual void  GetParameterValue(int** pintarray,int* pM,int* pN)=0;
+		virtual void  GetParameterValue(IssmDouble* pIssmDouble)=0;
+		virtual void  GetParameterValue(IssmDouble* pdouble,IssmDouble time)=0;
+		virtual void  GetParameterValue(IssmDouble* pdouble,int row, IssmDouble time){_error_("not implemented yet");};
+		virtual void  GetParameterValue(char** pstring)=0;
+		virtual void  GetParameterValue(char*** pstringarray,int* pM)=0;
+		virtual void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM)=0;
+		virtual void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM,int* pN)=0;
+		virtual void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, const char* data)=0;
+		virtual void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims)=0;
+		virtual void  GetParameterValue(Vector<IssmDouble>** pvec)=0;
+		virtual void  GetParameterValue(Matrix<IssmDouble>** pmat)=0;
+		virtual void  GetParameterValue(FILE** pfid)=0;
+		virtual void  GetParameterValue(DataSet** pdataset)=0;
+		virtual int   InstanceEnum()=0;
+		virtual void  Marshall(MarshallHandle* marshallhandle)=0;
+		virtual int   ObjectEnum()=0;
+
+		virtual void  SetEnum(int enum_in)=0;
+		virtual void  SetValue(bool boolean)=0;
+		virtual void  SetValue(int integer)=0;
+		virtual void  SetValue(IssmDouble scalar)=0;
+		virtual void  SetValue(char* string)=0;
+		virtual void  SetValue(char** stringarray,int M)=0;
+		virtual void  SetValue(DataSet* dataset){_error_("not implemented yet");};
+		virtual void  SetValue(IssmDouble* IssmDoublearray,int M)=0;
+		virtual void  SetValue(IssmDouble* IssmDoublearray)=0;
+		virtual void  SetValue(IssmDouble* pIssmDoublearray,int M,int N)=0;
+		virtual void  SetValue(int* intarray,int M)=0;
+		virtual void  SetValue(int* pintarray,int M,int N)=0;
+		virtual void  SetValue(Vector<IssmDouble>* vec)=0;
+		virtual void  SetValue(Matrix<IssmDouble>* mat)=0;
+		virtual void  SetValue(FILE* fid)=0;
+		virtual void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array)=0;
+		virtual void  SetGradient(IssmDouble* poutput, int M, int N)=0;
+		virtual void  GetVectorFromControl(Vector<IssmDouble>* vector,int control_index,int N,const char* data,int offset){_error_("not implemented yet");};
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/Parameters.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/Parameters.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/Parameters.cpp	(revision 27955)
@@ -0,0 +1,796 @@
+/*
+ * \file Parameters.cpp
+ * \brief: Implementation of the Parameters class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <vector>
+#include <functional>
+#include <algorithm>
+#include <iostream>
+
+#include "./Parameters.h"
+#include "./Param.h"
+
+#include "./BoolParam.h"
+#include "./ControlParam.h"
+#include "./DoubleMatParam.h"
+#include "./DataSetParam.h"
+#include "./DoubleParam.h"
+#include "./DoubleVecParam.h"
+#include "./IntParam.h"
+#include "./IntVecParam.h"
+#include "./IntMatParam.h"
+#include "./FileParam.h"
+#include "./MatrixParam.h"
+#include "./VectorParam.h"
+#include "./StringArrayParam.h"
+#include "./StringParam.h"
+#include "./DoubleMatArrayParam.h"
+#include "./TransientParam.h"
+#include "./TransientArrayParam.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+Parameters::Parameters(){/*{{{*/
+	for(int i=0;i<NUMPARAMS;i++) this->params[i] = NULL;
+	return;
+}
+/*}}}*/
+Parameters::~Parameters(){/*{{{*/
+	for(int i=0;i<NUMPARAMS;i++){
+		if(this->params[i]) delete this->params[i];
+	}
+	return;
+}
+/*}}}*/
+int Parameters::EnumToIndex(int enum_in){/*{{{*/
+
+	/*Make sure this parameter is at the right place*/
+	#ifdef _ISSM_DEBUG_
+	if(enum_in<=ParametersSTARTEnum) _error_("Enum "<<EnumToStringx(enum_in)<<" should appear after ParametersSTARTEnum");
+	if(enum_in>=ParametersENDEnum)   _error_("Enum "<<EnumToStringx(enum_in)<<" should appear before ParametersENDEnum");
+	#endif
+	return enum_in - ParametersSTARTEnum -1;
+}/*}}}*/
+
+void Parameters::AddObject(Param* newparam){/*{{{*/
+
+	/*Get Enum from Param*/
+	_assert_(newparam);
+	int param_enum = newparam->InstanceEnum();
+
+	/*Get index in array*/
+	int index = EnumToIndex(param_enum);
+
+	/*Delete param if it already exists*/
+	if(this->params[index]){
+		delete this->params[index];
+		this->params[index] = NULL;
+	}
+
+	/*Add param to array*/
+	this->params[index] = newparam;
+}
+/*}}}*/
+Parameters* Parameters::Copy(void){/*{{{*/
+
+	Parameters* output = new Parameters();
+
+	for(int i=0;i<NUMPARAMS;i++){
+		if(this->params[i]){
+			output->params[i]=this->params[i]->copy();
+		}
+	}
+
+	return output;
+}
+/*}}}*/
+void Parameters::DeepEcho(void){/*{{{*/
+	for(int i=0;i<NUMPARAMS;i++) {
+		if(this->params[i]) this->params[i]->DeepEcho();
+	}
+	return;
+}
+/*}}}*/
+void Parameters::Echo(void){/*{{{*/
+	for(int i=0;i<NUMPARAMS;i++) {
+		if(this->params[i]) this->params[i]->Echo();
+	}
+	return;
+}
+/*}}}*/
+void Parameters::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+
+	int num_params=0;
+	int obj_enum= ParametersEnum;
+	marshallhandle->call(obj_enum);
+
+	if(marshallhandle->OperationNumber()!=MARSHALLING_LOAD){
+
+		/*Marshall num_params first*/
+		for(int i=0;i<NUMPARAMS;i++){
+			if(this->params[i]) num_params++;
+		}
+		marshallhandle->call(num_params);
+
+		/*Marshall Parameters one by one now*/
+		for(int i=0;i<NUMPARAMS;i++){
+			if(this->params[i]){
+				obj_enum = this->params[i]->ObjectEnum();
+				marshallhandle->call(obj_enum);
+				this->params[i]->Marshall(marshallhandle);
+			}
+		}
+
+	}
+	else{
+
+		/*Get number of params marshalled*/
+		marshallhandle->call(num_params);
+
+		/*Recover parameters one by one*/
+		for(int i=0;i<num_params;i++){
+
+			/*Recover enum of object first: */
+			marshallhandle->call(obj_enum);
+
+			if(obj_enum==DoubleParamEnum){
+				DoubleParam* doubleparam=NULL;
+				doubleparam=new DoubleParam();
+				doubleparam->Marshall(marshallhandle);
+				this->AddObject(doubleparam);
+			}
+			else if(obj_enum==IntParamEnum){
+				IntParam* intparam=NULL;
+				intparam=new IntParam();
+				intparam->Marshall(marshallhandle);
+				this->AddObject(intparam);
+			}
+			else if(obj_enum==IntMatParamEnum){
+				IntMatParam* intmparam=NULL;
+				intmparam=new IntMatParam();
+				intmparam->Marshall(marshallhandle);
+				this->AddObject(intmparam);
+			}
+			else if(obj_enum==IntVecParamEnum){
+				IntVecParam* intvparam=NULL;
+				intvparam=new IntVecParam();
+				intvparam->Marshall(marshallhandle);
+				this->AddObject(intvparam);
+			}
+			else if(obj_enum==BoolParamEnum){
+				BoolParam* boolparam=NULL;
+				boolparam=new BoolParam();
+				boolparam->Marshall(marshallhandle);
+				this->AddObject(boolparam);
+			}
+			else if(obj_enum==DataSetParamEnum){
+				DataSetParam* dsparam=NULL;
+				dsparam=new DataSetParam();
+				dsparam->Marshall(marshallhandle);
+				this->AddObject(dsparam);
+			}
+			else if(obj_enum==DoubleMatArrayParamEnum){
+				DoubleMatArrayParam* dmaparam=NULL;
+				dmaparam=new DoubleMatArrayParam();
+				dmaparam->Marshall(marshallhandle);
+				this->AddObject(dmaparam);
+			}
+			else if(obj_enum==DoubleMatParamEnum){
+				DoubleMatParam* dmparam=NULL;
+				dmparam=new DoubleMatParam();
+				dmparam->Marshall(marshallhandle);
+				this->AddObject(dmparam);
+			}
+			else if(obj_enum==DoubleVecParamEnum){
+				DoubleVecParam* dvparam=NULL;
+				dvparam=new DoubleVecParam();
+				dvparam->Marshall(marshallhandle);
+				this->AddObject(dvparam);
+			}
+			else if(obj_enum==FileParamEnum){
+				FileParam* fileparam=NULL;
+				fileparam=new FileParam();
+				fileparam->Marshall(marshallhandle);
+				delete fileparam;
+				/* FIXME: No need to add this object, the pointer is not valid
+					The FemModel should reset all FileParams in the restart function */
+			}
+			else if(obj_enum==StringParamEnum){
+				StringParam* sparam=NULL;
+				sparam=new StringParam();
+				sparam->Marshall(marshallhandle);
+				this->AddObject(sparam);
+			}
+			else if(obj_enum==StringArrayParamEnum){
+				StringArrayParam* saparam=NULL;
+				saparam=new StringArrayParam();
+				saparam->Marshall(marshallhandle);
+				this->AddObject(saparam);
+			}
+			else if(obj_enum==TransientParamEnum){
+				TransientParam* transparam=NULL;
+				transparam=new TransientParam();
+				transparam->Marshall(marshallhandle);
+				this->AddObject(transparam);
+			}
+			else if(obj_enum==TransientArrayParamEnum){
+				TransientArrayParam* transarrayparam=NULL;
+				transarrayparam=new TransientArrayParam();
+				transarrayparam->Marshall(marshallhandle);
+				this->AddObject(transarrayparam);
+			}
+			else if(obj_enum==ControlParamEnum){
+				ControlParam* controlparam=NULL;
+				controlparam=new ControlParam();
+				controlparam->Marshall(marshallhandle);
+				this->AddObject(controlparam);
+			}
+			else if(obj_enum==GenericParamEnum){
+				/*Skip for now (we don't want to Marhsall Comms)*/
+			}
+		}
+	}
+}
+/*}}}*/
+
+/*Object management*/
+void Parameters::Delete(int param_enum){/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+	if(this->params[index]){
+		delete this->params[index];
+		this->params[index] = NULL;
+	}
+
+	return;
+}
+/*}}}*/
+bool Parameters::Exist(int param_enum){/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+	if(this->params[index]) return true;
+
+	return false;
+}
+/*}}}*/
+void Parameters::FindParam(bool* pbool,int param_enum){ _assert_(this);/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pbool);
+}
+/*}}}*/
+void Parameters::FindParam(int* pinteger,int param_enum){ _assert_(this);/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pinteger);
+}
+/*}}}*/
+void Parameters::FindParam(IssmDouble* pscalar,int param_enum){ _assert_(this);/*{{{*/
+	int index = EnumToIndex(param_enum);
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pscalar);
+}
+/*}}}*/
+void Parameters::FindParam(IssmDouble* pscalar, int param_enum,IssmDouble time){ _assert_(this);/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pscalar,time);
+}
+/*}}}*/
+void Parameters::FindParam(IssmDouble* pscalar,int row,IssmDouble time, int param_enum){ _assert_(this);/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pscalar,row,time);
+}
+/*}}}*/
+void Parameters::FindParam(char** pstring,int param_enum){ _assert_(this);/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pstring);
+
+}
+/*}}}*/
+void Parameters::FindParam(char*** pstringarray,int* pM,int param_enum){ _assert_(this);/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pstringarray,pM);
+}
+/*}}}*/
+void Parameters::FindParam(int** pintarray,int* pM, int param_enum){ _assert_(this);/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pintarray,pM);
+
+}
+/*}}}*/
+void Parameters::FindParam(int** pintarray,int* pM,int *pN,int param_enum){ _assert_(this);/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pintarray,pM,pN);
+
+}
+/*}}}*/
+void Parameters::FindParam(IssmDouble** pIssmDoublearray,int* pM, int param_enum){ _assert_(this);/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pIssmDoublearray,pM);
+
+}
+/*}}}*/
+void Parameters::FindParam(IssmDouble** pIssmDoublearray,int* pM, int* pN,int param_enum){ _assert_(this);/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pIssmDoublearray,pM,pN);
+}
+/*}}}*/
+void Parameters::FindParam(IssmDouble*** parray,int* pM,int** pmdims_array,int** pndims_array,int param_enum){ _assert_(this);/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(parray,pM,pmdims_array,pndims_array);
+}
+/*}}}*/
+void Parameters::FindParam(Vector<IssmDouble>** pvec,int param_enum){ _assert_(this);/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pvec);
+}
+/*}}}*/
+void Parameters::FindParam(Matrix<IssmDouble>** pmat,int param_enum){ _assert_(this);/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pmat);
+}
+/*}}}*/
+void Parameters::FindParam(FILE** pfid,int param_enum){ _assert_(this);/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pfid);
+}
+/*}}}*/
+void Parameters::FindParam(DataSet** pdataset,int param_enum){ /*{{{*/
+	_assert_(this);
+
+	int index = EnumToIndex(param_enum);
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pdataset);
+}
+/*}}}*/
+void Parameters::FindParamAndMakePassive(IssmPDouble* pscalar,int param_enum){ _assert_(this);/*{{{*/
+
+	/*Get "active" parameter*/
+	IssmDouble intermediary;
+	int index = EnumToIndex(param_enum);
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(&intermediary);
+
+	/*cast to "passive"*/
+	#ifdef _HAVE_AD_
+	*pscalar=reCast<IssmPDouble>(intermediary);
+	#else
+	*pscalar=intermediary;
+	#endif
+}
+/*}}}*/
+void Parameters::FindParamAndMakePassive(IssmPDouble** pvec,int* pM, int param_enum){ _assert_(this);/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+
+	/*Output*/
+	int         n;
+	IssmDouble* vector = NULL;
+
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(&vector,&n);
+
+	/*Make output passive*/
+	#ifdef _HAVE_AD_
+	IssmPDouble* output = xNew<IssmPDouble>(n);
+	for(int i=0;i<n;i++) output[i] = reCast<IssmPDouble>(vector[i]);
+	xDelete<IssmDouble>(vector);
+	if(pvec) *pvec = output;
+	#else
+	if(pvec) *pvec = vector;
+	#endif
+
+	/*assign output pointers*/
+	if(pM)   *pM   = n;
+}/*}}}*/
+void Parameters::FindControlParam(IssmDouble** pvec,int* pM, int param_enum, const char* data){ _assert_(this);/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+
+	/*Output*/
+	int         n;
+	IssmDouble* vector = NULL;
+
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(pvec,pM,data);
+
+}/*}}}*/
+void Parameters::FindControlParamAndMakePassive(IssmPDouble** pvec,int* pM, int param_enum, const char* data){ _assert_(this);/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+
+	/*Output*/
+	int         n;
+	IssmDouble* vector = NULL;
+
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(&vector,&n,data);
+
+	/*Make output passive*/
+	#ifdef _HAVE_AD_
+	IssmPDouble* output = xNew<IssmPDouble>(n);
+	for(int i=0;i<n;i++) output[i] = reCast<IssmPDouble>(vector[i]);
+	xDelete<IssmDouble>(vector);
+	if(pvec) *pvec = output;
+	#else
+	if(pvec) *pvec = vector;
+	#endif
+
+	/*assign output pointers*/
+	if(pM)   *pM   = n;
+}/*}}}*/
+void Parameters::FindParamInDataset(IssmDouble** pIssmDoublearray,int* pM,int* pN,int dataset_type,int enum_type){/*{{{*/
+	_assert_(this);
+
+	int index = EnumToIndex(dataset_type);
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(dataset_type) <<" not set");
+	if(this->params[index]->ObjectEnum()!=DataSetParamEnum) _error_("Parameter " << EnumToStringx(dataset_type) <<" is not a DataSetParam!");
+
+	DataSetParam* dataset_param = xDynamicCast<DataSetParam*>(this->params[index]);
+	for( vector<Object*>::iterator object=dataset_param->value->objects.begin() ; object < dataset_param->value->objects.end(); object++ ){
+		Param* param = xDynamicCast<Param*>(*object);
+		if(param->InstanceEnum()==enum_type){
+			param->GetParameterValue(pIssmDoublearray,pM,pN);
+			return;
+		}
+	}
+
+	/*Error out if we reached this point*/
+	_error_("Could not find Enum "<<EnumToStringx(enum_type)<<" in dataset param "<<EnumToStringx(dataset_type));
+}
+/*}}}*/
+IssmDouble Parameters::FindParam(int param_enum){ _assert_(this);/*{{{*/
+
+	int index = EnumToIndex(param_enum);
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+
+	IssmDouble value;
+	this->params[index]->GetParameterValue(&value);
+	return value;
+}
+/*}}}*/
+
+void   Parameters::SetParam(bool boolean,int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(boolean); //already exists, just set it.
+	else this->AddObject(new BoolParam(enum_type,boolean)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(int integer,int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(integer); //already exists, just set it.
+	else this->AddObject(new IntParam(enum_type,integer)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(IssmDouble scalar,int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+	if(param) param->SetValue(scalar); //already exists, just set it.
+	else this->AddObject(new DoubleParam(enum_type,scalar)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(char* string,int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(string); //already exists, just set it.
+	else this->AddObject(new StringParam(enum_type,string)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(char** stringarray,int M, int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(stringarray,M); //already exists, just set it.
+	else this->AddObject(new StringArrayParam(enum_type,stringarray,M)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(IssmDouble* IssmDoublearray,int M, int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(IssmDoublearray,M); //already exists, just set it.
+	else this->AddObject(new DoubleVecParam(enum_type,IssmDoublearray,M)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(IssmDouble* IssmDoublearray,int M, int N, int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(IssmDoublearray,M,N); //already exists, just set it.
+	else this->AddObject(new DoubleMatParam(enum_type,IssmDoublearray,M,N)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(IssmDouble* IssmDoublearray, int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+	if(param) param->SetValue(IssmDoublearray); //already exists, just set it.
+	else _error_("Param "<< EnumToStringx(enum_type) << " cannot setValue");
+
+	 //this->AddObject(new ControlParam(enum_type,IssmDoublearray,M,N)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(int* intarray,int M, int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(intarray,M); //already exists, just set it.
+	else this->AddObject(new IntVecParam(enum_type,intarray,M)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(int* intarray,int M, int N, int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(intarray,M,N); //already exists, just set it.
+	else this->AddObject(new IntMatParam(enum_type,intarray,M,N)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(Vector<IssmDouble>* vector,int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(vector); //already exists, just set it.
+	else this->AddObject(new VectorParam(enum_type,vector)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(Matrix<IssmDouble>* matrix,int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(matrix); //already exists, just set it.
+	else this->AddObject(new MatrixParam(enum_type,matrix)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(FILE* fid,int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(fid); //already exists, just set it.
+	else this->AddObject(new FileParam(enum_type,fid)); //just add the new parameter.
+}
+/*}}}*/
+void   Parameters::SetParam(DataSet* dataset,int enum_type){/*{{{*/
+
+	Param* param=NULL;
+
+	/*first, figure out if the param has already been created: */
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param){
+		param->SetValue(dataset); //already exists, just set it.
+	}
+	else{
+		this->AddObject(new DataSetParam(enum_type,dataset)); //just add the new parameter.
+	}
+}
+/*}}}*/
+void   Parameters::SetControlFromVector(IssmDouble* vector, int enum_type, int M, int N, int offset){/*{{{*/
+
+	/*first, figure out if the param has already been created: */
+	Param* param=NULL;
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetValue(&vector[offset], M, N);
+	else _error_("Param "<< EnumToStringx(enum_type) << " cannot setValue");
+}
+/*}}}*/
+void   Parameters::SetGradientFromVector(IssmDouble* vector, int enum_type, int M, int N, int offset){/*{{{*/
+
+	/*first, figure out if the param has already been created: */
+	Param* param=NULL;
+	param=xDynamicCast<Param*>(this->FindParamObject(enum_type));
+
+	if(param) param->SetGradient(&vector[offset], M, N);
+	else _error_("Param "<< EnumToStringx(enum_type) << " cannot setValue");
+}
+/*}}}*/
+
+void  Parameters::GetVectorFromControl(Vector<IssmDouble>* vector,int control_enum,int control_index,int N,const char* data,int offset){/*{{{*/
+
+	/*first, figure out if the param has already been created: */
+	Param* param=xDynamicCast<Param*>(this->FindParamObject(control_enum));
+	if(!param) _error_("Parameter not found");
+
+	param->GetVectorFromControl(vector, control_index, N, data, offset);
+}/*}}}*/
+
+Param* Parameters::FindParamObject(int param_enum){/*{{{*/
+
+	return this->params[EnumToIndex(param_enum)];
+}
+/*}}}*/
+
+/*Methods relating to parameters: */
+char* OptionsFromAnalysis(char** pouttoolkit,Parameters* parameters,int analysis_type){ /*{{{*/
+
+	/* figure out ISSM options for current analysis, return a string. */
+
+	/*output: */
+	char *outstring  = NULL;
+	char *outtoolkit = NULL;
+
+	/*intermediary: */
+	int          dummy;
+	int         *analyses    = NULL;
+	char       **strings     = NULL;
+	char        *string      = NULL;
+	char       **toolkits    = NULL;
+	char        *toolkit     = NULL;
+	int          numanalyses;
+	int          found       = -1;
+	int          i;
+
+	parameters->FindParam(&strings,&numanalyses,ToolkitsOptionsStringsEnum);
+	parameters->FindParam(&toolkits,&dummy,ToolkitsTypesEnum); _assert_(dummy==numanalyses);
+	parameters->FindParam(&analyses,&dummy,ToolkitsOptionsAnalysesEnum); _assert_(dummy==numanalyses);
+
+	if(numanalyses==0)return NULL; //we did not find petsc options, don't bother.
+
+	/*ok, go through analyses and figure out if it corresponds to our analysis_type: */
+	for(i=0;i<numanalyses;i++){
+		if(analyses[i]==analysis_type){
+			found=i;
+			break;
+		}
+	}
+	if(found==-1){
+		/*still haven't found a list of petsc options, go find the default one, for analysis type DefaultAnalysisEnum: */
+		for(i=0;i<numanalyses;i++){
+			if(analyses[i]==DefaultAnalysisEnum){
+				found=i;
+				break;
+			}
+		}
+	}
+	if(found==-1){
+		_error_("could find neither a default analysis nor analysis " << EnumToStringx(analysis_type));
+	}
+
+	/*1. Grab the option toolkit: */
+	outtoolkit=xNew<char>(strlen(toolkits[found])+1);
+	strcpy(outtoolkit,toolkits[found]);
+	*pouttoolkit = outtoolkit;
+
+	/*2. Grab the option string: */
+	outstring=xNew<char>(strlen(strings[found])+1);
+	strcpy(outstring,strings[found]);
+
+	/*Free resources:*/
+	for(i=0;i<numanalyses;i++){
+		xDelete<char>(toolkits[i]);
+		xDelete<char>(strings[i]);
+	}
+	xDelete<char*>(toolkits);
+	xDelete<char*>(strings);
+	xDelete<int>(analyses);
+	return outstring;
+}
+/*}}}*/
+void ToolkitsOptionsFromAnalysis(Parameters* parameters,int analysis_type){ /*{{{*/
+
+	/*!\file:  ToolkitsOptionsFromAnalysis.cpp
+	 * \brief: for each analysis, setup the issmoptions string.
+	 * This is mainly for the case where we run our toolkits using petsc. In this case, we need to
+	 * plug our toolkits options directly into the petsc options database. This is the case for each analysis type
+	 * and parameters
+	 */
+
+	char* options = NULL;
+	char* toolkit = NULL;
+
+	/*Recover first the options string for this analysis: */
+	options=OptionsFromAnalysis(&toolkit,parameters,analysis_type);
+
+	/*Initialize our Toolkit Options: */
+	ToolkitOptions::Init(toolkit,options);
+
+	#ifdef _HAVE_PETSC_
+		/* In case we are using PETSC, we do not rely on issmoptions. Instead, 
+		   we dump issmoptions into the Petsc options database */
+
+		#if (_PETSC_MINOR_>=7 && _PETSC_MINOR_<14)
+		PetscOptionsSetFromOptions(NULL);
+		#endif
+		#if (_PETSC_MINOR_>=7)
+		PetscOptionsClear(NULL);
+		int ierr = PetscOptionsInsertString(NULL,options);
+		//int ierr = PetscOptionsInsertString(NULL,"-mat_type mpiaij -ksp_type preonly -pc_type lu -pc_factor_mat_solver_package mumps -mat_mumps_icntl_14 120 -mat_mumps_icntl_28 2 -mat_mumps_icntl_29 2");
+		//int ierr = PetscOptionsInsertString(NULL,"-mat_type mpiaij -ksp_type preonly -pc_type lu -pc_factor_mat_solver_package mumps -mat_mumps_icntl_14 120");
+		#else
+		PetscOptionsSetFromOptions();
+		PetscOptionsClear();
+		int ierr = PetscOptionsInsertString(options);
+		#endif
+
+		if(ierr) _error_("Could not enter PETSc options");
+
+	#endif
+
+	xDelete<char>(options);
+	xDelete<char>(toolkit);
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/Parameters.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/Parameters.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/Parameters.h	(revision 27955)
@@ -0,0 +1,87 @@
+#ifndef _CONTAINER_PARAMETERS_H_
+#define  _CONTAINER_PARAMETERS_H_
+#include <stdio.h>
+
+/*forward declarations */
+class Param;
+class DataSet;
+template <class doublematrix> class Matrix;
+template <class doubletype> class Vector;
+#include "../../shared/shared.h"
+
+#define NUMPARAMS ParametersENDEnum - ParametersSTARTEnum -1
+
+/*!\brief Declaration of Parameters class.  
+ *
+ * Declaration of Parameters class.  Parameters are a static array of Parameter objects.
+ */ 
+class Parameters{
+
+	private:
+		Param* params[NUMPARAMS];
+		int    EnumToIndex(int enum_in);
+
+	public:
+
+		/*constructors, destructors*/ 
+		Parameters();
+		~Parameters();
+
+		/*numerics*/
+		void  AddObject(Param* newparam);
+		Parameters* Copy(void);
+		void  DeepEcho();
+		void  Echo();
+		void  Delete(int enum_type);
+		bool  Exist(int enum_type);
+		void  Marshall(MarshallHandle* marshallhandle);
+
+		void  FindParam(bool* pinteger,int enum_type);
+		void  FindParam(int* pinteger,int enum_type);
+		void  FindParam(IssmDouble* pscalar, int enum_type);
+		void  FindParam(IssmDouble* pscalar, int enum_type,IssmDouble time);
+		void  FindParam(IssmDouble* pscalar, int row,IssmDouble time,int enum_type);
+		void  FindParam(char** pstring,int enum_type);
+		void  FindParam(char*** pstringarray,int* pM,int enum_type);
+		void  FindParam(int** pintarray,int* pM,int enum_type);
+		void  FindParam(int** pintarray,int* pM,int* PN,int enum_type);
+		void  FindParam(IssmDouble** pIssmDoublearray,int* pM,int enum_type);
+		void  FindParam(IssmDouble** pIssmDoublearray,int* pM,int* pN,int enum_type);
+		void  FindParam(IssmDouble*** parray,int* pM, int** pmdims_array,int** pndims_array,int enum_type);
+		void  FindParam(Vector<IssmDouble>** pvec,int enum_type);
+		void  FindParam(Matrix<IssmDouble>** pmat,int enum_type);
+		void  FindParam(FILE** pfid,int enum_type);
+		void  FindParam(DataSet** pdataset, int enum_type);
+		void  FindParamAndMakePassive(IssmPDouble* pscalar, int enum_type);
+		void  FindParamAndMakePassive(IssmPDouble** pvec,int* pM,int enum_type);
+		void  FindControlParam(IssmDouble** pvec,int* pM, int param_enum, const char* data);
+		void  FindControlParamAndMakePassive(IssmPDouble** pvec,int* pM, int param_enum, const char* data);
+		void  FindParamInDataset(IssmDouble** pIssmDoublearray,int* pM,int* pN,int dataset_type,int enum_type);
+		IssmDouble FindParam(int enum_type);
+
+		void  SetParam(bool boolean,int enum_type);
+		void  SetParam(int integer,int enum_type);
+		void  SetParam(IssmDouble scalar, int enum_type);
+		void  SetParam(char* string,int enum_type);
+		void  SetParam(char** stringarray,int M,int enum_type);
+		void  SetParam(IssmDouble* IssmDoublearray,int M,int enum_type);
+		void  SetParam(IssmDouble* IssmDoublearray,int M,int N,int enum_type);
+		void  SetParam(IssmDouble* IssmDoublearray, int enum_type);
+		void  SetParam(int* intarray,int M,int enum_type);
+		void  SetParam(int* intarray,int M,int N,int enum_type);
+		void  SetParam(Vector<IssmDouble>* vec,int enum_type);
+		void  SetParam(Matrix<IssmDouble>* mat,int enum_type);
+		void  SetParam(FILE* fid,int enum_type);
+		void  SetParam(DataSet* dataset,int enum_type);
+		void  SetControlFromVector(IssmDouble* array, int enum_type, int M, int N, int offset);
+		void  SetGradientFromVector(IssmDouble* array, int enum_type, int M, int N, int offset);
+		void  GetVectorFromControl(Vector<IssmDouble>* vector,int control_enum,int control_index,int N,const char* data,int offset);
+		Param* FindParamObject(int enum_type);
+
+};
+
+/*Methods relating to parameters: */
+char *OptionsFromAnalysis(char** ptoolkit,Parameters *parameters,int analysis_type);
+void  ToolkitsOptionsFromAnalysis(Parameters* parameters,int analysis_type);
+
+#endif //ifndef _PARAMETERS_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/StringArrayParam.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/StringArrayParam.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/StringArrayParam.cpp	(revision 27955)
@@ -0,0 +1,161 @@
+/*!\file StringArrayParam.c
+ * \brief: implementation of the StringArrayParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*StringArrayParam constructors and destructor*/
+StringArrayParam::StringArrayParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+StringArrayParam::StringArrayParam(int in_enum_type,char** in_values, int in_numstrings){/*{{{*/
+
+	this->enum_type=in_enum_type;
+	this->numstrings=in_numstrings;
+
+	if(numstrings){
+		this->value=xNew<char*>(numstrings);
+		for(int i=0;i<numstrings;i++){
+			int   size=strlen(in_values[i])+1;
+			char* string=xNew<char>(size);
+			xMemCpy<char>(string,in_values[i],size);
+			this->value[i]=string;
+		}
+	}
+	else{
+		this->value=NULL;
+	}
+
+}
+/*}}}*/
+StringArrayParam::~StringArrayParam(){/*{{{*/
+
+	int i;
+
+	char* string=NULL;
+	for(i=0;i<this->numstrings;i++){
+		string=value[i];
+		xDelete<char>(string);
+	}
+	xDelete<char*>(value);
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* StringArrayParam::copy() {/*{{{*/
+
+	return new StringArrayParam(this->enum_type,this->value,this->numstrings);
+
+}
+/*}}}*/
+void StringArrayParam::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(22)<<"   StringArrayParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" {");
+	for(int i=0;i<this->numstrings;i++) _printf_(" '"<<this->value[i]<<"'");
+	_printf_("}\n");
+}
+/*}}}*/
+void StringArrayParam::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int    StringArrayParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void StringArrayParam::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = StringArrayParamEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->enum_type);
+	marshallhandle->call(this->numstrings);
+
+	if(this->numstrings){
+		if(marshallhandle->OperationNumber()==MARSHALLING_LOAD){
+			this->value=xNew<char*>(this->numstrings);
+		}
+		for(int i=0;i<numstrings;i++){
+			marshallhandle->call(this->value[i]);
+		}
+	}
+	else{
+		this->value=NULL;
+	}
+}
+/*}}}*/
+int StringArrayParam::ObjectEnum(void){/*{{{*/
+
+	return StringArrayParamEnum;
+
+}
+/*}}}*/
+
+/*StringArrayParam virtual functions definitions: */
+void  StringArrayParam::GetParameterValue(char*** pstringarray,int* pM){/*{{{*/
+
+	int   i;
+	char** outstrings=NULL;
+	int   M;
+	char* string=NULL;
+	char* string2=NULL;
+	int   stringsize;
+
+	M=this->numstrings;
+	if(this->numstrings){
+		outstrings=xNew<char*>(this->numstrings);
+
+		for(i=0;i<this->numstrings;i++){
+			string=this->value[i];
+			stringsize=strlen(string)+1;
+
+			string2=xNew<char>(stringsize);
+			xMemCpy<char>(string2,string,stringsize);
+
+			outstrings[i]=string2;
+		}
+	}
+	else outstrings=NULL;
+
+	/*Assign output pointers:*/
+	if(pM) *pM=M;
+	*pstringarray=outstrings;
+}
+/*}}}*/
+void  StringArrayParam::SetValue(char** stringarray,int M){/*{{{*/
+
+	int   i;
+	char *string     = NULL;
+	char *string2    = NULL;
+	int   stringsize;
+
+	/*first, avoid leak: */
+	for(i=0;i<this->numstrings;i++){
+		string=this->value[i];
+		xDelete<char>(string);
+	}
+	xDelete<char*>(this->value);
+
+	/*copy: */
+	this->numstrings=M;
+	this->value=xNew<char*>(this->numstrings);
+	for(i=0;i<this->numstrings;i++){
+		string=stringarray[i];
+		stringsize=strlen(string)+1;
+
+		string2=xNew<char>(stringsize);
+		xMemCpy<char>(string2,string,stringsize);
+
+		this->value[i]=string2;
+	}
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/StringArrayParam.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/StringArrayParam.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/StringArrayParam.h	(revision 27955)
@@ -0,0 +1,78 @@
+/*! \file StringArrayParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _STRINGARRAYPARAM_H_
+#define _STRINGARRAYPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class StringArrayParam: public Param{
+
+	private: 
+		int      enum_type;
+		char**   value;
+		int      numstrings;
+
+	public:
+		/*StringArrayParam constructors, destructors: {{{*/
+		StringArrayParam();
+		StringArrayParam(int enum_type,char** values, int numstrings);
+		~StringArrayParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(MarshallHandle* marshallhandle);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM);
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, const char* data){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Vec param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M);
+		void  SetValue(IssmDouble* IssmDoublearray){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(int* pintarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		void  SetGradient(IssmDouble* poutput, int M, int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmDouble");};
+		/*}}}*/
+};
+#endif  /* _STRINGARRAYPARAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/StringParam.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/StringParam.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/StringParam.cpp	(revision 27955)
@@ -0,0 +1,95 @@
+/*!\file StringParam.c
+ * \brief: implementation of the StringParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*StringParam constructors and destructor*/
+StringParam::StringParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+StringParam::StringParam(int in_enum_type,char* in_value){/*{{{*/
+
+	enum_type=in_enum_type;
+	value=xNew<char>(strlen(in_value)+1);
+	xMemCpy<char>(value,in_value,(strlen(in_value)+1));
+
+}
+/*}}}*/
+StringParam::~StringParam(){/*{{{*/
+	xDelete<char>(value);
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* StringParam::copy() {/*{{{*/
+
+	return new StringParam(this->enum_type,this->value);
+
+}
+/*}}}*/
+void StringParam::DeepEcho(void){/*{{{*/
+	_printf_(setw(22)<<"   StringParam "<<setw(35)<<left<<EnumToStringx(this->enum_type)<<" "<<this->value<<"\n");
+}
+/*}}}*/
+void StringParam::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int    StringParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void StringParam::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = StringParamEnum;
+   marshallhandle->call(object_enum);
+	marshallhandle->call(this->enum_type);
+	marshallhandle->call(this->value);
+}
+/*}}}*/
+int StringParam::ObjectEnum(void){/*{{{*/
+
+	return StringParamEnum;
+
+}
+/*}}}*/
+
+/*StringParam virtual functions definitions: */
+void  StringParam::GetParameterValue(char** pstring){/*{{{*/
+
+	char* outstring=NULL;
+	int   stringsize;
+
+	stringsize=strlen(this->value)+1;
+
+	outstring=xNew<char>(stringsize);
+	xMemCpy<char>(outstring,this->value,stringsize);
+
+	*pstring=outstring;
+
+}
+/*}}}*/
+void  StringParam::SetValue(char* string){/*{{{*/
+
+	int   stringsize;
+
+	/*avoid leak: */
+	xDelete<char>(this->value);
+
+	/*copy: */
+	stringsize=strlen(string)+1;
+	this->value=xNew<char>(stringsize);
+	xMemCpy<char>(this->value,string,stringsize);
+
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/StringParam.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/StringParam.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/StringParam.h	(revision 27955)
@@ -0,0 +1,78 @@
+/*! \file StringParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _STRINGPARAM_H_
+#define _STRINGPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class StringParam: public Param{
+
+	private: 
+		/*just hold 3 values for 3 vertices: */
+		int   enum_type;
+		char *value;
+
+	public:
+		/*StringParam constructors, destructors: {{{*/
+		StringParam();
+		StringParam(int enum_type,char* value);
+		~StringParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(MarshallHandle* marshallhandle);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring);
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, const char* data){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Bool param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a scalar");}
+		void  SetValue(char* string);
+		void  SetValue(char** stringarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(int* intarray,int M){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(int* pintarray,int M,int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a int array");}
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		void  SetGradient(IssmDouble* poutput, int M, int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmDouble");};
+		/*}}}*/
+};
+#endif  /* _STRINGPARAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/TransientArrayParam.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/TransientArrayParam.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/TransientArrayParam.cpp	(revision 27955)
@@ -0,0 +1,147 @@
+/*!\file TransientArrayParam.c
+ * \brief: implementation of the TransientArrayParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*TransientArrayParam constructors and destructor*/
+TransientArrayParam::TransientArrayParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+TransientArrayParam::TransientArrayParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,bool cycle_in,int in_N,int in_M){/*{{{*/
+
+	_assert_(in_values && in_time);
+
+	this->enum_type=in_enum_type;
+	this->M=in_M; //Number of rows
+	this->N=in_N; //Number of timesteps
+	this->interpolation=interpolation_on;
+	this->cycle=cycle_in;
+
+	this->values=xNew<IssmDouble>(M*N);
+	xMemCpy<IssmDouble>(this->values,in_values,M*N);
+
+	this->timesteps=xNew<IssmDouble>(N);
+	xMemCpy<IssmDouble>(this->timesteps,in_time,N);
+}
+/*}}}*/
+TransientArrayParam::~TransientArrayParam(){/*{{{*/
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(timesteps);
+}/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* TransientArrayParam::copy() {/*{{{*/
+
+	return new TransientArrayParam(this->enum_type,this->values,this->timesteps,this->interpolation,this->cycle,this->M,this->N);
+
+}
+/*}}}*/
+void TransientArrayParam::DeepEcho(void){/*{{{*/
+
+	_printf_("TransientArrayParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   number of time steps: " << this->N << "\n");
+	_printf_("   number of rows: " << this->M << "\n");
+	for(int i=0;i<this->N;i++){
+		_printf_("	time: " << this->timesteps[i] << "\n");
+		for(int k=0;k<this->M;k++){
+			_printf_("		values: " << this->values[k*N+i] << "\n");
+		}
+		_printf_("\n");
+	}
+}
+/*}}}*/
+void TransientArrayParam::Echo(void){/*{{{*/
+
+	_printf_("TransientArrayParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   size: " << this->M << " by " << this->N << "\n");
+
+}
+/*}}}*/
+int  TransientArrayParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void TransientArrayParam::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = TransientArrayParamEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->enum_type);
+	marshallhandle->call(this->interpolation);
+	marshallhandle->call(this->cycle);
+	marshallhandle->call(this->M);
+	marshallhandle->call(this->N);
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD){
+		values    = xNew<IssmDouble>(M*N);
+		timesteps = xNew<IssmDouble>(N);
+	}
+	marshallhandle->call(this->values,M*N);
+	marshallhandle->call(this->timesteps,N);
+
+}/*}}}*/
+int  TransientArrayParam::ObjectEnum(void){/*{{{*/
+
+	return TransientArrayParamEnum;
+
+}/*}}}*/
+
+/*TransientArrayParam virtual functions definitions: */
+void  TransientArrayParam::GetParameterValue(IssmDouble* pdouble,int row,IssmDouble time){/*{{{*/
+
+	IssmDouble output;
+	bool       found;
+	_assert_(row>=0 && row<this->M); 
+
+	if(this->cycle) _error_("not implemented yet");
+
+	/*Ok, we have the time and row, go through the timesteps, and figure out which interval we 
+	 *fall within. Then interpolate the values on this interval: */
+	if(time<this->timesteps[0]){
+		/*get values for the first time: */
+		output=this->values[row*this->N];
+		found=true;
+	}
+	else if(time>this->timesteps[this->N-1]){
+		/*get values for the last time: */
+		output=this->values[(row+1)*this->N-1];
+		found=true;
+	}
+	else{
+		/*Find which interval we fall within: */
+		for(int i=0;i<this->N;i++){
+			if(time==this->timesteps[i]){
+				/*We are right on one step time: */
+				output = this->values[row*this->N+i];
+				found=true;
+				break; //we are done with the time interpolation.
+			}
+			else{
+				if(this->timesteps[i]<time && time<this->timesteps[i+1]){
+					/*ok, we have the interval [i:i+1]. Interpolate linearly for now: */
+					IssmDouble deltat = this->timesteps[i+1]-this->timesteps[i];
+					IssmDouble alpha  = (time-this->timesteps[i])/deltat;
+					if(this->interpolation==true) output=(1.0-alpha)*this->values[row*this->N+i] + alpha*this->values[row*this->N+i+1];
+					else output=this->values[row*this->N+i];
+					found=true;
+					break;
+				}
+				else continue; //keep looking on the next interval
+			}
+		}
+	}
+	if(!found)_error_("did not find time interval on which to interpolate values");
+	*pdouble=output;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/TransientArrayParam.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/TransientArrayParam.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/TransientArrayParam.h	(revision 27955)
@@ -0,0 +1,83 @@
+/*! \file TransientArrayParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _TRANSIENTARRAYPARAM_H_
+#define _TRANSIENTARRAYPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class TransientArrayParam: public Param{
+
+	protected: 
+		int         enum_type;
+		int         N;
+		int         M;
+		bool        interpolation;
+		bool        cycle;
+		IssmDouble *values;
+		IssmDouble *timesteps;
+
+	public:
+		/*TransientArrayParam constructors, destructors: {{{*/
+		TransientArrayParam();
+		TransientArrayParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,bool cycle_in,int in_N,int in_M);
+		~TransientArrayParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(MarshallHandle* marshallhandle);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a array of integers");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,int row,IssmDouble time);
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Parameter " <<EnumToStringx(enum_type) << " needs row to be specified");}
+		void  GetParameterValue(char** pstring){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM,int* pN){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, const char* data){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a IssmDouble vec array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M,int N){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(int* intarray,int M){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a int vec array");}
+		void  SetValue(int* intarray,int M,int N){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a int mat array");};
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		void  SetGradient(IssmDouble* poutput, int M, int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmDouble");};
+		/*}}}*/
+};
+#endif  /* _TRANSIENTARRAYPARAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/TransientParam.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/TransientParam.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/TransientParam.cpp	(revision 27955)
@@ -0,0 +1,142 @@
+/*!\file TransientParam.c
+ * \brief: implementation of the TransientParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*TransientParam constructors and destructor*/
+TransientParam::TransientParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+TransientParam::TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,bool cycle_in,int in_N){/*{{{*/
+
+	_assert_(in_values && in_time);
+
+	this->enum_type=in_enum_type;
+	this->N=in_N;
+	this->interpolation=interpolation_on;
+	this->cycle=cycle_in;
+
+	this->values=xNew<IssmDouble>(N);
+	xMemCpy<IssmDouble>(this->values,in_values,N);
+
+	this->timesteps=xNew<IssmDouble>(N);
+	xMemCpy<IssmDouble>(this->timesteps,in_time,N);
+}
+/*}}}*/
+TransientParam::~TransientParam(){/*{{{*/
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(timesteps);
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* TransientParam::copy() {/*{{{*/
+
+	return new TransientParam(this->enum_type,this->values,this->timesteps,this->interpolation,this->cycle,this->N);
+
+}
+/*}}}*/
+void TransientParam::DeepEcho(void){/*{{{*/
+
+	_printf_("TransientParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   size: " << this->N << "\n");
+	for(int i=0;i<this->N;i++){
+		_printf_(   "time: " << this->timesteps[i] << " value: " << this->values[i] << "\n");
+	}
+}
+/*}}}*/
+void TransientParam::Echo(void){/*{{{*/
+
+	_printf_("TransientParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	_printf_("   size: " << this->N << "\n");
+
+}
+/*}}}*/
+int  TransientParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+void TransientParam::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = TransientParamEnum;
+   marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->enum_type);
+	marshallhandle->call(this->interpolation);
+	marshallhandle->call(this->cycle);
+	marshallhandle->call(this->N);
+	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD){
+		values=xNew<IssmDouble>(N);
+		timesteps=xNew<IssmDouble>(N);
+	}
+	marshallhandle->call(this->values,N);
+	marshallhandle->call(this->timesteps,N);
+
+}
+/*}}}*/
+int  TransientParam::ObjectEnum(void){/*{{{*/
+
+	return TransientParamEnum;
+
+}
+/*}}}*/
+
+/*TransientParam virtual functions definitions: */
+void  TransientParam::GetParameterValue(IssmDouble* pdouble,IssmDouble time){/*{{{*/
+
+	IssmDouble output;
+	bool   found;
+
+	if(this->cycle) _error_("not implemented yet!");
+
+	/*Ok, we have the time, go through the timesteps, and figure out which interval we 
+	 *fall within. Then interpolate the values on this interval: */
+	if(time<this->timesteps[0]){
+		/*get values for the first time: */
+		output=this->values[0];
+		found=true;
+	}
+	else if(time>this->timesteps[this->N-1]){
+		/*get values for the last time: */
+		output=this->values[this->N-1];
+		found=true;
+	}
+	else{
+		/*Find which interval we fall within: */
+		for(int i=0;i<this->N;i++){
+			if(time==this->timesteps[i]){
+				/*We are right on one step time: */
+				output=this->values[i];
+				found=true;
+				break; //we are done with the time interpolation.
+			}
+			else{
+				if(this->timesteps[i]<time && time<this->timesteps[i+1]){
+					/*ok, we have the interval ]i:i+1[. Interpolate linearly for now: */
+					IssmDouble deltat=this->timesteps[i+1]-this->timesteps[i];
+					IssmDouble alpha=(time-this->timesteps[i])/deltat;
+					if(this->interpolation==true) output=(1.0-alpha)*this->values[i] + alpha*this->values[i+1];
+					else output=this->values[i];
+					found=true;
+					break;
+				}
+				else continue; //keep looking on the next interval
+			}
+		}
+	}
+	if(!found)_error_("did not find time interval on which to interpolate values");
+	*pdouble=output;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/TransientParam.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/TransientParam.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/TransientParam.h	(revision 27955)
@@ -0,0 +1,81 @@
+/*! \file TransientParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _TRANSIENTPARAM_H_
+#define _TRANSIENTPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class TransientParam: public Param{
+
+	protected: 
+		int         enum_type;
+		int         N;
+		bool        interpolation;
+		bool        cycle;
+		IssmDouble *values;
+		IssmDouble *timesteps;
+
+	public:
+		/*TransientParam constructors, destructors: {{{*/
+		TransientParam();
+		TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_in,bool cycle_in,int in_N);
+		~TransientParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(MarshallHandle* marshallhandle);
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a array of integers");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time);
+		void  GetParameterValue(char** pstring){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM,int* pN){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, const char* data){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Vector<IssmDouble>** pvec){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a Vec");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(FILE** pfid){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a IssmDouble vec array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M,int N){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(int* intarray,int M){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a int vec array");}
+		void  SetValue(int* intarray,int M,int N){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a int mat array");};
+		void  SetValue(Vector<IssmDouble>* vec){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a Vec");}
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		void  SetGradient(IssmDouble* poutput, int M, int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmDouble");};
+		/*}}}*/
+};
+#endif  /* _TRANSIENTPARAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/VectorParam.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/VectorParam.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/VectorParam.cpp	(revision 27955)
@@ -0,0 +1,89 @@
+/*!\file VectorParam.c
+ * \brief: implementation of the VectorParam object
+ */
+
+/*header files: */
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*VectorParam constructors and destructor*/
+VectorParam::VectorParam(){/*{{{*/
+	return;
+}
+/*}}}*/
+VectorParam::VectorParam(int in_enum_type,Vector<IssmDouble>* in_value){/*{{{*/
+
+	enum_type=in_enum_type;
+
+	value=NULL;
+
+	if(in_value){
+		value=in_value->Duplicate();
+		in_value->Copy(value);
+	}
+}
+/*}}}*/
+VectorParam::~VectorParam(){/*{{{*/
+	delete value;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Param* VectorParam::copy() {/*{{{*/
+
+	return new VectorParam(this->enum_type,this->value);
+
+}
+/*}}}*/
+void VectorParam::DeepEcho(void){/*{{{*/
+
+	_printf_("VectorParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+	value->Echo();
+}
+/*}}}*/
+void VectorParam::Echo(void){/*{{{*/
+
+	_printf_("VectorParam:\n");
+	_printf_("   enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n");
+
+}
+/*}}}*/
+int  VectorParam::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+int VectorParam::ObjectEnum(void){/*{{{*/
+
+	return VectorParamEnum;
+
+}
+/*}}}*/
+
+/*VectorParam virtual functions definitions: */
+void  VectorParam::GetParameterValue(Vector<IssmDouble>** poutput){/*{{{*/
+	Vector<IssmDouble>*  output=NULL;
+
+	if(value){
+		output=value->Duplicate();
+		value->Copy(output);
+	}
+	*poutput=output;
+}
+/*}}}*/
+void  VectorParam::SetValue(Vector<IssmDouble>* vector){/*{{{*/
+
+	/*avoid leak: */
+	delete value;
+
+	/*copy: */
+	value=vector->Duplicate();
+	vector->Copy(value);
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/VectorParam.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/VectorParam.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Params/VectorParam.h	(revision 27955)
@@ -0,0 +1,78 @@
+/*! \file VectorParam.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _VECTORPARAM_H_
+#define _VECTORPARAM_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Param.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+class VectorParam: public Param{
+
+	private: 
+		/*just hold 3 values for 3 vertices: */
+		int enum_type;
+		Vector<IssmDouble>* value;
+
+	public:
+		/*VectorParam constructors, destructors: {{{*/
+		VectorParam();
+		VectorParam(int enum_type,Vector<IssmDouble>* value);
+		~VectorParam();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Param* copy();
+		void  DeepEcho();
+		void  Echo();
+		int   Id(); 
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!"); };
+		int   ObjectEnum();
+		/*}}}*/
+		/*Param vritual function definitions: {{{*/
+		void  GetParameterValue(bool* pbool){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a bool");}
+		void  GetParameterValue(int* pinteger){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an integer");}
+		void  GetParameterValue(int** pintarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return an array of integers");}
+		void  GetParameterValue(IssmDouble* pIssmDouble){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble");}
+		void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
+		void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
+		void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, int* pN){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble** pIssmDoublearray,int* pM, const char* data){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble array");}
+		void  GetParameterValue(IssmDouble*** parray, int* pM,int** pmdims, int** pndims){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a matrix array");}
+		void  GetParameterValue(Matrix<IssmDouble>** pmat){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a Mat");}
+		void  GetParameterValue(Vector<IssmDouble>** poutput);
+		void  GetParameterValue(FILE** pfid){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot return a FILE");}
+		void  GetParameterValue(DataSet** pdataset){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a DataSet");}
+		int   InstanceEnum(){return enum_type;}
+
+		void  SetEnum(int enum_in){this->enum_type = enum_in;};
+		void  SetValue(bool boolean){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a boolean");}
+		void  SetValue(int integer){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold an integer");}
+		void  SetValue(IssmDouble scalar){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a scalar");}
+		void  SetValue(char* string){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a string");}
+		void  SetValue(char** stringarray,int M){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a string array");}
+		void  SetValue(IssmDouble* IssmDoublearray){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* IssmDoublearray,int M){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a IssmDouble array");}
+		void  SetValue(IssmDouble* pIssmDoublearray,int M,int N){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a IssmDouble array");}
+		void  SetValue(int* intarray,int M){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a int array");}
+		void  SetValue(int* pintarray,int M,int N){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a int array");}
+		void  SetValue(Vector<IssmDouble>* vec);
+		void  SetValue(Matrix<IssmDouble>* mat){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a Mat");}
+		void  SetValue(FILE* fid){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a FILE");}
+		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
+		void  SetGradient(IssmDouble* poutput, int M, int N){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an IssmDouble");};
+		/*}}}*/
+};
+#endif  /* _VECTORPARAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Profiler.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Profiler.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Profiler.cpp	(revision 27955)
@@ -0,0 +1,225 @@
+/*!\file Profiler.c
+ * \brief: implementation of the Profiler object
+ */
+
+/*Include files*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Profiler.h"
+#include "../toolkits/toolkits.h"
+
+/*Profiler constructors and destructors:*/
+Profiler::Profiler(){/*{{{*/
+	for(int i=0;i<MAXPROFSIZE;i++){
+		this->time[i]          = 0.;
+		this->time_start[i]    = 0.;
+		this->flops[i]         = 0.;
+		this->flops_start[i]   = 0.;
+		this->memory[i]        = 0.;
+		this->memory_start[i]  = 0.;
+		this->running[i]       = false;
+		this->used[i]          = false;
+	}
+} /*}}}*/
+Profiler::~Profiler(){/*{{{*/
+	/*Nothing to delete, everything is statically allocated*/
+} /*}}}*/
+Object* Profiler::copy(){/*{{{*/
+	/*First do simple copy: */
+	Profiler* output=new Profiler();
+
+	for(int i=0;i<MAXPROFSIZE;i++){
+		output->time[i]  =this->time[i];
+		output->flops[i] =this->flops[i];
+		output->memory[i]=this->memory[i];
+	}
+
+	return (Object*)output;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+void Profiler::DeepEcho(void){/*{{{*/
+	this->Echo();
+}/*}}}*/
+void Profiler::Echo(void){/*{{{*/
+
+	_printf_("Profiler:\n");
+	for(int i=0;i<MAXPROFSIZE;i++){
+		_printf_("    Tag "<<i<<":\n");
+		_printf_("       flops:   "<<this->flops[i]<<"\n");
+		_printf_("       memory:  "<<this->memory[i]<<"\n");
+		_printf_("       time:    "<<this->time[i]<<"\n");
+		_printf_("       running: "<<this->time[i]<<"\n");
+	}
+
+}
+/*}}}*/
+int  Profiler::Id(void){ /*{{{*/
+	return -1; 
+}
+/*}}}*/
+void Profiler::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	IssmPDouble* pointer = NULL;
+	bool*       bpointer = NULL;
+
+	int object_enum = ProfilerEnum;
+	marshallhandle->call(object_enum);
+	pointer = &this->time[0];
+	marshallhandle->call(pointer,MAXPROFSIZE);
+	pointer = &this->flops[0];
+	marshallhandle->call(pointer,MAXPROFSIZE);
+	pointer = &this->memory[0];
+	marshallhandle->call(pointer,MAXPROFSIZE);
+	bpointer = &this->running[0];
+	marshallhandle->call(bpointer,MAXPROFSIZE);
+
+} /*}}}*/
+int  Profiler::ObjectEnum(void){/*{{{*/
+	return ProfilerEnum;
+}/*}}}*/
+
+/*Profiler routines:*/
+IssmPDouble  Profiler::TotalFlops(int tag){/*{{{*/
+
+	/*Get tag*/
+	_assert_(tag>=0); 
+	_assert_(tag<MAXPROFSIZE); 
+	if(this->running[tag]) _error_("Tag "<<tag<<" has not been stopped");
+
+	return this->flops[tag];
+}/*}}}*/
+IssmPDouble  Profiler::TotalTime(int tag){/*{{{*/
+
+	/*Get tag*/
+	_assert_(tag>=0); 
+	_assert_(tag<MAXPROFSIZE); 
+	if(this->running[tag]) _error_("Tag "<<tag<<" has not been stopped");
+
+	#ifdef _HAVE_MPI_
+	return this->time[tag];
+	#else
+	return this->time[tag]/CLOCKS_PER_SEC;
+	#endif
+}
+/*}}}*/
+int Profiler::TotalTimeModHour(int tag){/*{{{*/
+
+	IssmPDouble delta = this->TotalTime(tag);
+	return int((reCast<int,IssmPDouble>(delta))/3600);
+
+}
+/*}}}*/
+int Profiler::TotalTimeModMin(int tag){/*{{{*/
+
+	IssmPDouble delta = this->TotalTime(tag);
+	return int(int(reCast<int,IssmPDouble>(delta))%3600/60);
+}
+/*}}}*/
+int Profiler::TotalTimeModSec(int tag){/*{{{*/
+
+	IssmPDouble delta = this->TotalTime(tag);
+	return int(reCast<int,IssmPDouble>(delta)%60);
+}
+/*}}}*/
+IssmPDouble  Profiler::Memory(int tag){/*{{{*/
+
+	/*Get initial flops*/
+	_assert_(tag>=0); 
+	_assert_(tag<MAXPROFSIZE); 
+	if(this->running[tag]) _error_("Tag "<<tag<<" has not been stopped");
+
+	return this->memory[tag];
+}
+/*}}}*/
+void  Profiler::Start(int tag,bool dontmpisync){/*{{{*/
+
+	/*Check tag*/
+	_assert_(tag>=0); 
+	_assert_(tag<MAXPROFSIZE); 
+	if(this->running[tag]) _error_("Tag "<<tag<<" is already running");
+
+	/*If mpisync requested, make sure all the cpus are at the same point in the execution: */
+	if(!dontmpisync){
+		ISSM_MPI_Barrier(IssmComm::GetComm()); 
+	}
+
+	/*Capture time: */
+	#ifdef _HAVE_MPI_
+	IssmPDouble t=ISSM_MPI_Wtime();
+	#else
+	IssmPDouble t=(IssmPDouble)clock();
+	#endif
+
+	/*Capture flops: */
+	IssmPDouble f = 0.;
+	IssmPDouble m = 0.;
+	#ifdef _HAVE_PETSC_
+		PetscGetFlops(&f);
+		PetscMemoryGetCurrentUsage(&m);
+	#else
+		/*do nothing for now:*/
+	#endif
+
+	/*Plug into this->time: */
+	_assert_(tag>=0); 
+	_assert_(tag<MAXPROFSIZE); 
+	this->time_start[tag]   = t;
+	this->flops_start[tag]  = f;
+	this->memory_start[tag] = m;
+
+	/*turn on running*/
+	this->running[tag] = true;
+	this->used[tag]    = true;
+}/*}}}*/
+void  Profiler::Stop(int tag,bool dontmpisync){/*{{{*/
+
+	/*Check tag*/
+	_assert_(tag>=0); 
+	_assert_(tag<MAXPROFSIZE); 
+	if(!this->running[tag]) _error_("Tag "<<tag<<" is not running");
+
+	/*If mpisync requested, make sure all the cpus are at the same point in the execution: */
+	if(!dontmpisync){
+		ISSM_MPI_Barrier(IssmComm::GetComm()); 
+	}
+
+	/*Capture time: */
+	#ifdef _HAVE_MPI_
+	IssmPDouble t=ISSM_MPI_Wtime();
+	#else
+	IssmPDouble t=(IssmPDouble)clock();
+	#endif
+
+	/*Capture flops: */
+	IssmPDouble f = 0.;
+	IssmPDouble m = 0.;
+	#ifdef _HAVE_PETSC_
+	PetscGetFlops(&f);
+	PetscMemoryGetCurrentUsage(&m);
+	#else
+	/*do nothing for now:*/
+	#endif
+
+	/*Plug into this->time: */
+	_assert_(tag>=0); 
+	_assert_(tag<MAXPROFSIZE); 
+	this->time[tag]   += t - this->time_start[tag];
+	this->flops[tag]  += f - this->flops_start[tag];
+	this->memory[tag] += m - this->memory_start[tag];
+
+	/*turn off running*/
+	this->running[tag] = false;
+}/*}}}*/
+bool  Profiler::Used(int tag){/*{{{*/
+
+	/*Check tag*/
+	_assert_(tag>=0); 
+	_assert_(tag<MAXPROFSIZE); 
+	return this->used[tag];
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Profiler.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Profiler.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Profiler.h	(revision 27955)
@@ -0,0 +1,77 @@
+/*!\file Profiler.h
+ * \brief: header file for node object
+ */
+
+#ifndef _PROFILER_H_
+#define _PROFILER_H_
+
+/*Headers:*/
+#include "../shared/shared.h"
+#include "../datastructures/datastructures.h"
+
+/*Macros*/
+#define TOTAL              0 /*Profiling Total time */
+#define MPROCESSOR         1 /*Profiling Model processor*/
+#define CORE               2 /*Profiling solution */
+#define SOLVER             3 /*Profiling solution */
+#define ADCORE             4 /*Profiling AD */
+#define THERMALCORE			5 /*Profiling THERMAL */
+#define HYDROLOGYCORE		6 /*Profiling HYDROLOGY */
+#define STRESSBALANCECORE	7 /*Profiling STRESSBALANCE */
+#define DAMAGECORE			8 /*Profiling DAMAGE */
+#define MOVINGFRONTCORE		9 /*Profiling MOVINGFRONT */
+#define MASSTRANSPORTCORE	10 /*Profiling MASSTRANSPORT */
+#define OCEANTRANSPORTCORE	11 /*Profiling OCEANTRANSPORT */
+#define SMBCORE				12 /*Profiling SMB */
+#define GROUNDINGLINECORE	13 /*Profiling GROUDINGLINE MIGRATION */
+#define ESACORE				14 /*Profiling ESA */
+#define SLRCORE				15 /*Profiling SLR */
+#define DEBRISCORE                              16 /*Profiling DEBRIS */
+#define SAMPLINGCORE	17 /*Profiling SAMPLING */
+#define MPISERIAL				18 /*Profiling MPISerial */
+#define SEDLOOP				19 /*Profiling MPISerial */
+#define SEDMatrix				20 /*Profiling MPISerial */
+#define SEDUpdate				21 /*Profiling MPISerial */
+#define EPLLOOP				22 /*Profiling MPISerial */
+#define EPLMasking			23 /*Profiling MPISerial */
+#define EPLMatrices			24 /*Profiling MPISerial */
+#define EPLUpdate				25 /*Profiling MPISerial */
+#define MAXPROFSIZE			26 /*Used to initialize static arrays*/
+
+class Profiler: public Object{
+
+	public:
+		IssmPDouble flops[MAXPROFSIZE];
+		IssmPDouble flops_start[MAXPROFSIZE];
+		IssmPDouble memory[MAXPROFSIZE];
+		IssmPDouble memory_start[MAXPROFSIZE];
+		IssmPDouble time[MAXPROFSIZE];
+		IssmPDouble time_start[MAXPROFSIZE];
+		bool        running[MAXPROFSIZE];
+		bool        used[MAXPROFSIZE];
+
+		/*Profiler constructors, destructors */
+		Profiler();
+		~Profiler();
+
+		/*Object virtual functions definitions*/
+		Object *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		void    Marshall(MarshallHandle* marshallhandle);
+		int     ObjectEnum();
+
+		/*Profiler routines*/
+		IssmPDouble  TotalFlops(int tag);
+		IssmPDouble  TotalTime(int tag);
+		int          TotalTimeModHour(int tag);
+		int          TotalTimeModMin(int tag);
+		int          TotalTimeModSec(int tag);
+		IssmPDouble  Memory(int tag);
+		void         Start(int tagenum,bool dontmpisync=true); /*Do not call MPI barrier by default to save some ms*/
+		void         Stop(int tagenum, bool dontmpisync=true); /*Do not call MPI barrier by default to save some ms*/
+		bool         Used(int tagenum);
+};
+
+#endif  /* _PROFILER_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Radar.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Radar.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Radar.cpp	(revision 27955)
@@ -0,0 +1,275 @@
+/*!\file Radar.cpp
+ * \brief: Radar Object
+ */
+
+/*Headers:*/
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./classes.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./ExternalResults/ExternalResult.h"
+#include "./ExternalResults/Results.h"
+#include "../datastructures/datastructures.h"
+#include "./FemModel.h"
+#include "../classes/Params/Parameters.h"
+#include "../classes/gauss/Gauss.h"
+#include "./Radar.h"
+
+/*Element macros*/
+#define NUMVERTICES   6
+#define NUMVERTICES2D 3
+
+/*Radar constructors, destructors :*/
+Radar::Radar(){/*{{{*/
+	this->definitionenum = -1;
+	this->name = NULL;
+}
+/*}}}*/
+Radar::Radar(char* in_name, int in_definitionenum){/*{{{*/
+	this->definitionenum=in_definitionenum;
+	this->name		= xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+}
+/*}}}*/
+Radar::~Radar(){/*{{{*/
+	if(this->name)xDelete(this->name);
+}
+/*}}}*/
+/*Object virtual function resolution: */
+Object* Radar::copy() {/*{{{*/
+	Radar* out =new Radar(this->name,this->definitionenum);
+	return (Object*)out;
+}
+/*}}}*/
+void Radar::DeepEcho(void){/*{{{*/
+	this->Echo();
+}
+/*}}}*/
+void Radar::Echo(void){/*{{{*/
+	_printf_(" Radar: " << name << " " << this->definitionenum << "\n");
+}
+/*}}}*/
+int Radar::Id(void){/*{{{*/
+	return -1;
+}
+/*}}}*/
+void Radar::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+	_error_("not implemented yet!");
+}
+/*}}}*/
+int Radar::ObjectEnum(void){/*{{{*/
+	return RadarEnum;
+}
+/*}}}*/
+/*Definition virtual function resolutoin: */
+int Radar::DefinitionEnum(){/*{{{*/
+	return this->definitionenum;
+}
+/*}}}*/
+char* Radar::Name(){/*{{{*/
+	char* name2=xNew<char>(strlen(this->name)+1);
+	xMemCpy(name2,this->name,strlen(this->name)+1);
+	return name2;
+}
+/*}}}*/
+IssmDouble Radar::Response(FemModel* femmodel){/*{{{*/
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		this->ComputeRadarAttenuation(element);
+		this->ComputeRadarPower(element);
+	}
+	return 0.;
+}
+	/*}}}*/
+void Radar::ComputeRadarAttenuation(Element* element){/*{{{*/
+	//int         numvertices = element->GetNumberOfVertices();
+	IssmDouble  eps0=8.85418782e-12;
+	IssmDouble  eps_ice=3.17;
+	IssmDouble  e=2.7183;
+	IssmDouble  c=299792458;
+	IssmDouble  k=1.3806488e-23;
+	IssmDouble  eVtoJ=1.6e-19;
+	IssmDouble  Tr_M07=252.1500;
+	IssmDouble  Tr_W97=258.1500;
+	IssmDouble  sig_ice_M07=9.2;
+	IssmDouble  sig_ice_W97=9;
+	IssmDouble  cond_H_M07=3.2;
+	IssmDouble  cond_H_W97=4;
+	IssmDouble  cond_Cl_M07=0.43;
+	IssmDouble  cond_Cl_W97=0.55;
+	IssmDouble  cond_NH_M07=0.8;
+	IssmDouble  cond_NH_W97=1;
+	IssmDouble  E_M07=8.1600e-20;
+	IssmDouble  E_W97=9.2800e-20;
+	IssmDouble  E_H_M07=3.2000e-20;
+	IssmDouble  E_H_W97=3.3600e-20;
+	IssmDouble  E_Cl_M07=3.0400e-20;
+	IssmDouble  E_Cl_W97=3.6800e-20;
+	IssmDouble  E_NH=3.6800e-20;
+	IssmDouble  mol_H_hol=1.6;
+	IssmDouble  mol_H_lgp=0.2;
+	IssmDouble  mol_Cl_hol=0.4;
+	IssmDouble  mol_Cl_lgp=1.8;
+	IssmDouble  mol_NH_hol=0.5;
+	IssmDouble  mol_NH_lgp=0.4;
+	IssmDouble  mol_H, mol_Cl, mol_NH;
+	IssmDouble  attenuation_rate_macgregor[NUMVERTICES];
+	IssmDouble  attenuation_rate_wolff[NUMVERTICES];
+	IssmDouble  temperature, ice_period, attenuation_rate_M07_pureice, attenuation_rate_M07_H, attenuation_rate_M07_Cl, attenuation_rate_M07_NH;
+	IssmDouble  attenuation_rate_W97_pureice, attenuation_rate_W97_H, attenuation_rate_W97_Cl, attenuation_rate_W97_NH;
+	IssmDouble  m1, m2, m3, m4, m5, m6, m7, m8;
+	IssmDouble  w2, w3, w4, w5, w6, w7, w8;
+	GaussPenta* gauss=NULL;
+
+	/*Retrieve all inputs we will be needing: */
+	Input* temp_input=element->GetInput(TemperatureEnum); _assert_(temp_input);
+	Input* ice_period_input=element->GetInput(RadarIcePeriodEnum); _assert_(ice_period_input);
+
+	/* Start looping on the number of vertices: */
+	gauss=new GaussPenta();
+
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		/*Get ice temperature: */
+		temp_input->GetInputValue(&temperature,gauss);
+		ice_period_input->GetInputValue(&ice_period,gauss);
+
+		if(ice_period>0){;
+			mol_H=mol_H_hol;
+			mol_Cl=mol_Cl_hol;
+			mol_NH=mol_NH_hol;
+			}
+		else{
+			mol_H=mol_H_lgp;
+			mol_Cl=mol_Cl_lgp;
+			mol_NH=mol_NH_lgp;
+		}
+
+		/*Compute M07 radar conductivity constant: */
+		m1=(10*log10(e))/(1000*eps0*sqrt(eps_ice)*c);
+		m2=E_M07/k;
+		m3=cond_H_M07*mol_H;
+		m4=E_H_M07/k;
+		m5=cond_Cl_M07*mol_Cl;
+		m6=E_Cl_M07/k;
+		m7=cond_NH_M07*mol_NH;
+		m8=E_NH/k;
+
+		/*Compute MacGregor (M07) attenuation rate: */
+		attenuation_rate_M07_pureice=m1*sig_ice_M07*exp(m2*((1/Tr_M07)-(1/temperature)));
+		attenuation_rate_M07_H=m3*exp(m4*((1/Tr_M07)-(1/temperature)));
+		attenuation_rate_M07_Cl=m5*exp(m6*((1/Tr_M07)-(1/temperature)));
+		attenuation_rate_M07_NH=m7*exp(m8*((1/Tr_M07)-(1/temperature)));
+		attenuation_rate_macgregor[iv]=attenuation_rate_M07_pureice+attenuation_rate_M07_H+attenuation_rate_M07_Cl+attenuation_rate_M07_NH;
+
+	   /*Compute Wolff (W97) radar conductivity constant: */
+		w2=E_W97/k;
+		w3=cond_H_W97*mol_H;
+		w4=E_H_W97/k;
+		w5=cond_Cl_W97*mol_Cl;
+		w6=E_Cl_W97/k;
+		w7=cond_NH_W97*mol_NH;
+		w8=E_NH/k;
+
+		/*Compute Wolff attenuation rate: */
+		attenuation_rate_W97_pureice=m1*sig_ice_W97*exp(w2*((1/Tr_W97)-(1/temperature)));
+		attenuation_rate_W97_H=w3*exp(w4*((1/Tr_W97)-(1/temperature)));
+		attenuation_rate_W97_Cl=w5*exp(w6*((1/Tr_W97)-(1/temperature)));
+		attenuation_rate_W97_NH=w7*exp(w8*((1/Tr_W97)-(1/temperature)));
+		attenuation_rate_wolff[iv]=attenuation_rate_W97_pureice+attenuation_rate_W97_H+attenuation_rate_W97_Cl+attenuation_rate_W97_NH;
+	}
+
+		/*Add Attenuation rate results into inputs*/
+	   element->AddInput(RadarAttenuationMacGregorEnum,&attenuation_rate_macgregor[0],P1Enum);
+		element->AddInput(RadarAttenuationWolffEnum,&attenuation_rate_wolff[0],P1Enum);
+
+		/*Clean up*/
+		delete gauss;
+
+}/*}}}*/
+void Radar::ComputeRadarPower(Element* element){/*{{{*/
+
+	IssmDouble  *xyz_list=NULL;
+	IssmDouble  power_M07[NUMVERTICES];
+	IssmDouble  power_W97[NUMVERTICES];
+	IssmDouble  depth[NUMVERTICES];
+	IssmDouble  aircraft_elev=0.5;
+	IssmDouble  eps_ice=3.15;
+	IssmDouble  t_tp=273.15;         /* triple point temperature [K] */
+	IssmDouble  p_tp=611.73;         /* water pressure [Pa] */
+	IssmDouble  gamma=7.4200e-07; /* Clausius-Clapeyron constant [K/kPa] */
+	IssmDouble  attenuation_rate_macgregor, attenuation_rate_wolff, attenuation_total_M07, attenuation_total_W97;
+	IssmDouble  thickness, surface, z, temperature, geometric_loss, reflectivity;
+	IssmDouble  rho_ice, gravity, pressure, pressure_melting_pt, frozen_temp, basal_temp, basal_pmp;
+	GaussPenta* gauss=NULL;
+
+	/* Get node coordinates*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input *atten_input_M07 = element->GetInput(RadarAttenuationMacGregorEnum); _assert_(atten_input_M07);
+	Input *atten_input_W97 = element->GetInput(RadarAttenuationWolffEnum);     _assert_(atten_input_W97);
+	Input *surf_input      = element->GetInput(SurfaceEnum);                   _assert_(surf_input);
+	Input *thick_input     = element->GetInput(ThicknessEnum);                 _assert_(thick_input);
+	Input *temp_input      = element->GetInput(TemperatureEnum);               _assert_(temp_input);
+
+	/* Start looping on the number of vertices: */
+	gauss=new GaussPenta();
+	for (int iv=0;iv<NUMVERTICES;iv++){
+			gauss->GaussVertex(iv);
+
+			/*Get all the inputs: */
+			atten_input_M07->GetInputValue(&attenuation_rate_macgregor,gauss);
+			atten_input_W97->GetInputValue(&attenuation_rate_wolff,gauss);
+			thick_input->GetInputValue(&thickness,gauss);
+			temp_input->GetInputValue(&temperature,gauss);
+			surf_input->GetInputValue(&surface,gauss);
+
+			/*Compute depth below the ice surface: */
+			z=xyz_list[3*iv+2];
+			depth[iv]=(surface-z)/1e3;
+
+			/*Compute total attenuation: */
+			attenuation_total_M07=attenuation_rate_macgregor*depth[iv];
+			attenuation_total_W97=attenuation_rate_wolff*depth[iv];
+
+			/*Compute geometric loss: */
+			geometric_loss=10*log10((depth[iv]+aircraft_elev)/sqrt(eps_ice));
+
+			/*Compute radar power: */
+			power_M07[iv]=-geometric_loss-attenuation_total_M07;
+			power_W97[iv]=-geometric_loss-attenuation_total_W97;
+
+			/*Identify basal elements: */
+			if(element->IsOnBase() && iv<NUMVERTICES2D){
+
+				/*Compute pressure melting point: */
+				rho_ice=element->FindParam(MaterialsLatentheatEnum);
+				gravity=element->FindParam(ConstantsGEnum);
+				pressure=rho_ice*gravity*thickness;
+				pressure_melting_pt=t_tp-gamma*(pressure-p_tp);
+
+				if((temperature-pressure_melting_pt)<=-1){
+					reflectivity=-40;
+					}
+				else if((temperature-pressure_melting_pt)>-1 && (temperature-pressure_melting_pt)<0){
+					reflectivity=0;
+					}
+				else{
+					reflectivity=70;
+					}
+				power_M07[iv]=power_M07[iv]+reflectivity;
+				power_W97[iv]=power_W97[iv]+reflectivity;
+			}
+		}
+
+	    /*Add power results into inputs*/
+			element->AddInput(RadarPowerMacGregorEnum,&power_M07[0],P1Enum);
+			element->AddInput(RadarPowerWolffEnum,&power_W97[0],P1Enum);
+
+		/*Clean up and return*/
+		delete gauss;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Radar.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Radar.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Radar.h	(revision 27955)
@@ -0,0 +1,40 @@
+/*!\file Radar.h
+ * \brief: header file for Radar object
+ */
+
+#ifndef _RADAR_H_
+#define _RADAR_H_
+
+/*Headers:*/
+#include "./Definition.h"
+#include "./FemModel.h"
+
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum);
+
+class Radar: public Object, public Definition{
+
+	public: 
+		char* name;
+		int	definitionenum;
+
+		/*Radar constructors, destructors :*/
+		Radar();
+		Radar(char* in_name, int in_definitionenum);
+		~Radar();
+
+		/*Object virtual function resolutoin: */
+		Object* copy();
+		void DeepEcho(void);
+		void Echo(void);
+		int  Id(void);
+		void Marshall(MarshallHandle* marshallhandle);
+		int ObjectEnum(void);
+
+		/*Definition virtual function resolutoin: */
+		int DefinitionEnum();
+		char* Name();
+		IssmDouble Response(FemModel* femmodel);
+		void ComputeRadarAttenuation(Element* element);
+		void ComputeRadarPower(Element* element);
+};
+#endif  /* _RADAR_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Regionaloutput.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Regionaloutput.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Regionaloutput.cpp	(revision 27955)
@@ -0,0 +1,161 @@
+/*!\file Regionaloutput.cpp
+ * \brief: implementation for the Regionaloutput object
+ */
+
+/*Include files: {{{*/
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Headers:*/
+#include "./classes.h"
+#include "./Definition.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "../classes/Params/Parameters.h"
+
+/*}}}*/
+
+Regionaloutput::Regionaloutput(char* in_name, int in_definitionenum, char* in_outputname, IssmDouble* maskin, int Min){ /*{{{*/
+
+	this->definitionenum=in_definitionenum;
+	this->outputname = xNew<char>(strlen(in_outputname)+1);
+	xMemCpy<char>(this->outputname,in_outputname,strlen(in_outputname)+1);
+	this->name = xNew<char>(strlen(in_name)+1);
+	xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+	this->mask   = xNew<IssmDouble>(Min);
+	xMemCpy<IssmDouble>(this->mask, maskin, Min);
+
+	this->M=Min;
+
+}
+/*}}}*/
+Regionaloutput::~Regionaloutput(){/*{{{*/
+	if(this->name)xDelete(this->name);
+	if(this->outputname)xDelete(this->outputname);
+	if(this->mask)xDelete(this->mask);
+}
+/*}}}*/
+
+/*Object virtual function resolutoin: */
+Object* Regionaloutput::copy() {/*{{{*/
+	Regionaloutput* mf = new Regionaloutput(this->name,this->definitionenum,this->outputname,this->mask,this->M);
+	return (Object*) mf;
+}
+/*}}}*/
+void Regionaloutput::DeepEcho(void){/*{{{*/
+	this->Echo();
+}
+/*}}}*/
+void Regionaloutput::Echo(void){/*{{{*/
+	_printf_(" Regionaloutput: " << this->name << " " << this->definitionenum << "\n");
+	_printf_("    outputname enum: " << this->outputname << "Enum\n");
+	_printf_("    mask: " << this->mask << "\n");
+	_printf_("    M: " << this->M << "\n");
+}
+/*}}}*/
+int Regionaloutput::Id(void){/*{{{*/
+	return -1;
+}
+/*}}}*/
+void Regionaloutput::Marshall(MarshallHandle* marshallhandle){/*{{{*/
+	_error_("not implemented yet!");
+}
+/*}}}*/
+int Regionaloutput::ObjectEnum(void){/*{{{*/
+	return RegionaloutputEnum;
+}
+/*}}}*/
+
+/*Definition virtual function resolutoin: */
+int Regionaloutput::DefinitionEnum(){/*{{{*/
+
+	return this->definitionenum;
+}
+/*}}}*/
+char* Regionaloutput::Name(){/*{{{*/
+
+	char* name2=xNew<char>(strlen(this->name)+1);
+	xMemCpy(name2,this->name,strlen(this->name)+1);
+
+	return name2;
+}
+/*}}}*/
+IssmDouble Regionaloutput::Response(FemModel* femmodel){/*{{{*/
+
+	IssmDouble val_t=0.;
+	IssmDouble all_val_t=0.;
+	int outputenum = StringToEnumx(this->outputname);
+
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		switch(outputenum){
+			case GroundedAreaEnum:
+				val_t+=element->GroundedArea(this->mask,false);
+				break;
+			case GroundedAreaScaledEnum:
+				val_t+=element->GroundedArea(this->mask,true);
+				break;
+			case FloatingAreaEnum:
+				val_t+=element->FloatingArea(this->mask,false);
+				break;
+			case FloatingAreaScaledEnum:
+				val_t+=element->FloatingArea(this->mask,true);
+				break;
+			case IceMassEnum:
+				val_t+=element->IceMass(this->mask,false);
+				break;
+			case IceMassScaledEnum:
+				val_t+=element->IceMass(this->mask,true);
+				break;
+			case IceVolumeEnum:
+				val_t+=element->IceVolume(this->mask,false);
+				break;
+			case IceVolumeScaledEnum:
+				val_t+=element->IceVolume(this->mask,true);
+				break;
+			case IceVolumeAboveFloatationEnum:
+				val_t+=element->IceVolumeAboveFloatation(this->mask,false);
+				break;
+			case IceVolumeAboveFloatationScaledEnum:
+				val_t+=element->IceVolumeAboveFloatation(this->mask,true);
+				break;
+			case TotalFloatingBmbEnum:
+				val_t+=element->TotalFloatingBmb(this->mask,false);
+				break;
+			case TotalFloatingBmbScaledEnum:
+				val_t+=element->TotalFloatingBmb(this->mask,true);
+				break;
+			case TotalGroundedBmbEnum:
+				val_t+=element->TotalGroundedBmb(this->mask,false);
+				break;
+			case TotalGroundedBmbScaledEnum:
+				val_t+=element->TotalGroundedBmb(this->mask,true);
+				break;
+			case TotalSmbEnum:
+				val_t+=element->TotalSmb(this->mask,false);
+				break;
+			case TotalSmbScaledEnum:
+				val_t+=element->TotalSmb(this->mask,true);
+				break;
+			case TotalSmbMeltEnum:
+				val_t+=element->TotalSmbMelt(this->mask,true);
+				break;
+			case TotalSmbRefreezeEnum:
+				val_t+=element->TotalSmbRefreeze(this->mask,true);
+				break;
+			default:
+				_error_("Regional output type " << this->outputname << " not supported yet!");
+		}
+	}
+
+	ISSM_MPI_Allreduce ( (void*)&val_t,(void*)&all_val_t,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+	val_t=all_val_t;
+
+	return val_t;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Regionaloutput.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Regionaloutput.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Regionaloutput.h	(revision 27955)
@@ -0,0 +1,43 @@
+/*!\file Regionaloutput.h
+ * \brief: header file for Regionaloutput object
+ */
+
+#ifndef _REGIONALOUTPUT_H_
+#define _REGIONALOUTPUT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Definition.h"
+#include "./FemModel.h"
+
+/*}}}*/
+
+class Regionaloutput: public Object, public Definition{
+
+public: 
+
+	int         definitionenum;
+	char*       outputname;
+	char*       name;
+	IssmDouble* mask;
+	int         M;
+
+	/*Regionalicevolume: constructors, destructors :*/
+	Regionaloutput();
+	Regionaloutput(char* in_name, int in_definitionenum, char* in_outputname, IssmDouble* maskin, int Min);
+	~Regionaloutput();
+
+	/*Object virtual function resolutoin: */
+	Object* copy();
+	void DeepEcho(void);
+	void Echo(void);
+	int Id(void);
+	void Marshall(MarshallHandle* marshallhandle);
+	int ObjectEnum(void);
+
+	/*Definition virtual function resolutoin: */
+	int DefinitionEnum();
+	char* Name();
+	IssmDouble Response(FemModel* femmodel);
+};
+#endif  /* _REGIONALOUTPUT_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/RiftStruct.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/RiftStruct.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/RiftStruct.cpp	(revision 27955)
@@ -0,0 +1,94 @@
+/*!\file RiftStruct.c
+ * \brief: implementation of the RiftStruct object
+ */
+
+#include "./classes.h"
+#include "../shared/Enum/Enum.h"
+#include "../shared/shared.h"
+
+/*RiftStruct constructors and destructor*/
+RiftStruct::RiftStruct(void){/*{{{*/
+
+	this->numrifts             = 0;
+	this->riftsnumsegments     = NULL;
+	this->riftssegments        = NULL;
+	this->riftsnumpairs        = NULL;
+	this->riftspairs           = NULL;
+	this->riftsnumpenaltypairs = NULL;
+	this->riftspenaltypairs    = NULL;
+	this->riftstips            = NULL;
+	this->state                = NULL;
+
+}/*}}}*/
+RiftStruct::RiftStruct(int numrifts_in,int *riftsnumsegments_in,int**riftssegments_in,int *riftsnumpairs_in,int**riftspairs_in,int *riftsnumpenaltypairs_in,double **riftspenaltypairs_in,int * riftstips_in){/*{{{*/
+
+	int i;
+
+	/*numrifts*/
+	this->numrifts = numrifts_in;
+	if(!numrifts_in) return;
+
+	/*riftsnumsegments*/
+	_assert_(riftsnumsegments_in);
+	this->riftsnumsegments=xNew<int>(numrifts_in);
+	xMemCpy<int>(this->riftsnumsegments,riftsnumsegments_in,numrifts_in);
+
+	/*riftssegments*/
+	_assert_(riftssegments_in);
+	this->riftssegments=xNew<int*>(numrifts_in);
+	for(i=0;i<numrifts_in;i++){
+		this->riftssegments[i]=xNew<int>(riftsnumsegments_in[i]*3);
+		xMemCpy<int>(this->riftssegments[i],riftssegments_in[i],riftsnumsegments_in[i]*3);
+	}
+
+	/*riftsnumpairs*/
+	_assert_(riftsnumpairs_in);
+	this->riftsnumpairs=xNew<int>(numrifts_in);
+	xMemCpy<int>(this->riftsnumpairs,riftsnumpairs_in,numrifts_in);
+
+	/*riftspairs*/
+	_assert_(riftspairs_in);
+	this->riftspairs=xNew<int*>(numrifts_in);
+	for(i=0;i<numrifts_in;i++){
+		this->riftspairs[i]=xNew<int>(riftsnumpairs_in[i]*2);
+		xMemCpy<int>(this->riftspairs[i],riftspairs_in[i],riftsnumpairs_in[i]*2);
+	}
+
+	/*riftsnumpenaltypairs*/
+	_assert_(riftsnumpenaltypairs_in);
+	this->riftsnumpenaltypairs=xNew<int>(numrifts_in);
+	xMemCpy<int>(this->riftsnumpenaltypairs,riftsnumpenaltypairs_in,numrifts_in);
+
+	/*riftspenaltypairs*/
+	_assert_(riftspenaltypairs_in);
+	this->riftspenaltypairs=xNew<double*>(numrifts_in);
+	for(i=0;i<numrifts_in;i++){
+		this->riftspenaltypairs[i]=xNew<double>(riftsnumpenaltypairs_in[i]*7);
+		xMemCpy<double>(this->riftspenaltypairs[i],riftspenaltypairs_in[i],riftsnumpenaltypairs_in[i]*7);
+	}
+
+	/*riftstips*/
+	_assert_(riftstips_in);
+	this->riftstips=xNew<int>(2*numrifts_in);
+	xMemCpy<int>(this->riftstips,riftstips_in,2*numrifts_in);
+
+	/*state*/
+	this->state=xNew<double*>(numrifts_in);
+	for(i=0;i<numrifts_in;i++){
+		this->state[i]=xNew<double>(riftsnumpenaltypairs_in[i]);
+		for(int j=0;j<riftsnumpenaltypairs_in[i];j++) (this->state[i])[j]=FreeEnum;
+	}
+
+}/*}}}*/
+RiftStruct::~RiftStruct(void){/*{{{*/
+
+	xDelete<int>(this->riftsnumsegments);
+	xDelete<int*>(this->riftssegments);
+	xDelete<int>(this->riftsnumpairs);
+	xDelete<int*>(this->riftspairs);
+	xDelete<int>(this->riftsnumpenaltypairs);
+	xDelete<double*>(this->riftspenaltypairs);
+	xDelete<int>(this->riftstips);
+	xDelete<double*>(this->state);
+
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/RiftStruct.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/RiftStruct.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/RiftStruct.h	(revision 27955)
@@ -0,0 +1,26 @@
+/*!\file:  RiftStruct.h
+ * \brief place holder for Rift Structure in mex module
+ */ 
+
+#ifndef _RIFTSTRUCT_H_
+#define _RIFTSTRUCT_H_
+
+class RiftStruct{
+
+	public:
+		int      numrifts;
+		int    **riftspairs;
+		double **riftspenaltypairs;
+		int     *riftsnumpairs;
+		int     *riftsnumpenaltypairs;
+		int     *riftsnumsegments;
+		int    **riftssegments;
+		int     *riftstips;
+		double **state;
+
+		RiftStruct();
+		RiftStruct(int numrifts_in,int *riftsnumsegments_in,int **riftssegments_in,int *riftsnumpairs_in,int **riftspairs_in,int *riftsnumpenaltypairs_in,double **riftspenaltypairs_in,int* riftstips_in);
+		~RiftStruct();
+};
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/SealevelGeometry.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/SealevelGeometry.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/SealevelGeometry.cpp	(revision 27955)
@@ -0,0 +1,200 @@
+/*
+ * \file SealevelGeometry.cpp
+ * \brief: Implementation of SealevelGeometry class
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./SealevelGeometry.h"
+
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+SealevelGeometry::SealevelGeometry(int localnelin,int localnodsin){ /*{{{*/
+	localnel=localnelin;
+	for(int i=0;i<SLGEOM_NUMLOADS;i++){
+		for (int j=0;j<SLMAXVERTICES;j++){
+			LoadWeigths[i][j]=xNewZeroInit<IssmDouble>(localnel);
+		}
+		vlatbarycentre[i]=NULL; //we don't know yet 
+		vlongbarycentre[i]=NULL;
+		vareae_subel[i]=NULL;
+		latbarycentre[i]=NULL; //we don't know yet 
+		longbarycentre[i]=NULL;
+		area_subel[i]=NULL;
+
+		LoadArea[i]=xNewZeroInit<IssmDouble>(localnel);
+		issubelement[i]=xNewZeroInit<bool>(localnel);
+		subelementmapping[i]=NULL;
+		nsubel[i]=0;
+		nbar[i]=0;
+		Ylm_subel[i]= xNewZeroInit<IssmDouble>(localnel*9);
+	}
+	late=xNew<IssmDouble>(localnel);
+	longe=xNew<IssmDouble>(localnel);
+	isoceanin=xNew<bool>(localnel);
+	lids=xNew<int>(localnodsin);
+	Ylm=xNewZeroInit<IssmDouble>(localnel*9); // (degmax+1)^2 terms, degmax=2 
+
+}; /*}}}*/
+SealevelGeometry::~SealevelGeometry(){ /*{{{*/
+	for(int i=0;i<SLGEOM_NUMLOADS;i++){
+		for (int j=0;j<SLMAXVERTICES;j++){
+			xDelete<IssmDouble>(LoadWeigths[i][j]);
+		}
+		xDelete<IssmDouble>(LoadArea[i]);
+		xDelete<bool>(issubelement[i]);
+		xDelete<int>(subelementmapping[i]);
+		delete  vlatbarycentre[i];
+		delete  vlongbarycentre[i];
+		delete  vareae_subel[i];
+		xDelete<IssmDouble>(latbarycentre[i]);
+		xDelete<IssmDouble>(longbarycentre[i]);
+		xDelete<IssmDouble>(area_subel[i]);
+		xDelete<IssmDouble>(Ylm_subel[i]);
+	}
+	xDelete<IssmDouble>(Ylm);
+	xDelete<IssmDouble>(late);
+	xDelete<IssmDouble>(longe);
+	xDelete<bool>(isoceanin);
+	xDelete<int>(lids);
+}; /*}}}*/
+
+void SealevelGeometry::InitializeMappingsAndBarycentres(void){ /*{{{*/
+
+	int dummy;
+	bool fromlocalsize=true;
+	int lower_row;
+
+	for (int i=0;i<SLGEOM_NUMLOADS;i++){
+		subelementmapping[i]=xNew<int>(localnel);
+		#ifdef _HAVE_PETSC_
+		GetOwnershipBoundariesFromRange(&lower_row,&dummy,nsubel[i],IssmComm::GetComm());
+		#else
+		_error_("not supported without PETSc compiled");
+		#endif
+
+		int count=0;
+		for (int j=0;j<localnel;j++){
+			if(issubelement[i][j]){
+				subelementmapping[i][j]=lower_row+count;
+				count++;
+			}
+		}
+	}
+
+	/*Initialize barycentre vectors, now that we know their size: */
+	for (int i=0;i<SLGEOM_NUMLOADS;i++){
+		vlatbarycentre[i]=new Vector<IssmDouble>(nsubel[i],fromlocalsize);
+		vlongbarycentre[i]=new Vector<IssmDouble>(nsubel[i],fromlocalsize);
+		vareae_subel[i]=new Vector<IssmDouble>(nsubel[i],fromlocalsize);
+		vlatbarycentre[i]->GetSize(&nbar[i]);
+	}
+
+} /*}}}*/
+void SealevelGeometry::Assemble(void){ /*{{{*/
+
+	/*Initialize barycentre vectors, now that we know their size: */
+	for (int i=0;i<SLGEOM_NUMLOADS;i++){
+		vlatbarycentre[i]->Assemble();
+		vlongbarycentre[i]->Assemble();
+		vareae_subel[i]->Assemble();
+
+		latbarycentre[i]=vlatbarycentre[i]->ToMPISerial();
+		longbarycentre[i]=vlongbarycentre[i]->ToMPISerial();
+		area_subel[i]=vareae_subel[i]->ToMPISerial();
+	}
+
+	/*Also, we'll need the barycentre associated areas:*/
+
+} /*}}}*/
+int SealevelGeometry::AlphaIndexEnum(int l){ /*{{{*/
+
+	int output = -1;
+	switch(l){
+		case SLGEOM_OCEAN: output=SealevelchangeAlphaIndexOceanEnum; break;
+		case SLGEOM_ICE:   output=SealevelchangeAlphaIndexIceEnum;   break;
+		case SLGEOM_WATER: output=SealevelchangeAlphaIndexHydroEnum; break;
+		default: _error_("not supported");
+	}
+	return output;
+
+} /*}}}*/
+int SealevelGeometry::AzimuthIndexEnum(int l){ /*{{{*/
+
+	int output = -1;
+	switch(l){
+		case SLGEOM_OCEAN: output=SealevelchangeAzimuthIndexOceanEnum; break;
+		case SLGEOM_ICE:   output=SealevelchangeAzimuthIndexIceEnum;   break;
+		case SLGEOM_WATER: output=SealevelchangeAzimuthIndexHydroEnum; break;
+		default: _error_("not supported");
+	}
+	return output;
+
+} /*}}}*/
+void SealevelGeometry::BuildSphericalHarmonics(){ /*{{{*/
+	//builds spherical harmonics functions for degrees 0, 1, 2 on centroids/barycenters
+	//0: used for global average
+	//1: used for geocenter motion
+	//2: used for rotational feedback
+	int intj, count;
+
+	IssmDouble YlmNorm[9];
+
+	//YlmNormalization: N^2=(2*l+1)/4/pi * factorial(l-m)/factorial(l+m) if m==0
+	//             : 2*N^2 if m>0
+	// such that integral(Ylm * Ylm *YlmNorm dS) = 1 on the unit sphere.
+	YlmNorm[0]=(0.25/M_PI); //Y00
+	YlmNorm[1]=(0.75/M_PI); //Y10
+	YlmNorm[2]=(0.75/M_PI); //Y11c
+	YlmNorm[3]=YlmNorm[2];	 //Y11s
+	YlmNorm[4]=(1.25/M_PI); //Y20
+	YlmNorm[5]=(1.25/3./M_PI); //Y21c
+	YlmNorm[6]=YlmNorm[5]; //Y21s
+	YlmNorm[7]=(1.25/12./M_PI); //Y22c
+	YlmNorm[8]=YlmNorm[7]; //Y22s
+
+	for (int e=0;e<localnel;e++){
+		IssmDouble lat=late[e]*M_PI/180.;
+		IssmDouble lon=longe[e]*M_PI/180.;
+		Ylm[0*localnel+e] = 1.0 *YlmNorm[0]; //Y00
+
+		Ylm[1*localnel+e] = sin(lat)*YlmNorm[1]; //Y10
+		Ylm[2*localnel+e] = cos(lat)*cos(lon)*YlmNorm[2]; //Y11cos
+		Ylm[3*localnel+e] = cos(lat)*sin(lon)*YlmNorm[3]; //Y11sin
+
+		//Ylm[4*localnel+e] = 0.25 - 0.75*cos(2.0*lat) ; //Y20
+		Ylm[4*localnel+e] = (1.5*pow(sin(lat),2.)-0.5)*YlmNorm[4]; //Y20
+		Ylm[5*localnel+e] = 1.5*sin(2.*lat)*cos(lon)*YlmNorm[5]; //Y21cos
+		Ylm[6*localnel+e] = 1.5*sin(2.*lat)*sin(lon)*YlmNorm[6]; //Y21sin
+		Ylm[7*localnel+e] = 1.5*(1.+cos(2.*lat))*cos(2.*lon)*YlmNorm[7]; //Y22cos
+		Ylm[8*localnel+e] = 1.5*(1.+cos(2.*lat))*sin(2.*lon)*YlmNorm[8]; //Y22sin
+	}
+
+	for (int i=0;i<SLGEOM_NUMLOADS;i++){
+		for (int e=0;e<localnel;e++){
+			if (issubelement[i][e]){
+				intj=subelementmapping[i][e];
+				IssmDouble lat=latbarycentre[i][intj]*M_PI/180.;
+				IssmDouble lon=longbarycentre[i][intj]*M_PI/180.;
+				Ylm_subel[i][0*localnel+e] = 1.0*YlmNorm[0]; //Y00
+
+				Ylm_subel[i][1*localnel+e] = sin(lat)*YlmNorm[1]; //Y10
+				Ylm_subel[i][2*localnel+e] = cos(lat)*cos(lon)*YlmNorm[2]; //Y11cos
+				Ylm_subel[i][3*localnel+e] = cos(lat)*sin(lon)*YlmNorm[3]; //Y11sin
+
+				Ylm_subel[i][4*localnel+e] = (1.5*pow(sin(lat),2.)-0.5)*YlmNorm[4]; //Y20
+				Ylm_subel[i][5*localnel+e] = 1.5*sin(2.*lat)*cos(lon)*YlmNorm[5]; //Y21cos
+				Ylm_subel[i][6*localnel+e] = 1.5*sin(2.*lat)*sin(lon)*YlmNorm[6]; //Y21sin
+				Ylm_subel[i][7*localnel+e] = 1.5*(1.+cos(2.*lat))*cos(2.*lon)*YlmNorm[7]; //Y22cos
+				Ylm_subel[i][8*localnel+e] = 1.5*(1.+cos(2.*lat))*sin(2.*lon)*YlmNorm[8]; //Y22sin
+			}
+		}
+	}
+} /*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/SealevelGeometry.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/SealevelGeometry.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/SealevelGeometry.h	(revision 27955)
@@ -0,0 +1,51 @@
+/*!\file SealevelGeometry.h
+ * \brief: header file for SealevelMask geometry
+ */
+
+#ifndef _SEALEVELGEOMETRY_H_
+#define _SEALEVELGEOMETRY_H_
+
+/*Headers:*/
+#define SLGEOM_NUMLOADS 3
+#define SLGEOM_OCEAN 0 
+#define SLGEOM_ICE 1 
+#define SLGEOM_WATER 2
+#define SLMAXVERTICES 3
+
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+
+class SealevelGeometry{ 
+
+	public: 
+
+		int         localnel;
+		IssmDouble* LoadWeigths[SLGEOM_NUMLOADS][SLMAXVERTICES];
+		IssmDouble* LoadArea[SLGEOM_NUMLOADS];
+		Vector<IssmDouble>* vlatbarycentre[SLGEOM_NUMLOADS];
+		Vector<IssmDouble>* vlongbarycentre[SLGEOM_NUMLOADS];
+		Vector<IssmDouble>* vareae_subel[SLGEOM_NUMLOADS];
+		IssmDouble* latbarycentre[SLGEOM_NUMLOADS];
+		IssmDouble* longbarycentre[SLGEOM_NUMLOADS];
+		IssmDouble* area_subel[SLGEOM_NUMLOADS];
+		IssmDouble* late;
+		IssmDouble* longe;
+		IssmDouble* Ylm;
+		IssmDouble* Ylm_subel[SLGEOM_NUMLOADS];
+		IssmDouble* YlmNorm[9];
+		bool* isoceanin;
+		bool*       issubelement[SLGEOM_NUMLOADS]; 
+		int*        subelementmapping[SLGEOM_NUMLOADS];
+		int         nsubel[SLGEOM_NUMLOADS];
+		int         nbar[SLGEOM_NUMLOADS];
+		int*        lids; 
+
+		SealevelGeometry(int localnel,int localnods);
+		~SealevelGeometry();
+		void InitializeMappingsAndBarycentres(void);
+		void Assemble(void);
+		int AlphaIndexEnum(int l);
+		int AzimuthIndexEnum(int l);
+		void BuildSphericalHarmonics(void);
+};
+#endif  /* _SEALEVELGEOMETRY_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Segment.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Segment.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Segment.h	(revision 27955)
@@ -0,0 +1,80 @@
+/*!\file Segment.h
+ * \brief: header file for node object
+ */
+
+#ifndef _SEGMENT_H_
+#define _SEGMENT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../datastructures/datastructures.h"
+#include "../shared/Numerics/constants.h"
+/*}}}*/
+
+template <class doubletype> 
+class Segment: public Object{
+
+	public:
+		int        eid;
+		doubletype x1;
+		doubletype y1;
+		doubletype x2;
+		doubletype y2;
+
+		/*Segment constructors, destructors :*/
+		Segment(){/*{{{*/
+			this->eid = UNDEF;
+			this->x1  = UNDEF;
+			this->y1  = UNDEF;
+			this->x2  = UNDEF;
+			this->y2  = UNDEF;
+		}
+		/*}}}*/
+		Segment(int segment_eid, doubletype segment_x1,doubletype segment_y1,doubletype segment_x2, doubletype segment_y2){/*{{{*/
+
+			this->eid = segment_eid;
+			this->x1  = segment_x1;
+			this->y1  = segment_y1;
+			this->x2  = segment_x2;
+			this->y2  = segment_y2;
+
+		}
+		/*}}}*/
+		~Segment(){/*{{{*/
+		}
+		/*}}}*/
+
+		/*Object virtual functions definitions:*/
+		Object* copy() {/*{{{*/
+			return new Segment(this->eid,this->x1,this->y1,this->x2,this->y2);
+		}
+		/*}}}*/
+		void DeepEcho(void){/*{{{*/
+			this->Echo();
+		}
+		/*}}}*/
+		void Echo(void){/*{{{*/
+
+			_printf_("Segment:\n");
+			_printf_("   eid: " << eid << "\n");
+			_printf_("   node 1: " << this->x1 << "|" << this->y1 << "\n");
+			_printf_("   node 2: " << this->x2 << "|" << this->y2 << "\n");
+
+		}
+		/*}}}*/
+		int    Id(void){ return eid; }/*{{{*/
+		/*}}}*/
+		void Marshall(MarshallHandle* marshallhandle){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
+		int ObjectEnum(void){/*{{{*/
+
+			return SegmentEnum;
+
+		}
+		/*}}}*/
+
+};
+
+#endif  /* _SEGMENT_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Vertex.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Vertex.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Vertex.cpp	(revision 27955)
@@ -0,0 +1,246 @@
+/*!\file Vertex.c
+ * \brief: implementation of the Vertex object
+ */
+
+/*Include files: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <string.h>
+#include "classes.h"
+#include "shared/shared.h"
+/*}}}*/
+
+/*Vertex constructors and destructor:*/
+Vertex::Vertex(){/*{{{*/
+	return;
+}
+/*}}}*/
+Vertex::Vertex(int vertex_id, int vertex_sid,bool vertex_clone, IoModel* iomodel,bool isamr){/*{{{*/
+
+	/*Checks in debugging mode*/
+	_assert_(vertex_sid>=0 && vertex_sid<iomodel->numberofvertices);
+
+	/*IDs*/
+	this->id    = vertex_id;
+	this->sid   = vertex_sid;
+	this->pid   = -1; /*Assigned later*/
+	this->lid   = -1; /*Assigned later*/
+	this->clone = vertex_clone;
+
+	/*Properties from iomodel*/
+	_assert_(iomodel->numbernodetoelementconnectivity);
+	this->connectivity = iomodel->numbernodetoelementconnectivity[vertex_sid];
+	this->domaintype   = iomodel->domaintype;
+
+	/*Coordinates, only if not AMR*/
+	if(!isamr){
+		_assert_(iomodel->Data("md.mesh.x") && iomodel->Data("md.mesh.y") && iomodel->Data("md.mesh.z"));
+		this->x            = iomodel->Data("md.mesh.x")[vertex_sid];
+		this->y            = iomodel->Data("md.mesh.y")[vertex_sid];
+		this->z            = iomodel->Data("md.mesh.z")[vertex_sid];
+		if(iomodel->Data("md.mesh.lat") && iomodel->Data("md.mesh.long")){
+			this->latitute     = iomodel->Data("md.mesh.lat")[vertex_sid];
+			this->longitude    = iomodel->Data("md.mesh.long")[vertex_sid];
+		}
+
+		switch(iomodel->domaintype){
+			case Domain3DEnum:
+				_assert_(iomodel->Data("md.geometry.base") && iomodel->Data("md.geometry.thickness"));
+				this->sigma = (iomodel->Data("md.mesh.z")[vertex_sid]-iomodel->Data("md.geometry.base")[vertex_sid])/(iomodel->Data("md.geometry.thickness")[vertex_sid]);
+				break;
+			case Domain3DsurfaceEnum:
+				_assert_(iomodel->Data("md.mesh.lat") && iomodel->Data("md.mesh.long") && iomodel->Data("md.mesh.r"));
+				this->latitute     = iomodel->Data("md.mesh.lat")[vertex_sid];
+				this->longitude    = iomodel->Data("md.mesh.long")[vertex_sid];
+				this->R            = iomodel->Data("md.mesh.r")[vertex_sid];
+				break;
+			case Domain2DhorizontalEnum:
+				this->sigma = 0.;
+				break;
+			case Domain2DverticalEnum:
+				_assert_(iomodel->Data("md.geometry.base") && iomodel->Data("md.geometry.thickness"));
+				this->sigma = (iomodel->Data("md.mesh.y")[vertex_sid]-iomodel->Data("md.geometry.base")[vertex_sid])/(iomodel->Data("md.geometry.thickness")[vertex_sid]);
+				break;
+		}
+	}
+	else{
+		this->x         = 0.;
+		this->y         = 0.;
+		this->z         = 0.;
+		this->latitute  = 0.;
+		this->longitude = 0.;
+		this->R         = 0.;
+		this->sigma     = 0.;
+	}
+
+}/*}}}*/
+Vertex::~Vertex(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Vertex::copy() {/*{{{*/
+
+	return new Vertex(*this); 
+
+}
+/*}}}*/
+void Vertex::DeepEcho(void){/*{{{*/
+	this->Echo();
+}
+/*}}}*/
+void Vertex::Echo(void){/*{{{*/
+
+	_printf_("Vertex:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   sid: " << sid << "\n");
+	_printf_("   pid: " << pid << "\n");
+	_printf_("   lid: " << lid << "\n");
+	_printf_("   x: " << x << "\n");
+	_printf_("   y: " << y << "\n");
+	_printf_("   z: " << z << "\n");
+	_printf_("   sigma: " << sigma << "\n");
+	_printf_("   connectivity: " << connectivity << "\n");
+	_printf_("   clone: " << clone << "\n");
+
+	return;
+}
+/*}}}*/
+int Vertex::Id(void){ return id; }/*{{{*/
+/*}}}*/
+void Vertex::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = VertexEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->clone);
+	marshallhandle->call(this->domaintype);
+	marshallhandle->call(this->id);
+	marshallhandle->call(this->sid);
+	marshallhandle->call(this->pid);
+	marshallhandle->call(this->lid);
+	marshallhandle->call(this->x);
+	marshallhandle->call(this->y);
+	marshallhandle->call(this->z);
+	marshallhandle->call(this->sigma);
+	marshallhandle->call(this->connectivity);
+
+}
+/*}}}*/
+int Vertex::ObjectEnum(void){/*{{{*/
+	return VertexEnum;
+}/*}}}*/
+
+/*Vertex management: */
+int        Vertex::Connectivity(void){return connectivity;}/*{{{*/
+/*}}}*/
+IssmDouble Vertex::GetLatitude(){/*{{{*/
+	return this->latitute;
+}
+/*}}}*/
+IssmDouble Vertex::GetLongitude(){/*{{{*/
+	return this->longitude;
+}
+/*}}}*/
+IssmDouble Vertex::GetRadius(){/*{{{*/
+	return this->R;
+}
+/*}}}*/
+IssmDouble Vertex::GetX(){/*{{{*/
+	return this->x;
+}
+/*}}}*/
+IssmDouble Vertex::GetY(){/*{{{*/
+	return this->y;
+}
+/*}}}*/
+IssmDouble Vertex::GetZ(){/*{{{*/
+	return this->z;
+}
+/*}}}*/
+int        Vertex::Pid(void){ return pid; }/*{{{*/
+/*}}}*/
+int        Vertex::Lid(void){ return lid; }/*{{{*/
+/*}}}*/
+int        Vertex::Sid(void){ return sid; }/*{{{*/
+/*}}}*/
+void       Vertex::UpdatePosition(Vector<IssmDouble>* vx,Vector<IssmDouble>* vy,Vector<IssmDouble>* vz,Parameters* parameters,IssmDouble* surface,IssmDouble* bed){/*{{{*/
+
+	IssmDouble oldy,newy,vely;
+	IssmDouble oldz,newz,velz;
+	IssmDouble dt;
+
+	/*Get time stepping*/
+	parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+
+	/*sigma remains constant. z=bed+sigma*thickness*/
+	switch(this->domaintype){
+		case Domain2DhorizontalEnum:
+		case Domain3DsurfaceEnum:
+			/*Nothing*/
+			return;
+		case Domain2DverticalEnum:
+			oldy = this->y;
+			newy = bed[this->pid]+sigma*(surface[this->pid] - bed[this->pid]);
+			vely = (newy-oldy)/dt;
+			this->y = newy;
+			vy->SetValue(this->pid,vely,INS_VAL);
+			_assert_(!xIsNan<IssmDouble>(vely));
+			return;
+		case Domain3DEnum:
+			oldz = this->z;
+			newz = bed[this->pid]+sigma*(surface[this->pid] - bed[this->pid]);
+			velz = (newz-oldz)/dt;
+			this->z = newz;
+			vz->SetValue(this->pid,velz,INS_VAL);
+			_assert_(!xIsNan<IssmDouble>(velz));
+			return;
+		default:
+			_error_("not implemented");
+	}
+}
+/*}}}*/
+void       Vertex::VertexCoordinates(Vector<IssmDouble>* vx,Vector<IssmDouble>* vy,Vector<IssmDouble>* vz,bool spherical){/*{{{*/
+
+	if(this->clone==true) return;
+
+	if(!spherical){
+		vx->SetValue(this->sid,this->x,INS_VAL);
+		vy->SetValue(this->sid,this->y,INS_VAL);
+		vz->SetValue(this->sid,this->z,INS_VAL);
+	}
+	else{
+		vx->SetValue(this->sid,this->latitute,INS_VAL);
+		vy->SetValue(this->sid,this->longitude,INS_VAL);
+		vz->SetValue(this->sid,this->R,INS_VAL);
+	}
+	return;
+}
+/*}}}*/
+
+/*Methods relating to Vertex, but not internal methods: */
+void GetVerticesCoordinates(IssmDouble* xyz,Vertex** vertices, int numvertices,bool spherical){ /*{{{*/
+
+	_assert_(vertices);
+	_assert_(xyz);
+
+	if(!spherical){
+		for(int i=0;i<numvertices;i++) {
+			xyz[i*3+0]=vertices[i]->GetX();
+			xyz[i*3+1]=vertices[i]->GetY();
+			xyz[i*3+2]=vertices[i]->GetZ();
+		}
+	}
+	else{
+		for(int i=0;i<numvertices;i++) {
+			xyz[i*3+0]=vertices[i]->GetLatitude();
+			xyz[i*3+1]=vertices[i]->GetLongitude();
+			xyz[i*3+2]=vertices[i]->GetRadius();
+		}
+	}
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Vertex.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Vertex.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Vertex.h	(revision 27955)
@@ -0,0 +1,69 @@
+/*! \file Vertex.h 
+ *  \brief: header file for vertex object
+ */
+
+#ifndef _VERTEX_H_
+#define _VERTEX_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./classes.h"
+#include "../shared/Exceptions/exceptions.h"
+#include "../toolkits/toolkits.h"
+template <class doubletype> class Vector;
+template <class doubletype> class Matrix;
+class Parameters;
+class IoModel;
+/*}}}*/
+
+class Vertex: public Object{
+
+	public: 
+		bool       clone;
+		int        domaintype;
+		int        id;           // random index
+		int        sid;          // "serial" id (rank of this vertex if the dataset was on 1 cpu)
+		int        pid;          // "parallel" id
+		int        lid;          // "local" id
+		IssmDouble x;
+		IssmDouble y;
+		IssmDouble z;
+		IssmDouble latitute;
+		IssmDouble longitude;
+		IssmDouble R;
+		IssmDouble sigma;        //sigma coordinate: (z-bed)/thickness
+		int        connectivity; //number of vertices connected to this vertex
+
+		/*Vertex constructors, destructors {{{*/
+		Vertex();
+		Vertex(int id, int sid,bool clone, IoModel* iomodel,bool isamr);
+		~Vertex();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		void  Echo();
+		void  DeepEcho();
+		int   Id(); 
+		int   ObjectEnum();
+		Object* copy();
+		void Marshall(MarshallHandle* marshallhandle);
+
+		/*}}}*/
+		/*Vertex management:*/ 
+		int        Connectivity(void); 
+		IssmDouble GetLatitude(void); 
+		IssmDouble GetLongitude(void); 
+		IssmDouble GetRadius(void); 
+		IssmDouble GetX(void); 
+		IssmDouble GetY(void); 
+		IssmDouble GetZ(void); 
+		int        Pid(void); 
+		int        Lid(void); 
+		int        Sid(void); 
+		void       UpdatePosition(Vector<IssmDouble>* vx,Vector<IssmDouble>* vy,Vector<IssmDouble>* vz,Parameters* parameters,IssmDouble* thickness,IssmDouble* bed);
+		void       VertexCoordinates(Vector<IssmDouble>* vx,Vector<IssmDouble>* vy,Vector<IssmDouble>* vz,bool spherical=false);
+};
+
+/*Methods relating to Vertex object: */
+void GetVerticesCoordinates(IssmDouble* xyz,Vertex** vertices, int numvertices,bool spherical=false);
+
+#endif  /* _VERTEX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Vertices.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Vertices.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Vertices.cpp	(revision 27955)
@@ -0,0 +1,315 @@
+/*
+ * \file Vertices.cpp
+ * \brief: Implementation of Vertices class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <vector>
+#include <functional>
+#include <algorithm>
+#include <iostream>
+
+#include "./Vertices.h"
+#include "../shared/shared.h"
+#include "./Vertex.h"
+
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+Vertices::Vertices(){/*{{{*/
+	this->enum_type              = VerticesEnum;
+	this->common_recv            = NULL;
+	this->common_recv_ids        = NULL;
+	this->common_send            = NULL;
+	this->common_send_ids        = NULL;
+	this->numberofvertices       = -1;
+	this->numberofvertices_local = -1;
+	this->numberofmasters_local  = -1;
+	return;
+}
+/*}}}*/
+Vertices::~Vertices(){/*{{{*/
+
+	int num_proc=IssmComm::GetSize();
+
+	if(this->common_recv) xDelete<int>(common_recv);
+	if(this->common_send) xDelete<int>(common_send);
+	if(this->common_recv_ids){
+		for(int i=0;i<num_proc;i++) if(common_recv_ids[i]) xDelete<int>(common_recv_ids[i]);
+		xDelete<int*>(common_recv_ids);
+	}
+	if(this->common_send_ids){
+		for(int i=0;i<num_proc;i++) if(common_send_ids[i]) xDelete<int>(common_send_ids[i]);
+		xDelete<int*>(common_send_ids);
+	}
+	return;
+}
+/*}}}*/
+
+/*Numerics management*/
+Vertices* Vertices::Copy() {/*{{{*/
+
+	int num_proc = IssmComm::GetSize();
+
+	/*Copy dataset*/
+	Vertices* output=new Vertices();
+	output->sorted    = this->sorted;
+	output->numsorted = this->numsorted;
+	output->presorted = this->presorted;
+	for(vector<Object*>::iterator obj=this->objects.begin() ; obj < this->objects.end(); obj++ ) output->AddObject((*obj)->copy());
+
+	/*Build id_offsets and sorted_ids*/
+	output->id_offsets=NULL;
+	output->sorted_ids=NULL;
+	int objsize = this->numsorted;
+	if(this->sorted && objsize>0 && this->id_offsets){
+		output->id_offsets=xNew<int>(objsize);
+		xMemCpy<int>(output->id_offsets,this->id_offsets,objsize);
+	}
+	if(this->sorted && objsize>0 && this->sorted_ids){
+		output->sorted_ids=xNew<int>(objsize);
+		xMemCpy<int>(output->sorted_ids,this->sorted_ids,objsize);
+	}
+
+	/*Copy other fields*/
+	output->numberofvertices       = this->numberofvertices;
+	output->numberofvertices_local = this->numberofvertices_local;
+	output->numberofmasters_local  = this->numberofmasters_local;
+
+	if(this->common_recv){
+		output->common_recv=xNew<int>(num_proc);
+		for(int i=0;i<num_proc;i++) output->common_recv[i]=this->common_recv[i];
+	}
+	if(this->common_send){
+		output->common_send=xNew<int>(num_proc);
+		for(int i=0;i<num_proc;i++) output->common_send[i]=this->common_send[i];
+	}
+	if(this->common_recv_ids){
+		output->common_recv_ids = xNew<int*>(num_proc);
+		for(int i=0;i<num_proc;i++){
+			output->common_recv_ids[i]=xNew<int>(this->common_recv[i]);
+			for(int j=0;j<this->common_recv[i];j++) output->common_recv_ids[i][j]=this->common_recv_ids[i][j];
+		}
+	}
+	if(this->common_send_ids){
+		output->common_send_ids = xNew<int*>(num_proc);
+		for(int i=0;i<num_proc;i++){
+			output->common_send_ids[i]=xNew<int>(this->common_send[i]);
+			for(int j=0;j<this->common_send[i];j++) output->common_send_ids[i][j]=this->common_send_ids[i][j];
+		}
+	}
+
+	return output;
+}
+/*}}}*/
+void Vertices::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	int object_enum = VerticesEnum;
+	marshallhandle->call(object_enum);
+
+	/*Check compatibility*/
+	int num_procs=IssmComm::GetSize();
+	int test = num_procs;
+	marshallhandle->call(test);
+	if(test!=num_procs) _error_("number of cores is not the same as before");
+
+	marshallhandle->call(this->numberofvertices);
+	marshallhandle->call(this->numberofvertices_local);
+	marshallhandle->call(this->numberofmasters_local);
+
+	marshallhandle->call(this->common_recv,num_procs);
+	marshallhandle->call(this->common_send,num_procs);
+	if(marshallhandle->OperationNumber() == MARSHALLING_LOAD){
+		this->common_recv_ids = xNew<int*>(num_procs);
+		this->common_send_ids = xNew<int*>(num_procs);
+	}
+	for(int i=0;i<num_procs;i++){
+		marshallhandle->call(this->common_recv_ids[i],this->common_recv[i]);
+		marshallhandle->call(this->common_send_ids[i],this->common_send[i]);
+	}
+	DataSet::Marshall(marshallhandle);
+}
+/*}}}*/
+void Vertices::LatLonList(IssmDouble** plat,IssmDouble** plon){/*{{{*/
+
+	/*output: */
+	IssmDouble* xyz_serial=NULL;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*First, figure out number of vertices: */
+	int num_vertices=this->NumberOfVertices();
+
+	/*Now, allocate vectors*/
+	Vector<IssmDouble>* lat = new Vector<IssmDouble>(num_vertices);
+	Vector<IssmDouble>* lon = new Vector<IssmDouble>(num_vertices);
+
+	/*Go through vertices, and for each vertex, object, report it cpu: */
+	for(Object* & object : this->objects){
+      Vertex* vertex = xDynamicCast<Vertex*>(object);
+		lat->SetValue(vertex->sid,vertex->GetLatitude() ,INS_VAL);
+		lon->SetValue(vertex->sid,vertex->GetLongitude(),INS_VAL);
+	}
+
+	/*Assemble:*/
+	lat->Assemble();
+	lon->Assemble();
+
+	/*gather on cpu 0: */
+	IssmDouble* lat_serial=lat->ToMPISerial();
+	IssmDouble* lon_serial=lon->ToMPISerial();
+
+	/*Free resources: */
+	*plat = lat_serial;
+	*plon = lon_serial;
+	delete lat;
+	delete lon;
+}
+/*}}}*/
+void Vertices::XYList(IssmDouble** pxcoords,IssmDouble** pycoords){/*{{{*/
+
+	/*output: */
+	IssmDouble* xyz_serial=NULL;
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/*First, figure out number of vertices: */
+	int num_vertices=this->NumberOfVertices();
+
+	/*Now, allocate vectors*/
+	Vector<IssmDouble>* xlist = new Vector<IssmDouble>(num_vertices);
+	Vector<IssmDouble>* ylist = new Vector<IssmDouble>(num_vertices);
+
+	/*Go through vertices, and for each vertex, object, report it cpu: */
+	for(Object* & object : this->objects){
+      Vertex* vertex = xDynamicCast<Vertex*>(object);
+		xlist->SetValue(vertex->sid,vertex->GetX() ,INS_VAL);
+		ylist->SetValue(vertex->sid,vertex->GetY(),INS_VAL);
+	}
+
+	/*Assemble:*/
+	xlist->Assemble();
+	ylist->Assemble();
+
+	/*gather on cpu 0: */
+	IssmDouble* x_serial=xlist->ToMPISerial();
+	IssmDouble* y_serial=ylist->ToMPISerial();
+
+	/*Free resources: */
+	*pxcoords = x_serial;
+	*pycoords = y_serial;
+	delete xlist;
+	delete ylist;
+}
+/*}}}*/
+
+void Vertices::Finalize(IoModel* iomodel){/*{{{*/
+
+	/*Here we do 3 things:
+	 * - count all vertices once for all so that we do not need to call MPI
+	 *   every time we need to know the total number of vertices
+	 * - Distribute lids (local ids): masters first, slaves second
+	 * - Distribute pids (parallel ids)
+	 *   */
+
+	/*recover my_rank:*/
+	ISSM_MPI_Status status;
+	int my_rank   = IssmComm::GetRank();
+	int num_procs = IssmComm::GetSize();
+
+	/*1. set number of vertices once for all*/
+	this->numberofvertices_local=this->Size();
+	this->numberofmasters_local=0;
+	for(Object* & object : this->objects){
+      Vertex* vertex = xDynamicCast<Vertex*>(object);
+		if(!vertex->clone) this->numberofmasters_local++;
+	}
+	ISSM_MPI_Allreduce((void*)&this->numberofmasters_local,(void*)&this->numberofvertices,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
+
+	/*2. Distribute lids (First: masters, then clones)*/
+	iomodel->my_vertices_lids=xNew<int>(this->numberofvertices);
+	for(int i=0;i<this->numberofvertices;i++) iomodel->my_vertices_lids[i] = -1;
+
+	int lid = 0;
+	for(Object* & object : this->objects){
+      Vertex* vertex = xDynamicCast<Vertex*>(object);
+		if(!vertex->clone){
+			vertex->lid=lid;
+			iomodel->my_vertices_lids[vertex->sid] = lid;
+			lid++;
+		}
+	}
+	for(Object* & object : this->objects){
+      Vertex* vertex = xDynamicCast<Vertex*>(object);
+		if(vertex->clone){
+			vertex->lid=lid;
+			iomodel->my_vertices_lids[vertex->sid] = lid;
+			lid++;
+		}
+	}
+
+	/*3. Distribute pids based on lids and offsets*/
+	int* all_num_masters=xNew<int>(num_procs);
+	ISSM_MPI_Gather(&this->numberofmasters_local,1,ISSM_MPI_INT,all_num_masters,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	ISSM_MPI_Bcast(all_num_masters,num_procs,ISSM_MPI_INT,0,IssmComm::GetComm());
+	int offset=0;
+	for(int i=0;i<my_rank;i++) offset+=all_num_masters[i];
+	xDelete<int>(all_num_masters);
+
+	for(Object* & object : this->objects){
+      Vertex* vertex = xDynamicCast<Vertex*>(object);
+		vertex->pid = vertex->lid+offset;
+	}
+
+	/* Share pids of masters and update pids of clones*/
+	int **send_truepids = xNewZeroInit<int*>(num_procs);
+	int  *recv_truepids = xNewZeroInit<int>(this->Size());
+	ISSM_MPI_Request* send_requests = xNew<ISSM_MPI_Request>(num_procs);
+	for(int rank=0;rank<num_procs;rank++) send_requests[rank] = ISSM_MPI_REQUEST_NULL;
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->common_send[rank]){
+			int  numids = this->common_send[rank];
+			send_truepids[rank] = xNew<int>(numids);
+			for(int i=0;i<numids;i++){
+				Vertex* vertex=xDynamicCast<Vertex*>(this->GetObjectByOffset(this->common_send_ids[rank][i]));
+				send_truepids[rank][i] = vertex->pid;
+			}
+			ISSM_MPI_Isend(send_truepids[rank],numids,ISSM_MPI_INT,rank,0,IssmComm::GetComm(),&send_requests[rank]);
+		}
+	}
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->common_recv[rank]){
+			int  numids = this->common_recv[rank];
+			ISSM_MPI_Recv(recv_truepids,numids,ISSM_MPI_INT,rank,0,IssmComm::GetComm(),&status);
+			for(int i=0;i<numids;i++){
+				Vertex* vertex=xDynamicCast<Vertex*>(this->GetObjectByOffset(this->common_recv_ids[rank][i]));
+				vertex->pid = recv_truepids[i];
+			}
+		}
+	}
+	xDelete<int>(recv_truepids);
+	for(int rank=0;rank<num_procs;rank++){
+		if(this->common_send[rank]) ISSM_MPI_Wait(&send_requests[rank],&status);
+		xDelete<int>(send_truepids[rank]);
+	}
+	xDelete<int*>(send_truepids);
+	xDelete<ISSM_MPI_Request>(send_requests);
+}/*}}}*/
+int Vertices::NumberOfVertices(){/*{{{*/
+	return this->numberofvertices;
+}/*}}}*/
+int Vertices::NumberOfVerticesLocal(void){/*{{{*/
+	return this->numberofmasters_local;
+}/*}}}*/
+int Vertices::NumberOfVerticesLocalAll(void){/*{{{*/
+	return this->numberofvertices_local;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/Vertices.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/Vertices.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/Vertices.h	(revision 27955)
@@ -0,0 +1,44 @@
+#ifndef _CONTAINER_VERTICES_H_
+#define  _CONTAINER_VERTICES_H_
+
+/*forward declarations */
+#include "../datastructures/datastructures.h"
+#include "../shared/shared.h"
+class IoModel;
+
+/*!\brief Declaration of Vertices class.
+ *
+ * Declaration of Vertices class.  Vertices are vector lists (Containers) of Vertex objects.
+ * A vertex is a set of (x,y,z) coordinates defining the location of points in the mesh (not
+ * to be confused with a node, which is a degree of freedom (DOF) for a particular analysis).
+ */ 
+class Vertices: public DataSet{
+
+	private:
+		int numberofvertices;
+		int numberofvertices_local;
+		int numberofmasters_local;
+	public:
+		int*  common_recv;
+		int** common_recv_ids;
+		int*  common_send;
+		int** common_send_ids;
+
+		/*constructors, destructors:*/ 
+		Vertices();
+		~Vertices();
+
+		/*Objects virtual functions*/
+		Vertices* Copy();
+		void      Marshall(MarshallHandle* marshallhandle);
+
+		/*numerics:*/
+		void  Finalize(IoModel* iomodel);
+		int   NumberOfVertices(void);
+		int   NumberOfVerticesLocal(void);
+		int   NumberOfVerticesLocalAll(void);
+		void  LatLonList(IssmDouble** lat,IssmDouble** lon);
+		void  XYList(IssmDouble** pxcoords,IssmDouble** pycoords);
+};
+
+#endif //ifndef _VERTICES_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/classes.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/classes.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/classes.h	(revision 27955)
@@ -0,0 +1,135 @@
+/* \file classes.h
+ * \brief: prototype header for all classes used in ISSM.
+ */
+
+#ifndef _ALL_CLASSES_H_
+#define _ALL_CLASSES_H_
+
+/*Objects: */
+#include "./Contour.h"
+#include "./Vertices.h"
+#include "./Vertex.h"
+#include "./Nodes.h"
+#include "./Contours.h"
+#include "./Node.h"
+#include "./Profiler.h"
+#include "./DependentObject.h"
+#include "./Segment.h"
+#include "./Massfluxatgate.h"
+#include "./Misfit.h"
+#include "./SealevelGeometry.h"
+#include "./GrdLoads.h"
+#include "./BarystaticContributions.h"
+#include "./Nodalvalue.h"
+#include "./Numberedcostfunction.h"
+#include "./Cfsurfacesquare.h"
+#include "./Cfsurfacesquaretransient.h"
+#include "./Cfdragcoeffabsgrad.h"
+#include "./Cfdragcoeffabsgradtransient.h"
+#include "./Cfrheologybbarabsgrad.h"
+#include "./Cfrheologybbarabsgradtransient.h"
+#include "./Cfsurfacelogvel.h"
+#include "./Cflevelsetmisfit.h"
+#include "./Masscon.h"
+#include "./Massconaxpby.h"
+#include "./Regionaloutput.h"
+#include "./Radar.h"
+
+/*Constraints: */
+#include "./Constraints/Constraints.h"
+#include "./Constraints/Constraint.h"
+#include "./Constraints/SpcStatic.h"
+#include "./Constraints/SpcTransient.h"
+#include "./Constraints/SpcDynamic.h"
+
+/*Loads: */
+#include "./Loads/Channel.h"
+#include "./Loads/Loads.h"
+#include "./Loads/Load.h"
+#include "./Loads/Friction.h"
+#include "./Loads/Numericalflux.h"
+#include "./Loads/Neumannflux.h"
+#include "./Loads/Riftfront.h"
+#include "./Loads/Penpair.h"
+#include "./Loads/Pengrid.h"
+#include "./Loads/Moulin.h"
+
+/*Elements: */
+#include "./Elements/Elements.h"
+#include "./Elements/Element.h"
+#include "./Elements/Penta.h"
+#include "./Elements/PentaRef.h"
+#include "./Elements/Seg.h"
+#include "./Elements/SegRef.h"
+#include "./Elements/Tria.h"
+#include "./Elements/TriaRef.h"
+#include "./Elements/Tetra.h"
+#include "./Elements/TetraRef.h"
+#include "./Elements/ElementHook.h"
+
+/*Option parsing objects: */
+#include "./Options/Option.h"
+#include "./Options/Options.h"
+#include "./Options/GenericOption.h"
+#include "./Options/OptionUtilities.h"
+
+/*Inputs*/
+#include "./Inputs/Inputs.h"
+#include "./Inputs/Input.h"
+
+/*ExternalResults: */
+#include "./ExternalResults/Results.h"
+#include "./ExternalResults/ExternalResult.h"
+#include "./ExternalResults/GenericExternalResult.h"
+
+/*Materials: */
+#include "./Materials/Materials.h"
+#include "./Materials/Material.h"
+#include "./Materials/Matice.h"
+#include "./Materials/Matlitho.h"
+#include "./Materials/Matestar.h"
+
+/*Params: */
+#include "./Params/GenericParam.h"
+#include "./Params/BoolParam.h"
+#include "./Params/ControlParam.h"
+#include "./Params/DoubleMatParam.h"
+#include "./Params/DoubleTransientMatParam.h"
+#include "./Params/DoubleMatArrayParam.h"
+#include "./Params/DoubleParam.h"
+#include "./Params/DoubleVecParam.h"
+#include "./Params/IntParam.h"
+#include "./Params/IntVecParam.h"
+#include "./Params/IntMatParam.h"
+#include "./Params/FileParam.h"
+#include "./Params/Parameters.h"
+#include "./Params/Param.h"
+#include "./Params/MatrixParam.h"
+#include "./Params/VectorParam.h"
+#include "./Params/StringArrayParam.h"
+#include "./Params/StringParam.h"
+#include "./Params/TransientParam.h"
+#include "./Params/TransientArrayParam.h"
+#include "./Params/DataSetParam.h"
+
+/*matrix: */
+#include "./matrix/matrixobjects.h"
+
+/*gauss: */
+#include "./gauss/gaussobjects.h"
+
+/*kriging: */
+#include "./kriging/krigingobjects.h"
+
+/*dakota:*/
+#include "./Dakota/IssmDirectApplicInterface.h"
+#include "./Dakota/IssmParallelDirectApplicInterface.h"
+
+/*diverse: */
+#include "./Hook.h"
+#include "./IoModel.h"
+#include "./FemModel.h"
+#include "./GiaDeflectionCoreArgs.h"
+#include "./RiftStruct.h"
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/Gauss.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/Gauss.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/Gauss.h	(revision 27955)
@@ -0,0 +1,24 @@
+/*!\file Gauss.h
+ * \brief: header file for vvirtual Gauss object
+ */
+
+#ifndef _GAUSS_H_
+#define _GAUSS_H_
+
+class Gauss{
+
+	public: 
+		IssmDouble   weight;
+
+		virtual      ~Gauss(){};
+		virtual void Echo(void)=0;
+		virtual void Reset(void)=0;
+		virtual bool next(void)=0;
+		virtual int  Enum(void)=0;
+		virtual void GaussNode(int finitelement,int iv)=0;
+		virtual void GaussPoint(int ig)=0;
+		virtual void GaussVertex(int iv)=0;
+		virtual void SynchronizeGaussBase(Gauss* gauss)=0;
+
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussPenta.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussPenta.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussPenta.cpp	(revision 27955)
@@ -0,0 +1,805 @@
+/*!\file GaussPenta.c
+ * \brief: implementation of the GaussPenta object
+ */
+
+#include "./GaussPenta.h"
+#include "./GaussTria.h"
+#include "../../shared/io/Print/Print.h"
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/MemOps/MemOps.h"
+#include "../../shared/Numerics/recast.h"
+#include "../../shared/Enum/Enum.h"
+#include "../../shared/Numerics/GaussPoints.h"
+#include "../../shared/Numerics/constants.h"
+
+/*GaussPenta constructors and destructors:*/
+GaussPenta::GaussPenta(){/*{{{*/
+
+	ig = -1;
+	numgauss=-1;
+
+	weights=NULL;
+	coords1=NULL;
+	coords2=NULL;
+	coords3=NULL;
+	coords4=NULL;
+
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+	coord4=UNDEF;
+}
+/*}}}*/
+GaussPenta::GaussPenta(int order_horiz,int order_vert){/*{{{*/
+
+	/*Intermediaries*/
+	int         numgauss_horiz;
+	int         numgauss_vert;
+	IssmDouble *coords1_horiz  = NULL;
+	IssmDouble *coords2_horiz  = NULL;
+	IssmDouble *coords3_horiz  = NULL;
+	IssmDouble *weights_horiz  = NULL;
+	double     *coords_vert    = NULL;
+	double     *weights_vert   = NULL;
+
+	/*Get gauss points*/
+	GaussLegendreTria(&numgauss_horiz,&coords1_horiz,&coords2_horiz,&coords3_horiz,&weights_horiz,order_horiz);
+	GaussLegendreLinear(&coords_vert,&weights_vert,order_vert);
+	numgauss_vert=order_vert;
+
+	/*Allocate GaussPenta fields*/
+   ig      = -1;
+	numgauss=numgauss_horiz*numgauss_vert;
+	coords1=xNew<IssmDouble>(numgauss);
+	coords2=xNew<IssmDouble>(numgauss);
+	coords3=xNew<IssmDouble>(numgauss);
+	coords4=xNew<IssmDouble>(numgauss);
+	weights=xNew<IssmDouble>(numgauss);
+
+	/*Combine Horizontal and vertical points*/
+	for(int ighoriz=0; ighoriz<numgauss_horiz; ighoriz++){
+		for(int igvert=0; igvert<numgauss_vert; igvert++){
+			coords1[numgauss_vert*ighoriz+igvert]=coords1_horiz[ighoriz];
+			coords2[numgauss_vert*ighoriz+igvert]=coords2_horiz[ighoriz];
+			coords3[numgauss_vert*ighoriz+igvert]=coords3_horiz[ighoriz];
+			coords4[numgauss_vert*ighoriz+igvert]=coords_vert[igvert];
+			weights[numgauss_vert*ighoriz+igvert]=weights_horiz[ighoriz]*weights_vert[igvert];
+		}
+	}
+
+	/*Initialize static fields as undefinite*/
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+	coord4=UNDEF;
+
+	/*Clean up*/
+	xDelete<IssmDouble>(coords1_horiz);
+	xDelete<IssmDouble>(coords2_horiz);
+	xDelete<IssmDouble>(coords3_horiz);
+	xDelete<double>(coords_vert);
+	xDelete<IssmDouble>(weights_horiz);
+	xDelete<double>(weights_vert);
+}
+/*}}}*/
+GaussPenta::GaussPenta(int index1, int index2,int order){/*{{{*/
+
+	/*Intermediaties*/
+	double *seg_coords  = NULL;
+	double *seg_weights = NULL;
+	int     i;
+
+	/*Get Segment gauss points*/
+   ig      = -1;
+	numgauss=order;
+	GaussLegendreLinear(&seg_coords,&seg_weights,numgauss);
+
+	/*Allocate GaussPenta fields*/
+	coords1=xNew<IssmDouble>(numgauss);
+	coords2=xNew<IssmDouble>(numgauss);
+	coords3=xNew<IssmDouble>(numgauss);
+	coords4=xNew<IssmDouble>(numgauss);
+	weights=xNew<IssmDouble>(numgauss);
+
+	if(index1==0 && index2==3){
+		for(i=0;i<numgauss;i++) coords1[i]=1.0;
+		for(i=0;i<numgauss;i++) coords2[i]=0.0;
+		for(i=0;i<numgauss;i++) coords3[i]=0.0;
+		for(i=0;i<numgauss;i++) coords4[i]=seg_coords[i];
+		for(i=0;i<numgauss;i++) weights[i]=seg_weights[i];
+	}
+	else if (index1==1 && index2==4){
+		for(i=0;i<numgauss;i++) coords1[i]=0.0;
+		for(i=0;i<numgauss;i++) coords2[i]=1.0;
+		for(i=0;i<numgauss;i++) coords3[i]=0.0;
+		for(i=0;i<numgauss;i++) coords4[i]=seg_coords[i];
+		for(i=0;i<numgauss;i++) weights[i]=seg_weights[i];
+	}
+	else if (index1==2 && index2==5){
+		for(i=0;i<numgauss;i++) coords1[i]=0.0;
+		for(i=0;i<numgauss;i++) coords2[i]=0.0;
+		for(i=0;i<numgauss;i++) coords3[i]=1.0;
+		for(i=0;i<numgauss;i++) coords4[i]=seg_coords[i];
+		for(i=0;i<numgauss;i++) weights[i]=seg_weights[i];
+	}
+	else{
+		_error_("Penta not supported yet");
+	}
+
+	/*Initialize static fields as undefined*/
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+	coord4=UNDEF;
+
+	/*clean up*/
+	xDelete<double>(seg_coords);
+	xDelete<double>(seg_weights);
+
+}
+/*}}}*/
+GaussPenta::GaussPenta(int index1, int index2, int index3, int order){/*{{{*/
+
+	/*Basal Tria*/
+	if(index1==0 && index2==1 && index3==2){
+
+		/*Get GaussTria*/
+		GaussLegendreTria(&numgauss,&coords1,&coords2,&coords3,&weights,order);
+
+		/*compute z coordinate*/
+		coords4=xNew<IssmDouble>(numgauss);
+		for(int i=0;i<numgauss;i++) coords4[i]=-1.0;
+	}
+	/*Upper surface Tria*/
+	else if(index1==3 && index2==4 && index3==5){
+
+		/*Get GaussTria*/
+		GaussLegendreTria(&numgauss,&coords1,&coords2,&coords3,&weights,order);
+
+		/*compute z coordinate*/
+		coords4=xNew<IssmDouble>(numgauss);
+		for(int i=0;i<numgauss;i++) coords4[i]=1.0;
+	}
+	else{
+		_error_("Tria not supported yet");
+	}
+
+   this->ig = -1;
+
+}
+/*}}}*/
+GaussPenta::GaussPenta(int index1, int index2, int index3, int index4,int order_horiz,int order_vert){/*{{{*/
+
+	/*Intermediaties*/
+	double *seg_horiz_coords  = NULL;
+	double *seg_horiz_weights = NULL;
+	double *seg_vert_coords   = NULL;
+	double *seg_vert_weights  = NULL;
+	int     i,j;
+
+	/*get the gauss points using the product of two line rules*/
+	GaussLegendreLinear(&seg_horiz_coords,&seg_horiz_weights,order_horiz);
+	GaussLegendreLinear(&seg_vert_coords, &seg_vert_weights, order_vert);
+
+	/*Allocate GaussPenta fields*/
+   this->ig = -1;
+	numgauss=order_horiz*order_vert;
+	coords1=xNew<IssmDouble>(numgauss);
+	coords2=xNew<IssmDouble>(numgauss);
+	coords3=xNew<IssmDouble>(numgauss);
+	coords4=xNew<IssmDouble>(numgauss);
+	weights=xNew<IssmDouble>(numgauss);
+
+	/*Quads: get the gauss points using the product of two line rules  */
+	if(index1==0 && index2==1 && index3==4 && index4==3){
+		for(i=0;i<order_horiz;i++){
+			for(j=0;j<order_vert;j++){
+				coords1[i*order_vert+j]=  0.5*(1-seg_horiz_coords[i]);
+				coords2[i*order_vert+j]=1-0.5*(1-seg_horiz_coords[i]);
+				coords3[i*order_vert+j]=0.0;
+				coords4[i*order_vert+j]=seg_vert_coords[j];
+				weights[i*order_vert+j]=seg_horiz_weights[i]*seg_vert_weights[j];
+			}
+		}
+	}
+	else if(index1==1 && index2==2 && index3==5 && index4==4){
+		for(i=0;i<order_horiz;i++){
+			for(j=0;j<order_vert;j++){
+				coords1[i*order_vert+j]=0.0;
+				coords2[i*order_vert+j]=  0.5*(1-seg_horiz_coords[i]);
+				coords3[i*order_vert+j]=1-0.5*(1-seg_horiz_coords[i]);
+				coords4[i*order_vert+j]=seg_vert_coords[j];
+				weights[i*order_vert+j]=seg_horiz_weights[i]*seg_vert_weights[j];
+			}
+		}
+	}
+	else if(index1==2 && index2==0 && index3==3 && index4==5){
+		for(i=0;i<order_horiz;i++){
+			for(j=0;j<order_vert;j++){
+				coords1[i*order_vert+j]=1-0.5*(1-seg_horiz_coords[i]);
+				coords2[i*order_vert+j]=0.0;
+				coords3[i*order_vert+j]=  0.5*(1-seg_horiz_coords[i]);
+				coords4[i*order_vert+j]=seg_vert_coords[j];
+				weights[i*order_vert+j]=seg_horiz_weights[i]*seg_vert_weights[j];
+			}
+		}
+	}
+	else{
+		_error_("Tria not supported yet (user provided indices " << index1 << " " << index2 << " " << index3 << " " << index4 << ")");
+	}
+
+	/*clean-up*/
+	xDelete<double>(seg_horiz_coords);
+	xDelete<double>(seg_horiz_weights);
+	xDelete<double>(seg_vert_coords);
+	xDelete<double>(seg_vert_weights);
+}
+/*}}}*/
+GaussPenta::GaussPenta(int index,IssmDouble r1,IssmDouble r2,bool mainlyfloating,int order){/*{{{*/
+
+	IssmDouble x,y;
+	IssmDouble xy_list[3][2];
+
+	if(mainlyfloating){
+		/*Get gauss points*/
+		GaussLegendreTria(&this->numgauss,&this->coords1,&this->coords2,&this->coords3,&this->weights,order);
+
+		xy_list[0][0]=0;  xy_list[0][1]=0; 
+		xy_list[1][0]=r1; xy_list[1][1]=0; 
+		xy_list[2][0]=0;  xy_list[2][1]=r2; 
+
+		for(int ii=0;ii<this->numgauss;ii++){
+			x = this->coords1[ii]*xy_list[0][0] + this->coords2[ii]*xy_list[1][0] + this->coords3[ii]*xy_list[2][0];
+			y = this->coords1[ii]*xy_list[0][1] + this->coords2[ii]*xy_list[1][1] + this->coords3[ii]*xy_list[2][1];
+
+			switch(index){
+				case 0:
+					this->coords1[ii] = 1.-x-y;
+					this->coords2[ii] = x;
+					this->coords3[ii] = y;
+					break;
+				case 1:
+					this->coords1[ii] = y;
+					this->coords2[ii] = 1.-x-y;
+					this->coords3[ii] = x;
+					break;
+				case 2:
+					this->coords1[ii] = x;
+					this->coords2[ii] = y;
+					this->coords3[ii] = 1.-x-y;
+					break;
+				default:
+					_error_("index "<<index<<" not supported yet");
+			}
+			this->weights[ii] = this->weights[ii]*r1*r2;
+		}
+		this->coords4=xNew<IssmDouble>(numgauss);
+		for(int ii=0;ii<numgauss;ii++) this->coords4[ii]=-1.0;
+	}
+	else{
+		/*Double number of gauss points*/
+		GaussPenta *gauss1    = NULL;
+		GaussPenta *gauss2    = NULL;
+		gauss1=new GaussPenta(0,1,2,order);
+		gauss2=new GaussPenta(0,1,2,order);
+
+		xy_list[0][0]=r1; xy_list[0][1]=0; 
+		xy_list[1][0]=0;  xy_list[1][1]=1.; 
+		xy_list[2][0]=0;  xy_list[2][1]=r2; 
+
+			//gauss1->Echo();
+		for(int ii=0;ii<gauss1->numgauss;ii++){
+			x = gauss1->coords1[ii]*xy_list[0][0] + gauss1->coords2[ii]*xy_list[1][0] + gauss1->coords3[ii]*xy_list[2][0];
+			y = gauss1->coords1[ii]*xy_list[0][1] + gauss1->coords2[ii]*xy_list[1][1] + gauss1->coords3[ii]*xy_list[2][1];
+
+			switch(index){
+				case 0:
+					gauss1->coords1[ii] = 1.-x-y;
+					gauss1->coords2[ii] = x;
+					gauss1->coords3[ii] = y;
+					break;
+				case 1:
+					gauss1->coords1[ii] = y;
+					gauss1->coords2[ii] = 1.-x-y;
+					gauss1->coords3[ii] = x;
+					break;
+				case 2:
+					gauss1->coords1[ii] = x;
+					gauss1->coords2[ii] = y;
+					gauss1->coords3[ii] = 1.-x-y;
+					break;
+				default:
+					_error_("index "<<index<<" not supported yet");
+			}
+			gauss1->weights[ii] = gauss1->weights[ii]*r1*(1-r2);
+		}
+			//gauss1->Echo();
+		xy_list[0][0]=r1; xy_list[0][1]=0; 
+		xy_list[1][0]=1.; xy_list[1][1]=0; 
+		xy_list[2][0]=0;  xy_list[2][1]=1.; 
+
+			//gauss2->Echo();
+		for(int ii=0;ii<gauss2->numgauss;ii++){
+			x = gauss2->coords1[ii]*xy_list[0][0] + gauss2->coords2[ii]*xy_list[1][0] + gauss2->coords3[ii]*xy_list[2][0];
+			y = gauss2->coords1[ii]*xy_list[0][1] + gauss2->coords2[ii]*xy_list[1][1] + gauss2->coords3[ii]*xy_list[2][1];
+
+			switch(index){
+				case 0:
+					gauss2->coords1[ii] = 1.-x-y;
+					gauss2->coords2[ii] = x;
+					gauss2->coords3[ii] = y;
+					break;
+				case 1:
+					gauss2->coords1[ii] = y;
+					gauss2->coords2[ii] = 1.-x-y;
+					gauss2->coords3[ii] = x;
+					break;
+				case 2:
+					gauss2->coords1[ii] = x;
+					gauss2->coords2[ii] = y;
+					gauss2->coords3[ii] = 1.-x-y;
+					break;
+				default:
+					_error_("index "<<index<<" not supported yet");
+			}
+			gauss2->weights[ii] = gauss2->weights[ii]*(1-r1);
+		}
+
+		this->numgauss = gauss1->numgauss + gauss2->numgauss;
+		this->coords1=xNew<IssmDouble>(this->numgauss);
+		this->coords2=xNew<IssmDouble>(this->numgauss);
+		this->coords3=xNew<IssmDouble>(this->numgauss);
+		this->coords4=xNew<IssmDouble>(this->numgauss);
+		this->weights=xNew<IssmDouble>(this->numgauss);
+
+		for(int ii=0;ii<gauss1->numgauss;ii++){ // Add the first triangle gauss points
+			this->coords1[ii]=gauss1->coords1[ii];
+			this->coords2[ii]=gauss1->coords2[ii];
+			this->coords3[ii]=gauss1->coords3[ii];
+			this->coords4[ii]=gauss1->coords4[ii];
+			this->weights[ii]=gauss1->weights[ii];
+		}
+		for(int ii=0;ii<gauss2->numgauss;ii++){ // Add the second triangle gauss points
+			this->coords1[gauss1->numgauss+ii]=gauss2->coords1[ii];
+			this->coords2[gauss1->numgauss+ii]=gauss2->coords2[ii];
+			this->coords3[gauss1->numgauss+ii]=gauss2->coords3[ii];
+			this->coords4[gauss1->numgauss+ii]=gauss2->coords4[ii];
+			this->weights[gauss1->numgauss+ii]=gauss2->weights[ii];
+		}
+
+		/*Delete gauss points*/
+		delete gauss1;
+		delete gauss2;
+	}
+
+	/*Initialize static fields as undefined*/
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+	coord4=UNDEF;
+   ig    = -1;
+}
+/*}}}*/
+GaussPenta::GaussPenta(IssmDouble area_coordinates[4][3],int order_horiz,int order_vert){/*{{{*/
+
+	/*Intermediaties*/
+	IssmPDouble *seg_horiz_coords  = NULL;
+	IssmPDouble *seg_horiz_weights = NULL;
+	IssmPDouble *seg_vert_coords   = NULL;
+	IssmPDouble *seg_vert_weights  = NULL;
+
+	/*get the gauss points using the product of two line rules*/
+	GaussLegendreLinear(&seg_horiz_coords,&seg_horiz_weights,order_horiz);
+	GaussLegendreLinear(&seg_vert_coords, &seg_vert_weights, order_vert);
+
+	/*Allocate GaussPenta fields*/
+   ig      = -1;
+	numgauss=order_horiz*order_vert;
+	coords1=xNew<IssmDouble>(numgauss);
+	coords2=xNew<IssmDouble>(numgauss);
+	coords3=xNew<IssmDouble>(numgauss);
+	coords4=xNew<IssmDouble>(numgauss);
+	weights=xNew<IssmDouble>(numgauss);
+
+	/*Quads: get the gauss points using the product of two line rules  */
+	for(int i=0;i<order_horiz;i++){
+		for(int j=0;j<order_vert;j++){
+			coords1[i*order_vert+j]=0.5*(area_coordinates[0][0]+area_coordinates[1][0]) + 0.5*seg_horiz_coords[i]*(area_coordinates[1][0]-area_coordinates[0][0]);
+			coords2[i*order_vert+j]=0.5*(area_coordinates[0][1]+area_coordinates[1][1]) + 0.5*seg_horiz_coords[i]*(area_coordinates[1][1]-area_coordinates[0][1]);
+			coords3[i*order_vert+j]=0.5*(area_coordinates[0][2]+area_coordinates[1][2]) + 0.5*seg_horiz_coords[i]*(area_coordinates[1][2]-area_coordinates[0][2]);
+			coords4[i*order_vert+j]=seg_vert_coords[j];
+			weights[i*order_vert+j]=seg_horiz_weights[i]*seg_vert_weights[j];
+		}
+	}
+
+	/*clean-up*/
+	xDelete<IssmPDouble>(seg_horiz_coords);
+	xDelete<IssmPDouble>(seg_horiz_weights);
+	xDelete<IssmPDouble>(seg_vert_coords);
+	xDelete<IssmPDouble>(seg_vert_weights);
+}
+/*}}}*/
+GaussPenta::GaussPenta(IssmDouble area_coordinates[2][3],int order_horiz){/*{{{*/
+
+	/*Intermediaties*/
+	IssmPDouble *seg_horiz_coords  = NULL;
+	IssmPDouble *seg_horiz_weights = NULL;
+
+	/*get the gauss points using the product of two line rules*/
+	GaussLegendreLinear(&seg_horiz_coords,&seg_horiz_weights,order_horiz);
+
+	/*Allocate GaussPenta fields*/
+   ig = -1;
+	numgauss=order_horiz;
+	coords1=xNew<IssmDouble>(numgauss);
+	coords2=xNew<IssmDouble>(numgauss);
+	coords3=xNew<IssmDouble>(numgauss);
+	coords4=xNew<IssmDouble>(numgauss);
+	weights=xNew<IssmDouble>(numgauss);
+
+	/*Quads: get the gauss points using the product of two line rules  */
+	for(int i=0;i<order_horiz;i++){
+		coords1[i]=0.5*(area_coordinates[0][0]+area_coordinates[1][0]) + 0.5*seg_horiz_coords[i]*(area_coordinates[1][0]-area_coordinates[0][0]);
+		coords2[i]=0.5*(area_coordinates[0][1]+area_coordinates[1][1]) + 0.5*seg_horiz_coords[i]*(area_coordinates[1][1]-area_coordinates[0][1]);
+		coords3[i]=0.5*(area_coordinates[0][2]+area_coordinates[1][2]) + 0.5*seg_horiz_coords[i]*(area_coordinates[1][2]-area_coordinates[0][2]);
+		coords4[i]=0.;
+		weights[i]=seg_horiz_weights[i];
+	}
+
+	/*clean-up*/
+	xDelete<IssmPDouble>(seg_horiz_coords);
+	xDelete<IssmPDouble>(seg_horiz_weights);
+}
+/*}}}*/
+GaussPenta::~GaussPenta(){/*{{{*/
+	xDelete<IssmDouble>(weights);
+	xDelete<IssmDouble>(coords1);
+	xDelete<IssmDouble>(coords2);
+	xDelete<IssmDouble>(coords3);
+	xDelete<IssmDouble>(coords4);
+}
+/*}}}*/
+
+/*Methods*/
+void GaussPenta::Echo(void){/*{{{*/
+
+	_printf_("GaussPenta:\n");
+	_printf_("   numgauss: " << numgauss << "\n");
+
+	if (weights){
+	 _printf_("   weights = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << weights[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("weights = NULL\n");
+	if (coords1){
+	 _printf_("   coords1 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords1[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("coords1 = NULL\n");
+	if (coords2){
+	 _printf_("   coords2 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords2[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("coords2 = NULL\n");
+	if (coords3){
+	 _printf_("   coords3 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords3[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("coords3 = NULL\n");
+	if (coords4){
+		_printf_("   coords4 = ["); 
+		for(int i=0;i<numgauss;i++) _printf_(" " << coords4[i] << "\n");
+		_printf_("]\n");
+	}
+	else _printf_("coords4 = NULL\n");
+
+	_printf_("   weight = " << weight << "\n");
+	_printf_("   coord1 = " << coord1 << "\n");
+	_printf_("   coord2 = " << coord2 << "\n");
+	_printf_("   coord3 = " << coord3 << "\n");
+	_printf_("   coord4 = " << coord4 << "\n");
+
+}
+/*}}}*/
+int GaussPenta::Enum(void){/*{{{*/
+	return GaussPentaEnum;
+}
+/*}}}*/
+void GaussPenta::GaussFaceTria(int index1, int index2, int index3, int order){/*{{{*/
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	/*Basal Tria*/
+	if(index1==0 && index2==1 && index3==2){
+		GaussLegendreTria(&numgauss,&coords1,&coords2,&coords3,&weights,order);
+		coords4=xNew<IssmDouble>(numgauss);
+		for(int i=0;i<numgauss;i++) coords4[i]=-1.0;
+	}
+	else{
+		_error_("Tria not supported yet");
+	}
+
+}
+/*}}}*/
+void GaussPenta::GaussPoint(int ig){/*{{{*/
+
+	/*Check input in debugging mode*/
+	 _assert_(ig>=0 && ig< numgauss);
+
+	 /*update static arrays*/
+	 weight=weights[ig];
+	 coord1=coords1[ig];
+	 coord2=coords2[ig];
+	 coord3=coords3[ig];
+	 coord4=coords4[ig];
+
+}
+/*}}}*/
+bool GaussPenta::next(void){/*{{{*/
+
+	/*Increment Gauss point*/
+	this->ig++;
+
+	/*Have we reached the end?*/
+	if(this->ig==this->numgauss) return false;
+
+	/*If not let's go to the next point*/
+	_assert_(this->ig>=0 && this->ig< numgauss);
+	weight=weights[ig];
+	coord1=coords1[ig];
+	coord2=coords2[ig];
+	coord3=coords3[ig];
+	coord4=coords4[ig];
+
+	return true;
+}/*}}}*/
+void GaussPenta::GaussNode(int finiteelement,int iv){/*{{{*/
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	/*update static arrays*/
+	switch(finiteelement){
+		case P1Enum: case P1DGEnum:
+		case P1P1GLSEnum: case P1P1Enum: /* added to allow P1-P1 GLS */
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
+				case 3: coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
+				case 4: coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
+				case 5: coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
+				default: _error_("node index should be in [0 5]");
+			}
+			break;
+		case P1xP2Enum: 
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
+				case 3: coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
+				case 4: coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
+				case 5: coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
+
+				case 6: coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
+				case 7: coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
+				case 8: coord1=0.; coord2=0.; coord3=1.; coord4=0.; break;
+				default: _error_("node index should be in [0 8]");
+			}
+			break;
+		case P1xP3Enum: 
+			switch(iv){
+				case 0 : coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
+				case 1 : coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
+				case 2 : coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
+				case 3 : coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
+				case 4 : coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
+				case 5 : coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
+
+				case 6 : coord1=1.; coord2=0.; coord3=0.; coord4=-1./3.; break;
+				case 7 : coord1=0.; coord2=1.; coord3=0.; coord4=-1./3.; break;
+				case 8 : coord1=0.; coord2=0.; coord3=1.; coord4=-1./3.; break;
+				case 9 : coord1=1.; coord2=0.; coord3=0.; coord4=+1./3.; break;
+				case 10: coord1=0.; coord2=1.; coord3=0.; coord4=+1./3.; break;
+				case 11: coord1=0.; coord2=0.; coord3=1.; coord4=+1./3.; break;
+				default: _error_("node index should be in [0 11]");
+			}
+			break;
+		case P1xP4Enum: 
+			switch(iv){
+				case 0 : coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
+				case 1 : coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
+				case 2 : coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
+				case 3 : coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
+				case 4 : coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
+				case 5 : coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
+
+				case 6 : coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
+				case 7 : coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
+				case 8 : coord1=0.; coord2=0.; coord3=1.; coord4=0.; break;
+
+				case 9 : coord1=1.; coord2=0.; coord3=0.; coord4=-0.5; break;
+				case 10: coord1=0.; coord2=1.; coord3=0.; coord4=-0.5; break;
+				case 11: coord1=0.; coord2=0.; coord3=1.; coord4=-0.5; break;
+
+				case 12: coord1=1.; coord2=0.; coord3=0.; coord4=+0.5; break;
+				case 13: coord1=0.; coord2=1.; coord3=0.; coord4=+0.5; break;
+				case 14: coord1=0.; coord2=0.; coord3=1.; coord4=+0.5; break;
+				default: _error_("node index should be in [0 14]");
+			}
+			break;
+		case P2xP1Enum: 
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
+				case 3: coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
+				case 4: coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
+				case 5: coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
+
+				case  6: coord1=0.; coord2=.5; coord3=.5; coord4=-1.;break;
+				case  7: coord1=.5; coord2=0.; coord3=.5; coord4=-1.;break;
+				case  8: coord1=.5; coord2=.5; coord3=0.; coord4=-1.;break;
+				case  9: coord1=0.; coord2=.5; coord3=.5; coord4=+1.;break;
+				case 10: coord1=.5; coord2=0.; coord3=.5; coord4=+1.;break;
+				case 11: coord1=.5; coord2=.5; coord3=0.; coord4=+1.;break;
+				default: _error_("node index should be in [0 11]");
+			}
+			break;
+		case P1bubbleEnum:  case P1bubblecondensedEnum:
+			switch(iv){
+				case 0: coord1=1.;    coord2=0.;    coord3=0.;    coord4=-1.; break;
+				case 1: coord1=0.;    coord2=1.;    coord3=0.;    coord4=-1.; break;
+				case 2: coord1=0.;    coord2=0.;    coord3=1.;    coord4=-1.; break;
+				case 3: coord1=1.;    coord2=0.;    coord3=0.;    coord4=+1.; break;
+				case 4: coord1=0.;    coord2=1.;    coord3=0.;    coord4=+1.; break;
+				case 5: coord1=0.;    coord2=0.;    coord3=1.;    coord4=+1.; break;
+				case 6: coord1=1./3.; coord2=1./3.; coord3=1./3.; coord4=0.;  break;
+				default: _error_("node index should be in [0 6]");
+			}
+			break;
+		case P2Enum:
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
+				case 3: coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
+				case 4: coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
+				case 5: coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
+
+				case 6: coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
+				case 7: coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
+				case 8: coord1=0.; coord2=0.; coord3=1.; coord4=0.; break;
+
+				case  9: coord1=0.; coord2=.5; coord3=.5; coord4=-1.;break;
+				case 10: coord1=.5; coord2=0.; coord3=.5; coord4=-1.;break;
+				case 11: coord1=.5; coord2=.5; coord3=0.; coord4=-1.;break;
+				case 12: coord1=0.; coord2=.5; coord3=.5; coord4=+1.;break;
+				case 13: coord1=.5; coord2=0.; coord3=.5; coord4=+1.;break;
+				case 14: coord1=.5; coord2=.5; coord3=0.; coord4=+1.;break;
+
+				case 15: coord1=0.; coord2=.5; coord3=.5; coord4=0.;break;
+				case 16: coord1=.5; coord2=0.; coord3=.5; coord4=0.;break;
+				case 17: coord1=.5; coord2=.5; coord3=0.; coord4=0.;break;
+				default: _error_("node index should be in [0 17]");
+			}
+			break;
+		case P2bubbleEnum: case P2bubblecondensedEnum:
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
+				case 3: coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
+				case 4: coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
+				case 5: coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
+
+				case 6: coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
+				case 7: coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
+				case 8: coord1=0.; coord2=0.; coord3=1.; coord4=0.; break;
+
+				case  9: coord1=0.; coord2=.5; coord3=.5; coord4=-1.;break;
+				case 10: coord1=.5; coord2=0.; coord3=.5; coord4=-1.;break;
+				case 11: coord1=.5; coord2=.5; coord3=0.; coord4=-1.;break;
+				case 12: coord1=0.; coord2=.5; coord3=.5; coord4=+1.;break;
+				case 13: coord1=.5; coord2=0.; coord3=.5; coord4=+1.;break;
+				case 14: coord1=.5; coord2=.5; coord3=0.; coord4=+1.;break;
+
+				case 15: coord1=0.; coord2=.5; coord3=.5; coord4=0.;break;
+				case 16: coord1=.5; coord2=0.; coord3=.5; coord4=0.;break;
+				case 17: coord1=.5; coord2=.5; coord3=0.; coord4=0.;break;
+
+				case 18: coord1=1./3.; coord2=1./3.; coord3=1./3.; coord4=0.;  break;
+				default: _error_("node index should be in [0 18]");
+			}
+			break;
+		case P2xP4Enum:
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
+				case 3: coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
+				case 4: coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
+				case 5: coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
+
+				case 6: coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
+				case 7: coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
+				case 8: coord1=0.; coord2=0.; coord3=1.; coord4=0.; break;
+
+				case  9: coord1=0.; coord2=.5; coord3=.5; coord4=-1.;break;
+				case 10: coord1=.5; coord2=0.; coord3=.5; coord4=-1.;break;
+				case 11: coord1=.5; coord2=.5; coord3=0.; coord4=-1.;break;
+				case 12: coord1=0.; coord2=.5; coord3=.5; coord4=+1.;break;
+				case 13: coord1=.5; coord2=0.; coord3=.5; coord4=+1.;break;
+				case 14: coord1=.5; coord2=.5; coord3=0.; coord4=+1.;break;
+
+				case 15: coord1=1.; coord2=0.; coord3=0.; coord4=-.5; break;
+				case 16: coord1=0.; coord2=1.; coord3=0.; coord4=-.5; break;
+				case 17: coord1=0.; coord2=0.; coord3=1.; coord4=-.5; break;
+				case 18: coord1=1.; coord2=0.; coord3=0.; coord4=+.5; break;
+				case 19: coord1=0.; coord2=1.; coord3=0.; coord4=+.5; break;
+				case 20: coord1=0.; coord2=0.; coord3=1.; coord4=+.5; break;
+
+				case 21: coord1=0.; coord2=.5; coord3=.5; coord4=-.5;break;
+				case 22: coord1=.5; coord2=0.; coord3=.5; coord4=-.5;break;
+				case 23: coord1=.5; coord2=.5; coord3=0.; coord4=-.5;break;
+				case 24: coord1=0.; coord2=.5; coord3=.5; coord4=0.;break;
+				case 25: coord1=.5; coord2=0.; coord3=.5; coord4=0.;break;
+				case 26: coord1=.5; coord2=.5; coord3=0.; coord4=0.;break;
+				case 27: coord1=0.; coord2=.5; coord3=.5; coord4=+.5;break;
+				case 28: coord1=.5; coord2=0.; coord3=.5; coord4=+.5;break;
+				case 29: coord1=.5; coord2=.5; coord3=0.; coord4=+.5;break;
+				default: _error_("node index should be in [0 29]");
+			}
+			break;
+		default: _error_("Finite element "<<EnumToStringx(finiteelement)<<" not supported");
+	}
+
+}
+/*}}}*/
+void GaussPenta::GaussVertex(int iv){/*{{{*/
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	/*update static arrays*/
+	switch(iv){
+		case 0: coord1=1.; coord2=0.; coord3=0.; coord4= -1.; break;
+		case 1: coord1=0.; coord2=1.; coord3=0.; coord4= -1.; break;
+		case 2: coord1=0.; coord2=0.; coord3=1.; coord4= -1.; break;
+		case 3: coord1=1.; coord2=0.; coord3=0.; coord4= +1.; break;
+		case 4: coord1=0.; coord2=1.; coord3=0.; coord4= +1.; break;
+		case 5: coord1=0.; coord2=0.; coord3=1.; coord4= +1.; break;
+		default: _error_("vertex index should be in [0 5]");
+
+	}
+
+}
+/*}}}*/
+void GaussPenta::Reset(void){/*{{{*/
+
+	/*Check that this has been initialized*/
+	_assert_(numgauss>0);
+
+	/*Reset counter*/
+	this->ig=-1;
+} /*}}}*/
+void GaussPenta::SynchronizeGaussBase(Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	GaussTria* gauss_tria = xDynamicCast<GaussTria*>(gauss);
+
+	gauss_tria->coord1=this->coord1;
+	gauss_tria->coord2=this->coord2;
+	gauss_tria->coord3=this->coord3;
+	gauss_tria->weight=UNDEF;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussPenta.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussPenta.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussPenta.h	(revision 27955)
@@ -0,0 +1,54 @@
+/*!\file GaussPenta.h
+ * \brief: header file for node object
+ */
+
+#ifndef _GAUSSPENTA_H_
+#define _GAUSSPENTA_H_
+
+/*Headers:*/
+#include "../../shared/Numerics/types.h"
+#include "./Gauss.h"
+class GaussTria;
+
+class GaussPenta: public Gauss{
+
+	private:
+		int         numgauss;   /*Total number of gauss points*/
+		int         ig;         /*Current gauss point index*/
+		IssmDouble* weights;
+		IssmDouble* coords1;
+		IssmDouble* coords2;
+		IssmDouble* coords3;
+		IssmDouble* coords4;
+
+	public:
+		IssmDouble coord1;
+		IssmDouble coord2;
+		IssmDouble coord3;
+		IssmDouble coord4;
+
+	public:
+
+		/*GaussPenta constructors, destructors*/
+		GaussPenta();
+		GaussPenta(int order_horiz,int order_vert);
+		GaussPenta(int index1, int index2,int order);
+		GaussPenta(int index1, int index2, int index3, int order);
+		GaussPenta(int index1, int index2, int index3, int index4,int order_horiz,int order_vert);
+		GaussPenta(int index,IssmDouble r1, IssmDouble r2,bool maintlyfloating,int order);
+		GaussPenta(IssmDouble area_coordinates[4][3],int order_horiz,int order_vert);
+		GaussPenta(IssmDouble area_coordinates[2][3],int order_horiz);
+		~GaussPenta();
+
+		/*Methods*/
+		bool next(void);
+		void Echo(void);
+		int  Enum(void);
+		void GaussFaceTria(int index1, int index2, int index3, int order);
+		void GaussNode(int finitelement,int iv);
+		void GaussPoint(int ig);
+		void GaussVertex(int iv);
+		void Reset(void);
+		void SynchronizeGaussBase(Gauss* gauss);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussSeg.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussSeg.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussSeg.cpp	(revision 27955)
@@ -0,0 +1,173 @@
+/*!\file GaussSeg.c
+ * \brief: implementation of the GaussSeg object
+ */
+
+#include "./GaussSeg.h"
+#include "../../shared/io/Print/Print.h"
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/MemOps/MemOps.h"
+#include "../../shared/Enum/Enum.h"
+#include "../../shared/Numerics/GaussPoints.h"
+#include "../../shared/Numerics/constants.h"
+
+/*GaussSeg constructors and destructors:*/
+GaussSeg::GaussSeg(){/*{{{*/
+
+	ig=-1;
+	numgauss=-1;
+
+	weights=NULL;
+	coords1=NULL;
+
+	weight=UNDEF;
+	coord1=UNDEF;
+}
+/*}}}*/
+GaussSeg::GaussSeg(int order){/*{{{*/
+
+	IssmPDouble* pcoords1=NULL;
+	IssmPDouble* pweights=NULL;
+
+	/*Get gauss points*/
+	this->ig       = -1;
+	this->numgauss = order;
+	GaussLegendreLinear(&pcoords1,&pweights,order);
+
+	this->coords1=xNew<IssmDouble>(numgauss);
+	this->weights=xNew<IssmDouble>(numgauss);
+
+	/*cast : */
+	for(int i=0;i<numgauss;i++){
+		this->coords1[i]=pcoords1[i];
+		this->weights[i]=pweights[i];
+	}
+
+	/*Free resources: */
+	xDelete<IssmPDouble>(pcoords1);
+	xDelete<IssmPDouble>(pweights);
+
+	/*Initialize static fields as undefinite*/
+	weight=UNDEF;
+	coord1=UNDEF;
+}
+/*}}}*/
+GaussSeg::GaussSeg(IssmDouble position){/*{{{*/
+
+	/*Get gauss points*/
+	this->numgauss = 1;
+	this->ig       = -1;
+	this->coords1=xNew<IssmDouble>(numgauss);
+	this->weights=xNew<IssmDouble>(numgauss);
+
+	/*cast : */
+	_assert_(position>=-1. && position<=+1.);
+	this->coords1[0]=position;
+	this->weights[0]=1.;
+
+	/*Initialize static fields as undefinite*/
+	weight=UNDEF;
+	coord1=UNDEF;
+}
+/*}}}*/
+GaussSeg::~GaussSeg(){/*{{{*/
+	xDelete<IssmDouble>(weights);
+	xDelete<IssmDouble>(coords1);
+}
+/*}}}*/
+
+/*Methods*/
+void GaussSeg::Echo(void){/*{{{*/
+
+	_printf_("GaussSeg:\n");
+	_printf_("   numgauss: " << numgauss << "\n");
+
+	if (weights){
+	 _printf_("   weights = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << weights[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("weights = NULL\n");
+	if (coords1){
+	 _printf_("   coords1 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords1[i] << "\n");
+	 _printf_("]\n");
+	}
+	_printf_("   weight = " << weight << "\n");
+	_printf_("   coord1 = " << coord1 << "\n");
+
+}
+/*}}}*/
+bool GaussSeg::next(void){/*{{{*/
+
+	/*Increment Gauss point*/
+	this->ig++;
+
+	/*Have we reached the end?*/
+	if(this->ig==this->numgauss) return false;
+
+	/*If not let's go to the next point*/
+	 _assert_(this->ig>=0 && this->ig< numgauss);
+	 weight=weights[ig];
+	 coord1=coords1[ig];
+
+	 return true;
+}/*}}}*/
+int GaussSeg::Enum(void){/*{{{*/
+	return GaussSegEnum;
+}
+/*}}}*/
+void GaussSeg::GaussPoint(int ig){/*{{{*/
+
+	/*Check input in debugging mode*/
+	 _assert_(ig>=0 && ig< numgauss);
+
+	 /*update static arrays*/
+	 weight=weights[ig];
+	 coord1=coords1[ig];
+}
+/*}}}*/
+void GaussSeg::GaussNode(int finiteelement,int iv){/*{{{*/
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	/*update static arrays*/
+	switch(finiteelement){
+		case P1Enum: case P1DGEnum:
+			switch(iv){
+				case 0: coord1=-1.; break;
+				case 1: coord1=+1.; break;
+				default: _error_("node index should be in [0 1]");
+			}
+			break;
+		default: _error_("Finite element "<<EnumToStringx(finiteelement)<<" not supported");
+	}
+
+}
+/*}}}*/
+void GaussSeg::GaussVertex(int iv){/*{{{*/
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	/*update static arrays*/
+	switch(iv){
+		case 0: coord1=-1.; break;
+		case 1: coord1=+1.; break;
+		default: _error_("vertex index should be in [0 1]");
+	}
+}
+/*}}}*/
+void GaussSeg::Reset(void){/*{{{*/
+
+	/*Check that this has been initialized*/
+	_assert_(numgauss>0);
+
+	/*Reset counter*/
+	this->ig=-1;
+} /*}}}*/
+void GaussSeg::SynchronizeGaussBase(Gauss* gauss){/*{{{*/
+
+	_error_("not supported");
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussSeg.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussSeg.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussSeg.h	(revision 27955)
@@ -0,0 +1,41 @@
+/*!\file GaussSeg.h
+ * \brief: header file for node object
+ */
+
+#ifndef _GAUSSSEG_H_
+#define _GAUSSSEG_H_
+
+/*Headers:*/
+#include "../../shared/Numerics/types.h"
+#include "./Gauss.h"
+
+class GaussSeg: public Gauss{
+
+	private:
+		int         numgauss;   /*Total number of gauss points*/
+		int         ig;         /*Current gauss point index*/
+		IssmDouble* weights;    /*List of weights*/
+		IssmDouble* coords1;
+
+	public:
+		IssmDouble coord1;
+
+	public:
+
+		/*GaussSeg constructors, destructors*/
+		GaussSeg();
+		GaussSeg(int order);
+		GaussSeg(IssmDouble position);
+		~GaussSeg();
+
+		/*Methods*/
+		bool next(void);
+		void Echo(void);
+		int  Enum(void);
+		void GaussPoint(int ig);
+		void GaussNode(int finitelement,int iv);
+		void GaussVertex(int iv);
+		void Reset(void);
+		void SynchronizeGaussBase(Gauss* gauss);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussTetra.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussTetra.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussTetra.cpp	(revision 27955)
@@ -0,0 +1,255 @@
+/*!\file GaussTetra.c
+ * \brief: implementation of the GaussTetra object
+ */
+
+#include <math.h>
+#include "./GaussTetra.h"
+#include "../../shared/io/Print/Print.h"
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/MemOps/MemOps.h"
+#include "../../shared/Enum/Enum.h"
+#include "../../shared/Numerics/GaussPoints.h"
+#include "../../shared/Numerics/constants.h"
+
+/*GaussTetra constructors and destructors:*/
+GaussTetra::GaussTetra(){/*{{{*/
+
+	ig     = -1;
+	numgauss=-1;
+
+	weights=NULL;
+	coords1=NULL;
+	coords2=NULL;
+	coords3=NULL;
+	coords4=NULL;
+
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+	coord4=UNDEF;
+}
+/*}}}*/
+GaussTetra::GaussTetra(int order){/*{{{*/
+
+	/*Get gauss points*/
+	GaussLegendreTetra(&numgauss,&coords1,&coords2,&coords3,&coords4,&weights,order);
+
+	/*Rescale weights if necessary*/
+	IssmDouble sumweights = 0.;
+	for(int i=0;i<numgauss;i++) sumweights += this->weights[i];
+	if(sumweights==1.){
+		for(int i=0;i<numgauss;i++) this->weights[i] = this->weights[i]/6.; /*rescale volume to 1/6*/
+	}
+
+	/*Check final weights in debugging mode*/
+	#ifdef _ISSM_DEBUG_
+	sumweights = 0.; for(int i=0;i<numgauss;i++) sumweights += this->weights[i];
+	_assert_(sumweights>1./6.-1e-10);
+	_assert_(sumweights<1./6.+1e-10);
+	#endif
+
+	/*Initialize static fields as undefinite*/
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+	ig    = -1;
+}
+/*}}}*/
+GaussTetra::GaussTetra(int index1,int index2,int index3,int order){/*{{{*/
+
+	/*Basal Tria*/
+	if(index1==0 && index2==1 && index3==2){
+		GaussLegendreTria(&numgauss,&coords1,&coords2,&coords3,&weights,order);
+		coords4=xNew<IssmDouble>(numgauss);
+		for(int i=0;i<numgauss;i++) coords4[i]=0.;
+	}
+	else if(index1==0 && index2==3 && index3==1){
+		GaussLegendreTria(&numgauss,&coords1,&coords2,&coords4,&weights,order);
+		coords3=xNew<IssmDouble>(numgauss);
+		for(int i=0;i<numgauss;i++) coords3[i]=0.;
+	}
+	else if(index1==1 && index2==3 && index3==2){
+		GaussLegendreTria(&numgauss,&coords2,&coords3,&coords4,&weights,order);
+		coords1=xNew<IssmDouble>(numgauss);
+		for(int i=0;i<numgauss;i++) coords1[i]=0.;
+	}
+	else if(index1==0 && index2==2 && index3==3){
+		GaussLegendreTria(&numgauss,&coords1,&coords3,&coords4,&weights,order);
+		coords2=xNew<IssmDouble>(numgauss);
+		for(int i=0;i<numgauss;i++) coords2[i]=0.;
+	}
+	else{
+		_error_(index1 <<" "<<index2 <<" "<<index3 <<" Not supported yet");
+	}
+	this->ig = -1;
+}
+/*}}}*/
+GaussTetra::~GaussTetra(){/*{{{*/
+	xDelete<IssmDouble>(weights);
+	xDelete<IssmDouble>(coords1);
+	xDelete<IssmDouble>(coords2);
+	xDelete<IssmDouble>(coords3);
+	xDelete<IssmDouble>(coords4);
+}
+/*}}}*/
+
+/*Methods*/
+void GaussTetra::Echo(void){/*{{{*/
+
+	_printf_("GaussTetra:\n");
+	_printf_("   numgauss: " << numgauss << "\n");
+
+	if (weights){
+	 _printf_("   weights = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << weights[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("weights = NULL\n");
+	if (coords1){
+	 _printf_("   coords1 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords1[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("coords1 = NULL\n");
+	if (coords2){
+	 _printf_("   coords2 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords2[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("coords2 = NULL\n");
+	if (coords3){
+	 _printf_("   coords3 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords3[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("coords3 = NULL\n");
+	if (coords4){
+		_printf_("   coords4 = ["); 
+		for(int i=0;i<numgauss;i++) _printf_(" " << coords4[i] << "\n");
+		_printf_("]\n");
+	}
+	else _printf_("coords4 = NULL\n");
+
+	_printf_("   weight = " << weight << "\n");
+	_printf_("   coord1 = " << coord1 << "\n");
+	_printf_("   coord2 = " << coord2 << "\n");
+	_printf_("   coord3 = " << coord3 << "\n");
+	_printf_("   coord4 = " << coord4 << "\n");
+
+}
+/*}}}*/
+int GaussTetra::Enum(void){/*{{{*/
+	return GaussTetraEnum;
+}
+/*}}}*/
+void GaussTetra::GaussPoint(int ig){/*{{{*/
+
+	/*Check input in debugging mode*/
+	 _assert_(ig>=0 && ig< numgauss);
+
+	 /*update static arrays*/
+	 weight=weights[ig];
+	 coord1=coords1[ig];
+	 coord2=coords2[ig];
+	 coord3=coords3[ig];
+	 coord4=coords4[ig];
+
+}
+/*}}}*/
+bool GaussTetra::next(void){/*{{{*/
+
+	/*Increment Gauss point*/
+	this->ig++;
+
+	/*Have we reached the end?*/
+	if(this->ig==this->numgauss) return false;
+
+	/*If not let's go to the next point*/
+	_assert_(this->ig>=0 && this->ig< numgauss);
+	weight=weights[ig];
+	coord1=coords1[ig];
+	coord2=coords2[ig];
+	coord3=coords3[ig];
+	coord4=coords4[ig];
+
+	return true;
+}/*}}}*/
+void GaussTetra::GaussNode(int finiteelement,int iv){/*{{{*/
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	/*update static arrays*/
+	switch(finiteelement){
+		case P1Enum: case P1DGEnum:
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; coord4=0.; break;
+				case 3: coord1=0.; coord2=0.; coord3=0.; coord4=1.; break;
+				default: _error_("node index should be in [0 3]");
+			}
+			break;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; coord4=0.; break;
+				case 3: coord1=0.; coord2=0.; coord3=0.; coord4=1.; break;
+				case 4: coord1=1./4.; coord2=1./4.; coord3=1./4.; coord4=1./4.; break;
+				default: _error_("node index should be in [0 4]");
+			}
+			break;
+		case P2Enum:
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; coord4=0.; break;
+				case 3: coord1=0.; coord2=0.; coord3=0.; coord4=1.; break;
+
+				case 4: coord1=0.; coord2=.5; coord3=.5; coord4=0.; break;
+				case 5: coord1=.5; coord2=0.; coord3=.5; coord4=0.; break;
+				case 6: coord1=.5; coord2=.5; coord3=0.; coord4=0.; break;
+				case 7: coord1=.5; coord2=0.; coord3=0.; coord4=.5; break;
+				case 8: coord1=0.; coord2=.5; coord3=0.; coord4=.5; break;
+				case 9: coord1=0.; coord2=0.; coord3=.5; coord4=.5; break;
+				default: _error_("node index should be in [0 9]");
+			}
+			break;
+		default: _error_("Finite element "<<EnumToStringx(finiteelement)<<" not supported");
+	}
+
+}
+/*}}}*/
+void GaussTetra::GaussVertex(int iv){/*{{{*/
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	/*update static arrays*/
+	switch(iv){
+		case 0: coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
+		case 1: coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
+		case 2: coord1=0.; coord2=0.; coord3=1.; coord4=0.; break;
+		case 3: coord1=0.; coord2=0.; coord3=0.; coord4=1.; break;
+		default: _error_("vertex index should be in [0 3]");
+
+	}
+
+}
+/*}}}*/
+void GaussTetra::Reset(void){/*{{{*/
+
+	/*Check that this has been initialized*/
+	_assert_(numgauss>0);
+
+	/*Reset counter*/
+	this->ig=-1;
+} /*}}}*/
+void GaussTetra::SynchronizeGaussBase(Gauss* gauss){/*{{{*/
+
+	_error_("not supported");
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussTetra.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussTetra.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussTetra.h	(revision 27955)
@@ -0,0 +1,47 @@
+/*!\file GaussTetra.h
+ * \brief: header file for node object
+ */
+
+#ifndef _GAUSSTETRA_H_
+#define _GAUSSTETRA_H_
+
+/*Headers:*/
+#include "../../shared/Numerics/types.h"
+#include "./Gauss.h"
+
+class GaussTetra: public Gauss{
+
+	private:
+		int         numgauss;   /*Total number of gauss points*/
+		int         ig;         /*Current gauss point index*/
+		IssmDouble* weights;
+		IssmDouble* coords1;
+		IssmDouble* coords2;
+		IssmDouble* coords3;
+		IssmDouble* coords4;
+
+	public:
+		IssmDouble coord1;
+		IssmDouble coord2;
+		IssmDouble coord3;
+		IssmDouble coord4;
+
+	public:
+
+		/*GaussTetra constructors, destructors*/
+		GaussTetra();
+		GaussTetra(int order);
+		GaussTetra(int index1,int index2,int index3,int order);
+		~GaussTetra();
+
+		/*Methods*/
+		bool next(void);
+		void Echo(void);
+		int  Enum(void);
+		void GaussPoint(int ig);
+		void GaussNode(int finitelement,int iv);
+		void GaussVertex(int iv);
+		void Reset(void);
+		void SynchronizeGaussBase(Gauss* gauss);
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussTria.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussTria.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussTria.cpp	(revision 27955)
@@ -0,0 +1,648 @@
+/*!\file GaussTria.c
+ * \brief: implementation of the GaussTria object
+ */
+
+#include "./GaussTria.h"
+#include "../../shared/shared.h"
+
+/*GaussTria constructors and destructors:*/
+GaussTria::GaussTria(){/*{{{*/
+
+	ig      = -1;
+	numgauss=-1;
+
+	weights=NULL;
+	coords1=NULL;
+	coords2=NULL;
+	coords3=NULL;
+
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+}
+/*}}}*/
+GaussTria::GaussTria(int order){/*{{{*/
+
+	/*Get gauss points*/
+	GaussLegendreTria(&numgauss,&coords1,&coords2,&coords3,&weights,order);
+
+	/*Initialize static fields as undefinite*/
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+	ig = -1;
+
+}
+/*}}}*/
+GaussTria::GaussTria(int index1,int index2,int order){/*{{{*/
+
+	/*Intermediaties*/
+	IssmPDouble *seg_coords  = NULL;
+	IssmPDouble *seg_weights = NULL;
+	IssmDouble  a1,b1,c1,a2,b2,c2;
+
+	/*Get Segment gauss points*/
+	numgauss=order;
+	GaussLegendreLinear(&seg_coords,&seg_weights,numgauss);
+
+	/*Allocate GaussTria fields*/
+	coords1=xNew<IssmDouble>(numgauss);
+	coords2=xNew<IssmDouble>(numgauss);
+	coords3=xNew<IssmDouble>(numgauss);
+	weights=xNew<IssmDouble>(numgauss);
+
+	/*Figure out coords of index1 (a1,b1,c1) and index2 (a2,b2,c2)*/
+	if(index1==0){
+		a1=1; b1=0; c1=0;
+	}
+	else if(index1==1){
+		a1=0; b1=1; c1=0;
+	}
+	else if(index1==2){
+		a1=0; b1=0; c1=1;
+	}
+	else{
+		_error_("First indice provided is not supported yet (user provided " << index1 << ")");
+	}
+	if(index2==0){
+		a2=1; b2=0; c2=0;
+	}
+	else if(index2==1){
+		a2=0; b2=1; c2=0;
+	}
+	else if(index2==2){
+		a2=0; b2=0; c2=1;
+	}
+	else{
+	 _error_("Second indice provided is not supported yet (user provided " << index2 << " )");
+	}
+
+	/*Build Triangle Gauss point*/
+	for(int i=0;i<numgauss;i++){
+		coords1[i]=0.5*(a1+a2) + 0.5*seg_coords[i]*(a2-a1);
+		coords2[i]=0.5*(b1+b2) + 0.5*seg_coords[i]*(b2-b1);
+		coords3[i]=0.5*(c1+c2) + 0.5*seg_coords[i]*(c2-c1);
+		weights[i]=seg_weights[i];
+	}
+
+	/*Initialize static fields as undefined*/
+	ig    = -1;
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+
+	/*clean up*/
+	xDelete<double>(seg_coords);
+	xDelete<double>(seg_weights);
+}
+/*}}}*/
+GaussTria::GaussTria(IssmDouble area_coordinates[2][3],int order){/*{{{*/
+
+	/*Intermediaties*/
+	IssmPDouble *seg_coords  = NULL;
+	IssmPDouble *seg_weights = NULL;
+
+	/*Get Segment gauss points*/
+	numgauss=order;
+	GaussLegendreLinear(&seg_coords,&seg_weights,numgauss);
+
+	/*Allocate GaussTria fields*/
+	coords1=xNew<IssmDouble>(numgauss);
+	coords2=xNew<IssmDouble>(numgauss);
+	coords3=xNew<IssmDouble>(numgauss);
+	weights=xNew<IssmDouble>(numgauss);
+
+	/*Build Triangle Gauss point*/
+	for(int i=0;i<numgauss;i++){
+		coords1[i]=0.5*(area_coordinates[0][0]+area_coordinates[1][0]) + 0.5*seg_coords[i]*(area_coordinates[1][0]-area_coordinates[0][0]);
+		coords2[i]=0.5*(area_coordinates[0][1]+area_coordinates[1][1]) + 0.5*seg_coords[i]*(area_coordinates[1][1]-area_coordinates[0][1]);
+		coords3[i]=0.5*(area_coordinates[0][2]+area_coordinates[1][2]) + 0.5*seg_coords[i]*(area_coordinates[1][2]-area_coordinates[0][2]);
+		weights[i]=seg_weights[i];
+	}
+
+	/*Initialize static fields as undefined*/
+	ig    = -1;
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+
+	/*clean up*/
+	xDelete<IssmPDouble>(seg_coords);
+	xDelete<IssmPDouble>(seg_weights);
+}
+/*}}}*/
+GaussTria::GaussTria(int index,IssmDouble r1,IssmDouble r2,bool mainlyfloating,int order){/*{{{*/
+
+	/*
+	 *  ^ 
+	 *  |
+	 * 1|\
+	 *  |  \
+	 *  |    \
+	 *  |      \
+	 *  |        \
+	 *  |          \
+	 *  |    +(x,y)  \
+	 *  |              \
+	 *  +---------------+-->
+	 *  0               1
+	 *
+	 */
+	int         ii;
+	IssmDouble x,y;
+	IssmDouble xy_list[3][2];
+
+	if(mainlyfloating){
+		/*Get gauss points*/
+		GaussLegendreTria(&this->numgauss,&this->coords1,&this->coords2,&this->coords3,&this->weights,order);
+
+		xy_list[0][0]=0;  xy_list[0][1]=0; 
+		xy_list[1][0]=r1; xy_list[1][1]=0; 
+		xy_list[2][0]=0;  xy_list[2][1]=r2; 
+
+		for(ii=0;ii<this->numgauss;ii++){
+			x = this->coords1[ii]*xy_list[0][0] + this->coords2[ii]*xy_list[1][0] + this->coords3[ii]*xy_list[2][0];
+			y = this->coords1[ii]*xy_list[0][1] + this->coords2[ii]*xy_list[1][1] + this->coords3[ii]*xy_list[2][1];
+
+			switch(index){
+				case 0:
+					this->coords1[ii] = 1.-x-y;
+					this->coords2[ii] = x;
+					this->coords3[ii] = y;
+					break;
+				case 1:
+					this->coords1[ii] = y;
+					this->coords2[ii] = 1.-x-y;
+					this->coords3[ii] = x;
+					break;
+				case 2:
+					this->coords1[ii] = x;
+					this->coords2[ii] = y;
+					this->coords3[ii] = 1.-x-y;
+					break;
+				default:
+					_error_("index "<<index<<" not supported yet");
+			}
+			this->weights[ii] = this->weights[ii]*r1*r2;
+		}
+	}
+	else{
+		/*Double number of gauss points*/
+		GaussTria *gauss1    = NULL;
+		GaussTria *gauss2    = NULL;
+		gauss1=new GaussTria(order);
+		gauss2=new GaussTria(order);
+
+		xy_list[0][0]=r1; xy_list[0][1]=0; 
+		xy_list[1][0]=0;  xy_list[1][1]=1.; 
+		xy_list[2][0]=0;  xy_list[2][1]=r2; 
+
+			//gauss1->Echo();
+		for(ii=0;ii<gauss1->numgauss;ii++){
+			x = gauss1->coords1[ii]*xy_list[0][0] + gauss1->coords2[ii]*xy_list[1][0] + gauss1->coords3[ii]*xy_list[2][0];
+			y = gauss1->coords1[ii]*xy_list[0][1] + gauss1->coords2[ii]*xy_list[1][1] + gauss1->coords3[ii]*xy_list[2][1];
+
+			switch(index){
+				case 0:
+					gauss1->coords1[ii] = 1.-x-y;
+					gauss1->coords2[ii] = x;
+					gauss1->coords3[ii] = y;
+					break;
+				case 1:
+					gauss1->coords1[ii] = y;
+					gauss1->coords2[ii] = 1.-x-y;
+					gauss1->coords3[ii] = x;
+					break;
+				case 2:
+					gauss1->coords1[ii] = x;
+					gauss1->coords2[ii] = y;
+					gauss1->coords3[ii] = 1.-x-y;
+					break;
+				default:
+					_error_("index "<<index<<" not supported yet");
+			}
+			gauss1->weights[ii] = gauss1->weights[ii]*r1*(1-r2);
+		}
+			//gauss1->Echo();
+		xy_list[0][0]=r1; xy_list[0][1]=0; 
+		xy_list[1][0]=1.; xy_list[1][1]=0; 
+		xy_list[2][0]=0;  xy_list[2][1]=1.; 
+
+			//gauss2->Echo();
+		for(ii=0;ii<gauss2->numgauss;ii++){
+			x = gauss2->coords1[ii]*xy_list[0][0] + gauss2->coords2[ii]*xy_list[1][0] + gauss2->coords3[ii]*xy_list[2][0];
+			y = gauss2->coords1[ii]*xy_list[0][1] + gauss2->coords2[ii]*xy_list[1][1] + gauss2->coords3[ii]*xy_list[2][1];
+
+			switch(index){
+				case 0:
+					gauss2->coords1[ii] = 1.-x-y;
+					gauss2->coords2[ii] = x;
+					gauss2->coords3[ii] = y;
+					break;
+				case 1:
+					gauss2->coords1[ii] = y;
+					gauss2->coords2[ii] = 1.-x-y;
+					gauss2->coords3[ii] = x;
+					break;
+				case 2:
+					gauss2->coords1[ii] = x;
+					gauss2->coords2[ii] = y;
+					gauss2->coords3[ii] = 1.-x-y;
+					break;
+				default:
+					_error_("index "<<index<<" not supported yet");
+			}
+			gauss2->weights[ii] = gauss2->weights[ii]*(1-r1);
+		}
+
+		this->numgauss = gauss1->numgauss + gauss2->numgauss;
+		this->coords1=xNew<IssmDouble>(this->numgauss);
+		this->coords2=xNew<IssmDouble>(this->numgauss);
+		this->coords3=xNew<IssmDouble>(this->numgauss);
+		this->weights=xNew<IssmDouble>(this->numgauss);
+
+		for(ii=0;ii<gauss1->numgauss;ii++){ // Add the first triangle gauss points
+			this->coords1[ii]=gauss1->coords1[ii];
+			this->coords2[ii]=gauss1->coords2[ii];
+			this->coords3[ii]=gauss1->coords3[ii];
+			this->weights[ii]=gauss1->weights[ii];
+		}
+		for(ii=0;ii<gauss2->numgauss;ii++){ // Add the second triangle gauss points
+			this->coords1[gauss1->numgauss+ii]=gauss2->coords1[ii];
+			this->coords2[gauss1->numgauss+ii]=gauss2->coords2[ii];
+			this->coords3[gauss1->numgauss+ii]=gauss2->coords3[ii];
+			this->weights[gauss1->numgauss+ii]=gauss2->weights[ii];
+		}
+
+		/*Delete gauss points*/
+		delete gauss1;
+		delete gauss2;
+	}
+
+	/*Initialize static fields as undefined*/
+	ig    = -1;
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+}
+/*}}}*/
+GaussTria::GaussTria(int index,IssmDouble r1,IssmDouble r2,int order){/*{{{*/
+
+	/*
+	 *  ^ 
+	 *  ------------------
+	 * 1|\              |
+	 *  |  \            |
+	 *  |    \          |
+	 *  |      \        |
+	 *  |        \      |
+	 *  |          \    |
+	 *  |    +(x,y)  \  |
+	 *  |              \|
+	 *  +---------------+-->
+	 *  0               1
+	 *
+	 */
+	IssmDouble x,y;
+	IssmDouble xy_list[3][2];
+
+	/*Double number of gauss points*/
+	GaussTria *gauss1    = NULL;
+	GaussTria *gauss2    = NULL;
+	gauss1=new GaussTria(index,r1,r2,1,order); //for the mainly floating part
+	gauss2=new GaussTria(index,r1,r2,0,order); //for the mainly grounded part
+
+	this->numgauss = gauss1->numgauss + gauss2->numgauss;
+	this->coords1=xNew<IssmDouble>(this->numgauss);
+	this->coords2=xNew<IssmDouble>(this->numgauss);
+	this->coords3=xNew<IssmDouble>(this->numgauss);
+	this->weights=xNew<IssmDouble>(this->numgauss);
+
+	for(int ii=0;ii<gauss1->numgauss;ii++){ // Add the first triangle gauss points
+		this->coords1[ii]=gauss1->coords1[ii];
+		this->coords2[ii]=gauss1->coords2[ii];
+		this->coords3[ii]=gauss1->coords3[ii];
+		this->weights[ii]=gauss1->weights[ii];
+	}
+	for(int ii=0;ii<gauss2->numgauss;ii++){ // Add the second triangle gauss points
+		this->coords1[gauss1->numgauss+ii]=gauss2->coords1[ii];
+		this->coords2[gauss1->numgauss+ii]=gauss2->coords2[ii];
+		this->coords3[gauss1->numgauss+ii]=gauss2->coords3[ii];
+		this->weights[gauss1->numgauss+ii]=gauss2->weights[ii];
+	}
+
+	/*Delete gauss points*/
+	delete gauss1;
+	delete gauss2;
+
+	/*Initialize static fields as undefined*/
+	ig    = -1;
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+}
+/*}}}*/
+GaussTria::GaussTria(IssmDouble r1,IssmDouble r2,int order){/*{{{*/
+
+	/*
+	 *  ^ 
+	 *  ------------------
+	 * 1|\              |
+	 *  |  \            |
+	 *  |    \          |
+	 *  |      \        |
+	 *  |        \      |
+	 *  |          \    |
+	 *  |    +(x,y)  \  |
+	 *  |              \|
+	 *  +---------------+-->
+	 *  0               1
+	 *
+	 */
+	int         ii;
+	IssmDouble x,y;
+	IssmDouble xy_list[3][2];
+
+	/*Double number of gauss points*/
+	GaussTria *gauss1    = NULL; //blue
+	GaussTria *gauss2    = NULL; //green
+	GaussTria *gauss3    = NULL; //red
+	gauss1=new GaussTria(order); 
+	gauss2=new GaussTria(order); 
+	gauss3=new GaussTria(order); 
+
+	this->numgauss = gauss1->numgauss + gauss2->numgauss + gauss3->numgauss;
+	this->coords1=xNew<IssmDouble>(this->numgauss);
+	this->coords2=xNew<IssmDouble>(this->numgauss);
+	this->coords3=xNew<IssmDouble>(this->numgauss);
+	this->weights=xNew<IssmDouble>(this->numgauss);
+
+	for(ii=0;ii<gauss1->numgauss;ii++){ // Add the first triangle gauss points (BLUE)
+		this->coords1[ii]=gauss1->coords1[ii];
+		this->coords2[ii]=gauss1->coords2[ii];
+		this->coords3[ii]=gauss1->coords3[ii];
+		this->weights[ii]=gauss1->weights[ii]*r1*r2;
+	}
+	for(ii=0;ii<gauss2->numgauss;ii++){ // Add the second triangle gauss points (GREEN)
+		this->coords1[gauss1->numgauss+ii]=gauss2->coords1[ii];
+		this->coords2[gauss1->numgauss+ii]=gauss2->coords2[ii];
+		this->coords3[gauss1->numgauss+ii]=gauss2->coords3[ii];
+		this->weights[gauss1->numgauss+ii]=gauss2->weights[ii]*r1*(1-r2);
+	}
+	for(ii=0;ii<gauss3->numgauss;ii++){ // Add the second triangle gauss points (RED)
+		this->coords1[gauss1->numgauss+gauss2->numgauss+ii]=gauss3->coords1[ii];
+		this->coords2[gauss1->numgauss+gauss2->numgauss+ii]=gauss3->coords2[ii];
+		this->coords3[gauss1->numgauss+gauss2->numgauss+ii]=gauss3->coords3[ii];
+		this->weights[gauss1->numgauss+gauss2->numgauss+ii]=gauss3->weights[ii]*(1-r1);
+	}
+
+	/*Delete gauss points*/
+	delete gauss1;
+	delete gauss2;
+	delete gauss3;
+
+	/*Initialize static fields as undefined*/
+	ig    = -1;
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+}
+/*}}}*/
+GaussTria::~GaussTria(){/*{{{*/
+	xDelete<IssmDouble>(weights);
+	xDelete<IssmDouble>(coords3);
+	xDelete<IssmDouble>(coords2);
+	xDelete<IssmDouble>(coords1);
+
+}
+/*}}}*/
+
+/*Methods*/
+void GaussTria::Echo(void){/*{{{*/
+
+	_printf_("GaussTria:\n");
+	_printf_("   numgauss: " << numgauss << "\n");
+
+	if (weights){
+	 _printf_("   weights = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << weights[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("weights = NULL\n");
+	if (coords1){
+	 _printf_("   coords1 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords1[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("coords1 = NULL\n");
+	if (coords2){
+	 _printf_("   coords2 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords2[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("coords2 = NULL\n");
+	if (coords3){
+	 _printf_("   coords3 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords3[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("coords3 = NULL\n");
+
+	_printf_("   weight = " << weight << "\n");
+	_printf_("   coord1 = " << coord1 << "\n");
+	_printf_("   coord2 = " << coord2 << "\n");
+	_printf_("   coord3 = " << coord3 << "\n");
+
+}
+/*}}}*/
+int GaussTria::Enum(void){/*{{{*/
+	return GaussTriaEnum;
+}
+/*}}}*/
+void GaussTria::GaussEdgeCenter(int index1,int index2){/*{{{*/
+
+	int     index3;
+
+	/*Reverse index1 and 2 if necessary*/
+	if (index1>index2){
+		index3=index1; index1=index2; index2=index3;
+	}
+
+	/*update static arrays*/
+	if (index1==0 && index2==1){
+		coord1=0.5;
+		coord2=0.5;
+		coord3=0.0;
+	}
+	else if (index1==0 && index2==2){
+		coord1=0.5;
+		coord2=0.0;
+		coord3=0.5;
+	}
+	else if (index1==1 && index2==2){
+		coord1=0.0;
+		coord2=0.5;
+		coord3=0.5;
+	}
+	else
+	 _error_("The 2 indices provided are not supported yet (user provided " << index1 << " and " << index2 << ")");
+
+}
+/*}}}*/
+void GaussTria::GaussFromCoords(IssmDouble x,IssmDouble y,IssmDouble* xyz_list){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble    area = 0;
+	IssmDouble    x1,y1,x2,y2,x3,y3;
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	x1=*(xyz_list+3*0+0); y1=*(xyz_list+3*0+1);
+	x2=*(xyz_list+3*1+0); y2=*(xyz_list+3*1+1);
+	x3=*(xyz_list+3*2+0); y3=*(xyz_list+3*2+1);
+
+	area=(x2*y3 - y2*x3 + x1*y2 - y1*x2 + x3*y1 - y3*x1)/2;
+
+	/*Get first area coordinate = det(x-x3  x2-x3 ; y-y3   y2-y3)/area*/
+	coord1=((x-x3)*(y2-y3)-(x2-x3)*(y-y3))/area;
+
+	/*Get second area coordinate = det(x1-x3  x-x3 ; y1-y3   y-y3)/area*/
+	coord2=((x1-x3)*(y-y3)-(x-x3)*(y1-y3))/area;
+
+	/*Get third  area coordinate 1-area1-area2: */
+	coord3=1-coord1-coord2;
+
+}
+/*}}}*/
+void GaussTria::GaussPoint(int ig){/*{{{*/
+
+	/*Check input in debugging mode*/
+	 _assert_(ig>=0 && ig< numgauss);
+
+	 /*update static arrays*/
+	 weight=weights[ig];
+	 coord1=coords1[ig];
+	 coord2=coords2[ig];
+	 coord3=coords3[ig];
+
+}
+/*}}}*/
+bool GaussTria::next(void){/*{{{*/
+
+	/*Increment Gauss point*/
+	this->ig++;
+
+	/*Have we reached the end?*/
+	if(this->ig==this->numgauss) return false;
+
+	/*If not let's go to the next point*/
+	_assert_(this->ig>=0 && this->ig< numgauss);
+	weight=weights[ig];
+	coord1=coords1[ig];
+	coord2=coords2[ig];
+	coord3=coords3[ig];
+
+	return true;
+}/*}}}*/
+void GaussTria::GaussNode(int finiteelement,int iv){/*{{{*/
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	/*update static arrays*/
+	switch(finiteelement){
+		case P0Enum: case P0DGEnum:
+			switch(iv){
+				case 0: coord1=1./3.; coord2=1./3.; coord3=1./3.; break;
+				default: _error_("node index should be 0");
+			}
+			break;
+		case P1Enum: case P1DGEnum:
+		case P1P1GLSEnum: case P1P1Enum:/* added to allow P1-P1 GLS */
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; break;
+				default: _error_("node index should be in [0 2]");
+			}
+			break;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			switch(iv){
+				case 0: coord1=1.;    coord2=0.;    coord3=0.;    break;
+				case 1: coord1=0.;    coord2=1.;    coord3=0.;    break;
+				case 2: coord1=0.;    coord2=0.;    coord3=1.;    break;
+				case 3: coord1=1./3.; coord2=1./3.; coord3=1./3.; break;
+				default: _error_("node index should be in [0 3]");
+			}
+			break;
+		case P2Enum:
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; break;
+				case 3: coord1=0.; coord2=.5; coord3=.5; break;
+				case 4: coord1=.5; coord2=0.; coord3=.5; break;
+				case 5: coord1=.5; coord2=.5; coord3=0.; break;
+				default: _error_("node index should be in [0 5]");
+			}
+			break;
+		case P2bubbleEnum: case P2bubblecondensedEnum:
+			switch(iv){
+				case 0: coord1=1.; coord2=0.; coord3=0.; break;
+				case 1: coord1=0.; coord2=1.; coord3=0.; break;
+				case 2: coord1=0.; coord2=0.; coord3=1.; break;
+				case 3: coord1=0.; coord2=.5; coord3=.5; break;
+				case 4: coord1=.5; coord2=0.; coord3=.5; break;
+				case 5: coord1=.5; coord2=.5; coord3=0.; break;
+				case 6: coord1=1./3.; coord2=1./3.; coord3=1./3.; break;
+				default: _error_("node index should be in [0 6]");
+			}
+			break;
+		default: _error_("Finite element "<<EnumToStringx(finiteelement)<<" not supported");
+	}
+
+}
+/*}}}*/
+void GaussTria::GaussVertex(int iv){/*{{{*/
+
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	/*update static arrays*/
+	switch(iv){
+		case 0: coord1=1.; coord2=0.; coord3=0.; break;
+		case 1: coord1=0.; coord2=1.; coord3=0.; break;
+		case 2: coord1=0.; coord2=0.; coord3=1.; break;
+		default: _error_("vertex index should be in [0 2]");
+	}
+
+}
+/*}}}*/
+void GaussTria::Reset(void){/*{{{*/
+
+	/*Check that this has been initialized*/
+	_assert_(numgauss>0);
+
+	/*Reset counter*/
+	this->ig=-1;
+} /*}}}*/
+void GaussTria::SynchronizeGaussBase(Gauss* gauss){/*{{{*/
+	//itapopo check this
+	_assert_(gauss->Enum()==GaussTriaEnum);
+   GaussTria* gauss_tria = xDynamicCast<GaussTria*>(gauss);
+
+   gauss_tria->coord1=this->coord1;
+   gauss_tria->coord2=this->coord2;
+   gauss_tria->coord3=this->coord3;
+   gauss_tria->weight=UNDEF;
+	//_error_("not supported");
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussTria.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussTria.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/GaussTria.h	(revision 27955)
@@ -0,0 +1,51 @@
+/*!\file GaussTria.h
+ * \brief: header file for node object
+ */
+
+#ifndef _GAUSSTRIA_H_
+#define _GAUSSTRIA_H_
+
+/*Headers:*/
+#include "../../shared/Numerics/types.h"
+#include "./Gauss.h"
+
+class GaussTria: public Gauss{
+
+	private:
+		int         numgauss;   /*Total number of gauss points*/
+		int         ig;         /*Current gauss point index*/
+		IssmDouble* weights;
+		IssmDouble* coords1;
+		IssmDouble* coords2;
+		IssmDouble* coords3;
+
+	public:
+		IssmDouble coord1;
+		IssmDouble coord2;
+		IssmDouble coord3;
+
+	public:
+
+		/*GaussTria constructors, destructors*/
+		GaussTria();
+		GaussTria(int order);
+		GaussTria(int index1,int index2,int order);
+		GaussTria(int index,IssmDouble r1, IssmDouble r2,bool maintlyfloating,int order);
+		GaussTria(int index,IssmDouble r1, IssmDouble r2,int order);
+		GaussTria(IssmDouble r1, IssmDouble r2,int order);
+		GaussTria(IssmDouble area_coordinates[2][3],int order);
+		~GaussTria();
+
+		/*Methods*/
+		bool next(void);
+		void Echo(void);
+		int  Enum(void);
+		void GaussEdgeCenter(int index1,int index2);
+		void GaussFromCoords(IssmDouble x1,IssmDouble y1,IssmDouble* xyz_list);
+		void GaussPoint(int ig);
+		void GaussNode(int finitelement,int iv);
+		void GaussVertex(int iv);
+		void Reset(void);
+		void SynchronizeGaussBase(Gauss* gauss);
+};
+#endif  /* _GAUSSTRIA_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/gaussobjects.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/gaussobjects.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/gauss/gaussobjects.h	(revision 27955)
@@ -0,0 +1,14 @@
+/* \file gaussobjects.h
+ * \brief: prototype header for all gauss related objects
+ */
+
+#ifndef ALL_GAUSS_OBJECTS_H_
+#define ALL_GAUSS_OBJECTS_H_
+
+#include "./Gauss.h"
+#include "./GaussSeg.h"
+#include "./GaussTria.h"
+#include "./GaussTetra.h"
+#include "./GaussPenta.h"
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Covertree.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Covertree.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Covertree.cpp	(revision 27955)
@@ -0,0 +1,430 @@
+#include "../classes.h"
+#include <set>
+#include <algorithm>
+
+	/*Constructors/Destructors*/
+Covertree::Covertree(int maxLevel,const std::vector<Observation>& points){/*{{{*/
+	this->base = 2.;
+	_root=NULL;
+	_numNodes=0;
+	_maxLevel=maxLevel;//ceilf(log(maxDist)/log(base));
+	_minLevel=_maxLevel-1;
+	std::vector<Observation>::const_iterator it;
+	for(it=points.begin(); it!=points.end(); ++it) {
+		this->insert(*it);//adds data to the covertree object
+	}
+}/*}}}*/
+Covertree::~Covertree(){/*{{{*/
+	if(_root==NULL) return;
+	//Get all of the root's children (from any level),
+	//delete the root, repeat for each of the children
+	std::vector<CoverTreeNode*> nodes;
+	nodes.push_back(_root);
+	while(!nodes.empty()) {
+		CoverTreeNode* byeNode = nodes[0];
+		nodes.erase(nodes.begin());
+		std::vector<CoverTreeNode*> children = byeNode->getAllChildren();
+		nodes.insert(nodes.begin(),children.begin(),children.end());
+		delete byeNode;
+	}   
+}/*}}}*/
+
+	/*Methods*/
+std::pair<double, Covertree::CoverTreeNode*>		Covertree::distance(const Observation& p, const std::vector<CoverTreeNode*>& Q){/*{{{*/
+	double minDist = 1.e+50;
+	CoverTreeNode* minNode;
+	std::vector<CoverTreeNode*>::const_iterator it;
+	for(it=Q.begin();it!=Q.end();++it) {
+		double dist = p.distance((*it)->getObservation());
+		if(dist < minDist) {
+			minDist = dist;
+			minNode = *it;
+		}
+	}
+	return std::make_pair(minDist,minNode);  
+}/*}}}*/
+int Covertree::get_numberofobs(){/*{{{*/
+	return _numNodes;
+}/*}}}*/
+void   Covertree::insert(const Observation& newObservation){/*{{{*/
+	if(_root==NULL) {
+		_root = new CoverTreeNode(newObservation);
+		_numNodes=1;
+		return;
+	}
+	//TODO: this is pretty inefficient, there may be a better way
+	//to check if the node already exists...
+	CoverTreeNode* n = kNearestNodes(newObservation,1)[0];
+	if(newObservation.distance(n->getObservation())==0.0) {
+		n->addObservation(newObservation);
+	} else {
+		//insert_rec acts under the assumption that there are no nodes with
+		//distance 0 to newObservation in the cover tree (the previous lines check it)
+		insert_rec(newObservation,
+					std::vector<distNodePair>
+					(1,std::make_pair(_root->distance(newObservation),_root)),
+					_maxLevel);
+	}
+}/*}}}*/
+bool		Covertree::insert_rec(const Observation& p, const std::vector<distNodePair>& Qi, const int& level){/*{{{*/
+	std::vector<std::pair<double, CoverTreeNode*> > Qj;
+	double sep = pow(base,level);
+	double minDist = 1.e+50;
+	std::pair<double,CoverTreeNode*> minQiDist(1.e+50,NULL);
+	std::vector<std::pair<double, CoverTreeNode*> >::const_iterator it;
+	for(it=Qi.begin(); it!=Qi.end(); ++it) {
+		if(it->first<minQiDist.first) minQiDist = *it;
+		if(it->first<minDist) minDist=it->first;
+		if(it->first<=sep) Qj.push_back(*it);
+		std::vector<CoverTreeNode*> children = it->second->getChildren(level);
+		std::vector<CoverTreeNode*>::const_iterator it2;
+		for(it2=children.begin();it2!=children.end();++it2) {
+			double d = p.distance((*it2)->getObservation());
+			if(d<minDist) minDist = d;
+			if(d<=sep) {
+				Qj.push_back(std::make_pair(d,*it2));
+			}
+		}
+	}
+	//std::cout << "level: " << level << ", sep: " << sep << ", dist: " << minQDist.first << "\n";
+	if(minDist > sep) {
+		return true;
+	} else {
+		bool found = insert_rec(p,Qj,level-1);
+		//distNodePair minQiDist = distance(p,Qi);
+		if(found && minQiDist.first <= sep) {
+			if(level-1<_minLevel) _minLevel=level-1;
+			minQiDist.second->addChild(level,
+						new CoverTreeNode(p));
+			//std::cout << "parent is ";
+			//minQiDist.second->getObservation().print();
+			_numNodes++;
+			return false;
+		} else {
+			return found;
+		}
+	}
+}/*}}}*/
+std::vector<Covertree::CoverTreeNode*> Covertree::kNearestNodes(const Observation& p, const unsigned int& k) const{/*{{{*/
+	if(_root==NULL) return std::vector<CoverTreeNode*>();
+	//maxDist is the kth nearest known point to p, and also the farthest
+	//point from p in the set minNodes defined below.
+	double maxDist = p.distance(_root->getObservation());
+	//minNodes stores the k nearest known points to p.
+	std::set<distNodePair> minNodes;
+
+	minNodes.insert(std::make_pair(maxDist,_root));
+	std::vector<distNodePair> Qj(1,std::make_pair(maxDist,_root));
+	for(int level = _maxLevel; level>=_minLevel;level--) {
+		std::vector<distNodePair>::const_iterator it;
+		int size = Qj.size();
+		for(int i=0; i<size; i++) {
+			std::vector<CoverTreeNode*> children =
+			  Qj[i].second->getChildren(level);
+			std::vector<CoverTreeNode*>::const_iterator it2;
+			for(it2=children.begin(); it2!=children.end(); ++it2) {
+				double d = p.distance((*it2)->getObservation());
+				if(d < maxDist || minNodes.size() < k) {
+					minNodes.insert(std::make_pair(d,*it2));
+					//--minNodes.end() gives us an iterator to the greatest
+					//element of minNodes.
+					if(minNodes.size() > k) minNodes.erase(--minNodes.end());
+					maxDist = (--minNodes.end())->first;
+				}
+				Qj.push_back(std::make_pair(d,*it2));
+			}
+		}
+		double sep = maxDist + pow(base, level);
+		size = Qj.size();
+		for(int i=0; i<size; i++) {
+			if(Qj[i].first > sep) {
+				//quickly removes an element from a vector w/o preserving order.
+				Qj[i]=Qj.back();
+				Qj.pop_back();
+				size--; i--;
+			}
+		}
+	}
+	std::vector<CoverTreeNode*> kNN;
+	std::set<distNodePair>::const_iterator it;
+	for(it=minNodes.begin();it!=minNodes.end();++it) {
+		kNN.push_back(it->second);
+	}
+	return kNN;
+}/*}}}*/
+std::vector<Observation> Covertree::kNearestNeighbors(const Observation& p, const unsigned int& k) const{/*{{{*/
+	if(_root==NULL) return std::vector<Observation>();
+	std::vector<CoverTreeNode*> v = kNearestNodes(p, k);
+	std::vector<Observation> kNN;
+	std::vector<CoverTreeNode*>::const_iterator it;
+	for(it=v.begin();it!=v.end();++it) {
+		const std::vector<Observation>& p = (*it)->getObservations();
+		kNN.insert(kNN.end(),p.begin(),p.end());
+		if(kNN.size() >= k) break;
+	}
+	return kNN;
+}/*}}}*/
+void   Covertree::print() const{/*{{{*/
+	int d = _maxLevel-_minLevel+1;
+	std::vector<CoverTreeNode*> Q;
+	Q.push_back(_root);
+	for(int i=0;i<d;i++) {
+		std::cout << "LEVEL " << _maxLevel-i << "\n";
+		std::vector<CoverTreeNode*>::const_iterator it;
+		for(it=Q.begin();it!=Q.end();++it) {
+			(*it)->getObservation().print();
+			std::vector<CoverTreeNode*>
+			  children = (*it)->getChildren(_maxLevel-i);
+			std::vector<CoverTreeNode*>::const_iterator it2;
+			for(it2=children.begin();it2!=children.end();++it2) {
+				std::cout << "  ";
+				(*it2)->getObservation().print();
+			}
+		}
+		std::vector<CoverTreeNode*> newQ;
+		for(it=Q.begin();it!=Q.end();++it) {
+			std::vector<CoverTreeNode*>
+			  children = (*it)->getChildren(_maxLevel-i);
+			newQ.insert(newQ.end(),children.begin(),children.end());
+		}
+		Q.insert(Q.end(),newQ.begin(),newQ.end());
+		std::cout << "\n\n";
+	}
+}/*}}}*/
+void   Covertree::remove(const Observation& p){/*{{{*/
+	//Most of this function's code is for the special case of removing the root
+	if(_root==NULL) return;
+	bool removingRoot=_root->hasObservation(p);
+	if(removingRoot && !_root->isSingle()) {
+		_root->removeObservation(p);
+		return;
+	}
+	CoverTreeNode* newRoot=NULL;
+	if(removingRoot) {
+		if(_numNodes==1) {
+			//removing the last node...
+			delete _root;
+			_numNodes--;
+			_root=NULL;
+			return;
+		} else {
+			for(int i=_maxLevel;i>_minLevel;i--) {
+				if(!(_root->getChildren(i).empty())) {
+					newRoot = _root->getChildren(i).back();
+					_root->removeChild(i,newRoot);
+					break;
+				}
+			}
+		}
+	}
+	std::map<int, std::vector<distNodePair> > coverSets;
+	coverSets[_maxLevel].push_back(std::make_pair(_root->distance(p),_root));
+	if(removingRoot)
+	 coverSets[_maxLevel].push_back(std::make_pair(newRoot->distance(p),newRoot));
+	bool multi = false;
+	remove_rec(p,coverSets,_maxLevel,multi);
+	if(removingRoot) {
+		delete _root;
+		_numNodes--;
+		_root=newRoot;
+	}
+}/*}}}*/
+void   Covertree::remove_rec(const Observation& p, std::map<int,std::vector<distNodePair> >& coverSets, int level, bool& multi){/*{{{*/
+	std::vector<distNodePair>& Qi = coverSets[level];
+	std::vector<distNodePair>& Qj = coverSets[level-1];
+	double minDist = 1.e+50;
+	CoverTreeNode* minNode = _root;
+	CoverTreeNode* parent = 0;
+	double sep = pow(base, level);
+	std::vector<distNodePair>::const_iterator it;
+	//set Qj to be all children q of Qi such that p.distance(q)<=sep
+	//and also keep track of the minimum distance from p to a node in Qj
+	//note that every node has itself as a child, but the
+	//getChildren function only returns non-self-children.
+	for(it=Qi.begin();it!=Qi.end();++it) {
+		std::vector<CoverTreeNode*> children = it->second->getChildren(level);
+		double dist = it->first;
+		if(dist<minDist) {
+			minDist = dist;
+			minNode = it->second;
+		}
+		if(dist <= sep) {
+			Qj.push_back(*it);
+		}
+		std::vector<CoverTreeNode*>::const_iterator it2;
+		for(it2=children.begin();it2!=children.end();++it2) {
+			dist = p.distance((*it2)->getObservation());
+			if(dist<minDist) {
+				minDist = dist;
+				minNode = *it2;
+				if(dist == 0.0) parent = it->second;
+			}
+			if(dist <= sep) {
+				Qj.push_back(std::make_pair(dist,*it2));
+			}
+		}
+	}
+	if(level>_minLevel) remove_rec(p,coverSets,level-1,multi);
+	if(minNode->hasObservation(p)) {
+		//the multi flag indicates the point we removed is from a
+		//node containing multiple points, and we have removed it,
+		//so we don't need to do anything else.
+		if(multi) return;
+		if(!minNode->isSingle()) {
+			minNode->removeObservation(p);
+			multi=true;
+			return;
+		}
+		if(parent!=NULL) parent->removeChild(level, minNode);
+		std::vector<CoverTreeNode*> children = minNode->getChildren(level-1);
+		std::vector<distNodePair>& Q = coverSets[level-1];
+		if(Q.size()==1 && Q[0].second==minNode) {
+			Q.pop_back();
+		} else {
+			for(unsigned int i=0;i<Q.size();i++) {
+				if(Q[i].second==minNode) {
+					Q[i]=Q.back();
+					Q.pop_back();
+					break;
+				}
+			}
+		}
+		std::vector<CoverTreeNode*>::const_iterator it;
+		for(it=children.begin();it!=children.end();++it) {
+			int i = level-1;
+			Observation q = (*it)->getObservation();
+			double minDQ = 1.e+50;
+			CoverTreeNode* minDQNode = NULL;
+			double sep = pow(base,i);
+			bool br=false;
+			while(true) {
+				std::vector<distNodePair>&
+				  Q = coverSets[i];
+				std::vector<distNodePair>::const_iterator it2;
+				minDQ = 1.e+50;
+				for(it2=Q.begin();it2!=Q.end();++it2) {
+					double d = q.distance(it2->second->getObservation());
+					if(d<minDQ) {
+						minDQ = d;
+						minDQNode = it2->second;
+						if(d <=sep) {
+							br=true;
+							break;
+						}
+					}
+				}
+				minDQ=1.e+50;
+				if(br) break;
+				Q.push_back(std::make_pair((*it)->distance(p),*it));
+				i++;
+				sep = pow(base,i);
+			}
+			//minDQNode->getObservation().print();
+			//std::cout << " is level " << i << " parent of ";
+			//(*it)->getObservation().print();
+			if (minDQNode != NULL)
+			 minDQNode->addChild(i,*it);
+		}
+		if(parent!=NULL) {
+			delete minNode;
+			_numNodes--;
+		}
+	}
+}/*}}}*/
+
+void   Covertree::CoverTreeNode::addChild(int level, CoverTreeNode* p){/*{{{*/
+	_childMap[level].push_back(p);
+}/*}}}*/
+void   Covertree::CoverTreeNode::addObservation(const Observation& p){/*{{{*/
+	if(find(_observations.begin(), _observations.end(), p) == _observations.end())
+	 _observations.push_back(p);
+}/*}}}*/
+Covertree::CoverTreeNode::CoverTreeNode(const Observation& p) {/*{{{*/
+	_observations.push_back(p);
+}/*}}}*/
+double Covertree::CoverTreeNode::distance(const CoverTreeNode& p) const{/*{{{*/
+	return _observations[0].distance(p.getObservation());
+}/*}}}*/
+std::vector<Covertree::CoverTreeNode*> Covertree::CoverTreeNode::getAllChildren() const{/*{{{*/
+	std::vector<CoverTreeNode*> children;
+	std::map<int,std::vector<CoverTreeNode*> >::const_iterator it;
+	for(it=_childMap.begin();it!=_childMap.end();++it) {
+		children.insert(children.end(), it->second.begin(), it->second.end());
+	}
+	return children;
+}/*}}}*/
+std::vector<Covertree::CoverTreeNode*> Covertree::CoverTreeNode::getChildren(int level) const{/*{{{*/
+	std::map<int,std::vector<CoverTreeNode*> >::const_iterator
+	  it = _childMap.find(level);
+	if(it!=_childMap.end()) {
+		return it->second;
+	}
+	return std::vector<CoverTreeNode*>();
+}/*}}}*/
+const Observation& Covertree::CoverTreeNode::getObservation() const{/*{{{*/
+	return _observations[0]; 
+}/*}}}*/
+Covertree::CoverTreeNode* Covertree::getRoot() const{/*{{{*/
+	return _root;
+}/*}}}*/
+bool   Covertree::CoverTreeNode::hasObservation(const Observation& p) const{/*{{{*/
+	return find(_observations.begin(), _observations.end(), p) != _observations.end();
+}/*}}}*/
+bool   Covertree::CoverTreeNode::isSingle() const{/*{{{*/
+	return _observations.size() == 1;
+}/*}}}*/
+bool   Covertree::isValidTree() const {/*{{{*/
+	if(_numNodes==0)
+	 return _root==NULL;
+
+	std::vector<CoverTreeNode*> nodes;
+	nodes.push_back(_root);
+	for(int i=_maxLevel;i>_minLevel;i--) {
+		double sep = pow(base,i);
+		std::vector<CoverTreeNode*>::const_iterator it, it2;
+		//verify separation invariant of cover tree: for each level,
+		//every point is farther than base^level away
+		for(it=nodes.begin(); it!=nodes.end(); ++it) {
+			for(it2=nodes.begin(); it2!=nodes.end(); ++it2) {
+				double dist=(*it)->distance((*it2)->getObservation());
+				if(dist<=sep && dist!=0.0) {
+					std::cout << "Level " << i << " Separation invariant failed.\n";
+					return false;
+				}
+			}
+		}
+		std::vector<CoverTreeNode*> allChildren;
+		for(it=nodes.begin(); it!=nodes.end(); ++it) {        
+			std::vector<CoverTreeNode*> children = (*it)->getChildren(i);
+			//verify covering tree invariant: the children of node n at level
+			//i are no further than base^i away
+			for(it2=children.begin(); it2!=children.end(); ++it2) {
+				double dist = (*it2)->distance((*it)->getObservation());
+				if(dist>sep) {
+					std::cout << "Level" << i << " covering tree invariant failed.n";
+					return false;
+				}
+			}
+			allChildren.insert
+			  (allChildren.end(),children.begin(),children.end());
+		}
+		nodes.insert(nodes.begin(),allChildren.begin(),allChildren.end());
+	}
+	return true;
+}/*}}}*/
+void   Covertree::CoverTreeNode::removeChild(int level, CoverTreeNode* p){/*{{{*/
+	std::vector<CoverTreeNode*>& v = _childMap[level];
+	for(unsigned int i=0;i<v.size();i++) {
+		if(v[i]==p) {
+			v[i]=v.back();
+			v.pop_back();
+			break;
+		}
+	}
+}/*}}}*/
+void   Covertree::CoverTreeNode::removeObservation(const Observation& p){/*{{{*/
+	std::vector<Observation>::iterator it =
+	  find(_observations.begin(), _observations.end(), p);
+	if(it != _observations.end())
+	 _observations.erase(it);
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Covertree.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Covertree.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Covertree.h	(revision 27955)
@@ -0,0 +1,120 @@
+
+#ifndef _COVERTREE_H
+#define _COVERTREE_H
+
+#include <map>
+class Observation;
+
+class Covertree{
+
+	/* Cover tree node. Consists of arbitrarily many points P, as long as they
+	 * have distance 0 to each other. Keeps track of its children.  */
+	class CoverTreeNode{
+		private:
+			//_childMap[i] is a vector of the node's children at level i
+			std::map<int,std::vector<CoverTreeNode*> > _childMap;
+			//_observations is all of the points with distance 0 which are not equal.
+			std::vector<Observation> _observations;
+		public:
+			CoverTreeNode(const Observation& o);
+			/**
+			 * Returns the children of the node at level i. Note that this means
+			 * the children exist in cover set i-1, not level i.
+			 *
+			 * Does not include the node itself, though technically every node
+			 * has itself as a child in a cover tree.
+			 */
+			void addChild(int level, CoverTreeNode* p);
+			void addObservation(const Observation& o);
+			double distance(const CoverTreeNode& p) const;
+			bool   isSingle() const;
+			bool   hasObservation(const Observation& o) const;
+			std::vector<CoverTreeNode*> getChildren(int level) const;
+			const Observation& getObservation() const;
+			const std::vector<Observation>& getObservations() { return _observations; }
+			void removeChild(int level, CoverTreeNode* p);
+			void removeObservation(const Observation& o);
+
+			/**
+			 * Return every child of the node from any level. This is handy for
+			 * the destructor.
+			 */
+			std::vector<CoverTreeNode*> getAllChildren() const;
+	  }; // CoverTreeNode class
+	private:
+	typedef std::pair<double, CoverTreeNode*> distNodePair;
+
+	CoverTreeNode *_root;
+	unsigned int   _numNodes;
+	int            _maxLevel;   //base^_maxLevel should be the max distance
+	//between any 2 points
+	int            _minLevel;   //A level beneath which there are no more new nodes.
+
+	/* Finds the node in Q with the minimum distance to p. Returns a pair
+	 * consisting of this node and the distance.  */
+	distNodePair distance(const Observation& p,const std::vector<CoverTreeNode*>& Q);
+	/**
+	 * Recursive implementation of the insert algorithm (see paper).
+	 */
+	bool insert_rec(const Observation& p, const std::vector<distNodePair>& Qi,const int& level);
+
+	std::vector<CoverTreeNode*> kNearestNodes(const Observation& o, const unsigned int& k) const;
+	void remove_rec(const Observation& p, std::map<int,std::vector<distNodePair> >& coverSets, int level, bool& multi);
+
+	public:
+	double base;
+
+	/**
+	 * Constructs a cover tree which begins with all points in points.
+	 *
+	 * maxDist should be the maximum distance that any two points
+	 * can have between each other. IE p.distance(q) < maxDist for all
+	 * p,q that you will ever try to insert. The cover tree may be invalid
+	 * if an inaccurate maxDist is given.
+	 */
+
+	Covertree(int maxDist,const std::vector<Observation>& points=std::vector<Observation>()); 
+	~Covertree();
+
+	/**
+	 * Insert newPoint into the cover tree. If newPoint is already present,
+	 * (that is, newPoint==p for some p already in the tree), then the tree
+	 * is unchanged. If p.distance(newPoint)==0.0 but newPoint!=p, then
+	 * newPoint WILL be inserted and both points may be returned in k-nearest-
+	 * neighbor searches.
+	 */
+	void insert(const Observation& newObservation);
+
+	/**
+	 * Just for testing/debugging. Returns true iff the cover tree satisfies the
+	 * the covering tree invariants (every node in level i is greater than base^i
+	 * distance from every other node, and every node in level i is less than
+	 * or equal to base^i distance from its children). See the cover tree
+	 * papers for details.
+	 */
+	bool isValidTree() const;
+
+	/**
+	 * Remove point p from the cover tree. If p is not present in the tree,
+	 * it will remain unchanged. Otherwise, this will remove exactly one
+	 * point q from the tree satisfying p==q.
+	 */
+	void remove(const Observation& p);
+
+	/**
+	 * Returns the k nearest points to p in order (the 0th element of the vector
+	 * is closest to p, 1th is next, etc). It may return greater than k points
+	 * if there is a tie for the kth place.
+	 */
+	std::vector<Observation> kNearestNeighbors(const Observation& p, const unsigned int& k) const;
+
+	int get_numberofobs();
+
+	CoverTreeNode* getRoot() const;
+
+	/**
+	 * Print the cover tree.
+	 */
+	void print() const;
+};
+#endif //_COVERTREE_H
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/ExponentialVariogram.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/ExponentialVariogram.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/ExponentialVariogram.cpp	(revision 27955)
@@ -0,0 +1,89 @@
+/*!\file ExponentialVariogram.c
+ * \brief: implementation of the ExponentialVariogram object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+
+/*ExponentialVariogram constructors and destructor*/
+ExponentialVariogram::ExponentialVariogram(){/*{{{*/
+	this->nugget = 0.2;
+	this->sill   = 1;
+	this->range  = SQRT3;
+	return;
+}
+/*}}}*/
+ExponentialVariogram::ExponentialVariogram(Options* options){/*{{{*/
+
+	/*Defaults*/
+	this->nugget = 0.2;
+	this->sill   = 1;
+	this->range  = SQRT3;
+
+	/*Overwrite from options*/
+	if(options->GetOption("nugget")) options->Get(&this->nugget,"nugget");
+	if(options->GetOption("sill"))   options->Get(&this->sill,"sill");
+	if(options->GetOption("range"))  options->Get(&this->range,"range");
+
+	/*Checks*/
+	if(nugget==sill) _error_("nugget and sill cannot be equal (constant semivariogram not allowed)");
+}
+/*}}}*/
+ExponentialVariogram::~ExponentialVariogram(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* ExponentialVariogram::copy(void){/*{{{*/
+	   return new ExponentialVariogram(*this);
+}
+/*}}}*/
+void ExponentialVariogram::Echo(void){/*{{{*/
+	_printf_("ExponentialVariogram\n");
+	_printf_("   nugget: " << this->nugget << "\n");
+	_printf_("   sill  : " << this->sill << "\n");
+	_printf_("   range : " << this->range << "\n");
+}
+/*}}}*/
+
+/*Variogram function*/
+double ExponentialVariogram::Covariance(double deltax,double deltay){/*{{{*/
+	/*The covariance can be deduced from the variogram from the following
+	 * relationship:
+	 *    2 gamma = C(x,x) + C(y,y) -2 C(x,y)
+	 * so
+	 *    C(h) = sill - gamma                                            */
+	double h,a,cova;
+
+	/*Calculate length*/
+	h=sqrt(deltax*deltax + deltay*deltay);
+
+	/*If h is too small, return sill*/
+	if(h<0.0000001) return sill;
+
+	/*compute covariance*/
+	a     = 1./3.;
+	cova = (sill-nugget)*exp(-h/(a*range));
+	return cova;
+}
+/*}}}*/
+double ExponentialVariogram::SemiVariogram(double deltax,double deltay){/*{{{*/
+	/*http://en.wikipedia.org/wiki/Variogram*/
+	double h,a,gamma;
+
+	/*Calculate length*/
+	h=sqrt(deltax*deltax + deltay*deltay);
+
+	/*return semi-variogram*/
+	a     = 1./3.;
+	gamma = (sill-nugget)*(1-exp(-h/(a*range))) + nugget;
+	return gamma;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/ExponentialVariogram.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/ExponentialVariogram.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/ExponentialVariogram.h	(revision 27955)
@@ -0,0 +1,35 @@
+/*! \file ExponentialVariogram.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _EXPONENTIALVARIOGRAM_H_
+#define _EXPONENTIALVARIOGRAM_H_
+
+/*Headers:*/
+#include "./Variogram.h"
+
+class ExponentialVariogram: public Variogram{
+
+	public:
+		double nugget; //The height of the jump of the semivariogram at the discontinuity at the origin
+		double sill;   //Limit of the variogram tending to infinity lag distances
+		double range;  //The distance in which the difference of the variogram from the sill becomes negligible
+
+		/*ExponentialVariogram constructors, destructors*/
+		ExponentialVariogram();
+		ExponentialVariogram(Options* options);
+		~ExponentialVariogram();
+
+		/*Object virtual functions definitions*/
+		Object* copy();
+		void  DeepEcho(){_error_("Not implemented yet");};
+		void  Echo();
+		int   Id(){_error_("Not implemented yet");}; 
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!"); };
+		int   ObjectEnum(){_error_("Not implemented yet");};
+
+		/*Variogram functions*/
+		double Covariance(double deltax,double deltay);
+		double SemiVariogram(double deltax,double deltay);
+};
+#endif  /* _EXPONENTIALVARIOGRAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/GaussianVariogram.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/GaussianVariogram.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/GaussianVariogram.cpp	(revision 27955)
@@ -0,0 +1,93 @@
+/*!\file GaussianVariogram.c
+ * \brief: implementation of the GaussianVariogram object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+
+/*GaussianVariogram constructors and destructor*/
+GaussianVariogram::GaussianVariogram(){/*{{{*/
+	this->nugget = 0.2;
+	this->sill   = 1;
+	this->range  = SQRT3;
+	return;
+}
+/*}}}*/
+GaussianVariogram::GaussianVariogram(Options* options){/*{{{*/
+
+	/*Defaults*/
+	this->nugget = 0.2;
+	this->sill   = 1;
+	this->range  = SQRT3;
+
+	/*Overwrite from options*/
+	if(options->GetOption("nugget")) options->Get(&this->nugget,"nugget");
+	if(options->GetOption("sill"))   options->Get(&this->sill,"sill");
+	if(options->GetOption("range"))  options->Get(&this->range,"range");
+
+	/*Checks*/
+	if(nugget==sill) _error_("nugget and sill cannot be equal (constant semivariogram not allowed)");
+}
+/*}}}*/
+GaussianVariogram::~GaussianVariogram(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* GaussianVariogram::copy(void){/*{{{*/
+	   return new GaussianVariogram(*this);
+}
+/*}}}*/
+void GaussianVariogram::Echo(void){/*{{{*/
+	_printf_("GaussianVariogram\n");
+	_printf_("   nugget: " << this->nugget << "\n");
+	_printf_("   sill  : " << this->sill << "\n");
+	_printf_("   range : " << this->range << "\n");
+}
+/*}}}*/
+
+/*Variogram function*/
+double GaussianVariogram::Covariance(double deltax,double deltay){/*{{{*/
+	/*The covariance can be deduced from the variogram from the following
+	 * relationship:
+	 *    2 gamma = C(x,x) + C(y,y) -2 C(x,y)
+	 * so
+	 *    C(h) = sill - gamma                                            */
+	double h2,a,cova;
+
+	/*Calculate length square*/
+	h2=deltax*deltax + deltay*deltay;
+
+	/*If h is too small, return sill*/
+	if(h2<0.0000001) return sill;
+
+	/*compute covariance*/
+	a     = 1./3.;
+	cova = (sill-nugget)*exp(-h2/(a*range*range));
+
+	return cova;
+}
+/*}}}*/
+double GaussianVariogram::SemiVariogram(double deltax,double deltay){/*{{{*/
+	/*http://en.wikipedia.org/wiki/Variogram*/
+	double h2,a,gamma;
+
+	/*Calculate length square*/
+	h2=deltax*deltax + deltay*deltay;
+
+	/*return semi-variogram*/
+	a     = 1./3.;
+	gamma = (sill-nugget)*(1.-exp(-h2/(a*range*range))) + nugget;
+
+	//if(h2>1000*1000) _printf_("gamma = " << gamma << " h= " << sqrt(h2) << "\n");
+	_printf_("h = " << sqrt(h2) << " gamma = " << gamma << "\n");
+	return gamma;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/GaussianVariogram.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/GaussianVariogram.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/GaussianVariogram.h	(revision 27955)
@@ -0,0 +1,36 @@
+/*! \file GaussianVariogram.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _GAUSSIANVARIOGRAM_H_
+#define _GAUSSIANVARIOGRAM_H_
+
+/*Headers:*/
+#include "./Variogram.h"
+class Options;
+
+class GaussianVariogram: public Variogram{
+
+	public:
+		double nugget; //The height of the jump of the semivariogram at the discontinuity at the origin
+		double sill;   //Limit of the variogram tending to infinity lag distances
+		double range;  //The distance in which the difference of the variogram from the sill becomes negligible
+
+		/*GaussianVariogram constructors, destructors*/
+		GaussianVariogram();
+		GaussianVariogram(Options* options);
+		~GaussianVariogram();
+
+		/*Object virtual functions definitions*/
+		Object* copy();
+		void  DeepEcho(){_error_("Not implemented yet");};
+		void  Echo();
+		int   Id(){_error_("Not implemented yet");}; 
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!"); };
+		int   ObjectEnum(){_error_("Not implemented yet");};
+
+		/*Variogram functions*/
+		double Covariance(double deltax,double deltay);
+		double SemiVariogram(double deltax,double deltay);
+};
+#endif  /* _GAUSSIANVARIOGRAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Observation.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Observation.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Observation.cpp	(revision 27955)
@@ -0,0 +1,94 @@
+/*!\file Observation.c
+ * \brief: implementation of the Observation object
+ */
+
+#include <stdlib.h>
+#include <cmath>
+#include <utility>
+#include "../classes.h"
+
+/*Observation constructors and destructor*/
+Observation::Observation(){/*{{{*/
+	return;
+}
+/*}}}*/
+Observation::Observation(double x_in,double y_in,int xi_in,int yi_in,int index_in,double value_in){/*{{{*/
+
+	this->x      = x_in;
+	this->y      = y_in;
+	this->xi     = xi_in;
+	this->yi     = yi_in;
+	this->index  = index_in;
+	this->value  = value_in;
+	this->weight = 1.;
+
+}
+/*}}}*/
+Observation::Observation(double x_in, double y_in,double value_in){
+	this->x = x_in;
+	this->y = y_in;
+	this->value = value_in;
+
+	this->xi     = 0;
+	this->yi     = 0;
+	this->index  = 0;
+	this->weight = 0.;
+}
+Observation::~Observation(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Observation::copy(void){/*{{{*/
+
+	Observation* observation = new Observation(this->x,this->y,this->xi,this->yi,this->index,this->value);
+
+	observation->weight = this->weight;
+
+	return (Object*) observation;
+
+}
+/*}}}*/
+void Observation::Echo(void){/*{{{*/
+
+	_printf_("Observation\n");
+	_printf_("   index : " << this->index << "\n");
+	_printf_("   x     : " << this->x << "\n");
+	_printf_("   y     : " << this->y << "\n");
+	_printf_("   xi    : \n"); printbinary(this->xi); _printf_("\n");
+	_printf_("   yi    : \n"); printbinary(this->yi); _printf_("\n");
+	_printf_("   weight: " << this->weight << "\n");
+	_printf_("   value : " << this->value << "\n");
+}
+/*}}}*/
+
+/*Observations functions*/
+void Observation::WriteXYObs(double* px,double* py,double* pobs){/*{{{*/
+	*px   = this->x;
+	*py   = this->y;
+	*pobs = this->value;
+}
+/*}}}*/
+
+/*Covertree*/
+bool Observation::operator==(const Observation& ob) const{/*{{{*/
+	return (ob.x == this->x && ob.y == this->y && ob.value == this->value);
+}/*}}}*/
+double Observation::distance(const Observation& ob) const{/*{{{*/
+	return std::sqrt( (std::pow( (ob.x - this->x), 2 ) + std::pow((ob.y - this->y), 2) ));
+}
+/*}}}*/
+void Observation::print(void) const{/*{{{*/
+
+	_printf_("Observation\n");
+	_printf_("   x     : " << this->x << "\n");
+	_printf_("   y     : " << this->y << "\n");
+	_printf_("   value : " << this->value << "\n");
+}
+/*}}}*/
+void Observation::WriteXYObs(const Observation& ob, double* px, double* py, double* pobs){/*{{{*/
+    *px   = ob.x;
+    *py   = ob.y;
+    *pobs = ob.value;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Observation.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Observation.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Observation.h	(revision 27955)
@@ -0,0 +1,40 @@
+/*! \file Observation.h 
+ *  \brief: header file for Observation object
+ */
+
+#ifndef _OBSERVATION_H_
+#define _OBSERVATION_H_
+
+#include "../../datastructures/datastructures.h"
+
+class Observation: public Object{
+
+	public:
+		double x,y;
+		int    xi,yi;
+		int    index;
+		double weight;
+		double value;
+
+		/*Observation constructors, destructors*/
+		Observation();
+		Observation(double x_in,double y_in,int xi_in,int yi_in,int index_in,double value_in);
+		Observation(double x_in,double y_in,double value_in);
+		~Observation();
+
+		/*Object virtual functions definitions*/
+		bool operator==(const Observation& ob) const;
+		Object *copy();
+		void    DeepEcho()  {_error_("Not implemented yet"); };
+		double  distance(const Observation& ob) const;
+		void    Echo();
+		int     Id()        {_error_("Not implemented yet"); };
+		void    print() const;
+		void    Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		int     ObjectEnum(){_error_("Not implemented yet"); };
+
+		/*Management*/
+		void WriteXYObs(const Observation& ob, double* px, double* py, double* pobs);
+		void WriteXYObs(double* px,double* py,double* pobs);
+};
+#endif  /* _OBSERVATION_*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Observations.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Observations.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Observations.cpp	(revision 27955)
@@ -0,0 +1,744 @@
+/*
+ * \file Observations.cpp
+ * \brief: Implementation of Observations class, derived from DataSet class.
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <vector>
+#include <functional>
+#include <algorithm>
+#include <iostream>
+
+#include "../Options/Options.h"
+#include "./Observations.h"
+#include "./Observation.h"
+#include "../../datastructures/datastructures.h"
+#include "../../shared/shared.h"
+
+#include "./Quadtree.h"
+#include "./Covertree.h"
+#include "./Variogram.h"
+#include "../../toolkits/toolkits.h"
+
+using namespace std;
+/*}}}*/
+
+/*Object constructors and destructor*/
+Observations::Observations(){/*{{{*/
+	this->treetype  = 0;
+	this->quadtree  = NULL;
+	this->covertree = NULL;
+	return;
+}
+/*}}}*/
+Observations::Observations(IssmPDouble* observations_list,IssmPDouble* x,IssmPDouble* y,int n,Options* options){/*{{{*/
+
+	/*Check that there are observations*/
+	if(n<=0) _error_("No observation found");
+
+	/*Get tree type (FIXME)*/
+	double dtree = 0.;
+	options->Get(&dtree,"treetype",1.);
+	this->treetype = reCast<int>(dtree);
+	switch(this->treetype){
+		case 1:
+			this->covertree = NULL;
+			this->InitQuadtree(observations_list,x,y,n,options);
+			break;
+		case 2:
+			this->quadtree = NULL;
+			this->InitCovertree(observations_list,x,y,n,options);
+			break;
+		default:
+			_error_("Tree type "<<this->treetype<<" not supported yet (1: quadtree, 2: covertree)");
+	}
+}
+/*}}}*/
+Observations::~Observations(){/*{{{*/
+	switch(this->treetype){
+		case 1:
+			delete this->quadtree;
+			break;
+		case 2:
+			delete this->covertree;
+			break;
+		default:
+			_printf_("Tree type "<<this->treetype<<" not supported yet (1: quadtree, 2: covertree)");
+	}
+	return;
+}
+/*}}}*/
+
+/*Initialize data structures*/
+void Observations::InitCovertree(IssmPDouble* observations_list,IssmPDouble* x,IssmPDouble* y,int n,Options* options){/*{{{*/
+
+	/*Intermediaries*/
+	 IssmPDouble  minspacing,mintrimming,maxtrimming;
+
+	/*Checks*/
+	_assert_(n);
+
+	/*Get trimming limits*/
+	options->Get(&mintrimming,"mintrimming",-1.e+21);
+	options->Get(&maxtrimming,"maxtrimming",+1.e+21);
+	options->Get(&minspacing,"minspacing",0.01);
+	if(minspacing<=0) _error_("minspacing must > 0");
+
+	/*Get maximum distance between 2 points
+	 *  maxDist should be the maximum distance that any two points
+	 *  can have between each other. IE p.distance(q) < maxDist for all
+	 *  p,q that you will ever try to insert. The cover tree may be invalid
+	 *  if an inaccurate maxDist is given.*/
+	IssmPDouble xmin = x[0];
+	IssmPDouble xmax = x[0];
+	IssmPDouble ymin = y[0];
+	IssmPDouble ymax = y[0];
+	for(int i=1;i<n;i++){
+		if(x[i]<xmin) xmin=x[i];
+		if(x[i]>xmax) xmax=x[i];
+		if(y[i]<ymin) ymin=y[i];
+		if(y[i]>ymax) ymax=y[i];
+	}
+	IssmPDouble maxDist = sqrt(pow(xmax-xmin,2)+pow(ymax-ymin,2));
+	IssmPDouble base    = 2.;
+	int         maxdepth = ceilf(log(maxDist)/log(base));
+
+	 _printf0_("Generating covertree with a maximum depth " <<  maxdepth <<"... ");
+    this->covertree=new Covertree(maxdepth);
+
+    for(int i=0;i<n;i++){
+
+		/*First check limits*/
+		if(observations_list[i]>maxtrimming) continue;
+		if(observations_list[i]<mintrimming) continue;
+
+		/*Second, check that this observation is not too close from another one*/
+		Observation newobs = Observation(x[i],y[i],observations_list[i]);
+		if(i>0 && this->covertree->getRoot()){
+			/*Get closest obs and see if it is too close*/
+			std::vector<Observation> kNN=(this->covertree->kNearestNeighbors(newobs,1));
+			Observation oldobs = (*kNN.begin());
+			if(oldobs.distance(newobs)<minspacing) continue;
+		}
+
+		this->covertree->insert(newobs);
+    }
+	 _printf0_("done\n");
+}
+/*}}}*/
+void Observations::InitQuadtree(IssmPDouble* observations_list,IssmPDouble* x,IssmPDouble* y,int n,Options* options){/*{{{*/
+
+	/*Intermediaries*/
+	int          i,maxdepth,level,counter,index;
+	int          xi,yi;
+	IssmPDouble  xmin,xmax,ymin,ymax;
+	IssmPDouble  offset,minlength,minspacing,mintrimming,maxtrimming;
+	Observation *observation = NULL;
+
+	/*Checks*/
+	_assert_(n);
+
+	/*Get extrema*/
+	xmin=x[0]; ymin=y[0];
+	xmax=x[0]; ymax=y[0];
+	for(i=1;i<n;i++){
+		xmin=min(xmin,x[i]); ymin=min(ymin,y[i]);
+		xmax=max(xmax,x[i]); ymax=max(ymax,y[i]);
+	}
+	offset=0.05*(xmax-xmin); xmin-=offset; xmax+=offset;
+	offset=0.05*(ymax-ymin); ymin-=offset; ymax+=offset;
+
+	/*Get trimming limits*/
+	options->Get(&mintrimming,"mintrimming",-1.e+21);
+	options->Get(&maxtrimming,"maxtrimming",+1.e+21);
+	options->Get(&minspacing,"minspacing",0.01);
+	if(minspacing<=0) _error_("minspacing must > 0");
+
+	/*Get Minimum box size*/
+	if(options->GetOption("boxlength")){
+		options->Get(&minlength,"boxlength");
+		if(minlength<=0)_error_("boxlength should be a positive number");
+		maxdepth=reCast<int,IssmPDouble>(log(max(xmax-xmin,ymax-ymin)/minlength +1)/log(2.0));
+	}
+	else{
+		maxdepth = 30;
+		minlength=max(xmax-xmin,ymax-ymin)/IssmPDouble((1L<<maxdepth)-1);
+	}
+
+	/*Initialize Quadtree*/
+	_printf0_("Generating quadtree with a maximum box size " << minlength << " (depth=" << maxdepth << ")... ");
+	this->quadtree = new Quadtree(xmin,xmax,ymin,ymax,maxdepth);
+
+	/*Add observations one by one*/
+	counter = 0;
+	for(i=0;i<n;i++){
+
+		/*First check limits*/
+		if(observations_list[i]>maxtrimming) continue;
+		if(observations_list[i]<mintrimming) continue;
+
+		/*Second, check that this observation is not too close from another one*/
+		this->quadtree->ClosestObs(&index,x[i],y[i]);
+		if(index>=0){
+			observation=xDynamicCast<Observation*>(this->GetObjectByOffset(index));
+			if(pow(observation->x-x[i],2)+pow(observation->y-y[i],2) < minspacing) continue;
+		}
+
+		this->quadtree->IntergerCoordinates(&xi,&yi,x[i],y[i]);
+		this->quadtree->QuadtreeDepth2(&level,xi,yi);
+		if((int)level <= maxdepth){
+			observation = new Observation(x[i],y[i],xi,yi,counter++,observations_list[i]);
+			this->quadtree->Add(observation);
+			this->AddObject(observation);
+		}
+		else{
+			/*We need to average with the current observations*/
+			this->quadtree->AddAndAverage(x[i],y[i],observations_list[i]);
+		}
+	}
+	_printf0_("done\n");
+	_printf0_("Initial number of observations: " << n << "\n");
+	_printf0_("  Final number of observations: " << this->quadtree->NbObs << "\n");
+}
+/*}}}*/
+
+/*Methods*/
+void Observations::ClosestObservation(IssmPDouble *px,IssmPDouble *py,IssmPDouble *pobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius){/*{{{*/
+
+	switch(this->treetype){
+		case 1:
+			this->ClosestObservationQuadtree(px,py,pobs,x_interp,y_interp,radius);
+			break;
+		case 2:
+			this->ClosestObservationCovertree(px,py,pobs,x_interp,y_interp,radius);
+			break;
+		default:
+			_error_("Tree type "<<this->treetype<<" not supported yet (1: quadtree, 2: covertree)");
+	}
+
+}/*}}}*/
+void Observations::ClosestObservationCovertree(IssmPDouble *px,IssmPDouble *py,IssmPDouble *pobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius){/*{{{*/
+
+	IssmPDouble hmin  = UNDEF;
+
+	if(this->covertree->getRoot()){
+		/*Get closest obs and see if it is too close*/
+		Observation newobs = Observation(x_interp,y_interp,0.);
+		std::vector<Observation> kNN=(this->covertree->kNearestNeighbors(newobs,1));
+		Observation observation = (*kNN.begin());
+		hmin = observation.distance(newobs);
+		if(hmin<=radius){
+			*px   = observation.x;
+			*py   = observation.y;
+			*pobs = observation.value;
+			return;
+		}
+	}
+
+	*px   = UNDEF;
+	*py   = UNDEF;
+	*pobs = UNDEF;
+}/*}}}*/
+void Observations::ClosestObservationQuadtree(IssmPDouble *px,IssmPDouble *py,IssmPDouble *pobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius){/*{{{*/
+
+	/*Output and Intermediaries*/
+	int          nobs,i,index;
+	IssmPDouble  hmin,h2,hmin2;
+	int         *indices      = NULL;
+	Observation *observation  = NULL;
+
+	/*If radius is not provided or is 0, return all observations*/
+	if(radius==0) radius=this->quadtree->root->length;
+
+	/*For CPPcheck*/
+	hmin = 2*radius;
+
+	/*First, find closest point in Quadtree (fast but might not be the true closest obs)*/
+	this->quadtree->ClosestObs(&index,x_interp,y_interp);
+	if(index>=0){
+		observation=xDynamicCast<Observation*>(this->GetObjectByOffset(index));
+		hmin = sqrt((observation->x-x_interp)*(observation->x-x_interp) + (observation->y-y_interp)*(observation->y-y_interp));
+		if(hmin<radius) radius=hmin;
+	}
+
+	/*Find all observations that are in radius*/
+	this->quadtree->RangeSearch(&indices,&nobs,x_interp,y_interp,radius);
+	for (i=0;i<nobs;i++){
+		observation=xDynamicCast<Observation*>(this->GetObjectByOffset(indices[i]));
+		h2 = (observation->x-x_interp)*(observation->x-x_interp) + (observation->y-y_interp)*(observation->y-y_interp);
+		if(i==0){
+			hmin2 = h2;
+			index = indices[i];
+		}
+		else{
+			if(h2<hmin2){
+				hmin2 = h2;
+				index = indices[i];
+			}
+		}
+	}
+
+	/*Assign output pointer*/
+	if(nobs || hmin==radius){
+		observation=xDynamicCast<Observation*>(this->GetObjectByOffset(index));
+		*px   = observation->x;
+		*py   = observation->y;
+		*pobs = observation->value;
+	}
+	else{
+		*px   = UNDEF;
+		*py   = UNDEF;
+		*pobs = UNDEF;
+	}
+	xDelete<int>(indices);
+
+}/*}}}*/
+void Observations::Distances(IssmPDouble* distances,IssmPDouble *x,IssmPDouble *y,int n,IssmPDouble radius){/*{{{*/
+
+	IssmPDouble xi,yi,obs;
+
+	for(int i=0;i<n;i++){
+		this->ClosestObservation(&xi,&yi,&obs,x[i],y[i],radius);
+		if(xi==UNDEF && yi==UNDEF){
+		 distances[i]=UNDEF;
+		}
+		else{
+		 distances[i]=sqrt( (x[i]-xi)*(x[i]-xi) + (y[i]-yi)*(y[i]-yi) );
+		}
+	}
+}/*}}}*/
+void Observations::ObservationList(IssmPDouble **px,IssmPDouble **py,IssmPDouble **pobs,int* pnobs){/*{{{*/
+
+	/*Output and Intermediaries*/
+	int          nobs;
+	IssmPDouble *x            = NULL;
+	IssmPDouble *y            = NULL;
+	IssmPDouble *obs          = NULL;
+	Observation *observation  = NULL;
+
+	nobs = this->Size();
+
+	if(nobs){
+		x   = xNew<IssmPDouble>(nobs);
+		y   = xNew<IssmPDouble>(nobs);
+		obs = xNew<IssmPDouble>(nobs);
+		int i=0;
+		for(Object* & object: this->objects){
+			observation=xDynamicCast<Observation*>(object);
+			observation->WriteXYObs(&x[i],&y[i],&obs[i]);
+			i++;
+		}
+	}
+
+	/*Assign output pointer*/
+	*px=x;
+	*py=y;
+	*pobs=obs;
+	*pnobs=nobs;
+}/*}}}*/
+void Observations::ObservationList(IssmPDouble **px,IssmPDouble **py,IssmPDouble **pobs,int* pnobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int maxdata){/*{{{*/
+
+	switch(this->treetype){
+		case 1:
+			this->ObservationListQuadtree(px,py,pobs,pnobs,x_interp,y_interp,radius,maxdata);
+			break;
+		case 2:
+			this->ObservationListCovertree(px,py,pobs,pnobs,x_interp,y_interp,radius,maxdata);
+			break;
+		default:
+			_error_("Tree type "<<this->treetype<<" not supported yet (1: quadtree, 2: covertree)");
+	}
+}/*}}}*/
+void Observations::ObservationListCovertree(double **px,double **py,double **pobs,int* pnobs,double x_interp,double y_interp,double radius,int maxdata){/*{{{*/
+
+	double *x            = NULL;
+	double *y            = NULL;
+	double *obs          = NULL;
+	Observation observation=Observation(x_interp,y_interp,0.);
+	std::vector<Observation> kNN;
+
+	kNN=(this->covertree->kNearestNeighbors(observation, maxdata));
+	//cout << "kNN's size: " << kNN.size() << " (maxdata = " <<maxdata<<")"<<endl;
+
+	//kNN is sort from closest to farthest neighbor
+	//searches for the first neighbor that is out of radius
+	//deletes and resizes the kNN vector
+	vector<Observation>::iterator it;
+	if(radius>0.){
+		for (it = kNN.begin(); it != kNN.end(); ++it) {
+			//(*it).print();
+			//cout << "\n" << (*it).distance(observation) << endl;
+			if ((*it).distance(observation) > radius) {
+				break;
+			}
+		}
+		kNN.erase(it, kNN.end());
+	}
+
+	/*Allocate vectors*/
+	x   = new double[kNN.size()];
+	y   = new double[kNN.size()];
+	obs = new double[kNN.size()];
+
+	/*Loop over all observations and fill in x, y and obs*/
+	int i = 0;
+	for(it = kNN.begin(); it != kNN.end(); ++it) {
+		(*it).WriteXYObs((*it), &x[i], &y[i], &obs[i]);
+		i++;
+	}
+
+	*px=x;
+	*py=y;
+	*pobs=obs;
+	*pnobs = kNN.size();
+}/*}}}*/
+void Observations::ObservationListQuadtree(IssmPDouble **px,IssmPDouble **py,IssmPDouble **pobs,int* pnobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int maxdata){/*{{{*/
+
+	/*Output and Intermediaries*/
+	bool         stop;
+	int          nobs,tempnobs,i,j,k,n,counter;
+	IssmPDouble  h2,radius2;
+	int         *indices      = NULL;
+	int         *tempindices  = NULL;
+	IssmPDouble *dists        = NULL;
+	IssmPDouble *x            = NULL;
+	IssmPDouble *y            = NULL;
+	IssmPDouble *obs          = NULL;
+	Observation *observation  = NULL;
+
+	/*If radius is not provided or is 0, return all observations*/
+	if(radius==0.) radius=this->quadtree->root->length*2.;
+
+	/*Compute radius square*/
+	radius2 = radius*radius;
+
+	/*Find all observations that are in radius*/
+	this->quadtree->RangeSearch(&tempindices,&tempnobs,x_interp,y_interp,radius);
+	if(tempnobs){
+		indices = xNew<int>(tempnobs);
+		dists   = xNew<IssmPDouble>(tempnobs);
+	}
+	nobs = 0;
+	for(i=0;i<tempnobs;i++){
+		observation=xDynamicCast<Observation*>(this->GetObjectByOffset(tempindices[i]));
+		h2 = (observation->x-x_interp)*(observation->x-x_interp) + (observation->y-y_interp)*(observation->y-y_interp);
+
+		if(nobs==maxdata && h2>radius2) continue;
+		if(nobs<maxdata){
+			indices[nobs]   = tempindices[i];
+			dists[nobs]     = h2;
+			nobs++;
+		}
+		if(nobs==1) continue;
+
+		/*Sort all dists up to now*/
+		n=nobs-1;
+		stop = false;
+		for(k=0;k<n-1;k++){
+			if(h2<dists[k]){
+				counter=1;
+				for(int jj=k;jj<n;jj++){
+					j  = n-counter;
+					dists[j+1]   = dists[j];
+					indices[j+1] = indices[j];
+					counter++;
+				}
+				dists[k]   = h2;
+				indices[k] = tempindices[i];
+				stop = true;
+				break;
+			}
+			if(stop) break;
+		}
+	}
+	xDelete<IssmPDouble>(dists);
+	xDelete<int>(tempindices);
+
+	if(nobs){
+		/*Allocate vectors*/
+		x   = xNew<IssmPDouble>(nobs);
+		y   = xNew<IssmPDouble>(nobs);
+		obs = xNew<IssmPDouble>(nobs);
+
+		/*Loop over all observations and fill in x, y and obs*/
+		for(i=0;i<nobs;i++){
+			observation=xDynamicCast<Observation*>(this->GetObjectByOffset(indices[i]));
+			observation->WriteXYObs(&x[i],&y[i],&obs[i]);
+		}
+	}
+
+	/*Assign output pointer*/
+	xDelete<int>(indices);
+	*px=x;
+	*py=y;
+	*pobs=obs;
+	*pnobs=nobs;
+}/*}}}*/
+void Observations::InterpolationIDW(IssmPDouble *pprediction,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int mindata,int maxdata,IssmPDouble power){/*{{{*/
+
+	/*Intermediaries*/
+	int         i,n_obs;
+	IssmPDouble prediction;
+	IssmPDouble numerator,denominator,h,weight;
+	IssmPDouble *x   = NULL;
+	IssmPDouble *y   = NULL;
+	IssmPDouble *obs = NULL;
+
+	/*Some checks*/
+	_assert_(maxdata>0);
+	_assert_(pprediction);
+	_assert_(power>0);
+
+	/*Get list of observations for current point*/
+	this->ObservationList(&x,&y,&obs,&n_obs,x_interp,y_interp,radius,maxdata);
+
+	/*If we have less observations than mindata, return UNDEF*/
+	if(n_obs<mindata){
+		prediction = UNDEF;
+	}
+	else{
+		numerator   = 0.;
+		denominator = 0.;
+		for(i=0;i<n_obs;i++){
+			h = sqrt( (x[i]-x_interp)*(x[i]-x_interp) + (y[i]-y_interp)*(y[i]-y_interp));
+			if (h<0.0000001){
+				numerator   = obs[i];
+				denominator = 1.;
+				break;
+			}
+			weight = 1./pow(h,power);
+			numerator   += weight*obs[i];
+			denominator += weight;
+		}
+		prediction = numerator/denominator;
+	}
+
+	/*clean-up*/
+	*pprediction = prediction;
+	xDelete<IssmPDouble>(x);
+	xDelete<IssmPDouble>(y);
+	xDelete<IssmPDouble>(obs);
+}/*}}}*/
+void Observations::InterpolationKriging(IssmPDouble *pprediction,IssmPDouble *perror,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int mindata,int maxdata,Variogram* variogram){/*{{{*/
+
+	/*Intermediaries*/
+	int           i,j,n_obs;
+	IssmPDouble   prediction,error;
+	IssmPDouble  *x      = NULL;
+	IssmPDouble  *y      = NULL;
+	IssmPDouble  *obs    = NULL;
+	IssmPDouble  *Lambda = NULL;
+
+	/*Some checks*/
+	_assert_(mindata>0 && maxdata>0);
+	_assert_(pprediction && perror);
+
+	/*Get list of observations for current point*/
+	this->ObservationList(&x,&y,&obs,&n_obs,x_interp,y_interp,radius,maxdata);
+
+	/*If we have less observations than mindata, return UNDEF*/
+	if(n_obs<mindata){
+		*pprediction = -999.0;
+		*perror      = -999.0;
+		return;
+	}
+
+	/*Allocate intermediary matrix and vectors*/
+	IssmPDouble* A = xNew<IssmPDouble>((n_obs+1)*(n_obs+1));
+	IssmPDouble* B = xNew<IssmPDouble>(n_obs+1);
+
+	IssmPDouble unbias = variogram->Covariance(0.,0.);
+	/*First: Create semivariogram matrix for observations*/
+	for(i=0;i<n_obs;i++){
+		//printf("%g %g ==> %g\n",x[i],y[i],sqrt(pow(x[i]-x_interp,2)+pow(y[i]-y_interp,2)));
+		for(j=0;j<=i;j++){
+			A[i*(n_obs+1)+j] = variogram->Covariance(x[i]-x[j],y[i]-y[j]);
+			A[j*(n_obs+1)+i] = A[i*(n_obs+1)+j];
+		}
+		A[i*(n_obs+1)+n_obs] = unbias;
+		//A[i*(n_obs+1)+n_obs] = 1.;
+	}
+	for(i=0;i<n_obs;i++) A[n_obs*(n_obs+1)+i]=unbias;
+	//for(i=0;i<n_obs;i++) A[n_obs*(n_obs+1)+i]=1.;
+	A[n_obs*(n_obs+1)+n_obs] = 0.;
+
+	/*Get semivariogram vector associated to this location*/
+	for(i=0;i<n_obs;i++) B[i] = variogram->Covariance(x[i]-x_interp,y[i]-y_interp);
+	B[n_obs] = unbias;
+	//B[n_obs] = 1.;
+
+	/*Solve the three linear systems*/
+#if _HAVE_GSL_
+	DenseGslSolve(&Lambda,A,B,n_obs+1);    // Gamma^-1 Z
+#else
+	_error_("GSL is required");
+#endif
+
+	/*Compute predictor*/
+	prediction = 0.;
+	for(i=0;i<n_obs;i++) prediction += Lambda[i]*obs[i];
+
+	/*Compute error (GSLIB p15 eq II.14)*/
+	error = variogram->Covariance(0.,0.)*(1. - Lambda[n_obs]);;
+	for(i=0;i<n_obs;i++) error += -Lambda[i]*B[i];
+
+	/*clean-up*/
+	*pprediction = prediction;
+	*perror = error;
+	xDelete<IssmPDouble>(x);
+	xDelete<IssmPDouble>(y);
+	xDelete<IssmPDouble>(obs);
+	xDelete<IssmPDouble>(A);
+	xDelete<IssmPDouble>(B);
+	xDelete<IssmPDouble>(Lambda);
+}/*}}}*/
+void Observations::InterpolationNearestNeighbor(IssmPDouble *pprediction,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius){/*{{{*/
+
+	/*Intermediaries*/
+	IssmPDouble x,y,obs;
+
+	/*Get clostest observation*/
+	this->ClosestObservation(&x,&y,&obs,x_interp,y_interp,radius);
+
+	/*Assign output pointer*/
+	*pprediction = obs;
+}/*}}}*/
+void Observations::InterpolationV4(IssmPDouble *pprediction,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int mindata,int maxdata){/*{{{*/
+	/* Reference:  David T. Sandwell, Biharmonic spline interpolation of GEOS-3
+	 * and SEASAT altimeter data, Geophysical Research Letters, 2, 139-142,
+	 * 1987.  Describes interpolation using value or gradient of value in any
+	 * dimension.*/
+
+	/*Intermediaries*/
+	int         i,j,n_obs;
+	IssmPDouble prediction,h;
+	IssmPDouble *x       = NULL;
+	IssmPDouble *y       = NULL;
+	IssmPDouble *obs     = NULL;
+	IssmPDouble *Green   = NULL;
+	IssmPDouble *weights = NULL;
+	IssmPDouble *g       = NULL;
+
+	/*Some checks*/
+	_assert_(maxdata>0);
+	_assert_(pprediction);
+
+	/*Get list of observations for current point*/
+	this->ObservationList(&x,&y,&obs,&n_obs,x_interp,y_interp,radius,maxdata);
+
+	/*If we have less observations than mindata, return UNDEF*/
+	if(n_obs<mindata || n_obs<2){
+		prediction = UNDEF;
+	}
+	else{
+
+		/*Allocate intermediary matrix and vectors*/
+		Green = xNew<IssmPDouble>(n_obs*n_obs);
+		g     = xNew<IssmPDouble>(n_obs);
+
+		/*First: distance vector*/
+		for(i=0;i<n_obs;i++){
+			h = sqrt( (x[i]-x_interp)*(x[i]-x_interp) + (y[i]-y_interp)*(y[i]-y_interp) );
+			if(h>0){
+				g[i] = h*h*(log(h)-1.);
+			}
+			else{
+				g[i] = 0.;
+			}
+		}
+
+		/*Build Green function matrix*/
+		for(i=0;i<n_obs;i++){
+			for(j=0;j<=i;j++){
+				h = sqrt( (x[i]-x[j])*(x[i]-x[j]) + (y[i]-y[j])*(y[i]-y[j]) );
+				if(h>0){
+					Green[j*n_obs+i] = h*h*(log(h)-1.);
+				}
+				else{
+					Green[j*n_obs+i] = 0.;
+				}
+				Green[i*n_obs+j] = Green[j*n_obs+i];
+			}
+			/*Zero diagonal (should be done already, but just in case)*/
+			Green[i*n_obs+i] = 0.;
+		}
+
+		/*Compute weights*/
+#if _HAVE_GSL_
+		DenseGslSolve(&weights,Green,obs,n_obs); // Green^-1 obs
+#else
+		_error_("GSL is required");
+#endif
+
+		/*Interpolate*/
+		prediction = 0;
+		for(i=0;i<n_obs;i++) prediction += weights[i]*g[i];
+
+	}
+
+	/*clean-up*/
+	*pprediction = prediction;
+	xDelete<IssmPDouble>(x);
+	xDelete<IssmPDouble>(y);
+	xDelete<IssmPDouble>(obs);
+	xDelete<IssmPDouble>(Green);
+	xDelete<IssmPDouble>(g);
+	xDelete<IssmPDouble>(weights);
+}/*}}}*/
+void Observations::QuadtreeColoring(IssmPDouble* A,IssmPDouble *x,IssmPDouble *y,int n){/*{{{*/
+
+	if(this->treetype!=1) _error_("Tree type is not quadtree");
+	int xi,yi,level;
+
+	for(int i=0;i<n;i++){
+		this->quadtree->IntergerCoordinates(&xi,&yi,x[i],y[i]);
+		this->quadtree->QuadtreeDepth(&level,xi,yi);
+		A[i]=(IssmPDouble)level;
+	}
+
+}/*}}}*/
+void Observations::Variomap(IssmPDouble* gamma,IssmPDouble *x,int n){/*{{{*/
+
+	/*Output and Intermediaries*/
+	int          i,j,k;
+	IssmPDouble  distance;
+	Observation *observation1 = NULL;
+	Observation *observation2 = NULL;
+
+	IssmPDouble *counter = xNew<IssmPDouble>(n);
+	for(j=0;j<n;j++) counter[j] = 0.0;
+	for(j=0;j<n;j++) gamma[j]   = 0.0;
+
+	for(Object* & object : this->objects){
+		observation1=xDynamicCast<Observation*>(object);
+
+		for(Object* & object : this->objects){
+			observation2=xDynamicCast<Observation*>(object);
+
+			distance=sqrt(pow(observation1->x - observation2->x,2) + pow(observation1->y - observation2->y,2));
+			if(distance>x[n-1]) continue;
+
+			int index = int(distance/(x[1]-x[0]));
+			if(index>n-1) index = n-1;
+			if(index<0)   index = 0;
+
+			gamma[index]   += 1./2.*pow(observation1->value - observation2->value,2);
+			counter[index] += 1.;
+		}
+	}
+
+	/*Normalize semivariogram*/
+	gamma[0]=0.;
+	for(k=0;k<n;k++){
+		if(counter[k]) gamma[k] = gamma[k]/counter[k];
+	}
+
+	/*Assign output pointer*/
+	xDelete<IssmPDouble>(counter);
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Observations.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Observations.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Observations.h	(revision 27955)
@@ -0,0 +1,51 @@
+#ifndef _CONTAINER_OBSERVATIONS_H_
+#define  _CONTAINER_OBSERVATIONS_H_
+
+class Quadtree;
+class Covertree;
+class Variogram;
+class Options;
+#include "../../datastructures/datastructures.h"
+#include "../../shared/shared.h"
+
+/*!\brief Declaration of Observations class.
+ *
+ * Declaration of Observations class.  Observations are vector lists (Containers) of Observation objects.
+ */ 
+
+class Observations: public DataSet{
+
+	private:
+		int        treetype;
+		Quadtree*  quadtree;
+		Covertree* covertree;
+
+	public:
+
+		/*constructors, destructors*/
+		Observations();
+		Observations(IssmPDouble* observations_list,IssmPDouble* x,IssmPDouble* y,int n,Options* options);
+		~Observations();
+
+		/*Initialize data structures*/
+		void InitCovertree(IssmPDouble* observations_list,IssmPDouble* x,IssmPDouble* y,int n,Options* options);
+		void InitQuadtree(IssmPDouble* observations_list,IssmPDouble* x,IssmPDouble* y,int n,Options* options);
+
+		/*Methods*/
+		void ClosestObservation(IssmPDouble *px,IssmPDouble *py,IssmPDouble *pobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius);
+		void ClosestObservationCovertree(IssmPDouble *px,IssmPDouble *py,IssmPDouble *pobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius);
+		void ClosestObservationQuadtree(IssmPDouble *px,IssmPDouble *py,IssmPDouble *pobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius);
+		void Distances(IssmPDouble* distances,IssmPDouble *x,IssmPDouble *y,int n,IssmPDouble radius);
+		void InterpolationIDW(IssmPDouble *pprediction,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int mindata,int maxdata,IssmPDouble power);
+		void InterpolationV4(IssmPDouble *pprediction,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int mindata,int maxdata);
+		void InterpolationKriging(IssmPDouble *pprediction,IssmPDouble *perror,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int mindata,int maxdata,Variogram* variogram);
+		void InterpolationNearestNeighbor(IssmPDouble *pprediction,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius);
+		void ObservationList(IssmPDouble **px,IssmPDouble **py,IssmPDouble **pobs,int* pnobs);
+		void ObservationList(IssmPDouble **px,IssmPDouble **py,IssmPDouble **pobs,int* pnobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int maxdata);
+		void ObservationListCovertree(IssmPDouble **px,IssmPDouble **py,IssmPDouble **pobs,int* pnobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int maxdata);
+		void ObservationListQuadtree(IssmPDouble **px,IssmPDouble **py,IssmPDouble **pobs,int* pnobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int maxdata);
+		void QuadtreeColoring(IssmPDouble* A,IssmPDouble *x,IssmPDouble *y,int n);
+		void Variomap(IssmPDouble* gamma,IssmPDouble *x,int n);
+
+};
+#endif //ifndef _OBSERVATIONS_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/PowerVariogram.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/PowerVariogram.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/PowerVariogram.cpp	(revision 27955)
@@ -0,0 +1,88 @@
+/*!\file PowerVariogram.c
+ * \brief: implementation of the PowerVariogram object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+
+/*PowerVariogram constructors and destructor*/
+PowerVariogram::PowerVariogram(){/*{{{*/
+	this->nugget = 0.2;
+	this->slope  = 1.;
+	this->power  = 1.;
+	return;
+}
+/*}}}*/
+PowerVariogram::PowerVariogram(Options* options){/*{{{*/
+
+	/*Defaults*/
+	this->nugget = 0.2;
+	this->slope  = 1.;
+	this->power  = 1.;
+
+	/*Overwrite from options*/
+	if(options->GetOption("nugget")) options->Get(&this->nugget,"nugget");
+	if(options->GetOption("slope"))  options->Get(&this->slope,"slope");
+	if(options->GetOption("power"))  options->Get(&this->power,"power");
+
+	/*Checks*/
+	if(power<=0 || power>=2) _error_("power must be betwwen 0 and 2 (0 < power < 2)");
+	if(slope<=0) _error_("slope must be positive");
+}
+/*}}}*/
+PowerVariogram::~PowerVariogram(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* PowerVariogram::copy(void){/*{{{*/
+	   return new PowerVariogram(*this);
+}
+/*}}}*/
+void PowerVariogram::Echo(void){/*{{{*/
+	_printf_("PowerVariogram\n");
+	_printf_("   nugget: " << this->nugget << "\n");
+	_printf_("   slope : " << this->slope << "\n");
+	_printf_("   power : " << this->power << "\n");
+}
+/*}}}*/
+
+/*Variogram function*/
+double PowerVariogram::Covariance(double deltax,double deltay){/*{{{*/
+	/*The covariance can be deduced from the variogram from the following
+	 * relationship:
+	 *    2 gamma = C(x,x) + C(y,y) -2 C(x,y)
+	 * so
+	 *    C(h) = sill - gamma                                            */
+	double h,cova;
+
+	/*Calculate length square*/
+	h=sqrt(deltax*deltax + deltay*deltay);
+
+	/*return covariance*/
+	cova = 9999. - this->slope*pow(h,this->power);
+
+	return cova;
+}
+/*}}}*/
+double PowerVariogram::SemiVariogram(double deltax,double deltay){/*{{{*/
+	/*http://en.wikipedia.org/wiki/Variogram*/
+	double h,gamma;
+
+	/*Calculate length square*/
+	h=sqrt(deltax*deltax + deltay*deltay);
+
+	/*return semi-variogram*/
+	gamma = this->nugget + this->slope*pow(h,this->power);
+
+	//if(h>1000) _printf_("gamma = " << gamma << " h=" << h << "\n");
+	return gamma;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/PowerVariogram.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/PowerVariogram.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/PowerVariogram.h	(revision 27955)
@@ -0,0 +1,35 @@
+/*! \file PowerVariogram.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _POWERVARIOGRAM_H_
+#define _POWERVARIOGRAM_H_
+
+/*Headers:*/
+#include "./Variogram.h"
+
+class PowerVariogram: public Variogram{
+
+	public:
+		double nugget; //The height of the jump of the semivariogram at the discontinuity at the origin
+		double slope;  
+		double power; 
+
+		/*PowerVariogram constructors, destructors*/
+		PowerVariogram();
+		PowerVariogram(Options* options);
+		~PowerVariogram();
+
+		/*Object virtual functions definitions*/
+		Object* copy();
+		void  DeepEcho(){_error_("Not implemented yet");};
+		void  Echo();
+		int   Id(){_error_("Not implemented yet");}; 
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!"); };
+		int   ObjectEnum(){_error_("Not implemented yet");};
+
+		/*Variogram functions*/
+		double Covariance(double deltax,double deltay);
+		double SemiVariogram(double deltax,double deltay);
+};
+#endif  /* _POWERVARIOGRAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Quadtree.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Quadtree.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Quadtree.cpp	(revision 27955)
@@ -0,0 +1,599 @@
+#include "../classes.h"
+
+/*DOCUMENTATION What is a Quadtree? {{{
+ * A Quadtree is a very simple way to group vertices according
+ * to their locations. A square that holds all the points of the mesh
+ * (or the geometry) is divided into 4 boxes. As soon as one box
+ * hold more than 4 vertices, it is divided into 4 new boxes, etc...
+ * There cannot be more than MAXDEEP (=30) subdivision.
+ * This process is like a Dichotomy in dimension 2
+ *
+ *  + - -  -    - -    -    - - + -   - + - + - + - -     - - +
+ *  |                           |       |   | X |             |
+ *                                      + - + - +
+ *  |                           |       |   |   |             |
+ *                              + -   - + - + - +             +
+ *  |                           |       |       |             |
+ *                         
+ *  |                           |       |       |             |
+ *  + - -  -    - -    -    - - + -   - + -   - + - -     - - +
+ *  |                           |               |             |
+ *                         
+ *  |                           |               |             |
+ *                         
+ *  |                           |               |             |
+ *  |                           |               |             |
+ *  + - -  -    - -    -    - - + -   -   -   - + - -     - - +
+ *  |                           |                             |
+ *                         
+ *  |                           |                             |
+ *                         
+ *  |                           |                             |
+ *                         
+ *  |                           |                             |
+ *  |                           |                             |
+ *  |                           |                             |
+ *  |                           |                             |
+ *  |                           |                             |
+ *  + - -  -    - -    -    - - + -   -   -   -   - -     - - +
+ *
+ * The coordinate system used in a quadtree are integers to avoid
+ * round-off errors. The vertex in the lower left box has the coordinates
+ * (0 0) 
+ * The upper right vertex has the follwing coordinates:
+ * 2^30 -1           2^30 -1        in decimal
+ * 0 1 1 1 .... 1    0 1 1 1 .... 1 in binary
+ *  \--   29  --/     \--   29  --/
+ * Using binaries is therefore very easy to locate a vertex in a box:
+ * we just need to look at the bits from the left to the right (See ::Add)
+ }}}*/
+/*MACROS {{{*/
+/* 
+ * 
+ *    J    j
+ *    ^    ^
+ *    |    | +--------+--------+
+ *    |    | |        |        |
+ * 1X |    | |   2    |   3    |
+ *    |    | |        |        |
+ *    |    | +--------+--------+
+ *    |    | |        |        |
+ * 0X |    | |   0    |   1    |
+ *    |    | |        |        |
+ *    |    | +--------+--------+
+ *    |    +-----------------------> i
+ *    |         
+ *    |----------------------------> I
+ *              X0        X1  
+ *
+ * box 0 -> I=0 J=0 IJ=00  = 0
+ * box 1 -> I=1 J=0 IJ=01  = 1
+ * box 2 -> I=0 J=1 IJ=10  = 2
+ * box 3 -> I=1 J=1 IJ=11  = 3
+ */
+//IJ(i,j,l) returns the box number of i and j with respect to l
+//if !j&l and !i&l -> 0 (box zero: lower left )
+//if !j&l and  i&l -> 1 (box one:  lower right)
+//if  j&l and !i&l -> 2 (box two:  upper left )
+//if  j&l and  i&l -> 3 (box three:upper right)
+#define IJ(i,j,l)  ((j&l) ? ((i&l) ? 3:2 ) :((i&l) ? 1:0 ))
+/*}}}*/
+
+	/*Constructors/Destructors*/
+Quadtree::Quadtree(){/*{{{*/
+	_error_("Constructor not supported");
+
+}
+/*}}}*/
+Quadtree::Quadtree(double xmin,double xmax,double ymin,double ymax,int maxdepth){/*{{{*/
+
+	/*Intermediaries*/
+	double length;
+
+	/*Initialize fields*/
+	this->MaxDepth=maxdepth;
+	this->NbQuadtreeBox=0;
+	this->NbObs=0;
+
+	/*Create container*/
+	this->boxcontainer=new DataSet();
+
+	/*Create Root, pointer toward the main box*/
+	length=max(xmax-xmin,ymax-ymin);
+	this->root=NewQuadtreeBox(xmin+length/2,ymin+length/2,length);
+}
+/*}}}*/
+	Quadtree::~Quadtree(){/*{{{*/
+
+		delete boxcontainer;
+		root=NULL;
+
+	}
+	/*}}}*/
+
+	/*Methods*/
+void  Quadtree::Add(Observation* observation){/*{{{*/
+
+	/*Intermediaries*/
+	int          xi,yi,ij,level,levelbin;
+	QuadtreeBox **pbox    = NULL; // pointer toward current box b
+	QuadtreeBox **pmaster = NULL; // pointer toward master of b
+	QuadtreeBox  *box     = NULL; // current box b
+	QuadtreeBox  *slave   = NULL; // suslaveox of b (if necessary)
+	Observation  *obs[4];
+
+	/*Get integer coodinates*/
+	xi = observation->xi;
+	yi = observation->yi;
+
+	/*Initialize levels*/
+	level    = 0;
+	levelbin = (1L<<this->MaxDepth);// = 2^30
+
+	/*Get inital box (the largest)*/
+	pmaster = &root;
+	pbox    = &root;
+
+	/*Find the smallest box where the observation is located*/
+	while((box=*pbox) && (box->nbitems<0)){ 
+
+		/*Go down one level (levelbin = 00100 -> 00010)*/
+		levelbin>>=1; level+=1; _assert_(level<this->MaxDepth);
+
+		/*Get next box according to the bit value (levelbin)*/
+		pmaster = pbox;
+		pbox    = &box->box[IJ(xi,yi,levelbin)];
+	}
+	_assert_(levelbin>0);
+
+	/*Now, try to add the vertex, if the box is full (nbitems=4), we have to divide it in 4 new boxes*/
+	while((box=*pbox) && (box->nbitems==4)){
+
+		/*Copy the 4 observation in the current Quadtreebox*/
+		obs[0] = box->obs[0];
+		obs[1] = box->obs[1];
+		obs[2] = box->obs[2];
+		obs[3] = box->obs[3];
+
+		/*set nbitems as -1 (now holding boxes instead of observations)*/
+		box->nbitems = -1;
+		box->box[0]  = NULL;
+		box->box[1]  = NULL;
+		box->box[2]  = NULL;
+		box->box[3]  = NULL;
+
+		/*Go down one level (levelbin = 00010 -> 00001)*/
+		levelbin>>=1; level+=1; _assert_(level<this->MaxDepth);
+
+		/*Put the four observations in the new boxes*/
+		for (int k=0;k<4;k++){
+
+			/*Get box for observation number k*/
+			ij    = IJ(obs[k]->xi,obs[k]->yi,levelbin);
+			slave = box->box[ij];
+			if(!slave){
+				box->box[ij] = NewQuadtreeBox(box,ij);
+				slave        = box->box[ij];
+			}
+			slave->obs[slave->nbitems++] = obs[k];
+		}
+
+		/*Get the suslaveox where the current observation is located*/
+		ij      = IJ(xi,yi,levelbin);
+		pmaster = pbox;
+		pbox    = &box->box[ij];
+	}
+
+	/*alloc the QuadtreeBox if necessary and add current observation*/
+	box = *pbox;
+	if(!box){
+		ij  = IJ(xi,yi,levelbin);
+		box = *pbox = NewQuadtreeBox(*pmaster,ij);
+	}
+	box->obs[box->nbitems++]=observation;
+	NbObs++;
+
+}/*}}}*/
+void Quadtree::AddAndAverage(double x,double y,double value){/*{{{*/
+
+	QuadtreeBox **pbox = NULL;
+	QuadtreeBox  *box  = NULL;
+	int           xi,yi;
+	int           levelbin;
+	int           index;
+	double        length,length2;
+
+	/*Get integer coodinates*/
+	this->IntergerCoordinates(&xi,&yi,x,y);
+
+	/*Initialize level*/
+	levelbin = (1L<<this->MaxDepth);// = 2^30
+
+	/*Get inital box (the largest)*/
+	pbox=&root;
+
+	/*Find the smallest box where this point is located*/
+	while((box=*pbox) && (box->nbitems<0)){ 
+		levelbin>>=1;
+		pbox = &box->box[IJ(xi,yi,levelbin)];
+	}
+
+	/*Add obervation in this box (should be full)*/
+	if(box && box->nbitems==4){
+		index  = 0;
+		length = pow(box->obs[0]->x - x,2) + pow(box->obs[0]->y - y,2);
+		for(int i=1;i<4;i++){
+			length2 = pow(box->obs[i]->x - x,2) + pow(box->obs[i]->y - y,2);
+			if(length2<length){
+				index  = i;
+				length = length2;
+			}
+		}
+
+		/*We found the closest observation, now average observation (do not change xi and yi to avoid round off errors*/
+		box->obs[index]->x = (box->obs[index]->weight*box->obs[index]->x + x)/(box->obs[index]->weight+1.);
+		box->obs[index]->y = (box->obs[index]->weight*box->obs[index]->y + y)/(box->obs[index]->weight+1.);
+		box->obs[index]->xi= int((box->obs[index]->weight*double(box->obs[index]->xi) + double(xi))/(box->obs[index]->weight+1.));
+		box->obs[index]->yi= int((box->obs[index]->weight*double(box->obs[index]->yi) + double(yi))/(box->obs[index]->weight+1.));
+		box->obs[index]->value   = (box->obs[index]->weight*box->obs[index]->value + value)/(box->obs[index]->weight+1.);
+		box->obs[index]->weight += 1.;
+	}
+	else{
+		_error_("Box is not full");
+	}
+}/*}}}*/
+void Quadtree::ClosestObs(int *pindex,double x,double y){/*{{{*/
+
+	QuadtreeBox **pbox = NULL;
+	QuadtreeBox  *box  = NULL;
+	int           xi,yi;
+	int           levelbin;
+	int           index = -1;
+	double        length,length2;
+
+	/*Get integer coodinates*/
+	this->IntergerCoordinates(&xi,&yi,x,y);
+
+	/*Initialize level*/
+	levelbin = (1L<<this->MaxDepth);// = 2^30
+
+	/*Get inital box (the largest)*/
+	pbox=&root;
+
+	/*Find the smallest box where this point is located*/
+	while((box=*pbox) && (box->nbitems<0)){ 
+		levelbin>>=1;
+		pbox = &box->box[IJ(xi,yi,levelbin)];
+	}
+
+	/*Add obervation in this box (should be full)*/
+	if(box && box->nbitems>0){
+		index  = box->obs[0]->index;
+		length = pow(box->obs[0]->x - x,2) + pow(box->obs[0]->y - y,2);
+		for(int i=1;i<box->nbitems;i++){
+			length2 = pow(box->obs[i]->x - x,2) + pow(box->obs[i]->y - y,2);
+			if(length2<length){
+				index  = box->obs[i]->index;
+				length = length2;
+			}
+		}
+	}
+
+	*pindex=index;
+}/*}}}*/
+void  Quadtree::DeepEcho(void){/*{{{*/
+
+	_printf_("Quadtree:\n");
+	_printf_("   MaxDepth      = " << this->MaxDepth << "\n");
+	_printf_("   NbQuadtreeBox = " << this->NbQuadtreeBox << "\n");
+	_printf_("   NbObs         = " << this->NbObs << "\n");
+	_printf_("   root          = " << this->root << "\n");
+	boxcontainer->Echo();
+
+}/*}}}*/
+void  Quadtree::Echo(void){/*{{{*/
+
+	_printf_("Quadtree:\n");
+	_printf_("   MaxDepth      = " << this->MaxDepth << "\n");
+	_printf_("   NbQuadtreeBox = " << this->NbQuadtreeBox << "\n");
+	_printf_("   NbObs         = " << this->NbObs << "\n");
+	_printf_("   root          = " << this->root << "\n");
+
+}/*}}}*/
+void  Quadtree::IntergerCoordinates(int *xi,int *yi,double x,double y){/*{{{*/
+
+	/*Intermediaries*/
+	double coefficient;
+	double xmin,ymin;
+
+	/*Checks in debugging mode*/
+	_assert_(xi && yi);
+	_assert_(this->root);
+
+	/*coeffIcoor is the coefficient used for integer coordinates:
+	 *                (x-xmin)
+	 * xi = (2^30 -1) --------- 
+	 *                 length
+	 * coefficient = (2^30 -1)/length
+	 */
+	coefficient = double((1L<<this->MaxDepth)-1)/(this->root->length);
+	xmin        = this->root->xcenter - this->root->length/2;
+	ymin        = this->root->ycenter - this->root->length/2;
+
+	*xi=int(coefficient*(x - xmin));
+	*yi=int(coefficient*(y - ymin));
+}/*}}}*/
+Quadtree::QuadtreeBox* Quadtree::NewQuadtreeBox(double xcenter,double ycenter,double length){/*{{{*/
+
+	/*Output*/
+	QuadtreeBox* newbox=NULL;
+
+	/*Create and initialize a new box*/
+	newbox=new QuadtreeBox();
+	newbox->nbitems=0;
+	newbox->xcenter=xcenter;
+	newbox->ycenter=ycenter;
+	newbox->length=length;
+	newbox->box[0]=NULL;
+	newbox->box[1]=NULL;
+	newbox->box[2]=NULL;
+	newbox->box[3]=NULL;
+
+	/*Add to container*/
+	this->boxcontainer->AddObject(newbox);
+	NbQuadtreeBox++;
+
+	/*currentbox now points toward next quadtree box*/
+	return newbox;
+}/*}}}*/
+Quadtree::QuadtreeBox* Quadtree::NewQuadtreeBox(QuadtreeBox* master,int index){/*{{{*/
+
+	/*Output*/
+	QuadtreeBox* newbox=NULL;
+
+	/*Checks in debugging mode*/
+	_assert_(master);
+
+	/*Create and initialize a new box*/
+	newbox=new QuadtreeBox();
+	newbox->nbitems=0;
+	newbox->box[0]=NULL;
+	newbox->box[1]=NULL;
+	newbox->box[2]=NULL;
+	newbox->box[3]=NULL;
+	switch(index){
+		case 0:
+			newbox->xcenter=master->xcenter - master->length/4;
+			newbox->ycenter=master->ycenter - master->length/4;
+			break;
+		case 1:
+			newbox->xcenter=master->xcenter + master->length/4;
+			newbox->ycenter=master->ycenter - master->length/4;
+			break;
+		case 2:
+			newbox->xcenter=master->xcenter - master->length/4;
+			newbox->ycenter=master->ycenter + master->length/4;
+			break;
+		case 3:
+			newbox->xcenter=master->xcenter + master->length/4;
+			newbox->ycenter=master->ycenter + master->length/4;
+			break;
+		default:
+			_error_("Case " << index << " not supported");
+	}
+	newbox->length=master->length/2;
+
+	/*Add to container*/
+	this->boxcontainer->AddObject(newbox);
+	NbQuadtreeBox++;
+
+	/*currentbox now points toward next quadtree box*/
+	return newbox;
+}/*}}}*/
+void Quadtree::RangeSearch(int **pindices,int *pnobs,double x,double y,double range){/*{{{*/
+
+	/*Intermediaries*/
+	int  nobs;
+	int *indices = NULL;
+
+	/*Allocate indices (maximum by default*/
+	if(this->NbObs) indices = xNew<int>(this->NbObs);
+	nobs = 0;
+
+	if(this->root) this->root->RangeSearch(indices,&nobs,x,y,range);
+
+	/*Clean-up and return*/
+	*pnobs=nobs;
+	*pindices=indices;
+
+}/*}}}*/
+void Quadtree::QuadtreeDepth(int* A,int xi,int yi){/*{{{*/
+
+	QuadtreeBox **pbox = NULL;
+	QuadtreeBox  *box  = NULL;
+	int           level,levelbin;
+
+	/*Initialize levels*/
+	level    = 0;
+	levelbin = (1L<<this->MaxDepth);// = 2^30
+
+	/*Get inital box (the largest)*/
+	pbox=&root;
+
+	/*Find the smallest box where this point is located*/
+	while((box=*pbox) && (box->nbitems<0)){ 
+
+		levelbin>>=1; level+=1; _assert_(level<this->MaxDepth);
+
+		pbox = &box->box[IJ(xi,yi,levelbin)];
+	}
+	if(box && box->nbitems>0){
+		/*This box is not empty, add one level*/
+		level+=1;
+	}
+
+	*A=level;
+}/*}}}*/
+void Quadtree::QuadtreeDepth2(int* A,int xi,int yi){/*{{{*/
+
+	QuadtreeBox **pbox = NULL;
+	QuadtreeBox  *box  = NULL;
+	int           level,levelbin;
+
+	/*Initialize levels*/
+	level    = 0;
+	levelbin = (1L<<this->MaxDepth);// = 2^30
+
+	/*Get inital box (the largest)*/
+	pbox=&root;
+
+	/*Find the smallest box where this point is located*/
+	while((box=*pbox) && (box->nbitems<0)){ 
+
+		levelbin>>=1; level+=1; 
+
+		pbox = &box->box[IJ(xi,yi,levelbin)];
+	}
+	if(box && box->nbitems>0){
+		/*This box is not empty, add one level*/
+		level+=1;
+	}
+
+	/*If we were to add the vertex, get level*/
+	if(box && box->nbitems==4){
+		int ij;
+		bool flag=true;
+		while(flag){
+
+			levelbin>>=1; level+=1;
+			if(level>this->MaxDepth){
+				level+=1;
+				break;
+			}
+
+			/*loop over the four observations*/
+			ij=IJ(box->obs[0]->xi,box->obs[0]->yi,levelbin);
+			for (int k=1;k<4;k++){
+				if(IJ(box->obs[k]->xi,box->obs[k]->yi,levelbin) != ij){
+					flag = false;
+				}
+			}
+			if(IJ(xi,yi,levelbin)!=ij){
+				flag = false;
+			}
+		}
+	}
+
+	*A=level;
+}/*}}}*/
+
+/*QuadtreeBox methos*/
+Object* Quadtree::QuadtreeBox::copy(void){/*{{{*/
+
+	   QuadtreeBox* qtreebox = new QuadtreeBox(*this);
+
+		for (int i=0; i<4; ++i){
+			if(this->box[i]) qtreebox->box[i] = reinterpret_cast<QuadtreeBox*>(this->box[i]->copy());
+			else qtreebox->box[i] = NULL;
+		}
+		for (int i=0; i<4; ++i){
+			if(this->obs[i]) qtreebox->obs[i] = reinterpret_cast<Observation*>(this->obs[i]->copy());
+			else qtreebox->obs[i] = NULL;
+		}
+
+		return (Object*) qtreebox;
+}
+/*}}}*/
+void  Quadtree::QuadtreeBox::Echo(void){/*{{{*/
+
+	_printf_("QuadtreeBox:\n");
+	_printf_("   nbitems = " << this->nbitems << "\n");
+	_printf_("   xcenter = " << this->xcenter << "\n");
+	_printf_("   ycenter = " << this->ycenter << "\n");
+	_printf_("   length  = " << this->length << "\n");
+
+}/*}}}*/
+int Quadtree::QuadtreeBox::IsWithinRange(double x,double y,double range){/*{{{*/
+
+	/*Return 0 if the 2 boxes do not overlap*/
+	if(this->xcenter+this->length/2 < x-range) return 0;
+	if(this->xcenter-this->length/2 > x+range) return 0;
+	if(this->ycenter+this->length/2 < y-range) return 0;
+	if(this->ycenter-this->length/2 > y+range) return 0;
+
+	/*Return 2 if the this box is included in the range*/
+	if(this->xcenter+this->length/2 <= x+range &&
+		this->ycenter+this->length/2 <= y+range &&
+		this->xcenter-this->length/2 >= x-range &&
+		this->ycenter-this->length/2 >= y-range) return 2;
+
+	/*This is a simple overlap*/
+	return 1;
+
+}/*}}}*/
+void Quadtree::QuadtreeBox::RangeSearch(int* indices,int *pnobs,double x,double y,double range){/*{{{*/
+
+	/*Intermediaries*/
+	int i,nobs;
+
+	/*Recover current number of observations*/
+	nobs = *pnobs;
+
+	switch(this->IsWithinRange(x,y,range)){
+		case 0:
+			/*If this box is not within range, return*/
+			break;
+		case 2:
+			/*This box is included in range*/
+			this->WriteObservations(indices,&nobs);
+			break;
+		case 1:
+			/*This box is partly included*/
+			if(this->nbitems>0){
+				/*If this box has only observations, add indices that are within range*/
+				for(i=0;i<this->nbitems;i++){
+					if(fabs(this->obs[i]->x-x) <= range && fabs(this->obs[i]->y-y) <= range){
+						indices[nobs++]=this->obs[i]->index;
+					}
+				}
+			}
+			else{
+				/*This box points toward boxes*/
+				if(this->box[0]) this->box[0]->RangeSearch(indices,&nobs,x,y,range);
+				if(this->box[1]) this->box[1]->RangeSearch(indices,&nobs,x,y,range);
+				if(this->box[2]) this->box[2]->RangeSearch(indices,&nobs,x,y,range);
+				if(this->box[3]) this->box[3]->RangeSearch(indices,&nobs,x,y,range);
+			}
+			break;
+		default:
+			_error_("Case " << this->IsWithinRange(x,y,range) << " not supported");
+	}
+
+	/*Assign output pointers: */
+	*pnobs=nobs;
+}/*}}}*/
+void Quadtree::QuadtreeBox::WriteObservations(int* indices,int *pnobs){/*{{{*/
+
+	/*Intermediaries*/
+	int i,nobs;
+
+	/*Recover current number of observations*/
+	nobs = *pnobs;
+
+	if(this->nbitems>0){
+		/*If this box has only observations, add all indices*/
+		for(i=0;i<this->nbitems;i++){
+			indices[nobs++]=this->obs[i]->index;
+		}
+	}
+	else{
+		/*This box points toward boxes, */
+		if(this->box[0]) this->box[0]->WriteObservations(indices,&nobs);
+		if(this->box[1]) this->box[1]->WriteObservations(indices,&nobs);
+		if(this->box[2]) this->box[2]->WriteObservations(indices,&nobs);
+		if(this->box[3]) this->box[3]->WriteObservations(indices,&nobs);
+	}
+
+	/*Assign output pointers: */
+	*pnobs=nobs;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Quadtree.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Quadtree.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Quadtree.h	(revision 27955)
@@ -0,0 +1,66 @@
+
+#ifndef _QUADTREE_H
+#define _QUADTREE_H
+
+class Observation;
+
+class Quadtree{
+
+	private:
+		/* A quadtree box contains up to 4 points (locations). 4 new quadtree boxes are
+		 * created if a fifth point is added to the same box. A Quadtree box is therefore
+		 * composed of EITHER:
+		 * - up to 4 vertices
+		 * - 4 "sub" quadtree boxes*/
+
+		class QuadtreeBox: public Object{ 
+			public:
+				int    nbitems; // number of current vertices in the box
+				double xcenter; // x position of the center (double)
+				double ycenter; // x position of the center (double)
+				double length;  // width of the box
+				union{
+					QuadtreeBox *box[4];
+					Observation *obs[4];
+				};
+
+				/*Object functions (Needed because the Quadtree uses a Container*/
+				Object *copy();
+				void    DeepEcho()  {_error_("not implemented yet"); };
+				void    Echo();
+				int     Id()        {_error_("not implemented yet"); };
+				void    Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+				int     ObjectEnum(){_error_("not implemented yet"); };
+
+				/*Methods*/
+				int          IsWithinRange(double  x,double y,double range);
+				void         RangeSearch(int *indices,int *pnobs,double x,double y,double range);
+				void         WriteObservations(int *indices,int *pnobs);
+
+		};
+
+		/*Quadtree private Fields*/
+		DataSet* boxcontainer;
+
+	public:
+		int          MaxDepth;          // maximum number of subdivision
+		QuadtreeBox *root;              // main box
+		int          NbQuadtreeBox;     // total number of boxes
+		int          NbObs;             // number of points
+
+		Quadtree();
+		Quadtree(double xmin,double xmax,double ymin,double ymax,int maxdepth_in);
+		~Quadtree();
+		void         Add(Observation *observation);
+		void         AddAndAverage(double x,double y,double value);
+		void         ClosestObs(int *pindex,double x,double y);
+		void         DeepEcho(void);
+		void         Echo(void);
+		void         IntergerCoordinates(int *xi,int *yi,double x,double y);
+		QuadtreeBox *NewQuadtreeBox(double xcenter,double ycenter,double length);
+		QuadtreeBox *NewQuadtreeBox(QuadtreeBox* master,int index);
+		void         QuadtreeDepth(int *A,int xi,int yi);
+		void         QuadtreeDepth2(int *A,int xi,int yi);
+		void         RangeSearch(int **pindices,int *pnobs,double x,double y,double range);
+};
+#endif //_QUADTREE_H
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/SphericalVariogram.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/SphericalVariogram.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/SphericalVariogram.cpp	(revision 27955)
@@ -0,0 +1,92 @@
+/*!\file SphericalVariogram.c
+ * \brief: implementation of the SphericalVariogram object
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../classes.h"
+#include "../../shared/shared.h"
+
+/*SphericalVariogram constructors and destructor*/
+SphericalVariogram::SphericalVariogram(){/*{{{*/
+	this->nugget = 0.2;
+	this->sill   = 1;
+	this->range  = SQRT3;
+	return;
+}
+/*}}}*/
+SphericalVariogram::SphericalVariogram(Options* options){/*{{{*/
+
+	/*Defaults*/
+	this->nugget = 0.2;
+	this->sill   = 1;
+	this->range  = SQRT3;
+
+	/*Overwrite from options*/
+	if(options->GetOption("nugget")) options->Get(&this->nugget,"nugget");
+	if(options->GetOption("sill"))   options->Get(&this->sill,"sill");
+	if(options->GetOption("range"))  options->Get(&this->range,"range");
+
+	/*Checks*/
+	if(nugget==sill) _error_("nugget and sill cannot be equal (constant semivariogram not allowed)");
+}
+/*}}}*/
+SphericalVariogram::~SphericalVariogram(){/*{{{*/
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* SphericalVariogram::copy(void){/*{{{*/
+	return new SphericalVariogram(*this);
+}
+/*}}}*/
+void SphericalVariogram::Echo(void){/*{{{*/
+	_printf_("SphericalVariogram\n");
+	_printf_("   nugget: " << this->nugget << "\n");
+	_printf_("   sill  : " << this->sill << "\n");
+	_printf_("   range : " << this->range << "\n");
+}
+/*}}}*/
+
+/*Variogram function*/
+double SphericalVariogram::Covariance(double deltax,double deltay){/*{{{*/
+	/*The covariance can be deduced from the variogram from the following
+	 * relationship:
+	 *    2 gamma = C(x,x) + C(y,y) -2 C(x,y)
+	 * so
+	 *    C(h) = sill - gamma                                            */
+	double h,cova;
+
+	/*Calculate length square*/
+	h=sqrt(deltax*deltax + deltay*deltay);
+
+	/*return covariance*/
+	if(h<=range)
+	 cova = (sill-nugget)*(1 - (3*h)/(2*range) + pow(h,3)/(2*pow(range,3)) );
+	else
+	 cova = 0.;
+
+	return cova;
+}
+/*}}}*/
+double SphericalVariogram::SemiVariogram(double deltax,double deltay){/*{{{*/
+	/*http://en.wikipedia.org/wiki/Variogram*/
+	double h,gamma;
+
+	/*Calculate length square*/
+	h=sqrt(deltax*deltax + deltay*deltay);
+
+	/*return semi-variogram*/
+	if(h<=range)
+	 gamma = (sill-nugget)*( (3*h)/(2*range) - pow(h,3)/(2*pow(range,3)) ) + nugget;
+	else
+	 gamma = sill;
+
+	return gamma;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/SphericalVariogram.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/SphericalVariogram.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/SphericalVariogram.h	(revision 27955)
@@ -0,0 +1,35 @@
+/*! \file SphericalVariogram.h 
+ *  \brief: header file for triavertexinput object
+ */
+
+#ifndef _SPHERICALVARIOGRAM_H_
+#define _SPHERICALVARIOGRAM_H_
+
+/*Headers:*/
+#include "./Variogram.h"
+
+class SphericalVariogram: public Variogram{
+
+	public:
+		double nugget; //The height of the jump of the semivariogram at the discontinuity at the origin
+		double sill;   //Limit of the variogram tending to infinity lag distances
+		double range;  //The distance in which the difference of the variogram from the sill becomes negligible
+
+		/*SphericalVariogram constructors, destructors*/
+		SphericalVariogram();
+		SphericalVariogram(Options* options);
+		~SphericalVariogram();
+
+		/*Object virtual functions definitions*/
+		Object* copy();
+		void  DeepEcho(){_error_("Not implemented yet");};
+		void  Echo();
+		int   Id(){_error_("Not implemented yet");}; 
+		void  Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!"); };
+		int   ObjectEnum(){_error_("Not implemented yet");};
+
+		/*Variogram functions*/
+		double Covariance(double deltax,double deltay);
+		double SemiVariogram(double deltax,double deltay);
+};
+#endif  /* _SPHERICALVARIOGRAM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Variogram.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Variogram.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/Variogram.h	(revision 27955)
@@ -0,0 +1,18 @@
+/*!\file:  Variogram.h
+ * \brief abstract class for Variogram object
+ */ 
+
+#ifndef _VARIOGRAM_H_
+#define _VARIOGRAM_H_
+
+#include "../../datastructures/datastructures.h"
+
+class Variogram: public Object{
+
+	public: 
+		virtual ~Variogram(){};
+		virtual double Covariance(double deltax,double deltay)=0;
+		virtual double SemiVariogram(double deltax,double deltay)=0;
+
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/krigingobjects.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/krigingobjects.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/kriging/krigingobjects.h	(revision 27955)
@@ -0,0 +1,19 @@
+/* \file krigingobjects.h
+ * \brief: prototype header for all kriging objects.
+ */
+
+#ifndef KRIGING_OBJECTS_H_
+#define KRIGING_OBJECTS_H_
+
+/*Kriging*/
+#include "./Variogram.h"
+#include "./GaussianVariogram.h"
+#include "./ExponentialVariogram.h"
+#include "./SphericalVariogram.h"
+#include "./PowerVariogram.h"
+#include "./Quadtree.h"
+#include "./Covertree.h"
+#include "./Observation.h"
+#include "./Observations.h"
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/matrix/ElementMatrix.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/matrix/ElementMatrix.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/matrix/ElementMatrix.cpp	(revision 27955)
@@ -0,0 +1,429 @@
+/*!\file ElementMatrix.cpp
+ * \brief: implementation of the ElementMatrix object, used to plug values from element into global stiffness matrix
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*ElementMatrix constructors and destructor*/
+ElementMatrix::ElementMatrix(){/*{{{*/
+
+	this->nrows=0;
+	this->values=NULL;
+	this->fglobaldoflist=NULL;
+	this->sglobaldoflist=NULL;
+}
+/*}}}*/
+ElementMatrix::ElementMatrix(ElementMatrix* Ke){/*{{{*/
+
+	if(!Ke) _error_("Input Element Matrix is a NULL pointer");
+	this->Init(Ke);
+	return;
+}
+/*}}}*/
+ElementMatrix::ElementMatrix(ElementMatrix* Ke1, ElementMatrix* Ke2){/*{{{*/
+
+	/*intermediaries*/
+	int i,j,counter;
+
+	/*If one of the two matrix is NULL, we copy the other one*/
+	if(!Ke1 && !Ke2){
+		_error_("Two input element matrices are NULL");
+	}
+	else if(!Ke1){
+		this->Init(Ke2);
+		return;
+	}
+	else if(!Ke2){
+		this->Init(Ke1);
+		return;
+	}
+
+	/*General Case: Ke1 and Ke2 are not empty*/
+
+	/*Initialize itransformation matrix Ke[P[i]] = Ke2[i]*/
+	int* P=xNew<int>(Ke2->nrows);
+
+	/*1: Get the new numbering of Ke2 and get size of the new matrix*/
+	int gsize=Ke1->nrows;
+	for(i=0;i<Ke2->nrows;i++){
+		bool found=false;
+		for(j=0;j<Ke1->nrows;j++){
+			if(Ke2->gglobaldoflist[i]==Ke1->gglobaldoflist[j]){
+				found=true; P[i]=j; break;
+			}
+		}
+		if(!found){
+			P[i]=gsize; gsize++;
+		}
+	}
+
+	/*2: Initialize static fields*/
+	this->nrows=gsize;
+
+	/*Gset and values*/
+	this->gglobaldoflist=xNew<int>(this->nrows);
+	this->fglobaldoflist=xNew<int>(this->nrows);
+	this->sglobaldoflist=xNew<int>(this->nrows);
+	this->values=xNewZeroInit<IssmDouble>(this->nrows*this->nrows);
+	for(i=0;i<Ke1->nrows;i++){
+		for(j=0;j<Ke1->nrows;j++){
+			this->values[i*this->nrows+j] += Ke1->values[i*Ke1->nrows+j];
+		}
+		this->gglobaldoflist[i]=Ke1->gglobaldoflist[i];
+		this->fglobaldoflist[i]=Ke1->fglobaldoflist[i];
+		this->sglobaldoflist[i]=Ke1->sglobaldoflist[i];
+	}
+	for(i=0;i<Ke2->nrows;i++){
+		for(j=0;j<Ke2->nrows;j++){
+			this->values[P[i]*this->nrows+P[j]] += Ke2->values[i*Ke2->nrows+j];
+		}
+		this->gglobaldoflist[P[i]]=Ke2->gglobaldoflist[i];
+		this->fglobaldoflist[P[i]]=Ke2->fglobaldoflist[i];
+		this->sglobaldoflist[P[i]]=Ke2->sglobaldoflist[i];
+	}
+
+	/*clean-up*/
+	xDelete<int>(P);
+}
+/*}}}*/
+ElementMatrix::ElementMatrix(ElementMatrix* Ke1, ElementMatrix* Ke2,ElementMatrix* Ke3){/*{{{*/
+
+	/*Concatenate all matrices*/
+	ElementMatrix* Ke12 =new ElementMatrix(Ke1,Ke2);
+	ElementMatrix* Ke123=new ElementMatrix(Ke12,Ke3);
+
+	/*Initialize current object with this matrix*/
+	this->Init(Ke123);
+
+	/*clean-up*/
+	delete Ke12;
+	delete Ke123;
+}
+/*}}}*/
+ElementMatrix::ElementMatrix(Node** nodes,int numnodes,Parameters* parameters,int approximation){/*{{{*/
+
+	/*get Matrix size and properties*/
+	this->nrows=GetNumberOfDofs(nodes,numnodes,GsetEnum,approximation);
+
+	/*fill values with 0: */
+	this->values=xNewZeroInit<IssmDouble>(this->nrows*this->nrows);
+
+	this->gglobaldoflist=GetGlobalDofList(nodes,numnodes,GsetEnum,approximation);
+	this->fglobaldoflist=GetGlobalDofList(nodes,numnodes,FsetEnum,approximation);
+	this->sglobaldoflist=GetGlobalDofList(nodes,numnodes,SsetEnum,approximation);
+}
+/*}}}*/
+ElementMatrix::~ElementMatrix(){/*{{{*/
+
+	xDelete<IssmDouble>(this->values);
+	xDelete<int>(this->gglobaldoflist);
+	xDelete<int>(this->fglobaldoflist);
+	xDelete<int>(this->sglobaldoflist);
+}
+/*}}}*/
+
+/*ElementMatrix specific routines: */
+void ElementMatrix::AddDiagonalToGlobal(Vector<IssmDouble>* pf){/*{{{*/
+
+	IssmDouble* localvalues=NULL;
+
+	/*Check that pf is not NULL*/
+	_assert_(pf); 
+
+	/*In debugging mode, check consistency (no NaN, and values not too big)*/
+	this->CheckConsistency();
+
+	/*do we have any component in the F set?*/
+	int fsize = 0;
+	for(int i=0;i<this->nrows;i++){
+		if(this->fglobaldoflist[i]>=0) fsize++;
+	}
+
+	if(fsize){
+		/*first, retrieve values that are in the f-set from the g-set values matrix: */
+		localvalues=xNew<IssmDouble>(this->nrows);
+		for(int i=0;i<this->nrows;i++){
+			localvalues[i] = this->values[this->nrows*i + i];
+		}
+
+		/*add local values into global  matrix, using the fglobaldoflist: */
+		pf->SetValues(fsize,this->fglobaldoflist,localvalues,ADD_VAL);
+
+		/*Free resources:*/
+		xDelete<IssmDouble>(localvalues);
+	}
+
+}
+/*}}}*/
+void ElementMatrix::AddToGlobal(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs){/*{{{*/
+
+	/*Check that Kff has been alocated in debugging mode*/
+	_assert_(Kff);
+
+	/*If Kfs is not provided, call the other function*/
+	if(!Kfs){
+		this->AddToGlobal(Kff);
+		return;
+	}
+
+	/*In debugging mode, check consistency (no NaN, and values not too big)*/
+	this->CheckConsistency();
+
+	/*do we have any component in the F or S set?*/
+   bool is_fset= false;
+	bool is_sset= false;
+   for(int i=0;i<this->nrows;i++){
+      if(this->fglobaldoflist[i]>=0){
+         is_fset = true;
+      }
+		else{
+			_assert_(this->sglobaldoflist[i]>=0);
+			is_sset = true;
+		}
+   }
+
+	/*only use row dofs to add values into global matrices: */
+	if(is_fset){
+		Kff->SetValues(this->nrows,this->fglobaldoflist,this->nrows,this->fglobaldoflist,this->values,ADD_VAL);
+	}
+	if(is_fset && is_sset){
+		Kfs->SetValues(this->nrows,this->fglobaldoflist,this->nrows,this->sglobaldoflist,this->values,ADD_VAL);
+	}
+}
+/*}}}*/
+void ElementMatrix::AddToGlobal(Matrix<IssmDouble>* Jff){/*{{{*/
+
+	/*Check that Jff is not NULL*/
+	_assert_(Jff); 
+
+	/*In debugging mode, check consistency (no NaN, and values not too big)*/
+	this->CheckConsistency();
+
+	/*do we have any component in the F set?*/
+	bool isfset= false;
+	for(int i=0;i<this->nrows;i++){
+		if(this->fglobaldoflist[i]>=0){
+			isfset = true;
+			break;
+		}
+   }
+
+	if(isfset){
+		Jff->SetValues(this->nrows,this->fglobaldoflist,this->nrows,this->fglobaldoflist,this->values,ADD_VAL);
+	}
+}
+/*}}}*/
+void ElementMatrix::CheckConsistency(void){/*{{{*/
+	/*Check element matrix values, only in debugging mode*/
+	#ifdef _ISSM_DEBUG_ 
+	for (int i=0;i<this->nrows;i++){
+		for(int j=0;j<this->nrows;j++){
+			if (xIsNan<IssmDouble>(this->values[i*this->nrows+j])) _error_("NaN found in Element Matrix");
+			if (xIsInf<IssmDouble>(this->values[i*this->nrows+j])) _error_("Inf found in Element Matrix");
+			if (fabs(this->values[i*this->nrows+j])>1.e+50) _error_("Element Matrix values exceeds 1.e+50");
+		}
+	}
+	#endif
+}
+/*}}}*/
+void ElementMatrix::Echo(void){/*{{{*/
+
+	int i,j;
+	_printf_("Element Matrix echo:\n");
+	_printf_("   nrows: " << this->nrows << "\n");
+
+	_printf_("   values:\n");
+	for(i=0;i<nrows;i++){
+		_printf_(setw(4) << right << i << ": ");
+		for(j=0;j<nrows;j++) _printf_( " " << setw(11) << setprecision (5) << right << values[i*nrows+j]);
+		_printf_("\n");
+	}
+
+	_printf_("   gglobaldoflist (" << gglobaldoflist << "): ");
+	if(gglobaldoflist) for(i=0;i<nrows;i++) _printf_(" " << gglobaldoflist[i]); _printf_("\n");
+
+	_printf_("   fglobaldoflist  (" << fglobaldoflist << "): ");
+	for(i=0;i<nrows;i++)_printf_(" " << fglobaldoflist[i]); _printf_(" \n");
+
+	_printf_("   sglobaldoflist  (" << sglobaldoflist << "): ");
+	for(i=0;i<nrows;i++)_printf_(" " << sglobaldoflist[i]); _printf_(" \n");
+}
+/*}}}*/
+bool ElementMatrix::HasDof(int dof,int set){/*{{{*/
+
+	if(set==FsetEnum){
+		for(int i=0;i<this->nrows;i++) if(this->fglobaldoflist[i] == dof) return true;
+	}
+	else if(set==GsetEnum){
+		for(int i=0;i<this->nrows;i++) if(this->gglobaldoflist[i] == dof) return true;
+	}
+	else if(set==SsetEnum){
+		for(int i=0;i<this->nrows;i++) if(this->sglobaldoflist[i] == dof) return true;
+	}
+	else{
+		_error_("not supported yet");
+	}
+
+	return false;
+}
+/*}}}*/
+void ElementMatrix::Init(ElementMatrix* Ke){/*{{{*/
+
+	_assert_(Ke);
+	_assert_(this);
+
+	this->nrows =Ke->nrows;
+
+	this->values=xNew<IssmDouble>(this->nrows*this->nrows);
+	xMemCpy<IssmDouble>(this->values,Ke->values,this->nrows*this->nrows);
+
+	this->gglobaldoflist=xNew<int>(this->nrows);
+	xMemCpy<int>(this->gglobaldoflist,Ke->gglobaldoflist,this->nrows);
+	this->fglobaldoflist=xNew<int>(this->nrows);
+	xMemCpy<int>(this->fglobaldoflist,Ke->fglobaldoflist,this->nrows);
+	this->sglobaldoflist=xNew<int>(this->nrows);
+	xMemCpy<int>(this->sglobaldoflist,Ke->sglobaldoflist,this->nrows);
+}
+/*}}}*/
+void ElementMatrix::Lump(void){/*{{{*/
+
+	for(int i=0;i<this->nrows;i++){
+		for(int j=0;j<this->nrows;j++){
+			if(i!=j){
+				this->values[i*this->nrows+i] += this->values[i*this->nrows+j];
+				this->values[i*this->nrows+j]  = 0.;
+			}
+		}
+	}
+
+	return;
+}
+/*}}}*/
+void ElementMatrix::Transpose(void){/*{{{*/
+
+	/*Intermediaries*/
+	ElementMatrix* Ke_copy=new ElementMatrix(this);
+
+	/*Transpose values*/
+	for (int i=0;i<this->nrows;i++) for(int j=0;j<this->nrows;j++) this->values[i*this->nrows+j]=Ke_copy->values[j*Ke_copy->nrows+i];
+
+	/*Clean up and return*/
+	delete Ke_copy;
+	return;
+}
+/*}}}*/
+void ElementMatrix::StaticCondensation(int bsize,int* bindices){/*{{{*/
+	/* 
+	 * | Kii  Kib | | Ui |    |Fi|
+	 * | Kbi  Kbb | | Ub |  = |Fb|
+	 *
+	 * Kii Ui + Kib Ub = Fi
+	 * Kbi Ui + Kbb Ub = Fb
+	 *
+	 * We want to remove Ub from the equation:
+	 *
+	 * Kii Ui + Kib inv(Kbb) (Fb - Kbi Ui) = Fi
+	 *
+	 * which gives:
+	 *
+	 * (Kii - Kib inv(Kbb) Kbi) Ui = Fi - Kib inv(Kbb) Fb
+	 */
+
+	/*Checks in debugging mode*/
+	_assert_(bsize>0 && bsize<this->nrows && this->values); 
+
+	/*Intermediaries*/
+	int         counter,i,j,isize;
+	IssmDouble *Kii         = NULL;
+	IssmDouble *Kib         = NULL;
+	IssmDouble *Kbi         = NULL;
+	IssmDouble *Kbb         = NULL;
+	IssmDouble *Kbbinv      = NULL;
+	IssmDouble *Ktemp       = NULL;
+	int        *iindices    = NULL;
+	bool        flag;
+
+	/*Get new sizes and indices*/
+	isize    = this->nrows - bsize;
+	iindices = xNew<int>(isize);
+	counter  = 0;
+	for(i=0;i<this->nrows;i++){
+		flag = true;
+		for(j=0;j<bsize;j++){
+			if(i==bindices[j]){
+				flag = false;
+				break;
+			}
+		}
+		if(flag){
+			_assert_(counter<isize);
+			iindices[counter++] = i;
+		}
+	}
+	_assert_(counter == isize);
+
+	/*Get submatrices*/
+	Kii = xNew<IssmDouble>(isize*isize);
+	Kib = xNew<IssmDouble>(isize*bsize);
+	Kbi = xNew<IssmDouble>(bsize*isize);
+	Kbb = xNew<IssmDouble>(bsize*bsize);
+	for(i=0;i<isize;i++) for(j=0;j<isize;j++) Kii[i*isize+j] = this->values[iindices[i]*this->nrows + iindices[j]];
+	for(i=0;i<isize;i++) for(j=0;j<bsize;j++) Kib[i*bsize+j] = this->values[iindices[i]*this->nrows + bindices[j]];
+	for(i=0;i<bsize;i++) for(j=0;j<isize;j++) Kbi[i*isize+j] = this->values[bindices[i]*this->nrows + iindices[j]];
+	for(i=0;i<bsize;i++) for(j=0;j<bsize;j++) Kbb[i*bsize+j] = this->values[bindices[i]*this->nrows + bindices[j]];
+
+	/*Invert Kbb*/
+	Kbbinv = xNew<IssmDouble>(bsize*bsize);
+	switch(bsize){
+		case 1:
+			Kbbinv[0] = 1./Kbb[0];
+			break;
+		case 2:
+			Matrix2x2Invert(Kbbinv,Kbb);
+			break;
+		case 3:
+			Matrix3x3Invert(Kbbinv,Kbb);
+			break;
+		default:
+			MatrixInverse(Kbbinv,bsize,bsize,NULL,0,NULL);
+			break;
+	}
+
+	/*Calculate  Kib inv(Kbb) Kbi*/
+	Ktemp = xNew<IssmDouble>(isize*isize);
+	TripleMultiply(Kib,isize,bsize,0, Kbbinv,bsize,bsize,0, Kbi,bsize,isize,0, Ktemp,0);
+
+	/*New Ke*/
+	for(i=0;i<isize*isize;i++) Ktemp[i] = Kii[i] - Ktemp[i];
+
+	/*Update matrix values*/
+	for(i=0;i<this->nrows*this->nrows;i++) this->values[i]=0.;
+	for(i=0;i<isize;i++){
+		for(j=0;j<isize;j++){
+			this->values[iindices[i]*this->nrows + iindices[j]] = Ktemp[i*isize+j];
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(Kii);
+	xDelete<IssmDouble>(Kib);
+	xDelete<IssmDouble>(Kbi);
+	xDelete<IssmDouble>(Kbb);
+	xDelete<IssmDouble>(Kbbinv);
+	xDelete<IssmDouble>(Ktemp);
+	xDelete<int>(iindices);
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/matrix/ElementMatrix.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/matrix/ElementMatrix.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/matrix/ElementMatrix.h	(revision 27955)
@@ -0,0 +1,50 @@
+/*!\file:  ElementMatrix.h
+ * \brief container for information needed to plug element matrix generated by elements 
+ * into the Kff and Kfs global matrices. 
+ * This object will hold the element matrix on the g-set, the local as well as global 
+ * dof lists in the f and s sets.
+ */ 
+
+#ifndef _ELEMENT_MATRIX_H_
+#define _ELEMENT_MATRIX_H_
+
+/*Headers:*/
+#include "../../datastructures/datastructures.h"
+#include "../../toolkits/toolkits.h"
+#include "../../shared/shared.h"
+class Node;
+template <class doublematrix> class Matrix;
+class Parameters;
+
+class ElementMatrix{
+
+	private:
+		int *gglobaldoflist;
+		int *fglobaldoflist;
+		int *sglobaldoflist;
+
+	public:
+		int         nrows;
+		IssmDouble *values;
+
+		/*ElementMatrix constructors, destructors*/
+		ElementMatrix();
+		ElementMatrix(ElementMatrix* Ke);
+		ElementMatrix(ElementMatrix* Ke1,ElementMatrix* Ke2);
+		ElementMatrix(ElementMatrix* Ke1,ElementMatrix* Ke2,ElementMatrix* Ke3);
+		ElementMatrix(Node** nodes,int numnodes,Parameters* parameters,int approximation=NoneApproximationEnum);
+		~ElementMatrix();
+
+		/*ElementMatrix specific routines*/
+		void AddDiagonalToGlobal(Vector<IssmDouble>* pf);
+		void AddToGlobal(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
+		void AddToGlobal(Matrix<IssmDouble>* Jff);
+		void CheckConsistency(void);
+		void Echo(void);
+		void Init(ElementMatrix* Ke);
+		void Lump(void);
+		void StaticCondensation(int numindices,int* indices);
+		void Transpose(void);
+		bool HasDof(int dof,int set);
+};
+#endif //#ifndef _ELEMENT_MATRIX_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/matrix/ElementVector.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/matrix/ElementVector.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/matrix/ElementVector.cpp	(revision 27955)
@@ -0,0 +1,307 @@
+/*!\file ElementVector.cpp
+ * \brief: implementation of the ElementVector object, used to plug values from element into global load
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*ElementVector constructors and destructor*/
+ElementVector::ElementVector(){/*{{{*/
+
+	this->nrows=0;
+	this->values=NULL;
+	this->fglobaldoflist=NULL;
+
+}
+/*}}}*/
+ElementVector::ElementVector(ElementVector* pe1, ElementVector* pe2){/*{{{*/
+
+	/*If one of the two matrix is NULL, we copy the other one*/
+	if(!pe1 && !pe2){
+		_error_("Two input element matrices are NULL");
+	}
+	else if(!pe1){
+		this->Init(pe2);
+		return;
+	}
+	else if(!pe2){
+		this->Init(pe1);
+		return;
+	}
+
+	/*Initialize itransformation matrix pe[P[i]] = pe2[i]*/
+	int* P=xNew<int>(pe2->nrows);
+
+	/*1: Get the new numbering of pe2 and get size of the new matrix*/
+	int gsize=pe1->nrows;
+	for(int i=0;i<pe2->nrows;i++){
+		bool found=false;
+		for(int j=0;j<pe1->nrows;j++){
+			if(pe2->gglobaldoflist[i]==pe1->gglobaldoflist[j]){
+				found=true; P[i]=j; break;
+			}
+		}
+		if(!found){
+			P[i]=gsize; gsize++;
+		}
+	}
+
+	/*2: Initialize static fields*/
+	this->nrows=gsize;
+
+	/*Gset and values*/
+	this->gglobaldoflist=xNew<int>(this->nrows);
+	this->fglobaldoflist=xNew<int>(this->nrows);
+	this->values=xNewZeroInit<IssmDouble>(this->nrows);
+	for(int i=0;i<pe1->nrows;i++){
+		this->values[i] += pe1->values[i];
+		this->gglobaldoflist[i]=pe1->gglobaldoflist[i];
+		this->fglobaldoflist[i]=pe1->fglobaldoflist[i];
+	}
+	for(int i=0;i<pe2->nrows;i++){
+		this->values[P[i]] += pe2->values[i];
+		this->gglobaldoflist[P[i]]=pe2->gglobaldoflist[i];
+		this->fglobaldoflist[P[i]]=pe2->fglobaldoflist[i];
+	}
+
+	/*clean-up*/
+	xDelete<int>(P);
+}
+/*}}}*/
+ElementVector::ElementVector(ElementVector* pe1, ElementVector* pe2,ElementVector* pe3){/*{{{*/
+
+	/*Concatenate all matrices*/
+	ElementVector* pe12 =new ElementVector(pe1,pe2);
+	ElementVector* pe123=new ElementVector(pe12,pe3);
+
+	/*Initialize current object with this matrix*/
+	this->Init(pe123);
+
+	/*clean-up*/
+	delete pe12;
+	delete pe123;
+}
+/*}}}*/
+ElementVector::ElementVector(Node** nodes,int numnodes,Parameters* parameters,int approximation){/*{{{*/
+
+	/*get Vector size and properties*/
+	this->nrows=GetNumberOfDofs(nodes,numnodes,GsetEnum,approximation);
+
+	/*fill values with 0: */
+	this->values=xNewZeroInit<IssmDouble>(this->nrows);
+
+	/*dof list*/
+	this->gglobaldoflist=GetGlobalDofList(nodes,numnodes,GsetEnum,approximation);
+	this->fglobaldoflist=GetGlobalDofList(nodes,numnodes,FsetEnum,approximation);
+}
+/*}}}*/
+ElementVector::~ElementVector(){/*{{{*/
+	xDelete<IssmDouble>(this->values);
+	xDelete<int>(this->gglobaldoflist);
+	xDelete<int>(this->fglobaldoflist);
+}
+/*}}}*/
+
+/*ElementVector specific routines: */
+void ElementVector::AddToGlobal(Vector<IssmDouble>* pf){/*{{{*/
+
+	/*In debugging mode, check consistency (no NaN, and values not too big)*/
+	this->CheckConsistency();
+
+	/*do we have any component in the F set?*/
+	bool isfset= false;
+	for(int i=0;i<this->nrows;i++){
+		if(this->fglobaldoflist[i]>=0){
+			isfset = true;
+			break;
+		}
+	}
+
+	if(isfset){
+		pf->SetValues(this->nrows,this->fglobaldoflist,this->values,ADD_VAL);
+	}
+
+}
+/*}}}*/
+void ElementVector::CheckConsistency(void){/*{{{*/
+	/*Check element matrix values, only in debugging mode*/
+#ifdef _ISSM_DEBUG_ 
+	for (int i=0;i<this->nrows;i++){
+		if (xIsNan<IssmDouble>(this->values[i])) _error_("NaN found in Element Vector");
+		if (xIsInf<IssmDouble>(this->values[i])) _error_("Inf found in Element Vector");
+		if (fabs( this->values[i])>1.e+50) _error_("Element Vector values exceeds 1.e+50");
+	}
+#endif
+}
+/*}}}*/
+void ElementVector::Echo(void){/*{{{*/
+
+	int i;
+
+	_printf_("Element Vector echo:\n");
+	_printf_("   nrows: " << nrows << "\n");
+	_printf_("   values:\n");
+	for(i=0;i<nrows;i++) _printf_(setw(4) << right << i << ": " << setw(10) << values[i] << "\n");
+
+	_printf_("   gglobaldoflist (" << gglobaldoflist << "): ");
+	if(gglobaldoflist) for(i=0;i<nrows;i++) _printf_(" " << gglobaldoflist[i] );
+	_printf_(" \n");
+
+	_printf_("   fglobaldoflist (" << fglobaldoflist << "): ");
+	if(fglobaldoflist) for(i=0;i<nrows;i++) _printf_(" " << fglobaldoflist[i] );
+	_printf_(" \n");
+}
+/*}}}*/
+void ElementVector::Init(ElementVector* pe){/*{{{*/
+
+	_assert_(pe);
+
+	this->nrows =pe->nrows;
+
+	this->values=xNew<IssmDouble>(this->nrows);
+	xMemCpy<IssmDouble>(this->values,pe->values,this->nrows);
+
+	this->gglobaldoflist=xNew<int>(this->nrows);
+	xMemCpy<int>(this->gglobaldoflist,pe->gglobaldoflist,this->nrows);
+
+	this->fglobaldoflist=xNew<int>(this->nrows);
+	xMemCpy<int>(this->fglobaldoflist,pe->fglobaldoflist,this->nrows);
+}
+/*}}}*/
+void ElementVector::InsertIntoGlobal(Vector<IssmDouble>* pf){/*{{{*/
+
+	/*do we have any component in the F set?*/
+	bool isfset= false;
+	for(int i=0;i<this->nrows;i++){
+		if(this->fglobaldoflist[i]>=0){
+			isfset = true;
+			break;
+		}
+	}
+
+	if(isfset){
+		/*add local values into global  vector, using the fglobaldoflist: */
+		pf->SetValues(this->nrows,this->fglobaldoflist,this->values,INS_VAL);
+	}
+
+}
+/*}}}*/
+void ElementVector::SetValue(IssmDouble scalar){/*{{{*/
+
+	for(int i=0;i<this->nrows;i++)this->values[i]=scalar;
+
+}
+/*}}}*/
+void ElementVector::StaticCondensation(ElementMatrix* Ke,int bsize,int* bindices){/*{{{*/
+	/* 
+	 * | Kii  Kib | | Ui |    |Fi|
+	 * | Kbi  Kbb | | Ub |  = |Fb|
+	 *
+	 * Kii Ui + Kib Ub = Fi
+	 * Kbi Ui + Kbb Ub = Fb
+	 *
+	 * We want to remove Ub from the equation:
+	 *
+	 * Kii Ui + Kib inv(Kbb) (Fb - Kbi Ui) = Fi
+	 *
+	 * which gives:
+	 *
+	 * (Kii - Kib inv(Kbb) Kbi) Ui = Fi - Kib inv(Kbb) Fb
+	 */
+
+	/*Checks in debugging mode*/
+	_assert_(bsize>0 && bsize<this->nrows && this->values && Ke); 
+	_assert_(this->nrows==Ke->nrows);
+
+	/*Intermediaries*/
+	int         counter,i,j,isize;
+	IssmDouble *Fb          = NULL;
+	IssmDouble *Fi          = NULL;
+	IssmDouble *Kib         = NULL;
+	IssmDouble *Kbb         = NULL;
+	IssmDouble *Kbbinv      = NULL;
+	IssmDouble *Ftemp       = NULL;
+	int        *iindices    = NULL;
+	bool        flag;
+
+	/*Get new sizes and indices*/
+	isize    = this->nrows - bsize;
+	iindices = xNew<int>(isize);
+	counter  = 0;
+	for(i=0;i<this->nrows;i++){
+		flag = true;
+		for(j=0;j<bsize;j++){
+			if(i==bindices[j]){
+				flag = false;
+				break;
+			}
+		}
+		if(flag){
+			_assert_(counter<isize);
+			iindices[counter++] = i;
+		}
+	}
+	_assert_(counter == isize);
+
+	/*Get submatrices*/
+	Kib = xNew<IssmDouble>(isize*bsize);
+	Kbb = xNew<IssmDouble>(bsize*bsize);
+	Fb  = xNew<IssmDouble>(bsize);
+	Fi  = xNew<IssmDouble>(isize);
+	for(i=0;i<isize;i++) for(j=0;j<bsize;j++) Kib[i*bsize+j] = Ke->values[iindices[i]*Ke->nrows + bindices[j]];
+	for(i=0;i<bsize;i++) for(j=0;j<bsize;j++) Kbb[i*bsize+j] = Ke->values[bindices[i]*Ke->nrows + bindices[j]];
+	for(i=0;i<bsize;i++) Fb[i] = this->values[bindices[i]];
+	for(i=0;i<isize;i++) Fi[i] = this->values[iindices[i]];
+
+	/*Invert Kbb*/
+	Kbbinv = xNew<IssmDouble>(bsize*bsize);
+	switch(bsize){
+		case 1:
+			Kbbinv[0] = 1./Kbb[0];
+			break;
+		case 2:
+			Matrix2x2Invert(Kbbinv,Kbb);
+			break;
+		case 3:
+			Matrix3x3Invert(Kbbinv,Kbb);
+			break;
+		default:
+			MatrixInverse(Kbbinv,bsize,bsize,NULL,0,NULL);
+			break;
+	}
+
+	/*Calculate  Kib inv(Kbb) Fb*/
+	Ftemp = xNew<IssmDouble>(isize);
+	TripleMultiply(Kib,isize,bsize,0, Kbbinv,bsize,bsize,0, Fb,bsize,1,0, Ftemp,0);
+
+	/*New Pe*/
+	for(i=0;i<isize;i++) Ftemp[i] = Fi[i] - Ftemp[i];
+
+	/*Update matrix values*/
+	for(i=0;i<this->nrows;i++) this->values[i]=0.;
+	for(i=0;i<isize;i++){
+		this->values[iindices[i]] = Ftemp[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(Kib);
+	xDelete<IssmDouble>(Kbb);
+	xDelete<IssmDouble>(Kbbinv);
+	xDelete<IssmDouble>(Fb);
+	xDelete<IssmDouble>(Fi);
+	xDelete<IssmDouble>(Ftemp);
+	xDelete<int>(iindices);
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/matrix/ElementVector.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/matrix/ElementVector.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/matrix/ElementVector.h	(revision 27955)
@@ -0,0 +1,46 @@
+/*!\file:  ElementVector.h
+ * \brief container for information needed to plug element vector generated by elements 
+ * into the pf global load vector. 
+ * This object will hold the element vector on the g-set, the local as well as global 
+ * dof lists in the f set
+ */ 
+
+#ifndef _ELEMENT_VECTOR_H_
+#define _ELEMENT_VECTOR_H_
+
+/*Headers:*/
+#include "../../datastructures/datastructures.h"
+#include "../../toolkits/toolkits.h"
+#include "../../shared/shared.h"
+class Node;
+template <class doubletype> class Vector;
+class Parameters;
+class ElementMatrix;
+
+class ElementVector{
+
+	private:
+		int *gglobaldoflist;
+		int *fglobaldoflist;
+
+	public:
+		int         nrows;
+		IssmDouble *values;
+
+		/*ElementVector constructors, destructors*/
+		ElementVector();
+		ElementVector(ElementVector* pe1,ElementVector* pe2);
+		ElementVector(ElementVector* pe1,ElementVector* pe2,ElementVector* pe3);
+		ElementVector(Node** nodes,int numnodes,Parameters* parameters,int approximation=NoneApproximationEnum);
+		~ElementVector();
+
+		/*ElementVector specific routines*/
+		void AddToGlobal(Vector<IssmDouble>* pf);
+		void CheckConsistency(void);
+		void Echo(void);
+		void Init(ElementVector* pe);
+		void InsertIntoGlobal(Vector<IssmDouble>* pf);
+		void SetValue(IssmDouble scalar);
+		void StaticCondensation(ElementMatrix* Ke,int numindices,int* indices);
+};
+#endif //#ifndef _ELEMENT_VECTOR_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/classes/matrix/matrixobjects.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/classes/matrix/matrixobjects.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/classes/matrix/matrixobjects.h	(revision 27955)
@@ -0,0 +1,12 @@
+/* \file matrixobjects.h
+ * \brief: prototype header for all matrix objects.
+ */
+
+#ifndef ALL_MATRIX_OBJECTS_H_
+#define ALL_MATRIX_OBJECTS_H_
+
+/*Numerics:*/
+#include "./ElementMatrix.h"
+#include "./ElementVector.h"
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/AdjointCorePointerFromSolutionEnum.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/AdjointCorePointerFromSolutionEnum.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/AdjointCorePointerFromSolutionEnum.cpp	(revision 27955)
@@ -0,0 +1,49 @@
+/*!\file:  AdjointCorePointerFromSolutionEnum.cpp
+ * \brief: return type of analyses, number of analyses and core solution function.
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void AdjointCorePointerFromSolutionEnum(void (**padjointcore)(FemModel*),int solutiontype){
+
+	/*output: */
+	void (*adjointcore)(FemModel*)=NULL;
+
+	switch(solutiontype){
+
+		case StressbalanceSolutionEnum:
+			adjointcore=&adjointstressbalance_core;
+			break;
+		case SteadystateSolutionEnum:
+			adjointcore=&adjointstressbalance_core;
+			break;
+		case BalancethicknessSolutionEnum:
+			adjointcore=&adjointbalancethickness_core;
+			break;
+		case Balancethickness2SolutionEnum:
+			adjointcore=&adjointbalancethickness2_core;
+			break;
+		case BalancethicknessSoftSolutionEnum:
+			adjointcore=&dummy_core;
+			break;
+		default:
+			_error_("No adjoint has been implemented for solution " << EnumToStringx(solutiontype) << " yet");
+			break;
+	}
+
+	/*Assign output pointer:*/
+	_assert_(padjointcore);
+	*padjointcore=adjointcore;
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/CorePointerFromSolutionEnum.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/CorePointerFromSolutionEnum.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/CorePointerFromSolutionEnum.cpp	(revision 27955)
@@ -0,0 +1,89 @@
+/*!\file:  CorePointerFromSolutionEnum.cpp
+ * \brief: return type of analyses, number of analyses and core solution function.
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void CorePointerFromSolutionEnum(void (**psolutioncore)(FemModel*),Parameters* parameters,int solutiontype){
+
+	/*output: */
+	void (*solutioncore)(FemModel*)=NULL;
+
+	switch(solutiontype){
+
+		case StressbalanceSolutionEnum:
+			solutioncore=&stressbalance_core;
+			break;
+		case SteadystateSolutionEnum:
+			solutioncore=&steadystate_core;
+			break;
+		case ThermalSolutionEnum:
+			solutioncore=&thermal_core;
+			break;
+		case BalancethicknessSolutionEnum:
+			solutioncore=&balancethickness_core;
+			break;
+		case Balancethickness2SolutionEnum:
+			solutioncore=&balancethickness2_core;
+			break;
+		case BalancethicknessSoftSolutionEnum:
+			solutioncore=&dummy_core;
+			break;
+		case BalancevelocitySolutionEnum:
+			solutioncore=&balancevelocity_core;
+			break;
+		case HydrologySolutionEnum:
+			solutioncore=&hydrology_core;
+			break;
+		case SurfaceSlopeSolutionEnum:
+			solutioncore=&surfaceslope_core;
+			break;
+		case BedSlopeSolutionEnum:
+			solutioncore=&bedslope_core;
+			break;
+		case TransientSolutionEnum:
+			solutioncore=&transient_core;
+			break;
+		case MasstransportSolutionEnum:
+			solutioncore=&masstransport_core;
+			break;
+		case OceantransportSolutionEnum:
+			solutioncore=&oceantransport_core;
+			break;
+		case EsaSolutionEnum:
+			solutioncore=&esa_core;
+			break;
+		case DamageEvolutionSolutionEnum:
+			solutioncore=&damage_core;
+			break;
+		case LoveSolutionEnum:
+			#if _HAVE_LOVE_
+			solutioncore=&love_core;
+			#else
+			_error_("ISSM not compiled with Love capability");
+			#endif
+			break;
+		case SamplingSolutionEnum:
+			solutioncore=&sampling_core;
+			break;
+
+		default:
+			_error_("solution type: " << EnumToStringx(solutiontype) << " not supported yet!");
+			break;
+	}
+
+	/*Assign output pointer:*/
+	_assert_(psolutioncore);
+	*psolutioncore=solutioncore;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/ProcessArguments.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/ProcessArguments.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/ProcessArguments.cpp	(revision 27955)
@@ -0,0 +1,47 @@
+/*!\file:  ProcessArguments.cpp
+ * \brief: process arguments
+ */ 
+
+#include <stdio.h>
+#include <cstring>
+
+#include "../shared/shared.h"
+
+void ProcessArguments(int* solution_type,char** pbinfilename,char** poutbinfilename,char** ptoolkitsfilename,char** plockfilename,char** prestartfilename, char** prootpath, char** pmodelname, int argc,char **argv){
+
+	/*Check input arguments*/
+	if(argc<2) _error_("Usage error: no solution requested");
+	if(argc<3) _error_("Usage error: missing execution directory");
+	if(argc<4) _error_("Usage error: missing model name");
+
+	/*Get some arguments*/
+	*solution_type = StringToEnumx(argv[1]);
+	char* rootpatharg = argv[2];
+	char* modelname   = xNew<char>(strlen(argv[3])+1); 
+	xMemCpy<char>(modelname,argv[3],strlen(argv[3])+1);
+
+	/*Recover myrank and length of string "my_rank" */
+	int my_rank     = IssmComm::GetRank();
+	int rank_length = (my_rank == 0 ? 1 : (int)(log10(static_cast<double>(my_rank))+1)); 
+
+	/*Create rootpath from argument*/
+	char* rootpath = xNew<char>(strlen(rootpatharg)+2); sprintf(rootpath,"%s/",rootpatharg);
+
+	/*Create all file paths*/
+	int   base_length = strlen(rootpath)+strlen(modelname);
+	char* binfilename      = xNew<char>(base_length+strlen(".bin")     +1); sprintf(binfilename,   "%s%s%s",rootpath,modelname,".bin");
+	char* outbinfilename   = xNew<char>(base_length+strlen(".outbin")  +1); sprintf(outbinfilename,"%s%s%s",rootpath,modelname,".outbin");
+	char* toolkitsfilename = xNew<char>(base_length+strlen(".toolkits")+1); sprintf(toolkitsfilename,"%s%s%s",rootpath,modelname,".toolkits");
+	char* lockfilename     = xNew<char>(base_length+strlen(".lock")    +1); sprintf(lockfilename,  "%s%s%s",rootpath,modelname,".lock");
+	char* restartfilename  = xNew<char>(base_length+strlen("_rank")+rank_length+strlen(".rst")+1);
+	sprintf(restartfilename,"%s%s%s%i%s",rootpath,modelname,"_rank",my_rank,".rst");
+
+	/*Clean up and assign output pointer*/
+	*pbinfilename=binfilename;
+	*poutbinfilename=outbinfilename;
+	*ptoolkitsfilename=toolkitsfilename;
+	*plockfilename=lockfilename;
+	*prestartfilename=restartfilename;
+	*prootpath=rootpath;
+	*pmodelname=modelname;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/ResetBoundaryConditions.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/ResetBoundaryConditions.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/ResetBoundaryConditions.cpp	(revision 27955)
@@ -0,0 +1,29 @@
+/*!\file: ResetBoundaryConditions.cpp
+ * \brief: change boundary conditions of a model, using a solution vector from another analysis
+ */ 
+
+#include "../classes/classes.h"
+#include "../modules/modules.h"
+#include "../shared/io/io.h"
+
+void ResetBoundaryConditions(FemModel* femmodel, int analysis_type){
+
+	/*variables: */
+	Vector<IssmDouble>* yg = NULL;
+
+	if(VerboseSolution()) _printf0_("   updating boundary conditions...\n");
+	_assert_(femmodel->analysis_type_list[femmodel->analysis_counter]==analysis_type); 
+
+	/*set current analysis: */
+	femmodel->SetCurrentConfiguration(analysis_type);
+	int index = femmodel->AnalysisIndex(analysis_type);
+
+	/*retrieve boundary conditions from element inputs :*/
+	GetSolutionFromInputsx(&yg,femmodel);
+
+	/*update spcs using this new vector of constraints: */
+	UpdateDynamicConstraintsx(femmodel->constraints,femmodel->nodes,femmodel->parameters,yg);
+
+	/*Free resources:*/
+	delete yg;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/WrapperCorePointerFromSolutionEnum.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/WrapperCorePointerFromSolutionEnum.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/WrapperCorePointerFromSolutionEnum.cpp	(revision 27955)
@@ -0,0 +1,59 @@
+/*!\file:  WrapperCorePointerFromSolutionEnum.cpp
+ * \brief: return type of analyses, number of analyses and core solution function.
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void WrapperCorePointerFromSolutionEnum(void (**psolutioncore)(FemModel*),Parameters* parameters,int solutiontype,bool nodakotacore){
+
+	/*output: */
+	void (*solutioncore)(FemModel*)=NULL;
+
+	/*parameters: */
+	bool control_analysis;
+	bool dakota_analysis;
+	int  inversiontype;
+
+	/* retrieve some parameters that tell us whether wrappers are allowed, or whether we return 
+	 * a pure core. Wrappers can be dakota_core (which samples many solution_cores) or control_core (which 
+	 * carries out adjoint based inversion on a certain core: */
+	parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
+	parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+	parameters->FindParam(&inversiontype,InversionTypeEnum);
+
+	if(nodakotacore)dakota_analysis=false;
+
+	if(dakota_analysis){
+		#ifdef _HAVE_DAKOTA_
+		solutioncore=dakota_core;
+		#else
+		_error_("ISSM was not compiled with dakota support, cannot carry out dakota analysis!");
+		#endif
+	}
+	else if(control_analysis){
+		switch(inversiontype){
+			case 0: solutioncore=control_core; break;
+			case 1: solutioncore=controltao_core; break;
+			case 2: solutioncore=controlm1qn3_core; break;
+			case 3: solutioncore=controlvalidation_core; break;
+			case 4: solutioncore=controladm1qn3_core; break;
+			default: _error_("control type not supported");
+		}
+	}
+	else CorePointerFromSolutionEnum(&solutioncore,parameters,solutiontype);  /*This means we retrieve a core solution that is not a wrapper*/
+
+	/*Assign output pointer:*/
+	_assert_(psolutioncore);
+	*psolutioncore=solutioncore;
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/WrapperPreCorePointerFromSolutionEnum.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/WrapperPreCorePointerFromSolutionEnum.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/WrapperPreCorePointerFromSolutionEnum.cpp	(revision 27955)
@@ -0,0 +1,34 @@
+/*!\file:  WrapperPreCorePointerFromSolutionEnum.cpp
+ * \brief: return solution core that is carried out once only for Dakota runs.
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void WrapperPreCorePointerFromSolutionEnum(void (**psolutioncore)(FemModel*),Parameters* parameters,int solutiontype){
+
+	/*output: */
+	void (*solutioncore)(FemModel*)=NULL;
+
+	switch(solutiontype){
+
+		case TransientSolutionEnum:
+			solutioncore=&transient_precore;
+			break;
+		default:
+			break;
+	}
+
+	/*Assign output pointer:*/
+	*psolutioncore=solutioncore;
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/ad_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/ad_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/ad_core.cpp	(revision 27955)
@@ -0,0 +1,395 @@
+/*!\file ad_core
+ * \brief: compute outputs from the AD mode,  using our dependents and independents, and drivers available in Adolc.
+ */
+
+/*Includes: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <set>
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+/*}}}*/
+
+#ifdef _HAVE_CODIPACK_
+CoDi_global codi_global = {};
+#endif
+void ad_core(FemModel* femmodel){
+
+	/*diverse: */
+	int     i;
+	int     dummy;
+	int     num_dependents=0;
+	int     num_independents=0;
+	bool    isautodiff,iscontrol;
+	char   *driver           = NULL;
+	size_t  tape_stats[15];
+
+	/*state variables: */
+	IssmDouble *axp = NULL;
+	double     *xp  = NULL;
+	int my_rank=IssmComm::GetRank();
+
+	/*AD mode on?: */
+	femmodel->parameters->FindParam(&isautodiff,AutodiffIsautodiffEnum);
+	femmodel->parameters->FindParam(&iscontrol,InversionIscontrolEnum);
+
+	if(isautodiff && !iscontrol){
+
+		#if defined(_HAVE_ADOLC_)
+			if(VerboseAutodiff())_printf0_("   start ad core\n");
+
+			/*First, stop tracing: */
+			trace_off();
+
+			/*Print tape statistics so that user can kill this run if something is off already:*/
+			if(VerboseAutodiff()){ /*{{{*/
+				tapestats(my_rank,tape_stats); //reading of tape statistics
+				int commSize=IssmComm::GetSize();
+				int *sstats=new int[7];
+				sstats[0]=tape_stats[NUM_OPERATIONS];
+				sstats[1]=tape_stats[OP_FILE_ACCESS];
+				sstats[2]=tape_stats[NUM_LOCATIONS];
+				sstats[3]=tape_stats[LOC_FILE_ACCESS];
+				sstats[4]=tape_stats[NUM_VALUES];
+				sstats[5]=tape_stats[VAL_FILE_ACCESS];
+				sstats[6]=tape_stats[TAY_STACK_SIZE];
+				int *rstats=NULL;
+				if (my_rank==0) rstats=new int[commSize*7];
+				ISSM_MPI_Gather(sstats,7,ISSM_MPI_INT,rstats,7,ISSM_MPI_INT,0,IssmComm::GetComm());
+				if (my_rank==0) {
+					int offset=50;
+					int rOffset=(commSize/10)+1;
+					_printf_("   ADOLC statistics: \n");
+					_printf_("     "<<setw(offset)<<left<<"#independents: " <<setw(12)<<right<<tape_stats[NUM_INDEPENDENTS] << "\n");
+					_printf_("     "<<setw(offset)<<left<<"#dependents: " <<setw(12)<<right<<tape_stats[NUM_DEPENDENTS] << "\n");
+					_printf_("     "<<setw(offset)<<left<<"max #live active variables: " <<setw(12)<<right<<tape_stats[NUM_MAX_LIVES] << "\n");
+					_printf_("     operations: entry size "<< sizeof(unsigned char) << " Bytes \n");
+					_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffObufsizeEnum) " <<setw(12)<<right<<tape_stats[OP_BUFFER_SIZE] << "\n");
+					for (int r=0;r<commSize;++r)
+					_printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+0] << (rstats[r*7+1]?" ->file":"") << "\n");
+					_printf_("     locations: entry size " << sizeof(locint) << " Bytes\n");
+					_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffLbufsizeEnum) " <<setw(12)<<right<<tape_stats[LOC_BUFFER_SIZE] << "\n");
+					for (int r=0;r<commSize;++r)
+					_printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+2] << (rstats[r*7+3]?" ->file":"") << "\n");
+					_printf_("     constant values: entry size " << sizeof(double) << " Bytes\n");
+					_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffCbufsizeEnum) " <<setw(12)<<right<<tape_stats[VAL_BUFFER_SIZE] << "\n");
+					for (int r=0;r<commSize;++r)
+					_printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+4] << (rstats[r*7+5]?" ->file":"") << "\n");
+					_printf_("     Taylor stack: entry size " << sizeof(revreal) << " Bytes\n");
+					_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffTbufsizeEnum) " <<setw(12)<<right<<tape_stats[TAY_BUFFER_SIZE] << "\n");
+					for (int r=0;r<commSize;++r)
+					_printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+6] << (rstats[r*7+6]>tape_stats[TAY_BUFFER_SIZE]?" ->file":"") << "\n");
+					delete []rstats;
+				}
+				delete [] sstats;
+			} /*}}}*/
+
+			/*retrieve parameters: */
+			femmodel->parameters->FindParam(&num_dependents,AutodiffNumDependentsEnum);
+			femmodel->parameters->FindParam(&num_independents,AutodiffNumIndependentsEnum);
+
+			/*if no dependents, no point in running a driver: */
+			if(!(num_dependents*num_independents)) return;
+
+			/*for adolc to run in parallel, we 0 out on rank~=0:*/
+			if (my_rank!=0){
+				num_dependents=0; num_independents=0;
+			}
+
+			/*retrieve state variable: */
+			femmodel->parameters->FindParam(&axp,&dummy,AutodiffXpEnum);
+
+			/* driver argument */
+			xp=xNew<double>(num_independents);
+			for(i=0;i<num_independents;i++){
+				xp[i]=reCast<double,IssmDouble>(axp[i]);
+			}
+
+			/*get the EDF pointer:*/
+			ext_diff_fct *anEDF_for_solverx_p=xDynamicCast<GenericParam<Adolc_edf> * >(femmodel->parameters->FindParamObject(AdolcParamEnum))->GetParameterValue().myEDF_for_solverx_p;
+
+			/*Branch according to AD driver: */
+			femmodel->parameters->FindParam(&driver,AutodiffDriverEnum);
+
+			if (strcmp(driver,"fos_forward")==0){ /*{{{*/
+
+				int     anIndepIndex;
+				double *tangentDir         = NULL;
+				double *jacTimesTangentDir = NULL;
+				double *theOutput          = NULL;
+
+				/*retrieve direction index: */
+				femmodel->parameters->FindParam(&anIndepIndex,AutodiffFosForwardIndexEnum);
+
+				if (anIndepIndex<0 || anIndepIndex>=num_independents) _error_("index value for AutodiffFosForwardIndexEnum should be in [0,num_independents-1]");
+
+				tangentDir=xNewZeroInit<double>(num_independents);
+				tangentDir[anIndepIndex]=1.0;
+
+				jacTimesTangentDir=xNew<double>(num_dependents);
+				theOutput=xNew<double>(num_dependents);
+
+				/*set the forward method function pointer: */
+#ifdef _HAVE_GSL_
+				anEDF_for_solverx_p->fos_forward=EDF_fos_forward_for_solverx;
+#endif
+
+				/*call driver: */
+				fos_forward(my_rank,num_dependents,num_independents, 0, xp, tangentDir, theOutput, jacTimesTangentDir );
+
+				/*add to results*/
+				femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,jacTimesTangentDir,num_dependents,1,0,0.0));
+
+				/*free resources :*/
+				xDelete(theOutput);
+				xDelete(jacTimesTangentDir);
+				xDelete(tangentDir);
+			} /*}}}*/
+			else if ((strcmp(driver,"fov_forward")==0) || (strcmp(driver,"fov_forward_all")==0)){ /*{{{*/
+
+				int      tangentDirNum;
+				int      dummy;
+				int     *indepIndices  = NULL;
+				double **jacTimesSeed  = NULL;
+				double **seed          = NULL;
+				double  *theOutput     = NULL;
+				std::set<unsigned int> anIndexSet;
+
+				/*retrieve directions:*/
+				if (strcmp(driver,"fov_forward_all")==0){
+					tangentDirNum=num_independents;
+					indepIndices=xNewZeroInit<int>(tangentDirNum);
+					for(i=0;i<num_independents;i++)indepIndices[i]=1;
+				}
+				else{
+					femmodel->parameters->FindParam(&indepIndices,&tangentDirNum,&dummy,AutodiffFovForwardIndicesEnum);
+				}
+
+				/*Some checks: */
+				if (tangentDirNum<1 || tangentDirNum>num_independents) _error_("tangentDirNum should be in [1,num_independents]");
+
+				/* full Jacobian or Jacobian projection:*/
+				jacTimesSeed=xNew<double>(num_dependents,tangentDirNum);
+
+				/*set the forward method function pointers: */
+#ifdef _HAVE_GSL_
+				anEDF_for_solverx_p->fov_forward=EDF_fov_forward_for_solverx;
+#endif
+				// anEDF_for_solverx_p->fov_reverse=EDF_fov_reverse_for_solverx;
+
+				/*seed matrix: */
+				seed=xNewZeroInit<double>(num_independents,tangentDirNum);
+
+				/*collect indices in a set to prevent accidental duplicates as long as we don't do compression:*/
+				for (int i=0; i<tangentDirNum; ++i) {
+					/* make sure the index is in range*/
+					if (indepIndices[i]>num_independents) {
+						_error_("indepIndices values must be in [0,num_independents-1]");
+					}
+					if (anIndexSet.find(indepIndices[i])!=anIndexSet.end()) {
+						_error_("duplicate indepIndices values are not allowed until we implement Jacobian decompression");
+					}
+					anIndexSet.insert(indepIndices[i]);
+					/* now populate the seed matrix from the set of independent indices;
+					 * simple setup with a single 1.0 per column and at most a single 1.0 per row*/
+					seed[indepIndices[i]][i]=1.0;
+				}
+
+				/*allocate output: */
+				theOutput=xNew<double>(num_dependents);
+
+				/*call driver: */
+				fov_forward(my_rank,num_dependents,num_independents, tangentDirNum, xp, seed, theOutput, jacTimesSeed );
+				/*Free resources: */
+				xDelete(theOutput);
+				xDelete(indepIndices);
+				xDelete(seed);
+
+				/*add to results: */
+				femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,*jacTimesSeed,num_dependents*tangentDirNum,1,0,0.0));
+
+				/*Free resources: */
+				xDelete(jacTimesSeed);
+				xDelete(indepIndices);
+			} /*}}}*/
+			else if (strcmp(driver,"fos_reverse")==0) { /*{{{*/
+
+				int     aDepIndex=0;
+				double *aWeightVector=NULL;
+				double *weightVectorTimesJac=NULL;
+
+				/*retrieve direction index: */
+				femmodel->parameters->FindParam(&aDepIndex,AutodiffFosReverseIndexEnum);
+				aWeightVector=xNewZeroInit<double>(num_dependents);
+				if (my_rank==0) {
+					if (aDepIndex<0 || aDepIndex>=num_dependents) _error_("index value for AutodiffFosReverseIndexEnum should be in [0,num_dependents-1]");
+					aWeightVector[aDepIndex]=1.0;
+				}
+				weightVectorTimesJac=xNew<double>(num_independents);
+
+				/*set the forward method function pointer: */
+#ifdef _HAVE_GSL_
+				anEDF_for_solverx_p->fos_reverse=EDF_fos_reverse_for_solverx;
+#endif
+#ifdef _HAVE_MUMPS_
+				anEDF_for_solverx_p->fos_reverse_iArr=fos_reverse_mumpsSolveEDF;
+#endif
+
+				/*call driver: */
+				fos_reverse(my_rank,num_dependents,num_independents, aWeightVector, weightVectorTimesJac );
+
+				/*add to results*/
+				femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,weightVectorTimesJac,num_independents,1,0,0.0));
+
+				/*free resources :*/
+				xDelete(weightVectorTimesJac);
+				xDelete(aWeightVector);
+			} /*}}}*/
+			else if ((strcmp(driver,"fov_reverse")==0) || (strcmp(driver,"fov_reverse_all")==0)){ /*{{{*/
+
+				int* depIndices=NULL;
+				int weightNum;
+				int dummy;
+				double **weightsTimesJac=NULL;
+				double **weights=NULL;
+				std::set<unsigned int> anIndexSet;
+
+				/*retrieve directions:*/
+				if (strcmp(driver,"fov_reverse_all")==0){
+					weightNum=num_dependents;
+					depIndices=xNewZeroInit<int>(weightNum);
+					for(i=0;i<num_dependents;i++)depIndices[i]=1;
+				}
+				else{
+					femmodel->parameters->FindParam(&depIndices,&weightNum,&dummy,AutodiffFovForwardIndicesEnum);
+				}
+
+				/*Some checks: */
+				if (weightNum<1 || weightNum>num_dependents) _error_("tangentDirNum should be in [1,num_dependents]");
+
+				/* full Jacobian or Jacobian projection:*/
+				weightsTimesJac=xNew<double>(weightNum,num_independents);
+
+				/*set the forward method function pointers: */
+				#ifdef _HAVE_GSL_
+				anEDF_for_solverx_p->fov_reverse=EDF_fov_reverse_for_solverx;
+				#endif
+
+				/*seed matrix: */
+				weights=xNewZeroInit<double>(weightNum,num_dependents);
+
+				/*collect indices in a set to prevent accidental duplicates as long as we don't do compression:*/
+				for (int i=0; i<weightNum; ++i) {
+					/* make sure the index is in range*/
+					if (depIndices[i]>num_dependents) {
+						_error_("depIndices values must be in [0,num_dependents-1]");
+					}
+					if (anIndexSet.find(depIndices[i])!=anIndexSet.end()) {
+						_error_("duplicate depIndices values are not allowed until we implement Jacobian decompression");
+					}
+					anIndexSet.insert(depIndices[i]);
+					/* now populate the seed matrix from the set of independent indices;
+					 * simple setup with a single 1.0 per column and at most a single 1.0 per row*/
+					weights[depIndices[i]][i]=1.0;
+				}
+
+				/*call driver: */
+				fov_reverse(my_rank,num_dependents,num_independents, weightNum, weights, weightsTimesJac );
+
+				/*add to results: */
+				femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,*weightsTimesJac,weightNum*num_independents,1,0,0.0));
+
+				/*Free resources: */
+				xDelete(weights);
+				xDelete(weightsTimesJac);
+				xDelete(depIndices);
+			} /*}}}*/
+			else _error_("driver: " << driver << " not yet supported!");
+
+			if(VerboseAutodiff())_printf0_("   end AD core\n");
+
+			/*Free resources: */
+			xDelete(xp);
+			xDelete(axp); 
+			xDelete(driver);
+
+			#elif defined(_HAVE_CODIPACK_)
+			if(VerboseAutodiff())_printf0_("   start CoDiPack ad core\n");
+
+			/*First, stop tracing: */
+			#if _CODIPACK_MAJOR_==2
+			auto& tape_codi = IssmDouble::getTape();
+			#elif _CODIPACK_MAJOR_==1
+			auto& tape_codi = IssmDouble::getGlobalTape();
+			#else
+			#error "_CODIPACK_MAJOR_ not supported"
+			#endif
+
+			tape_codi.setPassive();
+
+			if(VerboseAutodiff()){ /*{{{*/
+				if(my_rank == 0) {
+					// FIXME codi "just because" for now
+					tape_codi.printStatistics(std::cout);
+					codi_global.print(std::cout);
+				}
+			}
+
+			/*retrieve parameters: */
+			femmodel->parameters->FindParam(&num_dependents,AutodiffNumDependentsEnum);
+			femmodel->parameters->FindParam(&num_independents,AutodiffNumIndependentsEnum);
+
+			/*if no dependents, no point in running a driver: */
+			if(!(num_dependents*num_independents)) return;
+
+			/*Branch according to AD driver: */
+			femmodel->parameters->FindParam(&driver,AutodiffDriverEnum);
+			if(VerboseAutodiff())_printf0_("   driver: " << driver << "\n");
+
+			if (strcmp(driver,"fos_reverse")==0) { /*{{{*/
+				if(VerboseAutodiff())_printf0_("   CoDiPack fos_reverse\n");
+				int     aDepIndex=0;
+				double *weightVectorTimesJac=NULL;
+
+				/*retrieve direction index: */
+				femmodel->parameters->FindParam(&aDepIndex,AutodiffFosReverseIndexEnum);
+				if (my_rank==0) {
+					if (aDepIndex<0 || aDepIndex>=num_dependents
+							|| codi_global.output_indices.size() <= aDepIndex){
+						_error_("index value for AutodiffFosReverseIndexEnum should be in [0,num_dependents-1]");
+					}
+					tape_codi.setGradient(codi_global.output_indices[aDepIndex], 1.0);
+				}
+
+				tape_codi.evaluate();
+
+				weightVectorTimesJac=xNew<double>(num_independents);
+				/*call driver: */
+				auto in_size = codi_global.input_indices.size();
+				for(size_t i = 0; i < in_size; ++i) {
+					weightVectorTimesJac[i] = tape_codi.getGradient(codi_global.input_indices[i]);
+				}
+
+				/*add to results*/
+				femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,weightVectorTimesJac,num_independents,1,0,0.0));
+
+				/*free resources :*/
+				xDelete(weightVectorTimesJac);
+			} /*}}}*/
+			else _error_("driver: " << driver << " not yet supported!");
+
+			if(VerboseAutodiff())_printf0_("   end CoDiPack ad core\n");
+			xDelete(driver);
+		#else
+			_error_("Should not be requesting AD drivers when an AD library is not available!");
+		#endif
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/adgradient_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/adgradient_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/adgradient_core.cpp	(revision 27955)
@@ -0,0 +1,191 @@
+/*!\file adgradient_core
+ * \brief: compute gradient for all scalar depenendents, then sum them up as output. This relies mainly on the fos_reverse 
+ * driver, hence the incapacity to merge this with ad_core.cpp.
+ */
+
+/*Includes: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <set>
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+/*}}}*/
+
+void adgradient_core(FemModel* femmodel){
+
+	/*diverse: */
+	int     i;
+	int     dummy;
+	int     num_dependents=0;
+	int     num_dependents_old=0;
+	int     num_independents=0;
+	bool    isautodiff       = false;
+	int     aDepIndex=0;
+	int     my_rank=IssmComm::GetRank();
+
+	/*state variables: */
+	IssmDouble *axp = NULL;
+	IssmPDouble     *xp  = NULL;
+
+	/*intermediary: */
+	IssmPDouble *aWeightVector=NULL;
+	IssmPDouble *weightVectorTimesJac=NULL;
+
+	/*output: */
+	IssmPDouble *totalgradient=NULL;
+
+	/*AD mode on?: */
+	femmodel->parameters->FindParam(&isautodiff,AutodiffIsautodiffEnum);
+
+	if(isautodiff){
+
+		#if defined(_HAVE_ADOLC_)
+			if(VerboseAutodiff())_printf0_("   start ad core\n"); 
+
+			/*First, stop tracing: */
+			trace_off();
+
+			if(VerboseAutodiff()){ /*{{{*/
+				size_t  tape_stats[15];
+				tapestats(my_rank,tape_stats); //reading of tape statistics
+				int commSize=IssmComm::GetSize();
+				int *sstats=new int[7];
+				sstats[0]=tape_stats[NUM_OPERATIONS];
+				sstats[1]=tape_stats[OP_FILE_ACCESS];
+				sstats[2]=tape_stats[NUM_LOCATIONS];
+				sstats[3]=tape_stats[LOC_FILE_ACCESS];
+				sstats[4]=tape_stats[NUM_VALUES];
+				sstats[5]=tape_stats[VAL_FILE_ACCESS];
+				sstats[6]=tape_stats[TAY_STACK_SIZE];
+				int *rstats=NULL;
+				if (my_rank==0) rstats=new int[commSize*7];
+				ISSM_MPI_Gather(sstats,7,ISSM_MPI_INT,rstats,7,ISSM_MPI_INT,0,IssmComm::GetComm());
+				if (my_rank==0) {
+					int offset=50;
+					int rOffset=(commSize/10)+1;
+					_printf_("   ADOLC statistics: \n");
+					_printf_("     "<<setw(offset)<<left<<"#independents: " <<setw(12)<<right<<tape_stats[NUM_INDEPENDENTS] << "\n");
+					_printf_("     "<<setw(offset)<<left<<"#dependents: " <<setw(12)<<right<<tape_stats[NUM_DEPENDENTS] << "\n");
+					_printf_("     "<<setw(offset)<<left<<"max #live active variables: " <<setw(12)<<right<<tape_stats[NUM_MAX_LIVES] << "\n");
+					_printf_("     operations: entry size "<< sizeof(unsigned char) << " Bytes \n");
+					_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffObufsizeEnum) " <<setw(12)<<right<<tape_stats[OP_BUFFER_SIZE] << "\n");
+					for (int r=0;r<commSize;++r)
+					_printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+0] << (rstats[r*7+1]?" ->file":"") << "\n");
+					_printf_("     locations: entry size " << sizeof(locint) << " Bytes\n");
+					_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffLbufsizeEnum) " <<setw(12)<<right<<tape_stats[LOC_BUFFER_SIZE] << "\n");
+					for (int r=0;r<commSize;++r)
+					_printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+2] << (rstats[r*7+3]?" ->file":"") << "\n");
+					_printf_("     constant values: entry size " << sizeof(double) << " Bytes\n");
+					_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffCbufsizeEnum) " <<setw(12)<<right<<tape_stats[VAL_BUFFER_SIZE] << "\n");
+					for (int r=0;r<commSize;++r)
+					_printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+4] << (rstats[r*7+5]?" ->file":"") << "\n");
+					_printf_("     Taylor stack: entry size " << sizeof(revreal) << " Bytes\n");
+					_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffTbufsizeEnum) " <<setw(12)<<right<<tape_stats[TAY_BUFFER_SIZE] << "\n");
+					for (int r=0;r<commSize;++r)
+					_printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+6] << (rstats[r*7+6]>tape_stats[TAY_BUFFER_SIZE]?" ->file":"") << "\n");
+					delete []rstats;
+			}
+			delete [] sstats;
+		} /*}}}*/
+
+			/*retrieve parameters: */
+			femmodel->parameters->FindParam(&num_dependents,AutodiffNumDependentsEnum);
+			femmodel->parameters->FindParam(&num_independents,AutodiffNumIndependentsEnum);
+
+			/*if no dependents, no point in running a driver: */
+			if(!(num_dependents*num_independents)) return;
+
+			/*for adolc to run in parallel, we 0 out on rank~=0. But we still keep track of num_dependents:*/
+			num_dependents_old=num_dependents;
+			if (my_rank!=0){
+				num_dependents=0; num_independents=0;
+			}
+
+			/*retrieve state variable: */
+			femmodel->parameters->FindParam(&axp,&dummy,AutodiffXpEnum);
+
+			/* driver argument */
+			xp=xNew<double>(num_independents);
+			for(i=0;i<num_independents;i++){
+				xp[i]=reCast<double,IssmDouble>(axp[i]);
+			}
+
+			/*get the EDF pointer:*/
+			ext_diff_fct *anEDF_for_solverx_p=xDynamicCast<GenericParam<Adolc_edf> * >(femmodel->parameters->FindParamObject(AdolcParamEnum))->GetParameterValue().myEDF_for_solverx_p;
+
+			/* these are always needed regardless of the interpreter */
+			anEDF_for_solverx_p->dp_x=xNew<double>(anEDF_for_solverx_p->max_n);
+			anEDF_for_solverx_p->dp_y=xNew<double>(anEDF_for_solverx_p->max_m);
+
+			/* Ok, now we are going to call the fos_reverse in a loop on the index, from 0 to num_dependents, so 
+			 * as to generate num_dependents gradients: */
+
+			/*Initialize outputs: */
+			totalgradient=xNewZeroInit<IssmPDouble>(num_independents);
+
+			for(aDepIndex=0;aDepIndex<num_dependents_old;aDepIndex++){
+
+				/*initialize direction index in the weights vector: */
+				aWeightVector=xNewZeroInit<IssmPDouble>(num_dependents);
+				if (my_rank==0) aWeightVector[aDepIndex]=1.0;
+
+				/*initialize output gradient: */
+				weightVectorTimesJac=xNew<IssmPDouble>(num_independents);
+
+				/*set the forward method function pointer: */
+				#ifdef _HAVE_GSL_
+				anEDF_for_solverx_p->fos_reverse=EDF_fos_reverse_for_solverx;
+				#endif
+				#ifdef _HAVE_MUMPS_
+				anEDF_for_solverx_p->fos_reverse_iArr=fos_reverse_mumpsSolveEDF;
+				#endif
+
+				anEDF_for_solverx_p->dp_U=xNew<IssmPDouble>(anEDF_for_solverx_p->max_m);
+				anEDF_for_solverx_p->dp_Z=xNew<IssmPDouble>(anEDF_for_solverx_p->max_n);
+
+				/*call driver: */
+				fos_reverse(my_rank,num_dependents,num_independents, aWeightVector, weightVectorTimesJac );
+
+				/*Add to totalgradient: */
+				if(my_rank==0)for(i=0;i<num_independents;i++)totalgradient[i]+=weightVectorTimesJac[i];
+
+				/*free resources :*/
+				xDelete(weightVectorTimesJac);
+				xDelete(aWeightVector);
+			}
+
+			/*add totalgradient to results*/
+			femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,totalgradient,num_independents,1,1,0.0));
+
+			if(VerboseAutodiff())_printf0_("   end ad core\n");
+
+			/* delete the allocated space for the parameters and Free resources:{{{*/
+			xDelete(anEDF_for_solverx_p->dp_x);
+			xDelete(anEDF_for_solverx_p->dp_X);
+			xDelete(anEDF_for_solverx_p->dpp_X);
+			xDelete(anEDF_for_solverx_p->dp_y);
+			xDelete(anEDF_for_solverx_p->dp_Y);
+			xDelete(anEDF_for_solverx_p->dpp_Y);
+			xDelete(anEDF_for_solverx_p->dp_U);
+			xDelete(anEDF_for_solverx_p->dpp_U);
+			xDelete(anEDF_for_solverx_p->dp_Z);
+			xDelete(anEDF_for_solverx_p->dpp_Z);
+			xDelete(xp);
+			xDelete(totalgradient);
+			xDelete(axp); /*}}}*/
+
+		#elif defined(_HAVE_CODIPACK_)
+			fprintf(stderr, "*** Codipack adgradient_core()\n");
+		#else
+			_error_("Should not be requesting AD drivers when an AD library is not available!");
+		#endif
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/adjointbalancethickness2_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/adjointbalancethickness2_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/adjointbalancethickness2_core.cpp	(revision 27955)
@@ -0,0 +1,38 @@
+/*!\file:  adjointbalancethickness2_core.cpp
+ * \brief compute inverse method adjoint state
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void adjointbalancethickness2_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool save_results;
+
+	/*retrieve parameters:*/
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+
+	/*compute thickness2 */
+	if(VerboseSolution()) _printf0_("   computing thickness2\n");
+	femmodel->SetCurrentConfiguration(Balancethickness2AnalysisEnum);
+	solutionsequence_linear(femmodel);
+
+	/*Call SurfaceAreax, because some it might be needed by PVector*/
+	//SurfaceAreax(NULL,femmodel);
+
+	/*compute adjoint*/
+	if(VerboseSolution()) _printf0_("   computing adjoint\n");
+	femmodel->SetCurrentConfiguration(Balancethickness2AnalysisEnum,AdjointBalancethickness2AnalysisEnum);
+	solutionsequence_adjoint_linear(femmodel);
+
+	/*Save results*/
+	if(save_results || true){
+		int outputs[1] = {AdjointEnum};
+		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],1);
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/adjointbalancethickness_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/adjointbalancethickness_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/adjointbalancethickness_core.cpp	(revision 27955)
@@ -0,0 +1,38 @@
+/*!\file:  adjointbalancethickness_core.cpp
+ * \brief compute inverse method adjoint state
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void adjointbalancethickness_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool save_results;
+
+	/*retrieve parameters:*/
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+
+	/*compute thickness */
+	if(VerboseSolution()) _printf0_("   computing thickness\n");
+	femmodel->SetCurrentConfiguration(BalancethicknessAnalysisEnum);
+	solutionsequence_linear(femmodel);
+
+	/*Call SurfaceAreax, because some it might be needed by PVector*/
+	SurfaceAreax(NULL,femmodel);
+
+	/*compute adjoint*/
+	if(VerboseSolution()) _printf0_("   computing adjoint\n");
+	femmodel->SetCurrentConfiguration(BalancethicknessAnalysisEnum,AdjointBalancethicknessAnalysisEnum);
+	solutionsequence_adjoint_linear(femmodel);
+
+	/*Save results*/
+	if(save_results){
+		int outputs[1] = {AdjointEnum};
+		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],1);
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/adjointstressbalance_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/adjointstressbalance_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/adjointstressbalance_core.cpp	(revision 27955)
@@ -0,0 +1,83 @@
+/*!\file:  adjointstressbalance_core.cpp
+ * \brief compute inverse method adjoint state
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void adjointstressbalance_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool isFS,isSSA,isHO;
+	bool save_results;
+	bool conserve_loads   = true;
+	int fe_FS;
+
+	/*retrieve parameters:*/
+	femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
+	femmodel->parameters->FindParam(&isSSA,FlowequationIsSSAEnum);
+	femmodel->parameters->FindParam(&isHO,FlowequationIsHOEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&fe_FS,FlowequationFeFSEnum);
+
+	/*Compute velocities*/
+	if(VerboseSolution()) _printf0_("   computing velocities\n");
+	femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+
+	bool is_schur_cg_solver = false;
+	#ifdef _HAVE_PETSC_
+	int solver_type;
+	PetscOptionsDetermineSolverType(&solver_type);
+
+	if(solver_type==FSSolverEnum) is_schur_cg_solver = true;
+	#endif
+
+	if(isFS){
+		if (fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum)
+		 solutionsequence_la(femmodel);
+		else if(is_schur_cg_solver)
+		 solutionsequence_schurcg(femmodel);
+		else
+		 solutionsequence_nonlinear(femmodel,conserve_loads); 
+	}
+	else{
+		solutionsequence_nonlinear(femmodel,conserve_loads); 
+	}
+
+	/*Call SurfaceAreax, because some it might be needed by PVector*/
+	SurfaceAreax(NULL,femmodel);
+
+	/*Compute adjoint*/
+	if(VerboseSolution()) _printf0_("   computing adjoint\n");
+	femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum,AdjointHorizAnalysisEnum);
+	solutionsequence_adjoint_linear(femmodel);
+
+	/*Save results*/
+	if(save_results || true){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		if(isFS){
+			if(fe_FS==LATaylorHoodEnum || fe_FS==LACrouzeixRaviartEnum){
+				int outputs[2] = {AdjointxEnum,AdjointyEnum};
+				femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
+			}
+			else{
+				if(!isSSA && !isHO){
+					int outputs[3] = {AdjointxEnum,AdjointyEnum,AdjointpEnum};
+					femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3);
+				}
+				else{
+					int outputs[2] = {AdjointxEnum,AdjointyEnum};
+					femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
+				}
+			}
+		}
+		else{
+			int outputs[2] = {AdjointxEnum,AdjointyEnum};
+			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
+		}
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/balancethickness2_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/balancethickness2_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/balancethickness2_core.cpp	(revision 27955)
@@ -0,0 +1,40 @@
+/*!\file: balancethickness_core.cpp
+ * \brief: core of the balancethickness solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void balancethickness2_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool save_results;
+	//IssmDouble  l = 3.;
+
+	/*recover parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+
+	//if(VerboseSolution()) _printf0_("computing smooth surface slopes:\n");
+	//femmodel->parameters->SetParam(l,SmoothThicknessMultiplierEnum);
+	//femmodel->SetCurrentConfiguration(SmoothAnalysisEnum);
+	//femmodel->parameters->SetParam(SurfaceSlopeXEnum,InputToSmoothEnum);
+	//solutionsequence_linear(femmodel);
+	//femmodel->parameters->SetParam(SurfaceSlopeYEnum,InputToSmoothEnum);
+	//solutionsequence_linear(femmodel);
+	//surfaceslope_core(femmodel);
+
+	femmodel->SetCurrentConfiguration(Balancethickness2AnalysisEnum);
+	solutionsequence_linear(femmodel);
+	//solutionsequence_nonlinear(femmodel,false);
+
+	if(save_results){
+		const int numoutputs = 1;
+		int outputs[numoutputs] = {ThicknessEnum};
+		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],numoutputs);
+	}
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/balancethickness_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/balancethickness_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/balancethickness_core.cpp	(revision 27955)
@@ -0,0 +1,41 @@
+/*!\file: balancethickness_core.cpp
+ * \brief: core of the balancethickness solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void balancethickness_core(FemModel* femmodel){
+
+	/*recover parameters: */
+	bool save_results;
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+
+	/*Depth average velocities if necessary*/
+	int domaintype;
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype!=Domain2DhorizontalEnum){
+		femmodel->parameters->SetParam(VxEnum,InputToDepthaverageInEnum);
+		femmodel->parameters->SetParam(VxAverageEnum,InputToDepthaverageOutEnum);
+		depthaverage_core(femmodel);
+		if(domaintype==Domain3DEnum){
+			femmodel->parameters->SetParam(VyEnum,InputToDepthaverageInEnum);
+			femmodel->parameters->SetParam(VyAverageEnum,InputToDepthaverageOutEnum);
+			depthaverage_core(femmodel);
+		}
+	}
+
+	if(VerboseSolution()) _printf0_("   call computational core:\n");
+	femmodel->SetCurrentConfiguration(BalancethicknessAnalysisEnum);
+	solutionsequence_linear(femmodel);
+
+	if(save_results){
+		int outputs = ThicknessEnum;
+		femmodel->RequestedOutputsx(&femmodel->results,&outputs,1);
+	}
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/balancevelocity_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/balancevelocity_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/balancevelocity_core.cpp	(revision 27955)
@@ -0,0 +1,38 @@
+/*!\file: balancevelocity_core.cpp
+ * \brief: core of the balancevelocity solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void balancevelocity_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool        save_results;
+	IssmDouble  l = 8.;
+
+	/*recover parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+
+	if(VerboseSolution()) _printf0_("computing smooth driving stress:\n");
+	femmodel->parameters->SetParam(l,SmoothThicknessMultiplierEnum);
+	femmodel->SetCurrentConfiguration(SmoothAnalysisEnum);
+	femmodel->parameters->SetParam(DrivingStressXEnum,InputToSmoothEnum);
+	solutionsequence_linear(femmodel);
+	femmodel->parameters->SetParam(DrivingStressYEnum,InputToSmoothEnum);
+	solutionsequence_linear(femmodel);
+
+	if(VerboseSolution()) _printf0_("   call computational core:\n");
+	femmodel->SetCurrentConfiguration(BalancevelocityAnalysisEnum);
+	solutionsequence_linear(femmodel);
+
+	if(save_results){
+		int outputs[3] = {DrivingStressXEnum,DrivingStressYEnum,VelEnum};
+		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3);
+	}
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/bedslope_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/bedslope_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/bedslope_core.cpp	(revision 27955)
@@ -0,0 +1,46 @@
+/*!\file: bedslope_core.cpp
+ * \brief: core of the slope solution
+ */
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void bedslope_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool save_results;
+	int  domaintype;
+
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+
+	if(VerboseSolution()) _printf0_("   computing slope\n");
+
+	/*Call on core computations: */
+	femmodel->SetCurrentConfiguration(L2ProjectionBaseAnalysisEnum);
+
+	femmodel->parameters->SetParam(BedSlopeXEnum,InputToL2ProjectEnum);
+	solutionsequence_linear(femmodel);
+
+	if(domaintype!=Domain2DverticalEnum){
+		femmodel->parameters->SetParam(BedSlopeYEnum,InputToL2ProjectEnum);
+		solutionsequence_linear(femmodel);
+	}
+
+	if(save_results){
+		if(domaintype!=Domain2DverticalEnum){
+			int outputs[2] = {BedSlopeXEnum,BedSlopeYEnum};
+			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
+		}
+		else{
+			int outputs[1] = {BedSlopeXEnum};
+			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],1);
+		}
+	}
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/bmb_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/bmb_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/bmb_core.cpp	(revision 27955)
@@ -0,0 +1,43 @@
+/*!\file: bmb_core.cpp
+ * \brief: core of the bmb (Basal mass balance) solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void bmb_core(FemModel* femmodel){
+
+	/*First, get BMB model from parameters*/
+	int  basalforcing_model;
+	bool isplume = false;
+	femmodel->parameters->FindParam(&basalforcing_model,BasalforcingsEnum);
+
+	if(VerboseSolution()) _printf0_("   computing basal mass balance\n");
+
+	/*In some cases we need to run additional analyses to get the required input data*/
+	if(basalforcing_model==BasalforcingsPicoEnum){
+		femmodel->parameters->FindParam(&isplume,BasalforcingsPicoIsplumeEnum);
+		if(isplume){
+			femmodel->SetCurrentConfiguration(L2ProjectionBaseAnalysisEnum);
+			femmodel->parameters->SetParam(BaseSlopeXEnum,InputToL2ProjectEnum);
+			solutionsequence_linear(femmodel);
+			femmodel->parameters->SetParam(BaseSlopeYEnum,InputToL2ProjectEnum);
+			solutionsequence_linear(femmodel);
+			femmodel->SetCurrentConfiguration(GLheightadvectionAnalysisEnum);
+			solutionsequence_linear(femmodel);
+		}
+	}
+
+	/*Call module now*/
+	FloatingiceMeltingRatex(femmodel);
+
+	/*Extrude basal melt if not default melting rate (which may be a transient input that can't be extruded)*/
+	if(basalforcing_model!=FloatingMeltRateEnum){
+		femmodel->parameters->SetParam(BasalforcingsFloatingiceMeltingRateEnum,InputToExtrudeEnum);
+		extrudefrombase_core(femmodel);
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/control_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/control_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/control_core.cpp	(revision 27955)
@@ -0,0 +1,277 @@
+/*!\file: control_core.cpp
+ * \brief: core of the control solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+/*Local prototypes*/
+/*{{{*/
+IssmDouble FormFunction(IssmDouble* X,void* usr);
+IssmDouble FormFunctionGradient(IssmDouble** pG,IssmDouble* X,void* usr);
+typedef struct {
+	FemModel* femmodel;
+	int       nsize;
+} AppCtx;
+/*}}}*/
+
+void control_core(FemModel* femmodel){/*{{{*/
+
+	/*parameters: */
+	int         num_controls,nsize,nsteps;
+	int         solution_type;
+	bool        isFS,dakota_analysis;
+	int        *control_type  = NULL;
+	int        *maxiter       = NULL;
+	IssmDouble *cm_jump       = NULL;
+	IssmDouble *J             = NULL;
+
+	/*Solution and Adjoint core pointer*/
+	void (*solutioncore)(FemModel*) = NULL;
+	void (*adjointcore)(FemModel*)  = NULL;
+
+	/*Recover parameters used throughout the solution*/
+	femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	femmodel->parameters->FindParam(&control_type,NULL,InversionControlParametersEnum);
+	femmodel->parameters->FindParam(&nsteps,InversionNstepsEnum);
+	femmodel->parameters->FindParam(&maxiter,NULL,InversionMaxiterPerStepEnum);
+	femmodel->parameters->FindParam(&cm_jump,NULL,InversionStepThresholdEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
+	femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
+	femmodel->parameters->SetParam(false,SaveResultsEnum);
+
+	/*out of solution_type, figure out solution core and adjoint function pointer*/
+	CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
+	AdjointCorePointerFromSolutionEnum(&adjointcore,solution_type);
+
+	/*Launch once a complete solution to set up all inputs*/
+	if(VerboseControl()) _printf0_("   preparing initial solution\n");
+	if(isFS) solutioncore(femmodel);
+
+	/*Get initial guess*/
+	Vector<IssmDouble> *Xpetsc = NULL;
+	GetVectorFromControlInputsx(&Xpetsc,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"value");
+	IssmDouble* X0 = Xpetsc->ToMPISerial();
+	Xpetsc->GetSize(&nsize);
+	delete Xpetsc;
+
+	/*Initialize some of the BrentSearch arguments: */
+	OptPars optpars;
+	optpars.xmin    = 0; 
+	optpars.xmax    = 1;
+	optpars.nsteps  = nsteps;
+	optpars.nsize   = nsize;
+	optpars.maxiter = maxiter;
+	optpars.cm_jump = cm_jump;
+
+	/*Initialize function argument*/
+	AppCtx usr;
+	usr.femmodel = femmodel;
+	usr.nsize    = nsize;
+
+	/*Call Brent optimization*/
+	BrentSearch(&J,optpars,X0,&FormFunction,&FormFunctionGradient,(void*)&usr);
+
+	if(VerboseControl()) _printf0_("   preparing final solution\n");
+	IssmDouble  *XL = NULL;
+	IssmDouble  *XU = NULL;
+	GetVectorFromControlInputsx(&XL,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"lowerbound");
+	GetVectorFromControlInputsx(&XU,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"upperbound");
+	for(long i=0;i<nsize;i++){
+		if(X0[i]>XU[i]) X0[i]=XU[i];
+		if(X0[i]<XL[i]) X0[i]=XL[i];
+	}
+	xDelete<IssmDouble>(XU);
+	xDelete<IssmDouble>(XL);
+	SetControlInputsFromVectorx(femmodel,X0);
+	femmodel->parameters->SetParam(true,SaveResultsEnum);
+	solutioncore(femmodel);
+
+	/*some results not computed by steadystate_core or stressbalance_core: */
+	if(!dakota_analysis){ //do not save this if we are running the control core from a qmu run!
+		femmodel->OutputControlsx(&femmodel->results);
+
+		#ifdef _HAVE_AD_
+		IssmPDouble* J_passive=xNew<IssmPDouble>(nsteps);
+		for(int i=0;i<nsteps;i++) J_passive[i]=reCast<IssmPDouble>(J[i]);
+		femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,J_passive,nsteps,1,0,0));
+		xDelete<IssmPDouble>(J_passive);
+		#else
+		femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,J,nsteps,1,0,0));
+		#endif
+	}
+
+	/*Free resources: */
+	xDelete<int>(control_type);
+	xDelete<int>(maxiter);
+	xDelete<IssmDouble>(cm_jump);
+	xDelete<IssmDouble>(J);
+	xDelete<IssmDouble>(X0);
+}/*}}}*/
+IssmDouble FormFunction(IssmDouble* X,void* usrvoid){/*{{{*/
+
+	/*output: */
+	IssmDouble J;
+
+	/*parameters: */
+	int        solution_type,analysis_type,num_responses;
+	bool       conserve_loads = true;
+	AppCtx*    usr = (AppCtx*)usrvoid;
+	FemModel  *femmodel  = usr->femmodel;
+	int        nsize     = usr->nsize;
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+
+	/*Constrain input vector*/
+	IssmDouble  *XL = NULL;
+	IssmDouble  *XU = NULL;
+	GetVectorFromControlInputsx(&XL,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"lowerbound");
+	GetVectorFromControlInputsx(&XU,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"upperbound");
+	for(long i=0;i<nsize;i++){
+		if(X[i]>XU[i]) X[i]=XU[i];
+		if(X[i]<XL[i]) X[i]=XL[i];
+	}
+
+	/*Update control input*/
+	SetControlInputsFromVectorx(femmodel,X);
+
+	/*solve forward: */
+	switch(solution_type){
+		case SteadystateSolutionEnum:
+			femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+			stressbalance_core(femmodel);	//We need a 3D velocity!! (vz is required for the next thermal run)
+			break;
+		case StressbalanceSolutionEnum:{
+			femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+
+			bool is_schur_cg_solver = false;
+			#ifdef _HAVE_PETSC_
+			int solver_type;
+			PetscOptionsDetermineSolverType(&solver_type);
+			if(solver_type==FSSolverEnum) is_schur_cg_solver = true;
+			#endif
+
+			if(is_schur_cg_solver){
+			 solutionsequence_schurcg(femmodel);
+			}else{
+			 solutionsequence_nonlinear(femmodel,conserve_loads); 
+			}
+			}
+			 break;
+		case BalancethicknessSolutionEnum:
+			femmodel->SetCurrentConfiguration(BalancethicknessAnalysisEnum);
+			solutionsequence_linear(femmodel); 
+			break;
+		case BalancethicknessSoftSolutionEnum:
+			/*NOTHING*/
+			break;
+		case Balancethickness2SolutionEnum:
+			femmodel->SetCurrentConfiguration(Balancethickness2AnalysisEnum);
+			solutionsequence_linear(femmodel); 
+			break;
+		default:
+			_error_("Solution " << EnumToStringx(solution_type) << " not implemented yet");
+	}
+
+	/*Compute misfit for this velocity field.*/
+	IssmDouble* Jlist = NULL;
+	femmodel->CostFunctionx(&J,&Jlist,NULL);
+	_printf0_("f(x) = "<<setw(12)<<setprecision(7)<<J<<"  |  ");
+	for(int i=0;i<num_responses;i++) _printf0_(" "<<setw(12)<<setprecision(7)<<Jlist[i]);
+	_printf0_("\n");
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(XU);
+	xDelete<IssmDouble>(XL);
+	xDelete<IssmDouble>(Jlist);
+	return J;
+}/*}}}*/
+IssmDouble FormFunctionGradient(IssmDouble** pG,IssmDouble* X,void* usrvoid){/*{{{*/
+
+	/*output: */
+	IssmDouble J;
+	int        temp;
+
+	/*parameters: */
+	void (*adjointcore)(FemModel*)=NULL;
+	int         solution_type,analysis_type,num_responses,num_controls,numvertices;
+	bool        conserve_loads = true;
+	IssmDouble *scalar_list    = NULL;
+	IssmDouble *Jlist          = NULL;
+	IssmDouble *G              = NULL;
+	IssmDouble *norm_list      = NULL;
+	AppCtx     *usr            = (AppCtx*)usrvoid;
+	FemModel   *femmodel       = usr->femmodel;
+	int         nsize          = usr->nsize;
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	femmodel->parameters->FindParam(&scalar_list,&temp,&temp,InversionGradientScalingEnum);
+	femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);   _assert_(num_controls);
+	numvertices=femmodel->vertices->NumberOfVertices();
+
+	/*Constrain input vector*/
+	IssmDouble  *XL = NULL;
+	IssmDouble  *XU = NULL;
+	GetVectorFromControlInputsx(&XL,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"lowerbound");
+	GetVectorFromControlInputsx(&XU,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"upperbound");
+	for(long i=0;i<nsize;i++){
+		if(X[i]>XU[i]) X[i]=XU[i];
+		if(X[i]<XL[i]) X[i]=XL[i];
+	}
+
+	/*Update control input*/
+	SetControlInputsFromVectorx(femmodel,X);
+
+	/*Compute new temperature at this point*/
+	if(solution_type==SteadystateSolutionEnum) steadystate_core(femmodel);
+
+	/*Compute Adjoint*/
+	AdjointCorePointerFromSolutionEnum(&adjointcore,solution_type);
+	adjointcore(femmodel);
+
+	/*Compute gradient*/
+	Gradjx(&G,&norm_list,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+
+	/*Compute scaling factor*/
+	IssmDouble scalar = scalar_list[0]/norm_list[0];
+	for(int i=1;i<num_controls;i++) scalar=min(scalar,scalar_list[i]/norm_list[i]);
+
+	/*Constrain Gradient*/
+	for(int i=0;i<nsize;i++){
+		G[i] = scalar*G[i];
+	}
+
+	for(long i=0;i<nsize;i++){
+		if(X[i]>=XU[i]) G[i]=0.;
+		if(X[i]<=XL[i]) G[i]=0.;
+	}
+
+	/*Needed for output results*/
+	ControlInputSetGradientx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,G);
+
+	/*Compute misfit for this velocity field.*/
+	femmodel->CostFunctionx(&J,&Jlist,NULL);
+	_printf0_("f(x) = "<<setw(12)<<setprecision(7)<<J<<"  |  ");
+	for(int i=0;i<num_responses;i++) _printf0_(" "<<setw(12)<<setprecision(7)<<Jlist[i]);
+	_printf0_("\n");
+
+	/*Clean-up and return*/
+	xDelete<IssmDouble>(XU);
+	xDelete<IssmDouble>(XL);
+	xDelete<IssmDouble>(norm_list);
+	xDelete<IssmDouble>(scalar_list);
+	xDelete<IssmDouble>(Jlist);
+	*pG = G;
+	return J;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/controladm1qn3_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/controladm1qn3_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/controladm1qn3_core.cpp	(revision 27955)
@@ -0,0 +1,694 @@
+/*!\file: controladm1qn3_core.cpp
+ * \brief: core of the control solution
+ */
+#include <ctime>
+#include <config.h>
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+#ifdef _HAVE_CODIPACK_
+extern CoDi_global codi_global;
+#include <sstream> // for output of the CoDiPack tape
+#include <fenv.h>
+double transient_ad(FemModel* femmodel, double* G,double* Jlist);
+#endif
+
+#if defined (_HAVE_M1QN3_) && defined(_HAVE_AD_)
+/*m1qn3 prototypes {{{*/
+extern "C" void *ctonbe_; // DIS mode : Conversion
+extern "C" void *ctcabe_; // DIS mode : Conversion
+extern "C" void *euclid_; // Scalar product
+typedef void (*SimulFunc) (long* indic,long* n, double* x,double* pf,double* g,long [],float [],void* dzs);
+extern "C" void m1qn3_ (void f(long* indic,long* n, double* x,double* pf,double* g,long [],float [],void* dzs),
+			void **, void **, void **,
+			long *, double [],double *, double[], double*, double *,
+			double *, char [], long *, long *, long *, long *, long *, long *, long [],double [], long *,
+			long *, long *, long [], float [],void* );
+
+/*Use struct to provide arguments*/
+typedef struct{
+	FemModel   * femmodel;
+	IssmPDouble* Jlist;
+	int          M;
+	int          N;
+	int*         i;
+} m1qn3_struct;
+/*}}}*/
+
+/*m1qm3 functions*/
+void simul_starttrace(FemModel* femmodel){/*{{{*/
+
+	#if defined(_HAVE_ADOLC_)
+	/*Retrive ADOLC parameters*/
+	IssmDouble gcTriggerRatio;
+	IssmDouble gcTriggerMaxSize;
+	IssmDouble obufsize;
+	IssmDouble lbufsize;
+	IssmDouble cbufsize;
+	IssmDouble tbufsize;
+	femmodel->parameters->FindParam(&gcTriggerRatio,AutodiffGcTriggerRatioEnum);
+	femmodel->parameters->FindParam(&gcTriggerMaxSize,AutodiffGcTriggerMaxSizeEnum);
+	femmodel->parameters->FindParam(&obufsize,AutodiffObufsizeEnum);
+	femmodel->parameters->FindParam(&lbufsize,AutodiffLbufsizeEnum);
+	femmodel->parameters->FindParam(&cbufsize,AutodiffCbufsizeEnum);
+	femmodel->parameters->FindParam(&tbufsize,AutodiffTbufsizeEnum);
+
+	/*Set garbage collection parameters: */
+	setStoreManagerControl(reCast<IssmPDouble>(gcTriggerRatio),reCast<size_t>(gcTriggerMaxSize));
+
+	/*Start trace: */
+	int skipFileDeletion=1;
+	int keepTaylors=1;
+	int my_rank=IssmComm::GetRank();
+	trace_on(my_rank,keepTaylors,reCast<size_t>(obufsize),reCast<size_t>(lbufsize),reCast<size_t>(cbufsize),reCast<size_t>(tbufsize),skipFileDeletion);
+
+	#elif defined(_HAVE_CODIPACK_)
+
+		//fprintf(stderr, "*** Codipack IoModel::StartTrace\n");
+		/*
+		 * FIXME codi
+		 * - ADOL-C variant uses fine grained tracing with various arguments
+		 * - ADOL-C variant sets a garbage collection parameter for its tape
+		 * -> These parameters are not read for the CoDiPack ISSM version!
+		 */
+		#if _CODIPACK_MAJOR_==2
+		auto& tape_codi = IssmDouble::getTape();
+		#elif _CODIPACK_MAJOR_==1
+		auto& tape_codi = IssmDouble::getGlobalTape();
+		#else
+		#error "_CODIPACK_MAJOR_ not supported"
+		#endif
+
+		tape_codi.setActive();
+		#if _AD_TAPE_ALLOC_
+		//alloc_profiler.Tag(StartInit, true);
+		IssmDouble x_t(1.0), y_t(1.0);
+		tape_codi.registerInput(y_t);
+		int codi_allocn = 0;
+		femmodel->parameters->FindParam(&codi_allocn,AutodiffTapeAllocEnum);
+		for(int i = 0;i < codi_allocn;++i) {
+			x_t = y_t * y_t;
+		}
+		/*
+		std::stringstream out_s;
+		IssmDouble::getTape().printStatistics(out_s);
+		_printf0_("StartTrace::Tape Statistics	   : TapeAlloc count=[" << codi_allocn << "]\n" << out_s.str());
+		*/
+		//alloc_profiler.Tag(FinishInit, true);
+		#endif
+
+	#else
+	_error_("not implemented");
+	#endif
+}/*}}}*/
+void simul_stoptrace(){/*{{{*/
+
+	#if defined(_HAVE_ADOLC_)
+	trace_off();
+	if(VerboseAutodiff()){ /*{{{*/
+
+		#ifdef _HAVE_ADOLC_
+		int my_rank=IssmComm::GetRank();
+		size_t  tape_stats[15];
+		tapestats(my_rank,tape_stats); //reading of tape statistics
+		int commSize=IssmComm::GetSize();
+		int *sstats=new int[7];
+		sstats[0]=tape_stats[NUM_OPERATIONS];
+		sstats[1]=tape_stats[OP_FILE_ACCESS];
+		sstats[2]=tape_stats[NUM_LOCATIONS];
+		sstats[3]=tape_stats[LOC_FILE_ACCESS];
+		sstats[4]=tape_stats[NUM_VALUES];
+		sstats[5]=tape_stats[VAL_FILE_ACCESS];
+		sstats[6]=tape_stats[TAY_STACK_SIZE];
+		int *rstats=NULL;
+		if (my_rank==0) rstats=new int[commSize*7];
+		ISSM_MPI_Gather(sstats,7,ISSM_MPI_INT,rstats,7,ISSM_MPI_INT,0,IssmComm::GetComm());
+		if (my_rank==0) {
+			int offset=50;
+			int rOffset=(commSize/10)+1;
+			_printf_("   ADOLC statistics: \n");
+			_printf_("     "<<setw(offset)<<left<<"#independents: " <<setw(12)<<right<<tape_stats[NUM_INDEPENDENTS] << "\n");
+			_printf_("     "<<setw(offset)<<left<<"#dependents: " <<setw(12)<<right<<tape_stats[NUM_DEPENDENTS] << "\n");
+			_printf_("     "<<setw(offset)<<left<<"max #live active variables: " <<setw(12)<<right<<tape_stats[NUM_MAX_LIVES] << "\n");
+			_printf_("     operations: entry size "<< sizeof(unsigned char) << " Bytes \n");
+			_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffObufsizeEnum) " <<setw(12)<<right<<tape_stats[OP_BUFFER_SIZE] << "\n");
+			for (int r=0;r<commSize;++r)
+			 _printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+0] << (rstats[r*7+1]?" ->file":"") << "\n");
+			_printf_("     locations: entry size " << sizeof(locint) << " Bytes\n");
+			_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffLbufsizeEnum) " <<setw(12)<<right<<tape_stats[LOC_BUFFER_SIZE] << "\n");
+			for (int r=0;r<commSize;++r)
+			 _printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+2] << (rstats[r*7+3]?" ->file":"") << "\n");
+			_printf_("     constant values: entry size " << sizeof(double) << " Bytes\n");
+			_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffCbufsizeEnum) " <<setw(12)<<right<<tape_stats[VAL_BUFFER_SIZE] << "\n");
+			for (int r=0;r<commSize;++r)
+			 _printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+4] << (rstats[r*7+5]?" ->file":"") << "\n");
+			_printf_("     Taylor stack: entry size " << sizeof(revreal) << " Bytes\n");
+			_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffTbufsizeEnum) " <<setw(12)<<right<<tape_stats[TAY_BUFFER_SIZE] << "\n");
+			for (int r=0;r<commSize;++r)
+			 _printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+6] << (rstats[r*7+6]>tape_stats[TAY_BUFFER_SIZE]?" ->file":"") << "\n");
+			delete []rstats;
+		}
+		delete [] sstats;
+		#endif
+
+		#ifdef _HAVE_CODIPACK_
+		#ifdef _AD_TAPE_ALLOC_
+		//_printf_("Allocation time  P(" << my_rank << "): " << alloc_profiler.DeltaTime(StartInit, FinishInit) << "\n");
+		#endif
+		std::stringstream out_s;
+		#if _CODIPACK_MAJOR_==2
+		IssmDouble::getTape().printStatistics(out_s);
+		#elif _CODIPACK_MAJOR_==1
+		IssmDouble::getGlobalTape().printStatistics(out_s);
+		#else
+		#error "_CODIPACK_MAJOR_ not supported"
+		#endif
+		_printf0_("CoDiPack Profiling::Tape Statistics :\n" << out_s.str());
+		#endif
+	} /*}}}*/
+
+	#elif defined(_HAVE_CODIPACK_)
+
+	/*Get Tape*/
+	#if _CODIPACK_MAJOR_==2
+	auto& tape_codi = IssmDouble::getTape();
+	#elif _CODIPACK_MAJOR_==1
+	auto& tape_codi = IssmDouble::getGlobalTape();
+	#else
+	#error "_CODIPACK_MAJOR_ not supported"
+	#endif
+
+	tape_codi.setPassive();
+	if(VerboseAutodiff()){
+		int my_rank=IssmComm::GetRank();
+		if(my_rank == 0) {
+			// FIXME codi "just because" for now
+			tape_codi.printStatistics(std::cout);
+			codi_global.print(std::cout);
+		}
+	}
+	#else
+	_error_("not implemented");
+	#endif
+}/*}}}*/
+void simul_ad(long* indic,long* n,double* X,double* pf,double* G,long izs[1],float rzs[1],void* dzs){/*{{{*/
+
+	/*Get rank*/
+	int my_rank=IssmComm::GetRank();
+
+	/*Recover Arguments*/
+	m1qn3_struct *input_struct = (m1qn3_struct*)dzs;
+
+	FemModel* femmodel = input_struct->femmodel;
+	int num_responses,num_controls,solution_type;
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+
+	/*we need to make sure we do not modify femmodel at each iteration, make a copy*/
+	femmodel = input_struct->femmodel->copy();
+
+	IssmPDouble*  Jlist  = input_struct->Jlist;
+	int           JlistM = input_struct->M;
+	int           JlistN = input_struct->N;
+	int*          Jlisti = input_struct->i;
+	int           intn   = (int)*n;
+
+	/*Recover some parameters*/
+	double *scaling_factors = NULL;
+	int    *M = NULL;
+	int    *N = NULL;
+	int    *control_enum    = NULL;
+	int     checkpoint_frequency;
+	femmodel->parameters->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	femmodel->parameters->FindParamAndMakePassive(&scaling_factors,NULL,InversionControlScalingFactorsEnum);
+	femmodel->parameters->FindParam(&N,NULL,ControlInputSizeNEnum);
+	femmodel->parameters->FindParam(&M,NULL,ControlInputSizeMEnum);
+	femmodel->parameters->FindParam(&control_enum,NULL,InversionControlParametersEnum);
+	femmodel->parameters->FindParam(&checkpoint_frequency,SettingsCheckpointFrequencyEnum);
+
+	/*Constrain input vector and update controls*/
+	double  *XL = NULL;
+	double  *XU = NULL;
+	GetPassiveVectorFromControlInputsx(&XL,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"lowerbound");
+	GetPassiveVectorFromControlInputsx(&XU,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"upperbound");
+
+	int offset = 0;
+	for(int c=0;c<num_controls;c++){
+		for(int i=0;i<M[c]*N[c];i++){
+			int index = offset+i;
+			X[index] = X[index]*scaling_factors[c];
+			if(X[index]>XU[index]) X[index]=XU[index];
+			if(X[index]<XL[index]) X[index]=XL[index];
+		}
+		offset += M[c]*N[c];
+	}
+
+	/*Special case: do we need to run AD with checkpointing?*/
+	#ifdef _HAVE_CODIPACK_
+	if(checkpoint_frequency && solution_type == TransientSolutionEnum){
+		SetControlInputsFromVectorx(femmodel,X);
+		*pf = transient_ad(femmodel, G, &Jlist[(*Jlisti)*JlistN]);
+	}
+	else
+	#endif
+	  {
+
+		/*Start Tracing*/
+		simul_starttrace(femmodel);
+		/*Set X as our new control input and as INDEPENDENT*/
+#ifdef _HAVE_AD_
+		IssmDouble* aX=xNew<IssmDouble>(intn,"t");
+#else
+		IssmDouble* aX=xNew<IssmDouble>(intn);
+#endif
+
+		#if defined(_HAVE_ADOLC_)
+		if(my_rank==0){
+			for(int i=0;i<intn;i++){
+				aX[i]<<=X[i];
+			}
+		}
+		#elif defined(_HAVE_CODIPACK_)
+
+		/*Get tape*/
+		#if _CODIPACK_MAJOR_==2
+		auto& tape_codi = IssmDouble::getTape();
+		#elif _CODIPACK_MAJOR_==1
+		auto& tape_codi = IssmDouble::getGlobalTape();
+		#else
+		#error "_CODIPACK_MAJOR_ not supported"
+		#endif
+
+		codi_global.input_indices.clear();
+		if(my_rank==0){
+			for (int i=0;i<intn;i++) {
+				aX[i]=X[i];
+				tape_codi.registerInput(aX[i]);
+				#if _CODIPACK_MAJOR_==2
+				codi_global.input_indices.push_back(aX[i].getIdentifier());
+				#elif _CODIPACK_MAJOR_==1
+				codi_global.input_indices.push_back(aX[i].getGradientData());
+				#else
+				#error "_CODIPACK_MAJOR_ not supported"
+				#endif
+
+			}
+		}
+		#else
+		_error_("not suppoted");
+		#endif
+
+		ISSM_MPI_Bcast(aX,intn,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+		SetControlInputsFromVectorx(femmodel,aX);
+		xDelete<IssmDouble>(aX);
+
+		/*Compute solution (forward)*/
+		void (*solutioncore)(FemModel*)=NULL;
+		CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
+		solutioncore(femmodel);
+
+		/*Get Dependents*/
+		int          num_dependents;
+		IssmPDouble *dependents;
+		IssmDouble   J = 0.;
+		DataSet     *dependent_objects = ((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value;
+		femmodel->parameters->FindParam(&num_dependents,AutodiffNumDependentsEnum);
+
+		/*Go through our dependent variables, and compute the response:*/
+		dependents=xNew<IssmPDouble>(num_dependents);
+		#if defined(_HAVE_CODIPACK_)
+		codi_global.output_indices.clear();
+		#endif
+		int i=-1;
+		for(Object* & object:dependent_objects->objects){
+			i++;
+			DependentObject* dep=xDynamicCast<DependentObject*>(object);
+
+			/*Get cost function for this dependent*/
+			dep->RecordResponsex(femmodel);
+			IssmDouble output_value = dep->GetValue();
+			dependents[i] = output_value.getValue();
+			#if defined(_HAVE_ADOLC_)
+			output_value>>=dependents[i];
+			#endif
+
+			J+=output_value;
+		}
+
+		#if defined(_HAVE_CODIPACK_)
+		tape_codi.registerOutput(J);
+		#if _CODIPACK_MAJOR_==2
+		codi_global.output_indices.push_back(J.getIdentifier());
+		#elif _CODIPACK_MAJOR_==1
+		codi_global.output_indices.push_back(J.getGradientData());
+		#else
+		#error "_CODIPACK_MAJOR_ not supported"
+		#endif
+		#endif
+
+		/*Turning off trace tape*/
+		simul_stoptrace();
+
+		/*intermediary: */
+		int          num_independents=intn;
+		IssmPDouble *aWeightVector=NULL;
+		IssmPDouble *weightVectorTimesJac=NULL;
+		IssmPDouble *totalgradient=xNewZeroInit<IssmPDouble>(num_independents);
+
+		/*if no dependents, no point in running a driver: */
+		if(!(num_dependents*num_independents)) _error_("this is not allowed");
+
+		/*for adolc to run in parallel, we 0 out on rank~=0. But we still keep track of num_dependents:*/
+		int num_dependents_old   = num_dependents;
+		int num_independents_old = num_independents;
+
+		#if defined(_HAVE_ADOLC_)
+		/*Get gradient for ADOLC {{{*/
+		if(my_rank!=0){
+			num_dependents   = 0;
+			num_independents = 0;
+		}
+
+		/*get the EDF pointer:*/
+		ext_diff_fct *anEDF_for_solverx_p=xDynamicCast<GenericParam<Adolc_edf> * >(femmodel->parameters->FindParamObject(AdolcParamEnum))->GetParameterValue().myEDF_for_solverx_p;
+
+		/* these are always needed regardless of the interpreter */
+		anEDF_for_solverx_p->dp_x=xNew<double>(anEDF_for_solverx_p->max_n);
+		anEDF_for_solverx_p->dp_y=xNew<double>(anEDF_for_solverx_p->max_m);
+
+		/* Ok, now we are going to call the fos_reverse in a loop on the index, from 0 to num_dependents, so
+		 * as to generate num_dependents gradients: */
+		for(int aDepIndex=0;aDepIndex<num_dependents_old;aDepIndex++){
+
+			/*initialize direction index in the weights vector: */
+			aWeightVector=xNewZeroInit<IssmPDouble>(num_dependents);
+			if (my_rank==0) aWeightVector[aDepIndex]=1.;
+
+			/*initialize output gradient: */
+			weightVectorTimesJac=xNew<IssmPDouble>(num_independents);
+
+			/*set the forward method function pointer: */
+			#ifdef _HAVE_GSL_
+			anEDF_for_solverx_p->fos_reverse=EDF_fos_reverse_for_solverx;
+			#endif
+			#ifdef _HAVE_MUMPS_
+			anEDF_for_solverx_p->fos_reverse_iArr=fos_reverse_mumpsSolveEDF;
+			#endif
+
+			anEDF_for_solverx_p->dp_U=xNew<IssmPDouble>(anEDF_for_solverx_p->max_m);
+			anEDF_for_solverx_p->dp_Z=xNew<IssmPDouble>(anEDF_for_solverx_p->max_n);
+
+			/*call driver: */
+			fos_reverse(my_rank,num_dependents,num_independents, aWeightVector, weightVectorTimesJac );
+
+			/*Add to totalgradient: */
+			if(my_rank==0) for(int i=0;i<num_independents;i++) {
+				totalgradient[i]+=weightVectorTimesJac[i];
+			}
+
+			/*free resources :*/
+			xDelete(weightVectorTimesJac);
+			xDelete(aWeightVector);
+		}
+		/*}}}*/
+		#elif defined(_HAVE_CODIPACK_)
+		/*Get gradient for CoDiPack{{{*/
+		if(VerboseAutodiff())_printf0_("   CoDiPack fos_reverse\n");
+		if(my_rank==0) tape_codi.setGradient(codi_global.output_indices[0],1.0);
+		tape_codi.evaluate();
+
+		auto in_size = codi_global.input_indices.size();
+		for(size_t i = 0; i < in_size; ++i){
+			_assert_(i<num_independents);
+			totalgradient[i] = tape_codi.getGradient(codi_global.input_indices[i]);
+		}
+
+		/*Clear tape*/
+		tape_codi.reset();
+		/*}}}*/
+		#else
+		_error_("not suppoted");
+		#endif
+
+		/*Broadcast gradient to other ranks*/
+		ISSM_MPI_Bcast(totalgradient,num_independents_old,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+
+		/*Check size of Jlist to avoid crashes*/
+		_assert_((*Jlisti)<JlistM);
+		_assert_(JlistN==num_responses+1);
+
+		/*Compute objective function and broadcast it to other cpus*/
+		*pf = reCast<double>(J);
+		ISSM_MPI_Bcast(pf,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+
+		/*Record cost function values and delete Jtemp*/
+		for(int i=0;i<num_responses;i++) Jlist[(*Jlisti)*JlistN+i] = dependents[i];
+		Jlist[(*Jlisti)*JlistN+num_responses] = reCast<IssmPDouble>(J);
+
+		if(*indic==0){
+			/*dry run, no gradient required*/
+			InversionStatsIter( (*Jlisti)+1, *pf, NAN, &Jlist[(*Jlisti)*JlistN], num_responses);
+
+			*Jlisti = (*Jlisti) +1;
+			xDelete<double>(XU);
+			xDelete<double>(XL);
+			return;
+		}
+
+		/*Compute gradient*/
+		for(long i=0;i<num_independents_old;i++) G[i] = totalgradient[i];
+
+		xDelete<IssmPDouble>(dependents);
+		xDelete<IssmPDouble>(totalgradient);
+	  } /*====????*/
+
+	/*Constrain Gradient*/
+	IssmDouble  Gnorm = 0.;
+	offset = 0;
+	for(int c=0;c<num_controls;c++){
+		for(int i=0;i<M[c]*N[c];i++){
+			int index = offset+i;
+			if(X[index]>=XU[index]) G[index]=0.;
+			if(X[index]<=XL[index]) G[index]=0.;
+			G[index] = G[index]*scaling_factors[c];
+			X[index] = X[index]/scaling_factors[c];
+			Gnorm += G[index]*G[index];
+		}
+		offset += M[c]*N[c];
+	}
+	Gnorm = sqrt(Gnorm);
+	_assert_(!xIsNan(Gnorm));
+	_assert_(!xIsInf(Gnorm));
+
+	/*Print info*/
+	InversionStatsIter( (*Jlisti)+1, *pf, reCast<double>(Gnorm), &Jlist[(*Jlisti)*JlistN], num_responses);
+
+	/*Clean-up and return*/
+	delete femmodel;
+	*Jlisti = (*Jlisti) +1;
+	xDelete<double>(XU);
+	xDelete<double>(XL);
+	xDelete<int>(control_enum);
+	xDelete<int>(M);
+	xDelete<int>(N);
+	xDelete<double>(scaling_factors);
+}/*}}}*/
+void controladm1qn3_core(FemModel* femmodel){/*{{{*/
+
+
+	/*Intermediaries*/
+	long    omode;
+	double  f,dxmin,dfmin_frac,gttol;
+	int     maxsteps,maxiter;
+	int     intn ,num_controls,num_cost_functions,solution_type;
+	double *scaling_factors = NULL;
+	double *X               = NULL;
+	double *G               = NULL;
+	int    *N               = NULL;
+	int    *M               = NULL;
+	int    *control_enum;
+
+	/*Recover some parameters*/
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	femmodel->parameters->FindParam(&num_cost_functions,InversionNumCostFunctionsEnum);
+	femmodel->parameters->FindParam(&maxsteps,InversionMaxstepsEnum);
+	femmodel->parameters->FindParam(&maxiter,InversionMaxiterEnum);
+	femmodel->parameters->FindParamAndMakePassive(&dxmin,InversionDxminEnum);
+	femmodel->parameters->FindParamAndMakePassive(&dfmin_frac,InversionDfminFracEnum);
+	femmodel->parameters->FindParamAndMakePassive(&gttol,InversionGttolEnum);
+	femmodel->parameters->FindParamAndMakePassive(&scaling_factors,NULL,InversionControlScalingFactorsEnum);
+	femmodel->parameters->FindParam(&control_enum,NULL,InversionControlParametersEnum);
+	femmodel->parameters->SetParam(false,SaveResultsEnum);
+	femmodel->parameters->FindParam(&N,NULL,ControlInputSizeNEnum);
+   femmodel->parameters->FindParam(&M,NULL,ControlInputSizeMEnum);
+
+	/*Initialize M1QN3 parameters*/
+	if(VerboseControl())_printf0_("   Initialize M1QN3 parameters\n");
+	SimulFunc simul_ptr    = &simul_ad; /*Cost function address*/
+	void**    prosca       = &euclid_;  /*Dot product function (euclid is the default)*/
+	char      normtype[]   = "dfn";     /*Norm type: dfn = scalar product defined by prosca*/
+	long      izs[5];                   /*Arrays used by m1qn3 subroutines*/
+	long      iz[5];                    /*Integer m1qn3 working array of size 5*/
+	float     rzs[1];                   /*Arrays used by m1qn3 subroutines*/
+	long      impres       = 0;         /*verbosity level*/
+	long      imode[3]     = {0};       /*scaling and starting mode, 0 by default*/
+	long      indic        = 4;         /*compute f and g*/
+	long      reverse      = 0;         /*reverse or direct mode*/
+	long      io           = 6;         /*Channel number for the output*/
+
+	/*Optimization criterions*/
+	long niter = long(maxsteps); /*Maximum number of iterations*/
+	long nsim  = long(maxiter);/*Maximum number of function calls*/
+
+	/*Get initial guess*/
+	GetPassiveVectorFromControlInputsx(&X,&intn,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"value");
+
+	/*Get problem dimension and initialize gradient and initial guess*/
+	long n = long(intn);
+	G = xNew<double>(n);
+
+	/*Scale control for M1QN3*/
+   int offset = 0;
+   for(int c=0;c<num_controls;c++){
+      for(int i=0;i<M[c]*N[c];i++){
+         int index = offset+i;
+         X[index] = X[index]/scaling_factors[c];
+      }
+      offset += M[c]*N[c];
+   }
+
+	/*Allocate m1qn3 working arrays (see documentation)*/
+	long      m   = 100;
+	long      ndz = 4*n+m*(2*n+1);
+	double*   dz  = xNew<double>(ndz);
+	if(VerboseControl())_printf0_("   Computing initial solution\n");
+	InversionStatsHeader(num_cost_functions);
+
+	/*Prepare structure for m1qn3*/
+	m1qn3_struct mystruct;
+	mystruct.femmodel = femmodel;
+	mystruct.M        = maxiter;
+	mystruct.N        = num_cost_functions+1;
+	mystruct.Jlist    = xNewZeroInit<IssmPDouble>(mystruct.M*mystruct.N);
+	mystruct.i        = xNewZeroInit<int>(1);
+	/*Initialize Gradient and cost function of M1QN3*/
+	indic = 4; /*gradient required*/
+	simul_ad(&indic,&n,X,&f,G,izs,rzs,(void*)&mystruct);
+
+	/*Estimation of the expected decrease in f during the first iteration*/
+	if(dfmin_frac==0.) dfmin_frac=1.;
+	double df1=dfmin_frac*f;
+
+	/*Call M1QN3 solver*/
+	m1qn3_(simul_ptr,prosca,&ctonbe_,&ctcabe_,
+				&n,X,&f,G,&dxmin,&df1,
+				&gttol,normtype,&impres,&io,imode,&omode,&niter,&nsim,iz,dz,&ndz,
+				&reverse,&indic,izs,rzs,(void*)&mystruct);
+
+	/*Print exit flag*/
+	InversionStatsFooter(num_cost_functions);
+	switch(int(omode)){
+		case 0:  _printf0_("   Stop requested (indic = 0)\n"); break;
+		case 1:  _printf0_("   Convergence reached (gradient satisfies stopping criterion)\n"); break;
+		case 2:  _printf0_("   Bad initialization\n"); break;
+		case 3:  _printf0_("   Line search failure\n"); break;
+		case 4:  _printf0_("   Maximum number of iterations exceeded\n");break;
+		case 5:  _printf0_("   Maximum number of function calls exceeded\n"); break;
+		case 6:  _printf0_("   stopped on dxmin during line search\n"); break;
+		case 7:  _printf0_("   <g,d> > 0  or  <y,s> <0\n"); break;
+		default: _printf0_("   Unknown end condition\n");
+	}
+
+	/*Constrain solution vector*/
+	double  *XL = NULL;
+	double  *XU = NULL;
+	GetPassiveVectorFromControlInputsx(&XL,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"lowerbound");
+	GetPassiveVectorFromControlInputsx(&XU,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"upperbound");
+
+   offset = 0;
+   for (int c=0;c<num_controls;c++){
+      for(int i=0;i<M[c]*N[c];i++){
+         int index = offset+i;
+         X[index] = X[index]*scaling_factors[c];
+         if(X[index]>XU[index]) X[index]=XU[index];
+         if(X[index]<XL[index]) X[index]=XL[index];
+      }
+      offset += M[c]*N[c];
+   }
+
+	/*Set X as our new control*/
+	IssmDouble* aX=xNew<IssmDouble>(intn);
+	IssmDouble* aG=xNew<IssmDouble>(intn);
+
+	for(int i=0;i<intn;i++) {
+		aX[i] = reCast<IssmDouble>(X[i]);
+		aG[i] = reCast<IssmDouble>(G[i]);
+	}
+	
+	ControlInputSetGradientx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,aG);
+	SetControlInputsFromVectorx(femmodel,aX);
+	xDelete(aX);
+
+	if (solution_type == TransientSolutionEnum){
+		int step = 1;
+		femmodel->parameters->SetParam(step,StepEnum);
+		femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,mystruct.Jlist,(*mystruct.i),mystruct.N,1,0));
+
+		int offset = 0;
+		for(int i=0;i<num_controls;i++){
+
+			/*Disect results*/
+			GenericExternalResult<IssmPDouble*>* G_output = new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,Gradient1Enum+i,&G[offset],N[i],M[i],1,0.);
+			GenericExternalResult<IssmPDouble*>* X_output = new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,control_enum[i],&X[offset],N[i],M[i],1,0.);
+
+			/*transpose for consistency with MATLAB's formating*/
+			G_output->Transpose();
+			X_output->Transpose();
+
+			/*Add to results*/
+			femmodel->results->AddObject(G_output);
+			femmodel->results->AddObject(X_output);
+
+			offset += N[i]*M[i];
+		}
+	}
+	else{
+		//FIXME: merge with code above?
+		femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,mystruct.Jlist,(*mystruct.i),mystruct.N,0,0));
+		femmodel->OutputControlsx(&femmodel->results);
+	}
+	femmodel->results->AddObject(new GenericExternalResult<int>(femmodel->results->Size()+1,InversionStopFlagEnum,int(omode)));
+
+	xDelete(aG);
+
+	/*Add last cost function to results*/
+
+	/*Finalize*/
+	if(VerboseControl()) _printf0_("   preparing final solution\n");
+	femmodel->parameters->SetParam(true,SaveResultsEnum);
+	void (*solutioncore)(FemModel*)=NULL;
+	CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
+	solutioncore(femmodel);
+
+	/*Clean-up and return*/
+	xDelete<double>(G);
+	xDelete<double>(X);
+	xDelete<double>(dz);
+	xDelete<double>(XU);
+	xDelete<double>(XL);
+	xDelete<double>(scaling_factors);
+	xDelete<IssmPDouble>(mystruct.Jlist);
+	xDelete<int>(mystruct.i);
+	xDelete<int>(control_enum);
+	xDelete<int>(M);
+	xDelete<int>(N);
+}/*}}}*/
+
+#else
+void controladm1qn3_core(FemModel* femmodel){_error_("M1QN3 or ADOLC/CoDiPack not installed");}
+#endif //_HAVE_M1QN3_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/controlm1qn3_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/controlm1qn3_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/controlm1qn3_core.cpp	(revision 27955)
@@ -0,0 +1,322 @@
+/*!\file: controlm1qn3_core.cpp
+ * \brief: core of the control solution 
+ */ 
+
+#include <config.h>
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+#if defined (_HAVE_M1QN3_)
+/*m1qn3 prototypes {{{*/
+extern "C" void *ctonbe_; // DIS mode : Conversion
+extern "C" void *ctcabe_; // DIS mode : Conversion
+extern "C" void *euclid_; // Scalar product
+typedef void (*SimulFunc) (long* indic,long* n, double* x, double* pf,double* g,long [],float [],void* dzs);
+extern "C" void m1qn3_ (void f(long* indic,long* n, double* x, double* pf,double* g,long [],float [],void* dzs),
+			void **, void **, void **,
+			long *, double [], double *, double [], double*, double *,
+			double *, char [], long *, long *, long *, long *, long *, long *, long [], double [], long *,
+			long *, long *, long [], float [],void* );
+
+/*Cost function prototype*/
+void simul(long* indic,long* n,double* X,double* pf,double* G,long izs[1],float rzs[1],void* dzs);
+
+/*Use struct to provide arguments*/
+typedef struct{
+	FemModel   * femmodel;
+	IssmPDouble* Jlist;
+	int         M;
+	int         N;
+	int*        i;
+} m1qn3_struct;
+/*}}}*/
+
+void controlm1qn3_core(FemModel* femmodel){/*{{{*/
+
+	/*Intermediaries*/
+	long    omode;
+	double  f,dxmin,dfmin_frac,gttol; 
+	int     maxsteps,maxiter;
+	int     intn,num_controls,num_cost_functions,solution_type;
+	double *scaling_factors = NULL;
+	double *X  = NULL;
+	double *G  = NULL;
+
+	/*Get control sizes*/
+	int* M = NULL;
+	int* N = NULL;
+	femmodel->parameters->FindParam(&M,NULL,ControlInputSizeMEnum);
+	femmodel->parameters->FindParam(&N,NULL,ControlInputSizeNEnum);
+
+	/*Recover some parameters*/
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	femmodel->parameters->FindParam(&num_cost_functions,InversionNumCostFunctionsEnum);
+	femmodel->parameters->FindParam(&maxsteps,InversionMaxstepsEnum);
+	femmodel->parameters->FindParam(&maxiter,InversionMaxiterEnum);
+	femmodel->parameters->FindParamAndMakePassive(&dxmin,InversionDxminEnum);
+	femmodel->parameters->FindParamAndMakePassive(&dfmin_frac,InversionDfminFracEnum);
+	femmodel->parameters->FindParamAndMakePassive(&gttol,InversionGttolEnum);
+	femmodel->parameters->FindParamAndMakePassive(&scaling_factors,NULL,InversionControlScalingFactorsEnum);
+	femmodel->parameters->SetParam(false,SaveResultsEnum);
+
+	/*Initialize M1QN3 parameters*/
+	if(VerboseControl())_printf0_("   Initialize M1QN3 parameters\n");
+	SimulFunc costfuncion  = &simul;    /*Cost function address*/
+	void**    prosca       = &euclid_;  /*Dot product function (euclid is the default)*/
+	char      normtype[]   = "dfn";     /*Norm type: dfn = scalar product defined by prosca*/
+	long      izs[5];                   /*Arrays used by m1qn3 subroutines*/
+	long      iz[5];                    /*Integer m1qn3 working array of size 5*/
+	float     rzs[1];                   /*Arrays used by m1qn3 subroutines*/
+	long      impres       = 0;         /*verbosity level*/
+	long      imode[3]     = {0};       /*scaling and starting mode, 0 by default*/
+	long      indic        = 4;         /*compute f and g*/
+	long      reverse      = 0;         /*reverse or direct mode*/
+	long      io           = 6;         /*Channel number for the output*/
+
+	/*Optimization criterions (need to be cast to long for m1qn3)*/
+	long niter = long(maxsteps); /*Maximum number of iterations*/
+	long nsim  = long(maxiter);  /*Maximum number of function calls*/
+
+	/*Get initial guess*/
+	GetPassiveVectorFromControlInputsx(&X,&intn,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"value");
+
+	/*Get problem dimension and initialize gradient and initial guess*/
+	long n = long(intn);
+	G = xNew<double>(n);
+
+	/*Scale control for M1QN3*/
+	int offset = 0;
+	for(int c=0;c<num_controls;c++){
+		for(int i=0;i<M[c]*N[c];i++){
+			int index = offset+i;
+			X[index] = X[index]/reCast<IssmPDouble>(scaling_factors[c]);
+		}
+		offset += M[c]*N[c];
+	}
+
+	/*Allocate m1qn3 working arrays (see documentation)*/
+	long      m   = 100;
+	long      ndz = 4*n+m*(2*n+1);
+	double*   dz  = xNew<double>(ndz);
+
+	if(VerboseControl())_printf0_("   Computing initial solution\n");
+	InversionStatsHeader(num_cost_functions);
+
+	/*Prepare structure for m1qn3*/
+	m1qn3_struct mystruct;
+	mystruct.femmodel = femmodel;
+	mystruct.M        = maxiter;
+	mystruct.N        = num_cost_functions+1;
+	mystruct.Jlist    = xNewZeroInit<IssmPDouble>(mystruct.M*mystruct.N);
+	mystruct.i        = xNewZeroInit<int>(1);
+
+	/*Initialize Gradient and cost function of M1QN3*/
+	indic = 4; /*gradient required*/
+	simul(&indic,&n,X,&f,G,izs,rzs,(void*)&mystruct);
+
+	/*Estimation of the expected decrease in f during the first iteration*/
+	if(dfmin_frac==0.) dfmin_frac=1.;
+	double df1=dfmin_frac*f;
+
+	/*Call M1QN3 solver*/
+	m1qn3_(costfuncion,prosca,&ctonbe_,&ctcabe_,
+				&n,X,&f,G,&dxmin,&df1,
+				&gttol,normtype,&impres,&io,imode,&omode,&niter,&nsim,iz,dz,&ndz,
+				&reverse,&indic,izs,rzs,(void*)&mystruct);
+
+	/*Print exit flag*/
+	InversionStatsFooter(num_cost_functions);
+	switch(int(omode)){
+		case 0:  _printf0_("   Stop requested (indic = 0)\n"); break;
+		case 1:  _printf0_("   Convergence reached (gradient satisfies stopping criterion)\n"); break;
+		case 2:  _printf0_("   Bad initialization\n"); break;
+		case 3:  _printf0_("   Line search failure\n"); break;
+		case 4:  _printf0_("   Maximum number of iterations exceeded\n");break;
+		case 5:  _printf0_("   Maximum number of function calls exceeded\n"); break;
+		case 6:  _printf0_("   stopped on dxmin during line search\n"); break;
+		case 7:  _printf0_("   <g,d> > 0  or  <y,s> <0\n"); break;
+		default: _printf0_("   Unknown end condition\n");
+	}
+
+	/*Constrain solution vector*/
+	double  *XL = NULL;
+	double  *XU = NULL;
+	GetPassiveVectorFromControlInputsx(&XL,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"lowerbound");
+	GetPassiveVectorFromControlInputsx(&XU,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"upperbound");
+
+	offset = 0;
+	for(int c=0;c<num_controls;c++){
+		for(int i=0;i<M[c]*N[c];i++){
+			int index = offset+i;
+			X[index] = X[index]*scaling_factors[c];
+			if(X[index]>XU[index]) X[index]=XU[index];
+			if(X[index]<XL[index]) X[index]=XL[index];
+		}
+		offset += M[c]*N[c];
+	}
+
+	/*Set X as our new control (need to recast)*/
+	#ifdef _HAVE_AD_
+	IssmDouble* aX=xNew<IssmDouble>(intn);
+	IssmDouble* aG=xNew<IssmDouble>(intn);
+	for(int i=0;i<intn;i++) {
+		aX[i] = reCast<IssmDouble>(X[i]); 
+		aG[i] = reCast<IssmDouble>(G[i]);
+	}
+	ControlInputSetGradientx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,aG);
+	SetControlInputsFromVectorx(femmodel,aX);
+	xDelete(aX);
+	xDelete(aG);
+	#else
+	SetControlInputsFromVectorx(femmodel,X);
+	ControlInputSetGradientx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,G);
+	#endif
+
+	femmodel->OutputControlsx(&femmodel->results);
+	femmodel->results->AddObject(new GenericExternalResult<double*>(femmodel->results->Size()+1,JEnum,mystruct.Jlist,(*mystruct.i),mystruct.N,0,0));
+	femmodel->results->AddObject(new GenericExternalResult<int>(femmodel->results->Size()+1,InversionStopFlagEnum,int(omode)));
+
+	/*Finalize*/
+	if(VerboseControl()) _printf0_("   preparing final solution\n");
+	femmodel->parameters->SetParam(true,SaveResultsEnum);
+	void (*solutioncore)(FemModel*)=NULL;
+	CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
+	solutioncore(femmodel);
+
+	/*Clean-up and return*/
+	xDelete<int>(M);
+	xDelete<int>(N);
+	xDelete<double>(G);
+	xDelete<double>(X);
+	xDelete<double>(dz);
+	xDelete<double>(XU);
+	xDelete<double>(XL);
+	xDelete<double>(scaling_factors);
+	xDelete<double>(mystruct.Jlist);
+	xDelete<int>(mystruct.i);
+}/*}}}*/
+void simul(long* indic,long* n,double* X,double* pf,double* G,long izs[1],float rzs[1],void* dzs){/*{{{*/
+
+	/*Recover Arguments*/
+	m1qn3_struct *input_struct = (m1qn3_struct*)dzs;
+	FemModel     *femmodel     = input_struct->femmodel;
+	IssmPDouble  *Jlist        = input_struct->Jlist;
+	int           JlistM       = input_struct->M;
+	int           JlistN       = input_struct->N;
+	int          *Jlisti       = input_struct->i;
+
+	/*Recover some parameters*/
+	int num_responses,num_controls,solution_type;
+	double* scaling_factors = NULL;
+	int* M = NULL;
+	int* N = NULL;
+	femmodel->parameters->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	femmodel->parameters->FindParam(&N,NULL,ControlInputSizeNEnum);
+	femmodel->parameters->FindParam(&M,NULL,ControlInputSizeMEnum);
+	femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	femmodel->parameters->FindParamAndMakePassive(&scaling_factors,NULL,InversionControlScalingFactorsEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+
+	/*Constrain input vector and update controls*/
+	double *XL = NULL;
+	double *XU = NULL;
+	GetPassiveVectorFromControlInputsx(&XL,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"lowerbound");
+	GetPassiveVectorFromControlInputsx(&XU,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"upperbound");
+
+	int offset = 0;
+	for(int c=0;c<num_controls;c++){
+		for(int i=0;i<M[c]*N[c];i++){
+			int index = offset+i;
+			X[index] = X[index]*scaling_factors[c];
+			if(X[index]>XU[index]) X[index]=XU[index];
+			if(X[index]<XL[index]) X[index]=XL[index];
+		}
+		offset += M[c]*N[c];
+	}
+
+	#ifdef _HAVE_AD_
+	IssmDouble* aX=xNew<IssmDouble>(*n);
+	for(int i=0;i<*n;i++) aX[i] = reCast<IssmDouble>(X[i]); 
+	SetControlInputsFromVectorx(femmodel,aX);
+	xDelete(aX);
+	#else
+	SetControlInputsFromVectorx(femmodel,X);
+	#endif
+
+	/*Compute solution and adjoint*/
+	void (*solutioncore)(FemModel*)=NULL;
+	void (*adjointcore)(FemModel*)=NULL;
+	CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
+	solutioncore(femmodel);
+
+	/*Check size of Jlist to avoid crashes*/
+	_assert_((*Jlisti)<JlistM);
+	_assert_(JlistN==num_responses+1);
+
+	/*Compute objective function*/
+	IssmDouble* Jtemp = NULL;
+	IssmDouble  J;
+	femmodel->CostFunctionx(&J,&Jtemp,NULL);
+	*pf = reCast<double>(J);
+
+	/*Record cost function values and delete Jtemp*/
+	for(int i=0;i<num_responses;i++) Jlist[(*Jlisti)*JlistN+i] = reCast<double>(Jtemp[i]);
+	Jlist[(*Jlisti)*JlistN+num_responses] = *pf;
+	xDelete<IssmDouble>(Jtemp);
+
+	if(*indic==0){
+		/*dry run, no gradient required*/
+		InversionStatsIter( (*Jlisti)+1, *pf, NAN, &Jlist[(*Jlisti)*JlistN], num_responses);
+
+		*Jlisti = (*Jlisti) +1;
+		xDelete<double>(XU);
+		xDelete<double>(XL);
+		return;
+	}
+
+	/*Compute Adjoint*/
+	AdjointCorePointerFromSolutionEnum(&adjointcore,solution_type);
+	adjointcore(femmodel);
+
+	/*Compute gradient*/
+	IssmDouble* G2 = NULL;
+	Gradjx(&G2,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+	for(long i=0;i<*n;i++) G[i] = -reCast<double>(G2[i]);
+	xDelete<IssmDouble>(G2);
+
+	/*Constrain Gradient*/
+	IssmDouble  Gnorm = 0.;
+	offset = 0;
+	for(int c=0;c<num_controls;c++){
+		for(int i=0;i<M[c]*N[c];i++){
+			int index = offset+i;
+			if(X[index]>=XU[index]) G[index]=0.;
+			if(X[index]<=XL[index]) G[index]=0.;
+			G[index] = G[index]*scaling_factors[c];
+			X[index] = X[index]/scaling_factors[c];
+			Gnorm += G[index]*G[index];
+		}
+		offset += M[c]*N[c];
+	}
+	Gnorm = sqrt(Gnorm);
+
+	/*Print info*/
+	InversionStatsIter( (*Jlisti)+1, *pf, reCast<double>(Gnorm), &Jlist[(*Jlisti)*JlistN], num_responses);
+
+	/*Clean-up and return*/
+	*Jlisti = (*Jlisti) +1;
+	xDelete<int>(M);
+	xDelete<int>(N);
+	xDelete<double>(XU);
+	xDelete<double>(XL);
+	xDelete<double>(scaling_factors);
+}/*}}}*/
+
+#else
+void controlm1qn3_core(FemModel* femmodel){_error_("M1QN3 not installed");}
+#endif //_HAVE_M1QN3_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/controltao_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/controltao_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/controltao_core.cpp	(revision 27955)
@@ -0,0 +1,235 @@
+/*!\file: control_core.cpp
+ * \brief: core of the control solution 
+ */ 
+#include <config.h>
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+#if defined (_HAVE_TAO_)
+#if defined _HAVE_PETSC_
+#include <petscversion.h>
+#if PETSC_VERSION_LT(3,5,0)
+#include <tao.h>
+#else
+#include <petsctao.h>
+#endif
+#endif
+
+/*Local prototype*/
+#if PETSC_VERSION_LT(3,5,0)
+int FormFunctionGradient(TaoSolver,Vec,IssmDouble*,Vec,void*);
+int IssmMonitor(TaoSolver,void*);
+#else
+int FormFunctionGradient(Tao,Vec,IssmDouble*,Vec,void*);
+int IssmMonitor(Tao,void*);
+#endif
+typedef struct {
+	FemModel* femmodel;
+	double*   J;
+} AppCtx;
+
+void controltao_core(FemModel* femmodel){
+
+	/*TAO*/
+	int                 ierr;
+	int                 num_controls,solution_type;
+	int                 maxsteps,maxiter;
+	IssmDouble          gatol,grtol,gttol;
+	AppCtx              user;
+	#if PETSC_VERSION_LT(3,5,0)
+	TaoSolver           tao = 0;
+	#else
+	Tao                 tao = 0;
+	#endif
+	int                *control_list = NULL;
+	char               *algorithm    = NULL;
+	Vector<IssmDouble> *X            = NULL;
+	Vector<IssmDouble> *G            = NULL;
+	Vector<IssmDouble> *XL           = NULL;
+	Vector<IssmDouble> *XU           = NULL;
+
+	/*Initialize TAO*/
+	#if PETSC_VERSION_LT(3,5,0)
+	int argc; char **args=NULL;
+	PetscGetArgs(&argc,&args);
+	ierr = TaoInitialize(&argc,&args,(char*)0,"");
+	if(ierr) _error_("Could not initialize Tao");
+	#endif
+
+	/*Recover some parameters*/
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	femmodel->parameters->FindParam(&control_list,NULL,InversionControlParametersEnum);
+	femmodel->parameters->FindParam(&maxsteps,InversionMaxstepsEnum);
+	femmodel->parameters->FindParam(&maxiter,InversionMaxiterEnum);
+	femmodel->parameters->FindParam(&gatol,InversionGatolEnum);
+	femmodel->parameters->FindParam(&grtol,InversionGrtolEnum);
+	femmodel->parameters->FindParam(&gttol,InversionGttolEnum);
+	femmodel->parameters->FindParam(&algorithm,InversionAlgorithmEnum);
+	femmodel->parameters->SetParam(false,SaveResultsEnum);
+
+	/*Prepare Toolkit*/
+	ToolkitsOptionsFromAnalysis(femmodel->parameters,DefaultAnalysisEnum);
+
+	/*Initialize TAO*/
+	TaoCreate(IssmComm::GetComm(),&tao);
+	if(VerboseControl()) _printf0_("   Initializing the Toolkit for Advanced Optimization (TAO)\n");
+	TaoSetFromOptions(tao);
+	TaoSetType(tao,algorithm);
+
+	/*Prepare all TAO parameters*/
+	TaoSetMonitor(tao,IssmMonitor,&user,NULL);
+	TaoSetMaximumFunctionEvaluations(tao,maxiter);
+	TaoSetMaximumIterations(tao,maxsteps);
+	#if PETSC_VERSION_LT(3,7,0)
+	TaoSetTolerances(tao,0,0,gatol,grtol,gttol);
+	#else
+	TaoSetTolerances(tao,gatol,grtol,gttol);
+	#endif
+
+	GetVectorFromControlInputsx(&X, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"value");
+	GetVectorFromControlInputsx(&XL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"lowerbound");
+	GetVectorFromControlInputsx(&XU,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"upperbound");
+	#if PETSC_VERSION_LT(3,17,0)
+	TaoSetInitialVector(tao,X->pvector->vector);
+	#else
+	TaoSetSolution(tao,X->pvector->vector);
+	#endif
+	TaoSetVariableBounds(tao,XL->pvector->vector,XU->pvector->vector);
+	delete XL;
+	delete XU;
+
+	user.J=xNewZeroInit<double>(maxiter+5);
+	user.femmodel=femmodel;
+	G=new Vector<IssmDouble>(0); VecFree(&G->pvector->vector);
+	#if PETSC_VERSION_LT(3,17,0)
+	TaoSetObjectiveAndGradientRoutine(tao,FormFunctionGradient,(void*)&user); 
+	#else
+	TaoSetObjectiveAndGradient(tao,G->pvector->vector, FormFunctionGradient, (void*)&user);
+	#endif
+
+	/*Solver optimization problem*/
+	if(VerboseControl()) _printf0_("   Starting optimization\n");
+	TaoSolve(tao);
+	TaoView(tao,PETSC_VIEWER_STDOUT_WORLD);
+
+	/*Save results*/
+	#if PETSC_VERSION_LT(3,17,0)
+	TaoGetSolutionVector(tao,&X->pvector->vector);
+	#else
+	TaoGetSolution(tao,&X->pvector->vector);
+	#endif
+	#if PETSC_VERSION_LT(3,17,0)
+	TaoGetGradientVector(tao,&G->pvector->vector);
+	#else
+	TaoGetGradient(tao,&G->pvector->vector, NULL, NULL);
+	#endif
+	SetControlInputsFromVectorx(femmodel,X);
+	ControlInputSetGradientx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,G);
+	femmodel->OutputControlsx(&femmodel->results);
+	femmodel->results->AddObject(new GenericExternalResult<double*>(femmodel->results->Size()+1,JEnum,user.J,maxiter+3,1,0,0));
+
+	/*Finalize*/
+	if(VerboseControl()) _printf0_("   preparing final solution\n");
+	femmodel->parameters->SetParam(true,SaveResultsEnum);
+	void (*solutioncore)(FemModel*)=NULL;
+	CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
+	solutioncore(femmodel);
+
+	/*Clean up and return*/
+	xDelete<int>(control_list);
+	xDelete<char>(algorithm);
+	xDelete<double>(user.J);
+	delete X;
+	TaoDestroy(&tao);
+	#if PETSC_VERSION_LT(3,5,0)
+	TaoFinalize();
+	#endif
+	G->pvector->vector = NULL;
+	delete G;
+}
+
+#if PETSC_VERSION_LT(3,5,0)
+int FormFunctionGradient(TaoSolver tao, Vec Xpetsc, IssmDouble *fcn,Vec G,void *uservoid){
+#else
+int FormFunctionGradient(Tao tao, Vec Xpetsc, IssmDouble *fcn,Vec G,void *uservoid){
+#endif
+
+	/*Retreive arguments*/
+	int                  solution_type;
+	AppCtx              *user            = (AppCtx *)uservoid;
+	FemModel            *femmodel        = user->femmodel;
+	Vector<IssmDouble>  *gradient        = NULL;
+	Vector<IssmDouble>  *X               = NULL;
+
+	/*Convert input to Vec*/
+	X=new Vector<IssmDouble>(Xpetsc);
+
+	/*Set new variable*/
+	//VecView(X,PETSC_VIEWER_STDOUT_WORLD);
+	SetControlInputsFromVectorx(femmodel,X);
+	delete X;
+
+	/*Recover some parameters*/
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+
+	/*Compute solution and adjoint*/
+	void (*solutioncore)(FemModel*)=NULL;
+	void (*adjointcore)(FemModel*)=NULL;
+	CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
+	AdjointCorePointerFromSolutionEnum(&adjointcore,solution_type);
+	solutioncore(femmodel);
+	adjointcore(femmodel);
+
+	/*Compute objective function*/
+	femmodel->CostFunctionx(fcn,NULL,NULL);
+
+	/*Compute gradient*/
+	Gradjx(&gradient,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+	VecCopy(gradient->pvector->vector,G); delete gradient;
+	VecScale(G,-1.);
+
+	/*Clean-up and return*/
+	return 0;
+}
+#if PETSC_VERSION_LT(3,5,0)
+int IssmMonitor(TaoSolver tao, void *userCtx){
+#else
+int IssmMonitor(Tao tao, void *userCtx){
+#endif
+
+	int         its,num_responses;
+	IssmDouble  f,gnorm,cnorm,xdiff;
+	AppCtx     *user      = (AppCtx *)userCtx;
+	FemModel   *femmodel  = user->femmodel;
+	int        *responses = NULL;
+
+	femmodel->parameters->FindParam(&responses,&num_responses,InversionCostFunctionsEnum);
+
+	TaoGetSolutionStatus(tao, &its, &f, &gnorm, &cnorm, &xdiff, NULL);
+	if(its==0) _printf0_("Iter       Function      Residual  |  List of contributions\n");
+	if(its==0) _printf0_("___________________________________________________________\n");
+	_printf0_(setw(4)<<its<<"   "<<setw(12)<<setprecision(7)<<f<<"  "<<setw(12)<<setprecision(7)<<gnorm<<"  | ");
+	user->J[its]=f;
+
+	/*Retrieve objective functions independently*/
+	for(int i=0;i<num_responses;i++){
+		femmodel->Responsex(&f,EnumToStringx(responses[i]));
+		_printf0_(" "<<setw(12)<<setprecision(7)<<f);
+	}
+	_printf0_("\n");
+
+	/*Clean-up and return*/
+	xDelete<int>(responses);
+	return 0;
+}
+
+#else
+void controltao_core(FemModel* femmodel){
+	_error_("TAO not installed or PETSc version not supported");
+}
+#endif //_HAVE_TAO_ 
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/controlvalidation_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/controlvalidation_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/controlvalidation_core.cpp	(revision 27955)
@@ -0,0 +1,377 @@
+/*!\file: controlvalidation_core.cpp
+ * \brief: core of the control solution
+ */
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+#ifdef _HAVE_CODIPACK_
+extern CoDi_global codi_global;
+#include <sstream> // for output of the CoDiPack tape
+#endif
+
+#ifdef _HAVE_AD_
+void simul_starttrace2(FemModel* femmodel){/*{{{*/
+
+	#if defined(_HAVE_ADOLC_)
+	/*Retrive ADOLC parameters*/
+	IssmDouble gcTriggerRatio;
+	IssmDouble gcTriggerMaxSize;
+	IssmDouble obufsize;
+	IssmDouble lbufsize;
+	IssmDouble cbufsize;
+	IssmDouble tbufsize;
+	femmodel->parameters->FindParam(&gcTriggerRatio,AutodiffGcTriggerRatioEnum);
+	femmodel->parameters->FindParam(&gcTriggerMaxSize,AutodiffGcTriggerMaxSizeEnum);
+	femmodel->parameters->FindParam(&obufsize,AutodiffObufsizeEnum);
+	femmodel->parameters->FindParam(&lbufsize,AutodiffLbufsizeEnum);
+	femmodel->parameters->FindParam(&cbufsize,AutodiffCbufsizeEnum);
+	femmodel->parameters->FindParam(&tbufsize,AutodiffTbufsizeEnum);
+
+	/*Set garbage collection parameters: */
+	setStoreManagerControl(reCast<IssmPDouble>(gcTriggerRatio),reCast<size_t>(gcTriggerMaxSize));
+
+	/*Start trace: */
+	int skipFileDeletion=1;
+	int keepTaylors=1;
+	int my_rank=IssmComm::GetRank();
+	trace_on(my_rank,keepTaylors,reCast<size_t>(obufsize),reCast<size_t>(lbufsize),reCast<size_t>(cbufsize),reCast<size_t>(tbufsize),skipFileDeletion);
+
+	#elif defined(_HAVE_CODIPACK_)
+
+		//fprintf(stderr, "*** Codipack IoModel::StartTrace\n");
+		/*
+		 * FIXME codi
+		 * - ADOL-C variant uses fine grained tracing with various arguments
+		 * - ADOL-C variant sets a garbage collection parameter for its tape
+		 * -> These parameters are not read for the CoDiPack ISSM version!
+		 */
+		#if _CODIPACK_MAJOR_==2
+		auto& tape_codi = IssmDouble::getTape();
+		#elif _CODIPACK_MAJOR_==1
+		auto& tape_codi = IssmDouble::getGlobalTape();
+		#else
+		#error "_CODIPACK_MAJOR_ not supported"
+		#endif
+
+		tape_codi.setActive();
+		#if _AD_TAPE_ALLOC_
+		//alloc_profiler.Tag(StartInit, true);
+		IssmDouble x_t(1.0), y_t(1.0);
+		tape_codi.registerInput(y_t);
+		int codi_allocn = 0;
+		femmodel->parameters->FindParam(&codi_allocn,AutodiffTapeAllocEnum);
+		for(int i = 0;i < codi_allocn;++i) {
+			x_t = y_t * y_t;
+		}
+		/*
+		std::stringstream out_s;
+		IssmDouble::getTape().printStatistics(out_s);
+		_printf0_("StartTrace::Tape Statistics	   : TapeAlloc count=[" << codi_allocn << "]\n" << out_s.str());
+		*/
+		#endif
+
+	#else
+	_error_("not implemented");
+	#endif
+}/*}}}*/
+void simul_stoptrace2(){/*{{{*/
+
+	#if defined(_HAVE_ADOLC_)
+	trace_off();
+	if(VerboseAutodiff()){ /*{{{*/
+
+		#ifdef _HAVE_ADOLC_
+		int my_rank=IssmComm::GetRank();
+		size_t  tape_stats[15];
+		tapestats(my_rank,tape_stats); //reading of tape statistics
+		int commSize=IssmComm::GetSize();
+		int *sstats=new int[7];
+		sstats[0]=tape_stats[NUM_OPERATIONS];
+		sstats[1]=tape_stats[OP_FILE_ACCESS];
+		sstats[2]=tape_stats[NUM_LOCATIONS];
+		sstats[3]=tape_stats[LOC_FILE_ACCESS];
+		sstats[4]=tape_stats[NUM_VALUES];
+		sstats[5]=tape_stats[VAL_FILE_ACCESS];
+		sstats[6]=tape_stats[TAY_STACK_SIZE];
+		int *rstats=NULL;
+		if (my_rank==0) rstats=new int[commSize*7];
+		ISSM_MPI_Gather(sstats,7,ISSM_MPI_INT,rstats,7,ISSM_MPI_INT,0,IssmComm::GetComm());
+		if (my_rank==0) {
+			int offset=50;
+			int rOffset=(commSize/10)+1;
+			_printf_("   ADOLC statistics: \n");
+			_printf_("     "<<setw(offset)<<left<<"#independents: " <<setw(12)<<right<<tape_stats[NUM_INDEPENDENTS] << "\n");
+			_printf_("     "<<setw(offset)<<left<<"#dependents: " <<setw(12)<<right<<tape_stats[NUM_DEPENDENTS] << "\n");
+			_printf_("     "<<setw(offset)<<left<<"max #live active variables: " <<setw(12)<<right<<tape_stats[NUM_MAX_LIVES] << "\n");
+			_printf_("     operations: entry size "<< sizeof(unsigned char) << " Bytes \n");
+			_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffObufsizeEnum) " <<setw(12)<<right<<tape_stats[OP_BUFFER_SIZE] << "\n");
+			for (int r=0;r<commSize;++r)
+			 _printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+0] << (rstats[r*7+1]?" ->file":"") << "\n");
+			_printf_("     locations: entry size " << sizeof(locint) << " Bytes\n");
+			_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffLbufsizeEnum) " <<setw(12)<<right<<tape_stats[LOC_BUFFER_SIZE] << "\n");
+			for (int r=0;r<commSize;++r)
+			 _printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+2] << (rstats[r*7+3]?" ->file":"") << "\n");
+			_printf_("     constant values: entry size " << sizeof(double) << " Bytes\n");
+			_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffCbufsizeEnum) " <<setw(12)<<right<<tape_stats[VAL_BUFFER_SIZE] << "\n");
+			for (int r=0;r<commSize;++r)
+			 _printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+4] << (rstats[r*7+5]?" ->file":"") << "\n");
+			_printf_("     Taylor stack: entry size " << sizeof(revreal) << " Bytes\n");
+			_printf_("     "<<setw(offset)<<left<<"  #entries in buffer (AutodiffTbufsizeEnum) " <<setw(12)<<right<<tape_stats[TAY_BUFFER_SIZE] << "\n");
+			for (int r=0;r<commSize;++r)
+			 _printf_("       ["<<setw(rOffset)<<right<<r<<"]"<<setw(offset-rOffset-4)<<left<<" #entries total" <<setw(12)<<right<<rstats[r*7+6] << (rstats[r*7+6]>tape_stats[TAY_BUFFER_SIZE]?" ->file":"") << "\n");
+			delete []rstats;
+		}
+		delete [] sstats;
+		#endif
+
+		#ifdef _HAVE_CODIPACK_
+		#ifdef _AD_TAPE_ALLOC_
+		//_printf_("Allocation time  P(" << my_rank << "): " << alloc_profiler.DeltaTime(StartInit, FinishInit) << "\n");
+		#endif
+		std::stringstream out_s;
+		#if _CODIPACK_MAJOR_==2
+		IssmDouble::getTape().printStatistics(out_s);
+		#elif _CODIPACK_MAJOR_==1
+		IssmDouble::getGlobalTape().printStatistics(out_s);
+		#else
+		#error "_CODIPACK_MAJOR_ not supported"
+		#endif
+		_printf0_("CoDiPack Profiling::Tape Statistics :\n" << out_s.str());
+		#endif
+	} /*}}}*/
+
+	#elif defined(_HAVE_CODIPACK_)
+
+	#if _CODIPACK_MAJOR_==2
+	auto& tape_codi = IssmDouble::getTape();
+	#elif _CODIPACK_MAJOR_==1
+	auto& tape_codi = IssmDouble::getGlobalTape();
+	#else
+	#error "_CODIPACK_MAJOR_ not supported"
+	#endif
+
+	tape_codi.setPassive();
+	if(VerboseAutodiff()){
+		int my_rank=IssmComm::GetRank();
+		if(my_rank == 0) {
+			// FIXME codi "just because" for now
+			tape_codi.printStatistics(std::cout);
+			codi_global.print(std::cout);
+		}
+	}
+	#else
+	_error_("not implemented");
+	#endif
+}/*}}}*/
+#endif
+
+void controlvalidation_core(FemModel* femmodel){
+
+	int         solution_type,n;
+	int         num_responses;
+	IssmDouble  j0,j;
+	IssmDouble  Ialpha,exponent,alpha;
+	IssmDouble* scaling_factors = NULL;
+	IssmDouble* jlist = NULL;
+	int my_rank=IssmComm::GetRank();
+
+	/*Recover parameters used throughout the solution*/
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->SetParam(false,SaveResultsEnum);
+	femmodel->parameters->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	femmodel->parameters->FindParam(&scaling_factors,NULL,InversionControlScalingFactorsEnum);
+
+	/*Get initial guess*/
+	IssmPDouble* X0 = NULL;
+	GetPassiveVectorFromControlInputsx(&X0,&n,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"value");
+
+	/*Allocate vectors*/
+	IssmDouble*  X = xNew<IssmDouble>(n);
+	IssmPDouble* G = xNew<IssmPDouble>(n);
+
+	/*out of solution_type, figure out solution core and adjoint function pointer*/
+	void (*solutioncore)(FemModel*)=NULL;
+	CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
+
+	#if defined(_HAVE_ADOLC_)
+	/*{{{*/
+	IssmDouble* aX=xNew<IssmDouble>(n);
+	if(my_rank==0){
+		for(int i=0;i<n;i++){
+			aX[i]<<=X0[i];
+		}
+	}
+	_error_("not implemented yet...");
+	/*}}}*/
+	#elif defined(_HAVE_CODIPACK_)
+	/*{{{*/
+	simul_starttrace2(femmodel);
+	IssmDouble* aX=xNew<IssmDouble>(n);
+
+	#if _CODIPACK_MAJOR_==2
+	auto& tape_codi = IssmDouble::getTape();
+	#elif _CODIPACK_MAJOR_==1
+	auto& tape_codi = IssmDouble::getGlobalTape();
+	#else
+	#error "_CODIPACK_MAJOR_ not supported"
+	#endif
+
+	codi_global.input_indices.clear();
+	if(my_rank==0){
+		for (int i=0;i<n;i++) {
+			aX[i]=X0[i];
+			tape_codi.registerInput(aX[i]);
+			#if _CODIPACK_MAJOR_==2
+			codi_global.input_indices.push_back(aX[i].getIdentifier());
+			#elif _CODIPACK_MAJOR_==1
+			codi_global.input_indices.push_back(aX[i].getGradientData());
+			#else
+			#error "_CODIPACK_MAJOR_ not supported"
+			#endif
+
+		}
+	}
+	SetControlInputsFromVectorx(femmodel,aX);
+	xDelete(aX);
+
+	if(VerboseControl()) _printf0_("   Compute Initial cost function\n");
+	solutioncore(femmodel);
+
+	/*Get Dependents*/
+	int         num_dependents;
+	IssmPDouble *dependents;
+	DataSet     *dependent_objects = ((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value;
+	IssmDouble	J=0.;
+	femmodel->parameters->FindParam(&num_dependents,AutodiffNumDependentsEnum);
+
+	/*Go through our dependent variables, and compute the response:*/
+	dependents=xNew<IssmPDouble>(num_dependents);
+	codi_global.output_indices.clear();
+	int i=-1;
+	for(Object* & object:dependent_objects->objects){
+		DependentObject* dep=xDynamicCast<DependentObject*>(object);
+		i++;
+		dep->RecordResponsex(femmodel);
+		IssmDouble output_value = dep->GetValue();
+
+		_printf0_("=== output ="<<output_value<<" \n");
+		if(my_rank==0) {
+			tape_codi.registerOutput(output_value);
+			dependents[i] = output_value.getValue();
+			#if _CODIPACK_MAJOR_==2
+			codi_global.output_indices.push_back(output_value.getIdentifier());
+			#elif _CODIPACK_MAJOR_==1
+			codi_global.output_indices.push_back(output_value.getGradientData());
+			#else
+			#error "_CODIPACK_MAJOR_ not supported"
+			#endif
+
+			J+=output_value;
+		}
+	}
+	j0 = J;
+	_printf0_("Initial cost function J(x) = "<<setw(12)<<setprecision(7)<<j0<<"\n");
+	_assert_(j0>0.);
+	simul_stoptrace2();
+	/*initialize direction index in the weights vector: */
+	if(my_rank==0){
+		tape_codi.setGradient(codi_global.output_indices[0],1.0);
+	}
+	tape_codi.evaluate();
+
+	/*Get gradient for this dependent */
+	auto in_size = codi_global.input_indices.size();
+	for(size_t i = 0; i < in_size; ++i) {
+		G[i] = tape_codi.getGradient(codi_global.input_indices[i]);
+	}
+
+	/*Clear tape*/
+	tape_codi.reset();
+/*}}}*/
+	#else
+	/*{{{*/
+	void (*adjointcore)(FemModel*)  = NULL;
+	AdjointCorePointerFromSolutionEnum(&adjointcore,solution_type);
+
+	if(VerboseControl()) _printf0_("   Compute Initial solution\n");
+	solutioncore(femmodel);
+	if(VerboseControl()) _printf0_("   Compute Adjoint\n");
+	adjointcore(femmodel);
+
+	if(VerboseControl()) _printf0_("   Compute Initial cost function\n");
+	femmodel->CostFunctionx(&j0,&jlist,NULL);
+	_printf0_("Initial cost function J(x) = "<<setw(12)<<setprecision(7)<<j0<<"\n");
+	xDelete<IssmDouble>(jlist);
+
+	if(VerboseControl()) _printf0_("   Compute Gradient\n");
+	Gradjx(&G,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+	for(int i=0;i<n;i++) G[i] = -G[i];
+	/*}}}*/
+	#endif
+
+	/*Allocate output*/
+	int num = 26;
+	IssmDouble* output = xNew<IssmDouble>(2*num);
+
+	/*Start loop*/
+	_printf0_("       alpha      Ialpha \n");
+	_printf0_("_________________________\n");
+	for(int m=0;m<num;m++){
+
+		/*Create new vector*/
+		alpha    = pow(2.,-m);
+		for(int i=0;i<n;i++) X[i] = X0[i] + alpha*scaling_factors[0];
+
+		/*Calculate j(k+alpha delta k) */
+		SetControlInputsFromVectorx(femmodel,X);
+		solutioncore(femmodel);
+
+		#if defined(_HAVE_CODIPACK_)
+		j=0.;
+		for(Object* & object:dependent_objects->objects){
+			DependentObject* dep=xDynamicCast<DependentObject*>(object);
+			dep->RecordResponsex(femmodel);
+			IssmDouble output_value = dep->GetValue();
+			j+=output_value;
+		}
+		#else
+		femmodel->CostFunctionx(&j,NULL,NULL);
+		#endif
+
+		IssmDouble Den = 0.;
+		for(int i=0;i<n;i++) Den += alpha* G[i] * scaling_factors[0];
+		Ialpha = fabs((j - j0)/Den - 1.);
+		_assert_(fabs(Den)>0.);
+
+		_printf0_(" " << setw(11) << setprecision (5)<<alpha<<" " << setw(11) << setprecision (5)<<Ialpha<<"\n");
+		output[m*2+0] = alpha;
+		output[m*2+1] = Ialpha;
+	}
+
+	/*output*/
+	#ifdef _HAVE_AD_
+	IssmPDouble* J_passive=xNew<IssmPDouble>(2*num);
+	for(int i=0;i<2*num;i++) J_passive[i]=reCast<IssmPDouble>(output[i]);
+	femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,J_passive,num,2,0,0));
+	xDelete<IssmPDouble>(J_passive);
+	IssmDouble* aG=xNew<IssmDouble>(n);
+	for(int i=0;i<n;i++) aG[i] = G[i];
+	ControlInputSetGradientx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,aG);
+	xDelete<IssmDouble>(aG);
+	#else
+	femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,output,num,2,0,0));
+	ControlInputSetGradientx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,G);
+	#endif
+	femmodel->OutputControlsx(&femmodel->results);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(output);
+	xDelete<IssmPDouble>(G);
+	xDelete<IssmDouble>(X);
+	xDelete<double>(X0);
+	xDelete<IssmDouble>(scaling_factors);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/cores.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/cores.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/cores.h	(revision 27955)
@@ -0,0 +1,90 @@
+/*
+ * cores.h:
+ */
+
+#ifndef _CORES_H_
+#define _CORES_H_
+
+/*forward declarations: */
+class FemModel;
+class Parameters;
+class SealevelGeometry;
+template <class doubletype> class Matrix;
+template <class doubletype> class Vector;
+
+#include "../shared/io/Comm/IssmComm.h"
+#include "../shared/Numerics/types.h"
+
+/*cores: */
+void adjointstressbalance_core(FemModel* femmodel);
+void adjointbalancethickness_core(FemModel* femmodel);
+void adjointbalancethickness2_core(FemModel* femmodel);
+void stressbalance_core(FemModel* femmodel);
+void hydrology_core(FemModel* femmodel);
+void thermal_core(FemModel* femmodel);
+void surfaceslope_core(FemModel* femmodel);
+void levelsetfunctionslope_core(FemModel* femmodel);
+void movingfront_core(FemModel* femmodel);
+void groundingline_core(FemModel* femmodel);
+void bedslope_core(FemModel* femmodel);
+void meshdeformation_core(FemModel* femmodel);
+void control_core(FemModel* femmodel);
+void controltao_core(FemModel* femmodel);
+void controlm1qn3_core(FemModel* femmodel);
+void controladm1qn3_core(FemModel* femmodel);
+void controlvalidation_core(FemModel* femmodel);
+void masstransport_core(FemModel* femmodel);
+void oceantransport_core(FemModel* femmodel);
+void depthaverage_core(FemModel* femmodel);
+void extrudefrombase_core(FemModel* femmodel);
+void extrudefromtop_core(FemModel* femmodel);
+void balancethickness_core(FemModel* femmodel);
+void balancethickness2_core(FemModel* femmodel);
+void balancevelocity_core(FemModel* femmodel);
+void slopecompute_core(FemModel* femmodel);
+void steadystate_core(FemModel* femmodel);
+void transient_core(FemModel* femmodel);
+void transient_precore(FemModel* femmodel);
+void dakota_core(FemModel* femmodel);
+void ad_core(FemModel* femmodel);
+void adgradient_core(FemModel* femmodel);
+void dummy_core(FemModel* femmodel);
+void gia_core(FemModel* femmodel);
+void love_core(FemModel* femmodel);
+void esa_core(FemModel* femmodel);
+void smb_core(FemModel* femmodel);
+void bmb_core(FemModel* femmodel);
+void damage_core(FemModel* femmodel);
+void sampling_core(FemModel* femmodel);
+void debris_core(FemModel* femmodel);
+
+/*sealevel change cores:*/
+#ifdef _HAVE_SEALEVELCHANGE_
+void sealevelchange_core(FemModel* femmodel);
+void sealevelchange_initialgeometry(FemModel* femmodel);
+SealevelGeometry* sealevelchange_geometry(FemModel* femmodel);
+#endif
+void grd_core(FemModel* femmodel,SealevelGeometry* slgeom);
+void solidearthexternal_core(FemModel* femmodel);
+void dynstr_core(FemModel* femmodel);
+void couplerinput_core(FemModel* femmodel);
+void coupleroutput_core(FemModel* femmodel);
+
+//optimization
+int GradJSearch(IssmDouble* search_vector,FemModel* femmodel,int step);
+IssmDouble objectivefunction(IssmDouble search_scalar,FemModel* femmodel);
+
+//diverse
+void ProcessArguments(int* solution,char** pbinname,char** poutbinname,char** ptoolkitsname,char** plockname,char** prestartname, char** prootpath,char** pmodelname, int argc,char **argv);
+void WriteLockFile(char* filename);
+void ResetBoundaryConditions(FemModel* femmodel, int analysis_type);
+void PrintBanner(void);
+void EarthMassTransport(FemModel* femmodel);
+
+//solution configuration
+void CorePointerFromSolutionEnum(void (**psolutioncore)(FemModel*),Parameters* parameters,int solutiontype);
+void WrapperCorePointerFromSolutionEnum(void (**psolutioncore)(FemModel*),Parameters* parameters,int solutiontype,bool nodakotacore=false);
+void WrapperPreCorePointerFromSolutionEnum(void (**psolutioncore)(FemModel*),Parameters* parameters,int solutiontype);
+void AdjointCorePointerFromSolutionEnum(void (**padjointcore)(FemModel*),int solutiontype);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/dakota_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/dakota_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/dakota_core.cpp	(revision 27955)
@@ -0,0 +1,316 @@
+/*!\file:  dakota_core.cpp
+ * \brief: wrapper to the Dakota capabilities. qmu fires up Dakota, and registers a Dakota Plugin
+ * which will be in charge of running the solution sequences repeatedly, to garner statistics.
+ *
+ * This routine deals with running ISSM and Dakota in library mode. In library mode, Dakota does not
+ * run as an executable. Its capabilities are linked into the ISSM software. ISSM calls Dakota routines
+ * directly from the Dakota library. qmu.cpp is the code that is in charge of calling those routines.
+ *
+ * Dakota has its own way of running in parallel (for embarrassingly parallel jobs). We do not want that,
+ * as ISSM knows exactly how to run "really parallel" jobs that use all CPUS. To bypass Dakota's parallelism,
+ * we overloaded the constructor for the parallel library (see the Dakota patch in the externalpackages/dakota
+ * directory). This overloaded constructor fires up Dakota serially on CPU 0 only! We take care of broadcasting
+ * to the other CPUS, hence ISSM is running in parallel, and Dakota serially on CPU0.
+ *
+ * Now, how does CPU 0 drive all other CPUS to carry out sensitivity analyses? By synchronizing its call to
+ * our ISSM cores (stressbalance_core, thermal_core, transient_core, etc ...) on CPU 0 with all other CPUS.
+ * This explains the structure of qmu.cpp, where cpu 0 runs Dakota, the Dakota pluggin fires up DakotaSpawnCore.cpp,
+ * while the other CPUS are waiting for a broadcast from CPU0, once they get it, they also fire up
+ * DakotaSpawnCore. In the end, DakotaSpawnCore is fired up on all CPUS, with CPU0 having Dakota inputs, that it will
+ * broadcast to other CPUS.
+ *
+ * Now, how does Dakota call the DakotaSpawnCore routine? The DakotaSpawnCore is embedded into the DakotaPlugin object
+ * which is derived from the Direct Interface Dakota object. This is the only way to run Dakota in library
+ * mode (see their developer guide for more info). Dakota registers the DakotaPlugin object into its own
+ * database, and calls on the embedded DakotaSpawnCore from CPU0.
+ *
+ */
+
+ /* \brief: run core ISSM solution using Dakota inputs coming from CPU 0.
+ * \sa qmu.cpp DakotaPlugin.cpp
+ *
+ * This routine needs to be understood simultaneously with qmu.cpp and DakotaPlugin.
+ * DakotaSpawnCoreParallel is called by all CPUS, with CPU 0 holding Dakota variable values, along
+ * with variable descriptors.
+ *
+ * DakotaSpawnCoreParallel takes care of broadcasting the variables and their descriptors across the MPI
+ * ring. Once this is done, we use the variables to modify the inputs for the solution core.
+ * For ex, if "rho_ice" is provided, for ex 920, we include "rho_ice" in the inputs, then
+ * call the core with the modified inputs. This is the way we get Dakota to explore the parameter
+ * space of the core.
+ *
+ * Once the core is called, we process the results of the core, and using the processed results,
+ * we compute response functions. The responses are computed on all CPUS, but they are targeted
+ * for CPU 0, which will get these values back to the Dakota engine.
+ *
+ */
+
+/*include config: {{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+/*}}}*/
+
+/*include ISSM files: */
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../shared/shared.h"
+#include "../classes/classes.h"
+#include "../modules/modules.h"
+
+#if defined(_HAVE_DAKOTA_) && (_DAKOTA_MAJOR_ <= 5) //this only works for Dakota <=5, which had no effective parallel capabilities yet.
+/*Dakota include files:{{{*/
+#if (_DAKOTA_MAJOR_ < 5 || (_DAKOTA_MAJOR_ == 5 && _DAKOTA_MINOR_ < 3))
+#include <ParallelLibrary.H>
+#include <ProblemDescDB.H>
+#include <DakotaStrategy.H>
+#include <DakotaModel.H>
+#include <DakotaInterface.H>
+#else
+#include <ParallelLibrary.hpp>
+#include <ProblemDescDB.hpp>
+#include <DakotaStrategy.hpp>
+#include <DakotaModel.hpp>
+#include <DakotaInterface.hpp>
+#endif
+/*}}}*/
+
+void DakotaFree(double** pvariables,char*** pvariables_descriptors,char*** presponses_descriptors,int numvariables,int numresponses){ /*{{{*/
+
+	/*\brief DakotaFree: free allocations on other CPUs, not done by Dakota.*/
+
+	int i;
+	int my_rank;
+
+	double  *variables             = NULL;
+	char   **variables_descriptors = NULL;
+	char   **responses_descriptors = NULL;
+	char    *string                = NULL;
+
+	/*recover pointers: */
+	variables=*pvariables;
+	variables_descriptors=*pvariables_descriptors;
+	responses_descriptors=*presponses_descriptors;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	/*Free variables and variables_descriptors only on CPU !=0*/
+	if(my_rank!=0){
+		xDelete<double>(variables);
+		for(i=0;i<numvariables;i++){
+			string=variables_descriptors[i];
+			xDelete<char>(string);
+		}
+		xDelete<char*>(variables_descriptors);
+	}
+
+	//responses descriptors on every CPU
+	for(i=0;i<numresponses;i++){
+		string=responses_descriptors[i];
+		xDelete<char>(string);
+	}
+	//rest of dynamic allocations.
+	xDelete<char*>(responses_descriptors);
+
+	/*Assign output pointers:*/
+	*pvariables=variables;
+	*pvariables_descriptors=variables_descriptors;
+	*presponses_descriptors=responses_descriptors;
+} /*}}}*/
+void DakotaMPI_Bcast(double** pvariables, char*** pvariables_descriptors,int* pnumvariables, int* pnumresponses){ /*{{{*/
+
+	/* * \brief: broadcast variables_descriptors, variables, numvariables and numresponses
+	 * from CPU 0 to all other CPUs.
+	 */
+
+	int i;
+	int my_rank;
+
+	/*inputs and outputs: */
+	double* variables=NULL;
+	char**  variables_descriptors=NULL;
+	int     numvariables;
+	int     numresponses;
+
+	/*intermediary: */
+	char* string=NULL;
+	int   string_length;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	/*recover inputs from pointers: */
+	variables=*pvariables;
+	variables_descriptors=*pvariables_descriptors;
+	numvariables=*pnumvariables;
+	numresponses=*pnumresponses;
+
+	/*numvariables: */
+	ISSM_MPI_Bcast(&numvariables,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*variables:*/
+	if(my_rank!=0)variables=xNew<double>(numvariables);
+	ISSM_MPI_Bcast(variables,numvariables,MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*variables_descriptors: */
+	if(my_rank!=0){
+		variables_descriptors=xNew<char*>(numvariables);
+	}
+	for(i=0;i<numvariables;i++){
+		if(my_rank==0){
+			string=variables_descriptors[i];
+			string_length=(strlen(string)+1)*sizeof(char);
+		}
+		ISSM_MPI_Bcast(&string_length,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+		if(my_rank!=0)string=xNew<char>(string_length);
+		ISSM_MPI_Bcast(string,string_length,ISSM_MPI_CHAR,0,IssmComm::GetComm());
+		if(my_rank!=0)variables_descriptors[i]=string;
+	}
+
+	/*numresponses: */
+	ISSM_MPI_Bcast(&numresponses,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Assign output pointers:*/
+	*pnumvariables=numvariables;
+	*pvariables=variables;
+	*pvariables_descriptors=variables_descriptors;
+	*pnumresponses=numresponses;
+} /*}}}*/
+int  DakotaSpawnCore(double* d_responses, int d_numresponses, double* d_variables, char** d_variables_descriptors,int d_numvariables, void* void_femmodel,int counter){ /*{{{*/
+
+	/*Notice the d_, which prefixes anything that is being provided to us by the Dakota plugin. Careful: some things are ours; some are DDkota's!: */
+
+	char     **responses_descriptors    = NULL;      //these are our! there are only numresponsedescriptors of them, not d_numresponses!!!
+	int        numresponsedescriptors;
+	int        solution_type;
+	bool       control_analysis         = false;
+	void     (*solutioncore)(FemModel*) = NULL;
+	FemModel  *femmodel                 = NULL;
+	bool       nodakotacore             = true;
+
+	/*If counter==-1 on CPU 0, it means that the Dakota runs are done. In which case, bail out and return 0: */
+	ISSM_MPI_Bcast(&counter,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	if(counter==-1)return 0;
+
+	/*cast void_femmodel to FemModel, and at the same time, make a copy, so we start this new core run for this specific sample
+	 *with a brand new copy of the model, which has not been tempered with by previous Dakota runs: */
+	femmodel=(reinterpret_cast<FemModel*>(void_femmodel))->copy();
+
+	/*retrieve parameters: */
+	femmodel->parameters->FindParam(&responses_descriptors,&numresponsedescriptors,QmuResponsedescriptorsEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+
+	if(VerboseQmu()) _printf0_("qmu iteration: " << counter << "\n");
+
+	/* only CPU 0, running Dakota is providing us with variables and variables_descriptors and numresponses: broadcast onto other CPUs: */
+	DakotaMPI_Bcast(&d_variables,&d_variables_descriptors,&d_numvariables,&d_numresponses);
+
+	/*Modify core inputs in objects contained in femmodel, to reflect the dakota variables inputs: */
+	InputUpdateFromDakotax(femmodel,d_variables,d_variables_descriptors,d_numvariables);
+
+	/*Determine solution sequence: */
+	if(VerboseQmu()) _printf0_("Starting " << EnumToStringx(solution_type) << " core:\n");
+	WrapperCorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type,nodakotacore);
+
+	/*Run the core solution sequence: */
+	solutioncore(femmodel);
+
+	/*compute responses: */
+	if(VerboseQmu()) _printf0_("compute dakota responses:\n");
+	femmodel->DakotaResponsesx(d_responses,responses_descriptors,numresponsedescriptors,d_numresponses);
+
+	/*output for this core:*/
+	if(VerboseQmu()) _printf0_("outputing results for this core:\n");
+	OutputResultsx(femmodel);
+
+	/*Free resources:*/
+	DakotaFree(&d_variables,&d_variables_descriptors,&responses_descriptors, d_numvariables, numresponsedescriptors);
+
+	/*Avoid leaks here: */
+	delete femmodel;
+
+	return 1; //this is critical! do not return 0, otherwise, dakota_core will stop running!
+}
+/*}}}*/
+void dakota_core(FemModel* femmodel){  /*{{{*/
+
+	int                my_rank;
+	char              *dakota_input_file  = NULL;
+	char              *dakota_output_file = NULL;
+	char              *dakota_error_file  = NULL;
+	Dakota::ModelLIter ml_iter;
+
+	/*Recover dakota_input_file, dakota_output_file and dakota_error_file, in the parameters dataset in parallel */
+	femmodel->parameters->FindParam(&dakota_input_file,QmuInNameEnum);
+	femmodel->parameters->FindParam(&dakota_output_file,QmuOutNameEnum);
+	femmodel->parameters->FindParam(&dakota_error_file,QmuErrNameEnum);
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	if(my_rank==0){
+
+		// Instantiate/initialize the parallel library and problem description
+		// database objects.
+		char* dakotamode=xNew<char>(strlen("serial")+1);
+		xMemCpy<char>(dakotamode,"serial",strlen("serial")+1);
+		Dakota::ParallelLibrary parallel_lib(dakotamode); //use our own ISSM Dakota library mode constructor, which only fires up Dakota on CPU 0.
+		Dakota::ProblemDescDB problem_db(parallel_lib);
+		xDelete<char>(dakotamode);
+
+		// Manage input file parsing, output redirection, and restart processing
+		// without a CommandLineHandler.  This version relies on parsing of an
+		// input file.
+		problem_db.manage_inputs(dakota_input_file);
+		// specify_outputs_restart() is only necessary if specifying non-defaults
+		parallel_lib.specify_outputs_restart(dakota_output_file,dakota_error_file,NULL,NULL);
+
+		// Instantiate the Strategy object (which instantiates all Model and
+		// Iterator objects) using the parsed information in problem_db.
+		Dakota::Strategy selected_strategy(problem_db);
+
+		// convenience function for iterating over models and performing any
+		// interface plug-ins
+		Dakota::ModelList& models = problem_db.model_list();
+
+		for (ml_iter = models.begin(); ml_iter != models.end(); ml_iter++) {
+
+			Dakota::Interface& interface = ml_iter->interface();
+
+			//set DB nodes to the existing Model specification
+			problem_db.set_db_model_nodes(ml_iter->model_id());
+
+			// Serial case: plug in derived Interface object without an analysisComm
+			interface.assign_rep(new SIM::IssmDirectApplicInterface(problem_db,(void*)femmodel), false);
+		}
+
+		// Execute the strategy
+		problem_db.lock(); // prevent run-time DB queries
+		selected_strategy.run_strategy();
+
+		//Warn other CPUs that we are done running the Dakota iterator, by setting the counter to -1:
+		DakotaSpawnCore(NULL,0, NULL,NULL,0,femmodel,-1);
+
+	}
+	else{
+
+		for(;;){
+			if(!DakotaSpawnCore(NULL,0, NULL,NULL,0,femmodel,0)) break; //counter came in at -1 on CPU 0, bail out.
+		}
+	}
+
+	/*Free resources:*/
+	xDelete<char>(dakota_input_file);
+	xDelete<char>(dakota_error_file);
+	xDelete<char>(dakota_output_file);
+
+} /*}}}*/
+#else
+void dakota_core(FemModel* femmodel){
+	_error_("dakota_core for versions of Dakota >=6 should not be used anymore! Use instead the issm_dakota executable!");
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/damage_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/damage_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/damage_core.cpp	(revision 27955)
@@ -0,0 +1,55 @@
+/*
+ * \brief: damage_core.cpp: core for the damage solution
+ */
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void damage_core(FemModel* femmodel){
+
+	/*Start profiler*/
+	femmodel->profiler->Start(DAMAGECORE);
+
+	/*intermediary*/
+	bool   save_results;
+	bool   dakota_analysis     = false;
+	int    solution_type,stabilization;
+	int    numoutputs          = 0;
+	char   **requested_outputs = NULL;
+
+	//first recover parameters common to all solutions
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&numoutputs,DamageEvolutionNumRequestedOutputsEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,DamageEvolutionRequestedOutputsEnum);
+	femmodel->parameters->FindParam(&stabilization,DamageStabilizationEnum);
+
+	if(VerboseSolution()) _printf0_("   computing damage\n");
+	Damagex(femmodel); /* optionally calculate damage analytically first */
+	femmodel->SetCurrentConfiguration(DamageEvolutionAnalysisEnum);
+	if(stabilization==4){
+		solutionsequence_fct(femmodel);
+	}
+	else{
+		solutionsequence_linear(femmodel);
+	}
+
+	if(save_results){
+		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+	}
+
+	/*Free resources:*/
+	if(numoutputs){
+		for(int i=0;i<numoutputs;i++){
+			xDelete<char>(requested_outputs[i]);
+		}
+		xDelete<char*>(requested_outputs);
+	}
+
+	/*End profiler*/
+	femmodel->profiler->Stop(DAMAGECORE);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/debris_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/debris_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/debris_core.cpp	(revision 27955)
@@ -0,0 +1,69 @@
+/*!\file: debris_core.cpp
+ * \brief: core of the debris solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../classes/Inputs/TransientInput.h"
+
+void debris_core(FemModel* femmodel){ /*{{{*/
+
+	/*Start profiler*/
+	femmodel->profiler->Start(DEBRISCORE);
+
+	/*parameters: */
+	int    numoutputs,domaintype;
+	bool   save_results;
+	int    solution_type,stabilization;
+	char** requested_outputs = NULL;
+	DebrisAnalysis * debris_analysis = NULL;
+
+	/*activate configuration*/
+	femmodel->SetCurrentConfiguration(DebrisAnalysisEnum);
+
+	/*recover parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&numoutputs,DebrisNumRequestedOutputsEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,DebrisRequestedOutputsEnum);
+
+	if(VerboseSolution()) _printf0_("   computing debris transport\n");
+
+	// We need surface slopes for removal model
+	surfaceslope_core(femmodel);
+
+	/*Transport Debris*/
+	if(VerboseSolution()) _printf0_("   call computational core\n");
+	femmodel->inputs->DuplicateInput(VxEnum,VxDebrisEnum);
+	if(domaintype!=Domain2DverticalEnum){
+		femmodel->inputs->DuplicateInput(VyEnum,VyDebrisEnum);	
+	}
+	femmodel->parameters->SetParam(VxEnum,InputToDepthaverageInEnum);
+	femmodel->parameters->SetParam(VxAverageEnum,InputToDepthaverageOutEnum);
+	depthaverage_core(femmodel);
+	if(domaintype!=Domain2DverticalEnum){
+		femmodel->parameters->SetParam(VyEnum,InputToDepthaverageInEnum);
+		femmodel->parameters->SetParam(VyAverageEnum,InputToDepthaverageOutEnum);
+		depthaverage_core(femmodel);
+	}
+
+	debris_analysis = new DebrisAnalysis();
+	debris_analysis->Core(femmodel);
+	delete debris_analysis;	
+
+	femmodel->parameters->SetParam(DebrisThicknessEnum,InputToExtrudeEnum);
+	extrudefromtop_core(femmodel);	
+
+	if(save_results) femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+	if(solution_type==DebrisSolutionEnum)femmodel->RequestedDependentsx();
+
+	/*Free resources:*/
+	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+
+	/*profiler*/
+	femmodel->profiler->Stop(DEBRISCORE);
+} /*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/depthaverage_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/depthaverage_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/depthaverage_core.cpp	(revision 27955)
@@ -0,0 +1,41 @@
+/*!\file: depthaverage_core.cpp
+ * \brief: core of the extrusion solution
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../modules/modules.h"
+
+void depthaverage_core(FemModel* femmodel){
+
+	/*Intermediaries*/
+	int domaintype,elementtype;
+	int inputenum,input_average_enum;
+
+	/*Get parameters*/
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&elementtype,MeshElementtypeEnum);
+	femmodel->parameters->FindParam(&inputenum,InputToDepthaverageInEnum);
+	femmodel->parameters->FindParam(&input_average_enum,InputToDepthaverageOutEnum);
+
+	/*If this is a 2D horizontal domain: no need to do anything, just copy input*/
+	if(domaintype==Domain2DhorizontalEnum || domaintype==Domain3DsurfaceEnum){
+		InputDuplicatex(femmodel,inputenum,input_average_enum);
+		return;
+	}
+
+	if(VerboseSolution()) _printf0_("   depth averaging "<<EnumToStringx(inputenum)<<"\n");
+
+	/*Special method for Penta, otherwise call solution sequence*/
+	if(elementtype==PentaEnum){
+		InputDepthAverageAtBasex(femmodel,inputenum,input_average_enum);
+	}
+	else{
+		/*Call on core computations: */
+		femmodel->SetCurrentConfiguration(DepthAverageAnalysisEnum);
+		solutionsequence_linear(femmodel);
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/dummy_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/dummy_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/dummy_core.cpp	(revision 27955)
@@ -0,0 +1,11 @@
+/*!\file: dummy_core.cpp
+ * \brief: dummy core (nothing done)
+ */ 
+
+class FemModel;
+
+void dummy_core(FemModel* femmodel){
+
+	/*We do not do anything*/
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/esa_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/esa_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/esa_core.cpp	(revision 27955)
@@ -0,0 +1,121 @@
+/*!\file: esa_core.cpp
+ * \brief: core of the ESA solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void esa_core(FemModel* femmodel){ /*{{{*/
+
+	/*Start profiler*/
+	femmodel->profiler->Start(ESACORE);
+
+	Vector<IssmDouble> *U_radial  = NULL; 
+	Vector<IssmDouble> *U_north   = NULL; 
+	Vector<IssmDouble> *U_east    = NULL; 
+	Vector<IssmDouble> *U_x   = NULL; 
+	Vector<IssmDouble> *U_y    = NULL; 
+	bool save_results,isesa;
+	int iscoupler;
+	int domaintype;
+	int solution_type;
+	int        numoutputs        = 0;
+	char     **requested_outputs = NULL;
+
+	/*additional parameters: */
+	int  gsize;
+	bool spherical=true;
+	IssmDouble          *latitude   = NULL;
+	IssmDouble          *longitude  = NULL;
+	IssmDouble          *radius     = NULL;
+	IssmDouble          *xx     = NULL;
+	IssmDouble          *yy     = NULL;
+	IssmDouble          *zz     = NULL;
+
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&isesa,TransientIsesaEnum);
+	femmodel->parameters->FindParam(&iscoupler,IsSlcCouplingEnum);
+
+	/* recover coordinates of vertices: */
+	VertexCoordinatesx(&latitude,&longitude,&radius,femmodel->vertices,spherical); 
+	VertexCoordinatesx(&xx,&yy,&zz,femmodel->vertices); 
+
+	/*Figure out size of g-set deflection vector and allocate solution vector: */
+	gsize      = femmodel->nodes->NumberOfDofs(GsetEnum);
+
+	/*several cases here, depending on value of iscoupler and isesa: 
+	solution_type == EsaSolutionEnum)       we are running elastic adjustment core (no coupler)
+	( !iscoupler & !isesa)       we are not interested in being here :) 
+	( !iscoupler & isesa)        we are running in uncoupled mode
+	( iscoupler & isesa)         we are running in coupled mode, and better be earth
+	( iscoupler & !isesa)        we are running in coupled mode, and better be an ice cap
+	*/
+
+	if(solution_type==EsaSolutionEnum){
+		isesa=1;
+		iscoupler=0;
+	}
+
+	/*early return: */
+	if(!iscoupler & !isesa) return;  //we are not interested in being here :) 
+
+	/*In what follows we assume we are all running esa, either in coupled, or uncoupled mode:*/
+	if(VerboseSolution()) _printf0_("   computing elastic adjustment\n");
+
+	/*set configuration: */
+	if(isesa)femmodel->SetCurrentConfiguration(EsaAnalysisEnum);
+
+	if(VerboseSolution()) _printf0_("   computing elastic geodetic core\n");
+	if(isesa){
+
+		/*compute components of 3-D crustal motion: */
+		/*Initialize:*/
+		U_radial = new Vector<IssmDouble>(gsize);
+		U_north = new Vector<IssmDouble>(gsize);
+		U_east = new Vector<IssmDouble>(gsize);
+		U_x = new Vector<IssmDouble>(gsize);
+		U_y = new Vector<IssmDouble>(gsize);
+
+		/*call the geodetic main modlule:*/ 
+		if(domaintype==Domain3DsurfaceEnum){
+			femmodel->EsaGeodetic3D(U_radial,U_north,U_east,latitude,longitude,radius,xx,yy,zz); 
+		}
+		if(domaintype==Domain2DhorizontalEnum){
+			femmodel->EsaGeodetic2D(U_radial,U_north,U_east,U_x,U_y,xx,yy); 
+			InputUpdateFromVectorx(femmodel,U_x,EsaXmotionEnum,VertexSIdEnum);
+			InputUpdateFromVectorx(femmodel,U_y,EsaYmotionEnum,VertexSIdEnum);
+		}
+
+		/*get results into elements:*/
+		InputUpdateFromVectorx(femmodel,U_radial,EsaUmotionEnum,VertexSIdEnum);	// radial displacement 
+		InputUpdateFromVectorx(femmodel,U_north,EsaNmotionEnum,VertexSIdEnum);	// north motion 
+		InputUpdateFromVectorx(femmodel,U_east,EsaEmotionEnum,VertexSIdEnum);		// east motion 
+
+		if(save_results){
+			femmodel->parameters->FindParam(&requested_outputs,&numoutputs,EsaRequestedOutputsEnum);
+			femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+		}
+
+		if(solution_type==EsaSolutionEnum)femmodel->RequestedDependentsx();
+
+		/*Free resources:*/	
+		delete U_radial;
+		delete U_north;
+		delete U_east;
+		delete U_x; 
+		delete U_y; 
+		if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+	}
+
+	/*End profiler*/
+	femmodel->profiler->Stop(ESACORE);
+
+} 
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/extrudefrombase_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/extrudefrombase_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/extrudefrombase_core.cpp	(revision 27955)
@@ -0,0 +1,39 @@
+/*!\file: extrudefrombase_core.cpp
+ * \brief: core of the extrusion solution
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../modules/modules.h"
+
+void extrudefrombase_core(FemModel* femmodel){
+
+	/*Intermediaries*/
+	int elementtype,domaintype;
+
+	/*Get parameters*/
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&elementtype,MeshElementtypeEnum);
+
+	/*If this is a 2D horizontal domain, return (no need to extrude)*/
+	if(domaintype==Domain2DhorizontalEnum) return;
+	if(domaintype==Domain3DsurfaceEnum) return;
+
+	int inputenum;
+	femmodel->parameters->FindParam(&inputenum,InputToExtrudeEnum);
+	if(VerboseSolution()) _printf0_("   extruding "<<EnumToStringx(inputenum)<<" from base...\n");
+
+	/*Special method for Penta, otherwise call solution sequence*/
+	if(elementtype==PentaEnum){
+		InputExtrudex(femmodel,inputenum,-1);
+	}
+	else{
+		/*Call on core computations: */
+		femmodel->SetCurrentConfiguration(ExtrudeFromBaseAnalysisEnum);
+		femmodel->UpdateConstraintsExtrudeFromBasex();
+		solutionsequence_linear(femmodel);
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/extrudefromtop_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/extrudefromtop_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/extrudefromtop_core.cpp	(revision 27955)
@@ -0,0 +1,38 @@
+/*!\file: extrudefromtop_core.cpp
+ * \brief: core of the extrusion solution
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../modules/modules.h"
+
+void extrudefromtop_core(FemModel* femmodel){
+
+	/*Intermediaries*/
+	int elementtype,domaintype;
+
+	if(VerboseSolution()) _printf0_("   extruding solution from top...\n");
+
+	/*Get parameters*/
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&elementtype,MeshElementtypeEnum);
+
+	/*If this is a 2D horizontal domain, return (no need to extrude)*/
+	if(domaintype==Domain2DhorizontalEnum) return;
+	if(domaintype==Domain3DsurfaceEnum) return;
+
+	/*Special method for Penta, otherwise call solution sequence*/
+	if(elementtype==PentaEnum){
+		int inputenum; femmodel->parameters->FindParam(&inputenum,InputToExtrudeEnum);
+		InputExtrudex(femmodel,inputenum,+1);
+	}
+	else{
+		/*Call on core computations: */
+		femmodel->SetCurrentConfiguration(ExtrudeFromTopAnalysisEnum);
+		femmodel->UpdateConstraintsExtrudeFromTopx();
+		solutionsequence_linear(femmodel);
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/groundingline_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/groundingline_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/groundingline_core.cpp	(revision 27955)
@@ -0,0 +1,47 @@
+/*!\file: groundingline_core.cpp
+ * \brief: core of the groundingline solution
+ */
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void groundingline_core(FemModel* femmodel){
+
+	/*Start profiler*/
+	femmodel->profiler->Start(GROUNDINGLINECORE);
+
+	/* intermediaries */
+	int numoutputs;
+	bool save_results;
+	char** requested_outputs = NULL;
+
+	/* recover parameters */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&numoutputs,GroundinglineNumRequestedOutputsEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,GroundinglineRequestedOutputsEnum);
+
+	/*Move grounding line*/
+	if(VerboseSolution()) _printf0_("   computing new grounding line position\n");
+	GroundinglineMigrationx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+
+	/*Update geometry and mask accordingly*/
+	femmodel->parameters->SetParam(MaskOceanLevelsetEnum,InputToExtrudeEnum);
+	extrudefrombase_core(femmodel);
+	femmodel->parameters->SetParam(BaseEnum,InputToExtrudeEnum);
+	extrudefrombase_core(femmodel);
+	femmodel->parameters->SetParam(SurfaceEnum,InputToExtrudeEnum);
+	extrudefrombase_core(femmodel);
+
+	/*Save results*/
+	if(save_results) femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+
+	/*Free resources:*/
+   if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+
+	/*Stop profiler*/
+	femmodel->profiler->Stop(GROUNDINGLINECORE);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/hydrology_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/hydrology_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/hydrology_core.cpp	(revision 27955)
@@ -0,0 +1,317 @@
+/*!\file: hydrology_core.cpp
+ * \brief: core of the hydrology solution
+ */
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+void SolidEarthWaterUpdates(FemModel* femmodel);
+
+void hydrology_core(FemModel* femmodel){ /*{{{*/
+
+	/*Start profiler*/
+	femmodel->profiler->Start(HYDROLOGYCORE);
+
+	/*intermediary*/
+	int          hydrology_model;
+	int          solution_type;
+	int          numoutputs        = 0;
+	bool         save_results;
+	bool         modify_loads      = true;
+	char       **requested_outputs = NULL;
+	IssmDouble   ThawedNodes;
+
+	/*first recover parameters common to all solutions*/
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&hydrology_model,HydrologyModelEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&numoutputs,HydrologyNumRequestedOutputsEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,HydrologyRequestedOutputsEnum);
+
+	/*Using the Shreve based Model*/
+	if (hydrology_model==HydrologyshreveEnum){
+		if(VerboseSolution()) _printf0_("   computing water heads\n");
+		/*first compute slopes: */
+		surfaceslope_core(femmodel);
+		bedslope_core(femmodel);
+		/*and then go to water column*/
+		if(VerboseSolution()) _printf0_("   computing water column\n");
+		femmodel->SetCurrentConfiguration(HydrologyShreveAnalysisEnum);
+		solutionsequence_nonlinear(femmodel,modify_loads);
+		/*transfer water column thickness to old water column thickness: */
+		InputDuplicatex(femmodel,WatercolumnEnum,WaterColumnOldEnum);
+		/*solid earth considerations:*/
+		SolidEarthWaterUpdates(femmodel);
+
+	}
+	/*Using the Tws based Model*/
+	if (hydrology_model==HydrologyTwsEnum){
+		if(VerboseSolution()) _printf0_("   computing water column\n");
+
+		femmodel->SetCurrentConfiguration(HydrologyTwsAnalysisEnum);
+
+		/*save current tws  before updating:*/
+		InputDuplicatex(femmodel,WatercolumnEnum,WaterColumnOldEnum);
+
+		/*grab tws from the hydrology.spcwatercolumn field input and update
+		 * the solution with it:*/
+		Vector<IssmDouble>*  ug  = NULL;
+		GetVectorFromInputsx(&ug,femmodel,HydrologyTwsSpcEnum,VertexPIdEnum);
+		InputUpdateFromSolutionx(femmodel,ug);
+
+		/*solid earth considerations:*/
+		SolidEarthWaterUpdates(femmodel);
+		delete ug;
+	}
+
+	/*Using the double continuum model*/
+	else if (hydrology_model==HydrologydcEnum){
+		/*intermediary: */
+		bool       isefficientlayer;
+		/*recover parameters: */
+		femmodel->parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum);
+
+		/*first we exclude frozen nodes of the solved nodes*/
+		femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
+		femmodel->HydrologyIDSupdateDomainx(&ThawedNodes);
+
+		if(ThawedNodes>0){
+			/*check if we need sub steps*/
+			int  dtslices;
+			bool sliceadapt;
+         bool conv_fail=false;
+         femmodel->parameters->FindParam(&dtslices,HydrologyStepsPerStepEnum);
+         femmodel->parameters->FindParam(&sliceadapt,HydrologyStepAdaptEnum);
+
+			if(dtslices>1 || sliceadapt){
+				int        step, substep, numaveragedinput, hydro_averaging, remainingslices;
+				IssmDouble global_time, subtime, yts, remainingtime, averagetime;
+				IssmDouble dt, subdt;
+
+            femmodel->parameters->FindParam(&global_time,TimeEnum);
+				femmodel->parameters->FindParam(&step,StepEnum);
+            femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+            femmodel->parameters->FindParam(&yts,ConstantsYtsEnum);
+				femmodel->parameters->FindParam(&hydro_averaging,HydrologyAveragingEnum);
+
+				subtime=global_time-dt; //getting the time back to the start of the timestep
+				subdt=dt/dtslices; //computing hydro dt from dt and a divider
+				substep=0;
+				femmodel->parameters->SetParam(subdt,TimesteppingTimeStepEnum);
+				femmodel->parameters->SetParam(subtime,TimeEnum);
+
+				/*intermiedaries to deal with averaging*/
+				static const int substeplist[4] = {EffectivePressureSubstepEnum,SedimentHeadSubstepEnum,EplHeadSubstepEnum,HydrologydcEplThicknessSubstepEnum};
+				static const int transientlist[4] = {EffectivePressureTransientEnum,SedimentHeadTransientEnum,EplHeadTransientEnum,HydrologydcEplThicknessTransientEnum};
+				static const int averagelist[4] = {EffectivePressureEnum,SedimentHeadEnum,EplHeadEnum,HydrologydcEplThicknessEnum};
+				std::vector<int> substepinput;
+				std::vector<int> transientinput;
+				std::vector<int> averagedinput;
+
+				if (isefficientlayer){
+					/*define which variable needs to be averaged on the sub-timestep and initialize as needed*/
+					numaveragedinput = 4;
+					substepinput.assign(substeplist,substeplist+4);
+					transientinput.assign(transientlist,transientlist+4);
+					averagedinput.assign(averagelist,averagelist+4);
+				}
+				else{
+					numaveragedinput = 2;
+					substepinput.assign(substeplist,substeplist+2);
+					transientinput.assign(transientlist,transientlist+2);
+					averagedinput.assign(averagelist,averagelist+2);
+				}
+				femmodel->InitTransientInputx(&transientinput[0],numaveragedinput);
+				averagetime=0;
+				while(substep<dtslices){ //loop on hydro dts
+					substep+=1;
+					subtime+=subdt;
+					averagetime+=subtime*subdt;
+					/*Setting substep time as global time*/
+					femmodel->parameters->SetParam(subtime,TimeEnum);
+					if(VerboseSolution()) _printf0_("sub iteration " << substep << "/" << dtslices << "  time [yr]: " << setprecision(4) << subtime/yts << " (time step: " << subdt/yts << ")\n");
+					if(VerboseSolution()) _printf0_("   computing water heads\n");
+					/*save preceding timestep*/
+					InputDuplicatex(femmodel,SedimentHeadSubstepEnum,SedimentHeadOldEnum);
+					if (isefficientlayer){
+						InputDuplicatex(femmodel,EplHeadSubstepEnum,EplHeadOldEnum);
+						InputDuplicatex(femmodel,HydrologydcEplThicknessSubstepEnum,HydrologydcEplThicknessOldEnum);
+					}
+					/*Proceed now to heads computations*/
+					solutionsequence_hydro_nonlinear(femmodel, &conv_fail);
+					if(conv_fail){
+                  /*convergence failed, we want to go back to the begining of the main step and increase the number of subslices*/
+                  /*First we get teh time and step counter back to the begining of the step that did not converge*/
+                  averagetime-=subtime*subdt;
+                  subtime-=subdt;
+                  substep-=1;
+                  /*compute the number of slice that are remaining and the time left in the timestep*/
+                  remainingslices=dtslices-substep;
+                  remainingtime=global_time-subtime;
+                  /*We double the number of remaining slices and compute their duration*/
+                  dtslices=dtslices-remainingslices+(2*remainingslices);
+                  subdt=remainingtime/(2*remainingslices);
+                  if(VerboseSolution())_printf0_("convergence failed for sub-step "<< substep <<" total number of slice is now "<< dtslices <<" for step "<<step<<"\n");
+                  if(VerboseSolution())_printf0_("next slice duration is "<< subdt/yts <<" years\n");
+                  conv_fail = false;  //re-initialize the control keyword
+                  if (dtslices>500){
+                     _error_("   We reached (" << dtslices << ") which exceeds the hard limit of 500");
+                  }
+
+                  femmodel->parameters->SetParam(subdt,TimesteppingTimeStepEnum);
+                  femmodel->parameters->SetParam(subtime,TimeEnum);
+
+               }
+               else{
+						/*If we have a sub-timestep we store the substep inputs in a transient input here*/
+						femmodel->StackTransientInputonBasex(&substepinput[0],&transientinput[0],subtime,numaveragedinput);
+					}
+				}
+				/*averaging the stack*/
+				femmodel->AverageTransientInputonBasex(&transientinput[0],&averagedinput[0],global_time-dt,subtime,numaveragedinput,hydro_averaging);
+				/*And reseting to global time*/
+				femmodel->parameters->SetParam(dt,TimesteppingTimeStepEnum);
+				femmodel->parameters->SetParam(global_time,TimeEnum);
+				if(save_results){
+               femmodel->results->AddResult(new GenericExternalResult<int>(femmodel->results->Size()+1,HydrologySubstepsEnum,dtslices,step,global_time));
+               femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,HydrologySubTimeEnum,(averagetime/dt)/yts,step,global_time));
+            }
+			}
+			else{
+				InputDuplicatex(femmodel,SedimentHeadSubstepEnum,SedimentHeadOldEnum);
+				if (isefficientlayer){
+					InputDuplicatex(femmodel,EplHeadSubstepEnum,EplHeadOldEnum);
+					InputDuplicatex(femmodel,HydrologydcEplThicknessSubstepEnum,HydrologydcEplThicknessOldEnum);
+				}
+				/*Proceed now to heads computations*/
+				if(VerboseSolution()) _printf0_("   computing water heads\n");
+				solutionsequence_hydro_nonlinear(femmodel, &conv_fail);
+				/*If no substeps are present we want to duplicate the results for coupling purposes*/
+				InputDuplicatex(femmodel,SedimentHeadSubstepEnum,SedimentHeadEnum);
+				InputDuplicatex(femmodel,EffectivePressureSubstepEnum,EffectivePressureEnum);
+				if (isefficientlayer){
+					InputDuplicatex(femmodel,EplHeadSubstepEnum,EplHeadEnum);
+					InputDuplicatex(femmodel,HydrologydcEplThicknessSubstepEnum,HydrologydcEplThicknessEnum);
+				}
+			}
+		}
+		if(VerboseSolution())_printf0_("   hydroDC done\n");
+	}
+
+	/*Using the SHAKTI model*/
+	else if (hydrology_model==HydrologyshaktiEnum){
+
+		/*Get second derivatives of gap height*/
+		femmodel->SetCurrentConfiguration(L2ProjectionBaseAnalysisEnum);
+		femmodel->parameters->SetParam(HydrologyGapHeightXEnum,InputToL2ProjectEnum);
+		solutionsequence_linear(femmodel);
+		femmodel->parameters->SetParam(HydrologyGapHeightYEnum,InputToL2ProjectEnum);
+		solutionsequence_linear(femmodel);
+		femmodel->parameters->SetParam(HydrologyGapHeightXXEnum,InputToL2ProjectEnum);
+		solutionsequence_linear(femmodel);
+		femmodel->parameters->SetParam(HydrologyGapHeightYYEnum,InputToL2ProjectEnum);
+		solutionsequence_linear(femmodel);
+
+		/*Update Effective pressure*/
+		if(VerboseSolution()) _printf0_("   computing effective pressure\n");
+		HydrologyShaktiAnalysis* analysis = new HydrologyShaktiAnalysis();
+		analysis->UpdateEffectivePressure(femmodel);
+
+		/*Get new head*/
+		femmodel->SetCurrentConfiguration(HydrologyShaktiAnalysisEnum);
+		InputDuplicatex(femmodel,HydrologyHeadEnum,HydrologyHeadOldEnum);
+		solutionsequence_shakti_nonlinear(femmodel);
+
+		/*Update Gap Height*/
+		if(VerboseSolution()) _printf0_("   updating gap height\n");
+		analysis->UpdateGapHeight(femmodel);
+		delete analysis;
+	}
+
+	/*Using the GlaDS model*/
+	else if (hydrology_model==HydrologyGlaDSEnum){
+		HydrologyGlaDSAnalysis* analysis = new HydrologyGlaDSAnalysis();
+		femmodel->SetCurrentConfiguration(HydrologyGlaDSAnalysisEnum);
+
+		/*Set fields as old*/
+		InputDuplicatex(femmodel,HydraulicPotentialEnum,HydraulicPotentialOldEnum);
+		InputDuplicatex(femmodel,HydrologySheetThicknessEnum,HydrologySheetThicknessOldEnum);
+		analysis->SetChannelCrossSectionOld(femmodel);
+
+		/*Solve for new potential*/
+		solutionsequence_glads_nonlinear(femmodel);
+
+		if(VerboseSolution()) _printf0_("   updating effective pressure\n");
+		analysis->UpdateEffectivePressure(femmodel);
+		delete analysis;
+	}
+
+	/*Using the PISM hydrology model*/
+	else if (hydrology_model==HydrologypismEnum){
+		femmodel->SetCurrentConfiguration(HydrologyPismAnalysisEnum);
+		if(VerboseSolution()) _printf0_("   updating water column\n");
+		HydrologyPismAnalysis* analysis = new HydrologyPismAnalysis();
+		InputDuplicatex(femmodel,WatercolumnEnum,WaterColumnOldEnum);
+		analysis->UpdateWaterColumn(femmodel);
+		delete analysis;
+	}
+
+	/*Using the armaPw hydrology model*/
+   else if (hydrology_model==HydrologyarmapwEnum){
+      femmodel->SetCurrentConfiguration(HydrologyArmapwAnalysisEnum);
+      if(VerboseSolution()) _printf0_("   updating subglacial water pressure\n");
+      HydrologyArmapwAnalysis* analysis = new HydrologyArmapwAnalysis();
+      analysis->UpdateSubglacialWaterPressure(femmodel);
+      delete analysis;
+   }
+	else{
+		_error_("Hydrology model "<< EnumToStringx(hydrology_model) <<" not supported yet");
+	}
+	if(save_results){
+		if(hydrology_model==HydrologydcEnum && ThawedNodes==0){
+			if(VerboseSolution()) _printf0_("   No thawed node hydro is skiped \n");}
+		else{
+			femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+		}
+	}
+	/*Free resources:*/
+	if(numoutputs){
+		for(int i=0;i<numoutputs;i++){
+			xDelete<char>(requested_outputs[i]);
+		}
+		xDelete<char*>(requested_outputs);
+	}
+	/*End profiler*/
+	femmodel->profiler->Stop(HYDROLOGYCORE);
+} /*}}}*/
+void SolidEarthWaterUpdates(FemModel* femmodel){ /*{{{*/
+
+	int isgrd;
+	int grdmodel;
+	IssmDouble time;
+	int frequency,count;
+
+	/*retrieve parameters:*/
+	femmodel->parameters->FindParam(&isgrd,SolidearthSettingsGRDEnum);
+	femmodel->parameters->FindParam(&grdmodel,GrdModelEnum);
+	femmodel->parameters->FindParam(&time,TimeEnum);
+	femmodel->parameters->FindParam(&frequency,SolidearthSettingsRunFrequencyEnum);
+	femmodel->parameters->FindParam(&count,SealevelchangeRunCountEnum);
+
+	/*early return?:*/
+	if(!isgrd)return;
+
+	/*From old and new thickness, create delta thickness  and accumulate:*/
+	femmodel->inputs->ZAXPY(-1, WaterColumnOldEnum,WatercolumnEnum,DeltaTwsEnum);
+	femmodel->inputs->AXPY(+1, DeltaTwsEnum,AccumulatedDeltaTwsEnum);
+
+	/*compute total water column change between two sea-level solver time steps, ie. every frequency*dt:*/
+	if(count==frequency){
+		femmodel->inputs->ZAXPY(-1, OldAccumulatedDeltaTwsEnum,AccumulatedDeltaTwsEnum,DeltaTwsEnum);
+		femmodel->inputs->DuplicateInput(AccumulatedDeltaTwsEnum,OldAccumulatedDeltaTwsEnum);
+	}
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/levelsetfunctionslope_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/levelsetfunctionslope_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/levelsetfunctionslope_core.cpp	(revision 27955)
@@ -0,0 +1,38 @@
+/*!\file: levelsetfunctionslope_core.cpp
+ * \brief: core of the slope solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../modules/modules.h"
+
+void levelsetfunctionslope_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool save_results;
+	int  domaintype;
+
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+
+	if(VerboseSolution()) _printf0_("   computing slope of levelset function...\n");
+
+	/*Call on core computations: */
+	femmodel->SetCurrentConfiguration(L2ProjectionBaseAnalysisEnum);
+
+	femmodel->parameters->SetParam(LevelsetfunctionSlopeXEnum,InputToL2ProjectEnum);
+	solutionsequence_linear(femmodel);
+
+	if(domaintype!=Domain2DverticalEnum){
+		femmodel->parameters->SetParam(LevelsetfunctionSlopeYEnum,InputToL2ProjectEnum);
+		solutionsequence_linear(femmodel);
+	}
+	if(domaintype==Domain2DverticalEnum){
+		femmodel->parameters->SetParam(LevelsetfunctionSlopeXEnum,InputToExtrudeEnum);
+		extrudefrombase_core(femmodel);
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/love_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/love_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/love_core.cpp	(revision 27955)
@@ -0,0 +1,2226 @@
+/*!\file: love_core.cpp
+ * \brief: core of the LOVE numbers solution
+ */
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "petscblaslapack.h"
+#ifdef _HAVE_MPLAPACK_
+#include <quadmath.h>
+#include <iostream>
+#include "mpblas__Float128.h"
+#include "mplapack__Float128.h"
+#include "mplapack_utils__Float128.h"
+#endif
+
+template<typename doubletype> IssmDouble DownCastVarToDouble(doubletype var); // pure declaration
+
+template <> IssmDouble DownCastVarToDouble<IssmDouble>(IssmDouble var){
+	return var;
+}
+template <> IssmDouble DownCastVarToDouble<IssmComplex>(IssmComplex var){
+	return std::real(var);
+}
+#ifdef _HAVE_MPLAPACK_
+template <> IssmDouble DownCastVarToDouble<__float128>(__float128 var){
+	return static_cast<IssmDouble>(var);
+}
+__float128 pow(__float128 x, int y){
+	return powq(x,y);
+}
+__float128 pow(__float128 x, double y){
+	return powq(x,y);
+}
+__float128 pow(double x, __float128 y){
+	return powq(x,y);
+}
+
+ostream& operator<<(ostream& os, __float128 x){
+	char buf[128];
+	quadmath_snprintf(buf, sizeof(buf), "%.34Qf", x);
+
+    	os << buf;
+    	return os;
+}
+#endif
+
+/*local definitions:*/
+template <class doubletype> class LoveVariables{  /*{{{*/
+
+	public: 
+		doubletype g0; 
+		doubletype r0;
+		doubletype* EarthMass; 
+		int nyi, ifreq, nfreq; 
+		int starting_layer;
+		int* deg_layer_delete;
+		int* nstep;
+		doubletype* mu;
+		doubletype* la;
+
+		LoveVariables(){  /*{{{*/
+			g0=0;
+			r0=0;
+			EarthMass=NULL;
+			mu=NULL;
+			la=NULL;
+			nyi=0;
+			nfreq=0;
+			ifreq=0;
+			starting_layer=0;
+			nstep=NULL;
+			deg_layer_delete=NULL;
+		} /*}}}*/
+		LoveVariables(doubletype* EarthMassin,doubletype g0in,doubletype r0in,int nyiin,int starting_layerin, int* deg_layer_deletein, int* nstepin){  /*{{{*/
+			EarthMass=EarthMassin;
+			g0=g0in;
+			r0=r0in;
+			nyi=nyiin;
+			starting_layer=starting_layerin;
+			deg_layer_delete=deg_layer_deletein;
+			nstep=nstepin;
+			mu=NULL;
+			la=NULL;
+			nfreq=0;
+			ifreq=0;
+		} /*}}}*/
+		~LoveVariables(){
+			xDelete<int>(deg_layer_delete);
+			xDelete<int>(nstep);
+			if(mu)	xDelete<doubletype>(mu);
+			if(la)	xDelete<doubletype>(la);
+		};
+}; /*}}}*/
+
+template <class doubletype> class LoveNumbers{  /*{{{*/
+
+	public:	
+		doubletype* H;
+		doubletype* K;
+		doubletype* L;
+		doubletype* Kernels;
+		int sh_nmin, sh_nmax, nfreq, nkernels, lower_row, nfreqtotal; 
+
+		LoveNumbers(){  /*{{{*/
+			H=NULL;
+			K=NULL;
+			L=NULL;
+			Kernels=NULL;
+			sh_nmin=0;
+			sh_nmax=0;
+			nfreq=0;
+			nkernels=0;
+		} /*}}}*/
+		LoveNumbers(int sh_nminin, int sh_nmaxin, int nfreqin, int lower_rowin,int nfreqtotalin,Matlitho* matlitho){  /*{{{*/
+			sh_nmax=sh_nmaxin;
+			sh_nmin=sh_nminin;
+			nfreq=nfreqin;
+			lower_row=lower_rowin;
+			nfreqtotal=nfreqtotalin;
+			nkernels=(sh_nmax+1)*(matlitho->numlayers+1)*6;
+			H=xNewZeroInit<doubletype>(nfreq*(sh_nmax+1));
+			K=xNewZeroInit<doubletype>(nfreq*(sh_nmax+1));
+			L=xNewZeroInit<doubletype>(nfreq*(sh_nmax+1));
+			Kernels=xNewZeroInit<doubletype>(nfreq*nkernels);
+		} /*}}}*/
+		void DownCastToDouble(LoveNumbers<IssmDouble>* LoveDouble){
+			for(int i=0;i<(sh_nmax+1)*nfreq;i++){
+				LoveDouble->H[i]=DownCastVarToDouble<doubletype>(H[i]);
+				LoveDouble->K[i]=DownCastVarToDouble<doubletype>(K[i]);
+				LoveDouble->L[i]=DownCastVarToDouble<doubletype>(L[i]);
+			}
+			for(int i=0;i<nkernels*nfreq;i++){
+				LoveDouble->Kernels[i]=DownCastVarToDouble<doubletype>(Kernels[i]);
+			}
+
+		}
+		void LoveMPI_Gather(LoveNumbers<doubletype>* Love_local, int lower_row){
+			int* recvcounts=xNew<int>(IssmComm::GetSize());
+			int* displs=xNew<int>(IssmComm::GetSize());
+			int  rc;
+			int  offset;
+			int nf_local = Love_local->nfreq;
+
+			/*Deal H, K, L first, as they share the same size*/
+			rc=(sh_nmax+1)*nf_local;
+			offset=(sh_nmax+1)*lower_row;
+			ISSM_MPI_Allgather(&rc,1,ISSM_MPI_INT,recvcounts,1,ISSM_MPI_INT,IssmComm::GetComm());
+			ISSM_MPI_Allgather(&offset,1,ISSM_MPI_INT,displs,1,ISSM_MPI_INT,IssmComm::GetComm());
+			ISSM_MPI_Allgatherv(Love_local->H, rc, ISSM_MPI_DOUBLE, H, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+			ISSM_MPI_Allgatherv(Love_local->K, rc, ISSM_MPI_DOUBLE, K, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+			ISSM_MPI_Allgatherv(Love_local->L, rc, ISSM_MPI_DOUBLE, L, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+
+			/* deal with love kernels now */
+			rc=nf_local*nkernels;
+			offset=lower_row*nkernels;
+			ISSM_MPI_Allgather(&rc,1,ISSM_MPI_INT,recvcounts,1,ISSM_MPI_INT,IssmComm::GetComm());
+			ISSM_MPI_Allgather(&offset,1,ISSM_MPI_INT,displs,1,ISSM_MPI_INT,IssmComm::GetComm());
+			ISSM_MPI_Allgatherv(Love_local->Kernels, rc, ISSM_MPI_DOUBLE, Kernels, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+
+			xDelete<int>(recvcounts);
+			xDelete<int>(displs);
+		}
+		void Broadcast(void){
+			//Intended only for IssmDouble type
+			Vector<IssmDouble>* vH;
+			Vector<IssmDouble>* vK;
+			Vector<IssmDouble>* vL;
+
+			vH= new Vector<IssmDouble>((sh_nmax+1)*nfreqtotal);
+			for(int i=0;i<(sh_nmax+1)*nfreq;i++) vH->SetValue(lower_row*(sh_nmax+1)+i,DownCastVarToDouble<doubletype>(H[i]),INS_VAL);
+			xDelete(H);
+			vH->Assemble();
+			H=vH->ToMPISerial();
+			delete vH;
+
+			vK= new Vector<IssmDouble>((sh_nmax+1)*nfreqtotal);
+			for(int i=0;i<(sh_nmax+1)*nfreq;i++) vK->SetValue(lower_row*(sh_nmax+1)+i,DownCastVarToDouble<doubletype>(K[i]),INS_VAL);
+			xDelete(K);
+			vK->Assemble();
+			K=vK->ToMPISerial();
+			delete vK;
+
+			vL= new Vector<IssmDouble>((sh_nmax+1)*nfreqtotal);
+			for(int i=0;i<(sh_nmax+1)*nfreq;i++) vL->SetValue(lower_row*(sh_nmax+1)+i,DownCastVarToDouble<doubletype>(L[i]),INS_VAL);
+			xDelete(L);
+			vL->Assemble();
+			L=vL->ToMPISerial();
+			delete vL;
+		}
+		void KernelBroadcast(void){
+			Vector<IssmDouble>* vKernels;
+			vKernels= new Vector<IssmDouble>(nkernels*nfreqtotal);
+			for(int i=0;i<nkernels*nfreq;i++){
+				vKernels->SetValue(lower_row*nkernels+i,DownCastVarToDouble<doubletype>(Kernels[i]),INS_VAL);
+			}
+			xDelete(Kernels);
+			vKernels->Assemble();
+			Kernels=vKernels->ToMPISerial();
+			delete vKernels;
+		}
+		void Copy(LoveNumbers<doubletype>* LoveDup){
+			for(int i=0;i<(sh_nmax+1)*nfreq;i++){
+				H[i]=LoveDup->H[i];
+				K[i]=LoveDup->K[i];
+				L[i]=LoveDup->L[i];
+			}
+			for(int i=0;i<nkernels*nfreq;i++){
+				Kernels[i]=LoveDup->Kernels[i];
+			}
+		}
+		~LoveNumbers(){
+			xDelete<doubletype>(H);
+			xDelete<doubletype>(K);
+			xDelete<doubletype>(L);
+			xDelete<doubletype>(Kernels);
+		};
+};
+
+ /*}}}*/
+
+/*self contained support routines used by cores below:*/
+template<typename doubletype> doubletype                 angular_frequency(IssmDouble frequency); //pure declaration
+template <> IssmDouble                     angular_frequency<IssmDouble>(IssmDouble frequency){ /*{{{*/
+	return 2.0*PI*frequency;
+} /*}}}*/
+template <> IssmComplex                    angular_frequency<IssmComplex>(IssmDouble frequency){ /*{{{*/
+	IssmComplex value=reCast<IssmComplex>(complex<double>(0,1))*2.0*PI*reCast<IssmComplex>(frequency);
+	return value;
+} /*}}}*/
+#ifdef _HAVE_MPLAPACK_
+template <> __float128                     angular_frequency<__float128>(IssmDouble frequency){ /*{{{*/
+	return 2.0*PI*frequency;
+} /*}}}*/
+#endif
+template<typename doubletype> void                       allgesv(int* pnyi, int* pnrhs, doubletype* yilocal, int* plda, int* ipiv, doubletype* rhslocal, int* pldb, int* pinfo);
+template <> void                           allgesv<IssmDouble>(int* pnyi, int* pnrhs, IssmDouble* yilocal, int* plda, int* ipiv, IssmDouble* rhslocal, int* pldb, int* pinfo){ /*{{{*/
+	dgesv_(pnyi, pnrhs, yilocal, plda, ipiv, rhslocal, pldb, pinfo);
+} /*}}}*/
+template <> void                           allgesv<IssmComplex>(int* pnyi, int* pnrhs, IssmComplex* yilocal, int* plda, int* ipiv, IssmComplex* rhslocal, int* pldb, int* pinfo){ /*{{{*/
+	_error_("zgesv_ not linked correctly yet! ");
+	//zgesv_(pnyi, pnrhs, yilocal, plda, ipiv, rhslocal, pldb, pinfo);
+} /*}}}*/
+#ifdef _HAVE_MPLAPACK_
+template <> void                           allgesv<__float128>(int* pnyi, int* pnrhs, __float128* yilocal, int* plda, int* ipiv, __float128* rhslocal, int* pldb, int* pinfo){ /*{{{*/
+	mplapackint nyi=*pnyi;
+	mplapackint nrhs=*pnrhs;
+	mplapackint lda=*plda;
+	mplapackint* qipiv=NULL;
+	mplapackint ldb=*pldb;
+	mplapackint info=0;
+	qipiv=xNewZeroInit<mplapackint>(*pnyi);
+	
+	Rgesv(nyi, nrhs, yilocal, lda, qipiv, rhslocal, ldb, info);
+
+	for (int i;i=0;i<*pnyi) ipiv[i]=qipiv[i];
+	*pinfo=info;
+	xDelete<mplapackint>(qipiv);
+} /*}}}*/
+#endif
+
+template<typename doubletype> doubletype   factorial(int n){ /*{{{*/
+	doubletype prod=1;
+	for (int i=2;i<n+1;i++) prod*=i;
+	return prod;
+}/*}}}*/
+template<typename doubletype> doubletype   n_C_r(int n, int r){ /*{{{*/ 
+	//n choose r
+	int primes[169] = 
+	{2,    3,    5,    7,   11,   13,   17,   19,   23,   29,  
+		31,   37,   41,   43,   47,   53,   59,   61,   67,   71,  
+		73,   79,   83,   89,   97,  101,  103,  107,  109,  113,  
+		127,  131,  137,  139,  149,  151,  157,  163,  167,  173,  
+		179,  181,  191,  193,  197,  199,  211,  223,  227,  229,  
+		233,  239,  241,  251,  257,  263,  269,  271,  277,  281,  
+		283,  293,  307,  311,  313,  317,  331,  337,  347,  349,  
+		353,  359,  367,  373,  379,  383,  389,  397,  401,  409,  
+		419,  421,  431,  433,  439,  443,  449,  457,  461,  463,  
+		467,  479,  487,  491,  499,  503,  509,  521,  523,  541,  
+		547,  557,  563,  569,  571,  577,  587,  593,  599,  601,  
+		607,  613,  617,  619,  631,  641,  643,  647,  653,  659,  
+		661,  673,  677,  683,  691,  701,  709,  719,  727,  733,  
+		739,  743,  751,  757,  761,  769,  773,  787,  797,  809,  
+		811,  821,  823,  827,  829,  839,  853,  857,  859,  863,  
+		877,  881,  883,  887,  907,  911,  919,  929,  937,  941,  
+		947,  953,  967,  971,  977,  983,  991,  997, 1009};
+	int num, den;
+	num = 1;
+	den = 1;
+
+	for (int i=0;i<r;i++){
+		num = num*(n-i);
+		den = den*(i+1);
+		if (i>0) {
+			// Divide out common prime factors
+			for (int k=0;k<169;k++){ //169 is the length of the prime vector here
+				if ( i % primes[k] == 0) { // modulo
+					num = num/primes[k];
+					den = den/primes[k];
+				}
+			}
+		}
+	}
+
+	doubletype res;        
+	return res = num/den;
+}/*}}}*/
+template<typename doubletype> doubletype*  postwidder_coef(int NTit){ /*{{{*/
+	//Coefficients of the Post-Widder method through Saltzer summation for inverse Laplace transform:
+	//The Mth iteration estimate will be: f(t)_M = sum_{k=1:2*M}(xi_[M,k] * f(s_k))
+	//The method is based on equations (2), (6), (7) in: 
+	//Valko PP, Abate J. Comparison of sequence accelerators for the Gaver method of numerical Laplace transform inversion. Computational Mathematics and Applications. (2004)
+	//Note that the coefficients xi lack the factor s=k*log(2)/t. 
+	//That is because we are computing the heaviside response of the system rather than its impulse response, 
+	//and Laplace_Transform(Heaviside(t).*f(t)) = f(s)/s. So s cancels out in the sum for f(t)_M.
+
+	doubletype* xi=xNewZeroInit<doubletype>(2*NTit*NTit);
+	int indxi;
+	for (int M=1;M<NTit+1;M++){
+		for (int k=1;k<2*M+1;k++){
+			indxi=(M-1)*(2*NTit)+k-1;
+			for (int j=floor((k+1)/2);j<min(k,M)+1;j++){
+				xi[indxi]+=pow(j,M+1.0)/factorial<doubletype>(M)*n_C_r<doubletype>(M,j)*n_C_r<doubletype>(2*j,j)*n_C_r<doubletype>(j,k-j);
+			}
+			xi[indxi]*=pow(-1.0,k+M)/k;
+		}
+	}
+	return xi;
+}/*}}}*/
+template<typename doubletype> void         postwidder_transform(doubletype* Lovet, doubletype* Lovef,int d, int t, int sh_nmax,int NTit, doubletype* xi, FemModel* femmodel){ /*{{{*/
+	//Computes Lovet for time step t and degree d from the PW coefficients xi and the corresponding 2*NTit frequency samples in Lovef
+
+	int indxi, indf;
+	doubletype PW_test;
+	IssmDouble PW_threshold;
+	femmodel->parameters->FindParam(&PW_threshold,LovePostWidderThresholdEnum);
+
+	indf=(t*2*NTit)*(sh_nmax+1)+d;
+	doubletype* LoveM = xNew<doubletype>(NTit);
+
+
+	// test variation across frequencies tested, something with little frequency dependence is not worth going through PW tranform
+	// that transform would also be numerically unstable
+	PW_test = abs((Lovef[indf+(2*NTit-1)*(sh_nmax+1)]-Lovef[indf])/Lovef[indf]); 
+
+	//if (PW_test < PW_threshold){ //elastic or fluid response: Love(t) = Love(s), we can do an early return
+	//	Lovet[t*(sh_nmax+1)+d]=Lovef[indf];
+	//	return;
+	//}
+
+	if (PW_test==0){ //elastic or fluid response: Love(t) = Love(s), we can do an early return
+		Lovet[t*(sh_nmax+1)+d]=Lovef[indf];
+		return;
+	}
+
+	for (int M=1;M<NTit+1;M++){
+		LoveM[M-1]=0.0;
+		for (int k=1;k<2*M+1;k++){
+			indxi=(M-1)*(2*NTit)+k-1;
+			LoveM[M-1]+=xi[indxi]*Lovef[indf+(k-1)*(sh_nmax+1)];
+		}
+
+		//Make sure we are not getting into numerical instability
+		//Diverging once: ok, we'll give that the benefit of the doubt, it can be an inflexion point in the convergence series
+		//Diverging twice in a row: we are definitely propagating numerical error: revert to the last stable value and exit
+		if (M>3){ 
+			if ( abs(LoveM[M-1]-LoveM[M-2]) > abs(LoveM[M-2]-LoveM[M-3]) &&
+					abs(LoveM[M-2]-LoveM[M-3]) > abs(LoveM[M-3]-LoveM[M-4]) ){
+				Lovet[t*(sh_nmax+1)+d]=LoveM[M-3];
+				return;
+			}
+		}
+	}
+	Lovet[t*(sh_nmax+1)+d]=LoveM[NTit-1];
+}/*}}}*/
+
+template <typename doubletype> doubletype HypergeomTableLookup(doubletype z1, doubletype alpha, IssmDouble* h1, IssmDouble* z, int nz, int nalpha){/*{{{*/
+	int iz1, iz2, ialpha;	
+	doubletype lincoef;
+	doubletype hf,h00,h10, h01, h11, za, zd, ha, hb,hc,hd, m0,m1,t;
+	doubletype dalpha=1.0/(nalpha-1); // alpha table resolution given 0 <= alpha <= 1
+	ialpha= static_cast<int>(DownCastVarToDouble(alpha/dalpha));
+	lincoef=alpha/dalpha-ialpha;//linear fraction in [0;1] for alpha interpolation
+	iz1=nz;
+	for (int i=0;i<nz;i++){
+		if (abs(z[i])>abs(z1)) {
+			iz1=i-1;
+			break;
+		}
+	}
+
+	if (iz1<0){
+		//1-hf for very small abs(z) tends to 0, and is very log-linear with respect to log(z), so we can simply extrapolate the value of hf via the loglog slope
+		hf=(1.0-lincoef)*h1[ialpha*nz+0]+lincoef*h1[(ialpha+1)*nz+0];
+		hf=1.0- (1.0-hf)*pow(10.0,(log10(abs(z1))-log10(abs(z[0]))));
+		//hf[0]=1.0;
+	}
+	else if (iz1==nz){
+		//hf for very large abs(z) tends to 0, and is very log-linear with respect to log(z), so we can simply extrapolate the value of hf via the loglog slope
+		hf=(1.0-lincoef)*h1[ialpha*nz+nz-1]+lincoef*h1[(ialpha+1)*nz+nz-1];
+		hf=hf *pow(10.0,-(log10(abs(z1))-log10(abs(z[nz-1]))));
+		//hf[0]=0;
+	}
+	else{ //cubic spline interpolation
+		//edge cases: extrapolate 1 point
+		if (iz1==0){
+			za=2.0*z[0]-z[1];
+			ha=(1.0-lincoef)*h1[ialpha*nz+0]+lincoef*h1[(ialpha+1)*nz+0];
+			ha=1.0- (1.0-ha) *pow(10.0,log10(abs(za))-log10(abs(z[0])));
+		} 
+		else {
+			za=z[iz1-1];
+			ha=(1.0-lincoef)*h1[ialpha*nz+iz1-1] + lincoef*h1[(ialpha+1)*nz+iz1-1];
+		}
+
+		if (iz1==nz-2){
+			zd=2.0*z[nz-1]-z[nz-2];
+			hd=(1.0-lincoef)*h1[ialpha*nz+nz-1]+lincoef*h1[(ialpha+1)*nz+nz-1];
+			hd=hd *pow(10.0,-(log10(abs(zd))-log10(abs(z[nz-1]))));
+		} 
+		else {
+			zd=z[iz1+2];
+			hd=(1.0-lincoef)*h1[ialpha*nz+iz1+2]+lincoef*h1[(ialpha+1)*nz+iz1+2];
+		}
+
+		hb=(1.0-lincoef)*h1[ialpha*nz+iz1] +lincoef*h1[(ialpha+1)*nz+iz1];
+		hc=(1.0-lincoef)*h1[ialpha*nz+iz1+1] +lincoef*h1[(ialpha+1)*nz+iz1+1];
+
+		//left derivative
+		m0= 0.5*(z[iz1+1]-z[iz1])*((hc-hb)/(z[iz1+1]-z[iz1]) + (hb-ha)/(z[iz1]-za));
+		//right derivative
+		m1= 0.5*(z[iz1+1]-z[iz1])*((hd-hc)/(zd-z[iz1+1]) + (hc-hb)/reCast<doubletype>(z[iz1+1]-z[iz1]));
+
+		//interpolation abscissa
+		t=(z1-z[iz1])/(z[iz1+1]-z[iz1]);
+		
+		//cubic spline functions
+		h00=2*pow(t,3)-3*pow(t,2)+1;
+		h10=pow(t,3)-2*pow(t,2)+t;
+		h01=-2*pow(t,3)+3*pow(t,2);
+		h11=pow(t,3)-pow(t,2);
+
+		hf=h00*hb + h10*m0 + h01*hc + h11*m1;
+	}
+	return hf;
+
+}/*}}}*/
+
+template <typename doubletype> doubletype muEBM(int layer_index, doubletype omega, Matlitho* matlitho, FemModel* femmodel); //pure declaration
+template <> IssmComplex muEBM<IssmComplex>(int layer_index, IssmComplex omega, Matlitho* matlitho, FemModel* femmodel){/*{{{*/
+	// Initialization
+	int nz, nalpha, dummy1, dummy2;
+	IssmComplex mu;
+	IssmDouble* z=NULL;
+	IssmDouble* h1=NULL;
+	IssmDouble* h2=NULL;
+	IssmComplex hf11, hf12, hf21, hf22;
+	IssmDouble  factor=0;
+	IssmComplex z1, z2;
+	IssmComplex U1, U2;
+	IssmComplex j=reCast<IssmComplex>(complex<double>(0,1));
+	//Matlitho parameters
+	IssmDouble alpha=matlitho->ebm_alpha[layer_index];
+	IssmDouble delta=matlitho->ebm_delta[layer_index];
+	IssmDouble taul=matlitho->ebm_taul[layer_index];
+	IssmDouble tauh=matlitho->ebm_tauh[layer_index];
+	IssmDouble vi=matlitho->viscosity[layer_index];
+	IssmDouble mu0=matlitho->lame_mu[layer_index];
+	//fetch hypergeometric function tables and parameters
+	femmodel->parameters->FindParam(&nz,LoveHypergeomNZEnum);
+	femmodel->parameters->FindParam(&nalpha,LoveHypergeomNAlphaEnum);
+	femmodel->parameters->FindParam(&z,&dummy1,LoveHypergeomZEnum);
+	femmodel->parameters->FindParam(&h1,&dummy1,&dummy2,LoveHypergeomTable1Enum);
+	femmodel->parameters->FindParam(&h2,&dummy1,&dummy2,LoveHypergeomTable2Enum);
+	omega=omega/j;
+
+	z1= -pow(omega*tauh,2.0);
+	z2= -pow(omega*taul,2.0);
+	//Table1 h1 should be 2F1([1 1+alpha], [2+alpha/2], z)
+	//Table2 h2 should be 2F1([1 0.5+alpha], [1.5+alpha/2], z)
+	hf11=HypergeomTableLookup<IssmComplex>(z1, alpha, h1, z, nz, nalpha);
+	hf21=HypergeomTableLookup<IssmComplex>(z1, alpha, h2, z, nz, nalpha);
+	hf12=HypergeomTableLookup<IssmComplex>(z2, alpha, h1, z, nz, nalpha);
+	hf22=HypergeomTableLookup<IssmComplex>(z2, alpha, h2, z, nz, nalpha);
+
+
+	//Ivins et al (2020) p11
+	U1=(pow(tauh,alpha)-pow(taul,alpha))/alpha-pow(omega,2.0)/(2.0+alpha)*(pow(tauh,2.0+alpha)*hf11-pow(taul,2.0+alpha)*hf12);
+	U2=(pow(tauh,1.0+alpha)*hf21-pow(taul,1.0+alpha)*hf22)/(1.0+alpha);
+
+	factor= alpha*delta/(pow(tauh,alpha)-pow(taul,alpha));
+	U1=(1.0+factor) *U1;
+	U2=factor*omega*U2 +mu0/vi/omega;
+	mu=mu0*(U1+j*U2)/(pow(U1,2.0)+pow(U2,2.0));
+	omega=omega*j;
+
+	xDelete<IssmDouble>(z);
+	xDelete<IssmDouble>(h1);
+	xDelete<IssmDouble>(h2);
+	return mu;
+}/*}}}*/
+
+template <> IssmDouble muEBM<IssmDouble>(int layer_index, IssmDouble omega, Matlitho* matlitho, FemModel* femmodel){/*{{{*/
+	// Initialization
+	int nz, nalpha, dummy1, dummy2;
+	IssmDouble mu;
+	IssmDouble* z=NULL;
+	IssmDouble* h1=NULL;
+	IssmDouble hf11, hf12;
+	IssmDouble  factor, B, D, z1, z2;
+	//Matlitho parameters
+	IssmDouble alpha=matlitho->ebm_alpha[layer_index];
+	IssmDouble delta=matlitho->ebm_delta[layer_index];
+	IssmDouble taul=matlitho->ebm_taul[layer_index];
+	IssmDouble tauh=matlitho->ebm_tauh[layer_index];
+	IssmDouble vi=matlitho->viscosity[layer_index];
+	IssmDouble mu0=matlitho->lame_mu[layer_index];
+	//fetch hypergeometric function tables and parameters
+	femmodel->parameters->FindParam(&nz,LoveHypergeomNZEnum);
+	femmodel->parameters->FindParam(&nalpha,LoveHypergeomNAlphaEnum);
+	femmodel->parameters->FindParam(&z,&dummy1,LoveHypergeomZEnum);
+	femmodel->parameters->FindParam(&h1,&dummy1,&dummy2,LoveHypergeomTable1Enum);
+
+	z1=-omega*tauh;
+	z2=-omega*taul;
+	//Table1 h1 should be 2F1([1 1+alpha], [2+alpha], z)
+	hf11=HypergeomTableLookup<IssmDouble>(z1, alpha, h1, z, nz, nalpha);
+	hf12=HypergeomTableLookup<IssmDouble>(z2, alpha, h1, z, nz, nalpha);
+
+	//Ivins et al. (2022) p1979
+	factor= alpha*delta/(pow(tauh,alpha)-pow(taul,alpha));
+	B= factor/(1.0+alpha) *mu0/vi * (pow(tauh,1.0+alpha)*hf11 - pow(taul,1.0+alpha)*hf12);
+	D= omega*vi/mu0* 1.0/(1.0+omega*vi/mu0*(1.0+delta) -pow(omega*vi/mu0,2.0)*B);
+
+	xDelete<IssmDouble>(z);
+	xDelete<IssmDouble>(h1);
+	return mu=mu0*D;
+}/*}}}*/
+#ifdef _HAVE_MPLAPACK_
+template <> __float128 muEBM<__float128>(int layer_index, __float128 omega, Matlitho* matlitho, FemModel* femmodel){/*{{{*/
+	// Initialization
+	int nz, nalpha, dummy1, dummy2;
+	IssmDouble* z=NULL;
+	IssmDouble* h1=NULL;
+	__float128 mu;
+	__float128 hf11, hf12;
+	__float128  factor, B, D, z1, z2;
+	//Matlitho parameters
+	__float128 alpha=matlitho->ebm_alpha[layer_index];
+	__float128 delta=matlitho->ebm_delta[layer_index];
+	__float128 taul=matlitho->ebm_taul[layer_index];
+	__float128 tauh=matlitho->ebm_tauh[layer_index];
+	__float128 vi=matlitho->viscosity[layer_index];
+	__float128 mu0=matlitho->lame_mu[layer_index];
+	//fetch hypergeometric function tables and parameters
+	femmodel->parameters->FindParam(&nz,LoveHypergeomNZEnum);
+	femmodel->parameters->FindParam(&nalpha,LoveHypergeomNAlphaEnum);
+	femmodel->parameters->FindParam(&z,&dummy1,LoveHypergeomZEnum);
+	femmodel->parameters->FindParam(&h1,&dummy1,&dummy2,LoveHypergeomTable1Enum);
+
+	z1=-(omega*tauh);
+	z2=-(omega*taul);
+	//Table1 h1 should be 2F1([1 1+alpha], [2+alpha], z)
+	hf11=HypergeomTableLookup<__float128>(z1, alpha, h1, z, nz, nalpha);
+	hf12=HypergeomTableLookup<__float128>(z2, alpha, h1, z, nz, nalpha);
+
+	//Ivins et al. (2022) p1979
+	//Note: therein, mu(s') = s'*mu~(s'); s'=omega*tauM=omega*vi/mu0
+	factor= alpha*delta/(pow(tauh,alpha)-pow(taul,alpha));
+	B= factor/(1.0q+alpha) *mu0/vi * (pow(tauh,1.0q+alpha)*hf11 - pow(taul,1.0q+alpha)*hf12);
+	D= omega*vi/mu0* 1.0q/(1.0q+omega*vi/mu0*(1.0q+delta) -pow(omega*vi/mu0,2.0q)*B);
+
+	xDelete<IssmDouble>(z);
+	xDelete<IssmDouble>(h1);
+	return mu=mu0*D;
+}/*}}}*/
+#endif
+template <typename doubletype> void        GetEarthRheology(doubletype* pla, doubletype* pmu, int layer_index, doubletype omega,  Matlitho* matlitho, FemModel* femmodel){ /*{{{*/
+
+	//returns lame parameters (material rigity) lambda and mu for the right frequency and layer
+	doubletype mu,la;
+
+	doubletype vi=matlitho->viscosity[layer_index];
+	doubletype mu0=matlitho->lame_mu[layer_index];
+	doubletype la0=matlitho->lame_lambda[layer_index];
+	int rheo=matlitho->rheologymodel[layer_index];
+
+	if(vi!=0 && omega!=0.0){ //take into account viscosity in the rigidity if the material isn't a perfect fluid
+		doubletype ka=la0 + 2.0/3.0*mu0; //Bulk modulus
+		if(rheo==2){//EBM
+			mu=muEBM<doubletype>(layer_index, omega, matlitho, femmodel);
+			la=ka-2.0/3.0*mu;
+		} 
+		else if(rheo==1){//Burgers
+			doubletype vi2=matlitho->burgers_viscosity[layer_index];
+			doubletype mu2=matlitho->burgers_mu[layer_index];
+
+			mu=mu0*omega*(omega+mu2/vi2)/((omega+mu2/vi2)*(omega+mu0/vi)+mu0/vi2*omega);
+			la=ka-2.0/3.0*mu;
+		}
+		else{//Maxwell
+			la = (la0 + mu0*ka/vi/omega)/(1.0 + mu0/vi/omega);
+			mu = mu0/(1.0+mu0/vi/omega);
+		}
+	}
+	else{//Otherwise return the elastic value
+	la=la0;
+	mu=mu0;
+	}
+
+	*pla=la;
+	*pmu=mu;
+
+} /*}}}*/
+
+template <typename doubletype> void        EarthRheology(LoveVariables<doubletype>* vars, IssmDouble* frequencies, int nfreq,  Matlitho* matlitho, FemModel* femmodel){/*{{{*/
+	doubletype omega;
+	//reset pointers to NULL if this function was previously called
+	if(vars->mu)	xDelete<doubletype>(vars->mu);
+	if(vars->la)	xDelete<doubletype>(vars->la);
+	//precompute rheology at the requested frequencies
+	vars->mu=xNewZeroInit<doubletype>(nfreq*matlitho->numlayers);
+	vars->la=xNewZeroInit<doubletype>(nfreq*matlitho->numlayers);
+	vars->nfreq=nfreq;
+	for (int i=0;i<matlitho->numlayers;i++){
+		for (int fr=0;fr<nfreq;fr++){
+			omega=angular_frequency<doubletype>(frequencies[fr]);
+			GetEarthRheology<doubletype>(&vars->la[i*nfreq+fr], &vars->mu[i*nfreq+fr], i,omega,matlitho, femmodel);
+			//cout << i << " " << fr << " " << vars->mu[i*nfreq+fr] << "\n";
+		}
+	}
+}/*}}}*/
+
+template <typename doubletype> doubletype	GetGravity(doubletype r2, int layer_index, FemModel* femmodel, Matlitho* matlitho,LoveVariables<doubletype>* vars){ /*{{{*/
+	//computes gravity at radius r2
+	doubletype* EarthMass;
+	doubletype g, GG;
+	IssmDouble GGp;
+
+	EarthMass=vars->EarthMass;
+	femmodel->parameters->FindParam(&GGp,LoveGravitationalConstantEnum);
+	GG=GGp;
+	doubletype ro=matlitho->density[layer_index];
+	doubletype M=0;
+	doubletype r1=0;
+	if (layer_index==0){
+		M=4.0/3.0*PI*ro*pow(r2,3.0);
+	}
+	else{ 
+		r1=matlitho->radius[layer_index];
+		M=EarthMass[layer_index-1]+4.0/3.0*PI*ro*(pow(r2,3.0)-pow(r1,3.0));
+	}
+	return	g= GG*M/pow(r2,2.0);
+}/*}}}*/
+template <typename doubletype> void        fill_yi_prefactor(doubletype* yi_prefactor, int* pdeg, doubletype* pomega, FemModel* femmodel, Matlitho* matlitho, LoveVariables<doubletype>* vars){ /*{{{*/
+	//precalculates partial derivative factors for function yi_derivatives
+	doubletype ra=matlitho->radius[matlitho->numlayers];
+	doubletype  g0,r0,mu0;
+	IssmDouble mu0p, GG;
+	int nstep,nsteps,nindex, starting_layer;
+
+	femmodel->parameters->FindParam(&mu0p,LoveMu0Enum);
+	femmodel->parameters->FindParam(&GG,LoveGravitationalConstantEnum);
+	//femmodel->parameters->FindParam(&nstep,LoveIntStepsPerLayerEnum);
+
+	g0=vars->g0;
+	r0=vars->r0;
+	mu0=mu0p;
+	starting_layer=vars->starting_layer;
+
+	doubletype frh,frhg0,fgr0,fgr,fn,rm0,rlm,flm;
+	doubletype xmin,xmax,x,dr;
+	doubletype g,ro;
+	bool       issolid;
+
+	if (pomega) { //frequency and degree dependent terms /*{{{*/
+		doubletype la,mu;
+		doubletype f[12];
+		int deg=*pdeg;
+		doubletype omega=*pomega;	
+		fn=deg*(deg+1.0);
+
+		for (int layer_index=starting_layer;layer_index<matlitho->numlayers;layer_index++){
+			nstep=vars->nstep[layer_index];
+			nsteps=0;
+			for (int i=0;i<layer_index;i++)	nsteps+=vars->nstep[i];
+
+			ro=matlitho->density[layer_index];
+			issolid=matlitho->issolid[layer_index];
+			if(issolid){
+				//GetEarthRheology<doubletype>(&la, &mu,layer_index,omega,matlitho);   
+				mu=vars->mu[layer_index*vars->nfreq+vars->ifreq];
+				la=vars->la[layer_index*vars->nfreq+vars->ifreq];
+
+				/*_______Expressions*/
+				flm=(la+2.0*mu);
+				rlm=(3.0*la+2.0*mu)/(la+2.0*mu);
+				rm0=mu/mu0;
+				frh=ro*ra/mu0;
+
+				f[0]=(-2.0*la/flm);
+				f[1]=mu0/flm;
+				f[2]=(la*fn/flm);
+				f[3]=rm0*rlm;
+				f[4]=-ro*pow(omega,2.0)*ra*ra/mu0;
+				f[5]=(-4.0*mu/flm);
+				f[6]=fn*frh;
+				f[7]=-(2.0*rm0*rlm)*fn;
+				f[8]=1.0/rm0;
+				f[9]=-2.0*rm0*rlm;
+				f[10]=-la/flm;
+				f[11]=2.0*rm0*(la*(2.0*fn-1.0)+2.0*mu*(fn-1.0))/flm;
+
+				xmin=matlitho->radius[layer_index]/ra;
+				xmax=(matlitho->radius[layer_index+1])/ra;
+				dr = (xmax -xmin)/nstep;
+				x=xmin;
+
+				//fixme
+				g=GetGravity<doubletype>((xmin+xmax)/2*ra,layer_index,femmodel,matlitho,vars);
+
+				for (int n=0;n<nstep;n++){
+
+					g=GetGravity<doubletype>(x*ra,layer_index,femmodel,matlitho,vars);
+					nindex=nsteps*36+n*36;
+					yi_prefactor[nindex+ 0*6+0]= f[0]/x;                      // in dy[0*6+0]
+					yi_prefactor[nindex+ 0*6+1]= f[1];                        // in dy[0*6+1]
+					yi_prefactor[nindex+ 0*6+2]= f[2]/x;                      // in dy[0*6+2]
+					yi_prefactor[nindex+ 1*6+0]= 4.0*(-frh*g+f[3]/x)/x + f[4];// in dy[1*6+0]
+					yi_prefactor[nindex+ 1*6+1]= f[5]/x;                      // in dy[1*6+1]
+					yi_prefactor[nindex+ 1*6+2]= (f[6]*g+f[7]/x)/x;           // in dy[1*6+2]
+					yi_prefactor[nindex+ 2*6+3]= f[8];                        // in dy[2*6+3]
+					yi_prefactor[nindex+ 3*6+0]= (frh*g+f[9]/x)/x;            // in dy[3*6+0]
+					yi_prefactor[nindex+ 3*6+1]= f[10]/x;                     // in dy[3*6+1]
+					yi_prefactor[nindex+ 3*6+2]= f[11]/(x*x) + f[4];          // in dy[3*6+2]
+					x=x+dr;
+				}
+			}
+		}
+		/*}}}*/
+	} else if (pdeg) { // degree dependent terms /*{{{*/
+		int deg=*pdeg;
+		fn=(deg*(deg+1.0));
+
+		for (int layer_index=starting_layer;layer_index<matlitho->numlayers;layer_index++){
+			nstep=vars->nstep[layer_index];
+			nsteps=0;
+			for (int i=0;i<layer_index;i++)	nsteps+=vars->nstep[i];
+
+			ro=matlitho->density[layer_index];
+			issolid=matlitho->issolid[layer_index];
+
+			/*_______Expressions*/
+			fgr=4.0*PI*GG*ro*ra;
+
+			xmin=matlitho->radius[layer_index]/ra;
+			xmax=(matlitho->radius[layer_index+1])/ra;
+			dr = (xmax -xmin)/nstep;
+			x=xmin;
+
+
+				//fixme
+				g=GetGravity<doubletype>((xmin+xmax)/2*ra,layer_index,femmodel,matlitho,vars);
+
+			for (int n=0;n<nstep;n++){
+				nindex=nsteps*36+n*36;
+				g=GetGravity<doubletype>(x*ra,layer_index,femmodel,matlitho,vars);
+
+				if(issolid){
+					yi_prefactor[nindex+ 1*6+3]= fn/x;                  // in dy[1*6+3]
+					yi_prefactor[nindex+ 5*6+2]= -(fgr/g0*fn)/x;        // in dy[5*6+2]
+					yi_prefactor[nindex+ 5*6+4]= fn/(x*x);		     // in dy[5*6+4]
+				} else {
+					yi_prefactor[nindex+ 1*6+0]= (-4.0*(fgr/g)+fn/x)/x; // in dy[1*6+0] liquid layer
+				}
+				x=x+dr;
+			}
+		}
+		/*}}}*/
+	} else { // static terms /*{{{*/
+		for (int layer_index=starting_layer;layer_index<matlitho->numlayers;layer_index++){
+			nstep=vars->nstep[layer_index];
+			nsteps=0;
+			for (int i=0;i<layer_index;i++)	nsteps+=vars->nstep[i];
+
+			ro=matlitho->density[layer_index];
+			issolid=matlitho->issolid[layer_index];
+
+			/*_______Expressions*/
+			frhg0=ro*g0*ra/mu0;
+			fgr=4.0*PI*GG*ro*ra;
+
+			xmin=matlitho->radius[layer_index]/ra;
+			xmax=(matlitho->radius[layer_index+1])/ra;
+			dr = (xmax -xmin)/nstep;
+			x=xmin;
+				//fixme
+				g=GetGravity<doubletype>((xmin+xmax)/2*ra,layer_index,femmodel,matlitho,vars);
+			for (int n=0;n<nstep;n++){
+				g=GetGravity<doubletype>(x*ra,layer_index,femmodel,matlitho,vars);
+				nindex=nsteps*36+n*36;
+				if(issolid){
+					yi_prefactor[nindex+ 1*6+5]= -frhg0;       // in dy[1*6+5]
+					yi_prefactor[nindex+ 2*6+0]= -1.0/x;       // in dy[2*6+0]
+					yi_prefactor[nindex+ 2*6+2]= 1.0/x;        // in dy[2*6+2]
+					yi_prefactor[nindex+ 3*6+3]= -3.0/x;       // in dy[3*6+3]
+					yi_prefactor[nindex+ 3*6+4]= -frhg0/x;     // in dy[3*6+4]
+					yi_prefactor[nindex+ 4*6+0]= fgr/g0;       // in dy[4*6+0]
+					yi_prefactor[nindex+ 4*6+5]= 1.0;          // in dy[4*6+5]
+					yi_prefactor[nindex+ 5*6+5]= -2.0/x;       // in dy[5*6+5]
+				} else {
+					yi_prefactor[nindex+ 0*6+0]= fgr/g;        // in dy[0*6+0] liquid layer
+					yi_prefactor[nindex+ 0*6+1]= 1.0;          // in dy[0*6+1] liquid layer
+					yi_prefactor[nindex+ 1*6+1]= -2.0/x-fgr/g; // in dy[1*6+1] liquid layer
+				}
+				x=x+dr;
+			}
+		}
+		/*}}}*/
+	}
+}/*}}}*/
+template <typename doubletype> void        yi_derivatives(doubletype* dydx, doubletype* y, int layer_index, int n, doubletype* yi_prefactor, FemModel* femmodel, Matlitho* matlitho, LoveVariables<doubletype>* vars){ /*{{{*/
+	//computes yi derivatives at r=radius[layer_index]+ n/nstep*(radius[layer_index+1]-radius[layer_index])
+
+	bool issolid=matlitho->issolid[layer_index];
+	int iy,id,ny, nindex, nstep, nsteps;
+	//femmodel->parameters->FindParam(&nstep,LoveIntStepsPerLayerEnum);
+
+	nstep=vars->nstep[layer_index];
+	nsteps=0;
+	for (int i=0;i<layer_index;i++) nsteps+=vars->nstep[i];
+
+	/*{{{*/ /* For reference:
+			   flm=(la+2.0*mu);
+			   rlm=(3.0*la+2.0*mu)/(la+2.0*mu);
+			   rm0=mu/mu0;
+			   rg0=g/g0;
+			   frh=ro*g*ra/mu0;
+			   fgr=4.0*PI*GG*ro*ra/g0;
+			   fn=(deg*(deg+1.0));
+
+			   if(issolid){
+			   ny = 6;
+
+			   dy[0*6+0]= (-2.0*la/flm)/x;
+			   dy[0*6+1]= mu0/flm;
+			   dy[0*6+2]= (la*fn/flm)/x;
+			   dy[0*6+3]= 0.0;
+			   dy[0*6+4]= 0.0;
+			   dy[0*6+5]= 0.0;
+
+			   dy[1*6+0]=  4.0*(-frh+rm0*rlm/x)/x + ro*pow(omega,2.0)*ra/mu0;
+			   dy[1*6+1]=(-4.0*mu/flm)/x;
+			   dy[1*6+2]= fn*(frh-2.0*rm0*rlm/x)/x;
+			   dy[1*6+3]= fn/x;
+			   dy[1*6+4]= 0.0;
+			   dy[1*6+5]= -frh/rg0;
+
+			   dy[2*6+0]= -1.0/x;
+			   dy[2*6+1]= 0.0;
+			   dy[2*6+2]= 1.0/x;
+			   dy[2*6+3]= 1/rm0;
+			   dy[2*6+4]= 0.0;
+			   dy[2*6+5]= 0.0;
+
+			   dy[3*6+0]= (frh-2.0*rm0*rlm/x)/x;
+			   dy[3*6+1]= ( -la/flm)/x;
+			   dy[3*6+2]= (2.0*rm0*(la*(2.0*fn-1.0)+2.0*mu*(fn-1.0))/flm)/(x*x) + ro*pow(omega,2.0)*ra/mu0;
+			   dy[3*6+3]= -3.0/x;
+			   dy[3*6+4]= -(frh/rg0)/x;
+			   dy[3*6+5]= 0.0;
+
+			   dy[4*6+0]= fgr;
+			   dy[4*6+1]= 0.0;
+			   dy[4*6+2]= 0.0;
+			   dy[4*6+3]= 0.0;
+			   dy[4*6+4]= 0.0;
+			   dy[4*6+5]= 1.0;
+
+			   dy[5*6+0]= 0.0;
+			   dy[5*6+1]= 0.0;
+			   dy[5*6+2]= -(fgr*fn)/x;
+			   dy[5*6+3]= 0.0;
+			   dy[5*6+4]= fn/(x*x);
+			   dy[5*6+5]= -2.0/x;
+
+			   } else {
+			   ny = 2;
+
+			   dy[0*6+0]= fgr/rg0;
+			   dy[0*6+1]= 1.0;
+			   dy[1*6+0]= (-4.0*(fgr/rg0)+fn/x)/x;
+			   dy[1*6+1]= -2.0/x-fgr/rg0;
+
+			   }
+	*/ /*}}}*/
+	nindex=nsteps*36+n*36;
+
+	if(issolid){
+		ny = 6;
+	} else {
+		ny = 2;
+	}
+
+	for (id=0;id<ny;id++){
+		dydx[id]=0.0;
+		for (iy=0;iy<ny;iy++){
+			dydx[id]+=yi_prefactor[nindex+id*6+iy]*y[iy];
+		}
+	}
+	return;
+}/*}}}*/
+template <typename doubletype> void        propagate_yi_euler(doubletype* y, doubletype xmin, doubletype xmax, int layer_index, doubletype* yi_prefactor, FemModel* femmodel, Matlitho* matlitho, LoveVariables<doubletype>* vars){ /*{{{*/
+	//computes this: if we have y[j]=1.0 and y[!j]=0.0 at the bottom of the layer, what is y at the top of the layer?
+	//euler method
+	int nstep;
+	//femmodel->parameters->FindParam(&nstep,LoveIntStepsPerLayerEnum); 
+	nstep=vars->nstep[layer_index];
+
+
+	doubletype* dydx=xNewZeroInit<doubletype>(6);
+	doubletype dr = (xmax -xmin)/nstep;
+	doubletype x=xmin;
+	for(int i = 0;i<nstep;i++){
+		yi_derivatives<doubletype>(dydx,y,layer_index, i,yi_prefactor,femmodel,matlitho,vars);
+		for (int j=0;j<6;j++){
+			y[j]+=dydx[j]*dr;
+		}
+		x = x + dr;
+	}
+	xDelete<doubletype>(dydx);
+}/*}}}*/
+template <typename doubletype> void        propagate_yi_RK2(doubletype* y, doubletype xmin, doubletype xmax, int layer_index, doubletype* yi_prefactor, FemModel* femmodel, Matlitho* matlitho, LoveVariables<doubletype>* vars){ /*{{{*/
+	//computes this: if we have y[j]=1.0 and y[!j]=0.0 at the bottom of the layer, what is y at the top of the layer?
+	//Implements Runge-Kutta 2nd order (midpoint method)
+	int nstep;
+	//femmodel->parameters->FindParam(&nstep,LoveIntStepsPerLayerEnum); 
+	nstep=vars->nstep[layer_index];
+
+	doubletype k1[6]={0};
+	doubletype k2[6]={0};
+	doubletype k3[6]={0};
+	doubletype k4[6]={0};
+	doubletype y1[6]={0};
+	doubletype y2[6]={0};
+	doubletype y3[6]={0};
+
+	doubletype dr = (xmax -xmin)/nstep;
+	doubletype x=xmin;
+
+	for(int i = 0;i<nstep/2;i++){
+		yi_derivatives<doubletype>(k1,y,layer_index, 2*i,yi_prefactor,femmodel,matlitho,vars);
+		for (int j=0;j<6;j++) {y1[j]=y[j]+k1[j]*dr;}
+		yi_derivatives<doubletype>(k2,y1,layer_index, 2*i+1,yi_prefactor,femmodel,matlitho,vars);		
+
+		for (int j=0;j<6;j++){
+			y[j]+=k2[j]*2.0*dr;
+		}
+		x = x + 2.0*dr;
+	}
+}/*}}}*/
+	template <typename doubletype> void        propagate_yi_RK4(doubletype* y, doubletype xmin, doubletype xmax, int layer_index, doubletype* yi_prefactor, FemModel* femmodel, Matlitho* matlitho,LoveVariables<doubletype>* vars){ /*{{{*/
+	//computes this: if we have y[j]=1.0 and y[!j]=0.0 at the bottom of the layer, what is y at the top of the layer?
+	//Implements Runge-Kutta 4th order
+	int nstep;
+	//femmodel->parameters->FindParam(&nstep,LoveIntStepsPerLayerEnum); 
+	nstep=vars->nstep[layer_index];
+
+	doubletype k1[6]={0};
+	doubletype k2[6]={0};
+	doubletype k3[6]={0};
+	doubletype k4[6]={0};
+	doubletype y1[6]={0};
+	doubletype y2[6]={0};
+	doubletype y3[6]={0};
+
+	doubletype dr = (xmax -xmin)/nstep;
+	doubletype x=xmin;
+	for(int i = 0;i<nstep/2-1;i++){
+		yi_derivatives<doubletype>(k1,y,layer_index, 2*i,yi_prefactor,femmodel,matlitho,vars);
+		for (int j=0;j<6;j++) {y1[j]=y[j]+k1[j]*dr;}
+		yi_derivatives<doubletype>(k2,y1,layer_index, 2*i+1,yi_prefactor,femmodel,matlitho,vars);
+		for (int j=0;j<6;j++) {y2[j]=y[j]+k2[j]*dr;}
+		yi_derivatives<doubletype>(k3,y2,layer_index, 2*i+1,yi_prefactor,femmodel,matlitho,vars);
+		for (int j=0;j<6;j++) {y3[j]=y[j]+k3[j]*2.0*dr;}
+		yi_derivatives<doubletype>(k4,y3,layer_index, 2*i+2,yi_prefactor,femmodel,matlitho,vars);		
+
+		for (int j=0;j<6;j++){
+			y[j]+=(k1[j]+2.0*k2[j]+2.0*k3[j]+k4[j])/3.0*dr;		
+		}
+		x = x + 2.0*dr;
+	}
+
+	//Last step: we don't know the derivative at xmax, so we will assume the values at xmax-dr
+	int i=nstep/2;
+	yi_derivatives<doubletype>(k1,y,layer_index, 2*i,yi_prefactor,femmodel,matlitho,vars);
+	for (int j=0;j<6;j++) {y1[j]=y[j]+k1[j]*dr;}
+	yi_derivatives<doubletype>(k2,y1,layer_index, 2*i+1,yi_prefactor,femmodel,matlitho,vars);
+	for (int j=0;j<6;j++) {y2[j]=y[j]+k2[j]*dr;}
+	yi_derivatives<doubletype>(k3,y2,layer_index, 2*i+1,yi_prefactor,femmodel,matlitho,vars);
+	for (int j=0;j<6;j++) {y3[j]=y[j]+k3[j]*2.0*dr;}
+	yi_derivatives<doubletype>(k4,y3,layer_index, 2*i+1,yi_prefactor,femmodel,matlitho,vars);		
+
+	for (int j=0;j<6;j++){
+		y[j]+=(k1[j]+2.0*k2[j]+2.0*k3[j]+k4[j])/3.0*dr;		
+	}
+
+	x = x + 2.0*dr;
+
+}/*}}}*/
+template <typename doubletype> void        Innersphere_boundaryconditions(doubletype* yi, int layer_index, int deg, doubletype omega, FemModel* femmodel, Matlitho* matlitho, LoveVariables<doubletype>* vars){ /*{{{*/
+	//fills the boundary conditions at the bottom of layer[layer_index] in yi[0:2][0:5]
+
+	int nyi;
+	doubletype r = matlitho->radius[layer_index];
+	doubletype ra=matlitho->radius[matlitho->numlayers];
+	doubletype  g0,r0,mu0, GG;
+	IssmDouble mu0p, GGp;
+
+
+	femmodel->parameters->FindParam(&mu0p,LoveMu0Enum);
+	femmodel->parameters->FindParam(&GGp,LoveGravitationalConstantEnum);
+
+	g0=vars->g0;
+	r0=vars->r0;
+	mu0=mu0p;
+	GG=GGp;
+	nyi=vars->nyi;
+
+
+	doubletype g=GetGravity<doubletype>(r,layer_index,femmodel,matlitho,vars);
+	doubletype la,mu,ro;
+	
+	int i=layer_index-1;
+	if (layer_index==0) i=layer_index;
+
+	ro=matlitho->density[i];
+
+	//elastic values
+	la=matlitho->lame_lambda[i];
+	mu=matlitho->lame_mu[i];
+	doubletype Kappa=(la+2.0/3.0*mu);
+
+	//update to viscoelastic values
+	mu=vars->mu[i*vars->nfreq+vars->ifreq];
+	la = Kappa-2.0/3.0*mu; 
+
+	doubletype cst = 4.0*PI*GG*ro;
+	doubletype r2=pow(r,2.0);
+
+	//Greff-Lefftz and Legros 1997, p701, analytical solution for incompressible elastic layer for y3, y4, y5 ensuring they =0 at r=0
+	//These equations are then divided by r^n for numerical stability at higher degrees
+
+	//all terms in y1 y2 y6 are 0 in that layer because they are of the type r^l with l<0 and would diverge at the origin, that's why we only need 3 equations
+
+	yi[0+nyi*0]=1.0*r/ra;
+	yi[0+nyi*1]=1.0/(r*ra);
+	yi[0+nyi*2]=0.0;
+
+	yi[1+nyi*0]=(2.0*mu*(deg-1.0-3.0/deg) + cst/3.0*ro*r2)/mu0;
+	yi[1+nyi*1]=(2.0*mu*(deg-1.0)/r2 + cst/3.0*ro)/mu0;
+	yi[1+nyi*2]=-ro/mu0;
+
+	yi[2+nyi*0]=(deg+3.0)/(deg*(deg+1.0))*r/ra;
+	yi[2+nyi*1]=1.0/(deg*r*ra);
+	yi[2+nyi*2]=0.0;
+
+	yi[3+nyi*0]=2.0*mu*(deg+2.0)/((deg+1.0)*mu0);
+	yi[3+nyi*1]=2.0*mu*(deg-1.0)/(deg*r2*mu0);
+	yi[3+nyi*2]=0.0;
+
+	yi[4+nyi*0]=0.0;
+	yi[4+nyi*1]=0.0;
+	yi[4+nyi*2]=1.0/(g0*ra);
+
+	yi[5+nyi*0]=-cst*r/g0;
+	yi[5+nyi*1]=-cst/(r*g0);
+	yi[5+nyi*2]=deg/(r*g0);
+
+
+	/*doubletype vp2 = (la + 2.0*mu)/ro;
+	yi[0+nyi*0]=1.0*r/ra;
+	yi[0+nyi*1]=1.0/(r*ra);
+	yi[0+nyi*2]=0.0;
+
+	yi[1+nyi*0]=(2.0*mu*(deg-1.0-3.0/deg) + cst/3.0*ro*r2)/mu0;
+	yi[1+nyi*1]=(2.0*mu*(deg-1.0)/r2 + cst/3.0*ro)/mu0;
+	yi[1+nyi*2]=-ro/mu0;
+
+	yi[2+nyi*0]=(deg+3.0)/(deg*(deg+1.0))*r/ra;
+	yi[2+nyi*1]=1.0/(deg*r*ra);
+	yi[2+nyi*2]=0.0;
+
+	yi[3+nyi*0]=2.0*mu*(deg+2.0)/((deg+1.0)*mu0);
+	yi[3+nyi*1]=2.0*mu*(deg-1.0)/(deg*r2*mu0);
+	yi[3+nyi*2]=0.0;
+
+	yi[4+nyi*0]=0.0;
+	yi[4+nyi*1]=0.0;
+	yi[4+nyi*2]=1.0/(g0*ra);
+
+	yi[5+nyi*0]=-cst*r/g0;
+	yi[5+nyi*1]=-cst/(r*g0);
+	yi[5+nyi*2]=deg/(r*g0);*/
+
+
+
+}/*}}}*/
+template <typename doubletype> void        Coremantle_boundaryconditions(doubletype* yi, int layer_index, int deg, doubletype omega, FemModel* femmodel, Matlitho* matlitho, LoveVariables<doubletype>* vars){ /*{{{*/
+	//fills the boundary conditions at the bottom of layer[layer_index] in yi[0:2][0:5]
+
+	int nyi;
+	doubletype r = matlitho->radius[layer_index];
+	doubletype ra=matlitho->radius[matlitho->numlayers];
+	doubletype  g0,r0,mu0, GG;
+	IssmDouble mu0p, GGp;
+
+
+	femmodel->parameters->FindParam(&mu0p,LoveMu0Enum);
+	femmodel->parameters->FindParam(&GGp,LoveGravitationalConstantEnum);
+
+	g0=vars->g0;
+	r0=vars->r0;
+	mu0=mu0p;
+	GG=GGp;
+	nyi=vars->nyi;
+
+	doubletype ro=matlitho->density[layer_index-1];
+
+	
+	if (!matlitho->issolid[layer_index]) _error_("Love core error: CMB conditions requested but layer " << layer_index << " (mantle side) is not solid");
+	if (matlitho->issolid[layer_index-1]) _error_("Love core error: CMB conditions requested but layer " << layer_index-1 << " (outer core) is solid");
+
+	doubletype cst = 4.0/3.0*PI*GG*ro;
+	doubletype rl1=pow(r,deg-1);
+
+	yi[0+nyi*0]=-rl1/cst/ra;
+	yi[0+nyi*1]=1.0/ra;
+	yi[0+nyi*2]=0.0;
+
+	yi[1+nyi*0]=0.0;
+	yi[1+nyi*1]=ro*cst*r/mu0;
+	yi[1+nyi*2]=0.0;
+
+	yi[2+nyi*0]=0.0;
+	yi[2+nyi*1]=0.0;
+	yi[2+nyi*2]=1.0/ra;
+
+	yi[3+nyi*0]=0.0;
+	yi[3+nyi*1]=0.0;
+	yi[3+nyi*2]=0.0;
+
+	yi[4+nyi*0]=r*rl1/(g0*ra);
+	yi[4+nyi*1]=0.0;
+	yi[4+nyi*2]=0.0;
+
+	yi[5+nyi*0]=2.0*(deg-1)*rl1/g0;
+	yi[5+nyi*1]=3.0*cst/g0;
+	yi[5+nyi*2]=0.0;
+
+}/*}}}*/
+template <typename doubletype> void        build_yi_system(doubletype* yi, int deg, doubletype omega, doubletype* yi_prefactor, FemModel* femmodel, Matlitho* matlitho,LoveVariables<doubletype>* vars) { /*{{{*/
+
+	doubletype	g0,r0,mu0,x,ro1, GG;
+	int		nyi,starting_layer, nstep;
+	doubletype 	xmin,xmax,one,ro,g, ra;
+	IssmDouble 	mu0p, GGp;
+	bool 		debug;
+	int ny,is,ii,jj;
+	int scheme;
+	int ici = 0;   // Index of current interface 
+	int cmb=0;
+
+	femmodel->parameters->FindParam(&cmb,LoveCoreMantleBoundaryEnum);
+	femmodel->parameters->FindParam(&mu0p,LoveMu0Enum);
+	femmodel->parameters->FindParam(&GGp,LoveGravitationalConstantEnum);
+	femmodel->parameters->FindParam(&debug,LoveDebugEnum);
+	femmodel->parameters->FindParam(&scheme,LoveIntegrationSchemeEnum);
+
+	g0=vars->g0;
+	r0=vars->r0;
+	nyi=vars->nyi;
+	starting_layer=vars->starting_layer;
+	mu0=mu0p;
+	GG=GGp;
+	ra=matlitho->radius[matlitho->numlayers];
+
+	for (int i=0;i<6*(matlitho->numlayers+1);i++){
+		for(int j=0;j<6*(matlitho->numlayers+1);j++){
+			yi[i+6*(matlitho->numlayers+1)*j]=0.0;
+		}
+	}
+
+	doubletype ystart[6];
+	for (int k=0;k<6;k++) ystart[k]=0.0;		
+
+
+
+	for (int i = starting_layer; i<matlitho->numlayers;i++){ 
+		ici=i-starting_layer;
+		xmin=matlitho->radius[i]/ra;
+		xmax=(matlitho->radius[i+1])/ra;
+
+		if (matlitho->issolid[i]){
+			ny = 6;
+			is = 0;
+			one= 1.0;
+		} else {	
+			ny = 2;
+			is = 4;
+			one= -1.0;
+		}
+
+		for (int j = 0;j<ny;j++){
+			for (int k=0;k<6;k++){ystart[k]=0.0;}
+			ystart[j]= 1.0;
+
+			// Numerical Integration 
+			if (debug) propagate_yi_euler<doubletype>(&ystart[0], xmin, xmax, i, yi_prefactor,femmodel, matlitho, vars);
+			else {
+				if (scheme==0) propagate_yi_euler<doubletype>(&ystart[0], xmin, xmax, i, yi_prefactor,femmodel, matlitho, vars);
+				else if (scheme==1) propagate_yi_RK2<doubletype>(&ystart[0], xmin, xmax, i, yi_prefactor,femmodel, matlitho, vars);
+				else if (scheme==2) propagate_yi_RK4<doubletype>(&ystart[0], xmin, xmax, i, yi_prefactor,femmodel, matlitho, vars);
+				else _error_("Love core error: integration scheme not found");
+			}
+			// Boundary Condition matrix - propagation part 
+			ii = 6*(ici+1)+is;
+			jj = 6*(ici+1)+j+is-3;
+			for (int kk=0;kk<ny;kk++){
+				yi[(ii+kk)+nyi*jj] = ystart[kk]*one;
+			}
+		}
+
+		// Boundary Condition matrix - solid regions
+		if(matlitho->issolid[i]){
+			one = -1.0;
+			if(i>0) if(!matlitho->issolid[i-1]) one = 1.0;
+			for (int j=0;j<6;j++){
+				yi[(j+6*ici)+ nyi*(j+6*ici+3)] = one;
+			}
+		} else { // Boundary Condition matrix - liquid regions
+			ro1=matlitho->density[i];
+			g=GetGravity<doubletype>(matlitho->radius[i], i, femmodel,matlitho,vars);
+			ii = 6*ici;
+			jj = 6*ici+3;
+			yi[ii+nyi*(jj)] = -1.0;
+			yi[ii+nyi*(jj+4)] = -g0/g;
+			yi[(ii+1)+nyi*(jj)]=-ro1*g*ra/mu0;
+			yi[(ii+2)+nyi*(jj+1)]=-1.0;
+			yi[(ii+5)+nyi*(jj)]= 4.0*PI*GG*ro1*ra/g0;
+			yi[(ii+4)+nyi*(jj+4)]=-1.0;
+			yi[(ii+5)+nyi*(jj+5)]=-1.0;
+			g=GetGravity<doubletype>(matlitho->radius[i+1], i,femmodel,matlitho,vars);
+			ii = 6*(ici+1);
+
+			yi[ii+nyi*(jj+2)]=-1.0;
+			yi[ii+nyi*(jj+4)]=yi[(ii+4)+nyi*(jj+4)]*g0/g; // yi(17,14) solution integration 1 of z5 CMB
+			yi[ii+nyi*(jj+5)]=yi[(ii+4)+nyi*(jj+5)]*g0/g; // yi(17,15) solution integration 2 of z5 CMB
+			// yi(13,..) y1 CMB
+			yi[(ii+1)+nyi*(jj+2)]=-ro1*g*ra/mu0;
+			yi[(ii+2)+nyi*(jj+3)]=-1.0;
+			yi[(ii+5)+nyi*(jj+2)]= 4.0*PI*GG*ro1*ra/g0;
+		}	
+		ici = ici+1;
+	}
+
+	//-- Internal sphere: integration starts here rather than r=0 for numerical reasons
+	/*if (starting_layer==cmb) Coremantle_boundaryconditions<doubletype>(yi, starting_layer, deg, omega, femmodel, matlitho,vars);
+	else Innersphere_boundaryconditions<doubletype>(yi, starting_layer, deg, omega, femmodel, matlitho,vars);*/
+
+	Innersphere_boundaryconditions<doubletype>(yi, starting_layer, deg, omega, femmodel, matlitho,vars);
+
+	//-- Surface conditions
+	yi[(nyi-6)+nyi*(nyi-3)]=-1.0;
+	yi[(nyi-4)+nyi*(nyi-2)]=-1.0;
+	yi[(nyi-2)+nyi*(nyi-1)]=-1.0;
+	yi[(nyi-1)+nyi*(nyi-1)]=deg+1.0;
+
+	//-- Degree 1 special case
+	if(deg==1){
+		for (int i=0;i<nyi;i++){
+			yi[(nyi-1)+nyi*i]=0.0;
+		}
+		yi[(nyi-1)+nyi*(nyi-1)]=1.0;
+	}
+
+}/*}}}*/
+template <typename doubletype> void        yi_boundary_conditions(doubletype* yi_righthandside, int deg, FemModel* femmodel, Matlitho* matlitho,LoveVariables<doubletype>* vars, int forcing_type){ /*{{{*/
+
+	doubletype  g0,r0,mu0,ra,rb,rc;
+	int nyi,icb,cmb,starting_layer;
+	doubletype* EarthMass;
+	IssmDouble mu0p;
+
+	g0=vars->g0;
+	r0=vars->r0;
+	nyi=vars->nyi;
+	starting_layer=vars->starting_layer;
+	EarthMass=vars->EarthMass;
+
+	femmodel->parameters->FindParam(&mu0p,LoveMu0Enum);
+	femmodel->parameters->FindParam(&icb,LoveInnerCoreBoundaryEnum);
+	femmodel->parameters->FindParam(&cmb,LoveCoreMantleBoundaryEnum);
+
+	mu0=mu0p;
+	// In Case of a Inner Core - Outer Core - Mantle planet and Boundary conditions on these 3 interfaces
+	ra=matlitho->radius[matlitho->numlayers];	
+	rb=0;
+	rc=0;
+	if (forcing_type<=4){
+		rc=matlitho->radius[icb];
+	} 
+	else if (forcing_type<=8){
+		rb=matlitho->radius[cmb];
+	}
+
+	doubletype ro_mean=EarthMass[matlitho->numlayers-1]/(4.0/3.0*PI*pow(ra,3.0));
+
+	for (int i=0;i<(matlitho->numlayers+1)*6;i++) yi_righthandside[i]=0.0;
+
+	switch (forcing_type) {
+
+		//-- forcings at the Inner Core Boundary
+		case 1:	//'ICB --Volumetric Potential'
+			yi_righthandside[6*icb+5]=(deg)/(rc*g0);
+			yi_righthandside[6*icb+4]=1.0/(ra*g0);
+			break;
+		case 2: //'ICB --Pressure'
+			yi_righthandside[6*icb+1]=-ro_mean/mu0;
+			break;
+		case 3://'ICB --Loading'
+			yi_righthandside[6*icb+1]=-ro_mean*(2.0*deg+1.0)/(3.0*mu0)*ra/rc;
+			yi_righthandside[6*icb+5]= (2.0*deg+1.0)/(rc*g0);
+			break;
+		case 4://'ICB --Tangential Traction'
+			yi_righthandside[6*icb+3]= ro_mean/mu0;
+			break;
+
+			//--forcings at the Core Mantle Boundary
+		case 5://'CMB --Volumetric Potential'
+			yi_righthandside[6*cmb+1]=-ro_mean/mu0*ra/rb;
+			yi_righthandside[6*cmb+5]= (2.0*deg+1.0)/(rb*g0);
+			break;
+		case 6://'CMB --Pressure'
+			yi_righthandside[6*cmb+1]=-ro_mean/mu0;
+			break;
+		case 7://'CMB --Loading'
+			yi_righthandside[6*cmb+1]=-ro_mean*(2.0*deg+1.0)/(3.0*mu0)*ra/rb;
+			yi_righthandside[6*cmb+5]= (2.0*deg+1.0)/(rb*g0);
+			break;
+		case 8://'CMB --Tangential Traction'
+			yi_righthandside[6*cmb+3]=-ro_mean/mu0;
+			break;
+
+			//--forcings at the surface
+		case 9://'SURF--Volumetric Potential'
+			if (deg>1) yi_righthandside[nyi-1]=(2.0*deg+1.0)/(ra*g0);
+			break;
+		case 10://'SURF--Pressure'
+			yi_righthandside[nyi-5]=-ro_mean/mu0;
+			break;
+		case 11://'SURF--Loading'
+			yi_righthandside[nyi-5]=-ro_mean*(2.0*deg+1.0)/(3.0*mu0);
+			if (deg>1) yi_righthandside[nyi-1]= (2.0*deg+1.0)/(ra*g0);
+			break;
+		case 12://'SURF--Tangential Traction'
+			yi_righthandside[nyi-3]= ro_mean/mu0;
+			break;
+		default:
+			_error_("love core error: forcing_type not supported yet");
+	}
+}/*}}}*/
+template <typename doubletype> void        solve_yi_system(doubletype* loveh, doubletype* lovel, doubletype* lovek, int deg, doubletype omega, IssmDouble* frequencies, doubletype* yi, doubletype* rhs, FemModel* femmodel, Matlitho* matlitho, LoveVariables<doubletype>* vars, bool verbosecpu){ /*{{{*/
+
+	doubletype  g0,r0,mu0;
+	//IssmDouble* frequencies;
+	int nyi,starting_layer, dummy,cmb;
+	bool allow_layer_deletion, debug;
+	doubletype* EarthMass=NULL;
+	IssmDouble mu0p,loveratio,underflow_tol;
+
+	g0=vars->g0;
+	r0=vars->r0;
+	nyi=vars->nyi;
+	starting_layer=vars->starting_layer;
+	EarthMass=vars->EarthMass;
+
+	femmodel->parameters->FindParam(&mu0p,LoveMu0Enum);
+	femmodel->parameters->FindParam(&allow_layer_deletion,LoveAllowLayerDeletionEnum);
+	femmodel->parameters->FindParam(&underflow_tol,LoveUnderflowTolEnum);
+	femmodel->parameters->FindParam(&debug,LoveDebugEnum);
+	femmodel->parameters->FindParam(&cmb,LoveCoreMantleBoundaryEnum);
+	//femmodel->parameters->FindParam(&frequencies,&dummy,LoveFrequenciesEnum);
+	mu0=mu0p;
+	doubletype ra=matlitho->radius[matlitho->numlayers];
+	bool exit=false;
+	int lda,ldb;
+
+
+	for(;!exit;){ //cycles of: attempt to solve the yi system, then delete a layer if necessary
+		lda=nyi;
+		ldb=nyi;
+		doubletype*  yilocal=xNew<doubletype>(nyi*nyi); // we will need to redeclare these inside here as nyi changes
+		doubletype*  rhslocal=xNew<doubletype>(nyi);
+
+		//we need to do a local copy of yi,rhs to send them to LAPACK with the appropriate size and to keep the original matrices in case layers are deleted and we need to try again
+		for (int i=0;i<nyi;i++){ 
+			rhslocal[i]=rhs[i];
+			for (int j=0;j<nyi;j++){
+				yilocal[i+j*nyi]=yi[i+j*nyi];
+			}
+		}
+		
+		if (debug){
+			IssmDouble*  yidebug=xNew<IssmDouble>(nyi*nyi);
+			IssmDouble*  rhsdebug=xNew<IssmDouble>(nyi);
+			for (int i=0;i<nyi;i++){ 
+				rhsdebug[i]=DownCastVarToDouble(rhs[i]);
+				for (int j=0;j<nyi;j++){
+					yidebug[i+j*nyi]=DownCastVarToDouble(yi[i+j*nyi]);
+				}
+			}
+			femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveYiEnum,yidebug,nyi,nyi,0,0));
+			femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveRhsEnum,rhsdebug,nyi,1,0,0));
+			xDelete<IssmDouble>(yidebug);
+			xDelete<IssmDouble>(rhsdebug);
+		}
+
+		//-- Resolution
+		int* ipiv=xNewZeroInit<int>(nyi); //pivot index vector
+		int info = 0;// error checker
+		int nrhs=1; // number of right hand size columns
+
+		allgesv<doubletype>(&nyi, &nrhs, yilocal, &lda, ipiv, rhslocal, &ldb, &info);
+
+		xDelete<int>(ipiv);
+
+			/*_printf_("i j yi[i+nyi*j] rhs[i]");
+			for (int i=0;i<nyi;i++){
+					_printf_(i<<" "<<rhs[i]<<"\n");
+			}
+
+			for (int i=0;i<nyi;i++){
+				for (int j=0;j<nyi;j++){
+					_printf_(i<<" "<<j<<" "<<yi[i+nyi*j]<<" "<<rhs[i]<<"\n");
+				}
+			}
+			_error_("love core warning in DGESV : LAPACK linear equation solver couldn't resolve the system");*/
+
+		if(VerboseSolution() && verbosecpu && info!=0){ 
+			_printf_("i j yi[i+nyi*j] rhs[i]\n");
+			for (int i=0;i<nyi;i++){
+				for (int j=0;j<nyi;j++){
+					_printf_(i<<" "<<j<<" "<<yi[i+nyi*j]<<" "<<rhs[i]<<"\n");
+				}
+			}
+			_error_("love core error in DGESV : LAPACK linear equation solver couldn't resolve the system");
+		}
+
+
+		*loveh = rhslocal[nyi-3]*ra*g0;
+		*lovel = rhslocal[nyi-2]*ra*g0;
+		*lovek = rhslocal[nyi-1]*ra*g0;
+
+		doubletype loveh1 = rhslocal[3];
+		doubletype lovel1 = rhslocal[5];
+		doubletype lovek1 = rhslocal[7] - pow(matlitho->radius[starting_layer]/ra,deg)/(g0*ra);
+
+		doubletype loveh1s = rhslocal[nyi-3];
+		doubletype lovel1s = rhslocal[nyi-2];
+		doubletype lovek1s = rhslocal[nyi-1] - 1.0/(g0*ra);
+
+		loveratio = abs(loveh1/loveh1s); //ratio of center to surface love numbers, determines if we should remove layers
+		if (abs(lovel1/lovel1s) < loveratio) loveratio = abs(lovel1/lovel1s); 
+		if (abs(lovek1/lovek1s) < loveratio) loveratio = abs(lovek1/lovek1s);
+
+		if (debug) goto save_results;
+
+		if (!allow_layer_deletion || nyi<=12 || omega!=angular_frequency<doubletype>(frequencies[0]) || deg==0){ 
+			goto save_results;
+			/*We are not allowed to delete layers, or there is only one layer left. We also don't want to delete 
+			  layers in the middle of a loop on frequencies, as that can lead to a jump that would compromise the 
+			  inverse laplace transform.*/
+		}
+
+		if (omega==0){ // if running elastic love_numbers, record at which degree we must delete layers, this way we synch layer deletion between cpus next time we calculate love numbers
+			//We need to delete a layer and try again if the ratio between deepest love number to surface love number is too low (risk of underflow) or garbage
+			if (loveratio<=underflow_tol || xIsNan(loveratio) || xIsInf(loveratio)) {
+				vars->deg_layer_delete[starting_layer]=deg;
+				if(VerboseSolution() && verbosecpu){
+					_printf_("\n   Degree: " << deg <<", surface/Depth Love number ratio small: "<<loveratio<<"\n");
+					_printf_("    Changing the interface where integration starts\n");
+					_printf_("    New start interface: r="<< matlitho->radius[starting_layer+1] <<"m\n\n");
+				}
+			}
+		}
+
+		if (deg==vars->deg_layer_delete[starting_layer]){ // if we are at the degree where we should delete the current layer, proceed to delete the bottom layer
+			//if (omega!=0 && VerboseSolution()  && verbosecpu) _printf_(", deleting layer " << starting_layer << "\n");
+			nyi-=6;
+			starting_layer+=1;
+			vars->nyi=nyi;
+			vars->starting_layer=starting_layer;
+
+			for (int i=0;i<nyi;i++){//shift everything down by 1 layer
+				rhs[i]=rhs[i+6];
+				for (int j=0;j<nyi;j++){
+					yi[j+i*nyi]=yi[j+6+(i+6)*(nyi+6)];
+				}
+			}
+
+	/*if (starting_layer==cmb) Coremantle_boundaryconditions<doubletype>(yi, starting_layer, deg, omega, femmodel, matlitho,vars);
+	else Innersphere_boundaryconditions<doubletype>(yi, starting_layer, deg, omega, femmodel, matlitho,vars); //we move the first interface to the new starting layer. yi[0:2,0:5] will be different
+	*/
+	Innersphere_boundaryconditions<doubletype>(yi, starting_layer, deg, omega, femmodel, matlitho,vars);
+		} else { //we are ready to save the outputs and break the main loop
+
+save_results:
+			for (int i=0;i<nyi;i++){
+				rhs[i]=rhslocal[i];
+				for (int j=0;j<nyi;j++){
+					yi[j+i*nyi]=yilocal[j+i*nyi];
+				}
+			}
+
+			//make sure we can't output numbers from deleted layers
+			for (int i=nyi;i<(matlitho->numlayers+1)*6;i++){ 
+				rhs[i]=0.0;
+				for (int j=0;j<(matlitho->numlayers+1)*6;j++){
+					yi[j+i*(matlitho->numlayers+1)*6]=0.0;
+				}
+			}
+			for (int i=0;i<nyi;i++){
+				for (int j=nyi;j<(matlitho->numlayers+1)*6;j++){
+					yi[j+i*(matlitho->numlayers+1)*6]=0.0;
+				}
+			}
+
+			exit = true;
+		}
+		xDelete<doubletype>(yilocal);
+		xDelete<doubletype>(rhslocal);
+	}
+	//xDelete<IssmDouble>(frequencies);	
+
+}/*}}}*/
+template <typename doubletype> void        love_freq_to_temporal(LoveNumbers<doubletype>* Lovet, LoveNumbers<doubletype>* Tidalt, doubletype* pmtf_colineart, doubletype* pmtf_orthot, LoveNumbers<doubletype>* Lovef,LoveNumbers<doubletype>* Tidalf, IssmDouble* frequencies, FemModel* femmodel, bool verbosecpu){ /*{{{*/
+	//Transforms all frequency-dependent love numbers into time-dependent love numbers
+	int nfreq,sh_nmax,sh_nmin,indxi,indf, NTit, forcing_type, nt;
+	IssmDouble kf,Omega,moi_e,moi_p,alpha;
+	doubletype* pmtf_colinearf=NULL;
+	doubletype* pmtf_orthof=NULL;
+	bool chandler_wobble=false;
+
+	nfreq=Lovef->nfreq;
+	sh_nmin=Lovef->sh_nmin;
+	sh_nmax=Lovef->sh_nmax;
+
+	femmodel->parameters->FindParam(&NTit,LoveNTemporalIterationsEnum);
+
+	//Parameters for the rotationnal feedback
+	femmodel->parameters->FindParam(&chandler_wobble,LoveChandlerWobbleEnum);
+	femmodel->parameters->FindParam(&forcing_type,LoveForcingTypeEnum);
+	femmodel->parameters->FindParam(&kf,TidalLoveK2SecularEnum);
+	femmodel->parameters->FindParam(&Omega,RotationalAngularVelocityEnum);
+	femmodel->parameters->FindParam(&moi_e,RotationalEquatorialMoiEnum);
+	femmodel->parameters->FindParam(&moi_p,RotationalPolarMoiEnum);
+
+	nt=Lovet->nfreq;
+	doubletype* xi=postwidder_coef<doubletype>(NTit);
+
+	if(VerboseSolution()  && verbosecpu) _printf_("   Inverse Laplace Transform... ");
+
+	for (int d=sh_nmin;d<sh_nmax+1;d++){
+		for (int t=0;t<nt;t++){
+			postwidder_transform<doubletype>(Lovet->H,Lovef->H,d,t,sh_nmax,NTit,xi,femmodel);
+			postwidder_transform<doubletype>(Lovet->K,Lovef->K,d,t,sh_nmax,NTit,xi,femmodel);
+			postwidder_transform<doubletype>(Lovet->L,Lovef->L,d,t,sh_nmax,NTit,xi,femmodel);
+		}
+	}
+
+	if(VerboseSolution()  && verbosecpu) _printf_("done!\n");
+
+	if (forcing_type==11){ //Let's retrieve the functions necessary for the rotational_feedback
+		if(VerboseSolution()  && verbosecpu) _printf_("     Transforming PMTF and tidal love numbers... ");
+		pmtf_colinearf = xNewZeroInit<doubletype>(3*nfreq);
+		pmtf_orthof = xNewZeroInit<doubletype>(3*nfreq);
+		int d=2;
+		doubletype s,R1,R2;
+		alpha=(moi_p-moi_e)/moi_e; //Earth flattening
+
+		if (chandler_wobble){ //Chandler Wobble is untested yet
+			for (int fr=0;fr<nfreq;fr++){		
+				s=angular_frequency<doubletype>(frequencies[fr]);
+				R1=alpha*Omega*(1.0-Tidalf->K[fr*3+d]/kf);
+				R2=1.0+alpha*Tidalf->K[fr*3+d]/kf;
+				pmtf_colinearf[fr*3+d]=alpha*(1.0+Lovef->K[fr*(sh_nmax+1)+d])*(Omega*R1-pow(s,2)*R2)/(pow(R1,2.0)+pow(s*R2,2.0));
+				pmtf_orthof[fr*3+d]=alpha*(1.0+Lovef->K[fr*(sh_nmax+1)+d])*s*Omega*(1.0+alpha)/(pow(R1,2.0)+pow(s*R2,2.0));
+			}
+		}
+		else {
+			for (int fr=0;fr<nfreq;fr++){		
+				pmtf_colinearf[fr*3+d]=(1.0+Lovef->K[fr*(sh_nmax+1)+d])/(1.0-Tidalf->K[fr*3+d]/kf);
+				pmtf_orthof[fr*3+d]=0.0;
+			}
+		}
+		for (int t=0;t<nt;t++){
+			postwidder_transform<doubletype>(Tidalt->H,Tidalf->H,2,t,2,NTit,xi,femmodel);
+			postwidder_transform<doubletype>(Tidalt->K,Tidalf->K,2,t,2,NTit,xi,femmodel);
+			postwidder_transform<doubletype>(Tidalt->L,Tidalf->L,2,t,2,NTit,xi,femmodel);
+			postwidder_transform<doubletype>(pmtf_colineart,pmtf_colinearf,2,t,2,NTit,xi,femmodel);
+			postwidder_transform<doubletype>(pmtf_orthot,pmtf_orthof,2,t,2,NTit,xi,femmodel);
+		}
+		xDelete<doubletype>(pmtf_colinearf);
+		xDelete<doubletype>(pmtf_orthof);
+		if(VerboseSolution() && verbosecpu) _printf_("done!\n");
+	}
+
+	xDelete<doubletype>(xi);
+}/*}}}*/
+
+template <typename doubletype> void        compute_love_numbers(LoveNumbers<doubletype>* Lovef, LoveNumbers<doubletype>* Elastic, int forcing_type, int sh_cutoff, IssmDouble* frequencies, FemModel* femmodel, Matlitho* matlitho, LoveVariables<doubletype>* vars, bool verbosecpu){
+
+	int nsteps, kernel_index,kernel_indexe,deleted_layer_offset, deg, sh_nmin, sh_nmax, nfreq;
+	doubletype  lovek, loveh, lovel, loveratio;
+	doubletype  omega;
+	doubletype* yi_prefactor=NULL;
+	doubletype* yi_righthandside=NULL;
+	doubletype* yi=NULL;
+	doubletype  underflow_tol;
+	IssmDouble dr;
+	bool freq_skip, istemporal;
+	int cmb=0;
+	int nyi_init=0;
+
+	//femmodel->parameters->FindParam(&nstep,LoveIntStepsPerLayerEnum);
+	femmodel->parameters->FindParam(&istemporal,LoveIsTemporalEnum);
+	femmodel->parameters->FindParam(&cmb,LoveCoreMantleBoundaryEnum);
+
+	nfreq=Lovef->nfreq;
+	sh_nmin=Lovef->sh_nmin;
+	sh_nmax=Lovef->sh_nmax;
+	if (Elastic==NULL) sh_cutoff=sh_nmax;
+
+	// reset deleted layers in case we have called this function before;
+	vars->starting_layer=0;
+	vars->nyi=6*(matlitho->numlayers-vars->starting_layer+1);
+	nyi_init=6*(matlitho->numlayers+1);
+	nsteps=0;
+	for (int i=0;i<matlitho->numlayers;i++)	nsteps+=vars->nstep[i];
+
+	//yi_prefactor=xNewZeroInit<doubletype>(6*6*nstep*matlitho->numlayers);
+	yi_prefactor=xNewZeroInit<doubletype>(6*6*nsteps);
+	yi_righthandside=xNewZeroInit<doubletype>(nyi_init);
+	yi=xNewZeroInit<doubletype>(nyi_init*nyi_init);
+
+	//precompute yi coefficients that do not depend on degree or frequency
+	fill_yi_prefactor<doubletype>(yi_prefactor, NULL, NULL,femmodel, matlitho,vars);
+
+	if (VerboseSolution() && Elastic  && verbosecpu) _printf_("\n");
+
+	for(int deg=0;deg<2;deg++){ // calculation is in the center of mass reference frame, neutralize degree 0 and 1 mass changes, i.e 1+k=0
+		for (int fr=0;fr<nfreq;fr++){
+			Lovef->K[fr*(sh_nmax+1)+deg]=-1.0;
+		}
+	}
+
+	for(int deg=sh_nmin;deg<sh_cutoff+1;deg++){
+		if (VerboseSolution() && Elastic && verbosecpu) {
+			_printf_("\r   Degree: " << deg << "/" << sh_nmax << "    ");
+		}
+
+		//precompute yi coefficients that depend on degree but not frequency
+		fill_yi_prefactor<doubletype>(yi_prefactor, &deg, NULL,femmodel, matlitho,vars); 
+
+		for (int fr=0;fr<nfreq;fr++){
+			omega=angular_frequency<doubletype>(frequencies[fr]);
+			vars->ifreq=fr;
+			
+			//precompute yi coefficients that depend on degree and frequency
+			fill_yi_prefactor<doubletype>(yi_prefactor, &deg,&omega,femmodel, matlitho,vars);
+
+			//solve the system
+			yi_boundary_conditions<doubletype>(yi_righthandside,deg,femmodel,matlitho,vars,forcing_type);
+			build_yi_system<doubletype>(yi,deg,omega,yi_prefactor,femmodel,matlitho,vars);
+			solve_yi_system<doubletype>(&loveh,&lovel,&lovek, deg, omega, frequencies, yi, yi_righthandside,femmodel, matlitho,vars,verbosecpu && !Elastic);
+
+			Lovef->H[fr*(sh_nmax+1)+deg]=loveh;
+			Lovef->K[fr*(sh_nmax+1)+deg]=lovek-1.0;
+			Lovef->L[fr*(sh_nmax+1)+deg]=lovel;
+			deleted_layer_offset=(matlitho->numlayers+1)*6-vars->nyi;// =6 per deleted layer
+			kernel_index=fr*(sh_nmax+1)*(matlitho->numlayers+1)*6 + deg*(matlitho->numlayers+1)*6 + deleted_layer_offset;
+			for (int i=0;i<vars->nyi;i++){
+				Lovef->Kernels[kernel_index+i]=yi_righthandside[i];
+			}
+		}
+	}
+
+	if (Elastic) { // if elastic values were provided, we copy elastic love numbers above the cutoff degree instead of computing them
+		for(int deg=sh_cutoff+1;deg<sh_nmax+1;deg++){
+			if (VerboseSolution() && Elastic  && verbosecpu) {
+				if (deg==sh_nmax || deg%100==0)	_printf_("\r   Degree: " << deg << "/" << Lovef->sh_nmax << "    ");
+			}
+			for (int fr=0;fr<nfreq;fr++){
+				// just copy the elastic values
+				Lovef->H[fr*(sh_nmax+1)+deg]=Elastic->H[deg];
+				Lovef->K[fr*(sh_nmax+1)+deg]=Elastic->K[deg];
+				Lovef->L[fr*(sh_nmax+1)+deg]=Elastic->L[deg];
+				deleted_layer_offset=(matlitho->numlayers+1)*6-vars->nyi;// =6 per deleted layer
+				kernel_index=fr*(sh_nmax+1)*(matlitho->numlayers+1)*6 + deg*(matlitho->numlayers+1)*6 + deleted_layer_offset;
+				kernel_indexe=deg*(matlitho->numlayers+1)*6 + deleted_layer_offset;
+				for (int i=0;i<vars->nyi;i++){
+					Lovef->Kernels[kernel_index+i]=Elastic->Kernels[kernel_indexe+i];
+				}
+			}
+		}
+	}
+
+
+
+	if (VerboseSolution() && Elastic  && verbosecpu) _printf_("\n");
+	xDelete<doubletype>(yi);
+	xDelete<doubletype>(yi_righthandside);
+	xDelete<doubletype>(yi_prefactor);
+}/*}}}*/
+
+/*templated cores:*/
+template <typename doubletype> LoveVariables<doubletype>*	love_init(FemModel* femmodel, Matlitho* matlitho, bool verbosecpu){/*{{{*/
+
+	/*initialize Planet_Mass(r) for efficient computation of gravity, value of surface gravity and inital size of the yi equation system*/
+
+	bool        verbosemod = (int)VerboseModule();
+	int         numlayers  = matlitho->numlayers;
+	int 	    minsteps;
+	doubletype* r=NULL;
+	doubletype  r1,r2,ro, GG;
+	IssmDouble GGp;
+	IssmDouble dr;
+
+	/*outputs:*/
+	doubletype* EarthMass=NULL;
+	doubletype  g0,r0;
+	int         nyi,starting_layer,cmb;
+	int*	    deg_layer_delete;
+	int*	    nstep;
+
+	
+	femmodel->parameters->FindParam(&GGp,LoveGravitationalConstantEnum);
+	femmodel->parameters->FindParam(&minsteps, LoveMinIntegrationStepsEnum);
+	femmodel->parameters->FindParam(&dr, LoveMaxIntegrationdrEnum);
+	femmodel->parameters->FindParam(&cmb,LoveCoreMantleBoundaryEnum);
+	GG=GGp;
+	EarthMass=xNewZeroInit<doubletype>(numlayers+1);
+	deg_layer_delete=xNewZeroInit<int>(numlayers);
+
+	r=xNewZeroInit<doubletype>(numlayers+1);
+	nstep=xNewZeroInit<int>(numlayers);
+	for (int i=0;i<numlayers+1;i++){
+		r[i] = matlitho->radius[i];
+		if (i<numlayers) {
+			// nstep[i] is the largest even integer such that (radius[i+1]-radius[i])/nstep[i]<dr
+			nstep[i]=ceil((matlitho->radius[i+1]-matlitho->radius[i])/dr/2)*2;
+			if (nstep[i]<minsteps) nstep[i]=minsteps;
+		}
+	}
+
+	for (int i=0;i<numlayers;i++){
+		r2 = r[i+1];
+		ro = matlitho->density[i];
+		if (i==0){
+			EarthMass[i] = ro*pow(r2,3.0)*4.0*PI/3.0;
+		}else{
+			r1=r[i];
+			EarthMass[i] = EarthMass[i-1] + ro*(pow(r2,3.0)-pow(r1,3.0))*4.0*PI/3.0;;
+		}
+	}
+	g0=EarthMass[numlayers-1]*GG/pow(r[numlayers],2.0);
+	r0=r[numlayers];
+	starting_layer=0;
+	nyi=6*(numlayers-starting_layer+1);
+
+
+	if(VerboseSolution() && verbosecpu){
+		_printf_("     Surface gravity: " << g0 << " m.s^-2\n");
+		_printf_("     Mean density: " << EarthMass[numlayers-1]/(4.0/3.0*PI*pow(r0,3.0)) << " kg.m^-3\n");
+	}
+
+	xDelete<doubletype>(r);
+	return new LoveVariables<doubletype>(EarthMass,g0,r0,nyi,starting_layer,deg_layer_delete,nstep);
+
+} /*}}}*/
+template <typename doubletype> void        love_core_template(FemModel* femmodel){ /*{{{*/
+
+	Matlitho*   matlitho=NULL;
+	int         nfreq, NTit,nt, forcing_type,dummy, sh_cutoff;
+	int         sh_nmin,sh_nmax,kernel_index,deleted_layer_offset;
+	bool        allow_layer_deletion,love_kernels, istemporal, freq_skip;
+	bool        verbosemod = (int)VerboseModule();
+	IssmDouble *frequencies = NULL;
+	IssmDouble *frequencies_local=NULL;
+	bool        save_results;
+	bool        complex_computation;
+	bool	    quad_precision;
+	bool	    verbosecpu=false;
+
+	doubletype  omega;
+	doubletype  lovek, loveh, lovel, loveratio;
+	IssmDouble pw_threshold, pw_test_h, pw_test_l,pw_test_k;
+
+	/* parallel computing */
+	LoveNumbers<doubletype>* Lovef_local=NULL;
+	LoveNumbers<doubletype>* Tidalf_local=NULL;
+
+	/*elastic & fluid love numbers*/
+	LoveNumbers<doubletype>* Elastic=NULL;
+	IssmDouble* frequencies_elastic=NULL;
+	LoveNumbers<doubletype>* Fluid=NULL;
+	IssmDouble* frequencies_fluid=NULL;
+
+	LoveVariables<doubletype>* vars=NULL;
+
+	/*recover materials parameters: there is only one Matlitho, chase it down the hard way:*/
+	for (Object* & object: femmodel->materials->objects){
+		Material* material=xDynamicCast<Material*>(object);
+		if(material->ObjectEnum()==MatlithoEnum){
+			matlitho=xDynamicCast<Matlitho*>(material);
+			break;
+		}
+	}
+	_assert_(matlitho);
+
+	/*recover parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&nfreq,LoveNfreqEnum);
+	femmodel->parameters->FindParam(&frequencies,&dummy,LoveFrequenciesEnum); _assert_(nfreq==dummy);
+	femmodel->parameters->FindParam(&sh_nmax,LoveShNmaxEnum);
+	femmodel->parameters->FindParam(&sh_nmin,LoveShNminEnum);
+	femmodel->parameters->FindParam(&allow_layer_deletion,LoveAllowLayerDeletionEnum);
+	femmodel->parameters->FindParam(&love_kernels,LoveKernelsEnum);
+	femmodel->parameters->FindParam(&forcing_type,LoveForcingTypeEnum);
+	femmodel->parameters->FindParam(&istemporal,LoveIsTemporalEnum);
+	femmodel->parameters->FindParam(&complex_computation,LoveComplexComputationEnum);
+	femmodel->parameters->FindParam(&quad_precision,LoveQuadPrecisionEnum);
+	femmodel->parameters->FindParam(&pw_threshold,LovePostWidderThresholdEnum);
+	if (istemporal)	femmodel->parameters->FindParam(&NTit,LoveNTemporalIterationsEnum);
+
+	Elastic= new LoveNumbers<doubletype>(sh_nmin,sh_nmax,1,1,1,matlitho);
+	Fluid= new LoveNumbers<doubletype>(sh_nmin,sh_nmax,1,1,1,matlitho);
+	//distribute frequencies for parallel computation /*{{{*/
+	int nt_local, nf_local, lower_row, upper_row;
+	if (istemporal){ 
+		//temporal love numbers are obtained via blocks of 2*NTit frequencies samples
+		//here we are making sure no block is split between different cpus, which would make the inverse laplace transform impossible
+		nt=nfreq/2/NTit;
+		nt_local=DetermineLocalSize(nt,IssmComm::GetComm());
+		nf_local=nt_local*2*NTit; // number of local frequencies
+		GetOwnershipBoundariesFromRange(&lower_row,&upper_row,nt_local,IssmComm::GetComm());
+		lower_row*=2*NTit;
+		upper_row*=2*NTit;
+	}
+	else{
+		//in this case frequency samples are completely independent so we can split them evenly across cpus
+		nf_local=DetermineLocalSize(nfreq,IssmComm::GetComm());
+		GetOwnershipBoundariesFromRange(&lower_row,&upper_row,nf_local,IssmComm::GetComm());
+	}
+
+	if (lower_row==0) verbosecpu=true; //let only cpu1 be verbose
+	if(VerboseSolution() && verbosecpu) _printf0_("   computing LOVE numbers\n");
+	vars=love_init<doubletype>(femmodel,matlitho,verbosecpu);
+
+	frequencies_local=xNewZeroInit<IssmDouble>(nf_local);
+	for (int fr=0;fr<nf_local;fr++)	frequencies_local[fr]=frequencies[lower_row+fr];
+
+	Lovef_local= new LoveNumbers<doubletype>(sh_nmin,sh_nmax,nf_local,lower_row,nfreq, matlitho);
+	Tidalf_local= new LoveNumbers<doubletype>(2,2,nf_local,lower_row,nfreq, matlitho);
+
+	/*}}}*/
+	frequencies_elastic=xNewZeroInit<IssmDouble>(1);
+	frequencies_fluid=xNewZeroInit<IssmDouble>(1);
+	for (int fr=0;fr<nfreq;fr++){ // find the lowest non-zero frequency requested
+		if (frequencies_fluid[0]==0) frequencies_fluid[0]=frequencies[fr];
+		else if(frequencies[fr]!=0 && frequencies_fluid[0]>frequencies[fr]) frequencies_fluid[0]=frequencies[fr];
+	}
+
+	// run elastic and fluid love numbers
+	if(VerboseSolution() && verbosecpu) _printf_("     elastic\n");
+	EarthRheology<doubletype>(vars,frequencies_elastic,1,matlitho,femmodel);
+	compute_love_numbers<doubletype>(Elastic, NULL, forcing_type, sh_nmax,frequencies_elastic, femmodel, matlitho, vars,verbosecpu);
+
+	if (nfreq>1){
+		EarthRheology<doubletype>(vars,frequencies_fluid,1,matlitho,femmodel);
+		compute_love_numbers<doubletype>(Fluid, NULL, forcing_type, sh_nmax,frequencies_fluid, femmodel, matlitho, vars,verbosecpu);
+		sh_cutoff=sh_nmax;
+		for (int deg=100;deg<sh_nmax+1;deg++){
+			pw_test_h=abs((Fluid->H[deg]-Elastic->H[deg])/Elastic->H[deg]);
+			pw_test_k=abs((Fluid->K[deg]-Elastic->K[deg])/Elastic->K[deg]);
+			pw_test_l=abs((Fluid->L[deg]-Elastic->L[deg])/Elastic->L[deg]);
+			if (pw_test_h<pw_threshold && pw_test_k<pw_threshold && pw_test_l<pw_threshold){
+				sh_cutoff=deg;
+				if(VerboseSolution() && verbosecpu){
+					_printf_("   Degree: " << deg << "/" << sh_nmax << "    ");
+					_printf_("      found negligible variation across frequencies, will copy elastic values after this degree\n");
+					_printf_("      Delta_h/h=" << pw_test_h << "; Delta_k/k="<< pw_test_k << "; Delta_l/l=" << pw_test_l << "; threshold set to " << pw_threshold << "\n");
+				}
+				break;
+			}
+		}
+	} 
+	else sh_cutoff=sh_nmax; 
+
+	delete Fluid;
+
+	//Requested forcing_type
+	if (nfreq>1){ // if we are not running just elastic love numbers
+		if(VerboseSolution() && verbosecpu){
+			if (forcing_type==11) _printf_("     loading\n");
+			else if(forcing_type==9) _printf_("     tidal\n");
+			else _printf_("     love\n");
+		}
+		EarthRheology<doubletype>(vars,frequencies_local,nf_local,matlitho,femmodel);
+		compute_love_numbers<doubletype>(Lovef_local, Elastic, forcing_type, sh_cutoff, frequencies_local, femmodel, matlitho, vars,verbosecpu);
+	}
+	else{
+		Lovef_local->Copy(Elastic);
+	}
+	/*}}}*/
+
+	//Take care of rotationnal feedback love numbers, if relevant /*{{{*/
+	if (forcing_type==11 && sh_nmin<=2 && sh_nmax>=2){ // if forcing is surface loading and we have degree 2
+		if(VerboseSolution() && verbosecpu) _printf_("     tidal\n");
+		int tidal_forcing_type=9;
+		//no need to call EarthRheology, we already have the right one
+		compute_love_numbers<doubletype>(Tidalf_local, NULL,tidal_forcing_type=9, 2,frequencies_local, femmodel, matlitho, vars,verbosecpu);
+	}
+	/*}}}*/
+
+
+	//Temporal love numbers
+	if (istemporal && !complex_computation){
+		/*Initialize*/
+		/*Downcast arrays to be exported in parameters*/
+		IssmDouble*  pmtf_colineartDouble=NULL;
+		IssmDouble*  pmtf_orthotDouble=NULL;
+
+		/* parallel computing */
+		LoveNumbers<IssmDouble>* LovefDouble_local=NULL;
+		LoveNumbers<IssmDouble>* LovetDouble_local=NULL;
+		LoveNumbers<IssmDouble>* TidaltDouble_local=NULL;
+		IssmDouble*  pmtf_colineartDouble_local=NULL;
+		IssmDouble*  pmtf_orthotDouble_local=NULL;
+
+		doubletype*  pmtf_colineart_local=NULL;
+		doubletype*  pmtf_orthot_local=NULL;	
+		LoveNumbers<doubletype>* Lovet_local=NULL;
+		LoveNumbers<doubletype>* Tidalt_local=NULL;	
+
+		Lovet_local= new LoveNumbers<doubletype>(sh_nmin,sh_nmax,nt_local,lower_row/2/NTit,nt,matlitho);
+		Tidalt_local= new LoveNumbers<doubletype>(2,2,nt_local,lower_row/2/NTit,nt,matlitho);	
+		pmtf_colineart_local=xNewZeroInit<doubletype>(3*nt_local);
+		pmtf_orthot_local=xNewZeroInit<doubletype>(3*nt_local);
+
+		love_freq_to_temporal<doubletype>(Lovet_local,Tidalt_local,pmtf_colineart_local,pmtf_orthot_local,Lovef_local,Tidalf_local,frequencies_local,femmodel,verbosecpu);
+
+
+		if(VerboseSolution() && verbosecpu) _printf_("   Assembling parralel vectors...");
+
+		//delete Lovef_local;
+		delete Tidalf_local;
+		//Lovet
+		LovetDouble_local= new LoveNumbers<IssmDouble>(sh_nmin,sh_nmax,nt_local,lower_row/2/NTit,nt,matlitho);
+		Lovet_local->DownCastToDouble(LovetDouble_local);
+		delete Lovet_local;
+		LovetDouble_local->Broadcast();
+
+		//Lovef
+		LovefDouble_local= new LoveNumbers<IssmDouble>(sh_nmin,sh_nmax,nf_local,lower_row,nfreq,matlitho);
+		Lovef_local->DownCastToDouble(LovefDouble_local);
+		delete Lovef_local;
+		LovefDouble_local->Broadcast();	
+
+		if (forcing_type==11 && sh_nmin<=2 && sh_nmax>=2){			
+			TidaltDouble_local= new LoveNumbers<IssmDouble>(2,2,nt_local,lower_row,nfreq,matlitho);
+			Tidalt_local->DownCastToDouble(TidaltDouble_local);
+			delete Tidalt_local;
+			TidaltDouble_local->Broadcast();
+		}
+
+		//pmtf:
+		pmtf_colineartDouble_local=xNew<IssmDouble>(nt_local);
+		pmtf_orthotDouble_local=xNew<IssmDouble>(nt_local);
+		/*Downcast*/ /*{{{*/
+		for(int i=0;i<nt_local;i++){
+			pmtf_colineartDouble_local[i]=DownCastVarToDouble<doubletype>(pmtf_colineart_local[i*3+2]);
+			pmtf_orthotDouble_local[i]=DownCastVarToDouble<doubletype>(pmtf_orthot_local[i*3+2]);
+		}
+		/*}}}*/	
+		xDelete<doubletype>(pmtf_colineart_local);
+		xDelete<doubletype>(pmtf_orthot_local);
+		pmtf_colineartDouble=xNew<IssmDouble>(nt);
+		pmtf_orthotDouble=xNew<IssmDouble>(nt);
+
+		int* recvcounts=xNew<int>(IssmComm::GetSize());
+		int* displs=xNew<int>(IssmComm::GetSize());
+		int  rc;
+		int  offset;
+		rc=nt_local;
+		offset=lower_row/2/NTit;
+		ISSM_MPI_Allgather(&rc,1,ISSM_MPI_INT,recvcounts,1,ISSM_MPI_INT,IssmComm::GetComm());
+		ISSM_MPI_Allgather(&offset,1,ISSM_MPI_INT,displs,1,ISSM_MPI_INT,IssmComm::GetComm());
+		ISSM_MPI_Allgatherv(pmtf_colineartDouble_local, rc, ISSM_MPI_DOUBLE, pmtf_colineartDouble, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+		ISSM_MPI_Allgatherv(pmtf_orthotDouble_local, rc, ISSM_MPI_DOUBLE, pmtf_orthotDouble, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+		xDelete<int>(recvcounts);
+		xDelete<int>(displs);
+
+		xDelete<IssmDouble>(pmtf_colineartDouble_local);
+		xDelete<IssmDouble>(pmtf_orthotDouble_local);
+		/*}}}*/	
+
+		if(VerboseSolution() && verbosecpu) _printf_("done\n");
+		if(VerboseSolution() && verbosecpu) _printf_("   saving results\n");
+
+		/* Add to parameters */ /*{{{*/
+		if(forcing_type==9){ //tidal loading
+			femmodel->parameters->AddObject(new DoubleMatParam(TidalLoveHEnum,LovetDouble_local->H,(sh_nmax+1)*nt,1));
+			femmodel->parameters->AddObject(new DoubleMatParam(TidalLoveKEnum,LovetDouble_local->K,(sh_nmax+1)*nt,1));
+			femmodel->parameters->AddObject(new DoubleMatParam(TidalLoveLEnum,LovetDouble_local->L,(sh_nmax+1)*nt,1));
+				}
+		else if(forcing_type==11){ //surface loading
+			femmodel->parameters->AddObject(new DoubleMatParam(LoadLoveHEnum,LovetDouble_local->H,(sh_nmax+1)*nt,1));
+			femmodel->parameters->AddObject(new DoubleMatParam(LoadLoveKEnum,LovetDouble_local->K,(sh_nmax+1)*nt,1));
+			femmodel->parameters->AddObject(new DoubleMatParam(LoadLoveLEnum,LovetDouble_local->L,(sh_nmax+1)*nt,1));
+			femmodel->parameters->AddObject(new DoubleMatParam(TidalLoveHEnum,TidaltDouble_local->H,3*nt,1));
+			femmodel->parameters->AddObject(new DoubleMatParam(TidalLoveKEnum,TidaltDouble_local->K,3*nt,1));
+			femmodel->parameters->AddObject(new DoubleMatParam(TidalLoveLEnum,TidaltDouble_local->L,3*nt,1));
+			femmodel->parameters->AddObject(new DoubleMatParam(LovePolarMotionTransferFunctionColinearEnum,pmtf_colineartDouble,nt,1));
+			femmodel->parameters->AddObject(new DoubleMatParam(LovePolarMotionTransferFunctionOrthogonalEnum,pmtf_orthotDouble,nt,1));
+		}
+		/*}}}*/	
+	
+		/*Add into external results*/
+		femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveKtEnum,LovetDouble_local->K,nt,sh_nmax+1,0,0));
+		femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveHtEnum,LovetDouble_local->H,nt,sh_nmax+1,0,0));
+		femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveLtEnum,LovetDouble_local->L,nt,sh_nmax+1,0,0));
+		femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveKfEnum,LovefDouble_local->K,nfreq,sh_nmax+1,0,0));
+		femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveHfEnum,LovefDouble_local->H,nfreq,sh_nmax+1,0,0));
+		femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveLfEnum,LovefDouble_local->L,nfreq,sh_nmax+1,0,0));
+
+		femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveTidalKtEnum,TidaltDouble_local->K,nt,3,0,0));
+		femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveTidalHtEnum,TidaltDouble_local->H,nt,3,0,0));
+		femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveTidalLtEnum,TidaltDouble_local->L,nt,3,0,0));
+		femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LovePMTF1tEnum,pmtf_colineartDouble,nt,1,0,0));
+		femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LovePMTF2tEnum,pmtf_orthotDouble,nt,1,0,0));
+		/*Only when love_kernels is on*/
+		if (love_kernels==1) {
+		//	femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveKernelsEnum,LovefDouble_local->Kernels,nfreq,(sh_nmax+1)*(matlitho->numlayers+1)*6,0,0));
+		}
+
+		xDelete<IssmDouble>(pmtf_colineartDouble);
+		xDelete<IssmDouble>(pmtf_orthotDouble);
+		delete LovetDouble_local;
+		delete TidaltDouble_local;
+
+	}
+	else{
+		LoveNumbers<IssmDouble>* LovefDouble=NULL;
+		LoveNumbers<IssmDouble>* LovefDouble_local=NULL;
+		LovefDouble= new LoveNumbers<IssmDouble>(sh_nmin,sh_nmax,nfreq,lower_row,nfreq,matlitho);
+		LovefDouble_local= new LoveNumbers<IssmDouble>(sh_nmin,sh_nmax,nf_local,lower_row,nfreq,matlitho);
+
+		LoveNumbers<IssmDouble>* TidalfDouble=NULL;
+		LoveNumbers<IssmDouble>* TidalfDouble_local=NULL;
+		TidalfDouble= new LoveNumbers<IssmDouble>(2,2,nfreq,lower_row,nfreq,matlitho);
+		TidalfDouble_local= new LoveNumbers<IssmDouble>(2,2,nf_local,lower_row,nfreq,matlitho);
+
+		Lovef_local->DownCastToDouble(LovefDouble_local);
+		Tidalf_local->DownCastToDouble(TidalfDouble_local);
+
+		/*MPI_Gather*/
+		if (nfreq>1){
+			LovefDouble->LoveMPI_Gather(LovefDouble_local, lower_row);
+			if (forcing_type==11 && sh_nmin<=2 && sh_nmax>=2){
+				TidalfDouble->LoveMPI_Gather(TidalfDouble_local, lower_row);		
+			}
+		}
+		else{
+			Elastic->DownCastToDouble(LovefDouble);
+			Tidalf_local->DownCastToDouble(TidalfDouble);
+		}
+
+		/*Add into parameters:*/
+		if(forcing_type==9){ //tidal loading
+			femmodel->parameters->AddObject(new DoubleMatParam(TidalLoveHEnum,LovefDouble->H,(sh_nmax+1)*nfreq,1));
+			femmodel->parameters->AddObject(new DoubleMatParam(TidalLoveKEnum,LovefDouble->K,(sh_nmax+1)*nfreq,1));
+			femmodel->parameters->AddObject(new DoubleMatParam(TidalLoveLEnum,LovefDouble->L,(sh_nmax+1)*nfreq,1));
+		}
+		else if(forcing_type==11){ //surface loading
+			femmodel->parameters->AddObject(new DoubleMatParam(LoadLoveHEnum,LovefDouble->H,(sh_nmax+1)*nfreq,1));
+			femmodel->parameters->AddObject(new DoubleMatParam(LoadLoveKEnum,LovefDouble->K,(sh_nmax+1)*nfreq,1));
+			femmodel->parameters->AddObject(new DoubleMatParam(LoadLoveLEnum,LovefDouble->L,(sh_nmax+1)*nfreq,1));
+		}
+
+		/*Add into external results:*/
+		if (complex_computation){
+			//FIXME: complex external result not supported yet
+			//femmodel->results->AddObject(new GenericExternalResult<IssmComplex*>(femmodel->results->Size()+1,LoveKfEnum,Lovef->K,nfreq,sh_nmax+1,0,0));
+			//femmodel->results->AddObject(new GenericExternalResult<IssmComplex*>(femmodel->results->Size()+1,LoveHfEnum,Lovef->H,nfreq,sh_nmax+1,0,0));
+			//femmodel->results->AddObject(new GenericExternalResult<IssmComplex*>(femmodel->results->Size()+1,LoveLfEnum,Lovef->L,nfreq,sh_nmax+1,0,0));
+			///*Only when love_kernels is on*/
+			//if (love_kernels==1) {
+			//	femmodel->results->AddObject(new GenericExternalResult<IssmComplex*>(femmodel->results->Size()+1,LoveKernelsEnum,Lovef->Kernels,nfreq,(sh_nmax+1)*(matlitho->numlayers+1)*6,0,0));
+			//}
+		}
+		else{
+			femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveKfEnum,LovefDouble->K,nfreq,sh_nmax+1,0,0));
+			femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveHfEnum,LovefDouble->H,nfreq,sh_nmax+1,0,0));
+			femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveLfEnum,LovefDouble->L,nfreq,sh_nmax+1,0,0));
+			/*Only when love_kernels is on*/
+			if (love_kernels==1) {
+				femmodel->results->AddObject(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,LoveKernelsEnum,LovefDouble->Kernels,nfreq,(sh_nmax+1)*(matlitho->numlayers+1)*6,0,0));
+			}
+		}
+
+
+		delete Lovef_local;
+		delete LovefDouble;
+		delete LovefDouble_local;
+		delete Tidalf_local;
+		delete TidalfDouble;
+		delete TidalfDouble_local;
+	}
+	/*Free resources:*/
+	xDelete<IssmDouble>(frequencies);
+	xDelete<IssmDouble>(frequencies_local);
+	xDelete<IssmDouble>(frequencies_elastic);
+
+	delete Elastic;
+
+} /*}}}*/
+
+/*cores and template instantiations:*/
+/*template instantiations :{{{*/
+// IssmDouble
+template void love_core_template<IssmDouble>(FemModel* femmodel);
+template LoveVariables<IssmDouble>*	love_init<IssmDouble>(FemModel* femmodel, Matlitho* matlitho,bool verbosecpu);
+template void        fill_yi_prefactor<IssmDouble>(IssmDouble* yi_prefactor, int* pdeg, IssmDouble* pomega, FemModel* femmodel, Matlitho* matlitho, LoveVariables<IssmDouble>* vars);
+template void        GetEarthRheology<IssmDouble>(IssmDouble* pla, IssmDouble* pmu, int layer_index, IssmDouble omega,  Matlitho* matlitho, FemModel* femmodel);
+template IssmDouble	GetGravity<IssmDouble>(IssmDouble r2, int layer_index, FemModel* femmodel, Matlitho* matlitho,LoveVariables<IssmDouble>* vars);
+template void        yi_boundary_conditions<IssmDouble>(IssmDouble* yi_righthandside, int deg, FemModel* femmodel, Matlitho* matlitho,LoveVariables<IssmDouble>* vars, int forcing_type);
+template void        yi_derivatives<IssmDouble>(IssmDouble* dydx, IssmDouble* y, int layer_index, int n, IssmDouble* yi_prefactor, FemModel* femmodel, Matlitho* matlitho, LoveVariables<IssmDouble>* vars);
+template void        propagate_yi_RK2<IssmDouble>(IssmDouble* y, IssmDouble xmin, IssmDouble xmax, int layer_index, IssmDouble* yi_prefactor, FemModel* femmodel, Matlitho* matlitho, LoveVariables<IssmDouble>* vars);
+template void        propagate_yi_RK4<IssmDouble>(IssmDouble* y, IssmDouble xmin, IssmDouble xmax, int layer_index, IssmDouble* yi_prefactor, FemModel* femmodel, Matlitho* matlitho, LoveVariables<IssmDouble>* vars);
+template void        propagate_yi_euler<IssmDouble>(IssmDouble* y, IssmDouble xmin, IssmDouble xmax, int layer_index, IssmDouble* yi_prefactor, FemModel* femmodel, Matlitho* matlitho, LoveVariables<IssmDouble>* vars);
+template void        Innersphere_boundaryconditions<IssmDouble>(IssmDouble* yi, int layer_index, int deg, IssmDouble omega, FemModel* femmodel, Matlitho* matlitho, LoveVariables<IssmDouble>* vars);
+template void	     Coremantle_boundaryconditions<IssmDouble>(IssmDouble* yi, int layer_index, int deg, IssmDouble omega, FemModel* femmodel, Matlitho* matlitho, LoveVariables<IssmDouble>* vars);
+template void        build_yi_system<IssmDouble>(IssmDouble* yi, int deg, IssmDouble omega, IssmDouble* yi_prefactor, FemModel* femmodel, Matlitho* matlitho,LoveVariables<IssmDouble>* vars);
+template void        solve_yi_system<IssmDouble>(IssmDouble* loveh, IssmDouble* lovel, IssmDouble* lovek, int deg, IssmDouble omega, IssmDouble* frequencies, IssmDouble* yi, IssmDouble* rhs, FemModel* femmodel, Matlitho* matlitho, LoveVariables<IssmDouble>* vars,bool verbosecpu);
+template void	     compute_love_numbers<IssmDouble>(LoveNumbers<IssmDouble>* Lovef, LoveNumbers<IssmDouble>* Elastic, int forcing_type, int sh_cutoff,IssmDouble* frequencies, FemModel* femmodel, Matlitho* matlitho, LoveVariables<IssmDouble>* vars, bool verbosecpu);
+template IssmDouble  factorial<IssmDouble>(int n);
+template IssmDouble* postwidder_coef<IssmDouble>(int NTit);
+template IssmDouble  n_C_r<IssmDouble>(int n, int r);
+template void         postwidder_transform<IssmDouble>(IssmDouble* Lovet, IssmDouble* Lovef,int d, int t, int sh_nmax,int NTit, IssmDouble* xi, FemModel* femmodel);
+template void        EarthRheology<IssmDouble>(LoveVariables<IssmDouble>* vars, IssmDouble* frequencies, int nfreq,  Matlitho* matlitho, FemModel* femmodel);
+template IssmDouble HypergeomTableLookup(IssmDouble z1, IssmDouble alpha, IssmDouble* h1, IssmDouble* z, int nz, int nalpha);
+
+//IssmComplex
+template void love_core_template<IssmComplex>(FemModel* femmodel);
+template LoveVariables<IssmComplex>*	love_init<IssmComplex>(FemModel* femmodel, Matlitho* matlitho,bool verboscpu);
+template void        fill_yi_prefactor<IssmComplex>(IssmComplex* yi_prefactor, int* pdeg, IssmComplex* pomega, FemModel* femmodel, Matlitho* matlitho, LoveVariables<IssmComplex>* vars);
+template void        GetEarthRheology<IssmComplex>(IssmComplex* pla, IssmComplex* pmu, int layer_index, IssmComplex omega,  Matlitho* matlitho, FemModel* femmodel);
+template IssmComplex	GetGravity<IssmComplex>(IssmComplex r2, int layer_index, FemModel* femmodel, Matlitho* matlitho,LoveVariables<IssmComplex>* vars);
+template void        yi_boundary_conditions<IssmComplex>(IssmComplex* yi_righthandside, int deg, FemModel* femmodel, Matlitho* matlitho,LoveVariables<IssmComplex>* vars, int forcing_type);
+template void        yi_derivatives<IssmComplex>(IssmComplex* dydx, IssmComplex* y, int layer_index, int n, IssmComplex* yi_prefactor, FemModel* femmodel, Matlitho* matlitho, LoveVariables<IssmComplex>* vars);
+template void        propagate_yi_RK2<IssmComplex>(IssmComplex* y, IssmComplex xmin, IssmComplex xmax, int layer_index, IssmComplex* yi_prefactor, FemModel* femmodel, Matlitho* matlitho, LoveVariables<IssmComplex>* vars);
+template void        propagate_yi_RK4<IssmComplex>(IssmComplex* y, IssmComplex xmin, IssmComplex xmax, int layer_index, IssmComplex* yi_prefactor, FemModel* femmodel, Matlitho* matlitho, LoveVariables<IssmComplex>* vars);
+template void        propagate_yi_euler<IssmComplex>(IssmComplex* y, IssmComplex xmin, IssmComplex xmax, int layer_index, IssmComplex* yi_prefactor, FemModel* femmodel, Matlitho* matlitho, LoveVariables<IssmComplex>* vars);
+template void        Innersphere_boundaryconditions<IssmComplex>(IssmComplex* yi, int layer_index, int deg, IssmComplex omega, FemModel* femmodel, Matlitho* matlitho, LoveVariables<IssmComplex>* vars);
+template void	     Coremantle_boundaryconditions<IssmComplex>(IssmComplex* yi, int layer_index, int deg, IssmComplex omega, FemModel* femmodel, Matlitho* matlitho, LoveVariables<IssmComplex>* vars);
+template void        build_yi_system<IssmComplex>(IssmComplex* yi, int deg, IssmComplex omega, IssmComplex* yi_prefactor, FemModel* femmodel, Matlitho* matlitho,LoveVariables<IssmComplex>* vars);
+template void        solve_yi_system<IssmComplex>(IssmComplex* loveh, IssmComplex* lovel, IssmComplex* lovek, int deg, IssmComplex omega, IssmDouble* frequencies, IssmComplex* yi, IssmComplex* rhs, FemModel* femmodel, Matlitho* matlitho, LoveVariables<IssmComplex>* vars,bool verbosecpu);
+template void	     compute_love_numbers<IssmComplex>(LoveNumbers<IssmComplex>* Lovef, LoveNumbers<IssmComplex>* Elastic, int forcing_type, int sh_cutoff, IssmDouble* frequencies, FemModel* femmodel, Matlitho* matlitho, LoveVariables<IssmComplex>* vars, bool verbosecpu);
+template void        EarthRheology<IssmComplex>(LoveVariables<IssmComplex>* vars, IssmDouble* frequencies, int nfreq,  Matlitho* matlitho, FemModel* femmodel);
+template IssmComplex HypergeomTableLookup(IssmComplex z1, IssmComplex alpha, IssmDouble* h1, IssmDouble* z, int nz, int nalpha);
+
+//__float128
+#ifdef _HAVE_MPLAPACK_
+template void love_core_template<__float128>(FemModel* femmodel);
+template LoveVariables<__float128>*	love_init<__float128>(FemModel* femmodel, Matlitho* matlitho, bool verbosecpu);
+template void        fill_yi_prefactor<__float128>(__float128* yi_prefactor, int* pdeg, __float128* pomega, FemModel* femmodel, Matlitho* matlitho, LoveVariables<__float128>* vars);
+template void        GetEarthRheology<__float128>(__float128* pla, __float128* pmu, int layer_index, __float128 omega,  Matlitho* matlitho, FemModel* femmodel);
+template __float128	GetGravity<__float128>(__float128 r2, int layer_index, FemModel* femmodel, Matlitho* matlitho,LoveVariables<__float128>* vars);
+template void        yi_boundary_conditions<__float128>(__float128* yi_righthandside, int deg, FemModel* femmodel, Matlitho* matlitho,LoveVariables<__float128>* vars, int forcing_type);
+template void        yi_derivatives<__float128>(__float128* dydx, __float128* y, int layer_index, int n, __float128* yi_prefactor, FemModel* femmodel, Matlitho* matlitho, LoveVariables<__float128>* vars);
+template void        propagate_yi_RK2<__float128>(__float128* y, __float128 xmin, __float128 xmax, int layer_index, __float128* yi_prefactor, FemModel* femmodel, Matlitho* matlitho, LoveVariables<__float128>* vars);
+template void        propagate_yi_RK4<__float128>(__float128* y, __float128 xmin, __float128 xmax, int layer_index, __float128* yi_prefactor, FemModel* femmodel, Matlitho* matlitho, LoveVariables<__float128>* vars);
+template void        propagate_yi_euler<__float128>(__float128* y, __float128 xmin, __float128 xmax, int layer_index, __float128* yi_prefactor, FemModel* femmodel, Matlitho* matlitho, LoveVariables<__float128>* vars);
+template void        Innersphere_boundaryconditions<__float128>(__float128* yi, int layer_index, int deg, __float128 omega, FemModel* femmodel, Matlitho* matlitho, LoveVariables<__float128>* vars);
+template void 	     Coremantle_boundaryconditions<__float128>(__float128* yi, int layer_index, int deg, __float128 omega, FemModel* femmodel, Matlitho* matlitho, LoveVariables<__float128>* vars);
+template void        build_yi_system<__float128>(__float128* yi, int deg, __float128 omega, __float128* yi_prefactor, FemModel* femmodel, Matlitho* matlitho,LoveVariables<__float128>* vars);
+template void        solve_yi_system<__float128>(__float128* loveh, __float128* lovel, __float128* lovek, int deg, __float128 omega, IssmDouble* frequencies, __float128* yi, __float128* rhs, FemModel* femmodel, Matlitho* matlitho, LoveVariables<__float128>* vars,bool verbosecpu);
+template void	     compute_love_numbers<__float128>(LoveNumbers<__float128>* Lovef, LoveNumbers<__float128>* Elastic, int forcing_type, int sh_cutoff, IssmDouble* frequencies, FemModel* femmodel, Matlitho* matlitho, LoveVariables<__float128>* vars, bool verbosecpu);
+template __float128  factorial<__float128>(int n);
+template __float128* postwidder_coef<__float128>(int NTit);
+template __float128  n_C_r<__float128>(int n, int r);
+template void        postwidder_transform<__float128>(__float128* Lovet, __float128* Lovef,int d, int t, int sh_nmax,int NTit, __float128* xi, FemModel* femmodel);
+template void        EarthRheology<__float128>(LoveVariables<__float128>* vars, IssmDouble* frequencies, int nfreq,  Matlitho* matlitho, FemModel* femmodel);
+template __float128 HypergeomTableLookup(__float128 z1, __float128 alpha, IssmDouble* h1, IssmDouble* z, int nz, int nalpha);
+#endif
+
+/*}}}*/
+void           love_core(FemModel* femmodel){ /*{{{*/
+	bool        complex_computation;
+	bool        quad_precision;
+
+	femmodel->parameters->FindParam(&complex_computation,LoveComplexComputationEnum);
+	femmodel->parameters->FindParam(&quad_precision,LoveQuadPrecisionEnum);
+
+	if(complex_computation) love_core_template<IssmComplex>(femmodel);
+#ifdef _HAVE_MPLAPACK_
+	else if(quad_precision) love_core_template<__float128>(femmodel);
+#endif
+	else                    love_core_template<IssmDouble>(femmodel);
+
+} /*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/masstransport_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/masstransport_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/masstransport_core.cpp	(revision 27955)
@@ -0,0 +1,163 @@
+/*!\file: masstransport_core.cpp
+ * \brief: core of the masstransport solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../classes/Inputs/TransientInput.h"
+void SolidEarthIceUpdates(FemModel* femmodel);
+void masstransport_core(FemModel* femmodel){ /*{{{*/
+
+	/*Start profiler*/
+	femmodel->profiler->Start(MASSTRANSPORTCORE);
+
+	/*parameters: */
+	int    numoutputs,domaintype;
+	bool   save_results;
+	bool   isFS,isfreesurface,dakota_analysis;
+	int    solution_type,stabilization;
+	char** requested_outputs = NULL;
+
+	/*activate configuration*/
+	femmodel->SetCurrentConfiguration(MasstransportAnalysisEnum);
+
+	/*recover parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
+	femmodel->parameters->FindParam(&isfreesurface,MasstransportIsfreesurfaceEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&numoutputs,MasstransportNumRequestedOutputsEnum);
+	femmodel->parameters->FindParam(&stabilization,MasstransportStabilizationEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,MasstransportRequestedOutputsEnum);
+
+	if(VerboseSolution()) _printf0_("   computing mass transport\n");
+
+	/*Transport mass or free surface*/
+	if(isFS && isfreesurface){
+		if(VerboseSolution()) _printf0_("   call free surface computational core\n");
+		femmodel->SetCurrentConfiguration(FreeSurfaceBaseAnalysisEnum);
+		solutionsequence_linear(femmodel);
+		femmodel->parameters->SetParam(BaseEnum,InputToExtrudeEnum);
+		extrudefrombase_core(femmodel);
+
+		femmodel->SetCurrentConfiguration(FreeSurfaceTopAnalysisEnum);
+		solutionsequence_linear(femmodel);
+		femmodel->parameters->SetParam(SurfaceEnum,InputToExtrudeEnum);
+		extrudefromtop_core(femmodel);
+		femmodel->parameters->SetParam(ThicknessEnum,InputToExtrudeEnum);
+		extrudefromtop_core(femmodel);
+		femmodel->parameters->SetParam(BaseEnum,InputToExtrudeEnum);
+		extrudefromtop_core(femmodel);
+	}
+	else{
+		if(VerboseSolution()) _printf0_("   call computational core\n");
+		femmodel->parameters->SetParam(VxEnum,InputToDepthaverageInEnum);
+		femmodel->parameters->SetParam(VxAverageEnum,InputToDepthaverageOutEnum);
+		depthaverage_core(femmodel);
+		if(domaintype!=Domain2DverticalEnum){
+			femmodel->parameters->SetParam(VyEnum,InputToDepthaverageInEnum);
+			femmodel->parameters->SetParam(VyAverageEnum,InputToDepthaverageOutEnum);
+			depthaverage_core(femmodel);
+		}
+		femmodel->SetCurrentConfiguration(MasstransportAnalysisEnum);
+		InputDuplicatex(femmodel,ThicknessEnum,ThicknessOldEnum);
+		InputDuplicatex(femmodel,BaseEnum,BaseOldEnum);
+		InputDuplicatex(femmodel,SurfaceEnum,SurfaceOldEnum);
+		if(stabilization==4){
+			solutionsequence_fct(femmodel);
+		}
+		else{
+			solutionsequence_linear(femmodel);
+			// ThicknessAverage: method not totally tested
+			//if(stabilization==3){
+			//	if(VerboseSolution()) _printf0_("   call thickness average core\n");
+			//	femmodel->ThicknessAverage();
+			//}
+		}
+		SolidEarthIceUpdates(femmodel);
+
+		femmodel->parameters->SetParam(ThicknessEnum,InputToExtrudeEnum);
+		extrudefrombase_core(femmodel);
+		femmodel->parameters->SetParam(BaseEnum,InputToExtrudeEnum);
+		extrudefrombase_core(femmodel);
+		femmodel->parameters->SetParam(SurfaceEnum,InputToExtrudeEnum);
+		extrudefrombase_core(femmodel);
+
+	}
+
+	if(save_results){
+		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+	}
+
+	if(solution_type==MasstransportSolutionEnum)femmodel->RequestedDependentsx();
+
+	/*Free resources:*/
+	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+
+	/*profiler*/
+	femmodel->profiler->Stop(MASSTRANSPORTCORE);
+} /*}}}*/
+void SolidEarthIceUpdates(FemModel* femmodel){ /*{{{*/
+
+	int isgrd;
+	int grdmodel;
+	IssmDouble time;
+	int frequency,count;
+
+	/*retrieve parameters:*/
+	femmodel->parameters->FindParam(&isgrd,SolidearthSettingsGRDEnum);
+	femmodel->parameters->FindParam(&grdmodel,GrdModelEnum);
+	femmodel->parameters->FindParam(&time,TimeEnum);
+	femmodel->parameters->FindParam(&frequency,SolidearthSettingsRunFrequencyEnum);
+	femmodel->parameters->FindParam(&count,SealevelchangeRunCountEnum);
+
+	/*early return?:*/
+	if(!isgrd)return;
+
+	/*From old and new thickness, create delta thickness  and accumulate:*/
+	femmodel->inputs->ZAXPY(-1, ThicknessOldEnum,ThicknessEnum,DeltaIceThicknessEnum);
+	femmodel->inputs->AXPY(+1, DeltaIceThicknessEnum,AccumulatedDeltaIceThicknessEnum);
+
+	/*for Ivins deformation model, keep history of ice thickness changes inside TransientAccumulatedDeltaIceThicknessEnum:*/
+	if(grdmodel==IvinsEnum){
+
+		TransientInput* transientinput = femmodel->inputs->GetTransientInput(TransientAccumulatedDeltaIceThicknessEnum);
+
+		for(Object* & object : femmodel->elements->objects){
+			int *vertexlids = NULL;
+			int *vertexsids= NULL;
+			Element*   element=xDynamicCast<Element*>(object);
+			const int numvertices = element->GetNumberOfVertices();
+			IssmDouble* cumdeltathickness=NULL;
+
+			/*Get values and lid list and recover vertices ids needed to initialize inputs*/
+			vertexlids      = xNew<int>(numvertices);
+			vertexsids      = xNew<int>(numvertices);
+			cumdeltathickness=xNew<IssmDouble>(numvertices);
+			element->GetVerticesLidList(&vertexlids[0]);
+			element->GetVerticesSidList(&vertexsids[0]);
+			element->GetInputListOnVertices(&cumdeltathickness[0],AccumulatedDeltaIceThicknessEnum);
+
+			/*Add the current time cumdeltathickness to the existing time series: */
+			switch(element->ObjectEnum()){
+				case TriaEnum:  transientinput->AddTriaTimeInput( time,numvertices,vertexlids,cumdeltathickness,P1Enum); break;
+				default: _error_("Not implemented yet");
+			}
+			xDelete<int>(vertexlids);
+			xDelete<int>(vertexsids);
+			xDelete<IssmDouble>(cumdeltathickness);
+		}
+	}	
+
+	/*compute total ice thickness change between two sea-level solver time steps, ie. every frequency*dt:*/
+	if(count==frequency){
+		femmodel->inputs->ZAXPY(-1, OldAccumulatedDeltaIceThicknessEnum,AccumulatedDeltaIceThicknessEnum,DeltaIceThicknessEnum);
+		femmodel->inputs->DuplicateInput(AccumulatedDeltaIceThicknessEnum,OldAccumulatedDeltaIceThicknessEnum);
+	}
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/movingfront_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/movingfront_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/movingfront_core.cpp	(revision 27955)
@@ -0,0 +1,141 @@
+/*!\file: levelset_core.cpp
+ * \brief: levelset-module to update the ice domain
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../modules/modules.h"
+
+void movingfront_core(FemModel* femmodel){
+
+	/*Start profiler*/
+	femmodel->profiler->Start(MOVINGFRONTCORE);
+
+	/* intermediaries */
+	bool save_results,isstressbalance,ismasstransport,isthermal,isenthalpy,islevelset,ismovingfront,killicebergs;
+	int  domaintype, reinit_frequency,step;
+	Analysis  *analysis=NULL;
+	IssmDouble maxVel;
+
+	/* recover parameters */
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&isstressbalance,TransientIsstressbalanceEnum);
+	femmodel->parameters->FindParam(&ismasstransport,TransientIsmasstransportEnum);
+	femmodel->parameters->FindParam(&isthermal,TransientIsthermalEnum);
+	femmodel->parameters->FindParam(&ismovingfront,TransientIsmovingfrontEnum);
+	femmodel->parameters->FindParam(&reinit_frequency,LevelsetReinitFrequencyEnum);
+	femmodel->parameters->FindParam(&killicebergs,LevelsetKillIcebergsEnum);
+	femmodel->parameters->FindParam(&step,StepEnum);
+	if(isthermal && domaintype==Domain3DEnum) femmodel->parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);
+
+	if(!ismovingfront) return;
+
+	/* Many calving parameterizations and the level set equations require depth
+	 * average velocities so do this calculation once for all here */
+	if(domaintype!=Domain2DhorizontalEnum){
+		femmodel->parameters->SetParam(VxEnum,InputToDepthaverageInEnum);
+		femmodel->parameters->SetParam(VxAverageEnum,InputToDepthaverageOutEnum);
+		depthaverage_core(femmodel);
+		if(domaintype==Domain3DEnum){
+			femmodel->parameters->SetParam(VyEnum,InputToDepthaverageInEnum);
+			femmodel->parameters->SetParam(VyAverageEnum,InputToDepthaverageOutEnum);
+			depthaverage_core(femmodel);
+		}
+	}
+
+	/* smoothen slope of lsf for computation of normal on ice domain*/
+	levelsetfunctionslope_core(femmodel);
+
+	/* compute the maximal velocity over the whole domain */
+	if(isstressbalance){
+		femmodel->MaxVelx(&maxVel);
+		femmodel->parameters->SetParam(maxVel, CalvingVelMaxEnum);
+	}
+
+	/* start the work from here */
+	if(VerboseSolution()) _printf0_("   computing calving and undercutting\n");
+	Calvingx(femmodel);
+	FrontalForcingsx(femmodel);
+	if(VerboseSolution()) _printf0_("   computing new ice front position\n");
+
+	/* determine variables for extrapolation */
+	std::vector<int>  extrapol_vars;
+	if(isstressbalance){
+		extrapol_vars.push_back(VxEnum);
+		extrapol_vars.push_back(VyEnum);
+		if(domaintype==Domain3DEnum) extrapol_vars.push_back(VzEnum);
+	}
+	if(ismasstransport) extrapol_vars.push_back(ThicknessEnum);
+	if(isthermal && domaintype==Domain3DEnum){
+		if(isenthalpy) extrapol_vars.push_back(EnthalpyEnum);
+		else           extrapol_vars.push_back(TemperatureEnum);
+	}
+
+	/* extrapolate */
+	analysis = new ExtrapolationAnalysis();
+	for(int iv=0;iv<extrapol_vars.size();iv++){
+		femmodel->parameters->SetParam(extrapol_vars[iv],ExtrapolationVariableEnum); 
+		analysis->Core(femmodel);
+	}
+	delete analysis;	
+
+	/* Need to do it again after extrapolation! */
+	if(domaintype!=Domain2DhorizontalEnum){
+		femmodel->parameters->SetParam(VxEnum,InputToDepthaverageInEnum);
+		femmodel->parameters->SetParam(VxAverageEnum,InputToDepthaverageOutEnum);
+		depthaverage_core(femmodel);
+		if(domaintype==Domain3DEnum){
+			femmodel->parameters->SetParam(VyEnum,InputToDepthaverageInEnum);
+			femmodel->parameters->SetParam(VyAverageEnum,InputToDepthaverageOutEnum);
+			depthaverage_core(femmodel);
+		}
+	}
+
+	/* Calculate the frontal velocity for levelset function */
+	MovingFrontalVelx(femmodel);
+
+	/* solve level set equation */
+	LevelsetAnalysis lsanalysis;
+	lsanalysis.Core(femmodel);
+	lsanalysis.PostProcess(femmodel);
+
+	/*Kill ice berg to avoid free body motion*/
+	if(killicebergs){
+		int killberg = 0;
+		if(VerboseSolution()) _printf0_("   looking for icebergs to kill\n");
+		killberg = KillIcebergsx(femmodel);
+		/*wait for all cores*/
+		int totalkill;
+		ISSM_MPI_Reduce(&killberg,&totalkill,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,IssmComm::GetComm());
+		ISSM_MPI_Bcast(&totalkill,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+		if (totalkill > 0) {
+			if(VerboseSolution()) _printf0_("   reinitializing level set after killing " << totalkill << " icebergs\n");
+			femmodel->ResetLevelset();
+			ResetBoundaryConditions(femmodel,LevelsetAnalysisEnum);
+		}
+	}
+
+	/*Reset levelset if needed*/
+	if(reinit_frequency && (step%reinit_frequency==0)){
+		if(VerboseSolution()) _printf0_("   reinitializing level set\n");
+		femmodel->ResetLevelset();
+		ResetBoundaryConditions(femmodel,LevelsetAnalysisEnum);
+	}
+
+	/* update vertices included for next calculation */
+	GetMaskOfIceVerticesLSMx(femmodel);
+
+	/*Save results*/
+	if(save_results){
+		int outputs[1] = {MaskIceLevelsetEnum};
+		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],1);
+	}
+
+	/*End profiler*/
+	femmodel->profiler->Stop(MOVINGFRONTCORE);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/oceantransport_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/oceantransport_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/oceantransport_core.cpp	(revision 27955)
@@ -0,0 +1,89 @@
+/*!\file: oceantransport_core.cpp
+ * \brief: core of the oceantransport solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void SolidEarthOceanUpdates(FemModel* femmodel);
+void oceantransport_core(FemModel* femmodel){ /*{{{*/
+
+	/*Start profiler*/
+	femmodel->profiler->Start(OCEANTRANSPORTCORE);
+
+	/*parameters: */
+	int    numoutputs;
+	bool   save_results;
+	bool   dakota_analysis;
+	int    solution_type;
+	Vector<IssmDouble>*  ug  = NULL;
+
+	/*activate configuration*/
+	femmodel->SetCurrentConfiguration(OceantransportAnalysisEnum);
+
+	/*recover parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+
+	if(VerboseSolution()) _printf0_("   computing ocean mass transport\n");
+
+	femmodel->SetCurrentConfiguration(OceantransportAnalysisEnum);
+
+	/*save current bottom pressures before updating:*/
+	InputDuplicatex(femmodel,BottomPressureEnum,BottomPressureOldEnum);
+	InputDuplicatex(femmodel,DslEnum,DslOldEnum);
+	InputDuplicatex(femmodel,StrEnum,StrOldEnum);
+
+	/*grab bottom pressures, dsl and str from OceantransportSpcbottompressure, OceantransportSpcdslEnum 
+	 * and OceantransportSpcstrEnum  inputs in each element, assemble into a vector and feed to 
+	 * InputUpdateFromSolutionx which will deal with accumulating such inputs:*/
+	GetSolutionFromInputsx(&ug,femmodel); 
+	InputUpdateFromSolutionx(femmodel,ug); 
+
+	SolidEarthOceanUpdates(femmodel);
+
+	if(solution_type==OceantransportSolutionEnum)femmodel->RequestedDependentsx();
+
+	/*profiler*/
+	femmodel->profiler->Stop(OCEANTRANSPORTCORE);
+
+	/*Free resources:*/
+	delete ug;
+
+} /*}}}*/
+void SolidEarthOceanUpdates(FemModel* femmodel){ /*{{{*/
+
+	int isgrd;
+	int grdmodel;
+	IssmDouble time;
+	int frequency,count;
+
+	/*retrieve parameters:*/
+	femmodel->parameters->FindParam(&isgrd,SolidearthSettingsGRDEnum);
+	femmodel->parameters->FindParam(&grdmodel,GrdModelEnum);
+	femmodel->parameters->FindParam(&time,TimeEnum);
+	femmodel->parameters->FindParam(&frequency,SolidearthSettingsRunFrequencyEnum);
+	femmodel->parameters->FindParam(&count,SealevelchangeRunCountEnum);
+
+	/*early return?:*/
+	if(!isgrd)return;
+
+	/* From old and new bottom pressures, create delta bottom pressure, delta dsl and delta str. 
+	 * Accumulate delta bottom pressure: */
+	femmodel->inputs->ZAXPY(-1, BottomPressureOldEnum,BottomPressureEnum,DeltaBottomPressureEnum);
+	femmodel->inputs->AXPY(+1, DeltaBottomPressureEnum,AccumulatedDeltaBottomPressureEnum);
+
+	femmodel->inputs->ZAXPY(-1, DslOldEnum,DslEnum,DeltaDslEnum);
+	femmodel->inputs->ZAXPY(-1, StrOldEnum,StrEnum,DeltaStrEnum);
+
+	/* Compute total bottom pressure change between two sea-level solver time steps, ie. every frequency*dt. */
+	if(count==frequency){
+		femmodel->inputs->ZAXPY(-1, OldAccumulatedDeltaBottomPressureEnum,AccumulatedDeltaBottomPressureEnum,DeltaBottomPressureEnum);
+		femmodel->inputs->DuplicateInput(AccumulatedDeltaBottomPressureEnum,OldAccumulatedDeltaBottomPressureEnum);
+	}
+	return;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/sampling_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/sampling_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/sampling_core.cpp	(revision 27955)
@@ -0,0 +1,78 @@
+/*!\file: sampling_core.cpp
+ * \brief: core of the sampling solution
+ */
+
+#include "../classes/classes.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../analyses/analyses.h" // new
+#include "../modules/modules.h"
+
+void sampling_core(FemModel* femmodel){
+
+	/*Start profiler*/
+	femmodel->profiler->Start(SAMPLINGCORE);
+
+	/*parameters: */
+	int    numoutputs;
+	bool   save_results;
+	int    solution_type;
+	char** requested_outputs = NULL;
+
+	/*activate configuration*/
+	femmodel->SetCurrentConfiguration(SamplingAnalysisEnum);
+
+	/*recover parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&numoutputs,SamplingNumRequestedOutputsEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,SamplingRequestedOutputsEnum);
+
+	if(VerboseSolution()) _printf0_("   Generating random samples\n");
+
+	/*Generate random sample*/
+	if(VerboseSolution()) _printf0_("   call computational core\n");
+	SamplingAnalysis* analysis = new SamplingAnalysis();
+	femmodel->SetCurrentConfiguration(SamplingAnalysisEnum);
+
+	if(solution_type==TransientSolutionEnum){
+		InputDuplicatex(femmodel,SampleEnum,SampleOldEnum);
+
+    int seed;
+		femmodel->parameters->FindParam(&seed,SamplingSeedEnum);
+		if(seed>=0){
+			int step;
+			femmodel->parameters->FindParam(&step,StepEnum);
+			seed = seed + 13923272*step; // change default seed for transient simulations (by considering an arbitrary shift based on the step number)
+			femmodel->parameters->SetParam(seed,SamplingSeedEnum);
+		}
+
+	}
+
+	solutionsequence_sampling(femmodel);
+
+	if(solution_type==TransientSolutionEnum){
+
+		InputDuplicatex(femmodel,SampleEnum,SampleNoiseEnum);
+
+		analysis->UpdateTransientSample(femmodel);
+
+	}
+
+	delete analysis;
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		int outputs = SampleEnum;
+		femmodel->RequestedOutputsx(&femmodel->results,&outputs,1);
+	}
+
+	if(solution_type==SamplingSolutionEnum)femmodel->RequestedDependentsx();
+
+	/*Free resources:*/
+	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+
+	/*profiler*/
+	femmodel->profiler->Stop(SAMPLINGCORE);
+
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/sealevelchange_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/sealevelchange_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/sealevelchange_core.cpp	(revision 27955)
@@ -0,0 +1,1353 @@
+/*!\file: sealevelchange_core.cpp
+ * \brief: core of the sea-level change solution 
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../classes/Inputs/TriaInput.h"
+#include "../classes/Inputs/TransientInput.h"
+#include "../classes/Inputs/DatasetInput.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+/*support routines local definitions:{{{*/
+void TransferForcing(FemModel* femmodel,int forcingenum);
+void TransferSealevel(FemModel* femmodel,int forcingenum);
+bool slcconvergence(IssmDouble* RSLg,IssmDouble* RSLg_old,IssmDouble eps_rel,IssmDouble eps_abs, IssmDouble totaloceanarea,FemModel* femmodel);
+IssmDouble  SealevelloadsOceanAverage(GrdLoads* loads, Vector<IssmDouble>* oceanareas, Vector<IssmDouble>* subelementoceanareas, IssmDouble totaloceanarea);
+void PolarMotion(IssmDouble* m, FemModel* femmodel,GrdLoads* loads, SealevelGeometry* slgeom, bool computefuture);
+void SealevelchangeUpdateViscousTimeSeries(FemModel* femmodel);
+void ConserveOceanMass(FemModel* femmodel,GrdLoads* loads, IssmDouble offset, SealevelGeometry* slgeom);
+void ivins_deformation_core(FemModel* femmodel);
+IssmDouble* CombineLoads(IssmDouble* load,IssmDouble* subload,FemModel* femmodel, SealevelGeometry* slgeom,int loadtype,int nel);
+void slc_geometry_cleanup(SealevelGeometry* slgeom, FemModel* femmodel);
+/*}}}*/
+
+/*main cores:*/
+void              sealevelchange_core(FemModel* femmodel){ /*{{{*/
+
+	SealevelGeometry* slgeom=NULL;
+
+	/*Start profiler*/
+	femmodel->profiler->Start(SLRCORE);
+
+	/*Parameters, variables:*/
+	bool save_results;
+
+	/*Retrieve parameters:*/
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+
+	/*Verbose: */
+	if(VerboseSolution()) _printf0_("   computing sea level change\n");
+
+	/*set SLR configuration: */
+	femmodel->SetCurrentConfiguration(SealevelchangeAnalysisEnum);
+
+	/*Run coupler input transfer:*/
+	couplerinput_core(femmodel);
+
+	/*run geometry core: */
+	slgeom=sealevelchange_geometry(femmodel);
+
+	/*any external forcings?:*/
+	solidearthexternal_core(femmodel);
+
+	/*Run geodetic:*/
+	grd_core(femmodel,slgeom);
+
+	/*Run steric core for sure:*/
+	dynstr_core(femmodel);
+
+	/*Run coupler output transfer: */
+	coupleroutput_core(femmodel);
+
+	/*Save results: */
+	if(save_results){
+		int     numoutputs;
+		char **requested_outputs = NULL;
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		femmodel->parameters->FindParam(&requested_outputs,&numoutputs,SealevelchangeRequestedOutputsEnum);
+		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+		if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+	}
+
+	/*End profiler*/
+	femmodel->profiler->Stop(SLRCORE);
+
+	/*Free resources:*/
+	slc_geometry_cleanup(slgeom, femmodel);
+}
+/*}}}*/
+void              solidearthexternal_core(FemModel* femmodel){ /*{{{*/
+
+	/*variables:*/
+	Vector<IssmDouble> *bedrock  = NULL; 
+	Vector<IssmDouble> *bedrock_rate = NULL;
+	Vector<IssmDouble> *bedrockeast  = NULL; 
+	Vector<IssmDouble> *bedrockeast_rate = NULL;
+	Vector<IssmDouble> *bedrocknorth  = NULL; 
+	Vector<IssmDouble> *bedrocknorth_rate = NULL;
+	Vector<IssmDouble> *geoid= NULL; 
+	Vector<IssmDouble> *geoid_rate= NULL; 
+	int horiz=0;
+	int modelid=-1;
+	int  isexternal=0;
+
+	/*parameters: */
+	IssmDouble          dt;
+
+	/*Retrieve parameters:*/
+	femmodel->parameters->FindParam(&horiz,SolidearthSettingsHorizEnum);
+	femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+	femmodel->parameters->FindParam(&isexternal,SolidearthIsExternalEnum); 
+
+	/*Early return:*/
+	if (!isexternal)return;
+
+	/*Verbose: */
+	if(VerboseSolution()) _printf0_("	  computing external solid earth contributions\n");
+
+	/*Retrieve geoid viscous and elastic rates, bedrock uplift viscous and elastic rates + steric rate, as vectors:*/
+	GetVectorFromInputsx(&bedrock,femmodel,BedEnum,VertexSIdEnum);
+	GetVectorFromInputsx(&geoid,femmodel,SealevelEnum,VertexSIdEnum); //In ISSM, Sealevel is absolute.
+	if(horiz){
+		GetVectorFromInputsx(&bedrockeast,femmodel,BedEastEnum,VertexSIdEnum);
+		GetVectorFromInputsx(&bedrocknorth,femmodel,BedNorthEnum,VertexSIdEnum);
+	}
+
+	GetVectorFromInputsx(&geoid_rate,femmodel,SolidearthExternalGeoidRateEnum,VertexSIdEnum);
+	GetVectorFromInputsx(&bedrock_rate,femmodel,SolidearthExternalDisplacementUpRateEnum,VertexSIdEnum);
+	if(horiz){
+		GetVectorFromInputsx(&bedrockeast_rate,femmodel,SolidearthExternalDisplacementEastRateEnum,VertexSIdEnum);
+		GetVectorFromInputsx(&bedrocknorth_rate,femmodel,SolidearthExternalDisplacementNorthRateEnum,VertexSIdEnum);
+	}
+
+	/*compute: sea level change = initial sea level + (N_gia_rate+N_esa_rate)  * dt + steric_rate + dynamic_rate dt*/
+	geoid->AXPY(geoid_rate,dt);
+	bedrock->AXPY(bedrock_rate,dt);
+	if(horiz){
+		bedrockeast->AXPY(bedrockeast_rate,dt);
+		bedrocknorth->AXPY(bedrocknorth_rate,dt);
+	}
+
+	/*update element inputs:*/
+	InputUpdateFromVectorx(femmodel,bedrock,BedEnum,VertexSIdEnum);	
+	InputUpdateFromVectorx(femmodel,geoid,SealevelEnum,VertexSIdEnum);	
+	if(horiz){
+		InputUpdateFromVectorx(femmodel,bedrockeast,BedEastEnum,VertexSIdEnum);	
+		InputUpdateFromVectorx(femmodel,bedrocknorth,BedNorthEnum,VertexSIdEnum);	
+	}
+
+	/*Free resources:*/	
+	delete bedrock; delete bedrock_rate;
+	delete geoid; delete geoid_rate;
+	if(horiz){
+		delete bedrockeast; delete bedrockeast_rate;
+		delete bedrocknorth; delete bedrocknorth_rate;
+	}
+}
+/*}}}*/
+void              couplerinput_core(FemModel* femmodel){  /*{{{*/
+
+	/*Be very careful here, everything is well thought through, do not remove 
+	 * without taking big risks:*/
+
+	/*parameters:*/
+	int  iscoupling;
+	int  modelid,earthid;
+	int  count,frequency;
+	int  horiz;
+
+	/*retrieve more parameters:*/
+	femmodel->parameters->FindParam(&iscoupling,IsSlcCouplingEnum);
+	femmodel->parameters->FindParam(&frequency,SolidearthSettingsRunFrequencyEnum);
+	femmodel->parameters->FindParam(&count,SealevelchangeRunCountEnum);
+
+	if(iscoupling){
+		femmodel->parameters->FindParam(&modelid,ModelIdEnum);
+		femmodel->parameters->FindParam(&earthid,EarthIdEnum);
+	}
+	else{
+		/* we are here, we are not running in a coupler, so we will indeed compute SLR,
+		 * so make sure we are identified as being the Earth.:*/
+		modelid=1; earthid=1; 
+	}
+
+	/*if we are carrying loads but are not yet computing grd core, accumulate them and skip 
+	 * the rest: */
+	if (count!=frequency){
+		if (count>frequency){
+			count=1;
+			femmodel->parameters->SetParam(count,SealevelchangeRunCountEnum); 
+		}
+		return;
+	}
+	
+
+	/*Basins are supposed to accumulate loads and hand them over to the Earth
+	  for slr computations every "frequency" time steps. If we are here, we
+	  have reached the "frequency"'th time step, and we are going to pick up
+	  the old loads, the current loads, and send them to the Earth for slr
+	  computations.  So the Earth is never supposed to compute loads. Except,
+	  when we are running the Earth as a giant basin (ex: running a
+	  Peltier-style GIA model, or running a "Snow Ball" Earth) which only
+	  happens when we are not coupled, at which point we are sending these
+	  loads to ourselves (hence the convoluted condition).
+	  */
+
+	/*transer loads from basins to Earth for grd core computations. :*/
+	if(iscoupling){
+
+		/*transfer ice thickness change load from basins to earth: */
+		TransferForcing(femmodel,DeltaIceThicknessEnum);
+		TransferForcing(femmodel,DeltaBottomPressureEnum);
+		TransferForcing(femmodel,DeltaTwsEnum);
+		TransferForcing(femmodel,MaskOceanLevelsetEnum);
+		TransferForcing(femmodel,MaskIceLevelsetEnum);
+
+		/*transfer external forcings back to Earth:*/
+		TransferSealevel(femmodel,BedEnum);
+		TransferSealevel(femmodel,SealevelEnum);
+		if(horiz){
+			TransferSealevel(femmodel,BedEastEnum);
+			TransferSealevel(femmodel,BedNorthEnum);
+		}
+	}
+
+}; /*}}}*/
+void              grd_core(FemModel* femmodel, SealevelGeometry* slgeom) { /*{{{*/
+
+	/*variables:{{{*/
+	int nel;
+	BarystaticContributions* barycontrib=NULL;
+	GenericParam<BarystaticContributions*>* barycontribparam=NULL;
+	IssmDouble polarmotionvector[3]={0};
+
+	GrdLoads*              loads=NULL;
+	IssmDouble*    oldsealevelloads=NULL;
+	Vector<IssmDouble>*    oceanareas=NULL;
+	IssmDouble             totaloceanarea;
+	Vector<IssmDouble>*    subelementoceanareas=NULL;
+	IssmDouble             oceanaverage;
+	bool                   scaleoceanarea=false;
+	IssmDouble             rho_water;
+
+	IssmDouble           eps_rel;
+	IssmDouble           eps_abs;
+	int                  max_nonlinear_iterations;
+	int                  iterations=0;
+	int                  step;
+	IssmDouble           time; 
+
+	int  modelid,earthid;
+	int  horiz;
+	int  count,frequency,iscoupling;
+	int  grd=0;
+	int  grdmodel; 
+	int  sealevelloading=0;
+	bool sal=false;
+	bool viscous=false;
+	bool rotation=false;
+	bool planethasocean=false;
+	bool computefuture=false;
+	IssmDouble*           sealevelpercpu=NULL;
+
+	/*}}}*/
+
+	/*retrieve parameters:{{{*/
+	femmodel->parameters->FindParam(&grd,SolidearthSettingsGRDEnum); 
+	femmodel->parameters->FindParam(&grdmodel,GrdModelEnum);
+	femmodel->parameters->FindParam(&frequency,SolidearthSettingsRunFrequencyEnum);
+	femmodel->parameters->FindParam(&count,SealevelchangeRunCountEnum);
+	femmodel->parameters->FindParam(&step,StepEnum);
+	femmodel->parameters->FindParam(&time,TimeEnum);
+	femmodel->parameters->FindParam(&sealevelloading,SolidearthSettingsSealevelLoadingEnum);
+	femmodel->parameters->FindParam(&max_nonlinear_iterations,SolidearthSettingsMaxiterEnum);
+	femmodel->parameters->FindParam(&viscous,SolidearthSettingsViscousEnum);
+	femmodel->parameters->FindParam(&rotation,SolidearthSettingsRotationEnum);
+	femmodel->parameters->FindParam(&planethasocean,SolidearthSettingsGrdOceanEnum);
+	/*}}}*/
+
+	/*only run if grd was requested, if we are the earth, and we have reached
+	 * the necessary number of time steps dictated by :*/
+	if(!grd)            return;
+	if(count!=frequency)return;
+	femmodel->parameters->FindParam(&iscoupling,IsSlcCouplingEnum);
+	if(iscoupling){
+		femmodel->parameters->FindParam(&modelid,ModelIdEnum);
+		femmodel->parameters->FindParam(&earthid,EarthIdEnum);
+		if(modelid!=earthid)return;
+	}
+	/*branch directly to Ivins deformation core if requested:*/
+	if(grdmodel==IvinsEnum){
+		ivins_deformation_core(femmodel);
+		return;
+	}
+
+	/*Verbose: */
+	if(VerboseSolution()) _printf0_("	  computing GRD patterns\n");
+
+
+	/*retrieve parameters: {{{*/ 
+	femmodel->parameters->FindParam(&scaleoceanarea,SolidearthSettingsOceanAreaScalingEnum);
+	barycontribparam = xDynamicCast<GenericParam<BarystaticContributions*>*>(femmodel->parameters->FindParamObject(BarystaticContributionsEnum));
+	barycontrib=barycontribparam->GetParameterValue();
+	femmodel->parameters->FindParam(&rho_water,MaterialsRhoSeawaterEnum);
+	femmodel->parameters->FindParam(&eps_rel,SolidearthSettingsReltolEnum);
+	femmodel->parameters->FindParam(&eps_abs,SolidearthSettingsAbstolEnum);
+	femmodel->parameters->FindParam(&horiz,SolidearthSettingsHorizEnum);
+	femmodel->parameters->FindParam(&sal,SolidearthSettingsSelfAttractionEnum);
+	/*}}}*/
+
+	/*initialize loads and sea level loads:*/
+	femmodel->parameters->FindParam(&nel,MeshNumberofelementsEnum);
+
+	loads=new GrdLoads(nel,slgeom);
+	subelementoceanareas=new Vector<IssmDouble>(slgeom->nbar[SLGEOM_OCEAN]);
+	oceanareas=new Vector<IssmDouble>(nel);
+	sealevelpercpu=xNewZeroInit<IssmDouble>(femmodel->vertices->Size());
+
+	if(VerboseSolution()) _printf0_("	  starting  GRD convolutions\n");
+
+	/*update viscous time series to keep up with time stepping:*/
+	SealevelchangeUpdateViscousTimeSeries(femmodel);
+
+	/*buildup loads: */
+	for(Object* & object : femmodel->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		element->SealevelchangeBarystaticLoads(loads, barycontrib,slgeom); 
+	}
+
+	//broadcast loads 
+	loads->BroadcastLoads();
+
+	/*skip computation of sea level equation if requested, which means sea level loads should be zeroed */
+	if(!sealevelloading){
+		loads->sealevelloads=xNewZeroInit<IssmDouble>(nel);
+		loads->subsealevelloads=xNewZeroInit<IssmDouble>(slgeom->nbar[SLGEOM_OCEAN]);
+		PolarMotion(&polarmotionvector[0],femmodel,loads, slgeom, computefuture=true);
+		goto deformation;
+	}
+
+	if(VerboseSolution()) _printf0_("	  converging GRD convolutions\n");
+	for(;;){
+
+		//compute polar motion:
+		PolarMotion(&polarmotionvector[0],femmodel,loads,slgeom,computefuture=false);
+
+		oldsealevelloads=xNewZeroInit<IssmDouble>(nel);
+		if (loads->sealevelloads){
+			xMemCpy<IssmDouble>(oldsealevelloads,loads->sealevelloads,nel);
+		}
+
+
+		/*convolve load and sealevel loads on oceans:*/
+		loads->Combineloads(nel,slgeom); //This combines loads and sealevelloads into a single vector 
+		for(Object* & object : femmodel->elements->objects){
+			Element* element = xDynamicCast<Element*>(object);
+			element->SealevelchangeConvolution(sealevelpercpu, loads, polarmotionvector,slgeom);
+		}
+
+		/*retrieve sea level average  and ocean area:*/
+		for(Object* & object : femmodel->elements->objects){
+			Element* element = xDynamicCast<Element*>(object);
+			element->SealevelchangeOceanAverage(loads, oceanareas, subelementoceanareas, sealevelpercpu, slgeom);
+		}
+
+		loads->AssembleSealevelLoads();
+
+		/*compute ocean areas:*/
+		if(!loads->sealevelloads){ //first time in the loop
+			oceanareas->Assemble(); 
+			subelementoceanareas->Assemble();
+			oceanareas->Sum(&totaloceanarea); _assert_(totaloceanarea>0.);
+			if(scaleoceanarea) totaloceanarea=3.619e+14; // use true ocean area, m^2
+		}
+
+		//Conserve ocean mass: 
+		oceanaverage=SealevelloadsOceanAverage(loads, oceanareas,subelementoceanareas, totaloceanarea);
+		ConserveOceanMass(femmodel,loads,barycontrib->Total()/totaloceanarea -oceanaverage,slgeom);
+
+		//broadcast sea level loads 
+		loads->BroadcastSealevelLoads();
+
+		if (!sal) xDelete<IssmDouble>(oldsealevelloads); break;
+
+		//convergence?
+		if(slcconvergence(loads->sealevelloads,oldsealevelloads,eps_rel,eps_abs,totaloceanarea,femmodel)){
+			xDelete<IssmDouble>(oldsealevelloads); break;
+		}
+
+		//early return?
+		if(iterations>=max_nonlinear_iterations){
+			xDelete<IssmDouble>(oldsealevelloads); break;
+		}
+		iterations++;
+		xDelete<IssmDouble>(oldsealevelloads);
+	}
+
+	//recompute polar motion one final time, this time updating viscous stacks for future time steps
+	if (viscous)	PolarMotion(&polarmotionvector[0],femmodel,loads, slgeom, computefuture=true);
+
+	deformation:
+
+	if(VerboseSolution()) _printf0_("	  deformation GRD convolutions\n");
+
+	/*convolve loads and sea level loads to get the deformation:*/
+	loads->Combineloads(nel,slgeom); //This combines loads and sealevelloads into a single vector 
+	for(Object* & object : femmodel->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		element->SealevelchangeDeformationConvolution(sealevelpercpu, loads, polarmotionvector,slgeom);
+	}
+
+	if(VerboseSolution()) _printf0_("	  updating GRD fields\n");
+
+	if(planethasocean){
+		if (!sealevelloading){ //we haven't done so before, so we need to compute the ocean average and area
+			if(loads->sealevelloads)xDelete<IssmDouble>(loads->sealevelloads); loads->sealevelloads=NULL; //needed to trigger the calculation of areas
+			/*retrieve sea level average  and ocean area:*/
+			for(Object* & object : femmodel->elements->objects){
+				Element* element = xDynamicCast<Element*>(object);
+				element->SealevelchangeOceanAverage(loads, oceanareas, subelementoceanareas, sealevelpercpu, slgeom);
+			}
+			loads->sealevelloads=xNewZeroInit<IssmDouble>(nel);
+			loads->AssembleSealevelLoads();
+			/*compute ocean areas:*/
+			oceanareas->Assemble(); 
+			subelementoceanareas->Assemble();
+			oceanareas->Sum(&totaloceanarea); _assert_(totaloceanarea>0.);
+			if(scaleoceanarea) totaloceanarea=3.619e+14; // use true ocean area, m^2
+
+			//Conserve ocean mass
+			//Note that here we create sea-level loads but they will not generate GRD as we have already run all the convolutions
+			oceanaverage=SealevelloadsOceanAverage(loads, oceanareas,subelementoceanareas, totaloceanarea);
+			ConserveOceanMass(femmodel,loads,barycontrib->Total()/totaloceanarea - oceanaverage,slgeom);
+		}
+
+		femmodel->inputs->Shift(SealevelGRDEnum,barycontrib->Total()/rho_water/totaloceanarea- oceanaverage/rho_water);
+
+		//cumulate barystatic contributions and save to results: 
+		barycontrib->Cumulate(femmodel->parameters);
+		barycontrib->Save(femmodel->results,femmodel->parameters,totaloceanarea);
+		barycontrib->Reset();
+	}
+
+	if (rotation) {
+		femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,SealevelchangePolarMotionXEnum,polarmotionvector[0],step,time));
+		femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,SealevelchangePolarMotionYEnum,polarmotionvector[1],step,time));
+		femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,SealevelchangePolarMotionZEnum,polarmotionvector[2],step,time));
+	}
+
+	/*Update bedrock motion and geoid:*/
+	femmodel->inputs->AXPY(1,SealevelGRDEnum,SealevelEnum);
+	femmodel->inputs->AXPY(1,BedGRDEnum,BedEnum);
+	if(horiz){
+		femmodel->inputs->AXPY(1,BedEastGRDEnum,BedEastEnum);
+		femmodel->inputs->AXPY(1,BedNorthGRDEnum, BedNorthEnum);
+	}
+
+	/*Free resources:*/
+	delete loads;
+	delete subelementoceanareas;
+	delete oceanareas;
+	xDelete<IssmDouble>(sealevelpercpu); 
+}
+/*}}}*/
+void              dynstr_core(FemModel* femmodel){ /*{{{*/
+
+	/*variables:*/
+	Vector<IssmDouble> *sealevel  = NULL; 
+	Vector<IssmDouble> *deltadsl  = NULL; 
+	Vector<IssmDouble> *deltastr = NULL;
+
+	/*parameters: */
+	int  step;
+	bool isocean=false;
+	IssmDouble time;
+
+	IssmDouble cumgmtslc=0;
+	IssmDouble cumbslc=0;
+	IssmDouble cumgmslc=0;
+	IssmDouble gmtslc=0;
+
+	/*early return if we have no ocean transport:*/
+	femmodel->parameters->FindParam(&isocean,TransientIsoceantransportEnum);
+	if(!isocean)return;
+
+	/*Verbose: */
+	if(VerboseSolution()) _printf0_("	  computing steric and dynamic sea level change\n");
+
+	/*Retrieve sealevel and add steric + dynamic rates:*/
+	GetVectorFromInputsx(&sealevel,femmodel,SealevelEnum,VertexSIdEnum);
+	GetVectorFromInputsx(&deltadsl,femmodel,DeltaDslEnum,VertexSIdEnum);
+	GetVectorFromInputsx(&deltastr,femmodel,DeltaStrEnum,VertexSIdEnum);
+
+	/*compute: sea level change = initial sea level + steric + dynamic*/
+	sealevel->AXPY(deltadsl,1);
+	sealevel->AXPY(deltastr,1);
+
+	/*cumulate thermal steric rate:*/
+	femmodel->parameters->FindParam(&cumgmtslc,CumGmtslcEnum); 
+	femmodel->parameters->FindParam(&cumbslc,CumBslcEnum); 
+
+	gmtslc=deltastr->Norm(NORM_TWO);
+	cumgmtslc+=gmtslc;
+	cumgmslc=cumbslc+cumgmtslc;
+
+	femmodel->parameters->SetParam(cumgmtslc,CumGmtslcEnum);
+	femmodel->parameters->SetParam(cumgmslc,CumGmslcEnum);
+
+	/*Outputs some metrics:*/
+	femmodel->parameters->FindParam(&step,StepEnum);
+	femmodel->parameters->FindParam(&time,TimeEnum);
+
+	femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,GmtslcEnum,gmtslc,step,time));
+	femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,CumGmtslcEnum,cumgmtslc,step,time));
+	femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,CumGmslcEnum,cumgmslc,step,time));
+
+	/*update element inputs:*/
+	InputUpdateFromVectorx(femmodel,sealevel,SealevelEnum,VertexSIdEnum);	
+
+	/*Free resources:*/	
+	delete sealevel;
+	delete deltadsl;
+	delete deltastr;
+}
+/*}}}*/
+void              coupleroutput_core(FemModel* femmodel){  /*{{{*/
+
+	/*parameters:*/
+	int iscoupling;
+	int horiz=0;
+	int count, frequency;
+
+	/*retrieve more parameters:*/
+	femmodel->parameters->FindParam(&iscoupling,IsSlcCouplingEnum);
+	femmodel->parameters->FindParam(&horiz,SolidearthSettingsHorizEnum);
+	femmodel->parameters->FindParam(&count,SealevelchangeRunCountEnum);
+	femmodel->parameters->FindParam(&frequency,SolidearthSettingsRunFrequencyEnum);
+
+	count++;
+	femmodel->parameters->SetParam(count,SealevelchangeRunCountEnum); 
+	
+	if(iscoupling){
+		/*transfer sea level back to ice caps:*/
+		TransferSealevel(femmodel,SealevelEnum);
+		TransferSealevel(femmodel,BedEnum);
+		if(horiz){
+			TransferSealevel(femmodel,BedNorthEnum);
+			TransferSealevel(femmodel,BedEastEnum);
+		}
+	}
+
+}; /*}}}*/
+void              ivins_deformation_core(FemModel* femmodel){ /*{{{*/
+
+	int  gsize;
+	Vector<IssmDouble> *bedup  = NULL; 
+	Vector<IssmDouble> *beduprate= NULL; 
+	IssmDouble          *xx     = NULL;
+	IssmDouble          *yy     = NULL;
+
+	if(VerboseSolution()) _printf0_("	  computing vertical deformation using Ivins model. \n");
+
+	/*find size of vectors:*/
+	gsize      = femmodel->nodes->NumberOfDofs(GsetEnum);
+
+	/*Find the litho material to be used by all the elements:*/
+	Matlitho* matlitho=NULL;
+	for (Object* & object: femmodel->materials->objects){
+		Material* material=xDynamicCast<Material*>(object);
+		if(material->ObjectEnum()==MatlithoEnum){
+			matlitho=xDynamicCast<Matlitho*>(material);
+			break;
+		}
+	}
+
+	/*initialize vectors:*/
+	bedup = new Vector<IssmDouble>(gsize);
+	beduprate = new Vector<IssmDouble>(gsize);
+
+	/*retrieve geometric information: */
+	VertexCoordinatesx(&xx,&yy,NULL,femmodel->vertices); 
+
+	/*Go through elements, and add contribution from each element to the deflection vector wg:*/
+	for(Object* & object : femmodel->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		element->GiaDeflection(bedup,beduprate, matlitho, xx,yy);
+	}
+
+	/*Assemble parallel vector:*/
+	beduprate->Assemble();
+	bedup->Assemble();
+
+	/*Save results:*/
+	InputUpdateFromVectorx(femmodel,bedup,BedGRDEnum,VertexSIdEnum);
+	femmodel->inputs->AXPY(1,BedGRDEnum,BedEnum);
+
+	/*Free resources: */
+	xDelete<IssmDouble>(xx);
+	xDelete<IssmDouble>(yy);
+	delete beduprate;
+	delete bedup;
+}
+/*}}}*/
+void              sealevelchange_initialgeometry(FemModel* femmodel) {  /*{{{*/
+
+	/*Geometry core where we compute geometrical kernels and weights:*/
+
+	/*parameters: */
+	IssmDouble *xxe    = NULL;
+	IssmDouble *yye    = NULL;
+	IssmDouble *zze    = NULL;
+	IssmDouble* areae  = NULL;
+	int  nel;
+	int* lids=NULL;
+	int* n_activevertices=NULL;
+	int  grdmodel=0;
+
+	/*retrieve parameters:*/
+	femmodel->parameters->FindParam(&grdmodel,GrdModelEnum);
+	nel=femmodel->elements->NumberOfElements();
+
+	/*early return?:*/
+	if(grdmodel!=ElasticEnum) return;
+
+	/*Verbose: */
+	if(VerboseSolution()) _printf0_("	  computing initial sea level geometrical kernels and weights.\n");
+
+	/*recover x,y,z and areas from elements: */
+	ElementCoordinatesx(&xxe,&yye,&zze,&areae,femmodel->elements);
+
+
+	/*Compute element ids, used to speed up computations in convolution phase:{{{*/
+	lids=xNew<int>(femmodel->vertices->Size());
+	n_activevertices = xNew<int>(nel);
+	//initialize lids to -1, vertex count to 3
+	for (int v=0; v<femmodel->vertices->Size();v++) lids[v]=-1;
+	for (int e=0; e<nel;e++) n_activevertices[e]=3;
+
+	for(Object* & object : femmodel->elements->objects){
+		Element*   element=xDynamicCast<Element*>(object);
+		for(int i=0;i<3;i++){
+			// if lids where we are looking points to an element id (.i.e. not -1) then we are about to claim that element's vertex
+			// and need to lower the number of vertices it is in charge of
+			if (lids[element->vertices[i]->lid] !=-1){
+				n_activevertices[lids[element->vertices[i]->lid]]-=1;
+			}
+			lids[element->vertices[i]->lid]=element->lid;
+		}
+	}
+
+	/*}}}*/
+
+	/*Run sealevel geometry routine in elements:*/
+	for(Object* & object : femmodel->elements->objects){
+		Element*   element=xDynamicCast<Element*>(object);
+		element->SealevelchangeGeometryInitial(xxe,yye,zze,areae,lids,n_activevertices);
+	}
+
+	femmodel->parameters->AddObject(new DoubleVecParam(XxeEnum,xxe,nel));
+	femmodel->parameters->AddObject(new DoubleVecParam(YyeEnum,yye,nel));
+	femmodel->parameters->AddObject(new DoubleVecParam(ZzeEnum,zze,nel));
+	femmodel->parameters->AddObject(new DoubleVecParam(AreaeEnum,areae,nel));
+
+	#ifdef _ISSM_DEBUG_
+	femmodel->results->AddResult(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,XxeEnum,xxe,nel,1,1,1));
+	femmodel->results->AddResult(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,YyeEnum,yye,nel,1,1,1));
+	femmodel->results->AddResult(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,ZzeEnum,zze,nel,1,1,1));
+	femmodel->results->AddResult(new GenericExternalResult<IssmDouble*>(femmodel->results->Size()+1,AreaeEnum,areae,nel,1,1,1));
+	#endif
+
+	xDelete<IssmDouble>(xxe);
+	xDelete<IssmDouble>(yye);
+	xDelete<IssmDouble>(zze);
+	xDelete<IssmDouble>(areae);
+	xDelete<int>(lids);
+	xDelete<int>(n_activevertices);
+
+	return;
+
+}/*}}}*/
+SealevelGeometry* sealevelchange_geometry(FemModel* femmodel) {  /*{{{*/
+
+	/*Geometry core where we compute updates to the Green function kernels and weights, dependent 
+	 * on the evolution of levelsets: */
+
+	/*parameters: */
+	IssmDouble *xxe    = NULL;
+	IssmDouble *yye    = NULL;
+	IssmDouble *zze    = NULL;
+	IssmDouble* areae  = NULL;
+
+	int nel;
+	int  grdmodel=0;
+	int isgrd=0;
+	int count, frequency;
+	SealevelGeometry* slgeom=NULL;
+
+	/*early return?:*/
+	femmodel->parameters->FindParam(&grdmodel,GrdModelEnum);
+	femmodel->parameters->FindParam(&isgrd,SolidearthSettingsGRDEnum);
+	femmodel->parameters->FindParam(&count,SealevelchangeRunCountEnum);
+	femmodel->parameters->FindParam(&frequency,SolidearthSettingsRunFrequencyEnum);
+	if(grdmodel!=ElasticEnum || !isgrd) return NULL;
+	if(count!=frequency)return NULL;
+
+	/*retrieve parameters:*/
+	femmodel->parameters->FindParam(&xxe,&nel,XxeEnum);
+	femmodel->parameters->FindParam(&yye,&nel,YyeEnum);
+	femmodel->parameters->FindParam(&zze,&nel,ZzeEnum);
+	femmodel->parameters->FindParam(&areae,&nel,AreaeEnum);
+
+	/*initialize SealevelloadMasks structure: */
+	slgeom=new SealevelGeometry(femmodel->elements->Size(),femmodel->vertices->Size());
+
+	/*Verbose: */
+	if(VerboseSolution()) _printf0_("	  computing sea level geometrical kernel and weight updates.\n");
+
+	/*Run sealevel geometry routine for elements with full loading:*/
+	for(Object* & object : femmodel->elements->objects){
+		Element*   element=xDynamicCast<Element*>(object);
+		element->SealevelchangeGeometryCentroidLoads(slgeom,xxe,yye,zze,areae);
+	}
+
+	/*Initialize fractional loading mapping: */
+	slgeom->InitializeMappingsAndBarycentres();
+
+	/*Run sealevel geometry routine for elements with fractional loading:*/
+	for(Object* & object : femmodel->elements->objects){
+		Element*   element=xDynamicCast<Element*>(object);
+		element->SealevelchangeGeometrySubElementLoads(slgeom,areae);
+	}
+
+	/*Assemble barycentres of fraction loading elements:*/
+	slgeom->Assemble();
+
+	/*Create fractional green function kernels: */
+	for(Object* & object : femmodel->elements->objects){
+		Element*   element=xDynamicCast<Element*>(object);
+		element->SealevelchangeGeometrySubElementKernel(slgeom);
+	}
+
+	/*Compute spherical harmonic functions for spatial integrations of the loads*/
+	slgeom->BuildSphericalHarmonics();
+
+	femmodel->parameters->AddObject(new DoubleVecParam(XxeEnum,xxe,nel));
+	femmodel->parameters->AddObject(new DoubleVecParam(YyeEnum,yye,nel));
+	femmodel->parameters->AddObject(new DoubleVecParam(ZzeEnum,zze,nel));
+	femmodel->parameters->AddObject(new DoubleVecParam(AreaeEnum,areae,nel));
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(xxe);
+	xDelete<IssmDouble>(yye);
+	xDelete<IssmDouble>(zze);
+	xDelete<IssmDouble>(areae);
+
+	return slgeom;
+
+}/*}}}*/
+void slc_geometry_cleanup(SealevelGeometry* slgeom, FemModel* femmodel){  /*{{{*/
+	int  grdmodel=0;
+	int isgrd=0;
+	int horiz=0;
+	int count, frequency;
+
+	/*early return?:*/
+	femmodel->parameters->FindParam(&grdmodel,GrdModelEnum);
+	femmodel->parameters->FindParam(&isgrd,SolidearthSettingsGRDEnum);
+	femmodel->parameters->FindParam(&horiz,SolidearthSettingsHorizEnum);
+	femmodel->parameters->FindParam(&count,SealevelchangeRunCountEnum);
+	femmodel->parameters->FindParam(&frequency,SolidearthSettingsRunFrequencyEnum);
+	if(grdmodel!=ElasticEnum || !isgrd) return;
+	if(count!=frequency)return;
+
+	for (int l=0;l<SLGEOM_NUMLOADS;l++){
+		femmodel->inputs->DeleteInput(slgeom->AlphaIndexEnum(l));
+		if (horiz) femmodel->inputs->DeleteInput(slgeom->AzimuthIndexEnum(l));
+	}
+
+	delete slgeom;
+} /*}}}*/
+
+/*subroutines:*/
+bool slcconvergence(IssmDouble* RSLg,IssmDouble* RSLg_old,IssmDouble eps_rel,IssmDouble eps_abs, IssmDouble totaloceanarea, FemModel* femmodel){ /*{{{*/
+
+	int nel;
+	bool converged=true;
+	IssmDouble ndS,nS, nS_old; 
+	IssmDouble* dRSLg    = NULL;
+	IssmDouble rho_water =0;
+
+	femmodel->parameters->FindParam(&nel,MeshNumberofelementsEnum);
+	femmodel->parameters->FindParam(&rho_water,MaterialsRhoSeawaterEnum);
+
+	//compute norm(du) and norm(u) if requested
+	dRSLg=xNewZeroInit<IssmDouble>(nel);
+
+	ndS=0;
+	nS=0;
+	nS_old=0;
+
+	for (int e=0;e<nel;e++){
+		dRSLg[e]=(RSLg[e]-RSLg_old[e])/rho_water/totaloceanarea;
+		ndS+=pow(dRSLg[e],2.0);
+		nS+=pow(RSLg[e]/rho_water/totaloceanarea,2.0);
+		nS_old+=pow(RSLg_old[e]/rho_water/totaloceanarea,2.0);
+	}
+	
+
+	if (xIsNan<IssmDouble>(ndS)){
+		_error_("convergence criterion is NaN (RSL_old=" << nS_old << " RSL=" << nS << ")");
+	}
+
+	if(!xIsNan<IssmDouble>(eps_rel)){
+		if (xIsNan<IssmDouble>(nS_old)) _error_("convergence criterion is NaN! (check the initial RSL)");
+	}
+
+	//clean up
+	xDelete<IssmDouble>(dRSLg);
+
+	//print
+	if(!xIsNan<IssmDouble>(eps_rel)){
+		if((ndS/nS)<eps_rel){
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "              convergence criterion: norm(dS)/norm(S)" << ndS/nS*100 << " < " << eps_rel*100 << " %\n");
+		}
+		else{ 
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "              convergence criterion: norm(dS)/norm(S)" << ndS/nS*100 << " > " << eps_rel*100 << " %\n");
+			converged=false;
+		}
+	}
+	if(!xIsNan<IssmDouble>(eps_abs)){
+		if(ndS<eps_abs){
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "              convergence criterion: norm(dS)" << ndS << " < " << eps_abs << " \n");
+		}
+		else{ 
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "              convergence criterion: norm(dS)" << ndS << " > " << eps_abs << " \n");
+			converged=false;
+		}
+	}
+
+	/*assign output*/
+	return converged;
+
+} /*}}}*/
+IssmDouble  SealevelloadsOceanAverage(GrdLoads* loads, Vector<IssmDouble>* oceanareas, Vector<IssmDouble>* suboceanareas, IssmDouble totaloceanarea){ /*{{{*/
+
+	IssmDouble sealevelloadsaverage;	
+	IssmDouble subsealevelloadsaverage;	
+
+	Vector<IssmDouble>* vsealevelloadsvolume=loads->vsealevelloads->Duplicate();
+	Vector<IssmDouble>* vsubsealevelloadsvolume=loads->vsubsealevelloads->Duplicate();
+
+	vsealevelloadsvolume->Sum(&sealevelloadsaverage);
+	vsubsealevelloadsvolume->Sum(&subsealevelloadsaverage);
+	delete vsealevelloadsvolume; 
+	delete vsubsealevelloadsvolume; 
+
+	return (sealevelloadsaverage+subsealevelloadsaverage)/totaloceanarea;
+} /*}}}*/
+void PolarMotion(IssmDouble* polarmotionvector, FemModel* femmodel,GrdLoads* loads, SealevelGeometry* slgeom, bool computefuture){ /*{{{*/
+	//The purpose of this routine is to get the polar motion vector m=(m1, m2, m3) induced by the GrdLoads
+	IssmDouble  S2coef[3];
+	IssmDouble*	pmtf_col= NULL;
+	IssmDouble*	pmtf_ortho   = NULL;
+	IssmDouble*	pmtf_z   = NULL;
+	IssmDouble* m1=NULL;
+	IssmDouble* m2=NULL;
+	IssmDouble* m3=NULL;
+	IssmDouble* m1interp=NULL;
+	IssmDouble* m2interp=NULL;
+	IssmDouble* m3interp=NULL;
+
+	IssmDouble  moi_e, moi_p, re;
+	IssmDouble mhprefactor, mzprefactor;
+	bool rotation=false;
+	bool viscous=false;
+	int nt=1;
+
+	IssmDouble* viscoustimes=NULL;
+	IssmDouble* viscouspolarmotion=NULL;
+	int         viscousnumsteps;
+	int         viscousindex=0; 
+	int         dummy;
+	IssmDouble  currenttime, final_time, lincoeff, timeacc;
+
+	/*early return?:*/
+	femmodel->parameters->FindParam(&rotation,SolidearthSettingsRotationEnum);
+	if(!rotation)return;
+
+	/*retrieve parameters: */
+	femmodel->parameters->FindParam(&viscous,SolidearthSettingsViscousEnum);
+	femmodel->parameters->FindParam(&moi_e,RotationalEquatorialMoiEnum);
+	femmodel->parameters->FindParam(&moi_p,RotationalPolarMoiEnum);
+	femmodel->parameters->FindParam(&pmtf_col,NULL,SealevelchangePolarMotionTransferFunctionColinearEnum);
+	femmodel->parameters->FindParam(&pmtf_ortho,NULL,SealevelchangePolarMotionTransferFunctionOrthogonalEnum);
+	femmodel->parameters->FindParam(&pmtf_z,NULL,SealevelchangePolarMotionTransferFunctionZEnum);
+	femmodel->parameters->FindParam(&re,SolidearthPlanetRadiusEnum);
+
+	if (viscous){
+		femmodel->parameters->FindParam(&final_time,TimesteppingFinalTimeEnum);
+		femmodel->parameters->FindParam(&timeacc,SolidearthSettingsTimeAccEnum);
+		femmodel->parameters->FindParam(&viscousnumsteps,SealevelchangeViscousNumStepsEnum);
+		femmodel->parameters->FindParam(&viscoustimes,NULL,SealevelchangeViscousTimesEnum);
+		femmodel->parameters->FindParam(&viscousindex,SealevelchangeViscousIndexEnum);
+		femmodel->parameters->FindParam(&currenttime,TimeEnum);
+		femmodel->parameters->FindParam(&viscouspolarmotion,NULL,NULL,SealevelchangeViscousPolarMotionEnum);
+
+		if (computefuture){
+			nt = viscousnumsteps;
+			m1interp=xNewZeroInit<IssmDouble>(nt);
+			m2interp=xNewZeroInit<IssmDouble>(nt);
+			m3interp=xNewZeroInit<IssmDouble>(nt);
+		}
+	}
+
+	m1=xNewZeroInit<IssmDouble>(nt);
+	m2=xNewZeroInit<IssmDouble>(nt);
+	m3=xNewZeroInit<IssmDouble>(nt);
+
+	//Isolate degree 2 load coefficients
+	for (int i=0;i<3;i++) S2coef[i]=0;
+	loads->SHDegree2Coefficients(&S2coef[0],femmodel,slgeom);
+
+	//compute present (& future) polar motion from present loads
+	mhprefactor=-4.*M_PI/5.*pow(re,4.)/(moi_p-moi_e);
+	mzprefactor=8.*M_PI/15.*pow(re,4.)/moi_p;
+	for (int tprime=0;tprime<nt;tprime++){
+		m1[tprime] = mhprefactor * (pmtf_col[tprime] * S2coef[1] + pmtf_ortho[tprime] * S2coef[2]); //x-component
+		m2[tprime] = mhprefactor * (pmtf_col[tprime] * S2coef[2] - pmtf_ortho[tprime] * S2coef[1]); //y-component
+		m3[tprime] = mzprefactor *  pmtf_z[tprime]   * S2coef[0];				    //z-component
+	}
+
+	if(viscous){
+		// we need to do up to 3 things (* = only if computefuture)
+		// 1*: add new PM contribution to the viscous stack for future time steps
+		// 2: collect viscous PM from past loads due at present-day and add it to PM[current_time]
+		// 3*: subtract from viscous stack PM that has already been accounted for so we don't add it again at the next time step
+		if(computefuture){ 
+			if(viscoustimes[viscousindex]<final_time){
+				lincoeff=(viscoustimes[viscousindex+1]-viscoustimes[viscousindex])/timeacc;
+				for(int t=viscousindex;t<nt;t++){ //we resynchronize m from the relative time above to the absolute time where t=0 <=> beginning of the simulation
+					if(t==viscousindex){
+						m1interp[t]=  m1[0];
+						m2interp[t]=  m2[0];
+						m3interp[t]=  m3[0];
+					}
+					else{ //we reinterpolate PM on viscoustimes, so we can handle the case where we are running with adaptative/uneven time steps
+						int tprime=t-viscousindex-1;
+						m1interp[t]=  (1.0-lincoeff)*m1[tprime]+lincoeff*m1[tprime+1];
+						m2interp[t]=  (1.0-lincoeff)*m2[tprime]+lincoeff*m2[tprime+1];
+						m3interp[t]=  (1.0-lincoeff)*m3[tprime]+lincoeff*m3[tprime+1];
+					}
+				}
+			}
+		}
+		/*update PM at present time using viscous stack at present time: */
+		m1[0]+=viscouspolarmotion[0*nt+viscousindex];
+		m2[0]+=viscouspolarmotion[1*nt+viscousindex]; 
+		m3[0]+=viscouspolarmotion[2*nt+viscousindex]; 
+		if(computefuture){ /*update viscous stack with future deformation from present load: */
+			for(int t=nt-1;t>=viscousindex;t--){
+				//offset viscous PM to remove all deformation that has already been added
+				viscouspolarmotion[0*nt+t]+=m1interp[t]-m1interp[viscousindex]-viscouspolarmotion[0*nt+viscousindex];
+				viscouspolarmotion[1*nt+t]+=m2interp[t]-m2interp[viscousindex]-viscouspolarmotion[1*nt+viscousindex];
+				viscouspolarmotion[2*nt+t]+=m3interp[t]-m3interp[viscousindex]-viscouspolarmotion[2*nt+viscousindex];
+			}
+			// save updated viscous PM
+			femmodel->parameters->SetParam(viscouspolarmotion,viscousnumsteps,3,SealevelchangeViscousPolarMotionEnum);
+		}
+	}
+	
+
+	/*Assign output pointers:*/
+	polarmotionvector[0]=m1[0];
+	polarmotionvector[1]=m2[0];
+	polarmotionvector[2]=m3[0];
+
+	/*Free allocations:*/
+	xDelete<IssmDouble>(m1);
+	xDelete<IssmDouble>(m2);
+	xDelete<IssmDouble>(m3);
+	if (viscous){
+		if (computefuture){
+			xDelete<IssmDouble>(m1interp);
+			xDelete<IssmDouble>(m2interp);
+			xDelete<IssmDouble>(m3interp);
+		}
+		xDelete<IssmDouble>(viscoustimes);
+		xDelete<IssmDouble>(viscouspolarmotion);
+	}
+	xDelete<IssmDouble>(pmtf_col);
+	xDelete<IssmDouble>(pmtf_ortho);
+	xDelete<IssmDouble>(pmtf_z);
+
+} /*}}}*/
+void       SealevelchangeUpdateViscousTimeSeries(FemModel* femmodel){ /*{{{*/
+	
+	IssmDouble* viscouspolarmotion=NULL;
+	IssmDouble* viscoustimes=NULL;
+	int         viscousnumsteps;
+	int         viscousindex=0; 
+	int         newindex=0; 
+	int         dummy;
+	bool        viscous=false;
+	bool        rotation=false;
+	IssmDouble  currenttime;
+	IssmDouble  lincoeff=0;
+		
+	femmodel->parameters->FindParam(&viscous,SolidearthSettingsViscousEnum);
+	femmodel->parameters->FindParam(&rotation,SolidearthSettingsRotationEnum);
+	
+	if(viscous){
+		femmodel->parameters->FindParam(&viscousnumsteps,SealevelchangeViscousNumStepsEnum);
+		femmodel->parameters->FindParam(&viscoustimes,NULL,SealevelchangeViscousTimesEnum);
+		femmodel->parameters->FindParam(&viscousindex,SealevelchangeViscousIndexEnum);
+		femmodel->parameters->FindParam(&currenttime,TimeEnum);
+		if (rotation) 	femmodel->parameters->FindParam(&viscouspolarmotion,NULL,NULL,SealevelchangeViscousPolarMotionEnum);
+
+		bool foundtime=false;
+		int offset=1; //handles the egde case where time found = max time in viscoustimes
+		lincoeff=0;
+		newindex=viscousnumsteps-2;
+
+		for(int t=viscousindex;t<viscousnumsteps;t++){
+			if (viscoustimes[t]>=currenttime){
+				newindex=t-1;
+				foundtime=true;
+				lincoeff=(currenttime-viscoustimes[newindex])/(viscoustimes[t]-viscoustimes[newindex]);
+				offset=0;
+				break;
+			}
+		}
+
+		if(rotation){
+			int index=0;
+			for (int i=0;i<3;i++){
+				index=i*viscousnumsteps+newindex;
+				viscouspolarmotion[index+offset]=(1-lincoeff)*viscouspolarmotion[index]+lincoeff*viscouspolarmotion[index+1];
+			}
+			femmodel->parameters->SetParam(viscouspolarmotion,viscousnumsteps,3,SealevelchangeViscousPolarMotionEnum);
+		}
+
+
+		/*update viscous inputs:*/
+		for(Object* & object : femmodel->elements->objects){
+			Element* element = xDynamicCast<Element*>(object);
+			element->SealevelchangeUpdateViscousFields(lincoeff,newindex,offset);
+		}
+
+		viscoustimes[newindex]=currenttime;
+		viscousindex=newindex+offset;
+
+		femmodel->parameters->SetParam(viscousindex,SealevelchangeViscousIndexEnum);
+		femmodel->parameters->SetParam(viscoustimes,viscousnumsteps,SealevelchangeViscousTimesEnum);
+
+		/*free allocations:*/
+		xDelete<IssmDouble>(viscoustimes);
+		if (rotation) 	xDelete<IssmDouble>(viscouspolarmotion);
+	}
+
+
+}
+void        ConserveOceanMass(FemModel* femmodel,GrdLoads* loads, IssmDouble offset, SealevelGeometry* slgeom){ /*{{{*/
+
+	/*Shift sealevel loads by ocean average, only on ocean! :*/
+	for(Object* & object : femmodel->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		element->SealevelchangeShift(loads, offset,slgeom);
+	}
+	loads->AssembleSealevelLoads();
+
+} /*}}}*/
+IssmDouble* CombineLoads(IssmDouble* load,IssmDouble* subload,FemModel* femmodel, SealevelGeometry* slgeom,int loadtype,int nel){ /*{{{*/
+
+	//merges loads on centroids and subelements onto a single variable loadcopy
+	int* indices=xNew<int>(nel);
+	for(int i=0;i<nel;i++)indices[i]=i;
+
+	Vector<IssmDouble>* vloadcopy=new Vector<IssmDouble>(nel);
+	IssmDouble* loadcopy=xNew<IssmDouble>(nel);
+
+	vloadcopy->SetValues(nel,indices,load,INS_VAL);
+	vloadcopy->Assemble();
+
+	if(subload){
+		for (int i=0;i<femmodel->elements->Size();i++){
+			if (slgeom->issubelement[loadtype][i]){
+				int se= slgeom->subelementmapping[loadtype][i];
+				IssmDouble subloadi=subload[se];
+				Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i));
+				vloadcopy->SetValue(element->Sid(),subloadi,ADD_VAL);
+			}
+		}
+	}
+	vloadcopy->Assemble();
+	loadcopy=vloadcopy->ToMPISerial();
+
+	return loadcopy;
+
+} /*}}}*/
+
+/*Coupling routines:*/
+void TransferForcing(FemModel* femmodel,int forcingenum){ /*{{{*/
+
+	/*forcing being transferred from models to earth: */
+	IssmDouble** forcings=NULL;
+	IssmDouble*  forcing=NULL; 
+	Vector<IssmDouble>* forcingglobal=NULL; 
+	IssmDouble* transfercount=NULL; 
+	int*         nvs=NULL;
+
+	/*transition vectors:*/
+	IssmDouble** transitions=NULL;
+	int          ntransitions; 
+	int*         transitions_m=NULL;
+	int*         transitions_n=NULL;
+	int          nv;
+	int          existforcing=0;         
+
+	/*communicators:*/
+	ISSM_MPI_Comm tocomm;
+	ISSM_MPI_Comm* fromcomms=NULL;
+	ISSM_MPI_Status status;
+	int         my_rank;
+	int         modelid,earthid;
+	int         nummodels;
+
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&modelid,ModelIdEnum);
+	femmodel->parameters->FindParam(&earthid,EarthIdEnum);
+	femmodel->parameters->FindParam(&nummodels,NumModelsEnum);
+	my_rank=IssmComm::GetRank();
+
+	/*retrieve the inter communicators that will be used to send data from each ice cap to the earth: */
+	if(modelid==earthid){
+		GenericParam<ISSM_MPI_Comm*>* parcoms = dynamic_cast<GenericParam<ISSM_MPI_Comm*>*>(femmodel->parameters->FindParamObject(IcecapToEarthCommEnum));
+		if(!parcoms)_error_("TransferForcing error message: could not find IcecapToEarthComm communicator");
+		fromcomms=parcoms->GetParameterValue();
+	}
+	else {
+		GenericParam<ISSM_MPI_Comm>* parcom = dynamic_cast<GenericParam<ISSM_MPI_Comm>*>(femmodel->parameters->FindParamObject(IcecapToEarthCommEnum));
+		if(!parcom)_error_("TransferForcing error message: could not find IcecapToEarthComm communicator");
+		tocomm=parcom->GetParameterValue();
+	}
+
+	/*For each icecap, retrieve the forcing vector that will be sent to the earth model: */
+	if(modelid!=earthid){
+		nv=femmodel->vertices->NumberOfVertices();
+		existforcing=reCast<int>(femmodel->inputs->Exist(forcingenum));
+		if(existforcing){
+			GetVectorFromInputsx(&forcing,femmodel,forcingenum,VertexSIdEnum);
+			GetVectorFromInputsx(&transfercount,femmodel,CouplingTransferCountEnum,VertexSIdEnum);
+			for (int i=0;i<nv;i++) forcing[i]/=transfercount[i]; //Divide forcing at this vertex by the number of icecaps that share it. This way we average the forcing when adding it into the earth model.
+		}
+	}
+
+	/*Send the forcing to the earth model:{{{*/
+	if(my_rank==0){
+		if(modelid==earthid){
+			forcings=xNew<IssmDouble*>(nummodels-1);
+			nvs=xNew<int>(nummodels-1);
+			for(int i=0;i<earthid;i++){
+				ISSM_MPI_Recv(&existforcing, 1, ISSM_MPI_INT, 0,i, fromcomms[i], &status);
+				if(existforcing){
+					ISSM_MPI_Recv(nvs+i, 1, ISSM_MPI_INT, 0,i, fromcomms[i], &status);
+					forcings[i]=xNew<IssmDouble>(nvs[i]);
+					ISSM_MPI_Recv(forcings[i], nvs[i], ISSM_MPI_DOUBLE, 0,i, fromcomms[i], &status);
+				}
+				else{
+					forcings[i]=NULL;
+				}
+			}
+
+		}
+		else{
+			ISSM_MPI_Send(&existforcing, 1, ISSM_MPI_INT, 0, modelid, tocomm);
+			if(existforcing){
+				ISSM_MPI_Send(&nv, 1, ISSM_MPI_INT, 0, modelid, tocomm);
+				ISSM_MPI_Send(forcing, nv, ISSM_MPI_DOUBLE, 0, modelid, tocomm);
+			}
+		}
+	}
+	/*}}}*/
+
+	/*On the earth model, consolidate all the forcings into one, and update the elements dataset accordingly: {{{*/
+	if(modelid==earthid){
+
+		/*Out of all the delta thicknesses, build one delta thickness vector made of all the ice cap contributions. 
+		 *First, build the global delta thickness vector in the earth model: */
+		nv=femmodel->vertices->NumberOfVertices();
+		GetVectorFromInputsx(&forcingglobal,femmodel,forcingenum,VertexSIdEnum);
+
+		forcingglobal->Set(0.0);
+
+		/*Retrieve transition vectors, used to plug from each ice cap into the global forcing:*/
+		femmodel->parameters->FindParam(&transitions,&ntransitions,&transitions_m,&transitions_n,SealevelchangeTransitionsEnum);
+
+		if(ntransitions!=earthid)_error_("TransferForcing error message: number of transition vectors is not equal to the number of icecaps!");
+
+		/*Go through all the delta thicknesses coming from each ice cap: */
+		if(my_rank==0){
+			for(int i=0;i<earthid;i++){
+
+				IssmDouble* forcingfromcap= forcings[i]; //careful, this only exists on rank 0 of the earth model!
+				if(forcingfromcap){
+					IssmDouble* transition=transitions[i];
+					int         M=transitions_m[i];
+
+					/*build index to plug values: */
+					int*        index=xNew<int>(M); for(int i=0;i<M;i++)index[i]=reCast<int>(transition[i])-1; //matlab indexing!
+
+					/*We are going to plug this vector into the earth model, at the right vertices corresponding to this particular 
+					 * ice cap: */
+
+					forcingglobal->SetValues(M,index,forcingfromcap,ADD_VAL);
+					xDelete<int>(index);
+				}
+			}
+		}
+
+		/*Assemble vector:*/
+		forcingglobal->Assemble();
+
+		/*Plug into elements:*/
+		InputUpdateFromVectorx(femmodel,forcingglobal,forcingenum,VertexSIdEnum);
+	} 
+	/*}}}*/
+
+	/*Free resources:{{{*/
+	if(forcings){
+		for(int i=0;i<nummodels-1;i++){
+			IssmDouble* temp=forcings[i]; 
+			if(temp)xDelete<IssmDouble>(temp);
+		}
+		xDelete<IssmDouble*>(forcings);
+	}
+	if(forcing)xDelete<IssmDouble>(forcing);
+	if(forcingglobal)delete forcingglobal;
+	if(transitions){
+		for(int i=0;i<earthid;i++){
+			IssmDouble* temp=transitions[i];
+			xDelete<IssmDouble>(temp);
+		}
+		xDelete<IssmDouble*>(transitions);
+		xDelete<int>(transitions_m);
+		xDelete<int>(transitions_n);
+	}
+	if(nvs)xDelete<int>(nvs);
+	/*}}}*/
+
+} /*}}}*/
+void TransferSealevel(FemModel* femmodel,int forcingenum){ /*{{{*/
+
+	/*forcing being transferred from earth to ice caps: */
+	IssmDouble*  forcing=NULL; 
+	IssmDouble*  forcingglobal=NULL; 
+
+	/*transition vectors:*/
+	IssmDouble** transitions=NULL;
+	int          ntransitions; 
+	int*         transitions_m=NULL;
+	int*         transitions_n=NULL;
+	int          nv;
+
+	/*communicators:*/
+	ISSM_MPI_Comm fromcomm;
+	ISSM_MPI_Comm* tocomms=NULL;
+	ISSM_MPI_Status status;
+	int         my_rank;
+	int         modelid,earthid;
+	int         nummodels;
+	int         numcoms;
+
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&modelid,ModelIdEnum);
+	femmodel->parameters->FindParam(&earthid,EarthIdEnum);
+	femmodel->parameters->FindParam(&nummodels,NumModelsEnum);
+	my_rank=IssmComm::GetRank();
+
+	/*retrieve the inter communicators that will be used to send data from earth to ice caps:*/
+	if(modelid==earthid){
+		GenericParam<ISSM_MPI_Comm*>* parcoms = dynamic_cast<GenericParam<ISSM_MPI_Comm*>*>(femmodel->parameters->FindParamObject(IcecapToEarthCommEnum));
+		if(!parcoms)_error_("TransferSealevel error message: could not find IcecapToEarthComm communicator");
+		tocomms=parcoms->GetParameterValue();
+		//femmodel->parameters->FindParam((int**)(&tocomms),&numcoms,IcecapToEarthCommEnum);
+	}
+	else{
+		GenericParam<ISSM_MPI_Comm>* parcom = dynamic_cast<GenericParam<ISSM_MPI_Comm>*>(femmodel->parameters->FindParamObject(IcecapToEarthCommEnum));
+		if(!parcom)_error_("TransferSealevel error message: could not find IcecapToEarthComm communicator");
+		fromcomm=parcom->GetParameterValue();
+		//femmodel->parameters->FindParam((int*)(&fromcomm), IcecapToEarthCommEnum);
+	}
+
+	/*Retrieve sea-level on earth model: */
+	if(modelid==earthid){
+		nv=femmodel->vertices->NumberOfVertices();
+		GetVectorFromInputsx(&forcingglobal,femmodel,forcingenum,VertexSIdEnum);
+	}
+
+	/*Send the forcing to the ice caps:{{{*/
+	if(my_rank==0){
+
+		if(modelid==earthid){
+
+			/*Retrieve transition vectors, used to figure out global forcing contribution to each ice cap's own elements: */
+			femmodel->parameters->FindParam(&transitions,&ntransitions,&transitions_m,&transitions_n,SealevelchangeTransitionsEnum);
+
+			if(ntransitions!=earthid)_error_("TransferSealevel error message: number of transition vectors is not equal to the number of icecaps!");
+
+			for(int i=0;i<earthid;i++){
+				nv=transitions_m[i];
+				forcing=xNew<IssmDouble>(nv);
+				IssmDouble* transition=transitions[i];
+				for(int j=0;j<nv;j++){
+					forcing[j]=forcingglobal[reCast<int>(transition[j])-1];
+				}
+				ISSM_MPI_Send(&nv, 1, ISSM_MPI_INT, 0, i, tocomms[i]);
+				ISSM_MPI_Send(forcing, nv, ISSM_MPI_DOUBLE, 0, i, tocomms[i]);
+			}
+		}
+		else{
+			ISSM_MPI_Recv(&nv, 1, ISSM_MPI_INT, 0, modelid, fromcomm, &status);
+			forcing=xNew<IssmDouble>(nv);
+			ISSM_MPI_Recv(forcing, nv, ISSM_MPI_DOUBLE, 0, modelid, fromcomm, &status);
+		}
+	}
+	/*}}}*/
+
+	/*On each ice cap, spread the forcing across cpus, and update the elements dataset accordingly: {{{*/
+	if(modelid!=earthid){
+
+		ISSM_MPI_Bcast(&nv,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+		if(my_rank!=0)forcing=xNew<IssmDouble>(nv);
+		ISSM_MPI_Bcast(forcing,nv,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+		/*Plug into elements:*/
+		InputUpdateFromVectorx(femmodel,forcing,forcingenum,VertexSIdEnum);
+	} 
+	/*}}}*/
+
+	/*Free resources:{{{*/
+	if(forcingglobal)xDelete<IssmDouble>(forcingglobal);
+	if(forcing)xDelete<IssmDouble>(forcing);
+	if(transitions){
+		for(int i=0;i<ntransitions;i++){
+			IssmDouble* temp=transitions[i];
+			xDelete<IssmDouble>(temp);
+		}
+		xDelete<IssmDouble*>(transitions);
+		xDelete<int>(transitions_m);
+		xDelete<int>(transitions_n);
+	}
+	/*}}}*/
+
+} /*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/smb_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/smb_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/smb_core.cpp	(revision 27955)
@@ -0,0 +1,115 @@
+/*!\file: smb_core.cpp
+ * \brief: core of the smb solution
+ */
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void smb_core(FemModel* femmodel){
+
+	/*Start profiler*/
+	femmodel->profiler->Start(SMBCORE);
+
+	/*parameters: */
+	Analysis* analysis=NULL;
+	int    smb_model;
+	int    numoutputs;
+	bool   save_results;
+	int    solution_type;
+	char** requested_outputs = NULL;
+
+	/*activate configuration*/
+	femmodel->SetCurrentConfiguration(SmbAnalysisEnum);
+
+	/*recover parameters: */
+	femmodel->parameters->FindParam(&smb_model,SmbEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&numoutputs,SmbNumRequestedOutputsEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,SmbRequestedOutputsEnum);
+
+	/*sub steping specifics*/
+	int dtslices;
+	int numaveragedinput;
+	femmodel->parameters->FindParam(&dtslices,SmbStepsPerStepEnum);
+	/*intermediaries to deal with averaging*/
+	static const int substeplist[2] = {SmbMassBalanceSubstepEnum,SmbRunoffSubstepEnum};
+	static const int transientlist[2] = {SmbMassBalanceTransientEnum,SmbRunoffTransientEnum};
+	static const int averagelist[2] = {SmbMassBalanceEnum,SmbRunoffEnum};
+	std::vector<int> substepinput;
+	std::vector<int> transientinput;
+	std::vector<int> averagedinput;
+
+	/*define which variable needs to be averaged on the sub-timestep and initialize as needed*/
+	if(smb_model==SMBgradientscomponentsEnum){
+		numaveragedinput = 2;
+		substepinput.assign(substeplist,substeplist+2);
+		transientinput.assign(transientlist,transientlist+2);
+		averagedinput.assign(averagelist,averagelist+2);
+	}
+
+	/*if yes compute necessary intermediaries and start looping*/
+	if (dtslices>1){
+		int        substep,smb_averaging;
+		IssmDouble global_time,subtime,yts;
+		IssmDouble dt,subdt;
+
+		femmodel->parameters->FindParam(&global_time,TimeEnum);
+		femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+		femmodel->parameters->FindParam(&yts,ConstantsYtsEnum);
+		femmodel->parameters->FindParam(&smb_averaging,SmbAveragingEnum);
+
+		subtime=global_time-dt; //getting the time back to the start of the timestep
+		subdt=dt/dtslices; //computing substep from dt and a divider
+		substep=0;
+		femmodel->parameters->SetParam(subdt,TimesteppingTimeStepEnum);
+
+		femmodel->InitTransientInputx(&transientinput[0],numaveragedinput);
+		analysis = new SmbAnalysis();
+		while(substep<dtslices){ //loop on sub dts
+			substep+=1;
+			subtime+=subdt;
+			femmodel->parameters->SetParam(subtime,TimeEnum);
+         if(VerboseSolution()) _printf0_("sub iteration " << substep << "/" << dtslices << "  time [yr]: " << setprecision(4) << subtime/yts << " (time step: " << subdt/yts << ")\n");
+         if(VerboseSolution()) _printf0_("   computing smb\n");
+			if(VerboseSolution()) _printf0_("   Calling core\n");
+			analysis->Core(femmodel);
+         /*If we have a sub-timestep we store the substep inputs in a transient input here*/
+         femmodel->StackTransientInputx(&substepinput[0],&transientinput[0],subtime,numaveragedinput);
+		}
+		delete analysis;
+      /*averaging the transient input*/
+		femmodel->AverageTransientInputx(&transientinput[0],&averagedinput[0],global_time-dt,subtime,numaveragedinput,smb_averaging);
+		/*and reset timesteping variables to original*/
+		femmodel->parameters->SetParam(global_time,TimeEnum);
+		femmodel->parameters->SetParam(dt,TimesteppingTimeStepEnum);
+	}
+	else{
+      if(VerboseSolution()) _printf0_("   computing smb \n");
+      analysis = new SmbAnalysis();
+		analysis->Core(femmodel);
+		/*If no substeps are present we want to duplicate the computed substep enum for coupling purposes*/
+		if(smb_model==SMBgradientscomponentsEnum){
+			for(int i=0;i<numaveragedinput;i++){
+				InputDuplicatex(femmodel,substepinput[i],averagedinput[i]);
+			}
+		}
+		delete analysis;
+	}
+
+	if(save_results){
+		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+	}
+
+	if(solution_type==SmbSolutionEnum)femmodel->RequestedDependentsx();
+
+	/*Free resources:*/
+	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+
+	/*End profiler*/
+	femmodel->profiler->Stop(SMBCORE);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/steadystate_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/steadystate_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/steadystate_core.cpp	(revision 27955)
@@ -0,0 +1,129 @@
+/*!\file: steadystate_core.cpp
+ * \brief: core of the steadystate solution 
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+/*Local prototypes*/
+bool steadystateconvergence(Vector<IssmDouble>* tg,Vector<IssmDouble>* tg_old,Vector<IssmDouble>* ug,Vector<IssmDouble>* ug_old,IssmDouble reltol);
+
+void steadystate_core(FemModel* femmodel){ //{{{
+
+	/*intermediary: */
+	int step; 
+	Vector<IssmDouble>* ug     = NULL;
+	Vector<IssmDouble>* ug_old = NULL;
+	Vector<IssmDouble>* tg     = NULL;
+	Vector<IssmDouble>* tg_old = NULL;
+
+	/*parameters: */
+	bool        save_results,isenthalpy;
+	int         maxiter;
+	IssmDouble  reltol;
+	int         numoutputs        = 0;
+	char** requested_outputs = NULL;
+
+	/* recover parameters:*/
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&maxiter,SteadystateMaxiterEnum);
+	femmodel->parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);
+	femmodel->parameters->FindParam(&reltol,SteadystateReltolEnum);
+	femmodel->parameters->SetParam(false,SaveResultsEnum);
+	femmodel->parameters->FindParam(&numoutputs,SteadystateNumRequestedOutputsEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,SteadystateRequestedOutputsEnum);
+
+	/*intialize counters: */
+	step=1;
+
+	for(;;){
+
+		/* Compute first velocity, then temperature due to high sensitivity of temperature to velocity. */
+		if(VerboseSolution()) _printf0_("\n======================================================\n");
+		if(VerboseSolution()) _printf0_("   computing velocity and temperature for step: " << step << "\n");
+		if(VerboseSolution()) _printf0_("====================================================\n");
+
+		if(VerboseSolution()) _printf0_("\n   -- computing new velocity -- \n\n");
+		stressbalance_core(femmodel);
+		GetSolutionFromInputsx(&ug,femmodel);
+
+		if(VerboseSolution()) _printf0_("\n   -- computing new temperature --\n\n");
+		thermal_core(femmodel);
+		if(!isenthalpy)femmodel->SetCurrentConfiguration(ThermalAnalysisEnum);/*Could be MeltingAnalysis...*/
+		GetSolutionFromInputsx(&tg,femmodel);
+
+		if(step>1){
+			if(VerboseSolution()) _printf0_("   checking steadystate convergence\n");
+			if(steadystateconvergence(tg,tg_old,ug,ug_old,reltol)) break;
+		}
+		if(step>maxiter){
+			if(VerboseSolution()) _printf0_("   maximum number steadystate iterations " << maxiter << " reached\n");
+			break;
+		}
+
+		/*update results and increase counter*/
+		delete tg_old;tg_old=tg;
+		delete ug_old;ug_old=ug;
+		step++;
+	}
+
+	if(save_results){
+		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+	}
+
+	/*Free resources:*/
+	delete tg_old;
+	delete ug_old;
+	delete tg;
+	delete ug;	
+	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+}//}}}
+bool steadystateconvergence(Vector<IssmDouble>* tg,Vector<IssmDouble>* tg_old,Vector<IssmDouble>* ug,Vector<IssmDouble>* ug_old,IssmDouble reltol){//{{{
+
+	/*Output*/
+	bool converged = true;
+
+	/*Intermediary*/
+	Vector<IssmDouble>* dug    = NULL;
+	Vector<IssmDouble>* dtg    = NULL;
+	IssmDouble          ndt,nt;
+	IssmDouble          ndu,nu;
+
+	/*compute norm(du)/norm(u)*/
+	dug=ug_old->Duplicate(); ug_old->Copy(dug); dug->AYPX(ug,-1.0);
+	ndu=dug->Norm(NORM_TWO); nu=ug_old->Norm(NORM_TWO);
+	if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error_("convergence criterion is NaN!");
+	if((ndu/nu)<reltol){
+		if(VerboseConvergence()) _printf0_("\n"<<setw(50)<<left<<"   Velocity convergence: norm(du)/norm(u)"<<ndu/nu*100<<" < "<<reltol*100<<" %\n");
+	}
+	else{ 
+		if(VerboseConvergence()) _printf0_("\n"<<setw(50)<<left<<"   Velocity convergence: norm(du)/norm(u)"<<ndu/nu*100<<" > "<<reltol*100<<" %\n");
+		converged=false;
+	}
+
+	/*compute norm(dt)/norm(t)*/
+	dtg=tg_old->Duplicate(); tg_old->Copy(dtg); dtg->AYPX(tg,-1.0);
+	ndt=dtg->Norm(NORM_TWO); nt=tg_old->Norm(NORM_TWO);
+	if (xIsNan<IssmDouble>(ndt) || xIsNan<IssmDouble>(nt)) _error_("convergence criterion is NaN!");
+	if((ndt/nt)<reltol){
+		if(VerboseConvergence()) _printf0_(setw(50)<<left<<"   Temperature convergence: norm(dt)/norm(t)"<<ndt/nt*100<<" < "<<reltol*100<<" %\n");
+	}
+	else{ 
+		if(VerboseConvergence()) _printf0_(setw(50)<<left<<"   Temperature convergence: norm(dt)/norm(t)"<<ndt/nt*100<<" > "<<reltol*100<<" %\n");
+		converged=false;
+	}
+
+	/*clean up and return*/
+	delete dtg;
+	delete dug;
+	return converged;
+}//}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/stressbalance_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/stressbalance_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/stressbalance_core.cpp	(revision 27955)
@@ -0,0 +1,105 @@
+/*!\file: stressbalance_core.cpp
+ * \brief: core of the stressbalance solution
+ */
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../analyses/analyses.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void stressbalance_core(FemModel* femmodel){
+
+	/*Start profiler*/
+	femmodel->profiler->Start(STRESSBALANCECORE);
+
+	/*parameters: */
+	bool       dakota_analysis,control_analysis;
+	int        domaintype;
+	bool       isSIA,isSSA,isL1L2,isMOLHO,isHO,isFS,isNitsche;
+	bool       save_results;
+	int        solution_type;
+	int        numoutputs        = 0;
+	char     **requested_outputs = NULL;
+	Analysis  *analysis          = NULL;
+
+	/* recover parameters:*/
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&isSIA,FlowequationIsSIAEnum);
+	femmodel->parameters->FindParam(&isSSA,FlowequationIsSSAEnum);
+	femmodel->parameters->FindParam(&isL1L2,FlowequationIsL1L2Enum);
+	femmodel->parameters->FindParam(&isMOLHO,FlowequationIsMOLHOEnum);
+	femmodel->parameters->FindParam(&isHO,FlowequationIsHOEnum);
+	femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
+	femmodel->parameters->FindParam(&isNitsche,FlowequationIsNitscheEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&numoutputs,StressbalanceNumRequestedOutputsEnum);
+	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,StressbalanceRequestedOutputsEnum);
+
+	if(VerboseSolution()) _printf0_("   computing new velocity\n");
+	/*Compute slopes if necessary */
+	if(isSIA || (isFS && domaintype==Domain2DverticalEnum)) surfaceslope_core(femmodel);
+	if(isFS){
+		/*We need bed slopoes for the non-penetration condition*/
+		bedslope_core(femmodel);
+		femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+		ResetFSBasalBoundaryConditionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+
+		/*We need basal melt rates for the shelf dampening*/
+		bmb_core(femmodel);
+	}
+
+	/*Compute SIA velocities*/
+	if(isSIA){
+
+		/*Take the last velocity into account so that the velocity on the SSA domain is not zero*/
+		if(isSSA || isL1L2 || isHO ){
+			femmodel->SetCurrentConfiguration(StressbalanceSIAAnalysisEnum);
+			ResetBoundaryConditions(femmodel,StressbalanceSIAAnalysisEnum);
+		}
+
+		analysis = new StressbalanceSIAAnalysis();
+		analysis->Core(femmodel);
+		delete analysis;
+
+		/*Reset velocities for other ice flow models*/
+		if(isSSA || isL1L2 || isHO){
+			femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+			ResetBoundaryConditions(femmodel,StressbalanceAnalysisEnum);
+		}
+	}
+
+	/*Compute stressbalance for SSA L1L2 HO and FS*/
+	if(isSSA || isL1L2 || isMOLHO || isHO || isFS){
+		analysis = new StressbalanceAnalysis();
+		analysis->Core(femmodel);
+		delete analysis;
+	}
+
+	/*Compute vertical velocities*/
+	if (domaintype==Domain3DEnum && (isSIA || isSSA || isL1L2 || isMOLHO || isHO)){
+
+		/*We need basal melt rates for vertical velocity*/
+		bmb_core(femmodel);
+
+		analysis = new StressbalanceVerticalAnalysis();
+		analysis->Core(femmodel);
+		delete analysis;
+	}
+
+	if(save_results){
+		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+	}
+
+	if(solution_type==StressbalanceSolutionEnum && !control_analysis)femmodel->RequestedDependentsx();
+
+	/*Free resources:*/
+	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+
+	/*End profiler*/
+	femmodel->profiler->Stop(STRESSBALANCECORE);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/surfaceslope_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/surfaceslope_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/surfaceslope_core.cpp	(revision 27955)
@@ -0,0 +1,51 @@
+/*!\file: surfaceslope_core.cpp
+ * \brief: core of the slope solution
+ */
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../modules/modules.h"
+
+void surfaceslope_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool save_results;
+	int  domaintype;
+
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+
+	if(VerboseSolution()) _printf0_("computing slope...\n");
+
+	/*Call on core computations: */
+	femmodel->SetCurrentConfiguration(L2ProjectionBaseAnalysisEnum);
+
+	femmodel->parameters->SetParam(SurfaceSlopeXEnum,InputToL2ProjectEnum);
+	solutionsequence_linear(femmodel);
+
+	if(domaintype!=Domain2DverticalEnum){
+		femmodel->parameters->SetParam(SurfaceSlopeYEnum,InputToL2ProjectEnum);
+		solutionsequence_linear(femmodel);
+	}
+	if(domaintype==Domain2DverticalEnum){
+		femmodel->parameters->SetParam(SurfaceSlopeXEnum,InputToExtrudeEnum);
+		extrudefrombase_core(femmodel);
+	}
+
+	if(save_results){
+		if(domaintype!=Domain2DverticalEnum){
+			int outputs[2] = {SurfaceSlopeXEnum,SurfaceSlopeYEnum};
+			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
+
+		}
+		else{
+			int outputs = SurfaceSlopeXEnum;
+			femmodel->RequestedOutputsx(&femmodel->results,&outputs,1);
+		}
+	}
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/thermal_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/thermal_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/thermal_core.cpp	(revision 27955)
@@ -0,0 +1,60 @@
+/*!\file: thermal_core.cpp
+ * \brief: core of the thermal solution
+ */
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../analyses/analyses.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void thermal_core(FemModel* femmodel){
+
+	/*Start profiler*/
+	femmodel->profiler->Start(THERMALCORE);
+
+	/*intermediary*/
+	bool   save_results,isenthalpy;
+	bool   dakota_analysis;
+	int    solution_type,numoutputs;
+	char** requested_outputs = NULL;
+	EnthalpyAnalysis * enthalpy_analysis = NULL;
+
+	/*first recover parameters common to all solutions*/
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);
+	femmodel->parameters->FindParam(&numoutputs,ThermalNumRequestedOutputsEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,ThermalRequestedOutputsEnum);
+
+	/*Calculate geothermalflux*/
+	GeothermalFluxx(femmodel);
+
+	if(isenthalpy){
+		femmodel->InputMakeDiscontinuous(BasalforcingsGroundediceMeltingRateEnum);
+		enthalpy_analysis = new EnthalpyAnalysis();
+		enthalpy_analysis->Core(femmodel);
+		delete enthalpy_analysis;
+	}
+	else{
+		if(VerboseSolution()) _printf0_("   computing temperatures\n");
+		femmodel->SetCurrentConfiguration(ThermalAnalysisEnum);
+		solutionsequence_thermal_nonlinear(femmodel);
+
+		if(VerboseSolution()) _printf0_("   computing melting\n");
+		femmodel->SetCurrentConfiguration(MeltingAnalysisEnum);
+		solutionsequence_linear(femmodel);
+	}
+
+	if(save_results){
+		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+	}
+
+	/*Free resources:*/
+	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+
+	/*End profiler*/
+        femmodel->profiler->Stop(THERMALCORE);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/cores/transient_core.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/cores/transient_core.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/cores/transient_core.cpp	(revision 27955)
@@ -0,0 +1,529 @@
+/*!\file: transient_3d_core.cpp
+ * \brief: core of the transient_3d solution
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <float.h>
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+#ifdef _HAVE_CODIPACK_
+extern CoDi_global codi_global;
+#endif
+
+/*Prototypes*/
+void transient_step(FemModel* femmodel);
+
+void transient_core(FemModel* femmodel){/*{{{*/
+
+	/*parameters: */
+	IssmDouble finaltime,dt,yts;
+	bool       iscontrol,isautodiff;
+	int        timestepping;
+	int        output_frequency,checkpoint_frequency;
+	int        amr_frequency;
+	char     **requested_outputs = NULL;
+
+	/*intermediary: */
+	int        step;
+	IssmDouble time;
+
+	/*first, figure out if there was a check point, if so, do a reset of the FemModel* femmodel structure. */
+	femmodel->parameters->FindParam(&checkpoint_frequency,SettingsCheckpointFrequencyEnum);
+	if(checkpoint_frequency) femmodel->Restart();
+
+	/*then recover parameters common to all solutions*/
+	femmodel->parameters->FindParam(&step,StepEnum);
+	femmodel->parameters->FindParam(&time,TimeEnum);
+	femmodel->parameters->FindParam(&finaltime,TimesteppingFinalTimeEnum);
+	femmodel->parameters->FindParam(&yts,ConstantsYtsEnum);
+	femmodel->parameters->FindParam(&output_frequency,SettingsOutputFrequencyEnum);
+	femmodel->parameters->FindParam(&timestepping,TimesteppingTypeEnum);
+	femmodel->parameters->FindParam(&amr_frequency,TransientAmrFrequencyEnum);
+	femmodel->parameters->FindParam(&iscontrol,InversionIscontrolEnum);
+	femmodel->parameters->FindParam(&isautodiff,AutodiffIsautodiffEnum);
+
+	/*call modules that are not dependent on time stepping:*/
+	transient_precore(femmodel);
+
+	while(time < finaltime - (yts*DBL_EPSILON)){ //make sure we run up to finaltime.
+
+		/*Time Increment*/
+		switch(timestepping){
+			case AdaptiveTimesteppingEnum:
+				femmodel->TimeAdaptx(&dt);
+				if(time+dt>finaltime) dt=finaltime-time;
+				femmodel->parameters->SetParam(dt,TimesteppingTimeStepEnum);
+				break;
+			case FixedTimesteppingEnum:
+				femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+				break;
+			default:
+				_error_("Time stepping \""<<EnumToStringx(timestepping)<<"\" not supported yet");
+		}
+		step+=1;
+		time+=dt;
+		femmodel->parameters->SetParam(time,TimeEnum);
+		femmodel->parameters->SetParam(step,StepEnum);
+
+		if(VerboseSolution()){
+			_printf0_("iteration " << step << "/" << ceil((finaltime-time)/dt)+step << \
+					"  time [yr]: " <<std::fixed<<setprecision(2)<< time/yts << " (time step: " << dt/yts << ")\n");
+		}
+		bool save_results=false;
+		if(step%output_frequency==0 || (time >= finaltime - (yts*DBL_EPSILON)) || step==1) save_results=true;
+		femmodel->parameters->SetParam(save_results,SaveResultsEnum);
+
+		/*Run transient step!*/
+		transient_step(femmodel);
+
+		/*unload results*/
+		if(save_results){
+			if(VerboseSolution()) _printf0_("   saving temporary results\n");
+			OutputResultsx(femmodel);
+		}
+
+		if(checkpoint_frequency && (step%checkpoint_frequency==0)){
+			if(VerboseSolution()) _printf0_("   checkpointing model \n");
+			femmodel->CheckPoint();
+		}
+
+		/*Adaptive mesh refinement*/
+		if(amr_frequency){
+
+#if !defined(_HAVE_AD_)
+			if(save_results) femmodel->WriteMeshInResults();
+			if(step%amr_frequency==0 && time<finaltime){
+				if(VerboseSolution()) _printf0_("   refining mesh\n");
+				femmodel->ReMesh();//Do not refine the last step
+			}
+
+#else
+			_error_("AMR not suppored with AD");
+#endif
+		}
+
+		if(iscontrol && isautodiff){
+			/*Go through our dependent variables, and compute the response:*/
+			DataSet* dependent_objects=((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value;
+			for(Object* & object:dependent_objects->objects){
+				DependentObject* dep=(DependentObject*)object;
+				dep->RecordResponsex(femmodel);
+			}
+		}
+	}
+
+	if(!iscontrol || !isautodiff) femmodel->RequestedDependentsx();
+}/*}}}*/
+void transient_step(FemModel* femmodel){/*{{{*/
+
+	/*parameters: */
+	bool isstressbalance,ismasstransport,isage,isoceantransport,issmb,isthermal,isgroundingline,isesa,issampling;
+	bool isslc,ismovingfront,isdamageevolution,ishydrology,isstochasticforcing,save_results;
+	bool isdebris;
+	int  step,sb_coupling_frequency,isoceancoupling;
+	int  domaintype,numoutputs;
+
+	/*then recover parameters common to all solutions*/
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&step,StepEnum);
+	femmodel->parameters->FindParam(&sb_coupling_frequency,SettingsSbCouplingFrequencyEnum);
+	femmodel->parameters->FindParam(&isstressbalance,TransientIsstressbalanceEnum);
+	femmodel->parameters->FindParam(&ismasstransport,TransientIsmasstransportEnum);
+	femmodel->parameters->FindParam(&isage,TransientIsageEnum);
+	femmodel->parameters->FindParam(&isoceantransport,TransientIsoceantransportEnum);
+	femmodel->parameters->FindParam(&issmb,TransientIssmbEnum);
+	femmodel->parameters->FindParam(&isthermal,TransientIsthermalEnum);
+	femmodel->parameters->FindParam(&isesa,TransientIsesaEnum);
+	femmodel->parameters->FindParam(&isslc,TransientIsslcEnum);
+	femmodel->parameters->FindParam(&isgroundingline,TransientIsgroundinglineEnum);
+	femmodel->parameters->FindParam(&ismovingfront,TransientIsmovingfrontEnum);
+	femmodel->parameters->FindParam(&isoceancoupling,TransientIsoceancouplingEnum);
+	femmodel->parameters->FindParam(&isdamageevolution,TransientIsdamageevolutionEnum);
+	femmodel->parameters->FindParam(&ishydrology,TransientIshydrologyEnum);
+	femmodel->parameters->FindParam(&isdebris,TransientIsdebrisEnum);
+	femmodel->parameters->FindParam(&issampling,TransientIssamplingEnum);
+	femmodel->parameters->FindParam(&numoutputs,TransientNumRequestedOutputsEnum);
+	femmodel->parameters->FindParam(&isstochasticforcing,StochasticForcingIsStochasticForcingEnum);
+
+	if(isstochasticforcing) StochasticForcingx(femmodel);
+
+	if(isthermal && domaintype==Domain3DEnum){
+		if(issmb){
+			bool isenthalpy;
+			int  smb_model;
+			femmodel->parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);
+			femmodel->parameters->FindParam(&smb_model,SmbEnum);
+			if(isenthalpy){
+				if(smb_model==SMBpddEnum || smb_model==SMBd18opddEnum || smb_model==SMBpddSicopolisEnum){
+					femmodel->SetCurrentConfiguration(EnthalpyAnalysisEnum);
+					ResetBoundaryConditions(femmodel,EnthalpyAnalysisEnum);
+				}
+			}
+			else{
+				if(smb_model==SMBpddEnum || smb_model==SMBd18opddEnum || smb_model==SMBpddSicopolisEnum){
+					femmodel->SetCurrentConfiguration(ThermalAnalysisEnum);
+					ResetBoundaryConditions(femmodel,ThermalAnalysisEnum);
+				}
+			}
+		}
+		thermal_core(femmodel);
+	}
+
+	/* Using Hydrology dc  coupled we need to compute smb in the hydrology inner time loop*/
+	if(issmb) smb_core(femmodel);
+
+	if(ishydrology) hydrology_core(femmodel);
+
+	if(isstressbalance && (step%sb_coupling_frequency==0 || step==1)) stressbalance_core(femmodel);
+
+	if(isdamageevolution) damage_core(femmodel);
+
+	if(ismovingfront)	movingfront_core(femmodel);
+
+	if(isdebris) debris_core(femmodel);
+
+#if defined(_HAVE_OCEAN_)
+	if(isoceancoupling) {
+		/*First calculate thickness change without melt (dynamic thinning) to send to ocean
+		 * then receive ocean melt 
+		 * then go back to the previous geometry to continue the transient with the melt received*/
+		InputUpdateFromConstantx(femmodel,0.,BasalforcingsFloatingiceMeltingRateEnum,P1Enum);
+		masstransport_core(femmodel);
+		OceanExchangeDatax(femmodel,false);
+		InputDuplicatex(femmodel,ThicknessOldEnum,ThicknessEnum);
+		InputDuplicatex(femmodel,BaseOldEnum,BaseEnum);
+		InputDuplicatex(femmodel,SurfaceOldEnum,SurfaceEnum);
+	}
+#endif
+
+	/* from here on, prepare geometry for next time step*/
+
+	if(ismasstransport){
+		bmb_core(femmodel);
+		masstransport_core(femmodel);
+	}
+
+	if(isoceantransport) oceantransport_core(femmodel);
+
+	if(isgroundingline) groundingline_core(femmodel);
+
+	/*Update mesh vertices now that we have changed the geometry*/
+	if(ismasstransport || isgroundingline) femmodel->UpdateVertexPositionsx();
+
+	if(isesa) esa_core(femmodel);
+
+	/*Sea level change: */
+	if(isslc){
+#ifdef _HAVE_SEALEVELCHANGE_
+		sealevelchange_core(femmodel);
+#else
+		_error_("Compiled with SeaLevelChange capability");
+#endif
+	}
+
+	/*Sampling: */
+	if(issampling) sampling_core(femmodel);
+
+	/*Any requested output that needs to be saved?*/
+	if(numoutputs){
+		char **requested_outputs = NULL;
+		femmodel->parameters->FindParam(&requested_outputs,&numoutputs,TransientRequestedOutputsEnum);
+
+		if(VerboseSolution()) _printf0_("   computing transient requested outputs\n");
+		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs,save_results);
+
+		/*Free resources:*/
+		for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);
+	}
+}/*}}}*/
+void transient_precore(FemModel* femmodel){/*{{{*/
+
+	bool       isslc;
+	int        amr_frequency,amr_restart,isoceancoupling;
+
+	femmodel->parameters->FindParam(&isoceancoupling,TransientIsoceancouplingEnum);
+	femmodel->parameters->FindParam(&amr_frequency,TransientAmrFrequencyEnum);
+	femmodel->parameters->FindParam(&isslc,TransientIsslcEnum);
+
+#if defined(_HAVE_BAMG_) && !defined(_HAVE_AD_)
+	if(amr_frequency){
+		femmodel->parameters->FindParam(&amr_restart,AmrRestartEnum);
+		if(amr_restart) femmodel->ReMesh();
+	}
+#endif
+
+#if defined(_HAVE_OCEAN_ )
+	if(isoceancoupling) OceanExchangeDatax(femmodel,true);
+#endif
+
+#if defined(_HAVE_SEALEVELCHANGE_)
+	if(isslc) sealevelchange_initialgeometry(femmodel);
+#endif
+}/*}}}*/
+
+#ifdef _HAVE_CODIPACK_
+double transient_ad(FemModel* femmodel, double* G, double* Jlist){/*{{{*/
+
+	/*parameters: */
+	IssmDouble finaltime,dt,yts,time;
+	int       isoceancoupling;
+	int       step,timestepping;
+	int       checkpoint_frequency,num_responses;
+	int		 *M = NULL;
+	int		 *control_enum;
+
+	/*Get rank*/
+	int my_rank = IssmComm::GetRank();
+
+	/*then recover parameters common to all solutions*/
+	femmodel->parameters->FindParam(&step,StepEnum);
+	femmodel->parameters->FindParam(&time,TimeEnum);
+	femmodel->parameters->FindParam(&finaltime,TimesteppingFinalTimeEnum);
+	femmodel->parameters->FindParam(&yts,ConstantsYtsEnum);
+	femmodel->parameters->FindParam(&timestepping,TimesteppingTypeEnum);
+	femmodel->parameters->FindParam(&num_responses,InversionNumCostFunctionsEnum);
+	femmodel->parameters->FindParam(&checkpoint_frequency,SettingsCheckpointFrequencyEnum); _assert_(checkpoint_frequency>0);
+	femmodel->parameters->FindParam(&control_enum,NULL,InversionControlParametersEnum);
+	femmodel->parameters->FindParam(&M,NULL,ControlInputSizeMEnum);
+
+	std::vector<IssmDouble> time_all;
+	std::vector<IssmDouble> dt_all;
+	std::vector<int>        checkpoint_steps;
+	int                     Ysize = 0;
+	CountDoublesFunctor   *hdl_countdoubles = NULL;
+	RegisterInputFunctor  *hdl_regin        = NULL;
+	RegisterOutputFunctor *hdl_regout       = NULL;
+	SetAdjointFunctor     *hdl_setadjoint   = NULL;
+
+	while(time < finaltime - (yts*DBL_EPSILON)){ //make sure we run up to finaltime.
+
+		/*Time Increment*/
+		switch(timestepping){
+			case AdaptiveTimesteppingEnum:
+				femmodel->TimeAdaptx(&dt);
+				if(time+dt>finaltime) dt=finaltime-time;
+				femmodel->parameters->SetParam(dt,TimesteppingTimeStepEnum);
+				break;
+			case FixedTimesteppingEnum:
+				femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+				break;
+			default:
+				_error_("Time stepping \""<<EnumToStringx(timestepping)<<"\" not supported yet");
+		}
+		step+=1;
+		time+=dt;
+		femmodel->parameters->SetParam(time,TimeEnum);
+		femmodel->parameters->SetParam(step,StepEnum);
+		femmodel->parameters->SetParam(false,SaveResultsEnum);
+		time_all.push_back(time);
+		dt_all.push_back(dt);
+
+		if(VerboseSolution()){
+			_printf0_("iteration " << step << "/" << ceil((finaltime-time)/dt)+step << \
+					"  time [yr]: " <<std::fixed<<setprecision(2)<< time/yts << " (time step: " << dt/yts << ")\n");
+		}
+
+		/*Store Model State at the beginning of the step*/
+		if(step%checkpoint_frequency==0 || step==1){
+			if(VerboseSolution()) _printf0_("   checkpointing model (step: "<<step<<")\n");
+			femmodel->CheckPointAD(step);
+			checkpoint_steps.push_back(step);
+		}
+
+		/*Run transient step!*/
+		transient_step(femmodel);
+
+		/*Go through our dependent variables, and compute the response:*/
+		DataSet* dependent_objects=((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value;
+		for(Object* & object:dependent_objects->objects){
+			DependentObject* dep=(DependentObject*)object;
+			dep->RecordResponsex(femmodel);
+		}
+
+		if(VerboseSolution()) _printf0_("   counting number of active variables\n");
+		hdl_countdoubles = new CountDoublesFunctor();
+		femmodel->Marshall(hdl_countdoubles);
+		if(hdl_countdoubles->DoubleCount()>Ysize) Ysize= hdl_countdoubles->DoubleCount();
+		delete hdl_countdoubles;
+	}
+
+	int finalstep = step;
+	if(VerboseSolution()) _printf0_("   done with initial complete transient\n");
+
+	/*__________________________________________________________________________________*/
+
+	/*Get X (control)*/
+	IssmDouble *X = NULL; int Xsize;
+	GetVectorFromControlInputsx(&X,&Xsize,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"value");
+
+	/*Initialize model state adjoint (Yb)*/
+	double *Yb  = xNewZeroInit<double>(Ysize);
+	int    *Yin = xNewZeroInit<int>(Ysize);
+
+	/*Get final Ysize*/
+	hdl_countdoubles = new CountDoublesFunctor();
+	femmodel->Marshall(hdl_countdoubles);
+	int Ysize_i= hdl_countdoubles->DoubleCount();
+	delete hdl_countdoubles;
+
+	/*Start tracing*/
+#if _CODIPACK_MAJOR_==2
+	auto& tape_codi = IssmDouble::getTape();
+#elif _CODIPACK_MAJOR_==1
+	auto& tape_codi = IssmDouble::getGlobalTape();
+#else
+#error "_CODIPACK_MAJOR_ not supported"
+#endif
+	tape_codi.setActive();
+
+	/*Reverse dependent (f)*/
+	hdl_regin = new RegisterInputFunctor(Yin,Ysize);
+	femmodel->Marshall(hdl_regin);
+	delete hdl_regin;
+	if(my_rank==0) for(int i=0; i < Xsize; i++) tape_codi.registerInput(X[i]);
+	SetControlInputsFromVectorx(femmodel,X);
+	
+	IssmDouble J     = 0.;
+	int        count = 0;
+	DataSet* dependent_objects=((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value;
+	for(Object* & object:dependent_objects->objects){
+		DependentObject* dep=(DependentObject*)object;
+		IssmDouble       output_value = dep->GetValue();
+
+		J += output_value;
+
+		/*Keep track of output for printing*/
+		Jlist[count] = output_value.getValue();
+		count++;
+	}
+	Jlist[count] = J.getValue();
+	_assert_(count == num_responses);
+
+	#if defined(_HAVE_CODIPACK_)
+	tape_codi.registerOutput(J);
+	#if _CODIPACK_MAJOR_==2
+	codi_global.output_indices.push_back(J.getIdentifier());
+	#elif _CODIPACK_MAJOR_==1
+	codi_global.output_indices.push_back(J.getGradientData());
+	#else
+	#error "_CODIPACK_MAJOR_ not supported"
+	#endif
+	#endif
+
+	tape_codi.setPassive();
+
+	if(VerboseAutodiff())_printf0_("   CoDiPack fos_reverse\n");
+	if(my_rank==0) tape_codi.setGradient(codi_global.output_indices[0],1.0);
+	tape_codi.evaluate();
+
+	/*Initialize Xb and Yb*/
+	double *Xb  = xNewZeroInit<double>(Xsize);
+	for(int i=0;i<Xsize  ;i++) Xb[i] += X[i].gradient();
+	for(int i=0;i<Ysize_i;i++) Yb[i]  = tape_codi.gradient(Yin[i]);
+
+	/*reverse loop for transient step (G)*/
+	for(vector<int>::reverse_iterator iter = checkpoint_steps.rbegin(); iter != checkpoint_steps.rend(); iter++){
+
+		/*Restore model from this step*/
+		int reverse_step = *iter;
+		tape_codi.reset();
+		femmodel->RestartAD(reverse_step);
+		tape_codi.setActive();
+
+		/*Get new Ysize*/
+		hdl_countdoubles = new CountDoublesFunctor();
+		femmodel->Marshall(hdl_countdoubles);
+		int Ysize_i= hdl_countdoubles->DoubleCount();
+		delete hdl_countdoubles;
+
+		/*We need to store the CoDiPack identifier here, since y is overwritten.*/
+		hdl_regin = new RegisterInputFunctor(Yin,Ysize);
+		femmodel->Marshall(hdl_regin);
+		delete hdl_regin;
+
+		/*Tell codipack that X is the independent*/
+		for(int i=0; i<Xsize; i++) tape_codi.registerInput(X[i]);
+		SetControlInputsFromVectorx(femmodel,X);
+
+		/*Get New state*/
+		for(int ii=0;ii<checkpoint_frequency;ii++){
+			int        thisstep = reverse_step+ii;
+			IssmDouble thistime = time_all[reverse_step+ii-1];
+			IssmDouble thisdt   = dt_all[reverse_step+ii-1];
+			femmodel->parameters->SetParam(thistime,TimeEnum);
+			femmodel->parameters->SetParam(thisstep,StepEnum);
+			femmodel->parameters->SetParam(thisdt,TimesteppingTimeStepEnum);
+
+			if(VerboseSolution()){
+				_printf0_("step "<<thisstep<<" ("<<ii+1<<"/"<<checkpoint_frequency<<") time [yr]: "\
+						<<std::fixed<<std::setprecision(2)<<thistime/yts<< " (time step: " << thisdt/yts << ")\n");
+			}
+
+			transient_step(femmodel);
+
+			/*Go through our dependent variables, and compute the response:*/
+			DataSet* dependent_objects=((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value;
+			for(Object* & object:dependent_objects->objects){
+				DependentObject* dep=(DependentObject*)object;
+				dep->RecordResponsex(femmodel);
+			}
+
+			/*First and last segment need special treatment*/
+			if(thisstep==finalstep) break;
+			if(reverse_step==1 && ii==checkpoint_frequency-2) break;
+		}
+
+		/*Register output*/
+		hdl_regout = new RegisterOutputFunctor();
+		femmodel->Marshall(hdl_regout);
+		delete hdl_regout;
+
+		/*stop tracing*/
+		tape_codi.setPassive();
+
+		/*Reverse transient step (G)*/
+		/* Using y_b here to seed the next reverse iteration there y_b is always overwritten*/
+		hdl_setadjoint = new SetAdjointFunctor(Yb,Ysize);
+		femmodel->Marshall(hdl_setadjoint);
+		delete hdl_setadjoint;
+
+		if(VerboseSolution()) _printf0_("computing gradient...\n");
+		tape_codi.evaluate();
+
+		/* here we access the gradient data via the stored identifiers.*/
+		for(int i=0; i<Ysize_i; i++) Yb[i]  = tape_codi.gradient(Yin[i]);
+		for(int i=0; i<Xsize;   i++) Xb[i] += X[i].gradient();
+	}
+
+	/*Clear tape*/
+	tape_codi.reset();
+
+	/*Broadcast gradient to other ranks (make sure to sum all gradients)*/
+	ISSM_MPI_Allreduce(Xb,G,Xsize,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+	#ifdef _ISSM_DEBUG_
+	for(int i=0; i<Xsize; i++){
+		if(xIsNan(Xb[i])) _error_("Found NaN in gradient at position "<<i);
+		if(xIsInf(Xb[i])) _error_("Found Inf in gradient at position "<<i);
+	}
+	#endif
+
+	/*Cleanup and return misfit*/
+	xDelete<IssmDouble>(X);
+	xDelete<double>(Xb);
+	xDelete<double>(Yb);
+	xDelete<int>(Yin);
+	xDelete<int>(control_enum);
+	return J.getValue();
+}/*}}}*/
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/datastructures/DataSet.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/datastructures/DataSet.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/datastructures/DataSet.cpp	(revision 27955)
@@ -0,0 +1,465 @@
+/*
+ * \file DataSet.cpp
+ * \brief: Implementation of DataSet class
+ */
+
+/*Headers: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <cstring>
+#include <vector>
+#include <functional>
+#include <algorithm>
+#include <iostream>
+
+#include "../datastructures/datastructures.h"
+#include "../shared/shared.h"
+#include "../classes/classes.h"
+
+using namespace std;
+/*}}}*/
+
+/*Constructors/Destructors*/
+DataSet::DataSet(){/*{{{*/
+
+	sorted=0;
+	numsorted=0;
+	presorted=0;
+	enum_type=-1;
+	sorted_ids=NULL;
+	id_offsets=NULL;
+
+}
+/*}}}*/
+DataSet::DataSet(int dataset_enum){/*{{{*/
+	enum_type=dataset_enum;
+
+	sorted=0;
+	numsorted=0;
+	presorted=0;
+	sorted_ids=NULL;
+	id_offsets=NULL;
+
+}
+/*}}}*/
+DataSet* DataSet::Copy(void){/*{{{*/
+
+	vector<Object*>::iterator obj;
+	Object* object_copy=NULL;
+
+	DataSet* copy=new DataSet(this->enum_type);
+
+	copy->sorted=this->sorted;
+	copy->numsorted=this->numsorted;
+	copy->presorted=this->presorted;
+
+	/*Now we need to deep copy the objects: */
+	for ( obj=this->objects.begin() ; obj < this->objects.end(); obj++ ){
+		/*Call copy on object: */
+		object_copy = (*obj)->copy();
+		copy->AddObject(object_copy);
+	}
+
+	/*Build id_offsets and sorted_ids*/
+	int objsize = this->numsorted;
+	if(this->sorted && objsize>0 && this->id_offsets){	
+		/*Allocate new ids*/
+		copy->id_offsets=xNew<int>(objsize);
+		xMemCpy<int>(copy->id_offsets,this->id_offsets,objsize);
+	}
+	else copy->id_offsets=NULL;
+	if(this->sorted && objsize>0 && this->sorted_ids){
+		/*Allocate new ids*/
+		copy->sorted_ids=xNew<int>(objsize);
+		xMemCpy<int>(copy->sorted_ids,this->sorted_ids,objsize);
+	}
+	else copy->sorted_ids=NULL;
+
+	return copy;
+}
+/*}}}*/
+DataSet::~DataSet(){/*{{{*/
+	clear();
+	xDelete<int>(sorted_ids);
+	xDelete<int>(id_offsets);
+}
+/*}}}*/
+
+/*Specific methods*/
+void  DataSet::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
+
+	vector<Object*>::iterator obj;
+	int obj_enum=0;
+	int i;
+
+	int obj_size=0;
+	if(marshallhandle->OperationNumber()!=MARSHALLING_LOAD){
+		obj_size=objects.size();
+	}
+	else{
+		/*FIXME: if the assert below does not go off, then remove else{}*/
+		_assert_(this->Size()==0);
+		//clear();
+	}
+
+	int object_enum = DataSetEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->enum_type);
+	marshallhandle->call(this->sorted);
+	marshallhandle->call(this->presorted);
+	marshallhandle->call(this->numsorted);
+
+	/*Now branch according to direction of marshalling: */
+	if(marshallhandle->OperationNumber()!=MARSHALLING_LOAD){
+		if(!(this->sorted && numsorted>0 && this->id_offsets)){
+			this->sorted_ids=NULL;
+			this->id_offsets=NULL;
+		}
+		marshallhandle->call(this->sorted_ids,numsorted);
+		marshallhandle->call(this->id_offsets,numsorted);
+		marshallhandle->call(obj_size);
+
+		/*Go through our objects, and marshall them into the buffer: */
+		for( obj=this->objects.begin() ; obj < this->objects.end(); obj++ ){
+			obj_enum=(*obj)->ObjectEnum();
+			marshallhandle->call(obj_enum);
+			(*obj)->Marshall(marshallhandle);
+		}
+	}
+	else{
+
+		marshallhandle->call(this->sorted_ids,numsorted);
+		marshallhandle->call(this->id_offsets,numsorted);
+		if (!(this->sorted && numsorted>0)){
+			sorted_ids=NULL;
+			id_offsets=NULL;
+		}
+		marshallhandle->call(obj_size);
+
+		/*This is the heart of the demashalling method. We have a buffer coming
+		  in, and we are supposed to create a dataset out of it. No such thing
+		  as class orientation for buffers, we need to key off the enum of each
+		  object stored in the buffer. */
+		for(i=0;i<obj_size;i++){
+
+			/*Recover enum of object first: */
+			marshallhandle->call(obj_enum); 
+
+			/*Giant case statement to spin-up the right object, and demarshall into it the information 
+			 *stored in the buffer: */
+			if(obj_enum==NodeEnum){
+				Node* node=new Node();
+				node->Marshall(marshallhandle);
+				this->AddObject(node);
+			}
+			else if(obj_enum==VertexEnum){
+				Vertex* vertex=new Vertex();
+				vertex->Marshall(marshallhandle);
+				this->AddObject(vertex);
+			}
+			else if(obj_enum==MaticeEnum){
+				Matice* matice=new Matice();
+				matice->Marshall(marshallhandle);
+				this->AddObject(matice);
+			}
+			else if(obj_enum==MatestarEnum){
+				Matestar* matestar=new Matestar();
+				matestar->Marshall(marshallhandle);
+				this->AddObject(matestar);
+			}
+			else if(obj_enum==SpcStaticEnum){
+				SpcStatic* spcstatic=new SpcStatic();
+				spcstatic->Marshall(marshallhandle);
+				this->AddObject(spcstatic);
+			}
+			else if(obj_enum==SpcDynamicEnum){
+				SpcDynamic* spcdynamic=new SpcDynamic();
+				spcdynamic->Marshall(marshallhandle);
+				this->AddObject(spcdynamic);
+			}
+			else if(obj_enum==SpcTransientEnum){
+				SpcTransient* spctransient=new SpcTransient();
+				spctransient->Marshall(marshallhandle);
+				this->AddObject(spctransient);
+			}
+			else if(obj_enum==TriaEnum){
+				Tria* tria=new Tria();
+				tria->Marshall(marshallhandle);
+				this->AddObject(tria);
+			}
+			else if(obj_enum==PentaEnum){
+				Penta* penta=new Penta();
+				penta->Marshall(marshallhandle);
+				this->AddObject(penta);
+			}
+			else if(obj_enum==TetraEnum){
+				Tetra* tetra=new Tetra();
+				tetra->Marshall(marshallhandle);
+				this->AddObject(tetra);
+			}
+			else if(obj_enum==SegEnum){
+				Seg* seg=new Seg();
+				seg->Marshall(marshallhandle);
+				this->AddObject(seg);
+			}
+			else if(obj_enum==RiftfrontEnum){
+				Riftfront* rift=new Riftfront();
+				rift->Marshall(marshallhandle);
+				this->AddObject(rift);
+			}
+			else if(obj_enum==NumericalfluxEnum){
+				Numericalflux* numflux=new Numericalflux();
+				numflux->Marshall(marshallhandle);
+				this->AddObject(numflux);
+			}
+			else if(obj_enum==PengridEnum){
+				Pengrid* pengrid=new Pengrid();
+				pengrid->Marshall(marshallhandle);
+				this->AddObject(pengrid);
+			}
+			else if(obj_enum==PenpairEnum){
+				Penpair* penpair=new Penpair();
+				penpair->Marshall(marshallhandle);
+				this->AddObject(penpair);
+			}
+			else if(obj_enum==DoubleExternalResultEnum){
+				GenericExternalResult<double>* result=new GenericExternalResult<double>();
+				result->Marshall(marshallhandle);
+				this->AddObject(result);
+			}
+			else if(obj_enum==DependentObjectEnum){
+				DependentObject* dep=new DependentObject();
+				dep->Marshall(marshallhandle);
+				this->AddObject(dep);
+			}
+			else if(obj_enum==GenericExternalResultEnum){
+				_printf_("   WARNING: Could not load GenericExternalResult, need overload\n");
+			}
+			else if(obj_enum==IntExternalResultEnum){
+				GenericExternalResult<int>* res=new GenericExternalResult<int>();
+				res->Marshall(marshallhandle);
+				this->AddObject(res);
+			}
+			else if(obj_enum==DoubleExternalResultEnum){
+				GenericExternalResult<double>* res=new GenericExternalResult<double>();
+				res->Marshall(marshallhandle);
+				this->AddObject(res);
+			}
+			else if(obj_enum==CflevelsetmisfitEnum){
+				Cflevelsetmisfit* Cflevelset=new Cflevelsetmisfit();
+				Cflevelset->Marshall(marshallhandle);
+				this->AddObject(Cflevelset);
+			}
+			else if(obj_enum==CfsurfacesquaretransientEnum){
+				Cfsurfacesquaretransient* cfsurf=new Cfsurfacesquaretransient();
+				cfsurf->Marshall(marshallhandle);
+				this->AddObject(cfsurf);
+			}
+			else if(obj_enum==CfsurfacesquareEnum){
+				Cfsurfacesquare* cfsurf=new Cfsurfacesquare();
+				cfsurf->Marshall(marshallhandle);
+				this->AddObject(cfsurf);
+			}
+			else if(obj_enum==CfsurfacelogvelEnum){
+				Cfsurfacelogvel* cfsurf=new Cfsurfacelogvel();
+				cfsurf->Marshall(marshallhandle);
+				this->AddObject(cfsurf);
+			}
+			else if(obj_enum==CfdragcoeffabsgradEnum){
+				Cfdragcoeffabsgrad* cfdragcoeff=new Cfdragcoeffabsgrad();
+				cfdragcoeff->Marshall(marshallhandle);
+				this->AddObject(cfdragcoeff);
+			}
+			else if(obj_enum==CfdragcoeffabsgradtransientEnum){
+				Cfdragcoeffabsgradtransient* cfdragcoeff=new Cfdragcoeffabsgradtransient();
+				cfdragcoeff->Marshall(marshallhandle);
+				this->AddObject(cfdragcoeff);
+			}
+			else if(obj_enum==CfrheologybbarabsgradEnum){
+				Cfrheologybbarabsgrad* cfrheologybbarabsgrad=new Cfrheologybbarabsgrad();
+				cfrheologybbarabsgrad->Marshall(marshallhandle);
+				this->AddObject(cfrheologybbarabsgrad);
+			}
+			else if(obj_enum==NodalvalueEnum){
+				Nodalvalue* nodalvalue=new Nodalvalue();
+				nodalvalue->Marshall(marshallhandle);
+				this->AddObject(nodalvalue);
+			}
+			else if(obj_enum==MassfluxatgateEnum){
+				Massfluxatgate<IssmDouble>* massfluxgate=new Massfluxatgate<IssmDouble>();
+				massfluxgate->Marshall(marshallhandle);
+				this->AddObject(massfluxgate);
+			}
+			else _error_("could not recognize enum type: " << obj_enum << ": " << EnumToStringx(obj_enum) ); 
+		}
+	}
+}
+/*}}}*/
+int   DataSet::AddObject(Object* object){/*{{{*/
+
+	_assert_(this);
+	objects.push_back(object);
+
+	return 1;
+}
+/*}}}*/
+void  DataSet::clear(){/*{{{*/
+
+/*  use reverse_iterator for efficiency in matlab memory manager
+	(keeping old code in case it needs to revert back)  */
+
+//	vector<Object*>::iterator object;
+	vector<Object*>::reverse_iterator object;
+
+//	for ( object=objects.begin() ; object < objects.end(); object++ ){
+//		delete (*object);
+//	}
+	for ( object=objects.rbegin() ; object < objects.rend(); object++ ){
+		delete (*object);
+	}
+	objects.clear();
+}
+/*}}}*/
+int   DataSet::DeleteObject(Object* object){/*{{{*/
+
+	vector<Object*>::iterator iterator;
+
+	if(object){
+		iterator = find(objects.begin(), objects.end(),object);
+		delete *iterator;
+		objects.erase(iterator);
+	}
+
+	return 1;
+
+}
+/*}}}*/
+void  DataSet::DeepEcho(){/*{{{*/
+
+	vector<Object*>::iterator object;
+
+	_assert_(this);
+
+	_printf0_("DataSet echo: " << objects.size() << " objects\n");
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		/*Call deep echo on object: */
+		(*object)->DeepEcho();
+
+	}
+}
+/*}}}*/
+void  DataSet::Echo(){/*{{{*/
+
+	vector<Object*>::iterator object;
+
+	_assert_(this);
+
+	_printf0_("DataSet echo: " << objects.size() << " objects\n");
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		/*Call echo on object: */
+		(*object)->Echo();
+
+	}
+	return;
+}
+/*}}}*/
+int   DataSet::GetEnum(){/*{{{*/
+	return enum_type;
+}
+/*}}}*/
+int   DataSet::GetEnum(int offset){/*{{{*/
+
+	return objects[offset]->ObjectEnum();
+
+}
+/*}}}*/
+Object* DataSet::GetObjectByOffset(int offset){/*{{{*/
+
+	if(this->Size()<=offset) this->Echo();
+
+	/*Check index in debugging mode*/
+	_assert_(this!=NULL);
+	_assert_(offset>=0);
+	_assert_(offset<this->Size());
+
+	return objects[offset];
+
+}
+/*}}}*/
+Object* DataSet::GetObjectById(int* poffset,int eid){/*{{{*/
+
+	int id_offset;
+	int offset;
+
+	_assert_(this);
+	if(!sorted || objects.size()>numsorted)_error_("trying to binary search on a non-sorted dataset!");
+
+	/*Carry out a binary search on the sorted_ids: */
+	if(!binary_search(&id_offset,eid,sorted_ids,objects.size())){
+		_error_("could not find object with id " << eid << " in DataSet " << EnumToStringx(enum_type));
+	}
+
+	/*Convert  the id offset into sorted offset: */
+	offset=id_offsets[id_offset];
+
+	/*Assign output pointers if requested:*/
+	if(poffset)*poffset=offset;
+
+	/*Return object at offset position in objects :*/
+	return objects[offset];
+}
+/*}}}*/
+void  DataSet::Presort(){/*{{{*/
+
+	/*vector of objects is already sorted, just allocate the sorted ids and their
+	 * offsets:*/
+	if(objects.size()){
+
+		/*Delete existing ids*/
+		if(sorted_ids) xDelete<int>(sorted_ids);
+		if(id_offsets) xDelete<int>(id_offsets);
+
+		/*Allocate new ids*/
+		sorted_ids=xNew<int>(objects.size());
+		id_offsets=xNew<int>(objects.size());
+
+		/*Build id_offsets and sorted_ids*/
+		for(int i=0;i<objects.size();i++){
+			id_offsets[i]=i;
+			sorted_ids[i]=objects[i]->Id();
+
+			/*In debugging mode, make sure Ids are ACTUALLY sorted...*/
+			#ifdef _ISSM_DEBUG_
+			//if(i>0) _assert_(sorted_ids[i]>sorted_ids[i-1]);
+			#endif
+		}
+	}
+
+	/*set sorted flag: */
+	numsorted=objects.size();
+	sorted=1;
+}
+/*}}}*/
+int   DataSet::Size(void){/*{{{*/
+	_assert_(this!=NULL);
+
+	return objects.size();
+}
+/*}}}*/
+void  DataSet::Sort(){/*{{{*/
+
+	/*Only sort if we are not already sorted: */
+	if(!sorted){
+		_error_("not implemented yet!");
+	}
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/datastructures/DataSet.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/datastructures/DataSet.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/datastructures/DataSet.h	(revision 27955)
@@ -0,0 +1,56 @@
+#ifndef _CONTAINER_DATASET_H_
+#define _CONTAINER_DATASET_H_
+
+#include <vector>
+#include <cstring>
+
+/*forward declarations */
+class Object;
+class MarshallHandle;
+
+/*! \brief Declaration of DataSet class
+ *
+ * Declaration of DataSet class.  A DataSet is a Container of Objects.
+ */
+class DataSet{
+
+	public: 
+
+		/*internals: */
+		std::vector<Object*> objects;
+
+		/*type of dataset: */
+		int             enum_type;
+
+		/*sorting: */
+		int             sorted;
+		int             presorted;
+		int             numsorted;
+		int*            sorted_ids;
+		int*            id_offsets;
+
+		/*constructors, destructors*/
+		DataSet();
+		DataSet(int enum_type);
+		~DataSet();
+		void  Marshall(MarshallHandle* marshallhandle);
+
+		/*management*/
+		int      GetEnum();
+		int      GetEnum(int offset);
+		void     Echo();
+		void     DeepEcho();
+		int      AddObject(Object *object);
+		int      DeleteObject(int id);
+		int      Size();
+		void     clear();
+		Object  *GetObjectByOffset(int  offset);
+		Object  *GetObjectById(int *poffset,int eid);
+		void     Presort();
+		void     Sort();
+		DataSet *Copy(void);
+		int      DeleteObject(Object *object);
+
+};
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/datastructures/Object.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/datastructures/Object.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/datastructures/Object.h	(revision 27955)
@@ -0,0 +1,26 @@
+/*
+ * Object.h:
+ * \brief prototype for abstract Object class
+ * \file Object.h
+ * This prototype describes the Object class. This is an abstract class, parent 
+ * to any other objects (Quad, Tria, Node , etc ...), that can be included in a 
+ * DataSet.
+ */
+
+#ifndef _OBJECT_H_
+#define _OBJECT_H_
+
+class Object {
+
+	public: 
+
+		virtual       ~Object(){};
+		virtual void  Echo()=0;
+		virtual void  DeepEcho()=0;
+		virtual int   Id()=0;
+		virtual int   ObjectEnum()=0;
+		virtual Object* copy()=0;
+		virtual void Marshall(MarshallHandle* marshallhandle)=0;
+
+};
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/datastructures/datastructures.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/datastructures/datastructures.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/datastructures/datastructures.h	(revision 27955)
@@ -0,0 +1,11 @@
+/* \file datastructures.h
+ * \brief: header file for all datastructures  routines.
+ */
+
+#ifndef _DATA_STRUCTURES_H_
+#define _DATA_STRUCTURES_H_
+
+#include "./DataSet.h"
+#include "./Object.h"
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KMLFileReadUtils.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KMLFileReadUtils.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KMLFileReadUtils.cpp	(revision 27955)
@@ -0,0 +1,711 @@
+/*!\file KMLFileUtils.cpp
+ * \brief: utilities for kml file reading.
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KMLFileReadUtils.h"
+#include "./KML_Object.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+char* KMLFileToken(FILE* fid,/*{{{*/
+				   int* pncom=NULL,char*** ppcom=NULL){
+
+/*  get the next token (tag or field) in the file  */
+
+	bool    inew=1,itag=0,ifield=0;
+	int     c;
+	int     ibuf=0,buflen=1024,bufblk=1024;
+	char    *buffer=NULL,*bufferc=NULL,**pcom2=NULL;
+
+	buffer=xNew<char>(buflen);
+	buffer[0]='\0';
+
+/*  read kml file character-by-character  */
+
+//  note that fgets includes newline
+//	fgets(buffer,buflen,fid);
+
+	while ((c=getc(fid)) != EOF) {
+		/*  ignore leading blanks  */
+		if (inew && isspace(c))
+			continue;
+
+		/*  distinguish between tag or field  */
+		if (!itag && !ifield) {
+
+			/*  distinguish between tag or comment  */
+			if (c == '<') {
+				ungetc(c,fid);
+				if (!(bufferc=KMLFileTokenComment(fid))) {
+					c=getc(fid);
+					itag=1;
+				}
+				else {
+					if (pncom && ppcom) {
+						(*pncom)++;
+						pcom2=xNew<char*>(*pncom);
+						memcpy(pcom2,*ppcom,(*pncom-1)*sizeof(char*));
+						xDelete<char*>(*ppcom);
+						*ppcom=pcom2;
+						pcom2=NULL;
+//						*ppcom=(char **) xrealloc(*ppcom,*pncom*sizeof(char*));
+						(*ppcom)[*pncom-1]=bufferc;
+					}
+					else
+						xDelete<char>(bufferc);
+					inew=1;
+					continue;
+				}
+			}
+			else
+				ifield=1;
+			inew=0;
+			KMLFileTokenBuffer(&buffer,&ibuf,&buflen,
+							   c,
+							   bufblk);
+		}
+
+		/*  accumulate tag, not including newlines  */
+		else if (itag) {
+			if (c != '\n') {
+				inew=0;
+				KMLFileTokenBuffer(&buffer,&ibuf,&buflen,
+								   c,
+								   bufblk);
+				if (c == '>')
+					break;
+			}
+			else
+				inew=1;
+		}
+
+		/*  accumulate field, including newlines  */
+		else if (ifield) {
+			/*  distinguish between another tag or comment  */
+			if (c == '<') {
+				ungetc(c,fid);
+				if (!(bufferc=KMLFileTokenComment(fid)))
+					break;
+				else
+					if (pncom && ppcom) {
+						(*pncom)++;
+						pcom2=xNew<char*>(*pncom);
+						memcpy(pcom2,*ppcom,(*pncom-1)*sizeof(char*));
+						xDelete<char*>(*ppcom);
+						*ppcom=pcom2;
+						pcom2=NULL;
+//						*ppcom=(char **) xrealloc(*ppcom,*pncom*sizeof(char*));
+						(*ppcom)[*pncom-1]=bufferc;
+					}
+					else
+						xDelete<char>(bufferc);
+			}
+			else {
+				inew=0;
+				KMLFileTokenBuffer(&buffer,&ibuf,&buflen,
+								   c,
+								   bufblk);
+				if (c == '\n')
+					inew=1;
+			}
+		}
+
+	}
+
+/*  remove trailing blanks or newline  */
+
+	while (ibuf > 0)
+		if (isspace(buffer[ibuf-1]))
+			ibuf--;
+		else {
+			buffer[ibuf]='\0';
+			break;
+		}
+
+//	if      (itag)
+//		_printf0_("tag buffer (length=" << ibuf << "):\n");
+//	else if (ifield)
+//		_printf0_("field buffer (length=" << ibuf << "):\n");
+//	_printf0_(buffer << "\n");
+
+	if (!ibuf)
+		xDelete<char>(buffer);
+
+	return(buffer);
+}
+/*}}}*/
+char* KMLFileTokenComment(FILE* fid){/*{{{*/
+
+/*  check for comment in the file and read it  */
+
+	bool    inew=1;
+	int     i;
+	int     c;
+	int     ibuf=0,buflen=1024,bufblk=1024;
+	char*   buffer=NULL;
+
+	buffer=xNew<char>(buflen);
+	buffer[0]='\0';
+
+/*  read kml file character-by-character  */
+
+	while ((c=getc(fid)) != EOF) {
+		/*  ignore leading blanks  */
+		if (inew && isspace(c))
+			continue;
+
+		inew=0;
+		KMLFileTokenBuffer(&buffer,&ibuf,&buflen,
+						   c,
+						   bufblk);
+
+		/*  check for comment  */
+		if (ibuf <= 4) {
+			if ((ibuf == 1 && buffer[0] != '<') ||
+				(ibuf == 2 && buffer[1] != '!') ||
+				(ibuf == 3 && buffer[2] != '-') ||
+				(ibuf == 4 && buffer[3] != '-')) {
+				for (i=ibuf-1; i>=0; i--)
+					ungetc(buffer[i],fid);
+				xDelete<char>(buffer);
+				return(buffer);
+			}
+		}
+
+		/*  accumulate comment, including newlines  */
+		else
+			if (buffer[ibuf-3]=='-' && buffer[ibuf-2]=='-' && buffer[ibuf-1]=='>')
+				break;
+	}
+
+/*  remove trailing blanks or newline  */
+
+	while (ibuf > 0)
+		if (isspace(buffer[ibuf-1]))
+			ibuf--;
+		else {
+			buffer[ibuf]='\0';
+			break;
+		}
+
+//	_printf0_("comment buffer (length=" << ibuf << "):\n");
+//	_printf0_(buffer << "\n");
+
+	if (!ibuf)
+		xDelete<char>(buffer);
+
+	return(buffer);
+}
+/*}}}*/
+void KMLFileTokenBuffer(char** pbuffer,int* pibuf,int* pbuflen,/*{{{*/
+						int c,
+						int bufblk){
+
+/*  add the specified character to the token buffer  */
+
+	char*   buffer2=NULL;
+
+/*  check buffer length and realloc if necessary  */
+
+	if (*pibuf+2 > *pbuflen) {
+		*pbuflen+=bufblk;
+		buffer2=xNew<char>(*pbuflen);
+		memcpy(buffer2,*pbuffer,(*pbuflen-bufblk)*sizeof(char));
+		xDelete<char>(*pbuffer);
+		*pbuffer=buffer2;
+		buffer2=NULL;
+//		*pbuffer=(char *) xrealloc(*pbuffer,*pbuflen*sizeof(char));
+	}
+
+/*  add character and terminator  */
+
+	(*pbuffer)[(*pibuf)++]=c;
+	(*pbuffer)[ *pibuf   ]='\0';
+
+	return;
+}
+/*}}}*/
+char* KMLFileTagName(char* pname,/*{{{*/
+					 char* ktag){
+
+	return(KMLFileTagName(pname,NULL,0,
+						  ktag));
+}
+/*}}}*/
+char* KMLFileTagName(char* pname,int *m,int maxlen,/*{{{*/
+					 char* ktag){
+
+/*  for the given tag buffer, read and store the name  */
+
+	char*   ktagi;
+	char*   ktokn;
+
+	if (strncmp(&ktag[0],"<"        ,1) || strncmp(&ktag[strlen(ktag)-1],">",1))
+		_error_("KMLFileTagName -- Missing tag delimiters in " << ktag << ".\n");
+
+/*  strtok modifies ktag, so work on copy  */
+
+	ktagi=xNew<char>(strlen(ktag)+1);
+	memcpy(ktagi,ktag,(strlen(ktag)+1)*sizeof(char));
+
+/*  skip opening delimeter and find subsequent blank or closing delimiter  */
+
+	ktokn=strtok(ktagi,"< >");
+//	_printf0_("KMLFileTagName -- initial token=\"" << ktokn << "\".\n");
+
+	if (!pname) {
+		if (maxlen)
+			pname=xNew<char>(maxlen       +1);
+		else
+			pname=xNew<char>(strlen(ktokn)+1);
+	}
+
+	if (maxlen && (maxlen < strlen(ktokn))) {
+		_printf0_("KMLFileTagName -- string field too short for " << ktag << ".\n");
+		_printf0_("KMLFileTagName -- \"" << ktokn << "\" truncated to " << maxlen << " characters.\n");
+		strncpy(pname,ktokn,maxlen);
+	}
+	else
+		memcpy(pname,ktokn,(strlen(ktokn)+1)*sizeof(char));
+
+	xDelete<char>(ktagi);
+
+	if (m)
+		*m=strlen(pname);
+
+	return(pname);
+}
+/*}}}*/
+int KMLFileTagAttrib(KML_Object* kobj,/*{{{*/
+					 char* ktag){
+
+/*  for the given tag buffer, read and store the attributes  */
+
+	char*   ktagi;
+	char*   ktokn;
+	char*   ktokv;
+	char    quote[]={'\"','\0'};
+	int     isolo=0;
+
+/*  strtok modifies ktag, so work on copy  */
+
+	ktagi=xNew<char>(strlen(ktag)+1);
+	memcpy(ktagi,ktag,(strlen(ktag)+1)*sizeof(char));
+
+/*  loop through tag to find all attributes  */
+
+	/*  return first non blank and move past subsequent blank  */
+	ktokn=strtok(ktagi," ");
+//	_printf0_("KMLFileTagAttrib -- initial token=\"" << ktokn << "\".\n");
+
+	/*  return next non " =?/>" and move past subsequent " =?/>"  */
+	while((ktokn=strtok(NULL," =?/>"))){
+
+		/*  return next non quote and move past subsequent quote  */
+		ktokv=strtok(NULL,quote);
+//		_printf0_("KMLFileTagAttrib -- attribute " << ktokn << "=\"" << ktokv << "\".\n");
+
+/*  add the attribute to the dataset  */
+
+		if (kobj)
+			kobj->AddAttrib(ktokn,ktokv);
+	}
+
+	xDelete<char>(ktagi);
+
+/*  check for xml declaration, dtd declaration, or solo tag  */
+
+	if ((!strncmp(&ktag[0],"<?"       ,2) && !strncmp(&ktag[strlen(ktag)-2],"?>",2)) ||
+		(!strncmp(&ktag[0],"<!DOCTYPE",9) && !strncmp(&ktag[strlen(ktag)-1], ">",1)) ||
+		(!strncmp(&ktag[0],"<"        ,1) && !strncmp(&ktag[strlen(ktag)-2],"/>",2)))
+		isolo=1;
+//	_printf0_("KMLFileTagAttrib -- isolo=" << isolo << ".\n");
+
+	return(isolo);
+}
+/*}}}*/
+int KMLFileTokenParse(int* pival,/*{{{*/
+					  char* ktag,
+					  FILE* fid){
+
+	char*   kstr;
+
+/*  get next token and convert to appropriate format  */
+
+	if (!(kstr=KMLFileToken(fid,
+							NULL,NULL)) ||
+		(kstr[0] == '<'))
+		_error_("KMLFileTokenParse -- Missing integer field for " << ktag << ".\n");
+
+	sscanf(kstr,"%d",pival);
+	xDelete<char>(kstr);
+
+/*  get additional token and compare to closing tag  */
+
+	if(ktag){
+		if (!(kstr=KMLFileToken(fid,
+								NULL,NULL)) ||
+			(kstr[0] != '<') ||
+			(kstr[1] != '/') ||
+			(strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
+		  {_error_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
+		else{
+			xDelete<char>(kstr);
+		}
+	}
+
+//	_printf0_("KMLFileTokenParse -- " << ktag << "=" << *pival << ".\n");
+
+	return(0);
+}
+/*}}}*/
+int KMLFileTokenParse(bool* pbval, char* ktag, FILE* fid){/*{{{*/
+
+	int     ival;
+	char*   kstr;
+
+/*  get next token and convert to appropriate format  */
+
+	if (!(kstr=KMLFileToken(fid,
+							NULL,NULL)) ||
+		(kstr[0] == '<'))
+	  {_error_("KMLFileTokenParse -- Missing bool field for " << ktag << ".\n");}
+
+	sscanf(kstr,"%d",&ival);
+	*pbval=(bool)ival;
+	xDelete<char>(kstr);
+
+/*  get additional token and compare to closing tag  */
+
+	if(ktag){
+		if (!(kstr=KMLFileToken(fid,
+								NULL,NULL)) ||
+			(kstr[0] != '<') ||
+			(kstr[1] != '/') ||
+			(strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
+		  {_error_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
+		else
+			xDelete<char>(kstr);
+	}
+
+//	_printf0_("KMLFileTokenParse -- " << ktag << "=" << (*pbval ? "true" : "false") << ".\n");
+
+	return(0);
+}
+/*}}}*/
+char* KMLFileTokenParse(char* pstr,/*{{{*/
+						char* ktag,
+						FILE* fid){
+
+	return(KMLFileTokenParse(pstr,NULL,0,
+							 ktag,
+							 fid));
+}
+/*}}}*/
+char* KMLFileTokenParse(char* pstr,int *m,int maxlen,/*{{{*/
+						char* ktag,
+						FILE* fid){
+
+	char*   kstr;
+
+/*  get next token and allocate if necessary  */
+
+	if (!(kstr=KMLFileToken(fid,
+							NULL,NULL)) ||
+		(kstr[0] == '<'))
+		_error_("KMLFileTokenParse -- Missing string field for " << ktag << ".\n");
+
+	if (!pstr) {
+		if (maxlen)
+			pstr=xNew<char>(maxlen      +1);
+		else
+			pstr=xNew<char>(strlen(kstr)+1);
+	}
+
+	if (maxlen && (maxlen < strlen(kstr))) {
+		_printf0_("KMLFileTokenParse -- string field too short for " << ktag << ".\n");
+		_printf0_("KMLFileTokenParse -- \"" << kstr << "\" truncated to " << maxlen << " characters.\n");
+		strncpy(pstr,kstr,maxlen);
+	}
+	else
+		memcpy(pstr,kstr,(strlen(kstr)+1)*sizeof(char));
+
+	xDelete<char>(kstr);
+
+	if (m)
+		*m=strlen(pstr);
+
+/*  get additional token and compare to closing tag  */
+
+	if(ktag){
+		if (!(kstr=KMLFileToken(fid,
+								NULL,NULL)) ||
+			(kstr[0] != '<') ||
+			(kstr[1] != '/') ||
+			(strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
+		  {_error_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
+		else
+			xDelete<char>(kstr);
+	}
+
+//	_printf0_("KMLFileTokenParse -- " << ktag << "=\"" << pstr << "\".\n");
+
+	return(pstr);
+}
+/*}}}*/
+int KMLFileTokenParse(float* pfval,/*{{{*/
+					  char* ktag,
+					  FILE* fid){
+
+	char*   kstr;
+
+/*  get next token and convert to appropriate format  */
+
+	if (!(kstr=KMLFileToken(fid,
+							NULL,NULL)) ||
+		(kstr[0] == '<'))
+	  {_error_("KMLFileTokenParse -- Missing integer field for " << ktag << ".\n");}
+
+	sscanf(kstr,"%g",pfval);
+	xDelete<char>(kstr);
+
+/*  get additional token and compare to closing tag  */
+
+	if(ktag){
+		if (!(kstr=KMLFileToken(fid,
+								NULL,NULL)) ||
+			(kstr[0] != '<') ||
+			(kstr[1] != '/') ||
+			(strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
+		  {_error_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
+		else
+			xDelete<char>(kstr);
+	}
+
+//	_printf0_("KMLFileTokenParse -- " << ktag << "=" << *pfval << ".\n");
+
+	return(0);
+}
+/*}}}*/
+int KMLFileTokenParse(double* pdval,/*{{{*/
+					  char* ktag,
+					  FILE* fid){
+
+	char*   kstr;
+
+/*  get next token and convert to appropriate format  */
+
+	if (!(kstr=KMLFileToken(fid,
+							NULL,NULL)) ||
+		(kstr[0] == '<'))
+		_error_("KMLFileTokenParse -- Missing integer field for " << ktag << ".\n");
+
+	sscanf(kstr,"%lg",pdval);
+	xDelete<char>(kstr);
+
+/*  get additional token and compare to closing tag  */
+
+	if(ktag){
+		if (!(kstr=KMLFileToken(fid,
+								NULL,NULL)) ||
+			(kstr[0] != '<') ||
+			(kstr[1] != '/') ||
+			(strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
+		  {_error_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
+		else
+			xDelete<char>(kstr);
+	}
+
+//	_printf0_("KMLFileTokenParse -- " << ktag << "=" << *pdval << ".\n");
+
+	return(0);
+}
+/*}}}*/
+int KMLFileTokenParse(double **pdval,int* m,int maxlen,/*{{{*/
+					  char* ktag,
+					  FILE* fid){
+
+	int     i=-1;
+	char*   kstr;
+	char*   ktok;
+	double* dval2=NULL;
+	char    delim[]={' ',',','\f','\n','\r','\t','\v','\0'};
+
+/*  get next token and allocate if necessary  */
+
+	if (!(kstr=KMLFileToken(fid,
+							NULL,NULL)) ||
+		(kstr[0] == '<'))
+		_error_("KMLFileTokenParse -- Missing double [m] field for " << ktag << ".\n");
+
+	if(!*pdval){
+		if (maxlen)
+			*pdval=xNew<IssmPDouble>(maxlen            );
+		else
+			*pdval=xNew<IssmPDouble>((strlen(kstr)+1)/2);
+	}
+
+/*  loop through string to get all values  */
+
+	ktok=strtok(kstr,delim);
+	while (ktok) {
+		i++;
+		if (maxlen && (maxlen < i+1))
+			_error_("KMLFileTokenParse -- Double [m] field too short for " << ktag << ".\n");
+		sscanf(ktok,"%lg",&((*pdval)[i]));
+		ktok=strtok(NULL,delim);
+	}
+	xDelete<char>(kstr);
+
+	if (!maxlen)
+		dval2=xNew<double>(i+1);
+		memcpy(dval2,*pdval,(i+1)*sizeof(double));
+		xDelete<double>(*pdval);
+		*pdval=dval2;
+		dval2=NULL;
+//		*pdval=(double *) xrealloc(*pdval,(i+1)*sizeof(double));
+
+	if (m)
+		*m=i+1;
+
+/*  get additional token and compare to closing tag  */
+
+	if(ktag){
+		if (!(kstr=KMLFileToken(fid,
+								NULL,NULL)) ||
+			(kstr[0] != '<') ||
+			(kstr[1] != '/') ||
+			(strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
+		  {_error_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
+		else
+			xDelete<char>(kstr);
+	}
+
+//	_printf0_("KMLFileTokenParse -- " << ktag << "=...\n");
+//	for (j=0; j<=i; j++)
+//		_printf0_("   [" << j << "]: " << (*pdval)[j] << "g\n");
+
+	return(0);
+}
+/*}}}*/
+int KMLFileTokenParse(double **pdval,int* m,int n,int maxlen,/*{{{*/
+					  char* ktag,
+					  FILE* fid){
+
+	int     i=-1,j=-1;
+	char*   kstr;
+	char*   ktok;
+	double* dval2=NULL;
+	char    delim[]={' ',',','\f','\n','\r','\t','\v','\0'};
+
+/*  get next token and allocate if necessary  */
+
+	if (!(kstr=KMLFileToken(fid,
+							NULL,NULL)) ||
+		(kstr[0] == '<'))
+		_error_("KMLFileTokenParse -- Missing double [m x n] field for " << ktag << ".\n");
+
+	if(!*pdval){
+		if (maxlen)
+			*pdval=xNew<IssmPDouble>(maxlen*n          );
+		else
+			*pdval=xNew<IssmPDouble>((strlen(kstr)+1)/2);
+	}
+
+/*  loop through string to get all values  */
+
+	ktok=strtok(kstr,delim);
+	while (ktok) {
+		i++;
+		if (maxlen && (maxlen*n < i+1))
+			_error_("KMLFileTokenParse -- Double [m x n] field too short for " << ktag << ".\n");
+		j=(j+1) % n;
+		sscanf(ktok,"%lg",&((*pdval)[i]));
+		ktok=strtok(NULL,delim);
+	}
+	xDelete<char>(kstr);
+
+	if (!maxlen)
+		dval2=xNew<double>((i+1)*n);
+		memcpy(dval2,*pdval,((i+1)*n)*sizeof(double));
+		xDelete<double>(*pdval);
+		*pdval=dval2;
+		dval2=NULL;
+//		*pdval=(double *) xrealloc(*pdval,((i+1)*n)*sizeof(double));
+
+	if (m)
+		*m=((i+1)+(n-1))/n;
+
+	if ((i+1) % n)
+		_printf0_("KMLFileTokenParse -- Double [m x n] field for " << ktag << " does not have multiple of n values.\n");
+
+/*  get additional token and compare to closing tag  */
+
+	if(ktag){
+		if (!(kstr=KMLFileToken(fid,
+								NULL,NULL)) ||
+			(kstr[0] != '<') ||
+			(kstr[1] != '/') ||
+			(strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
+		  {_error_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
+		else
+			xDelete<char>(kstr);
+	}
+
+//	_printf0_("KMLFileTokenParse -- " << ktag << "=...\n");
+//	for (j=0; j<=i; j++)
+//		_printf0_("   [" << j << "]: " << (*pdval)[j] << "g\n");
+
+	return(0);
+}
+/*}}}*/
+int KMLFileTagSkip(char* ktag, FILE* fid){/*{{{*/
+
+	char*   kstr;
+
+/*  note that tags of the same type can be nested inside each other, so for each
+	opening tag, must find corresponding closing tag  */
+
+	_printf0_("KMLFileTagSkip -- input tag " << ktag << ".\n");
+
+/*  if next token is a closing tag, compare to input  */
+
+	while((kstr=KMLFileToken(fid,NULL,NULL))){
+		if((kstr[0] == '<') && (kstr[1] == '/') && (!strncmp(&(kstr[2]),&(ktag[1]),(strcspn(ktag," >")-1)/sizeof(char)))){
+			_printf0_("KMLFileTagSkip -- closing tag " << kstr << ".\n");
+			xDelete<char>(kstr);
+			return(0);
+		}
+
+/*  if next token is an opening tag, call recursively  */
+
+		else if ((kstr[0] == '<') &&
+				 (kstr[1] != '/')) {
+			_printf0_("KMLFileTagSkip -- opening tag " << kstr << ".\n");
+			KMLFileTagSkip(kstr,
+						   fid);
+		}
+
+/*  if next token is a closing tag, error out  */
+
+		else if ((kstr[0] == '<') &&
+				 (kstr[1] == '/')) {
+			_error_("KMLFileTagSkip -- Unexpected closing tag " << kstr << ".\n");
+		}
+
+		xDelete<char>(kstr);
+	}
+
+	_error_("KMLFileTokenParse -- Corresponding closing tag for " << ktag << " not found.\n");
+
+	return(0);
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KMLFileReadUtils.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KMLFileReadUtils.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KMLFileReadUtils.h	(revision 27955)
@@ -0,0 +1,31 @@
+/*!\file:  KMLFileReadUtils.h
+ * \brief: header file for kml file reading utilities.
+ */ 
+
+#ifndef _KMLFILEREADUTILS_H
+#define _KMLFILEREADUTILS_H
+
+/*Headers:{{{*/
+#include "../shared/shared.h"
+#include "../datastructures/datastructures.h"
+class KML_Object;
+/*}}}*/
+
+/* local prototypes: */
+char* KMLFileToken(FILE* fid, int* pncom,char*** ppcom);
+char* KMLFileTokenComment(FILE* fid);
+void KMLFileTokenBuffer(char** pbuffer,int* pibuf,int* pbuflen, int c, int bufblk);
+char* KMLFileTagName(char* pname, char* ktag);
+char* KMLFileTagName(char* pname,int *m,int maxlen, char* ktag);
+int KMLFileTagAttrib(KML_Object* kobj, char* ktag);
+int KMLFileTokenParse(int* pival, char* ktag, FILE* fid);
+int KMLFileTokenParse(bool* pbval, char* ktag, FILE* fid);
+char* KMLFileTokenParse(char* pstr, char* ktag, FILE* fid);
+char* KMLFileTokenParse(char* pstr,int *m,int maxlen, char* ktag, FILE* fid);
+int KMLFileTokenParse(float* pfval, char* ktag, FILE* fid);
+int KMLFileTokenParse(double* pdval, char* ktag, FILE* fid);
+int KMLFileTokenParse(double **pdval,int* m,int maxlen, char* ktag, FILE* fid);
+int KMLFileTokenParse(double **pdval,int* m,int n,int maxlen, char* ktag, FILE* fid);
+int KMLFileTagSkip(char* ktag, FILE* fid);
+
+#endif  /* _KMLFILEREADUTILS_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Attribute.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Attribute.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Attribute.cpp	(revision 27955)
@@ -0,0 +1,118 @@
+/*!\file KML_Attribute.cpp
+ * \brief: implementation of the kml_attribute object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Attribute.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Attribute::KML_Attribute(){/*{{{*/
+
+	name      =NULL;
+	value     =NULL;
+
+}
+/*}}}*/
+KML_Attribute::~KML_Attribute(){/*{{{*/
+
+	if (name      ) xDelete<char>(name);
+	if (value     ) xDelete<char>(value);
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Attribute::Echo(){/*{{{*/
+
+	int   i;
+	bool  flag=true;
+
+	if(flag) _printf0_("    ");
+	for (i=0;i<10-strlen(name);i++)
+		if(flag) _printf0_(" ");
+	if(flag) _printf0_(name << ": \"" << value << "\"\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Attribute::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Attribute::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Attribute::DeepEcho(const char* indent){/*{{{*/
+
+	int   i;
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "    ");
+	for (i=0;i<10-strlen(name);i++)
+		if(flag) _printf0_(" ");
+	if(flag) _printf0_(name << ": \"" << value << "\"\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Attribute::Write(FILE* filout,const char* indent){/*{{{*/
+
+//  attributes always written in keyword line of kml_object
+
+	fprintf(filout,"%s%s=\"%s\"",indent,name,value);
+
+	return;
+}
+/*}}}*/
+void  KML_Attribute::Read(FILE* fid,char* kstr){/*{{{*/
+
+//  attributes always read in keyword line of kml_object
+
+	;
+
+	return;
+}
+/*}}}*/
+void  KML_Attribute::Alloc(const char* namei,const char* valuei){/*{{{*/
+
+	name =xNew<char>(strlen(namei )+1);
+	memcpy(name,namei,(strlen(namei)+1)*sizeof(char));
+
+	value=xNew<char>(strlen(valuei)+1);
+	memcpy(value,valuei,(strlen(valuei)+1)*sizeof(char));
+
+	return;
+}
+/*}}}*/
+void  KML_Attribute::Add(DataSet* attrib){/*{{{*/
+
+	attrib->AddObject((Object*)this);
+
+	return;
+}
+/*}}}*/
+void  KML_Attribute::Get(char** pvalueo,char* deflt){/*{{{*/
+
+	if (!value || !strlen(value)) {
+		*pvalueo=xNew<char>(strlen(deflt)+1);
+		memcpy(*pvalueo,deflt,(strlen(deflt)+1)*sizeof(char));
+	}
+	else {
+		*pvalueo=xNew<char>(strlen(value)+1);
+		memcpy(*pvalueo,value,(strlen(value)+1)*sizeof(char));
+	}
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Attribute.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Attribute.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Attribute.h	(revision 27955)
@@ -0,0 +1,42 @@
+/*! \file KML_Attribute.h 
+ *  \brief: header file for kml_attribute object
+ */
+
+#ifndef _KML_ATTRIBUTE_H_
+#define _KML_ATTRIBUTE_H_
+
+/*Headers:{{{*/
+#include "../shared/shared.h"
+#include "../datastructures/datastructures.h"
+/*}}}*/
+
+class KML_Attribute: public Object {
+
+	public:
+
+		char* name;
+		char* value;
+
+		/*KML_Attribute constructors, destructors {{{*/
+		KML_Attribute();
+		~KML_Attribute();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		virtual void  Echo();
+		virtual void  DeepEcho();
+		virtual void  DeepEcho(const char* indent);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle);
+		/*}}}*/
+
+		/*virtual functions: */
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  Alloc(const char* namei,const char* valuei);
+		void  Add(DataSet* attrib);
+		void  Get(char** pvalueo,char* deflt);
+
+};
+#endif  /* _KML_ATTRIBUTE_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_ColorStyle.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_ColorStyle.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_ColorStyle.cpp	(revision 27955)
@@ -0,0 +1,99 @@
+/*!\file KML_ColorStyle.cpp
+ * \brief: implementation of the kml_colorstyle abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_ColorStyle.h"
+#include "./KML_SubStyle.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_ColorStyle::KML_ColorStyle(){/*{{{*/
+
+	strcpy(color     ,"ffffffff");
+	strcpy(colormode ,"normal");
+
+}
+/*}}}*/
+KML_ColorStyle::~KML_ColorStyle(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_ColorStyle::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	KML_SubStyle::Echo();
+
+	if(flag) _printf0_("         color: " << color << "\n");
+	if(flag) _printf0_("     colormode: " << colormode << "\n");
+
+	return;
+}
+/*}}}*/
+void  KML_ColorStyle::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_ColorStyle::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_ColorStyle::DeepEcho(const char* indent){/*{{{*/
+
+	bool  flag=true;
+
+	KML_SubStyle::DeepEcho(indent);
+
+	if(flag) _printf0_(indent << "         color: " << color << "\n");
+	if(flag) _printf0_(indent << "     colormode: " << colormode << "\n");
+}
+/*}}}*/
+void  KML_ColorStyle::Write(FILE* filout,const char* indent){/*{{{*/
+
+	KML_SubStyle::Write(filout,indent);
+
+	if (color     && strlen(color))
+		fprintf(filout,"%s  <color>%s</color>\n",indent,color);
+	if (colormode && strlen(colormode))
+		fprintf(filout,"%s  <colorMode>%s</colorMode>\n",indent,colormode);
+
+	return;
+}
+/*}}}*/
+void  KML_ColorStyle::Read(FILE* fid,char* kstr){/*{{{*/
+
+/*  process field within opening and closing tags  */
+
+	if      (!strncmp(kstr,"</ColorStyle",12))
+		return;
+	else if (!strncmp(kstr,"</",2))
+	  {_error_("KML_ColorStyle::Read -- Unexpected closing tag " << kstr);}
+	else if (strncmp(kstr,"<",1))
+	  {_error_("KML_ColorStyle::Read -- Unexpected field \"" << kstr << "\"");}
+
+	else if (!strcmp(kstr,"<color>"))
+		KMLFileTokenParse( color     ,NULL,KML_COLORSTYLE_COLOR_LENGTH, kstr, fid);
+	else if (!strcmp(kstr,"<colorMode>"))
+		KMLFileTokenParse( colormode ,NULL,KML_COLORSTYLE_COLORMODE_LENGTH, kstr, fid);
+
+	else if (!strncmp(kstr,"<",1))
+		KML_SubStyle::Read(fid,kstr);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_ColorStyle.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_ColorStyle.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_ColorStyle.h	(revision 27955)
@@ -0,0 +1,42 @@
+/*! \file KML_ColorStyle.h 
+ *  \brief: header file for kml_colorstyle abstract object
+ */
+
+#ifndef _KML_COLORSTYLE_H_
+#define _KML_COLORSTYLE_H_
+
+#define KML_COLORSTYLE_COLOR_LENGTH      8
+#define KML_COLORSTYLE_COLORMODE_LENGTH  6
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_SubStyle.h"
+/*}}}*/
+
+class KML_ColorStyle: public KML_SubStyle {
+
+	public:
+
+		char  color[KML_COLORSTYLE_COLOR_LENGTH+1];
+		char  colormode[KML_COLORSTYLE_COLORMODE_LENGTH+1];
+
+		/*KML_ColorStyle constructors, destructors {{{*/
+		KML_ColorStyle();
+		~KML_ColorStyle();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		void  Demarshall(char** pmarshalled_dataset){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_COLORSTYLE_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Comment.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Comment.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Comment.cpp	(revision 27955)
@@ -0,0 +1,103 @@
+/*!\file KML_Comment.cpp
+ * \brief: implementation of the kml_comment object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Comment.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Comment::KML_Comment(){/*{{{*/
+
+	value     =NULL;
+
+}
+/*}}}*/
+KML_Comment::~KML_Comment(){/*{{{*/
+
+	if (value     ) xDelete<char>(value);
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Comment::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("    ");
+	if(flag) _printf0_(value << "\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Comment::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Comment::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Comment::DeepEcho(const char* indent){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "    ");
+	if(flag) _printf0_(value << "\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Comment::Write(FILE* filout,const char* indent){/*{{{*/
+
+	if (strncmp(&value[0]              ,"<!--",4))
+		fprintf(filout,"%s<!--\n",indent);
+	fprintf(filout,"%s  %s\n",indent,value);
+	if (strncmp(&value[strlen(value)-3],"-->" ,3))
+		fprintf(filout,"%s-->\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Comment::Read(FILE* fid,char* kstr){/*{{{*/
+
+//  comments always read as part of KMLFileToken
+
+	;
+
+	return;
+}
+/*}}}*/
+void  KML_Comment::Alloc(const char* valuei){/*{{{*/
+
+	value=xNew<char>(strlen(valuei)+1);
+	memcpy(value,valuei,(strlen(valuei)+1)*sizeof(char));
+
+	return;
+}
+/*}}}*/
+void  KML_Comment::Add(DataSet* commnt){/*{{{*/
+
+	commnt->AddObject((Object*)this);
+
+	return;
+}
+/*}}}*/
+void  KML_Comment::Get(char** pvalueo){/*{{{*/
+
+	*pvalueo=xNew<char>(strlen(value)+1);
+	memcpy(*pvalueo,value,(strlen(value)+1)*sizeof(char));
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Comment.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Comment.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Comment.h	(revision 27955)
@@ -0,0 +1,43 @@
+/*! \file KML_Comment.h 
+ *  \brief: header file for kml_comment object
+ */
+
+#ifndef _KML_COMMENT_H_
+#define _KML_COMMENT_H_
+
+/*Headers:{{{*/
+#include "../shared/shared.h"
+#include "../datastructures/datastructures.h"
+class DataSet;
+/*}}}*/
+
+class KML_Comment: public Object {
+
+	public:
+
+		char* name;
+		char* value;
+
+		/*KML_Comment constructors, destructors {{{*/
+		KML_Comment();
+		~KML_Comment();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		virtual void  Echo();
+		virtual void  DeepEcho();
+		virtual void  DeepEcho(const char* indent);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+		/*virtual functions: */
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  Alloc(const char* valuei);
+		void  Add(DataSet* commnt);
+		void  Get(char** pvalueo);
+
+};
+#endif  /* _KML_COMMENT_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Container.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Container.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Container.cpp	(revision 27955)
@@ -0,0 +1,160 @@
+/*!\file KML_Container.cpp
+ * \brief: implementation of the kml_container abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Placemark.h"
+#include "./KML_Document.h"
+#include "./KML_GroundOverlay.h"
+#include "./KML_Folder.h"
+#include "./KML_Object.h"
+#include "./KML_Container.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Container::KML_Container(){/*{{{*/
+
+	feature   =new DataSet;
+
+}
+/*}}}*/
+KML_Container::~KML_Container(){/*{{{*/
+
+	if (feature) {
+		delete feature;
+		feature   =NULL;
+	}
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Container::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	KML_Feature::Echo();
+
+	if(flag) _printf0_("       feature: (size=" << feature->Size() << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Container::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Container::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Container::DeepEcho(const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+	bool  flag=true;
+
+	KML_Feature::DeepEcho(indent);
+
+/*  loop over the features for the container  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+	if (feature->Size())
+		for (i=0; i<feature->Size(); i++) {
+			if(flag) _printf0_(indent << "       feature: -------- begin [" << i << "] --------\n");
+			((KML_Feature *)feature->GetObjectByOffset(i))->DeepEcho(indent2);
+			if(flag) _printf0_(indent << "       feature: --------  end  [" << i << "] --------\n");
+		}
+	else
+		if(flag) _printf0_(indent << "       feature: [empty]\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Container::Write(FILE* filout,const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+
+	KML_Feature::Write(filout,indent);
+
+/*  loop over the features for the container  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+
+	strcat(indent2,"  ");
+
+	for (i=0; i<feature->Size(); i++)
+		((KML_Feature *)feature->GetObjectByOffset(i))->Write(filout,indent2);
+
+	return;
+}
+/*}}}*/
+void  KML_Container::Read(FILE* fid,char* kstr){/*{{{*/
+
+	KML_Object*  kobj;
+
+/*  process field within opening and closing tags  */
+
+	if      (!strncmp(kstr,"</Container",11)) {
+		xDelete<char>(kstr);
+		return;
+	}
+	else if (!strncmp(kstr,"</",2))
+	  {_error_("KML_Container::Read -- Unexpected closing tag " << kstr );}
+	else if (strncmp(kstr,"<",1))
+	  {_error_("KML_Container::Read -- Unexpected field \"" << kstr << "\"");}
+
+	else if (!strncmp(kstr,"<Placemark",10)) {
+		kobj=(KML_Object*)new KML_Placemark();
+		kobj->Read(fid,kstr);
+		feature   ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<Folder", 7)) {
+		kobj=(KML_Object*)new KML_Folder();
+		kobj->Read(fid,kstr);
+		feature   ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<Document", 9)) {
+		kobj=(KML_Object*)new KML_Document();
+		kobj->Read(fid,kstr);
+		feature   ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<GroundOverlay",14)) {
+		kobj=(KML_Object*)new KML_GroundOverlay();
+		kobj->Read(fid,kstr);
+		feature   ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<",1))
+		KML_Feature::Read(fid,kstr);
+
+	return;
+}
+/*}}}*/
+void  KML_Container::WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp){/*{{{*/
+
+	int   i;
+
+/*  loop over the features for the container  */
+
+	for (i=0; i<feature->Size(); i++)
+		((KML_Object *)feature->GetObjectByOffset(i))->WriteExp(fid,nstr,sgn,cm,sp);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Container.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Container.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Container.h	(revision 27955)
@@ -0,0 +1,39 @@
+/*! \file KML_Container.h 
+ *  \brief: header file for kml_container abstract object
+ */
+
+#ifndef _KML_CONTAINER_H_
+#define _KML_CONTAINER_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Feature.h"
+class DataSet;
+/*}}}*/
+
+class KML_Container: public KML_Feature {
+
+	public:
+
+		DataSet* feature;
+
+		/*KML_Container constructors, destructors {{{*/
+		KML_Container();
+		~KML_Container();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_CONTAINER_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Document.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Document.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Document.cpp	(revision 27955)
@@ -0,0 +1,114 @@
+/*!\file KML_Document.cpp
+ * \brief: implementation of the kml_document object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Document.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Document::KML_Document(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+KML_Document::~KML_Document(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Document::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_Document:\n");
+	KML_Container::Echo();
+
+	return;
+}
+/*}}}*/
+void  KML_Document::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Document::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Document::DeepEcho(const char* indent){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_Document:\n");
+	KML_Container::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Document::Write(FILE* filout,const char* indent){/*{{{*/
+
+	fprintf(filout,"%s<Document",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Container::Write(filout,indent);
+
+	fprintf(filout,"%s</Document>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Document::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))) {
+		if      (!strncmp(kstri,"</Document",10)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_Document::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_Document::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Container::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for (ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Document.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Document.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Document.h	(revision 27955)
@@ -0,0 +1,36 @@
+/*! \file KML_Document.h 
+ *  \brief: header file for kml_document object
+ */
+
+#ifndef _KML_DOCUMENT_H_
+#define _KML_DOCUMENT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Container.h"
+class KML_Feature;
+/*}}}*/
+
+class KML_Document: public KML_Container {
+
+	public:
+
+		/*KML_Document constructors, destructors {{{*/
+		KML_Document();
+		~KML_Document();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_DOCUMENT_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Feature.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Feature.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Feature.cpp	(revision 27955)
@@ -0,0 +1,178 @@
+/*!\file KML_Feature.cpp
+ * \brief: implementation of the kml_feature abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../shared/shared.h"
+/*}}}*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Feature.h"
+#include "./KML_Style.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Feature::KML_Feature(){/*{{{*/
+
+	memcpy(name,"",(strlen("")+1)*sizeof(char));
+
+	visibility=true;
+	open      =false;
+	memcpy(snippet,"",(strlen("")+1)*sizeof(char));
+	memcpy(descript,"",(strlen("")+1)*sizeof(char));
+	memcpy(styleurl,"",(strlen("")+1)*sizeof(char));
+	style     =new DataSet;
+
+}
+/*}}}*/
+KML_Feature::~KML_Feature(){/*{{{*/
+
+	if (style) {
+		delete style;
+		style     =NULL;
+	}
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Feature::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	KML_Object::Echo();
+
+	if(flag) _printf0_("          name: \"" << name << "\"\n");
+	if(flag) _printf0_("    visibility: " << (visibility ? "true" : "false") << "\n");
+	if(flag) _printf0_("          open: " << (open ? "true" : "false") << "\n");
+	if(flag) _printf0_("       snippet: \"" << snippet << "\"\n");
+	if(flag) _printf0_("      descript: \"" << descript << "\"\n");
+	if(flag) _printf0_("      styleurl: \"" << styleurl << "\"\n");
+	if(flag) _printf0_("         style: (size=" << style->Size() << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Feature::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Feature::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Feature::DeepEcho(const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+	bool  flag=true;
+
+	KML_Object::DeepEcho(indent);
+
+	if(flag) _printf0_(indent << "          name: \"" << name << "\"\n");
+	if(flag) _printf0_(indent << "    visibility: " << (visibility ? "true" : "false") << "\n");
+	if(flag) _printf0_(indent << "          open: " << (open ? "true" : "false") << "\n");
+	if(flag) _printf0_(indent << "       snippet: \"" << snippet << "\"\n");
+	if(flag) _printf0_(indent << "      descript: \"" << descript << "\"\n");
+	if(flag) _printf0_(indent << "      styleurl: \"" << styleurl << "\"\n");
+
+/*  loop over any styles for the feature  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+	if (style->Size())
+		for (i=0; i<style->Size(); i++) {
+			if(flag) _printf0_(indent << "         style: -------- begin [" << i << "] --------\n");
+			((KML_Style *)style->GetObjectByOffset(i))->DeepEcho(indent2);
+			if(flag) _printf0_(indent << "         style: --------  end  [" << i << "] --------\n");
+		}
+	else
+		if(flag) _printf0_(indent << "         style: [empty]\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Feature::Write(FILE* filout,const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+
+	KML_Object::Write(filout,indent);
+
+	if (name     && strlen(name))
+		fprintf(filout,"%s  <name>%s</name>\n",indent,name);
+	fprintf(filout,"%s  <visibility>%d</visibility>\n",indent,(visibility ? 1 : 0));
+	fprintf(filout,"%s  <open>%d</open>\n",indent,(open ? 1 : 0));
+	if (snippet  && strlen(snippet))
+		fprintf(filout,"%s  <Snippet maxLines=\"2\">%s</Snippet>\n",indent,snippet);
+	if (descript && strlen(descript))
+		fprintf(filout,"%s  <description>%s</description>\n",indent,descript);
+	if (styleurl && strlen(styleurl))
+		fprintf(filout,"%s  <styleUrl>%s</styleUrl>\n",indent,styleurl);
+
+/*  loop over any styles for the feature  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+
+	strcat(indent2,"  ");
+
+    for (i=0; i<style->Size(); i++)
+        ((KML_Style *)style->GetObjectByOffset(i))->Write(filout,indent2);
+
+	return;
+}
+/*}}}*/
+void  KML_Feature::Read(FILE* fid,char* kstr){/*{{{*/
+
+	KML_Object*  kobj;
+
+/*  process field within opening and closing tags  */
+
+	if      (!strncmp(kstr,"</Feature", 9))
+		return;
+	else if (!strncmp(kstr,"</",2))
+	  {_error_("KML_Feature::Read -- Unexpected closing tag " << kstr);}
+	else if (strncmp(kstr,"<",1))
+	  {_error_("KML_Feature::Read -- Unexpected field \"" << kstr << "\"");}
+
+	else if (!strncmp(kstr,"<Style", 6)) {
+		kobj=(KML_Object*)new KML_Style();
+		kobj->Read(fid,kstr);
+		style     ->AddObject((Object*)kobj);
+	}
+
+	else if (!strcmp(kstr,"<name>"))
+		KMLFileTokenParse( name      ,NULL,KML_FEATURE_NAME_LENGTH, kstr, fid);
+	else if (!strcmp(kstr,"<visibility>"))
+		KMLFileTokenParse(&visibility, kstr, fid);
+	else if (!strcmp(kstr,"<open>"))
+		KMLFileTokenParse(&open      , kstr, fid);
+	else if (!strncmp(kstr,"<snippet", 8))
+		KMLFileTokenParse( snippet   ,NULL,KML_FEATURE_SNIPPET_LENGTH, kstr, fid);
+	else if (!strcmp(kstr,"<description>"))
+		KMLFileTokenParse( descript  ,NULL,KML_FEATURE_DESCRIPT_LENGTH, kstr, fid);
+	else if (!strcmp(kstr,"<styleUrl>"))
+		KMLFileTokenParse( styleurl  ,NULL,KML_FEATURE_STYLEURL_LENGTH, kstr, fid);
+
+	else if (!strncmp(kstr,"<",1))
+		KML_Object::Read(fid,kstr);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Feature.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Feature.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Feature.h	(revision 27955)
@@ -0,0 +1,50 @@
+/*! \file KML_Feature.h 
+ *  \brief: header file for kml_feature abstract object
+ */
+
+#ifndef _KML_FEATURE_H_
+#define _KML_FEATURE_H_
+
+#define KML_FEATURE_NAME_LENGTH         80
+#define KML_FEATURE_SNIPPET_LENGTH     160
+#define KML_FEATURE_DESCRIPT_LENGTH   3200
+#define KML_FEATURE_STYLEURL_LENGTH     80
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Object.h"
+class KML_Style;
+class DataSet;
+/*}}}*/
+
+class KML_Feature: public KML_Object {
+
+	public:
+
+		char  name[KML_FEATURE_NAME_LENGTH+1];
+		bool  visibility;
+		bool  open;
+		char  snippet[KML_FEATURE_SNIPPET_LENGTH+1];
+		char  descript[KML_FEATURE_DESCRIPT_LENGTH+1];
+		char  styleurl[KML_FEATURE_STYLEURL_LENGTH+1];
+		DataSet* style;
+
+		/*KML_Feature constructors, destructors {{{*/
+		KML_Feature();
+		~KML_Feature();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_FEATURE_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_File.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_File.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_File.cpp	(revision 27955)
@@ -0,0 +1,126 @@
+/*!\file KML_File.cpp
+ * \brief: implementation of the kml_file object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_File.h" 
+#include "./KML_Object.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_File::KML_File(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+KML_File::~KML_File(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_File::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_File:\n");
+	KML_Object::Echo();
+
+	return;
+}
+/*}}}*/
+void  KML_File::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_File::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_File::DeepEcho(const char* indent){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_File:\n");
+	KML_Object::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_File::Write(FILE* filout,const char* indent){/*{{{*/
+
+	fprintf(filout,"%s<kml",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Object::Write(filout,indent);
+
+	fprintf(filout,"%s</kml>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_File::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</kml", 5)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_File::Read -- Unexpected closing tag " << kstri << ".");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_File::Read -- Unexpected field \"" << kstri << "\"");}
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Object::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(; ncom>0; ncom--) xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
+void  KML_File::WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp){/*{{{*/
+
+	int   i;
+
+/*  loop over the kml objects for the file  */
+
+	for (i=0; i<kmlobj->Size(); i++)
+		((KML_Object *)kmlobj->GetObjectByOffset(i))->WriteExp(fid,nstr,sgn,cm,sp);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_File.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_File.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_File.h	(revision 27955)
@@ -0,0 +1,38 @@
+/*! \file KML_File.h 
+ *  \brief: header file for kml_file object
+ */
+
+#ifndef _KML_FILE_H_
+#define _KML_FILE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+
+#include "./KML_Feature.h"
+class DataSet;
+/*}}}*/
+
+class KML_File: public KML_Object {
+
+	public:
+
+		/*KML_File constructors, destructors {{{*/
+		KML_File();
+		~KML_File();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle);
+		/*}}}*/
+
+};
+#endif  /* _KML_FILE_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Folder.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Folder.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Folder.cpp	(revision 27955)
@@ -0,0 +1,113 @@
+/*!\file KML_Folder.cpp
+ * \brief: implementation of the kml_folder object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Folder.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Folder::KML_Folder(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+KML_Folder::~KML_Folder(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Folder::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_Folder:\n");
+	KML_Container::Echo();
+
+	return;
+}
+/*}}}*/
+void  KML_Folder::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Folder::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Folder::DeepEcho(const char* indent){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_Folder:\n");
+	KML_Container::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Folder::Write(FILE* filout,const char* indent){/*{{{*/
+
+	fprintf(filout,"%s<Folder",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Container::Write(filout,indent);
+
+	fprintf(filout,"%s</Folder>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Folder::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</Folder", 8)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_Folder::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_Folder::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Container::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for (ncom=ncom; ncom>0; ncom--) xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Folder.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Folder.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Folder.h	(revision 27955)
@@ -0,0 +1,36 @@
+/*! \file KML_Folder.h 
+ *  \brief: header file for kml_folder object
+ */
+
+#ifndef _KML_FOLDER_H_
+#define _KML_FOLDER_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Container.h"
+class KML_Feature;
+/*}}}*/
+
+class KML_Folder: public KML_Container {
+
+	public:
+
+		/*KML_Folder constructors, destructors {{{*/
+		KML_Folder();
+		~KML_Folder();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_FOLDER_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Geometry.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Geometry.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Geometry.cpp	(revision 27955)
@@ -0,0 +1,79 @@
+/*!\file KML_Geometry.cpp
+ * \brief: implementation of the kml_geometry abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Geometry.h"
+#include "./KML_Object.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Geometry::KML_Geometry(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+KML_Geometry::~KML_Geometry(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Geometry::Echo(){/*{{{*/
+
+	this->KML_Object::Echo();
+
+	return;
+}
+/*}}}*/
+void  KML_Geometry::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Geometry::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Geometry::DeepEcho(const char* indent){/*{{{*/
+
+	this->KML_Object::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Geometry::Write(FILE* filout,const char* indent){/*{{{*/
+
+	KML_Object::Write(filout,indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Geometry::Read(FILE* fid,char* kstr){/*{{{*/
+
+/*  process field within opening and closing tags  */
+
+	if      (!strncmp(kstr,"</Geometry",10))
+		return;
+	else if (!strncmp(kstr,"</",2))
+	  {_error_("KML_Geometry::Read -- Unexpected closing tag " << kstr << ".\n");}
+	else if (strncmp(kstr,"<",1))
+	  {_error_("KML_Geometry::Read -- Unexpected field \"" << kstr << "\".\n");}
+
+	else if (!strncmp(kstr,"<",1))
+		KML_Object::Read(fid,kstr);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Geometry.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Geometry.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Geometry.h	(revision 27955)
@@ -0,0 +1,35 @@
+/*! \file KML_Geometry.h 
+ *  \brief: header file for kml_geometry abstract object
+ */
+
+#ifndef _KML_GEOMETRY_H_
+#define _KML_GEOMETRY_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Object.h"
+/*}}}*/
+
+class KML_Geometry: public KML_Object {
+
+	public:
+
+		/*KML_Geometry constructors, destructors {{{*/
+		KML_Geometry();
+		~KML_Geometry();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_GEOMETRY_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_GroundOverlay.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_GroundOverlay.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_GroundOverlay.cpp	(revision 27955)
@@ -0,0 +1,154 @@
+/*!\file KML_GroundOverlay.cpp
+ * \brief: implementation of the kml_groundoverlay object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Object.h"
+#include "./KML_LatLonBox.h"
+#include "./KML_GroundOverlay.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_GroundOverlay::KML_GroundOverlay(){/*{{{*/
+
+	altitude  = 0.;
+	memcpy(altmode,"clampToGround",(strlen("clampToGround")+1)*sizeof(char));
+
+	llbox     =NULL;
+
+}
+/*}}}*/
+KML_GroundOverlay::~KML_GroundOverlay(){/*{{{*/
+
+	if (llbox) {
+		delete llbox;
+		llbox     =NULL;
+	}
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_GroundOverlay::Echo(){/*{{{*/
+
+	_printf_("KML_GroundOverlay:\n");
+	KML_Overlay::Echo();
+
+	_printf_("         altitude: " << altitude << "\n");
+	_printf_("          altmode: " << altmode << "\n");
+	_printf_("            llbox: " << llbox << "\n");
+}
+/*}}}*/
+void  KML_GroundOverlay::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_GroundOverlay::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_GroundOverlay::DeepEcho(const char* indent){/*{{{*/
+
+	char  indent2[81];
+
+	_printf_(indent << "KML_GroundOverlay:\n");
+	KML_Overlay::DeepEcho(indent);
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+	_printf_(indent<<"      altitude: " << altitude << "\n");
+	_printf_(indent<<"       altmode: " << altmode << "\n");
+	if (llbox)
+	 llbox->DeepEcho(indent2);
+	else
+	 _printf_(indent<<"         llbox: " << llbox << "\n");
+}
+/*}}}*/
+void  KML_GroundOverlay::Write(FILE* filout,const char* indent){/*{{{*/
+
+	char  indent2[81];
+
+	fprintf(filout,"%s<GroundOverlay",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Overlay::Write(filout,indent);
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+
+	strcat(indent2,"  ");
+
+	fprintf(filout,"%s  <altitude>%0.16g</altitude>\n",indent,altitude);
+	fprintf(filout,"%s  <altitudeMode>%s</altitudeMode>\n",indent,altmode);
+	if (llbox)
+		llbox->Write(filout,indent2);
+
+	fprintf(filout,"%s</GroundOverlay>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_GroundOverlay::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</GroundOverlay",15)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_GroundOverlay::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_GroundOverlay::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strcmp(kstri,"<altitude>"))
+			KMLFileTokenParse(&altitude  ,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<altitudeMode>"))
+			KMLFileTokenParse( altmode   ,NULL,KML_GROUNDOVERLAY_ALTMODE_LENGTH,
+							  kstri,
+							  fid);
+		else if (!strncmp(kstri,"<LatLonBox",10)) {
+			llbox     =new KML_LatLonBox();
+			llbox     ->Read(fid,kstri);
+		}
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Overlay::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_GroundOverlay.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_GroundOverlay.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_GroundOverlay.h	(revision 27955)
@@ -0,0 +1,42 @@
+/*! \file KML_GroundOverlay.h 
+ *  \brief: header file for kml_groundoverlay object
+ */
+
+#ifndef _KML_GROUNDOVERLAY_H_
+#define _KML_GROUNDOVERLAY_H_
+
+#define KML_GROUNDOVERLAY_ALTMODE_LENGTH    18
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Overlay.h"
+class KML_LatLonBox;
+/*}}}*/
+
+class KML_GroundOverlay: public KML_Overlay {
+
+	public:
+
+		double altitude;
+		char  altmode[KML_GROUNDOVERLAY_ALTMODE_LENGTH+1];
+		KML_LatLonBox* llbox;
+
+		/*KML_GroundOverlay constructors, destructors {{{*/
+		KML_GroundOverlay();
+		~KML_GroundOverlay();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_GROUNDOVERLAY_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Icon.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Icon.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Icon.cpp	(revision 27955)
@@ -0,0 +1,170 @@
+/*!\file KML_Icon.cpp
+ * \brief: implementation of the kml_feature abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Icon.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Icon::KML_Icon(){/*{{{*/
+
+	strcpy(href      ,"");
+	strcpy(refmode   ,"onChange");
+	refint    = 4.;
+	strcpy(vrefmode  ,"never");
+	vreftime  = 4.;
+	vboundsc  = 1.;
+	strcpy(vformat   ,"");
+	strcpy(hquery    ,"");
+
+}
+/*}}}*/
+KML_Icon::~KML_Icon(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Icon::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_Icon:\n");
+	KML_Object::Echo();
+
+	if(flag) _printf0_("          href: \"" << href << "\"\n");
+	if(flag) _printf0_("       refmode: \"" << refmode << "\"\n");
+	if(flag) _printf0_("        refint: " << refint << "\n");
+	if(flag) _printf0_("      vrefmode: \"" << vrefmode << "\"\n");
+	if(flag) _printf0_("      vreftime: " << vreftime << "\n");
+	if(flag) _printf0_("      vboundsc: " << vboundsc << "\n");
+	if(flag) _printf0_("       vformat: \"" << vformat << "\"\n");
+	if(flag) _printf0_("        hquery: \"" << hquery << "\"\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Icon::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Icon::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Icon::DeepEcho(const char* indent){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_Icon:\n");
+	KML_Object::DeepEcho(indent);
+
+	if(flag) _printf0_(indent << "          href: \"" << href << "\"\n");
+	if(flag) _printf0_(indent << "       refmode: \"" << refmode << "\"\n");
+	if(flag) _printf0_(indent << "        refint: " << refint << "\n");
+	if(flag) _printf0_(indent << "      vrefmode: \"" << vrefmode << "\"\n");
+	if(flag) _printf0_(indent << "      vreftime: " << vreftime << "\n");
+	if(flag) _printf0_(indent << "      vboundsc: " << vboundsc << "\n");
+	if(flag) _printf0_(indent << "       vformat: \"" << vformat << "\"\n");
+	if(flag) _printf0_(indent << "        hquery: \"" << hquery << "\"\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Icon::Write(FILE* filout,const char* indent){/*{{{*/
+
+	fprintf(filout,"%s<Icon",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Object::Write(filout,indent);
+
+	if (href     && strlen(href))
+		fprintf(filout,"%s  <href>%s</href>\n",indent,href);
+	if (refmode  && strlen(refmode))
+		fprintf(filout,"%s  <refreshMode>%s</refreshMode>\n",indent,refmode);
+	fprintf(filout,"%s  <refreshInterval>%g</refreshInterval>\n",indent,refint);
+	if (vrefmode && strlen(vrefmode))
+		fprintf(filout,"%s  <viewRefreshMode>%s</viewRefreshMode>\n",indent,vrefmode);
+	fprintf(filout,"%s  <viewRefreshTime>%g</viewRefreshTime>\n",indent,vreftime);
+	fprintf(filout,"%s  <viewBoundScale>%g</viewBoundScale>\n",indent,vboundsc);
+	if (vformat  && strlen(vformat))
+		fprintf(filout,"%s  <viewFormat>%s</viewFormat>\n",indent,vformat);
+	if (hquery   && strlen(hquery))
+		fprintf(filout,"%s  <httpQuery>%s</httpQuery>\n",indent,hquery);
+
+	fprintf(filout,"%s</Icon>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Icon::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</Icon", 6)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_Icon::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_Icon::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strcmp(kstri,"<href>"))
+			KMLFileTokenParse( href      ,NULL,KML_ICON_HREF_LENGTH, kstri, fid);
+		else if (!strcmp(kstri,"<refreshMode>"))
+			KMLFileTokenParse( refmode   ,NULL,KML_ICON_REFMODE_LENGTH, kstri, fid);
+		else if (!strcmp(kstri,"<refreshInterval>"))
+			KMLFileTokenParse(&refint    , kstri, fid);
+		else if (!strcmp(kstri,"<viewRefreshMode>"))
+			KMLFileTokenParse( vrefmode  ,NULL,KML_ICON_VREFMODE_LENGTH, kstri, fid);
+		else if (!strcmp(kstri,"<viewRefreshTime>"))
+			KMLFileTokenParse(&vreftime  , kstri, fid);
+		else if (!strcmp(kstri,"<viewBoundScale>"))
+			KMLFileTokenParse(&vboundsc  , kstri, fid);
+		else if (!strcmp(kstri,"<viewFormat>"))
+			KMLFileTokenParse( vformat   ,NULL,KML_ICON_VFORMAT_LENGTH, kstri, fid);
+		else if (!strcmp(kstri,"<httpQuery>"))
+			KMLFileTokenParse( hquery    ,NULL,KML_ICON_HQUERY_LENGTH, kstri, fid);
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Object::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Icon.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Icon.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Icon.h	(revision 27955)
@@ -0,0 +1,50 @@
+/*! \file KML_Icon.h 
+ *  \brief: header file for kml_icon object
+ */
+
+#ifndef _KML_ICON_H_
+#define _KML_ICON_H_
+
+#define KML_ICON_HREF_LENGTH      800
+#define KML_ICON_REFMODE_LENGTH    10
+#define KML_ICON_VREFMODE_LENGTH    9
+#define KML_ICON_VFORMAT_LENGTH   800
+#define KML_ICON_HQUERY_LENGTH    800
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Object.h"
+/*}}}*/
+
+class KML_Icon: public KML_Object {
+
+	public:
+
+		char  href[KML_ICON_HREF_LENGTH+1];
+		char  refmode[KML_ICON_REFMODE_LENGTH+1];
+		float refint;
+		char  vrefmode[KML_ICON_VREFMODE_LENGTH+1];
+		float vreftime;
+		float vboundsc;
+		char  vformat[KML_ICON_VFORMAT_LENGTH+1];
+		char  hquery[KML_ICON_HQUERY_LENGTH+1];
+
+		/*KML_Icon constructors, destructors {{{*/
+		KML_Icon();
+		~KML_Icon();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_ICON_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LatLonBox.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LatLonBox.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LatLonBox.cpp	(revision 27955)
@@ -0,0 +1,149 @@
+/*!\file KML_LatLonBox.cpp
+ * \brief: implementation of the kml_feature abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_LatLonBox.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_LatLonBox::KML_LatLonBox(){/*{{{*/
+
+	north     = 0.;
+	south     = 0.;
+	east      = 0.;
+	west      = 0.;
+	rotation  = 0.;
+
+}
+/*}}}*/
+KML_LatLonBox::~KML_LatLonBox(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_LatLonBox::Echo(){/*{{{*/
+
+	_printf_("KML_LatLonBox:\n");
+	KML_Object::Echo();
+
+	_printf_("         north: " << north << "\n");
+	_printf_("         south: " << south << "\n");
+	_printf_("          east: " << east << "\n");
+	_printf_("          west: " << west << "\n");
+	_printf_("      rotation: " << rotation << "\n");
+}
+/*}}}*/
+void  KML_LatLonBox::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_LatLonBox::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_LatLonBox::DeepEcho(const char* indent){/*{{{*/
+
+	_printf_(indent << "KML_LatLonBox:\n");
+	KML_Object::DeepEcho(indent);
+
+	_printf_("         north: " << north << "\n");
+	_printf_("         south: " << south << "\n");
+	_printf_("          east: " << east << "\n");
+	_printf_("          west: " << west << "\n");
+	_printf_("      rotation: " << rotation << "\n");
+}
+/*}}}*/
+void  KML_LatLonBox::Write(FILE* filout,const char* indent){/*{{{*/
+
+	fprintf(filout,"%s<LatLonBox",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Object::Write(filout,indent);
+
+	fprintf(filout,"%s  <north>%0.16g</north>\n",indent,north);
+	fprintf(filout,"%s  <south>%0.16g</south>\n",indent,south);
+	fprintf(filout,"%s  <east>%0.16g</east>\n",indent,east);
+	fprintf(filout,"%s  <west>%0.16g</west>\n",indent,west);
+	fprintf(filout,"%s  <rotation>%0.16g</rotation>\n",indent,rotation);
+
+	fprintf(filout,"%s</LatLonBox>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_LatLonBox::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</LatLonBox",11)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_LatLonBox::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_LatLonBox::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strcmp(kstri,"<north>"))
+			KMLFileTokenParse(&north     ,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<south>"))
+			KMLFileTokenParse(&south     ,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<east>"))
+			KMLFileTokenParse(&east      ,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<west>"))
+			KMLFileTokenParse(&west      ,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<rotation>"))
+			KMLFileTokenParse(&rotation  ,
+							  kstri,
+							  fid);
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Object::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for (ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LatLonBox.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LatLonBox.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LatLonBox.h	(revision 27955)
@@ -0,0 +1,41 @@
+/*! \file KML_LatLonBox.h 
+ *  \brief: header file for kml_latlonbox object
+ */
+
+#ifndef _KML_LATLONBOX_H_
+#define _KML_LATLONBOX_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Object.h"
+/*}}}*/
+
+class KML_LatLonBox: public KML_Object {
+
+	public:
+
+		double north;
+		double south;
+		double east;
+		double west;
+		double rotation;
+
+		/*KML_LatLonBox constructors, destructors {{{*/
+		KML_LatLonBox();
+		~KML_LatLonBox();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_LATLONBOX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LineString.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LineString.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LineString.cpp	(revision 27955)
@@ -0,0 +1,222 @@
+/*!\file KML_LineString.cpp
+ * \brief: implementation of the kml_linestring object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_LineString.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_LineString::KML_LineString(){/*{{{*/
+
+	extrude   =false;
+	tessellate=false;
+	memcpy(altmode,"clampToGround",(strlen("clampToGround")+1)*sizeof(char));
+
+	ncoord    =0;
+	coords    =NULL;
+
+}
+/*}}}*/
+KML_LineString::~KML_LineString(){/*{{{*/
+
+	if (coords) xDelete<double>(coords);
+
+	coords    =NULL;
+	ncoord    =0;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_LineString::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_LineString:\n");
+	KML_Geometry::Echo();
+
+	if(flag) _printf0_("       extrude: " << (extrude ? "true" : "false") << "\n");
+	if(flag) _printf0_("    tessellate: " << (tessellate ? "true" : "false") << "\n");
+	if(flag) _printf0_("       altmode: \"" << altmode << "\"\n");
+	if(flag) _printf0_("        coords: (ncoord=" << ncoord << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_LineString::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_LineString::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_LineString::DeepEcho(const char* indent){/*{{{*/
+
+	int   i;
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_LineString:\n");
+	KML_Geometry::DeepEcho(indent);
+
+	if(flag) _printf0_(indent << "       extrude: " << (extrude ? "true" : "false") << "\n");
+	if(flag) _printf0_(indent << "    tessellate: " << (tessellate ? "true" : "false") << "\n");
+	if(flag) _printf0_(indent << "       altmode: \"" << altmode << "\"\n");
+	if(flag) _printf0_(indent << "        coords: (ncoord=" << ncoord << ")\n");
+	for (i=0; i<ncoord; i++)
+		if(flag) _printf0_(indent << "                (" << coords[3*i+0] << "," << coords[3*i+1] << "," << coords[3*i+2] << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_LineString::Write(FILE* filout,const char* indent){/*{{{*/
+
+	int   i;
+
+	fprintf(filout,"%s<LineString",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Geometry::Write(filout,indent);
+
+	fprintf(filout,"%s  <extrude>%d</extrude>\n",indent,(extrude ? 1 : 0));
+	fprintf(filout,"%s  <tessellate>%d</tessellate>\n",indent,(tessellate ? 1 : 0));
+	fprintf(filout,"%s  <altitudeMode>%s</altitudeMode>\n",indent,altmode);
+	fprintf(filout,"%s  <coordinates>\n",indent);
+
+/*  loop over the coordinates for the linestring  */
+
+	for (i=0; i<ncoord; i++)
+		fprintf(filout,"%s    %0.16g,%0.16g,%0.16g\n",indent, coords[3*i+0],coords[3*i+1],coords[3*i+2]);
+
+	fprintf(filout,"%s  </coordinates>\n",indent);
+	fprintf(filout,"%s</LineString>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_LineString::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</LineString",12)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_LineString::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_LineString::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strcmp(kstri,"<extrude>"))
+			KMLFileTokenParse(&extrude   ,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<tessellate>"))
+			KMLFileTokenParse(&tessellate,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<altitudeMode>"))
+			KMLFileTokenParse( altmode   ,NULL,KML_LINESTRING_ALTMODE_LENGTH,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<coordinates>"))
+			KMLFileTokenParse(&coords    ,&ncoord    ,0,
+							  kstri,
+							  fid);
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Geometry::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for (ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
+void  KML_LineString::WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp){/*{{{*/
+
+	int     i;
+	double  *lat,*lon,*x,*y;
+	char    nstr2[81];
+
+/*  extract latitude and longitude into vectors  */
+
+	lat=xNew<IssmPDouble>(ncoord);
+	lon=xNew<IssmPDouble>(ncoord);
+	for (i=0; i<ncoord; i++) {
+		lon[i]=coords[3*i+0];
+		lat[i]=coords[3*i+1];
+	}
+
+/*  convert latitude and longitude to x and y  */
+
+	x  =xNew<IssmPDouble>(ncoord);
+	y  =xNew<IssmPDouble>(ncoord);
+	if (sgn) {
+		Ll2xyx(x,y,lat,lon,ncoord,sgn,cm,sp);
+	}
+	else {
+		memcpy(x,lon,ncoord*sizeof(IssmDouble));
+		memcpy(y,lat,ncoord*sizeof(IssmDouble));
+	}
+
+/*  write header  */
+
+	memcpy(nstr2,nstr,(strlen(nstr)+1)*sizeof(char));
+
+	for (i=0; i<strlen(nstr2); i++)
+		if ((nstr2[i] == ' ') || (nstr2[i] == '\t'))
+			nstr2[i]='_';
+	fprintf(fid,"## Name:%s\n",nstr2);
+	fprintf(fid,"## Icon:0\n");
+	fprintf(fid,"# Points Count	Value\n");
+    fprintf(fid,"%u	%s\n",ncoord  ,"1.");
+	fprintf(fid,"# X pos	Y pos\n");
+
+/*  write vertices  */
+
+	for (i=0; i<ncoord; i++)
+	    fprintf(fid,"%lf\t%lf\n",x[i],y[i]);
+
+/*  write blank line  */
+
+	fprintf(fid,"\n");
+
+	xDelete<IssmPDouble>(y);
+	xDelete<IssmPDouble>(x);
+	xDelete<IssmPDouble>(lon);
+	xDelete<IssmPDouble>(lat);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LineString.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LineString.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LineString.h	(revision 27955)
@@ -0,0 +1,44 @@
+/*! \file KML_LineString.h 
+ *  \brief: header file for kml_linestring object
+ */
+
+#ifndef _KML_LINESTRING_H_
+#define _KML_LINESTRING_H_
+
+#define KML_LINESTRING_ALTMODE_LENGTH    18
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Geometry.h"
+/*}}}*/
+
+class KML_LineString: public KML_Geometry {
+
+	public:
+
+		bool    extrude;
+		bool    tessellate;
+		char    altmode[KML_LINESTRING_ALTMODE_LENGTH+1];
+		int     ncoord;
+		double *coords;
+
+		/*KML_LineString constructors, destructors {{{*/
+		KML_LineString();
+		~KML_LineString();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_LINESTRING_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LineStyle.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LineStyle.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LineStyle.cpp	(revision 27955)
@@ -0,0 +1,125 @@
+/*!\file KML_LineStyle.cpp
+ * \brief: implementation of the kml_linestyle object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_LineStyle.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_LineStyle::KML_LineStyle(){/*{{{*/
+
+	width     =1.;
+
+}
+/*}}}*/
+KML_LineStyle::~KML_LineStyle(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_LineStyle::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_LineStyle:\n");
+	KML_ColorStyle::Echo();
+
+	if(flag) _printf0_("         width: " << width << "\n");
+
+	return;
+}
+/*}}}*/
+void  KML_LineStyle::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_LineStyle::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_LineStyle::DeepEcho(const char* indent){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_LineStyle:\n");
+	KML_ColorStyle::DeepEcho(indent);
+
+	if(flag) _printf0_(indent << "         width: " << width << "\n");
+
+	return;
+}
+/*}}}*/
+void  KML_LineStyle::Write(FILE* filout,const char* indent){/*{{{*/
+
+	fprintf(filout,"%s<LineStyle",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_ColorStyle::Write(filout,indent);
+
+	fprintf(filout,"%s  <width>%g</width>\n",indent,width);
+
+	fprintf(filout,"%s</LineStyle>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_LineStyle::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</LineStyle",11)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_LineStyle::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_LineStyle::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strcmp(kstri,"<width>"))
+			KMLFileTokenParse(&width     ,
+							  kstri,
+							  fid);
+
+		else if (!strncmp(kstri,"<",1))
+			KML_ColorStyle::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LineStyle.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LineStyle.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LineStyle.h	(revision 27955)
@@ -0,0 +1,37 @@
+/*! \file KML_LineStyle.h 
+ *  \brief: header file for kml_linestyle object
+ */
+
+#ifndef _KML_LINESTYLE_H_
+#define _KML_LINESTYLE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_ColorStyle.h"
+/*}}}*/
+
+class KML_LineStyle: public KML_ColorStyle {
+
+	public:
+
+		float width;
+
+		/*KML_LineStyle constructors, destructors {{{*/
+		KML_LineStyle();
+		~KML_LineStyle();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_LINESTYLE_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LinearRing.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LinearRing.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LinearRing.cpp	(revision 27955)
@@ -0,0 +1,216 @@
+/*!\file KML_LinearRing.cpp
+ * \brief: implementation of the kml_linearring object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_LinearRing.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_LinearRing::KML_LinearRing(){/*{{{*/
+
+	extrude   =false;
+	tessellate=false;
+	memcpy(altmode,"clampToGround",(strlen("clampToGround")+1)*sizeof(char));
+
+	ncoord    =0;
+	coords    =NULL;
+
+}
+/*}}}*/
+KML_LinearRing::~KML_LinearRing(){/*{{{*/
+
+	if (coords) xDelete<double>(coords);
+
+	coords    =NULL;
+	ncoord    =0;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_LinearRing::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_LinearRing:\n");
+	KML_Geometry::Echo();
+
+	if(flag) _printf0_("       extrude: " << (extrude ? "true" : "false") << "\n");
+	if(flag) _printf0_("    tessellate: " << (tessellate ? "true" : "false") << "\n");
+	if(flag) _printf0_("       altmode: \"" << altmode << "\"\n");
+	if(flag) _printf0_("        coords: (ncoord=" << ncoord << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_LinearRing::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_LinearRing::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_LinearRing::DeepEcho(const char* indent){/*{{{*/
+
+	int   i;
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_LinearRing:\n");
+	KML_Geometry::DeepEcho(indent);
+
+	if(flag) _printf0_(indent << "       extrude: " << (extrude ? "true" : "false") << "\n");
+	if(flag) _printf0_(indent << "    tessellate: " << (tessellate ? "true" : "false") << "\n");
+	if(flag) _printf0_(indent << "       altmode: \"" << altmode << "\"\n");
+	if(flag) _printf0_(indent << "        coords: (ncoord=" << ncoord << ")\n");
+	for (i=0; i<ncoord; i++)
+		if(flag)_printf_(indent << "                (" <<coords[3*i+0] << "," <<coords[3*i+1] << "," <<coords[3*i+2] << ")\n\n");
+
+	return;
+}
+/*}}}*/
+void  KML_LinearRing::Write(FILE* filout,const char* indent){/*{{{*/
+
+	int   i;
+
+	fprintf(filout,"%s<LinearRing",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Geometry::Write(filout,indent);
+
+	fprintf(filout,"%s  <extrude>%d</extrude>\n",indent,(extrude ? 1 : 0));
+	fprintf(filout,"%s  <tessellate>%d</tessellate>\n",indent,(tessellate ? 1 : 0));
+	fprintf(filout,"%s  <altitudeMode>%s</altitudeMode>\n",indent,altmode);
+	fprintf(filout,"%s  <coordinates>\n",indent);
+
+/*  loop over the coordinates for the linearring  */
+
+	for (i=0; i<ncoord; i++)
+		fprintf(filout,"%s    %0.16g,%0.16g,%0.16g\n",indent,coords[3*i+0],coords[3*i+1],coords[3*i+2]);
+
+	fprintf(filout,"%s  </coordinates>\n",indent);
+	fprintf(filout,"%s</LinearRing>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_LinearRing::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char  *kstri = NULL;
+	int    ncom  = 0;
+	char **pcom  = NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,kstr)) return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid,&ncom,&pcom))){
+		if (!strncmp(kstri,"</LinearRing",12)){
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_LinearRing::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_LinearRing::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strcmp(kstri,"<extrude>"))
+			KMLFileTokenParse(&extrude,kstri,fid);
+		else if (!strcmp(kstri,"<tessellate>"))
+			KMLFileTokenParse(&tessellate,kstri,fid);
+		else if (!strcmp(kstri,"<altitudeMode>"))
+			KMLFileTokenParse(altmode,NULL,KML_LINEARRING_ALTMODE_LENGTH,kstri,fid);
+		else if (!strcmp(kstri,"<coordinates>"))
+			KMLFileTokenParse(&coords,&ncoord,3,0,kstri,fid);
+		else if (!strncmp(kstri,"<",1))
+			KML_Geometry::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
+void  KML_LinearRing::WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp){/*{{{*/
+
+	int     i;
+	double  *lat,*lon,*x,*y;
+	char    nstr2[81];
+
+/*  extract latitude and longitude into vectors  */
+
+	lat=xNew<IssmPDouble>(ncoord);
+	lon=xNew<IssmPDouble>(ncoord);
+	for (i=0; i<ncoord; i++) {
+		lon[i]=coords[3*i+0];
+		lat[i]=coords[3*i+1];
+	}
+
+/*  convert latitude and longitude to x and y  */
+
+	x  =xNew<IssmPDouble>(ncoord);
+	y  =xNew<IssmPDouble>(ncoord);
+	if (sgn) {
+		Ll2xyx(x,y,lat,lon,ncoord,sgn,cm,sp);
+	}
+	else {
+		memcpy(x,lon,ncoord*sizeof(IssmDouble));
+		memcpy(y,lat,ncoord*sizeof(IssmDouble));
+	}
+
+/*  write header  */
+
+	memcpy(nstr2,nstr,(strlen(nstr)+1)*sizeof(char));
+
+	for (i=0; i<strlen(nstr2); i++)
+		if ((nstr2[i] == ' ') || (nstr2[i] == '\t'))
+			nstr2[i]='_';
+	fprintf(fid,"## Name:%s\n",nstr2);
+	fprintf(fid,"## Icon:0\n");
+	fprintf(fid,"# Points Count	Value\n");
+	if ((lat[ncoord-1] != lat[0]) || (lon[ncoord-1] != lon[0]))
+	    fprintf(fid,"%u	%s\n",ncoord+1,"1.");
+	else
+	    fprintf(fid,"%u	%s\n",ncoord  ,"1.");
+	fprintf(fid,"# X pos	Y pos\n");
+
+/*  write vertices, making sure ring is closed  */
+
+	for (i=0; i<ncoord; i++)
+	    fprintf(fid,"%lf\t%lf\n",x[i],y[i]);
+	if ((lat[ncoord-1] != lat[0]) || (lon[ncoord-1] != lon[0]))
+	    fprintf(fid,"%lf\t%lf\n",x[0],y[0]);
+
+/*  write blank line  */
+
+	fprintf(fid,"\n");
+
+	xDelete<double>(y);
+	xDelete<double>(x);
+	xDelete<double>(lon);
+	xDelete<double>(lat);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LinearRing.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LinearRing.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_LinearRing.h	(revision 27955)
@@ -0,0 +1,44 @@
+/*! \file KML_LinearRing.h 
+ *  \brief: header file for kml_linearring object
+ */
+
+#ifndef _KML_LINEARRING_H_
+#define _KML_LINEARRING_H_
+
+#define KML_LINEARRING_ALTMODE_LENGTH    18
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Geometry.h"
+/*}}}*/
+
+class KML_LinearRing: public KML_Geometry {
+
+	public:
+
+		bool     extrude;
+		bool     tessellate;
+		char     altmode[KML_LINEARRING_ALTMODE_LENGTH+1];
+		int      ncoord;
+		double  *coords;
+
+		/*KML_LinearRing constructors, destructors {{{*/
+		KML_LinearRing();
+		~KML_LinearRing();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_LINEARRING_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_MultiGeometry.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_MultiGeometry.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_MultiGeometry.cpp	(revision 27955)
@@ -0,0 +1,195 @@
+/*!\file KML_MultiGeometry.cpp
+ * \brief: implementation of the kml_multigeometry object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Object.h"
+#include "./KML_Point.h"
+#include "./KML_Polygon.h"
+#include "./KML_LineString.h"
+#include "./KML_LinearRing.h"
+#include "./KMLFileReadUtils.h"
+#include "./KML_MultiGeometry.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_MultiGeometry::KML_MultiGeometry(){/*{{{*/
+
+	geometry  =new DataSet;
+
+}
+/*}}}*/
+KML_MultiGeometry::~KML_MultiGeometry(){/*{{{*/
+
+	if (geometry) {
+		delete geometry;
+		geometry  =NULL;
+	}
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_MultiGeometry::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_Multigeometry:\n");
+	KML_Geometry::Echo();
+
+	if(flag) _printf0_("      geometry: (size=" << geometry->Size() << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_MultiGeometry::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_MultiGeometry::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_MultiGeometry::DeepEcho(const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_Multigeometry:\n");
+	KML_Geometry::DeepEcho(indent);
+
+/*  loop over the geometry elements for the multigeometry  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+	if (geometry->Size())
+		for (i=0; i<geometry->Size(); i++) {
+			if(flag) _printf0_(indent << "      geometry: -------- begin [" << i << "] --------\n");
+			((KML_Geometry *)geometry->GetObjectByOffset(i))->DeepEcho(indent2);
+			if(flag) _printf0_(indent << "      geometry: --------  end  [" << i << "] --------\n");
+		}
+	else
+		if(flag) _printf0_(indent << "      geometry: [empty]\n");
+
+	return;
+}
+/*}}}*/
+void  KML_MultiGeometry::Write(FILE* filout,const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+
+	fprintf(filout,"%s<MultiGeometry",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Geometry::Write(filout,indent);
+
+/*  loop over the geometry elements for the multigeometry  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+
+	strcat(indent2,"  ");
+
+	for (i=0; i<geometry->Size(); i++)
+		((KML_Geometry *)geometry->GetObjectByOffset(i))->Write(filout,indent2);
+
+	fprintf(filout,"%s</MultiGeometry>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_MultiGeometry::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+	KML_Object*  kobj;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</MultiGeometry",15)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_MultiGeometry::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_MultiGeometry::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strncmp(kstri,"<Point", 6)) {
+			kobj=(KML_Object*)new KML_Point();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<LineString",11)) {
+			kobj=(KML_Object*)new KML_LineString();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<LinearRing",11)) {
+			kobj=(KML_Object*)new KML_LinearRing();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<Polygon", 8)) {
+			kobj=(KML_Object*)new KML_Polygon();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<MultiGeometry",14)) {
+			kobj=(KML_Object*)new KML_MultiGeometry();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Geometry::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
+void  KML_MultiGeometry::WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp){/*{{{*/
+
+	int   i;
+
+/*  loop over the geometry elements for the multigeometry  */
+
+	for (i=0; i<geometry->Size(); i++)
+		((KML_Object *)geometry->GetObjectByOffset(i))->WriteExp(fid,nstr,sgn,cm,sp);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_MultiGeometry.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_MultiGeometry.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_MultiGeometry.h	(revision 27955)
@@ -0,0 +1,40 @@
+/*! \file KML_MultiGeometry.h 
+ *  \brief: header file for kml_multigeometry object
+ */
+
+#ifndef _KML_MULTIGEOMETRY_H_
+#define _KML_MULTIGEOMETRY_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Geometry.h"
+class KML_Geometry;
+class DataSet;
+/*}}}*/
+
+class KML_MultiGeometry: public KML_Geometry {
+
+	public:
+
+		DataSet* geometry;
+
+		/*KML_MultiGeometry constructors, destructors {{{*/
+		KML_MultiGeometry();
+		~KML_MultiGeometry();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_MULTIGEOMETRY_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Object.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Object.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Object.cpp	(revision 27955)
@@ -0,0 +1,340 @@
+/*!\file KML_Object.cpp
+ * \brief: implementation of the kml_object abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Object.h"
+#include "./KML_Attribute.h"
+#include "./KML_Comment.h"
+#include "./KML_Unknown.h"
+#include "./KML_LatLonBox.h"
+#include "./KML_Icon.h"
+#include "./KML_MultiGeometry.h"
+#include "./KML_Document.h"
+#include "./KML_LinearRing.h"
+#include "./KML_LineStyle.h"
+#include "./KML_LineString.h"
+#include "./KML_PolyStyle.h"
+#include "./KML_Polygon.h"
+#include "./KML_Point.h"
+#include "./KML_GroundOverlay.h"
+#include "./KML_Placemark.h"
+#include "./KML_Folder.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Object::KML_Object(){/*{{{*/
+
+	attrib    =new DataSet;
+	commnt    =new DataSet;
+	kmlobj    =new DataSet;
+
+}
+/*}}}*/
+KML_Object::~KML_Object(){/*{{{*/
+
+	if (attrib) {
+		delete attrib;
+		attrib    =NULL;
+	}
+	if (commnt) {
+		delete commnt;
+		commnt    =NULL;
+	}
+	if (kmlobj) {
+		delete kmlobj;
+		kmlobj    =NULL;
+	}
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Object::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("        attrib: (size=" << attrib->Size() << ")\n");
+	if(flag) _printf0_("        commnt: (size=" << commnt->Size() << ")\n");
+	if(flag) _printf0_("        kmlobj: (size=" << kmlobj->Size() << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Object::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Object::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Object::DeepEcho(const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+	bool  flag=true;
+
+/*  loop over the attributes for the object  */
+
+	if (attrib->Size())
+		for (i=0; i<attrib->Size(); i++) {
+			((KML_Attribute *)attrib->GetObjectByOffset(i))->DeepEcho(indent);
+		}
+	else
+		if(flag) _printf0_(indent << "        attrib: [empty]\n");
+
+/*  loop over the comments for the object  */
+
+	if (commnt->Size())
+		for (i=0; i<commnt->Size(); i++) {
+			((KML_Comment *)commnt->GetObjectByOffset(i))->DeepEcho(indent);
+		}
+	else
+		if(flag) _printf0_(indent << "        commnt: [empty]\n");
+
+/*  loop over the unknown objects for the object  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+	if (kmlobj->Size())
+		for (i=0; i<kmlobj->Size(); i++) {
+            if(flag) _printf0_(indent << "        kmlobj: -------- begin [" << i << "] --------\n");
+			((KML_Unknown *)kmlobj->GetObjectByOffset(i))->DeepEcho(indent2);
+            if(flag) _printf0_(indent << "        kmlobj: --------  end  [" << i << "] --------\n");
+		}
+	else
+		if(flag) _printf0_(indent << "        kmlobj: [empty]\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Object::Write(FILE* filout,const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+
+//  attributes always written in keyword line of derived classes
+//  comments always written after keyword line of derived classes
+
+/*  loop over the unknown objects for the object  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+	if (kmlobj->Size())
+		for (i=0; i<kmlobj->Size(); i++) {
+			((KML_Unknown *)kmlobj->GetObjectByOffset(i))->Write(filout,indent2);
+		}
+
+	return;
+}
+/*}}}*/
+void  KML_Object::Read(FILE* fid,char* kstr){/*{{{*/
+
+	KML_Object*  kobj;
+
+/*  process field within opening and closing tags  */
+
+	if      (!strncmp(kstr,"</Object", 8))
+		return;
+	else if (!strncmp(kstr,"</",2))
+	  {_error_("KML_Object::Read -- Unexpected closing tag " << kstr << ".\n");}
+	else if (strncmp(kstr,"<",1))
+	  {_error_("KML_Object::Read -- Unexpected field \"" << kstr << "\".\n");}
+
+	else if (!strncmp(kstr,"<Placemark",10)) {
+		kobj=(KML_Object*)new KML_Placemark();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<Folder", 7)) {
+		kobj=(KML_Object*)new KML_Folder();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<Document", 9)) {
+		kobj=(KML_Object*)new KML_Document();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<GroundOverlay",14)) {
+		kobj=(KML_Object*)new KML_GroundOverlay();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<LatLonBox",10)) {
+		kobj=(KML_Object*)new KML_LatLonBox();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<Icon", 5)) {
+		kobj=(KML_Object*)new KML_Icon();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<Point", 6)) {
+		kobj=(KML_Object*)new KML_Point();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<LineString",11)) {
+		kobj=(KML_Object*)new KML_LineString();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<LinearRing",11)) {
+		kobj=(KML_Object*)new KML_LinearRing();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<Polygon", 8)) {
+		kobj=(KML_Object*)new KML_Polygon();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<MultiGeometry",14)) {
+		kobj=(KML_Object*)new KML_MultiGeometry();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+//	else if (!strncmp(kstr,"<IconStyle",10)) {
+//		kobj=(KML_Object*)new KML_IconStyle();
+//		kobj->Read(fid,kstr);
+//		kmlobj    ->AddObject((Object*)kobj);
+//	}
+
+//	else if (!strncmp(kstr,"<LabelStyle",11)) {
+//		kobj=(KML_Object*)new KML_LabelStyle();
+//		kobj->Read(fid,kstr);
+//		kmlobj    ->AddObject((Object*)kobj);
+//	}
+
+	else if (!strncmp(kstr,"<LineStyle",10)) {
+		kobj=(KML_Object*)new KML_LineStyle();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	else if (!strncmp(kstr,"<PolyStyle",10)) {
+		kobj=(KML_Object*)new KML_PolyStyle();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+//	else if (!strncmp(kstr,"<BalloonStyle",13)) {
+//		kobj=(KML_Object*)new KML_BalloonStyle();
+//		kobj->Read(fid,kstr);
+//		kmlobj    ->AddObject((Object*)kobj);
+//	}
+
+//	else if (!strncmp(kstr,"<ListStyle",10)) {
+//		kobj=(KML_Object*)new KML_ListStyle();
+//		kobj->Read(fid,kstr);
+//		kmlobj    ->AddObject((Object*)kobj);
+//	}
+
+	else if (!strncmp(kstr,"<",1)) {
+		_printf0_("KML_Object::Read -- Unrecognized opening tag " << kstr << ".\n");
+//		KMLFileTagSkip(kstr,
+//					   fid);
+		kobj=(KML_Object*)new KML_Unknown();
+		kobj->Read(fid,kstr);
+		kmlobj    ->AddObject((Object*)kobj);
+	}
+
+	return;
+}
+/*}}}*/
+void  KML_Object::WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp){/*{{{*/
+
+	;
+
+	return;
+}
+/*}}}*/
+void  KML_Object::AddAttrib(const char* name,const char* value){/*{{{*/
+
+	KML_Attribute* katt=NULL;
+
+	katt=new KML_Attribute();
+	katt->Alloc(name,value);
+	katt->Add(attrib);
+
+	return;
+}
+/*}}}*/
+void  KML_Object::WriteAttrib(FILE* filout,const char* indent){/*{{{*/
+
+//  attributes always written in keyword line of kml_object
+
+/*  loop over any attributes for the object  */
+
+	if (attrib->Size())
+		for (int i=0; i<attrib->Size(); i++)
+			((KML_Attribute *)attrib->GetObjectByOffset(i))->Write(filout,indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Object::AddCommnt(int ncom,char** pcom){/*{{{*/
+
+	int   i;
+	KML_Comment* kcom=NULL;
+
+	for (i=0; i<ncom; i++) {
+		kcom=new KML_Comment();
+		kcom->Alloc(pcom[i]);
+		kcom->Add(commnt);
+	}
+
+	return;
+}
+/*}}}*/
+void  KML_Object::AddCommnt(char* value){/*{{{*/
+
+	KML_Comment* kcom=NULL;
+
+	kcom=new KML_Comment();
+	kcom->Alloc(value);
+	kcom->Add(commnt);
+
+	return;
+}
+/*}}}*/
+void  KML_Object::WriteCommnt(FILE* filout,const char* indent){/*{{{*/
+
+	int   i;
+
+//  comments always written after keyword line of kml_object
+
+/*  loop over any comments for the object  */
+
+	if (commnt->Size())
+		for (i=0; i<commnt->Size(); i++)
+			((KML_Comment *)commnt->GetObjectByOffset(i))->Write(filout,indent);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Object.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Object.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Object.h	(revision 27955)
@@ -0,0 +1,46 @@
+/*! \file KML_Object.h 
+ *  \brief: header file for kml_object abstract object
+ */
+
+#ifndef _KML_OBJECT_H_
+#define _KML_OBJECT_H_
+
+/*Headers:{{{*/
+#include "../shared/shared.h"
+#include "../datastructures/datastructures.h"
+/*}}}*/
+
+class KML_Object: public Object {
+
+	public:
+
+		DataSet* attrib;
+		DataSet* commnt;
+		DataSet* kmlobj;
+
+		/*KML_Object constructors, destructors {{{*/
+		KML_Object();
+		~KML_Object();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		virtual void  Echo();
+		virtual void  DeepEcho();
+		virtual void  DeepEcho(const char* indent);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+		/*virtual functions: */
+		virtual void  Write(FILE* fid,const char* indent)=0;
+		virtual void  Read(FILE* fid,char* kstr)=0;
+		virtual void  WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp);
+		virtual void  AddAttrib(const char* name,const char* value);
+		virtual void  WriteAttrib(FILE* fid,const char* indent);
+		virtual void  AddCommnt(int ncom,char** pcom);
+		virtual void  AddCommnt(char* value);
+		virtual void  WriteCommnt(FILE* fid,const char* indent);
+
+};
+#endif  /* _KML_OBJECT_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Overlay.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Overlay.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Overlay.cpp	(revision 27955)
@@ -0,0 +1,125 @@
+/*!\file KML_Overlay.cpp
+ * \brief: implementation of the kml_overlay abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KMLFileReadUtils.h"
+#include "./KML_Overlay.h"
+#include "./KML_Icon.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Overlay::KML_Overlay(){/*{{{*/
+
+	strcpy(color     ,"ffffffff");
+	memcpy(color,"ffffffff",(strlen("ffffffff")+1)*sizeof(char));
+
+	draword   = 0;
+	icon      =NULL;
+
+}
+/*}}}*/
+KML_Overlay::~KML_Overlay(){/*{{{*/
+
+	if (icon) {
+		delete icon;
+		icon      =NULL;
+	}
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Overlay::Echo(){/*{{{*/
+
+	KML_Feature::Echo();
+	_printf0_("         color: \"" << color << "\"\n");
+	_printf0_("       draword: " << draword << "\n");
+	_printf0_("          icon: " << icon << "\n");
+}
+/*}}}*/
+void  KML_Overlay::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Overlay::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Overlay::DeepEcho(const char* indent){/*{{{*/
+
+	char  indent2[81];
+	KML_Feature::DeepEcho(indent);
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+	_printf0_(indent << "         color: " << color << "\n");
+	_printf0_(indent << "       draword: " << draword << "\n");
+	if (icon)
+		icon->DeepEcho(indent2);
+	else
+		_printf0_(indent << "          icon: " << icon << "\n");
+}
+/*}}}*/
+void  KML_Overlay::Write(FILE* filout,const char* indent){/*{{{*/
+
+	char  indent2[81];
+
+	KML_Feature::Write(filout,indent);
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+
+	strcat(indent2,"  ");
+
+	if (color     && strlen(color))
+		fprintf(filout,"%s  <color>%s</color>\n",indent,color);
+	fprintf(filout,"%s  <drawOrder>%d</drawOrder>\n",indent,draword);
+	if (icon)
+		icon->Write(filout,indent2);
+
+	return;
+}
+/*}}}*/
+void  KML_Overlay::Read(FILE* fid,char* kstr){/*{{{*/
+
+/*  process field within opening and closing tags  */
+
+	if      (!strncmp(kstr,"</Overlay", 9)) {
+		xDelete<char>(kstr);
+		return;
+	}
+	else if (!strncmp(kstr,"</",2))
+	  {_error_("KML_Overlay::Read -- Unexpected closing tag " << kstr << ".\n");}
+	else if (strncmp(kstr,"<",1))
+	  {_error_("KML_Overlay::Read -- Unexpected field \"" << kstr << "\".\n");}
+
+	else if (!strcmp(kstr,"<color>"))
+		KMLFileTokenParse( color     ,NULL,KML_OVERLAY_COLOR_LENGTH,
+						  kstr,
+						  fid);
+	else if (!strcmp(kstr,"<drawOrder>"))
+		KMLFileTokenParse(&draword   ,
+						  kstr,
+						  fid);
+
+	else if (!strncmp(kstr,"<Icon", 5)) {
+		icon      =new KML_Icon();
+		icon      ->Read(fid,kstr);
+	}
+
+	else if (!strncmp(kstr,"<",1))
+		KML_Feature::Read(fid,kstr);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Overlay.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Overlay.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Overlay.h	(revision 27955)
@@ -0,0 +1,42 @@
+/*! \file KML_Overlay.h 
+ *  \brief: header file for kml_overlay abstract object
+ */
+
+#ifndef _KML_OVERLAY_H_
+#define _KML_OVERLAY_H_
+
+#define KML_OVERLAY_COLOR_LENGTH  8
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Feature.h"
+class KML_Icon;
+/*}}}*/
+
+class KML_Overlay: public KML_Feature {
+
+	public:
+
+		char  color[KML_OVERLAY_COLOR_LENGTH+1];
+		int   draword;
+		KML_Icon* icon;
+
+		/*KML_Overlay constructors, destructors {{{*/
+		KML_Overlay();
+		~KML_Overlay();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_OVERLAY_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Placemark.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Placemark.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Placemark.cpp	(revision 27955)
@@ -0,0 +1,203 @@
+/*!\file KML_Placemark.cpp
+ * \brief: implementation of the kml_placemark object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KMLFileReadUtils.h"
+#include "./KML_Geometry.h"
+#include "./KML_Point.h"
+#include "./KML_LineString.h"
+#include "./KML_Polygon.h"
+#include "./KML_MultiGeometry.h"
+#include "./KML_LinearRing.h"
+#include "./KML_Placemark.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Placemark::KML_Placemark(){/*{{{*/
+
+	geometry  =new DataSet;
+
+}
+/*}}}*/
+KML_Placemark::~KML_Placemark(){/*{{{*/
+
+	if (geometry) {
+		delete geometry;
+		geometry  =NULL;
+	}
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Placemark::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_Placemark:\n");
+	KML_Feature::Echo();
+
+	if(flag) _printf0_("      geometry: (size=" << geometry->Size() << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Placemark::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Placemark::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Placemark::DeepEcho(const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_Placemark:\n");
+	KML_Feature::DeepEcho(indent);
+
+/*  loop over the geometry elements for the placemark  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+	if (geometry->Size())
+		for (i=0; i<geometry->Size(); i++) {
+			if(flag) _printf0_(indent << "      geometry: -------- begin [" << i << "] --------\n");
+			((KML_Geometry *)geometry->GetObjectByOffset(i))->DeepEcho(indent2);
+			if(flag) _printf0_(indent << "      geometry: --------  end  [" << i << "] --------\n");
+		}
+	else
+		if(flag) _printf0_(indent << "      geometry: [empty]\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Placemark::Write(FILE* filout,const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+
+	fprintf(filout,"%s<Placemark",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Feature::Write(filout,indent);
+
+/*  loop over the geometry elements for the placemark  */
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+
+	strcat(indent2,"  ");
+
+	for (i=0; i<geometry->Size(); i++)
+		((KML_Geometry *)geometry->GetObjectByOffset(i))->Write(filout,indent2);
+
+	fprintf(filout,"%s</Placemark>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Placemark::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+	KML_Object*  kobj;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</Placemark",11)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_Placemark::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_Placemark::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strncmp(kstri,"<Point", 6)) {
+			kobj=(KML_Object*)new KML_Point();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<LineString",11)) {
+			kobj=(KML_Object*)new KML_LineString();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<LinearRing",11)) {
+			kobj=(KML_Object*)new KML_LinearRing();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<Polygon", 8)) {
+			kobj=(KML_Object*)new KML_Polygon();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<MultiGeometry",14)) {
+			kobj=(KML_Object*)new KML_MultiGeometry();
+			kobj->Read(fid,kstri);
+			geometry  ->AddObject((Object*)kobj);
+		}
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Feature::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
+void  KML_Placemark::WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp){/*{{{*/
+
+	int   i;
+	char  nstr2[81];
+
+/*  loop over the geometry elements for the placemark  */
+
+	for (i=0; i<geometry->Size(); i++) {
+		if (strlen(nstr))
+			sprintf(nstr2,"%s %s",nstr,name);
+		else
+			sprintf(nstr2,"%s",name);
+
+		((KML_Object *)geometry->GetObjectByOffset(i))->WriteExp(fid,nstr2,sgn,cm,sp);
+	}
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Placemark.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Placemark.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Placemark.h	(revision 27955)
@@ -0,0 +1,40 @@
+/*! \file KML_Placemark.h 
+ *  \brief: header file for kml_placemark object
+ */
+
+#ifndef _KML_PLACEMARK_H_
+#define _KML_PLACEMARK_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Feature.h"
+class KML_Geometry;
+class DataSet;
+/*}}}*/
+
+class KML_Placemark: public KML_Feature {
+
+	public:
+
+		DataSet* geometry;
+
+		/*KML_Placemark constructors, destructors {{{*/
+		KML_Placemark();
+		~KML_Placemark();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_PLACEMARK_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Point.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Point.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Point.cpp	(revision 27955)
@@ -0,0 +1,185 @@
+/*!\file KML_Point.cpp
+ * \brief: implementation of the kml_point object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Point.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Point::KML_Point(){/*{{{*/
+
+	extrude   =false;
+	memcpy(altmode,"clampToGround",(strlen("clampToGround")+1)*sizeof(char));
+
+	coords[0] = 0.;
+	coords[1] = 0.;
+	coords[2] = 0.;
+
+}
+/*}}}*/
+KML_Point::~KML_Point(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Point::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_Point:\n");
+	KML_Geometry::Echo();
+
+	if(flag) _printf0_("       extrude: " << (extrude ? "true" : "false") << "\n");
+	if(flag) _printf0_("       altmode: \"" << altmode << "\"\n");
+	if(flag) _printf0_("        coords: (" << coords[0] << "," << coords[1] << "," << coords[2] << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Point::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Point::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Point::DeepEcho(const char* indent){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_Point:\n");
+	KML_Geometry::DeepEcho(indent);
+
+	if(flag) _printf0_(indent << "       extrude: " << (extrude ? "true" : "false") << "\n");
+	if(flag) _printf0_(indent << "       altmode: \"" << altmode << "\"\n");
+	if(flag) _printf0_(indent << "        coords: (" << coords[0] << "," << coords[1] << "," << coords[2] << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Point::Write(FILE* filout,const char* indent){/*{{{*/
+
+	fprintf(filout,"%s<Point",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Geometry::Write(filout,indent);
+
+	fprintf(filout,"%s  <extrude>%d</extrude>\n",indent,(extrude ? 1 : 0));
+	fprintf(filout,"%s  <altitudeMode>%s</altitudeMode>\n",indent,altmode);
+	fprintf(filout,"%s  <coordinates>%0.16g,%0.16g,%0.16g</coordinates>\n",
+			indent,coords[0],coords[1],coords[2]);
+
+	fprintf(filout,"%s</Point>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Point::Read(FILE* fid,char* kstr){/*{{{*/
+
+	double*      pcoords=&coords[0];
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</Point", 7)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_Point::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_Point::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strcmp(kstri,"<extrude>"))
+			KMLFileTokenParse(&extrude   , kstri, fid);
+		else if (!strcmp(kstri,"<altitudeMode>"))
+			KMLFileTokenParse( altmode   ,NULL,KML_POINT_ALTMODE_LENGTH, kstri, fid);
+		else if (!strcmp(kstri,"<coordinates>"))
+			KMLFileTokenParse(&pcoords   ,NULL,3, kstri, fid);
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Geometry::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
+void  KML_Point::WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp){/*{{{*/
+
+	int     i;
+	double  lat,lon,x,y;
+	char    nstr2[81];
+
+/*  extract latitude and longitude  */
+
+	lon=coords[0];
+	lat=coords[1];
+
+/*  convert latitude and longitude to x and y  */
+
+	if (sgn) {
+		Ll2xyx(&x,&y,&lat,&lon,1,sgn,cm,sp);
+	}
+	else {
+		memcpy(&x,&lon,1*sizeof(IssmDouble));
+		memcpy(&y,&lat,1*sizeof(IssmDouble));
+	}
+
+/*  write header  */
+
+	memcpy(nstr2,nstr,(strlen(nstr)+1)*sizeof(char));
+
+	for (i=0; i<strlen(nstr2); i++)
+		if ((nstr2[i] == ' ') || (nstr2[i] == '\t'))
+			nstr2[i]='_';
+	fprintf(fid,"## Name:%s\n",nstr2);
+	fprintf(fid,"## Icon:0\n");
+	fprintf(fid,"# Points Count	Value\n");
+    fprintf(fid,"%u	%s\n",1,"1.");
+	fprintf(fid,"# X pos	Y pos\n");
+
+/*  write vertex  */
+
+    fprintf(fid,"%lf\t%lf\n",x,y);
+
+/*  write blank line  */
+
+	fprintf(fid,"\n");
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Point.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Point.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Point.h	(revision 27955)
@@ -0,0 +1,42 @@
+/*! \file KML_Point.h 
+ *  \brief: header file for kml_point object
+ */
+
+#ifndef _KML_POINT_H_
+#define _KML_POINT_H_
+
+#define KML_POINT_ALTMODE_LENGTH    18
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Geometry.h"
+/*}}}*/
+
+class KML_Point: public KML_Geometry {
+
+	public:
+
+		bool  extrude;
+		char  altmode[KML_POINT_ALTMODE_LENGTH+1];
+		double coords[3];
+
+		/*KML_Point constructors, destructors {{{*/
+		KML_Point();
+		~KML_Point();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_POINT_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_PolyStyle.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_PolyStyle.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_PolyStyle.cpp	(revision 27955)
@@ -0,0 +1,135 @@
+/*!\file KML_PolyStyle.cpp
+ * \brief: implementation of the kml_polystyle object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Object.h"
+#include "./KML_ColorStyle.h"
+#include "./KML_PolyStyle.h"
+#include "./KMLFileReadUtils.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_PolyStyle::KML_PolyStyle(){/*{{{*/
+
+	fill      =true;
+	outline   =true;
+
+}
+/*}}}*/
+KML_PolyStyle::~KML_PolyStyle(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_PolyStyle::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_PolyStyle:\n");
+	KML_ColorStyle::Echo();
+
+	if(flag) _printf0_("          fill: " << fill << "\n");
+	if(flag) _printf0_("       outline: " << outline << "\n");
+
+	return;
+}
+/*}}}*/
+void  KML_PolyStyle::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_PolyStyle::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_PolyStyle::DeepEcho(const char* indent){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_PolyStyle:\n");
+	KML_ColorStyle::DeepEcho(indent);
+
+	if(flag) _printf0_(indent << "          fill: " << fill << "\n");
+	if(flag) _printf0_(indent << "       outline: " << outline << "\n");
+
+	return;
+}
+/*}}}*/
+void  KML_PolyStyle::Write(FILE* filout,const char* indent){/*{{{*/
+
+	fprintf(filout,"%s<PolyStyle",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_ColorStyle::Write(filout,indent);
+
+	fprintf(filout,"%s  <fill>%d</fill>\n",indent,fill);
+	fprintf(filout,"%s  <outline>%d</outline>\n",indent,outline);
+
+	fprintf(filout,"%s</PolyStyle>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_PolyStyle::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</PolyStyle",11)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_PolyStyle::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_PolyStyle::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strcmp(kstri,"<fill>"))
+			KMLFileTokenParse(&fill      ,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<outline>"))
+			KMLFileTokenParse(&outline   ,
+							  kstri,
+							  fid);
+
+		else if (!strncmp(kstri,"<",1))
+			KML_ColorStyle::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_PolyStyle.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_PolyStyle.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_PolyStyle.h	(revision 27955)
@@ -0,0 +1,38 @@
+/*! \file KML_PolyStyle.h 
+ *  \brief: header file for kml_polystyle object
+ */
+
+#ifndef _KML_POLYSTYLE_H_
+#define _KML_POLYSTYLE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_ColorStyle.h"
+/*}}}*/
+
+class KML_PolyStyle: public KML_ColorStyle {
+
+	public:
+
+		int   fill;
+		int   outline;
+
+		/*KML_PolyStyle constructors, destructors {{{*/
+		KML_PolyStyle();
+		~KML_PolyStyle();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_POLYSTYLE_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Polygon.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Polygon.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Polygon.cpp	(revision 27955)
@@ -0,0 +1,283 @@
+/*!\file KML_Polygon.cpp
+ * \brief: implementation of the kml_polygon object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_LinearRing.h"
+#include "./KMLFileReadUtils.h"
+#include "./KML_Polygon.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Polygon::KML_Polygon(){/*{{{*/
+
+	extrude   =false;
+	tessellate=false;
+	memcpy(altmode,"clampToGround",(strlen("clampToGround")+1)*sizeof(char));
+
+	outer     =new DataSet;
+	inner     =new DataSet;
+
+}
+/*}}}*/
+KML_Polygon::~KML_Polygon(){/*{{{*/
+
+	if (inner) {
+		delete inner;
+		inner     =NULL;
+	}
+
+	if (outer) {
+		delete outer;
+		outer     =NULL;
+	}
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Polygon::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_Polygon:\n");
+	KML_Geometry::Echo();
+
+	if(flag) _printf0_("       extrude: " << (extrude ? "true" : "false") << "\n");
+	if(flag) _printf0_("    tessellate: " << (tessellate ? "true" : "false") << "\n");
+	if(flag) _printf0_("       altmode: \"" << altmode << "\"\n");
+	if(flag) _printf0_("         outer: (size=" << outer->Size() << ")\n");
+	if(flag) _printf0_("         inner: (size=" << inner->Size() << ")\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Polygon::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Polygon::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Polygon::DeepEcho(const char* indent){/*{{{*/
+
+	int   i;
+	char  indent2[81];
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_Polygon:\n");
+	KML_Geometry::DeepEcho(indent);
+
+	if(flag) _printf0_(indent << "       extrude: " << (extrude ? "true" : "false") << "\n");
+	if(flag) _printf0_(indent << "    tessellate: " << (tessellate ? "true" : "false") << "\n");
+	if(flag) _printf0_(indent << "       altmode: \"" << altmode << "\"\n");
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+	if (outer->Size())
+		for (i=0; i<outer->Size(); i++) {
+			if(flag) _printf0_(indent << "         outer: -------- begin [" << i << "] --------\n");
+			((KML_LinearRing *)outer->GetObjectByOffset(i))->DeepEcho(indent2);
+			if(flag) _printf0_(indent << "         outer: --------  end  [" << i << "] --------\n");
+		}
+	else
+		if(flag) _printf0_(indent << "         outer: [empty]\n");
+
+	if (inner->Size())
+		for (i=0; i<inner->Size(); i++) {
+			if(flag) _printf0_(indent << "         inner: -------- begin [" << i << "] --------\n");
+			((KML_LinearRing *)inner->GetObjectByOffset(i))->DeepEcho(indent2);
+			if(flag) _printf0_(indent << "         inner: --------  end  [" << i << "] --------\n");
+		}
+	else
+		if(flag) _printf0_(indent << "         inner: [empty]\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Polygon::Write(FILE* filout,const char* indent){/*{{{*/
+
+	int   i;
+	char  indent4[81];
+
+	fprintf(filout,"%s<Polygon",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_Geometry::Write(filout,indent);
+
+	fprintf(filout,"%s  <extrude>%d</extrude>\n",indent,(extrude ? 1 : 0));
+	fprintf(filout,"%s  <tessellate>%d</tessellate>\n",indent,(tessellate ? 1 : 0));
+	fprintf(filout,"%s  <altitudeMode>%s</altitudeMode>\n",indent,altmode);
+
+	memcpy(indent4,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent4,"    ");
+
+/*  check outer boundary for the polygon  */
+
+	fprintf(filout,"%s  <outerBoundaryIs>\n",indent);
+	if (outer->Size())
+		((KML_LinearRing *)outer->GetObjectByOffset(0))->Write(filout,indent4);
+	fprintf(filout,"%s  </outerBoundaryIs>\n",indent);
+
+/*  loop over any inner boundaries for the polygon  */
+
+	for (i=0; i<inner->Size(); i++) {
+		fprintf(filout,"%s  <innerBoundaryIs>\n",indent);
+		((KML_LinearRing *)inner->GetObjectByOffset(i))->Write(filout,indent4);
+		fprintf(filout,"%s  </innerBoundaryIs>\n",indent);
+	}
+
+	fprintf(filout,"%s</Polygon>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Polygon::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	char*        kstrj;
+	int          ncom=0;
+	char**       pcom=NULL;
+	KML_Object*  kobj;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</Polygon", 9)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_Polygon::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_Polygon::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+		else if (!strcmp(kstri,"<extrude>"))
+			KMLFileTokenParse(&extrude   ,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<tessellate>"))
+			KMLFileTokenParse(&tessellate,
+							  kstri,
+							  fid);
+		else if (!strcmp(kstri,"<altitudeMode>"))
+			KMLFileTokenParse( altmode   ,NULL,KML_POLYGON_ALTMODE_LENGTH,
+							  kstri,
+							  fid);
+
+		else if (!strcmp(kstri,"<outerBoundaryIs>"))
+
+/*  loop over and process fields within outer boundary  */
+
+			while((kstrj=KMLFileToken(fid, &ncom,&pcom))){
+				if      (!strncmp(kstrj,"</outerBoundaryIs",17)) {
+					xDelete<char>(kstrj);
+					break;
+				}
+				else if (!strncmp(kstrj,"</",2))
+				  {_error_("KML_Polygon::Read -- Unexpected closing tag " << kstrj << ".\n");}
+				else if (strncmp(kstrj,"<",1))
+				  {_error_("KML_Polygon::Read -- Unexpected field \"" << kstrj << "\".\n");}
+
+				else if (!strncmp(kstrj,"<LinearRing",11)) {
+					kobj=(KML_Object*)new KML_LinearRing();
+					kobj->Read(fid,kstrj);
+					outer     ->AddObject((Object*)kobj);
+				}
+
+				else if (!strncmp(kstrj,"<",1))
+					KML_Geometry::Read(fid,kstrj);
+
+				xDelete<char>(kstrj);
+			}
+
+		else if (!strcmp(kstri,"<innerBoundaryIs>"))
+
+/*  loop over and process fields within inner boundaries  */
+
+			while((kstrj=KMLFileToken(fid, &ncom,&pcom))){
+				if      (!strncmp(kstrj,"</innerBoundaryIs",17)) {
+					xDelete<char>(kstrj);
+					break;
+				}
+				else if (!strncmp(kstrj,"</",2))
+				  {_error_("KML_Polygon::Read -- Unexpected closing tag " << kstrj << ".\n");}
+				else if (strncmp(kstrj,"<",1))
+				  {_error_("KML_Polygon::Read -- Unexpected field \"" << kstrj << "\".\n");}
+
+				else if (!strncmp(kstrj,"<LinearRing",11)) {
+					kobj=(KML_Object*)new KML_LinearRing();
+					kobj->Read(fid,kstrj);
+					inner     ->AddObject((Object*)kobj);
+				}
+
+				else if (!strncmp(kstrj,"<",1))
+					KML_Geometry::Read(fid,kstrj);
+
+				xDelete<char>(kstrj);
+			}
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Geometry::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
+void  KML_Polygon::WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp){/*{{{*/
+
+	int   i;
+	char  nstr2[81];
+
+/*  check outer boundary for the polygon  */
+
+	if (outer->Size()) {
+		if (strlen(nstr))
+			sprintf(nstr2,"%s (outer)",nstr);
+		else
+			sprintf(nstr2,"(outer)");
+
+		((KML_LinearRing *)outer->GetObjectByOffset(0))->WriteExp(fid,nstr2,sgn,cm,sp);
+	}
+
+/*  loop over any inner boundaries for the polygon  */
+
+	for (i=0; i<inner->Size(); i++) {
+		if (strlen(nstr))
+			sprintf(nstr2,"%s (inner %d of %d)",nstr,i+1,inner->Size());
+		else
+			sprintf(nstr2,"(inner %d of %d)",i+1,inner->Size());
+
+		((KML_LinearRing *)inner->GetObjectByOffset(i))->WriteExp(fid,nstr2,sgn,cm,sp);
+	}
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Polygon.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Polygon.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Polygon.h	(revision 27955)
@@ -0,0 +1,46 @@
+/*! \file KML_Polygon.h 
+ *  \brief: header file for kml_polygon object
+ */
+
+#ifndef _KML_POLYGON_H_
+#define _KML_POLYGON_H_
+
+#define KML_POLYGON_ALTMODE_LENGTH    18
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Geometry.h"
+class KML_LinearRing;
+class DataSet;
+/*}}}*/
+
+class KML_Polygon: public KML_Geometry {
+
+	public:
+
+		bool  extrude;
+		bool  tessellate;
+		char  altmode[KML_POLYGON_ALTMODE_LENGTH+1];
+		DataSet* outer;
+		DataSet* inner;
+
+		/*KML_Polygon constructors, destructors {{{*/
+		KML_Polygon();
+		~KML_Polygon();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		void  WriteExp(FILE* fid,const char* nstr,int sgn,double cm,double sp);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_POLYGON_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Style.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Style.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Style.cpp	(revision 27955)
@@ -0,0 +1,229 @@
+/*!\file KML_Style.cpp
+ * \brief: implementation of the kml_style object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KMLFileReadUtils.h"
+#include "./KML_LineStyle.h"
+#include "./KML_PolyStyle.h"
+#include "./KML_Style.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Style::KML_Style(){/*{{{*/
+
+	icon      =NULL;
+	label     =NULL;
+	line      =NULL;
+	poly      =NULL;
+	balloon   =NULL;
+	list      =NULL;
+
+}
+/*}}}*/
+KML_Style::~KML_Style(){/*{{{*/
+
+	if (list) {
+//		delete list;
+		list      =NULL;
+	}
+	if (balloon) {
+//		delete balloon;
+		balloon   =NULL;
+	}
+	if (poly) {
+		delete poly;
+		poly      =NULL;
+	}
+	if (line) {
+		delete line;
+		line      =NULL;
+	}
+	if (label) {
+//		delete label;
+		label     =NULL;
+	}
+	if (icon) {
+//		delete icon;
+		icon      =NULL;
+	}
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Style::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_Style:\n");
+	KML_StyleSelector::Echo();
+
+	if(flag) _printf0_("          icon: " << icon << "\n");
+	if(flag) _printf0_("         label: " << label << "\n");
+	if(flag) _printf0_("          line: " << line << "\n");
+	if(flag) _printf0_("          poly: " << poly << "\n");
+	if(flag) _printf0_("       balloon: " << balloon << "\n");
+	if(flag) _printf0_("          list: " << list << "\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Style::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Style::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Style::DeepEcho(const char* indent){/*{{{*/
+
+	char  indent2[81];
+	bool  flag=true;
+
+	if(flag) _printf0_(indent << "KML_Style:\n");
+	KML_StyleSelector::DeepEcho(indent);
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+	strcat(indent2,"  ");
+
+//	if (icon)
+//		icon->DeepEcho(indent2);
+//	else
+		if(flag) _printf0_(indent << "          icon: " << icon << "\n");
+//	if (label)
+//		label->DeepEcho(indent2);
+//	else
+		if(flag) _printf0_(indent << "         label: " << label << "\n");
+	if (line)
+		line->DeepEcho(indent2);
+	else
+		if(flag) _printf0_(indent << "          line: " << line << "\n");
+	if (poly)
+		poly->DeepEcho(indent2);
+	else
+		if(flag) _printf0_(indent << "          poly: " << poly << "\n");
+//	if (balloon)
+//		balloon->DeepEcho(indent2);
+//	else
+		if(flag) _printf0_(indent << "       balloon: " << balloon << "\n");
+//	if (list)
+//		list->DeepEcho(indent2);
+//	else
+		if(flag) _printf0_(indent << "          list: " << list << "\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Style::Write(FILE* filout,const char* indent){/*{{{*/
+
+	char  indent2[81];
+
+	fprintf(filout,"%s<Style",indent);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	KML_StyleSelector::Write(filout,indent);
+
+	memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));
+
+	strcat(indent2,"  ");
+
+//	if (icon)
+//		icon->Write(filout,indent2);
+//	if (label)
+//		label->Write(filout,indent2);
+	if (line)
+		line->Write(filout,indent2);
+	if (poly)
+		poly->Write(filout,indent2);
+//	if (balloon)
+//		balloon->Write(filout,indent2);
+//	if (list)
+//		list->Write(filout,indent2);
+
+	fprintf(filout,"%s</Style>\n",indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Style::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	int          ncom=0;
+	char**       pcom=NULL;
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+		if      (!strncmp(kstri,"</Style", 7)) {
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_Style::Read -- Unexpected closing tag " << kstri << ".\n");}
+		else if (strncmp(kstri,"<",1))
+		  {_error_("KML_Style::Read -- Unexpected field \"" << kstri << "\".\n");}
+
+//		else if (!strncmp(kstri,"<IconStyle",10)) {
+//			icon      =new KML_IconStyle();
+//			icon      ->Read(fid,kstri);
+//		}
+
+//		else if (!strncmp(kstri,"<LabelStyle",11)) {
+//			label     =new KML_LabelStyle();
+//			label     ->Read(fid,kstri);
+//		}
+
+		else if (!strncmp(kstri,"<LineStyle",10)) {
+			line      =new KML_LineStyle();
+			line      ->Read(fid,kstri);
+		}
+
+		else if (!strncmp(kstri,"<PolyStyle",10)) {
+			poly      =new KML_PolyStyle();
+			poly      ->Read(fid,kstri);
+		}
+
+//		else if (!strncmp(kstri,"<BalloonStyle",13)) {
+//			balloon   =new KML_BalloonStyle();
+//			balloon   ->Read(fid,kstri);
+//		}
+
+//		else if (!strncmp(kstri,"<ListStyle",10)) {
+//			list      =new KML_ListStyle();
+//			list      ->Read(fid,kstri);
+//		}
+
+		else if (!strncmp(kstri,"<",1))
+			KML_StyleSelector::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Style.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Style.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Style.h	(revision 27955)
@@ -0,0 +1,44 @@
+/*! \file KML_Style.h 
+ *  \brief: header file for kml_style object
+ */
+
+#ifndef _KML_STYLE_H_
+#define _KML_STYLE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_StyleSelector.h"
+class KML_LineStyle;
+class KML_PolyStyle;
+/*}}}*/
+
+class KML_Style: public KML_StyleSelector {
+
+	public:
+
+		void* icon;
+		void* label;
+		KML_LineStyle* line;
+		KML_PolyStyle* poly;
+		void* balloon;
+		void* list;
+
+		/*KML_Style constructors, destructors {{{*/
+		KML_Style();
+		~KML_Style();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_STYLE_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_StyleSelector.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_StyleSelector.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_StyleSelector.cpp	(revision 27955)
@@ -0,0 +1,79 @@
+/*!\file KML_StyleSelector.cpp
+ * \brief: implementation of the kml_styleselector abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_Object.h"
+#include "./KML_StyleSelector.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_StyleSelector::KML_StyleSelector(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+KML_StyleSelector::~KML_StyleSelector(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_StyleSelector::Echo(){/*{{{*/
+
+	KML_Object::Echo();
+
+	return;
+}
+/*}}}*/
+void  KML_StyleSelector::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_StyleSelector::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_StyleSelector::DeepEcho(const char* indent){/*{{{*/
+
+	KML_Object::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_StyleSelector::Write(FILE* filout,const char* indent){/*{{{*/
+
+	KML_Object::Write(filout,indent);
+
+	return;
+}
+/*}}}*/
+void  KML_StyleSelector::Read(FILE* fid,char* kstr){/*{{{*/
+
+/*  process field within opening and closing tags  */
+
+	if      (!strncmp(kstr,"</StyleSelector",15))
+		return;
+	else if (!strncmp(kstr,"</",2))
+	  {_error_("KML_StyleSelector::Read -- Unexpected closing tag " << kstr << ".\n");}
+	else if (strncmp(kstr,"<",1))
+	  {_error_("KML_StyleSelector::Read -- Unexpected field \"" << kstr << "\".\n");}
+
+	else if (!strncmp(kstr,"<",1))
+		KML_Object::Read(fid,kstr);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_StyleSelector.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_StyleSelector.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_StyleSelector.h	(revision 27955)
@@ -0,0 +1,35 @@
+/*! \file KML_StyleSelector.h 
+ *  \brief: header file for kml_styleselector abstract object
+ */
+
+#ifndef _KML_STYLESELECTOR_H_
+#define _KML_STYLESELECTOR_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Object.h"
+/*}}}*/
+
+class KML_StyleSelector: public KML_Object {
+
+	public:
+
+		/*KML_StyleSelector constructors, destructors {{{*/
+		KML_StyleSelector();
+		~KML_StyleSelector();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_STYLESELECTOR_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_SubStyle.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_SubStyle.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_SubStyle.cpp	(revision 27955)
@@ -0,0 +1,79 @@
+/*!\file KML_SubStyle.cpp
+ * \brief: implementation of the kml_substyle abstract object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KML_SubStyle.h"
+#include "./KML_Object.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_SubStyle::KML_SubStyle(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+KML_SubStyle::~KML_SubStyle(){/*{{{*/
+
+	;
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_SubStyle::Echo(){/*{{{*/
+
+	KML_Object::Echo();
+
+	return;
+}
+/*}}}*/
+void  KML_SubStyle::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_SubStyle::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_SubStyle::DeepEcho(const char* indent){/*{{{*/
+
+	KML_Object::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_SubStyle::Write(FILE* filout,const char* indent){/*{{{*/
+
+	KML_Object::Write(filout,indent);
+
+	return;
+}
+/*}}}*/
+void  KML_SubStyle::Read(FILE* fid,char* kstr){/*{{{*/
+
+/*  process field within opening and closing tags  */
+
+	if      (!strncmp(kstr,"</SubStyle",10))
+		return;
+	else if (!strncmp(kstr,"</",2))
+	  {_error_("KML_SubStyle::Read -- Unexpected closing tag " << kstr << ".\n");}
+	else if (strncmp(kstr,"<",1))
+	  {_error_("KML_SubStyle::Read -- Unexpected field \"" << kstr << "\".\n");}
+
+	else if (!strncmp(kstr,"<",1))
+		KML_Object::Read(fid,kstr);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_SubStyle.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_SubStyle.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_SubStyle.h	(revision 27955)
@@ -0,0 +1,35 @@
+/*! \file KML_SubStyle.h 
+ *  \brief: header file for kml_substyle abstract object
+ */
+
+#ifndef _KML_SUBSTYLE_H_
+#define _KML_SUBSTYLE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Object.h"
+/*}}}*/
+
+class KML_SubStyle: public KML_Object {
+
+	public:
+
+		/*KML_SubStyle constructors, destructors {{{*/
+		KML_SubStyle();
+		~KML_SubStyle();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_SUBSTYLE_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Unknown.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Unknown.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Unknown.cpp	(revision 27955)
@@ -0,0 +1,185 @@
+/*!\file KML_Unknown.cpp
+ * \brief: implementation of the kml_unknown object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./KMLFileReadUtils.h"
+#include "./KML_Unknown.h"
+#include "../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+KML_Unknown::KML_Unknown(){/*{{{*/
+
+	name      =NULL;
+	value     =NULL;
+
+}
+/*}}}*/
+KML_Unknown::~KML_Unknown(){/*{{{*/
+
+	if (name      ) xDelete<char>(name);
+	if (value     ) xDelete<char>(value);
+
+}
+/*}}}*/
+
+/*Other*/
+void  KML_Unknown::Echo(){/*{{{*/
+
+	bool  flag=true;
+
+	if(flag) _printf0_("KML_Unknown " << name << ":\n");
+	KML_Object::Echo();
+
+	if(value){
+		if(flag) _printf0_("         value: \"" << value << "\"\n");
+	}
+	else{
+		if(flag) _printf0_("         value: [none]\n");
+	}
+
+	return;
+}
+/*}}}*/
+void  KML_Unknown::DeepEcho(){/*{{{*/
+
+	char  indent[81]="";
+
+	KML_Unknown::DeepEcho(indent);
+
+	return;
+}
+/*}}}*/
+void  KML_Unknown::DeepEcho(const char* indent){/*{{{*/
+
+	char*        valuei;
+	char*        vtoken;
+	char         nl[]={'\n','\0'};
+	bool         flag=true;
+
+	if(flag) _printf0_(indent << "KML_Unknown " << name << ":\n");
+	KML_Object::DeepEcho(indent);
+
+	if (value     ) {
+		valuei=xNew<char>(strlen(value)+1);
+		memcpy(valuei,value,(strlen(value)+1)*sizeof(char)); 
+
+		vtoken=strtok(valuei,nl);
+		if(flag) _printf0_(indent << "         value: \"" << vtoken);
+
+		while((vtoken=strtok(NULL,nl)))
+			if(flag) _printf0_("\n" << indent << "                 " << vtoken);
+		if(flag) _printf0_("\"\n");
+
+		xDelete<char>(valuei);
+	}
+    else
+        if(flag) _printf0_(indent << "         value: [none]\n");
+
+	return;
+}
+/*}}}*/
+void  KML_Unknown::Write(FILE* filout,const char* indent){/*{{{*/
+
+	char*        valuei;
+	char*        vtoken;
+	char         nl[]={'\n','\0'};
+
+	fprintf(filout,"%s<%s",indent,name);
+	WriteAttrib(filout," ");
+	fprintf(filout,">\n");
+	WriteCommnt(filout,indent);
+
+	if (value     ) {
+		valuei=xNew<char>(strlen(value)+1);
+		memcpy(valuei,value,(strlen(value)+1)*sizeof(char)); 
+
+		vtoken=strtok(valuei,nl);
+		fprintf(filout,"%s  %s\n",indent,vtoken);
+
+		while((vtoken=strtok(NULL,nl)))
+			fprintf(filout,"%s  %s\n",indent,vtoken);
+
+		xDelete<char>(valuei);
+	}
+
+	KML_Object::Write(filout,indent);
+
+	fprintf(filout,"%s</%s>\n",indent,name);
+
+	return;
+}
+/*}}}*/
+void  KML_Unknown::Read(FILE* fid,char* kstr){/*{{{*/
+
+	char*        kstri;
+	char*        value2=NULL;
+	int          ncom=0;
+	char**       pcom=NULL;
+	char         nl[]={'\n','\0'};
+
+/*  get object name  */
+
+	name=KMLFileTagName(NULL,
+						kstr);
+//	_printf0_("KML_Unknown::Read -- opening name=" << name << ".\n");
+
+/*  get object attributes and check for solo tag  */
+
+	if (KMLFileTagAttrib(this,
+						 kstr))
+		return;
+
+/*  loop over and process fields within opening and closing tags  */
+
+	while((kstri=KMLFileToken(fid, &ncom,&pcom))){
+//		_printf0_("KML_Unknown::Read -- kstri=" << kstri << ".\n");
+		if      (!strncmp(&kstri[0],"</", 2) &&
+				 !strncmp(&kstri[2],name,strlen(name))) {
+//			_printf0_("KML_Unknown::Read -- closing name=" << name << ".\n");
+			xDelete<char>(kstri);
+			break;
+		}
+		else if (!strncmp(kstri,"</",2))
+		  {_error_("KML_Unknown::Read -- Unexpected closing tag " << kstri << ".\n");}
+
+		else if (strncmp(kstri,"<",1)) {
+			if (value) {
+				value2=xNew<char>(strlen(value)+1+strlen(kstri)+1);
+				memcpy(value2,value,(strlen(value)+1)*sizeof(char));
+				xDelete<char>(value);
+				value=value2;
+				value2=NULL;
+//				value=(char *) xrealloc(value,(strlen(value)+1+strlen(kstri)+1)*sizeof(char));
+				strcat(value,nl);
+				strcat(value,kstri);
+			}
+			else {
+				value=xNew<char>(strlen(kstri)+1);
+				memcpy(value,kstri,(strlen(kstri)+1)*sizeof(char));
+			}
+		}
+
+		else if (!strncmp(kstri,"<",1))
+			KML_Object::Read(fid,kstri);
+
+		xDelete<char>(kstri);
+	}
+
+	this->AddCommnt(ncom,pcom);
+
+	for(ncom=ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Unknown.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Unknown.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/KML_Unknown.h	(revision 27955)
@@ -0,0 +1,38 @@
+/*! \file KML_Unknown.h 
+ *  \brief: header file for kml_unknown object
+ */
+
+#ifndef _KML_UNKNOWN_H_
+#define _KML_UNKNOWN_H_
+
+/*Headers:*/
+/*{{{*/
+#include "../shared/shared.h"
+#include "./KML_Object.h"
+/*}}}*/
+
+class KML_Unknown: public KML_Object {
+
+	public:
+
+		char* name;
+		char* value;
+
+		/*KML_Unknown constructors, destructors {{{*/
+		KML_Unknown();
+		~KML_Unknown();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{*/
+		void  Echo();
+		void  DeepEcho();
+		void  DeepEcho(const char* indent);
+		void  Write(FILE* fid,const char* indent);
+		void  Read(FILE* fid,char* kstr);
+		int   Id(){_error_("Not implemented yet.");};
+		int   ObjectEnum(){_error_("Not implemented yet.");};
+		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(MarshallHandle* marshallhandle){ _error_("not implemented yet!");};
+		/*}}}*/
+
+};
+#endif  /* _KML_UNKNOWN_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/kml/kmlobjects.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/kml/kmlobjects.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/kml/kmlobjects.h	(revision 27955)
@@ -0,0 +1,37 @@
+/* \file kmlobjects.h
+ * \brief: prototype header for all kml related objects.
+ */
+
+#ifndef KML_OBJECTS_H_
+#define KML_OBJECTS_H_
+
+/*KML parsing objects: */
+#include "./KML_Attribute.h"
+#include "./KML_Comment.h"
+#include "./KML_ColorStyle.h"
+#include "./KML_Container.h"
+#include "./KML_Document.h"
+#include "./KML_Feature.h"
+#include "./KML_File.h"
+#include "./KML_Folder.h"
+#include "./KML_Geometry.h"
+#include "./KML_GroundOverlay.h"
+#include "./KML_Icon.h"
+#include "./KML_LatLonBox.h"
+#include "./KML_LinearRing.h"
+#include "./KML_LineString.h"
+#include "./KML_LineStyle.h"
+#include "./KML_MultiGeometry.h"
+#include "./KML_Object.h"
+#include "./KML_Overlay.h"
+#include "./KML_Point.h"
+#include "./KML_Placemark.h"
+#include "./KML_Polygon.h"
+#include "./KML_PolyStyle.h"
+#include "./KML_Style.h"
+#include "./KML_StyleSelector.h"
+#include "./KML_SubStyle.h"
+#include "./KML_Unknown.h"
+#include "./KMLFileReadUtils.h"
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/main/EnvironmentFinalize.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/main/EnvironmentFinalize.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/main/EnvironmentFinalize.cpp	(revision 27955)
@@ -0,0 +1,25 @@
+/*!\file:  EnvironmentFinalize.cpp
+ * \brief: finalize Petsc, MPI, you name it
+ */ 
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "../toolkits/toolkits.h"
+#include "../shared/shared.h"
+
+void EnvironmentFinalize(void){
+
+	int my_rank;
+
+	/*Make sure we are all here*/
+	ISSM_MPI_Barrier(ISSM_MPI_COMM_WORLD);
+
+	/*Print closing statement*/
+	ISSM_MPI_Comm_rank(ISSM_MPI_COMM_WORLD,&my_rank);
+
+	/*Finalize: */
+	//if(!my_rank) printf("closing MPI\n");
+	ISSM_MPI_Finalize();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/main/EnvironmentInit.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/main/EnvironmentInit.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/main/EnvironmentInit.cpp	(revision 27955)
@@ -0,0 +1,35 @@
+/*!\file:  EnvironmentInit.cpp
+ * \brief: initialize Petsc, MPI, you name it
+ */ 
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include <stdio.h>
+#include "../toolkits/toolkits.h"
+
+ISSM_MPI_Comm EnvironmentInit(int argc,char** argv){
+
+	/*Output*/
+	ISSM_MPI_Comm comm = 0;
+
+	/*Initialize MPI environment: */
+	#if defined(_HAVE_MPI_)
+	ISSM_MPI_Init(&argc,&argv);
+	comm = ISSM_MPI_COMM_WORLD;
+	#else
+	comm = 1; //bogus number for comm, which does not exist anyway.
+	#endif
+
+	/*Print Banner*/
+	int my_rank = 0;
+	ISSM_MPI_Comm_rank(comm,&my_rank);
+	if(!my_rank) printf("\n");
+	if(!my_rank) printf("%s version  %s\n",PACKAGE_NAME,PACKAGE_VERSION);
+	if(!my_rank) printf("(website: %s forum: %s)\n",PACKAGE_URL,PACKAGE_BUGREPORT);
+	if(!my_rank) printf("\n");
+
+	/*Return communicator*/
+	return comm;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/main/esmfbinders.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/main/esmfbinders.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/main/esmfbinders.cpp	(revision 27955)
@@ -0,0 +1,221 @@
+/*!\file:  esmfbinder.cpp
+ * \brief: ESMF binders for ISSM. Binders developed initially for the GEOS-5 framework.
+ */ 
+
+#include "./issm.h"
+#include <ESMC.h>
+
+/*GEOS 5 specific declarations:*/
+const int GCMForcingNumTerms = 1;
+const int GCMForcingTerms[GCMForcingNumTerms]= { SMBgcmEnum}; 
+const int ISSMOutputNumTerms = 1;
+const int ISSMOutputTerms[ISSMOutputNumTerms]= { SurfaceEnum };
+
+extern "C" {
+
+	FemModel *femmodel;
+
+	/*GEOS 5*/
+	void InitializeISSM(int argc, char** argv, int** pelementsonlocalrank, int* pnumberofelements, ISSM_MPI_Comm comm_init){ /*{{{*/
+
+		int numberofelements;
+		int* elementsonlocalrank=NULL;
+
+		/*Initialize femmodel from arguments provided command line: */
+		femmodel = new FemModel(argc,argv,comm_init);
+
+		/*Figure out the partition for elements, and return: */
+		numberofelements=femmodel->elements->NumberOfElements();
+
+		elementsonlocalrank=xNewZeroInit<int>(numberofelements); 
+		for(Object* & object : femmodel->elements->objects){
+			Element* element=dynamic_cast<Element*>(object);
+			elementsonlocalrank[element->Sid()]=1;
+		}
+
+		/*Some specific code here for the binding: */
+		femmodel->parameters->SetParam(SMBgcmEnum,SmbEnum); //bypass SMB model, will be provided by GCM!
+
+		/*Restart file: */
+		femmodel->Restart();
+
+		/*Assign output pointers: */
+		*pnumberofelements=numberofelements;
+		*pelementsonlocalrank=elementsonlocalrank;
+
+	} /*}}}*/
+	void RunISSM(IssmDouble dt, IssmDouble* gcmforcings, IssmDouble* issmoutputs){ /*{{{*/
+
+		int numberofelements;
+		IssmDouble yts;
+		IssmDouble rho_ice;
+		IssmDouble area;
+		IssmDouble start_time,final_time;
+
+		/*Figure out number of elements: */
+		numberofelements=femmodel->elements->Size();
+
+		/*Fetch some necessary constants: */
+		femmodel->parameters->FindParam(&yts,ConstantsYtsEnum);
+
+		/*Setup gcm forcings as element-wise input: {{{ */
+		for (int f=0;f<GCMForcingNumTerms;f++){
+
+			int forcing_type=GCMForcingTerms[f];
+
+			for (int i=0;i<femmodel->elements->Size();i++){
+				Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i));
+
+				switch(forcing_type){
+					case SMBgcmEnum:
+						/*{{{*/
+						{
+						/*Recover rho_ice: */
+						rho_ice=element->FindParam(MaterialsRhoIceEnum);
+
+						/*Recover area of element: */
+						area=element->SurfaceArea();
+
+						/*Recover smb forcing from the gcm forcings: */
+						IssmDouble smbforcing=*(gcmforcings+f*numberofelements+i); 
+
+						/*Convert to SI. The smbforcing from GEOS-5 in kg/s, and we transform it into m/s: */
+						smbforcing=smbforcing/(rho_ice*area);
+
+						/*Add into the element as new forcing :*/
+						element->AddInput(SmbMassBalanceEnum,&smbforcing,P0Enum);
+						}
+						/*}}}*/
+						break; 
+					default: 
+						{ _error_("Unknown forcing type " << forcing_type << "\n"); }
+						break;
+				}
+			}
+		}
+
+		/*}}}*/
+
+		/*Retrieve ISSM outputs and pass them back to the Gcm : {{{*/
+		for (int f=0;f<ISSMOutputNumTerms;f++){
+
+			int output_type=ISSMOutputTerms[f];
+
+			for (int i=0;i<femmodel->elements->Size();i++){
+				Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i));
+
+				switch(output_type){
+					case SurfaceEnum:
+						/*{{{*/
+						{
+
+						IssmDouble surface;
+
+						/*Recover surface from the ISSM element: */
+						Input* surface_input = element->GetInput(SurfaceEnum); _assert_(surface_input);
+						surface_input->GetInputAverage(&surface);
+
+						*(issmoutputs+f*numberofelements+i) = surface;
+
+						}
+						/*}}}*/
+						break; 
+					default: 
+						{ _error_("Unknown output type " << output_type << "\n"); }
+						break;
+				}
+			}
+		}
+
+		/*}}}*/
+
+		/*Before running, setup the time interval: */
+		femmodel->parameters->FindParam(&start_time,TimeEnum);
+		final_time=start_time+dt;
+		femmodel->parameters->SetParam(final_time,TimesteppingFinalTimeEnum); //we are bypassing ISSM's initial final time!
+
+		/*Now, run: */
+		femmodel->Solve();
+
+		/*For the next time around, save the final time as start time */
+		femmodel->parameters->SetParam(final_time,TimesteppingStartTimeEnum);
+	} /*}}}*/
+	void FinalizeISSM(){ /*{{{*/
+
+		/*Output results: */
+		OutputResultsx(femmodel);
+
+		/*Check point: */
+		femmodel->CheckPoint();
+
+		/*Wrap up: */
+		delete femmodel; femmodel=NULL;
+	} /*}}}*/
+
+	/*TODO: we need 2 initialize routines, the second one will be empty for now
+	 * In: ESMF config, ESMF Field bundle
+	 */
+
+	/*FISOC*/
+	void InitializeISSM_FISOC(int argc, char** argv,ISSM_MPI_Comm comm_init){ /*{{{*/
+
+      /*Intermediary*/
+		int rc;
+      int rank = IssmComm::GetRank();
+
+		/*Initialize femmodel from arguments provided command line: */
+		femmodel = new FemModel(argc,argv,comm_init);
+
+		/*Initialize ESMC Mesh*/
+		int pdim;        /*parametric dimension is the same as the domain dimensions */
+		int sdim = 2;    /*coordinates of each vertex is always 2  (just x,y for now) */
+		ESMC_CoordSys_Flag coordsys = ESMC_COORDSYS_CART; /*Cartesian coordinate system by default */
+		femmodel->parameters->FindParam(&pdim,DomainDimensionEnum);
+		ESMC_Mesh mesh = ESMC_MeshCreate(pdim,sdim,&coordsys,&rc);
+		if(rc!=ESMF_SUCCESS) _error_("could not create EMSC_Mesh");
+
+		/*
+		 * What do we do with vertices at the boundary, declare twice?
+		 * */
+
+		/*Add nodes (which are ISSM Vertices)*/
+		int numnodes = femmodel->vertices->Size();
+		int        *nodeId    = xNew<int>(numnodes);
+		int        *nodeOwner = xNew<int>(numnodes);
+		IssmDouble *nodeCoord = xNew<IssmDouble>(sdim*numnodes);
+		for (int i=0;i<femmodel->vertices->Size();i++){
+			Vertex* vertex = xDynamicCast<Vertex*>(femmodel->vertices->GetObjectByOffset(i));
+			nodeId[i]           = vertex->Sid()+1;
+         nodeOwner[i]        = rank;
+			nodeCoord[sdim*i+0] = vertex->x;
+			nodeCoord[sdim*i+1] = vertex->y;
+		}
+		rc = ESMC_MeshAddNodes(mesh,numnodes,nodeId,nodeCoord,nodeOwner);
+		if(rc!=ESMF_SUCCESS) _error_("could not add nodes to EMSC_Mesh");
+		xDelete<int>(nodeId);
+		xDelete<int>(nodeOwner);
+		xDelete<IssmDouble>(nodeCoord);
+
+		/*Add Elements (Assume triangles only for now)*/
+		int numelements = femmodel->elements->Size();
+		int* elemId   = xNew<int>(numelements);
+		int* elemType = xNew<int>(numelements);
+		int* elemConn = xNew<int>(numelements*3); /*Assuming triangles*/
+		for(int i=0;i<femmodel->elements->Size();i++){
+			Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+			elemId[i]   = element->Sid()+1;
+			elemType[i] = ESMC_MESHELEMTYPE_TRI; /*Assuming triangles*/
+         elemConn[i*3+0] = element->vertices[0]->Lid()+1;
+         elemConn[i*3+1] = element->vertices[1]->Lid()+1;
+         elemConn[i*3+2] = element->vertices[2]->Lid()+1;
+		}
+		rc = ESMC_MeshAddElements(mesh,numelements,elemId,elemType,elemConn,NULL,NULL,NULL);
+		xDelete<int>(elemId);
+		xDelete<int>(elemType);
+		xDelete<int>(elemConn);
+
+		/*Create restart file for later */
+		femmodel->Restart();
+	} /*}}}*/
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/main/globals.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/main/globals.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/main/globals.h	(revision 27955)
@@ -0,0 +1,22 @@
+/*!\file global.h:
+ * \brief: these are the global variables always needed. 
+ */
+
+#ifndef _GLOBALS_H_
+#define _GLOBALS_H_
+#include "../shared/io/Comm/IssmComm.h"
+#include "../toolkits/ToolkitOptions.h"
+
+/*Communicators: */
+#ifndef _DO_NOT_LOAD_GLOBALS_ 
+ISSM_MPI_Comm IssmComm::comm;
+bool IssmComm::parallel;
+
+/*String that is used to characterize our toolkits, ends up in Petsc Options
+ * database if we use Petsc. Can also be used to characterize the ISSM toolkit,
+ * often used when Petsc is not allowed*/
+char* ToolkitOptions::toolkittype;
+char* ToolkitOptions::toolkitoptions;
+#endif
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/main/issm.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/main/issm.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/main/issm.cpp	(revision 27955)
@@ -0,0 +1,41 @@
+/*!\file:  issm.cpp
+ * \brief: ISSM main program
+ */ 
+
+#include "./issm.h"
+
+int main(int argc,char **argv){
+
+	/*Initialize exception trapping: */
+	ExceptionTrapBegin();
+
+	/*Initialize environment (MPI, PETSC, MUMPS, etc ...)*/
+	ISSM_MPI_Comm comm_init=EnvironmentInit(argc,argv);
+
+	/*Initialize femmodel from arguments provided command line: */
+	FemModel *femmodel = new FemModel(argc,argv,comm_init);
+
+	/*Need to know we are firing up from ISSM main, not a coupler driver like issm_slcp or issm_ocean:*/
+	femmodel->parameters->AddObject(new IntParam(IsSlcCouplingEnum,0));
+
+	/*Solve: */
+	femmodel->Solve();
+
+	/*Output results: */
+	OutputResultsx(femmodel);
+
+	/*Wrap up: */
+	femmodel->CleanUp();
+
+	/*Delete Model: */
+	delete femmodel;
+
+	/*Finalize environment:*/
+	EnvironmentFinalize();
+
+	/*Finalize exception trapping: */
+	ExceptionTrapEnd();
+
+	/*Return unix success: */
+	return 0; 
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/main/issm.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/main/issm.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/main/issm.h	(revision 27955)
@@ -0,0 +1,26 @@
+/*!\file: issm.h
+ * \brief prototype wrapper for issm.h
+ */ 
+
+#ifndef _ISSM_H_
+#define _ISSM_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./globals.h" //only include this header file once!
+#include "../shared/shared.h"
+#include "../classes/classes.h"
+#include "../toolkits/toolkits.h"
+#include "../cores/cores.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../modules/modules.h"
+
+/*Environment*/
+ISSM_MPI_Comm EnvironmentInit(int argc,char** argv);
+void EnvironmentFinalize(void);
+
+#endif //ifndef _ISSM_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/main/issm.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/main/issm.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/main/issm.js	(revision 27955)
@@ -0,0 +1,20 @@
+function issm(binaryin){
+/*issm 
+	   usage: var output = issm(input);
+	      where: input is a typed array buffer created by marshall and output 
+		  is a binary buffer to be read by loadresultsfromcluster.
+*/
+
+	//input
+	var dbinary=new Float64Array(binaryin); var nb=dbinary.length * dbinary.BYTES_PER_ELEMENT;
+	var dbinaryPtr= Module._malloc(nb); var binHeap = new Uint8Array(Module.HEAPU8.buffer,dbinaryPtr,nb);
+	binHeap.set(new Uint8Array(dbinary.buffer)); var binary=binHeap.byteOffset;
+
+	//Declare module: 
+	issm= Module.cwrap('main','number',['number','number']);
+	
+	//Call issm:
+	var output = issm(binary, 'null');
+	
+	return output;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/main/issm_dakota.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/main/issm_dakota.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/main/issm_dakota.cpp	(revision 27955)
@@ -0,0 +1,108 @@
+/*!\file:  issm_dakota.cpp
+ * \brief: ISSM DAKOTA main program
+ */ 
+
+#include "./issm.h"
+
+/*Dakota includes: */
+#if defined(_HAVE_DAKOTA_) && _DAKOTA_MAJOR_ >= 6
+#include "ParallelLibrary.hpp"
+#include "ProblemDescDB.hpp"
+#include "LibraryEnvironment.hpp"
+#include "DakotaModel.hpp"
+#include "DakotaInterface.hpp"
+#endif
+
+int main(int argc,char **argv){ /*{{{*/
+
+	#if defined(_HAVE_DAKOTA_) && _DAKOTA_MAJOR_ >= 6
+
+	bool parallel=true;
+	char* dakota_input_file=NULL;
+	char* dakota_output_file = NULL;
+	char* dakota_error_file = NULL;
+	bool statistics=false;
+
+	/*Define MPI_DEBUG in dakota_global_defs.cpp to cause a hold here*/
+	Dakota::mpi_debug_hold();
+
+	/*Initialize MPI: */
+	ISSM_MPI_Init(&argc, &argv); // initialize MPI
+
+	/*Recover file name for dakota input file:*/
+	dakota_input_file=xNew<char>((strlen(argv[2])+strlen(argv[3])+strlen(".qmu.in")+2));
+	sprintf(dakota_input_file,"%s/%s%s",argv[2],argv[3],".qmu.in");
+
+	dakota_output_file=xNew<char>((strlen(argv[2])+strlen(argv[3])+strlen(".qmu.out")+2));
+	sprintf(dakota_output_file,"%s/%s%s",argv[2],argv[3],".qmu.out");
+
+	dakota_error_file=xNew<char>((strlen(argv[2])+strlen(argv[3])+strlen(".qmu.err")+2));
+	sprintf(dakota_error_file,"%s/%s%s",argv[2],argv[3],".qmu.err");
+
+	/*Create directory structure for model outputs:*/
+	#if _SYSTEM_HAS_FMEMOPEN_ == 1
+	statistics=DakotaDirStructure(argc,argv);
+	#endif
+
+	/* Parse input and construct Dakota LibraryEnvironment, performing input data checks*/
+	Dakota::ProgramOptions opts;
+	opts.input_file(dakota_input_file);
+	opts.output_file(dakota_output_file);
+	opts.error_file(dakota_error_file);
+
+	/* Defaults constructs the MPIManager, which assumes COMM_WORLD*/
+	Dakota::LibraryEnvironment env(opts);
+
+	/* get the list of all models matching the specified model, interface, driver:*/
+	Dakota::ModelList filt_models = env.filtered_model_list("single", "direct", "matlab");
+	if (filt_models.empty()) {
+		Cerr << "Error: no parallel interface plugin performed.  Check compatibility "
+			<< "between parallel\n       configuration and selected analysis_driver."
+			<< std::endl;
+		Dakota::abort_handler(-1);
+	}
+
+	Dakota::ProblemDescDB& problem_db = env.problem_description_db();
+	Dakota::ModelLIter ml_iter;
+	size_t model_index = problem_db.get_db_model_node(); // for restoration
+	for (ml_iter = filt_models.begin(); ml_iter != filt_models.end(); ++ml_iter) {
+		// set DB nodes to input specification for this Model
+		problem_db.set_db_model_nodes(ml_iter->model_id());
+
+		Dakota::Interface& model_interface = ml_iter->derived_interface();
+
+		// Parallel case: plug in derived Interface object with an analysisComm.
+		// Note: retrieval and passing of analysisComm is necessary only if
+		// parallel operations will be performed in the derived constructor.
+
+		// retrieve the currently active analysisComm from the Model.  In the most
+		// general case, need an array of Comms to cover all Model configurations.
+		const MPI_Comm& analysis_comm = ml_iter->analysis_comm();
+
+		// don't increment ref count since no other envelope shares this letter
+		model_interface.assign_rep(new
+				SIM::IssmParallelDirectApplicInterface(problem_db, analysis_comm, argc, argv), false);
+	}
+	problem_db.set_db_model_nodes(model_index);            // restore
+
+	/* Execute the environment:*/
+	env.execute();
+
+	/* Run statistics if requested:*/
+	#if _SYSTEM_HAS_FMEMOPEN_ == 1
+	if(statistics)DakotaStatistics(argc,argv);
+	#endif
+
+	/*free allocations:*/
+	xDelete<char>(dakota_input_file);
+	xDelete<char>(dakota_output_file);
+	xDelete<char>(dakota_error_file);
+
+	/*Return unix success: */
+	return 0; 
+	#else 
+	Cout <<  "ISSM Dakota executable was compiled without support of Dakota! Will just return now!" << "\n";
+	return 1;
+	#endif
+
+} /*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/main/issm_ocean.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/main/issm_ocean.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/main/issm_ocean.cpp	(revision 27955)
@@ -0,0 +1,68 @@
+/*!\file:  issm_ocean.cpp
+ * \brief: ISSM OCEAN main program. 
+ */ 
+
+#include "./issm.h"
+#include <stdlib.h>
+
+int main(int argc,char **argv){
+
+	/*diverse:*/
+	int    icecommsize;
+	int    my_rank,my_local_rank,my_size,my_local_size;
+	ISSM_MPI_Comm worldcomm;
+	ISSM_MPI_Comm modelcomm;
+	ISSM_MPI_Comm frommitgcm;
+	ISSM_MPI_Comm tomitgcmcomm;
+	ISSM_MPI_Status status;
+
+	/*Initialize exception trapping: */
+	ExceptionTrapBegin();
+
+	/*Initialize environment (MPI, PETSC, MUMPS, etc ...)*/
+	worldcomm=EnvironmentInit(argc,argv);
+
+	/*What is my rank?:*/
+	ISSM_MPI_Comm_rank(worldcomm,&my_rank);
+	ISSM_MPI_Comm_size(worldcomm,&my_size);
+
+	/*First model is ice, second is ocean*/
+	/*ice comm size: */
+	icecommsize=(int) strtol(argv[2], (char **)NULL, 10);
+
+	/*Split world into sub-communicators for each and every model:*/
+	ISSM_MPI_Comm_split(worldcomm,0, my_rank, &modelcomm);
+	ISSM_MPI_Comm_rank(modelcomm,&my_local_rank);
+	ISSM_MPI_Comm_size(modelcomm,&my_local_size);
+
+	ISSM_MPI_Intercomm_create( modelcomm, 0, worldcomm, my_local_size, 0, &tomitgcmcomm); 
+
+	FemModel *femmodel = new FemModel(argc,argv,modelcomm);
+
+	/*Now that the models are initialized, keep communicator information in the parameters datasets of each model: */
+	femmodel->parameters->AddObject(new GenericParam<ISSM_MPI_Comm>(worldcomm,WorldCommEnum));
+	femmodel->parameters->AddObject(new GenericParam<ISSM_MPI_Comm>(tomitgcmcomm,ToMITgcmCommEnum));
+
+	/*Solve: */
+	femmodel->Solve();
+
+	/*Output results: */
+	OutputResultsx(femmodel);
+
+	/*Wrap up: */
+	femmodel->CleanUp();
+
+	/*Delete Model: */
+	delete femmodel;
+
+	/*Finalize environment:*/
+	EnvironmentFinalize();
+
+	/*Finalize exception trapping: */
+	ExceptionTrapEnd();
+
+	/*Free resources:*/
+
+	/*Return unix success: */
+	return 0; 
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/main/issm_post.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/main/issm_post.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/main/issm_post.cpp	(revision 27955)
@@ -0,0 +1,26 @@
+/*!\file:  issm_post.cpp
+ * \brief: ISSM DAKOTA post-processing of statistics
+ */ 
+
+#include "./issm.h"
+#include <sys/stat.h>
+
+int main(int argc,char **argv){ /*{{{*/
+
+	char* dakota_input_file=NULL;
+	char* dakota_output_file = NULL;
+	char* dakota_error_file = NULL;
+	bool statistics=false;
+
+	/*Initialize MPI: */
+	ISSM_MPI_Init(&argc, &argv); // initialize MPI
+
+	/*Run statistics:*/
+	#if _SYSTEM_HAS_FMEMOPEN_ == 1
+	DakotaStatistics(argc,argv);
+	#endif
+
+	/*Return unix success: */
+	return 0; 
+
+} /*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/main/issm_slc.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/main/issm_slc.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/main/issm_slc.cpp	(revision 27955)
@@ -0,0 +1,136 @@
+/*!\file:  issm_slc.cpp
+ * \brief: ISSM SLR main program. 
+ */ 
+
+#include "./issm.h"
+#include <stdlib.h>
+
+int main(int argc,char **argv){
+
+	/*diverse:*/
+	int    nummodels;
+	int*   commsizes=NULL;
+	int*   rankzeros=NULL;
+	char** dirnames=NULL;
+	char** modelnames=NULL;
+	int    modelid; 
+	int    earthid; 
+	int    my_rank;
+	int    count=0;
+	ISSM_MPI_Comm worldcomm;
+	ISSM_MPI_Comm modelcomm;
+	ISSM_MPI_Comm toearthcomm;
+	ISSM_MPI_Comm* fromicecomms=NULL;
+
+	/*Initialize exception trapping: */
+	ExceptionTrapBegin();
+
+	/*Initialize environment (MPI, PETSC, MUMPS, etc ...)*/
+	worldcomm=EnvironmentInit(argc,argv);
+
+	/*What is my rank?:*/
+	ISSM_MPI_Comm_rank(worldcomm,&my_rank);
+
+	/*How many models are we going to run (along with description and number of dedicated cores):{{{*/
+	nummodels=(int) strtol(argv[4], (char **)NULL, 10);
+	commsizes=xNew<int>(nummodels);
+	dirnames=xNew<char*>(nummodels);
+	modelnames=xNew<char*>(nummodels);
+	rankzeros=xNew<int>(nummodels);
+	for(int i=0;i<nummodels;i++){
+		char* string=NULL;
+
+		string=xNew<char>(strlen(argv[5+3*i])+1);
+		xMemCpy<char>(string,argv[5+3*i],strlen(argv[5+3*i])+1);
+		dirnames[i]=string;
+
+		string=xNew<char>(strlen(argv[5+3*i+1])+1);
+		xMemCpy<char>(string,argv[5+3*i+1],strlen(argv[5+3*i+1])+1);
+		modelnames[i]=string;
+
+		commsizes[i]=(int) strtol(argv[5+3*i+2], (char **)NULL, 10);
+	}
+
+	/*Figure out which model each cpu will belong to: */
+	count=0;
+	for(int i=0;i<nummodels;i++){
+		if(my_rank>=count && my_rank<(count+commsizes[i])){
+			modelid=i;
+			break;
+		}
+		count+=commsizes[i];
+	} 
+	/*Buil array of who is rank 0 of their own group:*/
+	count=0;
+	for(int i=0;i<nummodels;i++){
+		rankzeros[i]=count;
+		count+=commsizes[i];
+	}
+	/*}}}*/
+
+	/*Split world into sub-communicators for each and every model:*/
+	ISSM_MPI_Comm_split(worldcomm,modelid, my_rank, &modelcomm);
+
+	/*Build inter communicators:*/
+	earthid=nummodels-1; //last model to be provided in the argument list if the earth model.
+	if(modelid==earthid){
+		fromicecomms=xNew<ISSM_MPI_Comm>(nummodels-1);
+		for(int i=0;i<earthid;i++){
+			ISSM_MPI_Intercomm_create( modelcomm, 0, worldcomm, rankzeros[i], i, fromicecomms+i); //communicate from local erth comm 9rank 0) to ice comm (rank 0) using modelid tag.
+		}
+	}
+	else{
+		ISSM_MPI_Intercomm_create( modelcomm, 0, worldcomm, rankzeros[earthid], modelid, &toearthcomm); //communicate from local ice comm (rank 0) to earth comm (rank 0) using modelid tag.
+	}
+
+	/*Supply specific argc and argv for each sub-communicator (corresponding to each  model specificatiions):{{{*/
+	char** arguments=xNew<char*>(4);
+	arguments[0]=xNew<char>(strlen(argv[0])+1); xMemCpy<char>(arguments[0],argv[0],strlen(argv[0])+1); //executable name
+	arguments[1]=xNew<char>(strlen(argv[1])+1); xMemCpy<char>(arguments[1],argv[1],strlen(argv[1])+1); //solution name
+	arguments[2]=xNew<char>(strlen(argv[5+3*modelid])+1); xMemCpy<char>(arguments[2],argv[5+3*modelid],strlen(argv[5+3*modelid])+1); //directory name
+	arguments[3]=xNew<char>(strlen(argv[5+3*modelid+1])+1); xMemCpy<char>(arguments[3],argv[5+3*modelid+1],strlen(argv[5+3*modelid+1])+1); //model name
+	/*}}}*/
+
+	/*Initialize femmodel from arguments provided command line: */
+	FemModel *femmodel = new FemModel(4,arguments,modelcomm);
+
+	/*Now that the models are initialized, keep communicator information in the parameters datasets of each model: */
+	femmodel->parameters->AddObject(new GenericParam<ISSM_MPI_Comm>(worldcomm,WorldCommEnum));
+	femmodel->parameters->AddObject(new IntParam(NumModelsEnum,nummodels));
+	femmodel->parameters->AddObject(new IntParam(ModelIdEnum,modelid));
+	femmodel->parameters->AddObject(new IntParam(EarthIdEnum,earthid));
+	femmodel->parameters->AddObject(new IntParam(IsSlcCouplingEnum,1));
+	if(modelid==earthid) femmodel->parameters->AddObject(new GenericParam<ISSM_MPI_Comm*>(fromicecomms,IcecapToEarthCommEnum));
+	else femmodel->parameters->AddObject(new GenericParam<ISSM_MPI_Comm>(toearthcomm,IcecapToEarthCommEnum));
+
+	/*Solve: */
+	femmodel->Solve();
+
+	/*Output results: */
+	OutputResultsx(femmodel);
+
+	/*Wrap up: */
+	femmodel->CleanUp();
+
+	/*Delete Model: */
+	delete femmodel;
+
+	/*Finalize environment:*/
+	EnvironmentFinalize();
+
+	/*Finalize exception trapping: */
+	ExceptionTrapEnd();
+
+	/*Free resources:*/
+	xDelete<int>(commsizes);
+	for(int i=0;i<nummodels;i++){
+		char* string=NULL;
+		string=dirnames[i]; xDelete<char>(string);
+		string=modelnames[i]; xDelete<char>(string);
+	}
+	xDelete<char*>(dirnames);
+	xDelete<char*>(modelnames);
+
+	/*Return unix success: */
+	return 0; 
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/main/kriging.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/main/kriging.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/main/kriging.cpp	(revision 27955)
@@ -0,0 +1,166 @@
+/*!\file:  kriging.cpp
+ * \brief: kriging main parallel program
+ */
+
+#include "./issm.h"
+
+/*Local prototypes*/
+void ProcessArguments2(char** pbinfilename,char** poutbinfilename,char** plockfilename,char** prootpath,int argc,char **argv);
+void ProcessInputfile(double **px,double **py,double **pdata,int *pnobs,double **px_interp,double **py_interp,int *pninterp,Options **poptions,FILE* fid);
+
+int main(int argc,char **argv){
+
+	/*I/O: */
+	FILE *output_fid = NULL;
+	FILE *input_fid  = NULL;
+
+	/*File names*/
+	char *lockfilename   = NULL;
+	char *binfilename    = NULL;
+	char *outbinfilename = NULL;
+	char *rootpath       = NULL;
+
+	/*Input*/
+	int         ninterp,nobs;
+	double *x        = NULL;
+	double *y        = NULL;
+	double *data     = NULL;
+	double *x_interp = NULL;
+	double *y_interp = NULL;
+	Options    *options  = NULL;
+
+	/*Output*/
+	double *predictions = NULL;
+	double *error       = NULL;
+
+	/*Initialize exception trapping: */
+	ExceptionTrapBegin();
+
+	/*Initialize environment (MPI, PETSC, MUMPS, etc ...)*/
+	ISSM_MPI_Comm comm=EnvironmentInit(argc,argv);
+	IssmComm::SetComm(comm);
+
+	ProcessArguments2(&binfilename,&outbinfilename,&lockfilename,&rootpath,argc,argv);
+
+	/*Process input files*/
+	input_fid=pfopen(binfilename,"rb");
+	ProcessInputfile(&x,&y,&data,&nobs,&x_interp,&y_interp,&ninterp,&options,input_fid);
+	pfclose(input_fid,binfilename);
+
+	_printf0_("call computational core:\n");
+	pKrigingx(&predictions,&error,x,y,data,nobs,x_interp,y_interp,ninterp,options);
+
+	_printf0_("write results to disk:\n");
+	Results *results = new Results();
+	if(IssmComm::GetRank()==0){
+		output_fid=pfopen0(outbinfilename,"wb");
+		results->AddObject(new GenericExternalResult<double*>(results->Size()+1,"predictions",predictions,ninterp,1,1,0));
+		results->AddObject(new GenericExternalResult<double*>(results->Size()+1,"error",error,ninterp,1,1,0));
+		for(Object* & object :results->objects){
+			ExternalResult* result=xDynamicCast<ExternalResult*>(object);
+			result->WriteData(output_fid,1);
+		}
+		pfclose(output_fid,outbinfilename);
+	}
+
+	/*Close output and toolkits options file and write lock file if requested*/
+	_printf0_("write lock file:\n");
+	WriteLockFile(lockfilename);
+
+	/*Free resources: */
+	xDelete<char>(lockfilename);
+	xDelete<char>(binfilename);
+	xDelete<char>(outbinfilename);
+	xDelete<char>(rootpath);
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<double>(data);
+	xDelete<double>(x_interp);
+	xDelete<double>(y_interp);
+	xDelete<double>(predictions);
+	xDelete<double>(error);
+	delete options;
+	delete results;
+
+	/*Finalize environment:*/
+	EnvironmentFinalize();
+
+	/*Finalize exception trapping: */
+	ExceptionTrapEnd();
+
+	return 0; //unix success return;
+}
+
+void ProcessArguments2(char** pbinfilename,char** poutbinfilename,char** plockfilename,char** prootpath,int argc,char **argv){
+	char *modelname      = NULL;
+	char *binfilename    = NULL;
+	char *outbinfilename = NULL;
+	char *lockfilename   = NULL;
+	char *rootpatharg    = NULL;
+	char *rootpath       = NULL;
+
+	if(argc<1)_error_("Usage error: no execution path provided");
+	if(argc<2)_error_("Usage error: missing model name");
+
+	rootpatharg=argv[1];
+	if(strcmp(strstr(rootpatharg,"/"),"/")!=0){
+		rootpath       = xNew<char>(strlen(rootpatharg)+2); sprintf(rootpath,"%s/",rootpatharg);
+	}
+	else{
+		rootpath       = xNew<char>(strlen(rootpatharg)+1); sprintf(rootpath,"%s",rootpatharg);
+	}
+
+	modelname=argv[2];
+	if(strstr(modelname,rootpath)==NULL){
+		binfilename    = xNew<char>(strlen(rootpath)+strlen(modelname)+strlen(".bin")   +1); sprintf(binfilename,   "%s%s%s",rootpath,modelname,".bin");
+		outbinfilename = xNew<char>(strlen(rootpath)+strlen(modelname)+strlen(".outbin")+1); sprintf(outbinfilename,"%s%s%s",rootpath,modelname,".outbin");
+		lockfilename   = xNew<char>(strlen(rootpath)+strlen(modelname)+strlen(".lock")  +1); sprintf(lockfilename,  "%s%s%s",rootpath,modelname,".lock");
+	}
+	else{
+		binfilename    = xNew<char>(strlen(modelname)+strlen(".bin")   +1); sprintf(binfilename,   "%s%s",modelname,".bin");
+		outbinfilename = xNew<char>(strlen(modelname)+strlen(".outbin")+1); sprintf(outbinfilename,"%s%s",modelname,".outbin");
+		lockfilename   = xNew<char>(strlen(modelname)+strlen(".lock")  +1); sprintf(lockfilename,  "%s%s",modelname,".lock");
+	}
+
+	/*Clean up and assign output pointer*/
+	*pbinfilename=binfilename;
+	*poutbinfilename=outbinfilename;
+	*plockfilename=lockfilename;
+	*prootpath=rootpath;
+}
+
+void ProcessInputfile(double **px,double **py,double **pdata,int *pnobs,double **px_interp,double **py_interp,int *pninterp,Options **poptions,FILE* fid){
+
+	int     ninterp,nobs;
+	double *x        = NULL;
+	double *y        = NULL;
+	double *data     = NULL;
+	double *x_interp = NULL;
+	double *y_interp = NULL;
+	Options    *options  = NULL;
+
+	int      M,N;
+	IoModel* iomodel = new IoModel();
+	iomodel->fid=fid;
+	iomodel->CheckFile();
+	iomodel->FetchData(&x,&M,&N,"md.x");               nobs=M*N;
+	iomodel->FetchData(&y,&M,&N,"md.y");               _assert_(M*N==nobs);
+	iomodel->FetchData(&data,&M,&N,"md.data");         _assert_(M*N==nobs);
+	iomodel->FetchData(&x_interp,&M,&N,"md.x_interp"); ninterp=M*N;
+	iomodel->FetchData(&y_interp,&M,&N,"md.y_interp"); _assert_(M*N==ninterp);
+
+	/*Read options*/
+	options = new Options();
+	iomodel->FetchData(options,"md.y_interp");
+
+	/*Assign output pointer*/
+	*px        = x;
+	*py        = y;
+	*pdata     = data;
+	*pnobs     = nobs;
+	*px_interp = x_interp;
+	*py_interp = y_interp;
+	*pninterp  = ninterp;
+	*poptions  = options;
+	delete iomodel;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp	(revision 27955)
@@ -0,0 +1,281 @@
+/*!\file AllocateSystemMatricesx
+ * \brief retrieve vector from inputs in elements
+ */
+
+#include "./AllocateSystemMatricesx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void AllocateSystemMatricesx(Matrix<IssmDouble>** pKff,Matrix<IssmDouble>** pKfs,Vector<IssmDouble>** pdf,Vector<IssmDouble>** ppf,FemModel* femmodel){
+
+	/*Intermediary*/
+	int  fsize,ssize,flocalsize,slocalsize;
+	int  connectivity, numberofdofspernode;
+	int  m,n,M,N;
+	int *d_nnz = NULL;
+	int *o_nnz = NULL;
+
+	/*output*/
+	Matrix<IssmDouble> *Kff  = NULL;
+	Matrix<IssmDouble> *Kfs  = NULL;
+	Vector<IssmDouble> *pf   = NULL;
+	Vector<IssmDouble> *df   = NULL;
+
+	bool oldalloc=false;
+	char* toolkittype=NULL;
+
+	/*retrieve parameters: */
+	femmodel->parameters->FindParam(&connectivity,MeshAverageVertexConnectivityEnum);
+
+	/*retrieve node info*/
+	fsize      = femmodel->nodes->NumberOfDofs(FsetEnum);
+	ssize      = femmodel->nodes->NumberOfDofs(SsetEnum);
+	flocalsize = femmodel->nodes->NumberOfDofsLocal(FsetEnum);
+	slocalsize = femmodel->nodes->NumberOfDofsLocal(SsetEnum);
+
+	numberofdofspernode=femmodel->nodes->MaxNumDofs(GsetEnum);
+
+	/*if our matrices are coming from issm, we don't do dynamic allocation like Petsc
+	 * does, and this routine is essentially useless. Force standard alloc in this case: */
+	toolkittype=ToolkitOptions::GetToolkitType();
+
+	if(oldalloc){
+		if(pKff) Kff=new Matrix<IssmDouble>(fsize,fsize,connectivity,numberofdofspernode);
+		if(pKfs) Kfs=new Matrix<IssmDouble>(fsize,ssize,connectivity,numberofdofspernode);
+		if(pdf)  df =new Vector<IssmDouble>(fsize);
+		if(ppf)  pf =new Vector<IssmDouble>(fsize);
+	}
+	else{
+		if(pKff){
+			m=flocalsize; n=flocalsize; /*local  sizes*/
+			M=fsize;      N=fsize;      /*global sizes*/
+			if(strcmp(toolkittype,"issm")==0){
+				Kff=new Matrix<IssmDouble>(m,n,M,N,NULL,NULL);
+			}
+			else{
+				MatrixNonzeros(&d_nnz,&o_nnz,femmodel,FsetEnum,FsetEnum);
+				Kff=new Matrix<IssmDouble>(m,n,M,N,d_nnz,o_nnz);
+				xDelete<int>(d_nnz);
+				xDelete<int>(o_nnz);
+			}
+		}
+		if(pKfs){
+			m=flocalsize; n=slocalsize; /*local  sizes*/
+			M=fsize;      N=ssize;      /*global sizes*/
+			if(strcmp(toolkittype,"issm")==0){
+				Kfs=new Matrix<IssmDouble>(m,n,M,N,NULL,NULL);
+			}
+			else{
+				MatrixNonzeros(&d_nnz,&o_nnz,femmodel,FsetEnum,SsetEnum);
+				Kfs=new Matrix<IssmDouble>(m,n,M,N,d_nnz,o_nnz);
+				xDelete<int>(d_nnz);
+				xDelete<int>(o_nnz);
+			}
+		}
+		if(pdf) df =new Vector<IssmDouble>(flocalsize,fsize);
+		if(ppf) pf =new Vector<IssmDouble>(flocalsize,fsize);
+	}
+
+	/*Free resources: */
+	xDelete<char>(toolkittype);
+
+	/*Allocate output pointers*/
+	if(pKff) *pKff = Kff;
+	if(pKfs) *pKfs = Kfs;
+	if(pdf)  *pdf  = df;
+	if(ppf)  *ppf  = pf;
+}
+
+void MatrixNonzeros(int** pd_nnz,int** po_nnz,FemModel* femmodel,int set1enum,int set2enum){
+
+	/*Intermediary*/
+	int      i,j,k,index,offset,count;
+	int      d_nz,o_nz;
+	Element *element            = NULL;
+	Load    *load               = NULL;
+	int     *head_e             = NULL;
+	int     *next_e             = NULL;
+	int     *count2offset_e     = NULL;
+	int     *head_l             = NULL;
+	int     *next_l             = NULL;
+	int     *count2offset_l     = NULL;
+	int     *lidlist            = NULL;
+
+	/*output*/
+	int *d_nnz = NULL;
+	int *o_nnz = NULL;
+
+	/*Get vector size and number of nodes*/
+	int numnodes            = femmodel->nodes->NumberOfNodes();
+	int localmasters        = femmodel->nodes->NumberOfNodesLocal();
+	int localnumnodes       = femmodel->nodes->Size();
+	int numberofdofspernode = femmodel->nodes->MaxNumDofs(GsetEnum);
+	//int M                   = femmodel->nodes->NumberOfDofs(set1enum);
+	int N                   = femmodel->nodes->NumberOfDofs(set2enum);
+	int m                   = femmodel->nodes->NumberOfDofsLocal(set1enum);
+	int n                   = femmodel->nodes->NumberOfDofsLocal(set2enum);
+	int numnodesperelement  = femmodel->elements->MaxNumNodes();
+	int numnodesperload     = femmodel->loads->MaxNumNodes();
+	int elementssize        = femmodel->elements->Size();
+	int loadssize           = femmodel->loads->Size();
+
+	/*First, we are building chaining vectors so that we know what nodes are
+	 * connected to what elements. These vectors are such that:
+	 *   for(int i=head[id];i!=-1;i=next[i])
+	 * will loop over all the elements that are connected to the node number
+	 * id*/
+	head_e         = xNew<int>(localnumnodes); for(i=0;i<localnumnodes;i++) head_e[i]=-1;
+	next_e         = xNew<int>(elementssize*numnodesperelement);
+	count2offset_e = xNew<int>(elementssize*numnodesperelement);
+	k=0;
+	i=-1;
+	for(Object* & object : femmodel->elements->objects){
+      element = xDynamicCast<Element*>(object);
+		i+=1;
+		int elementnumnodes = element->GetNumberOfNodes();
+		lidlist = xNew<int>(elementnumnodes);
+		element->GetNodesLidList(lidlist);
+
+		for(j=0;j<elementnumnodes;j++){
+			index = lidlist[j];
+			_assert_(index>=0 && index<numnodes);
+
+			count2offset_e[k]=i;
+			next_e[k]=head_e[index];
+			head_e[index]=k++;
+		}
+		k = k + (numnodesperelement-elementnumnodes);
+
+		xDelete<int>(lidlist);
+	}
+	/*Chain for loads*/
+	head_l         = xNew<int>(localnumnodes); for(i=0;i<localnumnodes;i++) head_l[i]=-1;
+	next_l         = xNew<int>(loadssize*numnodesperload);
+	count2offset_l = xNew<int>(loadssize*numnodesperload);
+	k=0;
+	i=-1;
+	for(Object* & object : femmodel->loads->objects){
+      load = xDynamicCast<Load*>(object);
+		i+=1;
+		int loadnumnodes = load->GetNumberOfNodes();
+		lidlist = xNew<int>(loadnumnodes);
+		load->GetNodesLidList(lidlist);
+
+		for(j=0;j<loadnumnodes;j++){
+			index = lidlist[j];
+			_assert_(index>=0 && index<numnodes);
+
+			count2offset_l[k]=i;
+			next_l[k]=head_l[index];
+			head_l[index]=k++;
+		}
+		k = k + (numnodesperload-loadnumnodes);
+
+		xDelete<int>(lidlist);
+	}
+
+	/*OK now count number of dofs and flag each nodes for each node i*/
+	bool *flags                = xNew<bool>(localnumnodes);
+	int  *flagsindices         = xNew<int>(localnumnodes);
+	int  *d_connectivity       = xNewZeroInit<int>(localnumnodes);
+	int  *o_connectivity       = xNewZeroInit<int>(localnumnodes);
+	int   flagsindices_counter;
+	int   analysis_type;
+
+	Vector<IssmDouble> *connectivity_clone= new Vector<IssmDouble>(localmasters,numnodes);
+	femmodel->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+	/*Resetting flags to false at each iteration takes a lot of time, so we keep track of the flags
+	 * to reset in flagsindices, initialized with -1*/
+	for(i = 0;i<localnumnodes;i++) flags[i]        = false;
+	for(i = 0;i<localnumnodes;i++) flagsindices[i] = -1;
+
+	/*Create connectivity vector*/
+	for(Object* & object : femmodel->nodes->objects){
+      Node* node = xDynamicCast<Node*>(object);
+		int   lid = node->Lid();
+		int   pid = node->Pid();
+		/*Reinitialize flags to false*/
+		j=0;
+		while(j<localnumnodes){
+			if(flagsindices[j]>=0){
+				flags[flagsindices[j]] = false;
+				flagsindices[j]        = -1;
+				j++;
+			}
+			else{
+				break;
+			}
+		}
+		flagsindices_counter = 0;
+		for(j=head_e[lid];j!=-1;j=next_e[j]){
+			offset=count2offset_e[j];
+			element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(offset));
+			element->SetwiseNodeConnectivity(&d_nz,&o_nz,node,flags,flagsindices,&flagsindices_counter,set1enum,set2enum,analysis_type);
+			if(node->IsClone()){
+				connectivity_clone->SetValue(pid,d_nz+o_nz,ADD_VAL);
+			}
+			else{
+				d_connectivity[lid]+=d_nz;
+				o_connectivity[lid]+=o_nz;
+			}
+		}
+		for(j=head_l[lid];j!=-1;j=next_l[j]){
+			offset=count2offset_l[j];
+			load=xDynamicCast<Load*>(femmodel->loads->GetObjectByOffset(offset));
+			load->SetwiseNodeConnectivity(&d_nz,&o_nz,node,flags,flagsindices,&flagsindices_counter,set1enum,set2enum);
+			if(node->IsClone()){
+				connectivity_clone->SetValue(pid,d_nz+o_nz,ADD_VAL);
+			}
+			else{
+				d_connectivity[lid]+=d_nz;
+				o_connectivity[lid]+=o_nz;
+			}
+		}
+	}
+	xDelete<bool>(flags);
+	xDelete<int>(flagsindices);
+	xDelete<int>(count2offset_e);
+	xDelete<int>(head_e);
+	xDelete<int>(next_e);
+	xDelete<int>(count2offset_l);
+	xDelete<int>(head_l);
+	xDelete<int>(next_l);
+
+	/*sum over all cpus*/
+	connectivity_clone->Assemble();
+	IssmDouble* serial_connectivity_clone=NULL;
+	femmodel->GetLocalVectorWithClonesNodes(&serial_connectivity_clone,connectivity_clone);
+	delete connectivity_clone;
+
+	if(set1enum==FsetEnum){
+		count=0;
+		d_nnz=xNew<int>(m);
+		o_nnz=xNew<int>(m);
+		for(Object* & object : femmodel->nodes->objects){
+			Node* node = xDynamicCast<Node*>(object);
+			int   lid = node->Lid();
+			if(!node->IsClone()){
+				int node_fsize = node->FSize();
+				for(j=0;j<node_fsize;j++){
+					_assert_(count<m);
+					d_nnz[count]=numberofdofspernode*(d_connectivity[lid] + reCast<int>(serial_connectivity_clone[lid]));
+					o_nnz[count]=numberofdofspernode*(o_connectivity[lid] + reCast<int>(serial_connectivity_clone[lid]));
+					if(d_nnz[count]>n)   d_nnz[count]=n;
+					if(o_nnz[count]>N-n) o_nnz[count]=N-n;
+					count++;
+				}
+			}
+		}
+		_assert_(m==count);
+	}
+	else{
+		_error_("STOP not implemented");
+	}
+	xDelete<int>(d_connectivity);
+	xDelete<int>(o_connectivity);
+	xDelete<IssmDouble>(serial_connectivity_clone);
+
+	/*Allocate ouptput pointer*/
+	*pd_nnz=d_nnz;
+	*po_nnz=o_nnz;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  AllocateSystemMatricesx.h
+*/ 
+
+#ifndef _ALLOCATESYSTEMMATRICESX_H
+#define _ALLOCATESYSTEMMATRICESX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void AllocateSystemMatricesx(Matrix<IssmDouble>** pKff,Matrix<IssmDouble>** pKfs,Vector<IssmDouble>** pdf,Vector<IssmDouble>** ppf,FemModel* femmodel);
+void MatrixNonzeros(int** pd_nnz,int** po_nnz,FemModel* femmodel,int set1enum,int set2enum);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/AverageOntoPartitionx/AverageOntoPartitionx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/AverageOntoPartitionx/AverageOntoPartitionx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/AverageOntoPartitionx/AverageOntoPartitionx.cpp	(revision 27955)
@@ -0,0 +1,54 @@
+/*!\file AverageOntoPartitionx
+ * \brief: average vertex vector values onto a sub-partition of the vertices
+ * used by scaled responses in Qmu analysis. See DakotaResponses module.
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./AverageOntoPartitionx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void AverageOntoPartitionx(double** paverage, Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,double* vertex_response,double* qmu_part,int npart){
+
+	/*output: */
+	Vector<IssmDouble>* partition_contributions=NULL;
+	Vector<IssmDouble>* partition_areas=NULL;
+	Vector<IssmDouble>* vec_average=NULL;
+	double* average=NULL;
+
+	/*average onto the separate areas. The result will be a npart sized vector. */
+
+	/*allocate: */
+	partition_contributions=new Vector<IssmDouble>(npart);
+	partition_areas=new Vector<IssmDouble>(npart);
+	vec_average=new Vector<IssmDouble>(npart);
+
+	/*loop on each element, and add contribution of the element to the partition (surface weighted average): */
+	for(Object* & object : elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		element->AverageOntoPartition(partition_contributions,partition_areas,vertex_response,qmu_part);
+	}
+
+	/*Assemble: */
+	partition_contributions->Assemble();
+	partition_areas->Assemble();
+
+	/*We have the partition_areas and the partition_contributions for each partition -> compute the surfae weighted average: */
+	vec_average->PointwiseDivide(partition_contributions,partition_areas);
+
+	/*serialize:*/
+	average=vec_average->ToMPISerial();
+
+	/*Free resources:*/
+	delete partition_contributions;
+	delete partition_areas;
+	delete vec_average;
+
+	/*Assign output pointers:*/
+	*paverage=average;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/AverageOntoPartitionx/AverageOntoPartitionx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/AverageOntoPartitionx/AverageOntoPartitionx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/AverageOntoPartitionx/AverageOntoPartitionx.h	(revision 27955)
@@ -0,0 +1,12 @@
+/*!\file:  AverageOntoPartitionx.h
+ * \brief header file for averaging  dakota responses onto a vertices partition
+ */ 
+
+#ifndef _AVERAGEONTOPARTITIONXX_H
+#define _AVERAGEONTOPARTITIONXX_H
+
+#include "../../classes/classes.h"
+
+void AverageOntoPartitionx(double** paverage, Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,double* vertex_response,double* qmu_part,int npart);
+
+#endif  /* _AVERAGEONTOPARTITIONXX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/BamgConvertMeshx/BamgConvertMeshx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/BamgConvertMeshx/BamgConvertMeshx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/BamgConvertMeshx/BamgConvertMeshx.cpp	(revision 27955)
@@ -0,0 +1,29 @@
+/*!\file BamgConvertMeshx
+ */
+
+#include "./BamgConvertMeshx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../bamg/bamgobjects.h"
+
+using namespace bamg;
+using namespace std;
+
+int BamgConvertMeshx(BamgMesh* bamgmesh,BamgGeom* bamggeom,int* index,double* x,double* y,int nods,int nels){
+
+	/*Options*/
+	BamgOpts* bamgopts=new BamgOpts();
+
+	/*read mesh*/
+	Mesh Th(index,x,y,nods,nels,bamgopts); 
+
+	/*write mesh and geometry*/
+	Th.Gh.WriteGeometry(bamggeom,bamgopts);
+	Th.WriteMesh(bamgmesh,bamgopts);
+
+	/*clean up and return*/
+	delete bamgopts;
+	return 1;
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/BamgConvertMeshx/BamgConvertMeshx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/BamgConvertMeshx/BamgConvertMeshx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/BamgConvertMeshx/BamgConvertMeshx.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  BamgConvertMeshx.h
+ * \brief header file for Bamg module
+ */ 
+
+#ifndef _BAMGCONVERTMESHX_H
+#define _BAMGCONVERTMESHX_H
+
+#include "../../classes/classes.h"
+#include "../../bamg/bamgobjects.h"
+
+/* local prototypes: */
+int BamgConvertMeshx(BamgMesh* bamgmesh,BamgGeom* bamggeom,int* index,double* x,double* y,int nods,int nels);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/BamgTriangulatex/BamgTriangulatex.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/BamgTriangulatex/BamgTriangulatex.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/BamgTriangulatex/BamgTriangulatex.cpp	(revision 27955)
@@ -0,0 +1,22 @@
+/*!\file BamgTriangulatex
+ */
+
+#include "./BamgTriangulatex.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "../../bamg/bamgobjects.h"
+
+using namespace bamg;
+using namespace std;
+
+int BamgTriangulatex(int** pindex,int* pnels,double* x,double* y,int nods){
+
+	BamgOpts* bamgopts=new BamgOpts();//use bamgopts->verbose>5 to debug bamg::Mesh()
+	Mesh Th(x,y,nods,bamgopts);
+	Th.WriteIndex(pindex,pnels);
+	delete bamgopts;
+	//delete &Th;
+	return 0;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/BamgTriangulatex/BamgTriangulatex.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/BamgTriangulatex/BamgTriangulatex.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/BamgTriangulatex/BamgTriangulatex.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  BamgTriangulatex.h
+ * \brief header file for Bamg module
+ */ 
+
+#ifndef _BAMGTRIANGULATEX_H
+#define _BAMGTRIANGULATEX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+int BamgTriangulatex(int** pindex,int* pnels,double* x,double* y,int nods);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Bamgx/Bamgx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Bamgx/Bamgx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Bamgx/Bamgx.cpp	(revision 27955)
@@ -0,0 +1,200 @@
+/*!\file Bamgx
+ * \brief: use Bamg capabilities.
+ */
+#include "./Bamgx.h"
+#include "../../bamg/bamgobjects.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+using namespace bamg;
+using namespace std;
+
+int Bamgx(BamgMesh* bamgmesh_out,BamgGeom* bamggeom_out,BamgMesh* bamgmesh_in,BamgGeom* bamggeom_in,BamgOpts* bamgopts){
+
+	/*Bamg options*/
+	int    maxnbv;
+	double coef;
+	int    verbosity;
+	int    nbsmooth;
+
+	/*intermediary*/
+	int i;
+	int noerr=1;
+	double hminaniso=1e-100;
+	Mesh* Thr=NULL;
+	Mesh* Thb=NULL;
+
+	/*Bamg options*/
+	nbsmooth =bamgopts->nbsmooth;
+	coef     =bamgopts->coeff;
+	maxnbv   =bamgopts->maxnbv;
+	verbosity=bamgopts->verbose;
+
+	// no metric -> no smoothing
+	if (bamgopts->metric==NULL) nbsmooth=0;
+
+	/*If no mesh in input, generate one*/
+	if(bamgmesh_in->TrianglesSize[0]==0){
+		/*Mesh generation {{{*/
+
+		//Step1: generate geometry Gh
+		if (verbosity>0) _printf_("Construction of a mesh from a given geometry\n");
+		if (verbosity>1) _printf_("   Processing geometry...\n");
+		Geometry Gh(bamggeom_in,bamgopts);
+
+		//get hmin and hmax from geometry to generate the metric
+		bamgopts->hmin = Max(bamgopts->hmin,Gh.MinimalHmin());
+		bamgopts->hmax = Min(bamgopts->hmax,Gh.MaximalHmax());
+
+		//build metric using geometry
+		if (verbosity>1) _printf_("   Generating Metric...\n");
+		for(i=0;i<Gh.nbv;i++){
+			Metric M=Gh[i];
+			EigenMetric Vp(M/coef);
+			Vp.Maxh(bamgopts->hmax);
+			Vp.Minh(bamgopts->hmin);
+			Gh.vertices[i].m = Vp;
+		}
+
+		//generate mesh
+		if (verbosity>1) _printf_("   Generating Mesh...\n");
+		Mesh Th(maxnbv,Gh,bamgopts);
+
+		//Split corners if requested
+		if(bamgopts->splitcorners) Th.SplitInternalEdgeWithBorderVertices();
+
+		//Renumbering
+		Th.TrianglesRenumberBySubDomain();
+
+		//Crack mesh if requested
+		if(bamgopts->Crack) Th.CrackMesh(bamgopts);
+
+		//Build output
+		if (verbosity>1) _printf_("   Write Mesh...\n");
+		Th.WriteMesh(bamgmesh_out,bamgopts);
+		if (verbosity>1) _printf_("   Write Geometry...\n");
+		Gh.WriteGeometry(bamggeom_out,bamgopts);
+
+		//clean up
+	//	delete &Th;
+	//	delete &Gh;
+		/*}}}*/
+	}
+	else{
+		/*Anisotropic mesh adaptation {{{*/
+
+		// read background mesh
+		if (verbosity>0) _printf_("Anisotropic mesh adaptation\n");
+		if (verbosity>1) _printf_("   Processing initial mesh and geometry...\n");
+		Mesh BTh(bamggeom_in,bamgmesh_in,bamgopts);
+
+		//Make Quadtree from background mesh
+		BTh.MakeBamgQuadtree();
+
+		//Bound hmin and hmax
+		bamgopts->hmin=Max(bamgopts->hmin,BTh.MinimalHmin());
+		bamgopts->hmax=Min(bamgopts->hmax,BTh.MaximalHmax());
+
+		//Generate initial metric
+		if (bamgopts->metric){
+			if (verbosity>1) _printf_("   Processing Metric...\n");
+			BTh.ReadMetric(bamgopts);
+		}
+		else {
+			if (verbosity>1) _printf_("   Generating initial Metric...\n");
+			Metric Mhmax(bamgopts->hmax);
+			for (int iv=0;iv<BTh.nbv;iv++) BTh[iv].m = Mhmax;
+		}
+
+		//use present fields to generate metric if present
+		if (bamgopts->field){
+			if (verbosity>1) _printf_("   Merge metric with field provided...\n");
+			BTh.AddMetric(bamgopts);
+		}
+
+		// change using hVertices if provided
+		if(bamgopts->hVertices && bamgopts->hVerticesLength==BTh.nbv){
+			if (verbosity>1) _printf_("   Merging Metric with hVertices...\n");
+			for (i=0;i<BTh.nbv;i++){
+				if (!xIsNan<IssmPDouble>(bamgopts->hVertices[i])){
+					BTh[i].m=Metric((float)bamgopts->hVertices[i]);
+				}
+			}
+		}
+
+		// change using hminVertices if provided
+		if (bamgopts->hminVertices){
+			if (verbosity>1) _printf_("   Merging Metric with hminVertices...\n");
+			for (i=0;i<BTh.nbv;i++){
+				if (!xIsNan<IssmPDouble>(bamgopts->hminVertices[i])){
+					Metric M=BTh.vertices[i].m;
+					EigenMetric Vp(M/coef);
+					Vp.Minh(bamgopts->hminVertices[i]);
+					BTh.vertices[i].m=Vp;
+				}
+			}
+		}
+
+		// change using hmaxVertices if provided
+		if (bamgopts->hmaxVertices){
+			if (verbosity>1) _printf_("   Merging Metric with hmaxVertices...\n");
+			for (i=0;i<BTh.nbv;i++){
+				if (!xIsNan<IssmPDouble>(bamgopts->hmaxVertices[i])){
+					Metric M=BTh.vertices[i].m;
+					EigenMetric Vp(M/coef);
+					Vp.Maxh(bamgopts->hmaxVertices[i]);
+					BTh.vertices[i].m=Vp;
+				}
+			}
+		}
+
+		//Smoothe metric
+		BTh.SmoothMetric(bamgopts,bamgopts->gradation);
+
+		//Control element subdivision
+		BTh.MaxSubDivision(bamgopts,bamgopts->maxsubdiv);
+
+		//Bound anisotropy
+		BTh.BoundAnisotropy(bamgopts,bamgopts->anisomax,hminaniso);
+
+		//Build new mesh
+		if (verbosity>1) _printf_("   Generating Mesh...\n");
+		Thr=&BTh,Thb=0;
+		Mesh & Th( *(0 ?  new Mesh(*Thr,&Thr->Gh,Thb,maxnbv) :  new Mesh(maxnbv,BTh,bamgopts,bamgopts->KeepVertices)));
+		//if (Thr!=&BTh) delete Thr;
+
+		//Split corners if requested
+		if(bamgopts->splitcorners) Th.SplitInternalEdgeWithBorderVertices();
+
+		//Renumber by subdomain
+		Th.TrianglesRenumberBySubDomain();
+
+		//Smooth vertices
+		if(nbsmooth>0) Th.SmoothingVertex(bamgopts,nbsmooth,bamgopts->omega);
+
+		//display info
+		if(verbosity>0) {
+			if (Th.nbt-Th.nbtout){
+				_printf_("   new number of triangles = " << (Th.nbt-Th.nbtout) << "\n");
+			}
+		}
+
+		//Build output
+		if (verbosity>1) _printf_("   Write Mesh...\n");
+		Th.WriteMesh(bamgmesh_out,bamgopts);
+		if (verbosity>1) _printf_("   Write Geometry...\n");
+		Th.Gh.WriteGeometry(bamggeom_out,bamgopts);
+		if (verbosity>1) _printf_("   Write Metric...\n");
+		BTh.WriteMetric(bamgopts);
+
+		/*clean up*/
+		delete &Th;
+		//delete &BTh;
+		/*}}}*/
+	}
+
+	/*No error return*/
+	if (verbosity>1) _printf_("   Exiting Bamg.\n");
+	return noerr;
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Bamgx/Bamgx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Bamgx/Bamgx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Bamgx/Bamgx.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  Bamgx.h
+ * \brief header file for Bamg module
+ */ 
+
+#ifndef _BAMGX_H
+#define _BAMGX_H
+
+#include "../../bamg/bamgobjects.h"
+
+/* local prototypes: */
+int     Bamgx(BamgMesh* bamgmesh_out,BamgGeom* bamggeom_out,BamgMesh* bamgmesh_in,BamgGeom* bamggeom_in,BamgOpts* bamgopts);
+
+#endif  /* _BAMGX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Calvingx/Calvingx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Calvingx/Calvingx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Calvingx/Calvingx.cpp	(revision 27955)
@@ -0,0 +1,63 @@
+/*!\file Calvingx
+ * \brief: compute inverse method gradient
+ */
+
+#include "./Calvingx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void Calvingx(FemModel* femmodel){
+
+	/*Recover Calving law Enum*/
+	int calvinglaw;
+	femmodel->parameters->FindParam(&calvinglaw,CalvingLawEnum);
+
+	/*Calculate calving rate*/
+	switch(calvinglaw){
+		case CalvingMinthicknessEnum:
+		case CalvingHabEnum:
+			femmodel->ElementOperationx(&Element::CalvingSetZeroRate);
+			break;
+		case DefaultCalvingEnum:
+			femmodel->ElementOperationx(&Element::CalvingRateToVector);
+			break;
+		case CalvingCrevasseDepthEnum:
+			femmodel->ElementOperationx(&Element::CalvingSetZeroRate);
+			/*rate is 0 but we need to calculate a few things to determine where it will calve*/
+			femmodel->StrainRateparallelx();
+			femmodel->StrainRateeffectivex();
+			femmodel->DeviatoricStressx();
+			femmodel->ElementOperationx(&Element::CalvingCrevasseDepth);
+			break;
+		case CalvingLevermannEnum:
+			femmodel->StrainRateparallelx();
+			femmodel->StrainRateperpendicularx();
+			femmodel->CalvingRateLevermannx();
+			break;
+		case CalvingVonmisesEnum:
+		case CalvingDev2Enum:
+			femmodel->ElementOperationx(&Element::CalvingRateVonmises);
+			break;
+		case CalvingVonmisesADEnum:
+			femmodel->ElementOperationx(&Element::CalvingRateVonmisesAD);
+			break;
+		case CalvingTestEnum:
+			femmodel->ElementOperationx(&Element::CalvingRateTest);
+			break;
+		case CalvingParameterizationEnum:
+			femmodel->ElementOperationx(&Element::CalvingRateParameterization);
+			break;
+		case CalvingPollardEnum:
+			femmodel->ElementOperationx(&Element::CalvingPollard);
+			break;
+		case CalvingCalvingMIPEnum:
+			femmodel->ElementOperationx(&Element::CalvingRateCalvingMIP);
+			break;
+		default:
+			_error_("Caving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+	}
+}
+
+void MovingFrontalVelx(FemModel* femmodel){
+	femmodel->ElementOperationx(&Element::MovingFrontalVelocity);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Calvingx/Calvingx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Calvingx/Calvingx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Calvingx/Calvingx.h	(revision 27955)
@@ -0,0 +1,11 @@
+#ifndef _CALVINGX_H
+#define _CALVINGX_H
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+/* local prototypes: */
+void Calvingx(FemModel* femmodel);
+void MovingFrontalVelx(FemModel* femmodel);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Chacox/Chacox.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Chacox/Chacox.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Chacox/Chacox.cpp	(revision 27955)
@@ -0,0 +1,184 @@
+/* This software was developed by Bruce Hendrickson and Robert Leland   *
+ * at Sandia National Laboratories under US Department of Energy        *
+ * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */
+
+#include "./Chacox.h"
+
+int Chacox(
+	int       nvtxs,		/* number of vertices in graph */
+	int      *start,		/* start of edge list for each vertex */
+	int      *adjacency,	/* edge list data */
+	int      *vwgts,		/* weights for all vertices */
+	float    *ewgts,		/* weights for all edges */
+	float    *x,
+	float    *y,
+	float    *z,			/* coordinates for inertial method */
+	short    *assignment,	/* set number of each vtx (length nvtxs+1) */
+	double   options[10],	/* architecture and partitioning options */
+	int      *nparts,		/* number of parts options */
+	double   *goal			/* desired set sizes */
+)
+{
+	#ifdef _HAVE_CHACO_ //only works if Chaco library has been compiled in.
+
+	extern int     Using_Main;                   /* is main routine being called?                */
+	extern char   *PARAMS_FILENAME;              /* name of file with parameter updates          */
+	extern double  EIGEN_TOLERANCE;              /* tolerance for eigen calculations             */
+	extern int     OUTPUT_ASSIGN;                /* whether to write assignment to file          */
+	extern int     DEBUG_MEMORY;                 /* debug memory allocation and freeing?         */
+	extern int     DEBUG_TRACE;                  /* trace main execution path                    */
+	extern int     DEBUG_PARAMS;                 /* debug flag for reading parameters            */
+	extern long    RANDOM_SEED;                  /* seed for random number generators            */
+	extern int     ECHO;                         /* controls amount of output                    */
+	extern int     PROMPT;                       /* prompt for input or not?                     */
+	extern int     PRINT_HEADERS;                /* print lines for output sections?             */
+	extern int     MATCH_TYPE;                   /* matching routine to call                     */
+	extern double  input_time;                   /* times data file input                        */
+	extern double  start_time;                   /* time partitioning starts                     */
+	FILE          *params_file;                  /* file with parameter value updates            */
+	int            global_method;                /* global partitioning method                   */
+	int            local_method;                 /* local partitioning method                    */
+	double         eigtol;                       /* tolerance in eigenvector calculation         */
+	int            ndims;                        /* dimension of recursive partitioning          */
+	int            architecture;                 /* 0 => hypercube, d => d-dimensional mesh      */
+	int            ndims_tot;                    /* total number of cube dimensions to divide    */
+	int            mesh_dims[3];                 /* dimensions of mesh of processors             */
+	long           seed;                         /* for random graph mutations                   */
+	int            rqi_flag;                     /* use RQI/Symmlq eigensolver?                  */
+	int            vmax;                         /* if so, how many vertices to coarsen down to? */
+	char           outassignname[NAME_LENGTH];   /* assignment output file name                  */
+	char           outfilename[NAME_LENGTH];     /* name of output file                          */
+	char          *outassignptr;                 /* name or null pointer for output assignment   */
+	char          *outfileptr;                   /* name or null pointer for output file         */
+	int            nprocs;                       /* number of processors being divided into      */
+	double         time;                         /* timing marker                                */
+	int            flag;                         /* return code from input routines              */
+	double        *smalloc();                    /* safe version of malloc                       */
+	//double       seconds();                    /* returns elapsed time in seconds              */
+	/*int sfree(), interface(), affirm();
+	void input_queries()  , smalloc_stats(), read_params(), clear_timing();  */
+
+	int i,tvwgt;
+	double tgoal;
+
+	if (DEBUG_TRACE > 0) {
+		_printf_("<Entering main>\n");
+	}
+
+	if (PRINT_HEADERS) {
+		_printf_("\n                    Chaco 2.0\n");
+		_printf_("          Sandia National Laboratories\n\n");
+	}
+
+	Using_Main = TRUE;
+	params_file = fopen(PARAMS_FILENAME, "r");
+	if (params_file == NULL && DEBUG_PARAMS > 1) {
+		printf("Parameter file `%s' not found; using default parameters.\n",PARAMS_FILENAME);
+	}
+
+	start_time = time = chaco_seconds();
+
+	read_params(params_file);
+
+	flag = input_parse(outassignname, outfilename,
+			  &architecture, &ndims_tot, mesh_dims,
+			  &global_method, &local_method, &rqi_flag, &vmax, &ndims, &nprocs,
+			  options, nparts);
+	if (flag)
+		return(flag);
+
+	if (OUTPUT_ASSIGN > 0)
+		outassignptr = outassignname;
+	else
+		outassignptr = NULL;
+
+	if (ECHO < 0)
+		outfileptr = outfilename;
+	else
+		outfileptr = NULL;
+
+	if ((int)options[OPT_VWGTS] && vwgts) {
+		printf("%s -- Applying weights for %d vertices.\n",__FUNCT__,nvtxs);
+		tvwgt = 0;
+		for (i=0; i<nvtxs; i++)
+			tvwgt += vwgts[i];
+	}
+	else {
+		tvwgt = nvtxs;
+		if      ( (int)options[OPT_VWGTS] && !vwgts)
+			printf("%s -- Vertex weight flag=%d, but no vertex weights specified.\n",__FUNCT__,(int)options[OPT_VWGTS]);
+		else if (!(int)options[OPT_VWGTS] &&  vwgts)
+			printf("%s -- Vertex weight flag=%d, so specified vertex weights ignored.\n",__FUNCT__,(int)options[OPT_VWGTS]);
+	}
+
+	if ((int)options[OPT_EWGTS] && ewgts) {
+		printf("%s -- Applying weights for %d edges.\n",
+			   __FUNCT__,start[nvtxs]/2);
+	}
+	else {
+		if      ( (int)options[OPT_EWGTS] && !ewgts)
+			printf("%s -- Edge weight flag=%d, but no edge weights specified.\n",__FUNCT__,(int)options[OPT_EWGTS]);
+		else if (!(int)options[OPT_EWGTS] &&  ewgts)
+			printf("%s -- Edge weight flag=%d, so specified edge weights ignored.\n",__FUNCT__,(int)options[OPT_EWGTS]);
+	}
+
+    if (goal) {
+        printf("%s -- Applying goals for %d sets.\n",
+               __FUNCT__,nprocs);
+        tgoal = 0.;
+        for (i=0; i<nprocs; i++)
+            tgoal += goal[i];
+        for (i=0; i<nprocs; i++)
+            goal[i] *= (double)tvwgt/tgoal;
+    }
+
+	input_time += chaco_seconds() - time;
+
+	if (options[OPT_EIGTOL] > 0)
+		eigtol = options[OPT_EIGTOL];
+	else
+		eigtol = EIGEN_TOLERANCE;
+	if ((int)options[OPT_SEED] > 0)
+		seed = (int)options[OPT_SEED];
+	else
+		seed = RANDOM_SEED;
+
+/*  Chaco numbers vertices from 1 and the Matlab sparse data structure
+	numbers rows from 0, so increment the row indices for each column. */
+
+	for (i=0; i<start[nvtxs]; adjacency[i++]++);
+
+	printf("\n%s -- Calling Chaco interface:\n\n",__FUNCT__);
+	flag = interface(nvtxs, start, adjacency,
+		  ((int)options[OPT_VWGTS] && vwgts ? vwgts : NULL),
+		  ((int)options[OPT_EWGTS] && ewgts ? ewgts : NULL),
+		  x, y, z,
+		  outassignptr, outfileptr,
+		  assignment,
+		  architecture, ndims_tot, mesh_dims, goal,
+		  global_method, local_method, rqi_flag, vmax, ndims,
+		  eigtol, seed);
+	printf("\n%s -- Chaco interface returning flag=%d.\n",__FUNCT__,flag);
+
+/*  Reset adjacency matrix in case calling function needs it.  */
+
+	for (i=0; i<start[nvtxs]; adjacency[i++]--);
+
+	if (DEBUG_MEMORY > 0) {
+		_printf_("\n");
+		smalloc_stats();
+	}
+
+	if (params_file != NULL)
+		fclose(params_file);
+
+	if (DEBUG_TRACE > 1) {
+		_printf_("<Leaving main>\n");
+	}
+
+	return(0);
+
+	#else //ifdef _HAVE_CHACO_
+	return (0);
+	#endif
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Chacox/Chacox.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Chacox/Chacox.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Chacox/Chacox.h	(revision 27955)
@@ -0,0 +1,45 @@
+/*!\file:  Chacoxx.h
+ * \brief header file for Chaco partitioner
+ */ 
+
+#ifndef _CHACOX_H
+#define _CHACOX_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+
+#ifdef _HAVE_CHACO_ //only works if dakota library has been compiled in.
+
+#include "chaco.h"
+
+#define    OPT_GLOBAL    0
+#define    OPT_LOCAL     1
+#define    OPT_VWGTS     2
+#define    OPT_EWGTS     3
+#define    OPT_ARCH      4
+#define    OPT_NDIMS     5
+#define    OPT_VMAX      6
+#define    OPT_RQI       7
+#define    OPT_EIGTOL    8
+#define    OPT_SEED      9
+
+#endif
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+int Chacox( int nvtxs, int *start, int *adjacency,int *vwgts, float *ewgts, float *x, float *y, float *z, short *assignment, double  options[10], int *nparts, double *goal);
+int input_parse( char *outassignname, char *outfilename, int *architecture, int *ndims_tot, int mesh_dims[3], int *global_method, int *local_method, 
+		int *rqi_flag, int *vmax, int *ndims, int *nprocs, double options[10], int *nparts);
+double    chaco_seconds(void);
+
+#undef __FUNCT__ 
+#define __FUNCT__  "Chacox"
+
+#endif  /* _CHACOX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Chacox/chaco_seconds.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Chacox/chaco_seconds.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Chacox/chaco_seconds.cpp	(revision 27955)
@@ -0,0 +1,36 @@
+/*This is needed, because the chaco library defines a "C" function seconds that conflicts with the Metis version.: */
+
+#if defined(_INTEL_WIN_) || defined(_MSYS2_)
+#include   <time.h>
+#else
+#include   <sys/time.h>
+#include   <sys/resource.h>
+#endif
+
+double chaco_seconds(void){
+
+	double    curtime;
+
+#ifdef RUSAGE_SELF
+
+/* This timer is faster and more robust (if it exists). */
+    struct rusage rusage;
+    /*int getrusage(); commenting this out. not sure why it's there anymore
+	 *as it clobbers the prototype int getrusag(int target,rusage* results) which 
+	 *is defined in the <sys/time.h> and <sys/resource.h> header files. Leaving it 
+	 *for reference in case we have a problem here in the future*/
+
+    getrusage(RUSAGE_SELF, &rusage);
+    curtime = ((rusage.ru_utime.tv_sec + rusage.ru_stime.tv_sec) +
+	    1.0e-6 * (rusage.ru_utime.tv_usec + rusage.ru_stime.tv_usec));
+
+#else
+
+/* ANSI timer, but lower resolution & wraps around after ~36 minutes. */
+
+    curtime = clock()/((double) CLOCKS_PER_SEC);
+
+#endif
+
+    return (curtime);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Chacox/input_parse.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Chacox/input_parse.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Chacox/input_parse.cpp	(revision 27955)
@@ -0,0 +1,258 @@
+/*!\file:  input_parse.cpp
+ * \brief  needed by Chacox.cpp
+ */ 
+
+#include "./Chacox.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "input_parse"
+
+int      input_parse(
+	char     *outassignname,	/* name of assignment output file */
+	char     *outfilename,		/* name of file for outputing run results */
+	int      *architecture,		/* 0=> hypercube, d=> d-dimensional mesh */
+	int      *ndims_tot,		/* target number of hypercube dimensions */
+	int       mesh_dims[3],		/* mesh dimensions */
+	int      *global_method,	/* what global partitioning strategy to use? */
+	int      *local_method,		/* what local refinement strategy to use? */
+	int      *rqi_flag,		/* should I use multilevel eigensolver? */
+	int      *vmax,			/* if so, how far should I coarsen? */
+	int      *ndims,		/* number of divisions at each stage */
+	int      *nprocs,		/* number of processors being divided into */
+	double   options[10],	/* architecture and partitioning options */
+	int      *nparts		/* number of parts options */
+)
+{
+
+	#ifdef _HAVE_CHACO_ //only works if Chaco library has been compiled in.
+
+	extern int SEQUENCE;	/* sequence instead of partition graph? */
+	extern int ARCHITECTURE;	/* 0=> hypercube, d=> d-dimensional mesh */
+	extern int OUTPUT_ASSIGN;	/* write assignments to file? */
+	extern int ECHO;		/* copy input to screen? results to file? */
+	extern int DEBUG_TRACE;	/* trace main execution path */
+	extern int PROMPT;		/* prompt for input? */
+	extern int MATCH_TYPE;      /* max-matching routine to call */
+	int       eigensolver;	/* which kind of eigensolver to use */
+
+	if (DEBUG_TRACE > 0) {
+		_printf_("<Entering input_parse>\n");
+	}
+
+	if (PROMPT) {
+		_printf_("Parallel machine architecture:\n");
+		_printf_("  (0) Hypercube\n");
+		_printf_("  (1) One-dimensional mesh\n");
+		_printf_("  (2) Two-dimensional mesh\n");
+		_printf_("  (3) Three-dimensional mesh\n");
+	}
+	*architecture = (int)options[OPT_ARCH];
+	if (*architecture < 0 || *architecture > 3) {
+		printf("%s -- Architecture %d must be between 0 and 3.\n",__FUNCT__,*architecture);
+		return(-1);
+	}
+
+	/* Name output assignment file. */
+	if (PROMPT)
+		_printf_("Assignment output file: ");
+	outassignname = NULL;
+
+	/* Name output results file. */
+	if (PROMPT)
+		_printf_("File name for saving run results: ");
+	outfilename = NULL;
+
+	/* Initialize the method flags */
+	*rqi_flag = 0;
+	*global_method = 0;
+
+	/* Get global method, if any. */
+	if (SEQUENCE) {
+		*global_method = 2;
+	}
+	else {
+		if (PROMPT) {
+			_printf_("Global partitioning method:\n");
+			_printf_("  (1) Multilevel-KL\n");
+			_printf_("  (2) Spectral\n");
+			_printf_("  (3) Inertial\n");
+			_printf_("  (4) Linear\n");
+			_printf_("  (5) Random\n");
+			_printf_("  (6) Scattered\n");
+			_printf_("  (7) Read-from-file\n");
+		}
+		*global_method = (int)options[OPT_GLOBAL];
+		if (*global_method < 1 || *global_method > 7) {
+			printf("%s -- Global method %d must be between 1 and 7.\n",__FUNCT__,*global_method);
+			return(-1);
+		}
+	}
+
+	if (*global_method == 7) {	/* Name and open input assignment file. */
+		if (PROMPT)
+			_printf_("Assignment input file: ");
+	}
+
+	else if (*global_method == 3) {
+		if (PROMPT)
+			_printf_("Geometry input file name: ");
+	}
+
+	else if (*global_method == 2) {
+		if (PROMPT) {
+			_printf_("Eigensolver:\n");
+			_printf_("  (1) Multilevel RQI/Symmlq\n");
+			_printf_("  (2) Lanczos\n"); 
+		}
+		eigensolver = (int)options[OPT_RQI];
+		if (eigensolver < 0 || eigensolver > 2) {
+			printf("%s -- RQI/Symmlq flag %d must be between 0 and 2.\n",__FUNCT__,eigensolver);
+			return(-1);
+		}
+		if (eigensolver == 1) {
+			if (MATCH_TYPE == 5) {	/* geometric matching */
+				if (PROMPT)
+					_printf_("Geometry input file name: ");
+			}
+			*rqi_flag = 1;
+			if (PROMPT)
+				_printf_("Number of vertices to coarsen down to: ");
+			*vmax = (int)options[OPT_VMAX];
+			if (*vmax <= 0) {
+				printf("%s -- Vmax %d must be greater then 0.\n",__FUNCT__,*vmax);
+				return(-1);
+			}
+		}
+		else if (eigensolver == 0 || eigensolver == 2) {
+			*rqi_flag = 0;
+		}
+	}
+
+	else if (*global_method == 1) {
+		if (MATCH_TYPE == 5) {		/* geometric matching */
+			if (PROMPT)
+				_printf_("Geometry input file name: ");
+		}
+		if (PROMPT)
+			_printf_("Number of vertices to coarsen down to: ");
+		*vmax = (int)options[OPT_VMAX];
+		if (*vmax <= 0) {
+			printf("%s -- Vmax %d must be greater then 0.\n",__FUNCT__,*vmax);
+			return(-1);
+		}
+	}
+
+	if (SEQUENCE) {
+		*local_method = 2;
+		if (*architecture == 0) {
+			*ndims_tot = 1;
+		}
+		else if (*architecture > 0) {
+			mesh_dims[0] = 2;
+			mesh_dims[1] = mesh_dims[2] = 1;
+		}
+		*ndims = 1;
+		goto End_Label;
+	}
+
+	/* Get local method, if any */
+	*local_method = 0;
+	if (*global_method == 1)
+		*local_method = 1;
+	else {
+		if (PROMPT) {
+			_printf_("Local refinement method:\n");
+			_printf_("  (1) Kernighan-Lin\n");
+			_printf_("  (2) None\n");
+		}
+		*local_method = (int)options[OPT_LOCAL];
+		if (*local_method < 1 || *local_method > 2) {
+			printf("%s -- Local method %d must be 1 and 2.\n",__FUNCT__,*local_method);
+			return(-1);
+		}
+	}
+
+	/* Now learn about the parallel architecture. */
+	if (*architecture == 0) {
+	/* Get total number of hypercube dimensions in which to partition. */
+		*ndims_tot = 0;
+		if (PROMPT)
+			_printf_("Total number of target hypercube dimensions: ");
+		*ndims_tot = nparts[0];
+		if (*ndims_tot < 1) {
+			_printf_(" Number of divisions must be at least 1\n");
+			printf("%s -- Number of divisions %d must be at least 1.\n",
+				   __FUNCT__,nparts[0]);
+			return(-1);
+		}
+		*nprocs = 1 << (*ndims_tot);
+	}
+
+	else {			/* Get dimensions of mesh. */
+		mesh_dims[1] = mesh_dims[2] = 1;
+		if (*architecture == 2) {
+			if (PROMPT)
+				_printf_("X and Y extent of of 2-D mesh: ");
+			mesh_dims[0] = nparts[0];
+			mesh_dims[1] = nparts[1];
+		}
+		else if (*architecture == 3) {
+			if (PROMPT)
+				_printf_("X, Y and Z extent of 3-D mesh: ");
+			mesh_dims[0] = nparts[0];
+			mesh_dims[1] = nparts[1];
+			mesh_dims[2] = nparts[2];
+		}
+		else {			/* Anything else => 1-D mesh */
+			if (PROMPT)
+				_printf_("Size of 1-D mesh: ");
+			mesh_dims[0] = nparts[0];
+			*architecture = 1;
+		}
+		*nprocs = mesh_dims[0] * mesh_dims[1] * mesh_dims[2];
+	}
+
+	/* Get number of dimensions in which to partition at each level. */
+	*ndims = 0;
+	if (*nprocs <= 3) {
+		*ndims = 1;
+	}
+	else if (*nprocs <= 7) {
+		if (PROMPT) {
+			_printf_("Partitioning dimension: \n");
+			_printf_("  (1) Bisection\n");
+			_printf_("  (2) Quadrisection\n");
+		}
+		*ndims = (int)options[OPT_NDIMS];
+		if (*ndims < 1 || *ndims > 2) {
+			printf("%s -- Ndims %d must be 1 or 2 for %d processors.\n",__FUNCT__,*ndims,*nprocs);
+			return(-1);
+		}
+	}
+	else {
+		if (PROMPT) {
+			_printf_("Partitioning dimension: \n");
+			_printf_("  (1) Bisection\n");
+			_printf_("  (2) Quadrisection\n");
+			_printf_("  (3) Octasection\n");
+		}
+		*ndims = (int)options[OPT_NDIMS];
+		if (*ndims < 1 || *ndims > 3) {
+			printf("%s -- Ndims %d must be between 1 and 3 for %d processors.\n",__FUNCT__,*ndims,*nprocs);
+			return(-1);
+		}
+	}
+End_Label: 
+
+	if (*global_method == 1 || *rqi_flag) {
+		if (*vmax < 2 * (1 << *ndims)) {
+			*vmax = 2 * (1 << *ndims);
+		}
+	}
+
+	return(0);
+
+	#else //#ifdef _HAVE_CHACO_ 
+	return(0);
+	#endif
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Chacox/user_params.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Chacox/user_params.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Chacox/user_params.cpp	(revision 27955)
@@ -0,0 +1,144 @@
+/* This software was developed by Bruce Hendrickson and Robert Leland   *
+ * at Sandia National Laboratories under US Department of Energy        *
+ * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */
+
+/* Modified by John Gilbert 25 Aug 1995 for Matlab mex-file interface   */
+/* Modified by Tim Davis, July 6, 1998, for Matlab 5.1 interface, and */
+/* a more picky compiler (cc) that complains about duplicate global */
+/* declarations. */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_CHACO_ //only works if dakota library has been compiled in.
+
+#include "params.h"
+
+#define  TRUE  1
+#define  FALSE 0
+
+/* Input and ouput control parameters */
+
+int       CHECK_INPUT = TRUE;	 /* Check input for consistency? (TRUE/FALSE) */
+int       ECHO = 0;		 /* Print input/param options? to file? (-2..2) */
+int       OUTPUT_METRICS = 0;	 /* Controls displaying of results (-2..2) */
+int       OUTPUT_TIME = 0;	 /* At what level to display timings (0..2) */
+int       OUTPUT_ASSIGN = FALSE; /* Write assignments to file? (TRUE/FALSE) */
+int       OUT_ASSIGN_INV = FALSE;/* If so, use inverse form? (TRUE/FALSE) */
+int       IN_ASSIGN_INV = FALSE; /* Input file in inverse form? (TRUE/FALSE) */
+int       PROMPT = FALSE;	 /* Prompt for input? (TRUE/FALSE) */
+int       PRINT_HEADERS = FALSE; /* Print pretty output headers (TRUE/FALSE) */
+
+/* Eigenvector calculation parameters */
+
+int       LANCZOS_TYPE = 3;	/* type of Lanczos to use */
+				/* 1 => full orthog, 2 => full inverse operator */
+				/* 3 =>  selective orthogonalization */
+double    EIGEN_TOLERANCE = 1e-3;	/* Numerical eigen-tolerance */
+double    SRESTOL = -1.;		/* Rel resid tol on T evec; autoset if <= 0 */
+int       LANCZOS_SO_INTERVAL = 10;	/* Itns. between SO orthog checks; set >= 2 */
+int       LANCZOS_MAXITNS = -1;		/* Max Lanczos its; autoset if <= 0 */
+double    BISECTION_SAFETY = 10;	/* Divides Lanczos bisection tol */
+int       LANCZOS_CONVERGENCE_MODE = 0;	/* Lanczos convergence test type: */
+					/* 0=> residual,  1=> partition */
+int       RQI_CONVERGENCE_MODE = 1;	/* RQI convergence test type: */
+					/* 0=> residual,  1=> partition */
+int       LANCZOS_SO_PRECISION = 2;	/* 2 => double Lanczos, 1 => float */
+int       WARNING_EVECS = 2;	/* Warnings in eigenvector generation (0..3) */
+double    WARNING_ORTHTOL = 2;	/* Warning if Ares and bjitol have this ratio */
+double    WARNING_MISTOL = 100;	/* Warning if Ares and bjitol have this ratio */
+int       LANCZOS_TIME = FALSE;	/* Detailed Lanczos times? (TRUE/FALSE) */
+int       TIME_KERNELS = FALSE;	/* Time numerical kernels? (TRUE/FALSE) */
+
+/* Other parameters for spectral methods */
+
+int       MAKE_CONNECTED = TRUE;/* Connect graph if using spectral method? */
+int       PERTURB = TRUE;	/* Randomly perturb matrix in spectral method? */
+int       NPERTURB = 2;		/* If so, how many edges to modify? */
+double    PERTURB_MAX = 3.0e-3;	/* Largest value for perturbation */
+int       MAPPING_TYPE = 1;	/* How to map from eigenvectors to partition */
+				/* 0 => cut at origin, 1 => min-cost assign */
+int       COARSE_NLEVEL_RQI = 2;/* # levels between RQI calls in uncoarsening */
+int       OPT3D_NTRIES = 5;	/* # local opts to look for global min in opt3d */
+
+/* Kernighan--Lin/Fiduccia--Mattheyses parameters */
+
+int       KL_METRIC = 2;	/* KL interset cost: 1=>cuts, 2=>hops */
+int       KL_RANDOM = TRUE;	/* Use randomness in Kernighan-Lin? (TRUE/FALSE)*/
+int       KL_BAD_MOVES = 20;	/* Number of unhelpful moves in a row allowed */
+int       KL_NTRIES_BAD = 1;	/* # unhelpful passes before quitting KL */
+int       KL_UNDO_LIST = TRUE;	/* Only resort changed vtxs? (TRUE/FALSE) */
+double    KL_IMBALANCE = 0.0;	/* Fractional imbalance allowed by KL */
+
+/* Coarsening parameters */
+
+double    COARSEN_RATIO_MIN = .7;  /* Min vtx reduction each coarsen stage */
+int       COARSE_NLEVEL_KL = 2;	   /* # levels between KL calls in uncoarsening */
+int       MATCH_TYPE = 1;	   /* Type of contraction matching (1..4) */
+int       HEAVY_MATCH = FALSE;	   /* Encourage heavy match edges? (TRUE/FALSE) */
+int       COARSE_KL_BOTTOM = TRUE; /* Force KL at lowest level (TRUE/FALSE) */
+int       COARSEN_VWGTS = TRUE;	   /* Sum vtx weights in coarsening? (TRUE/FALSE) */
+int       COARSEN_EWGTS = TRUE;	   /* Sum edge weights in coarsening? (TRUE/FALSE) */
+int       KL_ONLY_BNDY = TRUE;	   /* Start moving vtxs on boundary? (TRUE/FALSE) */
+
+/* Parameters for post-processing options */
+
+int       REFINE_PARTITION = FALSE;	/* Postprocess to improve cuts? */
+int       INTERNAL_VERTICES = FALSE;	/* ... to up internal vtxs? (TRUE/FALSE) */
+int       REFINE_MAP = FALSE;		/* ... to reduce hops? (TRUE/FALSE) */
+
+/* Architecture and simulator parameters */
+
+int       ARCHITECTURE = 0;	/* 0=> hypercube, d=> d-dimensional mesh (0..3)*/
+
+/* Modified by Tim Davis:  remove duplicate definitions */
+#ifdef DUPLICATE_DEFINITIONS_REMOVED
+int       SIMULATOR = 0;	/* Run simulator? In what mode? */
+int       SIMULATION_ITNS = 1;	/* # iterations simulator is to imitate. */
+int       PERCENTAGE_OUTPUT = FALSE;	/* Output in percent? (TRUE/FALSE) */
+double    CUT_COST = 0.0;	/* Communication cost of a cut-edge. */
+double    HOP_COST = 0.0;	/* Communication cost of a hop. */
+double    BDY_COST = 0.0;	/* Cost associated with boundary vertices.  */
+double    BDY_HOP_COST = 0.0;	/* Cost associated with boundary hops. */
+double    STARTUP_COST = 0.0;	/* Communication cost of a message startup. */
+	/* Note: nCUBE2 startup: 112e-6, per byte: 4.6e-6, buffering 5.6e-6 */
+	/* Intel Paragon startup: 70e-6, per byte: 5.3e-8 */
+#endif
+
+/* Miscellaneous parameters */
+
+int       TERM_PROP = FALSE;	/* Invoke terminal propagation? (TRUE/FALSE) */
+double    CUT_TO_HOP_COST = 1;	/* ..if so, relative importance of cuts/hops */
+int       SEQUENCE = FALSE;	/* Only do spectral ordering? (TRUE/FALSE) */
+char      SEQ_FILENAME[NAME_LENGTH] = "Sequence.out";	/* If so, file name */
+long      RANDOM_SEED = 7654321L;	/* Seed for random number generator */
+int       NSQRTS = 1000;	/* # square roots to precompute if coarsening */
+int       MAKE_VWGTS = FALSE;	/* Make vtx weights degrees+1? (TRUE/FALSE) */
+int       FREE_GRAPH = FALSE;	/* Free input graph data? (TRUE/FALSE) */
+const char  *PARAMS_FILENAME = "User_Params";	/* File of parameter changes */
+
+/* Parameters that control debugging output */
+
+int       DEBUG_EVECS = 0;	/* Debug flag for eigenvector generation (0..5) */
+int       DEBUG_KL = 0;		/* Debug flag for Kernighan-Lin (0..3) */
+int       DEBUG_INERTIAL = 0;	/* Debug flag for inertial method (0..1) */
+int       DEBUG_CONNECTED = 0;	/* Debug flag for connected components (0..1) */
+int       DEBUG_PERTURB = 0;	/* Debug flag for matrix perturbation (0..1) */
+int       DEBUG_ASSIGN = 0;	/* Debug flag for assignment to sets (0..1) */
+int       DEBUG_OPTIMIZE = 0;	/* Debug flag for optimization/rotation (0..2) */
+int       DEBUG_BPMATCH = 0;	/* Debug flag for bipartite matching code (0..2) */
+int       DEBUG_COARSEN = 0;	/* Debug flag for coarsening/uncoarsening (0..1) */
+int       DEBUG_MEMORY = 0;	/* Debug flag for smalloc/sfree (0..3) */
+int       DEBUG_INPUT = 0;	/* Debug flag for having read input files (0..1) */
+int       DEBUG_PARAMS = 1;	/* Debug flag for reading parameter file (0..2) */
+int       DEBUG_INTERNAL = 0;	/* Debug flag for internal vertices (0..2) */
+int       DEBUG_REFINE_PART = 0;/* Debug flag for refine partition (0..1) */
+int       DEBUG_REFINE_MAP = 0;	/* Debug flag for refining mapping (0..1) */
+int       DEBUG_SIMULATOR = 0;	/* Debug flag for comm simulator (0..2) */
+int       DEBUG_TRACE = 0;	/* Trace main execution path (0..2) */
+int       DEBUG_MACH_PARAMS = 0;/* Print computed machine params? (0..1) */
+
+#endif //ifdef _HAVE_CHACO_ 
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.cpp	(revision 27955)
@@ -0,0 +1,32 @@
+/*!\file ConfigureObjectsx
+ * \brief: configure objects in elements and loads to link in with nodes
+ */
+
+#include "./ConfigureObjectsx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+
+int	ConfigureObjectsx( Elements* elements, Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters,Inputs* inputs){
+
+	if(VerboseMProcessor()) _printf0_("      Configuring elements...\n");
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->Configure(elements,loads,nodes,vertices,materials,parameters,inputs);
+	}
+	if(VerboseMProcessor()) _printf0_("      Configuring loads...\n");
+	for(Object* object : loads->objects){
+		Load* load=(Load*)object;
+		load->Configure(elements,loads,nodes,vertices,materials,parameters);
+	}
+	if(VerboseMProcessor()) _printf0_("      Configuring materials...\n");
+	for(Object* & object : materials->objects){
+		Material* material=(Material*)object;
+		material->Configure(elements);
+	}
+	if(VerboseMProcessor()) _printf0_("      Configuring inputs...\n");
+	inputs->Configure(parameters);
+
+	return 1;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  ConfigureObjectsx.h
+ * \brief header file for degree of freedoms distribution routines.
+ */ 
+
+#ifndef _CONFIGUREOBJECTSX_H
+#define _CONFIGUREOBJECTSX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+int ConfigureObjectsx( Elements* elements, Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials, Parameters* parameters,Inputs* inputs);
+
+#endif  /* _CONFIGUREOBJECTSX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ConstraintsStatex/ConstraintsStateLocal.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ConstraintsStatex/ConstraintsStateLocal.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ConstraintsStatex/ConstraintsStateLocal.h	(revision 27955)
@@ -0,0 +1,22 @@
+/*!\file:  ConstraintsStateLocal.h
+ * \brief local header files
+ */ 
+
+#ifndef _CONSTRAINTSSTATELOCAL_H
+#define _CONSTRAINTSSTATELOCAL_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../classes/classes.h"
+
+/*rifts module: */
+void RiftConstraintsState(int* pconverged, int* pnum_unstable_constraints,Loads* loads,int min_mechanical_constraints,int analysis_type);
+void RiftConstrain(int* pnum_unstable_constraints,Loads* loads,int analysis_type);
+int  RiftIsFrozen(Loads* loads,int analysis_type);
+void RiftFreezeConstraints(Loads* loads,int analysis_type);
+
+#endif  /* _CONSTRAINTSSTATEX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ConstraintsStatex/ConstraintsStatex.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ConstraintsStatex/ConstraintsStatex.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ConstraintsStatex/ConstraintsStatex.cpp	(revision 27955)
@@ -0,0 +1,61 @@
+/*!\file ConstraintsStatex
+ * \brief: set up penalty constraints on loads
+ */
+
+#include "./ConstraintsStatex.h"
+#include "./ConstraintsStateLocal.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void ConstraintsStatex(int* pconverged, int* pnum_unstable_constraints,FemModel* femmodel){
+
+	/*Early return if no rift and no penalties*/
+	if(femmodel->loads->numrifts == 0 && femmodel->loads->numpenalties == 0){
+		*pconverged                = 0;
+		*pnum_unstable_constraints = 0;
+		return;
+	}
+
+	/*output: */
+	int converged                    = 1;
+	int num_unstable_constraints     = 0;
+	int min_mechanical_constraints   = 0;
+	int unstable                     = 0;
+	int sum_num_unstable_constraints = 0;
+	int analysis_type;
+
+	/*Display message*/
+	if(VerboseModule()) _printf0_("   Constraining penalties\n");
+
+	/*recover parameters: */
+	femmodel->parameters->FindParam(&min_mechanical_constraints,StressbalanceRiftPenaltyThresholdEnum);
+	femmodel->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	/*Rift penalties first*/
+	if(femmodel->loads->numrifts){
+		RiftConstraintsState(&converged,&num_unstable_constraints,femmodel->loads,min_mechanical_constraints,analysis_type);
+	}
+
+	/*Deal with pengrid*/
+	if(femmodel->loads->numpenalties){
+		for(Object* & object : femmodel->loads->objects){
+			Load* load=(Load*)object;
+			if(load->ObjectEnum()==PengridEnum){
+				Pengrid* pengrid=(Pengrid*)load;
+				pengrid->ConstraintActivate(&unstable);
+				num_unstable_constraints += unstable;
+			}
+		}
+	}
+
+	ISSM_MPI_Reduce(&num_unstable_constraints,&sum_num_unstable_constraints,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&sum_num_unstable_constraints,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	num_unstable_constraints=sum_num_unstable_constraints;
+
+	/*Have we converged? : */
+	if(num_unstable_constraints) converged=0;
+
+	/*Assign output pointers: */
+	*pconverged                = converged;
+	*pnum_unstable_constraints = num_unstable_constraints;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ConstraintsStatex/ConstraintsStatex.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ConstraintsStatex/ConstraintsStatex.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ConstraintsStatex/ConstraintsStatex.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  ConstraintsStatex.h
+ * \brief header file for penalty constraints module
+ */ 
+
+#ifndef _CONSTRAINTSSTATEX_H
+#define _CONSTRAINTSSTATEX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void ConstraintsStatex(int* pconverged, int* pnum_unstable_constraints,FemModel* femmodel);
+
+#endif  /* _CONSTRAINTSSTATEX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ConstraintsStatex/RiftConstraintsState.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ConstraintsStatex/RiftConstraintsState.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ConstraintsStatex/RiftConstraintsState.cpp	(revision 27955)
@@ -0,0 +1,111 @@
+/*!\file RiftConstraintsState.cpp
+ * \brief: manage penalties for rifts
+ */
+#include "./ConstraintsStateLocal.h"
+#include "../../shared/shared.h"
+
+/*current module: */
+/*RiftConstraintsState(int* pconverged, int* pnum_unstable_constraints,Loads* loads,int min_mechanical_constraints,int configuration_type){{{*/
+void RiftConstraintsState(int* pconverged, int* pnum_unstable_constraints,Loads* loads,int min_mechanical_constraints,int configuration_type){
+
+	int num_unstable_constraints=0;
+	int converged=0;
+
+	RiftConstrain(&num_unstable_constraints,loads,configuration_type);
+	if(num_unstable_constraints==0)converged=1;
+
+	if(RiftIsFrozen(loads,configuration_type)){
+		converged=1;
+		num_unstable_constraints=0;
+	}
+	else if(num_unstable_constraints<=min_mechanical_constraints){
+		if(VerboseModule()) _printf0_("   freezing constraints\n");
+		RiftFreezeConstraints(loads,configuration_type);
+	}
+
+	/*Assign output pointers: */
+	*pconverged=converged;
+	*pnum_unstable_constraints=num_unstable_constraints;
+}
+/*}}}*/
+/*RiftConstrain(int* pnum_unstable_constraints,Loads* loads,int configuration_type){{{*/
+void RiftConstrain(int* pnum_unstable_constraints,Loads* loads,int configuration_type){
+
+	/* generic object pointer: */
+	Riftfront* riftfront=NULL;
+	Load*      load=NULL;
+
+	int unstable;
+	int sum_num_unstable_constraints;
+	int num_unstable_constraints=0;
+
+	/*Enforce constraints: */
+	for (Object* & object : loads->objects){
+		if (RiftfrontEnum==object->ObjectEnum()){
+			load=(Load*)object;
+			riftfront=(Riftfront*)load;
+			riftfront->Constrain(&unstable);
+			num_unstable_constraints+=unstable;
+		}
+	}
+
+	ISSM_MPI_Reduce (&num_unstable_constraints,&sum_num_unstable_constraints,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&sum_num_unstable_constraints,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	num_unstable_constraints=sum_num_unstable_constraints;
+
+	/*Assign output pointers: */
+	*pnum_unstable_constraints=num_unstable_constraints;
+
+}
+/*}}}*/
+/*RiftIsFrozen(Loads* loads,int configuration_type){{{*/
+int RiftIsFrozen(Loads* loads,int configuration_type){
+
+	int			i;
+
+	/* generic object pointer: */
+	Load*      load=NULL;
+	Riftfront* riftfront=NULL;
+	int found=0;
+	int mpi_found=0;
+
+	/*Enforce constraints: */
+	for (Object* & object : loads->objects){
+		if (RiftfrontEnum==object->ObjectEnum()){
+			load=(Load*)object;
+			riftfront=(Riftfront*)load;
+			if (riftfront->IsFrozen()){
+				found=1;
+				break;
+			}
+		}
+	}
+
+	/*Is there just one found? that would mean we have frozen! : */
+	ISSM_MPI_Reduce (&found,&mpi_found,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&mpi_found,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	found=mpi_found;
+
+	return found;
+}
+/*}}}*/
+/*RiftFreezeConstraints(Loads* loads,int configuration_type){{{*/
+void RiftFreezeConstraints(Loads* loads,int configuration_type){
+
+	int			i;
+
+	/* generic object pointer: */
+	Load*      load=NULL;
+	Riftfront* riftfront=NULL;
+
+	/*Enforce constraints: */
+	for (Object* & object : loads->objects){
+		if (RiftfrontEnum==object->ObjectEnum()){
+			load=(Load*)object;
+			riftfront=(Riftfront*)load;
+			riftfront->FreezeConstraints();
+		}
+	}
+
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ContourToMeshx/ContourToMeshx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ContourToMeshx/ContourToMeshx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ContourToMeshx/ContourToMeshx.cpp	(revision 27955)
@@ -0,0 +1,49 @@
+/*! \file  ContourToMeshx.c
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./ContourToMeshx.h"
+
+int ContourToMeshx(double** pin_nod,double** pin_elem, double* index, double* x, double* y,Contours* contours,char* interptype,int nel,int nods, int edgevalue) {
+
+	/*Contour:*/
+	double value;
+
+	/*output: */
+	double*  in_nod;
+	double*  in_elem;
+	in_nod   = xNewZeroInit<double>(nods);
+	in_elem  = xNewZeroInit<double>(nel);
+
+	/*initialize thread parameters: */
+	ContourToMeshxThreadStruct gate;
+	gate.contours  = contours;
+	gate.nods      = nods;
+	gate.edgevalue = edgevalue;
+	gate.in_nod    = in_nod;
+	gate.x         = x;
+	gate.y         = y;
+
+	/*launch the thread manager with ContourToMeshxt as a core: */
+	LaunchThread(ContourToMeshxt,(void*)&gate,_NUMTHREADS_);
+
+	/*Take care of the case where an element interpolation has been requested: */
+	if ((strcmp(interptype,"element")==0) || (strcmp(interptype,"element and node")==0)){
+		for(int n=0;n<nel;n++){
+			if ( (in_nod[ (int)*(index+3*n+0) -1] == 1) && (in_nod[ (int)*(index+3*n+1) -1] == 1) && (in_nod[ (int)*(index+3*n+2) -1] == 1) ){
+				value=1.; in_elem[n]=value;
+			}
+		}
+	}
+
+	/*Assign output pointers: */
+	*pin_nod=in_nod;
+	*pin_elem=in_elem;
+
+	return 1;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ContourToMeshx/ContourToMeshx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ContourToMeshx/ContourToMeshx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ContourToMeshx/ContourToMeshx.h	(revision 27955)
@@ -0,0 +1,28 @@
+/*
+	ContourToMeshx.h
+*/
+
+#ifndef _CONTOURTOMESHX_H
+#define _CONTOURTOMESHX_H
+
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+
+/*threading: */
+typedef struct{
+
+	Contours *contours;
+	int       nods;
+	int       edgevalue;
+	double   *in_nod;
+	double   *x;
+	double   *y;
+
+} ContourToMeshxThreadStruct;
+
+/* local prototypes: */
+int ContourToMeshx(double** pin_nods,double** pin_elem, double* index, double* x, double* y,Contours* contours,char* interptype,int nel,int nods, int edgevalue);
+
+void* ContourToMeshxt(void* vContourToMeshxThreadStruct);
+
+#endif /* _CONTOURTOMESHX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ContourToMeshx/ContourToMeshxt.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ContourToMeshx/ContourToMeshxt.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ContourToMeshx/ContourToMeshxt.cpp	(revision 27955)
@@ -0,0 +1,44 @@
+/*!\file:  ContourToMeshxt.cpp
+ * \brief  "thread" core code for interpolating values from a structured grid.
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./ContourToMeshx.h"
+
+void* ContourToMeshxt(void* vpthread_handle){
+
+	/*gate variables :*/
+	ContourToMeshxThreadStruct *gate        = NULL;
+	pthread_handle             *handle      = NULL;
+	int  i,i1,i0;
+
+	/*recover handle and gate: */
+	handle          = (pthread_handle*)vpthread_handle;
+	gate            = (ContourToMeshxThreadStruct*)handle->gate;
+	int my_thread   = handle->id;
+	int num_threads = handle->num;
+
+	/*recover parameters :*/
+	Contours* contours  = gate->contours;
+	int       nods      = gate->nods;
+	int       edgevalue = gate->edgevalue;
+	double   *in_nod    = gate->in_nod;
+	double   *x         = gate->x;
+	double   *y         = gate->y;
+
+	/*distribute indices across threads :*/
+	PartitionRange(&i0,&i1,nods,num_threads,my_thread);
+
+	/*Loop through all contours: */
+	for (Object* & object : contours->objects){
+		Contour<double>* contour=(Contour<double>*)object;
+		IsInPoly(in_nod,contour->x,contour->y,contour->nods,x,y,i0,i1,edgevalue);
+	}
+
+	return NULL;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ContourToNodesx/ContourToNodesx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ContourToNodesx/ContourToNodesx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ContourToNodesx/ContourToNodesx.cpp	(revision 27955)
@@ -0,0 +1,51 @@
+/*! \file  ContourToNodesx.c
+ */
+
+#include "./ContourToNodesx.h"
+
+int ContourToNodesx(IssmPDouble** pflags,double* x, double* y, int nods, Contour<IssmPDouble>** contours,int numcontours,int edgevalue){
+
+	int i;
+
+	/*Contour:*/
+	Contour<IssmPDouble>* contouri=NULL;
+	int      numnodes;
+	double*  xc=NULL;
+	double*  yc=NULL;
+
+	/*output: */
+	IssmPDouble* flags=NULL;
+	flags=xNew<IssmPDouble>(nods);
+
+	/*Loop through all contours: */
+	for (i=0;i<numcontours;i++){
+		contouri=*(contours+i);
+		numnodes=contouri->nods;
+		xc=contouri->x;
+		yc=contouri->y;
+		IsInPoly(flags,xc,yc,numnodes,x,y,0,nods,edgevalue);
+	}
+
+	/*Assign output pointers: */
+	*pflags=flags;
+	return 1;
+}
+
+int ContourToNodesx(IssmPDouble** pflags,double* x, double* y, int nods, Contours* contours, int edgevalue){
+
+	/*output: */
+	IssmPDouble* flags=NULL;
+	flags=xNewZeroInit<IssmPDouble>(nods);
+
+	/*Loop through all contours: */
+	if(contours){
+		for(Object* & object:contours->objects){
+			Contour<IssmPDouble>* contour=(Contour<IssmPDouble>*)object;
+			IsInPoly(flags,contour->x,contour->y,contour->nods,x,y,0,nods,edgevalue);
+		}
+	}
+
+	/*Assign output pointers: */
+	*pflags=flags;
+	return 1;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ContourToNodesx/ContourToNodesx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ContourToNodesx/ContourToNodesx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ContourToNodesx/ContourToNodesx.h	(revision 27955)
@@ -0,0 +1,15 @@
+/*
+	ContourToNodesx.h
+*/
+
+#ifndef _CONTOURTONODESX_H
+#define _CONTOURTONODESX_H
+
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+int ContourToNodesx(IssmPDouble** pflags,double* x, double* y, int nods, Contour<IssmPDouble>** contours,int numcontours,int edgevalue);
+int ContourToNodesx(IssmPDouble** pflags,double* x, double* y, int nods, Contours* contours, int edgevalue);
+
+#endif /* _CONTOURTONODESX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ControlInputSetGradientx/ControlInputSetGradientx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ControlInputSetGradientx/ControlInputSetGradientx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ControlInputSetGradientx/ControlInputSetGradientx.cpp	(revision 27955)
@@ -0,0 +1,59 @@
+/*!\file ControlInputSetGradientx
+ * \brief retrieve gradient from inputs in elements
+ */
+
+#include "./ControlInputSetGradientx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void ControlInputSetGradientx(Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,IssmDouble* gradient){
+
+	/*Intermediaries*/
+	int  num_controls;
+	int *control_type = NULL;
+	int* M_all = NULL;
+	int* N_all = NULL;
+	int* interp_all = NULL;
+
+	/*Retrieve some parameters*/
+	parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	parameters->FindParam(&control_type,NULL,InversionControlParametersEnum);
+	parameters->FindParam(&M_all,NULL,ControlInputSizeMEnum);
+	parameters->FindParam(&N_all,NULL,ControlInputSizeNEnum);
+	parameters->FindParam(&interp_all,NULL,ControlInputInterpolationEnum);
+
+	int offset = 0;
+	for(int i=0;i<num_controls;i++){
+		/*Is the control a Param?*/
+		if(IsParamEnum(control_type[i])){
+			parameters->SetGradientFromVector(gradient, control_type[i], M_all[i], N_all[i], offset);
+		}
+		else if(IsInputEnum(control_type[i])){
+			for(Object* & object : elements->objects){
+				Element* element=xDynamicCast<Element*>(object);
+				element->ControlInputSetGradient(gradient,control_type[i],i,offset,M_all[i],N_all[i],interp_all[i]);
+			}
+		}
+		else{
+			_error_("not supported yet");
+		}
+		offset+=M_all[i]*N_all[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<int>(control_type);
+	xDelete<int>(M_all);
+	xDelete<int>(N_all);
+	xDelete<int>(interp_all);
+
+}
+void ControlInputSetGradientx(Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,Vector<IssmDouble>* gradient){
+
+	/*Serialize gradient*/
+	IssmDouble* serial_gradient=gradient->ToMPISerial();
+
+	ControlInputSetGradientx(elements,nodes,vertices, loads, materials, parameters,serial_gradient);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(serial_gradient);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ControlInputSetGradientx/ControlInputSetGradientx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ControlInputSetGradientx/ControlInputSetGradientx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ControlInputSetGradientx/ControlInputSetGradientx.h	(revision 27955)
@@ -0,0 +1,12 @@
+/*!\file:  ControlInputSetGradientx.h
+ */ 
+
+#ifndef _CONTROLINPUTSSETGRADIENTX_H
+#define _CONTROLINPUTSSETGRADIENTX_H
+
+#include "../../classes/classes.h"
+
+void	ControlInputSetGradientx(Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials,  Parameters* parameters,IssmDouble* gradient);
+void	ControlInputSetGradientx(Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials,  Parameters* parameters,Vector<IssmDouble>* gradient);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/CoordinateSystemTransformx/CoordinateSystemTransformx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/CoordinateSystemTransformx/CoordinateSystemTransformx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/CoordinateSystemTransformx/CoordinateSystemTransformx.cpp	(revision 27955)
@@ -0,0 +1,75 @@
+/*!\file CoordinateSystemTransformx
+ * \brief: x code for CoordinateSystemTransformx
+ */
+
+/*Header files*/
+#include "./CoordinateSystemTransformx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include <proj.h>
+
+void CoordinateSystemTransformx(double** px_dest,double** py_dest,double* x_src,double* y_src,int size,const char* str_src,const char* str_dst){
+
+/*
+NOTE:
+- Compilation of this module is fenced in Makefile.am, so we do not have to 
+check again if _HAVE_PROJ_ is defined
+*/
+#if defined(PROJ_VERSION_MAJOR) && PROJ_VERSION_MAJOR >= 6
+	/*
+	Converts an array of longitude (x_src) and array of latitude (y_src) in the 
+	projection described by str_src to the projection described by str_dest.
+
+	NOTE:
+	- API types and calls have been migrated from PROJ 4 to PROJ 6. See SVN 
+	revision history for changes.
+
+	Sources:
+	- https://proj.org/development/migration.html
+	- https://www.gaia-gis.it/fossil/libspatialite/wiki?name=PROJ.6
+
+	TODO:
+	- Because transformations are done in place, we could save memory and time 
+	by simply passing in x_src and y_src and removing the px_dest and py_dest 
+	parameters entirely?
+	*/
+
+	/*Allocate output and initialize values as src*/
+	_assert_(size>0);
+	double* x_dest = xNew<double>(size);
+	double* y_dest = xNew<double>(size);
+
+	for(int i=0;i<size;i++){
+		x_dest[i] = x_src[i];
+		y_dest[i] = y_src[i];
+	}
+
+	PJ *P;
+	size_t sx = sizeof(double);
+	size_t sy = sizeof(double);
+	size_t nx = size;
+	size_t ny = size;
+
+	P = proj_create_crs_to_crs(PJ_DEFAULT_CTX,str_src,str_dst,NULL);
+
+	if ( 0 == P ) {
+		proj_destroy(P);
+		_error_("failed to initialize CRS transformation object");
+	}
+
+	int p = proj_trans_generic(P, PJ_FWD, x_dest, sx, nx, y_dest, sy, ny, 0, 0, 0, 0, 0, 0);
+
+	if ( 0 == p ){
+		proj_destroy(P);
+		_error_("no successful transformations");
+	}
+
+	proj_destroy(P);
+
+	/*Output : */
+	*px_dest=x_dest;
+	*py_dest=y_dest;
+#else
+	_error_("PROJ version >= 6 required");
+#endif
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/CoordinateSystemTransformx/CoordinateSystemTransformx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/CoordinateSystemTransformx/CoordinateSystemTransformx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/CoordinateSystemTransformx/CoordinateSystemTransformx.h	(revision 27955)
@@ -0,0 +1,11 @@
+/*!\file:  CoordinateSystemTransformx.h
+ */ 
+
+#ifndef _CORRDSYSTRANFER_
+#define _CORRDSYSTRANFER_
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void CoordinateSystemTransformx(double** px_dest,double** py_dest,double* x_src,double* y_src,int size,const char* str_src,const char* str_dst);
+#endif  
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.cpp	(revision 27955)
@@ -0,0 +1,46 @@
+/*!\file CreateJacobianMatrixx
+ * \brief retrieve vector from inputs in elements
+ */
+
+#include "./CreateJacobianMatrixx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../AllocateSystemMatricesx/AllocateSystemMatricesx.h"
+
+void CreateJacobianMatrixx(Matrix<IssmDouble>** pJff,FemModel* femmodel,IssmDouble kmax){
+
+	int      configuration_type,analysisenum;
+	Element *element = NULL;
+	Load    *load    = NULL;
+	Matrix<IssmDouble>* Jff = NULL;
+
+	/*Checks*/
+	_assert_(femmodel && femmodel->nodes && femmodel->elements);
+
+	/*Recover some parameters*/
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	femmodel->parameters->FindParam(&analysisenum,AnalysisTypeEnum);
+	Analysis* analysis = EnumToAnalysis(analysisenum);
+
+	/*Initialize Jacobian Matrix*/
+	AllocateSystemMatricesx(&Jff,NULL,NULL,NULL,femmodel);
+
+	/*Create and assemble matrix*/
+	for(Object* & object : femmodel->elements->objects){
+		element=xDynamicCast<Element*>(object);
+		ElementMatrix* Je = analysis->CreateJacobianMatrix(element);
+		if(Je) Je->AddToGlobal(Jff);
+		delete Je;
+	}
+	for (Object* & object : femmodel->loads->objects){
+		load=(Load*)object;
+		load->CreateJacobianMatrix(Jff);
+		load->PenaltyCreateJacobianMatrix(Jff,kmax);
+	}
+	Jff->Assemble();
+
+	/*Assign output pointer*/
+	delete analysis;
+	*pJff=Jff;
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  CreateJacobianMatrixx.h
+*/ 
+
+#ifndef _CREATEJACOBIANMATRIXX_H
+#define _CREATEJACOBIANMATRIXX_H
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+/* local prototypes: */
+void CreateJacobianMatrixx(Matrix<IssmDouble>** pJff,FemModel* femmodel,IssmDouble kmax);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/CreateNodalConstraintsx/CreateNodalConstraintsx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/CreateNodalConstraintsx/CreateNodalConstraintsx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/CreateNodalConstraintsx/CreateNodalConstraintsx.cpp	(revision 27955)
@@ -0,0 +1,43 @@
+/*!\file CreateNodalConstraintsx
+ * \brief: establish degrees of freedom for all nodes, and return partitioning vector. Do only once.
+ */
+
+#include "./CreateNodalConstraintsx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void CreateNodalConstraintsx( Vector<IssmDouble>** pys, Nodes* nodes){
+
+	bool  oldalloc  = false;
+
+	/*output: */
+	Vector<IssmDouble>* ys=NULL;
+	int ssize;
+	int slocalsize;
+
+	if(VerboseModule()) _printf0_("   Create nodal constraints\n");
+
+	/*figure out how many dofs we have: */
+	ssize=nodes->NumberOfDofs(SsetEnum);
+	slocalsize = nodes->NumberOfDofsLocal(SsetEnum);
+
+	/*allocate:*/
+	if(oldalloc)
+	 ys=new Vector<IssmDouble>(ssize);
+	else
+	 ys=new Vector<IssmDouble>(slocalsize,ssize);
+
+	/*go through all nodes, and for the ones corresponding to this configuration_type, fill the
+	 * constraints vector with the constraint values: */
+	for(Object* & object: nodes->objects){
+		Node* node=xDynamicCast<Node*>(object);
+		node->CreateNodalConstraints(ys);
+	}
+
+	/*Assemble: */
+	ys->Assemble();
+
+	/*Assign output pointers: */
+	*pys=ys;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/CreateNodalConstraintsx/CreateNodalConstraintsx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/CreateNodalConstraintsx/CreateNodalConstraintsx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/CreateNodalConstraintsx/CreateNodalConstraintsx.h	(revision 27955)
@@ -0,0 +1,12 @@
+/*!\file:  CreateNodalConstraintsx.h
+ */ 
+
+#ifndef _CREATENODALCONSTRAINTSX_H
+#define _CREATENODALCONSTRAINTSX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void CreateNodalConstraintsx( Vector<IssmDouble>** pys, Nodes* nodes);
+
+#endif  /* _CREATENODALCONSTRAINTSX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Damagex/Damagex.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Damagex/Damagex.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Damagex/Damagex.cpp	(revision 27955)
@@ -0,0 +1,36 @@
+/*!\file Damagex
+ * \brief: compute damage
+ */
+
+#include "./Damagex.h"
+#include "../InputDuplicatex/InputDuplicatex.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void Damagex(FemModel* femmodel){
+
+	/*Recover Damage law Enum*/
+	int damagelaw;
+	femmodel->parameters->FindParam(&damagelaw,DamageLawEnum);
+
+	/*Calculate damage*/
+	switch(damagelaw){
+		case 0:
+			if(VerboseModule()) _printf0_("   computing damage analytically\n");
+			InputDuplicatex(femmodel,DamageDEnum,DamageDOldEnum);
+			InputDuplicatex(femmodel,DamageDbarEnum,DamageDbarOldEnum);
+			femmodel->ElementOperationx(&Element::ComputeNewDamage);
+			break;
+		case 1:
+		case 2:
+			if(VerboseModule()) _printf0_("   computing damage using source term in advection scheme\n");
+			/* Damage calculated using source term in DamageEvolutionAnalysis */
+			break;
+		case 3:
+			if(VerboseModule()) _printf0_("   computing damage using source term in advection scheme\n");
+			/* Damage calculated using source term in DamageEvolutionAnalysis */
+			break;
+		default:
+			_error_("Damage law "<<EnumToStringx(damagelaw)<<" not implemented yet");
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Damagex/Damagex.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Damagex/Damagex.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Damagex/Damagex.h	(revision 27955)
@@ -0,0 +1,10 @@
+#ifndef _DAMAGEX_H
+#define _DAMAGEX_H
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+/* local prototypes: */
+void Damagex(FemModel* femmodel);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.cpp	(revision 27955)
@@ -0,0 +1,35 @@
+/*! \file  DistanceToMaskBoundaryx.c
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./DistanceToMaskBoundaryx.h"
+
+int DistanceToMaskBoundaryx(IssmDouble** pdistance,IssmDouble* x, IssmDouble* y, IssmDouble* mask, int nods) {
+
+	/*output: */
+	IssmDouble*  distance;
+
+	/*initialize: */
+	distance=xNew<IssmDouble>(nods);
+
+	/*initialize thread parameters: */
+	DistanceToMaskBoundaryxThreadStruct gate;
+	gate.distance = distance;
+	gate.x        = x;
+	gate.y        = y;
+	gate.mask     = mask;
+	gate.nods     = nods;
+
+	/*launch the thread manager with DistanceToMaskBoundaryxt as a core: */
+	LaunchThread(DistanceToMaskBoundaryxt,(void*)&gate,_NUMTHREADS_);
+
+	/*Assign output pointers: */
+	*pdistance=distance;
+
+	return 1;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.h	(revision 27955)
@@ -0,0 +1,27 @@
+/*
+	DistanceToMaskBoundaryx.h
+*/
+
+#ifndef _DISTANCETOMASKBOUNDARYX_H
+#define _DISTANCETOMASKBOUNDARYX_H
+
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+
+/*threading: */
+typedef struct{
+
+	int       nods;
+	IssmDouble   *distance;
+	IssmDouble   *x;
+	IssmDouble   *y;
+	IssmDouble   *mask;
+
+} DistanceToMaskBoundaryxThreadStruct;
+
+/* local prototypes: */
+int DistanceToMaskBoundaryx(IssmDouble** pdistance,IssmDouble* x, IssmDouble* y, IssmDouble* mask, int nods);
+
+void* DistanceToMaskBoundaryxt(void* vDistanceToMaskBoundaryxThreadStruct);
+
+#endif /* _DISTANCETOMASKBOUNDARYX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryxt.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryxt.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryxt.cpp	(revision 27955)
@@ -0,0 +1,79 @@
+/*!\file:  DistanceToMaskBoundaryxt.cpp
+ * \brief  "thread" core code 
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./DistanceToMaskBoundaryx.h"
+
+void* DistanceToMaskBoundaryxt(void* vpthread_handle){
+
+	/*gate variables :*/
+	DistanceToMaskBoundaryxThreadStruct *gate        = NULL;
+	pthread_handle             *handle      = NULL;
+	int  i,j,i0,i1;
+
+	/*recover handle and gate: */
+	handle          = (pthread_handle*)vpthread_handle;
+	gate            = (DistanceToMaskBoundaryxThreadStruct*)handle->gate;
+	int my_thread   = handle->id;
+	int num_threads = handle->num;
+
+	/*recover parameters :*/
+	int       nods      = gate->nods;
+	IssmDouble   *distance    = gate->distance;
+	IssmDouble   *x         = gate->x;
+	IssmDouble   *y         = gate->y;
+	IssmDouble   *mask         = gate->mask;
+
+	/*distribute indices across threads :*/
+	PartitionRange(&i0,&i1,nods,num_threads,my_thread);
+
+	/*Loop through vertices: */
+	for(i=i0;i<i1;i++){
+
+		IssmDouble d0=1.e+10;
+		IssmDouble xi,yi;
+
+		//recover vertex position: 
+		xi=x[i];  yi=y[i];
+
+		//figure out if we are inside the mask, or outside: 
+		if(mask[i]==1){
+			//we are inside, look for nearest vertex that is outside the mask: 
+			for(j=0;j<nods;j++){
+				if(j==i)continue;
+				if (mask[j]==0){
+					IssmDouble xj,yj,deltaphi,deltalambda,d;
+					xj=x[j]; yj=y[j];
+					/*figure  out the distance to xi,yi in lat,long mode, using the greatest circle distance:*/
+					deltaphi=fabs(xj-xi); deltalambda=fabs(yj-yi);
+					d=2*asin(sqrt(pow(sin(deltaphi/2),2)+cos(xi)*cos(xj)*pow(sin(deltalambda/2),2)));
+					if(d<d0)d0=d;
+				}
+			}
+			distance[i]=d0;
+		}
+		else{
+			//we are outside, look for nearest vertex that is inside the mask: 
+			for(j=0;j<nods;j++){
+				if(j==i)continue;
+				if (mask[j]==1){
+					IssmDouble xj,yj,deltaphi,deltalambda,d;
+					xj=x[j]; yj=y[j];
+					/*figure  out the distance to xi,yi in lat,long mode, using the greatest circle distance:*/
+					deltaphi=fabs(xj-xi); deltalambda=fabs(yj-yi);
+					d=2*asin(sqrt(pow(sin(deltaphi/2),2)+cos(xi)*cos(xj)*pow(sin(deltalambda/2),2)));
+					if(d<d0)d0=d;
+				}
+			}
+			distance[i]=d0;
+		}
+	}
+
+	return NULL;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.cpp	(revision 27955)
@@ -0,0 +1,101 @@
+/*!\file DragCoefficientAbsGradientx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./DragCoefficientAbsGradientx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/Inputs/DatasetInput.h"
+
+void DragCoefficientAbsGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		J+=DragCoefficientAbsGradient(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble DragCoefficientAbsGradient(Element* element){
+
+	int         domaintype,numcomponents;
+	int frictionlaw;
+	IssmDouble  Jelem=0.;
+	IssmDouble  misfit,Jdet;
+	IssmDouble  dp[2],weight;
+	IssmDouble* xyz_list      = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnBase()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn basal element*/
+	Element* basalelement = element->SpawnBasalElement();
+
+	/* Get node coordinates*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	DatasetInput* weights_input=basalelement->GetDatasetInput(InversionCostFunctionsCoefficientsEnum);   _assert_(weights_input);
+
+	/* get the friction law: if 2-Weertman, 11-Schoof or 14-RegularizedCoulomb, which has a different names of C */
+	element->FindParam(&frictionlaw, FrictionLawEnum);
+	Input* drag_input = NULL;
+	switch(frictionlaw) {
+		case 2:
+		case 11:
+		case 13:
+		case 14:
+			drag_input = basalelement->GetInput(FrictionCEnum); _assert_(drag_input);
+			break;
+		default:
+			drag_input = basalelement->GetInput(FrictionCoefficientEnum); _assert_(drag_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,DragCoefficientAbsGradientEnum);
+		drag_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+
+		/*Compute Tikhonov regularization J = 1/2 ((dp/dx)^2 + (dp/dy)^2) */
+		Jelem+=weight*.5*dp[0]*dp[0]*Jdet*gauss->weight;
+		if(numcomponents==2) Jelem+=weight*.5*dp[1]*dp[1]*Jdet*gauss->weight;
+
+	}
+
+	/*clean up and Return: */
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  DragCoefficientAbsGradientx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _DRAGCOEFFABSGRADX_H
+#define _DRAGCOEFFABSGRADX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void DragCoefficientAbsGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble DragCoefficientAbsGradient(Element* element);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ElementConnectivityx/ElementConnectivityx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ElementConnectivityx/ElementConnectivityx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ElementConnectivityx/ElementConnectivityx.cpp	(revision 27955)
@@ -0,0 +1,89 @@
+/*!\file ElementConnectivityx
+ * \brief: compute element connectivity table, using node connectivity table and elements.
+ *
+ * For each element, we want to know which neighbouring elements it connects to (fully, via an entire segment, not by a node).
+ * We use the nodeconnectivity to speed up the computation. The nodeconnectivity gives us for each node of the element, 
+ * all the neighbouring elements of this node, which are good candidates to be neighbours of the element itself.
+ * For now, only triangular elements, ie 3 neighbours max per element.
+ */
+
+#include "./ElementConnectivityx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+int hascommondedge(int* element1,int* element2);
+
+void ElementConnectivityx(int** pelementconnectivity,int* elements, int nels,int* nodeconnectivity, int nods, int width){
+
+	int i,j,k,n;
+
+	/*intermediary: */
+	int    maxels;
+	int  connectedelement;
+	int    connectedelementindex;
+	int    node;
+	int    index;
+	int    num_elements;
+
+	/*maxels: */
+	maxels=width-1;
+
+	/*Allocate connectivity: */
+	int* elementconnectivity=xNewZeroInit<int>(nels*3);
+
+	/*Go through all elements, and for each element, go through its nodes, to get the neighbouring elements. 
+	 * Once we get the neighbouring elements, figure out if they share a segment with the current element. If so, 
+	 * plug them in the connectivity, unless they are already there.: */
+	for(n=0;n<nels;n++){
+
+		//element=n+1; //matlab indexing
+
+		for(i=0;i<3;i++){
+
+			node=elements[n*3+i]; //already matlab indexed, elements comes directly from the workspace.
+			index=node-1;
+
+			num_elements=nodeconnectivity[width*index+maxels]; //retrieve number of elements already  plugged into the connectivity of this node.
+
+			for(j=0;j<num_elements;j++){
+
+				/*for each element connected to node, figure out if it has a commond edge with element: */
+				connectedelement=nodeconnectivity[width*index+j];
+				connectedelementindex=connectedelement-1; //go from matlab indexing to c indexing.
+
+				if(hascommondedge(&elements[n*3+0],&elements[connectedelementindex*3+0])){
+					/*Ok, this connected element has a commond edge  with element, plug it into elementconnectivity, unless 
+					 *it is already there: */
+
+					for(k=0;k<3;k++){
+						if(elementconnectivity[3*n+k]==0){
+							elementconnectivity[3*n+k]=connectedelement;
+							break;
+						}
+						else{
+							if(connectedelement==elementconnectivity[3*n+k]) break;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	/*Assign output pointers: */
+	*pelementconnectivity=elementconnectivity;
+}
+
+int hascommondedge(int* el1,int* el2){
+
+	int count=0;
+	for(int i=0;i<3;i++){
+		for(int j=0;j<3;j++){
+			if(el1[i]==el2[j]) count++;
+		}
+	}
+	if(count==2)
+	 return 1;
+	else
+	 return 0;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ElementConnectivityx/ElementConnectivityx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ElementConnectivityx/ElementConnectivityx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ElementConnectivityx/ElementConnectivityx.h	(revision 27955)
@@ -0,0 +1,11 @@
+/*!\file:  ElementConnectivityx.h
+ * \brief header file for element connectivity computation
+ */ 
+
+#ifndef _ELEMENTCONNECTIVITYX_H
+#define _ELEMENTCONNECTIVITYX_H
+
+/* local prototypes: */
+void	ElementConnectivityx(int** pelementconnectivity,int* elements,int nels,int* nodeconnectivity, int nods, int width);
+
+#endif  /* _ELEMENTCONNECTIVITYX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ElementCoordinatesx/ElementCoordinatesx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ElementCoordinatesx/ElementCoordinatesx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ElementCoordinatesx/ElementCoordinatesx.cpp	(revision 27955)
@@ -0,0 +1,94 @@
+/*!\file ElementCoordinatesx
+ * \brief: compute a vector xe,ye and ze of element centroid coordinates by
+ * marching through all our elements.
+ */
+
+#include "./ElementCoordinatesx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void ElementCoordinatesx( IssmDouble** pxe, IssmDouble** pye, IssmDouble** pze, IssmDouble** pareae, Elements* elements,bool spherical) { /*{{{*/
+
+	/*figure out how many vertices we have: */
+	int numberofelements=elements->NumberOfElements();
+
+	Vector<IssmDouble>* vxe=new Vector<IssmDouble>(numberofelements);
+	Vector<IssmDouble>* vye=new Vector<IssmDouble>(numberofelements);
+	Vector<IssmDouble>* vze=new Vector<IssmDouble>(numberofelements);
+	Vector<IssmDouble>* vareae=new Vector<IssmDouble>(numberofelements);
+
+	/*march through our elements: */
+	for(Object* & object : elements->objects){
+		Element* element=(Element*)object;
+		element->ElementCoordinates(vxe,vye,vze,vareae,spherical);
+	}
+
+	/*Assemble*/
+	vxe->Assemble();
+	vye->Assemble();
+	vze->Assemble();
+	vareae->Assemble();
+
+	/*serialize: */
+	IssmDouble* xe=vxe->ToMPISerial();
+	IssmDouble* ye=vye->ToMPISerial();
+	IssmDouble* ze=vze->ToMPISerial();
+	IssmDouble* areae=vareae->ToMPISerial();
+
+	/*Free resources: */
+	delete vxe;
+	delete vye;
+	delete vze;
+	delete vareae;
+
+	/*output: */
+	if(pxe) *pxe=xe;
+	else xDelete<IssmDouble>(xe);
+	if(pye) *pye=ye;
+	else xDelete<IssmDouble>(ye);
+	if(pze) *pze=ze;
+	else xDelete<IssmDouble>(ze);
+	if(pareae) *pareae=areae;
+	else xDelete<IssmDouble>(areae);
+
+} /*}}}*/
+void ElementCoordinatesx( IssmDouble** plonge, IssmDouble** plate, IssmDouble** pareae, Elements* elements) { /*{{{*/
+
+	/*figure out how many vertices we have: */
+	int numberofelements=elements->NumberOfElements();
+
+	Vector<IssmDouble>* vlonge=new Vector<IssmDouble>(numberofelements);
+	Vector<IssmDouble>* vlate=new Vector<IssmDouble>(numberofelements);
+	Vector<IssmDouble>* vareae=new Vector<IssmDouble>(numberofelements);
+
+	/*march through our elements: */
+	for(Object* & object : elements->objects){
+		Element* element=(Element*)object;
+		element->ElementCoordinates(vlonge,vlate,vareae);
+	}
+
+	/*Assemble*/
+	vlonge->Assemble();
+	vlate->Assemble();
+	vareae->Assemble();
+
+	/*serialize: */
+	IssmDouble* longe=vlonge->ToMPISerial();
+	IssmDouble* late=vlate->ToMPISerial();
+	IssmDouble* areae=vareae->ToMPISerial();
+
+	/*Free resources: */
+	delete vlonge;
+	delete vlate;
+	delete vareae;
+
+	/*output: */
+	if(plonge) *plonge=longe;
+	else xDelete<IssmDouble>(longe);
+	if(plate) *plate=late;
+	else xDelete<IssmDouble>(late);
+	if(pareae) *pareae=areae;
+	else xDelete<IssmDouble>(areae);
+
+} /*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ElementCoordinatesx/ElementCoordinatesx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ElementCoordinatesx/ElementCoordinatesx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ElementCoordinatesx/ElementCoordinatesx.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  ElementCoordinatesx.h
+ */ 
+
+#ifndef _ELEMENT_COORDINATESX_H
+#define _ELEMENT_COORDINATESX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void ElementCoordinatesx( IssmDouble** pxe, IssmDouble** pye, IssmDouble** pze,IssmDouble** pareae, Elements* elements,bool spherical=false);
+void ElementCoordinatesx( IssmDouble** plonge, IssmDouble** plate, IssmDouble** pareae, Elements* elements);
+
+#endif  /* _ELEMENT_COORDINATESX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Exp2Kmlx/Exp2Kmlx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Exp2Kmlx/Exp2Kmlx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Exp2Kmlx/Exp2Kmlx.cpp	(revision 27955)
@@ -0,0 +1,292 @@
+/*!\file Exp2Kmlx
+ * \brief exp to kml conversion routines.
+ */
+
+#include "./Exp2Kmlx.h"
+#include "../../shared/shared.h"
+#include "../../kml/kmlobjects.h"
+#include "../../toolkits/toolkits.h"
+
+int Exp2Kmlx(char* filexp,char* filkml,int sgn,bool holes){
+
+	double  cm,sp;
+
+	Xy2lldef(&cm,&sp,sgn);
+	return(Exp2Kmlx(filexp,filkml,sgn,cm,sp,holes));
+}
+
+int Exp2Kmlx(char* filexp,char* filkml,int sgn,double cm,double sp,bool holes){
+
+	int      i        ,j,iret=0;
+	int      lwidth = 1;
+	double   popac  = 0.50;
+	int      nprof;
+	int     *pnvert = NULL;
+	double **pprofx = NULL,**pprofy=NULL;
+	bool    *closed = NULL;
+	double  *lat    = NULL, *lon=NULL;
+
+	char    indent[81]="";
+	KML_File*          kfile =NULL;
+	KML_Document*      kdoc  =NULL;
+	KML_Style*         kstyle=NULL;
+	KML_LineStyle*     klsty =NULL;
+	KML_PolyStyle*     kpsty =NULL;
+	KML_Folder*        kfold =NULL;
+	KML_Placemark*     kplace=NULL;
+	KML_Polygon*       kpoly =NULL;
+	KML_LinearRing*    kring =NULL;
+	KML_LineString*    kline =NULL;
+	KML_Point*         kpoint=NULL;
+
+	FILE*   fid=NULL;
+
+	clock_t clock0,clock1;
+	time_t  time0, time1;
+
+	clock0=clock();
+	time0 =time(NULL);
+	_printf0_("\nExp2Kmlx Module -- " << ctime(&time0));
+
+	/*read exp file  */
+
+	if (!ExpRead(&nprof,&pnvert,&pprofx,&pprofy,&closed,filexp))
+		_error_("Error reading exp file.");
+	_printf0_("Exp2Kmlx -- Reading " << nprof << " exp profiles from file \"" << filexp << "\".\n");
+//	for (i=0; i<nprof; i++)
+//		_printf_("i=" << i << "; nvert=" << pnvert[i] << ", closed=" << closed[i] << "\n");
+
+/*  construct kml file  */
+
+	kfile =new KML_File();
+	kfile->AddAttrib("xmlns","http://www.opengis.net/kml/2.2");
+
+/*  construct kml document  */
+
+	kdoc  =new KML_Document();
+	sprintf(kdoc->name      ,"Exp2Kmlx Module -- %s",ctime(&time0));
+	kdoc->open      =1;
+
+/*  construct style templates for defaults  */
+
+	klsty =new KML_LineStyle();
+	sprintf(klsty->color     ,"ff000000");
+	sprintf(klsty->colormode ,"normal");
+	klsty->width     =lwidth;
+	kpsty =new KML_PolyStyle();
+	sprintf(kpsty->color     ,"%02xffffff",(int)floor(popac*255+0.5));
+	sprintf(kpsty->colormode ,"random");
+	kstyle=new KML_Style();
+	kstyle->AddAttrib("id","BlackLineRandomPoly");
+	kstyle->line      =klsty;
+	kstyle->poly      =kpsty;
+	(kdoc->style     )->AddObject((Object*)kstyle);
+
+	klsty =new KML_LineStyle();
+	sprintf(klsty->color     ,"ff000000");
+	sprintf(klsty->colormode ,"normal");
+	klsty->width     =lwidth;
+	kpsty =new KML_PolyStyle();
+	sprintf(kpsty->color     ,"00ffffff");
+	sprintf(kpsty->colormode ,"random");
+	kstyle=new KML_Style();
+	kstyle->AddAttrib("id","BlackLineEmptyPoly");
+	kstyle->line      =klsty;
+	kstyle->poly      =kpsty;
+	(kdoc->style     )->AddObject((Object*)kstyle);
+
+	klsty =new KML_LineStyle();
+	sprintf(klsty->color     ,"%02xffffff",(int)floor(popac*255+0.5));
+	sprintf(klsty->colormode ,"random");
+	klsty->width     =lwidth*2;
+	kpsty =new KML_PolyStyle();
+	sprintf(kpsty->color     ,"00ffffff");
+	sprintf(kpsty->colormode ,"random");
+	kstyle=new KML_Style();
+	kstyle->AddAttrib("id","RandomLineEmptyPoly");
+	kstyle->line      =klsty;
+	kstyle->poly      =kpsty;
+	(kdoc->style     )->AddObject((Object*)kstyle);
+
+/*  construct kml folder for polygons  */
+
+	kfold =new KML_Folder();
+	sprintf(kfold->name      ,"Profiles translated from file \"%s\".",filexp);
+	kfold->open      =1;
+
+/*  polygon with multiple holes  */
+
+	if (holes && nprof && (pnvert[0] <= 1 || pprofx[0][pnvert[0]-1] != pprofx[0][0] || pprofy[0][pnvert[0]-1] != pprofy[0][0])) {
+		_printf0_("Warning -- Outer profile is not closed, so \"holes\" option will be ignored.\n");
+		holes=false;
+	}
+
+	if (holes) {
+		i=0;
+		kplace=new KML_Placemark();
+		sprintf(kplace->name      ,"Polygon with Holes");
+		kplace->visibility=true;
+		sprintf(kplace->styleurl  ,"#BlackLineRandomPoly");
+
+		kpoly =new KML_Polygon();
+		kring =new KML_LinearRing();
+
+		kring->ncoord    =pnvert[i]-1;
+		lat=xNew<double>(kring->ncoord);
+		lon=xNew<double>(kring->ncoord);
+		Xy2llx(lat,lon,pprofx[i],pprofy[i],kring->ncoord,sgn,cm,sp);
+		kring->coords=xNew<double>(kring->ncoord*3);
+		for (j=0; j<kring->ncoord; j++) {
+			kring->coords[3*j+0]=lon[j];
+			kring->coords[3*j+1]=lat[j];
+			kring->coords[3*j+2]=0.;
+		}
+		xDelete<double>(lon);
+		xDelete<double>(lat);
+
+		(kpoly ->outer     )->AddObject((Object*)kring);
+		kring =NULL;
+
+		for (i=1; i<nprof; i++) {
+			if (pnvert[i] <= 1 || pprofx[i][pnvert[i]-1] != pprofx[i][0] || pprofy[i][pnvert[i]-1] != pprofy[i][0]) {
+				_printf0_("Warning -- Inner profile " << i+1 << " is not closed with \"holes\" specified, so it will be ignored.\n");
+				continue;
+			}
+
+			kring =new KML_LinearRing();
+
+			kring->ncoord    =pnvert[i]-1;
+			lat=xNew<double>(kring->ncoord);
+			lon=xNew<double>(kring->ncoord);
+			Xy2llx(lat,lon,pprofx[i],pprofy[i],kring->ncoord,sgn,cm,sp);
+			kring->coords    =xNew<double>(kring->ncoord*3);
+			for (j=0; j<kring->ncoord; j++) {
+				kring->coords[3*j+0]=lon[j];
+				kring->coords[3*j+1]=lat[j];
+				kring->coords[3*j+2]=0.;
+			}
+			xDelete<double>(lon);
+			xDelete<double>(lat);
+
+			(kpoly ->inner     )->AddObject((Object*)kring);
+			kring =NULL;
+		}
+
+		(kplace->geometry  )->AddObject((Object*)kpoly);
+		kpoly =NULL;
+		(kfold ->feature   )->AddObject((Object*)kplace);
+		kplace=NULL;
+	}
+
+/*  multiple polygons or linestrings  */
+
+	else {
+		for (i=0; i<nprof; i++) {
+			kplace=new KML_Placemark();
+
+			if     (pnvert[i] > 1 && pprofx[i][pnvert[i]-1] == pprofx[i][0] && pprofy[i][pnvert[i]-1] == pprofy[i][0]) {
+				sprintf(kplace->name      ,"Polygon %d",i+1);
+				kplace->visibility=true;
+				sprintf(kplace->styleurl  ,"#BlackLineRandomPoly");
+
+				kpoly =new KML_Polygon();
+				kring =new KML_LinearRing();
+
+				kring->ncoord    =pnvert[i]-1;
+				lat=xNew<double>(kring->ncoord);
+				lon=xNew<double>(kring->ncoord);
+				Xy2llx(lat,lon,pprofx[i],pprofy[i],kring->ncoord,sgn,cm,sp);
+				kring->coords    =xNew<double>(kring->ncoord*3);
+				for (j=0; j<kring->ncoord; j++) {
+					kring->coords[3*j+0]=lon[j];
+					kring->coords[3*j+1]=lat[j];
+					kring->coords[3*j+2]=0.;
+				}
+				xDelete<double>(lon);
+				xDelete<double>(lat);
+
+				(kpoly ->outer     )->AddObject((Object*)kring);
+				kring =NULL;
+
+				(kplace->geometry  )->AddObject((Object*)kpoly);
+				kpoly =NULL;
+			}
+
+			else if (pnvert[i] > 1) {
+				sprintf(kplace->name      ,"LineString %d",i+1);
+				kplace->visibility=true;
+				sprintf(kplace->styleurl  ,"#RandomLineEmptyPoly");
+
+				kline =new KML_LineString();
+
+				kline->ncoord    =pnvert[i];
+				lat=xNew<double>(kline->ncoord);
+				lon=xNew<double>(kline->ncoord);
+				Xy2llx(lat,lon,pprofx[i],pprofy[i],kline->ncoord,sgn,cm,sp);
+				kline->coords    =xNew<double>(kline->ncoord*3);
+				for (j=0; j<kline->ncoord; j++) {
+					kline->coords[3*j+0]=lon[j];
+					kline->coords[3*j+1]=lat[j];
+					kline->coords[3*j+2]=0.;
+				}
+				xDelete<double>(lon);
+				xDelete<double>(lat);
+
+				(kplace->geometry  )->AddObject((Object*)kline);
+				kline =NULL;
+			}
+
+			else if (pnvert[i]) {
+				sprintf(kplace->name      ,"Point %d",i+1);
+				kplace->visibility=true;
+				sprintf(kplace->styleurl  ,"#RandomLineEmptyPoly");
+				int one=1;
+
+				kpoint=new KML_Point();
+
+				lat=xNew<double>(one);
+				lon=xNew<double>(one);
+				Xy2llx(lat,lon,pprofx[i],pprofy[i],1,sgn,cm,sp);
+				kpoint->coords[0]=lon[0];
+				kpoint->coords[1]=lat[0];
+				kpoint->coords[2]=0.;
+				xDelete<double>(lon);
+				xDelete<double>(lat);
+
+				(kplace->geometry  )->AddObject((Object*)kpoint);
+				kpoint =NULL;
+			}
+
+			(kfold ->feature   )->AddObject((Object*)kplace);
+			kplace=NULL;
+		}
+	}
+
+/*  assemble the rest of the kml hierarchy  */
+
+	(kdoc ->feature   )->AddObject((Object*)kfold);
+	kfold=NULL;
+	(kfile->kmlobj    )->AddObject((Object*)kdoc);
+	kdoc =NULL;
+
+/*  write kml file  */
+
+	_printf0_("Exp2Kmlx -- Writing kml document to file \"" << filkml << "\".\n");
+	fid=fopen(filkml,"w");
+	fprintf(fid,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+	kfile->Write(fid,indent);
+	fclose(fid);
+
+	delete kfile;
+	for (i=nprof-1; i>=0; i--) {
+		xDelete<double>(pprofy[i]);
+		xDelete<double>(pprofx[i]);
+	}
+	xDelete<int>(pnvert);
+
+	clock1=clock();
+	time1 =time(NULL);
+	_printf_("Exp2Kmlx Module -- " <<((double)(clock1-clock0))/CLOCKS_PER_SEC << " CPU seconds; " <<difftime(time1,time0) << " elapsed seconds.\n\n\n");
+
+	return(iret);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Exp2Kmlx/Exp2Kmlx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Exp2Kmlx/Exp2Kmlx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Exp2Kmlx/Exp2Kmlx.h	(revision 27955)
@@ -0,0 +1,15 @@
+/*!\file:  Exp2Kmlx.h
+ * \brief header file for exp to kml conversion routines.
+ */ 
+
+#ifndef _EXP2KMLX_H
+#define _EXP2KMLX_H
+
+#include <float.h>    /*  DBL_MAX  */
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+int Exp2Kmlx(char* filexp,char* filkml,int sgn,bool holes);
+int Exp2Kmlx(char* filexp,char* filkml,int sgn,double cm,double sp,bool holes);
+
+#endif  /* _EXP2KMLX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ExpToLevelSetx/ExpToLevelSetx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ExpToLevelSetx/ExpToLevelSetx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ExpToLevelSetx/ExpToLevelSetx.cpp	(revision 27955)
@@ -0,0 +1,33 @@
+/*! \file  ExpToLevelSetx.c
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./ExpToLevelSetx.h"
+
+int ExpToLevelSetx(double** pdistance,double* x, double* y, int nods, Contours* contours){
+
+	/*output: */
+	double* distance = xNew<double>(nods);
+	for(int i=0;i<nods;i++) distance[i]=1e50;
+
+	/*initialize thread parameters: */
+	ExpToLevelSetxThreadStruct gate;
+	gate.contours  = contours;
+	gate.nods      = nods;
+	gate.distance  = distance;
+	gate.x         = x;
+	gate.y         = y;
+
+	/*launch the thread manager with ExpToLevelSetxt as a core: */
+	LaunchThread(ExpToLevelSetxt,(void*)&gate,_NUMTHREADS_);
+
+	/*Assign output pointers: */
+	*pdistance=distance;
+
+	return 1;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ExpToLevelSetx/ExpToLevelSetx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ExpToLevelSetx/ExpToLevelSetx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ExpToLevelSetx/ExpToLevelSetx.h	(revision 27955)
@@ -0,0 +1,27 @@
+/*
+	ExpToLevelSetx.h
+*/
+
+#ifndef _EXPTOLEVELSETX_H
+#define _EXPTOLEVELSETX_H
+
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+
+/*threading: */
+typedef struct{
+
+	Contours *contours;
+	int       nods;
+	double   *distance;
+	double   *x;
+	double   *y;
+
+} ExpToLevelSetxThreadStruct;
+
+/* local prototypes: */
+int ExpToLevelSetx(double** pdistance,double* x, double* y,int nods, Contours* contours);
+
+void* ExpToLevelSetxt(void* vExpToLevelSetxThreadStruct);
+
+#endif /* _EXPTOLEVELSETX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ExpToLevelSetx/ExpToLevelSetxt.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ExpToLevelSetx/ExpToLevelSetxt.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ExpToLevelSetx/ExpToLevelSetxt.cpp	(revision 27955)
@@ -0,0 +1,101 @@
+/*!\file:  ExpToLevelSetxt.cpp
+ * \brief  "thread" core code for figuring out level set value from a contour and a cloud of points.
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Include files*/
+#include "./ExpToLevelSetx.h"
+double minimum_distance(double x1, double y1, double x2, double y2, double x0, double y0);
+void   ContourToLevelSet(double* distance,double* contourx, double* contoury, int contournods, double* x, double* y, int i0, int i10);
+
+void* ExpToLevelSetxt(void* vpthread_handle){
+
+	/*gate variables :*/
+	ExpToLevelSetxThreadStruct *gate        = NULL;
+	pthread_handle             *handle      = NULL;
+	int  i,i1,i0;
+
+	/*recover handle and gate: */
+	handle          = (pthread_handle*)vpthread_handle;
+	gate            = (ExpToLevelSetxThreadStruct*)handle->gate;
+	int my_thread   = handle->id;
+	int num_threads = handle->num;
+
+	/*recover parameters :*/
+	Contours* contours = gate->contours;
+	int       nods     = gate->nods;
+	double   *distance = gate->distance;
+	double   *x        = gate->x;
+	double   *y        = gate->y;
+
+	/*distribute indices across threads :*/
+	PartitionRange(&i0,&i1,nods,num_threads,my_thread);
+
+	/*Loop through all contours: */
+	for(Object* & object : contours->objects){
+		Contour<double>* contour=(Contour<double>*)object;
+		ContourToLevelSet(distance,contour->x,contour->y,contour->nods,x,y,i0,i1);
+	}
+
+	return NULL;
+}
+
+void ContourToLevelSet(double* dist,double* contourx, double* contoury, int contournods, double* x, double* y, int i0, int i1){/*{{{*/
+
+	double x0,y0;
+	double x1,y1;
+	double x2,y2;
+	double mind;
+
+	for(int i=i0;i<i1;i++){
+
+      /*Get current point*/
+		x0=x[i]; y0=y[i];
+
+		/*Figure out distance from (x0,y0) to contour: */
+		mind=1e+50;
+		for(int j=0;j<contournods-1;j++){
+         /*Get distance from current segment*/
+			x1=contourx[j];   y1=contoury[j];
+			x2=contourx[j+1]; y2=contoury[j+1];
+			mind=min(mind,minimum_distance(x1,y1,x2,y2,x0,y0));
+		}
+		dist[i]=min(dist[i],mind);
+	}
+}
+double minimum_distance(double x1, double y1, double x2, double y2, double x0, double y0){
+	/* Return minimum distance between line segment [(x1,y1) (x2,y2)] and point (x0,y0)
+	 * We use the following notations:
+	 * segment: v=(x1,y1), w=(x2,y2)
+	 * point:   p=(x0,y0)
+	 */
+
+   /*Get segment length square (avoid sqrt) |w-v|^2*/
+	double l2 = pow(x2-x1,2)+pow(y2-y1,2);
+
+   /*segment is single point: v == w*/
+	if(l2 == 0.) return sqrt(pow(x1-x0,2)+pow(y1-y0,2));
+
+	/*Consider the line extending the segment, parameterized as v + t (w - v).
+	We find projection of point p onto the line.  It falls where t = [(p-v) . (w-v)] / |w-v|^2*/
+	double t = ((x0-x1)*(x2-x1) + (y0-y1)*(y2-y1)) / l2;
+	if(t < 0.){
+      /*Beyond the 'v' end of the segment*/
+      return sqrt(pow(x1-x0,2)+pow(y1-y0,2));
+   }
+	else if(t > 1.){
+      /*Beyond the 'w' end of the segment*/
+      return sqrt(pow(x2-x0,2)+pow(y2-y0,2));
+   }
+
+   /*Projection falls on segment*/
+	double projx= x1 + t* (x2-x1);
+	double projy= y1 + t* (y2-y1);
+	return sqrt(pow(projx-x0,2)+pow(projy-y0,2));
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/FloatingiceMeltingRatePicox/FloatingiceMeltingRatePicox.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/FloatingiceMeltingRatePicox/FloatingiceMeltingRatePicox.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/FloatingiceMeltingRatePicox/FloatingiceMeltingRatePicox.cpp	(revision 27955)
@@ -0,0 +1,257 @@
+/*!\file FloatingiceMeltingRatePicox
+ * \brief: calculates Floating ice melting rate following the PICO model (Reese et al., 2017)
+ */
+
+#include "./FloatingiceMeltingRatePicox.h"
+#include "../InputDuplicatex/InputDuplicatex.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void FloatingiceMeltingRatePicox(FemModel* femmodel){/*{{{*/
+
+	int maxbox;
+	bool isplume;
+
+	/*First, reset all melt to 0 */
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		int numvertices = element->GetNumberOfVertices();
+		IssmDouble* values = xNewZeroInit<IssmDouble>(numvertices);
+		element->AddInput(BasalforcingsFloatingiceMeltingRateEnum,values,P1Enum);
+		xDelete<IssmDouble>(values);
+	}
+
+	/*PICO melt rate parameterization (Reese et al., 2018)*/
+	femmodel->parameters->FindParam(&maxbox,BasalforcingsPicoMaxboxcountEnum);
+	UpdateBoxIdsPico(femmodel);
+	ComputeBoxAreasPico(femmodel);
+	for(int i=0;i<maxbox;i++){
+		UpdateBoxPico(femmodel,i);
+		ComputeAverageOceanvarsPico(femmodel,i);
+	}
+
+	/*Optional buoyant plume melt rate parameterization (Lazeroms et al., 2018) */
+	femmodel->parameters->FindParam(&isplume,BasalforcingsPicoIsplumeEnum);
+	if(isplume) ComputeBasalMeltPlume(femmodel);
+}/*}}}*/
+
+void UpdateBoxIdsPico(FemModel* femmodel){/*{{{*/
+
+	int         numvertices,num_basins,maxbox,basinid;
+	IssmDouble  dist_max;
+	IssmDouble* distances=NULL;
+
+	femmodel->parameters->FindParam(&num_basins,BasalforcingsPicoNumBasinsEnum);
+	femmodel->parameters->FindParam(&maxbox,BasalforcingsPicoMaxboxcountEnum);
+	IssmDouble* dmax_basin_cpu=xNew<IssmDouble>(num_basins);
+
+	InputDuplicatex(femmodel,MaskOceanLevelsetEnum,DistanceToGroundinglineEnum);
+	femmodel->DistanceToFieldValue(MaskOceanLevelsetEnum,0.,DistanceToGroundinglineEnum);
+
+	InputDuplicatex(femmodel,MaskIceLevelsetEnum,DistanceToCalvingfrontEnum);
+	femmodel->DistanceToFieldValue(MaskIceLevelsetEnum,0.,DistanceToCalvingfrontEnum);
+
+	/*find maximum distance to grounding line per domain and per basin*/
+	IssmDouble maxdist_cpu=-1.;
+	for(int i=0;i<num_basins;i++){dmax_basin_cpu[i]=-1;}
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		if(!element->IsIceInElement() || !element->IsAllFloating()) continue;
+		numvertices = element->GetNumberOfVertices();
+		distances=xNew<IssmDouble>(numvertices);
+		element->GetInputListOnVertices(&distances[0],DistanceToGroundinglineEnum);
+		element->GetInputValue(&basinid,BasalforcingsPicoBasinIdEnum);
+		for(int k=0; k<numvertices; k++){
+			if(fabs(distances[k])>maxdist_cpu){maxdist_cpu=fabs(distances[k]);}
+			if(fabs(distances[k])>dmax_basin_cpu[basinid]){dmax_basin_cpu[basinid]=fabs(distances[k]);}
+		}
+		xDelete<IssmDouble>(distances);
+	}
+
+	/*Synchronize across cpus*/
+	IssmDouble* dmax_basin=xNew<IssmDouble>(num_basins);
+	ISSM_MPI_Allreduce((void*)&maxdist_cpu,(void*)&dist_max,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,IssmComm::GetComm());
+	ISSM_MPI_Allreduce(dmax_basin_cpu,dmax_basin,num_basins,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,IssmComm::GetComm());
+
+	/*Define maximum number of boxes per basin*/
+	int* nd=xNew<int>(num_basins);
+	for(int i=0; i<num_basins;i++){
+		IssmDouble val=sqrt(dmax_basin[i]/dist_max)*(maxbox-1);
+
+		#ifdef _HAVE_AD_
+		_error_("Check the implementation of floor below");
+		/*Do not use floor when AD is on*/
+		int k=0; while(k<val+.5){k++;}
+		nd[i]=k;
+
+		#else
+		nd[i]= reCast<int>(floor(val));
+		#endif
+	} 
+
+	/*Assign box numbers*/
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->PicoUpdateBoxid(nd);
+	}
+
+	/*Cleanup and return */
+	xDelete<int>(nd);
+	xDelete<IssmDouble>(dmax_basin);
+	xDelete<IssmDouble>(dmax_basin_cpu);
+
+}/*}}}*/
+void ComputeBoxAreasPico(FemModel* femmodel){/*{{{*/
+
+	int num_basins,maxbox,basinid,boxid,domaintype;
+	IssmDouble dist_max,area;
+
+	femmodel->parameters->FindParam(&num_basins,BasalforcingsPicoNumBasinsEnum);
+	femmodel->parameters->FindParam(&maxbox,BasalforcingsPicoMaxboxcountEnum);
+
+	IssmDouble* boxareas=xNewZeroInit<IssmDouble>(num_basins*maxbox);
+
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		if(!element->IsOnBase()) continue;
+		Element* basalelement = element->SpawnBasalElement();
+		if(!basalelement->IsIceInElement() || !basalelement->IsAllFloating()){
+			if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+			continue;
+		}
+		basalelement->GetInputValue(&boxid,BasalforcingsPicoBoxIdEnum);
+		basalelement->GetInputValue(&basinid,BasalforcingsPicoBasinIdEnum);
+		boxareas[basinid*maxbox+boxid]+=basalelement->GetHorizontalSurfaceArea();
+		if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	}
+
+	/*Synchronize across cpus*/
+	IssmDouble* sumareas =xNew<IssmDouble>(num_basins*maxbox);
+	ISSM_MPI_Allreduce(boxareas,sumareas,num_basins*maxbox,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+	//if(sumareas[0]==0){_error_("No elements in box 0, basal meltrates will be 0. Consider decreasing md.basalforcings.maxboxcount or refining your mesh!");}
+
+	/*Update parameters to keep track of the new areas in future calculations*/
+	femmodel->parameters->AddObject(new DoubleVecParam(BasalforcingsPicoBoxAreaEnum,sumareas,maxbox*num_basins));
+
+	/*Cleanup and return */
+	xDelete<IssmDouble>(boxareas);
+	xDelete<IssmDouble>(sumareas);
+
+}/*}}}*/
+void UpdateBoxPico(FemModel* femmodel, int loopboxid){/*{{{*/
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->PicoUpdateBox(loopboxid);
+	}
+}/*}}}*/
+void ComputeAverageOceanvarsPico(FemModel* femmodel, int boxid){/*{{{*/
+
+	int num_basins, basinid, maxbox, M, domaintype;
+	IssmDouble area, toc, soc, overturning;
+	IssmDouble* boxareas=NULL;
+	IssmDouble* overturning_weighted_avg=NULL;
+
+	femmodel->parameters->FindParam(&num_basins,BasalforcingsPicoNumBasinsEnum);
+	femmodel->parameters->FindParam(&maxbox,BasalforcingsPicoMaxboxcountEnum);
+	femmodel->parameters->FindParam(&boxareas,&M, BasalforcingsPicoBoxAreaEnum);
+	IssmDouble* toc_weighted_avg           = xNewZeroInit<IssmDouble>(num_basins);
+	IssmDouble* soc_weighted_avg           = xNewZeroInit<IssmDouble>(num_basins);
+	IssmDouble* toc_sumweightedavg         = xNewZeroInit<IssmDouble>(num_basins);
+	IssmDouble* soc_sumweightedavg         = xNewZeroInit<IssmDouble>(num_basins);
+	IssmDouble* overturning_sumweightedavg = xNewZeroInit<IssmDouble>(num_basins);
+
+	/* Compute Toc and Soc weighted avg (boxes 0 to n-1) */
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+
+		/*Check whether we should continue*/
+		if(!element->IsOnBase()) continue;
+		if(!element->IsIceInElement() || !element->IsAllFloating()) continue;
+		int el_boxid;
+		element->GetInputValue(&el_boxid,BasalforcingsPicoBoxIdEnum);
+		if(el_boxid!=boxid) continue;
+
+		Element* basalelement = element->SpawnBasalElement();
+
+		Input* tocs_input=basalelement->GetInput(BasalforcingsPicoSubShelfOceanTempEnum); _assert_(tocs_input); 
+		Input* socs_input=basalelement->GetInput(BasalforcingsPicoSubShelfOceanSalinityEnum); _assert_(socs_input);
+
+		basalelement->GetInputValue(&basinid,BasalforcingsPicoBasinIdEnum);
+		Gauss* gauss=basalelement->NewGauss(1); gauss->GaussPoint(0);
+		tocs_input->GetInputValue(&toc,gauss);
+		socs_input->GetInputValue(&soc,gauss);
+		delete gauss;
+		area=basalelement->GetHorizontalSurfaceArea();
+		toc_weighted_avg[basinid]+=toc*area;
+		soc_weighted_avg[basinid]+=soc*area;
+
+		if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	}
+
+	/*Syncronize across cpus*/
+	ISSM_MPI_Allreduce(toc_weighted_avg,toc_sumweightedavg,num_basins,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+	ISSM_MPI_Allreduce(soc_weighted_avg,soc_sumweightedavg,num_basins,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+
+	for(int k=0;k<num_basins;k++){
+		int p=k*maxbox+boxid; 
+		if(boxareas[p]==0) continue;	
+		toc_sumweightedavg[k] = toc_sumweightedavg[k]/boxareas[p];
+		soc_sumweightedavg[k] = soc_sumweightedavg[k]/boxareas[p];
+	}
+
+	femmodel->parameters->AddObject(new DoubleVecParam(BasalforcingsPicoAverageTemperatureEnum,toc_sumweightedavg,num_basins));
+	femmodel->parameters->AddObject(new DoubleVecParam(BasalforcingsPicoAverageSalinityEnum,soc_sumweightedavg,num_basins));
+
+	/* Compute overturning weighted avg (box 0 only) */
+	if(boxid==0){ 
+		overturning_weighted_avg=xNewZeroInit<IssmDouble>(num_basins);
+		for(Object* & object : femmodel->elements->objects){
+			Element* element=xDynamicCast<Element*>(object);
+
+			/*Check whether we should continue or not*/
+			if(!element->IsOnBase()) continue;
+			if(!element->IsIceInElement() || !element->IsAllFloating()) continue;
+			int el_boxid;
+			element->GetInputValue(&el_boxid,BasalforcingsPicoBoxIdEnum);
+			if(el_boxid!=boxid) continue;
+
+			Element* basalelement = element->SpawnBasalElement();
+	     	Input* overturnings_input=basalelement->GetInput(BasalforcingsPicoSubShelfOceanOverturningEnum); _assert_(overturnings_input);
+
+			basalelement->GetInputValue(&basinid,BasalforcingsPicoBasinIdEnum);
+			Gauss* gauss=basalelement->NewGauss(1); gauss->GaussPoint(0);
+			overturnings_input->GetInputValue(&overturning,gauss);
+			delete gauss;
+			area=basalelement->GetHorizontalSurfaceArea();
+			overturning_weighted_avg[basinid]+=overturning*area;
+			basalelement->FindParam(&domaintype,DomainTypeEnum);
+
+			if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+		}
+
+		/*Syncronize across cpus*/
+		ISSM_MPI_Allreduce(overturning_weighted_avg,overturning_sumweightedavg,num_basins,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+
+		for(int k=0;k<num_basins;k++){
+			int p=k*maxbox+boxid;
+			if(boxareas[p]==0.) continue;
+			overturning_sumweightedavg[k] = overturning_sumweightedavg[k]/boxareas[p];
+		}
+		femmodel->parameters->AddObject(new DoubleVecParam(BasalforcingsPicoAverageOverturningEnum,overturning_sumweightedavg,num_basins));
+	}
+
+	/*Cleanup and return */
+	xDelete<IssmDouble>(overturning_sumweightedavg);
+	xDelete<IssmDouble>(toc_sumweightedavg);
+	xDelete<IssmDouble>(soc_sumweightedavg);
+	xDelete<IssmDouble>(overturning_weighted_avg);
+	xDelete<IssmDouble>(toc_weighted_avg);
+	xDelete<IssmDouble>(soc_weighted_avg);
+	xDelete<IssmDouble>(boxareas);
+}/*}}}*/
+void ComputeBasalMeltPlume(FemModel* femmodel){/*{{{*/
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->PicoComputeBasalMelt();
+	}
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/FloatingiceMeltingRatePicox/FloatingiceMeltingRatePicox.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/FloatingiceMeltingRatePicox/FloatingiceMeltingRatePicox.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/FloatingiceMeltingRatePicox/FloatingiceMeltingRatePicox.h	(revision 27955)
@@ -0,0 +1,19 @@
+/*!\file:  FloatingiceMeltingRatePicox.h
+ * \brief header file for Floatingice melting rate
+ */ 
+
+#ifndef _FloatingiceMeltingRatePicox_H
+#define _FloatingiceMeltingRatePicox_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void FloatingiceMeltingRatePicox(FemModel* femmodel);
+
+void UpdateBoxIdsPico(FemModel* femmodel);
+void ComputeBoxAreasPico(FemModel* femmodel);
+void UpdateBoxPico(FemModel* femmodel, int loopboxid);
+void ComputeAverageOceanvarsPico(FemModel* femmodel, int boxid);
+void ComputeBasalMeltPlume(FemModel* femmodel);
+
+#endif  /* _FloatingiceMeltingRatePicox_H*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp	(revision 27955)
@@ -0,0 +1,289 @@
+/*!\file FloatingiceMeltingRatex
+ * \brief: calculates Floating ice melting rate
+ */
+
+#include "./FloatingiceMeltingRatex.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "./../../classes/Inputs/DatasetInput.h"
+
+void FloatingiceMeltingRatex(FemModel* femmodel){/*{{{*/
+
+	/*Intermediaties*/
+	int  basalforcing_model;
+
+	/*First, get BMB model from parameters*/
+	femmodel->parameters->FindParam(&basalforcing_model,BasalforcingsEnum);
+
+	/*branch to correct module*/
+	switch(basalforcing_model){
+		case FloatingMeltRateEnum:
+		case MantlePlumeGeothermalFluxEnum:
+			/*Nothing to be done*/
+			break;
+		case LinearFloatingMeltRateEnum:
+			if(VerboseSolution())_printf0_("	  call Linear Floating melting rate module\n");
+			LinearFloatingiceMeltingRatex(femmodel);
+			break;
+		case MismipFloatingMeltRateEnum:
+			if(VerboseSolution())_printf0_("	  call Mismip Floating melting rate module\n");
+			MismipFloatingiceMeltingRatex(femmodel);
+			break;
+		case SpatialLinearFloatingMeltRateEnum:
+			if(VerboseSolution())_printf0_("	  call Spatial Linear Floating melting rate module\n");
+			SpatialLinearFloatingiceMeltingRatex(femmodel);
+			break;
+		case BasalforcingsPicoEnum:
+			if(VerboseSolution())_printf0_("   call Pico Floating melting rate module\n");
+			FloatingiceMeltingRatePicox(femmodel);
+			break;
+		case BasalforcingsIsmip6Enum:
+			if(VerboseSolution())_printf0_("   call ISMIP 6 Floating melting rate module\n");
+			FloatingiceMeltingRateIsmip6x(femmodel);
+			break;
+		case BeckmannGoosseFloatingMeltRateEnum:
+			if(VerboseSolution())_printf0_("        call BeckmannGoosse Floating melting rate module\n");
+			BeckmannGoosseFloatingiceMeltingRatex(femmodel);
+			break;
+		case LinearFloatingMeltRatearmaEnum:
+			if(VerboseSolution())_printf0_("        call Linear Floating melting rate ARMA module\n");
+			LinearFloatingiceMeltingRatearmax(femmodel);
+			break;
+		default:
+			_error_("Basal forcing model "<<EnumToStringx(basalforcing_model)<<" not supported yet");
+	}
+
+}/*}}}*/
+
+void LinearFloatingiceMeltingRatex(FemModel* femmodel){/*{{{*/
+
+	for(Object* & object : femmodel->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+		element->LinearFloatingiceMeltingRate();
+	}
+
+}/*}}}*/
+void SpatialLinearFloatingiceMeltingRatex(FemModel* femmodel){/*{{{*/
+
+	for(Object* & object : femmodel->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+		element->SpatialLinearFloatingiceMeltingRate();
+	}
+
+}/*}}}*/
+void MismipFloatingiceMeltingRatex(FemModel* femmodel){/*{{{*/
+
+	for(Object* & object : femmodel->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+		element->MismipFloatingiceMeltingRate();
+	}
+}
+/*}}}*/
+void FloatingiceMeltingRateIsmip6x(FemModel* femmodel){/*{{{*/
+
+	int         num_basins, basinid, num_depths, domaintype;
+	IssmDouble  area, tf, base, time;
+	bool        islocal;
+	IssmDouble* tf_depths = NULL;
+
+	femmodel->parameters->FindParam(&num_basins,BasalforcingsIsmip6NumBasinsEnum);
+	femmodel->parameters->FindParam(&tf_depths,&num_depths,BasalforcingsIsmip6TfDepthsEnum); _assert_(tf_depths);
+	femmodel->parameters->FindParam(&islocal,BasalforcingsIsmip6IsLocalEnum);
+
+	/*Binary search works for vectors that are sorted in increasing order only, make depths positive*/
+	for(int i=0;i<num_depths;i++) tf_depths[i] = -tf_depths[i];
+
+	IssmDouble* tf_weighted_avg     = xNewZeroInit<IssmDouble>(num_basins);
+	IssmDouble* tf_weighted_avg_cpu = xNewZeroInit<IssmDouble>(num_basins);
+	IssmDouble* areas_summed        = xNewZeroInit<IssmDouble>(num_basins);
+	IssmDouble* areas_summed_cpu    = xNewZeroInit<IssmDouble>(num_basins);
+
+	/*Get TF at each ice shelf point - linearly intepolate in depth and time*/
+	for(Object* & object : femmodel->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+		int      numvertices = element->GetNumberOfVertices();
+
+		/*Set melt to 0 if non floating*/
+		if(!element->IsIceInElement() || !element->IsAllFloating() || !element->IsOnBase()){
+			IssmDouble* values = xNewZeroInit<IssmDouble>(numvertices);
+			element->AddInput(BasalforcingsFloatingiceMeltingRateEnum,values,P1DGEnum);
+			element->AddInput(BasalforcingsIsmip6TfShelfEnum,values,P1DGEnum);
+			xDelete<IssmDouble>(values);
+			continue;
+		}
+
+		/*Get TF on all vertices*/
+		IssmDouble*    tf_test        = xNew<IssmDouble>(numvertices);
+		IssmDouble*    depth_vertices = xNew<IssmDouble>(numvertices);
+		DatasetInput* tf_input = element->GetDatasetInput(BasalforcingsIsmip6TfEnum); _assert_(tf_input);
+
+		element->GetInputListOnVertices(&depth_vertices[0],BaseEnum);
+
+		Gauss* gauss=element->NewGauss();
+		for(int iv=0;iv<numvertices;iv++){
+			gauss->GaussVertex(iv);
+
+			/*Find out where the ice shelf base is within tf_depths*/
+			IssmDouble depth = -depth_vertices[iv]; /*NOTE: make sure we are dealing with depth>0*/
+			int offset;
+			int found=binary_search(&offset,depth,tf_depths,num_depths);
+			if(!found) _error_("depth not found");
+
+			if (offset==-1){
+				/*get values for the first depth: */
+				_assert_(depth<=tf_depths[0]);
+				tf_input->GetInputValue(&tf_test[iv],gauss,0);
+			}
+			else if(offset==num_depths-1){
+				/*get values for the last time: */
+				_assert_(depth>=tf_depths[num_depths-1]);
+				tf_input->GetInputValue(&tf_test[iv],gauss,num_depths-1);
+			}
+			else {
+				/*get values between two times [offset:offset+1], Interpolate linearly*/
+				_assert_(depth>=tf_depths[offset] && depth<tf_depths[offset+1]);
+				IssmDouble deltaz=tf_depths[offset+1]-tf_depths[offset];
+				IssmDouble alpha2=(depth-tf_depths[offset])/deltaz;
+				IssmDouble alpha1=(1.-alpha2);
+				IssmDouble tf1,tf2;
+				tf_input->GetInputValue(&tf1,gauss,offset);
+				tf_input->GetInputValue(&tf2,gauss,offset+1);
+				tf_test[iv] = alpha1*tf1 + alpha2*tf2;
+			}
+		}
+
+		element->AddInput(BasalforcingsIsmip6TfShelfEnum,tf_test,P1DGEnum);
+		xDelete<IssmDouble>(tf_test);
+		xDelete<IssmDouble>(depth_vertices);
+		delete gauss;
+	}
+
+	if(!islocal) {
+		/*Compute sums of tf*area and shelf-area per cpu*/
+		for(Object* & object : femmodel->elements->objects){
+			Element* element = xDynamicCast<Element*>(object);
+			if(!element->IsOnBase() || !element->IsIceInElement() || !element->IsAllFloating()) continue;
+			/*Spawn basal element if on base to compute element area*/
+			Element* basalelement = element->SpawnBasalElement();
+			Input* tf_input=basalelement->GetInput(BasalforcingsIsmip6TfShelfEnum); _assert_(tf_input);
+			basalelement->GetInputValue(&basinid,BasalforcingsIsmip6BasinIdEnum);
+			Gauss* gauss=basalelement->NewGauss(1); gauss->GaussPoint(0);
+			tf_input->GetInputValue(&tf,gauss);
+			delete gauss;
+			area=basalelement->GetHorizontalSurfaceArea();
+			tf_weighted_avg[basinid]+=tf*area;
+			areas_summed[basinid]   +=area;
+			/*Delete spawned element if we are in 3D*/
+			basalelement->FindParam(&domaintype,DomainTypeEnum);
+			if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+		}
+
+		/*Syncronize across cpus*/
+		ISSM_MPI_Allreduce(tf_weighted_avg,tf_weighted_avg_cpu,num_basins,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		ISSM_MPI_Allreduce(areas_summed,areas_summed_cpu,num_basins,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+
+		/*Compute weighted means and save*/
+		for(int k=0;k<num_basins;k++){tf_weighted_avg_cpu[k] = tf_weighted_avg_cpu[k]/areas_summed_cpu[k];}
+		femmodel->parameters->AddObject(new DoubleVecParam(BasalforcingsIsmip6AverageTfEnum,tf_weighted_avg_cpu,num_basins));
+	}
+
+   /*Compute meltrates*/
+	for(Object* & object : femmodel->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+		element->Ismip6FloatingiceMeltingRate();
+	}
+
+	/*Cleanup and return */
+	xDelete<IssmDouble>(tf_weighted_avg);
+	xDelete<IssmDouble>(tf_weighted_avg_cpu);
+	xDelete<IssmDouble>(areas_summed);
+	xDelete<IssmDouble>(areas_summed_cpu);
+	xDelete<IssmDouble>(tf_depths);
+}
+/*}}}*/
+void BeckmannGoosseFloatingiceMeltingRatex(FemModel* femmodel){/*{{{*/
+
+	for(Object* & object : femmodel->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+		element->BeckmannGoosseFloatingiceMeltingRate();
+	}
+}
+/*}}}*/
+void LinearFloatingiceMeltingRatearmax(FemModel* femmodel){/*{{{*/
+
+	/*Get time parameters*/
+   IssmDouble time,dt,starttime,tstep_arma;
+   femmodel->parameters->FindParam(&time,TimeEnum);
+   femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+   femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum);
+   femmodel->parameters->FindParam(&tstep_arma,BasalforcingsARMATimestepEnum);
+
+   /*Determine if this is a time step for the ARMA model*/
+   bool isstepforarma = false;
+
+   #ifndef _HAVE_AD_
+   if((fmod(time,tstep_arma)<fmod((time-dt),tstep_arma)) || (time<=starttime+dt) || tstep_arma==dt) isstepforarma = true;
+   #else
+   _error_("not implemented yet");
+   #endif
+
+   /*Load parameters*/
+   bool isstochastic;
+   bool isdeepmeltingstochastic = false;
+   int M,N,arorder,maorder,numbasins,numparams,numbreaks,my_rank;
+   femmodel->parameters->FindParam(&numbasins,BasalforcingsLinearNumBasinsEnum);
+	femmodel->parameters->FindParam(&arorder,BasalforcingsARMAarOrderEnum);
+	femmodel->parameters->FindParam(&maorder,BasalforcingsARMAmaOrderEnum);
+	femmodel->parameters->FindParam(&numparams,BasalforcingsLinearNumParamsEnum);
+   femmodel->parameters->FindParam(&numbreaks,BasalforcingsLinearNumBreaksEnum);
+   IssmDouble* datebreaks     = NULL;
+	IssmDouble* arlagcoefs     = NULL;
+   IssmDouble* malagcoefs     = NULL;
+   IssmDouble* polyparams     = NULL;
+	IssmDouble* deepwaterel    = NULL;
+   IssmDouble* upperwaterel   = NULL;
+   IssmDouble* upperwatermelt = NULL;
+   IssmDouble* perturbation   = NULL;
+
+	/*Get autoregressive parameters*/
+   femmodel->parameters->FindParam(&datebreaks,&M,&N,BasalforcingsARMAdatebreaksEnum);  _assert_(M==numbasins); _assert_(N==max(numbreaks,1));
+   femmodel->parameters->FindParam(&polyparams,&M,&N,BasalforcingsARMApolyparamsEnum);  _assert_(M==numbasins); _assert_(N==(numbreaks+1)*numparams);
+	femmodel->parameters->FindParam(&arlagcoefs,&M,&N,BasalforcingsARMAarlagcoefsEnum);  _assert_(M==numbasins); _assert_(N==arorder);
+   femmodel->parameters->FindParam(&malagcoefs,&M,&N,BasalforcingsARMAmalagcoefsEnum);  _assert_(M==numbasins); _assert_(N==maorder);
+
+	/*Get basin-specific parameters*/
+   femmodel->parameters->FindParam(&deepwaterel,&M,BasalforcingsDeepwaterElevationEnum);            _assert_(M==numbasins);
+   femmodel->parameters->FindParam(&upperwaterel,&M,BasalforcingsUpperwaterElevationEnum);          _assert_(M==numbasins);
+   femmodel->parameters->FindParam(&upperwatermelt,&M,BasalforcingsUpperwaterMeltingRateEnum);      _assert_(M==numbasins);
+
+	/*Evaluate whether stochasticity on DeepwaterMeltingRate is requested*/
+	femmodel->parameters->FindParam(&isstochastic,StochasticForcingIsStochasticForcingEnum);
+   if(isstochastic){
+      int  numstochasticfields;
+      int* stochasticfields;
+      femmodel->parameters->FindParam(&numstochasticfields,StochasticForcingNumFieldsEnum);
+      femmodel->parameters->FindParam(&stochasticfields,&N,StochasticForcingFieldsEnum); _assert_(N==numstochasticfields);
+      for(int i=0;i<numstochasticfields;i++){
+         if(stochasticfields[i]==BasalforcingsDeepwaterMeltingRatearmaEnum) isdeepmeltingstochastic = true;
+      }
+      xDelete<int>(stochasticfields);
+   }
+
+	/*Loop over each element to compute FloatingiceMeltingRate at vertices*/
+   for(Object* &object:femmodel->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+      /*Compute ARMA*/
+      element->ArmaProcess(isstepforarma,arorder,maorder,numparams,numbreaks,tstep_arma,polyparams,arlagcoefs,malagcoefs,datebreaks,isdeepmeltingstochastic,BasalforcingsDeepwaterMeltingRatearmaEnum);
+		element->BasinLinearFloatingiceMeltingRate(deepwaterel,upperwatermelt,upperwaterel,perturbation);
+	}
+
+	/*Cleanup*/
+	xDelete<IssmDouble>(arlagcoefs);
+	xDelete<IssmDouble>(malagcoefs);
+	xDelete<IssmDouble>(polyparams);
+	xDelete<IssmDouble>(datebreaks);
+	xDelete<IssmDouble>(deepwaterel);
+	xDelete<IssmDouble>(upperwaterel);
+	xDelete<IssmDouble>(upperwatermelt);
+	xDelete<IssmDouble>(perturbation);
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.h	(revision 27955)
@@ -0,0 +1,20 @@
+/*!\file:  FloatingiceMeltingRatex.h
+ * \brief header file for Floatingice melting rate
+ */ 
+
+#ifndef _FloatingiceMeltingRatex_H
+#define _FloatingiceMeltingRatex_H
+
+#include "../../classes/classes.h"
+#include "../FloatingiceMeltingRatePicox/FloatingiceMeltingRatePicox.h"
+
+/* local prototypes: */
+void FloatingiceMeltingRatex(FemModel* femmodel);
+void LinearFloatingiceMeltingRatex(FemModel* femmodel);
+void SpatialLinearFloatingiceMeltingRatex(FemModel* femmodel);
+void MismipFloatingiceMeltingRatex(FemModel* femmodel);
+void FloatingiceMeltingRateIsmip6x(FemModel* femmodel);
+void BeckmannGoosseFloatingiceMeltingRatex(FemModel* femmodel);
+void LinearFloatingiceMeltingRatearmax(FemModel* femmodel);
+
+#endif  /* _FloatingiceMeltingRatex_H*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/FrontalForcingsx/FrontalForcingsx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/FrontalForcingsx/FrontalForcingsx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/FrontalForcingsx/FrontalForcingsx.cpp	(revision 27955)
@@ -0,0 +1,177 @@
+/*!\file FrontalForcingsx
+ * \brief: compute ice frontal melting rate
+ */
+
+#include "./FrontalForcingsx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../shared/Random/random.h"
+
+void FrontalForcingsx(FemModel* femmodel){/*{{{*/
+
+	/*Recover melt_parameterization*/
+	int melt_parameterization;
+	femmodel->parameters->FindParam(&melt_parameterization,FrontalForcingsParamEnum);
+
+	/*Calculate melting rate*/
+	switch(melt_parameterization){
+		case FrontalForcingsDefaultEnum:
+			break;
+		case FrontalForcingsRignotarmaEnum:
+			Thermalforcingarmax(femmodel);
+			bool isdischargearma;
+			femmodel->parameters->FindParam(&isdischargearma,FrontalForcingsIsDischargeARMAEnum);
+			if(isdischargearma==true) Subglacialdischargearmax(femmodel);
+			/*Do not break here, call IcefrontAreax(),RignotMeltParameterizationx()*/
+		case FrontalForcingsRignotEnum:
+			femmodel->IcefrontAreax();
+			femmodel->RignotMeltParameterizationx();
+			break;
+		default:
+			_error_("Frontal forcings "<<EnumToStringx(melt_parameterization)<<" not supported yet");
+	}
+}/*}}}*/
+void Thermalforcingarmax(FemModel* femmodel){/*{{{*/
+
+   /*Get time parameters*/
+   IssmDouble time,dt,starttime,tstep_arma;
+   femmodel->parameters->FindParam(&time,TimeEnum);
+   femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+   femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum);
+   femmodel->parameters->FindParam(&tstep_arma,FrontalForcingsARMATimestepEnum);
+
+   /*Determine if this is a time step for the ARMA model*/
+   bool isstepforarma = false;
+
+   #ifndef _HAVE_AD_
+   if((fmod(time,tstep_arma)<fmod((time-dt),tstep_arma)) || (time<=starttime+dt) || tstep_arma==dt) isstepforarma = true;
+   #else
+   _error_("not implemented yet");
+   #endif
+
+   /*Load parameters*/
+	bool isstochastic;
+   bool istfstochastic = false;
+	int M,N,arorder,maorder,numbasins,numparams,numbreaks,nummonthbreaks,my_rank;
+   femmodel->parameters->FindParam(&numbasins,FrontalForcingsNumberofBasinsEnum);
+   femmodel->parameters->FindParam(&numparams,FrontalForcingsNumberofParamsEnum);
+   femmodel->parameters->FindParam(&numbreaks,FrontalForcingsNumberofBreaksEnum);
+   femmodel->parameters->FindParam(&nummonthbreaks,FrontalForcingsNumberofMonthBreaksEnum);
+   femmodel->parameters->FindParam(&arorder,FrontalForcingsARMAarOrderEnum);
+   femmodel->parameters->FindParam(&maorder,FrontalForcingsARMAmaOrderEnum);
+   IssmDouble* datebreaks        = NULL;
+   IssmDouble* arlagcoefs        = NULL;
+   IssmDouble* malagcoefs        = NULL;
+   IssmDouble* monthlyeff        = NULL;
+	IssmDouble* polyparams        = NULL;
+	IssmDouble* monthdatebreaks   = NULL;
+	IssmDouble* monthintercepts   = NULL;
+	IssmDouble* monthtrends       = NULL;
+
+   femmodel->parameters->FindParam(&datebreaks,&M,&N,FrontalForcingsARMAdatebreaksEnum);            _assert_(M==numbasins); _assert_(N==max(numbreaks,1));        
+   femmodel->parameters->FindParam(&polyparams,&M,&N,FrontalForcingsARMApolyparamsEnum);            _assert_(M==numbasins); _assert_(N==(numbreaks+1)*numparams);        
+   femmodel->parameters->FindParam(&arlagcoefs,&M,&N,FrontalForcingsARMAarlagcoefsEnum);            _assert_(M==numbasins); _assert_(N==arorder);
+   femmodel->parameters->FindParam(&malagcoefs,&M,&N,FrontalForcingsARMAmalagcoefsEnum);            _assert_(M==numbasins); _assert_(N==maorder);
+   femmodel->parameters->FindParam(&monthdatebreaks,&M,&N,FrontalForcingsARMAmonthdatebreaksEnum);  _assert_(M==numbasins); _assert_(N==max(nummonthbreaks,1));        
+   femmodel->parameters->FindParam(&monthintercepts,&M,&N,FrontalForcingsARMAmonthinterceptsEnum);  _assert_(M==numbasins); _assert_(N==12*(nummonthbreaks+1)); 
+   femmodel->parameters->FindParam(&monthtrends,&M,&N,FrontalForcingsARMAmonthtrendsEnum);          _assert_(M==numbasins); _assert_(N==12*(nummonthbreaks+1)); 
+
+	femmodel->parameters->FindParam(&isstochastic,StochasticForcingIsStochasticForcingEnum);
+	if(isstochastic){
+		int  numstochasticfields;
+		int* stochasticfields;
+		femmodel->parameters->FindParam(&numstochasticfields,StochasticForcingNumFieldsEnum);
+		femmodel->parameters->FindParam(&stochasticfields,&N,StochasticForcingFieldsEnum); _assert_(N==numstochasticfields);
+		for(int i=0;i<numstochasticfields;i++){
+			if(stochasticfields[i]==FrontalForcingsRignotarmaEnum) istfstochastic = true;
+		}
+		xDelete<int>(stochasticfields);
+	}
+
+   /*Loop over each element to compute Thermal Forcing at vertices*/
+   for(Object* &object:femmodel->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+		/*Compute ARMA*/
+      element->ArmaProcess(isstepforarma,arorder,maorder,numparams,numbreaks,tstep_arma,polyparams,arlagcoefs,malagcoefs,datebreaks,istfstochastic,FrontalForcingsRignotarmaEnum);
+		/*Compute monthly effects*/
+		element->MonthlyPiecewiseLinearEffectBasin(nummonthbreaks,monthintercepts,monthtrends,monthdatebreaks,FrontalForcingsRignotarmaEnum);
+	}
+
+   /*Cleanup*/
+   xDelete<IssmDouble>(arlagcoefs);
+   xDelete<IssmDouble>(malagcoefs);
+   xDelete<IssmDouble>(monthlyeff);
+   xDelete<IssmDouble>(polyparams);
+   xDelete<IssmDouble>(datebreaks);
+   xDelete<IssmDouble>(monthdatebreaks);
+   xDelete<IssmDouble>(monthintercepts);
+   xDelete<IssmDouble>(monthtrends);
+}/*}}}*/
+void Subglacialdischargearmax(FemModel* femmodel){/*{{{*/
+
+	/*Get time parameters*/
+   IssmDouble time,dt,starttime,tstep_arma;
+   femmodel->parameters->FindParam(&time,TimeEnum);
+   femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+   femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum);
+   femmodel->parameters->FindParam(&tstep_arma,FrontalForcingsSdARMATimestepEnum);
+
+   /*Determine if this is a time step for the ARMA model*/
+   bool isstepforarma = false;
+
+   #ifndef _HAVE_AD_
+   if((fmod(time,tstep_arma)<fmod((time-dt),tstep_arma)) || (time<=starttime+dt) || tstep_arma==dt) isstepforarma = true;
+   #else
+   _error_("not implemented yet");
+   #endif
+
+   /*Load parameters*/
+	bool isstochastic;
+   bool isdischargestochastic = false;
+	int M,N,arorder,maorder,numbasins,numparams,numbreaks,my_rank;
+   femmodel->parameters->FindParam(&numbasins,FrontalForcingsNumberofBasinsEnum);
+   femmodel->parameters->FindParam(&numparams,FrontalForcingsSdNumberofParamsEnum);
+   femmodel->parameters->FindParam(&numbreaks,FrontalForcingsSdNumberofBreaksEnum);
+   femmodel->parameters->FindParam(&arorder,FrontalForcingsSdarOrderEnum);
+   femmodel->parameters->FindParam(&maorder,FrontalForcingsSdmaOrderEnum);
+   IssmDouble* datebreaks        = NULL;
+   IssmDouble* arlagcoefs        = NULL;
+   IssmDouble* malagcoefs        = NULL;
+   IssmDouble* monthlyfrac       = NULL;
+	IssmDouble* polyparams        = NULL;
+
+   femmodel->parameters->FindParam(&datebreaks,&M,&N,FrontalForcingsSddatebreaksEnum);            _assert_(M==numbasins); _assert_(N==max(numbreaks,1));        
+   femmodel->parameters->FindParam(&polyparams,&M,&N,FrontalForcingsSdpolyparamsEnum);            _assert_(M==numbasins); _assert_(N==(numbreaks+1)*numparams);        
+   femmodel->parameters->FindParam(&arlagcoefs,&M,&N,FrontalForcingsSdarlagcoefsEnum);            _assert_(M==numbasins); _assert_(N==arorder);
+   femmodel->parameters->FindParam(&malagcoefs,&M,&N,FrontalForcingsSdmalagcoefsEnum);            _assert_(M==numbasins); _assert_(N==maorder);
+   femmodel->parameters->FindParam(&monthlyfrac,&M,&N,FrontalForcingsSdMonthlyFracEnum);          _assert_(M==numbasins); _assert_(N==12); 
+
+	femmodel->parameters->FindParam(&isstochastic,StochasticForcingIsStochasticForcingEnum);
+	if(isstochastic){
+		int  numstochasticfields;
+		int* stochasticfields;
+		femmodel->parameters->FindParam(&numstochasticfields,StochasticForcingNumFieldsEnum);
+		femmodel->parameters->FindParam(&stochasticfields,&N,StochasticForcingFieldsEnum); _assert_(N==numstochasticfields);
+		for(int i=0;i<numstochasticfields;i++){
+			if(stochasticfields[i]==FrontalForcingsSubglacialDischargearmaEnum) isdischargestochastic = true;
+		}
+		xDelete<int>(stochasticfields);
+	}
+
+   /*Loop over each element to compute Subglacial Discharge at vertices*/
+   for(Object* &object:femmodel->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+		/*Compute ARMA*/
+      element->ArmaProcess(isstepforarma,arorder,maorder,numparams,numbreaks,tstep_arma,polyparams,arlagcoefs,malagcoefs,datebreaks,isdischargestochastic,FrontalForcingsSubglacialDischargearmaEnum);
+		/*Scale with monthly fractions*/
+		element->MonthlyFactorBasin(monthlyfrac,FrontalForcingsSubglacialDischargearmaEnum);
+	}
+
+   /*Cleanup*/
+   xDelete<IssmDouble>(arlagcoefs);
+   xDelete<IssmDouble>(malagcoefs);
+   xDelete<IssmDouble>(monthlyfrac);
+   xDelete<IssmDouble>(polyparams);
+   xDelete<IssmDouble>(datebreaks);
+}/*}}}*/
+
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/FrontalForcingsx/FrontalForcingsx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/FrontalForcingsx/FrontalForcingsx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/FrontalForcingsx/FrontalForcingsx.h	(revision 27955)
@@ -0,0 +1,12 @@
+#ifndef _FRONTALFORCINGSX_H
+#define _FRONTALFORCINGSX_H
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+/* local prototypes: */
+void FrontalForcingsx(FemModel* femmodel);
+void Subglacialdischargearmax(FemModel* femmodel);
+void Thermalforcingarmax(FemModel* femmodel);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/GeothermalFluxx/GeothermalFluxx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/GeothermalFluxx/GeothermalFluxx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/GeothermalFluxx/GeothermalFluxx.cpp	(revision 27955)
@@ -0,0 +1,46 @@
+/*!\file GeothermalFluxx
+ * \brief: calculates Geothermal heat flux 
+ */
+
+#include "./GeothermalFluxx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void GeothermalFluxx(FemModel* femmodel){/*{{{*/
+
+	/*Intermediaties*/
+	int  basalforcing_model;
+
+	/*First, get SMB model from parameters*/
+	femmodel->parameters->FindParam(&basalforcing_model,BasalforcingsEnum);
+
+	/*branch to correct module*/
+	switch(basalforcing_model){
+		case FloatingMeltRateEnum:
+		case MismipFloatingMeltRateEnum:
+		case LinearFloatingMeltRateEnum:
+		case BasalforcingsPicoEnum:
+		case BasalforcingsIsmip6Enum:
+			/*Nothing to be done*/
+			break;
+		case MantlePlumeGeothermalFluxEnum:
+			if(VerboseSolution())_printf0_("	call Mantle Plume Geothermal Flux module\n");
+			MantlePlumeGeothermalFluxx(femmodel);
+			break;
+		case BeckmannGoosseFloatingMeltRateEnum:
+			/*Nothing to be done*/
+			break;
+		default:
+			_error_("Basal forcing model "<<EnumToStringx(basalforcing_model)<<" not supported yet");
+	}
+
+}/*}}}*/
+
+void MantlePlumeGeothermalFluxx(FemModel* femmodel){/*{{{*/
+
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->MantlePlumeGeothermalFlux();
+	}
+
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/GeothermalFluxx/GeothermalFluxx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/GeothermalFluxx/GeothermalFluxx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/GeothermalFluxx/GeothermalFluxx.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  GeothermalFluxx.h
+ * \brief header file for Geothermal flux
+ */ 
+
+#ifndef _GeothermalFluxx_H
+#define _GeothermalFluxx_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void GeothermalFluxx(FemModel* femmodel);
+void MantlePlumeGeothermalFluxx(FemModel* femmodel);
+
+#endif  /* _GeothermalFluxx_H*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp	(revision 27955)
@@ -0,0 +1,78 @@
+/*!\file GetSolutionFromInputsx
+ * \brief: update datasets using  parameter inputs
+ */
+
+#include "./GetSolutionFromInputsx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void GetSolutionFromInputsx(Vector<IssmDouble>** psolution,FemModel* femmodel){/*{{{*/
+
+	if(VerboseModule()) _printf0_("   Get solution from inputs\n");
+
+	/*retrieve parameters: */
+	int analysisenum;
+	femmodel->parameters->FindParam(&analysisenum,AnalysisTypeEnum);
+
+	/*Get size of vector: */
+	int gsize       = femmodel->nodes->NumberOfDofs(GsetEnum);
+	int gsize_local = femmodel->nodes->NumberOfDofsLocal(GsetEnum);
+	if(gsize==0) _error_("Allocating a Vec of size 0 as gsize=0 ");
+
+	/*Initialize solution: */
+	Vector<IssmDouble>* solution=new Vector<IssmDouble>(gsize_local,gsize);
+
+	/*Go through elements and plug solution: */
+	Analysis* analysis = EnumToAnalysis(analysisenum);
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		analysis->GetSolutionFromInputs(solution,element);
+	}
+	delete analysis;
+
+	/*Assemble vector: */
+	solution->Assemble();
+
+	/*Assign output pointers:*/
+	*psolution=solution;
+}/*}}}*/
+void GetBasalSolutionFromInputsx(Vector<IssmDouble>** psolution,FemModel* femmodel){ /*{{{*/
+
+	if(VerboseModule()) _printf0_("   Get solution from inputs\n");
+
+	/*retrieve parameters: */
+	int analysisenum;
+	int domaintype;
+	femmodel->parameters->FindParam(&analysisenum,AnalysisTypeEnum);
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	/*Get size of vector: */
+	int gsize       = femmodel->nodes->NumberOfDofs(GsetEnum);
+	int gsize_local = femmodel->nodes->NumberOfDofsLocal(GsetEnum);
+	if(gsize==0) _error_("Allocating a Vec of size 0 as gsize=0 ");
+
+	/*Initialize solution: */
+	Vector<IssmDouble>* solution=new Vector<IssmDouble>(gsize_local,gsize);
+
+	/*Go through elements and plug solution: */
+	Analysis* analysis = EnumToAnalysis(analysisenum);
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		switch(domaintype){
+			case Domain2DhorizontalEnum:
+				analysis->GetSolutionFromInputs(solution,element);
+			break;
+		case Domain3DEnum:
+			if(!element->IsOnBase()) continue;
+			analysis->GetSolutionFromInputs(solution,element);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+		}
+	}
+	delete analysis;
+
+	/*Assemble vector: */
+	solution->Assemble();
+
+	/*Assign output pointers:*/
+	*psolution=solution;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.h	(revision 27955)
@@ -0,0 +1,15 @@
+/*!\file:  GetSolutionFromInputsx.h
+ * \brief header file for updating datasets from inputs
+ */
+
+#ifndef _GETSOLUTIONFROMINPUTSXX_H
+#define _GETSOLUTIONFROMINPUTSXX_H
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+/* local prototypes: */
+void GetSolutionFromInputsx(Vector<IssmDouble>** psolution,FemModel* femmodel);
+void GetBasalSolutionFromInputsx(Vector<IssmDouble>** psolution,FemModel* femmodel);
+
+#endif  /* _GETSOLUTIONFROMINPUTSXX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.cpp	(revision 27955)
@@ -0,0 +1,107 @@
+/*!\file GetVectorFromControlInputsx
+ * \brief retrieve vector from inputs in elements
+ */
+
+#include "./GetVectorFromControlInputsx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void GetVectorFromControlInputsx(Vector<IssmDouble>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,const char* data){/*{{{*/
+
+	int  num_controls;
+	int* N = NULL;
+	int* M = NULL;
+	int* control_type = NULL;
+
+	/*Retrieve some parameters*/
+	parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	parameters->FindParam(&control_type,NULL,InversionControlParametersEnum);
+	parameters->FindParam(&N,NULL,ControlInputSizeNEnum);
+	parameters->FindParam(&M,NULL,ControlInputSizeMEnum);
+
+	/*1. Get vector size*/
+	int size = 0;
+	for(int i=0;i<num_controls;i++) size+=M[i]*N[i];
+
+	/*2. Allocate vector*/
+	Vector<IssmDouble>* vector=new Vector<IssmDouble>(size);
+
+	/*3. Populate vector*/
+	int offset = 0;
+	for(int i=0;i<num_controls;i++){
+
+		/*Is the control a Param?*/
+		if(IsParamEnum(control_type[i])){
+			parameters->GetVectorFromControl(vector,control_type[i],i,N[i],data,offset);
+		}
+		else if(IsInputEnum(control_type[i])){
+			for(Object* & object : elements->objects){
+				Element* element=xDynamicCast<Element*>(object);
+				element->GetVectorFromControlInputs(vector,control_type[i],i,N[i],data,offset);
+			}
+		}
+		else{
+			_error_("not supported yet");
+		}
+		offset += M[i]*N[i];
+	}
+	vector->Assemble();
+
+	/*Assign output pointers:*/
+	xDelete<int>(control_type);
+	xDelete<int>(M);
+	xDelete<int>(N);
+	*pvector=vector;
+}/*}}}*/
+void GetVectorFromControlInputsx( IssmDouble** pvector,int *pN, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, const char* data){/*{{{*/
+
+	/*intermediary: */
+	int N;
+	Vector<IssmDouble>* vec_vector=NULL;
+
+	/*Get PETSc vector*/
+	GetVectorFromControlInputsx( &vec_vector, elements,nodes, vertices, loads, materials, parameters,data);
+
+	/*Serialize*/
+	vec_vector->GetSize(&N);
+	IssmDouble* vector=vec_vector->ToMPISerial();
+	delete vec_vector;
+
+	/*Assign output pointers:*/
+	*pvector=vector;
+	if(pN) *pN=N;
+}/*}}}*/
+
+/*For autodiff, we sometimes need to cast our vectors to passive*/
+#ifdef _HAVE_AD_
+void GetPassiveVectorFromControlInputsx(IssmPDouble** pvector,int* pN, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, const char* data){/*{{{*/
+
+	/*Get active vector first*/
+	Vector<IssmDouble> *activevector = NULL;
+	IssmPDouble        *vector       = NULL;
+	int                size;
+
+	/*Retrieve some parameters*/
+	GetVectorFromControlInputsx(&activevector, elements,nodes, vertices, loads, materials, parameters,data);
+
+	/*Serialize vector*/
+	activevector->GetSize(&size);
+	IssmDouble* dactivevector=activevector->ToMPISerial();
+
+	/*Cast to passive*/
+	vector=xNew<IssmPDouble>(size);
+	for(int i=0;i<size;i++) vector[i] = reCast<IssmPDouble>(dactivevector[i]);
+
+	/*Assign output pointers:*/
+	delete activevector;
+	xDelete<IssmDouble>(dactivevector);
+	*pvector=vector;
+	if(pN) *pN=size;
+
+}/*}}}*/
+#else
+void GetPassiveVectorFromControlInputsx(IssmPDouble** pvector,int* pN, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, const char* data){/*{{{*/
+
+	GetVectorFromControlInputsx(pvector,pN,elements,nodes, vertices, loads, materials, parameters,data);
+}/*}}}*/
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.h	(revision 27955)
@@ -0,0 +1,15 @@
+/*!\file:  GetVectorFromControlInputsx.h
+ */ 
+
+#ifndef _GETVECTORFROMCONTROLINPUTSXX_H
+#define _GETVECTORFROMCONTROLINPUTSXX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void	GetVectorFromControlInputsx( Vector<IssmDouble>** pvector, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials,  Parameters* parameters,const char* data="value");
+void	GetVectorFromControlInputsx( IssmDouble** pvector,int* pN, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials,  Parameters* parameters,const char* data="value");
+
+void	GetPassiveVectorFromControlInputsx(double** pvector,int* pN, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads, Materials* materials,  Parameters* parameters,const char* data="value");
+
+#endif  /* _GETVECTORFROMCONTROLINPUTSXX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp	(revision 27955)
@@ -0,0 +1,155 @@
+/*!\file GetVectorFromInputsx
+ * \brief retrieve vector from inputs in elements
+ */
+
+#include "./GetVectorFromInputsx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void GetVectorFromInputsx(Vector<IssmDouble>** pvector,FemModel* femmodel,int name,int type){ /*{{{*/
+
+	Vector<IssmDouble>* vector=NULL;
+
+	switch(type){
+		case ElementSIdEnum:
+			vector=new Vector<IssmDouble>(femmodel->elements->NumberOfElements());
+			break;
+		case VertexPIdEnum: case VertexSIdEnum:
+			vector=new Vector<IssmDouble>(femmodel->vertices->NumberOfVertices());
+			break;
+		case NodesEnum:case NodeSIdEnum:
+			vector=new Vector<IssmDouble>(femmodel->nodes->NumberOfNodes());
+			break;
+		default:
+			_error_("vector type: " << EnumToStringx(type) << " not supported yet!");
+	}
+	/*Look up in elements*/
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->GetVectorFromInputs(vector,name,type);
+	}
+
+	vector->Assemble();
+
+	/*Assign output pointers:*/
+	*pvector=vector;
+} /*}}}*/
+void GetVectoronBaseFromInputsx(Vector<IssmDouble>** pvector,FemModel* femmodel,int name,int type){ /*{{{*/
+
+	int domaintype;
+	Vector<IssmDouble>* vector=NULL;
+
+	switch(type){
+		case ElementSIdEnum:
+			vector=new Vector<IssmDouble>(femmodel->elements->NumberOfElements());
+			break;
+		case VertexPIdEnum: case VertexSIdEnum:
+			vector=new Vector<IssmDouble>(femmodel->vertices->NumberOfVertices());
+			break;
+		case NodesEnum:case NodeSIdEnum:
+			vector=new Vector<IssmDouble>(femmodel->nodes->NumberOfNodes());
+			break;
+		default:
+			_error_("vector type: " << EnumToStringx(type) << " not supported yet!");
+	}
+
+	/*Look up in elements*/
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->FindParam(&domaintype,DomainTypeEnum);
+		switch(domaintype){
+			case Domain2DhorizontalEnum:
+				element->GetVectorFromInputs(vector,name,type);
+				break;
+			case Domain3DEnum:
+				if(!element->IsOnBase()) continue;
+				element->GetVectorFromInputs(vector,name,type);
+				break;
+			default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+		}
+	}
+	vector->Assemble();
+	/*Assign output pointers:*/
+	*pvector=vector;
+} /*}}}*/
+void GetVectorFromInputsx(Vector<IssmDouble>** pvector,FemModel* femmodel,int name,int type,IssmDouble time){/*{{{*/
+
+	Vector<IssmDouble>* vector=NULL;
+
+	switch(type){
+	case VertexPIdEnum: case VertexSIdEnum:
+		vector=new Vector<IssmDouble>(femmodel->vertices->NumberOfVertices());
+		break;
+	case NodesEnum:case NodeSIdEnum:
+		vector=new Vector<IssmDouble>(femmodel->nodes->NumberOfNodes());
+		break;
+	default:
+			_error_("vector type: " << EnumToStringx(type) << " not supported yet!");
+	}
+	/*Look up in elements*/
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->GetVectorFromInputs(vector,name,type,time);
+	}
+
+	vector->Assemble();
+
+	/*Assign output pointers:*/
+	*pvector=vector;
+}/*}}}*/
+void GetVectorFromInputsx(IssmDouble** pvector,FemModel* femmodel,int name, int type){/*{{{*/
+
+	/*output: */
+	IssmDouble* vector=NULL;
+
+	/*intermediary: */
+	Vector<IssmDouble>* vec_vector=NULL;
+
+	GetVectorFromInputsx(&vec_vector,femmodel,name,type);
+	vector=vec_vector->ToMPISerial();
+
+	/*Free resources:*/
+	delete vec_vector;
+
+	/*Assign output pointers:*/
+	*pvector=vector;
+}/*}}}*/
+void GetVectoronBaseFromInputsx(IssmDouble** pvector,FemModel* femmodel,int name, int type){/*{{{*/
+
+	/*output: */
+	IssmDouble* vector=NULL;
+
+	/*intermediary: */
+	Vector<IssmDouble>* vec_vector=NULL;
+
+	GetVectoronBaseFromInputsx(&vec_vector,femmodel,name,type);
+	vector=vec_vector->ToMPISerial();
+
+	/*Free resources:*/
+	delete vec_vector;
+
+	/*Assign output pointers:*/
+	*pvector=vector;
+}/*}}}*/
+void GetVectorFromInputsx(IssmDouble** pvector,int* pvector_size, FemModel* femmodel,int name){ /*{{{*/
+
+	int interpolation_type;
+	/*this one is special: we don't specify the type, but let the nature of the inputs dictace.
+	 * P0 -> ElementSIdEnum, P1 ->VertexSIdEnum: */
+
+	/*We go find the input of the first element, and query its interpolation type: */
+	Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(0));
+	Input* input=element->GetInput(name);
+	if (!input) _error_("could not find input: " << name);
+
+	interpolation_type=input->GetInputInterpolationType();
+	if(interpolation_type==P0Enum){
+		*pvector_size=femmodel->elements->NumberOfElements();
+		GetVectorFromInputsx(pvector,femmodel,name, ElementSIdEnum);
+	}
+	else if(interpolation_type==P1Enum){
+		*pvector_size=femmodel->vertices->NumberOfVertices();
+		GetVectorFromInputsx(pvector,femmodel,name, VertexSIdEnum);
+	}
+	else _error_("interpolation type : " << interpolation_type << " not supported yet!");
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.h	(revision 27955)
@@ -0,0 +1,18 @@
+/*!\file:  GetVectorFromInputsx.h
+ */
+
+#ifndef _GETVECTORFROMINPUTSXX_H
+#define _GETVECTORFROMINPUTSXX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void	GetVectorFromInputsx(Vector<IssmDouble>** pvector,FemModel* femmodel,int name,int type);
+void  GetVectorFromInputsx(Vector<IssmDouble>** pvector,FemModel* femmodel,int name,int type,IssmDouble time);
+void	GetVectorFromInputsx(IssmDouble** pvector,FemModel* femmodel,int name,int type);
+void  GetVectorFromInputsx(IssmDouble** pvector,int* pvector_size, FemModel* femmodel,int name);
+
+void	GetVectoronBaseFromInputsx(IssmDouble** pvector,FemModel* femmodel,int name,int type);
+void	GetVectoronBaseFromInputsx(Vector<IssmDouble>** pvector,FemModel* femmodel,int name,int type);
+
+#endif  /* _GETVECTORFROMINPUTSXX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp	(revision 27955)
@@ -0,0 +1,114 @@
+/*!\file GiaDeflectionCorex
+ * \brief: GIA solution from Erik Ivins. 
+ * Compute deflection wi from a single disk of radius re, load history hes for 
+ * numtimes time steps. 
+ */
+
+#include "./GiaDeflectionCorex.h"
+
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../InputUpdateFromConstantx/InputUpdateFromConstantx.h"
+
+/*External blocks: {{{*/
+struct blockp{
+	double pset[7];
+};
+
+struct blocko{
+	double rhoi;
+};
+
+struct blockrad{
+	double distrad; 
+};
+
+struct blocks{
+	double aswokm_w; 
+	double aswokm_dwdt; 
+};
+
+extern "C" { 
+	int distme_(int* pNtime,int* pNtimp,int* pNtimm,double* time,double* bi,double* dmi,double* zhload);
+
+	int what0_(int* piedge,int* pNtimp,int* pNtimm,double* time,double* bi,double* dmi);
+	extern struct blockp blockp_;
+	extern struct blocko blocko_;
+	extern struct blockrad blockrad_;
+	extern struct blocks blocks_;
+}
+
+/*}}}*/
+
+void GiaDeflectionCorex( IssmDouble* pwi, IssmDouble* pdwidt, GiaDeflectionCoreArgs* arguments){
+
+	/*Recover material parameters and loading history: see GiaDeflectionCoreArgs for more details {{{*/
+	IssmDouble  ri                        = arguments->ri;                        //radial distance from center of disk to vertex i
+	IssmDouble  re                        = arguments->re;                        //radius of disk
+	IssmDouble *hes                       = arguments->hes;                       //loading history (in ice thickness)
+	IssmDouble *times                     = arguments->times;                     //loading history times
+	int         numtimes                  = arguments->numtimes;                  //loading history length
+	IssmDouble  currenttime               = arguments->currenttime;
+	IssmDouble  lithosphere_shear_modulus = arguments->lithosphere_shear_modulus;
+	IssmDouble  lithosphere_density       = arguments->lithosphere_density;
+	IssmDouble  mantle_shear_modulus      = arguments->mantle_shear_modulus;
+	IssmDouble  mantle_viscosity          = arguments->mantle_viscosity;
+	IssmDouble  mantle_density            = arguments->mantle_density;
+	IssmDouble  lithosphere_thickness     = arguments->lithosphere_thickness;
+	IssmDouble  rho_ice                   = arguments->rho_ice;
+	int         disk_id                   = arguments->idisk;
+	int         iedge                     = arguments->iedge;
+	IssmDouble  yts                       = arguments->yts;
+
+	/*}}}*/
+
+	/*Modify inputs to match naruse code: */
+	int Ntime=numtimes; // number of times with load history
+	int Ntimm=Ntime-1; // Ntime-1 : for slope/y-cept of load segments
+	int Ntimp=Ntime+1; // Ntime+1 : for evaluation time
+
+	/*Prepare block inputs for fortran distme and what0 routines of the naruse code: {{{*/
+	/*Now, let's set pset from the data that we got in input to GiaDeflectionCorex: */
+	blockp_.pset[0]=reCast<IssmPDouble>(lithosphere_thickness);
+	blockp_.pset[1]=reCast<IssmPDouble>(mantle_viscosity);
+	blockp_.pset[2]=reCast<IssmPDouble>(lithosphere_shear_modulus);
+	blockp_.pset[3]=reCast<IssmPDouble>(mantle_shear_modulus);
+	blockp_.pset[4]=reCast<IssmPDouble>(lithosphere_density);
+	blockp_.pset[5]=reCast<IssmPDouble>(mantle_density);
+	blockp_.pset[6]=reCast<IssmPDouble>(re);
+	blocko_.rhoi=reCast<IssmPDouble>(rho_ice); 
+   blockrad_.distrad=reCast<IssmPDouble>(ri)/1000.0; // in km
+
+	/*loading history: */
+	IssmPDouble* blocky_zhload=xNew<IssmPDouble>(Ntime);
+	for(int i=0;i<Ntime;i++) blocky_zhload[i]=reCast<IssmPDouble>(hes[i]);
+
+	/*times in kyr: */
+	IssmPDouble* blockt_time=xNew<IssmPDouble>(Ntimp);
+	for(int i=0;i<Ntimp;i++){
+		blockt_time[i]=reCast<IssmPDouble>(times[i]/1000.0/yts); 
+		if(i==numtimes-1) blockt_time[i]=reCast<IssmPDouble>(times[numtimes-1]/1000.0/yts); // final loading time, same as evaluation time
+		if(i==numtimes)   blockt_time[i]=reCast<IssmPDouble>(times[numtimes-1]/1000.0/yts);   // evaluation time
+	}
+
+	IssmPDouble* blockt_bi=xNew<IssmPDouble>(Ntimm);
+	IssmPDouble* blockt_dmi=xNew<IssmPDouble>(Ntimm);
+
+	/*Call distme driver: */
+	distme_(&Ntime,&Ntimp,&Ntimm,blockt_time,blockt_bi,blockt_dmi,blocky_zhload); 
+
+	/*Call what0 driver: */
+	what0_(&iedge,&Ntimp,&Ntimm,blockt_time,blockt_bi,blockt_dmi); 
+
+	/*output solution: */
+	*pwi=reCast<IssmDouble>(blocks_.aswokm_w);
+	*pdwidt=reCast<IssmDouble>(blocks_.aswokm_dwdt);
+
+	/*Free resources: */
+	xDelete<IssmPDouble>(blockt_time);
+	xDelete<IssmPDouble>(blockt_bi);
+	xDelete<IssmPDouble>(blockt_dmi);
+	xDelete<IssmPDouble>(blocky_zhload);
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  GiaDeflectionCorex.h
+ * \brief header file for ...
+ */ 
+
+#ifndef _GIADEFLECTIONCOREX_H
+#define _GIADEFLECTIONCOREX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void GiaDeflectionCorex( IssmDouble* pwi, IssmDouble* pdwidt, GiaDeflectionCoreArgs* arguments);
+
+#endif  /* _GIADEFLECTIONCOREX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/distme.f
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/distme.f	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/distme.f	(revision 27955)
@@ -0,0 +1,73 @@
+      subroutine distme(Ntime,Ntimp,Ntimm,time,bi,dmi,zhload)
+      implicit double precision (a-h,o-y)
+      integer Ntime,Ntimp,Ntimm
+      parameter (Nafter=1)
+      double precision pset(7)
+      double precision time(Ntimp),dmi(Ntimm),bi(Ntimm),dumbt(Ntimp)
+      double precision hload(Ntime),qpat(Ntime),qt(Ntime)
+      double precision zhload(Ntime),rhoi,distrad
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      common /blockp/ pset
+      common /blockrad/ distrad 
+      common /blocko/ rhoi
+      data g /9.832186d0/, yearco /3.15576d7/, eradm/6.371d6/
+      data dpi /3.1415926535897932d0/, dzero/0.0d0/
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c The units of time(Ntimp) are ka and the height of the load in meters.
+c The slope, then for example, is in units of meters per ka.
+c Note that "dumbt( )" is designed to perserve the initial "time( )" variable.
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      do 776 k = 1, Ntimp
+      dumbt(k) = time(k)
+  776 continue
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      do 39 itime = 1, Ntime
+      hload(itime) = dble( zhload(itime) )
+   39 continue
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c now set up a piece-wise history: bi() = y-intercept 
+c                                 dmi() = slope 
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      do 70 i = 2, Ntime
+      dmi(i-1) = ( hload(i) - hload(i-1) )/( dumbt(i)  - dumbt(i-1) )
+      bi(i-1) = hload(i-1) - ( dmi(i)*dumbt(i-1) )  
+   70 continue
+c      write(6,*) zhload(1,1), zhload(1,2) 
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c With pset(6) in mks units, lets convert the piecewise linear formulas
+c for the time-dependent ice load heights to dimensionless values w.r.t. time.
+c (tfact is in seconds)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      tfact = pset(2)/pset(4)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c get all times as dimensionless 
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      do 20 jt = 1, Nafter
+      time(Ntime + jt) = ( dumbt(Ntime + jt) * yearco * 1.0d3 ) / tfact
+   20 continue
+      do 75 ind = 1, Ntimm 
+      dmi(ind) =  dmi(ind) / (( yearco * 1.0d3 ) / tfact )
+   75 continue
+      do 77 j = 1, Ntime 
+      time(j) = ( dumbt(j) * yearco * 1.0d3 ) / tfact
+   77 continue
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c create an incremental load in Pa and non-dimensionalized:
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      do 80 iq = 1, Ntime
+      qpat(iq) = hload(iq)*rhoi*g
+      qt(iq) = qpat(iq) / pset(4)
+   80 continue
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c As the final step in this routine, create a dimensionless stress load from
+c qp.  Here we'll use bi( ) and dmi( ) vectors with dimensionless time.  Then
+c qp (and it's piece-wise decomposition) is ready for the direct dimensionless
+c integrals for the inverse Laplace transform and inverse Hankel transform
+c without further mutiplicative factors.
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      do 85 i = 2, Ntime
+      dmi(i-1) = ( qt(i) - qt(i-1) )/( time(i)  - time(i-1) )
+      bi(i-1) = qt(i-1) - ( dmi(i-1)*time(i-1) )  
+   85 continue
+  999 return
+      end
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/freed.f
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/freed.f	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/freed.f	(revision 27955)
@@ -0,0 +1,222 @@
+      subroutine freed(r2,u2,r1,u1,h,zk,e1,e2,e4,b0,b1,a2,a1,a0,decay
+     1,amps)        
+      implicit double precision (a-h,o-z)
+      double precision decay(2),amps(5)
+      double precision ac0,ac1,ac2,ac3,ac4,ac5,ac6,ac7,ac8,ac9,ac10,
+     1ac11
+      common /blockz/ zkp
+      data zero /0.0d0/, g /9.832186d0/
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c Given the inputs to this subroutine(r2 through zk in the call
+c statement above), the outputs are coefficients of "s" that
+c are crucial to the Laplace transform inversion. From b0 and b1
+c we can compute the decay poles (or eigenvalues).    
+c 
+c  This is NOT true in our case, though. - SA
+c  NOTE IN THE CODE THAT A CALL TO THIS SUBROUTINE NEED NOT
+c  BE MADE AT EACH TIME STEP --- BUT WILL HAVE TO BE CALLED
+c  IN THE NUMERICAL INTEGRATION FOR COMPUTING THE INVERSE HANKEL
+c  TRANSFORM  ****
+c
+c Each term should be returned as dimensionless 
+c h => length   u2 => stress     taumx2 => time
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      zkp2 = zkp*zkp
+      ur = u1/u2
+      ghu2 = (g*h) / u2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac0 dimensional units are stress times l^-2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac0 = 4.0d0*ur*zkp2*( 1.0d0 + e4 +
+     1    2.0d0*e2*(1.0d0 + 2.0d0*zkp2) )
+c    DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac1 dimensional units are stress times l^-2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac1 = 2.0d0*r1*ghu2*zkp*(1.0d0 - e4 + 4.0d0*zkp*e2)
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac2 dimensional units are stress^2 times l^-2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac2 = 8.0d0*ur*ur*(-1.0d0 + e1)*
+     1                     (1.0d0 + e1)*(1.0d0 + e2)*zkp2
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac3  dimensional units are stress^2 times l^-2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac3 =
+     1   2.0d0*zkp*ghu2*ur*((r1 + r2)*(1.0d0 + e4) + 
+     2       2.0d0*(r2 - r1)*e2*( 1.0d0 + 2.0d0*zkp2 ))
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac4 dimensional units are stress^2 times l^-2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac4 = ghu2*ghu2*r1*(r2 - r1)*
+     1      (1.0d0 - e4 + 4.0d0*zkp*e2)
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac5 dimensional units are stress^3 times l^-2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac5 = 
+     1    4.0d0*zkp2*ur*ur*ur*(1.0d0 - e2 - 2.0d0*e1*zkp)*
+     2                (1.0d0 - e2 + 2.0d0*e1*zkp)
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac6 dimensional units are stress^3 times l^-2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac6 =
+     1   2.0d0*zkp*ur*ur*(1.0d0 - e4
+     2               - 4.0d0*e2*zkp)*ghu2*r2
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac7 dimensional units are stress^3 times l^-2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac7 =
+     1 ur * ( ( (1.0d0 - e1)*(1.0d0 + e1) )**2)*r1*(r2 - r1)
+     2 * ( ghu2*ghu2 )
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac8 dimensional units are stress^0 times l^-1
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac8 = -2.0d0*zkp*(1.0d0 + e2*(1.0d0 + 2.0d0*zkp*(1.0d0 + zkp))) 
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac9 dimensional units are stress^1 times l^-1
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac9 = 
+     1  ( 4.0d0*zkp*u1 -
+     2 g*h*(r2 - r1)*(1.0d0 + e2*(1.0d0 + 2.0d0*zkp*(1.0d0 + zkp)))
+     3    ) / u2
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac10 dimensional units are stress^2 times l^-1
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac10 =
+     1   -2.0d0*zkp*ur*ur*( 1.0d0 - e2
+     2  - 2.0d0*zkp*e2*(1.0d0 + zkp) )
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c ac11 dimensional units are stress^2 times l^-1
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      ac11 =
+     1 ghu2*ur*(r2 - r1)*(1.0d0 - e2*(1.0d0 + 2.0d0*zkp))
+c     DIMESIONLESS
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c Other functions may be found in file "apcw0.record"
+c (Nov. 9 1996)
+c The following is a Mathematica version of the isolation of the
+c  coefficeints of the L transform variable s in the denominator.  
+c  Here is where the set-up is performed to obtain the "free decay"
+c  times (with the Hankel transform variable "zk" embedded.  Note that
+c  some greater efficency could be achieved by further simplifying the
+c  combinations of "acn" functions which are now a series of function
+c  subroutines in the fortran code.  The corresponding Mathematica
+c  session is "twolayer.Linversion" dated Nov. 23, 1996.
+c
+c In[59]:=
+c Together[%]
+c Out[59]=
+c    ac2 + ac3 - ac4 + 2 ac5 - 2 ac6 + 2 ac7
+c ---------------------------------------------
+c ac0 - ac1 + ac2 + ac3 - ac4 + ac5 - ac6 + ac7
+c In[61]:=
+c Simplify[Coefficient[els,s^2]]
+c Out[61]=
+c 1
+c In[65]:=
+c eslnos =
+c ac5/(ac0 - ac1 + ac2 + ac3 - ac4 + ac5 - ac6 + ac7) - 
+c    ac6/(ac0 - ac1 + ac2 + ac3 - ac4 + ac5 - ac6 + ac7) + 
+c 
+c   ac7/(ac0 - ac1 + ac2 + ac3 - ac4 + ac5 - ac6 + ac7)
+c    
+c Out[65]=
+c                      ac5
+c --------------------------------------------- - 
+c ac0 - ac1 + ac2 + ac3 - ac4 + ac5 - ac6 + ac7
+c 
+c                        ac6
+c  --------------------------------------------- + 
+c   ac0 - ac1 + ac2 + ac3 - ac4 + ac5 - ac6 + ac7
+c 
+c                        ac7
+c  ---------------------------------------------
+c  ac0 - ac1 + ac2 + ac3 - ac4 + ac5 - ac6 + ac7
+c In[66]:=
+c Simplify[%]
+c Out[66]=
+c                ac5 - ac6 + ac7
+c ---------------------------------------------
+c ac0 - ac1 + ac2 + ac3 - ac4 + ac5 - ac6 + ac7
+c
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c a common denominator factor is: bc
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      bc =  (   ac0 - ac1 +
+     1                     ac2 + ac3
+     2                                 - ac4 + ac5 -
+     3           ac6 + ac7  )
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c b1: Denominator coefficent of s:
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      b1 =
+     1  (  ac2 + ac3
+     2               - ac4 + ( 2.0d0 * ac5 )
+     3                                       - ( 2.0d0 * ac6 )
+     4                                       + ( 2.0d0 * ac7 )   ) / bc
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c b0: Denominator coefficent of s^0:
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      b0 =
+     1 (  ac5 - ac6 +
+     2                 ac7  ) / bc
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c the eigenvaules are just the solution of the quadratic in s:
+c so return as "decay"
+c  *** Note that the decay times are defined as positive ***
+c      if a negative inverse decay time is returned there is an error!
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      sb1 = b1*b1
+      fb0 = 4.0d0*b0
+      diff =  sb1 - fb0          
+      if(diff.le.zero) go to 25
+      rs =  dsqrt( diff )          
+      decay(1) = -( - b1 - rs ) / 2.0d0
+      decay(2) = -( - b1 + rs ) / 2.0d0          
+      go to 26
+   25 idgen = 100
+      go to 9990
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c and for the numerator part of the quadratic s dependence
+c the Mathematica session is:
+c
+c Out[14]=
+c                                                                      2
+c ac10 + ac11 + (2 ac10 + 2 ac11 + ac9) s + (ac10 + ac11 + ac8 + ac9) s
+c----------------------------------------------------------------------
+c            ac0 - ac1 + ac2 + ac3 - ac4 + ac5 - ac6 + ac7
+c
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+   26 a0 = ( ac10 + ac11 ) / bc
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      a1 = ( 2.0d0*( ac10 + ac11 )
+     1                             + ac9 )  / bc
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      a2 =  (ac10 + ac11
+     1                   + ac8 + ac9) / bc
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c and the following terms are the amplitudes of the inverse Laplace
+c transform solution for the non-q part.  (See the boxed equation on
+c page 4 of the Nov. 23 1996 notes.)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      decdif = 1.0d0/(decay(2) - decay(1))
+      amps(1) = -decdif*( decay(1) * ( a1 - a2*decay(1) ) - a0 )
+      amps(2) =  decdif*( decay(2) * ( a1 - a2*decay(2) ) - a0 )
+      amps(3) = a2
+      amps(4) = - decay(1) * amps(1) 
+      amps(5) = - decay(2) * amps(2)
+      go to 999
+ 9990 write(6,998) idgen
+  998 format(' idgen val ** fatal error ** degenerate e.v.'/1h ,1p,1i12) 
+  999 return
+      end
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/ojrule.f
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/ojrule.f	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/ojrule.f	(revision 27955)
@@ -0,0 +1,63 @@
+      subroutine ojrule(dk,bcin_w,bcin_dwdt)
+      implicit double precision(a-h,o-z)
+      parameter (nhank = 1024)
+      double precision yvalue_w(nhank),yvalue_dwdt(nhank)
+      double precision bcin_w(nhank),bcin_dwdt(nhank)
+      double precision wok_w,wok_dwdt,rpos
+      double precision swok_w,swok_dwdt
+      double precision pset(7)
+      double precision aswokm_w,aswokm_dwdt,distrad
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      common /blockrad/ distrad
+      common /blockp/ pset
+      common /blocks/ aswokm_w,aswokm_dwdt
+      data zero /0.0d0/, one /1.0d0/, two /2.0d0/, three /3.0d0/,
+     1rescal/ 1.0d0/
+      data yearco /3.15576d7/
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      bath = dk / three
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c rpos should be normalized wrt lithosphere thickness 
+c give r is normalized dist_rad :: r == dist_rad / h
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      r = distrad / (pset(1) / 1.0d3)
+      rpos = r 
+      ak = zero
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c form the yvalue's for the Simpson's rule formulas
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      do 425 ik = 1, nhank
+      ak = ak + dk
+      rak = ak * r
+      rarg = dbesj0( rak )
+      yvalue_w(ik) = bcin_w(ik) * rarg
+      yvalue_dwdt(ik) = bcin_dwdt(ik) * rarg
+  425 continue
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c correct to end point val. in Simp. Rule
+c      yvalue(nhank) = bcin(nhank) * rarg / two
+c find the area under the curve using the Simpson's rule formulas
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      sumde_w = zero
+      sumde_dwdt = zero
+      do 300 int = 1, nhank
+      intp1 = int + 1
+      ide = 2 + ( (-1)**intp1 + 1 )
+      fide = dfloat(ide)
+      sumde_w = ( fide * yvalue_w(int) ) + sumde_w
+      sumde_dwdt = ( fide * yvalue_dwdt(int) ) + sumde_dwdt
+  300 continue
+      wok_w = bath * sumde_w
+      wok_dwdt = bath * sumde_dwdt
+      
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      hscale = sngl(pset(1))
+      hsckm = hscale / 1.0e3
+      swok_w = hscale * sngl(wok_w)
+      aswokm_w = swok_w
+      swok_dwdt = (hscale * yearco * 1.0e3 * sngl(wok_dwdt))
+     1                  * ( sngl(pset(4))/ sngl(pset(2)) )
+      aswokm_dwdt = swok_dwdt
+      return
+
+      end
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/pwise.f
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/pwise.f	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/pwise.f	(revision 27955)
@@ -0,0 +1,42 @@
+      subroutine pwise(t,ta,tb,xi1,xi2,xi3,xi4,slope,ycept,decay,
+     1bhaq_w,bhaq_dwdt)
+      implicit double precision (a-h,o-z)
+      double precision decay(2)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c This subroutine retrieves the convolution for the ith linear piece-wise
+c q hat function (the load shape or Bessel function part having
+c been removed) with the free-decay solution. (see notes of
+c 12-31-96 "Convolution in time").  The convolution is returned as "bhaq".
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      tbt = tb - t
+      tat = ta - t
+      gat1 = tat * decay(1)
+      gat2 = tat * decay(2)
+      gbt1 = tbt * decay(1)
+      gbt2 = tbt * decay(2)
+      ea1 = dexp(gat1)
+      ea2 = dexp(gat2)
+      eb1 = dexp(gbt1)
+      eb2 = dexp(gbt2)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c define xit1 term:
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      xit1 =(ycept/decay(1)) * (eb1 - ea1) -
+     1(slope/(decay(1)*decay(1))) *
+     2                            ( (1.0d0 - tb*decay(1))*eb1 
+     3                            - (1.0d0 - ta*decay(1))*ea1 )
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c define xit2 term:
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      xit2 =(ycept/decay(2)) * (eb2 - ea2) -
+     1(slope/(decay(2)*decay(2))) *
+     2                            ( (1.0d0 - tb*decay(2))*eb2 
+     3                            - (1.0d0 - ta*decay(2))*ea2 )
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c add terms for the i-th interval contribution. 
+c ABOVE IS THE NON-DEGENERATE CASE
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      bhaq_w = (xi1 * xit1) + (xi2 * xit2)    
+      bhaq_dwdt = (xi3 * xit1) + (xi4 * xit2)    
+      return
+      end
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/qwise.f
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/qwise.f	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/qwise.f	(revision 27955)
@@ -0,0 +1,65 @@
+      subroutine qwise(t,ta,qjadon,xi0,xi1,xi2,xi3,xi4,slope,ycept,
+     1decay,bhaq_w,bhaq_dwdt)
+      implicit double precision (a-h,o-z)
+      double precision decay(2)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c This subroutine retrieves the convolution for the J-th linear piece-wise
+c q hat function (the load shape or Bessel function part having been removed)
+c with the free-decay solution. (see notes of 3-27-97 "convo.ice" Mathematica
+c session).  The convolution is returned as "bhaq".
+c
+c  THIS ROUTINE REPLACES pwise.f ONLY FOR t <  time(Ntime) *
+c  (such that the load is still in place at time t).       *
+c
+c Note irate = 1 case has to be applied to the linear term only (freed.f applies
+c this correction to exponential terms)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      xg1 = xi1/(decay(1)*decay(1))
+      xg2 = xi2/(decay(2)*decay(2))
+      xg3 = xi3/(decay(1)*decay(1))
+      xg4 = xi4/(decay(2)*decay(2))
+      gb1 = decay(1)*ycept
+      gb2 = decay(2)*ycept
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c define xit0 term:
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      xit0_w = (xi0 + qjadon) * ( ( slope * t ) + ycept )
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c define xit1 term:
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      xit1_w = xg1 * (
+     1              gb1 + slope * ( ( t * decay(1) ) - 1.0d0 )
+     2          - ( gb1 + slope * ( ( ta * decay(1) ) - 1.0d0 ))
+     3                                   * dexp( decay(1) * (ta - t) )
+     4                       )
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c define xit2 term:
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      xit2_w = xg2 * (
+     1              gb2 + slope * ( ( t * decay(2) ) - 1.0d0 )
+     2          - ( gb2 + slope * ( ( ta * decay(2) ) - 1.0d0 ) )
+     3                                   * dexp( decay(2) * (ta - t) )
+     4                       )
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c And the rate equivalents:
+c (sign switch due to freed.f already
+c having corrected in x1t, x2t pass).
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      xit0_dwdt = (xi0 + qjadon) * slope 
+      xit1_dwdt =-xg3 * (
+     1              slope  
+     2     + ( gb1 + slope * ( ( ta * decay(1) ) - 1.0d0 ))
+     3                                   * dexp( decay(1) * (ta - t) )
+     4                       )
+      xit2_dwdt =-xg4 * (
+     1              slope 
+     2     + ( gb2 + slope * ( ( ta * decay(2) ) - 1.0d0 ))
+     3                                   * dexp( decay(2) * (ta - t) )
+     4                       )
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c add terms for the J-th (and final) interval contribution.
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      bhaq_w = xit0_w + xit1_w + xit2_w
+      bhaq_dwdt = xit0_dwdt + xit1_dwdt + xit2_dwdt
+      return
+      end
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/stot.f
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/stot.f	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/stot.f	(revision 27955)
@@ -0,0 +1,79 @@
+      subroutine stot(ikval,qjadon,fltng_w,fltng_dwdt,Ntimp,Ntimm,
+     1time,bi,dmi)
+      implicit double precision (a-h,o-z)
+      integer Ntimp,Ntimm
+      parameter (Nafter = 1)
+      parameter (nhank = 1024)
+      double precision decay(2)
+      double precision pset(7)
+      double precision time(Ntimp),bi(Ntimm),dmi(Ntimm)
+      double precision dekay1(nhank),dekay2(nhank),amp0(nhank),
+     1amp1(nhank),amp2(nhank),amp3(nhank),amp4(nhank)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      common /blockm/ dekay1,dekay2,amp0,amp1,amp2,amp3,amp4
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c  This subroutine returns the inverse Laplace transform to the
+c  time-domain for the vertical displacement at time t for Hankel wavenumber
+c  ikval.  (In general this routine needs to be called nhank times).
+c  The main derivation uses the Faltung theorem of Laplace transforms.
+c  (1-1-97)  NEW CASE OF 3-27-97 IS FOR t(Ntime + i) < t(Ntime) OR IN OTHER
+c  WORDS, THE LOAD STILL IN PLACE AT t.  OPTION CALL to qwise.f
+c  PERFORMS THIS. 
+c 
+c  A theory for the degenerate case was worked out but has been removed
+c  as an option from this code.
+c
+c  Definition of tspan: nondimensional time span backwards form present
+c                       when this routine is first called the dimensional
+c                       equivalent might be say tspan = 12 ka, then 11 and
+c                       then finally tspan = 0.
+c  Additional note for r.s.l calculations: the routines qwise and pwise
+c  are identical to the previous case for computations of present-day only
+c  vertical deformation field.
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      decay(1) = dekay1(ikval)
+      decay(2) = dekay2(ikval)
+      xi0 = amp0(ikval)
+      xi1 = amp1(ikval)
+      xi2 = amp2(ikval)
+      xi3 = amp3(ikval)
+      xi4 = amp4(ikval)
+
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c note that tspan must be updated in the calling routine "what0.f"
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      t = time(Ntimp)
+      sumb_w = 0.0d0
+      sumb_dwdt = 0.0d0
+      ta = time(1)
+      tb = time(2)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      do 97 i = 1,Ntimm
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c note that this "if" prevents adding load
+c segments of "future" times when computing
+c an r.s.l. history (10-06-98).
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      if(t.lt.ta) go to 97
+      slope=dmi(i)
+      ycept=bi(i)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      if( t . gt . ta . and . t . le . tb) go to 38
+      call pwise(t,ta,tb,xi1,xi2,xi3,xi4,slope,ycept,decay,
+     1bhaq_w,bhaq_dwdt)
+      go to 39
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c Note that qwise is employed only for the J-th Q hat term when t for
+c evaluation still has to consider the load itself
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+   38 call qwise(t,ta,qjadon,xi0,xi1,xi2,xi3,xi4,slope,ycept,decay,
+     1bhaq_w,bhaq_dwdt)
+   39 sumb_w = bhaq_w + sumb_w
+      sumb_dwdt = bhaq_dwdt + sumb_dwdt
+      ta = time(i + 1)
+      tb = time(i + 2)
+   97 continue
+      fltng_w = sumb_w
+      fltng_dwdt = sumb_dwdt
+      return
+      end
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/what0.f
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/what0.f	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/GiaDeflectionCorex/what0.f	(revision 27955)
@@ -0,0 +1,127 @@
+      subroutine what0(iedge,Ntimp,Ntimm,time,bi,dmi)
+      implicit double precision (a-h,o-z)
+      integer Ntimp,Ntimm
+      parameter (nhank = 1024)
+      parameter (N = nhank/2)
+      double precision dekay1(nhank),dekay2(nhank),amp0(nhank),
+     1amp1(nhank),amp2(nhank),amp3(nhank),amp4(nhank),
+     1zksam(nhank),zksamp(nhank)
+      double precision decay(2),pset(7),amps(5),
+     1decta(2),dyri1(nhank),dyri2(nhank),sna(nhank)
+      double precision cinner_w(nhank),cinner_dwdt(nhank)
+      double precision bcin_w(nhank),bcin_dwdt(nhank)
+      double precision time(Ntimp),bi(Ntimm),dmi(Ntimm)
+      integer maxk
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      common /blockp/ pset
+      common /blockz/ zkp
+      common /blockm/ dekay1,dekay2,amp0,amp1,amp2,amp3,amp4
+      data yearco /3.15576d7/, pi /3.1415926535897932384d0/
+      data g /9.832186d0/, four /4.d0/, two /2.0d0/,
+     1 one /1.0d0/, zero/0.0d0/ , maxk/64/
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      twopi = two * pi
+      r2 = pset(6)
+      u2 = pset(4)
+      r1 = pset(5)
+      u1 = pset(3)
+      h  = pset(1)
+      urat = u1/u2
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c  alphap is dimensionless disk radius
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      alphap = pset(7)/pset(1)
+      twoap = two * alphap
+      rghm = ( r1 * g * h * alphap ) / (two * u2)
+      taumx = pset(2)/pset(4)
+      tmxyr = taumx / yearco
+c
+      dfac = dfloat(nhank)/dfloat(maxk)
+      endk = dfloat(nhank)/dfac
+      dk = endk/dfloat(nhank)
+c
+      ak = zero
+      do 7000 ik = 1,nhank
+      ak = ak + dk
+      zkp = ak
+      pikn = (6.371d6 * zkp) / h
+      zkd = pikn / 6.371d6
+c
+      zkp2 = 2.0d0 * zkp
+      zkp4 = 4.0d0 * zkp
+      e1 = dexp(zkp)
+      e2 = dexp(zkp2)
+      e4 = dexp(zkp4)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      call freed(r2,u2,r1,u1,h,zkd,e1,e2,e4,b0,b1,a2,a1,a0,decay,amps)
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      decta(1) = decay(1)/tmxyr
+      decta(2) = decay(2)/tmxyr
+      dyri1(ik) = decta(1)
+      dyri2(ik) = decta(2)
+      sna(ik) = pikn
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c Form vectors for full construction in pwise.f and stot.f
+c Note that freed will produce decay spectra defined as positive, 
+c ie. negative decay must reinsert a minus sign.
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      dekay1(ik) = decay(1)
+      dekay2(ik) = decay(2)
+      amp0(ik) = amps(3)  
+      amp1(ik) = amps(1)  
+      amp2(ik) = amps(2)  
+      amp3(ik) = amps(4)  
+      amp4(ik) = amps(5)  
+      zksam(ik) = zkd
+      zksamp(ik) = zkp
+ 7000 continue
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c The following looped call sets up the free solution convolved with the
+c load function q hat.  Note that the returned vector set "cinner" is the
+c inner-most part of the arguement of the inverse Hankel trans. integral.
+c It is time-dependent and the loop is for the k-dependancy. The time for
+c calculation is given in the vector "time(Ntimp)" in the routine stot.f that is
+c called below. Note that the sign on cinner(ik) below is for a load directed
+c downward.   ** For iedge = 1 assume sq. edge load and for iedge = 2 assume an
+c elliptical cross section.  Note loops 8500,8000 and 9500,9000 for the two
+c cases, respectively.
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+   49 go to (8499,9499), iedge
+ 8499 do 8000 ik = 1, nhank
+      xakap = zksamp(ik)*alphap
+      diku = xakap * urat
+      pref = diku / ( diku + rghm )
+      qjadon = one / ( four * zksamp(ik) * urat )
+      call stot(ik,qjadon,fltng_w,fltng_dwdt,Ntimp,Ntimm,time,bi,dmi)
+      cinner_w(ik) = - fltng_w * pref * twoap
+      cinner_dwdt(ik) = - fltng_dwdt * pref * twoap
+      bcin_w(ik) = cinner_w(ik) * dbesj1(xakap)
+      bcin_dwdt(ik) = cinner_dwdt(ik) * dbesj1(xakap)
+ 8000 continue
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+c "ojrule.f" computes the inverse Hankel trasform with a simple
+c Simpson's rule.  The routine "ojrule" is buliding a set of solutions stored
+c in common "blocks" in r or "asrpos(nrv) ", and computed rate or displacement
+c for each of N3G disks in "aswokm(nrv,N3G)" . 
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+      call ojrule(dk,bcin_w,bcin_dwdt)
+      go to 999
+c ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+ 9499 do 9000 ik = 1, nhank
+      xakap = zksamp(ik)*alphap
+      oxakap = one/xakap
+      diku = xakap * urat
+      pref = diku / ( diku + rghm )
+      qjadon = one / ( four * zksamp(ik) * urat )
+      call stot(ik,qjadon,fltng_w,fltng_dwdt,Ntimp,Ntimm,time,bi,dmi)
+      cinner_w(ik) = - fltng_w * pref * twoap
+      cinner_dwdt(ik) = - fltng_dwdt * pref * twoap
+      bcin_w(ik) = cinner_w(ik) * oxakap * ( dsin(xakap) * oxakap
+     1 - dcos(xakap) )
+      bcin_dwdt(ik) = cinner_dwdt(ik) * oxakap * ( dsin(xakap) * oxakap
+     1 - dcos(xakap) )
+ 9000 continue
+      call ojrule(dk,bcin_w,bcin_dwdt)
+  999 return
+
+      end
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Gradjx/Gradjx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Gradjx/Gradjx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Gradjx/Gradjx.cpp	(revision 27955)
@@ -0,0 +1,94 @@
+/*!\file Gradjx
+ * \brief: compute inverse method gradient
+ */
+
+#include "./Gradjx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void Gradjx(Vector<IssmDouble>** pgradient,IssmDouble** pnorm_list, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters){
+
+	int         numberofvertices;
+	int         num_controls,analysisenum;
+	IssmDouble  norm_inf;
+	IssmDouble *norm_list      = NULL;
+	int        *control_type   = NULL;
+	int        *control_interp = NULL;
+	int        *M = NULL;
+	int        *N = NULL;
+	Vector<IssmDouble>  *gradient      = NULL;
+	Vector<IssmDouble> **gradient_list = NULL;
+
+	/*Display message*/
+	if(VerboseModule()) _printf0_("   Computing cost function gradient\n");
+
+	/*retrieve some parameters: */
+	parameters->FindParam(&num_controls,InversionNumControlParametersEnum);    _assert_(num_controls);
+	parameters->FindParam(&control_type,NULL,InversionControlParametersEnum);
+   parameters->FindParam(&control_interp,NULL,ControlInputInterpolationEnum);
+	parameters->FindParam(&M,NULL,ControlInputSizeMEnum);
+	parameters->FindParam(&N,NULL,ControlInputSizeNEnum);
+	numberofvertices=vertices->NumberOfVertices();
+
+	/*Get current analysis*/
+	parameters->FindParam(&analysisenum,AnalysisTypeEnum);
+	Analysis* analysis = EnumToAnalysis(analysisenum);
+
+	/*Allocate gradient_list */
+	gradient_list = xNew<Vector<IssmDouble>*>(num_controls);
+	norm_list     = xNew<IssmDouble>(num_controls);
+	int totalsize = 0;
+	for(int i=0;i<num_controls;i++) totalsize += M[i]*N[i];
+	for(int i=0;i<num_controls;i++) gradient_list[i]=new Vector<IssmDouble>(totalsize);
+
+	/*Compute all gradient_list*/
+	for(int i=0;i<num_controls;i++){
+		for(Object* & object : elements->objects){
+			Element* element=xDynamicCast<Element*>(object);
+			analysis->GradientJ(gradient_list[i],element,control_type[i],control_interp[i],i);
+		}
+		gradient_list[i]->Assemble();
+		norm_list[i]=gradient_list[i]->Norm(NORM_INF);
+	}
+
+	/*Add all gradient_list together*/
+	gradient=new Vector<IssmDouble>(totalsize);
+	for(int i=0;i<num_controls;i++){
+		gradient->AXPY(gradient_list[i],1.0);
+		delete gradient_list[i];
+	}
+
+	/*Check that gradient is clean*/
+	norm_inf=gradient->Norm(NORM_INF);
+	if(norm_inf<=0)                 _error_("||dJ/dk|| = 0    gradient norm is zero");
+	if(xIsNan<IssmDouble>(norm_inf))_error_("||dJ/dk|| = NaN  gradient norm is NaN");
+
+	/*Clean-up and assign output pointer*/
+	delete analysis;
+	xDelete<Vector<IssmDouble>*>(gradient_list);
+	xDelete<int>(control_type);
+	xDelete<int>(control_interp);
+	xDelete<int>(M);
+	xDelete<int>(N);
+	if(pnorm_list){
+		*pnorm_list=norm_list;
+	}
+	else{
+		xDelete<IssmDouble>(norm_list);
+	}
+	if(pgradient)  *pgradient=gradient;
+
+}
+void Gradjx(IssmDouble** pgradient,IssmDouble** pnorm_list, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters){
+
+	/*Get gradient: */
+	Vector<IssmDouble>* vec_gradient=NULL;
+	Gradjx(&vec_gradient,pnorm_list,elements,nodes, vertices,loads,materials,parameters);
+
+	/*Serialize*/
+	IssmDouble* gradient=vec_gradient->ToMPISerial();
+
+	/*Free resources: and assign output pointer*/
+	delete vec_gradient;
+	*pgradient=gradient;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Gradjx/Gradjx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Gradjx/Gradjx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Gradjx/Gradjx.h	(revision 27955)
@@ -0,0 +1,15 @@
+/*!\file:  Gradjx.h
+ * \brief header file for inverse methods gradient computation
+ */ 
+
+#ifndef _GRADJX_H
+#define _GRADJX_H
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+/* local prototypes: */
+void Gradjx(Vector<IssmDouble>** pgrad_g,IssmDouble** pgrad_norm,Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters);
+void Gradjx(IssmDouble** pgrad_g,IssmDouble** pgrad_norm,Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters);
+
+#endif  /* _GRADJX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp	(revision 27955)
@@ -0,0 +1,185 @@
+/*!\file GroundinglineMigrationx
+ * \brief: migration grounding line position.
+ */
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "./GroundinglineMigrationx.h"
+
+void GroundinglineMigrationx(Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters){
+
+   int         migration_style;
+	IssmDouble *vertices_potentially_ungrounding = NULL;
+	IssmDouble *phi_ungrounding                  = NULL;
+
+	/*retrieve parameters: */
+	parameters->FindParam(&migration_style,GroundinglineMigrationEnum);
+	if(migration_style==NoneEnum) return;
+
+	if(VerboseModule()) _printf0_("   Migrating grounding line based on "<<EnumToStringx(migration_style)<<"\n");
+
+	/*Set toolkit to default*/
+	ToolkitsOptionsFromAnalysis(parameters,DefaultAnalysisEnum);
+
+	switch(migration_style){
+		case SoftMigrationEnum:
+			/*Create flag for grounded vertices above the hydrostatic equilibrium: */
+			vertices_potentially_ungrounding=PotentialUngrounding(elements,vertices,parameters);
+			/*propagate ice shelf into connex areas of the ice sheet that potentially want to unground: */
+			phi_ungrounding=PropagateFloatingiceToGroundedNeighbors(elements,nodes,vertices,parameters,vertices_potentially_ungrounding);
+			break;
+		case ContactEnum:
+			phi_ungrounding=ContactFSLevelset(elements,vertices);
+			break;
+		case SubelementMigrationEnum:
+		case AggressiveMigrationEnum:
+		case GroundingOnlyEnum:
+			/*Nothing additional to do here, MigrateGroundingLine takes care of everything*/
+			break;
+		default:
+			_error_("Grounding line migration "<<EnumToStringx(migration_style) << " not supported yet!");
+	}
+
+	/*Migrate grounding line : */
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->MigrateGroundingLine(phi_ungrounding);
+	}
+
+	/*free ressouces: */
+	xDelete<IssmDouble>(vertices_potentially_ungrounding);
+	xDelete<IssmDouble>(phi_ungrounding);
+}
+
+IssmDouble*    ContactFSLevelset(Elements* elements,Vertices* vertices){ /*{{{*/
+
+	Vector<IssmDouble>* vertex_sigmann = NULL;
+	Vector<IssmDouble>* vertex_waterpressure = NULL;
+	IssmDouble*  serial_vertex_sigmann = NULL;
+	IssmDouble*  serial_vertex_waterpressure = NULL;
+	IssmDouble*  phi                   = NULL;
+
+	/*Initialize vector with number of vertices*/
+	int numberofvertices = vertices->NumberOfVertices();
+	vertex_sigmann = new Vector<IssmDouble>(numberofvertices);
+	vertex_waterpressure = new Vector<IssmDouble>(numberofvertices);
+	phi            = xNew<IssmDouble>(numberofvertices);
+
+	/*Fill vector vertices_potentially_floating: */
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->FSContactMigration(vertex_sigmann,vertex_waterpressure);
+	}
+	/*Assemble vector and serialize */
+	vertex_sigmann->Assemble();
+	vertex_waterpressure->Assemble();
+	serial_vertex_sigmann=vertex_sigmann->ToMPISerial();
+	serial_vertex_waterpressure=vertex_waterpressure->ToMPISerial();
+
+	for(int i=0;i<numberofvertices;i++){
+		if (serial_vertex_waterpressure[i] > serial_vertex_sigmann[i]) phi[i]=-1;
+		else phi[i]=1;
+	}
+
+	/*free ressouces and return: */
+	delete vertex_sigmann;
+	delete vertex_waterpressure;
+	xDelete<IssmDouble>(serial_vertex_sigmann);
+	xDelete<IssmDouble>(serial_vertex_waterpressure);
+
+	return phi;
+}
+/*}}}*/
+IssmDouble*    PotentialUngrounding(Elements* elements,Vertices* vertices,Parameters* parameters){ /*{{{*/
+
+	int                 i,numberofvertices;
+	IssmDouble*         vertices_potentially_ungrounding      = NULL;
+	Vector<IssmDouble>* vec_vertices_potentially_ungrounding  = NULL;
+	Element*            element                               = NULL;
+
+	/*Initialize vector with number of vertices*/
+	numberofvertices=vertices->NumberOfVertices();
+	vec_vertices_potentially_ungrounding=new Vector<IssmDouble>(numberofvertices); //grounded vertex that could start floating
+
+	/*Fill vector vertices_potentially_floating: */
+	for(Object* & object : elements->objects){
+		element=xDynamicCast<Element*>(object);
+		element->PotentialUngrounding(vec_vertices_potentially_ungrounding);
+	}
+
+	/*Assemble vector and serialize */
+	vec_vertices_potentially_ungrounding->Assemble();
+	vertices_potentially_ungrounding=vec_vertices_potentially_ungrounding->ToMPISerial();
+
+	/*free ressouces and return: */
+	delete vec_vertices_potentially_ungrounding;
+	return vertices_potentially_ungrounding;
+}
+/*}}}*/
+IssmDouble*    PropagateFloatingiceToGroundedNeighbors(Elements* elements,Nodes* nodes,Vertices* vertices,Parameters* parameters,IssmDouble* vertices_potentially_ungrounding){ /*{{{*/
+	int                 i,analysis_type;
+	int                 nflipped,local_nflipped;
+	IssmDouble*         phi                                  = NULL;
+	IssmDouble*         elements_neighboring_floatingce      = NULL;
+	Vector<IssmDouble>* vec_elements_neighboring_floatingice = NULL;
+	Vector<IssmDouble>* vec_phi                              = NULL;
+	Element*            element                               = NULL;
+
+	/*recover parameters: */
+	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	/*recover vec_phi*/
+	vec_phi=new Vector<IssmDouble>(vertices->NumberOfVertices());
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->GetVectorFromInputs(vec_phi,MaskOceanLevelsetEnum,VertexPIdEnum);
+	}
+	vec_phi->Assemble();
+	phi=vec_phi->ToMPISerial();
+
+	nflipped=1; //bootstrap
+	while(nflipped){
+
+		/*Vector of size number of elements*/
+		vec_elements_neighboring_floatingice=new Vector<IssmDouble>(elements->NumberOfElements(),true);
+
+		/*Figure out if any of the nodes of the element will be floating -> elements neighbouting the floating ice*/
+		for(Object* & object : elements->objects){
+			element=xDynamicCast<Element*>(object);
+			vec_elements_neighboring_floatingice->SetValue(element->Sid(),element->IsNodeOnShelfFromFlags(phi)?1.0:0.0,INS_VAL);
+		}
+
+		/*Assemble vector and serialize: */
+		vec_elements_neighboring_floatingice->Assemble();
+		elements_neighboring_floatingce=vec_elements_neighboring_floatingice->ToMPISerial();
+
+		/*Go through elements_neighboring_floatingce, and update vector of the nodes that will start floating*/
+		local_nflipped=0;
+		for(Object* & object : elements->objects){
+			element=xDynamicCast<Element*>(object);
+			if(reCast<int,IssmDouble>(elements_neighboring_floatingce[element->Sid()])){
+				local_nflipped+=element->UpdatePotentialUngrounding(vertices_potentially_ungrounding,vec_phi,phi);
+			}
+		}
+		vec_phi->Assemble();
+
+		ISSM_MPI_Allreduce(&local_nflipped,&nflipped,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
+		if(VerboseConvergence()) _printf0_("   Additional number of vertices allowed to unground: " << nflipped << "\n");
+
+		/*Avoid leaks: */
+		xDelete<IssmDouble>(elements_neighboring_floatingce);
+		xDelete<IssmDouble>(phi);
+
+		/*Assemble and serialize:*/
+		delete vec_elements_neighboring_floatingice;
+		phi=vec_phi->ToMPISerial();
+	}
+
+	/*Free resources:*/
+	delete vec_phi;
+	xDelete<IssmDouble>(elements_neighboring_floatingce);
+
+	return phi;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.h	(revision 27955)
@@ -0,0 +1,18 @@
+/*!\file:  GroundinglineMigrationx.h
+ * \brief header file for Grounding Line Migration
+ */ 
+
+#ifndef _GROUNDINGLINEMIGRATIONX_H
+#define _GROUNDINGLINEMIGRATIONX_H
+
+class Elements;
+class Vertices;
+class Nodes;
+class Parameters;
+
+/* local prototypes: */
+void         GroundinglineMigrationx(Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters);
+IssmDouble*  ContactFSLevelset(Elements* elements,Vertices* vertices);
+IssmDouble*  PotentialUngrounding(Elements* elements,Vertices* vertices,Parameters* parameters);
+IssmDouble*  PropagateFloatingiceToGroundedNeighbors(Elements* elements,Nodes* nodes,Vertices* vertices,Parameters* parameters,IssmDouble* vertices_potentially_ungrounding);
+#endif  /* _GROUNDINGLINEMIGRATIONX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.cpp	(revision 27955)
@@ -0,0 +1,15 @@
+/*!\file InputDepthAverageAtBasex
+ * \brief: extrude input
+ */
+
+#include "./InputDepthAverageAtBasex.h"
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+#include "../../toolkits/toolkits.h"
+
+void InputDepthAverageAtBasex(FemModel* femmodel,int original_enum, int new_enum){
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->InputDepthAverageAtBase(original_enum,new_enum);
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputDepthAverageAtBasex/InputDepthAverageAtBasex.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  InputDepthAverageAtBasex.h
+ * \brief header file for field extrusion
+ */ 
+
+#ifndef _INPUTDEPTHAVERAGEATBASEX_H
+#define _INPUTDEPTHAVERAGEATBASEX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void InputDepthAverageAtBasex(FemModel* femmodel,int reinitialized_enum, int original_enum);
+
+#endif  /* _INPUTDUPLICATEX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputDuplicatex/InputDuplicatex.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputDuplicatex/InputDuplicatex.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputDuplicatex/InputDuplicatex.cpp	(revision 27955)
@@ -0,0 +1,12 @@
+/*!\file InputDuplicatex
+ * \brief: duplicte  an input inside the elements, onto another, and wipe it off.
+ */
+
+#include "./InputDuplicatex.h"
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+#include "../../toolkits/toolkits.h"
+
+void InputDuplicatex(FemModel* femmodel,int original_enum, int new_enum){
+	femmodel->inputs->DuplicateInput(original_enum,new_enum);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputDuplicatex/InputDuplicatex.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputDuplicatex/InputDuplicatex.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputDuplicatex/InputDuplicatex.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  InputDuplicatex.h
+ * \brief header file for field extrusion
+ */ 
+
+#ifndef _INPUTDUPLICATEX_H
+#define _INPUTDUPLICATEX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void InputDuplicatex(FemModel* femmodel,int reinitialized_enum, int original_enum);
+
+#endif  /* _INPUTDUPLICATEX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputExtrudex/InputExtrudex.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputExtrudex/InputExtrudex.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputExtrudex/InputExtrudex.cpp	(revision 27955)
@@ -0,0 +1,15 @@
+/*!\file InputExtrudex
+ * \brief: extrude input
+ */
+
+#include "./InputExtrudex.h"
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+#include "../../toolkits/toolkits.h"
+
+void InputExtrudex(FemModel* femmodel,int input_enum,int start){
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->InputExtrude(input_enum,start);
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputExtrudex/InputExtrudex.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputExtrudex/InputExtrudex.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputExtrudex/InputExtrudex.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  InputExtrudex.h
+ * \brief header file for field extrusion
+ */ 
+
+#ifndef _INPUTEXTRUDEX_H
+#define _INPUTEXTRUDEX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void InputExtrudex(FemModel* femmodel,int input_enum,int start);
+
+#endif  /* _INPUTDUPLICATEX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromConstantx/InputUpdateFromConstantx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromConstantx/InputUpdateFromConstantx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromConstantx/InputUpdateFromConstantx.cpp	(revision 27955)
@@ -0,0 +1,130 @@
+/*!\file InputUpdateFromConstantx
+ * \brief: update datasets using  parameter inputs
+ */
+
+#include "./InputUpdateFromConstantx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/Inputs/Inputs.h"
+
+void InputUpdateFromConstantx(FemModel* femmodel,bool constant, int name){
+	if(VerboseModule()) _printf0_("   Input updates from constant\n");
+
+	/*Elements and loads drive the update: */
+	for(Object* & object : femmodel->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		element->InputUpdateFromConstant(constant,name);
+	}
+}
+void InputUpdateFromConstantx(FemModel* femmodel,int constant, int name){
+
+	if(VerboseModule()) _printf0_("   Input updates from constant\n");
+
+	/*Elements and loads drive the update: */
+	for(Object* & object : femmodel->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+		element->InputUpdateFromConstant(constant,name);
+	}
+}
+void InputUpdateFromConstantx(FemModel* femmodel,int constant, int name, int type){
+
+	if(type==P0Enum) InputUpdateFromConstantx(femmodel, constant,name);
+	else if(type==P1Enum){
+
+		if(VerboseModule()) _printf0_("   Input updates from constant (P1 version)\n");
+
+		/*Elements and loads drive the update: */
+		if(IsInputEnum(name)){
+			for(Object* & object : femmodel->elements->objects){
+				Element* element = xDynamicCast<Element*>(object);
+				element->InputUpdateFromConstant(constant,name,P1Enum);
+			}
+		}
+		else{
+			_error_("not supported yet");
+		}
+	}
+	else _error_("InputUpdateFromConstantx error message: type not supported yet!");
+
+}
+
+void InputUpdateFromConstantx(FemModel* femmodel,IssmDouble constant, int name){
+
+	if(VerboseModule()) _printf0_("   Input updates from constant\n");
+
+	/*Elements and loads drive the update: */
+	if(IsInputEnum(name)){
+		for(Object* & object : femmodel->elements->objects){
+			Element* element = xDynamicCast<Element*>(object);
+			element->InputUpdateFromConstant(constant,name);
+		}
+	}
+	else if(IsParamEnum(name)){
+		if(femmodel->parameters->Exist(name)){
+			femmodel->parameters->SetParam(constant,name);
+		}
+		else{
+			_error_("Param not set");
+		}
+	}
+	else{
+		_error_("not supported");
+	}
+}
+void InputUpdateFromConstantx(Inputs* inputs,Elements* elements,IssmDouble constant, int name){
+
+	if(VerboseModule()) _printf0_("   Input updates from constant\n");
+
+	/*Elements and loads drive the update: */
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->SetElementInput(inputs,name,constant);
+	}
+}
+
+void InputUpdateFromConstantx(Inputs* inputs,Elements* elements,IssmDouble constant, int name,int type){
+
+	if(type==P0Enum) InputUpdateFromConstantx(inputs, elements, constant,name);
+	else if(type==P1Enum){
+
+		if(VerboseModule()) _printf0_("   Input updates from constant (P1 version)\n");
+
+		/*Elements and loads drive the update: */
+		if(IsInputEnum(name)){
+			for(Object* & object : elements->objects){
+				Element* element = xDynamicCast<Element*>(object);
+				element->InputUpdateFromConstant(constant,name,P1Enum);
+			}
+		}
+		else{
+			_error_("not supported yet");
+		}
+	}
+	else _error_("InputUpdateFromConstantx error message: type not supported yet!");
+
+}
+void InputUpdateFromConstantx(Inputs* inputs,Elements* elements,bool constant, int name){
+
+	if(VerboseModule()) _printf0_("   Input updates from constant\n");
+
+	/*Elements and loads drive the update: */
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->SetBoolInput(inputs,name,constant);
+	}
+}
+#ifdef _HAVE_AD_
+void InputUpdateFromConstantx(Inputs* inputs,Elements* elements,IssmPDouble constant, int name){
+
+	if(VerboseModule()) _printf0_("   Input updates from constant\n");
+
+	/*Convert to active variable!*/
+	IssmDouble constant2 = constant;
+
+	/*Elements and loads drive the update: */
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->SetElementInput(inputs,name,constant2);
+	}
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromConstantx/InputUpdateFromConstantx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromConstantx/InputUpdateFromConstantx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromConstantx/InputUpdateFromConstantx.h	(revision 27955)
@@ -0,0 +1,23 @@
+/*!\file:  InputUpdateFromConstantx.h
+ * \brief header file for updating datasets from inputs
+ */ 
+
+#ifndef _UPDATEINPUTSFROMCONSTANTXX_H
+#define _UPDATEINPUTSFROMCONSTANTXX_H
+
+#include "../../classes/classes.h"
+class Inputs;
+
+/* local prototypes: */
+void InputUpdateFromConstantx(FemModel* femmodel,bool       constant,int name);
+void InputUpdateFromConstantx(FemModel* femmodel,int        constant,int name);
+void InputUpdateFromConstantx(FemModel* femmodel,int        constant,int name, int type);
+void InputUpdateFromConstantx(FemModel* femmodel,IssmDouble constant,int name);
+#ifdef _HAVE_AD_
+void InputUpdateFromConstantx(Inputs* inputs,Elements* elements,IssmPDouble constant,int name);
+#endif
+void InputUpdateFromConstantx(Inputs* inputs,Elements* elements,IssmDouble constant,int name);
+void InputUpdateFromConstantx(Inputs* inputs,Elements* elements,IssmDouble constant,int name, int type);
+void InputUpdateFromConstantx(Inputs* inputs,Elements* elements,bool       constant,int name);
+
+#endif  /* _UPDATEINPUTSFROMCONSTANTXX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp	(revision 27955)
@@ -0,0 +1,286 @@
+/*!\file InputUpdateFromDakotax
+ * \brief: update datasets using  parameter inputs
+ */
+
+#include "./InputUpdateFromDakotax.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/Inputs/TransientInput.h"
+#include "../../classes/Inputs/DatasetInput.h"
+#include "../../classes/Inputs/TriaInput.h"
+#include "../InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.h"
+#include "../InputUpdateFromConstantx/InputUpdateFromConstantx.h"
+#include "../InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h"
+
+void  InputUpdateFromDakotax(FemModel* femmodel,double* variables,char* *variables_descriptors,int numdakotavariables){ /*{{{*/
+
+	int     i,j,k,l;
+
+	IssmDouble **variable_partitions         = NULL;
+	IssmDouble * variable_partition         = NULL;
+	int * variable_partitions_npart         = NULL;
+	int * variable_partitions_nt         = NULL;
+	int          variable_partitions_num;
+	int          npart;
+	int          nt;
+	int variablecount=0;
+
+	double *distributed_values = NULL;
+	double *parameter          = NULL;
+	char   *descriptor         = NULL;
+	char    root[50]; //root name of variable, ex: DragCoefficent, RhoIce, etc ...
+
+	if (VerboseQmu())_printf0_("dakota variables updates\n");
+
+	/*retrieve parameters: */
+	femmodel->parameters->FindParam(&variable_partitions,&variable_partitions_num,NULL,NULL,QmuVariablePartitionsEnum);
+	femmodel->parameters->FindParam(&variable_partitions_npart,NULL,NULL,QmuVariablePartitionsNpartEnum);
+	femmodel->parameters->FindParam(&variable_partitions_nt,NULL,NULL,QmuVariablePartitionsNtEnum);
+
+	/*Go through all dakota descriptors, ex: "rho_ice","thermal_conductivity","thickness1","thickness2", etc ..., and
+	 * for each descriptor, take the variable value and plug it into the inputs (more or less :)):
+	 * We also start with distributed and standard values , as they tend to be used to pluck data from a multi-modle ensemble (mme)
+	 * which can then be scaled. Doing the scaling first would be impractical, as the entire mme would have to be scaled,
+	 * which is a waste of time:*/
+
+	variablecount=0;
+	for(i=0;i<numdakotavariables;i++){ //these are the dakota variables, for all partitions.
+
+		descriptor=variables_descriptors[i];
+
+		/*From descriptor, figure out if the variable is scaled, indexed, distributed or just a simple variable: */
+		if (strncmp(descriptor,"scaled_",7)==0){
+			/*we are skipping these for now.*/
+			npart=variable_partitions_npart[variablecount];
+			nt=variable_partitions_nt[variablecount];
+
+			/*increment i to skip the distributed values just collected: */
+			i+=npart*nt-1; //careful, the for loop will add 1.
+		}
+		else if (strncmp(descriptor,"indexed_",8)==0){
+			/*we are skipping these for now.*/
+		}
+		else if (strncmp(descriptor,"nodal_",8)==0){
+			/*we are skipping these for now.*/
+		}
+
+		else if (strncmp(descriptor,"distributed_",12)==0){
+			if (VerboseQmu())_printf0_("   updating variable " << descriptor << "\n");
+
+			/*recover partition vector: */
+			variable_partition=variable_partitions[variablecount];
+			npart=variable_partitions_npart[variablecount];
+
+			/*Variable is distributed. Determine root name of variable (ex: distributed_DragCoefficient_1 -> DragCoefficient).
+			 * Allocate distributed_values and fill the distributed_values with the next npart variables: */
+
+			memcpy(root,strstr(descriptor,"_")+1,(strlen(strstr(descriptor,"_")+1)+1)*sizeof(char));
+			*strstr(root,"_")='\0';
+
+			distributed_values=xNew<double>(npart);
+			for(j=0;j<npart;j++){
+				distributed_values[j]=variables[i+j];
+			}
+
+			//for (int j=0;j<npart;j++)_printf_(j << ":" << distributed_values[j] << "\n");
+
+			//Call specialty code:
+			InputUpdateSpecialtyCode(femmodel,distributed_values,variable_partition,npart,root);
+
+			/*increment i to skip the distributed values just collected: */
+			i+=npart-1; //careful, the for loop will add 1.
+
+			/*Free allocations: */
+			xDelete<double>(parameter);
+			xDelete<double>(distributed_values);
+		}
+		else{
+			/*Ok, standard variable, just update inputs using the variable: */
+			if (VerboseQmu())_printf0_("   updating variable " << descriptor << "\n");
+			InputUpdateFromConstantx(femmodel,variables[i],StringToEnumx(descriptor));
+		}
+		variablecount++;
+	}
+
+	variablecount=0;
+	/*now deal with scaled variabes:*/
+	for(i=0;i<numdakotavariables;i++){ //these are the dakota variables, for all partitions.
+
+		descriptor=variables_descriptors[i];
+
+		/*From descriptor, figure out if the variable is scaled, indexed, distributed or just a simple variable: */
+		if (strncmp(descriptor,"scaled_",7)==0){
+
+			if (VerboseQmu())_printf0_("   updating variable " << descriptor << "\n");
+
+			/*recover partition vector: */
+			variable_partition=variable_partitions[variablecount];
+			npart=variable_partitions_npart[variablecount];
+			nt=variable_partitions_nt[variablecount];
+
+			/* Variable is scaled, determine its root name (ex: scaled_DragCoefficient_1 -> DragCoefficient). Allocate distributed_values and fill the
+			 * distributed_values with the next npart variables coming from Dakota: */
+			memcpy(root,strstr(descriptor,"_")+1,(strlen(strstr(descriptor,"_")+1)+1)*sizeof(char));
+			*strstr(root,"_")='\0';
+
+			distributed_values=xNew<double>(npart*nt);
+			for(j=0;j<npart*nt;j++){
+				distributed_values[j]=variables[i+j];
+			}
+
+			/*Scale variable inside the inputs:*/
+			InputScaleFromDakotax(femmodel, distributed_values, variable_partition,npart, nt, StringToEnumx(root));
+
+			/*increment i to skip the distributed values just collected: */
+			i+=npart*nt-1; //careful, the for loop will add 1.
+
+			/*Free allocations: */
+			xDelete<double>(parameter);
+			xDelete<double>(distributed_values);
+		}
+		variablecount++;
+	}
+
+	/*Save results:*/
+	femmodel->results->AddResult(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,"uq_variables",variables,numdakotavariables,1,1,0));
+
+	/*Free resources:*/
+	for(i=0;i<variable_partitions_num;i++){
+		IssmDouble* matrix=variable_partitions[i];
+		xDelete<IssmDouble>(matrix);
+	}
+	xDelete<IssmDouble*>(variable_partitions);
+	xDelete<int>(variable_partitions_npart);
+	xDelete<int>(variable_partitions_nt);
+
+} /*}}}*/
+void  InputUpdateSpecialtyCode(FemModel* femmodel,IssmDouble* distributed_values,IssmDouble* variable_partition,int npart,char* root){ //{{{
+
+	/*Here, we put all the code that cannot be handled any other place: */
+	if (strncmp(root,"SurfaceloadModelid",18)==0){ //surface load in solid earth class {{{
+
+		if(VerboseQmu()){
+			_printf0_("      SurfaceloadModelid MME, with ids: ");
+			for (int i=0;i<npart;i++)_printf0_((int)distributed_values[i] << " ");
+			_printf0_("\n");
+		}
+
+		if (femmodel->inputs->GetInputObjectEnum(MasstransportSpcthicknessEnum)==DatasetInputEnum)
+			MmeToInput(femmodel,distributed_values,variable_partition,npart,MasstransportSpcthicknessEnum, P0Enum);
+
+		if (femmodel->inputs->GetInputObjectEnum(MaskIceLevelsetEnum)==DatasetInputEnum)
+			MmeToInput(femmodel,distributed_values,variable_partition,npart,MaskIceLevelsetEnum, P1Enum);
+
+		if (femmodel->inputs->GetInputObjectEnum(MaskOceanLevelsetEnum)==DatasetInputEnum)
+			MmeToInput(femmodel,distributed_values,variable_partition,npart,MaskOceanLevelsetEnum, P1Enum);
+
+	} /*}}}*/
+	if (strncmp(root,"SolidearthExternalModelid",18)==0){ //external solid earth solution in solid earth class {{{
+
+		if(VerboseQmu()){
+			_printf0_("      SolidearthExternalModelid MME, with ids: ");
+			for (int i=0;i<npart;i++)_printf0_((int)distributed_values[i] << " ");
+			_printf0_("\n");
+		}
+
+		if (femmodel->inputs->GetInputObjectEnum(SolidearthExternalDisplacementEastRateEnum)==DatasetInputEnum)
+			MmeToInput(femmodel,distributed_values,variable_partition,npart,SolidearthExternalDisplacementEastRateEnum, P1Enum);
+
+		if (femmodel->inputs->GetInputObjectEnum(SolidearthExternalDisplacementUpRateEnum)==DatasetInputEnum)
+			MmeToInput(femmodel,distributed_values,variable_partition,npart,SolidearthExternalDisplacementUpRateEnum, P1Enum);
+
+		if (femmodel->inputs->GetInputObjectEnum(SolidearthExternalDisplacementNorthRateEnum)==DatasetInputEnum)
+			MmeToInput(femmodel,distributed_values,variable_partition,npart,SolidearthExternalDisplacementNorthRateEnum, P1Enum);
+
+		if (femmodel->inputs->GetInputObjectEnum(SolidearthExternalGeoidRateEnum)==DatasetInputEnum)
+			MmeToInput(femmodel,distributed_values,variable_partition,npart,SolidearthExternalGeoidRateEnum, P1Enum);
+
+		//if (femmodel->inputs->GetInputObjectEnum(SolidearthExternalBarystaticSeaLevelRateEnum)==DatasetInputEnum)
+		//	MmeToInput(femmodel,distributed_values,variable_partition,npart,SolidearthExternalBarystaticSeaLevelRateEnum, P1Enum);
+	} /*}}}*/
+
+	else _error_("InputUpdateSpecialtyCode error message: " << root << " not supported yet!");
+
+}	//}}}
+void  MmeToInput(FemModel* femmodel,IssmDouble* distributed_values,IssmDouble* variable_partition,int npart,int rootenum, int interpolationenum){ /*{{{*/
+
+	TransientInput* transientinput  = NULL;
+	TransientInput* transientinput2 = NULL;
+	Tria* element                    = NULL;
+	IssmDouble value;
+	IssmDouble* values               = NULL;
+	IssmDouble* times                = NULL;
+	int N;
+	int id;
+
+	/*find thickness dataset: */
+	DatasetInput* datasetinput = femmodel->inputs->GetDatasetInput(rootenum);
+
+	/*Initialize new transient input: */
+	transientinput = datasetinput->GetTransientInputByOffset(0); _assert_(transientinput);
+	transientinput->GetAllTimes(&times,&N);
+	femmodel->inputs->SetTransientInput(DummyEnum,times,N);
+	transientinput2 = femmodel->inputs->GetTransientInput(DummyEnum);
+
+	for(Object* & object : femmodel->elements->objects){
+		Tria*   element=xDynamicCast<Tria*>(object);
+
+		if((int)variable_partition[element->Sid()]==-1)id=0; //grab background field
+		else id=distributed_values[(int)variable_partition[element->Sid()]]-1; //grab partition field
+
+		/*recover the right field from the mme: */
+		transientinput = datasetinput->GetTransientInputByOffset(id); _assert_(transientinput);
+
+		/*copy values from the transientinput to the final transientinput2: */
+		for (int j=0;j<N;j++){
+			TriaInput* tria_input=transientinput->GetTriaInput(j);
+			element->InputServe(tria_input);
+			if(interpolationenum==P0Enum){
+				value=tria_input->element_values[0];
+				transientinput2->AddTriaTimeInput( j,1,&(element->lid),&value,P0Enum);
+			}
+			else if(interpolationenum==P1Enum){
+
+				/*Get values and lid list*/
+				const int   numvertices     = element->GetNumberOfVertices();
+				int        *vertexlids      = xNew<int>(numvertices);
+				int        *vertexsids      = xNew<int>(numvertices);
+
+				/*Recover vertices ids needed to initialize inputs*/
+				element->GetVerticesLidList(&vertexlids[0]);
+				element->GetVerticesSidList(&vertexsids[0]);
+				values=tria_input->element_values;
+				transientinput2->AddTriaTimeInput( j,numvertices,vertexlids,values,P1Enum);
+			}
+		}
+	}
+
+	/*wipe out existing SurfaceloadIceThicknessRateEnum dataset:*/
+	femmodel->inputs->ChangeEnum(DummyEnum,rootenum);
+
+	//reconfigure:
+	transientinput2->Configure(femmodel->parameters);
+}	//}}}
+void  InputScaleFromDakotax(FemModel* femmodel,IssmDouble* distributed_values,IssmDouble* partition, int npart, int nt, int name){ /*{{{*/
+
+	/*Copy input:*/
+	femmodel->inputs->DuplicateInput(name,DummyEnum);
+
+	/*Go through elements, copy input name to dummy, and scale it using the distributed_values and the partition vector:*/
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->InputScaleFromDakota(distributed_values,partition,npart,nt,name);
+	}
+
+	/*We created a dummy input, which was a scaled copy of the name input. Now wipe
+	 * out the name input with the new input:*/
+	femmodel->inputs->ChangeEnum(DummyEnum,name);
+
+	/*Some specialty code:*/
+	switch(name){
+		case MaterialsRheologyBEnum:
+			femmodel->inputs->DuplicateInput(name,MaterialsRheologyBbarEnum);
+			break;
+	}
+
+} /*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.h	(revision 27955)
@@ -0,0 +1,15 @@
+/*!\file:  InputUpdateFromDakotax.h
+ * \brief header file for updating datasets from inputs
+ */ 
+
+#ifndef _INPUTUPDATEFROMDAKOTAXX_H
+#define _INPUTUPDATEFROMDAKOTAXX_H
+
+#include "../../classes/classes.h"
+
+void  InputUpdateFromDakotax(FemModel* femmodel,double* variables,char* *variables_descriptors,int numvariables);
+void  InputUpdateSpecialtyCode(FemModel* femmodel,IssmDouble* distributed_values,IssmDouble* variable_partition,int npart,char* root);
+void  MmeToInput(FemModel* femmodel,IssmDouble* distributed_values,IssmDouble* variable_partition,int npart,int rootenum, int interpolationenum);
+void InputScaleFromDakotax(FemModel* femmodel,IssmDouble* distributed_values,IssmDouble* partition, int npart, int nt, int name);
+
+#endif  /* _INPUTUPDATEFROMDAKOTAXX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp	(revision 27955)
@@ -0,0 +1,26 @@
+/*!\file InputUpdateFromMatrixDakotax
+ * \brief: update datasets using  parameter inputs
+ */
+
+#include "./InputUpdateFromMatrixDakotax.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h"
+
+void InputUpdateFromMatrixDakotax(FemModel* femmodel,double* matrix,int nrows,int ncols, int name, int type){
+
+	int numberofvertices,numberofelements;
+
+	numberofvertices=femmodel->vertices->NumberOfVertices();
+	numberofelements=femmodel->elements->NumberOfElements();
+
+	if((ncols==1) && (nrows==numberofvertices || nrows==numberofelements)) InputUpdateFromVectorDakotax(femmodel,matrix,name,type);
+	else{
+
+		/*Update elements, nodes, loads and materials from inputs: */
+		for(Object* & object : femmodel->elements->objects){
+			Element* element=xDynamicCast<Element*>(object);
+			element->InputUpdateFromMatrixDakota(matrix,nrows,ncols,name,type);
+		}
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  InputUpdateFromMatrixDakotax.h
+ * \brief header file for updating datasets from inputs
+ */ 
+
+#ifndef _UPDATEINPUTSFROMMATRIXDAKOTAXX_H
+#define _UPDATEINPUTSFROMMATRIXDAKOTAXX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void InputUpdateFromMatrixDakotax(FemModel* femmodel,double* matrix,int nrows,int ncols, int name, int type);
+
+#endif  /* _UPDATEINPUTSFROMMATRIXDAKOTAXX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.cpp	(revision 27955)
@@ -0,0 +1,32 @@
+/*!\file InputUpdateFromSolutionx
+ * \brief: update datasets using  parameter inputs
+ */
+
+#include "./InputUpdateFromSolutionx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void InputUpdateFromSolutionx(FemModel* femmodel,Vector<IssmDouble>* solution){
+
+	/*GetAnalysis*/
+	int analysisenum;
+	femmodel->parameters->FindParam(&analysisenum,AnalysisTypeEnum);
+	Analysis* analysis = EnumToAnalysis(analysisenum);
+
+	/*Display message*/
+	if(VerboseModule()) _printf0_("   Updating inputs from solution for " << EnumToStringx(analysisenum) << "\n");
+
+	/*Get local vector with both masters and slaves:*/
+	IssmDouble *local_ug = NULL;
+	femmodel->GetLocalVectorWithClonesGset(&local_ug,solution);
+
+	/*Now update inputs (analysis specific)*/
+	for(Object* & object : femmodel->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+		analysis->InputUpdateFromSolution(local_ug,element);
+	}
+
+	/*cleanup and return*/
+	delete analysis;
+	xDelete<IssmDouble>(local_ug);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  InputUpdateFromSolutionx.h
+ * \brief header file for updating datasets from inputs
+ */
+
+#ifndef _UPDATEINPUTSFROMSOLUTIONXX_H
+#define _UPDATEINPUTSFROMSOLUTIONXX_H
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+/* local prototypes: */
+void	InputUpdateFromSolutionx(FemModel* femmodel,Vector<IssmDouble>* solution);
+
+#endif  /* _UPDATEINPUTSFROMSOLUTIONXX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp	(revision 27955)
@@ -0,0 +1,25 @@
+/*!\file InputUpdateFromVectorDakotax
+ * \brief: update datasets using  parameter inputs
+ */
+
+#include "./InputUpdateFromVectorDakotax.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void InputUpdateFromVectorDakotax(FemModel* femmodel,Vector<IssmDouble>* vector, int name, int type){
+
+	IssmDouble* serial_vector=vector->ToMPISerial();
+	InputUpdateFromVectorDakotax(femmodel,serial_vector,name, type);
+
+	/*Free resources:*/
+	xDelete<double>(serial_vector);
+}
+
+void InputUpdateFromVectorDakotax(FemModel* femmodel,IssmDouble* vector, int name, int type){
+
+	/*Update elements, nodes, loads and materials from inputs: */
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->InputUpdateFromVectorDakota(vector,name,type);
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  InputUpdateFromVectorDakotax.h
+ * \brief header file for updating datasets from inputs
+ */ 
+
+#ifndef _UPDATEINPUTSFROMVECTORDAKOTAXX_H
+#define _UPDATEINPUTSFROMVECTORDAKOTAXX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void	InputUpdateFromVectorDakotax(FemModel* femmodel,Vector<IssmDouble>* vector, int name,int type);
+void	InputUpdateFromVectorDakotax(FemModel* femmodel,IssmDouble* vector, int name,int type);
+
+#endif  /* _UPDATEINPUTSFROMVECTORDAKOTAXX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp	(revision 27955)
@@ -0,0 +1,31 @@
+/*!\file InputUpdateFromVectorx
+ * \brief: update datasets using  parameter inputs
+ */
+
+#include "./InputUpdateFromVectorx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void InputUpdateFromVectorx(FemModel* femmodel,Vector<IssmDouble>* vector, int name, int type){
+
+	if(type==VertexPIdEnum){
+		IssmDouble* serial_vector=NULL;
+		femmodel->GetLocalVectorWithClonesVertices(&serial_vector,vector);
+		InputUpdateFromVectorx(femmodel,serial_vector,name,VertexLIdEnum);
+		xDelete<IssmDouble>(serial_vector);
+	}
+	else{
+		IssmDouble* serial_vector=vector->ToMPISerial();
+		InputUpdateFromVectorx(femmodel,serial_vector,name,type);
+		xDelete<IssmDouble>(serial_vector);
+	}
+}
+
+void InputUpdateFromVectorx(FemModel* femmodel,IssmDouble* vector, int name, int type){
+
+	/*Update elements, nodes, loads and materials from inputs: */
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->InputUpdateFromVector(vector,name,type);
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromVectorx/InputUpdateFromVectorx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromVectorx/InputUpdateFromVectorx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InputUpdateFromVectorx/InputUpdateFromVectorx.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  InputUpdateFromVectorx.h
+ * \brief header file for updating datasets from inputs
+ */ 
+
+#ifndef _UPDATEINPUTSFROMVECTORXX_H
+#define _UPDATEINPUTSFROMVECTORXX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void	InputUpdateFromVectorx(FemModel* femmodel,Vector<IssmDouble>* vector, int name,int type);
+void	InputUpdateFromVectorx(FemModel* femmodel,IssmDouble* vector, int name,int type);
+
+#endif  /* _UPDATEINPUTSFROMVECTORXX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp	(revision 27955)
@@ -0,0 +1,314 @@
+/*!\file:  InterpFromGridToMeshx.cpp
+ * \brief  "c" core code for interpolating values from a structured grid.
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <cstring>
+#include "./InterpFromGridToMeshx.h"
+#include "../../shared/shared.h"
+#include "../../shared/io/io.h"
+
+/*InterpFromGridToMeshx{{{*/
+int InterpFromGridToMeshx(IssmSeqVec<IssmPDouble>** pdata_mesh,double* x_in, int x_rows, double* y_in, int y_rows, double* data, int M, int N, double* x_mesh, double* y_mesh, int nods,double default_value,const char* interptype){
+
+	/*output: */
+	IssmSeqVec<IssmPDouble>* data_mesh=NULL;
+
+	/*Intermediary*/
+	double* x=NULL;
+	double* y=NULL;
+	int     i;
+
+	/*Some checks on arguments: */
+	if ((M<2) || (N<2) || (nods<=0)){
+		_error_("nothing to be done according to the dimensions of input matrices and vectors.");
+	}
+	if (x_in[1]-x_in[0]<0){
+		_error_("x coordinate vector should be increasing.\n   use Matlab's command x=flipud(x), also flip the data matrix data=fliplr(data)");
+	}
+	if (y_in[1]-y_in[0]<0){
+		_error_("y coordinate vector should be increasing.\n   use Matlab's command y=flipud(y), also flip the data matrix data=flipud(data)");
+	}
+
+	/*Allocate output vector: */
+	data_mesh=new IssmSeqVec<IssmPDouble>(nods);
+
+	/*Find out what kind of coordinates (x_in,y_in) have been given is input*/
+	if(N==(x_rows-1) && M==(y_rows-1)){
+
+		/*The coordinates given in input describe the contour of each pixel. Take the center of each pixel*/
+		x=xNew<double>(N);
+		y=xNew<double>(M);
+		for(i=0;i<N;i++) x[i]=(x_in[i]+x_in[i+1])/2.;
+		for(i=0;i<M;i++) y[i]=(y_in[i]+y_in[i+1])/2.;
+		x_rows=x_rows-1;
+		y_rows=y_rows-1;
+	}
+	else if (N==x_rows && M==y_rows){
+
+		/*The coordinates given in input describe the center each pixel. Keep them*/
+		x=xNew<double>(N);
+		y=xNew<double>(M);
+		for(i=0;i<N;i++) x[i]=x_in[i];
+		for(i=0;i<M;i++) y[i]=y_in[i];
+	}
+	else{
+		_error_("x and y vectors length should be 1 or 0 more than data number of rows.");
+	}
+
+	/*initialize thread parameters: */
+	InterpFromGridToMeshxThreadStruct gate;
+	gate.x_mesh        = x_mesh;
+	gate.y_mesh        = y_mesh;
+	gate.x_rows        = x_rows;
+	gate.y_rows        = y_rows;
+	gate.x             = x;
+	gate.y             = y;
+	gate.nods          = nods;
+	gate.data_mesh     = data_mesh;
+	gate.data          = data;
+	gate.default_value = default_value;
+	gate.interp        = interptype;
+	gate.M             = M;
+	gate.N             = N;
+
+	/*launch the thread manager with InterpFromGridToMeshxt as a core: */
+	LaunchThread(InterpFromGridToMeshxt,(void*)&gate,_NUMTHREADS_);
+	//_printf_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+
+	/*Assign output pointers:*/
+	*pdata_mesh=data_mesh;
+	return 1;
+}
+/*}}}*/
+/*InterpFromGridToMeshxt {{{*/
+void* InterpFromGridToMeshxt(void* vpthread_handle){
+
+	/*gate variables :*/
+	InterpFromGridToMeshxThreadStruct *gate    = NULL;
+	pthread_handle                    *handle  = NULL;
+	int my_thread;
+	int num_threads;
+	int i0,i1;
+
+	/*intermediary: */
+	int    i,m,n;
+	double x_grid;
+	double y_grid;
+	double data_value;
+	double x1,x2,y1,y2;
+	double Q11,Q12,Q21,Q22;
+
+	/*recover handle and gate: */
+	handle=(pthread_handle*)vpthread_handle;
+	gate=(InterpFromGridToMeshxThreadStruct*)handle->gate;
+	my_thread=handle->id;
+	num_threads=handle->num;
+
+	/*recover parameters :*/
+	double *x_mesh                = gate->x_mesh;
+	double *y_mesh                = gate->y_mesh;
+	int     x_rows                = gate->x_rows;
+	int     y_rows                = gate->y_rows;
+	double *x                     = gate->x;
+	double *y                     = gate->y;
+	int     nods                  = gate->nods;
+	IssmSeqVec<IssmPDouble>*data_mesh = gate->data_mesh;
+	double *data                  = gate->data;
+	double  default_value         = gate->default_value;
+	const char* interptype        = gate->interp;
+	int     M                     = gate->M;
+	int     N                     = gate->N;
+
+	bool debug = M*N>1? true:false;
+
+	/*partition loop across threads: */
+	PartitionRange(&i0,&i1,nods,num_threads,my_thread);
+	for (i=i0;i<i1;i++) {
+
+		//if(debug && my_thread==0) _printf_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(i-i0)/double(i1-i0)*100<<"%   ");
+		x_grid=*(x_mesh+i);
+		y_grid=*(y_mesh+i);
+
+		/*Find indices m and n into y and x, for which  y(m)<=y_grids<=y(m+1) and x(n)<=x_grid<=x(n+1)*/
+		if(findindices(&n,&m,x,x_rows, y,y_rows, x_grid,y_grid)){
+
+			/*    Q12             Q22
+			 * y2 x---------+-----x
+			 *    |         |     |
+			 *    |         |P    |
+			 *    |---------+-----|
+			 *    |         |     |
+			 *    |         |     |
+			 * y1 x---------+-----x Q21
+			 *    x1                 x2
+			 *
+			 */
+			x1=x[n]; x2=x[n+1];
+			y1=y[m]; y2=y[m+1];
+			Q11=data[m*N+n];
+			Q12=data[(m+1)*N+n];
+			Q21=data[m*N+n+1];
+			Q22=data[(m+1)*N+n+1];
+
+			if(strcmp(interptype,"triangle")==0){
+				data_value=triangleinterp(x1,x2,y1,y2,Q11,Q12,Q21,Q22,x_grid,y_grid);
+			}
+			else if(strcmp(interptype,"bilinear")==0){
+				data_value=bilinearinterp(x1,x2,y1,y2,Q11,Q12,Q21,Q22,x_grid,y_grid);
+			}
+			else if(strcmp(interptype,"nearest")==0){
+				data_value=nearestinterp(x1,x2,y1,y2, Q11,Q12,Q21,Q22,x_grid,y_grid);
+			}
+			else{
+				_printf_("Interpolation " << interptype << " not supported yet (supported intepolations are: triangle, bilinear and nearest)\n");
+				return NULL; /*WARNING: no error because it would blow up the multithreading!*/
+			}
+			if(xIsNan<IssmPDouble>(data_value)) data_value=default_value;
+		}
+		else{
+			data_value=default_value;
+		}
+
+		data_mesh->SetValue(i,data_value,INS_VAL);
+	}
+
+	return NULL;
+}/*}}}*/
+
+/*findindices {{{*/
+bool findindices(int* pn,int* pm,double* x,int x_rows, double* y,int y_rows, double xgrid,double ygrid){
+
+	bool foundx=false,foundy=false;
+	int m=-1,n=-1;
+	int i;
+
+	for (i=0;i<x_rows-1;i++){
+		if ((x[i]<=xgrid) && (xgrid<x[i+1])){
+			n=i;
+			foundx=true;
+			break;
+		}
+	}
+	if(xgrid==x[x_rows-1]){
+		n=x_rows-2;
+		foundx=true;
+	}
+
+	for (i=0;i<y_rows-1;i++){
+		if ((y[i]<=ygrid) && (ygrid<y[i+1])){
+			m=i;
+			foundy=true;
+			break;
+		}
+	}
+	if(ygrid==y[y_rows-1]){
+		m=y_rows-2;
+		foundy=true;
+	}
+
+	/*Assign output pointers:*/
+	*pm=m; *pn=n;
+	return (foundx && foundy);
+}/*}}}*/
+/*triangleinterp{{{*/
+double triangleinterp(double x1,double x2,double y1,double y2,double Q11,double Q12,double Q21,double Q22,double x,double y){
+	/*split the rectangle in 2 triangle and
+	 * use Lagrange P1 interpolation
+	 *
+	 *   +3----+2,3' Q12----Q22
+	 *   |    /|     |    /|
+	 *   |   / |     |   / |
+	 *   |  /  |     |  /  |
+	 *   | /   |     | /   |
+	 *   |/    |     |/    |
+	 *   1-----2'    Q11---Q21        */
+
+	/*Intermediaries*/
+	double area,area_1,area_2,area_3;
+
+	/*Checks*/
+	_assert_(x2>x1 && y2>y1);
+	_assert_(x<=x2 && x>=x1 && y<=y2 && y>=y1);
+
+	/*area of the rectangle*/
+	area=(x2-x1)*(y2-y1);
+
+	/*is it the upper left triangle?*/
+	if ((x-x1)/(x2-x1)<(y-y1)/(y2-y1)){
+
+		area_1=((y2-y)*(x2-x1))/area;
+		area_2=((x-x1)*(y2-y1))/area;
+		area_3=1-area_1-area_2;
+
+		return area_1*Q11+area_2*Q22+area_3*Q12;
+	}
+	else {
+
+		area_1=((y-y1)*(x2-x1))/area;
+		area_2=((x2-x)*(y2-y1))/area;
+		area_3=1-area_1-area_2;
+
+		return area_1*Q22+area_2*Q11+area_3*Q21;
+	}
+}/*}}}*/
+/*bilinearinterp{{{*/
+double bilinearinterp(double x1,double x2,double y1,double y2,double Q11,double Q12,double Q21,double Q22,double x,double y){
+	/*Bilinear  interpolation: (http://en.wikipedia.org/wiki/Bilinear_interpolation) */
+
+	/*    Q12    R2        Q22
+	 * y2 x------x---------x
+	 *    |      |         |
+	 *    |      |         |
+	 *    |      +P        |
+	 *    |      |         |
+	 *    |Q11   R1        Q21
+	 * y1 x------x---------x
+	 *    x1               x2
+	 *
+	 */
+
+	/*Checks*/
+	_assert_(x2>x1 && y2>y1);
+	_assert_(x<=x2 && x>=x1 && y<=y2 && y>=y1);
+
+	return
+	  +Q11*(x2-x)*(y2-y)/((x2-x1)*(y2-y1))
+	  +Q21*(x-x1)*(y2-y)/((x2-x1)*(y2-y1))
+	  +Q12*(x2-x)*(y-y1)/((x2-x1)*(y2-y1))
+	  +Q22*(x-x1)*(y-y1)/((x2-x1)*(y2-y1));
+}
+/*}}}*/
+/*nearestinterp{{{*/
+double nearestinterp(double x1,double x2,double y1,double y2,double Q11,double Q12,double Q21,double Q22,double x,double y){
+	/*Nearest neighbor interpolation*/
+
+	/*    Q12             Q22
+	 * y2 x--------x---------x
+	 *    |        |         |
+	 *    |        |  xP     |
+	 * ym |--------+---------|
+	 *    |        |         |
+	 *    |        |         |
+	 * y1 x--------x---------x Q21
+	 *    x1       xm        x2
+	 *
+	 */
+	/*Checks*/
+	_assert_(x2>x1 && y2>y1);
+	_assert_(x<=x2 && x>=x1 && y<=y2 && y>=y1);
+
+	double xm=(x2-x1)/2;
+	double ym=(y2-y1)/2;
+
+	if (x<xm && y<ym) return Q11;
+	if (x<xm && y>ym) return Q12;
+	if (x>xm && y<ym) return Q21;
+	else return Q22;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromGridToMeshx/InterpFromGridToMeshx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromGridToMeshx/InterpFromGridToMeshx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromGridToMeshx/InterpFromGridToMeshx.h	(revision 27955)
@@ -0,0 +1,36 @@
+/*!\file InterpFromGridToMeshx.h
+ * \brief: header file for Data interpolation routines.
+ */
+
+#ifndef _INTERPFROMGRIDTOMESHX_H
+#define _INTERPFROMGRIDTOMESHX_H
+
+#include "../../classes/classes.h"
+#include "../../toolkits/toolkits.h"
+#include "../../shared/shared.h"
+
+/*threading: */
+typedef struct{
+	double*             x;
+	int                 x_rows;
+	double*             y;
+	int                 y_rows;
+	double*             data;
+	double              default_value;
+	const char*         interp;
+	int                 M;
+	int                 N;
+	int                 nods;
+	double*             x_mesh;
+	double*             y_mesh;
+	IssmSeqVec<IssmPDouble>* data_mesh;
+} InterpFromGridToMeshxThreadStruct;
+
+int    InterpFromGridToMeshx(IssmSeqVec<IssmPDouble>** pdata_mesh,double* x, int x_rows, double* y, int y_rows, double* data, int M, int N, double* x_mesh, double* y_mesh, int nods, double default_value, const char* interptype);
+void*  InterpFromGridToMeshxt(void* vInterpFromGridToMeshxThreadStruct);
+bool   findindices(int* pn,int* pm,double* x,int x_rows, double* y,int y_rows, double xgrid,double ygrid);
+double triangleinterp(double x1,double x2,double y1,double y2,double Q11,double Q12,double Q21,double Q22,double x,double y);
+double bilinearinterp(double x1,double x2,double y1,double y2,double Q11,double Q12,double Q21,double Q22,double x,double y);
+double nearestinterp(double x1,double x2,double y1,double y2,double Q11,double Q12,double Q21,double Q22,double x,double y);
+
+#endif /* _INTERPFROMGRIDTOMESHX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dx.cpp	(revision 27955)
@@ -0,0 +1,105 @@
+/*!\file:  InterpFromMesh2dx.cpp
+ * \brief  "c" core code for interpolating values from a structured grid.
+ */ 
+
+#include "./InterpFromMesh2dx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "../ContourToNodesx/ContourToNodesx.h"
+
+int InterpFromMesh2dx(IssmSeqVec<IssmPDouble>** pdata_prime,
+			int* index_data, double* x_data, double* y_data, int nods_data,int nels_data, double* data, int data_length,
+			double* x_prime, double* y_prime, int nods_prime,
+			double* default_values,int num_default_values,Contour<IssmPDouble>** contours,int numcontours){
+
+	/*Output*/
+	IssmSeqVec<IssmPDouble>* data_prime=NULL;
+
+	/*Intermediary*/
+	int    i;
+	int    interpolation_type;
+	bool   debug;
+	double xmin,xmax;
+	double ymin,ymax;
+
+	/*contours: */
+	double *incontour     = NULL;
+
+	/*some checks*/
+	if (nels_data<1 || nods_data<3 || nods_prime==0){
+		_error_("nothing to be done according to the mesh given in input");
+	}
+
+	/*Set debug to 1 if there are lots of elements*/
+	debug=(bool)((double)nels_data*(double)nods_prime >= pow((double)10,(double)9));
+
+	/*figure out what kind of interpolation is needed*/
+	if (data_length==nods_data){
+		interpolation_type=1;
+	}
+	else if (data_length==nels_data){
+		interpolation_type=2;
+	}
+	else{
+		_error_("length of vector data not supported yet. It should be of length (number of nodes) or (number of elements)!");
+	}
+
+	if((numcontours) && (interpolation_type==2)){
+		_error_("element interpolation_type with contours not supported yet!");
+	}
+
+	/*Get prime mesh extrema coordinates*/
+	xmin=x_prime[0]; xmax=x_prime[0];ymin=y_prime[0]; ymax=y_prime[0];
+	for (i=1;i<nods_prime;i++){
+		if (x_prime[i]<xmin) xmin=x_prime[i];
+		if (x_prime[i]>xmax) xmax=x_prime[i];
+		if (y_prime[i]<ymin) ymin=y_prime[i];
+		if (y_prime[i]>ymax) ymax=y_prime[i];
+	}
+
+	/*Initialize output*/
+	data_prime=new IssmSeqVec<IssmPDouble>(nods_prime);
+	if(num_default_values){
+		if(num_default_values==1)for (i=0;i<nods_prime;i++) data_prime->SetValue(i,default_values[0],INS_VAL);
+		else for (i=0;i<nods_prime;i++) data_prime->SetValue(i,default_values[i],INS_VAL);
+	}
+
+	/*Build indices of contour: */
+	if(numcontours){
+		ContourToNodesx( &incontour,x_prime,y_prime,nods_prime,contours,numcontours,1);
+	}
+	else{
+		 incontour=xNew<double>(nods_prime);
+		 for (i=0;i<nods_prime;i++) incontour[i]=1.0;
+	}
+
+	/*initialize thread parameters: */
+	InterpFromMesh2dxThreadStruct gate;
+	gate.interpolation_type = interpolation_type;
+	gate.debug              = debug;
+	gate.nels_data          = nels_data;
+	gate.index_data         = index_data;
+	gate.x_data             = x_data;
+	gate.y_data             = y_data;
+	gate.data               = data;
+	gate.xmin               = xmin;
+	gate.xmax               = xmax;
+	gate.ymin               = ymin;
+	gate.ymax               = ymax;
+	gate.nods_prime         = nods_prime;
+	gate.data_prime         = data_prime;
+	gate.x_prime            = x_prime;
+	gate.y_prime            = y_prime;
+	gate.default_values     = default_values;
+	gate.num_default_values = num_default_values;
+	gate.incontour          = incontour;
+
+	/*launch the thread manager with InterpFromGridToMeshxt as a core: */
+	LaunchThread(InterpFromMesh2dxt,(void*)&gate,_NUMTHREADS_);
+
+	/*Assign output pointers:*/
+	 xDelete<double>(incontour);
+	*pdata_prime=data_prime;
+	return 1;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dx.h	(revision 27955)
@@ -0,0 +1,38 @@
+/*!\file InterpFromMesh2dx.h
+ * \brief: header file for Data interpolation routines.
+ */
+
+#ifndef _INTERPFROMMESH2DX_H
+#define _INTERPFROMMESH2DX_H
+
+#include "../../classes/classes.h"
+#include "../../toolkits/toolkits.h"
+
+/*threading: */
+typedef struct{
+
+	int                 interpolation_type;
+	bool                debug;
+	int                 nels_data;
+	int                *index_data;
+	double              *x_data;
+	double              *y_data;
+	double              *data;
+	double              xmin,xmax;
+	double              ymin,ymax;
+	int                 nods_prime;
+	IssmSeqVec<IssmPDouble> *data_prime;
+	double              *x_prime;
+	double              *y_prime;
+	double              *default_values;
+	int                 num_default_values;
+	double              *incontour;
+
+} InterpFromMesh2dxThreadStruct;
+
+int InterpFromMesh2dx(IssmSeqVec<IssmPDouble>** pdata_prime,int* index_data, double* x_data, double* y_data, int nods_data,int nels_data, double* data, int data_length, double* x_prime, double* y_prime, int nods_prime,
+		double* default_values,int num_default_values,Contour<IssmPDouble>** contours,int numcontours);
+
+void* InterpFromMesh2dxt(void* vInterpFromMesh2dxThreadStruct);
+
+#endif /* _INTERPFROMMESH2DX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dxt.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dxt.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dxt.cpp	(revision 27955)
@@ -0,0 +1,103 @@
+/*!\file:  InterpFromMesh2dxt.cpp
+ * \brief  thread core for InterpFromMesh2dxt code
+ */ 
+
+#include "./InterpFromMesh2dx.h"
+#include "../../shared/shared.h"
+
+void* InterpFromMesh2dxt(void* vpthread_handle){
+
+	/*intermediary: */
+	int     i0,i1,i,j;
+	double  area,area_1,area_2,area_3;
+	double  data_value;
+
+	/*recover handle and gate: */
+	pthread_handle                *handle      = (pthread_handle*)vpthread_handle;
+	InterpFromMesh2dxThreadStruct *gate        = (InterpFromMesh2dxThreadStruct*)handle->gate;
+	int                            my_thread   = handle->id;
+	int                            num_threads = handle->num;
+
+	/*recover parameters :*/
+	int     interpolation_type      = gate->interpolation_type;
+	bool    debug                   = gate->debug;
+	int     nels_data               = gate->nels_data;
+	int    *index_data              = gate->index_data;
+	double *x_data                  = gate->x_data;
+	double *y_data                  = gate->y_data;
+	double *data                    = gate->data;
+	double  xmin                    = gate->xmin;
+	double  xmax                    = gate->xmax;
+	double  ymin                    = gate->ymin;
+	double  ymax                    = gate->ymax;
+	int     nods_prime              = gate->nods_prime;
+	IssmSeqVec<IssmPDouble>* data_prime = gate->data_prime;
+	double *x_prime                 = gate->x_prime;
+	double *y_prime                 = gate->y_prime;
+	double *default_values          = gate->default_values;
+	int     num_default_values      = gate->num_default_values;
+	double *incontour               = gate->incontour;
+
+	/*partition loop across threads: */
+	PartitionRange(&i0,&i1,nels_data,num_threads,my_thread);
+
+	/*Loop over the elements*/
+	for(i=i0;i<i1;i++){
+
+		/*display current iteration*/
+		if (debug && my_thread==0 && fmod((double)i,(double)100)==0)
+		 _printf_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(i-i0)/double(i1-i0)*100<<"%   ");
+
+		/*if there is no point inside the domain, go to next iteration*/
+		if ( (x_data[index_data[3*i+0]-1]<xmin) && (x_data[index_data[3*i+1]-1]<xmin) && (x_data[index_data[3*i+2]-1]<xmin)) continue;
+		if ( (x_data[index_data[3*i+0]-1]>xmax) && (x_data[index_data[3*i+1]-1]>xmax) && (x_data[index_data[3*i+2]-1]>xmax)) continue;
+		if ( (y_data[index_data[3*i+0]-1]<ymin) && (y_data[index_data[3*i+1]-1]<ymin) && (y_data[index_data[3*i+2]-1]<ymin)) continue;
+		if ( (y_data[index_data[3*i+0]-1]>ymax) && (y_data[index_data[3*i+1]-1]>ymax) && (y_data[index_data[3*i+2]-1]>ymax)) continue;
+
+		/*get area of the current element (Jacobian = 2 * area)*/
+		//area =x2 * y3 - y2*x3 + x1 * y2 - y1 * x2 + x3 * y1 - y3 * x1;
+		area=x_data[index_data[3*i+1]-1]*y_data[index_data[3*i+2]-1]-y_data[index_data[3*i+1]-1]*x_data[index_data[3*i+2]-1]
+		  +  x_data[index_data[3*i+0]-1]*y_data[index_data[3*i+1]-1]-y_data[index_data[3*i+0]-1]*x_data[index_data[3*i+1]-1]
+		  +  x_data[index_data[3*i+2]-1]*y_data[index_data[3*i+0]-1]-y_data[index_data[3*i+2]-1]*x_data[index_data[3*i+0]-1];
+
+		/*loop over the prime nodes*/
+		for (j=0;j<nods_prime;j++){
+
+			if(incontour[j]){
+
+				/*Get first area coordinate = det(x-x3  x2-x3 ; y-y3   y2-y3)/area*/
+				area_1=((x_prime[j]-x_data[index_data[3*i+2]-1])*(y_data[index_data[3*i+1]-1]-y_data[index_data[3*i+2]-1]) 
+						-  (y_prime[j]-y_data[index_data[3*i+2]-1])*(x_data[index_data[3*i+1]-1]-x_data[index_data[3*i+2]-1]))/area;
+				/*Get second area coordinate =det(x1-x3  x-x3 ; y1-y3   y-y3)/area*/
+				area_2=((x_data[index_data[3*i+0]-1]-x_data[index_data[3*i+2]-1])*(y_prime[j]-y_data[index_data[3*i+2]-1]) 
+						- (y_data[index_data[3*i+0]-1]-y_data[index_data[3*i+2]-1])*(x_prime[j]-x_data[index_data[3*i+2]-1]))/area;
+				/*Get third area coordinate = 1-area1-area2*/
+				area_3=1-area_1-area_2;
+
+				/*is the current point in the current element?*/
+				if (area_1>=-1.e-8 && area_2>=-1.e-8 && area_3>=-1.e-8){
+
+					/*Yes ! compute the value on the point*/
+					if (interpolation_type==1){
+						/*nodal interpolation*/
+						data_value=area_1*data[index_data[3*i+0]-1]+area_2*data[index_data[3*i+1]-1]+area_3*data[index_data[3*i+2]-1];
+					}
+					else{
+						/*element interpolation*/
+						data_value=data[i];
+					}
+					if (xIsNan<IssmPDouble>(data_value)){
+						if(num_default_values==1) data_value=default_values[0];
+						else data_value=default_values[j];
+					}
+
+					/*insert value and go to the next point*/
+					data_prime->SetValue(j,data_value,INS_VAL);
+				}
+			}
+		}
+	}
+	if(debug && my_thread==0)
+	 _printf_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+	return NULL;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMeshToGridx/InterpFromMeshToGridx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMeshToGridx/InterpFromMeshToGridx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMeshToGridx/InterpFromMeshToGridx.cpp	(revision 27955)
@@ -0,0 +1,150 @@
+/*!\file:  InterpFromMeshToGridx.cpp
+ * \brief  "c" core code for interpolating values from a structured grid.
+ */ 
+
+#include "./InterpFromMeshToGridx.h"
+#include "../../shared/shared.h"
+
+void InterpFromMeshToGridx(double** pgriddata,int* index_mesh, double* x_mesh, double* y_mesh, int nods,int nels, double* data_mesh,int data_length,double* x_grid,double* y_grid,int nlines,int ncols,double default_value){
+
+	/*Intermediary*/
+	int    i1,i2,j1,j2;
+	int    interpolation_type;
+	double area;
+	double area_1,area_2,area_3;
+	double x_tria_min,y_tria_min;
+	double x_tria_max,y_tria_max;
+	double x_grid_min,y_grid_min;
+	double x_grid_max,y_grid_max;
+	double data_value;
+
+	/*some checks*/
+	if(nels<1 || nods<3 || nlines<2 || ncols<2) _error_("nothing to be done according to the mesh given in input");
+
+	/*figure out what kind of interpolation is needed*/
+	if(data_length==nods)      interpolation_type=1;
+	else if(data_length==nels) interpolation_type=2;
+	else _error_("length of vector data not supported yet. It should be of length (number of nodes) or (number of elements)!");
+
+	/*First, prepare output*/
+	double* griddata=xNew<double>(nlines*ncols);
+	for(int i=0;i<nlines;i++) for(int j=0;j<ncols; j++) griddata[i*ncols+j]=default_value;
+
+	/*Set debug to "true" if there are lots of elements*/
+	bool debug=(bool)((double)ncols*nlines*nels >= 5.e10);
+
+	/*figure out if x or y are flipped*/
+	bool xflip = false;
+	bool yflip = false;
+	if(x_grid[1]-x_grid[0]<0) xflip=true;
+	if(y_grid[1]-y_grid[0]<0) yflip=true;
+
+	/*Get min/max coordinates of the grid*/
+	double xposting = x_grid[1]-x_grid[0];
+	double yposting = y_grid[1]-y_grid[0];
+	if(xflip){
+		x_grid_min=x_grid[ncols-1];
+		x_grid_max=x_grid[0];
+	}
+	else{
+		x_grid_min=x_grid[0];
+		x_grid_max=x_grid[ncols-1];
+	}
+	if(yflip){
+		y_grid_min=y_grid[nlines-1];
+		y_grid_max=y_grid[0];
+	}
+	else{
+		y_grid_min=y_grid[0];
+		y_grid_max=y_grid[nlines-1];
+	}
+
+	/*Loop over the elements*/
+	for(int n=0;n<nels;n++){
+
+		/*display current iteration*/
+		if(debug && n%10000==0)
+		 _printf_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(n)/double(nels)*100<<"%   ");
+
+		/*Get extrema coordinates of current elements*/
+		x_tria_min=x_mesh[index_mesh[3*n+0]-1]; x_tria_max=x_tria_min;
+		y_tria_min=y_mesh[index_mesh[3*n+0]-1]; y_tria_max=y_tria_min;
+		for(int i=1;i<3;i++){
+			if(x_mesh[index_mesh[3*n+i]-1]<x_tria_min) x_tria_min=x_mesh[index_mesh[3*n+i]-1];
+			if(x_mesh[index_mesh[3*n+i]-1]>x_tria_max) x_tria_max=x_mesh[index_mesh[3*n+i]-1];
+			if(y_mesh[index_mesh[3*n+i]-1]<y_tria_min) y_tria_min=y_mesh[index_mesh[3*n+i]-1];
+			if(y_mesh[index_mesh[3*n+i]-1]>y_tria_max) y_tria_max=y_mesh[index_mesh[3*n+i]-1];
+		}
+
+		/*if the current triangle is not in the grid, continue*/
+		if( (x_tria_min>x_grid_max) || (x_tria_max<x_grid_min) || (y_tria_min>y_grid_max) || (y_tria_max<y_grid_min) ) continue;
+
+		/*Get indices i and j that form a square around the current triangle*/
+		if(yflip){
+			i1=max(0,       (int)floor((y_tria_max-y_grid_max)/yposting)-1);
+			i2=min(nlines-1,(int)ceil((y_tria_min-y_grid_max)/yposting));
+		}
+		else{
+			i1=max(0,       (int)floor((y_tria_min-y_grid_min)/yposting)-1);
+			i2=min(nlines-1,(int)ceil((y_tria_max-y_grid_min)/yposting));
+		}
+		if(xflip){
+			j1=max(0,      (int)floor((x_tria_max-x_grid_max)/xposting)-1);
+			j2=min(ncols-1,(int)ceil((x_tria_min-x_grid_max)/xposting));
+		}
+		else{
+			j1=max(0,      (int)floor((x_tria_min-x_grid_min)/xposting)-1);
+			j2=min(ncols-1,(int)ceil((x_tria_max-x_grid_min)/xposting));
+		}
+
+		/*get area of the current element (Jacobian = 2 * area)*/
+		//area =x2 * y3 - y2*x3 + x1 * y2 - y1 * x2 + x3 * y1 - y3 * x1;
+		area=x_mesh[index_mesh[3*n+1]-1]*y_mesh[index_mesh[3*n+2]-1]-y_mesh[index_mesh[3*n+1]-1]*x_mesh[index_mesh[3*n+2]-1]
+		  +  x_mesh[index_mesh[3*n+0]-1]*y_mesh[index_mesh[3*n+1]-1]-y_mesh[index_mesh[3*n+0]-1]*x_mesh[index_mesh[3*n+1]-1]
+		  +  x_mesh[index_mesh[3*n+2]-1]*y_mesh[index_mesh[3*n+0]-1]-y_mesh[index_mesh[3*n+2]-1]*x_mesh[index_mesh[3*n+0]-1];
+
+		/*Go through x_grid and y_grid and interpolate if necessary*/
+		for(int i=i1;i<=i2;i++){
+
+			//exit if y not between y_tria_min and y_tria_max
+			if((y_grid[i]>y_tria_max) || (y_grid[i]<y_tria_min)) continue;
+
+			for(int j=j1;j<=j2; j++){
+
+				//exit if x not between x_tria_min and x_tria_max
+				if((x_grid[j]>x_tria_max) || (x_grid[j]<x_tria_min)) continue;
+
+				/*Get first area coordinate = det(x-x3  x2-x3 ; y-y3   y2-y3)/area*/
+				area_1=((x_grid[j]-x_mesh[index_mesh[3*n+2]-1])*(y_mesh[index_mesh[3*n+1]-1]-y_mesh[index_mesh[3*n+2]-1]) 
+							-  (y_grid[i]-y_mesh[index_mesh[3*n+2]-1])*(x_mesh[index_mesh[3*n+1]-1]-x_mesh[index_mesh[3*n+2]-1]))/area;
+				/*Get second area coordinate =det(x1-x3  x-x3 ; y1-y3   y-y3)/area*/
+				area_2=((x_mesh[index_mesh[3*n+0]-1]-x_mesh[index_mesh[3*n+2]-1])*(y_grid[i]-y_mesh[index_mesh[3*n+2]-1]) 
+							- (y_mesh[index_mesh[3*n+0]-1]-y_mesh[index_mesh[3*n+2]-1])*(x_grid[j]-x_mesh[index_mesh[3*n+2]-1]))/area;
+				/*Get third area coordinate = 1-area1-area2*/
+				area_3=1.-area_1-area_2;
+
+				/*is the current point in the current element?*/
+				if(area_1>-1e-12 && area_2>-1e-12 && area_3>-1e-12){
+
+					/*Yes ! compute the value on the point*/
+					if(interpolation_type==1){
+						/*nodal interpolation*/
+						data_value=area_1*data_mesh[index_mesh[3*n+0]-1]+area_2*data_mesh[index_mesh[3*n+1]-1]+area_3*data_mesh[index_mesh[3*n+2]-1];
+					}
+					else{
+						/*element interpolation*/
+						data_value=data_mesh[n];
+					}
+					if (xIsNan<IssmDouble>(data_value)) data_value=default_value;
+
+					/*insert value and go to the next point*/
+					griddata[i*ncols+j]=data_value;
+				}
+			}
+		}
+	}
+	if(debug) _printf_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<fixed<<100.<<"%   \n");
+
+	/*Assign output pointers:*/
+	*pgriddata=griddata;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMeshToGridx/InterpFromMeshToGridx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMeshToGridx/InterpFromMeshToGridx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMeshToGridx/InterpFromMeshToGridx.h	(revision 27955)
@@ -0,0 +1,12 @@
+/*!\file InterpFromMeshToGridx.h
+ * \brief: header file for Data interpolation routines.
+ */
+
+#ifndef _INTERPFROMMESHTOGRIDX_H
+#define _INTERPFROMMESHTOGRIDX_H
+
+#include "../../toolkits/toolkits.h"
+
+void InterpFromMeshToGridx(double** pgriddata,int* index_mesh, double* x_mesh, double* y_mesh, int nods,int nels, double* data_mesh,int data_length,double* x_grid,double* y_grid,int nlines,int ncols,double default_value);
+
+#endif /* _INTERPFROMMESHTOGRIDX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp	(revision 27955)
@@ -0,0 +1,183 @@
+/*!\file InterpFromMeshToMesh2dx
+ */
+
+#include "./InterpFromMeshToMesh2dx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+
+#ifdef _HAVE_BAMG_
+#include "../../bamg/bamgobjects.h"
+using namespace bamg;
+using namespace std;
+#endif
+
+int InterpFromMeshToMesh2dx(double** pdata_interp,int* index_data,double* x_data,double* y_data,int nods_data,int nels_data,
+			double* data,int M_data,int N_data,double* x_interp,double* y_interp,int N_interp,Options* options){
+
+	#ifdef _HAVE_BAMG_
+
+	/*Output*/
+	double* data_interp=NULL;
+
+	/*Intermediary*/
+	double xmin,xmax,ymin,ymax;
+	bool   isdefault;
+	double defaultvalue;
+	R2     r;
+	I2     I;
+	int    i,j,k;
+	int    it;
+	int    i0,i1,i2;
+	double areacoord[3];
+	double aa,bb;
+	long long dete[3];
+	BamgOpts* bamgopts=new BamgOpts();//if necessary debug bamg::Mesh, set bamgopts->verbose>5
+
+	/*Checks*/
+	if (M_data!=nods_data && M_data!=nels_data){
+		_error_("data provided should have either " << nods_data << " or " << nels_data << " lines (not " << M_data << ")");
+	}
+
+	/*Get default*/
+	isdefault = false;
+	if(options){
+		if(options->GetOption("default")){
+			isdefault=true;
+			options->Get(&defaultvalue,"default");
+		}
+	}
+
+	/*Initialize output*/
+	data_interp=xNew<double>(N_interp*N_data);
+
+	/*read background mesh*/
+	bamgopts->verbose=0;
+	Mesh* Th=new Mesh(index_data,x_data,y_data,nods_data,nels_data,bamgopts); 
+
+	/*Get reference number (for subdomains)*/
+	long* reft = xNew<long>(Th->nbt);
+	Th->TriangleReferenceList(reft);
+	Th->CreateSingleVertexToTriangleConnectivity();
+
+	/*Get domain boundaries*/
+	xmin=x_data[0]; ymin=y_data[0];
+	xmax=x_data[0]; ymax=y_data[0];
+	for(i=1;i<nods_data;i++){
+		if(x_data[i]<xmin) xmin=x_data[i];
+		if(x_data[i]>xmax) xmax=x_data[i];
+		if(y_data[i]<ymin) ymin=y_data[i];
+		if(y_data[i]>ymax) ymax=y_data[i];
+	}
+
+	/*Create Single vertex to element connectivity*/
+	int* connectivity = xNew<int>(nods_data);
+	for(i=0;i<nels_data;i++){
+		for(j=0;j<3;j++){
+			k = index_data[i*3+j]-1;
+			_assert_(k>=0 & k<nods_data);
+			connectivity[k]=i;
+		}
+	}
+
+	/*Loop over output nodes*/
+	for(i=0;i<N_interp;i++){
+		//if(i%100==0) _printf_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(i)/double(N_interp)*100.<<"%   ");
+
+		if(isdefault){
+			if(x_interp[i]<xmin || x_interp[i]>xmax || y_interp[i]<ymin || y_interp[i]>ymax){
+				for(j=0;j<N_data;j++) data_interp[i*N_data+j]=defaultvalue;
+				continue;
+			}
+		}
+
+		/*Get current point coordinates*/
+		r.x=x_interp[i]; r.y=y_interp[i];
+		I2 I=Th->R2ToI2(r);
+
+		/*Find triangle holding r/I*/
+		Triangle &tb=*Th->TriangleFindFromCoord(I,dete);
+
+		/*point inside convex*/
+		if (tb.det>0){ 
+
+			/*Area coordinates*/
+			areacoord[0]= reCast<double>(dete[0])/reCast<double>(tb.det);
+			areacoord[1]= reCast<double>(dete[1])/reCast<double>(tb.det);
+			areacoord[2]= reCast<double>(dete[2])/reCast<double>(tb.det);
+			/*3 vertices of the triangle*/
+			i0=Th->GetId(tb[0]);
+			i1=Th->GetId(tb[1]);
+			i2=Th->GetId(tb[2]);
+			/*triangle number*/
+			it=Th->GetId(tb);
+
+			/*Inside convex but outside mesh*/
+			if (reft[it]<0 && isdefault){
+				for(j=0;j<N_data;j++) data_interp[i*N_data+j]=defaultvalue;
+				continue;
+			}
+		}
+		//external point
+		else{
+			if(isdefault){
+				for(j=0;j<N_data;j++) data_interp[i*N_data+j]=defaultvalue;
+				continue;
+			}
+			else{
+				//Get closest adjacent triangle (inside the mesh)
+				AdjacentTriangle ta=CloseBoundaryEdge(I,&tb,aa,bb).Adj();
+				int k=ta;
+				Triangle &tc=*(Triangle*)ta;
+				//Area coordinate
+				areacoord[VerticesOfTriangularEdge[k][1]] = aa;
+				areacoord[VerticesOfTriangularEdge[k][0]] = bb;
+				areacoord[OppositeVertex[k]] = 1 - aa -bb;
+				//3 vertices of the triangle
+				i0=Th->GetId(tc[0]);
+				i1=Th->GetId(tc[1]);
+				i2=Th->GetId(tc[2]);
+				//triangle number
+				it=Th->GetId(tc);
+			}
+		}
+
+		if (M_data==nods_data){
+			for (j=0;j<N_data;j++){
+				data_interp[i*N_data+j]=areacoord[0]*data[N_data*i0+j]+areacoord[1]*data[N_data*i1+j]+areacoord[2]*data[N_data*i2+j];
+			}
+		}
+		else{
+			/*For the P0 implementation*/
+			/*If we fall outside of the convex or outside of the mesh, return NaN*/
+			if(tb.det<0 || reft[it]<0){
+				_assert_(i0>=0 & i0<nods_data);
+				it=connectivity[i0]; //or i1 or i2
+				_assert_(it>=0 && it<nels_data);
+				for(j=0;j<N_data;j++) data_interp[i*N_data+j]=data[N_data*it+j];
+			}
+			else{
+				/*Inside the mesh!*/
+				if(it<0 || it>=nels_data){
+					_error_("Triangle number " << it << " not in [0 " << nels_data
+								<< "], report bug to developers (interpolation point: " <<x_interp[i]<<" "<<y_interp[i]<<")");
+				}
+				for (j=0;j<N_data;j++) data_interp[i*N_data+j]=data[N_data*it+j];
+			}
+		}
+	}
+	//if(N_interp>=100) _printf_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+
+	/*clean-up and return*/
+	delete Th;
+	delete bamgopts;
+	xDelete<long>(reft);
+	xDelete<int>(connectivity);
+	*pdata_interp=data_interp;
+
+	#else
+	_error_("Cannot interpolate without bamg support");
+	#endif
+	return 1;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  InterpFromMeshToMesh2dx.h
+ * \brief header file for Bamg module
+ */ 
+
+#ifndef _INTERPFROMMESHTOMESH2DX_H
+#define _INTERPFROMMESHTOMESH2DX_H
+
+#include "../../classes/classes.h"
+
+int InterpFromMeshToMesh2dx(double** pdata_interp,int* index_data,double* x_data,double* y_data,int nods_data,int nels_data,
+			double* data,int M_data,int N_data,double* x_interp,double* y_interp,int N_interp,Options* options=NULL);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.cpp	(revision 27955)
@@ -0,0 +1,139 @@
+/*!\file:  InterpFromMeshToMesh3dx.cpp
+ * \brief  "c" core code for interpolating values from a structured grid.
+ */ 
+
+#include "./InterpFromMeshToMesh3dx.h"
+#include "../../shared/shared.h"
+
+int InterpFromMeshToMesh3dx( IssmSeqVec<IssmPDouble>** pdata_prime,double* index_data, double* x_data, double* y_data, double* z_data, int nods_data,int nels_data, double* data, int data_length, double* x_prime, double* y_prime, double* z_prime, int nods_prime,double default_value) {
+
+	/*Output*/
+	IssmSeqVec<IssmPDouble>* data_prime=NULL;
+
+	/*Intermediary*/
+	int i,j;
+	int interpolation_type;
+	bool debug;
+	double area;
+	double area_1,area_2,area_3;
+	double zeta,bed,surface;
+	double data_value;
+	double x_prime_min,x_prime_max;
+	double y_prime_min,y_prime_max;
+	double x_tria_min,y_tria_min;
+	double x_tria_max,y_tria_max;
+
+	/*some checks*/
+	if (nels_data<1 || nods_data<6 || nods_prime==0){
+		_error_("nothing to be done according to the mesh given in input");
+	}
+
+	/*Set debug to 1 if there are lots of elements*/
+	debug=(bool)((double)nels_data*(double)nods_prime >= pow((double)10,(double)9));
+
+	/*figure out what kind of interpolation is needed*/
+	if (data_length==nods_data){
+		interpolation_type=1;
+	}
+	else if (data_length==nels_data){
+		interpolation_type=2;
+	}
+	else{
+		_error_("length of vector data not supported yet. It should be of length (number of nodes) or (number of elements)!");
+	}
+
+	/*Get prime mesh extrema coordinates*/
+	x_prime_min=x_prime[0]; x_prime_max=x_prime[0];y_prime_min=y_prime[0]; y_prime_max=y_prime[0];
+	for (i=1;i<nods_prime;i++){
+		if (x_prime[i]<x_prime_min) x_prime_min=x_prime[i];
+		if (x_prime[i]>x_prime_max) x_prime_max=x_prime[i];
+		if (y_prime[i]<y_prime_min) y_prime_min=y_prime[i];
+		if (y_prime[i]>y_prime_max) y_prime_max=y_prime[i];
+	}
+
+	/*Initialize output*/
+	data_prime=new IssmSeqVec<IssmPDouble>(nods_prime);
+	for (i=0;i<nods_prime;i++) data_prime->SetValue(i,default_value,INS_VAL);
+
+	/*Loop over the elements*/
+	for (i=0;i<nels_data;i++){
+
+		/*display current iteration*/
+		if (debug && fmod((double)i,(double)100)==0)
+		 _printf_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(i)/double(nels_data)*100<<"%   ");
+
+		/*Get extrema coordinates of current elements*/
+		x_tria_min=x_data[(int)index_data[6*i+0]-1]; x_tria_max=x_tria_min;
+		y_tria_min=y_data[(int)index_data[6*i+0]-1]; y_tria_max=y_tria_min;
+		for (j=1;j<3;j++){
+			if(x_data[(int)index_data[6*i+j]-1]<x_tria_min) x_tria_min=x_data[(int)index_data[6*i+j]-1];
+			if(x_data[(int)index_data[6*i+j]-1]>x_tria_max) x_tria_max=x_data[(int)index_data[6*i+j]-1];
+			if(y_data[(int)index_data[6*i+j]-1]<y_tria_min) y_tria_min=y_data[(int)index_data[6*i+j]-1];
+			if(y_data[(int)index_data[6*i+j]-1]>y_tria_max) y_tria_max=y_data[(int)index_data[6*i+j]-1];
+		}
+
+		/*if there is no point inside the domain, go to next iteration*/
+		if ( x_prime_max < x_tria_min ) continue; 
+		if ( x_prime_min > x_tria_max ) continue; 
+		if ( y_prime_max < y_tria_min ) continue; 
+		if ( y_prime_min > y_tria_max ) continue; 
+
+		/*get area of the current element (Jacobian = 2 * area)*/
+		//area =x2 * y3 - y2*x3 + x1 * y2 - y1 * x2 + x3 * y1 - y3 * x1;
+		area=x_data[(int)index_data[6*i+1]-1]*y_data[(int)index_data[6*i+2]-1]-y_data[(int)index_data[6*i+1]-1]*x_data[(int)index_data[6*i+2]-1]
+		  +  x_data[(int)index_data[6*i+0]-1]*y_data[(int)index_data[6*i+1]-1]-y_data[(int)index_data[6*i+0]-1]*x_data[(int)index_data[6*i+1]-1]
+		  +  x_data[(int)index_data[6*i+2]-1]*y_data[(int)index_data[6*i+0]-1]-y_data[(int)index_data[6*i+2]-1]*x_data[(int)index_data[6*i+0]-1];
+
+		/*loop over the prime nodes*/
+		for (j=0;j<nods_prime;j++){
+
+			/*if the current point is not in the triangle, continue*/
+			if ( x_prime[j] < x_tria_min ) continue; 
+			if ( x_prime[j] > x_tria_max ) continue; 
+			if ( y_prime[j] < y_tria_min ) continue; 
+			if ( y_prime[j] > y_tria_max ) continue; 
+
+			/*Get first area coordinate = det(x-x3  x2-x3 ; y-y3   y2-y3)/area*/
+			area_1=((x_prime[j]-x_data[(int)index_data[6*i+2]-1])*(y_data[(int)index_data[6*i+1]-1]-y_data[(int)index_data[6*i+2]-1]) 
+						-  (y_prime[j]-y_data[(int)index_data[6*i+2]-1])*(x_data[(int)index_data[6*i+1]-1]-x_data[(int)index_data[6*i+2]-1]))/area;
+			/*Get second area coordinate =det(x1-x3  x-x3 ; y1-y3   y-y3)/area*/
+			area_2=((x_data[(int)index_data[6*i+0]-1]-x_data[(int)index_data[6*i+2]-1])*(y_prime[j]-y_data[(int)index_data[6*i+2]-1]) 
+						- (y_data[(int)index_data[6*i+0]-1]-y_data[(int)index_data[6*i+2]-1])*(x_prime[j]-x_data[(int)index_data[6*i+2]-1]))/area;
+			/*Get third area coordinate = 1-area1-area2*/
+			area_3=1-area_1-area_2;
+
+			/*is the current point in the current 2d element?*/
+			if (area_1>=0 && area_2>=0 && area_3>=0){
+
+				/*compute bottom and top height of the element at this 2d position*/
+				bed    =area_1*z_data[(int)index_data[6*i+0]-1]+area_2*z_data[(int)index_data[6*i+1]-1]+area_3*z_data[(int)index_data[6*i+2]-1];
+				surface=area_1*z_data[(int)index_data[6*i+3]-1]+area_2*z_data[(int)index_data[6*i+4]-1]+area_3*z_data[(int)index_data[6*i+5]-1];
+
+				/*Compute zeta*/
+				zeta=2*(z_prime[j]-bed)/(surface-bed)-1;
+
+				if (zeta >=-1 && zeta<=1){
+					if (interpolation_type==1){
+						/*nodal interpolation*/
+						data_value=(1-zeta)/2*(area_1*data[(int)index_data[6*i+0]-1]+area_2*data[(int)index_data[6*i+1]-1]+area_3*data[(int)index_data[6*i+2]-1]) 
+						  +        (1+zeta)/2*(area_1*data[(int)index_data[6*i+3]-1]+area_2*data[(int)index_data[6*i+4]-1]+area_3*data[(int)index_data[6*i+5]-1]);
+					}
+					else{
+						/*element interpolation*/
+						data_value=data[i];
+					}
+					if (xIsNan<IssmPDouble>(data_value)) data_value=default_value;
+
+					/*insert value and go to the next point*/
+					data_prime->SetValue(j,data_value,INS_VAL);
+				}
+			}
+		}
+	}
+	if (debug)
+	 _printf_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+
+	/*Assign output pointers:*/
+	*pdata_prime=data_prime;
+	return 1;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file InterpFromMeshToMesh3dx.h
+ * \brief: header file for Data interpolation routines.
+ */
+
+#ifndef _INTERPFROMMESHTOMESH3DX_H
+#define _INTERPFROMMESHTOMESH3DX_H
+
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+
+int InterpFromMeshToMesh3dx(IssmSeqVec<IssmPDouble>** pdata_prime,double* index_data, double* x_data, double* y_data, double* z_data, int nods_data,int nels_data, double* data, int data_length, double* x_prime, double* y_prime, double* z_prime, int nods_prime,double default_value);
+
+#endif /* _INTERPFROMMESHTOMESH3DX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp	(revision 27955)
@@ -0,0 +1,729 @@
+/*!\file IoModelToConstraintsx
+ * \brief: used in ModelProcessor, to retrieve a nodal vector  and to create corresponding constraints using Constraints objects
+ */
+
+#include "./IoModelToConstraintsx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../ModelProcessorx/ModelProcessorx.h"
+
+void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,const char* spc_name,int analysis_type,int finite_element,int dof){
+
+	/*intermediary: */
+	int         code,vector_layout;
+	IssmDouble *spcdata = NULL;
+	int         M,N;
+
+	/*First of, find the record for the enum, and get code  of data type: */
+	iomodel->SetFilePointerToData(&code, &vector_layout,spc_name);
+	if(code!=7)_error_("expecting a IssmDouble vector for constraints " << spc_name);
+	if(vector_layout!=1)_error_("expecting a nodal vector for constraints " << spc_name);
+
+	/*Fetch vector:*/
+	iomodel->FetchData(&spcdata,&M,&N,spc_name);
+
+	/*Call IoModelToConstraintsx*/
+	IoModelToConstraintsx(constraints,iomodel,spcdata,M,N,analysis_type,finite_element,dof);
+
+	/*Clean up*/
+	xDelete<IssmDouble>(spcdata);
+}
+void IoModelToDynamicConstraintsx(Constraints* constraints,IoModel* iomodel,const char* spc_name,int analysis_type,int finite_element,int dof){
+
+	/*intermediary: */
+	int         code,vector_layout;
+	IssmDouble *spcdata = NULL;
+	int         M,N;
+
+	/*First of, find the record for the enum, and get code  of data type: */
+	iomodel->SetFilePointerToData(&code, &vector_layout,spc_name);
+	if(code!=7)_error_("expecting a IssmDouble vector for constraints " << spc_name);
+	if(vector_layout!=1)_error_("expecting a nodal vector for constraints " << spc_name);
+
+	/*Fetch vector:*/
+	iomodel->FetchData(&spcdata,&M,&N,spc_name);
+
+	/*Call IoModelToConstraintsx*/
+	IoModelToDynamicConstraintsx(constraints,iomodel,spcdata,M,N,analysis_type,finite_element,dof);
+
+	/*Clean up*/
+	xDelete<IssmDouble>(spcdata);
+}
+
+void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof){/*{{{*/
+
+	/*intermediary: */
+	int         i,j,elementnbv,numfacevertices;
+	IssmDouble  value;
+	IssmDouble *times      = NULL;
+	IssmDouble *values     = NULL;
+	bool        spcpresent = false;
+
+	/*Higher-order finite elements*/
+	int   v1,v2;
+	bool *boundaryedge = NULL;
+
+	switch(finite_element){
+		case P1Enum: 
+			/*Nothing else to do*/
+			break;
+		case P1bubbleEnum:
+			switch(iomodel->meshelementtype){
+				case TriaEnum:  elementnbv = 3; break;
+				case TetraEnum: elementnbv = 4; break;
+				case PentaEnum: elementnbv = 6; break;
+				default: _error_("mesh type not supported yet");
+			}
+			break;
+		case P1bubblecondensedEnum: 
+			/*Nothing else to do*/
+			break;
+		case P1xP2Enum:
+		case P1xP3Enum:
+		case P1xP4Enum:
+			EdgesPartitioning(iomodel);
+			break;
+		case P2xP1Enum:
+			EdgesPartitioning(iomodel);
+			break;
+		case P2Enum:
+			EdgesPartitioning(iomodel);
+	      if(iomodel->meshelementtype==PentaEnum) FacesPartitioning(iomodel);
+			EdgeOnBoundaryFlags(&boundaryedge,iomodel);
+			break;
+		case P2bubbleEnum:
+			EdgesPartitioning(iomodel);
+			if(iomodel->meshelementtype==PentaEnum){
+				FacesPartitioning(iomodel);
+			}
+			EdgeOnBoundaryFlags(&boundaryedge,iomodel);
+			switch(iomodel->meshelementtype){
+				case TriaEnum:  elementnbv = 3; break;
+				case TetraEnum: elementnbv = 4; break;
+				case PentaEnum: elementnbv = 6; break;
+				default: _error_("mesh type not supported yet");
+			}
+			break;
+		case P2xP4Enum:
+			EdgesPartitioning(iomodel);
+			FacesPartitioning(iomodel);
+			break;
+		default:
+			_error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet");
+	}
+
+	int count =0;
+	if(M==iomodel->numberofvertices){
+		switch(finite_element){
+			case P1Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				break;
+			case P2Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofedges;i++){
+					if(iomodel->my_edges[i] && boundaryedge[i]){
+						v1 = iomodel->edges[3*i+0]-1;
+						v2 = iomodel->edges[3*i+1]-1;
+						if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
+							constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+i+1,
+											dof,(spcdata[v1]+spcdata[v2])/2.,analysis_type));
+							count++;
+						}
+					}
+				}
+				if(iomodel->meshelementtype==PentaEnum){
+					for(i=0;i<iomodel->numberofverticalfaces;i++){
+						if(iomodel->my_vfaces[i]){
+							value=0.;
+							for(j=0;j<4;j++) value += spcdata[iomodel->verticalfaces[i*4+j] -1]/4.;
+							if(!xIsNan<IssmDouble>(value)){
+								constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+iomodel->numberofedges+i+1,dof,value,analysis_type));
+								count++;
+							}
+						}
+					}
+				}
+				break;
+			case P2bubbleEnum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofedges;i++){
+					if(iomodel->my_edges[i] && boundaryedge[i]){
+						v1 = iomodel->edges[3*i+0]-1;
+						v2 = iomodel->edges[3*i+1]-1;
+						if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
+							constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+i+1,
+											dof,(spcdata[v1]+spcdata[v2])/2.,analysis_type));
+							count++;
+						}
+					}
+				}
+				if(iomodel->meshelementtype==PentaEnum){
+					for(i=0;i<iomodel->numberoffaces;i++){
+						if(iomodel->faces[i*iomodel->facescols+2]==2){/*Vertical quads*/
+							if(iomodel->my_faces[i]){
+								numfacevertices = iomodel->faces[i*iomodel->facescols+3];
+								value=0.;
+								for(j=0;j<numfacevertices;j++){
+									value += spcdata[iomodel->faces[i*iomodel->facescols+4+j] -1];
+								}
+								value = value/reCast<IssmDouble>(numfacevertices);
+								if(!xIsNan<IssmDouble>(value)){
+									constraints->AddObject(new SpcStatic(count+1,
+													iomodel->numberofvertices+iomodel->numberofedges+i+1,
+													dof,value,analysis_type));
+									count++;
+								}
+							}
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofelements;i++){
+					if(iomodel->my_elements[i]){
+						value = spcdata[iomodel->elements[i*elementnbv+0]-1];
+						for(j=1;j<elementnbv;j++) value += spcdata[iomodel->elements[i*elementnbv+j]-1];
+						value = value/reCast<IssmDouble,int>(elementnbv+0);
+						if(!xIsNan<IssmDouble>(value)){
+							int nodeid = iomodel->numberofvertices+iomodel->numberofedges+i+1;
+							if(iomodel->meshelementtype==PentaEnum){
+								nodeid += iomodel->numberoffaces;
+							}
+							constraints->AddObject(new SpcStatic(count+1,nodeid,dof,value,analysis_type));
+							count++;
+						}
+					}
+				}
+				break;
+			case P2xP4Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofedges;i++){
+					if(iomodel->my_edges[i]){
+						v1 = iomodel->edges[3*i+0]-1;
+						v2 = iomodel->edges[3*i+1]-1;
+						if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
+							constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+i+1,
+											dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type));
+							count++;
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofverticaledges;i++){
+					if(iomodel->my_vedges[i]){
+						v1 = iomodel->verticaledges[2*i+0]-1;
+						v2 = iomodel->verticaledges[2*i+1]-1;
+						if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
+							/*FIXME: should not be 1/2 but 1/4 and 3/4!*/
+							constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+iomodel->numberofedges+2*i+1,
+											dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type));
+							constraints->AddObject(new SpcStatic(count+2,iomodel->numberofvertices+iomodel->numberofedges+2*i+2,
+											dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type));
+							count=count+2;
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofverticalfaces;i++){
+					if(iomodel->my_vfaces[i]){
+						value=0.;
+						for(j=0;j<4;j++) value += spcdata[iomodel->verticalfaces[i*4+j]-1]/4.;
+						if(!xIsNan<IssmDouble>(value)){
+							constraints->AddObject(new SpcStatic(count+1,
+											iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*i+1,
+											dof,value,analysis_type));
+							constraints->AddObject(new SpcStatic(count+2,
+											iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*i+2,
+											dof,value,analysis_type));
+							constraints->AddObject(new SpcStatic(count+3,
+											iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*i+3,
+											dof,value,analysis_type));
+							count=count+3;
+						}
+					}
+				}
+				break;
+			case P1bubbleEnum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofelements;i++){
+					if(iomodel->my_elements[i]){
+						value = spcdata[iomodel->elements[i*elementnbv+0]-1];
+						for(j=1;j<elementnbv;j++) value += spcdata[iomodel->elements[i*elementnbv+j]-1];
+						value = value/reCast<IssmDouble,int>(elementnbv+0);
+						if(!xIsNan<IssmDouble>(value)){
+							constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+i+1,
+											dof,value,analysis_type));
+							count++;
+						}
+					}
+				}
+				break;
+			case P1bubblecondensedEnum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				break;
+			case P1xP2Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofverticaledges;i++){
+					if(iomodel->my_vedges[i]){
+						v1 = iomodel->verticaledges[2*i+0]-1;
+						v2 = iomodel->verticaledges[2*i+1]-1;
+						if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
+							constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+i+1,dof,(spcdata[v1]+spcdata[v2])/2.,analysis_type));
+							count++;
+						}
+					}
+				}
+				break;
+			case P1xP3Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofverticaledges;i++){
+					if(iomodel->my_vedges[i]){
+						v1 = iomodel->verticaledges[2*i+0]-1;
+						v2 = iomodel->verticaledges[2*i+1]-1;
+						if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
+							constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+2*i+1,
+											dof,2./3.*spcdata[v1]+1./3.*spcdata[v2],analysis_type));
+							constraints->AddObject(new SpcStatic(count+2,iomodel->numberofvertices+2*i+2,
+											dof,1./3.*spcdata[v1]+2./3.*spcdata[v2],analysis_type));
+							count=count+2;
+						}
+					}
+				}
+				break;
+			case P1xP4Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofverticaledges;i++){
+					if(iomodel->my_vedges[i]){
+						v1 = iomodel->verticaledges[2*i+0]-1;
+						v2 = iomodel->verticaledges[2*i+1]-1;
+						if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
+							constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+3*i+1,
+											dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type));
+							constraints->AddObject(new SpcStatic(count+2,iomodel->numberofvertices+3*i+2,
+											dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type));
+							constraints->AddObject(new SpcStatic(count+3,iomodel->numberofvertices+3*i+3,
+											dof,1./2.*spcdata[v1]+1./2.*spcdata[v2],analysis_type));
+							count=count+3;
+						}
+					}
+				}
+				break;
+			case P2xP1Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(count+1,i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofhorizontaledges;i++){
+					if(iomodel->my_hedges[i]){
+						v1 = iomodel->horizontaledges[2*i+0]-1;
+						v2 = iomodel->horizontaledges[2*i+1]-1;
+						if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
+							constraints->AddObject(new SpcStatic(count+1,iomodel->numberofvertices+i+1,dof,(spcdata[v1]+spcdata[v2])/2.,analysis_type));
+							count++;
+						}
+					}
+				}
+				break;
+			default:
+				_error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet");
+		}
+	}
+	else if (M==(iomodel->numberofvertices+1)){
+		/*transient: create transient SpcTransient objects. Same logic, except we need to retrieve 
+		 * various times and values to initialize an SpcTransient object: */
+
+		/*figure out times: */
+		times=xNew<IssmDouble>(N);
+		for(j=0;j<N;j++) times[j]=spcdata[(M-1)*N+j];
+
+		switch(finite_element){
+			case P1Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+
+						/*figure out times and values: */
+						values=xNew<IssmDouble>(N);
+						spcpresent=false;
+						for(j=0;j<N;j++){
+							values[j]=spcdata[i*N+j];
+							if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
+						}
+
+						if(spcpresent){
+							constraints->AddObject(new SpcTransient(count+1,i+1,dof,N,times,values,analysis_type));
+							count++;
+						}
+						xDelete<IssmDouble>(values);
+					}
+				}
+				break;
+			case P2Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+
+						/*figure out times and values: */
+						values=xNew<IssmDouble>(N);
+						spcpresent=false;
+						for(j=0;j<N;j++){
+							values[j]=spcdata[i*N+j];
+							if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
+						}
+						if(iomodel->meshelementtype==PentaEnum){ _error_("need to add nodes on faces! (See Spcstatic above)");}
+
+						if(spcpresent){
+							constraints->AddObject(new SpcTransient(count+1,i+1,dof,N,times,values,analysis_type));
+							count++;
+						}
+						xDelete<IssmDouble>(values);
+					}
+				}
+				for(i=0;i<iomodel->numberofedges;i++){
+					if(iomodel->my_edges[i]){
+						v1 = iomodel->edges[3*i+0]-1;
+						v2 = iomodel->edges[3*i+1]-1;
+						values=xNew<IssmDouble>(N);
+						spcpresent=false;
+						for(j=0;j<N;j++){
+							values[j]=(spcdata[v1*N+j]+spcdata[v2*N+j])/2.;
+							if(!xIsNan<IssmDouble>(values[j])) spcpresent=true; //NaN means no spc by default
+						}
+						if(spcpresent){
+							constraints->AddObject(new SpcTransient(count+1,iomodel->numberofvertices+i+1,dof,N,times,values,analysis_type));
+							count++;
+						}
+						xDelete<IssmDouble>(values);
+					}
+				}
+				break;
+			case P1xP2Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+
+						/*figure out times and values: */
+						values=xNew<IssmDouble>(N);
+						spcpresent=false;
+						for(j=0;j<N;j++){
+							values[j]=spcdata[i*N+j];
+							if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
+						}
+
+						if(spcpresent){
+							constraints->AddObject(new SpcTransient(count+1,i+1,dof,N,times,values,analysis_type));
+							count++;
+						}
+						xDelete<IssmDouble>(values);
+					}
+				}
+				for(i=0;i<iomodel->numberofverticaledges;i++){
+					if(iomodel->my_vedges[i]){
+						v1 = iomodel->verticaledges[2*i+0]-1;
+						v2 = iomodel->verticaledges[2*i+1]-1;
+						values=xNew<IssmDouble>(N);
+						spcpresent=false;
+						for(j=0;j<N;j++){
+							values[j]=(spcdata[v1*N+j]+spcdata[v2*N+j])/2.;
+							if(!xIsNan<IssmDouble>(values[j])) spcpresent=true; //NaN means no spc by default
+						}
+						if(spcpresent){
+							constraints->AddObject(new SpcTransient(count+1,iomodel->numberofvertices+i+1,dof,N,times,values,analysis_type));
+							count++;
+						}
+						xDelete<IssmDouble>(values);
+					}
+				}
+				break;
+			case P1xP3Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+
+						/*figure out times and values: */
+						values=xNew<IssmDouble>(N);
+						spcpresent=false;
+						for(j=0;j<N;j++){
+							values[j]=spcdata[i*N+j];
+							if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
+						}
+
+						if(spcpresent){
+							constraints->AddObject(new SpcTransient(count+1,i+1,dof,N,times,values,analysis_type));
+							count++;
+						}
+						xDelete<IssmDouble>(values);
+					}
+				}
+				for(i=0;i<iomodel->numberofverticaledges;i++){
+					if(iomodel->my_vedges[i]){
+						v1 = iomodel->verticaledges[2*i+0]-1;
+						v2 = iomodel->verticaledges[2*i+1]-1;
+						values=xNew<IssmDouble>(N);
+						spcpresent=false;
+						for(j=0;j<N;j++){
+							values[j]=2./3.*spcdata[v1*N+j]+1./3.*spcdata[v2*N+j];
+							if(!xIsNan<IssmDouble>(values[j])) spcpresent=true; //NaN means no spc by default
+						}
+						if(spcpresent){
+							constraints->AddObject(new SpcTransient(count+1,iomodel->numberofvertices+2*i+1,dof,N,times,values,analysis_type));
+							count++;
+						}
+						spcpresent=false;
+						for(j=0;j<N;j++){
+							values[j]=1./3.*spcdata[v1*N+j]+2./3.*spcdata[v2*N+j];
+							if(!xIsNan<IssmDouble>(values[j])) spcpresent=true; //NaN means no spc by default
+						}
+						if(spcpresent){
+							constraints->AddObject(new SpcTransient(count+1,iomodel->numberofvertices+2*i+2,dof,N,times,values,analysis_type));
+							count++;
+						}
+						xDelete<IssmDouble>(values);
+					}
+				}
+				break;
+			case P2xP1Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+
+						/*figure out times and values: */
+						values=xNew<IssmDouble>(N);
+						spcpresent=false;
+						for(j=0;j<N;j++){
+							values[j]=spcdata[i*N+j];
+							if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
+						}
+
+						if(spcpresent){
+							constraints->AddObject(new SpcTransient(count+1,i+1,dof,N,times,values,analysis_type));
+							count++;
+						}
+						xDelete<IssmDouble>(values);
+					}
+				}
+				for(i=0;i<iomodel->numberofedges;i++){
+					if(iomodel->edges[i*3+2]!=2){
+						if(iomodel->my_edges[i]){
+							v1 = iomodel->edges[3*i+0]-1;
+							v2 = iomodel->edges[3*i+1]-1;
+							values=xNew<IssmDouble>(N);
+							spcpresent=false;
+							for(j=0;j<N;j++){
+								values[j]=(spcdata[v1*N+j]+spcdata[v2*N+j])/2.;
+								if(!xIsNan<IssmDouble>(values[j])) spcpresent=true; //NaN means no spc by default
+							}
+							if(spcpresent){
+								constraints->AddObject(new SpcTransient(count+1,iomodel->numberofvertices+i+1,dof,N,times,values,analysis_type));
+								count++;
+							}
+							xDelete<IssmDouble>(values);
+						}
+					}
+				}
+				break;
+			default:
+				_error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet");
+		}
+	}
+	else{
+		_error_("Size of spc field not supported");
+	}
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(times);
+	xDelete<IssmDouble>(values);
+	xDelete<bool>(boundaryedge);
+}/*}}}*/
+void IoModelToDynamicConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof){/*{{{*/
+
+	/*intermediary: */
+	int         i,j,elementnbv,numfacevertices;
+	IssmDouble  value;
+	IssmDouble *times            = NULL;
+	IssmDouble *values           = NULL;
+	bool        spcpresent       = false;
+
+	/*Higher-order finite elements*/
+	int   v1,v2;
+	bool *boundaryedge = NULL;
+
+	switch(finite_element){
+		case P1Enum: 
+			/*Nothing else to do*/
+			break;
+		case P1bubbleEnum:
+			switch(iomodel->meshelementtype){
+				case TriaEnum:  elementnbv = 3; break;
+				case TetraEnum: elementnbv = 4; break;
+				case PentaEnum: elementnbv = 6; break;
+				default: _error_("mesh type not supported yet");
+			}
+			break;
+		case P1bubblecondensedEnum: 
+			/*Nothing else to do*/
+			break;
+		case P1xP2Enum:
+			EdgesPartitioning(iomodel);
+			break;
+		case P1xP3Enum:
+			EdgesPartitioning(iomodel);
+			break;
+		case P2xP1Enum:
+			EdgesPartitioning(iomodel);
+			break;
+		case P2Enum:
+			EdgesPartitioning(iomodel);
+			if(iomodel->meshelementtype==PentaEnum){
+				FacesPartitioning(iomodel);
+			}
+			EdgeOnBoundaryFlags(&boundaryedge,iomodel);
+			break;
+		case P2bubbleEnum:
+			EdgesPartitioning(iomodel);
+			if(iomodel->meshelementtype==PentaEnum){
+				FacesPartitioning(iomodel);
+			}
+			EdgeOnBoundaryFlags(&boundaryedge,iomodel);
+			switch(iomodel->meshelementtype){
+				case TriaEnum:  elementnbv = 3; break;
+				case TetraEnum: elementnbv = 4; break;
+				case PentaEnum: elementnbv = 6; break;
+				default: _error_("mesh type not supported yet");
+			}
+			break;
+		case P2xP4Enum:
+			EdgesPartitioning(iomodel);
+			FacesPartitioning(iomodel);
+			break;
+		default:
+			_error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet");
+	}
+
+	int count=0;
+	if(M==iomodel->numberofvertices){
+		switch(finite_element){
+			case P1Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcDynamic(count+1,i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				break;
+			case P1xP2Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcDynamic(count+1,i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofverticaledges;i++){
+					if(iomodel->my_vedges[i]){
+						v1 = iomodel->verticaledges[2*i+0]-1;
+						v2 = iomodel->verticaledges[2*i+1]-1;
+						if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
+							constraints->AddObject(new SpcDynamic(count+1,iomodel->numberofvertices+i+1,dof,(spcdata[v1]+spcdata[v2])/2.,analysis_type));
+							count++;
+						}
+					}
+				}
+				break;
+			case P1xP3Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcDynamic(count+1,i+1,dof,spcdata[i],analysis_type));
+							count++;
+						}
+					}
+				}
+				for(i=0;i<iomodel->numberofverticaledges;i++){
+					if(iomodel->my_vedges[i]){
+						v1 = iomodel->verticaledges[2*i+0]-1;
+						v2 = iomodel->verticaledges[2*i+1]-1;
+						if(!xIsNan<IssmDouble>(spcdata[v1]) && !xIsNan<IssmDouble>(spcdata[v2])){
+							constraints->AddObject(new SpcDynamic(count+1,iomodel->numberofvertices+2*i+1,
+											dof,2./3.*spcdata[v1]+1./3.*spcdata[v2],analysis_type));
+							constraints->AddObject(new SpcDynamic(count+2,iomodel->numberofvertices+2*i+2,
+											dof,1./3.*spcdata[v1]+2./3.*spcdata[v2],analysis_type));
+							count=count+2;
+						}
+					}
+				}
+				break;
+			default:
+				_error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet");
+		}
+	}
+	else{
+		_error_("Size of spc field not supported");
+	}
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(times);
+	xDelete<IssmDouble>(values);
+	xDelete<bool>(boundaryedge);
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.h	(revision 27955)
@@ -0,0 +1,15 @@
+/*!\file:  IoModelToConstraintsx.h
+ */ 
+
+#ifndef _IOMODEL_TO_CONSTRAINTS_H_
+#define _IOMODEL_TO_CONSTRAINTS_H_
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,const char* spc_name,int analysis_type,int finite_element,int dof=0);
+void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof=0);
+void IoModelToDynamicConstraintsx(Constraints* constraints,IoModel* iomodel,const char* spc_name,int analysis_type,int finite_element,int dof=0);
+void IoModelToDynamicConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof=0);
+
+#endif  /* _IOMODELTOELEMENTINPUTX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/KMLFileReadx/KMLFileReadx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/KMLFileReadx/KMLFileReadx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/KMLFileReadx/KMLFileReadx.cpp	(revision 27955)
@@ -0,0 +1,61 @@
+/*!\file KMLFileReadx.cpp
+ */
+
+#include "./KMLFileReadx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+KML_Object* KMLFileReadx(FILE* fid){
+
+	char*   kstr;
+	KML_File*      kxml=NULL;
+	KML_File*      kdtd=NULL;
+	KML_File*      kfil=NULL;
+
+	clock_t clock0,clock1;
+	time_t  time0, time1;
+
+	clock0=clock();
+	time0 =time(NULL);
+	_printf0_("\nKMLFileReadx Module -- " << ctime(&time0));
+
+/*  read kml file  */
+
+	while((kstr=KMLFileToken(fid, NULL,NULL))){
+		if      (!strncmp(kstr,"<?xml"    ,5)) {
+			kxml=new KML_File();
+			KMLFileTagAttrib(kxml,
+							 kstr);
+		}
+		else if (!strncmp(kstr,"<!DOCTYPE",9)) {
+			kdtd=new KML_File();
+			KMLFileTagAttrib(kdtd,
+							 kstr);
+		}
+		else if (!strncmp(kstr,"<kml"     ,4)) {
+			kfil=new KML_File();
+			kfil->Read(fid,kstr);
+//			kfil->DeepEcho();
+		}
+
+//		_printf0_(kstr << "\n");
+		xDelete<char>(kstr);
+	}
+
+	if (kxml) {
+		_printf0_("XML declaration:\n");
+		kxml->DeepEcho("  ");
+		delete kxml;
+	}
+	if (kdtd) {
+		_printf0_("DTD declaration (not yet implemented):\n");
+		kdtd->DeepEcho("  ");
+		delete kdtd;
+	}
+
+	clock1=clock();
+	time1 =time(NULL);
+	_printf_("KMLFileReadx Module -- " <<((double)(clock1-clock0))/CLOCKS_PER_SEC << " CPU seconds; " <<difftime(time1,time0) << " elapsed seconds.\n\n\n");
+
+	return(kfil);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/KMLFileReadx/KMLFileReadx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/KMLFileReadx/KMLFileReadx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/KMLFileReadx/KMLFileReadx.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  KMLFileReadx.h
+ * \brief header file for kml mesh writer routines.
+ */ 
+
+#ifndef _KMLFILEREADX_H
+#define _KMLFILEREADX_H
+
+#include <float.h>    /*  DBL_MAX  */
+#include "../../kml/kmlobjects.h"
+
+/* local prototypes: */
+KML_Object* KMLFileReadx(FILE* fid);
+
+#endif  /* _KMLFILEREADX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/KMLMeshWritex/KMLMeshWritex.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/KMLMeshWritex/KMLMeshWritex.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/KMLMeshWritex/KMLMeshWritex.cpp	(revision 27955)
@@ -0,0 +1,356 @@
+/*!\file KMLMeshWritex
+ */
+
+#include "./KMLMeshWritex.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void KMLMeshWritex(int* ierror,char* name,char* notes,int* elem,int melem,int nelem,int* nodecon,int mncon,int nncon,double* lat, double* lng,int* part,double* data, int mdata, int ndata,double* cmap, int mcmap, int ncmap,FILE* fid){
+
+	int                 i,j,k,ipt=0,jpt=0,nnodes;
+	int                 mxepg      = 25;
+	int                 lwidth     = 1;
+	double              popac      = 0.50;
+	char                indent[81] = " ";
+	char                cstr[81];
+	double             *edata = NULL;
+	bool ncfree=false, edfree=false;
+	KML_Document       *kdoc = NULL;
+	KML_Style          *kstyle;
+	KML_LineStyle      *klsty;
+	KML_PolyStyle      *kpsty;
+
+	clock_t clock0,clock1,clock0a,clock0b,clock0c;
+	time_t  time0, time1, time0a, time0b, time0c;
+
+	clock0=clock();
+	time0 =time(NULL);
+	_printf0_("\nKMLMeshWritex Module -- " << ctime(&time0));
+
+/*  construct kml document  */
+
+	kdoc=new KML_Document();
+	sprintf(kdoc->name      ,"ISSM Mesh: %s",name);
+	kdoc->open      =1;
+	sprintf(kdoc->descript  ,"%s",notes);
+
+/*  write style templates for defaults and for each color of the matlab
+	colormap (note that matlab colormap format is rgb, where each varies
+	from 0 to 1, whereas the kml color format is aabbggrr, where each
+	varies from 00 to ff.)  */
+
+	klsty=new KML_LineStyle();
+	sprintf(klsty->color     ,"ff000000");
+	sprintf(klsty->colormode ,"normal");
+	klsty->width     =lwidth;
+	kpsty=new KML_PolyStyle();
+	sprintf(kpsty->color     ,"%02xffffff",(int)floor(popac*255+0.5));
+	sprintf(kpsty->colormode ,"random");
+	kstyle=new KML_Style();
+	kstyle->AddAttrib("id","BlackLineRandomPoly");
+	kstyle->line      =klsty;
+	kstyle->poly      =kpsty;
+	(kdoc->style     )->AddObject((Object*)kstyle);
+
+	klsty=new KML_LineStyle();
+	sprintf(klsty->color     ,"ff000000");
+	sprintf(klsty->colormode ,"normal");
+	klsty->width     =lwidth;
+	kpsty=new KML_PolyStyle();
+	sprintf(kpsty->color     ,"00ffffff");
+	sprintf(kpsty->colormode ,"random");
+	kstyle=new KML_Style();
+	kstyle->AddAttrib("id","BlackLineEmptyPoly");
+	kstyle->line      =klsty;
+	kstyle->poly      =kpsty;
+	(kdoc->style     )->AddObject((Object*)kstyle);
+
+	klsty=new KML_LineStyle();
+	sprintf(klsty->color     ,"ff0000ff");
+	sprintf(klsty->colormode ,"normal");
+	klsty->width     =lwidth;
+	kpsty=new KML_PolyStyle();
+	sprintf(kpsty->color     ,"%02x0000ff",(int)floor(popac*255+0.5));
+	sprintf(kpsty->colormode ,"random");
+	kstyle=new KML_Style();
+	kstyle->AddAttrib("id","RedLineRedPoly");
+	kstyle->line      =klsty;
+	kstyle->poly      =kpsty;
+	(kdoc->style     )->AddObject((Object*)kstyle);
+
+	if (cmap) {
+		_printf0_("Writing " << mcmap << " Matlab colors as KML style templates.\n");
+		ipt=0;
+		for (i=0; i<mcmap; i++) {
+			klsty=new KML_LineStyle();
+//			sprintf(klsty->color     ,"ff000000");
+			sprintf(klsty->color     ,"%02x%02x%02x%02x",
+					(int)255,
+					(int)floor(cmap[ipt+2]*255+0.5),
+					(int)floor(cmap[ipt+1]*255+0.5),
+					(int)floor(cmap[ipt  ]*255+0.5));
+			sprintf(klsty->colormode ,"normal");
+			klsty->width     =lwidth;
+			kpsty=new KML_PolyStyle();
+			sprintf(kpsty->color     ,"%02x%02x%02x%02x",
+					(int)floor(popac*255+0.5),
+					(int)floor(cmap[ipt+2]*255+0.5),
+					(int)floor(cmap[ipt+1]*255+0.5),
+					(int)floor(cmap[ipt  ]*255+0.5));
+			sprintf(kpsty->colormode ,"normal");
+			kstyle=new KML_Style();
+			sprintf(cstr,"MatlabColor%d",i+1);
+			kstyle->AddAttrib("id",cstr);
+			kstyle->line      =klsty;
+			kstyle->poly      =kpsty;
+			(kdoc->style     )->AddObject((Object*)kstyle);
+			ipt+=ncmap;
+		}
+	}
+//	kdoc->DeepEcho();
+
+/*  create the node connectivity table, if necessary
+	(noting that rows do not need to be sorted, since the elements
+	are consecutively numbered)  */
+
+	if (!nodecon) {
+		_printf0_("Creating the node connectivity table.\n");
+		nncon=mxepg+1;
+		nodecon=xNewZeroInit<int>(mncon*nncon);
+		ncfree=true;
+
+		jpt=0;
+		for (i=0; i<melem; i++) {
+			for (j=0; j<nelem; j++) {
+				if (elem[jpt]) {
+					ipt=(elem[jpt]-1)*nncon;
+					if (nodecon[ipt+(nncon-1)] < mxepg) {
+						nodecon[ipt+nodecon[ipt+(nncon-1)]]=i+1;
+						nodecon[ipt+(nncon-1)]++;
+					}
+					else
+						_error_("Nodal connectivity table needs more than specified " << mxepg << " columns.\n");
+				}
+				jpt++;
+			}
+		}
+	}
+
+/*  average nodal data to element data, if necessary
+	(noting that multiple columns of data are handled here, but not
+	yet below)  */
+
+	if (data) {
+		if      (mdata == melem)
+			edata=data;
+
+		else if (mdata == mncon) {
+			_printf0_("Averaging nodal data to element data.\n");
+			edata=xNewZeroInit<double>(melem*ndata);
+			edfree=true;
+
+			ipt=0;
+			jpt=0;
+			for (i=0; i<melem; i++) {
+				nnodes=0;
+				for (j=0; j<nelem; j++) {
+					if (elem[jpt]) {
+						for (k=0; k<ndata; k++)
+							edata[ipt+k]+=data[(elem[jpt]-1)*ndata+k];
+						nnodes++;
+					}
+					jpt++;
+				}
+				if (nnodes)
+					for (k=0; k<ndata; k++)
+						edata[ipt+k]/=(double)nnodes;
+				ipt+=ndata;
+			}
+		}
+
+		else
+			_error_("Data matrix has incorrect number of " << mdata << " rows.\n");
+	}
+
+/*  write folder for mesh  */
+
+	(kdoc ->feature   )->AddObject((Object*)KMLMeshElem(elem,melem,nelem,
+														nodecon,mncon,nncon,
+														lat,lng,
+														edata,
+														cmap,mcmap,ncmap));
+
+	if(edfree) xDelete<double>(edata);
+	if(ncfree) xDelete<int>(nodecon);
+	clock0a=clock();
+	time0a =time(NULL);
+	_printf_("  Constructed kml document -- " << ((double)(clock0a-clock0))/CLOCKS_PER_SEC << " CPU seconds; " << difftime(time0a,time0) << " elapsed seconds.\n\n\n");
+
+/*  write kml file  */
+
+	_printf0_("Writing kml document to file.\n");
+	fprintf(fid,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+	fprintf(fid,"<kml xmlns=\"http://www.opengis.net/kml/2.2\">\n");
+	kdoc->Write(fid,indent);
+	fprintf(fid,"</kml>\n");
+	clock0b=clock();
+	time0b =time(NULL);
+	_printf_("  Wrote kml file -- " << ((double)(clock0b-clock0a))/CLOCKS_PER_SEC << " CPU seconds; " << difftime(time0b,time0a) << " elapsed seconds.\n\n\n");
+
+	_printf0_("Deleting kml document.\n");
+	delete kdoc;
+	clock0c=clock();
+	time0c =time(NULL);
+	_printf_("  Deleted kml document -- " << ((double)(clock0c-clock0b))/CLOCKS_PER_SEC << " CPU seconds; " << difftime(time0c,time0b) << " elapsed seconds.\n\n\n");
+
+	clock1=clock();
+	time1 =time(NULL);
+	_printf_("KMLMeshWritex Module -- " << ((double)(clock1-clock0))/CLOCKS_PER_SEC << " CPU seconds; " << difftime(time1,time0) << " elapsed seconds.\n\n\n");
+
+	return;
+}
+
+KML_Folder* KMLMeshElem(int* elem,int melem,int nelem,
+						int* nodecon,int mncon,int nncon,
+						double* lat, double* lng,
+						double* edata,
+						double* cmap, int mcmap, int ncmap){
+
+	int     i,j,ipt=0;
+	double  alt=0;
+	double  cmin= DBL_MAX,
+			cmax=-DBL_MAX;
+	int     imap;
+	KML_Folder*     kfold =NULL;
+	KML_Placemark*  kplace=NULL;
+	KML_Polygon*    kpoly =NULL;
+	KML_LinearRing* kring =NULL;
+
+/*  write folder for mesh  */
+
+	kfold=new KML_Folder();
+//	sprintf(kfold->name      ,"Mesh");
+	sprintf(kfold->name      ,"ISSM Targets");
+	kfold->visibility=1;
+//	sprintf(kfold->descript  ,"Elements=%d, Nodes=%d",melem,mncon);
+	sprintf(kfold->descript  ,"campaign{\n");
+	strcat(kfold->descript  ,"  evaluator ClaspTargetEvaluator;\n");
+	strcat(kfold->descript  ,"  solver IssmSolver;\n");
+	strcat(kfold->descript  ,"  spacecraft airplane ClaspSpacecraft(\n");
+	strcat(kfold->descript  ,"    dutyCycleDuration=0,\n");
+	strcat(kfold->descript  ,"    dutyCycleOnDuration=0,\n");
+	strcat(kfold->descript  ,"    memoryInit=15000,\n");
+	strcat(kfold->descript  ,"    memoryLimit=40000000,\n");
+	strcat(kfold->descript  ,"    maxDataCollectionRate=27,\n");
+	strcat(kfold->descript  ,"    maxDataDownlinkRate=10);\n");
+	strcat(kfold->descript  ,"\n");
+	strcat(kfold->descript  ,"  //sensor names\n");
+	strcat(kfold->descript  ,"  sensor qqp_swath = 2,102,1002,1102;\n");
+	strcat(kfold->descript  ,"\n");
+	strcat(kfold->descript  ,"  //sensor ids to modes\n");
+	strcat(kfold->descript  ,"  low_bandwidth_single_pol = 2,102,1002,1102;\n");
+	strcat(kfold->descript  ,"  single_pol = 2,102,1002,1102;\n");
+	strcat(kfold->descript  ,"  dual_pol = 2,102,1002,1102;\n");
+	strcat(kfold->descript  ,"  quad_pol = 2,102,1002,1102;\n");
+	strcat(kfold->descript  ,"\n");
+	strcat(kfold->descript  ,"  //LRAD\n");
+	strcat(kfold->descript  ,"  //Note all targets are \"ascending right\"-- i.e. mode=2\n");
+	strcat(kfold->descript  ,"  left = 1002,1102;\n");
+	strcat(kfold->descript  ,"  right = 2,102;\n");
+	strcat(kfold->descript  ,"  ascending = 2,1002;\n");
+	strcat(kfold->descript  ,"  descending = 102,1102;\n");
+	strcat(kfold->descript  ,"\n");
+	strcat(kfold->descript  ,"  //data rates\n");
+	strcat(kfold->descript  ,"  low_bandwidth_single_pol datarate = 0.896;\n");
+	strcat(kfold->descript  ,"  single_pol datarate = 4.214;\n");
+	strcat(kfold->descript  ,"  dual_pol datarate = 8.428;\n");
+	strcat(kfold->descript  ,"  quad_pol datarate = 16.856;\n");
+	strcat(kfold->descript  ,"\n");
+	strcat(kfold->descript  ,"  //mode domination relationships\n");
+	strcat(kfold->descript  ,"  quad_pol dominates low_bandwidth_single_pol;\n");
+	strcat(kfold->descript  ,"  quad_pol dominates single_pol;\n");
+	strcat(kfold->descript  ,"  quad_pol dominates dual_pol;\n");
+	strcat(kfold->descript  ,"  dual_pol dominates low_bandwidth_single_pol;\n");
+	strcat(kfold->descript  ,"  dual_pol dominates single_pol;\n");
+	strcat(kfold->descript  ,"  single_pol dominates low_bandwidth_single_pol;\n");
+	strcat(kfold->descript  ,"\n");
+	strcat(kfold->descript  ,"  //sensor styles\n");
+	strcat(kfold->descript  ,"  2 0xff00ffff 0xff000000;\n");
+	strcat(kfold->descript  ,"  102 0x7f00ffff 0xff00ffff;\n");
+	strcat(kfold->descript  ,"  1002 0xffffff00 0xffffff00;\n");
+	strcat(kfold->descript  ,"  1102 0x7fffff00 0xffffff00;\n");
+	strcat(kfold->descript  ,"\n");
+	strcat(kfold->descript  ,"  //discipline styles\n");
+	strcat(kfold->descript  ,"  deformation 0xff006090 0xff006090 0xff0000ff 0xff1010ff;\n");
+	strcat(kfold->descript  ,"  vegetation  0xff00ff00 0xff00ff00 0xff0000ff 0xff0020ff;\n");
+	strcat(kfold->descript  ,"  ice         0xffff0000 0xffff0000 0xff0000ff 0xff2000ff;\n");
+	strcat(kfold->descript  ,"}");
+
+	if (edata)
+		for (i=0; i<melem; i++) {
+			if (edata[i] < cmin)
+				cmin=edata[i];
+			if (edata[i] > cmax)
+				cmax=edata[i];
+		}
+
+/*  write each element as a polygon placemark  */
+
+	_printf0_("Writing " << melem << " tria elements as KML polygons.\n");
+
+	for (i=0; i<melem; i++) {
+		kplace=new KML_Placemark();
+		sprintf(kplace->name      ,"Element %d",(i+1));
+		kplace->visibility=1;
+		if (edata) {
+//			sprintf(kplace->descript  ,"Element data: %g",edata[i]);
+			sprintf(kplace->descript  ,"campaign{\n  deformation 1 %g quad_pol ascending right asap;\n}",edata[i]);
+			imap = (int)floor((edata[i]-cmin)/(cmax-cmin)*mcmap+0.5)+1;
+			if      ((imap >= 1) && (imap <= mcmap))
+				sprintf(kplace->styleurl  ,"#MatlabColor%d",imap);
+			else if (edata[i] == cmax)
+				sprintf(kplace->styleurl  ,"#MatlabColor%d",mcmap);
+			else
+				sprintf(kplace->styleurl  ,"#BlackLineEmptyPoly");
+		}
+		else {
+			sprintf(kplace->descript  ,"");
+			sprintf(kplace->styleurl  ,"#BlackLineRandomPoly");
+		}
+//		kplace->DeepEcho();
+
+		kpoly=new KML_Polygon();
+		kpoly->extrude   =1;
+		sprintf(kpoly->altmode   ,"clampToGround");
+//		kpoly->DeepEcho();
+
+		kring=new KML_LinearRing();
+		kring->ncoord    =nelem+1;
+		kring->coords =xNew<double>((nelem+1)*3);
+
+/*  write the nodal coordinates as a linear ring  */
+
+		for (j=0; j<nelem; j++) {
+			kring->coords[3*j+0]=lng[elem[ipt]-1];
+			kring->coords[3*j+1]=lat[elem[ipt]-1];
+			kring->coords[3*j+2]=alt;
+			ipt++;
+		}
+		kring->coords[3*nelem+0]=kring->coords[3*0+0];
+		kring->coords[3*nelem+1]=kring->coords[3*0+1];
+		kring->coords[3*nelem+2]=kring->coords[3*0+2];
+//		kring->DeepEcho();
+
+/*  assemble the linear ring into polygon into placemark into folder  */
+
+		(kpoly ->outer   )->AddObject((Object*)kring);
+		(kplace->geometry)->AddObject((Object*)kpoly);
+		(kfold ->feature )->AddObject((Object*)kplace);
+
+//		if (!(int)fmod((double)(i+1),1000))
+//			_printf0_("  " << (i+1) << " tria elements written.\n");
+	}
+	_printf0_("  " << melem << " tria elements written.\n");
+
+	return(kfold);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/KMLMeshWritex/KMLMeshWritex.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/KMLMeshWritex/KMLMeshWritex.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/KMLMeshWritex/KMLMeshWritex.h	(revision 27955)
@@ -0,0 +1,29 @@
+/*!\file:  KMLMeshWritex.h
+ * \brief header file for kml mesh writer routines.
+ */ 
+
+#ifndef _KMLMESHWRITEX_H
+#define _KMLMESHWRITEX_H
+
+#include <float.h>    /*  DBL_MAX  */
+#include "../../kml/kmlobjects.h"
+
+/* local prototypes: */
+void KMLMeshWritex(int* ierror,
+				   char* name,
+				   char* notes,
+				   int* elem,int melem,int nelem,
+				   int* nodecon,int mncon,int nncon,
+				   double* lat, double* lng,
+				   int* part,
+				   double* data, int mdata, int ndata,
+				   double* cmap, int mcmap, int ncmap,
+				   FILE* fid);
+
+KML_Folder* KMLMeshElem(int* elem,int melem,int nelem,
+						int* nodecon,int mncon,int nncon,
+						double* lat, double* lng,
+						double* edata,
+						double* cmap, int mcmap, int ncmap);
+
+#endif  /* _KMLMESHWRITEX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/KMLOverlayx/KMLOverlayx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/KMLOverlayx/KMLOverlayx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/KMLOverlayx/KMLOverlayx.cpp	(revision 27955)
@@ -0,0 +1,92 @@
+/*!\file KMLOverlayx
+ */
+
+#include "./KMLOverlayx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../kml/kmlobjects.h"
+
+void KMLOverlayx(int* ierror,
+				 double* lataxis, double* longaxis,
+				 int nimages, char** pimages,
+				 FILE* fid){
+
+	int     i;
+	char    indent[81]="";
+	KML_File*          kfile=NULL;
+	KML_Document*      kdoc=NULL;
+	KML_Folder*        kfold=NULL;
+	KML_GroundOverlay* kgover=NULL;
+	KML_Icon*          kicon=NULL;
+	KML_LatLonBox*     kllbox=NULL;
+
+	clock_t clock0,clock1;
+	time_t  time0, time1;
+
+	clock0=clock();
+	time0 =time(NULL);
+	_printf0_("\nKMLOverlayx Module -- " << ctime(&time0));
+
+/*  construct kml file  */
+
+	kfile=new KML_File();
+	kfile->AddAttrib("xmlns","http://www.opengis.net/kml/2.2");
+
+/*  construct kml document  */
+
+	kdoc=new KML_Document();
+	sprintf(kdoc->name      ,"Ground Overlays from ISSM");
+	kdoc->open      =1;
+
+/*  construct kml folder for overlays  */
+
+	kfold=new KML_Folder();
+	sprintf(kfold->name      ,"Ground Overlays");
+	kfold->open      =1;
+
+/*  construct ground overlay, icon, and lat/long box for each image  */
+
+	for (i=0; i<nimages; i++) {
+		kgover=new KML_GroundOverlay();
+		sprintf(kgover->name      ,"%s",pimages[i]);
+		kgover->visibility=0;
+
+		kicon=new KML_Icon();
+		sprintf(kicon->href      ,"%s",pimages[i]);
+		kgover->icon      =kicon;
+		kicon=NULL;
+
+		kllbox=new KML_LatLonBox();
+		kllbox->north     =lataxis[1];
+		kllbox->south     =lataxis[0];
+		kllbox->east      =longaxis[1];
+		kllbox->west      =longaxis[0];
+		kllbox->rotation  = 0.;
+		kgover->llbox     =kllbox;
+		kllbox=NULL;
+
+		(kfold->feature   )->AddObject((Object*)kgover);
+		kgover=NULL;
+	}
+
+/*  assemble the rest of the kml hierarchy  */
+
+	(kdoc->feature   )->AddObject((Object*)kfold);
+	kfold=NULL;
+	(kfile->kmlobj    )->AddObject((Object*)kdoc);
+	kdoc=NULL;
+
+/*  write kml file  */
+
+	_printf0_("Writing kml document to file.\n");
+	fprintf(fid,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+	kfile->Write(fid,indent);
+
+	delete kfile;
+
+	clock1=clock();
+	time1 =time(NULL);
+	_printf_("KMLOverlayx Module -- " << ((double)(clock1-clock0))/CLOCKS_PER_SEC << " CPU seconds; " << difftime(time1,time0) << " elapsed seconds.\n\n\n");
+
+	return;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/KMLOverlayx/KMLOverlayx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/KMLOverlayx/KMLOverlayx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/KMLOverlayx/KMLOverlayx.h	(revision 27955)
@@ -0,0 +1,17 @@
+/*!\file:  KMLOverlayx.h
+ * \brief header file for kml file overlay routines.
+ */ 
+
+#ifndef _KMLOVERLAYX_H
+#define _KMLOVERLAYX_H
+
+#include <float.h>    /*  DBL_MAX  */
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void KMLOverlayx(int* ierror,
+				 double* lataxis, double* longaxis,
+				 int nimages, char** pimages,
+				 FILE* fid);
+
+#endif  /* _KMLOVERLAYX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/KillIcebergsx/KillIcebergsx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/KillIcebergsx/KillIcebergsx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/KillIcebergsx/KillIcebergsx.cpp	(revision 27955)
@@ -0,0 +1,142 @@
+/*!\file KillIcebergsx
+ * \brief: compute inverse method gradient
+ */
+
+#include "./KillIcebergsx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+#include "../InputUpdateFromVectorx/InputUpdateFromVectorx.h"
+
+int KillIcebergsx(FemModel* femmodel){
+
+	/*Intermediaries*/
+	int lid;
+
+	/*retrieve vertex info and prepare element flag to speed up process*/
+	int         nbv_local    = femmodel->vertices->Size();
+	IssmDouble *local_mask   = xNewZeroInit<IssmDouble>(nbv_local);
+	bool       *element_flag = xNewZeroInit<bool>(femmodel->elements->Size());
+	IssmDouble ice;
+
+	/*Step 1, go through all elements and put 1 in local_mask if the element is grounded*/
+	int i=0;
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		if(!element->IsIceInElement()){
+			/*Nothing to do, just flag element to speed up the computation*/
+			element_flag[i] = true;
+		}
+		else {
+			if(element->IsAllGrounded()){
+				/* only look at element with ice but not fully grounded */
+				int numvertices = element->GetNumberOfVertices();
+				Gauss* gauss=element->NewGauss();
+				Input* icelevel_input = element->GetInput(MaskIceLevelsetEnum);				_assert_(icelevel_input);
+
+				for(int v=0;v<numvertices;v++) {
+					gauss->GaussVertex(v);
+					icelevel_input->GetInputValue(&ice,gauss);
+					/* The initial mask is very strict, we look at all grounded elements and set the mask for ice nodes only. */
+					if (ice < 0) local_mask[element->vertices[v]->Lid()] = 1.;
+				}
+				delete gauss;
+			}
+		}
+		i++;
+	}
+
+	/*Now we have 2 loops, one across cpus, and one for each cpus: we are going
+	 * to propagate the mask if an element is connected to a positive mask
+	 * already.  We then communicate to the other partitions. We stop when the
+	 * mask stops changing*/
+	bool keepsyncing = true;
+	while(keepsyncing){
+
+		/*Get local mask from parallel vector*/
+		femmodel->SyncLocalVectorWithClonesVerticesAdd(local_mask);
+
+		/*Local iterations on partition*/
+		bool keepgoing    = true;
+		int  iter         = 1;
+		while(keepgoing){
+			//_printf0_("   -- Kill icebergs: local iteration "<<iter<<"\n");
+
+			keepgoing    = false;
+			int i=0;
+			for(Object* & object : femmodel->elements->objects){
+				Element* element=xDynamicCast<Element*>(object);
+
+				if(!element_flag[i]){
+					int numvertices = element->GetNumberOfVertices();
+					bool found1 = false;
+					IssmDouble sumlocalmask = 0.;
+
+					for(int j=0;j<numvertices;j++){
+						lid = element->vertices[j]->Lid();
+						/*we need to have at least a sharing edge, to extend the mask*/
+						sumlocalmask += local_mask[lid];
+						if(sumlocalmask > 1.5){
+							found1 = true;
+							break;
+						}
+					}
+					if(found1){
+						element_flag[i] = true;
+						for(int j=0;j<numvertices;j++){
+							lid = element->vertices[j]->Lid();
+							local_mask[lid]=1.;
+						}
+						keepgoing = true;
+					}
+				}
+				i++;
+			}
+			iter++;
+		}
+
+		/*Check how many iterations all cpus did*/
+		int iter_max;
+		ISSM_MPI_Reduce(&iter,&iter_max,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
+		ISSM_MPI_Bcast(&iter_max,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+		if(iter_max==2){
+			/*If iter is only 2, nothing else was changed in the while loop above (iter is initialized as 1 and then ++)*/
+			keepsyncing = false;
+		}
+	}
+
+	/*Cleanup*/
+	xDelete<bool>(element_flag);
+
+	int killbergReinit = 0;
+	/*OK, now deactivate iceberg and count the number of deactivated vertices*/
+	for(Object* & object : femmodel->elements->objects){
+		Element* element = xDynamicCast<Element*>(object);
+
+		if(element->IsIceInElement()){
+			int  numvertices = element->GetNumberOfVertices();
+			bool deactivate = false;
+			for(int j=0;j<numvertices;j++){
+				lid = element->vertices[j]->Lid();
+				if(local_mask[lid]==0.){
+					deactivate = true;
+					break;
+				}
+			}
+
+			if(deactivate){
+				int  numvertices = element->GetNumberOfVertices();
+				IssmDouble* values = xNew<IssmDouble>(numvertices);
+				for(int j=0;j<numvertices;j++) values[j] = 1.; /*Anything >0 = no ice*/
+				element->AddInput(MaskIceLevelsetEnum,values,P1Enum);
+				xDelete<IssmDouble>(values);
+				killbergReinit += 1;
+			}
+		}
+	}
+	/*cleanup*/
+	xDelete<IssmDouble>(local_mask);
+
+	/*Recompute the sign distance for the levelset function*/
+	return killbergReinit;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/KillIcebergsx/KillIcebergsx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/KillIcebergsx/KillIcebergsx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/KillIcebergsx/KillIcebergsx.h	(revision 27955)
@@ -0,0 +1,10 @@
+#ifndef _KILLICEBERGS_H
+#define _KILLICEBERGS_H
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+/* local prototypes: */
+int KillIcebergsx(FemModel* femmodel);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Kml2Expx/Kml2Expx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Kml2Expx/Kml2Expx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Kml2Expx/Kml2Expx.cpp	(revision 27955)
@@ -0,0 +1,53 @@
+/*!\file Kml2Expx
+ * \brief kml to exp conversion routines.
+ */
+
+#include "./Kml2Expx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../KMLFileReadx/KMLFileReadx.h"
+
+int Kml2Expx(char* filkml,char* filexp,int sgn){
+
+	double  cm,sp;
+	Ll2xydef(&cm,&sp,sgn);
+
+	return(Kml2Expx(filkml,filexp,sgn,cm,sp));
+}
+
+int Kml2Expx(char* filkml,char* filexp,int sgn,double cm,double sp){
+
+	int         iret   = 0;
+	KML_Object *kobj   = NULL;
+	FILE       *fidi   = NULL;
+	FILE       *fido   = NULL;
+	clock_t     clock0,clock1;
+	time_t      time0 ,time1;
+
+	clock0=clock();
+	time0 =time(NULL);
+	_printf0_("\nKml2Expx Module -- " << ctime(&time0));
+
+	/*read kml file*/
+	fidi=fopen(filkml,"r");
+	if (!(kobj=KMLFileReadx(fidi)))
+	 _error_("Error reading kml file.");
+	fclose(fidi);
+
+	/*open exp file*/
+	_printf0_("Writing exp profiles to file.\n");
+	fido=fopen(filexp,"w");
+
+	/*write the polygons and linestrings  */
+	kobj->WriteExp(fido,"",sgn,cm,sp);
+
+	/*close exp file  */
+	fclose(fido);
+	delete kobj;
+
+	clock1=clock();
+	time1 =time(NULL);
+	_printf_("Kml2Expx Module -- " << ((double)(clock1-clock0))/CLOCKS_PER_SEC << " CPU seconds; " << difftime(time1,time0) << " elapsed seconds.\n\n\n");
+
+	return(iret);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Kml2Expx/Kml2Expx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Kml2Expx/Kml2Expx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Kml2Expx/Kml2Expx.h	(revision 27955)
@@ -0,0 +1,17 @@
+/*!\file:  Kml2Expx.h
+ * \brief header file for kml to exp conversion routines.
+ */ 
+
+#ifndef _KML2EXPX_H
+#define _KML2EXPX_H
+
+#include <float.h>    /*  DBL_MAX  */
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+int Kml2Expx(char* filkml,char* filexp,
+			 int sgn);
+int Kml2Expx(char* filkml,char* filexp,
+			 int sgn,double cm,double sp);
+
+#endif  /* _KML2EXPX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Krigingx/Krigingx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Krigingx/Krigingx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Krigingx/Krigingx.cpp	(revision 27955)
@@ -0,0 +1,428 @@
+/*!\file:  Kriging.cpp
+ * \brief  "c" core code for Kriging
+ */ 
+
+#include "./Krigingx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "../modules.h"
+#ifdef _HAVE_GSL_
+#include <gsl/gsl_linalg.h>
+#endif
+int   Krigingx(double** ppredictions,double **perror,double* obs_x, double* obs_y, double* obs_list, int obs_length,double* x_interp,double* y_interp,int n_interp,Options* options){/*{{{*/
+
+	/*output*/
+	double *predictions = NULL;
+	double *error       = NULL;
+
+	/*Intermediaries*/
+	int           mindata,maxdata;
+	double        dmindata,dmaxdata,dnumthreads; //FIXME (Options come as double but we want to retrive integers)
+	double        radius;
+	char         *output       = NULL;
+	Variogram    *variogram    = NULL;
+	Observations *observations = NULL;
+
+	/*threading: */
+	KrigingxThreadStruct gate;
+	int num = _NUMTHREADS_;
+
+	/*Get Variogram from Options*/
+	ProcessVariogram(&variogram,options);
+	options->Get(&radius,"searchradius",0.);
+	options->Get(&dmindata,"mindata",1.);  mindata=int(dmindata);//FIXME (Options come as double but we want to retrive integers)
+	options->Get(&dmaxdata,"maxdata",50.); maxdata=int(dmaxdata);//FIXME (Options come as double but we want to retrive integers)
+	options->Get(&dnumthreads,"numthreads",double(num)); num=int(dnumthreads);//FIXME (Options come as double but we want to retrive integers)
+
+	/*Process observation dataset*/
+	observations=new Observations(obs_list,obs_x,obs_y,obs_length,options);
+
+	/*Allocate output*/
+	predictions =xNewZeroInit<double>(n_interp);
+	error       =xNewZeroInit<double>(n_interp);
+
+	/*Get output*/
+	options->Get(&output,"output",(char*)"prediction");
+
+	if(strcmp(output,"quadtree")==0){
+		observations->QuadtreeColoring(predictions,x_interp,y_interp,n_interp);
+	}
+	else if(strcmp(output,"variomap")==0){
+		observations->Variomap(predictions,x_interp,n_interp);
+	}
+	else if(strcmp(output,"distance")==0){
+		/*initialize thread parameters: */
+		gate.n_interp     = n_interp;
+		gate.x_interp     = x_interp;
+		gate.y_interp     = y_interp;
+		gate.radius       = radius;
+		gate.mindata      = mindata;
+		gate.maxdata      = maxdata;
+		gate.variogram    = variogram;
+		gate.observations = observations;
+		gate.predictions  = predictions;
+		gate.error        = error;
+		gate.numdone      = xNewZeroInit<int>(num);
+
+		/*launch the thread manager with Krigingxt as a core: */
+		LaunchThread(Distancest,(void*)&gate,num);
+		xDelete<int>(gate.numdone);
+	}
+	else if(strcmp(output,"delaunay")==0){
+
+		#ifdef _HAVE_BAMG_
+		int nobs,nel;
+		double *x     = NULL;
+		double *y     = NULL;
+		double *data  = NULL;
+		int    *index = NULL;
+
+		observations->ObservationList(&x,&y,&data,&nobs);
+
+		_printf_("Generation Delaunay Triangulation\n");
+		BamgTriangulatex(&index,&nel,x,y,nobs);
+
+		_printf_("Interpolating\n");
+		xDelete<double>(predictions);
+		InterpFromMeshToMesh2dx(&predictions,index,x,y,nobs,nel,data,nobs,1,x_interp,y_interp,n_interp,options);
+		xDelete<double>(x);
+		xDelete<double>(y);
+		xDelete<double>(data);
+		xDelete<int>(index);
+		#else
+		_error_("you did not compile ISSM with bamg");
+		#endif
+	}
+	else if(strcmp(output,"nearestneighbor")==0){
+		/*initialize thread parameters: */
+		gate.n_interp     = n_interp;
+		gate.x_interp     = x_interp;
+		gate.y_interp     = y_interp;
+		gate.radius       = radius;
+		gate.mindata      = mindata;
+		gate.maxdata      = maxdata;
+		gate.variogram    = variogram;
+		gate.observations = observations;
+		gate.predictions  = predictions;
+		gate.error        = error;
+		gate.numdone      = xNewZeroInit<int>(num);
+
+		/*launch the thread manager with Krigingxt as a core: */
+		LaunchThread(NearestNeighbort,(void*)&gate,num);
+		_printf_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+		xDelete<int>(gate.numdone);
+	}
+	else if(strcmp(output,"idw")==0){ //Inverse distance weighting
+		double power;
+		options->Get(&power,"power",2.);
+		/*initialize thread parameters: */
+		gate.n_interp     = n_interp;
+		gate.x_interp     = x_interp;
+		gate.y_interp     = y_interp;
+		gate.radius       = radius;
+		gate.mindata      = mindata;
+		gate.maxdata      = maxdata;
+		gate.variogram    = variogram;
+		gate.observations = observations;
+		gate.predictions  = predictions;
+		gate.error        = error;
+		gate.numdone      = xNewZeroInit<int>(num);
+		gate.power        = power;
+
+		/*launch the thread manager with Krigingxt as a core: */
+		LaunchThread(idwt,(void*)&gate,num);
+		_printf_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+		xDelete<int>(gate.numdone);
+	}
+	else if(strcmp(output,"v4")==0){ //Inverse distance weighting
+#if !defined(_HAVE_GSL_)
+		_error_("GSL is required for v4 interpolation");
+#endif
+		/*initialize thread parameters: */
+		gate.n_interp     = n_interp;
+		gate.x_interp     = x_interp;
+		gate.y_interp     = y_interp;
+		gate.radius       = radius;
+		gate.mindata      = mindata;
+		gate.maxdata      = maxdata;
+		gate.variogram    = variogram;
+		gate.observations = observations;
+		gate.predictions  = predictions;
+		gate.error        = error;
+		gate.numdone      = xNewZeroInit<int>(num);
+
+		/*launch the thread manager with Krigingxt as a core: */
+		LaunchThread(v4t,(void*)&gate,num);
+		_printf_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+		xDelete<int>(gate.numdone);
+	}
+	else if(strcmp(output,"prediction")==0){
+#if !defined(_HAVE_GSL_)
+		_error_("GSL is required for v4 interpolation");
+#endif
+
+		/*initialize thread parameters: */
+		gate.n_interp     = n_interp;
+		gate.x_interp     = x_interp;
+		gate.y_interp     = y_interp;
+		gate.radius       = radius;
+		gate.mindata      = mindata;
+		gate.maxdata      = maxdata;
+		gate.variogram    = variogram;
+		gate.observations = observations;
+		gate.predictions  = predictions;
+		gate.error        = error;
+		gate.numdone      = xNewZeroInit<int>(num);
+
+		/*launch the thread manager with Krigingxt as a core: */
+		LaunchThread(Krigingxt,(void*)&gate,num);
+		_printf_("\r      interpolation progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+		xDelete<int>(gate.numdone);
+	}
+	else{
+		_error_("output '" << output << "' not supported yet");
+	}
+
+	/*clean-up and Assign output pointer*/
+	delete variogram;
+	delete observations;
+	xDelete<char>(output);
+	*ppredictions = predictions;
+	*perror       = error;
+	return 1;
+}/*}}}*/
+void* Krigingxt(void* vpthread_handle){/*{{{*/
+
+	/*gate variables :*/
+	KrigingxThreadStruct *gate        = NULL;
+	pthread_handle       *handle      = NULL;
+	int my_thread;
+	int num_threads;
+	int i0,i1;
+
+	/*recover handle and gate: */
+	handle      = (pthread_handle*)vpthread_handle;
+	gate        = (KrigingxThreadStruct*)handle->gate;
+	my_thread   = handle->id;
+	num_threads = handle->num;
+
+	/*recover parameters :*/
+	int           n_interp     = gate->n_interp;
+	double       *x_interp     = gate->x_interp;
+	double       *y_interp     = gate->y_interp;
+	double        radius       = gate->radius;
+	int           mindata      = gate->mindata;
+	int           maxdata      = gate->maxdata;
+	Variogram    *variogram    = gate->variogram;
+	Observations *observations = gate->observations;
+	double       *predictions  = gate->predictions;
+	double       *error        = gate->error;
+	int          *numdone      = gate->numdone;
+
+	/*partition loop across threads: */
+	PartitionRange(&i0,&i1,n_interp,num_threads,my_thread);
+	for(int idx=i0;idx<i1;idx++){
+
+		/*Print info*/
+		numdone[my_thread]=idx-i0;
+		if(my_thread==0){
+			int alldone=numdone[0];
+			for(int i=1;i<num_threads;i++) alldone+=numdone[i];
+			_printf_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(alldone)/double(n_interp)*100.<<"%   ");
+		}
+
+		/*Kriging interpolation*/
+		observations->InterpolationKriging(&predictions[idx],&error[idx],x_interp[idx],y_interp[idx],radius,mindata,maxdata,variogram);
+	}
+
+	return NULL;
+}/*}}}*/
+void* NearestNeighbort(void* vpthread_handle){/*{{{*/
+
+	/*gate variables :*/
+	KrigingxThreadStruct *gate        = NULL;
+	pthread_handle       *handle      = NULL;
+	int my_thread;
+	int num_threads;
+	int i0,i1;
+
+	/*recover handle and gate: */
+	handle      = (pthread_handle*)vpthread_handle;
+	gate        = (KrigingxThreadStruct*)handle->gate;
+	my_thread   = handle->id;
+	num_threads = handle->num;
+
+	/*recover parameters :*/
+	int           n_interp     = gate->n_interp;
+	double       *x_interp     = gate->x_interp;
+	double       *y_interp     = gate->y_interp;
+	double        radius       = gate->radius;
+	int           mindata      = gate->mindata;
+	int           maxdata      = gate->maxdata;
+	Variogram    *variogram    = gate->variogram;
+	Observations *observations = gate->observations;
+	double       *predictions  = gate->predictions;
+	double       *error        = gate->error;
+	int          *numdone      = gate->numdone;
+
+	/*partition loop across threads: */
+	PartitionRange(&i0,&i1,n_interp,num_threads,my_thread);
+	for(int idx=i0;idx<i1;idx++){
+
+		/*Print info*/
+		numdone[my_thread]=idx-i0;
+		if(my_thread==0){
+			int alldone=numdone[0];
+			for(int i=1;i<num_threads;i++) alldone+=numdone[i];
+			_printf_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(alldone)/double(n_interp)*100.<<"%   ");
+		}
+
+		observations->InterpolationNearestNeighbor(&predictions[idx],x_interp[idx],y_interp[idx],radius);
+	}
+
+	return NULL;
+}/*}}}*/
+void* idwt(void* vpthread_handle){/*{{{*/
+
+	/*gate variables :*/
+	KrigingxThreadStruct *gate        = NULL;
+	pthread_handle       *handle      = NULL;
+	int my_thread;
+	int num_threads;
+	int i0,i1;
+
+	/*recover handle and gate: */
+	handle      = (pthread_handle*)vpthread_handle;
+	gate        = (KrigingxThreadStruct*)handle->gate;
+	my_thread   = handle->id;
+	num_threads = handle->num;
+
+	/*recover parameters :*/
+	int           n_interp     = gate->n_interp;
+	double       *x_interp     = gate->x_interp;
+	double       *y_interp     = gate->y_interp;
+	double        radius       = gate->radius;
+	int           mindata      = gate->mindata;
+	int           maxdata      = gate->maxdata;
+	Variogram    *variogram    = gate->variogram;
+	Observations *observations = gate->observations;
+	double       *predictions  = gate->predictions;
+	double       *error        = gate->error;
+	int          *numdone      = gate->numdone;
+	double        power        = gate->power;
+
+	/*partition loop across threads: */
+	PartitionRange(&i0,&i1,n_interp,num_threads,my_thread);
+	for(int idx=i0;idx<i1;idx++){
+
+		/*Print info*/
+		numdone[my_thread]=idx-i0;
+		if(my_thread==0){
+			int alldone=numdone[0];
+			for(int i=1;i<num_threads;i++) alldone+=numdone[i];
+			_printf_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(alldone)/double(n_interp)*100.<<"%   ");
+		}
+
+		observations->InterpolationIDW(&predictions[idx],x_interp[idx],y_interp[idx],radius,mindata,maxdata,power);
+	}
+	return NULL;
+}/*}}}*/
+void* v4t(void* vpthread_handle){/*{{{*/
+
+	/*gate variables :*/
+	KrigingxThreadStruct *gate        = NULL;
+	pthread_handle       *handle      = NULL;
+	int my_thread;
+	int num_threads;
+	int i0,i1;
+
+	/*recover handle and gate: */
+	handle      = (pthread_handle*)vpthread_handle;
+	gate        = (KrigingxThreadStruct*)handle->gate;
+	my_thread   = handle->id;
+	num_threads = handle->num;
+
+	/*recover parameters :*/
+	int           n_interp     = gate->n_interp;
+	double       *x_interp     = gate->x_interp;
+	double       *y_interp     = gate->y_interp;
+	double        radius       = gate->radius;
+	int           mindata      = gate->mindata;
+	int           maxdata      = gate->maxdata;
+	Variogram    *variogram    = gate->variogram;
+	Observations *observations = gate->observations;
+	double       *predictions  = gate->predictions;
+	double       *error        = gate->error;
+	int          *numdone      = gate->numdone;
+
+	/*partition loop across threads: */
+	PartitionRange(&i0,&i1,n_interp,num_threads,my_thread);
+	for(int idx=i0;idx<i1;idx++){
+
+		/*Print info*/
+		numdone[my_thread]=idx-i0;
+		if(my_thread==0){
+			int alldone=numdone[0];
+			for(int i=1;i<num_threads;i++) alldone+=numdone[i];
+			_printf_("\r      interpolation progress: "<<setw(6)<<setprecision(2)<<double(alldone)/double(n_interp)*100.<<"%   ");
+		}
+
+		observations->InterpolationV4(&predictions[idx],x_interp[idx],y_interp[idx],radius,mindata,maxdata);
+	}
+	return NULL;
+}/*}}}*/
+void* Distancest(void* vpthread_handle){/*{{{*/
+
+	/*gate variables :*/
+	KrigingxThreadStruct *gate        = NULL;
+	pthread_handle       *handle      = NULL;
+	int my_thread;
+	int num_threads;
+	int i0,i1;
+
+	/*recover handle and gate: */
+	handle      = (pthread_handle*)vpthread_handle;
+	gate        = (KrigingxThreadStruct*)handle->gate;
+	my_thread   = handle->id;
+	num_threads = handle->num;
+
+	/*recover parameters :*/
+	int           n_interp     = gate->n_interp;
+	double       *x_interp     = gate->x_interp;
+	double       *y_interp     = gate->y_interp;
+	double        radius       = gate->radius;
+	int           mindata      = gate->mindata;
+	int           maxdata      = gate->maxdata;
+	Variogram    *variogram    = gate->variogram;
+	Observations *observations = gate->observations;
+	double       *predictions  = gate->predictions;
+	double       *error        = gate->error;
+	int          *numdone      = gate->numdone;
+
+	/*partition loop across threads: */
+	PartitionRange(&i0,&i1,n_interp,num_threads,my_thread);
+	observations->Distances(&predictions[i0],&x_interp[i0],&y_interp[i0],i1-i0,radius);
+	return NULL;
+}/*}}}*/
+
+void ProcessVariogram(Variogram **pvariogram,Options* options){/*{{{*/
+
+	/*Intermediaries*/
+	Variogram* variogram = NULL;
+	char      *model     = NULL;
+
+	if(options->GetOption("model")){
+		options->Get(&model,"model");
+		if     (strcmp(model,"gaussian")==0)    variogram = new GaussianVariogram(options);
+		else if(strcmp(model,"exponential")==0) variogram = new ExponentialVariogram(options);
+		else if(strcmp(model,"spherical")==0)   variogram = new SphericalVariogram(options);
+		else if(strcmp(model,"power")==0)       variogram = new PowerVariogram(options);
+		else _error_("variogram " << model << " not supported yet (list of supported variogram: gaussian, exponential, spherical and power)");
+	}
+	else variogram = new GaussianVariogram(options);
+
+	/*Assign output pointer*/
+	xDelete<char>(model);
+	*pvariogram = variogram;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Krigingx/Krigingx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Krigingx/Krigingx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Krigingx/Krigingx.h	(revision 27955)
@@ -0,0 +1,40 @@
+/*!\file Kriging.h
+ * \brief: header file for Kriging
+ */
+
+#ifndef _KRIGINGX_H
+#define _KRIGINGX_H
+
+#include "../../classes/classes.h"
+#include "../../toolkits/toolkits.h"
+
+class Observations;
+class Variogram;
+
+int  Krigingx(double** ppredictions,double **perror,double* x, double* y, double* observations, int n_obs,double* x_interp,double* y_interp,int n_interp,Options* options);
+int  pKrigingx(double** ppredictions,double **perror,double* x, double* y, double* observations, int n_obs,double* x_interp,double* y_interp,int n_interp,Options* options);
+void ProcessVariogram(Variogram **pvariogram,Options* options);
+void ProcessVariogram2(Variogram **pvariogram,Options* options);
+
+/*threading: */
+typedef struct{
+	int           n_interp;
+	double       *x_interp;
+	double       *y_interp;
+	double        radius;
+	int           mindata;
+	int           maxdata;
+	Variogram    *variogram;
+	Observations *observations;
+	double       *predictions;
+	double       *error;
+	int          *numdone;
+	double        power;//for idw
+}KrigingxThreadStruct;
+
+void* Krigingxt(void*);
+void* NearestNeighbort(void*);
+void* idwt(void*);
+void* v4t(void*);
+void* Distancest(void*);
+#endif /* _KRIGINGX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Krigingx/pKrigingx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Krigingx/pKrigingx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Krigingx/pKrigingx.cpp	(revision 27955)
@@ -0,0 +1,177 @@
+/*!\file:  Kriging.cpp
+ * \brief  "c" core code for Kriging
+ */ 
+
+#include "./Krigingx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "../../shared/io/io.h"
+
+int pKrigingx(double** ppredictions,double **perror,double* obs_x, double* obs_y, double* obs_list, int obs_length,double* x_interp,double* y_interp,int n_interp,Options* options){/*{{{*/
+
+#ifdef _HAVE_MPI_
+	int num_procs;
+	int my_rank;
+
+	/*output*/
+	double *predictions = NULL;
+	double *error       = NULL;
+
+	/*Intermediaries*/
+	int           mindata,maxdata;
+	double        dmindata,dmaxdata;
+	double        radius;
+	char         *output       = NULL;
+	Variogram    *variogram    = NULL;
+	Observations *observations = NULL;
+
+	/*timing*/
+	double   start, finish;
+	double   start_core, finish_core;
+	double   start_init, finish_init;
+
+	/*Get my_rank: */
+	my_rank=IssmComm::GetRank();
+	num_procs=IssmComm::GetSize();
+
+	/*Get some Options*/
+	ISSM_MPI_Barrier(ISSM_MPI_COMM_WORLD); start=ISSM_MPI_Wtime();
+	options->Get(&radius,"searchradius",0.);
+
+	options->Get(&dmindata,"mindata",1.);  mindata=int(dmindata);//FIXME (Options come as double but we want to retrive integers)
+	options->Get(&dmaxdata,"maxdata",50.); maxdata=int(dmaxdata);//FIXME (Options come as double but we want to retrive integers)
+
+	/*Process observation dataset*/
+	ISSM_MPI_Barrier(ISSM_MPI_COMM_WORLD); start_init=ISSM_MPI_Wtime();
+	observations=new Observations(obs_list,obs_x,obs_y,obs_length,options);
+	ISSM_MPI_Barrier(ISSM_MPI_COMM_WORLD); finish_init=ISSM_MPI_Wtime();
+
+	/*Allocate output*/
+	predictions =xNewZeroInit<double>(n_interp);
+	error       =xNewZeroInit<double>(n_interp);
+
+	/*Get output*/
+	options->Get(&output,"output",(char*)"prediction");
+
+	ISSM_MPI_Barrier(ISSM_MPI_COMM_WORLD); start_core=ISSM_MPI_Wtime( );
+	if(strcmp(output,"quadtree")==0){
+		observations->QuadtreeColoring(predictions,x_interp,y_interp,n_interp);
+	}
+	else if(strcmp(output,"variomap")==0){
+		observations->Variomap(predictions,x_interp,n_interp);
+	}
+	else if(strcmp(output,"prediction")==0){
+
+		/*Process Variogram*/
+		ProcessVariogram2(&variogram,options);
+
+		/*partition loop across threads: */
+		for(int idx=my_rank;idx<n_interp;idx+=num_procs){
+			_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<double(idx)/double(n_interp)*100.<<"%  \n");
+			observations->InterpolationKriging(&predictions[idx],&error[idx],x_interp[idx],y_interp[idx],radius,mindata,maxdata,variogram);
+		}
+		_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<100.<<"%  \n");
+
+		double *sumpredictions =xNew<double>(n_interp);
+		double *sumerror       =xNew<double>(n_interp);
+		ISSM_MPI_Allreduce(predictions,sumpredictions,n_interp,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		ISSM_MPI_Allreduce(error,sumerror,n_interp,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		xDelete<double>(error); error=sumerror;
+		xDelete<double>(predictions); predictions=sumpredictions;
+	}
+	else if(strcmp(output,"v4")==0){
+
+		/*partition loop across threads: */
+		for(int idx=my_rank;idx<n_interp;idx+=num_procs){
+			_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<double(idx)/double(n_interp)*100.<<"%  \n");
+			observations->InterpolationV4(&predictions[idx],x_interp[idx],y_interp[idx],radius,mindata,maxdata);
+		}
+		_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<100.<<"%  \n");
+
+		double *sumpredictions =xNew<double>(n_interp);
+		ISSM_MPI_Allreduce(predictions,sumpredictions,n_interp,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		xDelete<double>(predictions); predictions=sumpredictions;
+	}
+	else if(strcmp(output,"nearestneighbor")==0){
+
+		/*partition loop across threads: */
+		for(int idx=my_rank;idx<n_interp;idx+=num_procs){
+			_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<double(idx)/double(n_interp)*100.<<"%  \n");
+			observations->InterpolationNearestNeighbor(&predictions[idx],x_interp[idx],y_interp[idx],radius);
+		}
+		_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<100.<<"%  \n");
+
+		double *sumpredictions =xNew<double>(n_interp);
+		ISSM_MPI_Allreduce(predictions,sumpredictions,n_interp,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		xDelete<double>(predictions); predictions=sumpredictions;
+	}
+	else if(strcmp(output,"distance")==0){
+
+		/*partition loop across threads: */
+		for(int idx=my_rank;idx<n_interp;idx+=num_procs){
+			_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<double(idx)/double(n_interp)*100.<<"%  \n");
+			observations->Distances(&predictions[idx],&x_interp[idx],&y_interp[idx],1,radius);
+		}
+		_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<100.<<"%  \n");
+
+		double *sumpredictions =xNew<double>(n_interp);
+		ISSM_MPI_Allreduce(predictions,sumpredictions,n_interp,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		xDelete<double>(predictions); predictions=sumpredictions;
+	}
+	else if(strcmp(output,"idw")==0){
+		double power;
+		options->Get(&power,"power",2.);
+
+		/*partition loop across threads: */
+		for(int idx=my_rank;idx<n_interp;idx+=num_procs){
+			_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<double(idx)/double(n_interp)*100.<<"%  \n");
+			observations->InterpolationIDW(&predictions[idx],x_interp[idx],y_interp[idx],radius,mindata,maxdata,power);
+		}
+		_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<100.<<"%  \n");
+
+		double *sumpredictions =xNew<double>(n_interp);
+		ISSM_MPI_Allreduce(predictions,sumpredictions,n_interp,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		xDelete<double>(predictions); predictions=sumpredictions;
+	}
+	else{
+		_error_("output '" << output << "' not supported yet");
+	}
+	ISSM_MPI_Barrier(ISSM_MPI_COMM_WORLD); finish_core=ISSM_MPI_Wtime( );
+
+	/*clean-up and Assign output pointer*/
+	delete variogram;
+	delete observations;
+	xDelete<char>(output);
+	*ppredictions = predictions;
+	*perror       = error;
+
+	ISSM_MPI_Barrier(ISSM_MPI_COMM_WORLD); finish=ISSM_MPI_Wtime( );
+	_printf0_("\n   " << setw(34) << left << "Observation fitering elapsed time: " << finish_init-start_init << " seconds  \n\n");
+	_printf0_("   " << setw(34) << left << "Kriging prediction elapsed time: " << finish_core-start_core << " seconds  \n\n");
+	_printf0_("\n   " << "Total elapsed time " << int((finish-start)/3600) << " hrs " << int(int(finish-start)%3600/60) << " min " << int(finish-start)%60 << " sec\n\n\n");
+	return 1;
+#else
+	_error_("MPI not available");
+#endif
+}/*}}}*/
+void ProcessVariogram2(Variogram **pvariogram,Options* options){/*{{{*/
+
+	/*Intermediaries*/
+	Variogram* variogram = NULL;
+	char      *model     = NULL;
+
+	if(options->GetOption("model")){
+		options->Get(&model,"model");
+		if     (strcmp(model,"gaussian")==0)    variogram = new GaussianVariogram(options);
+		else if(strcmp(model,"exponential")==0) variogram = new ExponentialVariogram(options);
+		else if(strcmp(model,"spherical")==0)   variogram = new SphericalVariogram(options);
+		else if(strcmp(model,"power")==0)       variogram = new PowerVariogram(options);
+		else _error_("variogram " << model << " not supported yet (list of supported variogram: gaussian, exponential, spherical and power)");
+	}
+	else variogram = new GaussianVariogram(options);
+
+	/*Assign output pointer*/
+	xDelete<char>(model);
+	*pvariogram = variogram;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp	(revision 27955)
@@ -0,0 +1,49 @@
+/*!\file Mergesolutionfromftogx
+ * \brief merge solution back from f set into g set
+ */
+
+#include "../../shared/io/io.h"
+#include "./Mergesolutionfromftogx.h"
+
+void	Mergesolutionfromftogx( Vector<IssmDouble>** pug, Vector<IssmDouble>* uf, Vector<IssmDouble>* ys, Nodes* nodes, Parameters* parameters, bool flag_ys0){
+
+	/*Display message*/
+	if(VerboseModule()) _printf0_("   Merging solution vector from fset to gset\n");
+
+	/*first, get gsize, fsize and ssize: */
+	int gsize=nodes->NumberOfDofs(GsetEnum);
+	int gsize_local=nodes->NumberOfDofsLocal(GsetEnum);
+	int fsize=nodes->NumberOfDofs(FsetEnum);
+	int ssize=nodes->NumberOfDofs(SsetEnum);
+
+	/*serialize uf and ys: those two vectors will be indexed by the nodes, who are the only ones
+	 *that know which values should be plugged into ug and where: */
+	if(ssize) if(flag_ys0) ys->Set(0.0);
+
+	/*Get local vectors ys and uf*/
+	int        *indices_ys = NULL;
+	IssmDouble *local_ys   = NULL;
+	ys->GetLocalVector(&local_ys,&indices_ys);
+	int        *indices_uf = NULL;
+	IssmDouble *local_uf   = NULL;
+	uf->GetLocalVector(&local_uf,&indices_uf);
+
+	/*initialize ug: */
+	Vector<IssmDouble>* ug=new Vector<IssmDouble>(gsize_local,gsize);
+
+	/*Let nodes figure it out*/
+	for(Object* & object: nodes->objects){
+		Node* node=xDynamicCast<Node*>(object);
+		node->VecMerge(ug,local_uf,indices_uf,local_ys,indices_ys);
+	}
+
+	/*Assemble vector: */
+	ug->Assemble();
+
+	/*Cleanup and assign output pointer*/
+	xDelete<int>(indices_uf);
+	xDelete<int>(indices_ys);
+	xDelete<IssmDouble>(local_uf);
+	xDelete<IssmDouble>(local_ys);
+	*pug=ug;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  Mergesolutionfromftogx.h
+ * \brief merge solution back from f set into g set
+ */ 
+
+#ifndef _MERGESOLUTIONFROMFTOGX_H
+#define _MERGESOLUTIONFROMFTOGX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void	Mergesolutionfromftogx( Vector<IssmDouble>** pug, Vector<IssmDouble>* uf, Vector<IssmDouble>* ys, Nodes* nodes, Parameters* parameters, bool flag_ys0=false);
+
+#endif  /* _MERGESOLUTIONFROMFTOGX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/MeshPartitionx/MeshPartitionx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/MeshPartitionx/MeshPartitionx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/MeshPartitionx/MeshPartitionx.h	(revision 27955)
@@ -0,0 +1,121 @@
+/*!\file:  MeshPartitionx.h
+ * \brief  header file for partitioning module.
+ */ 
+
+#ifndef _MESHPARTITIONX_H
+#define _MESHPARTITIONX_H
+
+#include "../../shared/shared.h"
+
+/* local prototypes: */
+template <class doubletype> 
+int MeshPartitionx(int** pepart,int** pnpart,int numberofelements,int numberofnodes,int* elements,
+		int numberofelements2d,int numberofnodes2d,doubletype* elements2d,int* vweights,int numlayers,int elements_width, int meshelementtype,int num_procs){
+
+	int noerr=1;
+	int i,j;
+
+	/*Metis partitioning: */
+	int* epart=NULL;
+	int* npart=NULL;
+	int* index=NULL;
+
+	int* epart2d=NULL;
+	int* npart2d=NULL;
+	int* index2d=NULL;
+	int  count=0;
+
+	switch(meshelementtype){
+		case TriaEnum:
+		case TetraEnum:
+			epart=xNew<int>(numberofelements);
+			npart=xNew<int>(numberofnodes);
+			index=xNew<int>(elements_width*numberofelements);
+			for (i=0;i<numberofelements;i++){
+				for (j=0;j<elements_width;j++){
+					*(index+elements_width*i+j)=(*(elements+elements_width*i+j))-1; //-1 for C indexing in Metis
+				}
+			}
+
+			/*Partition using Metis:*/
+			if (num_procs>1){
+#ifdef _HAVE_METIS_
+				METIS_PartMeshNodalPatch(numberofelements,numberofnodes,index,vweights,num_procs,epart, npart);
+#else
+				_error_("metis has not beed installed. Cannot run with more than 1 cpu");
+#endif
+			}
+			else if (num_procs==1){
+				/*METIS does not know how to deal with one cpu only!*/
+				for (i=0;i<numberofelements;i++) epart[i]=0;
+				for (i=0;i<numberofnodes;i++)    npart[i]=0;
+			}
+			else _error_("At least one processor is required");
+			break;
+		case PentaEnum:
+			/*We have a 3d mesh, made of a regularly extruded 2d mesh. We first partition the 2d mesh, then we extrude the partition: */
+
+			/*First build concatenated 2d mesh  from 2d_coll and 2d_noncoll: */
+			epart2d=xNew<int>(numberofelements2d);
+			npart2d=xNew<int>(numberofnodes2d); 
+			index2d=xNew<int>(3*numberofelements2d);
+
+			for (i=0;i<numberofelements2d;i++){
+				for (j=0;j<3;j++){
+					*(index2d+3*i+j)=reCast<int>(*(elements2d+3*i+j))-1; //-1 for C indexing in Metis
+				}
+			}
+
+			/*Partition using Metis:*/
+			if (num_procs>1){
+#ifdef _HAVE_METIS_
+				METIS_PartMeshNodalPatch(numberofelements2d,numberofnodes2d,index2d,vweights,num_procs,epart2d,npart2d);
+#else
+				_error_("metis has not beed installed. Cannot run with more than 1 cpu");
+#endif
+			}
+			else if (num_procs==1){
+				/*METIS does not know how to deal with one cpu only!*/
+				for (i=0;i<numberofelements2d;i++) epart2d[i]=0;
+				for (i=0;i<numberofnodes2d;i++)    npart2d[i]=0;
+			}
+			else _error_("At least one processor is required");
+
+			/*Extrude epart2d to epart, using numlayers: */
+			epart=xNew<int>(numberofelements);
+
+			count=0;
+			for(i=0;i<(numlayers-1);i++){
+				for(j=0;j<numberofelements2d;j++){
+					epart[count]=epart2d[j];
+					count++;
+				}
+			}
+
+			/*Extrude npart2d to npart, using numlayers: */
+			npart=xNew<int>(numberofnodes);
+
+			count=0;
+			for(i=0;i<(numlayers);i++){
+				for(j=0;j<numberofnodes2d;j++){
+					npart[count]=npart2d[j];
+					count++;
+				}
+			}
+			break;
+		default:
+			_error_("mesh type "<<EnumToStringx(meshelementtype)<<" not supported yet");
+	}
+
+	/*Assign output pointer:*/
+	*pepart=epart;
+	*pnpart=npart;
+
+	/*Free resources: */
+	xDelete<int>(index);
+	xDelete<int>(epart2d);
+	xDelete<int>(npart2d);
+	xDelete<int>(index2d);
+	return noerr;
+}
+#endif /* _MESHPARTITIONX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp	(revision 27955)
@@ -0,0 +1,418 @@
+/*! \file  MeshProfileIntersectionx.c
+ */
+
+#include "./MeshProfileIntersectionx.h"
+
+void MeshProfileIntersectionx(double** psegments, int* pnumsegs, int* index, double* x, double* y, int nel, int nods,  Contour<IssmPDouble>** contours,int numcontours){/*{{{*/
+
+	int i,j,k;
+
+	/*Contour:*/
+	Contour<IssmPDouble>* contouri=NULL;
+	int      numnodes;
+	double*  xc=NULL;
+	double*  yc=NULL;
+
+	/*output: */
+	double* segments=NULL;
+	int     numsegs;
+
+	/*intermediary: */
+	double** allsegments=NULL;
+	double*  segmentsi=NULL;
+	int*     allnumsegs=NULL;
+	int      numsegsi;
+	int      count;
+
+	/*Allocate: */
+	allsegments=xNew<double*>(numcontours);
+	allnumsegs=xNew<int>(numcontours);
+
+	/*Loop through all contours: */
+	for (i=0;i<numcontours;i++){
+
+		/*retrieve contour info: */
+		contouri=*(contours+i);
+		numnodes=contouri->nods;
+		xc=contouri->x;
+		yc=contouri->y;
+
+		/*determine segmentsi and numsegsi for this contour and the mesh intersection: */
+		MeshSegmentsIntersection(&segmentsi,&numsegsi,index,x,y,nel,nods,xc,yc,numnodes);
+
+		/*save segmentsi: */
+		allsegments[i]=segmentsi;
+		allnumsegs[i]=numsegsi;
+	}
+
+	/*total number of segments? */
+	numsegs=0;
+	for(i=0;i<numcontours;i++)numsegs+=allnumsegs[i];
+
+	/*Out of all segments, create one common array of segments: */
+	segments=xNew<double>(5*numsegs);
+	count=0;
+	for(i=0;i<numcontours;i++){
+
+		segmentsi=allsegments[i];
+		numsegsi=allnumsegs[i];
+
+		for(j=0;j<numsegsi;j++){
+			for(k=0;k<5;k++){
+				*(segments+count*5+k)=*(segmentsi+j*5+k);
+			}
+			count++;
+		}
+	}
+
+	/*Assign output pointers:*/
+	*psegments=segments;
+	*pnumsegs=numsegs;
+}/*}}}*/
+void MeshSegmentsIntersection(double** psegments, int* pnumsegs,int* index, double* x, double* y, int nel, int nods, double* xc, double* yc, int numnodes){/*{{{*/
+
+	int      i,j;
+
+	/*output: */
+	double* segments=NULL;
+	int     numsegs;
+
+	/*intermediary: */
+	DataSet* segments_dataset=NULL;
+	double   xnodes[3];
+	double   ynodes[3];
+
+	/*We don't know how many segments  we are going to get, so have a dynamic container: */
+	segments_dataset=new DataSet();
+
+	/*Go through elements, and call ElementSegmentsIntersection routine: */
+	for(i=0;i<nel;i++){
+		for(j=0;j<3;j++){
+			xnodes[j]=x[*(index+3*i+j)];
+			ynodes[j]=y[*(index+3*i+j)];
+		}
+		ElementSegmentsIntersection(segments_dataset,i,xnodes,ynodes,xc,yc,numnodes);
+	}
+
+	/*Using the segments_dataset dataset, create segments: */
+	numsegs=segments_dataset->Size();
+	segments=xNew<double>(5*numsegs);
+	for(i=0;i<numsegs;i++){
+		Segment<double>* segment=(Segment<double>*)segments_dataset->GetObjectByOffset(i);
+
+		/*x1,y1,x2,y2 then element_id: */
+		segments[5*i+0]=segment->x1;
+		segments[5*i+1]=segment->y1;
+		segments[5*i+2]=segment->x2;
+		segments[5*i+3]=segment->y2;
+		segments[5*i+4]=(double)segment->eid;
+	}
+
+	/*Free resources:*/
+	delete segments_dataset;
+
+	/*Assign output pointers:*/
+	*psegments=segments;
+	*pnumsegs=numsegs;
+}/*}}}*/
+
+/*Utilities*/
+void ElementSegmentsIntersection(DataSet* segments_dataset,int el, double* xnodes,double* ynodes,double* xc,double* yc,int numnodes){/*{{{*/
+
+	double xsegment[2];
+	double ysegment[2];
+
+	/*Loop through contour: */
+	for(int i=0;i<numnodes-1;i++){
+		xsegment[0]=xc[i];
+		xsegment[1]=xc[i+1];
+		ysegment[0]=yc[i];
+		ysegment[1]=yc[i+1];
+		/*if (el==318 && i==9){
+			_printf_("contour: " << i << " " << xsegment[0] << " " << ysegment[0] << " " << xsegment[1] << " " << ysegment[1] 
+				<< " " << xnodes[0] << " " << xnodes[1] << " " << xnodes[2] << " " << ynodes[0] << " " << ynodes[1] << " " << 
+				ynodes[2] << "\n");
+		}*/
+		ElementSegment(segments_dataset,el, i, xnodes,ynodes,xsegment,ysegment);
+	}
+}/*}}}*/
+void ElementSegment(DataSet* segments_dataset,int el, int contouri, double* xnodes,double* ynodes,double* xsegment,double* ysegment){/*{{{*/
+
+	/*We have a tria element (xnodes,ynodes) and a segment (xsegment,ysegment). Find whether they intersect. 
+	 * If they do, create a Segment object with the intersection, and add to segments_dataset dataset: */
+
+	double alpha1,alpha2;
+	double beta1,beta2;
+	double gamma1,gamma2;
+
+	int    edge1,edge2,edge3;
+
+	double xel[2],yel[2];
+	double coord1 = 0.;
+	double coord2 = 0.;
+	double xfinal[2],yfinal[2];
+
+	/*edge 1: */
+	xel[0]=xnodes[0];  yel[0]=ynodes[0]; xel[1]=xnodes[1];  yel[1]=ynodes[1];
+	edge1=SegmentIntersect(&alpha1,&alpha2, xel,yel,xsegment,ysegment); //alpha1: segment coordinate of intersection. alpha2: same thing for second interesection if it exists (colinear edges)
+
+	/*edge 2: */
+	xel[0]=xnodes[1];  yel[0]=ynodes[1]; xel[1]=xnodes[2];  yel[1]=ynodes[2];
+	edge2=SegmentIntersect(&beta1,&beta2, xel,yel,xsegment,ysegment);
+
+	/*edge 3: */
+	xel[0]=xnodes[2];  yel[0]=ynodes[2]; xel[1]=xnodes[0];  yel[1]=ynodes[0];
+	edge3=SegmentIntersect(&gamma1,&gamma2, xel,yel,xsegment,ysegment);
+
+	/*edge can be either IntersectEnum (one and only one intersection between the edge and the segment), ColinearEnum (edge and segment are collinear) and SeparateEnum (no intersection): */
+
+	/*if (el==318 && contouri==9){
+		_printf_(edge1 << " " << edge2 << " " << edge3 << " "  << alpha1 << " " << alpha2 << " " << beta1 << " " << beta2 << " " << gamma1 << " " << gamma2 << " " << xsegment[0] << " "  << xsegment[1] << " " << ysegment[0] << " " << ysegment[1] << " " << xnodes[0] << " " << xnodes[1] << " " << xnodes[2] << " " << ynodes[0] << " " << ynodes[1] << " " << ynodes[2]);
+
+	_printf_("Bool" << (edge1==IntersectEnum) || (edge2==IntersectEnum) || (edge3==IntersectEnum));
+	}*/
+
+	if(    (edge1==IntersectEnum) && (edge2==IntersectEnum) && (edge3==IntersectEnum)   ){
+
+		/*This can only be the case if the segment intersected through one vertex, meaning a pair from alpha1, beta1 or gamma1  is 0:*/
+		if (alpha1!=0 && alpha1!=1){
+			/*The vertex opposite edge 1 was intersected:*/
+			xfinal[0]=xsegment[0]+alpha1*(xsegment[1]-xsegment[0]);
+			yfinal[0]=ysegment[0]+alpha1*(ysegment[1]-ysegment[0]);
+			xfinal[1]=xnodes[2];
+			yfinal[1]=ynodes[2];
+		}
+		else if (beta1!=0 && beta1!=1){
+			/*The vertex opposite edge 2 was intersected:*/
+			xfinal[0]=xsegment[0]+beta1*(xsegment[1]-xsegment[0]);
+			yfinal[0]=ysegment[0]+beta1*(ysegment[1]-ysegment[0]);
+			xfinal[1]=xnodes[0];
+			yfinal[1]=ynodes[0];
+		}
+		else if (gamma1!=0 && gamma1!=1){
+			/*The vertex opposite edge 3 was intersected:*/
+			xfinal[0]=xsegment[0]+gamma1*(xsegment[1]-xsegment[0]);
+			yfinal[0]=ysegment[0]+gamma1*(ysegment[1]-ysegment[0]);
+			xfinal[1]=xnodes[1];
+			yfinal[1]=ynodes[1];
+		}
+		segments_dataset->AddObject(new  Segment<double>(el+1,xfinal[0],yfinal[0],xfinal[1],yfinal[1]));
+
+		/*This case is impossible: not quite! */
+		//_printf_(alpha1 << " " << alpha2 << " " << beta1 << " " << beta2 << " " << gamma1 << " " << gamma2 << " " << xsegment[0] << " "  << xsegment[1] << " " << ysegment[0] << " " << ysegment[1] << " " << xnodes[0] << " " << xnodes[1] << " " << xnodes[2] << " " << ynodes[0] << " " << ynodes[1] << " " << ynodes[2]);
+		/* _error_("error: a line cannot go through 3 different vertices!");*/
+	}
+	else if(    ((edge1==IntersectEnum) && (edge2==IntersectEnum)) || ((edge2==IntersectEnum) && (edge3==IntersectEnum)) || ((edge3==IntersectEnum) && (edge1==IntersectEnum))   ){
+
+		/*segment interscts 2 opposite edges of our triangle, at 2 segment coordinates, pick up the lowest (coord1) and highest (coord2): */
+		if((edge1==IntersectEnum) && (edge2==IntersectEnum)) {coord1=min(alpha1,beta1); coord2=max(alpha1,beta1);}
+		if((edge2==IntersectEnum) && (edge3==IntersectEnum)) {coord1=min(beta1,gamma1); coord2=max(beta1,gamma1);}
+		if((edge3==IntersectEnum) && (edge1==IntersectEnum)) {coord1=min(gamma1,alpha1); coord2=max(gamma1,alpha1);}
+
+		/*check this segment did not intersect at a vertex of the tria: */
+		if(coord1!=coord2){
+
+			xfinal[0]=xsegment[0]+coord1*(xsegment[1]-xsegment[0]);
+			xfinal[1]=xsegment[0]+coord2*(xsegment[1]-xsegment[0]);
+			yfinal[0]=ysegment[0]+coord1*(ysegment[1]-ysegment[0]);
+			yfinal[1]=ysegment[0]+coord2*(ysegment[1]-ysegment[0]);
+
+			segments_dataset->AddObject(new  Segment<double>(el+1,xfinal[0],yfinal[0],xfinal[1],yfinal[1]));
+		}
+		else{
+			/*the segment intersected at the vertex, do not bother with this "0" length segment!:*/
+		}
+	}
+	else if(  (edge1==IntersectEnum) || (edge2==IntersectEnum) || (edge3==IntersectEnum)   ){
+
+		/*if (el==318 && contouri==9){
+			_printf_("hello" <<  " NodeInElement 0 " << (NodeInElement(xnodes,ynodes,xsegment[0],ysegment[0])) <<  " NodeInElement 1 " << (NodeInElement(xnodes,ynodes,xsegment[1],ysegment[1])));
+		}*/
+
+		/*segment intersect only 1 edge. Figure out where the first point in the segment is, inside or outside the element, 
+		 * this will decide the coordinate: */
+		if (NodeInElement(xnodes,ynodes,xsegment[0],ysegment[0])){
+			coord1=0;
+			if(edge1==IntersectEnum){coord2=alpha1;}
+			if(edge2==IntersectEnum){coord2=beta1;}
+			if(edge3==IntersectEnum){coord2=gamma1;}
+		}
+		else if (NodeInElement(xnodes,ynodes,xsegment[1],ysegment[1])){
+			if(edge1==IntersectEnum){coord1=alpha1;}
+			if(edge2==IntersectEnum){coord1=beta1;}
+			if(edge3==IntersectEnum){coord1=gamma1;}
+			coord2=1.0;
+		}
+		else{
+			double tolerance=1e-10;
+			/*Ok, we have an issue here. Probably one of the segments' end is on a vertex, within a certain tolerance!*/
+			if (IsIdenticalNode(xnodes[0],ynodes[0],xsegment[0],ysegment[0],tolerance) ||
+				IsIdenticalNode(xnodes[1],ynodes[1],xsegment[0],ysegment[0],tolerance) ||
+				IsIdenticalNode(xnodes[2],ynodes[2],xsegment[0],ysegment[0],tolerance)){
+
+				/*ok, segments[0] is common to one of our vertices: */
+				coord1=0;
+				if(edge1==IntersectEnum){coord2=alpha1;}
+				if(edge2==IntersectEnum){coord2=beta1;}
+				if(edge3==IntersectEnum){coord2=gamma1;}
+			}
+			else if (IsIdenticalNode(xnodes[0],ynodes[0],xsegment[1],ysegment[1],tolerance) ||
+				     IsIdenticalNode(xnodes[1],ynodes[1],xsegment[1],ysegment[1],tolerance) ||
+				     IsIdenticalNode(xnodes[2],ynodes[2],xsegment[1],ysegment[1],tolerance)){
+
+				/*ok, segments[1] is common to one of our vertices: */
+				//if (el==318 && contouri==9){ _printf_("ok2" << "\n"); }
+				if(edge1==IntersectEnum){coord1=alpha1;}
+				if(edge2==IntersectEnum){coord1=beta1;}
+				if(edge3==IntersectEnum){coord1=gamma1;}
+				coord2=1.0;
+			}
+		}
+
+		xfinal[0]=xsegment[0]+coord1*(xsegment[1]-xsegment[0]);
+		xfinal[1]=xsegment[0]+coord2*(xsegment[1]-xsegment[0]);
+		yfinal[0]=ysegment[0]+coord1*(ysegment[1]-ysegment[0]);
+		yfinal[1]=ysegment[0]+coord2*(ysegment[1]-ysegment[0]);
+
+		segments_dataset->AddObject(new  Segment<double>(el+1,xfinal[0],yfinal[0],xfinal[1],yfinal[1]));
+	}
+	else{
+		/*No interesections, but the segment might be entirely inside this triangle!: */
+		if ( (NodeInElement(xnodes,ynodes,xsegment[0],ysegment[0])) && (NodeInElement(xnodes,ynodes,xsegment[1],ysegment[1])) ){
+			segments_dataset->AddObject(new  Segment<double>(el+1,xsegment[0],ysegment[0],xsegment[1],ysegment[1]));
+		}
+	}
+}/*}}}*/
+bool NodeInElement(double* xnodes, double* ynodes, double x, double y){/*{{{*/
+
+	double x1,y1;
+	double x2,y2;
+	double x3,y3;
+	double lambda1,lambda2,lambda3;
+	double det;
+
+	x1=xnodes[0];
+	x2=xnodes[1];
+	x3=xnodes[2];
+	y1=ynodes[0];
+	y2=ynodes[1];
+	y3=ynodes[2];
+
+	/*compute determinant: */
+	det=x1*y2-x1*y3-x3*y2-x2*y1+x2*y3+x3*y1;
+
+	/*area coordinates: */
+	lambda1=((y2-y3)*(x-x3)+(x3-x2)*(y-y3))/det;
+	lambda2=((y3-y1)*(x-x3)+(x1-x3)*(y-y3))/det;
+	lambda3=1-lambda1-lambda2;
+
+	if( ((lambda1<=1) && (lambda1>=0)) && ((lambda2<=1) && (lambda2>=0)) && ((lambda3<=1) && (lambda3>=0))  )return true;
+	else return false;
+
+}/*}}}*/
+int SegmentIntersect(double* palpha, double* pbeta, double* x1, double* y1, double* x2, double* y2){/*{{{*/
+
+	/*See ISSM_DIR/src/m/utils/Geometry/SegIntersect.m for matlab routine from which we take this routine: */
+
+	/*output: */
+	double alpha=-1;
+	double beta=-1;
+
+	double xA,xB,xC,xD,yA,yB,yC,yD;
+	double O2A[2],O2B[2],O1C[2],O1D[2];
+	double n1[2],n2[2];
+	double test1, test2, test3, test4;
+	double det;
+	double O2O1[2];
+	double pO1A,pO1B,pO1C,pO1D;
+
+	xA=x1[0]; yA=y1[0];
+	xB=x1[1]; yB=y1[1];
+	xC=x2[0]; yC=y2[0];
+	xD=x2[1]; yD=y2[1];
+
+	O2A[0]=xA -(xD/2+xC/2); O2A[1]=yA -(yD/2+yC/2);
+	O2B[0]=xB -(xD/2+xC/2); O2B[1]=yB -(yD/2+yC/2);
+	O1C[0]=xC -(xA/2+xB/2); O1C[1]=yC -(yA/2+yB/2);
+	O1D[0]=xD -(xA/2+xB/2); O1D[1]=yD -(yA/2+yB/2);
+
+	n1[0]=yA-yB; n1[1]=xB-xA;  //normal vector to segA
+	n2[0]=yC-yD; n2[1]=xD-xC;  //normal vector to segB
+
+	test1=n2[0]*O2A[0]+n2[1]*O2A[1];
+	test2=n2[0]*O2B[0]+n2[1]*O2B[1];
+
+	if (test1*test2>0){
+		return SeparateEnum;
+	}
+
+	test3=n1[0]*O1C[0]+n1[1]*O1C[1];
+	test4=n1[0]*O1D[0]+n1[1]*O1D[1];
+
+	if (test3*test4>0){
+		return SeparateEnum;
+	}
+
+	/*If colinear: */
+	det=n1[0]*n2[1]-n2[0]*n1[1];
+
+	if(test1*test2==0 && test3*test4==0 && det==0){
+
+		//projection on the axis O1O2
+		O2O1[0]=(xA/2+xB/2)-(xD/2+xC/2);
+		O2O1[1]=(yA/2+yB/2)-(yD/2+yC/2);
+
+		pO1A=O2O1[0]*(O2A[0]-O2O1[0])+O2O1[1]*(O2A[1]-O2O1[1]);
+		pO1B=O2O1[0]*(O2B[0]-O2O1[0])+O2O1[1]*(O2B[1]-O2O1[1]);
+		pO1C=O2O1[0]*O1C[0]+O2O1[1]*O1C[1];
+		pO1D=O2O1[0]*O1D[0]+O2O1[1]*O1D[1];
+
+		//test if one point is included in the other segment (->intersects=true)
+		if ((pO1C-pO1A)*(pO1D-pO1A)<0){
+			alpha=0; beta=0;
+			*palpha=alpha;*pbeta=beta;
+			return ColinearEnum;
+		}
+		if ((pO1C-pO1B)*(pO1D-pO1B)<0){
+			alpha=0; beta=0;
+			*palpha=alpha;*pbeta=beta;
+			return ColinearEnum;
+		}
+		if ((pO1A-pO1C)*(pO1B-pO1C)<0){
+			alpha=0; beta=0;
+			*palpha=alpha;*pbeta=beta;
+			return ColinearEnum;
+		}
+		if ((pO1A-pO1D)*(pO1B-pO1D)<0){
+			alpha=0; beta=0;
+			*palpha=alpha;*pbeta=beta;
+			return ColinearEnum;
+		}
+
+		//test if the 2 segments have the same middle (->intersects=true)
+		if(O2O1[0]==0 && O2O1[1]){
+			alpha=0; beta=0;
+			*palpha=alpha;*pbeta=beta;
+			return ColinearEnum;
+		}
+
+		//if we are here, both segments are colinear, but do not interset:
+		alpha=-1; beta=-1;
+		*palpha=alpha;*pbeta=beta;
+		return SeparateEnum;
+	}
+
+	/*if we are here, both segments intersect. Determine where in the segment coordinate 
+	 * system: */
+	beta=-1;
+	alpha=-(xA*yB-xC*yB+yC*xB-yC*xA+xC*yA-yA*xB)/(-xD*yB+xD*yA+xC*yB-xC*yA-yD*xA+yD*xB+yC*xA-yC*xB); //from intersect.m in formal calculus
+
+	*palpha=alpha;*pbeta=beta;
+	return IntersectEnum;
+}/*}}}*/
+bool IsIdenticalNode(double x1, double y1, double x2, double y2, double tolerance){ /*{{{*/
+
+	if (sqrt(pow(x1-x2,2.0) + pow(y1-y2,2))<tolerance)return true;
+	else return false;
+
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.h	(revision 27955)
@@ -0,0 +1,20 @@
+/*
+	MeshProfileIntersectionx.h
+*/
+
+#ifndef _MESHPROFILEINTERSECTIONX_H
+#define _MESHPROFILEINTERSECTIONX_H
+
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void MeshProfileIntersectionx(double** psegments, int* pnumseg, int* index, double* x, double* y, int nel, int nods,  Contour<IssmPDouble>** contours,int numcontours);
+void MeshSegmentsIntersection(double** psegments, int* pnumsegs,int* index, double* x, double* y, int nel, int nods, double* xc, double* yc, int numnodes);
+void ElementSegmentsIntersection(DataSet* segments_dataset,int el, double* xnodes,double* ynodes,double* xc,double* yc,int numnodes);
+void ElementSegment(DataSet* segments_dataset,int el,int contouri, double* xnodes,double* ynodes,double* xsegment,double* ysegment);
+int  SegmentIntersect(double* palpha, double* pbeta, double* x1, double* y1, double* x2, double* y2);
+bool NodeInElement(double* xnodes, double* ynodes, double x, double y);
+bool IsIdenticalNode(double x1, double y1, double x2, double y2, double tolerance);
+
+#endif /* _MESHPROFILEINTERSECTIONX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/MmeToInputFromIdx/MmeToInputFromIdx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/MmeToInputFromIdx/MmeToInputFromIdx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/MmeToInputFromIdx/MmeToInputFromIdx.cpp	(revision 27955)
@@ -0,0 +1,70 @@
+/*!\file MmeToInputFromId
+ * \brief: compute damage
+ */
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "../../classes/Inputs/DatasetInput.h"
+#include "../../classes/Inputs/TransientInput.h"
+#include "../../classes/Inputs/TriaInput.h"
+#include "./MmeToInputFromIdx.h"
+
+void MmeToInputFromIdx(Inputs* inputs, Elements* elements, int id, int rootenum, int interpolationenum){
+
+	TransientInput* transientinput  = NULL;
+	TransientInput* transientinput2 = NULL;
+	Tria* element                    = NULL;
+	IssmDouble value;
+	IssmDouble* values               = NULL;
+	IssmDouble* times                = NULL;
+	int N;
+
+	/*find thickness dataset: */
+	DatasetInput* datasetinput = inputs->GetDatasetInput(rootenum);
+
+	/*Initialize new transient input: */
+	transientinput = datasetinput->GetTransientInputByOffset(0); _assert_(transientinput);
+	transientinput->GetAllTimes(&times,&N);
+	inputs->SetTransientInput(DummyEnum,times,N);
+	transientinput2 = inputs->GetTransientInput(DummyEnum);
+
+	for(Object* & object : elements->objects){
+		Tria*   element=xDynamicCast<Tria*>(object);
+
+		/*recover the right field from the mme: */
+		transientinput = datasetinput->GetTransientInputByOffset(id); _assert_(transientinput);
+
+		/*copy values from the transientinput to the final transientinput2: */
+		for (int j=0;j<N;j++){
+			TriaInput* tria_input=transientinput->GetTriaInput(j);
+			element->InputServe(tria_input);
+			if(interpolationenum==P0Enum){
+				value=tria_input->element_values[0];
+				transientinput2->AddTriaTimeInput( j,1,&(element->lid),&value,P0Enum);
+			}
+			else if(interpolationenum==P1Enum){
+
+				/*Get values and lid list*/
+				const int   numvertices     = element->GetNumberOfVertices();
+				int        *vertexlids      = xNew<int>(numvertices);
+				int        *vertexsids      = xNew<int>(numvertices);
+
+				/*Recover vertices ids needed to initialize inputs*/
+				element->GetVerticesLidList(&vertexlids[0]);
+				element->GetVerticesSidList(&vertexsids[0]);
+				values=tria_input->element_values;
+				transientinput2->AddTriaTimeInput( j,numvertices,vertexlids,values,P1Enum);
+			}
+		}
+	}
+
+	/*wipe out existing SurfaceloadIceThicknessChangeEnum dataset:*/
+	inputs->ChangeEnum(DummyEnum,rootenum);
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/MmeToInputFromIdx/MmeToInputFromIdx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/MmeToInputFromIdx/MmeToInputFromIdx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/MmeToInputFromIdx/MmeToInputFromIdx.h	(revision 27955)
@@ -0,0 +1,11 @@
+#ifndef _MMETOINPUTFROMIDX_H
+#define _MMETOINPUTFROMIDX_H
+
+class Inputs; 
+class Elements; 
+class Parameters;
+
+/* local prototypes: */
+void  MmeToInputFromIdx(Inputs* inputs, Elements* elements, int id, int rootenum, int interpolationenum);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp	(revision 27955)
@@ -0,0 +1,185 @@
+/*!\file: CreateParametersAutodiff.cpp
+ * \brief driver for creating parameters dataset, for autodiff analysis.
+ */ 
+
+#include "../../../toolkits/toolkits.h"
+#include "../../../classes/classes.h"
+#include "../../../shared/shared.h"
+#include "../ModelProcessorx.h"
+
+void CreateParametersAutodiff(Parameters* parameters,IoModel* iomodel){
+
+	#if defined(_HAVE_AD_) 
+	int         i;
+	bool        isautodiff;
+	int         num_dependent_objects;
+	int         num_dep=0;
+	char**      names=NULL;
+	int         dummy;
+	char*       autodiff_driver=NULL;
+	int*        indices=NULL;
+	int         num_indices;
+	char* options=NULL;
+	char* toolkit=NULL;
+
+	IssmDouble* xp=NULL;
+	IssmDouble* xp_backup=NULL;
+	int         num_ind,local_num_ind;
+	DataSet*    dependent_objects=NULL;
+
+	/*retrieve some parameters: */
+	iomodel->FindConstant(&isautodiff,"md.autodiff.isautodiff");
+
+	#ifdef _HAVE_ADOLC_
+	/*initialize a placeholder to store solver pointers*/
+	GenericParam<Adolc_edf> *theAdolcEDF_p=new GenericParam<Adolc_edf>(AdolcParamEnum);
+
+	/*Solver pointers depend on what type of solver we are implementing: */
+	options=OptionsFromAnalysis(&toolkit,parameters,DefaultAnalysisEnum);
+	ToolkitOptions::Init(toolkit,options);
+	xDelete<char>(toolkit);
+
+	switch(IssmSolverTypeFromToolkitOptions()){
+		case MumpsEnum:{
+								#ifdef _HAVE_MUMPS_
+								theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p=reg_ext_fct(mumpsSolveEDF);
+								#else
+								_error_("requesting mumps solver without MUMPS being compiled in!");
+								#endif
+								break;
+							}
+		case GslEnum: {
+							  #ifdef _HAVE_GSL_
+							  theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p=reg_ext_fct(EDF_for_solverx);
+							  #else
+							  _error_("requesting GSL solver without GSL being compiled in!");
+							  #endif
+							  break;
+						  }
+		default:
+						_error_("solver type not supported yet!");
+	}
+
+	// to save some space:
+	// we know we won't use adolc inside of  the solver:
+	theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p->nestedAdolc=false;
+	// the solution vector is just allocated and doesn't have a meaningful prior value
+	theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p->dp_y_priorRequired=false;
+	// the solver wrapper makes sure the matrix and the right hand side don't change
+	theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p->dp_x_changes=false;
+	parameters->AddObject(theAdolcEDF_p);
+
+	/*Free resources: */
+	xDelete<char>(options);
+
+	#elif _HAVE_CODIPACK_
+	/*initialize a placeholder to store solver pointers*/
+	/*Solver pointers depend on what type of solver we are implementing: */
+	options=OptionsFromAnalysis(&toolkit,parameters,DefaultAnalysisEnum);
+	ToolkitOptions::Init(toolkit,options);
+	xDelete<char>(toolkit);
+
+	switch(IssmSolverTypeFromToolkitOptions()){
+		case MumpsEnum:{
+								#ifndef _HAVE_MUMPS_
+								_error_("CoDiPack: requesting mumps solver without MUMPS being compiled in!");
+								#endif
+								break;
+							}
+		case GslEnum: {
+							  #ifndef _HAVE_GSL_
+							  _error_("CoDiPack: requesting GSL solver without GSL being compiled in!");
+							  #endif
+							  break;
+						  }
+		default:
+						_error_("solver type not supported yet!");
+	}
+	/*Free resources: */
+	xDelete<char>(options);
+	#endif
+
+	if(isautodiff){
+		#if defined(_HAVE_ADOLC_)
+		/*Copy some parameters from IoModel to parameters dataset*/
+		parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.obufsize",AutodiffObufsizeEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.cbufsize",AutodiffCbufsizeEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.lbufsize",AutodiffLbufsizeEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.tbufsize",AutodiffTbufsizeEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.gcTriggerRatio",AutodiffGcTriggerRatioEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.gcTriggerMaxSize",AutodiffGcTriggerMaxSizeEnum));
+
+		#elif defined(_HAVE_CODIPACK_)
+		parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.tapeAlloc",AutodiffTapeAllocEnum));
+
+		#else
+		_error_("not supported yet");
+		#endif
+
+		/*retrieve driver:*/
+		iomodel->FindConstant(&autodiff_driver,"md.autodiff.driver");
+		parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.driver",AutodiffDriverEnum));
+
+		if(strcmp(autodiff_driver,"fos_forward")==0){
+#if _HAVE_CODIPACK_
+			// FIXME codi support Foward Mode (scalar)
+			_error_("Foward Mode (scalar) not supported yet!");
+#endif
+			parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.fos_forward_index",AutodiffFosForwardIndexEnum));
+		}
+		else if(strcmp(autodiff_driver,"fos_reverse")==0){
+			parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.fos_reverse_index",AutodiffFosReverseIndexEnum));
+		}
+		else if(strcmp(autodiff_driver,"fov_forward")==0){
+#if _HAVE_CODIPACK_
+			// FIXME codi support Foward Mode (vector)
+			_error_("Foward Mode (vector) not supported yet!");
+#endif
+			/*Retrieve list of indices: */
+			iomodel->FetchData(&indices,&num_indices,&dummy,"md.autodiff.fov_forward_indices");
+			parameters->AddObject(new IntMatParam(AutodiffFovForwardIndicesEnum,indices,num_indices,1));
+			xDelete<int>(indices);
+		}
+		xDelete<char>(autodiff_driver);
+
+		/*Deal with dependents first:*/
+
+		iomodel->FindConstant(&num_dependent_objects,"md.autodiff.num_dependent_objects");
+		dependent_objects=new DataSet();
+		num_dep=0;
+
+		if(num_dependent_objects){
+			iomodel->FindConstant(&names,&dummy,"md.autodiff.dependent_object_names");
+
+			for(i=0;i<num_dependent_objects;i++){
+				DependentObject* dep=new DependentObject(names[i]);
+				dependent_objects->AddObject(dep);
+				num_dep++;
+			}
+
+			/*Free resources:*/
+			for(i=0;i<num_dependent_objects;i++){
+				char* string=names[i]; xDelete<char>(string);
+			}
+			xDelete<char*>(names);
+		}
+		parameters->AddObject(new DataSetParam(AutodiffDependentObjectsEnum,dependent_objects));
+		parameters->AddObject(new IntParam(AutodiffNumDependentsEnum,num_dep));
+		delete dependent_objects;
+
+		/*Deal with independents*/
+
+		/*Independents have already been recovered in iomodel->DeclareIndependents. Just do some more processing. 
+		 *In particular, figure out num_independents, and create the state vector xp, or size num_independents x 1 :*/
+		num_ind=iomodel->NumIndependents();
+		parameters->AddObject(new IntParam(AutodiffNumIndependentsEnum,num_ind));
+
+		if(num_ind){
+			xp=xNew<IssmDouble>(num_ind);
+			iomodel->FillIndependents(xp);
+			parameters->AddObject(new DoubleVecParam(AutodiffXpEnum,xp,num_ind));
+			xDelete<IssmDouble>(xp);
+		}
+	}
+	#endif
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 27955)
@@ -0,0 +1,160 @@
+/*!\file: CreateParametersControl.cpp
+ * \brief driver for creating parameters dataset, for control analysis.
+ */ 
+
+#include "../../../toolkits/toolkits.h"
+#include "../../../classes/classes.h"
+#include "../../../shared/shared.h"
+#include "../ModelProcessorx.h"
+
+void CreateParametersControl(Parameters* parameters,IoModel* iomodel,int solution_type){
+
+	bool        control_analysis;
+	int         inversiontype;
+	int         nsteps;
+	int         num_controls;
+	int         num_costfunc;
+	char**      controls      = NULL;
+	int        *maxiter       = NULL;
+	char**      cm_responses  = NULL;
+	IssmDouble *cm_jump       = NULL;
+	IssmDouble *optscal       = NULL;
+	IssmDouble *control_scaling_factors = NULL;
+
+	/*retrieve some parameters: */
+	iomodel->FindConstant(&control_analysis,"md.inversion.iscontrol");
+	iomodel->FindConstant(&inversiontype,"md.inversion.type");
+
+	if(control_analysis){
+
+		switch(inversiontype){
+			case 0:/*Brent Search*/
+			case 1:/*TAO*/
+			case 2:/*M1QN3*/
+			case 3:/*Validation*/
+				  {
+				/*How many controls and how many responses?*/
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.num_control_parameters",InversionNumControlParametersEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.num_cost_functions",InversionNumCostFunctionsEnum));
+
+				/*recover controls and convert to Enums*/
+				iomodel->FindConstant(&controls,&num_controls,"md.inversion.control_parameters");
+				if(num_controls<1) _error_("no controls found");
+				int* control_enums=xNew<int>(num_controls);
+				for(int i=0;i<num_controls;i++){
+					control_enums[i]=StringToEnumx(controls[i]);
+					xDelete<char>(controls[i]);
+				}
+				xDelete<char*>(controls);
+				parameters->AddObject(new IntVecParam(InversionControlParametersEnum,control_enums,num_controls));
+
+				iomodel->FindConstant(&cm_responses,&num_costfunc,"md.inversion.cost_functions");
+				if(num_costfunc<1) _error_ ("no cost functions found");
+				int* costfunc_enums=xNew<int>(num_costfunc);
+				for(int i=0;i<num_costfunc;i++){
+					costfunc_enums[i]=StringToEnumx(cm_responses[i]);
+					xDelete<char>(cm_responses[i]);
+				}
+				xDelete<char*>(cm_responses);
+				parameters->AddObject(new IntVecParam(InversionCostFunctionsEnum,costfunc_enums,num_costfunc));
+
+				xDelete<int>(control_enums);
+				xDelete<int>(costfunc_enums);
+
+				break;
+				  }
+			case 4:/*AD M1QN3*/
+				  {
+			 /*Intermediaries*/
+			int     num_independent_objects,M;
+			char**  names = NULL;
+
+			/*this is done somewhere else*/
+			parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.num_independent_objects",InversionNumControlParametersEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.num_dependent_objects",InversionNumCostFunctionsEnum));
+
+			/*Step 1: create controls (independents)*/
+			iomodel->FetchData(&num_independent_objects,"md.autodiff.num_independent_objects");  _assert_(num_independent_objects>0);
+			iomodel->FetchMultipleData(&names,&M,"md.autodiff.independent_name");                _assert_(M==num_independent_objects);
+			iomodel->FetchMultipleData(&control_scaling_factors,&M,"md.autodiff.independent_scaling_factor"); _assert_(M==num_independent_objects);
+			int* ind_enums=xNew<int>(num_independent_objects);
+			for(int i=0;i<num_independent_objects;i++){
+				ind_enums[i]=StringToEnumx(names[i]);
+				xDelete<char>(names[i]);
+			}
+			xDelete<char*>(names);
+			parameters->AddObject(new DoubleVecParam(InversionControlScalingFactorsEnum,control_scaling_factors,num_independent_objects));
+			parameters->AddObject(new IntVecParam(InversionControlParametersEnum,ind_enums,num_independent_objects));
+			xDelete<int>(ind_enums);	
+
+			/*Step 2: create cost functions (dependent)*/
+			iomodel->FindConstant(&cm_responses,&num_costfunc,"md.autodiff.dependent_object_names");
+			if(num_costfunc<1) _error_ ("no cost functions found");
+			int* costfunc_enums=xNew<int>(num_costfunc);
+			for(int i=0;i<num_costfunc;i++){
+				costfunc_enums[i]=StringToEnumx(cm_responses[i]);
+				xDelete<char>(cm_responses[i]);
+			}
+			xDelete<char*>(cm_responses);
+			parameters->AddObject(new IntVecParam(InversionCostFunctionsEnum,costfunc_enums,num_costfunc));
+			xDelete<int>(costfunc_enums);
+
+			break;
+			}
+			default:
+				_error_("not supported");
+		}
+
+		/*Inversion type specifics*/
+		switch(inversiontype){
+			case 0:/*Brent Search*/
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.incomplete_adjoint",InversionIncompleteAdjointEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.nsteps",InversionNstepsEnum));
+				iomodel->FetchData(&cm_jump,&nsteps,NULL,"md.inversion.step_threshold");
+				iomodel->FetchData(&optscal,NULL,NULL,"md.inversion.gradient_scaling");
+				iomodel->FetchData(&maxiter,NULL,NULL,"md.inversion.maxiter_per_step");
+				parameters->AddObject(new DoubleMatParam(InversionGradientScalingEnum,optscal,nsteps,num_controls));
+				parameters->AddObject(new DoubleVecParam(InversionStepThresholdEnum,cm_jump,nsteps));
+				parameters->AddObject(new IntVecParam(InversionMaxiterPerStepEnum,maxiter,nsteps));
+				break;
+			case 1:/*TAO*/
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.incomplete_adjoint",InversionIncompleteAdjointEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.gatol",InversionGatolEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.grtol",InversionGrtolEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.gttol",InversionGttolEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.maxsteps",InversionMaxstepsEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.maxiter",InversionMaxiterEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.algorithm",InversionAlgorithmEnum));
+				break;
+			case 2:/*M1QN3*/
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.incomplete_adjoint",InversionIncompleteAdjointEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.dxmin",InversionDxminEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.dfmin_frac",InversionDfminFracEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.gttol",InversionGttolEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.maxsteps",InversionMaxstepsEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.maxiter",InversionMaxiterEnum));
+				iomodel->FetchData(&control_scaling_factors,NULL,NULL,"md.inversion.control_scaling_factors");
+				parameters->AddObject(new DoubleVecParam(InversionControlScalingFactorsEnum,control_scaling_factors,num_controls));
+				break;
+			case 3:/*Validation*/
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.incomplete_adjoint",InversionIncompleteAdjointEnum));
+				iomodel->FetchData(&control_scaling_factors,NULL,NULL,"md.inversion.control_scaling_factors");
+				parameters->AddObject(new DoubleVecParam(InversionControlScalingFactorsEnum,control_scaling_factors,num_controls));
+				break;
+			case 4:/*AD M1QN3*/
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.dxmin",InversionDxminEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.dfmin_frac",InversionDfminFracEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.gttol",InversionGttolEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.maxsteps",InversionMaxstepsEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.maxiter",InversionMaxiterEnum));
+			break;
+			default:
+				_error_("not supported");
+		}
+
+		xDelete<int>(maxiter);
+		xDelete<IssmDouble>(control_scaling_factors);
+		iomodel->DeleteData(cm_jump,"md.inversion.step_threshold");
+		iomodel->DeleteData(optscal,"md.inversion.gradient_scaling");
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp	(revision 27955)
@@ -0,0 +1,330 @@
+/*
+ * UpdateElementsAndMaterialsControl:
+ */
+
+#include "../../../toolkits/toolkits.h"
+#include "../../../classes/classes.h"
+#include "../../../shared/shared.h"
+#include "../../MeshPartitionx/MeshPartitionx.h"
+#include "../ModelProcessorx.h"
+
+void	UpdateElementsAndMaterialsControl(Elements* elements,Parameters* parameters,Inputs* inputs,Materials* materials, IoModel* iomodel){
+	/*Intermediary*/
+	bool       control_analysis;
+	int        M,N;
+	int        control,cost_function,domaintype;
+	int        num_controls,num_cost_functions;
+	IssmDouble yts,scale;
+	Element     *element          = NULL;
+	Material    *material         = NULL;
+	int         *control_enums    = NULL;
+	char       **controls         = NULL;
+	char       **cost_functions   = NULL;
+	IssmDouble  *independent      = NULL;
+	IssmDouble  *independents_min = NULL;
+	IssmDouble  *independents_max = NULL;
+	IssmDouble  *weights          = NULL;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&control_analysis,"md.inversion.iscontrol");
+	if(!control_analysis) return;
+
+	/*Fetch parameters: */
+	bool isautodiff;
+	iomodel->FindConstant(&isautodiff,"md.autodiff.isautodiff");
+	if(isautodiff){
+		UpdateElementsAndMaterialsControlAD(elements,parameters,inputs,materials,iomodel);
+		return;
+	}
+
+	/*Process controls and convert from string to enums*/
+	iomodel->FindConstant(&num_controls,"md.inversion.num_control_parameters");
+	iomodel->FindConstant(&controls,&num_controls,"md.inversion.control_parameters");
+	if(num_controls<1) _error_("no controls found");
+	control_enums=xNew<int>(num_controls);
+	for(int i=0;i<num_controls;i++){
+		control_enums[i]=StringToEnumx(controls[i]);
+	}
+
+	/*Process cost functions and convert from string to enums*/
+	iomodel->FindConstant(&num_cost_functions,"md.inversion.num_cost_functions");
+	iomodel->FindConstant(&cost_functions,&num_cost_functions,"md.inversion.cost_functions");
+	if(num_cost_functions<1) _error_("No cost functions found");
+	int* cost_function_enums=xNew<int>(num_cost_functions);
+	for(int i=0;i<num_cost_functions;++i){
+		cost_function_enums[i]=StringToEnumx(cost_functions[i]);
+	}
+
+	/*Fetch Observations and add to inputs*/
+	iomodel->FindConstant(&domaintype,"md.mesh.domain_type");
+	iomodel->FindConstant(&yts,"md.constants.yts");
+	iomodel->FetchData(&weights,&M,&N,"md.inversion.cost_functions_coefficients");
+
+	/*Transpose weights for simplicity!*/
+	if(M*N && N>1){
+		IssmDouble* weights_transp = xNew<IssmDouble>(M*N);
+		for(int i=0;i<M;i++) for(int j=0;j<N;j++) weights_transp[j*M+i] = weights[i*N+j];
+		xDelete<IssmDouble>(weights);
+		weights = weights_transp;
+	}
+
+	if(M!=iomodel->numberofvertices && N!=num_cost_functions) _error_("not supported");
+	for(int i=0;i<num_cost_functions;i++){
+		cost_function=cost_function_enums[i];
+		if(     cost_function==ThicknessAbsMisfitEnum) iomodel->FetchDataToInput(inputs,elements,"md.inversion.thickness_obs",InversionThicknessObsEnum);
+		else if(cost_function==SurfaceAbsMisfitEnum)   iomodel->FetchDataToInput(inputs,elements,"md.inversion.surface_obs",InversionSurfaceObsEnum);
+		else if(cost_function==RheologyBInitialguessMisfitEnum) iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_B",RheologyBInitialguessEnum);
+		else if(cost_function==SurfaceAbsVelMisfitEnum
+			  || cost_function==SurfaceRelVelMisfitEnum
+			  || cost_function==SurfaceLogVelMisfitEnum
+			  || cost_function==SurfaceLogVxVyMisfitEnum
+			  || cost_function==SurfaceAverageVelMisfitEnum){
+			iomodel->FetchDataToInput(inputs,elements,"md.inversion.vx_obs",InversionVxObsEnum);
+			if(domaintype!=Domain2DverticalEnum) iomodel->FetchDataToInput(inputs,elements,"md.inversion.vy_obs",InversionVyObsEnum); 
+		}
+		for(Object* & object : elements->objects){
+			Element* element=xDynamicCast<Element*>(object);
+			element->DatasetInputAdd(InversionCostFunctionsCoefficientsEnum,&weights[i*iomodel->numberofvertices],inputs,iomodel,M,1,1,cost_function,cost_function);
+		}
+	}
+	parameters->AddObject(new IntParam(ControlInputSizeMEnum,iomodel->numberofvertices));
+	xDelete<IssmDouble>(weights);
+
+	/*Get controls*/
+	iomodel->FetchData(&independents_min,&M,&N,"md.inversion.min_parameters");
+	if(M!=iomodel->numberofvertices && N!=num_controls) _error_("not supported");
+	iomodel->FetchData(&independents_max,&M,&N,"md.inversion.max_parameters");
+	if(M!=iomodel->numberofvertices && N!=num_controls) _error_("not supported");
+
+	/*Transpose weights for simplicity!*/
+	if(M*N && N>1){
+		IssmDouble* independents_min_transp = xNew<IssmDouble>(M*N);
+		for(int i=0;i<M;i++) for(int j=0;j<N;j++) independents_min_transp[j*M+i] = independents_min[i*N+j];
+		xDelete<IssmDouble>(independents_min);
+		independents_min = independents_min_transp;
+
+		IssmDouble* independents_max_transp = xNew<IssmDouble>(M*N);
+		for(int i=0;i<M;i++) for(int j=0;j<N;j++) independents_max_transp[j*M+i] = independents_max[i*N+j];
+		xDelete<IssmDouble>(independents_max);
+		independents_max = independents_max_transp;
+	}
+
+	int* M_all = xNew<int>(num_controls);
+	int* N_all = xNew<int>(num_controls);
+	int* Interp_all = xNew<int>(num_controls);
+
+	int offset = 0;
+	for(int i=0;i<num_controls;i++){
+		control = control_enums[i];
+		if(!IsInputEnum(control)) _error_("Only inputs can be parameters except if you use AD");
+		scale   = 1.;
+
+		switch(control){
+			/*List of supported controls*/
+			case BalancethicknessThickeningRateEnum:      iomodel->FetchData(&independent,&M,&N,"md.balancethickness.thickening_rate");scale = 1./yts; break; 
+			case BalancethicknessSpcthicknessEnum:        iomodel->FetchData(&independent,&M,&N,"md.balancethickness.spcthickness");                   break; 
+			case VxEnum:                                  iomodel->FetchData(&independent,&M,&N,"md.initialization.vx");scale = 1./yts;                break; 
+			case VyEnum:                                  iomodel->FetchData(&independent,&M,&N,"md.initialization.vy");scale = 1./yts;                break; 
+			case ThicknessEnum:                           iomodel->FetchData(&independent,&M,&N,"md.geometry.thickness");                              break; 
+			case FrictionCoefficientEnum:                 iomodel->FetchData(&independent,&M,&N,"md.friction.coefficient");                            break; 
+			case FrictionCEnum:									 iomodel->FetchData(&independent,&M,&N,"md.friction.C");				                            break; 
+			case FrictionAsEnum:                          iomodel->FetchData(&independent,&M,&N,"md.friction.As");                                     break; 
+			case BalancethicknessApparentMassbalanceEnum: iomodel->FetchData(&independent,&M,&N,"md.balancethickness.apparent_massbalance");           break; 
+			case BalancethicknessOmegaEnum:               iomodel->FetchData(&independent,&M,&N,"md.balancethickness.omega");                          break; 
+			case MaterialsRheologyBEnum:                  iomodel->FetchData(&independent,&M,&N,"md.materials.rheology_B");                            break; 
+			/*Special cases*/
+			case MaterialsRheologyBbarEnum:               iomodel->FetchData(&independent,&M,&N,"md.materials.rheology_B");                            break; 
+			case DamageDbarEnum:                          iomodel->FetchData(&independent,&M,&N,"md.damage.D");                                        break; 
+			default:
+				_error_("Control " << EnumToStringx(control) << " not implemented yet");
+		}
+
+		/*Transient independents not supported outside of AD*/
+		if(N!=1) _error_("Transient controls not supported yet");
+		N_all[i] = N;
+		M_all[i] = M;
+
+		if(M==iomodel->numberofvertices){
+			Interp_all[i] = P1Enum;
+		}
+		else if(M==iomodel->numberofelements){
+			Interp_all[i] = P0Enum;
+		}
+		else{
+			_error_("Control size not supported");
+		}
+
+		/*Special case if 3d*/
+		if(iomodel->domaintype==Domain3DEnum){
+			if(control==MaterialsRheologyBbarEnum) control=MaterialsRheologyBEnum;
+			if(control==DamageDbarEnum)            control=DamageDEnum;
+		}
+
+		for(Object* & object : elements->objects){
+			Element* element=xDynamicCast<Element*>(object);
+			element->ControlInputCreate(independent,&independents_min[offset],&independents_max[offset],inputs,iomodel,M,N,scale,control,i+1);
+		}
+		xDelete<IssmDouble>(independent);
+
+		offset += M*N;
+	}
+	parameters->AddObject(new IntVecParam(ControlInputSizeMEnum,M_all,num_controls));
+	parameters->AddObject(new IntVecParam(ControlInputSizeNEnum,N_all,num_controls));
+	parameters->AddObject(new IntVecParam(ControlInputInterpolationEnum,Interp_all,num_controls));
+	xDelete<int>(M_all);
+	xDelete<int>(N_all);
+	xDelete<int>(Interp_all);
+	xDelete<IssmDouble>(independents_min);
+	xDelete<IssmDouble>(independents_max);
+
+	/*Free data: */
+	for(int i=0;i<num_controls;i++){
+		switch(control_enums[i]){
+			/*List of supported controls*/
+			case BalancethicknessThickeningRateEnum:      iomodel->DeleteData(1,"md.balancethickness.thickening_rate"); break;
+			case BalancethicknessSpcthicknessEnum:        iomodel->DeleteData(1,"md.balancethickness.spcthickness"); break;
+			case VxEnum:                                  iomodel->DeleteData(1,"md.initialization.vx"); break;
+			case VyEnum:                                  iomodel->DeleteData(1,"md.initialization.vy"); break;
+			case ThicknessEnum:                           iomodel->DeleteData(1,"md.geometry.thickness"); break;
+			case FrictionCoefficientEnum:                 iomodel->DeleteData(1,"md.friction.coefficient"); break;
+			case FrictionCEnum:			                   iomodel->DeleteData(1,"md.friction.C"); break;
+			case FrictionAsEnum:                          iomodel->DeleteData(1,"md.friction.As"); break;
+			case BalancethicknessApparentMassbalanceEnum: iomodel->DeleteData(1,"md.balancethickness.apparent_massbalance"); break;
+			case BalancethicknessOmegaEnum:               iomodel->DeleteData(1,"md.balancethickness.omega"); break;
+			case MaterialsRheologyBEnum:                  iomodel->DeleteData(1,"md.materials.rheology_B"); break;
+			/*Special cases*/
+			case MaterialsRheologyBbarEnum: iomodel->DeleteData(1,"md.materials.rheology_B"); break;
+			case DamageDbarEnum:            iomodel->DeleteData(1,"md.damage.D");            break;
+			default:
+				_error_("Control " << EnumToStringx(control_enums[i]) << " not implemented yet");
+		}
+	}
+
+	xDelete<int>(control_enums);
+	xDelete<int>(cost_function_enums);
+	for(int i=0;i<num_cost_functions;i++) xDelete<char>(cost_functions[i]);
+	xDelete<char*>(cost_functions);
+	for(int i=0;i<num_controls;i++) xDelete<char>(controls[i]);
+	xDelete<char*>(controls);
+}
+void UpdateElementsAndMaterialsControlAD(Elements* elements,Parameters* parameters,Inputs* inputs,Materials* materials, IoModel* iomodel){
+
+	#if defined(_HAVE_AD_)
+	/*Intermediaries*/
+	int          num_independent_objects,M,N;
+	char       **names                = NULL;
+	int         *types                = NULL;
+	int         *control_sizes        = NULL;
+	IssmDouble  *independent          = NULL;
+	IssmDouble **independents_fullmin = NULL;
+	IssmDouble **independents_fullmax = NULL;
+	bool         control_analysis     = false;
+
+	iomodel->FindConstant(&control_analysis,"md.inversion.iscontrol");
+
+	/*Now, return if no control*/
+	if(!control_analysis) return;
+
+	/*Step1: create controls (independents)*/
+	iomodel->FetchData(&num_independent_objects,"md.autodiff.num_independent_objects"); _assert_(num_independent_objects>0); 
+	iomodel->FetchMultipleData(&names,&M,"md.autodiff.independent_name"); _assert_(M==num_independent_objects);
+	iomodel->FetchMultipleData(&types,&M,"md.autodiff.independent_type"); _assert_(M==num_independent_objects);
+
+	int* M_all = NULL;
+	int* N_all = NULL;
+	int* Interp_all = xNew<int>(num_independent_objects);
+
+	/*create independent objects, and at the same time, fetch the corresponding independent variables, 
+	 *and declare them as such in ADOLC: */
+	iomodel->FetchMultipleData(&independents_fullmin,&M_all,&N_all,&M,"md.autodiff.independent_min_parameters"); _assert_(M==num_independent_objects);
+	iomodel->FetchMultipleData(&independents_fullmax,NULL  ,NULL  ,&M,"md.autodiff.independent_max_parameters"); _assert_(M==num_independent_objects);
+	iomodel->FetchMultipleData(&control_sizes,&M,"md.autodiff.independent_control_size");                        _assert_(M==num_independent_objects);
+
+	for(int i=0;i<num_independent_objects;i++){
+
+		if(types[i]==1){ /* vector:*/
+
+			/*Get field name and input Enum from independent name*/
+			char* iofieldname  = NULL;
+			int   input_enum;
+			IssmDouble* independents_min = NULL;
+			IssmDouble*	independents_max = NULL;
+
+			/*Fetch required data*/
+			FieldAndEnumFromCode(&input_enum,&iofieldname,names[i]);
+			iomodel->FetchData(&independent,&M,&N,iofieldname);
+			_assert_(independent && N==control_sizes[i]);
+			xDelete<char>(iofieldname);
+
+			independents_min = NULL; independents_min = xNew<IssmDouble>(M*N);
+			independents_max = NULL; independents_max = xNew<IssmDouble>(M*N);
+			for(int m=0;m<M;m++){
+				for(int n=0;n<N;n++){
+					independents_min[N*m+n]=independents_fullmin[i][N*m+n];
+					independents_max[N*m+n]=independents_fullmax[i][N*m+n];
+				}
+			}
+
+			if(IsInputEnum(input_enum)){
+
+				/*remove last row if time series*/
+				if(N!=1) M_all[i]=M-1;
+
+				if(M_all[i]==iomodel->numberofvertices){
+					Interp_all[i] = P1Enum;
+				}
+				else if(M_all[i]==iomodel->numberofelements){
+					Interp_all[i] = P0Enum;
+				}
+				else{
+					_error_("Control size not supported");
+				}
+
+				for(Object* & object : elements->objects){
+					Element* element=xDynamicCast<Element*>(object);
+					element->ControlInputCreate(independent,independents_min,independents_max,inputs,iomodel,M,N,1.,input_enum,i+1);
+				}
+			}
+			else if(IsParamEnum(input_enum)){
+				//_error_("not supported yet");
+				Interp_all[i] = DummyEnum; //Placeholder
+				parameters->AddObject(new ControlParam(independent,independents_min,independents_max,input_enum,M_all[i],N_all[i]));
+
+				if(M!=1){
+					_assert_(M==2); //TransientParam
+					M_all[i]=M-1;
+				}
+			}
+			xDelete<IssmDouble>(independent);
+			xDelete<IssmDouble>(independents_min);
+			xDelete<IssmDouble>(independents_max);
+
+		}
+		else{
+			_error_("Independent cannot be of size " << types[i]);
+		}
+	}
+	parameters->AddObject(new IntVecParam(ControlInputSizeNEnum,N_all,num_independent_objects));
+	parameters->AddObject(new IntVecParam(ControlInputSizeMEnum,M_all,num_independent_objects));
+	parameters->AddObject(new IntVecParam(ControlInputInterpolationEnum,Interp_all,num_independent_objects));
+
+	/*cleanup*/
+	for(int i=0;i<num_independent_objects;i++){
+		xDelete<char>(names[i]);
+		xDelete<IssmDouble>(independents_fullmin[i]);
+		xDelete<IssmDouble>(independents_fullmax[i]);
+	}
+	xDelete<char*>(names);
+	xDelete<int>(types);
+	xDelete<int>(M_all);
+	xDelete<int>(N_all);
+	xDelete<int>(Interp_all);
+	xDelete<IssmDouble*>(independents_fullmin);
+	xDelete<IssmDouble*>(independents_fullmax);
+	xDelete<int>(control_sizes);
+
+	return;
+#else 
+	_error_("AD not compiled");
+#endif
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateEdges.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateEdges.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateEdges.cpp	(revision 27955)
@@ -0,0 +1,305 @@
+/*!\file:  CreateEdges.cpp
+ * \brief: create edges from 2d mesh
+ */ 
+
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "./ModelProcessorx.h"
+
+void CreateEdges(IoModel* iomodel){/*{{{*/
+
+	/*If edges are already present, exit*/
+	if(iomodel->edges) return;
+
+	/*Check Iomodel properties*/
+	if(iomodel->numberofvertices<3) _error_("not enough elements in mesh");
+	_assert_(iomodel->elements);
+
+	/*Intermediaries*/
+	int  i,j,v1,v2,v3;
+	int  elementnbe,elementnbv;
+	int *elementedges         = NULL;
+	int *elementedges_markers = NULL;
+
+	/*Mesh dependent variables*/
+	switch(iomodel->meshelementtype){
+		case TriaEnum:
+			elementnbv = 3;
+			elementnbe = 3;
+			elementedges         = xNew<int>(elementnbe*2);
+			elementedges_markers = xNew<int>(elementnbe);
+			elementedges[2*0+0] = 1; elementedges[2*0+1] = 2; elementedges_markers[0] = -1;
+			elementedges[2*1+0] = 2; elementedges[2*1+1] = 0; elementedges_markers[1] = -1;
+			elementedges[2*2+0] = 0; elementedges[2*2+1] = 1; elementedges_markers[2] = -1;
+			break;
+		case TetraEnum:
+			elementnbv = 4;
+			elementnbe = 6;
+			elementedges         = xNew<int>(elementnbe*2);
+			elementedges_markers = xNew<int>(elementnbe);
+			elementedges[2*0+0] = 1; elementedges[2*0+1] = 2; elementedges_markers[0] = -1;
+			elementedges[2*1+0] = 0; elementedges[2*1+1] = 2; elementedges_markers[1] = -1;
+			elementedges[2*2+0] = 0; elementedges[2*2+1] = 1; elementedges_markers[2] = -1;
+			elementedges[2*3+0] = 1; elementedges[2*3+1] = 3; elementedges_markers[3] = -1;
+			elementedges[2*4+0] = 2; elementedges[2*4+1] = 3; elementedges_markers[4] = -1;
+			elementedges[2*5+0] = 0; elementedges[2*5+1] = 3; elementedges_markers[5] = -1;
+			break;
+		case PentaEnum:
+			elementnbv = 6;
+			elementnbe = 9;
+			elementedges         = xNew<int>(elementnbe*2);
+			elementedges_markers = xNew<int>(elementnbe);
+			elementedges[2*0+0] = 0; elementedges[2*0+1] = 3; elementedges_markers[0] = 2;
+			elementedges[2*1+0] = 1; elementedges[2*1+1] = 4; elementedges_markers[1] = 2;
+			elementedges[2*2+0] = 2; elementedges[2*2+1] = 5; elementedges_markers[2] = 2;
+			elementedges[2*3+0] = 1; elementedges[2*3+1] = 2; elementedges_markers[3] = 1;
+			elementedges[2*4+0] = 2; elementedges[2*4+1] = 0; elementedges_markers[4] = 1;
+			elementedges[2*5+0] = 0; elementedges[2*5+1] = 1; elementedges_markers[5] = 1;
+			elementedges[2*6+0] = 4; elementedges[2*6+1] = 5; elementedges_markers[6] = 1;
+			elementedges[2*7+0] = 5; elementedges[2*7+1] = 3; elementedges_markers[7] = 1;
+			elementedges[2*8+0] = 3; elementedges[2*8+1] = 4; elementedges_markers[8] = 1;
+			break;
+		default:
+		_error_("mesh dimension not supported yet");
+	}
+
+	/*Maximum number of edges*/
+	int maxnbe = elementnbe*iomodel->numberofelements;
+
+	/*Initialize intermediaries*/
+	int *edgestemp                  = xNew<int>(maxnbe*3);                             /*format: [vertex1 vertex2 marker]*/
+	int *vedgestemp                 = xNew<int>(maxnbe*2);                             /*format: [vertex1 vertex2]       */
+	int *hedgestemp                 = xNew<int>(maxnbe*2);                             /*format: [vertex1 vertex2]       */
+	int *element_edge_connectivity  = xNew<int>(iomodel->numberofelements*elementnbe); /*format: [edge1 edge2 ... edgen] */
+	int *element_vedge_connectivity = NULL;
+	int *element_hedge_connectivity = NULL;
+	if(iomodel->meshelementtype==PentaEnum){
+		element_vedge_connectivity  = xNew<int>(iomodel->numberofelements*3); /*format: [edge1 edge2 ... edgen] */
+		element_hedge_connectivity  = xNew<int>(iomodel->numberofelements*6); /*format: [edge1 edge2 ... edgen] */
+	}
+
+	/*Initialize chain*/
+	int* head_minv = xNew<int>(iomodel->numberofvertices);
+	int* next_edge = xNew<int>(maxnbe);
+	for(i=0;i<iomodel->numberofvertices;i++) head_minv[i]=-1;
+
+	/*Initialize number of edges*/
+	int nbe  = 0;
+
+	for(i=0;i<iomodel->numberofelements;i++){
+		for(j=0;j<elementnbe;j++){
+
+			/*Get the two indices of the edge number j of the ith element*/
+			v1 = iomodel->elements[i*elementnbv+elementedges[2*j+0]]-1; _assert_(v1>=0 & v1<iomodel->numberofvertices);
+			v2 = iomodel->elements[i*elementnbv+elementedges[2*j+1]]-1; _assert_(v2>=0 & v2<iomodel->numberofvertices);
+
+			/*v1 and v2 must be sorted*/
+			if(v2<v1){
+				v3=v2; v2=v1; v1=v3;
+			}
+
+			/*This edge a priori has not been processed yet*/
+			bool exist = false;
+
+			/*Go through all processed edges connected to v1 and check whether we have seen this edge yet*/
+			for(int e=head_minv[v1]; e!=-1; e=next_edge[e]){
+				if(edgestemp[e*3+1]==v2+1){
+					exist = true;
+					element_edge_connectivity[i*elementnbe+j]=e;
+					break;
+				}
+			}
+
+			/*If this edge is new, add it to the lists*/
+			if(!exist){
+				_assert_(nbe<maxnbe);
+
+				/*Update edges*/
+				edgestemp[nbe*3+0] = v1+1;
+				edgestemp[nbe*3+1] = v2+1;
+				edgestemp[nbe*3+2] = elementedges_markers[j];
+
+				/*Update Connectivity*/
+				element_edge_connectivity[i*elementnbe+j]=nbe;
+
+				/*Update chain*/
+				next_edge[nbe] = head_minv[v1];
+				head_minv[v1]  = nbe;
+
+				/*Increase number of edges*/
+				nbe++;
+			}
+		}
+	}
+
+	/*vertical/horizontal edges*/
+	int nbve = 0;
+	int nbhe = 0;
+	if(iomodel->meshelementtype==PentaEnum){
+		for(i=0;i<iomodel->numberofvertices;i++) head_minv[i]=-1;
+		for(i=0;i<iomodel->numberofelements;i++){
+			for(j=0;j<3;j++){
+				v1 = iomodel->elements[i*elementnbv+elementedges[2*j+0]]-1; _assert_(v1>=0 & v1<iomodel->numberofvertices);
+				v2 = iomodel->elements[i*elementnbv+elementedges[2*j+1]]-1; _assert_(v2>=0 & v2<iomodel->numberofvertices);
+				if(v2<v1){ v3=v2; v2=v1; v1=v3;}
+				bool exist = false;
+				for(int e=head_minv[v1]; e!=-1; e=next_edge[e]){
+					if(vedgestemp[e*2+1]==v2+1){
+						exist = true;
+						element_vedge_connectivity[i*3+j]=e;
+						break;
+					}
+				}
+				if(!exist){
+					vedgestemp[nbve*2+0] = v1+1;
+					vedgestemp[nbve*2+1] = v2+1;
+					element_vedge_connectivity[i*3+j]=nbve;
+					next_edge[nbve] = head_minv[v1];
+					head_minv[v1]   = nbve;
+					nbve++;
+				}
+			}
+		}
+		for(i=0;i<iomodel->numberofvertices;i++) head_minv[i]=-1;
+		for(i=0;i<iomodel->numberofelements;i++){
+			for(j=3;j<9;j++){
+				v1 = iomodel->elements[i*elementnbv+elementedges[2*j+0]]-1; _assert_(v1>=0 & v1<iomodel->numberofvertices);
+				v2 = iomodel->elements[i*elementnbv+elementedges[2*j+1]]-1; _assert_(v2>=0 & v2<iomodel->numberofvertices);
+				if(v2<v1){ v3=v2; v2=v1; v1=v3;}
+				bool exist = false;
+				for(int e=head_minv[v1]; e!=-1; e=next_edge[e]){
+					if(hedgestemp[e*2+1]==v2+1){
+						exist = true;
+						element_hedge_connectivity[i*6+(j-3)]=e;
+						break;
+					}
+				}
+				if(!exist){
+					hedgestemp[nbhe*2+0] = v1+1;
+					hedgestemp[nbhe*2+1] = v2+1;
+					element_hedge_connectivity[i*6+(j-3)]=nbhe;
+					next_edge[nbhe] = head_minv[v1];
+					head_minv[v1]   = nbhe;
+					nbhe++;
+				}
+			}
+		}
+	}
+
+	/*Clean up*/
+	xDelete<int>(head_minv);
+	xDelete<int>(next_edge);
+	xDelete<int>(elementedges);
+	xDelete<int>(elementedges_markers);
+
+	/*Create final edges*/
+	int* edges = xNew<int>(nbe*3);
+	for(int i=0;i<3*nbe;i++) edges[i] = edgestemp[i];
+	xDelete<int>(edgestemp);
+	int* vedges = xNew<int>(nbve*2);
+	for(int i=0;i<2*nbve;i++) vedges[i] = vedgestemp[i];
+	xDelete<int>(vedgestemp);
+	int* hedges = xNew<int>(nbhe*2);
+	for(int i=0;i<2*nbhe;i++) hedges[i] = hedgestemp[i];
+	xDelete<int>(hedgestemp);
+
+	/*Assign output pointers*/
+	iomodel->edges           = edges;
+	iomodel->verticaledges   = vedges;
+	iomodel->horizontaledges = hedges;
+	iomodel->elementtoedgeconnectivity = element_edge_connectivity;
+	iomodel->elementtoverticaledgeconnectivity = element_vedge_connectivity;
+	iomodel->elementtohorizontaledgeconnectivity = element_hedge_connectivity;
+	iomodel->numberofedges             = nbe;
+	iomodel->numberofverticaledges     = nbve;
+	iomodel->numberofhorizontaledges   = nbhe;
+}/*}}}*/
+void EdgeOnBoundaryFlags(bool** pflags,IoModel* iomodel){/*{{{*/
+
+	/*Intermediaries*/
+	bool isv1,isv2;
+	int  facenbv,v1,v2;
+	int  id_edge,id_element;
+	int  elementnbe;
+
+	/*Mesh dependent variables*/
+	switch(iomodel->meshelementtype){
+		case TriaEnum:  elementnbe = 3; break;
+		case TetraEnum: elementnbe = 6; break;
+		case PentaEnum: elementnbe = 9; break;
+		default:        _error_("mesh dimension not supported yet");
+	}
+
+	/*Get edges and allocate output*/
+	if(!iomodel->edges) CreateEdges(iomodel);
+	bool* flags = xNewZeroInit<bool>(iomodel->numberofedges);
+
+	if(iomodel->domaindim==2){
+
+		/*Count how many times an edge is found in elementtoedgeconnectivity*/
+		int* counter = xNewZeroInit<int>(iomodel->numberofedges);
+		for(int i=0;i<iomodel->numberofelements;i++){
+			for(int j=0;j<elementnbe;j++){
+				counter[iomodel->elementtoedgeconnectivity[elementnbe*i+j]] += 1;
+			}
+		}
+
+		/*Now, loop over the egdes, whenever it is not connected to a second element, the edge is on boundary*/
+		for(int i=0;i<iomodel->numberofedges;i++){
+			if(counter[i]==1) flags[i]=true;
+		}
+
+		/*Clean up*/
+		xDelete<int>(counter);
+	}
+	else if(iomodel->domaindim==3){
+
+		/*Get faces*/
+		if(!iomodel->faces) CreateFaces(iomodel);
+
+		/*Now, loop over the faces, whenever it is not connected to a second element, all edges are on boundary*/
+		for(int id_face=0;id_face<iomodel->numberoffaces;id_face++){
+
+			if(iomodel->faces[id_face*iomodel->facescols+1]==-1){
+
+				/*The face is connected to the element e only*/
+				id_element = iomodel->faces[id_face*iomodel->facescols+0]-1;
+				facenbv    = iomodel->faces[id_face*iomodel->facescols+3];
+
+				/*Get all edges for this element*/
+				for(int edge = 0; edge<elementnbe; edge++){
+
+					id_edge     = iomodel->elementtoedgeconnectivity[elementnbe*id_element+edge];
+					v1          = iomodel->edges[id_edge*3+0];
+					v2          = iomodel->edges[id_edge*3+1];
+
+					/*Test if v1 is in the face*/
+					isv1=false;
+					for(int i=0;i<facenbv;i++){
+						if(iomodel->faces[id_face*iomodel->facescols+4+i] == v1){
+							isv1 = true; break;
+						}
+					}
+					if(!isv1) continue;
+
+					/*test if v2 is in the face*/
+					isv2=false;
+					for(int i=0;i<facenbv;i++){
+						if(iomodel->faces[id_face*iomodel->facescols+4+i] == v2){
+							isv2 = true; break;
+						}
+					}
+
+					/*If v1 and v2 are found, this edge is on boundary*/
+					if(isv2) flags[id_edge] = true;
+				}
+			}
+		}
+	}
+	else{
+		_error_("dimension not supported");
+	}
+
+	/*Clean up and return*/
+	*pflags = flags;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 27955)
@@ -0,0 +1,510 @@
+/*
+ * CreateElementsNodesAndMaterialsStressbalanceHoriz.c:
+ */
+
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "./ModelProcessorx.h"
+
+#define MAXCONNECTIVITY 15
+
+bool IsVertexInRank(int* vertices_ranks,int* vertices_proc_count,int vid,int rank){/*{{{*/
+
+	/*See if node is already in partition*/
+	for(int k=0;k<vertices_proc_count[vid];k++){
+		if(vertices_ranks[MAXCONNECTIVITY*vid+k] == rank) return true;
+	}
+
+	return false;
+}/*}}}*/
+int  VertexMasterRank(int* vertices_ranks,int vid){/*{{{*/
+	return vertices_ranks[MAXCONNECTIVITY*vid+0];
+}/*}}}*/
+void AddVertexToRank(int* vertices_ranks,int* vertices_proc_count,int vid,int rank){/*{{{*/
+
+	/*See if node is already in partition, return if this is the case*/
+	if(IsVertexInRank(vertices_ranks,vertices_proc_count,vid,rank)) return;
+
+	/*This rank has not been marked for this node just yet so go ahead and add it*/
+	if(vertices_proc_count[vid]==MAXCONNECTIVITY) _error_("This vertex is connected to more than "<<MAXCONNECTIVITY<<" partition. Either reduce the number of processors, or increase MAXCONNECTIVITY");
+	vertices_ranks[MAXCONNECTIVITY*vid+vertices_proc_count[vid]] = rank;
+	vertices_proc_count[vid]++;
+}/*}}}*/
+
+void CreateElements(Elements* elements,IoModel* iomodel,const int nummodels){/*{{{*/
+
+	/*Intermediary*/
+	bool control_analysis;
+	bool adolc_analysis;
+
+	/*Fetch parameters: */
+	iomodel->FindConstant(&control_analysis,"md.inversion.iscontrol");
+	iomodel->FindConstant(&adolc_analysis,"md.autodiff.isautodiff");
+
+	/*Did we already create the elements? : */
+	_assert_(elements->Size()==0);
+
+	/*Create elements*/
+	if(control_analysis && !adolc_analysis)iomodel->FetchData(2,"md.inversion.min_parameters","md.inversion.max_parameters");
+	if(iomodel->domaintype==Domain2DverticalEnum || iomodel->domaindim==3)  iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
+
+	int count = 0;
+	switch(iomodel->meshelementtype){
+		case TriaEnum:
+			for(int i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]){
+					elements->AddObject(new Tria(i+1,i,count,iomodel,nummodels));
+					count++;
+				}
+			}
+			break;
+		case TetraEnum:
+			for(int i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]){
+					elements->AddObject(new Tetra(i+1,i,count,iomodel,nummodels));
+					count++;
+				}
+			}
+			break;
+		case PentaEnum:
+			iomodel->FetchData(2,"md.mesh.upperelements","md.mesh.lowerelements");
+			for(int i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]){
+					elements->AddObject(new Penta(i+1,i,count,iomodel,nummodels));
+					count++;
+				}
+			}
+			break;
+		default:
+			_error_("Mesh not supported yet");
+	}
+
+	/*Free data: */
+	iomodel->DeleteData(6,"md.mesh.upperelements","md.mesh.lowerelements","md.inversion.min_parameters","md.inversion.max_parameters","md.mesh.vertexonbase","md.mesh.vertexonsurface");
+
+}/*}}}*/
+void CreateMaterials(Elements* elements,Inputs* inputs,Materials* materials,IoModel* iomodel,const int nummodels){/*{{{*/
+
+	/*Intermediary*/
+	int  i;
+	int  nnat,dummy;
+	int* nature=NULL;
+
+	/*Fetch parameters: */
+	int materials_type;
+	iomodel->FindConstant(&materials_type,"md.materials.type");
+
+	/*Did we already create the materials? : */
+	_assert_(materials->Size()==0);
+
+	/*Create materials*/
+	switch(materials_type){
+		case MaticeEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_B",MaterialsRheologyBEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_n",MaterialsRheologyNEnum);
+			for (i=0;i<iomodel->numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matice(i+1,i,iomodel));
+			switch(iomodel->domaindim){
+				case 2:
+					inputs->DuplicateInput(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum);
+					break;
+				case 3:
+					break;
+				default:
+					_error_("Mesh not supported yet");
+			}
+			break;
+		case MatenhancediceEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_B",MaterialsRheologyBEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_n",MaterialsRheologyNEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_E",MaterialsRheologyEEnum);
+			for (i=0;i<iomodel->numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matice(i+1,i,iomodel));
+			switch(iomodel->domaindim){
+				case 2:
+					inputs->DuplicateInput(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum);
+					inputs->DuplicateInput(MaterialsRheologyEEnum,MaterialsRheologyEbarEnum);
+					break;
+				case 3:
+					break;
+				default:
+					_error_("Mesh not supported yet");
+			}
+			break;
+		case MatdamageiceEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_B",MaterialsRheologyBEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_n",MaterialsRheologyNEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.damage.D",DamageDEnum);
+			for (i=0;i<iomodel->numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matice(i+1,i,iomodel));
+			switch(iomodel->domaindim){
+				case 2:
+					inputs->DuplicateInput(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum);
+					inputs->DuplicateInput(DamageDEnum,DamageDbarEnum);
+					break;
+				case 3:
+					break;
+				default:
+					_error_("Mesh not supported yet");
+			}
+			break;
+		case MatestarEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_B",MaterialsRheologyBEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_Ec",MaterialsRheologyEcEnum);
+			iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_Es",MaterialsRheologyEsEnum);
+			for(i=0;i<iomodel->numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matestar(i+1,i,iomodel));
+			switch(iomodel->domaindim){
+				case 2:
+					inputs->DuplicateInput(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum);
+					inputs->DuplicateInput(MaterialsRheologyEcEnum,MaterialsRheologyEcbarEnum);
+					inputs->DuplicateInput(MaterialsRheologyEsEnum,MaterialsRheologyEsbarEnum);
+					break;
+				case 3:
+					break;
+				default:
+					_error_("Mesh not supported yet");
+			}
+			break;
+		case MaterialsEnum: 
+
+			//we have several types of materials. Retrieve this info first: 
+			iomodel->FetchData(&nature,&nnat,&dummy,"md.materials.nature");
+
+			//make sure materials that are not tied to elements come last:  for now, only Matlitho qualifies.
+			for(int i=0;i<nnat;i++){ 
+				if (IoCodeToEnumNature(nature[i])==MatlithoEnum){
+					int temp=nature[nnat-1];
+					nature[nnat-1]=nature[i];
+					nature[i]=temp;
+				}
+			}
+
+			//go through list of materials, and create them: 
+			for(int nat=0;nat<nnat;nat++){
+				switch(IoCodeToEnumNature(nature[nat])){ 
+					case MaticeEnum:{ /*{{{*/
+							iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_B",MaterialsRheologyBEnum);
+							iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_n",MaterialsRheologyNEnum);
+							for (int k=0;k<iomodel->numberofelements;k++) if(iomodel->my_elements[k]) materials->AddObject(new Matice(k+1,k,MaticeEnum));
+							switch(iomodel->domaindim){
+								case 2:
+									inputs->DuplicateInput(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum);
+									break;
+								case 3:
+									break;
+								default:
+									_error_("Mesh not supported yet");
+							}
+						} /*}}}*/
+						break;
+					case MatlithoEnum: { /*{{{*/
+							bool* issolid = NULL;
+							int*  rheologymodel = NULL;
+							iomodel->FetchData(&issolid, NULL, NULL, "md.materials.issolid");
+							iomodel->FetchData(&rheologymodel, NULL, NULL, "md.materials.rheologymodel");
+							iomodel->FetchData(11,"md.materials.radius","md.materials.viscosity","md.materials.lame_lambda","md.materials.lame_mu","md.materials.burgers_viscosity","md.materials.burgers_mu","md.materials.ebm_alpha","md.materials.ebm_delta","md.materials.ebm_taul","md.materials.ebm_tauh","md.materials.density");
+							materials->AddObject(new Matlitho(iomodel->numberofelements+1, iomodel, issolid, rheologymodel));
+							iomodel->DeleteData(11,"md.materials.radius","md.materials.viscosity","md.materials.lame_lambda","md.materials.lame_mu","md.materials.burgers_viscosity","md.materials.burgers_mu","md.materials.ebm_alpha","md.materials.ebm_delta","md.materials.ebm_taul","md.materials.ebm_tauh","md.materials.density");
+							xDelete<bool>(issolid);
+							xDelete<int>(rheologymodel);
+						}
+						/*}}}*/
+						break;
+					case MathydroEnum: {/*{{{*/
+							/*If we don't have any materials pointed to by elements (meaning, if we are running only litho or hydro), 
+							 * then we need to zero out the hmaterial pointers inside the elements dataset so that it won't error out 
+							 * during configuration: */
+							bool isice=false;
+							for (int j=0;j<nnat;j++){
+								if((IoCodeToEnumNature(nature[j])==MaticeEnum)||
+										(IoCodeToEnumNature(nature[j])==MatenhancediceEnum)||
+										(IoCodeToEnumNature(nature[j])==MatestarEnum)||
+										(IoCodeToEnumNature(nature[j])==MatdamageiceEnum)){
+									isice=true; break; }
+							}
+							if (!isice){
+								/*go through elements, and zero the hmaterials pointers: */
+								for(Object* & object : elements->objects){
+									Element* element=xDynamicCast<Element*>(object);
+									switch(element->ObjectEnum()){
+										case TriaEnum: 
+											{
+												Tria* tria= xDynamicCast<Tria*>(element);
+												if(tria->hmaterial)delete tria->hmaterial; 
+												tria->hmaterial=NULL;
+											}
+											break;
+										default: 
+											_error_("Not implemented yet");
+									}
+								}
+							}
+						} /*}}}*/
+						break;
+					case MatenhancediceEnum: /*{{{*/
+						iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_B",MaterialsRheologyBEnum);
+						iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_n",MaterialsRheologyNEnum);
+						iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_E",MaterialsRheologyEEnum);
+						for(int j=0;j<iomodel->numberofelements;j++) if(iomodel->my_elements[j]) materials->AddObject(new Matice(j+1,j,MatenhancediceEnum));
+						switch(iomodel->domaindim){
+							case 2:
+								inputs->DuplicateInput(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum);
+								inputs->DuplicateInput(MaterialsRheologyEEnum,MaterialsRheologyEbarEnum);
+								break;
+							case 3:
+								break;
+							default:
+								_error_("Mesh not supported yet");
+						}
+						/*}}}*/
+						break;
+					case MatdamageiceEnum: /*{{{*/
+						iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_B",MaterialsRheologyBEnum);
+						iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_n",MaterialsRheologyNEnum);
+						iomodel->FetchDataToInput(inputs,elements,"md.damage.D",DamageDEnum);
+						for (int j=0;j<iomodel->numberofelements;j++) if(iomodel->my_elements[j]) materials->AddObject(new Matice(j+1,j,MatdamageiceEnum));
+						switch(iomodel->domaindim){
+							case 2:
+								inputs->DuplicateInput(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum);
+								inputs->DuplicateInput(DamageDEnum,DamageDbarEnum);
+								break;
+							case 3:
+								break;
+							default:
+								_error_("Mesh not supported yet");
+						}
+						/*}}}*/
+						break;
+					case MatestarEnum: /*{{{*/
+						iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_B",MaterialsRheologyBEnum);
+						iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_Ec",MaterialsRheologyEcEnum);
+						iomodel->FetchDataToInput(inputs,elements,"md.materials.rheology_Es",MaterialsRheologyEsEnum);
+						for(int j=0;j<iomodel->numberofelements;j++) if(iomodel->my_elements[j]) materials->AddObject(new Matestar(j+1,j,iomodel));
+						switch(iomodel->domaindim){
+							case 2:
+								inputs->DuplicateInput(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum);
+								inputs->DuplicateInput(MaterialsRheologyEcEnum,MaterialsRheologyEcbarEnum);
+								inputs->DuplicateInput(MaterialsRheologyEsEnum,MaterialsRheologyEsbarEnum);
+								break;
+							case 3:
+								break;
+							default:
+								_error_("Mesh not supported yet");
+						} 
+						/*}}}*/
+						break; 
+					default:
+						_error_("Materials nature type "<<EnumToStringx(IoCodeToEnumNature(nature[nat]))<<" not supported");
+						break;
+				}
+			}
+			//Free resources:
+			xDelete<int>(nature);
+			break;
+
+		default:
+			_error_("Materials "<<EnumToStringx(materials_type)<<" not supported");
+	}
+
+	/*Free data: */
+	iomodel->DeleteData(3,"md.material.rheology_B","md.material.rheology_n","md.damage.D");
+}/*}}}*/
+void CreateVertices(Elements* elements,Vertices* vertices,IoModel* iomodel,int solution_type,bool isamr){/*{{{*/
+
+	/*Get element partitionning*/
+	int* epart = iomodel->epart;
+
+	/*Determine element width*/
+	int  elements_width;
+	switch(iomodel->meshelementtype){
+		case TriaEnum:  elements_width=3; break;
+		case TetraEnum: elements_width=4; break;
+		case PentaEnum: elements_width=6; break;
+		default: _error_("mesh elements "<< EnumToStringx(iomodel->meshelementtype) <<" not supported yet");
+	}
+
+	/*Get my_rank:*/
+	int my_rank   = IssmComm::GetRank();
+	int num_procs = IssmComm::GetSize();
+
+	/*create matrix that keeps track of all ranks that have vertex i, and initialize as -1 (Common to all CPUs)*/
+	int* vertices_ranks = xNew<int>(MAXCONNECTIVITY*iomodel->numberofvertices);
+	for(int i=0;i<MAXCONNECTIVITY*iomodel->numberofvertices;i++) vertices_ranks[i] = -1;
+
+	/*For all vertices, count how many cpus hold vertex i (initialize with 0)*/
+	int* vertices_proc_count = xNewZeroInit<int>(iomodel->numberofvertices);
+
+	/*Go through all elements and mark all vertices for all partitions*/
+	for(int i=0;i<iomodel->numberofelements;i++){
+		for(int j=0;j<elements_width;j++){
+			/*Get current vertex sid*/
+			int vid = iomodel->elements[elements_width*i+j]-1;
+			AddVertexToRank(vertices_ranks,vertices_proc_count,vid,epart[i]);
+		}
+	}
+
+	/*Take care of penalties (only in non-AMR for now)*/
+	if(!isamr){
+		int numvertex_pairing;
+		int *vertex_pairing = NULL;
+		iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.stressbalance.vertex_pairing");
+		for(int i=0;i<numvertex_pairing;i++){
+			int id1 = vertex_pairing[2*i+0]-1;
+			int id2 = vertex_pairing[2*i+1]-1;
+			for(int e=0;e<num_procs;e++){
+				if(IsVertexInRank(vertices_ranks,vertices_proc_count,id1,e)){
+					AddVertexToRank(vertices_ranks,vertices_proc_count,id2,e);
+				}
+			}
+		}
+		xDelete<int>(vertex_pairing);
+		iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.masstransport.vertex_pairing");
+		for(int i=0;i<numvertex_pairing;i++){
+			int id1 = vertex_pairing[2*i+0]-1;
+			int id2 = vertex_pairing[2*i+1]-1;
+			for(int e=0;e<num_procs;e++){
+				if(IsVertexInRank(vertices_ranks,vertices_proc_count,id1,e)){
+					AddVertexToRank(vertices_ranks,vertices_proc_count,id2,e);
+				}
+			}
+		}
+		xDelete<int>(vertex_pairing);
+	}
+
+	/*Create vector of size total numnodes, initialized with -1, that will keep track of local ids*/
+	int  offset = 0;
+	int* vertices_offsets  = xNew<int>(iomodel->numberofvertices);
+	for(int i=0;i<iomodel->numberofvertices;i++){
+		if(IsVertexInRank(vertices_ranks,vertices_proc_count,i,my_rank)){
+			vertices_offsets[i] = offset++;
+		}
+		else{
+			vertices_offsets[i] = -1;
+		}
+	}
+
+	/*Now, Count how many clones we have with other partitions*/
+	int*  common_send = xNew<int>(num_procs);
+	int*  common_recv = xNew<int>(num_procs);
+	int** common_send_ids = xNew<int*>(num_procs);
+	int** common_recv_ids = xNew<int*>(num_procs);
+
+	/*First step: allocate, Step 2: populate*/
+	for(int step=0;step<2;step++){
+
+		if(step==1){
+			/*Allocate send and receive arrays of ids now*/
+			for(int i=0;i<num_procs;i++){
+				_assert_(common_send[i]>=0 && common_recv[i]>=0);
+				common_send_ids[i] = xNew<int>(common_send[i]);
+				common_recv_ids[i] = xNew<int>(common_recv[i]);
+			}
+		}
+
+		/*Re/Initialize counters to 0*/
+		for(int i=0;i<num_procs;i++){
+			common_recv[i]=0;
+			common_send[i]=0;
+		}
+
+		/*Go through table and find clones/masters etc*/
+		for(int i=0;i<iomodel->numberofvertices;i++){
+
+			/*If we did not find this vertex in our current partition, go to next vertex*/
+			if(vertices_offsets[i] == -1) continue;
+
+			/*Find in what column this rank belongs*/
+			int col = -1;
+			for(int j=0;j<MAXCONNECTIVITY;j++){
+				if(vertices_ranks[MAXCONNECTIVITY*i+j] == my_rank){
+					col = j;
+					break;
+				}
+			}
+			_assert_(col!=-1);
+
+			/*If col==0, it is either not on boundary, or a master*/
+			if(col==0){
+				/*1. is this vertex on the boundary? Skip if not*/
+				if(vertices_ranks[MAXCONNECTIVITY*i+col+1]==-1){
+					continue;
+				}
+				else{
+					for(int j=1;j<vertices_proc_count[i];j++){
+						_assert_(vertices_ranks[MAXCONNECTIVITY*i+j]>=0);
+						int rank = vertices_ranks[MAXCONNECTIVITY*i+j];
+						if(step==1){
+							common_send_ids[rank][common_send[rank]] = vertices_offsets[i];
+						}
+						common_send[rank]++;
+					}
+				}
+			}
+			else{
+				/*3. It is a slave, record that we need to receive for this cpu*/
+				int rank = vertices_ranks[MAXCONNECTIVITY*i+0];
+				if(step==1){
+					common_recv_ids[rank][common_recv[rank]] = vertices_offsets[i];
+				}
+				common_recv[rank]++;
+			}
+		}
+	}
+
+	/*Create Vertices, depending on the constructor type: */
+	if(solution_type!=LoveSolutionEnum) CreateNumberNodeToElementConnectivity(iomodel);
+	if(!isamr){
+		int isoceancoupling;
+		iomodel->FindConstant(&isoceancoupling,"md.transient.isoceancoupling");
+
+		//iomodel->FetchData(6,"md.mesh.x","md.mesh.y","md.mesh.z","md.geometry.base","md.geometry.thickness","md.mask.ice_levelset");
+		iomodel->FetchData(5,"md.mesh.x","md.mesh.y","md.mesh.z","md.geometry.base","md.geometry.thickness");
+		if (iomodel->domaintype == Domain3DsurfaceEnum) iomodel->FetchData(3,"md.mesh.lat","md.mesh.long","md.mesh.r");
+		if (isoceancoupling) iomodel->FetchData(2,"md.mesh.lat","md.mesh.long");
+
+		for(int i=0;i<iomodel->numberofvertices;i++){
+			if(vertices_offsets[i]!=-1){
+				bool isclone = (vertices_ranks[MAXCONNECTIVITY*i+0]!=my_rank);
+				vertices->AddObject(new Vertex(i+1,i,isclone,iomodel,isamr));
+			}
+		}
+
+		/*Free data: */
+		//iomodel->DeleteData(6,"md.mesh.x","md.mesh.y","md.mesh.z","md.geometry.base","md.geometry.thickness","md.mask.ice_levelset");
+		iomodel->DeleteData(5,"md.mesh.x","md.mesh.y","md.mesh.z","md.geometry.base","md.geometry.thickness");
+		if (iomodel->domaintype == Domain3DsurfaceEnum) iomodel->DeleteData(3,"md.mesh.lat","md.mesh.long","md.mesh.r");
+		if (isoceancoupling) iomodel->DeleteData(2,"md.mesh.lat","md.mesh.long");
+	}
+	else{
+		for(int i=0;i<iomodel->numberofvertices;i++){
+			if(vertices_offsets[i]!=-1){
+				bool isclone = (vertices_ranks[MAXCONNECTIVITY*i+0]!=my_rank);
+				vertices->AddObject(new Vertex(i+1,i,isclone,iomodel,isamr));
+			}
+		}
+	}
+	xDelete<int>(vertices_offsets);
+
+	/*Final step, create my_vertices*/
+	_assert_(!iomodel->my_vertices);
+	iomodel->my_vertices = xNew<bool>(iomodel->numberofvertices);
+	for(int i=0;i<iomodel->numberofvertices;i++){
+		if(IsVertexInRank(vertices_ranks,vertices_proc_count,i,my_rank)){
+			iomodel->my_vertices[i] = true;
+		}
+		else{
+			iomodel->my_vertices[i] = false;
+		}
+	}
+
+	/*Free data: */
+	xDelete<int>(vertices_ranks);
+	xDelete<int>(vertices_proc_count);
+
+	/*Assign communicators*/
+	vertices->common_send=common_send;
+	vertices->common_recv=common_recv;
+	vertices->common_send_ids=common_send_ids;
+	vertices->common_recv_ids=common_recv_ids;
+
+	/*Finalize Initialization*/
+	vertices->Finalize(iomodel);
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateFaces.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateFaces.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateFaces.cpp	(revision 27955)
@@ -0,0 +1,299 @@
+/*!\file:  CreateFaces.cpp
+ * \brief: create faces from 2d mesh
+ */ 
+
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "./ModelProcessorx.h"
+
+void CreateFaces(IoModel* iomodel){/*{{{*/
+
+	/*If faces are already present, exit*/
+	if(iomodel->faces) return;
+
+	/*Some checks*/
+	if(iomodel->numberofvertices<3) _error_("not enough elements in mesh");
+	_assert_(iomodel->elements);
+
+	/*Check Iomodel properties*/
+	if(iomodel->domaintype==Domain2DhorizontalEnum || iomodel->domaintype==Domain2DverticalEnum){
+		/*Keep going*/
+	}
+	else if(iomodel->domaintype==Domain3DEnum){
+		CreateFaces3d(iomodel);
+		return;
+	}
+	else{
+		_error_("mesh dimension not supported yet");
+	}
+
+	/*Intermediaries*/
+	bool exist;
+	int  i,j,v1,v2,v3;
+	int  maxnbf,nbf;
+
+	/*Maximum number of faces*/
+	maxnbf = 3*iomodel->numberofelements;
+
+	/*Initialize intermediaries*/
+	int*  facestemp = xNew<int>(maxnbf*4);         /*format: [vertex1 vertex2 element1 element2]                */
+	bool* exchange  = xNewZeroInit<bool>(maxnbf);  /*Faces are ordered, we need to keep track of vertex swapping*/
+	for(i=0;i<maxnbf;i++) facestemp[i*4+3]=-1;     /*Initialize last column of faces as -1 (boundary edge)      */
+
+	/*Initialize chain*/
+	int* head_minv = xNew<int>(iomodel->numberofvertices);
+	int* next_face = xNew<int>(maxnbf);
+	for(i=0;i<iomodel->numberofvertices;i++) head_minv[i]=-1;
+
+	/*Initialize number of faces*/
+	nbf = 0;
+
+	for(i=0;i<iomodel->numberofelements;i++){
+		for(j=0;j<3;j++){
+
+			/*Get the two indices of the edge number j of the ith triangle*/
+			v1 = iomodel->elements[i*3+j];
+			if(j==2)
+			 v2 = iomodel->elements[i*3+0];
+			else
+			 v2 = iomodel->elements[i*3+j+1];
+
+			/*v1 and v2 must be sorted*/
+			if(v2<v1){
+				v3=v2; v2=v1; v1=v3;
+			}
+
+			/*This edge a priori has not been processed yet*/
+			exist = false;
+
+			/*Go through all processed faces connected to v1 and check whether we have seen this edge yet*/
+			_assert_(v1>=0 && v1<iomodel->numberofvertices);
+			for(int e=head_minv[v1]; e!=-1; e=next_face[e]){
+				if(facestemp[e*4+1]==v2){
+					exist = true;
+					facestemp[e*4+3]=i+1;
+					break;
+				}
+			}
+
+			/*If this edge is new, add it to the lists*/
+			if(!exist){
+				_assert_(nbf<maxnbf);
+
+				/*Update faces*/
+				facestemp[nbf*4+0] = v1;
+				facestemp[nbf*4+1] = v2;
+				facestemp[nbf*4+2] = i+1;
+				if(v1!=iomodel->elements[i*3+j]) exchange[nbf]=true;
+
+				/*Update chain*/
+				next_face[nbf] = head_minv[v1];
+				head_minv[v1]  = nbf;
+
+				/*Increase number of faces*/
+				nbf++;
+			}
+		}
+	}
+
+	/*Clean up*/
+	xDelete<int>(head_minv);
+	xDelete<int>(next_face);
+
+	/*Create final faces*/
+	int* faces = xNew<int>(nbf*4); /*vertex1 vertex2 element1 element2*/
+	for(int i=0;i<nbf;i++){
+		if(exchange[i]){
+			faces[i*4+0]=facestemp[i*4+1];
+			faces[i*4+1]=facestemp[i*4+0];
+		}
+		else{
+			faces[i*4+0]=facestemp[i*4+0];
+			faces[i*4+1]=facestemp[i*4+1];
+		}
+		faces[i*4+2]=facestemp[i*4+2];
+		faces[i*4+3]=facestemp[i*4+3];
+	}
+	xDelete<int>(facestemp);
+	xDelete<bool>(exchange);
+
+	/*Assign output pointers*/
+	iomodel->faces         = faces;
+	iomodel->numberoffaces = nbf;
+}/*}}}*/
+void CreateFaces3d(IoModel* iomodel){/*{{{*/
+
+	/*Intermediaries*/
+	int  i,j,k,v0,cols,facemaxnbv;
+	int  elementnbf,elementnbv,facenbv;
+	int *elementfaces         = NULL;
+	int *elementfaces_markers = NULL;
+
+	/*Mesh specific face indexing per element*/
+	switch(iomodel->meshelementtype){
+		case PentaEnum:
+			elementnbv = 6; /*Number of vertices per element*/
+			elementnbf = 5; /*Number of faces per element*/
+			facemaxnbv = 4; /*Maximum number of vertices per face*/
+			cols       = facemaxnbv + 1;
+			elementfaces         = xNew<int>(elementnbf*cols);
+			elementfaces_markers = xNew<int>(elementnbf);
+			/*2 triangles*/
+			elementfaces_markers[0] = 1;
+			elementfaces_markers[1] = 1;
+			elementfaces[cols*0+0] = 3; elementfaces[cols*0+1] = 0;  elementfaces[cols*0+2] = 1; elementfaces[cols*0+3] = 2;
+			elementfaces[cols*1+0] = 3; elementfaces[cols*1+1] = 3;  elementfaces[cols*1+2] = 4; elementfaces[cols*1+3] = 5;
+			/*3 quads*/
+			elementfaces_markers[2] = 2;
+			elementfaces_markers[3] = 2;
+			elementfaces_markers[4] = 2;
+			elementfaces[cols*2+0] = 4; elementfaces[cols*2+1] = 1;  elementfaces[cols*2+2] = 2; elementfaces[cols*2+3] = 5;  elementfaces[cols*2+4] = 4;
+			elementfaces[cols*3+0] = 4; elementfaces[cols*3+1] = 2;  elementfaces[cols*3+2] = 0; elementfaces[cols*3+3] = 3;  elementfaces[cols*3+4] = 5;
+			elementfaces[cols*4+0] = 4; elementfaces[cols*4+1] = 0;  elementfaces[cols*4+2] = 1; elementfaces[cols*4+3] = 4;  elementfaces[cols*4+4] = 3;
+			break;
+		case TetraEnum:
+			elementnbv = 4; /*Number of vertices per element*/
+			elementnbf = 4; /*Number of faces per element*/
+			facemaxnbv = 3; /*Maximum number of vertices per face*/
+			cols       = facemaxnbv + 1;
+			elementfaces         = xNew<int>(elementnbf*cols);
+			elementfaces_markers = xNew<int>(elementnbf);
+			/*4 triangles*/
+			elementfaces_markers[0] = 1;
+			elementfaces_markers[1] = 1;
+			elementfaces_markers[2] = 1;
+			elementfaces_markers[3] = 1;
+			elementfaces[cols*0+0] = 3; elementfaces[cols*0+1] = 0;  elementfaces[cols*0+2] = 1; elementfaces[cols*0+3] = 2;
+			elementfaces[cols*1+0] = 3; elementfaces[cols*1+1] = 0;  elementfaces[cols*1+2] = 3; elementfaces[cols*1+3] = 1;
+			elementfaces[cols*2+0] = 3; elementfaces[cols*2+1] = 1;  elementfaces[cols*2+2] = 3; elementfaces[cols*2+3] = 2;
+			elementfaces[cols*3+0] = 3; elementfaces[cols*3+1] = 0;  elementfaces[cols*3+2] = 2; elementfaces[cols*3+3] = 3;
+			break;
+		default:
+		_error_("mesh "<< EnumToStringx(iomodel->meshelementtype) <<" not supported");
+	}
+
+	/*Allocate connectivity*/
+	int *element_face_connectivity  = xNew<int>(iomodel->numberofelements*elementnbf); /*format: [face1 face2 ...] */
+	int *element_vface_connectivity = NULL;
+	if(iomodel->meshelementtype==PentaEnum){
+		element_vface_connectivity = xNew<int>(iomodel->numberofelements*3); /*format: [face1 face2 face3] */
+	}
+
+	/*Maximum number of faces for initial allocation*/
+	int maxnbf     = elementnbf*iomodel->numberofelements;
+	int facescols  = 4+facemaxnbv; _assert_(facescols>6);
+
+	/*Initialize intermediaries*/
+	int* facestemp  = xNew<int>(maxnbf*facescols);        /*format: [element1 element2 marker nbv vertex1 vertex2 vertex3 ...]    */
+	int* vfacestemp = xNew<int>(maxnbf*4);
+	for(i=0;i<maxnbf;i++) facestemp[i*facescols+1]=-1;   /*Initialize second column of faces as -1 (boundary face)               */
+
+	/*Initialize chain*/
+	int* head_minv = xNew<int>(iomodel->numberofvertices);
+	int* next_face = xNew<int>(maxnbf);
+	for(i=0;i<iomodel->numberofvertices;i++) head_minv[i]=-1;
+
+	/*Initialize number of faces and list of vertex indices*/
+	int nbf = 0;
+	int* v = xNew<int>(facemaxnbv);
+	for(i=0;i<iomodel->numberofelements;i++){
+		for(j=0;j<elementnbf;j++){
+
+			/*Get indices of current face*/
+			facenbv = elementfaces[cols*j+0];
+			for(k=0;k<facenbv;k++){
+				v[k] = iomodel->elements[i*elementnbv + elementfaces[cols*j+k+1]] - 1;
+			}
+
+			/*Sort list of vertices*/
+			HeapSort(v,elementfaces[cols*j+0]);
+			v0 = v[0]; _assert_(v0>=0 && v0<iomodel->numberofvertices);
+
+			/*This face a priori has not been processed yet*/
+			bool exist = false;
+
+			/*Go through all processed faces connected to v0 and check whether we have seen this face yet*/
+			for(int f=head_minv[v0]; f!=-1; f=next_face[f]){
+				if(facestemp[f*facescols+5]==v[1]+1 && facestemp[f*facescols+6]==v[2]+1){
+					exist = true;
+					facestemp[f*facescols+1]=i+1;
+					element_face_connectivity[i*elementnbf+j]=f;
+					break;
+				}
+			}
+
+			/*If this face is new, add it to the lists*/
+			if(!exist){
+				_assert_(nbf<maxnbf);
+
+				/*Update faces*/
+				facestemp[nbf*facescols+0] = i+1;
+				facestemp[nbf*facescols+2] = elementfaces_markers[j];
+				facestemp[nbf*facescols+3] = facenbv;
+				for(k=0;k<facenbv;k++) facestemp[nbf*facescols+4+k] = v[k]+1;
+
+				/*Update Connectivity*/
+				element_face_connectivity[i*elementnbf+j]=nbf;
+
+				/*Update chain*/
+				next_face[nbf] = head_minv[v0];
+				head_minv[v0]  = nbf;
+
+				/*Increase number of faces*/
+				nbf++;
+			}
+		}
+	}
+
+	/*Vertical faces*/
+	int nbvf = 0;
+	if(iomodel->meshelementtype==PentaEnum){
+		for(i=0;i<iomodel->numberofvertices;i++) head_minv[i]=-1;
+		for(i=0;i<iomodel->numberofelements;i++){
+			for(j=2;j<5;j++){
+				for(k=0;k<4;k++) v[k] = iomodel->elements[i*elementnbv + elementfaces[cols*j+k+1]] - 1;
+				HeapSort(v,4);
+				v0 = v[0]; _assert_(v0>=0 && v0<iomodel->numberofvertices);
+				bool exist = false;
+				for(int f=head_minv[v0]; f!=-1; f=next_face[f]){
+					if(vfacestemp[f*4+1]==v[1]+1 && vfacestemp[f*4+2]==v[2]+1){
+						exist = true;
+						element_vface_connectivity[i*3+(j-2)]=f;
+						break;
+					}
+				}
+				if(!exist){ _assert_(nbvf<maxnbf);
+					for(k=0;k<4;k++) vfacestemp[nbvf*4+k] = v[k]+1;
+					element_vface_connectivity[i*3+(j-2)]=nbvf;
+					next_face[nbvf] = head_minv[v0];
+					head_minv[v0]   = nbvf;
+					nbvf++;
+				}
+			}
+		}
+	}
+
+	/*Clean up*/
+	xDelete<int>(head_minv);
+	xDelete<int>(next_face);
+	xDelete<int>(v);
+	xDelete<int>(elementfaces);
+	xDelete<int>(elementfaces_markers);
+
+	/*Create final faces (now that we have the correct size)*/
+	int* faces = xNew<int>(nbf*facescols);
+	xMemCpy<int>(faces,facestemp,nbf*facescols);
+	xDelete<int>(facestemp);
+	int* vfaces = xNew<int>(nbvf*4);
+	xMemCpy<int>(vfaces,vfacestemp,nbvf*4);
+	xDelete<int>(vfacestemp);
+
+	/*Assign output pointers*/
+	iomodel->faces                             = faces;
+	iomodel->verticalfaces                     = vfaces;
+	iomodel->numberoffaces                     = nbf;
+	iomodel->numberofverticalfaces             = nbvf;
+	iomodel->facescols                         = facescols;
+	iomodel->elementtofaceconnectivity         = element_face_connectivity;
+	iomodel->elementtoverticalfaceconnectivity = element_vface_connectivity;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateNodes.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateNodes.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateNodes.cpp	(revision 27955)
@@ -0,0 +1,747 @@
+/*
+ * CreateNodes.c:
+ */
+
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "../MeshPartitionx/MeshPartitionx.h"
+#include "./ModelProcessorx.h"
+
+#define MAXCONNECTIVITY 15
+
+bool IsNodeInRank(int* nodes_ranks,int* nodes_proc_count,int nid,int rank){/*{{{*/
+
+	/*See if node is already in partition*/
+	for(int k=0;k<nodes_proc_count[nid];k++){
+		if(nodes_ranks[MAXCONNECTIVITY*nid+k] == rank) return true;
+	}
+
+	return false;
+}/*}}}*/
+int  NodeMasterRank(int* nodes_ranks,int nid){/*{{{*/
+	return nodes_ranks[MAXCONNECTIVITY*nid+0];
+}/*}}}*/
+void AddNodeToRank(int* nodes_ranks,int* nodes_proc_count,int nid,int rank){/*{{{*/
+
+	/*See if node is already in partition, return if this is the case*/
+	if(IsNodeInRank(nodes_ranks,nodes_proc_count,nid,rank)) return;
+
+	/*This rank has not been marked for this node just yet so go ahead and add it*/
+	if(nodes_proc_count[nid]==MAXCONNECTIVITY) _error_("This node is connected to more than "<<MAXCONNECTIVITY<<" partition. Either reduce the number of processors, or increase MAXCONNECTIVITY");
+	nodes_ranks[MAXCONNECTIVITY*nid+nodes_proc_count[nid]] = rank;
+	nodes_proc_count[nid]++;
+}/*}}}*/
+
+void CreateNodes(Nodes* nodes, IoModel* iomodel,int analysis,int finite_element,bool isamr,int approximation,int* approximations){
+
+	/*Intermediaries*/
+	int        numnodes;
+	int        element_numnodes;
+	int        element_node_ids[40] = {0};
+
+	/*Get partitioning variables*/
+	int  my_rank   = IssmComm::GetRank();
+	int  num_procs = IssmComm::GetSize();
+	int*     epart = iomodel->epart;
+
+	/*Determine how many nodes we have in total (which depends on the type of finite element)*/
+	/*{{{*/
+	if(iomodel->meshelementtype==TriaEnum){
+		switch(finite_element){
+			case P0DGEnum:
+				numnodes = iomodel->numberofelements;
+				break;
+			case P1Enum:
+				numnodes = iomodel->numberofvertices;
+				break;
+			case P1DGEnum:
+				numnodes = 3*iomodel->numberofelements;
+				break;
+			case P1bubbleEnum: case P1bubblecondensedEnum:
+				numnodes = iomodel->numberofvertices+iomodel->numberofelements;
+				break;
+			case P2Enum:
+				EdgesPartitioning(iomodel);
+				numnodes = iomodel->numberofvertices+iomodel->numberofedges;
+				break;
+			case P1P1Enum: case P1P1GLSEnum: 
+				/*P1 velocity + P1 pressure element with GLS stabilization*/
+				numnodes = (iomodel->numberofvertices) + iomodel->numberofvertices;
+				break;
+			case MINIEnum: case MINIcondensedEnum:
+				/*P1+ velocity (bubble statically condensed), P1 pressure*/
+				numnodes = (iomodel->numberofvertices+iomodel->numberofelements) + (iomodel->numberofvertices);
+				break;
+			case TaylorHoodEnum: case XTaylorHoodEnum:
+				/*P2 velocity, P1 pressure*/
+				EdgesPartitioning(iomodel);
+				numnodes = (iomodel->numberofvertices+iomodel->numberofedges) + (iomodel->numberofvertices);
+				break;
+			case LATaylorHoodEnum:
+				/*P2 velocity*/
+				EdgesPartitioning(iomodel);
+				numnodes = (iomodel->numberofvertices+iomodel->numberofedges);
+				break;
+			case CrouzeixRaviartEnum:
+				/*P2b velocity, P1 DG pressure*/
+				EdgesPartitioning(iomodel);
+				numnodes = (iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements) + (3*iomodel->numberofelements);
+				break;
+			case LACrouzeixRaviartEnum:
+				/*P2b velocity*/
+				EdgesPartitioning(iomodel);
+				numnodes = (iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements);
+				break;
+			default:
+				_error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet");
+		}
+	}
+	else if(iomodel->meshelementtype==PentaEnum){
+		switch(finite_element){
+			case P1Enum:
+				numnodes = iomodel->numberofvertices;
+				break;
+			case P1bubbleEnum: case P1bubblecondensedEnum:
+				numnodes = iomodel->numberofvertices+iomodel->numberofelements;
+				break;
+			case P1xP2Enum:
+				EdgesPartitioning(iomodel);
+				numnodes = iomodel->numberofvertices+iomodel->numberofverticaledges;
+				break;
+			case P1xP3Enum:
+				EdgesPartitioning(iomodel);
+				numnodes = iomodel->numberofvertices+2*iomodel->numberofverticaledges;
+				break;
+			case P1xP4Enum:
+				EdgesPartitioning(iomodel);
+				numnodes = iomodel->numberofvertices+3*iomodel->numberofverticaledges;
+				break;
+			case P2xP1Enum:
+				EdgesPartitioning(iomodel);
+				numnodes = iomodel->numberofvertices+iomodel->numberofhorizontaledges;
+				break;
+			case P2Enum:
+				EdgesPartitioning(iomodel);
+				FacesPartitioning(iomodel);
+				numnodes = iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofverticalfaces;
+				break;
+			case P2xP4Enum:
+				EdgesPartitioning(iomodel);
+				FacesPartitioning(iomodel);
+				numnodes = iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->numberofverticalfaces;
+				break;
+			case P1P1Enum: case P1P1GLSEnum: 
+				/*P1 velocity + P1 pressure element with GLS stabilization*/
+				numnodes = (iomodel->numberofvertices) + iomodel->numberofvertices;
+				break;
+			case MINIEnum: case MINIcondensedEnum:
+				/*P1+ velocity (bubble statically condensed), P1 pressure*/
+				numnodes = (iomodel->numberofvertices+iomodel->numberofelements) + (iomodel->numberofvertices);
+				break;
+			case TaylorHoodEnum: case XTaylorHoodEnum:
+				/*P2 velocity, P1 pressure*/
+				EdgesPartitioning(iomodel);
+				FacesPartitioning(iomodel);
+				numnodes = (iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofverticalfaces) + (iomodel->numberofvertices);
+				break;
+			case OneLayerP4zEnum:
+				/*P2xP4 velocity, P1 pressure*/
+				EdgesPartitioning(iomodel);
+				FacesPartitioning(iomodel);
+				numnodes = (iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->numberofverticalfaces) + (iomodel->numberofvertices);
+				break;
+			default:
+				_error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet");
+		}
+	}
+	else{
+		_error_("mesh elements "<< EnumToStringx(iomodel->meshelementtype) <<" not supported yet");
+	}
+	/*}}}*/
+
+	/*create matrix that keeps track of all ranks that have node i, and initialize as -1 (Common to all CPUs)*/
+	int* nodes_ranks = xNew<int>(MAXCONNECTIVITY*numnodes);
+	for(int i=0;i<MAXCONNECTIVITY*numnodes;i++) nodes_ranks[i] = -1;
+
+	/*For all nodes, count how many cpus have node i (initialize with 0)*/
+	int* nodes_proc_count = xNewZeroInit<int>(numnodes);
+
+	/*Create vector of approximation per node (used for FS: vel or pressure)*/
+	int* nodes_approx = xNew<int>(numnodes);
+	if(approximations){
+		for(int i=0;i<numnodes;i++) nodes_approx[i] = approximations[i];
+	}
+	else{
+		for(int i=0;i<numnodes;i++) nodes_approx[i] = approximation;
+	}
+
+	/*Go through all elements and mark all vertices for all partitions*/
+	/*{{{*/
+	for(int i=0;i<iomodel->numberofelements;i++){
+
+		/*Define nodes sids for each element*/
+		if(iomodel->meshelementtype==TriaEnum){
+			switch(finite_element){
+				case P0DGEnum:
+					element_numnodes=1;
+					element_node_ids[0]=i;
+					break;
+				case P1Enum:
+					element_numnodes=3;
+					element_node_ids[0]=iomodel->elements[3*i+0]-1;
+					element_node_ids[1]=iomodel->elements[3*i+1]-1;
+					element_node_ids[2]=iomodel->elements[3*i+2]-1;
+					break;
+				case P1bubbleEnum: case P1bubblecondensedEnum:
+					element_numnodes=4;
+					element_node_ids[0]=iomodel->elements[3*i+0]-1;
+					element_node_ids[1]=iomodel->elements[3*i+1]-1;
+					element_node_ids[2]=iomodel->elements[3*i+2]-1;
+					element_node_ids[3]=iomodel->numberofvertices+i;
+					break;
+				case P1DGEnum:
+					element_numnodes=3;
+					element_node_ids[0]=3*i+0;
+					element_node_ids[1]=3*i+1;
+					element_node_ids[2]=3*i+2;
+					break;
+				case P2Enum:
+					element_numnodes = 6;
+					element_node_ids[0]=iomodel->elements[3*i+0]-1;
+					element_node_ids[1]=iomodel->elements[3*i+1]-1;
+					element_node_ids[2]=iomodel->elements[3*i+2]-1;
+					element_node_ids[3]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*i+0];
+					element_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*i+1];
+					element_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*i+2];
+					break;
+				case P1P1Enum: case P1P1GLSEnum:
+					element_numnodes = 3+3;
+					element_node_ids[0]=iomodel->elements[3*i+0]-1;
+					element_node_ids[1]=iomodel->elements[3*i+1]-1;
+					element_node_ids[2]=iomodel->elements[3*i+2]-1;
+					for(int n=0;n<3;n++) nodes_approx[element_node_ids[n]] = FSvelocityEnum;
+					element_node_ids[3]=iomodel->numberofvertices+iomodel->elements[3*i+0]-1;
+					element_node_ids[4]=iomodel->numberofvertices+iomodel->elements[3*i+1]-1;
+					element_node_ids[5]=iomodel->numberofvertices+iomodel->elements[3*i+2]-1;
+					for(int n=3;n<6;n++) nodes_approx[element_node_ids[n]] = FSpressureEnum;
+					break;
+				case MINIEnum: case MINIcondensedEnum:
+					element_numnodes = 4+3;
+					element_node_ids[0]=iomodel->elements[3*i+0]-1;
+					element_node_ids[1]=iomodel->elements[3*i+1]-1;
+					element_node_ids[2]=iomodel->elements[3*i+2]-1;
+					element_node_ids[3]=iomodel->numberofvertices+i;
+					for(int n=0;n<4;n++) nodes_approx[element_node_ids[n]] = FSvelocityEnum;
+					element_node_ids[4]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[3*i+0]-1;
+					element_node_ids[5]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[3*i+1]-1;
+					element_node_ids[6]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[3*i+2]-1;
+					for(int n=4;n<7;n++) nodes_approx[element_node_ids[n]] = FSpressureEnum;
+					break;
+				case TaylorHoodEnum: case XTaylorHoodEnum:
+					element_numnodes = 6+3;
+					element_node_ids[0]=iomodel->elements[3*i+0]-1;
+					element_node_ids[1]=iomodel->elements[3*i+1]-1;
+					element_node_ids[2]=iomodel->elements[3*i+2]-1;
+					element_node_ids[3]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*i+0];
+					element_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*i+1];
+					element_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*i+2];
+					for(int n=0;n<6;n++) nodes_approx[element_node_ids[n]] = FSvelocityEnum;
+					element_node_ids[6]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[3*i+0]-1;
+					element_node_ids[7]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[3*i+1]-1;
+					element_node_ids[8]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elements[3*i+2]-1;
+					for(int n=6;n<9;n++) nodes_approx[element_node_ids[n]] = FSpressureEnum;
+					break;
+				case LATaylorHoodEnum:
+					element_numnodes = 6;
+					element_node_ids[0]=iomodel->elements[3*i+0]-1;
+					element_node_ids[1]=iomodel->elements[3*i+1]-1;
+					element_node_ids[2]=iomodel->elements[3*i+2]-1;
+					element_node_ids[3]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*i+0];
+					element_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*i+1];
+					element_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*i+2];
+					for(int n=0;n<6;n++) nodes_approx[element_node_ids[n]] = FSvelocityEnum;
+					break;
+				case CrouzeixRaviartEnum:
+					element_numnodes = 7+3;
+					element_node_ids[0]=iomodel->elements[3*i+0]-1;
+					element_node_ids[1]=iomodel->elements[3*i+1]-1;
+					element_node_ids[2]=iomodel->elements[3*i+2]-1;
+					element_node_ids[3]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*i+0];
+					element_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*i+1];
+					element_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*i+2];
+					element_node_ids[6]=iomodel->numberofvertices+iomodel->numberofedges+i;
+					for(int n=0;n<7;n++) nodes_approx[element_node_ids[n]] = FSvelocityEnum;
+					element_node_ids[7]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+3*i+0;
+					element_node_ids[8]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+3*i+1;
+					element_node_ids[9]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofelements+3*i+2;
+					for(int n=7;n<10;n++) nodes_approx[element_node_ids[n]] = FSpressureEnum;
+					break;
+				case LACrouzeixRaviartEnum:
+					element_numnodes = 7;
+					element_node_ids[0]=iomodel->elements[3*i+0]-1;
+					element_node_ids[1]=iomodel->elements[3*i+1]-1;
+					element_node_ids[2]=iomodel->elements[3*i+2]-1;
+					element_node_ids[3]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*i+0];
+					element_node_ids[4]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*i+1];
+					element_node_ids[5]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[3*i+2];
+					element_node_ids[6]=iomodel->numberofvertices+iomodel->numberofedges+i;
+					for(int n=0;n<7;n++) nodes_approx[element_node_ids[n]] = FSvelocityEnum;
+					break;
+				default:
+					_error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet");
+			}
+		}
+		else if(iomodel->meshelementtype==PentaEnum){
+			switch(finite_element){
+				case P1Enum:
+					element_numnodes=6;
+					element_node_ids[0]=iomodel->elements[6*i+0]-1;
+					element_node_ids[1]=iomodel->elements[6*i+1]-1;
+					element_node_ids[2]=iomodel->elements[6*i+2]-1;
+					element_node_ids[3]=iomodel->elements[6*i+3]-1;
+					element_node_ids[4]=iomodel->elements[6*i+4]-1;
+					element_node_ids[5]=iomodel->elements[6*i+5]-1;
+					break;
+				case P1bubbleEnum: case P1bubblecondensedEnum:
+					element_numnodes=7;
+					element_node_ids[0]=iomodel->elements[6*i+0]-1;
+					element_node_ids[1]=iomodel->elements[6*i+1]-1;
+					element_node_ids[2]=iomodel->elements[6*i+2]-1;
+					element_node_ids[3]=iomodel->elements[6*i+3]-1;
+					element_node_ids[4]=iomodel->elements[6*i+4]-1;
+					element_node_ids[5]=iomodel->elements[6*i+5]-1;
+					element_node_ids[6]=iomodel->numberofvertices+i;
+					break;
+				case P1xP2Enum:
+					element_numnodes=9;
+					element_node_ids[0]=iomodel->elements[6*i+0]-1;
+					element_node_ids[1]=iomodel->elements[6*i+1]-1;
+					element_node_ids[2]=iomodel->elements[6*i+2]-1;
+					element_node_ids[3]=iomodel->elements[6*i+3]-1;
+					element_node_ids[4]=iomodel->elements[6*i+4]-1;
+					element_node_ids[5]=iomodel->elements[6*i+5]-1;
+					element_node_ids[6]=iomodel->numberofvertices+iomodel->elementtoverticaledgeconnectivity[3*i+0];
+					element_node_ids[7]=iomodel->numberofvertices+iomodel->elementtoverticaledgeconnectivity[3*i+1];
+					element_node_ids[8]=iomodel->numberofvertices+iomodel->elementtoverticaledgeconnectivity[3*i+2];
+					break;
+				case P1xP3Enum:
+					element_numnodes=12;
+					element_node_ids[ 0]=iomodel->elements[6*i+0]-1;
+					element_node_ids[ 1]=iomodel->elements[6*i+1]-1;
+					element_node_ids[ 2]=iomodel->elements[6*i+2]-1;
+					element_node_ids[ 3]=iomodel->elements[6*i+3]-1;
+					element_node_ids[ 4]=iomodel->elements[6*i+4]-1;
+					element_node_ids[ 5]=iomodel->elements[6*i+5]-1;
+					element_node_ids[ 6]=iomodel->numberofvertices+2*iomodel->elementtoverticaledgeconnectivity[3*i+0]+0;
+					element_node_ids[ 7]=iomodel->numberofvertices+2*iomodel->elementtoverticaledgeconnectivity[3*i+1]+0;
+					element_node_ids[ 8]=iomodel->numberofvertices+2*iomodel->elementtoverticaledgeconnectivity[3*i+2]+0;
+					element_node_ids[ 9]=iomodel->numberofvertices+2*iomodel->elementtoverticaledgeconnectivity[3*i+0]+1;
+					element_node_ids[10]=iomodel->numberofvertices+2*iomodel->elementtoverticaledgeconnectivity[3*i+1]+1;
+					element_node_ids[11]=iomodel->numberofvertices+2*iomodel->elementtoverticaledgeconnectivity[3*i+2]+1;
+					break;
+				case P1xP4Enum:
+					element_numnodes=15;
+					element_node_ids[ 0]=iomodel->elements[6*i+0]-1; /*Vertex 1*/
+					element_node_ids[ 1]=iomodel->elements[6*i+1]-1; /*Vertex 2*/
+					element_node_ids[ 2]=iomodel->elements[6*i+2]-1; /*Vertex 3*/
+					element_node_ids[ 3]=iomodel->elements[6*i+3]-1; /*Vertex 4*/
+					element_node_ids[ 4]=iomodel->elements[6*i+4]-1; /*Vertex 5*/
+					element_node_ids[ 5]=iomodel->elements[6*i+5]-1; /*Vertex 6*/
+					element_node_ids[ 6]=iomodel->numberofvertices+3*iomodel->elementtoverticaledgeconnectivity[3*i+0]+0; /*mid vertical edge 1*/
+					element_node_ids[ 7]=iomodel->numberofvertices+3*iomodel->elementtoverticaledgeconnectivity[3*i+1]+0; /*mid vertical edge 2*/
+					element_node_ids[ 8]=iomodel->numberofvertices+3*iomodel->elementtoverticaledgeconnectivity[3*i+2]+0; /*mid vertical edge 3*/
+					element_node_ids[ 9]=iomodel->numberofvertices+3*iomodel->elementtoverticaledgeconnectivity[3*i+0]+1; /* 1/4 vertical edge 1*/
+					element_node_ids[10]=iomodel->numberofvertices+3*iomodel->elementtoverticaledgeconnectivity[3*i+1]+1; /* 1/4 vertical edge 2*/
+					element_node_ids[11]=iomodel->numberofvertices+3*iomodel->elementtoverticaledgeconnectivity[3*i+2]+1; /* 1/4 vertical edge 3*/
+					element_node_ids[12]=iomodel->numberofvertices+3*iomodel->elementtoverticaledgeconnectivity[3*i+0]+2; /* 3/4 vertical edge 1*/
+					element_node_ids[13]=iomodel->numberofvertices+3*iomodel->elementtoverticaledgeconnectivity[3*i+1]+2; /* 3/4 vertical edge 2*/
+					element_node_ids[14]=iomodel->numberofvertices+3*iomodel->elementtoverticaledgeconnectivity[3*i+2]+2; /* 3/4 vertical edge 3*/
+					break;
+				case P2xP1Enum:
+					element_numnodes=12;
+					element_node_ids[ 0]=iomodel->elements[6*i+0]-1;
+					element_node_ids[ 1]=iomodel->elements[6*i+1]-1;
+					element_node_ids[ 2]=iomodel->elements[6*i+2]-1;
+					element_node_ids[ 3]=iomodel->elements[6*i+3]-1;
+					element_node_ids[ 4]=iomodel->elements[6*i+4]-1;
+					element_node_ids[ 5]=iomodel->elements[6*i+5]-1;
+					element_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtohorizontaledgeconnectivity[6*i+0];
+					element_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtohorizontaledgeconnectivity[6*i+1];
+					element_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtohorizontaledgeconnectivity[6*i+2];
+					element_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtohorizontaledgeconnectivity[6*i+3];
+					element_node_ids[10]=iomodel->numberofvertices+iomodel->elementtohorizontaledgeconnectivity[6*i+4];
+					element_node_ids[11]=iomodel->numberofvertices+iomodel->elementtohorizontaledgeconnectivity[6*i+5];
+					break;
+				case P2Enum:
+					element_numnodes = 18;
+					element_node_ids[ 0]=iomodel->elements[6*i+0]-1;
+					element_node_ids[ 1]=iomodel->elements[6*i+1]-1;
+					element_node_ids[ 2]=iomodel->elements[6*i+2]-1;
+					element_node_ids[ 3]=iomodel->elements[6*i+3]-1;
+					element_node_ids[ 4]=iomodel->elements[6*i+4]-1;
+					element_node_ids[ 5]=iomodel->elements[6*i+5]-1;
+					element_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+0];
+					element_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+1];
+					element_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+2];
+					element_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+3];
+					element_node_ids[10]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+4];
+					element_node_ids[11]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+5];
+					element_node_ids[12]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+6];
+					element_node_ids[13]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+7];
+					element_node_ids[14]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+8];
+					element_node_ids[15]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtoverticalfaceconnectivity[3*i+0];
+					element_node_ids[16]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtoverticalfaceconnectivity[3*i+1];
+					element_node_ids[17]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtoverticalfaceconnectivity[3*i+2];
+					break;
+				case P2xP4Enum:
+					element_numnodes = 30;
+					element_node_ids[ 0]=iomodel->elements[6*i+0]-1; /*Vertex 1*/
+					element_node_ids[ 1]=iomodel->elements[6*i+1]-1; /*Vertex 2*/
+					element_node_ids[ 2]=iomodel->elements[6*i+2]-1; /*Vertex 3*/
+					element_node_ids[ 3]=iomodel->elements[6*i+3]-1; /*Vertex 4*/
+					element_node_ids[ 4]=iomodel->elements[6*i+4]-1; /*Vertex 5*/
+					element_node_ids[ 5]=iomodel->elements[6*i+5]-1; /*Vertex 6*/
+					element_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+0]; /*mid vertical edge 1*/
+					element_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+1]; /*mid vertical edge 2*/
+					element_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+2]; /*mid vertical edge 3*/
+					element_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+3]; /*mid basal edge 1*/
+					element_node_ids[10]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+4]; /*mid basal edge 2*/
+					element_node_ids[11]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+5]; /*mid basal edge 3*/
+					element_node_ids[12]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+6]; /*mid top edge 1*/
+					element_node_ids[13]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+7]; /*mid top edge 2*/
+					element_node_ids[14]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+8]; /*mid top edge 3*/
+					element_node_ids[15]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*i+0]; /* 1/4 vertical edge 1*/
+					element_node_ids[16]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*i+1]; /* 1/4 vertical edge 2*/
+					element_node_ids[17]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*i+2]; /* 1/4 vertical edge 3*/
+					element_node_ids[18]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*i+0]+1; /* 3/4 vertical edge 1*/
+					element_node_ids[19]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*i+1]+1; /* 3/4 vertical edge 2*/
+					element_node_ids[20]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*i+2]+1; /* 3/4 vertical edge 3*/
+					element_node_ids[21]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*i+0]+0; /* 1/4 vertical face 1*/
+					element_node_ids[22]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*i+1]+0; /* 1/4 vertical face 2*/
+					element_node_ids[23]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*i+2]+0; /* 1/4 vertical face 3*/
+					element_node_ids[24]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*i+0]+1; /* 2/4 vertical face 1*/
+					element_node_ids[25]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*i+1]+1; /* 2/4 vertical face 2*/
+					element_node_ids[26]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*i+2]+1; /* 2/4 vertical face 3*/
+					element_node_ids[27]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*i+0]+2; /* 3/4 vertical face 1*/
+					element_node_ids[28]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*i+1]+2; /* 3/4 vertical face 2*/
+					element_node_ids[29]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*i+2]+2; /* 3/4 vertical face 3*/
+					break;
+				case P1P1Enum: case P1P1GLSEnum:
+					/*P1-P1 very similar to MINI, but no DOF on the element
+					TODO: add if(!approximations) or not?*/
+					element_numnodes = 6+6;
+					element_node_ids[ 0]=iomodel->elements[6*i+0]-1;
+					element_node_ids[ 1]=iomodel->elements[6*i+1]-1;
+					element_node_ids[ 2]=iomodel->elements[6*i+2]-1;
+					element_node_ids[ 3]=iomodel->elements[6*i+3]-1;
+					element_node_ids[ 4]=iomodel->elements[6*i+4]-1;
+					element_node_ids[ 5]=iomodel->elements[6*i+5]-1;
+					if(!approximations) for(int n=0;n<6;n ++) nodes_approx[element_node_ids[n]] = FSvelocityEnum;
+					element_node_ids[ 6]=iomodel->numberofvertices+iomodel->elements[6*i+0]-1;
+					element_node_ids[ 7]=iomodel->numberofvertices+iomodel->elements[6*i+1]-1;
+					element_node_ids[ 8]=iomodel->numberofvertices+iomodel->elements[6*i+2]-1;
+					element_node_ids[ 9]=iomodel->numberofvertices+iomodel->elements[6*i+3]-1;
+					element_node_ids[10]=iomodel->numberofvertices+iomodel->elements[6*i+4]-1;
+					element_node_ids[11]=iomodel->numberofvertices+iomodel->elements[6*i+5]-1;
+					if(!approximations) for(int n=6;n<12;n++) nodes_approx[element_node_ids[n]] = FSpressureEnum;
+					break;
+				case MINIEnum: case MINIcondensedEnum:
+					element_numnodes = 7+6;
+					element_node_ids[ 0]=iomodel->elements[6*i+0]-1;
+					element_node_ids[ 1]=iomodel->elements[6*i+1]-1;
+					element_node_ids[ 2]=iomodel->elements[6*i+2]-1;
+					element_node_ids[ 3]=iomodel->elements[6*i+3]-1;
+					element_node_ids[ 4]=iomodel->elements[6*i+4]-1;
+					element_node_ids[ 5]=iomodel->elements[6*i+5]-1;
+					element_node_ids[ 6]=iomodel->numberofvertices+i;
+					if(!approximations) for(int n=0;n<7;n++) nodes_approx[element_node_ids[n]] = FSvelocityEnum;
+					element_node_ids[ 7]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*i+0]-1;
+					element_node_ids[ 8]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*i+1]-1;
+					element_node_ids[ 9]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*i+2]-1;
+					element_node_ids[10]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*i+3]-1;
+					element_node_ids[11]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*i+4]-1;
+					element_node_ids[12]=iomodel->numberofvertices+iomodel->numberofelements+iomodel->elements[6*i+5]-1;
+					if(!approximations) for(int n=7;n<13;n++) nodes_approx[element_node_ids[n]] = FSpressureEnum;
+					break;
+				case TaylorHoodEnum: case XTaylorHoodEnum:
+					element_numnodes = 18+6;
+					element_node_ids[ 0]=iomodel->elements[6*i+0]-1;
+					element_node_ids[ 1]=iomodel->elements[6*i+1]-1;
+					element_node_ids[ 2]=iomodel->elements[6*i+2]-1;
+					element_node_ids[ 3]=iomodel->elements[6*i+3]-1;
+					element_node_ids[ 4]=iomodel->elements[6*i+4]-1;
+					element_node_ids[ 5]=iomodel->elements[6*i+5]-1;
+					element_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+0];
+					element_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+1];
+					element_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+2];
+					element_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+3];
+					element_node_ids[10]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+4];
+					element_node_ids[11]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+5];
+					element_node_ids[12]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+6];
+					element_node_ids[13]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+7];
+					element_node_ids[14]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+8];
+					element_node_ids[15]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtoverticalfaceconnectivity[3*i+0];
+					element_node_ids[16]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtoverticalfaceconnectivity[3*i+1];
+					element_node_ids[17]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->elementtoverticalfaceconnectivity[3*i+2];
+					for(int n=0;n<18;n++) nodes_approx[element_node_ids[n]] = FSvelocityEnum;
+					element_node_ids[18]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofverticalfaces+iomodel->elements[6*i+0]-1;
+					element_node_ids[19]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofverticalfaces+iomodel->elements[6*i+1]-1;
+					element_node_ids[20]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofverticalfaces+iomodel->elements[6*i+2]-1;
+					element_node_ids[21]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofverticalfaces+iomodel->elements[6*i+3]-1;
+					element_node_ids[22]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofverticalfaces+iomodel->elements[6*i+4]-1;
+					element_node_ids[23]=iomodel->numberofvertices+iomodel->numberofedges+iomodel->numberofverticalfaces+iomodel->elements[6*i+5]-1;
+					for(int n=18;n<24;n++) nodes_approx[element_node_ids[n]] = FSpressureEnum;
+					break;
+				case OneLayerP4zEnum:
+					element_numnodes = 30+6;
+					element_node_ids[ 0]=iomodel->elements[6*i+0]-1; /*Vertex 1*/
+					element_node_ids[ 1]=iomodel->elements[6*i+1]-1; /*Vertex 2*/
+					element_node_ids[ 2]=iomodel->elements[6*i+2]-1; /*Vertex 3*/
+					element_node_ids[ 3]=iomodel->elements[6*i+3]-1; /*Vertex 4*/
+					element_node_ids[ 4]=iomodel->elements[6*i+4]-1; /*Vertex 5*/
+					element_node_ids[ 5]=iomodel->elements[6*i+5]-1; /*Vertex 6*/
+					element_node_ids[ 6]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+0]; /*mid vertical edge 1*/
+					element_node_ids[ 7]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+1]; /*mid vertical edge 2*/
+					element_node_ids[ 8]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+2]; /*mid vertical edge 3*/
+					element_node_ids[ 9]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+3]; /*mid basal edge 1*/
+					element_node_ids[10]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+4]; /*mid basal edge 2*/
+					element_node_ids[11]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+5]; /*mid basal edge 3*/
+					element_node_ids[12]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+6]; /*mid top edge 1*/
+					element_node_ids[13]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+7]; /*mid top edge 2*/
+					element_node_ids[14]=iomodel->numberofvertices+iomodel->elementtoedgeconnectivity[9*i+8]; /*mid top edge 3*/
+					element_node_ids[15]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*i+0]; /* 1/4 vertical edge 1*/
+					element_node_ids[16]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*i+1]; /* 1/4 vertical edge 2*/
+					element_node_ids[17]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*i+2]; /* 1/4 vertical edge 3*/
+					element_node_ids[18]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*i+0]+1; /* 3/4 vertical edge 1*/
+					element_node_ids[19]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*i+1]+1; /* 3/4 vertical edge 2*/
+					element_node_ids[20]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->elementtoverticaledgeconnectivity[3*i+2]+1; /* 3/4 vertical edge 3*/
+					element_node_ids[21]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*i+0]+0; /* 1/4 vertical face 1*/
+					element_node_ids[22]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*i+1]+0; /* 1/4 vertical face 2*/
+					element_node_ids[23]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*i+2]+0; /* 1/4 vertical face 3*/
+					element_node_ids[24]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*i+0]+1; /* 2/4 vertical face 1*/
+					element_node_ids[25]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*i+1]+1; /* 2/4 vertical face 2*/
+					element_node_ids[26]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*i+2]+1; /* 2/4 vertical face 3*/
+					element_node_ids[27]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*i+0]+2; /* 3/4 vertical face 1*/
+					element_node_ids[28]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*i+1]+2; /* 3/4 vertical face 2*/
+					element_node_ids[29]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->elementtoverticalfaceconnectivity[3*i+2]+2; /* 3/4 vertical face 3*/
+					for(int n=0;n<30;n++) nodes_approx[element_node_ids[n]] = FSvelocityEnum;
+					element_node_ids[30]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->numberofverticalfaces+iomodel->elements[6*i+0]-1;
+					element_node_ids[31]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->numberofverticalfaces+iomodel->elements[6*i+1]-1;
+					element_node_ids[32]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->numberofverticalfaces+iomodel->elements[6*i+2]-1;
+					element_node_ids[33]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->numberofverticalfaces+iomodel->elements[6*i+3]-1;
+					element_node_ids[34]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->numberofverticalfaces+iomodel->elements[6*i+4]-1;
+					element_node_ids[35]=iomodel->numberofvertices+iomodel->numberofedges+2*iomodel->numberofverticaledges+3*iomodel->numberofverticalfaces+iomodel->elements[6*i+5]-1;
+					for(int n=30;n<36;n++) nodes_approx[element_node_ids[n]] = FSpressureEnum;
+					break;
+				default:
+					_error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet");
+			}
+		}
+		else{
+			_error_("mesh elements "<< EnumToStringx(iomodel->meshelementtype) <<" not supported yet");
+		}
+
+		/*Add rank epart[i] for all nodes belonging to this element*/
+		for(int j=0;j<element_numnodes;j++){
+			int nid = element_node_ids[j]; _assert_(nid<numnodes);
+			AddNodeToRank(nodes_ranks,nodes_proc_count,nid,epart[i]);
+		}
+	}
+	/*}}}*/
+	if((finite_element==P0DGEnum || finite_element==P1DGEnum) && analysis!=UzawaPressureAnalysisEnum){/*Special case for DG...{{{*/
+		if(finite_element==P1DGEnum){
+			int node_list[4];
+			if(iomodel->domaintype!=Domain2DhorizontalEnum) _error_("not implemented yet");
+			CreateEdges(iomodel);
+			CreateFaces(iomodel);
+			for(int i=0;i<iomodel->numberoffaces;i++){
+				int e1=iomodel->faces[4*i+2]-1; //faces are [node1 node2 elem1 elem2]
+				int e2=iomodel->faces[4*i+3]-1; //faces are [node1 node2 elem1 elem2]
+				if(e2!=-2){
+					if(epart[e1]!=epart[e2]){
+						int i1=iomodel->faces[4*i+0];
+						int i2=iomodel->faces[4*i+1];
+						int pos=-1;
+						for(int j=0;j<3;j++) if(iomodel->elements[3*e2+j]==i1) pos=j;
+						if(     pos==0){ node_list[0] = e2*3+0; node_list[1] = e2*3+2;}
+						else if(pos==1){ node_list[0] = e2*3+1; node_list[1] = e2*3+0;}
+						else if(pos==2){ node_list[0] = e2*3+2; node_list[1] = e2*3+1;}
+						else _error_("not supposed to happen");
+						pos=-1;
+						for(int j=0;j<3;j++) if(iomodel->elements[3*e1+j]==i1) pos=j;
+						if(     pos==0){ node_list[2] = e1*3+0; node_list[3] = e1*3+1;}
+						else if(pos==1){ node_list[2] = e1*3+1; node_list[3] = e1*3+2;}
+						else if(pos==2){ node_list[2] = e1*3+2; node_list[3] = e1*3+0;}
+						else _error_("not supposed to happen");
+						for(int j=0;j<4;j++){
+							int  nid = node_list[j];
+							AddNodeToRank(nodes_ranks,nodes_proc_count,nid,epart[e1]);
+							AddNodeToRank(nodes_ranks,nodes_proc_count,nid,epart[e2]);
+						}
+					}
+				}
+			}
+		}
+		else if(finite_element==P0DGEnum){
+			int node_list[2];
+			if(iomodel->domaintype!=Domain2DhorizontalEnum) _error_("not implemented yet");
+			CreateEdges(iomodel);
+			CreateFaces(iomodel);
+			for(int i=0;i<iomodel->numberoffaces;i++){
+				int e1=iomodel->faces[4*i+2]-1; //faces are [node1 node2 elem1 elem2]
+				int e2=iomodel->faces[4*i+3]-1; //faces are [node1 node2 elem1 elem2]
+				if(e2!=-2){
+					if(epart[e1]!=epart[e2]){
+						AddNodeToRank(nodes_ranks,nodes_proc_count,e2,epart[e1]);
+						//AddNodeToRank(nodes_ranks,nodes_proc_count,e1,epart[e2]);
+					}
+				}
+			}
+		}
+		else{
+			_error_("not supported");
+		}
+	}/*}}}*/
+	/*Vertex pairing for stressbalance{{{*/
+	if(!isamr && (analysis==StressbalanceAnalysisEnum || analysis==StressbalanceVerticalAnalysisEnum)){
+		int *vertex_pairing = NULL;
+		int  numvertex_pairing;
+		iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.stressbalance.vertex_pairing");
+		_assert_(numvertex_pairing==0 || finite_element==P1Enum);
+		for(int i=0;i<numvertex_pairing;i++){
+			int nid1 = vertex_pairing[2*i+0]-1;
+			int nid2 = vertex_pairing[2*i+1]-1;
+			for(int j=0;j<nodes_proc_count[nid1];j++) AddNodeToRank(nodes_ranks,nodes_proc_count,nid2,nodes_ranks[MAXCONNECTIVITY*nid1+j]);
+			for(int j=0;j<nodes_proc_count[nid2];j++) AddNodeToRank(nodes_ranks,nodes_proc_count,nid1,nodes_ranks[MAXCONNECTIVITY*nid2+j]);
+		}
+		xDelete<int>(vertex_pairing);
+	}
+	if(!isamr && (analysis==MasstransportAnalysisEnum
+					|| analysis==FreeSurfaceBaseAnalysisEnum
+					|| analysis==FreeSurfaceTopAnalysisEnum
+					|| analysis==DebrisAnalysisEnum
+					|| analysis==ThermalAnalysisEnum
+					|| analysis==EnthalpyAnalysisEnum
+					)){
+		int *vertex_pairing = NULL;
+		int  numvertex_pairing;
+		iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.masstransport.vertex_pairing");
+		_assert_(numvertex_pairing==0 || finite_element==P1Enum);
+		for(int i=0;i<numvertex_pairing;i++){
+			int nid1 = vertex_pairing[2*i+0]-1;
+			int nid2 = vertex_pairing[2*i+1]-1;
+			for(int j=0;j<nodes_proc_count[nid1];j++) AddNodeToRank(nodes_ranks,nodes_proc_count,nid2,nodes_ranks[MAXCONNECTIVITY*nid1+j]);
+			for(int j=0;j<nodes_proc_count[nid2];j++) AddNodeToRank(nodes_ranks,nodes_proc_count,nid1,nodes_ranks[MAXCONNECTIVITY*nid2+j]);
+		}
+		xDelete<int>(vertex_pairing);
+	}
+	/*}}}*/
+
+	/*Create vector of size total numnodes, initialized with -1, that will keep track of local ids*/
+	int  offset = 0;
+	int* nodes_offsets  = xNew<int>(numnodes);
+	for(int i=0;i<numnodes;i++){
+		if(IsNodeInRank(nodes_ranks,nodes_proc_count,i,my_rank)){
+			nodes_offsets[i] = offset++;
+		}
+		else{
+			nodes_offsets[i] = -1;
+		}
+	}
+
+	/*Now, Count how many clones we have with other partitions*/
+	int*  common_send = xNew<int>(num_procs);
+	int*  common_recv = xNew<int>(num_procs);
+	int** common_send_ids = xNew<int*>(num_procs);
+	int** common_recv_ids = xNew<int*>(num_procs);
+
+	/*First step: allocate, Step 2: populate*/
+	for(int step=0;step<2;step++){
+		if(step==1){
+			/*Allocate send and receive arrays of ids now*/
+			for(int i=0;i<num_procs;i++){
+				_assert_(common_send[i]>=0 && common_recv[i]>=0);
+				common_send_ids[i] = xNew<int>(common_send[i]);
+				common_recv_ids[i] = xNew<int>(common_recv[i]);
+			}
+		}
+		/*Re/Initialize counters to 0*/
+		for(int i=0;i<num_procs;i++){
+			common_recv[i]=0;
+			common_send[i]=0;
+		}
+		/*Go through table and find clones/masters etc*/
+		for(int i=0;i<numnodes;i++){
+			/*If we did not find this vertex in our current partition, go to next vertex*/
+			if(nodes_offsets[i] == -1) continue;
+			/*Find in what column this rank belongs*/
+			int col = -1;
+			for(int j=0;j<MAXCONNECTIVITY;j++){
+				if(nodes_ranks[MAXCONNECTIVITY*i+j] == my_rank){
+					col = j;
+					break;
+				}
+			}
+			_assert_(col!=-1);
+
+			/*If col==0, it is either not on boundary, or a master*/
+			if(col==0){
+				/*1. is this vertex on the boundary? Skip if not*/
+				if(nodes_ranks[MAXCONNECTIVITY*i+col+1]==-1){
+					continue;
+				}
+				else{
+					for(int j=1;j<nodes_proc_count[i];j++){
+						_assert_(nodes_ranks[MAXCONNECTIVITY*i+j]>=0);
+						int rank = nodes_ranks[MAXCONNECTIVITY*i+j];
+						if(step==1){
+							common_send_ids[rank][common_send[rank]] = nodes_offsets[i];
+						}
+						common_send[rank]++;
+					}
+				}
+			}
+			else{
+				/*3. It is a slave, record that we need to receive for this cpu*/
+				int rank = nodes_ranks[MAXCONNECTIVITY*i+0];
+				if(step==1){
+					common_recv_ids[rank][common_recv[rank]] = nodes_offsets[i];
+				}
+				common_recv[rank]++;
+			}
+		}
+	}
+	xDelete<int>(nodes_proc_count);
+
+	/*Go ahead and create vertices now that we have all we need*/
+	for(int i=0;i<numnodes;i++){
+		if(nodes_offsets[i]!=-1){
+			bool isclone = (nodes_ranks[MAXCONNECTIVITY*i+0]!=my_rank);
+			int io_index = 0;
+			if(i<iomodel->numberofvertices) io_index = i;
+			Node* node=new Node(i+1,i,io_index,isclone,iomodel,analysis,nodes_approx[i],isamr);
+			if(finite_element==MINIcondensedEnum || finite_element==P1bubblecondensedEnum){
+				/*Bubble function is collapsed, needs to constrain it, maybe this is not the best place to do this, but that's life!*/
+				if(i>=iomodel->numberofvertices && i<iomodel->numberofvertices+iomodel->numberofelements){
+					node->HardDeactivate();
+				}
+			}
+			nodes->AddObject(node);
+		}
+	}
+
+	/*Free data: */
+	xDelete<int>(nodes_approx);
+	xDelete<int>(nodes_ranks);
+	xDelete<int>(nodes_offsets);
+
+	/*Assign communicators*/
+	nodes->common_send=common_send;
+	nodes->common_recv=common_recv;
+	nodes->common_send_ids=common_send_ids;
+	nodes->common_recv_ids=common_recv_ids;
+
+	/*Finalize Initialization*/
+	nodes->Finalize();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp	(revision 27955)
@@ -0,0 +1,56 @@
+/*!\file:  CreateNumberNodeToElementConnectivity.cpp
+ * \brief: create connectivity table
+ */ 
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+#include "../../shared/io/io.h"
+#include "./ModelProcessorx.h"
+
+void CreateNumberNodeToElementConnectivity(IoModel* iomodel){
+
+	/*Intermediary*/
+	int i,j;
+	int vertexid;
+	int elementswidth;
+
+	/*output*/
+	int* connectivity=NULL;
+
+	/*Check that this has not been done yet*/
+	if(iomodel->numbernodetoelementconnectivity) return;
+
+	/*Some checks if debugging*/
+	_assert_(iomodel->numberofvertices);
+	_assert_(iomodel->numberofelements);
+	_assert_(iomodel->elements);
+
+	/*Allocate ouput*/
+	connectivity=xNewZeroInit<int>(iomodel->numberofvertices);
+
+	/*Get element width*/
+	switch(iomodel->meshelementtype){
+		case TriaEnum:  elementswidth=3; break;
+		case TetraEnum: elementswidth=4; break;
+		case PentaEnum: elementswidth=6; break;
+		default:                   _error_("mesh not supported yet");
+	}
+
+	/*Create connectivity table*/
+	for (i=0;i<iomodel->numberofelements;i++){
+		for (j=0;j<elementswidth;j++){
+			vertexid=iomodel->elements[elementswidth*i+j];
+			_assert_(vertexid>0 && vertexid-1<iomodel->numberofvertices);
+			connectivity[vertexid-1]+=1;
+		}
+	}
+
+	/*Assign to iomodel*/
+	iomodel->numbernodetoelementconnectivity=connectivity;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp	(revision 27955)
@@ -0,0 +1,986 @@
+/*!\file: CreateParametersOutputDefinitions.cpp
+ * \brief driver for creating output definitions dataset, and including it into the parameters dataset
+ */ 
+
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "./ModelProcessorx.h"
+
+void CreateOutputDefinitions(Elements* elements,Parameters* parameters,Inputs* inputs,IoModel* iomodel){
+
+	int i,j;
+
+	DataSet*     output_definitions      = NULL;
+	int*         output_definition_enums = NULL;
+	int          num_output_definitions;
+
+	/*Create output_definitions dataset: */
+	output_definitions=new DataSet();
+	char** out_strings = NULL;
+	iomodel->FetchData(&out_strings,&num_output_definitions,"md.outputdefinition.list");
+	if(num_output_definitions>0){
+		output_definition_enums=xNew<int>(num_output_definitions);
+		for(int i=0;i<num_output_definitions;i++){
+			output_definition_enums[i]=StringToEnumx(out_strings[i]);
+		}
+	}
+	// free data:
+	for(int i=0;i<num_output_definitions;i++) xDelete<char>(out_strings[i]);
+	xDelete<char*>(out_strings);
+
+	if(num_output_definitions){
+		for (i=0;i<num_output_definitions;i++){
+			if (output_definition_enums[i]==MassfluxatgateEnum){
+				/*Deal with mass flux gates:{{{ */
+
+				/*massfluxatgate variables: */
+				int          temp,numgates;
+				char       **gatenames           = NULL;
+				char		  **gatedefinitionstrings = NULL;
+				IssmDouble **gatesegments        = NULL;
+				int         *gatesegments_M      = NULL;
+
+				/*Fetch segments and names: */
+				iomodel->FetchMultipleData(&gatenames,&numgates,                     "md.massfluxatgate.name");
+				iomodel->FetchMultipleData(&gatedefinitionstrings,&temp,             "md.massfluxatgate.definitionstring"); _assert_(temp==numgates);
+				iomodel->FetchMultipleData(&gatesegments,&gatesegments_M,NULL,&temp, "md.massfluxatgate.segments");         _assert_(temp==numgates);
+
+				for(j=0;j<numgates;j++){
+					output_definitions->AddObject(new Massfluxatgate<IssmDouble>(gatenames[j],StringToEnumx(gatedefinitionstrings[j]),gatesegments_M[j],gatesegments[j]));
+				}
+				/*Free resources:*/
+				for(j=0;j<numgates;j++){
+					char*       string  = gatenames[j];             xDelete<char>(string);
+					char*       string2 = gatedefinitionstrings[j]; xDelete<char>(string2);
+					IssmDouble* gate    = gatesegments[j];          xDelete<IssmDouble>(gate);
+				}
+				xDelete<char*>(gatenames);
+				xDelete<IssmDouble*>(gatesegments);
+				xDelete<int>(gatesegments_M);
+				xDelete<char*>(gatedefinitionstrings);
+				/*}}}*/
+			}
+			else if (output_definition_enums[i]==MisfitEnum){
+				/*Deal with misfits: {{{*/
+
+				/*misfit variables: */
+				int          nummisfits;
+				char**       misfit_name_s						= NULL;    
+				char**		 misfit_definitionstring_s		= NULL;    
+				char**       misfit_model_string_s			= NULL;
+				IssmDouble** misfit_observation_s			= NULL;
+				char**		 misfit_observation_string_s	= NULL;
+				int*         misfit_observation_M_s			= NULL;
+				int*         misfit_observation_N_s			= NULL;
+				int*         misfit_local_s					= NULL;
+				char**       misfit_timeinterpolation_s	= NULL;
+				IssmDouble** misfit_weights_s					= NULL;
+				int*         misfit_weights_M_s				= NULL;
+				int*         misfit_weights_N_s				= NULL;
+				char**       misfit_weights_string_s		= NULL;
+
+				/*Fetch name, model_string, observation, observation_string, etc ... (see src/m/classes/misfit.m): */
+				iomodel->FetchMultipleData(&misfit_name_s,&nummisfits,                                                        "md.misfit.name");
+				iomodel->FetchMultipleData(&misfit_definitionstring_s,&nummisfits,                                            "md.misfit.definitionstring");
+				iomodel->FetchMultipleData(&misfit_model_string_s,&nummisfits,                                                "md.misfit.model_string");
+				iomodel->FetchMultipleData(&misfit_observation_s,&misfit_observation_M_s,&misfit_observation_N_s,&nummisfits, "md.misfit.observation");
+				iomodel->FetchMultipleData(&misfit_observation_string_s,&nummisfits,                                          "md.misfit.observation_string");
+				iomodel->FetchMultipleData(&misfit_timeinterpolation_s,&nummisfits,                                           "md.misfit.timeinterpolation");
+				iomodel->FetchMultipleData(&misfit_local_s,&nummisfits,                                                       "md.misfit.local");
+				iomodel->FetchMultipleData(&misfit_weights_s,&misfit_weights_M_s,&misfit_weights_N_s,&nummisfits,             "md.misfit.weights");
+				iomodel->FetchMultipleData(&misfit_weights_string_s,&nummisfits,                                              "md.misfit.weights_string");
+
+				for(j=0;j<nummisfits;j++){
+
+					int obs_vector_type=0;
+					if ((misfit_observation_M_s[j]==iomodel->numberofvertices) || (misfit_observation_M_s[j]==iomodel->numberofvertices+1)){
+						obs_vector_type=1;
+					}
+					else if ((misfit_observation_M_s[j]==iomodel->numberofelements) || (misfit_observation_M_s[j]==iomodel->numberofelements+1)){
+						obs_vector_type=2;
+					}
+					else
+					 _error_("misfit observation size not supported yet");
+
+					int weight_vector_type=0;
+					if ((misfit_weights_M_s[j]==iomodel->numberofvertices) || (misfit_weights_M_s[j]==iomodel->numberofvertices+1)){
+						weight_vector_type=1;
+					}
+					else if ((misfit_weights_M_s[j]==iomodel->numberofelements) || (misfit_weights_M_s[j]==iomodel->numberofelements+1)){
+						weight_vector_type=2;
+					}
+					else
+					 _error_("misfit weight size not supported yet");
+
+					/*First create a misfit object for that specific string (misfit_model_string_s[j]):*/
+					output_definitions->AddObject(new Misfit(misfit_name_s[j],StringToEnumx(misfit_definitionstring_s[j]),StringToEnumx(misfit_model_string_s[j]),StringToEnumx(misfit_observation_string_s[j]),misfit_timeinterpolation_s[j],misfit_local_s[j],StringToEnumx(misfit_weights_string_s[j])));
+
+					/*Now, for this particular misfit object, make sure we plug into the elements: the observation, and the weights.*/
+					for(Object* & object : elements->objects){
+						Element* element=xDynamicCast<Element*>(object);
+						element->InputCreate(misfit_observation_s[j],inputs,iomodel,misfit_observation_M_s[j],misfit_observation_N_s[j],obs_vector_type,StringToEnumx(misfit_observation_string_s[j]),7);
+						element->InputCreate(misfit_weights_s[j],inputs,iomodel,misfit_weights_M_s[j],misfit_weights_N_s[j],weight_vector_type,StringToEnumx(misfit_weights_string_s[j]),7);
+					}
+
+				}
+
+				/*Free resources:*/
+				for(j=0;j<nummisfits;j++){
+					char* string=NULL;
+					IssmDouble* matrix = NULL;
+					string = misfit_definitionstring_s[j];		xDelete<char>(string);
+					string = misfit_observation_string_s[j];	xDelete<char>(string);
+					string = misfit_model_string_s[j];			xDelete<char>(string);
+					string = misfit_weights_string_s[j];		xDelete<char>(string);
+					string = misfit_name_s[j];    xDelete<char>(string);
+					string = misfit_timeinterpolation_s[j];    xDelete<char>(string);
+					matrix = misfit_observation_s[j]; xDelete<IssmDouble>(matrix);
+					matrix = misfit_weights_s[j]; xDelete<IssmDouble>(matrix);
+				}
+				xDelete<char*>(misfit_name_s);
+				xDelete<char*>(misfit_model_string_s);
+				xDelete<char*>(misfit_definitionstring_s);
+				xDelete<IssmDouble*>(misfit_observation_s);
+				xDelete<char*>(misfit_observation_string_s);
+				xDelete<int>(misfit_observation_M_s);
+				xDelete<int>(misfit_observation_N_s);
+				xDelete<int>(misfit_local_s);
+				xDelete<char*>(misfit_timeinterpolation_s);
+				xDelete<IssmDouble*>(misfit_weights_s);
+				xDelete<int>(misfit_weights_M_s);
+				xDelete<int>(misfit_weights_N_s);
+				xDelete<char*>(misfit_weights_string_s);
+				/*}}}*/
+			}
+			else if (output_definition_enums[i]==CfsurfacesquareEnum){
+				/*Deal with cfsurfacesquare: {{{*/
+
+				/*cfsurfacesquare variables: */
+				int          num_cfsurfacesquares;
+				char**       cfsurfacesquare_name_s						= NULL;    
+				char**		 cfsurfacesquare_definitionstring_s		= NULL;    
+				char**       cfsurfacesquare_model_string_s			= NULL;
+				IssmDouble** cfsurfacesquare_observation_s			= NULL;
+				char**		 cfsurfacesquare_observation_string_s	= NULL;
+				int*         cfsurfacesquare_observation_M_s			= NULL;
+				int*         cfsurfacesquare_observation_N_s			= NULL;
+				IssmDouble** cfsurfacesquare_weights_s					= NULL;
+				int*         cfsurfacesquare_weights_M_s				= NULL;
+				int*         cfsurfacesquare_weights_N_s				= NULL;
+				char**       cfsurfacesquare_weights_string_s		= NULL;
+				IssmDouble*	 cfsurfacesquare_datatime_s				= NULL;
+
+				/*Fetch name, model_string, observation, observation_string, etc ... (see src/m/classes/cfsurfacesquare.m): */
+				iomodel->FetchMultipleData(&cfsurfacesquare_name_s,&num_cfsurfacesquares,                                                        "md.cfsurfacesquare.name");
+				iomodel->FetchMultipleData(&cfsurfacesquare_definitionstring_s,&num_cfsurfacesquares,                                            "md.cfsurfacesquare.definitionstring");
+				iomodel->FetchMultipleData(&cfsurfacesquare_model_string_s,&num_cfsurfacesquares,                                                "md.cfsurfacesquare.model_string");
+				iomodel->FetchMultipleData(&cfsurfacesquare_observation_s,&cfsurfacesquare_observation_M_s,&cfsurfacesquare_observation_N_s,&num_cfsurfacesquares, "md.cfsurfacesquare.observation");
+				iomodel->FetchMultipleData(&cfsurfacesquare_observation_string_s,&num_cfsurfacesquares,                                          "md.cfsurfacesquare.observation_string");
+				iomodel->FetchMultipleData(&cfsurfacesquare_weights_s,&cfsurfacesquare_weights_M_s,&cfsurfacesquare_weights_N_s,&num_cfsurfacesquares,             "md.cfsurfacesquare.weights");
+				iomodel->FetchMultipleData(&cfsurfacesquare_weights_string_s,&num_cfsurfacesquares,                                              "md.cfsurfacesquare.weights_string");
+				iomodel->FetchMultipleData(&cfsurfacesquare_datatime_s,&num_cfsurfacesquares,																	 "md.cfsurfacesquare.datatime");
+
+				for(j=0;j<num_cfsurfacesquares;j++){
+
+					int obs_vector_type=0;
+					if ((cfsurfacesquare_observation_M_s[j]==iomodel->numberofvertices) || (cfsurfacesquare_observation_M_s[j]==iomodel->numberofvertices+1)){
+						obs_vector_type=1;
+					}
+					else if ((cfsurfacesquare_observation_M_s[j]==iomodel->numberofelements) || (cfsurfacesquare_observation_M_s[j]==iomodel->numberofelements+1)){
+						obs_vector_type=2;
+					}
+					else
+					 _error_("cfsurfacesquare observation size not supported yet");
+
+					int weight_vector_type=0;
+					if ((cfsurfacesquare_weights_M_s[j]==iomodel->numberofvertices) || (cfsurfacesquare_weights_M_s[j]==iomodel->numberofvertices+1)){
+						weight_vector_type=1;
+					}
+					else if ((cfsurfacesquare_weights_M_s[j]==iomodel->numberofelements) || (cfsurfacesquare_weights_M_s[j]==iomodel->numberofelements+1)){
+						weight_vector_type=2;
+					}
+					else
+					 _error_("cfsurfacesquare weight size not supported yet");
+
+					/*First create a cfsurfacesquare object for that specific string (cfsurfacesquare_model_string_s[j]):*/
+					output_definitions->AddObject(new Cfsurfacesquare(cfsurfacesquare_name_s[j],StringToEnumx(cfsurfacesquare_definitionstring_s[j]),StringToEnumx(cfsurfacesquare_model_string_s[j]),cfsurfacesquare_datatime_s[j]));
+
+					/*Now, for this particular cfsurfacesquare object, make sure we plug into the elements: the observation, and the weights.*/
+					for(Object* & object : elements->objects){
+						Element* element=xDynamicCast<Element*>(object);
+						element->DatasetInputAdd(StringToEnumx(cfsurfacesquare_definitionstring_s[j]),cfsurfacesquare_observation_s[j],inputs,iomodel,cfsurfacesquare_observation_M_s[j],cfsurfacesquare_observation_N_s[j],obs_vector_type,StringToEnumx(cfsurfacesquare_observation_string_s[j]),SurfaceObservationEnum);
+						element->DatasetInputAdd(StringToEnumx(cfsurfacesquare_definitionstring_s[j]),cfsurfacesquare_weights_s[j],inputs,iomodel,cfsurfacesquare_weights_M_s[j],cfsurfacesquare_weights_N_s[j],weight_vector_type,StringToEnumx(cfsurfacesquare_weights_string_s[j]),WeightsSurfaceObservationEnum);
+
+					}
+
+				}
+
+				  /*Free resources:*/
+				for(j=0;j<num_cfsurfacesquares;j++){
+					char* string=NULL;
+					IssmDouble* matrix = NULL;
+
+					string = cfsurfacesquare_definitionstring_s[j];		xDelete<char>(string);
+					string = cfsurfacesquare_observation_string_s[j];	xDelete<char>(string);
+					string = cfsurfacesquare_model_string_s[j];			xDelete<char>(string);
+					string = cfsurfacesquare_weights_string_s[j];		xDelete<char>(string);
+					string = cfsurfacesquare_name_s[j];    xDelete<char>(string);
+					matrix = cfsurfacesquare_observation_s[j]; xDelete<IssmDouble>(matrix);
+					matrix = cfsurfacesquare_weights_s[j]; xDelete<IssmDouble>(matrix);
+				}
+				xDelete<char*>(cfsurfacesquare_name_s);
+				xDelete<char*>(cfsurfacesquare_model_string_s);
+				xDelete<char*>(cfsurfacesquare_definitionstring_s);
+				xDelete<IssmDouble*>(cfsurfacesquare_observation_s);
+				xDelete<char*>(cfsurfacesquare_observation_string_s);
+				xDelete<int>(cfsurfacesquare_observation_M_s);
+				xDelete<int>(cfsurfacesquare_observation_N_s);
+				xDelete<IssmDouble*>(cfsurfacesquare_weights_s);
+				xDelete<int>(cfsurfacesquare_weights_M_s);
+				xDelete<int>(cfsurfacesquare_weights_N_s);
+				xDelete<char*>(cfsurfacesquare_weights_string_s);
+				xDelete<IssmDouble>(cfsurfacesquare_datatime_s);
+				/*}}}*/
+			}
+			else if (output_definition_enums[i]==CfsurfacesquaretransientEnum){
+				/*Deal with cfsurfacesquaretransient: {{{*/
+
+				/*cfsurfacesquaretransient variables: */
+				int          num_cfsurfacesquaretransients,test;
+				char       **cfssqt_name_s                = NULL;
+				char       **cfssqt_definitionstring_s    = NULL;
+				char       **cfssqt_model_string_s        = NULL;
+				IssmDouble **cfssqt_observations_s        = NULL;
+				int         *cfssqt_observations_M_s      = NULL;
+				int         *cfssqt_observations_N_s      = NULL;
+				IssmDouble **cfssqt_weights_s             = NULL;
+				int         *cfssqt_weights_M_s           = NULL;
+				int         *cfssqt_weights_N_s           = NULL;
+
+				/*Fetch name, model_string, observation, observation_string, etc ... (see src/m/classes/cfsurfacesquaretransient.m): */
+				iomodel->FetchMultipleData(&cfssqt_name_s,&num_cfsurfacesquaretransients,"md.cfsurfacesquaretransient.name");
+				iomodel->FetchMultipleData(&cfssqt_definitionstring_s,&test,"md.cfsurfacesquaretransient.definitionstring"); _assert_(test==num_cfsurfacesquaretransients);
+				iomodel->FetchMultipleData(&cfssqt_model_string_s,&test,"md.cfsurfacesquaretransient.model_string"); _assert_(test==num_cfsurfacesquaretransients);
+				iomodel->FetchMultipleData(&cfssqt_observations_s,&cfssqt_observations_M_s,&cfssqt_observations_N_s,&test, "md.cfsurfacesquaretransient.observations"); _assert_(test==num_cfsurfacesquaretransients);
+				iomodel->FetchMultipleData(&cfssqt_weights_s,&cfssqt_weights_M_s,&cfssqt_weights_N_s, &test,"md.cfsurfacesquaretransient.weights"); _assert_(test==num_cfsurfacesquaretransients);
+
+				for(j=0;j<num_cfsurfacesquaretransients;j++){
+
+               /*Check that we can use P1 inputs*/
+					if (cfssqt_observations_M_s[j]!=(iomodel->numberofvertices+1)) _error_("observations should be a P1 time series");
+               if (cfssqt_weights_M_s[j]!=iomodel->numberofvertices+1)        _error_("weights should be a P1 time series");
+					_assert_(cfssqt_observations_N_s[j]>0);
+
+					/*extract data times from last row of observations*/
+					IssmDouble *datatimes = xNew<IssmDouble>(cfssqt_observations_N_s[j]);
+					for(int k=0;k<cfssqt_observations_N_s[j];k++) datatimes[k] = (cfssqt_observations_s[j])[cfssqt_observations_N_s[j]*(cfssqt_weights_M_s[j]-1)+k];
+
+					/*First create a cfsurfacesquaretransient object for that specific string (cfssqt_model_string_s[j]):*/
+					output_definitions->AddObject(new Cfsurfacesquaretransient(cfssqt_name_s[j], StringToEnumx(cfssqt_definitionstring_s[j]), StringToEnumx(cfssqt_model_string_s[j]), cfssqt_observations_N_s[j],datatimes ));
+					xDelete<IssmDouble>(datatimes);
+
+					/*Now, for this particular cfsurfacesquaretransient object, make sure we plug into the elements: the observation, and the weights.*/
+					for(Object* & object : elements->objects){
+						Element* element=xDynamicCast<Element*>(object);
+						element->DatasetInputAdd(StringToEnumx(cfssqt_definitionstring_s[j]),cfssqt_observations_s[j],inputs,iomodel,cfssqt_observations_M_s[j],cfssqt_observations_N_s[j],1,SurfaceObservationEnum,SurfaceObservationEnum);
+						element->DatasetInputAdd(StringToEnumx(cfssqt_definitionstring_s[j]),cfssqt_weights_s[j],inputs,iomodel,cfssqt_weights_M_s[j],cfssqt_weights_N_s[j],1,WeightsSurfaceObservationEnum,WeightsSurfaceObservationEnum);
+
+					}
+				}
+
+				/*Free resources:*/
+				for(j=0;j<num_cfsurfacesquaretransients;j++){
+					char* string=NULL;
+					IssmDouble* matrix = NULL;
+					string = cfssqt_definitionstring_s[j];		xDelete<char>(string);
+					string = cfssqt_model_string_s[j];			xDelete<char>(string);
+					string = cfssqt_name_s[j];    xDelete<char>(string);
+					matrix = cfssqt_observations_s[j]; xDelete<IssmDouble>(matrix);
+					matrix = cfssqt_weights_s[j]; xDelete<IssmDouble>(matrix);
+				}
+				xDelete<char*>(cfssqt_name_s);
+				xDelete<char*>(cfssqt_model_string_s);
+				xDelete<char*>(cfssqt_definitionstring_s);
+				xDelete<IssmDouble*>(cfssqt_observations_s);
+				xDelete<int>(cfssqt_observations_M_s);
+				xDelete<int>(cfssqt_observations_N_s);
+				xDelete<IssmDouble*>(cfssqt_weights_s);
+				xDelete<int>(cfssqt_weights_M_s);
+				xDelete<int>(cfssqt_weights_N_s);
+				/*}}}*/
+			}
+			else if (output_definition_enums[i]==CfdragcoeffabsgradEnum){
+				/*Deal with cfdragcoeffabsgrad: {{{*/
+
+				/*cfdragcoeffabsgrad variables: */
+				int          num_cfdragcoeffabsgrads;
+				char**       cfdragcoeffabsgrad_name_s						= NULL;    
+				char**		 cfdragcoeffabsgrad_definitionstring_s		= NULL;    
+				IssmDouble** cfdragcoeffabsgrad_weights_s					= NULL;
+				int*         cfdragcoeffabsgrad_weights_M_s				= NULL;
+				int*         cfdragcoeffabsgrad_weights_N_s				= NULL;
+				char**       cfdragcoeffabsgrad_weights_string_s		= NULL;
+
+				/*Fetch name, model_string, observation, observation_string, etc ... (see src/m/classes/cfdragcoeffabsgrad.m): */
+				iomodel->FetchMultipleData(&cfdragcoeffabsgrad_name_s,&num_cfdragcoeffabsgrads,                                                        "md.cfdragcoeffabsgrad.name");
+				iomodel->FetchMultipleData(&cfdragcoeffabsgrad_definitionstring_s,&num_cfdragcoeffabsgrads,                                            "md.cfdragcoeffabsgrad.definitionstring");
+				iomodel->FetchMultipleData(&cfdragcoeffabsgrad_weights_s,&cfdragcoeffabsgrad_weights_M_s,&cfdragcoeffabsgrad_weights_N_s,&num_cfdragcoeffabsgrads,             "md.cfdragcoeffabsgrad.weights");
+				iomodel->FetchMultipleData(&cfdragcoeffabsgrad_weights_string_s,&num_cfdragcoeffabsgrads,                                              "md.cfdragcoeffabsgrad.weights_string");
+
+				for(j=0;j<num_cfdragcoeffabsgrads;j++){
+
+					int weight_vector_type=0;
+					if ((cfdragcoeffabsgrad_weights_M_s[j]==iomodel->numberofvertices) || (cfdragcoeffabsgrad_weights_M_s[j]==iomodel->numberofvertices+1)){
+						weight_vector_type=1;
+					}
+					else if ((cfdragcoeffabsgrad_weights_M_s[j]==iomodel->numberofelements) || (cfdragcoeffabsgrad_weights_M_s[j]==iomodel->numberofelements+1)){
+						weight_vector_type=2;
+					}
+					else
+					 _error_("cfdragcoeffabsgrad weight size not supported yet");
+
+					/*First create a cfdragcoeffabsgrad object for that specific string (cfdragcoeffabsgrad_model_string_s[j]):*/
+					output_definitions->AddObject(new Cfdragcoeffabsgrad(cfdragcoeffabsgrad_name_s[j],StringToEnumx(cfdragcoeffabsgrad_definitionstring_s[j])));
+
+					/*Now, for this particular cfdragcoeffabsgrad object, make sure we plug into the elements: the observation, and the weights.*/
+					for(Object* & object : elements->objects){
+
+						Element* element=xDynamicCast<Element*>(object);
+
+						element->DatasetInputAdd(StringToEnumx(cfdragcoeffabsgrad_definitionstring_s[j]),cfdragcoeffabsgrad_weights_s[j],inputs,iomodel,cfdragcoeffabsgrad_weights_M_s[j],cfdragcoeffabsgrad_weights_N_s[j],weight_vector_type,StringToEnumx(cfdragcoeffabsgrad_weights_string_s[j]),WeightsSurfaceObservationEnum);
+
+					}
+
+				}
+
+				/*Free resources:*/
+				for(j=0;j<num_cfdragcoeffabsgrads;j++){
+					char* string=NULL;
+					IssmDouble* matrix = NULL;
+
+					string = cfdragcoeffabsgrad_definitionstring_s[j];		xDelete<char>(string);
+					string = cfdragcoeffabsgrad_weights_string_s[j];		xDelete<char>(string);
+					string = cfdragcoeffabsgrad_name_s[j];    xDelete<char>(string);
+					matrix = cfdragcoeffabsgrad_weights_s[j]; xDelete<IssmDouble>(matrix);
+				}
+				xDelete<char*>(cfdragcoeffabsgrad_name_s);
+				xDelete<char*>(cfdragcoeffabsgrad_definitionstring_s);
+				xDelete<IssmDouble*>(cfdragcoeffabsgrad_weights_s);
+				xDelete<int>(cfdragcoeffabsgrad_weights_M_s);
+				xDelete<int>(cfdragcoeffabsgrad_weights_N_s);
+				xDelete<char*>(cfdragcoeffabsgrad_weights_string_s);
+				/*}}}*/
+			}
+			else if (output_definition_enums[i]==CfdragcoeffabsgradtransientEnum){
+				/*Deal with cfdragcoeffabsgradtransient: {{{*/
+
+				/*cfdragcoeffabsgrad variables: */
+				int          num_cfdragcoeffabsgradtransients, test;
+				char**       cfdraggradt_name_s						= NULL;    
+				char**		 cfdraggradt_definitionstring_s		= NULL;    
+				IssmDouble** cfdraggradt_weights_s					= NULL;
+				int*         cfdraggradt_weights_M_s				= NULL;
+				int*         cfdraggradt_weights_N_s				= NULL;
+
+				/*Fetch name, model_string, observation, observation_string, etc ... (see src/m/classes/cfdragcoeffabsgradtransient.m): */
+				iomodel->FetchMultipleData(&cfdraggradt_name_s,&num_cfdragcoeffabsgradtransients,                                                        "md.cfdragcoeffabsgradtransient.name");
+				iomodel->FetchMultipleData(&cfdraggradt_definitionstring_s,&num_cfdragcoeffabsgradtransients,                                            "md.cfdragcoeffabsgradtransient.definitionstring");
+				iomodel->FetchMultipleData(&cfdraggradt_weights_s,&cfdraggradt_weights_M_s,&cfdraggradt_weights_N_s,&test,             "md.cfdragcoeffabsgradtransient.weights");
+					
+				for(j=0;j<num_cfdragcoeffabsgradtransients;j++){
+               
+					/*Check that we can use P1 inputs*/
+					if (cfdraggradt_weights_M_s[j]!=iomodel->numberofvertices+1)  _error_("weights should be a P1 time series");
+					
+					/*extract data times from last row of observations*/
+					IssmDouble *datatimes = xNew<IssmDouble>(cfdraggradt_weights_N_s[j]);
+					for(int k=0;k<cfdraggradt_weights_N_s[j];k++) datatimes[k] = (cfdraggradt_weights_s[j])[cfdraggradt_weights_N_s[j]*(cfdraggradt_weights_M_s[j]-1)+k];
+
+					 /*First create a cfdragcoeffabsgradtransient object for that specific string:*/
+					output_definitions->AddObject(new Cfdragcoeffabsgradtransient(cfdraggradt_name_s[j],StringToEnumx(cfdraggradt_definitionstring_s[j]), cfdraggradt_weights_N_s[j], datatimes));
+
+					/*Now, for this particular cfdragcoeffabsgrad object, make sure we plug into the elements: the observation, and the weights.*/
+					for(Object* & object : elements->objects){
+
+						Element* element=xDynamicCast<Element*>(object);
+
+						element->DatasetInputAdd(StringToEnumx(cfdraggradt_definitionstring_s[j]),cfdraggradt_weights_s[j],inputs,iomodel,cfdraggradt_weights_M_s[j],cfdraggradt_weights_N_s[j],1,WeightsSurfaceObservationEnum,WeightsSurfaceObservationEnum);
+
+					}
+				}
+
+				/*Free resources:*/
+				for(j=0;j<num_cfdragcoeffabsgradtransients;j++){
+					char* string=NULL;
+					IssmDouble* matrix = NULL;
+
+					string = cfdraggradt_definitionstring_s[j];		xDelete<char>(string);
+					string = cfdraggradt_name_s[j];    xDelete<char>(string);
+					matrix = cfdraggradt_weights_s[j]; xDelete<IssmDouble>(matrix);
+				}
+				xDelete<char*>(cfdraggradt_name_s);
+				xDelete<char*>(cfdraggradt_definitionstring_s);
+				xDelete<IssmDouble*>(cfdraggradt_weights_s);
+				xDelete<int>(cfdraggradt_weights_M_s);
+				xDelete<int>(cfdraggradt_weights_N_s);
+				/*}}}*/
+			}
+			else if (output_definition_enums[i]==CfrheologybbarabsgradEnum){
+				/*Deal with cfrheologybbarabsgrad: {{{*/
+
+				/*cfrheologybbarabsgrad variables: */
+				int          num_cfrheologybbarabsgrads;
+				char**       cfrheologybbarabsgrad_name_s                = NULL;
+				char**       cfrheologybbarabsgrad_definitionstring_s    = NULL;
+				IssmDouble** cfrheologybbarabsgrad_weights_s             = NULL;
+				int*         cfrheologybbarabsgrad_weights_M_s           = NULL;
+				int*         cfrheologybbarabsgrad_weights_N_s           = NULL;
+				char**       cfrheologybbarabsgrad_weights_string_s      = NULL;
+
+				/*Fetch name, model_string, observation, observation_string, etc ... (see src/m/classes/cfrheologybbarabsgrad.m): */
+				iomodel->FetchMultipleData(&cfrheologybbarabsgrad_name_s,&num_cfrheologybbarabsgrads,                                                        "md.cfrheologybbarabsgrad.name");
+				iomodel->FetchMultipleData(&cfrheologybbarabsgrad_definitionstring_s,&num_cfrheologybbarabsgrads,                                            "md.cfrheologybbarabsgrad.definitionstring");
+				iomodel->FetchMultipleData(&cfrheologybbarabsgrad_weights_s,&cfrheologybbarabsgrad_weights_M_s,&cfrheologybbarabsgrad_weights_N_s,&num_cfrheologybbarabsgrads,             "md.cfrheologybbarabsgrad.weights");
+				iomodel->FetchMultipleData(&cfrheologybbarabsgrad_weights_string_s,&num_cfrheologybbarabsgrads,                                              "md.cfrheologybbarabsgrad.weights_string");
+
+				for(j=0;j<num_cfrheologybbarabsgrads;j++){
+
+					int weight_vector_type=0;
+					if ((cfrheologybbarabsgrad_weights_M_s[j]==iomodel->numberofvertices) || (cfrheologybbarabsgrad_weights_M_s[j]==iomodel->numberofvertices+1)){
+						weight_vector_type=1;
+					}
+					else if ((cfrheologybbarabsgrad_weights_M_s[j]==iomodel->numberofelements) || (cfrheologybbarabsgrad_weights_M_s[j]==iomodel->numberofelements+1)){
+						weight_vector_type=2;
+					}
+					else
+					 _error_("cfrheologybbarabsgrad weight size not supported yet");
+
+					/*First create a cfrheologybbarabsgrad object for that specific string (cfrheologybbarabsgrad_model_string_s[j]):*/
+					output_definitions->AddObject(new Cfrheologybbarabsgrad(cfrheologybbarabsgrad_name_s[j],StringToEnumx(cfrheologybbarabsgrad_definitionstring_s[j]),StringToEnumx(cfrheologybbarabsgrad_weights_string_s[j])));
+
+					/*Now, for this particular cfrheologybbarabsgrad object, make sure we plug into the elements: the observation, and the weights.*/
+					for(Object* & object : elements->objects){
+
+						Element* element=xDynamicCast<Element*>(object);
+
+						element->DatasetInputAdd(StringToEnumx(cfrheologybbarabsgrad_definitionstring_s[j]),cfrheologybbarabsgrad_weights_s[j],inputs,iomodel,cfrheologybbarabsgrad_weights_M_s[j],cfrheologybbarabsgrad_weights_N_s[j],weight_vector_type,StringToEnumx(cfrheologybbarabsgrad_weights_string_s[j]),WeightsSurfaceObservationEnum);
+
+					}
+
+				}
+				    /*Free resources:*/
+            for(j=0;j<num_cfrheologybbarabsgrads;j++){
+               char* string=NULL;
+               IssmDouble* matrix = NULL;
+
+               string = cfrheologybbarabsgrad_definitionstring_s[j];    xDelete<char>(string);
+               string = cfrheologybbarabsgrad_weights_string_s[j];      xDelete<char>(string);
+               string = cfrheologybbarabsgrad_name_s[j];    xDelete<char>(string);
+               matrix = cfrheologybbarabsgrad_weights_s[j]; xDelete<IssmDouble>(matrix);
+            }
+            xDelete<char*>(cfrheologybbarabsgrad_name_s);
+            xDelete<char*>(cfrheologybbarabsgrad_definitionstring_s);
+            xDelete<IssmDouble*>(cfrheologybbarabsgrad_weights_s);
+            xDelete<int>(cfrheologybbarabsgrad_weights_M_s);
+            xDelete<int>(cfrheologybbarabsgrad_weights_N_s);
+            xDelete<char*>(cfrheologybbarabsgrad_weights_string_s);
+            /*}}}*/
+         }
+			else if (output_definition_enums[i]==CfrheologybbarabsgradtransientEnum){
+				/*Deal with cfrheologybbarabsgradtransient: {{{*/
+
+				/*cfrheologybbarabsgrad variables: */
+				int          num_cfrheologybbarabsgradtransients, test;
+				char**       cfrheogradt_name_s                = NULL;
+				char**       cfrheogradt_definitionstring_s    = NULL;
+				IssmDouble** cfrheogradt_weights_s             = NULL;
+				int*         cfrheogradt_weights_M_s           = NULL;
+				int*         cfrheogradt_weights_N_s           = NULL;
+				char**       cfrheogradt_weights_string_s      = NULL;
+
+				/*Fetch name, model_string, observation, observation_string, etc ... (see src/m/classes/cfrheologybbarabsgradtransient.m): */
+				iomodel->FetchMultipleData(&cfrheogradt_name_s,&num_cfrheologybbarabsgradtransients,                                                        "md.cfrheologybbarabsgradtransient.name");
+				iomodel->FetchMultipleData(&cfrheogradt_definitionstring_s,&num_cfrheologybbarabsgradtransients,                                            "md.cfrheologybbarabsgradtransient.definitionstring");
+				iomodel->FetchMultipleData(&cfrheogradt_weights_s,&cfrheogradt_weights_M_s,&cfrheogradt_weights_N_s,&test,             "md.cfrheologybbarabsgradtransient.weights");
+
+				for(j=0;j<num_cfrheologybbarabsgradtransients;j++){
+
+					if (cfrheogradt_weights_M_s[j]!=iomodel->numberofvertices+1) _error_("weights should be a P1 time series");
+					
+					/*extract data times from last row of observations*/
+					IssmDouble *datatimes = xNew<IssmDouble>(cfrheogradt_weights_N_s[j]);
+					for(int k=0;k<cfrheogradt_weights_N_s[j];k++) datatimes[k] = (cfrheogradt_weights_s[j])[cfrheogradt_weights_N_s[j]*(cfrheogradt_weights_M_s[j]-1)+k];
+
+					/*First create a cfrheologybbarabsgradtransient object for that specific string:*/
+					output_definitions->AddObject(new Cfrheologybbarabsgradtransient(cfrheogradt_name_s[j],StringToEnumx(cfrheogradt_definitionstring_s[j]), cfrheogradt_weights_N_s[j], datatimes));
+
+					/*Now, for this particular cfrheologybbarabsgrad object, make sure we plug into the elements: the observation, and the weights.*/
+					for(Object* & object : elements->objects){
+
+						Element* element=xDynamicCast<Element*>(object);
+
+						element->DatasetInputAdd(StringToEnumx(cfrheogradt_definitionstring_s[j]),cfrheogradt_weights_s[j],inputs,iomodel,cfrheogradt_weights_M_s[j],cfrheogradt_weights_N_s[j],1,WeightsSurfaceObservationEnum,WeightsSurfaceObservationEnum);
+
+					}
+				}
+				
+				/*Free resources:*/
+            for(j=0;j<num_cfrheologybbarabsgradtransients;j++){
+               char* string=NULL;
+               IssmDouble* matrix = NULL;
+
+               string = cfrheogradt_definitionstring_s[j];    xDelete<char>(string);
+               string = cfrheogradt_name_s[j];    xDelete<char>(string);
+               matrix = cfrheogradt_weights_s[j]; xDelete<IssmDouble>(matrix);
+            }
+            xDelete<char*>(cfrheogradt_name_s);
+            xDelete<char*>(cfrheogradt_definitionstring_s);
+            xDelete<IssmDouble*>(cfrheogradt_weights_s);
+            xDelete<int>(cfrheogradt_weights_M_s);
+            xDelete<int>(cfrheogradt_weights_N_s);
+            /*}}}*/
+         }
+			else if (output_definition_enums[i]==CfsurfacelogvelEnum){
+				/*Deal with cfsurfacelogvel: {{{*/
+
+				/*cfsurfacelogvel variables: */
+				int          num_cfsurfacelogvels;
+				char       **cfsurfacelogvel_name             = NULL;
+				char       **cfsurfacelogvel_definitionstring = NULL;
+				IssmDouble **cfsurfacelogvel_vxobs            = NULL;
+				IssmDouble **cfsurfacelogvel_vyobs            = NULL;
+				char       **cfsurfacelogvel_vxobs_string     = NULL;
+				char       **cfsurfacelogvel_vyobs_string     = NULL;
+				int         *cfsurfacelogvel_observation_M    = NULL;
+				int         *cfsurfacelogvel_observation_N    = NULL;
+				IssmDouble **cfsurfacelogvel_weights          = NULL;
+				int         *cfsurfacelogvel_weights_M        = NULL;
+				int         *cfsurfacelogvel_weights_N        = NULL;
+				char       **cfsurfacelogvel_weightstring     = NULL;
+				IssmDouble  *cfsurfacelogvel_datatime         = NULL;
+
+            /*Fetch name, modeltring, observation, observationtring, etc ... (see src/m/classes/cfsurfacelogvel.m): */
+            iomodel->FetchMultipleData(&cfsurfacelogvel_name,&num_cfsurfacelogvels,"md.cfsurfacelogvel.name");
+            iomodel->FetchMultipleData(&cfsurfacelogvel_definitionstring,&num_cfsurfacelogvels,"md.cfsurfacelogvel.definitionstring");
+            iomodel->FetchMultipleData(&cfsurfacelogvel_vxobs,&cfsurfacelogvel_observation_M,&cfsurfacelogvel_observation_N,&num_cfsurfacelogvels,"md.cfsurfacelogvel.vxobs");
+            iomodel->FetchMultipleData(&cfsurfacelogvel_vxobs_string,&num_cfsurfacelogvels,"md.cfsurfacelogvel.vxobs_string");
+            iomodel->FetchMultipleData(&cfsurfacelogvel_vyobs,NULL,NULL,&num_cfsurfacelogvels,"md.cfsurfacelogvel.vyobs");
+            iomodel->FetchMultipleData(&cfsurfacelogvel_vyobs_string,&num_cfsurfacelogvels,"md.cfsurfacelogvel.vyobs_string");
+            iomodel->FetchMultipleData(&cfsurfacelogvel_weights,&cfsurfacelogvel_weights_M,&cfsurfacelogvel_weights_N,&num_cfsurfacelogvels,"md.cfsurfacelogvel.weights");
+            iomodel->FetchMultipleData(&cfsurfacelogvel_weightstring,&num_cfsurfacelogvels,"md.cfsurfacelogvel.weights_string");
+            iomodel->FetchMultipleData(&cfsurfacelogvel_datatime,&num_cfsurfacelogvels,"md.cfsurfacelogvel.datatime");
+
+				for(j=0;j<num_cfsurfacelogvels;j++){
+
+					int obs_vector_type=0;
+					if ((cfsurfacelogvel_observation_M[j]==iomodel->numberofvertices) || (cfsurfacelogvel_observation_M[j]==iomodel->numberofvertices+1)){
+						obs_vector_type=1;
+					}
+					else if ((cfsurfacelogvel_observation_M[j]==iomodel->numberofelements) || (cfsurfacelogvel_observation_M[j]==iomodel->numberofelements+1)){
+						obs_vector_type=2;
+					}
+					else
+					 _error_("cfsurfacelogvel observation size not supported yet");
+
+					int weight_vector_type=0;
+					if ((cfsurfacelogvel_weights_M[j]==iomodel->numberofvertices) || (cfsurfacelogvel_weights_M[j]==iomodel->numberofvertices+1)){
+						weight_vector_type=1;
+					}
+					else if ((cfsurfacelogvel_weights_M[j]==iomodel->numberofelements) || (cfsurfacelogvel_weights_M[j]==iomodel->numberofelements+1)){
+						weight_vector_type=2;
+					}
+					else
+					 _error_("cfsurfacelogvel weight size not supported yet");
+
+					/*First create a cfsurfacelogvel object for that specific string (cfsurfacelogvel_modeltring[j]):*/
+					output_definitions->AddObject(new Cfsurfacelogvel(cfsurfacelogvel_name[j],StringToEnumx(cfsurfacelogvel_definitionstring[j]),cfsurfacelogvel_datatime[j]));
+
+					/*Now, for this particular cfsurfacelogvel object, make sure we plug into the elements: the observation, and the weights.*/
+					for(Object* & object : elements->objects){
+
+						Element* element=xDynamicCast<Element*>(object);
+
+						element->DatasetInputAdd(StringToEnumx(cfsurfacelogvel_definitionstring[j]),cfsurfacelogvel_vxobs[j],inputs,iomodel,cfsurfacelogvel_observation_M[j],cfsurfacelogvel_observation_N[j],obs_vector_type,StringToEnumx(cfsurfacelogvel_vxobs_string[j]),VxObsEnum);
+							element->DatasetInputAdd(StringToEnumx(cfsurfacelogvel_definitionstring[j]),cfsurfacelogvel_vyobs[j],inputs,iomodel,cfsurfacelogvel_observation_M[j],cfsurfacelogvel_observation_N[j],obs_vector_type,StringToEnumx(cfsurfacelogvel_vyobs_string[j]),VyObsEnum);
+						element->DatasetInputAdd(StringToEnumx(cfsurfacelogvel_definitionstring[j]),cfsurfacelogvel_weights[j],inputs,iomodel,cfsurfacelogvel_weights_M[j],cfsurfacelogvel_weights_N[j],weight_vector_type,StringToEnumx(cfsurfacelogvel_weightstring[j]),WeightsSurfaceObservationEnum);
+
+					}
+
+				}
+
+				/*Free resources:*/
+				for(j=0;j<num_cfsurfacelogvels;j++){
+					char* string=NULL;
+					IssmDouble* matrix = NULL;
+
+					string = cfsurfacelogvel_definitionstring[j];		xDelete<char>(string);
+					string = cfsurfacelogvel_vxobs_string[j];	xDelete<char>(string);
+					string = cfsurfacelogvel_vyobs_string[j];	xDelete<char>(string);
+					string = cfsurfacelogvel_weightstring[j];		xDelete<char>(string);
+					string = cfsurfacelogvel_name[j];    xDelete<char>(string);
+					matrix = cfsurfacelogvel_weights[j]; xDelete<IssmDouble>(matrix);
+					matrix = cfsurfacelogvel_vxobs[j]; xDelete<IssmDouble>(matrix);
+					matrix = cfsurfacelogvel_vyobs[j]; xDelete<IssmDouble>(matrix);
+				}
+				xDelete<char*>(cfsurfacelogvel_name);
+				xDelete<char*>(cfsurfacelogvel_definitionstring);
+				xDelete<int>(cfsurfacelogvel_observation_M);
+				xDelete<IssmDouble*>(cfsurfacelogvel_vxobs);
+				xDelete<IssmDouble*>(cfsurfacelogvel_vyobs);
+				xDelete<char*>(cfsurfacelogvel_vxobs_string);
+				xDelete<char*>(cfsurfacelogvel_vyobs_string);
+				xDelete<int>(cfsurfacelogvel_observation_N);
+				xDelete<IssmDouble*>(cfsurfacelogvel_weights);
+				xDelete<int>(cfsurfacelogvel_weights_M);
+				xDelete<int>(cfsurfacelogvel_weights_N);
+				xDelete<char*>(cfsurfacelogvel_weightstring);
+				xDelete<IssmDouble>(cfsurfacelogvel_datatime);
+				/*}}}*/
+			}
+			else if (output_definition_enums[i]==CflevelsetmisfitEnum){
+				/*Deal with cflevelsetmisfit: {{{*/
+
+				/*cflevelsetmisfit variables: */
+				int          num_cflevelsetmisfits;
+				char**       cflevelsetmisfit_name_s						= NULL;    
+				char**		 cflevelsetmisfit_definitionstring_s		= NULL;    
+				char**       cflevelsetmisfit_model_string_s			= NULL;
+				IssmDouble** cflevelsetmisfit_observation_s			= NULL;
+				char**		 cflevelsetmisfit_observation_string_s	= NULL;
+				int*         cflevelsetmisfit_observation_M_s			= NULL;
+				int*         cflevelsetmisfit_observation_N_s			= NULL;
+				IssmDouble** cflevelsetmisfit_weights_s					= NULL;
+				int*         cflevelsetmisfit_weights_M_s				= NULL;
+				int*         cflevelsetmisfit_weights_N_s				= NULL;
+				char**       cflevelsetmisfit_weights_string_s		= NULL;
+				IssmDouble*	 cflevelsetmisfit_datatime_s				= NULL;
+
+				/*Fetch name, model_string, observation, observation_string, etc ... (see src/m/classes/cflevelsetmisfit.m): */
+				iomodel->FetchMultipleData(&cflevelsetmisfit_name_s,&num_cflevelsetmisfits,                                                        "md.cflevelsetmisfit.name");
+				iomodel->FetchMultipleData(&cflevelsetmisfit_definitionstring_s,&num_cflevelsetmisfits,                                            "md.cflevelsetmisfit.definitionstring");
+				iomodel->FetchMultipleData(&cflevelsetmisfit_model_string_s,&num_cflevelsetmisfits,                                                "md.cflevelsetmisfit.model_string");
+				iomodel->FetchMultipleData(&cflevelsetmisfit_observation_s,&cflevelsetmisfit_observation_M_s,&cflevelsetmisfit_observation_N_s,&num_cflevelsetmisfits, "md.cflevelsetmisfit.observation");
+				iomodel->FetchMultipleData(&cflevelsetmisfit_observation_string_s,&num_cflevelsetmisfits,                                          "md.cflevelsetmisfit.observation_string");
+				iomodel->FetchMultipleData(&cflevelsetmisfit_weights_s,&cflevelsetmisfit_weights_M_s,&cflevelsetmisfit_weights_N_s,&num_cflevelsetmisfits,             "md.cflevelsetmisfit.weights");
+				iomodel->FetchMultipleData(&cflevelsetmisfit_weights_string_s,&num_cflevelsetmisfits,                                              "md.cflevelsetmisfit.weights_string");
+				iomodel->FetchMultipleData(&cflevelsetmisfit_datatime_s,&num_cflevelsetmisfits,																	 "md.cflevelsetmisfit.datatime");
+
+				for(j=0;j<num_cflevelsetmisfits;j++){
+					int obs_vector_type=0;
+					if ((cflevelsetmisfit_observation_M_s[j]==iomodel->numberofvertices) || (cflevelsetmisfit_observation_M_s[j]==iomodel->numberofvertices+1)){
+						obs_vector_type=1;
+					}
+					else if ((cflevelsetmisfit_observation_M_s[j]==iomodel->numberofelements) || (cflevelsetmisfit_observation_M_s[j]==iomodel->numberofelements+1)){
+						obs_vector_type=2;
+					}
+					else
+					 _error_("cflevelsetmisfit observation size not supported yet");
+
+					int weight_vector_type=0;
+					if ((cflevelsetmisfit_weights_M_s[j]==iomodel->numberofvertices) || (cflevelsetmisfit_weights_M_s[j]==iomodel->numberofvertices+1)){
+						weight_vector_type=1;
+					}
+					else if ((cflevelsetmisfit_weights_M_s[j]==iomodel->numberofelements) || (cflevelsetmisfit_weights_M_s[j]==iomodel->numberofelements+1)){
+						weight_vector_type=2;
+					}
+					else
+					 _error_("cflevelsetmisfit weight size not supported yet");
+
+					/*First create a cflevelsetmisfit object for that specific string (cflevelsetmisfit_model_string_s[j]):*/
+					output_definitions->AddObject(new Cflevelsetmisfit(cflevelsetmisfit_name_s[j],StringToEnumx(cflevelsetmisfit_definitionstring_s[j]),StringToEnumx(cflevelsetmisfit_model_string_s[j]),cflevelsetmisfit_datatime_s[j]));
+
+					/*Now, for this particular cflevelsetmisfit object, make sure we plug into the elements: the observation, and the weights.*/
+					for(Object* & object : elements->objects){
+						Element* element=xDynamicCast<Element*>(object);
+						element->DatasetInputAdd(StringToEnumx(cflevelsetmisfit_definitionstring_s[j]),cflevelsetmisfit_observation_s[j],inputs,iomodel,cflevelsetmisfit_observation_M_s[j],cflevelsetmisfit_observation_N_s[j],obs_vector_type,StringToEnumx(cflevelsetmisfit_observation_string_s[j]),LevelsetObservationEnum);
+						element->DatasetInputAdd(StringToEnumx(cflevelsetmisfit_definitionstring_s[j]),cflevelsetmisfit_weights_s[j],inputs,iomodel,cflevelsetmisfit_weights_M_s[j],cflevelsetmisfit_weights_N_s[j],weight_vector_type,StringToEnumx(cflevelsetmisfit_weights_string_s[j]),WeightsLevelsetObservationEnum);
+					}
+				}
+
+				  /*Free resources:*/
+				for(j=0;j<num_cflevelsetmisfits;j++){
+					char* string=NULL;
+					IssmDouble* matrix = NULL;
+
+					string = cflevelsetmisfit_definitionstring_s[j];		xDelete<char>(string);
+					string = cflevelsetmisfit_observation_string_s[j];	xDelete<char>(string);
+					string = cflevelsetmisfit_model_string_s[j];			xDelete<char>(string);
+					string = cflevelsetmisfit_weights_string_s[j];		xDelete<char>(string);
+					string = cflevelsetmisfit_name_s[j];    xDelete<char>(string);
+					matrix = cflevelsetmisfit_observation_s[j]; xDelete<IssmDouble>(matrix);
+					matrix = cflevelsetmisfit_weights_s[j]; xDelete<IssmDouble>(matrix);
+				}
+				xDelete<char*>(cflevelsetmisfit_name_s);
+				xDelete<char*>(cflevelsetmisfit_model_string_s);
+				xDelete<char*>(cflevelsetmisfit_definitionstring_s);
+				xDelete<IssmDouble*>(cflevelsetmisfit_observation_s);
+				xDelete<char*>(cflevelsetmisfit_observation_string_s);
+				xDelete<int>(cflevelsetmisfit_observation_M_s);
+				xDelete<int>(cflevelsetmisfit_observation_N_s);
+				xDelete<IssmDouble*>(cflevelsetmisfit_weights_s);
+				xDelete<int>(cflevelsetmisfit_weights_M_s);
+				xDelete<int>(cflevelsetmisfit_weights_N_s);
+				xDelete<char*>(cflevelsetmisfit_weights_string_s);
+				xDelete<IssmDouble>(cflevelsetmisfit_datatime_s);
+				/*}}}*/
+			}
+			else if (output_definition_enums[i]==NodalvalueEnum){
+				/*Deal with nodal values: {{{*/
+
+				/*nodal value variables: */
+				int          numnodalvalues;
+				char**       nodalvalue_name_s             = NULL;    
+				char**       nodalvalue_definitionstrings             = NULL;    
+				char**       nodalvalue_modelstrings        = NULL;
+				int*         nodalvalue_node_s = NULL;
+
+				/*Fetch name, model_enum, etc ... (see src/m/classes/nodalvalue.m): */
+				iomodel->FetchMultipleData(&nodalvalue_name_s,&numnodalvalues,            "md.nodalvalue.name");
+				iomodel->FetchMultipleData(&nodalvalue_definitionstrings,&numnodalvalues, "md.nodalvalue.definitionenum");
+				iomodel->FetchMultipleData(&nodalvalue_modelstrings,&numnodalvalues,      "md.nodalvalue.model_enum");
+				iomodel->FetchMultipleData(&nodalvalue_node_s,&numnodalvalues,            "md.nodalvalue.node");
+
+				for(j=0;j<numnodalvalues;j++){
+
+					/*First create a nodalvalue object for that specific enum (nodalvalue_model_enum_s[j]):*/
+					output_definitions->AddObject(new Nodalvalue(nodalvalue_name_s[j],StringToEnumx(nodalvalue_definitionstrings[j]),StringToEnumx(nodalvalue_modelstrings[j]),nodalvalue_node_s[j]-1)); //-1 because matlab to c indexing.
+				}
+
+				/*Free resources:*/
+				for(j=0;j<numnodalvalues;j++){
+					char* string=NULL;
+					string = nodalvalue_name_s[j];    xDelete<char>(string);
+				}
+				xDelete<char*>(nodalvalue_name_s);
+				xDelete<char*>(nodalvalue_modelstrings);
+				xDelete<char*>(nodalvalue_definitionstrings);
+				xDelete<int>(nodalvalue_node_s);
+				/*}}}*/
+			}
+			else if (output_definition_enums[i]==MassconEnum){
+				/*Deal with masscons: {{{*/
+
+				/*masscon variables: */
+				int          nummasscons;
+				char**       masscon_name_s               = NULL;
+				char**       masscon_definitionstring_s   = NULL;
+				IssmDouble** masscon_levelset_s           = NULL;
+				int*         masscon_levelset_M_s         = NULL;
+				int*         masscon_levelset_N_s         = NULL;
+
+				/*Fetch name and levelset, etc ... (see src/m/classes/masscon.m): */
+				iomodel->FetchMultipleData(&masscon_name_s,&nummasscons,                                                "md.masscon.name");
+				iomodel->FetchMultipleData(&masscon_definitionstring_s,&nummasscons,                                    "md.masscon.definitionstring");
+				iomodel->FetchMultipleData(&masscon_levelset_s,&masscon_levelset_M_s,&masscon_levelset_N_s,&nummasscons,"md.masscon.levelset");
+
+				for(j=0;j<nummasscons;j++){
+
+					/*Create a masscon object: */
+					output_definitions->AddObject(new Masscon(masscon_name_s[j],StringToEnumx(masscon_definitionstring_s[j]),masscon_levelset_s[j],masscon_levelset_M_s[j]));
+
+				}
+
+				/*Free resources:*/
+				for(j=0;j<nummasscons;j++){
+					char* string=NULL;
+					IssmDouble* matrix = NULL;
+
+					string = masscon_name_s[j];    xDelete<char>(string);
+					string = masscon_definitionstring_s[j];    xDelete<char>(string);
+					matrix = masscon_levelset_s[j]; xDelete<IssmDouble>(matrix);
+				}
+				xDelete<char*>(masscon_name_s);
+				xDelete<IssmDouble*>(masscon_levelset_s);
+				xDelete<int>(masscon_levelset_M_s);
+				xDelete<int>(masscon_levelset_N_s);
+				xDelete<char*>(masscon_definitionstring_s);
+
+				/*}}}*/
+			}
+			else if (output_definition_enums[i]==MassconaxpbyEnum){
+				/*Deal with masscon combinations: {{{*/
+
+				/*masscon variables: */
+				char**       masscon_name_s             = NULL;    
+				char**		 masscon_definitionstring_s		= NULL;    
+				char**       masscon_namex_s             = NULL;    
+				char**       masscon_namey_s             = NULL;    
+				IssmDouble*  masscon_alpha_s     = NULL;
+				IssmDouble*  masscon_beta_s     = NULL;
+				int          num;
+
+				/*Fetch names and multiplicators, etc ... (see src/m/classes/masscon_axpby.m): */
+				iomodel->FetchMultipleData(&masscon_name_s,&num,          "md.massconaxpby.name");
+				iomodel->FetchMultipleData(&masscon_definitionstring_s,&num,"md.massconaxpby.definitionstring");
+				iomodel->FetchMultipleData(&masscon_namex_s,&num,         "md.massconaxpby.namex");
+				iomodel->FetchMultipleData(&masscon_namey_s,&num,         "md.massconaxpby.namey");
+				iomodel->FetchMultipleData(&masscon_alpha_s,&num,         "md.massconaxpby.alpha");
+				iomodel->FetchMultipleData(&masscon_beta_s,&num,          "md.massconaxpby.beta");
+				for(j=0;j<num;j++){
+
+					/*Create a masscon axpyb object: */
+					output_definitions->AddObject(new Massconaxpby(masscon_name_s[j],StringToEnumx(masscon_definitionstring_s[j]),masscon_namex_s[j],masscon_namey_s[j],masscon_alpha_s[j],masscon_beta_s[j]));
+
+				}
+
+				/*Free resources:*/
+				for(j=0;j<num;j++){
+					char* string=NULL;
+					string = masscon_definitionstring_s[j];    xDelete<char>(string);
+					string = masscon_name_s[j];    xDelete<char>(string);
+					string = masscon_namex_s[j];    xDelete<char>(string);
+					string = masscon_namey_s[j];    xDelete<char>(string);
+				}
+				xDelete<char*>(masscon_definitionstring_s);
+				xDelete<char*>(masscon_name_s);
+				xDelete<char*>(masscon_namex_s);
+				xDelete<char*>(masscon_namey_s);
+				xDelete<IssmDouble>(masscon_alpha_s);
+				xDelete<IssmDouble>(masscon_beta_s);
+				/*}}}*/
+			}
+			else if (output_definition_enums[i]==RegionaloutputEnum){
+				/*Deal with regional output: {{{*/
+
+				/*regional output variables: */
+				int          numout;
+				char**       reg_name_s               = NULL;
+				char**       reg_definitionstring_s   = NULL;
+				char**       reg_outputnamestring_s   = NULL;
+				IssmDouble** reg_mask_s               = NULL;
+				int*         reg_mask_M_s             = NULL;
+				int*         reg_mask_N_s             = NULL;
+
+				/*Fetch name and mask, etc ... (see src/m/classes/regionaloutput.m): */
+				iomodel->FetchMultipleData(&reg_name_s,&numout,                                                "md.regionaloutput.name");
+				iomodel->FetchMultipleData(&reg_definitionstring_s,&numout,                                    "md.regionaloutput.definitionstring");
+				iomodel->FetchMultipleData(&reg_outputnamestring_s,&numout,                                    "md.regionaloutput.outputnamestring");
+				iomodel->FetchMultipleData(&reg_mask_s,&reg_mask_M_s,&reg_mask_N_s,&numout,                    "md.regionaloutput.mask");
+				for(j=0;j<numout;j++){
+
+					/*Create a regional output object: */
+					output_definitions->AddObject(new Regionaloutput(reg_name_s[j],StringToEnumx(reg_definitionstring_s[j]),reg_outputnamestring_s[j],reg_mask_s[j],reg_mask_M_s[j]));
+
+				}
+
+				/*Free resources:*/
+				for(j=0;j<numout;j++){
+					char* string=NULL;
+					IssmDouble* matrix = NULL;
+
+					string = reg_name_s[j];    xDelete<char>(string);
+					string = reg_definitionstring_s[j];    xDelete<char>(string);
+					string = reg_outputnamestring_s[j];    xDelete<char>(string);
+					matrix = reg_mask_s[j]; xDelete<IssmDouble>(matrix);
+				}
+				xDelete<char*>(reg_name_s);
+				xDelete<IssmDouble*>(reg_mask_s);
+				xDelete<int>(reg_mask_M_s);
+				xDelete<int>(reg_mask_N_s);
+				xDelete<char*>(reg_outputnamestring_s);
+				xDelete<char*>(reg_definitionstring_s);
+			/*}}}*/
+			}
+			else if (output_definition_enums[i]==NumberedcostfunctionEnum){
+				/*Deal with numbered cost function: {{{*/
+
+				/*Intermediary*/
+				int          numout,numout2;
+				char       **ncf_name_s             = NULL;
+				char       **ncf_definitionstring_s = NULL;
+				char       **cost_functions         = NULL;
+				IssmDouble **cost_functions_weights = NULL;
+				int*         cost_functions_weights_M = NULL;
+				int*         cost_functions_weights_N = NULL;
+				int          cost_function,domaintype;
+				int          num_cost_functions;
+
+				/*Process cost functions and convert from string to enums*/
+				iomodel->FindConstant(&num_cost_functions,"md.numberedcostfunction.num_cost_functions");
+				iomodel->FindConstant(&cost_functions,&num_cost_functions,"md.numberedcostfunction.cost_functions");
+				if(num_cost_functions<1) _error_("No cost functions found");
+				int* cost_function_enums=xNew<int>(num_cost_functions);
+				for(int i=0;i<num_cost_functions;++i){
+					cost_function_enums[i]=StringToEnumx(cost_functions[i]);
+				}
+
+				iomodel->FetchMultipleData(&ncf_name_s,&numout,"md.numberedcostfunction.name");
+				iomodel->FetchMultipleData(&ncf_definitionstring_s,&numout2,"md.numberedcostfunction.definitionstring"); _assert_(numout2 == numout); 
+				iomodel->FetchMultipleData(&cost_functions_weights,&cost_functions_weights_M,&cost_functions_weights_N,&numout2,"md.numberedcostfunction.cost_functions_coefficients");  _assert_(numout2 == numout);
+				if(numout!=1) _error_("not implemented yet, check code here");
+
+				/*Fetch Observations */
+				iomodel->FindConstant(&domaintype,"md.mesh.domain_type");
+				for(int i=0;i<num_cost_functions;i++){
+					cost_function=cost_function_enums[i];
+					if(     cost_function==ThicknessAbsMisfitEnum) iomodel->FetchDataToInput(inputs,elements,"md.numberedcostfunction.thickness_obs",InversionThicknessObsEnum);
+					else if(cost_function==SurfaceAbsMisfitEnum)   iomodel->FetchDataToInput(inputs,elements,"md.numberedcostfunction.surface_obs",InversionSurfaceObsEnum);
+					else if(cost_function==SurfaceAbsVelMisfitEnum
+							|| cost_function==SurfaceRelVelMisfitEnum
+							|| cost_function==SurfaceLogVelMisfitEnum
+							|| cost_function==SurfaceLogVxVyMisfitEnum
+							|| cost_function==SurfaceAverageVelMisfitEnum){
+						iomodel->FetchDataToInput(inputs,elements,"md.numberedcostfunction.vx_obs",InversionVxObsEnum);
+						if(domaintype!=Domain2DverticalEnum) iomodel->FetchDataToInput(inputs,elements,"md.numberedcostfunction.vy_obs",InversionVyObsEnum);
+					}
+				}
+
+				for(j=0;j<numout;j++){
+
+					/*Now, for this particular misfit object, make sure we plug into the elements: the observation, and the weights.*/
+					for(Object* & object : elements->objects){
+						Element* element=xDynamicCast<Element*>(object);
+						element->DatasetInputCreate(cost_functions_weights[j],cost_functions_weights_M[j],cost_functions_weights_N[j],cost_function_enums,num_cost_functions,inputs,iomodel,InversionCostFunctionsCoefficientsEnum);
+					}
+					output_definitions->AddObject(new Numberedcostfunction(ncf_name_s[j],StringToEnumx(ncf_definitionstring_s[j]),num_cost_functions,cost_function_enums));
+				}
+
+				/*Free data: */
+				iomodel->DeleteData(2,"md.numberedcostfunction.name","md.numberedcostfunction.definitionstring");
+				xDelete<int>(cost_function_enums);
+				for(int i=0;i<num_cost_functions;i++) xDelete<char>(cost_functions[i]);
+				xDelete<char*>(cost_functions);
+
+				/*Free resources:*/
+				for(j=0;j<numout;j++){
+					xDelete<char>(ncf_name_s[j]);
+					xDelete<char>(ncf_definitionstring_s[j]);
+					xDelete<IssmDouble>(cost_functions_weights[j]);
+				}
+				xDelete<char*>(ncf_name_s);
+				xDelete<char*>(ncf_definitionstring_s);
+				xDelete<int>(cost_functions_weights_M);
+				xDelete<int>(cost_functions_weights_N);
+				xDelete<IssmDouble*>(cost_functions_weights);
+
+			/*}}}*/
+			}
+			else if (output_definition_enums[i]==RadarEnum){		
+				/*Deal with radar: {{{*/
+				int    numout;
+				char **radar_name_s             = NULL;
+				char **radar_definitionstring_s = NULL;
+				int  **radar_ice_period_s       = NULL;
+
+				/*Fetch name and definition, etc ... (see src/m/classes/radar.m): */
+				iomodel->FetchMultipleData(&radar_definitionstring_s,&numout,"md.radar.definitionstring");
+				iomodel->FetchMultipleData(&radar_name_s,&numout,"md.radar.name");
+				if(numout>1) _error_("not suppored yet"); 
+				/*Fetch necessary inputs for calculation*/
+				//iomodel->FetchDataToInput(elements,"md.ice_period",RadarIcePeriodEnum);
+
+				/*Add to output definitions*/
+				output_definitions->AddObject(new Radar(radar_name_s[0],StringToEnumx(radar_definitionstring_s[0])));
+				/*}}}*/ 
+			}
+		else _error_("output definition enum " << EnumToStringx(output_definition_enums[i]) << " not supported yet!");
+		}		
+	}
+	parameters->AddObject(new DataSetParam(OutputdefinitionEnum,output_definitions));
+
+	/*Free resources:*/
+	delete output_definitions;
+	xDelete<int>(output_definition_enums);
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 27955)
@@ -0,0 +1,694 @@
+/*!\file: CreateParameters.cpp
+ * \brief general driver for creating parameters dataset
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "../MeshPartitionx/MeshPartitionx.h"
+#include "../ParseToolkitsOptionsx/ParseToolkitsOptionsx.h"
+#include "./ModelProcessorx.h"
+
+void CreateParameters(Parameters* parameters,IoModel* iomodel,char* rootpath,FILE* toolkitsoptionsfid,const int solution_type){
+
+	int         i,j,m,k;
+	int         numoutputs,basalforcing_model,timestepping_type;
+	char**      requestedoutputs = NULL;
+	char**      outputonnodes = NULL;
+	char*       fieldname = NULL;
+	IssmDouble  time;
+
+	/*parameters for mass flux:*/
+	int          mass_flux_num_profiles     = 0;
+	bool         qmu_mass_flux_present      = false;
+	bool         autodiff_mass_flux_present = false;
+	bool         mass_flux_present          = false;
+	bool         interp,cycle;
+	IssmDouble **array                      = NULL;
+	int         *mdims_array                = NULL;
+	int         *ndims_array                = NULL;
+	IssmDouble  *temp_matrix                = NULL;
+	int          temp_m,temp_n;
+	IssmDouble  *matrix                     = NULL;
+	int          count;
+
+	IssmDouble *temp = NULL;
+	IssmDouble *transparam = NULL;
+	IssmDouble  yts;
+	int         N,M;
+
+	/*Copy some constants from iomodel */
+	parameters->AddObject(iomodel->CopyConstantObject("md.mesh.domain_type",DomainTypeEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.mesh.domain_dimension",DomainDimensionEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.settings.output_frequency",SettingsOutputFrequencyEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.settings.sb_coupling_frequency",SettingsSbCouplingFrequencyEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.settings.checkpoint_frequency",SettingsCheckpointFrequencyEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.constants.yts",ConstantsYtsEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.debug.profiling",DebugProfilingEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.mesh.average_vertex_connectivity",MeshAverageVertexConnectivityEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.settings.waitonlock",SettingsWaitonlockEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.mesh.numberofvertices",MeshNumberofverticesEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.mesh.numberofelements",MeshNumberofelementsEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.settings.io_gather",SettingsIoGatherEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.settings.solver_residue_threshold",SettingsSolverResidueThresholdEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.isautodiff",AutodiffIsautodiffEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.qmu.isdakota",QmuIsdakotaEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.inversion.iscontrol",InversionIscontrolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.inversion.type",InversionTypeEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.calving.law",CalvingLawEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.parameterization",FrontalForcingsParamEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.isgrd",SolidearthSettingsGRDEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.grdmodel",GrdModelEnum));
+	parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.runfrequency",SolidearthSettingsRunFrequencyEnum));
+	parameters->AddObject(new IntParam(SealevelchangeRunCountEnum,1));
+
+	  {/*This is specific to ice...*/
+		parameters->AddObject(iomodel->CopyConstantObject("md.mesh.elementtype",MeshElementtypeEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.steadystate.reltol",SteadystateReltolEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.steadystate.maxiter",SteadystateMaxiterEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.groundingline.migration",GroundinglineMigrationEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.groundingline.friction_interpolation",GroundinglineFrictionInterpolationEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.groundingline.melt_interpolation",GroundinglineMeltInterpolationEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isstressbalance",TransientIsstressbalanceEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.ismasstransport",TransientIsmasstransportEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isoceantransport",TransientIsoceantransportEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isage",TransientIsageEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.issmb",TransientIssmbEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isthermal",TransientIsthermalEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isgroundingline",TransientIsgroundinglineEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isesa",TransientIsesaEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isdamageevolution",TransientIsdamageevolutionEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.ishydrology",TransientIshydrologyEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.ismovingfront",TransientIsmovingfrontEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isslc",TransientIsslcEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isoceancoupling",TransientIsoceancouplingEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.amr_frequency",TransientAmrFrequencyEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.isdebris",TransientIsdebrisEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.transient.issampling",TransientIssamplingEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.stochasticforcing.isstochasticforcing",StochasticForcingIsStochasticForcingEnum));
+
+		/*For stress balance only*/
+		parameters->AddObject(iomodel->CopyConstantObject("md.flowequation.isFS",FlowequationIsFSEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.rift_penalty_threshold",StressbalanceRiftPenaltyThresholdEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.maxiter",StressbalanceMaxiterEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.restol",StressbalanceRestolEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.reltol",StressbalanceReltolEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.stressbalance.abstol",StressbalanceAbstolEnum));
+		if(iomodel->domaintype==Domain3DEnum)
+		 parameters->AddObject(iomodel->CopyConstantObject("md.mesh.numberoflayers",MeshNumberoflayersEnum));
+	  }
+
+	/*amr properties*/
+	int amrtype,amr_frequency;
+	iomodel->FindConstant(&amr_frequency,"md.transient.amr_frequency");
+	if(solution_type==TransientSolutionEnum && amr_frequency){
+		/*Load common amr parameters*/
+		parameters->AddObject(iomodel->CopyConstantObject("md.amr.type",AmrTypeEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.amr.groundingline_distance",AmrGroundingLineDistanceEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.amr.icefront_distance",AmrIceFrontDistanceEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.amr.thicknesserror_threshold",AmrThicknessErrorThresholdEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.amr.thicknesserror_groupthreshold",AmrThicknessErrorGroupThresholdEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.amr.thicknesserror_maximum",AmrThicknessErrorMaximumEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.amr.deviatoricerror_threshold",AmrDeviatoricErrorThresholdEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.amr.deviatoricerror_groupthreshold",AmrDeviatoricErrorGroupThresholdEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.amr.deviatoricerror_maximum",AmrDeviatoricErrorMaximumEnum));
+		parameters->AddObject(iomodel->CopyConstantObject("md.amr.restart",AmrRestartEnum));
+		/*Load specific amr parameters*/
+		iomodel->FindConstant(&amrtype,"md.amr.type");
+		switch(amrtype){
+			#ifdef _HAVE_NEOPZ_
+			case AmrNeopzEnum:
+				parameters->AddObject(iomodel->CopyConstantObject("md.amr.level_max",AmrLevelMaxEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.amr.gradation",AmrGradationEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.amr.lag",AmrLagEnum));
+				break;
+			#endif
+
+			#ifdef _HAVE_BAMG_
+			case AmrBamgEnum:
+				parameters->AddObject(iomodel->CopyConstantObject("md.amr.hmin",AmrHminEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.amr.hmax",AmrHmaxEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.amr.err",AmrErrEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.amr.keepmetric",AmrKeepMetricEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.amr.gradation",AmrGradationEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.amr.groundingline_resolution",AmrGroundingLineResolutionEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.amr.icefront_resolution",AmrIceFrontResolutionEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.amr.thicknesserror_resolution",AmrThicknessErrorResolutionEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.amr.deviatoricerror_resolution",AmrDeviatoricErrorResolutionEnum));
+				/*Convert fieldname to enum and put it in params*/
+				iomodel->FindConstant(&fieldname,"md.amr.fieldname");
+				parameters->AddObject(new IntParam(AmrFieldEnum,StringToEnumx(fieldname)));
+				xDelete<char>(fieldname);
+				break;
+			#endif
+
+			default:
+				_error_("Adaptive mesh refinement "<<EnumToStringx(amrtype)<<" not implemented yet");
+		}
+	}
+
+	/*Basal forcing parameters*/
+	parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.model",BasalforcingsEnum));
+	iomodel->FindConstant(&basalforcing_model,"md.basalforcings.model");
+	switch(basalforcing_model){
+		case FloatingMeltRateEnum:
+			/*Nothing to add to parameters*/
+			break;
+		case LinearFloatingMeltRateEnum:
+			iomodel->FindConstant(&interp,"md.timestepping.interp_forcing");
+			iomodel->FindConstant(&cycle,"md.timestepping.cycle_forcing");
+			iomodel->FetchData(&transparam,&N,&M,"md.basalforcings.deepwater_melting_rate");
+			if(N==1){
+				_assert_(M==1);
+				parameters->AddObject(new DoubleParam(BasalforcingsDeepwaterMeltingRateEnum,transparam[0]));
+			}
+			else{
+				_assert_(N==2);
+				parameters->AddObject(new TransientParam(BasalforcingsDeepwaterMeltingRateEnum,&transparam[0],&transparam[M],interp,cycle,M));
+			}
+			xDelete<IssmDouble>(transparam);
+			iomodel->FetchData(&transparam,&N,&M,"md.basalforcings.upperwater_melting_rate");
+			if(N==1){
+				_assert_(M==1);
+				parameters->AddObject(new DoubleParam(BasalforcingsUpperwaterMeltingRateEnum,transparam[0]));
+			}
+			else{
+				_assert_(N==2);
+				parameters->AddObject(new TransientParam(BasalforcingsUpperwaterMeltingRateEnum,&transparam[0],&transparam[M],interp,cycle,M));
+			}
+			xDelete<IssmDouble>(transparam);
+			iomodel->FetchData(&transparam,&N,&M,"md.basalforcings.deepwater_elevation");
+			if(N==1){
+				_assert_(M==1);
+				parameters->AddObject(new DoubleParam(BasalforcingsDeepwaterElevationEnum,transparam[0]));
+			}
+			else{
+				_assert_(N==2);
+				parameters->AddObject(new TransientParam(BasalforcingsDeepwaterElevationEnum,&transparam[0],&transparam[M],interp,cycle,M));
+			}
+			xDelete<IssmDouble>(transparam);
+			iomodel->FetchData(&transparam,&N,&M,"md.basalforcings.upperwater_elevation");
+			if(N==1){
+				_assert_(M==1);
+				parameters->AddObject(new DoubleParam(BasalforcingsUpperwaterElevationEnum,transparam[0]));
+			}
+			else{
+				_assert_(N==2);
+				parameters->AddObject(new TransientParam(BasalforcingsUpperwaterElevationEnum,&transparam[0],&transparam[M],interp,cycle,M));
+			}
+			xDelete<IssmDouble>(transparam);
+			break;
+		case SpatialLinearFloatingMeltRateEnum:
+			/*Nothing to add to parameters:*/
+			break;
+		case MismipFloatingMeltRateEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.threshold_thickness",BasalforcingsThresholdThicknessEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.upperdepth_melt",BasalforcingsUpperdepthMeltEnum));
+			break;
+		case MantlePlumeGeothermalFluxEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.mantleconductivity",BasalforcingsMantleconductivityEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.nusselt",BasalforcingsNusseltEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.dtbg",BasalforcingsDtbgEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.plumeradius",BasalforcingsPlumeradiusEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.topplumedepth",BasalforcingsTopplumedepthEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.bottomplumedepth",BasalforcingsBottomplumedepthEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.plumex",BasalforcingsPlumexEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.plumey",BasalforcingsPlumeyEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.crustthickness",BasalforcingsCrustthicknessEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.uppercrustthickness",BasalforcingsUppercrustthicknessEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.uppercrustheat",BasalforcingsUppercrustheatEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.lowercrustheat",BasalforcingsLowercrustheatEnum));
+			break;
+		case BasalforcingsPicoEnum:
+			iomodel->FindConstant(&interp,"md.timestepping.interp_forcing");
+			iomodel->FindConstant(&cycle,"md.timestepping.cycle_forcing");
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.num_basins",BasalforcingsPicoNumBasinsEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.maxboxcount",BasalforcingsPicoMaxboxcountEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.gamma_T",BasalforcingsPicoGammaTEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.isplume",BasalforcingsPicoIsplumeEnum));
+			iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.farocean_temperature");
+			_assert_(M>=1 && N>=1);
+			parameters->AddObject(new TransientArrayParam(BasalforcingsPicoFarOceantemperatureEnum,transparam,&transparam[N*(M-1)],interp,cycle,N,M));
+			xDelete<IssmDouble>(transparam);
+			iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.farocean_salinity");
+			_assert_(M>=1 && N>=1);
+			parameters->AddObject(new TransientArrayParam(BasalforcingsPicoFarOceansalinityEnum,transparam,&transparam[N*(M-1)],interp,cycle,N,M));
+			xDelete<IssmDouble>(transparam);
+			break;
+		case BasalforcingsIsmip6Enum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.num_basins",BasalforcingsIsmip6NumBasinsEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.gamma_0",BasalforcingsIsmip6Gamma0Enum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.islocal",BasalforcingsIsmip6IsLocalEnum));
+			iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.delta_t");
+			parameters->AddObject(new DoubleVecParam(BasalforcingsIsmip6DeltaTEnum,transparam,N));
+			xDelete<IssmDouble>(transparam);
+			iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.tf_depths");
+			parameters->AddObject(new DoubleVecParam(BasalforcingsIsmip6TfDepthsEnum,transparam,N));
+			xDelete<IssmDouble>(transparam);
+			break;
+		case BeckmannGoosseFloatingMeltRateEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.isthermalforcing",BasalforcingsIsThermalForcingEnum));
+			break;
+		case LinearFloatingMeltRatearmaEnum:
+			/*Add parameters that are not in standard nbvertices format*/
+         parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.num_basins",BasalforcingsLinearNumBasinsEnum));
+         parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.num_breaks",BasalforcingsLinearNumBreaksEnum));
+         parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.num_params",BasalforcingsLinearNumParamsEnum));
+         parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.ar_order",BasalforcingsARMAarOrderEnum));
+         parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.ma_order",BasalforcingsARMAmaOrderEnum));
+         parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.arma_timestep",BasalforcingsARMATimestepEnum));
+         iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.datebreaks");
+         parameters->AddObject(new DoubleMatParam(BasalforcingsARMAdatebreaksEnum,transparam,M,N));
+         xDelete<IssmDouble>(transparam);
+         iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.polynomialparams");
+         parameters->AddObject(new DoubleMatParam(BasalforcingsARMApolyparamsEnum,transparam,M,N));
+         xDelete<IssmDouble>(transparam);
+         iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.arlag_coefs");
+         parameters->AddObject(new DoubleMatParam(BasalforcingsARMAarlagcoefsEnum,transparam,M,N));
+         xDelete<IssmDouble>(transparam);
+         iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.malag_coefs");
+         parameters->AddObject(new DoubleMatParam(BasalforcingsARMAmalagcoefsEnum,transparam,M,N));
+         xDelete<IssmDouble>(transparam);
+			iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.upperwater_melting_rate");
+         parameters->AddObject(new DoubleVecParam(BasalforcingsUpperwaterMeltingRateEnum,transparam,N));
+         xDelete<IssmDouble>(transparam);
+         iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.upperwater_elevation");
+         parameters->AddObject(new DoubleVecParam(BasalforcingsUpperwaterElevationEnum,transparam,N));
+         xDelete<IssmDouble>(transparam);
+			iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.deepwater_elevation");
+         parameters->AddObject(new DoubleVecParam(BasalforcingsDeepwaterElevationEnum,transparam,N));
+         xDelete<IssmDouble>(transparam);
+			break;
+		default:
+			_error_("Basal forcing model "<<EnumToStringx(basalforcing_model)<<" not supported yet");
+	}
+
+	/*some parameters that did not come with the iomodel: */
+	parameters->AddObject(new IntParam(SolutionTypeEnum,solution_type));
+
+	/*Time stepping*/
+	parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.type",TimesteppingTypeEnum));
+	iomodel->FindConstant(&timestepping_type,"md.timestepping.type");
+	switch(timestepping_type){
+		case FixedTimesteppingEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.start_time",TimesteppingStartTimeEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.final_time",TimesteppingFinalTimeEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.time_step",TimesteppingTimeStepEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.interp_forcing",TimesteppingInterpForcingEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.average_forcing",TimesteppingAverageForcingEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.cycle_forcing",TimesteppingCycleForcingEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.coupling_time",TimesteppingCouplingTimeEnum));
+			break;
+		case AdaptiveTimesteppingEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.start_time",TimesteppingStartTimeEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.final_time",TimesteppingFinalTimeEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.time_step_min",TimesteppingTimeStepMinEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.time_step_max",TimesteppingTimeStepMaxEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.cfl_coefficient",TimesteppingCflCoefficientEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.interp_forcing",TimesteppingInterpForcingEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.average_forcing",TimesteppingAverageForcingEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.cycle_forcing",TimesteppingCycleForcingEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.coupling_time",TimesteppingCouplingTimeEnum));
+			break;
+		default:
+			_error_("Time stepping \""<<EnumToStringx(timestepping_type)<<"\" not supported yet");
+	}
+	iomodel->FindConstant(&time,"md.timestepping.start_time");
+	parameters->AddObject(new DoubleParam(TimeEnum,time));
+	parameters->AddObject(new IntParam(StepEnum,0));
+
+	/*By default, save all results*/
+	parameters->AddObject(new BoolParam(SaveResultsEnum,true));
+
+	/*Should we output results on nodes?*/
+	iomodel->FindConstant(&outputonnodes,&numoutputs,"md.settings.results_on_nodes");
+	parameters->AddObject(new IntParam(SettingsNumResultsOnNodesEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(SettingsResultsOnNodesEnum,outputonnodes,numoutputs));
+	iomodel->DeleteData(&outputonnodes,numoutputs,"md.settings.results_on_nodes");
+
+	/*Requested outputs */
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.transient.requested_outputs");
+	parameters->AddObject(new IntParam(TransientNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(TransientRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.transient.requested_outputs");
+
+	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.steadystate.requested_outputs");
+	parameters->AddObject(new IntParam(SteadystateNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(SteadystateRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.steadystate.requested_outputs");
+
+	int materialstype;
+	iomodel->FindConstant(&materialstype,"md.materials.type");
+
+	switch(materialstype){
+		case MaticeEnum:
+		case MatdamageiceEnum:
+		case MatenhancediceEnum:
+		case MatestarEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.materials.rho_ice",MaterialsRhoIceEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.materials.rho_water",MaterialsRhoSeawaterEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.materials.rho_freshwater",MaterialsRhoFreshwaterEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.materials.mu_water",MaterialsMuWaterEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.materials.heatcapacity",MaterialsHeatcapacityEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.materials.thermalconductivity",MaterialsThermalconductivityEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.materials.temperateiceconductivity",MaterialsTemperateiceconductivityEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.materials.effectiveconductivity_averaging",MaterialsEffectiveconductivityAveragingEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.materials.latentheat",MaterialsLatentheatEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.materials.beta",MaterialsBetaEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.materials.meltingpoint",MaterialsMeltingpointEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.constants.referencetemperature",ConstantsReferencetemperatureEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.materials.mixed_layer_capacity",MaterialsMixedLayerCapacityEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.materials.thermal_exchange_velocity",MaterialsThermalExchangeVelocityEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.constants.g",ConstantsGEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.constants.gravitational_constant",ConstantsNewtonGravityEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.materials.rheology_law",MaterialsRheologyLawEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.materials.earth_density",MaterialsEarthDensityEnum));
+
+			break;
+		case MaterialsEnum:{
+			int nnat,dummy;
+			int* nature=NULL;
+			iomodel->FetchData(&nature,&nnat,&dummy,"md.materials.nature");
+			for(int i=0;i<nnat;i++){
+				switch(IoCodeToEnumNature(nature[i])){
+					case MatlithoEnum:
+						break;
+					case MaticeEnum:
+					case MatdamageiceEnum:
+					case MatenhancediceEnum:
+					case MatestarEnum:
+						parameters->AddObject(iomodel->CopyConstantObject("md.materials.rho_ice",MaterialsRhoIceEnum));
+						parameters->AddObject(iomodel->CopyConstantObject("md.materials.rho_water",MaterialsRhoSeawaterEnum));
+						parameters->AddObject(iomodel->CopyConstantObject("md.materials.rho_freshwater",MaterialsRhoFreshwaterEnum));
+						parameters->AddObject(iomodel->CopyConstantObject("md.materials.mu_water",MaterialsMuWaterEnum));
+						parameters->AddObject(iomodel->CopyConstantObject("md.materials.heatcapacity",MaterialsHeatcapacityEnum));
+						parameters->AddObject(iomodel->CopyConstantObject("md.materials.thermalconductivity",MaterialsThermalconductivityEnum));
+						parameters->AddObject(iomodel->CopyConstantObject("md.materials.temperateiceconductivity",MaterialsTemperateiceconductivityEnum));
+						parameters->AddObject(iomodel->CopyConstantObject("md.materials.effectiveconductivity_averaging",MaterialsEffectiveconductivityAveragingEnum));
+						parameters->AddObject(iomodel->CopyConstantObject("md.materials.latentheat",MaterialsLatentheatEnum));
+						parameters->AddObject(iomodel->CopyConstantObject("md.materials.beta",MaterialsBetaEnum));
+						parameters->AddObject(iomodel->CopyConstantObject("md.materials.meltingpoint",MaterialsMeltingpointEnum));
+						parameters->AddObject(iomodel->CopyConstantObject("md.constants.referencetemperature",ConstantsReferencetemperatureEnum));
+						parameters->AddObject(iomodel->CopyConstantObject("md.materials.mixed_layer_capacity",MaterialsMixedLayerCapacityEnum));
+						parameters->AddObject(iomodel->CopyConstantObject("md.materials.thermal_exchange_velocity",MaterialsThermalExchangeVelocityEnum));
+						parameters->AddObject(iomodel->CopyConstantObject("md.constants.g",ConstantsGEnum));
+						parameters->AddObject(iomodel->CopyConstantObject("md.materials.rheology_law",MaterialsRheologyLawEnum));
+						/*slc:*/
+						break;
+					case MathydroEnum:
+						parameters->AddObject(iomodel->CopyConstantObject("md.materials.rho_ice",MaterialsRhoIceEnum));
+						parameters->AddObject(iomodel->CopyConstantObject("md.materials.rho_water",MaterialsRhoSeawaterEnum));
+						parameters->AddObject(iomodel->CopyConstantObject("md.materials.rho_freshwater",MaterialsRhoFreshwaterEnum));
+						break;
+				}
+			}
+			parameters->AddObject(iomodel->CopyConstantObject("md.materials.earth_density",MaterialsEarthDensityEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.constants.gravitational_constant",ConstantsNewtonGravityEnum));
+			/*Free rssources:*/
+			xDelete<int>(nature);
+			break;
+
+	}
+		default:
+			_error_("Material "<< EnumToStringx(materialstype) <<" not supported yet");
+	}
+
+	int smb_model;
+	iomodel->FindConstant(&smb_model,"md.smb.model");
+	switch(smb_model){
+		case SMBforcingEnum:
+		case SMBgradientsEnum:
+		case SMBgradientselaEnum:
+		case SMBhenningEnum:
+		case SMBcomponentsEnum:
+		case SMBmeltcomponentsEnum:
+		case SMBgradientscomponentsEnum:
+			/*Nothing to add*/
+			break;
+		//case SMBarmaEnum:
+		case SMBarmaEnum:
+         /*Add parameters that are not in standard nbvertices format*/
+         parameters->AddObject(iomodel->CopyConstantObject("md.smb.num_basins",SmbNumBasinsEnum));
+         parameters->AddObject(iomodel->CopyConstantObject("md.smb.num_params",SmbNumParamsEnum));
+         parameters->AddObject(iomodel->CopyConstantObject("md.smb.num_breaks",SmbNumBreaksEnum));
+         parameters->AddObject(iomodel->CopyConstantObject("md.smb.ar_order",SmbARMAarOrderEnum));
+         parameters->AddObject(iomodel->CopyConstantObject("md.smb.ma_order",SmbARMAmaOrderEnum));
+         parameters->AddObject(iomodel->CopyConstantObject("md.smb.arma_timestep",SmbARMATimestepEnum));
+         parameters->AddObject(iomodel->CopyConstantObject("md.smb.num_bins",SmbNumElevationBinsEnum));
+         iomodel->FetchData(&transparam,&M,&N,"md.smb.datebreaks");
+         parameters->AddObject(new DoubleMatParam(SmbARMAdatebreaksEnum,transparam,M,N));
+         xDelete<IssmDouble>(transparam);
+         iomodel->FetchData(&transparam,&M,&N,"md.smb.polynomialparams");
+         parameters->AddObject(new DoubleMatParam(SmbARMApolyparamsEnum,transparam,M,N));
+         xDelete<IssmDouble>(transparam);
+			iomodel->FetchData(&transparam,&M,&N,"md.smb.arlag_coefs");
+         parameters->AddObject(new DoubleMatParam(SmbARMAarlagcoefsEnum,transparam,M,N));
+         xDelete<IssmDouble>(transparam);
+         iomodel->FetchData(&transparam,&M,&N,"md.smb.malag_coefs");
+         parameters->AddObject(new DoubleMatParam(SmbARMAmalagcoefsEnum,transparam,M,N));
+         xDelete<IssmDouble>(transparam);
+         iomodel->FetchData(&transparam,&M,&N,"md.smb.lapserates");
+         parameters->AddObject(new DoubleMatParam(SmbLapseRatesEnum,transparam,M,N));
+         xDelete<IssmDouble>(transparam);
+         iomodel->FetchData(&transparam,&M,&N,"md.smb.elevationbins");
+         parameters->AddObject(new DoubleMatParam(SmbElevationBinsEnum,transparam,M,N));
+         xDelete<IssmDouble>(transparam);
+			iomodel->FetchData(&transparam,&M,&N,"md.smb.refelevation");
+         parameters->AddObject(new DoubleVecParam(SmbRefElevationEnum,transparam,N));
+         xDelete<IssmDouble>(transparam);
+			break;
+		case SMBgembEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.aIce",SmbAIceEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.aSnow",SmbASnowEnum));
+			break;
+		case SMBpddEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.desfac",SmbDesfacEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlaps",SmbRlapsEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlapslgm",SmbRlapslgmEnum));
+			break;
+		case SMBpddSicopolisEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.desfac",SmbDesfacEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlaps",SmbRlapsEnum));
+			break;
+		case SMBd18opddEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.desfac",SmbDesfacEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlaps",SmbRlapsEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlapslgm",SmbRlapslgmEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.dpermil",SmbDpermilEnum));
+			break;
+		case SMBsemicEnum:
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.desfac",SmbDesfacEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlaps",SmbRlapsEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.rdl",SmbRdlEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.smb.ismethod",SmbSemicMethodEnum));
+			break;
+		case SMBdebrisEvattEnum:
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.qlaps",SmbDesfacEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlaps",SmbRlapsEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.dsgrad",SmbSWgradEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.dlgrad",SmbLWgradEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.windspeedgrad",SmbWindspeedgradEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.humiditygrad",SmbHumiditygradEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.icealbedo",SmbIcealbedoEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.snowalbedo",SmbSnowalbedoEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.debrisalbedo",SmbDebrisalbedoEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.isAnderson",SmbDebrisIsAndersonEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.iscryokarst",SmbDebrisIsCryokarstEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.AndersonD0",SmbDebrisAndersonD0Enum));
+                        break;
+		default:
+			_error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
+	}
+
+	int hydrology_model;
+	iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
+	parameters->AddObject(new BoolParam(HydrologyIsWaterPressureArmaEnum,false));
+	if(hydrology_model==HydrologydcEnum){
+		IssmDouble sedcomp, sedporo, watcomp, rhofresh, g;
+		iomodel->FindConstant(&sedcomp,"md.hydrology.sediment_compressibility");
+		iomodel->FindConstant(&sedporo,"md.hydrology.sediment_porosity");
+		iomodel->FindConstant(&watcomp,"md.hydrology.water_compressibility");
+		iomodel->FindConstant(&rhofresh,"md.materials.rho_freshwater");
+		iomodel->FindConstant(&g,"md.constants.g");
+
+		parameters->AddObject(new DoubleParam(HydrologydcSedimentLayerCompressibilityEnum,(watcomp + sedcomp/sedporo)));
+		parameters->AddObject(new DoubleParam(HydrologydcSedimentPoreWaterMassEnum,(rhofresh*g*sedporo)));
+
+		bool isefficientlayer;
+		iomodel->FindConstant(&isefficientlayer,"md.hydrology.isefficientlayer");
+		if(isefficientlayer){
+			IssmDouble eplcomp, eplporo;
+			iomodel->FindConstant(&eplcomp,"md.hydrology.epl_compressibility");
+			iomodel->FindConstant(&eplporo,"md.hydrology.epl_porosity");
+			parameters->AddObject(new DoubleParam(HydrologydcEplLayerCompressibilityEnum,(watcomp + eplcomp/eplporo)));
+			parameters->AddObject(new DoubleParam(HydrologydcEplPoreWaterMassEnum,(rhofresh*g*eplporo)));
+
+		}
+	}
+	else if(hydrology_model==HydrologyshreveEnum){
+		/*Nothing to add*/
+	}
+	else if(hydrology_model==HydrologyshaktiEnum){
+		/*Nothing to add*/
+	}
+	else if(hydrology_model==HydrologypismEnum){
+		/*Nothing to add*/
+	}
+	else if(hydrology_model==HydrologyGlaDSEnum){
+		/*Nothing to add*/
+	}
+	else if(hydrology_model==HydrologyTwsEnum){
+		/*Nothing to add*/
+	}
+	else if(hydrology_model==HydrologyarmapwEnum){
+		parameters->SetParam(true,HydrologyIsWaterPressureArmaEnum);
+      parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.num_basins",HydrologyNumBasinsEnum));
+      parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.num_breaks",HydrologyarmaNumBreaksEnum));
+      parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.num_params",HydrologyarmaNumParamsEnum));
+      parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.ar_order",HydrologyarmaarOrderEnum));
+      parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.ma_order",HydrologyarmamaOrderEnum));
+      parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.arma_timestep",HydrologyarmaTimestepEnum));
+      iomodel->FetchData(&transparam,&M,&N,"md.hydrology.datebreaks");
+      parameters->AddObject(new DoubleMatParam(HydrologyarmadatebreaksEnum,transparam,M,N));
+      xDelete<IssmDouble>(transparam);
+      iomodel->FetchData(&transparam,&M,&N,"md.hydrology.polynomialparams");
+      parameters->AddObject(new DoubleMatParam(HydrologyarmapolyparamsEnum,transparam,M,N));
+      xDelete<IssmDouble>(transparam);
+      iomodel->FetchData(&transparam,&M,&N,"md.hydrology.arlag_coefs");
+      parameters->AddObject(new DoubleMatParam(HydrologyarmaarlagcoefsEnum,transparam,M,N));
+      xDelete<IssmDouble>(transparam);
+      iomodel->FetchData(&transparam,&M,&N,"md.hydrology.malag_coefs");
+      parameters->AddObject(new DoubleMatParam(HydrologyarmamalagcoefsEnum,transparam,M,N));
+      xDelete<IssmDouble>(transparam);
+      iomodel->FetchData(&transparam,&M,&N,"md.hydrology.monthlyfactors");
+      parameters->AddObject(new DoubleMatParam(HydrologyarmaMonthlyFactorsEnum,transparam,M,N));
+      xDelete<IssmDouble>(transparam);
+   }
+	else{
+		_error_("Hydrology model "<<EnumToStringx(hydrology_model)<<" not supported yet");
+	}
+
+	if(materialstype==MatdamageiceEnum){
+		iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.damage.requested_outputs");
+		parameters->AddObject(new IntParam(DamageEvolutionNumRequestedOutputsEnum,numoutputs));
+		if(numoutputs)parameters->AddObject(new StringArrayParam(DamageEvolutionRequestedOutputsEnum,requestedoutputs,numoutputs));
+		iomodel->DeleteData(&requestedoutputs,numoutputs,"md.damage.requested_outputs");
+	}
+
+	bool isstochasticforcing;
+   parameters->FindParam(&isstochasticforcing,StochasticForcingIsStochasticForcingEnum);
+	/*Stochastic Effective Pressure false by default*/
+	parameters->AddObject(new BoolParam(StochasticForcingIsWaterPressureEnum,false));
+   if(isstochasticforcing){
+      int num_fields,num_tcov,stochastic_dim;
+      char** fields;
+      parameters->AddObject(iomodel->CopyConstantObject("md.stochasticforcing.num_fields",StochasticForcingNumFieldsEnum));
+      parameters->AddObject(iomodel->CopyConstantObject("md.stochasticforcing.defaultdimension",StochasticForcingDefaultDimensionEnum));
+      parameters->AddObject(iomodel->CopyConstantObject("md.stochasticforcing.stochastictimestep",StochasticForcingTimestepEnum));
+      parameters->AddObject(iomodel->CopyConstantObject("md.stochasticforcing.num_timescovariance",StochasticForcingNumTimesCovarianceEnum));
+      iomodel->FindConstant(&fields,&num_fields,"md.stochasticforcing.fields");
+      if(num_fields<1) _error_("no stochasticforcing fields found");
+      int* stochasticforcing_enums = xNew<int>(num_fields);
+      for(int i=0;i<num_fields;i++){
+         stochasticforcing_enums[i] = StringToEnumx(fields[i]);
+         xDelete<char>(fields[i]);
+      }
+      xDelete<char*>(fields);
+      parameters->AddObject(new IntVecParam(StochasticForcingFieldsEnum,stochasticforcing_enums,num_fields));
+      xDelete<int>(stochasticforcing_enums);
+      parameters->AddObject(iomodel->CopyConstantObject("md.stochasticforcing.randomflag",StochasticForcingRandomflagEnum));
+      iomodel->FetchData(&transparam,&M,&N,"md.stochasticforcing.dimensions");
+      parameters->AddObject(new IntVecParam(StochasticForcingDimensionsEnum,transparam,N));
+      xDelete<IssmDouble>(transparam);
+      iomodel->FetchData(&transparam,&M,&N,"md.stochasticforcing.timecovariance");
+      parameters->AddObject(new DoubleVecParam(StochasticForcingTimeCovarianceEnum,transparam,N));
+      xDelete<IssmDouble>(transparam);
+      iomodel->FetchData(&transparam,&M,&N,"md.stochasticforcing.covariance");
+      parameters->AddObject(new DoubleMatParam(StochasticForcingCovarianceEnum,transparam,M,N));
+      xDelete<IssmDouble>(transparam);
+   }
+
+	/*Deal with mass flux segments: {{{*/
+	iomodel->FetchData(&qmu_mass_flux_present,"md.qmu.mass_flux_segments_present");
+	iomodel->FetchData(&autodiff_mass_flux_present,"md.autodiff.mass_flux_segments_present");
+
+	if(qmu_mass_flux_present || autodiff_mass_flux_present)mass_flux_present=true;
+	else mass_flux_present=false;
+	parameters->AddObject(new BoolParam(MassFluxSegmentsPresentEnum,mass_flux_present));
+
+	if(mass_flux_present){
+
+		/*Fetch the mass flux segments necessary to compute the mass fluxes.  Build a DoubleMatArrayParam object out of them: */
+		iomodel->FetchData(&array,&mdims_array,&ndims_array,&mass_flux_num_profiles,"md.qmu.mass_flux_segments");
+		if(mass_flux_num_profiles==0)_error_("mass_flux_num_profiles is 0, when MassFlux computations were requested!");
+
+		/*Go through segments, and extract those that belong to this cpu: */
+		for(i=0;i<mass_flux_num_profiles;i++){
+			temp_matrix=array[i];
+			temp_m=mdims_array[i];
+			temp_n=ndims_array[i];
+			_assert_(temp_n==5);
+
+			m=0;
+			for(j=0;j<temp_m;j++){
+				if (  iomodel->my_elements[reCast<int>(*(temp_matrix+5*j+4))-1] )m++;
+			}
+			if(m){
+				matrix=xNewZeroInit<IssmDouble>(5*m);
+				count=0;
+				for(j=0;j<temp_m;j++){
+					if (iomodel->my_elements[reCast<int>(*(temp_matrix+5*j+4))-1]){
+						for(k=0;k<5;k++)*(matrix+5*count+k)=*(temp_matrix+5*j+k);
+						count++;
+					}
+				}
+			}
+			else{
+				matrix=NULL;
+			}
+
+			/*Assign: */
+			array[i]=matrix;
+			mdims_array[i]=m;
+			ndims_array[i]=5;
+
+			/*Free temporary matrix: */
+			xDelete<IssmDouble>(temp_matrix);
+		}
+
+		/*Ok, we have an array of segments, different on every cpu. Create a DoubleMatArrayParam object with it: */
+		parameters->AddObject(new DoubleMatArrayParam(MassFluxSegmentsEnum,array,mass_flux_num_profiles,mdims_array,ndims_array));
+
+		/*Free data: */
+		for(i=0;i<mass_flux_num_profiles;i++){
+			IssmDouble* matrix=array[i];
+			xDelete<IssmDouble>(matrix);
+		}
+		xDelete<int>(mdims_array);
+		xDelete<int>(ndims_array);
+		xDelete<IssmDouble*>(array);
+	}
+	/*}}}*/
+
+	/*Before returning, create parameters in case we are running Qmu or control types runs: */
+	CreateParametersControl(parameters,iomodel,solution_type);
+
+	#ifdef _HAVE_DAKOTA_
+	CreateParametersDakota(parameters,iomodel,rootpath);
+	#endif
+
+	/*Now, deal with toolkits options, which need to be put into the parameters dataset: */
+	ParseToolkitsOptionsx(parameters,toolkitsoptionsfid);
+
+	#ifdef _HAVE_AD_
+	if(VerboseMProcessor()) _printf0_("   starting autodiff parameters \n");
+	CreateParametersAutodiff(parameters,iomodel);
+	if(VerboseMProcessor()) _printf0_("   ending autodiff parameters \n");
+	#endif
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp	(revision 27955)
@@ -0,0 +1,53 @@
+/*!\file:  CreateSingleNodeToElementConnectivity.cpp
+ * \brief: create connectivity table
+ */ 
+
+#include "../../shared/shared.h"
+#include "../../shared/io/io.h"
+#include "../../classes/classes.h"
+#include "./ModelProcessorx.h"
+
+void CreateSingleNodeToElementConnectivity(IoModel* iomodel){
+
+	/*Intermediary*/
+	int vertexid;
+	int elementswidth;
+
+	/*output*/
+	int* connectivity=NULL;
+
+	/*Return if connectivity already present*/
+	if(iomodel->singlenodetoelementconnectivity) return;
+
+	/*Some checks if debugging*/
+	_assert_(iomodel->numberofvertices);
+	_assert_(iomodel->numberofelements);
+	_assert_(iomodel->my_elements);
+	_assert_(iomodel->elements);
+
+	/*Allocate ouput*/
+	connectivity=xNewZeroInit<int>(iomodel->numberofvertices);
+
+	/*Get element width*/
+	switch(iomodel->meshelementtype){
+		case TriaEnum:  elementswidth=3; break;
+		case PentaEnum: elementswidth=6; break;
+		case TetraEnum: elementswidth=4; break;
+		default:  _error_("mesh type "<<EnumToStringx(iomodel->domaintype)<<" not supported yet");
+	}
+
+	/*Create connectivity table*/
+	for(int i=0;i<iomodel->numberofelements;i++){
+		/*!! in parallel we do not want the vertex to be connected to an element that is not in its partition!!*/
+		if(iomodel->my_elements[i]){
+			for(int j=0;j<elementswidth;j++){
+				vertexid=iomodel->elements[elementswidth*i+j];
+				_assert_(vertexid>0 && vertexid-1<iomodel->numberofvertices);
+				connectivity[vertexid-1]=i+1;
+			}
+		}
+	}
+
+	/*Assign to iomodel*/
+	iomodel->singlenodetoelementconnectivity=connectivity;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp	(revision 27955)
@@ -0,0 +1,178 @@
+/*!\file: CreateParametersDakota.cpp
+ * \brief general driver for creating parameters dataset
+ */ 
+
+#include "../../../toolkits/toolkits.h"
+#include "../../../classes/classes.h"
+#include "../../../shared/shared.h"
+#include "../../MeshPartitionx/MeshPartitionx.h"
+#include "../ModelProcessorx.h"
+
+void CreateParametersDakota(Parameters* parameters,IoModel* iomodel,char* rootpath){
+
+	/*variable declarations*/
+	int          i;
+	char       **responsedescriptors    = NULL;
+	int          numresponsedescriptors;
+	char       **variabledescriptors    = NULL;
+	int          numvariabledescriptors;
+	char        *descriptor             = NULL;
+	double      *dakota_parameter       = NULL;
+
+	//qmu files
+	char *qmuinname  = NULL;
+	char *qmuerrname = NULL;
+	char *qmuoutname = NULL;
+
+	//descriptors:
+	char tag[50];
+
+	bool  dakota_analysis   = false;
+	char *name              = NULL;
+	int   numberofresponses;
+	int   nrows,ncols;
+
+	//variable partitions: 
+	IssmDouble **array                      = NULL;
+	int         *mdims_array                = NULL;
+	int         *ndims_array                = NULL;
+	int          num_partitions;
+	int*         intarray = NULL;
+	int M,N;
+
+	//qmu statistics
+	bool statistics    = false;
+	int  numdirectories = 0;
+	int  nfilesperdirectory = 0;
+
+	/*recover parameters: */
+	iomodel->FindConstant(&dakota_analysis,"md.qmu.isdakota");
+
+	if(dakota_analysis){
+
+		parameters->AddObject(iomodel->CopyConstantObject("md.qmu.output",QmuOutputEnum));
+
+		iomodel->FindConstant(&name,"md.miscellaneous.name");
+		iomodel->FindConstant(&numberofresponses,"md.qmu.numberofresponses");
+
+		/*name of qmu input, error and output files*/
+		qmuinname=xNew<char>((strlen(rootpath)+strlen(name)+strlen(".qmu.in")+1));
+		sprintf(qmuinname,"%s%s%s",rootpath,name,".qmu.in");
+		parameters->AddObject(new   StringParam(QmuInNameEnum,qmuinname));
+
+		qmuoutname=xNew<char>((strlen(rootpath)+strlen(name)+strlen(".qmu.out")+1));
+		sprintf(qmuoutname,"%s%s%s",rootpath,name,".qmu.out");
+		parameters->AddObject(new   StringParam(QmuOutNameEnum,qmuoutname));
+
+		qmuerrname=xNew<char>((strlen(rootpath)+strlen(name)+strlen(".qmu.err")+1));
+		sprintf(qmuerrname,"%s%s%s",rootpath,name,".qmu.err");
+		parameters->AddObject(new   StringParam(QmuErrNameEnum,qmuerrname));
+
+		/*Fetch variable descriptors*/
+		iomodel->FindConstant(&variabledescriptors,&numvariabledescriptors,"md.qmu.variabledescriptors");
+
+		/*Fetch response descriptors*/
+		iomodel->FindConstant(&responsedescriptors,&numresponsedescriptors,"md.qmu.responsedescriptors");
+
+		/*Ok, we have all the response descriptors. Build a parameter with it: */
+		parameters->AddObject(new StringArrayParam(QmuResponsedescriptorsEnum,responsedescriptors,numresponsedescriptors));
+
+		/*Deal with statistics: */
+		iomodel->FindConstant(&statistics,"md.qmu.statistics");
+		parameters->AddObject(new BoolParam(QmuStatisticsEnum,statistics));
+		if(statistics){
+			iomodel->FindConstant(&numdirectories,"md.qmu.statistics.ndirectories");
+			parameters->AddObject(new IntParam(QmuNdirectoriesEnum,numdirectories));
+
+			iomodel->FindConstant(&nfilesperdirectory,"md.qmu.statistics.nfiles_per_directory");
+			parameters->AddObject(new IntParam(QmuNfilesPerDirectoryEnum,nfilesperdirectory));
+		}
+
+		/*Load partitioning vectors specific to variables:*/
+		iomodel->FetchData(&array,&mdims_array,&ndims_array,&num_partitions,"md.qmu.variablepartitions");
+		parameters->AddObject(new DoubleMatArrayParam(QmuVariablePartitionsEnum,array,num_partitions,mdims_array,ndims_array));
+		iomodel->FetchData(&intarray,&M,&N,"md.qmu.variablepartitions_npart");
+		parameters->AddObject(new IntMatParam(QmuVariablePartitionsNpartEnum,intarray,M,N));
+		xDelete<int>(intarray); iomodel->FetchData(&intarray,&M,&N,"md.qmu.variablepartitions_nt");
+		parameters->AddObject(new IntMatParam(QmuVariablePartitionsNtEnum,intarray,M,N));
+
+		/*free arrays: {{{*/
+		for(i=0;i<num_partitions;i++){
+			IssmDouble* matrix=array[i];
+			xDelete<IssmDouble>(matrix);
+		}
+		xDelete<int>(mdims_array); 
+		xDelete<int>(ndims_array);
+		xDelete<IssmDouble*>(array);
+		xDelete<int>(intarray);
+		/*}}}*/
+
+		/*Load partitioning vectors specific to responses:*/
+		iomodel->FetchData(&array,&mdims_array,&ndims_array,&num_partitions,"md.qmu.responsepartitions");
+		parameters->AddObject(new DoubleMatArrayParam(QmuResponsePartitionsEnum,array,num_partitions,mdims_array,ndims_array));
+		iomodel->FetchData(&intarray,&M,&N,"md.qmu.responsepartitions_npart");
+		parameters->AddObject(new IntMatParam(QmuResponsePartitionsNpartEnum,intarray,M,N));
+
+		/*free arrays: {{{*/
+		for(i=0;i<num_partitions;i++){
+			IssmDouble* matrix=array[i];
+			xDelete<IssmDouble>(matrix);
+		}
+		xDelete<int>(mdims_array); 
+		xDelete<int>(ndims_array);
+		xDelete<IssmDouble*>(array);
+		xDelete<int>(intarray);
+		/*}}}*/
+
+		/*Deal with data needed because of qmu variables*/
+		DataSet* dataset_variable_descriptors = new DataSet(QmuVariableDescriptorsEnum);
+		for(i=0;i<numvariabledescriptors;i++){
+			if (strncmp(variabledescriptors[i],"scaled_",7)==0){
+				int code;
+
+				/*Ok, we are dealing with a variable that is distributed over nodes or elements. Recover the name of the variable (ex: scaled_Thickness): */
+				sscanf(variabledescriptors[i],"scaled_%s",tag);
+
+				/*Get field name and input enum from tag*/
+				char* fieldname  = NULL;
+				int   param_enum = -1;
+				FieldAndEnumFromCode(&param_enum,&fieldname,tag);
+
+				iomodel->SetFilePointerToData(&code,NULL,fieldname);
+				if(code==8) dataset_variable_descriptors->AddObject(new DoubleParam(param_enum,8)); //skip MatArray inputs, as we don't know which input will be scaled yet!
+				else{ 
+					/*recover more classic data, arrays and scalar mainly:*/
+					iomodel->FetchData(&dakota_parameter,&nrows,&ncols,fieldname);
+					if(nrows==iomodel->numberofvertices || nrows==iomodel->numberofelements){
+						dataset_variable_descriptors->AddObject(new DoubleMatParam(param_enum,dakota_parameter,nrows,ncols));
+					}
+					else{
+						dataset_variable_descriptors->AddObject(new DoubleTransientMatParam(param_enum,dakota_parameter,nrows,ncols));
+					}
+					xDelete<double>(dakota_parameter);
+				}
+				xDelete<char>(fieldname);
+			}
+		}
+		parameters->AddObject(new DataSetParam(QmuVariableDescriptorsEnum,dataset_variable_descriptors));
+		delete dataset_variable_descriptors;
+
+		/*clean-up {{{*/
+		for(i=0;i<numresponsedescriptors;i++){
+			descriptor=responsedescriptors[i];
+			xDelete<char>(descriptor);
+		}
+		xDelete<char*>(responsedescriptors);
+		for(i=0;i<numvariabledescriptors;i++){
+			descriptor=variabledescriptors[i];
+			xDelete<char>(descriptor);
+		}
+		xDelete<char*>(variabledescriptors);
+		xDelete<char>(qmuinname);
+		xDelete<char>(qmuerrname);
+		xDelete<char>(qmuoutname);
+		xDelete<char>(name);
+		/*}}}*/
+	}
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Dakota/UpdateElementsAndMaterialsDakota.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Dakota/UpdateElementsAndMaterialsDakota.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Dakota/UpdateElementsAndMaterialsDakota.cpp	(revision 27955)
@@ -0,0 +1,18 @@
+/*
+ * UpdateElementsAndMaterialsControl:
+ */
+
+#include "../../../toolkits/toolkits.h"
+#include "../../../classes/classes.h"
+#include "../../../shared/shared.h"
+#include "../../MeshPartitionx/MeshPartitionx.h"
+#include "../ModelProcessorx.h"
+
+void	UpdateElementsAndMaterialsDakota(Elements* elements,Inputs* inputs,Materials* materials, IoModel* iomodel){
+
+	/*recover parameters: */
+	bool dakota_analysis;
+	iomodel->FindConstant(&dakota_analysis,"md.qmu.isdakota");
+
+	if(dakota_analysis) iomodel->FetchDataToInput(inputs,elements,"md.geometry.hydrostatic_ratio",GeometryHydrostaticRatioEnum,0.);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/EdgesPartitioning.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/EdgesPartitioning.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/EdgesPartitioning.cpp	(revision 27955)
@@ -0,0 +1,49 @@
+/*!\file:  EdgesPartitioning.cpp
+ * \brief: partition elements and nodes and vertices
+ */ 
+
+#include <string.h>
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "./ModelProcessorx.h"
+
+void EdgesPartitioning(IoModel* iomodel){
+
+	/*If faces are already present, exit*/
+	if(iomodel->my_edges) return;
+
+	/*Get edges and elements*/
+	CreateEdges(iomodel);
+	_assert_(iomodel->elementtoedgeconnectivity);
+
+	/*Mesh dependent variables*/
+	int elementnbe;
+	switch(iomodel->meshelementtype){
+		case TriaEnum:  elementnbe = 3; break;
+		case TetraEnum: elementnbe = 6; break;
+		case PentaEnum: elementnbe = 9; break;
+		default: _error_("mesh dimension not supported yet");
+	}
+
+	/*output: */
+	iomodel->my_edges  = xNewZeroInit<bool>(iomodel->numberofedges);
+
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			for(int j=0;j<elementnbe;j++){
+				iomodel->my_edges[iomodel->elementtoedgeconnectivity[i*elementnbe+j]] = true;
+			}
+		}
+	}
+
+	if(iomodel->meshelementtype==PentaEnum){
+		iomodel->my_vedges = xNewZeroInit<bool>(iomodel->numberofverticaledges);
+		iomodel->my_hedges = xNewZeroInit<bool>(iomodel->numberofhorizontaledges);
+		for(int i=0;i<iomodel->numberofelements;i++){
+			if(iomodel->my_elements[i]){
+				for(int j=0;j<3;j++) iomodel->my_vedges[iomodel->elementtoverticaledgeconnectivity[i*3+j]]   = true;
+				for(int j=0;j<6;j++) iomodel->my_hedges[iomodel->elementtohorizontaledgeconnectivity[i*6+j]] = true;
+			}
+		}
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp	(revision 27955)
@@ -0,0 +1,127 @@
+/*!\file:  ElementsAndVerticesPartitioning.cpp
+ * \brief: partition elements and nodes and vertices
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <string.h>
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "../MeshPartitionx/MeshPartitionx.h"
+#include "../ModelProcessorx/ModelProcessorx.h"
+
+void  ElementsAndVerticesPartitioning(IoModel* iomodel){
+
+	int numberofelements2d;
+	int numberofvertices2d;
+	int numlayers;
+
+	/*intermediary: */
+	int *epart          = NULL; //element partitioning.
+	int *npart          = NULL; //node partitioning.
+	int  elements_width;        //number of columns in elements (2d->3, 3d->6)
+	int *elements2d     = NULL;
+
+	/*Get my_rank:*/
+	int my_rank   = IssmComm::GetRank();
+	int num_procs = IssmComm::GetSize();
+
+	/*First, check that partitioning has not yet been carryed out. Just check whether my_elements pointers is not already assigned a value: */
+	if(iomodel->my_elements) return;
+
+	/*Number of vertices per elements, needed to correctly retrieve data: */
+	/*Determine parallel partitioning of elements: we use Metis for now. First load the data, then partition*/
+	switch(iomodel->meshelementtype){
+		case TriaEnum:
+			elements_width=3;
+			numberofelements2d = 0;
+			numberofvertices2d = 0;
+			numlayers          = 0;
+			break;
+		case TetraEnum:
+			elements_width=4;
+			numberofelements2d = 0;
+			numberofvertices2d = 0;
+			numlayers          = 0;
+			break;
+		case PentaEnum:
+			elements_width=6;
+			iomodel->FetchData(&elements2d,NULL,NULL,"md.mesh.elements2d");
+			iomodel->FindConstant(&numberofelements2d,"md.mesh.numberofelements2d");
+			iomodel->FindConstant(&numberofvertices2d,"md.mesh.numberofvertices2d");
+			iomodel->FindConstant(&numlayers,"md.mesh.numberoflayers");
+			break;
+		default:
+			_error_("mesh elements "<< EnumToStringx(iomodel->meshelementtype) <<" not supported yet");
+	}
+
+	/*Use ice levelset for weights*/
+	int fordan = 0;
+	int* weights = NULL;
+	if(fordan){
+		IssmDouble* icelevelset = NULL;
+		iomodel->FetchData(&icelevelset,NULL,NULL,"md.mask.ice_levelset");
+
+		weights = xNew<int>(iomodel->numberofvertices);
+		for(int i=0;i<iomodel->numberofvertices;i++){
+			if(icelevelset[i]>=0) weights[i] = 1;
+			if(icelevelset[i]<0)  weights[i] = 100;
+		}
+		xDelete<IssmDouble>(icelevelset);
+	}
+
+	/*Partition and free resouces*/
+	MeshPartitionx(&epart,&npart,iomodel->numberofelements,iomodel->numberofvertices,iomodel->elements,numberofelements2d,numberofvertices2d,elements2d,weights,numlayers,elements_width,iomodel->meshelementtype,num_procs);
+	xDelete<int>(elements2d);
+	xDelete<int>(npart);
+	xDelete<int>(weights);
+
+	if(fordan){
+		for(int i=0;i<IssmComm::GetSize();i++){
+			if(i==IssmComm::GetRank()){
+				int temp =0;
+				for(int j=0;j<iomodel->numberofelements;j++) if(epart[j]==i) temp++;
+				_printf_("Partition #"<<i<<" number of elements: "<<temp<<"\n");
+			}
+			ISSM_MPI_Barrier(IssmComm::GetComm());
+		}
+	}
+
+	/*Deal with rifts, they have to be included into one partition only, not several: */
+	int numrifts;
+	iomodel->FindConstant(&numrifts,"md.rifts.numrifts");
+	if(numrifts){
+		IssmDouble *riftinfo = NULL;
+		iomodel->FetchData(&riftinfo,&numrifts,NULL,"md.rifts.riftstruct");
+		for(int i=0;i<numrifts;i++){
+			const int RIFTINFOSIZE = 12;
+			int el1=reCast<int>(*(riftinfo+RIFTINFOSIZE*i+2))-1; //matlab indexing to c indexing
+			int el2=reCast<int>(*(riftinfo+RIFTINFOSIZE*i+3))-1; //matlab indexing to c indexing
+			epart[el2]=epart[el1]; //ensures that this pair of elements will be in the same partition, as well as the corresponding vertices;
+		}
+		iomodel->DeleteData(riftinfo,"md.rifts.riftstruct");
+	}
+
+	/*Create my_elements, used by each partition */
+	bool *my_elements = xNewZeroInit<bool>(iomodel->numberofelements);
+
+	/*Start figuring out, out of the partition, which elements belong to this cpu: */
+	bool check = false;
+	for(int i=0;i<iomodel->numberofelements;i++){
+
+		/*!All elements have been partitioned above, only deal with elements for this cpu: */
+		if(my_rank==epart[i]){
+			my_elements[i]=true;
+			check = true;
+		}
+	}
+	if(!check) _error_("partition "<<my_rank<<" does not have any element! Try reducing md.cluster.np");
+
+	/*Assign pointers to iomodel*/
+	iomodel->epart      =epart;
+	iomodel->my_elements=my_elements;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/FacesPartitioning.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/FacesPartitioning.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/FacesPartitioning.cpp	(revision 27955)
@@ -0,0 +1,57 @@
+/*!\file:  FacesPartitioning.cpp
+ * \brief: partition elements and nodes and vertices
+ */ 
+
+#include <string.h>
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "./ModelProcessorx.h"
+
+void FacesPartitioning(IoModel* iomodel){
+
+	/*If faces are already present, exit*/
+	if(iomodel->my_faces) return;
+
+	/*Get faces and elements*/
+	CreateFaces(iomodel);
+	_assert_(iomodel->elementtofaceconnectivity);
+
+	/*Mesh dependent variables*/
+	int elementnbf;
+	if(iomodel->domaintype==Domain2DhorizontalEnum){
+		elementnbf = 3;
+	}
+	else if(iomodel->domaintype==Domain2DverticalEnum){
+		elementnbf = 3;
+	}
+	else if(iomodel->domaintype==Domain3DEnum){
+		elementnbf = 5;
+	}
+	else{
+		_error_("mesh dimension not supported yet");
+	}
+	/*output: */
+	iomodel->my_faces=xNewZeroInit<bool>(iomodel->numberoffaces);
+
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			for(int j=0;j<elementnbf;j++){
+				_assert_(iomodel->elementtofaceconnectivity[i*elementnbf+j] >= 0);
+				_assert_(iomodel->elementtofaceconnectivity[i*elementnbf+j] <  iomodel->numberoffaces);
+				iomodel->my_faces[iomodel->elementtofaceconnectivity[i*elementnbf+j]] = true;
+			}
+		}
+	}
+
+	if(iomodel->meshelementtype==PentaEnum){
+		iomodel->my_vfaces = xNewZeroInit<bool>(iomodel->numberofverticalfaces);
+		for(int i=0;i<iomodel->numberofelements;i++){
+			if(iomodel->my_elements[i]){
+				for(int j=0;j<3;j++){
+					_assert_(iomodel->elementtoverticalfaceconnectivity[i*3+j]<iomodel->numberofverticalfaces);
+					iomodel->my_vfaces[iomodel->elementtoverticalfaceconnectivity[i*3+j]] = true;
+				}
+			}
+		}
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 27955)
@@ -0,0 +1,110 @@
+/*!\file ModelProcessorx
+ * \brief: create datasets using input binary file and a set of requested analyses
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "./ModelProcessorx.h"
+
+void ModelProcessorx(Elements** pelements, Nodes*** pnodes, Vertices** pvertices, Materials** pmaterials, Constraints*** pconstraints, Loads*** ploads, Parameters** pparameters,Inputs** pinputs,IoModel* iomodel,FILE* toolkitfile, char* rootpath,const int solution_enum,const int nummodels,const int* analysis_enum_list){
+	_assert_(nummodels>0);
+
+	/*Set Verbosity once for all*/
+	int verbose;
+	iomodel->FindConstant(&verbose,"md.verbose");
+	SetVerbosityLevel(verbose);
+
+	if(VerboseMProcessor()) _printf0_("   starting model processor \n");
+
+	/*Initialize datasets*/
+	Elements    *elements     = new Elements();
+	Vertices    *vertices     = new Vertices();
+	Materials   *materials    = new Materials();
+	Parameters  *parameters   = new Parameters();
+	Constraints **constraints = xNew<Constraints*>(nummodels);
+	Loads       **loads       = xNew<Loads*>(nummodels);
+	Nodes       **nodes       = xNew<Nodes*>(nummodels);
+	for(int i = 0;i<nummodels;i++) constraints[i] = new Constraints();
+	for(int i = 0;i<nummodels;i++) loads[i]       = new Loads();
+	for(int i = 0;i<nummodels;i++) nodes[i]       = new Nodes();
+
+	/*Partition Elements and Nodes*/
+	if (iomodel->numberofelements > 0) ElementsAndVerticesPartitioning(iomodel);
+
+	/*Create elements, vertices and materials, independent of analysis_enum: */
+	CreateElements(elements,iomodel,nummodels);
+	CreateVertices(elements,vertices,iomodel,solution_enum);
+	CreateParameters(parameters,iomodel,rootpath,toolkitfile,solution_enum);
+
+	/*Should move to CreateInputs*/
+	Inputs *inputs = new Inputs(elements->Size(),vertices->Size());
+	if (iomodel->domaintype != Domain3DsurfaceEnum) iomodel->FetchDataToInput(inputs,elements,"md.mesh.scale_factor",MeshScaleFactorEnum,1.);
+
+	/*Can now do Materials since we have created Inputs*/
+	CreateMaterials(elements,inputs,materials,iomodel,nummodels);
+
+	/*Update datasets based on each analysis (and add nodes, constrains and loads)*/
+	for(int i=0;i<nummodels;i++){
+
+		int analysis_enum=analysis_enum_list[i];
+		parameters->AddObject(new IntParam(AnalysisCounterEnum,i));
+
+		if(VerboseMProcessor()) _printf0_("   creating datasets for analysis " << EnumToStringx(analysis_enum) << "\n");
+		Analysis* analysis = EnumToAnalysis(analysis_enum);
+		analysis->UpdateParameters(parameters,iomodel,solution_enum,analysis_enum);
+		analysis->CreateNodes(nodes[i],iomodel);
+		analysis->UpdateElements(elements,inputs,iomodel,i,analysis_enum);
+		analysis->CreateConstraints(constraints[i],iomodel);
+		analysis->CreateLoads(loads[i],iomodel);
+		delete analysis;
+
+		/*Tell datasets that Ids are already sorted*/
+		constraints[i]->Presort();
+		loads[i]->Presort();
+		nodes[i]->Presort();
+
+		/*Finalize loads (count pengrids,penpairs,rifts,etc)*/
+		loads[i]->Finalize();
+	}
+
+	/*Solution specific updates*/
+	if(VerboseMProcessor()) _printf0_("   updating elements and materials for control parameters" << "\n");
+	UpdateElementsAndMaterialsControl(elements,parameters,inputs,materials,iomodel);
+	#ifdef _HAVE_DAKOTA_
+	if(VerboseMProcessor()) _printf0_("   updating elements and materials for uncertainty quantification" << "\n");
+	UpdateElementsAndMaterialsDakota(elements,inputs,materials,iomodel);
+	#endif
+	if(solution_enum==TransientSolutionEnum){
+		UpdateParametersTransient(parameters,iomodel);
+		UpdateElementsTransient(elements,parameters,inputs,iomodel);
+	}
+	/*Output definitions dataset: */
+	if(VerboseMProcessor()) _printf0_("   creating output definitions" << "\n");
+	CreateOutputDefinitions(elements,parameters,inputs,iomodel);
+
+	/* Sort datasets:
+	 * All our datasets are already ordered by ids. Set presort flag so that
+	 * later on, when sorting is requested on these datasets, it will not be
+	 * redone: */
+	elements->Presort();
+	vertices->Presort();
+	materials->Presort();
+
+	/*Assign output pointers:*/
+	*pelements    = elements;
+	*pnodes       = nodes;
+	*pvertices    = vertices;
+	*pmaterials   = materials;
+	*pconstraints = constraints;
+	*ploads       = loads;
+	*pparameters  = parameters;
+	*pinputs     = inputs;
+
+	if(VerboseMProcessor()) _printf0_("   done with model processor \n");
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/ModelProcessorx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 27955)
@@ -0,0 +1,44 @@
+/* \file ModelProcessorx.h
+ * \brief  Header file for model processor
+ */
+
+#ifndef _MODEL_PROCESSORX_H_
+#define _MODEL_PROCESSORX_H_
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+void ModelProcessorx(Elements** pelements, Nodes*** pnodes, Vertices** pvertices, Materials** pmaterials, Constraints*** pconstraints, Loads*** ploads, Parameters** pparameters,Inputs** pinputs,IoModel* iomodel,FILE* toolkitfile, char* rootpath,const int solution_type,const int nummodels,const int* analysis_type_listh);
+
+/*Creation of fem datasets: general drivers*/
+void CreateElements(Elements* elements,IoModel* iomodel,int nummodels);
+void CreateMaterials(Elements* elements,Inputs* inputs,Materials* materials,IoModel* iomodel,int nummodels);
+void CreateVertices(Elements* elements,Vertices* vertices,IoModel* iomodel,int solution_type,bool isamr=false);
+void CreateParameters(Parameters*parameters,IoModel* iomodel,char* rootpath,FILE* toolkitfile,const int solution_type);
+void CreateParametersAutodiff(Parameters* parameters,IoModel* iomodel);
+void CreateParametersControl(Parameters* parameters,IoModel* iomodel,int solution_type);
+void CreateParametersDakota(Parameters* parameters,IoModel* iomodel,char* rootpath);
+void CreateOutputDefinitions(Elements* elements, Parameters* parameters,Inputs* inputs,IoModel* iomodel);
+void UpdateElementsAndMaterialsControl(Elements* elements,Parameters* parameters,Inputs* inputs,Materials* materials, IoModel* iomodel);
+void UpdateElementsAndMaterialsControlAD(Elements* elements,Parameters* parameters,Inputs* inputs,Materials* materials, IoModel* iomodel);
+void UpdateElementsAndMaterialsDakota(Elements* elements,Inputs* inputs,Materials* materials, IoModel* iomodel);
+void UpdateElementsTransient(Elements* elements,Parameters* parameters,Inputs* inputs,IoModel* iomodel);
+void UpdateParametersTransient(Parameters* parameters,IoModel* iomodel);
+void CreateNodes(Nodes*nodes, IoModel* iomodel,int analysis,int finite_element,bool isamr=false,int approximation=NoneApproximationEnum,int* approximations=NULL);
+
+/*partitioning: */
+void ElementsAndVerticesPartitioning(IoModel* iomodel);
+void DiscontinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements,bool* my_vertices,  IoModel* iomodel);
+void FacesPartitioning(IoModel* iomodel);
+void EdgesPartitioning(IoModel* iomodel);
+
+/*Mesh properties*/
+void CreateEdges(IoModel* iomodel);
+void CreateFaces(IoModel* iomodel);
+void CreateFaces3d(IoModel* iomodel);
+void EdgeOnBoundaryFlags(bool** pflags,IoModel* iomodel);
+
+/*Connectivity*/
+void CreateSingleNodeToElementConnectivity(IoModel* iomodel);
+void CreateNumberNodeToElementConnectivity(IoModel* iomodel);
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/NodesPartitioning.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/NodesPartitioning.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/NodesPartitioning.cpp	(revision 27955)
@@ -0,0 +1,112 @@
+/*!\file:  NodesPartitioning.cpp
+ * \brief: partition elements and nodes and vertices
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <string.h>
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "../MeshPartitionx/MeshPartitionx.h"
+#include "../ModelProcessorx/ModelProcessorx.h"
+
+void  DiscontinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements,bool* my_vertices, IoModel* iomodel){
+
+	/* Each element has it own nodes (as many as vertices) + additional nodes
+	 * from neighboring elements for each face. This yields to a very different
+	 * partition for the nodes and the vertices. The vertices are similar to
+	 * continuous galerkin, but the nodes partitioning involves faces, which
+	 * messes up sorting of ids. */
+
+	/*Intermediaries*/
+	int  i,i1,i2;
+	int  e1,e2;
+	int  pos;
+
+	/*Get faces and elements*/
+	CreateEdges(iomodel);
+
+	/*Build discontinuous node partitioning
+	 *  - there are three nodes per element (discontinous)
+	 *  - for each element present of each partition, its three nodes will be in this partition
+	 *  - the faces require the dofs of the 2 nodes of each elements sharing the face.
+	 *    if the 2 elements sharing the face are on 2 different cpus, we must duplicate
+	 *    the two nodes that are not on the cpus so that the face can access the dofs of
+	 *    all its 4 nodes
+	 */
+
+	/*Allocate*/
+	bool* my_nodes=xNewZeroInit<bool>(3*iomodel->numberofelements);
+
+	/*First: add all the nodes of all the elements belonging to this cpu*/
+	if(iomodel->domaintype==Domain2DhorizontalEnum || iomodel->domaintype==Domain2DverticalEnum){
+		for (i=0;i<iomodel->numberofelements;i++){
+			if (my_elements[i]){
+				my_nodes[3*i+0]=true;
+				my_nodes[3*i+1]=true;
+				my_nodes[3*i+2]=true;
+			}
+		}
+	}
+	else{
+		_error_("not implemented yet");
+	}
+
+	/*Second: add all missing nodes*/
+
+	/*Get faces and elements*/
+	CreateFaces(iomodel);
+
+	if(iomodel->domaintype==Domain2DhorizontalEnum){
+		/*!All elements have been partitioned above, only create elements for this CPU: */
+		for(int i=0;i<iomodel->numberoffaces;i++){
+
+			/*Get left and right elements*/
+			e1=iomodel->faces[4*i+2]-1; //faces are [node1 node2 elem1 elem2]
+			e2=iomodel->faces[4*i+3]-1; //faces are [node1 node2 elem1 elem2]
+
+			/* 1) If the element e1 is in the current partition
+			 * 2) and if the face of the element is shared by another element (internal face)
+			 * 3) and if this element is not in the same partition:
+			 * we must clone the nodes on this partition so that the loads (Numericalflux)
+			 * will have access to their properties (dofs,...)*/
+			if(my_elements[e1] && e2!=-2 && !my_elements[e2]){
+
+				/*1: Get vertices ids*/
+				i1=iomodel->faces[4*i+0];
+				i2=iomodel->faces[4*i+1];
+
+				/*2: Get the column where these ids are located in the index*/
+				pos=UNDEF;
+				for(int j=0;j<3;j++){
+					if(iomodel->elements[3*e2+j]==i1) pos=j;
+				}
+
+				/*3: We have the id of the elements and the position of the vertices in the index
+				 * we can now create the corresponding nodes:*/
+				if(pos==0){
+					my_nodes[e2*3+0]=true;
+					my_nodes[e2*3+2]=true;
+				}
+				else if(pos==1){
+					my_nodes[e2*3+1]=true;
+					my_nodes[e2*3+0]=true;
+				}
+				else if(pos==2){
+					my_nodes[e2*3+2]=true;
+					my_nodes[e2*3+1]=true;
+				}
+				else{
+					_error_("Problem in faces creation");
+				}
+			}
+		}
+	}
+
+	/*Free data and assign output pointers */
+	*pmy_nodes=my_nodes;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp	(revision 27955)
@@ -0,0 +1,21 @@
+/*
+ * UpdateElementsTransient:
+ */
+
+#include "../../../toolkits/toolkits.h"
+#include "../../../classes/classes.h"
+#include "../../../shared/shared.h"
+#include "../../MeshPartitionx/MeshPartitionx.h"
+#include "../ModelProcessorx.h"
+
+void	UpdateElementsTransient(Elements* elements, Parameters* parameters,Inputs* inputs,IoModel* iomodel){
+
+	/*FIXME: this should go into parameterization update*/
+
+	bool isgroundingline;
+	parameters->FindParam(&isgroundingline,TransientIsgroundinglineEnum);
+
+	if(isgroundingline){
+		iomodel->FetchDataToInput(inputs,elements,"md.geometry.bed",BedEnum);
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Transient/UpdateParametersTransient.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Transient/UpdateParametersTransient.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ModelProcessorx/Transient/UpdateParametersTransient.cpp	(revision 27955)
@@ -0,0 +1,25 @@
+/*
+ * UpdateParametersTransient.cpp:
+ */
+
+#include "../../../toolkits/toolkits.h"
+#include "../../../classes/classes.h"
+#include "../../../shared/shared.h"
+#include "../../MeshPartitionx/MeshPartitionx.h"
+#include "../ModelProcessorx.h"
+
+void UpdateParametersTransient(Parameters* parameters,IoModel* iomodel){/*{{{*/
+	
+	bool isgroundingline;
+	int numoutputs;
+	char** requestedoutputs;
+	parameters->FindParam(&isgroundingline,TransientIsgroundinglineEnum);
+	if(isgroundingline){
+		iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.groundingline.requested_outputs");
+		parameters->AddObject(new IntParam(GroundinglineNumRequestedOutputsEnum,numoutputs));
+      if(numoutputs)parameters->AddObject(new StringArrayParam(GroundinglineRequestedOutputsEnum,requestedoutputs,numoutputs));
+      iomodel->DeleteData(&requestedoutputs,numoutputs,"md.groundingline.requested_outputs");
+	}
+}/*}}}*/
+
+
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/NodalValuex/NodalValuex.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/NodalValuex/NodalValuex.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/NodalValuex/NodalValuex.cpp	(revision 27955)
@@ -0,0 +1,42 @@
+/*!\file NodalValuex
+ * \brief: compute value at certain node
+ */
+
+#include "./NodalValuex.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void NodalValuex( IssmDouble* pnodalvalue, int natureofdataenum,Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters){
+
+	IssmDouble value;
+	int        index;
+	int        found,sumfound,cpu_found,cpu;
+
+	/*retrieve element we are interested in: */
+	parameters->FindParam(&index,IndexEnum);
+
+	/*This is the vertex id for which we want to collect the data. Go through elements, and for each 
+	 *element, figure out  if they hold the vertex, and the data. If so, return it: */
+	cpu_found=-1;
+	found=0;
+
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		found=element->NodalValue(&value,index,natureofdataenum);
+		if(found){
+			cpu_found=IssmComm::GetRank();
+			break;
+		}
+	}
+
+	/*Broadcast whether we found the element: */
+	ISSM_MPI_Allreduce(&found,&sumfound,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
+	if(!sumfound)_error_("could not find element with vertex with id " << index << " to compute nodal value " << EnumToStringx(natureofdataenum));
+
+	/*Broadcast and plug into response: */
+	ISSM_MPI_Allreduce ( &cpu_found,&cpu,1,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
+	ISSM_MPI_Bcast(&value,1,ISSM_MPI_DOUBLE,cpu,IssmComm::GetComm()); 
+
+	*pnodalvalue=value;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/NodalValuex/NodalValuex.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/NodalValuex/NodalValuex.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/NodalValuex/NodalValuex.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  NodalValuex.h
+ * \brief header file for NodalValuex
+ */ 
+
+#ifndef _NODALVALUEX_H
+#define _NODALVALUEX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void NodalValuex( IssmDouble* pnodalvalue, int natureofdataenum,Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+
+#endif  /* _NODALVALUEX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/NodeConnectivityx/NodeConnectivityx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/NodeConnectivityx/NodeConnectivityx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/NodeConnectivityx/NodeConnectivityx.cpp	(revision 27955)
@@ -0,0 +1,73 @@
+/*!\file NodeConnectivityx
+ * \brief: compute node connectivity table, using elements connectivity table.
+ *
+ * For each node, we want to know how many elements are connected to this element, and which they are. 
+ * Given that the 2d meshes we create in ISSM are triangular for now, and they are delaunay conforming, 
+ * each triangle has a minimum angle of 30 degrees, which implies a connectivity <=6. We therefore return 
+ * a nods x 7 connectivity table, with the 7'th column giving us the number of elements connected to each 
+ * row node, and the first 6 columns giving us the elements numbers. 
+ * Amend that: sounds like some triangles get up to 9 connectivity. Take 10 to be on the safe side.
+ * In order to be compatible with matlab output, the connectivity table is given in matlab indexing (starts at 1).
+ */
+
+#include "./NodeConnectivityx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void	NodeConnectivityx(int** pconnectivity,int* pwidth,int* elements, int nels, int nods){
+
+	int i,j,n;
+	const int maxels=100;
+	const int width=maxels+1;
+
+	/*intermediary: */
+	int     node;
+	int     index;
+	int     num_elements;
+	int     already_plugged=0;
+	int element;
+
+	/*Allocate connectivity: */
+	int* connectivity=xNewZeroInit<int>(nods*width);
+
+	/*Go through all elements, and for each elements, plug into the connectivity, all the nodes. 
+	 * If nodes are already plugged into the connectivity, skip them.: */
+	for(n=0;n<nels;n++){
+
+		element=n+1; //matlab indexing
+
+		for(i=0;i<3;i++){
+
+			node=elements[n*3+i]; //already matlab indexed, elements comes directly from the workspace.
+			index=node-1;
+
+			num_elements=connectivity[width*index+maxels]; //retrieve number of elements already  plugged into the connectivity of this node.
+
+			already_plugged=0;
+			for(j=0;j<num_elements;j++){
+				if (element==*(connectivity+width*index+j)){
+					already_plugged=1;
+					break;
+				}
+			}
+			if(already_plugged)break;
+
+			/*this elements is not yet plugged  into the connectivity for this node, do it, and increase counter: */
+			connectivity[width*index+num_elements]=element;
+			connectivity[width*index+maxels]=num_elements+1;
+
+		}
+	}
+
+	/*Last check: is the number of elements on last column of the connectivity superior to maxels? If so, then error out and 
+	 * warn the user to increase the connectivity width: */
+	for(i=0;i<nods;i++){
+		if (*(connectivity+width*i+maxels)>maxels)
+		 _error_("max connectivity width reached (" << *(connectivity+width*i+maxels) << ")! increase width of connectivity table");
+	}
+
+	/*Assign output pointers: */
+	*pconnectivity=connectivity;
+	*pwidth=width;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/NodeConnectivityx/NodeConnectivityx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/NodeConnectivityx/NodeConnectivityx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/NodeConnectivityx/NodeConnectivityx.h	(revision 27955)
@@ -0,0 +1,11 @@
+/*!\file:  NodeConnectivityx.h
+ * \brief header file for node connectivity computation
+ */ 
+
+#ifndef _NODECONNECTIVITYX_H
+#define _NODECONNECTIVITYX_H
+
+/* local prototypes: */
+void	NodeConnectivityx(int** pconnectivity,int* pwidth,int* elements,int nels, int nods);
+
+#endif  /* _NODECONNECTIVITYX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/NodesDofx/NodesDofx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/NodesDofx/NodesDofx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/NodesDofx/NodesDofx.cpp	(revision 27955)
@@ -0,0 +1,26 @@
+/*!\file NodesDofx
+ * \brief: establish degrees of freedom for all nodes
+ */
+
+#include "./NodesDofx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void NodesDofx(Nodes* nodes, Parameters* parameters){
+
+	/*Do we have any nodes for this analysis type? :*/
+	if(!nodes->NumberOfNodes()) return;
+
+	/*Do we really need to update dof indexings*/
+	if(!nodes->RequiresDofReindexing()) return;
+
+	if(VerboseModule()) _printf0_("   Renumbering degrees of freedom\n");
+
+	/*Go through all nodes, and build degree of freedom lists. Each node gets a fixed number of dofs. When 
+	 *a  node has already been distributed dofs on one cpu, all other cpus with the same node cannot distribute it 
+	 *anymore. Use clone field to be sure of that: */
+	nodes->DistributeDofs(GsetEnum);
+	nodes->DistributeDofs(FsetEnum);
+	nodes->DistributeDofs(SsetEnum);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/NodesDofx/NodesDofx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/NodesDofx/NodesDofx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/NodesDofx/NodesDofx.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  NodesDofx.h
+ * \brief header file for degree of freedoms distribution routines.
+ */ 
+
+#ifndef _NODESDOFX_H
+#define _NODESDOFX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void NodesDofx(Nodes* nodes, Parameters* parameters);
+
+#endif  /* _NODESDOFX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/OceanExchangeDatax/OceanExchangeDatax.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/OceanExchangeDatax/OceanExchangeDatax.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/OceanExchangeDatax/OceanExchangeDatax.cpp	(revision 27955)
@@ -0,0 +1,169 @@
+/*!\file OceanExchangeDatax
+ * \brief: exchange of data with ocean model 
+ */
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+#include "../modules.h"
+#include "./OceanExchangeDatax.h"
+
+void OceanExchangeDatax(FemModel* femmodel, bool init_stage){
+
+	#ifndef _HAVE_AD_
+	if(VerboseSolution()) _printf0_("   ocean coupling: exchanging information\n");
+	int my_rank;
+	ISSM_MPI_Comm tomitgcmcomm;
+	ISSM_MPI_Status status;
+
+	my_rank=IssmComm::GetRank();
+	GenericParam<ISSM_MPI_Comm>* parcom = dynamic_cast<GenericParam<ISSM_MPI_Comm>*>(femmodel->parameters->FindParamObject(ToMITgcmCommEnum));
+	if(!parcom)_error_("TransferForcing error message: could not find ToMITgcmCommEnum communicator");
+	tomitgcmcomm=parcom->GetParameterValue();
+
+	int oceangridnxsize,oceangridnysize,ngrids_ocean,nels_ocean,isoceancoupling;
+	IssmDouble  oceantime,coupling_time,time,yts;
+	IssmDouble rho_ice;
+	IssmDouble *oceanmelt         = NULL;
+	IssmDouble *oceangridx;
+	IssmDouble *oceangridy;
+	IssmDouble *icethickness_oceangrid = NULL;
+	IssmDouble *icemask_oceangrid = NULL;
+	IssmDouble* x_ice             = NULL;
+	IssmDouble* y_ice             = NULL;
+	IssmDouble* lat_ice           = NULL;
+	IssmDouble* lon_ice           = NULL;
+	IssmDouble* icethickness      = NULL;
+	IssmDouble* icemask           = NULL;
+	IssmDouble* melt_mesh         = NULL;
+	int*        index_ice         = NULL;
+	int*        index_ocean       = NULL;
+	int         ngrids_ice=femmodel->vertices->NumberOfVertices();
+	int         nels_ice=femmodel->elements->NumberOfElements();
+
+	/*Recover fixed parameters and store them*/
+	femmodel->parameters->FindParam(&coupling_time,TimesteppingCouplingTimeEnum);
+	femmodel->parameters->FindParam(&time,TimeEnum);
+	femmodel->parameters->FindParam(&isoceancoupling,TransientIsoceancouplingEnum);
+
+	/*Exchange or recover mesh and inputs needed*/
+	if(init_stage==true){
+		if(my_rank==0){
+			ISSM_MPI_Send(&coupling_time,1,ISSM_MPI_DOUBLE,0,10001000,tomitgcmcomm);
+			ISSM_MPI_Recv(&oceangridnxsize,1,ISSM_MPI_INT,0,10001003,tomitgcmcomm,&status);
+			ISSM_MPI_Recv(&oceangridnysize,1,ISSM_MPI_INT,0,10001004,tomitgcmcomm,&status);
+		}
+		ngrids_ocean=oceangridnxsize*oceangridnysize;
+		ISSM_MPI_Bcast(&oceangridnxsize,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+		ISSM_MPI_Bcast(&oceangridnysize,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+		ISSM_MPI_Bcast(&ngrids_ocean,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+		femmodel->parameters->SetParam(oceangridnxsize,OceanGridNxEnum);
+		femmodel->parameters->SetParam(oceangridnysize,OceanGridNyEnum);
+		oceangridx=xNew<IssmDouble>(ngrids_ocean);
+		oceangridy=xNew<IssmDouble>(ngrids_ocean);
+		if(my_rank==0){
+			ISSM_MPI_Recv(oceangridx,ngrids_ocean,ISSM_MPI_DOUBLE,0,10001005,tomitgcmcomm,&status);
+			ISSM_MPI_Recv(oceangridy,ngrids_ocean,ISSM_MPI_DOUBLE,0,10001006,tomitgcmcomm,&status);
+		}
+		
+		ISSM_MPI_Bcast(oceangridx,ngrids_ocean,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+		ISSM_MPI_Bcast(oceangridy,ngrids_ocean,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+		femmodel->parameters->SetParam(oceangridx,ngrids_ocean,OceanGridXEnum);
+		femmodel->parameters->SetParam(oceangridy,ngrids_ocean,OceanGridYEnum);
+	}
+	else{
+		/*Recoved ocean grid from parameters*/
+		femmodel->parameters->FindParam(&oceangridx,&ngrids_ocean,OceanGridXEnum);
+		femmodel->parameters->FindParam(&oceangridy,&ngrids_ocean,OceanGridYEnum);
+	}
+
+
+	/*Interpolate ice thickness and mask onto ocean grid*/
+	femmodel->GetMesh(femmodel->vertices,femmodel->elements,&x_ice,&y_ice,&index_ice);
+	BamgTriangulatex(&index_ocean,&nels_ocean,oceangridx,oceangridy,ngrids_ocean);
+	if(isoceancoupling==2){
+		femmodel->vertices->LatLonList(&lat_ice,&lon_ice);
+	}
+	else{
+		femmodel->vertices->XYList(&lon_ice,&lat_ice);
+	}
+	GetVectorFromInputsx(&icethickness,femmodel,ThicknessEnum,VertexSIdEnum);
+	Options* options = new Options();
+	GenericOption<double> *odouble = new GenericOption<double>();
+	const char* name = "default";
+	odouble->name =xNew<char>(strlen(name)+1);
+	memcpy(odouble->name,name,(strlen(name)+1)*sizeof(char));
+	odouble->value=+9999.;
+	odouble->size[0]=1;
+	odouble->size[1]=1;
+	options->AddOption(odouble);
+	InterpFromMeshToMesh2dx(&icethickness_oceangrid,index_ice,lon_ice,lat_ice,ngrids_ice,nels_ice,
+					icethickness,ngrids_ice,1,oceangridx,oceangridy,ngrids_ocean,options);
+	delete options;
+	xDelete<IssmDouble>(icethickness);
+
+	GetVectorFromInputsx(&icemask,femmodel,MaskIceLevelsetEnum,VertexSIdEnum);
+	Options* options2 = new Options();
+	GenericOption<double> *odouble2 = new GenericOption<double>();
+	const char* name2 = "default";
+	odouble2->name =xNew<char>(strlen(name2)+1);
+	memcpy(odouble2->name,name2,(strlen(name2)+1)*sizeof(char));
+	odouble2->value=+1.;
+	odouble2->size[0]=1;
+	odouble2->size[1]=1;
+	options2->AddOption(odouble2);
+	InterpFromMeshToMesh2dx(&icemask_oceangrid,index_ice,lon_ice,lat_ice,ngrids_ice,nels_ice,
+				icemask,ngrids_ice,1,oceangridx,oceangridy,ngrids_ocean,options2);
+	delete options2;
+	xDelete<IssmDouble>(icemask);
+
+	/*Put +9999 for places where there is no ice!*/
+	femmodel->parameters->FindParam(&rho_ice,MaterialsRhoIceEnum);
+	for(int i=0;i<ngrids_ocean;i++) icethickness_oceangrid[i]=icethickness_oceangrid[i]*rho_ice; //ocean needs ice mass in kg/m^2
+	for(int i=0;i<ngrids_ocean;i++) if(icemask_oceangrid[i]>0.) icethickness_oceangrid[i]=+9999.;
+	xDelete<IssmDouble>(icemask_oceangrid);
+
+	if(init_stage==true){ //just send icethickness
+		if(my_rank==0){
+			ISSM_MPI_Send(icethickness_oceangrid,ngrids_ocean,ISSM_MPI_DOUBLE,0,10001008,tomitgcmcomm);
+		}
+	}
+	else{ //send and receive exchanged data
+		femmodel->parameters->FindParam(&yts,ConstantsYtsEnum);
+		if(my_rank==0){
+			ISSM_MPI_Send(icethickness_oceangrid,ngrids_ocean,ISSM_MPI_DOUBLE,0,10001008,tomitgcmcomm);
+			ISSM_MPI_Send(&time,1,ISSM_MPI_DOUBLE,0,10001001,tomitgcmcomm);
+			ISSM_MPI_Recv(&oceantime,1,ISSM_MPI_DOUBLE,0,10001002,tomitgcmcomm,&status);
+			if((oceantime - time > 0.1*yts) & (oceantime - time < -0.1*yts)) _error_("Ocean and ice time are starting to diverge");
+			oceanmelt = xNew<IssmDouble>(ngrids_ocean);
+			ISSM_MPI_Recv(oceanmelt,ngrids_ocean,ISSM_MPI_DOUBLE,0,10001007,tomitgcmcomm,&status);
+		}
+		ISSM_MPI_Bcast(&oceantime,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+		if(my_rank!=0) oceanmelt=xNew<IssmDouble>(ngrids_ocean);
+		ISSM_MPI_Bcast(oceanmelt,ngrids_ocean,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+		/*Interp melt onto ice grid*/
+		InterpFromMeshToMesh2dx(&melt_mesh,index_ocean,oceangridx,oceangridy,ngrids_ocean,nels_ocean,
+					oceanmelt,ngrids_ocean,1,
+					lon_ice,lat_ice,ngrids_ice,NULL);
+
+		for(int i=0;i<ngrids_ice;i++) melt_mesh[i]=-melt_mesh[i]/rho_ice; //heat flux provided by ocean is in kg/m^2/s
+		InputUpdateFromVectorx(femmodel,melt_mesh,BasalforcingsFloatingiceMeltingRateEnum,VertexSIdEnum);
+	}
+
+	/*Delete*/
+	xDelete<int>(index_ice);
+	xDelete<int>(index_ocean);
+	xDelete<IssmDouble>(lat_ice);
+	xDelete<IssmDouble>(lon_ice);
+	xDelete<IssmDouble>(x_ice);
+	xDelete<IssmDouble>(y_ice);
+	xDelete<IssmDouble>(icethickness_oceangrid);
+	xDelete<IssmDouble>(oceangridx);
+	xDelete<IssmDouble>(oceangridy);
+	xDelete<IssmDouble>(melt_mesh);
+	xDelete<IssmDouble>(oceanmelt);
+	#else
+	_error_("not supported");
+	#endif
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/OceanExchangeDatax/OceanExchangeDatax.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/OceanExchangeDatax/OceanExchangeDatax.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/OceanExchangeDatax/OceanExchangeDatax.h	(revision 27955)
@@ -0,0 +1,12 @@
+/*!\file:  OceanExchangeDatax.h
+ * \brief header file for Exchange of ocean data
+ */ 
+
+#ifndef _OCEANEXCHANGEDATAX_H
+#define _OCEANEXCHANGEDATAX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void OceanExchangeDatax(FemModel* femmodel, bool init_stage);
+#endif  /* _OCEANEXCHANGEDATAX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/OutputDefinitionsResponsex/OutputDefinitionsResponsex.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/OutputDefinitionsResponsex/OutputDefinitionsResponsex.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/OutputDefinitionsResponsex/OutputDefinitionsResponsex.cpp	(revision 27955)
@@ -0,0 +1,62 @@
+/*!\file OutputDefinitionsResponsex
+ * \brief retrieve vector from inputs in elements
+ */
+
+#include "./OutputDefinitionsResponsex.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/classes.h"
+
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,const char* output_string){
+
+	/*Ok, go find the output definitions dataset in the parameters, where our responses are hiding: */
+	DataSet* output_definitions=((DataSetParam*)femmodel->parameters->FindParamObject(OutputdefinitionEnum))->value;
+
+	/*Now, go through the output definitions, and retrieve the object which corresponds to our requested response, output_string: */
+	for(Object* & object : output_definitions->objects){
+		Definition* definition=dynamic_cast<Definition*>(object);
+
+		char* name = definition->Name();
+		if(strcmp(name,output_string)==0){
+
+			/*This is the object that we have been chasing for. compute the response and return: */
+			IssmDouble return_value=definition->Response(femmodel);
+
+			/*cleanup: */
+			xDelete<char>(name);
+
+			/*return:*/
+			return return_value;
+		}
+		xDelete<char>(name);
+	}
+
+	/*If we are here, did not find the definition for this response, not good!: */
+	_error_("Could not find the response for output definition " << output_string << " because could not find the definition itself!");
+}
+
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum){
+
+	/*Ok, go find the output definitions dataset in the parameters, where our responses are hiding: */
+	DataSet* output_definitions=((DataSetParam*)femmodel->parameters->FindParamObject(OutputdefinitionEnum))->value;
+
+	/*Now, go through the output definitions, and retrieve the object which corresponds to our requested response, output_enum: */
+	for(Object* & object : output_definitions->objects){
+		Definition* definition=dynamic_cast<Definition*>(object);
+
+		int en = definition->DefinitionEnum();
+		if(en==output_enum){
+
+			/*This is the object that we have been chasing for. compute the response and return: */
+			IssmDouble return_value=definition->Response(femmodel);
+
+			/*return:*/
+			return return_value;
+		}
+	}
+
+	/*If we are here, did not find the definition for this response, not good!: */
+	_error_("Could not find the response for output definition " << EnumToStringx(output_enum)
+				<<" ("<<output_enum<<")"
+				<< " because could not find the definition itself!");
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/OutputDefinitionsResponsex/OutputDefinitionsResponsex.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/OutputDefinitionsResponsex/OutputDefinitionsResponsex.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/OutputDefinitionsResponsex/OutputDefinitionsResponsex.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  OutputDefinitionsResponsexx.h
+*/ 
+
+#ifndef _OUTPUTDEFINITIONSRESPONSEXX_H
+#define _OUTPUTDEFINITIONSRESPONSEXX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,const char* output_string);
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum);
+
+#endif  /* _OUTPUTDEFINITIONSRESPONSEXX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/OutputResultsx/OutputResultsx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 27955)
@@ -0,0 +1,125 @@
+/*!\file:  OutputResultsx.cpp
+ * \brief: go through our finite elements, and see what results they have stored within. 
+ * Then output them into serialized patch arrays, and dump to disk.
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include "./OutputResultsx.h"
+#include "../../shared/io/io.h"
+#include "../../classes/classes.h"
+
+void OutputResultsx(FemModel* femmodel){
+
+	int         my_rank;
+	FILE       *fid                     = NULL;
+	char       *outputfilename          = NULL;
+	char        outputfilename2[1000];        //easier to convert an integer with sprintf
+	bool        io_gather;
+	int         solutiontype;
+	char*       solutiontypestring      = NULL;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	/*If we are running dakota, do we want to output?*/
+	bool dakota_analysis;
+	femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
+	if(dakota_analysis){
+		bool dakota_output;
+		femmodel->parameters->FindParam(&dakota_output,QmuOutputEnum);
+		if(!dakota_output) return; 
+	}
+
+	/*Results do not include the type of solution being run	. In parallel, we output results to a filename, 
+	 *therefore, we need to include the solutiontype into the filename: */
+	if(my_rank==0){
+		femmodel->parameters->FindParam(&solutiontype,SolutionTypeEnum);
+		EnumToStringx(&solutiontypestring,solutiontype);
+		femmodel->results->AddResult(new GenericExternalResult<char*>(femmodel->results->Size()+1,SolutionTypeEnum,solutiontypestring));
+		xDelete<char>(solutiontypestring);
+	}
+
+#ifdef _HAVE_JAVASCRIPT_
+	femmodel->parameters->FindParam(&fid,OutputFilePointerEnum);
+#else
+
+	/*Now, open file for writing*/
+	_assert_(!femmodel->parameters->Exist(OutputFilePointerEnum));
+	femmodel->parameters->FindParam(&outputfilename,OutputFileNameEnum);
+	femmodel->parameters->FindParam(&io_gather,SettingsIoGatherEnum);
+
+	if(io_gather){
+		/*Just open the file for output on cpu 0. We are gathering the data on cpu 0 from all other cpus: */
+		if(!dakota_analysis){
+			if(my_rank==0) fid=pfopen0(outputfilename ,"ab+");
+		}
+		else{
+			if(my_rank==0){
+				/*a little bit complicated. Either statistic computations are requested, which means we 
+				 * put our outbin files in subidirectories with numbers, or we don't, and we dump our 
+				 * outbins directly in the current directory:*/
+				int currEvalId ;
+				int nfilesperdirectory;
+				bool statistics=false;
+				char* root=NULL;
+				char* modelname=NULL;
+
+				femmodel->parameters->FindParam(&currEvalId,QmuCurrEvalIdEnum);
+				femmodel->parameters->FindParam(&statistics,QmuStatisticsEnum);
+
+				if(statistics){
+					femmodel->parameters->FindParam(&nfilesperdirectory,QmuNfilesPerDirectoryEnum);
+					femmodel->parameters->FindParam(&root,RootPathEnum);
+					femmodel->parameters->FindParam(&modelname,ModelnameEnum);
+					sprintf(outputfilename2,"%s/%i/%s.outbin.%i",root,(int)(floor((currEvalId-1)/nfilesperdirectory)+1),modelname,currEvalId);
+				}
+				else{
+					sprintf(outputfilename2,"%s.%i",outputfilename,currEvalId);
+				}
+				fid=pfopen0(outputfilename2,"ab+");
+			}
+		}
+	}
+	else{
+		/*We are opening different  files for output on all cpus. Append the  rank to the filename, and open: */
+		sprintf(outputfilename2,"%s.%i",outputfilename,my_rank);
+		fid=pfopen(outputfilename2 ,"ab+");
+	}
+
+	/*Add file pointer in parameters for further calls to OutputResultsx: */
+	femmodel->parameters->SetParam(fid,OutputFilePointerEnum);
+#endif
+
+	/*Write results to disk: */
+	femmodel->results->Write(femmodel->parameters);
+
+#ifdef _HAVE_JAVASCRIPT_
+	/*Delete and reinitialize results, in parallel: */
+	femmodel->results->clear();
+#else
+	femmodel->parameters->Delete(OutputFilePointerEnum);
+
+	/*Delete and reinitialize results, in parallel: */
+	femmodel->results->clear();
+
+	/*Close output file? :*/
+	if(io_gather){
+		if(!dakota_analysis){
+			if(my_rank==0) pfclose(fid,outputfilename);
+		}
+		else{
+			if(my_rank==0) pfclose(fid,outputfilename2);
+		}
+	}
+	else pfclose(fid,outputfilename2);
+#endif
+
+	/*Clean up and return*/
+	xDelete<char>(outputfilename);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/OutputResultsx/OutputResultsx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/OutputResultsx/OutputResultsx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/OutputResultsx/OutputResultsx.h	(revision 27955)
@@ -0,0 +1,18 @@
+/*!\file:  OutputResultsx.h
+ * \brief header file for outputing results
+ */ 
+
+#ifndef _OUTPUTRESULTSX_H
+#define _OUTPUTRESULTSX_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../classes/classes.h"
+
+void OutputResultsx(FemModel* femmodel);
+
+#endif  /* _OUTPUTRESULTS_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.cpp	(revision 27955)
@@ -0,0 +1,153 @@
+/*!\file ParseToolkitsOptionsx
+ * * \brief: parse options present in a petsc file, and create petsc options
+ * objects accordingly. This will be used to drive the behaviour of Toolkits for
+ * each analysis type.
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <cstring>
+
+#include "./ParseToolkitsOptionsx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void ParseToolkitsOptionsx(Parameters* parameters,FILE* fid){
+
+	char line[1000];
+	char word1[1000];
+	char word2[1000];
+
+	/*intermediary: */
+	int   *analyses     = NULL;
+	char **strings      = NULL;
+	char  *string       = NULL;
+	char **toolkits     = NULL;
+	char  *toolkit      = NULL;
+	char  *newstring    = NULL;
+	char  *catstring    = NULL;
+	int    numanalyses;
+	int    stringlength,toolkitlength;
+
+	/*Get my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	if(my_rank==0){
+
+		/*Now, go through lines and figure out how many analyses we have: */
+		numanalyses=0;
+		while(fgets(line, sizeof line, fid)){
+			/*skip comments and empty lines: */
+			if ((line[0]=='%') || (line[0]=='\n') || (line[0]==' ') || (line[0]=='\t') || (line[0]=='\r')) continue;
+			/*ok, first time, we should get an analysis enum, starting with a +: */
+			if (line[0]=='+'){
+				numanalyses++;
+			}
+			else{
+				continue;
+			}
+		}
+
+		/*Now, allocate analyses and strings: */
+		analyses = xNew<int>(numanalyses);
+		strings  = xNew<char*>(numanalyses);
+		toolkits = xNew<char*>(numanalyses);
+		for(int i=0;i<numanalyses;i++) strings[i]  = NULL;
+		for(int i=0;i<numanalyses;i++) toolkits[i] = NULL;
+
+		/*Go back to beginning of file:*/
+		fseek(fid,0,SEEK_SET);
+		numanalyses=0;
+		while( fgets(line, sizeof line, fid)){
+			/*skip comments and empty lines: */
+			if ((line[0]=='%') || (line[0]=='\n') || (line[0]==' ') || (line[0]=='\t') || (line[0]=='\r'))continue;
+
+			/*Get rid of end of line: */
+			line[strlen(line)-1]='\0';
+
+			if(line[0]=='+'){ /*this is the analysis line: */
+				analyses[numanalyses]=StringToEnumx(&line[1]);  //skip the '+'
+				numanalyses++;
+				/*Now get toolkit (should be following line)*/
+				if(!fgets(line, sizeof line, fid)) _error_("could not read toolkit for analysis " << &line[1]);
+				sscanf(line,"-%s %s",&word1[0],&word2[0]);
+				if(strcmp(word1,"toolkit")!=0) _error_("toolkit option does not follow analysis");
+				toolkit=xNew<char>((strlen(word2)+1));
+				xMemCpy<char>(toolkit,word2,(strlen(word2)+1));
+				toolkits[numanalyses-1]=toolkit;
+				continue;
+			}
+			else{
+				/*this is an option corresponding to analysis numanalyses-1. Add it to the already existing options*/
+				if(strings[numanalyses-1]==NULL){
+					string=xNew<char>((strlen(line)+1));
+					xMemCpy<char>(string,line,(strlen(line)+1));
+
+					strings[numanalyses-1]=string;
+				}
+				else{
+					string=strings[numanalyses-1];
+					newstring=xNew<char>((strlen(line)+1));
+					xMemCpy<char>(newstring,line,(strlen(line)+1));
+
+					/*concatenate:*/
+					catstring=xNew<char>(strlen(string)+1+strlen(newstring)+1+1); //fit in a space " "
+					xMemCpy<char>(catstring,string,(strlen(string)+1));
+
+					strcat(catstring," ");
+					strcat(catstring,newstring);
+					strings[numanalyses-1]=catstring;
+					xDelete<char>(newstring);
+					xDelete<char>(string);
+				}
+			}
+		}
+	}
+
+	/*Ok, broadcast to other cpus: */
+	ISSM_MPI_Bcast(&numanalyses,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	if(my_rank!=0){
+		analyses  = xNew<int>(numanalyses);
+		toolkits  = xNew<char*>(numanalyses);
+		strings   = xNew<char*>(numanalyses);
+	}
+	ISSM_MPI_Bcast(analyses,numanalyses,ISSM_MPI_INT,0,IssmComm::GetComm());
+	for(int i=0;i<numanalyses;i++){
+		char* toolkit=toolkits[i];
+		if(my_rank==0){
+			if(toolkit==NULL) _error_("PETSc options for analysis " << EnumToStringx(reCast<int>(analyses[i])) << " have been declared but were not found");
+		}
+		if(my_rank==0)toolkitlength=(strlen(toolkit)+1)*sizeof(char);
+		ISSM_MPI_Bcast(&toolkitlength,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+		if(my_rank!=0)toolkit=xNew<char>(toolkitlength);
+		ISSM_MPI_Bcast(toolkit,toolkitlength,ISSM_MPI_CHAR,0,IssmComm::GetComm());
+		if(my_rank!=0)toolkits[i]=toolkit;
+
+		char* string=strings[i];
+		if(my_rank==0){
+			if(string==NULL) _error_("PETSc options for analysis " << EnumToStringx(reCast<int>(analyses[i])) << " have been declared but were not found");
+		}
+		if(my_rank==0)stringlength=(strlen(string)+1)*sizeof(char);
+		ISSM_MPI_Bcast(&stringlength,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+		if(my_rank!=0)string=xNew<char>(stringlength);
+		ISSM_MPI_Bcast(string,stringlength,ISSM_MPI_CHAR,0,IssmComm::GetComm());
+		if(my_rank!=0)strings[i]=string;
+	}
+
+	/*Ok, out of strings and analyses and numanalyses, create parameters, and plug them into parameters container: */
+	parameters->AddObject(new StringArrayParam(ToolkitsOptionsStringsEnum,strings,numanalyses));
+	parameters->AddObject(new StringArrayParam(ToolkitsTypesEnum,toolkits,numanalyses));
+	parameters->AddObject(new IntVecParam(ToolkitsOptionsAnalysesEnum,analyses,numanalyses));
+
+	/*Clean up and return*/
+	for(int i=0;i<numanalyses;i++) xDelete<char>(strings[i]);
+	for(int i=0;i<numanalyses;i++) xDelete<char>(toolkits[i]);
+	xDelete<char*>(strings);
+	xDelete<char*>(toolkits);
+	xDelete<int>(analyses);
+	return;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  ParseToolkitsOptionsx.h
+ * \brief header file for parsing petsc options file
+ */ 
+
+#ifndef _PARSEPETSCOPTIONSX_H
+#define _PARSEPETSCOPTIONSX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void ParseToolkitsOptionsx(Parameters* parameters, FILE* petscoptionsfid);
+
+#endif  /* _PARSEPETSCOPTIONSX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.cpp	(revision 27955)
@@ -0,0 +1,34 @@
+/*! \file  PointCloudFindNeighborsx.c
+ */
+
+#include "./PointCloudFindNeighborsx.h"
+
+int PointCloudFindNeighborsx(IssmSeqVec<IssmPDouble>** pflags,double* x, double* y, int nods, double mindistance,double multithread){
+
+	/*output: */
+	IssmSeqVec<IssmPDouble>* flags=NULL;
+	flags=new IssmSeqVec<IssmPDouble>(nods);
+
+	/*threading: */
+	int num=_NUMTHREADS_;
+	if(!multithread)num=1;
+
+	/*initialize thread parameters: */
+	PointCloudFindNeighborsThreadStruct gate;
+	gate.x           = x;
+	gate.y           = y;
+	gate.nods        = nods;
+	gate.mindistance = mindistance;
+	gate.flags       = flags;
+
+	/*launch the thread manager with InterpFromGridToMeshxt as a core: */
+	LaunchThread(PointCloudFindNeighborsxt,(void*)&gate,num);
+
+	/*Assemble vector: */
+	flags->Assemble();
+
+	/*Assign output pointers: */
+	*pflags=flags;
+
+	return 1;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.h	(revision 27955)
@@ -0,0 +1,27 @@
+/*
+	PointCloudFindNeighborsx.h
+*/
+
+#ifndef _POINTCLOUDFLAGNEIGHBORSX_H
+#define _POINTCLOUDFLAGNEIGHBORSX_H
+
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+int PointCloudFindNeighborsx(IssmSeqVec<IssmPDouble>** pflags,double* x, double* y, int nods, double mindistance,double multithread);
+
+/*threading: */
+typedef struct{
+
+	double* x;
+	double* y;
+	int nods;
+	double mindistance;
+	IssmSeqVec<IssmPDouble>* flags;
+
+} PointCloudFindNeighborsThreadStruct;
+
+void* PointCloudFindNeighborsxt(void* vPointCloudFindNeighborsThreadStruct);
+
+#endif /* _POINTCLOUDFLAGNEIGHBORSX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp	(revision 27955)
@@ -0,0 +1,78 @@
+/*!\file:  PointCloudFindNeighborst.cpp
+ * \brief  thread core for PointCloudFindNeighborst code
+ */ 
+
+#include "./PointCloudFindNeighborsx.h"
+#include "../../shared/shared.h"
+
+void* PointCloudFindNeighborsxt(void* vpthread_handle){
+
+	/*gate variables :*/
+	PointCloudFindNeighborsThreadStruct* gate=NULL;
+	pthread_handle* handle=NULL;
+	int     my_thread;
+	int     num_threads;
+	double* x;
+	double* y;
+	int     nods;
+	double  mindistance;
+	IssmSeqVec<IssmPDouble>*     flags;
+
+	/*recover handle and gate: */
+	handle=(pthread_handle*)vpthread_handle;
+	gate=(PointCloudFindNeighborsThreadStruct*)handle->gate;
+	my_thread=handle->id;
+	num_threads=handle->num;
+
+	/*recover parameters :*/
+	x=gate->x;
+	y=gate->y;
+	nods=gate->nods;
+	mindistance=gate->mindistance;
+	flags=gate->flags;
+
+	/*intermediary: */
+	int i,j;
+	int i0,i1;
+	double distance;
+	bool* already=NULL;
+
+	/*allocate: */
+	already=xNewZeroInit<bool>(nods);
+
+	/*partition loop across threads: */
+	PartitionRange(&i0,&i1,nods,num_threads,my_thread);
+
+	/*Loop over the nodes*/
+	for (i=i0;i<i1;i++){
+
+		/*display current iteration*/
+		if (my_thread==0 && fmod((double)i,(double)100)==0)
+		 _printf_("\r      loop progress: "<<setw(6)<<setprecision(2)<<double(i-i0)/double(i1-i0)*100<<"%   ");
+
+		distance=mindistance+100; //make sure initialization respects min distance criterion.
+		for (j=0;j<nods;j++){
+
+			/*skip himself: */
+			if (j==i)continue;
+			distance=sqrt(pow(x[i]-x[j],2)+ pow(y[i]-y[j],2));
+
+			if(distance<=mindistance){
+
+				/*insert value and go to the next point*/
+				if(!already[i]) flags->SetValue(i,1,INS_VAL);
+				if(!already[j]) flags->SetValue(j,2,INS_VAL);
+				already[i]=true;
+				already[j]=true;
+				break;
+			}
+		}
+	}
+	if (my_thread==0)
+	 _printf_("\r      loop progress: "<<fixed<<setw(6)<<setprecision(2)<<100.<<"%  \n");
+
+	/*Free resources:*/
+	xDelete<bool>(already);
+
+	return NULL;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ProcessRiftsx/ProcessRiftsx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ProcessRiftsx/ProcessRiftsx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ProcessRiftsx/ProcessRiftsx.cpp	(revision 27955)
@@ -0,0 +1,78 @@
+/*!\file:  ProcessRifts.cpp
+ * \brief split a mesh where a rift (or fault) is present
+ */ 
+
+#include "./ProcessRiftsx.h"
+#include "../../classes/RiftStruct.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void ProcessRiftsx(int** pindex, int* pnel,double** px,double** py,int* pnods,int** psegments,int** psegmentmarkers,int *pnum_seg,RiftStruct **priftstruct){
+
+	/*Output*/
+	int      numrifts,numrifts0;
+	int     *riftsnumsegments     = NULL;
+	int    **riftssegments        = NULL;
+	int     *riftsnumpairs        = NULL;
+	int    **riftspairs           = NULL;
+	int     *riftstips            = NULL;
+	double **riftspenaltypairs    = NULL;
+	int     *riftsnumpenaltypairs = NULL;
+
+	/*Recover initial mesh*/
+	int     nel            = *pnel;
+	int    *index          = *pindex;
+	double *x              = *px;
+	double *y              = *py;
+	int     nods           = *pnods;
+	int    *segments       = *psegments;
+	int    *segmentmarkers = *psegmentmarkers;
+	int     num_seg        = *pnum_seg;
+
+	/*Intermediary*/
+	int     riftflag;
+
+	/*First, do some fixing on the existing mesh: we do not want any element belonging entirely to the segment list (ie: 
+	 *all the nodes of this element belong to the segments (tends to happen when there are corners: */
+	RemoveCornersFromRifts(&index,&nel,&x,&y,&nods,segments,segmentmarkers,num_seg);
+
+	/*Figure out if we have rifts, and how many: */
+	IsRiftPresent(&riftflag,&numrifts0,segmentmarkers,num_seg);
+
+	if(!riftflag) _error_("No rift present in mesh");
+
+	/*Split mesh*/
+	SplitMeshForRifts(&nel,&index,&nods,&x,&y,&num_seg,&segments,&segmentmarkers);
+
+	/*Order segments so that their normals point outside the domain: */
+	OrderSegments(&segments,num_seg, index,nel);
+
+	/*We do not want to output segments mixed with rift segments: wring out the rifts from the segments, using the 
+	 *segmentmarkerlist:*/
+	SplitRiftSegments(&segments,&segmentmarkers,&num_seg,&numrifts,&riftsnumsegments,&riftssegments,numrifts0,nods,nel);
+
+	/*Using rift segments, associate rift faces in pairs, each pair face representing opposite flanks of the rifts facing one another directly: */
+	PairRiftElements(&riftsnumpairs,&riftspairs,numrifts,riftsnumsegments,riftssegments,x,y);
+
+	/*Order rifts so that they start from one tip, go to the other tip, and back: */
+	OrderRifts(&riftstips,riftssegments,riftspairs,numrifts,riftsnumsegments,x,y,nods,nel);
+
+	/*Create penalty pairs, used by Imp: */
+	PenaltyPairs(&riftspenaltypairs,&riftsnumpenaltypairs,numrifts,riftssegments,riftsnumsegments,riftspairs,riftstips,x,y);
+
+	/*Create Riftstruct*/
+	RiftStruct* riftstruct = new RiftStruct(numrifts,riftsnumsegments,riftssegments,riftsnumpairs,riftspairs,riftsnumpenaltypairs,riftspenaltypairs,riftstips);
+
+	/*Assign output pointers for mesh*/
+	*pnel            = nel;
+	*pindex          = index;
+	*px              = x;
+	*py              = y;
+	*pnods           = nods;
+	*psegments       = segments;
+	*psegmentmarkers = segmentmarkers;
+	*pnum_seg        = num_seg;
+
+	/*Assign output pointers for rifts*/
+	*priftstruct = riftstruct;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ProcessRiftsx/ProcessRiftsx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ProcessRiftsx/ProcessRiftsx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ProcessRiftsx/ProcessRiftsx.h	(revision 27955)
@@ -0,0 +1,12 @@
+/*!\file:  ProcessRiftsx.h
+ * \brief header file for ProcessRifts module
+ */ 
+
+#ifndef _PROCESSRIFTX_H
+#define _PROCESSRIFTX_H
+
+class RiftStruct;
+
+void ProcessRiftsx(int** pindex,int* pnel,double** px,double** py,int* pnods,int** psegments,int** psegmentmarkers,int *pnum_seg,RiftStruct **priftstruct);
+
+#endif  /* _PROCESSRIFTX_H*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.cpp	(revision 27955)
@@ -0,0 +1,36 @@
+/*!\file PropagateFlagsFromConnectivityx
+ */
+
+#include "./PropagateFlagsFromConnectivityx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void RecursivePropagation(double* pool, double* connectivity,int index, double* flags);
+
+void PropagateFlagsFromConnectivityx( double* pool, double* connectivity,int index, double* flags){
+
+	/*Call recursive propagation routine: */
+	RecursivePropagation(pool, connectivity,index, flags);
+}
+
+void RecursivePropagation(double* pool, double* connectivity, int index, double* flags){
+
+	int i;
+	int newel;
+
+	/*if this element (index) belongs to the pool already, skip: */
+	if(pool[index-1])return;
+
+	/*if this element does not belong to the flags set, skip: */
+	if(flags[index-1]==0)return;
+
+	/*put this element (index), which belongs to the flags, into the pool: */
+	pool[index-1]=1;
+
+	/*now, propagate recursively using connectivity of this element: */
+	for(i=0;i<3;i++){
+		newel=(int)*(connectivity+(index-1)*3+i);
+		RecursivePropagation(pool, connectivity, newel, flags);
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.h	(revision 27955)
@@ -0,0 +1,12 @@
+/*!\file:  PropagateFlagsFromConnectivityx.h
+ */ 
+
+#ifndef _PROPAGATEFLAGSFROMCONNECTIVITYX_H
+#define _PROPAGATEFLAGSFROMCONNECTIVITYX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void PropagateFlagsFromConnectivityx( double* pool, double* connectivity,int index, double* flags);
+
+#endif  /* _PROPAGATEFLAGSFROMCONNECTIVITYX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/QmuStatisticsx/QmuStatisticsx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/QmuStatisticsx/QmuStatisticsx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/QmuStatisticsx/QmuStatisticsx.cpp	(revision 27955)
@@ -0,0 +1,1419 @@
+/*!\file:  QmuStatisticsx routines
+ */ 
+/*includes and prototypes:*/
+#include <sys/stat.h>
+#include "./QmuStatisticsx.h"
+#include "../OutputResultsx/OutputResultsx.h"
+
+int readdata(IssmDouble** pdoublemat, int* pdoublematsize, IssmDouble* pdouble, FILE* fid,char* field,int step){ /*{{{*/
+
+	int length;
+	char fieldname[1000];
+	int   fieldname_size;
+	IssmDouble   rtime;
+	int          rstep;
+	int M,N;
+
+	//fields that we retrive: 
+	IssmDouble  dfield; 
+	char*       sfield    = NULL;
+	IssmDouble* dmatfield = NULL; 
+	int*        imatfield = NULL; 
+
+	//type of the returned field: 
+	int type;
+	int found=0;
+
+	while(1){
+
+		size_t ret_code = fread(&fieldname_size, sizeof(int), 1, fid); 
+		if(ret_code != 1) break; //we are done.
+
+		fread(fieldname, sizeof(char), fieldname_size, fid); 
+		//_printf0_("fieldname: " << fieldname << "\n");
+
+		fread(&rtime, sizeof(IssmDouble), 1, fid); 
+		fread(&rstep, sizeof(int), 1, fid); 
+
+		//check on field: 
+		if ((step==rstep) && (strcmp(field,fieldname)==0)){
+
+			//ok, go read the result really: 
+			fread(&type,sizeof(int),1,fid);
+			fread(&M,sizeof(int),1,fid);
+			if (type==1){
+				fread(&dfield,sizeof(IssmDouble),1,fid);
+			}
+			else if (type==2){
+				fread(&M,sizeof(int),1,fid);
+				sfield=xNew<char>(M);
+				fread(sfield,sizeof(char),M,fid);
+			}
+			else if (type==3){
+				fread(&N,sizeof(int),1,fid);
+				dmatfield=xNew<IssmDouble>(M*N);
+				fread(dmatfield,sizeof(IssmDouble),M*N,fid);
+			}
+			else if (type==4){
+				fread(&N,sizeof(int),1,fid);
+				imatfield=xNew<int>(M*N);
+				fread(imatfield,sizeof(int),M*N,fid);
+			}
+			else _error_("cannot read data of type " << type << "\n");
+			found=1;
+			break;
+		}
+		else{
+			//just skim to next results.
+			fread(&type,sizeof(int),1,fid);
+			fread(&M,sizeof(int),1,fid);
+			if (type==1){
+				fseek(fid,sizeof(IssmDouble),SEEK_CUR);
+			}
+			else if(type==2){
+				fseek(fid,M*sizeof(char),SEEK_CUR);
+			}
+			else if(type==3){
+				fread(&N,sizeof(int),1,fid);
+				fseek(fid,M*N*sizeof(IssmDouble),SEEK_CUR);
+			}
+			else if(type==4){
+				fread(&N,sizeof(int),1,fid);
+				fseek(fid,M*N*sizeof(int),SEEK_CUR);
+			}
+			else _error_("cannot read data of type " << type << "\n");
+		}
+	}
+	if(found==0)_error_("could not find " << field << " at step " << step  << "\n");
+
+	/*assign output pointers:*/
+	*pdoublemat=dmatfield;
+	*pdoublematsize=M*N;
+	*pdouble=dfield;
+
+	/*return:*/
+	return type;
+
+}
+/*}}}*/
+int ComputeHistogram(Parameters* parameters,Results* results,int color, ISSM_MPI_Comm statcomm){  /*{{{*/
+
+	int nsamples; 
+	char* directory=NULL;
+	char* model=NULL;
+	char** fields=NULL;
+	int* steps=NULL;
+	int nsteps;
+	int nfields;
+	int nbins;
+	int range,lower_row,upper_row;
+	int nfilesperdirectory;
+
+	/*intermediary:*/
+	IssmDouble* doublemat=NULL;
+	int         doublematsize;
+	IssmDouble scalar;
+
+	/*computation of average and variance itself:*/
+	IssmDouble** maxxs = NULL;
+	IssmDouble** minxs = NULL;
+	int*         xtype=NULL;
+	int*         xsize=NULL;
+
+	IssmDouble** maxmeans=NULL;
+	IssmDouble** minmeans=NULL;
+	int*         meanxtype=NULL;
+	int*         meanxsize=NULL;
+
+	/*only work on the statistical communicator: */
+	if (color==MPI_UNDEFINED)return 0;
+
+	/*Retrieve parameters:*/
+	parameters->FindParam(&nfilesperdirectory,QmuNfilesPerDirectoryEnum);
+	parameters->FindParam(&nsamples,QmuNsampleEnum);
+	parameters->FindParam(&directory,DirectoryNameEnum);
+	parameters->FindParam(&model,InputFileNameEnum);
+	parameters->FindParam(&fields,&nfields,FieldsEnum);
+	parameters->FindParam(&steps,&nsteps,StepsEnum);
+	parameters->FindParam(&nbins,NbinsEnum);
+
+	/*Get rank from the stat comm communicator:*/
+	IssmComm::SetComm(statcomm);
+	int my_rank=IssmComm::GetRank();
+
+	/*Open files and read them complelety, in a distributed way:*/
+	range=DetermineLocalSize(nsamples,IssmComm::GetComm());
+	GetOwnershipBoundariesFromRange(&lower_row,&upper_row,range,IssmComm::GetComm());
+
+	/*Initialize arrays:*/
+	maxmeans=xNew<IssmDouble*>(nfields);
+	minmeans=xNew<IssmDouble*>(nfields);
+	meanxtype=xNew<int>(nfields);
+	meanxsize=xNew<int>(nfields);
+
+	maxxs=xNew<IssmDouble*>(nfields*nsteps);
+	minxs=xNew<IssmDouble*>(nfields*nsteps);
+	xtype=xNew<int>(nfields*nsteps);
+	xsize=xNew<int>(nfields*nsteps);
+
+	/*Start opening files:*/
+	for(int i=(lower_row+1);i<=upper_row;i++){
+		_printf0_("reading file #: " << i << "\n");
+		char file[1000];
+		long int  length;
+		char* buffer=NULL;
+
+		/*string:*/
+		sprintf(file,"%s/%i/%s.outbin.%i",directory,my_rank+1,model,i);
+
+		/*open file: */
+		_printf0_("    opening file: " << file << "\n");
+		FILE* fid=fopen(file,"rb");
+		if(fid==NULL)_error_("could not open file: " << file << "\n");
+
+		/*figure out size of file, and read the whole thing:*/
+		_printf0_("    reading file:\n");
+		fseek(fid, 0, SEEK_END);
+		length = ftell (fid);
+		fseek(fid, 0, SEEK_SET);
+		buffer = xNew<char>(length);
+		fread(buffer, sizeof(char), length, fid);
+
+		/*close file:*/
+		fclose(fid);
+
+		/*create a memory stream with this buffer:*/
+		_printf0_("    processing file:\n");
+		fid=fmemopen(buffer, length, "rb");
+
+		/*start reading data from the buffer directly:*/
+		for (int f=0;f<nfields;f++){
+			char* field=fields[f];
+			fseek(fid,0,SEEK_SET);
+			for (int j=0;j<nsteps;j++){
+				int counter=f*nsteps+j;
+				xtype[counter]=readdata(&doublemat, &doublematsize, &scalar, fid,field,steps[j]);
+				if(i==(lower_row+1)){
+					if(xtype[counter]==1){
+						maxxs[counter]=xNew<IssmDouble>(1); 
+						minxs[counter]=xNew<IssmDouble>(1); 
+						*maxxs[counter]=scalar;
+						*minxs[counter]=scalar;
+						xsize[counter]=1;
+					}
+					else if (xtype[counter]==3){
+						maxxs[counter]=xNew<IssmDouble>(doublematsize); 
+						xMemCpy<IssmDouble>(maxxs[counter],doublemat,doublematsize);
+						minxs[counter]=xNew<IssmDouble>(doublematsize); 
+						xMemCpy<IssmDouble>(minxs[counter],doublemat,doublematsize);
+						xsize[counter]=doublematsize;
+						xDelete<IssmDouble>(doublemat);
+					}
+					else _error_("cannot carry out statistics on type " << xtype[counter]); 
+				}
+				else{
+					if(xtype[counter]==1){
+						*maxxs[counter]=max(*maxxs[counter],scalar);
+						*minxs[counter]=min(*minxs[counter],scalar);
+					}
+					else if (xtype[counter]==3){
+						IssmDouble* newmax=maxxs[counter];
+						IssmDouble* newmin=minxs[counter];
+						for(int k=0;k<doublematsize;k++){
+							if(doublemat[k]>newmax[k])newmax[k]=doublemat[k];
+							if(doublemat[k]<newmin[k])newmin[k]=doublemat[k];
+						}
+						xDelete<IssmDouble>(doublemat);
+					}
+					else _error_("cannot carry out statistics on type " << xtype[counter]); 
+				}
+			}
+		}
+		_printf0_("    average in time:\n");
+
+		/*Deal with average in time: */
+		for (int f=0;f<nfields;f++){
+			fseek(fid,0,SEEK_SET);
+			char* field=fields[f];
+			meanxtype[f]=readdata(&doublemat, &doublematsize, &scalar, fid,field,steps[0]);
+
+			if(meanxtype[f]==1){
+				meanxsize[f]=1;
+				IssmDouble timemean=0;
+				fseek(fid,0,SEEK_SET);
+				for (int j=0;j<nsteps;j++){
+					readdata(&doublemat, &doublematsize, &scalar, fid,field,steps[j]);
+					timemean+=scalar/nsteps;
+				}
+
+				/*Figure out max and min of time means: */
+				if(i==(lower_row+1)){
+					maxmeans[f]=xNewZeroInit<IssmDouble>(1); 
+					minmeans[f]=xNewZeroInit<IssmDouble>(1); 
+					*maxmeans[f]=timemean;
+					*minmeans[f]=timemean;
+				}
+				else{
+					*maxmeans[f]=max(*maxmeans[f],timemean);
+					*minmeans[f]=min(*minmeans[f],timemean);
+				}
+			}
+			else{
+				meanxsize[f]=doublematsize;
+				fseek(fid,0,SEEK_SET);
+				IssmDouble* timemean=xNewZeroInit<IssmDouble>(doublematsize);
+				for (int j=0;j<nsteps;j++){
+					readdata(&doublemat, &doublematsize, &scalar, fid,field,steps[j]);
+					for (int k=0;k<doublematsize;k++){
+						timemean[k]+=doublemat[k]/nsteps;
+					}
+					xDelete<IssmDouble>(doublemat);
+				}
+
+				if(i==(lower_row+1)){
+					maxmeans[f]=xNew<IssmDouble>(doublematsize);
+					xMemCpy<IssmDouble>(maxmeans[f],timemean,doublematsize);
+					minmeans[f]=xNew<IssmDouble>(doublematsize);
+					xMemCpy<IssmDouble>(minmeans[f],timemean,doublematsize);
+				}
+				else{
+					IssmDouble* maxx=maxmeans[f];
+					IssmDouble* minx=minmeans[f];
+
+					for(int k=0;k<doublematsize;k++){
+						maxx[k]=max(maxx[k],timemean[k]);
+						minx[k]=min(minx[k],timemean[k]);
+					}
+					maxmeans[f]=maxx;
+					minmeans[f]=minx;
+				}
+			}
+		}
+		fclose(fid);
+
+		/*delete buffer:*/
+		xDelete<char>(buffer);
+	}
+	ISSM_MPI_Barrier(IssmComm::GetComm());
+	_printf0_("Done reading files, now computing min and max.\n"); 
+
+	/*We have agregated minx and max across the cluster, now gather across the cluster onto
+	 *cpu0 and then compute statistics:*/
+	for (int f=0;f<nfields;f++){
+		int counter0=f*nsteps+0;
+		if (xtype[counter0]==1){ /*deal with scalars {{{*/
+			for (int j=0;j<nsteps;j++){
+				int counter=f*nsteps+j;
+
+				/*we are broadcasting doubles:*/
+				IssmDouble maxscalar=*maxxs[counter];
+				IssmDouble minscalar=*minxs[counter];
+				IssmDouble allmaxscalar;
+				IssmDouble allminscalar;
+				IssmDouble sumscalar_alltimes=0;
+
+				ISSM_MPI_Allreduce(&maxscalar,&allmaxscalar,1,ISSM_MPI_PDOUBLE,ISSM_MPI_MAX,IssmComm::GetComm());
+				ISSM_MPI_Allreduce(&minscalar,&allminscalar,1,ISSM_MPI_PDOUBLE,ISSM_MPI_MIN,IssmComm::GetComm());
+
+				/*Store broadcasted value for later computation of histograms:*/
+				*maxxs[counter]=allmaxscalar;
+				*minxs[counter]=allminscalar;
+
+			}
+		} /*}}}*/
+		else{ /*deal with arrays:{{{*/
+
+			int size=xsize[counter0];
+			for (int j=0;j<nsteps;j++){
+				int counter=f*nsteps+j;
+
+				/*we are broadcasting double arrays:*/
+				IssmDouble* maxx=maxxs[counter];
+				IssmDouble* minx=minxs[counter];
+
+				IssmDouble*  allmax=xNew<IssmDouble>(size);
+				IssmDouble*  allmin=xNew<IssmDouble>(size);
+
+				ISSM_MPI_Allreduce(maxx,allmax,size,ISSM_MPI_PDOUBLE,ISSM_MPI_MAX,IssmComm::GetComm());
+				ISSM_MPI_Allreduce(minx,allmin,size,ISSM_MPI_PDOUBLE,ISSM_MPI_MIN,IssmComm::GetComm());
+
+				/*Store broadcasted value for later computation of histograms:*/
+				maxxs[counter]=allmax;
+				minxs[counter]=allmin;
+			}
+		} /*}}}*/
+	}
+
+	/*Now do the same for the time mean fields:*/
+	for (int f=0;f<nfields;f++){
+		if (meanxtype[f]==1){ /*deal with scalars {{{*/
+
+			/*we are broadcasting doubles:*/
+			IssmDouble maxscalar=*maxmeans[f];
+			IssmDouble minscalar=*minmeans[f];
+			IssmDouble allmaxscalar;
+			IssmDouble allminscalar;
+
+			ISSM_MPI_Allreduce(&maxscalar,&allmaxscalar,1,ISSM_MPI_PDOUBLE,ISSM_MPI_MAX,IssmComm::GetComm());
+			ISSM_MPI_Allreduce(&minscalar,&allminscalar,1,ISSM_MPI_PDOUBLE,ISSM_MPI_MIN,IssmComm::GetComm());
+
+			/*Store for later use in histogram computation:*/
+			*maxmeans[f]=allmaxscalar;
+			*minmeans[f]=allminscalar;
+
+		} /*}}}*/
+		else{ /*deal with arrays:{{{*/
+
+			int size=meanxsize[f];
+
+			/*we are broadcasting double arrays:*/
+			IssmDouble* maxx=maxmeans[f];
+			IssmDouble* minx=minmeans[f];
+
+			IssmDouble*  allmax=xNew<IssmDouble>(size);
+			IssmDouble*  allmin=xNew<IssmDouble>(size);
+
+			ISSM_MPI_Allreduce(maxx,allmax,size,ISSM_MPI_PDOUBLE,ISSM_MPI_MAX,IssmComm::GetComm());
+			ISSM_MPI_Allreduce(minx,allmin,size,ISSM_MPI_PDOUBLE,ISSM_MPI_MIN,IssmComm::GetComm());
+
+			/*Store for later use in histogram computation:*/
+			maxmeans[f]=allmax;
+			minmeans[f]=allmin;
+
+		} /*}}}*/
+	}
+
+	/*Now that we have the min and max, we can start binning. First allocate 
+	 * histograms, then start filling them:*/
+	IssmDouble** histogram=xNew<IssmDouble*>(nfields*nsteps);
+	IssmDouble** timehistogram=xNew<IssmDouble*>(nfields);
+
+	_printf0_("Start reading files again, this time binning values in the histogram:\n");
+	/*Start opening files:*/
+	for (int i=(lower_row+1);i<=upper_row;i++){
+		_printf0_("reading file #: " << i << "\n");
+		char file[1000];
+		long int  length;
+		char* buffer=NULL;
+
+		/*string:*/
+		sprintf(file,"%s/%i/%s.outbin.%i",directory,my_rank+1,model,i);
+
+		/*open file: */
+		_printf0_("    opening file:\n");
+		FILE* fid=fopen(file,"rb");
+		if(fid==NULL)_error_("could not open file: " << file << "\n");
+
+		/*figure out size of file, and read the whole thing:*/
+		_printf0_("    reading file:\n");
+		fseek (fid, 0, SEEK_END);
+		length = ftell (fid);
+		fseek (fid, 0, SEEK_SET);
+		buffer = xNew<char>(length);
+		fread (buffer, sizeof(char), length, fid);
+
+		/*close file:*/
+		fclose (fid);
+
+		/*create a memory stream with this buffer:*/
+		_printf0_("    processing file:\n");
+		fid=fmemopen(buffer, length, "rb");
+
+		/*start reading data from the buffer directly:*/
+		for (int f=0;f<nfields;f++){
+			char* field=fields[f];
+			fseek(fid,0,SEEK_SET);
+			for (int j=0;j<nsteps;j++){
+				int counter=f*nsteps+j;
+				xtype[counter]=readdata(&doublemat, &doublematsize, &scalar, fid,field,steps[j]);
+				if(i==(lower_row+1)){
+					if(xtype[counter]==1){
+						IssmDouble* localhistogram=xNewZeroInit<IssmDouble>(nbins);
+						IssmDouble ma=*maxxs[counter];
+						IssmDouble mi=*minxs[counter];
+						int index=(scalar-mi)/(ma-mi)*nbins; if (index==nbins)index--;
+						if(ma==mi)index=0;
+						//_printf_( index << "|" << scalar << "|" << mi << "|" << ma << "|" << nbins << "\n");
+						localhistogram[index]++;
+						histogram[counter]=localhistogram;
+					}
+					else if (xtype[counter]==3){
+						IssmDouble* localhistogram=xNewZeroInit<IssmDouble>(doublematsize*nbins);
+						IssmDouble* ma=maxxs[counter];
+						IssmDouble* mi=minxs[counter];
+						for (int k=0;k<doublematsize;k++){
+							IssmDouble scalar=doublemat[k];
+							int index=(scalar-mi[k])/(ma[k]-mi[k])*nbins; if (index==nbins)index--;
+							if (mi[k]==ma[k])index=0;
+							_assert_(scalar<=ma[k]); _assert_(scalar>=mi[k]); _assert_(index<nbins);
+							localhistogram[k*nbins+index]++;
+						}
+						histogram[counter]=localhistogram;
+						xDelete<IssmDouble>(doublemat);
+					}
+					else _error_("cannot carry out statistics on type " << xtype[counter]); 
+				}
+				else{
+					if(xtype[counter]==1){
+						IssmDouble* localhistogram=histogram[counter];
+						IssmDouble ma=*maxxs[counter];
+						IssmDouble mi=*minxs[counter];
+						int index=(scalar-mi)/(ma-mi)*nbins; if (index==nbins)index=nbins-1;
+						if(ma==mi)index=0;
+						localhistogram[index]++;
+					}
+					else if (xtype[counter]==3){
+						IssmDouble* localhistogram=histogram[counter];
+						IssmDouble* ma=maxxs[counter];
+						IssmDouble* mi=minxs[counter];
+						for (int k=0;k<doublematsize;k++){
+							IssmDouble scalar=doublemat[k];
+							int index=(scalar-mi[k])/(ma[k]-mi[k])*nbins; if (index==nbins)index=nbins-1;
+							if (mi[k]==ma[k])index=0;
+
+							localhistogram[k*nbins+index]++;
+						}
+						xDelete<IssmDouble>(doublemat);
+					}
+					else _error_("cannot carry out statistics on type " << xtype[counter]); 
+				}
+			}
+		}
+		_printf0_("    average in time:\n");
+
+		/*Deal with average in time: */
+		for (int f=0;f<nfields;f++){
+			fseek(fid,0,SEEK_SET);
+			char* field=fields[f];
+			meanxtype[f]=readdata(&doublemat, &doublematsize, &scalar, fid,field,steps[0]);
+
+			if(meanxtype[f]==1){
+				IssmDouble timemean=0;
+				fseek(fid,0,SEEK_SET);
+				for (int j=0;j<nsteps;j++){
+					readdata(&doublemat, &doublematsize, &scalar, fid,field,steps[j]);
+					timemean+=scalar/nsteps;
+				}
+
+				/*Figure out max and min of time means: */
+				if(i==(lower_row+1)){
+					IssmDouble* localhistogram=xNewZeroInit<IssmDouble>(nbins); 
+					IssmDouble ma=*maxmeans[f];
+					IssmDouble mi=*minmeans[f];
+					int index=(timemean-mi)/(ma-mi)*nbins; if (index==nbins)index=nbins-1;
+					if(ma==mi)index=0;
+					localhistogram[index]++;
+					timehistogram[f]=localhistogram;
+				}
+				else{
+					IssmDouble* localhistogram=timehistogram[f];
+					IssmDouble ma=*maxmeans[f];
+					IssmDouble mi=*minmeans[f];
+					int index=(timemean-mi)/(ma-mi)*nbins; if (index==nbins)index=nbins-1;
+					if(ma==mi)index=0;
+					localhistogram[index]++;
+				}
+			}
+			else{
+				fseek(fid,0,SEEK_SET);
+				IssmDouble* timemean=xNewZeroInit<IssmDouble>(doublematsize);
+				for (int j=0;j<nsteps;j++){
+					readdata(&doublemat, &doublematsize, &scalar, fid,field,steps[j]);
+					for (int k=0;k<doublematsize;k++){
+						timemean[k]+=doublemat[k]/nsteps;
+					}
+					xDelete<IssmDouble>(doublemat);
+				}
+
+				if(i==(lower_row+1)){
+					IssmDouble* localhistogram=xNewZeroInit<IssmDouble>(doublematsize*nbins);
+					IssmDouble* ma=maxmeans[f];
+					IssmDouble* mi=minmeans[f];
+
+					for (int k=0;k<doublematsize;k++){
+						IssmDouble scalar=timemean[k];
+						int index=(scalar-mi[k])/(ma[k]-mi[k])*nbins; if (index==nbins)index=nbins-1;
+						if (mi[k]==ma[k])index=0;
+						localhistogram[k*nbins+index]++;
+					}
+					timehistogram[f]=localhistogram;
+				}
+				else{
+
+					IssmDouble* localhistogram=timehistogram[f];
+					IssmDouble* ma=maxmeans[f];
+					IssmDouble* mi=minmeans[f];
+
+					for (int k=0;k<doublematsize;k++){
+						IssmDouble scalar=timemean[k];
+						int index=(scalar-mi[k])/(ma[k]-mi[k])*nbins; if (index==nbins)index=nbins-1;
+						if (mi[k]==ma[k])index=0;
+
+						localhistogram[k*nbins+index]++;
+					}
+				}
+			}
+		}
+		fclose(fid);
+
+		/*delete buffer:*/
+		xDelete<char>(buffer);
+	}
+	_printf0_("Start aggregating histogram:\n");
+
+	/*We have agregated histograms across the cluster, now gather them across  the cluster onto
+	 *cpu0: */
+	for (int f=0;f<nfields;f++){
+		int counter0=f*nsteps+0;
+		if (xtype[counter0]==1){ /*deal with scalars {{{*/
+			for (int j=0;j<nsteps;j++){
+				int counter=f*nsteps+j;
+
+				/*we are broadcasting doubles:*/
+				IssmDouble* histo=histogram[counter]; //size nbins
+				IssmDouble* allhisto=xNewZeroInit<IssmDouble>(nbins);
+
+				ISSM_MPI_Allreduce(histo,allhisto,nbins,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+
+				/*add to results:*/
+				if(my_rank==0){
+					char fieldname[1000];
+
+					sprintf(fieldname,"%s%s",fields[f],"Histogram");
+					results->AddResult(new GenericExternalResult<IssmPDouble*>(results->Size()+1,fieldname,allhisto,1,nbins,j+1,0));
+
+					sprintf(fieldname,"%s%s",fields[f],"Max");
+					results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,fieldname,*maxxs[counter],j+1,0));
+					sprintf(fieldname,"%s%s",fields[f],"Min");
+					results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,fieldname,*minxs[counter],j+1,0));
+				}
+			}
+		} /*}}}*/
+		else{ /*deal with arrays:{{{*/
+
+			int size=xsize[counter0];
+			for (int j=0;j<nsteps;j++){
+				int counter=f*nsteps+j;
+
+				/*we are broadcasting double arrays:*/
+				IssmDouble* histo=histogram[counter];
+				IssmDouble* allhisto=xNew<IssmDouble>(size*nbins);
+
+				ISSM_MPI_Allreduce(histo,allhisto,size*nbins,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+				xDelete<IssmDouble>(histo);
+
+				/*add to results:*/
+				if(my_rank==0){
+					char fieldname[1000];
+
+					sprintf(fieldname,"%s%s",fields[f],"Histogram");
+					results->AddResult(new GenericExternalResult<IssmPDouble*>(results->Size()+1,fieldname,allhisto,size,nbins,j+1,0));
+
+					sprintf(fieldname,"%s%s",fields[f],"Max");
+					results->AddResult(new GenericExternalResult<IssmPDouble*>(results->Size()+1,fieldname,maxxs[counter],size,1,j+1,0));
+					sprintf(fieldname,"%s%s",fields[f],"Min");
+					results->AddResult(new GenericExternalResult<IssmPDouble*>(results->Size()+1,fieldname,minxs[counter],size,1,j+1,0));
+				}
+			}
+		} /*}}}*/
+	}
+	_printf0_("Start aggregating time mean histogram:\n");
+
+	/*Now do the same for the time mean fields:*/
+	for (int f=0;f<nfields;f++){
+		if (meanxtype[f]==1){ /*deal with scalars {{{*/
+
+			/*we are broadcasting doubles:*/
+			IssmDouble* histo=timehistogram[f];
+			IssmDouble* allhisto=xNewZeroInit<IssmDouble>(nbins);
+
+			ISSM_MPI_Allreduce(histo,allhisto,nbins,ISSM_MPI_PDOUBLE,ISSM_MPI_MAX,IssmComm::GetComm());
+
+			/*add to results at time step 1:*/
+			if(my_rank==0){
+				char fieldname[1000];
+
+				sprintf(fieldname,"%s%s",fields[f],"TimeMeanHistogram");
+				results->AddResult(new GenericExternalResult<IssmPDouble*>(results->Size()+1,fieldname,allhisto,1,nbins,1,0));
+
+				sprintf(fieldname,"%s%s",fields[f],"TimeMeanMax");
+				results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,fieldname,*maxmeans[f],1,0));
+				sprintf(fieldname,"%s%s",fields[f],"TimeMeaMin");
+				results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,fieldname,*minmeans[f],1,0));
+			}
+		} /*}}}*/
+		else{ /*deal with arrays:{{{*/
+
+			int size=meanxsize[f];
+
+			/*we are broadcasting double arrays:*/
+			IssmDouble* histo=timehistogram[f];
+			IssmDouble* allhisto=xNewZeroInit<IssmDouble>(size*nbins);
+
+			ISSM_MPI_Allreduce(histo,allhisto,size*nbins,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+			xDelete<IssmDouble>(histo);
+			/*add to results at step 1:*/
+			if(my_rank==0){
+				char fieldname[1000];
+
+				sprintf(fieldname,"%s%s",fields[f],"TimeMeanHistogram");
+				results->AddResult(new GenericExternalResult<IssmPDouble*>(results->Size()+1,fieldname,allhisto,size,nbins,1,0));
+				sprintf(fieldname,"%s%s",fields[f],"TimeMeanMax");
+				results->AddResult(new GenericExternalResult<IssmPDouble*>(results->Size()+1,fieldname,maxmeans[f],size,1,1,0));
+				sprintf(fieldname,"%s%s",fields[f],"TimeMeanMin");
+				results->AddResult(new GenericExternalResult<IssmPDouble*>(results->Size()+1,fieldname,minmeans[f],size,1,1,0));
+			}
+		} /*}}}*/
+	}
+	_printf0_("Done aggregating time mean histogram:\n");
+	IssmComm::SetComm(ISSM_MPI_COMM_WORLD);
+
+	return 1;
+}
+/*}}}*/
+int ComputeMeanVariance(Parameters* parameters,Results* results,int color, ISSM_MPI_Comm statcomm){  /*{{{*/
+
+	int nsamples; 
+	char* directory=NULL;
+	char* model=NULL;
+	char** fields=NULL;
+	int* steps=NULL;
+	int nsteps;
+	int nfields;
+	int range,lower_row,upper_row;
+	int nfilesperdirectory;
+
+	/*intermediary:*/
+	IssmDouble* doublemat=NULL;
+	int         doublematsize;
+	IssmDouble scalar;
+
+	/*computation of average and variance itself:*/
+	IssmDouble*  x = NULL;
+	IssmDouble*  x2 = NULL;
+	IssmDouble** xs = NULL;
+	IssmDouble** xs2 = NULL;
+	int*         xtype=NULL;
+	int*         xsize=NULL;
+
+	IssmDouble** meanx=NULL;
+	IssmDouble** meanx2=NULL;
+	int*         meantype=NULL;
+	int*         meansize=NULL;
+
+	/*only work on the statistical communicator: */
+	if (color==MPI_UNDEFINED)return 0;
+
+	/*Retrieve parameters:*/
+	parameters->FindParam(&nfilesperdirectory,QmuNfilesPerDirectoryEnum);
+	parameters->FindParam(&nsamples,QmuNsampleEnum);
+	parameters->FindParam(&directory,DirectoryNameEnum);
+	parameters->FindParam(&model,InputFileNameEnum);
+	parameters->FindParam(&fields,&nfields,FieldsEnum);
+	parameters->FindParam(&steps,&nsteps,StepsEnum);
+
+	/*Get rank from the stat comm communicator:*/
+	IssmComm::SetComm(statcomm);
+	int my_rank=IssmComm::GetRank();
+
+	/*Open files and read them complelety, in a distributed way:*/
+	range=DetermineLocalSize(nsamples,IssmComm::GetComm());
+	GetOwnershipBoundariesFromRange(&lower_row,&upper_row,range,IssmComm::GetComm());
+
+	/*Initialize arrays:*/
+	xs=xNew<IssmDouble*>(nfields*nsteps);
+	xs2=xNew<IssmDouble*>(nfields*nsteps);
+	xtype=xNew<int>(nfields*nsteps);
+	xsize=xNew<int>(nfields*nsteps);
+
+	meantype=xNew<int>(nfields);
+	meansize=xNew<int>(nfields);
+	meanx=xNew<IssmDouble*>(nfields);
+	meanx2=xNew<IssmDouble*>(nfields);
+
+	/*Start opening files:*/
+	for (int i=(lower_row+1);i<=upper_row;i++){
+		_printf0_("reading file #: " << i << "\n");
+		char file[1000];
+		long int  length;
+		char* buffer=NULL;
+
+		/*string:*/
+		sprintf(file,"%s/%i/%s.outbin.%i",directory,my_rank+1,model,i);
+
+		/*open file: */
+		_printf0_("    opening file: " << file << "\n");
+		FILE* fid=fopen(file,"rb");
+		if(fid==NULL) _error_("    could not open file: " << file << "\n");
+
+		/*figure out size of file, and read the whole thing:*/
+		_printf0_("    reading file:\n");
+		fseek (fid, 0, SEEK_END);
+		length = ftell (fid);
+		fseek (fid, 0, SEEK_SET);
+		buffer = xNew<char>(length);
+		fread (buffer, sizeof(char), length, fid);
+
+		/*close file:*/
+		fclose (fid);
+
+		/*create a memory stream with this buffer:*/
+		_printf0_("    processing file:\n");
+		fid=fmemopen(buffer, length, "rb");
+
+		/*start reading data from the buffer directly:*/
+		for (int f=0;f<nfields;f++){
+			char* field=fields[f];
+			fseek(fid,0,SEEK_SET);
+			for (int j=0;j<nsteps;j++){
+				int counter=f*nsteps+j;
+				xtype[counter]=readdata(&doublemat, &doublematsize, &scalar, fid,field,steps[j]);
+				if(i==(lower_row+1)){
+					if(xtype[counter]==1){
+						xs[counter]=xNew<IssmDouble>(1); 
+						xs2[counter]=xNew<IssmDouble>(1); 
+						*xs[counter]=scalar;
+						*xs2[counter]=pow(scalar,2.0);
+						xsize[counter]=1;
+					}
+					else if (xtype[counter]==3){
+						IssmDouble* doublemat2=xNew<IssmDouble>(doublematsize);
+						for(int k=0;k<doublematsize;k++)doublemat2[k]=pow(doublemat[k],2.0);
+						xs[counter]=doublemat;
+						xs2[counter]=doublemat2;
+						xsize[counter]=doublematsize;
+					}
+					else _error_("cannot carry out statistics on type " << xtype[counter]); 
+				}
+				else{
+					if(xtype[counter]==1){
+						*xs[counter]+=scalar;
+						*xs2[counter]+=pow(scalar,2.0);
+					}
+					else if (xtype[counter]==3){
+						IssmDouble* newdoublemat=xs[counter];
+						IssmDouble* newdoublemat2=xs2[counter];
+						for(int k=0;k<doublematsize;k++){
+							newdoublemat[k]+=doublemat[k];
+							newdoublemat2[k]+=pow(doublemat[k],2.0);
+						}
+						xs[counter]=newdoublemat;
+						xs2[counter]=newdoublemat2;
+					}
+					else _error_("cannot carry out statistics on type " << xtype[counter]); 
+				}
+			}
+		}
+
+		/*Deal with time mean: */
+		for (int f=0;f<nfields;f++){
+			char* field=fields[f];
+			fseek(fid,0,SEEK_SET);
+			meantype[f]=readdata(&doublemat, &doublematsize, &scalar, fid,field,steps[0]);
+			if(i==(lower_row+1)){
+				if(meantype[f]==1){
+					meanx[f]=xNewZeroInit<IssmDouble>(1);
+					meanx2[f]=xNewZeroInit<IssmDouble>(1);
+					meansize[f]=1;
+				}
+				else{
+					meanx[f]=xNewZeroInit<IssmDouble>(doublematsize);
+					meanx2[f]=xNewZeroInit<IssmDouble>(doublematsize);
+					meansize[f]=doublematsize;
+				}
+			}
+			fseek(fid,0,SEEK_SET);
+			if(meantype[f]==1){
+				IssmDouble sc=0;
+				IssmDouble sc2=0;
+				for(int j=0;j<nsteps;j++){
+					readdata(&doublemat, &doublematsize, &scalar, fid,field,steps[j]);
+					sc+=scalar/nsteps;
+				}
+				sc2+=pow(sc,2.0);
+				*meanx[f]+=sc;
+				*meanx2[f]+=sc2;
+			}
+			else{
+				IssmDouble* sc=meanx[f];
+				IssmDouble* sc2=meanx2[f];
+				IssmDouble* timemean=xNewZeroInit<IssmDouble>(doublematsize);
+				IssmDouble* timemean2=xNewZeroInit<IssmDouble>(doublematsize);
+
+				for(int j=0;j<nsteps;j++){
+					readdata(&doublemat, &doublematsize, &scalar, fid,field,steps[j]);
+					for (int k=0;k<doublematsize;k++){
+						timemean[k]+=doublemat[k]/nsteps;
+					}
+				}
+				for (int k=0;k<doublematsize;k++){
+					timemean2[k]=pow(timemean[k],2.0);
+				}
+				for (int k=0;k<doublematsize;k++){
+					sc[k]+=timemean[k];
+					sc2[k]+=timemean2[k];
+				}
+
+			}
+
+		}
+		fclose(fid);
+
+		/*delete buffer:*/
+		xDelete<char>(buffer);
+	}
+	ISSM_MPI_Barrier(IssmComm::GetComm());
+	_printf0_("Done reading files, now computing mean and variance.\n"); 
+
+	/*We have agregated x and x^2 across the cluster, now gather across the cluster onto
+	 *cpu0 and then compute statistics:*/
+	for (int f=0;f<nfields;f++){
+		int counter0=f*nsteps+0;
+		if (xtype[counter0]==1){ /*deal with scalars {{{*/
+			IssmDouble mean,stddev;
+			for (int j=0;j<nsteps;j++){
+				int counter=f*nsteps+j;
+
+				/*we are broadcasting doubles:*/
+				IssmDouble scalar=*xs[counter];
+				IssmDouble scalar2=*xs2[counter];
+				IssmDouble sumscalar;
+				IssmDouble sumscalar2;
+
+				ISSM_MPI_Reduce(&scalar,&sumscalar,1,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm());
+				ISSM_MPI_Reduce(&scalar2,&sumscalar2,1,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm());
+				/*Build average and standard deviation. For standard deviation, use the 
+				 *following formula: sigma^2=E(x^2)-mu^2:*/
+				mean=sumscalar/nsamples;
+				stddev=sqrt(sumscalar2/nsamples-pow(mean,2.0));
+
+				/*add to results:*/
+				if(my_rank==0){
+					char fieldname[1000];
+
+					sprintf(fieldname,"%s%s",fields[f],"Mean");
+					results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,fieldname,mean,j+1,0));
+					sprintf(fieldname,"%s%s",fields[f],"Stddev");
+					results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,fieldname,stddev,j+1,0));
+				}
+
+			}
+		} /*}}}*/
+		else{ /*deal with arrays:{{{*/
+
+			int size=xsize[counter0];
+
+			IssmDouble*  mean=xNew<IssmDouble>(size);
+			IssmDouble*  stddev=xNew<IssmDouble>(size);
+
+			for (int j=0;j<nsteps;j++){
+				int counter=f*nsteps+j;
+
+				/*we are broadcasting double arrays:*/
+				x=xs[counter];
+				x2=xs2[counter];
+
+				IssmDouble*  sumx=xNew<IssmDouble>(size);
+				IssmDouble*  sumx2=xNew<IssmDouble>(size);
+
+				ISSM_MPI_Reduce(x,sumx,size,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm());
+				ISSM_MPI_Reduce(x2,sumx2,size,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm());
+
+				/*Build average and standard deviation. For standard deviation, use the 
+				 *following formula: sigma^2=E(x^2)-mu^2:*/
+				for (int k=0;k<size;k++){
+					mean[k]=sumx[k]/nsamples;
+					stddev[k]=sqrt(sumx2[k]/nsamples-pow(mean[k],2.0));
+				}
+
+				/*add to results:*/
+				if(my_rank==0){
+					char fieldname[1000];
+
+					sprintf(fieldname,"%s%s",fields[f],"Mean");
+					results->AddResult(new GenericExternalResult<IssmPDouble*>(results->Size()+1,fieldname,mean,size,1,j+1,0));
+					sprintf(fieldname,"%s%s",fields[f],"Stddev");
+					results->AddResult(new GenericExternalResult<IssmPDouble*>(results->Size()+1,fieldname,stddev,size,1,j+1,0));
+				}
+			}
+		} /*}}}*/
+	}
+	/*Do the same but for the time mean:*/
+	for (int f=0;f<nfields;f++){
+		if (meantype[f]==1){ /*deal with scalars {{{*/
+			IssmDouble mean,stddev;
+
+			/*we are broadcasting doubles:*/
+			IssmDouble scalar=*meanx[f];
+			IssmDouble scalar2=*meanx2[f];
+			IssmDouble sumscalar;
+			IssmDouble sumscalar2;
+
+			ISSM_MPI_Reduce(&scalar,&sumscalar,1,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm());
+			ISSM_MPI_Reduce(&scalar2,&sumscalar2,1,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm());
+			/*Build average and standard deviation. For standard deviation, use the 
+			 *following formula: sigma^2=E(x^2)-mu^2:*/
+			mean=sumscalar/nsamples;
+			stddev=sqrt(sumscalar2/nsamples-pow(mean,2.0));
+
+			/*add to results:*/
+			if(my_rank==0){
+				char fieldname[1000];
+
+				sprintf(fieldname,"%s%s",fields[f],"TimeMean");
+				results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,fieldname,mean,1,0));
+				sprintf(fieldname,"%s%s",fields[f],"TimeStddev");
+				results->AddResult(new GenericExternalResult<IssmDouble>(results->Size()+1,fieldname,stddev,1,0));
+			}
+		} /*}}}*/
+		else{ /*deal with arrays:{{{*/
+
+			int size=meansize[f];
+			IssmDouble*  mean=xNew<IssmDouble>(size);
+			IssmDouble*  stddev=xNew<IssmDouble>(size);
+
+			/*we are broadcasting double arrays:*/
+			x=meanx[f];
+			x2=meanx2[f];
+
+			IssmDouble*  sumx=xNew<IssmDouble>(size);
+			IssmDouble*  sumx2=xNew<IssmDouble>(size);
+
+			ISSM_MPI_Reduce(x,sumx,size,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm());
+			ISSM_MPI_Reduce(x2,sumx2,size,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm());
+
+			/*Build average and standard deviation. For standard deviation, use the 
+			 *following formula: sigma^2=E(x^2)-mu^2:*/
+			for (int k=0;k<size;k++){
+				mean[k]=sumx[k]/nsamples;
+				stddev[k]=sqrt(sumx2[k]/nsamples-pow(mean[k],2.0));
+			}
+
+			/*add to results:*/
+			if(my_rank==0){
+				char fieldname[1000];
+
+				sprintf(fieldname,"%s%s",fields[f],"TimeMean");
+				results->AddResult(new GenericExternalResult<IssmPDouble*>(results->Size()+1,fieldname,mean,size,1,1,0));
+				sprintf(fieldname,"%s%s",fields[f],"TimeStddev");
+				results->AddResult(new GenericExternalResult<IssmPDouble*>(results->Size()+1,fieldname,stddev,size,1,1,0));
+			}
+		} /*}}}*/
+	}
+
+	_printf0_("Done with MeanVariance:\n");
+	IssmComm::SetComm(ISSM_MPI_COMM_WORLD);
+
+	return 1;
+} /*}}}*/
+int ComputeSampleSeries(Parameters* parameters,Results* results,int color, ISSM_MPI_Comm statcomm){ /*{{{*/
+
+	int nsamples; 
+	char* directory=NULL;
+	char* model=NULL;
+	char** fields=NULL;
+	int* steps=NULL;
+	int nsteps;
+	int nfields;
+	int range,lower_row,upper_row;
+	int nfilesperdirectory;
+	int* indices=NULL;
+	int  nindices;
+
+	/*intermediary:*/
+	IssmDouble* doublemat=NULL;
+	int         doublematsize;
+	IssmDouble scalar;
+
+	/*computation of average and variance itself:*/
+	IssmDouble*  x = NULL;
+	IssmDouble*  allx=NULL;
+	IssmDouble** xs = NULL;
+	int*         xtype=NULL;
+	int*         xsize=NULL;
+
+	/*only work on the statistical communicator: */
+	if (color==MPI_UNDEFINED)return 0;
+
+	/*Retrieve parameters:*/
+	parameters->FindParam(&nsamples,QmuNsampleEnum);
+	parameters->FindParam(&directory,DirectoryNameEnum);
+	parameters->FindParam(&model,InputFileNameEnum);
+	parameters->FindParam(&fields,&nfields,FieldsEnum);
+	parameters->FindParam(&steps,&nsteps,StepsEnum);
+	parameters->FindParam(&indices,&nindices,IndicesEnum);
+
+	/*Get rank from the stat comm communicator:*/
+	IssmComm::SetComm(statcomm);
+	int my_rank=IssmComm::GetRank();
+
+	/*Open files and read them complelety, in a distributed way:*/
+	range=DetermineLocalSize(nsamples,IssmComm::GetComm());
+	GetOwnershipBoundariesFromRange(&lower_row,&upper_row,range,IssmComm::GetComm());
+
+	/*Initialize arrays:*/
+	xs=xNew<IssmDouble*>(nfields*nsteps);
+	xtype=xNew<int>(nfields*nsteps);
+	xsize=xNew<int>(nfields*nsteps);
+
+	/*Start opening files:*/
+	for (int i=(lower_row+1);i<=upper_row;i++){
+		_printf0_("reading file #: " << i << "\n");
+		char file[1000];
+		long int  length;
+		char* buffer=NULL;
+
+		/*string:*/
+		sprintf(file,"%s/%i/%s.outbin.%i",directory,my_rank+1,model,i);
+
+		/*open file: */
+		_printf0_("    opening file:\n");
+		FILE* fid=fopen(file,"rb");
+
+		/*figure out size of file, and read the whole thing:*/
+		_printf0_("    reading file:\n");
+		fseek (fid, 0, SEEK_END);
+		length = ftell (fid);
+		fseek (fid, 0, SEEK_SET);
+		buffer = xNew<char>(length);
+		fread (buffer, sizeof(char), length, fid);
+
+		/*close file:*/
+		fclose (fid);
+
+		/*create a memory stream with this buffer:*/
+		_printf0_("    processing file:\n");
+		fid=fmemopen(buffer, length, "rb");
+
+		/*start reading data from the buffer directly:*/
+		for (int f=0;f<nfields;f++){
+			fseek(fid,0,SEEK_SET);
+			char* field=fields[f];
+			for (int j=0;j<nsteps;j++){
+				int counter=f*nsteps+j;
+				xtype[counter]=readdata(&doublemat, &doublematsize, &scalar, fid,field,steps[j]);
+				if(i==(lower_row+1)){
+					if(xtype[counter]==1){
+						x=xNew<IssmDouble>(range);
+						x[0]=scalar;
+						xs[counter]=x;
+						xsize[counter]=range;
+					}
+					else if (xtype[counter]==3){
+						x=xNew<IssmDouble>(nindices*range);
+						for(int k=0;k<nindices;k++)x[(i-(lower_row+1))*nindices+k]=doublemat[indices[k]-1];
+						xs[counter]=x;
+						xsize[counter]=range*nindices;
+					}
+					else _error_("cannot carry out statistics on type " << xtype[counter]); 
+				}
+				else{
+					if(xtype[counter]==1){
+						x=xs[counter]; 
+						x[i-(lower_row+1)]=scalar;
+						xs[counter]=x;
+					}
+					else if (xtype[counter]==3){
+						x=xs[counter];
+						for(int k=0;k<nindices;k++)x[(i-(lower_row+1))*nindices+k]=doublemat[indices[k]-1];
+						xs[counter]=x;
+					}
+					else _error_("cannot carry out statistics on type " << xtype[counter]); 
+				}
+			}
+		}
+		fclose(fid);
+
+		/*delete buffer:*/
+		xDelete<char>(buffer);
+	}
+	ISSM_MPI_Barrier(IssmComm::GetComm());
+	_printf0_("Done reading files, now assembling time series.\n");
+
+	for (int f=0;f<nfields;f++){
+		for (int j=0;j<nsteps;j++){
+			int counter=f*nsteps+j;
+			if (xtype[counter]==1){
+				/*we are broadcasting range times doubles:*/
+				x=xs[counter]; 
+				allx=xNew<IssmDouble>(nsamples);
+				MPI_Gather(x, range, ISSM_MPI_PDOUBLE,allx, range, ISSM_MPI_PDOUBLE, 0, IssmComm::GetComm());
+				/*add to results:*/
+				if(my_rank==0){
+					char fieldname[1000];
+
+					sprintf(fieldname,"%s%s",fields[f],"Samples");
+					results->AddResult(new GenericExternalResult<IssmPDouble*>(results->Size()+1,fieldname,allx,nsamples,1,j+1,0));
+				}
+			}
+			else{
+				/*we are broadcasting double arrays:*/
+				x=xs[counter];
+				allx=xNew<IssmDouble>(nsamples*nindices);
+
+				MPI_Gather(x, range*nindices, ISSM_MPI_PDOUBLE,allx, range*nindices, ISSM_MPI_PDOUBLE, 0, IssmComm::GetComm());
+
+				/*add to results:*/
+				if(my_rank==0){
+					char fieldname[1000];
+					sprintf(fieldname,"%s%s",fields[f],"Samples");
+					results->AddResult(new GenericExternalResult<IssmPDouble*>(results->Size()+1,fieldname,allx,nsamples,nindices,j+1,0));
+				}
+			}
+		}
+	}
+	_printf0_("Done with SampleSeries:\n");
+	IssmComm::SetComm(ISSM_MPI_COMM_WORLD);
+
+	return 1;
+} /*}}}*/
+int OutputStatistics(Parameters* parameters,Results* results,int color,ISSM_MPI_Comm statcomm){ /*{{{*/
+
+	char   outputfilename[1000];
+	char* directory=NULL;
+	char* model=NULL;
+	char* method=NULL;
+	int   nsamples;
+	int* steps=NULL;
+	int nsteps;
+
+	/*only work on the statistical communicator: */
+	if (color==MPI_UNDEFINED)return 0;
+
+	FemModel* femmodel=new FemModel();
+
+	/*Some parameters that will allow us to use the OutputResultsx module:*/
+	parameters->AddObject(new BoolParam(QmuIsdakotaEnum,false));
+	parameters->AddObject(new BoolParam(SettingsIoGatherEnum,true));
+
+	parameters->FindParam(&directory,DirectoryNameEnum);
+	parameters->FindParam(&model,InputFileNameEnum);
+	parameters->FindParam(&nsamples,QmuNsampleEnum);
+	parameters->FindParam(&steps,&nsteps,StepsEnum);
+
+	sprintf(outputfilename,"%s/%s.stats",directory,model);
+	parameters->AddObject(new StringParam(OutputFileNameEnum,outputfilename));
+
+	/*Call OutputResults module:*/
+	femmodel->parameters=parameters;
+	femmodel->results=results;
+
+	OutputResultsx(femmodel);
+
+	return 1;
+} /*}}}*/
+bool DakotaDirStructure(int argc,char** argv){ /*{{{*/
+
+	char* input_file; 
+	FILE* fid;
+	IoModel* iomodel=NULL;
+	int check;
+
+	//qmu statistics
+	bool statistics    = false;
+	int  numdirectories = 0;
+
+	/*First things first, set the communicator as a global variable: */
+	IssmComm::SetComm(MPI_COMM_WORLD);
+
+	/*Barrier:*/
+	ISSM_MPI_Barrier(IssmComm::GetComm());
+	_printf0_("Preparing directory structure for model outputs:" << "\n");
+
+	//open model input file for reading
+	input_file=xNew<char>((strlen(argv[2])+strlen(argv[3])+strlen(".bin")+2));
+	sprintf(input_file,"%s/%s%s",argv[2],argv[3],".bin");
+	fid=fopen(input_file,"rb");
+	if (fid==NULL) Cerr << "dirstructure error message: could not open model " << input_file << " to retrieve qmu statistics parameters" << std::endl;
+
+	//initialize IoModel, but light version, we just need it to fetch one constant: 
+	iomodel=new IoModel();
+	iomodel->fid=fid;
+	iomodel->FetchConstants();
+
+	//early return if statistics not requested: 
+	iomodel->FindConstant(&statistics,"md.qmu.statistics");
+	if(!statistics){
+		delete iomodel;
+		xDelete<char>(input_file);
+		fclose(fid);
+		return false; //important return value!
+	}
+
+	iomodel->FindConstant(&numdirectories,"md.qmu.statistics.ndirectories");
+
+	/*Ok, we have everything we need to create the directory structure:*/
+	if(IssmComm::GetRank()==0){
+		for (int i=0;i<numdirectories;i++){
+			char directory[1000];
+			sprintf(directory,"./%i",i+1);
+
+			check = mkdir(directory,ACCESSPERMS);
+			if (check) _error_("dirstructure error message: could not create directory " << directory << "\n");
+		}
+	}
+
+	/*Delete resources:*/
+	delete iomodel;
+	xDelete<char>(input_file);
+
+	//close model file: 
+	fclose(fid);
+
+	//return value: 
+	return true; //statistics computation on!
+} /*}}}*/
+int DakotaStatistics(int argc,char** argv){ /*{{{*/
+
+	char* input_file; 
+	FILE* fid;
+	IoModel* iomodel=NULL;
+	ISSM_MPI_Comm statcomm;
+	int my_rank;
+
+	//qmu statistics
+	bool statistics    = false;
+	int  numstatistics = 0;
+	int  numdirectories = 0;
+	int  nfilesperdirectory = 0;
+	char string[1000];
+	char* name = NULL;
+	char** fields = NULL;
+	int    nfields; 
+	int*   steps=NULL;
+	int    nsteps;
+	int    nbins;
+	int*   indices=NULL;
+	int    nindices;
+	int    nsamples;
+	int    dummy;
+	char*  directory=NULL;
+	char*  model=NULL;
+	Results* results=NULL;
+	Parameters* parameters=NULL;
+	int color;
+
+	/*First things first, set the communicator as a global variable: */
+	IssmComm::SetComm(MPI_COMM_WORLD);
+	my_rank=IssmComm::GetRank();
+
+	/*Barrier:*/
+	ISSM_MPI_Barrier(IssmComm::GetComm());
+	_printf0_("Dakota Statistic Computation" << "\n");
+
+	//open model input file for reading
+	input_file=xNew<char>((strlen(argv[2])+strlen(argv[3])+strlen(".bin")+2));
+	sprintf(input_file,"%s/%s%s",argv[2],argv[3],".bin");
+	fid=fopen(input_file,"rb");
+	if (fid==NULL) Cerr << "issm_dakota_statistics error message: could not open model " << input_file << " to retrieve qmu statistics parameters" << std::endl;
+
+	//initialize IoModel, but light version, we'll need it to fetch constants:
+	iomodel=new IoModel();
+	iomodel->fid=fid;
+	iomodel->FetchConstants();
+
+	//early return if statistics not requested: 
+	iomodel->FindConstant(&statistics,"md.qmu.statistics");
+	if(!statistics){
+		delete iomodel;
+		xDelete<char>(input_file);
+		fclose(fid); 
+		return 0;
+	}else{
+		//create parameters datasets with al the qmu statistics settings we need: 
+
+		/*Initialize parameters and results:*/
+		results   = new Results();
+		parameters=new Parameters();
+
+		//solution type: 
+		parameters->AddObject(new IntParam(SolutionTypeEnum,StatisticsSolutionEnum));
+
+		//root  directory
+		directory=xNew<char>(strlen(argv[2])+1);
+		xMemCpy<char>(directory,argv[2],strlen(argv[2])+1);
+		parameters->AddObject(new StringParam(DirectoryNameEnum,directory));
+
+		//model  name
+		model=xNew<char>(strlen(argv[3])+1);
+		xMemCpy<char>(model,argv[3],strlen(argv[3])+1);
+		parameters->AddObject(new StringParam(InputFileNameEnum,model));
+
+		//nsamples
+		iomodel->FindConstant(&nsamples,"md.qmu.method.params.samples");
+		parameters->AddObject(new IntParam(QmuNsampleEnum,nsamples));
+
+		//ndirectories
+		iomodel->FindConstant(&numdirectories,"md.qmu.statistics.ndirectories");
+		parameters->AddObject(new IntParam(QmuNdirectoriesEnum,numdirectories));
+
+		//nfiles per directory
+		iomodel->FindConstant(&nfilesperdirectory,"md.qmu.statistics.nfiles_per_directory");
+		parameters->AddObject(new IntParam(QmuNfilesPerDirectoryEnum,nfilesperdirectory));
+
+		//At this point, we don't want to go forward any longer, we want to create an MPI 
+		//communicator on which to carry out the computations:
+		if ((my_rank+1)*nfilesperdirectory>nsamples)color=MPI_UNDEFINED;
+		else color=0;
+		ISSM_MPI_Comm_split(ISSM_MPI_COMM_WORLD,color, my_rank, &statcomm);
+
+		iomodel->FindConstant(&numstatistics,"md.qmu.statistics.numstatistics");
+		for (int i=1;i<=numstatistics;i++){
+
+			char* directory=NULL;
+			char* model=NULL;
+			int   nsamples;
+			_printf0_("Dealing with qmu statistical computation #" << i << "\n");
+
+			sprintf(string,"md.qmu.statistics.method(%i).name",i);
+			iomodel->FindConstant(&name,string);
+
+			sprintf(string,"md.qmu.statistics.method(%i).fields",i);
+			iomodel->FindConstant(&fields,&nfields,string);
+			parameters->AddObject(new StringArrayParam(FieldsEnum,fields,nfields));
+
+			sprintf(string,"md.qmu.statistics.method(%i).steps",i);
+			iomodel->FetchData(&steps,&dummy,&nsteps,string);
+			parameters->AddObject(new IntVecParam(StepsEnum,steps,nsteps));
+
+			if (strcmp(name,"Histogram")==0){
+				/*fetch nbins: */
+				sprintf(string,"md.qmu.statistics.method(%i).nbins",i);
+				iomodel->FindConstant(&nbins,string);
+				parameters->AddObject(new IntParam(NbinsEnum,nbins));
+				ComputeHistogram(parameters,results,color,statcomm);
+			}
+			else if (strcmp(name,"SampleSeries")==0){
+				/*fetch indices: */
+				sprintf(string,"md.qmu.statistics.method(%i).indices",i);
+				iomodel->FetchData(&indices,&dummy,&nindices,string);
+				parameters->AddObject(new IntVecParam(IndicesEnum,indices,nindices));
+
+				ComputeSampleSeries(parameters,results,color,statcomm);
+			}
+			else if (strcmp(name,"MeanVariance")==0){
+				ComputeMeanVariance(parameters,results,color,statcomm);
+			}
+			else _error_(" error creating qmu statistics methods parameters: unsupported method " << name);
+		}
+
+		/*Delete resources:*/
+		xDelete<char>(input_file);
+		delete iomodel;
+	}
+
+	//close model file: 
+	fclose(fid);
+
+	/*output results:*/
+	OutputStatistics(parameters,results,color,statcomm);
+
+	/*all meet here: */
+	ISSM_MPI_Barrier(ISSM_MPI_COMM_WORLD); _printf0_("Output file.\n");
+
+	/*Delete resources:*/
+	delete parameters; 
+	delete results;
+
+	return 1;
+} /*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/QmuStatisticsx/QmuStatisticsx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/QmuStatisticsx/QmuStatisticsx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/QmuStatisticsx/QmuStatisticsx.h	(revision 27955)
@@ -0,0 +1,19 @@
+/*!\file:  QmuStatisticsx.h
+ */ 
+
+#ifndef _QMU_STATISTCSX_H_
+#define _QMU_STATISTCSX_H_
+
+#include "../../classes/classes.h"
+
+int ComputeMeanVariance(Parameters* parameters,Results* results,int color, ISSM_MPI_Comm statcomm);
+int ComputeSampleSeries(Parameters* parameters,Results* results,int color, ISSM_MPI_Comm statcomm);
+int OutputStatistics(Parameters* parameters,Results* results,int color,ISSM_MPI_Comm statcomm);
+int ComputeHistogram(Parameters* parameters,Results* results,int color, ISSM_MPI_Comm statcomm);
+int readdata(IssmDouble** pdoublemat, int* pdoublematsize, IssmDouble* pdouble, FILE* fid,char* field,int step);
+bool DakotaDirStructure(int argc,char** argv);
+int DakotaStatistics(int argc,char** argv);
+
+/* local prototypes: */
+
+#endif  /* _QMU_STATISTCSX_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Reduceloadx/Reduceloadx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Reduceloadx/Reduceloadx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Reduceloadx/Reduceloadx.cpp	(revision 27955)
@@ -0,0 +1,59 @@
+/*!\file Reduceloadx
+ * \brief reduce loads (wring out boundary conditions)
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Reduceloadx.h"
+#include "../../shared/io/io.h"
+
+void	Reduceloadx( Vector<IssmDouble>* pf, Matrix<IssmDouble>* Kfs, Vector<IssmDouble>* y_s,bool flag_ys0){
+
+	/*intermediary*/
+	Vector<IssmDouble>*     y_s0   = NULL;
+	Vector<IssmDouble>*     Kfsy_s = NULL;
+	int         Kfsm,Kfsn;
+	int         global_m,global_n;
+	bool        fromlocalsize = true;
+	bool        oldalloc  = false;
+
+	if(VerboseModule()) _printf0_("   Dirichlet lifting applied to load vector\n");
+
+	Kfs->GetSize(&global_m,&global_n);
+	if(pf && global_m*global_n){
+
+		/*Some checks in debugging mode*/
+		_assert_(y_s);
+
+		/*pf = pf - Kfs * y_s;*/
+		Kfs->GetLocalSize(&Kfsm,&Kfsn);
+		if(oldalloc)
+		 Kfsy_s=new Vector<IssmDouble>(Kfsm,fromlocalsize);
+		else
+		 Kfsy_s=new Vector<IssmDouble>(Kfsm,global_m);
+
+		if (flag_ys0){
+
+			/*Create y_s0, full of 0: */
+			y_s0=y_s->Duplicate();
+			y_s0->Set(0.0);
+			y_s0->Assemble();
+
+			Kfs->MatMult(y_s0,Kfsy_s);
+		}
+		else{
+			Kfs->MatMult(y_s,Kfsy_s);
+		}
+
+		pf->AXPY(Kfsy_s,-1.);
+	}
+
+	/*Free resources: and return*/
+	delete y_s0;
+	delete Kfsy_s;
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Reduceloadx/Reduceloadx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Reduceloadx/Reduceloadx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Reduceloadx/Reduceloadx.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  Reduceloadx.h
+ * \brief reduce loads (wring out boundary conditions)
+ */ 
+
+#ifndef _REDUCELOADX_H
+#define _REDUCELOADX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void	Reduceloadx( Vector<IssmDouble>* pf, Matrix<IssmDouble>* Kfs, Vector<IssmDouble>* ys,bool flag_ys0=false);
+
+#endif  /* _REDUCELOADX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp	(revision 27955)
@@ -0,0 +1,45 @@
+/*!\file Reducevectorgtofx
+ * \brief reduce petsc vector from g set to s set (free dofs), using the nodeset partitioning
+ * vectors.
+ */
+
+#include "./Reducevectorgtofx.h"
+
+void Reducevectorgtofx(Vector<IssmDouble>** puf, Vector<IssmDouble>* ug, Nodes* nodes,Parameters* parameters){
+
+	if(VerboseModule()) _printf0_("   Reduce vector from g to f set\n");
+
+	/*first figure out fsize: */
+	int fsize=nodes->NumberOfDofs(FsetEnum);
+	int flocalsize = nodes->NumberOfDofsLocal(FsetEnum);
+
+	/*If fsize is 0, return NULL vector*/
+	if(fsize==0){
+		Vector<IssmDouble>* uf=new Vector<IssmDouble>(0);
+		*puf=uf;
+		//*puf=NULL;
+		return;
+	}
+
+	/*Get local vectors ug*/
+	int        *indices_ug = NULL;
+	IssmDouble *local_ug   = NULL;
+	ug->GetLocalVector(&local_ug,&indices_ug);
+
+	/*Allocate output*/
+	Vector<IssmDouble>* uf=new Vector<IssmDouble>(flocalsize,fsize);
+
+	/*Let nodes figure it out*/
+	for(Object* & object : nodes->objects){
+		Node* node=(Node*)object;
+		node->VecReduce(uf,local_ug,indices_ug);
+	}
+
+	/*Assemble vector: */
+	uf->Assemble();
+
+	/*Cleanup and assing output pointer*/
+	xDelete<int>(indices_ug);
+	xDelete<IssmDouble>(local_ug);
+	*puf=uf;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  Reducevectorgtofx.h
+ * \brief reduce petsc vector from g set to f set (free dofs), using the nodeset partitioning 
+ * vectors.
+ */ 
+
+#ifndef _REDUCEVECTORGTOFX_H
+#define _REDUCEVECTORGTOFX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void Reducevectorgtofx(Vector<IssmDouble>** puf, Vector<IssmDouble>* ug, Nodes* nodes,Parameters* parameters);
+
+#endif  /* _REDUCEVECTORGTOFX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ResetConstraintsx/ResetConstraintsx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ResetConstraintsx/ResetConstraintsx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ResetConstraintsx/ResetConstraintsx.cpp	(revision 27955)
@@ -0,0 +1,57 @@
+/*!\file ResetConstraintsx
+ * \brief: reset thermal penalties
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./ResetConstraintsx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../ConstraintsStatex/ConstraintsStatex.h"
+
+void ResetConstraintsx(FemModel* femmodel){
+
+	/*Display message*/
+	if(VerboseModule()) _printf0_("   Resetting penalties\n");
+
+	/*recover parameters: */
+	int analysis_type;
+	femmodel->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	/*Deal with rift first*/
+	if(femmodel->loads->numrifts){
+		_error_("rift constraints reset not supported yet!");
+	}
+
+	/*Reset pengrid to inactive mode*/
+	for(Object* & object : femmodel->loads->objects){
+		Load* load=(Load*)object;
+		if(load->ObjectEnum()==PengridEnum){
+			Pengrid* pengrid=(Pengrid*)load;
+			pengrid->ResetConstraint();
+		}
+	}
+}
+void ResetZigzagCounterx(FemModel* femmodel){
+
+	/*Display message*/
+	if(VerboseModule()) _printf0_("   Resetting penalties\n");
+
+	/*Deal with rift first*/
+	if(femmodel->loads->numrifts){
+		_error_("rift constraints reset not supported yet!");
+	}
+
+	/*Reset pengrid to inactive mode*/
+	for(Object* & object: femmodel->loads->objects){
+		Load* load=(Load*)object;
+		if(load->ObjectEnum()==PengridEnum){
+			Pengrid* pengrid=(Pengrid*)load;
+			pengrid->ResetZigzagCounter();
+		}
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ResetConstraintsx/ResetConstraintsx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ResetConstraintsx/ResetConstraintsx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ResetConstraintsx/ResetConstraintsx.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  ResetConstraintsx.h
+ * \brief header file for penalty constraints module
+ */ 
+
+#ifndef _RESETCONSTRAINTSX_H
+#define _RESETCONSTRAINTSX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void ResetConstraintsx(FemModel* femmodel);
+void ResetZigzagCounterx(FemModel* femmodel);
+
+#endif  /* _RESETCONSTRAINTSX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ResetFSBasalBoundaryConditionx/ResetFSBasalBoundaryConditionx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ResetFSBasalBoundaryConditionx/ResetFSBasalBoundaryConditionx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ResetFSBasalBoundaryConditionx/ResetFSBasalBoundaryConditionx.cpp	(revision 27955)
@@ -0,0 +1,18 @@
+/*!\file ResetFSBasalBoundaryConditionx
+ * \brief: reset coordinate system for full-FS: tangential to the bedrock
+ */
+
+#include "./ResetFSBasalBoundaryConditionx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void ResetFSBasalBoundaryConditionx(Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads,Materials* materials,Parameters* parameters){
+
+	Element *element = NULL;
+
+for(Object* & object : elements->objects){
+      element = xDynamicCast<Element*>(object);
+		element->ResetFSBasalBoundaryCondition();
+	}
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ResetFSBasalBoundaryConditionx/ResetFSBasalBoundaryConditionx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ResetFSBasalBoundaryConditionx/ResetFSBasalBoundaryConditionx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ResetFSBasalBoundaryConditionx/ResetFSBasalBoundaryConditionx.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  ResetFSBasalBoundaryConditionx.h
+ * \brief header file for reset coordinate system module
+ */ 
+
+#ifndef _RESETFSBASALBOUNDARYCONDITIONX_H
+#define _RESETFSBASALBOUNDARYCONDITIONX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void ResetFSBasalBoundaryConditionx(Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads,Materials* materials,  Parameters* parameters); 
+
+#endif  /* _RESETFSBASALBOUNDARYCONDITIONX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/RheologyBAbsGradientx/RheologyBAbsGradientx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/RheologyBAbsGradientx/RheologyBAbsGradientx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/RheologyBAbsGradientx/RheologyBAbsGradientx.cpp	(revision 27955)
@@ -0,0 +1,149 @@
+/*!\file RheologyBAbsGradientx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./RheologyBAbsGradientx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/Inputs/DatasetInput.h"
+
+void RheologyBAbsGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		J+=RheologyBAbsGradient(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble RheologyBAbsGradient(Element* element){
+
+	int         domaintype,numcomponents;
+	IssmDouble  Jelem=0.;
+	IssmDouble  misfit,Jdet;
+	IssmDouble  dp[3],weight;
+	IssmDouble* xyz_list      = NULL;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/* Get node coordinates*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	DatasetInput* weights_input=element->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* rheologyb_input=element->GetInput(MaterialsRheologyBEnum);                  _assert_(rheologyb_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,RheologyBAbsGradientEnum);
+		rheologyb_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+
+		/*Tikhonov regularization: J = 1/2 ((dp/dx)^2 + (dp/dy)^2) */ 
+		Jelem+=weight*1/2*(dp[0]*dp[0] + dp[1]*dp[1])*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
+
+void RheologyBInitialguessMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		J+=RheologyBInitialguessMisfit(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble RheologyBInitialguessMisfit(Element* element){
+
+	int         domaintype,numcomponents;
+	IssmDouble  Jelem=0.;
+	IssmDouble  misfit,Jdet;
+	IssmDouble  B,B0,weight;
+	IssmDouble* xyz_list      = NULL;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/* Get node coordinates*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	DatasetInput* weights_input=element->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* rheologyb_input=element->GetInput(MaterialsRheologyBbarEnum);            _assert_(rheologyb_input);
+	Input* rheologyb0_input=element->GetInput(RheologyBInitialguessEnum);           _assert_(rheologyb0_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,RheologyBInitialguessMisfitEnum);
+		rheologyb_input->GetInputValue(&B,gauss);
+		rheologyb0_input->GetInputValue(&B0,gauss);
+
+		/*Tikhonov regularization: J = 1/2 (B-B0)^2 */ 
+		Jelem+=weight*1./2.*(B-B0)*(B-B0)*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/RheologyBAbsGradientx/RheologyBAbsGradientx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/RheologyBAbsGradientx/RheologyBAbsGradientx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/RheologyBAbsGradientx/RheologyBAbsGradientx.h	(revision 27955)
@@ -0,0 +1,17 @@
+/*!\file:  RheologyBAbsGradientx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _RHEOLOGYBGRADIENTX_H
+#define _RHEOLOGYBGRADIENTX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void RheologyBAbsGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble RheologyBAbsGradient(Element* element);
+
+void RheologyBInitialguessMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble RheologyBInitialguessMisfit(Element* element);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.cpp	(revision 27955)
@@ -0,0 +1,85 @@
+/*!\file RheologyBbarAbsGradientx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./RheologyBbarAbsGradientx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/Inputs/DatasetInput.h"
+
+void RheologyBbarAbsGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		J+=RheologyBbarAbsGradient(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble RheologyBbarAbsGradient(Element* element){
+
+	int         domaintype,numcomponents;
+	IssmDouble  Jelem=0.;
+	IssmDouble  misfit,Jdet;
+	IssmDouble  dp[2],weight;
+	IssmDouble* xyz_list      = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnBase()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn basal element*/
+	Element* basalelement = element->SpawnBasalElement(true);
+
+	/* Get node coordinates*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	DatasetInput* weights_input=basalelement->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* rheologyb_input=basalelement->GetInput(MaterialsRheologyBbarEnum);                  _assert_(rheologyb_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,RheologyBbarAbsGradientEnum);
+		rheologyb_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+
+		/*Tikhonov regularization: J = 1/2 ((dp/dx)^2 + (dp/dy)^2) */ 
+		Jelem+=weight*1/2*(dp[0]*dp[0] + dp[1]*dp[1])*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  RheologyBbarAbsGradientx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _RHEOLOGYBBARGRADIENTX_H
+#define _RHEOLOGYBBARGRADIENTX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void RheologyBbarAbsGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble RheologyBbarAbsGradient(Element* element);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Scotchx/Scotchx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Scotchx/Scotchx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Scotchx/Scotchx.cpp	(revision 27955)
@@ -0,0 +1,344 @@
+/* Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS
+**
+** This file is part of the Scotch software package for static mapping,
+** graph partitioning and sparse matrix ordering.
+**
+** This software is governed by the CeCILL-C license under French law
+** and abiding by the rules of distribution of free software. You can
+** use, modify and/or redistribute the software under the terms of the
+** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
+** URL: "http://www.cecill.info".
+** 
+** As a counterpart to the access to the source code and 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 have only limited
+** liability.
+** 
+** In this respect, the user's attention is drawn to the risks associated
+** with loading, using, modifying and/or developing or reproducing the
+** software by the user in light of its specific status of free software,
+** that may mean that it is complicated to manipulate, and that also
+** therefore means that it is reserved for developers and experienced
+** professionals having in-depth computer knowledge. Users are therefore
+** encouraged to load and test the software's suitability 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 as regards security.
+** 
+** The fact that you are presently reading this means that you have had
+** knowledge of the CeCILL-C license and that you accept its terms.
+*/
+/************************************************************/
+/**                                                        **/
+/**   NAME       : gmap.c                                  **/
+/**                                                        **/
+/**   AUTHOR     : Francois PELLEGRINI                     **/
+/**                                                        **/
+/**   FUNCTION   : Part of a graph mapping software.       **/
+/**                This module contains the main function. **/
+/**                                                        **/
+/**   DATES      : # Version 0.0  : from : 05 jan 1993     **/
+/**                                 to     12 may 1993     **/
+/**                # Version 1.1  : from : 15 oct 1993     **/
+/**                                 to     15 oct 1993     **/
+/**                # Version 1.3  : from : 06 apr 1994     **/
+/**                                 to     18 may 1994     **/
+/**                # Version 2.0  : from : 06 jun 1994     **/
+/**                                 to     17 nov 1994     **/
+/**                # Version 2.1  : from : 07 apr 1995     **/
+/**                                 to     18 jun 1995     **/
+/**                # Version 3.0  : from : 01 jul 1995     **/
+/**                                 to     02 oct 1995     **/
+/**                # Version 3.1  : from : 07 nov 1995     **/
+/**                                 to     25 apr 1996     **/
+/**                # Version 3.2  : from : 24 sep 1996     **/
+/**                                 to     26 may 1998     **/
+/**                # Version 3.3  : from : 19 oct 1998     **/
+/**                                 to   : 30 mar 1999     **/
+/**                # Version 3.4  : from : 03 feb 2000     **/
+/**                                 to   : 03 feb 2000     **/
+/**                # Version 4.0  : from : 16 jan 2004     **/
+/**                                 to   : 27 dec 2004     **/
+/**                # Version 5.0  : from : 23 dec 2007     **/
+/**                                 to   : 18 jun 2008     **/
+/**                                                        **/
+/************************************************************/
+
+#include "./Scotchx.h"
+
+int
+gmapx (
+  int                 (**pmaptabi)[2],
+  int                 argcm,
+  char                *argvm[],
+  int                 nvi,
+  int                 ne2i,
+  int                 *ir,
+  int                 *jc,
+  int                 *vli,
+  int                 *vwi,
+  int                 *ewi,
+  char                archtyp[],
+  int                 nai,
+  int                 *api)
+{ 
+#ifdef _HAVE_SCOTCH_ //only works if Scotch library has been compiled in.
+
+  SCOTCH_Graph        grafdat;                    /* Source graph            */
+  SCOTCH_Num          grafflag;                   /* Source graph properties */
+  SCOTCH_Arch         archdat;                    /* Target architecture     */
+  SCOTCH_Strat        stradat;                    /* Mapping strategy        */
+  SCOTCH_Mapping      mapdat;                     /* Mapping data            */
+  Clock               runtime[2];                 /* Timing variables        */
+  SCOTCH_Num          nvert =0;
+  SCOTCH_Num          nedge2=0;
+  SCOTCH_Num*         adjir  =NULL;
+  SCOTCH_Num*         adjjc  =NULL;
+  SCOTCH_Num*         vertlab=NULL;
+  SCOTCH_Num*         vertwgt=NULL;
+  SCOTCH_Num*         edgewgt=NULL;
+  SCOTCH_Num          napar =0;
+  SCOTCH_Num*         archpar=NULL;
+  SCOTCH_Num          (*maptab)[2]=NULL;
+  int                 (*maptabi)[2]=NULL;
+  int                 flagval;
+  int                 i,j,k;
+
+/*  reset static variables from previous runs (jes, 4/27/10)  */
+
+  C_partNbr = 2;        /* Default number of parts     */
+  C_paraNum = 0;        /* Number of parameters        */
+  C_paraNbr = 0;        /* No parameters for mapping   */
+  C_fileNum = 0;        /* Number of file in arg list  */
+  C_fileNbr = 4;        /* Number of files for mapping */
+  for (i=0; i<C_FILENBR; i++) {
+    C_fileTab[i].name = "-";
+    C_fileTab[i].pntr = NULL;
+    if (i < 2)
+      C_fileTab[i].mode = "r";
+    else
+      C_fileTab[i].mode = "w";
+  }
+
+/*  convert input arguments to scotch data types  */
+
+  nvert =(SCOTCH_Num)nvi;
+  nedge2=(SCOTCH_Num)ne2i;
+
+  if (ir && jc) {
+    adjir = (SCOTCH_Num *) malloc(nedge2*sizeof(SCOTCH_Num));
+    for (i=0; i<nedge2; i++)
+      adjir[i]=(SCOTCH_Num)ir[i];
+    adjjc = (SCOTCH_Num *) malloc((nvert+1)*sizeof(SCOTCH_Num));
+    for (i=0; i<(nvert+1); i++)
+      adjjc[i]=(SCOTCH_Num)jc[i];
+  }
+
+  if (vli) {
+    vertlab = (SCOTCH_Num *) malloc(nvert*sizeof(SCOTCH_Num));
+    for (i=0; i<nvert; i++)
+      vertlab[i]=(SCOTCH_Num)vli[i];
+  }
+
+  if (vwi) {
+    vertwgt = (SCOTCH_Num *) malloc(nvert*sizeof(SCOTCH_Num));
+    for (i=0; i<nvert; i++)
+      vertwgt[i]=(SCOTCH_Num)vwi[i];
+  }
+
+  if (ewi) {
+    edgewgt = (SCOTCH_Num *) malloc(nedge2*sizeof(SCOTCH_Num));
+    for (i=0; i<nedge2; i++)
+      edgewgt[i]=(SCOTCH_Num)ewi[i];
+  }
+
+  napar =(SCOTCH_Num)nai;
+
+  if (api) {
+    archpar = (SCOTCH_Num *) malloc(nai*sizeof(SCOTCH_Num));
+    for (i=0; i<nai; i++)
+      archpar[i]=(SCOTCH_Num)api[i];
+  }
+
+/*  start scotch processing  */
+
+  flagval = C_FLAGNONE;                           /* Default behavior */
+  i = strlen (argvm[0]);
+  if ((i >= 5) && (strncmp (argvm[0] + i - 5, "gpart", 5) == 0)) {
+    flagval |= C_FLAGPART;
+    C_paraNbr = 1;                                /* One more parameter       */
+    C_fileNbr = 3;                                /* One less file to provide */
+    errorProg ("gpart");
+  }
+  else
+    errorProg ("gmap");
+
+  intRandResetStatic ();
+  intRandInit ();
+
+  if ((argcm >= 2) && (argvm[1][0] == '?')) {       /* If need for help */
+    usagePrint (stdout, C_usageList);
+    return     (0);
+  }
+
+  grafflag = 0;                                   /* Use vertex and edge weights  */
+  SCOTCH_stratInit (&stradat);                    /* Set default mapping strategy */
+
+  for (i = 0; i < C_FILENBR; i ++)                /* Set default stream pointers */
+    C_fileTab[i].pntr = (C_fileTab[i].mode[0] == 'r') ? stdin : stdout;
+  for (i = 1; i < argcm; i ++) {                   /* Loop for all option codes                        */
+    if ((argvm[i][0] != '-') || (argvm[i][1] == '\0') || (argvm[i][1] == '.')) { /* If found a file name */
+      if (C_paraNum < C_paraNbr) {                /* If number of parameters not reached              */
+        if ((C_partNbr = atoi (argvm[i])) < 1)     /* Get the number of parts                          */
+          errorPrint ("main: invalid number of parts (\"%s\")", argvm[i]);
+        C_paraNum ++;
+        continue;                                 /* Process the other parameters */
+      }
+      if (C_fileNum < C_fileNbr)                  /* A file name has been given */
+        C_fileTab[C_fileNum ++].name = argvm[i];
+      else
+        errorPrint ("main: too many file names given");
+    }
+    else {                                        /* If found an option name */
+      switch (argvm[i][1]) {
+        case 'H' :                                /* Give the usage message */
+        case 'h' :
+          usagePrint (stdout, C_usageList);
+          return     (0);
+        case 'M' :
+        case 'm' :
+          SCOTCH_stratExit (&stradat);
+          SCOTCH_stratInit (&stradat);
+          SCOTCH_stratGraphMap (&stradat, &argvm[i][2]);
+          break;
+        case 'S' :
+        case 's' :                                /* Source graph parameters */
+          for (j = 2; argvm[i][j] != '\0'; j ++) {
+            switch (argvm[i][j]) {
+              case 'E' :
+              case 'e' :
+                grafflag |= 2;                    /* Do not load edge weights */
+                break;
+              case 'V' :
+              case 'v' :
+                grafflag |= 1;                    /* Do not load vertex weights */
+                break;
+              default :
+                errorPrint ("main: invalid source graph option (\"%c\")", argvm[i][j]);
+            }
+          }
+          break;
+        case 'V' :
+          fprintf (stderr, "gmap/gpart, version %s - F. Pellegrini\n", SCOTCH_VERSION);
+          fprintf (stderr, "Copyright 2004,2007,2008 ENSEIRB, INRIA & CNRS, France\n");
+          fprintf (stderr, "This software is libre/free software under CeCILL-C -- see the user's manual for more information\n");
+          return  (0);
+        case 'v' :                                /* Output control info */
+          for (j = 2; argvm[i][j] != '\0'; j ++) {
+            switch (argvm[i][j]) {
+              case 'M' :
+              case 'm' :
+                flagval |= C_FLAGVERBMAP;
+                break;
+              case 'S' :
+              case 's' :
+                flagval |= C_FLAGVERBSTR;
+                break;
+              case 'T' :
+              case 't' :
+                flagval |= C_FLAGVERBTIM;
+                break;
+              default :
+                errorPrint ("main: unprocessed parameter \"%c\" in \"%s\"", argvm[i][j], argvm[i]);
+            }
+          }
+          break;
+        default :
+          errorPrint ("main: unprocessed option (\"%s\")", argvm[i]);
+      }
+    }
+  }
+  if ((flagval && C_FLAGPART) != 0) {              /* If program run as the partitioner            */
+    C_fileTab[3].name = C_fileTab[2].name;        /* Put provided file names at their right place */
+    C_fileTab[2].name = C_fileTab[1].name;
+    C_fileTab[1].name = "-";
+  }
+
+  fileBlockOpen (C_fileTab, C_FILENBR);           /* Open all files */
+
+  clockInit  (&runtime[0]);
+  clockStart (&runtime[0]);
+
+  SCOTCH_graphInit (&grafdat);                    /* Create graph structure         */
+  SCOTCH_graphLoad (&grafdat, C_filepntrsrcinp, -1, grafflag, nvert, nedge2, adjir, adjjc, vertlab, vertwgt, edgewgt); /* Read source graph */
+
+  SCOTCH_archInit (&archdat);                     /* Create architecture structure          */
+  if ((flagval & C_FLAGPART) != 0)                /* If program run as the partitioner      */
+    SCOTCH_archCmplt (&archdat, C_partNbr);       /* Create a complete graph of proper size */
+  else
+    SCOTCH_archLoad (&archdat, C_filepntrtgtinp, archtyp, napar, archpar); /* Read target architecture */
+
+  clockStop  (&runtime[0]);                       /* Get input time */
+  clockInit  (&runtime[1]);
+  clockStart (&runtime[1]);
+
+  SCOTCH_graphMapInit    (&grafdat, &mapdat, &archdat, NULL);
+  SCOTCH_graphMapCompute (&grafdat, &mapdat, &stradat); /* Perform mapping */
+
+  clockStop  (&runtime[1]);                       /* Get computation time */
+  clockStart (&runtime[0]);
+
+  SCOTCH_graphMapSave (&nvert, &maptab, &grafdat, &mapdat, C_filepntrmapout); /* Write mapping */
+
+/*  convert output arguments from scotch data types  */
+
+  if (maptab) {
+    *pmaptabi = (int (*)[2]) malloc(nvert*2*sizeof(int));
+    maptabi  = *pmaptabi;
+    for (j=0; j<2; j++)
+      for (i=0; i<nvert; i++)
+          maptabi[i][j]=(int)maptab[i][j];
+    free(maptab);
+  }
+
+  clockStop (&runtime[0]);                        /* Get output time */
+
+  if (flagval && C_FLAGVERBSTR) {
+    fprintf (C_filepntrlogout, "S\tStrat=");
+    SCOTCH_stratSave (&stradat, C_filepntrlogout);
+    putc ('\n', C_filepntrlogout);
+  }
+  if (flagval && C_FLAGVERBTIM) {
+    fprintf (C_filepntrlogout, "T\tMapping\t\t%g\nT\tI/O\t\t%g\nT\tTotal\t\t%g\n",
+             (double) clockVal (&runtime[1]),
+             (double) clockVal (&runtime[0]),
+             (double) clockVal (&runtime[0]) +
+             (double) clockVal (&runtime[1]));
+  }
+  if (flagval && C_FLAGVERBMAP)
+    SCOTCH_graphMapView (&grafdat, &mapdat, C_filepntrlogout);
+
+  fileBlockClose (C_fileTab, C_FILENBR);          /* Always close explicitely to end eventual (un)compression tasks */
+
+  SCOTCH_graphMapExit (&grafdat, &mapdat);
+  SCOTCH_graphExit    (&grafdat);
+  SCOTCH_stratExit    (&stradat);
+  SCOTCH_archExit     (&archdat);
+
+  if (archpar) free(archpar);
+  if (edgewgt) free(edgewgt);
+  if (vertwgt) free(vertwgt);
+  if (vertlab) free(vertlab);
+  if (adjjc) free(adjjc);
+  if (adjir) free(adjir);
+
+#ifdef COMMON_PTHREAD
+  pthread_exit ((void *) 0);                      /* Allow potential (un)compression tasks to complete */
+#endif /* COMMON_PTHREAD */
+  return (0);
+
+#else //#ifdef _HAVE_SCOTCH_ 
+  return(0);
+#endif
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Scotchx/Scotchx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Scotchx/Scotchx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Scotchx/Scotchx.h	(revision 27955)
@@ -0,0 +1,74 @@
+/*!\file:  Scotchxx.h
+ * \brief header file for Scotch partitioner
+ */
+
+#ifndef _SCOTCHX_H
+#define _SCOTCHX_H
+
+#undef __FUNCT__
+#define __FUNCT__  "Scotchx"
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include "../../classes/classes.h"
+
+#ifdef _HAVE_SCOTCH_ //only works if scotch library has been compiled in.
+
+	#define GMAP
+
+	#ifdef _PETSC_SCOTCH_
+		#include "scotch_module.h"
+		#include "scotch_common.h"
+		#include "scotch_gmap.h"
+	#endif
+
+	#ifdef _HAVE_MPI_
+		#include "ptscotch.h"
+	#else
+		#include "scotch.h"
+	#endif
+
+	/*
+	**  The static variables.
+	*/
+
+	static int                  C_partNbr = 2;        /* Default number of parts     */
+	static int                  C_paraNum = 0;        /* Number of parameters        */
+	static int                  C_paraNbr = 0;        /* No parameters for mapping   */
+	static int                  C_fileNum = 0;        /* Number of file in arg list  */
+	static int                  C_fileNbr = 4;        /* Number of files for mapping */
+	static File                 C_fileTab[C_FILENBR] = { /* File array               */
+								  { "-", NULL, "r" },
+								  { "-", NULL, "r" },
+								  { "-", NULL, "w" },
+								  { "-", NULL, "w" } };
+
+	static const char *         C_usageList[] = {     /* Usage */
+	  "gmap [<input source file> [<input target file> [<output mapping file> [<output log file>]]]] <options>",
+	  "gpart [<nparts>] [<input source file> [<output mapping file> [<output log file>]]] <options>",
+	  "  -h         : Display this help",
+	  "  -m<strat>  : Set mapping strategy (see user's manual)",
+	  "  -s<obj>    : Force unity weights on <obj>:",
+	  "                 e  : edges",
+	  "                 v  : vertices",
+	  "  -V         : Print program version and copyright",
+	  "  -v<verb>   : Set verbose mode to <verb>:",
+	  "                 m  : mapping information",
+	  "                 s  : strategy information",
+	  "                 t  : timing information",
+	  "",
+	  "See default strategy with option '-vs'",
+	  NULL };
+
+#endif
+
+/* local prototypes: */
+int gmapx ( int (**pmaptabi)[2], int argcm, char *argvm[], int nvi, int ne2i, int *ir, int *jc, int *vli, int *vwi, int *ewi, char archtyp[], int nai, int *api);
+
+#endif  /* _SCOTCHX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp	(revision 27955)
@@ -0,0 +1,203 @@
+/*!\file GetMaskOfIceVerticesLSMx 
+ * \brief: Return a mask for all the vertices determining whether the node should be active or not. 
+ */
+
+#include "./SetActiveNodesLSMx.h"
+
+#include "../../classes/classes.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../modules.h"
+
+void SetActiveNodesLSMx(FemModel* femmodel,bool ishydrology,bool isdebris){/*{{{*/
+	/* activate/deactivate nodes for levelset method according to IceMaskNodeActivation */
+
+	/*Determine which node activation mask to pull from*/
+	int nodeactivationmask = IceMaskNodeActivationEnum;
+	if(ishydrology) nodeactivationmask = HydrologyMaskNodeActivationEnum;
+	if(isdebris) nodeactivationmask = DebrisMaskNodeActivationEnum;
+
+
+	for(Object* & object : femmodel->elements->objects){
+		Element    *element  = xDynamicCast<Element*>(object);
+		int         numnodes = element->GetNumberOfNodes();
+		IssmDouble *mask     = xNew<IssmDouble>(numnodes);
+
+		/*include switch for elements with multiple different sets of nodes*/
+		switch(element->GetElementType()){
+			case P1P1GLSEnum: case P1P1Enum:/* added to allow P1-P1 GLS */
+			case MINIEnum:case MINIcondensedEnum:
+			case TaylorHoodEnum:case XTaylorHoodEnum:case LATaylorHoodEnum:
+			case CrouzeixRaviartEnum:case LACrouzeixRaviartEnum:case OneLayerP4zEnum:{
+				Input* input=element->GetInput(nodeactivationmask);
+				if(!input) _error_("Input " << EnumToStringx(nodeactivationmask) << " not found in element");
+
+				/* Start looping on the number of vertices: */
+				Gauss* gauss=element->NewGauss();
+				for(int iv=0;iv<element->NumberofNodesVelocity();iv++){
+					gauss->GaussNode(element->VelocityInterpolation(),iv);
+					input->GetInputValue(&mask[iv],gauss);
+				}
+				for(int iv=0;iv<element->NumberofNodesPressure();iv++){
+					gauss->GaussNode(element->PressureInterpolation(),iv);
+					input->GetInputValue(&mask[element->NumberofNodesVelocity()+iv],gauss);
+				}
+				delete gauss;
+				break;
+			}
+			default:
+				element->GetInputListOnNodes(&mask[0],nodeactivationmask);
+				break;
+		}
+
+		for(int in=0;in<numnodes;in++){
+			Node* node=element->GetNode(in);
+			if(mask[in]==1.) node->Activate();
+			else             node->Deactivate();
+		}
+		xDelete<IssmDouble>(mask);
+	}
+}/*}}}*/
+
+void GetMaskOfIceVerticesLSMx0(FemModel* femmodel,bool ishydrology,bool isdebris){/*{{{*/
+
+	/*Determine which node activation to construct*/
+	int nodeactivationmask = IceMaskNodeActivationEnum;
+	if(ishydrology) nodeactivationmask = HydrologyMaskNodeActivationEnum;
+	if(isdebris) nodeactivationmask = DebrisMaskNodeActivationEnum;
+
+	/*Initialize vector with number of vertices*/
+	int numvertices=femmodel->vertices->NumberOfVertices();
+	if(numvertices==0)  return;
+
+	int numvert_local = femmodel->vertices->NumberOfVerticesLocal();
+	Vector<IssmDouble>* vec_mask_ice=new Vector<IssmDouble>(numvert_local,numvertices);
+
+	/*Fill vector with values: */
+	if(ishydrology){
+		for(Object* & object : femmodel->elements->objects){
+			Element* element=xDynamicCast<Element*>(object);
+			if(element->IsIceInElement() && element->IsGrounded()){
+				int nbv = element->GetNumberOfVertices();
+				for(int iv=0;iv<nbv;iv++){
+					vec_mask_ice->SetValue(element->vertices[iv]->Pid(),1.,INS_VAL);
+				}
+			}
+		}
+	}else if(isdebris){
+		for(Object* & object : femmodel->elements->objects){
+                        Element* element=xDynamicCast<Element*>(object);
+                        if(element->IsIceInElement() && !element->IsAllMinThicknessInElement()){
+                                int nbv = element->GetNumberOfVertices();
+                                for(int iv=0;iv<nbv;iv++){
+                                        vec_mask_ice->SetValue(element->vertices[iv]->Pid(),1.,INS_VAL);
+                                }
+                        }
+                }
+	}else{
+		for(Object* & object : femmodel->elements->objects){
+			Element* element=xDynamicCast<Element*>(object);
+			if(element->IsIceInElement()){
+				int nbv = element->GetNumberOfVertices();
+				for(int iv=0;iv<nbv;iv++){
+					vec_mask_ice->SetValue(element->vertices[iv]->Pid(),1.,INS_VAL);
+				}
+			}
+		}
+	}
+
+	/*Assemble vector and serialize */
+	vec_mask_ice->Assemble();
+	InputUpdateFromVectorx(femmodel,vec_mask_ice,nodeactivationmask,VertexPIdEnum);
+	delete vec_mask_ice;
+}/*}}}*/
+void GetMaskOfIceVerticesLSMx(FemModel* femmodel,bool ishydrology,bool isdebris){/*{{{*/
+
+	/*Set configuration to levelset*/
+	if(ishydrology){
+		/*We may not be running with ismovingfront so we can't assume LevelsetAnalysis is active*/
+		int hydrology_model;
+		femmodel->parameters->FindParam(&hydrology_model,HydrologyModelEnum);
+		if(hydrology_model==HydrologyshaktiEnum){
+			femmodel->SetCurrentConfiguration(HydrologyShaktiAnalysisEnum);
+		}
+		else if(hydrology_model==HydrologyGlaDSEnum){
+			femmodel->SetCurrentConfiguration(HydrologyGlaDSAnalysisEnum);
+		}
+		else{
+			_error_("hydrology model not supported yet");
+		}
+	}else if(isdebris){
+		femmodel->SetCurrentConfiguration(DebrisAnalysisEnum);
+	}else{
+		femmodel->SetCurrentConfiguration(LevelsetAnalysisEnum);
+	}
+
+	/*Determine which node activation to construct*/
+	int nodeactivationmask = IceMaskNodeActivationEnum;
+	if(ishydrology) nodeactivationmask = HydrologyMaskNodeActivationEnum;
+	if(isdebris) nodeactivationmask = DebrisMaskNodeActivationEnum;
+
+	/*Create vector on gset*/
+	int gsize              = femmodel->nodes->NumberOfDofs(GsetEnum);
+	int glocalsize_masters = femmodel->nodes->NumberOfDofsLocal(GsetEnum);
+	if(gsize==0)  return;
+	Vector<IssmDouble>* vec_mask_ice=new Vector<IssmDouble>(glocalsize_masters,gsize);
+
+	/*Fill vector with values: */
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+
+		if(ishydrology){
+			if(element->IsIceInElement() && element->IsGrounded()){
+				int numnodes = element->GetNumberOfNodes();
+				int  gsize_local=GetNumberOfDofs(element->nodes,numnodes,GsetEnum,NoneEnum);
+				int* glist_local=GetGlobalDofList(element->nodes,numnodes,GsetEnum,NoneEnum);
+				IssmDouble* ones = xNew<IssmDouble>(gsize_local);
+				for(int n=0;n<gsize_local;n++) ones[n] = 1.;
+				vec_mask_ice->SetValues(gsize_local,glist_local,ones,INS_VAL);
+				xDelete<IssmDouble>(ones);
+				xDelete<int>(glist_local);
+			}
+		}else if(isdebris){
+			if(element->IsIceInElement() && !element->IsAllMinThicknessInElement()){
+                                int numnodes = element->GetNumberOfNodes();
+                                int  gsize_local=GetNumberOfDofs(element->nodes,numnodes,GsetEnum,NoneEnum);
+                                int* glist_local=GetGlobalDofList(element->nodes,numnodes,GsetEnum,NoneEnum);
+                                IssmDouble* ones = xNew<IssmDouble>(gsize_local);
+                                for(int n=0;n<gsize_local;n++) ones[n] = 1.;
+                                vec_mask_ice->SetValues(gsize_local,glist_local,ones,INS_VAL);
+                                xDelete<IssmDouble>(ones);
+                                xDelete<int>(glist_local);
+			}
+		}else{
+			if(element->IsIceInElement()){
+				int numnodes = element->GetNumberOfNodes();
+				int  gsize_local=GetNumberOfDofs(element->nodes,numnodes,GsetEnum,NoneEnum);
+				int* glist_local=GetGlobalDofList(element->nodes,numnodes,GsetEnum,NoneEnum);
+				IssmDouble* ones = xNew<IssmDouble>(gsize_local);
+				for(int n=0;n<gsize_local;n++) ones[n] = 1.;
+				vec_mask_ice->SetValues(gsize_local,glist_local,ones,INS_VAL);
+				xDelete<IssmDouble>(ones);
+				xDelete<int>(glist_local);
+			}
+		}
+	}
+
+	/*Assemble vector and serialize */
+	vec_mask_ice->Assemble();
+
+	/*Get local vector with masters and slaves*/
+	IssmDouble *local_ug = NULL;
+	femmodel->GetLocalVectorWithClonesGset(&local_ug,vec_mask_ice);
+	delete vec_mask_ice;
+
+	/*Now update inputs (analysis specific)*/
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->InputUpdateFromSolutionOneDof(local_ug,nodeactivationmask);
+	}
+
+	/*cleanup and return*/
+	xDelete<IssmDouble>(local_ug);
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  SetActiveNodesLSMx.h
+ * \brief header file for updating single point constraints  for next time step
+ */ 
+
+#ifndef _SETACTIVENODESLSMX_H
+#define _SETACTIVENODESLSMX_H
+
+#include "../../classes/classes.h"
+
+void SetActiveNodesLSMx(FemModel* femmodel,bool ishydrology=false,bool isdebris=false);
+void GetMaskOfIceVerticesLSMx0(FemModel* femmodel,bool ishydrology=false,bool isdebris=false);
+void GetMaskOfIceVerticesLSMx(FemModel* femmodel,bool ishydrology=false,bool isdebris=false);
+#endif  /* _SETACTIVENODESLSMX_H*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.cpp	(revision 27955)
@@ -0,0 +1,74 @@
+/*!\file SetControlInputsFromVectorx
+ * \brief retrieve vector from inputs in elements
+ */
+
+#include "./SetControlInputsFromVectorx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void SetControlInputsFromVectorx(FemModel* femmodel,IssmDouble* vector){
+
+	int  num_controls;
+	int* control_type = NULL;
+	int* M = NULL;
+	int* N = NULL;
+
+	/*Retrieve some parameters*/
+	femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	femmodel->parameters->FindParam(&control_type,NULL,InversionControlParametersEnum);
+	femmodel->parameters->FindParam(&M,NULL,ControlInputSizeMEnum);
+	femmodel->parameters->FindParam(&N,NULL,ControlInputSizeNEnum);
+
+	int offset = 0;
+	for(int i=0;i<num_controls;i++){
+		/*Is the control a Param?*/
+		if(IsParamEnum(control_type[i])){
+			femmodel->parameters->SetControlFromVector(vector,control_type[i],M[i],N[i],offset);
+		}
+		else if(IsInputEnum(control_type[i])){
+			for(Object* & object : femmodel->elements->objects){
+				Element* element=xDynamicCast<Element*>(object);
+				element->SetControlInputsFromVector(vector,control_type[i],i,offset,M[i],N[i]);
+			}
+		}
+		else{
+			_error_("not supported yet");
+		}
+		offset += M[i]*N[i]; 
+	}
+
+	xDelete<int>(control_type);
+	xDelete<int>(M);
+	xDelete<int>(N);
+}
+
+void SetControlInputsFromVectorx(FemModel* femmodel,Vector<IssmDouble>* vector){
+
+	IssmDouble* serial_vector=vector->ToMPISerial();
+	SetControlInputsFromVectorx(femmodel,serial_vector);
+	xDelete<IssmDouble>(serial_vector);
+}
+#ifdef _HAVE_AD_
+void SetControlInputsFromVectorx(FemModel* femmodel,IssmPDouble* vector){
+
+	/*Get total size and recast*/
+	int  num_controls;
+	int* M = NULL;
+	int* N = NULL;
+	femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
+	femmodel->parameters->FindParam(&M,NULL,ControlInputSizeMEnum);
+	femmodel->parameters->FindParam(&N,NULL,ControlInputSizeNEnum);
+
+	int size = 0;
+	for(int i=0;i<num_controls;i++) size += M[i]*N[i]; 
+
+	IssmDouble* serial_vector=xNew<IssmDouble>(size);
+	for(int i=0;i<size;i++) serial_vector[i] = reCast<IssmDouble>(vector[i]);
+
+	SetControlInputsFromVectorx(femmodel,serial_vector);
+
+	xDelete<IssmDouble>(serial_vector);
+	xDelete<int>(M);
+	xDelete<int>(N);
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.h	(revision 27955)
@@ -0,0 +1,17 @@
+/*!\file:  SetControlInputsFromVectorx.h
+ */ 
+
+#ifndef _SETCONTROLINPUTSXFROMVECTOR_H
+#define _SETCONTROLINPUTSXFROMVECTOR_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void SetControlInputsFromVectorx(FemModel* femmodel,Vector<IssmDouble>* vector);
+void SetControlInputsFromVectorx(FemModel* femmodel,IssmDouble* vector);
+
+#ifdef _HAVE_AD_
+void SetControlInputsFromVectorx(FemModel* femmodel,IssmPDouble* vector);
+#endif
+
+#endif 
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Shp2Kmlx/Shp2Kmlx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Shp2Kmlx/Shp2Kmlx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Shp2Kmlx/Shp2Kmlx.cpp	(revision 27955)
@@ -0,0 +1,594 @@
+/*!\file Shp2Kmlx
+ * \brief shp to kml conversion routines.
+ */
+
+#include "./Shp2Kmlx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../kml/kmlobjects.h"
+
+int Shp2Kmlx(char* filshp,char* filkml,int sgn){
+
+	#ifdef _HAVE_SHAPELIB_ //only works if Shapelib library has been compiled in.
+
+	double  cm,sp;
+	Xy2lldef(&cm,&sp,sgn);
+
+	return(Shp2Kmlx(filshp,filkml,sgn,cm,sp));
+
+	#else //ifdef _HAVE_SHAPELIB_
+	return 0;
+	#endif
+}
+
+int Shp2Kmlx(char* filshp,char* filkml,int sgn,double cm,double sp){
+
+	#ifdef _HAVE_SHAPELIB_ //only works if Shapelib library has been compiled in.
+
+	int     i,j,k,iret=0;
+	int     lwidth=1;
+	double  popac=0.50;
+	int     nshape,ncoord;
+	double  cpsum;
+	int     *pstype = NULL, *pnpart=NULL,**ppstrt=NULL,**pptype=NULL,*pnvert=NULL;
+	double **pshapx = NULL,**pshapy=NULL,**pshapz=NULL,**pshapm=NULL;
+	double  *lat    = NULL, *lon=NULL;
+
+	SHPHandle   hSHP;
+	int     nShapeType, nEntities, iPart, bValidate = 0,nInvalidCount=0;
+	const char  *pszPlus;
+	double  adfMinBound[4], adfMaxBound[4];
+
+	char    indent[81]="";
+	KML_File          *kfile  = NULL;
+	KML_Document      *kdoc   = NULL;
+	KML_Style         *kstyle = NULL;
+	KML_LineStyle     *klsty  = NULL;
+	KML_PolyStyle     *kpsty  = NULL;
+	KML_Folder        *kfold  = NULL;
+	KML_Placemark     *kplace = NULL;
+	KML_MultiGeometry *kmulti = NULL;
+	KML_Polygon       *kpoly  = NULL;
+	KML_LinearRing    *kring  = NULL;
+	KML_LineString    *kline  = NULL;
+	KML_Point         *kpoint = NULL;
+	FILE              *fid    = NULL;
+
+	clock_t clock0,clock1;
+	time_t  time0, time1;
+
+	clock0=clock();
+	time0 =time(NULL);
+	_printf0_("\nShp2Kmlx Module -- " << ctime(&time0));
+
+/*  note that much of the following code is taken from shpdump.c in shapelib.  */
+
+/*  open shp/shx files  */
+
+	hSHP = SHPOpen( filshp, "rb" );
+	if (!hSHP) _error_("Error opening shp/shx files.");
+
+/*  read header and print out file bounds  */
+
+	SHPGetInfo( hSHP, &nEntities, &nShapeType, adfMinBound, adfMaxBound );
+
+	printf( "Shapefile Type: %s   # of Shapes: %d\n\n",
+			SHPTypeName( nShapeType ), nEntities );
+
+	printf( "File Bounds: (%12.3f,%12.3f,%g,%g)\n"
+			"         to  (%12.3f,%12.3f,%g,%g)\n",
+			adfMinBound[0],
+			adfMinBound[1],
+			adfMinBound[2],
+			adfMinBound[3],
+			adfMaxBound[0],
+			adfMaxBound[1],
+			adfMaxBound[2],
+			adfMaxBound[3] );
+
+	nshape=nEntities;
+	pstype=xNew<int>(nshape);
+	pnpart=xNew<int>(nshape);
+	ppstrt=xNew<int*>(nshape);
+	pptype=xNew<int*>(nshape);
+	pnvert=xNew<int>(nshape);
+	pshapx=xNew<double*>(nshape);
+	pshapy=xNew<double*>(nshape);
+	pshapz=xNew<double*>(nshape);
+	pshapm=xNew<double*>(nshape);
+
+	/* loop over the list of shapes  */
+	for(i=0;i<nEntities;i++ ){
+		SHPObject   *psShape;
+
+	psShape = SHPReadObject( hSHP, i );
+
+	printf( "\nShape:%d (%s)  nVertices=%d, nParts=%d\n"
+				"  Bounds:(%12.3f,%12.3f, %g, %g)\n"
+				"      to (%12.3f,%12.3f, %g, %g)\n",
+			i, SHPTypeName(psShape->nSHPType),
+				psShape->nVertices, psShape->nParts,
+				psShape->dfXMin, psShape->dfYMin,
+				psShape->dfZMin, psShape->dfMMin,
+				psShape->dfXMax, psShape->dfYMax,
+				psShape->dfZMax, psShape->dfMMax );
+
+	pstype[i]=psShape->nSHPType;
+	pnpart[i]=psShape->nParts;
+	if (pnpart[i]) {
+		ppstrt[i]=xNew<int>(pnpart[i]);
+		pptype[i]=xNew<int>(pnpart[i]);
+	}
+	else {
+		ppstrt[i]=NULL;
+		pptype[i]=NULL;
+	}
+	pnvert[i]=psShape->nVertices;
+	if (pnvert[i]) {
+		pshapx[i]=xNew<double>(pnvert[i]);
+		pshapy[i]=xNew<double>(pnvert[i]);
+		pshapz[i]=xNew<double>(pnvert[i]);
+		pshapm[i]=xNew<double>(pnvert[i]);
+	}
+	else {
+		pshapx[i]=NULL;
+		pshapy[i]=NULL;
+		pshapz[i]=NULL;
+		pshapm[i]=NULL;
+	}
+
+	for( j = 0, iPart = 1; j < psShape->nVertices; j++ )
+	{
+			const char  *pszPartType = "";
+
+			if( j == 0 && psShape->nParts > 0 )
+			{
+				pszPartType = SHPPartTypeName( psShape->panPartType[0] );
+				ppstrt[i][0]=psShape->panPartStart[0];
+				pptype[i][0]=psShape->panPartType[0];
+			}
+
+		if( iPart < psShape->nParts
+				&& psShape->panPartStart[iPart] == j )
+		{
+				pszPartType = SHPPartTypeName( psShape->panPartType[iPart] );
+				ppstrt[i][iPart]=psShape->panPartStart[iPart];
+				pptype[i][iPart]=psShape->panPartType[iPart];
+		iPart++;
+		pszPlus = "+";
+		}
+		else
+			pszPlus = " ";
+
+//		printf("   %s (%12.3f,%12.3f, %g, %g) %s \n",
+//				   pszPlus,
+//				   psShape->padfX[j],
+//				   psShape->padfY[j],
+//				   psShape->padfZ[j],
+//				   psShape->padfM[j],
+//				   pszPartType );
+
+		pshapx[i][j]=psShape->padfX[j];
+		pshapy[i][j]=psShape->padfY[j];
+		pshapz[i][j]=psShape->padfZ[j];
+		pshapm[i][j]=psShape->padfM[j];
+	}
+
+		if( bValidate )
+		{
+			int nAltered = SHPRewindObject( hSHP, psShape );
+
+			if( nAltered > 0 )
+			{
+				printf( "  %d rings wound in the wrong direction.\n",
+						nAltered );
+				nInvalidCount++;
+			}
+		}
+
+		SHPDestroyObject( psShape );
+	}
+
+/*  close shp/shx files  */
+
+	SHPClose( hSHP );
+
+/*  construct kml file  */
+
+	kfile =new KML_File();
+	kfile->AddAttrib("xmlns","http://www.opengis.net/kml/2.2");
+
+/*  construct kml document  */
+
+	kdoc  =new KML_Document();
+	sprintf(kdoc->name      ,"Shp2Kmlx Module -- %s",ctime(&time0));
+	kdoc->open      =1;
+
+/*  construct style templates for defaults  */
+
+	klsty =new KML_LineStyle();
+	sprintf(klsty->color     ,"ff000000");
+	sprintf(klsty->colormode ,"normal");
+	klsty->width     =lwidth;
+	kpsty =new KML_PolyStyle();
+	sprintf(kpsty->color     ,"%02xffffff",(int)floor(popac*255+0.5));
+	sprintf(kpsty->colormode ,"random");
+	kstyle=new KML_Style();
+	kstyle->AddAttrib("id","BlackLineRandomPoly");
+	kstyle->line      =klsty;
+	kstyle->poly      =kpsty;
+	(kdoc->style     )->AddObject((Object*)kstyle);
+
+	klsty =new KML_LineStyle();
+	sprintf(klsty->color     ,"ff000000");
+	sprintf(klsty->colormode ,"normal");
+	klsty->width     =lwidth;
+	kpsty =new KML_PolyStyle();
+	sprintf(kpsty->color     ,"00ffffff");
+	sprintf(kpsty->colormode ,"random");
+	kstyle=new KML_Style();
+	kstyle->AddAttrib("id","BlackLineEmptyPoly");
+	kstyle->line      =klsty;
+	kstyle->poly      =kpsty;
+	(kdoc->style     )->AddObject((Object*)kstyle);
+
+	klsty =new KML_LineStyle();
+	sprintf(klsty->color     ,"%02xffffff",(int)floor(popac*255+0.5));
+	sprintf(klsty->colormode ,"random");
+	klsty->width     =lwidth*2;
+	kpsty =new KML_PolyStyle();
+	sprintf(kpsty->color     ,"00ffffff");
+	sprintf(kpsty->colormode ,"random");
+	kstyle=new KML_Style();
+	kstyle->AddAttrib("id","RandomLineEmptyPoly");
+	kstyle->line      =klsty;
+	kstyle->poly      =kpsty;
+	(kdoc->style     )->AddObject((Object*)kstyle);
+
+/*  construct kml folder for shapes  */
+
+	kfold =new KML_Folder();
+	sprintf(kfold->name      ,"Shapefile: %s  Type: %s  nShapes: %d",
+			filshp, SHPTypeName( nShapeType ), nEntities );
+	kfold->open      =1;
+
+/*  loop over the list of shapes  */
+
+	for (i=0; i<nshape; i++) {
+
+/*  null type  */
+
+		if      (pstype[i] == SHPT_NULL) {
+			;
+		}
+
+/*  point types  */
+
+		else if (pstype[i] == SHPT_POINT ||
+			  	 pstype[i] == SHPT_POINTZ ||
+			 	 pstype[i] == SHPT_POINTM) {
+			kplace=new KML_Placemark();
+
+			sprintf(kplace->name      ,"Shape:%d (%s)  nVertices=%d, nParts=%d",
+					i,SHPTypeName(pstype[i]),pnvert[i],pnpart[i]);
+			kplace->visibility=true;
+			sprintf(kplace->styleurl  ,"#RandomLineEmptyPoly");
+
+			if (pnpart[i] > 0)
+				_printf_("Warning -- Shape "<< i << " of type \"" << SHPTypeName( pstype[i] ) << "\" should not have " << pnpart[i] << " > 0 parts.\n\n");
+			if (pnvert[i] > 1)
+				_printf_("Warning -- Shape " << i << " of type \"" << SHPTypeName( pstype[i] ) << "\" should not have " << pnpart[i] << " > 1 vertices.\n\n");
+
+			kpoint=new KML_Point();
+
+			lat=xNew<double>(pnvert[i]);
+			lon=xNew<double>(pnvert[i]);
+			if (sgn) {
+				Xy2llx(lat,lon,pshapx[i],pshapy[i],pnvert[i],sgn,cm,sp);
+			}
+			else  {
+				memcpy(lon,pshapx[i],pnvert[i]*sizeof(double));
+				memcpy(lat,pshapy[i],pnvert[i]*sizeof(double));
+			}
+
+			kpoint->coords[0]=lon      [0];
+			kpoint->coords[1]=lat      [0];
+			kpoint->coords[2]=pshapz[i][0];
+
+			xDelete<double>(lon);
+			xDelete<double>(lat);
+
+			(kplace->geometry  )->AddObject((Object*)kpoint);
+			kpoint=NULL;
+			(kfold ->feature   )->AddObject((Object*)kplace);
+			kplace=NULL;
+		}
+
+/*  polyline types  */
+
+		else if (pstype[i] == SHPT_ARC ||
+				 pstype[i] == SHPT_ARCZ ||
+				 pstype[i] == SHPT_ARCM) {
+			kplace=new KML_Placemark();
+
+			sprintf(kplace->name      ,"Shape:%d (%s)  nVertices=%d, nParts=%d",
+					i,SHPTypeName(pstype[i]),pnvert[i],pnpart[i]);
+			kplace->visibility=true;
+			sprintf(kplace->styleurl  ,"#RandomLineEmptyPoly");
+
+/*  create a multigeometry to hold all the lines  */
+
+			kmulti=new KML_MultiGeometry();
+
+/*  convert to lat/lon, if necessary  */
+
+			lat=xNew<double>(pnvert[i]);
+			lon=xNew<double>(pnvert[i]);
+			if (sgn) {
+				Xy2llx(lat,lon,pshapx[i],pshapy[i],pnvert[i],sgn,cm,sp);
+			}
+			else  {
+				memcpy(lon,pshapx[i],pnvert[i]*sizeof(double));
+				memcpy(lat,pshapy[i],pnvert[i]*sizeof(double));
+			}
+
+/*  loop over the lines  */
+
+			for (j=0; j<pnpart[i]; j++) {
+				kline =new KML_LineString();
+
+				kline->ncoord    =(j<pnpart[i]-1 ? ppstrt[i][j+1]-ppstrt[i][j] : pnvert[i]-ppstrt[i][j]);
+				kline->coords    =xNew<double>(kline->ncoord*3);
+				for (k=0; k<kline->ncoord; k++) {
+					kline->coords[3*k+0]=lon      [ppstrt[i][j]+k];
+					kline->coords[3*k+1]=lat      [ppstrt[i][j]+k];
+					kline->coords[3*k+2]=pshapz[i][ppstrt[i][j]+k];
+				}
+				(kmulti->geometry  )->AddObject((Object*)kline);
+				kline = NULL;
+			}
+
+			xDelete<double>(lon);
+			xDelete<double>(lat);
+
+			(kplace->geometry)->AddObject((Object*)kmulti);
+			kmulti=NULL;
+			(kfold ->feature )->AddObject((Object*)kplace);
+			kplace=NULL;
+		}
+
+/*  polygon types  */
+
+		else if (pstype[i] == SHPT_POLYGON ||
+				 pstype[i] == SHPT_POLYGONZ ||
+				 pstype[i] == SHPT_POLYGONM) {
+
+/*  the shp format specifies that outer rings are cw, while inner rings are ccw.  there
+	may be multiple outer rings and inner rings in any order.  the kml format specifies
+	all rings are ccw (right-hand rule).  there may be only one outer ring with multiple
+	inner rings, and rings are differentiated by keyword.
+
+	at least for now, assume that each cw ring forms a new kml polygon, and each ccw
+	ring forms an inner ring for the most recent outer ring.  a more elaborate solution
+	would be for each inner ring to search in which outer ring it occurs.  */
+
+			kplace=new KML_Placemark();
+
+			sprintf(kplace->name      ,"Shape:%d (%s)  nVertices=%d, nParts=%d",
+					i,SHPTypeName(pstype[i]),pnvert[i],pnpart[i]);
+			kplace->visibility=true;
+			sprintf(kplace->styleurl  ,"#BlackLineRandomPoly");
+
+/*  create a multigeometry to hold all the polygons  */
+
+			kmulti=new KML_MultiGeometry();
+
+/*  convert to lat/lon, if necessary  */
+
+			lat=xNew<double>(pnvert[i]);
+			lon=xNew<double>(pnvert[i]);
+			if (sgn) {
+				Xy2llx(lat,lon,pshapx[i],pshapy[i],pnvert[i],sgn,cm,sp);
+			}
+			else  {
+				memcpy(lon,pshapx[i],pnvert[i]*sizeof(double));
+				memcpy(lat,pshapy[i],pnvert[i]*sizeof(double));
+			}
+
+/*  loop over the polygons  */
+
+			for (j=0; j<pnpart[i]; j++) {
+
+/*  check if polygon is ccw or cw by computing sum of cross products (twice the area)  */
+
+				ncoord=(j<pnpart[i]-1 ? ppstrt[i][j+1]-ppstrt[i][j] : pnvert[i]-ppstrt[i][j]);
+				cpsum =0.;
+
+				for (k=ppstrt[i][j]; k<ppstrt[i][j]+ncoord-1; k++)
+					cpsum +=pshapx[i][k]*pshapy[i][k+1         ]-pshapy[i][k]*pshapx[i][k+1         ];
+				cpsum +=pshapx[i][k]*pshapy[i][ppstrt[i][j]]-pshapy[i][k]*pshapx[i][ppstrt[i][j]];
+
+/*  outer ring (cw) (allow exception for single-part shapes)  */
+
+				if (cpsum < 0 || pnpart[i] == 1) {
+					if (kpoly) {
+						(kmulti->geometry  )->AddObject((Object*)kpoly);
+						kpoly =NULL;
+					}
+
+/*  create a new polygon from the outer ring (reversing cw to ccw)  */
+
+					kpoly =new KML_Polygon();
+					kring =new KML_LinearRing();
+
+					kring->ncoord    =(j<pnpart[i]-1 ? ppstrt[i][j+1]-ppstrt[i][j] : pnvert[i]-ppstrt[i][j]);
+					kring->coords    =xNew<double>(kring->ncoord*3);
+					if (cpsum < 0)
+						for (k=0; k<kring->ncoord; k++) {
+							kring->coords[3*(kring->ncoord-1-k)+0]=lon      [ppstrt[i][j]+k];
+							kring->coords[3*(kring->ncoord-1-k)+1]=lat      [ppstrt[i][j]+k];
+							kring->coords[3*(kring->ncoord-1-k)+2]=pshapz[i][ppstrt[i][j]+k];
+						}
+					else
+						for (k=0; k<kring->ncoord; k++) {
+							kring->coords[3*k+0]=lon      [ppstrt[i][j]+k];
+							kring->coords[3*k+1]=lat      [ppstrt[i][j]+k];
+							kring->coords[3*k+2]=pshapz[i][ppstrt[i][j]+k];
+						}
+
+					(kpoly ->outer     )->AddObject((Object*)kring);
+					kring =NULL;
+				}
+
+/*  inner ring (ccw)  */
+
+				else {
+					if (!kpoly) {
+						_printf_("Warning -- Shape " << i << " of type \"" << SHPTypeName( pstype[i] ) << "\", part " << j << ", expected to be outer loop (cw).\n\n");
+						continue;
+					}
+
+/*  add the inner ring to the current polygon  */
+
+					kring =new KML_LinearRing();
+
+					kring->ncoord    =(j<pnpart[i]-1 ? ppstrt[i][j+1]-ppstrt[i][j] : pnvert[i]-ppstrt[i][j]);
+					kring->coords    =xNew<double>(kring->ncoord*3);
+					for (k=0; k<kring->ncoord; k++) {
+						kring->coords[3*k+0]=lon      [ppstrt[i][j]+k];
+						kring->coords[3*k+1]=lat      [ppstrt[i][j]+k];
+						kring->coords[3*k+2]=pshapz[i][ppstrt[i][j]+k];
+					}
+
+					(kpoly ->inner     )->AddObject((Object*)kring);
+					kring =NULL;
+				}
+			}
+
+			if (kpoly) {
+				(kmulti->geometry  )->AddObject((Object*)kpoly);
+				kpoly =NULL;
+			}
+
+			xDelete<double>(lon);
+			xDelete<double>(lat);
+
+			(kplace->geometry  )->AddObject((Object*)kmulti);
+			kmulti=NULL;
+			(kfold ->feature   )->AddObject((Object*)kplace);
+			kplace=NULL;
+		}
+
+/*  multipoint types  */
+
+		else if (pstype[i] == SHPT_MULTIPOINT ||
+				 pstype[i] == SHPT_MULTIPOINTZ ||
+				 pstype[i] == SHPT_MULTIPOINTM) {
+			kplace=new KML_Placemark();
+
+			sprintf(kplace->name      ,"Shape:%d (%s)  nVertices=%d, nParts=%d",
+					i,SHPTypeName(pstype[i]),pnvert[i],pnpart[i]);
+			kplace->visibility=true;
+			sprintf(kplace->styleurl  ,"#RandomLineEmptyPoly");
+
+			if (pnpart[i] > 0)
+				_printf_("Warning -- Shape " << i << " of type \"" << SHPTypeName( pstype[i] ) << "\" should not have " << pnpart[i] << " > 0 parts.\n\n");
+
+/*  create a multigeometry to hold all the points  */
+
+			kmulti=new KML_MultiGeometry();
+
+/*  convert to lat/lon, if necessary  */
+
+			lat=xNew<double>(pnvert[i]);
+			lon=xNew<double>(pnvert[i]);
+			if (sgn) {
+				Xy2llx(lat,lon,pshapx[i],pshapy[i],pnvert[i],sgn,cm,sp);
+			}
+			else  {
+				memcpy(lon,pshapx[i],pnvert[i]*sizeof(double));
+				memcpy(lat,pshapy[i],pnvert[i]*sizeof(double));
+			}
+
+/*  loop over the points  */
+
+			for (j=0; j<pnvert[i]; j++) {
+				kpoint=new KML_Point();
+
+				kpoint->coords[0]=lon      [j];
+				kpoint->coords[1]=lat      [j];
+				kpoint->coords[2]=pshapz[i][j];
+
+				(kmulti->geometry  )->AddObject((Object*)kpoint);
+				kpoint=NULL;
+			}
+
+			xDelete<double>(lon);
+			xDelete<double>(lat);
+
+			(kplace->geometry  )->AddObject((Object*)kmulti);
+			kmulti=NULL;
+			(kfold ->feature   )->AddObject((Object*)kplace);
+			kplace=NULL;
+		}
+
+/*  multipatch types  */
+
+		else if (pstype[i] == SHPT_MULTIPATCH) {
+			_printf_("Warning -- Shape " << i << " of type \"" << SHPTypeName( pstype[i] ) << "\" will be ignored.\n\n");
+			continue;
+		}
+
+/*  unknown type  */
+
+		else {
+			_printf_("Warning -- Shape " << i << " of type \"" << SHPTypeName( pstype[i] ) << "\" will be ignored.\n\n");
+		}
+	}
+
+/*  assemble the rest of the kml hierarchy  */
+
+	(kdoc ->feature   )->AddObject((Object*)kfold);
+	kfold=NULL;
+	(kfile->kmlobj    )->AddObject((Object*)kdoc);
+	kdoc =NULL;
+
+/*  write kml file  */
+
+	_printf0_("Writing kml document to file.\n");
+	fid=fopen(filkml,"w");
+	fprintf(fid,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+	kfile->Write(fid,indent);
+	fclose(fid);
+
+	delete kfile;
+	for (i=nshape-1; i>=0; i--) {
+		xDelete<double>((pshapm[i]));
+		xDelete<double>((pshapz[i]));
+		xDelete<double>((pshapy[i]));
+		xDelete<double>((pshapx[i]));
+	}
+	xDelete<double*>(pshapm);
+	xDelete<double*>(pshapz);
+	xDelete<double*>(pshapy);
+	xDelete<double*>(pshapx);
+	xDelete<int>(pnvert);
+	for (i=nshape-1; i>=0; i--) {
+		xDelete<int>((pptype[i]));
+		xDelete<int>((ppstrt[i]));
+	}
+	xDelete<int*>(pptype);
+	xDelete<int*>(ppstrt);
+	xDelete<int>(pnpart);
+	xDelete<int>(pstype);
+
+	clock1=clock();
+	time1 =time(NULL);
+	_printf_("Shp2Kmlx Module -- " << ((double)(clock1-clock0))/CLOCKS_PER_SEC << " CPU seconds; " << difftime(time1,time0) << " elapsed seconds.\n\n\n");
+
+	return(iret);
+
+	#else //ifdef _HAVE_SHAPELIB_
+	return 0;
+	#endif
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Shp2Kmlx/Shp2Kmlx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Shp2Kmlx/Shp2Kmlx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Shp2Kmlx/Shp2Kmlx.h	(revision 27955)
@@ -0,0 +1,26 @@
+/*!\file:  Shp2Kmlx.h
+ * \brief header file for shp to kml conversion routines.
+ */ 
+
+#ifndef _SHP2KMLX_H
+#define _SHP2KMLX_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_SHAPELIB_ //only works if Shapelib library has been compiled in.
+
+#include "shapefil.h"
+
+#endif
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+int Shp2Kmlx(char* filshp,char* filkml, int sgn);
+int Shp2Kmlx(char* filshp,char* filkml, int sgn,double cm,double sp);
+
+#endif  /* _SHP2KMLX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Solverx/Solverx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Solverx/Solverx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Solverx/Solverx.cpp	(revision 27955)
@@ -0,0 +1,74 @@
+/*!\file Solverx
+ * \brief solver
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Solverx.h"
+#include "../../shared/shared.h"
+#include "../../classes/Params/Parameters.h"
+
+void	Solverx(Vector<IssmDouble>** puf, Matrix<IssmDouble>* Kff, Vector<IssmDouble>* pf, Vector<IssmDouble>* uf0,Vector<IssmDouble>* df, Parameters* parameters){
+
+	/*Create Solver Object*/
+	Solver<IssmDouble>* solver=new Solver<IssmDouble>(Kff,pf,uf0,df,parameters);
+
+	/*Solve:*/
+	if(VerboseModule()) _printf0_("   Solving matrix system\n");
+	Vector<IssmDouble>* uf=solver->Solve();
+
+	/*Check convergence, if failed, try recovery model*/
+	if(!checkconvergence(Kff,pf,uf,parameters)){
+
+		_printf0_("WARNING: Solver failed, Trying Recovery Mode\n");
+		ToolkitsOptionsFromAnalysis(parameters,RecoveryAnalysisEnum);
+		delete uf;
+		uf=solver->Solve();
+
+		if(!checkconvergence(Kff,pf,uf,parameters)) _error_("Recovery solver failed...");
+	}
+
+	/*clean up and assign output pointers:*/
+	_assert_(puf);
+	delete solver;
+	*puf=uf;
+}
+bool checkconvergence(Matrix<IssmDouble>* Kff,Vector<IssmDouble>* pf,Vector<IssmDouble>* uf,Parameters* parameters){
+
+	/*Recover parameters: */
+	IssmDouble solver_residue_threshold;
+	parameters->FindParam(&solver_residue_threshold,SettingsSolverResidueThresholdEnum);
+
+	/*don't check convergence if NaN*/
+	if(xIsNan<IssmDouble>(solver_residue_threshold)) return true;
+
+	/*compute KUF = KU - F = K*U - F*/
+	Vector<IssmDouble>* KU  = uf->Duplicate(); Kff->MatMult(uf,KU);
+	Vector<IssmDouble>* KUF = KU->Duplicate(); KU->Copy(KUF); KUF->AYPX(pf,-1.);
+	delete KU;
+
+	/*compute norm(KUF), norm(F)*/
+	IssmDouble nKUF=KUF->Norm(NORM_TWO);
+	IssmDouble nF=pf->Norm(NORM_TWO);
+	delete KUF;
+
+	/*Check solver residue*/
+	IssmDouble solver_residue = 0.;
+	if(nF>0.)  solver_residue = nKUF/(nF);
+	if(VerboseConvergence()) _printf0_("\n   solver residue: norm(KU-F)/norm(F)=" << solver_residue << "\n");
+	if(xIsNan<IssmDouble>(solver_residue)) _error_("Solver residue is NaN");
+
+	/*Check convergence*/
+	if(solver_residue>solver_residue_threshold){
+		_printf0_("solver residue too high!: norm(KU-F)/norm(F)=" << solver_residue << " > "<<solver_residue_threshold<<" (md.settings.solver_residue_threshold)\n");
+		return false;
+	}
+	else{
+		return true;
+	}
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Solverx/Solverx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Solverx/Solverx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Solverx/Solverx.h	(revision 27955)
@@ -0,0 +1,20 @@
+/*!\file:  Solverx.h
+ * \brief solver
+ */ 
+
+#ifndef _SOLVERX_H
+#define _SOLVERX_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../toolkits/toolkits.h"
+
+/* local prototypes: */
+void	Solverx(Vector<IssmDouble>** puf, Matrix<IssmDouble>* Kff, Vector<IssmDouble>* pf, Vector<IssmDouble>* uf0,Vector<IssmDouble>* df, Parameters* parameters);
+bool checkconvergence(Matrix<IssmDouble>* Kff,Vector<IssmDouble>* pf,Vector<IssmDouble>* uf,Parameters* parameters);
+
+#endif  /* _SOLVERX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SpcNodesx/SpcNodesx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SpcNodesx/SpcNodesx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SpcNodesx/SpcNodesx.cpp	(revision 27955)
@@ -0,0 +1,16 @@
+/*!\file SpcNodesx
+ * \brief: establish single point constraints on all nodes, as well as constraints vector.
+ */
+
+#include "./SpcNodesx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void SpcNodesx(Nodes* nodes,Constraints* constraints,Parameters* parameters){
+
+	for(Object* & object: constraints->objects){
+		Constraint* constraint=xDynamicCast<Constraint*>(object);
+		constraint->ConstrainNode(nodes,parameters);
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SpcNodesx/SpcNodesx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SpcNodesx/SpcNodesx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SpcNodesx/SpcNodesx.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  SpcNodesx.h
+ * \brief header file for node single point constraints
+ */ 
+
+#ifndef _SPCNODESX_H
+#define _SPCNODESX_H
+
+#include "../../classes/classes.h"
+#include "../../toolkits/toolkits.h"
+
+/* local prototypes: */
+void SpcNodesx(Nodes* nodes, Constraints* constraints,Parameters* parameters);
+
+#endif  /* _SPCNODESX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/StochasticForcingx/StochasticForcingx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/StochasticForcingx/StochasticForcingx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/StochasticForcingx/StochasticForcingx.cpp	(revision 27955)
@@ -0,0 +1,251 @@
+/*!\file StochasticForcingx
+ * \brief: compute noise terms for the StochasticForcing fields
+ */
+
+#include "./StochasticForcingx.h"
+#include "../../classes/Loads/Friction.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../shared/Random/random.h"
+
+void StochasticForcingx(FemModel* femmodel){/*{{{*/
+
+
+   /*Retrieve parameters*/
+   bool randomflag;
+   int M,N,numfields,numtcov,my_rank;
+   int* fields                = NULL;
+   int* dimensions            = NULL;
+   IssmDouble* timecovariance = NULL;
+   IssmDouble* covariance     = NULL;
+   femmodel->parameters->FindParam(&randomflag,StochasticForcingRandomflagEnum);
+   femmodel->parameters->FindParam(&numfields,StochasticForcingNumFieldsEnum);
+   femmodel->parameters->FindParam(&numtcov,StochasticForcingNumTimesCovarianceEnum);
+   femmodel->parameters->FindParam(&fields,&N,StochasticForcingFieldsEnum);    _assert_(N==numfields);
+   femmodel->parameters->FindParam(&dimensions,&N,StochasticForcingDimensionsEnum);    _assert_(N==numfields);
+   femmodel->parameters->FindParam(&timecovariance,&N,StochasticForcingTimeCovarianceEnum);    _assert_(N==numtcov);
+   int dimtot=0;
+   for(int i=0;i<numfields;i++) dimtot = dimtot+dimensions[i];
+   femmodel->parameters->FindParam(&covariance,&M,&N,StochasticForcingCovarianceEnum); _assert_(M==numtcov); _assert_(N==dimtot*dimtot);
+
+	/*Check if this is a timestep for new noiseterms computation*/
+	bool isstepforstoch = false;
+	IssmDouble time,dt,starttime,tstep_stoch;
+   femmodel->parameters->FindParam(&time,TimeEnum);
+   femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+   femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum);
+   femmodel->parameters->FindParam(&tstep_stoch,StochasticForcingTimestepEnum);
+	
+	/*Check if we use HydroarmaPw*/
+	bool ispwHydro;
+	femmodel->parameters->FindParam(&ispwHydro,HydrologyIsWaterPressureArmaEnum);
+
+	#ifndef _HAVE_AD_
+   if((fmod(time,tstep_stoch)<fmod((time-dt),tstep_stoch)) || (time<=starttime+dt) || tstep_stoch==dt) isstepforstoch = true;
+   #else
+   _error_("not implemented yet");
+   #endif
+
+   /*Compute noise terms*/
+	IssmDouble* timestepcovariance = xNew<IssmDouble>(dimtot*dimtot);
+	IssmDouble* noiseterms         = xNew<IssmDouble>(dimtot);
+   if(isstepforstoch){
+		/*Find covariance to be applied at current time step*/
+		int itime;
+		if(numtcov>1){
+			for(int i=0;i<numtcov;i++){
+				if(time>=timecovariance[i]) itime=i;
+			}
+		}
+		else itime=0;
+		for(int i=0;i<dimtot*dimtot;i++) timestepcovariance[i] = covariance[itime*dimtot*dimtot+i];
+		my_rank=IssmComm::GetRank();
+   	if(my_rank==0){
+   	   int fixedseed;
+			/*Determine whether random seed is fixed to time step (randomflag==false) or random seed truly random (randomflag==true)*/
+   	   if(randomflag) fixedseed=-1;
+   	   else fixedseed = reCast<int,IssmDouble>((time-starttime)/dt);
+			/*multivariateNormal needs to be passed a NULL pointer to avoid memory leak issues*/
+   	   IssmDouble* temparray = NULL;
+   	   multivariateNormal(&temparray,dimtot,0.0,timestepcovariance,fixedseed);
+   	   for(int i=0;i<dimtot;i++) noiseterms[i]=temparray[i];
+			xDelete<IssmDouble>(temparray);
+   	}
+   	ISSM_MPI_Bcast(noiseterms,dimtot,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+		femmodel->parameters->SetParam(noiseterms,dimtot,StochasticForcingNoisetermsEnum);
+	}
+	else{
+		IssmDouble* temparray = NULL;
+		femmodel->parameters->FindParam(&temparray,&N,StochasticForcingNoisetermsEnum); _assert_(N==dimtot);
+		for(int i=0;i<dimtot;i++) noiseterms[i] = temparray[i];
+		xDelete<IssmDouble>(temparray);
+	}
+
+	int i=0;
+   for(int j=0;j<numfields;j++){
+      int dimenum_type,noiseenum_type;
+      IssmDouble* noisefield = xNew<IssmDouble>(dimensions[j]);
+      for(int k=0;k<dimensions[j];k++){
+         noisefield[k]=noiseterms[i+k];
+      }
+     
+		int dimensionid;
+
+		/*Deal with the ARMA models*/
+		if(fields[j]==SMBarmaEnum || fields[j]==FrontalForcingsRignotarmaEnum || fields[j]==BasalforcingsDeepwaterMeltingRatearmaEnum || fields[j]==FrontalForcingsSubglacialDischargearmaEnum || (fields[j]==FrictionWaterPressureEnum && ispwHydro)){
+			switch(fields[j]){
+				case SMBarmaEnum:
+					dimenum_type   = SmbBasinsIdEnum;
+					noiseenum_type = SmbARMANoiseEnum;
+					break;
+				case FrontalForcingsRignotarmaEnum:
+					dimenum_type   = FrontalForcingsBasinIdEnum;
+					noiseenum_type = ThermalforcingARMANoiseEnum;
+					break;
+				case BasalforcingsDeepwaterMeltingRatearmaEnum:
+					dimenum_type   = BasalforcingsLinearBasinIdEnum;
+					noiseenum_type = BasalforcingsDeepwaterMeltingRateNoiseEnum;
+					break;
+				case FrontalForcingsSubglacialDischargearmaEnum:
+					dimenum_type   = FrontalForcingsBasinIdEnum;
+					noiseenum_type = SubglacialdischargeARMANoiseEnum;
+					break;	
+				case FrictionWaterPressureEnum:
+					dimenum_type   = HydrologyBasinsIdEnum;
+					noiseenum_type = FrictionWaterPressureNoiseEnum;
+					break;	
+			}
+			for(Object* &object:femmodel->elements->objects){
+            Element* element = xDynamicCast<Element*>(object);
+            int numvertices  = element->GetNumberOfVertices();
+            IssmDouble* noise_element = xNew<IssmDouble>(numvertices);
+            element->GetInputValue(&dimensionid,dimenum_type);
+            for(int i=0;i<numvertices;i++) noise_element[i] = noisefield[dimensionid];
+            element->AddInput(noiseenum_type,noise_element,P0Enum);
+            xDelete<IssmDouble>(noise_element);
+			}
+		}
+		else{
+			switch(fields[j]){
+				case SMBarmaEnum:
+				case FrontalForcingsRignotarmaEnum:
+				case BasalforcingsDeepwaterMeltingRatearmaEnum:
+				case FrontalForcingsSubglacialDischargearmaEnum:
+					/*Already done above*/
+					break;
+				case BasalforcingsSpatialDeepwaterMeltingRateEnum:
+               /*Delete BasalforcingsSpatialDeepwaterMeltingRateEnum at previous time step (required if it is transient)*/
+               femmodel->inputs->DeleteInput(BasalforcingsSpatialDeepwaterMeltingRateEnum);
+               for(Object* &object:femmodel->elements->objects){
+                  Element* element = xDynamicCast<Element*>(object);
+                  int numvertices  = element->GetNumberOfVertices();
+                  IssmDouble baselinedeepwatermelt;
+                  IssmDouble deepwatermelt_tot[numvertices];
+                  Input* baselinedeepwatermelt_input  = NULL;
+                  baselinedeepwatermelt_input = element->GetInput(BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum); _assert_(baselinedeepwatermelt_input);
+                  element->GetInputValue(&dimensionid,StochasticForcingDefaultIdEnum);
+                  Gauss* gauss = element->NewGauss();
+                  for(int i=0;i<numvertices;i++){
+                     gauss->GaussVertex(i);
+                     baselinedeepwatermelt_input->GetInputValue(&baselinedeepwatermelt,gauss);
+                     deepwatermelt_tot[i] = baselinedeepwatermelt+noisefield[dimensionid];
+                  }
+                  element->AddInput(BasalforcingsSpatialDeepwaterMeltingRateEnum,&deepwatermelt_tot[0],P1DGEnum);
+                  delete gauss;
+               }
+               break;
+				case DefaultCalvingEnum:
+					/*Delete CalvingCalvingrateEnum at previous time step (required if it is transient)*/
+					femmodel->inputs->DeleteInput(CalvingCalvingrateEnum);
+					for(Object* &object:femmodel->elements->objects){
+						Element* element = xDynamicCast<Element*>(object);
+						int numvertices  = element->GetNumberOfVertices();
+						IssmDouble baselinecalvingrate;
+						IssmDouble calvingrate_tot[numvertices];
+						Input* baselinecalvingrate_input  = NULL;
+						baselinecalvingrate_input = element->GetInput(BaselineCalvingCalvingrateEnum); _assert_(baselinecalvingrate_input);
+						element->GetInputValue(&dimensionid,StochasticForcingDefaultIdEnum);
+						Gauss* gauss = element->NewGauss();
+						for(int i=0;i<numvertices;i++){
+							gauss->GaussVertex(i);
+							baselinecalvingrate_input->GetInputValue(&baselinecalvingrate,gauss);
+							calvingrate_tot[i] = max(0.0,baselinecalvingrate+noisefield[dimensionid]);
+						}
+						element->AddInput(CalvingCalvingrateEnum,&calvingrate_tot[0],P1DGEnum);
+						delete gauss;
+					}
+					break;
+				case FloatingMeltRateEnum:
+					/*Delete BasalforcingsFloatingiceMeltingRateEnum at previous time step (required if it is transient)*/
+					femmodel->inputs->DeleteInput(BasalforcingsFloatingiceMeltingRateEnum);
+					for(Object* &object:femmodel->elements->objects){
+						Element* element = xDynamicCast<Element*>(object);
+						int numvertices  = element->GetNumberOfVertices();
+						IssmDouble baselinefloatingicemeltrate;
+						IssmDouble floatingicemeltrate_tot[numvertices];
+						Input* baselinefloatingicemeltrate_input  = NULL;
+						baselinefloatingicemeltrate_input = element->GetInput(BaselineBasalforcingsFloatingiceMeltingRateEnum); _assert_(baselinefloatingicemeltrate_input);
+						element->GetInputValue(&dimensionid,StochasticForcingDefaultIdEnum);
+						Gauss* gauss = element->NewGauss();
+						for(int i=0;i<numvertices;i++){
+							gauss->GaussVertex(i);
+							baselinefloatingicemeltrate_input->GetInputValue(&baselinefloatingicemeltrate,gauss);
+							/*No check for positive melt rate because basal accretion is allowed*/
+							floatingicemeltrate_tot[i] = baselinefloatingicemeltrate+noisefield[dimensionid];
+						}
+						element->AddInput(BasalforcingsFloatingiceMeltingRateEnum,&floatingicemeltrate_tot[0],P1DGEnum);
+						delete gauss;
+					}
+					break;
+				case SMBforcingEnum:
+					/*Delete SmbMassBalanceEnum at previous time step (required if it is transient)*/
+					femmodel->inputs->DeleteInput(SmbMassBalanceEnum);
+					for(Object* &object:femmodel->elements->objects){
+						Element* element = xDynamicCast<Element*>(object);
+						int numvertices  = element->GetNumberOfVertices();
+						IssmDouble baselinesmb;
+						IssmDouble smb_tot[numvertices];
+						Input* baselinesmb_input  = NULL;
+						baselinesmb_input = element->GetInput(BaselineSmbMassBalanceEnum); _assert_(baselinesmb_input);
+						element->GetInputValue(&dimensionid,StochasticForcingDefaultIdEnum);
+						Gauss* gauss = element->NewGauss();
+						for(int i=0;i<numvertices;i++){
+							gauss->GaussVertex(i);
+							baselinesmb_input->GetInputValue(&baselinesmb,gauss);
+							smb_tot[i] = baselinesmb+noisefield[dimensionid];
+						}
+						element->AddInput(SmbMassBalanceEnum,&smb_tot[0],P1DGEnum);
+						delete gauss;
+					}
+					break;
+				case FrictionWaterPressureEnum:
+					/*Specify that WaterPressure is stochastic*/ 
+					femmodel->parameters->SetParam(true,StochasticForcingIsWaterPressureEnum);
+					for(Object* &object:femmodel->elements->objects){
+                  Element* element = xDynamicCast<Element*>(object);
+                  int numvertices  = element->GetNumberOfVertices();
+                  IssmDouble p_water_deterministic[numvertices];
+                  IssmDouble p_water[numvertices];
+						element->GetInputValue(&dimensionid,StochasticForcingDefaultIdEnum);
+						element->SubglacialWaterPressure(FrictionWaterPressureEnum);
+                  element->GetInputListOnVertices(&p_water_deterministic[0],FrictionWaterPressureEnum);
+                  for(int i=0;i<numvertices;i++) p_water[i] = p_water_deterministic[i] + noisefield[dimensionid];
+                  element->AddInput(FrictionWaterPressureEnum,p_water,P1DGEnum);
+					}
+					break;
+				default:
+					_error_("Field "<<EnumToStringx(fields[j])<<" does not support stochasticity yet.");
+			}
+		}
+		i=i+dimensions[j];
+      xDelete<IssmDouble>(noisefield);
+   }
+
+	/*Cleanup*/
+   xDelete<int>(fields);
+   xDelete<int>(dimensions);
+   xDelete<IssmDouble>(covariance);
+   xDelete<IssmDouble>(timecovariance);
+   xDelete<IssmDouble>(timestepcovariance);
+   xDelete<IssmDouble>(noiseterms);
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/StochasticForcingx/StochasticForcingx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/StochasticForcingx/StochasticForcingx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/StochasticForcingx/StochasticForcingx.h	(revision 27955)
@@ -0,0 +1,10 @@
+#ifndef _STOCHASTICFORCINGX_H
+#define _STOCHASTICFORCINGX_H
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+/* local prototypes: */
+void StochasticForcingx(FemModel* femmodel);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp	(revision 27955)
@@ -0,0 +1,119 @@
+/*!\file SurfaceAbsVelMisfitx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./SurfaceAbsVelMisfitx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/Inputs/DatasetInput.h"
+
+void SurfaceAbsVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		J+=SurfaceAbsVelMisfit(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble SurfaceAbsVelMisfit(Element* element){
+
+	int        domaintype,numcomponents;
+	IssmDouble Jelem=0.;
+	IssmDouble misfit,Jdet;
+	IssmDouble vx,vy,vxobs,vyobs,weight;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnSurface()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn surface element*/
+	Element* topelement = element->SpawnTopElement();
+
+	/* Get node coordinates*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	DatasetInput* weights_input=topelement->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* vx_input     = NULL;
+	Input* vxobs_input  = topelement->GetInput(InversionVxObsEnum);	_assert_(vxobs_input);
+	Input* vy_input     = NULL;
+	Input* vyobs_input  = NULL;
+
+	/*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/
+	if (domaintype == Domain2DhorizontalEnum) {
+		vx_input = topelement->GetInput(VxSurfaceEnum);					_assert_(vx_input);
+		if(numcomponents==2){
+			vy_input    =topelement->GetInput(VySurfaceEnum);        _assert_(vy_input);
+			vyobs_input =topelement->GetInput(InversionVyObsEnum);	_assert_(vyobs_input);
+		}
+	}
+	else {
+		vx_input = topelement->GetInput(VxEnum);							_assert_(vx_input);
+		if(numcomponents==2){
+			vy_input    =topelement->GetInput(VyEnum);					_assert_(vy_input);
+			vyobs_input =topelement->GetInput(InversionVyObsEnum);	_assert_(vyobs_input);
+		}
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(2);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,SurfaceAbsVelMisfitEnum);
+		vx_input->GetInputValue(&vx,gauss);
+		vxobs_input->GetInputValue(&vxobs,gauss);
+		if(numcomponents==2){
+			vy_input->GetInputValue(&vy,gauss);
+			vyobs_input->GetInputValue(&vyobs,gauss);
+		}
+
+		/*Compute SurfaceAbsVelMisfitEnum:
+		 *
+		 *      1  [           2              2 ]
+		 * J = --- | (u - u   )  +  (v - v   )  |
+		 *      2  [       obs            obs   ]
+		 *
+		 */
+		misfit=0.5*(vx-vxobs)*(vx-vxobs);
+		if(numcomponents==2) misfit+=0.5*(vy-vyobs)*(vy-vyobs);
+
+		/*Add to cost function*/
+		Jelem+=misfit*weight*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  SurfaceAbsVelMisfitx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _SURFACEABSVELMISFITX_H
+#define _SURFACEABSVELMISFITX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void SurfaceAbsVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble SurfaceAbsVelMisfit(Element* element);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceAreax/SurfaceAreax.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceAreax/SurfaceAreax.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceAreax/SurfaceAreax.cpp	(revision 27955)
@@ -0,0 +1,36 @@
+/*!\file SurfaceAreax
+ * \brief: compute Surface area
+ */
+
+#include "./SurfaceAreax.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../InputUpdateFromConstantx/InputUpdateFromConstantx.h"
+
+void SurfaceAreax(IssmDouble* pS,FemModel* femmodel){
+
+	/*Intermediary*/
+	Element* element=NULL;
+
+	/*output: */
+	IssmDouble S = 0.;
+	IssmDouble S_sum;
+
+	/*Compute gradients: */
+	for(Object* & object : femmodel->elements->objects){
+		element=xDynamicCast<Element*>(object);
+		S+=element->SurfaceArea();
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+ 	ISSM_MPI_Reduce (&S,&S_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&S_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm()); 
+	S=S_sum;
+
+	/*add surface area to element inputs:*/
+	InputUpdateFromConstantx(femmodel,S,SurfaceAreaEnum);
+
+	/*Assign output pointers: */
+	if(pS) *pS=S;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceAreax/SurfaceAreax.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceAreax/SurfaceAreax.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceAreax/SurfaceAreax.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  SurfaceAreax.h
+ * \brief header file for ...
+ */ 
+
+#ifndef _SURFACEAREAX_H
+#define _SURFACEAREAX_H
+
+#include "../../shared/shared.h"
+class FemModel;
+
+/* local prototypes: */
+void SurfaceAreax(IssmDouble* pS,FemModel* femmodel);
+
+#endif  /* _SURFACEAREAX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp	(revision 27955)
@@ -0,0 +1,131 @@
+/*!\file SurfaceAverageVelMisfitx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./SurfaceAverageVelMisfitx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../SurfaceAreax/SurfaceAreax.h"
+#include "../../classes/Inputs/DatasetInput.h"
+
+void SurfaceAverageVelMisfitx(IssmDouble* pJ,FemModel* femmodel){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		J+=SurfaceAverageVelMisfit(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble SurfaceAverageVelMisfit(Element* element){
+
+	int        domaintype,numcomponents;
+	IssmDouble Jelem=0.;
+	IssmDouble misfit,S,Jdet;
+	IssmDouble vx,vy,vxobs,vyobs,weight;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnSurface()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:
+			numcomponents   = 1;
+			break;
+		case Domain3DEnum:
+			numcomponents   = 2;
+			break;
+		case Domain2DhorizontalEnum:
+			numcomponents   = 2;
+			break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn surface element*/
+	Element* topelement = element->SpawnTopElement();
+
+	/* Get node coordinates*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	DatasetInput* weights_input=topelement->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* S_input      = topelement->GetInput(SurfaceAreaEnum);     _assert_(S_input);
+   Input* vx_input     = NULL;
+   Input* vxobs_input  = topelement->GetInput(InversionVxObsEnum); _assert_(vxobs_input);
+   Input* vy_input     = NULL;
+   Input* vyobs_input  = NULL;
+
+   /*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/
+   if (domaintype == Domain2DhorizontalEnum) {
+      vx_input = topelement->GetInput(VxSurfaceEnum);             _assert_(vx_input);
+      if(numcomponents==2){
+         vy_input    =topelement->GetInput(VySurfaceEnum);        _assert_(vy_input);
+         vyobs_input =topelement->GetInput(InversionVyObsEnum);   _assert_(vyobs_input);
+      }
+	}
+   else {
+      vx_input = topelement->GetInput(VxEnum);                    _assert_(vx_input);
+      if(numcomponents==2){
+         vy_input    =topelement->GetInput(VyEnum);               _assert_(vy_input);
+         vyobs_input =topelement->GetInput(InversionVyObsEnum);   _assert_(vyobs_input);
+      }
+   }
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(3);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,SurfaceAverageVelMisfitEnum);
+		S_input->GetInputValue(&S,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vxobs_input->GetInputValue(&vxobs,gauss);
+		if(numcomponents==2){
+			vy_input->GetInputValue(&vy,gauss);
+			vyobs_input->GetInputValue(&vyobs,gauss);
+		}
+
+		/*Compute SurfaceAverageVelMisfitEnum:
+		 *
+		 *      1                    2              2
+		 * J = ---  sqrt(  (u - u   )  +  (v - v   )  )
+		 *      S                obs            obs
+		 */
+		if(numcomponents==1){
+			misfit=1/S*(vx-vxobs)*(vx-vxobs);
+		}
+		else{
+			misfit=1/S*sqrt( pow(vx-vxobs,2) + pow(vy-vyobs,2));
+		}
+
+		/*Add to cost function*/
+		Jelem+=misfit*weight*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  SurfaceAverageVelMisfitx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _SURFACEAVERAGEVELMISFITX_H
+#define _SURFACEAVERAGEVELMISFITX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void SurfaceAverageVelMisfitx(IssmDouble* pJ,FemModel* femmodel);
+IssmDouble SurfaceAverageVelMisfit(Element* element);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp	(revision 27955)
@@ -0,0 +1,128 @@
+/*!\file SurfaceLogVelMisfitx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./SurfaceLogVelMisfitx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/Inputs/DatasetInput.h"
+
+void SurfaceLogVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		J+=SurfaceLogVelMisfit(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble SurfaceLogVelMisfit(Element* element){
+
+	int        domaintype,numcomponents;
+	IssmDouble Jelem=0.;
+	IssmDouble epsvel=2.220446049250313e-16;
+	IssmDouble meanvel=3.170979198376458e-05; /*1000 m/yr*/
+	IssmDouble velocity_mag,obs_velocity_mag;
+	IssmDouble misfit,Jdet;
+	IssmDouble vx,vy,vxobs,vyobs,weight;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnSurface()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn surface element*/
+	Element* topelement = element->SpawnTopElement();
+
+	/* Get node coordinates*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	DatasetInput* weights_input=topelement->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+   Input* vx_input     = NULL;
+   Input* vxobs_input  = topelement->GetInput(InversionVxObsEnum);   _assert_(vxobs_input);
+   Input* vy_input     = NULL;
+   Input* vyobs_input  = NULL;
+
+   /*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/
+   if (domaintype == Domain2DhorizontalEnum) {
+      vx_input = topelement->GetInput(VxSurfaceEnum);             _assert_(vx_input);
+      if(numcomponents==2){
+         vy_input    =topelement->GetInput(VySurfaceEnum);        _assert_(vy_input);
+         vyobs_input =topelement->GetInput(InversionVyObsEnum);   _assert_(vyobs_input);
+      }
+	}
+   else {
+      vx_input = topelement->GetInput(VxEnum);                    _assert_(vx_input);
+      if(numcomponents==2){
+         vy_input    =topelement->GetInput(VyEnum);               _assert_(vy_input);
+         vyobs_input =topelement->GetInput(InversionVyObsEnum);   _assert_(vyobs_input);
+      }
+   }
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(4);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,SurfaceLogVelMisfitEnum);
+		vx_input->GetInputValue(&vx,gauss);
+		vxobs_input->GetInputValue(&vxobs,gauss);
+		if(numcomponents==2){
+			vy_input->GetInputValue(&vy,gauss);
+			vyobs_input->GetInputValue(&vyobs,gauss);
+		}
+
+		/*Compute SurfaceLogVelMisfit:
+		 *                 [        vel + eps     ] 2
+		 * J = 4 \bar{v}^2 | log ( -----------  ) |  
+		 *                 [       vel   + eps    ]
+		 *                            obs
+		 */
+		if(numcomponents==1){
+			velocity_mag    =fabs(vx)+epsvel;
+			obs_velocity_mag=fabs(vxobs)+epsvel;
+		}
+		else{
+			velocity_mag    =sqrt(vx*vx+vy*vy)+epsvel;
+			obs_velocity_mag=sqrt(vxobs*vxobs+vyobs*vyobs)+epsvel;
+		}
+
+		misfit=4*pow(meanvel,2)*pow(log(velocity_mag/obs_velocity_mag),2);
+
+		/*Add to cost function*/
+		Jelem+=misfit*weight*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  SurfaceLogVelMisfitx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _SURFACELOGVELMISFITX_H
+#define _SURFACELOGVELMISFITX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void SurfaceLogVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble SurfaceLogVelMisfit(Element* element);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp	(revision 27955)
@@ -0,0 +1,128 @@
+/*!\file SurfaceLogVxVyMisfitx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./SurfaceLogVxVyMisfitx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/Inputs/DatasetInput.h"
+
+void SurfaceLogVxVyMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(Object* & object : elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+		J+=SurfaceLogVxVyMisfit(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble SurfaceLogVxVyMisfit(Element* element){
+
+	int        domaintype,numcomponents;
+	IssmDouble Jelem=0.;
+	IssmDouble epsvel=2.220446049250313e-16;
+	IssmDouble meanvel=3.170979198376458e-05; /*1000 m/yr*/
+	IssmDouble misfit,Jdet;
+	IssmDouble vx,vy,vxobs,vyobs,weight;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnSurface()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn surface element*/
+	Element* topelement = element->SpawnTopElement();
+
+	/* Get node coordinates*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	DatasetInput* weights_input=topelement->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+   Input* vx_input     = NULL;
+   Input* vxobs_input  = topelement->GetInput(InversionVxObsEnum);   _assert_(vxobs_input);
+   Input* vy_input     = NULL;
+   Input* vyobs_input  = NULL;
+
+   /*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/
+   if (domaintype == Domain2DhorizontalEnum) {
+      vx_input = topelement->GetInput(VxSurfaceEnum);             _assert_(vx_input);
+      if(numcomponents==2){
+         vy_input    =topelement->GetInput(VySurfaceEnum);        _assert_(vy_input);
+         vyobs_input =topelement->GetInput(InversionVyObsEnum);   _assert_(vyobs_input);
+      }
+	}
+   else {
+      vx_input = topelement->GetInput(VxEnum);                    _assert_(vx_input);
+      if(numcomponents==2){
+         vy_input    =topelement->GetInput(VyEnum);               _assert_(vy_input);
+         vyobs_input =topelement->GetInput(InversionVyObsEnum);   _assert_(vyobs_input);
+      }
+   }
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(4);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,SurfaceLogVxVyMisfitEnum);
+		vx_input->GetInputValue(&vx,gauss);
+		vxobs_input->GetInputValue(&vxobs,gauss);
+		if(numcomponents==2){
+			vy_input->GetInputValue(&vy,gauss);
+			vyobs_input->GetInputValue(&vyobs,gauss);
+		}
+
+		/*Compute SurfaceRelVelMisfit:
+		 *
+		 *      1            [        |u| + eps     2          |v| + eps     2  ]
+		 * J = --- \bar{v}^2 | log ( -----------  )   +  log ( -----------  )   |
+		 *      2            [       |u    |+ eps              |v    |+ eps     ]
+		 *                              obs                       obs
+		 */
+
+		if(numcomponents==1){
+			misfit=0.5*meanvel*meanvel*pow(log((fabs(vx)+epsvel)/(fabs(vxobs)+epsvel)),2);
+		}
+		else{
+			misfit=0.5*meanvel*meanvel*(
+						pow(log((fabs(vx)+epsvel)/(fabs(vxobs)+epsvel)),2) +
+						pow(log((fabs(vy)+epsvel)/(fabs(vyobs)+epsvel)),2) );
+		}
+
+		/*Add to cost function*/
+		Jelem+=misfit*weight*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  SurfaceLogVxVyMisfitx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _SURFACELOGVXVYMISFITX_H
+#define _SURFACELOGVXVYMISFITX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void SurfaceLogVxVyMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble SurfaceLogVxVyMisfit(Element* element);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceMassBalancex/Gembx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceMassBalancex/Gembx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceMassBalancex/Gembx.cpp	(revision 27955)
@@ -0,0 +1,2518 @@
+/*!\file GEMB module from Alex Gardner.
+ * \brief: calculates SMB 
+ */
+
+#include "./SurfaceMassBalancex.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../modules.h"
+#include "../../classes/Inputs/TransientInput.h"
+
+const double Pi = 3.141592653589793;
+const double CtoK = 273.15;             // Kelvin to Celcius conversion/ice melt. point T in K
+const double dts = 86400.0;              // Number of seconds in a day
+
+/* Tolerances have to be defined for if loops involving some specific values
+	like densitiy of ice or melting point temp because values are "rounded"
+	(e.g rho ice = 909.99... instead of 910.0) and we don't always go into the right loop */
+const double Ttol = 1e-10;
+const double Dtol = 1e-11;
+const double Gdntol = 1e-10;
+const double Wtol = 1e-13;
+const double Ptol = 1e-6;
+
+const double CI = 2102.0;                       // heat capacity of snow/ice (J kg-1 k-1)
+const double LF = 0.3345e6;             // latent heat of fusion (J kg-1)
+const double LV = 2.495e6;               // latent heat of vaporization (J kg-1)
+const double LS = 2.8295e6;             // latent heat of sublimation (J kg-1)
+const double SB = 5.67e-8;                // Stefan-Boltzmann constant (W m-2 K-4)
+const double CA = 1005.0;                    // heat capacity of air (J kg-1 K-1)
+const double R = 8.314;                      // gas constant (J mol-1 K-1)
+
+const double Delflag=-99999;
+
+void Gembx(FemModel* femmodel){  /*{{{*/
+
+	int        count=0;
+	IssmDouble time,dt,finaltime;
+	IssmDouble timeclim=0.0;
+	IssmDouble t,smb_dt;
+   IssmDouble delta;
+	bool       linear_interp=true;
+
+	femmodel->parameters->FindParam(&linear_interp,TimesteppingInterpForcingEnum); /*is interpolation requested*/
+	femmodel->parameters->FindParam(&time,TimeEnum);                        /*transient core time at which we run the smb core*/
+   femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);          /*transient core time step*/
+	femmodel->parameters->FindParam(&finaltime,TimesteppingFinalTimeEnum);
+   femmodel->parameters->FindParam(&smb_dt,SmbDtEnum);                     /*time period for the smb solution,  usually smaller than the glaciological dt*/
+
+	//before starting loop, realize that the transient core runs this smb_core at time = time +deltaT.
+	//go back to time - deltaT:
+	time-=dt;
+
+	IssmDouble timeinputs = time;
+
+	/*Start loop: */
+	count=1;
+	for (t=time;t<=time+dt-smb_dt;t=t+smb_dt){
+
+		for(Object* & object : femmodel->elements->objects){
+			Element* element=xDynamicCast<Element*>(object);
+
+			timeclim=time;
+			if (linear_interp) timeinputs = t-time+timeclim;
+			else timeinputs = t-time+timeclim+smb_dt/2;
+			element->SmbGemb(timeinputs,count);
+		}
+		count=count+1;
+	}
+
+} /*}}}*/
+void GembgridInitialize(IssmDouble** pdz, int* psize, IssmDouble zTop, IssmDouble dzTop, IssmDouble zMax, IssmDouble zY){ /*{{{*/
+
+	/* This file sets up the initial grid spacing and total grid depth.  The
+	grid structure is set as constant grid length 'dzTop' for the top
+	'zTop' meters of the model grid. Bellow 'zTop' the gid length increases
+	linearly with depth */
+
+	/*intermediary:*/
+	IssmDouble dgpTop=0.0;
+	int gpTop=0;
+	int gpBottom=0;
+	int i=0;
+	IssmDouble gp0=0.0;
+	IssmDouble z0=0.0;
+	IssmDouble* dzT=NULL;
+	IssmDouble* dzB=NULL;
+
+	/*output: */
+	IssmDouble* dz=NULL;
+
+	//----------------------Calculate Grid Lengths------------------------------
+	//calculate number of top grid points
+	dgpTop = zTop/dzTop;
+
+	//check to see if the top grid cell structure length (dzTop) goes evenly 
+	//into specified top structure depth (zTop). Also make sure top grid cell
+	//structure length (dzTop) is greater than 5 cm
+	#ifndef _HAVE_AD_  //avoid the round operation check!
+	if (dgpTop != round(dgpTop)){ 
+		_error_("top grid cell structure length does not go evenly into specified top structure depth, adjust dzTop or zTop\n");
+	}
+	#endif
+	if(dzTop < 0.05-Dtol){
+		_printf_("initial top grid cell length (dzTop) is < 0.05 m\n");
+	}
+	gpTop=reCast<int,IssmDouble>(dgpTop);
+
+	//initialize top grid depth vector
+	dzT = xNew<IssmDouble>(gpTop); 
+	for (i=0;i<gpTop-Dtol;i++)dzT[i]=dzTop;
+
+	//bottom grid cell depth = x*zY^(cells from to structure)
+	//figure out the number of grid points in the bottom vector (not known a priori)
+	gp0 = dzTop;
+	z0 = zTop;
+	gpBottom = 0;
+	while (zMax > z0+Dtol){
+		gp0= gp0 * zY;
+		z0 = z0 + gp0;
+		gpBottom++;
+	}
+	//initialize bottom vectors
+	dzB = xNewZeroInit<IssmDouble>(gpBottom);
+	gp0 = dzTop;
+	z0 = zTop;
+	for(i=0;i<gpBottom;i++){
+		gp0=gp0*zY;
+		dzB[i]=gp0;
+	}
+
+	//combine top and bottom dz vectors
+	dz = xNew<IssmDouble>(gpTop+gpBottom);
+	for(i=0;i<gpTop-Dtol;i++){
+		dz[i]=dzT[i];
+	}
+	for(i=0;i<gpBottom;i++){
+		dz[gpTop+i]=dzB[i];
+	}
+
+	/*Free resouces:*/
+	xDelete(dzT);
+	xDelete(dzB);
+
+	//---------NEED TO IMPLEMENT A PROPER GRID STRECHING ALGORITHM------------
+
+	/*assign ouput pointers: */
+	*pdz=dz; 
+	*psize=gpTop+gpBottom;
+} /*}}}*/ 
+IssmDouble Marbouty(IssmDouble T, IssmDouble d, IssmDouble dT){ /*{{{*/
+
+	// calculates grain growth according to Fig. 9 of Marbouty, 1980
+	// ------NO GRAIN GROWTH FOR d > 400 kg m-3 because H is set to zero------
+	// ---------------this is a major limitation of the model-------------------
+
+	// initialize
+	IssmDouble F = 0.0, H=0.0, G=0.0;
+	const IssmDouble E = 0.09;        //[mm d-1] model time growth constant E
+	// convert T from K to degC
+	T = T - CtoK;
+	// convert dT from degC/m to degC/cm
+	dT = dT/100.0;
+
+	// temperature coefficient F
+	if(T> -6.0+Ttol) F =  0.7 + ((T/-6.0) * 0.3);
+	if(T<= -6.0+Ttol && T> -22.0+Ttol) F =  1.0 - ((T+6.0)/-16.0 * 0.8);
+	if(T<= -22.0+Ttol && T> -40.0+Ttol) F =  0.2 - ((T+22.0)/-18.0 * 0.2);
+
+	// density coefficient F
+	if(d< 150.0-Dtol) H=1.0;
+
+	if(d>= 150.0-Dtol && d <400.0-Dtol) H = 1.0 - ((d-150.0)/250.0);
+
+	// temperature gradient coefficient G
+	if(dT >= 0.16-Ttol && dT < 0.25-Ttol) G = ((dT - 0.16)/0.09) * 0.1;
+	if(dT >= 0.25-Ttol && dT < 0.4-Ttol)  G = 0.1 + (((dT - 0.25)/0.15) * 0.57);
+	if(dT >= 0.4-Ttol && dT < 0.5-Ttol)  G = 0.67 + (((dT - 0.4)/0.1) * 0.23);
+	if(dT >= 0.5-Ttol && dT < 0.7-Ttol)  G = 0.9 + (((dT - 0.5)/0.2) * 0.1);
+	if(dT >= 0.7-Ttol)  G = 1.0;
+
+	// grouped coefficient Q
+	return F*H*G*E;
+
+} /*}}}*/
+IssmDouble gardnerAlb(IssmDouble* re, IssmDouble* dz, IssmDouble* d, IssmDouble clabSnow, IssmDouble clabIce, IssmDouble SZA, IssmDouble COT, IssmDouble dPHC, int m){ /*{{{*/
+	//gardnerAlb(S1, c1, SZA, t, z1, S2, c2)
+	//This is an implementation of the snow and ice broadband albedo
+	//  parameterization developed by Alex Gardner.
+	//Created By: Alex S. Gardner, Jet Propulsion Laboratory [alex.s.gardner@jpl.nasa.gov]
+	//  Last Modified: June, 2014
+	//Full Reference: Gardner, A. S., and Sharp, M. J.: A review of snow and
+	//  ice albedo and the development of a new physically based broadband albedo
+	//  parameterization, J. Geophys. Res., 115, F01009, 10.1029/2009jf001444,
+	//  2010.
+
+	//INPUTS
+	// ONE LAYER
+	//  - S1    : specific surface area of the snow or ice [cm^2 g-1]
+	//  - c1    : concentration of light absorbing carbon  [ppm1]
+	//  - SZA   : solar zenith angle of the incident radiation [deg]
+	//  - t     : cloud optical thickness
+	// TWO LAYER
+	//  - z1    : depth of snow suface layer [mm w.e.]
+	//  - S2    : specific surface area of bottom ice layer [cm^2 g-1]
+	//  - c2    : concentration of light absorbing carbon of bottom ice
+	//             layer [ppm1]
+	IssmDouble c1=clabSnow;
+	IssmDouble c2=clabIce;
+	IssmDouble t=COT;
+	IssmDouble a=0.0;
+
+	//Single layer albedo parameterization
+	//convert effective radius to specific surface area [cm2 g-1]
+	IssmDouble S1 = 3.0 / (0.091 * re[0]);
+
+	//effective solar zenith angle
+	IssmDouble x = min(pow(t/(3.0*cos(Pi*SZA/180.0)),0.5), 1.0);
+	IssmDouble u = 0.64*x + (1.0-x)*cos(Pi*SZA/180.0);
+
+	// pure snow albedo
+	IssmDouble as = 1.48 - pow(S1,-0.07);
+
+	//change in pure snow albedo due to soot loading
+	IssmDouble dac = max(0.04 - as, pow(-c1,0.55)/(0.16 + 0.6*pow(S1,0.5) + (1.8*pow(c1,0.6))*pow(S1,-0.25)));
+
+	//Two layer albedo parameterization
+	//  do two layer calculation if there is more than 1 layer
+	IssmDouble z1=0.0;
+	int lice=0;
+	for(int l=0;(l<m & d[l]<dPHC-Dtol);l++){
+		z1=z1+dz[l]*d[l]; //mm
+		lice=l+1;
+	}
+	if (m>0 & lice<m & z1 > Dtol){
+		// determine albedo values for bottom layer
+		IssmDouble S2 = 3.0 / (0.091 * re[lice]);
+
+		// pure snow albedo
+		IssmDouble as2 = 1.48 - pow(S2,-0.07);
+
+		// change in pure snow albedo due to soot loading
+		IssmDouble dac2 = max(0.04 - as2, pow(-c2,0.55)/(0.16 + 0.6*pow(S2,0.5) + (1.8*pow(c2,0.6))*pow(S2,-0.25)));
+
+		// determine the effective change due to finite depth and soot loading
+		IssmDouble A = min(1.0, (2.1 * pow(z1,1.35*(1.0-as) - 0.1*c1 - 0.13)));
+
+		dac =  (as2 + dac2 - as) + A*((as + dac) - (as2 + dac2));
+	}
+
+	// change in albedo due to solar zenith angle
+	IssmDouble dasz = 0.53*as*(1.0 - (as + dac))*pow(1.0 - u,1.2);
+
+	// change in albedo due to cloud (apart from change in diffuse fraction)
+	IssmDouble dat = (0.1*t*pow(as + dac,1.3)) / (pow(1.0 + 1.5*t,as));
+
+	// Broadband albedo
+	a = as + dac + dasz + dat;
+
+	return a;
+}   /*}}}*/
+void grainGrowth(IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, IssmDouble* T,IssmDouble* dz,IssmDouble* d, IssmDouble* W,IssmDouble smb_dt,int m,int aIdx,int sid){ /*{{{*/
+
+	/*Created by: Alex S. Gardner, University of Alberta
+
+	 *Description*: models the effective snow grain size
+
+	 *Reference:*
+	 DENDRITIC SNOW METAMORPHISM:
+	 Brun, E., P. David, M. Sudul, and G. Brunot, 1992: A numerical model to
+	 simulate snow-cover stratigraphy for operational avalanche forecasting.
+	 Journal of Glaciology, 38, 13-22.
+
+	 NONDENDRITIC SNOW METAMORPHISM:
+	 Dry snow metamorphism:
+	 Marbouty, D., 1980: An experimental study of temperature-gradient
+	 metamorphism. Journal of Glaciology, 26, 303-312.
+
+	 WET SNOW METAMORPHISM:
+	 Brun, E., 1989: Investigation on wet-snow metamorphism in respect of
+	 liquid-water content. Annals of Glaciology, 13, 22-26.
+
+	 INPUTS
+	 * T: grid cell temperature [K]
+	 * dz: grid cell depth [m]
+	 * d: grid cell density [kg m-3]
+	 * W: water content [kg/m^2]
+	 * re: effective grain size [mm]
+	 * gdn: grain dentricity
+	 * gsp: grain sphericity
+	 * dt: time step of input data [s]
+
+	 OUTPUTS
+	 * re: effective grain size [mm]
+	 * gdn: grain dentricity
+	 * gsp: grain sphericity*/
+
+	/*intermediary: */
+	IssmDouble  dt=0.0;
+	IssmDouble  Ti=0.0;
+	IssmDouble* gsz=NULL;
+	IssmDouble* dT=NULL;
+	IssmDouble* zGPC=NULL;
+	IssmDouble* lwc=NULL;
+	IssmDouble  Q=0.0;
+
+	/*output: */
+	IssmDouble* re=NULL;
+	IssmDouble* gdn=NULL;
+	IssmDouble* gsp=NULL;
+
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   grain growth module\n");
+
+	/*Recover pointers: */
+	re=*pre;
+	gdn=*pgdn;
+	gsp=*pgsp;
+
+	/*only when aIdx = 1 or 2 do we run grainGrowth: */
+	if(aIdx!=1 && aIdx!=2){
+		/*come out as we came in: */
+		return;
+	}
+
+	/*Figure out grain size from effective grain radius: */
+	gsz=xNew<IssmDouble>(m); for(int i=0;i<m;i++)gsz[i]=re[i]*2.0;
+
+	/*Convert dt from seconds to day: */
+	dt=smb_dt/dts;
+
+	/*Determine liquid-water content in percentage: */
+	lwc=xNew<IssmDouble>(m); for(int i=0;i<m;i++)lwc[i]= W[i] / (d[i]*dz[i])*100.0;
+
+	//set maximum water content by mass to 9 percent (Brun, 1980)
+	for(int i=0;i<m;i++)if(lwc[i]>9.0+Wtol) lwc[i]=9.0;
+
+	/* Calculate temperature gradiant across grid cells 
+	 * Returns the average gradient across the upper and lower grid cell */
+
+	//initialize
+	dT=xNewZeroInit<IssmDouble>(m); 
+
+	//depth of grid point center from surface
+	zGPC=xNewZeroInit<IssmDouble>(m);  
+	for(int i=0;i<m;i++){
+		for (int j=0;j<=i;j++) zGPC[i]+=dz[j];
+		zGPC[i]-=(dz[i]/2.0);
+	}
+
+	// Take forward differences on left and right edges
+	if(m>2){
+		dT[0] = (T[2] - T[0])/(zGPC[2]-zGPC[0]);
+		dT[m-1] = (T[m-1] - T[m-3])/(zGPC[m-1]-zGPC[m-3]);
+	}
+	else if(m>1){
+		dT[0] = (T[1] - T[0])/(zGPC[1]-zGPC[0]);
+		dT[m-1] = (T[m-1] - T[m-2])/(zGPC[m-1]-zGPC[m-2]);
+	}
+
+	//Take centered differences on interior points
+	for(int i=1;i<m-1;i++) dT[i] = (T[i+1]-T[i-1])/(zGPC[i+1]-zGPC[i-1]);
+
+	// take absolute value of temperature gradient
+	for(int i=0;i<m;i++)dT[i]=fabs(dT[i]);
+
+	/*Snow metamorphism. Depends on value of snow dendricity and wetness of the snowpack: */
+	for(int i=0;i<m;i++){
+
+		// T for this layer
+		Ti = T[i];
+
+		if (gdn[i]>0.0+Gdntol){
+
+			if(W[i]<=0.0+Wtol){
+				//_printf_("Dendritic dry snow metamorphism\n");
+				//index for dentricity > 0 and T gradients < 5 degC m-1 and >= 5 degC m-1
+				if(fabs(dT[i])<=5.0+Ttol){
+					//determine coefficients
+					IssmDouble A = - 2e8 * exp(-6e3 / Ti) * dt;
+					IssmDouble B = 1e9 * exp(-6e3 / Ti) * dt;
+					//new dentricity and sphericity for dT < 5 degC m-1
+					gdn[i] += A;
+					gsp[i] += B;
+				}
+				else{
+					// new dendricity and sphericity for dT >= 5 degC m-1
+
+					//determine coefficients
+					IssmDouble C = (-2e8 * exp(-6e3 / Ti) * dt) * pow(fabs(dT[i]),.4);
+					gdn[i] +=C;
+					gsp[i] +=C;
+				}
+			}
+			else{
+				// wet snow metamorphism
+				//_printf_("Dendritic wet snow metamorphism\n");
+
+				//determine coefficient
+				IssmDouble D = (1.0/16.0) * pow(lwc[i],3.0) * dt;
+
+				// new dendricity for wet snow
+				gdn[i] -= D;
+				// new sphericity for wet snow
+				gsp[i] += D;
+			}
+			// dendricity and sphericity can not be > 1 or < 0
+         if (gdn[i]<=0.0+Gdntol)gdn[i]=0.0;
+         if (gsp[i]<=0.0+Gdntol)gsp[i]=0.0;
+         if (gdn[i]>=1.0-Gdntol)gdn[i]=1.0;
+         if (gsp[i]>=1.0-Gdntol)gsp[i]=1.0;
+
+         // determine new grain size (mm)
+			gsz[i] = max(1e-1*(gdn[i]/.99+(1.0-1.0*gdn[i]/.99)*(gsp[i]/.99*3.0+(1.0-gsp[i]/.99)*4.0)),Gdntol*2.0);
+
+		}
+		else{
+
+			//When wet-snow grains (class 6) are submitted to a
+			// temperature gradient higher than 5 degC m-1, their sphericity
+			// decreases according to Equations (4). When sphericity
+			// reaches 0, their size increases according to the functions
+			// determined by Marbouty. (Brun et al., 1992)
+			if(gsp[i]>0.0+Gdntol && gsp[i]<1.0-Gdntol){
+
+				IssmDouble F = 0.0;
+
+				if (fabs(dT[i])>5.0+Ttol){
+					F = (-2e8 * exp(-6e3 / Ti) * dt) * pow(fabs(dT[i]),.4);
+				}
+				else if (W[i]>0.0+Wtol){
+					F = (1.0/16.0) * pow(lwc[i],3.0) * dt;
+				}
+				else{
+					F = 1e9 * exp(-6e3 / Ti) * dt;
+				}
+				gsp[i] +=F;
+
+			}
+			if (gsp[i]<=0.0+Gdntol)gsp[i]=0.0;
+			if (gsp[i]>=1.0-Gdntol)gsp[i]=1.0;
+
+			/*Dry snow metamorphism (Marbouty, 1980) grouped model coefficents
+			 *from Marbouty, 1980: Figure 9*/
+			if(W[i]<=0.0+Wtol || (gsp[i]<=0.0+Gdntol && fabs(dT[i])>5.0+Ttol)){
+				//_printf_("Nondendritic snow metamorphism\n");
+				Q = Marbouty(Ti,d[i],dT[i]);
+
+				// calculate grain growth
+				gsz[i] += (Q*dt);
+			}
+			//Wet snow metamorphism (Brun, 1989)
+			else{
+				//_printf_("Nondendritic wet snow metamorphism\n");
+				//wet rate of change coefficient
+				IssmDouble E = (1.28e-8 + 4.22e-10 * pow(lwc[i],3.0))* (dt *dts);   // [mm^3 s^-1]
+
+				// calculate change in grain volume and convert to grain size
+				gsz[i] = 2.0 * pow(3.0/(Pi * 4.0)*((4.0/ 3.0)*Pi*pow(gsz[i]/2.0,3.0) + E),1.0/3.0);
+			}
+
+			// grains with sphericity == 1 can not have grain sizes > 2 mm (Brun, 1992)
+			if (fabs(gsp[i]-1.0)<Wtol && gsz[i]>2.0-Wtol) gsz[i]=2.0;
+
+			// grains with sphericity == 0 can not have grain sizes > 5 mm (Brun, 1992)
+			if (fabs(gsp[i]-1.0)>=Wtol && gsz[i]>5.0-Wtol) gsz[i]=5.0;
+		}
+
+		//convert grain size back to effective grain radius:
+		re[i]=gsz[i]/2.0;
+	}
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(gsz);
+	xDelete<IssmDouble>(dT);
+	xDelete<IssmDouble>(zGPC);
+	xDelete<IssmDouble>(lwc);
+
+	/*Assign output pointers:*/
+	*pre=re;
+	*pgdn=gdn;
+	*pgsp=gsp;
+
+}  /*}}}*/
+void albedo(IssmDouble** pa, IssmDouble** padiff, int aIdx, IssmDouble* re, IssmDouble* dz, IssmDouble* d, IssmDouble cldFrac, IssmDouble aIce, IssmDouble aSnow, IssmDouble aValue, IssmDouble adThresh, IssmDouble* TK, IssmDouble* W, IssmDouble P, IssmDouble EC, IssmDouble Msurf, IssmDouble clabSnow, IssmDouble clabIce, IssmDouble SZA, IssmDouble COT, IssmDouble t0wet, IssmDouble t0dry, IssmDouble K, IssmDouble dt, IssmDouble dIce, int m,int sid) { /*{{{*/
+
+	//// Calculates Snow, firn and ice albedo as a function of:
+	//   0 : direct input from aValue parameter
+	//   1 : effective grain radius (Gardner & Sharp, 2009)
+	//   2 : effective grain radius (Brun et al., 1992, Lefebre et al., 2003)
+	//   3 : density and cloud amount (Greuell & Konzelmann, 1994)
+	//   4 : exponential time decay & wetness (Bougamont & Bamber, 2005)
+
+	//// Inputs
+	// aIdx      = albedo method to use
+
+	// Method 0
+	//  aValue   = direct input value for albedo, override all changes to albedo
+
+	// adThresh
+	//  Apply below method to all areas with densities below this value, 
+	//  or else apply direct input value, allowing albedo to be altered.  
+	//  Default value is rho water (1023 kg m-3).
+
+	// Methods 1 & 2
+	//   re      = surface effective grain radius [mm]
+	// Method 1, optional
+	//  clabSnow = concentration of light absorbing carbon  [ppm1], default 0
+	//  SZA      = solar zenith angle of the incident radiation [deg], default 0
+	//  COT      = cloud optical thickness, default 0
+	//  For TWO LAYER
+	//  clabIce  = concentration of light absorbing carbon of first ice layer [ppm1], default 0
+
+	// Method 3
+	//   d       = snow surface density [kg m-3]
+	//   n       = cloud amount
+	//   aIce    = albedo of ice
+	//   aSnow   = albedo of fresh snow
+
+	// Method 4
+	//   aIce    = albedo of ice
+	//   aSnow   = albedo of fresh snow
+	//   a       = grid cell albedo from prevous time step;
+	//   T       = grid cell temperature [k]
+	//   W       = pore water [kg]
+	//   P       = precipitation [mm w.e.] or [kg m-3]
+	//   EC      = surface evaporation (-) condensation (+) [kg m-2]
+	//   t0wet   = time scale for wet snow (15-21.9) [d]
+	//   t0dry   = warm snow timescale [15] [d]
+	//   K       = time scale temperature coef. (7) [d]
+	//   dt      = time step of input data [s]
+
+	//// Output
+	//   a       = grid cell albedo 
+
+	//// Usage 
+	// Method 1
+	// a = albedo(1, 0.1); 
+
+	// Method 4
+	// a = albedo(4, [], [], [], 0.48, 0.85, [0.8 0.5 ... 0.48], ...
+	//   [273 272.5 ... 265], [0 0.001 ... 0], 0, 0.01, 15, 15, 7, 3600)
+
+	/*output: */
+	IssmDouble* a=NULL;
+	IssmDouble* adiff=NULL;
+
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   albedo module\n");
+
+	/*Recover pointers: */
+	a=*pa;
+	adiff=*padiff;
+
+	//some constants:
+	const IssmDouble dSnow = 300.0;   // density of fresh snow [kg m-3]       
+	const IssmDouble dPHC = 830.0;  //Pore closeoff density
+	const IssmDouble ai_max = 0.58;  //maximum ice albedo, from Lefebre,2003
+	const IssmDouble ai_min = aIce;  //minimum ice albedo
+	const IssmDouble as_min = 0.65;  //minimum snow albedo, from Alexander 2014
+
+	if(aIdx==0 || (adThresh - d[0])<Dtol){
+		a[0] = aValue;
+	}
+	else{
+		if(aIdx==1){ 
+			//function of effective grain radius
+			// clabSnow, IssmDouble clabIce, IssmDouble SZA, IssmDouble COT, int m
+			a[0]=gardnerAlb(re, dz, d, clabSnow, clabIce, SZA, COT, dPHC, m);
+			adiff[0]=gardnerAlb(re, dz, d, clabSnow, clabIce, 50.0, COT, dPHC, m);
+		}
+		else if(aIdx==2){
+
+			// Spectral fractions  (Lefebre et al., 2003)
+			// [0.3-0.8um 0.8-1.5um 1.5-2.8um]
+
+			IssmDouble sF[3] = {0.606, 0.301, 0.093};
+
+			// convert effective radius to grain size in meters
+			IssmDouble gsz = (re[0] * 2.0) / 1000.0;
+
+			// spectral range:
+			// 0.3 - 0.8um
+			IssmDouble a0 = min(0.98, 0.95 - 1.58 *pow(gsz,0.5));
+			// 0.8 - 1.5um
+			IssmDouble a1 = max(0., 0.95 - 15.4 *pow(gsz,0.5));
+			// 1.5 - 2.8um
+			IssmDouble a2 = max(0.127, 0.88 + 346.3*gsz - 32.31*pow(gsz,0.5));
+
+			// broadband surface albedo
+			a[0] = sF[0]*a0 + sF[1]*a1 + sF[2]*a2;
+
+		}
+		else if(aIdx==3){
+
+			// a as a function of density
+
+			// calculate albedo
+			a[0] = aIce + (d[0] - dIce)*(aSnow - aIce) / (dSnow - dIce) + (0.05 * (cldFrac - 0.5));
+		}
+		else if(aIdx==4){
+
+			// exponential time decay & wetness
+
+			// change in albedo with time:
+			//   (d_a) = (a - a_old)/(t0)
+			// where: t0 = timescale for albedo decay
+
+			dt = dt / dts;    // convert from [s] to [d]
+
+			// initialize variables
+			IssmDouble* t0=xNew<IssmDouble>(m);
+			IssmDouble* T=xNew<IssmDouble>(m);
+			IssmDouble* t0warm=xNew<IssmDouble>(m);
+			IssmDouble* d_a=xNew<IssmDouble>(m);
+
+			// specify constants
+			// a_wet = 0.15;        // water albedo (0.15)
+			// a_new = aSnow        // new snow albedo (0.64 - 0.89)
+			// a_old = aIce;        // old snow/ice albedo (0.27-0.53)
+			// t0_wet = t0wet;      // time scale for wet snow (15-21.9) [d]
+			// t0_dry = t0dry;      // warm snow timescale [15] [d]
+			// K = 7                // time scale temperature coef. (7) [d]
+			// W0 = 300;            // 200 - 600 [mm]
+			const IssmDouble z_snow = 15.0;            // 16 - 32 [mm]
+
+			// determine timescale for albedo decay
+			for(int i=0;i<m;i++)if(W[i]>0.0+Wtol)t0[i]=t0wet; // wet snow timescale
+			for(int i=0;i<m;i++)T[i]=TK[i] - CtoK; // change T from K to degC
+			for(int i=0;i<m;i++) t0warm[i]= fabs(T[i]) * K + t0dry; //// 'warm' snow timescale
+			for(int i=0;i<m;i++)if(fabs(W[i])<Wtol && T[i]>=-10.0-Ttol)t0[i]= t0warm[i];
+			for(int i=0;i<m;i++)if(T[i]<-10.0-Ttol) t0[i] =  10.0 * K + t0dry; // 'cold' snow timescale
+
+			// calculate new albedo
+			for(int i=0;i<m;i++)d_a[i] = (a[i] - aIce) / t0[i] * dt;           // change in albedo
+			for(int i=0;i<m;i++)a[i] -= d_a[i];                            // new albedo
+
+			// modification of albedo due to thin layer of snow or solid
+			// condensation (deposition) at the surface 
+
+			// check if condensation occurs & if it is deposited in solid phase
+			if ( EC > 0.0 + Dtol && T[0] < 0.0-Ttol) P = P + (EC/dSnow) * 1000.0;  // add cond to precip [mm]
+
+			a[0] = aSnow - (aSnow - a[0]) * exp(-P/z_snow);
+
+			//----------THIS NEEDS TO BE IMPLEMENTED AT A LATER DATE------------
+			// modification of albedo due to thin layer of water on the surface
+			// a_surf = a_wet - (a_wet - a_surf) * exp(-W_surf/W0);
+
+			/*Free resources:*/
+			xDelete<IssmDouble>(t0);
+			xDelete<IssmDouble>(T);
+			xDelete<IssmDouble>(t0warm);
+			xDelete<IssmDouble>(d_a);
+
+		}
+		else _error_("albedo method switch should range from 0 to 4!");
+
+		//If we do not have fresh snow
+		if (aIdx<3 && aIdx>0 && (adThresh - d[0])>=Dtol){
+			// In a snow layer < 10cm, account for mix of ice and snow,
+			// after P. Alexander et al., 2014
+			IssmDouble depthsnow=0.0;
+			IssmDouble aice=0.0;
+			int lice=0;
+			for(int l=0;(l<m & d[l]<dPHC-Dtol);l++){
+				depthsnow=depthsnow+dz[l];
+				lice=l+1;
+			}
+			if (depthsnow<=0.1+Dtol & lice<m & d[lice]>=dPHC-Dtol){
+				aice = ai_max + (as_min - ai_max)*(d[lice]-dIce)/(dPHC-dIce);
+				a[0]= aice + max(a[0]-aice,0.0)*(depthsnow/0.1);
+			}
+
+			if (d[0]>=dPHC-Dtol){
+				if (d[0]<dIce-Dtol){ //For continuity of albedo in firn i.e. P. Alexander et al., 2014
+
+					//ai=ai_max + (as_min - ai_max)*(dI-dIce)/(dPHC-dIce);
+					//dPHC is pore close off (830 kg m^-3)
+					//dI is density of the upper firn layer
+
+					a[0] = ai_max + (as_min - ai_max)*(d[0]-dIce)/(dPHC-dIce);
+
+				}
+				else{ //surface layer is density of ice
+
+					//When density is > dIce (typically 910 kg m^-3, 920 is used by Alexander in MAR),
+					//ai=ai_min + (ai_max - ai_min)*e^(-1*(Msw(t)/K))
+					//K is a scale factor (set to 200 kg m^-2)
+					//Msw(t) is the time-dependent accumulated amount of excessive surface meltwater
+					//  before run-off in kg m^-2 (melt per GEMB timestep, i.e. 3 hourly)
+					IssmDouble M = Msurf+W[0];
+					a[0]=max(ai_min + (ai_max - ai_min)*exp(-1.0*(M/200.0)), ai_min);
+
+				}
+			}
+		}
+	}
+
+	// Check for erroneous values
+	if (a[0] > 1.0+Ttol) _printf_("albedo > 1.0\n");
+	else if (a[0] < 0.0-Dtol) _printf_("albedo is negative\n");
+	else if (xIsNan(a[0])) _error_("albedo == NAN\n");
+
+	/*Assign output pointers:*/
+	*pa=a;
+	*padiff=adiff;
+
+}  /*}}}*/
+void thermo(IssmDouble* pshf, IssmDouble* plhf, IssmDouble* pEC, IssmDouble** pT, IssmDouble* pulwrf, IssmDouble* re, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlwrf, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, int tcIdx, int eIdx, IssmDouble teValue, IssmDouble dulwrfValue, IssmDouble teThresh, IssmDouble Ws, IssmDouble dt0, IssmDouble dzMin, int m, IssmDouble Vz, IssmDouble Tz, IssmDouble thermo_scaling, IssmDouble dIce, int sid, bool isconstrainsurfaceT, bool isdeltaLWup) { /*{{{*/
+
+	/* ENGLACIAL THERMODYNAMICS*/
+
+	/* Description: 
+	   computes new temperature profile accounting for energy absorption and 
+	   thermal diffusion.*/
+
+	// INPUTS
+	//  T: grid cell temperature [k]
+	//  dz: grid cell depth [m]
+	//  d: grid cell density [kg m-3]
+	//  swf: shortwave radiation fluxes [W m-2]
+	//  dlwrf: downward longwave radiation fluxes [W m-2]
+	//  Ta: 2 m air temperature
+	//  V:  wind velocity [m s-1]
+	//  eAir: screen level vapor pressure [Pa]
+	//  Ws: surface water content [kg]
+	//  dt0: time step of input data [s]
+	//  elev: surface elevation [m a.s.l.] 
+	//  Vz: air temperature height above surface [m]
+	//  Tz: wind height above surface [m]
+	//  thermo_scaling: scaling factor to multiply the thermal diffusion timestep (delta t) 
+
+	// OUTPUTS
+	// T: grid cell temperature [k]
+	// EC: evaporation/condensation [kg]
+	// ulwrf: upward longwave radiation flux [W m-2]
+
+	/*intermediary: */
+	IssmDouble* K = NULL;
+	IssmDouble* KU = NULL;
+	IssmDouble* KD = NULL;
+	IssmDouble* KP = NULL;
+	IssmDouble* Au = NULL;
+	IssmDouble* Ad = NULL;
+	IssmDouble* Ap = NULL;
+	IssmDouble* Nu = NULL;
+	IssmDouble* Nd = NULL;
+	IssmDouble* Np = NULL;
+	IssmDouble* dzU = NULL;
+	IssmDouble* dzD = NULL;
+	IssmDouble* sw = NULL;
+	IssmDouble* dT_sw = NULL;
+	IssmDouble* T0 = NULL;
+	IssmDouble* Tu = NULL;
+	IssmDouble* Td = NULL;
+
+	IssmDouble z0=0.0;	
+	IssmDouble zT=0.0;
+	IssmDouble zQ=0.0;
+	IssmDouble zratio=1.0;
+	IssmDouble dt=0.0;
+	IssmDouble max_fdt=0.0;
+	IssmDouble Ts=0.0;
+	IssmDouble L=0.0;
+	IssmDouble eS=0.0;
+	IssmDouble Ri=0.0;
+	IssmDouble coefM=0.0;
+	IssmDouble coefH=0.0;
+	IssmDouble coefHT=0.0;
+	IssmDouble coefHQ=0.0;
+	IssmDouble An_num=0.0;
+	IssmDouble An_den_T=0.0;
+	IssmDouble An_den_Q=0.0;
+	IssmDouble An=0.0;
+	IssmDouble C=0.0;
+	IssmDouble shf=0.0;
+	IssmDouble ds=0.0;
+	IssmDouble dAir=0.0;
+	IssmDouble TCs=0.0;
+	IssmDouble lhf=0.0;
+	IssmDouble EC_day=0.0;
+	IssmDouble lhf_cum=0.0;
+	IssmDouble shf_cum=0.0;
+	IssmDouble dT_turb=0.0;
+	IssmDouble turb=0.0;
+	IssmDouble ulw=0.0;
+	IssmDouble dT_ulw=0.0;
+	IssmDouble dlw=0.0;
+	IssmDouble dT_dlw=0.0;
+
+	/*outputs:*/
+	IssmDouble EC=0.0;
+	IssmDouble* T=*pT;
+	IssmDouble ulwrf=0.0;
+
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   thermal module\n");
+
+	ds = d[0];      // density of top grid cell
+
+	// calculated air density [kg/m3]
+	dAir = 0.029 * pAir /(R * Ta);
+
+	// thermal capacity of top grid cell [J/k]
+	TCs = d[0]*dz[0]*CI; 
+
+	//initialize Evaporation - Condenstation 
+	EC = 0.0;
+
+	// check if all SW applied to surface or distributed throught subsurface
+	// swIdx = length(swf) > 1
+
+	// SURFACE ROUGHNESS (Bougamont, 2006)
+	// wind/temperature surface roughness height [m]
+	if (ds < dIce-Dtol && Ws < Wtol) z0 = 0.00012;        // 0.12 mm for dry snow
+	else if (ds >= dIce-Dtol) z0 = 0.0032;             // 3.2 mm for ice
+	else z0 = 0.0013;                            // 1.3 mm for wet snow
+
+	//zT and zQ are percentage of z0 (Foken 2008)
+	zratio=10.0;
+	zT=z0/zratio;
+	zQ=z0/zratio;
+
+	// if V = 0 goes to infinity therfore if V = 0 change
+	if(V<0.01-Dtol)V=0.01;
+
+	// Bulk-transfer coefficient for turbulent fluxes
+	An =  pow(0.4,2); // Bulk-transfer coefficient
+	C = An*V;  // shf & lhf common coefficient
+	An_den_T = (log(Tz/zT)*log(Vz/z0)); 
+	An_den_Q = (log(Tz/zQ)*log(Vz/z0)); 
+
+	// THERMAL CONDUCTIVITY (Sturm, 1997: J. Glaciology)
+	// calculate new K profile [W m-1 K-1]
+
+	// initialize conductivity
+	K= xNewZeroInit<IssmDouble>(m);
+
+	// for snow and firn (density < 910 kg m-3) (Sturm et al, 1997) or (Calonne et al., 2011)
+	if (tcIdx == 2){
+		for(int i=0;i<m;i++) if(d[i]<dIce-Dtol) K[i] = 0.024 - 1.23e-4 * d[i] + 2.5e-6 * (pow(d[i],2));
+	}
+	else{ //default (Sturm et al, 1997)
+		for(int i=0;i<m;i++) if(d[i]<dIce-Dtol) K[i] = 0.138 - 1.01e-3 * d[i] + 3.233e-6 * (pow(d[i],2));
+	}
+
+	// for ice (density >= 910 kg m-3)
+	for(int i=0;i<m;i++) if(d[i]>=dIce-Dtol) K[i] = 9.828 * exp(-5.7e-3*T[i]);
+
+	// THERMAL DIFFUSION COEFFICIENTS
+
+	// A discretization scheme which truncates the Taylor-Series expansion
+	// after the 3rd term is used. See Patankar 1980, Ch. 3&4
+
+	// discretized heat equation:
+
+	//                 Tp = (Au*Tuo+ Ad*Tdo+ (Ap-Au-Ad)Tpo+ S) / Ap
+
+	// where neighbor coefficients Au, Ap, & Ad are
+
+	//                   Au = [dz_u/2KU + dz/2KP]^-1
+	//                   Ad = [dz_d/2KD + dz/2KP]^-1
+	//                   Ap = d*CI*dz/Dt 
+
+	// and u & d represent grid points up and down from the center grid point 
+	// point p and o identifies previous time step values. S is a source term.
+
+	// u, d, and p conductivities
+	KU = xNew<IssmDouble>(m);
+	KD = xNew<IssmDouble>(m);
+	KP = xNew<IssmDouble>(m);
+
+	KU[0] = Delflag; //Thermal conductivity of air = 0.025 W/m/K
+	KD[m-1] = Delflag;
+	for(int i=1;i<m;i++) KU[i]= K[i-1];
+	for(int i=0;i<m-1;i++) KD[i] = K[i+1];
+	for(int i=0;i<m;i++) KP[i] = K[i];
+
+	// determine u, d & p cell widths
+	dzU = xNew<IssmDouble>(m);
+	dzD = xNew<IssmDouble>(m);
+	dzU[0]=Delflag;
+	dzD[m-1]=Delflag;
+
+	for(int i=1;i<m;i++) dzU[i]= dz[i-1];
+	for(int i=0;i<m-1;i++) dzD[i] = dz[i+1];
+
+	// determine minimum acceptable delta t (diffusion number > 1/2) [s]
+	// NS: 2.16.18 divided dt by scaling factor, default set to 1/11 for stability
+	dt=1e12; 
+	for(int i=0;i<m;i++) dt = min(dt,CI * pow(dz[i],2) * d[i]  / (3. * K[i]) * thermo_scaling);
+
+	// smallest possible even integer of 60 min where diffusion number > 1/2
+	// must go evenly into one hour or the data frequency if it is smaller
+
+	// all integer factors of the number of second in a day (86400 [s])
+	int f[45] = {1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 30, 36, 40, 45, 48, 50, 60,
+    72, 75, 80, 90, 100, 120, 144, 150, 180, 200, 225, 240, 300, 360, 400, 450, 600, 720, 900, 1200, 1800, 3600};
+
+	// return the min integer factor that is < dt
+	max_fdt=f[0];
+	for(int i=0;i<45;i++){
+		if (f[i]<dt-Dtol)if(f[i]>=max_fdt-Dtol)max_fdt=f[i];
+	}
+	dt=max_fdt;
+
+	// determine mean (harmonic mean) of K/dz for u, d, & p
+	Au = xNew<IssmDouble>(m);
+	Ad = xNew<IssmDouble>(m);
+	Ap = xNew<IssmDouble>(m);
+	for(int i=0;i<m;i++){
+		Au[i] = pow((dzU[i]/2.0/KU[i] + dz[i]/2.0/KP[i]),-1.0);
+		Ad[i] = pow((dzD[i]/2.0/KD[i] + dz[i]/2.0/KP[i]),-1.0);
+		Ap[i] = (d[i]*dz[i]*CI)/dt;
+	}
+
+	// create "neighbor" coefficient matrix
+	Nu = xNewZeroInit<IssmDouble>(m);
+	Nd = xNewZeroInit<IssmDouble>(m);
+	Np = xNewZeroInit<IssmDouble>(m);
+	for(int i=0;i<m;i++){
+		Nu[i] = Au[i] / Ap[i];
+		Nd[i] = Ad[i] / Ap[i];
+		Np[i]= 1.0 - Nu[i] - Nd[i];
+	}
+
+	// specify boundary conditions: constant flux at bottom
+	Nu[m-1] = 0.0;
+	Np[m-1] = 1.0;
+
+	// zero flux at surface
+	Np[0] = 1.0 - Nd[0];
+
+	// Create neighbor arrays for diffusion calculations instead of a tridiagonal matrix
+	Nu[0] = 0.0;
+	Nd[m-1] = 0.0;
+
+	/* RADIATIVE FLUXES*/
+
+	// energy supplied by shortwave radiation [J]
+	sw = xNew<IssmDouble>(m);
+	for(int i=0;i<m;i++) sw[i]= swf[i] * dt;
+
+	// temperature change due to SW
+	dT_sw = xNew<IssmDouble>(m);
+	for(int i=0;i<m;i++) dT_sw[i]= sw[i] / (CI * d[i] * dz[i]);
+
+	// Upward longwave radiation flux is calculated from the snow surface
+	// temperature which is set equal to the average temperature of the
+	// top grid cells.
+
+	// energy supplied by downward longwave radiation to the top grid cell [J]
+	dlw = dlwrf * dt;
+
+	// temperature change due to dlw_surf
+	dT_dlw = dlw / TCs;
+
+	// PREALLOCATE ARRAYS BEFORE LOOP FOR IMPROVED PERFORMANCE
+	T0 = xNewZeroInit<IssmDouble>(m+2);
+	Tu=xNew<IssmDouble>(m);
+	Td=xNew<IssmDouble>(m);
+
+	/* CALCULATE ENERGY SOURCES AND DIFFUSION FOR EVERY TIME STEP [dt]*/
+	for (IssmDouble i=1.0;i<=dt0;i+=dt){
+
+		// PART OF ENERGY CONSERVATION CHECK
+		// store initial temperature
+		//T_init = T;
+
+		// calculate temperature of snow surface (Ts)
+		Ts = T[0];
+		Ts = min(CtoK,Ts);    // don't allow Ts to exceed 273.15 K (0 degC)
+
+		//TURBULENT HEAT FLUX
+
+		// Monin-Obukhov Stability Correction
+		// Reference:
+		// Ohmura, A., 1982: Climate and Energy-Balance on the Arctic Tundra.
+		// Journal of Climatology, 2, 65-84.
+
+		// calculate the Bulk Richardson Number (Ri)
+		Ri = pow(100000./pAir,0.286)*(2.0*9.81*(Ta - Ts)) / (Tz*(Ta + Ts)* pow(V/(Vz),2.0));
+
+		IssmDouble PhiM;
+		IssmDouble PhiH;
+
+		// calculate Monin-Obukhov stability factors 'coefM' and 'coefH'
+		if (false){
+			// do not allow Ri to exceed 0.16
+			Ri = min(Ri, 0.16); //Ohmura, 1982
+
+			// calculate momentum 'coefM' stability factor
+			if (Ri > 0.0+Ttol){
+				// if stable
+				coefM = 1.0/(1.0-5.2*Ri);
+			}
+			else {
+				coefM =pow (1.0-18.0*Ri,-0.25);
+			}
+
+			// calculate heat/wind 'coef_H' stability factor
+			if (Ri <= -0.03+Ttol) coefH = coefM/1.3;
+			else coefH = coefM;
+
+         coefHT = coefH*An_den_T;
+         coefHQ = coefH*An_den_Q;
+
+		}
+		else if(false){
+
+			// do not allow Ri to exceed 0.19
+			Ri = min(Ri, 0.19); //Ohmura, 1982
+
+			// calculate momentum 'coefM' stability factor
+			if (Ri > 0.0+Ttol){
+				// if stable
+				//coefM = pow(1.0-5.0*Ri,2.0); //Fitzpatrick et al., 2017, from Brock et al., 2010
+				coefM=1.0+5.3*min((Ri/(1.0-5.0*Ri)),0.5);
+				coefH=1.0+8.0*min((Ri/(1.0-5.0*Ri)),0.5);
+			}
+			else {
+				//coefM =pow(1.0-16.0*max(Ri,-1.0),0.75); //Fitzpatrick et al., 2017, from Brock et al., 2010
+				coefM=pow(1.0-19.0*max(Ri/1.5,-2.0),-0.25);
+				coefH=0.95*pow(1.0-11.6*max(Ri/1.5,-2.0),-0.5);
+			}
+
+			coefHT = coefH*An_den_T;
+			coefHQ = coefH*An_den_Q;
+
+		}
+      else if (false){
+         // Greuell and Konzelman, 1994
+         // calculate momentum 'coefM' stability factor
+
+         if (Ri > 0.0+Ttol){
+            // if stable
+            coefM=1.0+15.0*Ri*pow(1.0+Ri,1./2.);
+            coefH=1.0;
+         }
+         else {
+            coefM=pow(1.0-15.0*Ri/(1.0+75.0*pow(0.4/log(Tz/zT),2)*pow(Tz/zT*fabs(Ri),1./2.)),-1);
+            coefH=1.0;
+         }
+
+         coefHT = coefH*An_den_T;
+         coefHQ = coefH*An_den_Q;
+
+      }
+      else {
+         IssmDouble a1=1.0;
+         IssmDouble b1=2.0/3.0;
+         IssmDouble c1=5.0;
+         IssmDouble d1=0.35;
+         IssmDouble PhiMz=0.0;
+         IssmDouble PhiHz=0.0;
+         IssmDouble PhiMz0=0.0;
+         IssmDouble PhiHzT=0.0;
+         IssmDouble PhiHzQ=0.0;
+         IssmDouble zL=0.0;
+         IssmDouble zLT=0.0;
+         IssmDouble zLM=0.0;
+
+         if (Ri > 0.0+Ttol){
+            // if stable
+
+            if(Ri < 0.2-Ttol){
+               zL = Ri/(1.0-5.0*Ri);
+            }
+            else{
+               zL=Ri;
+            }
+            //zL = min(zL, 0.5); //Sjoblom, 2014
+            zLM=max(zL/Vz*z0,1e-3);
+            zLT=max(zL/Tz*zT,1e-3);
+
+            //Ding et al. 2020, from Beljaars and Holtslag (1991)
+            PhiMz=-1.*(a1*zL + b1*(zL-c1/d1)*exp(-1.*d1*zL) + b1*c1/d1);
+            PhiHz=-1.*(pow(1.+2.*a1*zL/3.,1.5) + b1*(zL-c1/d1)*exp(-1.*d1*zL) + b1*c1/d1 - 1.0);
+            PhiMz0=-1.*(a1*zLM + b1*(zLM-c1/d1)*exp(-1.*d1*zLM) + b1*c1/d1);
+            PhiHzT=-1.*(pow(1.+2.*a1*zLT/3.,1.5) + b1*(zLT-c1/d1)*exp(-1.*d1*zLT) + b1*c1/d1 - 1.0);
+
+            PhiHzQ=PhiHzT;
+         }
+         else {
+            IssmDouble xm;
+            IssmDouble xh;
+            IssmDouble xmT;
+            IssmDouble xmM;
+
+            zL = Ri/1.5; //max(Ri, -0.5+Ttol)/1.5; //Hogstrom (1996)
+            //zL = max(zL, -2.0); //Sjoblom, 2014
+            zLM=min(zL/Vz*z0,-1e-3);
+            zLT=min(zL/Tz*zT,-1e-3);
+
+            if (true){ //Sjoblom, 2014
+               xm=pow(1.0-19.0*zL,-0.25);
+               PhiMz=2.0*log((1.+xm)/2.0) + log((1.+pow(xm,2))/2.0) - 2.*atan(xm) + Pi/2.;
+
+               xh=0.95*pow(1.0-11.6*zL,-0.5);
+               PhiHz=2.0*log((1.0+pow(xh,2))/2.0);
+            }
+            else{ //Ding et al., 2020
+               xm=pow(1.0-16*zL,0.25);
+               xmM=pow(1.0-16*zLM,0.25);
+               xmT=pow(1.0-16*zLT,0.25);
+               PhiMz=2.0*log((1.+xm)/2.0) + log((1.+pow(xm,2))/2.0) - 2.0*atan(xm) + Pi/2.0;
+               PhiMz0=2.0*log((1.+xmM)/2.0) + log((1.+pow(xmM,2))/2.0) - 2.0*atan(xmM) + Pi/2.0;
+
+               PhiHz=2.0*log((1.+pow(xm,2))/2.0);
+               PhiHzT=2.0*log((1.+pow(xmT,2))/2.0);
+
+               PhiHzQ=PhiHzT;
+            }
+         }
+
+         PhiM=PhiMz;
+         PhiH=PhiHz;
+         coefM = log(Vz/z0) - PhiMz + PhiMz0; //Ding et al., 2019
+         coefHT = log(Tz/zT) - PhiHz + PhiHzT; //Sjoblom, 2014, after Foken 2008
+         coefHQ = log(Tz/zQ) - PhiHz + PhiHzQ; //Sjoblom, 2014, after Foken 2008
+
+      }
+
+      //// Sensible Heat
+      // calculate the sensible heat flux [W m-2](Patterson, 1998)
+      shf = dAir * C * CA * (Ta - Ts) * pow(100000./pAir,0.286);
+
+      // adjust using Monin-Obukhov stability theory
+      shf = shf/(coefM*coefHT);
+
+      //// Latent Heat
+      // determine if snow pack is melting & calcualte surface vapour pressure over ice or liquid water
+      if (Ts >= CtoK-Ttol){
+         L = LV; //for liquid water at 273.15 k to vapor
+
+         //for liquid surface (assume liquid on surface when Ts == 0 deg C)
+         // Wright (1997), US Meteorological Handbook from Murphy and Koop, 2005 Appendix A
+         //eS = 611.21 * exp(17.502 * (Ts - CtoK) / (240.97 + Ts - CtoK));
+         // Murray 1967, https://cran.r-project.org/web/packages/humidity/vignettes/humidity-measures.html
+         eS = 610.78 * exp(17.2693882 * (Ts - CtoK - 0.01) / (Ts - 35.86));
+      }
+      else{
+         L = LS; // latent heat of sublimation
+
+         // for an ice surface Murphy and Koop, 2005 [Equation 7]
+         //eS = exp(9.550426 - 5723.265/Ts + 3.53068 * log(Ts) - 0.00728332 * Ts);
+         // for an ice surface Ding et al., 2019 after Bolton, 1980
+         eS = 610.78 * exp(21.8745584 * (Ts - CtoK - 0.01) / (Ts - 7.66));
+      }
+
+      // Latent heat flux [W m-2]
+      lhf = C * L * (eAir - eS) / (461.9*(Ta+Ts)/2.0);
+
+      // adjust using Monin-Obukhov stability theory (if lhf '+' then there is energy and mass gained at the surface,
+      // if '-' then there is mass and energy loss at the surface.
+      lhf = lhf/(coefM*coefHQ);
+
+		//mass loss (-)/acreation(+) due to evaporation/condensation [kg]
+		EC_day = lhf * dts / L;
+
+		// temperature change due turbulent fluxes
+		turb = (shf + lhf)* dt;
+		dT_turb = turb  / TCs;
+
+		// upward longwave contribution
+		IssmDouble deltaULW=0.0;
+		IssmDouble emissivity=1.0;
+		//If user wants to set a upward long wave bias
+		if(isdeltaLWup) deltaULW = dulwrfValue;
+		//If user wants to directly set emissivity, or grain radius is larger than the
+		// threshold, or eIdx is 2 and we have wet snow or ice, use prescribed emissivity
+		if(eIdx==0 || (teThresh - re[0])<Gdntol || (eIdx==2 && z0>(0.001+Gdntol))) emissivity = teValue;
+		ulw = - (SB * pow(Ts,4.0)* emissivity + deltaULW) * dt; 
+		ulwrf = ulwrf - ulw/dt0;
+
+		dT_ulw = ulw / TCs;
+
+		// new grid point temperature
+
+		//SW penetrates surface
+		if(!isconstrainsurfaceT){
+			for(int j=0;j<m;j++) T[j] = T[j] + dT_sw[j];
+			T[0] = T[0] + dT_dlw + dT_ulw + dT_turb;
+		}
+
+		// temperature diffusion
+		for(int j=0;j<m;j++) T0[1+j]=T[j];
+		T0[0]=Ta;
+		T0[m+1]=T[m-1];
+		for(int j=0;j<m;j++) Tu[j] = T0[j];
+		for(int j=0;j<m;j++) Td[j] = T0[2+j];
+		for(int j=0;j<m;j++) T[j] = (Np[j] * T[j]) + (Nu[j] * Tu[j]) + (Nd[j] * Td[j]);
+
+		// calculate cumulative evaporation (+)/condensation(-)
+		if(!isconstrainsurfaceT) EC = EC + (EC_day/dts)*dt;
+		lhf_cum=lhf_cum+lhf*dt/dt0;
+		shf_cum=shf_cum+shf*dt/dt0;
+
+		/* CHECK FOR ENERGY (E) CONSERVATION [UNITS: J]
+		//energy flux across lower boundary (energy supplied by underling ice)
+		base_flux = Ad(-1)*(T_init()-T_init(-1)) * dt;
+
+		E_used = sum((T - T_init) * (d*dz*CI));
+		E_sup = ((sum(swf)  * dt) + dlw + ulw + turb + base_flux);
+
+		E_diff = E_used - E_sup;
+
+		if fabs(E_diff) > 1E-6 || isnan(E_diff)
+		disp(T(1))
+		_error_("energy not conserved in thermodynamics equations");
+		*/
+	}
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(K);
+	xDelete<IssmDouble>(KU);
+	xDelete<IssmDouble>(KD);
+	xDelete<IssmDouble>(KP);
+	xDelete<IssmDouble>(Au);
+	xDelete<IssmDouble>(Ad);
+	xDelete<IssmDouble>(Ap);
+	xDelete<IssmDouble>(Nu);
+	xDelete<IssmDouble>(Nd);
+	xDelete<IssmDouble>(Np);
+	xDelete<IssmDouble>(dzU);
+	xDelete<IssmDouble>(dzD);
+	xDelete<IssmDouble>(sw);
+	xDelete<IssmDouble>(dT_sw);
+	xDelete<IssmDouble>(T0);
+	xDelete<IssmDouble>(Tu);
+	xDelete<IssmDouble>(Td);
+
+	/*Assign output pointers:*/
+	*pEC=EC;
+	*plhf=lhf_cum;
+	*pshf=shf_cum;
+	*pT=T;
+	*pulwrf=ulwrf;
+
+}  /*}}}*/
+void shortwave(IssmDouble** pswf, int swIdx, int aIdx, IssmDouble dsw, IssmDouble dswdiff, IssmDouble as, IssmDouble asdiff, IssmDouble* d, IssmDouble* dz, IssmDouble* re, IssmDouble dIce, int m, int sid){ /*{{{*/
+
+	// DISTRIBUTES ABSORBED SHORTWAVE RADIATION WITHIN SNOW/ICE
+
+	// swIdx = 0 : all absorbed SW energy is assigned to the top grid cell
+
+	// swIdx = 1 : absorbed SW is distributed with depth as a function of:
+	//   default   : snow density (taken from Bassford, 2002)
+	//   if aIdx=2 : grain size in 3 spectral bands (Brun et al., 1992)
+
+	// Inputs
+	//   swIdx   = shortwave allowed to penetrate surface (0 = No, 1 = Yes)
+	//   aIdx    = method for calculating albedo (1-4)
+	//   dsw     = downward shortwave radiative flux [w m-2]
+	//   dswdiff  = downward shortwave diffuse radiative flux [w m-2]
+	//   as      = surface albedo
+	//   asdiff  = surface albedo for diffuse radiation
+	//   d       = grid cell density [kg m-3]
+	//   dz      = grid cell depth [m]
+	//   re      = grid cell effective grain radius [mm]
+
+	// Outputs
+	//   swf     = absorbed shortwave radiation [W m-2]
+	//
+
+	/*outputs: */
+	IssmDouble* swf=NULL;
+
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   shortwave module\n");
+
+	/*Initialize and allocate: */
+	swf=xNewZeroInit<IssmDouble>(m);
+
+	// SHORTWAVE FUNCTION
+	if (swIdx == 0 | (dIce - d[0])<Dtol) {// all sw radation is absorbed in by the top grid cell
+
+		// calculate surface shortwave radiation fluxes [W m-2]
+		if (aIdx == 1){
+			swf[0] = (1.0 - as) * max(0.0,(dsw - dswdiff)) +  (1.0 - asdiff) * dswdiff;
+		}
+		else{
+			swf[0] = (1.0 - as) * dsw;
+		}
+	}
+	else{ // sw radation is absorbed at depth within the glacier
+
+		if (aIdx == 2){    // function of effective radius (3 spectral bands)
+
+			IssmDouble * gsz=NULL;
+			IssmDouble * B1_cum=NULL;
+			IssmDouble * B2_cum=NULL;
+			IssmDouble* h =NULL;
+			IssmDouble* B1 =NULL;
+			IssmDouble* B2 =NULL;
+			IssmDouble* exp1 = NULL;
+			IssmDouble* exp2 = NULL;
+			IssmDouble*  Qs1 = NULL;
+			IssmDouble*  Qs2 = NULL;
+
+			// convert effective radius [mm] to grain size [m]
+			gsz=xNew<IssmDouble>(m);
+			for(int i=0;i<m;i++) gsz[i]= (re[i] * 2.0) / 1000.0;
+
+			// Spectral fractions [0.3-0.8um 0.8-1.5um 1.5-2.8um]
+			// (Lefebre et al., 2003)
+			IssmDouble sF[3] = {0.606, 0.301, 0.093};
+
+			// initialize variables
+			B1_cum=xNew<IssmDouble>(m+1);
+			B2_cum=xNew<IssmDouble>(m+1);
+			for(int i=0;i<m+1;i++){
+				B1_cum[i]=1.0;
+				B2_cum[i]=1.0;
+			}
+
+			// spectral albedos:
+			// 0.3 - 0.8um
+			IssmDouble a0 = min(0.98, 0.95 - 1.58 *pow(gsz[0],0.5));
+			// 0.8 - 1.5um
+			IssmDouble a1 = max(0.0, 0.95 - 15.4 *pow(gsz[0],0.5));
+			// 1.5 - 2.8um
+			IssmDouble a2 = max(0.127, 0.88 + 346.3*gsz[0] - 32.31*pow(gsz[0],0.5));
+
+			// separate net shortwave radiative flux into spectral ranges
+			IssmDouble swfS[3];
+			swfS[0] = (sF[0] * dsw) * (1.0 - a0);
+			swfS[1] = (sF[1] * dsw) * (1.0 - a1);
+			swfS[2] = (sF[2] * dsw) * (1.0 - a2);
+
+			// absorption coefficient for spectral range:
+			h =xNew<IssmDouble>(m);
+			B1 =xNew<IssmDouble>(m);
+			B2 =xNew<IssmDouble>(m);
+			for(int i=0;i<m;i++) h[i]= d[i] /(pow(gsz[i],0.5));
+			for(int i=0;i<m;i++) B1[i] = 0.0192 * h[i];                 // 0.3 - 0.8um
+			for(int i=0;i<m;i++) B2[i]= 0.1098 * h[i];                 // 0.8 - 1.5um
+			// B3 = +inf                     // 1.5 - 2.8um
+
+			// cumulative extinction factors
+			exp1 = xNew<IssmDouble>(m); 
+			exp2 = xNew<IssmDouble>(m); 
+			for(int i=0;i<m;i++) exp1[i]=exp(-B1[i]*dz[i]);
+			for(int i=0;i<m;i++) exp2[i]=exp(-B2[i]*dz[i]);
+
+			for(int i=0;i<m;i++){
+				IssmDouble cum1=exp1[0];
+				IssmDouble cum2=exp2[0];
+				for(int j=1;j<=i;j++){
+					cum1 = cum1*exp1[j];
+					cum2 = cum2*exp2[j];
+				}
+				B1_cum[i+1]=cum1;
+				B2_cum[i+1]=cum2;
+			}
+
+			// flux across grid cell boundaries
+			Qs1 = xNew<IssmDouble>(m+1);
+			Qs2 = xNew<IssmDouble>(m+1);
+			for(int i=0;i<m+1;i++){
+				Qs1[i] = swfS[0] * B1_cum[i];
+				Qs2[i] = swfS[1] * B2_cum[i];
+			}
+
+			// net energy flux to each grid cell
+			for(int i=0;i<m;i++) swf[i]= (Qs1[i]-Qs1[i+1]) + (Qs2[i]-Qs2[i+1]);
+
+			// add flux absorbed at surface
+			swf[0] = swf[0]+ swfS[2];
+
+			/*Free resources: */
+			xDelete<IssmDouble>(gsz);
+			xDelete<IssmDouble>(B1_cum);
+			xDelete<IssmDouble>(B2_cum);
+			xDelete<IssmDouble>(h);
+			xDelete<IssmDouble>(B1);
+			xDelete<IssmDouble>(B2);
+			xDelete<IssmDouble>(exp1);
+			xDelete<IssmDouble>(exp2);
+			xDelete<IssmDouble>(Qs1);
+			xDelete<IssmDouble>(Qs2);
+
+		}
+		else{  //function of grid cell density
+
+			/*intermediary: */
+			IssmDouble* B_cum = NULL;
+			IssmDouble* exp_B = NULL;
+			IssmDouble* Qs    = NULL;
+			IssmDouble* B    = NULL;
+
+			// fraction of sw radiation absorbed in top grid cell (wavelength > 0.8um)
+			IssmDouble SWs = 0.36;
+
+			// SWs and SWss coefficients need to be better constranted. Greuell
+			// and Konzelmann 1994 used SWs = 0.36 and SWss = 0.64 as this the
+			// the % of SW radiation with wavelengths > and < 800 nm
+			// respectively.  This, however, may not account for the fact that
+			// the albedo of wavelengths > 800 nm has a much lower albedo.
+
+			// calculate surface shortwave radiation fluxes [W m-2]
+			IssmDouble swf_s = SWs * (1.0 - as) * dsw;
+
+			// calculate surface shortwave radiation fluxes [W m-2]
+			IssmDouble swf_ss = (1.0-SWs) * (1.0 - as) * dsw;
+
+			// SW allowed to penetrate into snowpack
+			IssmDouble Bs = 10.0;    // snow SW extinction coefficient [m-1] (Bassford,2006)
+			IssmDouble Bi = 1.3;   // ice SW extinction coefficient [m-1] (Bassford,2006)
+
+			// calculate extinction coefficient B [m-1] vector
+			B=xNew<IssmDouble>(m);
+			for(int i=0;i<m;i++) B[i] = Bs + (300.0 - d[i]) * ((Bs - Bi)/(dIce - 300.0));
+
+			// cumulative extinction factor
+			B_cum = xNew<IssmDouble>(m+1);
+			exp_B = xNew<IssmDouble>(m);
+			for(int i=0;i<m;i++)exp_B[i]=exp(-B[i]*dz[i]);
+
+			B_cum[0]=1.0;
+			for(int i=0;i<m;i++){
+				IssmDouble cum_B=exp_B[0];
+				for(int j=1;j<=i;j++) cum_B=cum_B*exp_B[j];
+				B_cum[i+1]=  cum_B;
+			}
+
+			// flux across grid cell boundaries
+			Qs=xNew<IssmDouble>(m+1);
+			for(int i=0;i<m+1;i++) Qs[i] = swf_ss * B_cum[i];
+
+			// net energy flux to each grid cell
+			for(int i=0;i<m;i++) swf[i] = (Qs[i]-Qs[i+1]);
+
+			// add flux absorbed at surface
+			swf[0] += swf_s;
+
+			/*Free resources:*/
+			xDelete<IssmDouble>(B_cum);
+			xDelete<IssmDouble>(exp_B);
+			xDelete<IssmDouble>(Qs);
+			xDelete<IssmDouble>(B);
+		}
+	}
+	/*Assign output pointers: */
+	*pswf=swf;
+
+} /*}}}*/ 
+void accumulation(IssmDouble** pT, IssmDouble** pdz, IssmDouble** pd, IssmDouble** pW, IssmDouble** pa, IssmDouble** padiff, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, IssmDouble* pRa, int* pm, int aIdx, int dsnowIdx, IssmDouble Tmean, IssmDouble T_air, IssmDouble P, IssmDouble dzMin, IssmDouble aSnow, IssmDouble C, IssmDouble V, IssmDouble Vmean, IssmDouble dIce, int sid){ /*{{{*/
+
+	// Adds precipitation and deposition to the model grid
+
+	// Author: Alex Gardner, University of Alberta
+	// Date last modified: JAN, 2008
+
+	/* Description:
+	   adjusts the properties of the top grid cell to account for accumulation
+	   T_air & T = Air and top grid cell temperatures [K]
+		Tmean =  average surface temperature [K]
+		Vmean =  average wind velocity [m s-1]
+		V =  wind velocity [m s-1]
+		C =  average accumulation rate [kg m-2 yr-1]
+	   dz = topgrid cell length [m]
+	   d = density of top grid gell [kg m-3]
+		P = precipitation [mm w.e.] or [kg m-3]
+		Ra = rainfall [mm w.e.] or [kg m-3]
+		re = effective grain radius [mm]
+		gdn = grain dentricity
+		gsp = grain sphericity*/
+
+	// MAIN FUNCTION
+	// specify constants
+	IssmDouble dSnow = 150.0;    // density of snow [kg m-3]
+	IssmDouble reNew = 0.05;    // new snow grain size [mm]
+	IssmDouble gdnNew = 1.0;     // new snow dendricity 
+	IssmDouble gspNew = 0.5;   // new snow sphericity 
+
+	/*intermediary: */
+	IssmDouble* mInit=NULL;
+	bool        top=true;
+	IssmDouble  mass=0.0;
+	IssmDouble  massinit=0.0;
+	IssmDouble  mass_diff=0.0;
+
+	/*output: */
+	IssmDouble* T=NULL;
+	IssmDouble* dz=NULL;
+	IssmDouble* d=NULL;
+	IssmDouble* W=NULL;
+	IssmDouble* a=NULL;
+	IssmDouble* adiff=NULL;
+	IssmDouble* re=NULL;
+	IssmDouble* gdn=NULL;
+	IssmDouble* gsp=NULL;
+	IssmDouble  ra=0.0;
+	int         m=0;
+
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   accumulation module\n");
+
+	/*Recover pointers: */
+	T=*pT;
+	dz=*pdz;
+	d=*pd;
+	W=*pW;
+	a=*pa;
+	adiff=*padiff;
+	re=*pre;
+	gdn=*pgdn;
+	gsp=*pgsp;
+	m=*pm;
+	ra=*pRa;
+
+	//Density of fresh snow [kg m-3]
+	switch (dsnowIdx){
+		case 0: // Default value defined above
+			break;
+
+		case 1: // Density of Antarctica snow
+			dSnow = 350.0;
+			//dSnow = 360.0; //FirnMICE Lundin et al., 2017
+			break;
+
+		case 2: // Density of Greenland snow, Fausto et al., 2018
+			dSnow = 315.0;
+			//From Vionnet et al., 2012 (Crocus)
+			gdnNew = min(max(1.29 - 0.17*V,0.20),1.0);
+			gspNew = min(max(0.08*V + 0.38,0.5),0.9);
+			reNew=max(1e-1*(gdnNew/.99+(1.0-1.0*gdnNew/.99)*(gspNew/.99*3.0+(1.0-gspNew/.99)*4.0))/2.0,Gdntol);
+			break;
+
+		case 3: //Surface snow accumulation density from Kaspers et al., 2004, Antarctica
+			//dSnow = alpha1 + beta1*T + delta1*C + epsilon1*W
+			//     7.36x10-2  1.06x10-3  6.69x10-2  4.77x10-3 
+			dSnow=(7.36e-2 + 1.06e-3*min(Tmean,CtoK-Ttol) + 6.69e-2*C/1000. + 4.77e-3*Vmean)*1000.;
+			break;
+
+		case 4: // Kuipers Munneke and others (2015), Greenland
+			dSnow = 481.0 + 4.834*(Tmean-CtoK);
+			break;
+	}
+
+	// determine initial mass
+	mInit=xNew<IssmDouble>(m);
+	for(int i=0;i<m;i++) mInit[i]= d[i] * dz[i];
+	massinit=0.0; 
+	for(int i=0;i<m;i++)massinit+=mInit[i];
+
+	if (P > 0.0+Ptol){
+
+		if (T_air <= CtoK+Ttol){ // if snow
+
+			IssmDouble  z_snow = P/dSnow;               // depth of snow
+			IssmDouble dfall = gdnNew;
+			IssmDouble sfall = gspNew;
+			IssmDouble refall = reNew;
+
+			// if snow depth is greater than specified min dz, new cell created
+			if (z_snow > dzMin+Dtol){
+
+				newcell(&T,T_air,top,m); //new cell T
+				newcell(&dz,z_snow,top,m); //new cell dz
+				newcell(&d,dSnow,top,m); //new cell d
+				newcell(&W,0.0,top,m); //new cell W
+				newcell(&a,aSnow,top,m); //new cell a
+				newcell(&adiff,aSnow,top,m); //new cell a
+				newcell(&re,refall,top,m); //new cell grain size
+				newcell(&gdn,dfall,top,m); //new cell grain dendricity
+				newcell(&gsp,sfall,top,m); //new cell grain sphericity
+				m=m+1;
+			}
+			else { // if snow depth is less than specified minimum dz snow
+
+				mass = mInit[0] + P;         // grid cell adjust mass
+
+				dz[0] = dz[0] + P/dSnow;    // adjust grid cell depth      
+				d[0] = mass / dz[0];    // adjust grid cell density
+
+				// adjust variables as a linearly weighted function of mass
+				// adjust temperature (assume P is same temp as air)
+				T[0] = (T_air * P + T[0] * mInit[0])/mass;
+
+				// adjust a, re, gdn & gsp
+				if(aIdx>0)a[0] = (aSnow * P + a[0] * mInit[0])/mass;
+				gdn[0] = dfall; 
+				gsp[0] = sfall; 
+				re[0] = max(1e-1*(gdn[0]/.99+(1.0-1.0*gdn[0]/.99)*(gsp[0]/.99*3.0+(1.0-gsp[0]/.99)*4.0))/2.0,Gdntol);
+			}
+		}
+		else{ // if rain    
+
+			/*rain is added by increasing the mass and temperature of the ice
+			  of the top grid cell.  Temperatures are set artifically high to
+			  account for the latent heat of fusion.  This is the same as
+			  directly adding liquid water to the the snow pack surface but
+			  makes the numerics easier.*/
+
+			// grid cell adjust mass
+			mass = mInit[0] + P;
+
+			// adjust temperature
+			// liquid: must account for latent heat of fusion
+			T[0] = (P *(T_air + LF/CI) + T[0] * mInit[0]) / mass;
+
+			// adjust grid cell density
+			d[0] = mass / dz[0];
+
+			// if d > the density of ice, d = dIce
+			if (d[0] > dIce-Dtol){
+				d[0] = dIce;           // adjust d
+				dz[0] = mass / d[0];    // dz is adjusted to conserve mass
+			}
+
+			ra=P;
+		}
+
+		// check for conservation of mass
+		mass=0; for(int i=0;i<m;i++)mass+=d[i]*dz[i]; 
+
+		mass_diff = mass - massinit - P;
+
+		#ifndef _HAVE_AD_  //avoid round operation. only check in forward mode.
+		mass_diff = round(mass_diff * 100.0)/100.0;
+		if (mass_diff > 0) _error_("mass not conserved in accumulation function");
+		#endif
+
+	}
+	/*Free resources:*/
+	if(mInit)xDelete<IssmDouble>(mInit);
+
+	/*Assign output pointers:*/
+	*pT=T;
+	*pdz=dz;
+	*pd=d;
+	*pW=W;
+	*pa=a;
+	*padiff=adiff;
+	*pre=re;
+	*pgdn=gdn;
+	*pgsp=gsp;
+	*pm=m;
+	*pRa=ra;
+} /*}}}*/
+void melt(IssmDouble* pM, IssmDouble* pMs, IssmDouble* pR, IssmDouble* pF, IssmDouble* pmAdd, IssmDouble* pdz_add, IssmDouble** pT, IssmDouble** pd, IssmDouble** pdz, IssmDouble** pW, IssmDouble** pa, IssmDouble** padiff, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pn, IssmDouble Ra, IssmDouble dzMin, IssmDouble zMax, IssmDouble zMin, IssmDouble zTop, IssmDouble zY, IssmDouble dIce, int sid){ /*{{{*/
+
+	//// MELT ROUTINE
+
+	// Description:
+	// computes the quantity of meltwater due to snow temperature in excess of
+	// 0 deg C, determines pore water content and adjusts grid spacing
+
+	/*intermediary:*/
+	IssmDouble* m=NULL;
+	IssmDouble* maxF=NULL;
+	IssmDouble* dW=NULL;
+	IssmDouble* exsW=NULL;
+	IssmDouble* exsT=NULL;
+	IssmDouble* surpT=NULL;
+	IssmDouble* surpE=NULL;
+	IssmDouble* flxDn=NULL;
+	IssmDouble  ER=0.0;
+	IssmDouble* EI=NULL;
+	IssmDouble* EW=NULL;
+	IssmDouble* M=NULL;
+	int*        D=NULL;
+
+	IssmDouble sumM=0.0;
+	IssmDouble sumER=0.0;
+	IssmDouble addE=0.0;
+	IssmDouble mSum0=0.0;
+	IssmDouble sumE0=0.0;
+	IssmDouble mSum1=0.0;
+	IssmDouble sumE1=0.0;
+	IssmDouble dE=0.0;
+	IssmDouble dm=0.0;
+	IssmDouble X=0.0;
+	IssmDouble Wi=0.0;
+
+	int        D_size = 0;
+
+	/*outputs:*/
+	IssmDouble  Msurf = 0.0;
+	IssmDouble  mAdd = 0.0;
+	IssmDouble  surplusE = 0.0;
+	IssmDouble  surplusT = 0.0;
+	IssmDouble  dz_add = 0.0;
+	IssmDouble  Rsum = 0.0;
+	IssmDouble  Fsum = 0.0;
+	IssmDouble* T=*pT;
+	IssmDouble* d=*pd;
+	IssmDouble* dz=*pdz;
+	IssmDouble* W=*pW;
+	IssmDouble* a=*pa;
+	IssmDouble* adiff=*padiff;
+	IssmDouble* re=*pre;
+	IssmDouble* gdn=*pgdn;
+	IssmDouble* gsp=*pgsp;
+	int         n=*pn;
+	IssmDouble* R=NULL;
+
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   melt module\n");
+
+	//// INITIALIZATION
+
+	/*Allocations: */
+	M=xNewZeroInit<IssmDouble>(n); 
+	maxF=xNewZeroInit<IssmDouble>(n); 
+	dW=xNewZeroInit<IssmDouble>(n); 
+
+	// store initial mass [kg] and energy [J]
+	m=xNew<IssmDouble>(n); for(int i=0;i<n;i++) m[i] = dz[i]* d[i];                    // grid cell mass [kg]
+	EI=xNew<IssmDouble>(n); for(int i=0;i<n;i++)EI[i] = m[i] * T[i] * CI;               // initial enegy of snow/ice
+	EW=xNew<IssmDouble>(n); for(int i=0;i<n;i++)EW[i]= W[i] * (LF + CtoK * CI);     // initial enegy of water
+
+	mSum0 = cellsum(W,n) + cellsum(m,n);        // total mass [kg]
+	sumE0 = cellsum(EI,n) + cellsum(EW,n);      // total energy [J]
+
+	// initialize melt and runoff scalars
+	Rsum = 0.0;       // runoff [kg]
+	Fsum = 0.0;       // refreeze [kg]
+	sumM = 0.0;       // total melt [kg]
+	mAdd = 0.0;       // mass added/removed to/from base of model [kg]
+	addE = 0.0;       // energy added/removed to/from base of model [J]
+	dz_add=0.0;      // thickness of the layer added/removed to/from base of model [m]
+
+	// calculate temperature excess above 0 deg C
+	exsT=xNewZeroInit<IssmDouble>(n);
+	for(int i=0;i<n;i++) exsT[i]= max(0.0, T[i] - CtoK);        // [K] to [degC]
+
+	// new grid point center temperature, T [K]
+	// for(int i=0;i<n;i++) T[i]-=exsT[i];
+	for(int i=0;i<n;i++) T[i]=min(T[i],CtoK);
+
+	// specify irreducible water content saturation [fraction]
+	const IssmDouble Swi = 0.07;                     // assumed constant after Colbeck, 1974
+	const IssmDouble dPHC = 830.0;                     //Pore closeoff density
+
+	//// REFREEZE PORE WATER
+	// check if any pore water
+	if (cellsum(W,n) > 0.0+Wtol){
+		if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("      pore water refreeze\n");
+		// calculate maximum freeze amount, maxF [kg]
+		for(int i=0;i<n;i++) maxF[i] = max(0.0, -((T[i] - CtoK) * m[i] * CI) / LF);
+
+		// freeze pore water and change snow/ice properties
+		for(int i=0;i<n;i++) dW[i] = min(maxF[i], W[i]);    // freeze mass [kg]   
+		for(int i=0;i<n;i++) W[i] -= dW[i];                                            // pore water mass [kg]
+		for(int i=0;i<n;i++) m[i] += dW[i];                                            // new mass [kg]
+		for(int i=0;i<n;i++) d[i] = m[i] / dz[i];                                    // density [kg m-3]   
+		for(int i=0;i<n;i++) if(m[i]>Wtol) T[i] = T[i] + (dW[i]*(LF+(CtoK - T[i])*CI)/(m[i]*CI));      // temperature [K]
+
+		// if pore water froze in ice then adjust d and dz thickness
+		for(int i=0;i<n;i++)if(d[i]> dIce-Dtol)d[i]=dIce;
+		for(int i=0;i<n;i++) dz[i]= m[i]/d[i];
+
+	}
+
+	// squeeze water from snow pack
+	exsW=xNew<IssmDouble>(n); 
+	for(int i=0;i<n;i++){
+		Wi= (dIce - d[i]) * Swi * (m[i] / d[i]);        // irreducible water content [kg]
+		exsW[i] = max(0.0, W[i] - Wi);                  // water "squeezed" from snow [kg]
+	}
+
+	//// MELT, PERCOLATION AND REFREEZE
+
+	// initialize refreeze, runoff, flxDn and dW vectors [kg]
+	IssmDouble* F = xNewZeroInit<IssmDouble>(n);
+
+	// Add previous refreeze to F and reset dW
+	for(int i=0;i<n;i++){
+		F[i]=F[i]+dW[i];
+		dW[i] = 0.0;
+	}
+
+	// run melt algorithm if there is melt water or excess pore water
+	if ((cellsum(exsT,n) > 0.0+Ttol) || (cellsum(exsW,n) > 0.0+Wtol)){
+		// _printf_(""MELT OCCURS");
+		// check to see if thermal energy exceeds energy to melt entire cell
+		// if so redistribute temperature to lower cells (temperature surplus)
+		// (maximum T of snow before entire grid cell melts is a constant
+		// LF/CI = 159.1342)
+		surpT=xNew<IssmDouble>(n); for(int i=0;i<n;i++)surpT[i] = max(0.0, exsT[i]- LF/CI);
+
+		if (cellsum(surpT,n) > 0.0+Ttol ){
+			// _printf_("T Surplus");
+			// calculate surplus energy
+			surpE=xNew<IssmDouble>(n); for(int i=0;i<n;i++)surpE[i] = surpT[i] * CI * m[i];
+
+			int i = 0;
+			while (cellsum(surpE,n) > 0.0+Ttol && i<n){
+
+				if (i<n-1){
+					// use surplus energy to increase the temperature of lower cell
+					T[i+1] = surpE[i]/m[i+1]/CI + T[i+1];
+
+					exsT[i+1] = max(0.0, T[i+1] - CtoK) + exsT[i+1];
+					T[i+1] = min(CtoK, T[i+1]);
+
+					surpT[i+1] = max(0.0, exsT[i+1] - LF/CI);
+					surpE[i+1] = surpT[i+1] * CI * m[i+1];
+				}
+				else{
+					surplusT=max(0.0, exsT[i] - LF/CI);
+					surplusE=surpE[i];
+					if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0){
+						_printf0_(" WARNING: surplus energy at the base of GEMB column\n");
+					}
+				}
+
+				// adjust current cell properties (again 159.1342 is the max T)
+				exsT[i] = LF/CI;
+				surpE[i] = 0.0;
+				i = i + 1;
+			}
+		}
+
+		// convert temperature excess to melt [kg]
+		IssmDouble Mmax=0.0;
+		for(int i=0;i<n;i++){
+			Mmax=exsT[i] * d[i] * dz[i] * CI / LF;
+			M[i] = min(Mmax, m[i]);  // melt
+		}
+		Msurf = M[0];
+		sumM = max(0.0,cellsum(M,n)-Ra);  // total melt [kg] minus the liquid rain that had been added
+
+		// calculate maximum refreeze amount, maxF [kg]
+		for(int i=0;i<n;i++)maxF[i] = max(0.0, -((T[i] - CtoK) * d[i] * dz[i] * CI)/ LF);
+
+		// initialize refreeze, runoff, flxDn and dW vectors [kg]
+		IssmDouble* R = xNewZeroInit<IssmDouble>(n);
+
+		flxDn=xNewZeroInit<IssmDouble>(n+1);
+
+		// determine the deepest grid cell where melt/pore water is generated
+		X = 0;
+		for(int i=n-1;i>=0;i--){
+			if(M[i]> 0.0+Wtol || exsW[i]> 0.0+Wtol){
+				X=i;
+				break;
+			}
+		}
+
+		IssmDouble depthice=0.0;
+		int Xi=0;
+		//// meltwater percolation
+		for(int i=0;i<n;i++){
+			// calculate total melt water entering cell
+			IssmDouble inM = M[i]+ flxDn[i];
+
+			depthice=0.0;
+			if (d[i] >= dPHC-Dtol){
+				for(int l=i;(l<n && d[l]>=dPHC-Dtol);l++) depthice=depthice+dz[l];
+			}
+
+			// break loop if there is no meltwater and if depth is > mw_depth
+			if (fabs(inM) < Wtol && i > X){
+				break;
+			}
+			// if reaches impermeable ice layer all liquid water runs off (R)
+			else if (d[i] >= dIce-Dtol || (d[i] >= dPHC-Dtol && depthice>0.1+Dtol)){  // dPHC = pore hole close off [kg m-3]
+				// _printf_("ICE LAYER");
+				// no water freezes in this cell
+				// no water percolates to lower cell
+				// cell ice temperature & density do not change
+
+				m[i] = m[i] - M[i];                     // mass after melt
+				Wi = (dIce-d[i]) * Swi * (m[i]/d[i]);    // irreducible water 
+				dW[i] = max(min(inM, Wi - W[i]),-1*W[i]);            // change in pore water
+				R[i] = max(0.0, inM - dW[i]);             // runoff
+			}
+			// check if no energy to refreeze meltwater
+			else if (fabs(maxF[i]) < Dtol){
+				// _printf_("REFREEZE == 0");
+				// no water freezes in this cell
+				// cell ice temperature & density do not change
+
+				m[i] = m[i] - M[i];                     // mass after melt
+				Wi = (dIce-d[i]) * Swi * (m[i]/d[i]);    // irreducible water 
+				dW[i] = max(min(inM, Wi - W[i]),-1*W[i]);              // change in pore water
+				flxDn[i+1] = max(0.0, inM - dW[i]);         // meltwater out
+				R[i] = 0.0;
+			}
+			// some or all meltwater refreezes
+			else{
+				// change in density and temperature
+				// _printf_("MELT REFREEZE");
+				//-----------------------melt water-----------------------------
+				m[i] = m[i] - M[i];
+				IssmDouble dz_0 = m[i]/d[i];          
+				IssmDouble dMax = (dIce - d[i])*dz_0;              // d max = dIce
+				IssmDouble F1 = min(min(inM,dMax),maxF[i]);         // maximum refreeze               
+				m[i] = m[i] + F1;                       // mass after refreeze
+				d[i] = m[i]/dz_0;
+
+				//-----------------------pore water-----------------------------
+				Wi = (dIce-d[i])* Swi * dz_0;            // irreducible water 
+				dW[i] = max(min(inM - F1, Wi-W[i]),-1*W[i]);         // change in pore water
+				IssmDouble F2 = 0.0;                                 
+
+				if (dW[i] < 0.0-Wtol){                         // excess pore water
+					dMax = (dIce - d[i])*dz_0;          // maximum refreeze                                             
+					IssmDouble maxF2 = min(dMax, maxF[i]-F1);      // maximum refreeze
+					F2 = min(-1.0*dW[i], maxF2);            // pore water refreeze
+					m[i] = m[i] + F2;                   // mass after refreeze
+					d[i] = m[i]/dz_0;
+				}
+
+				F[i] = F[i] + F1 + F2;
+
+				flxDn[i+1] = max(0.0,inM - F1 - dW[i]);     // meltwater out        
+				if (m[i]>Wtol){
+					T[i] = T[i] + ((F1+F2)*(LF+(CtoK - T[i])*CI)/(m[i]*CI));// change in temperature
+				}
+
+				// check if an ice layer forms 
+				if (fabs(d[i] - dIce) < Dtol){
+					// _printf_("ICE LAYER FORMS");
+					// excess water runs off
+					R[i] = flxDn[i+1];
+					// no water percolates to lower cell
+					flxDn[i+1] = 0.0;
+				}
+			}
+			Xi=Xi+1;
+		}
+
+		//// GRID CELL SPACING AND MODEL DEPTH
+		for(int i=0;i<n;i++)if (W[i] < 0.0-Wtol) _error_("negative pore water generated in melt equations");
+
+		// delete all cells with zero mass
+		// adjust pore water
+		for(int i=0;i<n;i++)W[i] += dW[i];
+
+		//calculate Rsum:
+		Rsum=cellsum(R,n) + flxDn[Xi];
+
+		// delete all cells with zero mass
+		D_size=0; for(int i=0;i<n;i++)if(m[i]> (0.0+Wtol))D_size++; 
+		D=xNew<int>(D_size);
+		D_size=0; for(int i=0;i<n;i++)if(m[i]> (0.0+Wtol)){ D[D_size] = i; D_size++;}
+
+		celldelete(&m,n,D,D_size);
+		celldelete(&W,n,D,D_size);
+		celldelete(&d,n,D,D_size);
+		celldelete(&dz,n,D,D_size);
+		celldelete(&T,n,D,D_size);
+		celldelete(&a,n,D,D_size);
+		celldelete(&adiff,n,D,D_size);
+		celldelete(&re,n,D,D_size);
+		celldelete(&gdn,n,D,D_size);
+		celldelete(&gsp,n,D,D_size);
+		celldelete(&EI,n,D,D_size);
+		celldelete(&EW,n,D,D_size);
+		n=D_size;
+		xDelete<int>(D);
+
+		// calculate new grid lengths
+		for(int i=0;i<n;i++)dz[i] = m[i] / d[i];
+
+		/*Free resources:*/
+		xDelete<IssmDouble>(R);
+	}
+
+	//calculate Fsum:
+	Fsum=cellsum(F,n);
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(F);
+
+	//Manage the layering to match the user defined requirements
+	managelayers(&mAdd, &dz_add, &addE, &m, &EI, &EW, &T, &d, &dz, &W, &a, &adiff, &re, &gdn, &gsp, &n, dzMin, zMax, zMin, zTop, zY);
+
+	//// CHECK FOR MASS AND ENERGY CONSERVATION
+
+	// calculate final mass [kg] and energy [J]
+	sumER = Rsum * (LF + CtoK * CI);
+	for(int i=0;i<n;i++)EI[i] = m[i] * T[i] * CI;
+	for(int i=0;i<n;i++)EW[i] = W[i] * (LF + CtoK * CI);
+
+	mSum1 = cellsum(W,n) + cellsum(m,n) + Rsum;
+	sumE1 = cellsum(EI,n) + cellsum(EW,n);
+
+	/*checks: */
+	for(int i=0;i<n;i++) if (W[i]<0.0-Wtol) _error_("negative pore water generated in melt equations\n");
+
+	/*only in forward mode! avoid round in AD mode as it is not differentiable: */
+	#ifndef _HAVE_AD_
+	dm = round((mSum0 - mSum1 + mAdd)*100.0)/100.0;
+	dE = round(sumE0 - sumE1 - sumER +  addE - surplusE);
+	if (dm !=0  || dE !=0) _error_("mass or energy are not conserved in melt equations\n"
+			<< "dm: " << dm << " dE: " << dE << "\n");
+	#endif
+
+	/*Free resources:*/
+	if(m)xDelete<IssmDouble>(m);
+	if(EI)xDelete<IssmDouble>(EI);
+	if(EW)xDelete<IssmDouble>(EW);
+	if(maxF)xDelete<IssmDouble>(maxF);
+	if(dW)xDelete<IssmDouble>(dW);
+	if(exsW)xDelete<IssmDouble>(exsW);
+	if(exsT)xDelete<IssmDouble>(exsT);
+	if(surpT)xDelete<IssmDouble>(surpT);
+	if(surpE)xDelete<IssmDouble>(surpE);
+	if(flxDn)xDelete<IssmDouble>(flxDn);
+	if(D)xDelete<int>(D);
+	if(M)xDelete<IssmDouble>(M);
+
+	/*Assign output pointers:*/
+	*pMs=Msurf;
+	*pM=sumM;
+	*pR=Rsum;
+	*pF=Fsum;
+	*pmAdd=mAdd;
+	*pdz_add=dz_add;
+
+	*pT=T;
+	*pd=d;
+	*pdz=dz;
+	*pW=W;
+	*pa=a;
+	*padiff=adiff;
+	*pre=re;
+	*pgdn=gdn;
+	*pgsp=gsp;
+	*pn=n;
+
+} /*}}}*/ 
+void managelayers(IssmDouble* pmAdd, IssmDouble* pdz_add, IssmDouble* paddE, IssmDouble** pm, IssmDouble** pEI, IssmDouble** pEW, IssmDouble** pT, IssmDouble** pd, IssmDouble** pdz, IssmDouble** pW, IssmDouble** pa, IssmDouble** padiff, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pn, IssmDouble dzMin, IssmDouble zMax, IssmDouble zMin, IssmDouble zTop, IssmDouble zY){ /*{{{*/
+
+	/*intermediary:*/
+	IssmDouble* Zcum=NULL;
+	IssmDouble* dzMin2=NULL;
+	IssmDouble* dzMax2=NULL;
+	int*        D=NULL;
+
+	IssmDouble zY2=zY;
+	IssmDouble X=0.0;
+	int X1=0;
+	int X2=0;
+	int D_size = 0;
+
+	IssmDouble Ztot=0.0;
+	IssmDouble T_bot=0.0;
+	IssmDouble m_bot=0.0;
+	IssmDouble dz_bot=0.0;
+	IssmDouble d_bot=0.0;
+	IssmDouble W_bot=0.0;
+	IssmDouble a_bot=0.0;
+	IssmDouble adiff_bot=0.0;
+	IssmDouble re_bot=0.0;
+	IssmDouble gdn_bot=0.0;
+	IssmDouble gsp_bot=0.0;
+	IssmDouble EI_bot=0.0;
+	IssmDouble EW_bot=0.0;
+	bool       top=false;
+
+	/*outputs:*/
+	IssmDouble  mAdd = 0.0;
+	IssmDouble  addE = 0.0;
+	IssmDouble  dz_add = 0.0;
+	IssmDouble* T=*pT;
+	IssmDouble* d=*pd;
+	IssmDouble* dz=*pdz;
+	IssmDouble* W=*pW;
+	IssmDouble* a=*pa;
+	IssmDouble* adiff=*padiff;
+	IssmDouble* re=*pre;
+	IssmDouble* gdn=*pgdn;
+	IssmDouble* gsp=*pgsp;
+	IssmDouble* m=*pm;
+	IssmDouble* EI=*pEI;
+	IssmDouble* EW=*pEW;
+	int         n=*pn;
+
+	//Merging of cells as they are burried under snow.
+	Zcum=xNew<IssmDouble>(n);
+	dzMin2=xNew<IssmDouble>(n);
+	dzMax2=xNew<IssmDouble>(n);
+
+	X=0;
+	Zcum[0]=dz[0]; // Compute a cumulative depth vector
+	for (int i=0;i<n;i++){
+		if (i==0){
+			dzMin2[i]=dzMin;
+		}
+		else{
+			Zcum[i]=Zcum[i-1]+dz[i];
+			if (Zcum[i]<=zTop+Dtol){
+				dzMin2[i]=dzMin;
+				X=i;
+			}
+			else{
+				dzMin2[i]=zY2*dzMin2[i-1];
+			}
+		}
+	}
+
+	// Check to see if any cells are too small and need to be merged
+	for (int i=0; i<n; i++){
+		if ( (i<=X && dz[i]<dzMin-Dtol) || (i>X && dz[i]<dzMin2[i]-Dtol) ) {
+
+			if (i==n-1){
+				X2=i;
+				//find closest cell to merge with
+				for(int j=n-2;j>=0;j--){
+					if(m[j]!=Delflag){
+						X1=j;
+						break;
+					}
+				}
+			}
+			else{
+				X1=i+1;
+				X2=i;
+			}
+
+			// adjust variables as a linearly weighted function of mass
+			IssmDouble m_new = m[X2] + m[X1];
+			T[X1] = (T[X2]*m[X2] + T[X1]*m[X1]) / m_new;
+			a[X1] = (a[X2]*m[X2] + a[X1]*m[X1]) / m_new;
+			adiff[X1] = (adiff[X2]*m[X2] + adiff[X1]*m[X1]) / m_new;
+         //use grain properties from lower cell
+			re[X1] = re[X2]; 
+			gdn[X1] = gdn[X2]; 
+			gsp[X1] = gsp[X2]; 
+
+			// merge with underlying grid cell and delete old cell
+			dz[X1] = dz[X2] + dz[X1];                 // combine cell depths
+			d[X1] = m_new / dz[X1];                   // combine top densities
+			W[X1] = W[X1] + W[X2];                     // combine liquid water
+			m[X1] = m_new;                             // combine top masses
+
+			// set cell to -99999 for deletion
+			m[X2] = Delflag;
+		}
+	}
+
+	// delete combined cells
+	D_size=0; for(int i=0;i<n;i++)if(m[i]> Delflag+Wtol)D_size++; 
+	D=xNew<int>(D_size); 
+	D_size=0; for(int i=0;i<n;i++)if(m[i]> Delflag+Wtol){ D[D_size] = i; D_size++;}
+
+	celldelete(&m,n,D,D_size);
+	celldelete(&W,n,D,D_size);
+	celldelete(&dz,n,D,D_size);
+	celldelete(&d,n,D,D_size);
+	celldelete(&T,n,D,D_size);
+	celldelete(&a,n,D,D_size);
+	celldelete(&adiff,n,D,D_size);
+	celldelete(&re,n,D,D_size);
+	celldelete(&gdn,n,D,D_size);
+	celldelete(&gsp,n,D,D_size);
+	celldelete(&EI,n,D,D_size);
+	celldelete(&EW,n,D,D_size);
+	n=D_size;
+	xDelete<int>(D);
+
+	// check if any of the cell depths are too large
+	X=0;
+	Zcum[0]=dz[0]; // Compute a cumulative depth vector
+	for (int i=0;i<n;i++){
+		if (i==0){
+			dzMax2[i]=dzMin*2.0;
+		}
+		else{
+			Zcum[i]=Zcum[i-1]+dz[i];
+			if (Zcum[i]<=zTop+Dtol){
+				dzMax2[i]=dzMin*2.0;
+				X=i;
+			}
+			else{
+				dzMax2[i]=max(zY2*dzMin2[i-1],dzMin*2.0);
+			}
+		}
+	}
+
+	for (int j=n-1;j>=0;j--){
+		if ((j<X && dz[j] > dzMax2[j]+Dtol) || (dz[j] > dzMax2[j]*zY2+Dtol)){
+			// _printf_("dz > dzMin * 2");
+			// split in two
+			cellsplit(&dz, n, j,.5);
+			cellsplit(&W, n, j,.5);
+			cellsplit(&m, n, j,.5);
+			cellsplit(&T, n, j,1.0);
+			cellsplit(&d, n, j,1.0);
+			cellsplit(&a, n, j,1.0);
+			cellsplit(&adiff, n, j,1.0);
+			cellsplit(&EI, n, j,.5);
+			cellsplit(&EW, n, j,.5);
+			cellsplit(&re, n, j,1.0);
+			cellsplit(&gdn, n, j,1.0);
+			cellsplit(&gsp, n, j,1.0);
+			n++;
+		}
+	}
+
+	//// CORRECT FOR TOTAL MODEL DEPTH
+	// WORKS FINE BUT HAS BEEN DISABLED FOR CONVIENCE OF MODEL OUTPUT
+	// INTERPRETATION
+	// calculate total model depth
+	Ztot = cellsum(dz,n);
+
+	if (Ztot < zMin-Dtol){
+		// printf("Total depth < zMin %f \n", Ztot);
+		// mass and energy to be added
+		mAdd = m[n-1]+W[n-1];
+		addE = T[n-1]*m[n-1]*CI + W[n-1]*(LF+CtoK*CI);
+
+		// add a grid cell of the same size and temperature to the bottom
+		dz_bot=dz[n-1];
+		T_bot=T[n-1];
+		W_bot=W[n-1];
+		m_bot=m[n-1];
+		d_bot=d[n-1];
+		a_bot=a[n-1];
+		adiff_bot=adiff[n-1];
+		re_bot=re[n-1];
+		gdn_bot=gdn[n-1];
+		gsp_bot=gsp[n-1];
+		EI_bot=EI[n-1];
+		EW_bot=EW[n-1];
+
+		dz_add=dz_bot;
+
+		newcell(&dz,dz_bot,top,n);
+		newcell(&T,T_bot,top,n);
+		newcell(&W,W_bot,top,n);
+		newcell(&m,m_bot,top,n);
+		newcell(&d,d_bot,top,n);
+		newcell(&a,a_bot,top,n);
+		newcell(&adiff,adiff_bot,top,n);
+		newcell(&re,re_bot,top,n);
+		newcell(&gdn,gdn_bot,top,n);
+		newcell(&gsp,gsp_bot,top,n);
+		newcell(&EI,EI_bot,top,n);
+		newcell(&EW,EW_bot,top,n);
+		n=n+1;
+	}
+	else if (Ztot > zMax+Dtol){
+		// printf("Total depth > zMax %f \n", Ztot);
+		// mass and energy loss
+		mAdd = -(m[n-1]+W[n-1]);
+		addE = -(T[n-1]*m[n-1]*CI) - (W[n-1]*(LF+CtoK*CI));
+		dz_add=-(dz[n-1]);
+
+		// remove a grid cell from the bottom
+		D_size=n-1;
+		D=xNew<int>(D_size);
+
+		for(int i=0;i<n-1;i++) D[i]=i;
+		celldelete(&dz,n,D,D_size);
+		celldelete(&T,n,D,D_size);
+		celldelete(&W,n,D,D_size);
+		celldelete(&m,n,D,D_size);
+		celldelete(&d,n,D,D_size);
+		celldelete(&a,n,D,D_size);
+		celldelete(&adiff,n,D,D_size);
+		celldelete(&re,n,D,D_size);
+		celldelete(&gdn,n,D,D_size);
+		celldelete(&gsp,n,D,D_size);
+		celldelete(&EI,n,D,D_size);
+		celldelete(&EW,n,D,D_size);
+		n=D_size;
+		xDelete<int>(D);
+	}
+
+	/*Free resources:*/
+ 	xDelete<IssmDouble>(Zcum);
+	xDelete<IssmDouble>(dzMin2);
+	xDelete<IssmDouble>(dzMax2);
+	if(D)xDelete<int>(D);
+
+	/*Assign output pointers:*/
+	*pT=T;
+	*pd=d;
+	*pdz=dz;
+	*pW=W;
+	*pa=a;
+	*padiff=adiff;
+	*pre=re;
+	*pgdn=gdn;
+	*pgsp=gsp;
+	*pn=n;
+	*pm=m;
+	*pEI=EI;
+	*pEW=EW;
+
+	*pmAdd=mAdd;
+	*paddE=addE;
+	*pdz_add=dz_add;
+
+} /*}}}*/ 
+void densification(IssmDouble** pd,IssmDouble** pdz, IssmDouble* T, IssmDouble* re, int denIdx, int aIdx, int swIdx, IssmDouble adThresh, IssmDouble C, IssmDouble dt, IssmDouble Tmean, IssmDouble dIce, int m, int sid){ /*{{{*/
+
+	//// THIS NEEDS TO BE DOUBLE CHECKED AS THERE SEAMS TO BE LITTLE DENSIFICATION IN THE MODEL OUTOUT [MAYBE COMPACTION IS COMPENSATED FOR BY TRACES OF SNOW???]
+
+	//// FUNCTION INFO
+
+	// Author: Alex Gardner, University of Alberta
+	// Date last modified: FEB, 2008 
+
+	// Description: 
+	//   computes the densification of snow/firn using the emperical model of
+	//   Herron and Langway (1980) or the semi-emperical model of Anthern et al.
+	//   (2010)
+
+	// Inputs:
+	//   denIdx = densification model to use:
+	//       1 = emperical model of Herron and Langway (1980)
+	//       2 = semi-imerical model of Anthern et al. (2010)
+	//       3 = physical model from Appendix B of Anthern et al. (2010)
+	//   d   = initial snow/firn density [kg m-3]
+	//   T   = temperature [K]
+	//   dz  = grid cell size [m]
+	//   C   = average accumulation rate [kg m-2 yr-1]
+	//   dt  = time lapsed [s]
+	//   re  = effective grain radius [mm];
+	//   Ta  = mean annual temperature                                          
+
+	// Reference: 
+	// Herron and Langway (1980), Anthern et al. (2010)
+
+	//// FOR TESTING
+	// denIdx = 2;
+	// d = 800;
+	// T = 270;
+	// dz = 0.005;
+	// C = 200;
+	// dt = 60*60;
+	// re = 0.7;
+	// Tmean = 273.15-18;
+
+	//// MAIN FUNCTION
+	// specify constants
+	dt      = dt / dts;  // convert from [s] to [d]
+	// R     = 8.314        // gas constant [mol-1 K-1]
+	// Ec    = 60           // activation energy for self-diffusion of water
+	//                      // molecules through the ice tattice [kJ mol-1]
+	// Eg    = 42.4         // activation energy for grain growth [kJ mol-1]
+
+	/*intermediary: */
+	IssmDouble c0=0.0;
+	IssmDouble c1=0.0;
+   IssmDouble c2=0.0;
+	IssmDouble H=0.0;
+	IssmDouble M0=0.0;
+	IssmDouble M1=0.0;
+   IssmDouble M2=0.0;
+	IssmDouble c0arth=0.0;
+	IssmDouble c1arth=0.0;
+
+	/*output: */
+	IssmDouble* dz=NULL;
+	IssmDouble* d=NULL;
+
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   densification module\n");
+
+	/*Recover pointers: */
+	dz=*pdz;
+	d=*pd;
+
+	// initial mass
+	IssmDouble* mass_init = xNew<IssmDouble>(m);for(int i=0;i<m;i++) mass_init[i]=d[i] * dz[i];
+
+	/*allocations and initialization of overburden pressure and factor H: */
+	IssmDouble* cumdz = xNew<IssmDouble>(m-1);
+	cumdz[0]=dz[0];
+	for(int i=1;i<m-1;i++)cumdz[i]=cumdz[i-1]+dz[i];
+
+	IssmDouble* obp = xNew<IssmDouble>(m);
+	obp[0]=0.0;
+	for(int i=1;i<m;i++)obp[i]=cumdz[i-1]*d[i-1];
+
+	// calculate new snow/firn density for:
+	//   snow with densities <= 550 [kg m-3]
+	//   snow with densities > 550 [kg m-3]
+
+	for(int i=0;i<m;i++){
+		switch (denIdx){
+			case 1: // Herron and Langway (1980)
+				c0 = (11.0 * exp(-10160.0 / (T[i] * R))) * C/1000.0;
+				c1 = (575.0 * exp(-21400.0 / (T[i]* R))) * pow(C/1000.0,.5);
+				break;
+
+			case 2: // Arthern et al. (2010) [semi-emperical]
+				// common variable
+				// NOTE: Ec=60000, Eg=42400 (i.e. should be in J not kJ)
+				H = exp((-60000.0/(T[i] * R)) + (42400.0/(Tmean * R))) * (C * 9.81);
+				c0 = 0.07 * H;
+				c1 = 0.03 * H;
+				break;
+
+			case 3: // Arthern et al. (2010) [physical model eqn. B1]
+
+				// common variable
+				H = exp((-60000.0/(T[i] * R))) * obp[i] / pow(re[i]/1000.0,2.0);
+				c0 = 9.2e-9 * H;
+				c1 = 3.7e-9 * H;
+				break;
+
+			case 4: // Li and Zwally (2004)
+				c0 = (C/dIce) * (139.21 - 0.542*Tmean)*8.36*pow(CtoK - T[i],-2.061);
+				c1 = c0;
+				break;
+
+			case 5: // Helsen et al. (2008)
+				// common variable
+				c0 = (C/dIce) * (76.138 - 0.28965*Tmean)*8.36*pow(CtoK - T[i],-2.061);
+				c1 = c0;
+				break;
+
+			case 6: // Ligtenberg and others (2011) [semi-emperical], Antarctica 
+				// common variable
+				// From literature: H = exp((-60000.0/(Tmean * R)) + (42400.0/(Tmean * R))) * (C * 9.81);
+				H = exp((-60000.0/(T[i] * R)) + (42400.0/(Tmean * R))) * (C * 9.81);
+				c0arth = 0.07 * H;
+				c1arth = 0.03 * H;
+				//ERA-5 old
+				//M0 = max(2.3128 - (0.2480 * log(C)),0.25);
+				//M1 = max(2.7950 - (0.3318 * log(C)),0.25);
+				// ERA5 new aIdx=1, swIdx=0
+				if (aIdx==1 && swIdx==0){
+					if (fabs(adThresh - 820.0) < Dtol){
+                  // ERA5 v4
+                  M0 = max(1.5131 - (0.1317 * log(C)),0.25);
+                  M1 = max(1.8819 - (0.2158 * log(C)),0.25);
+					}
+					else{
+						// ERA5 new aIdx=1, swIdx=0
+						//M0 = max(1.8785 - (0.1811 * log(C)),0.25);
+						//M1 = max(2.0005 - (0.2346 * log(C)),0.25);
+						// ERA5 new aIdx=1, swIdx=0, bare ice
+						M0 = max(1.8422 - (0.1688 * log(C)),0.25);
+						M1 = max(2.4979 - (0.3225 * log(C)),0.25);
+					}
+				}
+				// ERA5 new aIdx=2, swIdx=1
+				else if (aIdx<3 && swIdx>0){
+					M0 = max(2.2191 - (0.2301 * log(C)),0.25);
+					M1 = max(2.2917 - (0.2710 * log(C)),0.25);
+				}
+				// ERA5 new aIdx=2, swIdx=0
+				//else if (aIdx==2){
+				//}
+				//From Ligtenberg
+				//H = exp((-60000.0/(Tmean * R)) + (42400.0/(Tmean * R))) * (C * 9.81);
+				//M0 = max(1.435 - (0.151 * log(C)),0.25);
+				//M1 = max(2.366 - (0.293 * log(C)),0.25);
+            //RACMO
+            M0 = max(1.6383 - (0.1691 * log(C)),0.25);
+            M1 = max(1.9991 - (0.2414 * log(C)),0.25);
+				c0 = M0*c0arth;
+				c1 = M1*c1arth;
+				c2 = M2*c1arth;
+				break;
+
+			case 7: // Kuipers Munneke and others (2015) [semi-emperical], Greenland
+				// common variable
+				// From literature: H = exp((-60000.0/(T[i] * R)) + (42400.0/(T[i] * R))) * (C * 9.81);
+				H = exp((-60000.0/(T[i] * R)) + (42400.0/(Tmean * R))) * (C * 9.81);
+				c0arth = 0.07 * H;
+				c1arth = 0.03 * H;
+				// ERA5 old
+				//M0 = max(1.8554 - (0.1316 * log(C)),0.25);
+				//M1 = max(2.8901 - (0.3014 * log(C)),0.25);
+				// ERA5 new aIdx=1, swIdx=0
+				if (aIdx==1 && swIdx==0){
+					if (fabs(adThresh - 820.0) < Dtol){
+						// ERA5 v4
+						M0 = max(1.3566 - (0.1350 * log(C)),0.25);
+						M1 = max(1.8705 - (0.2290 * log(C)),0.25);
+					}
+					else{
+						// ERA5 new aIdx=1, swIdx=0
+						//M0 = max(1.4574 - (0.1123 * log(C)),0.25);
+						//M1 = max(2.0238 - (0.2070 * log(C)),0.25);
+						// ERA5 new aIdx=1, swIdx=0, bare ice
+						M0 = max(1.4318 - (0.1055 * log(C)),0.25);
+						M1 = max(2.0453 - (0.2137 * log(C)),0.25);
+					}
+				}
+				// ERA5 new aIdx=2, swIdx=1
+				else if (aIdx<3 && swIdx>0){
+					M0 = max(1.7834 - (0.1409 * log(C)),0.25);
+					M1 = max(1.9260 - (0.1527 * log(C)),0.25);
+				}
+				// ERA5 new aIdx=2, swIdx=0
+				//else if (aIdx==2){
+				//}
+				// From Kuipers Munneke
+				//M0 = max(1.042 - (0.0916 * log(C)),0.25);
+				//M1 = max(1.734 - (0.2039 * log(C)),0.25);
+				// RACMO
+            M0 = max(1.2691 - (0.1184 * log(C)),0.25);
+            M1 = max(1.9983 - (0.2511 * log(C)),0.25);
+            c0 = M0*c0arth;
+            c1 = M1*c1arth;
+            c2 = M2*c1arth;
+				break;
+		}
+
+      // new snow density
+      if(d[i] <= 550.0+Dtol) d[i] = d[i] + (c0 * (dIce - d[i]) / 365.0 * dt);
+      else if(d[i] <= 830.0+Dtol | fabs(c2)<Dtol) d[i] = d[i] + (c1 * (dIce - d[i]) / 365.0 * dt);
+      else d[i] = d[i] + (c2 * (dIce - d[i]) / 365.0 * dt);
+
+		// do not allow densities to exceed the density of ice
+		if(d[i] > dIce-Ptol) d[i]=dIce;
+
+		// calculate new grid cell length
+		dz[i] = mass_init[i] / d[i];
+	}
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(mass_init);
+	xDelete<IssmDouble>(cumdz);
+	xDelete<IssmDouble>(obp);
+
+	/*Assign output pointers:*/
+	*pdz=dz;
+	*pd=d;
+
+} /*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp	(revision 27955)
@@ -0,0 +1,532 @@
+/*!\file SurfaceMassBalancex
+ * \brief: calculates SMB
+ */
+
+#include <config.h>
+#include "./SurfaceMassBalancex.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../modules.h"
+#include "../../classes/Inputs/TransientInput.h"
+#include "../../shared/Random/random.h"
+
+void SmbForcingx(FemModel* femmodel){/*{{{*/
+
+	// void SmbForcingx(smb,ni){
+	//    INPUT parameters: ni: working size of arrays
+	//    OUTPUT: mass-balance (m/yr ice): agd(NA)
+
+}/*}}}*/
+void SmbGradientsx(FemModel* femmodel){/*{{{*/
+
+	// void SurfaceMassBalancex(hd,agd,ni){
+	//    INPUT parameters: ni: working size of arrays
+	//    INPUT: surface elevation (m): hd(NA)
+	//    OUTPUT: mass-balance (m/yr ice): agd(NA)
+	int v;
+	IssmDouble rho_water;                   // density of fresh water
+	IssmDouble rho_ice;                     // density of ice
+	IssmDouble yts;								// conversion factor year to second
+
+	/*Loop over all the elements of this partition*/
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+
+		/*Allocate all arrays*/
+		int         numvertices = element->GetNumberOfVertices();
+		IssmDouble* Href        = xNew<IssmDouble>(numvertices); // reference elevation from which deviations are used to calculate the SMB adjustment
+		IssmDouble* Smbref      = xNew<IssmDouble>(numvertices); // reference SMB to which deviations are added
+		IssmDouble* b_pos       = xNew<IssmDouble>(numvertices); // Hs-SMB relation parameter
+		IssmDouble* b_neg       = xNew<IssmDouble>(numvertices); // Hs-SMB relation paremeter
+		IssmDouble* s           = xNew<IssmDouble>(numvertices); // surface elevation (m)
+		IssmDouble* smb         = xNew<IssmDouble>(numvertices);
+
+		/*Recover SmbGradients*/
+		element->GetInputListOnVertices(Href,SmbHrefEnum);
+		element->GetInputListOnVertices(Smbref,SmbSmbrefEnum);
+		element->GetInputListOnVertices(b_pos,SmbBPosEnum);
+		element->GetInputListOnVertices(b_neg,SmbBNegEnum);
+
+		/*Recover surface elevation at vertices: */
+		element->GetInputListOnVertices(s,SurfaceEnum);
+
+		/*Get material parameters :*/
+		rho_ice=element->FindParam(MaterialsRhoIceEnum);
+		rho_water=element->FindParam(MaterialsRhoFreshwaterEnum);
+
+		/* Get constants */
+		femmodel->parameters->FindParam(&yts,ConstantsYtsEnum);
+
+		// loop over all vertices
+		for(v=0;v<numvertices;v++){
+			if(Smbref[v]>0){
+				smb[v]=Smbref[v]+b_pos[v]*(s[v]-Href[v]);
+			}
+			else{
+				smb[v]=Smbref[v]+b_neg[v]*(s[v]-Href[v]);
+			}
+
+			smb[v]=smb[v]/1000*rho_water/rho_ice;      // SMB in m/y ice
+		}  //end of the loop over the vertices
+
+		/*Add input to element and Free memory*/
+		element->AddInput(SmbMassBalanceEnum,smb,P1Enum);
+		xDelete<IssmDouble>(Href);
+		xDelete<IssmDouble>(Smbref);
+		xDelete<IssmDouble>(b_pos);
+		xDelete<IssmDouble>(b_neg);
+		xDelete<IssmDouble>(s);
+		xDelete<IssmDouble>(smb);
+	}
+
+}/*}}}*/
+void SmbGradientsElax(FemModel* femmodel){/*{{{*/
+
+	// void SurfaceMassBalancex(hd,agd,ni){
+	//    INPUT parameters: ni: working size of arrays
+	//    INPUT: surface elevation (m): hd(NA)
+	//    OUTPUT: surface mass-balance (m/yr ice): agd(NA)
+	int v;
+
+	/*Loop over all the elements of this partition*/
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+
+		/*Allocate all arrays*/
+		int         numvertices = element->GetNumberOfVertices();
+		IssmDouble* ela       = xNew<IssmDouble>(numvertices); // Equilibrium Line Altitude (m a.s.l) to which deviations are used to calculate the SMB
+		IssmDouble* b_pos       = xNew<IssmDouble>(numvertices); // SMB gradient above ELA (m ice eq. per m elevation change)
+		IssmDouble* b_neg       = xNew<IssmDouble>(numvertices); // SMB gradient below ELA (m ice eq. per m elevation change)
+		IssmDouble* b_max       = xNew<IssmDouble>(numvertices); // Upper cap on SMB rate (m/y ice eq.)
+		IssmDouble* b_min       = xNew<IssmDouble>(numvertices); // Lower cap on SMB rate (m/y ice eq.)
+		IssmDouble* s           = xNew<IssmDouble>(numvertices); // Surface elevation (m a.s.l.)
+		IssmDouble* smb         = xNew<IssmDouble>(numvertices); // SMB (m/y ice eq.)
+
+		/*Recover ELA, SMB gradients, and caps*/
+		element->GetInputListOnVertices(ela,SmbElaEnum);
+		element->GetInputListOnVertices(b_pos,SmbBPosEnum);
+		element->GetInputListOnVertices(b_neg,SmbBNegEnum);
+		element->GetInputListOnVertices(b_max,SmbBMaxEnum);
+		element->GetInputListOnVertices(b_min,SmbBMinEnum);
+
+		/*Recover surface elevation at vertices: */
+		element->GetInputListOnVertices(s,SurfaceEnum);
+
+		/*Loop over all vertices, calculate SMB*/
+		for(v=0;v<numvertices;v++){
+			// if surface is above the ELA
+			if(s[v]>ela[v]){
+				smb[v]=b_pos[v]*(s[v]-ela[v]);
+			}
+			// if surface is below or equal to the ELA
+			else{
+				smb[v]=b_neg[v]*(s[v]-ela[v]);
+			}
+
+			// if SMB is larger than upper cap, set SMB to upper cap
+			if(smb[v]>b_max[v]){
+				smb[v]=b_max[v];
+			}
+			// if SMB is smaller than lower cap, set SMB to lower cap
+			if(smb[v]<b_min[v]){
+				smb[v]=b_min[v];
+			}
+		}  //end of the loop over the vertices
+
+		/*Add input to element and Free memory*/
+		element->AddInput(SmbMassBalanceEnum,smb,P1Enum);
+		xDelete<IssmDouble>(ela);
+		xDelete<IssmDouble>(b_pos);
+		xDelete<IssmDouble>(b_neg);
+		xDelete<IssmDouble>(b_max);
+		xDelete<IssmDouble>(b_min);
+		xDelete<IssmDouble>(s);
+		xDelete<IssmDouble>(smb);
+
+	}
+
+}/*}}}*/
+void Smbarmax(FemModel* femmodel){/*{{{*/
+
+   /*Get time parameters*/
+   IssmDouble time,dt,starttime,tstep_arma;
+   femmodel->parameters->FindParam(&time,TimeEnum);
+   femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+   femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum);
+   femmodel->parameters->FindParam(&tstep_arma,SmbARMATimestepEnum);
+
+   /*Determine if this is a time step for the ARMA model*/
+   bool isstepforarma = false;
+
+   #ifndef _HAVE_AD_
+   if((fmod(time,tstep_arma)<fmod((time-dt),tstep_arma)) || (time<=starttime+dt) || tstep_arma==dt) isstepforarma = true;
+   #else
+   _error_("not implemented yet");
+   #endif
+
+   /*Load parameters*/
+   bool isstochastic;
+   bool issmbstochastic = false;
+   int M,N,arorder,maorder,numbasins,numparams,numbreaks,numelevbins,my_rank;
+   femmodel->parameters->FindParam(&numbasins,SmbNumBasinsEnum);
+   femmodel->parameters->FindParam(&numparams,SmbNumParamsEnum);
+   femmodel->parameters->FindParam(&numbreaks,SmbNumBreaksEnum);
+	femmodel->parameters->FindParam(&arorder,SmbARMAarOrderEnum);
+   femmodel->parameters->FindParam(&maorder,SmbARMAmaOrderEnum);
+   femmodel->parameters->FindParam(&numelevbins,SmbNumElevationBinsEnum);
+   IssmDouble* datebreaks    = NULL;
+	IssmDouble* arlagcoefs    = NULL;
+   IssmDouble* malagcoefs    = NULL;
+	IssmDouble* polyparams    = NULL;
+   IssmDouble* lapserates    = NULL;
+   IssmDouble* elevbins      = NULL;
+   IssmDouble* refelevation  = NULL;
+
+   femmodel->parameters->FindParam(&datebreaks,&M,&N,SmbARMAdatebreaksEnum);             _assert_(M==numbasins); _assert_(N==max(numbreaks,1));
+   femmodel->parameters->FindParam(&polyparams,&M,&N,SmbARMApolyparamsEnum);             _assert_(M==numbasins); _assert_(N==(numbreaks+1)*numparams);
+	femmodel->parameters->FindParam(&arlagcoefs,&M,&N,SmbARMAarlagcoefsEnum);             _assert_(M==numbasins); _assert_(N==arorder);
+   femmodel->parameters->FindParam(&malagcoefs,&M,&N,SmbARMAmalagcoefsEnum);             _assert_(M==numbasins); _assert_(N==maorder);
+   femmodel->parameters->FindParam(&lapserates,&M,&N,SmbLapseRatesEnum);                 _assert_(M==numbasins); _assert_(N==numelevbins*12);
+   femmodel->parameters->FindParam(&elevbins,&M,&N,SmbElevationBinsEnum);                _assert_(M==numbasins); _assert_(N==(numelevbins-1)*12);
+   femmodel->parameters->FindParam(&refelevation,&M,SmbRefElevationEnum);                _assert_(M==numbasins);
+
+   femmodel->parameters->FindParam(&isstochastic,StochasticForcingIsStochasticForcingEnum);
+   if(isstochastic){
+      int  numstochasticfields;
+      int* stochasticfields;
+      femmodel->parameters->FindParam(&numstochasticfields,StochasticForcingNumFieldsEnum);
+      femmodel->parameters->FindParam(&stochasticfields,&N,StochasticForcingFieldsEnum); _assert_(N==numstochasticfields);
+      for(int i=0;i<numstochasticfields;i++){
+         if(stochasticfields[i]==SMBarmaEnum) issmbstochastic = true;
+      }
+      xDelete<int>(stochasticfields);
+   }
+
+   /*Loop over each element to compute SMB at vertices*/
+   for(Object* &object:femmodel->elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+      /*Compute ARMA*/
+		element->ArmaProcess(isstepforarma,arorder,maorder,numparams,numbreaks,tstep_arma,polyparams,arlagcoefs,malagcoefs,datebreaks,issmbstochastic,SMBarmaEnum);
+		/*Compute lapse rate adjustment*/
+		element->LapseRateBasinSMB(numelevbins,lapserates,elevbins,refelevation);
+	}
+
+   /*Cleanup*/
+   xDelete<IssmDouble>(arlagcoefs);
+   xDelete<IssmDouble>(malagcoefs);
+	xDelete<IssmDouble>(polyparams);
+   xDelete<IssmDouble>(datebreaks);
+   xDelete<IssmDouble>(lapserates);
+   xDelete<IssmDouble>(elevbins);
+   xDelete<IssmDouble>(refelevation);
+}/*}}}*/
+void Delta18oParameterizationx(FemModel* femmodel){/*{{{*/
+
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->Delta18oParameterization();
+	}
+
+}/*}}}*/
+void MungsmtpParameterizationx(FemModel* femmodel){/*{{{*/
+
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->MungsmtpParameterization();
+	}
+
+}/*}}}*/
+void Delta18opdParameterizationx(FemModel* femmodel){/*{{{*/
+
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->Delta18opdParameterization();
+	}
+
+}/*}}}*/
+void PositiveDegreeDayx(FemModel* femmodel){/*{{{*/
+
+	// void PositiveDegreeDayx(hd,vTempsea,vPrec,agd,Tsurf,ni){
+	//    note "v" prefix means 12 monthly means, ie time dimension
+	//    INPUT parameters: ni: working size of arrays
+	//    INPUT: surface elevation (m): hd(NA)
+	//    monthly mean surface sealevel temperature (degrees C): vTempsea(NA
+	//    ,NTIME)
+	//    monthly mean precip rate (m/yr water equivalent): vPrec(NA,NTIME)
+	//    OUTPUT: mass-balance (m/yr ice): agd(NA)
+	//    mean annual surface temperature (degrees C): Tsurf(NA)
+
+	int    it, jj, itm;
+	IssmDouble DT = 0.02, sigfac, snormfac;
+	IssmDouble signorm = 5.5;      // signorm : sigma of the temperature distribution for a normal day
+	IssmDouble siglim;       // sigma limit for the integration which is equal to 2.5 sigmanorm
+	IssmDouble signormc = signorm - 0.5;     // sigma of the temperature distribution for cloudy day
+	IssmDouble siglimc, siglim0, siglim0c;
+	IssmDouble tstep, tsint, tint, tstepc;
+	int    NPDMAX = 1504, NPDCMAX = 1454;
+	//IssmDouble pdds[NPDMAX]={0};
+	//IssmDouble pds[NPDCMAX]={0};
+	IssmDouble pddt, pd ; // pd : snow/precip fraction, precipitation falling as snow
+	IssmDouble PDup, PDCUT = 2.0;    // PDcut: rain/snow cutoff temperature (C)
+	IssmDouble tstar; // monthly mean surface temp
+
+	bool ismungsm;
+	bool issetpddfac;
+
+	IssmDouble *pdds    = NULL;
+	IssmDouble *pds     = NULL;
+	Element    *element = NULL;
+
+	pdds=xNew<IssmDouble>(NPDMAX+1);
+	pds=xNew<IssmDouble>(NPDCMAX+1);
+
+	// Get ismungsm parameter
+	femmodel->parameters->FindParam(&ismungsm,SmbIsmungsmEnum);
+
+	// Get issetpddfac parameter
+	femmodel->parameters->FindParam(&issetpddfac,SmbIssetpddfacEnum);
+
+	/* initialize PDD (creation of a lookup table)*/
+	tstep    = 0.1;
+	tsint    = tstep*0.5;
+	sigfac   = -1.0/(2.0*pow(signorm,2));
+	snormfac = 1.0/(signorm*sqrt(2.0*acos(-1.0)));
+	siglim   = 2.5*signorm;
+	siglimc  = 2.5*signormc;
+	siglim0  = siglim/DT + 0.5;
+	siglim0c = siglimc/DT + 0.5;
+	PDup     = siglimc+PDCUT;
+
+	itm = reCast<int,IssmDouble>((2*siglim/DT + 1.5));
+
+	if(itm >= NPDMAX) _error_("increase NPDMAX in massBalance.cpp");
+	for(it = 0; it < itm; it++){
+		//    tstar = REAL(it)*DT-siglim;
+		tstar = it*DT-siglim;
+		tint = tsint;
+		pddt = 0.;
+		for ( jj = 0; jj < 600; jj++){
+			if (tint > (tstar+siglim)){break;}
+			pddt = pddt + tint*exp(sigfac*(pow((tint-tstar),2)))*tstep;
+			tint = tint+tstep;
+		}
+		pdds[it] = pddt*snormfac;
+	}
+	pdds[itm+1] = siglim + DT;
+
+	//*********compute PD(T) : snow/precip fraction. precipitation falling as snow
+	tstepc   = 0.1;
+	tsint    = PDCUT-tstepc*0.5;
+	signormc = signorm - 0.5;
+	sigfac   = -1.0/(2.0*pow(signormc,2));
+	snormfac = 1.0/(signormc*sqrt(2.0*acos(-1.0)));
+	siglimc  = 2.5*signormc ;
+	itm = reCast<int,IssmDouble>((PDCUT+2.*siglimc)/DT + 1.5);
+	if(itm >= NPDCMAX) _error_("increase NPDCMAX in p35com");
+	for(it = 0; it < itm; it++ ){
+		tstar = it*DT-siglimc;
+		//    tstar = REAL(it)*DT-siglimc;
+		tint = tsint;          // start against upper bound
+		pd = 0.;
+		for (jj = 0; jj < 600; jj++){
+			if (tint<(tstar-siglimc)) {break;}
+			pd = pd + exp(sigfac*(pow((tint-tstar),2)))*tstepc;
+			tint = tint-tstepc;
+		}
+		pds[it] = pd*snormfac;  // gaussian integral lookup table for snow fraction
+	}
+	pds[itm+1] = 0.;
+	//     *******END initialize PDD
+
+	for(Object* & object : femmodel->elements->objects){
+		element=xDynamicCast<Element*>(object);
+		element->PositiveDegreeDay(pdds,pds,signorm,ismungsm,issetpddfac);
+	}
+	/*free ressouces: */
+	xDelete<IssmDouble>(pdds);
+	xDelete<IssmDouble>(pds);
+}/*}}}*/
+void PositiveDegreeDaySicopolisx(FemModel* femmodel){/*{{{*/
+
+	bool isfirnwarming;
+	femmodel->parameters->FindParam(&isfirnwarming,SmbIsfirnwarmingEnum);
+
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->PositiveDegreeDaySicopolis(isfirnwarming);
+	}
+
+}/*}}}*/
+void SmbHenningx(FemModel* femmodel){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble  z_critical = 1675.;
+	IssmDouble  dz = 0;
+	IssmDouble  a = -15.86;
+	IssmDouble  b = 0.00969;
+	IssmDouble  c = -0.235;
+	IssmDouble  f = 1.;
+	IssmDouble  g = -0.0011;
+	IssmDouble  h = -1.54e-5;
+	IssmDouble  smb,smbref,anomaly,yts,z;
+
+	/* Get constants */
+	femmodel->parameters->FindParam(&yts,ConstantsYtsEnum);
+	/*iomodel->FindConstant(&yts,"md.constants.yts");*/
+	/*this->parameters->FindParam(&yts,ConstantsYtsEnum);*/
+	/*Mathieu original*/
+	/*IssmDouble  smb,smbref,z;*/
+
+	/*Loop over all the elements of this partition*/
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+
+		/*Get reference SMB (uncorrected) and allocate all arrays*/
+		int         numvertices = element->GetNumberOfVertices();
+		IssmDouble* surfacelist = xNew<IssmDouble>(numvertices);
+		IssmDouble* smblistref  = xNew<IssmDouble>(numvertices);
+		IssmDouble* smblist     = xNew<IssmDouble>(numvertices);
+		element->GetInputListOnVertices(surfacelist,SurfaceEnum);
+		element->GetInputListOnVertices(smblistref,SmbSmbrefEnum);
+
+		/*Loop over all vertices of element and correct SMB as a function of altitude z*/
+		for(int v=0;v<numvertices;v++){
+
+			/*Get vertex elevation, anoma smb*/
+			z      = surfacelist[v];
+			anomaly = smblistref[v];
+
+			/* Henning edited acc. to Riannes equations*/
+			/* Set SMB maximum elevation, if dz = 0 -> z_critical = 1675 */
+			z_critical = z_critical + dz;
+
+			/* Calculate smb acc. to the surface elevation z */
+			if(z<z_critical){
+				smb = a + b*z + c;
+			}
+			else{
+				smb = (a + b*z)*(f + g*(z-z_critical) + h*(z-z_critical)*(z-z_critical)) + c;
+			}
+
+			/* Compute smb including anomaly,
+				correct for number of seconds in a year [s/yr]*/
+			smb = smb/yts + anomaly;
+
+			/*Update array accordingly*/
+			smblist[v] = smb;
+
+		}
+
+		/*Add input to element and Free memory*/
+		element->AddInput(SmbMassBalanceEnum,smblist,P1Enum);
+		xDelete<IssmDouble>(surfacelist);
+		xDelete<IssmDouble>(smblistref);
+		xDelete<IssmDouble>(smblist);
+	}
+
+}/*}}}*/
+void SmbComponentsx(FemModel* femmodel){/*{{{*/
+
+	// void SmbComponentsx(acc,evap,runoff,ni){
+	//    INPUT parameters: ni: working size of arrays
+	//    INPUT: surface accumulation (m/yr water equivalent): acc
+	//    surface evaporation (m/yr water equivalent): evap
+	//    surface runoff (m/yr water equivalent): runoff
+	//    OUTPUT: mass-balance (m/yr ice): agd(NA)
+
+	/*Loop over all the elements of this partition*/
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+
+		/*Allocate all arrays*/
+		int         numvertices = element->GetNumberOfVertices();
+		IssmDouble* acc         = xNew<IssmDouble>(numvertices);
+		IssmDouble* evap        = xNew<IssmDouble>(numvertices);
+		IssmDouble* runoff      = xNew<IssmDouble>(numvertices);
+		IssmDouble* smb         = xNew<IssmDouble>(numvertices);
+
+		/*Recover Smb Components*/
+		element->GetInputListOnVertices(acc,SmbAccumulationEnum);
+		element->GetInputListOnVertices(evap,SmbEvaporationEnum);
+		element->GetInputListOnVertices(runoff,SmbRunoffEnum);
+
+		// loop over all vertices
+		for(int v=0;v<numvertices;v++) smb[v]=acc[v]-evap[v]-runoff[v];
+
+		/*Add input to element and Free memory*/
+		element->AddInput(SmbMassBalanceEnum,smb,P1Enum);
+		xDelete<IssmDouble>(acc);
+		xDelete<IssmDouble>(evap);
+		xDelete<IssmDouble>(runoff);
+		xDelete<IssmDouble>(smb);
+	}
+
+}/*}}}*/
+void SmbMeltComponentsx(FemModel* femmodel){/*{{{*/
+
+	// void SmbMeltComponentsx(acc,evap,melt,refreeze,ni){
+	//    INPUT parameters: ni: working size of arrays
+	//    INPUT: surface accumulation (m/yr water equivalent): acc
+	//    surface evaporation (m/yr water equivalent): evap
+	//    surface melt (m/yr water equivalent): melt
+	//    refreeze of surface melt (m/yr water equivalent): refreeze
+	//    OUTPUT: mass-balance (m/yr ice): agd(NA)
+
+	/*Loop over all the elements of this partition*/
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+
+		/*Allocate all arrays*/
+		int         numvertices = element->GetNumberOfVertices();
+		IssmDouble* acc         = xNew<IssmDouble>(numvertices);
+		IssmDouble* evap        = xNew<IssmDouble>(numvertices);
+		IssmDouble* melt        = xNew<IssmDouble>(numvertices);
+		IssmDouble* refreeze    = xNew<IssmDouble>(numvertices);
+		IssmDouble* smb         = xNew<IssmDouble>(numvertices);
+
+		/*Recover Smb Components*/
+		element->GetInputListOnVertices(acc,SmbAccumulationEnum);
+		element->GetInputListOnVertices(evap,SmbEvaporationEnum);
+		element->GetInputListOnVertices(melt,SmbMeltEnum);
+		element->GetInputListOnVertices(refreeze,SmbRefreezeEnum);
+
+		// loop over all vertices
+		for(int v=0;v<numvertices;v++) smb[v]=acc[v]-evap[v]-melt[v]+refreeze[v];
+
+		/*Add input to element and Free memory*/
+		element->AddInput(SmbMassBalanceEnum,smb,P1Enum);
+		xDelete<IssmDouble>(acc);
+		xDelete<IssmDouble>(evap);
+		xDelete<IssmDouble>(melt);
+		xDelete<IssmDouble>(refreeze);
+		xDelete<IssmDouble>(smb);
+	}
+
+}/*}}}*/
+void SmbDebrisEvattx(FemModel* femmodel){/*{{{*/
+        for(Object* & object : femmodel->elements->objects){
+                Element* element=xDynamicCast<Element*>(object);
+                element->SmbDebrisEvatt();
+        }
+}/*}}}*/
+void SmbGradientsComponentsx(FemModel* femmodel){/*{{{*/
+
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		element->SmbGradCompParameterization();
+	}
+
+}/*}}}*/
+#ifdef _HAVE_SEMIC_
+void SmbSemicx(FemModel* femmodel,int ismethod){/*{{{*/
+
+	for(Object* & object : femmodel->elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		if (ismethod == 1) element->SmbSemicTransient(); // Inwoo's version.
+		else element->SmbSemic(); // original SmbSEMIC
+	}
+
+}/*}}}*/
+#else
+void SmbSemicx(FemModel* femmodel){_error_("SEMIC not installed");}
+#endif //_HAVE_SEMIC_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h	(revision 27955)
@@ -0,0 +1,41 @@
+/*!\file:  SurfaceMassBalancex.h
+ * \brief header file for SMB
+ */
+
+#ifndef _SurfaceMassBalancex_H
+#define _SurfaceMassBalancex_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void SurfaceMassBalancex(FemModel* femmodel);
+void SmbForcingx(FemModel* femmodel);
+void SmbGradientsx(FemModel* femmodel);
+void SmbGradientsElax(FemModel* femmodel);
+void Smbarmax(FemModel* femmodel);
+void Delta18oParameterizationx(FemModel* femmodel);
+void MungsmtpParameterizationx(FemModel* femmodel);
+void Delta18opdParameterizationx(FemModel* femmodel);
+void PositiveDegreeDayx(FemModel* femmodel);
+void PositiveDegreeDaySicopolisx(FemModel* femmodel);
+void SmbHenningx(FemModel* femmodel);
+void SmbComponentsx(FemModel* femmodel);
+void SmbMeltComponentsx(FemModel* femmodel);
+void SmbGradientsComponentsx(FemModel* femmodel);
+void SmbDebrisEvattx(FemModel* femmodel);
+/* SEMIC: */
+void SmbSemicx(FemModel* femmodel, int ismethod);
+/*GEMB: */
+void       Gembx(FemModel* femmodel);
+void       GembgridInitialize(IssmDouble** pdz, int* psize, IssmDouble zTop, IssmDouble dzTop, IssmDouble zMax, IssmDouble zY);
+IssmDouble Marbouty(IssmDouble T, IssmDouble d, IssmDouble dT);
+IssmDouble gardnerAlb(IssmDouble* re, IssmDouble* dz, IssmDouble* d, IssmDouble clabSnow, IssmDouble clabIce, IssmDouble SZA, IssmDouble COT, IssmDouble dPHC, int m);
+void grainGrowth(IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, IssmDouble* T,IssmDouble* dz,IssmDouble* d, IssmDouble* W,IssmDouble smb_dt,int m,int aIdx, int sid);
+void albedo(IssmDouble** a, IssmDouble** adiff, int aIdx, IssmDouble* re, IssmDouble* dz, IssmDouble* d, IssmDouble cldFrac, IssmDouble aIce, IssmDouble aSnow, IssmDouble aValue, IssmDouble adThresh, IssmDouble* T, IssmDouble* W, IssmDouble P, IssmDouble EC, IssmDouble Msurf, IssmDouble clabSnow, IssmDouble clabIce, IssmDouble SZA, IssmDouble COT, IssmDouble t0wet, IssmDouble t0dry, IssmDouble K, IssmDouble dt, IssmDouble dIce, int m, int sid);
+void shortwave(IssmDouble** pswf, int swIdx, int aIdx, IssmDouble dsw, IssmDouble dswdiff, IssmDouble as, IssmDouble asdiff, IssmDouble* d, IssmDouble* dz, IssmDouble* re, IssmDouble dIce, int m, int sid);
+void thermo(IssmDouble* pshf, IssmDouble* plhf, IssmDouble* pEC, IssmDouble** pT, IssmDouble* pulwrf, IssmDouble* re, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlw, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, int tcIdx, int eIdx, IssmDouble teValue, IssmDouble dulwrfValue, IssmDouble teThresh, IssmDouble Ws, IssmDouble dt0, IssmDouble dzMin, int m, IssmDouble Vz, IssmDouble Tz, IssmDouble thermo_scaling, IssmDouble dIce, int sid, bool isconstrainsurfaceT, bool isdeltaLWup);
+void accumulation(IssmDouble** pT, IssmDouble** pdz, IssmDouble** pd, IssmDouble** pW, IssmDouble** pa, IssmDouble** padiff, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, IssmDouble* pRa, int* pm, int aIdx, int dsnowIdx, IssmDouble Tmean, IssmDouble Ta, IssmDouble P, IssmDouble dzMin, IssmDouble aSnow, IssmDouble C, IssmDouble V, IssmDouble Vmean, IssmDouble dIce, int sid);
+void melt(IssmDouble* pM, IssmDouble* pMs, IssmDouble* pR, IssmDouble* pF, IssmDouble* pmAdd, IssmDouble* pdz_add, IssmDouble** pT, IssmDouble** pd, IssmDouble** pdz, IssmDouble** pW, IssmDouble** pa, IssmDouble** padiff, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pn, IssmDouble Ra, IssmDouble dzMin, IssmDouble zMax, IssmDouble zMin, IssmDouble zTop, IssmDouble zY, IssmDouble dIce, int sid);
+void managelayers(IssmDouble* pmAdd, IssmDouble* pdz_add, IssmDouble* paddE, IssmDouble** pm, IssmDouble** pEI, IssmDouble** pEW, IssmDouble** pT, IssmDouble** pd, IssmDouble** pdz, IssmDouble** pW, IssmDouble** pa, IssmDouble** padiff, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pn, IssmDouble dzMin, IssmDouble zMax, IssmDouble zMin, IssmDouble zTop, IssmDouble zY);
+void densification(IssmDouble** pd,IssmDouble** pdz, IssmDouble* T, IssmDouble* re, int denIdx, int aIdx, int swIdx, IssmDouble adThresh, IssmDouble C, IssmDouble dt, IssmDouble Tmean, IssmDouble dIce, int m, int sid);
+#endif  /* _SurfaceMassBalancex_H*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceMassBalancex/run_semic.f90
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceMassBalancex/run_semic.f90	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceMassBalancex/run_semic.f90	(revision 27955)
@@ -0,0 +1,185 @@
+subroutine run_semic(sf_in, rf_in, swd_in, lwd_in, wind_in, &
+      sp_in, rhoa_in, qq_in, tt_in, tsurf_out, &
+      smb_out, saccu_out, smelt_out)
+
+   use utils
+   use surface_physics
+
+   implicit none
+
+   ! declare surface physics class
+   type(surface_physics_class) :: surface
+   ! declare forcing class
+   type(forc_class) :: forc
+   ! declare validation class
+   !type(vali_class) :: vali	! validation not needed here
+
+   integer, parameter:: dp=kind(0.d0)  !< define precision (machine specific)
+   integer :: i, k, nx, nloop, ntime, year, day
+
+   ! forcing data    
+   double precision, intent(in),dimension(1,365) :: sf_in  ! snow fall rate [m/s]
+   double precision, intent(in),dimension(1,365) :: rf_in  ! rain fall rate [m/s]
+   double precision, intent(in),dimension(1,365) :: swd_in ! downwelling shortwave radiation [W/m2]
+   double precision, intent(in),dimension(1,365) :: lwd_in ! downwelling longwave radiation [W/m2]
+   double precision, intent(in),dimension(1,365) :: wind_in! surface wind speed [m/s]
+   double precision, intent(in),dimension(1,365) :: sp_in  ! surface pressure [Pa]
+   double precision, intent(in),dimension(1,365) :: rhoa_in! air density [kg/m3]
+   double precision, intent(in),dimension(1,365) :: qq_in  ! air specific humidity [kg/kg]
+   double precision, intent(in),dimension(1,365) :: tt_in  ! air temperature [K]
+
+   ! output data
+   double precision :: tsurf_out  ! Ice surface Temperature [K]
+   double precision :: smb_out  ! surface mass balance=(Accu-Melt) [m/s]
+   double precision :: saccu_out  ! accumulation [m/s]
+   double precision :: smelt_out  ! ablation [m/s]
+
+   double precision :: total_time, start, finish
+
+   ! set parameters
+   character (len=256) :: name         ! not used(?)
+   character (len=256) :: boundary(30) ! not used(?)
+   character (len=256) :: alb_scheme   
+   integer :: n_ksub    
+   double precision    :: ceff
+   double precision    :: albi
+   double precision    :: albl
+   double precision    :: alb_smax
+   double precision    :: alb_smin
+   double precision    :: hcrit
+   double precision    :: rcrit
+   double precision    :: amp
+   double precision    :: csh
+   double precision    :: clh
+   double precision    :: tmin
+   double precision    :: tmax
+   double precision    :: tstic
+   double precision    :: tsticsub
+   double precision    :: tau_a
+   double precision    :: tau_f
+   double precision    :: w_crit
+   double precision    :: mcrit
+   double precision    :: afac
+   double precision    :: tmid
+
+   nloop = 10
+   nx = 1
+   ntime = 365
+   year = 0
+
+   ! set vector length
+   surface%par%nx = nx
+
+   ! set input (forcing data)
+   allocate(forc%sf(nx,ntime))
+   allocate(forc%rf(nx,ntime))
+   allocate(forc%swd(nx,ntime))
+   allocate(forc%lwd(nx,ntime))
+   allocate(forc%wind(nx,ntime))
+   allocate(forc%sp(nx,ntime))
+   allocate(forc%rhoa(nx,ntime))
+   allocate(forc%tt(nx,ntime))
+   allocate(forc%qq(nx,ntime))
+
+!	write(*,*) sf_in
+   forc%sf(:,:) = sf_in
+   forc%rf(:,:) = rf_in
+   forc%swd(:,:) = swd_in
+   forc%lwd(:,:) = lwd_in
+   forc%wind(:,:) = wind_in
+   forc%sp(:,:) = sp_in
+   forc%rhoa(:,:) = rhoa_in
+   forc%qq(:,:) = qq_in
+   forc%tt(:,:) = tt_in
+
+   ! FIXME should be user input
+   !boundary = "" "" ""
+   surface%par%tstic = 86400.0_dp
+   surface%par%ceff= 2.0e6_dp
+   surface%par%csh = 2.0e-3_dp
+   surface%par%clh = 5.0e-4_dp
+   surface%par%alb_smax = 0.79_dp
+   surface%par%alb_smin = 0.6_dp
+   surface%par%albi = 0.41_dp
+   surface%par%albl = 0.07_dp
+   surface%par%tmin = -999_dp
+   surface%par%tmax = 273.15_dp
+   surface%par%hcrit = 0.028_dp
+   surface%par%rcrit = 0.85_dp
+   surface%par%amp = 3.0_dp
+   surface%par%alb_scheme = "None"
+   surface%par%tau_a = 0.008_dp
+   surface%par%tau_f = 0.24_dp
+   surface%par%w_crit = 15.0_dp
+   surface%par%mcrit = 6.0e-8_dp
+   surface%par%n_ksub = 3.0_dp
+   
+   ! initialize sub-daily time step tsticsub
+   surface%par%tsticsub = surface%par%tstic / dble(surface%par%n_ksub)
+
+   ! allocate necessary arrays for surface_physics module
+   call surface_alloc(surface%now,surface%par%nx)
+
+   ! initialise prognostic variables
+   surface%now%mask(:) = 2.0_dp !loi_mask(:nx)
+   surface%now%hsnow(:) = 1.0_dp
+   surface%now%hice(:)  = 0.0_dp
+   surface%now%alb(:) = 0.8_dp
+   surface%now%tsurf(:) = 260.0_dp
+   surface%now%alb_snow(:) = 0.8_dp
+   !surface%now%acc(:) = 0.0_dp
+   !surface%now%smb(:) = 0.0_dp
+   !surface%now%melt(:) = 0.0_dp
+   surface%now%qmr_res(:) = 0.0_dp
+
+   tsurf_out = 0.0_dp
+   smb_out = 0.0_dp
+   saccu_out = 0.0_dp
+   smelt_out = 0.0_dp
+
+   ! define boundary conditions (not used, here!)
+   call surface_boundary_define(surface%bnd,surface%par%boundary)
+   !call print_boundary_opt(surface%bnd)
+
+   do k=1,nloop ! re-iterate 'nloop' times
+
+   day = 1
+
+   do i=1,ntime ! loop over one year
+
+
+   ! read input for i-th day of year
+   surface%now%sf = forc%sf(1,day)
+   surface%now%rf = forc%rf(1,day)
+   surface%now%sp = forc%sp(1,day)
+   surface%now%lwd = forc%lwd(1,day)
+   surface%now%swd = forc%swd(1,day)
+   surface%now%wind = forc%wind(1,day)
+   surface%now%rhoa = forc%rhoa(1,day)
+   surface%now%t2m = forc%tt(1,day)
+   surface%now%qq = forc%qq(1,day)
+
+   ! calculate prognostic and diagnsotic variables
+   call cpu_time(start)
+   call surface_energy_and_mass_balance(surface%now,surface%par,surface%bnd,day,-1)
+   call cpu_time(finish)
+   total_time = total_time + (finish - start)
+
+   if (k==nloop) then 
+      tsurf_out=tsurf_out+surface%now%tsurf(1)*1.0_dp/365.0_dp
+      smb_out=smb_out+surface%now%smb(1)*1.0_dp/365.0_dp
+      saccu_out=saccu_out+surface%now%alb(1)*1.0_dp/365.0_dp
+      smelt_out=smelt_out+surface%now%melt(1)*1.0_dp/365.0_dp
+   endif
+   day = day + 1
+
+   end do
+
+   end do
+
+   ! de-allocate surface_physics arrays
+   call surface_dealloc(surface%now)
+
+   !write(*,*) 'total time for surface_physics:', nloop, total_time
+
+end subroutine run_semic
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceMassBalancex/run_semic_transient.f90
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceMassBalancex/run_semic_transient.f90	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceMassBalancex/run_semic_transient.f90	(revision 27955)
@@ -0,0 +1,248 @@
+subroutine run_semic_transient(nx, ntime, nloop, sf_in, rf_in, swd_in, lwd_in, wind_in, &
+      sp_in, rhoa_in, qq_in, tt_in, tsurf_in, qmr_in, &
+      tstic, &
+      hcrit, rcrit, &
+      mask, hice, hsnow, &
+      albedo, albedo_snow, &
+      alb_scheme, alb_smax, alb_smin, albi, albl, &
+      Tamp, &
+      tmin, tmax, tmid, mcrit, w_crit, tau_a, tau_f, afac, verbose, &
+      tsurf_out, smb_out, smbi_out, smbs_out, saccu_out, smelt_out,  refr_out, alb_out, & 
+      alb_snow_out,hsnow_out,hice_out,qmr_out) !{{{
+
+   use utils
+   use surface_physics
+   implicit none
+
+   ! declare surface physics class
+   type(surface_physics_class) :: surface
+   ! declare forcing class
+   !type(forc_class) :: forc
+   ! declare validation class
+   !type(vali_class) :: vali	! validation not needed here
+
+   integer, parameter:: dp=kind(0.d0)  !< define precision (machine specific)
+   integer :: i, k, n
+   integer :: nnx, nny
+   integer :: year=0
+   integer :: day =1 !< not used value.
+   integer, intent(in) :: nx, ntime, nloop   ! number of grid / number of times
+   logical, intent(in) :: verbose            ! verbosity
+   logical :: debug=.false.
+
+   ! forcing data    
+   ! input argument format array size (nx, ntime)...
+   double precision, intent(in), dimension(nx):: sf_in    ! snow fall rate [m/s]
+   double precision, intent(in), dimension(nx):: rf_in    ! rain fall rate [m/s]
+   double precision, intent(in), dimension(nx):: swd_in   ! downwelling shortwave radiation [W/m2]
+   double precision, intent(in), dimension(nx):: lwd_in   ! downwelling longwave radiation [W/m2]
+   double precision, intent(in), dimension(nx):: wind_in  ! surface wind speed [m/s]
+   double precision, intent(in), dimension(nx):: sp_in    ! surface pressure [Pa]
+   double precision, intent(in), dimension(nx):: rhoa_in  ! air density [kg/m3]
+   double precision, intent(in), dimension(nx):: qq_in    ! air specific humidity [kg/kg]
+   double precision, intent(in), dimension(nx):: tt_in    ! air temperature [K]
+
+   ! input data
+   double precision, intent(in) :: tstic  ! time step from ISSM [sec].
+
+   ! output data
+   ! Ice surface Temperature [K]
+   double precision, intent(out), dimension(nx):: tsurf_out    
+   ! surface mass balance=(Accu-Melt) [m/s]
+   double precision, intent(out), dimension(nx):: smb_out     
+   double precision, intent(out), dimension(nx):: smbi_out     ! SMB ice  [water equivalent m/s]
+   double precision, intent(out), dimension(nx):: smbs_out     ! SMB snow [water equivalent m/s]
+   double precision, intent(out), dimension(nx):: saccu_out    ! accumulation [m/s]
+   double precision, intent(out), dimension(nx):: smelt_out    ! ablation [m/s]
+   double precision, intent(out), dimension(nx):: refr_out     ! freezing [m/s]
+   double precision, intent(out), dimension(nx):: alb_out      ! grid-averaged albedo [no unit] 
+   double precision, intent(out), dimension(nx):: alb_snow_out 
+   double precision, intent(out), dimension(nx):: hice_out    
+   double precision, intent(out), dimension(nx):: hsnow_out   
+   double precision, intent(out), dimension(nx):: qmr_out     
+
+   double precision :: total_time, start, finish
+
+   ! set parameters
+   !character (len=256) :: name         ! not used(?)
+   !character (len=256) :: boundary(30) ! not used(?)
+   !character (len=256), intent(in) :: alb_scheme  !< name of albedo scheme
+   integer, intent(in)          :: alb_scheme
+   !integer :: n_ksub    
+   !double precision             :: ceff         !< surface heat heat capacity of snow/ice [J/W m2]
+   double precision, intent(in), dimension(nx):: albedo
+   double precision, intent(in), dimension(nx):: albedo_snow !< spatial..
+   double precision, intent(in), dimension(nx):: hsnow
+   double precision, intent(in), dimension(nx):: hice
+   double precision, intent(in), dimension(nx):: tsurf_in    !< input temperature [K]
+   double precision, intent(in), dimension(nx):: qmr_in 
+   double precision, intent(in), dimension(nx):: mask
+
+   double precision, intent(in) :: albi
+   double precision, intent(in) :: albl
+   double precision, intent(in) :: alb_smax
+   double precision, intent(in) :: alb_smin
+   double precision, intent(in) :: hcrit !< critical snow height for which grid cell is 50% snow covered [m]
+   double precision, intent(in) :: rcrit !< critical snow height fro which refreezing fraction is 50% [m]
+   double precision, intent(in) :: Tamp
+   !double precision    :: csh
+   !double precision    :: clh
+   double precision, intent(in) :: tmin
+   double precision, intent(in) :: tmax
+   !double precision    :: tsticsub
+   ! parameters for isba albedo scheme.
+   double precision, intent(in) :: tau_a  !< critical liquide water concent for "isba" albedo scheme [kg/m2]
+   double precision, intent(in) :: tau_f
+   double precision, intent(in) :: w_crit
+   double precision, intent(in) :: mcrit
+   double precision, intent(in) :: afac !< param
+   double precision, intent(in) :: tmid !< param for "alex" albedo parameterization [K]
+
+   if (debug) then
+      print*,'   ntime: ', ntime
+      print*,'   nx   : ', nx
+   end if
+
+   ! set vector length
+   surface%par%nx = nx
+
+   ! FIXME should be user input
+   !boundary = "" "" ""
+   if (debug) then
+      print*, "run_semic_transient: initialize parameters."
+   end if
+   surface%par%tstic = tstic      !< time step [s]
+   surface%par%ceff= 2.0e6_dp     !< surface heat capacity of snow/ice [J/K/m2]
+   surface%par%csh = 2.0e-3_dp    !< turbulent heat exchange coefficient 
+   surface%par%clh = 5.0e-4_dp    !< turbulent heat exchange coefficient [no unit]
+   surface%par%alb_smax = alb_smax !0.79_dp !< max snow albedo
+   surface%par%alb_smin = alb_smin !0.6_dp  !< min snow albedo
+   surface%par%albi = albi ! 0.41_dp     !< albedo for ice
+   surface%par%albl = albl ! 0.07_dp     !< albedo for land
+   surface%par%tmin = tmin ! -999_dp
+   surface%par%tmax = tmax ! 273.15_dp
+   surface%par%hcrit = hcrit !0.028_dp   !< critical snow height for which grid cell is 50 % snow colvered [m]
+   surface%par%rcrit = rcrit !0.85_dp    !< refreezing fraction is 50% [m]
+   surface%par%amp   = Tamp !3.0_dp   !< amplitude of diurnal cycle [K]
+   if (alb_scheme == 0) then
+      surface%par%alb_scheme="none"
+   else if (alb_scheme == 1) then
+      surface%par%alb_scheme = "slater"
+   else if (alb_scheme == 2) then
+      surface%par%alb_scheme = "denby"
+   else if (alb_scheme == 3) then
+      surface%par%alb_scheme = "isba"
+   else
+      print*, "ERROR: current albedo scheme is not available."
+      call exit(1)
+   end if 
+   surface%par%tau_a  = tau_a  !0.008_dp
+   surface%par%tau_f  = tau_f  !0.24_dp
+   surface%par%w_crit = w_crit !15.0_dp ! default value
+   surface%par%mcrit  = mcrit  !6.0e-8_dp
+   surface%par%n_ksub = 3      ! sub ...
+   ! snow albedo of alex
+   surface%par%afac   = afac
+   surface%par%tmid   = tmid
+   
+   ! initialize sub-daily time step tsticsub
+   surface%par%tsticsub = surface%par%tstic / dble(surface%par%n_ksub)
+
+   ! allocate necessary arrays for surface_physics module
+   call surface_alloc(surface%now,surface%par%nx)
+
+   ! initialise prognostic variables
+   if (debug) then
+      print*,"run_semic_transient: initialize variables."
+   end if
+   ! these values will be updated through "surface_energy_and_mass_balance" function.
+   surface%now%mask    (:) = mask       (:) ! 2.0_dp  !loi_mask(:nx)
+   if (debug) then
+      print*,"run_semic_transient: initialize variables: mask"
+   end if
+   surface%now%hsnow   (:) = hsnow      (:) ! initial snow height...
+   surface%now%hice    (:) = hice       (:) ! initial ice height..
+   surface%now%tsurf   (:) = tsurf_in   (:) !< initial ice surface temperature
+   surface%now%alb     (:) = albedo     (:) !< initial albedo for energy balance.
+   surface%now%alb_snow(:) = albedo_snow(:) !< initial albedo for ISBA albedo method.
+   if (debug) then
+      print*,"run_semic_transient: initialize variables. DONE."
+   end if
+
+   if (debug) then
+      !print*, "====== global variable =========="
+      !print*, "nloop          :", nloop
+      !print*, "nx             :", surface%par%nx
+      !print*, "======  parameters ======"
+      !print*, "csh            :", surface%par%csh
+      !print*, "clh            :", surface%par%clh
+      !print*, "albeo scheme   :", surface%par%alb_scheme
+      !print*, "albeo ice      :", surface%par%albi
+      !print*, "tstic          :", surface%par%tstic
+      !print*, "tsticsub       :", surface%par%tsticsub
+      !print*, "n_ksub         :", surface%par%n_ksub
+      print*, "====== inputs ========="
+      print*, "hsnow          :", hsnow
+      print*, "======  state variables ======"
+      print*, "hsnow          :", surface%now%hsnow
+      print*, "hice           :", surface%now%hice
+      print*, "albeo          :", surface%now%alb
+      print*, "albeo snow     :", surface%now%alb_snow
+      print*, "mask           :", surface%now%mask
+      print*, "tsurf          :", surface%now%tsurf
+      print*, "sf             :", sf_in
+   end if
+
+   ! define boundary conditions (not used, here!)
+   call surface_boundary_define(surface%bnd,surface%par%boundary)
+   !call print_boundary_opt(surface%bnd)
+
+   ! input with single value
+   do k =1,nloop
+      do i =1,ntime
+         if (debug) then
+            print*,"run_semic_transient: forcing data: ntime = ", i
+         end if
+         surface%now%sf   = sf_in  !(:,i)
+         surface%now%rf   = rf_in  !(:,i)
+         surface%now%sp   = sp_in  !(:,i)
+         surface%now%lwd  = lwd_in !(:,i)
+         surface%now%swd  = swd_in !(:,i)
+         surface%now%wind = wind_in!(:,i)
+         surface%now%rhoa = rhoa_in!(:,i)
+         surface%now%t2m  = tt_in  !(:,i)
+         surface%now%qq   = qq_in  !(:,i)
+         ! qmr_res is used to "energy_balance" in semic.
+         surface%now%qmr_res = qmr_in
+
+         ! calculate prognostic and diagnsotic variables
+         call surface_energy_and_mass_balance(surface%now,surface%par,surface%bnd,i,year)
+         
+         if (debug) then
+            print*,"done..."
+         end if
+         if (k == nloop) then
+            tsurf_out         = surface%now%tsurf
+            ! melt - potential surface melt [m/s]
+            ! smb = SMB_ice + SMB_snow
+            ! smbi  - SMB_ice  (water equivalent m/sec)
+            ! smbs  - SMB_snow (water equivalent m/sec)
+            smb_out           =surface%now%smb      ! smb = smb_snow + smb_ice
+            smbi_out          =surface%now%smb_ice  ! Csi (snow>ice) - melted_ice + refrezon_rain.
+            smbs_out          =surface%now%smb_snow ! smb_snow = snowfall - sublimiation - melted_snow + refrozen_snow
+            saccu_out         =surface%now%acc      ! acc      = snowfall - sublimiation - refreezing 
+            smelt_out         =surface%now%melt     ! potential surface melt = melt_ice + melt_snow
+            refr_out          =surface%now%refr     ! refreezing values. [m/sec]
+            alb_out           =surface%now%alb
+            alb_snow_out      =surface%now%alb_snow
+            hsnow_out         =surface%now%hsnow
+            hice_out          =surface%now%hice
+            qmr_out           =surface%now%qmr_res
+         end if
+      end do
+   end do
+
+   ! de-allocate surface_physics arrays
+   call surface_dealloc(surface%now)
+
+end subroutine run_semic_transient ! }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp	(revision 27955)
@@ -0,0 +1,129 @@
+/*!\file SurfaceRelVelMisfitx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./SurfaceRelVelMisfitx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/Inputs/DatasetInput.h"
+
+void SurfaceRelVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(Object* & object : elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+		J+=SurfaceRelVelMisfit(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble SurfaceRelVelMisfit(Element* element){
+
+	int        domaintype,numcomponents;
+	IssmDouble Jelem=0.;
+	IssmDouble misfit,Jdet,scalex,scaley;
+	IssmDouble epsvel=2.220446049250313e-16;
+	IssmDouble meanvel=3.170979198376458e-05; /*1000 m/yr*/
+	IssmDouble vx,vy,vxobs,vyobs,weight;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get basal element*/
+	if(!element->IsOnSurface()) return 0.;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/*Get problem dimension*/
+	element->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   numcomponents   = 1; break;
+		case Domain3DEnum:           numcomponents   = 2; break;
+		case Domain2DhorizontalEnum: numcomponents   = 2; break;
+		default: _error_("not supported yet");
+	}
+
+	/*Spawn surface element*/
+	Element* topelement = element->SpawnTopElement();
+
+	/* Get node coordinates*/
+	topelement->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	DatasetInput* weights_input=topelement->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+   Input* vx_input     = NULL;
+   Input* vxobs_input  = topelement->GetInput(InversionVxObsEnum);   _assert_(vxobs_input);
+   Input* vy_input     = NULL;
+   Input* vyobs_input  = NULL;
+
+   /*Read SurfaceEnum from 2D models:SSA, L1L2, MOLHO*/
+   if (domaintype == Domain2DhorizontalEnum) {
+      vx_input = topelement->GetInput(VxSurfaceEnum);             _assert_(vx_input);
+      if(numcomponents==2){
+         vy_input    =topelement->GetInput(VySurfaceEnum);        _assert_(vy_input);
+         vyobs_input =topelement->GetInput(InversionVyObsEnum);   _assert_(vyobs_input);
+      }
+	}
+   else {
+      vx_input = topelement->GetInput(VxEnum);                    _assert_(vx_input);
+      if(numcomponents==2){
+         vy_input    =topelement->GetInput(VyEnum);               _assert_(vy_input);
+         vyobs_input =topelement->GetInput(InversionVyObsEnum);   _assert_(vyobs_input);
+      }
+   }
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=topelement->NewGauss(4);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		topelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,SurfaceRelVelMisfitEnum);
+		vx_input->GetInputValue(&vx,gauss);
+		vxobs_input->GetInputValue(&vxobs,gauss);
+		if(numcomponents==2){
+			vy_input->GetInputValue(&vy,gauss);
+			vyobs_input->GetInputValue(&vyobs,gauss);
+		}
+
+		/*Compute SurfaceRelVelMisfit:
+		 *
+		 *      1  [     \bar{v}^2             2   \bar{v}^2              2 ]
+		 * J = --- | -------------  (u - u   ) + -------------  (v - v   )  |
+		 *      2  [  (u   + eps)^2       obs    (v   + eps)^2       obs    ]
+		 *              obs                        obs
+		 */
+
+		if(numcomponents==2){
+			scalex=pow(meanvel/(vxobs+epsvel),2); if(vxobs==0)scalex=0;
+			scaley=pow(meanvel/(vyobs+epsvel),2); if(vyobs==0)scaley=0;
+			misfit=0.5*(scalex*pow((vx-vxobs),2)+scaley*pow((vy-vyobs),2));
+		}
+		else{
+			scalex=pow(meanvel/(vxobs+epsvel),2); if(vxobs==0)scalex=0;
+			misfit=0.5*(scalex*pow((vx-vxobs),2));
+		}
+
+		/*Add to cost function*/
+		Jelem+=misfit*weight*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  SurfaceRelVelMisfitx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _SURFACERELVELMISFITX_H
+#define _SURFACERELVELMISFITX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void SurfaceRelVelMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble SurfaceRelVelMisfit(Element* element);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SystemMatricesx/SystemMatricesx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SystemMatricesx/SystemMatricesx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SystemMatricesx/SystemMatricesx.cpp	(revision 27955)
@@ -0,0 +1,144 @@
+/*!\file SystemMatricesx
+ * \brief retrieve vector from inputs in elements
+ */
+
+#include "./SystemMatricesx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../AllocateSystemMatricesx/AllocateSystemMatricesx.h"
+
+void SystemMatricesx(Matrix<IssmDouble>** pKff, Matrix<IssmDouble>** pKfs, Vector<IssmDouble>** ppf, Vector<IssmDouble>** pdf, IssmDouble* pkmax,FemModel* femmodel, bool isAllocated){
+
+	/*intermediary: */
+	int      i,M,N;
+	int      analysisenum;
+	Element *element = NULL;
+	Load    *load    = NULL;
+
+	/*output: */
+	Matrix<IssmDouble> *Kff  = NULL;
+	Matrix<IssmDouble> *Kfs  = NULL;
+	Vector<IssmDouble> *pf   = NULL;
+	Vector<IssmDouble> *df   = NULL;
+	IssmDouble          kmax = 0;
+
+	/*Display message*/
+	if(VerboseModule()) _printf0_("   Allocating matrices");
+
+	/*retrieve parameters: */
+	femmodel->parameters->FindParam(&analysisenum,AnalysisTypeEnum);
+	Analysis* analysis = EnumToAnalysis(analysisenum);
+
+	/*Check if there are penalties*/
+	bool ispenalty = femmodel->loads->IsPenalty();
+
+	/*First, we might need to do a dry run to get kmax if penalties are employed*/
+	if(ispenalty){
+
+		/*Allocate Kff_temp*/
+		Matrix<IssmDouble> *Kff_temp = NULL;
+		AllocateSystemMatricesx(&Kff_temp,NULL,NULL,NULL,femmodel);
+
+		/*Get complete stiffness matrix without penalties*/
+		for(Object* & object : femmodel->elements->objects){
+			element = xDynamicCast<Element*>(object);
+			if(!element->AnyFSet() && analysisenum!=StressbalanceAnalysisEnum) continue;
+			ElementMatrix* Ke = analysis->CreateKMatrix(element);
+			ElementVector* pe = analysis->CreatePVector(element);
+			element->ReduceMatrices(Ke,pe);
+			if(Ke) Ke->AddToGlobal(Kff_temp,NULL);
+			delete Ke;
+			delete pe;
+		}
+
+		for(Object* & object : femmodel->loads->objects){
+			load = xDynamicCast<Load*>(object);
+			load->CreateKMatrix(Kff_temp,NULL);
+		}
+		Kff_temp->Assemble();
+
+		/*Now, figure out maximum value of stiffness matrix, so that we can penalize it correctly: */
+		kmax=Kff_temp->Norm(NORM_INF);
+		delete Kff_temp;
+	}
+
+	/*Allocate stiffness matrices and load vector*/
+	if(isAllocated) {
+		Kff  = *pKff;
+		Kfs  = *pKfs;
+		pf   = *ppf;
+		df   = *pdf;
+	}
+	else {
+		AllocateSystemMatricesx(&Kff,&Kfs,&df,&pf,femmodel);
+	}
+
+	/*Display size*/
+	if(VerboseModule()){
+		Kff->GetSize(&M,&N);
+		_printf0_(" (Kff stiffness matrix size: "<<M<<" x "<<N<<")\n");
+	}
+
+	if(VerboseModule()) _printf0_("   Assembling matrices\n");
+
+	/*Fill stiffness matrix and load vector from elements*/
+	for(Object* & object : femmodel->elements->objects){
+      element = xDynamicCast<Element*>(object);
+		if(!element->AnyFSet() && analysisenum!=StressbalanceAnalysisEnum) continue;
+		ElementMatrix* Ke = analysis->CreateKMatrix(element);
+		ElementVector* pe = analysis->CreatePVector(element);
+		element->ReduceMatrices(Ke,pe);
+		if(Ke) Ke->AddToGlobal(Kff,Kfs);
+		if(pe){
+			pe->AddToGlobal(pf);
+		}
+		delete Ke;
+		delete pe;
+	}
+
+	/*Fill stiffness matrix and load vector from loads*/
+	for(Object* & object : femmodel->loads->objects){
+      load = xDynamicCast<Load*>(object);
+		load->CreateKMatrix(Kff,Kfs);
+		load->CreatePVector(pf);
+	}
+
+	/*Now deal with penalties (only in loads)*/
+	if(ispenalty){
+		for(Object* & object : femmodel->loads->objects){
+			load = xDynamicCast<Load*>(object);
+			load->PenaltyCreateKMatrix(Kff,Kfs,kmax);
+			load->PenaltyCreatePVector(pf,kmax);
+		}
+	}
+
+	/*Create dof vector for stiffness matrix preconditioning*/
+	if(pdf){
+	for(Object* & object : femmodel->elements->objects){
+      element = xDynamicCast<Element*>(object);
+		ElementVector* de=analysis->CreateDVector(element);
+		if(de) de->InsertIntoGlobal(df);
+		delete de;
+		}
+	}
+
+	/*Assemble matrices and vector*/
+	Kff->Assemble();
+	Kfs->Assemble();
+	pf->Assemble();
+	df->Assemble();
+	//Kff->AllocationInfo();
+	//Kfs->AllocationInfo();
+
+	/*cleanu up and assign output pointers: */
+	delete analysis;
+	if(pKff) *pKff=Kff;
+	else      delete Kff;
+	if(pKfs) *pKfs=Kfs;
+	else      delete Kfs;
+	if(ppf)  *ppf=pf;
+	else      delete pf;
+	if(pdf)  *pdf=df;
+	else      delete df;
+	if(pkmax) *pkmax=kmax;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/SystemMatricesx/SystemMatricesx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/SystemMatricesx/SystemMatricesx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/SystemMatricesx/SystemMatricesx.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  SystemMatricesx.h
+*/ 
+
+#ifndef _SYSTEMMATRICESX_H
+#define _SYSTEMMATRICESX_H
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+/* local prototypes: */
+void SystemMatricesx(Matrix<IssmDouble>** pKff, Matrix<IssmDouble>** pKfs, Vector<IssmDouble>** ppf, Vector<IssmDouble>** pdf, IssmDouble* pkmax,FemModel* femmodel, bool isAllocated=false);
+
+#endif  /* _SYSTEMMATRICESX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.cpp	(revision 27955)
@@ -0,0 +1,70 @@
+/*!\file ThicknessAbsMisfitx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./ThicknessAbsMisfitx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/Inputs/DatasetInput.h"
+
+void ThicknessAbsMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		J+=ThicknessAbsMisfit(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble ThicknessAbsMisfit(Element* element){
+
+	IssmDouble  thickness,thicknessobs,weight;
+	IssmDouble  Jelem=0.;
+	IssmDouble  misfit,Jdet;
+	IssmDouble* xyz_list = NULL;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/* Get node coordinates*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	DatasetInput* weights_input     =element->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* thickness_input   =element->GetInput(ThicknessEnum);                          _assert_(thickness_input);
+	Input* thicknessobs_input=element->GetInput(InversionThicknessObsEnum);              _assert_(thicknessobs_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,ThicknessAbsMisfitEnum);
+		thickness_input->GetInputValue(&thickness,gauss);
+		thicknessobs_input->GetInputValue(&thicknessobs,gauss);
+
+		/*Compute ThicknessAbsMisfitEnum*/
+		Jelem+=0.5*(thickness-thicknessobs)*(thickness-thicknessobs)*weight*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  ThicknessAbsMisfitx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _THICKNESSABSMISFITX_H
+#define _THICKNESSABSMISFITX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void ThicknessAbsMisfitx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble ThicknessAbsMisfit(Element* element);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.cpp	(revision 27955)
@@ -0,0 +1,78 @@
+/*!\file ThicknessAcrossGradientx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./ThicknessAcrossGradientx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/Inputs/DatasetInput.h"
+
+void ThicknessAcrossGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(Object* & object : elements->objects){
+      Element* element = xDynamicCast<Element*>(object);
+		J+=ThicknessAcrossGradient(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble ThicknessAcrossGradient(Element* element){
+
+	IssmDouble  thickness,thicknessobs,weight;
+	IssmDouble  Jelem=0.;
+	IssmDouble  misfit,Jdet;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble  dp[3];
+	IssmDouble  vx,vy,vel;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/* Get node coordinates*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	DatasetInput* weights_input   =element->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* thickness_input =element->GetInput(ThicknessEnum);                          _assert_(thickness_input);
+	Input* vx_input        =element->GetInput(VxEnum);                                 _assert_(vx_input);
+	Input* vy_input        =element->GetInput(VyEnum);                                 _assert_(vy_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,ThicknessAcrossGradientEnum);
+		thickness_input->GetInputValue(&thickness,gauss);
+		thickness_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vel = sqrt(vx*vx+vy*vy);
+		vx  = vx/(vel+1.e-9);
+		vy  = vy/(vel+1.e-9);
+
+		/*J = 1/2 ( -vy*dH/dx + vx*dH/dy )^2 */
+		Jelem+=weight*1/2*(-vy*dp[0] + vx*dp[1])*(-vy*dp[0] + vx*dp[1])*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  ThicknessAcrossGradientx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _THICKNESSACROSSGRADIENT_H
+#define _THICKNESSACROSSGRADIENT_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void ThicknessAcrossGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble ThicknessAcrossGradient(Element* element);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ThicknessAlongGradientx/ThicknessAlongGradientx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ThicknessAlongGradientx/ThicknessAlongGradientx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ThicknessAlongGradientx/ThicknessAlongGradientx.cpp	(revision 27955)
@@ -0,0 +1,78 @@
+/*!\file ThicknessAlongGradientx
+ * \brief: compute misfit between observations and model
+ */
+
+#include "./ThicknessAlongGradientx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+#include "../../classes/Inputs/DatasetInput.h"
+
+void ThicknessAlongGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	/*Compute Misfit: */
+	for(Object* & object : elements->objects){
+		Element* element=xDynamicCast<Element*>(object);
+		J+=ThicknessAlongGradient(element);
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+
+IssmDouble ThicknessAlongGradient(Element* element){
+
+	IssmDouble  thickness,thicknessobs,weight;
+	IssmDouble  Jelem=0.;
+	IssmDouble  misfit,Jdet;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble  dp[3];
+	IssmDouble  vx,vy,vel;
+
+	/*If on water, return 0: */
+	if(!element->IsIceInElement()) return 0.;
+
+	/* Get node coordinates*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/*Retrieve all inputs we will be needing: */
+	DatasetInput* weights_input   =element->GetDatasetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+	Input* thickness_input =element->GetInput(ThicknessEnum);                          _assert_(thickness_input);
+	Input* vx_input        =element->GetInput(VxEnum);                                 _assert_(vx_input);
+	Input* vy_input        =element->GetInput(VyEnum);                                 _assert_(vy_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	while(gauss->next()){
+
+		/* Get Jacobian determinant: */
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		/*Get all parameters at gaussian point*/
+		weights_input->GetInputValue(&weight,gauss,ThicknessAlongGradientEnum);
+		thickness_input->GetInputValue(&thickness,gauss);
+		thickness_input->GetInputDerivativeValue(&dp[0],xyz_list,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		vel = sqrt(vx*vx+vy*vy);
+		vx  = vx/(vel+1.e-9);
+		vy  = vy/(vel+1.e-9);
+
+		/*J = 1/2 ( vx*dH/dx + vy*dH/dy )^2 */
+		Jelem+=weight*1/2*(vx*dp[0] + vy*dp[1])*(vx*dp[0] + vy*dp[1])*Jdet*gauss->weight;
+	}
+
+	/*clean up and Return: */
+	xDelete<IssmDouble>(xyz_list);
+	delete gauss;
+	return Jelem;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/ThicknessAlongGradientx/ThicknessAlongGradientx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/ThicknessAlongGradientx/ThicknessAlongGradientx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/ThicknessAlongGradientx/ThicknessAlongGradientx.h	(revision 27955)
@@ -0,0 +1,14 @@
+/*!\file:  ThicknessAlongGradientx.h
+ * \brief header file for inverse methods misfit computation
+ */ 
+
+#ifndef _THICKNESSALONGGRADIENT_H
+#define _THICKNESSALONGGRADIENT_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void ThicknessAlongGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble ThicknessAlongGradient(Element* element);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Trianglex/Trianglex.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Trianglex/Trianglex.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Trianglex/Trianglex.cpp	(revision 27955)
@@ -0,0 +1,201 @@
+/*!\file Trianglex
+ * \brief: x code for Triangle mesher
+ */
+
+/*Header files: {{{*/
+#include "./Trianglex.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+/*ANSI_DECLARATORS needed to call triangle library: */
+#if defined(_HAVE_TRIANGLE_)
+	#ifndef ANSI_DECLARATORS
+	#define ANSI_DECLARATORS
+	#endif
+	#include "triangle.h"
+	#undef ANSI_DECLARATORS
+#endif
+/*}}}*/
+
+void Trianglex(int** pindex,IssmPDouble** px,IssmPDouble** py,int** psegments,int** psegmentmarkerlist,int* pnels,int* pnods, int* pnsegs,Contours* domain,Contours* rifts,double area){
+
+#if !defined(_HAVE_TRIANGLE_)
+	_error_("triangle has not been installed");
+#else
+	/*indexing: */
+	int i,j;
+
+	/*output: */
+	int    *index             = NULL;
+	double *x                 = NULL;
+	double *y                 = NULL;
+	int    *segments          = NULL;
+	int    *segmentmarkerlist = NULL;
+
+	/*intermediary: */
+	int counter,counter2,backcounter;
+	Contour<IssmPDouble> *contour = NULL;
+
+	/* Triangle structures needed to call Triangle library routines: */
+	struct triangulateio in,out;
+	char   options[256];
+
+	/*Create initial triangulation to call triangulate(). First number of points:*/
+	in.numberofpoints=0;
+	for (i=0;i<domain->Size();i++){
+		contour=(Contour<IssmPDouble>*)domain->GetObjectByOffset(i);
+		in.numberofpoints+=contour->nods-1;
+	}
+	for (i=0;i<rifts->Size();i++){
+		contour=(Contour<IssmPDouble>*)rifts->GetObjectByOffset(i);
+		in.numberofpoints+=contour->nods;
+	}
+
+	/*number of point attributes: */
+	in.numberofpointattributes=1;
+
+	/*fill in the point list: */
+	in.pointlist = xNew<REAL>(in.numberofpoints*2);
+
+	counter=0;
+	for (i=0;i<domain->Size();i++){
+		contour=(Contour<IssmPDouble>*)domain->GetObjectByOffset(i);
+		for (j=0;j<contour->nods-1;j++){
+			in.pointlist[2*counter+0]=contour->x[j];
+			in.pointlist[2*counter+1]=contour->y[j];
+			counter++;
+		}
+	}
+	for (i=0;i<rifts->Size();i++){
+		contour=(Contour<IssmPDouble>*)rifts->GetObjectByOffset(i);
+		for (j=0;j<contour->nods;j++){
+			in.pointlist[2*counter+0]=contour->x[j];
+			in.pointlist[2*counter+1]=contour->y[j];
+			counter++;
+		}
+	}
+
+	/*fill in the point attribute list: */
+	in.pointattributelist = xNew<REAL>(in.numberofpoints*in.numberofpointattributes);
+	for (i=0;i<in.numberofpoints;i++) in.pointattributelist[i] = 0.0;
+
+	/*fill in the point marker list: */
+	in.pointmarkerlist = xNew<int>(in.numberofpoints);
+	for(i=0;i<in.numberofpoints;i++) in.pointmarkerlist[i] = 0;
+
+	/*Build segments. First figure out number of segments: holes and closed outlines have as many segments as vertices: */
+	in.numberofsegments=0;
+	for (i=0;i<domain->Size();i++){
+		contour=(Contour<IssmPDouble>*)domain->GetObjectByOffset(i);
+		in.numberofsegments+=contour->nods-1;
+	}
+	for(i=0;i<rifts->Size();i++){
+		contour=(Contour<IssmPDouble>*)rifts->GetObjectByOffset(i);
+		/*for rifts, we have one less segment as we have vertices*/
+		in.numberofsegments+=contour->nods-1;
+	}
+
+	in.segmentlist = xNew<int>(in.numberofsegments*2);
+	in.segmentmarkerlist = xNewZeroInit<int>(in.numberofsegments);
+	counter=0;
+	backcounter=0;
+	for (i=0;i<domain->Size();i++){
+		contour=(Contour<IssmPDouble>*)domain->GetObjectByOffset(i);
+		for (j=0;j<contour->nods-2;j++){
+			in.segmentlist[2*counter+0]=counter;
+			in.segmentlist[2*counter+1]=counter+1;
+			in.segmentmarkerlist[counter]=0;
+			counter++;
+		}
+		/*Close this profile: */
+		 in.segmentlist[2*counter+0]=counter;
+		 in.segmentlist[2*counter+1]=backcounter;
+		 in.segmentmarkerlist[counter]=0;
+		 counter++;
+		 backcounter=counter;
+	}
+	counter2=counter;
+	for (i=0;i<rifts->Size();i++){
+		contour=(Contour<IssmPDouble>*)rifts->GetObjectByOffset(i);
+		for (j=0;j<(contour->nods-1);j++){
+			in.segmentlist[2*counter2+0]=counter;
+			in.segmentlist[2*counter2+1]=counter+1;
+			in.segmentmarkerlist[counter2]=2+i;
+			counter2++;
+			counter++;
+		}
+		counter++;
+	}
+
+	/*Build regions: */
+	in.numberofregions = 0;
+
+	/*Build holes: */
+	in.numberofholes = domain->Size()-1; /*everything is a hole, but for the first profile.*/
+	if(in.numberofholes){
+		in.holelist = xNew<REAL>(in.numberofholes*2);
+		for (i=0;i<domain->Size()-1;i++){
+			contour=(Contour<IssmPDouble>*)domain->GetObjectByOffset(i+1);
+			GridInsideHole(&in.holelist[2*i+0],&in.holelist[2*i+1],contour->nods-1,contour->x,contour->y);
+		}
+	}
+
+	/* Make necessary initializations so that Triangle can return a triangulation in `out': */
+	out.pointlist             = (REAL*)NULL;
+	out.pointattributelist    = (REAL*)NULL;
+	out.pointmarkerlist       = (int *)NULL;
+	out.trianglelist          = (int *)NULL;
+	out.triangleattributelist = (REAL*)NULL;
+	out.neighborlist          = (int *)NULL;
+	out.segmentlist           = (int *)NULL;
+	out.segmentmarkerlist     = (int *)NULL;
+	out.edgelist              = (int *)NULL;
+	out.edgemarkerlist        = (int *)NULL;
+
+	/* Triangulate the points:.  Switches are chosen to read and write a  */
+	/*   PSLG (p), preserve the convex hull (c), number everything from  */
+	/*   zero (z), assign a regional attribute to each element (A), and  */
+	/*   produce an edge list (e), a Voronoi diagram (v), and a triangle */
+	/*   neighbor list (n).                                              */
+	sprintf(options,"%s%lf","pQzDq30ia",area); /*replace V by Q to quiet down the logging*/
+	triangulate(options, &in, &out, NULL);
+	/*report(&out, 0, 1, 1, 1, 1, 0);*/
+
+	/*Allocate index, x and y: */
+	index=xNew<int>(3*out.numberoftriangles);
+	x=xNew<double>(out.numberofpoints);
+	y=xNew<double>(out.numberofpoints);
+	segments=xNew<int>(3*out.numberofsegments);
+	segmentmarkerlist=xNew<int>(out.numberofsegments);
+
+	for (i = 0; i< out.numberoftriangles; i++) {
+		for (j = 0; j < out.numberofcorners; j++) {
+			index[3*i+j]=(int)out.trianglelist[i*out.numberofcorners+j]+1;
+		}
+	}
+	for (i = 0; i< out.numberofpoints; i++){
+		x[i]=(double)out.pointlist[i*2+0];
+		y[i]=(double)out.pointlist[i*2+1];
+	}
+	for (i = 0; i<out.numberofsegments;i++){
+		segments[3*i+0]=(int)out.segmentlist[i*2+0]+1;
+		segments[3*i+1]=(int)out.segmentlist[i*2+1]+1;
+		segmentmarkerlist[i]=(int)out.segmentmarkerlist[i];
+	}
+
+	/*Associate elements with segments: */
+	AssociateSegmentToElement(&segments,out.numberofsegments,index,out.numberoftriangles);
+
+	/*Order segments so that their normals point outside the domain: */
+	OrderSegments(&segments,out.numberofsegments, index,out.numberoftriangles);
+
+	/*Output : */
+	*pindex=index;
+	*px=x;
+	*py=y;
+	*psegments=segments;
+	*psegmentmarkerlist=segmentmarkerlist;
+	*pnels=out.numberoftriangles;
+	*pnods=out.numberofpoints;
+	*pnsegs=out.numberofsegments;
+#endif
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/Trianglex/Trianglex.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/Trianglex/Trianglex.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/Trianglex/Trianglex.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file:  Trianglex.h
+ * \brief header file for Trianglex module
+ */ 
+
+#ifndef _TRIANGLEX_H_
+#define _TRIANGLEX_H_
+
+#include <string.h>
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void Trianglex(int** pindex,IssmPDouble** px,IssmPDouble** py,int** psegments,int** psegmentmarkerlist,int* pnels,int* pnods, int* pnseg,Contours* domain,Contours* rifts,double area);
+#endif  /* _TRIANGLEX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.cpp	(revision 27955)
@@ -0,0 +1,31 @@
+/*!\file UpdateDynamicConstraintsx
+ * \brief module to update single point constraints  out of new spc vector, for next time step.
+ */
+
+#include "./UpdateDynamicConstraintsx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void UpdateDynamicConstraintsx(Constraints* constraints,Nodes* nodes,Parameters* parameters,Vector<IssmDouble>* yg){
+
+	int configuration_type;
+	IssmDouble* yg_serial=NULL;
+
+	/*Get current configuration*/
+	parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+
+	/*serialize yg, so nodes can index into it: */
+	yg_serial=yg->ToMPISerial();
+
+	for(Object* & object : constraints->objects){
+		Constraint* constraint=(Constraint*)object;
+		if(constraint->ObjectEnum()==SpcDynamicEnum){
+			((SpcDynamic*)constraint)->SetDynamicConstraint(nodes,yg_serial);
+		}
+
+	}
+
+	/*Free resources:*/
+	xDelete<IssmDouble>(yg_serial);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.h	(revision 27955)
@@ -0,0 +1,12 @@
+/*!\file:  UpdateDynamicConstraintsx.h
+ * \brief header file for updating single point constraints  for next time step
+ */ 
+
+#ifndef _UPDATEDYNAMICCONSTRAINTSXX_H
+#define _UPDATEDYNAMICCONSTRAINTSXX_H
+
+#include "../../classes/classes.h"
+
+void UpdateDynamicConstraintsx(Constraints* constraints,Nodes* nodes,Parameters* parameters,Vector<IssmDouble>* yg);
+
+#endif  /* _UPDATESPCSX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.cpp	(revision 27955)
@@ -0,0 +1,48 @@
+/*!\file VertexCoordinatesx
+ * \brief: compute a vector x,y and z of vertex coordinates by
+ * marching through all our vertices.
+ */
+
+#include "./VertexCoordinatesx.h"
+
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void VertexCoordinatesx( IssmDouble** px, IssmDouble** py, IssmDouble** pz,Vertices* vertices,bool spherical) {
+
+	/*figure out how many vertices we have: */
+	int numberofvertices=vertices->NumberOfVertices();
+
+	Vector<IssmDouble>* vx=new Vector<IssmDouble>(numberofvertices);
+	Vector<IssmDouble>* vy=new Vector<IssmDouble>(numberofvertices);
+	Vector<IssmDouble>* vz=new Vector<IssmDouble>(numberofvertices);
+
+	/*march through our vertices: */
+	for(Object* & object : vertices->objects){
+		Vertex* vertex=(Vertex*)object;
+		vertex->VertexCoordinates(vx,vy,vz,spherical);
+	}
+
+	/*Assemble*/
+	vx->Assemble();
+	vy->Assemble();
+	vz->Assemble();
+
+	/*serialize: */
+	IssmDouble* x=vx->ToMPISerial();
+	IssmDouble* y=vy->ToMPISerial();
+	IssmDouble* z=vz->ToMPISerial();
+
+	/*Free resources: */
+	delete vx;
+	delete vy;
+	delete vz;
+
+	/*output: */
+	if(px) *px=x;
+	else xDelete<IssmDouble>(x);
+	if(py) *py=y;
+	else xDelete<IssmDouble>(y);
+	if(pz) *pz=z;
+	else xDelete<IssmDouble>(z);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.h	(revision 27955)
@@ -0,0 +1,12 @@
+/*!\file:  VertexCoordinatesx.h
+ */ 
+
+#ifndef _VERTEX_COORDINATESX_H
+#define _VERTEX_COORDINATESX_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void VertexCoordinatesx( IssmDouble** px, IssmDouble** py, IssmDouble** pz,Vertices* vertices,bool spherical=false);
+
+#endif  /* _VERTEX_COORDINATESX_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/modules/modules.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/modules/modules.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/modules/modules.h	(revision 27955)
@@ -0,0 +1,111 @@
+/*! \file modules.h: 
+ *  \brief header file for all the ISSM modules
+ */
+
+#ifndef _ISSM_MODULES_H_
+#define _ISSM_MODULES_H_
+
+#ifdef _HAVE_BAMG_
+#include "./Bamgx/Bamgx.h"
+#include "./BamgConvertMeshx/BamgConvertMeshx.h"
+#include "./BamgTriangulatex/BamgTriangulatex.h"
+#endif
+
+/*Modules: */
+#include "./AllocateSystemMatricesx/AllocateSystemMatricesx.h"
+#include "./AverageOntoPartitionx/AverageOntoPartitionx.h"
+#include "./Calvingx/Calvingx.h"
+#include "./Chacox/Chacox.h"
+#include "./ConfigureObjectsx/ConfigureObjectsx.h"
+#include "./ContourToMeshx/ContourToMeshx.h"
+#include "./ContourToNodesx/ContourToNodesx.h"
+#include "./ControlInputSetGradientx/ControlInputSetGradientx.h"
+#include "./CreateNodalConstraintsx/CreateNodalConstraintsx.h"
+#include "./CreateJacobianMatrixx/CreateJacobianMatrixx.h"
+#include "./Damagex/Damagex.h"
+#include "./DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.h"
+#include "./DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.h"
+#include "./ExpToLevelSetx/ExpToLevelSetx.h"
+#include "./ElementConnectivityx/ElementConnectivityx.h"
+#include "./GeothermalFluxx/GeothermalFluxx.h"
+#include "./GetSolutionFromInputsx/GetSolutionFromInputsx.h"
+#include "./GetVectorFromInputsx/GetVectorFromInputsx.h"
+#include "./GetVectorFromControlInputsx/GetVectorFromControlInputsx.h"
+#include "./GiaDeflectionCorex/GiaDeflectionCorex.h"
+#include "./SetControlInputsFromVectorx/SetControlInputsFromVectorx.h"
+#include "./SetActiveNodesLSMx/SetActiveNodesLSMx.h"
+#include "./Gradjx/Gradjx.h"
+#include "./GroundinglineMigrationx/GroundinglineMigrationx.h"
+#include "./FrontalForcingsx/FrontalForcingsx.h"
+#include "./InputDepthAverageAtBasex/InputDepthAverageAtBasex.h"
+#include "./InputDuplicatex/InputDuplicatex.h"
+#include "./InputExtrudex/InputExtrudex.h"
+#include "./InterpFromMesh2dx/InterpFromMesh2dx.h"
+#include "./InterpFromGridToMeshx/InterpFromGridToMeshx.h"
+#include "./InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.h"
+#include "./InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.h"
+#include "./InterpFromMeshToGridx/InterpFromMeshToGridx.h"
+#include "./InputUpdateFromConstantx/InputUpdateFromConstantx.h"
+#include "./InputUpdateFromSolutionx/InputUpdateFromSolutionx.h"
+#include "./InputUpdateFromDakotax/InputUpdateFromDakotax.h"
+#include "./InputUpdateFromVectorx/InputUpdateFromVectorx.h"
+#include "./InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.h"
+#include "./InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.h"
+#include "./IoModelToConstraintsx/IoModelToConstraintsx.h"
+#include "./KMLFileReadx/KMLFileReadx.h"
+#include "./KMLMeshWritex/KMLMeshWritex.h"
+#include "./KMLOverlayx/KMLOverlayx.h"
+#include "./Exp2Kmlx/Exp2Kmlx.h"
+#include "./KillIcebergsx/KillIcebergsx.h"
+#include "./Kml2Expx/Kml2Expx.h"
+#include "./Krigingx/Krigingx.h"
+#include "./FloatingiceMeltingRatex/FloatingiceMeltingRatex.h"
+#include "./FloatingiceMeltingRatePicox/FloatingiceMeltingRatePicox.h"
+#include "./Mergesolutionfromftogx/Mergesolutionfromftogx.h"
+#include "./MeshPartitionx/MeshPartitionx.h"
+#include "./MeshProfileIntersectionx/MeshProfileIntersectionx.h"
+#include "./SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.h"
+#include "./SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.h"
+#include "./SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.h"
+#include "./SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.h"
+#include "./SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.h"
+#include "./ModelProcessorx/ModelProcessorx.h"
+#include "./MmeToInputFromIdx/MmeToInputFromIdx.h"
+#include "./ParseToolkitsOptionsx/ParseToolkitsOptionsx.h"
+#include "./NodalValuex/NodalValuex.h"
+#include "./NodeConnectivityx/NodeConnectivityx.h"
+#include "./NodesDofx/NodesDofx.h"
+#include "./OutputDefinitionsResponsex/OutputDefinitionsResponsex.h"
+#include "./OutputResultsx/OutputResultsx.h"
+#include "./ConstraintsStatex/ConstraintsStatex.h"
+#include "./PointCloudFindNeighborsx/PointCloudFindNeighborsx.h"
+#include "./PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.h"
+#include "./QmuStatisticsx/QmuStatisticsx.h"
+#include "./Reduceloadx/Reduceloadx.h"
+#include "./Reducevectorgtofx/Reducevectorgtofx.h"
+#include "./ResetConstraintsx/ResetConstraintsx.h"
+#include "./ResetFSBasalBoundaryConditionx/ResetFSBasalBoundaryConditionx.h"
+#include "./RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.h"
+#include "./RheologyBAbsGradientx/RheologyBAbsGradientx.h"
+#include "./Scotchx/Scotchx.h"
+#include "./Shp2Kmlx/Shp2Kmlx.h"
+#include "./StochasticForcingx/StochasticForcingx.h"
+#include "./SurfaceMassBalancex/SurfaceMassBalancex.h"
+#include "./Solverx/Solverx.h"
+#include "./SystemMatricesx/SystemMatricesx.h"
+#include "./SpcNodesx/SpcNodesx.h"
+#include "./SurfaceAreax/SurfaceAreax.h"
+#include "./Trianglex/Trianglex.h"
+#include "./ProcessRiftsx/ProcessRiftsx.h"
+#include "./ThicknessAbsMisfitx/ThicknessAbsMisfitx.h"
+#include "./ThicknessAlongGradientx/ThicknessAlongGradientx.h"
+#include "./ThicknessAcrossGradientx/ThicknessAcrossGradientx.h"
+#include "./UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.h"
+#include "./VertexCoordinatesx/VertexCoordinatesx.h"
+#include "./ElementCoordinatesx/ElementCoordinatesx.h"
+
+#ifdef _HAVE_OCEAN_
+#include "./OceanExchangeDatax/OceanExchangeDatax.h"
+#endif
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/Abs.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/Abs.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/Abs.h	(revision 27955)
@@ -0,0 +1,7 @@
+#ifndef _BAMGABS_H_
+#define _BAMGABS_H_
+
+namespace bamg {
+	template<class T> inline T Abs (const T &a){return a <0 ? -a : a;}
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/BigPrimeNumber.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/BigPrimeNumber.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/BigPrimeNumber.cpp	(revision 27955)
@@ -0,0 +1,34 @@
+#include "./Abs.h"
+#include "./extrema.h"
+
+namespace bamg {
+
+	long BigPrimeNumber(long n){
+		/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/AGoodNumberPrimeWith)*/
+
+		/*list of big prime numbers*/
+		const long BigPrimeNumber[] ={ 567890359L,
+			567890431L,  567890437L,  567890461L,  567890471L,
+			567890483L,  567890489L,  567890497L,  567890507L,
+			567890591L,  567890599L,  567890621L,  567890629L , 0};
+
+		/*initialize o and pi*/
+		long o  = 0;
+		long pi = BigPrimeNumber[1];
+
+		/*loop until BigPrimeNumber[i]==0 (end of BigPrimeNumber)*/
+		for (int i=0; BigPrimeNumber[i]; i++){
+
+			/*compute r, remainder of the division of BigPrimeNumber[i] by n*/
+			long r = BigPrimeNumber[i] % n;
+
+			/*compute oo = min ( r , n-r , |n - 2r|, |n-3r|)*/
+			long oo = Min(Min(r,n-r),Min(Abs(n-2*r),Abs(n-3*r)));
+			if(o < oo){
+				o  = oo;
+				pi = BigPrimeNumber[i];
+			}
+		}
+		return pi; 
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/BigPrimeNumber.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/BigPrimeNumber.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/BigPrimeNumber.h	(revision 27955)
@@ -0,0 +1,7 @@
+#ifndef _BIGPRIMENUMBER_H_
+#define _BIGPRIMENUMBER_H_
+
+namespace bamg {
+	long BigPrimeNumber(long n);
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/Exchange.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/Exchange.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/Exchange.h	(revision 27955)
@@ -0,0 +1,6 @@
+#ifndef _EXCHANGE_H_
+#define _EXCHANGE_H_
+
+template<class T> inline void Exchange(T &a,T &b){T c=a;a=b;b=c;}
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/HeapSort.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/HeapSort.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/HeapSort.h	(revision 27955)
@@ -0,0 +1,99 @@
+#ifndef _HEAPSORT_H_
+#define _HEAPSORT_H_
+
+/*Sort a list of size n*/
+template<class T> inline void  HeapSort(T *c,long n){ /*{{{*/
+
+	/*Intermediaries*/
+	int i,j,l,r;
+	T   crit;
+
+	/*return if size <=1*/
+	if(n<=1) return;
+
+	/*Initialize variables*/
+	l=n/2+1; 
+	r=n;
+	c--; //the array must starts at 1 and not 0 
+
+	/*Sorting algorithm*/
+	for(;;){
+		if(l<=1){
+			crit   = c[r];
+			c[r--] = c[1];
+			if(r==1){
+				c[1]=crit; 
+				return;
+			}
+		}
+		else{
+			crit = c[--l]; 
+		}
+		j=l;
+		for(;;){
+			i = j;
+			j = 2*j;
+			if  (j>r){c[i]=crit;break;}
+			if ((j<r) && (c[j] < c[j+1])) j++;//c[j+1]> c[j] -> take j+1 instead of j (larger value)
+			if (crit < c[j]) c[i]=c[j];       //c[j]  > crit -> put this large value in i(<j)
+			else{c[i]=crit;break;}            //c[j]  < crit -> put crit in i (<j)
+		}
+	}
+}
+/*}}}*/
+
+/*Sort a list of size n and returns ordering*/
+template<class T> inline void  HeapSort(int** porder,T* c,int n){ /*{{{*/
+
+	/*Intermediaries*/
+	int  i,j,l,r;
+	T    crit;
+	int  pos;
+	int* order = NULL;
+
+	/*return if size <=1*/
+	if(n<=1) return;
+
+	/*Initialize variables*/
+	l=n/2+1; 
+	r=n;
+	c--; //the array must starts at 1 and not 0 
+	order = new int[n];
+	for(i=0;i<n;i++) order[i]=i;
+	order--;
+
+	/*Sorting algorithm*/
+	for(;;){
+		if(l<=1){
+			crit  =c[r]; pos=order[r];
+			c[r--]=c[1]; order[r+1]=order[1];
+			if (r==1){
+				c[1]=crit; order[1]=pos;
+				order++;
+				*porder=order;
+				return;
+			}
+		}
+		else  {crit=c[--l]; pos=order[l];}
+		j=l;
+		for(;;){
+			i=j;
+			j=2*j;
+			if  (j>r) {c[i]=crit;order[i]=pos;break;}
+			if ((j<r) && (c[j] < c[j+1]))j++;
+			if (crit < c[j]){
+				c[i]=c[j];
+				order[i]=order[j];
+			}
+			else{
+				c[i]=crit;order[i]=pos;
+				break;
+			}
+		}
+	}
+
+	/*Make cppcheck happy*/
+	*porder=order;
+}/*}}}*/
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/OppositeAngle.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/OppositeAngle.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/OppositeAngle.h	(revision 27955)
@@ -0,0 +1,12 @@
+#ifndef _OPPOSITEANGLE_H_
+#define _OPPOSITEANGLE_H_
+
+#include "../Numerics/constants.h"
+
+/*Return the opposite angle modulo 2 Pi*/
+namespace bamg {
+	inline float  OppositeAngle(float  a){return a<0 ? PI+a:a-PI;}
+	inline double OppositeAngle(double a){return a<0 ? PI+a:a-PI;}
+}
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/extrema.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/extrema.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/extrema.h	(revision 27955)
@@ -0,0 +1,13 @@
+#ifndef _EXTREMA_H_
+#define _EXTREMA_H_
+
+namespace bamg {
+
+	template<class T> inline T Min (const T &a,const T &b){return a < b ? a : b;}
+	template<class T> inline T Max (const T &a,const T & b){return a > b ? a : b;}
+	template<class T> inline T Max3 (const T &a,const T & b,const T & c){return Max(Max(a,b),c);}
+	template<class T> inline T Min3 (const T &a,const T & b,const T & c){return Min(Min(a,b),c);}
+
+}
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/shared.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/shared.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Bamg/shared.h	(revision 27955)
@@ -0,0 +1,15 @@
+/* \file shared.h
+ * \brief: header file for all shared  routines.
+ */
+
+#ifndef _SHAREDBamg_H_
+#define _SHAREDBamg_H_
+
+#include "Abs.h"
+#include "BigPrimeNumber.h"
+#include "Exchange.h"
+#include "extrema.h"
+#include "HeapSort.h"
+#include "OppositeAngle.h"
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/Arrhenius.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/Arrhenius.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/Arrhenius.cpp	(revision 27955)
@@ -0,0 +1,51 @@
+/* \file Arrhenius.cpp
+ * \brief figure out B of ice for a certain temperature
+ */
+
+#include <math.h>
+#include "../Numerics/types.h"
+#include "../Exceptions/exceptions.h"
+
+IssmDouble Arrhenius(IssmDouble temperature,IssmDouble depth,IssmDouble n){
+	/*Use EISMINT Parameterization for the rheology: Payne2000
+	 *
+	 *  A(T*) = A0 exp(-Q/RT*)
+	 *
+	 *  A0 constant of proportionality
+	 *     = 3.61 * 10^-13   if T*<263.15K
+	 *     = 1.73 * 10^3     if T*>263.15K
+	 *  Q  Activation energy for creep
+	 *     = 6.0  * 10^4     if T*<263.15K
+	 *     = 13.9 * 10^4     if T*>263.15K
+	 *  R  Universal gas constant
+	 *     = 8.314
+	 *  T* Absolute temperature corrected for the dependence of Tpmp on P
+	 *     = T - beta (s-z)
+	 *
+	 *  Convert A to B :  B = A^(-1/n) */
+
+	/*Some physical constants (Payne2000)*/
+	IssmDouble beta=8.66*1.e-4;
+	IssmDouble R=8.314;
+
+	/*Intermediaries*/
+	IssmDouble A,B,Tstar;
+
+	/*convert temperature to absolute temperature*/
+	_assert_(depth>0);
+	Tstar=temperature-beta*depth;
+	_assert_(Tstar>0);
+
+	/*Get A*/
+	if(Tstar<263.15){
+		A=3.61e-13*exp(  -6.e+4/(R*Tstar));
+	}
+	else{
+		A=1.73e+3 *exp(-13.9e+4/(R*Tstar));
+	}
+
+	/*Convert to B*/
+	B=pow(A,-1./n);
+
+	return B;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/BuddJacka.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/BuddJacka.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/BuddJacka.cpp	(revision 27955)
@@ -0,0 +1,60 @@
+/* \file BuddJacka.cpp
+ * \brief figure out B of ice for a certain temperature
+ *	  INPUT function B=BuddJacka(temperature)
+ *    where rigidity (in s^(1/3)Pa) is the flow law paramter in the flow law sigma=B*e(1/3) (Budd and Jacka, 1989). 
+ */
+#include <math.h>
+
+#include "../Numerics/types.h"
+
+IssmDouble BuddJacka(IssmDouble temperature){
+
+	/*output: */
+	IssmDouble B,T;
+
+	/*Switch to celsius from Kelvin: */
+	T=temperature-273.15;
+
+	if(T<=-40.){
+		B=1e9*(-0.000031098521204*pow(T+50.,3)+ 0.002234792114381*pow(T+50.,2)-0.065051516643164*(T+50.)+1.005181071430026);
+	}
+	else if((-40.<T)  &&  (T<=-35.)){
+	 B=1e9*(-0.000031098521204*pow(T+40.,3)+ 0.001301836478264*pow(T+40.,2)-0.029685230716715*(T+40.)+0.547046595232583);
+	}
+	else if((-35.<T)  &&  (T<=-30.)){
+		B=1e9*(-0.000038394040864*pow(T+35.,3)+ 0.000835358660205*pow(T+35.,2)-0.018999255024368*(T+35.)+0.427279038455119);
+	}
+	else if((-30.<T)  &&  (T<=-25.)){
+		B=1e9*(-0.000007037062330*pow(T+30.,3)+ 0.000259448047242*pow(T+30.,2)-0.013525221487131*(T+30.)+0.348367474730384);
+	}
+	else if((-25.<T)  &&  (T<=-20.)){
+		B=1e9*( 0.000000905055684*pow(T+25.,3)+ 0.000153892112291*pow(T+25.,2)-0.011458520689465*(T+25.)+0.286347935684521);
+	}
+	else if((-20.<T)  &&  (T<=-15.)){
+		B=1e9*(-0.000002025865930*pow(T+20.,3)+ 0.000167467947546*pow(T+20.,2)-0.009851720390281*(T+20.)+0.233015767004928);
+	}
+	else if((-15.<T)  &&  (T<=-10.)){
+		B=1e9*(-0.000014464671112*pow(T+15.,3)+ 0.000137079958603*pow(T+15.,2)-0.008328980859537*(T+15.)+0.187690630500981);
+	}
+	else if((-10.<T)  &&  (T<=-5.)){
+		B=1e9*(-0.000014230086582*pow(T+10.,3)+-0.000079890108083*pow(T+10.,2)-0.008043031606935*(T+10.)+0.147664641279324);
+	}
+	else if((-5.<T)  &&  (T<=-2.)){
+		B=1e9*( 0.000022694046251*pow(T+5.,3)+-0.000293341406806*pow(T+5.,2)-0.009909189181377*(T+5. )+0.103673469719891);
+	}
+	else if((-2.<T)  &&  (T<=-1.)){
+		B=1e9*( 0.000056280347425*pow(T+2.,3)+-0.000089094990549*pow(T+2.,2)-0.011056498373441*(T+2. )+0.071918568763277);
+	}
+	else if((-1.<T)){
+		B=1e9*( 0.000056280347425*pow(T+1.,3)+ 0.000079746051725*pow(T+1.,2)-0.011065847312265*(T+1. )+0.060829255746712);
+	}
+	else{
+		/*FIXME: just copying previous case for now.... Felicity?*/
+		B=1e9*( 0.000056280347425*pow(T+1.,3)+ 0.000079746051725*pow(T+1.,2)-0.011065847312265*(T+1. )+0.060829255746712);
+	}
+
+	/*B cannot be negative!*/
+	if(B<0) B=1.e+6;
+
+	return B;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp	(revision 27955)
@@ -0,0 +1,39 @@
+/* file:  ComputeTemperaturePrecipitationfrom018.cpp
+ Scale present day monthly precipitation and temperature fields
+ along the NGRIP oxygen isotope record.
+ */
+
+#include "./elements.h"
+#include "../Numerics/numerics.h"
+#include <cmath>
+
+void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,bool isTemperatureScaled,
+			bool isPrecipScaled, IssmDouble f, IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
+			IssmDouble* PrecipitationReconstructed,IssmDouble* TemperatureReconstructed, IssmDouble* monthlytemperaturesout, 
+			IssmDouble* monthlyprecout){
+
+  IssmDouble monthlytemperaturestmp[12],monthlyprectmp[12];
+  IssmDouble deltaTemp;
+
+  /* Constants */
+  // dpermil = 2.4;/*degrees C per mil*/
+
+  /*Create Delta Temp to be applied to monthly temps and used in precip scaling*/
+  deltaTemp = dpermil * (d018+34.83);   
+
+  for(int imonth = 0; imonth<12; imonth++){
+
+	 if(isTemperatureScaled)monthlytemperaturestmp[imonth] = TemperaturePresentday[imonth] + deltaTemp;
+	 else{
+		 monthlytemperaturestmp[imonth] = TemperatureReconstructed[imonth];
+		 deltaTemp=TemperatureReconstructed[imonth]-TemperaturePresentday[imonth];
+	 }
+
+	 if (isPrecipScaled)monthlyprectmp[imonth] = PrecipitationPresentday[imonth]*exp((f/dpermil)*deltaTemp);
+	 else monthlyprectmp[imonth] = PrecipitationReconstructed[imonth];
+
+    /*Assign output pointer*/
+    *(monthlytemperaturesout+imonth) = monthlytemperaturestmp[imonth];
+    *(monthlyprecout+imonth) = monthlyprectmp[imonth];
+  }
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/ComputeDelta18oTemperaturePrecipitation.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/ComputeDelta18oTemperaturePrecipitation.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/ComputeDelta18oTemperaturePrecipitation.cpp	(revision 27955)
@@ -0,0 +1,31 @@
+/* file:  ComputeTemperaturePrecipitation.cpp
+   Compute the temperature and precipitation at time t from 
+   the data at present day and delta18O
+ */
+
+#include "./elements.h"
+#include "../Numerics/numerics.h"
+#include <cmath>
+
+void ComputeDelta18oTemperaturePrecipitation(IssmDouble Delta18oSurfacePresent, IssmDouble Delta18oSurfaceLgm, IssmDouble Delta18oSurfaceTime,
+				     IssmDouble Delta18oPresent, IssmDouble Delta18oLgm, IssmDouble Delta18oTime, 
+				     IssmDouble* PrecipitationsPresentday,
+				     IssmDouble* TemperaturesLgm, IssmDouble* TemperaturesPresentday, 
+				     IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout){
+
+  IssmDouble monthlytemperaturestmp[12],monthlyprectmp[12];
+  IssmDouble delta18oLapseRate=-6.2*pow(10.,-3);
+  IssmDouble glacialindex; // used to vary present day temperature
+
+  glacialindex = (Delta18oTime-Delta18oPresent-delta18oLapseRate*(Delta18oSurfaceTime-Delta18oSurfacePresent))
+    /(Delta18oLgm-Delta18oPresent-delta18oLapseRate*(Delta18oSurfaceLgm-Delta18oSurfacePresent)); // Tarasov 2004 paper
+
+  for (int imonth = 0; imonth<12; imonth++){
+    monthlytemperaturestmp[imonth] = glacialindex*TemperaturesLgm[imonth] + (1.-glacialindex)*TemperaturesPresentday[imonth];
+    monthlyprectmp[imonth] = PrecipitationsPresentday[imonth];
+
+    /*Assign output pointer*/
+    *(monthlytemperaturesout+imonth) = monthlytemperaturestmp[imonth];
+    *(monthlyprecout+imonth) = monthlyprectmp[imonth];
+  }
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/ComputeMungsmTemperaturePrecipitation.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/ComputeMungsmTemperaturePrecipitation.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/ComputeMungsmTemperaturePrecipitation.cpp	(revision 27955)
@@ -0,0 +1,30 @@
+/* file:  ComputeMungsmTemperaturePrecipitation.cpp
+   Compute the temperature and precipitation at time t from 
+   the data at present day and lgm.
+   The interpolation is done from some factors extracted from the MUNGSM
+ */
+
+#include "./elements.h"
+#include "../Numerics/numerics.h"
+#include <cmath>
+
+void ComputeMungsmTemperaturePrecipitation(IssmDouble TdiffTime, IssmDouble PfacTime,
+					   IssmDouble* PrecipitationsLgm, IssmDouble* PrecipitationsPresentday,
+					   IssmDouble* TemperaturesLgm, IssmDouble* TemperaturesPresentday,
+					   IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout){ 
+
+  IssmDouble monthlytemperaturestmp[12],monthlyprectmp[12];
+  IssmDouble tdiffh;  
+
+  for (int imonth = 0; imonth<12; imonth++){
+    tdiffh = TdiffTime*( TemperaturesLgm[imonth] - TemperaturesPresentday[imonth] );
+    monthlytemperaturestmp[imonth] = tdiffh + TemperaturesPresentday[imonth] ;
+
+    monthlyprectmp[imonth] =min(1.5, PrecipitationsPresentday[imonth] * pow(PrecipitationsLgm[imonth],PfacTime));   // [m/yr]
+
+    /*Assign output pointer*/
+    *(monthlytemperaturesout+imonth) = monthlytemperaturestmp[imonth];
+    *(monthlyprecout+imonth) = monthlyprectmp[imonth];
+  }
+  // printf(" tempera %f\n",monthlytemperaturestmp[1]);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/Cuffey.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/Cuffey.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/Cuffey.cpp	(revision 27955)
@@ -0,0 +1,57 @@
+/* \file Cuffey.cpp
+ * \brief figure out B of ice for a certain temperature
+ *	  INPUT function B=Cuffey(temperature)
+ *    where rigidigty (in s^(1/3)Pa) is the flow law paramter in the flow law sigma=B*e(1/3) (Cuffey, p75). 
+ */
+
+#include <math.h>
+
+#include "../Numerics/types.h"
+
+IssmDouble Cuffey(IssmDouble temperature){
+
+	/*output: */
+	IssmDouble B,T;
+
+	/*Switch to celsius from Kelvin: */
+	T=temperature-273.15;
+
+	if(T<=-45.0){
+		B=1.e+8*(-0.000396645116301*pow(T+50.,3)+ 0.013345579471334*pow(T+50.,2) -0.356868703259105*(T+50.)+7.272363035371383);
+	}
+	else if((T>=-45.0) && (T<=-40.0)){
+		B=1.e+8*(-0.000396645116301*pow(T+45.,3)+ 0.007395902726819*pow(T+45.,2) -0.253161292268336*(T+45.)+5.772078366321591);
+	}
+	else if((T>=-40.0) && (T<=-35.0)){
+		B=1.e+8*(0.000408322072669*pow(T+40.,3)+  0.001446225982305*pow(T+40.,2)  -0.208950648722716*(T+40.)+4.641588833612773);
+	}
+	else if((T>=-35.0) && (T<=-30.0)){
+		B=1.e+8*(-0.000423888728124*pow(T+35.,3)+ 0.007571057072334*pow(T+35.,2)  -0.163864233449525*(T+35.)+3.684031498640382);
+	}
+	else if((T>=-30.0) && (T<=-25.0)){
+		B=1.e+8*(0.000147154327025*pow(T+30.,3)+ 0.001212726150476*pow(T+30.,2) -0.119945317335478*(T+30.)+3.001000667185614);
+	}
+	else if((T>=-25.0) && (T<=-20.0)){
+		B=1.e+8*(-0.000193435838672*pow(T+25.,3)+ 0.003420041055847*pow(T+25.,2)  -0.096781481303861*(T+25.)+2.449986525148220);
+	}
+	else if((T>=-20.0) && (T<=-15.0)){
+		B=1.e+8*(0.000219771255067*pow(T+20.,3)+  0.000518503475772*pow(T+20.,2)  -0.077088758645767*(T+20.)+2.027400665191131);
+	}
+	else if((T>=-15.0) && (T<=-10.0)){
+		B=1.e+8*(-0.000653438900191*pow(T+15.,3)+ 0.003815072301777*pow(T+15.,2)  -0.055420879758021*(T+15.)+1.682390865739973);
+	}
+	else if((T>=-10.0) && (T<=-5.0)){
+		B=1.e+8*(0.000692439419762*pow(T+10.,3) -0.005986511201093 *pow(T+10.,2) -0.066278074254598*(T+10.)+1.418983411970382);
+	}
+	else if((T>=-5.0) && (T<=-2.0)){
+		B=1.e+8*(-0.000132282004110*pow(T+5.,3) +0.004400080095332*pow(T+5.,2)    -0.074210229783403*(T+5.)+ 1.024485188140279);
+	}
+	else{
+		B=1.e+8*(-0.000132282004110*pow(T+2.,3) +0.003209542058346*pow(T+2.,2)    -0.051381363322371*(T+2.)+ 0.837883605537096);
+	}
+
+	/*B cannot be negative!*/
+	if(B<0) B=1.e+6;
+
+	return B;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/CuffeyTemperate.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/CuffeyTemperate.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/CuffeyTemperate.cpp	(revision 27955)
@@ -0,0 +1,15 @@
+/* \file CuffeyTemperate.cpp
+ * \brief figure out B of ice for a certain temperature and waterfraction
+ *	  INPUT function B=Cuffey(temperature, waterfraction)
+ *    where rigidity (in s^(1/3)Pa) is the flow law parameter in the flow law sigma=B*e(1/3) (Cuffey, p75). 
+ */
+
+#include <math.h>
+#include "./elements.h"
+#include "../Numerics/numerics.h"
+
+IssmDouble CuffeyTemperate(IssmDouble temperature, IssmDouble waterfraction, IssmDouble stressexp){
+
+	return Cuffey(temperature)*pow(1+181.25*max(0., min(0.01, waterfraction)), -1./stressexp); 
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/DrainageFunctionWaterfraction.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/DrainageFunctionWaterfraction.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/DrainageFunctionWaterfraction.cpp	(revision 27955)
@@ -0,0 +1,44 @@
+/*!\file DrainageFunctionWaterfraction.cpp
+ * \brief: drain excess water fraction
+ */
+
+#include <math.h>
+#include "../Numerics/types.h"
+#include "../Exceptions/exceptions.h"
+
+IssmDouble DrainageFunctionWaterfraction(IssmDouble waterfraction, IssmDouble dt=0.){
+	/* DrainageFunctionWaterfraction returns how much of the waterfraction is drained per year */
+	_assert_(waterfraction>=0.);
+	_assert_(dt>=0.);
+
+	IssmDouble w0=0.01, w1=0.02, w2=0.03;
+	IssmDouble yts=365.*24.*60.*60.;
+	IssmDouble Dret, D0=0., D1=0.005/yts, D2=0.05/yts;
+
+	/*get drainage function value*/
+	if((w0==w1)||(w1==w2)||(w0==w2))
+		_error_("Error: equal ordinates in DrainageFunctionWaterfraction -> division by zero. Abort");
+
+	if(waterfraction<=w0)
+		Dret=D0;
+	else if((waterfraction>w0) && (waterfraction<=w1))
+		Dret=(D1-D0)/(w1-w0)*(waterfraction-w0)+D0;
+	else if((waterfraction>w1) && (waterfraction<=w2))
+		Dret=(D2-D1)/(w2-w1)*(waterfraction-w1)+D1;
+	else 
+		Dret=D2;
+
+	/*drain only up to w0*/
+	if(dt==0.){
+		if(waterfraction>w0) 
+			return waterfraction-w0;
+		else
+			return Dret;
+	}
+	else{
+		if((waterfraction>w0) && (waterfraction-dt*Dret<w0))
+			return (waterfraction-w0)/dt;
+		else
+			return Dret;
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/EstarComponents.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/EstarComponents.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/EstarComponents.cpp	(revision 27955)
@@ -0,0 +1,129 @@
+#include <math.h>
+#include "../Numerics/types.h"
+#include "../Exceptions/exceptions.h"
+#include "./elements.h"
+void EstarStrainrateQuantities(IssmDouble *pepsprime_norm, IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble vmag,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz,IssmDouble* dvmag){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble omega[3];
+	IssmDouble nrsp[3],nrsp_norm;
+	IssmDouble eps[3][3];
+	IssmDouble epsprime[3],epsprime_norm;
+
+	/*Get omega, correction for rigid body rotation*/
+	EstarOmega(&omega[0],vx,vy,vz,vmag,dvx,dvy,dvz,dvmag);
+
+	/*Non-rotating shear plane*/
+	nrsp[0] =  vy*omega[2] - vz*omega[1];
+	nrsp[1] =  vz*omega[0] - vx*omega[2];
+	nrsp[2] =  vx*omega[1] - vy*omega[0];
+
+	/*Normalize*/
+	nrsp_norm = sqrt(nrsp[0]*nrsp[0] + nrsp[1]*nrsp[1] + nrsp[2]*nrsp[2]);
+	if(nrsp_norm==0){
+		nrsp[0] = 0.;
+		nrsp[1] = 0.;
+		nrsp[2] = 0.;
+	}
+	else{
+		nrsp[0] =nrsp[0]/nrsp_norm;
+		nrsp[1] =nrsp[1]/nrsp_norm;
+		nrsp[2] =nrsp[2]/nrsp_norm;
+	}
+
+	/*Build strain rate tensor*/
+	eps[0][0] = dvx[0];             eps[0][1] = .5*(dvx[1]+dvy[0]); eps[0][2] = .5*(dvx[2]+dvz[0]);
+	eps[1][0] = .5*(dvx[1]+dvy[0]); eps[1][1] = dvy[1];             eps[1][2] = .5*(dvy[2]+dvz[1]);
+	eps[2][0] = .5*(dvx[2]+dvz[0]); eps[2][1] = .5*(dvy[2]+dvz[1]); eps[2][2] = dvz[2];
+
+	/*Compute the shear strain rate on the non rotating shear plane*/
+	epsprime[0]=0.;
+	epsprime[1]=0.;
+	epsprime[2]=0.;
+	/*term #1: eps'.n */
+	for(int i=0;i<3;i++){
+		for(int j=0;j<3;j++){
+			epsprime[i] += eps[i][j]*nrsp[j];
+		}
+	}
+	/*term #2: ((eps'.n).n)n */
+	for(int i=0;i<3;i++){
+		for(int j=0;j<3;j++){
+			for(int k=0;k<3;k++){
+				epsprime[j] += -nrsp[i]*eps[i][k]*nrsp[k]*nrsp[j];
+			}
+		}
+	}
+	/*term #3: ((eps'.n).omega)omega */
+	for(int i=0;i<3;i++){
+		for(int j=0;j<3;j++){
+			for(int k=0;k<3;k++){
+				epsprime[j] += -nrsp[i]*eps[i][k]*omega[k]*omega[j];
+			}
+		}
+	}
+
+	/*Get norm of epsprime*/
+	epsprime_norm = sqrt(epsprime[0]*epsprime[0] + epsprime[1]*epsprime[1] + epsprime[2]*epsprime[2]);
+
+	/*Assign output pointers*/
+	*pepsprime_norm=epsprime_norm;
+}/*}}}*/
+void EstarOmega(IssmDouble* omega,IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble vmag,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz, IssmDouble* dvmag){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble omega_norm;
+	IssmDouble omega_rigid[3];
+
+	/*Create vorticity vector*/
+	_assert_(dvx && dvy && dvz && dvmag);
+	if(vmag<1e-12)vmag=1e-12;
+
+	/*Create vorticity vector, corrected for rigid body rotation
+	 * \overline{\omega} =\omega - \omega_rigid
+	 *                   =\nabla\times{\bf v} - 2*U*\kappa*\hat{b};
+	 *                   =\nabla\times{\bf v} - (2*{\bf v}\times(({\bf v}\cdot\nabla)*{\bf v}))/U^2
+	 * check the magnitude of the second term -- if it is small, then the two
+	 * vorticities (omega and first term in omega) are approx. equal
+	 *
+	 * */
+	omega_rigid[0] = 2*(vy*(vx*dvz[0]+vy*dvz[1]+vz*dvz[2]) - vz*(vx*dvy[0]+vy*dvy[1]+vz*dvy[2]))/(vmag*vmag);
+	omega_rigid[1] = 2*(vz*(vx*dvx[0]+vy*dvx[1]+vz*dvx[2]) - vx*(vx*dvz[0]+vy*dvz[1]+vz*dvz[2]))/(vmag*vmag);
+	omega_rigid[2] = 2*(vx*(vx*dvy[0]+vy*dvy[1]+vz*dvy[2]) - vy*(vx*dvx[0]+vy*dvx[1]+vz*dvx[2]))/(vmag*vmag);
+
+	omega[0] = (dvz[1] - dvy[2]) - omega_rigid[0];
+	omega[1] = (dvx[2] - dvz[0]) - omega_rigid[1];
+	omega[2] = (dvy[0] - dvx[1]) - omega_rigid[2];
+
+	/*Take out vorticity component aligned with the velocity*/
+	IssmDouble wdotv = vx/vmag*omega[0] + vy/vmag*omega[1] + vz/vmag*omega[2];
+	omega[0] = omega[0] - wdotv*vx/vmag;
+	omega[1] = omega[1] - wdotv*vy/vmag;
+	omega[2] = omega[2] - wdotv*vz/vmag;
+
+	/*Normalize*/
+	omega_norm = sqrt(omega[0]*omega[0] + omega[1]*omega[1] + omega[2]*omega[2]);
+	if(omega_norm==0){
+		omega[0] = 0.;
+		omega[1] = 0.;
+		omega[2] = 0.;
+	}
+	else{
+		omega[0] =omega[0]/omega_norm;
+		omega[1] =omega[1]/omega_norm;
+		omega[2] =omega[2]/omega_norm;
+	}
+
+}/*}}}*/
+IssmDouble EstarLambdaS(IssmDouble epseff, IssmDouble epsprime_norm){/*{{{*/
+	IssmDouble lambdas;
+
+	_assert_(epsprime_norm>=0.); 
+	if(epseff==0.){
+		lambdas=0.;
+	}
+	else{
+		lambdas=sqrt(epsprime_norm*epsprime_norm/(epseff*epseff));
+	}
+	return lambdas; 
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/LliboutryDuval.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/LliboutryDuval.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/LliboutryDuval.cpp	(revision 27955)
@@ -0,0 +1,73 @@
+/* \file LliboutryDuval.cpp
+ * \brief figure out B of ice for a certain temperature and water fraction or enthalpy
+ */
+
+#include <math.h>
+#include "../Numerics/types.h"
+#include "../Exceptions/exceptions.h"
+
+/* get ice stiffness B from enthalpy, pressure and flow law exponent*/
+IssmDouble LliboutryDuval(IssmDouble enthalpy, IssmDouble pressure, IssmDouble n, IssmDouble betaCC, IssmDouble referencetemperature, IssmDouble heatcapacity, IssmDouble latentheat){
+  /*Use Lliboutry & Duval's 1985 parameterization for the rheology: 
+	* see also: Grewe/Blatter 2009, Aschwanden et al. 2012
+	*
+	* ISSM uses enthalpy/temperature values that are not corrected for pressure.
+   *
+   *  A(H,p) = A0 exp(-Q/RT(H,p)), if H < H_s(p)
+   *         = A0 exp(-Q/RTpmp) (1+181.25w(H,p)), if H_s(p) \le H < H_l(p)
+   *  
+   *  T(H,p) = Tref + H/c_i, if H < H_s(p)
+   *         = Tpmp , if H_s(p) \le H \le H_l(p)
+   *
+   *  w(H,p) = 0, if H < H_s(p)
+   *         = (H - H_s(p))/L
+   *
+   *  H_s(p) = c_i (Tpmp - Tref)
+   *
+   *  Tpmp   = T - betaCC p;
+   *
+   *  A0 constant of proportionality
+   *     = 3.61 * 10^-13   if T*<263.15K
+   *     = 1.73 * 10^3     if T*>263.15K
+   *  Q  Activation energy for creep
+   *     = 6.0  * 10^4     if T*<263.15K
+   *     = 13.9 * 10^4     if T*>263.15K
+   *  R  Universal gas constant
+   *     = 8.314
+   *  
+   *  Convert A to B :  B = A^(-1/n) */
+	/*check feasibility*/
+	_assert_(pressure+1.e-4>=0); // deal with pressure instability at ice surface
+	_assert_(n>0);
+	_assert_(betaCC>=0);
+	_assert_(referencetemperature>=0);
+	_assert_(heatcapacity>0);
+	_assert_(latentheat>0);
+
+	/*Some physical constants*/
+	IssmDouble R=8.314; 
+
+	/*Intermediaries*/
+	IssmDouble A,B,Tstar,Tpmp,H_sp,waterfraction;
+
+	Tpmp=273.15-betaCC*pressure; //pressure melting point temperature
+	H_sp=heatcapacity*(Tpmp-referencetemperature); //pressure melting point enthalpy
+	if (enthalpy<H_sp){ //compute homologous temperature and water fraction
+		Tstar=referencetemperature+enthalpy/heatcapacity+betaCC*pressure; 
+		waterfraction=0.;
+	}
+	else{
+		Tstar=273.15;
+		waterfraction=(enthalpy-H_sp)/latentheat;
+		if (waterfraction>0.01) waterfraction=0.01; // limit softness of ice
+	}
+
+	/*Get A*/
+	if(Tstar<=263.15){A=3.61e-13*exp(-6.e+4/(R*Tstar));}
+	else{A=1.73e3*exp(-13.9e+4/(R*Tstar));}
+	A*=(1.+181.25*waterfraction);
+
+	/*Convert to B*/
+	B=pow(A,-1./n);
+	return B;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/NyeCO2.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/NyeCO2.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/NyeCO2.cpp	(revision 27955)
@@ -0,0 +1,29 @@
+/* \file NyeCO2.cpp
+ * \brief figure out B of CO2 ice for a certain temperature
+ *		INPUT function B=NyeCO2(temperature)
+ *    	where rigidigty (in s^(1/n)Pa) is the flow law paramter in the flow law sigma=B*e(1/n) (Nye, p2000). 
+ */
+
+#include "../io/io.h" 
+#include <math.h> 
+#include "../Numerics/types.h"
+
+IssmDouble NyeCO2(IssmDouble temperature){
+
+	/*Coefficients*/
+	const IssmPDouble Rg      = 8.3144598;     /* J mol^-1 K^-1   */ 
+	const IssmPDouble A_const = pow(10.,13.0); /* s^-1 MPa        */ 
+	const IssmPDouble Q       = 66900.;        /* J mol^-1        */ 
+	const IssmPDouble n       = 8.;            /* Glen's exponent */
+
+	/*Arrhenius Law*/
+	IssmDouble A = A_const *exp(-Q/(temperature*Rg));  /* s^-1 MPa   */
+	IssmDouble B = 1e6*pow(A,-1/n);                    /* s^(1/n) Pa */
+
+	/*Beyond-melting-point cases*/
+	if((temperature>200.)&&(temperature<220.)) _printf0_("CO2 ICE - POSSIBLE MELTING. Some temperature values are between 200K and 220K.\n");
+	else if(temperature>=220.) _printf0_("CO2 ICE - GUARANTEED MELTING. Some temperature values are beyond 220K.\n");
+
+	/*Return output*/
+	return B; 
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/NyeH2O.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/NyeH2O.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/NyeH2O.cpp	(revision 27955)
@@ -0,0 +1,28 @@
+/* \file NyeH2O.cpp
+ * brief figure out B of H2O ice for a certain temperature
+ *		INPUT function B=NyeH2O(temperature)
+ *    	where rigidigty (in s^(1/n)Pa) is the flow law paramter in the flow law sigma=B*e(1/n) (Nye, p2000). 
+ */
+
+#include "../io/io.h"
+#include <math.h>
+#include "../Numerics/types.h"
+
+IssmDouble NyeH2O(IssmDouble temperature){
+
+	/*Coefficients*/
+	const IssmPDouble Rg      = 8.3144598; /* J mol^-1 K^-1 */
+	const IssmPDouble A_const = 9.e4;      /*s^-1 MPa       */
+	const IssmPDouble Q       = 60000.;    /*J mol^-1       */
+	const IssmPDouble n       = 3.;        /*Glen's exponent*/
+
+	/*Arrhenius Law*/
+	IssmDouble A = A_const *exp(-Q/(temperature*Rg));  /*s^-1 MPa   */
+	IssmDouble B = 1e6*pow(A,-1/n);                    /*s^(1/n) Pa */
+
+	/*Beyond-melting-point case*/
+	if(temperature>=273.15) _printf0_("H2O ICE - GUARANTEED MELTING. Some temperature values are beyond 273.15K.\n");
+
+	/*Return output*/
+	return B;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/Paterson.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/Paterson.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/Paterson.cpp	(revision 27955)
@@ -0,0 +1,56 @@
+/* \file Paterson.cpp
+ * \brief figure out B of ice for a certain temperature
+ *	  INPUT function B=Paterson(temperature)
+ *    where rigidigty (in s^(1/3)Pa) is the flow law paramter in the flow law sigma=B*e(1/3) (Paterson, p97). 
+ */
+
+#include <math.h>
+
+#include "../Numerics/types.h"
+
+IssmDouble Paterson(IssmDouble temperature){
+
+	IssmDouble B,T;
+
+	/*Switch to celsius from Kelvin: */
+	T=temperature-273.15;
+
+	if(T<=-45.0){
+		B=1.e+8*(-0.000292866376675*pow(T+50.,3)+ 0.011672640664130*pow(T+50.,2)  -0.325004442485481*(T+50.)+  6.524779401948101);
+	}
+	else if((T>=-45.0) && (T<=-40.0)){
+		B=1.e+8*(-0.000292866376675*pow(T+45.,3)+ 0.007279645014004*pow(T+45.,2)  -0.230243014094813*(T+45.)+  5.154964909039554);
+	}
+	else if((T>=-40.0) && (T<=-35.0)){
+		B=1.e+8*(0.000072737147457*pow(T+40.,3)+  0.002886649363879*pow(T+40.,2)  -0.179411542205399*(T+40.)+  4.149132666831214);
+	}
+	else if((T>=-35.0) && (T<=-30.0)){
+		B=1.e+8*(-0.000086144770023*pow(T+35.,3)+ 0.003977706575736*pow(T+35.,2)  -0.145089762507325*(T+35.)+  3.333333333333331);
+	}
+	else if((T>=-30.0) && (T<=-25.0)){
+		B=1.e+8*(-0.000043984685769*pow(T+30.,3)+ 0.002685535025386*pow(T+30.,2)  -0.111773554501713*(T+30.)+  2.696559088937191);
+	}
+	else if((T>=-25.0) && (T<=-20.0)){
+		B=1.e+8*(-0.000029799523463*pow(T+25.,3)+ 0.002025764738854*pow(T+25.,2)  -0.088217055680511*(T+25.)+  2.199331606342181);
+	}
+	else if((T>=-20.0) && (T<=-15.0)){
+		B=1.e+8*(0.000136920904777*pow(T+20.,3)+  0.001578771886910*pow(T+20.,2)  -0.070194372551690*(T+20.)+  1.805165505978111);
+	}
+	else if((T>=-15.0) && (T<=-10.0)){
+		B=1.e+8*(-0.000899763781026*pow(T+15.,3)+ 0.003632585458564*pow(T+15.,2)  -0.044137585824322*(T+15.)+  1.510778053489523);
+	}
+	else if((T>=-10.0) && (T<=-5.0)){
+		B=1.e+8*(0.001676964325070*pow(T+10.,3)-  0.009863871256831*pow(T+10.,2)  -0.075294014815659*(T+10.)+  1.268434288203714);
+	}
+	else if((T>=-5.0) && (T<=-2.0)){
+		B=1.e+8*(-0.003748937622487*pow(T+5.,3)+0.015290593619213*pow(T+5.,2)  -0.048160403003748*(T+5.)+  0.854987973338348);
+	}
+	else{
+		B=1.e+8*(-0.003748937622488*pow(T+2.,3)-0.018449844983174*pow(T+2.,2)  -0.057638157095631*(T+2.)+  0.746900791092860);
+	}
+
+	/*B cannot be negative!*/
+	if(B<0) B=1.e+6;
+
+	return B;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/PddSurfaceMassBalance.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/PddSurfaceMassBalance.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/PddSurfaceMassBalance.cpp	(revision 27955)
@@ -0,0 +1,249 @@
+/* file:  PddSurfaceMassBlance.cpp
+   Calculating the surface mass balance using the positive degree day method.
+   Updating the precipitation and temperature to the new elevation
+ */
+
+#include "../io/io.h"
+#include "./elements.h"
+#include "../Numerics/numerics.h"
+#include <cmath>
+
+IssmDouble PddSurfaceMassBalance(IssmDouble* monthlytemperatures, IssmDouble* monthlyprec,
+				 IssmDouble* pdds, IssmDouble* pds, IssmDouble* melt, IssmDouble* accu, 
+				 IssmDouble signorm, IssmDouble yts, IssmDouble h, IssmDouble s, IssmDouble desfac,
+				 IssmDouble s0t,IssmDouble s0p, IssmDouble rlaps,IssmDouble rlapslgm,
+				 IssmDouble TdiffTime,IssmDouble sealevTime, IssmDouble pddsnowfac,IssmDouble pddicefac,
+				 IssmDouble rho_water,IssmDouble rho_ice){
+
+  // output:
+  IssmDouble B;    // surface mass balance, melt+accumulation
+  int    iqj,imonth;
+
+  IssmDouble saccu;     // yearly surface accumulation
+  IssmDouble smelt;     // yearly melt
+  IssmDouble precrunoff;      // yearly runoff
+  IssmDouble prect; // total precipitation during 1 year taking into account des. ef.
+  IssmDouble water; //water=rain + snowmelt 
+  IssmDouble runoff; //meltwater only, does not include rain 
+  IssmDouble sconv; //rhow_rain/rhoi / 12 months
+
+  //IssmDouble  sealev=0.;         // degrees per meter. 7.5 lev's 99 paper, 9 Marshall 99 paper
+  //IssmDouble  Pfac=0.5,Tdiff=0.5;
+  IssmDouble rtlaps;
+  // IssmDouble lapser=6.5         // lapse rate
+  // IssmDouble desfac = 0.3;      // desert elevation factor
+  // IssmDouble s0p=0.;            // should be set to elevation from precip source
+  // IssmDouble s0t=0.;         // should be set to elevation from temperature source
+  IssmDouble st;             // elevation between altitude of the temp record and current altitude
+  IssmDouble sp;             // elevation between altitude of the prec record and current altitude
+  IssmDouble deselcut=1.0;
+
+  // PDD and PD constants and variables
+  IssmDouble siglim;          // sigma limit for the integration which is equal to 2.5 sigmanorm
+  IssmDouble signormc = signorm - 0.5;     // sigma of the temperature distribution for cloudy day
+  IssmDouble siglimc, siglim0, siglim0c;
+  IssmDouble PDup, pddsig, PDCUT = 2.0; // PDcut: rain/snow cutoff temperature (C)
+  IssmDouble DT = 0.02;
+  IssmDouble pddt, pd; // pd: snow/precip fraction, precipitation falling as snow
+
+  IssmDouble q, qmpt;   // q is desert/elev. fact, hnpfac is huybrect fact, and pd is normal dist.
+  IssmDouble qm = 0.;   // snow part of the precipitation 
+  IssmDouble qmt = 0.;  // precipitation without desertification effect adjustment
+  IssmDouble qmp = 0.;  // desertification taken into account
+  IssmDouble pdd = 0.;     
+  IssmDouble frzndd = 0.;  
+
+  IssmDouble tstar;          // monthly mean surface temp
+  IssmDouble Tsum= 0.;       // average summer (JJA) temperature
+  IssmDouble Tsurf = 0.;     // average annual temperature    
+
+  IssmDouble deltm=1./12.;
+  int    ismon[12]={11,0,1,2,3,4,5,6,7,8,9,10};
+
+  IssmDouble snwm;  // snow that could have been melted in a year.
+  IssmDouble snwmf; //  ablation factor for snow per positive degree day.
+  IssmDouble smf;   //  ablation factor for ice per pdd (Braithwaite 1995 from tarasov 2002).
+
+  IssmDouble dfrz=1.5, CovrLm=2009./3.35e+5, dCovrLm=dfrz*CovrLm; //m*J kg^-1 C^-1 /(J kg^-1)=m/C yr
+  IssmDouble supice,supcap,diffndd;
+  IssmDouble fsupT=0.5,  fsupndd=0.5;  // Tsurf mode factors for supice
+  IssmDouble pddtj, hmx2;
+  IssmDouble pddsnowfac0=4.3, pddicefac0=8.3;
+  IssmDouble snowfac, icefac;
+
+  sconv=(rho_water/rho_ice)/12.; //rhow_rain/rhoi / 12 months
+
+  /*PDD constant*/
+  siglim = 2.5*signorm; 
+  siglimc = 2.5*signormc;
+  siglim0 = siglim/DT + 0.5;
+  siglim0c = siglimc/DT + 0.5;
+  PDup = siglimc+PDCUT;
+
+  // seasonal loop
+  for (iqj = 0; iqj < 12; iqj++){
+    imonth =  ismon[iqj];
+
+    /*********compute lapse rate ****************/
+    st=(s-s0t)/1000.;
+    rtlaps=TdiffTime*rlapslgm + (1.-TdiffTime)*rlaps; // lapse rate
+
+    /*********compute Surface temperature *******/
+    monthlytemperatures[imonth]=monthlytemperatures[imonth] - rtlaps *max(st,sealevTime*0.001);
+    tstar = monthlytemperatures[imonth];
+    Tsurf = tstar*deltm+Tsurf;        
+
+    /*********compute PD ****************/
+    if (tstar < PDup){
+      pd = 1.;
+      if (tstar >= -siglimc){ pd = pds[reCast<int,IssmDouble>(tstar/DT + siglim0c)];}}
+    else { 
+      pd = 0.;}
+
+    /******exp des/elev precip reduction*******/
+    sp=(s-s0p)/1000.-deselcut; // deselev effect is wrt chng in topo
+    if (sp>0.0){q = exp(-desfac*sp);}
+    else {q = 1.0;}
+
+    qmt= qmt + monthlyprec[imonth]*sconv;  //*sconv to convert in m of ice equivalent per month  
+    qmpt= q*monthlyprec[imonth]*sconv;
+    qmp= qmp + qmpt;
+    qm= qm + qmpt*pd;
+
+    /*********compute PDD************/
+    // ndd(month)=-(tstar-pdd(month)) since ndd+pdd gives expectation of
+    // gaussian=T_m, so ndd=-(Tsurf-pdd)
+    if (iqj>5 && iqj<9){ Tsum=Tsum+tstar;} 
+
+    if (tstar >= siglim) {pdd = pdd + tstar*deltm;}
+    else if (tstar> -siglim){
+      pddsig=pdds[reCast<int,IssmDouble>(tstar/DT + siglim0)];
+      pdd = pdd + pddsig*deltm;
+      frzndd = frzndd - (tstar-pddsig)*deltm;}
+    else{frzndd = frzndd - tstar*deltm; }
+
+    /*Assign output pointer*/
+    *(monthlytemperatures+imonth) = monthlytemperatures[imonth];
+    *(monthlyprec+imonth) = monthlyprec[imonth];      
+  } // end of seasonal loop 
+  //******************************************************************
+
+  saccu = qm;
+  prect = qmp;     // total precipitation during 1 year taking into account des. ef.
+  Tsum=Tsum/3;
+
+  snowfac=pddsnowfac0;
+  icefac=pddicefac0;
+  if (pddsnowfac>0) {
+	  if (pddsnowfac<1.65) {
+		  _printf0_("WARNING: Pdd snow factor input, " << pddsnowfac << ", results in a negative value. It will be ignored. \n");
+	  }
+	  else{
+		snowfac=pddsnowfac;
+	  }
+  }
+  if (pddicefac>0) {
+	  if (pddicefac>17.22) {
+		  _printf0_("WARNING: Pdd ice factor input, " << pddicefac << ", results in a negative value. It will be ignored. \n");
+	  }
+	  else{
+	    icefac=pddicefac;
+	  }
+  }
+
+  /***** determine PDD factors *****/
+  if(Tsum< -1.) {
+    snwmf=(2.65+snowfac-pddsnowfac0)*0.001;   //  ablation factor for snow per positive degree day.*0.001 to go from mm to m/ppd
+    smf=17.22*0.001;    //  ablation factor for ice per pdd (Braithwaite 1995 from tarasov 2002)
+  } 
+  else if(Tsum< 10){
+	  snwmf = (0.15*(Tsum+1) + (2.65+snowfac-pddsnowfac0))*0.001;
+	  smf = (((17.22-icefac)/(pow(11,3)))*pow((10.-Tsum),3) + pddicefac0)*0.001;
+	  //JC,smf = (((icefac-pddicefac0)/(Tsum+1))*pow((10.-Tsum),3) + pddicefac0)*0.001;
+  }
+  else{
+    snwmf=snowfac*0.001;
+    smf=icefac*0.001;
+  }
+  //snwmf=0.95*snwmf;
+  //smf=0.95*smf;
+
+  /*****  compute PDD ablation and refreezing *****/
+  pddt = pdd *365;
+  snwm = snwmf*pddt;       // snow that could have been melted in a year
+  hmx2 = min(h,dfrz);   // refreeze active layer max depth: dfrz
+
+  if(snwm < saccu) {
+    water=prect-saccu + snwm; //water=rain + snowmelt
+    //     l 2.2= capillary factor
+    //     Should refreezing be controlled by frzndd or by mean annual Tsurf?
+    //     dCovrLm concept is of warming of active layer (thickness =d@=1-
+    //     >2m)
+    //     problem with water seepage into ice: should be sealed after
+    //     refreezing
+    //     so everything needs to be predicated on 1 year scale, except for
+    //     thermal
+    //     conductivity through ice
+    //     also, need to account that melt season has low accum, so what's
+    //     going to
+    //     hold the meltwater around for refreezing? And melt-time will have
+    //     low seasonal frzndd
+
+    //      Superimposed ice :  Pfeffer et al. 1991, Tarasov 2002
+
+    supice= min(hmx2*CovrLm*frzndd+2.2*(saccu-snwm), water); // superimposed ice
+    supcap=min(2.2*(saccu-snwm),water);
+    runoff=snwm - supice;  //meltwater only, does not include rain
+  }
+  else {  //all snow melted
+    supice= min(hmx2*CovrLm*frzndd, prect );
+    runoff= saccu + smf*(pddt-saccu/snwmf) - supice;
+    supcap=0;
+  }
+  //     pdd melting doesn't cool Tsurf, so ndd refreeze shouldn't warm it
+  //     except pdd melt heat source is atmosphere, while refreeze is
+  //     ground/ice stored interim
+  //     assume pdd=ndd, then melt should equal refreeze and Tsurf should=0
+  //     assume ndd=2*pdd, then all supice is refrozen, but Tsurf should be
+  //     <0
+  //     assume ndd>pdd, little melt => little supice 
+  //     bottom line: compare for Tsurf<0 : supice and no supice case,
+  //     expect Tsurf difference
+  //     except some of cooling flux comes from atmosphere//
+  //     1 dm supice should not raise Tsurf by 1/dCovrLm = 16.675C
+  //     does supice make sense when H< 0.1m? then d=thermoactive ice layer ////
+  //     < 0.1 
+
+  //     make more sense to just use residual pdd-ndd except that pdd
+  //     residual not clear yet
+  //     frzndd should not be used up by refreezing in snow, so stick in
+  //     supcap.
+  diffndd=0;
+  if (frzndd>0) {
+    diffndd=fsupndd*min((supice-supcap)/dCovrLm ,frzndd);
+    frzndd=frzndd-diffndd;
+  }
+  if(runoff<0){
+    saccu= saccu -runoff;
+    smelt = 0;
+    precrunoff=prect-saccu;
+    //here assume pdd residual is 0, => 
+    Tsurf= max(Tsurf,-frzndd);
+  }
+  else {
+    smelt = runoff;
+    precrunoff=prect-max(0.,supice)-saccu;}
+  //here really need pdd balance, try 0.5 fudge factor?
+  //at least runoff>0 => it's fairly warm, so Tsurf is !<<0,
+  //yet from site plots, can be ice free with Tsurf=-5.5C
+  if(Tsurf<0) {
+    Tsurf= min(Tsurf+fsupT*diffndd , 0.);}
+
+  melt[0]=smelt/yts;
+  accu[0]=saccu/yts;
+  B = saccu - smelt;
+  B = B/yts;
+  pddtj=pddt;
+
+  return B;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/PddSurfaceMassBalanceSicopolis.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/PddSurfaceMassBalanceSicopolis.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/PddSurfaceMassBalanceSicopolis.cpp	(revision 27955)
@@ -0,0 +1,138 @@
+/* file:  PddSurfaceMassBlanceSicopolis.cpp
+   Calculating the surface mass balance using the adapted PDD routine from SICOPOLIS.
+ */
+
+#include "./elements.h"
+#include "../Numerics/numerics.h"
+#include "../Exceptions/exceptions.h"
+#include <cmath>
+
+IssmDouble PddSurfaceMassBalanceSicopolis(IssmDouble* monthlytemperatures, IssmDouble* monthlyprec,
+				 IssmDouble* melt, IssmDouble* accu, IssmDouble* melt_star, IssmDouble* t_ampl, IssmDouble* p_ampl,
+				 IssmDouble yts, IssmDouble s, IssmDouble desfac,
+				 IssmDouble s0t, IssmDouble s0p, IssmDouble rlaps,
+				 IssmDouble rho_water,IssmDouble rho_ice){
+
+  int			imonth;				// month counter
+  IssmDouble B;					// output: surface mass balance (m/a IE), melt+accumulation
+  IssmDouble frac_solid, snowfall, rainfall, runoff; 
+  IssmDouble saccu;				// yearly surface accumulation (m/a IE)
+  IssmDouble smelt;				// yearly melt (m/a IE)
+  IssmDouble smelt_star;		// yearly ...
+  IssmDouble precip;				// total precipitation during 1 year
+  IssmDouble sconv;				//rhow_rain/rhoi / 12 months
+  IssmDouble st;					// elevation between altitude of the temp record and current altitude
+  IssmDouble sp;					// elevation between altitude of the prec record and current altitude
+  IssmDouble q;					// q is desert/elev. fact
+  IssmDouble pdd;					// pdd factor (a * degC)
+  IssmDouble tstar;				// monthly temp. after lapse rate correction (degC)
+  IssmDouble precip_star;		// monthly precip after correction (m/a IE)
+  IssmDouble beta1 = 2.73;		// 3 mm IE/(d*deg C),  ablation factor for snow per positive degree day.
+  IssmDouble beta2 = 7.28;		// 8 mm IE/(d*deg C),  ablation factor for ice per pdd (Braithwaite 1995 from tarasov 2002).
+  IssmDouble Pmax = 0.6;
+  IssmDouble inv_twelve=1./12.; 
+
+  sconv=(rho_water/rho_ice);		//rhow_rain/rhoi
+
+  /* FIXME betas shoud be user input */
+  beta1=beta1*(0.001*365)*sconv; // (mm WE)/(d*deg C) --> (m IE)/(a*deg C)
+  beta2=beta2*(0.001*365)*sconv; // (mm WE)/(d*deg C) --> (m IE)/(a*deg C)
+
+  /* initalize fields */
+  precip=0.0;
+  tstar=0.0;
+  snowfall=0.0;
+  pdd=0.0;
+  /* seasonal loop */
+  for(imonth=0;imonth<12;imonth++){
+
+    /********* Surface temperature correction *******/    
+    st=(s-s0t)/1000.;
+
+    // FIXME rlaps ??
+	 rlaps=-6.309e-03+(-5.426e-03-(-6.309e-03))*sin((imonth+1-4)*PI/6.0)*1000.0;
+    monthlytemperatures[imonth]=monthlytemperatures[imonth]-rlaps*st;//*max(st,1e-3);
+    tstar=monthlytemperatures[imonth]+t_ampl[0];
+
+    /********* Precipitation correction *************/
+    /* Ref: Vizcaino et al 2010; DOI 10.1007/s00382-009-0591-y */
+    if(s0p<2000.0)
+      q=exp(desfac*(max(s,2000.0)-2000.0));
+	 else
+      q=exp(desfac*(max(s,2000.0)-s0p));
+
+    precip_star=q*monthlyprec[imonth]*sconv*p_ampl[0]*yts; // convert precip from m/s -> m/a
+    precip=precip+precip_star*inv_twelve;
+
+    /********* compute PDD **************************/
+    /* Ref: Calov & Greve 2005 Journal of Glaciology, Vol. 51, No. 172, 2005, Correspondence */
+	 IssmDouble s_stat=5.0;
+    IssmDouble inv_sqrt2pi =1.0/sqrt(2.0*PI);
+    IssmDouble inv_s_stat  =1.0/s_stat;
+    IssmDouble inv_sqrt2   =1.0/sqrt(2.0);
+
+	 #if !defined(_HAVE_ADOLC_)
+    pdd=pdd+(s_stat*inv_sqrt2pi*exp(-0.5*pow(tstar*inv_s_stat,2))
+				 +0.5*tstar*erfc(-tstar*inv_s_stat*inv_sqrt2))*inv_twelve;
+	 #else
+	 _error_("Cannot differentiate erfc, talk to ADOLC folks (http://functions.wolfram.com/GammaBetaErf/Erfc/20/01/)");
+	 #endif
+
+	 /*Partition of precip in solid and liquid parts, Bales et al. (2009) */
+	 IssmDouble temp_rain=7.2;		// Threshold monthly mean temperature for
+											// precipitation = 101% rain, in deg C
+	 IssmDouble temp_snow=-11.6;  // Threshold monthly mean temperature for
+											// precipitation = 100% snow, in deg C
+
+	 IssmDouble coeff1=5.4714e-01;	// Coefficients
+	 IssmDouble coeff2=-9.1603e-02;	// of
+	 IssmDouble coeff3=-3.314e-03;	// the
+	 IssmDouble coeff4= 4.66e-04;		// fifth-order
+	 IssmDouble coeff5=3.8e-05;		// polynomial
+	 IssmDouble coeff6=6.0e-07;		// fit
+
+	 if(tstar>=temp_rain)
+	  frac_solid = 0.0;
+	 else if(tstar<=temp_snow)
+	  frac_solid = 1.0;
+	 else{ 
+		 frac_solid=coeff1+tstar*(coeff2
+					 +tstar*(coeff3+tstar*(coeff4+tstar*(coeff5+tstar*coeff6))));
+	 }
+
+	 snowfall=snowfall+precip_star*frac_solid*inv_twelve;
+  } 
+  /* end of seasonal loop */ 
+
+  rainfall=precip-snowfall;
+  if(snowfall<0.0) snowfall=0.0;   // correction of
+  if(rainfall<0.0) rainfall=0.0;   // negative values
+
+  if(rainfall<=(Pmax*snowfall)){
+	  if((rainfall+beta1*pdd)<=(Pmax*snowfall)) {
+		  smelt_star = rainfall+beta1*pdd;
+		  smelt      = 0.0;
+		  runoff     = smelt;
+	  }
+	  else{
+		  smelt_star = Pmax*snowfall;
+		  smelt      = beta2*(pdd-(smelt_star-rainfall)/beta1);
+		  runoff     = smelt;
+	  }
+  } 
+  else{
+	  smelt_star = Pmax*snowfall;
+	  smelt      = beta2*pdd;
+	  runoff     = smelt+rainfall-Pmax*snowfall;
+  }
+
+  saccu = precip;	
+
+  /* asign output*/
+  melt[0]=runoff/yts;
+  accu[0]=saccu/yts;
+  melt_star[0]=smelt_star/yts;
+  B=(saccu-runoff)/yts;
+
+  return B;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/PrintArrays.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/PrintArrays.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/PrintArrays.cpp	(revision 27955)
@@ -0,0 +1,107 @@
+#include "./elements.h"
+#include "../io/Print/Print.h"
+#include <iomanip>
+using namespace std;
+
+void printarray(IssmPDouble* array,int lines,int cols){
+	_printf_("\n");
+	for(int i=0;i<lines;i++){  
+		_printf_("   [ ");
+		for(int j=0;j<cols;j++) _printf_( " " << setw(11) << setprecision (5) << array[i*cols+j]);
+		_printf_(" ]\n");
+	}  
+	_printf_("\n");
+}
+#ifdef _HAVE_AD_
+void printarray(IssmDouble* array,int lines,int cols){
+	_printf_("\n");
+	for(int i=0;i<lines;i++){  
+		_printf_("   [ ");
+		for(int j=0;j<cols;j++) _printf_( " " << setw(11) << setprecision (5) << array[i*cols+j]);
+		_printf_(" ]\n");
+	}  
+	_printf_("\n");
+}
+#endif
+void printsparsity(IssmPDouble* array,int lines,int cols){
+	int count;
+	_printf_("\n");
+	for(int i=0;i<lines;i++){  
+		_printf_("   [ ");
+		count = 0;
+		for(int j=0;j<cols;j++){
+			if(array[i*cols+j]!=0.0){
+				_printf_( " X"); count++;
+			}
+			else
+			 _printf_( " .");
+		}
+		_printf_(" ] "<<i<<" => "<<count << "\n");
+	}  
+	_printf_("\n");
+}
+void printarray(int* array,int lines,int cols){
+	_printf_("\n");
+	for(int i=0;i<lines;i++){  
+		_printf_("   [ ");
+		for(int j=0;j<cols;j++) _printf_( " " << setw(11) << setprecision (5) << array[i*cols+j]);
+		_printf_(" ]\n");
+	}  
+	_printf_("\n");
+}
+void printarray_matlab(const char* filename,int* array,int lines,int cols){
+	FILE *f = fopen(filename,"w");
+	fprintf(f,"%% Matrix of size %ix%i\n",lines,cols);
+	fprintf(f,"\n");
+	fprintf(f,"A=[...\n");
+	for(int i=0;i<lines;i++){  
+		for(int j=0;j<cols;j++) fprintf(f," %i",array[i*cols+j]);
+		fprintf(f,"\n");
+	}  
+	fprintf(f,"];\n");
+	fclose(f);
+}
+void printarray(bool* array,int lines,int cols){
+	_printf_("\n");
+	for(int i=0;i<lines;i++){  
+		_printf_("   [ ");
+		for(int j=0;j<cols;j++){
+			if(array[i*cols+j]) _printf_( " 1");
+			else _printf_( " 0");
+		}
+		_printf_(" ]\n");
+	}  
+	_printf_("\n");
+}
+void printbinary(int n){
+	unsigned int i=1L<<(sizeof(n)*8-1);
+	while (i>0) {
+		if (n&i)
+		 _printf_("1");
+		else
+		 _printf_("0");
+		i>>=1;
+	}
+}
+
+void InversionStatsHeader(int NJ){
+	//https://cboard.cprogramming.com/c-programming/151930-ascii-table-border.html
+	int width = max(10*NJ,24);
+	_printf0_("\n");
+	_printf0_("┌────┬─────────────────┬────────────┬"); for(int i=0;i<width;i++){_printf0_("─");} _printf0_("┐\n");
+	_printf0_("│Iter│  Cost function  │ Grad. norm │  List of contributions "); for(int i=0;i<width-24;i++){_printf0_(" ");} _printf0_("│\n");
+	_printf0_("├────┼─────────────────┼────────────┼"); for(int i=0;i<width;i++){_printf0_("─");} _printf0_("┤\n");
+}
+void InversionStatsIter(int iter,double J, double Gnorm, double* Jlist, int N){
+	int width = max(10*N,24);
+	_printf0_("│"<<setw(3)<<iter<<" ");
+	_printf0_("│ f(x)="<<setw(10)<<setprecision(5)<<J<<" ");
+	_printf0_("│   "<<setw(8)<<setprecision(3)<<Gnorm<<" │");
+	for(int i=0;i<N;i++) _printf0_(" "<<setw(9)<<setprecision(4)<<Jlist[i]);
+	for(int i=0;i<width-10*N;i++){_printf0_(" ");}
+	_printf0_("│\n");
+}
+void InversionStatsFooter(int NJ){
+	int width = max(10*NJ,24);
+	_printf0_("└────┴─────────────────┴────────────┴");for(int i=0;i<width;i++){_printf0_("─");} _printf0_("┘\n");
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/StressIntensityIntegralWeight.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/StressIntensityIntegralWeight.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/StressIntensityIntegralWeight.cpp	(revision 27955)
@@ -0,0 +1,31 @@
+/* \file StressIntensityIntegralWeight.cpp
+ * \Weight to integrate the stress along the ice flow direction to compute the stress intensity factor : Linear Fracture Mechanics (see "Combining damage and fracture mechanics to model calving",Krug 2014 in the appendix) 
+ */
+
+#include <math.h>
+
+#include "../Numerics/types.h"
+
+IssmDouble StressIntensityIntegralWeight(IssmDouble depth, IssmDouble water_depth, IssmDouble thickness){
+
+	/*output: */
+	IssmDouble beta;
+
+	/*intermediaries: */
+	IssmDouble M1,M2,M3,x,y,d;
+	const double pi = 3.141592653589793;
+	x    = water_depth/thickness;
+	y    = depth;
+	d    = water_depth;
+
+	M1   = 0.0719768-1.513476*x-61.1001*pow(x,2)+1554.95*pow(x,3)-14583.8*pow(x,4)+71590.7*pow(x,5)-205384*pow(x,6)+356469*pow(x,7)-368270*pow(x,8)+208233*pow(x,9)-49544*pow(x,10);
+	//printf("M1 : %g",M1);
+	M2   = 0.246984+6.47583*x+176.456*pow(x,2)-4058.76*pow(x,3)+37303.8*pow(x,4)-181755*pow(x,5)+520551*pow(x,6)-904370*pow(x,7)+936863*pow(x,8)-531940*pow(x,9)+127291*pow(x,10);
+	//printf("M2 : %g",M2);
+	M3   = 0.529659-22.3235*x+532.074*pow(x,2)-5479.53*pow(x,3)+28592.2*pow(x,4)-81388.6*pow(x,5)+128746*pow(x,6)-106246*pow(x,7)+35780.7*pow(x,8);
+	//printf("M3 : %g",M3);
+
+	beta = 2/sqrt(2*pi*(d-y))*(1+M1*sqrt(1-y/d)+M2*(1-y/d)+M3*pow((1-y/d),1.5));
+
+	return beta;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/elements.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/elements.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Elements/elements.h	(revision 27955)
@@ -0,0 +1,64 @@
+/*!\file: elements.h
+ * \brief prototypes for elements.h
+ */ 
+
+#ifndef _SHARED_ELEMENTS_H_
+#define _SHARED_ELEMENTS_H_
+
+#include "../Numerics/types.h"
+
+IssmDouble Cuffey(IssmDouble temperature);
+IssmDouble BuddJacka(IssmDouble temperature);
+IssmDouble CuffeyTemperate(IssmDouble temperature, IssmDouble waterfraction, IssmDouble stressexp);
+IssmDouble Paterson(IssmDouble temperature);
+IssmDouble Arrhenius(IssmDouble temperature,IssmDouble depth,IssmDouble n);
+IssmDouble NyeH2O(IssmDouble temperature);
+IssmDouble NyeCO2(IssmDouble temperature);
+IssmDouble LliboutryDuval(IssmDouble enthalpy, IssmDouble pressure, IssmDouble n, IssmDouble betaCC, IssmDouble referencetemperature, IssmDouble heatcapacity, IssmDouble latentheat);
+// IssmDouble LliboutryDuval(IssmDouble temperature, IssmDouble waterfraction, IssmDouble depth,IssmDouble n);
+IssmDouble EstarLambdaS(IssmDouble epseff, IssmDouble epsprime_norm);
+void EstarOmega(IssmDouble* omega,IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble vmag,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz, IssmDouble* dvmag);
+void EstarStrainrateQuantities(IssmDouble *pepsprime_norm, IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble vmag,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz,IssmDouble* dvmag);
+IssmDouble PddSurfaceMassBalance(IssmDouble* monthlytemperatures,  IssmDouble* monthlyprec,
+				 IssmDouble* pdds, IssmDouble* pds, IssmDouble* melt, IssmDouble* accu, IssmDouble signorm, 
+				 IssmDouble yts, IssmDouble h, IssmDouble s, IssmDouble desfac,IssmDouble s0t,
+				 IssmDouble s0p, IssmDouble rlaps, IssmDouble rlapslgm,
+				 IssmDouble TdiffTime,IssmDouble sealevTime,IssmDouble pddsnowfac,IssmDouble pddicefac,
+				 IssmDouble rho_water, IssmDouble rho_ice);
+IssmDouble PddSurfaceMassBalanceSicopolis(IssmDouble* monthlytemperatures,  IssmDouble* monthlyprec,
+				 IssmDouble* melt, IssmDouble* accu, IssmDouble* melt_star, IssmDouble* t_ampl, IssmDouble* p_ampl,
+				 IssmDouble yts, IssmDouble s, IssmDouble desfac,IssmDouble s0t,
+				 IssmDouble s0p, IssmDouble rlaps, IssmDouble rho_water, IssmDouble rho_ice);
+void ComputeDelta18oTemperaturePrecipitation(IssmDouble Delta18oSurfacePresent, IssmDouble Delta18oSurfaceLgm, IssmDouble Delta18oSurfaceTime,
+					     IssmDouble Delta18oPresent, IssmDouble Delta18oLgm, IssmDouble Delta18oTime,
+					     IssmDouble* PrecipitationsPresentday,
+					     IssmDouble* TemperaturesLgm, IssmDouble* TemperaturesPresentday, 
+					     IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout);
+void ComputeMungsmTemperaturePrecipitation(IssmDouble TdiffTime, IssmDouble PfacTime,
+					   IssmDouble* PrecipitationsLgm,IssmDouble* PrecipitationsPresentday,
+					   IssmDouble* TemperaturesLgm, IssmDouble* TemperaturesPresentday, 
+					   IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout);
+void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,bool isTemperatureScaled,
+			bool isPrecipScaled, IssmDouble f, IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
+			IssmDouble* PrecipitationReconstructed,IssmDouble* TemperatureReconstructed, IssmDouble* monthlytemperaturesout,
+			IssmDouble* monthlyprecout);
+IssmDouble DrainageFunctionWaterfraction(IssmDouble waterfraction, IssmDouble dt=0.);
+IssmDouble StressIntensityIntegralWeight(IssmDouble depth, IssmDouble water_depth, IssmDouble thickness);
+
+/*Enthalphy*/
+void EnthalpyToThermal(IssmDouble* ptemperature,IssmDouble* pwaterfraction,IssmDouble enthalpy,IssmDouble pressure);
+
+/*Print arrays*/
+void printarray(IssmPDouble* array,int lines,int cols=1);
+#if _HAVE_AD_  && !defined(_WRAPPERS_)
+void printarray(IssmDouble* array,int lines,int cols=1);
+#endif
+void printarray_matlab(const char* filename,int* array,int lines,int cols=1);
+void printarray(int* array,int lines,int cols=1);
+void printarray(bool* array,int lines,int cols=1);
+void printsparsity(IssmPDouble* array,int lines,int cols=1);
+void printbinary(int n);
+void InversionStatsHeader(int NJ);
+void InversionStatsIter(int iter,double J, double Gnorm, double* Jlist, int N);
+void InversionStatsFooter(int NJ);
+#endif //ifndef _SHARED_ELEMENTS_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/Enum.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/Enum.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/Enum.h	(revision 27955)
@@ -0,0 +1,12 @@
+
+#ifndef _ISSM_ENUM_
+#define _ISSM_ENUM_
+
+#include "./EnumDefinitions.h"
+const char* EnumToStringx(int enum_in);
+void        EnumToStringx(char** string,int enum_in);
+int         StringToEnumx(const char* string_in,bool notfounderror=true);
+bool        IsInputEnum(int enum_in);
+bool        IsParamEnum(int enum_in);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/Enum.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/Enum.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/Enum.vim	(revision 27955)
@@ -0,0 +1,1974 @@
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+" ISSM specific c syntax highlighting
+"
+"   WARNING: DO NOT MODIFY THIS FILE
+"            this file has been automatically generated by Synchronize.sh
+"            Please read README for more information
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+"PETSc
+syn keyword cType Vec Mat SeqVec SeqMat
+
+"ISSM typedefs
+syn keyword cType mxArray ErrorException QuadtreeBox
+syn keyword cType IssmDouble IssmPDouble
+
+"ISSM Enums
+syn keyword cConstant ParametersSTARTEnum
+syn keyword cConstant AdolcParamEnum
+syn keyword cConstant AgeStabilizationEnum
+syn keyword cConstant AgeNumRequestedOutputsEnum
+syn keyword cConstant AgeRequestedOutputsEnum
+syn keyword cConstant AmrDeviatoricErrorGroupThresholdEnum
+syn keyword cConstant AmrDeviatoricErrorMaximumEnum
+syn keyword cConstant AmrDeviatoricErrorResolutionEnum
+syn keyword cConstant AmrDeviatoricErrorThresholdEnum
+syn keyword cConstant AmrErrEnum
+syn keyword cConstant AmrFieldEnum
+syn keyword cConstant AmrGradationEnum
+syn keyword cConstant AmrGroundingLineDistanceEnum
+syn keyword cConstant AmrGroundingLineResolutionEnum
+syn keyword cConstant AmrHmaxEnum
+syn keyword cConstant AmrHminEnum
+syn keyword cConstant AmrIceFrontDistanceEnum
+syn keyword cConstant AmrIceFrontResolutionEnum
+syn keyword cConstant AmrKeepMetricEnum
+syn keyword cConstant AmrLagEnum
+syn keyword cConstant AmrLevelMaxEnum
+syn keyword cConstant AmrRestartEnum
+syn keyword cConstant AmrThicknessErrorGroupThresholdEnum
+syn keyword cConstant AmrThicknessErrorMaximumEnum
+syn keyword cConstant AmrThicknessErrorResolutionEnum
+syn keyword cConstant AmrThicknessErrorThresholdEnum
+syn keyword cConstant AmrTypeEnum
+syn keyword cConstant AnalysisCounterEnum
+syn keyword cConstant AnalysisTypeEnum
+syn keyword cConstant AugmentedLagrangianREnum
+syn keyword cConstant AugmentedLagrangianRholambdaEnum
+syn keyword cConstant AugmentedLagrangianRhopEnum
+syn keyword cConstant AugmentedLagrangianRlambdaEnum
+syn keyword cConstant AugmentedLagrangianThetaEnum
+syn keyword cConstant AutodiffCbufsizeEnum
+syn keyword cConstant AutodiffDependentObjectsEnum
+syn keyword cConstant AutodiffDriverEnum
+syn keyword cConstant AutodiffFosForwardIndexEnum
+syn keyword cConstant AutodiffFosReverseIndexEnum
+syn keyword cConstant AutodiffFovForwardIndicesEnum
+syn keyword cConstant AutodiffGcTriggerMaxSizeEnum
+syn keyword cConstant AutodiffGcTriggerRatioEnum
+syn keyword cConstant AutodiffIsautodiffEnum
+syn keyword cConstant AutodiffLbufsizeEnum
+syn keyword cConstant AutodiffNumDependentsEnum
+syn keyword cConstant AutodiffNumIndependentsEnum
+syn keyword cConstant AutodiffObufsizeEnum
+syn keyword cConstant AutodiffTapeAllocEnum
+syn keyword cConstant AutodiffTbufsizeEnum
+syn keyword cConstant AutodiffXpEnum
+syn keyword cConstant BalancethicknessStabilizationEnum
+syn keyword cConstant BarystaticContributionsEnum
+syn keyword cConstant BasalforcingsARMATimestepEnum
+syn keyword cConstant BasalforcingsARMAarOrderEnum
+syn keyword cConstant BasalforcingsARMAmaOrderEnum
+syn keyword cConstant BasalforcingsBottomplumedepthEnum
+syn keyword cConstant BasalforcingsCrustthicknessEnum
+syn keyword cConstant BasalforcingsDeepwaterElevationEnum
+syn keyword cConstant BasalforcingsDeepwaterMeltingRateEnum
+syn keyword cConstant BasalforcingsDtbgEnum
+syn keyword cConstant BasalforcingsEnum
+syn keyword cConstant BasalforcingsIsmip6AverageTfEnum
+syn keyword cConstant BasalforcingsIsmip6BasinAreaEnum
+syn keyword cConstant BasalforcingsIsmip6DeltaTEnum
+syn keyword cConstant BasalforcingsIsmip6Gamma0Enum
+syn keyword cConstant BasalforcingsIsmip6IsLocalEnum
+syn keyword cConstant BasalforcingsIsmip6NumBasinsEnum
+syn keyword cConstant BasalforcingsIsmip6TfDepthsEnum
+syn keyword cConstant BasalforcingsLinearNumBasinsEnum
+syn keyword cConstant BasalforcingsLinearNumBreaksEnum
+syn keyword cConstant BasalforcingsLinearNumParamsEnum
+syn keyword cConstant BasalforcingsMantleconductivityEnum
+syn keyword cConstant BasalforcingsNusseltEnum
+syn keyword cConstant BasalforcingsARMAarlagcoefsEnum
+syn keyword cConstant BasalforcingsARMAdatebreaksEnum
+syn keyword cConstant BasalforcingsARMAmalagcoefsEnum
+syn keyword cConstant BasalforcingsARMApolyparamsEnum
+syn keyword cConstant BasalforcingsIsThermalForcingEnum
+syn keyword cConstant BasalforcingsLowercrustheatEnum
+syn keyword cConstant BasalforcingsPicoAverageOverturningEnum
+syn keyword cConstant BasalforcingsPicoAverageSalinityEnum
+syn keyword cConstant BasalforcingsPicoAverageTemperatureEnum
+syn keyword cConstant BasalforcingsPicoBoxAreaEnum
+syn keyword cConstant BasalforcingsPicoFarOceansalinityEnum
+syn keyword cConstant BasalforcingsPicoFarOceantemperatureEnum
+syn keyword cConstant BasalforcingsPicoGammaTEnum
+syn keyword cConstant BasalforcingsPicoIsplumeEnum
+syn keyword cConstant BasalforcingsPicoMaxboxcountEnum
+syn keyword cConstant BasalforcingsPicoNumBasinsEnum
+syn keyword cConstant BasalforcingsPlumeradiusEnum
+syn keyword cConstant BasalforcingsPlumexEnum
+syn keyword cConstant BasalforcingsPlumeyEnum
+syn keyword cConstant BasalforcingsThresholdThicknessEnum
+syn keyword cConstant BasalforcingsTopplumedepthEnum
+syn keyword cConstant BasalforcingsUppercrustheatEnum
+syn keyword cConstant BasalforcingsUppercrustthicknessEnum
+syn keyword cConstant BasalforcingsUpperdepthMeltEnum
+syn keyword cConstant BasalforcingsUpperwaterElevationEnum
+syn keyword cConstant BasalforcingsUpperwaterMeltingRateEnum
+syn keyword cConstant CalvingADStressThresholdFloatingiceEnum
+syn keyword cConstant CalvingADStressThresholdGroundediceEnum
+syn keyword cConstant CalvingCrevasseDepthEnum
+syn keyword cConstant CalvingCrevasseThresholdEnum
+syn keyword cConstant CalvingHeightAboveFloatationEnum
+syn keyword cConstant CalvingLawEnum
+syn keyword cConstant CalvingMinthicknessEnum
+syn keyword cConstant CalvingTestSpeedfactorEnum
+syn keyword cConstant CalvingTestIndependentRateEnum
+syn keyword cConstant CalvingUseParamEnum
+syn keyword cConstant CalvingThetaEnum
+syn keyword cConstant CalvingAlphaEnum
+syn keyword cConstant CalvingXoffsetEnum
+syn keyword cConstant CalvingYoffsetEnum
+syn keyword cConstant CalvingVelLowerboundEnum
+syn keyword cConstant CalvingVelMaxEnum
+syn keyword cConstant CalvingVelThresholdEnum
+syn keyword cConstant CalvingVelUpperboundEnum
+syn keyword cConstant CalvingRcEnum
+syn keyword cConstant CalvingNumberofBasinsEnum
+syn keyword cConstant ConfigurationTypeEnum
+syn keyword cConstant ConstantsGEnum
+syn keyword cConstant ConstantsNewtonGravityEnum
+syn keyword cConstant ConstantsReferencetemperatureEnum
+syn keyword cConstant ConstantsYtsEnum
+syn keyword cConstant ControlInputSizeMEnum
+syn keyword cConstant ControlInputSizeNEnum
+syn keyword cConstant ControlInputInterpolationEnum
+syn keyword cConstant CumBslcEnum
+syn keyword cConstant CumBslcIceEnum
+syn keyword cConstant CumBslcHydroEnum
+syn keyword cConstant CumBslcOceanEnum
+syn keyword cConstant CumBslcIcePartitionEnum
+syn keyword cConstant CumBslcHydroPartitionEnum
+syn keyword cConstant CumBslcOceanPartitionEnum
+syn keyword cConstant CumGmtslcEnum
+syn keyword cConstant CumGmslcEnum
+syn keyword cConstant DamageC1Enum
+syn keyword cConstant DamageC2Enum
+syn keyword cConstant DamageC3Enum
+syn keyword cConstant DamageC4Enum
+syn keyword cConstant DamageEnum
+syn keyword cConstant DamageEquivStressEnum
+syn keyword cConstant DamageEvolutionNumRequestedOutputsEnum
+syn keyword cConstant DamageEvolutionRequestedOutputsEnum
+syn keyword cConstant DamageHealingEnum
+syn keyword cConstant DamageKappaEnum
+syn keyword cConstant DamageLawEnum
+syn keyword cConstant DamageMaxDamageEnum
+syn keyword cConstant DamageStabilizationEnum
+syn keyword cConstant DamageStressThresholdEnum
+syn keyword cConstant DamageStressUBoundEnum
+syn keyword cConstant DebrisMinThicknessEnum
+syn keyword cConstant DebrisNumRequestedOutputsEnum
+syn keyword cConstant DebrisPenaltyFactorEnum
+syn keyword cConstant DebrisRequestedOutputsEnum
+syn keyword cConstant DebrisStabilizationEnum
+syn keyword cConstant DebrisRemovalmodelEnum
+syn keyword cConstant DebrisDisplacementmodelEnum
+syn keyword cConstant DebrisRemovalSlopeThresholdEnum
+syn keyword cConstant DebrisRemovalStressThresholdEnum
+syn keyword cConstant DebrisPackingFractionEnum
+syn keyword cConstant DebugProfilingEnum
+syn keyword cConstant DomainDimensionEnum
+syn keyword cConstant DomainTypeEnum
+syn keyword cConstant DslModelEnum
+syn keyword cConstant DslModelidEnum
+syn keyword cConstant DslNummodelsEnum
+syn keyword cConstant SolidearthIsExternalEnum
+syn keyword cConstant SolidearthExternalNatureEnum
+syn keyword cConstant SolidearthExternalModelidEnum
+syn keyword cConstant SolidearthExternalNummodelsEnum
+syn keyword cConstant SolidearthSettingsComputeBpGrdEnum
+syn keyword cConstant EarthIdEnum
+syn keyword cConstant ElasticEnum
+syn keyword cConstant EplZigZagCounterEnum
+syn keyword cConstant EsaHElasticEnum
+syn keyword cConstant EsaHemisphereEnum
+syn keyword cConstant EsaRequestedOutputsEnum
+syn keyword cConstant EsaUElasticEnum
+syn keyword cConstant ExtrapolationVariableEnum
+syn keyword cConstant FemModelCommEnum
+syn keyword cConstant FieldsEnum
+syn keyword cConstant FlowequationFeFSEnum
+syn keyword cConstant FlowequationIsFSEnum
+syn keyword cConstant FlowequationIsHOEnum
+syn keyword cConstant FlowequationIsL1L2Enum
+syn keyword cConstant FlowequationIsMOLHOEnum
+syn keyword cConstant FlowequationIsSIAEnum
+syn keyword cConstant FlowequationIsSSAEnum
+syn keyword cConstant FlowequationIsNitscheEnum
+syn keyword cConstant FeFSNitscheGammaEnum
+syn keyword cConstant FrictionCouplingEnum
+syn keyword cConstant FrictionDeltaEnum
+syn keyword cConstant FrictionEffectivePressureLimitEnum
+syn keyword cConstant FrictionFEnum
+syn keyword cConstant FrictionGammaEnum
+syn keyword cConstant FrictionLawEnum
+syn keyword cConstant FrictionLinearizeEnum
+syn keyword cConstant FrictionPseudoplasticityExponentEnum
+syn keyword cConstant FrictionU0Enum
+syn keyword cConstant FrictionThresholdSpeedEnum
+syn keyword cConstant FrictionVoidRatioEnum
+syn keyword cConstant FrontalForcingsBasinIcefrontAreaEnum
+syn keyword cConstant FrontalForcingsARMATimestepEnum
+syn keyword cConstant FrontalForcingsARMAarOrderEnum
+syn keyword cConstant FrontalForcingsARMAmaOrderEnum
+syn keyword cConstant FrontalForcingsARMAdatebreaksEnum
+syn keyword cConstant FrontalForcingsARMAmonthdatebreaksEnum
+syn keyword cConstant FrontalForcingsARMAmonthinterceptsEnum
+syn keyword cConstant FrontalForcingsARMAmonthtrendsEnum
+syn keyword cConstant FrontalForcingsARMApolyparamsEnum
+syn keyword cConstant FrontalForcingsIsDischargeARMAEnum
+syn keyword cConstant FrontalForcingsNumberofBasinsEnum
+syn keyword cConstant FrontalForcingsNumberofBreaksEnum
+syn keyword cConstant FrontalForcingsNumberofMonthBreaksEnum
+syn keyword cConstant FrontalForcingsNumberofParamsEnum
+syn keyword cConstant FrontalForcingsParamEnum
+syn keyword cConstant FrontalForcingsARMAarlagcoefsEnum
+syn keyword cConstant FrontalForcingsARMAmalagcoefsEnum
+syn keyword cConstant FrontalForcingsSdarlagcoefsEnum
+syn keyword cConstant FrontalForcingsSdARMATimestepEnum
+syn keyword cConstant FrontalForcingsSdarOrderEnum
+syn keyword cConstant FrontalForcingsSddatebreaksEnum
+syn keyword cConstant FrontalForcingsSdmalagcoefsEnum
+syn keyword cConstant FrontalForcingsSdmaOrderEnum
+syn keyword cConstant FrontalForcingsSdMonthlyFracEnum
+syn keyword cConstant FrontalForcingsSdNumberofBreaksEnum
+syn keyword cConstant FrontalForcingsSdNumberofParamsEnum
+syn keyword cConstant FrontalForcingsSdpolyparamsEnum
+syn keyword cConstant GrdModelEnum
+syn keyword cConstant GroundinglineFrictionInterpolationEnum
+syn keyword cConstant GroundinglineMeltInterpolationEnum
+syn keyword cConstant GroundinglineMigrationEnum
+syn keyword cConstant GroundinglineNumRequestedOutputsEnum
+syn keyword cConstant GroundinglineRequestedOutputsEnum
+syn keyword cConstant HydrologyarmaarOrderEnum
+syn keyword cConstant HydrologyarmaarlagcoefsEnum
+syn keyword cConstant HydrologyarmadatebreaksEnum
+syn keyword cConstant HydrologyarmamalagcoefsEnum
+syn keyword cConstant HydrologyarmamaOrderEnum
+syn keyword cConstant HydrologyarmaMonthlyFactorsEnum
+syn keyword cConstant HydrologyarmaNumBreaksEnum
+syn keyword cConstant HydrologyarmaNumParamsEnum
+syn keyword cConstant HydrologyarmapolyparamsEnum
+syn keyword cConstant HydrologyarmaTimestepEnum
+syn keyword cConstant HydrologyAveragingEnum
+syn keyword cConstant HydrologyChannelAlphaEnum
+syn keyword cConstant HydrologyChannelBetaEnum
+syn keyword cConstant HydrologyCavitySpacingEnum
+syn keyword cConstant HydrologyChannelSheetWidthEnum
+syn keyword cConstant HydrologyEnglacialVoidRatioEnum
+syn keyword cConstant HydrologyIschannelsEnum
+syn keyword cConstant HydrologyIsTransitionEnum
+syn keyword cConstant HydrologyIsWaterPressureArmaEnum
+syn keyword cConstant HydrologyMeltFlagEnum
+syn keyword cConstant HydrologyModelEnum
+syn keyword cConstant HydrologyNumBasinsEnum
+syn keyword cConstant HydrologyNumRequestedOutputsEnum
+syn keyword cConstant HydrologyOmegaEnum
+syn keyword cConstant HydrologyPressureMeltCoefficientEnum
+syn keyword cConstant HydrologyRelaxationEnum
+syn keyword cConstant HydrologyRequestedOutputsEnum
+syn keyword cConstant HydrologySedimentKmaxEnum
+syn keyword cConstant HydrologySheetAlphaEnum
+syn keyword cConstant HydrologySheetBetaEnum
+syn keyword cConstant HydrologyStepsPerStepEnum
+syn keyword cConstant HydrologyStorageEnum
+syn keyword cConstant HydrologydcEplColapseThicknessEnum
+syn keyword cConstant HydrologydcEplConductivityEnum
+syn keyword cConstant HydrologydcEplInitialThicknessEnum
+syn keyword cConstant HydrologydcEplLayerCompressibilityEnum
+syn keyword cConstant HydrologydcEplMaxThicknessEnum
+syn keyword cConstant HydrologydcEplPoreWaterMassEnum
+syn keyword cConstant HydrologydcEplThickCompEnum
+syn keyword cConstant HydrologydcEplflipLockEnum
+syn keyword cConstant HydrologydcIsefficientlayerEnum
+syn keyword cConstant HydrologydcLeakageFactorEnum
+syn keyword cConstant HydrologydcMaxIterEnum
+syn keyword cConstant HydrologydcPenaltyFactorEnum
+syn keyword cConstant HydrologydcPenaltyLockEnum
+syn keyword cConstant HydrologydcRelTolEnum
+syn keyword cConstant HydrologydcSedimentlimitEnum
+syn keyword cConstant HydrologydcSedimentlimitFlagEnum
+syn keyword cConstant HydrologydcSedimentLayerCompressibilityEnum
+syn keyword cConstant HydrologydcSedimentPoreWaterMassEnum
+syn keyword cConstant HydrologydcSedimentPorosityEnum
+syn keyword cConstant HydrologydcSedimentThicknessEnum
+syn keyword cConstant HydrologyStepAdaptEnum
+syn keyword cConstant HydrologydcTransferFlagEnum
+syn keyword cConstant HydrologydcUnconfinedFlagEnum
+syn keyword cConstant HydrologyshreveStabilizationEnum
+syn keyword cConstant IcecapToEarthCommEnum
+syn keyword cConstant IndexEnum
+syn keyword cConstant InputFileNameEnum
+syn keyword cConstant DirectoryNameEnum
+syn keyword cConstant IndicesEnum
+syn keyword cConstant InputToDepthaverageInEnum
+syn keyword cConstant InputToDepthaverageOutEnum
+syn keyword cConstant InputToExtrudeEnum
+syn keyword cConstant InputToL2ProjectEnum
+syn keyword cConstant InputToSmoothEnum
+syn keyword cConstant InversionAlgorithmEnum
+syn keyword cConstant InversionControlParametersEnum
+syn keyword cConstant InversionControlScalingFactorsEnum
+syn keyword cConstant InversionCostFunctionsEnum
+syn keyword cConstant InversionDxminEnum
+syn keyword cConstant InversionDfminFracEnum
+syn keyword cConstant InversionGatolEnum
+syn keyword cConstant InversionGradientScalingEnum
+syn keyword cConstant InversionGrtolEnum
+syn keyword cConstant InversionGttolEnum
+syn keyword cConstant InversionIncompleteAdjointEnum
+syn keyword cConstant InversionIscontrolEnum
+syn keyword cConstant InversionMaxiterEnum
+syn keyword cConstant InversionMaxiterPerStepEnum
+syn keyword cConstant InversionMaxstepsEnum
+syn keyword cConstant InversionNstepsEnum
+syn keyword cConstant InversionNumControlParametersEnum
+syn keyword cConstant InversionNumCostFunctionsEnum
+syn keyword cConstant InversionStepThresholdEnum
+syn keyword cConstant InversionStopFlagEnum
+syn keyword cConstant InversionTypeEnum
+syn keyword cConstant IvinsEnum
+syn keyword cConstant IsSlcCouplingEnum
+syn keyword cConstant LevelsetKillIcebergsEnum
+syn keyword cConstant LevelsetReinitFrequencyEnum
+syn keyword cConstant LevelsetStabilizationEnum
+syn keyword cConstant LockFileNameEnum
+syn keyword cConstant LoveAllowLayerDeletionEnum
+syn keyword cConstant LoveChandlerWobbleEnum
+syn keyword cConstant LoveCoreMantleBoundaryEnum
+syn keyword cConstant LoveEarthMassEnum
+syn keyword cConstant LoveForcingTypeEnum
+syn keyword cConstant LoveFrequenciesEnum
+syn keyword cConstant LoveIsTemporalEnum
+syn keyword cConstant LoveG0Enum
+syn keyword cConstant LoveGravitationalConstantEnum
+syn keyword cConstant LoveInnerCoreBoundaryEnum
+syn keyword cConstant LoveComplexComputationEnum
+syn keyword cConstant LoveQuadPrecisionEnum
+syn keyword cConstant LoveIntStepsPerLayerEnum
+syn keyword cConstant LoveMinIntegrationStepsEnum
+syn keyword cConstant LoveMaxIntegrationdrEnum
+syn keyword cConstant LoveIntegrationSchemeEnum
+syn keyword cConstant LoveKernelsEnum
+syn keyword cConstant LoveMu0Enum
+syn keyword cConstant LoveNfreqEnum
+syn keyword cConstant LoveNTemporalIterationsEnum
+syn keyword cConstant LoveNYiEquationsEnum
+syn keyword cConstant LoveR0Enum
+syn keyword cConstant LoveShNmaxEnum
+syn keyword cConstant LoveShNminEnum
+syn keyword cConstant LoveStartingLayerEnum
+syn keyword cConstant LoveUnderflowTolEnum
+syn keyword cConstant LovePostWidderThresholdEnum
+syn keyword cConstant LoveDebugEnum
+syn keyword cConstant LoveHypergeomNZEnum
+syn keyword cConstant LoveHypergeomNAlphaEnum
+syn keyword cConstant MassFluxSegmentsEnum
+syn keyword cConstant MassFluxSegmentsPresentEnum
+syn keyword cConstant MasstransportHydrostaticAdjustmentEnum
+syn keyword cConstant MasstransportIsfreesurfaceEnum
+syn keyword cConstant MasstransportMinThicknessEnum
+syn keyword cConstant MasstransportNumRequestedOutputsEnum
+syn keyword cConstant MasstransportPenaltyFactorEnum
+syn keyword cConstant MasstransportRequestedOutputsEnum
+syn keyword cConstant MasstransportStabilizationEnum
+syn keyword cConstant MaterialsBetaEnum
+syn keyword cConstant MaterialsEarthDensityEnum
+syn keyword cConstant MaterialsEffectiveconductivityAveragingEnum
+syn keyword cConstant MaterialsHeatcapacityEnum
+syn keyword cConstant MaterialsLatentheatEnum
+syn keyword cConstant MaterialsMeltingpointEnum
+syn keyword cConstant MaterialsMixedLayerCapacityEnum
+syn keyword cConstant MaterialsMuWaterEnum
+syn keyword cConstant MaterialsRheologyLawEnum
+syn keyword cConstant MaterialsRhoFreshwaterEnum
+syn keyword cConstant MaterialsRhoIceEnum
+syn keyword cConstant MaterialsRhoSeawaterEnum
+syn keyword cConstant MaterialsTemperateiceconductivityEnum
+syn keyword cConstant MaterialsThermalExchangeVelocityEnum
+syn keyword cConstant MaterialsThermalconductivityEnum
+syn keyword cConstant MeltingOffsetEnum
+syn keyword cConstant MeshAverageVertexConnectivityEnum
+syn keyword cConstant MeshElementtypeEnum
+syn keyword cConstant MeshNumberoflayersEnum
+syn keyword cConstant MeshNumberofverticesEnum
+syn keyword cConstant MeshNumberofelementsEnum
+syn keyword cConstant MigrationMaxEnum
+syn keyword cConstant ModelIdEnum
+syn keyword cConstant NbinsEnum
+syn keyword cConstant NodesEnum
+syn keyword cConstant NumModelsEnum
+syn keyword cConstant OceanGridNxEnum
+syn keyword cConstant OceanGridNyEnum
+syn keyword cConstant OceanGridXEnum
+syn keyword cConstant OceanGridYEnum
+syn keyword cConstant OutputBufferPointerEnum
+syn keyword cConstant OutputBufferSizePointerEnum
+syn keyword cConstant OutputFileNameEnum
+syn keyword cConstant OutputFilePointerEnum
+syn keyword cConstant OutputdefinitionEnum
+syn keyword cConstant QmuErrNameEnum
+syn keyword cConstant QmuInNameEnum
+syn keyword cConstant QmuIsdakotaEnum
+syn keyword cConstant QmuOutNameEnum
+syn keyword cConstant QmuOutputEnum
+syn keyword cConstant QmuCurrEvalIdEnum
+syn keyword cConstant QmuNsampleEnum
+syn keyword cConstant QmuResponsedescriptorsEnum
+syn keyword cConstant QmuVariableDescriptorsEnum
+syn keyword cConstant QmuVariablePartitionsEnum
+syn keyword cConstant QmuVariablePartitionsNpartEnum
+syn keyword cConstant QmuVariablePartitionsNtEnum
+syn keyword cConstant QmuResponsePartitionsEnum
+syn keyword cConstant QmuResponsePartitionsNpartEnum
+syn keyword cConstant QmuStatisticsEnum
+syn keyword cConstant QmuNumstatisticsEnum
+syn keyword cConstant QmuNdirectoriesEnum
+syn keyword cConstant QmuNfilesPerDirectoryEnum
+syn keyword cConstant QmuStatisticsMethodEnum
+syn keyword cConstant QmuMethodsEnum
+syn keyword cConstant RestartFileNameEnum
+syn keyword cConstant ResultsEnum
+syn keyword cConstant RootPathEnum
+syn keyword cConstant ModelnameEnum
+syn keyword cConstant SamplingAlphaEnum
+syn keyword cConstant SamplingNumRequestedOutputsEnum
+syn keyword cConstant SamplingRequestedOutputsEnum
+syn keyword cConstant SamplingRobinEnum
+syn keyword cConstant SamplingSeedEnum
+syn keyword cConstant SaveResultsEnum
+syn keyword cConstant SolidearthPartitionIceEnum
+syn keyword cConstant SolidearthPartitionHydroEnum
+syn keyword cConstant SolidearthPartitionOceanEnum
+syn keyword cConstant SolidearthNpartIceEnum
+syn keyword cConstant SolidearthNpartOceanEnum
+syn keyword cConstant SolidearthNpartHydroEnum
+syn keyword cConstant SolidearthPlanetRadiusEnum
+syn keyword cConstant SolidearthPlanetAreaEnum
+syn keyword cConstant SolidearthSettingsAbstolEnum
+syn keyword cConstant SolidearthSettingsCrossSectionShapeEnum
+syn keyword cConstant SolidearthSettingsElasticEnum
+syn keyword cConstant SolidearthSettingsViscousEnum
+syn keyword cConstant SolidearthSettingsSatelliteGraviEnum
+syn keyword cConstant SolidearthSettingsDegreeAccuracyEnum
+syn keyword cConstant SealevelchangeGeometryDoneEnum
+syn keyword cConstant SealevelchangeViscousNumStepsEnum
+syn keyword cConstant SealevelchangeViscousTimesEnum
+syn keyword cConstant SealevelchangeViscousIndexEnum
+syn keyword cConstant SealevelchangeViscousPolarMotionEnum
+syn keyword cConstant SealevelchangeRunCountEnum
+syn keyword cConstant SealevelchangeTransitionsEnum
+syn keyword cConstant SealevelchangeRequestedOutputsEnum
+syn keyword cConstant RotationalAngularVelocityEnum
+syn keyword cConstant RotationalEquatorialMoiEnum
+syn keyword cConstant RotationalPolarMoiEnum
+syn keyword cConstant LovePolarMotionTransferFunctionColinearEnum
+syn keyword cConstant LovePolarMotionTransferFunctionOrthogonalEnum
+syn keyword cConstant TidalLoveHEnum
+syn keyword cConstant TidalLoveKEnum
+syn keyword cConstant TidalLoveLEnum
+syn keyword cConstant TidalLoveK2SecularEnum
+syn keyword cConstant LoadLoveHEnum
+syn keyword cConstant LoadLoveKEnum
+syn keyword cConstant LoadLoveLEnum
+syn keyword cConstant LoveTimeFreqEnum
+syn keyword cConstant LoveIsTimeEnum
+syn keyword cConstant LoveHypergeomZEnum
+syn keyword cConstant LoveHypergeomTable1Enum
+syn keyword cConstant LoveHypergeomTable2Enum
+syn keyword cConstant SealevelchangeGSelfAttractionEnum
+syn keyword cConstant SealevelchangeGViscoElasticEnum
+syn keyword cConstant SealevelchangeUViscoElasticEnum
+syn keyword cConstant SealevelchangeHViscoElasticEnum
+syn keyword cConstant SealevelchangePolarMotionTransferFunctionColinearEnum
+syn keyword cConstant SealevelchangePolarMotionTransferFunctionOrthogonalEnum
+syn keyword cConstant SealevelchangePolarMotionTransferFunctionZEnum
+syn keyword cConstant SealevelchangeTidalK2Enum
+syn keyword cConstant SealevelchangeTidalH2Enum
+syn keyword cConstant SealevelchangeTidalL2Enum
+syn keyword cConstant SolidearthSettingsSealevelLoadingEnum
+syn keyword cConstant SolidearthSettingsGRDEnum
+syn keyword cConstant SolidearthSettingsRunFrequencyEnum
+syn keyword cConstant SolidearthSettingsTimeAccEnum
+syn keyword cConstant SolidearthSettingsHorizEnum
+syn keyword cConstant SolidearthSettingsMaxiterEnum
+syn keyword cConstant SolidearthSettingsGrdOceanEnum
+syn keyword cConstant SolidearthSettingsOceanAreaScalingEnum
+syn keyword cConstant StochasticForcingCovarianceEnum
+syn keyword cConstant StochasticForcingDefaultDimensionEnum
+syn keyword cConstant StochasticForcingDimensionsEnum
+syn keyword cConstant StochasticForcingFieldsEnum
+syn keyword cConstant StochasticForcingIsEffectivePressureEnum
+syn keyword cConstant StochasticForcingIsStochasticForcingEnum
+syn keyword cConstant StochasticForcingIsWaterPressureEnum
+syn keyword cConstant StochasticForcingNoisetermsEnum
+syn keyword cConstant StochasticForcingNumFieldsEnum
+syn keyword cConstant StochasticForcingNumTimesCovarianceEnum
+syn keyword cConstant StochasticForcingRandomflagEnum
+syn keyword cConstant StochasticForcingTimeCovarianceEnum
+syn keyword cConstant StochasticForcingTimestepEnum
+syn keyword cConstant SolidearthSettingsReltolEnum
+syn keyword cConstant SolidearthSettingsSelfAttractionEnum
+syn keyword cConstant SolidearthSettingsRotationEnum
+syn keyword cConstant SolidearthSettingsMaxSHCoeffEnum
+syn keyword cConstant SettingsIoGatherEnum
+syn keyword cConstant SettingsNumResultsOnNodesEnum
+syn keyword cConstant SettingsOutputFrequencyEnum
+syn keyword cConstant SettingsCheckpointFrequencyEnum
+syn keyword cConstant SettingsResultsOnNodesEnum
+syn keyword cConstant SettingsSbCouplingFrequencyEnum
+syn keyword cConstant SettingsSolverResidueThresholdEnum
+syn keyword cConstant SettingsWaitonlockEnum
+syn keyword cConstant SmbAIceEnum
+syn keyword cConstant SmbAIdxEnum
+syn keyword cConstant SmbASnowEnum
+syn keyword cConstant SmbAccualtiEnum
+syn keyword cConstant SmbAccugradEnum
+syn keyword cConstant SmbAccurefEnum
+syn keyword cConstant SmbAdThreshEnum
+syn keyword cConstant SmbAlbedoSchemeEnum
+syn keyword cConstant SmbAlbedoSnowMaxEnum
+syn keyword cConstant SmbAlbedoSnowMinEnum
+syn keyword cConstant SmbAlbedoIceEnum
+syn keyword cConstant SmbAlbedoLandEnum
+syn keyword cConstant SmbARMATimestepEnum
+syn keyword cConstant SmbARMAarOrderEnum
+syn keyword cConstant SmbARMAarlagcoefsEnum
+syn keyword cConstant SmbARMAdatebreaksEnum
+syn keyword cConstant SmbARMAmaOrderEnum
+syn keyword cConstant SmbARMAmalagcoefsEnum
+syn keyword cConstant SmbARMApolyparamsEnum
+syn keyword cConstant SmbAveragingEnum
+syn keyword cConstant SmbDebrisalbedoEnum
+syn keyword cConstant SmbIcealbedoEnum
+syn keyword cConstant SmbSnowalbedoEnum
+syn keyword cConstant SmbDebrisIsAndersonEnum
+syn keyword cConstant SmbDebrisIsCryokarstEnum
+syn keyword cConstant SmbDebrisAndersonD0Enum
+syn keyword cConstant SmbDesfacEnum
+syn keyword cConstant SmbDesfacElevEnum
+syn keyword cConstant SmbDpermilEnum
+syn keyword cConstant SmbDsnowIdxEnum
+syn keyword cConstant SmbElevationBinsEnum
+syn keyword cConstant SmbCldFracEnum
+syn keyword cConstant SmbDelta18oEnum
+syn keyword cConstant SmbDelta18oSurfaceEnum
+syn keyword cConstant SmbDenIdxEnum
+syn keyword cConstant SmbDtEnum
+syn keyword cConstant SmbEnum
+syn keyword cConstant SmbEIdxEnum
+syn keyword cConstant SmbFEnum
+syn keyword cConstant SmbHumiditygradEnum
+syn keyword cConstant SmbInitDensityScalingEnum
+syn keyword cConstant SmbIsaccumulationEnum
+syn keyword cConstant SmbIsalbedoEnum
+syn keyword cConstant SmbIsconstrainsurfaceTEnum
+syn keyword cConstant SmbIsd18opdEnum
+syn keyword cConstant SmbIsdelta18oEnum
+syn keyword cConstant SmbIsdensificationEnum
+syn keyword cConstant SmbIsdeltaLWupEnum
+syn keyword cConstant SmbIsfirnwarmingEnum
+syn keyword cConstant SmbIsgraingrowthEnum
+syn keyword cConstant SmbIsmeltEnum
+syn keyword cConstant SmbIsmungsmEnum
+syn keyword cConstant SmbIsprecipscaledEnum
+syn keyword cConstant SmbIssetpddfacEnum
+syn keyword cConstant SmbIsshortwaveEnum
+syn keyword cConstant SmbIstemperaturescaledEnum
+syn keyword cConstant SmbIsthermalEnum
+syn keyword cConstant SmbIsturbulentfluxEnum
+syn keyword cConstant SmbKEnum
+syn keyword cConstant SmbLapseRatesEnum
+syn keyword cConstant SmbLWgradEnum
+syn keyword cConstant SmbNumBasinsEnum
+syn keyword cConstant SmbNumBreaksEnum
+syn keyword cConstant SmbNumElevationBinsEnum
+syn keyword cConstant SmbNumParamsEnum
+syn keyword cConstant SmbNumRequestedOutputsEnum
+syn keyword cConstant SmbPfacEnum
+syn keyword cConstant SmbRdlEnum
+syn keyword cConstant SmbRefElevationEnum
+syn keyword cConstant SmbRequestedOutputsEnum
+syn keyword cConstant SmbRlapsEnum
+syn keyword cConstant SmbRlapslgmEnum
+syn keyword cConstant SmbRunoffaltiEnum
+syn keyword cConstant SmbRunoffgradEnum
+syn keyword cConstant SmbRunoffrefEnum
+syn keyword cConstant SmbSealevEnum
+syn keyword cConstant SmbSemicMethodEnum
+syn keyword cConstant SmbSemicHcritEnum
+syn keyword cConstant SmbSemicRcritEnum
+syn keyword cConstant SmbSemicWcritEnum
+syn keyword cConstant SmbSemicMcritEnum
+syn keyword cConstant SmbSemicAfacEnum
+syn keyword cConstant SmbSemicTauAEnum
+syn keyword cConstant SmbSemicTauFEnum
+syn keyword cConstant SmbSemicTminEnum
+syn keyword cConstant SmbSemicTmidEnum
+syn keyword cConstant SmbSemicTmaxEnum
+syn keyword cConstant SmbStepsPerStepEnum
+syn keyword cConstant SmbSwIdxEnum
+syn keyword cConstant SmbSWgradEnum
+syn keyword cConstant SmbT0dryEnum
+syn keyword cConstant SmbT0wetEnum
+syn keyword cConstant SmbTcIdxEnum
+syn keyword cConstant SmbTeThreshEnum
+syn keyword cConstant SmbTdiffEnum
+syn keyword cConstant SmbThermoDeltaTScalingEnum
+syn keyword cConstant SmbTemperaturesReconstructedYearsEnum
+syn keyword cConstant SmbPrecipitationsReconstructedYearsEnum
+syn keyword cConstant SmbWindspeedgradEnum
+syn keyword cConstant SmoothThicknessMultiplierEnum
+syn keyword cConstant SolutionTypeEnum
+syn keyword cConstant SteadystateMaxiterEnum
+syn keyword cConstant SteadystateNumRequestedOutputsEnum
+syn keyword cConstant SteadystateReltolEnum
+syn keyword cConstant SteadystateRequestedOutputsEnum
+syn keyword cConstant StepEnum
+syn keyword cConstant StepsEnum
+syn keyword cConstant StressbalanceAbstolEnum
+syn keyword cConstant StressbalanceFSreconditioningEnum
+syn keyword cConstant StressbalanceIsnewtonEnum
+syn keyword cConstant StressbalanceMaxiterEnum
+syn keyword cConstant StressbalanceNumRequestedOutputsEnum
+syn keyword cConstant StressbalancePenaltyFactorEnum
+syn keyword cConstant StressbalanceReltolEnum
+syn keyword cConstant StressbalanceRequestedOutputsEnum
+syn keyword cConstant StressbalanceRestolEnum
+syn keyword cConstant StressbalanceRiftPenaltyThresholdEnum
+syn keyword cConstant StressbalanceShelfDampeningEnum
+syn keyword cConstant ThermalForcingMonthlyEffectsEnum
+syn keyword cConstant ThermalIsdrainicecolumnEnum
+syn keyword cConstant ThermalIsdynamicbasalspcEnum
+syn keyword cConstant ThermalIsenthalpyEnum
+syn keyword cConstant ThermalMaxiterEnum
+syn keyword cConstant ThermalNumRequestedOutputsEnum
+syn keyword cConstant ThermalPenaltyFactorEnum
+syn keyword cConstant ThermalPenaltyLockEnum
+syn keyword cConstant ThermalPenaltyThresholdEnum
+syn keyword cConstant ThermalReltolEnum
+syn keyword cConstant ThermalRequestedOutputsEnum
+syn keyword cConstant ThermalStabilizationEnum
+syn keyword cConstant ThermalWatercolumnUpperlimitEnum
+syn keyword cConstant TimeEnum
+syn keyword cConstant TimesteppingAverageForcingEnum
+syn keyword cConstant TimesteppingCflCoefficientEnum
+syn keyword cConstant TimesteppingCouplingTimeEnum
+syn keyword cConstant TimesteppingFinalTimeEnum
+syn keyword cConstant TimesteppingInterpForcingEnum
+syn keyword cConstant TimesteppingCycleForcingEnum
+syn keyword cConstant TimesteppingStartTimeEnum
+syn keyword cConstant TimesteppingTimeStepEnum
+syn keyword cConstant TimesteppingTimeStepMaxEnum
+syn keyword cConstant TimesteppingTimeStepMinEnum
+syn keyword cConstant TimesteppingTypeEnum
+syn keyword cConstant ToMITgcmCommEnum
+syn keyword cConstant ToolkitsFileNameEnum
+syn keyword cConstant ToolkitsOptionsAnalysesEnum
+syn keyword cConstant ToolkitsOptionsStringsEnum
+syn keyword cConstant ToolkitsTypesEnum
+syn keyword cConstant TransientAmrFrequencyEnum
+syn keyword cConstant TransientIsageEnum
+syn keyword cConstant TransientIsdamageevolutionEnum
+syn keyword cConstant TransientIsdebrisEnum
+syn keyword cConstant TransientIsesaEnum
+syn keyword cConstant TransientIsgiaEnum
+syn keyword cConstant TransientIsgroundinglineEnum
+syn keyword cConstant TransientIshydrologyEnum
+syn keyword cConstant TransientIsmasstransportEnum
+syn keyword cConstant TransientIsoceantransportEnum
+syn keyword cConstant TransientIsmovingfrontEnum
+syn keyword cConstant TransientIsoceancouplingEnum
+syn keyword cConstant TransientIssamplingEnum
+syn keyword cConstant TransientIsslcEnum
+syn keyword cConstant TransientIssmbEnum
+syn keyword cConstant TransientIsstressbalanceEnum
+syn keyword cConstant TransientIsthermalEnum
+syn keyword cConstant TransientNumRequestedOutputsEnum
+syn keyword cConstant TransientRequestedOutputsEnum
+syn keyword cConstant VelocityEnum
+syn keyword cConstant XxeEnum
+syn keyword cConstant YyeEnum
+syn keyword cConstant ZzeEnum
+syn keyword cConstant AreaeEnum
+syn keyword cConstant WorldCommEnum
+syn keyword cConstant ParametersENDEnum
+syn keyword cConstant InputsSTARTEnum
+syn keyword cConstant AccumulatedDeltaBottomPressureEnum
+syn keyword cConstant AccumulatedDeltaIceThicknessEnum
+syn keyword cConstant AccumulatedDeltaTwsEnum
+syn keyword cConstant AdjointEnum
+syn keyword cConstant AdjointpEnum
+syn keyword cConstant AdjointxEnum
+syn keyword cConstant AdjointxBaseEnum
+syn keyword cConstant AdjointxShearEnum
+syn keyword cConstant AdjointyEnum
+syn keyword cConstant AdjointyBaseEnum
+syn keyword cConstant AdjointyShearEnum
+syn keyword cConstant AdjointzEnum
+syn keyword cConstant AgeEnum
+syn keyword cConstant AirEnum
+syn keyword cConstant ApproximationEnum
+syn keyword cConstant BalancethicknessMisfitEnum
+syn keyword cConstant BalancethicknessOmega0Enum
+syn keyword cConstant BalancethicknessOmegaEnum
+syn keyword cConstant BalancethicknessSpcthicknessEnum
+syn keyword cConstant BalancethicknessThickeningRateEnum
+syn keyword cConstant BasalCrevasseEnum
+syn keyword cConstant BasalforcingsDeepwaterMeltingRatearmaEnum
+syn keyword cConstant BasalforcingsDeepwaterMeltingRateNoiseEnum
+syn keyword cConstant BasalforcingsDeepwaterMeltingRateValuesAutoregressionEnum
+syn keyword cConstant BasalforcingsDeepwaterMeltingRateValuesMovingaverageEnum
+syn keyword cConstant BasalforcingsFloatingiceMeltingRateEnum
+syn keyword cConstant BasalforcingsFloatingiceMeltingRateObsEnum
+syn keyword cConstant BasalforcingsGeothermalfluxEnum
+syn keyword cConstant BasalforcingsGroundediceMeltingRateEnum
+syn keyword cConstant BasalforcingsGroundediceMeltingRateObsEnum
+syn keyword cConstant BasalforcingsLinearBasinIdEnum
+syn keyword cConstant BasalforcingsPerturbationMeltingRateEnum
+syn keyword cConstant BasalforcingsSpatialDeepwaterElevationEnum
+syn keyword cConstant BasalforcingsSpatialDeepwaterMeltingRateEnum
+syn keyword cConstant BasalforcingsSpatialUpperwaterElevationEnum
+syn keyword cConstant BasalforcingsSpatialUpperwaterMeltingRateEnum
+syn keyword cConstant BasalforcingsIsmip6BasinIdEnum
+syn keyword cConstant BasalforcingsIsmip6TfEnum
+syn keyword cConstant BasalforcingsIsmip6TfShelfEnum
+syn keyword cConstant BasalforcingsIsmip6MeltAnomalyEnum
+syn keyword cConstant BasalforcingsMeltrateFactorEnum
+syn keyword cConstant BasalforcingsOceanSalinityEnum
+syn keyword cConstant BasalforcingsOceanTempEnum
+syn keyword cConstant BasalforcingsPicoBasinIdEnum
+syn keyword cConstant BasalforcingsPicoBoxIdEnum
+syn keyword cConstant BasalforcingsPicoOverturningCoeffEnum
+syn keyword cConstant BasalforcingsPicoSubShelfOceanOverturningEnum
+syn keyword cConstant BasalforcingsPicoSubShelfOceanSalinityEnum
+syn keyword cConstant BasalforcingsPicoSubShelfOceanTempEnum
+syn keyword cConstant BasalStressxEnum
+syn keyword cConstant BasalStressyEnum
+syn keyword cConstant BasalStressEnum
+syn keyword cConstant BaseEnum
+syn keyword cConstant BaseOldEnum
+syn keyword cConstant BaseSlopeXEnum
+syn keyword cConstant BaseSlopeYEnum
+syn keyword cConstant BaselineBasalforcingsFloatingiceMeltingRateEnum
+syn keyword cConstant BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum
+syn keyword cConstant BaselineCalvingCalvingrateEnum
+syn keyword cConstant BaselineFrictionEffectivePressureEnum
+syn keyword cConstant BaselineSmbMassBalanceEnum
+syn keyword cConstant BedEnum
+syn keyword cConstant BedGRDEnum
+syn keyword cConstant BedEastEnum
+syn keyword cConstant BedEastGRDEnum
+syn keyword cConstant BedNorthEnum
+syn keyword cConstant BedNorthGRDEnum
+syn keyword cConstant BedSlopeXEnum
+syn keyword cConstant BedSlopeYEnum
+syn keyword cConstant BottomPressureEnum
+syn keyword cConstant BottomPressureOldEnum
+syn keyword cConstant CalvingBasinIdEnum
+syn keyword cConstant CalvingCalvingrateEnum
+syn keyword cConstant CalvingHabFractionEnum
+syn keyword cConstant CalvingAblationrateEnum
+syn keyword cConstant CalvingMeltingrateEnum
+syn keyword cConstant CalvingStressThresholdFloatingiceEnum
+syn keyword cConstant CalvingStressThresholdGroundediceEnum
+syn keyword cConstant CalvinglevermannCoeffEnum
+syn keyword cConstant CalvingratexEnum
+syn keyword cConstant CalvingrateyEnum
+syn keyword cConstant CalvingFluxLevelsetEnum
+syn keyword cConstant CalvingMeltingFluxLevelsetEnum
+syn keyword cConstant ConvergedEnum
+syn keyword cConstant CrevasseDepthEnum
+syn keyword cConstant DamageDEnum
+syn keyword cConstant DamageDOldEnum
+syn keyword cConstant DamageDbarEnum
+syn keyword cConstant DamageDbarOldEnum
+syn keyword cConstant DamageFEnum
+syn keyword cConstant DebrisThicknessEnum
+syn keyword cConstant DegreeOfChannelizationEnum
+syn keyword cConstant DepthBelowSurfaceEnum
+syn keyword cConstant DeltaIceThicknessEnum
+syn keyword cConstant DeltaTwsEnum
+syn keyword cConstant DeltaBottomPressureEnum
+syn keyword cConstant DeltaDslEnum
+syn keyword cConstant DslOldEnum
+syn keyword cConstant DslEnum
+syn keyword cConstant DeltaStrEnum
+syn keyword cConstant StrOldEnum
+syn keyword cConstant StrEnum
+syn keyword cConstant DeviatoricStresseffectiveEnum
+syn keyword cConstant DeviatoricStressxxEnum
+syn keyword cConstant DeviatoricStressxyEnum
+syn keyword cConstant DeviatoricStressxzEnum
+syn keyword cConstant DeviatoricStressyyEnum
+syn keyword cConstant DeviatoricStressyzEnum
+syn keyword cConstant DeviatoricStresszzEnum
+syn keyword cConstant DeviatoricStress1Enum
+syn keyword cConstant DeviatoricStress2Enum
+syn keyword cConstant DistanceToCalvingfrontEnum
+syn keyword cConstant DistanceToGroundinglineEnum
+syn keyword cConstant Domain2DhorizontalEnum
+syn keyword cConstant Domain2DverticalEnum
+syn keyword cConstant Domain3DEnum
+syn keyword cConstant DragCoefficientAbsGradientEnum
+syn keyword cConstant DrivingStressXEnum
+syn keyword cConstant DrivingStressYEnum
+syn keyword cConstant DummyEnum
+syn keyword cConstant EffectivePressureEnum
+syn keyword cConstant EffectivePressureSubstepEnum
+syn keyword cConstant EffectivePressureTransientEnum
+syn keyword cConstant EnthalpyEnum
+syn keyword cConstant EnthalpyPicardEnum
+syn keyword cConstant EplHeadEnum
+syn keyword cConstant EplHeadOldEnum
+syn keyword cConstant EplHeadSlopeXEnum
+syn keyword cConstant EplHeadSlopeYEnum
+syn keyword cConstant EplHeadSubstepEnum
+syn keyword cConstant EplHeadTransientEnum
+syn keyword cConstant EsaEmotionEnum
+syn keyword cConstant EsaNmotionEnum
+syn keyword cConstant EsaRotationrateEnum
+syn keyword cConstant EsaStrainratexxEnum
+syn keyword cConstant EsaStrainratexyEnum
+syn keyword cConstant EsaStrainrateyyEnum
+syn keyword cConstant EsaUmotionEnum
+syn keyword cConstant EsaXmotionEnum
+syn keyword cConstant EsaYmotionEnum
+syn keyword cConstant EtaDiffEnum
+syn keyword cConstant FlowequationBorderFSEnum
+syn keyword cConstant FrictionAsEnum
+syn keyword cConstant FrictionCEnum
+syn keyword cConstant FrictionCmaxEnum
+syn keyword cConstant FrictionCoefficientEnum
+syn keyword cConstant FrictionCoefficientcoulombEnum
+syn keyword cConstant FrictionEffectivePressureEnum
+syn keyword cConstant FrictionKEnum
+syn keyword cConstant FrictionMEnum
+syn keyword cConstant FrictionPEnum
+syn keyword cConstant FrictionPressureAdjustedTemperatureEnum
+syn keyword cConstant FrictionQEnum
+syn keyword cConstant FrictionSedimentCompressibilityCoefficientEnum
+syn keyword cConstant FrictionTillFrictionAngleEnum
+syn keyword cConstant FrictionWaterLayerEnum
+syn keyword cConstant FrictionWaterPressureEnum
+syn keyword cConstant FrictionWaterPressureNoiseEnum
+syn keyword cConstant FrictionfEnum
+syn keyword cConstant FrontalForcingsBasinIdEnum
+syn keyword cConstant FrontalForcingsSubglacialDischargearmaEnum
+syn keyword cConstant FrontalForcingsSubglacialDischargeEnum
+syn keyword cConstant GeometryHydrostaticRatioEnum
+syn keyword cConstant NGiaEnum
+syn keyword cConstant NGiaRateEnum
+syn keyword cConstant UGiaEnum
+syn keyword cConstant UGiaRateEnum
+syn keyword cConstant GradientEnum
+syn keyword cConstant GroundinglineHeightEnum
+syn keyword cConstant HydraulicPotentialEnum
+syn keyword cConstant HydraulicPotentialOldEnum
+syn keyword cConstant HydrologyBasalFluxEnum
+syn keyword cConstant HydrologyBasinsIdEnum
+syn keyword cConstant HydrologyBumpHeightEnum
+syn keyword cConstant HydrologyBumpSpacingEnum
+syn keyword cConstant HydrologyChannelConductivityEnum
+syn keyword cConstant HydrologydcBasalMoulinInputEnum
+syn keyword cConstant HydrologydcEplThicknessEnum
+syn keyword cConstant HydrologydcEplThicknessOldEnum
+syn keyword cConstant HydrologydcEplThicknessSubstepEnum
+syn keyword cConstant HydrologydcEplThicknessTransientEnum
+syn keyword cConstant HydrologydcMaskEplactiveEltEnum
+syn keyword cConstant HydrologydcMaskEplactiveNodeEnum
+syn keyword cConstant HydrologydcMaskThawedEltEnum
+syn keyword cConstant HydrologydcMaskThawedNodeEnum
+syn keyword cConstant HydrologydcSedimentTransmitivityEnum
+syn keyword cConstant HydrologyDrainageRateEnum
+syn keyword cConstant HydrologyEnglacialInputEnum
+syn keyword cConstant HydrologyGapHeightEnum
+syn keyword cConstant HydrologyGapHeightXEnum
+syn keyword cConstant HydrologyGapHeightXXEnum
+syn keyword cConstant HydrologyGapHeightYEnum
+syn keyword cConstant HydrologyGapHeightYYEnum
+syn keyword cConstant HydrologyHeadEnum
+syn keyword cConstant HydrologyHeadOldEnum
+syn keyword cConstant HydrologyMoulinInputEnum
+syn keyword cConstant HydrologyNeumannfluxEnum
+syn keyword cConstant HydrologyReynoldsEnum
+syn keyword cConstant HydrologySheetConductivityEnum
+syn keyword cConstant HydrologySheetThicknessEnum
+syn keyword cConstant HydrologySheetThicknessOldEnum
+syn keyword cConstant HydrologyTwsEnum
+syn keyword cConstant HydrologyTwsSpcEnum
+syn keyword cConstant HydrologyTwsAnalysisEnum
+syn keyword cConstant HydrologyWatercolumnMaxEnum
+syn keyword cConstant HydrologyWaterVxEnum
+syn keyword cConstant HydrologyWaterVyEnum
+syn keyword cConstant HydrologyMaskNodeActivationEnum
+syn keyword cConstant DebrisMaskNodeActivationEnum
+syn keyword cConstant IceEnum
+syn keyword cConstant IceMaskNodeActivationEnum
+syn keyword cConstant InputEnum
+syn keyword cConstant InversionCostFunctionsCoefficientsEnum
+syn keyword cConstant InversionSurfaceObsEnum
+syn keyword cConstant InversionThicknessObsEnum
+syn keyword cConstant InversionVelObsEnum
+syn keyword cConstant InversionVxObsEnum
+syn keyword cConstant InversionVyObsEnum
+syn keyword cConstant LevelsetfunctionSlopeXEnum
+syn keyword cConstant LevelsetfunctionSlopeYEnum
+syn keyword cConstant LevelsetObservationEnum
+syn keyword cConstant LoadingforceXEnum
+syn keyword cConstant LoadingforceYEnum
+syn keyword cConstant LoadingforceZEnum
+syn keyword cConstant MaskOceanLevelsetEnum
+syn keyword cConstant MaskIceLevelsetEnum
+syn keyword cConstant MaskIceRefLevelsetEnum
+syn keyword cConstant MasstransportSpcthicknessEnum
+syn keyword cConstant MaterialsRheologyBEnum
+syn keyword cConstant MaterialsRheologyBbarEnum
+syn keyword cConstant MaterialsRheologyEEnum
+syn keyword cConstant MaterialsRheologyEbarEnum
+syn keyword cConstant MaterialsRheologyEcEnum
+syn keyword cConstant MaterialsRheologyEcbarEnum
+syn keyword cConstant MaterialsRheologyEsEnum
+syn keyword cConstant MaterialsRheologyEsbarEnum
+syn keyword cConstant MaterialsRheologyNEnum
+syn keyword cConstant MeshScaleFactorEnum
+syn keyword cConstant MeshVertexonbaseEnum
+syn keyword cConstant MeshVertexonboundaryEnum
+syn keyword cConstant MeshVertexonsurfaceEnum
+syn keyword cConstant MisfitEnum
+syn keyword cConstant MovingFrontalVxEnum
+syn keyword cConstant MovingFrontalVyEnum
+syn keyword cConstant NeumannfluxEnum
+syn keyword cConstant NewDamageEnum
+syn keyword cConstant NodeEnum
+syn keyword cConstant OmegaAbsGradientEnum
+syn keyword cConstant OceantransportSpcbottompressureEnum
+syn keyword cConstant OceantransportSpcstrEnum
+syn keyword cConstant OceantransportSpcdslEnum
+syn keyword cConstant P0Enum
+syn keyword cConstant P1Enum
+syn keyword cConstant PartitioningEnum
+syn keyword cConstant PressureEnum
+syn keyword cConstant RadarEnum
+syn keyword cConstant RadarAttenuationMacGregorEnum
+syn keyword cConstant RadarAttenuationWolffEnum
+syn keyword cConstant RadarIcePeriodEnum
+syn keyword cConstant RadarPowerMacGregorEnum
+syn keyword cConstant RadarPowerWolffEnum
+syn keyword cConstant RheologyBAbsGradientEnum
+syn keyword cConstant RheologyBInitialguessEnum
+syn keyword cConstant RheologyBInitialguessMisfitEnum
+syn keyword cConstant RheologyBbarAbsGradientEnum
+syn keyword cConstant SampleEnum
+syn keyword cConstant SampleOldEnum
+syn keyword cConstant SampleNoiseEnum
+syn keyword cConstant SamplingBetaEnum
+syn keyword cConstant SamplingKappaEnum
+syn keyword cConstant SamplingPhiEnum
+syn keyword cConstant SamplingTauEnum
+syn keyword cConstant SealevelEnum
+syn keyword cConstant SealevelGRDEnum
+syn keyword cConstant SatGraviGRDEnum
+syn keyword cConstant SealevelBarystaticMaskEnum
+syn keyword cConstant SealevelBarystaticIceMaskEnum
+syn keyword cConstant SealevelBarystaticIceWeightsEnum
+syn keyword cConstant SealevelBarystaticIceAreaEnum
+syn keyword cConstant SealevelBarystaticIceLatbarEnum
+syn keyword cConstant SealevelBarystaticIceLongbarEnum
+syn keyword cConstant SealevelBarystaticIceLoadEnum
+syn keyword cConstant SealevelBarystaticHydroMaskEnum
+syn keyword cConstant SealevelBarystaticHydroWeightsEnum
+syn keyword cConstant SealevelBarystaticHydroAreaEnum
+syn keyword cConstant SealevelBarystaticHydroLatbarEnum
+syn keyword cConstant SealevelBarystaticHydroLongbarEnum
+syn keyword cConstant SealevelBarystaticHydroLoadEnum
+syn keyword cConstant SealevelBarystaticBpMaskEnum
+syn keyword cConstant SealevelBarystaticBpWeightsEnum
+syn keyword cConstant SealevelBarystaticBpAreaEnum
+syn keyword cConstant SealevelBarystaticBpLoadEnum
+syn keyword cConstant SealevelBarystaticOceanMaskEnum
+syn keyword cConstant SealevelBarystaticOceanWeightsEnum
+syn keyword cConstant SealevelBarystaticOceanAreaEnum
+syn keyword cConstant SealevelBarystaticOceanLatbarEnum
+syn keyword cConstant SealevelBarystaticOceanLongbarEnum
+syn keyword cConstant SealevelBarystaticOceanLoadEnum
+syn keyword cConstant SealevelNEsaEnum
+syn keyword cConstant SealevelNEsaRateEnum
+syn keyword cConstant SealevelRSLEnum
+syn keyword cConstant BslcEnum
+syn keyword cConstant BslcIceEnum
+syn keyword cConstant BslcHydroEnum
+syn keyword cConstant BslcOceanEnum
+syn keyword cConstant BslcRateEnum
+syn keyword cConstant GmtslcEnum
+syn keyword cConstant SealevelRSLBarystaticEnum
+syn keyword cConstant SealevelRSLRateEnum
+syn keyword cConstant SealevelUGrdEnum
+syn keyword cConstant SealevelNGrdEnum
+syn keyword cConstant SealevelUEastEsaEnum
+syn keyword cConstant SealevelUNorthEsaEnum
+syn keyword cConstant SealevelchangeIndicesEnum
+syn keyword cConstant SealevelchangeConvolutionVerticesEnum
+syn keyword cConstant SealevelchangeAlphaIndexEnum
+syn keyword cConstant SealevelchangeAzimuthIndexEnum
+syn keyword cConstant SealevelchangeGrotEnum
+syn keyword cConstant SealevelchangeGSatGravirotEnum
+syn keyword cConstant SealevelchangeGUrotEnum
+syn keyword cConstant SealevelchangeGNrotEnum
+syn keyword cConstant SealevelchangeGErotEnum
+syn keyword cConstant SealevelchangeAlphaIndexOceanEnum
+syn keyword cConstant SealevelchangeAlphaIndexIceEnum
+syn keyword cConstant SealevelchangeAlphaIndexHydroEnum
+syn keyword cConstant SealevelchangeAzimuthIndexOceanEnum
+syn keyword cConstant SealevelchangeAzimuthIndexIceEnum
+syn keyword cConstant SealevelchangeAzimuthIndexHydroEnum
+syn keyword cConstant SealevelchangeViscousRSLEnum
+syn keyword cConstant SealevelchangeViscousSGEnum
+syn keyword cConstant SealevelchangeViscousUEnum
+syn keyword cConstant SealevelchangeViscousNEnum
+syn keyword cConstant SealevelchangeViscousEEnum
+syn keyword cConstant CouplingTransferCountEnum
+syn keyword cConstant SedimentHeadEnum
+syn keyword cConstant SedimentHeadOldEnum
+syn keyword cConstant SedimentHeadSubstepEnum
+syn keyword cConstant SedimentHeadTransientEnum
+syn keyword cConstant SedimentHeadResidualEnum
+syn keyword cConstant SedimentHeadStackedEnum
+syn keyword cConstant SigmaNNEnum
+syn keyword cConstant SigmaVMEnum
+syn keyword cConstant SmbAccumulatedECEnum
+syn keyword cConstant SmbAccumulatedMassBalanceEnum
+syn keyword cConstant SmbAccumulatedMeltEnum
+syn keyword cConstant SmbAccumulatedPrecipitationEnum
+syn keyword cConstant SmbAccumulatedRainEnum
+syn keyword cConstant SmbAccumulatedRefreezeEnum
+syn keyword cConstant SmbAccumulatedRunoffEnum
+syn keyword cConstant SmbAlbedoEnum
+syn keyword cConstant SmbAlbedoInitEnum
+syn keyword cConstant SmbAlbedoSnowEnum
+syn keyword cConstant SmbAlbedoSnowInitEnum
+syn keyword cConstant SmbAEnum
+syn keyword cConstant SmbAdiffEnum
+syn keyword cConstant SmbAValueEnum
+syn keyword cConstant SmbAccumulationEnum
+syn keyword cConstant SmbAdiffiniEnum
+syn keyword cConstant SmbAiniEnum
+syn keyword cConstant SmbARMANoiseEnum
+syn keyword cConstant SmbBasinsIdEnum
+syn keyword cConstant SmbBMaxEnum
+syn keyword cConstant SmbBMinEnum
+syn keyword cConstant SmbBNegEnum
+syn keyword cConstant SmbBPosEnum
+syn keyword cConstant SmbCEnum
+syn keyword cConstant SmbCcsnowValueEnum
+syn keyword cConstant SmbCciceValueEnum
+syn keyword cConstant SmbCotValueEnum
+syn keyword cConstant SmbDEnum
+syn keyword cConstant SmbDailyairdensityEnum
+syn keyword cConstant SmbDailyairhumidityEnum
+syn keyword cConstant SmbDailydlradiationEnum
+syn keyword cConstant SmbDailydsradiationEnum
+syn keyword cConstant SmbDailypressureEnum
+syn keyword cConstant SmbDailyrainfallEnum
+syn keyword cConstant SmbDailysnowfallEnum
+syn keyword cConstant SmbDailytemperatureEnum
+syn keyword cConstant SmbDailywindspeedEnum
+syn keyword cConstant SmbDiniEnum
+syn keyword cConstant SmbDlwrfEnum
+syn keyword cConstant SmbDulwrfValueEnum
+syn keyword cConstant SmbDswrfEnum
+syn keyword cConstant SmbDswdiffrfEnum
+syn keyword cConstant SmbDzAddEnum
+syn keyword cConstant SmbDzEnum
+syn keyword cConstant SmbDzMinEnum
+syn keyword cConstant SmbDzTopEnum
+syn keyword cConstant SmbDziniEnum
+syn keyword cConstant SmbEAirEnum
+syn keyword cConstant SmbECEnum
+syn keyword cConstant SmbECDtEnum
+syn keyword cConstant SmbECiniEnum
+syn keyword cConstant SmbElaEnum
+syn keyword cConstant SmbEvaporationEnum
+syn keyword cConstant SmbFACEnum
+syn keyword cConstant SmbGdnEnum
+syn keyword cConstant SmbGdniniEnum
+syn keyword cConstant SmbGspEnum
+syn keyword cConstant SmbGspiniEnum
+syn keyword cConstant SmbHIceEnum
+syn keyword cConstant SmbHIceInitEnum
+syn keyword cConstant SmbHSnowEnum
+syn keyword cConstant SmbHSnowInitEnum
+syn keyword cConstant SmbHrefEnum
+syn keyword cConstant SmbIsInitializedEnum
+syn keyword cConstant SmbMAddEnum
+syn keyword cConstant SmbMassBalanceEnum
+syn keyword cConstant SmbMassBalanceSnowEnum
+syn keyword cConstant SmbMassBalanceIceEnum
+syn keyword cConstant SmbMassBalanceSemicEnum
+syn keyword cConstant SmbMassBalanceSubstepEnum
+syn keyword cConstant SmbMassBalanceTransientEnum
+syn keyword cConstant SmbMaskEnum
+syn keyword cConstant SmbMeanLHFEnum
+syn keyword cConstant SmbMeanSHFEnum
+syn keyword cConstant SmbMeanULWEnum
+syn keyword cConstant SmbMeltEnum
+syn keyword cConstant SmbMonthlytemperaturesEnum
+syn keyword cConstant SmbMonthlydsradiationEnum
+syn keyword cConstant SmbMonthlydlradiationEnum
+syn keyword cConstant SmbMonthlywindspeedEnum
+syn keyword cConstant SmbMonthlyairhumidityEnum
+syn keyword cConstant SmbMSurfEnum
+syn keyword cConstant SmbNetLWEnum
+syn keyword cConstant SmbNetSWEnum
+syn keyword cConstant SmbPAirEnum
+syn keyword cConstant SmbPEnum
+syn keyword cConstant SmbPddfacIceEnum
+syn keyword cConstant SmbPddfacSnowEnum
+syn keyword cConstant SmbPrecipitationEnum
+syn keyword cConstant SmbPrecipitationsAnomalyEnum
+syn keyword cConstant SmbDsradiationAnomalyEnum
+syn keyword cConstant SmbDlradiationAnomalyEnum
+syn keyword cConstant SmbWindspeedAnomalyEnum
+syn keyword cConstant SmbAirhumidityAnomalyEnum
+syn keyword cConstant SmbPrecipitationsLgmEnum
+syn keyword cConstant SmbPrecipitationsPresentdayEnum
+syn keyword cConstant SmbPrecipitationsReconstructedEnum
+syn keyword cConstant SmbRainEnum
+syn keyword cConstant SmbReEnum
+syn keyword cConstant SmbRefreezeEnum
+syn keyword cConstant SmbReiniEnum
+syn keyword cConstant SmbRunoffEnum
+syn keyword cConstant SmbRunoffSubstepEnum
+syn keyword cConstant SmbRunoffTransientEnum
+syn keyword cConstant SmbS0gcmEnum
+syn keyword cConstant SmbS0pEnum
+syn keyword cConstant SmbS0tEnum
+syn keyword cConstant SmbSemicQmrEnum
+syn keyword cConstant SmbSemicQmrInitEnum
+syn keyword cConstant SmbSizeiniEnum
+syn keyword cConstant SmbSmbCorrEnum
+syn keyword cConstant SmbSmbrefEnum
+syn keyword cConstant SmbSzaValueEnum
+syn keyword cConstant SmbSummerMeltEnum
+syn keyword cConstant SmbSummerAlbedoEnum
+syn keyword cConstant SmbSnowheightEnum
+syn keyword cConstant SmbTEnum
+syn keyword cConstant SmbTaEnum
+syn keyword cConstant SmbTampEnum
+syn keyword cConstant SmbTeValueEnum
+syn keyword cConstant SmbTemperaturesAnomalyEnum
+syn keyword cConstant SmbTemperaturesLgmEnum
+syn keyword cConstant SmbTemperaturesPresentdayEnum
+syn keyword cConstant SmbTemperaturesReconstructedEnum
+syn keyword cConstant SmbTiniEnum
+syn keyword cConstant SmbTmeanEnum
+syn keyword cConstant SmbTzEnum
+syn keyword cConstant SmbValuesAutoregressionEnum
+syn keyword cConstant SmbValuesMovingaverageEnum
+syn keyword cConstant SmbVEnum
+syn keyword cConstant SmbVmeanEnum
+syn keyword cConstant SmbVzEnum
+syn keyword cConstant SmbWEnum
+syn keyword cConstant SmbWAddEnum
+syn keyword cConstant SmbWiniEnum
+syn keyword cConstant SmbZMaxEnum
+syn keyword cConstant SmbZMinEnum
+syn keyword cConstant SmbZTopEnum
+syn keyword cConstant SmbZYEnum
+syn keyword cConstant SolidearthExternalDisplacementEastRateEnum
+syn keyword cConstant SolidearthExternalDisplacementNorthRateEnum
+syn keyword cConstant SolidearthExternalDisplacementUpRateEnum
+syn keyword cConstant SolidearthExternalGeoidRateEnum
+syn keyword cConstant StochasticForcingDefaultIdEnum
+syn keyword cConstant StrainRateeffectiveEnum
+syn keyword cConstant StrainRateparallelEnum
+syn keyword cConstant StrainRateperpendicularEnum
+syn keyword cConstant StrainRatexxEnum
+syn keyword cConstant StrainRatexyEnum
+syn keyword cConstant StrainRatexzEnum
+syn keyword cConstant StrainRateyyEnum
+syn keyword cConstant StrainRateyzEnum
+syn keyword cConstant StrainRatezzEnum
+syn keyword cConstant StressMaxPrincipalEnum
+syn keyword cConstant StressTensorxxEnum
+syn keyword cConstant StressTensorxyEnum
+syn keyword cConstant StressTensorxzEnum
+syn keyword cConstant StressTensoryyEnum
+syn keyword cConstant StressTensoryzEnum
+syn keyword cConstant StressTensorzzEnum
+syn keyword cConstant SubglacialdischargeARMANoiseEnum
+syn keyword cConstant SubglacialdischargeValuesAutoregressionEnum
+syn keyword cConstant SubglacialdischargeValuesMovingaverageEnum
+syn keyword cConstant SurfaceAbsMisfitEnum
+syn keyword cConstant SurfaceAbsVelMisfitEnum
+syn keyword cConstant AreaEnum
+syn keyword cConstant SealevelAreaEnum
+syn keyword cConstant SurfaceAreaEnum
+syn keyword cConstant SurfaceAverageVelMisfitEnum
+syn keyword cConstant SurfaceCrevasseEnum
+syn keyword cConstant SurfaceEnum
+syn keyword cConstant SurfaceOldEnum
+syn keyword cConstant SurfaceLogVelMisfitEnum
+syn keyword cConstant SurfaceLogVxVyMisfitEnum
+syn keyword cConstant SurfaceObservationEnum
+syn keyword cConstant SurfaceRelVelMisfitEnum
+syn keyword cConstant SurfaceSlopeXEnum
+syn keyword cConstant SurfaceSlopeYEnum
+syn keyword cConstant TemperatureEnum
+syn keyword cConstant TemperaturePDDEnum
+syn keyword cConstant TemperaturePicardEnum
+syn keyword cConstant TemperatureSEMICEnum
+syn keyword cConstant ThermalforcingARMANoiseEnum
+syn keyword cConstant ThermalForcingEnum
+syn keyword cConstant ThermalforcingValuesAutoregressionEnum
+syn keyword cConstant ThermalforcingValuesMovingaverageEnum
+syn keyword cConstant ThermalSpctemperatureEnum
+syn keyword cConstant ThicknessAbsGradientEnum
+syn keyword cConstant ThicknessAbsMisfitEnum
+syn keyword cConstant ThicknessAcrossGradientEnum
+syn keyword cConstant ThicknessAlongGradientEnum
+syn keyword cConstant ThicknessEnum
+syn keyword cConstant ThicknessOldEnum
+syn keyword cConstant ThicknessPositiveEnum
+syn keyword cConstant ThicknessResidualEnum
+syn keyword cConstant TransientAccumulatedDeltaIceThicknessEnum
+syn keyword cConstant VelEnum
+syn keyword cConstant VxAverageEnum
+syn keyword cConstant VxBaseEnum
+syn keyword cConstant VxDebrisEnum
+syn keyword cConstant VxEnum
+syn keyword cConstant VxMeshEnum
+syn keyword cConstant VxObsEnum
+syn keyword cConstant VxShearEnum
+syn keyword cConstant VxSurfaceEnum
+syn keyword cConstant VyAverageEnum
+syn keyword cConstant VyBaseEnum
+syn keyword cConstant VyDebrisEnum
+syn keyword cConstant VyEnum
+syn keyword cConstant VyMeshEnum
+syn keyword cConstant VyObsEnum
+syn keyword cConstant VyShearEnum
+syn keyword cConstant VySurfaceEnum
+syn keyword cConstant VzEnum
+syn keyword cConstant VzFSEnum
+syn keyword cConstant VzHOEnum
+syn keyword cConstant VzMeshEnum
+syn keyword cConstant VzSSAEnum
+syn keyword cConstant WaterColumnOldEnum
+syn keyword cConstant WatercolumnEnum
+syn keyword cConstant WaterfractionDrainageEnum
+syn keyword cConstant WaterfractionDrainageIntegratedEnum
+syn keyword cConstant WaterfractionEnum
+syn keyword cConstant WaterheightEnum
+syn keyword cConstant WaterPressureArmaPerturbationEnum
+syn keyword cConstant WaterPressureValuesAutoregressionEnum
+syn keyword cConstant WaterPressureValuesMovingaverageEnum
+syn keyword cConstant WeightsLevelsetObservationEnum
+syn keyword cConstant WeightsMeltObservationEnum
+syn keyword cConstant WeightsVxObservationEnum
+syn keyword cConstant WeightsVyObservationEnum
+syn keyword cConstant WeightsSurfaceObservationEnum
+syn keyword cConstant OldAccumulatedDeltaBottomPressureEnum
+syn keyword cConstant OldAccumulatedDeltaIceThicknessEnum
+syn keyword cConstant OldAccumulatedDeltaTwsEnum
+syn keyword cConstant Outputdefinition1Enum
+syn keyword cConstant Outputdefinition10Enum
+syn keyword cConstant Outputdefinition11Enum
+syn keyword cConstant Outputdefinition12Enum
+syn keyword cConstant Outputdefinition13Enum
+syn keyword cConstant Outputdefinition14Enum
+syn keyword cConstant Outputdefinition15Enum
+syn keyword cConstant Outputdefinition16Enum
+syn keyword cConstant Outputdefinition17Enum
+syn keyword cConstant Outputdefinition18Enum
+syn keyword cConstant Outputdefinition19Enum
+syn keyword cConstant Outputdefinition20Enum
+syn keyword cConstant Outputdefinition21Enum
+syn keyword cConstant Outputdefinition22Enum
+syn keyword cConstant Outputdefinition23Enum
+syn keyword cConstant Outputdefinition24Enum
+syn keyword cConstant Outputdefinition25Enum
+syn keyword cConstant Outputdefinition26Enum
+syn keyword cConstant Outputdefinition27Enum
+syn keyword cConstant Outputdefinition28Enum
+syn keyword cConstant Outputdefinition29Enum
+syn keyword cConstant Outputdefinition2Enum
+syn keyword cConstant Outputdefinition30Enum
+syn keyword cConstant Outputdefinition31Enum
+syn keyword cConstant Outputdefinition32Enum
+syn keyword cConstant Outputdefinition33Enum
+syn keyword cConstant Outputdefinition34Enum
+syn keyword cConstant Outputdefinition35Enum
+syn keyword cConstant Outputdefinition36Enum
+syn keyword cConstant Outputdefinition37Enum
+syn keyword cConstant Outputdefinition38Enum
+syn keyword cConstant Outputdefinition39Enum
+syn keyword cConstant Outputdefinition3Enum
+syn keyword cConstant Outputdefinition40Enum
+syn keyword cConstant Outputdefinition41Enum
+syn keyword cConstant Outputdefinition42Enum
+syn keyword cConstant Outputdefinition43Enum
+syn keyword cConstant Outputdefinition44Enum
+syn keyword cConstant Outputdefinition45Enum
+syn keyword cConstant Outputdefinition46Enum
+syn keyword cConstant Outputdefinition47Enum
+syn keyword cConstant Outputdefinition48Enum
+syn keyword cConstant Outputdefinition49Enum
+syn keyword cConstant Outputdefinition4Enum
+syn keyword cConstant Outputdefinition50Enum
+syn keyword cConstant Outputdefinition51Enum
+syn keyword cConstant Outputdefinition52Enum
+syn keyword cConstant Outputdefinition53Enum
+syn keyword cConstant Outputdefinition54Enum
+syn keyword cConstant Outputdefinition55Enum
+syn keyword cConstant Outputdefinition56Enum
+syn keyword cConstant Outputdefinition57Enum
+syn keyword cConstant Outputdefinition58Enum
+syn keyword cConstant Outputdefinition59Enum
+syn keyword cConstant Outputdefinition5Enum
+syn keyword cConstant Outputdefinition60Enum
+syn keyword cConstant Outputdefinition61Enum
+syn keyword cConstant Outputdefinition62Enum
+syn keyword cConstant Outputdefinition63Enum
+syn keyword cConstant Outputdefinition64Enum
+syn keyword cConstant Outputdefinition65Enum
+syn keyword cConstant Outputdefinition66Enum
+syn keyword cConstant Outputdefinition67Enum
+syn keyword cConstant Outputdefinition68Enum
+syn keyword cConstant Outputdefinition69Enum
+syn keyword cConstant Outputdefinition6Enum
+syn keyword cConstant Outputdefinition70Enum
+syn keyword cConstant Outputdefinition71Enum
+syn keyword cConstant Outputdefinition72Enum
+syn keyword cConstant Outputdefinition73Enum
+syn keyword cConstant Outputdefinition74Enum
+syn keyword cConstant Outputdefinition75Enum
+syn keyword cConstant Outputdefinition76Enum
+syn keyword cConstant Outputdefinition77Enum
+syn keyword cConstant Outputdefinition78Enum
+syn keyword cConstant Outputdefinition79Enum
+syn keyword cConstant Outputdefinition7Enum
+syn keyword cConstant Outputdefinition80Enum
+syn keyword cConstant Outputdefinition81Enum
+syn keyword cConstant Outputdefinition82Enum
+syn keyword cConstant Outputdefinition83Enum
+syn keyword cConstant Outputdefinition84Enum
+syn keyword cConstant Outputdefinition85Enum
+syn keyword cConstant Outputdefinition86Enum
+syn keyword cConstant Outputdefinition87Enum
+syn keyword cConstant Outputdefinition88Enum
+syn keyword cConstant Outputdefinition89Enum
+syn keyword cConstant Outputdefinition8Enum
+syn keyword cConstant Outputdefinition90Enum
+syn keyword cConstant Outputdefinition91Enum
+syn keyword cConstant Outputdefinition92Enum
+syn keyword cConstant Outputdefinition93Enum
+syn keyword cConstant Outputdefinition94Enum
+syn keyword cConstant Outputdefinition95Enum
+syn keyword cConstant Outputdefinition96Enum
+syn keyword cConstant Outputdefinition97Enum
+syn keyword cConstant Outputdefinition98Enum
+syn keyword cConstant Outputdefinition99Enum
+syn keyword cConstant Outputdefinition9Enum
+syn keyword cConstant Outputdefinition100Enum
+syn keyword cConstant InputsENDEnum
+syn keyword cConstant AbsoluteEnum
+syn keyword cConstant AdaptiveTimesteppingEnum
+syn keyword cConstant AdjointBalancethickness2AnalysisEnum
+syn keyword cConstant AdjointBalancethicknessAnalysisEnum
+syn keyword cConstant AdjointHorizAnalysisEnum
+syn keyword cConstant AgeAnalysisEnum
+syn keyword cConstant AggressiveMigrationEnum
+syn keyword cConstant AmrBamgEnum
+syn keyword cConstant AmrNeopzEnum
+syn keyword cConstant AndroidFrictionCoefficientEnum
+syn keyword cConstant ArrheniusEnum
+syn keyword cConstant AutodiffJacobianEnum
+syn keyword cConstant Balancethickness2AnalysisEnum
+syn keyword cConstant Balancethickness2SolutionEnum
+syn keyword cConstant BalancethicknessAnalysisEnum
+syn keyword cConstant BalancethicknessApparentMassbalanceEnum
+syn keyword cConstant BalancethicknessSoftAnalysisEnum
+syn keyword cConstant BalancethicknessSoftSolutionEnum
+syn keyword cConstant BalancethicknessSolutionEnum
+syn keyword cConstant BalancevelocityAnalysisEnum
+syn keyword cConstant BalancevelocitySolutionEnum
+syn keyword cConstant BasalforcingsIsmip6Enum
+syn keyword cConstant BasalforcingsPicoEnum
+syn keyword cConstant BeckmannGoosseFloatingMeltRateEnum
+syn keyword cConstant BedSlopeSolutionEnum
+syn keyword cConstant BoolExternalResultEnum
+syn keyword cConstant BoolInputEnum
+syn keyword cConstant IntInputEnum
+syn keyword cConstant DoubleInputEnum
+syn keyword cConstant BoolParamEnum
+syn keyword cConstant BoundaryEnum
+syn keyword cConstant BuddJackaEnum
+syn keyword cConstant CalvingDev2Enum
+syn keyword cConstant CalvingHabEnum
+syn keyword cConstant CalvingLevermannEnum
+syn keyword cConstant CalvingTestEnum
+syn keyword cConstant CalvingParameterizationEnum
+syn keyword cConstant CalvingCalvingMIPEnum
+syn keyword cConstant CalvingVonmisesEnum
+syn keyword cConstant CalvingVonmisesADEnum
+syn keyword cConstant CalvingPollardEnum
+syn keyword cConstant CfdragcoeffabsgradEnum
+syn keyword cConstant CfdragcoeffabsgradtransientEnum
+syn keyword cConstant CfrheologybbarabsgradEnum
+syn keyword cConstant CfrheologybbarabsgradtransientEnum
+syn keyword cConstant CfsurfacelogvelEnum
+syn keyword cConstant CfsurfacesquareEnum
+syn keyword cConstant CfsurfacesquaretransientEnum
+syn keyword cConstant CflevelsetmisfitEnum
+syn keyword cConstant ChannelEnum
+syn keyword cConstant ChannelAreaEnum
+syn keyword cConstant ChannelAreaOldEnum
+syn keyword cConstant ChannelDischargeEnum
+syn keyword cConstant ClosedEnum
+syn keyword cConstant ColinearEnum
+syn keyword cConstant ConstraintsEnum
+syn keyword cConstant ContactEnum
+syn keyword cConstant ContourEnum
+syn keyword cConstant ContoursEnum
+syn keyword cConstant ControlInputEnum
+syn keyword cConstant ControlInputGradEnum
+syn keyword cConstant ControlInputMaxsEnum
+syn keyword cConstant ControlInputMinsEnum
+syn keyword cConstant ControlInputValuesEnum
+syn keyword cConstant ControlParamEnum
+syn keyword cConstant CrouzeixRaviartEnum
+syn keyword cConstant CuffeyEnum
+syn keyword cConstant CuffeyTemperateEnum
+syn keyword cConstant DamageEvolutionAnalysisEnum
+syn keyword cConstant DamageEvolutionSolutionEnum
+syn keyword cConstant DataSetEnum
+syn keyword cConstant DataSetParamEnum
+syn keyword cConstant DatasetInputEnum
+syn keyword cConstant DebrisAnalysisEnum
+syn keyword cConstant DebrisSolutionEnum
+syn keyword cConstant DefaultAnalysisEnum
+syn keyword cConstant DefaultCalvingEnum
+syn keyword cConstant DenseEnum
+syn keyword cConstant DependentObjectEnum
+syn keyword cConstant DepthAverageAnalysisEnum
+syn keyword cConstant DeviatoricStressErrorEstimatorEnum
+syn keyword cConstant DivergenceEnum
+syn keyword cConstant Domain3DsurfaceEnum
+syn keyword cConstant DoubleArrayInputEnum
+syn keyword cConstant ArrayInputEnum
+syn keyword cConstant IntArrayInputEnum
+syn keyword cConstant DoubleExternalResultEnum
+syn keyword cConstant DoubleMatArrayParamEnum
+syn keyword cConstant DoubleMatExternalResultEnum
+syn keyword cConstant DoubleMatParamEnum
+syn keyword cConstant DoubleParamEnum
+syn keyword cConstant DoubleVecParamEnum
+syn keyword cConstant ElementEnum
+syn keyword cConstant ElementHookEnum
+syn keyword cConstant ElementSIdEnum
+syn keyword cConstant EnthalpyAnalysisEnum
+syn keyword cConstant EsaAnalysisEnum
+syn keyword cConstant EsaSolutionEnum
+syn keyword cConstant EsaTransitionsEnum
+syn keyword cConstant ExternalResultEnum
+syn keyword cConstant ExtrapolationAnalysisEnum
+syn keyword cConstant ExtrudeFromBaseAnalysisEnum
+syn keyword cConstant ExtrudeFromTopAnalysisEnum
+syn keyword cConstant FSApproximationEnum
+syn keyword cConstant FSSolverEnum
+syn keyword cConstant FSpressureEnum
+syn keyword cConstant FSvelocityEnum
+syn keyword cConstant FemModelEnum
+syn keyword cConstant FileParamEnum
+syn keyword cConstant FixedTimesteppingEnum
+syn keyword cConstant FloatingAreaEnum
+syn keyword cConstant FloatingAreaScaledEnum
+syn keyword cConstant FloatingMeltRateEnum
+syn keyword cConstant FreeEnum
+syn keyword cConstant FreeSurfaceBaseAnalysisEnum
+syn keyword cConstant FreeSurfaceTopAnalysisEnum
+syn keyword cConstant FrontalForcingsDefaultEnum
+syn keyword cConstant FrontalForcingsRignotEnum
+syn keyword cConstant FrontalForcingsRignotarmaEnum
+syn keyword cConstant FsetEnum
+syn keyword cConstant FullMeltOnPartiallyFloatingEnum
+syn keyword cConstant GLheightadvectionAnalysisEnum
+syn keyword cConstant GaussPentaEnum
+syn keyword cConstant GaussSegEnum
+syn keyword cConstant GaussTetraEnum
+syn keyword cConstant GaussTriaEnum
+syn keyword cConstant GenericOptionEnum
+syn keyword cConstant GenericParamEnum
+syn keyword cConstant GenericExternalResultEnum
+syn keyword cConstant Gradient1Enum
+syn keyword cConstant Gradient2Enum
+syn keyword cConstant Gradient3Enum
+syn keyword cConstant Gradient4Enum
+syn keyword cConstant GroundedAreaEnum
+syn keyword cConstant GroundedAreaScaledEnum
+syn keyword cConstant GroundingOnlyEnum
+syn keyword cConstant GroundinglineMassFluxEnum
+syn keyword cConstant GsetEnum
+syn keyword cConstant GslEnum
+syn keyword cConstant HOApproximationEnum
+syn keyword cConstant HOFSApproximationEnum
+syn keyword cConstant HookEnum
+syn keyword cConstant HydrologyArmapwAnalysisEnum
+syn keyword cConstant HydrologyarmapwEnum
+syn keyword cConstant HydrologyDCEfficientAnalysisEnum
+syn keyword cConstant HydrologyDCInefficientAnalysisEnum
+syn keyword cConstant HydrologyGlaDSAnalysisEnum
+syn keyword cConstant HydrologyGlaDSEnum
+syn keyword cConstant HydrologyPismAnalysisEnum
+syn keyword cConstant HydrologyShaktiAnalysisEnum
+syn keyword cConstant HydrologyShreveAnalysisEnum
+syn keyword cConstant HydrologySolutionEnum
+syn keyword cConstant HydrologySubstepsEnum
+syn keyword cConstant HydrologySubTimeEnum
+syn keyword cConstant HydrologydcEnum
+syn keyword cConstant HydrologypismEnum
+syn keyword cConstant HydrologyshaktiEnum
+syn keyword cConstant HydrologyshreveEnum
+syn keyword cConstant IceMassEnum
+syn keyword cConstant IceMassScaledEnum
+syn keyword cConstant IceVolumeAboveFloatationEnum
+syn keyword cConstant IceVolumeAboveFloatationScaledEnum
+syn keyword cConstant IceVolumeEnum
+syn keyword cConstant IceVolumeScaledEnum
+syn keyword cConstant IcefrontMassFluxEnum
+syn keyword cConstant IcefrontMassFluxLevelsetEnum
+syn keyword cConstant IncrementalEnum
+syn keyword cConstant IndexedEnum
+syn keyword cConstant IntExternalResultEnum
+syn keyword cConstant ElementInputEnum
+syn keyword cConstant IntMatExternalResultEnum
+syn keyword cConstant IntMatParamEnum
+syn keyword cConstant IntParamEnum
+syn keyword cConstant IntVecParamEnum
+syn keyword cConstant InputsEnum
+syn keyword cConstant InternalEnum
+syn keyword cConstant IntersectEnum
+syn keyword cConstant InversionVzObsEnum
+syn keyword cConstant JEnum
+syn keyword cConstant L1L2ApproximationEnum
+syn keyword cConstant MOLHOApproximationEnum
+syn keyword cConstant L2ProjectionBaseAnalysisEnum
+syn keyword cConstant L2ProjectionEPLAnalysisEnum
+syn keyword cConstant LACrouzeixRaviartEnum
+syn keyword cConstant LATaylorHoodEnum
+syn keyword cConstant LambdaSEnum
+syn keyword cConstant LevelsetAnalysisEnum
+syn keyword cConstant LevelsetfunctionPicardEnum
+syn keyword cConstant LinearFloatingMeltRateEnum
+syn keyword cConstant LinearFloatingMeltRatearmaEnum
+syn keyword cConstant LliboutryDuvalEnum
+syn keyword cConstant LoadsEnum
+syn keyword cConstant LoveAnalysisEnum
+syn keyword cConstant LoveHfEnum
+syn keyword cConstant LoveHtEnum
+syn keyword cConstant LoveKernelsImagEnum
+syn keyword cConstant LoveKernelsRealEnum
+syn keyword cConstant LoveKfEnum
+syn keyword cConstant LoveKtEnum
+syn keyword cConstant LoveLfEnum
+syn keyword cConstant LoveLtEnum
+syn keyword cConstant LoveTidalHtEnum
+syn keyword cConstant LoveTidalKtEnum
+syn keyword cConstant LoveTidalLtEnum
+syn keyword cConstant LovePMTF1tEnum
+syn keyword cConstant LovePMTF2tEnum
+syn keyword cConstant LoveYiEnum
+syn keyword cConstant LoveRhsEnum
+syn keyword cConstant LoveSolutionEnum
+syn keyword cConstant MINIEnum
+syn keyword cConstant MINIcondensedEnum
+syn keyword cConstant MantlePlumeGeothermalFluxEnum
+syn keyword cConstant MassFluxEnum
+syn keyword cConstant MassconEnum
+syn keyword cConstant MassconaxpbyEnum
+syn keyword cConstant MassfluxatgateEnum
+syn keyword cConstant MasstransportAnalysisEnum
+syn keyword cConstant MasstransportSolutionEnum
+syn keyword cConstant MatdamageiceEnum
+syn keyword cConstant MatenhancediceEnum
+syn keyword cConstant MaterialsEnum
+syn keyword cConstant MatestarEnum
+syn keyword cConstant MaticeEnum
+syn keyword cConstant MatlithoEnum
+syn keyword cConstant MathydroEnum
+syn keyword cConstant MatrixParamEnum
+syn keyword cConstant MaxAbsVxEnum
+syn keyword cConstant MaxAbsVyEnum
+syn keyword cConstant MaxAbsVzEnum
+syn keyword cConstant MaxDivergenceEnum
+syn keyword cConstant MaxVelEnum
+syn keyword cConstant MaxVxEnum
+syn keyword cConstant MaxVyEnum
+syn keyword cConstant MaxVzEnum
+syn keyword cConstant MelangeEnum
+syn keyword cConstant MeltingAnalysisEnum
+syn keyword cConstant MeshElementsEnum
+syn keyword cConstant MeshXEnum
+syn keyword cConstant MeshYEnum
+syn keyword cConstant MinVelEnum
+syn keyword cConstant MinVxEnum
+syn keyword cConstant MinVyEnum
+syn keyword cConstant MinVzEnum
+syn keyword cConstant MismipFloatingMeltRateEnum
+syn keyword cConstant MoulinEnum
+syn keyword cConstant MpiDenseEnum
+syn keyword cConstant MpiEnum
+syn keyword cConstant MpiSparseEnum
+syn keyword cConstant MumpsEnum
+syn keyword cConstant NoFrictionOnPartiallyFloatingEnum
+syn keyword cConstant NoMeltOnPartiallyFloatingEnum
+syn keyword cConstant NodalEnum
+syn keyword cConstant NodalvalueEnum
+syn keyword cConstant NodeSIdEnum
+syn keyword cConstant NoneApproximationEnum
+syn keyword cConstant NoneEnum
+syn keyword cConstant NumberedcostfunctionEnum
+syn keyword cConstant NyeCO2Enum
+syn keyword cConstant NyeH2OEnum
+syn keyword cConstant NumericalfluxEnum
+syn keyword cConstant OceantransportAnalysisEnum
+syn keyword cConstant OceantransportSolutionEnum
+syn keyword cConstant OldGradientEnum
+syn keyword cConstant OneLayerP4zEnum
+syn keyword cConstant OpenEnum
+syn keyword cConstant OptionEnum
+syn keyword cConstant ParamEnum
+syn keyword cConstant ParametersEnum
+syn keyword cConstant P0ArrayEnum
+syn keyword cConstant P0DGEnum
+syn keyword cConstant P1DGEnum
+syn keyword cConstant P1P1Enum
+syn keyword cConstant P1P1GLSEnum
+syn keyword cConstant P1bubbleEnum
+syn keyword cConstant P1bubblecondensedEnum
+syn keyword cConstant P1xP2Enum
+syn keyword cConstant P1xP3Enum
+syn keyword cConstant P1xP4Enum
+syn keyword cConstant P2Enum
+syn keyword cConstant P2bubbleEnum
+syn keyword cConstant P2bubblecondensedEnum
+syn keyword cConstant P2xP1Enum
+syn keyword cConstant P2xP4Enum
+syn keyword cConstant PatersonEnum
+syn keyword cConstant PengridEnum
+syn keyword cConstant PenpairEnum
+syn keyword cConstant PentaEnum
+syn keyword cConstant PentaInputEnum
+syn keyword cConstant ProfilerEnum
+syn keyword cConstant ProfilingCurrentFlopsEnum
+syn keyword cConstant ProfilingCurrentMemEnum
+syn keyword cConstant ProfilingSolutionTimeEnum
+syn keyword cConstant RegionaloutputEnum
+syn keyword cConstant RegularEnum
+syn keyword cConstant RecoveryAnalysisEnum
+syn keyword cConstant RiftfrontEnum
+syn keyword cConstant SamplingAnalysisEnum
+syn keyword cConstant SamplingSolutionEnum
+syn keyword cConstant SIAApproximationEnum
+syn keyword cConstant SMBarmaEnum
+syn keyword cConstant SMBcomponentsEnum
+syn keyword cConstant SMBdebrisEvattEnum
+syn keyword cConstant SMBd18opddEnum
+syn keyword cConstant SMBforcingEnum
+syn keyword cConstant SMBgcmEnum
+syn keyword cConstant SMBgembEnum
+syn keyword cConstant SMBgradientsEnum
+syn keyword cConstant SMBgradientscomponentsEnum
+syn keyword cConstant SMBgradientselaEnum
+syn keyword cConstant SMBhenningEnum
+syn keyword cConstant SMBmeltcomponentsEnum
+syn keyword cConstant SMBpddEnum
+syn keyword cConstant SMBpddSicopolisEnum
+syn keyword cConstant SMBsemicEnum
+syn keyword cConstant SSAApproximationEnum
+syn keyword cConstant SSAFSApproximationEnum
+syn keyword cConstant SSAHOApproximationEnum
+syn keyword cConstant ScaledEnum
+syn keyword cConstant SealevelAbsoluteEnum
+syn keyword cConstant SealevelEmotionEnum
+syn keyword cConstant SealevelchangePolarMotionXEnum
+syn keyword cConstant SealevelchangePolarMotionYEnum
+syn keyword cConstant SealevelchangePolarMotionZEnum
+syn keyword cConstant SealevelchangePolarMotionEnum
+syn keyword cConstant SealevelNmotionEnum
+syn keyword cConstant SealevelUmotionEnum
+syn keyword cConstant SealevelchangeAnalysisEnum
+syn keyword cConstant SegEnum
+syn keyword cConstant SegInputEnum
+syn keyword cConstant SegmentEnum
+syn keyword cConstant SegmentRiftfrontEnum
+syn keyword cConstant SeparateEnum
+syn keyword cConstant SeqEnum
+syn keyword cConstant SmbAnalysisEnum
+syn keyword cConstant SmbSolutionEnum
+syn keyword cConstant SmoothAnalysisEnum
+syn keyword cConstant SoftMigrationEnum
+syn keyword cConstant SpatialLinearFloatingMeltRateEnum
+syn keyword cConstant SpcDynamicEnum
+syn keyword cConstant SpcStaticEnum
+syn keyword cConstant SpcTransientEnum
+syn keyword cConstant SsetEnum
+syn keyword cConstant StatisticsSolutionEnum
+syn keyword cConstant SteadystateSolutionEnum
+syn keyword cConstant StressIntensityFactorEnum
+syn keyword cConstant StressbalanceAnalysisEnum
+syn keyword cConstant StressbalanceConvergenceNumStepsEnum
+syn keyword cConstant StressbalanceSIAAnalysisEnum
+syn keyword cConstant StressbalanceSolutionEnum
+syn keyword cConstant StressbalanceVerticalAnalysisEnum
+syn keyword cConstant StringArrayParamEnum
+syn keyword cConstant StringExternalResultEnum
+syn keyword cConstant StringParamEnum
+syn keyword cConstant SubelementFriction1Enum
+syn keyword cConstant SubelementFriction2Enum
+syn keyword cConstant SubelementMelt1Enum
+syn keyword cConstant SubelementMelt2Enum
+syn keyword cConstant SubelementMigrationEnum
+syn keyword cConstant SurfaceSlopeSolutionEnum
+syn keyword cConstant TaylorHoodEnum
+syn keyword cConstant TetraEnum
+syn keyword cConstant TetraInputEnum
+syn keyword cConstant ThermalAnalysisEnum
+syn keyword cConstant ThermalSolutionEnum
+syn keyword cConstant ThicknessErrorEstimatorEnum
+syn keyword cConstant TotalCalvingFluxLevelsetEnum
+syn keyword cConstant TotalCalvingMeltingFluxLevelsetEnum
+syn keyword cConstant TotalFloatingBmbEnum
+syn keyword cConstant TotalFloatingBmbScaledEnum
+syn keyword cConstant TotalGroundedBmbEnum
+syn keyword cConstant TotalGroundedBmbScaledEnum
+syn keyword cConstant TotalSmbEnum
+syn keyword cConstant TotalSmbScaledEnum
+syn keyword cConstant TotalSmbRefreezeEnum
+syn keyword cConstant TotalSmbMeltEnum
+syn keyword cConstant TransientArrayParamEnum
+syn keyword cConstant TransientInputEnum
+syn keyword cConstant TransientParamEnum
+syn keyword cConstant TransientSolutionEnum
+syn keyword cConstant TriaEnum
+syn keyword cConstant TriaInputEnum
+syn keyword cConstant UzawaPressureAnalysisEnum
+syn keyword cConstant VectorParamEnum
+syn keyword cConstant VertexEnum
+syn keyword cConstant VertexLIdEnum
+syn keyword cConstant VertexPIdEnum
+syn keyword cConstant VertexSIdEnum
+syn keyword cConstant VerticesEnum
+syn keyword cConstant ViscousHeatingEnum
+syn keyword cConstant WaterEnum
+syn keyword cConstant XTaylorHoodEnum
+syn keyword cConstant XYEnum
+syn keyword cConstant XYZEnum
+syn keyword cConstant BalancethicknessD0Enum
+syn keyword cConstant BalancethicknessDiffusionCoefficientEnum
+syn keyword cConstant BilinearInterpEnum
+syn keyword cConstant CalvingdevCoeffEnum
+syn keyword cConstant DeviatoricStressEnum
+syn keyword cConstant EtaAbsGradientEnum
+syn keyword cConstant MeshZEnum
+syn keyword cConstant NearestInterpEnum
+syn keyword cConstant OutputdefinitionListEnum
+syn keyword cConstant SealevelObsEnum
+syn keyword cConstant SealevelWeightsEnum
+syn keyword cConstant StrainRateEnum
+syn keyword cConstant StressTensorEnum
+syn keyword cConstant StressbalanceViscosityOvershootEnum
+syn keyword cConstant SubelementMigration4Enum
+syn keyword cConstant TimesteppingTimeAdaptEnum
+syn keyword cConstant TriangleInterpEnum
+syn keyword cConstant MaximumNumberOfDefinitionsEnum
+"ISSM Enums end
+
+"ISSM objects
+syn keyword cType AmrBamg
+syn keyword cType AmrNeopz
+syn keyword cType ArrayInput
+syn keyword cType BarystaticContributions
+syn keyword cType BoolInput
+syn keyword cType BoolParam
+syn keyword cType Cfdragcoeffabsgrad
+syn keyword cType Cfdragcoeffabsgradtransient
+syn keyword cType Cflevelsetmisfit
+syn keyword cType Cfrheologybbarabsgrad
+syn keyword cType Cfrheologybbarabsgradtransient
+syn keyword cType Cfsurfacelogvel
+syn keyword cType Cfsurfacesquare
+syn keyword cType Cfsurfacesquaretransient
+syn keyword cType Channel
+syn keyword cType classes
+syn keyword cType Constraint
+syn keyword cType Constraints
+syn keyword cType Contour
+syn keyword cType Contours
+syn keyword cType ControlInput
+syn keyword cType ControlParam
+syn keyword cType Covertree
+syn keyword cType DatasetInput
+syn keyword cType DataSetParam
+syn keyword cType Definition
+syn keyword cType DependentObject
+syn keyword cType DoubleInput
+syn keyword cType DoubleMatArrayParam
+syn keyword cType DoubleMatParam
+syn keyword cType DoubleParam
+syn keyword cType DoubleTransientMatParam
+syn keyword cType DoubleVecParam
+syn keyword cType Element
+syn keyword cType ElementHook
+syn keyword cType ElementInput
+syn keyword cType ElementMatrix
+syn keyword cType Elements
+syn keyword cType ElementVector
+syn keyword cType ExponentialVariogram
+syn keyword cType ExternalResult
+syn keyword cType FemModel
+syn keyword cType FileParam
+syn keyword cType Friction
+syn keyword cType Gauss
+syn keyword cType GaussianVariogram
+syn keyword cType gaussobjects
+syn keyword cType GaussPenta
+syn keyword cType GaussSeg
+syn keyword cType GaussTetra
+syn keyword cType GaussTria
+syn keyword cType GenericExternalResult
+syn keyword cType GenericOption
+syn keyword cType GenericParam
+syn keyword cType GiaDeflectionCoreArgs
+syn keyword cType GrdLoads
+syn keyword cType Hook
+syn keyword cType Input
+syn keyword cType Inputs
+syn keyword cType IntArrayInput
+syn keyword cType IntInput
+syn keyword cType IntMatParam
+syn keyword cType IntParam
+syn keyword cType IntVecParam
+syn keyword cType IoModel
+syn keyword cType IssmDirectApplicInterface
+syn keyword cType IssmParallelDirectApplicInterface
+syn keyword cType krigingobjects
+syn keyword cType Load
+syn keyword cType Loads
+syn keyword cType Masscon
+syn keyword cType Massconaxpby
+syn keyword cType Massfluxatgate
+syn keyword cType Material
+syn keyword cType Materials
+syn keyword cType Matestar
+syn keyword cType Matice
+syn keyword cType Matlitho
+syn keyword cType matrixobjects
+syn keyword cType MatrixParam
+syn keyword cType Misfit
+syn keyword cType Moulin
+syn keyword cType Neumannflux
+syn keyword cType Nodalvalue
+syn keyword cType Node
+syn keyword cType Nodes
+syn keyword cType Numberedcostfunction
+syn keyword cType Numericalflux
+syn keyword cType Observation
+syn keyword cType Observations
+syn keyword cType Option
+syn keyword cType Options
+syn keyword cType OptionUtilities
+syn keyword cType Param
+syn keyword cType Parameters
+syn keyword cType Pengrid
+syn keyword cType Penpair
+syn keyword cType Penta
+syn keyword cType PentaInput
+syn keyword cType PentaRef
+syn keyword cType PowerVariogram
+syn keyword cType Profiler
+syn keyword cType Quadtree
+syn keyword cType Radar
+syn keyword cType Regionaloutput
+syn keyword cType Results
+syn keyword cType Riftfront
+syn keyword cType RiftStruct
+syn keyword cType SealevelGeometry
+syn keyword cType Seg
+syn keyword cType SegInput
+syn keyword cType Segment
+syn keyword cType SegRef
+syn keyword cType SpcDynamic
+syn keyword cType SpcStatic
+syn keyword cType SpcTransient
+syn keyword cType SphericalVariogram
+syn keyword cType StringArrayParam
+syn keyword cType StringParam
+syn keyword cType Tetra
+syn keyword cType TetraRef
+syn keyword cType TransientArrayParam
+syn keyword cType TransientInput
+syn keyword cType TransientParam
+syn keyword cType Tria
+syn keyword cType TriaInput
+syn keyword cType TriaRef
+syn keyword cType Variogram
+syn keyword cType VectorParam
+syn keyword cType Vertex
+syn keyword cType Vertices
+syn keyword cType AdjointBalancethickness2Analysis
+syn keyword cType AdjointBalancethicknessAnalysis
+syn keyword cType AdjointHorizAnalysis
+syn keyword cType AgeAnalysis
+syn keyword cType Analysis
+syn keyword cType Balancethickness2Analysis
+syn keyword cType BalancethicknessAnalysis
+syn keyword cType BalancethicknessSoftAnalysis
+syn keyword cType BalancevelocityAnalysis
+syn keyword cType DamageEvolutionAnalysis
+syn keyword cType DebrisAnalysis
+syn keyword cType DepthAverageAnalysis
+syn keyword cType EnthalpyAnalysis
+syn keyword cType EnumToAnalysis
+syn keyword cType EsaAnalysis
+syn keyword cType ExtrapolationAnalysis
+syn keyword cType ExtrudeFromBaseAnalysis
+syn keyword cType ExtrudeFromTopAnalysis
+syn keyword cType FreeSurfaceBaseAnalysis
+syn keyword cType FreeSurfaceTopAnalysis
+syn keyword cType GLheightadvectionAnalysis
+syn keyword cType HydrologyArmapwAnalysis
+syn keyword cType HydrologyDCEfficientAnalysis
+syn keyword cType HydrologyDCInefficientAnalysis
+syn keyword cType HydrologyGlaDSAnalysis
+syn keyword cType HydrologyPismAnalysis
+syn keyword cType HydrologyShaktiAnalysis
+syn keyword cType HydrologyShreveAnalysis
+syn keyword cType HydrologyTwsAnalysis
+syn keyword cType L2ProjectionBaseAnalysis
+syn keyword cType L2ProjectionEPLAnalysis
+syn keyword cType LevelsetAnalysis
+syn keyword cType LoveAnalysis
+syn keyword cType MasstransportAnalysis
+syn keyword cType MeltingAnalysis
+syn keyword cType OceantransportAnalysis
+syn keyword cType SamplingAnalysis
+syn keyword cType SealevelchangeAnalysis
+syn keyword cType SmbAnalysis
+syn keyword cType SmoothAnalysis
+syn keyword cType StressbalanceAnalysis
+syn keyword cType StressbalanceSIAAnalysis
+syn keyword cType StressbalanceVerticalAnalysis
+syn keyword cType ThermalAnalysis
+syn keyword cType UzawaPressureAnalysis
+"ISSM objects end
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/EnumDefinitions.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/EnumDefinitions.h	(revision 27955)
@@ -0,0 +1,1799 @@
+/*
+ * \file EnumDefinitions.h:
+ * \brief: enum functions for our objects
+ */
+
+#ifndef _ENUM_DEFINITIONS_
+#define _ENUM_DEFINITIONS_
+
+enum definitions{
+	ParametersSTARTEnum,
+	/*Parameters{{{*/
+	AdolcParamEnum,
+	AgeStabilizationEnum,
+	AgeNumRequestedOutputsEnum,
+	AgeRequestedOutputsEnum,
+	AmrDeviatoricErrorGroupThresholdEnum,
+	AmrDeviatoricErrorMaximumEnum,
+	AmrDeviatoricErrorResolutionEnum,
+	AmrDeviatoricErrorThresholdEnum,
+	AmrErrEnum,
+	AmrFieldEnum,
+	AmrGradationEnum,
+	AmrGroundingLineDistanceEnum,
+	AmrGroundingLineResolutionEnum,
+	AmrHmaxEnum,
+	AmrHminEnum,
+	AmrIceFrontDistanceEnum,
+	AmrIceFrontResolutionEnum,
+	AmrKeepMetricEnum,
+	AmrLagEnum,
+	AmrLevelMaxEnum,
+	AmrRestartEnum,
+	AmrThicknessErrorGroupThresholdEnum,
+	AmrThicknessErrorMaximumEnum,
+	AmrThicknessErrorResolutionEnum,
+	AmrThicknessErrorThresholdEnum,
+	AmrTypeEnum,
+	AnalysisCounterEnum,
+	AnalysisTypeEnum,
+	AugmentedLagrangianREnum,
+	AugmentedLagrangianRholambdaEnum,
+	AugmentedLagrangianRhopEnum,
+	AugmentedLagrangianRlambdaEnum,
+	AugmentedLagrangianThetaEnum,
+	AutodiffCbufsizeEnum,
+	AutodiffDependentObjectsEnum,
+	AutodiffDriverEnum,
+	AutodiffFosForwardIndexEnum,
+	AutodiffFosReverseIndexEnum,
+	AutodiffFovForwardIndicesEnum,
+	AutodiffGcTriggerMaxSizeEnum,
+	AutodiffGcTriggerRatioEnum,
+	AutodiffIsautodiffEnum,
+	AutodiffLbufsizeEnum,
+	AutodiffNumDependentsEnum,
+	AutodiffNumIndependentsEnum,
+	AutodiffObufsizeEnum,
+	AutodiffTapeAllocEnum,
+	AutodiffTbufsizeEnum,
+	AutodiffXpEnum,
+	BalancethicknessStabilizationEnum,
+	BarystaticContributionsEnum,
+	BasalforcingsARMATimestepEnum,
+	BasalforcingsARMAarOrderEnum,
+	BasalforcingsARMAmaOrderEnum,
+	BasalforcingsBottomplumedepthEnum,
+	BasalforcingsCrustthicknessEnum,
+	BasalforcingsDeepwaterElevationEnum,
+	BasalforcingsDeepwaterMeltingRateEnum,
+	BasalforcingsDtbgEnum,
+	BasalforcingsEnum,
+	BasalforcingsIsmip6AverageTfEnum,
+	BasalforcingsIsmip6BasinAreaEnum,
+	BasalforcingsIsmip6DeltaTEnum,
+	BasalforcingsIsmip6Gamma0Enum,
+	BasalforcingsIsmip6IsLocalEnum,
+	BasalforcingsIsmip6NumBasinsEnum,
+	BasalforcingsIsmip6TfDepthsEnum,
+	BasalforcingsLinearNumBasinsEnum,
+	BasalforcingsLinearNumBreaksEnum,
+	BasalforcingsLinearNumParamsEnum,
+	BasalforcingsMantleconductivityEnum,
+	BasalforcingsNusseltEnum,
+	BasalforcingsARMAarlagcoefsEnum,
+	BasalforcingsARMAdatebreaksEnum,
+	BasalforcingsARMAmalagcoefsEnum,
+	BasalforcingsARMApolyparamsEnum,
+	BasalforcingsIsThermalForcingEnum,
+	BasalforcingsLowercrustheatEnum,
+	BasalforcingsPicoAverageOverturningEnum,
+	BasalforcingsPicoAverageSalinityEnum,
+	BasalforcingsPicoAverageTemperatureEnum,
+	BasalforcingsPicoBoxAreaEnum,
+	BasalforcingsPicoFarOceansalinityEnum,
+	BasalforcingsPicoFarOceantemperatureEnum,
+	BasalforcingsPicoGammaTEnum,
+	BasalforcingsPicoIsplumeEnum,
+	BasalforcingsPicoMaxboxcountEnum,
+	BasalforcingsPicoNumBasinsEnum,
+	BasalforcingsPlumeradiusEnum,
+	BasalforcingsPlumexEnum,
+	BasalforcingsPlumeyEnum,
+	BasalforcingsThresholdThicknessEnum,
+	BasalforcingsTopplumedepthEnum,
+	BasalforcingsUppercrustheatEnum,
+	BasalforcingsUppercrustthicknessEnum,
+	BasalforcingsUpperdepthMeltEnum,
+	BasalforcingsUpperwaterElevationEnum,
+	BasalforcingsUpperwaterMeltingRateEnum,
+	CalvingADStressThresholdFloatingiceEnum,
+	CalvingADStressThresholdGroundediceEnum,
+	CalvingCrevasseDepthEnum,
+	CalvingCrevasseThresholdEnum,
+	CalvingHeightAboveFloatationEnum,
+	CalvingLawEnum,
+	CalvingMinthicknessEnum,
+	CalvingTestSpeedfactorEnum,
+	CalvingTestIndependentRateEnum,
+	CalvingUseParamEnum,
+	CalvingThetaEnum,
+	CalvingAlphaEnum,
+	CalvingXoffsetEnum,
+	CalvingYoffsetEnum,
+	CalvingVelLowerboundEnum,
+	CalvingVelMaxEnum,
+	CalvingVelThresholdEnum,
+	CalvingVelUpperboundEnum,
+	CalvingRcEnum,
+	CalvingNumberofBasinsEnum,
+	ConfigurationTypeEnum,
+	ConstantsGEnum,
+	ConstantsNewtonGravityEnum,
+	ConstantsReferencetemperatureEnum,
+	ConstantsYtsEnum,
+	ControlInputSizeMEnum,
+	ControlInputSizeNEnum,
+	ControlInputInterpolationEnum,
+	CumBslcEnum,
+	CumBslcIceEnum,
+	CumBslcHydroEnum,
+	CumBslcOceanEnum,
+	CumBslcIcePartitionEnum,
+	CumBslcHydroPartitionEnum,
+	CumBslcOceanPartitionEnum,
+	CumGmtslcEnum,
+	CumGmslcEnum,
+	DamageC1Enum,
+	DamageC2Enum,
+	DamageC3Enum,
+	DamageC4Enum,
+	DamageEnum,
+	DamageEquivStressEnum,
+	DamageEvolutionNumRequestedOutputsEnum,
+	DamageEvolutionRequestedOutputsEnum,
+	DamageHealingEnum,
+	DamageKappaEnum,
+	DamageLawEnum,
+	DamageMaxDamageEnum,
+	DamageStabilizationEnum,
+	DamageStressThresholdEnum,
+	DamageStressUBoundEnum,
+	DebrisMinThicknessEnum,
+	DebrisNumRequestedOutputsEnum,
+	DebrisPenaltyFactorEnum,
+	DebrisRequestedOutputsEnum,
+	DebrisStabilizationEnum,
+	DebrisRemovalmodelEnum,
+	DebrisDisplacementmodelEnum,
+	DebrisRemovalSlopeThresholdEnum,
+	DebrisRemovalStressThresholdEnum,
+	DebrisPackingFractionEnum,
+	DebugProfilingEnum,
+	DomainDimensionEnum,
+	DomainTypeEnum,
+	DslModelEnum,
+	DslModelidEnum,
+	DslNummodelsEnum,
+	SolidearthIsExternalEnum,
+	SolidearthExternalNatureEnum,
+	SolidearthExternalModelidEnum,
+	SolidearthExternalNummodelsEnum,
+	SolidearthSettingsComputeBpGrdEnum,
+	EarthIdEnum,
+	ElasticEnum,
+	EplZigZagCounterEnum,
+	EsaHElasticEnum,
+	EsaHemisphereEnum,
+	EsaRequestedOutputsEnum,
+	EsaUElasticEnum,
+	ExtrapolationVariableEnum,
+	FemModelCommEnum,
+	FieldsEnum,
+	FlowequationFeFSEnum,
+	FlowequationIsFSEnum,
+	FlowequationIsHOEnum,
+	FlowequationIsL1L2Enum,
+	FlowequationIsMOLHOEnum,
+	FlowequationIsSIAEnum,
+	FlowequationIsSSAEnum,
+	FlowequationIsNitscheEnum,
+	FeFSNitscheGammaEnum,
+	FrictionCouplingEnum,
+	FrictionDeltaEnum,
+	FrictionEffectivePressureLimitEnum,
+	FrictionFEnum,
+	FrictionGammaEnum,
+	FrictionLawEnum,
+	FrictionLinearizeEnum,
+	FrictionPseudoplasticityExponentEnum,
+	FrictionU0Enum,
+	FrictionThresholdSpeedEnum,
+	FrictionVoidRatioEnum,
+	FrontalForcingsBasinIcefrontAreaEnum,
+   FrontalForcingsARMATimestepEnum,
+   FrontalForcingsARMAarOrderEnum,
+   FrontalForcingsARMAmaOrderEnum,
+   FrontalForcingsARMAdatebreaksEnum,
+	FrontalForcingsARMAmonthdatebreaksEnum,
+   FrontalForcingsARMAmonthinterceptsEnum,
+   FrontalForcingsARMAmonthtrendsEnum,
+   FrontalForcingsARMApolyparamsEnum,
+	FrontalForcingsIsDischargeARMAEnum,
+	FrontalForcingsNumberofBasinsEnum,
+	FrontalForcingsNumberofBreaksEnum,
+	FrontalForcingsNumberofMonthBreaksEnum,
+	FrontalForcingsNumberofParamsEnum,
+	FrontalForcingsParamEnum,
+   FrontalForcingsARMAarlagcoefsEnum,
+   FrontalForcingsARMAmalagcoefsEnum,
+   FrontalForcingsSdarlagcoefsEnum,
+	FrontalForcingsSdARMATimestepEnum,
+   FrontalForcingsSdarOrderEnum,
+   FrontalForcingsSddatebreaksEnum,
+   FrontalForcingsSdmalagcoefsEnum,
+   FrontalForcingsSdmaOrderEnum,
+   FrontalForcingsSdMonthlyFracEnum,
+	FrontalForcingsSdNumberofBreaksEnum,
+	FrontalForcingsSdNumberofParamsEnum,
+   FrontalForcingsSdpolyparamsEnum,
+	GrdModelEnum,
+	GroundinglineFrictionInterpolationEnum,
+	GroundinglineMeltInterpolationEnum,
+	GroundinglineMigrationEnum,
+	GroundinglineNumRequestedOutputsEnum,
+	GroundinglineRequestedOutputsEnum,
+	HydrologyarmaarOrderEnum,
+   HydrologyarmaarlagcoefsEnum,
+   HydrologyarmadatebreaksEnum,
+   HydrologyarmamalagcoefsEnum,
+   HydrologyarmamaOrderEnum,
+   HydrologyarmaMonthlyFactorsEnum,
+   HydrologyarmaNumBreaksEnum,
+   HydrologyarmaNumParamsEnum,
+   HydrologyarmapolyparamsEnum,
+   HydrologyarmaTimestepEnum,
+	HydrologyAveragingEnum,
+	HydrologyChannelAlphaEnum,
+	HydrologyChannelBetaEnum,
+	HydrologyCavitySpacingEnum,	
+	HydrologyChannelSheetWidthEnum,
+	HydrologyEnglacialVoidRatioEnum,
+	HydrologyIschannelsEnum,
+	HydrologyIsTransitionEnum,
+	HydrologyIsWaterPressureArmaEnum,
+	HydrologyMeltFlagEnum,
+	HydrologyModelEnum,
+	HydrologyNumBasinsEnum,
+	HydrologyNumRequestedOutputsEnum,
+	HydrologyOmegaEnum,
+	HydrologyPressureMeltCoefficientEnum,
+	HydrologyRelaxationEnum,
+	HydrologyRequestedOutputsEnum,
+	HydrologySedimentKmaxEnum,
+	HydrologySheetAlphaEnum,
+	HydrologySheetBetaEnum,
+	HydrologyStepsPerStepEnum,
+	HydrologyStorageEnum,
+	HydrologydcEplColapseThicknessEnum,
+	HydrologydcEplConductivityEnum,
+	HydrologydcEplInitialThicknessEnum,
+	HydrologydcEplLayerCompressibilityEnum,
+	HydrologydcEplMaxThicknessEnum,
+	HydrologydcEplPoreWaterMassEnum,
+	HydrologydcEplThickCompEnum,
+	HydrologydcEplflipLockEnum,
+	HydrologydcIsefficientlayerEnum,
+	HydrologydcLeakageFactorEnum,
+	HydrologydcMaxIterEnum,
+	HydrologydcPenaltyFactorEnum,
+	HydrologydcPenaltyLockEnum,
+	HydrologydcRelTolEnum,
+	HydrologydcSedimentlimitEnum,
+	HydrologydcSedimentlimitFlagEnum,
+	HydrologydcSedimentLayerCompressibilityEnum,
+	HydrologydcSedimentPoreWaterMassEnum,
+	HydrologydcSedimentPorosityEnum,
+	HydrologydcSedimentThicknessEnum,
+	HydrologyStepAdaptEnum,
+	HydrologydcTransferFlagEnum,
+	HydrologydcUnconfinedFlagEnum,
+	HydrologyshreveStabilizationEnum,
+	IcecapToEarthCommEnum,
+	IndexEnum,
+	InputFileNameEnum,
+	DirectoryNameEnum,
+	IndicesEnum,
+	InputToDepthaverageInEnum,
+	InputToDepthaverageOutEnum,
+	InputToExtrudeEnum,
+	InputToL2ProjectEnum,
+	InputToSmoothEnum,
+	InversionAlgorithmEnum,
+	InversionControlParametersEnum,
+	InversionControlScalingFactorsEnum,
+	InversionCostFunctionsEnum,
+	InversionDxminEnum,
+	InversionDfminFracEnum,
+	InversionGatolEnum,
+	InversionGradientScalingEnum,
+	InversionGrtolEnum,
+	InversionGttolEnum,
+	InversionIncompleteAdjointEnum,
+	InversionIscontrolEnum,
+	InversionMaxiterEnum,
+	InversionMaxiterPerStepEnum,
+	InversionMaxstepsEnum,
+	InversionNstepsEnum,
+	InversionNumControlParametersEnum,
+	InversionNumCostFunctionsEnum,
+	InversionStepThresholdEnum,
+	InversionStopFlagEnum,
+	InversionTypeEnum,
+	IvinsEnum,
+	IsSlcCouplingEnum,
+	LevelsetKillIcebergsEnum,
+	LevelsetReinitFrequencyEnum,
+	LevelsetStabilizationEnum,
+	LockFileNameEnum,
+	LoveAllowLayerDeletionEnum,
+	LoveChandlerWobbleEnum,
+	LoveCoreMantleBoundaryEnum,
+	LoveEarthMassEnum,
+	LoveForcingTypeEnum,
+	LoveFrequenciesEnum,
+	LoveIsTemporalEnum,
+	LoveG0Enum,
+	LoveGravitationalConstantEnum,
+	LoveInnerCoreBoundaryEnum,
+	LoveComplexComputationEnum,
+	LoveQuadPrecisionEnum,
+	LoveIntStepsPerLayerEnum,
+	LoveMinIntegrationStepsEnum,
+	LoveMaxIntegrationdrEnum,
+	LoveIntegrationSchemeEnum,
+	LoveKernelsEnum,
+	LoveMu0Enum,
+	LoveNfreqEnum,
+	LoveNTemporalIterationsEnum,
+	LoveNYiEquationsEnum,
+	LoveR0Enum,
+	LoveShNmaxEnum,
+	LoveShNminEnum,
+	LoveStartingLayerEnum,
+	LoveUnderflowTolEnum,
+	LovePostWidderThresholdEnum,
+	LoveDebugEnum,
+	LoveHypergeomNZEnum,
+	LoveHypergeomNAlphaEnum,
+	MassFluxSegmentsEnum,
+	MassFluxSegmentsPresentEnum,
+	MasstransportHydrostaticAdjustmentEnum,
+	MasstransportIsfreesurfaceEnum,
+	MasstransportMinThicknessEnum,
+	MasstransportNumRequestedOutputsEnum,
+	MasstransportPenaltyFactorEnum,
+	MasstransportRequestedOutputsEnum,
+	MasstransportStabilizationEnum,
+	MaterialsBetaEnum,
+	MaterialsEarthDensityEnum,
+	MaterialsEffectiveconductivityAveragingEnum,
+	MaterialsHeatcapacityEnum,
+	MaterialsLatentheatEnum,
+	MaterialsMeltingpointEnum,
+	MaterialsMixedLayerCapacityEnum,
+	MaterialsMuWaterEnum,
+	MaterialsRheologyLawEnum,
+	MaterialsRhoFreshwaterEnum,
+	MaterialsRhoIceEnum,
+	MaterialsRhoSeawaterEnum,
+	MaterialsTemperateiceconductivityEnum,
+	MaterialsThermalExchangeVelocityEnum,
+	MaterialsThermalconductivityEnum,
+	MeltingOffsetEnum,
+	MeshAverageVertexConnectivityEnum,
+	MeshElementtypeEnum,
+	MeshNumberoflayersEnum,
+	MeshNumberofverticesEnum,
+	MeshNumberofelementsEnum,
+	MigrationMaxEnum,
+	ModelIdEnum,
+	NbinsEnum,
+	NodesEnum,
+	NumModelsEnum,
+	OceanGridNxEnum,
+	OceanGridNyEnum,
+	OceanGridXEnum,
+	OceanGridYEnum,
+	OutputBufferPointerEnum,
+	OutputBufferSizePointerEnum,
+	OutputFileNameEnum,
+	OutputFilePointerEnum,
+	OutputdefinitionEnum,
+	QmuErrNameEnum,
+	QmuInNameEnum,
+	QmuIsdakotaEnum,
+	QmuOutNameEnum,
+	QmuOutputEnum,
+	QmuCurrEvalIdEnum,
+	QmuNsampleEnum,
+	QmuResponsedescriptorsEnum,
+	QmuVariableDescriptorsEnum,
+	QmuVariablePartitionsEnum,
+	QmuVariablePartitionsNpartEnum,
+	QmuVariablePartitionsNtEnum,
+	QmuResponsePartitionsEnum,
+	QmuResponsePartitionsNpartEnum,
+	QmuStatisticsEnum,
+	QmuNumstatisticsEnum,
+	QmuNdirectoriesEnum,
+	QmuNfilesPerDirectoryEnum,
+	QmuStatisticsMethodEnum,
+	QmuMethodsEnum,
+	RestartFileNameEnum,
+	ResultsEnum,
+	RootPathEnum,
+	ModelnameEnum,
+	SamplingAlphaEnum,
+	SamplingNumRequestedOutputsEnum,
+	SamplingRequestedOutputsEnum,
+	SamplingRobinEnum,
+	SamplingSeedEnum,
+	SaveResultsEnum,
+	SolidearthPartitionIceEnum,
+	SolidearthPartitionHydroEnum,
+	SolidearthPartitionOceanEnum,
+	SolidearthNpartIceEnum,
+	SolidearthNpartOceanEnum,
+	SolidearthNpartHydroEnum,
+	SolidearthPlanetRadiusEnum,
+	SolidearthPlanetAreaEnum,
+	SolidearthSettingsAbstolEnum,
+	SolidearthSettingsCrossSectionShapeEnum,
+	SolidearthSettingsElasticEnum,
+	SolidearthSettingsViscousEnum,
+	SolidearthSettingsSatelliteGraviEnum,
+	SolidearthSettingsDegreeAccuracyEnum,
+	SealevelchangeGeometryDoneEnum,
+	SealevelchangeViscousNumStepsEnum,
+	SealevelchangeViscousTimesEnum,
+	SealevelchangeViscousIndexEnum,
+	SealevelchangeViscousPolarMotionEnum,
+	SealevelchangeRunCountEnum,
+	SealevelchangeTransitionsEnum,
+	SealevelchangeRequestedOutputsEnum,
+	RotationalAngularVelocityEnum,
+	RotationalEquatorialMoiEnum,
+	RotationalPolarMoiEnum,
+	LovePolarMotionTransferFunctionColinearEnum,
+	LovePolarMotionTransferFunctionOrthogonalEnum,
+	TidalLoveHEnum,
+	TidalLoveKEnum,
+	TidalLoveLEnum,
+	TidalLoveK2SecularEnum,
+	LoadLoveHEnum,
+	LoadLoveKEnum,
+	LoadLoveLEnum,
+	LoveTimeFreqEnum,
+	LoveIsTimeEnum,
+	LoveHypergeomZEnum,
+	LoveHypergeomTable1Enum,
+	LoveHypergeomTable2Enum,
+	SealevelchangeGSelfAttractionEnum,
+	SealevelchangeGViscoElasticEnum,
+	SealevelchangeUViscoElasticEnum,
+	SealevelchangeHViscoElasticEnum,
+	SealevelchangePolarMotionTransferFunctionColinearEnum,
+	SealevelchangePolarMotionTransferFunctionOrthogonalEnum,
+	SealevelchangePolarMotionTransferFunctionZEnum,
+	SealevelchangeTidalK2Enum,
+	SealevelchangeTidalH2Enum,
+	SealevelchangeTidalL2Enum,
+	SolidearthSettingsSealevelLoadingEnum,
+	SolidearthSettingsGRDEnum,
+	SolidearthSettingsRunFrequencyEnum,
+	SolidearthSettingsTimeAccEnum,
+	SolidearthSettingsHorizEnum,
+	SolidearthSettingsMaxiterEnum,
+	SolidearthSettingsGrdOceanEnum,
+	SolidearthSettingsOceanAreaScalingEnum,
+	StochasticForcingCovarianceEnum,
+	StochasticForcingDefaultDimensionEnum,
+	StochasticForcingDimensionsEnum,
+	StochasticForcingFieldsEnum,
+	StochasticForcingIsEffectivePressureEnum,
+	StochasticForcingIsStochasticForcingEnum,
+	StochasticForcingIsWaterPressureEnum,
+	StochasticForcingNoisetermsEnum,
+	StochasticForcingNumFieldsEnum,
+	StochasticForcingNumTimesCovarianceEnum,
+	StochasticForcingRandomflagEnum,
+	StochasticForcingTimeCovarianceEnum,
+	StochasticForcingTimestepEnum,
+	SolidearthSettingsReltolEnum,
+	SolidearthSettingsSelfAttractionEnum,
+	SolidearthSettingsRotationEnum,
+	SolidearthSettingsMaxSHCoeffEnum,
+	SettingsIoGatherEnum,
+	SettingsNumResultsOnNodesEnum,
+	SettingsOutputFrequencyEnum,
+	SettingsCheckpointFrequencyEnum,
+	SettingsResultsOnNodesEnum,
+	SettingsSbCouplingFrequencyEnum,
+	SettingsSolverResidueThresholdEnum,
+	SettingsWaitonlockEnum,
+	SmbAIceEnum,
+	SmbAIdxEnum,
+	SmbASnowEnum,
+	SmbAccualtiEnum,
+	SmbAccugradEnum,
+	SmbAccurefEnum,
+	SmbAdThreshEnum,
+	SmbAlbedoSchemeEnum,
+	SmbAlbedoSnowMaxEnum,
+	SmbAlbedoSnowMinEnum,
+	SmbAlbedoIceEnum,
+	SmbAlbedoLandEnum,
+	SmbARMATimestepEnum,
+   SmbARMAarOrderEnum,
+	SmbARMAarlagcoefsEnum,
+	SmbARMAdatebreaksEnum,
+   SmbARMAmaOrderEnum,
+	SmbARMAmalagcoefsEnum,
+	SmbARMApolyparamsEnum,
+   SmbAveragingEnum,
+	SmbDebrisalbedoEnum,
+	SmbIcealbedoEnum,
+	SmbSnowalbedoEnum,
+        SmbDebrisIsAndersonEnum,
+        SmbDebrisIsCryokarstEnum,
+        SmbDebrisAndersonD0Enum,
+	SmbDesfacEnum,
+	SmbDesfacElevEnum,
+	SmbDpermilEnum,
+	SmbDsnowIdxEnum,
+   SmbElevationBinsEnum,
+	SmbCldFracEnum,
+	SmbDelta18oEnum,
+	SmbDelta18oSurfaceEnum,
+	SmbDenIdxEnum,
+	SmbDtEnum,
+	SmbEnum,
+	SmbEIdxEnum,
+	SmbFEnum,
+	SmbHumiditygradEnum,
+	SmbInitDensityScalingEnum,
+	SmbIsaccumulationEnum,
+	SmbIsalbedoEnum,
+	SmbIsconstrainsurfaceTEnum,
+	SmbIsd18opdEnum,
+	SmbIsdelta18oEnum,
+	SmbIsdensificationEnum,
+	SmbIsdeltaLWupEnum,
+	SmbIsfirnwarmingEnum,
+	SmbIsgraingrowthEnum,
+	SmbIsmeltEnum,
+	SmbIsmungsmEnum,
+	SmbIsprecipscaledEnum,
+	SmbIssetpddfacEnum,
+	SmbIsshortwaveEnum,
+	SmbIstemperaturescaledEnum,
+	SmbIsthermalEnum,
+	SmbIsturbulentfluxEnum,
+	SmbKEnum,
+   SmbLapseRatesEnum,
+   	SmbLWgradEnum,
+	SmbNumBasinsEnum,
+	SmbNumBreaksEnum,
+	SmbNumElevationBinsEnum,
+	SmbNumParamsEnum,
+	SmbNumRequestedOutputsEnum,
+	SmbPfacEnum,
+	SmbRdlEnum,
+	SmbRefElevationEnum,
+	SmbRequestedOutputsEnum,
+	SmbRlapsEnum,
+	SmbRlapslgmEnum,
+	SmbRunoffaltiEnum,
+	SmbRunoffgradEnum,
+	SmbRunoffrefEnum,
+	SmbSealevEnum,
+	SmbSemicMethodEnum,
+	SmbSemicHcritEnum,
+	SmbSemicRcritEnum,
+	SmbSemicWcritEnum,
+	SmbSemicMcritEnum,
+	SmbSemicAfacEnum,
+	SmbSemicTauAEnum,
+	SmbSemicTauFEnum,
+	SmbSemicTminEnum,
+	SmbSemicTmidEnum,
+	SmbSemicTmaxEnum,
+	SmbStepsPerStepEnum,
+	SmbSwIdxEnum,
+	SmbSWgradEnum,
+	SmbT0dryEnum,
+	SmbT0wetEnum,
+	SmbTcIdxEnum,
+	SmbTeThreshEnum,
+	SmbTdiffEnum,
+	SmbThermoDeltaTScalingEnum,
+	SmbTemperaturesReconstructedYearsEnum,
+	SmbPrecipitationsReconstructedYearsEnum,
+	SmbWindspeedgradEnum,
+	SmoothThicknessMultiplierEnum,
+	SolutionTypeEnum,
+	SteadystateMaxiterEnum,
+	SteadystateNumRequestedOutputsEnum,
+	SteadystateReltolEnum,
+	SteadystateRequestedOutputsEnum,
+	StepEnum,
+	StepsEnum,
+	StressbalanceAbstolEnum,
+	StressbalanceFSreconditioningEnum,
+	StressbalanceIsnewtonEnum,
+	StressbalanceMaxiterEnum,
+	StressbalanceNumRequestedOutputsEnum,
+	StressbalancePenaltyFactorEnum,
+	StressbalanceReltolEnum,
+	StressbalanceRequestedOutputsEnum,
+	StressbalanceRestolEnum,
+	StressbalanceRiftPenaltyThresholdEnum,
+	StressbalanceShelfDampeningEnum,
+   ThermalForcingMonthlyEffectsEnum,
+	ThermalIsdrainicecolumnEnum,
+	ThermalIsdynamicbasalspcEnum,
+	ThermalIsenthalpyEnum,
+	ThermalMaxiterEnum,
+	ThermalNumRequestedOutputsEnum,
+	ThermalPenaltyFactorEnum,
+	ThermalPenaltyLockEnum,
+	ThermalPenaltyThresholdEnum,
+	ThermalReltolEnum,
+	ThermalRequestedOutputsEnum,
+	ThermalStabilizationEnum,
+	ThermalWatercolumnUpperlimitEnum,
+	TimeEnum,
+	TimesteppingAverageForcingEnum,
+	TimesteppingCflCoefficientEnum,
+	TimesteppingCouplingTimeEnum,
+	TimesteppingFinalTimeEnum,
+	TimesteppingInterpForcingEnum,
+	TimesteppingCycleForcingEnum,
+	TimesteppingStartTimeEnum,
+	TimesteppingTimeStepEnum,
+	TimesteppingTimeStepMaxEnum,
+	TimesteppingTimeStepMinEnum,
+	TimesteppingTypeEnum,
+	ToMITgcmCommEnum,
+	ToolkitsFileNameEnum,
+	ToolkitsOptionsAnalysesEnum,
+	ToolkitsOptionsStringsEnum,
+	ToolkitsTypesEnum,
+	TransientAmrFrequencyEnum,
+	TransientIsageEnum,
+	TransientIsdamageevolutionEnum,
+	TransientIsdebrisEnum,
+	TransientIsesaEnum,
+	TransientIsgiaEnum,
+	TransientIsgroundinglineEnum,
+	TransientIshydrologyEnum,
+	TransientIsmasstransportEnum,
+	TransientIsoceantransportEnum,
+	TransientIsmovingfrontEnum,
+	TransientIsoceancouplingEnum,
+	TransientIssamplingEnum,
+	TransientIsslcEnum,
+	TransientIssmbEnum,
+	TransientIsstressbalanceEnum,
+	TransientIsthermalEnum,
+	TransientNumRequestedOutputsEnum,
+	TransientRequestedOutputsEnum,
+	VelocityEnum,
+	XxeEnum,
+	YyeEnum,
+	ZzeEnum,
+	AreaeEnum,
+	WorldCommEnum,
+	/*}}}*/
+	ParametersENDEnum,
+	InputsSTARTEnum,
+	/*Inputs{{{*/
+	AccumulatedDeltaBottomPressureEnum,
+	AccumulatedDeltaIceThicknessEnum,
+	AccumulatedDeltaTwsEnum,
+	AdjointEnum,
+	AdjointpEnum,
+	AdjointxEnum,
+	AdjointxBaseEnum,
+	AdjointxShearEnum,
+	AdjointyEnum,
+	AdjointyBaseEnum,
+	AdjointyShearEnum,
+	AdjointzEnum,
+	AgeEnum,
+	AirEnum,
+	ApproximationEnum,
+	BalancethicknessMisfitEnum,
+	BalancethicknessOmega0Enum,
+	BalancethicknessOmegaEnum,
+	BalancethicknessSpcthicknessEnum,
+	BalancethicknessThickeningRateEnum,
+	BasalCrevasseEnum,
+	BasalforcingsDeepwaterMeltingRatearmaEnum,
+	BasalforcingsDeepwaterMeltingRateNoiseEnum,
+	BasalforcingsDeepwaterMeltingRateValuesAutoregressionEnum,
+	BasalforcingsDeepwaterMeltingRateValuesMovingaverageEnum,
+	BasalforcingsFloatingiceMeltingRateEnum,
+	BasalforcingsFloatingiceMeltingRateObsEnum,
+	BasalforcingsGeothermalfluxEnum,
+	BasalforcingsGroundediceMeltingRateEnum,
+	BasalforcingsGroundediceMeltingRateObsEnum,
+	BasalforcingsLinearBasinIdEnum,
+	BasalforcingsPerturbationMeltingRateEnum,
+	BasalforcingsSpatialDeepwaterElevationEnum,
+	BasalforcingsSpatialDeepwaterMeltingRateEnum,
+	BasalforcingsSpatialUpperwaterElevationEnum,
+	BasalforcingsSpatialUpperwaterMeltingRateEnum,
+	BasalforcingsIsmip6BasinIdEnum,
+	BasalforcingsIsmip6TfEnum,
+	BasalforcingsIsmip6TfShelfEnum,
+	BasalforcingsIsmip6MeltAnomalyEnum,
+	BasalforcingsMeltrateFactorEnum,
+	BasalforcingsOceanSalinityEnum,
+	BasalforcingsOceanTempEnum,
+	BasalforcingsPicoBasinIdEnum,
+	BasalforcingsPicoBoxIdEnum,
+	BasalforcingsPicoOverturningCoeffEnum,
+	BasalforcingsPicoSubShelfOceanOverturningEnum,
+	BasalforcingsPicoSubShelfOceanSalinityEnum,
+	BasalforcingsPicoSubShelfOceanTempEnum,
+	BasalStressxEnum,
+	BasalStressyEnum,
+	BasalStressEnum,
+	BaseEnum,
+	BaseOldEnum,
+	BaseSlopeXEnum,
+	BaseSlopeYEnum,
+	BaselineBasalforcingsFloatingiceMeltingRateEnum,
+	BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum,
+	BaselineCalvingCalvingrateEnum,
+	BaselineFrictionEffectivePressureEnum,
+	BaselineSmbMassBalanceEnum,
+	BedEnum,
+	BedGRDEnum,
+	BedEastEnum,
+	BedEastGRDEnum,
+	BedNorthEnum,
+	BedNorthGRDEnum,
+	BedSlopeXEnum,
+	BedSlopeYEnum,
+	BottomPressureEnum,
+	BottomPressureOldEnum,
+	CalvingBasinIdEnum,
+	CalvingCalvingrateEnum,
+	CalvingHabFractionEnum,
+	CalvingAblationrateEnum,
+	CalvingMeltingrateEnum,
+	CalvingStressThresholdFloatingiceEnum,
+	CalvingStressThresholdGroundediceEnum,
+	CalvinglevermannCoeffEnum,
+	CalvingratexEnum,
+	CalvingrateyEnum,
+	CalvingFluxLevelsetEnum,
+	CalvingMeltingFluxLevelsetEnum,
+	ConvergedEnum,
+	CrevasseDepthEnum,
+	DamageDEnum,
+	DamageDOldEnum,
+	DamageDbarEnum,
+	DamageDbarOldEnum,
+	DamageFEnum,
+	DebrisThicknessEnum,
+	DegreeOfChannelizationEnum,
+	DepthBelowSurfaceEnum,
+	DeltaIceThicknessEnum,
+	DeltaTwsEnum,
+	DeltaBottomPressureEnum,
+	DeltaDslEnum,
+	DslOldEnum,
+	DslEnum,
+	DeltaStrEnum,
+	StrOldEnum,
+	StrEnum,
+	DeviatoricStresseffectiveEnum,
+	DeviatoricStressxxEnum,
+	DeviatoricStressxyEnum,
+	DeviatoricStressxzEnum,
+	DeviatoricStressyyEnum,
+	DeviatoricStressyzEnum,
+	DeviatoricStresszzEnum,
+	DeviatoricStress1Enum,
+	DeviatoricStress2Enum,
+	DistanceToCalvingfrontEnum,
+	DistanceToGroundinglineEnum,
+	Domain2DhorizontalEnum,
+	Domain2DverticalEnum,
+	Domain3DEnum,
+	DragCoefficientAbsGradientEnum,
+	DrivingStressXEnum,
+	DrivingStressYEnum,
+	DummyEnum,
+   EffectivePressureEnum,
+	EffectivePressureSubstepEnum,
+	EffectivePressureTransientEnum,
+	EnthalpyEnum,
+	EnthalpyPicardEnum,
+	EplHeadEnum,
+   EplHeadOldEnum,
+	EplHeadSlopeXEnum,
+	EplHeadSlopeYEnum,
+	EplHeadSubstepEnum,
+   EplHeadTransientEnum,
+	EsaEmotionEnum,
+	EsaNmotionEnum,
+	EsaRotationrateEnum,
+	EsaStrainratexxEnum,
+	EsaStrainratexyEnum,
+	EsaStrainrateyyEnum,
+	EsaUmotionEnum,
+	EsaXmotionEnum,
+	EsaYmotionEnum,
+	EtaDiffEnum,
+	FlowequationBorderFSEnum,
+	FrictionAsEnum,
+	FrictionCEnum,
+	FrictionCmaxEnum,
+	FrictionCoefficientEnum,
+	FrictionCoefficientcoulombEnum,
+	FrictionEffectivePressureEnum,
+	FrictionKEnum,
+	FrictionMEnum,
+	FrictionPEnum,
+	FrictionPressureAdjustedTemperatureEnum,
+	FrictionQEnum,
+	FrictionSedimentCompressibilityCoefficientEnum,
+	FrictionTillFrictionAngleEnum,
+	FrictionWaterLayerEnum,
+	FrictionWaterPressureEnum,
+	FrictionWaterPressureNoiseEnum,
+	FrictionfEnum,
+	FrontalForcingsBasinIdEnum,
+	FrontalForcingsSubglacialDischargearmaEnum,
+	FrontalForcingsSubglacialDischargeEnum,
+	GeometryHydrostaticRatioEnum,
+	NGiaEnum,
+	NGiaRateEnum,
+	UGiaEnum,
+	UGiaRateEnum,
+	GradientEnum,
+	GroundinglineHeightEnum,
+	HydraulicPotentialEnum,
+	HydraulicPotentialOldEnum,
+	HydrologyBasalFluxEnum,
+	HydrologyBasinsIdEnum,
+	HydrologyBumpHeightEnum,
+	HydrologyBumpSpacingEnum,
+	HydrologyChannelConductivityEnum,
+	HydrologydcBasalMoulinInputEnum,
+	HydrologydcEplThicknessEnum,
+	HydrologydcEplThicknessOldEnum,
+	HydrologydcEplThicknessSubstepEnum,
+	HydrologydcEplThicknessTransientEnum,
+	HydrologydcMaskEplactiveEltEnum,
+	HydrologydcMaskEplactiveNodeEnum,
+	HydrologydcMaskThawedEltEnum,
+	HydrologydcMaskThawedNodeEnum,
+	HydrologydcSedimentTransmitivityEnum,
+   HydrologyDrainageRateEnum,
+   HydrologyEnglacialInputEnum,
+	HydrologyGapHeightEnum,
+	HydrologyGapHeightXEnum,
+	HydrologyGapHeightXXEnum,
+	HydrologyGapHeightYEnum,
+	HydrologyGapHeightYYEnum,
+	HydrologyHeadEnum,
+	HydrologyHeadOldEnum,
+	HydrologyMoulinInputEnum,
+	HydrologyNeumannfluxEnum,
+	HydrologyReynoldsEnum,
+	HydrologySheetConductivityEnum,
+	HydrologySheetThicknessEnum,
+	HydrologySheetThicknessOldEnum,
+	HydrologyTwsEnum,
+	HydrologyTwsSpcEnum,
+	HydrologyTwsAnalysisEnum,
+	HydrologyWatercolumnMaxEnum,
+	HydrologyWaterVxEnum,
+	HydrologyWaterVyEnum,
+	HydrologyMaskNodeActivationEnum,
+	DebrisMaskNodeActivationEnum,
+	IceEnum,
+	IceMaskNodeActivationEnum,
+	InputEnum,
+	InversionCostFunctionsCoefficientsEnum,
+	InversionSurfaceObsEnum,
+	InversionThicknessObsEnum,
+	InversionVelObsEnum,
+	InversionVxObsEnum,
+	InversionVyObsEnum,
+	LevelsetfunctionSlopeXEnum,
+	LevelsetfunctionSlopeYEnum,
+	LevelsetObservationEnum,
+	LoadingforceXEnum,
+	LoadingforceYEnum,
+	LoadingforceZEnum,
+	MaskOceanLevelsetEnum,
+	MaskIceLevelsetEnum,
+	MaskIceRefLevelsetEnum,
+	MasstransportSpcthicknessEnum,
+	MaterialsRheologyBEnum,
+	MaterialsRheologyBbarEnum,
+	MaterialsRheologyEEnum,
+	MaterialsRheologyEbarEnum,
+	MaterialsRheologyEcEnum,
+	MaterialsRheologyEcbarEnum,
+	MaterialsRheologyEsEnum,
+	MaterialsRheologyEsbarEnum,
+	MaterialsRheologyNEnum,
+	MeshScaleFactorEnum,
+	MeshVertexonbaseEnum,
+	MeshVertexonboundaryEnum,
+	MeshVertexonsurfaceEnum,
+	MisfitEnum,
+	MovingFrontalVxEnum,
+	MovingFrontalVyEnum,
+	NeumannfluxEnum,
+	NewDamageEnum,
+	NodeEnum,
+	OmegaAbsGradientEnum,
+	OceantransportSpcbottompressureEnum,
+	OceantransportSpcstrEnum,
+	OceantransportSpcdslEnum,
+	P0Enum,
+	P1Enum,
+	PartitioningEnum,
+	PressureEnum,
+	RadarEnum,
+	RadarAttenuationMacGregorEnum,
+	RadarAttenuationWolffEnum,
+	RadarIcePeriodEnum,
+	RadarPowerMacGregorEnum,
+	RadarPowerWolffEnum,
+	RheologyBAbsGradientEnum,
+	RheologyBInitialguessEnum,
+	RheologyBInitialguessMisfitEnum,
+	RheologyBbarAbsGradientEnum,
+	SampleEnum,
+	SampleOldEnum,
+	SampleNoiseEnum,
+	SamplingBetaEnum,
+	SamplingKappaEnum,
+	SamplingPhiEnum,
+	SamplingTauEnum,
+	SealevelEnum,
+	SealevelGRDEnum,
+	SatGraviGRDEnum,
+	SealevelBarystaticMaskEnum,
+	SealevelBarystaticIceMaskEnum,
+	SealevelBarystaticIceWeightsEnum,
+	SealevelBarystaticIceAreaEnum,
+	SealevelBarystaticIceLatbarEnum,
+	SealevelBarystaticIceLongbarEnum,
+	SealevelBarystaticIceLoadEnum,
+	SealevelBarystaticHydroMaskEnum,
+	SealevelBarystaticHydroWeightsEnum,
+	SealevelBarystaticHydroAreaEnum,
+	SealevelBarystaticHydroLatbarEnum,
+	SealevelBarystaticHydroLongbarEnum,
+	SealevelBarystaticHydroLoadEnum,
+	SealevelBarystaticBpMaskEnum,
+	SealevelBarystaticBpWeightsEnum,
+	SealevelBarystaticBpAreaEnum,
+	SealevelBarystaticBpLoadEnum,
+	SealevelBarystaticOceanMaskEnum,
+	SealevelBarystaticOceanWeightsEnum,
+	SealevelBarystaticOceanAreaEnum,
+	SealevelBarystaticOceanLatbarEnum,
+	SealevelBarystaticOceanLongbarEnum,
+	SealevelBarystaticOceanLoadEnum,
+	SealevelNEsaEnum,
+	SealevelNEsaRateEnum,
+	SealevelRSLEnum,
+	BslcEnum,
+	BslcIceEnum,
+	BslcHydroEnum,
+	BslcOceanEnum,
+	BslcRateEnum,
+	GmtslcEnum,
+	SealevelRSLBarystaticEnum,
+	SealevelRSLRateEnum,
+	SealevelUGrdEnum,
+	SealevelNGrdEnum,
+	SealevelUEastEsaEnum,
+	SealevelUNorthEsaEnum,
+	SealevelchangeIndicesEnum,
+	SealevelchangeConvolutionVerticesEnum,
+	SealevelchangeAlphaIndexEnum,
+	SealevelchangeAzimuthIndexEnum,
+	SealevelchangeGrotEnum,
+	SealevelchangeGSatGravirotEnum,
+	SealevelchangeGUrotEnum,
+	SealevelchangeGNrotEnum,
+	SealevelchangeGErotEnum,
+	SealevelchangeAlphaIndexOceanEnum,
+	SealevelchangeAlphaIndexIceEnum,
+	SealevelchangeAlphaIndexHydroEnum,
+	SealevelchangeAzimuthIndexOceanEnum,
+	SealevelchangeAzimuthIndexIceEnum,
+	SealevelchangeAzimuthIndexHydroEnum,
+	SealevelchangeViscousRSLEnum,
+	SealevelchangeViscousSGEnum,
+	SealevelchangeViscousUEnum,
+	SealevelchangeViscousNEnum,
+	SealevelchangeViscousEEnum,
+	CouplingTransferCountEnum,
+	SedimentHeadEnum,
+	SedimentHeadOldEnum,
+	SedimentHeadSubstepEnum,
+	SedimentHeadTransientEnum,
+	SedimentHeadResidualEnum,
+	SedimentHeadStackedEnum,
+	SigmaNNEnum,
+	SigmaVMEnum,
+	SmbAccumulatedECEnum,
+	SmbAccumulatedMassBalanceEnum,
+	SmbAccumulatedMeltEnum,
+	SmbAccumulatedPrecipitationEnum,
+	SmbAccumulatedRainEnum,
+	SmbAccumulatedRefreezeEnum,
+	SmbAccumulatedRunoffEnum,
+	SmbAlbedoEnum,
+	SmbAlbedoInitEnum,
+	SmbAlbedoSnowEnum,
+	SmbAlbedoSnowInitEnum,
+	SmbAEnum,
+	SmbAdiffEnum,
+	SmbAValueEnum,
+	SmbAccumulationEnum,
+	SmbAdiffiniEnum,
+	SmbAiniEnum,
+   SmbARMANoiseEnum,
+	SmbBasinsIdEnum,
+	SmbBMaxEnum,
+	SmbBMinEnum,
+	SmbBNegEnum,
+	SmbBPosEnum,
+	SmbCEnum,
+	SmbCcsnowValueEnum,
+	SmbCciceValueEnum,
+	SmbCotValueEnum,
+	SmbDEnum,
+	SmbDailyairdensityEnum,
+	SmbDailyairhumidityEnum,
+	SmbDailydlradiationEnum,
+	SmbDailydsradiationEnum,
+	SmbDailypressureEnum,
+	SmbDailyrainfallEnum,
+	SmbDailysnowfallEnum,
+	SmbDailytemperatureEnum,
+	SmbDailywindspeedEnum,
+	SmbDiniEnum,
+	SmbDlwrfEnum,
+	SmbDulwrfValueEnum,
+	SmbDswrfEnum,
+	SmbDswdiffrfEnum,
+	SmbDzAddEnum,
+	SmbDzEnum,
+	SmbDzMinEnum,
+	SmbDzTopEnum,
+	SmbDziniEnum,
+	SmbEAirEnum,
+	SmbECEnum,
+	SmbECDtEnum,
+	SmbECiniEnum,
+	SmbElaEnum,
+	SmbEvaporationEnum,
+	SmbFACEnum,
+	SmbGdnEnum,
+	SmbGdniniEnum,
+	SmbGspEnum,
+	SmbGspiniEnum,
+	SmbHIceEnum,
+	SmbHIceInitEnum,
+	SmbHSnowEnum,
+	SmbHSnowInitEnum,
+	SmbHrefEnum,
+	SmbIsInitializedEnum,
+	SmbMAddEnum,
+	SmbMassBalanceEnum,
+	SmbMassBalanceSnowEnum,
+	SmbMassBalanceIceEnum,
+	SmbMassBalanceSemicEnum,
+   SmbMassBalanceSubstepEnum,
+   SmbMassBalanceTransientEnum,
+	SmbMaskEnum,
+	SmbMeanLHFEnum,
+	SmbMeanSHFEnum,
+	SmbMeanULWEnum,
+	SmbMeltEnum,
+	SmbMInitnum,
+	SmbMonthlytemperaturesEnum,
+	SmbMonthlydsradiationEnum,
+        SmbMonthlydlradiationEnum,
+        SmbMonthlywindspeedEnum,
+        SmbMonthlyairhumidityEnum,
+	SmbMSurfEnum,
+	SmbNetLWEnum,
+	SmbNetSWEnum,
+	SmbPAirEnum,
+	SmbPEnum,
+	SmbPddfacIceEnum,
+	SmbPddfacSnowEnum,
+	SmbPrecipitationEnum,
+	SmbPrecipitationsAnomalyEnum,
+	SmbDsradiationAnomalyEnum,
+        SmbDlradiationAnomalyEnum,
+        SmbWindspeedAnomalyEnum,
+        SmbAirhumidityAnomalyEnum,
+	SmbPrecipitationsLgmEnum,
+	SmbPrecipitationsPresentdayEnum,
+	SmbPrecipitationsReconstructedEnum,
+	SmbRainEnum,
+	SmbReEnum,
+	SmbRefreezeEnum,
+	SmbReiniEnum,
+	SmbRunoffEnum,
+   SmbRunoffSubstepEnum,
+   SmbRunoffTransientEnum,
+	SmbS0gcmEnum,
+	SmbS0pEnum,
+	SmbS0tEnum,
+	SmbSemicQmrEnum,
+	SmbSemicQmrInitEnum,
+	SmbSizeiniEnum,
+	SmbSmbCorrEnum,
+	SmbSmbrefEnum,
+	SmbSzaValueEnum,
+	SmbSummerMeltEnum,
+        SmbSummerAlbedoEnum,
+        SmbSnowheightEnum,
+	SmbTEnum,
+	SmbTaEnum,
+	SmbTampEnum,
+	SmbTeValueEnum,
+	SmbTemperaturesAnomalyEnum,
+	SmbTemperaturesLgmEnum,
+	SmbTemperaturesPresentdayEnum,
+	SmbTemperaturesReconstructedEnum,
+	SmbTiniEnum,
+	SmbTmeanEnum,
+	SmbTzEnum,
+	SmbValuesAutoregressionEnum,
+	SmbValuesMovingaverageEnum,
+	SmbVEnum,
+	SmbVmeanEnum,
+	SmbVzEnum,
+	SmbWEnum,
+	SmbWAddEnum,
+	SmbWiniEnum,
+	SmbZMaxEnum,
+	SmbZMinEnum,
+	SmbZTopEnum,
+	SmbZYEnum,
+	SolidearthExternalDisplacementEastRateEnum,
+	SolidearthExternalDisplacementNorthRateEnum,
+	SolidearthExternalDisplacementUpRateEnum,
+	SolidearthExternalGeoidRateEnum,
+	StochasticForcingDefaultIdEnum,
+	StrainRateeffectiveEnum,
+	StrainRateparallelEnum,
+	StrainRateperpendicularEnum,
+	StrainRatexxEnum,
+	StrainRatexyEnum,
+	StrainRatexzEnum,
+	StrainRateyyEnum,
+	StrainRateyzEnum,
+	StrainRatezzEnum,
+	StressMaxPrincipalEnum,
+	StressTensorxxEnum,
+	StressTensorxyEnum,
+	StressTensorxzEnum,
+	StressTensoryyEnum,
+	StressTensoryzEnum,
+	StressTensorzzEnum,
+	SubglacialdischargeARMANoiseEnum,
+	SubglacialdischargeValuesAutoregressionEnum,
+	SubglacialdischargeValuesMovingaverageEnum,
+	SurfaceAbsMisfitEnum,
+	SurfaceAbsVelMisfitEnum,
+	AreaEnum,
+	SealevelAreaEnum,
+	SurfaceAreaEnum,
+	SurfaceAverageVelMisfitEnum,
+	SurfaceCrevasseEnum,
+	SurfaceEnum,
+	SurfaceOldEnum,
+	SurfaceLogVelMisfitEnum,
+	SurfaceLogVxVyMisfitEnum,
+	SurfaceObservationEnum,
+	SurfaceRelVelMisfitEnum,
+	SurfaceSlopeXEnum,
+	SurfaceSlopeYEnum,
+	TemperatureEnum,
+	TemperaturePDDEnum,
+	TemperaturePicardEnum,
+	TemperatureSEMICEnum,
+   ThermalforcingARMANoiseEnum,
+	ThermalForcingEnum,
+	ThermalforcingValuesAutoregressionEnum,
+	ThermalforcingValuesMovingaverageEnum,
+	ThermalSpctemperatureEnum,
+	ThicknessAbsGradientEnum,
+	ThicknessAbsMisfitEnum,
+	ThicknessAcrossGradientEnum,
+	ThicknessAlongGradientEnum,
+	ThicknessEnum,
+	ThicknessOldEnum,
+	ThicknessPositiveEnum,
+	ThicknessResidualEnum,
+	TransientAccumulatedDeltaIceThicknessEnum,
+	VelEnum,
+	VxAverageEnum,
+	VxBaseEnum,
+	VxDebrisEnum,
+	VxEnum,
+	VxMeshEnum,
+	VxObsEnum,
+	VxShearEnum,
+	VxSurfaceEnum,
+	VyAverageEnum,
+	VyBaseEnum,
+	VyDebrisEnum,
+	VyEnum,
+	VyMeshEnum,
+	VyObsEnum,
+	VyShearEnum,
+	VySurfaceEnum,
+	VzEnum,
+	VzFSEnum,
+	VzHOEnum,
+	VzMeshEnum,
+	VzSSAEnum,
+	WaterColumnOldEnum,
+	WatercolumnEnum,
+	WaterfractionDrainageEnum,
+	WaterfractionDrainageIntegratedEnum,
+	WaterfractionEnum,
+	WaterheightEnum,
+	WaterPressureArmaPerturbationEnum,
+   WaterPressureValuesAutoregressionEnum,
+   WaterPressureValuesMovingaverageEnum,
+	WeightsLevelsetObservationEnum,
+	WeightsMeltObservationEnum,
+	WeightsVxObservationEnum,
+	WeightsVyObservationEnum,
+	WeightsSurfaceObservationEnum,
+	OldAccumulatedDeltaBottomPressureEnum,
+	OldAccumulatedDeltaIceThicknessEnum,
+	OldAccumulatedDeltaTwsEnum,
+	Outputdefinition1Enum,
+	Outputdefinition10Enum,
+	Outputdefinition11Enum,
+	Outputdefinition12Enum,
+	Outputdefinition13Enum,
+	Outputdefinition14Enum,
+	Outputdefinition15Enum,
+	Outputdefinition16Enum,
+	Outputdefinition17Enum,
+	Outputdefinition18Enum,
+	Outputdefinition19Enum,
+	Outputdefinition20Enum,
+	Outputdefinition21Enum,
+	Outputdefinition22Enum,
+	Outputdefinition23Enum,
+	Outputdefinition24Enum,
+	Outputdefinition25Enum,
+	Outputdefinition26Enum,
+	Outputdefinition27Enum,
+	Outputdefinition28Enum,
+	Outputdefinition29Enum,
+	Outputdefinition2Enum,
+	Outputdefinition30Enum,
+	Outputdefinition31Enum,
+	Outputdefinition32Enum,
+	Outputdefinition33Enum,
+	Outputdefinition34Enum,
+	Outputdefinition35Enum,
+	Outputdefinition36Enum,
+	Outputdefinition37Enum,
+	Outputdefinition38Enum,
+	Outputdefinition39Enum,
+	Outputdefinition3Enum,
+	Outputdefinition40Enum,
+	Outputdefinition41Enum,
+	Outputdefinition42Enum,
+	Outputdefinition43Enum,
+	Outputdefinition44Enum,
+	Outputdefinition45Enum,
+	Outputdefinition46Enum,
+	Outputdefinition47Enum,
+	Outputdefinition48Enum,
+	Outputdefinition49Enum,
+	Outputdefinition4Enum,
+	Outputdefinition50Enum,
+	Outputdefinition51Enum,
+	Outputdefinition52Enum,
+	Outputdefinition53Enum,
+	Outputdefinition54Enum,
+	Outputdefinition55Enum,
+	Outputdefinition56Enum,
+	Outputdefinition57Enum,
+	Outputdefinition58Enum,
+	Outputdefinition59Enum,
+	Outputdefinition5Enum,
+	Outputdefinition60Enum,
+	Outputdefinition61Enum,
+	Outputdefinition62Enum,
+	Outputdefinition63Enum,
+	Outputdefinition64Enum,
+	Outputdefinition65Enum,
+	Outputdefinition66Enum,
+	Outputdefinition67Enum,
+	Outputdefinition68Enum,
+	Outputdefinition69Enum,
+	Outputdefinition6Enum,
+	Outputdefinition70Enum,
+	Outputdefinition71Enum,
+	Outputdefinition72Enum,
+	Outputdefinition73Enum,
+	Outputdefinition74Enum,
+	Outputdefinition75Enum,
+	Outputdefinition76Enum,
+	Outputdefinition77Enum,
+	Outputdefinition78Enum,
+	Outputdefinition79Enum,
+	Outputdefinition7Enum,
+	Outputdefinition80Enum,
+	Outputdefinition81Enum,
+	Outputdefinition82Enum,
+	Outputdefinition83Enum,
+	Outputdefinition84Enum,
+	Outputdefinition85Enum,
+	Outputdefinition86Enum,
+	Outputdefinition87Enum,
+	Outputdefinition88Enum,
+	Outputdefinition89Enum,
+	Outputdefinition8Enum,
+	Outputdefinition90Enum,
+	Outputdefinition91Enum,
+	Outputdefinition92Enum,
+	Outputdefinition93Enum,
+	Outputdefinition94Enum,
+	Outputdefinition95Enum,
+	Outputdefinition96Enum,
+	Outputdefinition97Enum,
+	Outputdefinition98Enum,
+	Outputdefinition99Enum,
+	Outputdefinition9Enum,
+	Outputdefinition100Enum,
+	/*}}}*/
+	InputsENDEnum,
+	/*Other{{{*/
+	AbsoluteEnum,
+	AdaptiveTimesteppingEnum,
+	AdjointBalancethickness2AnalysisEnum,
+	AdjointBalancethicknessAnalysisEnum,
+	AdjointHorizAnalysisEnum,
+	AgeAnalysisEnum,
+	AggressiveMigrationEnum,
+	AmrBamgEnum,
+	AmrNeopzEnum,
+	AndroidFrictionCoefficientEnum,
+	ArrheniusEnum,
+	AutodiffJacobianEnum,
+	Balancethickness2AnalysisEnum,
+	Balancethickness2SolutionEnum,
+	BalancethicknessAnalysisEnum,
+	BalancethicknessApparentMassbalanceEnum,
+	BalancethicknessSoftAnalysisEnum,
+	BalancethicknessSoftSolutionEnum,
+	BalancethicknessSolutionEnum,
+	BalancevelocityAnalysisEnum,
+	BalancevelocitySolutionEnum,
+	BasalforcingsIsmip6Enum,
+	BasalforcingsPicoEnum,
+	BeckmannGoosseFloatingMeltRateEnum,
+	BedSlopeSolutionEnum,
+	BoolExternalResultEnum,
+	BoolInputEnum,
+	IntInputEnum,
+	DoubleInputEnum,
+	BoolParamEnum,
+	BoundaryEnum,
+	BuddJackaEnum,
+	CalvingDev2Enum,
+	CalvingHabEnum,
+	CalvingLevermannEnum,
+	CalvingTestEnum,
+	CalvingParameterizationEnum,
+	CalvingCalvingMIPEnum,
+	CalvingVonmisesEnum,
+	CalvingVonmisesADEnum,
+	CalvingPollardEnum,
+	CfdragcoeffabsgradEnum,
+	CfdragcoeffabsgradtransientEnum,
+	CfrheologybbarabsgradEnum,
+	CfrheologybbarabsgradtransientEnum,
+	CfsurfacelogvelEnum,
+	CfsurfacesquareEnum,
+	CfsurfacesquaretransientEnum,
+	CflevelsetmisfitEnum,
+	ChannelEnum,
+	ChannelAreaEnum,
+	ChannelAreaOldEnum,
+	ChannelDischargeEnum,
+	ClosedEnum,
+	ColinearEnum,
+	ConstraintsEnum,
+	ContactEnum,
+	ContourEnum,
+	ContoursEnum,
+	ControlInputEnum,
+	ControlInputGradEnum,
+	ControlInputMaxsEnum,
+	ControlInputMinsEnum,
+	ControlInputValuesEnum,
+	ControlParamEnum,
+	CrouzeixRaviartEnum,
+	CuffeyEnum,
+	CuffeyTemperateEnum,
+	DamageEvolutionAnalysisEnum,
+	DamageEvolutionSolutionEnum,
+	DataSetEnum,
+	DataSetParamEnum,
+	DatasetInputEnum,
+	DebrisAnalysisEnum,
+	DebrisSolutionEnum,
+	DefaultAnalysisEnum,
+	DefaultCalvingEnum,
+	DenseEnum,
+	DependentObjectEnum,
+	DepthAverageAnalysisEnum,
+	DeviatoricStressErrorEstimatorEnum,
+	DivergenceEnum,
+	Domain3DsurfaceEnum,
+	DoubleArrayInputEnum,
+	ArrayInputEnum,
+	IntArrayInputEnum,
+	DoubleExternalResultEnum,
+	DoubleMatArrayParamEnum,
+	DoubleMatExternalResultEnum,
+	DoubleMatParamEnum,
+	DoubleParamEnum,
+	DoubleVecParamEnum,
+	ElementEnum,
+	ElementHookEnum,
+	ElementSIdEnum,
+	EnthalpyAnalysisEnum,
+	EsaAnalysisEnum,
+	EsaSolutionEnum,
+	EsaTransitionsEnum,
+	ExternalResultEnum,
+	ExtrapolationAnalysisEnum,
+	ExtrudeFromBaseAnalysisEnum,
+	ExtrudeFromTopAnalysisEnum,
+	FSApproximationEnum,
+	FSSolverEnum,
+	FSpressureEnum,
+	FSvelocityEnum,
+	FemModelEnum,
+	FileParamEnum,
+	FixedTimesteppingEnum,
+	FloatingAreaEnum,
+	FloatingAreaScaledEnum,
+	FloatingMeltRateEnum,
+	FreeEnum,
+	FreeSurfaceBaseAnalysisEnum,
+	FreeSurfaceTopAnalysisEnum,
+	FrontalForcingsDefaultEnum,
+	FrontalForcingsRignotEnum,
+	FrontalForcingsRignotarmaEnum,
+	FsetEnum,
+	FullMeltOnPartiallyFloatingEnum,
+	GLheightadvectionAnalysisEnum,
+	GaussPentaEnum,
+	GaussSegEnum,
+	GaussTetraEnum,
+	GaussTriaEnum,
+	GenericOptionEnum,
+	GenericParamEnum,
+	GenericExternalResultEnum,
+	Gradient1Enum,
+	Gradient2Enum,
+	Gradient3Enum,
+	Gradient4Enum,
+	GroundedAreaEnum,
+	GroundedAreaScaledEnum,
+	GroundingOnlyEnum,
+	GroundinglineMassFluxEnum,
+	GsetEnum,
+	GslEnum,
+	HOApproximationEnum,
+	HOFSApproximationEnum,
+	HookEnum,
+	HydrologyArmapwAnalysisEnum,
+   HydrologyarmapwEnum,
+	HydrologyDCEfficientAnalysisEnum,
+	HydrologyDCInefficientAnalysisEnum,
+	HydrologyGlaDSAnalysisEnum,
+	HydrologyGlaDSEnum,
+	HydrologyPismAnalysisEnum,
+	HydrologyShaktiAnalysisEnum,
+	HydrologyShreveAnalysisEnum,
+	HydrologySolutionEnum,
+	HydrologySubstepsEnum,
+	HydrologySubTimeEnum,
+	HydrologydcEnum,
+	HydrologypismEnum,
+	HydrologyshaktiEnum,
+	HydrologyshreveEnum,
+	IceMassEnum,
+	IceMassScaledEnum,
+	IceVolumeAboveFloatationEnum,
+	IceVolumeAboveFloatationScaledEnum,
+	IceVolumeEnum,
+	IceVolumeScaledEnum,
+	IcefrontMassFluxEnum,
+	IcefrontMassFluxLevelsetEnum,
+	IncrementalEnum,
+	IndexedEnum,
+	IntExternalResultEnum,
+	ElementInputEnum,
+	IntMatExternalResultEnum,
+	IntMatParamEnum,
+	IntParamEnum,
+	IntVecParamEnum,
+	InputsEnum,
+	InternalEnum,
+	IntersectEnum,
+	InversionVzObsEnum,
+	JEnum,
+	L1L2ApproximationEnum,
+	MOLHOApproximationEnum,
+	L2ProjectionBaseAnalysisEnum,
+	L2ProjectionEPLAnalysisEnum,
+	LACrouzeixRaviartEnum,
+	LATaylorHoodEnum,
+	LambdaSEnum,
+	LevelsetAnalysisEnum,
+	LevelsetfunctionPicardEnum,
+	LinearFloatingMeltRateEnum,
+	LinearFloatingMeltRatearmaEnum,
+	LliboutryDuvalEnum,
+	LoadsEnum,
+	LoveAnalysisEnum,
+	LoveHfEnum,
+	LoveHtEnum,
+	LoveKernelsImagEnum,
+	LoveKernelsRealEnum,
+	LoveKfEnum,
+	LoveKtEnum,
+	LoveLfEnum,
+	LoveLtEnum,
+	LoveTidalHtEnum,
+	LoveTidalKtEnum,
+	LoveTidalLtEnum,
+	LovePMTF1tEnum,
+	LovePMTF2tEnum,
+	LoveYiEnum,
+	LoveRhsEnum,
+	LoveSolutionEnum,
+	MINIEnum,
+	MINIcondensedEnum,
+	MantlePlumeGeothermalFluxEnum,
+	MassFluxEnum,
+	MassconEnum,
+	MassconaxpbyEnum,
+	MassfluxatgateEnum,
+	MasstransportAnalysisEnum,
+	MasstransportSolutionEnum,
+	MatdamageiceEnum,
+	MatenhancediceEnum,
+	MaterialsEnum,
+	MatestarEnum,
+	MaticeEnum,
+	MatlithoEnum,
+	MathydroEnum,
+	MatrixParamEnum,
+	MaxAbsVxEnum,
+	MaxAbsVyEnum,
+	MaxAbsVzEnum,
+	MaxDivergenceEnum,
+	MaxVelEnum,
+	MaxVxEnum,
+	MaxVyEnum,
+	MaxVzEnum,
+	MelangeEnum,
+	MeltingAnalysisEnum,
+	MeshElementsEnum,
+	MeshXEnum,
+	MeshYEnum,
+	MinVelEnum,
+	MinVxEnum,
+	MinVyEnum,
+	MinVzEnum,
+	MismipFloatingMeltRateEnum,
+	MoulinEnum,
+	MpiDenseEnum,
+	MpiEnum,
+	MpiSparseEnum,
+	MumpsEnum,
+	NoFrictionOnPartiallyFloatingEnum,
+	NoMeltOnPartiallyFloatingEnum,
+	NodalEnum,
+	NodalvalueEnum,
+	NodeSIdEnum,
+	NoneApproximationEnum,
+	NoneEnum,
+	NumberedcostfunctionEnum,
+	NyeCO2Enum,
+	NyeH2OEnum,
+	NumericalfluxEnum,
+	OceantransportAnalysisEnum,
+	OceantransportSolutionEnum,
+	OldGradientEnum,
+	OneLayerP4zEnum,
+	OpenEnum,
+	OptionEnum,
+	ParamEnum,
+	ParametersEnum,
+	P0ArrayEnum,
+	P0DGEnum,
+	P1DGEnum,
+	P1P1Enum,
+	P1P1GLSEnum,
+	P1bubbleEnum,
+	P1bubblecondensedEnum,
+	P1xP2Enum,
+	P1xP3Enum,
+	P1xP4Enum,
+	P2Enum,
+	P2bubbleEnum,
+	P2bubblecondensedEnum,
+	P2xP1Enum,
+	P2xP4Enum,
+	PatersonEnum,
+	PengridEnum,
+	PenpairEnum,
+	PentaEnum,
+	PentaInputEnum,
+	ProfilerEnum,
+	ProfilingCurrentFlopsEnum,
+	ProfilingCurrentMemEnum,
+	ProfilingSolutionTimeEnum,
+	RegionaloutputEnum,
+	RegularEnum,
+	RecoveryAnalysisEnum,
+	RiftfrontEnum,
+	SamplingAnalysisEnum,
+	SamplingSolutionEnum,
+	SIAApproximationEnum,
+	SMBarmaEnum,
+	SMBcomponentsEnum,
+	SMBdebrisEvattEnum,
+	SMBd18opddEnum,
+	SMBforcingEnum,
+	SMBgcmEnum,
+	SMBgembEnum,
+	SMBgradientsEnum,
+	SMBgradientscomponentsEnum,
+	SMBgradientselaEnum,
+	SMBhenningEnum,
+	SMBmeltcomponentsEnum,
+	SMBpddEnum,
+	SMBpddSicopolisEnum,
+	SMBsemicEnum,
+	SSAApproximationEnum,
+	SSAFSApproximationEnum,
+	SSAHOApproximationEnum,
+	ScaledEnum,
+	SealevelAbsoluteEnum,
+	SealevelEmotionEnum,
+	SealevelchangePolarMotionXEnum,
+	SealevelchangePolarMotionYEnum,
+	SealevelchangePolarMotionZEnum,
+	SealevelchangePolarMotionEnum,
+	SealevelNmotionEnum,
+	SealevelUmotionEnum,
+	SealevelchangeAnalysisEnum,
+	SegEnum,
+	SegInputEnum,
+	SegmentEnum,
+	SegmentRiftfrontEnum,
+	SeparateEnum,
+	SeqEnum,
+	SmbAnalysisEnum,
+	SmbSolutionEnum,
+	SmoothAnalysisEnum,
+	SoftMigrationEnum,
+	SpatialLinearFloatingMeltRateEnum,
+	SpcDynamicEnum,
+	SpcStaticEnum,
+	SpcTransientEnum,
+	SsetEnum,
+	StatisticsSolutionEnum,
+	SteadystateSolutionEnum,
+	StressIntensityFactorEnum,
+	StressbalanceAnalysisEnum,
+	StressbalanceConvergenceNumStepsEnum,
+	StressbalanceSIAAnalysisEnum,
+	StressbalanceSolutionEnum,
+	StressbalanceVerticalAnalysisEnum,
+	StringArrayParamEnum,
+	StringExternalResultEnum,
+	StringParamEnum,
+	SubelementFriction1Enum,
+	SubelementFriction2Enum,
+	SubelementMelt1Enum,
+	SubelementMelt2Enum,
+	SubelementMigrationEnum,
+	SurfaceSlopeSolutionEnum,
+	TaylorHoodEnum,
+	TetraEnum,
+	TetraInputEnum,
+	ThermalAnalysisEnum,
+	ThermalSolutionEnum,
+	ThicknessErrorEstimatorEnum,
+	TotalCalvingFluxLevelsetEnum,
+	TotalCalvingMeltingFluxLevelsetEnum,
+	TotalFloatingBmbEnum,
+	TotalFloatingBmbScaledEnum,
+	TotalGroundedBmbEnum,
+	TotalGroundedBmbScaledEnum,
+	TotalSmbEnum,
+	TotalSmbScaledEnum,
+	TotalSmbRefreezeEnum,
+	TotalSmbMeltEnum,
+	TransientArrayParamEnum,
+	TransientInputEnum,
+	TransientParamEnum,
+	TransientSolutionEnum,
+	TriaEnum,
+	TriaInputEnum,
+	UzawaPressureAnalysisEnum,
+	VectorParamEnum,
+	VertexEnum,
+	VertexLIdEnum,
+	VertexPIdEnum,
+	VertexSIdEnum,
+	VerticesEnum,
+	ViscousHeatingEnum,
+	WaterEnum,
+	XTaylorHoodEnum,
+	XYEnum,
+	XYZEnum,
+	/*}}}*/
+	/*Unused?{{{*/
+	BalancethicknessD0Enum,
+	BalancethicknessDiffusionCoefficientEnum,
+	BilinearInterpEnum,
+	CalvingdevCoeffEnum,
+	DeviatoricStressEnum,
+	EtaAbsGradientEnum,
+	MeshZEnum,
+	NearestInterpEnum,
+	OutputdefinitionListEnum,
+	SealevelObsEnum,
+	SealevelWeightsEnum,
+	StrainRateEnum,
+	StressTensorEnum,
+	StressbalanceViscosityOvershootEnum,
+	SubelementMigration4Enum,
+	TimesteppingTimeAdaptEnum,
+	TriangleInterpEnum,
+	/*}}}*/
+	MaximumNumberOfDefinitionsEnum
+};
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/EnumToStringx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/EnumToStringx.cpp	(revision 27955)
@@ -0,0 +1,1821 @@
+/*
+* \file EnumToStringx.cpp:
+* \brief: output string associated with enum
+*
+*   WARNING: DO NOT MODIFY THIS FILE
+*            this file has been automatically generated by Synchronize.sh
+*            Please read README for more information
+*/
+
+#include <cstring>
+#include "./Enum.h"
+#include "../Exceptions/exceptions.h"
+#include "../MemOps/MemOps.h"
+
+const char* EnumToStringx(int en){
+
+	switch(en){
+
+		case ParametersSTARTEnum : return "ParametersSTART";
+		case AdolcParamEnum : return "AdolcParam";
+		case AgeStabilizationEnum : return "AgeStabilization";
+		case AgeNumRequestedOutputsEnum : return "AgeNumRequestedOutputs";
+		case AgeRequestedOutputsEnum : return "AgeRequestedOutputs";
+		case AmrDeviatoricErrorGroupThresholdEnum : return "AmrDeviatoricErrorGroupThreshold";
+		case AmrDeviatoricErrorMaximumEnum : return "AmrDeviatoricErrorMaximum";
+		case AmrDeviatoricErrorResolutionEnum : return "AmrDeviatoricErrorResolution";
+		case AmrDeviatoricErrorThresholdEnum : return "AmrDeviatoricErrorThreshold";
+		case AmrErrEnum : return "AmrErr";
+		case AmrFieldEnum : return "AmrField";
+		case AmrGradationEnum : return "AmrGradation";
+		case AmrGroundingLineDistanceEnum : return "AmrGroundingLineDistance";
+		case AmrGroundingLineResolutionEnum : return "AmrGroundingLineResolution";
+		case AmrHmaxEnum : return "AmrHmax";
+		case AmrHminEnum : return "AmrHmin";
+		case AmrIceFrontDistanceEnum : return "AmrIceFrontDistance";
+		case AmrIceFrontResolutionEnum : return "AmrIceFrontResolution";
+		case AmrKeepMetricEnum : return "AmrKeepMetric";
+		case AmrLagEnum : return "AmrLag";
+		case AmrLevelMaxEnum : return "AmrLevelMax";
+		case AmrRestartEnum : return "AmrRestart";
+		case AmrThicknessErrorGroupThresholdEnum : return "AmrThicknessErrorGroupThreshold";
+		case AmrThicknessErrorMaximumEnum : return "AmrThicknessErrorMaximum";
+		case AmrThicknessErrorResolutionEnum : return "AmrThicknessErrorResolution";
+		case AmrThicknessErrorThresholdEnum : return "AmrThicknessErrorThreshold";
+		case AmrTypeEnum : return "AmrType";
+		case AnalysisCounterEnum : return "AnalysisCounter";
+		case AnalysisTypeEnum : return "AnalysisType";
+		case AugmentedLagrangianREnum : return "AugmentedLagrangianR";
+		case AugmentedLagrangianRholambdaEnum : return "AugmentedLagrangianRholambda";
+		case AugmentedLagrangianRhopEnum : return "AugmentedLagrangianRhop";
+		case AugmentedLagrangianRlambdaEnum : return "AugmentedLagrangianRlambda";
+		case AugmentedLagrangianThetaEnum : return "AugmentedLagrangianTheta";
+		case AutodiffCbufsizeEnum : return "AutodiffCbufsize";
+		case AutodiffDependentObjectsEnum : return "AutodiffDependentObjects";
+		case AutodiffDriverEnum : return "AutodiffDriver";
+		case AutodiffFosForwardIndexEnum : return "AutodiffFosForwardIndex";
+		case AutodiffFosReverseIndexEnum : return "AutodiffFosReverseIndex";
+		case AutodiffFovForwardIndicesEnum : return "AutodiffFovForwardIndices";
+		case AutodiffGcTriggerMaxSizeEnum : return "AutodiffGcTriggerMaxSize";
+		case AutodiffGcTriggerRatioEnum : return "AutodiffGcTriggerRatio";
+		case AutodiffIsautodiffEnum : return "AutodiffIsautodiff";
+		case AutodiffLbufsizeEnum : return "AutodiffLbufsize";
+		case AutodiffNumDependentsEnum : return "AutodiffNumDependents";
+		case AutodiffNumIndependentsEnum : return "AutodiffNumIndependents";
+		case AutodiffObufsizeEnum : return "AutodiffObufsize";
+		case AutodiffTapeAllocEnum : return "AutodiffTapeAlloc";
+		case AutodiffTbufsizeEnum : return "AutodiffTbufsize";
+		case AutodiffXpEnum : return "AutodiffXp";
+		case BalancethicknessStabilizationEnum : return "BalancethicknessStabilization";
+		case BarystaticContributionsEnum : return "BarystaticContributions";
+		case BasalforcingsARMATimestepEnum : return "BasalforcingsARMATimestep";
+		case BasalforcingsARMAarOrderEnum : return "BasalforcingsARMAarOrder";
+		case BasalforcingsARMAmaOrderEnum : return "BasalforcingsARMAmaOrder";
+		case BasalforcingsBottomplumedepthEnum : return "BasalforcingsBottomplumedepth";
+		case BasalforcingsCrustthicknessEnum : return "BasalforcingsCrustthickness";
+		case BasalforcingsDeepwaterElevationEnum : return "BasalforcingsDeepwaterElevation";
+		case BasalforcingsDeepwaterMeltingRateEnum : return "BasalforcingsDeepwaterMeltingRate";
+		case BasalforcingsDtbgEnum : return "BasalforcingsDtbg";
+		case BasalforcingsEnum : return "Basalforcings";
+		case BasalforcingsIsmip6AverageTfEnum : return "BasalforcingsIsmip6AverageTf";
+		case BasalforcingsIsmip6BasinAreaEnum : return "BasalforcingsIsmip6BasinArea";
+		case BasalforcingsIsmip6DeltaTEnum : return "BasalforcingsIsmip6DeltaT";
+		case BasalforcingsIsmip6Gamma0Enum : return "BasalforcingsIsmip6Gamma0";
+		case BasalforcingsIsmip6IsLocalEnum : return "BasalforcingsIsmip6IsLocal";
+		case BasalforcingsIsmip6NumBasinsEnum : return "BasalforcingsIsmip6NumBasins";
+		case BasalforcingsIsmip6TfDepthsEnum : return "BasalforcingsIsmip6TfDepths";
+		case BasalforcingsLinearNumBasinsEnum : return "BasalforcingsLinearNumBasins";
+		case BasalforcingsLinearNumBreaksEnum : return "BasalforcingsLinearNumBreaks";
+		case BasalforcingsLinearNumParamsEnum : return "BasalforcingsLinearNumParams";
+		case BasalforcingsMantleconductivityEnum : return "BasalforcingsMantleconductivity";
+		case BasalforcingsNusseltEnum : return "BasalforcingsNusselt";
+		case BasalforcingsARMAarlagcoefsEnum : return "BasalforcingsARMAarlagcoefs";
+		case BasalforcingsARMAdatebreaksEnum : return "BasalforcingsARMAdatebreaks";
+		case BasalforcingsARMAmalagcoefsEnum : return "BasalforcingsARMAmalagcoefs";
+		case BasalforcingsARMApolyparamsEnum : return "BasalforcingsARMApolyparams";
+		case BasalforcingsIsThermalForcingEnum : return "BasalforcingsIsThermalForcing";
+		case BasalforcingsLowercrustheatEnum : return "BasalforcingsLowercrustheat";
+		case BasalforcingsPicoAverageOverturningEnum : return "BasalforcingsPicoAverageOverturning";
+		case BasalforcingsPicoAverageSalinityEnum : return "BasalforcingsPicoAverageSalinity";
+		case BasalforcingsPicoAverageTemperatureEnum : return "BasalforcingsPicoAverageTemperature";
+		case BasalforcingsPicoBoxAreaEnum : return "BasalforcingsPicoBoxArea";
+		case BasalforcingsPicoFarOceansalinityEnum : return "BasalforcingsPicoFarOceansalinity";
+		case BasalforcingsPicoFarOceantemperatureEnum : return "BasalforcingsPicoFarOceantemperature";
+		case BasalforcingsPicoGammaTEnum : return "BasalforcingsPicoGammaT";
+		case BasalforcingsPicoIsplumeEnum : return "BasalforcingsPicoIsplume";
+		case BasalforcingsPicoMaxboxcountEnum : return "BasalforcingsPicoMaxboxcount";
+		case BasalforcingsPicoNumBasinsEnum : return "BasalforcingsPicoNumBasins";
+		case BasalforcingsPlumeradiusEnum : return "BasalforcingsPlumeradius";
+		case BasalforcingsPlumexEnum : return "BasalforcingsPlumex";
+		case BasalforcingsPlumeyEnum : return "BasalforcingsPlumey";
+		case BasalforcingsThresholdThicknessEnum : return "BasalforcingsThresholdThickness";
+		case BasalforcingsTopplumedepthEnum : return "BasalforcingsTopplumedepth";
+		case BasalforcingsUppercrustheatEnum : return "BasalforcingsUppercrustheat";
+		case BasalforcingsUppercrustthicknessEnum : return "BasalforcingsUppercrustthickness";
+		case BasalforcingsUpperdepthMeltEnum : return "BasalforcingsUpperdepthMelt";
+		case BasalforcingsUpperwaterElevationEnum : return "BasalforcingsUpperwaterElevation";
+		case BasalforcingsUpperwaterMeltingRateEnum : return "BasalforcingsUpperwaterMeltingRate";
+		case CalvingADStressThresholdFloatingiceEnum : return "CalvingADStressThresholdFloatingice";
+		case CalvingADStressThresholdGroundediceEnum : return "CalvingADStressThresholdGroundedice";
+		case CalvingCrevasseDepthEnum : return "CalvingCrevasseDepth";
+		case CalvingCrevasseThresholdEnum : return "CalvingCrevasseThreshold";
+		case CalvingHeightAboveFloatationEnum : return "CalvingHeightAboveFloatation";
+		case CalvingLawEnum : return "CalvingLaw";
+		case CalvingMinthicknessEnum : return "CalvingMinthickness";
+		case CalvingTestSpeedfactorEnum : return "CalvingTestSpeedfactor";
+		case CalvingTestIndependentRateEnum : return "CalvingTestIndependentRate";
+		case CalvingUseParamEnum : return "CalvingUseParam";
+		case CalvingThetaEnum : return "CalvingTheta";
+		case CalvingAlphaEnum : return "CalvingAlpha";
+		case CalvingXoffsetEnum : return "CalvingXoffset";
+		case CalvingYoffsetEnum : return "CalvingYoffset";
+		case CalvingVelLowerboundEnum : return "CalvingVelLowerbound";
+		case CalvingVelMaxEnum : return "CalvingVelMax";
+		case CalvingVelThresholdEnum : return "CalvingVelThreshold";
+		case CalvingVelUpperboundEnum : return "CalvingVelUpperbound";
+		case CalvingRcEnum : return "CalvingRc";
+		case CalvingNumberofBasinsEnum : return "CalvingNumberofBasins";
+		case ConfigurationTypeEnum : return "ConfigurationType";
+		case ConstantsGEnum : return "ConstantsG";
+		case ConstantsNewtonGravityEnum : return "ConstantsNewtonGravity";
+		case ConstantsReferencetemperatureEnum : return "ConstantsReferencetemperature";
+		case ConstantsYtsEnum : return "ConstantsYts";
+		case ControlInputSizeMEnum : return "ControlInputSizeM";
+		case ControlInputSizeNEnum : return "ControlInputSizeN";
+		case ControlInputInterpolationEnum : return "ControlInputInterpolation";
+		case CumBslcEnum : return "CumBslc";
+		case CumBslcIceEnum : return "CumBslcIce";
+		case CumBslcHydroEnum : return "CumBslcHydro";
+		case CumBslcOceanEnum : return "CumBslcOcean";
+		case CumBslcIcePartitionEnum : return "CumBslcIcePartition";
+		case CumBslcHydroPartitionEnum : return "CumBslcHydroPartition";
+		case CumBslcOceanPartitionEnum : return "CumBslcOceanPartition";
+		case CumGmtslcEnum : return "CumGmtslc";
+		case CumGmslcEnum : return "CumGmslc";
+		case DamageC1Enum : return "DamageC1";
+		case DamageC2Enum : return "DamageC2";
+		case DamageC3Enum : return "DamageC3";
+		case DamageC4Enum : return "DamageC4";
+		case DamageEnum : return "Damage";
+		case DamageEquivStressEnum : return "DamageEquivStress";
+		case DamageEvolutionNumRequestedOutputsEnum : return "DamageEvolutionNumRequestedOutputs";
+		case DamageEvolutionRequestedOutputsEnum : return "DamageEvolutionRequestedOutputs";
+		case DamageHealingEnum : return "DamageHealing";
+		case DamageKappaEnum : return "DamageKappa";
+		case DamageLawEnum : return "DamageLaw";
+		case DamageMaxDamageEnum : return "DamageMaxDamage";
+		case DamageStabilizationEnum : return "DamageStabilization";
+		case DamageStressThresholdEnum : return "DamageStressThreshold";
+		case DamageStressUBoundEnum : return "DamageStressUBound";
+		case DebrisMinThicknessEnum : return "DebrisMinThickness";
+		case DebrisNumRequestedOutputsEnum : return "DebrisNumRequestedOutputs";
+		case DebrisPenaltyFactorEnum : return "DebrisPenaltyFactor";
+		case DebrisRequestedOutputsEnum : return "DebrisRequestedOutputs";
+		case DebrisStabilizationEnum : return "DebrisStabilization";
+		case DebrisRemovalmodelEnum : return "DebrisRemovalmodel";
+		case DebrisDisplacementmodelEnum : return "DebrisDisplacementmodel";
+		case DebrisRemovalSlopeThresholdEnum : return "DebrisRemovalSlopeThreshold";
+		case DebrisRemovalStressThresholdEnum : return "DebrisRemovalStressThreshold";
+		case DebrisPackingFractionEnum : return "DebrisPackingFraction";
+		case DebugProfilingEnum : return "DebugProfiling";
+		case DomainDimensionEnum : return "DomainDimension";
+		case DomainTypeEnum : return "DomainType";
+		case DslModelEnum : return "DslModel";
+		case DslModelidEnum : return "DslModelid";
+		case DslNummodelsEnum : return "DslNummodels";
+		case SolidearthIsExternalEnum : return "SolidearthIsExternal";
+		case SolidearthExternalNatureEnum : return "SolidearthExternalNature";
+		case SolidearthExternalModelidEnum : return "SolidearthExternalModelid";
+		case SolidearthExternalNummodelsEnum : return "SolidearthExternalNummodels";
+		case SolidearthSettingsComputeBpGrdEnum : return "SolidearthSettingsComputeBpGrd";
+		case EarthIdEnum : return "EarthId";
+		case ElasticEnum : return "Elastic";
+		case EplZigZagCounterEnum : return "EplZigZagCounter";
+		case EsaHElasticEnum : return "EsaHElastic";
+		case EsaHemisphereEnum : return "EsaHemisphere";
+		case EsaRequestedOutputsEnum : return "EsaRequestedOutputs";
+		case EsaUElasticEnum : return "EsaUElastic";
+		case ExtrapolationVariableEnum : return "ExtrapolationVariable";
+		case FemModelCommEnum : return "FemModelComm";
+		case FieldsEnum : return "Fields";
+		case FlowequationFeFSEnum : return "FlowequationFeFS";
+		case FlowequationIsFSEnum : return "FlowequationIsFS";
+		case FlowequationIsHOEnum : return "FlowequationIsHO";
+		case FlowequationIsL1L2Enum : return "FlowequationIsL1L2";
+		case FlowequationIsMOLHOEnum : return "FlowequationIsMOLHO";
+		case FlowequationIsSIAEnum : return "FlowequationIsSIA";
+		case FlowequationIsSSAEnum : return "FlowequationIsSSA";
+		case FlowequationIsNitscheEnum : return "FlowequationIsNitsche";
+		case FeFSNitscheGammaEnum : return "FeFSNitscheGamma";
+		case FrictionCouplingEnum : return "FrictionCoupling";
+		case FrictionDeltaEnum : return "FrictionDelta";
+		case FrictionEffectivePressureLimitEnum : return "FrictionEffectivePressureLimit";
+		case FrictionFEnum : return "FrictionF";
+		case FrictionGammaEnum : return "FrictionGamma";
+		case FrictionLawEnum : return "FrictionLaw";
+		case FrictionLinearizeEnum : return "FrictionLinearize";
+		case FrictionPseudoplasticityExponentEnum : return "FrictionPseudoplasticityExponent";
+		case FrictionU0Enum : return "FrictionU0";
+		case FrictionThresholdSpeedEnum : return "FrictionThresholdSpeed";
+		case FrictionVoidRatioEnum : return "FrictionVoidRatio";
+		case FrontalForcingsBasinIcefrontAreaEnum : return "FrontalForcingsBasinIcefrontArea";
+		case FrontalForcingsARMATimestepEnum : return "FrontalForcingsARMATimestep";
+		case FrontalForcingsARMAarOrderEnum : return "FrontalForcingsARMAarOrder";
+		case FrontalForcingsARMAmaOrderEnum : return "FrontalForcingsARMAmaOrder";
+		case FrontalForcingsARMAdatebreaksEnum : return "FrontalForcingsARMAdatebreaks";
+		case FrontalForcingsARMAmonthdatebreaksEnum : return "FrontalForcingsARMAmonthdatebreaks";
+		case FrontalForcingsARMAmonthinterceptsEnum : return "FrontalForcingsARMAmonthintercepts";
+		case FrontalForcingsARMAmonthtrendsEnum : return "FrontalForcingsARMAmonthtrends";
+		case FrontalForcingsARMApolyparamsEnum : return "FrontalForcingsARMApolyparams";
+		case FrontalForcingsIsDischargeARMAEnum : return "FrontalForcingsIsDischargeARMA";
+		case FrontalForcingsNumberofBasinsEnum : return "FrontalForcingsNumberofBasins";
+		case FrontalForcingsNumberofBreaksEnum : return "FrontalForcingsNumberofBreaks";
+		case FrontalForcingsNumberofMonthBreaksEnum : return "FrontalForcingsNumberofMonthBreaks";
+		case FrontalForcingsNumberofParamsEnum : return "FrontalForcingsNumberofParams";
+		case FrontalForcingsParamEnum : return "FrontalForcingsParam";
+		case FrontalForcingsARMAarlagcoefsEnum : return "FrontalForcingsARMAarlagcoefs";
+		case FrontalForcingsARMAmalagcoefsEnum : return "FrontalForcingsARMAmalagcoefs";
+		case FrontalForcingsSdarlagcoefsEnum : return "FrontalForcingsSdarlagcoefs";
+		case FrontalForcingsSdARMATimestepEnum : return "FrontalForcingsSdARMATimestep";
+		case FrontalForcingsSdarOrderEnum : return "FrontalForcingsSdarOrder";
+		case FrontalForcingsSddatebreaksEnum : return "FrontalForcingsSddatebreaks";
+		case FrontalForcingsSdmalagcoefsEnum : return "FrontalForcingsSdmalagcoefs";
+		case FrontalForcingsSdmaOrderEnum : return "FrontalForcingsSdmaOrder";
+		case FrontalForcingsSdMonthlyFracEnum : return "FrontalForcingsSdMonthlyFrac";
+		case FrontalForcingsSdNumberofBreaksEnum : return "FrontalForcingsSdNumberofBreaks";
+		case FrontalForcingsSdNumberofParamsEnum : return "FrontalForcingsSdNumberofParams";
+		case FrontalForcingsSdpolyparamsEnum : return "FrontalForcingsSdpolyparams";
+		case GrdModelEnum : return "GrdModel";
+		case GroundinglineFrictionInterpolationEnum : return "GroundinglineFrictionInterpolation";
+		case GroundinglineMeltInterpolationEnum : return "GroundinglineMeltInterpolation";
+		case GroundinglineMigrationEnum : return "GroundinglineMigration";
+		case GroundinglineNumRequestedOutputsEnum : return "GroundinglineNumRequestedOutputs";
+		case GroundinglineRequestedOutputsEnum : return "GroundinglineRequestedOutputs";
+		case HydrologyarmaarOrderEnum : return "HydrologyarmaarOrder";
+		case HydrologyarmaarlagcoefsEnum : return "Hydrologyarmaarlagcoefs";
+		case HydrologyarmadatebreaksEnum : return "Hydrologyarmadatebreaks";
+		case HydrologyarmamalagcoefsEnum : return "Hydrologyarmamalagcoefs";
+		case HydrologyarmamaOrderEnum : return "HydrologyarmamaOrder";
+		case HydrologyarmaMonthlyFactorsEnum : return "HydrologyarmaMonthlyFactors";
+		case HydrologyarmaNumBreaksEnum : return "HydrologyarmaNumBreaks";
+		case HydrologyarmaNumParamsEnum : return "HydrologyarmaNumParams";
+		case HydrologyarmapolyparamsEnum : return "Hydrologyarmapolyparams";
+		case HydrologyarmaTimestepEnum : return "HydrologyarmaTimestep";
+		case HydrologyAveragingEnum : return "HydrologyAveraging";
+		case HydrologyChannelAlphaEnum : return "HydrologyChannelAlpha";
+		case HydrologyChannelBetaEnum : return "HydrologyChannelBeta";
+		case HydrologyCavitySpacingEnum : return "HydrologyCavitySpacing";
+		case HydrologyChannelSheetWidthEnum : return "HydrologyChannelSheetWidth";
+		case HydrologyEnglacialVoidRatioEnum : return "HydrologyEnglacialVoidRatio";
+		case HydrologyIschannelsEnum : return "HydrologyIschannels";
+		case HydrologyIsTransitionEnum : return "HydrologyIsTransition";
+		case HydrologyIsWaterPressureArmaEnum : return "HydrologyIsWaterPressureArma";
+		case HydrologyMeltFlagEnum : return "HydrologyMeltFlag";
+		case HydrologyModelEnum : return "HydrologyModel";
+		case HydrologyNumBasinsEnum : return "HydrologyNumBasins";
+		case HydrologyNumRequestedOutputsEnum : return "HydrologyNumRequestedOutputs";
+		case HydrologyOmegaEnum : return "HydrologyOmega";
+		case HydrologyPressureMeltCoefficientEnum : return "HydrologyPressureMeltCoefficient";
+		case HydrologyRelaxationEnum : return "HydrologyRelaxation";
+		case HydrologyRequestedOutputsEnum : return "HydrologyRequestedOutputs";
+		case HydrologySedimentKmaxEnum : return "HydrologySedimentKmax";
+		case HydrologySheetAlphaEnum : return "HydrologySheetAlpha";
+		case HydrologySheetBetaEnum : return "HydrologySheetBeta";
+		case HydrologyStepsPerStepEnum : return "HydrologyStepsPerStep";
+		case HydrologyStorageEnum : return "HydrologyStorage";
+		case HydrologydcEplColapseThicknessEnum : return "HydrologydcEplColapseThickness";
+		case HydrologydcEplConductivityEnum : return "HydrologydcEplConductivity";
+		case HydrologydcEplInitialThicknessEnum : return "HydrologydcEplInitialThickness";
+		case HydrologydcEplLayerCompressibilityEnum : return "HydrologydcEplLayerCompressibility";
+		case HydrologydcEplMaxThicknessEnum : return "HydrologydcEplMaxThickness";
+		case HydrologydcEplPoreWaterMassEnum : return "HydrologydcEplPoreWaterMass";
+		case HydrologydcEplThickCompEnum : return "HydrologydcEplThickComp";
+		case HydrologydcEplflipLockEnum : return "HydrologydcEplflipLock";
+		case HydrologydcIsefficientlayerEnum : return "HydrologydcIsefficientlayer";
+		case HydrologydcLeakageFactorEnum : return "HydrologydcLeakageFactor";
+		case HydrologydcMaxIterEnum : return "HydrologydcMaxIter";
+		case HydrologydcPenaltyFactorEnum : return "HydrologydcPenaltyFactor";
+		case HydrologydcPenaltyLockEnum : return "HydrologydcPenaltyLock";
+		case HydrologydcRelTolEnum : return "HydrologydcRelTol";
+		case HydrologydcSedimentlimitEnum : return "HydrologydcSedimentlimit";
+		case HydrologydcSedimentlimitFlagEnum : return "HydrologydcSedimentlimitFlag";
+		case HydrologydcSedimentLayerCompressibilityEnum : return "HydrologydcSedimentLayerCompressibility";
+		case HydrologydcSedimentPoreWaterMassEnum : return "HydrologydcSedimentPoreWaterMass";
+		case HydrologydcSedimentPorosityEnum : return "HydrologydcSedimentPorosity";
+		case HydrologydcSedimentThicknessEnum : return "HydrologydcSedimentThickness";
+		case HydrologyStepAdaptEnum : return "HydrologyStepAdapt";
+		case HydrologydcTransferFlagEnum : return "HydrologydcTransferFlag";
+		case HydrologydcUnconfinedFlagEnum : return "HydrologydcUnconfinedFlag";
+		case HydrologyshreveStabilizationEnum : return "HydrologyshreveStabilization";
+		case IcecapToEarthCommEnum : return "IcecapToEarthComm";
+		case IndexEnum : return "Index";
+		case InputFileNameEnum : return "InputFileName";
+		case DirectoryNameEnum : return "DirectoryName";
+		case IndicesEnum : return "Indices";
+		case InputToDepthaverageInEnum : return "InputToDepthaverageIn";
+		case InputToDepthaverageOutEnum : return "InputToDepthaverageOut";
+		case InputToExtrudeEnum : return "InputToExtrude";
+		case InputToL2ProjectEnum : return "InputToL2Project";
+		case InputToSmoothEnum : return "InputToSmooth";
+		case InversionAlgorithmEnum : return "InversionAlgorithm";
+		case InversionControlParametersEnum : return "InversionControlParameters";
+		case InversionControlScalingFactorsEnum : return "InversionControlScalingFactors";
+		case InversionCostFunctionsEnum : return "InversionCostFunctions";
+		case InversionDxminEnum : return "InversionDxmin";
+		case InversionDfminFracEnum : return "InversionDfminFrac";
+		case InversionGatolEnum : return "InversionGatol";
+		case InversionGradientScalingEnum : return "InversionGradientScaling";
+		case InversionGrtolEnum : return "InversionGrtol";
+		case InversionGttolEnum : return "InversionGttol";
+		case InversionIncompleteAdjointEnum : return "InversionIncompleteAdjoint";
+		case InversionIscontrolEnum : return "InversionIscontrol";
+		case InversionMaxiterEnum : return "InversionMaxiter";
+		case InversionMaxiterPerStepEnum : return "InversionMaxiterPerStep";
+		case InversionMaxstepsEnum : return "InversionMaxsteps";
+		case InversionNstepsEnum : return "InversionNsteps";
+		case InversionNumControlParametersEnum : return "InversionNumControlParameters";
+		case InversionNumCostFunctionsEnum : return "InversionNumCostFunctions";
+		case InversionStepThresholdEnum : return "InversionStepThreshold";
+		case InversionStopFlagEnum : return "InversionStopFlag";
+		case InversionTypeEnum : return "InversionType";
+		case IvinsEnum : return "Ivins";
+		case IsSlcCouplingEnum : return "IsSlcCoupling";
+		case LevelsetKillIcebergsEnum : return "LevelsetKillIcebergs";
+		case LevelsetReinitFrequencyEnum : return "LevelsetReinitFrequency";
+		case LevelsetStabilizationEnum : return "LevelsetStabilization";
+		case LockFileNameEnum : return "LockFileName";
+		case LoveAllowLayerDeletionEnum : return "LoveAllowLayerDeletion";
+		case LoveChandlerWobbleEnum : return "LoveChandlerWobble";
+		case LoveCoreMantleBoundaryEnum : return "LoveCoreMantleBoundary";
+		case LoveEarthMassEnum : return "LoveEarthMass";
+		case LoveForcingTypeEnum : return "LoveForcingType";
+		case LoveFrequenciesEnum : return "LoveFrequencies";
+		case LoveIsTemporalEnum : return "LoveIsTemporal";
+		case LoveG0Enum : return "LoveG0";
+		case LoveGravitationalConstantEnum : return "LoveGravitationalConstant";
+		case LoveInnerCoreBoundaryEnum : return "LoveInnerCoreBoundary";
+		case LoveComplexComputationEnum : return "LoveComplexComputation";
+		case LoveQuadPrecisionEnum : return "LoveQuadPrecision";
+		case LoveIntStepsPerLayerEnum : return "LoveIntStepsPerLayer";
+		case LoveMinIntegrationStepsEnum : return "LoveMinIntegrationSteps";
+		case LoveMaxIntegrationdrEnum : return "LoveMaxIntegrationdr";
+		case LoveIntegrationSchemeEnum : return "LoveIntegrationScheme";
+		case LoveKernelsEnum : return "LoveKernels";
+		case LoveMu0Enum : return "LoveMu0";
+		case LoveNfreqEnum : return "LoveNfreq";
+		case LoveNTemporalIterationsEnum : return "LoveNTemporalIterations";
+		case LoveNYiEquationsEnum : return "LoveNYiEquations";
+		case LoveR0Enum : return "LoveR0";
+		case LoveShNmaxEnum : return "LoveShNmax";
+		case LoveShNminEnum : return "LoveShNmin";
+		case LoveStartingLayerEnum : return "LoveStartingLayer";
+		case LoveUnderflowTolEnum : return "LoveUnderflowTol";
+		case LovePostWidderThresholdEnum : return "LovePostWidderThreshold";
+		case LoveDebugEnum : return "LoveDebug";
+		case LoveHypergeomNZEnum : return "LoveHypergeomNZ";
+		case LoveHypergeomNAlphaEnum : return "LoveHypergeomNAlpha";
+		case MassFluxSegmentsEnum : return "MassFluxSegments";
+		case MassFluxSegmentsPresentEnum : return "MassFluxSegmentsPresent";
+		case MasstransportHydrostaticAdjustmentEnum : return "MasstransportHydrostaticAdjustment";
+		case MasstransportIsfreesurfaceEnum : return "MasstransportIsfreesurface";
+		case MasstransportMinThicknessEnum : return "MasstransportMinThickness";
+		case MasstransportNumRequestedOutputsEnum : return "MasstransportNumRequestedOutputs";
+		case MasstransportPenaltyFactorEnum : return "MasstransportPenaltyFactor";
+		case MasstransportRequestedOutputsEnum : return "MasstransportRequestedOutputs";
+		case MasstransportStabilizationEnum : return "MasstransportStabilization";
+		case MaterialsBetaEnum : return "MaterialsBeta";
+		case MaterialsEarthDensityEnum : return "MaterialsEarthDensity";
+		case MaterialsEffectiveconductivityAveragingEnum : return "MaterialsEffectiveconductivityAveraging";
+		case MaterialsHeatcapacityEnum : return "MaterialsHeatcapacity";
+		case MaterialsLatentheatEnum : return "MaterialsLatentheat";
+		case MaterialsMeltingpointEnum : return "MaterialsMeltingpoint";
+		case MaterialsMixedLayerCapacityEnum : return "MaterialsMixedLayerCapacity";
+		case MaterialsMuWaterEnum : return "MaterialsMuWater";
+		case MaterialsRheologyLawEnum : return "MaterialsRheologyLaw";
+		case MaterialsRhoFreshwaterEnum : return "MaterialsRhoFreshwater";
+		case MaterialsRhoIceEnum : return "MaterialsRhoIce";
+		case MaterialsRhoSeawaterEnum : return "MaterialsRhoSeawater";
+		case MaterialsTemperateiceconductivityEnum : return "MaterialsTemperateiceconductivity";
+		case MaterialsThermalExchangeVelocityEnum : return "MaterialsThermalExchangeVelocity";
+		case MaterialsThermalconductivityEnum : return "MaterialsThermalconductivity";
+		case MeltingOffsetEnum : return "MeltingOffset";
+		case MeshAverageVertexConnectivityEnum : return "MeshAverageVertexConnectivity";
+		case MeshElementtypeEnum : return "MeshElementtype";
+		case MeshNumberoflayersEnum : return "MeshNumberoflayers";
+		case MeshNumberofverticesEnum : return "MeshNumberofvertices";
+		case MeshNumberofelementsEnum : return "MeshNumberofelements";
+		case MigrationMaxEnum : return "MigrationMax";
+		case ModelIdEnum : return "ModelId";
+		case NbinsEnum : return "Nbins";
+		case NodesEnum : return "Nodes";
+		case NumModelsEnum : return "NumModels";
+		case OceanGridNxEnum : return "OceanGridNx";
+		case OceanGridNyEnum : return "OceanGridNy";
+		case OceanGridXEnum : return "OceanGridX";
+		case OceanGridYEnum : return "OceanGridY";
+		case OutputBufferPointerEnum : return "OutputBufferPointer";
+		case OutputBufferSizePointerEnum : return "OutputBufferSizePointer";
+		case OutputFileNameEnum : return "OutputFileName";
+		case OutputFilePointerEnum : return "OutputFilePointer";
+		case OutputdefinitionEnum : return "Outputdefinition";
+		case QmuErrNameEnum : return "QmuErrName";
+		case QmuInNameEnum : return "QmuInName";
+		case QmuIsdakotaEnum : return "QmuIsdakota";
+		case QmuOutNameEnum : return "QmuOutName";
+		case QmuOutputEnum : return "QmuOutput";
+		case QmuCurrEvalIdEnum : return "QmuCurrEvalId";
+		case QmuNsampleEnum : return "QmuNsample";
+		case QmuResponsedescriptorsEnum : return "QmuResponsedescriptors";
+		case QmuVariableDescriptorsEnum : return "QmuVariableDescriptors";
+		case QmuVariablePartitionsEnum : return "QmuVariablePartitions";
+		case QmuVariablePartitionsNpartEnum : return "QmuVariablePartitionsNpart";
+		case QmuVariablePartitionsNtEnum : return "QmuVariablePartitionsNt";
+		case QmuResponsePartitionsEnum : return "QmuResponsePartitions";
+		case QmuResponsePartitionsNpartEnum : return "QmuResponsePartitionsNpart";
+		case QmuStatisticsEnum : return "QmuStatistics";
+		case QmuNumstatisticsEnum : return "QmuNumstatistics";
+		case QmuNdirectoriesEnum : return "QmuNdirectories";
+		case QmuNfilesPerDirectoryEnum : return "QmuNfilesPerDirectory";
+		case QmuStatisticsMethodEnum : return "QmuStatisticsMethod";
+		case QmuMethodsEnum : return "QmuMethods";
+		case RestartFileNameEnum : return "RestartFileName";
+		case ResultsEnum : return "Results";
+		case RootPathEnum : return "RootPath";
+		case ModelnameEnum : return "Modelname";
+		case SamplingAlphaEnum : return "SamplingAlpha";
+		case SamplingNumRequestedOutputsEnum : return "SamplingNumRequestedOutputs";
+		case SamplingRequestedOutputsEnum : return "SamplingRequestedOutputs";
+		case SamplingRobinEnum : return "SamplingRobin";
+		case SamplingSeedEnum : return "SamplingSeed";
+		case SaveResultsEnum : return "SaveResults";
+		case SolidearthPartitionIceEnum : return "SolidearthPartitionIce";
+		case SolidearthPartitionHydroEnum : return "SolidearthPartitionHydro";
+		case SolidearthPartitionOceanEnum : return "SolidearthPartitionOcean";
+		case SolidearthNpartIceEnum : return "SolidearthNpartIce";
+		case SolidearthNpartOceanEnum : return "SolidearthNpartOcean";
+		case SolidearthNpartHydroEnum : return "SolidearthNpartHydro";
+		case SolidearthPlanetRadiusEnum : return "SolidearthPlanetRadius";
+		case SolidearthPlanetAreaEnum : return "SolidearthPlanetArea";
+		case SolidearthSettingsAbstolEnum : return "SolidearthSettingsAbstol";
+		case SolidearthSettingsCrossSectionShapeEnum : return "SolidearthSettingsCrossSectionShape";
+		case SolidearthSettingsElasticEnum : return "SolidearthSettingsElastic";
+		case SolidearthSettingsViscousEnum : return "SolidearthSettingsViscous";
+		case SolidearthSettingsSatelliteGraviEnum : return "SolidearthSettingsSatelliteGravi";
+		case SolidearthSettingsDegreeAccuracyEnum : return "SolidearthSettingsDegreeAccuracy";
+		case SealevelchangeGeometryDoneEnum : return "SealevelchangeGeometryDone";
+		case SealevelchangeViscousNumStepsEnum : return "SealevelchangeViscousNumSteps";
+		case SealevelchangeViscousTimesEnum : return "SealevelchangeViscousTimes";
+		case SealevelchangeViscousIndexEnum : return "SealevelchangeViscousIndex";
+		case SealevelchangeViscousPolarMotionEnum : return "SealevelchangeViscousPolarMotion";
+		case SealevelchangeRunCountEnum : return "SealevelchangeRunCount";
+		case SealevelchangeTransitionsEnum : return "SealevelchangeTransitions";
+		case SealevelchangeRequestedOutputsEnum : return "SealevelchangeRequestedOutputs";
+		case RotationalAngularVelocityEnum : return "RotationalAngularVelocity";
+		case RotationalEquatorialMoiEnum : return "RotationalEquatorialMoi";
+		case RotationalPolarMoiEnum : return "RotationalPolarMoi";
+		case LovePolarMotionTransferFunctionColinearEnum : return "LovePolarMotionTransferFunctionColinear";
+		case LovePolarMotionTransferFunctionOrthogonalEnum : return "LovePolarMotionTransferFunctionOrthogonal";
+		case TidalLoveHEnum : return "TidalLoveH";
+		case TidalLoveKEnum : return "TidalLoveK";
+		case TidalLoveLEnum : return "TidalLoveL";
+		case TidalLoveK2SecularEnum : return "TidalLoveK2Secular";
+		case LoadLoveHEnum : return "LoadLoveH";
+		case LoadLoveKEnum : return "LoadLoveK";
+		case LoadLoveLEnum : return "LoadLoveL";
+		case LoveTimeFreqEnum : return "LoveTimeFreq";
+		case LoveIsTimeEnum : return "LoveIsTime";
+		case LoveHypergeomZEnum : return "LoveHypergeomZ";
+		case LoveHypergeomTable1Enum : return "LoveHypergeomTable1";
+		case LoveHypergeomTable2Enum : return "LoveHypergeomTable2";
+		case SealevelchangeGSelfAttractionEnum : return "SealevelchangeGSelfAttraction";
+		case SealevelchangeGViscoElasticEnum : return "SealevelchangeGViscoElastic";
+		case SealevelchangeUViscoElasticEnum : return "SealevelchangeUViscoElastic";
+		case SealevelchangeHViscoElasticEnum : return "SealevelchangeHViscoElastic";
+		case SealevelchangePolarMotionTransferFunctionColinearEnum : return "SealevelchangePolarMotionTransferFunctionColinear";
+		case SealevelchangePolarMotionTransferFunctionOrthogonalEnum : return "SealevelchangePolarMotionTransferFunctionOrthogonal";
+		case SealevelchangePolarMotionTransferFunctionZEnum : return "SealevelchangePolarMotionTransferFunctionZ";
+		case SealevelchangeTidalK2Enum : return "SealevelchangeTidalK2";
+		case SealevelchangeTidalH2Enum : return "SealevelchangeTidalH2";
+		case SealevelchangeTidalL2Enum : return "SealevelchangeTidalL2";
+		case SolidearthSettingsSealevelLoadingEnum : return "SolidearthSettingsSealevelLoading";
+		case SolidearthSettingsGRDEnum : return "SolidearthSettingsGRD";
+		case SolidearthSettingsRunFrequencyEnum : return "SolidearthSettingsRunFrequency";
+		case SolidearthSettingsTimeAccEnum : return "SolidearthSettingsTimeAcc";
+		case SolidearthSettingsHorizEnum : return "SolidearthSettingsHoriz";
+		case SolidearthSettingsMaxiterEnum : return "SolidearthSettingsMaxiter";
+		case SolidearthSettingsGrdOceanEnum : return "SolidearthSettingsGrdOcean";
+		case SolidearthSettingsOceanAreaScalingEnum : return "SolidearthSettingsOceanAreaScaling";
+		case StochasticForcingCovarianceEnum : return "StochasticForcingCovariance";
+		case StochasticForcingDefaultDimensionEnum : return "StochasticForcingDefaultDimension";
+		case StochasticForcingDimensionsEnum : return "StochasticForcingDimensions";
+		case StochasticForcingFieldsEnum : return "StochasticForcingFields";
+		case StochasticForcingIsEffectivePressureEnum : return "StochasticForcingIsEffectivePressure";
+		case StochasticForcingIsStochasticForcingEnum : return "StochasticForcingIsStochasticForcing";
+		case StochasticForcingIsWaterPressureEnum : return "StochasticForcingIsWaterPressure";
+		case StochasticForcingNoisetermsEnum : return "StochasticForcingNoiseterms";
+		case StochasticForcingNumFieldsEnum : return "StochasticForcingNumFields";
+		case StochasticForcingNumTimesCovarianceEnum : return "StochasticForcingNumTimesCovariance";
+		case StochasticForcingRandomflagEnum : return "StochasticForcingRandomflag";
+		case StochasticForcingTimeCovarianceEnum : return "StochasticForcingTimeCovariance";
+		case StochasticForcingTimestepEnum : return "StochasticForcingTimestep";
+		case SolidearthSettingsReltolEnum : return "SolidearthSettingsReltol";
+		case SolidearthSettingsSelfAttractionEnum : return "SolidearthSettingsSelfAttraction";
+		case SolidearthSettingsRotationEnum : return "SolidearthSettingsRotation";
+		case SolidearthSettingsMaxSHCoeffEnum : return "SolidearthSettingsMaxSHCoeff";
+		case SettingsIoGatherEnum : return "SettingsIoGather";
+		case SettingsNumResultsOnNodesEnum : return "SettingsNumResultsOnNodes";
+		case SettingsOutputFrequencyEnum : return "SettingsOutputFrequency";
+		case SettingsCheckpointFrequencyEnum : return "SettingsCheckpointFrequency";
+		case SettingsResultsOnNodesEnum : return "SettingsResultsOnNodes";
+		case SettingsSbCouplingFrequencyEnum : return "SettingsSbCouplingFrequency";
+		case SettingsSolverResidueThresholdEnum : return "SettingsSolverResidueThreshold";
+		case SettingsWaitonlockEnum : return "SettingsWaitonlock";
+		case SmbAIceEnum : return "SmbAIce";
+		case SmbAIdxEnum : return "SmbAIdx";
+		case SmbASnowEnum : return "SmbASnow";
+		case SmbAccualtiEnum : return "SmbAccualti";
+		case SmbAccugradEnum : return "SmbAccugrad";
+		case SmbAccurefEnum : return "SmbAccuref";
+		case SmbAdThreshEnum : return "SmbAdThresh";
+		case SmbAlbedoSchemeEnum : return "SmbAlbedoScheme";
+		case SmbAlbedoSnowMaxEnum : return "SmbAlbedoSnowMax";
+		case SmbAlbedoSnowMinEnum : return "SmbAlbedoSnowMin";
+		case SmbAlbedoIceEnum : return "SmbAlbedoIce";
+		case SmbAlbedoLandEnum : return "SmbAlbedoLand";
+		case SmbARMATimestepEnum : return "SmbARMATimestep";
+		case SmbARMAarOrderEnum : return "SmbARMAarOrder";
+		case SmbARMAarlagcoefsEnum : return "SmbARMAarlagcoefs";
+		case SmbARMAdatebreaksEnum : return "SmbARMAdatebreaks";
+		case SmbARMAmaOrderEnum : return "SmbARMAmaOrder";
+		case SmbARMAmalagcoefsEnum : return "SmbARMAmalagcoefs";
+		case SmbARMApolyparamsEnum : return "SmbARMApolyparams";
+		case SmbAveragingEnum : return "SmbAveraging";
+		case SmbDebrisalbedoEnum : return "SmbDebrisalbedo";
+		case SmbIcealbedoEnum : return "SmbIcealbedo";
+		case SmbSnowalbedoEnum : return "SmbSnowalbedo";
+		case SmbDebrisIsAndersonEnum : return "SmbDebrisIsAnderson";
+		case SmbDebrisIsCryokarstEnum : return "SmbDebrisIsCryokarst";
+		case SmbDebrisAndersonD0Enum : return "SmbDebrisAndersonD0";
+		case SmbDesfacEnum : return "SmbDesfac";
+		case SmbDesfacElevEnum : return "SmbDesfacElev";
+		case SmbDpermilEnum : return "SmbDpermil";
+		case SmbDsnowIdxEnum : return "SmbDsnowIdx";
+		case SmbElevationBinsEnum : return "SmbElevationBins";
+		case SmbCldFracEnum : return "SmbCldFrac";
+		case SmbDelta18oEnum : return "SmbDelta18o";
+		case SmbDelta18oSurfaceEnum : return "SmbDelta18oSurface";
+		case SmbDenIdxEnum : return "SmbDenIdx";
+		case SmbDtEnum : return "SmbDt";
+		case SmbEnum : return "Smb";
+		case SmbEIdxEnum : return "SmbEIdx";
+		case SmbFEnum : return "SmbF";
+		case SmbHumiditygradEnum : return "SmbHumiditygrad";
+		case SmbInitDensityScalingEnum : return "SmbInitDensityScaling";
+		case SmbIsaccumulationEnum : return "SmbIsaccumulation";
+		case SmbIsalbedoEnum : return "SmbIsalbedo";
+		case SmbIsconstrainsurfaceTEnum : return "SmbIsconstrainsurfaceT";
+		case SmbIsd18opdEnum : return "SmbIsd18opd";
+		case SmbIsdelta18oEnum : return "SmbIsdelta18o";
+		case SmbIsdensificationEnum : return "SmbIsdensification";
+		case SmbIsdeltaLWupEnum : return "SmbIsdeltaLWup";
+		case SmbIsfirnwarmingEnum : return "SmbIsfirnwarming";
+		case SmbIsgraingrowthEnum : return "SmbIsgraingrowth";
+		case SmbIsmeltEnum : return "SmbIsmelt";
+		case SmbIsmungsmEnum : return "SmbIsmungsm";
+		case SmbIsprecipscaledEnum : return "SmbIsprecipscaled";
+		case SmbIssetpddfacEnum : return "SmbIssetpddfac";
+		case SmbIsshortwaveEnum : return "SmbIsshortwave";
+		case SmbIstemperaturescaledEnum : return "SmbIstemperaturescaled";
+		case SmbIsthermalEnum : return "SmbIsthermal";
+		case SmbIsturbulentfluxEnum : return "SmbIsturbulentflux";
+		case SmbKEnum : return "SmbK";
+		case SmbLapseRatesEnum : return "SmbLapseRates";
+		case SmbLWgradEnum : return "SmbLWgrad";
+		case SmbNumBasinsEnum : return "SmbNumBasins";
+		case SmbNumBreaksEnum : return "SmbNumBreaks";
+		case SmbNumElevationBinsEnum : return "SmbNumElevationBins";
+		case SmbNumParamsEnum : return "SmbNumParams";
+		case SmbNumRequestedOutputsEnum : return "SmbNumRequestedOutputs";
+		case SmbPfacEnum : return "SmbPfac";
+		case SmbRdlEnum : return "SmbRdl";
+		case SmbRefElevationEnum : return "SmbRefElevation";
+		case SmbRequestedOutputsEnum : return "SmbRequestedOutputs";
+		case SmbRlapsEnum : return "SmbRlaps";
+		case SmbRlapslgmEnum : return "SmbRlapslgm";
+		case SmbRunoffaltiEnum : return "SmbRunoffalti";
+		case SmbRunoffgradEnum : return "SmbRunoffgrad";
+		case SmbRunoffrefEnum : return "SmbRunoffref";
+		case SmbSealevEnum : return "SmbSealev";
+		case SmbSemicMethodEnum : return "SmbSemicMethod";
+		case SmbSemicHcritEnum : return "SmbSemicHcrit";
+		case SmbSemicRcritEnum : return "SmbSemicRcrit";
+		case SmbSemicWcritEnum : return "SmbSemicWcrit";
+		case SmbSemicMcritEnum : return "SmbSemicMcrit";
+		case SmbSemicAfacEnum : return "SmbSemicAfac";
+		case SmbSemicTauAEnum : return "SmbSemicTauA";
+		case SmbSemicTauFEnum : return "SmbSemicTauF";
+		case SmbSemicTminEnum : return "SmbSemicTmin";
+		case SmbSemicTmidEnum : return "SmbSemicTmid";
+		case SmbSemicTmaxEnum : return "SmbSemicTmax";
+		case SmbStepsPerStepEnum : return "SmbStepsPerStep";
+		case SmbSwIdxEnum : return "SmbSwIdx";
+		case SmbSWgradEnum : return "SmbSWgrad";
+		case SmbT0dryEnum : return "SmbT0dry";
+		case SmbT0wetEnum : return "SmbT0wet";
+		case SmbTcIdxEnum : return "SmbTcIdx";
+		case SmbTeThreshEnum : return "SmbTeThresh";
+		case SmbTdiffEnum : return "SmbTdiff";
+		case SmbThermoDeltaTScalingEnum : return "SmbThermoDeltaTScaling";
+		case SmbTemperaturesReconstructedYearsEnum : return "SmbTemperaturesReconstructedYears";
+		case SmbPrecipitationsReconstructedYearsEnum : return "SmbPrecipitationsReconstructedYears";
+		case SmbWindspeedgradEnum : return "SmbWindspeedgrad";
+		case SmoothThicknessMultiplierEnum : return "SmoothThicknessMultiplier";
+		case SolutionTypeEnum : return "SolutionType";
+		case SteadystateMaxiterEnum : return "SteadystateMaxiter";
+		case SteadystateNumRequestedOutputsEnum : return "SteadystateNumRequestedOutputs";
+		case SteadystateReltolEnum : return "SteadystateReltol";
+		case SteadystateRequestedOutputsEnum : return "SteadystateRequestedOutputs";
+		case StepEnum : return "Step";
+		case StepsEnum : return "Steps";
+		case StressbalanceAbstolEnum : return "StressbalanceAbstol";
+		case StressbalanceFSreconditioningEnum : return "StressbalanceFSreconditioning";
+		case StressbalanceIsnewtonEnum : return "StressbalanceIsnewton";
+		case StressbalanceMaxiterEnum : return "StressbalanceMaxiter";
+		case StressbalanceNumRequestedOutputsEnum : return "StressbalanceNumRequestedOutputs";
+		case StressbalancePenaltyFactorEnum : return "StressbalancePenaltyFactor";
+		case StressbalanceReltolEnum : return "StressbalanceReltol";
+		case StressbalanceRequestedOutputsEnum : return "StressbalanceRequestedOutputs";
+		case StressbalanceRestolEnum : return "StressbalanceRestol";
+		case StressbalanceRiftPenaltyThresholdEnum : return "StressbalanceRiftPenaltyThreshold";
+		case StressbalanceShelfDampeningEnum : return "StressbalanceShelfDampening";
+		case ThermalForcingMonthlyEffectsEnum : return "ThermalForcingMonthlyEffects";
+		case ThermalIsdrainicecolumnEnum : return "ThermalIsdrainicecolumn";
+		case ThermalIsdynamicbasalspcEnum : return "ThermalIsdynamicbasalspc";
+		case ThermalIsenthalpyEnum : return "ThermalIsenthalpy";
+		case ThermalMaxiterEnum : return "ThermalMaxiter";
+		case ThermalNumRequestedOutputsEnum : return "ThermalNumRequestedOutputs";
+		case ThermalPenaltyFactorEnum : return "ThermalPenaltyFactor";
+		case ThermalPenaltyLockEnum : return "ThermalPenaltyLock";
+		case ThermalPenaltyThresholdEnum : return "ThermalPenaltyThreshold";
+		case ThermalReltolEnum : return "ThermalReltol";
+		case ThermalRequestedOutputsEnum : return "ThermalRequestedOutputs";
+		case ThermalStabilizationEnum : return "ThermalStabilization";
+		case ThermalWatercolumnUpperlimitEnum : return "ThermalWatercolumnUpperlimit";
+		case TimeEnum : return "Time";
+		case TimesteppingAverageForcingEnum : return "TimesteppingAverageForcing";
+		case TimesteppingCflCoefficientEnum : return "TimesteppingCflCoefficient";
+		case TimesteppingCouplingTimeEnum : return "TimesteppingCouplingTime";
+		case TimesteppingFinalTimeEnum : return "TimesteppingFinalTime";
+		case TimesteppingInterpForcingEnum : return "TimesteppingInterpForcing";
+		case TimesteppingCycleForcingEnum : return "TimesteppingCycleForcing";
+		case TimesteppingStartTimeEnum : return "TimesteppingStartTime";
+		case TimesteppingTimeStepEnum : return "TimesteppingTimeStep";
+		case TimesteppingTimeStepMaxEnum : return "TimesteppingTimeStepMax";
+		case TimesteppingTimeStepMinEnum : return "TimesteppingTimeStepMin";
+		case TimesteppingTypeEnum : return "TimesteppingType";
+		case ToMITgcmCommEnum : return "ToMITgcmComm";
+		case ToolkitsFileNameEnum : return "ToolkitsFileName";
+		case ToolkitsOptionsAnalysesEnum : return "ToolkitsOptionsAnalyses";
+		case ToolkitsOptionsStringsEnum : return "ToolkitsOptionsStrings";
+		case ToolkitsTypesEnum : return "ToolkitsTypes";
+		case TransientAmrFrequencyEnum : return "TransientAmrFrequency";
+		case TransientIsageEnum : return "TransientIsage";
+		case TransientIsdamageevolutionEnum : return "TransientIsdamageevolution";
+		case TransientIsdebrisEnum : return "TransientIsdebris";
+		case TransientIsesaEnum : return "TransientIsesa";
+		case TransientIsgiaEnum : return "TransientIsgia";
+		case TransientIsgroundinglineEnum : return "TransientIsgroundingline";
+		case TransientIshydrologyEnum : return "TransientIshydrology";
+		case TransientIsmasstransportEnum : return "TransientIsmasstransport";
+		case TransientIsoceantransportEnum : return "TransientIsoceantransport";
+		case TransientIsmovingfrontEnum : return "TransientIsmovingfront";
+		case TransientIsoceancouplingEnum : return "TransientIsoceancoupling";
+		case TransientIssamplingEnum : return "TransientIssampling";
+		case TransientIsslcEnum : return "TransientIsslc";
+		case TransientIssmbEnum : return "TransientIssmb";
+		case TransientIsstressbalanceEnum : return "TransientIsstressbalance";
+		case TransientIsthermalEnum : return "TransientIsthermal";
+		case TransientNumRequestedOutputsEnum : return "TransientNumRequestedOutputs";
+		case TransientRequestedOutputsEnum : return "TransientRequestedOutputs";
+		case VelocityEnum : return "Velocity";
+		case XxeEnum : return "Xxe";
+		case YyeEnum : return "Yye";
+		case ZzeEnum : return "Zze";
+		case AreaeEnum : return "Areae";
+		case WorldCommEnum : return "WorldComm";
+		case ParametersENDEnum : return "ParametersEND";
+		case InputsSTARTEnum : return "InputsSTART";
+		case AccumulatedDeltaBottomPressureEnum : return "AccumulatedDeltaBottomPressure";
+		case AccumulatedDeltaIceThicknessEnum : return "AccumulatedDeltaIceThickness";
+		case AccumulatedDeltaTwsEnum : return "AccumulatedDeltaTws";
+		case AdjointEnum : return "Adjoint";
+		case AdjointpEnum : return "Adjointp";
+		case AdjointxEnum : return "Adjointx";
+		case AdjointxBaseEnum : return "AdjointxBase";
+		case AdjointxShearEnum : return "AdjointxShear";
+		case AdjointyEnum : return "Adjointy";
+		case AdjointyBaseEnum : return "AdjointyBase";
+		case AdjointyShearEnum : return "AdjointyShear";
+		case AdjointzEnum : return "Adjointz";
+		case AgeEnum : return "Age";
+		case AirEnum : return "Air";
+		case ApproximationEnum : return "Approximation";
+		case BalancethicknessMisfitEnum : return "BalancethicknessMisfit";
+		case BalancethicknessOmega0Enum : return "BalancethicknessOmega0";
+		case BalancethicknessOmegaEnum : return "BalancethicknessOmega";
+		case BalancethicknessSpcthicknessEnum : return "BalancethicknessSpcthickness";
+		case BalancethicknessThickeningRateEnum : return "BalancethicknessThickeningRate";
+		case BasalCrevasseEnum : return "BasalCrevasse";
+		case BasalforcingsDeepwaterMeltingRatearmaEnum : return "BasalforcingsDeepwaterMeltingRatearma";
+		case BasalforcingsDeepwaterMeltingRateNoiseEnum : return "BasalforcingsDeepwaterMeltingRateNoise";
+		case BasalforcingsDeepwaterMeltingRateValuesAutoregressionEnum : return "BasalforcingsDeepwaterMeltingRateValuesAutoregression";
+		case BasalforcingsDeepwaterMeltingRateValuesMovingaverageEnum : return "BasalforcingsDeepwaterMeltingRateValuesMovingaverage";
+		case BasalforcingsFloatingiceMeltingRateEnum : return "BasalforcingsFloatingiceMeltingRate";
+		case BasalforcingsFloatingiceMeltingRateObsEnum : return "BasalforcingsFloatingiceMeltingRateObs";
+		case BasalforcingsGeothermalfluxEnum : return "BasalforcingsGeothermalflux";
+		case BasalforcingsGroundediceMeltingRateEnum : return "BasalforcingsGroundediceMeltingRate";
+		case BasalforcingsGroundediceMeltingRateObsEnum : return "BasalforcingsGroundediceMeltingRateObs";
+		case BasalforcingsLinearBasinIdEnum : return "BasalforcingsLinearBasinId";
+		case BasalforcingsPerturbationMeltingRateEnum : return "BasalforcingsPerturbationMeltingRate";
+		case BasalforcingsSpatialDeepwaterElevationEnum : return "BasalforcingsSpatialDeepwaterElevation";
+		case BasalforcingsSpatialDeepwaterMeltingRateEnum : return "BasalforcingsSpatialDeepwaterMeltingRate";
+		case BasalforcingsSpatialUpperwaterElevationEnum : return "BasalforcingsSpatialUpperwaterElevation";
+		case BasalforcingsSpatialUpperwaterMeltingRateEnum : return "BasalforcingsSpatialUpperwaterMeltingRate";
+		case BasalforcingsIsmip6BasinIdEnum : return "BasalforcingsIsmip6BasinId";
+		case BasalforcingsIsmip6TfEnum : return "BasalforcingsIsmip6Tf";
+		case BasalforcingsIsmip6TfShelfEnum : return "BasalforcingsIsmip6TfShelf";
+		case BasalforcingsIsmip6MeltAnomalyEnum : return "BasalforcingsIsmip6MeltAnomaly";
+		case BasalforcingsMeltrateFactorEnum : return "BasalforcingsMeltrateFactor";
+		case BasalforcingsOceanSalinityEnum : return "BasalforcingsOceanSalinity";
+		case BasalforcingsOceanTempEnum : return "BasalforcingsOceanTemp";
+		case BasalforcingsPicoBasinIdEnum : return "BasalforcingsPicoBasinId";
+		case BasalforcingsPicoBoxIdEnum : return "BasalforcingsPicoBoxId";
+		case BasalforcingsPicoOverturningCoeffEnum : return "BasalforcingsPicoOverturningCoeff";
+		case BasalforcingsPicoSubShelfOceanOverturningEnum : return "BasalforcingsPicoSubShelfOceanOverturning";
+		case BasalforcingsPicoSubShelfOceanSalinityEnum : return "BasalforcingsPicoSubShelfOceanSalinity";
+		case BasalforcingsPicoSubShelfOceanTempEnum : return "BasalforcingsPicoSubShelfOceanTemp";
+		case BasalStressxEnum : return "BasalStressx";
+		case BasalStressyEnum : return "BasalStressy";
+		case BasalStressEnum : return "BasalStress";
+		case BaseEnum : return "Base";
+		case BaseOldEnum : return "BaseOld";
+		case BaseSlopeXEnum : return "BaseSlopeX";
+		case BaseSlopeYEnum : return "BaseSlopeY";
+		case BaselineBasalforcingsFloatingiceMeltingRateEnum : return "BaselineBasalforcingsFloatingiceMeltingRate";
+		case BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum : return "BaselineBasalforcingsSpatialDeepwaterMeltingRate";
+		case BaselineCalvingCalvingrateEnum : return "BaselineCalvingCalvingrate";
+		case BaselineFrictionEffectivePressureEnum : return "BaselineFrictionEffectivePressure";
+		case BaselineSmbMassBalanceEnum : return "BaselineSmbMassBalance";
+		case BedEnum : return "Bed";
+		case BedGRDEnum : return "BedGRD";
+		case BedEastEnum : return "BedEast";
+		case BedEastGRDEnum : return "BedEastGRD";
+		case BedNorthEnum : return "BedNorth";
+		case BedNorthGRDEnum : return "BedNorthGRD";
+		case BedSlopeXEnum : return "BedSlopeX";
+		case BedSlopeYEnum : return "BedSlopeY";
+		case BottomPressureEnum : return "BottomPressure";
+		case BottomPressureOldEnum : return "BottomPressureOld";
+		case CalvingBasinIdEnum : return "CalvingBasinId";
+		case CalvingCalvingrateEnum : return "CalvingCalvingrate";
+		case CalvingHabFractionEnum : return "CalvingHabFraction";
+		case CalvingAblationrateEnum : return "CalvingAblationrate";
+		case CalvingMeltingrateEnum : return "CalvingMeltingrate";
+		case CalvingStressThresholdFloatingiceEnum : return "CalvingStressThresholdFloatingice";
+		case CalvingStressThresholdGroundediceEnum : return "CalvingStressThresholdGroundedice";
+		case CalvinglevermannCoeffEnum : return "CalvinglevermannCoeff";
+		case CalvingratexEnum : return "Calvingratex";
+		case CalvingrateyEnum : return "Calvingratey";
+		case CalvingFluxLevelsetEnum : return "CalvingFluxLevelset";
+		case CalvingMeltingFluxLevelsetEnum : return "CalvingMeltingFluxLevelset";
+		case ConvergedEnum : return "Converged";
+		case CrevasseDepthEnum : return "CrevasseDepth";
+		case DamageDEnum : return "DamageD";
+		case DamageDOldEnum : return "DamageDOld";
+		case DamageDbarEnum : return "DamageDbar";
+		case DamageDbarOldEnum : return "DamageDbarOld";
+		case DamageFEnum : return "DamageF";
+		case DebrisThicknessEnum : return "DebrisThickness";
+		case DegreeOfChannelizationEnum : return "DegreeOfChannelization";
+		case DepthBelowSurfaceEnum : return "DepthBelowSurface";
+		case DeltaIceThicknessEnum : return "DeltaIceThickness";
+		case DeltaTwsEnum : return "DeltaTws";
+		case DeltaBottomPressureEnum : return "DeltaBottomPressure";
+		case DeltaDslEnum : return "DeltaDsl";
+		case DslOldEnum : return "DslOld";
+		case DslEnum : return "Dsl";
+		case DeltaStrEnum : return "DeltaStr";
+		case StrOldEnum : return "StrOld";
+		case StrEnum : return "Str";
+		case DeviatoricStresseffectiveEnum : return "DeviatoricStresseffective";
+		case DeviatoricStressxxEnum : return "DeviatoricStressxx";
+		case DeviatoricStressxyEnum : return "DeviatoricStressxy";
+		case DeviatoricStressxzEnum : return "DeviatoricStressxz";
+		case DeviatoricStressyyEnum : return "DeviatoricStressyy";
+		case DeviatoricStressyzEnum : return "DeviatoricStressyz";
+		case DeviatoricStresszzEnum : return "DeviatoricStresszz";
+		case DeviatoricStress1Enum : return "DeviatoricStress1";
+		case DeviatoricStress2Enum : return "DeviatoricStress2";
+		case DistanceToCalvingfrontEnum : return "DistanceToCalvingfront";
+		case DistanceToGroundinglineEnum : return "DistanceToGroundingline";
+		case Domain2DhorizontalEnum : return "Domain2Dhorizontal";
+		case Domain2DverticalEnum : return "Domain2Dvertical";
+		case Domain3DEnum : return "Domain3D";
+		case DragCoefficientAbsGradientEnum : return "DragCoefficientAbsGradient";
+		case DrivingStressXEnum : return "DrivingStressX";
+		case DrivingStressYEnum : return "DrivingStressY";
+		case DummyEnum : return "Dummy";
+		case EffectivePressureEnum : return "EffectivePressure";
+		case EffectivePressureSubstepEnum : return "EffectivePressureSubstep";
+		case EffectivePressureTransientEnum : return "EffectivePressureTransient";
+		case EnthalpyEnum : return "Enthalpy";
+		case EnthalpyPicardEnum : return "EnthalpyPicard";
+		case EplHeadEnum : return "EplHead";
+		case EplHeadOldEnum : return "EplHeadOld";
+		case EplHeadSlopeXEnum : return "EplHeadSlopeX";
+		case EplHeadSlopeYEnum : return "EplHeadSlopeY";
+		case EplHeadSubstepEnum : return "EplHeadSubstep";
+		case EplHeadTransientEnum : return "EplHeadTransient";
+		case EsaEmotionEnum : return "EsaEmotion";
+		case EsaNmotionEnum : return "EsaNmotion";
+		case EsaRotationrateEnum : return "EsaRotationrate";
+		case EsaStrainratexxEnum : return "EsaStrainratexx";
+		case EsaStrainratexyEnum : return "EsaStrainratexy";
+		case EsaStrainrateyyEnum : return "EsaStrainrateyy";
+		case EsaUmotionEnum : return "EsaUmotion";
+		case EsaXmotionEnum : return "EsaXmotion";
+		case EsaYmotionEnum : return "EsaYmotion";
+		case EtaDiffEnum : return "EtaDiff";
+		case FlowequationBorderFSEnum : return "FlowequationBorderFS";
+		case FrictionAsEnum : return "FrictionAs";
+		case FrictionCEnum : return "FrictionC";
+		case FrictionCmaxEnum : return "FrictionCmax";
+		case FrictionCoefficientEnum : return "FrictionCoefficient";
+		case FrictionCoefficientcoulombEnum : return "FrictionCoefficientcoulomb";
+		case FrictionEffectivePressureEnum : return "FrictionEffectivePressure";
+		case FrictionKEnum : return "FrictionK";
+		case FrictionMEnum : return "FrictionM";
+		case FrictionPEnum : return "FrictionP";
+		case FrictionPressureAdjustedTemperatureEnum : return "FrictionPressureAdjustedTemperature";
+		case FrictionQEnum : return "FrictionQ";
+		case FrictionSedimentCompressibilityCoefficientEnum : return "FrictionSedimentCompressibilityCoefficient";
+		case FrictionTillFrictionAngleEnum : return "FrictionTillFrictionAngle";
+		case FrictionWaterLayerEnum : return "FrictionWaterLayer";
+		case FrictionWaterPressureEnum : return "FrictionWaterPressure";
+		case FrictionWaterPressureNoiseEnum : return "FrictionWaterPressureNoise";
+		case FrictionfEnum : return "Frictionf";
+		case FrontalForcingsBasinIdEnum : return "FrontalForcingsBasinId";
+		case FrontalForcingsSubglacialDischargearmaEnum : return "FrontalForcingsSubglacialDischargearma";
+		case FrontalForcingsSubglacialDischargeEnum : return "FrontalForcingsSubglacialDischarge";
+		case GeometryHydrostaticRatioEnum : return "GeometryHydrostaticRatio";
+		case NGiaEnum : return "NGia";
+		case NGiaRateEnum : return "NGiaRate";
+		case UGiaEnum : return "UGia";
+		case UGiaRateEnum : return "UGiaRate";
+		case GradientEnum : return "Gradient";
+		case GroundinglineHeightEnum : return "GroundinglineHeight";
+		case HydraulicPotentialEnum : return "HydraulicPotential";
+		case HydraulicPotentialOldEnum : return "HydraulicPotentialOld";
+		case HydrologyBasalFluxEnum : return "HydrologyBasalFlux";
+		case HydrologyBasinsIdEnum : return "HydrologyBasinsId";
+		case HydrologyBumpHeightEnum : return "HydrologyBumpHeight";
+		case HydrologyBumpSpacingEnum : return "HydrologyBumpSpacing";
+		case HydrologyChannelConductivityEnum : return "HydrologyChannelConductivity";
+		case HydrologydcBasalMoulinInputEnum : return "HydrologydcBasalMoulinInput";
+		case HydrologydcEplThicknessEnum : return "HydrologydcEplThickness";
+		case HydrologydcEplThicknessOldEnum : return "HydrologydcEplThicknessOld";
+		case HydrologydcEplThicknessSubstepEnum : return "HydrologydcEplThicknessSubstep";
+		case HydrologydcEplThicknessTransientEnum : return "HydrologydcEplThicknessTransient";
+		case HydrologydcMaskEplactiveEltEnum : return "HydrologydcMaskEplactiveElt";
+		case HydrologydcMaskEplactiveNodeEnum : return "HydrologydcMaskEplactiveNode";
+		case HydrologydcMaskThawedEltEnum : return "HydrologydcMaskThawedElt";
+		case HydrologydcMaskThawedNodeEnum : return "HydrologydcMaskThawedNode";
+		case HydrologydcSedimentTransmitivityEnum : return "HydrologydcSedimentTransmitivity";
+		case HydrologyDrainageRateEnum : return "HydrologyDrainageRate";
+		case HydrologyEnglacialInputEnum : return "HydrologyEnglacialInput";
+		case HydrologyGapHeightEnum : return "HydrologyGapHeight";
+		case HydrologyGapHeightXEnum : return "HydrologyGapHeightX";
+		case HydrologyGapHeightXXEnum : return "HydrologyGapHeightXX";
+		case HydrologyGapHeightYEnum : return "HydrologyGapHeightY";
+		case HydrologyGapHeightYYEnum : return "HydrologyGapHeightYY";
+		case HydrologyHeadEnum : return "HydrologyHead";
+		case HydrologyHeadOldEnum : return "HydrologyHeadOld";
+		case HydrologyMoulinInputEnum : return "HydrologyMoulinInput";
+		case HydrologyNeumannfluxEnum : return "HydrologyNeumannflux";
+		case HydrologyReynoldsEnum : return "HydrologyReynolds";
+		case HydrologySheetConductivityEnum : return "HydrologySheetConductivity";
+		case HydrologySheetThicknessEnum : return "HydrologySheetThickness";
+		case HydrologySheetThicknessOldEnum : return "HydrologySheetThicknessOld";
+		case HydrologyTwsEnum : return "HydrologyTws";
+		case HydrologyTwsSpcEnum : return "HydrologyTwsSpc";
+		case HydrologyTwsAnalysisEnum : return "HydrologyTwsAnalysis";
+		case HydrologyWatercolumnMaxEnum : return "HydrologyWatercolumnMax";
+		case HydrologyWaterVxEnum : return "HydrologyWaterVx";
+		case HydrologyWaterVyEnum : return "HydrologyWaterVy";
+		case HydrologyMaskNodeActivationEnum : return "HydrologyMaskNodeActivation";
+		case DebrisMaskNodeActivationEnum : return "DebrisMaskNodeActivation";
+		case IceEnum : return "Ice";
+		case IceMaskNodeActivationEnum : return "IceMaskNodeActivation";
+		case InputEnum : return "Input";
+		case InversionCostFunctionsCoefficientsEnum : return "InversionCostFunctionsCoefficients";
+		case InversionSurfaceObsEnum : return "InversionSurfaceObs";
+		case InversionThicknessObsEnum : return "InversionThicknessObs";
+		case InversionVelObsEnum : return "InversionVelObs";
+		case InversionVxObsEnum : return "InversionVxObs";
+		case InversionVyObsEnum : return "InversionVyObs";
+		case LevelsetfunctionSlopeXEnum : return "LevelsetfunctionSlopeX";
+		case LevelsetfunctionSlopeYEnum : return "LevelsetfunctionSlopeY";
+		case LevelsetObservationEnum : return "LevelsetObservation";
+		case LoadingforceXEnum : return "LoadingforceX";
+		case LoadingforceYEnum : return "LoadingforceY";
+		case LoadingforceZEnum : return "LoadingforceZ";
+		case MaskOceanLevelsetEnum : return "MaskOceanLevelset";
+		case MaskIceLevelsetEnum : return "MaskIceLevelset";
+		case MaskIceRefLevelsetEnum : return "MaskIceRefLevelset";
+		case MasstransportSpcthicknessEnum : return "MasstransportSpcthickness";
+		case MaterialsRheologyBEnum : return "MaterialsRheologyB";
+		case MaterialsRheologyBbarEnum : return "MaterialsRheologyBbar";
+		case MaterialsRheologyEEnum : return "MaterialsRheologyE";
+		case MaterialsRheologyEbarEnum : return "MaterialsRheologyEbar";
+		case MaterialsRheologyEcEnum : return "MaterialsRheologyEc";
+		case MaterialsRheologyEcbarEnum : return "MaterialsRheologyEcbar";
+		case MaterialsRheologyEsEnum : return "MaterialsRheologyEs";
+		case MaterialsRheologyEsbarEnum : return "MaterialsRheologyEsbar";
+		case MaterialsRheologyNEnum : return "MaterialsRheologyN";
+		case MeshScaleFactorEnum : return "MeshScaleFactor";
+		case MeshVertexonbaseEnum : return "MeshVertexonbase";
+		case MeshVertexonboundaryEnum : return "MeshVertexonboundary";
+		case MeshVertexonsurfaceEnum : return "MeshVertexonsurface";
+		case MisfitEnum : return "Misfit";
+		case MovingFrontalVxEnum : return "MovingFrontalVx";
+		case MovingFrontalVyEnum : return "MovingFrontalVy";
+		case NeumannfluxEnum : return "Neumannflux";
+		case NewDamageEnum : return "NewDamage";
+		case NodeEnum : return "Node";
+		case OmegaAbsGradientEnum : return "OmegaAbsGradient";
+		case OceantransportSpcbottompressureEnum : return "OceantransportSpcbottompressure";
+		case OceantransportSpcstrEnum : return "OceantransportSpcstr";
+		case OceantransportSpcdslEnum : return "OceantransportSpcdsl";
+		case P0Enum : return "P0";
+		case P1Enum : return "P1";
+		case PartitioningEnum : return "Partitioning";
+		case PressureEnum : return "Pressure";
+		case RadarEnum : return "Radar";
+		case RadarAttenuationMacGregorEnum : return "RadarAttenuationMacGregor";
+		case RadarAttenuationWolffEnum : return "RadarAttenuationWolff";
+		case RadarIcePeriodEnum : return "RadarIcePeriod";
+		case RadarPowerMacGregorEnum : return "RadarPowerMacGregor";
+		case RadarPowerWolffEnum : return "RadarPowerWolff";
+		case RheologyBAbsGradientEnum : return "RheologyBAbsGradient";
+		case RheologyBInitialguessEnum : return "RheologyBInitialguess";
+		case RheologyBInitialguessMisfitEnum : return "RheologyBInitialguessMisfit";
+		case RheologyBbarAbsGradientEnum : return "RheologyBbarAbsGradient";
+		case SampleEnum : return "Sample";
+		case SampleOldEnum : return "SampleOld";
+		case SampleNoiseEnum : return "SampleNoise";
+		case SamplingBetaEnum : return "SamplingBeta";
+		case SamplingKappaEnum : return "SamplingKappa";
+		case SamplingPhiEnum : return "SamplingPhi";
+		case SamplingTauEnum : return "SamplingTau";
+		case SealevelEnum : return "Sealevel";
+		case SealevelGRDEnum : return "SealevelGRD";
+		case SatGraviGRDEnum : return "SatGraviGRD";
+		case SealevelBarystaticMaskEnum : return "SealevelBarystaticMask";
+		case SealevelBarystaticIceMaskEnum : return "SealevelBarystaticIceMask";
+		case SealevelBarystaticIceWeightsEnum : return "SealevelBarystaticIceWeights";
+		case SealevelBarystaticIceAreaEnum : return "SealevelBarystaticIceArea";
+		case SealevelBarystaticIceLatbarEnum : return "SealevelBarystaticIceLatbar";
+		case SealevelBarystaticIceLongbarEnum : return "SealevelBarystaticIceLongbar";
+		case SealevelBarystaticIceLoadEnum : return "SealevelBarystaticIceLoad";
+		case SealevelBarystaticHydroMaskEnum : return "SealevelBarystaticHydroMask";
+		case SealevelBarystaticHydroWeightsEnum : return "SealevelBarystaticHydroWeights";
+		case SealevelBarystaticHydroAreaEnum : return "SealevelBarystaticHydroArea";
+		case SealevelBarystaticHydroLatbarEnum : return "SealevelBarystaticHydroLatbar";
+		case SealevelBarystaticHydroLongbarEnum : return "SealevelBarystaticHydroLongbar";
+		case SealevelBarystaticHydroLoadEnum : return "SealevelBarystaticHydroLoad";
+		case SealevelBarystaticBpMaskEnum : return "SealevelBarystaticBpMask";
+		case SealevelBarystaticBpWeightsEnum : return "SealevelBarystaticBpWeights";
+		case SealevelBarystaticBpAreaEnum : return "SealevelBarystaticBpArea";
+		case SealevelBarystaticBpLoadEnum : return "SealevelBarystaticBpLoad";
+		case SealevelBarystaticOceanMaskEnum : return "SealevelBarystaticOceanMask";
+		case SealevelBarystaticOceanWeightsEnum : return "SealevelBarystaticOceanWeights";
+		case SealevelBarystaticOceanAreaEnum : return "SealevelBarystaticOceanArea";
+		case SealevelBarystaticOceanLatbarEnum : return "SealevelBarystaticOceanLatbar";
+		case SealevelBarystaticOceanLongbarEnum : return "SealevelBarystaticOceanLongbar";
+		case SealevelBarystaticOceanLoadEnum : return "SealevelBarystaticOceanLoad";
+		case SealevelNEsaEnum : return "SealevelNEsa";
+		case SealevelNEsaRateEnum : return "SealevelNEsaRate";
+		case SealevelRSLEnum : return "SealevelRSL";
+		case BslcEnum : return "Bslc";
+		case BslcIceEnum : return "BslcIce";
+		case BslcHydroEnum : return "BslcHydro";
+		case BslcOceanEnum : return "BslcOcean";
+		case BslcRateEnum : return "BslcRate";
+		case GmtslcEnum : return "Gmtslc";
+		case SealevelRSLBarystaticEnum : return "SealevelRSLBarystatic";
+		case SealevelRSLRateEnum : return "SealevelRSLRate";
+		case SealevelUGrdEnum : return "SealevelUGrd";
+		case SealevelNGrdEnum : return "SealevelNGrd";
+		case SealevelUEastEsaEnum : return "SealevelUEastEsa";
+		case SealevelUNorthEsaEnum : return "SealevelUNorthEsa";
+		case SealevelchangeIndicesEnum : return "SealevelchangeIndices";
+		case SealevelchangeConvolutionVerticesEnum : return "SealevelchangeConvolutionVertices";
+		case SealevelchangeAlphaIndexEnum : return "SealevelchangeAlphaIndex";
+		case SealevelchangeAzimuthIndexEnum : return "SealevelchangeAzimuthIndex";
+		case SealevelchangeGrotEnum : return "SealevelchangeGrot";
+		case SealevelchangeGSatGravirotEnum : return "SealevelchangeGSatGravirot";
+		case SealevelchangeGUrotEnum : return "SealevelchangeGUrot";
+		case SealevelchangeGNrotEnum : return "SealevelchangeGNrot";
+		case SealevelchangeGErotEnum : return "SealevelchangeGErot";
+		case SealevelchangeAlphaIndexOceanEnum : return "SealevelchangeAlphaIndexOcean";
+		case SealevelchangeAlphaIndexIceEnum : return "SealevelchangeAlphaIndexIce";
+		case SealevelchangeAlphaIndexHydroEnum : return "SealevelchangeAlphaIndexHydro";
+		case SealevelchangeAzimuthIndexOceanEnum : return "SealevelchangeAzimuthIndexOcean";
+		case SealevelchangeAzimuthIndexIceEnum : return "SealevelchangeAzimuthIndexIce";
+		case SealevelchangeAzimuthIndexHydroEnum : return "SealevelchangeAzimuthIndexHydro";
+		case SealevelchangeViscousRSLEnum : return "SealevelchangeViscousRSL";
+		case SealevelchangeViscousSGEnum : return "SealevelchangeViscousSG";
+		case SealevelchangeViscousUEnum : return "SealevelchangeViscousU";
+		case SealevelchangeViscousNEnum : return "SealevelchangeViscousN";
+		case SealevelchangeViscousEEnum : return "SealevelchangeViscousE";
+		case CouplingTransferCountEnum : return "CouplingTransferCount";
+		case SedimentHeadEnum : return "SedimentHead";
+		case SedimentHeadOldEnum : return "SedimentHeadOld";
+		case SedimentHeadSubstepEnum : return "SedimentHeadSubstep";
+		case SedimentHeadTransientEnum : return "SedimentHeadTransient";
+		case SedimentHeadResidualEnum : return "SedimentHeadResidual";
+		case SedimentHeadStackedEnum : return "SedimentHeadStacked";
+		case SigmaNNEnum : return "SigmaNN";
+		case SigmaVMEnum : return "SigmaVM";
+		case SmbAccumulatedECEnum : return "SmbAccumulatedEC";
+		case SmbAccumulatedMassBalanceEnum : return "SmbAccumulatedMassBalance";
+		case SmbAccumulatedMeltEnum : return "SmbAccumulatedMelt";
+		case SmbAccumulatedPrecipitationEnum : return "SmbAccumulatedPrecipitation";
+		case SmbAccumulatedRainEnum : return "SmbAccumulatedRain";
+		case SmbAccumulatedRefreezeEnum : return "SmbAccumulatedRefreeze";
+		case SmbAccumulatedRunoffEnum : return "SmbAccumulatedRunoff";
+		case SmbAlbedoEnum : return "SmbAlbedo";
+		case SmbAlbedoInitEnum : return "SmbAlbedoInit";
+		case SmbAlbedoSnowEnum : return "SmbAlbedoSnow";
+		case SmbAlbedoSnowInitEnum : return "SmbAlbedoSnowInit";
+		case SmbAEnum : return "SmbA";
+		case SmbAdiffEnum : return "SmbAdiff";
+		case SmbAValueEnum : return "SmbAValue";
+		case SmbAccumulationEnum : return "SmbAccumulation";
+		case SmbAdiffiniEnum : return "SmbAdiffini";
+		case SmbAiniEnum : return "SmbAini";
+		case SmbARMANoiseEnum : return "SmbARMANoise";
+		case SmbBasinsIdEnum : return "SmbBasinsId";
+		case SmbBMaxEnum : return "SmbBMax";
+		case SmbBMinEnum : return "SmbBMin";
+		case SmbBNegEnum : return "SmbBNeg";
+		case SmbBPosEnum : return "SmbBPos";
+		case SmbCEnum : return "SmbC";
+		case SmbCcsnowValueEnum : return "SmbCcsnowValue";
+		case SmbCciceValueEnum : return "SmbCciceValue";
+		case SmbCotValueEnum : return "SmbCotValue";
+		case SmbDEnum : return "SmbD";
+		case SmbDailyairdensityEnum : return "SmbDailyairdensity";
+		case SmbDailyairhumidityEnum : return "SmbDailyairhumidity";
+		case SmbDailydlradiationEnum : return "SmbDailydlradiation";
+		case SmbDailydsradiationEnum : return "SmbDailydsradiation";
+		case SmbDailypressureEnum : return "SmbDailypressure";
+		case SmbDailyrainfallEnum : return "SmbDailyrainfall";
+		case SmbDailysnowfallEnum : return "SmbDailysnowfall";
+		case SmbDailytemperatureEnum : return "SmbDailytemperature";
+		case SmbDailywindspeedEnum : return "SmbDailywindspeed";
+		case SmbDiniEnum : return "SmbDini";
+		case SmbDlwrfEnum : return "SmbDlwrf";
+		case SmbDulwrfValueEnum : return "SmbDulwrfValue";
+		case SmbDswrfEnum : return "SmbDswrf";
+		case SmbDswdiffrfEnum : return "SmbDswdiffrf";
+		case SmbDzAddEnum : return "SmbDzAdd";
+		case SmbDzEnum : return "SmbDz";
+		case SmbDzMinEnum : return "SmbDzMin";
+		case SmbDzTopEnum : return "SmbDzTop";
+		case SmbDziniEnum : return "SmbDzini";
+		case SmbEAirEnum : return "SmbEAir";
+		case SmbECEnum : return "SmbEC";
+		case SmbECDtEnum : return "SmbECDt";
+		case SmbECiniEnum : return "SmbECini";
+		case SmbElaEnum : return "SmbEla";
+		case SmbEvaporationEnum : return "SmbEvaporation";
+		case SmbFACEnum : return "SmbFAC";
+		case SmbGdnEnum : return "SmbGdn";
+		case SmbGdniniEnum : return "SmbGdnini";
+		case SmbGspEnum : return "SmbGsp";
+		case SmbGspiniEnum : return "SmbGspini";
+		case SmbHIceEnum : return "SmbHIce";
+		case SmbHIceInitEnum : return "SmbHIceInit";
+		case SmbHSnowEnum : return "SmbHSnow";
+		case SmbHSnowInitEnum : return "SmbHSnowInit";
+		case SmbHrefEnum : return "SmbHref";
+		case SmbIsInitializedEnum : return "SmbIsInitialized";
+		case SmbMAddEnum : return "SmbMAdd";
+		case SmbMassBalanceEnum : return "SmbMassBalance";
+		case SmbMassBalanceSnowEnum : return "SmbMassBalanceSnow";
+		case SmbMassBalanceIceEnum : return "SmbMassBalanceIce";
+		case SmbMassBalanceSemicEnum : return "SmbMassBalanceSemic";
+		case SmbMassBalanceSubstepEnum : return "SmbMassBalanceSubstep";
+		case SmbMassBalanceTransientEnum : return "SmbMassBalanceTransient";
+		case SmbMaskEnum : return "SmbMask";
+		case SmbMeanLHFEnum : return "SmbMeanLHF";
+		case SmbMeanSHFEnum : return "SmbMeanSHF";
+		case SmbMeanULWEnum : return "SmbMeanULW";
+		case SmbMeltEnum : return "SmbMelt";
+		case SmbMonthlytemperaturesEnum : return "SmbMonthlytemperatures";
+		case SmbMonthlydsradiationEnum : return "SmbMonthlydsradiation";
+		case SmbMonthlydlradiationEnum : return "SmbMonthlydlradiation";
+		case SmbMonthlywindspeedEnum : return "SmbMonthlywindspeed";
+		case SmbMonthlyairhumidityEnum : return "SmbMonthlyairhumidity";
+		case SmbMSurfEnum : return "SmbMSurf";
+		case SmbNetLWEnum : return "SmbNetLW";
+		case SmbNetSWEnum : return "SmbNetSW";
+		case SmbPAirEnum : return "SmbPAir";
+		case SmbPEnum : return "SmbP";
+		case SmbPddfacIceEnum : return "SmbPddfacIce";
+		case SmbPddfacSnowEnum : return "SmbPddfacSnow";
+		case SmbPrecipitationEnum : return "SmbPrecipitation";
+		case SmbPrecipitationsAnomalyEnum : return "SmbPrecipitationsAnomaly";
+		case SmbDsradiationAnomalyEnum : return "SmbDsradiationAnomaly";
+		case SmbDlradiationAnomalyEnum : return "SmbDlradiationAnomaly";
+		case SmbWindspeedAnomalyEnum : return "SmbWindspeedAnomaly";
+		case SmbAirhumidityAnomalyEnum : return "SmbAirhumidityAnomaly";
+		case SmbPrecipitationsLgmEnum : return "SmbPrecipitationsLgm";
+		case SmbPrecipitationsPresentdayEnum : return "SmbPrecipitationsPresentday";
+		case SmbPrecipitationsReconstructedEnum : return "SmbPrecipitationsReconstructed";
+		case SmbRainEnum : return "SmbRain";
+		case SmbReEnum : return "SmbRe";
+		case SmbRefreezeEnum : return "SmbRefreeze";
+		case SmbReiniEnum : return "SmbReini";
+		case SmbRunoffEnum : return "SmbRunoff";
+		case SmbRunoffSubstepEnum : return "SmbRunoffSubstep";
+		case SmbRunoffTransientEnum : return "SmbRunoffTransient";
+		case SmbS0gcmEnum : return "SmbS0gcm";
+		case SmbS0pEnum : return "SmbS0p";
+		case SmbS0tEnum : return "SmbS0t";
+		case SmbSemicQmrEnum : return "SmbSemicQmr";
+		case SmbSemicQmrInitEnum : return "SmbSemicQmrInit";
+		case SmbSizeiniEnum : return "SmbSizeini";
+		case SmbSmbCorrEnum : return "SmbSmbCorr";
+		case SmbSmbrefEnum : return "SmbSmbref";
+		case SmbSzaValueEnum : return "SmbSzaValue";
+		case SmbSummerMeltEnum : return "SmbSummerMelt";
+		case SmbSummerAlbedoEnum : return "SmbSummerAlbedo";
+		case SmbSnowheightEnum : return "SmbSnowheight";
+		case SmbTEnum : return "SmbT";
+		case SmbTaEnum : return "SmbTa";
+		case SmbTampEnum : return "SmbTamp";
+		case SmbTeValueEnum : return "SmbTeValue";
+		case SmbTemperaturesAnomalyEnum : return "SmbTemperaturesAnomaly";
+		case SmbTemperaturesLgmEnum : return "SmbTemperaturesLgm";
+		case SmbTemperaturesPresentdayEnum : return "SmbTemperaturesPresentday";
+		case SmbTemperaturesReconstructedEnum : return "SmbTemperaturesReconstructed";
+		case SmbTiniEnum : return "SmbTini";
+		case SmbTmeanEnum : return "SmbTmean";
+		case SmbTzEnum : return "SmbTz";
+		case SmbValuesAutoregressionEnum : return "SmbValuesAutoregression";
+		case SmbValuesMovingaverageEnum : return "SmbValuesMovingaverage";
+		case SmbVEnum : return "SmbV";
+		case SmbVmeanEnum : return "SmbVmean";
+		case SmbVzEnum : return "SmbVz";
+		case SmbWEnum : return "SmbW";
+		case SmbWAddEnum : return "SmbWAdd";
+		case SmbWiniEnum : return "SmbWini";
+		case SmbZMaxEnum : return "SmbZMax";
+		case SmbZMinEnum : return "SmbZMin";
+		case SmbZTopEnum : return "SmbZTop";
+		case SmbZYEnum : return "SmbZY";
+		case SolidearthExternalDisplacementEastRateEnum : return "SolidearthExternalDisplacementEastRate";
+		case SolidearthExternalDisplacementNorthRateEnum : return "SolidearthExternalDisplacementNorthRate";
+		case SolidearthExternalDisplacementUpRateEnum : return "SolidearthExternalDisplacementUpRate";
+		case SolidearthExternalGeoidRateEnum : return "SolidearthExternalGeoidRate";
+		case StochasticForcingDefaultIdEnum : return "StochasticForcingDefaultId";
+		case StrainRateeffectiveEnum : return "StrainRateeffective";
+		case StrainRateparallelEnum : return "StrainRateparallel";
+		case StrainRateperpendicularEnum : return "StrainRateperpendicular";
+		case StrainRatexxEnum : return "StrainRatexx";
+		case StrainRatexyEnum : return "StrainRatexy";
+		case StrainRatexzEnum : return "StrainRatexz";
+		case StrainRateyyEnum : return "StrainRateyy";
+		case StrainRateyzEnum : return "StrainRateyz";
+		case StrainRatezzEnum : return "StrainRatezz";
+		case StressMaxPrincipalEnum : return "StressMaxPrincipal";
+		case StressTensorxxEnum : return "StressTensorxx";
+		case StressTensorxyEnum : return "StressTensorxy";
+		case StressTensorxzEnum : return "StressTensorxz";
+		case StressTensoryyEnum : return "StressTensoryy";
+		case StressTensoryzEnum : return "StressTensoryz";
+		case StressTensorzzEnum : return "StressTensorzz";
+		case SubglacialdischargeARMANoiseEnum : return "SubglacialdischargeARMANoise";
+		case SubglacialdischargeValuesAutoregressionEnum : return "SubglacialdischargeValuesAutoregression";
+		case SubglacialdischargeValuesMovingaverageEnum : return "SubglacialdischargeValuesMovingaverage";
+		case SurfaceAbsMisfitEnum : return "SurfaceAbsMisfit";
+		case SurfaceAbsVelMisfitEnum : return "SurfaceAbsVelMisfit";
+		case AreaEnum : return "Area";
+		case SealevelAreaEnum : return "SealevelArea";
+		case SurfaceAreaEnum : return "SurfaceArea";
+		case SurfaceAverageVelMisfitEnum : return "SurfaceAverageVelMisfit";
+		case SurfaceCrevasseEnum : return "SurfaceCrevasse";
+		case SurfaceEnum : return "Surface";
+		case SurfaceOldEnum : return "SurfaceOld";
+		case SurfaceLogVelMisfitEnum : return "SurfaceLogVelMisfit";
+		case SurfaceLogVxVyMisfitEnum : return "SurfaceLogVxVyMisfit";
+		case SurfaceObservationEnum : return "SurfaceObservation";
+		case SurfaceRelVelMisfitEnum : return "SurfaceRelVelMisfit";
+		case SurfaceSlopeXEnum : return "SurfaceSlopeX";
+		case SurfaceSlopeYEnum : return "SurfaceSlopeY";
+		case TemperatureEnum : return "Temperature";
+		case TemperaturePDDEnum : return "TemperaturePDD";
+		case TemperaturePicardEnum : return "TemperaturePicard";
+		case TemperatureSEMICEnum : return "TemperatureSEMIC";
+		case ThermalforcingARMANoiseEnum : return "ThermalforcingARMANoise";
+		case ThermalForcingEnum : return "ThermalForcing";
+		case ThermalforcingValuesAutoregressionEnum : return "ThermalforcingValuesAutoregression";
+		case ThermalforcingValuesMovingaverageEnum : return "ThermalforcingValuesMovingaverage";
+		case ThermalSpctemperatureEnum : return "ThermalSpctemperature";
+		case ThicknessAbsGradientEnum : return "ThicknessAbsGradient";
+		case ThicknessAbsMisfitEnum : return "ThicknessAbsMisfit";
+		case ThicknessAcrossGradientEnum : return "ThicknessAcrossGradient";
+		case ThicknessAlongGradientEnum : return "ThicknessAlongGradient";
+		case ThicknessEnum : return "Thickness";
+		case ThicknessOldEnum : return "ThicknessOld";
+		case ThicknessPositiveEnum : return "ThicknessPositive";
+		case ThicknessResidualEnum : return "ThicknessResidual";
+		case TransientAccumulatedDeltaIceThicknessEnum : return "TransientAccumulatedDeltaIceThickness";
+		case VelEnum : return "Vel";
+		case VxAverageEnum : return "VxAverage";
+		case VxBaseEnum : return "VxBase";
+		case VxDebrisEnum : return "VxDebris";
+		case VxEnum : return "Vx";
+		case VxMeshEnum : return "VxMesh";
+		case VxObsEnum : return "VxObs";
+		case VxShearEnum : return "VxShear";
+		case VxSurfaceEnum : return "VxSurface";
+		case VyAverageEnum : return "VyAverage";
+		case VyBaseEnum : return "VyBase";
+		case VyDebrisEnum : return "VyDebris";
+		case VyEnum : return "Vy";
+		case VyMeshEnum : return "VyMesh";
+		case VyObsEnum : return "VyObs";
+		case VyShearEnum : return "VyShear";
+		case VySurfaceEnum : return "VySurface";
+		case VzEnum : return "Vz";
+		case VzFSEnum : return "VzFS";
+		case VzHOEnum : return "VzHO";
+		case VzMeshEnum : return "VzMesh";
+		case VzSSAEnum : return "VzSSA";
+		case WaterColumnOldEnum : return "WaterColumnOld";
+		case WatercolumnEnum : return "Watercolumn";
+		case WaterfractionDrainageEnum : return "WaterfractionDrainage";
+		case WaterfractionDrainageIntegratedEnum : return "WaterfractionDrainageIntegrated";
+		case WaterfractionEnum : return "Waterfraction";
+		case WaterheightEnum : return "Waterheight";
+		case WaterPressureArmaPerturbationEnum : return "WaterPressureArmaPerturbation";
+		case WaterPressureValuesAutoregressionEnum : return "WaterPressureValuesAutoregression";
+		case WaterPressureValuesMovingaverageEnum : return "WaterPressureValuesMovingaverage";
+		case WeightsLevelsetObservationEnum : return "WeightsLevelsetObservation";
+		case WeightsMeltObservationEnum : return "WeightsMeltObservation";
+		case WeightsVxObservationEnum : return "WeightsVxObservation";
+		case WeightsVyObservationEnum : return "WeightsVyObservation";
+		case WeightsSurfaceObservationEnum : return "WeightsSurfaceObservation";
+		case OldAccumulatedDeltaBottomPressureEnum : return "OldAccumulatedDeltaBottomPressure";
+		case OldAccumulatedDeltaIceThicknessEnum : return "OldAccumulatedDeltaIceThickness";
+		case OldAccumulatedDeltaTwsEnum : return "OldAccumulatedDeltaTws";
+		case Outputdefinition1Enum : return "Outputdefinition1";
+		case Outputdefinition10Enum : return "Outputdefinition10";
+		case Outputdefinition11Enum : return "Outputdefinition11";
+		case Outputdefinition12Enum : return "Outputdefinition12";
+		case Outputdefinition13Enum : return "Outputdefinition13";
+		case Outputdefinition14Enum : return "Outputdefinition14";
+		case Outputdefinition15Enum : return "Outputdefinition15";
+		case Outputdefinition16Enum : return "Outputdefinition16";
+		case Outputdefinition17Enum : return "Outputdefinition17";
+		case Outputdefinition18Enum : return "Outputdefinition18";
+		case Outputdefinition19Enum : return "Outputdefinition19";
+		case Outputdefinition20Enum : return "Outputdefinition20";
+		case Outputdefinition21Enum : return "Outputdefinition21";
+		case Outputdefinition22Enum : return "Outputdefinition22";
+		case Outputdefinition23Enum : return "Outputdefinition23";
+		case Outputdefinition24Enum : return "Outputdefinition24";
+		case Outputdefinition25Enum : return "Outputdefinition25";
+		case Outputdefinition26Enum : return "Outputdefinition26";
+		case Outputdefinition27Enum : return "Outputdefinition27";
+		case Outputdefinition28Enum : return "Outputdefinition28";
+		case Outputdefinition29Enum : return "Outputdefinition29";
+		case Outputdefinition2Enum : return "Outputdefinition2";
+		case Outputdefinition30Enum : return "Outputdefinition30";
+		case Outputdefinition31Enum : return "Outputdefinition31";
+		case Outputdefinition32Enum : return "Outputdefinition32";
+		case Outputdefinition33Enum : return "Outputdefinition33";
+		case Outputdefinition34Enum : return "Outputdefinition34";
+		case Outputdefinition35Enum : return "Outputdefinition35";
+		case Outputdefinition36Enum : return "Outputdefinition36";
+		case Outputdefinition37Enum : return "Outputdefinition37";
+		case Outputdefinition38Enum : return "Outputdefinition38";
+		case Outputdefinition39Enum : return "Outputdefinition39";
+		case Outputdefinition3Enum : return "Outputdefinition3";
+		case Outputdefinition40Enum : return "Outputdefinition40";
+		case Outputdefinition41Enum : return "Outputdefinition41";
+		case Outputdefinition42Enum : return "Outputdefinition42";
+		case Outputdefinition43Enum : return "Outputdefinition43";
+		case Outputdefinition44Enum : return "Outputdefinition44";
+		case Outputdefinition45Enum : return "Outputdefinition45";
+		case Outputdefinition46Enum : return "Outputdefinition46";
+		case Outputdefinition47Enum : return "Outputdefinition47";
+		case Outputdefinition48Enum : return "Outputdefinition48";
+		case Outputdefinition49Enum : return "Outputdefinition49";
+		case Outputdefinition4Enum : return "Outputdefinition4";
+		case Outputdefinition50Enum : return "Outputdefinition50";
+		case Outputdefinition51Enum : return "Outputdefinition51";
+		case Outputdefinition52Enum : return "Outputdefinition52";
+		case Outputdefinition53Enum : return "Outputdefinition53";
+		case Outputdefinition54Enum : return "Outputdefinition54";
+		case Outputdefinition55Enum : return "Outputdefinition55";
+		case Outputdefinition56Enum : return "Outputdefinition56";
+		case Outputdefinition57Enum : return "Outputdefinition57";
+		case Outputdefinition58Enum : return "Outputdefinition58";
+		case Outputdefinition59Enum : return "Outputdefinition59";
+		case Outputdefinition5Enum : return "Outputdefinition5";
+		case Outputdefinition60Enum : return "Outputdefinition60";
+		case Outputdefinition61Enum : return "Outputdefinition61";
+		case Outputdefinition62Enum : return "Outputdefinition62";
+		case Outputdefinition63Enum : return "Outputdefinition63";
+		case Outputdefinition64Enum : return "Outputdefinition64";
+		case Outputdefinition65Enum : return "Outputdefinition65";
+		case Outputdefinition66Enum : return "Outputdefinition66";
+		case Outputdefinition67Enum : return "Outputdefinition67";
+		case Outputdefinition68Enum : return "Outputdefinition68";
+		case Outputdefinition69Enum : return "Outputdefinition69";
+		case Outputdefinition6Enum : return "Outputdefinition6";
+		case Outputdefinition70Enum : return "Outputdefinition70";
+		case Outputdefinition71Enum : return "Outputdefinition71";
+		case Outputdefinition72Enum : return "Outputdefinition72";
+		case Outputdefinition73Enum : return "Outputdefinition73";
+		case Outputdefinition74Enum : return "Outputdefinition74";
+		case Outputdefinition75Enum : return "Outputdefinition75";
+		case Outputdefinition76Enum : return "Outputdefinition76";
+		case Outputdefinition77Enum : return "Outputdefinition77";
+		case Outputdefinition78Enum : return "Outputdefinition78";
+		case Outputdefinition79Enum : return "Outputdefinition79";
+		case Outputdefinition7Enum : return "Outputdefinition7";
+		case Outputdefinition80Enum : return "Outputdefinition80";
+		case Outputdefinition81Enum : return "Outputdefinition81";
+		case Outputdefinition82Enum : return "Outputdefinition82";
+		case Outputdefinition83Enum : return "Outputdefinition83";
+		case Outputdefinition84Enum : return "Outputdefinition84";
+		case Outputdefinition85Enum : return "Outputdefinition85";
+		case Outputdefinition86Enum : return "Outputdefinition86";
+		case Outputdefinition87Enum : return "Outputdefinition87";
+		case Outputdefinition88Enum : return "Outputdefinition88";
+		case Outputdefinition89Enum : return "Outputdefinition89";
+		case Outputdefinition8Enum : return "Outputdefinition8";
+		case Outputdefinition90Enum : return "Outputdefinition90";
+		case Outputdefinition91Enum : return "Outputdefinition91";
+		case Outputdefinition92Enum : return "Outputdefinition92";
+		case Outputdefinition93Enum : return "Outputdefinition93";
+		case Outputdefinition94Enum : return "Outputdefinition94";
+		case Outputdefinition95Enum : return "Outputdefinition95";
+		case Outputdefinition96Enum : return "Outputdefinition96";
+		case Outputdefinition97Enum : return "Outputdefinition97";
+		case Outputdefinition98Enum : return "Outputdefinition98";
+		case Outputdefinition99Enum : return "Outputdefinition99";
+		case Outputdefinition9Enum : return "Outputdefinition9";
+		case Outputdefinition100Enum : return "Outputdefinition100";
+		case InputsENDEnum : return "InputsEND";
+		case AbsoluteEnum : return "Absolute";
+		case AdaptiveTimesteppingEnum : return "AdaptiveTimestepping";
+		case AdjointBalancethickness2AnalysisEnum : return "AdjointBalancethickness2Analysis";
+		case AdjointBalancethicknessAnalysisEnum : return "AdjointBalancethicknessAnalysis";
+		case AdjointHorizAnalysisEnum : return "AdjointHorizAnalysis";
+		case AgeAnalysisEnum : return "AgeAnalysis";
+		case AggressiveMigrationEnum : return "AggressiveMigration";
+		case AmrBamgEnum : return "AmrBamg";
+		case AmrNeopzEnum : return "AmrNeopz";
+		case AndroidFrictionCoefficientEnum : return "AndroidFrictionCoefficient";
+		case ArrheniusEnum : return "Arrhenius";
+		case AutodiffJacobianEnum : return "AutodiffJacobian";
+		case Balancethickness2AnalysisEnum : return "Balancethickness2Analysis";
+		case Balancethickness2SolutionEnum : return "Balancethickness2Solution";
+		case BalancethicknessAnalysisEnum : return "BalancethicknessAnalysis";
+		case BalancethicknessApparentMassbalanceEnum : return "BalancethicknessApparentMassbalance";
+		case BalancethicknessSoftAnalysisEnum : return "BalancethicknessSoftAnalysis";
+		case BalancethicknessSoftSolutionEnum : return "BalancethicknessSoftSolution";
+		case BalancethicknessSolutionEnum : return "BalancethicknessSolution";
+		case BalancevelocityAnalysisEnum : return "BalancevelocityAnalysis";
+		case BalancevelocitySolutionEnum : return "BalancevelocitySolution";
+		case BasalforcingsIsmip6Enum : return "BasalforcingsIsmip6";
+		case BasalforcingsPicoEnum : return "BasalforcingsPico";
+		case BeckmannGoosseFloatingMeltRateEnum : return "BeckmannGoosseFloatingMeltRate";
+		case BedSlopeSolutionEnum : return "BedSlopeSolution";
+		case BoolExternalResultEnum : return "BoolExternalResult";
+		case BoolInputEnum : return "BoolInput";
+		case IntInputEnum : return "IntInput";
+		case DoubleInputEnum : return "DoubleInput";
+		case BoolParamEnum : return "BoolParam";
+		case BoundaryEnum : return "Boundary";
+		case BuddJackaEnum : return "BuddJacka";
+		case CalvingDev2Enum : return "CalvingDev2";
+		case CalvingHabEnum : return "CalvingHab";
+		case CalvingLevermannEnum : return "CalvingLevermann";
+		case CalvingTestEnum : return "CalvingTest";
+		case CalvingParameterizationEnum : return "CalvingParameterization";
+		case CalvingCalvingMIPEnum : return "CalvingCalvingMIP";
+		case CalvingVonmisesEnum : return "CalvingVonmises";
+		case CalvingVonmisesADEnum : return "CalvingVonmisesAD";
+		case CalvingPollardEnum : return "CalvingPollard";
+		case CfdragcoeffabsgradEnum : return "Cfdragcoeffabsgrad";
+		case CfdragcoeffabsgradtransientEnum : return "Cfdragcoeffabsgradtransient";
+		case CfrheologybbarabsgradEnum : return "Cfrheologybbarabsgrad";
+		case CfrheologybbarabsgradtransientEnum : return "Cfrheologybbarabsgradtransient";
+		case CfsurfacelogvelEnum : return "Cfsurfacelogvel";
+		case CfsurfacesquareEnum : return "Cfsurfacesquare";
+		case CfsurfacesquaretransientEnum : return "Cfsurfacesquaretransient";
+		case CflevelsetmisfitEnum : return "Cflevelsetmisfit";
+		case ChannelEnum : return "Channel";
+		case ChannelAreaEnum : return "ChannelArea";
+		case ChannelAreaOldEnum : return "ChannelAreaOld";
+		case ChannelDischargeEnum : return "ChannelDischarge";
+		case ClosedEnum : return "Closed";
+		case ColinearEnum : return "Colinear";
+		case ConstraintsEnum : return "Constraints";
+		case ContactEnum : return "Contact";
+		case ContourEnum : return "Contour";
+		case ContoursEnum : return "Contours";
+		case ControlInputEnum : return "ControlInput";
+		case ControlInputGradEnum : return "ControlInputGrad";
+		case ControlInputMaxsEnum : return "ControlInputMaxs";
+		case ControlInputMinsEnum : return "ControlInputMins";
+		case ControlInputValuesEnum : return "ControlInputValues";
+		case ControlParamEnum : return "ControlParam";
+		case CrouzeixRaviartEnum : return "CrouzeixRaviart";
+		case CuffeyEnum : return "Cuffey";
+		case CuffeyTemperateEnum : return "CuffeyTemperate";
+		case DamageEvolutionAnalysisEnum : return "DamageEvolutionAnalysis";
+		case DamageEvolutionSolutionEnum : return "DamageEvolutionSolution";
+		case DataSetEnum : return "DataSet";
+		case DataSetParamEnum : return "DataSetParam";
+		case DatasetInputEnum : return "DatasetInput";
+		case DebrisAnalysisEnum : return "DebrisAnalysis";
+		case DebrisSolutionEnum : return "DebrisSolution";
+		case DefaultAnalysisEnum : return "DefaultAnalysis";
+		case DefaultCalvingEnum : return "DefaultCalving";
+		case DenseEnum : return "Dense";
+		case DependentObjectEnum : return "DependentObject";
+		case DepthAverageAnalysisEnum : return "DepthAverageAnalysis";
+		case DeviatoricStressErrorEstimatorEnum : return "DeviatoricStressErrorEstimator";
+		case DivergenceEnum : return "Divergence";
+		case Domain3DsurfaceEnum : return "Domain3Dsurface";
+		case DoubleArrayInputEnum : return "DoubleArrayInput";
+		case ArrayInputEnum : return "ArrayInput";
+		case IntArrayInputEnum : return "IntArrayInput";
+		case DoubleExternalResultEnum : return "DoubleExternalResult";
+		case DoubleMatArrayParamEnum : return "DoubleMatArrayParam";
+		case DoubleMatExternalResultEnum : return "DoubleMatExternalResult";
+		case DoubleMatParamEnum : return "DoubleMatParam";
+		case DoubleParamEnum : return "DoubleParam";
+		case DoubleVecParamEnum : return "DoubleVecParam";
+		case ElementEnum : return "Element";
+		case ElementHookEnum : return "ElementHook";
+		case ElementSIdEnum : return "ElementSId";
+		case EnthalpyAnalysisEnum : return "EnthalpyAnalysis";
+		case EsaAnalysisEnum : return "EsaAnalysis";
+		case EsaSolutionEnum : return "EsaSolution";
+		case EsaTransitionsEnum : return "EsaTransitions";
+		case ExternalResultEnum : return "ExternalResult";
+		case ExtrapolationAnalysisEnum : return "ExtrapolationAnalysis";
+		case ExtrudeFromBaseAnalysisEnum : return "ExtrudeFromBaseAnalysis";
+		case ExtrudeFromTopAnalysisEnum : return "ExtrudeFromTopAnalysis";
+		case FSApproximationEnum : return "FSApproximation";
+		case FSSolverEnum : return "FSSolver";
+		case FSpressureEnum : return "FSpressure";
+		case FSvelocityEnum : return "FSvelocity";
+		case FemModelEnum : return "FemModel";
+		case FileParamEnum : return "FileParam";
+		case FixedTimesteppingEnum : return "FixedTimestepping";
+		case FloatingAreaEnum : return "FloatingArea";
+		case FloatingAreaScaledEnum : return "FloatingAreaScaled";
+		case FloatingMeltRateEnum : return "FloatingMeltRate";
+		case FreeEnum : return "Free";
+		case FreeSurfaceBaseAnalysisEnum : return "FreeSurfaceBaseAnalysis";
+		case FreeSurfaceTopAnalysisEnum : return "FreeSurfaceTopAnalysis";
+		case FrontalForcingsDefaultEnum : return "FrontalForcingsDefault";
+		case FrontalForcingsRignotEnum : return "FrontalForcingsRignot";
+		case FrontalForcingsRignotarmaEnum : return "FrontalForcingsRignotarma";
+		case FsetEnum : return "Fset";
+		case FullMeltOnPartiallyFloatingEnum : return "FullMeltOnPartiallyFloating";
+		case GLheightadvectionAnalysisEnum : return "GLheightadvectionAnalysis";
+		case GaussPentaEnum : return "GaussPenta";
+		case GaussSegEnum : return "GaussSeg";
+		case GaussTetraEnum : return "GaussTetra";
+		case GaussTriaEnum : return "GaussTria";
+		case GenericOptionEnum : return "GenericOption";
+		case GenericParamEnum : return "GenericParam";
+		case GenericExternalResultEnum : return "GenericExternalResult";
+		case Gradient1Enum : return "Gradient1";
+		case Gradient2Enum : return "Gradient2";
+		case Gradient3Enum : return "Gradient3";
+		case Gradient4Enum : return "Gradient4";
+		case GroundedAreaEnum : return "GroundedArea";
+		case GroundedAreaScaledEnum : return "GroundedAreaScaled";
+		case GroundingOnlyEnum : return "GroundingOnly";
+		case GroundinglineMassFluxEnum : return "GroundinglineMassFlux";
+		case GsetEnum : return "Gset";
+		case GslEnum : return "Gsl";
+		case HOApproximationEnum : return "HOApproximation";
+		case HOFSApproximationEnum : return "HOFSApproximation";
+		case HookEnum : return "Hook";
+		case HydrologyArmapwAnalysisEnum : return "HydrologyArmapwAnalysis";
+		case HydrologyarmapwEnum : return "Hydrologyarmapw";
+		case HydrologyDCEfficientAnalysisEnum : return "HydrologyDCEfficientAnalysis";
+		case HydrologyDCInefficientAnalysisEnum : return "HydrologyDCInefficientAnalysis";
+		case HydrologyGlaDSAnalysisEnum : return "HydrologyGlaDSAnalysis";
+		case HydrologyGlaDSEnum : return "HydrologyGlaDS";
+		case HydrologyPismAnalysisEnum : return "HydrologyPismAnalysis";
+		case HydrologyShaktiAnalysisEnum : return "HydrologyShaktiAnalysis";
+		case HydrologyShreveAnalysisEnum : return "HydrologyShreveAnalysis";
+		case HydrologySolutionEnum : return "HydrologySolution";
+		case HydrologySubstepsEnum : return "HydrologySubsteps";
+		case HydrologySubTimeEnum : return "HydrologySubTime";
+		case HydrologydcEnum : return "Hydrologydc";
+		case HydrologypismEnum : return "Hydrologypism";
+		case HydrologyshaktiEnum : return "Hydrologyshakti";
+		case HydrologyshreveEnum : return "Hydrologyshreve";
+		case IceMassEnum : return "IceMass";
+		case IceMassScaledEnum : return "IceMassScaled";
+		case IceVolumeAboveFloatationEnum : return "IceVolumeAboveFloatation";
+		case IceVolumeAboveFloatationScaledEnum : return "IceVolumeAboveFloatationScaled";
+		case IceVolumeEnum : return "IceVolume";
+		case IceVolumeScaledEnum : return "IceVolumeScaled";
+		case IcefrontMassFluxEnum : return "IcefrontMassFlux";
+		case IcefrontMassFluxLevelsetEnum : return "IcefrontMassFluxLevelset";
+		case IncrementalEnum : return "Incremental";
+		case IndexedEnum : return "Indexed";
+		case IntExternalResultEnum : return "IntExternalResult";
+		case ElementInputEnum : return "ElementInput";
+		case IntMatExternalResultEnum : return "IntMatExternalResult";
+		case IntMatParamEnum : return "IntMatParam";
+		case IntParamEnum : return "IntParam";
+		case IntVecParamEnum : return "IntVecParam";
+		case InputsEnum : return "Inputs";
+		case InternalEnum : return "Internal";
+		case IntersectEnum : return "Intersect";
+		case InversionVzObsEnum : return "InversionVzObs";
+		case JEnum : return "J";
+		case L1L2ApproximationEnum : return "L1L2Approximation";
+		case MOLHOApproximationEnum : return "MOLHOApproximation";
+		case L2ProjectionBaseAnalysisEnum : return "L2ProjectionBaseAnalysis";
+		case L2ProjectionEPLAnalysisEnum : return "L2ProjectionEPLAnalysis";
+		case LACrouzeixRaviartEnum : return "LACrouzeixRaviart";
+		case LATaylorHoodEnum : return "LATaylorHood";
+		case LambdaSEnum : return "LambdaS";
+		case LevelsetAnalysisEnum : return "LevelsetAnalysis";
+		case LevelsetfunctionPicardEnum : return "LevelsetfunctionPicard";
+		case LinearFloatingMeltRateEnum : return "LinearFloatingMeltRate";
+		case LinearFloatingMeltRatearmaEnum : return "LinearFloatingMeltRatearma";
+		case LliboutryDuvalEnum : return "LliboutryDuval";
+		case LoadsEnum : return "Loads";
+		case LoveAnalysisEnum : return "LoveAnalysis";
+		case LoveHfEnum : return "LoveHf";
+		case LoveHtEnum : return "LoveHt";
+		case LoveKernelsImagEnum : return "LoveKernelsImag";
+		case LoveKernelsRealEnum : return "LoveKernelsReal";
+		case LoveKfEnum : return "LoveKf";
+		case LoveKtEnum : return "LoveKt";
+		case LoveLfEnum : return "LoveLf";
+		case LoveLtEnum : return "LoveLt";
+		case LoveTidalHtEnum : return "LoveTidalHt";
+		case LoveTidalKtEnum : return "LoveTidalKt";
+		case LoveTidalLtEnum : return "LoveTidalLt";
+		case LovePMTF1tEnum : return "LovePMTF1t";
+		case LovePMTF2tEnum : return "LovePMTF2t";
+		case LoveYiEnum : return "LoveYi";
+		case LoveRhsEnum : return "LoveRhs";
+		case LoveSolutionEnum : return "LoveSolution";
+		case MINIEnum : return "MINI";
+		case MINIcondensedEnum : return "MINIcondensed";
+		case MantlePlumeGeothermalFluxEnum : return "MantlePlumeGeothermalFlux";
+		case MassFluxEnum : return "MassFlux";
+		case MassconEnum : return "Masscon";
+		case MassconaxpbyEnum : return "Massconaxpby";
+		case MassfluxatgateEnum : return "Massfluxatgate";
+		case MasstransportAnalysisEnum : return "MasstransportAnalysis";
+		case MasstransportSolutionEnum : return "MasstransportSolution";
+		case MatdamageiceEnum : return "Matdamageice";
+		case MatenhancediceEnum : return "Matenhancedice";
+		case MaterialsEnum : return "Materials";
+		case MatestarEnum : return "Matestar";
+		case MaticeEnum : return "Matice";
+		case MatlithoEnum : return "Matlitho";
+		case MathydroEnum : return "Mathydro";
+		case MatrixParamEnum : return "MatrixParam";
+		case MaxAbsVxEnum : return "MaxAbsVx";
+		case MaxAbsVyEnum : return "MaxAbsVy";
+		case MaxAbsVzEnum : return "MaxAbsVz";
+		case MaxDivergenceEnum : return "MaxDivergence";
+		case MaxVelEnum : return "MaxVel";
+		case MaxVxEnum : return "MaxVx";
+		case MaxVyEnum : return "MaxVy";
+		case MaxVzEnum : return "MaxVz";
+		case MelangeEnum : return "Melange";
+		case MeltingAnalysisEnum : return "MeltingAnalysis";
+		case MeshElementsEnum : return "MeshElements";
+		case MeshXEnum : return "MeshX";
+		case MeshYEnum : return "MeshY";
+		case MinVelEnum : return "MinVel";
+		case MinVxEnum : return "MinVx";
+		case MinVyEnum : return "MinVy";
+		case MinVzEnum : return "MinVz";
+		case MismipFloatingMeltRateEnum : return "MismipFloatingMeltRate";
+		case MoulinEnum : return "Moulin";
+		case MpiDenseEnum : return "MpiDense";
+		case MpiEnum : return "Mpi";
+		case MpiSparseEnum : return "MpiSparse";
+		case MumpsEnum : return "Mumps";
+		case NoFrictionOnPartiallyFloatingEnum : return "NoFrictionOnPartiallyFloating";
+		case NoMeltOnPartiallyFloatingEnum : return "NoMeltOnPartiallyFloating";
+		case NodalEnum : return "Nodal";
+		case NodalvalueEnum : return "Nodalvalue";
+		case NodeSIdEnum : return "NodeSId";
+		case NoneApproximationEnum : return "NoneApproximation";
+		case NoneEnum : return "None";
+		case NumberedcostfunctionEnum : return "Numberedcostfunction";
+		case NyeCO2Enum : return "NyeCO2";
+		case NyeH2OEnum : return "NyeH2O";
+		case NumericalfluxEnum : return "Numericalflux";
+		case OceantransportAnalysisEnum : return "OceantransportAnalysis";
+		case OceantransportSolutionEnum : return "OceantransportSolution";
+		case OldGradientEnum : return "OldGradient";
+		case OneLayerP4zEnum : return "OneLayerP4z";
+		case OpenEnum : return "Open";
+		case OptionEnum : return "Option";
+		case ParamEnum : return "Param";
+		case ParametersEnum : return "Parameters";
+		case P0ArrayEnum : return "P0Array";
+		case P0DGEnum : return "P0DG";
+		case P1DGEnum : return "P1DG";
+		case P1P1Enum : return "P1P1";
+		case P1P1GLSEnum : return "P1P1GLS";
+		case P1bubbleEnum : return "P1bubble";
+		case P1bubblecondensedEnum : return "P1bubblecondensed";
+		case P1xP2Enum : return "P1xP2";
+		case P1xP3Enum : return "P1xP3";
+		case P1xP4Enum : return "P1xP4";
+		case P2Enum : return "P2";
+		case P2bubbleEnum : return "P2bubble";
+		case P2bubblecondensedEnum : return "P2bubblecondensed";
+		case P2xP1Enum : return "P2xP1";
+		case P2xP4Enum : return "P2xP4";
+		case PatersonEnum : return "Paterson";
+		case PengridEnum : return "Pengrid";
+		case PenpairEnum : return "Penpair";
+		case PentaEnum : return "Penta";
+		case PentaInputEnum : return "PentaInput";
+		case ProfilerEnum : return "Profiler";
+		case ProfilingCurrentFlopsEnum : return "ProfilingCurrentFlops";
+		case ProfilingCurrentMemEnum : return "ProfilingCurrentMem";
+		case ProfilingSolutionTimeEnum : return "ProfilingSolutionTime";
+		case RegionaloutputEnum : return "Regionaloutput";
+		case RegularEnum : return "Regular";
+		case RecoveryAnalysisEnum : return "RecoveryAnalysis";
+		case RiftfrontEnum : return "Riftfront";
+		case SamplingAnalysisEnum : return "SamplingAnalysis";
+		case SamplingSolutionEnum : return "SamplingSolution";
+		case SIAApproximationEnum : return "SIAApproximation";
+		case SMBarmaEnum : return "SMBarma";
+		case SMBcomponentsEnum : return "SMBcomponents";
+		case SMBdebrisEvattEnum : return "SMBdebrisEvatt";
+		case SMBd18opddEnum : return "SMBd18opdd";
+		case SMBforcingEnum : return "SMBforcing";
+		case SMBgcmEnum : return "SMBgcm";
+		case SMBgembEnum : return "SMBgemb";
+		case SMBgradientsEnum : return "SMBgradients";
+		case SMBgradientscomponentsEnum : return "SMBgradientscomponents";
+		case SMBgradientselaEnum : return "SMBgradientsela";
+		case SMBhenningEnum : return "SMBhenning";
+		case SMBmeltcomponentsEnum : return "SMBmeltcomponents";
+		case SMBpddEnum : return "SMBpdd";
+		case SMBpddSicopolisEnum : return "SMBpddSicopolis";
+		case SMBsemicEnum : return "SMBsemic";
+		case SSAApproximationEnum : return "SSAApproximation";
+		case SSAFSApproximationEnum : return "SSAFSApproximation";
+		case SSAHOApproximationEnum : return "SSAHOApproximation";
+		case ScaledEnum : return "Scaled";
+		case SealevelAbsoluteEnum : return "SealevelAbsolute";
+		case SealevelEmotionEnum : return "SealevelEmotion";
+		case SealevelchangePolarMotionXEnum : return "SealevelchangePolarMotionX";
+		case SealevelchangePolarMotionYEnum : return "SealevelchangePolarMotionY";
+		case SealevelchangePolarMotionZEnum : return "SealevelchangePolarMotionZ";
+		case SealevelchangePolarMotionEnum : return "SealevelchangePolarMotion";
+		case SealevelNmotionEnum : return "SealevelNmotion";
+		case SealevelUmotionEnum : return "SealevelUmotion";
+		case SealevelchangeAnalysisEnum : return "SealevelchangeAnalysis";
+		case SegEnum : return "Seg";
+		case SegInputEnum : return "SegInput";
+		case SegmentEnum : return "Segment";
+		case SegmentRiftfrontEnum : return "SegmentRiftfront";
+		case SeparateEnum : return "Separate";
+		case SeqEnum : return "Seq";
+		case SmbAnalysisEnum : return "SmbAnalysis";
+		case SmbSolutionEnum : return "SmbSolution";
+		case SmoothAnalysisEnum : return "SmoothAnalysis";
+		case SoftMigrationEnum : return "SoftMigration";
+		case SpatialLinearFloatingMeltRateEnum : return "SpatialLinearFloatingMeltRate";
+		case SpcDynamicEnum : return "SpcDynamic";
+		case SpcStaticEnum : return "SpcStatic";
+		case SpcTransientEnum : return "SpcTransient";
+		case SsetEnum : return "Sset";
+		case StatisticsSolutionEnum : return "StatisticsSolution";
+		case SteadystateSolutionEnum : return "SteadystateSolution";
+		case StressIntensityFactorEnum : return "StressIntensityFactor";
+		case StressbalanceAnalysisEnum : return "StressbalanceAnalysis";
+		case StressbalanceConvergenceNumStepsEnum : return "StressbalanceConvergenceNumSteps";
+		case StressbalanceSIAAnalysisEnum : return "StressbalanceSIAAnalysis";
+		case StressbalanceSolutionEnum : return "StressbalanceSolution";
+		case StressbalanceVerticalAnalysisEnum : return "StressbalanceVerticalAnalysis";
+		case StringArrayParamEnum : return "StringArrayParam";
+		case StringExternalResultEnum : return "StringExternalResult";
+		case StringParamEnum : return "StringParam";
+		case SubelementFriction1Enum : return "SubelementFriction1";
+		case SubelementFriction2Enum : return "SubelementFriction2";
+		case SubelementMelt1Enum : return "SubelementMelt1";
+		case SubelementMelt2Enum : return "SubelementMelt2";
+		case SubelementMigrationEnum : return "SubelementMigration";
+		case SurfaceSlopeSolutionEnum : return "SurfaceSlopeSolution";
+		case TaylorHoodEnum : return "TaylorHood";
+		case TetraEnum : return "Tetra";
+		case TetraInputEnum : return "TetraInput";
+		case ThermalAnalysisEnum : return "ThermalAnalysis";
+		case ThermalSolutionEnum : return "ThermalSolution";
+		case ThicknessErrorEstimatorEnum : return "ThicknessErrorEstimator";
+		case TotalCalvingFluxLevelsetEnum : return "TotalCalvingFluxLevelset";
+		case TotalCalvingMeltingFluxLevelsetEnum : return "TotalCalvingMeltingFluxLevelset";
+		case TotalFloatingBmbEnum : return "TotalFloatingBmb";
+		case TotalFloatingBmbScaledEnum : return "TotalFloatingBmbScaled";
+		case TotalGroundedBmbEnum : return "TotalGroundedBmb";
+		case TotalGroundedBmbScaledEnum : return "TotalGroundedBmbScaled";
+		case TotalSmbEnum : return "TotalSmb";
+		case TotalSmbScaledEnum : return "TotalSmbScaled";
+		case TotalSmbRefreezeEnum : return "TotalSmbRefreeze";
+		case TotalSmbMeltEnum : return "TotalSmbMelt";
+		case TransientArrayParamEnum : return "TransientArrayParam";
+		case TransientInputEnum : return "TransientInput";
+		case TransientParamEnum : return "TransientParam";
+		case TransientSolutionEnum : return "TransientSolution";
+		case TriaEnum : return "Tria";
+		case TriaInputEnum : return "TriaInput";
+		case UzawaPressureAnalysisEnum : return "UzawaPressureAnalysis";
+		case VectorParamEnum : return "VectorParam";
+		case VertexEnum : return "Vertex";
+		case VertexLIdEnum : return "VertexLId";
+		case VertexPIdEnum : return "VertexPId";
+		case VertexSIdEnum : return "VertexSId";
+		case VerticesEnum : return "Vertices";
+		case ViscousHeatingEnum : return "ViscousHeating";
+		case WaterEnum : return "Water";
+		case XTaylorHoodEnum : return "XTaylorHood";
+		case XYEnum : return "XY";
+		case XYZEnum : return "XYZ";
+		case BalancethicknessD0Enum : return "BalancethicknessD0";
+		case BalancethicknessDiffusionCoefficientEnum : return "BalancethicknessDiffusionCoefficient";
+		case BilinearInterpEnum : return "BilinearInterp";
+		case CalvingdevCoeffEnum : return "CalvingdevCoeff";
+		case DeviatoricStressEnum : return "DeviatoricStress";
+		case EtaAbsGradientEnum : return "EtaAbsGradient";
+		case MeshZEnum : return "MeshZ";
+		case NearestInterpEnum : return "NearestInterp";
+		case OutputdefinitionListEnum : return "OutputdefinitionList";
+		case SealevelObsEnum : return "SealevelObs";
+		case SealevelWeightsEnum : return "SealevelWeights";
+		case StrainRateEnum : return "StrainRate";
+		case StressTensorEnum : return "StressTensor";
+		case StressbalanceViscosityOvershootEnum : return "StressbalanceViscosityOvershoot";
+		case SubelementMigration4Enum : return "SubelementMigration4";
+		case TimesteppingTimeAdaptEnum : return "TimesteppingTimeAdapt";
+		case TriangleInterpEnum : return "TriangleInterp";
+		case MaximumNumberOfDefinitionsEnum : return "MaximumNumberOfDefinitions";
+		default : return "unknown";
+
+	}
+}
+void EnumToStringx(char** pstring,int enum_in){
+	char *string = NULL;
+	int   len = 0;
+
+	len=strlen(EnumToStringx(enum_in));
+	string=xNew<char>(len+1);
+	memcpy(string,EnumToStringx(enum_in),(len+1)*sizeof(char));
+
+	/*Assign output pointer*/
+	*pstring=string;
+}
+
+bool IsInputEnum(int enum_in){
+	if(enum_in>InputsSTARTEnum && enum_in<InputsENDEnum) return true;
+	return false;
+}
+
+bool IsParamEnum(int enum_in){
+	if(enum_in>ParametersSTARTEnum && enum_in<ParametersENDEnum) return true;
+	return false;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/Enumjl.vim
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/Enumjl.vim	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/Enumjl.vim	(revision 27955)
@@ -0,0 +1,1788 @@
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+" ISSM specific julia syntax highlighting
+"
+"   WARNING: DO NOT MODIFY THIS FILE
+"            this file has been automatically generated by Synchronize.sh
+"            Please read README for more information
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+"ISSM Enums
+syn keyword juliaConstC ParametersSTARTEnum
+syn keyword juliaConstC AdolcParamEnum
+syn keyword juliaConstC AgeStabilizationEnum
+syn keyword juliaConstC AgeNumRequestedOutputsEnum
+syn keyword juliaConstC AgeRequestedOutputsEnum
+syn keyword juliaConstC AmrDeviatoricErrorGroupThresholdEnum
+syn keyword juliaConstC AmrDeviatoricErrorMaximumEnum
+syn keyword juliaConstC AmrDeviatoricErrorResolutionEnum
+syn keyword juliaConstC AmrDeviatoricErrorThresholdEnum
+syn keyword juliaConstC AmrErrEnum
+syn keyword juliaConstC AmrFieldEnum
+syn keyword juliaConstC AmrGradationEnum
+syn keyword juliaConstC AmrGroundingLineDistanceEnum
+syn keyword juliaConstC AmrGroundingLineResolutionEnum
+syn keyword juliaConstC AmrHmaxEnum
+syn keyword juliaConstC AmrHminEnum
+syn keyword juliaConstC AmrIceFrontDistanceEnum
+syn keyword juliaConstC AmrIceFrontResolutionEnum
+syn keyword juliaConstC AmrKeepMetricEnum
+syn keyword juliaConstC AmrLagEnum
+syn keyword juliaConstC AmrLevelMaxEnum
+syn keyword juliaConstC AmrRestartEnum
+syn keyword juliaConstC AmrThicknessErrorGroupThresholdEnum
+syn keyword juliaConstC AmrThicknessErrorMaximumEnum
+syn keyword juliaConstC AmrThicknessErrorResolutionEnum
+syn keyword juliaConstC AmrThicknessErrorThresholdEnum
+syn keyword juliaConstC AmrTypeEnum
+syn keyword juliaConstC AnalysisCounterEnum
+syn keyword juliaConstC AnalysisTypeEnum
+syn keyword juliaConstC AugmentedLagrangianREnum
+syn keyword juliaConstC AugmentedLagrangianRholambdaEnum
+syn keyword juliaConstC AugmentedLagrangianRhopEnum
+syn keyword juliaConstC AugmentedLagrangianRlambdaEnum
+syn keyword juliaConstC AugmentedLagrangianThetaEnum
+syn keyword juliaConstC AutodiffCbufsizeEnum
+syn keyword juliaConstC AutodiffDependentObjectsEnum
+syn keyword juliaConstC AutodiffDriverEnum
+syn keyword juliaConstC AutodiffFosForwardIndexEnum
+syn keyword juliaConstC AutodiffFosReverseIndexEnum
+syn keyword juliaConstC AutodiffFovForwardIndicesEnum
+syn keyword juliaConstC AutodiffGcTriggerMaxSizeEnum
+syn keyword juliaConstC AutodiffGcTriggerRatioEnum
+syn keyword juliaConstC AutodiffIsautodiffEnum
+syn keyword juliaConstC AutodiffLbufsizeEnum
+syn keyword juliaConstC AutodiffNumDependentsEnum
+syn keyword juliaConstC AutodiffNumIndependentsEnum
+syn keyword juliaConstC AutodiffObufsizeEnum
+syn keyword juliaConstC AutodiffTapeAllocEnum
+syn keyword juliaConstC AutodiffTbufsizeEnum
+syn keyword juliaConstC AutodiffXpEnum
+syn keyword juliaConstC BalancethicknessStabilizationEnum
+syn keyword juliaConstC BarystaticContributionsEnum
+syn keyword juliaConstC BasalforcingsARMATimestepEnum
+syn keyword juliaConstC BasalforcingsARMAarOrderEnum
+syn keyword juliaConstC BasalforcingsARMAmaOrderEnum
+syn keyword juliaConstC BasalforcingsBottomplumedepthEnum
+syn keyword juliaConstC BasalforcingsCrustthicknessEnum
+syn keyword juliaConstC BasalforcingsDeepwaterElevationEnum
+syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateEnum
+syn keyword juliaConstC BasalforcingsDtbgEnum
+syn keyword juliaConstC BasalforcingsEnum
+syn keyword juliaConstC BasalforcingsIsmip6AverageTfEnum
+syn keyword juliaConstC BasalforcingsIsmip6BasinAreaEnum
+syn keyword juliaConstC BasalforcingsIsmip6DeltaTEnum
+syn keyword juliaConstC BasalforcingsIsmip6Gamma0Enum
+syn keyword juliaConstC BasalforcingsIsmip6IsLocalEnum
+syn keyword juliaConstC BasalforcingsIsmip6NumBasinsEnum
+syn keyword juliaConstC BasalforcingsIsmip6TfDepthsEnum
+syn keyword juliaConstC BasalforcingsLinearNumBasinsEnum
+syn keyword juliaConstC BasalforcingsLinearNumBreaksEnum
+syn keyword juliaConstC BasalforcingsLinearNumParamsEnum
+syn keyword juliaConstC BasalforcingsMantleconductivityEnum
+syn keyword juliaConstC BasalforcingsNusseltEnum
+syn keyword juliaConstC BasalforcingsARMAarlagcoefsEnum
+syn keyword juliaConstC BasalforcingsARMAdatebreaksEnum
+syn keyword juliaConstC BasalforcingsARMAmalagcoefsEnum
+syn keyword juliaConstC BasalforcingsARMApolyparamsEnum
+syn keyword juliaConstC BasalforcingsIsThermalForcingEnum
+syn keyword juliaConstC BasalforcingsLowercrustheatEnum
+syn keyword juliaConstC BasalforcingsPicoAverageOverturningEnum
+syn keyword juliaConstC BasalforcingsPicoAverageSalinityEnum
+syn keyword juliaConstC BasalforcingsPicoAverageTemperatureEnum
+syn keyword juliaConstC BasalforcingsPicoBoxAreaEnum
+syn keyword juliaConstC BasalforcingsPicoFarOceansalinityEnum
+syn keyword juliaConstC BasalforcingsPicoFarOceantemperatureEnum
+syn keyword juliaConstC BasalforcingsPicoGammaTEnum
+syn keyword juliaConstC BasalforcingsPicoIsplumeEnum
+syn keyword juliaConstC BasalforcingsPicoMaxboxcountEnum
+syn keyword juliaConstC BasalforcingsPicoNumBasinsEnum
+syn keyword juliaConstC BasalforcingsPlumeradiusEnum
+syn keyword juliaConstC BasalforcingsPlumexEnum
+syn keyword juliaConstC BasalforcingsPlumeyEnum
+syn keyword juliaConstC BasalforcingsThresholdThicknessEnum
+syn keyword juliaConstC BasalforcingsTopplumedepthEnum
+syn keyword juliaConstC BasalforcingsUppercrustheatEnum
+syn keyword juliaConstC BasalforcingsUppercrustthicknessEnum
+syn keyword juliaConstC BasalforcingsUpperdepthMeltEnum
+syn keyword juliaConstC BasalforcingsUpperwaterElevationEnum
+syn keyword juliaConstC BasalforcingsUpperwaterMeltingRateEnum
+syn keyword juliaConstC CalvingADStressThresholdFloatingiceEnum
+syn keyword juliaConstC CalvingADStressThresholdGroundediceEnum
+syn keyword juliaConstC CalvingCrevasseDepthEnum
+syn keyword juliaConstC CalvingCrevasseThresholdEnum
+syn keyword juliaConstC CalvingHeightAboveFloatationEnum
+syn keyword juliaConstC CalvingLawEnum
+syn keyword juliaConstC CalvingMinthicknessEnum
+syn keyword juliaConstC CalvingTestSpeedfactorEnum
+syn keyword juliaConstC CalvingTestIndependentRateEnum
+syn keyword juliaConstC CalvingUseParamEnum
+syn keyword juliaConstC CalvingThetaEnum
+syn keyword juliaConstC CalvingAlphaEnum
+syn keyword juliaConstC CalvingXoffsetEnum
+syn keyword juliaConstC CalvingYoffsetEnum
+syn keyword juliaConstC CalvingVelLowerboundEnum
+syn keyword juliaConstC CalvingVelMaxEnum
+syn keyword juliaConstC CalvingVelThresholdEnum
+syn keyword juliaConstC CalvingVelUpperboundEnum
+syn keyword juliaConstC CalvingRcEnum
+syn keyword juliaConstC CalvingNumberofBasinsEnum
+syn keyword juliaConstC ConfigurationTypeEnum
+syn keyword juliaConstC ConstantsGEnum
+syn keyword juliaConstC ConstantsNewtonGravityEnum
+syn keyword juliaConstC ConstantsReferencetemperatureEnum
+syn keyword juliaConstC ConstantsYtsEnum
+syn keyword juliaConstC ControlInputSizeMEnum
+syn keyword juliaConstC ControlInputSizeNEnum
+syn keyword juliaConstC ControlInputInterpolationEnum
+syn keyword juliaConstC CumBslcEnum
+syn keyword juliaConstC CumBslcIceEnum
+syn keyword juliaConstC CumBslcHydroEnum
+syn keyword juliaConstC CumBslcOceanEnum
+syn keyword juliaConstC CumBslcIcePartitionEnum
+syn keyword juliaConstC CumBslcHydroPartitionEnum
+syn keyword juliaConstC CumBslcOceanPartitionEnum
+syn keyword juliaConstC CumGmtslcEnum
+syn keyword juliaConstC CumGmslcEnum
+syn keyword juliaConstC DamageC1Enum
+syn keyword juliaConstC DamageC2Enum
+syn keyword juliaConstC DamageC3Enum
+syn keyword juliaConstC DamageC4Enum
+syn keyword juliaConstC DamageEnum
+syn keyword juliaConstC DamageEquivStressEnum
+syn keyword juliaConstC DamageEvolutionNumRequestedOutputsEnum
+syn keyword juliaConstC DamageEvolutionRequestedOutputsEnum
+syn keyword juliaConstC DamageHealingEnum
+syn keyword juliaConstC DamageKappaEnum
+syn keyword juliaConstC DamageLawEnum
+syn keyword juliaConstC DamageMaxDamageEnum
+syn keyword juliaConstC DamageStabilizationEnum
+syn keyword juliaConstC DamageStressThresholdEnum
+syn keyword juliaConstC DamageStressUBoundEnum
+syn keyword juliaConstC DebrisMinThicknessEnum
+syn keyword juliaConstC DebrisNumRequestedOutputsEnum
+syn keyword juliaConstC DebrisPenaltyFactorEnum
+syn keyword juliaConstC DebrisRequestedOutputsEnum
+syn keyword juliaConstC DebrisStabilizationEnum
+syn keyword juliaConstC DebrisRemovalmodelEnum
+syn keyword juliaConstC DebrisDisplacementmodelEnum
+syn keyword juliaConstC DebrisRemovalSlopeThresholdEnum
+syn keyword juliaConstC DebrisRemovalStressThresholdEnum
+syn keyword juliaConstC DebrisPackingFractionEnum
+syn keyword juliaConstC DebugProfilingEnum
+syn keyword juliaConstC DomainDimensionEnum
+syn keyword juliaConstC DomainTypeEnum
+syn keyword juliaConstC DslModelEnum
+syn keyword juliaConstC DslModelidEnum
+syn keyword juliaConstC DslNummodelsEnum
+syn keyword juliaConstC SolidearthIsExternalEnum
+syn keyword juliaConstC SolidearthExternalNatureEnum
+syn keyword juliaConstC SolidearthExternalModelidEnum
+syn keyword juliaConstC SolidearthExternalNummodelsEnum
+syn keyword juliaConstC SolidearthSettingsComputeBpGrdEnum
+syn keyword juliaConstC EarthIdEnum
+syn keyword juliaConstC ElasticEnum
+syn keyword juliaConstC EplZigZagCounterEnum
+syn keyword juliaConstC EsaHElasticEnum
+syn keyword juliaConstC EsaHemisphereEnum
+syn keyword juliaConstC EsaRequestedOutputsEnum
+syn keyword juliaConstC EsaUElasticEnum
+syn keyword juliaConstC ExtrapolationVariableEnum
+syn keyword juliaConstC FemModelCommEnum
+syn keyword juliaConstC FieldsEnum
+syn keyword juliaConstC FlowequationFeFSEnum
+syn keyword juliaConstC FlowequationIsFSEnum
+syn keyword juliaConstC FlowequationIsHOEnum
+syn keyword juliaConstC FlowequationIsL1L2Enum
+syn keyword juliaConstC FlowequationIsMOLHOEnum
+syn keyword juliaConstC FlowequationIsSIAEnum
+syn keyword juliaConstC FlowequationIsSSAEnum
+syn keyword juliaConstC FlowequationIsNitscheEnum
+syn keyword juliaConstC FeFSNitscheGammaEnum
+syn keyword juliaConstC FrictionCouplingEnum
+syn keyword juliaConstC FrictionDeltaEnum
+syn keyword juliaConstC FrictionEffectivePressureLimitEnum
+syn keyword juliaConstC FrictionFEnum
+syn keyword juliaConstC FrictionGammaEnum
+syn keyword juliaConstC FrictionLawEnum
+syn keyword juliaConstC FrictionLinearizeEnum
+syn keyword juliaConstC FrictionPseudoplasticityExponentEnum
+syn keyword juliaConstC FrictionU0Enum
+syn keyword juliaConstC FrictionThresholdSpeedEnum
+syn keyword juliaConstC FrictionVoidRatioEnum
+syn keyword juliaConstC FrontalForcingsBasinIcefrontAreaEnum
+syn keyword juliaConstC FrontalForcingsARMATimestepEnum
+syn keyword juliaConstC FrontalForcingsARMAarOrderEnum
+syn keyword juliaConstC FrontalForcingsARMAmaOrderEnum
+syn keyword juliaConstC FrontalForcingsARMAdatebreaksEnum
+syn keyword juliaConstC FrontalForcingsARMAmonthdatebreaksEnum
+syn keyword juliaConstC FrontalForcingsARMAmonthinterceptsEnum
+syn keyword juliaConstC FrontalForcingsARMAmonthtrendsEnum
+syn keyword juliaConstC FrontalForcingsARMApolyparamsEnum
+syn keyword juliaConstC FrontalForcingsIsDischargeARMAEnum
+syn keyword juliaConstC FrontalForcingsNumberofBasinsEnum
+syn keyword juliaConstC FrontalForcingsNumberofBreaksEnum
+syn keyword juliaConstC FrontalForcingsNumberofMonthBreaksEnum
+syn keyword juliaConstC FrontalForcingsNumberofParamsEnum
+syn keyword juliaConstC FrontalForcingsParamEnum
+syn keyword juliaConstC FrontalForcingsARMAarlagcoefsEnum
+syn keyword juliaConstC FrontalForcingsARMAmalagcoefsEnum
+syn keyword juliaConstC FrontalForcingsSdarlagcoefsEnum
+syn keyword juliaConstC FrontalForcingsSdARMATimestepEnum
+syn keyword juliaConstC FrontalForcingsSdarOrderEnum
+syn keyword juliaConstC FrontalForcingsSddatebreaksEnum
+syn keyword juliaConstC FrontalForcingsSdmalagcoefsEnum
+syn keyword juliaConstC FrontalForcingsSdmaOrderEnum
+syn keyword juliaConstC FrontalForcingsSdMonthlyFracEnum
+syn keyword juliaConstC FrontalForcingsSdNumberofBreaksEnum
+syn keyword juliaConstC FrontalForcingsSdNumberofParamsEnum
+syn keyword juliaConstC FrontalForcingsSdpolyparamsEnum
+syn keyword juliaConstC GrdModelEnum
+syn keyword juliaConstC GroundinglineFrictionInterpolationEnum
+syn keyword juliaConstC GroundinglineMeltInterpolationEnum
+syn keyword juliaConstC GroundinglineMigrationEnum
+syn keyword juliaConstC GroundinglineNumRequestedOutputsEnum
+syn keyword juliaConstC GroundinglineRequestedOutputsEnum
+syn keyword juliaConstC HydrologyarmaarOrderEnum
+syn keyword juliaConstC HydrologyarmaarlagcoefsEnum
+syn keyword juliaConstC HydrologyarmadatebreaksEnum
+syn keyword juliaConstC HydrologyarmamalagcoefsEnum
+syn keyword juliaConstC HydrologyarmamaOrderEnum
+syn keyword juliaConstC HydrologyarmaMonthlyFactorsEnum
+syn keyword juliaConstC HydrologyarmaNumBreaksEnum
+syn keyword juliaConstC HydrologyarmaNumParamsEnum
+syn keyword juliaConstC HydrologyarmapolyparamsEnum
+syn keyword juliaConstC HydrologyarmaTimestepEnum
+syn keyword juliaConstC HydrologyAveragingEnum
+syn keyword juliaConstC HydrologyChannelAlphaEnum
+syn keyword juliaConstC HydrologyChannelBetaEnum
+syn keyword juliaConstC HydrologyCavitySpacingEnum
+syn keyword juliaConstC HydrologyChannelSheetWidthEnum
+syn keyword juliaConstC HydrologyEnglacialVoidRatioEnum
+syn keyword juliaConstC HydrologyIschannelsEnum
+syn keyword juliaConstC HydrologyIsTransitionEnum
+syn keyword juliaConstC HydrologyIsWaterPressureArmaEnum
+syn keyword juliaConstC HydrologyMeltFlagEnum
+syn keyword juliaConstC HydrologyModelEnum
+syn keyword juliaConstC HydrologyNumBasinsEnum
+syn keyword juliaConstC HydrologyNumRequestedOutputsEnum
+syn keyword juliaConstC HydrologyOmegaEnum
+syn keyword juliaConstC HydrologyPressureMeltCoefficientEnum
+syn keyword juliaConstC HydrologyRelaxationEnum
+syn keyword juliaConstC HydrologyRequestedOutputsEnum
+syn keyword juliaConstC HydrologySedimentKmaxEnum
+syn keyword juliaConstC HydrologySheetAlphaEnum
+syn keyword juliaConstC HydrologySheetBetaEnum
+syn keyword juliaConstC HydrologyStepsPerStepEnum
+syn keyword juliaConstC HydrologyStorageEnum
+syn keyword juliaConstC HydrologydcEplColapseThicknessEnum
+syn keyword juliaConstC HydrologydcEplConductivityEnum
+syn keyword juliaConstC HydrologydcEplInitialThicknessEnum
+syn keyword juliaConstC HydrologydcEplLayerCompressibilityEnum
+syn keyword juliaConstC HydrologydcEplMaxThicknessEnum
+syn keyword juliaConstC HydrologydcEplPoreWaterMassEnum
+syn keyword juliaConstC HydrologydcEplThickCompEnum
+syn keyword juliaConstC HydrologydcEplflipLockEnum
+syn keyword juliaConstC HydrologydcIsefficientlayerEnum
+syn keyword juliaConstC HydrologydcLeakageFactorEnum
+syn keyword juliaConstC HydrologydcMaxIterEnum
+syn keyword juliaConstC HydrologydcPenaltyFactorEnum
+syn keyword juliaConstC HydrologydcPenaltyLockEnum
+syn keyword juliaConstC HydrologydcRelTolEnum
+syn keyword juliaConstC HydrologydcSedimentlimitEnum
+syn keyword juliaConstC HydrologydcSedimentlimitFlagEnum
+syn keyword juliaConstC HydrologydcSedimentLayerCompressibilityEnum
+syn keyword juliaConstC HydrologydcSedimentPoreWaterMassEnum
+syn keyword juliaConstC HydrologydcSedimentPorosityEnum
+syn keyword juliaConstC HydrologydcSedimentThicknessEnum
+syn keyword juliaConstC HydrologyStepAdaptEnum
+syn keyword juliaConstC HydrologydcTransferFlagEnum
+syn keyword juliaConstC HydrologydcUnconfinedFlagEnum
+syn keyword juliaConstC HydrologyshreveStabilizationEnum
+syn keyword juliaConstC IcecapToEarthCommEnum
+syn keyword juliaConstC IndexEnum
+syn keyword juliaConstC InputFileNameEnum
+syn keyword juliaConstC DirectoryNameEnum
+syn keyword juliaConstC IndicesEnum
+syn keyword juliaConstC InputToDepthaverageInEnum
+syn keyword juliaConstC InputToDepthaverageOutEnum
+syn keyword juliaConstC InputToExtrudeEnum
+syn keyword juliaConstC InputToL2ProjectEnum
+syn keyword juliaConstC InputToSmoothEnum
+syn keyword juliaConstC InversionAlgorithmEnum
+syn keyword juliaConstC InversionControlParametersEnum
+syn keyword juliaConstC InversionControlScalingFactorsEnum
+syn keyword juliaConstC InversionCostFunctionsEnum
+syn keyword juliaConstC InversionDxminEnum
+syn keyword juliaConstC InversionDfminFracEnum
+syn keyword juliaConstC InversionGatolEnum
+syn keyword juliaConstC InversionGradientScalingEnum
+syn keyword juliaConstC InversionGrtolEnum
+syn keyword juliaConstC InversionGttolEnum
+syn keyword juliaConstC InversionIncompleteAdjointEnum
+syn keyword juliaConstC InversionIscontrolEnum
+syn keyword juliaConstC InversionMaxiterEnum
+syn keyword juliaConstC InversionMaxiterPerStepEnum
+syn keyword juliaConstC InversionMaxstepsEnum
+syn keyword juliaConstC InversionNstepsEnum
+syn keyword juliaConstC InversionNumControlParametersEnum
+syn keyword juliaConstC InversionNumCostFunctionsEnum
+syn keyword juliaConstC InversionStepThresholdEnum
+syn keyword juliaConstC InversionStopFlagEnum
+syn keyword juliaConstC InversionTypeEnum
+syn keyword juliaConstC IvinsEnum
+syn keyword juliaConstC IsSlcCouplingEnum
+syn keyword juliaConstC LevelsetKillIcebergsEnum
+syn keyword juliaConstC LevelsetReinitFrequencyEnum
+syn keyword juliaConstC LevelsetStabilizationEnum
+syn keyword juliaConstC LockFileNameEnum
+syn keyword juliaConstC LoveAllowLayerDeletionEnum
+syn keyword juliaConstC LoveChandlerWobbleEnum
+syn keyword juliaConstC LoveCoreMantleBoundaryEnum
+syn keyword juliaConstC LoveEarthMassEnum
+syn keyword juliaConstC LoveForcingTypeEnum
+syn keyword juliaConstC LoveFrequenciesEnum
+syn keyword juliaConstC LoveIsTemporalEnum
+syn keyword juliaConstC LoveG0Enum
+syn keyword juliaConstC LoveGravitationalConstantEnum
+syn keyword juliaConstC LoveInnerCoreBoundaryEnum
+syn keyword juliaConstC LoveComplexComputationEnum
+syn keyword juliaConstC LoveQuadPrecisionEnum
+syn keyword juliaConstC LoveIntStepsPerLayerEnum
+syn keyword juliaConstC LoveMinIntegrationStepsEnum
+syn keyword juliaConstC LoveMaxIntegrationdrEnum
+syn keyword juliaConstC LoveIntegrationSchemeEnum
+syn keyword juliaConstC LoveKernelsEnum
+syn keyword juliaConstC LoveMu0Enum
+syn keyword juliaConstC LoveNfreqEnum
+syn keyword juliaConstC LoveNTemporalIterationsEnum
+syn keyword juliaConstC LoveNYiEquationsEnum
+syn keyword juliaConstC LoveR0Enum
+syn keyword juliaConstC LoveShNmaxEnum
+syn keyword juliaConstC LoveShNminEnum
+syn keyword juliaConstC LoveStartingLayerEnum
+syn keyword juliaConstC LoveUnderflowTolEnum
+syn keyword juliaConstC LovePostWidderThresholdEnum
+syn keyword juliaConstC LoveDebugEnum
+syn keyword juliaConstC LoveHypergeomNZEnum
+syn keyword juliaConstC LoveHypergeomNAlphaEnum
+syn keyword juliaConstC MassFluxSegmentsEnum
+syn keyword juliaConstC MassFluxSegmentsPresentEnum
+syn keyword juliaConstC MasstransportHydrostaticAdjustmentEnum
+syn keyword juliaConstC MasstransportIsfreesurfaceEnum
+syn keyword juliaConstC MasstransportMinThicknessEnum
+syn keyword juliaConstC MasstransportNumRequestedOutputsEnum
+syn keyword juliaConstC MasstransportPenaltyFactorEnum
+syn keyword juliaConstC MasstransportRequestedOutputsEnum
+syn keyword juliaConstC MasstransportStabilizationEnum
+syn keyword juliaConstC MaterialsBetaEnum
+syn keyword juliaConstC MaterialsEarthDensityEnum
+syn keyword juliaConstC MaterialsEffectiveconductivityAveragingEnum
+syn keyword juliaConstC MaterialsHeatcapacityEnum
+syn keyword juliaConstC MaterialsLatentheatEnum
+syn keyword juliaConstC MaterialsMeltingpointEnum
+syn keyword juliaConstC MaterialsMixedLayerCapacityEnum
+syn keyword juliaConstC MaterialsMuWaterEnum
+syn keyword juliaConstC MaterialsRheologyLawEnum
+syn keyword juliaConstC MaterialsRhoFreshwaterEnum
+syn keyword juliaConstC MaterialsRhoIceEnum
+syn keyword juliaConstC MaterialsRhoSeawaterEnum
+syn keyword juliaConstC MaterialsTemperateiceconductivityEnum
+syn keyword juliaConstC MaterialsThermalExchangeVelocityEnum
+syn keyword juliaConstC MaterialsThermalconductivityEnum
+syn keyword juliaConstC MeltingOffsetEnum
+syn keyword juliaConstC MeshAverageVertexConnectivityEnum
+syn keyword juliaConstC MeshElementtypeEnum
+syn keyword juliaConstC MeshNumberoflayersEnum
+syn keyword juliaConstC MeshNumberofverticesEnum
+syn keyword juliaConstC MeshNumberofelementsEnum
+syn keyword juliaConstC MigrationMaxEnum
+syn keyword juliaConstC ModelIdEnum
+syn keyword juliaConstC NbinsEnum
+syn keyword juliaConstC NodesEnum
+syn keyword juliaConstC NumModelsEnum
+syn keyword juliaConstC OceanGridNxEnum
+syn keyword juliaConstC OceanGridNyEnum
+syn keyword juliaConstC OceanGridXEnum
+syn keyword juliaConstC OceanGridYEnum
+syn keyword juliaConstC OutputBufferPointerEnum
+syn keyword juliaConstC OutputBufferSizePointerEnum
+syn keyword juliaConstC OutputFileNameEnum
+syn keyword juliaConstC OutputFilePointerEnum
+syn keyword juliaConstC OutputdefinitionEnum
+syn keyword juliaConstC QmuErrNameEnum
+syn keyword juliaConstC QmuInNameEnum
+syn keyword juliaConstC QmuIsdakotaEnum
+syn keyword juliaConstC QmuOutNameEnum
+syn keyword juliaConstC QmuOutputEnum
+syn keyword juliaConstC QmuCurrEvalIdEnum
+syn keyword juliaConstC QmuNsampleEnum
+syn keyword juliaConstC QmuResponsedescriptorsEnum
+syn keyword juliaConstC QmuVariableDescriptorsEnum
+syn keyword juliaConstC QmuVariablePartitionsEnum
+syn keyword juliaConstC QmuVariablePartitionsNpartEnum
+syn keyword juliaConstC QmuVariablePartitionsNtEnum
+syn keyword juliaConstC QmuResponsePartitionsEnum
+syn keyword juliaConstC QmuResponsePartitionsNpartEnum
+syn keyword juliaConstC QmuStatisticsEnum
+syn keyword juliaConstC QmuNumstatisticsEnum
+syn keyword juliaConstC QmuNdirectoriesEnum
+syn keyword juliaConstC QmuNfilesPerDirectoryEnum
+syn keyword juliaConstC QmuStatisticsMethodEnum
+syn keyword juliaConstC QmuMethodsEnum
+syn keyword juliaConstC RestartFileNameEnum
+syn keyword juliaConstC ResultsEnum
+syn keyword juliaConstC RootPathEnum
+syn keyword juliaConstC ModelnameEnum
+syn keyword juliaConstC SamplingAlphaEnum
+syn keyword juliaConstC SamplingNumRequestedOutputsEnum
+syn keyword juliaConstC SamplingRequestedOutputsEnum
+syn keyword juliaConstC SamplingRobinEnum
+syn keyword juliaConstC SamplingSeedEnum
+syn keyword juliaConstC SaveResultsEnum
+syn keyword juliaConstC SolidearthPartitionIceEnum
+syn keyword juliaConstC SolidearthPartitionHydroEnum
+syn keyword juliaConstC SolidearthPartitionOceanEnum
+syn keyword juliaConstC SolidearthNpartIceEnum
+syn keyword juliaConstC SolidearthNpartOceanEnum
+syn keyword juliaConstC SolidearthNpartHydroEnum
+syn keyword juliaConstC SolidearthPlanetRadiusEnum
+syn keyword juliaConstC SolidearthPlanetAreaEnum
+syn keyword juliaConstC SolidearthSettingsAbstolEnum
+syn keyword juliaConstC SolidearthSettingsCrossSectionShapeEnum
+syn keyword juliaConstC SolidearthSettingsElasticEnum
+syn keyword juliaConstC SolidearthSettingsViscousEnum
+syn keyword juliaConstC SolidearthSettingsSatelliteGraviEnum
+syn keyword juliaConstC SolidearthSettingsDegreeAccuracyEnum
+syn keyword juliaConstC SealevelchangeGeometryDoneEnum
+syn keyword juliaConstC SealevelchangeViscousNumStepsEnum
+syn keyword juliaConstC SealevelchangeViscousTimesEnum
+syn keyword juliaConstC SealevelchangeViscousIndexEnum
+syn keyword juliaConstC SealevelchangeViscousPolarMotionEnum
+syn keyword juliaConstC SealevelchangeRunCountEnum
+syn keyword juliaConstC SealevelchangeTransitionsEnum
+syn keyword juliaConstC SealevelchangeRequestedOutputsEnum
+syn keyword juliaConstC RotationalAngularVelocityEnum
+syn keyword juliaConstC RotationalEquatorialMoiEnum
+syn keyword juliaConstC RotationalPolarMoiEnum
+syn keyword juliaConstC LovePolarMotionTransferFunctionColinearEnum
+syn keyword juliaConstC LovePolarMotionTransferFunctionOrthogonalEnum
+syn keyword juliaConstC TidalLoveHEnum
+syn keyword juliaConstC TidalLoveKEnum
+syn keyword juliaConstC TidalLoveLEnum
+syn keyword juliaConstC TidalLoveK2SecularEnum
+syn keyword juliaConstC LoadLoveHEnum
+syn keyword juliaConstC LoadLoveKEnum
+syn keyword juliaConstC LoadLoveLEnum
+syn keyword juliaConstC LoveTimeFreqEnum
+syn keyword juliaConstC LoveIsTimeEnum
+syn keyword juliaConstC LoveHypergeomZEnum
+syn keyword juliaConstC LoveHypergeomTable1Enum
+syn keyword juliaConstC LoveHypergeomTable2Enum
+syn keyword juliaConstC SealevelchangeGSelfAttractionEnum
+syn keyword juliaConstC SealevelchangeGViscoElasticEnum
+syn keyword juliaConstC SealevelchangeUViscoElasticEnum
+syn keyword juliaConstC SealevelchangeHViscoElasticEnum
+syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionColinearEnum
+syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionOrthogonalEnum
+syn keyword juliaConstC SealevelchangePolarMotionTransferFunctionZEnum
+syn keyword juliaConstC SealevelchangeTidalK2Enum
+syn keyword juliaConstC SealevelchangeTidalH2Enum
+syn keyword juliaConstC SealevelchangeTidalL2Enum
+syn keyword juliaConstC SolidearthSettingsSealevelLoadingEnum
+syn keyword juliaConstC SolidearthSettingsGRDEnum
+syn keyword juliaConstC SolidearthSettingsRunFrequencyEnum
+syn keyword juliaConstC SolidearthSettingsTimeAccEnum
+syn keyword juliaConstC SolidearthSettingsHorizEnum
+syn keyword juliaConstC SolidearthSettingsMaxiterEnum
+syn keyword juliaConstC SolidearthSettingsGrdOceanEnum
+syn keyword juliaConstC SolidearthSettingsOceanAreaScalingEnum
+syn keyword juliaConstC StochasticForcingCovarianceEnum
+syn keyword juliaConstC StochasticForcingDefaultDimensionEnum
+syn keyword juliaConstC StochasticForcingDimensionsEnum
+syn keyword juliaConstC StochasticForcingFieldsEnum
+syn keyword juliaConstC StochasticForcingIsEffectivePressureEnum
+syn keyword juliaConstC StochasticForcingIsStochasticForcingEnum
+syn keyword juliaConstC StochasticForcingIsWaterPressureEnum
+syn keyword juliaConstC StochasticForcingNoisetermsEnum
+syn keyword juliaConstC StochasticForcingNumFieldsEnum
+syn keyword juliaConstC StochasticForcingNumTimesCovarianceEnum
+syn keyword juliaConstC StochasticForcingRandomflagEnum
+syn keyword juliaConstC StochasticForcingTimeCovarianceEnum
+syn keyword juliaConstC StochasticForcingTimestepEnum
+syn keyword juliaConstC SolidearthSettingsReltolEnum
+syn keyword juliaConstC SolidearthSettingsSelfAttractionEnum
+syn keyword juliaConstC SolidearthSettingsRotationEnum
+syn keyword juliaConstC SolidearthSettingsMaxSHCoeffEnum
+syn keyword juliaConstC SettingsIoGatherEnum
+syn keyword juliaConstC SettingsNumResultsOnNodesEnum
+syn keyword juliaConstC SettingsOutputFrequencyEnum
+syn keyword juliaConstC SettingsCheckpointFrequencyEnum
+syn keyword juliaConstC SettingsResultsOnNodesEnum
+syn keyword juliaConstC SettingsSbCouplingFrequencyEnum
+syn keyword juliaConstC SettingsSolverResidueThresholdEnum
+syn keyword juliaConstC SettingsWaitonlockEnum
+syn keyword juliaConstC SmbAIceEnum
+syn keyword juliaConstC SmbAIdxEnum
+syn keyword juliaConstC SmbASnowEnum
+syn keyword juliaConstC SmbAccualtiEnum
+syn keyword juliaConstC SmbAccugradEnum
+syn keyword juliaConstC SmbAccurefEnum
+syn keyword juliaConstC SmbAdThreshEnum
+syn keyword juliaConstC SmbAlbedoSchemeEnum
+syn keyword juliaConstC SmbAlbedoSnowMaxEnum
+syn keyword juliaConstC SmbAlbedoSnowMinEnum
+syn keyword juliaConstC SmbAlbedoIceEnum
+syn keyword juliaConstC SmbAlbedoLandEnum
+syn keyword juliaConstC SmbARMATimestepEnum
+syn keyword juliaConstC SmbARMAarOrderEnum
+syn keyword juliaConstC SmbARMAarlagcoefsEnum
+syn keyword juliaConstC SmbARMAdatebreaksEnum
+syn keyword juliaConstC SmbARMAmaOrderEnum
+syn keyword juliaConstC SmbARMAmalagcoefsEnum
+syn keyword juliaConstC SmbARMApolyparamsEnum
+syn keyword juliaConstC SmbAveragingEnum
+syn keyword juliaConstC SmbDebrisalbedoEnum
+syn keyword juliaConstC SmbIcealbedoEnum
+syn keyword juliaConstC SmbSnowalbedoEnum
+syn keyword juliaConstC SmbDebrisIsAndersonEnum
+syn keyword juliaConstC SmbDebrisIsCryokarstEnum
+syn keyword juliaConstC SmbDebrisAndersonD0Enum
+syn keyword juliaConstC SmbDesfacEnum
+syn keyword juliaConstC SmbDesfacElevEnum
+syn keyword juliaConstC SmbDpermilEnum
+syn keyword juliaConstC SmbDsnowIdxEnum
+syn keyword juliaConstC SmbElevationBinsEnum
+syn keyword juliaConstC SmbCldFracEnum
+syn keyword juliaConstC SmbDelta18oEnum
+syn keyword juliaConstC SmbDelta18oSurfaceEnum
+syn keyword juliaConstC SmbDenIdxEnum
+syn keyword juliaConstC SmbDtEnum
+syn keyword juliaConstC SmbEnum
+syn keyword juliaConstC SmbEIdxEnum
+syn keyword juliaConstC SmbFEnum
+syn keyword juliaConstC SmbHumiditygradEnum
+syn keyword juliaConstC SmbInitDensityScalingEnum
+syn keyword juliaConstC SmbIsaccumulationEnum
+syn keyword juliaConstC SmbIsalbedoEnum
+syn keyword juliaConstC SmbIsconstrainsurfaceTEnum
+syn keyword juliaConstC SmbIsd18opdEnum
+syn keyword juliaConstC SmbIsdelta18oEnum
+syn keyword juliaConstC SmbIsdensificationEnum
+syn keyword juliaConstC SmbIsdeltaLWupEnum
+syn keyword juliaConstC SmbIsfirnwarmingEnum
+syn keyword juliaConstC SmbIsgraingrowthEnum
+syn keyword juliaConstC SmbIsmeltEnum
+syn keyword juliaConstC SmbIsmungsmEnum
+syn keyword juliaConstC SmbIsprecipscaledEnum
+syn keyword juliaConstC SmbIssetpddfacEnum
+syn keyword juliaConstC SmbIsshortwaveEnum
+syn keyword juliaConstC SmbIstemperaturescaledEnum
+syn keyword juliaConstC SmbIsthermalEnum
+syn keyword juliaConstC SmbIsturbulentfluxEnum
+syn keyword juliaConstC SmbKEnum
+syn keyword juliaConstC SmbLapseRatesEnum
+syn keyword juliaConstC SmbLWgradEnum
+syn keyword juliaConstC SmbNumBasinsEnum
+syn keyword juliaConstC SmbNumBreaksEnum
+syn keyword juliaConstC SmbNumElevationBinsEnum
+syn keyword juliaConstC SmbNumParamsEnum
+syn keyword juliaConstC SmbNumRequestedOutputsEnum
+syn keyword juliaConstC SmbPfacEnum
+syn keyword juliaConstC SmbRdlEnum
+syn keyword juliaConstC SmbRefElevationEnum
+syn keyword juliaConstC SmbRequestedOutputsEnum
+syn keyword juliaConstC SmbRlapsEnum
+syn keyword juliaConstC SmbRlapslgmEnum
+syn keyword juliaConstC SmbRunoffaltiEnum
+syn keyword juliaConstC SmbRunoffgradEnum
+syn keyword juliaConstC SmbRunoffrefEnum
+syn keyword juliaConstC SmbSealevEnum
+syn keyword juliaConstC SmbSemicMethodEnum
+syn keyword juliaConstC SmbSemicHcritEnum
+syn keyword juliaConstC SmbSemicRcritEnum
+syn keyword juliaConstC SmbSemicWcritEnum
+syn keyword juliaConstC SmbSemicMcritEnum
+syn keyword juliaConstC SmbSemicAfacEnum
+syn keyword juliaConstC SmbSemicTauAEnum
+syn keyword juliaConstC SmbSemicTauFEnum
+syn keyword juliaConstC SmbSemicTminEnum
+syn keyword juliaConstC SmbSemicTmidEnum
+syn keyword juliaConstC SmbSemicTmaxEnum
+syn keyword juliaConstC SmbStepsPerStepEnum
+syn keyword juliaConstC SmbSwIdxEnum
+syn keyword juliaConstC SmbSWgradEnum
+syn keyword juliaConstC SmbT0dryEnum
+syn keyword juliaConstC SmbT0wetEnum
+syn keyword juliaConstC SmbTcIdxEnum
+syn keyword juliaConstC SmbTeThreshEnum
+syn keyword juliaConstC SmbTdiffEnum
+syn keyword juliaConstC SmbThermoDeltaTScalingEnum
+syn keyword juliaConstC SmbTemperaturesReconstructedYearsEnum
+syn keyword juliaConstC SmbPrecipitationsReconstructedYearsEnum
+syn keyword juliaConstC SmbWindspeedgradEnum
+syn keyword juliaConstC SmoothThicknessMultiplierEnum
+syn keyword juliaConstC SolutionTypeEnum
+syn keyword juliaConstC SteadystateMaxiterEnum
+syn keyword juliaConstC SteadystateNumRequestedOutputsEnum
+syn keyword juliaConstC SteadystateReltolEnum
+syn keyword juliaConstC SteadystateRequestedOutputsEnum
+syn keyword juliaConstC StepEnum
+syn keyword juliaConstC StepsEnum
+syn keyword juliaConstC StressbalanceAbstolEnum
+syn keyword juliaConstC StressbalanceFSreconditioningEnum
+syn keyword juliaConstC StressbalanceIsnewtonEnum
+syn keyword juliaConstC StressbalanceMaxiterEnum
+syn keyword juliaConstC StressbalanceNumRequestedOutputsEnum
+syn keyword juliaConstC StressbalancePenaltyFactorEnum
+syn keyword juliaConstC StressbalanceReltolEnum
+syn keyword juliaConstC StressbalanceRequestedOutputsEnum
+syn keyword juliaConstC StressbalanceRestolEnum
+syn keyword juliaConstC StressbalanceRiftPenaltyThresholdEnum
+syn keyword juliaConstC StressbalanceShelfDampeningEnum
+syn keyword juliaConstC ThermalForcingMonthlyEffectsEnum
+syn keyword juliaConstC ThermalIsdrainicecolumnEnum
+syn keyword juliaConstC ThermalIsdynamicbasalspcEnum
+syn keyword juliaConstC ThermalIsenthalpyEnum
+syn keyword juliaConstC ThermalMaxiterEnum
+syn keyword juliaConstC ThermalNumRequestedOutputsEnum
+syn keyword juliaConstC ThermalPenaltyFactorEnum
+syn keyword juliaConstC ThermalPenaltyLockEnum
+syn keyword juliaConstC ThermalPenaltyThresholdEnum
+syn keyword juliaConstC ThermalReltolEnum
+syn keyword juliaConstC ThermalRequestedOutputsEnum
+syn keyword juliaConstC ThermalStabilizationEnum
+syn keyword juliaConstC ThermalWatercolumnUpperlimitEnum
+syn keyword juliaConstC TimeEnum
+syn keyword juliaConstC TimesteppingAverageForcingEnum
+syn keyword juliaConstC TimesteppingCflCoefficientEnum
+syn keyword juliaConstC TimesteppingCouplingTimeEnum
+syn keyword juliaConstC TimesteppingFinalTimeEnum
+syn keyword juliaConstC TimesteppingInterpForcingEnum
+syn keyword juliaConstC TimesteppingCycleForcingEnum
+syn keyword juliaConstC TimesteppingStartTimeEnum
+syn keyword juliaConstC TimesteppingTimeStepEnum
+syn keyword juliaConstC TimesteppingTimeStepMaxEnum
+syn keyword juliaConstC TimesteppingTimeStepMinEnum
+syn keyword juliaConstC TimesteppingTypeEnum
+syn keyword juliaConstC ToMITgcmCommEnum
+syn keyword juliaConstC ToolkitsFileNameEnum
+syn keyword juliaConstC ToolkitsOptionsAnalysesEnum
+syn keyword juliaConstC ToolkitsOptionsStringsEnum
+syn keyword juliaConstC ToolkitsTypesEnum
+syn keyword juliaConstC TransientAmrFrequencyEnum
+syn keyword juliaConstC TransientIsageEnum
+syn keyword juliaConstC TransientIsdamageevolutionEnum
+syn keyword juliaConstC TransientIsdebrisEnum
+syn keyword juliaConstC TransientIsesaEnum
+syn keyword juliaConstC TransientIsgiaEnum
+syn keyword juliaConstC TransientIsgroundinglineEnum
+syn keyword juliaConstC TransientIshydrologyEnum
+syn keyword juliaConstC TransientIsmasstransportEnum
+syn keyword juliaConstC TransientIsoceantransportEnum
+syn keyword juliaConstC TransientIsmovingfrontEnum
+syn keyword juliaConstC TransientIsoceancouplingEnum
+syn keyword juliaConstC TransientIssamplingEnum
+syn keyword juliaConstC TransientIsslcEnum
+syn keyword juliaConstC TransientIssmbEnum
+syn keyword juliaConstC TransientIsstressbalanceEnum
+syn keyword juliaConstC TransientIsthermalEnum
+syn keyword juliaConstC TransientNumRequestedOutputsEnum
+syn keyword juliaConstC TransientRequestedOutputsEnum
+syn keyword juliaConstC VelocityEnum
+syn keyword juliaConstC XxeEnum
+syn keyword juliaConstC YyeEnum
+syn keyword juliaConstC ZzeEnum
+syn keyword juliaConstC AreaeEnum
+syn keyword juliaConstC WorldCommEnum
+syn keyword juliaConstC ParametersENDEnum
+syn keyword juliaConstC InputsSTARTEnum
+syn keyword juliaConstC AccumulatedDeltaBottomPressureEnum
+syn keyword juliaConstC AccumulatedDeltaIceThicknessEnum
+syn keyword juliaConstC AccumulatedDeltaTwsEnum
+syn keyword juliaConstC AdjointEnum
+syn keyword juliaConstC AdjointpEnum
+syn keyword juliaConstC AdjointxEnum
+syn keyword juliaConstC AdjointxBaseEnum
+syn keyword juliaConstC AdjointxShearEnum
+syn keyword juliaConstC AdjointyEnum
+syn keyword juliaConstC AdjointyBaseEnum
+syn keyword juliaConstC AdjointyShearEnum
+syn keyword juliaConstC AdjointzEnum
+syn keyword juliaConstC AgeEnum
+syn keyword juliaConstC AirEnum
+syn keyword juliaConstC ApproximationEnum
+syn keyword juliaConstC BalancethicknessMisfitEnum
+syn keyword juliaConstC BalancethicknessOmega0Enum
+syn keyword juliaConstC BalancethicknessOmegaEnum
+syn keyword juliaConstC BalancethicknessSpcthicknessEnum
+syn keyword juliaConstC BalancethicknessThickeningRateEnum
+syn keyword juliaConstC BasalCrevasseEnum
+syn keyword juliaConstC BasalforcingsDeepwaterMeltingRatearmaEnum
+syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateNoiseEnum
+syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateValuesAutoregressionEnum
+syn keyword juliaConstC BasalforcingsDeepwaterMeltingRateValuesMovingaverageEnum
+syn keyword juliaConstC BasalforcingsFloatingiceMeltingRateEnum
+syn keyword juliaConstC BasalforcingsFloatingiceMeltingRateObsEnum
+syn keyword juliaConstC BasalforcingsGeothermalfluxEnum
+syn keyword juliaConstC BasalforcingsGroundediceMeltingRateEnum
+syn keyword juliaConstC BasalforcingsGroundediceMeltingRateObsEnum
+syn keyword juliaConstC BasalforcingsLinearBasinIdEnum
+syn keyword juliaConstC BasalforcingsPerturbationMeltingRateEnum
+syn keyword juliaConstC BasalforcingsSpatialDeepwaterElevationEnum
+syn keyword juliaConstC BasalforcingsSpatialDeepwaterMeltingRateEnum
+syn keyword juliaConstC BasalforcingsSpatialUpperwaterElevationEnum
+syn keyword juliaConstC BasalforcingsSpatialUpperwaterMeltingRateEnum
+syn keyword juliaConstC BasalforcingsIsmip6BasinIdEnum
+syn keyword juliaConstC BasalforcingsIsmip6TfEnum
+syn keyword juliaConstC BasalforcingsIsmip6TfShelfEnum
+syn keyword juliaConstC BasalforcingsIsmip6MeltAnomalyEnum
+syn keyword juliaConstC BasalforcingsMeltrateFactorEnum
+syn keyword juliaConstC BasalforcingsOceanSalinityEnum
+syn keyword juliaConstC BasalforcingsOceanTempEnum
+syn keyword juliaConstC BasalforcingsPicoBasinIdEnum
+syn keyword juliaConstC BasalforcingsPicoBoxIdEnum
+syn keyword juliaConstC BasalforcingsPicoOverturningCoeffEnum
+syn keyword juliaConstC BasalforcingsPicoSubShelfOceanOverturningEnum
+syn keyword juliaConstC BasalforcingsPicoSubShelfOceanSalinityEnum
+syn keyword juliaConstC BasalforcingsPicoSubShelfOceanTempEnum
+syn keyword juliaConstC BasalStressxEnum
+syn keyword juliaConstC BasalStressyEnum
+syn keyword juliaConstC BasalStressEnum
+syn keyword juliaConstC BaseEnum
+syn keyword juliaConstC BaseOldEnum
+syn keyword juliaConstC BaseSlopeXEnum
+syn keyword juliaConstC BaseSlopeYEnum
+syn keyword juliaConstC BaselineBasalforcingsFloatingiceMeltingRateEnum
+syn keyword juliaConstC BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum
+syn keyword juliaConstC BaselineCalvingCalvingrateEnum
+syn keyword juliaConstC BaselineFrictionEffectivePressureEnum
+syn keyword juliaConstC BaselineSmbMassBalanceEnum
+syn keyword juliaConstC BedEnum
+syn keyword juliaConstC BedGRDEnum
+syn keyword juliaConstC BedEastEnum
+syn keyword juliaConstC BedEastGRDEnum
+syn keyword juliaConstC BedNorthEnum
+syn keyword juliaConstC BedNorthGRDEnum
+syn keyword juliaConstC BedSlopeXEnum
+syn keyword juliaConstC BedSlopeYEnum
+syn keyword juliaConstC BottomPressureEnum
+syn keyword juliaConstC BottomPressureOldEnum
+syn keyword juliaConstC CalvingBasinIdEnum
+syn keyword juliaConstC CalvingCalvingrateEnum
+syn keyword juliaConstC CalvingHabFractionEnum
+syn keyword juliaConstC CalvingAblationrateEnum
+syn keyword juliaConstC CalvingMeltingrateEnum
+syn keyword juliaConstC CalvingStressThresholdFloatingiceEnum
+syn keyword juliaConstC CalvingStressThresholdGroundediceEnum
+syn keyword juliaConstC CalvinglevermannCoeffEnum
+syn keyword juliaConstC CalvingratexEnum
+syn keyword juliaConstC CalvingrateyEnum
+syn keyword juliaConstC CalvingFluxLevelsetEnum
+syn keyword juliaConstC CalvingMeltingFluxLevelsetEnum
+syn keyword juliaConstC ConvergedEnum
+syn keyword juliaConstC CrevasseDepthEnum
+syn keyword juliaConstC DamageDEnum
+syn keyword juliaConstC DamageDOldEnum
+syn keyword juliaConstC DamageDbarEnum
+syn keyword juliaConstC DamageDbarOldEnum
+syn keyword juliaConstC DamageFEnum
+syn keyword juliaConstC DebrisThicknessEnum
+syn keyword juliaConstC DegreeOfChannelizationEnum
+syn keyword juliaConstC DepthBelowSurfaceEnum
+syn keyword juliaConstC DeltaIceThicknessEnum
+syn keyword juliaConstC DeltaTwsEnum
+syn keyword juliaConstC DeltaBottomPressureEnum
+syn keyword juliaConstC DeltaDslEnum
+syn keyword juliaConstC DslOldEnum
+syn keyword juliaConstC DslEnum
+syn keyword juliaConstC DeltaStrEnum
+syn keyword juliaConstC StrOldEnum
+syn keyword juliaConstC StrEnum
+syn keyword juliaConstC DeviatoricStresseffectiveEnum
+syn keyword juliaConstC DeviatoricStressxxEnum
+syn keyword juliaConstC DeviatoricStressxyEnum
+syn keyword juliaConstC DeviatoricStressxzEnum
+syn keyword juliaConstC DeviatoricStressyyEnum
+syn keyword juliaConstC DeviatoricStressyzEnum
+syn keyword juliaConstC DeviatoricStresszzEnum
+syn keyword juliaConstC DeviatoricStress1Enum
+syn keyword juliaConstC DeviatoricStress2Enum
+syn keyword juliaConstC DistanceToCalvingfrontEnum
+syn keyword juliaConstC DistanceToGroundinglineEnum
+syn keyword juliaConstC Domain2DhorizontalEnum
+syn keyword juliaConstC Domain2DverticalEnum
+syn keyword juliaConstC Domain3DEnum
+syn keyword juliaConstC DragCoefficientAbsGradientEnum
+syn keyword juliaConstC DrivingStressXEnum
+syn keyword juliaConstC DrivingStressYEnum
+syn keyword juliaConstC DummyEnum
+syn keyword juliaConstC EffectivePressureEnum
+syn keyword juliaConstC EffectivePressureSubstepEnum
+syn keyword juliaConstC EffectivePressureTransientEnum
+syn keyword juliaConstC EnthalpyEnum
+syn keyword juliaConstC EnthalpyPicardEnum
+syn keyword juliaConstC EplHeadEnum
+syn keyword juliaConstC EplHeadOldEnum
+syn keyword juliaConstC EplHeadSlopeXEnum
+syn keyword juliaConstC EplHeadSlopeYEnum
+syn keyword juliaConstC EplHeadSubstepEnum
+syn keyword juliaConstC EplHeadTransientEnum
+syn keyword juliaConstC EsaEmotionEnum
+syn keyword juliaConstC EsaNmotionEnum
+syn keyword juliaConstC EsaRotationrateEnum
+syn keyword juliaConstC EsaStrainratexxEnum
+syn keyword juliaConstC EsaStrainratexyEnum
+syn keyword juliaConstC EsaStrainrateyyEnum
+syn keyword juliaConstC EsaUmotionEnum
+syn keyword juliaConstC EsaXmotionEnum
+syn keyword juliaConstC EsaYmotionEnum
+syn keyword juliaConstC EtaDiffEnum
+syn keyword juliaConstC FlowequationBorderFSEnum
+syn keyword juliaConstC FrictionAsEnum
+syn keyword juliaConstC FrictionCEnum
+syn keyword juliaConstC FrictionCmaxEnum
+syn keyword juliaConstC FrictionCoefficientEnum
+syn keyword juliaConstC FrictionCoefficientcoulombEnum
+syn keyword juliaConstC FrictionEffectivePressureEnum
+syn keyword juliaConstC FrictionKEnum
+syn keyword juliaConstC FrictionMEnum
+syn keyword juliaConstC FrictionPEnum
+syn keyword juliaConstC FrictionPressureAdjustedTemperatureEnum
+syn keyword juliaConstC FrictionQEnum
+syn keyword juliaConstC FrictionSedimentCompressibilityCoefficientEnum
+syn keyword juliaConstC FrictionTillFrictionAngleEnum
+syn keyword juliaConstC FrictionWaterLayerEnum
+syn keyword juliaConstC FrictionWaterPressureEnum
+syn keyword juliaConstC FrictionWaterPressureNoiseEnum
+syn keyword juliaConstC FrictionfEnum
+syn keyword juliaConstC FrontalForcingsBasinIdEnum
+syn keyword juliaConstC FrontalForcingsSubglacialDischargearmaEnum
+syn keyword juliaConstC FrontalForcingsSubglacialDischargeEnum
+syn keyword juliaConstC GeometryHydrostaticRatioEnum
+syn keyword juliaConstC NGiaEnum
+syn keyword juliaConstC NGiaRateEnum
+syn keyword juliaConstC UGiaEnum
+syn keyword juliaConstC UGiaRateEnum
+syn keyword juliaConstC GradientEnum
+syn keyword juliaConstC GroundinglineHeightEnum
+syn keyword juliaConstC HydraulicPotentialEnum
+syn keyword juliaConstC HydraulicPotentialOldEnum
+syn keyword juliaConstC HydrologyBasalFluxEnum
+syn keyword juliaConstC HydrologyBasinsIdEnum
+syn keyword juliaConstC HydrologyBumpHeightEnum
+syn keyword juliaConstC HydrologyBumpSpacingEnum
+syn keyword juliaConstC HydrologyChannelConductivityEnum
+syn keyword juliaConstC HydrologydcBasalMoulinInputEnum
+syn keyword juliaConstC HydrologydcEplThicknessEnum
+syn keyword juliaConstC HydrologydcEplThicknessOldEnum
+syn keyword juliaConstC HydrologydcEplThicknessSubstepEnum
+syn keyword juliaConstC HydrologydcEplThicknessTransientEnum
+syn keyword juliaConstC HydrologydcMaskEplactiveEltEnum
+syn keyword juliaConstC HydrologydcMaskEplactiveNodeEnum
+syn keyword juliaConstC HydrologydcMaskThawedEltEnum
+syn keyword juliaConstC HydrologydcMaskThawedNodeEnum
+syn keyword juliaConstC HydrologydcSedimentTransmitivityEnum
+syn keyword juliaConstC HydrologyDrainageRateEnum
+syn keyword juliaConstC HydrologyEnglacialInputEnum
+syn keyword juliaConstC HydrologyGapHeightEnum
+syn keyword juliaConstC HydrologyGapHeightXEnum
+syn keyword juliaConstC HydrologyGapHeightXXEnum
+syn keyword juliaConstC HydrologyGapHeightYEnum
+syn keyword juliaConstC HydrologyGapHeightYYEnum
+syn keyword juliaConstC HydrologyHeadEnum
+syn keyword juliaConstC HydrologyHeadOldEnum
+syn keyword juliaConstC HydrologyMoulinInputEnum
+syn keyword juliaConstC HydrologyNeumannfluxEnum
+syn keyword juliaConstC HydrologyReynoldsEnum
+syn keyword juliaConstC HydrologySheetConductivityEnum
+syn keyword juliaConstC HydrologySheetThicknessEnum
+syn keyword juliaConstC HydrologySheetThicknessOldEnum
+syn keyword juliaConstC HydrologyTwsEnum
+syn keyword juliaConstC HydrologyTwsSpcEnum
+syn keyword juliaConstC HydrologyTwsAnalysisEnum
+syn keyword juliaConstC HydrologyWatercolumnMaxEnum
+syn keyword juliaConstC HydrologyWaterVxEnum
+syn keyword juliaConstC HydrologyWaterVyEnum
+syn keyword juliaConstC HydrologyMaskNodeActivationEnum
+syn keyword juliaConstC DebrisMaskNodeActivationEnum
+syn keyword juliaConstC IceEnum
+syn keyword juliaConstC IceMaskNodeActivationEnum
+syn keyword juliaConstC InputEnum
+syn keyword juliaConstC InversionCostFunctionsCoefficientsEnum
+syn keyword juliaConstC InversionSurfaceObsEnum
+syn keyword juliaConstC InversionThicknessObsEnum
+syn keyword juliaConstC InversionVelObsEnum
+syn keyword juliaConstC InversionVxObsEnum
+syn keyword juliaConstC InversionVyObsEnum
+syn keyword juliaConstC LevelsetfunctionSlopeXEnum
+syn keyword juliaConstC LevelsetfunctionSlopeYEnum
+syn keyword juliaConstC LevelsetObservationEnum
+syn keyword juliaConstC LoadingforceXEnum
+syn keyword juliaConstC LoadingforceYEnum
+syn keyword juliaConstC LoadingforceZEnum
+syn keyword juliaConstC MaskOceanLevelsetEnum
+syn keyword juliaConstC MaskIceLevelsetEnum
+syn keyword juliaConstC MaskIceRefLevelsetEnum
+syn keyword juliaConstC MasstransportSpcthicknessEnum
+syn keyword juliaConstC MaterialsRheologyBEnum
+syn keyword juliaConstC MaterialsRheologyBbarEnum
+syn keyword juliaConstC MaterialsRheologyEEnum
+syn keyword juliaConstC MaterialsRheologyEbarEnum
+syn keyword juliaConstC MaterialsRheologyEcEnum
+syn keyword juliaConstC MaterialsRheologyEcbarEnum
+syn keyword juliaConstC MaterialsRheologyEsEnum
+syn keyword juliaConstC MaterialsRheologyEsbarEnum
+syn keyword juliaConstC MaterialsRheologyNEnum
+syn keyword juliaConstC MeshScaleFactorEnum
+syn keyword juliaConstC MeshVertexonbaseEnum
+syn keyword juliaConstC MeshVertexonboundaryEnum
+syn keyword juliaConstC MeshVertexonsurfaceEnum
+syn keyword juliaConstC MisfitEnum
+syn keyword juliaConstC MovingFrontalVxEnum
+syn keyword juliaConstC MovingFrontalVyEnum
+syn keyword juliaConstC NeumannfluxEnum
+syn keyword juliaConstC NewDamageEnum
+syn keyword juliaConstC NodeEnum
+syn keyword juliaConstC OmegaAbsGradientEnum
+syn keyword juliaConstC OceantransportSpcbottompressureEnum
+syn keyword juliaConstC OceantransportSpcstrEnum
+syn keyword juliaConstC OceantransportSpcdslEnum
+syn keyword juliaConstC P0Enum
+syn keyword juliaConstC P1Enum
+syn keyword juliaConstC PartitioningEnum
+syn keyword juliaConstC PressureEnum
+syn keyword juliaConstC RadarEnum
+syn keyword juliaConstC RadarAttenuationMacGregorEnum
+syn keyword juliaConstC RadarAttenuationWolffEnum
+syn keyword juliaConstC RadarIcePeriodEnum
+syn keyword juliaConstC RadarPowerMacGregorEnum
+syn keyword juliaConstC RadarPowerWolffEnum
+syn keyword juliaConstC RheologyBAbsGradientEnum
+syn keyword juliaConstC RheologyBInitialguessEnum
+syn keyword juliaConstC RheologyBInitialguessMisfitEnum
+syn keyword juliaConstC RheologyBbarAbsGradientEnum
+syn keyword juliaConstC SampleEnum
+syn keyword juliaConstC SampleOldEnum
+syn keyword juliaConstC SampleNoiseEnum
+syn keyword juliaConstC SamplingBetaEnum
+syn keyword juliaConstC SamplingKappaEnum
+syn keyword juliaConstC SamplingPhiEnum
+syn keyword juliaConstC SamplingTauEnum
+syn keyword juliaConstC SealevelEnum
+syn keyword juliaConstC SealevelGRDEnum
+syn keyword juliaConstC SatGraviGRDEnum
+syn keyword juliaConstC SealevelBarystaticMaskEnum
+syn keyword juliaConstC SealevelBarystaticIceMaskEnum
+syn keyword juliaConstC SealevelBarystaticIceWeightsEnum
+syn keyword juliaConstC SealevelBarystaticIceAreaEnum
+syn keyword juliaConstC SealevelBarystaticIceLatbarEnum
+syn keyword juliaConstC SealevelBarystaticIceLongbarEnum
+syn keyword juliaConstC SealevelBarystaticIceLoadEnum
+syn keyword juliaConstC SealevelBarystaticHydroMaskEnum
+syn keyword juliaConstC SealevelBarystaticHydroWeightsEnum
+syn keyword juliaConstC SealevelBarystaticHydroAreaEnum
+syn keyword juliaConstC SealevelBarystaticHydroLatbarEnum
+syn keyword juliaConstC SealevelBarystaticHydroLongbarEnum
+syn keyword juliaConstC SealevelBarystaticHydroLoadEnum
+syn keyword juliaConstC SealevelBarystaticBpMaskEnum
+syn keyword juliaConstC SealevelBarystaticBpWeightsEnum
+syn keyword juliaConstC SealevelBarystaticBpAreaEnum
+syn keyword juliaConstC SealevelBarystaticBpLoadEnum
+syn keyword juliaConstC SealevelBarystaticOceanMaskEnum
+syn keyword juliaConstC SealevelBarystaticOceanWeightsEnum
+syn keyword juliaConstC SealevelBarystaticOceanAreaEnum
+syn keyword juliaConstC SealevelBarystaticOceanLatbarEnum
+syn keyword juliaConstC SealevelBarystaticOceanLongbarEnum
+syn keyword juliaConstC SealevelBarystaticOceanLoadEnum
+syn keyword juliaConstC SealevelNEsaEnum
+syn keyword juliaConstC SealevelNEsaRateEnum
+syn keyword juliaConstC SealevelRSLEnum
+syn keyword juliaConstC BslcEnum
+syn keyword juliaConstC BslcIceEnum
+syn keyword juliaConstC BslcHydroEnum
+syn keyword juliaConstC BslcOceanEnum
+syn keyword juliaConstC BslcRateEnum
+syn keyword juliaConstC GmtslcEnum
+syn keyword juliaConstC SealevelRSLBarystaticEnum
+syn keyword juliaConstC SealevelRSLRateEnum
+syn keyword juliaConstC SealevelUGrdEnum
+syn keyword juliaConstC SealevelNGrdEnum
+syn keyword juliaConstC SealevelUEastEsaEnum
+syn keyword juliaConstC SealevelUNorthEsaEnum
+syn keyword juliaConstC SealevelchangeIndicesEnum
+syn keyword juliaConstC SealevelchangeConvolutionVerticesEnum
+syn keyword juliaConstC SealevelchangeAlphaIndexEnum
+syn keyword juliaConstC SealevelchangeAzimuthIndexEnum
+syn keyword juliaConstC SealevelchangeGrotEnum
+syn keyword juliaConstC SealevelchangeGSatGravirotEnum
+syn keyword juliaConstC SealevelchangeGUrotEnum
+syn keyword juliaConstC SealevelchangeGNrotEnum
+syn keyword juliaConstC SealevelchangeGErotEnum
+syn keyword juliaConstC SealevelchangeAlphaIndexOceanEnum
+syn keyword juliaConstC SealevelchangeAlphaIndexIceEnum
+syn keyword juliaConstC SealevelchangeAlphaIndexHydroEnum
+syn keyword juliaConstC SealevelchangeAzimuthIndexOceanEnum
+syn keyword juliaConstC SealevelchangeAzimuthIndexIceEnum
+syn keyword juliaConstC SealevelchangeAzimuthIndexHydroEnum
+syn keyword juliaConstC SealevelchangeViscousRSLEnum
+syn keyword juliaConstC SealevelchangeViscousSGEnum
+syn keyword juliaConstC SealevelchangeViscousUEnum
+syn keyword juliaConstC SealevelchangeViscousNEnum
+syn keyword juliaConstC SealevelchangeViscousEEnum
+syn keyword juliaConstC CouplingTransferCountEnum
+syn keyword juliaConstC SedimentHeadEnum
+syn keyword juliaConstC SedimentHeadOldEnum
+syn keyword juliaConstC SedimentHeadSubstepEnum
+syn keyword juliaConstC SedimentHeadTransientEnum
+syn keyword juliaConstC SedimentHeadResidualEnum
+syn keyword juliaConstC SedimentHeadStackedEnum
+syn keyword juliaConstC SigmaNNEnum
+syn keyword juliaConstC SigmaVMEnum
+syn keyword juliaConstC SmbAccumulatedECEnum
+syn keyword juliaConstC SmbAccumulatedMassBalanceEnum
+syn keyword juliaConstC SmbAccumulatedMeltEnum
+syn keyword juliaConstC SmbAccumulatedPrecipitationEnum
+syn keyword juliaConstC SmbAccumulatedRainEnum
+syn keyword juliaConstC SmbAccumulatedRefreezeEnum
+syn keyword juliaConstC SmbAccumulatedRunoffEnum
+syn keyword juliaConstC SmbAlbedoEnum
+syn keyword juliaConstC SmbAlbedoInitEnum
+syn keyword juliaConstC SmbAlbedoSnowEnum
+syn keyword juliaConstC SmbAlbedoSnowInitEnum
+syn keyword juliaConstC SmbAEnum
+syn keyword juliaConstC SmbAdiffEnum
+syn keyword juliaConstC SmbAValueEnum
+syn keyword juliaConstC SmbAccumulationEnum
+syn keyword juliaConstC SmbAdiffiniEnum
+syn keyword juliaConstC SmbAiniEnum
+syn keyword juliaConstC SmbARMANoiseEnum
+syn keyword juliaConstC SmbBasinsIdEnum
+syn keyword juliaConstC SmbBMaxEnum
+syn keyword juliaConstC SmbBMinEnum
+syn keyword juliaConstC SmbBNegEnum
+syn keyword juliaConstC SmbBPosEnum
+syn keyword juliaConstC SmbCEnum
+syn keyword juliaConstC SmbCcsnowValueEnum
+syn keyword juliaConstC SmbCciceValueEnum
+syn keyword juliaConstC SmbCotValueEnum
+syn keyword juliaConstC SmbDEnum
+syn keyword juliaConstC SmbDailyairdensityEnum
+syn keyword juliaConstC SmbDailyairhumidityEnum
+syn keyword juliaConstC SmbDailydlradiationEnum
+syn keyword juliaConstC SmbDailydsradiationEnum
+syn keyword juliaConstC SmbDailypressureEnum
+syn keyword juliaConstC SmbDailyrainfallEnum
+syn keyword juliaConstC SmbDailysnowfallEnum
+syn keyword juliaConstC SmbDailytemperatureEnum
+syn keyword juliaConstC SmbDailywindspeedEnum
+syn keyword juliaConstC SmbDiniEnum
+syn keyword juliaConstC SmbDlwrfEnum
+syn keyword juliaConstC SmbDulwrfValueEnum
+syn keyword juliaConstC SmbDswrfEnum
+syn keyword juliaConstC SmbDswdiffrfEnum
+syn keyword juliaConstC SmbDzAddEnum
+syn keyword juliaConstC SmbDzEnum
+syn keyword juliaConstC SmbDzMinEnum
+syn keyword juliaConstC SmbDzTopEnum
+syn keyword juliaConstC SmbDziniEnum
+syn keyword juliaConstC SmbEAirEnum
+syn keyword juliaConstC SmbECEnum
+syn keyword juliaConstC SmbECDtEnum
+syn keyword juliaConstC SmbECiniEnum
+syn keyword juliaConstC SmbElaEnum
+syn keyword juliaConstC SmbEvaporationEnum
+syn keyword juliaConstC SmbFACEnum
+syn keyword juliaConstC SmbGdnEnum
+syn keyword juliaConstC SmbGdniniEnum
+syn keyword juliaConstC SmbGspEnum
+syn keyword juliaConstC SmbGspiniEnum
+syn keyword juliaConstC SmbHIceEnum
+syn keyword juliaConstC SmbHIceInitEnum
+syn keyword juliaConstC SmbHSnowEnum
+syn keyword juliaConstC SmbHSnowInitEnum
+syn keyword juliaConstC SmbHrefEnum
+syn keyword juliaConstC SmbIsInitializedEnum
+syn keyword juliaConstC SmbMAddEnum
+syn keyword juliaConstC SmbMassBalanceEnum
+syn keyword juliaConstC SmbMassBalanceSnowEnum
+syn keyword juliaConstC SmbMassBalanceIceEnum
+syn keyword juliaConstC SmbMassBalanceSemicEnum
+syn keyword juliaConstC SmbMassBalanceSubstepEnum
+syn keyword juliaConstC SmbMassBalanceTransientEnum
+syn keyword juliaConstC SmbMaskEnum
+syn keyword juliaConstC SmbMeanLHFEnum
+syn keyword juliaConstC SmbMeanSHFEnum
+syn keyword juliaConstC SmbMeanULWEnum
+syn keyword juliaConstC SmbMeltEnum
+syn keyword juliaConstC SmbMonthlytemperaturesEnum
+syn keyword juliaConstC SmbMonthlydsradiationEnum
+syn keyword juliaConstC SmbMonthlydlradiationEnum
+syn keyword juliaConstC SmbMonthlywindspeedEnum
+syn keyword juliaConstC SmbMonthlyairhumidityEnum
+syn keyword juliaConstC SmbMSurfEnum
+syn keyword juliaConstC SmbNetLWEnum
+syn keyword juliaConstC SmbNetSWEnum
+syn keyword juliaConstC SmbPAirEnum
+syn keyword juliaConstC SmbPEnum
+syn keyword juliaConstC SmbPddfacIceEnum
+syn keyword juliaConstC SmbPddfacSnowEnum
+syn keyword juliaConstC SmbPrecipitationEnum
+syn keyword juliaConstC SmbPrecipitationsAnomalyEnum
+syn keyword juliaConstC SmbDsradiationAnomalyEnum
+syn keyword juliaConstC SmbDlradiationAnomalyEnum
+syn keyword juliaConstC SmbWindspeedAnomalyEnum
+syn keyword juliaConstC SmbAirhumidityAnomalyEnum
+syn keyword juliaConstC SmbPrecipitationsLgmEnum
+syn keyword juliaConstC SmbPrecipitationsPresentdayEnum
+syn keyword juliaConstC SmbPrecipitationsReconstructedEnum
+syn keyword juliaConstC SmbRainEnum
+syn keyword juliaConstC SmbReEnum
+syn keyword juliaConstC SmbRefreezeEnum
+syn keyword juliaConstC SmbReiniEnum
+syn keyword juliaConstC SmbRunoffEnum
+syn keyword juliaConstC SmbRunoffSubstepEnum
+syn keyword juliaConstC SmbRunoffTransientEnum
+syn keyword juliaConstC SmbS0gcmEnum
+syn keyword juliaConstC SmbS0pEnum
+syn keyword juliaConstC SmbS0tEnum
+syn keyword juliaConstC SmbSemicQmrEnum
+syn keyword juliaConstC SmbSemicQmrInitEnum
+syn keyword juliaConstC SmbSizeiniEnum
+syn keyword juliaConstC SmbSmbCorrEnum
+syn keyword juliaConstC SmbSmbrefEnum
+syn keyword juliaConstC SmbSzaValueEnum
+syn keyword juliaConstC SmbSummerMeltEnum
+syn keyword juliaConstC SmbSummerAlbedoEnum
+syn keyword juliaConstC SmbSnowheightEnum
+syn keyword juliaConstC SmbTEnum
+syn keyword juliaConstC SmbTaEnum
+syn keyword juliaConstC SmbTampEnum
+syn keyword juliaConstC SmbTeValueEnum
+syn keyword juliaConstC SmbTemperaturesAnomalyEnum
+syn keyword juliaConstC SmbTemperaturesLgmEnum
+syn keyword juliaConstC SmbTemperaturesPresentdayEnum
+syn keyword juliaConstC SmbTemperaturesReconstructedEnum
+syn keyword juliaConstC SmbTiniEnum
+syn keyword juliaConstC SmbTmeanEnum
+syn keyword juliaConstC SmbTzEnum
+syn keyword juliaConstC SmbValuesAutoregressionEnum
+syn keyword juliaConstC SmbValuesMovingaverageEnum
+syn keyword juliaConstC SmbVEnum
+syn keyword juliaConstC SmbVmeanEnum
+syn keyword juliaConstC SmbVzEnum
+syn keyword juliaConstC SmbWEnum
+syn keyword juliaConstC SmbWAddEnum
+syn keyword juliaConstC SmbWiniEnum
+syn keyword juliaConstC SmbZMaxEnum
+syn keyword juliaConstC SmbZMinEnum
+syn keyword juliaConstC SmbZTopEnum
+syn keyword juliaConstC SmbZYEnum
+syn keyword juliaConstC SolidearthExternalDisplacementEastRateEnum
+syn keyword juliaConstC SolidearthExternalDisplacementNorthRateEnum
+syn keyword juliaConstC SolidearthExternalDisplacementUpRateEnum
+syn keyword juliaConstC SolidearthExternalGeoidRateEnum
+syn keyword juliaConstC StochasticForcingDefaultIdEnum
+syn keyword juliaConstC StrainRateeffectiveEnum
+syn keyword juliaConstC StrainRateparallelEnum
+syn keyword juliaConstC StrainRateperpendicularEnum
+syn keyword juliaConstC StrainRatexxEnum
+syn keyword juliaConstC StrainRatexyEnum
+syn keyword juliaConstC StrainRatexzEnum
+syn keyword juliaConstC StrainRateyyEnum
+syn keyword juliaConstC StrainRateyzEnum
+syn keyword juliaConstC StrainRatezzEnum
+syn keyword juliaConstC StressMaxPrincipalEnum
+syn keyword juliaConstC StressTensorxxEnum
+syn keyword juliaConstC StressTensorxyEnum
+syn keyword juliaConstC StressTensorxzEnum
+syn keyword juliaConstC StressTensoryyEnum
+syn keyword juliaConstC StressTensoryzEnum
+syn keyword juliaConstC StressTensorzzEnum
+syn keyword juliaConstC SubglacialdischargeARMANoiseEnum
+syn keyword juliaConstC SubglacialdischargeValuesAutoregressionEnum
+syn keyword juliaConstC SubglacialdischargeValuesMovingaverageEnum
+syn keyword juliaConstC SurfaceAbsMisfitEnum
+syn keyword juliaConstC SurfaceAbsVelMisfitEnum
+syn keyword juliaConstC AreaEnum
+syn keyword juliaConstC SealevelAreaEnum
+syn keyword juliaConstC SurfaceAreaEnum
+syn keyword juliaConstC SurfaceAverageVelMisfitEnum
+syn keyword juliaConstC SurfaceCrevasseEnum
+syn keyword juliaConstC SurfaceEnum
+syn keyword juliaConstC SurfaceOldEnum
+syn keyword juliaConstC SurfaceLogVelMisfitEnum
+syn keyword juliaConstC SurfaceLogVxVyMisfitEnum
+syn keyword juliaConstC SurfaceObservationEnum
+syn keyword juliaConstC SurfaceRelVelMisfitEnum
+syn keyword juliaConstC SurfaceSlopeXEnum
+syn keyword juliaConstC SurfaceSlopeYEnum
+syn keyword juliaConstC TemperatureEnum
+syn keyword juliaConstC TemperaturePDDEnum
+syn keyword juliaConstC TemperaturePicardEnum
+syn keyword juliaConstC TemperatureSEMICEnum
+syn keyword juliaConstC ThermalforcingARMANoiseEnum
+syn keyword juliaConstC ThermalForcingEnum
+syn keyword juliaConstC ThermalforcingValuesAutoregressionEnum
+syn keyword juliaConstC ThermalforcingValuesMovingaverageEnum
+syn keyword juliaConstC ThermalSpctemperatureEnum
+syn keyword juliaConstC ThicknessAbsGradientEnum
+syn keyword juliaConstC ThicknessAbsMisfitEnum
+syn keyword juliaConstC ThicknessAcrossGradientEnum
+syn keyword juliaConstC ThicknessAlongGradientEnum
+syn keyword juliaConstC ThicknessEnum
+syn keyword juliaConstC ThicknessOldEnum
+syn keyword juliaConstC ThicknessPositiveEnum
+syn keyword juliaConstC ThicknessResidualEnum
+syn keyword juliaConstC TransientAccumulatedDeltaIceThicknessEnum
+syn keyword juliaConstC VelEnum
+syn keyword juliaConstC VxAverageEnum
+syn keyword juliaConstC VxBaseEnum
+syn keyword juliaConstC VxDebrisEnum
+syn keyword juliaConstC VxEnum
+syn keyword juliaConstC VxMeshEnum
+syn keyword juliaConstC VxObsEnum
+syn keyword juliaConstC VxShearEnum
+syn keyword juliaConstC VxSurfaceEnum
+syn keyword juliaConstC VyAverageEnum
+syn keyword juliaConstC VyBaseEnum
+syn keyword juliaConstC VyDebrisEnum
+syn keyword juliaConstC VyEnum
+syn keyword juliaConstC VyMeshEnum
+syn keyword juliaConstC VyObsEnum
+syn keyword juliaConstC VyShearEnum
+syn keyword juliaConstC VySurfaceEnum
+syn keyword juliaConstC VzEnum
+syn keyword juliaConstC VzFSEnum
+syn keyword juliaConstC VzHOEnum
+syn keyword juliaConstC VzMeshEnum
+syn keyword juliaConstC VzSSAEnum
+syn keyword juliaConstC WaterColumnOldEnum
+syn keyword juliaConstC WatercolumnEnum
+syn keyword juliaConstC WaterfractionDrainageEnum
+syn keyword juliaConstC WaterfractionDrainageIntegratedEnum
+syn keyword juliaConstC WaterfractionEnum
+syn keyword juliaConstC WaterheightEnum
+syn keyword juliaConstC WaterPressureArmaPerturbationEnum
+syn keyword juliaConstC WaterPressureValuesAutoregressionEnum
+syn keyword juliaConstC WaterPressureValuesMovingaverageEnum
+syn keyword juliaConstC WeightsLevelsetObservationEnum
+syn keyword juliaConstC WeightsMeltObservationEnum
+syn keyword juliaConstC WeightsVxObservationEnum
+syn keyword juliaConstC WeightsVyObservationEnum
+syn keyword juliaConstC WeightsSurfaceObservationEnum
+syn keyword juliaConstC OldAccumulatedDeltaBottomPressureEnum
+syn keyword juliaConstC OldAccumulatedDeltaIceThicknessEnum
+syn keyword juliaConstC OldAccumulatedDeltaTwsEnum
+syn keyword juliaConstC Outputdefinition1Enum
+syn keyword juliaConstC Outputdefinition10Enum
+syn keyword juliaConstC Outputdefinition11Enum
+syn keyword juliaConstC Outputdefinition12Enum
+syn keyword juliaConstC Outputdefinition13Enum
+syn keyword juliaConstC Outputdefinition14Enum
+syn keyword juliaConstC Outputdefinition15Enum
+syn keyword juliaConstC Outputdefinition16Enum
+syn keyword juliaConstC Outputdefinition17Enum
+syn keyword juliaConstC Outputdefinition18Enum
+syn keyword juliaConstC Outputdefinition19Enum
+syn keyword juliaConstC Outputdefinition20Enum
+syn keyword juliaConstC Outputdefinition21Enum
+syn keyword juliaConstC Outputdefinition22Enum
+syn keyword juliaConstC Outputdefinition23Enum
+syn keyword juliaConstC Outputdefinition24Enum
+syn keyword juliaConstC Outputdefinition25Enum
+syn keyword juliaConstC Outputdefinition26Enum
+syn keyword juliaConstC Outputdefinition27Enum
+syn keyword juliaConstC Outputdefinition28Enum
+syn keyword juliaConstC Outputdefinition29Enum
+syn keyword juliaConstC Outputdefinition2Enum
+syn keyword juliaConstC Outputdefinition30Enum
+syn keyword juliaConstC Outputdefinition31Enum
+syn keyword juliaConstC Outputdefinition32Enum
+syn keyword juliaConstC Outputdefinition33Enum
+syn keyword juliaConstC Outputdefinition34Enum
+syn keyword juliaConstC Outputdefinition35Enum
+syn keyword juliaConstC Outputdefinition36Enum
+syn keyword juliaConstC Outputdefinition37Enum
+syn keyword juliaConstC Outputdefinition38Enum
+syn keyword juliaConstC Outputdefinition39Enum
+syn keyword juliaConstC Outputdefinition3Enum
+syn keyword juliaConstC Outputdefinition40Enum
+syn keyword juliaConstC Outputdefinition41Enum
+syn keyword juliaConstC Outputdefinition42Enum
+syn keyword juliaConstC Outputdefinition43Enum
+syn keyword juliaConstC Outputdefinition44Enum
+syn keyword juliaConstC Outputdefinition45Enum
+syn keyword juliaConstC Outputdefinition46Enum
+syn keyword juliaConstC Outputdefinition47Enum
+syn keyword juliaConstC Outputdefinition48Enum
+syn keyword juliaConstC Outputdefinition49Enum
+syn keyword juliaConstC Outputdefinition4Enum
+syn keyword juliaConstC Outputdefinition50Enum
+syn keyword juliaConstC Outputdefinition51Enum
+syn keyword juliaConstC Outputdefinition52Enum
+syn keyword juliaConstC Outputdefinition53Enum
+syn keyword juliaConstC Outputdefinition54Enum
+syn keyword juliaConstC Outputdefinition55Enum
+syn keyword juliaConstC Outputdefinition56Enum
+syn keyword juliaConstC Outputdefinition57Enum
+syn keyword juliaConstC Outputdefinition58Enum
+syn keyword juliaConstC Outputdefinition59Enum
+syn keyword juliaConstC Outputdefinition5Enum
+syn keyword juliaConstC Outputdefinition60Enum
+syn keyword juliaConstC Outputdefinition61Enum
+syn keyword juliaConstC Outputdefinition62Enum
+syn keyword juliaConstC Outputdefinition63Enum
+syn keyword juliaConstC Outputdefinition64Enum
+syn keyword juliaConstC Outputdefinition65Enum
+syn keyword juliaConstC Outputdefinition66Enum
+syn keyword juliaConstC Outputdefinition67Enum
+syn keyword juliaConstC Outputdefinition68Enum
+syn keyword juliaConstC Outputdefinition69Enum
+syn keyword juliaConstC Outputdefinition6Enum
+syn keyword juliaConstC Outputdefinition70Enum
+syn keyword juliaConstC Outputdefinition71Enum
+syn keyword juliaConstC Outputdefinition72Enum
+syn keyword juliaConstC Outputdefinition73Enum
+syn keyword juliaConstC Outputdefinition74Enum
+syn keyword juliaConstC Outputdefinition75Enum
+syn keyword juliaConstC Outputdefinition76Enum
+syn keyword juliaConstC Outputdefinition77Enum
+syn keyword juliaConstC Outputdefinition78Enum
+syn keyword juliaConstC Outputdefinition79Enum
+syn keyword juliaConstC Outputdefinition7Enum
+syn keyword juliaConstC Outputdefinition80Enum
+syn keyword juliaConstC Outputdefinition81Enum
+syn keyword juliaConstC Outputdefinition82Enum
+syn keyword juliaConstC Outputdefinition83Enum
+syn keyword juliaConstC Outputdefinition84Enum
+syn keyword juliaConstC Outputdefinition85Enum
+syn keyword juliaConstC Outputdefinition86Enum
+syn keyword juliaConstC Outputdefinition87Enum
+syn keyword juliaConstC Outputdefinition88Enum
+syn keyword juliaConstC Outputdefinition89Enum
+syn keyword juliaConstC Outputdefinition8Enum
+syn keyword juliaConstC Outputdefinition90Enum
+syn keyword juliaConstC Outputdefinition91Enum
+syn keyword juliaConstC Outputdefinition92Enum
+syn keyword juliaConstC Outputdefinition93Enum
+syn keyword juliaConstC Outputdefinition94Enum
+syn keyword juliaConstC Outputdefinition95Enum
+syn keyword juliaConstC Outputdefinition96Enum
+syn keyword juliaConstC Outputdefinition97Enum
+syn keyword juliaConstC Outputdefinition98Enum
+syn keyword juliaConstC Outputdefinition99Enum
+syn keyword juliaConstC Outputdefinition9Enum
+syn keyword juliaConstC Outputdefinition100Enum
+syn keyword juliaConstC InputsENDEnum
+syn keyword juliaConstC AbsoluteEnum
+syn keyword juliaConstC AdaptiveTimesteppingEnum
+syn keyword juliaConstC AdjointBalancethickness2AnalysisEnum
+syn keyword juliaConstC AdjointBalancethicknessAnalysisEnum
+syn keyword juliaConstC AdjointHorizAnalysisEnum
+syn keyword juliaConstC AgeAnalysisEnum
+syn keyword juliaConstC AggressiveMigrationEnum
+syn keyword juliaConstC AmrBamgEnum
+syn keyword juliaConstC AmrNeopzEnum
+syn keyword juliaConstC AndroidFrictionCoefficientEnum
+syn keyword juliaConstC ArrheniusEnum
+syn keyword juliaConstC AutodiffJacobianEnum
+syn keyword juliaConstC Balancethickness2AnalysisEnum
+syn keyword juliaConstC Balancethickness2SolutionEnum
+syn keyword juliaConstC BalancethicknessAnalysisEnum
+syn keyword juliaConstC BalancethicknessApparentMassbalanceEnum
+syn keyword juliaConstC BalancethicknessSoftAnalysisEnum
+syn keyword juliaConstC BalancethicknessSoftSolutionEnum
+syn keyword juliaConstC BalancethicknessSolutionEnum
+syn keyword juliaConstC BalancevelocityAnalysisEnum
+syn keyword juliaConstC BalancevelocitySolutionEnum
+syn keyword juliaConstC BasalforcingsIsmip6Enum
+syn keyword juliaConstC BasalforcingsPicoEnum
+syn keyword juliaConstC BeckmannGoosseFloatingMeltRateEnum
+syn keyword juliaConstC BedSlopeSolutionEnum
+syn keyword juliaConstC BoolExternalResultEnum
+syn keyword juliaConstC BoolInputEnum
+syn keyword juliaConstC IntInputEnum
+syn keyword juliaConstC DoubleInputEnum
+syn keyword juliaConstC BoolParamEnum
+syn keyword juliaConstC BoundaryEnum
+syn keyword juliaConstC BuddJackaEnum
+syn keyword juliaConstC CalvingDev2Enum
+syn keyword juliaConstC CalvingHabEnum
+syn keyword juliaConstC CalvingLevermannEnum
+syn keyword juliaConstC CalvingTestEnum
+syn keyword juliaConstC CalvingParameterizationEnum
+syn keyword juliaConstC CalvingCalvingMIPEnum
+syn keyword juliaConstC CalvingVonmisesEnum
+syn keyword juliaConstC CalvingVonmisesADEnum
+syn keyword juliaConstC CalvingPollardEnum
+syn keyword juliaConstC CfdragcoeffabsgradEnum
+syn keyword juliaConstC CfdragcoeffabsgradtransientEnum
+syn keyword juliaConstC CfrheologybbarabsgradEnum
+syn keyword juliaConstC CfrheologybbarabsgradtransientEnum
+syn keyword juliaConstC CfsurfacelogvelEnum
+syn keyword juliaConstC CfsurfacesquareEnum
+syn keyword juliaConstC CfsurfacesquaretransientEnum
+syn keyword juliaConstC CflevelsetmisfitEnum
+syn keyword juliaConstC ChannelEnum
+syn keyword juliaConstC ChannelAreaEnum
+syn keyword juliaConstC ChannelAreaOldEnum
+syn keyword juliaConstC ChannelDischargeEnum
+syn keyword juliaConstC ClosedEnum
+syn keyword juliaConstC ColinearEnum
+syn keyword juliaConstC ConstraintsEnum
+syn keyword juliaConstC ContactEnum
+syn keyword juliaConstC ContourEnum
+syn keyword juliaConstC ContoursEnum
+syn keyword juliaConstC ControlInputEnum
+syn keyword juliaConstC ControlInputGradEnum
+syn keyword juliaConstC ControlInputMaxsEnum
+syn keyword juliaConstC ControlInputMinsEnum
+syn keyword juliaConstC ControlInputValuesEnum
+syn keyword juliaConstC ControlParamEnum
+syn keyword juliaConstC CrouzeixRaviartEnum
+syn keyword juliaConstC CuffeyEnum
+syn keyword juliaConstC CuffeyTemperateEnum
+syn keyword juliaConstC DamageEvolutionAnalysisEnum
+syn keyword juliaConstC DamageEvolutionSolutionEnum
+syn keyword juliaConstC DataSetEnum
+syn keyword juliaConstC DataSetParamEnum
+syn keyword juliaConstC DatasetInputEnum
+syn keyword juliaConstC DebrisAnalysisEnum
+syn keyword juliaConstC DebrisSolutionEnum
+syn keyword juliaConstC DefaultAnalysisEnum
+syn keyword juliaConstC DefaultCalvingEnum
+syn keyword juliaConstC DenseEnum
+syn keyword juliaConstC DependentObjectEnum
+syn keyword juliaConstC DepthAverageAnalysisEnum
+syn keyword juliaConstC DeviatoricStressErrorEstimatorEnum
+syn keyword juliaConstC DivergenceEnum
+syn keyword juliaConstC Domain3DsurfaceEnum
+syn keyword juliaConstC DoubleArrayInputEnum
+syn keyword juliaConstC ArrayInputEnum
+syn keyword juliaConstC IntArrayInputEnum
+syn keyword juliaConstC DoubleExternalResultEnum
+syn keyword juliaConstC DoubleMatArrayParamEnum
+syn keyword juliaConstC DoubleMatExternalResultEnum
+syn keyword juliaConstC DoubleMatParamEnum
+syn keyword juliaConstC DoubleParamEnum
+syn keyword juliaConstC DoubleVecParamEnum
+syn keyword juliaConstC ElementEnum
+syn keyword juliaConstC ElementHookEnum
+syn keyword juliaConstC ElementSIdEnum
+syn keyword juliaConstC EnthalpyAnalysisEnum
+syn keyword juliaConstC EsaAnalysisEnum
+syn keyword juliaConstC EsaSolutionEnum
+syn keyword juliaConstC EsaTransitionsEnum
+syn keyword juliaConstC ExternalResultEnum
+syn keyword juliaConstC ExtrapolationAnalysisEnum
+syn keyword juliaConstC ExtrudeFromBaseAnalysisEnum
+syn keyword juliaConstC ExtrudeFromTopAnalysisEnum
+syn keyword juliaConstC FSApproximationEnum
+syn keyword juliaConstC FSSolverEnum
+syn keyword juliaConstC FSpressureEnum
+syn keyword juliaConstC FSvelocityEnum
+syn keyword juliaConstC FemModelEnum
+syn keyword juliaConstC FileParamEnum
+syn keyword juliaConstC FixedTimesteppingEnum
+syn keyword juliaConstC FloatingAreaEnum
+syn keyword juliaConstC FloatingAreaScaledEnum
+syn keyword juliaConstC FloatingMeltRateEnum
+syn keyword juliaConstC FreeEnum
+syn keyword juliaConstC FreeSurfaceBaseAnalysisEnum
+syn keyword juliaConstC FreeSurfaceTopAnalysisEnum
+syn keyword juliaConstC FrontalForcingsDefaultEnum
+syn keyword juliaConstC FrontalForcingsRignotEnum
+syn keyword juliaConstC FrontalForcingsRignotarmaEnum
+syn keyword juliaConstC FsetEnum
+syn keyword juliaConstC FullMeltOnPartiallyFloatingEnum
+syn keyword juliaConstC GLheightadvectionAnalysisEnum
+syn keyword juliaConstC GaussPentaEnum
+syn keyword juliaConstC GaussSegEnum
+syn keyword juliaConstC GaussTetraEnum
+syn keyword juliaConstC GaussTriaEnum
+syn keyword juliaConstC GenericOptionEnum
+syn keyword juliaConstC GenericParamEnum
+syn keyword juliaConstC GenericExternalResultEnum
+syn keyword juliaConstC Gradient1Enum
+syn keyword juliaConstC Gradient2Enum
+syn keyword juliaConstC Gradient3Enum
+syn keyword juliaConstC Gradient4Enum
+syn keyword juliaConstC GroundedAreaEnum
+syn keyword juliaConstC GroundedAreaScaledEnum
+syn keyword juliaConstC GroundingOnlyEnum
+syn keyword juliaConstC GroundinglineMassFluxEnum
+syn keyword juliaConstC GsetEnum
+syn keyword juliaConstC GslEnum
+syn keyword juliaConstC HOApproximationEnum
+syn keyword juliaConstC HOFSApproximationEnum
+syn keyword juliaConstC HookEnum
+syn keyword juliaConstC HydrologyArmapwAnalysisEnum
+syn keyword juliaConstC HydrologyarmapwEnum
+syn keyword juliaConstC HydrologyDCEfficientAnalysisEnum
+syn keyword juliaConstC HydrologyDCInefficientAnalysisEnum
+syn keyword juliaConstC HydrologyGlaDSAnalysisEnum
+syn keyword juliaConstC HydrologyGlaDSEnum
+syn keyword juliaConstC HydrologyPismAnalysisEnum
+syn keyword juliaConstC HydrologyShaktiAnalysisEnum
+syn keyword juliaConstC HydrologyShreveAnalysisEnum
+syn keyword juliaConstC HydrologySolutionEnum
+syn keyword juliaConstC HydrologySubstepsEnum
+syn keyword juliaConstC HydrologySubTimeEnum
+syn keyword juliaConstC HydrologydcEnum
+syn keyword juliaConstC HydrologypismEnum
+syn keyword juliaConstC HydrologyshaktiEnum
+syn keyword juliaConstC HydrologyshreveEnum
+syn keyword juliaConstC IceMassEnum
+syn keyword juliaConstC IceMassScaledEnum
+syn keyword juliaConstC IceVolumeAboveFloatationEnum
+syn keyword juliaConstC IceVolumeAboveFloatationScaledEnum
+syn keyword juliaConstC IceVolumeEnum
+syn keyword juliaConstC IceVolumeScaledEnum
+syn keyword juliaConstC IcefrontMassFluxEnum
+syn keyword juliaConstC IcefrontMassFluxLevelsetEnum
+syn keyword juliaConstC IncrementalEnum
+syn keyword juliaConstC IndexedEnum
+syn keyword juliaConstC IntExternalResultEnum
+syn keyword juliaConstC ElementInputEnum
+syn keyword juliaConstC IntMatExternalResultEnum
+syn keyword juliaConstC IntMatParamEnum
+syn keyword juliaConstC IntParamEnum
+syn keyword juliaConstC IntVecParamEnum
+syn keyword juliaConstC InputsEnum
+syn keyword juliaConstC InternalEnum
+syn keyword juliaConstC IntersectEnum
+syn keyword juliaConstC InversionVzObsEnum
+syn keyword juliaConstC JEnum
+syn keyword juliaConstC L1L2ApproximationEnum
+syn keyword juliaConstC MOLHOApproximationEnum
+syn keyword juliaConstC L2ProjectionBaseAnalysisEnum
+syn keyword juliaConstC L2ProjectionEPLAnalysisEnum
+syn keyword juliaConstC LACrouzeixRaviartEnum
+syn keyword juliaConstC LATaylorHoodEnum
+syn keyword juliaConstC LambdaSEnum
+syn keyword juliaConstC LevelsetAnalysisEnum
+syn keyword juliaConstC LevelsetfunctionPicardEnum
+syn keyword juliaConstC LinearFloatingMeltRateEnum
+syn keyword juliaConstC LinearFloatingMeltRatearmaEnum
+syn keyword juliaConstC LliboutryDuvalEnum
+syn keyword juliaConstC LoadsEnum
+syn keyword juliaConstC LoveAnalysisEnum
+syn keyword juliaConstC LoveHfEnum
+syn keyword juliaConstC LoveHtEnum
+syn keyword juliaConstC LoveKernelsImagEnum
+syn keyword juliaConstC LoveKernelsRealEnum
+syn keyword juliaConstC LoveKfEnum
+syn keyword juliaConstC LoveKtEnum
+syn keyword juliaConstC LoveLfEnum
+syn keyword juliaConstC LoveLtEnum
+syn keyword juliaConstC LoveTidalHtEnum
+syn keyword juliaConstC LoveTidalKtEnum
+syn keyword juliaConstC LoveTidalLtEnum
+syn keyword juliaConstC LovePMTF1tEnum
+syn keyword juliaConstC LovePMTF2tEnum
+syn keyword juliaConstC LoveYiEnum
+syn keyword juliaConstC LoveRhsEnum
+syn keyword juliaConstC LoveSolutionEnum
+syn keyword juliaConstC MINIEnum
+syn keyword juliaConstC MINIcondensedEnum
+syn keyword juliaConstC MantlePlumeGeothermalFluxEnum
+syn keyword juliaConstC MassFluxEnum
+syn keyword juliaConstC MassconEnum
+syn keyword juliaConstC MassconaxpbyEnum
+syn keyword juliaConstC MassfluxatgateEnum
+syn keyword juliaConstC MasstransportAnalysisEnum
+syn keyword juliaConstC MasstransportSolutionEnum
+syn keyword juliaConstC MatdamageiceEnum
+syn keyword juliaConstC MatenhancediceEnum
+syn keyword juliaConstC MaterialsEnum
+syn keyword juliaConstC MatestarEnum
+syn keyword juliaConstC MaticeEnum
+syn keyword juliaConstC MatlithoEnum
+syn keyword juliaConstC MathydroEnum
+syn keyword juliaConstC MatrixParamEnum
+syn keyword juliaConstC MaxAbsVxEnum
+syn keyword juliaConstC MaxAbsVyEnum
+syn keyword juliaConstC MaxAbsVzEnum
+syn keyword juliaConstC MaxDivergenceEnum
+syn keyword juliaConstC MaxVelEnum
+syn keyword juliaConstC MaxVxEnum
+syn keyword juliaConstC MaxVyEnum
+syn keyword juliaConstC MaxVzEnum
+syn keyword juliaConstC MelangeEnum
+syn keyword juliaConstC MeltingAnalysisEnum
+syn keyword juliaConstC MeshElementsEnum
+syn keyword juliaConstC MeshXEnum
+syn keyword juliaConstC MeshYEnum
+syn keyword juliaConstC MinVelEnum
+syn keyword juliaConstC MinVxEnum
+syn keyword juliaConstC MinVyEnum
+syn keyword juliaConstC MinVzEnum
+syn keyword juliaConstC MismipFloatingMeltRateEnum
+syn keyword juliaConstC MoulinEnum
+syn keyword juliaConstC MpiDenseEnum
+syn keyword juliaConstC MpiEnum
+syn keyword juliaConstC MpiSparseEnum
+syn keyword juliaConstC MumpsEnum
+syn keyword juliaConstC NoFrictionOnPartiallyFloatingEnum
+syn keyword juliaConstC NoMeltOnPartiallyFloatingEnum
+syn keyword juliaConstC NodalEnum
+syn keyword juliaConstC NodalvalueEnum
+syn keyword juliaConstC NodeSIdEnum
+syn keyword juliaConstC NoneApproximationEnum
+syn keyword juliaConstC NoneEnum
+syn keyword juliaConstC NumberedcostfunctionEnum
+syn keyword juliaConstC NyeCO2Enum
+syn keyword juliaConstC NyeH2OEnum
+syn keyword juliaConstC NumericalfluxEnum
+syn keyword juliaConstC OceantransportAnalysisEnum
+syn keyword juliaConstC OceantransportSolutionEnum
+syn keyword juliaConstC OldGradientEnum
+syn keyword juliaConstC OneLayerP4zEnum
+syn keyword juliaConstC OpenEnum
+syn keyword juliaConstC OptionEnum
+syn keyword juliaConstC ParamEnum
+syn keyword juliaConstC ParametersEnum
+syn keyword juliaConstC P0ArrayEnum
+syn keyword juliaConstC P0DGEnum
+syn keyword juliaConstC P1DGEnum
+syn keyword juliaConstC P1P1Enum
+syn keyword juliaConstC P1P1GLSEnum
+syn keyword juliaConstC P1bubbleEnum
+syn keyword juliaConstC P1bubblecondensedEnum
+syn keyword juliaConstC P1xP2Enum
+syn keyword juliaConstC P1xP3Enum
+syn keyword juliaConstC P1xP4Enum
+syn keyword juliaConstC P2Enum
+syn keyword juliaConstC P2bubbleEnum
+syn keyword juliaConstC P2bubblecondensedEnum
+syn keyword juliaConstC P2xP1Enum
+syn keyword juliaConstC P2xP4Enum
+syn keyword juliaConstC PatersonEnum
+syn keyword juliaConstC PengridEnum
+syn keyword juliaConstC PenpairEnum
+syn keyword juliaConstC PentaEnum
+syn keyword juliaConstC PentaInputEnum
+syn keyword juliaConstC ProfilerEnum
+syn keyword juliaConstC ProfilingCurrentFlopsEnum
+syn keyword juliaConstC ProfilingCurrentMemEnum
+syn keyword juliaConstC ProfilingSolutionTimeEnum
+syn keyword juliaConstC RegionaloutputEnum
+syn keyword juliaConstC RegularEnum
+syn keyword juliaConstC RecoveryAnalysisEnum
+syn keyword juliaConstC RiftfrontEnum
+syn keyword juliaConstC SamplingAnalysisEnum
+syn keyword juliaConstC SamplingSolutionEnum
+syn keyword juliaConstC SIAApproximationEnum
+syn keyword juliaConstC SMBarmaEnum
+syn keyword juliaConstC SMBcomponentsEnum
+syn keyword juliaConstC SMBdebrisEvattEnum
+syn keyword juliaConstC SMBd18opddEnum
+syn keyword juliaConstC SMBforcingEnum
+syn keyword juliaConstC SMBgcmEnum
+syn keyword juliaConstC SMBgembEnum
+syn keyword juliaConstC SMBgradientsEnum
+syn keyword juliaConstC SMBgradientscomponentsEnum
+syn keyword juliaConstC SMBgradientselaEnum
+syn keyword juliaConstC SMBhenningEnum
+syn keyword juliaConstC SMBmeltcomponentsEnum
+syn keyword juliaConstC SMBpddEnum
+syn keyword juliaConstC SMBpddSicopolisEnum
+syn keyword juliaConstC SMBsemicEnum
+syn keyword juliaConstC SSAApproximationEnum
+syn keyword juliaConstC SSAFSApproximationEnum
+syn keyword juliaConstC SSAHOApproximationEnum
+syn keyword juliaConstC ScaledEnum
+syn keyword juliaConstC SealevelAbsoluteEnum
+syn keyword juliaConstC SealevelEmotionEnum
+syn keyword juliaConstC SealevelchangePolarMotionXEnum
+syn keyword juliaConstC SealevelchangePolarMotionYEnum
+syn keyword juliaConstC SealevelchangePolarMotionZEnum
+syn keyword juliaConstC SealevelchangePolarMotionEnum
+syn keyword juliaConstC SealevelNmotionEnum
+syn keyword juliaConstC SealevelUmotionEnum
+syn keyword juliaConstC SealevelchangeAnalysisEnum
+syn keyword juliaConstC SegEnum
+syn keyword juliaConstC SegInputEnum
+syn keyword juliaConstC SegmentEnum
+syn keyword juliaConstC SegmentRiftfrontEnum
+syn keyword juliaConstC SeparateEnum
+syn keyword juliaConstC SeqEnum
+syn keyword juliaConstC SmbAnalysisEnum
+syn keyword juliaConstC SmbSolutionEnum
+syn keyword juliaConstC SmoothAnalysisEnum
+syn keyword juliaConstC SoftMigrationEnum
+syn keyword juliaConstC SpatialLinearFloatingMeltRateEnum
+syn keyword juliaConstC SpcDynamicEnum
+syn keyword juliaConstC SpcStaticEnum
+syn keyword juliaConstC SpcTransientEnum
+syn keyword juliaConstC SsetEnum
+syn keyword juliaConstC StatisticsSolutionEnum
+syn keyword juliaConstC SteadystateSolutionEnum
+syn keyword juliaConstC StressIntensityFactorEnum
+syn keyword juliaConstC StressbalanceAnalysisEnum
+syn keyword juliaConstC StressbalanceConvergenceNumStepsEnum
+syn keyword juliaConstC StressbalanceSIAAnalysisEnum
+syn keyword juliaConstC StressbalanceSolutionEnum
+syn keyword juliaConstC StressbalanceVerticalAnalysisEnum
+syn keyword juliaConstC StringArrayParamEnum
+syn keyword juliaConstC StringExternalResultEnum
+syn keyword juliaConstC StringParamEnum
+syn keyword juliaConstC SubelementFriction1Enum
+syn keyword juliaConstC SubelementFriction2Enum
+syn keyword juliaConstC SubelementMelt1Enum
+syn keyword juliaConstC SubelementMelt2Enum
+syn keyword juliaConstC SubelementMigrationEnum
+syn keyword juliaConstC SurfaceSlopeSolutionEnum
+syn keyword juliaConstC TaylorHoodEnum
+syn keyword juliaConstC TetraEnum
+syn keyword juliaConstC TetraInputEnum
+syn keyword juliaConstC ThermalAnalysisEnum
+syn keyword juliaConstC ThermalSolutionEnum
+syn keyword juliaConstC ThicknessErrorEstimatorEnum
+syn keyword juliaConstC TotalCalvingFluxLevelsetEnum
+syn keyword juliaConstC TotalCalvingMeltingFluxLevelsetEnum
+syn keyword juliaConstC TotalFloatingBmbEnum
+syn keyword juliaConstC TotalFloatingBmbScaledEnum
+syn keyword juliaConstC TotalGroundedBmbEnum
+syn keyword juliaConstC TotalGroundedBmbScaledEnum
+syn keyword juliaConstC TotalSmbEnum
+syn keyword juliaConstC TotalSmbScaledEnum
+syn keyword juliaConstC TotalSmbRefreezeEnum
+syn keyword juliaConstC TotalSmbMeltEnum
+syn keyword juliaConstC TransientArrayParamEnum
+syn keyword juliaConstC TransientInputEnum
+syn keyword juliaConstC TransientParamEnum
+syn keyword juliaConstC TransientSolutionEnum
+syn keyword juliaConstC TriaEnum
+syn keyword juliaConstC TriaInputEnum
+syn keyword juliaConstC UzawaPressureAnalysisEnum
+syn keyword juliaConstC VectorParamEnum
+syn keyword juliaConstC VertexEnum
+syn keyword juliaConstC VertexLIdEnum
+syn keyword juliaConstC VertexPIdEnum
+syn keyword juliaConstC VertexSIdEnum
+syn keyword juliaConstC VerticesEnum
+syn keyword juliaConstC ViscousHeatingEnum
+syn keyword juliaConstC WaterEnum
+syn keyword juliaConstC XTaylorHoodEnum
+syn keyword juliaConstC XYEnum
+syn keyword juliaConstC XYZEnum
+syn keyword juliaConstC BalancethicknessD0Enum
+syn keyword juliaConstC BalancethicknessDiffusionCoefficientEnum
+syn keyword juliaConstC BilinearInterpEnum
+syn keyword juliaConstC CalvingdevCoeffEnum
+syn keyword juliaConstC DeviatoricStressEnum
+syn keyword juliaConstC EtaAbsGradientEnum
+syn keyword juliaConstC MeshZEnum
+syn keyword juliaConstC NearestInterpEnum
+syn keyword juliaConstC OutputdefinitionListEnum
+syn keyword juliaConstC SealevelObsEnum
+syn keyword juliaConstC SealevelWeightsEnum
+syn keyword juliaConstC StrainRateEnum
+syn keyword juliaConstC StressTensorEnum
+syn keyword juliaConstC StressbalanceViscosityOvershootEnum
+syn keyword juliaConstC SubelementMigration4Enum
+syn keyword juliaConstC TimesteppingTimeAdaptEnum
+syn keyword juliaConstC TriangleInterpEnum
+syn keyword juliaConstC MaximumNumberOfDefinitionsEnum
+"ISSM Enums end
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/README
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/README	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/README	(revision 27955)
@@ -0,0 +1,11 @@
+DO NOT MODIFY the following files:
+- StringToEnumx.cpp
+- EnumToStringx.cpp
+all these files are automatically synchronized with EnumDefinitions.h
+
+TO ADD AN ENUM:
+- add the desired, new Enums to EnumDefinitions.h
+- execute `./Synchronize.sh`
+
+NOTE:	Even when Synchronize.sh is run from this directory, ISSM_DIR must be 
+		defined correctly
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/StringToEnumx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/StringToEnumx.cpp	(revision 27955)
@@ -0,0 +1,1846 @@
+/*
+* \file StringToEnumx.cpp:
+* \brief: output enum associated with string
+*
+*   WARNING: DO NOT MODIFY THIS FILE
+*            this file has been automatically generated by Synchronize.sh
+*            Please read README for more information
+*/
+
+#include <cstring>
+#include "./Enum.h"
+#include "../Exceptions/exceptions.h"
+
+int  StringToEnumx(const char* name,bool notfounderror){
+
+   int  stage=1;
+
+   if(stage==1){
+	      if (strcmp(name,"ParametersSTART")==0) return ParametersSTARTEnum;
+	      else if (strcmp(name,"AdolcParam")==0) return AdolcParamEnum;
+	      else if (strcmp(name,"AgeStabilization")==0) return AgeStabilizationEnum;
+	      else if (strcmp(name,"AgeNumRequestedOutputs")==0) return AgeNumRequestedOutputsEnum;
+	      else if (strcmp(name,"AgeRequestedOutputs")==0) return AgeRequestedOutputsEnum;
+	      else if (strcmp(name,"AmrDeviatoricErrorGroupThreshold")==0) return AmrDeviatoricErrorGroupThresholdEnum;
+	      else if (strcmp(name,"AmrDeviatoricErrorMaximum")==0) return AmrDeviatoricErrorMaximumEnum;
+	      else if (strcmp(name,"AmrDeviatoricErrorResolution")==0) return AmrDeviatoricErrorResolutionEnum;
+	      else if (strcmp(name,"AmrDeviatoricErrorThreshold")==0) return AmrDeviatoricErrorThresholdEnum;
+	      else if (strcmp(name,"AmrErr")==0) return AmrErrEnum;
+	      else if (strcmp(name,"AmrField")==0) return AmrFieldEnum;
+	      else if (strcmp(name,"AmrGradation")==0) return AmrGradationEnum;
+	      else if (strcmp(name,"AmrGroundingLineDistance")==0) return AmrGroundingLineDistanceEnum;
+	      else if (strcmp(name,"AmrGroundingLineResolution")==0) return AmrGroundingLineResolutionEnum;
+	      else if (strcmp(name,"AmrHmax")==0) return AmrHmaxEnum;
+	      else if (strcmp(name,"AmrHmin")==0) return AmrHminEnum;
+	      else if (strcmp(name,"AmrIceFrontDistance")==0) return AmrIceFrontDistanceEnum;
+	      else if (strcmp(name,"AmrIceFrontResolution")==0) return AmrIceFrontResolutionEnum;
+	      else if (strcmp(name,"AmrKeepMetric")==0) return AmrKeepMetricEnum;
+	      else if (strcmp(name,"AmrLag")==0) return AmrLagEnum;
+	      else if (strcmp(name,"AmrLevelMax")==0) return AmrLevelMaxEnum;
+	      else if (strcmp(name,"AmrRestart")==0) return AmrRestartEnum;
+	      else if (strcmp(name,"AmrThicknessErrorGroupThreshold")==0) return AmrThicknessErrorGroupThresholdEnum;
+	      else if (strcmp(name,"AmrThicknessErrorMaximum")==0) return AmrThicknessErrorMaximumEnum;
+	      else if (strcmp(name,"AmrThicknessErrorResolution")==0) return AmrThicknessErrorResolutionEnum;
+	      else if (strcmp(name,"AmrThicknessErrorThreshold")==0) return AmrThicknessErrorThresholdEnum;
+	      else if (strcmp(name,"AmrType")==0) return AmrTypeEnum;
+	      else if (strcmp(name,"AnalysisCounter")==0) return AnalysisCounterEnum;
+	      else if (strcmp(name,"AnalysisType")==0) return AnalysisTypeEnum;
+	      else if (strcmp(name,"AugmentedLagrangianR")==0) return AugmentedLagrangianREnum;
+	      else if (strcmp(name,"AugmentedLagrangianRholambda")==0) return AugmentedLagrangianRholambdaEnum;
+	      else if (strcmp(name,"AugmentedLagrangianRhop")==0) return AugmentedLagrangianRhopEnum;
+	      else if (strcmp(name,"AugmentedLagrangianRlambda")==0) return AugmentedLagrangianRlambdaEnum;
+	      else if (strcmp(name,"AugmentedLagrangianTheta")==0) return AugmentedLagrangianThetaEnum;
+	      else if (strcmp(name,"AutodiffCbufsize")==0) return AutodiffCbufsizeEnum;
+	      else if (strcmp(name,"AutodiffDependentObjects")==0) return AutodiffDependentObjectsEnum;
+	      else if (strcmp(name,"AutodiffDriver")==0) return AutodiffDriverEnum;
+	      else if (strcmp(name,"AutodiffFosForwardIndex")==0) return AutodiffFosForwardIndexEnum;
+	      else if (strcmp(name,"AutodiffFosReverseIndex")==0) return AutodiffFosReverseIndexEnum;
+	      else if (strcmp(name,"AutodiffFovForwardIndices")==0) return AutodiffFovForwardIndicesEnum;
+	      else if (strcmp(name,"AutodiffGcTriggerMaxSize")==0) return AutodiffGcTriggerMaxSizeEnum;
+	      else if (strcmp(name,"AutodiffGcTriggerRatio")==0) return AutodiffGcTriggerRatioEnum;
+	      else if (strcmp(name,"AutodiffIsautodiff")==0) return AutodiffIsautodiffEnum;
+	      else if (strcmp(name,"AutodiffLbufsize")==0) return AutodiffLbufsizeEnum;
+	      else if (strcmp(name,"AutodiffNumDependents")==0) return AutodiffNumDependentsEnum;
+	      else if (strcmp(name,"AutodiffNumIndependents")==0) return AutodiffNumIndependentsEnum;
+	      else if (strcmp(name,"AutodiffObufsize")==0) return AutodiffObufsizeEnum;
+	      else if (strcmp(name,"AutodiffTapeAlloc")==0) return AutodiffTapeAllocEnum;
+	      else if (strcmp(name,"AutodiffTbufsize")==0) return AutodiffTbufsizeEnum;
+	      else if (strcmp(name,"AutodiffXp")==0) return AutodiffXpEnum;
+	      else if (strcmp(name,"BalancethicknessStabilization")==0) return BalancethicknessStabilizationEnum;
+	      else if (strcmp(name,"BarystaticContributions")==0) return BarystaticContributionsEnum;
+	      else if (strcmp(name,"BasalforcingsARMATimestep")==0) return BasalforcingsARMATimestepEnum;
+	      else if (strcmp(name,"BasalforcingsARMAarOrder")==0) return BasalforcingsARMAarOrderEnum;
+	      else if (strcmp(name,"BasalforcingsARMAmaOrder")==0) return BasalforcingsARMAmaOrderEnum;
+	      else if (strcmp(name,"BasalforcingsBottomplumedepth")==0) return BasalforcingsBottomplumedepthEnum;
+	      else if (strcmp(name,"BasalforcingsCrustthickness")==0) return BasalforcingsCrustthicknessEnum;
+	      else if (strcmp(name,"BasalforcingsDeepwaterElevation")==0) return BasalforcingsDeepwaterElevationEnum;
+	      else if (strcmp(name,"BasalforcingsDeepwaterMeltingRate")==0) return BasalforcingsDeepwaterMeltingRateEnum;
+	      else if (strcmp(name,"BasalforcingsDtbg")==0) return BasalforcingsDtbgEnum;
+	      else if (strcmp(name,"Basalforcings")==0) return BasalforcingsEnum;
+	      else if (strcmp(name,"BasalforcingsIsmip6AverageTf")==0) return BasalforcingsIsmip6AverageTfEnum;
+	      else if (strcmp(name,"BasalforcingsIsmip6BasinArea")==0) return BasalforcingsIsmip6BasinAreaEnum;
+	      else if (strcmp(name,"BasalforcingsIsmip6DeltaT")==0) return BasalforcingsIsmip6DeltaTEnum;
+	      else if (strcmp(name,"BasalforcingsIsmip6Gamma0")==0) return BasalforcingsIsmip6Gamma0Enum;
+	      else if (strcmp(name,"BasalforcingsIsmip6IsLocal")==0) return BasalforcingsIsmip6IsLocalEnum;
+	      else if (strcmp(name,"BasalforcingsIsmip6NumBasins")==0) return BasalforcingsIsmip6NumBasinsEnum;
+	      else if (strcmp(name,"BasalforcingsIsmip6TfDepths")==0) return BasalforcingsIsmip6TfDepthsEnum;
+	      else if (strcmp(name,"BasalforcingsLinearNumBasins")==0) return BasalforcingsLinearNumBasinsEnum;
+	      else if (strcmp(name,"BasalforcingsLinearNumBreaks")==0) return BasalforcingsLinearNumBreaksEnum;
+	      else if (strcmp(name,"BasalforcingsLinearNumParams")==0) return BasalforcingsLinearNumParamsEnum;
+	      else if (strcmp(name,"BasalforcingsMantleconductivity")==0) return BasalforcingsMantleconductivityEnum;
+	      else if (strcmp(name,"BasalforcingsNusselt")==0) return BasalforcingsNusseltEnum;
+	      else if (strcmp(name,"BasalforcingsARMAarlagcoefs")==0) return BasalforcingsARMAarlagcoefsEnum;
+	      else if (strcmp(name,"BasalforcingsARMAdatebreaks")==0) return BasalforcingsARMAdatebreaksEnum;
+	      else if (strcmp(name,"BasalforcingsARMAmalagcoefs")==0) return BasalforcingsARMAmalagcoefsEnum;
+	      else if (strcmp(name,"BasalforcingsARMApolyparams")==0) return BasalforcingsARMApolyparamsEnum;
+	      else if (strcmp(name,"BasalforcingsIsThermalForcing")==0) return BasalforcingsIsThermalForcingEnum;
+	      else if (strcmp(name,"BasalforcingsLowercrustheat")==0) return BasalforcingsLowercrustheatEnum;
+	      else if (strcmp(name,"BasalforcingsPicoAverageOverturning")==0) return BasalforcingsPicoAverageOverturningEnum;
+	      else if (strcmp(name,"BasalforcingsPicoAverageSalinity")==0) return BasalforcingsPicoAverageSalinityEnum;
+	      else if (strcmp(name,"BasalforcingsPicoAverageTemperature")==0) return BasalforcingsPicoAverageTemperatureEnum;
+	      else if (strcmp(name,"BasalforcingsPicoBoxArea")==0) return BasalforcingsPicoBoxAreaEnum;
+	      else if (strcmp(name,"BasalforcingsPicoFarOceansalinity")==0) return BasalforcingsPicoFarOceansalinityEnum;
+	      else if (strcmp(name,"BasalforcingsPicoFarOceantemperature")==0) return BasalforcingsPicoFarOceantemperatureEnum;
+	      else if (strcmp(name,"BasalforcingsPicoGammaT")==0) return BasalforcingsPicoGammaTEnum;
+	      else if (strcmp(name,"BasalforcingsPicoIsplume")==0) return BasalforcingsPicoIsplumeEnum;
+	      else if (strcmp(name,"BasalforcingsPicoMaxboxcount")==0) return BasalforcingsPicoMaxboxcountEnum;
+	      else if (strcmp(name,"BasalforcingsPicoNumBasins")==0) return BasalforcingsPicoNumBasinsEnum;
+	      else if (strcmp(name,"BasalforcingsPlumeradius")==0) return BasalforcingsPlumeradiusEnum;
+	      else if (strcmp(name,"BasalforcingsPlumex")==0) return BasalforcingsPlumexEnum;
+	      else if (strcmp(name,"BasalforcingsPlumey")==0) return BasalforcingsPlumeyEnum;
+	      else if (strcmp(name,"BasalforcingsThresholdThickness")==0) return BasalforcingsThresholdThicknessEnum;
+	      else if (strcmp(name,"BasalforcingsTopplumedepth")==0) return BasalforcingsTopplumedepthEnum;
+	      else if (strcmp(name,"BasalforcingsUppercrustheat")==0) return BasalforcingsUppercrustheatEnum;
+	      else if (strcmp(name,"BasalforcingsUppercrustthickness")==0) return BasalforcingsUppercrustthicknessEnum;
+	      else if (strcmp(name,"BasalforcingsUpperdepthMelt")==0) return BasalforcingsUpperdepthMeltEnum;
+	      else if (strcmp(name,"BasalforcingsUpperwaterElevation")==0) return BasalforcingsUpperwaterElevationEnum;
+	      else if (strcmp(name,"BasalforcingsUpperwaterMeltingRate")==0) return BasalforcingsUpperwaterMeltingRateEnum;
+	      else if (strcmp(name,"CalvingADStressThresholdFloatingice")==0) return CalvingADStressThresholdFloatingiceEnum;
+	      else if (strcmp(name,"CalvingADStressThresholdGroundedice")==0) return CalvingADStressThresholdGroundediceEnum;
+	      else if (strcmp(name,"CalvingCrevasseDepth")==0) return CalvingCrevasseDepthEnum;
+	      else if (strcmp(name,"CalvingCrevasseThreshold")==0) return CalvingCrevasseThresholdEnum;
+	      else if (strcmp(name,"CalvingHeightAboveFloatation")==0) return CalvingHeightAboveFloatationEnum;
+	      else if (strcmp(name,"CalvingLaw")==0) return CalvingLawEnum;
+	      else if (strcmp(name,"CalvingMinthickness")==0) return CalvingMinthicknessEnum;
+	      else if (strcmp(name,"CalvingTestSpeedfactor")==0) return CalvingTestSpeedfactorEnum;
+	      else if (strcmp(name,"CalvingTestIndependentRate")==0) return CalvingTestIndependentRateEnum;
+	      else if (strcmp(name,"CalvingUseParam")==0) return CalvingUseParamEnum;
+	      else if (strcmp(name,"CalvingTheta")==0) return CalvingThetaEnum;
+	      else if (strcmp(name,"CalvingAlpha")==0) return CalvingAlphaEnum;
+	      else if (strcmp(name,"CalvingXoffset")==0) return CalvingXoffsetEnum;
+	      else if (strcmp(name,"CalvingYoffset")==0) return CalvingYoffsetEnum;
+	      else if (strcmp(name,"CalvingVelLowerbound")==0) return CalvingVelLowerboundEnum;
+	      else if (strcmp(name,"CalvingVelMax")==0) return CalvingVelMaxEnum;
+	      else if (strcmp(name,"CalvingVelThreshold")==0) return CalvingVelThresholdEnum;
+	      else if (strcmp(name,"CalvingVelUpperbound")==0) return CalvingVelUpperboundEnum;
+	      else if (strcmp(name,"CalvingRc")==0) return CalvingRcEnum;
+	      else if (strcmp(name,"CalvingNumberofBasins")==0) return CalvingNumberofBasinsEnum;
+	      else if (strcmp(name,"ConfigurationType")==0) return ConfigurationTypeEnum;
+         else stage=2;
+   }
+   if(stage==2){
+	      if (strcmp(name,"ConstantsG")==0) return ConstantsGEnum;
+	      else if (strcmp(name,"ConstantsNewtonGravity")==0) return ConstantsNewtonGravityEnum;
+	      else if (strcmp(name,"ConstantsReferencetemperature")==0) return ConstantsReferencetemperatureEnum;
+	      else if (strcmp(name,"ConstantsYts")==0) return ConstantsYtsEnum;
+	      else if (strcmp(name,"ControlInputSizeM")==0) return ControlInputSizeMEnum;
+	      else if (strcmp(name,"ControlInputSizeN")==0) return ControlInputSizeNEnum;
+	      else if (strcmp(name,"ControlInputInterpolation")==0) return ControlInputInterpolationEnum;
+	      else if (strcmp(name,"CumBslc")==0) return CumBslcEnum;
+	      else if (strcmp(name,"CumBslcIce")==0) return CumBslcIceEnum;
+	      else if (strcmp(name,"CumBslcHydro")==0) return CumBslcHydroEnum;
+	      else if (strcmp(name,"CumBslcOcean")==0) return CumBslcOceanEnum;
+	      else if (strcmp(name,"CumBslcIcePartition")==0) return CumBslcIcePartitionEnum;
+	      else if (strcmp(name,"CumBslcHydroPartition")==0) return CumBslcHydroPartitionEnum;
+	      else if (strcmp(name,"CumBslcOceanPartition")==0) return CumBslcOceanPartitionEnum;
+	      else if (strcmp(name,"CumGmtslc")==0) return CumGmtslcEnum;
+	      else if (strcmp(name,"CumGmslc")==0) return CumGmslcEnum;
+	      else if (strcmp(name,"DamageC1")==0) return DamageC1Enum;
+	      else if (strcmp(name,"DamageC2")==0) return DamageC2Enum;
+	      else if (strcmp(name,"DamageC3")==0) return DamageC3Enum;
+	      else if (strcmp(name,"DamageC4")==0) return DamageC4Enum;
+	      else if (strcmp(name,"Damage")==0) return DamageEnum;
+	      else if (strcmp(name,"DamageEquivStress")==0) return DamageEquivStressEnum;
+	      else if (strcmp(name,"DamageEvolutionNumRequestedOutputs")==0) return DamageEvolutionNumRequestedOutputsEnum;
+	      else if (strcmp(name,"DamageEvolutionRequestedOutputs")==0) return DamageEvolutionRequestedOutputsEnum;
+	      else if (strcmp(name,"DamageHealing")==0) return DamageHealingEnum;
+	      else if (strcmp(name,"DamageKappa")==0) return DamageKappaEnum;
+	      else if (strcmp(name,"DamageLaw")==0) return DamageLawEnum;
+	      else if (strcmp(name,"DamageMaxDamage")==0) return DamageMaxDamageEnum;
+	      else if (strcmp(name,"DamageStabilization")==0) return DamageStabilizationEnum;
+	      else if (strcmp(name,"DamageStressThreshold")==0) return DamageStressThresholdEnum;
+	      else if (strcmp(name,"DamageStressUBound")==0) return DamageStressUBoundEnum;
+	      else if (strcmp(name,"DebrisMinThickness")==0) return DebrisMinThicknessEnum;
+	      else if (strcmp(name,"DebrisNumRequestedOutputs")==0) return DebrisNumRequestedOutputsEnum;
+	      else if (strcmp(name,"DebrisPenaltyFactor")==0) return DebrisPenaltyFactorEnum;
+	      else if (strcmp(name,"DebrisRequestedOutputs")==0) return DebrisRequestedOutputsEnum;
+	      else if (strcmp(name,"DebrisStabilization")==0) return DebrisStabilizationEnum;
+	      else if (strcmp(name,"DebrisRemovalmodel")==0) return DebrisRemovalmodelEnum;
+	      else if (strcmp(name,"DebrisDisplacementmodel")==0) return DebrisDisplacementmodelEnum;
+	      else if (strcmp(name,"DebrisRemovalSlopeThreshold")==0) return DebrisRemovalSlopeThresholdEnum;
+	      else if (strcmp(name,"DebrisRemovalStressThreshold")==0) return DebrisRemovalStressThresholdEnum;
+	      else if (strcmp(name,"DebrisPackingFraction")==0) return DebrisPackingFractionEnum;
+	      else if (strcmp(name,"DebugProfiling")==0) return DebugProfilingEnum;
+	      else if (strcmp(name,"DomainDimension")==0) return DomainDimensionEnum;
+	      else if (strcmp(name,"DomainType")==0) return DomainTypeEnum;
+	      else if (strcmp(name,"DslModel")==0) return DslModelEnum;
+	      else if (strcmp(name,"DslModelid")==0) return DslModelidEnum;
+	      else if (strcmp(name,"DslNummodels")==0) return DslNummodelsEnum;
+	      else if (strcmp(name,"SolidearthIsExternal")==0) return SolidearthIsExternalEnum;
+	      else if (strcmp(name,"SolidearthExternalNature")==0) return SolidearthExternalNatureEnum;
+	      else if (strcmp(name,"SolidearthExternalModelid")==0) return SolidearthExternalModelidEnum;
+	      else if (strcmp(name,"SolidearthExternalNummodels")==0) return SolidearthExternalNummodelsEnum;
+	      else if (strcmp(name,"SolidearthSettingsComputeBpGrd")==0) return SolidearthSettingsComputeBpGrdEnum;
+	      else if (strcmp(name,"EarthId")==0) return EarthIdEnum;
+	      else if (strcmp(name,"Elastic")==0) return ElasticEnum;
+	      else if (strcmp(name,"EplZigZagCounter")==0) return EplZigZagCounterEnum;
+	      else if (strcmp(name,"EsaHElastic")==0) return EsaHElasticEnum;
+	      else if (strcmp(name,"EsaHemisphere")==0) return EsaHemisphereEnum;
+	      else if (strcmp(name,"EsaRequestedOutputs")==0) return EsaRequestedOutputsEnum;
+	      else if (strcmp(name,"EsaUElastic")==0) return EsaUElasticEnum;
+	      else if (strcmp(name,"ExtrapolationVariable")==0) return ExtrapolationVariableEnum;
+	      else if (strcmp(name,"FemModelComm")==0) return FemModelCommEnum;
+	      else if (strcmp(name,"Fields")==0) return FieldsEnum;
+	      else if (strcmp(name,"FlowequationFeFS")==0) return FlowequationFeFSEnum;
+	      else if (strcmp(name,"FlowequationIsFS")==0) return FlowequationIsFSEnum;
+	      else if (strcmp(name,"FlowequationIsHO")==0) return FlowequationIsHOEnum;
+	      else if (strcmp(name,"FlowequationIsL1L2")==0) return FlowequationIsL1L2Enum;
+	      else if (strcmp(name,"FlowequationIsMOLHO")==0) return FlowequationIsMOLHOEnum;
+	      else if (strcmp(name,"FlowequationIsSIA")==0) return FlowequationIsSIAEnum;
+	      else if (strcmp(name,"FlowequationIsSSA")==0) return FlowequationIsSSAEnum;
+	      else if (strcmp(name,"FlowequationIsNitsche")==0) return FlowequationIsNitscheEnum;
+	      else if (strcmp(name,"FeFSNitscheGamma")==0) return FeFSNitscheGammaEnum;
+	      else if (strcmp(name,"FrictionCoupling")==0) return FrictionCouplingEnum;
+	      else if (strcmp(name,"FrictionDelta")==0) return FrictionDeltaEnum;
+	      else if (strcmp(name,"FrictionEffectivePressureLimit")==0) return FrictionEffectivePressureLimitEnum;
+	      else if (strcmp(name,"FrictionF")==0) return FrictionFEnum;
+	      else if (strcmp(name,"FrictionGamma")==0) return FrictionGammaEnum;
+	      else if (strcmp(name,"FrictionLaw")==0) return FrictionLawEnum;
+	      else if (strcmp(name,"FrictionLinearize")==0) return FrictionLinearizeEnum;
+	      else if (strcmp(name,"FrictionPseudoplasticityExponent")==0) return FrictionPseudoplasticityExponentEnum;
+	      else if (strcmp(name,"FrictionU0")==0) return FrictionU0Enum;
+	      else if (strcmp(name,"FrictionThresholdSpeed")==0) return FrictionThresholdSpeedEnum;
+	      else if (strcmp(name,"FrictionVoidRatio")==0) return FrictionVoidRatioEnum;
+	      else if (strcmp(name,"FrontalForcingsBasinIcefrontArea")==0) return FrontalForcingsBasinIcefrontAreaEnum;
+	      else if (strcmp(name,"FrontalForcingsARMATimestep")==0) return FrontalForcingsARMATimestepEnum;
+	      else if (strcmp(name,"FrontalForcingsARMAarOrder")==0) return FrontalForcingsARMAarOrderEnum;
+	      else if (strcmp(name,"FrontalForcingsARMAmaOrder")==0) return FrontalForcingsARMAmaOrderEnum;
+	      else if (strcmp(name,"FrontalForcingsARMAdatebreaks")==0) return FrontalForcingsARMAdatebreaksEnum;
+	      else if (strcmp(name,"FrontalForcingsARMAmonthdatebreaks")==0) return FrontalForcingsARMAmonthdatebreaksEnum;
+	      else if (strcmp(name,"FrontalForcingsARMAmonthintercepts")==0) return FrontalForcingsARMAmonthinterceptsEnum;
+	      else if (strcmp(name,"FrontalForcingsARMAmonthtrends")==0) return FrontalForcingsARMAmonthtrendsEnum;
+	      else if (strcmp(name,"FrontalForcingsARMApolyparams")==0) return FrontalForcingsARMApolyparamsEnum;
+	      else if (strcmp(name,"FrontalForcingsIsDischargeARMA")==0) return FrontalForcingsIsDischargeARMAEnum;
+	      else if (strcmp(name,"FrontalForcingsNumberofBasins")==0) return FrontalForcingsNumberofBasinsEnum;
+	      else if (strcmp(name,"FrontalForcingsNumberofBreaks")==0) return FrontalForcingsNumberofBreaksEnum;
+	      else if (strcmp(name,"FrontalForcingsNumberofMonthBreaks")==0) return FrontalForcingsNumberofMonthBreaksEnum;
+	      else if (strcmp(name,"FrontalForcingsNumberofParams")==0) return FrontalForcingsNumberofParamsEnum;
+	      else if (strcmp(name,"FrontalForcingsParam")==0) return FrontalForcingsParamEnum;
+	      else if (strcmp(name,"FrontalForcingsARMAarlagcoefs")==0) return FrontalForcingsARMAarlagcoefsEnum;
+	      else if (strcmp(name,"FrontalForcingsARMAmalagcoefs")==0) return FrontalForcingsARMAmalagcoefsEnum;
+	      else if (strcmp(name,"FrontalForcingsSdarlagcoefs")==0) return FrontalForcingsSdarlagcoefsEnum;
+	      else if (strcmp(name,"FrontalForcingsSdARMATimestep")==0) return FrontalForcingsSdARMATimestepEnum;
+	      else if (strcmp(name,"FrontalForcingsSdarOrder")==0) return FrontalForcingsSdarOrderEnum;
+	      else if (strcmp(name,"FrontalForcingsSddatebreaks")==0) return FrontalForcingsSddatebreaksEnum;
+	      else if (strcmp(name,"FrontalForcingsSdmalagcoefs")==0) return FrontalForcingsSdmalagcoefsEnum;
+	      else if (strcmp(name,"FrontalForcingsSdmaOrder")==0) return FrontalForcingsSdmaOrderEnum;
+	      else if (strcmp(name,"FrontalForcingsSdMonthlyFrac")==0) return FrontalForcingsSdMonthlyFracEnum;
+	      else if (strcmp(name,"FrontalForcingsSdNumberofBreaks")==0) return FrontalForcingsSdNumberofBreaksEnum;
+	      else if (strcmp(name,"FrontalForcingsSdNumberofParams")==0) return FrontalForcingsSdNumberofParamsEnum;
+	      else if (strcmp(name,"FrontalForcingsSdpolyparams")==0) return FrontalForcingsSdpolyparamsEnum;
+	      else if (strcmp(name,"GrdModel")==0) return GrdModelEnum;
+	      else if (strcmp(name,"GroundinglineFrictionInterpolation")==0) return GroundinglineFrictionInterpolationEnum;
+	      else if (strcmp(name,"GroundinglineMeltInterpolation")==0) return GroundinglineMeltInterpolationEnum;
+	      else if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum;
+	      else if (strcmp(name,"GroundinglineNumRequestedOutputs")==0) return GroundinglineNumRequestedOutputsEnum;
+	      else if (strcmp(name,"GroundinglineRequestedOutputs")==0) return GroundinglineRequestedOutputsEnum;
+	      else if (strcmp(name,"HydrologyarmaarOrder")==0) return HydrologyarmaarOrderEnum;
+	      else if (strcmp(name,"Hydrologyarmaarlagcoefs")==0) return HydrologyarmaarlagcoefsEnum;
+	      else if (strcmp(name,"Hydrologyarmadatebreaks")==0) return HydrologyarmadatebreaksEnum;
+	      else if (strcmp(name,"Hydrologyarmamalagcoefs")==0) return HydrologyarmamalagcoefsEnum;
+	      else if (strcmp(name,"HydrologyarmamaOrder")==0) return HydrologyarmamaOrderEnum;
+         else stage=3;
+   }
+   if(stage==3){
+	      if (strcmp(name,"HydrologyarmaMonthlyFactors")==0) return HydrologyarmaMonthlyFactorsEnum;
+	      else if (strcmp(name,"HydrologyarmaNumBreaks")==0) return HydrologyarmaNumBreaksEnum;
+	      else if (strcmp(name,"HydrologyarmaNumParams")==0) return HydrologyarmaNumParamsEnum;
+	      else if (strcmp(name,"Hydrologyarmapolyparams")==0) return HydrologyarmapolyparamsEnum;
+	      else if (strcmp(name,"HydrologyarmaTimestep")==0) return HydrologyarmaTimestepEnum;
+	      else if (strcmp(name,"HydrologyAveraging")==0) return HydrologyAveragingEnum;
+	      else if (strcmp(name,"HydrologyChannelAlpha")==0) return HydrologyChannelAlphaEnum;
+	      else if (strcmp(name,"HydrologyChannelBeta")==0) return HydrologyChannelBetaEnum;
+	      else if (strcmp(name,"HydrologyCavitySpacing")==0) return HydrologyCavitySpacingEnum;
+	      else if (strcmp(name,"HydrologyChannelSheetWidth")==0) return HydrologyChannelSheetWidthEnum;
+	      else if (strcmp(name,"HydrologyEnglacialVoidRatio")==0) return HydrologyEnglacialVoidRatioEnum;
+	      else if (strcmp(name,"HydrologyIschannels")==0) return HydrologyIschannelsEnum;
+	      else if (strcmp(name,"HydrologyIsTransition")==0) return HydrologyIsTransitionEnum;
+	      else if (strcmp(name,"HydrologyIsWaterPressureArma")==0) return HydrologyIsWaterPressureArmaEnum;
+	      else if (strcmp(name,"HydrologyMeltFlag")==0) return HydrologyMeltFlagEnum;
+	      else if (strcmp(name,"HydrologyModel")==0) return HydrologyModelEnum;
+	      else if (strcmp(name,"HydrologyNumBasins")==0) return HydrologyNumBasinsEnum;
+	      else if (strcmp(name,"HydrologyNumRequestedOutputs")==0) return HydrologyNumRequestedOutputsEnum;
+	      else if (strcmp(name,"HydrologyOmega")==0) return HydrologyOmegaEnum;
+	      else if (strcmp(name,"HydrologyPressureMeltCoefficient")==0) return HydrologyPressureMeltCoefficientEnum;
+	      else if (strcmp(name,"HydrologyRelaxation")==0) return HydrologyRelaxationEnum;
+	      else if (strcmp(name,"HydrologyRequestedOutputs")==0) return HydrologyRequestedOutputsEnum;
+	      else if (strcmp(name,"HydrologySedimentKmax")==0) return HydrologySedimentKmaxEnum;
+	      else if (strcmp(name,"HydrologySheetAlpha")==0) return HydrologySheetAlphaEnum;
+	      else if (strcmp(name,"HydrologySheetBeta")==0) return HydrologySheetBetaEnum;
+	      else if (strcmp(name,"HydrologyStepsPerStep")==0) return HydrologyStepsPerStepEnum;
+	      else if (strcmp(name,"HydrologyStorage")==0) return HydrologyStorageEnum;
+	      else if (strcmp(name,"HydrologydcEplColapseThickness")==0) return HydrologydcEplColapseThicknessEnum;
+	      else if (strcmp(name,"HydrologydcEplConductivity")==0) return HydrologydcEplConductivityEnum;
+	      else if (strcmp(name,"HydrologydcEplInitialThickness")==0) return HydrologydcEplInitialThicknessEnum;
+	      else if (strcmp(name,"HydrologydcEplLayerCompressibility")==0) return HydrologydcEplLayerCompressibilityEnum;
+	      else if (strcmp(name,"HydrologydcEplMaxThickness")==0) return HydrologydcEplMaxThicknessEnum;
+	      else if (strcmp(name,"HydrologydcEplPoreWaterMass")==0) return HydrologydcEplPoreWaterMassEnum;
+	      else if (strcmp(name,"HydrologydcEplThickComp")==0) return HydrologydcEplThickCompEnum;
+	      else if (strcmp(name,"HydrologydcEplflipLock")==0) return HydrologydcEplflipLockEnum;
+	      else if (strcmp(name,"HydrologydcIsefficientlayer")==0) return HydrologydcIsefficientlayerEnum;
+	      else if (strcmp(name,"HydrologydcLeakageFactor")==0) return HydrologydcLeakageFactorEnum;
+	      else if (strcmp(name,"HydrologydcMaxIter")==0) return HydrologydcMaxIterEnum;
+	      else if (strcmp(name,"HydrologydcPenaltyFactor")==0) return HydrologydcPenaltyFactorEnum;
+	      else if (strcmp(name,"HydrologydcPenaltyLock")==0) return HydrologydcPenaltyLockEnum;
+	      else if (strcmp(name,"HydrologydcRelTol")==0) return HydrologydcRelTolEnum;
+	      else if (strcmp(name,"HydrologydcSedimentlimit")==0) return HydrologydcSedimentlimitEnum;
+	      else if (strcmp(name,"HydrologydcSedimentlimitFlag")==0) return HydrologydcSedimentlimitFlagEnum;
+	      else if (strcmp(name,"HydrologydcSedimentLayerCompressibility")==0) return HydrologydcSedimentLayerCompressibilityEnum;
+	      else if (strcmp(name,"HydrologydcSedimentPoreWaterMass")==0) return HydrologydcSedimentPoreWaterMassEnum;
+	      else if (strcmp(name,"HydrologydcSedimentPorosity")==0) return HydrologydcSedimentPorosityEnum;
+	      else if (strcmp(name,"HydrologydcSedimentThickness")==0) return HydrologydcSedimentThicknessEnum;
+	      else if (strcmp(name,"HydrologyStepAdapt")==0) return HydrologyStepAdaptEnum;
+	      else if (strcmp(name,"HydrologydcTransferFlag")==0) return HydrologydcTransferFlagEnum;
+	      else if (strcmp(name,"HydrologydcUnconfinedFlag")==0) return HydrologydcUnconfinedFlagEnum;
+	      else if (strcmp(name,"HydrologyshreveStabilization")==0) return HydrologyshreveStabilizationEnum;
+	      else if (strcmp(name,"IcecapToEarthComm")==0) return IcecapToEarthCommEnum;
+	      else if (strcmp(name,"Index")==0) return IndexEnum;
+	      else if (strcmp(name,"InputFileName")==0) return InputFileNameEnum;
+	      else if (strcmp(name,"DirectoryName")==0) return DirectoryNameEnum;
+	      else if (strcmp(name,"Indices")==0) return IndicesEnum;
+	      else if (strcmp(name,"InputToDepthaverageIn")==0) return InputToDepthaverageInEnum;
+	      else if (strcmp(name,"InputToDepthaverageOut")==0) return InputToDepthaverageOutEnum;
+	      else if (strcmp(name,"InputToExtrude")==0) return InputToExtrudeEnum;
+	      else if (strcmp(name,"InputToL2Project")==0) return InputToL2ProjectEnum;
+	      else if (strcmp(name,"InputToSmooth")==0) return InputToSmoothEnum;
+	      else if (strcmp(name,"InversionAlgorithm")==0) return InversionAlgorithmEnum;
+	      else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum;
+	      else if (strcmp(name,"InversionControlScalingFactors")==0) return InversionControlScalingFactorsEnum;
+	      else if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum;
+	      else if (strcmp(name,"InversionDxmin")==0) return InversionDxminEnum;
+	      else if (strcmp(name,"InversionDfminFrac")==0) return InversionDfminFracEnum;
+	      else if (strcmp(name,"InversionGatol")==0) return InversionGatolEnum;
+	      else if (strcmp(name,"InversionGradientScaling")==0) return InversionGradientScalingEnum;
+	      else if (strcmp(name,"InversionGrtol")==0) return InversionGrtolEnum;
+	      else if (strcmp(name,"InversionGttol")==0) return InversionGttolEnum;
+	      else if (strcmp(name,"InversionIncompleteAdjoint")==0) return InversionIncompleteAdjointEnum;
+	      else if (strcmp(name,"InversionIscontrol")==0) return InversionIscontrolEnum;
+	      else if (strcmp(name,"InversionMaxiter")==0) return InversionMaxiterEnum;
+	      else if (strcmp(name,"InversionMaxiterPerStep")==0) return InversionMaxiterPerStepEnum;
+	      else if (strcmp(name,"InversionMaxsteps")==0) return InversionMaxstepsEnum;
+	      else if (strcmp(name,"InversionNsteps")==0) return InversionNstepsEnum;
+	      else if (strcmp(name,"InversionNumControlParameters")==0) return InversionNumControlParametersEnum;
+	      else if (strcmp(name,"InversionNumCostFunctions")==0) return InversionNumCostFunctionsEnum;
+	      else if (strcmp(name,"InversionStepThreshold")==0) return InversionStepThresholdEnum;
+	      else if (strcmp(name,"InversionStopFlag")==0) return InversionStopFlagEnum;
+	      else if (strcmp(name,"InversionType")==0) return InversionTypeEnum;
+	      else if (strcmp(name,"Ivins")==0) return IvinsEnum;
+	      else if (strcmp(name,"IsSlcCoupling")==0) return IsSlcCouplingEnum;
+	      else if (strcmp(name,"LevelsetKillIcebergs")==0) return LevelsetKillIcebergsEnum;
+	      else if (strcmp(name,"LevelsetReinitFrequency")==0) return LevelsetReinitFrequencyEnum;
+	      else if (strcmp(name,"LevelsetStabilization")==0) return LevelsetStabilizationEnum;
+	      else if (strcmp(name,"LockFileName")==0) return LockFileNameEnum;
+	      else if (strcmp(name,"LoveAllowLayerDeletion")==0) return LoveAllowLayerDeletionEnum;
+	      else if (strcmp(name,"LoveChandlerWobble")==0) return LoveChandlerWobbleEnum;
+	      else if (strcmp(name,"LoveCoreMantleBoundary")==0) return LoveCoreMantleBoundaryEnum;
+	      else if (strcmp(name,"LoveEarthMass")==0) return LoveEarthMassEnum;
+	      else if (strcmp(name,"LoveForcingType")==0) return LoveForcingTypeEnum;
+	      else if (strcmp(name,"LoveFrequencies")==0) return LoveFrequenciesEnum;
+	      else if (strcmp(name,"LoveIsTemporal")==0) return LoveIsTemporalEnum;
+	      else if (strcmp(name,"LoveG0")==0) return LoveG0Enum;
+	      else if (strcmp(name,"LoveGravitationalConstant")==0) return LoveGravitationalConstantEnum;
+	      else if (strcmp(name,"LoveInnerCoreBoundary")==0) return LoveInnerCoreBoundaryEnum;
+	      else if (strcmp(name,"LoveComplexComputation")==0) return LoveComplexComputationEnum;
+	      else if (strcmp(name,"LoveQuadPrecision")==0) return LoveQuadPrecisionEnum;
+	      else if (strcmp(name,"LoveIntStepsPerLayer")==0) return LoveIntStepsPerLayerEnum;
+	      else if (strcmp(name,"LoveMinIntegrationSteps")==0) return LoveMinIntegrationStepsEnum;
+	      else if (strcmp(name,"LoveMaxIntegrationdr")==0) return LoveMaxIntegrationdrEnum;
+	      else if (strcmp(name,"LoveIntegrationScheme")==0) return LoveIntegrationSchemeEnum;
+	      else if (strcmp(name,"LoveKernels")==0) return LoveKernelsEnum;
+	      else if (strcmp(name,"LoveMu0")==0) return LoveMu0Enum;
+	      else if (strcmp(name,"LoveNfreq")==0) return LoveNfreqEnum;
+	      else if (strcmp(name,"LoveNTemporalIterations")==0) return LoveNTemporalIterationsEnum;
+	      else if (strcmp(name,"LoveNYiEquations")==0) return LoveNYiEquationsEnum;
+	      else if (strcmp(name,"LoveR0")==0) return LoveR0Enum;
+	      else if (strcmp(name,"LoveShNmax")==0) return LoveShNmaxEnum;
+	      else if (strcmp(name,"LoveShNmin")==0) return LoveShNminEnum;
+	      else if (strcmp(name,"LoveStartingLayer")==0) return LoveStartingLayerEnum;
+	      else if (strcmp(name,"LoveUnderflowTol")==0) return LoveUnderflowTolEnum;
+	      else if (strcmp(name,"LovePostWidderThreshold")==0) return LovePostWidderThresholdEnum;
+	      else if (strcmp(name,"LoveDebug")==0) return LoveDebugEnum;
+	      else if (strcmp(name,"LoveHypergeomNZ")==0) return LoveHypergeomNZEnum;
+	      else if (strcmp(name,"LoveHypergeomNAlpha")==0) return LoveHypergeomNAlphaEnum;
+	      else if (strcmp(name,"MassFluxSegments")==0) return MassFluxSegmentsEnum;
+	      else if (strcmp(name,"MassFluxSegmentsPresent")==0) return MassFluxSegmentsPresentEnum;
+         else stage=4;
+   }
+   if(stage==4){
+	      if (strcmp(name,"MasstransportHydrostaticAdjustment")==0) return MasstransportHydrostaticAdjustmentEnum;
+	      else if (strcmp(name,"MasstransportIsfreesurface")==0) return MasstransportIsfreesurfaceEnum;
+	      else if (strcmp(name,"MasstransportMinThickness")==0) return MasstransportMinThicknessEnum;
+	      else if (strcmp(name,"MasstransportNumRequestedOutputs")==0) return MasstransportNumRequestedOutputsEnum;
+	      else if (strcmp(name,"MasstransportPenaltyFactor")==0) return MasstransportPenaltyFactorEnum;
+	      else if (strcmp(name,"MasstransportRequestedOutputs")==0) return MasstransportRequestedOutputsEnum;
+	      else if (strcmp(name,"MasstransportStabilization")==0) return MasstransportStabilizationEnum;
+	      else if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum;
+	      else if (strcmp(name,"MaterialsEarthDensity")==0) return MaterialsEarthDensityEnum;
+	      else if (strcmp(name,"MaterialsEffectiveconductivityAveraging")==0) return MaterialsEffectiveconductivityAveragingEnum;
+	      else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum;
+	      else if (strcmp(name,"MaterialsLatentheat")==0) return MaterialsLatentheatEnum;
+	      else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum;
+	      else if (strcmp(name,"MaterialsMixedLayerCapacity")==0) return MaterialsMixedLayerCapacityEnum;
+	      else if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum;
+	      else if (strcmp(name,"MaterialsRheologyLaw")==0) return MaterialsRheologyLawEnum;
+	      else if (strcmp(name,"MaterialsRhoFreshwater")==0) return MaterialsRhoFreshwaterEnum;
+	      else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum;
+	      else if (strcmp(name,"MaterialsRhoSeawater")==0) return MaterialsRhoSeawaterEnum;
+	      else if (strcmp(name,"MaterialsTemperateiceconductivity")==0) return MaterialsTemperateiceconductivityEnum;
+	      else if (strcmp(name,"MaterialsThermalExchangeVelocity")==0) return MaterialsThermalExchangeVelocityEnum;
+	      else if (strcmp(name,"MaterialsThermalconductivity")==0) return MaterialsThermalconductivityEnum;
+	      else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;
+	      else if (strcmp(name,"MeshAverageVertexConnectivity")==0) return MeshAverageVertexConnectivityEnum;
+	      else if (strcmp(name,"MeshElementtype")==0) return MeshElementtypeEnum;
+	      else if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum;
+	      else if (strcmp(name,"MeshNumberofvertices")==0) return MeshNumberofverticesEnum;
+	      else if (strcmp(name,"MeshNumberofelements")==0) return MeshNumberofelementsEnum;
+	      else if (strcmp(name,"MigrationMax")==0) return MigrationMaxEnum;
+	      else if (strcmp(name,"ModelId")==0) return ModelIdEnum;
+	      else if (strcmp(name,"Nbins")==0) return NbinsEnum;
+	      else if (strcmp(name,"Nodes")==0) return NodesEnum;
+	      else if (strcmp(name,"NumModels")==0) return NumModelsEnum;
+	      else if (strcmp(name,"OceanGridNx")==0) return OceanGridNxEnum;
+	      else if (strcmp(name,"OceanGridNy")==0) return OceanGridNyEnum;
+	      else if (strcmp(name,"OceanGridX")==0) return OceanGridXEnum;
+	      else if (strcmp(name,"OceanGridY")==0) return OceanGridYEnum;
+	      else if (strcmp(name,"OutputBufferPointer")==0) return OutputBufferPointerEnum;
+	      else if (strcmp(name,"OutputBufferSizePointer")==0) return OutputBufferSizePointerEnum;
+	      else if (strcmp(name,"OutputFileName")==0) return OutputFileNameEnum;
+	      else if (strcmp(name,"OutputFilePointer")==0) return OutputFilePointerEnum;
+	      else if (strcmp(name,"Outputdefinition")==0) return OutputdefinitionEnum;
+	      else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum;
+	      else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
+	      else if (strcmp(name,"QmuIsdakota")==0) return QmuIsdakotaEnum;
+	      else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
+	      else if (strcmp(name,"QmuOutput")==0) return QmuOutputEnum;
+	      else if (strcmp(name,"QmuCurrEvalId")==0) return QmuCurrEvalIdEnum;
+	      else if (strcmp(name,"QmuNsample")==0) return QmuNsampleEnum;
+	      else if (strcmp(name,"QmuResponsedescriptors")==0) return QmuResponsedescriptorsEnum;
+	      else if (strcmp(name,"QmuVariableDescriptors")==0) return QmuVariableDescriptorsEnum;
+	      else if (strcmp(name,"QmuVariablePartitions")==0) return QmuVariablePartitionsEnum;
+	      else if (strcmp(name,"QmuVariablePartitionsNpart")==0) return QmuVariablePartitionsNpartEnum;
+	      else if (strcmp(name,"QmuVariablePartitionsNt")==0) return QmuVariablePartitionsNtEnum;
+	      else if (strcmp(name,"QmuResponsePartitions")==0) return QmuResponsePartitionsEnum;
+	      else if (strcmp(name,"QmuResponsePartitionsNpart")==0) return QmuResponsePartitionsNpartEnum;
+	      else if (strcmp(name,"QmuStatistics")==0) return QmuStatisticsEnum;
+	      else if (strcmp(name,"QmuNumstatistics")==0) return QmuNumstatisticsEnum;
+	      else if (strcmp(name,"QmuNdirectories")==0) return QmuNdirectoriesEnum;
+	      else if (strcmp(name,"QmuNfilesPerDirectory")==0) return QmuNfilesPerDirectoryEnum;
+	      else if (strcmp(name,"QmuStatisticsMethod")==0) return QmuStatisticsMethodEnum;
+	      else if (strcmp(name,"QmuMethods")==0) return QmuMethodsEnum;
+	      else if (strcmp(name,"RestartFileName")==0) return RestartFileNameEnum;
+	      else if (strcmp(name,"Results")==0) return ResultsEnum;
+	      else if (strcmp(name,"RootPath")==0) return RootPathEnum;
+	      else if (strcmp(name,"Modelname")==0) return ModelnameEnum;
+	      else if (strcmp(name,"SamplingAlpha")==0) return SamplingAlphaEnum;
+	      else if (strcmp(name,"SamplingNumRequestedOutputs")==0) return SamplingNumRequestedOutputsEnum;
+	      else if (strcmp(name,"SamplingRequestedOutputs")==0) return SamplingRequestedOutputsEnum;
+	      else if (strcmp(name,"SamplingRobin")==0) return SamplingRobinEnum;
+	      else if (strcmp(name,"SamplingSeed")==0) return SamplingSeedEnum;
+	      else if (strcmp(name,"SaveResults")==0) return SaveResultsEnum;
+	      else if (strcmp(name,"SolidearthPartitionIce")==0) return SolidearthPartitionIceEnum;
+	      else if (strcmp(name,"SolidearthPartitionHydro")==0) return SolidearthPartitionHydroEnum;
+	      else if (strcmp(name,"SolidearthPartitionOcean")==0) return SolidearthPartitionOceanEnum;
+	      else if (strcmp(name,"SolidearthNpartIce")==0) return SolidearthNpartIceEnum;
+	      else if (strcmp(name,"SolidearthNpartOcean")==0) return SolidearthNpartOceanEnum;
+	      else if (strcmp(name,"SolidearthNpartHydro")==0) return SolidearthNpartHydroEnum;
+	      else if (strcmp(name,"SolidearthPlanetRadius")==0) return SolidearthPlanetRadiusEnum;
+	      else if (strcmp(name,"SolidearthPlanetArea")==0) return SolidearthPlanetAreaEnum;
+	      else if (strcmp(name,"SolidearthSettingsAbstol")==0) return SolidearthSettingsAbstolEnum;
+	      else if (strcmp(name,"SolidearthSettingsCrossSectionShape")==0) return SolidearthSettingsCrossSectionShapeEnum;
+	      else if (strcmp(name,"SolidearthSettingsElastic")==0) return SolidearthSettingsElasticEnum;
+	      else if (strcmp(name,"SolidearthSettingsViscous")==0) return SolidearthSettingsViscousEnum;
+	      else if (strcmp(name,"SolidearthSettingsSatelliteGravi")==0) return SolidearthSettingsSatelliteGraviEnum;
+	      else if (strcmp(name,"SolidearthSettingsDegreeAccuracy")==0) return SolidearthSettingsDegreeAccuracyEnum;
+	      else if (strcmp(name,"SealevelchangeGeometryDone")==0) return SealevelchangeGeometryDoneEnum;
+	      else if (strcmp(name,"SealevelchangeViscousNumSteps")==0) return SealevelchangeViscousNumStepsEnum;
+	      else if (strcmp(name,"SealevelchangeViscousTimes")==0) return SealevelchangeViscousTimesEnum;
+	      else if (strcmp(name,"SealevelchangeViscousIndex")==0) return SealevelchangeViscousIndexEnum;
+	      else if (strcmp(name,"SealevelchangeViscousPolarMotion")==0) return SealevelchangeViscousPolarMotionEnum;
+	      else if (strcmp(name,"SealevelchangeRunCount")==0) return SealevelchangeRunCountEnum;
+	      else if (strcmp(name,"SealevelchangeTransitions")==0) return SealevelchangeTransitionsEnum;
+	      else if (strcmp(name,"SealevelchangeRequestedOutputs")==0) return SealevelchangeRequestedOutputsEnum;
+	      else if (strcmp(name,"RotationalAngularVelocity")==0) return RotationalAngularVelocityEnum;
+	      else if (strcmp(name,"RotationalEquatorialMoi")==0) return RotationalEquatorialMoiEnum;
+	      else if (strcmp(name,"RotationalPolarMoi")==0) return RotationalPolarMoiEnum;
+	      else if (strcmp(name,"LovePolarMotionTransferFunctionColinear")==0) return LovePolarMotionTransferFunctionColinearEnum;
+	      else if (strcmp(name,"LovePolarMotionTransferFunctionOrthogonal")==0) return LovePolarMotionTransferFunctionOrthogonalEnum;
+	      else if (strcmp(name,"TidalLoveH")==0) return TidalLoveHEnum;
+	      else if (strcmp(name,"TidalLoveK")==0) return TidalLoveKEnum;
+	      else if (strcmp(name,"TidalLoveL")==0) return TidalLoveLEnum;
+	      else if (strcmp(name,"TidalLoveK2Secular")==0) return TidalLoveK2SecularEnum;
+	      else if (strcmp(name,"LoadLoveH")==0) return LoadLoveHEnum;
+	      else if (strcmp(name,"LoadLoveK")==0) return LoadLoveKEnum;
+	      else if (strcmp(name,"LoadLoveL")==0) return LoadLoveLEnum;
+	      else if (strcmp(name,"LoveTimeFreq")==0) return LoveTimeFreqEnum;
+	      else if (strcmp(name,"LoveIsTime")==0) return LoveIsTimeEnum;
+	      else if (strcmp(name,"LoveHypergeomZ")==0) return LoveHypergeomZEnum;
+	      else if (strcmp(name,"LoveHypergeomTable1")==0) return LoveHypergeomTable1Enum;
+	      else if (strcmp(name,"LoveHypergeomTable2")==0) return LoveHypergeomTable2Enum;
+	      else if (strcmp(name,"SealevelchangeGSelfAttraction")==0) return SealevelchangeGSelfAttractionEnum;
+	      else if (strcmp(name,"SealevelchangeGViscoElastic")==0) return SealevelchangeGViscoElasticEnum;
+	      else if (strcmp(name,"SealevelchangeUViscoElastic")==0) return SealevelchangeUViscoElasticEnum;
+	      else if (strcmp(name,"SealevelchangeHViscoElastic")==0) return SealevelchangeHViscoElasticEnum;
+	      else if (strcmp(name,"SealevelchangePolarMotionTransferFunctionColinear")==0) return SealevelchangePolarMotionTransferFunctionColinearEnum;
+	      else if (strcmp(name,"SealevelchangePolarMotionTransferFunctionOrthogonal")==0) return SealevelchangePolarMotionTransferFunctionOrthogonalEnum;
+	      else if (strcmp(name,"SealevelchangePolarMotionTransferFunctionZ")==0) return SealevelchangePolarMotionTransferFunctionZEnum;
+	      else if (strcmp(name,"SealevelchangeTidalK2")==0) return SealevelchangeTidalK2Enum;
+	      else if (strcmp(name,"SealevelchangeTidalH2")==0) return SealevelchangeTidalH2Enum;
+         else stage=5;
+   }
+   if(stage==5){
+	      if (strcmp(name,"SealevelchangeTidalL2")==0) return SealevelchangeTidalL2Enum;
+	      else if (strcmp(name,"SolidearthSettingsSealevelLoading")==0) return SolidearthSettingsSealevelLoadingEnum;
+	      else if (strcmp(name,"SolidearthSettingsGRD")==0) return SolidearthSettingsGRDEnum;
+	      else if (strcmp(name,"SolidearthSettingsRunFrequency")==0) return SolidearthSettingsRunFrequencyEnum;
+	      else if (strcmp(name,"SolidearthSettingsTimeAcc")==0) return SolidearthSettingsTimeAccEnum;
+	      else if (strcmp(name,"SolidearthSettingsHoriz")==0) return SolidearthSettingsHorizEnum;
+	      else if (strcmp(name,"SolidearthSettingsMaxiter")==0) return SolidearthSettingsMaxiterEnum;
+	      else if (strcmp(name,"SolidearthSettingsGrdOcean")==0) return SolidearthSettingsGrdOceanEnum;
+	      else if (strcmp(name,"SolidearthSettingsOceanAreaScaling")==0) return SolidearthSettingsOceanAreaScalingEnum;
+	      else if (strcmp(name,"StochasticForcingCovariance")==0) return StochasticForcingCovarianceEnum;
+	      else if (strcmp(name,"StochasticForcingDefaultDimension")==0) return StochasticForcingDefaultDimensionEnum;
+	      else if (strcmp(name,"StochasticForcingDimensions")==0) return StochasticForcingDimensionsEnum;
+	      else if (strcmp(name,"StochasticForcingFields")==0) return StochasticForcingFieldsEnum;
+	      else if (strcmp(name,"StochasticForcingIsEffectivePressure")==0) return StochasticForcingIsEffectivePressureEnum;
+	      else if (strcmp(name,"StochasticForcingIsStochasticForcing")==0) return StochasticForcingIsStochasticForcingEnum;
+	      else if (strcmp(name,"StochasticForcingIsWaterPressure")==0) return StochasticForcingIsWaterPressureEnum;
+	      else if (strcmp(name,"StochasticForcingNoiseterms")==0) return StochasticForcingNoisetermsEnum;
+	      else if (strcmp(name,"StochasticForcingNumFields")==0) return StochasticForcingNumFieldsEnum;
+	      else if (strcmp(name,"StochasticForcingNumTimesCovariance")==0) return StochasticForcingNumTimesCovarianceEnum;
+	      else if (strcmp(name,"StochasticForcingRandomflag")==0) return StochasticForcingRandomflagEnum;
+	      else if (strcmp(name,"StochasticForcingTimeCovariance")==0) return StochasticForcingTimeCovarianceEnum;
+	      else if (strcmp(name,"StochasticForcingTimestep")==0) return StochasticForcingTimestepEnum;
+	      else if (strcmp(name,"SolidearthSettingsReltol")==0) return SolidearthSettingsReltolEnum;
+	      else if (strcmp(name,"SolidearthSettingsSelfAttraction")==0) return SolidearthSettingsSelfAttractionEnum;
+	      else if (strcmp(name,"SolidearthSettingsRotation")==0) return SolidearthSettingsRotationEnum;
+	      else if (strcmp(name,"SolidearthSettingsMaxSHCoeff")==0) return SolidearthSettingsMaxSHCoeffEnum;
+	      else if (strcmp(name,"SettingsIoGather")==0) return SettingsIoGatherEnum;
+	      else if (strcmp(name,"SettingsNumResultsOnNodes")==0) return SettingsNumResultsOnNodesEnum;
+	      else if (strcmp(name,"SettingsOutputFrequency")==0) return SettingsOutputFrequencyEnum;
+	      else if (strcmp(name,"SettingsCheckpointFrequency")==0) return SettingsCheckpointFrequencyEnum;
+	      else if (strcmp(name,"SettingsResultsOnNodes")==0) return SettingsResultsOnNodesEnum;
+	      else if (strcmp(name,"SettingsSbCouplingFrequency")==0) return SettingsSbCouplingFrequencyEnum;
+	      else if (strcmp(name,"SettingsSolverResidueThreshold")==0) return SettingsSolverResidueThresholdEnum;
+	      else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum;
+	      else if (strcmp(name,"SmbAIce")==0) return SmbAIceEnum;
+	      else if (strcmp(name,"SmbAIdx")==0) return SmbAIdxEnum;
+	      else if (strcmp(name,"SmbASnow")==0) return SmbASnowEnum;
+	      else if (strcmp(name,"SmbAccualti")==0) return SmbAccualtiEnum;
+	      else if (strcmp(name,"SmbAccugrad")==0) return SmbAccugradEnum;
+	      else if (strcmp(name,"SmbAccuref")==0) return SmbAccurefEnum;
+	      else if (strcmp(name,"SmbAdThresh")==0) return SmbAdThreshEnum;
+	      else if (strcmp(name,"SmbAlbedoScheme")==0) return SmbAlbedoSchemeEnum;
+	      else if (strcmp(name,"SmbAlbedoSnowMax")==0) return SmbAlbedoSnowMaxEnum;
+	      else if (strcmp(name,"SmbAlbedoSnowMin")==0) return SmbAlbedoSnowMinEnum;
+	      else if (strcmp(name,"SmbAlbedoIce")==0) return SmbAlbedoIceEnum;
+	      else if (strcmp(name,"SmbAlbedoLand")==0) return SmbAlbedoLandEnum;
+	      else if (strcmp(name,"SmbARMATimestep")==0) return SmbARMATimestepEnum;
+	      else if (strcmp(name,"SmbARMAarOrder")==0) return SmbARMAarOrderEnum;
+	      else if (strcmp(name,"SmbARMAarlagcoefs")==0) return SmbARMAarlagcoefsEnum;
+	      else if (strcmp(name,"SmbARMAdatebreaks")==0) return SmbARMAdatebreaksEnum;
+	      else if (strcmp(name,"SmbARMAmaOrder")==0) return SmbARMAmaOrderEnum;
+	      else if (strcmp(name,"SmbARMAmalagcoefs")==0) return SmbARMAmalagcoefsEnum;
+	      else if (strcmp(name,"SmbARMApolyparams")==0) return SmbARMApolyparamsEnum;
+	      else if (strcmp(name,"SmbAveraging")==0) return SmbAveragingEnum;
+	      else if (strcmp(name,"SmbDebrisalbedo")==0) return SmbDebrisalbedoEnum;
+	      else if (strcmp(name,"SmbIcealbedo")==0) return SmbIcealbedoEnum;
+	      else if (strcmp(name,"SmbSnowalbedo")==0) return SmbSnowalbedoEnum;
+	      else if (strcmp(name,"SmbDebrisIsAnderson")==0) return SmbDebrisIsAndersonEnum;
+	      else if (strcmp(name,"SmbDebrisIsCryokarst")==0) return SmbDebrisIsCryokarstEnum;
+	      else if (strcmp(name,"SmbDebrisAndersonD0")==0) return SmbDebrisAndersonD0Enum;
+	      else if (strcmp(name,"SmbDesfac")==0) return SmbDesfacEnum;
+	      else if (strcmp(name,"SmbDesfacElev")==0) return SmbDesfacElevEnum;
+	      else if (strcmp(name,"SmbDpermil")==0) return SmbDpermilEnum;
+	      else if (strcmp(name,"SmbDsnowIdx")==0) return SmbDsnowIdxEnum;
+	      else if (strcmp(name,"SmbElevationBins")==0) return SmbElevationBinsEnum;
+	      else if (strcmp(name,"SmbCldFrac")==0) return SmbCldFracEnum;
+	      else if (strcmp(name,"SmbDelta18o")==0) return SmbDelta18oEnum;
+	      else if (strcmp(name,"SmbDelta18oSurface")==0) return SmbDelta18oSurfaceEnum;
+	      else if (strcmp(name,"SmbDenIdx")==0) return SmbDenIdxEnum;
+	      else if (strcmp(name,"SmbDt")==0) return SmbDtEnum;
+	      else if (strcmp(name,"Smb")==0) return SmbEnum;
+	      else if (strcmp(name,"SmbEIdx")==0) return SmbEIdxEnum;
+	      else if (strcmp(name,"SmbF")==0) return SmbFEnum;
+	      else if (strcmp(name,"SmbHumiditygrad")==0) return SmbHumiditygradEnum;
+	      else if (strcmp(name,"SmbInitDensityScaling")==0) return SmbInitDensityScalingEnum;
+	      else if (strcmp(name,"SmbIsaccumulation")==0) return SmbIsaccumulationEnum;
+	      else if (strcmp(name,"SmbIsalbedo")==0) return SmbIsalbedoEnum;
+	      else if (strcmp(name,"SmbIsconstrainsurfaceT")==0) return SmbIsconstrainsurfaceTEnum;
+	      else if (strcmp(name,"SmbIsd18opd")==0) return SmbIsd18opdEnum;
+	      else if (strcmp(name,"SmbIsdelta18o")==0) return SmbIsdelta18oEnum;
+	      else if (strcmp(name,"SmbIsdensification")==0) return SmbIsdensificationEnum;
+	      else if (strcmp(name,"SmbIsdeltaLWup")==0) return SmbIsdeltaLWupEnum;
+	      else if (strcmp(name,"SmbIsfirnwarming")==0) return SmbIsfirnwarmingEnum;
+	      else if (strcmp(name,"SmbIsgraingrowth")==0) return SmbIsgraingrowthEnum;
+	      else if (strcmp(name,"SmbIsmelt")==0) return SmbIsmeltEnum;
+	      else if (strcmp(name,"SmbIsmungsm")==0) return SmbIsmungsmEnum;
+	      else if (strcmp(name,"SmbIsprecipscaled")==0) return SmbIsprecipscaledEnum;
+	      else if (strcmp(name,"SmbIssetpddfac")==0) return SmbIssetpddfacEnum;
+	      else if (strcmp(name,"SmbIsshortwave")==0) return SmbIsshortwaveEnum;
+	      else if (strcmp(name,"SmbIstemperaturescaled")==0) return SmbIstemperaturescaledEnum;
+	      else if (strcmp(name,"SmbIsthermal")==0) return SmbIsthermalEnum;
+	      else if (strcmp(name,"SmbIsturbulentflux")==0) return SmbIsturbulentfluxEnum;
+	      else if (strcmp(name,"SmbK")==0) return SmbKEnum;
+	      else if (strcmp(name,"SmbLapseRates")==0) return SmbLapseRatesEnum;
+	      else if (strcmp(name,"SmbLWgrad")==0) return SmbLWgradEnum;
+	      else if (strcmp(name,"SmbNumBasins")==0) return SmbNumBasinsEnum;
+	      else if (strcmp(name,"SmbNumBreaks")==0) return SmbNumBreaksEnum;
+	      else if (strcmp(name,"SmbNumElevationBins")==0) return SmbNumElevationBinsEnum;
+	      else if (strcmp(name,"SmbNumParams")==0) return SmbNumParamsEnum;
+	      else if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum;
+	      else if (strcmp(name,"SmbPfac")==0) return SmbPfacEnum;
+	      else if (strcmp(name,"SmbRdl")==0) return SmbRdlEnum;
+	      else if (strcmp(name,"SmbRefElevation")==0) return SmbRefElevationEnum;
+	      else if (strcmp(name,"SmbRequestedOutputs")==0) return SmbRequestedOutputsEnum;
+	      else if (strcmp(name,"SmbRlaps")==0) return SmbRlapsEnum;
+	      else if (strcmp(name,"SmbRlapslgm")==0) return SmbRlapslgmEnum;
+	      else if (strcmp(name,"SmbRunoffalti")==0) return SmbRunoffaltiEnum;
+	      else if (strcmp(name,"SmbRunoffgrad")==0) return SmbRunoffgradEnum;
+	      else if (strcmp(name,"SmbRunoffref")==0) return SmbRunoffrefEnum;
+	      else if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum;
+	      else if (strcmp(name,"SmbSemicMethod")==0) return SmbSemicMethodEnum;
+	      else if (strcmp(name,"SmbSemicHcrit")==0) return SmbSemicHcritEnum;
+	      else if (strcmp(name,"SmbSemicRcrit")==0) return SmbSemicRcritEnum;
+	      else if (strcmp(name,"SmbSemicWcrit")==0) return SmbSemicWcritEnum;
+	      else if (strcmp(name,"SmbSemicMcrit")==0) return SmbSemicMcritEnum;
+	      else if (strcmp(name,"SmbSemicAfac")==0) return SmbSemicAfacEnum;
+	      else if (strcmp(name,"SmbSemicTauA")==0) return SmbSemicTauAEnum;
+	      else if (strcmp(name,"SmbSemicTauF")==0) return SmbSemicTauFEnum;
+	      else if (strcmp(name,"SmbSemicTmin")==0) return SmbSemicTminEnum;
+	      else if (strcmp(name,"SmbSemicTmid")==0) return SmbSemicTmidEnum;
+         else stage=6;
+   }
+   if(stage==6){
+	      if (strcmp(name,"SmbSemicTmax")==0) return SmbSemicTmaxEnum;
+	      else if (strcmp(name,"SmbStepsPerStep")==0) return SmbStepsPerStepEnum;
+	      else if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum;
+	      else if (strcmp(name,"SmbSWgrad")==0) return SmbSWgradEnum;
+	      else if (strcmp(name,"SmbT0dry")==0) return SmbT0dryEnum;
+	      else if (strcmp(name,"SmbT0wet")==0) return SmbT0wetEnum;
+	      else if (strcmp(name,"SmbTcIdx")==0) return SmbTcIdxEnum;
+	      else if (strcmp(name,"SmbTeThresh")==0) return SmbTeThreshEnum;
+	      else if (strcmp(name,"SmbTdiff")==0) return SmbTdiffEnum;
+	      else if (strcmp(name,"SmbThermoDeltaTScaling")==0) return SmbThermoDeltaTScalingEnum;
+	      else if (strcmp(name,"SmbTemperaturesReconstructedYears")==0) return SmbTemperaturesReconstructedYearsEnum;
+	      else if (strcmp(name,"SmbPrecipitationsReconstructedYears")==0) return SmbPrecipitationsReconstructedYearsEnum;
+	      else if (strcmp(name,"SmbWindspeedgrad")==0) return SmbWindspeedgradEnum;
+	      else if (strcmp(name,"SmoothThicknessMultiplier")==0) return SmoothThicknessMultiplierEnum;
+	      else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum;
+	      else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum;
+	      else if (strcmp(name,"SteadystateNumRequestedOutputs")==0) return SteadystateNumRequestedOutputsEnum;
+	      else if (strcmp(name,"SteadystateReltol")==0) return SteadystateReltolEnum;
+	      else if (strcmp(name,"SteadystateRequestedOutputs")==0) return SteadystateRequestedOutputsEnum;
+	      else if (strcmp(name,"Step")==0) return StepEnum;
+	      else if (strcmp(name,"Steps")==0) return StepsEnum;
+	      else if (strcmp(name,"StressbalanceAbstol")==0) return StressbalanceAbstolEnum;
+	      else if (strcmp(name,"StressbalanceFSreconditioning")==0) return StressbalanceFSreconditioningEnum;
+	      else if (strcmp(name,"StressbalanceIsnewton")==0) return StressbalanceIsnewtonEnum;
+	      else if (strcmp(name,"StressbalanceMaxiter")==0) return StressbalanceMaxiterEnum;
+	      else if (strcmp(name,"StressbalanceNumRequestedOutputs")==0) return StressbalanceNumRequestedOutputsEnum;
+	      else if (strcmp(name,"StressbalancePenaltyFactor")==0) return StressbalancePenaltyFactorEnum;
+	      else if (strcmp(name,"StressbalanceReltol")==0) return StressbalanceReltolEnum;
+	      else if (strcmp(name,"StressbalanceRequestedOutputs")==0) return StressbalanceRequestedOutputsEnum;
+	      else if (strcmp(name,"StressbalanceRestol")==0) return StressbalanceRestolEnum;
+	      else if (strcmp(name,"StressbalanceRiftPenaltyThreshold")==0) return StressbalanceRiftPenaltyThresholdEnum;
+	      else if (strcmp(name,"StressbalanceShelfDampening")==0) return StressbalanceShelfDampeningEnum;
+	      else if (strcmp(name,"ThermalForcingMonthlyEffects")==0) return ThermalForcingMonthlyEffectsEnum;
+	      else if (strcmp(name,"ThermalIsdrainicecolumn")==0) return ThermalIsdrainicecolumnEnum;
+	      else if (strcmp(name,"ThermalIsdynamicbasalspc")==0) return ThermalIsdynamicbasalspcEnum;
+	      else if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum;
+	      else if (strcmp(name,"ThermalMaxiter")==0) return ThermalMaxiterEnum;
+	      else if (strcmp(name,"ThermalNumRequestedOutputs")==0) return ThermalNumRequestedOutputsEnum;
+	      else if (strcmp(name,"ThermalPenaltyFactor")==0) return ThermalPenaltyFactorEnum;
+	      else if (strcmp(name,"ThermalPenaltyLock")==0) return ThermalPenaltyLockEnum;
+	      else if (strcmp(name,"ThermalPenaltyThreshold")==0) return ThermalPenaltyThresholdEnum;
+	      else if (strcmp(name,"ThermalReltol")==0) return ThermalReltolEnum;
+	      else if (strcmp(name,"ThermalRequestedOutputs")==0) return ThermalRequestedOutputsEnum;
+	      else if (strcmp(name,"ThermalStabilization")==0) return ThermalStabilizationEnum;
+	      else if (strcmp(name,"ThermalWatercolumnUpperlimit")==0) return ThermalWatercolumnUpperlimitEnum;
+	      else if (strcmp(name,"Time")==0) return TimeEnum;
+	      else if (strcmp(name,"TimesteppingAverageForcing")==0) return TimesteppingAverageForcingEnum;
+	      else if (strcmp(name,"TimesteppingCflCoefficient")==0) return TimesteppingCflCoefficientEnum;
+	      else if (strcmp(name,"TimesteppingCouplingTime")==0) return TimesteppingCouplingTimeEnum;
+	      else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum;
+	      else if (strcmp(name,"TimesteppingInterpForcing")==0) return TimesteppingInterpForcingEnum;
+	      else if (strcmp(name,"TimesteppingCycleForcing")==0) return TimesteppingCycleForcingEnum;
+	      else if (strcmp(name,"TimesteppingStartTime")==0) return TimesteppingStartTimeEnum;
+	      else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum;
+	      else if (strcmp(name,"TimesteppingTimeStepMax")==0) return TimesteppingTimeStepMaxEnum;
+	      else if (strcmp(name,"TimesteppingTimeStepMin")==0) return TimesteppingTimeStepMinEnum;
+	      else if (strcmp(name,"TimesteppingType")==0) return TimesteppingTypeEnum;
+	      else if (strcmp(name,"ToMITgcmComm")==0) return ToMITgcmCommEnum;
+	      else if (strcmp(name,"ToolkitsFileName")==0) return ToolkitsFileNameEnum;
+	      else if (strcmp(name,"ToolkitsOptionsAnalyses")==0) return ToolkitsOptionsAnalysesEnum;
+	      else if (strcmp(name,"ToolkitsOptionsStrings")==0) return ToolkitsOptionsStringsEnum;
+	      else if (strcmp(name,"ToolkitsTypes")==0) return ToolkitsTypesEnum;
+	      else if (strcmp(name,"TransientAmrFrequency")==0) return TransientAmrFrequencyEnum;
+	      else if (strcmp(name,"TransientIsage")==0) return TransientIsageEnum;
+	      else if (strcmp(name,"TransientIsdamageevolution")==0) return TransientIsdamageevolutionEnum;
+	      else if (strcmp(name,"TransientIsdebris")==0) return TransientIsdebrisEnum;
+	      else if (strcmp(name,"TransientIsesa")==0) return TransientIsesaEnum;
+	      else if (strcmp(name,"TransientIsgia")==0) return TransientIsgiaEnum;
+	      else if (strcmp(name,"TransientIsgroundingline")==0) return TransientIsgroundinglineEnum;
+	      else if (strcmp(name,"TransientIshydrology")==0) return TransientIshydrologyEnum;
+	      else if (strcmp(name,"TransientIsmasstransport")==0) return TransientIsmasstransportEnum;
+	      else if (strcmp(name,"TransientIsoceantransport")==0) return TransientIsoceantransportEnum;
+	      else if (strcmp(name,"TransientIsmovingfront")==0) return TransientIsmovingfrontEnum;
+	      else if (strcmp(name,"TransientIsoceancoupling")==0) return TransientIsoceancouplingEnum;
+	      else if (strcmp(name,"TransientIssampling")==0) return TransientIssamplingEnum;
+	      else if (strcmp(name,"TransientIsslc")==0) return TransientIsslcEnum;
+	      else if (strcmp(name,"TransientIssmb")==0) return TransientIssmbEnum;
+	      else if (strcmp(name,"TransientIsstressbalance")==0) return TransientIsstressbalanceEnum;
+	      else if (strcmp(name,"TransientIsthermal")==0) return TransientIsthermalEnum;
+	      else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum;
+	      else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;
+	      else if (strcmp(name,"Velocity")==0) return VelocityEnum;
+	      else if (strcmp(name,"Xxe")==0) return XxeEnum;
+	      else if (strcmp(name,"Yye")==0) return YyeEnum;
+	      else if (strcmp(name,"Zze")==0) return ZzeEnum;
+	      else if (strcmp(name,"Areae")==0) return AreaeEnum;
+	      else if (strcmp(name,"WorldComm")==0) return WorldCommEnum;
+	      else if (strcmp(name,"ParametersEND")==0) return ParametersENDEnum;
+	      else if (strcmp(name,"InputsSTART")==0) return InputsSTARTEnum;
+	      else if (strcmp(name,"AccumulatedDeltaBottomPressure")==0) return AccumulatedDeltaBottomPressureEnum;
+	      else if (strcmp(name,"AccumulatedDeltaIceThickness")==0) return AccumulatedDeltaIceThicknessEnum;
+	      else if (strcmp(name,"AccumulatedDeltaTws")==0) return AccumulatedDeltaTwsEnum;
+	      else if (strcmp(name,"Adjoint")==0) return AdjointEnum;
+	      else if (strcmp(name,"Adjointp")==0) return AdjointpEnum;
+	      else if (strcmp(name,"Adjointx")==0) return AdjointxEnum;
+	      else if (strcmp(name,"AdjointxBase")==0) return AdjointxBaseEnum;
+	      else if (strcmp(name,"AdjointxShear")==0) return AdjointxShearEnum;
+	      else if (strcmp(name,"Adjointy")==0) return AdjointyEnum;
+	      else if (strcmp(name,"AdjointyBase")==0) return AdjointyBaseEnum;
+	      else if (strcmp(name,"AdjointyShear")==0) return AdjointyShearEnum;
+	      else if (strcmp(name,"Adjointz")==0) return AdjointzEnum;
+	      else if (strcmp(name,"Age")==0) return AgeEnum;
+	      else if (strcmp(name,"Air")==0) return AirEnum;
+	      else if (strcmp(name,"Approximation")==0) return ApproximationEnum;
+	      else if (strcmp(name,"BalancethicknessMisfit")==0) return BalancethicknessMisfitEnum;
+	      else if (strcmp(name,"BalancethicknessOmega0")==0) return BalancethicknessOmega0Enum;
+	      else if (strcmp(name,"BalancethicknessOmega")==0) return BalancethicknessOmegaEnum;
+	      else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum;
+	      else if (strcmp(name,"BalancethicknessThickeningRate")==0) return BalancethicknessThickeningRateEnum;
+	      else if (strcmp(name,"BasalCrevasse")==0) return BasalCrevasseEnum;
+	      else if (strcmp(name,"BasalforcingsDeepwaterMeltingRatearma")==0) return BasalforcingsDeepwaterMeltingRatearmaEnum;
+	      else if (strcmp(name,"BasalforcingsDeepwaterMeltingRateNoise")==0) return BasalforcingsDeepwaterMeltingRateNoiseEnum;
+	      else if (strcmp(name,"BasalforcingsDeepwaterMeltingRateValuesAutoregression")==0) return BasalforcingsDeepwaterMeltingRateValuesAutoregressionEnum;
+	      else if (strcmp(name,"BasalforcingsDeepwaterMeltingRateValuesMovingaverage")==0) return BasalforcingsDeepwaterMeltingRateValuesMovingaverageEnum;
+	      else if (strcmp(name,"BasalforcingsFloatingiceMeltingRate")==0) return BasalforcingsFloatingiceMeltingRateEnum;
+	      else if (strcmp(name,"BasalforcingsFloatingiceMeltingRateObs")==0) return BasalforcingsFloatingiceMeltingRateObsEnum;
+	      else if (strcmp(name,"BasalforcingsGeothermalflux")==0) return BasalforcingsGeothermalfluxEnum;
+	      else if (strcmp(name,"BasalforcingsGroundediceMeltingRate")==0) return BasalforcingsGroundediceMeltingRateEnum;
+	      else if (strcmp(name,"BasalforcingsGroundediceMeltingRateObs")==0) return BasalforcingsGroundediceMeltingRateObsEnum;
+	      else if (strcmp(name,"BasalforcingsLinearBasinId")==0) return BasalforcingsLinearBasinIdEnum;
+         else stage=7;
+   }
+   if(stage==7){
+	      if (strcmp(name,"BasalforcingsPerturbationMeltingRate")==0) return BasalforcingsPerturbationMeltingRateEnum;
+	      else if (strcmp(name,"BasalforcingsSpatialDeepwaterElevation")==0) return BasalforcingsSpatialDeepwaterElevationEnum;
+	      else if (strcmp(name,"BasalforcingsSpatialDeepwaterMeltingRate")==0) return BasalforcingsSpatialDeepwaterMeltingRateEnum;
+	      else if (strcmp(name,"BasalforcingsSpatialUpperwaterElevation")==0) return BasalforcingsSpatialUpperwaterElevationEnum;
+	      else if (strcmp(name,"BasalforcingsSpatialUpperwaterMeltingRate")==0) return BasalforcingsSpatialUpperwaterMeltingRateEnum;
+	      else if (strcmp(name,"BasalforcingsIsmip6BasinId")==0) return BasalforcingsIsmip6BasinIdEnum;
+	      else if (strcmp(name,"BasalforcingsIsmip6Tf")==0) return BasalforcingsIsmip6TfEnum;
+	      else if (strcmp(name,"BasalforcingsIsmip6TfShelf")==0) return BasalforcingsIsmip6TfShelfEnum;
+	      else if (strcmp(name,"BasalforcingsIsmip6MeltAnomaly")==0) return BasalforcingsIsmip6MeltAnomalyEnum;
+	      else if (strcmp(name,"BasalforcingsMeltrateFactor")==0) return BasalforcingsMeltrateFactorEnum;
+	      else if (strcmp(name,"BasalforcingsOceanSalinity")==0) return BasalforcingsOceanSalinityEnum;
+	      else if (strcmp(name,"BasalforcingsOceanTemp")==0) return BasalforcingsOceanTempEnum;
+	      else if (strcmp(name,"BasalforcingsPicoBasinId")==0) return BasalforcingsPicoBasinIdEnum;
+	      else if (strcmp(name,"BasalforcingsPicoBoxId")==0) return BasalforcingsPicoBoxIdEnum;
+	      else if (strcmp(name,"BasalforcingsPicoOverturningCoeff")==0) return BasalforcingsPicoOverturningCoeffEnum;
+	      else if (strcmp(name,"BasalforcingsPicoSubShelfOceanOverturning")==0) return BasalforcingsPicoSubShelfOceanOverturningEnum;
+	      else if (strcmp(name,"BasalforcingsPicoSubShelfOceanSalinity")==0) return BasalforcingsPicoSubShelfOceanSalinityEnum;
+	      else if (strcmp(name,"BasalforcingsPicoSubShelfOceanTemp")==0) return BasalforcingsPicoSubShelfOceanTempEnum;
+	      else if (strcmp(name,"BasalStressx")==0) return BasalStressxEnum;
+	      else if (strcmp(name,"BasalStressy")==0) return BasalStressyEnum;
+	      else if (strcmp(name,"BasalStress")==0) return BasalStressEnum;
+	      else if (strcmp(name,"Base")==0) return BaseEnum;
+	      else if (strcmp(name,"BaseOld")==0) return BaseOldEnum;
+	      else if (strcmp(name,"BaseSlopeX")==0) return BaseSlopeXEnum;
+	      else if (strcmp(name,"BaseSlopeY")==0) return BaseSlopeYEnum;
+	      else if (strcmp(name,"BaselineBasalforcingsFloatingiceMeltingRate")==0) return BaselineBasalforcingsFloatingiceMeltingRateEnum;
+	      else if (strcmp(name,"BaselineBasalforcingsSpatialDeepwaterMeltingRate")==0) return BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum;
+	      else if (strcmp(name,"BaselineCalvingCalvingrate")==0) return BaselineCalvingCalvingrateEnum;
+	      else if (strcmp(name,"BaselineFrictionEffectivePressure")==0) return BaselineFrictionEffectivePressureEnum;
+	      else if (strcmp(name,"BaselineSmbMassBalance")==0) return BaselineSmbMassBalanceEnum;
+	      else if (strcmp(name,"Bed")==0) return BedEnum;
+	      else if (strcmp(name,"BedGRD")==0) return BedGRDEnum;
+	      else if (strcmp(name,"BedEast")==0) return BedEastEnum;
+	      else if (strcmp(name,"BedEastGRD")==0) return BedEastGRDEnum;
+	      else if (strcmp(name,"BedNorth")==0) return BedNorthEnum;
+	      else if (strcmp(name,"BedNorthGRD")==0) return BedNorthGRDEnum;
+	      else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum;
+	      else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum;
+	      else if (strcmp(name,"BottomPressure")==0) return BottomPressureEnum;
+	      else if (strcmp(name,"BottomPressureOld")==0) return BottomPressureOldEnum;
+	      else if (strcmp(name,"CalvingBasinId")==0) return CalvingBasinIdEnum;
+	      else if (strcmp(name,"CalvingCalvingrate")==0) return CalvingCalvingrateEnum;
+	      else if (strcmp(name,"CalvingHabFraction")==0) return CalvingHabFractionEnum;
+	      else if (strcmp(name,"CalvingAblationrate")==0) return CalvingAblationrateEnum;
+	      else if (strcmp(name,"CalvingMeltingrate")==0) return CalvingMeltingrateEnum;
+	      else if (strcmp(name,"CalvingStressThresholdFloatingice")==0) return CalvingStressThresholdFloatingiceEnum;
+	      else if (strcmp(name,"CalvingStressThresholdGroundedice")==0) return CalvingStressThresholdGroundediceEnum;
+	      else if (strcmp(name,"CalvinglevermannCoeff")==0) return CalvinglevermannCoeffEnum;
+	      else if (strcmp(name,"Calvingratex")==0) return CalvingratexEnum;
+	      else if (strcmp(name,"Calvingratey")==0) return CalvingrateyEnum;
+	      else if (strcmp(name,"CalvingFluxLevelset")==0) return CalvingFluxLevelsetEnum;
+	      else if (strcmp(name,"CalvingMeltingFluxLevelset")==0) return CalvingMeltingFluxLevelsetEnum;
+	      else if (strcmp(name,"Converged")==0) return ConvergedEnum;
+	      else if (strcmp(name,"CrevasseDepth")==0) return CrevasseDepthEnum;
+	      else if (strcmp(name,"DamageD")==0) return DamageDEnum;
+	      else if (strcmp(name,"DamageDOld")==0) return DamageDOldEnum;
+	      else if (strcmp(name,"DamageDbar")==0) return DamageDbarEnum;
+	      else if (strcmp(name,"DamageDbarOld")==0) return DamageDbarOldEnum;
+	      else if (strcmp(name,"DamageF")==0) return DamageFEnum;
+	      else if (strcmp(name,"DebrisThickness")==0) return DebrisThicknessEnum;
+	      else if (strcmp(name,"DegreeOfChannelization")==0) return DegreeOfChannelizationEnum;
+	      else if (strcmp(name,"DepthBelowSurface")==0) return DepthBelowSurfaceEnum;
+	      else if (strcmp(name,"DeltaIceThickness")==0) return DeltaIceThicknessEnum;
+	      else if (strcmp(name,"DeltaTws")==0) return DeltaTwsEnum;
+	      else if (strcmp(name,"DeltaBottomPressure")==0) return DeltaBottomPressureEnum;
+	      else if (strcmp(name,"DeltaDsl")==0) return DeltaDslEnum;
+	      else if (strcmp(name,"DslOld")==0) return DslOldEnum;
+	      else if (strcmp(name,"Dsl")==0) return DslEnum;
+	      else if (strcmp(name,"DeltaStr")==0) return DeltaStrEnum;
+	      else if (strcmp(name,"StrOld")==0) return StrOldEnum;
+	      else if (strcmp(name,"Str")==0) return StrEnum;
+	      else if (strcmp(name,"DeviatoricStresseffective")==0) return DeviatoricStresseffectiveEnum;
+	      else if (strcmp(name,"DeviatoricStressxx")==0) return DeviatoricStressxxEnum;
+	      else if (strcmp(name,"DeviatoricStressxy")==0) return DeviatoricStressxyEnum;
+	      else if (strcmp(name,"DeviatoricStressxz")==0) return DeviatoricStressxzEnum;
+	      else if (strcmp(name,"DeviatoricStressyy")==0) return DeviatoricStressyyEnum;
+	      else if (strcmp(name,"DeviatoricStressyz")==0) return DeviatoricStressyzEnum;
+	      else if (strcmp(name,"DeviatoricStresszz")==0) return DeviatoricStresszzEnum;
+	      else if (strcmp(name,"DeviatoricStress1")==0) return DeviatoricStress1Enum;
+	      else if (strcmp(name,"DeviatoricStress2")==0) return DeviatoricStress2Enum;
+	      else if (strcmp(name,"DistanceToCalvingfront")==0) return DistanceToCalvingfrontEnum;
+	      else if (strcmp(name,"DistanceToGroundingline")==0) return DistanceToGroundinglineEnum;
+	      else if (strcmp(name,"Domain2Dhorizontal")==0) return Domain2DhorizontalEnum;
+	      else if (strcmp(name,"Domain2Dvertical")==0) return Domain2DverticalEnum;
+	      else if (strcmp(name,"Domain3D")==0) return Domain3DEnum;
+	      else if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum;
+	      else if (strcmp(name,"DrivingStressX")==0) return DrivingStressXEnum;
+	      else if (strcmp(name,"DrivingStressY")==0) return DrivingStressYEnum;
+	      else if (strcmp(name,"Dummy")==0) return DummyEnum;
+	      else if (strcmp(name,"EffectivePressure")==0) return EffectivePressureEnum;
+	      else if (strcmp(name,"EffectivePressureSubstep")==0) return EffectivePressureSubstepEnum;
+	      else if (strcmp(name,"EffectivePressureTransient")==0) return EffectivePressureTransientEnum;
+	      else if (strcmp(name,"Enthalpy")==0) return EnthalpyEnum;
+	      else if (strcmp(name,"EnthalpyPicard")==0) return EnthalpyPicardEnum;
+	      else if (strcmp(name,"EplHead")==0) return EplHeadEnum;
+	      else if (strcmp(name,"EplHeadOld")==0) return EplHeadOldEnum;
+	      else if (strcmp(name,"EplHeadSlopeX")==0) return EplHeadSlopeXEnum;
+	      else if (strcmp(name,"EplHeadSlopeY")==0) return EplHeadSlopeYEnum;
+	      else if (strcmp(name,"EplHeadSubstep")==0) return EplHeadSubstepEnum;
+	      else if (strcmp(name,"EplHeadTransient")==0) return EplHeadTransientEnum;
+	      else if (strcmp(name,"EsaEmotion")==0) return EsaEmotionEnum;
+	      else if (strcmp(name,"EsaNmotion")==0) return EsaNmotionEnum;
+	      else if (strcmp(name,"EsaRotationrate")==0) return EsaRotationrateEnum;
+	      else if (strcmp(name,"EsaStrainratexx")==0) return EsaStrainratexxEnum;
+	      else if (strcmp(name,"EsaStrainratexy")==0) return EsaStrainratexyEnum;
+	      else if (strcmp(name,"EsaStrainrateyy")==0) return EsaStrainrateyyEnum;
+	      else if (strcmp(name,"EsaUmotion")==0) return EsaUmotionEnum;
+	      else if (strcmp(name,"EsaXmotion")==0) return EsaXmotionEnum;
+	      else if (strcmp(name,"EsaYmotion")==0) return EsaYmotionEnum;
+	      else if (strcmp(name,"EtaDiff")==0) return EtaDiffEnum;
+	      else if (strcmp(name,"FlowequationBorderFS")==0) return FlowequationBorderFSEnum;
+	      else if (strcmp(name,"FrictionAs")==0) return FrictionAsEnum;
+	      else if (strcmp(name,"FrictionC")==0) return FrictionCEnum;
+	      else if (strcmp(name,"FrictionCmax")==0) return FrictionCmaxEnum;
+	      else if (strcmp(name,"FrictionCoefficient")==0) return FrictionCoefficientEnum;
+	      else if (strcmp(name,"FrictionCoefficientcoulomb")==0) return FrictionCoefficientcoulombEnum;
+	      else if (strcmp(name,"FrictionEffectivePressure")==0) return FrictionEffectivePressureEnum;
+	      else if (strcmp(name,"FrictionK")==0) return FrictionKEnum;
+	      else if (strcmp(name,"FrictionM")==0) return FrictionMEnum;
+	      else if (strcmp(name,"FrictionP")==0) return FrictionPEnum;
+         else stage=8;
+   }
+   if(stage==8){
+	      if (strcmp(name,"FrictionPressureAdjustedTemperature")==0) return FrictionPressureAdjustedTemperatureEnum;
+	      else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
+	      else if (strcmp(name,"FrictionSedimentCompressibilityCoefficient")==0) return FrictionSedimentCompressibilityCoefficientEnum;
+	      else if (strcmp(name,"FrictionTillFrictionAngle")==0) return FrictionTillFrictionAngleEnum;
+	      else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum;
+	      else if (strcmp(name,"FrictionWaterPressure")==0) return FrictionWaterPressureEnum;
+	      else if (strcmp(name,"FrictionWaterPressureNoise")==0) return FrictionWaterPressureNoiseEnum;
+	      else if (strcmp(name,"Frictionf")==0) return FrictionfEnum;
+	      else if (strcmp(name,"FrontalForcingsBasinId")==0) return FrontalForcingsBasinIdEnum;
+	      else if (strcmp(name,"FrontalForcingsSubglacialDischargearma")==0) return FrontalForcingsSubglacialDischargearmaEnum;
+	      else if (strcmp(name,"FrontalForcingsSubglacialDischarge")==0) return FrontalForcingsSubglacialDischargeEnum;
+	      else if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum;
+	      else if (strcmp(name,"NGia")==0) return NGiaEnum;
+	      else if (strcmp(name,"NGiaRate")==0) return NGiaRateEnum;
+	      else if (strcmp(name,"UGia")==0) return UGiaEnum;
+	      else if (strcmp(name,"UGiaRate")==0) return UGiaRateEnum;
+	      else if (strcmp(name,"Gradient")==0) return GradientEnum;
+	      else if (strcmp(name,"GroundinglineHeight")==0) return GroundinglineHeightEnum;
+	      else if (strcmp(name,"HydraulicPotential")==0) return HydraulicPotentialEnum;
+	      else if (strcmp(name,"HydraulicPotentialOld")==0) return HydraulicPotentialOldEnum;
+	      else if (strcmp(name,"HydrologyBasalFlux")==0) return HydrologyBasalFluxEnum;
+	      else if (strcmp(name,"HydrologyBasinsId")==0) return HydrologyBasinsIdEnum;
+	      else if (strcmp(name,"HydrologyBumpHeight")==0) return HydrologyBumpHeightEnum;
+	      else if (strcmp(name,"HydrologyBumpSpacing")==0) return HydrologyBumpSpacingEnum;
+	      else if (strcmp(name,"HydrologyChannelConductivity")==0) return HydrologyChannelConductivityEnum;
+	      else if (strcmp(name,"HydrologydcBasalMoulinInput")==0) return HydrologydcBasalMoulinInputEnum;
+	      else if (strcmp(name,"HydrologydcEplThickness")==0) return HydrologydcEplThicknessEnum;
+	      else if (strcmp(name,"HydrologydcEplThicknessOld")==0) return HydrologydcEplThicknessOldEnum;
+	      else if (strcmp(name,"HydrologydcEplThicknessSubstep")==0) return HydrologydcEplThicknessSubstepEnum;
+	      else if (strcmp(name,"HydrologydcEplThicknessTransient")==0) return HydrologydcEplThicknessTransientEnum;
+	      else if (strcmp(name,"HydrologydcMaskEplactiveElt")==0) return HydrologydcMaskEplactiveEltEnum;
+	      else if (strcmp(name,"HydrologydcMaskEplactiveNode")==0) return HydrologydcMaskEplactiveNodeEnum;
+	      else if (strcmp(name,"HydrologydcMaskThawedElt")==0) return HydrologydcMaskThawedEltEnum;
+	      else if (strcmp(name,"HydrologydcMaskThawedNode")==0) return HydrologydcMaskThawedNodeEnum;
+	      else if (strcmp(name,"HydrologydcSedimentTransmitivity")==0) return HydrologydcSedimentTransmitivityEnum;
+	      else if (strcmp(name,"HydrologyDrainageRate")==0) return HydrologyDrainageRateEnum;
+	      else if (strcmp(name,"HydrologyEnglacialInput")==0) return HydrologyEnglacialInputEnum;
+	      else if (strcmp(name,"HydrologyGapHeight")==0) return HydrologyGapHeightEnum;
+	      else if (strcmp(name,"HydrologyGapHeightX")==0) return HydrologyGapHeightXEnum;
+	      else if (strcmp(name,"HydrologyGapHeightXX")==0) return HydrologyGapHeightXXEnum;
+	      else if (strcmp(name,"HydrologyGapHeightY")==0) return HydrologyGapHeightYEnum;
+	      else if (strcmp(name,"HydrologyGapHeightYY")==0) return HydrologyGapHeightYYEnum;
+	      else if (strcmp(name,"HydrologyHead")==0) return HydrologyHeadEnum;
+	      else if (strcmp(name,"HydrologyHeadOld")==0) return HydrologyHeadOldEnum;
+	      else if (strcmp(name,"HydrologyMoulinInput")==0) return HydrologyMoulinInputEnum;
+	      else if (strcmp(name,"HydrologyNeumannflux")==0) return HydrologyNeumannfluxEnum;
+	      else if (strcmp(name,"HydrologyReynolds")==0) return HydrologyReynoldsEnum;
+	      else if (strcmp(name,"HydrologySheetConductivity")==0) return HydrologySheetConductivityEnum;
+	      else if (strcmp(name,"HydrologySheetThickness")==0) return HydrologySheetThicknessEnum;
+	      else if (strcmp(name,"HydrologySheetThicknessOld")==0) return HydrologySheetThicknessOldEnum;
+	      else if (strcmp(name,"HydrologyTws")==0) return HydrologyTwsEnum;
+	      else if (strcmp(name,"HydrologyTwsSpc")==0) return HydrologyTwsSpcEnum;
+	      else if (strcmp(name,"HydrologyTwsAnalysis")==0) return HydrologyTwsAnalysisEnum;
+	      else if (strcmp(name,"HydrologyWatercolumnMax")==0) return HydrologyWatercolumnMaxEnum;
+	      else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;
+	      else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
+	      else if (strcmp(name,"HydrologyMaskNodeActivation")==0) return HydrologyMaskNodeActivationEnum;
+	      else if (strcmp(name,"DebrisMaskNodeActivation")==0) return DebrisMaskNodeActivationEnum;
+	      else if (strcmp(name,"Ice")==0) return IceEnum;
+	      else if (strcmp(name,"IceMaskNodeActivation")==0) return IceMaskNodeActivationEnum;
+	      else if (strcmp(name,"Input")==0) return InputEnum;
+	      else if (strcmp(name,"InversionCostFunctionsCoefficients")==0) return InversionCostFunctionsCoefficientsEnum;
+	      else if (strcmp(name,"InversionSurfaceObs")==0) return InversionSurfaceObsEnum;
+	      else if (strcmp(name,"InversionThicknessObs")==0) return InversionThicknessObsEnum;
+	      else if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum;
+	      else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum;
+	      else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum;
+	      else if (strcmp(name,"LevelsetfunctionSlopeX")==0) return LevelsetfunctionSlopeXEnum;
+	      else if (strcmp(name,"LevelsetfunctionSlopeY")==0) return LevelsetfunctionSlopeYEnum;
+	      else if (strcmp(name,"LevelsetObservation")==0) return LevelsetObservationEnum;
+	      else if (strcmp(name,"LoadingforceX")==0) return LoadingforceXEnum;
+	      else if (strcmp(name,"LoadingforceY")==0) return LoadingforceYEnum;
+	      else if (strcmp(name,"LoadingforceZ")==0) return LoadingforceZEnum;
+	      else if (strcmp(name,"MaskOceanLevelset")==0) return MaskOceanLevelsetEnum;
+	      else if (strcmp(name,"MaskIceLevelset")==0) return MaskIceLevelsetEnum;
+	      else if (strcmp(name,"MaskIceRefLevelset")==0) return MaskIceRefLevelsetEnum;
+	      else if (strcmp(name,"MasstransportSpcthickness")==0) return MasstransportSpcthicknessEnum;
+	      else if (strcmp(name,"MaterialsRheologyB")==0) return MaterialsRheologyBEnum;
+	      else if (strcmp(name,"MaterialsRheologyBbar")==0) return MaterialsRheologyBbarEnum;
+	      else if (strcmp(name,"MaterialsRheologyE")==0) return MaterialsRheologyEEnum;
+	      else if (strcmp(name,"MaterialsRheologyEbar")==0) return MaterialsRheologyEbarEnum;
+	      else if (strcmp(name,"MaterialsRheologyEc")==0) return MaterialsRheologyEcEnum;
+	      else if (strcmp(name,"MaterialsRheologyEcbar")==0) return MaterialsRheologyEcbarEnum;
+	      else if (strcmp(name,"MaterialsRheologyEs")==0) return MaterialsRheologyEsEnum;
+	      else if (strcmp(name,"MaterialsRheologyEsbar")==0) return MaterialsRheologyEsbarEnum;
+	      else if (strcmp(name,"MaterialsRheologyN")==0) return MaterialsRheologyNEnum;
+	      else if (strcmp(name,"MeshScaleFactor")==0) return MeshScaleFactorEnum;
+	      else if (strcmp(name,"MeshVertexonbase")==0) return MeshVertexonbaseEnum;
+	      else if (strcmp(name,"MeshVertexonboundary")==0) return MeshVertexonboundaryEnum;
+	      else if (strcmp(name,"MeshVertexonsurface")==0) return MeshVertexonsurfaceEnum;
+	      else if (strcmp(name,"Misfit")==0) return MisfitEnum;
+	      else if (strcmp(name,"MovingFrontalVx")==0) return MovingFrontalVxEnum;
+	      else if (strcmp(name,"MovingFrontalVy")==0) return MovingFrontalVyEnum;
+	      else if (strcmp(name,"Neumannflux")==0) return NeumannfluxEnum;
+	      else if (strcmp(name,"NewDamage")==0) return NewDamageEnum;
+	      else if (strcmp(name,"Node")==0) return NodeEnum;
+	      else if (strcmp(name,"OmegaAbsGradient")==0) return OmegaAbsGradientEnum;
+	      else if (strcmp(name,"OceantransportSpcbottompressure")==0) return OceantransportSpcbottompressureEnum;
+	      else if (strcmp(name,"OceantransportSpcstr")==0) return OceantransportSpcstrEnum;
+	      else if (strcmp(name,"OceantransportSpcdsl")==0) return OceantransportSpcdslEnum;
+	      else if (strcmp(name,"P0")==0) return P0Enum;
+	      else if (strcmp(name,"P1")==0) return P1Enum;
+	      else if (strcmp(name,"Partitioning")==0) return PartitioningEnum;
+	      else if (strcmp(name,"Pressure")==0) return PressureEnum;
+	      else if (strcmp(name,"Radar")==0) return RadarEnum;
+	      else if (strcmp(name,"RadarAttenuationMacGregor")==0) return RadarAttenuationMacGregorEnum;
+	      else if (strcmp(name,"RadarAttenuationWolff")==0) return RadarAttenuationWolffEnum;
+	      else if (strcmp(name,"RadarIcePeriod")==0) return RadarIcePeriodEnum;
+	      else if (strcmp(name,"RadarPowerMacGregor")==0) return RadarPowerMacGregorEnum;
+	      else if (strcmp(name,"RadarPowerWolff")==0) return RadarPowerWolffEnum;
+	      else if (strcmp(name,"RheologyBAbsGradient")==0) return RheologyBAbsGradientEnum;
+	      else if (strcmp(name,"RheologyBInitialguess")==0) return RheologyBInitialguessEnum;
+	      else if (strcmp(name,"RheologyBInitialguessMisfit")==0) return RheologyBInitialguessMisfitEnum;
+	      else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
+	      else if (strcmp(name,"Sample")==0) return SampleEnum;
+	      else if (strcmp(name,"SampleOld")==0) return SampleOldEnum;
+	      else if (strcmp(name,"SampleNoise")==0) return SampleNoiseEnum;
+	      else if (strcmp(name,"SamplingBeta")==0) return SamplingBetaEnum;
+	      else if (strcmp(name,"SamplingKappa")==0) return SamplingKappaEnum;
+	      else if (strcmp(name,"SamplingPhi")==0) return SamplingPhiEnum;
+         else stage=9;
+   }
+   if(stage==9){
+	      if (strcmp(name,"SamplingTau")==0) return SamplingTauEnum;
+	      else if (strcmp(name,"Sealevel")==0) return SealevelEnum;
+	      else if (strcmp(name,"SealevelGRD")==0) return SealevelGRDEnum;
+	      else if (strcmp(name,"SatGraviGRD")==0) return SatGraviGRDEnum;
+	      else if (strcmp(name,"SealevelBarystaticMask")==0) return SealevelBarystaticMaskEnum;
+	      else if (strcmp(name,"SealevelBarystaticIceMask")==0) return SealevelBarystaticIceMaskEnum;
+	      else if (strcmp(name,"SealevelBarystaticIceWeights")==0) return SealevelBarystaticIceWeightsEnum;
+	      else if (strcmp(name,"SealevelBarystaticIceArea")==0) return SealevelBarystaticIceAreaEnum;
+	      else if (strcmp(name,"SealevelBarystaticIceLatbar")==0) return SealevelBarystaticIceLatbarEnum;
+	      else if (strcmp(name,"SealevelBarystaticIceLongbar")==0) return SealevelBarystaticIceLongbarEnum;
+	      else if (strcmp(name,"SealevelBarystaticIceLoad")==0) return SealevelBarystaticIceLoadEnum;
+	      else if (strcmp(name,"SealevelBarystaticHydroMask")==0) return SealevelBarystaticHydroMaskEnum;
+	      else if (strcmp(name,"SealevelBarystaticHydroWeights")==0) return SealevelBarystaticHydroWeightsEnum;
+	      else if (strcmp(name,"SealevelBarystaticHydroArea")==0) return SealevelBarystaticHydroAreaEnum;
+	      else if (strcmp(name,"SealevelBarystaticHydroLatbar")==0) return SealevelBarystaticHydroLatbarEnum;
+	      else if (strcmp(name,"SealevelBarystaticHydroLongbar")==0) return SealevelBarystaticHydroLongbarEnum;
+	      else if (strcmp(name,"SealevelBarystaticHydroLoad")==0) return SealevelBarystaticHydroLoadEnum;
+	      else if (strcmp(name,"SealevelBarystaticBpMask")==0) return SealevelBarystaticBpMaskEnum;
+	      else if (strcmp(name,"SealevelBarystaticBpWeights")==0) return SealevelBarystaticBpWeightsEnum;
+	      else if (strcmp(name,"SealevelBarystaticBpArea")==0) return SealevelBarystaticBpAreaEnum;
+	      else if (strcmp(name,"SealevelBarystaticBpLoad")==0) return SealevelBarystaticBpLoadEnum;
+	      else if (strcmp(name,"SealevelBarystaticOceanMask")==0) return SealevelBarystaticOceanMaskEnum;
+	      else if (strcmp(name,"SealevelBarystaticOceanWeights")==0) return SealevelBarystaticOceanWeightsEnum;
+	      else if (strcmp(name,"SealevelBarystaticOceanArea")==0) return SealevelBarystaticOceanAreaEnum;
+	      else if (strcmp(name,"SealevelBarystaticOceanLatbar")==0) return SealevelBarystaticOceanLatbarEnum;
+	      else if (strcmp(name,"SealevelBarystaticOceanLongbar")==0) return SealevelBarystaticOceanLongbarEnum;
+	      else if (strcmp(name,"SealevelBarystaticOceanLoad")==0) return SealevelBarystaticOceanLoadEnum;
+	      else if (strcmp(name,"SealevelNEsa")==0) return SealevelNEsaEnum;
+	      else if (strcmp(name,"SealevelNEsaRate")==0) return SealevelNEsaRateEnum;
+	      else if (strcmp(name,"SealevelRSL")==0) return SealevelRSLEnum;
+	      else if (strcmp(name,"Bslc")==0) return BslcEnum;
+	      else if (strcmp(name,"BslcIce")==0) return BslcIceEnum;
+	      else if (strcmp(name,"BslcHydro")==0) return BslcHydroEnum;
+	      else if (strcmp(name,"BslcOcean")==0) return BslcOceanEnum;
+	      else if (strcmp(name,"BslcRate")==0) return BslcRateEnum;
+	      else if (strcmp(name,"Gmtslc")==0) return GmtslcEnum;
+	      else if (strcmp(name,"SealevelRSLBarystatic")==0) return SealevelRSLBarystaticEnum;
+	      else if (strcmp(name,"SealevelRSLRate")==0) return SealevelRSLRateEnum;
+	      else if (strcmp(name,"SealevelUGrd")==0) return SealevelUGrdEnum;
+	      else if (strcmp(name,"SealevelNGrd")==0) return SealevelNGrdEnum;
+	      else if (strcmp(name,"SealevelUEastEsa")==0) return SealevelUEastEsaEnum;
+	      else if (strcmp(name,"SealevelUNorthEsa")==0) return SealevelUNorthEsaEnum;
+	      else if (strcmp(name,"SealevelchangeIndices")==0) return SealevelchangeIndicesEnum;
+	      else if (strcmp(name,"SealevelchangeConvolutionVertices")==0) return SealevelchangeConvolutionVerticesEnum;
+	      else if (strcmp(name,"SealevelchangeAlphaIndex")==0) return SealevelchangeAlphaIndexEnum;
+	      else if (strcmp(name,"SealevelchangeAzimuthIndex")==0) return SealevelchangeAzimuthIndexEnum;
+	      else if (strcmp(name,"SealevelchangeGrot")==0) return SealevelchangeGrotEnum;
+	      else if (strcmp(name,"SealevelchangeGSatGravirot")==0) return SealevelchangeGSatGravirotEnum;
+	      else if (strcmp(name,"SealevelchangeGUrot")==0) return SealevelchangeGUrotEnum;
+	      else if (strcmp(name,"SealevelchangeGNrot")==0) return SealevelchangeGNrotEnum;
+	      else if (strcmp(name,"SealevelchangeGErot")==0) return SealevelchangeGErotEnum;
+	      else if (strcmp(name,"SealevelchangeAlphaIndexOcean")==0) return SealevelchangeAlphaIndexOceanEnum;
+	      else if (strcmp(name,"SealevelchangeAlphaIndexIce")==0) return SealevelchangeAlphaIndexIceEnum;
+	      else if (strcmp(name,"SealevelchangeAlphaIndexHydro")==0) return SealevelchangeAlphaIndexHydroEnum;
+	      else if (strcmp(name,"SealevelchangeAzimuthIndexOcean")==0) return SealevelchangeAzimuthIndexOceanEnum;
+	      else if (strcmp(name,"SealevelchangeAzimuthIndexIce")==0) return SealevelchangeAzimuthIndexIceEnum;
+	      else if (strcmp(name,"SealevelchangeAzimuthIndexHydro")==0) return SealevelchangeAzimuthIndexHydroEnum;
+	      else if (strcmp(name,"SealevelchangeViscousRSL")==0) return SealevelchangeViscousRSLEnum;
+	      else if (strcmp(name,"SealevelchangeViscousSG")==0) return SealevelchangeViscousSGEnum;
+	      else if (strcmp(name,"SealevelchangeViscousU")==0) return SealevelchangeViscousUEnum;
+	      else if (strcmp(name,"SealevelchangeViscousN")==0) return SealevelchangeViscousNEnum;
+	      else if (strcmp(name,"SealevelchangeViscousE")==0) return SealevelchangeViscousEEnum;
+	      else if (strcmp(name,"CouplingTransferCount")==0) return CouplingTransferCountEnum;
+	      else if (strcmp(name,"SedimentHead")==0) return SedimentHeadEnum;
+	      else if (strcmp(name,"SedimentHeadOld")==0) return SedimentHeadOldEnum;
+	      else if (strcmp(name,"SedimentHeadSubstep")==0) return SedimentHeadSubstepEnum;
+	      else if (strcmp(name,"SedimentHeadTransient")==0) return SedimentHeadTransientEnum;
+	      else if (strcmp(name,"SedimentHeadResidual")==0) return SedimentHeadResidualEnum;
+	      else if (strcmp(name,"SedimentHeadStacked")==0) return SedimentHeadStackedEnum;
+	      else if (strcmp(name,"SigmaNN")==0) return SigmaNNEnum;
+	      else if (strcmp(name,"SigmaVM")==0) return SigmaVMEnum;
+	      else if (strcmp(name,"SmbAccumulatedEC")==0) return SmbAccumulatedECEnum;
+	      else if (strcmp(name,"SmbAccumulatedMassBalance")==0) return SmbAccumulatedMassBalanceEnum;
+	      else if (strcmp(name,"SmbAccumulatedMelt")==0) return SmbAccumulatedMeltEnum;
+	      else if (strcmp(name,"SmbAccumulatedPrecipitation")==0) return SmbAccumulatedPrecipitationEnum;
+	      else if (strcmp(name,"SmbAccumulatedRain")==0) return SmbAccumulatedRainEnum;
+	      else if (strcmp(name,"SmbAccumulatedRefreeze")==0) return SmbAccumulatedRefreezeEnum;
+	      else if (strcmp(name,"SmbAccumulatedRunoff")==0) return SmbAccumulatedRunoffEnum;
+	      else if (strcmp(name,"SmbAlbedo")==0) return SmbAlbedoEnum;
+	      else if (strcmp(name,"SmbAlbedoInit")==0) return SmbAlbedoInitEnum;
+	      else if (strcmp(name,"SmbAlbedoSnow")==0) return SmbAlbedoSnowEnum;
+	      else if (strcmp(name,"SmbAlbedoSnowInit")==0) return SmbAlbedoSnowInitEnum;
+	      else if (strcmp(name,"SmbA")==0) return SmbAEnum;
+	      else if (strcmp(name,"SmbAdiff")==0) return SmbAdiffEnum;
+	      else if (strcmp(name,"SmbAValue")==0) return SmbAValueEnum;
+	      else if (strcmp(name,"SmbAccumulation")==0) return SmbAccumulationEnum;
+	      else if (strcmp(name,"SmbAdiffini")==0) return SmbAdiffiniEnum;
+	      else if (strcmp(name,"SmbAini")==0) return SmbAiniEnum;
+	      else if (strcmp(name,"SmbARMANoise")==0) return SmbARMANoiseEnum;
+	      else if (strcmp(name,"SmbBasinsId")==0) return SmbBasinsIdEnum;
+	      else if (strcmp(name,"SmbBMax")==0) return SmbBMaxEnum;
+	      else if (strcmp(name,"SmbBMin")==0) return SmbBMinEnum;
+	      else if (strcmp(name,"SmbBNeg")==0) return SmbBNegEnum;
+	      else if (strcmp(name,"SmbBPos")==0) return SmbBPosEnum;
+	      else if (strcmp(name,"SmbC")==0) return SmbCEnum;
+	      else if (strcmp(name,"SmbCcsnowValue")==0) return SmbCcsnowValueEnum;
+	      else if (strcmp(name,"SmbCciceValue")==0) return SmbCciceValueEnum;
+	      else if (strcmp(name,"SmbCotValue")==0) return SmbCotValueEnum;
+	      else if (strcmp(name,"SmbD")==0) return SmbDEnum;
+	      else if (strcmp(name,"SmbDailyairdensity")==0) return SmbDailyairdensityEnum;
+	      else if (strcmp(name,"SmbDailyairhumidity")==0) return SmbDailyairhumidityEnum;
+	      else if (strcmp(name,"SmbDailydlradiation")==0) return SmbDailydlradiationEnum;
+	      else if (strcmp(name,"SmbDailydsradiation")==0) return SmbDailydsradiationEnum;
+	      else if (strcmp(name,"SmbDailypressure")==0) return SmbDailypressureEnum;
+	      else if (strcmp(name,"SmbDailyrainfall")==0) return SmbDailyrainfallEnum;
+	      else if (strcmp(name,"SmbDailysnowfall")==0) return SmbDailysnowfallEnum;
+	      else if (strcmp(name,"SmbDailytemperature")==0) return SmbDailytemperatureEnum;
+	      else if (strcmp(name,"SmbDailywindspeed")==0) return SmbDailywindspeedEnum;
+	      else if (strcmp(name,"SmbDini")==0) return SmbDiniEnum;
+	      else if (strcmp(name,"SmbDlwrf")==0) return SmbDlwrfEnum;
+	      else if (strcmp(name,"SmbDulwrfValue")==0) return SmbDulwrfValueEnum;
+	      else if (strcmp(name,"SmbDswrf")==0) return SmbDswrfEnum;
+	      else if (strcmp(name,"SmbDswdiffrf")==0) return SmbDswdiffrfEnum;
+	      else if (strcmp(name,"SmbDzAdd")==0) return SmbDzAddEnum;
+	      else if (strcmp(name,"SmbDz")==0) return SmbDzEnum;
+	      else if (strcmp(name,"SmbDzMin")==0) return SmbDzMinEnum;
+	      else if (strcmp(name,"SmbDzTop")==0) return SmbDzTopEnum;
+	      else if (strcmp(name,"SmbDzini")==0) return SmbDziniEnum;
+	      else if (strcmp(name,"SmbEAir")==0) return SmbEAirEnum;
+	      else if (strcmp(name,"SmbEC")==0) return SmbECEnum;
+         else stage=10;
+   }
+   if(stage==10){
+	      if (strcmp(name,"SmbECDt")==0) return SmbECDtEnum;
+	      else if (strcmp(name,"SmbECini")==0) return SmbECiniEnum;
+	      else if (strcmp(name,"SmbEla")==0) return SmbElaEnum;
+	      else if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum;
+	      else if (strcmp(name,"SmbFAC")==0) return SmbFACEnum;
+	      else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum;
+	      else if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum;
+	      else if (strcmp(name,"SmbGsp")==0) return SmbGspEnum;
+	      else if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum;
+	      else if (strcmp(name,"SmbHIce")==0) return SmbHIceEnum;
+	      else if (strcmp(name,"SmbHIceInit")==0) return SmbHIceInitEnum;
+	      else if (strcmp(name,"SmbHSnow")==0) return SmbHSnowEnum;
+	      else if (strcmp(name,"SmbHSnowInit")==0) return SmbHSnowInitEnum;
+	      else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum;
+	      else if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;
+	      else if (strcmp(name,"SmbMAdd")==0) return SmbMAddEnum;
+	      else if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum;
+	      else if (strcmp(name,"SmbMassBalanceSnow")==0) return SmbMassBalanceSnowEnum;
+	      else if (strcmp(name,"SmbMassBalanceIce")==0) return SmbMassBalanceIceEnum;
+	      else if (strcmp(name,"SmbMassBalanceSemic")==0) return SmbMassBalanceSemicEnum;
+	      else if (strcmp(name,"SmbMassBalanceSubstep")==0) return SmbMassBalanceSubstepEnum;
+	      else if (strcmp(name,"SmbMassBalanceTransient")==0) return SmbMassBalanceTransientEnum;
+	      else if (strcmp(name,"SmbMask")==0) return SmbMaskEnum;
+	      else if (strcmp(name,"SmbMeanLHF")==0) return SmbMeanLHFEnum;
+	      else if (strcmp(name,"SmbMeanSHF")==0) return SmbMeanSHFEnum;
+	      else if (strcmp(name,"SmbMeanULW")==0) return SmbMeanULWEnum;
+	      else if (strcmp(name,"SmbMelt")==0) return SmbMeltEnum;
+	      else if (strcmp(name,"SmbMonthlytemperatures")==0) return SmbMonthlytemperaturesEnum;
+	      else if (strcmp(name,"SmbMonthlydsradiation")==0) return SmbMonthlydsradiationEnum;
+	      else if (strcmp(name,"SmbMonthlydlradiation")==0) return SmbMonthlydlradiationEnum;
+	      else if (strcmp(name,"SmbMonthlywindspeed")==0) return SmbMonthlywindspeedEnum;
+	      else if (strcmp(name,"SmbMonthlyairhumidity")==0) return SmbMonthlyairhumidityEnum;
+	      else if (strcmp(name,"SmbMSurf")==0) return SmbMSurfEnum;
+	      else if (strcmp(name,"SmbNetLW")==0) return SmbNetLWEnum;
+	      else if (strcmp(name,"SmbNetSW")==0) return SmbNetSWEnum;
+	      else if (strcmp(name,"SmbPAir")==0) return SmbPAirEnum;
+	      else if (strcmp(name,"SmbP")==0) return SmbPEnum;
+	      else if (strcmp(name,"SmbPddfacIce")==0) return SmbPddfacIceEnum;
+	      else if (strcmp(name,"SmbPddfacSnow")==0) return SmbPddfacSnowEnum;
+	      else if (strcmp(name,"SmbPrecipitation")==0) return SmbPrecipitationEnum;
+	      else if (strcmp(name,"SmbPrecipitationsAnomaly")==0) return SmbPrecipitationsAnomalyEnum;
+	      else if (strcmp(name,"SmbDsradiationAnomaly")==0) return SmbDsradiationAnomalyEnum;
+	      else if (strcmp(name,"SmbDlradiationAnomaly")==0) return SmbDlradiationAnomalyEnum;
+	      else if (strcmp(name,"SmbWindspeedAnomaly")==0) return SmbWindspeedAnomalyEnum;
+	      else if (strcmp(name,"SmbAirhumidityAnomaly")==0) return SmbAirhumidityAnomalyEnum;
+	      else if (strcmp(name,"SmbPrecipitationsLgm")==0) return SmbPrecipitationsLgmEnum;
+	      else if (strcmp(name,"SmbPrecipitationsPresentday")==0) return SmbPrecipitationsPresentdayEnum;
+	      else if (strcmp(name,"SmbPrecipitationsReconstructed")==0) return SmbPrecipitationsReconstructedEnum;
+	      else if (strcmp(name,"SmbRain")==0) return SmbRainEnum;
+	      else if (strcmp(name,"SmbRe")==0) return SmbReEnum;
+	      else if (strcmp(name,"SmbRefreeze")==0) return SmbRefreezeEnum;
+	      else if (strcmp(name,"SmbReini")==0) return SmbReiniEnum;
+	      else if (strcmp(name,"SmbRunoff")==0) return SmbRunoffEnum;
+	      else if (strcmp(name,"SmbRunoffSubstep")==0) return SmbRunoffSubstepEnum;
+	      else if (strcmp(name,"SmbRunoffTransient")==0) return SmbRunoffTransientEnum;
+	      else if (strcmp(name,"SmbS0gcm")==0) return SmbS0gcmEnum;
+	      else if (strcmp(name,"SmbS0p")==0) return SmbS0pEnum;
+	      else if (strcmp(name,"SmbS0t")==0) return SmbS0tEnum;
+	      else if (strcmp(name,"SmbSemicQmr")==0) return SmbSemicQmrEnum;
+	      else if (strcmp(name,"SmbSemicQmrInit")==0) return SmbSemicQmrInitEnum;
+	      else if (strcmp(name,"SmbSizeini")==0) return SmbSizeiniEnum;
+	      else if (strcmp(name,"SmbSmbCorr")==0) return SmbSmbCorrEnum;
+	      else if (strcmp(name,"SmbSmbref")==0) return SmbSmbrefEnum;
+	      else if (strcmp(name,"SmbSzaValue")==0) return SmbSzaValueEnum;
+	      else if (strcmp(name,"SmbSummerMelt")==0) return SmbSummerMeltEnum;
+	      else if (strcmp(name,"SmbSummerAlbedo")==0) return SmbSummerAlbedoEnum;
+	      else if (strcmp(name,"SmbSnowheight")==0) return SmbSnowheightEnum;
+	      else if (strcmp(name,"SmbT")==0) return SmbTEnum;
+	      else if (strcmp(name,"SmbTa")==0) return SmbTaEnum;
+	      else if (strcmp(name,"SmbTamp")==0) return SmbTampEnum;
+	      else if (strcmp(name,"SmbTeValue")==0) return SmbTeValueEnum;
+	      else if (strcmp(name,"SmbTemperaturesAnomaly")==0) return SmbTemperaturesAnomalyEnum;
+	      else if (strcmp(name,"SmbTemperaturesLgm")==0) return SmbTemperaturesLgmEnum;
+	      else if (strcmp(name,"SmbTemperaturesPresentday")==0) return SmbTemperaturesPresentdayEnum;
+	      else if (strcmp(name,"SmbTemperaturesReconstructed")==0) return SmbTemperaturesReconstructedEnum;
+	      else if (strcmp(name,"SmbTini")==0) return SmbTiniEnum;
+	      else if (strcmp(name,"SmbTmean")==0) return SmbTmeanEnum;
+	      else if (strcmp(name,"SmbTz")==0) return SmbTzEnum;
+	      else if (strcmp(name,"SmbValuesAutoregression")==0) return SmbValuesAutoregressionEnum;
+	      else if (strcmp(name,"SmbValuesMovingaverage")==0) return SmbValuesMovingaverageEnum;
+	      else if (strcmp(name,"SmbV")==0) return SmbVEnum;
+	      else if (strcmp(name,"SmbVmean")==0) return SmbVmeanEnum;
+	      else if (strcmp(name,"SmbVz")==0) return SmbVzEnum;
+	      else if (strcmp(name,"SmbW")==0) return SmbWEnum;
+	      else if (strcmp(name,"SmbWAdd")==0) return SmbWAddEnum;
+	      else if (strcmp(name,"SmbWini")==0) return SmbWiniEnum;
+	      else if (strcmp(name,"SmbZMax")==0) return SmbZMaxEnum;
+	      else if (strcmp(name,"SmbZMin")==0) return SmbZMinEnum;
+	      else if (strcmp(name,"SmbZTop")==0) return SmbZTopEnum;
+	      else if (strcmp(name,"SmbZY")==0) return SmbZYEnum;
+	      else if (strcmp(name,"SolidearthExternalDisplacementEastRate")==0) return SolidearthExternalDisplacementEastRateEnum;
+	      else if (strcmp(name,"SolidearthExternalDisplacementNorthRate")==0) return SolidearthExternalDisplacementNorthRateEnum;
+	      else if (strcmp(name,"SolidearthExternalDisplacementUpRate")==0) return SolidearthExternalDisplacementUpRateEnum;
+	      else if (strcmp(name,"SolidearthExternalGeoidRate")==0) return SolidearthExternalGeoidRateEnum;
+	      else if (strcmp(name,"StochasticForcingDefaultId")==0) return StochasticForcingDefaultIdEnum;
+	      else if (strcmp(name,"StrainRateeffective")==0) return StrainRateeffectiveEnum;
+	      else if (strcmp(name,"StrainRateparallel")==0) return StrainRateparallelEnum;
+	      else if (strcmp(name,"StrainRateperpendicular")==0) return StrainRateperpendicularEnum;
+	      else if (strcmp(name,"StrainRatexx")==0) return StrainRatexxEnum;
+	      else if (strcmp(name,"StrainRatexy")==0) return StrainRatexyEnum;
+	      else if (strcmp(name,"StrainRatexz")==0) return StrainRatexzEnum;
+	      else if (strcmp(name,"StrainRateyy")==0) return StrainRateyyEnum;
+	      else if (strcmp(name,"StrainRateyz")==0) return StrainRateyzEnum;
+	      else if (strcmp(name,"StrainRatezz")==0) return StrainRatezzEnum;
+	      else if (strcmp(name,"StressMaxPrincipal")==0) return StressMaxPrincipalEnum;
+	      else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum;
+	      else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum;
+	      else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum;
+	      else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
+	      else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;
+	      else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum;
+	      else if (strcmp(name,"SubglacialdischargeARMANoise")==0) return SubglacialdischargeARMANoiseEnum;
+	      else if (strcmp(name,"SubglacialdischargeValuesAutoregression")==0) return SubglacialdischargeValuesAutoregressionEnum;
+	      else if (strcmp(name,"SubglacialdischargeValuesMovingaverage")==0) return SubglacialdischargeValuesMovingaverageEnum;
+	      else if (strcmp(name,"SurfaceAbsMisfit")==0) return SurfaceAbsMisfitEnum;
+	      else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
+	      else if (strcmp(name,"Area")==0) return AreaEnum;
+	      else if (strcmp(name,"SealevelArea")==0) return SealevelAreaEnum;
+	      else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
+	      else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
+         else stage=11;
+   }
+   if(stage==11){
+	      if (strcmp(name,"SurfaceCrevasse")==0) return SurfaceCrevasseEnum;
+	      else if (strcmp(name,"Surface")==0) return SurfaceEnum;
+	      else if (strcmp(name,"SurfaceOld")==0) return SurfaceOldEnum;
+	      else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum;
+	      else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum;
+	      else if (strcmp(name,"SurfaceObservation")==0) return SurfaceObservationEnum;
+	      else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum;
+	      else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum;
+	      else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum;
+	      else if (strcmp(name,"Temperature")==0) return TemperatureEnum;
+	      else if (strcmp(name,"TemperaturePDD")==0) return TemperaturePDDEnum;
+	      else if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum;
+	      else if (strcmp(name,"TemperatureSEMIC")==0) return TemperatureSEMICEnum;
+	      else if (strcmp(name,"ThermalforcingARMANoise")==0) return ThermalforcingARMANoiseEnum;
+	      else if (strcmp(name,"ThermalForcing")==0) return ThermalForcingEnum;
+	      else if (strcmp(name,"ThermalforcingValuesAutoregression")==0) return ThermalforcingValuesAutoregressionEnum;
+	      else if (strcmp(name,"ThermalforcingValuesMovingaverage")==0) return ThermalforcingValuesMovingaverageEnum;
+	      else if (strcmp(name,"ThermalSpctemperature")==0) return ThermalSpctemperatureEnum;
+	      else if (strcmp(name,"ThicknessAbsGradient")==0) return ThicknessAbsGradientEnum;
+	      else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum;
+	      else if (strcmp(name,"ThicknessAcrossGradient")==0) return ThicknessAcrossGradientEnum;
+	      else if (strcmp(name,"ThicknessAlongGradient")==0) return ThicknessAlongGradientEnum;
+	      else if (strcmp(name,"Thickness")==0) return ThicknessEnum;
+	      else if (strcmp(name,"ThicknessOld")==0) return ThicknessOldEnum;
+	      else if (strcmp(name,"ThicknessPositive")==0) return ThicknessPositiveEnum;
+	      else if (strcmp(name,"ThicknessResidual")==0) return ThicknessResidualEnum;
+	      else if (strcmp(name,"TransientAccumulatedDeltaIceThickness")==0) return TransientAccumulatedDeltaIceThicknessEnum;
+	      else if (strcmp(name,"Vel")==0) return VelEnum;
+	      else if (strcmp(name,"VxAverage")==0) return VxAverageEnum;
+	      else if (strcmp(name,"VxBase")==0) return VxBaseEnum;
+	      else if (strcmp(name,"VxDebris")==0) return VxDebrisEnum;
+	      else if (strcmp(name,"Vx")==0) return VxEnum;
+	      else if (strcmp(name,"VxMesh")==0) return VxMeshEnum;
+	      else if (strcmp(name,"VxObs")==0) return VxObsEnum;
+	      else if (strcmp(name,"VxShear")==0) return VxShearEnum;
+	      else if (strcmp(name,"VxSurface")==0) return VxSurfaceEnum;
+	      else if (strcmp(name,"VyAverage")==0) return VyAverageEnum;
+	      else if (strcmp(name,"VyBase")==0) return VyBaseEnum;
+	      else if (strcmp(name,"VyDebris")==0) return VyDebrisEnum;
+	      else if (strcmp(name,"Vy")==0) return VyEnum;
+	      else if (strcmp(name,"VyMesh")==0) return VyMeshEnum;
+	      else if (strcmp(name,"VyObs")==0) return VyObsEnum;
+	      else if (strcmp(name,"VyShear")==0) return VyShearEnum;
+	      else if (strcmp(name,"VySurface")==0) return VySurfaceEnum;
+	      else if (strcmp(name,"Vz")==0) return VzEnum;
+	      else if (strcmp(name,"VzFS")==0) return VzFSEnum;
+	      else if (strcmp(name,"VzHO")==0) return VzHOEnum;
+	      else if (strcmp(name,"VzMesh")==0) return VzMeshEnum;
+	      else if (strcmp(name,"VzSSA")==0) return VzSSAEnum;
+	      else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum;
+	      else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
+	      else if (strcmp(name,"WaterfractionDrainage")==0) return WaterfractionDrainageEnum;
+	      else if (strcmp(name,"WaterfractionDrainageIntegrated")==0) return WaterfractionDrainageIntegratedEnum;
+	      else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
+	      else if (strcmp(name,"Waterheight")==0) return WaterheightEnum;
+	      else if (strcmp(name,"WaterPressureArmaPerturbation")==0) return WaterPressureArmaPerturbationEnum;
+	      else if (strcmp(name,"WaterPressureValuesAutoregression")==0) return WaterPressureValuesAutoregressionEnum;
+	      else if (strcmp(name,"WaterPressureValuesMovingaverage")==0) return WaterPressureValuesMovingaverageEnum;
+	      else if (strcmp(name,"WeightsLevelsetObservation")==0) return WeightsLevelsetObservationEnum;
+	      else if (strcmp(name,"WeightsMeltObservation")==0) return WeightsMeltObservationEnum;
+	      else if (strcmp(name,"WeightsVxObservation")==0) return WeightsVxObservationEnum;
+	      else if (strcmp(name,"WeightsVyObservation")==0) return WeightsVyObservationEnum;
+	      else if (strcmp(name,"WeightsSurfaceObservation")==0) return WeightsSurfaceObservationEnum;
+	      else if (strcmp(name,"OldAccumulatedDeltaBottomPressure")==0) return OldAccumulatedDeltaBottomPressureEnum;
+	      else if (strcmp(name,"OldAccumulatedDeltaIceThickness")==0) return OldAccumulatedDeltaIceThicknessEnum;
+	      else if (strcmp(name,"OldAccumulatedDeltaTws")==0) return OldAccumulatedDeltaTwsEnum;
+	      else if (strcmp(name,"Outputdefinition1")==0) return Outputdefinition1Enum;
+	      else if (strcmp(name,"Outputdefinition10")==0) return Outputdefinition10Enum;
+	      else if (strcmp(name,"Outputdefinition11")==0) return Outputdefinition11Enum;
+	      else if (strcmp(name,"Outputdefinition12")==0) return Outputdefinition12Enum;
+	      else if (strcmp(name,"Outputdefinition13")==0) return Outputdefinition13Enum;
+	      else if (strcmp(name,"Outputdefinition14")==0) return Outputdefinition14Enum;
+	      else if (strcmp(name,"Outputdefinition15")==0) return Outputdefinition15Enum;
+	      else if (strcmp(name,"Outputdefinition16")==0) return Outputdefinition16Enum;
+	      else if (strcmp(name,"Outputdefinition17")==0) return Outputdefinition17Enum;
+	      else if (strcmp(name,"Outputdefinition18")==0) return Outputdefinition18Enum;
+	      else if (strcmp(name,"Outputdefinition19")==0) return Outputdefinition19Enum;
+	      else if (strcmp(name,"Outputdefinition20")==0) return Outputdefinition20Enum;
+	      else if (strcmp(name,"Outputdefinition21")==0) return Outputdefinition21Enum;
+	      else if (strcmp(name,"Outputdefinition22")==0) return Outputdefinition22Enum;
+	      else if (strcmp(name,"Outputdefinition23")==0) return Outputdefinition23Enum;
+	      else if (strcmp(name,"Outputdefinition24")==0) return Outputdefinition24Enum;
+	      else if (strcmp(name,"Outputdefinition25")==0) return Outputdefinition25Enum;
+	      else if (strcmp(name,"Outputdefinition26")==0) return Outputdefinition26Enum;
+	      else if (strcmp(name,"Outputdefinition27")==0) return Outputdefinition27Enum;
+	      else if (strcmp(name,"Outputdefinition28")==0) return Outputdefinition28Enum;
+	      else if (strcmp(name,"Outputdefinition29")==0) return Outputdefinition29Enum;
+	      else if (strcmp(name,"Outputdefinition2")==0) return Outputdefinition2Enum;
+	      else if (strcmp(name,"Outputdefinition30")==0) return Outputdefinition30Enum;
+	      else if (strcmp(name,"Outputdefinition31")==0) return Outputdefinition31Enum;
+	      else if (strcmp(name,"Outputdefinition32")==0) return Outputdefinition32Enum;
+	      else if (strcmp(name,"Outputdefinition33")==0) return Outputdefinition33Enum;
+	      else if (strcmp(name,"Outputdefinition34")==0) return Outputdefinition34Enum;
+	      else if (strcmp(name,"Outputdefinition35")==0) return Outputdefinition35Enum;
+	      else if (strcmp(name,"Outputdefinition36")==0) return Outputdefinition36Enum;
+	      else if (strcmp(name,"Outputdefinition37")==0) return Outputdefinition37Enum;
+	      else if (strcmp(name,"Outputdefinition38")==0) return Outputdefinition38Enum;
+	      else if (strcmp(name,"Outputdefinition39")==0) return Outputdefinition39Enum;
+	      else if (strcmp(name,"Outputdefinition3")==0) return Outputdefinition3Enum;
+	      else if (strcmp(name,"Outputdefinition40")==0) return Outputdefinition40Enum;
+	      else if (strcmp(name,"Outputdefinition41")==0) return Outputdefinition41Enum;
+	      else if (strcmp(name,"Outputdefinition42")==0) return Outputdefinition42Enum;
+	      else if (strcmp(name,"Outputdefinition43")==0) return Outputdefinition43Enum;
+	      else if (strcmp(name,"Outputdefinition44")==0) return Outputdefinition44Enum;
+	      else if (strcmp(name,"Outputdefinition45")==0) return Outputdefinition45Enum;
+	      else if (strcmp(name,"Outputdefinition46")==0) return Outputdefinition46Enum;
+	      else if (strcmp(name,"Outputdefinition47")==0) return Outputdefinition47Enum;
+	      else if (strcmp(name,"Outputdefinition48")==0) return Outputdefinition48Enum;
+	      else if (strcmp(name,"Outputdefinition49")==0) return Outputdefinition49Enum;
+	      else if (strcmp(name,"Outputdefinition4")==0) return Outputdefinition4Enum;
+	      else if (strcmp(name,"Outputdefinition50")==0) return Outputdefinition50Enum;
+	      else if (strcmp(name,"Outputdefinition51")==0) return Outputdefinition51Enum;
+	      else if (strcmp(name,"Outputdefinition52")==0) return Outputdefinition52Enum;
+	      else if (strcmp(name,"Outputdefinition53")==0) return Outputdefinition53Enum;
+	      else if (strcmp(name,"Outputdefinition54")==0) return Outputdefinition54Enum;
+	      else if (strcmp(name,"Outputdefinition55")==0) return Outputdefinition55Enum;
+	      else if (strcmp(name,"Outputdefinition56")==0) return Outputdefinition56Enum;
+	      else if (strcmp(name,"Outputdefinition57")==0) return Outputdefinition57Enum;
+	      else if (strcmp(name,"Outputdefinition58")==0) return Outputdefinition58Enum;
+	      else if (strcmp(name,"Outputdefinition59")==0) return Outputdefinition59Enum;
+         else stage=12;
+   }
+   if(stage==12){
+	      if (strcmp(name,"Outputdefinition5")==0) return Outputdefinition5Enum;
+	      else if (strcmp(name,"Outputdefinition60")==0) return Outputdefinition60Enum;
+	      else if (strcmp(name,"Outputdefinition61")==0) return Outputdefinition61Enum;
+	      else if (strcmp(name,"Outputdefinition62")==0) return Outputdefinition62Enum;
+	      else if (strcmp(name,"Outputdefinition63")==0) return Outputdefinition63Enum;
+	      else if (strcmp(name,"Outputdefinition64")==0) return Outputdefinition64Enum;
+	      else if (strcmp(name,"Outputdefinition65")==0) return Outputdefinition65Enum;
+	      else if (strcmp(name,"Outputdefinition66")==0) return Outputdefinition66Enum;
+	      else if (strcmp(name,"Outputdefinition67")==0) return Outputdefinition67Enum;
+	      else if (strcmp(name,"Outputdefinition68")==0) return Outputdefinition68Enum;
+	      else if (strcmp(name,"Outputdefinition69")==0) return Outputdefinition69Enum;
+	      else if (strcmp(name,"Outputdefinition6")==0) return Outputdefinition6Enum;
+	      else if (strcmp(name,"Outputdefinition70")==0) return Outputdefinition70Enum;
+	      else if (strcmp(name,"Outputdefinition71")==0) return Outputdefinition71Enum;
+	      else if (strcmp(name,"Outputdefinition72")==0) return Outputdefinition72Enum;
+	      else if (strcmp(name,"Outputdefinition73")==0) return Outputdefinition73Enum;
+	      else if (strcmp(name,"Outputdefinition74")==0) return Outputdefinition74Enum;
+	      else if (strcmp(name,"Outputdefinition75")==0) return Outputdefinition75Enum;
+	      else if (strcmp(name,"Outputdefinition76")==0) return Outputdefinition76Enum;
+	      else if (strcmp(name,"Outputdefinition77")==0) return Outputdefinition77Enum;
+	      else if (strcmp(name,"Outputdefinition78")==0) return Outputdefinition78Enum;
+	      else if (strcmp(name,"Outputdefinition79")==0) return Outputdefinition79Enum;
+	      else if (strcmp(name,"Outputdefinition7")==0) return Outputdefinition7Enum;
+	      else if (strcmp(name,"Outputdefinition80")==0) return Outputdefinition80Enum;
+	      else if (strcmp(name,"Outputdefinition81")==0) return Outputdefinition81Enum;
+	      else if (strcmp(name,"Outputdefinition82")==0) return Outputdefinition82Enum;
+	      else if (strcmp(name,"Outputdefinition83")==0) return Outputdefinition83Enum;
+	      else if (strcmp(name,"Outputdefinition84")==0) return Outputdefinition84Enum;
+	      else if (strcmp(name,"Outputdefinition85")==0) return Outputdefinition85Enum;
+	      else if (strcmp(name,"Outputdefinition86")==0) return Outputdefinition86Enum;
+	      else if (strcmp(name,"Outputdefinition87")==0) return Outputdefinition87Enum;
+	      else if (strcmp(name,"Outputdefinition88")==0) return Outputdefinition88Enum;
+	      else if (strcmp(name,"Outputdefinition89")==0) return Outputdefinition89Enum;
+	      else if (strcmp(name,"Outputdefinition8")==0) return Outputdefinition8Enum;
+	      else if (strcmp(name,"Outputdefinition90")==0) return Outputdefinition90Enum;
+	      else if (strcmp(name,"Outputdefinition91")==0) return Outputdefinition91Enum;
+	      else if (strcmp(name,"Outputdefinition92")==0) return Outputdefinition92Enum;
+	      else if (strcmp(name,"Outputdefinition93")==0) return Outputdefinition93Enum;
+	      else if (strcmp(name,"Outputdefinition94")==0) return Outputdefinition94Enum;
+	      else if (strcmp(name,"Outputdefinition95")==0) return Outputdefinition95Enum;
+	      else if (strcmp(name,"Outputdefinition96")==0) return Outputdefinition96Enum;
+	      else if (strcmp(name,"Outputdefinition97")==0) return Outputdefinition97Enum;
+	      else if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum;
+	      else if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum;
+	      else if (strcmp(name,"Outputdefinition9")==0) return Outputdefinition9Enum;
+	      else if (strcmp(name,"Outputdefinition100")==0) return Outputdefinition100Enum;
+	      else if (strcmp(name,"InputsEND")==0) return InputsENDEnum;
+	      else if (strcmp(name,"Absolute")==0) return AbsoluteEnum;
+	      else if (strcmp(name,"AdaptiveTimestepping")==0) return AdaptiveTimesteppingEnum;
+	      else if (strcmp(name,"AdjointBalancethickness2Analysis")==0) return AdjointBalancethickness2AnalysisEnum;
+	      else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum;
+	      else if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum;
+	      else if (strcmp(name,"AgeAnalysis")==0) return AgeAnalysisEnum;
+	      else if (strcmp(name,"AggressiveMigration")==0) return AggressiveMigrationEnum;
+	      else if (strcmp(name,"AmrBamg")==0) return AmrBamgEnum;
+	      else if (strcmp(name,"AmrNeopz")==0) return AmrNeopzEnum;
+	      else if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum;
+	      else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum;
+	      else if (strcmp(name,"AutodiffJacobian")==0) return AutodiffJacobianEnum;
+	      else if (strcmp(name,"Balancethickness2Analysis")==0) return Balancethickness2AnalysisEnum;
+	      else if (strcmp(name,"Balancethickness2Solution")==0) return Balancethickness2SolutionEnum;
+	      else if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum;
+	      else if (strcmp(name,"BalancethicknessApparentMassbalance")==0) return BalancethicknessApparentMassbalanceEnum;
+	      else if (strcmp(name,"BalancethicknessSoftAnalysis")==0) return BalancethicknessSoftAnalysisEnum;
+	      else if (strcmp(name,"BalancethicknessSoftSolution")==0) return BalancethicknessSoftSolutionEnum;
+	      else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum;
+	      else if (strcmp(name,"BalancevelocityAnalysis")==0) return BalancevelocityAnalysisEnum;
+	      else if (strcmp(name,"BalancevelocitySolution")==0) return BalancevelocitySolutionEnum;
+	      else if (strcmp(name,"BasalforcingsIsmip6")==0) return BasalforcingsIsmip6Enum;
+	      else if (strcmp(name,"BasalforcingsPico")==0) return BasalforcingsPicoEnum;
+	      else if (strcmp(name,"BeckmannGoosseFloatingMeltRate")==0) return BeckmannGoosseFloatingMeltRateEnum;
+	      else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum;
+	      else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum;
+	      else if (strcmp(name,"BoolInput")==0) return BoolInputEnum;
+	      else if (strcmp(name,"IntInput")==0) return IntInputEnum;
+	      else if (strcmp(name,"DoubleInput")==0) return DoubleInputEnum;
+	      else if (strcmp(name,"BoolParam")==0) return BoolParamEnum;
+	      else if (strcmp(name,"Boundary")==0) return BoundaryEnum;
+	      else if (strcmp(name,"BuddJacka")==0) return BuddJackaEnum;
+	      else if (strcmp(name,"CalvingDev2")==0) return CalvingDev2Enum;
+	      else if (strcmp(name,"CalvingHab")==0) return CalvingHabEnum;
+	      else if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum;
+	      else if (strcmp(name,"CalvingTest")==0) return CalvingTestEnum;
+	      else if (strcmp(name,"CalvingParameterization")==0) return CalvingParameterizationEnum;
+	      else if (strcmp(name,"CalvingCalvingMIP")==0) return CalvingCalvingMIPEnum;
+	      else if (strcmp(name,"CalvingVonmises")==0) return CalvingVonmisesEnum;
+	      else if (strcmp(name,"CalvingVonmisesAD")==0) return CalvingVonmisesADEnum;
+	      else if (strcmp(name,"CalvingPollard")==0) return CalvingPollardEnum;
+	      else if (strcmp(name,"Cfdragcoeffabsgrad")==0) return CfdragcoeffabsgradEnum;
+	      else if (strcmp(name,"Cfdragcoeffabsgradtransient")==0) return CfdragcoeffabsgradtransientEnum;
+	      else if (strcmp(name,"Cfrheologybbarabsgrad")==0) return CfrheologybbarabsgradEnum;
+	      else if (strcmp(name,"Cfrheologybbarabsgradtransient")==0) return CfrheologybbarabsgradtransientEnum;
+	      else if (strcmp(name,"Cfsurfacelogvel")==0) return CfsurfacelogvelEnum;
+	      else if (strcmp(name,"Cfsurfacesquare")==0) return CfsurfacesquareEnum;
+	      else if (strcmp(name,"Cfsurfacesquaretransient")==0) return CfsurfacesquaretransientEnum;
+	      else if (strcmp(name,"Cflevelsetmisfit")==0) return CflevelsetmisfitEnum;
+	      else if (strcmp(name,"Channel")==0) return ChannelEnum;
+	      else if (strcmp(name,"ChannelArea")==0) return ChannelAreaEnum;
+	      else if (strcmp(name,"ChannelAreaOld")==0) return ChannelAreaOldEnum;
+	      else if (strcmp(name,"ChannelDischarge")==0) return ChannelDischargeEnum;
+	      else if (strcmp(name,"Closed")==0) return ClosedEnum;
+	      else if (strcmp(name,"Colinear")==0) return ColinearEnum;
+	      else if (strcmp(name,"Constraints")==0) return ConstraintsEnum;
+	      else if (strcmp(name,"Contact")==0) return ContactEnum;
+	      else if (strcmp(name,"Contour")==0) return ContourEnum;
+	      else if (strcmp(name,"Contours")==0) return ContoursEnum;
+	      else if (strcmp(name,"ControlInput")==0) return ControlInputEnum;
+	      else if (strcmp(name,"ControlInputGrad")==0) return ControlInputGradEnum;
+	      else if (strcmp(name,"ControlInputMaxs")==0) return ControlInputMaxsEnum;
+	      else if (strcmp(name,"ControlInputMins")==0) return ControlInputMinsEnum;
+	      else if (strcmp(name,"ControlInputValues")==0) return ControlInputValuesEnum;
+	      else if (strcmp(name,"ControlParam")==0) return ControlParamEnum;
+	      else if (strcmp(name,"CrouzeixRaviart")==0) return CrouzeixRaviartEnum;
+	      else if (strcmp(name,"Cuffey")==0) return CuffeyEnum;
+	      else if (strcmp(name,"CuffeyTemperate")==0) return CuffeyTemperateEnum;
+	      else if (strcmp(name,"DamageEvolutionAnalysis")==0) return DamageEvolutionAnalysisEnum;
+	      else if (strcmp(name,"DamageEvolutionSolution")==0) return DamageEvolutionSolutionEnum;
+	      else if (strcmp(name,"DataSet")==0) return DataSetEnum;
+	      else if (strcmp(name,"DataSetParam")==0) return DataSetParamEnum;
+	      else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
+         else stage=13;
+   }
+   if(stage==13){
+	      if (strcmp(name,"DebrisAnalysis")==0) return DebrisAnalysisEnum;
+	      else if (strcmp(name,"DebrisSolution")==0) return DebrisSolutionEnum;
+	      else if (strcmp(name,"DefaultAnalysis")==0) return DefaultAnalysisEnum;
+	      else if (strcmp(name,"DefaultCalving")==0) return DefaultCalvingEnum;
+	      else if (strcmp(name,"Dense")==0) return DenseEnum;
+	      else if (strcmp(name,"DependentObject")==0) return DependentObjectEnum;
+	      else if (strcmp(name,"DepthAverageAnalysis")==0) return DepthAverageAnalysisEnum;
+	      else if (strcmp(name,"DeviatoricStressErrorEstimator")==0) return DeviatoricStressErrorEstimatorEnum;
+	      else if (strcmp(name,"Divergence")==0) return DivergenceEnum;
+	      else if (strcmp(name,"Domain3Dsurface")==0) return Domain3DsurfaceEnum;
+	      else if (strcmp(name,"DoubleArrayInput")==0) return DoubleArrayInputEnum;
+	      else if (strcmp(name,"ArrayInput")==0) return ArrayInputEnum;
+	      else if (strcmp(name,"IntArrayInput")==0) return IntArrayInputEnum;
+	      else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum;
+	      else if (strcmp(name,"DoubleMatArrayParam")==0) return DoubleMatArrayParamEnum;
+	      else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum;
+	      else if (strcmp(name,"DoubleMatParam")==0) return DoubleMatParamEnum;
+	      else if (strcmp(name,"DoubleParam")==0) return DoubleParamEnum;
+	      else if (strcmp(name,"DoubleVecParam")==0) return DoubleVecParamEnum;
+	      else if (strcmp(name,"Element")==0) return ElementEnum;
+	      else if (strcmp(name,"ElementHook")==0) return ElementHookEnum;
+	      else if (strcmp(name,"ElementSId")==0) return ElementSIdEnum;
+	      else if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum;
+	      else if (strcmp(name,"EsaAnalysis")==0) return EsaAnalysisEnum;
+	      else if (strcmp(name,"EsaSolution")==0) return EsaSolutionEnum;
+	      else if (strcmp(name,"EsaTransitions")==0) return EsaTransitionsEnum;
+	      else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum;
+	      else if (strcmp(name,"ExtrapolationAnalysis")==0) return ExtrapolationAnalysisEnum;
+	      else if (strcmp(name,"ExtrudeFromBaseAnalysis")==0) return ExtrudeFromBaseAnalysisEnum;
+	      else if (strcmp(name,"ExtrudeFromTopAnalysis")==0) return ExtrudeFromTopAnalysisEnum;
+	      else if (strcmp(name,"FSApproximation")==0) return FSApproximationEnum;
+	      else if (strcmp(name,"FSSolver")==0) return FSSolverEnum;
+	      else if (strcmp(name,"FSpressure")==0) return FSpressureEnum;
+	      else if (strcmp(name,"FSvelocity")==0) return FSvelocityEnum;
+	      else if (strcmp(name,"FemModel")==0) return FemModelEnum;
+	      else if (strcmp(name,"FileParam")==0) return FileParamEnum;
+	      else if (strcmp(name,"FixedTimestepping")==0) return FixedTimesteppingEnum;
+	      else if (strcmp(name,"FloatingArea")==0) return FloatingAreaEnum;
+	      else if (strcmp(name,"FloatingAreaScaled")==0) return FloatingAreaScaledEnum;
+	      else if (strcmp(name,"FloatingMeltRate")==0) return FloatingMeltRateEnum;
+	      else if (strcmp(name,"Free")==0) return FreeEnum;
+	      else if (strcmp(name,"FreeSurfaceBaseAnalysis")==0) return FreeSurfaceBaseAnalysisEnum;
+	      else if (strcmp(name,"FreeSurfaceTopAnalysis")==0) return FreeSurfaceTopAnalysisEnum;
+	      else if (strcmp(name,"FrontalForcingsDefault")==0) return FrontalForcingsDefaultEnum;
+	      else if (strcmp(name,"FrontalForcingsRignot")==0) return FrontalForcingsRignotEnum;
+	      else if (strcmp(name,"FrontalForcingsRignotarma")==0) return FrontalForcingsRignotarmaEnum;
+	      else if (strcmp(name,"Fset")==0) return FsetEnum;
+	      else if (strcmp(name,"FullMeltOnPartiallyFloating")==0) return FullMeltOnPartiallyFloatingEnum;
+	      else if (strcmp(name,"GLheightadvectionAnalysis")==0) return GLheightadvectionAnalysisEnum;
+	      else if (strcmp(name,"GaussPenta")==0) return GaussPentaEnum;
+	      else if (strcmp(name,"GaussSeg")==0) return GaussSegEnum;
+	      else if (strcmp(name,"GaussTetra")==0) return GaussTetraEnum;
+	      else if (strcmp(name,"GaussTria")==0) return GaussTriaEnum;
+	      else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
+	      else if (strcmp(name,"GenericParam")==0) return GenericParamEnum;
+	      else if (strcmp(name,"GenericExternalResult")==0) return GenericExternalResultEnum;
+	      else if (strcmp(name,"Gradient1")==0) return Gradient1Enum;
+	      else if (strcmp(name,"Gradient2")==0) return Gradient2Enum;
+	      else if (strcmp(name,"Gradient3")==0) return Gradient3Enum;
+	      else if (strcmp(name,"Gradient4")==0) return Gradient4Enum;
+	      else if (strcmp(name,"GroundedArea")==0) return GroundedAreaEnum;
+	      else if (strcmp(name,"GroundedAreaScaled")==0) return GroundedAreaScaledEnum;
+	      else if (strcmp(name,"GroundingOnly")==0) return GroundingOnlyEnum;
+	      else if (strcmp(name,"GroundinglineMassFlux")==0) return GroundinglineMassFluxEnum;
+	      else if (strcmp(name,"Gset")==0) return GsetEnum;
+	      else if (strcmp(name,"Gsl")==0) return GslEnum;
+	      else if (strcmp(name,"HOApproximation")==0) return HOApproximationEnum;
+	      else if (strcmp(name,"HOFSApproximation")==0) return HOFSApproximationEnum;
+	      else if (strcmp(name,"Hook")==0) return HookEnum;
+	      else if (strcmp(name,"HydrologyArmapwAnalysis")==0) return HydrologyArmapwAnalysisEnum;
+	      else if (strcmp(name,"Hydrologyarmapw")==0) return HydrologyarmapwEnum;
+	      else if (strcmp(name,"HydrologyDCEfficientAnalysis")==0) return HydrologyDCEfficientAnalysisEnum;
+	      else if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum;
+	      else if (strcmp(name,"HydrologyGlaDSAnalysis")==0) return HydrologyGlaDSAnalysisEnum;
+	      else if (strcmp(name,"HydrologyGlaDS")==0) return HydrologyGlaDSEnum;
+	      else if (strcmp(name,"HydrologyPismAnalysis")==0) return HydrologyPismAnalysisEnum;
+	      else if (strcmp(name,"HydrologyShaktiAnalysis")==0) return HydrologyShaktiAnalysisEnum;
+	      else if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum;
+	      else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum;
+	      else if (strcmp(name,"HydrologySubsteps")==0) return HydrologySubstepsEnum;
+	      else if (strcmp(name,"HydrologySubTime")==0) return HydrologySubTimeEnum;
+	      else if (strcmp(name,"Hydrologydc")==0) return HydrologydcEnum;
+	      else if (strcmp(name,"Hydrologypism")==0) return HydrologypismEnum;
+	      else if (strcmp(name,"Hydrologyshakti")==0) return HydrologyshaktiEnum;
+	      else if (strcmp(name,"Hydrologyshreve")==0) return HydrologyshreveEnum;
+	      else if (strcmp(name,"IceMass")==0) return IceMassEnum;
+	      else if (strcmp(name,"IceMassScaled")==0) return IceMassScaledEnum;
+	      else if (strcmp(name,"IceVolumeAboveFloatation")==0) return IceVolumeAboveFloatationEnum;
+	      else if (strcmp(name,"IceVolumeAboveFloatationScaled")==0) return IceVolumeAboveFloatationScaledEnum;
+	      else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum;
+	      else if (strcmp(name,"IceVolumeScaled")==0) return IceVolumeScaledEnum;
+	      else if (strcmp(name,"IcefrontMassFlux")==0) return IcefrontMassFluxEnum;
+	      else if (strcmp(name,"IcefrontMassFluxLevelset")==0) return IcefrontMassFluxLevelsetEnum;
+	      else if (strcmp(name,"Incremental")==0) return IncrementalEnum;
+	      else if (strcmp(name,"Indexed")==0) return IndexedEnum;
+	      else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum;
+	      else if (strcmp(name,"ElementInput")==0) return ElementInputEnum;
+	      else if (strcmp(name,"IntMatExternalResult")==0) return IntMatExternalResultEnum;
+	      else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum;
+	      else if (strcmp(name,"IntParam")==0) return IntParamEnum;
+	      else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
+	      else if (strcmp(name,"Inputs")==0) return InputsEnum;
+	      else if (strcmp(name,"Internal")==0) return InternalEnum;
+	      else if (strcmp(name,"Intersect")==0) return IntersectEnum;
+	      else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
+	      else if (strcmp(name,"J")==0) return JEnum;
+	      else if (strcmp(name,"L1L2Approximation")==0) return L1L2ApproximationEnum;
+	      else if (strcmp(name,"MOLHOApproximation")==0) return MOLHOApproximationEnum;
+	      else if (strcmp(name,"L2ProjectionBaseAnalysis")==0) return L2ProjectionBaseAnalysisEnum;
+	      else if (strcmp(name,"L2ProjectionEPLAnalysis")==0) return L2ProjectionEPLAnalysisEnum;
+	      else if (strcmp(name,"LACrouzeixRaviart")==0) return LACrouzeixRaviartEnum;
+	      else if (strcmp(name,"LATaylorHood")==0) return LATaylorHoodEnum;
+	      else if (strcmp(name,"LambdaS")==0) return LambdaSEnum;
+	      else if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum;
+	      else if (strcmp(name,"LevelsetfunctionPicard")==0) return LevelsetfunctionPicardEnum;
+	      else if (strcmp(name,"LinearFloatingMeltRate")==0) return LinearFloatingMeltRateEnum;
+	      else if (strcmp(name,"LinearFloatingMeltRatearma")==0) return LinearFloatingMeltRatearmaEnum;
+	      else if (strcmp(name,"LliboutryDuval")==0) return LliboutryDuvalEnum;
+	      else if (strcmp(name,"Loads")==0) return LoadsEnum;
+	      else if (strcmp(name,"LoveAnalysis")==0) return LoveAnalysisEnum;
+         else stage=14;
+   }
+   if(stage==14){
+	      if (strcmp(name,"LoveHf")==0) return LoveHfEnum;
+	      else if (strcmp(name,"LoveHt")==0) return LoveHtEnum;
+	      else if (strcmp(name,"LoveKernelsImag")==0) return LoveKernelsImagEnum;
+	      else if (strcmp(name,"LoveKernelsReal")==0) return LoveKernelsRealEnum;
+	      else if (strcmp(name,"LoveKf")==0) return LoveKfEnum;
+	      else if (strcmp(name,"LoveKt")==0) return LoveKtEnum;
+	      else if (strcmp(name,"LoveLf")==0) return LoveLfEnum;
+	      else if (strcmp(name,"LoveLt")==0) return LoveLtEnum;
+	      else if (strcmp(name,"LoveTidalHt")==0) return LoveTidalHtEnum;
+	      else if (strcmp(name,"LoveTidalKt")==0) return LoveTidalKtEnum;
+	      else if (strcmp(name,"LoveTidalLt")==0) return LoveTidalLtEnum;
+	      else if (strcmp(name,"LovePMTF1t")==0) return LovePMTF1tEnum;
+	      else if (strcmp(name,"LovePMTF2t")==0) return LovePMTF2tEnum;
+	      else if (strcmp(name,"LoveYi")==0) return LoveYiEnum;
+	      else if (strcmp(name,"LoveRhs")==0) return LoveRhsEnum;
+	      else if (strcmp(name,"LoveSolution")==0) return LoveSolutionEnum;
+	      else if (strcmp(name,"MINI")==0) return MINIEnum;
+	      else if (strcmp(name,"MINIcondensed")==0) return MINIcondensedEnum;
+	      else if (strcmp(name,"MantlePlumeGeothermalFlux")==0) return MantlePlumeGeothermalFluxEnum;
+	      else if (strcmp(name,"MassFlux")==0) return MassFluxEnum;
+	      else if (strcmp(name,"Masscon")==0) return MassconEnum;
+	      else if (strcmp(name,"Massconaxpby")==0) return MassconaxpbyEnum;
+	      else if (strcmp(name,"Massfluxatgate")==0) return MassfluxatgateEnum;
+	      else if (strcmp(name,"MasstransportAnalysis")==0) return MasstransportAnalysisEnum;
+	      else if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum;
+	      else if (strcmp(name,"Matdamageice")==0) return MatdamageiceEnum;
+	      else if (strcmp(name,"Matenhancedice")==0) return MatenhancediceEnum;
+	      else if (strcmp(name,"Materials")==0) return MaterialsEnum;
+	      else if (strcmp(name,"Matestar")==0) return MatestarEnum;
+	      else if (strcmp(name,"Matice")==0) return MaticeEnum;
+	      else if (strcmp(name,"Matlitho")==0) return MatlithoEnum;
+	      else if (strcmp(name,"Mathydro")==0) return MathydroEnum;
+	      else if (strcmp(name,"MatrixParam")==0) return MatrixParamEnum;
+	      else if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum;
+	      else if (strcmp(name,"MaxAbsVy")==0) return MaxAbsVyEnum;
+	      else if (strcmp(name,"MaxAbsVz")==0) return MaxAbsVzEnum;
+	      else if (strcmp(name,"MaxDivergence")==0) return MaxDivergenceEnum;
+	      else if (strcmp(name,"MaxVel")==0) return MaxVelEnum;
+	      else if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
+	      else if (strcmp(name,"MaxVy")==0) return MaxVyEnum;
+	      else if (strcmp(name,"MaxVz")==0) return MaxVzEnum;
+	      else if (strcmp(name,"Melange")==0) return MelangeEnum;
+	      else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
+	      else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum;
+	      else if (strcmp(name,"MeshX")==0) return MeshXEnum;
+	      else if (strcmp(name,"MeshY")==0) return MeshYEnum;
+	      else if (strcmp(name,"MinVel")==0) return MinVelEnum;
+	      else if (strcmp(name,"MinVx")==0) return MinVxEnum;
+	      else if (strcmp(name,"MinVy")==0) return MinVyEnum;
+	      else if (strcmp(name,"MinVz")==0) return MinVzEnum;
+	      else if (strcmp(name,"MismipFloatingMeltRate")==0) return MismipFloatingMeltRateEnum;
+	      else if (strcmp(name,"Moulin")==0) return MoulinEnum;
+	      else if (strcmp(name,"MpiDense")==0) return MpiDenseEnum;
+	      else if (strcmp(name,"Mpi")==0) return MpiEnum;
+	      else if (strcmp(name,"MpiSparse")==0) return MpiSparseEnum;
+	      else if (strcmp(name,"Mumps")==0) return MumpsEnum;
+	      else if (strcmp(name,"NoFrictionOnPartiallyFloating")==0) return NoFrictionOnPartiallyFloatingEnum;
+	      else if (strcmp(name,"NoMeltOnPartiallyFloating")==0) return NoMeltOnPartiallyFloatingEnum;
+	      else if (strcmp(name,"Nodal")==0) return NodalEnum;
+	      else if (strcmp(name,"Nodalvalue")==0) return NodalvalueEnum;
+	      else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;
+	      else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
+	      else if (strcmp(name,"None")==0) return NoneEnum;
+	      else if (strcmp(name,"Numberedcostfunction")==0) return NumberedcostfunctionEnum;
+	      else if (strcmp(name,"NyeCO2")==0) return NyeCO2Enum;
+	      else if (strcmp(name,"NyeH2O")==0) return NyeH2OEnum;
+	      else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
+	      else if (strcmp(name,"OceantransportAnalysis")==0) return OceantransportAnalysisEnum;
+	      else if (strcmp(name,"OceantransportSolution")==0) return OceantransportSolutionEnum;
+	      else if (strcmp(name,"OldGradient")==0) return OldGradientEnum;
+	      else if (strcmp(name,"OneLayerP4z")==0) return OneLayerP4zEnum;
+	      else if (strcmp(name,"Open")==0) return OpenEnum;
+	      else if (strcmp(name,"Option")==0) return OptionEnum;
+	      else if (strcmp(name,"Param")==0) return ParamEnum;
+	      else if (strcmp(name,"Parameters")==0) return ParametersEnum;
+	      else if (strcmp(name,"P0Array")==0) return P0ArrayEnum;
+	      else if (strcmp(name,"P0DG")==0) return P0DGEnum;
+	      else if (strcmp(name,"P1DG")==0) return P1DGEnum;
+	      else if (strcmp(name,"P1P1")==0) return P1P1Enum;
+	      else if (strcmp(name,"P1P1GLS")==0) return P1P1GLSEnum;
+	      else if (strcmp(name,"P1bubble")==0) return P1bubbleEnum;
+	      else if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum;
+	      else if (strcmp(name,"P1xP2")==0) return P1xP2Enum;
+	      else if (strcmp(name,"P1xP3")==0) return P1xP3Enum;
+	      else if (strcmp(name,"P1xP4")==0) return P1xP4Enum;
+	      else if (strcmp(name,"P2")==0) return P2Enum;
+	      else if (strcmp(name,"P2bubble")==0) return P2bubbleEnum;
+	      else if (strcmp(name,"P2bubblecondensed")==0) return P2bubblecondensedEnum;
+	      else if (strcmp(name,"P2xP1")==0) return P2xP1Enum;
+	      else if (strcmp(name,"P2xP4")==0) return P2xP4Enum;
+	      else if (strcmp(name,"Paterson")==0) return PatersonEnum;
+	      else if (strcmp(name,"Pengrid")==0) return PengridEnum;
+	      else if (strcmp(name,"Penpair")==0) return PenpairEnum;
+	      else if (strcmp(name,"Penta")==0) return PentaEnum;
+	      else if (strcmp(name,"PentaInput")==0) return PentaInputEnum;
+	      else if (strcmp(name,"Profiler")==0) return ProfilerEnum;
+	      else if (strcmp(name,"ProfilingCurrentFlops")==0) return ProfilingCurrentFlopsEnum;
+	      else if (strcmp(name,"ProfilingCurrentMem")==0) return ProfilingCurrentMemEnum;
+	      else if (strcmp(name,"ProfilingSolutionTime")==0) return ProfilingSolutionTimeEnum;
+	      else if (strcmp(name,"Regionaloutput")==0) return RegionaloutputEnum;
+	      else if (strcmp(name,"Regular")==0) return RegularEnum;
+	      else if (strcmp(name,"RecoveryAnalysis")==0) return RecoveryAnalysisEnum;
+	      else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
+	      else if (strcmp(name,"SamplingAnalysis")==0) return SamplingAnalysisEnum;
+	      else if (strcmp(name,"SamplingSolution")==0) return SamplingSolutionEnum;
+	      else if (strcmp(name,"SIAApproximation")==0) return SIAApproximationEnum;
+	      else if (strcmp(name,"SMBarma")==0) return SMBarmaEnum;
+	      else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum;
+	      else if (strcmp(name,"SMBdebrisEvatt")==0) return SMBdebrisEvattEnum;
+	      else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum;
+	      else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum;
+	      else if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum;
+	      else if (strcmp(name,"SMBgemb")==0) return SMBgembEnum;
+	      else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum;
+	      else if (strcmp(name,"SMBgradientscomponents")==0) return SMBgradientscomponentsEnum;
+	      else if (strcmp(name,"SMBgradientsela")==0) return SMBgradientselaEnum;
+	      else if (strcmp(name,"SMBhenning")==0) return SMBhenningEnum;
+	      else if (strcmp(name,"SMBmeltcomponents")==0) return SMBmeltcomponentsEnum;
+	      else if (strcmp(name,"SMBpdd")==0) return SMBpddEnum;
+	      else if (strcmp(name,"SMBpddSicopolis")==0) return SMBpddSicopolisEnum;
+         else stage=15;
+   }
+   if(stage==15){
+	      if (strcmp(name,"SMBsemic")==0) return SMBsemicEnum;
+	      else if (strcmp(name,"SSAApproximation")==0) return SSAApproximationEnum;
+	      else if (strcmp(name,"SSAFSApproximation")==0) return SSAFSApproximationEnum;
+	      else if (strcmp(name,"SSAHOApproximation")==0) return SSAHOApproximationEnum;
+	      else if (strcmp(name,"Scaled")==0) return ScaledEnum;
+	      else if (strcmp(name,"SealevelAbsolute")==0) return SealevelAbsoluteEnum;
+	      else if (strcmp(name,"SealevelEmotion")==0) return SealevelEmotionEnum;
+	      else if (strcmp(name,"SealevelchangePolarMotionX")==0) return SealevelchangePolarMotionXEnum;
+	      else if (strcmp(name,"SealevelchangePolarMotionY")==0) return SealevelchangePolarMotionYEnum;
+	      else if (strcmp(name,"SealevelchangePolarMotionZ")==0) return SealevelchangePolarMotionZEnum;
+	      else if (strcmp(name,"SealevelchangePolarMotion")==0) return SealevelchangePolarMotionEnum;
+	      else if (strcmp(name,"SealevelNmotion")==0) return SealevelNmotionEnum;
+	      else if (strcmp(name,"SealevelUmotion")==0) return SealevelUmotionEnum;
+	      else if (strcmp(name,"SealevelchangeAnalysis")==0) return SealevelchangeAnalysisEnum;
+	      else if (strcmp(name,"Seg")==0) return SegEnum;
+	      else if (strcmp(name,"SegInput")==0) return SegInputEnum;
+	      else if (strcmp(name,"Segment")==0) return SegmentEnum;
+	      else if (strcmp(name,"SegmentRiftfront")==0) return SegmentRiftfrontEnum;
+	      else if (strcmp(name,"Separate")==0) return SeparateEnum;
+	      else if (strcmp(name,"Seq")==0) return SeqEnum;
+	      else if (strcmp(name,"SmbAnalysis")==0) return SmbAnalysisEnum;
+	      else if (strcmp(name,"SmbSolution")==0) return SmbSolutionEnum;
+	      else if (strcmp(name,"SmoothAnalysis")==0) return SmoothAnalysisEnum;
+	      else if (strcmp(name,"SoftMigration")==0) return SoftMigrationEnum;
+	      else if (strcmp(name,"SpatialLinearFloatingMeltRate")==0) return SpatialLinearFloatingMeltRateEnum;
+	      else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum;
+	      else if (strcmp(name,"SpcStatic")==0) return SpcStaticEnum;
+	      else if (strcmp(name,"SpcTransient")==0) return SpcTransientEnum;
+	      else if (strcmp(name,"Sset")==0) return SsetEnum;
+	      else if (strcmp(name,"StatisticsSolution")==0) return StatisticsSolutionEnum;
+	      else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;
+	      else if (strcmp(name,"StressIntensityFactor")==0) return StressIntensityFactorEnum;
+	      else if (strcmp(name,"StressbalanceAnalysis")==0) return StressbalanceAnalysisEnum;
+	      else if (strcmp(name,"StressbalanceConvergenceNumSteps")==0) return StressbalanceConvergenceNumStepsEnum;
+	      else if (strcmp(name,"StressbalanceSIAAnalysis")==0) return StressbalanceSIAAnalysisEnum;
+	      else if (strcmp(name,"StressbalanceSolution")==0) return StressbalanceSolutionEnum;
+	      else if (strcmp(name,"StressbalanceVerticalAnalysis")==0) return StressbalanceVerticalAnalysisEnum;
+	      else if (strcmp(name,"StringArrayParam")==0) return StringArrayParamEnum;
+	      else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum;
+	      else if (strcmp(name,"StringParam")==0) return StringParamEnum;
+	      else if (strcmp(name,"SubelementFriction1")==0) return SubelementFriction1Enum;
+	      else if (strcmp(name,"SubelementFriction2")==0) return SubelementFriction2Enum;
+	      else if (strcmp(name,"SubelementMelt1")==0) return SubelementMelt1Enum;
+	      else if (strcmp(name,"SubelementMelt2")==0) return SubelementMelt2Enum;
+	      else if (strcmp(name,"SubelementMigration")==0) return SubelementMigrationEnum;
+	      else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
+	      else if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum;
+	      else if (strcmp(name,"Tetra")==0) return TetraEnum;
+	      else if (strcmp(name,"TetraInput")==0) return TetraInputEnum;
+	      else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
+	      else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
+	      else if (strcmp(name,"ThicknessErrorEstimator")==0) return ThicknessErrorEstimatorEnum;
+	      else if (strcmp(name,"TotalCalvingFluxLevelset")==0) return TotalCalvingFluxLevelsetEnum;
+	      else if (strcmp(name,"TotalCalvingMeltingFluxLevelset")==0) return TotalCalvingMeltingFluxLevelsetEnum;
+	      else if (strcmp(name,"TotalFloatingBmb")==0) return TotalFloatingBmbEnum;
+	      else if (strcmp(name,"TotalFloatingBmbScaled")==0) return TotalFloatingBmbScaledEnum;
+	      else if (strcmp(name,"TotalGroundedBmb")==0) return TotalGroundedBmbEnum;
+	      else if (strcmp(name,"TotalGroundedBmbScaled")==0) return TotalGroundedBmbScaledEnum;
+	      else if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum;
+	      else if (strcmp(name,"TotalSmbScaled")==0) return TotalSmbScaledEnum;
+	      else if (strcmp(name,"TotalSmbRefreeze")==0) return TotalSmbRefreezeEnum;
+	      else if (strcmp(name,"TotalSmbMelt")==0) return TotalSmbMeltEnum;
+	      else if (strcmp(name,"TransientArrayParam")==0) return TransientArrayParamEnum;
+	      else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
+	      else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
+	      else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
+	      else if (strcmp(name,"Tria")==0) return TriaEnum;
+	      else if (strcmp(name,"TriaInput")==0) return TriaInputEnum;
+	      else if (strcmp(name,"UzawaPressureAnalysis")==0) return UzawaPressureAnalysisEnum;
+	      else if (strcmp(name,"VectorParam")==0) return VectorParamEnum;
+	      else if (strcmp(name,"Vertex")==0) return VertexEnum;
+	      else if (strcmp(name,"VertexLId")==0) return VertexLIdEnum;
+	      else if (strcmp(name,"VertexPId")==0) return VertexPIdEnum;
+	      else if (strcmp(name,"VertexSId")==0) return VertexSIdEnum;
+	      else if (strcmp(name,"Vertices")==0) return VerticesEnum;
+	      else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum;
+	      else if (strcmp(name,"Water")==0) return WaterEnum;
+	      else if (strcmp(name,"XTaylorHood")==0) return XTaylorHoodEnum;
+	      else if (strcmp(name,"XY")==0) return XYEnum;
+	      else if (strcmp(name,"XYZ")==0) return XYZEnum;
+	      else if (strcmp(name,"BalancethicknessD0")==0) return BalancethicknessD0Enum;
+	      else if (strcmp(name,"BalancethicknessDiffusionCoefficient")==0) return BalancethicknessDiffusionCoefficientEnum;
+	      else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum;
+	      else if (strcmp(name,"CalvingdevCoeff")==0) return CalvingdevCoeffEnum;
+	      else if (strcmp(name,"DeviatoricStress")==0) return DeviatoricStressEnum;
+	      else if (strcmp(name,"EtaAbsGradient")==0) return EtaAbsGradientEnum;
+	      else if (strcmp(name,"MeshZ")==0) return MeshZEnum;
+	      else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
+	      else if (strcmp(name,"OutputdefinitionList")==0) return OutputdefinitionListEnum;
+	      else if (strcmp(name,"SealevelObs")==0) return SealevelObsEnum;
+	      else if (strcmp(name,"SealevelWeights")==0) return SealevelWeightsEnum;
+	      else if (strcmp(name,"StrainRate")==0) return StrainRateEnum;
+	      else if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
+	      else if (strcmp(name,"StressbalanceViscosityOvershoot")==0) return StressbalanceViscosityOvershootEnum;
+	      else if (strcmp(name,"SubelementMigration4")==0) return SubelementMigration4Enum;
+	      else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum;
+	      else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
+	      else if (strcmp(name,"MaximumNumberOfDefinitions")==0) return MaximumNumberOfDefinitionsEnum;
+         else stage=16;
+   }
+	/*If we reach this point, the string provided has not been found*/
+	if(notfounderror)
+		_error_("Enum " << name << " not found");
+	else
+		return -1;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/Synchronize.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/Synchronize.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Enum/Synchronize.sh	(revision 27955)
@@ -0,0 +1,278 @@
+#!/bin/bash
+################################################################################
+# Synchronize EnumToStringx.cpp and StringToEnumx.cpp and MATLAB Enums
+#
+# Get all lines of EnumDefinitions.h which hold Enum | remove all commas > put everything in file temp
+#
+# NOTE: Even when run from this directory, ISSM_DIR must be defined correctly.
+#
+cat EnumDefinitions.h | grep -e "[0-9]Enum," -e "[a-zA-Z]Enum," -e "MaximumNumberOfDefinitionsEnum" | grep -v include | sed -e "s/,/ /g" | awk '{print $1}' > temp
+
+#Removed existing files
+rm $ISSM_DIR/src/c/shared/Enum/EnumToStringx.cpp
+rm $ISSM_DIR/src/c/shared/Enum/StringToEnumx.cpp
+
+#Get number of enums
+NUMENUMS=$(wc -l temp | awk '{printf("%s",$1);}');
+
+#Deal with Analyses
+if false; then
+#Build EnumToAnalysis.cpp {{{
+#Header
+cat <<END > $ISSM_DIR/src/c/analyses/EnumToAnalysis.cpp
+/*
+* \file EnumToAnalysis.cpp
+* \brief: output class depending on enum
+*
+*   WARNING: DO NOT MODIFY THIS FILE
+*            this file has been automatically generated by Synchronize.sh
+*            Please read README for more information
+*/
+
+#include "./analyses.h"
+#include "../shared/shared.h"
+
+Analysis* EnumToAnalysis(int analysis_enum){
+
+	switch(analysis_enum){
+END
+#core
+cat temp | grep [a-zA-Z0-9]Analysis | \
+	grep -v DefaultAnalysis | grep -v RecoveryAnalysis | grep -v FlaimAnalysis | grep -v SurfaceSlopeAnalysis | grep -v BedSlopeAnalysis | \
+	awk '{print "\t\t#ifdef _HAVE_"toupper(substr($1,1,length($1)-12))"_\n\t\t" "case " $1" : return new " substr($1,1,length($1)-4) "();\n\t\t#endif"}' \
+		>> $ISSM_DIR/src/c/analyses/EnumToAnalysis.cpp
+
+#Footer
+cat <<END >> $ISSM_DIR/src/c/analyses/EnumToAnalysis.cpp
+		default : _error_("enum provided not supported ("<<EnumToStringx(analysis_enum)<<")");
+	}
+}
+END
+#}}}
+#Build analyses.m4{{{
+#Header
+cat <<END > $ISSM_DIR/m4/analyses.m4
+
+dnl   WARNING: DO NOT MODIFY THIS FILE
+dnl            this file has been automatically generated by Synchronize.sh
+dnl            Please read README for more information
+
+# AX_ANALYSES_SELECTION
+# -----------------
+# Check for analyses compilation
+AC_DEFUN([AX_ANALYSES_SELECTION],
+[
+
+END
+#core
+cat temp | grep [a-zA-Z0-9]Analysis | \
+	grep -v DefaultAnalysis | grep -v FlaimAnalysis | grep -v SurfaceSlopeAnalysis | grep -v BedSlopeAnalysis | \
+	sed -e "s/AnalysisEnum//g" | \
+	awk '{print "dnl with-" $1"{{{\n\
+AC_ARG_WITH([" $1"],\n\
+\tAS_HELP_STRING([--with-" $1" = YES], [compile with " $1" capabilities (default is yes)]),\n\
+\t[" toupper($1)"=$withval],[" toupper($1)"=yes])\n\
+AC_MSG_CHECKING(for " $1" capability compilation)\n\n\
+HAVE_"  toupper($1)"=no \n\
+if test \"x$"  toupper($1)"\" = \"xyes\"; then\n\
+	HAVE_"  toupper($1)"=yes\n\
+	AC_DEFINE([_HAVE_"  toupper($1)"_],[1],[with " $1" capability])\n\
+fi\n\
+AM_CONDITIONAL([" toupper($1)"], [test x$HAVE_" toupper($1)" = xyes])\n\
+AC_MSG_RESULT($HAVE_" toupper($1)")\n\
+dnl }}}"}' \
+	>> $ISSM_DIR/m4/analyses.m4
+
+#Footer
+cat <<END >> $ISSM_DIR/m4/analyses.m4
+
+])
+END
+#}}}
+fi
+
+#Enum to String conversions
+#Build EnumToStringx.cpp {{{
+#Header
+cat <<END >  $ISSM_DIR/src/c/shared/Enum/EnumToStringx.cpp
+/*
+* \file EnumToStringx.cpp:
+* \brief: output string associated with enum
+*
+*   WARNING: DO NOT MODIFY THIS FILE
+*            this file has been automatically generated by Synchronize.sh
+*            Please read README for more information
+*/
+
+#include <cstring>
+#include "./Enum.h"
+#include "../Exceptions/exceptions.h"
+#include "../MemOps/MemOps.h"
+
+const char* EnumToStringx(int en){
+
+	switch(en){
+
+END
+#core
+cat temp |  awk '{print "\t\t" "case " $1" : return \"" substr($1,1,length($1)-4) "\";"}' >> $ISSM_DIR/src/c/shared/Enum/EnumToStringx.cpp
+#Footer
+cat <<END >> $ISSM_DIR/src/c/shared/Enum/EnumToStringx.cpp
+		default : return "unknown";
+
+	}
+}
+void EnumToStringx(char** pstring,int enum_in){
+	char *string = NULL;
+	int   len = 0;
+
+	len=strlen(EnumToStringx(enum_in));
+	string=xNew<char>(len+1);
+	memcpy(string,EnumToStringx(enum_in),(len+1)*sizeof(char));
+
+	/*Assign output pointer*/
+	*pstring=string;
+}
+
+bool IsInputEnum(int enum_in){
+	if(enum_in>InputsSTARTEnum && enum_in<InputsENDEnum) return true;
+	return false;
+}
+
+bool IsParamEnum(int enum_in){
+	if(enum_in>ParametersSTARTEnum && enum_in<ParametersENDEnum) return true;
+	return false;
+}
+END
+#}}}
+#Build StringToEnumx.cpp {{{
+#Header
+cat <<END > $ISSM_DIR/src/c/shared/Enum/StringToEnumx.cpp
+/*
+* \file StringToEnumx.cpp:
+* \brief: output enum associated with string
+*
+*   WARNING: DO NOT MODIFY THIS FILE
+*            this file has been automatically generated by Synchronize.sh
+*            Please read README for more information
+*/
+
+#include <cstring>
+#include "./Enum.h"
+#include "../Exceptions/exceptions.h"
+
+int  StringToEnumx(const char* name,bool notfounderror){
+
+   int  stage=1;
+
+END
+
+#core
+i1=1;
+i2=120;
+for (( i=1 ; i<=100 ; i++ )); do
+	echo "   if(stage==$i){" >> $ISSM_DIR//src/c/shared/Enum/StringToEnumx.cpp
+	awk -v i1=$i1 -v i2=$i2 '{if(NR>=i1 && NR<=i2) print $0 }' temp |
+	awk '{print "\t" ((NR==1)?"      if":"      else if") " (strcmp(name,\"" substr($1,1,length($1)-4) "\")==0) return " $1 ";"}' >> $ISSM_DIR//src/c/shared/Enum/StringToEnumx.cpp
+	echo "         else stage=$(($i+1));" >> $ISSM_DIR//src/c/shared/Enum/StringToEnumx.cpp
+	echo "   }" >> $ISSM_DIR//src/c/shared/Enum/StringToEnumx.cpp
+
+	if [ $i2 -ge $NUMENUMS ]; then break; fi
+	let i1=$i1+120
+	let i2=$i2+120
+done
+
+#footer
+cat <<END >> $ISSM_DIR/src/c/shared/Enum/StringToEnumx.cpp
+	/*If we reach this point, the string provided has not been found*/
+	if(notfounderror)
+		_error_("Enum " << name << " not found");
+	else
+		return -1;
+}
+END
+#}}}
+#Build issmenum.jl {{{
+#Header
+cat <<END >  $ISSM_DIR/src/c/shared/Enum/issmenums.jl
+#   WARNING: DO NOT MODIFY THIS FILE
+#            this file has been automatically generated by Synchronize.sh
+#            Please read README for more information
+
+@enum IssmEnum begin
+END
+cat temp |  awk '{print "\t" $1}' >> $ISSM_DIR/src/c/shared/Enum/issmenums.jl
+#Move on to EnumToString
+cat <<END >> $ISSM_DIR/src/c/shared/Enum/issmenums.jl
+end
+
+function EnumToString(enum::IssmEnum)
+END
+cat temp |  awk '{print "\tif(enum==" $1 ") return \"" substr($1,1,length($1)-4) "\" end"}' >> $ISSM_DIR/src/c/shared/Enum/issmenums.jl
+#Move on to StringToEnumx
+cat <<END >> $ISSM_DIR/src/c/shared/Enum/issmenums.jl
+end
+END
+#}}}
+
+#vim file
+#Build Enum.vim{{{
+#Header
+cat <<END > $ISSM_DIR/src/c/shared/Enum/Enum.vim
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+" ISSM specific c syntax highlighting
+"
+"   WARNING: DO NOT MODIFY THIS FILE
+"            this file has been automatically generated by Synchronize.sh
+"            Please read README for more information
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+"PETSc
+syn keyword cType Vec Mat SeqVec SeqMat
+
+"ISSM typedefs
+syn keyword cType mxArray ErrorException QuadtreeBox
+syn keyword cType IssmDouble IssmPDouble
+
+"ISSM Enums
+END
+cat temp |  awk '{print "syn keyword cConstant " $1}' >> $ISSM_DIR/src/c/shared/Enum/Enum.vim
+cat <<END >> $ISSM_DIR/src/c/shared/Enum/Enum.vim
+"ISSM Enums end
+END
+
+#Synchronize ISSM objects objects
+cat <<END >> $ISSM_DIR/src/c/shared/Enum/Enum.vim
+
+"ISSM objects
+END
+find $ISSM_DIR/src/c/classes -name "*.cpp" -o -name "*.h" | sed -e "s/\// /g" -e "s/\.cpp//" -e "s/\.h//" | awk '{print  $(NF)}' | sort | uniq | awk '{ printf "syn keyword cType " $1 "\n"}'>> $ISSM_DIR/src/c/shared/Enum/Enum.vim
+find $ISSM_DIR/src/c/analyses -name "*Analysis.h" | sed -e "s/\// /g" -e "s/\.cpp//" -e "s/\.h//" | awk '{print  $(NF)}' | sort | uniq | awk '{ printf "syn keyword cType " $1 "\n"}'>> $ISSM_DIR/src/c/shared/Enum/Enum.vim
+echo "\"ISSM objects end" >> $ISSM_DIR/src/c/shared/Enum/Enum.vim
+#}}}
+#Build Enumjl.vim{{{
+#Header
+cat <<END > $ISSM_DIR/src/c/shared/Enum/Enumjl.vim
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+" ISSM specific julia syntax highlighting
+"
+"   WARNING: DO NOT MODIFY THIS FILE
+"            this file has been automatically generated by Synchronize.sh
+"            Please read README for more information
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+"ISSM Enums
+END
+cat temp |  awk '{print "syn keyword juliaConstC " $1}' >> $ISSM_DIR/src/c/shared/Enum/Enumjl.vim
+cat <<END >> $ISSM_DIR/src/c/shared/Enum/Enumjl.vim
+"ISSM Enums end
+END
+#}}}
+
+#clean up{{{
+rm temp
+#}}}
+#print info {{{
+printf "\r                                                                      "
+printf "\rdone!\n"
+#}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Exceptions/Exceptions.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Exceptions/Exceptions.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Exceptions/Exceptions.cpp	(revision 27955)
@@ -0,0 +1,95 @@
+/* \file Exceptions.cpp
+ * \brief: implementation of the exceptions.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <cstring>
+#include <cstdio>
+#include <string>
+#include <iostream>
+#include <iomanip>
+#include "./exceptions.h"
+
+ErrorException::ErrorException(const string & what_arg){/*{{{*/
+
+	int len;
+	len           = strlen(what_arg.c_str())+1;
+	what_str      = new char[len];
+	memcpy(what_str,what_arg.c_str(),len);
+
+	file_name     = NULL;
+	function_name = NULL;
+	file_line     = 0;
+
+}/*}}}*/
+ErrorException::ErrorException(int what_rank,const string& what_file, const string& what_function,int what_line, const string& what_arg){/*{{{*/
+
+	/*Intermediaries*/
+	int len;
+
+	this->rank     = what_rank;
+	this->file_line= what_line;
+
+	len = strlen(what_arg.c_str())+1;
+	this->what_str = new char[len];
+	memcpy(this->what_str,what_arg.c_str(),len);
+
+	len = strlen(what_file.c_str())+1;
+	this->file_name = new char[len];
+	memcpy(this->file_name,what_file.c_str(),len);
+
+	len = strlen(what_function.c_str())+1;
+	this->function_name = new char[len];
+	memcpy(this->function_name,what_function.c_str(),len);
+
+	/*Uncomment if messages do not print properly*/
+	//this->Report();
+}/*}}}*/
+ErrorException::~ErrorException() throw(){/*{{{*/
+	delete [] what_str;
+	delete [] file_name;
+	delete [] function_name;
+}/*}}}*/
+const char* ErrorException::what() const throw(){/*{{{*/
+	return what_str;
+}/*}}}*/
+void ErrorException::Report() const{/*{{{*/
+
+	/*WINDOWS*/
+	if(!this->function_name || this->file_line==0){
+		cerr << "Error message: " << what() << endl;
+		return;
+	}
+
+	cerr <<"\n[" << this->rank<< "] ??? Error using ==> " << this->file_name << ":" << this->file_line << 
+	       "\n[" << this->rank<< "] " << this->function_name << " error message: " << what() << "\n" << endl;
+
+	return;
+}/*}}}*/
+const char* ErrorException::WrapperReport() const{/*{{{*/
+
+	/*Output*/
+	std::ostringstream buffer;
+	char *message = NULL;
+
+	/*WINDOWS*/
+	if(!this->function_name || this->file_line==0){ 
+		buffer << " error message: " << this->what_str;
+	}
+	else{
+		buffer << "\nError in ==> " << this->file_name << ":" << file_line << "\n";
+		buffer << this->function_name << " error message: " << this->what_str;
+	}
+
+	/*Convert std::ostringstream to std::string and then create char* */
+	std::string buffer2 = buffer.str();
+	message = new char[strlen(buffer2.c_str())+1];
+	sprintf(message,"%s",buffer2.c_str());
+
+	return message;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Exceptions/exceptions.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Exceptions/exceptions.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Exceptions/exceptions.h	(revision 27955)
@@ -0,0 +1,101 @@
+/*!\file exceptions.h
+ * \brief: two types of exceptions are handled for now. Errors, and 
+ * warnings. Those exceptions are trapped provided the matlab modules 
+ * are started using MODULEBOOT, and ended using MODULEEND. These are 
+ * macros hiding try, catch statements. This header file defines our 
+ * own exceptions
+ */
+
+#ifndef _MY_EXCEPTIONS_H_
+#define _MY_EXCEPTIONS_H_
+
+#include <exception>
+#include <string>
+#include <iostream>
+#include <sstream>
+#include <iomanip>
+
+using namespace std;
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Only include forward declaration to save compile time*/
+#include <iosfwd>
+#include <sstream>
+
+/*macros: (should move somewhere else)*/
+#include "../io/Comm/IssmComm.h"
+/* _assert_ {{{*/
+/*Assertion macro: do nothing if macro _ISSM_DEBUG_ undefined*/
+#ifdef _ISSM_DEBUG_ 
+#define _assert_(statement)\
+  if (!(statement)) _error_("Assertion \""<<#statement<<"\" failed, please report bug at "<<PACKAGE_BUGREPORT)
+#else
+#define _assert_(ignore)\
+  ((void) 0)
+#endif
+/*}}}*/
+/* _error_ {{{*/
+/*new Error exception macro*/
+#ifdef _INTEL_WIN_
+#define _error_(StreamArgs)\
+   do{std::ostringstream aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy; \
+   aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy << StreamArgs << std::ends; \
+   throw ErrorException(aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy.str());}while(0)
+#else
+#define _error_(StreamArgs)\
+	do{std::ostringstream aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy; \
+   aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy << StreamArgs << std::ends; \
+   throw ErrorException(IssmComm::GetRank(),__FILE__,__func__,__LINE__,aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy.str());}while(0)
+#endif
+/*}}}*/
+/* ExceptionTrapBegin/ExceptionTrapEnd {{{*/
+
+/*The following macros hide the error exception handling in a matlab module. Just put 
+ * ExceptionTrapBegin(); and ExceptionTrapEnd(); at the beginning and end of a module, and c++ exceptions 
+ * will be trapped. Really nifty!*/
+
+#define ExceptionTrapBegin(); \
+	try{
+
+#define ExceptionTrapEnd(); }\
+	catch(ErrorException &exception){\
+		exception.Report();\
+		return 1;\
+	}\
+	catch(exception& e) {\
+		_printf_("Standard exception: " << e.what() << "\n\n");\
+		return 1;\
+	}\
+	catch(...){\
+		_printf_("An unexpected error occurred \n\n");\
+		return 1;\
+	}
+/*}}}*/
+
+/*ISSM exception class: */
+class ErrorException: public exception{ /*{{{*/
+
+	char* what_str;
+	char* function_name;
+	char* file_name;
+	int   file_line;
+	int   rank;
+
+	public:
+	/*Windows*/
+	ErrorException(const string &what_arg);
+	/*Linux/macOS*/
+	ErrorException(int what_rank,const string &what_file,const string& what_function,int what_line,const string& what_arg);
+	~ErrorException() throw();
+	virtual const char *what() const throw();
+	void Report() const;
+	const char* WrapperReport() const;
+
+};
+/*}}}*/
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Exp/exp.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Exp/exp.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Exp/exp.cpp	(revision 27955)
@@ -0,0 +1,99 @@
+/*!\file:  Exp.cpp
+ * \brief Exp.cpp: write the vertex coordinates defined in a domain 
+ * outline from Argus (.exp file). The first contour in the file is for 
+ * the outside domain outline. 
+ */
+#include <stdio.h>
+#include <math.h>
+
+#include "../MemOps/MemOps.h"
+#include "../Exceptions/exceptions.h"
+#include "./exp.h"
+
+int ExpWrite(int nprof,int* profnvertices,double** pprofx,double** pprofy,char* domainname){/*{{{*/
+
+	/*I/O: */
+	FILE* fid=NULL;
+
+	/*open domain outline file for writing: */
+	if((fid=fopen(domainname,"w"))==NULL) _error_("could not open domain file " << domainname); 
+
+	/*Start writing profiles: */
+	for(int counter=0;counter<nprof;counter++){
+
+		/*Write header: */
+		fprintf(fid,"## Name:%s\n",domainname);
+		fprintf(fid,"## Icon:0\n");
+		fprintf(fid,"# Points Count	Value\n");
+		fprintf(fid,"%u %s\n",profnvertices[counter]  ,"1.");
+		fprintf(fid,"# X pos	Y pos\n");
+
+		/*Write vertices: */
+		for(int i=0;i<profnvertices[counter];i++){
+			fprintf(fid,"%lf\t%lf\n",pprofx[counter][i],pprofy[counter][i]);
+		}
+
+		/*Write blank line: */
+		if(counter<nprof-1) fprintf(fid,"\n");
+	}
+
+	/*close Exp file: */
+	fclose(fid);
+
+	return 1;
+}/*}}}*/
+int IsInPolySerial(double* in,double* xc,double* yc,int numvertices,double* x,double* y,int nods, int edgevalue){ /*{{{*/
+
+	double x0,y0;
+
+	/*Go through all vertices of the mesh:*/
+	for(int i=0;i<nods;i++){
+		if (in[i]){
+			/*this vertex already is inside one of the contours, continue*/
+			continue;
+		}
+		/*pick up vertex: */
+		x0=x[i];
+		y0=y[i];
+		if (pnpoly(numvertices,xc,yc,x0,y0,edgevalue)){
+			in[i]=1.;
+		}
+		else{
+			in[i]=0.;
+		}
+	}
+
+	return 1;
+}
+/*}}}*/
+/*pnpoly{{{*/
+int pnpoly(int npol, double *xp, double *yp, double x, double y, int edgevalue) {
+	int i, j, c = 0;
+	double n1, n2, normp, scalar;
+
+	/*first test, are they colinear? if yes, is the point in the middle of the segment*/
+	if (edgevalue != 2 ){
+		for (i = 0, j = npol-1; i < npol; j = i++) {
+			n1=pow(yp[i]-yp[j],2.0)+pow(xp[i]-xp[j],2.0);
+			n2=pow(y-yp[j],2.0)+pow(x-xp[j],2.0);
+			normp=pow(n1*n2,0.5);
+			scalar=(yp[i]-yp[j])*(y-yp[j])+(xp[i]-xp[j])*(x-xp[j]);
+
+			if (scalar == normp){
+				if (n2<=n1){
+					c = edgevalue;
+					return c;
+				}
+			}
+		}
+	}
+	/*second test : point is neither on a vertex, nor on a side, where is it ?*/
+	for (i = 0, j = npol-1; i < npol; j = i++) {
+		if ((((yp[i]<=y) && (y<yp[j])) ||
+					((yp[j]<=y) && (y<yp[i]))) &&
+				(x < (xp[j] - xp[i]) * (y - yp[i]) / (yp[j] - yp[i]) + xp[i])){
+			c = !c;
+		}
+	}
+	return c;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Exp/exp.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Exp/exp.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Exp/exp.h	(revision 27955)
@@ -0,0 +1,176 @@
+/* \file exp.h
+ * \brief: header file for contour (argus type, files in .exp extension) operations
+ */
+
+#ifndef _EXP_H_
+#define _EXP_H_
+
+#include <cstring>
+#include "../Numerics/recast.h"
+#include "../Exceptions/exceptions.h"
+#include "../MemOps/MemOps.h"
+
+int IsInPolySerial(double* in,double* xc,double* yc,int numvertices,double* x,double* y,int nods, int edgevalue);
+int ExpWrite(int nprof,int* profnvertices,double** pprofx,double** pprofy,char* domainname);
+int pnpoly(int npol, double *xp, double *yp, double x, double y, int edgevalue);
+
+template <class doubletype> int IsInPoly(doubletype* in,double* xc,double* yc,int numvertices,double* x,double* y,int i0,int i1, int edgevalue){ /*{{{*/
+
+	int i;
+	double x0,y0;
+	doubletype value;
+	double xmin=xc[0];
+	double xmax=xc[0];
+	double ymin=yc[0];
+	double ymax=yc[0];
+
+	/*Get extrema*/
+	for (i=1;i<numvertices;i++){
+		if(xc[i]<xmin) xmin=xc[i];
+		if(xc[i]>xmax) xmax=xc[i];
+		if(yc[i]<ymin) ymin=yc[i];
+		if(yc[i]>ymax) ymax=yc[i];
+	}
+
+	/*Go through all vertices of the mesh:*/
+	for (i=i0;i<i1;i++){
+
+		//Get current value of value[i] -> do not change it if != 0
+		value=in[i];
+		if (reCast<bool,doubletype>(value)){
+			/*this vertex already is inside one of the contours, continue*/
+			continue;
+		}
+
+		/*pick up vertex (x[i],y[i]) and figure out if located inside contour (xc,yc)*/
+		x0=x[i]; y0=y[i];
+		if(x0<xmin || x0>xmax || y0<ymin || y0>ymax){
+			value=0;
+		}
+		else{
+			value=pnpoly(numvertices,xc,yc,x0,y0,edgevalue);
+		}
+		in[i]=value;
+	}
+	 return 1;
+}/*}}}*/
+template <class doubletype> int ExpRead(int* pnprof,int** pprofnvertices,doubletype*** ppprofx,doubletype*** ppprofy,bool** pclosed,char* domainname){ /*{{{*/
+
+	/*indexing: */
+	int i,counter;
+
+	/*I/O: */
+	FILE   *fid = NULL;
+	char    chardummy[256];
+	double  ddummy;
+
+	/*output: */
+	int          nprof;                //number of profiles in the domainname file
+	int         *profnvertices = NULL; //array holding the number of vertices for the nprof profiles
+	doubletype **pprofx        = NULL; //array of profiles x coordinates
+	doubletype **pprofy        = NULL; //array of profiles y coordinates
+	bool        *closed        = NULL; //array holding closed flags for the nprof profiles
+
+	/*For each profile: */
+	int         n;
+	doubletype *x  = NULL;
+	doubletype *y  = NULL;
+	bool        cl;
+
+	/*open domain outline file for reading: */
+	if ((fid=fopen(domainname,"r"))==NULL){
+		_error_("could not find file \"" << domainname<<"\". Make sure that the file and path provided exist.");
+	}
+
+	/*Do a first pass through the domainname file, to figure out how many profiles we need to read: */
+	nprof=1;
+	for(;;){
+		//## Name:filename
+		if(fscanf(fid,"%255s %255s\n",chardummy,chardummy)!=2) _error_("Could not read " << domainname);
+		//## Icon:0
+		if(fscanf(fid,"%255s %255s\n",chardummy,chardummy)!=2) _error_("Could not read " << domainname<<"(Expecting ## Icon:0 and read "<<chardummy<<")");
+		//# Points Count Value
+		if(fscanf(fid,"%255s %255s %255s %255s\n",chardummy,chardummy,chardummy,chardummy)!=4) _error_("Could not read " << domainname);
+		if(fscanf(fid,"%20i %255s\n",&n,chardummy)!=2) _error_("Could not read number of points in "<<domainname);
+		//# X pos Y pos
+		if(fscanf(fid,"%255s %255s %255s %255s %255s\n",chardummy,chardummy,chardummy,chardummy,chardummy)!=5) _error_("Could not read " << domainname);
+		for (i=0;i<n;i++){
+			if(fscanf(fid,"%30lf %30lf\n",&ddummy,&ddummy)!=2){
+				_error_("Could not read coordinate of vertex "<< i <<" of "<<domainname);
+			}
+		}
+		/*check whether we are at the end of the file, otherwise, keep reading next profile:*/
+		if(feof(fid)) break;
+		nprof++;
+	}
+
+	/*Allocate and initialize all the profiles: */
+	profnvertices = xNew<int>(nprof);
+	pprofx        = xNew<doubletype*>(nprof);
+	pprofy        = xNew<doubletype*>(nprof);
+	for (i=0;i<nprof;i++){
+		pprofx[i] = NULL;
+		pprofy[i] = NULL;
+	}
+	closed=xNew<bool>(nprof);
+
+	/*Reset file pointer to beginning of file: */
+	fseek(fid,0,SEEK_SET);
+
+	/*Start reading profiles: */
+	for(counter=0;counter<nprof;counter++){
+
+		/*Skip header: */
+		//## Name:filename
+		if(fscanf(fid,"%255s %255s\n",chardummy,chardummy)!=2) _error_("Could not read " << domainname);
+		//## Icon:0
+		if(fscanf(fid,"%255s %255s\n",chardummy,chardummy)!=2) _error_("Could not read " << domainname);
+		//# Points Count Value
+		if(fscanf(fid,"%255s %255s %255s %255s\n",chardummy,chardummy,chardummy,chardummy)!=4) _error_("Could not read " << domainname);
+
+		/*Get number of profile vertices: */
+		if(fscanf(fid,"%20i %255s\n",&n,chardummy)!=2) _error_("Could not read number of points in "<<domainname);
+
+		/*Skip next line: */
+		//# X pos Y pos
+		if(fscanf(fid,"%255s %255s %255s %255s %255s\n",chardummy,chardummy,chardummy,chardummy,chardummy)!=5) _error_("Could not read " << domainname);
+
+		/*Allocate vertices: */
+		x=xNew<doubletype>(n);
+		y=xNew<doubletype>(n);
+
+		/*Read vertices: */
+		for (i=0;i<n;i++){
+			if(fscanf(fid,"%30lf %30lf\n",&x[i],&y[i])!=2){
+				_error_("Could not read coordinate of vertex "<<i<<" of "<<domainname);
+			}
+		}
+
+		/*Now check that we are dealing with open contours: */
+		cl=false;
+		if((x[0]==x[n-1]) && (y[0]==y[n-1])){
+			cl=true;
+		}
+
+		/*Assign pointers: */
+		profnvertices[counter]=n;
+		pprofx[counter]=x;
+		pprofy[counter]=y;
+		closed[counter]=cl;
+	}
+
+	/*close domain outline file: */
+	fclose(fid);
+
+	/*Assign output pointers: */
+	*pnprof=nprof;
+	*pprofnvertices=profnvertices;
+	*ppprofx=pprofx;
+	*ppprofy=pprofy;
+	if(pclosed) *pclosed=closed;
+	else         xDelete<bool>(closed);
+	return 1;
+
+} /*}}}*/
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/FSanalyticals/fsanalyticals.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/FSanalyticals/fsanalyticals.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/FSanalyticals/fsanalyticals.cpp	(revision 27955)
@@ -0,0 +1,222 @@
+/*!\file fx.cpp
+ * \brief: analytical fonction for FS 
+ * test case for a cube with Dirichlet conditions on all faces and no variation in z
+ * case 1: 2d test with quadratic functions
+ * case 2: 2d test with sinusoidal functions
+ * case 3: 3d test with quadratic functions
+ * case 4: 3d test with sinusoidal functions
+ * case 5: 3d test with sinusoidal functions, no variations with z, non homogeneous Dirichlet conditions
+ * case 6: 3d test with sinusoidal functions, non homogeneous Dirichlet conditions
+ *
+ * case 103: 3d test sin(z) HO
+ *
+ * case 201: 3d test quadratic functions FS, ESTAR flow law
+ * case 202: 3d test quadratic functions HO, ESTAR flow law
+ */
+
+#include <math.h>
+#include "../Numerics/types.h"
+#include "../Numerics/constants.h"
+#include "./fsanalyticals.h"
+#include "../shared.h"
+
+//#define GOCOMPILE 0
+#ifdef GOCOMPILE
+IssmDouble fx(IssmDouble x,IssmDouble y,IssmDouble z,int testid){ /*{{{*/ 
+	IssmDouble p=2;
+	IssmDouble q=2;
+	IssmDouble a=1;
+
+	switch(testid){
+		case 1:
+			z=y;
+			return  4*pow(x, 2)*z*pow(x - 1, 2) + 4*pow(x, 2)*z*(z - 1)*(2*z - 1) + 4*pow(x, 2)*pow(x - 1, 2)*(z - 1) + 2*pow(x, 2)*pow(x - 1, 2)*(2*z - 1) + 16*x*z*(x - 1)*(z - 1)*(2*z - 1) - 4*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) + 6*pow(z, 2)*(6*pow(x, 2) - 6*x + 1) + 4*z*pow(x - 1, 2)*(z - 1)*(2*z - 1) - 2*z*(6*pow(x, 2) - 6*x + 1) + z - 1.0L/2.0L;
+		case 2:
+			z=y;
+			return 10*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 3)*pow(sin(PI*p*z), 2)*cos(PI*p*z) - 2*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 3)*pow(cos(PI*p*z), 3) - 6*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*pow(sin(PI*p*z), 2)*pow(cos(PI*p*x), 2)*cos(PI*p*z) + PI*q*sin(PI*q*z)*cos(PI*q*x);
+		case 3: 
+			return 4*pow(x, 2)*y*z*pow(x - 1, 2)*(z - 1) + 4*pow(x, 2)*y*z*(y - 1)*(2*y - 1)*(z - 1) + 2*pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1) + 4*pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(z - 1) + 2*pow(x, 2)*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) - 4*x*pow(y, 2)*z*(x - 1)*(y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(2*x - 1)*(y - 1)*(z - 1) - 4*x*y*z*(x - 1)*pow(y - 1, 2)*(z - 1) + 16*x*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*y*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - 2*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + 4*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1) + y - 1.0L/2.0L;
+		case 4: 
+			return 4*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) + 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x) + PI*q*sin(PI*q*y)*sin(PI*q*z)*cos(PI*q*x);
+		case 5: 
+			return 2.*(cos(PI*p*x) - 1)*PI*PI*p*p*sin(PI*p*y) + 3*PI*PI*p*p*sin(PI*p*y)*cos(PI*p*x) + PI*q*sin(PI*q*y)*cos(PI*q*x);
+		case 6: 
+			return 4. * PI*PI * p*p * (cos(p*PI*x)-1) * sin(p*PI*y) * sin(p*PI*z)+ 2. * PI*PI*p*p*  sin(p*PI*y)    * sin(p*PI*z) * cos(p*PI*x) + q * PI * cos(q*PI*x) * sin(q*PI*y) * sin(q*PI*z);
+		case 7: 
+			z=y;
+			return 4*pow(x, 2)*z*pow(x - 1, 2) + 4*pow(x, 2)*z*(z - 1)*(2*z - 1) + 4*pow(x, 2)*pow(x - 1, 2)*(z - 1) + 2*pow(x, 2)*pow(x - 1, 2)*(2*z - 1) + 16*x*z*(x - 1)*(z - 1)*(2*z - 1) - 4*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) + 6*pow(z, 2)*(6*pow(x, 2) - 6*x + 1) + 4*z*pow(x - 1, 2)*(z - 1)*(2*z - 1) - 2*z*(6*pow(x, 2) - 6*x + 1) + 1;
+		case 8: case 18:
+			return 1.0;
+		case 9:
+			return 4*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) + 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x) + 2*x*z;
+		case 10:
+			return 4*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) + 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x) + PI*q*pow(z, a)*sin(PI*q*y)*cos(PI*q*x);
+		case 11:
+			z=y;
+			return 32.0/5.0*pow(PI, 2)*sin(8*PI*z) + 8*PI*cos(8*PI*x + 1.0/3.0*PI);
+		case 12:
+			z=y;
+			return 32.0/5.0*pow(PI, 2)*sin(8*PI*z);
+		case 13:
+			z=y;
+			return 8.0*pow(PI, 2)*pow(x, 2)*(z - 2)*sin(4*PI*x*z) - 4.0*PI*x*cos(4*PI*x*z) + 16.0*pow(PI, 2)*pow(z, 2)*(z - 2)*sin(4*PI*x*z) - 0.25*PI*((16*pow(PI, 2)*x*z*(PI*x*z - PI*x)*cos(4*PI*x*z) + 4*pow(PI, 2)*x*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + 4*pow(PI, 2)*x*z*sin(4*PI*x*z) - 4*PI*x*(-PI*z + PI)*sin(4*PI*x*z) - 16*PI*x*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - 16*PI*z*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z) + 4*PI*(PI*x*z - PI*x)*sin(4*PI*x*z) - 8*(pow(PI, 2)*x*z - pow(PI, 2)*x)*sin(4*PI*x*z) - PI*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - PI*cos(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) + 3*(-4*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) + PI*x*cos(4*PI*x*z) + 4*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 4*PI*sin(4*PI*z)*cos(4*PI*x);
+		case 14:
+			z=y;
+			return 8.0*pow(2, 1.0L/3.0L)*pow(PI, 2)*pow(z, 2)*(z - 2)*sin(4*PI*x*z)/pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 1.0L/3.0L) - 0.0266666666666667*pow(2, 1.0L/3.0L)*PI*z*(z - 2)*(800.0*pow(PI, 3)*pow(z, 3)*pow(z - 2, 2)*sin(4*PI*x*z)*cos(4*PI*x*z) - (-10.0*PI*x*(z - 2)*cos(4*PI*x*z) + 0.3125*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) - 2.5*sin(4*PI*x*z) - 2*PI*cos(4*PI*x))*(40.0*pow(PI, 2)*x*z*(z - 2)*sin(4*PI*x*z) - 10.0*PI*z*cos(4*PI*x*z) - 10.0*PI*(z - 2)*cos(4*PI*x*z) + 1.25*PI*(32*cos(4*PI*x)/pow(x, 2) - 4*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(PI*pow(x, 3)) - 4*(4*pow(PI, 2)*pow(z, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(z, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) - 2*PI*z*(-PI*z + PI)*sin(4*PI*x*z) - 8*PI*z*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - (pow(PI, 2)*pow(z, 2) - 2*pow(PI, 2)*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 20*sin(4*PI*x)/(PI*pow(x, 3)) - 6*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 4)) - 6*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4)) + 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 5)) + 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 5))) + 8*pow(PI, 2)*sin(4*PI*x)) - (50*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 12.5*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 12.5*PI*x*cos(4*PI*x*z) - 50*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))*(4*pow(PI, 2)*x*z*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*x*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + pow(PI, 2)*x*z*sin(4*PI*x*z) - PI*x*(-PI*z + PI)*sin(4*PI*x*z) - 4.0*PI*x*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - 4*PI*z*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z) + PI*(PI*x*z - PI*x)*sin(4*PI*x*z) - 2*(pow(PI, 2)*x*z - pow(PI, 2)*x)*sin(4*PI*x*z) - 0.25*PI*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*cos(4*PI*x*z))/(pow(PI, 4)*pow(x, 6)) + 150*pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 7)))*cos(4*PI*x*z)/pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 4.0L/3.0L) + (1.0L/10.0L)*pow(2, 1.0L/3.0L)*(40.0*pow(PI, 2)*pow(x, 2)*(z - 2)*sin(4*PI*x*z) - 20.0*PI*x*cos(4*PI*x*z) - 1.25*PI*((16*pow(PI, 2)*x*z*(PI*x*z - PI*x)*cos(4*PI*x*z) + 4*pow(PI, 2)*x*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + 4*pow(PI, 2)*x*z*sin(4*PI*x*z) - 4*PI*x*(-PI*z + PI)*sin(4*PI*x*z) - 16*PI*x*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - 16*PI*z*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z) + 4*PI*(PI*x*z - PI*x)*sin(4*PI*x*z) - 8*(pow(PI, 2)*x*z - pow(PI, 2)*x)*sin(4*PI*x*z) - PI*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - PI*cos(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) + 3*(-4*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) + PI*x*cos(4*PI*x*z) + 4*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))))/pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 1.0L/3.0L) + 4*PI*sin(4*PI*z)*cos(4*PI*x) + (1.0L/150.0L)*pow(2, 1.0L/3.0L)*(-10.0*PI*x*(z - 2)*cos(4*PI*x*z) + 0.3125*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) - 2.5*sin(4*PI*x*z) - 2*PI*cos(4*PI*x))*(160.0*pow(PI, 3)*x*pow(z, 2)*pow(z - 2, 2)*sin(4*PI*x*z)*cos(4*PI*x*z) - 40.0*pow(PI, 2)*pow(z, 2)*(z - 2)*pow(cos(4*PI*x*z), 2) - 40.0*pow(PI, 2)*z*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (-8.0*pow(PI, 2)*pow(x, 2)*(z - 2)*sin(4*PI*x*z) + 4.0*PI*x*cos(4*PI*x*z) + 0.25*PI*((16*pow(PI, 2)*x*z*(PI*x*z - PI*x)*cos(4*PI*x*z) + 4*pow(PI, 2)*x*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + 4*pow(PI, 2)*x*z*sin(4*PI*x*z) - 4*PI*x*(-PI*z + PI)*sin(4*PI*x*z) - 16*PI*x*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - 16*PI*z*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z) + 4*PI*(PI*x*z - PI*x)*sin(4*PI*x*z) - 8*(pow(PI, 2)*x*z - pow(PI, 2)*x)*sin(4*PI*x*z) - PI*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - PI*cos(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) + 3*(-4*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) + PI*x*cos(4*PI*x*z) + 4*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))))*(-10.0*PI*x*(z - 2)*cos(4*PI*x*z) + 0.3125*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) - 2.5*sin(4*PI*x*z) - 2*PI*cos(4*PI*x)) - (10*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 2.5*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 2.5*PI*x*cos(4*PI*x*z) - 10*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))*(4*pow(PI, 2)*pow(x, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(x, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + pow(PI, 2)*pow(x, 2)*sin(4*PI*x*z) - 8.0*PI*x*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z))/(pow(PI, 4)*pow(x, 6)))/pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 4.0L/3.0L);
+		case 15:
+			z=y;
+			return -24000000000*pow(z - 1, 2) - 1000000*PI*sin(10*PI*x);
+		case 21:
+			z=y;
+			return z - 4.0L/3.0L*pow(2, 1.0L/3.0L)*(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1))*(4*(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1))*(pow(x, 2)*z*(z - 1)*(2*z - 1) + 4*x*z*(x - 1)*(z - 1)*(2*z - 1) + z*pow(x - 1, 2)*(z - 1)*(2*z - 1)) + 4*(2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - 3*pow(z, 2)*(6*pow(x, 2) - 6*x + 1) + z*(6*pow(x, 2) - 6*x + 1))*(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x)) + (2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1))*(2*pow(x, 2)*z*(x - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(2*z - 1) + pow(x, 2)*(x - 1)*(z - 1)*(2*z - 1) + 2*x*z*pow(x - 1, 2)*(z - 1) + x*z*pow(x - 1, 2)*(2*z - 1) + x*pow(x - 1, 2)*(z - 1)*(2*z - 1) - 3*pow(z, 4)*(2*x - 1) + 6*pow(z, 3)*(2*x - 1) - 3*pow(z, 2)*(2*x - 1)))/pow(4*pow(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1), 2) + 4*pow(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x), 2) + (1.0L/2.0L)*pow(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1), 2), 4.0L/3.0L) - 1.0L/3.0L*pow(2, 1.0L/3.0L)*(4*(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1))*(2*pow(x, 2)*z*(x - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(2*z - 1) + pow(x, 2)*(x - 1)*(z - 1)*(2*z - 1) + 2*x*z*pow(x - 1, 2)*(z - 1) + x*z*pow(x - 1, 2)*(2*z - 1) + x*pow(x - 1, 2)*(z - 1)*(2*z - 1)) + 4*(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x))*(2*pow(x, 3) - 3*pow(x, 2) + x + 6*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 6*z*(2*pow(x, 3) - 3*pow(x, 2) + x)) + (2*pow(x, 2)*z*pow(x - 1, 2) + 2*pow(x, 2)*pow(x - 1, 2)*(z - 1) + pow(x, 2)*pow(x - 1, 2)*(2*z - 1) - 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) + 3*pow(z, 2)*(6*pow(x, 2) - 6*x + 1) - z*(6*pow(x, 2) - 6*x + 1))*(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1)))*(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1))/pow(4*pow(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1), 2) + 4*pow(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x), 2) + (1.0L/2.0L)*pow(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1), 2), 4.0L/3.0L) + 2*pow(2, 1.0L/3.0L)*(pow(x, 2)*z*(z - 1)*(2*z - 1) + 4*x*z*(x - 1)*(z - 1)*(2*z - 1) + z*pow(x - 1, 2)*(z - 1)*(2*z - 1))/pow(4*pow(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1), 2) + 4*pow(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x), 2) + (1.0L/2.0L)*pow(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1), 2), 1.0L/3.0L) - 0.5 + pow(2, 1.0L/3.0L)*(2*pow(x, 2)*z*pow(x - 1, 2) + 2*pow(x, 2)*pow(x - 1, 2)*(z - 1) + pow(x, 2)*pow(x - 1, 2)*(2*z - 1) - 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) + 3*pow(z, 2)*(6*pow(x, 2) - 6*x + 1) - z*(6*pow(x, 2) - 6*x + 1))/pow(4*pow(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1), 2) + 4*pow(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x), 2) + (1.0L/2.0L)*pow(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1), 2), 1.0L/3.0L);
+		case 22:
+			z=y;
+			return -2*pow(2, 1.0L/3.0L)*(pow(x, 2)*z*pow(z - 2, 2) + 4*x*z*(x - 2)*pow(z - 2, 2) + z*pow(x - 2, 2)*pow(z - 2, 2))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 1.0L/3.0L) + (2.0L/9.0L)*pow(2, 1.0L/3.0L)*(2*pow(x, 2)*z*(x - 2)*pow(z - 2, 2) + 2*x*z*pow(x - 2, 2)*pow(z - 2, 2) + 1)*(96*pow(x, 7) - 672*pow(x, 6) + 1728*pow(x, 5) - 1920*pow(x, 4) + 768*pow(x, 3) + 9*pow(z, 8)*(3*pow(x, 3) - 9*pow(x, 2) + 8*x - 2) - 96*pow(z, 7)*(3*pow(x, 3) - 9*pow(x, 2) + 8*x - 2) + pow(z, 6)*(207*pow(x, 5) - 1035*pow(x, 4) + 3012*pow(x, 3) - 4896*pow(x, 2) + 3512*x - 800) - 24*pow(z, 5)*(69*pow(x, 5) - 345*pow(x, 4) + 700*pow(x, 3) - 720*pow(x, 2) + 360*x - 64) + 2*pow(z, 4)*(27*pow(x, 7) - 189*pow(x, 6) + 2988*pow(x, 5) - 13050*pow(x, 4) + 22976*pow(x, 3) - 18240*pow(x, 2) + 6064*x - 576) - 8*pow(z, 3)*(36*pow(x, 7) - 252*pow(x, 6) + 1512*pow(x, 5) - 5040*pow(x, 4) + 7840*pow(x, 3) - 5385*pow(x, 2) + 1298*x - 6) + 48*pow(z, 2)*(11*pow(x, 7) - 77*pow(x, 6) + 276*pow(x, 5) - 610*pow(x, 4) + 768*pow(x, 3) - 486*pow(x, 2) + 124*x - 4) - 96*z*(4*pow(x, 7) - 28*pow(x, 6) + 72*pow(x, 5) - 80*pow(x, 4) + 32*pow(x, 3) - 3*pow(x, 2) + 6*x - 2))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 4.0L/3.0L) - pow(2, 1.0L/3.0L)*(pow(x, 2)*z*pow(x - 2, 2) + 2*pow(x, 2)*pow(x - 2, 2)*(z - 2) - 2*pow(z, 3)*(3*pow(x, 2) - 6*x + 2) + 8*pow(z, 2)*(3*pow(x, 2) - 6*x + 2) - 8*z*(3*pow(x, 2) - 6*x + 2))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 1.0L/3.0L) - 1.0L/27.0L*pow(2, 1.0L/3.0L)*(6*pow(x, 2)*z*pow(x - 2, 2)*(z - 2) + 3*pow(x, 2)*pow(x - 2, 2)*pow(z - 2, 2) - 3*pow(z, 4)*(3*pow(x, 2) - 6*x + 2) + 16*pow(z, 3)*(3*pow(x, 2) - 6*x + 2) - 24*pow(z, 2)*(3*pow(x, 2) - 6*x + 2))*(48*pow(x, 8) - 384*pow(x, 7) + 1152*pow(x, 6) - 1536*pow(x, 5) + 768*pow(x, 4) - 96*pow(x, 3) + 288*pow(x, 2) - 192*x - 6*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + 56*pow(z, 6)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - pow(z, 5)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) + 20*pow(z, 4)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) - pow(z, 3)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) + 12*pow(z, 2)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) - 12*z*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 4.0L/3.0L) + 4*PI*cos(4*PI*x + (1.0L/3.0L)*PI);
+		case 24:
+			return 2*pow(2, 1.0L/3.0L)*pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x)/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 1.0L/3.0L) - 2.0L/3.0L*pow(2, 1.0L/3.0L)*PI*p*(12*pow(PI, 3)*pow(p, 3)*sin(PI*p*x)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2)*cos(PI*p*x) - (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) - 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*cos(PI*p*x)*cos(PI*p*y) + pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*cos(PI*p*x)*cos(PI*p*z)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) - 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z)))*sin(PI*p*x)*sin(PI*p*y)*sin(PI*p*z)/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) + PI*q*sin(PI*q*y)*sin(PI*q*z)*cos(PI*q*x) - 1.0L/6.0L*pow(2, 1.0L/3.0L)*(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(12*pow(PI, 3)*pow(p, 3)*pow(sin(PI*p*x), 2)*sin(PI*p*y)*pow(sin(PI*p*z), 2)*cos(PI*p*y) + (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) + pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*cos(PI*p*x)*cos(PI*p*y) - 2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*cos(PI*p*y)*cos(PI*p*z)))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) - 1.0L/6.0L*pow(2, 1.0L/3.0L)*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(12*pow(PI, 3)*pow(p, 3)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*sin(PI*p*z)*cos(PI*p*z) + (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(-2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*cos(PI*p*y)*cos(PI*p*z) + pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*cos(PI*p*x)*cos(PI*p*z)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) + pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x)))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) + pow(2, 1.0L/3.0L)*(2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 1.0L/3.0L);
+
+		case 101: 
+			return 4*pow(x, 2)*y*z*pow(x - 1, 2)*(z - 1) + 8*pow(x, 2)*y*z*(y - 1)*(2*y - 1)*(z - 1) + 2*pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1) + 4*pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(z - 1) + 2*pow(x, 2)*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) - 12*x*pow(y, 2)*z*(x - 1)*(y - 1)*(z - 1) - 6*x*pow(y, 2)*z*(2*x - 1)*(y - 1)*(z - 1) - 12*x*y*z*(x - 1)*pow(y - 1, 2)*(z - 1) + 32*x*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 6*x*y*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - 6*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + 8*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 6*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1);
+		case 103:
+			return 50*pow(M_PI, 2)*x*y*(x - 1)*(y - 1)*pow(sin(5*M_PI*z), 2) - 50*pow(M_PI, 2)*x*y*(x - 1)*(y - 1)*pow(cos(5*M_PI*z), 2) - 3*x*y*pow(sin(4*M_PI*z), 2) - 2*x*(x - 1)*pow(sin(5*M_PI*z), 2) - 3*x*(y - 1)*pow(sin(4*M_PI*z), 2) - 3*y*(x - 1)*pow(sin(4*M_PI*z), 2) - 8*y*(y - 1)*pow(sin(5*M_PI*z), 2) - 3*(x - 1)*(y - 1)*pow(sin(4*M_PI*z), 2);
+		case 201:
+			return pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 1.0L/3.0L) + y - 1.0L/18.0L*(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(2*pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 2*x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1) + x*pow(y, 2)*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*y*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1) + pow(x, 2)*y*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + x*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + (2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1) + 2*pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2) - 2*x*pow(y, 2)*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) - pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 4.0L/3.0L) - 2.0L/9.0L*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*((x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2) + x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2) + 2*x*pow(y, 2)*(x - 1)*pow(y - 1, 2)*(z - 1) + x*pow(y, 2)*(2*x - 1)*pow(y - 1, 2)*(z - 1) + pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 2*(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1) + pow(x, 2)*y*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + x*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 8*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*x*pow(y, 2)*z*(x - 1)*(y - 1)*(z - 1) + x*pow(y, 2)*z*(2*x - 1)*(y - 1)*(z - 1) + 2*x*y*z*(x - 1)*pow(y - 1, 2)*(z - 1) + x*y*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) + pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(pow(x, 2)*y*z*(y - 1)*(2*y - 1)*(z - 1) + 4*x*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 2*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*pow(x, 2)*y*z*(x - 1)*(y - 1)*(z - 1) + pow(x, 2)*y*z*(x - 1)*(2*y - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*pow(y - 1, 2)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + x*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1)))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 4.0L/3.0L) + 2*(pow(x, 2)*y*z*(y - 1)*(2*y - 1)*(z - 1) + 4*x*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 1.0L/3.0L) - 1.0L/18.0L*(2*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1) + x*pow(y, 2)*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*y*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + (pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1) + 2*pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 8*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(z - 1) + 4*x*y*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(2*pow(x, 2)*y*z*(x - 1)*(y - 1)*(z - 1) + pow(x, 2)*y*z*(x - 1)*(2*y - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + x*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 2*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(z - 1) + 2*pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*(y - 1)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*(y - 1)*(z - 1) - 2*x*y*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*y*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) - y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 4.0L/3.0L) - 1.0L/2.0L + (2*pow(x, 2)*y*z*pow(x - 1, 2)*(z - 1) + 2*pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*(y - 1)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*(y - 1)*(z - 1) - 2*x*y*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*y*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) - y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 1.0L/3.0L);
+		case 202:
+			return -x*y*(x - 1)*(y - 1)/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 1.0L/3.0L) - 4*y*z*(y - 1)*(z - 1)/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 1.0L/3.0L) + (1.0L/18.0L)*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1))*(10*x*y*(x - 1)*(y - 1)*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1)) + 8*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(x - 1) + x*y*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1) + x*(x - 1)*(y - 1)*(z - 1)) + 2*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(y - 1) + x*y*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1) + y*(x - 1)*(y - 1)*(z - 1)) + (x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(x - 1) + 2*x*y*z*(y - 1) + x*y*(x - 1)*(z - 1) + 2*x*y*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1) + x*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1) + 2*y*(x - 1)*(y - 1)*(z - 1)) + 2*(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(2*x*y*z*(x - 1) + x*y*z*(y - 1) + 2*x*y*(x - 1)*(z - 1) + x*y*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1) + 2*x*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1) + y*(x - 1)*(y - 1)*(z - 1)))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 4.0L/3.0L) + (2.0L/9.0L)*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1))*(4*y*z*(y - 1)*(z - 1)*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1)) + 5*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(y - 1) + x*y*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1) + y*(x - 1)*(y - 1)*(z - 1)) + 8*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + (x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + 4*y*z*(y - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + 4*(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + y*z*(y - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 4.0L/3.0L) + (2.0L/9.0L)*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(4*y*z*(y - 1)*(z - 1)*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1)) + 5*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(y - 1) + x*y*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1) + y*(x - 1)*(y - 1)*(z - 1)) + 8*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + (x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + 4*y*z*(y - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + 4*(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + y*z*(y - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 4.0L/3.0L) - 2*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 1.0L/3.0L) + (1.0L/18.0L)*(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(16*x*z*(x - 1)*(z - 1)*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1)) + 5*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(x - 1) + x*y*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1) + x*(x - 1)*(y - 1)*(z - 1)) + 2*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + 2*(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(x - 1)*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + 2*(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + 4*x*z*(x - 1)*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 4.0L/3.0L) - (x*y*z*(z - 1) + x*z*(x - 1)*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 1.0L/3.0L);
+		case 211:
+			return (200.0L/707238535107.0L)*pow(17, 2.0L/3.0L)*pow(6, 1.0L/3.0L)*(-9*(169*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(2197*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-2197*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 26*z*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + sqrt(13)*z*(-78*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 13*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 169*sqrt(13)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L)) + 13*(9*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 78*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 13*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(9*sqrt(13)*z*(-2197*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 26*z*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + sqrt(13)*z*(-78*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 13*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 117*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 1014*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 2197*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 13*sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L)))/pow((8.0L/17.0L)*pow(fabs((15.0L/26.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/4394.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs(-45.0L/2197.0L*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (30.0L/169.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 5.0L/169.0L*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs((135.0L/4394.0L)*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 45.0L/169.0L*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/338.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + 1, 4.0L/3.0L) - 150.0L/235746178369.0L*pow(17, 2.0L/3.0L)*pow(6, 1.0L/3.0L)*(3*(169*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(507*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 3*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-6*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + 3*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 6591*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 3*sqrt(13)*z*(6*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - (507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 169*sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 169*sqrt(13)*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 507*sqrt(13)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 28561*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))) + 13*(9*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 78*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 13*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(9*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 78*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 3*sqrt(13)*z*(-6*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + 3*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 6591*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 3*sqrt(13)*z*(6*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - (507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 169*sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 169*sqrt(13)*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 13*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 507*sqrt(13)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 2197*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))))/pow((8.0L/17.0L)*pow(fabs((15.0L/26.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/4394.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs(-45.0L/2197.0L*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (30.0L/169.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 5.0L/169.0L*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs((135.0L/4394.0L)*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 45.0L/169.0L*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/338.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + 1, 4.0L/3.0L);
+
+		case 212:
+			return (16.0L/9.0L)*x*(4*x + 1)/(pow(2*(4*pow(fabs((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z)), 2) + 9)/(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11) + 1, 1.0L/3.0L)*pow((4.0L/3.0L)*pow(x, 2) + (1.0L/3.0L)*pow(2*x + 1, 2) + 11.0L/6.0L, 4.0L/3.0L)) + (64.0L/3.0L)*x*(-(4*x + 1)*(4*pow(fabs((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z)), 2) + 9)/pow(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11, 2) + 2*(pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (y + 3*z)/fabs(y + 3*z))*((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z))/(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11))/(pow(2*(4*pow(fabs((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z)), 2) + 9)/(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11) + 1, 4.0L/3.0L)*pow((4.0L/3.0L)*pow(x, 2) + (1.0L/3.0L)*pow(2*x + 1, 2) + 11.0L/6.0L, 1.0L/3.0L)) + (4.0L/9.0L)*(4*x + 1)/(pow(2*(4*pow(fabs((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z)), 2) + 9)/(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11) + 1, 1.0L/3.0L)*pow((4.0L/3.0L)*pow(x, 2) + (1.0L/3.0L)*pow(2*x + 1, 2) + 11.0L/6.0L, 4.0L/3.0L)) - 4/(pow(2*(4*pow(fabs((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z)), 2) + 9)/(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11) + 1, 1.0L/3.0L)*pow((4.0L/3.0L)*pow(x, 2) + (1.0L/3.0L)*pow(2*x + 1, 2) + 11.0L/6.0L, 1.0L/3.0L)) + (16.0L/3.0L)*(-(4*x + 1)*(4*pow(fabs((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z)), 2) + 9)/pow(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11, 2) + 2*(pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (y + 3*z)/fabs(y + 3*z))*((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z))/(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11))/(pow(2*(4*pow(fabs((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z)), 2) + 9)/(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11) + 1, 4.0L/3.0L)*pow((4.0L/3.0L)*pow(x, 2) + (1.0L/3.0L)*pow(2*x + 1, 2) + 11.0L/6.0L, 1.0L/3.0L));
+
+		default:
+			_error_("FS analytical solution"<<testid<<" not implemented yet");
+	}
+}
+/*}}}*/
+IssmDouble fy(IssmDouble x,IssmDouble y,IssmDouble z,int testid){ /*{{{*/ 
+	IssmDouble p=2;
+	IssmDouble q=2;
+	IssmDouble a=1;
+
+	switch(testid){
+		case 1:
+			z=y;
+			return -8*pow(x, 3) + 4*pow(x, 2)*z*(x - 1)*(z - 1) + 2*pow(x, 2)*z*(x - 1)*(2*z - 1) + 2*pow(x, 2)*(x - 1)*(z - 1)*(2*z - 1) + 12*pow(x, 2) + 4*x*z*pow(x - 1, 2)*(z - 1) + 2*x*z*pow(x - 1, 2)*(2*z - 1) + 2*x*pow(x - 1, 2)*(z - 1)*(2*z - 1) - 3*x - 6*pow(z, 4)*(2*x - 1) + 12*pow(z, 3)*(2*x - 1) - 6*pow(z, 2)*(2*x - 1) - 24*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + 24*z*(2*pow(x, 3) - 3*pow(x, 2) + x) - 1.0L/2.0L;
+		case 2: 
+			z=y;
+			return -10*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*z), 3)*cos(PI*p*x) + 6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*sin(PI*p*z)*cos(PI*p*x)*pow(cos(PI*p*z), 2) + 2*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*z), 3)*pow(cos(PI*p*x), 3) + PI*q*sin(PI*q*x)*cos(PI*q*z);
+		case 3: 
+			return 4*pow(x, 2)*y*z*(x - 1)*(y - 1)*(z - 1) + 2*pow(x, 2)*y*z*(x - 1)*(2*y - 1)*(z - 1) + 2*pow(x, 2)*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 4*x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(z - 1) - 4*x*pow(y, 2)*z*pow(y - 1, 2)*(z - 1) - 2*x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2) + 4*x*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) - 16*x*y*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + 2*x*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 4*x*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1) + x - 4*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - 2*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - 1.0L/2.0L;
+		case 4: 
+			return -2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y) + PI*q*sin(PI*q*x)*sin(PI*q*z)*cos(PI*q*y);
+		case 5: 
+			return -(cos(PI*p*y) - 1)*PI*PI*p*p*sin(PI*p*x) + PI*q*sin(PI*q*x)*cos(PI*q*y);
+		case 6: 
+			return - 4. * PI*PI * p*p * (cos(p*PI*y)-1) * sin(p*PI*x) * sin(p*PI*z)-  2. * PI*PI * p*p *  sin(p*PI*x)    * cos(p*PI*y) * sin(p*PI*z)+ q * PI * sin(q*PI*x) * cos(q*PI*y) * sin(q*PI*z);
+		case 7: 
+			z=y;
+			return -8*pow(x, 3) + 4*pow(x, 2)*z*(x - 1)*(z - 1) + 2*pow(x, 2)*z*(x - 1)*(2*z - 1) + 2*pow(x, 2)*(x - 1)*(z - 1)*(2*z - 1) + 12*pow(x, 2) + 4*x*z*pow(x - 1, 2)*(z - 1) + 2*x*z*pow(x - 1, 2)*(2*z - 1) + 2*x*pow(x - 1, 2)*(z - 1)*(2*z - 1) - 4*x - 6*pow(z, 4)*(2*x - 1) + 12*pow(z, 3)*(2*x - 1) - 6*pow(z, 2)*(2*x - 1) - 24*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + 24*z*(2*pow(x, 3) - 3*pow(x, 2) + x);
+		case 8: case 18:
+			return 1.0;
+		case 9: 
+			return -2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y) + 2*y*z;
+		case 10:
+			return -2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y) + PI*q*pow(z, a)*sin(PI*q*x)*cos(PI*q*y);
+		case 11:
+			z=y;
+			return 32.0/5.0*pow(PI, 2)*sin(8*PI*x) - 10.;
+		case 12:
+			z=y;
+			return 32.0/5.0*pow(PI, 2)*sin(8*PI*x) - 100;
+		case 13:
+			z=y;
+			return 8.0*pow(PI, 2)*x*z*(z - 2)*sin(4*PI*x*z) - 2.0*PI*z*cos(4*PI*x*z) - 2.0*PI*(z - 2)*cos(4*PI*x*z) + 0.25*PI*(32*cos(4*PI*x)/pow(x, 2) - 4*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(PI*pow(x, 3)) - 4*(4*pow(PI, 2)*pow(z, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(z, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) - 2*PI*z*(-PI*z + PI)*sin(4*PI*x*z) - 8*PI*z*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - (pow(PI, 2)*pow(z, 2) - 2*pow(PI, 2)*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 20*sin(4*PI*x)/(PI*pow(x, 3)) - 6*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 4)) - 6*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4)) + 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 5)) + 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 5))) + 4*PI*sin(4*PI*x)*cos(4*PI*z) + (8.0L/5.0L)*pow(PI, 2)*sin(4*PI*x) + 2*(-4.0*pow(PI, 2)*pow(x, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) - 1.0*pow(PI, 2)*pow(x, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) - 1.0*pow(PI, 2)*pow(x, 2)*sin(4*PI*x*z) + 8.0*PI*x*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z))/(pow(PI, 2)*pow(x, 3));
+		case 14:
+			z=y;
+			return 4*PI*sin(4*PI*x)*cos(4*PI*z) + (1.0L/10.0L)*pow(2, 1.0L/3.0L)*(40.0*pow(PI, 2)*x*z*(z - 2)*sin(4*PI*x*z) - 10.0*PI*z*cos(4*PI*x*z) - 10.0*PI*(z - 2)*cos(4*PI*x*z) + 1.25*PI*(32*cos(4*PI*x)/pow(x, 2) - 4*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(PI*pow(x, 3)) - 4*(4*pow(PI, 2)*pow(z, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(z, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) - 2*PI*z*(-PI*z + PI)*sin(4*PI*x*z) - 8*PI*z*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - (pow(PI, 2)*pow(z, 2) - 2*pow(PI, 2)*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 20*sin(4*PI*x)/(PI*pow(x, 3)) - 6*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 4)) - 6*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4)) + 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 5)) + 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 5))) + 8*pow(PI, 2)*sin(4*PI*x))/pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 1.0L/3.0L) + (1.0L/750.0L)*pow(2, 1.0L/3.0L)*(-10.0*PI*x*(z - 2)*cos(4*PI*x*z) + 0.3125*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) - 2.5*sin(4*PI*x*z) - 2*PI*cos(4*PI*x))*(800.0*pow(PI, 3)*pow(z, 3)*pow(z - 2, 2)*sin(4*PI*x*z)*cos(4*PI*x*z) - (-10.0*PI*x*(z - 2)*cos(4*PI*x*z) + 0.3125*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) - 2.5*sin(4*PI*x*z) - 2*PI*cos(4*PI*x))*(40.0*pow(PI, 2)*x*z*(z - 2)*sin(4*PI*x*z) - 10.0*PI*z*cos(4*PI*x*z) - 10.0*PI*(z - 2)*cos(4*PI*x*z) + 1.25*PI*(32*cos(4*PI*x)/pow(x, 2) - 4*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(PI*pow(x, 3)) - 4*(4*pow(PI, 2)*pow(z, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(z, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) - 2*PI*z*(-PI*z + PI)*sin(4*PI*x*z) - 8*PI*z*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - (pow(PI, 2)*pow(z, 2) - 2*pow(PI, 2)*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 20*sin(4*PI*x)/(PI*pow(x, 3)) - 6*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 4)) - 6*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4)) + 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 5)) + 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 5))) + 8*pow(PI, 2)*sin(4*PI*x)) - (50*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 12.5*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 12.5*PI*x*cos(4*PI*x*z) - 50*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))*(4*pow(PI, 2)*x*z*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*x*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + pow(PI, 2)*x*z*sin(4*PI*x*z) - PI*x*(-PI*z + PI)*sin(4*PI*x*z) - 4.0*PI*x*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - 4*PI*z*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z) + PI*(PI*x*z - PI*x)*sin(4*PI*x*z) - 2*(pow(PI, 2)*x*z - pow(PI, 2)*x)*sin(4*PI*x*z) - 0.25*PI*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*cos(4*PI*x*z))/(pow(PI, 4)*pow(x, 6)) + 150*pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 7)))/pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 4.0L/3.0L) - pow(2, 1.0L/3.0L)*(4.0*pow(PI, 2)*pow(x, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(x, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + pow(PI, 2)*pow(x, 2)*sin(4*PI*x*z) - 8.0*PI*x*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z))/(pow(PI, 2)*pow(x, 3)*pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 1.0L/3.0L)) - 1.0L/15.0L*pow(2, 1.0L/3.0L)*(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) + (-1.0*pow(PI, 2)*pow(x, 2)*z + pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))*(160.0*pow(PI, 3)*x*pow(z, 2)*pow(z - 2, 2)*sin(4*PI*x*z)*cos(4*PI*x*z) - 40.0*pow(PI, 2)*pow(z, 2)*(z - 2)*pow(cos(4*PI*x*z), 2) - 40.0*pow(PI, 2)*z*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (-8.0*pow(PI, 2)*pow(x, 2)*(z - 2)*sin(4*PI*x*z) + 4.0*PI*x*cos(4*PI*x*z) + 0.25*PI*((16*pow(PI, 2)*x*z*(PI*x*z - PI*x)*cos(4*PI*x*z) + 4*pow(PI, 2)*x*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + 4*pow(PI, 2)*x*z*sin(4*PI*x*z) - 4*PI*x*(-PI*z + PI)*sin(4*PI*x*z) - 16*PI*x*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - 16*PI*z*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z) + 4*PI*(PI*x*z - PI*x)*sin(4*PI*x*z) - 8*(pow(PI, 2)*x*z - pow(PI, 2)*x)*sin(4*PI*x*z) - PI*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - PI*cos(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) + 3*(-4*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) + PI*x*cos(4*PI*x*z) + 4*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))))*(-10.0*PI*x*(z - 2)*cos(4*PI*x*z) + 0.3125*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) - 2.5*sin(4*PI*x*z) - 2*PI*cos(4*PI*x)) - (10*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 2.5*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 2.5*PI*x*cos(4*PI*x*z) - 10*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))*(4*pow(PI, 2)*pow(x, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(x, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + pow(PI, 2)*pow(x, 2)*sin(4*PI*x*z) - 8.0*PI*x*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z))/(pow(PI, 4)*pow(x, 6)))/(pow(PI, 2)*pow(x, 3)*pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 4.0L/3.0L));
+		case 15:
+			z=y;
+			return 54000000000000*pow(PI, 2)*sin(30*PI*x) + 6000000000000*pow(PI, 2)*sin(10*PI*x + (1.0L/5.0L)*PI) - 10000000;
+		case 21:
+			z=y;
+			return x + (4.0L/3.0L)*pow(2, 1.0L/3.0L)*(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x))*(4*(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1))*(2*pow(x, 2)*z*(x - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(2*z - 1) + pow(x, 2)*(x - 1)*(z - 1)*(2*z - 1) + 2*x*z*pow(x - 1, 2)*(z - 1) + x*z*pow(x - 1, 2)*(2*z - 1) + x*pow(x - 1, 2)*(z - 1)*(2*z - 1)) + 4*(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x))*(2*pow(x, 3) - 3*pow(x, 2) + x + 6*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 6*z*(2*pow(x, 3) - 3*pow(x, 2) + x)) + (2*pow(x, 2)*z*pow(x - 1, 2) + 2*pow(x, 2)*pow(x - 1, 2)*(z - 1) + pow(x, 2)*pow(x - 1, 2)*(2*z - 1) - 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) + 3*pow(z, 2)*(6*pow(x, 2) - 6*x + 1) - z*(6*pow(x, 2) - 6*x + 1))*(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1)))/pow(4*pow(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1), 2) + 4*pow(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x), 2) + (1.0L/2.0L)*pow(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1), 2), 4.0L/3.0L) - 1.0L/3.0L*pow(2, 1.0L/3.0L)*(4*(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1))*(pow(x, 2)*z*(z - 1)*(2*z - 1) + 4*x*z*(x - 1)*(z - 1)*(2*z - 1) + z*pow(x - 1, 2)*(z - 1)*(2*z - 1)) + 4*(2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - 3*pow(z, 2)*(6*pow(x, 2) - 6*x + 1) + z*(6*pow(x, 2) - 6*x + 1))*(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x)) + (2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1))*(2*pow(x, 2)*z*(x - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(2*z - 1) + pow(x, 2)*(x - 1)*(z - 1)*(2*z - 1) + 2*x*z*pow(x - 1, 2)*(z - 1) + x*z*pow(x - 1, 2)*(2*z - 1) + x*pow(x - 1, 2)*(z - 1)*(2*z - 1) - 3*pow(z, 4)*(2*x - 1) + 6*pow(z, 3)*(2*x - 1) - 3*pow(z, 2)*(2*x - 1)))*(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1))/pow(4*pow(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1), 2) + 4*pow(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x), 2) + (1.0L/2.0L)*pow(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1), 2), 4.0L/3.0L) - 0.5 - 2*pow(2, 1.0L/3.0L)*(2*pow(x, 3) - 3*pow(x, 2) + x + 6*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 6*z*(2*pow(x, 3) - 3*pow(x, 2) + x))/pow(4*pow(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1), 2) + 4*pow(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x), 2) + (1.0L/2.0L)*pow(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1), 2), 1.0L/3.0L) + pow(2, 1.0L/3.0L)*(2*pow(x, 2)*z*(x - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(2*z - 1) + pow(x, 2)*(x - 1)*(z - 1)*(2*z - 1) + 2*x*z*pow(x - 1, 2)*(z - 1) + x*z*pow(x - 1, 2)*(2*z - 1) + x*pow(x - 1, 2)*(z - 1)*(2*z - 1) - 3*pow(z, 4)*(2*x - 1) + 6*pow(z, 3)*(2*x - 1) - 3*pow(z, 2)*(2*x - 1))/pow(4*pow(pow(x, 2)*z*(x - 1)*(z - 1)*(2*z - 1) + x*z*pow(x - 1, 2)*(z - 1)*(2*z - 1), 2) + 4*pow(2*pow(z, 3)*(2*pow(x, 3) - 3*pow(x, 2) + x) - 3*pow(z, 2)*(2*pow(x, 3) - 3*pow(x, 2) + x) + z*(2*pow(x, 3) - 3*pow(x, 2) + x), 2) + (1.0L/2.0L)*pow(2*pow(x, 2)*z*pow(x - 1, 2)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*z - 1) + pow(x, 2)*pow(x - 1, 2)*(z - 1)*(2*z - 1) - pow(z, 4)*(6*pow(x, 2) - 6*x + 1) + 2*pow(z, 3)*(6*pow(x, 2) - 6*x + 1) - pow(z, 2)*(6*pow(x, 2) - 6*x + 1), 2), 1.0L/3.0L);
+		case 22:
+			z=y;
+			return (2.0L/9.0L)*pow(2, 1.0L/3.0L)*(4*pow(z, 3)*(pow(x, 3) - 3*pow(x, 2) + 2*x) - 16*pow(z, 2)*(pow(x, 3) - 3*pow(x, 2) + 2*x) + 16*z*(pow(x, 3) - 3*pow(x, 2) + 2*x) + 1)*(48*pow(x, 8) - 384*pow(x, 7) + 1152*pow(x, 6) - 1536*pow(x, 5) + 768*pow(x, 4) - 96*pow(x, 3) + 288*pow(x, 2) - 192*x - 6*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + 56*pow(z, 6)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - pow(z, 5)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) + 20*pow(z, 4)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) - pow(z, 3)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) + 12*pow(z, 2)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) - 12*z*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 4.0L/3.0L) + 4*pow(2, 1.0L/3.0L)*(4*pow(x, 3) - 12*pow(x, 2) + 8*x + 3*pow(z, 2)*(pow(x, 3) - 3*pow(x, 2) + 2*x) - 8*z*(pow(x, 3) - 3*pow(x, 2) + 2*x))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 1.0L/3.0L) + (1.0L/27.0L)*pow(2, 1.0L/3.0L)*(6*pow(x, 2)*z*pow(x - 2, 2)*(z - 2) + 3*pow(x, 2)*pow(x - 2, 2)*pow(z - 2, 2) - 3*pow(z, 4)*(3*pow(x, 2) - 6*x + 2) + 16*pow(z, 3)*(3*pow(x, 2) - 6*x + 2) - 24*pow(z, 2)*(3*pow(x, 2) - 6*x + 2))*(96*pow(x, 7) - 672*pow(x, 6) + 1728*pow(x, 5) - 1920*pow(x, 4) + 768*pow(x, 3) + 9*pow(z, 8)*(3*pow(x, 3) - 9*pow(x, 2) + 8*x - 2) - 96*pow(z, 7)*(3*pow(x, 3) - 9*pow(x, 2) + 8*x - 2) + pow(z, 6)*(207*pow(x, 5) - 1035*pow(x, 4) + 3012*pow(x, 3) - 4896*pow(x, 2) + 3512*x - 800) - 24*pow(z, 5)*(69*pow(x, 5) - 345*pow(x, 4) + 700*pow(x, 3) - 720*pow(x, 2) + 360*x - 64) + 2*pow(z, 4)*(27*pow(x, 7) - 189*pow(x, 6) + 2988*pow(x, 5) - 13050*pow(x, 4) + 22976*pow(x, 3) - 18240*pow(x, 2) + 6064*x - 576) - 8*pow(z, 3)*(36*pow(x, 7) - 252*pow(x, 6) + 1512*pow(x, 5) - 5040*pow(x, 4) + 7840*pow(x, 3) - 5385*pow(x, 2) + 1298*x - 6) + 48*pow(z, 2)*(11*pow(x, 7) - 77*pow(x, 6) + 276*pow(x, 5) - 610*pow(x, 4) + 768*pow(x, 3) - 486*pow(x, 2) + 124*x - 4) - 96*z*(4*pow(x, 7) - 28*pow(x, 6) + 72*pow(x, 5) - 80*pow(x, 4) + 32*pow(x, 3) - 3*pow(x, 2) + 6*x - 2))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 4.0L/3.0L) - pow(2, 1.0L/3.0L)*(2*pow(x, 2)*z*(x - 2)*(z - 2) + pow(x, 2)*(x - 2)*pow(z - 2, 2) + 2*x*z*pow(x - 2, 2)*(z - 2) + x*pow(x - 2, 2)*pow(z - 2, 2) - 3*pow(z, 4)*(x - 1) + 16*pow(z, 3)*(x - 1) - 24*pow(z, 2)*(x - 1))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 1.0L/3.0L) - 10;
+		case 24:
+			return -pow(2, 1.0L/3.0L)*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y)/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 1.0L/3.0L) + (1.0L/3.0L)*pow(2, 1.0L/3.0L)*PI*p*(12*pow(PI, 3)*pow(p, 3)*pow(sin(PI*p*x), 2)*sin(PI*p*y)*pow(sin(PI*p*z), 2)*cos(PI*p*y) + (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) + pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*cos(PI*p*x)*cos(PI*p*y) - 2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*cos(PI*p*y)*cos(PI*p*z)))*sin(PI*p*x)*sin(PI*p*y)*sin(PI*p*z)/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) + PI*q*sin(PI*q*x)*sin(PI*q*z)*cos(PI*q*y) - 1.0L/6.0L*pow(2, 1.0L/3.0L)*(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(12*pow(PI, 3)*pow(p, 3)*sin(PI*p*x)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2)*cos(PI*p*x) - (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) - 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*cos(PI*p*x)*cos(PI*p*y) + pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*cos(PI*p*x)*cos(PI*p*z)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) - 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z)))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) - 1.0L/6.0L*pow(2, 1.0L/3.0L)*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(12*pow(PI, 3)*pow(p, 3)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*sin(PI*p*z)*cos(PI*p*z) + (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(-2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*cos(PI*p*y)*cos(PI*p*z) + pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*cos(PI*p*x)*cos(PI*p*z)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) + pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x)))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) - 1.0L/2.0L*pow(2, 1.0L/3.0L)*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) - 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 1.0L/3.0L) - 1.0L/2.0L*pow(2, 1.0L/3.0L)*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) + pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 1.0L/3.0L); 
+
+		case 101: 
+			return 12*pow(x, 2)*y*z*(x - 1)*(y - 1)*(z - 1) + 6*pow(x, 2)*y*z*(x - 1)*(2*y - 1)*(z - 1) + 6*pow(x, 2)*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 8*x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(z - 1) - 4*x*pow(y, 2)*z*pow(y - 1, 2)*(z - 1) - 2*x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2) + 12*x*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + 6*x*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) - 32*x*y*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + 6*x*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 8*x*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1) - 4*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - 2*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1);
+		case 103:
+			return 32*pow(PI, 2)*x*y*(x - 1)*(y - 1)*pow(sin(4*PI*z), 2) - 32*pow(PI, 2)*x*y*(x - 1)*(y - 1)*pow(cos(4*PI*z), 2) - 3*x*y*pow(sin(5*PI*z), 2) - 8*x*(x - 1)*pow(sin(4*PI*z), 2) - 3*x*(y - 1)*pow(sin(5*PI*z), 2) - 3*y*(x - 1)*pow(sin(5*PI*z), 2) - 2*y*(y - 1)*pow(sin(4*PI*z), 2) - 3*(x - 1)*(y - 1)*pow(sin(5*PI*z), 2);
+		case 201:
+			return -x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 1.0L/3.0L) + x + (1.0L/18.0L)*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 2*x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1) + x*pow(y, 2)*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*y*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1) + pow(x, 2)*y*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + x*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + (2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1) + 2*pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2) - 2*x*pow(y, 2)*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) - pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 4.0L/3.0L) + (2.0L/9.0L)*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1) + x*pow(y, 2)*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*y*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + (pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1) + 2*pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 8*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(z - 1) + 4*x*y*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(2*pow(x, 2)*y*z*(x - 1)*(y - 1)*(z - 1) + pow(x, 2)*y*z*(x - 1)*(2*y - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + x*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 2*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(z - 1) + 2*pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*(y - 1)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*(y - 1)*(z - 1) - 2*x*y*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*y*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) - y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 4.0L/3.0L) - 2*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(z - 1) + 4*x*y*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 1.0L/3.0L) - 1.0L/18.0L*((x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2) + x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2) + 2*x*pow(y, 2)*(x - 1)*pow(y - 1, 2)*(z - 1) + x*pow(y, 2)*(2*x - 1)*pow(y - 1, 2)*(z - 1) + pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 2*(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1) + pow(x, 2)*y*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + x*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 8*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*x*pow(y, 2)*z*(x - 1)*(y - 1)*(z - 1) + x*pow(y, 2)*z*(2*x - 1)*(y - 1)*(z - 1) + 2*x*y*z*(x - 1)*pow(y - 1, 2)*(z - 1) + x*y*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) + pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(pow(x, 2)*y*z*(y - 1)*(2*y - 1)*(z - 1) + 4*x*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 2*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*pow(x, 2)*y*z*(x - 1)*(y - 1)*(z - 1) + pow(x, 2)*y*z*(x - 1)*(2*y - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*pow(y - 1, 2)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + x*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1)))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 4.0L/3.0L) - 1.0L/2.0L + (2*pow(x, 2)*y*z*(x - 1)*(y - 1)*(z - 1) + pow(x, 2)*y*z*(x - 1)*(2*y - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*pow(y - 1, 2)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + x*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 1.0L/3.0L);
+		case 202:
+			return -2*x*y*(x - 1)*(y - 1)/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 1.0L/3.0L) - 8*x*z*(x - 1)*(z - 1)/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 1.0L/3.0L) + (1.0L/9.0L)*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1))*(10*x*y*(x - 1)*(y - 1)*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1)) + 8*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(x - 1) + x*y*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1) + x*(x - 1)*(y - 1)*(z - 1)) + 2*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(y - 1) + x*y*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1) + y*(x - 1)*(y - 1)*(z - 1)) + (x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(x - 1) + 2*x*y*z*(y - 1) + x*y*(x - 1)*(z - 1) + 2*x*y*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1) + x*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1) + 2*y*(x - 1)*(y - 1)*(z - 1)) + 2*(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(2*x*y*z*(x - 1) + x*y*z*(y - 1) + 2*x*y*(x - 1)*(z - 1) + x*y*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1) + 2*x*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1) + y*(x - 1)*(y - 1)*(z - 1)))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 4.0L/3.0L) + (4.0L/9.0L)*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1))*(16*x*z*(x - 1)*(z - 1)*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1)) + 5*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(x - 1) + x*y*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1) + x*(x - 1)*(y - 1)*(z - 1)) + 2*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + 2*(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(x - 1)*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + 2*(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + 4*x*z*(x - 1)*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 4.0L/3.0L) + (1.0L/9.0L)*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(16*x*z*(x - 1)*(z - 1)*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1)) + 5*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(x - 1) + x*y*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1) + x*(x - 1)*(y - 1)*(z - 1)) + 2*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + 2*(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(x - 1)*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + 2*(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + 4*x*z*(x - 1)*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 4.0L/3.0L) - (x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 1.0L/3.0L) + (1.0L/18.0L)*(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(4*y*z*(y - 1)*(z - 1)*(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1)) + 5*(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(y - 1) + x*y*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1) + y*(x - 1)*(y - 1)*(z - 1)) + 8*(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + (x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + 4*y*z*(y - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)) + 4*(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1))*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + y*z*(y - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1)))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 4.0L/3.0L) - 1.0L/2.0L*(x*y*z*(z - 1) + x*z*(y - 1)*(z - 1) + y*z*(x - 1)*(z - 1) + 4*y*z*(y - 1)*(z - 1) + z*(x - 1)*(y - 1)*(z - 1))/pow((5.0L/6.0L)*pow(x*y*z*(x - 1)*(y - 1) + x*y*(x - 1)*(y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*y*z*(x - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(x*y*z*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(x*y*z*(x - 1)*(z - 1) + 2*x*y*z*(y - 1)*(z - 1) + x*z*(x - 1)*(y - 1)*(z - 1) + 2*y*z*(x - 1)*(y - 1)*(z - 1), 2) + (1.0L/3.0L)*pow(2*x*y*z*(x - 1)*(z - 1) + x*y*z*(y - 1)*(z - 1) + 2*x*z*(x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(y - 1)*(z - 1), 2), 1.0L/3.0L);
+		case 211:
+			return (200.0L/235746178369.0L)*pow(17, 2.0L/3.0L)*pow(6, 1.0L/3.0L)*(-9*(169*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(2197*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-2197*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 26*z*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + sqrt(13)*z*(-78*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 13*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 169*sqrt(13)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L)) + 13*(9*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 78*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 13*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(9*sqrt(13)*z*(-2197*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 26*z*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + sqrt(13)*z*(-78*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 13*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 117*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 1014*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 2197*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 13*sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L)))/pow((8.0L/17.0L)*pow(fabs((15.0L/26.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/4394.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs(-45.0L/2197.0L*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (30.0L/169.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 5.0L/169.0L*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs((135.0L/4394.0L)*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 45.0L/169.0L*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/338.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + 1, 4.0L/3.0L);
+
+		case 212:
+			return -8.0L/3.0L*x*(9*(y + 3*z)*(pow(y + 3*z, 2)/pow(fabs(y + 3*z), 3) - 1/fabs(y + 3*z))/fabs(y + 3*z) + 4*((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z))*(3*(2*x + 1)*pow(y + 3*z, 4)/pow(fabs(y + 3*z), 5) - 4*(2*x + 1)*pow(y + 3*z, 2)/pow(fabs(y + 3*z), 3) + (2*x + 1)/fabs(y + 3*z)))/(pow(2*(4*pow(fabs((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z)), 2) + 9)/(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11) + 1, 4.0L/3.0L)*pow((4.0L/3.0L)*pow(x, 2) + (1.0L/3.0L)*pow(2*x + 1, 2) + 11.0L/6.0L, 1.0L/3.0L)*(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11)) - 26.0L/3.0L*(9*(y + 3*z)*(pow(y + 3*z, 2)/pow(fabs(y + 3*z), 3) - 1/fabs(y + 3*z))/fabs(y + 3*z) + 4*((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z))*(3*(2*x + 1)*pow(y + 3*z, 4)/pow(fabs(y + 3*z), 5) - 4*(2*x + 1)*pow(y + 3*z, 2)/pow(fabs(y + 3*z), 3) + (2*x + 1)/fabs(y + 3*z)))/(pow(2*(4*pow(fabs((2*x + 1)*pow(y + 3*z, 3)/pow(fabs(y + 3*z), 3) - (2*x + 1)*(y + 3*z)/fabs(y + 3*z)), 2) + 9)/(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11) + 1, 4.0L/3.0L)*pow((4.0L/3.0L)*pow(x, 2) + (1.0L/3.0L)*pow(2*x + 1, 2) + 11.0L/6.0L, 1.0L/3.0L)*(8*pow(x, 2) + 2*pow(2*x + 1, 2) + 11));
+
+		default:
+			_error_("FS analytical solution"<<testid<<" not implemented yet");
+	}
+}
+/*}}}*/
+IssmDouble fz(IssmDouble x,IssmDouble y,IssmDouble z,int testid){ /*{{{*/ 
+	IssmDouble p = 2.0;  
+	IssmDouble q = 2.0;   
+	IssmDouble a = 1.0;
+
+	switch(testid){
+		case 1: case 2: case 7: case 8: case 11:  case 12: case 13: case 14: case 15: case 18: case 21: case 22:
+			return 0.;
+		case 3: 
+			return 2*pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1) + 2*pow(x, 2)*y*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1) - 2*x*pow(y, 2)*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) - 2*x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + 2*x*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*y*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1);
+		case 4: 
+			return -2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*z) - 1)*sin(PI*p*x)*sin(PI*p*y) - pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z) + PI*q*sin(PI*q*x)*sin(PI*q*y)*cos(PI*q*z);
+		case 5: 
+			return 2*PI*PI*p*p*sin(PI*p*x)*sin(PI*p*y);
+		case 6: 
+			return - 2. * PI*PI * p*p * (cos(p*PI*z)-1) * sin(p*PI*x) * sin(p*PI*y)-PI*PI * p*p *  sin(p*PI*x)    * sin(p*PI*y) * cos(p*PI*z)+ q * PI * sin(q*PI*x) * sin(q*PI*y) * cos(q*PI*z);
+		case 9:
+			return -2*pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) - pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z) + pow(x, 2) + pow(y, 2);
+		case 10:
+			return a*pow(z, a - 1)*(sin(PI*q*x)*sin(PI*q*y) + 1) - 2*pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) - pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z);
+		case 24:
+			return -pow(2, 1.0L/3.0L)*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z)/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 1.0L/3.0L) + (1.0L/3.0L)*pow(2, 1.0L/3.0L)*PI*p*(12*pow(PI, 3)*pow(p, 3)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*sin(PI*p*z)*cos(PI*p*z) + (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(-2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*cos(PI*p*y)*cos(PI*p*z) + pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*cos(PI*p*x)*cos(PI*p*z)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) + pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x)))*sin(PI*p*x)*sin(PI*p*y)*sin(PI*p*z)/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) + PI*q*sin(PI*q*x)*sin(PI*q*y)*cos(PI*q*z) - 1.0L/6.0L*pow(2, 1.0L/3.0L)*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(12*pow(PI, 3)*pow(p, 3)*pow(sin(PI*p*x), 2)*sin(PI*p*y)*pow(sin(PI*p*z), 2)*cos(PI*p*y) + (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) + pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*cos(PI*p*x)*cos(PI*p*y) - 2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*cos(PI*p*y)*cos(PI*p*z)))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) - 1.0L/6.0L*pow(2, 1.0L/3.0L)*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(12*pow(PI, 3)*pow(p, 3)*sin(PI*p*x)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2)*cos(PI*p*x) - (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) - 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*cos(PI*p*x)*cos(PI*p*y) + pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*cos(PI*p*x)*cos(PI*p*z)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) - 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z)))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) - 1.0L/2.0L*pow(2, 1.0L/3.0L)*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) - 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 1.0L/3.0L) - 1.0L/2.0L*pow(2, 1.0L/3.0L)*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) + pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 1.0L/3.0L);
+		case 201:
+			return (1.0L/18.0L)*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1) + x*pow(y, 2)*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*y*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + (pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1) + 2*pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 8*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(z - 1) + 4*x*y*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(2*pow(x, 2)*y*z*(x - 1)*(y - 1)*(z - 1) + pow(x, 2)*y*z*(x - 1)*(2*y - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + x*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 2*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(z - 1) + 2*pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*(y - 1)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*(y - 1)*(z - 1) - 2*x*y*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*y*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) - y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 4.0L/3.0L) - 1.0L/18.0L*(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*((x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2) + x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2) + 2*x*pow(y, 2)*(x - 1)*pow(y - 1, 2)*(z - 1) + x*pow(y, 2)*(2*x - 1)*pow(y - 1, 2)*(z - 1) + pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 2*(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1) + pow(x, 2)*y*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + x*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 8*(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*x*pow(y, 2)*z*(x - 1)*(y - 1)*(z - 1) + x*pow(y, 2)*z*(2*x - 1)*(y - 1)*(z - 1) + 2*x*y*z*(x - 1)*pow(y - 1, 2)*(z - 1) + x*y*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) + pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1)) + 8*(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))*(pow(x, 2)*y*z*(y - 1)*(2*y - 1)*(z - 1) + 4*x*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1)) + 2*(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))*(2*pow(x, 2)*y*z*(x - 1)*(y - 1)*(z - 1) + pow(x, 2)*y*z*(x - 1)*(2*y - 1)*(z - 1) + pow(x, 2)*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*pow(y - 1, 2)*(z - 1) + 2*x*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + x*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1)))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 4.0L/3.0L) - (x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1) + x*pow(y, 2)*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*y*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 1.0L/3.0L) + (pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1) + pow(x, 2)*y*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + x*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1))/pow((1.0L/6.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2) + x*pow(y, 2)*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (1.0L/6.0L)*pow(pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1) + pow(x, 2)*y*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (4.0L/3.0L)*pow(x*pow(y, 2)*z*(x - 1)*(2*x - 1)*(y - 1)*(z - 1) + x*y*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2) + (4.0L/3.0L)*pow(pow(x, 2)*y*z*(x - 1)*(y - 1)*(2*y - 1)*(z - 1) + x*y*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1), 2) + (1.0L/6.0L)*pow(2*pow(x, 2)*y*z*pow(x - 1, 2)*(y - 1)*(z - 1) + pow(x, 2)*y*z*pow(x - 1, 2)*(2*y - 1)*(z - 1) + pow(x, 2)*z*pow(x - 1, 2)*(y - 1)*(2*y - 1)*(z - 1) - 2*x*pow(y, 2)*z*(x - 1)*pow(y - 1, 2)*(z - 1) - x*pow(y, 2)*z*(2*x - 1)*pow(y - 1, 2)*(z - 1) - pow(y, 2)*z*(x - 1)*(2*x - 1)*pow(y - 1, 2)*(z - 1), 2), 1.0L/3.0L);
+		case 211:
+			return (200.0L/235746178369.0L)*pow(17, 2.0L/3.0L)*pow(6, 1.0L/3.0L)*(-9*(169*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(2197*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-2197*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 26*z*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + sqrt(13)*z*(-78*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 13*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 169*sqrt(13)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L)) + 13*(9*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 78*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 13*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(9*sqrt(13)*z*(-2197*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 26*z*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + sqrt(13)*z*(-78*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 13*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 117*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 1014*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 2197*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 13*sqrt(13)*pow(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y), 2)/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L)))/pow((8.0L/17.0L)*pow(fabs((15.0L/26.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/4394.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs(-45.0L/2197.0L*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (30.0L/169.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 5.0L/169.0L*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs((135.0L/4394.0L)*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 45.0L/169.0L*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/338.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + 1, 4.0L/3.0L) + (100.0L/235746178369.0L)*pow(17, 2.0L/3.0L)*pow(6, 1.0L/3.0L)*(3*(169*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(507*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 3*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-6*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + 3*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 6591*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 3*sqrt(13)*z*(6*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - (507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 169*sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 169*sqrt(13)*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 507*sqrt(13)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 28561*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))) + 13*(9*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 78*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 13*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))*(9*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 78*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 3*sqrt(13)*z*(-6*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 2) + 3*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) + 6591*z/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 3*sqrt(13)*z*(6*sqrt(13)*z*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - (507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 169*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 169*sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 169*sqrt(13)*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 13*(507*z + sqrt(13)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y)))*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/pow(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2), 3.0L/2.0L) - 507*sqrt(13)*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + 2197*sqrt(13)/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))))/pow((8.0L/17.0L)*pow(fabs((15.0L/26.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/4394.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs(-45.0L/2197.0L*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (30.0L/169.0L)*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 5.0L/169.0L*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + (8.0L/17.0L)*pow(fabs((135.0L/4394.0L)*sqrt(13)*z*(-sqrt(13)*z*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + sqrt(13)*z*(6*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - (3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) - 45.0L/169.0L*sqrt(13)*z/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2)) + (15.0L/338.0L)*(3*sqrt(13)*z + 2*sqrt(13)*(2*x + y))/sqrt(9*pow(z, 2) + pow(fabs((3.0L/13.0L)*sqrt(13)*z + (2.0L/13.0L)*sqrt(13)*(2*x + y)), 2))), 2) + 1, 4.0L/3.0L);
+
+		default:
+			_error_("FS analytical solution"<<testid<<" not implemented yet");
+	}
+}
+/*}}}*/
+IssmDouble alpha(IssmDouble x,IssmDouble y,IssmDouble z,int testid){ /*{{{*/ 
+	IssmDouble p = 2.0;  
+	IssmDouble q = 2.0;   
+
+	switch(testid){
+		case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 21: case 22:
+			return 0.;
+		case 15:
+			return 1.e+5;
+		case 18:
+			return (120.0L/109.0L)*sqrt(109.)/(10*x - 3*z);
+		default:
+			_error_("FS analytical solution"<<testid<<" not implemented yet");
+	}
+}
+/*}}}*/
+#else
+IssmDouble fx(IssmDouble x,IssmDouble y,IssmDouble z,int testid){_error_("recompile with GOCOMPILE defined in this file (uncomment line 23)");}
+IssmDouble fy(IssmDouble x,IssmDouble y,IssmDouble z,int testid){_error_("recompile with GOCOMPILE defined in this file (uncomment line 23)");}
+IssmDouble fz(IssmDouble x,IssmDouble y,IssmDouble z,int testid){_error_("recompile with GOCOMPILE defined in this file (uncomment line 23)");}
+IssmDouble alpha(IssmDouble x,IssmDouble y,IssmDouble z,int testid){_error_("recompile with GOCOMPILE defined in this file (uncomment line 23)");}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/FSanalyticals/fsanalyticals.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/FSanalyticals/fsanalyticals.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/FSanalyticals/fsanalyticals.h	(revision 27955)
@@ -0,0 +1,15 @@
+/*!\file: elements.h
+ * \brief prototypes for elements.h
+ */ 
+
+#ifndef _SHARED_ANALYTICALS_H_
+#define _SHARED_ANALYTICALS_H_
+
+#include "../Numerics/types.h"
+
+IssmDouble fx(IssmDouble x_coord, IssmDouble y_coord, IssmDouble z_coord, int testid);
+IssmDouble fy(IssmDouble x_coord, IssmDouble y_coord, IssmDouble z_coord, int testid);
+IssmDouble fz(IssmDouble x_coord, IssmDouble y_coord, IssmDouble z_coord, int testid);
+IssmDouble alpha(IssmDouble x_coord, IssmDouble y_coord, IssmDouble z_coord, int testid);
+
+#endif //ifndef _SHARED_ANALYTICALS_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/LatLong/Ll2xyx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/LatLong/Ll2xyx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/LatLong/Ll2xyx.cpp	(revision 27955)
@@ -0,0 +1,124 @@
+/*!\file Ll2xyx.cpp
+ */
+
+#include "../../shared/shared.h"
+#include "./latlong.h"
+#include <math.h>
+
+int Ll2xyx(double* x, double* y, double* lat, double* lon, int ncoord, int sgn){
+/*  This is a cpp conversion of the following:
+%LL2XY - converts lat long to polar stereographic
+%
+%   Converts from geodetic latitude and longitude to Polar 
+%   Stereographic (X,Y) coordinates for the polar regions.
+%   Author: Michael P. Schodlok, December 2003 (map2ll)
+%
+%   Usage:
+%      [x,y] = ll2xy(lat,lon,sgn)
+%      [x,y] = ll2xy(lat,lon,sgn,central_meridian,standard_parallel)
+%
+%      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+%                               -1 : south latitude (default is mer=0  lat=71)
+*/
+	double  central_meridian,standard_parallel;
+
+	Ll2xydef(&central_meridian,&standard_parallel,sgn);
+
+	return(Ll2xyx(x,y,lat,lon,ncoord,sgn,central_meridian,standard_parallel));
+}
+
+int Ll2xyx(double* x, double* y, double* lat, double* lon, int ncoord, int sgn, double central_meridian, double standard_parallel){
+/*  This is a cpp conversion of the following:
+%LL2XY - converts lat long to polar stereographic
+%
+%   Converts from geodetic latitude and longitude to Polar 
+%   Stereographic (X,Y) coordinates for the polar regions.
+%   Author: Michael P. Schodlok, December 2003 (map2ll)
+%
+%   Usage:
+%      [x,y] = ll2xy(lat,lon,sgn)
+%      [x,y] = ll2xy(lat,lon,sgn,central_meridian,standard_parallel)
+%
+%      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+%                               -1 : south latitude (default is mer=0  lat=71)
+*/
+
+	int     i,iret=0;
+	double  delta,slat;
+	double  re,ex2,ex;
+	double  latitude,longitude;
+	double  T,rho,sl,tc,mc;
+
+	if((sgn!=1) && (sgn!=-1)) _error_("Sign should be either +1 or -1.\n");
+
+	delta = central_meridian;
+	slat  = standard_parallel;
+
+	/*  Radius of the earth in meters  */
+	re  = 6378.273*1.e3;
+	/*  Eccentricity of the Hughes ellipsoid squared  */
+	ex2 = 0.006693883;
+	/*  Eccentricity of the Hughes ellipsoid  */
+	ex  =  sqrt(ex2);
+
+	/*  loop over all the coordinate pairs  */
+	for(i=0; i<ncoord; i++){
+		latitude  = fabs(lat[i]) * PI/180.;
+		longitude = (lon[i] + delta) * PI/180.;
+
+		/*  compute X and Y in grid coordinates.  */
+		T = tan(PI/4.-latitude/2.) / pow(((1.-ex*sin(latitude))/(1.+ex*sin(latitude))),(ex/2.));
+
+		if ((90. - slat) < 1.e-5)
+			rho = 2.*re*T/sqrt(pow((1.+ex),(1.+ex))*pow((1.-ex),(1.-ex)));
+		else {
+			sl  = slat*PI/180.;
+			tc  = tan(PI/4.-sl/2.)/pow(((1.-ex*sin(sl))/(1.+ex*sin(sl))),(ex/2.));
+			mc  = cos(sl)/sqrt(1.0-ex2*(pow(sin(sl),2)));
+			rho = re*mc*T/tc;
+		}
+
+		y[i]= -rho*(double)sgn*cos(sgn*longitude);
+		x[i]=  rho*(double)sgn*sin(sgn*longitude);
+
+		if (latitude>= PI/2.){
+			x[i] = 0.0;
+			y[i] = 0.0;
+			iret=1;
+		}
+	}
+	return(iret);
+}
+
+void Ll2xydef(double* pdelta, double* pslat, int sgn){
+/*  This is a cpp conversion of the following:
+%LL2XY - converts lat long to polar stereographic
+%
+%   Converts from geodetic latitude and longitude to Polar 
+%   Stereographic (X,Y) coordinates for the polar regions.
+%   Author: Michael P. Schodlok, December 2003 (map2ll)
+%
+%   Usage:
+%      [x,y] = ll2xy(lat,lon,sgn)
+%      [x,y] = ll2xy(lat,lon,sgn,central_meridian,standard_parallel)
+%
+%      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+%                               -1 : south latitude (default is mer=0  lat=71)
+*/
+	bool    flag=true;
+
+	/*  Get central_meridian and standard_parallel depending on hemisphere  */
+	if (sgn ==  1) {
+		*pdelta= 45;
+		*pslat = 70;
+		if(flag) _printf0_("Info: creating coordinates in polar stereographic (Std Latitude: 70N Meridian: 45).\n");
+	}
+	else if (sgn == -1) {
+		*pdelta= 0;
+		*pslat = 71;
+		if(flag) _printf0_("Info: creating coordinates in polar stereographic (Std Latitude: 71S Meridian: 0).\n");
+	}
+	else _error_("Sign should be either +1 or -1.\n");
+
+	return;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/LatLong/Xy2llx.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/LatLong/Xy2llx.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/LatLong/Xy2llx.cpp	(revision 27955)
@@ -0,0 +1,132 @@
+/*!\file Xy2llx.cpp
+ */
+
+#include "../../shared/shared.h"
+#include "./latlong.h"
+#include <math.h>
+
+int Xy2llx(double* lat, double* lon, double* x, double* y, int ncoord, int sgn){
+/*  This is a cpp conversion of the following:
+%XY2LL - converts xy to lat long
+%
+%   Converts Polar  Stereographic (X,Y) coordinates for the polar regions to
+%   latitude and longitude Stereographic (X,Y) coordinates for the polar
+%   regions.
+%   Author: Michael P. Schodlok, December 2003 (map2xy.m)
+%
+%   Usage:
+%      [lat,lon] = xy2ll(x,y,sgn);
+%      [lat,lon] = xy2ll(x,y,sgn,central_meridian,standard_parallel);
+%
+%      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+%                               -1 : south latitude (default is mer=0  lat=71)
+*/
+	double  central_meridian,standard_parallel;
+
+	Xy2lldef(&central_meridian,&standard_parallel,sgn);
+
+	return(Xy2llx(lat,lon,x,y,ncoord,sgn,central_meridian,standard_parallel));
+}
+
+int Xy2llx(double* lat, double* lon, double* x, double* y, int ncoord, int sgn, double central_meridian, double standard_parallel){
+/*  This is a cpp conversion of the following:
+%XY2LL - converts xy to lat long
+%
+%   Converts Polar  Stereographic (X,Y) coordinates for the polar regions to
+%   latitude and longitude Stereographic (X,Y) coordinates for the polar
+%   regions.
+%   Author: Michael P. Schodlok, December 2003 (map2xy.m)
+%
+%   Usage:
+%      [lat,lon] = xy2ll(x,y,sgn);
+%      [lat,lon] = xy2ll(x,y,sgn,central_meridian,standard_parallel);
+%
+%      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+%                               -1 : south latitude (default is mer=0  lat=71)
+*/
+
+	int     i,iret=0;
+	double  delta,slat;
+	double  re,ex2,ex;
+	double  sl,rho,cm,T,chi;
+
+	if((sgn!=1) && (sgn!=-1)) _error_("Sign should be either +1 or -1.\n");
+
+	delta = central_meridian;
+	slat  = standard_parallel;
+
+	/*  Radius of the earth in meters  */
+	re   = 6378.273e+3;
+	/*  Eccentricity of the Hughes ellipsoid squared  */
+	ex2  = 0.006693883;
+	/*  Eccentricity of the Hughes ellipsoid  */
+	ex   =  sqrt(ex2);
+
+	/*  loop over all the coordinate pairs  */
+	for(i=0; i<ncoord; i++){
+		sl = slat*PI/180.;
+		cm = cos(sl)/sqrt(1.0-ex2*(pow(sin(sl),2)));
+		rho= sqrt(pow(x[i],2) + pow(y[i],2));
+		T  = tan((PI/4.0) - (sl/2.0))/pow(((1.0-ex*sin(sl))/(1.0+ex*sin(sl))),(ex/2.0));
+
+		if(fabs(slat-90.) < 1.e-5)
+			T =rho*sqrt(pow((1.+ex),(1.+ex))*pow((1.-ex),(1.-ex)))/2./re;
+		else
+			T =rho*T/(re*cm);
+
+		chi = (PI / 2.0) - 2.0 * atan(T);
+		lat[i] = chi + ((ex2 / 2.0) + (5.0 * pow(ex2,2.0) / 24.0) + (pow(ex2,3.0) / 12.0)) *
+			   sin(2.0 * chi) + ((7.0 * pow(ex2,2.0) / 48.0) + (29.0 * pow(ex2,3.0) / 240.0)) *
+			   sin(4.0 * chi) + (7.0 * pow(ex2,3.0) / 120.0) * sin(6.0 * chi) ;
+
+		lat[i] = (double)sgn * lat[i];
+		lon[i] = atan2((double)sgn * x[i],-(double)sgn * y[i]);
+		lon[i] = (double)sgn * lon[i];
+
+		if(rho <= 0.1){
+			lat[i] = 90. * (double)sgn;
+			lon[i] = 0.0;
+			iret=1;
+		}
+
+		lon[i] = lon[i] * 180. / PI;
+		lat[i] = lat[i] * 180. / PI;
+		lon[i] = lon[i] - delta; 
+	}
+
+	return(iret);
+}
+
+void Xy2lldef(double* pdelta, double* pslat, int sgn){
+/*  This is a cpp conversion of the following:
+%XY2LL - converts xy to lat long
+%
+%   Converts Polar  Stereographic (X,Y) coordinates for the polar regions to
+%   latitude and longitude Stereographic (X,Y) coordinates for the polar
+%   regions.
+%   Author: Michael P. Schodlok, December 2003 (map2xy.m)
+%
+%   Usage:
+%      [lat,lon] = xy2ll(x,y,sgn);
+%      [lat,lon] = xy2ll(x,y,sgn,central_meridian,standard_parallel);
+%
+%      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+%                               -1 : south latitude (default is mer=0  lat=71)
+*/
+	bool    flag=true;
+
+	/*  Get central_meridian and standard_parallel depending on hemisphere  */
+	if (sgn == 1) {
+		*pdelta= 45;
+		*pslat = 70;
+		if(flag) _printf0_("Warning: expecting coordinates in polar stereographic (Std Latitude: 70N Meridian: 45).\n");
+	}
+	else if (sgn == -1) {
+		*pdelta= 0;
+		*pslat = 71;
+		if(flag) _printf0_("Warning: expecting coordinates in polar stereographic (Std Latitude: 71S Meridian: 0).\n");
+	}
+	else _error_("Sign should be either +1 or -1.\n");
+
+	return;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/LatLong/latlong.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/LatLong/latlong.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/LatLong/latlong.h	(revision 27955)
@@ -0,0 +1,16 @@
+/*!\file: latlong.h
+ * \brief prototypes for latlong.h
+ */ 
+
+#ifndef _SHARED_LATLONG_H_
+#define _SHARED_LATLONG_H_
+
+int Ll2xyx(double* x, double* y, double* lat, double* lon, int ncoord, int sgn);
+int Ll2xyx(double* x, double* y, double* lat, double* lon, int ncoord, int sgn, double central_meridian, double standard_parallel);
+void Ll2xydef(double* pdelta, double* pslat, int sgn);
+
+int Xy2llx(double* lat, double* lon, double* x, double* y, int ncoord, int sgn);
+int Xy2llx(double* lat, double* lon, double* x, double* y, int ncoord, int sgn, double central_meridian, double standard_parallel);
+void Xy2lldef(double* pdelta, double* pslat, int sgn);
+
+#endif //ifndef _SHARED_LATLONG_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Matrix/MatrixUtils.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Matrix/MatrixUtils.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Matrix/MatrixUtils.cpp	(revision 27955)
@@ -0,0 +1,692 @@
+/*!\file: MatrixUtils
+ * \brief triple multiply
+ */ 
+
+/*Headers*/
+/*{{{*/
+#include <stdio.h>
+#include <sys/types.h>
+#include <math.h>
+#include <float.h>    /*  DBL_EPSILON  */
+#include <cstdarg>
+#include <iostream>
+
+#include "./matrix.h"
+#include "../Exceptions/exceptions.h"
+#include "../MemOps/MemOps.h"
+#include "../io/io.h"
+/*}}}*/
+
+int TripleMultiply(IssmDouble* a, int nrowa, int ncola, int itrna, IssmDouble* b, int nrowb, int ncolb, int itrnb, IssmDouble* c, int nrowc, int ncolc, int itrnc, IssmDouble* d, int iaddd){/*{{{*/
+	/*TripleMultiply    Perform triple matrix product a*b*c+d.*/
+
+	int         idima,idimb,idimc,idimd;
+	IssmDouble  dtemp_static[600];
+	IssmDouble* dtemp_dynamic = NULL;
+	IssmDouble* dtemp         = NULL;
+	_assert_(a && b && c && d);
+
+	/*  set up dimensions for triple product  */
+	if (!itrna){
+		idima=nrowa;
+		idimb=ncola;
+	}
+	else{
+		idima=ncola;
+		idimb=nrowa;
+	}
+
+	if (!itrnb){
+		if (nrowb != idimb) _error_("Matrix A and B inner vectors not equal size.");
+		idimc=ncolb;
+	}
+	else{
+		if (ncolb != idimb) _error_("Matrix A and B inner vectors not equal size.");
+		idimc=nrowb;
+	}
+
+	if (!itrnc) {
+		if (nrowc != idimc) _error_("Matrix B and C inner vectors not equal size.");
+		idimd=ncolc;
+	}
+	else{
+		if (ncolc != idimc) _error_("Matrix B and C inner vectors not equal size.");
+		idimd=nrowc;
+	}
+
+	/*Depending on the size of incoming matrices, we might need to use a dynamic allocation*/
+	if(idima*idimc>600){
+		dtemp_dynamic = xNew<IssmDouble>(idima*idimc);
+		dtemp         = dtemp_dynamic;
+	}
+	else{
+		dtemp = &dtemp_static[0];
+	}
+
+	/*  perform the matrix triple product in the order that minimizes the
+		 number of multiplies and the temporary space used, noting that
+		 (a*b)*c requires ac(b+d) multiplies and ac IssmDoubles, and a*(b*c)
+		 requires bd(a+c) multiplies and bd IssmDoubles (both are the same for
+		 a symmetric triple product)  */
+
+	/*  multiply (a*b)*c+d  */
+	if (idima*idimc*(idimb+idimd) <= idimb*idimd*(idima+idimc)) {
+		MatrixMultiply(a,nrowa,ncola,itrna,b,nrowb,ncolb,itrnb,dtemp,0);
+		MatrixMultiply(dtemp,idima,idimc,0,c,nrowc,ncolc,itrnc,d,iaddd);
+	}
+
+	/*  multiply a*(b*c)+d  */
+	else{
+		MatrixMultiply(b,nrowb,ncolb,itrnb,c,nrowc,ncolc,itrnc,dtemp,0);
+		MatrixMultiply(a,nrowa,ncola,itrna,dtemp,idimb,idimd,0,d,iaddd);
+	}
+
+	/*Cleanup and return*/
+	xDelete<IssmDouble>(dtemp_dynamic);
+	return 1;
+}/*}}}*/
+int MatrixMultiply(IssmDouble* a, int nrowa, int ncola, int itrna, IssmDouble* b, int nrowb, int ncolb, int itrnb, IssmDouble* c, int iaddc ){/*{{{*/
+	/*MatrixMultiply    Perform matrix multiplication a*b+c.*/
+	int noerr=1;
+	int i,j,k,ipta,iptb,iptc;
+	int nrowc,ncolc,iinca,jinca,iincb,jincb,ntrma,ntrmb,nterm;
+
+	_assert_(a && b && c);
+
+	/*  set up dimensions and increments for matrix a  */
+	if (!itrna) {
+		nrowc=nrowa;
+		ntrma=ncola;
+		iinca=ncola;
+		jinca=1;
+	}
+	else {
+		nrowc=ncola;
+		ntrma=nrowa;
+		iinca=1;
+		jinca=ncola;
+	}
+
+	/*  set up dimensions and increments for matrix b  */
+	if (!itrnb) {
+		ncolc=ncolb;
+		ntrmb=nrowb;
+		iincb=ncolb;
+		jincb=1;
+	}
+	else {
+		ncolc=nrowb;
+		ntrmb=ncolb;
+		iincb=1;
+		jincb=ncolb;
+	}
+
+	if (ntrma != ntrmb) _error_("Matrix A and B inner vectors not equal size");
+
+	nterm=ntrma;
+
+	/*  zero matrix c, if not being added to product  */
+	if (!iaddc) for (i=0;i<nrowc*ncolc;i++) c[i]=0.;
+
+	/*  perform the matrix multiplication  */
+	iptc=0;
+	for (i=0; i<nrowc; i++){
+		for (j=0; j<ncolc; j++){
+			ipta=i*iinca;
+			iptb=j*jincb;
+
+			for (k=0; k<nterm; k++){
+				c[iptc]+=a[ipta]*b[iptb];
+				ipta+=jinca;
+				iptb+=iincb;
+			}
+			iptc++;
+		}
+	}
+
+	return noerr;
+}/*}}}*/
+int MatrixInverse( IssmDouble* a, int ndim, int nrow, IssmDouble* b, int nvec, IssmDouble* pdet ){/*{{{*/
+	/* MatrixInverse    Perform matrix inversion and linear equation solution.
+
+		This function uses Gaussian elimination on the original matrix
+		augmented by an identity matrix of the same size to calculate
+		the inverse (see for example, "Modern Methods of Engineering
+		Computation", Sec. 6.4).  By noting how the matrices are
+		unpopulated and repopulated, the calculation may be done in place.
+
+		Gaussian elimination is inherently inefficient, and so this is
+		intended for small matrices.  */
+	int noerr=1;
+	int i,j,k,ipt,jpt,irow,icol,ipiv,ncol;
+	int *pivrc1,*pivrc2,*pindx;
+	IssmDouble pivot,det,dtemp;
+
+	if (!b && nvec) {
+		_error_("No right-hand side for nvec=" << nvec << ".");
+		noerr=0;
+		return noerr;
+	}
+
+	/*In debugging mode, check that we are not dealing with simple matrices*/
+	_assert_(!(ndim==2 && nrow==2));
+	_assert_(!(ndim==3 && nrow==3));
+
+	/*  initialize local variables and arrays  */
+
+	ncol=nrow;
+	det=1.;
+	pivrc1 =xNew<int>(nrow);
+	pivrc2 =xNew<int>(nrow);
+	pindx =xNew<int>(nrow);
+
+	/*  loop over the rows/columns of the matrix  */
+
+	for (i=0; i<nrow; i++) {
+
+		/*  search for pivot, finding the term with the greatest magnitude
+			 in the rows/columns not yet used  */
+
+		pivot=0.;
+		for (j=0; j<nrow; j++)
+		 if (!pindx[j])
+		  for (k=0; k<ncol; k++)
+			if (!pindx[k])
+			 if (fabs(a[j*ndim+k]) > fabs(pivot)) {
+				 irow=j;
+				 icol=k;
+				 pivot=a[j*ndim+k];
+			 }
+
+		if (fabs(pivot) < DBL_EPSILON) {
+			xDelete<int>(pivrc1);
+			xDelete<int>(pivrc2);
+			xDelete<int>(pindx);
+			_error_("Pivot " << pivot << " less than machine epsilon");
+			noerr=0;
+			return noerr;
+		}
+
+		pivrc1[i]=irow;
+		pivrc2[i]=icol;
+
+		ipiv=icol;
+		pindx[ipiv]++;
+
+		//		_printf_("pivot for i=" << i << ": irow=" << irow << ", icol=" << icol  << ", pindx[" << ipiv << "]=" << pindx[ipiv] << "\n\n");
+
+		/*  switch rows to put pivot element on diagonal, noting that the
+			 column stays the same and the determinant changes sign  */
+
+		if (irow != icol) {
+			//			_printf_("row switch for i=" << i << ": irow=" << irow << ", icol=" << icol << "\n\n");
+
+			ipt=irow*ndim;
+			jpt=icol*ndim;
+			for (k=0; k<ncol; k++) {
+				dtemp   =a[ipt+k];
+				a[ipt+k]=a[jpt+k];
+				a[jpt+k]=dtemp;
+			}
+
+			ipt=irow*nvec;
+			jpt=icol*nvec;
+			for (k=0; k<nvec; k++) {
+				dtemp   =b[ipt+k];
+				b[ipt+k]=b[jpt+k];
+				b[jpt+k]=dtemp;
+			}
+
+			det=-det;
+		}
+
+		/*  divide pivot row by pivot element, noting that the original
+			 matrix will have 1 on the diagonal, which will be discarded,
+			 and the augmented matrix will start with 1 from the identity
+			 matrix and then have 1/pivot, which is part of the inverse.  */
+
+		a[ipiv*ndim+ipiv]=1.;
+
+		ipt=ipiv*ndim;
+		for (k=0; k<ncol; k++)
+		 a[ipt+k]/=pivot;
+
+		ipt=ipiv*nvec;
+		for (k=0; k<nvec; k++)
+		 b[ipt+k]/=pivot;
+
+		/*  reduce non-pivot rows such that they will have 0 in the pivot
+			 column, which will be discarded, and the augmented matrix will
+			 start with 0 from the identity matrix and then have non-zero
+			 in the corresponding column, which is part of the inverse.
+			 only one column of the augmented matrix is populated at a time,
+			 which corresponds to the only column of the original matrix
+			 being zeroed, so that the inverse may be done in place.  */
+
+		for (j=0; j<nrow; j++) {
+			if (j == ipiv) continue;
+
+			dtemp=a[j*ndim+ipiv];
+			a[j*ndim+ipiv]=0.;
+
+			if (fabs(dtemp) > DBL_EPSILON) {
+				ipt=j   *ndim;
+				jpt=ipiv*ndim;
+				for (k=0; k<ncol; k++)
+				 a[ipt+k]-=dtemp*a[jpt+k];
+
+				ipt=j   *nvec;
+				jpt=ipiv*nvec;
+				for (k=0; k<nvec; k++)
+				 b[ipt+k]-=dtemp*b[jpt+k];
+			}
+		}
+
+		/*  for a diagonal matrix, the determinant is the product of the
+			 diagonal terms, and so it may be accumulated from the pivots,
+			 noting that switching rows changes the sign as above  */
+
+		det*=pivot;
+	}
+
+	/*  switch columns back in reverse order, noting that a row switch
+		 in the original matrix corresponds to a column switch in the
+		 inverse matrix  */
+
+	for (i=0; i<nrow; i++) {
+		j=(nrow-1)-i;
+
+		if (pivrc1[j] != pivrc2[j]) {
+			irow=pivrc1[j];
+			icol=pivrc2[j];
+
+			//			_printf_("column switch back for j=" << j << ": irow=" << irow << ", icol=" << icol << "\n\n");
+
+			ipt=0;
+			for (k=0; k<nrow; k++) {
+				dtemp      =a[ipt+irow];
+				a[ipt+irow]=a[ipt+icol];
+				a[ipt+icol]=dtemp;
+				ipt+=ndim;
+			}
+		}
+	}
+
+	if (pdet) *pdet=det;
+	xDelete<int>(pivrc1);
+	xDelete<int>(pivrc2);
+	xDelete<int>(pindx);
+	return noerr;
+}/*}}}*/
+
+void Matrix2x2Determinant(IssmDouble* Adet,IssmDouble* A){/*{{{*/
+	/*Compute determinant of a 2x2 matrix*/
+
+	/*det = a*d - c*b*/
+	*Adet= A[0]*A[3]-A[2]*A[1];
+}
+/*}}}*/
+void Matrix2x2Invert(IssmDouble* Ainv,IssmDouble* A){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble det,det_reciprocal;
+
+	/*Compute determinant*/
+	Matrix2x2Determinant(&det,A);
+	if (fabs(det) < DBL_EPSILON) _error_("Determinant smaller than machine epsilon");
+
+	/*Multiplication is faster than divsion, so we multiply by the reciprocal*/
+	det_reciprocal = 1./det;  
+
+	/*Compute invert*/
+	Ainv[0]=   A[3]*det_reciprocal; /* =  d/det */
+	Ainv[1]= - A[1]*det_reciprocal; /* = -b/det */
+	Ainv[2]= - A[2]*det_reciprocal; /* = -c/det */
+	Ainv[3]=   A[0]*det_reciprocal; /* =  a/det */
+
+}/*}}}*/
+void Matrix2x2Eigen(IssmDouble* plambda1,IssmDouble* plambda2,IssmDouble* pvx, IssmDouble* pvy,IssmDouble a11, IssmDouble a21,IssmDouble a22){/*{{{*/
+	/*From symetric matrix (a11,a21;a21,a22), get eigen values lambda1 and lambda2 and one eigen vector v*/
+
+	/*Output*/
+	IssmDouble lambda1,lambda2;
+	IssmDouble vx,vy;
+
+	/*To get the eigen values, we must solve the following equation:
+	 *     | a11 - lambda    a21        |
+	 * det |                            | = 0
+	 *     | a21             a22-lambda |
+	 *
+	 * We have to solve the following polynom:
+	 *  lamda^2 + ( -a11 -a22)*lambda + (a11*a22-a21*a21) = 0*/
+
+	/*Compute polynom determinant*/
+	IssmDouble b=-a11-a22;
+	IssmDouble delta=b*b - 4*(a11*a22-a21*a21);
+
+	/*Compute norm of M to avoid round off errors*/
+	IssmDouble normM=a11*a11 + a22*a22 + a21*a21;
+
+	/*1: normM too small: eigen values = 0*/
+	if(normM<1.e-30){
+		lambda1=0.;
+		lambda2=0.;
+		vx=1.;
+		vy=0.;
+	}
+	/*2: delta is small -> double root*/
+	else if (delta < 1.e-5*normM){
+		lambda1=-b/2.;
+		lambda2=-b/2.;
+		vx=1.;
+		vy=0.;
+	}
+	/*3: general case -> two roots*/
+	else{
+		delta   = sqrt(delta);
+		lambda1 = (-b-delta)/2.;
+		lambda2 = (-b+delta)/2.;
+
+		/*Now, one must find the eigen vectors. For that we use the following property of the inner product
+		 *    <Ax,y> = <x,tAy>
+		 * Here, M'(M-lambda*Id) is symmetrical, which gives:
+		 *    \forall (x,y)\in R²xR² <M'x,y> = <M'y,x>
+		 * And we have the following:
+		 *    if y\in Ker(M'), \forall x\in R² <M'x,y> = <x,M'y> = 0
+		 * We have shown that
+		 *    Im(M') \perp Ker(M')
+		 *
+		 * To find the eigen vectors of M, we only have to find two vectors
+		 * of the image of M' and take their perpendicular as long as they are
+		 * not 0.
+		 * To do that, we take the images (1,0) and (0,1):
+		 *  x1 = (a11 - lambda)      x2 = a21
+		 *  y1 = a21                 y2 = (a22-lambda)
+		 *
+		 * We take the vector that has the larger norm and take its perpendicular.*/
+
+		IssmDouble norm1 = (a11-lambda1)*(a11-lambda1) + a21*a21; 
+		IssmDouble norm2 = a21*a21 + (a22-lambda1)*(a22-lambda1);
+
+		if(norm2<norm1){
+			norm1=sqrt(norm1);
+			vx = - a21/norm1;
+			vy = (a11-lambda1)/norm1;
+		}
+		else{
+			norm2=sqrt(norm2);
+			vx = - (a22-lambda1)/norm2;
+			vy = a21/norm2;
+		}
+	}
+
+	/*Assign output*/
+	*plambda1 = lambda1;
+	*plambda2 = lambda2;
+	if(pvx) *pvx = vx;
+	if(pvy) *pvy = vy;
+
+}/*}}}*/
+
+void Matrix3x3Determinant(IssmDouble* Adet,IssmDouble* A){/*{{{*/
+	/*Compute determinant of a 3x3 matrix*/
+
+	/*det = a*(e*i-f*h)-b*(d*i-f*g)+c*(d*h-e*g)*/
+	*Adet= A[0]*A[4]*A[8]-A[0]*A[5]*A[7]-A[3]*A[1]*A[8]+A[3]*A[2]*A[7]+A[6]*A[1]*A[5]-A[6]*A[2]*A[4];
+}
+/*}}}*/
+IssmDouble Matrix3x3Determinant(IssmDouble a1,IssmDouble a2,IssmDouble a3, IssmDouble b1,IssmDouble b2,IssmDouble b3, IssmDouble c1,IssmDouble c2,IssmDouble c3){/*{{{*/
+	/*Compute determinant of a 3x3 matrix*/
+
+	/*det = a*(e*i-f*h)-b*(d*i-f*g)+c*(d*h-e*g)
+	 * a b c   a1 a2 a3
+	 * d e f   b1 b2 b3
+	 * g h i   c1 c2 c3 */
+	return a1*b2*c3-a1*b3*c2-b1*a2*c3+b1*a3*c2+c1*a2*b3-c1*a3*b2;
+}
+/*}}}*/
+void Matrix3x3Invert(IssmDouble* Ainv,IssmDouble* A){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble det,det_reciprocal;
+
+	/*Compute determinant*/
+	Matrix3x3Determinant(&det,A);
+	if (fabs(det) < DBL_EPSILON) _error_("Determinant smaller than machine epsilon");
+
+	/*Multiplication is faster than divsion, so we multiply by the reciprocal*/
+	det_reciprocal = 1./det;  
+
+	/*Compute invert*/
+	Ainv[0]=(A[4]*A[8]-A[5]*A[7])*det_reciprocal; /* = (e*i-f*h)/det */
+	Ainv[1]=(A[2]*A[7]-A[1]*A[8])*det_reciprocal; /* = (c*h-b*i)/det */
+	Ainv[2]=(A[1]*A[5]-A[2]*A[4])*det_reciprocal; /* = (b*f-c*e)/det */
+	Ainv[3]=(A[5]*A[6]-A[3]*A[8])*det_reciprocal; /* = (f*g-d*i)/det */
+	Ainv[4]=(A[0]*A[8]-A[2]*A[6])*det_reciprocal; /* = (a*i-c*g)/det */
+	Ainv[5]=(A[2]*A[3]-A[0]*A[5])*det_reciprocal; /* = (c*d-a*f)/det */
+	Ainv[6]=(A[3]*A[7]-A[4]*A[6])*det_reciprocal; /* = (d*h-e*g)/det */
+	Ainv[7]=(A[1]*A[6]-A[0]*A[7])*det_reciprocal; /* = (b*g-a*h)/det */
+	Ainv[8]=(A[0]*A[4]-A[1]*A[3])*det_reciprocal; /* = (a*e-b*d)/det */
+}/*}}}*/
+void Matrix3x3Solve(IssmDouble* X,IssmDouble* A,IssmDouble* B){/*{{{*/
+
+	IssmDouble Ainv[3][3];
+
+	Matrix3x3Invert(&Ainv[0][0],A);
+	for(int i=0;i<3;i++) X[i]=Ainv[i][0]*B[0] + Ainv[i][1]*B[1] + Ainv[i][2]*B[2];
+
+}/*}}}*/
+
+void Matrix4x4Determinant(IssmDouble* Adet,IssmDouble* A){/*{{{*/
+	/*Compute determinant of a 4x4 matrix*/
+
+	IssmDouble a1 = A[0*4+0];
+	IssmDouble b1 = A[0*4+1]; 
+	IssmDouble c1 = A[0*4+2];
+	IssmDouble d1 = A[0*4+3];
+
+	IssmDouble a2 = A[1*4+0];
+	IssmDouble b2 = A[1*4+1]; 
+	IssmDouble c2 = A[1*4+2];
+	IssmDouble d2 = A[1*4+3];
+
+	IssmDouble a3 = A[2*4+0]; 
+	IssmDouble b3 = A[2*4+1];
+	IssmDouble c3 = A[2*4+2];
+	IssmDouble d3 = A[2*4+3];
+
+	IssmDouble a4 = A[3*4+0];
+	IssmDouble b4 = A[3*4+1]; 
+	IssmDouble c4 = A[3*4+2];
+	IssmDouble d4 = A[3*4+3];
+
+	*Adet= a1 * Matrix3x3Determinant(b2, b3, b4, c2, c3, c4, d2, d3, d4)
+		  - b1 * Matrix3x3Determinant(a2, a3, a4, c2, c3, c4, d2, d3, d4)
+		  + c1 * Matrix3x3Determinant(a2, a3, a4, b2, b3, b4, d2, d3, d4)
+		  - d1 * Matrix3x3Determinant(a2, a3, a4, b2, b3, b4, c2, c3, c4);
+}
+/*}}}*/
+void Matrix4x4Adjoint(IssmDouble* Aadj,IssmDouble* A){/*{{{*/
+
+    IssmDouble a1 = A[0*4+0];
+    IssmDouble b1 = A[0*4+1]; 
+    IssmDouble c1 = A[0*4+2];
+    IssmDouble d1 = A[0*4+3];
+
+    IssmDouble a2 = A[1*4+0];
+    IssmDouble b2 = A[1*4+1]; 
+    IssmDouble c2 = A[1*4+2];
+    IssmDouble d2 = A[1*4+3];
+
+    IssmDouble a3 = A[2*4+0];
+    IssmDouble b3 = A[2*4+1];
+    IssmDouble c3 = A[2*4+2];
+    IssmDouble d3 = A[2*4+3];
+
+    IssmDouble a4 = A[3*4+0];
+    IssmDouble b4 = A[3*4+1]; 
+    IssmDouble c4 = A[3*4+2];
+    IssmDouble d4 = A[3*4+3];
+
+    /* Row column labeling reversed since we transpose rows & columns*/
+    Aadj[0*4+0]  =   Matrix3x3Determinant(b2, b3, b4, c2, c3, c4, d2, d3, d4);
+    Aadj[1*4+0]  = - Matrix3x3Determinant(a2, a3, a4, c2, c3, c4, d2, d3, d4);
+    Aadj[2*4+0]  =   Matrix3x3Determinant(a2, a3, a4, b2, b3, b4, d2, d3, d4);
+    Aadj[3*4+0]  = - Matrix3x3Determinant(a2, a3, a4, b2, b3, b4, c2, c3, c4);
+
+    Aadj[0*4+1]  = - Matrix3x3Determinant(b1, b3, b4, c1, c3, c4, d1, d3, d4);
+    Aadj[1*4+1]  =   Matrix3x3Determinant(a1, a3, a4, c1, c3, c4, d1, d3, d4);
+    Aadj[2*4+1]  = - Matrix3x3Determinant(a1, a3, a4, b1, b3, b4, d1, d3, d4);
+    Aadj[3*4+1]  =   Matrix3x3Determinant(a1, a3, a4, b1, b3, b4, c1, c3, c4);
+
+    Aadj[0*4+2]  =   Matrix3x3Determinant(b1, b2, b4, c1, c2, c4, d1, d2, d4);
+    Aadj[1*4+2]  = - Matrix3x3Determinant(a1, a2, a4, c1, c2, c4, d1, d2, d4);
+    Aadj[2*4+2]  =   Matrix3x3Determinant(a1, a2, a4, b1, b2, b4, d1, d2, d4);
+    Aadj[3*4+2]  = - Matrix3x3Determinant(a1, a2, a4, b1, b2, b4, c1, c2, c4);
+
+    Aadj[0*4+3]  = - Matrix3x3Determinant(b1, b2, b3, c1, c2, c3, d1, d2, d3);
+    Aadj[1*4+3]  =   Matrix3x3Determinant(a1, a2, a3, c1, c2, c3, d1, d2, d3);
+    Aadj[2*4+3]  = - Matrix3x3Determinant(a1, a2, a3, b1, b2, b3, d1, d2, d3);
+    Aadj[3*4+3]  =   Matrix3x3Determinant(a1, a2, a3, b1, b2, b3, c1, c2, c3);
+}/*}}}*/
+void Matrix4x4Invert(IssmDouble* Ainv,IssmDouble* A){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble det,det_reciprocal;
+
+	/*Compute determinant*/
+	Matrix4x4Determinant(&det,A);
+	if(fabs(det) < DBL_EPSILON) _error_("Determinant smaller than machine epsilon");
+
+	/*Multiplication is faster than division, so we multiply by the reciprocal*/
+	det_reciprocal = 1./det;
+
+	/*Compute adjoint matrix*/
+	Matrix4x4Adjoint(Ainv,A);
+
+	/*Scalte adjoint matrix to get inverse*/
+	for(int i=0;i<4*4;i++) Ainv[i] = Ainv[i]*det_reciprocal;
+}/*}}}*/
+void Matrix4x4Solve(IssmDouble* X,IssmDouble* A,IssmDouble *B){/*{{{*/
+	IssmDouble Ainv[4][4];
+
+	Matrix4x4Invert(&Ainv[0][0],A);
+	for(int i=0;i<4;i++) X[i]=Ainv[i][0]*B[0] + Ainv[i][1]*B[1] + Ainv[i][2]*B[2] + Ainv[i][3]*B[3];
+}/*}}}*/
+
+void newcell(IssmDouble** pcell, IssmDouble newvalue, bool top, int m){  /*{{{*/
+
+    IssmDouble* cell=NULL;
+    IssmDouble* dummy=NULL;
+
+    /*recover pointer: */
+    cell=*pcell;
+
+    /*reallocate:*/
+    dummy=xNew<IssmDouble>(m+1);
+
+	/*copy data:*/
+    if(top){
+        dummy[0]=newvalue;
+        for(int i=0;i<m;i++)dummy[i+1]=cell[i];
+    }
+    else{
+        dummy[m]=newvalue;
+        for(int i=0;i<m;i++)dummy[i]=cell[i];
+    }
+
+    /*delete and reassign: */
+    xDelete<IssmDouble>(cell); cell=dummy;
+
+    /*assign output pointer:*/
+    *pcell=cell;
+} /*}}}*/
+IssmDouble  cellsum(IssmDouble* cell, int m){ /*{{{*/
+
+	IssmDouble sum=0;
+
+	for(int i=0;i<m;i++)sum+=cell[i];
+
+	return sum;
+} /*}}}*/
+void celldelete(IssmDouble** pcell, int m, int* indices, int nind){ /*{{{*/
+
+	/*input: */
+	IssmDouble* cell=*pcell;
+
+	/*output: */
+	IssmDouble* newcell=xNew<IssmDouble>(nind);
+
+	for(int i=0;i<nind;i++){
+		newcell[i]=cell[indices[i]];
+	}
+
+	/*free allocation:*/
+	xDelete<IssmDouble>(cell);
+
+	/*assign output pointers: */
+	*pcell=newcell;
+} /*}}}*/
+void cellsplit(IssmDouble** pcell, int m, int i,IssmDouble scale) { /*{{{*/
+
+	/*input: */
+	IssmDouble* cell=*pcell;
+
+	/*output: */
+	IssmDouble* newcell=xNew<IssmDouble>(m+1);
+
+	for(int j=0;j<i;j++)newcell[j]=cell[j]; 
+	newcell[i]=scale*cell[i];
+	newcell[i+1]=scale* cell[i];
+	for(int j=i+2;j<m+1;j++)newcell[j]=cell[j-1];
+
+	/*free allocation:*/
+	xDelete<IssmDouble>(cell);
+
+	/*assign output pointers: */
+	*pcell=newcell;
+} /*}}}*/
+void cellecho(int numcells, int m, ...) { /*{{{*/
+
+	va_list arguments;                     
+	IssmDouble** celllist= NULL;
+
+	/*allocate variable length array: */
+	celllist=xNew<IssmDouble*>(numcells); 
+
+	va_start(arguments,m);
+
+	for ( int x = 0; x < numcells; x++ ){
+		celllist[x]= va_arg ( arguments, IssmDouble*); 
+	}
+	va_end ( arguments );                  
+
+	_printf_("Echo of cell: \n");
+	for(int i=0;i<m;i++){
+		_printf_(i << ": ");
+		for (int j=0;j<numcells;j++)_printf_(setprecision(10) << celllist[j][i] << " ");
+		_printf_("\n");
+	}
+
+	/*deallocate:*/
+	xDelete<IssmDouble*>(celllist);
+
+} /*}}}*/
+void CholeskyRealPositiveDefinite(IssmDouble* Lchol, IssmDouble* A, int ndim) { /*{{{*/
+   /*CholeskyRealPositiveDefinite   computes lower triangular matrix of the Cholesky decomposition of A
+   Follows the Cholesky–Banachiewicz algorithm
+   Lchol should point to an IssmDouble* of same dimensions as A*/
+
+	/*ensure zero-initialization*/
+	for(int i=0;i<(ndim*ndim);i++) Lchol[i]=0;;
+
+	for(int i=0;i<ndim;i++){
+		for(int j=0;j<=i;j++){
+			IssmDouble sum=0.;
+			for(int k=0;k<j;k++) sum += Lchol[i*ndim+k]*Lchol[j*ndim+k];
+			
+			if(i==j) Lchol[i*ndim+j] = sqrt(A[i*ndim+j]-sum);
+			else Lchol[i*ndim+j]     = 1./Lchol[j*ndim+j] * (A[i*ndim+j]-sum);
+		}
+	}
+} /*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Matrix/matrix.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Matrix/matrix.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Matrix/matrix.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*!\file: matrix.h
+ * \brief prototypes for matrix.h
+ */ 
+
+#ifndef _MATRIXUTILS_H_
+#define _MATRIXUTILS_H_
+
+#include "../Numerics/types.h"
+
+int  TripleMultiply( IssmDouble* a, int nrowa, int ncola, int itrna, IssmDouble* b, int nrowb, int ncolb, int itrnb, IssmDouble* c, int nrowc, int ncolc, int itrnc, IssmDouble* d, int iaddd);
+int  MatrixMultiply( IssmDouble* a, int nrowa, int ncola, int itrna, IssmDouble* b, int nrowb, int ncolb, int itrnb, IssmDouble* c, int iaddc );
+int  MatrixInverse( IssmDouble* a, int ndim, int nrow, IssmDouble* b, int nvec, IssmDouble* pdet );
+
+void Matrix2x2Invert(IssmDouble* Ainv, IssmDouble* A);
+void Matrix2x2Determinant(IssmDouble* Adet,IssmDouble* A);
+void Matrix2x2Eigen(IssmDouble* plambda1,IssmDouble* plambda2,IssmDouble* pvx, IssmDouble* pvy,IssmDouble a11, IssmDouble a21,IssmDouble a22);
+
+void Matrix3x3Invert(IssmDouble* Ainv, IssmDouble* A);
+void Matrix3x3Determinant(IssmDouble* Adet,IssmDouble* A);
+IssmDouble Matrix3x3Determinant( IssmDouble a1,IssmDouble a2,IssmDouble a3, IssmDouble b1,IssmDouble b2,IssmDouble b3, IssmDouble c1,IssmDouble c2,IssmDouble c3);
+void Matrix3x3Solve(IssmDouble* X,IssmDouble* A,IssmDouble* B);
+
+void Matrix4x4Adjoint(IssmDouble* Aadj, IssmDouble* A);
+void Matrix4x4Invert(IssmDouble* Ainv, IssmDouble* A);
+void Matrix4x4Determinant(IssmDouble* Adet,IssmDouble* A);
+void Matrix4x4Solve(IssmDouble* X,IssmDouble* A,IssmDouble* B);
+
+void newcell(IssmDouble** pcell, IssmDouble newvalue, bool top, int m);
+IssmDouble  cellsum(IssmDouble* cell, int m);
+void celldelete(IssmDouble** pcell, int m, int* indices, int nind);
+void cellsplit(IssmDouble** pcell, int m, int i,IssmDouble scale);
+void cellecho(int numcells, int m, ...);
+void CholeskyRealPositiveDefinite(IssmDouble* Lchol, IssmDouble* A, int ndim);
+#endif //ifndef _MATRIXUTILS_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/MemOps/MemOps.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/MemOps/MemOps.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/MemOps/MemOps.cpp	(revision 27955)
@@ -0,0 +1,25 @@
+/*
+ * MemOps.cpp
+ *
+ *  Created on: Sep 10, 2013
+ *      Author: utke
+ */
+
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "MemOps.h"
+
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)
+template <> adouble*  xNew(unsigned int size, const char* const contig) {
+	if (contig[0] == 't' || contig[0] == 'c')
+		ensureContiguousLocations(size);
+
+	adouble* aT_p=new adouble[size];
+	assert(aT_p);
+	return aT_p;
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/MemOps/MemOps.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/MemOps/MemOps.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/MemOps/MemOps.h	(revision 27955)
@@ -0,0 +1,159 @@
+/* \file MemOps.h
+ * \brief: header file for memory allocations as well as templated new/delete checking for non-null pointers
+ */
+
+#ifndef _MEM_OPS_H_
+#define _MEM_OPS_H_
+
+#include <cassert>
+#include <cstring> /*for memcpy*/
+
+/* memory management of types T with non-trivial constructors require C++ style memory management*/
+#define USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
+/* but for speed one may alternatively use C memory management but can do so safely only for T that are at most 
+ * plain old data structures (POD)*/
+#ifndef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
+#include <cstdlib>
+#endif 
+
+static char const DEFCONTIG = 'f';
+
+/* AD (mostly ADOLC) is sensitive to calls to ensurecontiguous. These changes limit its use.*/
+template <class T> T* xNew(unsigned int size, const char* const contig = &DEFCONTIG){
+#ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
+  T* aT_p=new T[size];
+  assert(aT_p);
+  return aT_p;
+#else
+  T* aT_p=(T*)malloc(size*sizeof(T));
+  assert(aT_p);
+  return aT_p;
+#endif  
+}
+template <class T> T** xNew(unsigned int dim1, unsigned int dim2) { /*{{{*/
+#ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
+  T* buf=xNew<T>(dim1*dim2);
+  T** aT_pp =new T*[dim1];
+  assert(aT_pp );
+  for (unsigned int i=0;i<dim1;++i) {
+    aT_pp [i]=buf;
+    buf+=dim2;
+  }
+  return aT_pp ;
+#else
+  T* buf=(T*)malloc(dim1*dim2*sizeof(T));
+  assert(buf );
+  T** aT_pp =(T**)malloc(dim1*sizeof(T*));
+  assert(aT_pp );
+  for (unsigned int i=0;i<dim1;++i) {
+    aT_pp [i]=buf;
+    buf+=dim2;
+  }
+  return aT_pp ;
+#endif
+}/*}}}*/
+// AD (mostly ADOLC) is sensitive to calls to ensurecontiguous. These changes limit its use.
+template <class T> T* xNewZeroInit(unsigned int size,const char* const contig = &DEFCONTIG){
+#ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
+#ifdef _HAVE_AD_
+  T* aT_p=xNew<T>(size,contig);
+#else
+  T* aT_p=xNew<T>(size);
+#endif
+  for(unsigned int i=0; i<size;++i) aT_p[i]=(T)0;
+  return aT_p;
+#else
+  T* aT_p=(T*)calloc(size,sizeof(T));
+  assert(aT_p);
+  return aT_p;
+#endif
+}
+template <class T> T** xNewZeroInit(unsigned int dim1, unsigned int dim2) {/*{{{*/
+#ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
+  T** aT_pp=xNew<T>(dim1,dim2);
+  for (unsigned int i=0; i<dim1*dim2;++i) (*aT_pp)[i]=(T)0;
+  return aT_pp;
+#else
+  T* buf=(T*)calloc(dim1*dim2*sizeof(T));
+  assert(buf );
+  T** aT_pp =(T**)malloc(dim1*sizeof(T*));
+  assert(aT_pp );
+  for (unsigned int i=0;i<dim1;++i) {
+    aT_pp [i]=buf;
+    buf+=dim2;
+  }
+  return aT_pp ;
+#endif
+}/*}}}*/
+template <class T> void xDelete(T**& aT_pp) {/*{{{*/
+  if (aT_pp) {
+#ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
+    delete [](*aT_pp);
+    delete [](aT_pp);
+#else
+    free((void*)*aT_pp)
+    free((void**)aT_pp);
+#endif
+  }
+  aT_pp=0;
+}/*}}}*/
+template <class T> void xDelete(T*& aT_p) {/*{{{*/
+  if (aT_p) 
+#ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
+    delete []aT_p;
+#else
+    free((void*)aT_p);
+#endif
+  aT_p=0;
+}/*}}}*/
+template <class T> T* xReNew(T* old, unsigned int old_size, unsigned int size) {/*{{{*/
+#ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
+	T* aT_p=0;
+	if (!old) { // no old memory
+		if (size)  
+		 aT_p=xNew<T>(size); // according to realloc behavior in manual page 
+	}
+	else { // have old memory
+		if (!size)  // but 0 size
+		 xDelete<T>(old); // according to realloc behavior in manual page
+		else { // non-zero size
+			assert(old_size); // have old memory - need to have old_size set or this call is bad
+			// allocate new, delete old; ; even for the case when size is 
+			// less than old_size we can't just keep the memory unchanged 
+			// because otherwise classes that have ctors/dtors with side-effects 
+			// may misbehave, for example classes with static instance/operations counters. 
+			aT_p=xNew<T>(size);
+			unsigned int iMax=(old_size<size)?old_size:size;
+			for (unsigned int i=0; i<iMax;++i) { 
+				// we need to copy the items by explicit assignments
+				aT_p[i]=old[i];
+			}
+			xDelete<T>(old);
+		}
+	}
+	return aT_p;
+#else
+	T* aT_p=0;
+	aT_p=(T*)realloc((void*)old,size*sizeof(T));
+	if (size) 
+	 assert(aT_p); // according to realloc behavior in manual page
+	return aT_p;
+#endif 
+}/*}}}*/
+template <class T>  T* xMemCpy(T* dest, const T* src, unsigned int size) {/*{{{*/
+  assert(dest); assert(src);
+  #if defined(_HAVE_ADOLC_) || defined(_HAVE_CODIPACK_)
+  for (int i=0; i<size;++i) dest[i]=src[i];
+  #else
+  memcpy(dest,src,size*sizeof(T));
+  #endif
+  return dest;
+};
+/*}}}*/
+
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)
+#include "../Numerics/types.h"
+template <> adouble*  xNew(unsigned int size, const char* const contig);
+#endif
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/BrentSearch.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/BrentSearch.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/BrentSearch.cpp	(revision 27955)
@@ -0,0 +1,251 @@
+/*!\file:  BrentSearch.cpp
+ * \brief optimization algorithm
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <float.h>
+#include <iomanip>
+#include <cmath>
+
+#include "../Exceptions/exceptions.h"
+#include "../io/io.h"
+#include "../MemOps/MemOps.h"
+#include "./Verbosity.h"
+#include "./OptPars.h"
+#include "./types.h"
+#include "./isnan.h"
+
+void BrentSearch(IssmDouble** pJ,OptPars optpars,IssmDouble* X0,IssmDouble (*f)(IssmDouble*,void*),IssmDouble (*g)(IssmDouble**,IssmDouble*,void*),void* usr){
+
+	/* This routine is optimizing a given function using Brent's method
+	 * (Golden or parabolic procedure)*/
+
+	/*Intermediary*/
+	int        iter;
+	IssmDouble si,gold,intervalgold,oldintervalgold;
+	IssmDouble parab_num,parab_den,distance;
+	IssmDouble fxmax,fxmin,fxbest;
+	IssmDouble fx,fx1,fx2;
+	IssmDouble x,x1,x2,xm,xbest;
+	IssmDouble tol1,tol2,seps;
+	IssmDouble tolerance = 1.e-4;
+
+	/*Recover parameters:*/
+	int         nsteps  = optpars.nsteps;
+	int         nsize   = optpars.nsize;
+	IssmDouble  xmin    = optpars.xmin;
+	IssmDouble  xmax    = optpars.xmax;
+	int        *maxiter = optpars.maxiter;
+	IssmDouble *cm_jump = optpars.cm_jump;
+
+	/*Initialize gradient and controls*/
+	IssmDouble* G = NULL;
+	IssmDouble* J = xNew<IssmDouble>(nsteps);
+	IssmDouble* X = xNew<IssmDouble>(nsize);
+
+	/*Header of printf*/
+	_printf0_("\n");
+	_printf0_("       x       |  Cost function f(x)  |  List of contributions\n");
+
+	/*start iterations*/
+	for(int n=0;n<nsteps;n++){
+
+		/*Print iteration number*/
+		_printf0_("====================== step "<< n+1 << "/" << nsteps <<" ===============================\n");
+
+		/*Reset some variables*/
+		iter = 0;
+		xmin = 0.;
+		xmax = 1.;
+		bool loop = true;
+		cout<<setprecision(5);
+
+		/*Get current Gradient at xmin=0*/
+		_printf0_(" x = "<<setw(9)<<xmin<<" | ");
+		fxmin = (*g)(&G,X0,usr); if(xIsNan<IssmDouble>(fxmin)) _error_("Function evaluation returned NaN");
+
+		/*Get f(xmax)*/
+		_printf0_(" x = "<<setw(9)<<xmax<<" | ");
+		for(int i=0;i<nsize;i++) X[i]=X0[i]+xmax*G[i];
+		fxmax = (*f)(X,usr); if (xIsNan<IssmDouble>(fxmax)) _error_("Function evaluation returned NaN");
+		//if(VerboseControl()) _printf0_("           N/A    "<<setw(12)<<xmax<<"  "<<setw(12)<<fxmax<<"           N/A         boundary\n");
+
+		/*test if jump option activated and xmin==0*/
+		if(!xIsNan<IssmDouble>(cm_jump[n]) && (xmin==0) && (fxmax/fxmin)<cm_jump[n]){
+			for(int i=0;i<nsize;i++) X0[i]=X0[i]+xmax*G[i];
+			xDelete<IssmDouble>(G);
+			J[n]=fxmax;
+			continue;
+		}
+
+		/*initialize optimization variables*/
+		seps=sqrt(DBL_EPSILON);    //precision of a IssmDouble
+		distance=0.0;              //new_x=old_x + distance
+		gold=0.5*(3.0-sqrt(5.0));  //gold = 1 - golden ratio
+		intervalgold=0.0;          //distance used by Golden procedure
+
+		/*1: initialize the values of the 4 x needed (x1,x2,x,xbest)*/
+		x1=xmin+gold*(xmax-xmin);
+		x2=x1;
+		xbest=x1;
+		x=xbest;
+
+		/*2: call the function to be evaluated*/
+		_printf0_(" x = "<<setw(9)<<x<<" | ");
+		for(int i=0;i<nsize;i++) X[i]=X0[i]+x*G[i];
+		fxbest = (*f)(X,usr); if(xIsNan<IssmDouble>(fxbest)) _error_("Function evaluation returned NaN");
+		iter++;
+
+		/*3: update the other variables*/
+		fx1=fxbest;
+		fx2=fxbest;
+		/*xm is always in the middle of a and b*/
+		xm=0.5*(xmin+xmax);                           
+		/*update tolerances*/
+		tol1=seps*sqrt(pow(xbest,2))+tolerance/3.0;
+		tol2=2.0*tol1;
+
+		/*4: print result*/
+		//if(VerboseControl())
+		 //_printf0_("         "<<setw(5)<<iter<<"    "<<setw(12)<<xbest<<"  "<<setw(12)<<fxbest<<"  "<<setw(12)<<pow(pow(xbest-xm,2),0.5)<<"         initial\n");
+		if (!xIsNan<IssmDouble>(cm_jump[n]) && (xmin==0) && ((fxbest/fxmin)<cm_jump[n])){
+			//if(VerboseControl()) _printf0_("      optimization terminated: current x satisfies criteria 'cm_jump'=" << cm_jump[n] << "\n");
+			loop=false;
+		}
+
+		while(loop){
+
+			bool goldenflag=true;
+
+			// Is a parabolic fit possible ?
+			if (sqrt(pow(intervalgold,2))>tol1){
+
+				// Yes, so fit parabola
+				goldenflag=false;
+				parab_num=(xbest-x1)*(xbest-x1)*(fxbest-fx2)-(xbest-x2)*(xbest-x2)*(fxbest-fx1);;
+				parab_den=2.0*(xbest-x1)*(fxbest-fx2)-2.0*(xbest-x2)*(fxbest-fx1);
+
+				//reverse p if necessary
+				if(parab_den>0.0){ 
+					parab_num=-parab_num;
+				}
+				parab_den=sqrt(pow(parab_den,2));
+				oldintervalgold=intervalgold;
+				intervalgold=distance;
+
+				// Is the parabola acceptable (we use seps here because in some configuration parab_num==parab_den*(xmax-xbest)
+				// and the result is not repeatable anymore
+				if (( sqrt(pow(parab_num,2)) < sqrt(pow(0.5*parab_den*oldintervalgold,2))) &&
+							(parab_num>parab_den*(xmin-xbest)+seps) && 
+							(parab_num<parab_den*(xmax-xbest)-seps)){
+
+					// Yes, parabolic interpolation step
+					distance=parab_num/parab_den;
+					x=xbest+distance;
+
+					// f must not be evaluated too close to min_x or max_x
+					if (((x-xmin)<tol2) || ((xmax-x)<tol2)){
+						if ((xm-xbest)<0.0) si=-1;
+						else                si=1;
+						//compute new distance
+						distance=tol1*si;
+					}
+				}
+				else{
+					// Not acceptable, must do a golden section step
+					goldenflag=true;
+				}
+			}
+
+			//Golden procedure
+			if(goldenflag){
+				// compute the new distance d
+				if(xbest>=xm){
+					intervalgold=xmin-xbest;    
+				}
+				else{ 
+					intervalgold=xmax-xbest;  
+				}
+				distance=gold*intervalgold;
+			}
+
+			// The function must not be evaluated too close to xbest
+			if(distance<0) si=-1;
+			else           si=1;
+			if(sqrt(pow(distance,2))>tol1) x=xbest+si*sqrt(pow(distance,2));
+			else                           x=xbest+si*tol1;
+
+			//evaluate function on x
+			_printf0_(" x = "<<setw(9)<<x<<" | ");
+			for(int i=0;i<nsize;i++) X[i]=X0[i]+x*G[i];
+			fx = (*f)(X,usr); if(xIsNan<IssmDouble>(fx)) _error_("Function evaluation returned NaN");
+			iter++;
+
+			// Update a, b, xm, x1, x2, tol1, tol2
+			if (fx<=fxbest){
+				if (x>=xbest) xmin=xbest;
+				else          xmax=xbest;
+				x1=x2;    fx1=fx2;
+				x2=xbest; fx2=fxbest;
+				xbest=x;  fxbest=fx;
+			}
+			else{ // fx > fxbest
+				if (x<xbest) xmin=x;
+				else         xmax=x;
+				if ((fx<=fx2) || (x2==xbest)){
+					x1=x2; fx1=fx2;
+					x2=x;  fx2=fx;
+				}
+				else if ( (fx <= fx1) || (x1 == xbest) || (x1 == x2) ){
+					x1=x;  fx1=fx;
+				}
+			}
+			xm = 0.5*(xmin+xmax);
+			tol1=seps*pow(pow(xbest,2),0.5)+tolerance/3.0;
+			tol2=2.0*tol1;
+			//if(VerboseControl())
+			// _printf0_("         "<<setw(5)<<iter<<"    "<<setw(12)<<x<<"  "<<setw(12)<<fx<<"  "<<setw(12)<<pow(pow(xbest-xm,2),0.5)<<
+			//			 "         "<<(goldenflag?"golden":"parabolic")<<"\n");
+
+			/*Stop the optimization?*/
+			if (sqrt(pow(xbest-xm,2)) < (tol2-0.5*(xmax-xmin))){
+				//if(VerboseControl()) _printf0_("      optimization terminated: current x satisfies criteria 'tolx'=" << tolerance << "\n");
+				loop=false;
+			}
+			else if (iter>=maxiter[n]){
+				//if(VerboseControl()) _printf0_("      exiting: Maximum number of iterations has been exceeded  ('maxiter'=" << maxiter[n] << ")\n");
+				loop=false;
+			}
+			else if (!xIsNan<IssmDouble>(cm_jump[n]) && (xmin==0) && ((fxbest/fxmin)<cm_jump[n])){
+				//if(VerboseControl()) _printf0_("      optimization terminated: current x satisfies criteria 'cm_jump'=" << cm_jump[n] << "\n");
+				loop=false;
+			}
+			else{
+				//continue
+				loop=true;
+			}
+		}//end while
+
+		//Now, check that the value on the boundaries are not better than current fxbest
+		if (fxbest>fxmin){
+			xbest=optpars.xmin; fxbest=fxmin;
+		}
+		if (fxbest>fxmax){
+			xbest=optpars.xmax; fxbest=fxmax;
+		}
+
+		/*Assign output pointers: */
+		for(int i=0;i<nsize;i++) X0[i]=X0[i]+xbest*G[i];
+		xDelete<IssmDouble>(G);
+		J[n]=fxbest;
+	}
+
+	/*return*/
+	xDelete<IssmDouble>(X);
+	*pJ=J;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/GaussPoints.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/GaussPoints.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/GaussPoints.cpp	(revision 27955)
@@ -0,0 +1,1696 @@
+/*  Gauss point structures and prototypes  */
+#include <math.h>
+#include <float.h>
+
+#include "./GaussPoints.h"
+#include "../MemOps/MemOps.h"
+#include "../Exceptions/exceptions.h"
+#include "../Numerics/constants.h"
+
+/*General Gauss points*/
+void GaussLegendreLinear( IssmPDouble** pxgaus, IssmPDouble** pxwgt, int ngaus){/*{{{*/
+	/* Gauss-Legendre quadrature points.
+
+		The recurrence coefficients for Legendre polynomials on (-1,1)
+		are defined (from the ORTHPOL subroutine RECUR with ipoly=1) as:
+
+		alpha(i)=0.
+		beta (i)=1./(4.-1./(i-1)^2))
+
+		For degree p, the required number of Gauss-Legendre points is
+		n>=(p+1)/2.*/
+	_assert_(ngaus>0);
+
+	/*Intermediaries*/
+	int i;
+	IssmPDouble *alpha,*beta;
+
+	/*p= 1, npoint= 1*/
+	static IssmPDouble wgt1[]={2.000000000000000};
+	static IssmPDouble xi1[]={0.000000000000000};
+
+	/*p= 3, npoint= 2*/
+	static IssmPDouble wgt2[]={1.000000000000000, 1.000000000000000};
+	static IssmPDouble xi2[]={-0.577350269189626, 0.577350269189626};
+
+	/*p= 5, npoint= 3*/
+	static IssmPDouble wgt3[]={0.555555555555556, 0.888888888888889, 0.555555555555556};
+	static IssmPDouble xi3[]={-0.774596669241483, 0.000000000000000, 0.774596669241483};
+
+	/*p= 7, npoint= 4*/
+	static IssmPDouble wgt4[]={0.347854845137454, 0.652145154862546, 0.652145154862546, 0.347854845137454};
+	static IssmPDouble xi4[]={-0.861136311594053,-0.339981043584856, 0.339981043584856, 0.861136311594053};
+
+	/*npoint= 5*/
+	static IssmPDouble wgt5[]={0.5688888888888889,0.4786286704993665,0.4786286704993665,0.2369268850561891,0.2369268850561891};
+	static IssmPDouble xi5[]={0.0000000000000000,-0.5384693101056831,0.5384693101056831,-0.9061798459386640,0.9061798459386640};
+
+	/*npoint= 6*/
+	static IssmPDouble wgt6[]={0.3607615730481386,0.3607615730481386,0.4679139345726910,0.4679139345726910,0.1713244923791704,0.1713244923791704};
+	static IssmPDouble xi6[]={-0.6612093864662645,0.6612093864662645,-0.2386191860831969,0.2386191860831969,-0.9324695142031521,0.9324695142031521};
+
+	/*npoint= 7*/
+	static IssmPDouble wgt7[]={0.4179591836734694,0.3818300505051189,0.3818300505051189,0.2797053914892766,0.2797053914892766,0.1294849661688697,0.1294849661688697};
+	static IssmPDouble xi7[]={0.0000000000000000,-0.4058451513773972,0.4058451513773972,-0.7415311855993945,0.7415311855993945,-0.9491079123427585,0.9491079123427585};
+
+	static IssmPDouble* wgtp[MAX_LINE_GAUS_PTS]={wgt1 ,wgt2 ,wgt3 ,wgt4, wgt5, wgt6, wgt7};
+	static IssmPDouble* xip [MAX_LINE_GAUS_PTS]={xi1  ,xi2  ,xi3  ,xi4, xi5, xi6, xi7};
+
+	*pxgaus =xNew<IssmPDouble>(ngaus);
+	*pxwgt  =xNew<IssmPDouble>(ngaus);
+
+	/*  check to see if Gauss points need to be calculated  */
+	if(ngaus <= MAX_LINE_GAUS_PTS) {
+
+		/*  copy the points from the static arrays (noting that the pointers
+			 could be returned directly, but then the calling function would
+			 have to know to not free them)  */
+
+		for(i=0; i<ngaus; i++) {
+			(*pxgaus)[i]=xip [ngaus-1][i];
+			(*pxwgt )[i]=wgtp[ngaus-1][i];
+		}
+	}
+	else{
+
+		/*  calculate the Gauss points using recurrence relations  */
+		alpha=xNew<IssmPDouble>(ngaus);
+		beta =xNew<IssmPDouble>(ngaus);
+
+		/*  calculate the Legendre recurrence coefficients  */
+		alpha[0]=0.;
+		beta [0]=2.;
+
+		for (i=1; i<ngaus; i++) {
+			alpha[i]=0.;
+			beta [i]=1./(4.-1./(i*i));
+		}
+
+		/*  calculate the Gauss points  */
+		GaussRecur(*pxgaus, *pxwgt, ngaus, alpha, beta );
+		xDelete<IssmPDouble>(beta);
+		xDelete<IssmPDouble>(alpha);
+	}
+}/*}}}*/
+void GaussLegendreTria( int* pngaus, IssmDouble** pl1, IssmDouble** pl2, IssmDouble** pl3, IssmDouble** pwgt, int iord ) {/*{{{*/
+	/*Gauss quadrature points for the triangle.
+
+	  Higher-order points from D.A. Dunavant, "High Degree Efficient
+	  Symmetrical Gaussian Quadrature Rules for the Triangle", IJNME,
+	  Vol. 21, pp. 1129-1148 (1985), as transcribed for Probe rules3.*/
+	_assert_(iord>0);
+
+	/*Intermediaries*/
+	int i,j,ipt,nigaus;
+	IssmPDouble xi,eta;
+	IssmPDouble *xgaus=NULL,*xwgt=NULL,*egaus,*ewgt;
+
+	/*Hardcoded Gauss points declaration*/
+	/*p= 1, npoint= 1{{{*/
+	static IssmPDouble wgt1[]={
+		1.732050807568877};
+	static IssmPDouble l11[]={
+		0.333333333333333};
+	static IssmPDouble l21[]={
+		0.333333333333333};
+	static IssmPDouble l31[]={
+		0.333333333333333};
+	/*}}}*/
+	/*p= 2, npoint= 3  {{{*/
+	static IssmPDouble wgt2[]={
+		0.577350269189625, 0.577350269189625, 0.577350269189625};
+	static IssmPDouble l12[]={
+		0.666666666666667, 0.166666666666667, 0.166666666666667};
+	static IssmPDouble l22[]={
+		0.166666666666667, 0.666666666666667, 0.166666666666667};
+	static IssmPDouble l32[]={
+		0.166666666666667, 0.166666666666667, 0.666666666666667};
+	/*}}}*/
+	/*p= 3, npoint= 4  {{{*/
+	static IssmPDouble wgt3[]={
+		-0.974278579257493, 0.902109795608790, 0.902109795608790, 
+		0.902109795608790};
+	static IssmPDouble l13[]={
+		0.333333333333333, 0.600000000000000, 0.200000000000000, 
+		0.200000000000000};
+	static IssmPDouble l23[]={
+		0.333333333333333, 0.200000000000000, 0.600000000000000, 
+		0.200000000000000};
+	static IssmPDouble l33[]={
+		0.333333333333333, 0.200000000000000, 0.200000000000000, 
+		0.600000000000000};
+	/*}}}*/
+	/*p= 4, npoint= 6  {{{*/
+	static IssmPDouble wgt4[]={
+		0.386908262797819, 0.386908262797819, 0.386908262797819, 
+		0.190442006391807, 0.190442006391807, 0.190442006391807};
+	static IssmPDouble l14[]={
+		0.108103018168070, 0.445948490915965, 0.445948490915965, 
+		0.816847572980459, 0.091576213509771, 0.091576213509771};
+	static IssmPDouble l24[]={
+		0.445948490915965, 0.108103018168070, 0.445948490915965, 
+		0.091576213509771, 0.816847572980459, 0.091576213509771};
+	static IssmPDouble l34[]={
+		0.445948490915965, 0.445948490915965, 0.108103018168070, 
+		0.091576213509771, 0.091576213509771, 0.816847572980459};
+	/*}}}*/
+	/*p= 5, npoint= 7  {{{*/
+	static IssmPDouble wgt5[]={
+		0.389711431702997, 0.229313399254729, 0.229313399254729, 
+		0.229313399254729, 0.218133059367230, 0.218133059367230, 
+		0.218133059367230};
+	static IssmPDouble l15[]={
+		0.333333333333333, 0.059715871789770, 0.470142064105115, 
+		0.470142064105115, 0.797426985353087, 0.101286507323456, 
+		0.101286507323456};
+	static IssmPDouble l25[]={
+		0.333333333333333, 0.470142064105115, 0.059715871789770, 
+		0.470142064105115, 0.101286507323456, 0.797426985353087, 
+		0.101286507323456};
+	static IssmPDouble l35[]={
+		0.333333333333333, 0.470142064105115, 0.470142064105115, 
+		0.059715871789770, 0.101286507323456, 0.101286507323456, 
+		0.797426985353087};
+	/*}}}*/
+	/*p= 6, npoint=12  {{{*/
+	static IssmPDouble wgt6[]={
+		0.202279763184836, 0.202279763184836, 0.202279763184836, 
+		0.088065961139281, 0.088065961139281, 0.088065961139281, 
+		0.143502272432755, 0.143502272432755, 0.143502272432755, 
+		0.143502272432755, 0.143502272432755, 0.143502272432755};
+	static IssmPDouble l16[]={
+		0.501426509658179, 0.249286745170910, 0.249286745170910, 
+		0.873821971016996, 0.063089014491502, 0.063089014491502, 
+		0.053145049844817, 0.053145049844817, 0.310352451033784, 
+		0.636502499121399, 0.310352451033784, 0.636502499121399};
+	static IssmPDouble l26[]={
+		0.249286745170910, 0.501426509658179, 0.249286745170910, 
+		0.063089014491502, 0.873821971016996, 0.063089014491502, 
+		0.310352451033784, 0.636502499121399, 0.053145049844817, 
+		0.053145049844817, 0.636502499121399, 0.310352451033784};
+	static IssmPDouble l36[]={
+		0.249286745170910, 0.249286745170910, 0.501426509658179, 
+		0.063089014491502, 0.063089014491502, 0.873821971016996, 
+		0.636502499121399, 0.310352451033784, 0.636502499121399, 
+		0.310352451033784, 0.053145049844817, 0.053145049844817};
+	/*}}}*/
+	/*p= 7, npoint=13  {{{*/
+	static IssmPDouble wgt7[]={
+		-0.259062916308362, 0.304174548458604, 0.304174548458604, 
+		0.304174548458604, 0.092400122517855, 0.092400122517855, 
+		0.092400122517855, 0.133564951824643, 0.133564951824643, 
+		0.133564951824643, 0.133564951824643, 0.133564951824643, 
+		0.133564951824643};
+	static IssmPDouble l17[]={
+		0.333333333333333, 0.479308067841920, 0.260345966079040, 
+		0.260345966079040, 0.869739794195568, 0.065130102902216, 
+		0.065130102902216, 0.048690315425316, 0.048690315425316, 
+		0.312865496004874, 0.638444188569810, 0.312865496004874, 
+		0.638444188569810};
+	static IssmPDouble l27[]={
+		0.333333333333333, 0.260345966079040, 0.479308067841920, 
+		0.260345966079040, 0.065130102902216, 0.869739794195568, 
+		0.065130102902216, 0.312865496004874, 0.638444188569810, 
+		0.048690315425316, 0.048690315425316, 0.638444188569810, 
+		0.312865496004874};
+	static IssmPDouble l37[]={
+		0.333333333333333, 0.260345966079040, 0.260345966079040, 
+		0.479308067841920, 0.065130102902216, 0.065130102902216, 
+		0.869739794195568, 0.638444188569810, 0.312865496004874, 
+		0.638444188569810, 0.312865496004874, 0.048690315425316, 
+		0.048690315425316};
+	/*}}}*/
+	/*p= 8, npoint=16  {{{*/
+	static IssmPDouble wgt8[]={
+		0.249961964823104, 0.164703541925695, 0.164703541925695, 
+		0.164703541925695, 0.178777729989794, 0.178777729989794, 
+		0.178777729989794, 0.056219767020733, 0.056219767020733, 
+		0.056219767020733, 0.047164287656184, 0.047164287656184, 
+		0.047164287656184, 0.047164287656184, 0.047164287656184, 
+		0.047164287656184};
+	static IssmPDouble l18[]={
+		0.333333333333333, 0.081414823414554, 0.459292588292723, 
+		0.459292588292723, 0.658861384496480, 0.170569307751760, 
+		0.170569307751760, 0.898905543365938, 0.050547228317031, 
+		0.050547228317031, 0.008394777409958, 0.008394777409958, 
+		0.263112829634638, 0.728492392955404, 0.263112829634638, 
+		0.728492392955404};
+	static IssmPDouble l28[]={
+		0.333333333333333, 0.459292588292723, 0.081414823414554, 
+		0.459292588292723, 0.170569307751760, 0.658861384496480, 
+		0.170569307751760, 0.050547228317031, 0.898905543365938, 
+		0.050547228317031, 0.263112829634638, 0.728492392955404, 
+		0.008394777409958, 0.008394777409958, 0.728492392955404, 
+		0.263112829634638};
+	static IssmPDouble l38[]={
+		0.333333333333333, 0.459292588292723, 0.459292588292723, 
+		0.081414823414554, 0.170569307751760, 0.170569307751760, 
+		0.658861384496480, 0.050547228317031, 0.050547228317031, 
+		0.898905543365938, 0.728492392955404, 0.263112829634638, 
+		0.728492392955404, 0.263112829634638, 0.008394777409958, 
+		0.008394777409958};
+	/*}}}*/
+	/*p= 9, npoint=19  {{{*/
+	static IssmPDouble wgt9[]={
+		0.168244134395468, 0.054273292833345, 0.054273292833345, 
+		0.054273292833345, 0.134801255248419, 0.134801255248419, 
+		0.134801255248419, 0.137953930529909, 0.137953930529909, 
+		0.137953930529909, 0.044301833780383, 0.044301833780383, 
+		0.044301833780383, 0.074969289332873, 0.074969289332873, 
+		0.074969289332873, 0.074969289332873, 0.074969289332873, 
+		0.074969289332873};
+	static IssmPDouble l19[]={
+		0.333333333333333, 0.020634961602525, 0.489682519198738, 
+		0.489682519198738, 0.125820817014127, 0.437089591492937, 
+		0.437089591492937, 0.623592928761935, 0.188203535619033, 
+		0.188203535619033, 0.910540973211095, 0.044729513394453, 
+		0.044729513394453, 0.036838412054736, 0.036838412054736, 
+		0.221962989160766, 0.741198598784498, 0.221962989160766, 
+		0.741198598784498};
+	static IssmPDouble l29[]={
+		0.333333333333333, 0.489682519198738, 0.020634961602525, 
+		0.489682519198738, 0.437089591492937, 0.125820817014127, 
+		0.437089591492937, 0.188203535619033, 0.623592928761935, 
+		0.188203535619033, 0.044729513394453, 0.910540973211095, 
+		0.044729513394453, 0.221962989160766, 0.741198598784498, 
+		0.036838412054736, 0.036838412054736, 0.741198598784498, 
+		0.221962989160766};
+	static IssmPDouble l39[]={
+		0.333333333333333, 0.489682519198738, 0.489682519198738, 
+		0.020634961602525, 0.437089591492937, 0.437089591492937, 
+		0.125820817014127, 0.188203535619033, 0.188203535619033, 
+		0.623592928761935, 0.044729513394453, 0.044729513394453, 
+		0.910540973211095, 0.741198598784498, 0.221962989160766, 
+		0.741198598784498, 0.221962989160766, 0.036838412054736, 
+		0.036838412054736};
+	/*}}}*/
+	/*p=10, npoint=25  {{{*/
+	static IssmPDouble wgt10[]={
+		0.157301373584232, 0.063611224790829, 0.063611224790829, 
+		0.063611224790829, 0.078498377595183, 0.078498377595183, 
+		0.078498377595183, 0.126020408629139, 0.126020408629139, 
+		0.126020408629139, 0.126020408629139, 0.126020408629139, 
+		0.126020408629139, 0.049064223302117, 0.049064223302117, 
+		0.049064223302117, 0.049064223302117, 0.049064223302117, 
+		0.049064223302117, 0.016318805873179, 0.016318805873179, 
+		0.016318805873179, 0.016318805873179, 0.016318805873179, 
+		0.016318805873179};
+	static IssmPDouble l110[]={
+		0.333333333333333, 0.028844733232685, 0.485577633383657, 
+		0.485577633383657, 0.781036849029926, 0.109481575485037, 
+		0.109481575485037, 0.141707219414880, 0.141707219414880, 
+		0.307939838764121, 0.550352941820999, 0.307939838764121, 
+		0.550352941820999, 0.025003534762686, 0.025003534762686, 
+		0.246672560639903, 0.728323904597411, 0.246672560639903, 
+		0.728323904597411, 0.009540815400299, 0.009540815400299, 
+		0.066803251012200, 0.923655933587500, 0.066803251012200, 
+		0.923655933587500};
+	static IssmPDouble l210[]={
+		0.333333333333333, 0.485577633383657, 0.028844733232685, 
+		0.485577633383657, 0.109481575485037, 0.781036849029926, 
+		0.109481575485037, 0.307939838764121, 0.550352941820999, 
+		0.141707219414880, 0.141707219414880, 0.550352941820999, 
+		0.307939838764121, 0.246672560639903, 0.728323904597411, 
+		0.025003534762686, 0.025003534762686, 0.728323904597411, 
+		0.246672560639903, 0.066803251012200, 0.923655933587500, 
+		0.009540815400299, 0.009540815400299, 0.923655933587500, 
+		0.066803251012200};
+	static IssmPDouble l310[]={
+		0.333333333333333, 0.485577633383657, 0.485577633383657, 
+		0.028844733232685, 0.109481575485037, 0.109481575485037, 
+		0.781036849029926, 0.550352941820999, 0.307939838764121, 
+		0.550352941820999, 0.307939838764121, 0.141707219414880, 
+		0.141707219414880, 0.728323904597411, 0.246672560639903, 
+		0.728323904597411, 0.246672560639903, 0.025003534762686, 
+		0.025003534762686, 0.923655933587500, 0.066803251012200, 
+		0.923655933587500, 0.066803251012200, 0.009540815400299, 
+		0.009540815400299};
+	/*}}}*/
+	/*p=11, npoint=27  {{{*/
+	static IssmPDouble wgt11[]={
+		0.001605622060698, 0.001605622060698, 0.001605622060698, 
+		0.133626914252765, 0.133626914252765, 0.133626914252765, 
+		0.102750410879760, 0.102750410879760, 0.102750410879760, 
+		0.062673462600454, 0.062673462600454, 0.062673462600454, 
+		0.023659348114362, 0.023659348114362, 0.023659348114362, 
+		0.090650537039958, 0.090650537039958, 0.090650537039958, 
+		0.090650537039958, 0.090650537039958, 0.090650537039958, 
+		0.035866718600836, 0.035866718600836, 0.035866718600836, 
+		0.035866718600836, 0.035866718600836, 0.035866718600836};
+	static IssmPDouble l111[]={
+		-0.069222096541517, 0.534611048270758, 0.534611048270758, 
+		0.202061394068290, 0.398969302965855, 0.398969302965855, 
+		0.593380199137435, 0.203309900431282, 0.203309900431282, 
+		0.761298175434837, 0.119350912282581, 0.119350912282581, 
+		0.935270103777448, 0.032364948111276, 0.032364948111276, 
+		0.050178138310495, 0.050178138310495, 0.356620648261293, 
+		0.593201213428213, 0.356620648261293, 0.593201213428213, 
+		0.021022016536166, 0.021022016536166, 0.171488980304042, 
+		0.807489003159792, 0.171488980304042, 0.807489003159792};
+	static IssmPDouble l211[]={
+		0.534611048270758,-0.069222096541517, 0.534611048270758, 
+		0.398969302965855, 0.202061394068290, 0.398969302965855, 
+		0.203309900431282, 0.593380199137435, 0.203309900431282, 
+		0.119350912282581, 0.761298175434837, 0.119350912282581, 
+		0.032364948111276, 0.935270103777448, 0.032364948111276, 
+		0.356620648261293, 0.593201213428213, 0.050178138310495, 
+		0.050178138310495, 0.593201213428213, 0.356620648261293, 
+		0.171488980304042, 0.807489003159792, 0.021022016536166, 
+		0.021022016536166, 0.807489003159792, 0.171488980304042};
+	static IssmPDouble l311[]={
+		0.534611048270758, 0.534611048270758,-0.069222096541517, 
+		0.398969302965855, 0.398969302965855, 0.202061394068290, 
+		0.203309900431282, 0.203309900431282, 0.593380199137435, 
+		0.119350912282581, 0.119350912282581, 0.761298175434837, 
+		0.032364948111276, 0.032364948111276, 0.935270103777448, 
+		0.593201213428213, 0.356620648261293, 0.593201213428213, 
+		0.356620648261293, 0.050178138310495, 0.050178138310495, 
+		0.807489003159792, 0.171488980304042, 0.807489003159792, 
+		0.171488980304042, 0.021022016536166, 0.021022016536166};
+	/*}}}*/
+	/*p=12, npoint=33  {{{*/
+	static IssmPDouble wgt12[]={
+		0.044567514407799, 0.044567514407799, 0.044567514407799, 
+		0.075677707051848, 0.075677707051848, 0.075677707051848, 
+		0.108873638018933, 0.108873638018933, 0.108873638018933, 
+		0.060268635501892, 0.060268635501892, 0.060268635501892, 
+		0.010680277434033, 0.010680277434033, 0.010680277434033, 
+		0.069925589232074, 0.069925589232074, 0.069925589232074, 
+		0.069925589232074, 0.069925589232074, 0.069925589232074, 
+		0.038723067079683, 0.038723067079683, 0.038723067079683, 
+		0.038723067079683, 0.038723067079683, 0.038723067079683, 
+		0.029992592075802, 0.029992592075802, 0.029992592075802, 
+		0.029992592075802, 0.029992592075802, 0.029992592075802};
+	static IssmPDouble l112[]={
+		0.023565220452390, 0.488217389773805, 0.488217389773805, 
+		0.120551215411079, 0.439724392294460, 0.439724392294460, 
+		0.457579229975768, 0.271210385012116, 0.271210385012116, 
+		0.744847708916828, 0.127576145541586, 0.127576145541586, 
+		0.957365299093579, 0.021317350453210, 0.021317350453210, 
+		0.115343494534698, 0.115343494534698, 0.275713269685514, 
+		0.608943235779788, 0.275713269685514, 0.608943235779788, 
+		0.022838332222257, 0.022838332222257, 0.281325580989940, 
+		0.695836086787803, 0.281325580989940, 0.695836086787803, 
+		0.025734050548330, 0.025734050548330, 0.116251915907597, 
+		0.858014033544073, 0.116251915907597, 0.858014033544073};
+	static IssmPDouble l212[]={
+		0.488217389773805, 0.023565220452390, 0.488217389773805, 
+		0.439724392294460, 0.120551215411079, 0.439724392294460, 
+		0.271210385012116, 0.457579229975768, 0.271210385012116, 
+		0.127576145541586, 0.744847708916828, 0.127576145541586, 
+		0.021317350453210, 0.957365299093579, 0.021317350453210, 
+		0.275713269685514, 0.608943235779788, 0.115343494534698, 
+		0.115343494534698, 0.608943235779788, 0.275713269685514, 
+		0.281325580989940, 0.695836086787803, 0.022838332222257, 
+		0.022838332222257, 0.695836086787803, 0.281325580989940, 
+		0.116251915907597, 0.858014033544073, 0.025734050548330, 
+		0.025734050548330, 0.858014033544073, 0.116251915907597};
+	static IssmPDouble l312[]={
+		0.488217389773805, 0.488217389773805, 0.023565220452390, 
+		0.439724392294460, 0.439724392294460, 0.120551215411079, 
+		0.271210385012116, 0.271210385012116, 0.457579229975768, 
+		0.127576145541586, 0.127576145541586, 0.744847708916828, 
+		0.021317350453210, 0.021317350453210, 0.957365299093579, 
+		0.608943235779788, 0.275713269685514, 0.608943235779788, 
+		0.275713269685514, 0.115343494534698, 0.115343494534698, 
+		0.695836086787803, 0.281325580989940, 0.695836086787803, 
+		0.281325580989940, 0.022838332222257, 0.022838332222257, 
+		0.858014033544073, 0.116251915907597, 0.858014033544073, 
+		0.116251915907597, 0.025734050548330, 0.025734050548330};
+	/*}}}*/
+	/*p=13, npoint=37  {{{*/
+	static IssmPDouble wgt13[]={
+		0.090968907790622, 0.019537784619314, 0.019537784619314, 
+		0.019537784619314, 0.054427130356344, 0.054427130356344, 
+		0.054427130356344, 0.081531965976677, 0.081531965976677, 
+		0.081531965976677, 0.082036138309652, 0.082036138309652, 
+		0.082036138309652, 0.053983743853694, 0.053983743853694, 
+		0.053983743853694, 0.013814441407066, 0.013814441407066, 
+		0.013814441407066, 0.063823305703923, 0.063823305703923, 
+		0.063823305703923, 0.063823305703923, 0.063823305703923, 
+		0.063823305703923, 0.030140218568265, 0.030140218568265, 
+		0.030140218568265, 0.030140218568265, 0.030140218568265, 
+		0.030140218568265, 0.026884523429480, 0.026884523429480, 
+		0.026884523429480, 0.026884523429480, 0.026884523429480, 
+		0.026884523429480};
+	static IssmPDouble l113[]={
+		0.333333333333333, 0.009903630120591, 0.495048184939705, 
+		0.495048184939705, 0.062566729780852, 0.468716635109574, 
+		0.468716635109574, 0.170957326397447, 0.414521336801277, 
+		0.414521336801277, 0.541200855914337, 0.229399572042831, 
+		0.229399572042831, 0.771151009607340, 0.114424495196330, 
+		0.114424495196330, 0.950377217273082, 0.024811391363459, 
+		0.024811391363459, 0.094853828379579, 0.094853828379579, 
+		0.268794997058761, 0.636351174561660, 0.268794997058761, 
+		0.636351174561660, 0.018100773278807, 0.018100773278807, 
+		0.291730066734288, 0.690169159986905, 0.291730066734288, 
+		0.690169159986905, 0.022233076674090, 0.022233076674090, 
+		0.126357385491669, 0.851409537834241, 0.126357385491669, 
+		0.851409537834241};
+	static IssmPDouble l213[]={
+		0.333333333333333, 0.495048184939705, 0.009903630120591, 
+		0.495048184939705, 0.468716635109574, 0.062566729780852, 
+		0.468716635109574, 0.414521336801277, 0.170957326397447, 
+		0.414521336801277, 0.229399572042831, 0.541200855914337, 
+		0.229399572042831, 0.114424495196330, 0.771151009607340, 
+		0.114424495196330, 0.024811391363459, 0.950377217273082, 
+		0.024811391363459, 0.268794997058761, 0.636351174561660, 
+		0.094853828379579, 0.094853828379579, 0.636351174561660, 
+		0.268794997058761, 0.291730066734288, 0.690169159986905, 
+		0.018100773278807, 0.018100773278807, 0.690169159986905, 
+		0.291730066734288, 0.126357385491669, 0.851409537834241, 
+		0.022233076674090, 0.022233076674090, 0.851409537834241, 
+		0.126357385491669};
+	static IssmPDouble l313[]={
+		0.333333333333333, 0.495048184939705, 0.495048184939705, 
+		0.009903630120591, 0.468716635109574, 0.468716635109574, 
+		0.062566729780852, 0.414521336801277, 0.414521336801277, 
+		0.170957326397447, 0.229399572042831, 0.229399572042831, 
+		0.541200855914337, 0.114424495196330, 0.114424495196330, 
+		0.771151009607340, 0.024811391363459, 0.024811391363459, 
+		0.950377217273082, 0.636351174561660, 0.268794997058761, 
+		0.636351174561660, 0.268794997058761, 0.094853828379579, 
+		0.094853828379579, 0.690169159986905, 0.291730066734288, 
+		0.690169159986905, 0.291730066734288, 0.018100773278807, 
+		0.018100773278807, 0.851409537834241, 0.126357385491669, 
+		0.851409537834241, 0.126357385491669, 0.022233076674090, 
+		0.022233076674090};
+	/*}}}*/
+	/*p=14, npoint=42{{{*/
+	static IssmPDouble wgt14[]={
+		0.037903474783419, 0.037903474783419, 0.037903474783419, 
+		0.056791094234956, 0.056791094234956, 0.056791094234956, 
+		0.089675379523011, 0.089675379523011, 0.089675379523011, 
+		0.073027745871103, 0.073027745871103, 0.073027745871103, 
+		0.024999901169244, 0.024999901169244, 0.024999901169244, 
+		0.008527585185524, 0.008527585185524, 0.008527585185524, 
+		0.042722337771116, 0.042722337771116, 0.042722337771116, 
+		0.042722337771116, 0.042722337771116, 0.042722337771116, 
+		0.066807816407881, 0.066807816407881, 0.066807816407881, 
+		0.066807816407881, 0.066807816407881, 0.066807816407881, 
+		0.025004419126360, 0.025004419126360, 0.025004419126360, 
+		0.025004419126360, 0.025004419126360, 0.025004419126360, 
+		0.008677970905831, 0.008677970905831, 0.008677970905831, 
+		0.008677970905831, 0.008677970905831, 0.008677970905831};
+	static IssmPDouble l114[]={
+		0.022072179275643, 0.488963910362179, 0.488963910362179, 
+		0.164710561319092, 0.417644719340454, 0.417644719340454, 
+		0.453044943382323, 0.273477528308839, 0.273477528308839, 
+		0.645588935174913, 0.177205532412543, 0.177205532412543, 
+		0.876400233818255, 0.061799883090873, 0.061799883090873, 
+		0.961218077502598, 0.019390961248701, 0.019390961248701, 
+		0.057124757403648, 0.057124757403648, 0.172266687821356, 
+		0.770608554774996, 0.172266687821356, 0.770608554774996, 
+		0.092916249356972, 0.092916249356972, 0.336861459796345, 
+		0.570222290846683, 0.336861459796345, 0.570222290846683, 
+		0.014646950055654, 0.014646950055654, 0.298372882136258, 
+		0.686980167808088, 0.298372882136258, 0.686980167808088, 
+		0.001268330932872, 0.001268330932872, 0.118974497696957, 
+		0.879757171370171, 0.118974497696957, 0.879757171370171};
+	static IssmPDouble l214[]={
+		0.488963910362179, 0.022072179275643, 0.488963910362179, 
+		0.417644719340454, 0.164710561319092, 0.417644719340454, 
+		0.273477528308839, 0.453044943382323, 0.273477528308839, 
+		0.177205532412543, 0.645588935174913, 0.177205532412543, 
+		0.061799883090873, 0.876400233818255, 0.061799883090873, 
+		0.019390961248701, 0.961218077502598, 0.019390961248701, 
+		0.172266687821356, 0.770608554774996, 0.057124757403648, 
+		0.057124757403648, 0.770608554774996, 0.172266687821356, 
+		0.336861459796345, 0.570222290846683, 0.092916249356972, 
+		0.092916249356972, 0.570222290846683, 0.336861459796345, 
+		0.298372882136258, 0.686980167808088, 0.014646950055654, 
+		0.014646950055654, 0.686980167808088, 0.298372882136258, 
+		0.118974497696957, 0.879757171370171, 0.001268330932872, 
+		0.001268330932872, 0.879757171370171, 0.118974497696957};
+	static IssmPDouble l314[]={
+		0.488963910362179, 0.488963910362179, 0.022072179275643, 
+		0.417644719340454, 0.417644719340454, 0.164710561319092, 
+		0.273477528308839, 0.273477528308839, 0.453044943382323, 
+		0.177205532412543, 0.177205532412543, 0.645588935174913, 
+		0.061799883090873, 0.061799883090873, 0.876400233818255, 
+		0.019390961248701, 0.019390961248701, 0.961218077502598, 
+		0.770608554774996, 0.172266687821356, 0.770608554774996, 
+		0.172266687821356, 0.057124757403648, 0.057124757403648, 
+		0.570222290846683, 0.336861459796345, 0.570222290846683, 
+		0.336861459796345, 0.092916249356972, 0.092916249356972, 
+		0.686980167808088, 0.298372882136258, 0.686980167808088, 
+		0.298372882136258, 0.014646950055654, 0.014646950055654, 
+		0.879757171370171, 0.118974497696957, 0.879757171370171, 
+		0.118974497696957, 0.001268330932872, 0.001268330932872};
+	/*}}}*/
+	/*p=15, npoint=48{{{*/
+	static IssmPDouble wgt15[]={
+		0.003320126005206, 0.003320126005206, 0.003320126005206, 
+		0.076641563419124, 0.076641563419124, 0.076641563419124, 
+		0.088657703045151, 0.088657703045151, 0.088657703045151, 
+		0.041028362044303, 0.041028362044303, 0.041028362044303, 
+		0.023018566716310, 0.023018566716310, 0.023018566716310, 
+		0.008225364846296, 0.008225364846296, 0.008225364846296, 
+		0.066770684377964, 0.066770684377964, 0.066770684377964, 
+		0.066770684377964, 0.066770684377964, 0.066770684377964, 
+		0.047139173172681, 0.047139173172681, 0.047139173172681, 
+		0.047139173172681, 0.047139173172681, 0.047139173172681, 
+		0.003779468865339, 0.003779468865339, 0.003779468865339, 
+		0.003779468865339, 0.003779468865339, 0.003779468865339, 
+		0.037248306609289, 0.037248306609289, 0.037248306609289, 
+		0.037248306609289, 0.037248306609289, 0.037248306609289, 
+		0.013291658531346, 0.013291658531346, 0.013291658531346, 
+		0.013291658531346, 0.013291658531346, 0.013291658531346};
+	static IssmPDouble l115[]={
+		-0.013945833716486, 0.506972916858243, 0.506972916858243, 
+		0.137187291433955, 0.431406354283023, 0.431406354283023, 
+		0.444612710305711, 0.277693644847144, 0.277693644847144, 
+		0.747070217917492, 0.126464891041254, 0.126464891041254, 
+		0.858383228050628, 0.070808385974686, 0.070808385974686, 
+		0.962069659517853, 0.018965170241073, 0.018965170241073, 
+		0.133734161966621, 0.133734161966621, 0.261311371140087, 
+		0.604954466893291, 0.261311371140087, 0.604954466893291, 
+		0.036366677396917, 0.036366677396917, 0.388046767090269, 
+		0.575586555512814, 0.388046767090269, 0.575586555512814, 
+		-0.010174883126571,-0.010174883126571, 0.285712220049916, 
+		0.724462663076655, 0.285712220049916, 0.724462663076655, 
+		0.036843869875878, 0.036843869875878, 0.215599664072284, 
+		0.747556466051838, 0.215599664072284, 0.747556466051838, 
+		0.012459809331199, 0.012459809331199, 0.103575616576386, 
+		0.883964574092416, 0.103575616576386, 0.883964574092416};
+	static IssmPDouble l215[]={
+		0.506972916858243,-0.013945833716486, 0.506972916858243, 
+		0.431406354283023, 0.137187291433955, 0.431406354283023, 
+		0.277693644847144, 0.444612710305711, 0.277693644847144, 
+		0.126464891041254, 0.747070217917492, 0.126464891041254, 
+		0.070808385974686, 0.858383228050628, 0.070808385974686, 
+		0.018965170241073, 0.962069659517853, 0.018965170241073, 
+		0.261311371140087, 0.604954466893291, 0.133734161966621, 
+		0.133734161966621, 0.604954466893291, 0.261311371140087, 
+		0.388046767090269, 0.575586555512814, 0.036366677396917, 
+		0.036366677396917, 0.575586555512814, 0.388046767090269, 
+		0.285712220049916, 0.724462663076655,-0.010174883126571, 
+		-0.010174883126571, 0.724462663076655, 0.285712220049916, 
+		0.215599664072284, 0.747556466051838, 0.036843869875878, 
+		0.036843869875878, 0.747556466051838, 0.215599664072284, 
+		0.103575616576386, 0.883964574092416, 0.012459809331199, 
+		0.012459809331199, 0.883964574092416, 0.103575616576386};
+	static IssmPDouble l315[]={
+		0.506972916858243, 0.506972916858243,-0.013945833716486, 
+		0.431406354283023, 0.431406354283023, 0.137187291433955, 
+		0.277693644847144, 0.277693644847144, 0.444612710305711, 
+		0.126464891041254, 0.126464891041254, 0.747070217917492, 
+		0.070808385974686, 0.070808385974686, 0.858383228050628, 
+		0.018965170241073, 0.018965170241073, 0.962069659517853, 
+		0.604954466893291, 0.261311371140087, 0.604954466893291, 
+		0.261311371140087, 0.133734161966621, 0.133734161966621, 
+		0.575586555512814, 0.388046767090269, 0.575586555512814, 
+		0.388046767090269, 0.036366677396917, 0.036366677396917, 
+		0.724462663076655, 0.285712220049916, 0.724462663076655, 
+		0.285712220049916,-0.010174883126571,-0.010174883126571, 
+		0.747556466051838, 0.215599664072284, 0.747556466051838, 
+		0.215599664072284, 0.036843869875878, 0.036843869875878, 
+		0.883964574092416, 0.103575616576386, 0.883964574092416, 
+		0.103575616576386, 0.012459809331199, 0.012459809331199};
+	/*}}}*/
+	/*p=16, npoint=52  {{{*/
+	static IssmPDouble wgt16[]={
+		0.081191089584902, 0.011095307165226, 0.011095307165226, 
+		0.011095307165226, 0.072244353151393, 0.072244353151393, 
+		0.072244353151393, 0.046577417012049, 0.046577417012049, 
+		0.046577417012049, 0.072975670074230, 0.072975670074230, 
+		0.072975670074230, 0.051961986412307, 0.051961986412307, 
+		0.051961986412307, 0.024595292810646, 0.024595292810646, 
+		0.024595292810646, 0.006205006808607, 0.006205006808607, 
+		0.006205006808607, 0.056764756525753, 0.056764756525753, 
+		0.056764756525753, 0.056764756525753, 0.056764756525753, 
+		0.056764756525753, 0.026497443692048, 0.026497443692048, 
+		0.026497443692048, 0.026497443692048, 0.026497443692048, 
+		0.026497443692048, 0.004133096181263, 0.004133096181263, 
+		0.004133096181263, 0.004133096181263, 0.004133096181263, 
+		0.004133096181263, 0.033055830705140, 0.033055830705140, 
+		0.033055830705140, 0.033055830705140, 0.033055830705140, 
+		0.033055830705140, 0.011864642509229, 0.011864642509229, 
+		0.011864642509229, 0.011864642509229, 0.011864642509229, 
+		0.011864642509229};
+	static IssmPDouble l116[]={
+		0.333333333333333, 0.005238916103123, 0.497380541948438, 
+		0.497380541948438, 0.173061122901295, 0.413469438549352, 
+		0.413469438549352, 0.059082801866017, 0.470458599066991, 
+		0.470458599066991, 0.518892500060958, 0.240553749969521, 
+		0.240553749969521, 0.704068411554854, 0.147965794222573, 
+		0.147965794222573, 0.849069624685052, 0.075465187657474, 
+		0.075465187657474, 0.966807194753950, 0.016596402623025, 
+		0.016596402623025, 0.103575692245252, 0.103575692245252, 
+		0.296555596579887, 0.599868711174861, 0.296555596579887, 
+		0.599868711174861, 0.020083411655416, 0.020083411655416, 
+		0.337723063403079, 0.642193524941505, 0.337723063403079, 
+		0.642193524941505,-0.004341002614139,-0.004341002614139, 
+		0.204748281642812, 0.799592720971327, 0.204748281642812, 
+		0.799592720971327, 0.041941786468010, 0.041941786468010, 
+		0.189358492130623, 0.768699721401368, 0.189358492130623, 
+		0.768699721401368, 0.014317320230681, 0.014317320230681, 
+		0.085283615682657, 0.900399064086661, 0.085283615682657, 
+		0.900399064086661};
+	static IssmPDouble l216[]={
+		0.333333333333333, 0.497380541948438, 0.005238916103123, 
+		0.497380541948438, 0.413469438549352, 0.173061122901295, 
+		0.413469438549352, 0.470458599066991, 0.059082801866017, 
+		0.470458599066991, 0.240553749969521, 0.518892500060958, 
+		0.240553749969521, 0.147965794222573, 0.704068411554854, 
+		0.147965794222573, 0.075465187657474, 0.849069624685052, 
+		0.075465187657474, 0.016596402623025, 0.966807194753950, 
+		0.016596402623025, 0.296555596579887, 0.599868711174861, 
+		0.103575692245252, 0.103575692245252, 0.599868711174861, 
+		0.296555596579887, 0.337723063403079, 0.642193524941505, 
+		0.020083411655416, 0.020083411655416, 0.642193524941505, 
+		0.337723063403079, 0.204748281642812, 0.799592720971327, 
+		-0.004341002614139,-0.004341002614139, 0.799592720971327, 
+		0.204748281642812, 0.189358492130623, 0.768699721401368, 
+		0.041941786468010, 0.041941786468010, 0.768699721401368, 
+		0.189358492130623, 0.085283615682657, 0.900399064086661, 
+		0.014317320230681, 0.014317320230681, 0.900399064086661, 
+		0.085283615682657};
+	static IssmPDouble l316[]={
+		0.333333333333333, 0.497380541948438, 0.497380541948438, 
+		0.005238916103123, 0.413469438549352, 0.413469438549352, 
+		0.173061122901295, 0.470458599066991, 0.470458599066991, 
+		0.059082801866017, 0.240553749969521, 0.240553749969521, 
+		0.518892500060958, 0.147965794222573, 0.147965794222573, 
+		0.704068411554854, 0.075465187657474, 0.075465187657474, 
+		0.849069624685052, 0.016596402623025, 0.016596402623025, 
+		0.966807194753950, 0.599868711174861, 0.296555596579887, 
+		0.599868711174861, 0.296555596579887, 0.103575692245252, 
+		0.103575692245252, 0.642193524941505, 0.337723063403079, 
+		0.642193524941505, 0.337723063403079, 0.020083411655416, 
+		0.020083411655416, 0.799592720971327, 0.204748281642812, 
+		0.799592720971327, 0.204748281642812,-0.004341002614139, 
+		-0.004341002614139, 0.768699721401368, 0.189358492130623, 
+		0.768699721401368, 0.189358492130623, 0.041941786468010, 
+		0.041941786468010, 0.900399064086661, 0.085283615682657, 
+		0.900399064086661, 0.085283615682657, 0.014317320230681, 
+		0.014317320230681};
+	/*}}}*/
+	/*p=17, npoint=61{{{*/
+	static IssmPDouble wgt17[]={
+		0.057914928034477, 0.008822054327014, 0.008822054327014, 
+		0.008822054327014, 0.025410682752829, 0.025410682752829, 
+		0.025410682752829, 0.042176958517489, 0.042176958517489, 
+		0.042176958517489, 0.053879858604088, 0.053879858604088, 
+		0.053879858604088, 0.054138904728481, 0.054138904728481, 
+		0.054138904728481, 0.042981974139367, 0.042981974139367, 
+		0.042981974139367, 0.024345832713105, 0.024345832713105, 
+		0.024345832713105, 0.005533341446715, 0.005533341446715, 
+		0.005533341446715, 0.014063655552443, 0.014063655552443, 
+		0.014063655552443, 0.014063655552443, 0.014063655552443, 
+		0.014063655552443, 0.046428907569036, 0.046428907569036, 
+		0.046428907569036, 0.046428907569036, 0.046428907569036, 
+		0.046428907569036, 0.031973646148520, 0.031973646148520, 
+		0.031973646148520, 0.031973646148520, 0.031973646148520, 
+		0.031973646148520, 0.014682366990538, 0.014682366990538, 
+		0.014682366990538, 0.014682366990538, 0.014682366990538, 
+		0.014682366990538, 0.031684053418215, 0.031684053418215, 
+		0.031684053418215, 0.031684053418215, 0.031684053418215, 
+		0.031684053418215, 0.011545213295771, 0.011545213295771, 
+		0.011545213295771, 0.011545213295771, 0.011545213295771, 
+		0.011545213295771};
+	static IssmPDouble l117[]={
+		0.333333333333333, 0.005658918886452, 0.497170540556774, 
+		0.497170540556774, 0.035647354750751, 0.482176322624625, 
+		0.482176322624625, 0.099520061958437, 0.450239969020782, 
+		0.450239969020782, 0.199467521245206, 0.400266239377397, 
+		0.400266239377397, 0.495717464058095, 0.252141267970953, 
+		0.252141267970953, 0.675905990683077, 0.162047004658461, 
+		0.162047004658461, 0.848248235478508, 0.075875882260746, 
+		0.075875882260746, 0.968690546064356, 0.015654726967822, 
+		0.015654726967822, 0.010186928826919, 0.010186928826919, 
+		0.334319867363658, 0.655493203809423, 0.334319867363658, 
+		0.655493203809423, 0.135440871671036, 0.135440871671036, 
+		0.292221537796944, 0.572337590532020, 0.292221537796944, 
+		0.572337590532020, 0.054423924290583, 0.054423924290583, 
+		0.319574885423190, 0.626001190286228, 0.319574885423190, 
+		0.626001190286228, 0.012868560833637, 0.012868560833637, 
+		0.190704224192292, 0.796427214974071, 0.190704224192292, 
+		0.796427214974071, 0.067165782413524, 0.067165782413524, 
+		0.180483211648746, 0.752351005937729, 0.180483211648746, 
+		0.752351005937729, 0.014663182224828, 0.014663182224828, 
+		0.080711313679564, 0.904625504095608, 0.080711313679564, 
+		0.904625504095608};
+	static IssmPDouble l217[]={
+		0.333333333333333, 0.497170540556774, 0.005658918886452, 
+		0.497170540556774, 0.482176322624625, 0.035647354750751, 
+		0.482176322624625, 0.450239969020782, 0.099520061958437, 
+		0.450239969020782, 0.400266239377397, 0.199467521245206, 
+		0.400266239377397, 0.252141267970953, 0.495717464058095, 
+		0.252141267970953, 0.162047004658461, 0.675905990683077, 
+		0.162047004658461, 0.075875882260746, 0.848248235478508, 
+		0.075875882260746, 0.015654726967822, 0.968690546064356, 
+		0.015654726967822, 0.334319867363658, 0.655493203809423, 
+		0.010186928826919, 0.010186928826919, 0.655493203809423, 
+		0.334319867363658, 0.292221537796944, 0.572337590532020, 
+		0.135440871671036, 0.135440871671036, 0.572337590532020, 
+		0.292221537796944, 0.319574885423190, 0.626001190286228, 
+		0.054423924290583, 0.054423924290583, 0.626001190286228, 
+		0.319574885423190, 0.190704224192292, 0.796427214974071, 
+		0.012868560833637, 0.012868560833637, 0.796427214974071, 
+		0.190704224192292, 0.180483211648746, 0.752351005937729, 
+		0.067165782413524, 0.067165782413524, 0.752351005937729, 
+		0.180483211648746, 0.080711313679564, 0.904625504095608, 
+		0.014663182224828, 0.014663182224828, 0.904625504095608, 
+		0.080711313679564};
+	static IssmPDouble l317[]={
+		0.333333333333333, 0.497170540556774, 0.497170540556774, 
+		0.005658918886452, 0.482176322624625, 0.482176322624625, 
+		0.035647354750751, 0.450239969020782, 0.450239969020782, 
+		0.099520061958437, 0.400266239377397, 0.400266239377397, 
+		0.199467521245206, 0.252141267970953, 0.252141267970953, 
+		0.495717464058095, 0.162047004658461, 0.162047004658461, 
+		0.675905990683077, 0.075875882260746, 0.075875882260746, 
+		0.848248235478508, 0.015654726967822, 0.015654726967822, 
+		0.968690546064356, 0.655493203809423, 0.334319867363658, 
+		0.655493203809423, 0.334319867363658, 0.010186928826919, 
+		0.010186928826919, 0.572337590532020, 0.292221537796944, 
+		0.572337590532020, 0.292221537796944, 0.135440871671036, 
+		0.135440871671036, 0.626001190286228, 0.319574885423190, 
+		0.626001190286228, 0.319574885423190, 0.054423924290583, 
+		0.054423924290583, 0.796427214974071, 0.190704224192292, 
+		0.796427214974071, 0.190704224192292, 0.012868560833637, 
+		0.012868560833637, 0.752351005937729, 0.180483211648746, 
+		0.752351005937729, 0.180483211648746, 0.067165782413524, 
+		0.067165782413524, 0.904625504095608, 0.080711313679564, 
+		0.904625504095608, 0.080711313679564, 0.014663182224828, 
+		0.014663182224828};
+	/*}}}*/
+	/*p=18, npoint=70  {{{*/
+
+	static IssmPDouble wgt18[]={
+		0.053364381350150, 0.015713921277179, 0.015713921277179, 
+		0.015713921277179, 0.032495554156279, 0.032495554156279, 
+		0.032495554156279, 0.033672969465771, 0.033672969465771, 
+		0.033672969465771, 0.048071249104579, 0.048071249104579, 
+		0.048071249104579, 0.055869421169115, 0.055869421169115, 
+		0.055869421169115, 0.043429498443148, 0.043429498443148, 
+		0.043429498443148, 0.026451755176745, 0.026451755176745, 
+		0.026451755176745, 0.011767418126433, 0.011767418126433, 
+		0.011767418126433,-0.003850519950463,-0.003850519950463, 
+		-0.003850519950463, 0.010967196889496, 0.010967196889496, 
+		0.010967196889496, 0.010967196889496, 0.010967196889496, 
+		0.010967196889496, 0.047211440790349, 0.047211440790349, 
+		0.047211440790349, 0.047211440790349, 0.047211440790349, 
+		0.047211440790349, 0.030617090859378, 0.030617090859378, 
+		0.030617090859378, 0.030617090859378, 0.030617090859378, 
+		0.030617090859378, 0.031834201210069, 0.031834201210069, 
+		0.031834201210069, 0.031834201210069, 0.031834201210069, 
+		0.031834201210069, 0.014037809005559, 0.014037809005559, 
+		0.014037809005559, 0.014037809005559, 0.014037809005559, 
+		0.014037809005559, 0.013222699422034, 0.013222699422034, 
+		0.013222699422034, 0.013222699422034, 0.013222699422034, 
+		0.013222699422034, 0.000079999375178, 0.000079999375178, 
+		0.000079999375178, 0.000079999375178, 0.000079999375178, 
+		0.000079999375178};
+	static IssmPDouble l118[]={
+		0.333333333333333, 0.013310382738157, 0.493344808630921, 
+		0.493344808630921, 0.061578811516086, 0.469210594241957, 
+		0.469210594241957, 0.127437208225989, 0.436281395887006, 
+		0.436281395887006, 0.210307658653168, 0.394846170673416, 
+		0.394846170673416, 0.500410862393686, 0.249794568803157, 
+		0.249794568803157, 0.677135612512315, 0.161432193743843, 
+		0.161432193743843, 0.846803545029257, 0.076598227485371, 
+		0.076598227485371, 0.951495121293100, 0.024252439353450, 
+		0.024252439353450, 0.913707265566071, 0.043146367216965, 
+		0.043146367216965, 0.008430536202420, 0.008430536202420, 
+		0.358911494940944, 0.632657968856636, 0.358911494940944, 
+		0.632657968856636, 0.131186551737188, 0.131186551737188, 
+		0.294402476751957, 0.574410971510855, 0.294402476751957, 
+		0.574410971510855, 0.050203151565675, 0.050203151565675, 
+		0.325017801641814, 0.624779046792512, 0.325017801641814, 
+		0.624779046792512, 0.066329263810916, 0.066329263810916, 
+		0.184737559666046, 0.748933176523037, 0.184737559666046, 
+		0.748933176523037, 0.011996194566236, 0.011996194566236, 
+		0.218796800013321, 0.769207005420443, 0.218796800013321, 
+		0.769207005420443, 0.014858100590125, 0.014858100590125, 
+		0.101179597136408, 0.883962302273467, 0.101179597136408, 
+		0.883962302273467,-0.035222015287949,-0.035222015287949, 
+		0.020874755282586, 1.014347260005363, 0.020874755282586, 
+		1.014347260005363};
+	static IssmPDouble l218[]={
+		0.333333333333333, 0.493344808630921, 0.013310382738157, 
+		0.493344808630921, 0.469210594241957, 0.061578811516086, 
+		0.469210594241957, 0.436281395887006, 0.127437208225989, 
+		0.436281395887006, 0.394846170673416, 0.210307658653168, 
+		0.394846170673416, 0.249794568803157, 0.500410862393686, 
+		0.249794568803157, 0.161432193743843, 0.677135612512315, 
+		0.161432193743843, 0.076598227485371, 0.846803545029257, 
+		0.076598227485371, 0.024252439353450, 0.951495121293100, 
+		0.024252439353450, 0.043146367216965, 0.913707265566071, 
+		0.043146367216965, 0.358911494940944, 0.632657968856636, 
+		0.008430536202420, 0.008430536202420, 0.632657968856636, 
+		0.358911494940944, 0.294402476751957, 0.574410971510855, 
+		0.131186551737188, 0.131186551737188, 0.574410971510855, 
+		0.294402476751957, 0.325017801641814, 0.624779046792512, 
+		0.050203151565675, 0.050203151565675, 0.624779046792512, 
+		0.325017801641814, 0.184737559666046, 0.748933176523037, 
+		0.066329263810916, 0.066329263810916, 0.748933176523037, 
+		0.184737559666046, 0.218796800013321, 0.769207005420443, 
+		0.011996194566236, 0.011996194566236, 0.769207005420443, 
+		0.218796800013321, 0.101179597136408, 0.883962302273467, 
+		0.014858100590125, 0.014858100590125, 0.883962302273467, 
+		0.101179597136408, 0.020874755282586, 1.014347260005363, 
+		-0.035222015287949,-0.035222015287949, 1.014347260005363, 
+		0.020874755282586};
+	static IssmPDouble l318[]={
+		0.333333333333333, 0.493344808630921, 0.493344808630921, 
+		0.013310382738157, 0.469210594241957, 0.469210594241957, 
+		0.061578811516086, 0.436281395887006, 0.436281395887006, 
+		0.127437208225989, 0.394846170673416, 0.394846170673416, 
+		0.210307658653168, 0.249794568803157, 0.249794568803157, 
+		0.500410862393686, 0.161432193743843, 0.161432193743843, 
+		0.677135612512315, 0.076598227485371, 0.076598227485371, 
+		0.846803545029257, 0.024252439353450, 0.024252439353450, 
+		0.951495121293100, 0.043146367216965, 0.043146367216965, 
+		0.913707265566071, 0.632657968856636, 0.358911494940944, 
+		0.632657968856636, 0.358911494940944, 0.008430536202420, 
+		0.008430536202420, 0.574410971510855, 0.294402476751957, 
+		0.574410971510855, 0.294402476751957, 0.131186551737188, 
+		0.131186551737188, 0.624779046792512, 0.325017801641814, 
+		0.624779046792512, 0.325017801641814, 0.050203151565675, 
+		0.050203151565675, 0.748933176523037, 0.184737559666046, 
+		0.748933176523037, 0.184737559666046, 0.066329263810916, 
+		0.066329263810916, 0.769207005420443, 0.218796800013321, 
+		0.769207005420443, 0.218796800013321, 0.011996194566236, 
+		0.011996194566236, 0.883962302273467, 0.101179597136408, 
+		0.883962302273467, 0.101179597136408, 0.014858100590125, 
+		0.014858100590125, 1.014347260005363, 0.020874755282586, 
+		1.014347260005363, 0.020874755282586,-0.035222015287949, 
+		-0.035222015287949};
+	/*}}}*/
+	/*p=19, npoint=73  {{{*/
+
+	static IssmPDouble wgt19[]={
+		0.056995437856306, 0.017893352515055, 0.017893352515055, 
+		0.017893352515055, 0.038775849701151, 0.038775849701151, 
+		0.038775849701151, 0.052422467754193, 0.052422467754193, 
+		0.052422467754193, 0.052811905405354, 0.052811905405354, 
+		0.052811905405354, 0.041844983939388, 0.041844983939388, 
+		0.041844983939388, 0.027800807314648, 0.027800807314648, 
+		0.027800807314648, 0.014002903771278, 0.014002903771278, 
+		0.014002903771278, 0.003601560678933, 0.003601560678933, 
+		0.003601560678933, 0.006728804180578, 0.006728804180578, 
+		0.006728804180578, 0.006728804180578, 0.006728804180578, 
+		0.006728804180578, 0.044295745540949, 0.044295745540949, 
+		0.044295745540949, 0.044295745540949, 0.044295745540949, 
+		0.044295745540949, 0.015382176206141, 0.015382176206141, 
+		0.015382176206141, 0.015382176206141, 0.015382176206141, 
+		0.015382176206141, 0.027928534240338, 0.027928534240338, 
+		0.027928534240338, 0.027928534240338, 0.027928534240338, 
+		0.027928534240338, 0.004316169837400, 0.004316169837400, 
+		0.004316169837400, 0.004316169837400, 0.004316169837400, 
+		0.004316169837400, 0.031597525960379, 0.031597525960379, 
+		0.031597525960379, 0.031597525960379, 0.031597525960379, 
+		0.031597525960379, 0.017768353603780, 0.017768353603780, 
+		0.017768353603780, 0.017768353603780, 0.017768353603780, 
+		0.017768353603780, 0.006581669842530, 0.006581669842530, 
+		0.006581669842530, 0.006581669842530, 0.006581669842530, 
+		0.006581669842530};
+	static IssmPDouble l119[]={
+		0.333333333333333, 0.020780025853987, 0.489609987073006, 
+		0.489609987073006, 0.090926214604215, 0.454536892697893, 
+		0.454536892697893, 0.197166638701138, 0.401416680649431, 
+		0.401416680649431, 0.488896691193805, 0.255551654403098, 
+		0.255551654403098, 0.645844115695741, 0.177077942152130, 
+		0.177077942152130, 0.779877893544096, 0.110061053227952, 
+		0.110061053227952, 0.888942751496321, 0.055528624251840, 
+		0.055528624251840, 0.974756272445543, 0.012621863777229, 
+		0.012621863777229, 0.003611417848412, 0.003611417848412, 
+		0.395754787356943, 0.600633794794645, 0.395754787356943, 
+		0.600633794794645, 0.134466754530780, 0.134466754530780, 
+		0.307929983880436, 0.557603261588784, 0.307929983880436, 
+		0.557603261588784, 0.014446025776115, 0.014446025776115, 
+		0.264566948406520, 0.720987025817365, 0.264566948406520, 
+		0.720987025817365, 0.046933578838178, 0.046933578838178, 
+		0.358539352205951, 0.594527068955871, 0.358539352205951, 
+		0.594527068955871, 0.002861120350567, 0.002861120350567, 
+		0.157807405968595, 0.839331473680839, 0.157807405968595, 
+		0.839331473680839, 0.223861424097916, 0.223861424097916, 
+		0.075050596975911, 0.701087978926173, 0.075050596975911, 
+		0.701087978926173, 0.034647074816760, 0.034647074816760, 
+		0.142421601113383, 0.822931324069857, 0.142421601113383, 
+		0.822931324069857, 0.010161119296278, 0.010161119296278, 
+		0.065494628082938, 0.924344252620784, 0.065494628082938, 
+		0.924344252620784};
+	static IssmPDouble l219[]={
+		0.333333333333333, 0.489609987073006, 0.020780025853987, 
+		0.489609987073006, 0.454536892697893, 0.090926214604215, 
+		0.454536892697893, 0.401416680649431, 0.197166638701138, 
+		0.401416680649431, 0.255551654403098, 0.488896691193805, 
+		0.255551654403098, 0.177077942152130, 0.645844115695741, 
+		0.177077942152130, 0.110061053227952, 0.779877893544096, 
+		0.110061053227952, 0.055528624251840, 0.888942751496321, 
+		0.055528624251840, 0.012621863777229, 0.974756272445543, 
+		0.012621863777229, 0.395754787356943, 0.600633794794645, 
+		0.003611417848412, 0.003611417848412, 0.600633794794645, 
+		0.395754787356943, 0.307929983880436, 0.557603261588784, 
+		0.134466754530780, 0.134466754530780, 0.557603261588784, 
+		0.307929983880436, 0.264566948406520, 0.720987025817365, 
+		0.014446025776115, 0.014446025776115, 0.720987025817365, 
+		0.264566948406520, 0.358539352205951, 0.594527068955871, 
+		0.046933578838178, 0.046933578838178, 0.594527068955871, 
+		0.358539352205951, 0.157807405968595, 0.839331473680839, 
+		0.002861120350567, 0.002861120350567, 0.839331473680839, 
+		0.157807405968595, 0.075050596975911, 0.701087978926173, 
+		0.223861424097916, 0.223861424097916, 0.701087978926173, 
+		0.075050596975911, 0.142421601113383, 0.822931324069857, 
+		0.034647074816760, 0.034647074816760, 0.822931324069857, 
+		0.142421601113383, 0.065494628082938, 0.924344252620784, 
+		0.010161119296278, 0.010161119296278, 0.924344252620784, 
+		0.065494628082938};
+	static IssmPDouble l319[]={
+		0.333333333333333, 0.489609987073006, 0.489609987073006, 
+		0.020780025853987, 0.454536892697893, 0.454536892697893, 
+		0.090926214604215, 0.401416680649431, 0.401416680649431, 
+		0.197166638701138, 0.255551654403098, 0.255551654403098, 
+		0.488896691193805, 0.177077942152130, 0.177077942152130, 
+		0.645844115695741, 0.110061053227952, 0.110061053227952, 
+		0.779877893544096, 0.055528624251840, 0.055528624251840, 
+		0.888942751496321, 0.012621863777229, 0.012621863777229, 
+		0.974756272445543, 0.600633794794645, 0.395754787356943, 
+		0.600633794794645, 0.395754787356943, 0.003611417848412, 
+		0.003611417848412, 0.557603261588784, 0.307929983880436, 
+		0.557603261588784, 0.307929983880436, 0.134466754530780, 
+		0.134466754530780, 0.720987025817365, 0.264566948406520, 
+		0.720987025817365, 0.264566948406520, 0.014446025776115, 
+		0.014446025776115, 0.594527068955871, 0.358539352205951, 
+		0.594527068955871, 0.358539352205951, 0.046933578838178, 
+		0.046933578838178, 0.839331473680839, 0.157807405968595, 
+		0.839331473680839, 0.157807405968595, 0.002861120350567, 
+		0.002861120350567, 0.701087978926173, 0.075050596975911, 
+		0.701087978926173, 0.075050596975911, 0.223861424097916, 
+		0.223861424097916, 0.822931324069857, 0.142421601113383, 
+		0.822931324069857, 0.142421601113383, 0.034647074816760, 
+		0.034647074816760, 0.924344252620784, 0.065494628082938, 
+		0.924344252620784, 0.065494628082938, 0.010161119296278, 
+		0.010161119296278};
+	/*}}}*/
+	/*p=20, npoint=79 {{{*/
+	static IssmPDouble wgt20[]={
+		0.057256499746719, 0.001501721280705, 0.001501721280705, 
+		0.001501721280705, 0.020195803723819, 0.020195803723819, 
+		0.020195803723819, 0.039624016090841, 0.039624016090841, 
+		0.039624016090841, 0.052739185030045, 0.052739185030045, 
+		0.052739185030045, 0.053043868444611, 0.053043868444611, 
+		0.053043868444611, 0.042206713977986, 0.042206713977986, 
+		0.042206713977986, 0.027708365070095, 0.027708365070095, 
+		0.027708365070095, 0.013333849876622, 0.013333849876622, 
+		0.013333849876622,-0.001094760895106,-0.001094760895106, 
+		-0.001094760895106, 0.003033053580543, 0.003033053580543, 
+		0.003033053580543, 0.028519670065604, 0.028519670065604, 
+		0.028519670065604, 0.028519670065604, 0.028519670065604, 
+		0.028519670065604, 0.008381451951650, 0.008381451951650, 
+		0.008381451951650, 0.008381451951650, 0.008381451951650, 
+		0.008381451951650, 0.044695409202580, 0.044695409202580, 
+		0.044695409202580, 0.044695409202580, 0.044695409202580, 
+		0.044695409202580, 0.014672360101834, 0.014672360101834, 
+		0.014672360101834, 0.014672360101834, 0.014672360101834, 
+		0.014672360101834, 0.031791643800640, 0.031791643800640, 
+		0.031791643800640, 0.031791643800640, 0.031791643800640, 
+		0.031791643800640, 0.001220064691226, 0.001220064691226, 
+		0.001220064691226, 0.001220064691226, 0.001220064691226, 
+		0.001220064691226, 0.017515684095300, 0.017515684095300, 
+		0.017515684095300, 0.017515684095300, 0.017515684095300, 
+		0.017515684095300, 0.006190192638113, 0.006190192638113, 
+		0.006190192638113, 0.006190192638113, 0.006190192638113, 
+		0.006190192638113};
+	static IssmPDouble l120[]={
+		0.333333333333333,-0.001900928704400, 0.500950464352200, 
+		0.500950464352200, 0.023574084130543, 0.488212957934729, 
+		0.488212957934729, 0.089726636099435, 0.455136681950283, 
+		0.455136681950283, 0.196007481363421, 0.401996259318289, 
+		0.401996259318289, 0.488214180481157, 0.255892909759421, 
+		0.255892909759421, 0.647023488009788, 0.176488255995106, 
+		0.176488255995106, 0.791658289326483, 0.104170855336758, 
+		0.104170855336758, 0.893862072318140, 0.053068963840930, 
+		0.053068963840930, 0.916762569607942, 0.041618715196029, 
+		0.041618715196029, 0.976836157186356, 0.011581921406822, 
+		0.011581921406822, 0.048741583664839, 0.048741583664839, 
+		0.344855770229001, 0.606402646106160, 0.344855770229001, 
+		0.606402646106160, 0.006314115948605, 0.006314115948605, 
+		0.377843269594854, 0.615842614456541, 0.377843269594854, 
+		0.615842614456541, 0.134316520547348, 0.134316520547348, 
+		0.306635479062357, 0.559048000390295, 0.306635479062357, 
+		0.559048000390295, 0.013973893962392, 0.013973893962392, 
+		0.249419362774742, 0.736606743262866, 0.249419362774742, 
+		0.736606743262866, 0.075549132909764, 0.075549132909764, 
+		0.212775724802802, 0.711675142287434, 0.212775724802802, 
+		0.711675142287434,-0.008368153208227,-0.008368153208227, 
+		0.146965436053239, 0.861402717154987, 0.146965436053239, 
+		0.861402717154987, 0.026686063258714, 0.026686063258714, 
+		0.137726978828923, 0.835586957912363, 0.137726978828923, 
+		0.835586957912363, 0.010547719294141, 0.010547719294141, 
+		0.059696109149007, 0.929756171556853, 0.059696109149007, 
+		0.929756171556853};
+	static IssmPDouble l220[]={
+		0.333333333333333, 0.500950464352200,-0.001900928704400, 
+		0.500950464352200, 0.488212957934729, 0.023574084130543, 
+		0.488212957934729, 0.455136681950283, 0.089726636099435, 
+		0.455136681950283, 0.401996259318289, 0.196007481363421, 
+		0.401996259318289, 0.255892909759421, 0.488214180481157, 
+		0.255892909759421, 0.176488255995106, 0.647023488009788, 
+		0.176488255995106, 0.104170855336758, 0.791658289326483, 
+		0.104170855336758, 0.053068963840930, 0.893862072318140, 
+		0.053068963840930, 0.041618715196029, 0.916762569607942, 
+		0.041618715196029, 0.011581921406822, 0.976836157186356, 
+		0.011581921406822, 0.344855770229001, 0.606402646106160, 
+		0.048741583664839, 0.048741583664839, 0.606402646106160, 
+		0.344855770229001, 0.377843269594854, 0.615842614456541, 
+		0.006314115948605, 0.006314115948605, 0.615842614456541, 
+		0.377843269594854, 0.306635479062357, 0.559048000390295, 
+		0.134316520547348, 0.134316520547348, 0.559048000390295, 
+		0.306635479062357, 0.249419362774742, 0.736606743262866, 
+		0.013973893962392, 0.013973893962392, 0.736606743262866, 
+		0.249419362774742, 0.212775724802802, 0.711675142287434, 
+		0.075549132909764, 0.075549132909764, 0.711675142287434, 
+		0.212775724802802, 0.146965436053239, 0.861402717154987, 
+		-0.008368153208227,-0.008368153208227, 0.861402717154987, 
+		0.146965436053239, 0.137726978828923, 0.835586957912363, 
+		0.026686063258714, 0.026686063258714, 0.835586957912363, 
+		0.137726978828923, 0.059696109149007, 0.929756171556853, 
+		0.010547719294141, 0.010547719294141, 0.929756171556853, 
+		0.059696109149007};
+	static IssmPDouble l320[]={
+		0.333333333333333, 0.500950464352200, 0.500950464352200, 
+		-0.001900928704400, 0.488212957934729, 0.488212957934729, 
+		0.023574084130543, 0.455136681950283, 0.455136681950283, 
+		0.089726636099435, 0.401996259318289, 0.401996259318289, 
+		0.196007481363421, 0.255892909759421, 0.255892909759421, 
+		0.488214180481157, 0.176488255995106, 0.176488255995106, 
+		0.647023488009788, 0.104170855336758, 0.104170855336758, 
+		0.791658289326483, 0.053068963840930, 0.053068963840930, 
+		0.893862072318140, 0.041618715196029, 0.041618715196029, 
+		0.916762569607942, 0.011581921406822, 0.011581921406822, 
+		0.976836157186356, 0.606402646106160, 0.344855770229001, 
+		0.606402646106160, 0.344855770229001, 0.048741583664839, 
+		0.048741583664839, 0.615842614456541, 0.377843269594854, 
+		0.615842614456541, 0.377843269594854, 0.006314115948605, 
+		0.006314115948605, 0.559048000390295, 0.306635479062357, 
+		0.559048000390295, 0.306635479062357, 0.134316520547348, 
+		0.134316520547348, 0.736606743262866, 0.249419362774742, 
+		0.736606743262866, 0.249419362774742, 0.013973893962392, 
+		0.013973893962392, 0.711675142287434, 0.212775724802802, 
+		0.711675142287434, 0.212775724802802, 0.075549132909764, 
+		0.075549132909764, 0.861402717154987, 0.146965436053239, 
+		0.861402717154987, 0.146965436053239,-0.008368153208227, 
+		-0.008368153208227, 0.835586957912363, 0.137726978828923, 
+		0.835586957912363, 0.137726978828923, 0.026686063258714, 
+		0.026686063258714, 0.929756171556853, 0.059696109149007, 
+		0.929756171556853, 0.059696109149007, 0.010547719294141, 
+		0.010547719294141};
+	/*}}}*/
+
+	static IssmPDouble* wgtp[MAX_TRIA_SYM_ORD]={
+		wgt1 ,wgt2 ,wgt3 ,wgt4 ,wgt5 ,
+		wgt6 ,wgt7 ,wgt8 ,wgt9 ,wgt10,
+		wgt11,wgt12,wgt13,wgt14,wgt15,
+		wgt16,wgt17,wgt18,wgt19,wgt20};
+	static IssmPDouble* l1p [MAX_TRIA_SYM_ORD]={
+		l11  ,l12  ,l13  ,l14  ,l15  ,
+		l16  ,l17  ,l18  ,l19  ,l110 ,
+		l111 ,l112 ,l113 ,l114 ,l115 ,
+		l116 ,l117 ,l118 ,l119 ,l120 };
+	static IssmPDouble* l2p [MAX_TRIA_SYM_ORD]={
+		l21  ,l22  ,l23  ,l24  ,l25  ,
+		l26  ,l27  ,l28  ,l29  ,l210 ,
+		l211 ,l212 ,l213 ,l214 ,l215 ,
+		l216 ,l217 ,l218 ,l219 ,l220 };
+	static IssmPDouble* l3p [MAX_TRIA_SYM_ORD]={
+		l31  ,l32  ,l33  ,l34  ,l35  ,
+		l36  ,l37  ,l38  ,l39  ,l310 ,
+		l311 ,l312 ,l313 ,l314 ,l315 ,
+		l316 ,l317 ,l318 ,l319 ,l320 };
+
+	static int np[MAX_TRIA_SYM_ORD]={sizeof(wgt1 )/sizeof(IssmPDouble),
+		sizeof(wgt2 )/sizeof(IssmPDouble),
+		sizeof(wgt3 )/sizeof(IssmPDouble),
+		sizeof(wgt4 )/sizeof(IssmPDouble),
+		sizeof(wgt5 )/sizeof(IssmPDouble),
+		sizeof(wgt6 )/sizeof(IssmPDouble),
+		sizeof(wgt7 )/sizeof(IssmPDouble),
+		sizeof(wgt8 )/sizeof(IssmPDouble),
+		sizeof(wgt9 )/sizeof(IssmPDouble),
+		sizeof(wgt10)/sizeof(IssmPDouble),
+		sizeof(wgt11)/sizeof(IssmPDouble),
+		sizeof(wgt12)/sizeof(IssmPDouble),
+		sizeof(wgt13)/sizeof(IssmPDouble),
+		sizeof(wgt14)/sizeof(IssmPDouble),
+		sizeof(wgt15)/sizeof(IssmPDouble),
+		sizeof(wgt16)/sizeof(IssmPDouble),
+		sizeof(wgt17)/sizeof(IssmPDouble),
+		sizeof(wgt18)/sizeof(IssmPDouble),
+		sizeof(wgt19)/sizeof(IssmPDouble),
+		sizeof(wgt20)/sizeof(IssmPDouble)};
+
+	//	_printf0_("GaussLegendreTria: iord=" << iord << "\n");
+
+	/*  check to see if Gauss points need to be calculated  */
+	if (iord <= MAX_TRIA_SYM_ORD) {
+
+		/*  copy the points from the static arrays (noting that the pointers
+			 could be returned directly, but then the calling function would
+			 have to know to not free them)  */
+
+		*pngaus=np[iord-1];
+
+		*pl1  =xNew<IssmDouble>(*pngaus);
+		*pl2  =xNew<IssmDouble>(*pngaus);
+		*pl3  =xNew<IssmDouble>(*pngaus);
+		*pwgt =xNew<IssmDouble>(*pngaus);
+
+		for (i=0; i<*pngaus; i++) {
+			(*pl1 )[i]=l1p [iord-1][i];
+			(*pl2 )[i]=l2p [iord-1][i];
+			(*pl3 )[i]=l3p [iord-1][i];
+			(*pwgt)[i]=wgtp[iord-1][i];
+		}
+	}
+	else {
+
+		/*  calculate the Gauss points from the collapsed quadrilateral  */
+		nigaus =iord/2+1;
+		*pngaus=nigaus*nigaus;
+
+		*pl1  =xNew<IssmDouble>(*pngaus);
+		*pl2  =xNew<IssmDouble>(*pngaus);
+		*pl3  =xNew<IssmDouble>(*pngaus);
+		*pwgt =xNew<IssmDouble>(*pngaus);
+
+		/*  get the gauss points in each direction  */
+		GaussLegendreLinear(&xgaus, &xwgt, nigaus);
+
+		egaus=xgaus;
+		ewgt =xwgt;
+
+		/*  collapse the gauss points into the triangle and transform into
+			 area coordinates  */
+		ipt=0;
+		for (j=0; j<nigaus; j++) {
+			for (i=0; i<nigaus; i++) {
+				xi        =      1./2.*(1.-egaus[j])*xgaus[i];
+				eta       =SQRT3/2.*(1.+egaus[j]);
+				(*pwgt)[ipt]=xwgt[i]*ewgt[j]*(SQRT3/4.*(1.-egaus[j]));
+
+				(*pl1 )[ipt]=(1.-xi-eta/SQRT3)/2.;
+				(*pl2 )[ipt]=(1.+xi-eta/SQRT3)/2.;
+				(*pl3 )[ipt]=       eta/SQRT3;
+
+				ipt++;
+			}
+		}
+		xDelete<IssmPDouble>(xwgt );
+		xDelete<IssmPDouble>(xgaus);
+	}
+
+	//	_printf0_("GaussLegendreTria - ngaus=" << *pngaus << "\n");
+	//	for (i=0; i<*pngaus; i++)
+	//		_printf0_("i=" << i << ": l1gaus=" << (*pl1 )[i] << ",l2gaus=" << (*pl2 )[i] << ",l3gaus=" << (*pl3 )[i]<< ",wgt=" << (*pwgt)[i]<< "\n\n");
+
+	return;
+}/*}}}*/
+void GaussLegendreTetra( int* pngaus, IssmDouble** pl1, IssmDouble** pl2, IssmDouble** pl3, IssmDouble** pl4, IssmDouble** pwgt, int iord ) {/*{{{*/
+	/* Gauss quadrature points for the tetrahedron.
+
+		p=2-3 points from Y. Jinyun, "Symmetric Gaussian Quadrature
+		Formulae for Tetrahedronal Regions", Computer Methods in Applied
+		Mechanics and Engineering, Vol. 43, pp. 349-353 (1984).
+
+		p=4-6 points from P. Keast, "Moderate-Degree Tetrahedral
+		Quadrature Formulas", Computer Methods in Applied Mechanics and
+		Engineering, Vol. 55, pp. 339-348 (1986).*/
+	_assert_(iord>0);
+
+	/*Intermediaries*/
+	int i,j,k,ipt,nigaus;
+	IssmPDouble xi,eta,zeta;
+	IssmPDouble *xgaus=NULL,*xwgt=NULL,*egaus,*ewgt,*zgaus,*zwgt;
+
+	/*Hardcoded Gauss points definition*/
+	/*p= 1, npoint= 1  {{{*/
+	static IssmPDouble wgt1[]={
+		1.000000000000000};
+	static IssmPDouble l11[]={
+		0.250000000000000};
+	static IssmPDouble l21[]={
+		0.250000000000000};
+	static IssmPDouble l31[]={
+		0.250000000000000};
+	static IssmPDouble l41[]={
+		0.250000000000000};
+	/*}}}*/
+	/*p= 2, npoint= 4  {{{*/
+
+	static IssmPDouble wgt2[]={
+		0.250000000000000, 0.250000000000000, 0.250000000000000,
+		0.250000000000000};
+	static IssmPDouble l12[]={
+		0.585410196624969, 0.138196601125011, 0.138196601125011,
+		0.138196601125011};
+	static IssmPDouble l22[]={
+		0.138196601125011, 0.585410196624969, 0.138196601125011,
+		0.138196601125011};
+	static IssmPDouble l32[]={
+		0.138196601125011, 0.138196601125011, 0.585410196624969,
+		0.138196601125011};
+	static IssmPDouble l42[]={
+		0.138196601125011, 0.138196601125011, 0.138196601125011,
+		0.585410196624969};
+	/*}}}*/
+	/*p= 3, npoint= 5  {{{*/
+	static IssmPDouble wgt3[]={
+		-0.800000000000000, 0.450000000000000, 0.450000000000000, 
+		0.450000000000000, 0.450000000000000};
+	static IssmPDouble l13[]={
+		0.250000000000000, 0.500000000000000, 0.166666666666667, 
+		0.166666666666667, 0.166666666666667};
+	static IssmPDouble l23[]={
+		0.250000000000000, 0.166666666666667, 0.500000000000000, 
+		0.166666666666667, 0.166666666666667};
+	static IssmPDouble l33[]={
+		0.250000000000000, 0.166666666666667, 0.166666666666667, 
+		0.500000000000000, 0.166666666666667};
+	static IssmPDouble l43[]={
+		0.250000000000000, 0.166666666666667, 0.166666666666667, 
+		0.166666666666667, 0.500000000000000};
+	/*}}}*/
+	/*p= 4, npoint=11  {{{*/
+
+	static IssmPDouble wgt4[]={
+		-0.013155555555556, 0.007622222222222, 0.007622222222222, 
+		0.007622222222222, 0.007622222222222, 0.024888888888889,
+		0.024888888888889, 0.024888888888889, 0.024888888888889, 
+		0.024888888888889, 0.024888888888889};
+	static IssmPDouble l14[]={
+		0.250000000000000, 0.785714285714286, 0.071428571428571, 
+		0.071428571428571, 0.071428571428571, 0.399403576166799,
+		0.399403576166799, 0.399403576166799, 0.100596423833201, 
+		0.100596423833201, 0.100596423833201};
+	static IssmPDouble l24[]={
+		0.250000000000000, 0.071428571428571, 0.785714285714286, 
+		0.071428571428571, 0.071428571428571, 0.399403576166799,
+		0.100596423833201, 0.100596423833201, 0.399403576166799, 
+		0.399403576166799, 0.100596423833201};
+	static IssmPDouble l34[]={
+		0.250000000000000, 0.071428571428571, 0.071428571428571, 
+		0.785714285714286, 0.071428571428571, 0.100596423833201, 
+		0.399403576166799, 0.100596423833201, 0.399403576166799,
+		0.100596423833201, 0.399403576166799};
+	static IssmPDouble l44[]={
+		0.250000000000000, 0.071428571428571, 0.071428571428571, 
+		0.071428571428571, 0.785714285714286, 0.100596423833201, 
+		0.100596423833201, 0.399403576166799, 0.100596423833201,
+		0.399403576166799, 0.399403576166799};
+	/*}}}*/
+	/*p= 5, npoint=15  {{{*/
+
+	static IssmPDouble wgt5[]={
+		0.030283678097089, 0.006026785714286, 0.006026785714286, 
+		0.006026785714286, 0.006026785714286, 0.011645249086029, 
+		0.011645249086029, 0.011645249086029, 0.011645249086029,
+		0.010949141561386, 0.010949141561386, 0.010949141561386,
+		0.010949141561386, 0.010949141561386, 0.010949141561386};
+	static IssmPDouble l15[]={
+		0.250000000000000, 0.000000000000000, 0.333333333333333, 
+		0.333333333333333, 0.333333333333333, 0.727272727272727, 
+		0.090909090909091, 0.090909090909091, 0.090909090909091, 
+		0.066550153573664, 0.066550153573664, 0.066550153573664, 
+		0.433449846426336, 0.433449846426336, 0.433449846426336};
+	static IssmPDouble l25[]={
+		0.250000000000000, 0.333333333333333, 0.000000000000000, 
+		0.333333333333333, 0.333333333333333, 0.090909090909091, 
+		0.727272727272727, 0.090909090909091, 0.090909090909091, 
+		0.066550153573664, 0.433449846426336, 0.433449846426336, 
+		0.066550153573664, 0.066550153573664, 0.433449846426336};
+	static IssmPDouble l35[]={
+		0.250000000000000, 0.333333333333333, 0.333333333333333, 
+		0.000000000000000, 0.333333333333333, 0.090909090909091, 
+		0.090909090909091, 0.727272727272727, 0.090909090909091, 
+		0.433449846426336, 0.066550153573664, 0.433449846426336, 
+		0.066550153573664, 0.433449846426336, 0.066550153573664};
+	static IssmPDouble l45[]={
+		0.250000000000000, 0.333333333333333, 0.333333333333333, 
+		0.333333333333333, 0.000000000000000, 0.090909090909091, 
+		0.090909090909091, 0.090909090909091, 0.727272727272727, 
+		0.433449846426336, 0.433449846426336, 0.066550153573664, 
+		0.433449846426336, 0.066550153573664, 0.066550153573664};
+	/*}}}*/
+	/*p= 6, npoint=24  {{{*/
+
+	static IssmPDouble wgt6[]={
+		0.006653791709695, 0.006653791709695, 0.006653791709695, 
+		0.006653791709695, 0.001679535175887, 0.001679535175887, 
+		0.001679535175887, 0.001679535175887, 0.009226196923942, 
+		0.009226196923942, 0.009226196923942, 0.009226196923942,
+		0.008035714285714, 0.008035714285714, 0.008035714285714, 
+		0.008035714285714, 0.008035714285714, 0.008035714285714, 
+		0.008035714285714, 0.008035714285714, 0.008035714285714, 
+		0.008035714285714, 0.008035714285714, 0.008035714285714};
+	static IssmPDouble l16[]={
+		0.356191386222545, 0.214602871259152, 0.214602871259152, 
+		0.214602871259152, 0.877978124396166, 0.040673958534611, 
+		0.040673958534611, 0.040673958534611, 0.032986329573173, 
+		0.322337890142276, 0.322337890142276, 0.322337890142276,
+
+		0.063661001875018, 0.063661001875018, 0.063661001875018, 
+		0.063661001875018, 0.063661001875018, 0.063661001875018, 
+		0.269672331458316, 0.603005664791649, 0.269672331458316, 
+		0.603005664791649, 0.269672331458316, 0.603005664791649};
+	static IssmPDouble l26[]={
+		0.214602871259152, 0.356191386222545, 0.214602871259152, 
+		0.214602871259152, 0.040673958534611, 0.877978124396166, 
+		0.040673958534611, 0.040673958534611, 0.322337890142276, 
+		0.032986329573173, 0.322337890142276, 0.322337890142276,
+
+		0.063661001875018, 0.063661001875018, 0.269672331458316, 
+		0.603005664791649, 0.269672331458316, 0.603005664791649, 
+		0.063661001875018, 0.063661001875018, 0.063661001875018, 
+		0.063661001875018, 0.603005664791649, 0.269672331458316};
+	static IssmPDouble l36[]={
+		0.214602871259152, 0.214602871259152, 0.356191386222545, 
+		0.214602871259152, 0.040673958534611, 0.040673958534611, 
+		0.877978124396166, 0.040673958534611, 0.322337890142276, 
+		0.322337890142276, 0.032986329573173, 0.322337890142276,
+
+		0.269672331458316, 0.603005664791649, 0.063661001875018, 
+		0.063661001875018, 0.603005664791649, 0.269672331458316, 
+		0.063661001875018, 0.063661001875018, 0.603005664791649, 
+		0.269672331458316, 0.063661001875018, 0.063661001875018};
+	static IssmPDouble l46[]={
+		0.214602871259152, 0.214602871259152, 0.214602871259152, 
+		0.356191386222545, 0.040673958534611, 0.040673958534611, 
+		0.040673958534611, 0.877978124396166, 0.322337890142276, 
+		0.322337890142276, 0.322337890142276, 0.032986329573173,
+
+		0.603005664791649, 0.269672331458316, 0.603005664791649, 
+		0.269672331458316, 0.063661001875018, 0.063661001875018, 
+		0.603005664791649, 0.269672331458316, 0.063661001875018, 
+		0.063661001875018, 0.063661001875018, 0.063661001875018};
+	/*}}}*/
+
+	static IssmPDouble* wgtp[MAX_TETRA_SYM_ORD]={wgt1,wgt2,wgt3,wgt4,wgt5,wgt6};
+	static IssmPDouble* l1p [MAX_TETRA_SYM_ORD]={l11 ,l12 ,l13 ,l14 ,l15 ,l16 };
+	static IssmPDouble* l2p [MAX_TETRA_SYM_ORD]={l21 ,l22 ,l23 ,l24 ,l25 ,l26 };
+	static IssmPDouble* l3p [MAX_TETRA_SYM_ORD]={l31 ,l32 ,l33 ,l34 ,l35 ,l36 };
+	static IssmPDouble* l4p [MAX_TETRA_SYM_ORD]={l41 ,l42 ,l43 ,l44 ,l45 ,l46 };
+
+	static int np[MAX_TETRA_SYM_ORD]={sizeof(wgt1 )/sizeof(IssmPDouble),
+		sizeof(wgt2 )/sizeof(IssmPDouble),
+		sizeof(wgt3 )/sizeof(IssmPDouble),
+		sizeof(wgt4 )/sizeof(IssmPDouble),
+		sizeof(wgt5 )/sizeof(IssmPDouble),
+		sizeof(wgt6 )/sizeof(IssmPDouble)};
+
+	//	_printf0_("GaussLegendreTetra: iord=" << iord << "\n");
+
+	/*  check to see if Gauss points need to be calculated  */
+	if (iord <= MAX_TETRA_SYM_ORD) {
+
+		/*  copy the points from the static arrays (noting that the pointers
+			 could be returned directly, but then the calling function would
+			 have to know to not free them), and multiply the weights by the
+			 volume of the parametric tetrahedron  */
+
+		*pngaus=np[iord-1];
+
+		*pl1  =xNew<IssmDouble>(*pngaus);
+		*pl2  =xNew<IssmDouble>(*pngaus);
+		*pl3  =xNew<IssmDouble>(*pngaus);
+		*pl4  =xNew<IssmDouble>(*pngaus);
+		*pwgt =xNew<IssmDouble>(*pngaus);
+
+		for (i=0; i<*pngaus; i++) {
+			(*pl1 )[i]=l1p [iord-1][i];
+			(*pl2 )[i]=l2p [iord-1][i];
+			(*pl3 )[i]=l3p [iord-1][i];
+			(*pl4 )[i]=l4p [iord-1][i];
+			(*pwgt)[i]=wgtp[iord-1][i];
+		}
+	}
+	else {
+
+		/*  calculate the Gauss points from the collapsed hexahedron  */
+		nigaus =iord/2+1;
+		*pngaus=nigaus*nigaus*nigaus;
+
+		*pl1  =xNew<IssmDouble>(*pngaus);
+		*pl2  =xNew<IssmDouble>(*pngaus);
+		*pl3  =xNew<IssmDouble>(*pngaus);
+		*pl4  =xNew<IssmDouble>(*pngaus);
+		*pwgt =xNew<IssmDouble>(*pngaus);
+
+		/*  get the gauss points in each direction  */
+		GaussLegendreLinear(&xgaus, &xwgt, nigaus);
+
+		egaus=xgaus;
+		ewgt =xwgt;
+		zgaus=xgaus;
+		zwgt =xwgt;
+
+		/*  collapse the gauss points into the tetrahedron and transform into
+			 volume coordinates  */
+		ipt=0;
+		for (k=0; k<nigaus; k++) {
+			for (j=0; j<nigaus; j++) {
+				for (i=0; i<nigaus; i++) {
+					xi        =1./4.*(1.-egaus[j])*(1.-zgaus[k])*xgaus[i];
+					eta       =1./4./SQRT3
+					  *(5.+3.*egaus[j]-zgaus[k]-3.*egaus[j]*zgaus[k]);
+					zeta      =sqrt(2./3.)*(1.+zgaus[k]);
+					(*pwgt)[ipt]=xwgt[i]*ewgt[j]*zwgt[k]*(SQRT2/16.*(1.-egaus[j])*pow(1.-zgaus[k],2));
+
+					(*pl1 )[ipt]=(1.-xi-eta/SQRT3-zeta/sqrt(6.))/2.;
+					(*pl2 )[ipt]=(1.+xi-eta/SQRT3-zeta/sqrt(6.))/2.;
+					(*pl3 )[ipt]=(      eta         -zeta/sqrt(8.))/SQRT3;
+					(*pl4 )[ipt]=(                   zeta/sqrt(8.))*SQRT3;
+
+					ipt++;
+				}
+			}
+		}
+		xDelete<IssmPDouble>(xwgt );
+		xDelete<IssmPDouble>(xgaus);
+	}
+}/*}}}*/
+void GaussLobatto( IssmPDouble** pxgaus, IssmPDouble** pxwgt, int ngaus ) {/*{{{*/
+	/*Gauss-Lobatto quadrature points.
+
+	  The recurrence coefficients for Legendre polynomials on (-1,1)
+	  are defined (from the ORTHPOL subroutine RECUR with ipoly=1) as:
+
+	  alpha(i)=0.
+	  beta (i)=1./(4.-1./(i-1)^2))
+
+	  and then modified for the Gauss-Lobatto quadrature rule on (-1,1)
+	  (from the ORTHPOL subroutine LOB).
+
+	  For degree p, the required number of Gauss-Lobatto points is
+	  n>=(p+1)/2+1 (one more than Gauss-Legendre).*/
+	_assert_(ngaus>0);
+
+	int i;
+	IssmPDouble *alpha,*beta;
+	IssmPDouble left=-1.,right= 1.;
+	IssmPDouble p0l=0.,p0r=0.,p1l=1.,p1r=1.,pm1l,pm1r,det;
+
+	/*p= 1, npoint= 1 (Gauss-Legendre)*/
+	static IssmPDouble wgt1[]={2.000000000000000};
+	static IssmPDouble xi1[]={0.000000000000000};
+
+	/*p= 1, npoint= 2*/
+	static IssmPDouble wgt2[]={1.000000000000000, 1.000000000000000};
+	static IssmPDouble xi2[]={-1.000000000000000, 1.000000000000000};
+
+	/*p= 3, npoint= 3*/
+	static IssmPDouble wgt3[]={0.333333333333333, 1.333333333333333, 0.333333333333333};
+	static IssmPDouble xi3[]={-1.000000000000000, 0.000000000000000, 1.000000000000000};
+
+	/*p= 5, npoint= 4*/
+	static IssmPDouble wgt4[]={0.166666666666667, 0.833333333333333, 0.833333333333333, 0.166666666666667};
+	static IssmPDouble xi4[]={-1.000000000000000,-0.447213595499958, 0.447213595499958, 1.000000000000000};
+
+	/*p= 7, npoint= 5*/
+	static IssmPDouble wgt5[]={0.100000000000000, 0.544444444444444, 0.711111111111111, 0.544444444444444, 0.100000000000000};
+	static IssmPDouble xi5[]={-1.000000000000000,-0.654653670707977, 0.000000000000000, 0.654653670707977, 1.000000000000000};
+
+	static IssmPDouble* wgtp[MAX_LINE_GLOB_PTS]={wgt1 ,wgt2 ,wgt3 ,wgt4 ,wgt5 };
+	static IssmPDouble* xip [MAX_LINE_GLOB_PTS]={xi1  ,xi2  ,xi3  ,xi4  ,xi5  };
+
+	*pxgaus =xNew<IssmPDouble>(ngaus);
+	*pxwgt  =xNew<IssmPDouble>(ngaus);
+
+	/*  check to see if Gauss points need to be calculated  */
+	if (ngaus <= MAX_LINE_GLOB_PTS) {
+
+		/*  copy the points from the static arrays (noting that the pointers
+			 could be returned directly, but then the calling function would
+			 have to know to not free them)  */
+		for (i=0; i<ngaus; i++) {
+			(*pxgaus)[i]=xip [ngaus-1][i];
+			(*pxwgt )[i]=wgtp[ngaus-1][i];
+		}
+	}
+	else {
+
+		/*  calculate the Gauss points using recurrence relations  */
+		alpha=xNew<IssmPDouble>(ngaus);
+		beta =xNew<IssmPDouble>(ngaus);
+
+		/*  calculate the Legendre recurrence coefficients  */
+		alpha[0]=0.;
+		beta [0]=2.;
+
+		for (i=1; i<ngaus; i++) {
+			alpha[i]=0.;
+			beta [i]=1./(4.-1./(i*i));
+		}
+
+		/*  calculate the Gauss-Lobatto quadrature formula  */
+		for (i=0; i<ngaus-1; i++) {
+			pm1l=p0l;
+			p0l=p1l;
+			pm1r=p0r;
+			p0r=p1r;
+			p1l=(left -alpha[i])*p0l-beta[i]*pm1l;
+			p1r=(right-alpha[i])*p0r-beta[i]*pm1r;
+		}
+
+		/*  Normalize system to prevent underflow:
+			 [ p1l p0l ]{ a } = {left *p1l}
+			 [ p1r p0r ]{ b }   {right*p1r}
+			 dividing by p1l in the first equation and p1r in the second.  */
+
+		//		det=p1l*p0r-p1r*p0l;
+		det=p0r/p1r-p0l/p1l;
+		//		alpha[ngaus-1]=(left*p1l*p0r-right*p1r*p0l)/det;
+		//		beta [ngaus-1]=(right-left)*p1l*p1r/det;
+		alpha[ngaus-1]=(left *(p0r/p1r)-right*(p0l/p1l))/det;
+		beta [ngaus-1]=(right          -left           )/det;
+
+		/*  calculate the Gauss points  */
+		GaussRecur(*pxgaus, *pxwgt, ngaus, alpha, beta );
+		xDelete<IssmPDouble>(beta );
+		xDelete<IssmPDouble>(alpha);
+	}
+
+}/*}}}*/
+void GaussRecur( IssmPDouble* zero, IssmPDouble* weight, int n, IssmPDouble* alpha, IssmPDouble* beta ) {/*{{{*/
+	/*Gauss quadrature points from recursion coefficients.
+	 *
+	 *The routine uses the algorithm from the ORTHPOL routine GAUSS, which
+	 *finds the eigenvalues of a tridiagonal matrix.*/
+
+	/*Intermediaries*/
+	int i,j,k,l,m,ii,mml,iter;
+	IssmPDouble p,g,r,s,c,f,b;
+	IssmPDouble* work;
+
+	if (n==1){
+		zero[0]  =alpha[0];
+		weight[0]=beta[0];
+		return;
+	}
+
+	work=xNew<IssmPDouble>(n);
+
+	zero[0]  =alpha[0];
+	weight[0]=1.;
+	work[n-1]=0.;
+	for (i=1; i<=n-1; i++){
+		zero[i]=alpha[i];
+		work[i-1]=sqrt(beta[i]);
+		weight[i]=0;
+	}
+
+	for (l=0; l<=n-1; l++){
+		iter=0;
+		do {
+
+			/*  Look for a small subdiagonal element.  */
+			for (m=l; m<=n-1; m++) {
+				if (m == n-1) break;
+				if (fabs(work[m])
+							<= DBL_EPSILON*(fabs(zero[m])+fabs(zero[m+1])))
+				 break;
+			}
+			p=zero[l];
+			if (m==l) break;
+			++iter;
+
+			/*  Form shift.  */
+			g=(zero[l+1]-p)/(2.*work[l]);
+			r=sqrt(g*g+1.);
+			//			g=zero[m]-p+work[l]/(g+FortranSign(r,g));
+			g=zero[m]-p+work[l]/(g+(g>=0 ? fabs(r) : -fabs(r)));
+			s=1.;
+			c=1.;
+			p=0.;
+			mml=m-l;
+
+			/*  For i=m-1 step -1 until l do ...  */
+			for (ii=1; ii<=mml; ii++) {
+				i=m-ii;
+				f=s*work[i];
+				b=c*work[i];
+				if (fabs(f) >= fabs(g)) {
+					c=g/f;
+					r=sqrt(c*c+1.);
+					work[i+1]=f*r;
+					s=1./r;
+					c*=s;
+				}
+				else {
+					s=f/g;
+					r=sqrt(s*s+1.);
+					work[i+1]=g*r;
+					c=1./r;
+					s*=c;
+				}
+				g=zero[i+1]-p;
+				r=(zero[i]-g)*s+2.*c*b;
+				p=s*r;
+				zero[i+1]=g+p;
+				g=c*r-b;
+
+				/*  Form first component of vector.  */
+				f=weight[i+1];
+				weight[i+1]=s*weight[i]+c*f;
+				weight[i  ]=c*weight[i]-s*f;
+			}
+			zero[l]-=p;
+			work[l]=g;
+			work[m]=0.;
+		} while (iter < MAX_GAUS_ITER);
+		if (iter >= MAX_GAUS_ITER) {
+			xDelete<IssmPDouble>(work);
+			_error_("Max iterations exceeded for l=" << MAX_GAUS_ITER);
+		}
+	}
+
+	/*  Order eigenvalues and eigenvectors.  */
+	for (i=0;i<n-1;i++) {
+		k=i;
+		p=zero[i];
+		for (j=i+1;j<n;j++){
+			if (zero[j] < p){
+				k=j;
+				p=zero[j];
+			}
+		}
+		if (k > i){
+			p=zero[i];
+			zero[i]=zero[k];
+			zero[k]=p;
+			p=weight[i];
+			weight[i]=weight[k];
+			weight[k]=p;
+		}
+	}
+	for (i=0;i<n;i++){
+		weight[i]=beta[0]*weight[i]*weight[i];
+	}
+
+	/*Cleanup*/
+	xDelete<IssmPDouble>(work);
+
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/GaussPoints.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/GaussPoints.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/GaussPoints.h	(revision 27955)
@@ -0,0 +1,20 @@
+/*!\file:  GaussPoints.h
+ * \brief
+ */ 
+
+#include "../../shared/Numerics/types.h"
+#ifndef _GAUSSPOINTS_H
+#define _GAUSSPOINTS_H
+
+#define MAX_LINE_GAUS_PTS    7
+void GaussLegendreLinear(IssmPDouble** pxgaus, IssmPDouble** pxwgt, int ngaus);
+#define MAX_TRIA_SYM_ORD    20
+void GaussLegendreTria(int* pngaus, IssmDouble** pl1, IssmDouble** pl2, IssmDouble** pl3, IssmDouble** pwgt, int iord);
+#define MAX_TETRA_SYM_ORD    6
+void GaussLegendreTetra(int* pngaus, IssmDouble** pl1, IssmDouble** pl2, IssmDouble** pl3, IssmDouble** pl4, IssmDouble** pwgt, int iord);
+#define MAX_LINE_GLOB_PTS    5
+void GaussLobatto(IssmPDouble** pxgaus, IssmPDouble** pxwgt, int ngaus);
+#define MAX_GAUS_ITER   30
+void GaussRecur(IssmPDouble* zero, IssmPDouble* weight, int n, IssmPDouble* alpha, IssmPDouble* beta);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/NewtonSolveDnorm.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/NewtonSolveDnorm.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/NewtonSolveDnorm.cpp	(revision 27955)
@@ -0,0 +1,53 @@
+#include <math.h>
+#include "./types.h"
+#include "../Exceptions/exceptions.h"
+
+int NewtonSolveDnorm(IssmDouble* pdnorm,IssmDouble c1,IssmDouble c2,IssmDouble c3,IssmDouble n,IssmDouble dnorm){
+	/* solve the following equation using Newton-Raphson
+	 *
+	 *   c1*x^(s-1) + c2*x = c3
+	 *
+	 *   s = (1+n)/n
+	 *
+	 *   we solve y = 10^x:
+	 */
+
+	/*trivial solution*/
+	if(c3==0.){
+		*pdnorm = 0.;
+		return 0;
+	}
+
+	/*Intermediaries*/
+	int        counter = 0;
+	IssmDouble s = (1.+n)/n;
+	IssmDouble y2;
+	IssmDouble threshold = 1.e-12;
+
+	/*Initial guess*/
+	_assert_(dnorm>0.); 
+	IssmDouble y1 = log10(dnorm);
+
+	while(true){
+
+		/*Newton step*/
+		y2 = y1 - (c1*pow(pow(10.,y1),s-1.) + c2*pow(10.,y1) - c3)/((s-1)*c1*log(10.)*pow(pow(10.,y1),s-1.) + c2*log(10.)*pow(10.,y1));
+
+		if( fabs(y2-y1)/(fabs(y2))<threshold ){
+			break;
+		}
+		else{
+			y1=y2;
+			counter++;
+		}
+
+		if(counter>50) break;
+	}
+
+	/*Avoid extremely large values that indicate non convergence*/
+	if(y2>50.) y2 = 50;
+
+	/*Assign output pointer*/
+	*pdnorm = pow(10.,y2);
+	return 0;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/ODE1.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/ODE1.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/ODE1.cpp	(revision 27955)
@@ -0,0 +1,23 @@
+#include <math.h>
+#include "./types.h"
+#include "../Exceptions/exceptions.h"
+
+IssmDouble ODE1(IssmDouble alpha,IssmDouble beta,IssmDouble Si, IssmDouble dt,int method){
+	/* solve the following equation:
+	 *
+	 *   dS/dt = alpha S + beta
+	 *
+	 *   method 0: Forward Euler (explicit)
+	 *   method 1: backward Euler (implicit)
+	 *   method 2: Crank Nicolson
+	 *
+	 *   return S^{i+1} based on  Si, dt, alpha and beta
+	 */
+
+	switch(method){
+		case 0: return Si*(1.+alpha*dt) + beta*dt;
+		case 1: return (Si+beta*dt)/(1.-alpha*dt);
+		case 2: return (Si*(1.+alpha*dt/2.) + beta*dt)/(1-alpha*dt/2.);
+		default: _error_("not supported yet");
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/OptPars.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/OptPars.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/OptPars.h	(revision 27955)
@@ -0,0 +1,21 @@
+/*!\file:  OptPars.h
+ * \brief place holder for optimization parameters
+ */ 
+
+#ifndef _OPTPARS_H_
+#define _OPTPARS_H_
+
+#include "./types.h"
+
+struct OptPars{
+
+	IssmDouble  xmin;
+	IssmDouble  xmax;
+	IssmDouble *cm_jump;
+	int* maxiter;
+	int  nsteps;
+	int  nsize;
+
+};
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/README
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/README	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/README	(revision 27955)
@@ -0,0 +1,9 @@
+
+DO NOT MODIFY the following files:
+- Verbosity.cpp
+- src/m/shared/Verb*.m
+all these files are automatically synchronized with Verbosity.h
+
+TO ADD A VERBOSITY LEVEL:
+add the corresponding line to Verbosity.h
+and execute synchronizing script.
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/Synchronize.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/Synchronize.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/Synchronize.sh	(revision 27955)
@@ -0,0 +1,156 @@
+#!/bin/bash
+#Synchronize Verbosity
+#first remove existing files
+rm $ISSM_DIR/src/m/classes/Verb*.m
+
+echo "Synchronizing Verbosity levels..."
+
+#Get all lines of Verbosity.cpp
+cat Verbosity.h |  grep "bool Verbose" | awk '{print $2}' | sed -e "s/(/ /" | awk '{print $1}' | awk '{ printf "%s %s\n", NR, $0 }' >temp
+#Build header of Verbosity.cpp {{{
+cat <<END > Verbosity.cpp
+/*
+* \file Verbosity.cpp:
+* \brief: Manage verbosity levels
+*
+*   WARNING: DO NOT MODIFY THIS FILE
+*            this file has been automatically generated by Synchronize.sh
+*            Please read README for more information
+*/
+
+/*include*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./Verbosity.h"
+#include "../Exceptions/exceptions.h"
+/*}}}*/
+
+/*Verbosityt levels*/
+END
+#}}}
+
+#get number of lines in temp
+NUMBEROFLINES=$(wc -l temp | awk '{printf("%s",$1);}');
+
+# go through the lines of temp
+for (( i=1 ; i<=$NUMBEROFLINES ; i++ )); do
+
+	#Get name of the line i
+	FILENAME=$(cat temp | grep "^[ ]*$i " | awk '{printf("%s",$2);}');
+	LEVELNAME=$(echo $FILENAME | sed -e "s/Verbose//g");
+
+	let POWER=$i-1
+	let BINARY=2**$POWER
+
+	echo "$FILENAME -> 2^$POWER = $BINARY"
+
+	#Add case to verbose.m FIELDS{{{
+	if [ $i -eq 1 ]; then cat <<END >> FIELDS
+		%BEGINFIELDS
+END
+fi
+	cat <<END >> FIELDS
+		$(echo $LEVELNAME | awk {'print tolower($1)'})=false;
+END
+	if [ $i -eq $NUMBEROFLINES ]; then cat <<END >> FIELDS
+		%ENDFIELDS
+END
+fi
+#}}}
+	#Add case to verbose.m VERB2BIN{{{
+	if [ $i -eq 1 ]; then cat <<END >> VERB2BIN
+		%BEGINVERB2BIN
+		binary=0;
+END
+fi
+	cat <<END >> VERB2BIN
+		if (verbose.$(echo $LEVELNAME | awk {'print tolower($1)'})), binary=bitor(binary,$BINARY); end
+END
+	if [ $i -eq $NUMBEROFLINES ]; then cat <<END >> VERB2BIN
+		%ENDVERB2BIN
+END
+fi
+#}}}
+	#Add case to verbose.m BIN2VERB{{{
+	if [ $i -eq 1 ]; then cat <<END >> BIN2VERB
+		%BEGINBIN2VERB
+END
+fi
+	cat <<END >> BIN2VERB
+		if bitand(binary,$BINARY), verbose.$(echo $LEVELNAME | awk {'print tolower($1)'})=true; else verbose.$(echo $LEVELNAME | awk {'print tolower($1)'})=false; end
+END
+	if [ $i -eq $NUMBEROFLINES ]; then cat <<END >> BIN2VERB
+		%ENDBIN2VERB
+END
+fi
+#}}}
+	#Add case to verbose.m DISP{{{
+	if [ $i -eq 1 ]; then cat <<END >> DISP
+		%BEGINDISP
+		disp(sprintf('class ''%s''  = ',class(verbose)));
+END
+fi
+	cat <<END >> DISP
+		disp(sprintf('   %15s : %s','$(echo $LEVELNAME | awk {'print tolower($1)'})',mat2str(verbose.$(echo $LEVELNAME | awk {'print tolower($1)'}))));
+END
+	if [ $i -eq $NUMBEROFLINES ]; then cat <<END >> DISP
+		%ENDDISP
+END
+fi
+#}}}
+	#Add case to Verbosity.cpp {{{
+	cat <<END >> Verbosity.cpp
+bool $FILENAME(void){return (GetVerbosityLevel() & $BINARY);} /* 2^$POWER*/
+END
+	#}}}
+
+done
+
+#Add footer of Verbosity.cpp{{{
+cat <<END >> Verbosity.cpp
+
+/*Verbosity Setup*/
+static int verbositylevel=-1;
+void SetVerbosityLevel(int level){/*{{{*/
+
+	if(level<0) _error_("vebosity level should be a positive integer (user provided " << level << ")");
+
+	verbositylevel = level;
+
+}/*}}}*/
+int  GetVerbosityLevel(void){/*{{{*/
+	_assert_(verbositylevel>=0);
+	return verbositylevel;
+}/*}}}*/
+END
+#}}}
+#Complete verbose.m {{{
+VERBOSEPATH="$ISSM_DIR/src/m/classes/verbose.m"
+cat $VERBOSEPATH  | sed "/%BEGINFIELDS/,$ d"  > temp_begin
+cat $VERBOSEPATH  | sed "1,/%ENDFIELDS/d" > temp_end
+cat temp_begin FIELDS temp_end > $VERBOSEPATH
+rm temp_begin temp_end FIELDS
+
+cat $VERBOSEPATH  | sed "/%BEGINVERB2BIN/,$ d"  > temp_begin
+cat $VERBOSEPATH  | sed "1,/%ENDVERB2BIN/d" > temp_end
+cat temp_begin VERB2BIN temp_end > $VERBOSEPATH
+rm temp_begin temp_end VERB2BIN
+
+cat $VERBOSEPATH  | sed "/%BEGINBIN2VERB/,$ d"  > temp_begin
+cat $VERBOSEPATH  | sed "1,/%ENDBIN2VERB/d" > temp_end
+cat temp_begin BIN2VERB temp_end > $VERBOSEPATH
+rm temp_begin temp_end BIN2VERB
+
+cat $VERBOSEPATH  | sed "/%BEGINDISP/,$ d"  > temp_begin
+cat $VERBOSEPATH  | sed "1,/%ENDDISP/d" > temp_end
+cat temp_begin DISP temp_end > $VERBOSEPATH
+rm temp_begin temp_end DISP
+#}}}
+
+#clean up{{{
+rm temp
+#}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/Verbosity.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/Verbosity.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/Verbosity.cpp	(revision 27955)
@@ -0,0 +1,44 @@
+/*
+* \file Verbosity.cpp:
+* \brief: Manage verbosity levels
+*
+*   WARNING: DO NOT MODIFY THIS FILE
+*            this file has been automatically generated by Synchronize.sh
+*            Please read README for more information
+*/
+
+/*include*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./Verbosity.h"
+#include "../Exceptions/exceptions.h"
+/*}}}*/
+
+/*Verbosityt levels*/
+bool VerboseMProcessor(void){return (GetVerbosityLevel() & 1);} /* 2^0*/
+bool VerboseModule(void){return (GetVerbosityLevel() & 2);} /* 2^1*/
+bool VerboseSolution(void){return (GetVerbosityLevel() & 4);} /* 2^2*/
+bool VerboseSolver(void){return (GetVerbosityLevel() & 8);} /* 2^3*/
+bool VerboseConvergence(void){return (GetVerbosityLevel() & 16);} /* 2^4*/
+bool VerboseControl(void){return (GetVerbosityLevel() & 32);} /* 2^5*/
+bool VerboseQmu(void){return (GetVerbosityLevel() & 64);} /* 2^6*/
+bool VerboseAutodiff(void){return (GetVerbosityLevel() & 128);} /* 2^7*/
+bool VerboseSmb(void){return (GetVerbosityLevel() & 256);} /* 2^8*/
+
+/*Verbosity Setup*/
+static int verbositylevel=-1;
+void SetVerbosityLevel(int level){/*{{{*/
+
+	if(level<0) _error_("vebosity level should be a positive integer (user provided " << level << ")");
+
+	verbositylevel = level;
+
+}/*}}}*/
+int  GetVerbosityLevel(void){/*{{{*/
+	_assert_(verbositylevel>=0);
+	return verbositylevel;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/Verbosity.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/Verbosity.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/Verbosity.h	(revision 27955)
@@ -0,0 +1,23 @@
+/*!\file:Verbosity.h
+ * \brief: Deal with verbosity levels
+ */ 
+
+#ifndef _VERBOSITY_H_
+#define _VERBOSITY_H_
+
+/*List of Verbosity levels (Add your own and Synchronize: must begin with "Verbose")*/
+bool VerboseMProcessor(void);
+bool VerboseModule(void);
+bool VerboseSolution(void);
+bool VerboseSolver(void);
+bool VerboseConvergence(void);
+bool VerboseControl(void);
+bool VerboseQmu(void);
+bool VerboseAutodiff(void);
+bool VerboseSmb(void);
+
+/*Setup Verbosity level*/
+void SetVerbosityLevel(int level);
+int  GetVerbosityLevel(void);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/XZvectorsToCoordinateSystem.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/XZvectorsToCoordinateSystem.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/XZvectorsToCoordinateSystem.cpp	(revision 27955)
@@ -0,0 +1,53 @@
+#include <math.h>
+
+#include "../MemOps/MemOps.h"
+#include "../Exceptions/exceptions.h"
+#include "../Numerics/types.h"
+#include "./isnan.h"
+
+void XZvectorsToCoordinateSystem(IssmDouble* T,IssmDouble* xzvectors){
+
+	IssmDouble	x[3],y[3],z[3];
+	IssmDouble	x_norm, y_norm, z_norm;
+
+	for(int i=0;i<6;i++){
+		if(xIsNan<IssmDouble>(xzvectors[i])){
+			/*At least one NaN found: default to Id*/
+			T[0*3+0] = 1.0;	T[0*3+1] = 0.0;	T[0*3+2] = 0.0;
+			T[1*3+0] = 0.0;	T[1*3+1] = 1.0;	T[1*3+2] = 0.0;
+			T[2*3+0] = 0.0;	T[2*3+1] = 0.0;	T[2*3+2] = 1.0;
+
+			return;
+		}
+	}
+
+	/* get input {x} (vector in local x-z plane): */
+	x[0] = xzvectors[0];
+	x[1] = xzvectors[1];
+	x[2] = xzvectors[2];
+
+	/* get input {z} (local tangent plane normal vector): */
+	z[0] = xzvectors[3];
+	z[1] = xzvectors[4];
+	z[2] = xzvectors[5];
+
+	/* compute {y} = {z} x {x}: */
+	y[0] =  x[2]*z[1] - x[1]*z[2];
+	y[1] = -x[2]*z[0] + x[0]*z[2];
+	y[2] =  x[1]*z[0] - x[0]*z[1];
+
+	/* normalise {x}, {y} and {z} to form unit vectors {i_hat}, {j_hat} and {k_hat};
+		store in {x}, {y}, and {z}: */
+	x_norm = sqrt( x[0]*x[0] + x[1]*x[1] + x[2]*x[2]);
+	y_norm = sqrt( y[0]*y[0] + y[1]*y[1] + y[2]*y[2]);
+	z_norm = sqrt( z[0]*z[0] + z[1]*z[1] + z[2]*z[2]);
+
+	x[0] = x[0]/x_norm;		x[1] = x[1]/x_norm;		x[2] = x[2]/x_norm;
+	y[0] = y[0]/y_norm;		y[1] = y[1]/y_norm;		y[2] = y[2]/y_norm;
+	z[0] = z[0]/z_norm;		z[1] = z[1]/z_norm;		z[2] = z[2]/z_norm;
+
+	/* Tlg columns are just {i_hat}, {j_hat} and {k_hat}, respectively: */
+	T[0*3+0] = x[0];	T[0*3+1] = y[0];	T[0*3+2] = z[0];
+	T[1*3+0] = x[1];	T[1*3+1] = y[1];	T[1*3+2] = z[1];
+	T[2*3+0] = x[2];	T[2*3+1] = y[2];	T[2*3+2] = z[2];
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/constants.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/constants.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/constants.h	(revision 27955)
@@ -0,0 +1,13 @@
+/*!\file: constants.h
+ * \brief prototypes for constants.h
+ */
+
+#ifndef _ISSM_CONSTANTS_H_
+#define _ISSM_CONSTANTS_H_
+
+#define UNDEF -9999
+#define SQRT2 1.414213562373095048801688724209698078569671875376948073176679738
+#define SQRT3 1.732050807568877293527446341505872366942805253810380628055806979
+const double PI=3.141592653589793238462643383279502884197169399375105820974944592308; // Macro definition conflicts with Dakota's declaration of PI
+
+#endif /*_ISSM_CONSTANTS_H_*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/cross.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/cross.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/cross.cpp	(revision 27955)
@@ -0,0 +1,21 @@
+/*!\file:  cross.cpp
+ * \brief cross product for 2 vectors
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./types.h"
+
+void cross(IssmDouble* result,IssmDouble* vector1,IssmDouble* vector2){
+
+	/*result,vector1 and vector2 are all assumed to be of size 3: */
+
+	result[0]=vector1[1]*vector2[2]-vector1[2]*vector2[1];
+	result[1]=vector1[2]*vector2[0]-vector1[0]*vector2[2];
+	result[2]=vector1[0]*vector2[1]-vector1[1]*vector2[0];
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/cubic.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/cubic.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/cubic.cpp	(revision 27955)
@@ -0,0 +1,92 @@
+#include <math.h>
+
+#include "./numerics.h"
+
+IssmDouble CBRT(IssmDouble Z){
+
+	IssmDouble ret;
+
+	if (Z> 0.0){
+		ret = fabs(pow(fabs(Z),1./3.));
+	}
+	else if(Z< 0.0){
+		ret = - fabs(pow(fabs(Z),1./3.));
+	}
+	else{
+		ret = 0.;
+	}
+	return ret;
+}
+
+int cubic(IssmDouble a,IssmDouble b,IssmDouble c,IssmDouble d, IssmDouble x[3], int* num){
+	/* Find the real roots of linear/quadratic and cubic equations:
+	 *
+	 *   a x^3 + bx^2 + cx + d = 0
+	 *
+	 *   returns the roots in x
+	 *   num is the number of roots */
+
+	/*Some useful constants*/
+	const IssmDouble pi    = 3.1415926535897932;
+	const IssmDouble third = 1./3.;
+
+	/*Intermediaries*/
+	IssmDouble U[3],W,P,Q,delta,phi;
+
+	/* determine the degree of the polynomial */
+	if (a != 0.0){
+		//cubic problem
+		W     = b/a *third;
+		P     = pow((c/a *third - pow(W,2)),3);
+		Q     = -.5 *(2.0*pow(W,3)-(c*W-d)/a );
+		delta = pow(Q,2)+P;
+		if ( delta < 0.0 ){
+			//three real solutions!
+			//Confine the argument of coeffCOS to the interval [-1;1]!
+			phi = acos(min(1.0,max(-1.0,Q/sqrt(-P))));
+			P   = 2.0*pow((-P),(5.e-1*third));
+			for(int i=0;i<3;i++)	U[i] = P*cos((phi+2*((IssmDouble)i)*pi)*third)-W;
+			x[0] = min(U[0], min(U[1], U[2]));
+			x[1] = max(min(U[0], U[1]),max( min(U[0], U[2]), min(U[1], U[2])));
+			x[2] = max(U[0], max(U[1], U[2]));
+			*num = 3;
+		}
+		else{
+			// only one real solution!
+			delta = sqrt(delta);
+			x[0] = CBRT(Q+delta)+CBRT(Q-delta)-W;
+			*num=1;
+		}
+	}
+	else if (b != 0.0){
+		// quadratic problem
+		P     = 0.5*c/b;
+		delta = pow(P,2)-d/b;
+		if (delta > 0.0){
+			// 2 real solutions
+			x[0] = -P - sqrt(delta);
+			x[1] = -P + sqrt(delta);
+			*num = 2;
+		}
+		else{
+			// no real solution
+			*num = 0;
+		}
+	}
+	else if (c != 0.0){
+		//linear equation
+		x[0] = d/c;
+		*num = 1;
+	}
+	else{
+		//no equation
+		*num = 0;
+	}
+
+	/* perform one step of a newton iteration in order to minimize round-off errors */
+	for(int i=0;i<*num;i++){
+		x[i] = x[i] - (d+x[i]*(c+x[i]*(b+x[i]*a)))/(c+x[i]*(2.0*b+x[i]*3.0*a));
+	}
+
+	return 0;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/extrema.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/extrema.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/extrema.cpp	(revision 27955)
@@ -0,0 +1,43 @@
+/*!\file:  extrema.cpp
+ * \brief min and max functions
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./types.h"
+
+#ifndef _HAVE_CODIPACK_// already defined in codipack headers
+IssmDouble min(IssmDouble a,IssmDouble b){
+	if (a<b)return a;
+	else return b;
+}
+#endif
+int min(int a,int b){
+	if (a<b)return a;
+	else return b;
+}
+#ifndef _HAVE_CODIPACK_// already defined in codipack headers
+IssmDouble max(IssmDouble a,IssmDouble b){
+	if (a>b)return a;
+	else return b;
+}
+#endif
+int max(int a,int b){
+	if (a>b)return a;
+	else return b;
+}
+
+#ifdef _HAVE_AD_
+IssmPDouble  min(IssmPDouble a,IssmPDouble b){
+	if (a<b)return a;
+	else return b;
+}
+IssmPDouble  max(IssmPDouble a,IssmPDouble b){
+	if (a>b)return a;
+	else return b;
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/isnan.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/isnan.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/isnan.cpp	(revision 27955)
@@ -0,0 +1,18 @@
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Special overloading definitions for AD*/
+#include "./isnan.h"
+
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)
+template <> int xIsNan<adouble> (const adouble& X){ return std::isnan(X.getValue()); }
+template <> int xIsInf<adouble> (const adouble& X){ return std::isinf(X.getValue()); }
+#endif
+
+#if defined(_HAVE_CODIPACK_) && !defined(_WRAPPERS_)
+template <> int xIsNan<IssmDouble> (const IssmDouble& X){ return std::isnan(X.getValue()); }
+template <> int xIsInf<IssmDouble> (const IssmDouble& X){ return std::isinf(X.getValue()); }
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/isnan.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/isnan.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/isnan.h	(revision 27955)
@@ -0,0 +1,34 @@
+#ifndef _XISNAN_H_
+#define _XISNAN_H_
+
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*cmath defines isnan and isinf*/
+#include <cmath>
+
+#ifdef _INTEL_WIN_
+template <class T> int xIsNan(const T& X){return (X!=X)?1:0;}
+#else
+template <class T> int xIsNan(const T& X){return std::isnan(X); }
+#endif
+template <class T> int xIsInf(const T& X){return std::isinf(X); }
+
+/*Special overloading definitions for AD*/
+
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)
+#include "./types.h"
+template <> int xIsNan<adouble> (const adouble& X);
+template <> int xIsInf<adouble> (const adouble& X);
+#endif
+
+#if defined(_HAVE_CODIPACK_) && !defined(_WRAPPERS_)
+#include "./types.h"
+template <> int xIsNan<IssmDouble> (const IssmDouble& X);
+template <> int xIsInf<IssmDouble> (const IssmDouble& X);
+#endif
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/legendre.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/legendre.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/legendre.cpp	(revision 27955)
@@ -0,0 +1,265 @@
+/*!\file:  legendre.cpp
+ \brief compute legendre polynomial at specific x. 
+ This is inspired from the p_polynomial_value package, written by John Burkardt (see below 
+ for full documentation). 
+ Here, we apply the function differently: we assume previous two evaluations are provided, 
+ and we compute the level n evaluation: 
+
+*/
+
+/* function v = p_polynomial_value ( m, n, x ) {{{
+
+	%*****************************************************************************80
+	%
+	%% P_POLYNOMIAL_VALUE evaluates the Legendre polynomials P(n,x).
+	%
+	%  Discussion:
+	%
+	%    P(n,1) = 1.
+	%    P(n,-1) = (-1)^N.
+	%    | P(n,x) | <= 1 in [-1,1].
+	%
+	%    The N zeroes of P(n,x) are the abscissas used for Gauss-Legendre
+	%    quadrature of the integral of a function F(X) with weight function 1
+	%    over the interval [-1,1].
+	%
+	%    The Legendre polynomials are orthogonal under the inner product defined
+	%    as integration from -1 to 1:
+	%
+	%      Integral ( -1 <= X <= 1 ) P(I,X) * P(J,X) dX 
+	%        = 0 if I =/= J
+	%        = 2 / ( 2*I+1 ) if I = J.
+	%
+	%    Except for P(0,X), the integral of P(I,X) from -1 to 1 is 0.
+	%
+	%    A function F(X) defined on [-1,1] may be approximated by the series
+	%      C0*P(0,x) + C1*P(1,x) + ... + CN*P(n,x)
+	%    where
+	%      C(I) = (2*I+1)/(2) * Integral ( -1 <= X <= 1 ) F(X) P(I,x) dx.
+	%
+	%    The formula is:
+	%
+	%      P(n,x) = (1/2^N) * sum ( 0 <= M <= N/2 ) C(N,M) C(2N-2M,N) X^(N-2*M)
+	%
+	%  Differential equation:
+	%
+	%    (1-X*X) * P(n,x)'' - 2 * X * P(n,x)' + N * (N+1) = 0
+	%
+	%  First terms:
+	%
+	%    P( 0,x) =      1
+	%    P( 1,x) =      1 X
+	%    P( 2,x) = (    3 X^2 -       1)/2
+	%    P( 3,x) = (    5 X^3 -     3 X)/2
+	%    P( 4,x) = (   35 X^4 -    30 X^2 +     3)/8
+	%    P( 5,x) = (   63 X^5 -    70 X^3 +    15 X)/8
+	%    P( 6,x) = (  231 X^6 -   315 X^4 +   105 X^2 -     5)/16
+	%    P( 7,x) = (  429 X^7 -   693 X^5 +   315 X^3 -    35 X)/16
+	%    P( 8,x) = ( 6435 X^8 - 12012 X^6 +  6930 X^4 -  1260 X^2 +   35)/128
+	%    P( 9,x) = (12155 X^9 - 25740 X^7 + 18018 X^5 -  4620 X^3 +  315 X)/128
+	%    P(10,x) = (46189 X^10-109395 X^8 + 90090 X^6 - 30030 X^4 + 3465 X^2-63)/256
+	%
+	%  Recursion:
+	%
+	%    P(0,x) = 1
+	%    P(1,x) = x
+	%    P(n,x) = ( (2*n-1)*x*P(n-1,x)-(n-1)*P(n-2,x) ) / n
+	%
+	%    P'(0,x) = 0
+	%    P'(1,x) = 1
+	%    P'(N,x) = ( (2*N-1)*(P(N-1,x)+X*P'(N-1,x)-(N-1)*P'(N-2,x) ) / N
+	%
+	%  Licensing:
+	%
+	%    This code is distributed under the GNU LGPL license. 
+	%
+	%  Modified:
+	%
+	%    10 March 2012
+	%
+	%  Author:
+	%
+	%    John Burkardt
+	%
+	%  Reference:
+	%
+	%    Milton Abramowitz, Irene Stegun,
+	%    Handbook of Mathematical Functions,
+	%    National Bureau of Standards, 1964,
+	%    ISBN: 0-486-61272-4,
+	%    LC: QA47.A34.
+	%
+	%    Daniel Zwillinger, editor,
+	%    CRC Standard Mathematical Tables and Formulae,
+	%    30th Edition,
+	%    CRC Press, 1996.
+	%
+	%  Parameters:
+	%
+	%    Input, integer M, the number of evaluation points.
+	%
+	%    Input, integer N, the highest order polynomial to evaluate.
+	%    Note that polynomials 0 through N will be evaluated.
+	%
+	%    Input, real X(M,1), the evaluation points.
+	%
+	%    Output, real V(M,1:N+1), the values of the Legendre polynomials 
+	%    of order 0 through N at the points X.
+	%
+	  if ( n < 0 )
+		v = [];
+		return
+	  end
+
+	  v = ones ( m, n + 1 );
+
+	  if ( n < 1 )
+		return
+	  end
+
+	  v(1:m,2) = x;
+
+	  for i = 2 : n
+
+		v(:,i+1) = ( ( 2 * i - 1 ) * x .* v(:,i)   ...
+					-  (     i - 1 ) *    v(:,i-1) ) ...
+					/  (     i     );
+
+	  end
+	  }}}  */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./types.h"
+#include "../Exceptions/exceptions.h"
+#include "../MemOps/MemOps.h"
+#include "./recast.h"
+
+IssmDouble *p_polynomial_value ( int m, int n, IssmDouble* x){
+
+	/******************************************************************************{{{/
+	Purpose:
+
+	P_POLYNOMIAL_VALUE evaluates the Legendre polynomials P(n,x).
+
+	Discussion:
+
+	P(n,1) = 1.
+	P(n,-1) = (-1)^N.
+	| P(n,x) | <= 1 in [-1,1].
+
+	The N zeroes of P(n,x) are the abscissas used for Gauss-Legendre
+	quadrature of the integral of a function F(X) with weight function 1
+	over the interval [-1,1].
+
+	The Legendre polynomials are orthogonal under the inner product defined
+	as integration from -1 to 1:
+
+	Integral ( -1 <= X <= 1 ) P(I,X) * P(J,X) dX
+	= 0 if I =/= J
+	= 2 / ( 2*I+1 ) if I = J.
+
+	Except for P(0,X), the integral of P(I,X) from -1 to 1 is 0.
+
+	A function F(X) defined on [-1,1] may be approximated by the series
+	C0*P(0,x) + C1*P(1,x) + ... + CN*P(n,x)
+	where
+	C(I) = (2*I+1)/(2) * Integral ( -1 <= X <= 1 ) F(X) P(I,x) dx.
+
+	The formula is:
+
+	P(n,x) = (1/2^N) * sum ( 0 <= M <= N/2 ) C(N,M) C(2N-2M,N) X^(N-2*M)
+
+	Differential equation:
+
+	(1-X*X) * P(n,x)'' - 2 * X * P(n,x)' + N * (N+1) = 0
+
+	First terms:
+
+	P( 0,x) =      1
+	P( 1,x) =      1 X
+	P( 2,x) = (    3 X^2 -       1)/2
+	P( 3,x) = (    5 X^3 -     3 X)/2
+	P( 4,x) = (   35 X^4 -    30 X^2 +     3)/8
+	P( 5,x) = (   63 X^5 -    70 X^3 +    15 X)/8
+	P( 6,x) = (  231 X^6 -   315 X^4 +   105 X^2 -     5)/16
+	P( 7,x) = (  429 X^7 -   693 X^5 +   315 X^3 -    35 X)/16
+	P( 8,x) = ( 6435 X^8 - 12012 X^6 +  6930 X^4 -  1260 X^2 +   35)/128
+	P( 9,x) = (12155 X^9 - 25740 X^7 + 18018 X^5 -  4620 X^3 +  315 X)/128
+	P(10,x) = (46189 X^10-109395 X^8 + 90090 X^6 - 30030 X^4 + 3465 X^2-63)/256
+
+	Recursion:
+
+	P(0,x) = 1
+	P(1,x) = x
+	P(n,x) = ( (2*n-1)*x*P(n-1,x)-(n-1)*P(n-2,x) ) / n
+
+	P'(0,x) = 0
+	P'(1,x) = 1
+	P'(N,x) = ( (2*N-1)*(P(N-1,x)+X*P'(N-1,x)-(N-1)*P'(N-2,x) ) / N
+
+	Licensing:
+
+	This code is distributed under the GNU LGPL license.
+
+	Modified:
+
+	08 August 2013
+
+	Author:
+
+		John Burkardt
+
+			Reference:
+
+			Milton Abramowitz, Irene Stegun,
+				   Handbook of Mathematical Functions,
+				   National Bureau of Standards, 1964,
+				   ISBN: 0-486-61272-4,
+				   LC: QA47.A34.
+
+					   Daniel Zwillinger, editor,
+				   CRC Standard Mathematical Tables and Formulae,
+				   30th Edition,
+				   CRC Press, 1996.
+
+					   Parameters:
+
+					   Input, int M, the number of evaluation points.
+
+					   Input, int N, the highest order polynomial to evaluate.
+					   Note that polynomials 0 through N will be evaluated.
+
+					   Input, double X[M], the evaluation points.
+
+					   Output, double P_POLYNOMIAL_VALUE[M*(N+1)], the values of the Legendre
+					   polynomials of order 0 through N.
+	}}}*/
+
+	int i,j;
+
+	if(n<0) return NULL;
+
+	IssmDouble* v = xNew<IssmDouble>(m*(n+1));
+
+	for ( i = 0; i < m; i++ ) v[i*(n+1)+0] = 1.0;
+	if ( n < 1 ) return v;
+
+	for ( i = 0; i < m; i++ ) v[i*(n+1)+1] = x[i];
+
+	for ( i = 0; i < m; i++ ) {
+		for ( j = 2; j <= n; j++ ) {
+
+			v[j+i*(n+1)] = ( ( IssmDouble ) ( 2 * j - 1 ) * x[i] * v[(j-1)+i*(n+1)]
+					- ( IssmDouble ) (     j - 1 ) *        v[(j-2)+i*(n+1)] )
+				/ ( IssmDouble ) (     j     );
+
+		}
+	}
+
+	return v;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/numerics.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/numerics.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/numerics.h	(revision 27955)
@@ -0,0 +1,45 @@
+/*!\file: numerics.h
+ * \brief prototypes for numerics.h
+ */ 
+
+#ifndef _NUMERICS_H_
+#define  _NUMERICS_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Verbosity.h"
+#include "./GaussPoints.h"
+#include "./isnan.h"
+#include "./recast.h"
+#include "./types.h"
+#include "./constants.h"
+#include "./OptPars.h"
+
+#if !defined(_HAVE_CODIPACK_)
+// already defined in codipack headers
+IssmDouble  min(IssmDouble a,IssmDouble b);
+IssmDouble  max(IssmDouble a,IssmDouble b);
+#endif
+
+#ifdef _HAVE_AD_
+IssmPDouble  min(IssmPDouble a,IssmPDouble b);
+IssmPDouble  max(IssmPDouble a,IssmPDouble b);
+#endif
+
+int         min(int a,int b);
+int         max(int a,int b);
+void        BrentSearch(IssmDouble** pJ,OptPars optpars,IssmDouble* X0,IssmDouble (*f)(IssmDouble*,void*),IssmDouble (*g)(IssmDouble**,IssmDouble*,void*),void* usr);
+void        cross(IssmDouble *result,IssmDouble*vector1,IssmDouble*vector2);
+void        XZvectorsToCoordinateSystem(IssmDouble *T,IssmDouble*xzvectors);
+int         cubic(IssmDouble a, IssmDouble b, IssmDouble c, IssmDouble d,IssmDouble X[3], int *num);
+IssmDouble  legendre(IssmDouble Pn1, IssmDouble Pn2, IssmDouble x, int n);
+IssmDouble*  p_polynomial_value ( int m, int n, IssmDouble* x);
+
+int         NewtonSolveDnorm(IssmDouble* pdnorm,IssmDouble c1,IssmDouble c2,IssmDouble c3,IssmDouble n,IssmDouble dnorm);
+IssmDouble  ODE1(IssmDouble alpha,IssmDouble beta,IssmDouble Si, IssmDouble dt,int method);
+
+#endif //ifndef _NUMERICS_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/recast.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/recast.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/recast.h	(revision 27955)
@@ -0,0 +1,60 @@
+/*
+ * recast.h
+ *
+ *  Created on: Jun 26, 2012
+ *      Author: utke
+ */
+
+#ifndef _RECAST_H_
+#define _RECAST_H_
+
+#ifdef HAVE_CONFIG_H
+   #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#if !defined(_HAVE_AD_) || defined(_WRAPPERS_)
+
+template<class To, class From> To reCast(const From& from) {
+    return (To)from;
+}
+
+#else
+#include "./types.h"
+
+template<class To, class From> struct ForPartialSpecialization {
+    static  To reCast(const From& from ) { return (To) from;}
+};
+
+template<class To, class From> To reCast(const From& from) {
+    return ForPartialSpecialization<To,From>::reCast(from);
+}
+/**
+ * partial specialization
+ */
+#ifdef _HAVE_ADOLC_
+template<class To> struct ForPartialSpecialization<To,adouble> {
+    static  To reCast(const adouble& from ) { return (To) (from.getValue());}
+};
+#endif
+#ifdef _HAVE_CODIPACK_
+template<class To> struct ForPartialSpecialization<To,IssmDouble> {
+	    static  To reCast(const IssmDouble& from ) { return (To) (from.getValue());}
+};
+#endif
+
+#endif
+
+/*Morlighem's change: we do not want dynamic_casts because of performance
+ * issue, so for now, we just use C-like cast*/
+template<class To,class From> To xDynamicCast(const From& from) {
+
+	/*C-like cast (fast but not safe)*/
+	return (To) from;
+
+	/*C++ dynamic_cast, poor performance but safer*/
+	//return dynamic_cast<To>(from);
+}
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/types.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/types.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Numerics/types.h	(revision 27955)
@@ -0,0 +1,50 @@
+/*!\file: types.h
+ * \brief prototypes for types.h
+ */ 
+
+#ifndef _TYPES_H_
+#define  _TYPES_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <complex>
+
+/*here are our abstracted types: inspired on petsc */
+#if ISSM_USE_64BIT_INDICES == 1
+typedef long long IssmInt;
+#else
+typedef int IssmInt;
+#endif  
+
+#if defined(_HAVE_ADOLC_) &&  !defined(_WRAPPERS_)
+/*ADOLC typedefs*/
+#include "adolc/adolc.h"
+typedef adouble              IssmDouble;  /*for active variables*/
+//typedef acomplex             IssmComplex; /*for active variables*/ /*FIXME!*/
+typedef std::complex<double> IssmComplex; /*for active variables*/ /*FIXME!*/
+typedef double               IssmPDouble; /*for passive variables*/
+typedef std::complex<double> IssmPComplex;/*for passive variables*/
+
+#elif defined(_HAVE_CODIPACK_) && !defined(_WRAPPERS_)
+/*CoDiPack typedefs*/
+#include <codi.hpp>
+//typedef codi::RealReverseIndex          IssmDouble;
+typedef codi::RealReverse               IssmDouble;
+typedef std::complex<codi::RealReverse> IssmComplex;
+typedef double                          IssmPDouble;
+typedef IssmComplex                     IssmPComplex;
+
+#else 
+/*Non-AD typedefs*/
+typedef double               IssmDouble; 
+typedef std::complex<double> IssmComplex; 
+typedef IssmDouble           IssmPDouble;
+typedef IssmComplex          IssmPComplex;
+#endif
+
+#endif //ifndef _TYPES_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Random/random.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Random/random.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Random/random.cpp	(revision 27955)
@@ -0,0 +1,101 @@
+/*!\file: random
+ * \brief random number generating functions
+ */ 
+
+/*Headers*/
+/*{{{*/
+#include <stdio.h>
+#include <sys/types.h>
+#include <math.h>
+#include <float.h>    /*  DBL_EPSILON  */
+#include <cstdarg>
+#include <iostream>
+
+#include "../Matrix/matrix.h"
+#include "../Exceptions/exceptions.h"
+#include "../MemOps/MemOps.h"
+#include "../io/io.h"
+#include "./randomgenerator.h"
+/*}}}*/
+
+void univariateNormal(IssmPDouble* prand, IssmPDouble mean, IssmPDouble sdev, int seed=-1) { /*{{{*/
+
+	/*Seed the pseudo-random number generator*/
+	rnd::linear_congruential_engine randomengine;
+	randomengine.seed(seed);
+	/*Normal distribution*/
+	rnd::normal_distribution distriNormal(mean,sdev);
+	/*Assign output pointer and cleanup*/
+	*prand = distriNormal.generator(randomengine);
+	randomengine.free_resources();
+} /*}}}*/
+void multivariateNormal(IssmDouble** prand, int dim, IssmDouble mean, IssmDouble* covariancematrix, int seed=-1) { /*{{{*/
+   
+	IssmPDouble* sampleStandardNormal    = xNew<IssmPDouble>(dim);
+   IssmDouble* sampleMultivariateNormal = xNew<IssmDouble>(dim);
+   IssmDouble* Lchol                    = xNewZeroInit<IssmDouble>(dim*dim);
+
+	/*True randomness if seed<0, otherwise random seed is fixed at seed*/
+	/*Seed the pseudo-random number generator, repeatedly calling univariateNormal does not ensure randomness*/
+	rnd::linear_congruential_engine randomengine;
+	randomengine.seed(seed);
+	/*Normal distribution*/
+	rnd::normal_distribution distriNormal(0.0,1.0);
+	for(int i=0;i<dim;i++){
+		sampleStandardNormal[i] = distriNormal.generator(randomengine);
+		//_printf_("VV i sampleStandardNormal[i]: "<<i<<"  "<<sampleStandardNormal[i]<<'\n');
+	}
+
+	/*Cholsesky decomposition of the covariance matrix*/
+	CholeskyRealPositiveDefinite(Lchol,covariancematrix,dim);
+   
+	/*Matrix by vector multiplication*/
+	for(int i=0;i<dim;i++){ 
+      /*Entry-by-entry multiplication along matrix row*/
+      IssmDouble sum=0.;
+      for(int j=0;j<dim;j++) sum += sampleStandardNormal[j]*Lchol[i*dim+j]; 
+      sampleMultivariateNormal[i] = mean+sum;
+   }
+
+   /*Assign output pointer and cleanup*/
+   *prand = sampleMultivariateNormal;
+   xDelete<IssmPDouble>(sampleStandardNormal);
+   xDelete<IssmDouble>(Lchol);
+	randomengine.free_resources();
+} /*}}}*/
+void multivariateNormal(IssmDouble** prand, int dim, IssmDouble* mean, IssmDouble* covariancematrix, int seed=-1) { /*{{{*/
+	
+	IssmPDouble* sampleStandardNormal    = xNew<IssmPDouble>(dim);
+	IssmDouble* sampleMultivariateNormal = xNew<IssmDouble>(dim);
+	IssmDouble* Lchol                    = xNewZeroInit<IssmDouble>(dim*dim);
+	
+	/*True randomness if seed<0, otherwise random seed is fixed at seed*/
+	/*Seed the pseudo-random number generator, repeatedly calling univariateNormal does not ensure randomness*/
+	rnd::linear_congruential_engine randomengine;
+	randomengine.seed(seed);
+	/*Normal distribution*/
+	rnd::normal_distribution distriNormal(0.0,1.0);
+	for(int i=0;i<dim;i++){
+		sampleStandardNormal[i] = distriNormal.generator(randomengine);
+		//_printf_("VV i sampleStandardNormal[i]: "<<i<<"  "<<sampleStandardNormal[i]<<'\n');
+	}
+
+	/*Cholsesky decomposition of the covariance matrix*/
+	CholeskyRealPositiveDefinite(Lchol,covariancematrix,dim);
+
+	/*Matrix by vector multiplication*/
+	for(int i=0;i<dim;i++){
+		IssmDouble sum = 0.;
+      for(int j=0;j<dim;j++) sum += sampleStandardNormal[j]*Lchol[i*dim+j]; 
+      sampleMultivariateNormal[i] = mean[i]+sum;
+	}
+   
+	/*Assign output pointer and cleanup*/
+	*prand = sampleMultivariateNormal;
+	xDelete<IssmPDouble>(sampleStandardNormal);
+	xDelete<IssmDouble>(Lchol);
+	randomengine.free_resources();
+} /*}}}*/
+
+
+
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Random/random.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Random/random.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Random/random.h	(revision 27955)
@@ -0,0 +1,12 @@
+/*!\file: random.h
+ * \brief prototypes for random.h
+ */ 
+
+#ifndef _RANDOM_H_
+#define _RANDOM_H_
+
+void univariateNormal(IssmDouble* prand, IssmDouble mean, IssmDouble sdev, int seed=-1);
+void multivariateNormal(IssmDouble** prand, int dim, IssmDouble mean, IssmDouble* covariancematrix, int seed=-1);
+void multivariateNormal(IssmDouble** prand, int dim, IssmDouble* mean, IssmDouble* covariancematrix, int seed=-1);
+
+#endif //ifndef _RANDOM_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Random/randomgenerator.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Random/randomgenerator.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Random/randomgenerator.cpp	(revision 27955)
@@ -0,0 +1,220 @@
+/*!\file: randomgenerator
+ * \brief random number generating functions
+ */
+
+#include <iostream>
+#include "./randomgenerator.h"
+#include <cmath>
+#include <chrono>
+
+#undef M_PI
+#define M_PI 3.141592653589793238462643
+
+namespace rnd{
+
+  /* Linear congruential engine */
+
+  linear_congruential_engine::linear_congruential_engine(){/*{{{*/
+
+      pseed = new unsigned int;
+		*pseed = std::chrono::steady_clock::now().time_since_epoch()/std::chrono::milliseconds(1);
+      a = 1103515245;		       // BSD Formula
+      c = 12345;					     // BSD Formula
+      m = 2147483648;			     // BSD Formula
+			return;
+	}/*}}}*/
+  linear_congruential_engine::linear_congruential_engine(unsigned int _a, unsigned int _b, unsigned int _m){/*{{{*/
+
+      pseed = new unsigned int;
+		*pseed = std::chrono::steady_clock::now().time_since_epoch()/std::chrono::milliseconds(1);
+      a = _a;
+      c = _b;
+      m = _m;
+			return;
+	}/*}}}*/
+	linear_congruential_engine::~linear_congruential_engine(){}
+
+  unsigned int linear_congruential_engine::get_m() { return m; }
+
+  void linear_congruential_engine::seed( int s ) {
+      if(s<0)
+        *pseed = std::chrono::steady_clock::now().time_since_epoch()/std::chrono::milliseconds(1);
+      else
+        *pseed = (unsigned) s;
+  }
+
+  unsigned int linear_congruential_engine::generator(){
+    *pseed = ( a * *pseed + c ) % m ;
+    return *pseed;
+  }
+
+  void linear_congruential_engine::free_resources(){
+	  delete pseed;
+	  return;
+  }
+
+  /* Uniform distribution */
+
+	uniform_distribution::uniform_distribution(){/*{{{*/
+			a = 0.0;
+			b = 1.0;
+			return;
+	}
+	/*}}}*/
+
+	uniform_distribution::uniform_distribution(double _a,double _b){/*{{{*/
+			a = _a;
+			b = _b;
+			return;
+	}
+	/*}}}*/
+
+	uniform_distribution::~uniform_distribution(){}
+
+	double uniform_distribution::generator(rnd::linear_congruential_engine random_engine) {
+			return (b-a)*(double) random_engine.generator()/ random_engine.get_m() + a;
+	}
+
+  /* Normal distribution */
+
+	normal_distribution::normal_distribution(){/*{{{*/
+			mean   = 0;
+			sdev  = 1.0;
+			return;
+	}
+	/*}}}*/
+
+	normal_distribution::normal_distribution(double m,double s){/*{{{*/
+			mean   = m;
+			sdev  = s;
+			return;
+	}
+	/*}}}*/
+
+	normal_distribution::~normal_distribution(){}
+
+	double normal_distribution::generator(rnd::linear_congruential_engine random_engine){/*{{{*/
+
+			rnd::uniform_distribution	distribution;
+
+			double u1 = distribution.generator(random_engine);
+			double u2 = distribution.generator(random_engine);
+
+			double R = sqrt(-2*log(u1));
+			double theta = 2*M_PI*u2;
+
+			return mean + sdev * (R*cos(theta));
+
+	}
+	/*}}}*/
+
+  /* Log-Normal distribution */
+
+  lognormal_distribution::lognormal_distribution(){/*{{{*/
+      logmean   = 0;
+      logsdev  = 1.0;
+      return;
+  }
+  /*}}}*/
+
+  lognormal_distribution::lognormal_distribution(double m,double s){/*{{{*/
+      logmean   = m;
+      logsdev  = s;
+      return;
+  }
+  /*}}}*/
+
+  lognormal_distribution::~lognormal_distribution(){}
+
+  double lognormal_distribution::generator(rnd::linear_congruential_engine random_engine){/*{{{*/
+
+      rnd::normal_distribution	distribution(logmean,logsdev);
+
+      return exp(distribution.generator(random_engine));
+
+  }
+  /*}}}*/
+
+  /* Chi-squared distribution */
+
+  chi_squared_distribution::chi_squared_distribution(){/*{{{*/
+      k  = 1;
+      return;
+  }
+  /*}}}*/
+
+  chi_squared_distribution::chi_squared_distribution(unsigned int dof){/*{{{*/
+      k   = dof;
+      return;
+  }
+  /*}}}*/
+
+  chi_squared_distribution::~chi_squared_distribution(){}
+
+  double chi_squared_distribution::generator(rnd::linear_congruential_engine random_engine){/*{{{*/
+
+      rnd::normal_distribution	distribution;
+
+      double rand = 0;
+
+      for(int i=0;i<k;i++)
+        rand = rand + pow(distribution.generator(random_engine),2);
+
+      return rand;
+
+  }
+  /*}}}*/
+
+
+  /* Exponential distribution */
+
+  exponential_distribution::exponential_distribution(){/*{{{*/
+      lambda  = 1.0;
+      return;
+  }
+  /*}}}*/
+
+  exponential_distribution::exponential_distribution(double scale){/*{{{*/
+      lambda   = scale;
+      return;
+  }
+  /*}}}*/
+
+  exponential_distribution::~exponential_distribution(){}
+
+  double exponential_distribution::generator(rnd::linear_congruential_engine random_engine){/*{{{*/
+
+      rnd::uniform_distribution	distribution;
+
+      return -1.0/lambda*log(1.0-distribution.generator(random_engine));
+
+  }
+  /*}}}*/
+
+  /* Student-t distribution */
+
+  student_t_distribution::student_t_distribution(){/*{{{*/
+      k  = 1;
+      return;
+  }
+  /*}}}*/
+
+  student_t_distribution::student_t_distribution(unsigned int dof){/*{{{*/
+      k   = dof;
+      return;
+  }
+  /*}}}*/
+
+  student_t_distribution::~student_t_distribution(){}
+
+  double student_t_distribution::generator(rnd::linear_congruential_engine random_engine){/*{{{*/
+
+      rnd::normal_distribution	normal_distribution;
+      rnd::chi_squared_distribution	chi_squared_distribution(k);
+
+      return normal_distribution.generator(random_engine)/sqrt(chi_squared_distribution.generator(random_engine)/k);
+
+  }
+  /*}}}*/
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Random/randomgenerator.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Random/randomgenerator.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Random/randomgenerator.h	(revision 27955)
@@ -0,0 +1,142 @@
+/*!\file: randomgenerator.h
+ * \brief prototypes for randomgenerator.h
+ */
+
+#ifndef _RANDOMGENERATOR_H_
+#define _RANDOMGENERATOR_H_
+
+#undef M_PI
+#define M_PI 3.141592653589793238462643
+
+namespace rnd{
+
+  class linear_congruential_engine
+  {
+    private:
+      unsigned int a;
+      unsigned int c;
+      unsigned int m;
+      unsigned int *pseed;
+
+    public:
+
+      /*constructors, destructors: */
+      linear_congruential_engine();
+      linear_congruential_engine(unsigned int _a, unsigned int _b, unsigned int _m);
+      ~linear_congruential_engine();
+
+      unsigned int get_m();
+      void seed( int s );
+      unsigned int generator();
+		void free_resources();
+  };
+
+  class uniform_distribution
+  {
+
+    private:
+      double a;  // lower bound of range
+      double b;  // upper bound of range
+
+    public:
+
+      /*constructors, destructors: */
+      uniform_distribution();
+      uniform_distribution(double _a,double _b);
+      ~uniform_distribution();
+
+      double generator(rnd::linear_congruential_engine random_engine);
+
+  };
+
+  class normal_distribution
+  {
+
+    private:
+      double mean;
+      double sdev;
+
+    public:
+
+      /*constructors, destructors: */
+      normal_distribution();
+      normal_distribution(double m,double s);
+      ~normal_distribution();
+
+      double generator(rnd::linear_congruential_engine random_engine);
+
+  };
+
+  class lognormal_distribution
+  {
+
+    private:
+      double logmean;
+      double logsdev;
+
+    public:
+
+      /*constructors, destructors: */
+      lognormal_distribution();
+      lognormal_distribution(double m,double s);
+      ~lognormal_distribution();
+
+      double generator(rnd::linear_congruential_engine random_engine);
+
+  };
+
+  class chi_squared_distribution
+  {
+
+    private:
+      unsigned int k;
+
+    public:
+
+      /*constructors, destructors: */
+      chi_squared_distribution();
+      chi_squared_distribution(unsigned int k);
+      ~chi_squared_distribution();
+
+      double generator(rnd::linear_congruential_engine random_engine);
+
+  };
+
+  class exponential_distribution
+  {
+
+    private:
+      double lambda;
+
+    public:
+
+      /*constructors, destructors: */
+      exponential_distribution();
+      exponential_distribution(double scale);
+      ~exponential_distribution();
+
+      double generator(rnd::linear_congruential_engine random_engine);
+
+  };
+
+  class student_t_distribution
+  {
+
+    private:
+      unsigned int k;
+
+    public:
+
+      /*constructors, destructors: */
+      student_t_distribution();
+      student_t_distribution(unsigned int k);
+      ~student_t_distribution();
+
+      double generator(rnd::linear_congruential_engine random_engine);
+
+  };
+
+
+}
+
+#endif //* _RANDOMGENERATOR_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Sorting/binary_search.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Sorting/binary_search.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Sorting/binary_search.cpp	(revision 27955)
@@ -0,0 +1,68 @@
+/*!\file:  binary_search.cpp
+ * \brief  binary search on an integer array, that is already sorted
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../Exceptions/exceptions.h"
+#include <stdio.h>
+
+int binary_search(int* poffset,int target,int* sorted_integers,int num_integers){ /*{{{*/
+
+	/*output: */
+	int offset=0;  //offset, if found
+	int found=0;   //found=0 if target is not found, 1 otherwise.
+
+	/*intermediary: */
+	int *beg = NULL;
+	int *end = NULL;
+	int *mid = NULL;
+
+	_assert_(sorted_integers);
+
+	// point to beginning and end of the array
+	beg=sorted_integers;
+	end=sorted_integers+num_integers;
+	mid=beg+(int)(num_integers/2);
+
+	if (*beg==target){
+		found=1;
+		offset=0;
+	}
+	else if(*(end-1)==target){
+		found=1;
+		offset=num_integers-1;
+	}
+	else{
+		while((beg <= end) && (*mid != target)){
+			// is the target in lower or upper half?
+			if (target < *mid) {
+				end = mid - 1;  //new end
+				mid = beg + (end-beg)/2;  //new middle
+			}
+			else {
+				beg = mid + 1;  //new beginning
+				mid = beg + (end-beg)/2;  //new middle
+			}
+		}
+
+		//did we find the target?
+		if (*mid == target) {
+			found=1;
+			offset=mid-sorted_integers;
+		}
+		else {
+			found=0;
+		}
+	}
+
+	/*Assign output pointers:*/
+	*poffset=offset;
+
+	/*Return result: */
+	return found;
+} /*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Sorting/sorting.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Sorting/sorting.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Sorting/sorting.h	(revision 27955)
@@ -0,0 +1,61 @@
+/*!\file: sorting.h
+ * \brief prototypes for sorting.h
+ */ 
+
+#ifndef _SORTING_H_
+#define  _SORTING_H_
+
+int binary_search(int* poffset,int target,int* sorted_integers,int num_integers);
+template <typename doubletype> int binary_search(int* poffset,doubletype target,doubletype* list,int length){ /*{{{*/
+	/*
+	 *             l[0]  l[1]  l[2]        l[n]  l[n+1]   l[length-1]
+	 *     <-------+-----+-----+-----+ ... +-----+........+-------------->
+	 * offset: -1     0     1     2           n              length -1
+	 *  
+	 *  offset = -1        target < list[0]
+	 *  offset = n         list[n] <= target < list[n+1]
+	 *  offset = length-1  list[length-1] <= target
+	 */
+
+	/*output: */
+	int offset = 0;
+	int found  = 0;
+
+	/*intermediary: */
+	int n0 = 0;
+	int n1 = int(length/2);
+	int n2 = length-1;
+
+	if(target<list[n0]){
+		found  = 1;
+		offset = -1;
+	}
+	else if(target>=list[n2]){
+		found  = 1;
+		offset = length-1;
+	}
+	else{
+		for(;;){
+			/*did we find the target?*/
+			if(list[n1]<=target && list[n1+1]>target){
+				found  = 1;
+				offset = n1;
+				break;
+			}
+			else if(target < list[n1]){
+				n2 = n1;
+				n1 = n0 + int((n2-n0)/2);
+			}
+			else{
+				n0 = n1;
+				n1 = n0 + int((n2-n0)/2);
+			}
+		}
+	}
+
+	/*Assign output pointer and return*/
+	*poffset=offset;
+	return found;
+} /*}}}*/
+
+#endif //ifndef _SORTING_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/String/ApiPrintf.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/String/ApiPrintf.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/String/ApiPrintf.cpp	(revision 27955)
@@ -0,0 +1,15 @@
+/*!\file:  ApiPrintf: this file only gets compiled and linked for issm.exe. API specific 
+ * versions of this file (for Python and Matlab) will be used for the wrappers (modules). 
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+
+void ApiPrintf(const char* string){
+	printf("%s",string);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/String/DescriptorIndex.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/String/DescriptorIndex.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/String/DescriptorIndex.cpp	(revision 27955)
@@ -0,0 +1,72 @@
+/*!\file:  DescriptorIndex: return type of qmu variable: indexed, scaled, nodal or regular
+ * + figure out the descriptor root. 
+ * Ex: scaled_Thickness_1 should return SCALEDENUM, fill root with Thickness, and initialize index 
+ * to 1.
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include "../Enum/Enum.h"
+#include "../io/io.h"
+#include "../Exceptions/exceptions.h"
+
+int  DescriptorIndex(char* root, int* pindex,char* descriptor){ //We assume root has already been allocated, and we just have to copy into it.
+
+	char * pch=NULL;
+
+	/*retrieve first token, separated by underscore: */
+	pch = strtok (descriptor,"_");
+	if(!pch)_error_("descriptor " << descriptor << " is not correctly formatted!");
+
+	if (strncmp(pch,"scaled",6)==0){
+		/*we have a scaled variable. recover the root: */
+		pch = strtok (NULL, "_");
+		if(!pch)_error_("scaled descriptor " << descriptor << " is not correctly formatted!");
+		memcpy(root,pch,(strlen(pch)+1)*sizeof(char));
+
+		/*now recover  the index if it exists: */
+		pch = strtok (NULL, "_");
+		if(!pch){
+			*pindex=-1;
+		}
+		else{
+			sscanf(pch,"%i",pindex);
+		}
+		return ScaledEnum;
+	}
+	else if (strncmp(pch,"indexed",7)==0){
+		/*we have an indexed variable. recover the root: */
+		pch = strtok (NULL, "_");
+		if(!pch)_error_("indexed descriptor " << descriptor << " is not correctly formatted!");
+		memcpy(root,pch,(strlen(pch)+1)*sizeof(char));
+		/*now recover  the index: */
+		pch = strtok (NULL, "_");
+		if(!pch)_error_("indexed descriptor " << descriptor << " is not correctly formatted!");
+		sscanf(pch,"%i",pindex);
+		return IndexedEnum;
+	}
+	else if (strncmp(pch,"nodal",5)==0){
+		/*we have an indexed variable. recover the root: */
+		pch = strtok (NULL, "_");
+		if(!pch)_error_("nodal descriptor " << descriptor << " is not correctly formatted!");
+		memcpy(root,pch,(strlen(pch)+1)*sizeof(char));
+		/*now recover  the index: */
+		pch = strtok (NULL, "_");
+		if(!pch)_error_("nodal descriptor " << descriptor << " is not correctly formatted!");
+		sscanf(pch,"%i",pindex);
+		return NodalEnum;
+	}
+	else{
+		/*We don't have _ in the name, this is a regular variable: */
+		memcpy(root,pch,(strlen(pch)+1)*sizeof(char));
+		*pindex=-1;
+		return RegularEnum;
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/String/sharedstring.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/String/sharedstring.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/String/sharedstring.h	(revision 27955)
@@ -0,0 +1,11 @@
+/*!\file: sharedstring.h
+ * \brief prototypes for sharedstring.h
+ */ 
+
+#ifndef _SHAREDSTRING_H_
+#define  _SHAREDSTRING_H_
+
+int  DescriptorIndex(char* root, int* pindex,char* descriptor);
+void ApiPrintf(const char* string);
+
+#endif //ifndef _SHAREDSTRING_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Threads/LaunchThread.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Threads/LaunchThread.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Threads/LaunchThread.cpp	(revision 27955)
@@ -0,0 +1,70 @@
+/*!\file:  LaunchThread.cpp
+ * \brief  launch thread in a generic way, covering single and multi-threaded cases
+ * This routine attempts to simplify management of multi-threading. When multi-threadeing 
+ * is not requested (serial run), LaunchThread will just call the function (provided in argument 
+ * list), nothing fancy there.  If multi-threading is requested, LaunchThread will launch the 
+ * function on multiple threads (num_threads of them), and provide these functions with the 
+ * local data they need (folded in the "gate" structure) + the thread id + the number of threads 
+ * All this info is collected in the pthread_handle structure. 
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _MULTITHREADING_
+#include <pthread.h>
+#endif
+
+#include "./issm_threads.h"
+#include "../MemOps/MemOps.h"
+#include "../Exceptions/exceptions.h"
+
+void LaunchThread(void* function(void*), void* gate,int num_threads){
+
+	#ifdef _MULTITHREADING_
+	int i;
+	int            *status  = NULL;
+	pthread_t      *threads = NULL;
+	pthread_handle *handles = NULL;
+
+	/*check number of threads*/
+	if(num_threads<1)    _error_("number of threads must be at least 1");
+	if(num_threads>2000) _error_("number of threads seems to be too high ("<<num_threads<<">2000)");
+
+	/*dynamically allocate: */
+	threads=xNew<pthread_t>(num_threads);
+	handles=xNew<pthread_handle>(num_threads);
+
+	for(i=0;i<num_threads;i++){
+		handles[i].gate=gate;
+		handles[i].id=i;
+		handles[i].num=num_threads;
+	}
+	for(i=0;i<num_threads;i++){
+
+		if(pthread_create(threads+i,NULL,function,(void*)(handles+i))){
+			_error_("pthread_create error");
+		}
+	}
+	for(i=0;i<num_threads;i++){
+		if(pthread_join(threads[i],(void**)&status)){
+			_error_("pthread_join error");
+		}
+	}
+
+	/*Free resources:*/
+	xDelete<pthread_t>(threads);
+	xDelete<pthread_handle>(handles);
+
+	#else
+	pthread_handle handle;
+	handle.gate=gate;
+	handle.id=0;
+	handle.num=1;
+
+	function((void*)&handle);
+	#endif
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Threads/PartitionRange.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Threads/PartitionRange.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Threads/PartitionRange.cpp	(revision 27955)
@@ -0,0 +1,33 @@
+/*!\file:  PartitionRange.cpp
+ * \brief: return i0,i1, range of local thread.
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <math.h>
+
+void PartitionRange(int* pi0,int* pi1, int num_el,int num_threads,int my_thread){
+
+	/*output: */
+	int i0=-1;
+	int i1=-1;
+
+	int step;
+	int i;
+
+	/*distribute elements across threads :*/
+	step=(int)floor((double)num_el/(double)num_threads);
+	for(i=0;i<(my_thread+1);i++){
+		i0=i*step;
+		if(i==(num_threads-1))i1=num_el;
+		else i1=i0+step;
+	}
+
+	/*Assign output pointers:*/
+	*pi0=i0;
+	*pi1=i1;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Threads/issm_threads.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Threads/issm_threads.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Threads/issm_threads.h	(revision 27955)
@@ -0,0 +1,21 @@
+/*!\file: issm_threads.h
+ * \brief prototypes for issm_threads.h
+ */ 
+
+#ifndef _ISSM_THREADS_H_
+#define  _ISSM_THREADS_H_
+
+/*structure that holds the local data for each thread (in the gate), 
+ * + the thread specific information (my id + number of threads) : */
+typedef struct{
+	void* gate;
+	int   id;
+	int   num;
+} pthread_handle;
+
+/*routine that launches "function" in a multi-threaded way if requested, 
+ * or just serially if not requested: */
+void LaunchThread(void* function(void*), void* gate,int num_threads);
+void PartitionRange(int* pi0,int* pi1, int num_el,int num_threads,int my_thread);
+
+#endif //ifndef _ISSM_THREADS_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Triangle/AssociateSegmentToElement.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Triangle/AssociateSegmentToElement.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Triangle/AssociateSegmentToElement.cpp	(revision 27955)
@@ -0,0 +1,24 @@
+/*!\file:  AssociateSegmentToElement.cpp
+ * \brief for each segment, look for the corresponding element.
+ */ 
+
+#include "./triangle.h"
+
+int AssociateSegmentToElement(int** psegments,int nseg,int* index,int nel){
+
+	/*node indices: */
+	int A,B;
+
+	/*Recover segments: */
+	int* segments=*psegments;
+
+	for(int i=0;i<nseg;i++){
+		A=segments[3*i+0];
+		B=segments[3*i+1];
+		segments[3*i+2]=FindElement(A,B,index,nel)+1; //matlab indexing.
+	}
+
+	/*Assign output pointers: */
+	*psegments=segments;
+	return 1;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Triangle/GridInsideHole.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Triangle/GridInsideHole.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Triangle/GridInsideHole.cpp	(revision 27955)
@@ -0,0 +1,51 @@
+/*
+ * GridInsideHole.c:
+ * from a convex set of points, figure out a point that for sure lies inside the profile.
+ */
+
+#include <math.h>
+
+#include "./triangle.h"
+#include "../Exp/exp.h"
+
+#undef M_PI
+#define M_PI 3.141592653589793238462643
+
+int GridInsideHole(double* px0,double* py0,int n,double* x,double* y){
+
+	double flag=0.0;
+	double xA,xB,xC,xD,xE;
+	double yA,yB,yC,yD,yE;
+
+	/*Take first and last vertices: */
+	xA=x[0];
+	yA=y[0];
+	xB=x[n-1];
+	yB=y[n-1];
+
+	/*Figure out middle of segment [A B]: */
+	xC=(xA+xB)/2;
+	yC=(yA+yB)/2;
+
+	/*D and E are on each side of segment [A B], on the median line between segment [A  B], 
+	 *at an angle of 10 degree (less than the minimum 30 enforced by the quality of the mesh: */
+	xD=xC+tan(10./180.*M_PI)*(yC-yA);
+	yD=yC+tan(10./180.*M_PI)*(xA-xC);
+	xE=xC-tan(10./180.*M_PI)*(yC-yA);
+	yE=yC-tan(10./180.*M_PI)*(xA-xC);
+
+	/*Either E or D is inside profile (x,y): */
+	IsInPolySerial(&flag,&xD,&yD,1,x,y,n,2);
+	/*FIXME: used to be 'flag' and not '!flag', check*/
+	if(!flag){
+		/*D is inside the poly: */
+		*px0=xD;
+		*py0=yD;
+	}
+	else{
+		/*E is inside the poly: */
+		*px0=xE;
+		*py0=yE;
+	}
+	return 1;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Triangle/OrderSegments.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Triangle/OrderSegments.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Triangle/OrderSegments.cpp	(revision 27955)
@@ -0,0 +1,46 @@
+/*
+ * OrderSegments.c: 
+ * reorder segments so that their normals point outside the domain outline.
+ */
+#include "./triangle.h"
+
+int OrderSegments(int** psegments,int nseg,int* index,int nel){
+
+	/*vertex indices: */
+	int A,B;
+
+	/*element index*/
+	int el;
+
+	/*Recover segments: */
+	int* segments=*psegments;
+
+	for(int i=0;i<nseg;i++){
+		A=segments[3*i+0];
+		B=segments[3*i+1];
+		el=segments[3*i+2]-1; //after AssociateSegmentToElement, el was a matlab index, we need the c index now.
+
+		if (index[3*el+0]==A){
+			if (index[3*el+2]==B){
+				segments[3*i+0]=B;
+				segments[3*i+1]=A;
+			}
+		}
+		else if (index[3*el+1]==A){
+			if (index[3*el+0]==B){
+				segments[3*i+0]=B;
+				segments[3*i+1]=A;
+			}
+		}
+		else{
+			if (index[3*el+1]==B){
+				segments[3*i+0]=B;
+				segments[3*i+1]=A;
+			}
+		}
+	}
+
+	/*Assign output pointers: */
+	*psegments=segments;
+	return 1;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Triangle/SplitMeshForRifts.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Triangle/SplitMeshForRifts.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Triangle/SplitMeshForRifts.cpp	(revision 27955)
@@ -0,0 +1,96 @@
+/*
+ * SplitMeshForRifts.c:
+ */
+#include "./triangle.h"
+#include "../MemOps/MemOps.h"
+
+int SplitMeshForRifts(int* pnel,int** pindex,int* pnods,double** px,double** py,int* pnsegs,int** psegments,int** psegmentmarkerlist){
+
+	/*Some notes on dimensions: 
+	index  of size nelx3
+	x and y of size nodsx1
+	segments of size nsegsx3*/
+
+	int i,j,k,l;
+	int node;
+	int el;
+	int  nriftsegs;
+	int* riftsegments=NULL; 
+	int* flags=NULL;
+	int  NumGridElementListOnOneSideOfRift;
+	int* GridElementListOnOneSideOfRift=NULL;
+
+	/*Recover input: */
+	int     nel               = *pnel;
+	int    *index             = *pindex;
+	int     nods              = *pnods;
+	double *x                 = *px;
+	double *y                 = *py;
+	int     nsegs             = *pnsegs;
+	int    *segments          = *psegments;
+	int    *segmentmarkerlist = *psegmentmarkerlist;
+
+	/*Establish list of segments that belong to a rift: */
+	/*riftsegments of size nriftsegsx4 (4 for first element on segment,second element,first node and second snode)*/
+	RiftSegmentsFromSegments(&nriftsegs,&riftsegments,nel,index,nsegs,segments);
+
+	/*Go through all nodes of the rift segments, and start splitting the mesh: */
+	flags=xNewZeroInit<int>(nods); //to make sure we don't split the same nodes twice!
+	for (i=0;i<nriftsegs;i++){
+		for (j=0;j<2;j++){
+
+			node=riftsegments[4*i+j+2];
+			if(flags[node-1]){
+				/*This node was already split, skip:*/
+				continue;
+			}
+			else{
+				flags[node-1]=1;
+			}
+
+			if(IsGridOnRift(riftsegments,nriftsegs,node)){
+
+				DetermineGridElementListOnOneSideOfRift(&NumGridElementListOnOneSideOfRift,&GridElementListOnOneSideOfRift,i,nriftsegs,riftsegments,node,index,nel);
+
+				/*Summary: we have for node, a list of elements
+				 * (GridElementListOnOneSideOfRift, of size
+				 * NumGridElementListOnOneSideOfRift) that all contain node 
+				 *and that are on the same side of the rift. For all these
+				 elements, we clone node into another node, and we swap all
+				 instances of node in the triangulation *for those elements, to the
+				 new node.*/
+
+				//create new node
+				x=xReNew<double>(x,nods,nods+1);
+				y=xReNew<double>(y,nods,nods+1);
+				x[nods]=x[node-1]; //matlab indexing
+				y[nods]=y[node-1]; //matlab indexing
+
+				//augment number of nodes 
+				nods++;
+
+				//change elements owning this node
+				for (k=0;k<NumGridElementListOnOneSideOfRift;k++){
+					el=GridElementListOnOneSideOfRift[k];
+					for (l=0;l<3;l++){
+						if (index[3*el+l]==node) index[3*el+l]=nods; //again, matlab indexing.
+					}
+				}
+			}// if(IsGridOnRift(riftsegments,nriftsegs,node))
+		} //for(j=0;j<2;j++)
+	} //for (i=0;i<nriftsegs;i++)
+
+	/*update segments: they got modified completely by adding new nodes.*/
+	UpdateSegments(&segments,&segmentmarkerlist, &nsegs,index,x,y,riftsegments,nriftsegs,nods,nel);
+
+	/*Assign output pointers: */
+	*pnel=nel;
+	*pindex=index;
+	*pnods=nods;
+	*px=x;
+	*py=y;
+	*pnsegs=nsegs;
+	*psegments=segments;
+	*psegmentmarkerlist=segmentmarkerlist;
+	return 1;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Triangle/TriangleUtils.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Triangle/TriangleUtils.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Triangle/TriangleUtils.cpp	(revision 27955)
@@ -0,0 +1,912 @@
+/*
+ * TriangleUtils: mesh manipulation routines: 
+ */
+
+#include <stdio.h>
+
+#include "./triangle.h"
+#include "../Exceptions/exceptions.h"
+#include "../MemOps/MemOps.h"
+
+#define RIFTPENALTYPAIRSWIDTH 8
+int IsGridOnRift(int* riftsegments, int nriftsegs, int node){/*{{{*/
+
+	/*Does this node belong to 4 elements, or just 2? If it belongs to 4 elements, it is inside a rift, 
+	 *if it belongs to 2 elements, it is on the tip of a rift, or it has already been split across the rift (see below).*/
+
+	int i;
+	int j;
+	int count;
+
+	count=0;
+	for (i=0;i<nriftsegs;i++){
+		for (j=0;j<2;j++){
+			if ((*(riftsegments+4*i+2+j))==node) count++;
+		}
+	}
+	if (count==2){
+		return 1;
+	}
+	else{
+		return 0;
+	}
+}/*}}}*/
+int GridElementsList(int** pGridElements, int* pNumGridElements,int node,int* index,int nel){/*{{{*/
+
+	/*From a node, recover all the elements that are connected to it: */
+	int i,j;
+	int noerr=1;
+
+	int max_number_elements=12;
+	int current_size;
+	int NumGridElements;
+	int* GridElements=NULL;
+	int* GridElementsRealloc=NULL;
+
+	/*From a mesh with 30 degrees minimum angle, we get 12 possible elements that own 
+	 * the node. We start by allocating GridElements with that size, and realloc 
+	 * more if needed.*/
+
+	current_size=max_number_elements;
+	NumGridElements=0;
+	GridElements=xNew<int>(max_number_elements);
+
+	for (i=0;i<nel;i++){
+		for (j=0;j<3;j++){
+			if (index[3*i+j]==node){
+				if (NumGridElements<=(current_size-1)){
+					GridElements[NumGridElements]=i;
+					NumGridElements++;
+					break;
+				}
+				else{
+					/*Reallocate another max_number_elements slots in the GridElements: */
+					GridElementsRealloc=xReNew<int>(GridElements,current_size,(current_size+max_number_elements));
+					if (!GridElementsRealloc){
+						noerr=0;
+						goto cleanup_and_return;
+					}
+					current_size+=max_number_elements;
+					GridElements=GridElementsRealloc;
+					GridElements[NumGridElements]=i;
+					NumGridElements++;
+					break;
+				}
+			}
+		}
+	}
+	cleanup_and_return:
+	if(!noerr){
+		xDelete<int>(GridElements);
+	}
+	/*Allocate return pointers: */
+	*pGridElements=GridElements;
+	*pNumGridElements=NumGridElements;
+	return noerr;
+}/*}}}*/
+int IsNeighbor(int el1,int el2,int* index){/*{{{*/
+	/*From a triangulation held in index, figure out if elements 1 and 2 have two nodes in common: */
+	int i,j;
+	int count=0;
+	for (i=0;i<3;i++){
+		for (j=0;j<3;j++){
+			if (index[3*el1+i]==index[3*el2+j])count++;
+		}
+	}
+	if (count==2){
+		return 1;
+	}
+	else{
+		return 0;
+	}
+}/*}}}*/
+int IsOnRift(int el,int nriftsegs,int* riftsegments){/*{{{*/
+	/*From a list of elements segments, figure out if el belongs to it: */
+	int i;
+	for (i=0;i<nriftsegs;i++){
+		if ((*(riftsegments+4*i+0)==el) || (*(riftsegments+4*i+1)==el)){
+			return 1;
+		}
+	}
+	return 0;
+}/*}}}*/
+void RiftSegmentsFromSegments(int* pnriftsegs, int** priftsegments, int nel,int* index,int nsegs,int* segments){/*{{{*/
+
+	int i,counter;
+	int el,el2;
+
+	int  nriftsegs;
+	int* riftsegments=NULL;
+	int* riftsegments_uncompressed=NULL; 
+	int  element_nodes[3];
+
+	/*Allocate segmentflags: */
+	riftsegments_uncompressed=xNewZeroInit<int>(nsegs*5);
+
+	/*Find the segments that belong to a rift: they are the ones that see two elements. The other ones belong to a boundary 
+	 *or a hole: */
+	nriftsegs=0;
+	for (i=0;i<nsegs;i++){
+		el=(int)*(segments+3*i+2)-1; //element found in AssociateSegmentToElements
+		/*Temporarily set nodes belonging to the segments to -1 in the triangulation index, and 
+		 *then  proceed to find another element that owns the segment. If we don't find it, we know 
+		 *we are dealing with a boundary or hole, otherwise, we are dealing with a rift: */
+		element_nodes[0]=*(index+3*el+0);
+		element_nodes[1]=*(index+3*el+1);
+		element_nodes[2]=*(index+3*el+2);
+
+		index[3*el+0]=-1;
+		index[3*el+1]=-1;
+		index[3*el+2]=-1;
+
+		el2=FindElement(*(segments+3*i+0),*(segments+3*i+1),index,nel); 
+
+		/*Restore index: */
+		index[3*el+0]=element_nodes[0];
+		index[3*el+1]=element_nodes[1];
+		index[3*el+2]=element_nodes[2];
+
+		if (el2!=-1){
+			/*el and el2 are on a segment rift, facing one another, plug them into riftsegments_uncompressed: */
+		    riftsegments_uncompressed[5*i+0]=1;
+		    riftsegments_uncompressed[5*i+1]=el;
+		    riftsegments_uncompressed[5*i+2]=el2;
+		    riftsegments_uncompressed[5*i+3]=segments[3*i+0];
+			 riftsegments_uncompressed[5*i+4]=segments[3*i+1];
+			 nriftsegs++;
+		}
+	}
+
+	/*Compress riftsegments_uncompressed:*/
+	riftsegments=xNew<int>(nriftsegs*4);
+	counter=0;
+	for (i=0;i<nsegs;i++){
+		if (riftsegments_uncompressed[5*i+0]){
+			riftsegments[counter*4+0]=riftsegments_uncompressed[5*i+1];
+			riftsegments[counter*4+1]=riftsegments_uncompressed[5*i+2];
+			riftsegments[counter*4+2]=riftsegments_uncompressed[5*i+3];
+			riftsegments[counter*4+3]=riftsegments_uncompressed[5*i+4];
+			counter++;
+		}
+	}
+	xDelete<int>(riftsegments_uncompressed);
+
+	/*Assign output pointers: */
+	*priftsegments=riftsegments;
+	*pnriftsegs=nriftsegs;
+}/*}}}*/
+int DetermineGridElementListOnOneSideOfRift(int* pNumGridElementListOnOneSideOfRift, int** pGridElementListOnOneSideOfRift, int segmentnumber, int nriftsegs, int* riftsegments, int node,int* index,int nel){/*{{{*/
+
+	int noerr=1;
+	int k,l,counter;
+	int newel;
+
+	int* GridElements=NULL;
+	int  NumGridElements;
+
+	/*Output: */
+	int NumGridElementListOnOneSideOfRift;
+	int* GridElementListOnOneSideOfRift=NULL;
+
+	/*Build a list of all the elements connected to this node: */
+	GridElementsList(&GridElements,&NumGridElements,node,index,nel);
+
+	/*Figure out the list of elements  that are on the same side of the rift. To do so, we start from one 
+	 * side of the rift and keep rotating in the same direction:*/
+	GridElementListOnOneSideOfRift=xNew<int>(NumGridElements);
+	//bootstrap the GridElementListOnOneSideOfRift by filling elements from riftsegments: */
+	GridElementListOnOneSideOfRift[0]=*(riftsegments+4*segmentnumber+0); /*this one does not belong to the same side, but is just there 
+															   for a rotation direction, we 'll take it out when we are 
+															   done rotating*/
+	GridElementListOnOneSideOfRift[1]=*(riftsegments+4*segmentnumber+1);
+	counter=1;
+	for (;;){
+		/*Find neighbour of element GridElementListOnOneSideOfRift[counter], not 
+		 * equal to GridElementListOnOneSideOfRift[counter-1]*/
+		for (k=0;k<NumGridElements;k++){
+			if(IsNeighbor(GridElements[k],GridElementListOnOneSideOfRift[counter],index)){
+				/*Verify this element is not already in our list of element on the same side of the rift: */
+				newel=1;
+				for (l=0;l<=counter;l++){
+					if (GridElements[k]==GridElementListOnOneSideOfRift[l]){
+						newel=0;
+						break;
+					}
+				}
+				if (newel){
+					counter++;
+					GridElementListOnOneSideOfRift[counter]=GridElements[k];
+					if (IsOnRift(GridElements[k],nriftsegs,riftsegments)){
+						break;
+					}
+					k=-1;
+				}
+			}
+		}
+		/*Reduce counter by 1 and get rift of first element in GridElementListOnOneSideOfRift:*/
+		NumGridElementListOnOneSideOfRift=counter;
+		for (l=0;l<NumGridElementListOnOneSideOfRift;l++){
+			GridElementListOnOneSideOfRift[l]=GridElementListOnOneSideOfRift[l+1];
+		}
+		break;
+	}// for (;;)
+
+	/*Free resources: */
+	xDelete<int>(GridElements);
+	/*Assign output pointers: */
+	*pNumGridElementListOnOneSideOfRift=NumGridElementListOnOneSideOfRift;
+	*pGridElementListOnOneSideOfRift=GridElementListOnOneSideOfRift;
+	return noerr;
+}/*}}}*/
+int UpdateSegments(int** psegments,int** psegmentmarkerlist, int* pnsegs,int* index, double* x,double* y,int* riftsegments,int nriftsegs,int nods,int nel){/*{{{*/
+
+	int noerr=1;
+	int i,j,k;
+	int el1,el2;
+
+	int *segments          = NULL;
+	int *segmentmarkerlist = NULL;
+	int  nsegs;
+
+	/*Recover input: */
+	segments          = *psegments;
+	segmentmarkerlist = *psegmentmarkerlist;
+	nsegs             = *pnsegs;
+
+	/*Reallocate segments: */
+	segments         =xReNew<int>(segments,         nsegs*3,(nsegs+nriftsegs)*3);
+	segmentmarkerlist=xReNew<int>(segmentmarkerlist,nsegs,(nsegs+nriftsegs));
+
+	/*First, update the existing segments to the new nodes :*/
+	for (i=0;i<nriftsegs;i++){
+		el1=riftsegments[4*i+0];
+		el2=riftsegments[4*i+1];
+		for (j=0;j<nsegs;j++){
+			if (segments[3*j+2]==(el1+1)){
+				/*segment j is the same as rift segment i.Let's update segments[j][:] using  element el1 and the corresponding rift segment.
+				 *Because riftsegments does not represent a list of rift segments anymore (it got heavily modified in SplitElementsForRifts, 
+				 *we can only rely on the position (x,y) of the rift nodes to create a segment:*/
+				for (k=0;k<3;k++){
+					if ((x[*(index+el1*3+k)-1]==x[*(segments+3*j+0)-1]) && (y[*(index+el1*3+k)-1]==y[*(segments+3*j+0)-1])){
+						*(segments+3*j+0)=*(index+el1*3+k); _assert_(segments[3*j+0]<nods+1);
+						break;
+					}
+				}
+				for (k=0;k<3;k++){
+					if ((x[*(index+el1*3+k)-1]==x[*(segments+3*j+1)-1])  && (y[*(index+el1*3+k)-1]==y[*(segments+3*j+1)-1])){
+						*(segments+3*j+1)=*(index+el1*3+k); _assert_(segments[3*j+1]<nods+1);
+						break;
+					}
+				}
+				/*Deal with el2: */
+				*(segments+3*(nsegs+i)+2)=el2+1;
+				*(segmentmarkerlist+(nsegs+i))=*(segmentmarkerlist+j);
+				for (k=0;k<3;k++){
+					if ((x[*(index+el2*3+k)-1]==x[*(segments+3*j+0)-1]) && (y[*(index+el2*3+k)-1]==y[*(segments+3*j+0)-1])){
+						*(segments+3*(nsegs+i)+0)=*(index+el2*3+k); _assert_(segments[3*(nsegs+i)+0]<nods+1);
+						break;
+					}
+				}
+				for (k=0;k<3;k++){
+					if ((x[*(index+el2*3+k)-1]==x[*(segments+3*j+1)-1]) && (y[*(index+el2*3+k)-1]==y[*(segments+3*j+1)-1])){
+						*(segments+3*(nsegs+i)+1)=*(index+el2*3+k); _assert_(segments[3*(nsegs+i)+1]<nods+1);
+						break;
+					}
+				}
+			}
+			if (*(segments+3*j+2)==(el2+1)){
+				/*segment j is the same as rift segment i.*/
+				/*Let's update segments[j][:] using  element el2 and the corresponding rift segment: */
+				for (k=0;k<3;k++){
+					if ((x[*(index+el2*3+k)-1]==x[*(segments+3*j+0)-1]) && (y[*(index+el2*3+k)-1]==y[*(segments+3*j+0)-1])){
+						*(segments+3*j+0)=*(index+el2*3+k); _assert_(segments[3*j+0]<nods+1);
+						break;
+					}
+				}
+				for (k=0;k<3;k++){
+					if ((x[*(index+el2*3+k)-1]==x[*(segments+3*j+1)-1]) && (y[*(index+el2*3+k)-1]==y[*(segments+3*j+1)-1])){
+						*(segments+3*j+1)=*(index+el2*3+k);_assert_(segments[3*j+1]<nods+1);
+						break;
+					}
+				}
+				/*Deal with el1: */
+				*(segments+3*(nsegs+i)+2)=el1+1;
+				*(segmentmarkerlist+(nsegs+i))=*(segmentmarkerlist+j);
+				for (k=0;k<3;k++){
+					if ((x[*(index+el1*3+k)-1]==x[*(segments+3*j+0)-1]) && (y[*(index+el1*3+k)-1]==y[*(segments+3*j+0)-1])){
+						*(segments+3*(nsegs+i)+0)=*(index+el1*3+k);_assert_(segments[3*(nsegs+i)+0]<nods+1);
+						break;
+					}
+				}
+				for (k=0;k<3;k++){
+					if ((x[*(index+el1*3+k)-1]==x[*(segments+3*j+1)-1]) && (y[*(index+el1*3+k)-1]==y[*(segments+3*j+1)-1])){
+						*(segments+3*(nsegs+i)+1)=*(index+el1*3+k);_assert_(segments[3*(nsegs+i)+1]<nods+1);
+						break;
+					}
+				}
+			}
+		}
+	}
+	nsegs+=nriftsegs;
+
+	/*Assign output pointers: */
+	*psegments=segments;
+	*psegmentmarkerlist=segmentmarkerlist;
+	*pnsegs=nsegs;
+
+	return noerr;
+}/*}}}*/
+int FindElement(int A,int B,int* index,int nel){/*{{{*/
+
+	int el=-1;
+	for (int n=0;n<nel;n++){
+		if(((index[3*n+0]==A) || (index[3*n+1]==A) || (index[3*n+2]==A)) && ((index[3*n+0]==B) || (index[3*n+1]==B) || (index[3*n+2]==B))){
+			el=n;
+			break;
+		}
+	}
+	return el;
+}/*}}}*/
+int SplitRiftSegments(int** psegments,int** psegmentmarkerlist, int* pnumsegs, int* pnumrifts,int** priftsnumsegs,int*** priftssegments,int numrifts,int nods,int nel){/*{{{*/
+
+	/*Using segment markers, wring out the rift segments from the segments. Rift markers are 
+	 *of the form 2+i where i=0 to number of rifts */
+
+	int noerr=1;
+	int i,j,counter;
+
+	/*input: */
+	int *segments          = NULL;
+	int *segmentmarkerlist = NULL;
+	int numsegs;
+
+	/*output: */
+	int   new_numsegs;
+	int  *riftsnumsegs       = NULL;
+	int **riftssegments      = NULL;
+	int  *new_segments       = NULL;
+	int  *new_segmentmarkers = NULL;
+
+	/*intermediary: */
+	int* riftsegment=NULL;
+
+	/*Recover input arguments: */
+	segments          = *psegments;
+	numsegs           = *pnumsegs;
+	segmentmarkerlist = *psegmentmarkerlist;
+
+	/*First, figure out  how many segments will be left in 'segments': */
+	counter=0;
+	for (i=0;i<numsegs;i++){
+		if (segmentmarkerlist[i]==1)counter++; //1 is default marker for non-rifts;
+	}
+	/*Allocate new segments: */
+	new_numsegs=counter;
+	new_segments=xNew<int>(new_numsegs*3);
+	new_segmentmarkers=xNew<int>(new_numsegs);
+
+	/*Copy new segments info : */
+	counter=0;
+	for (i=0;i<numsegs;i++){
+		if (segmentmarkerlist[i]==1){
+			new_segments[3*counter+0]=segments[3*i+0];
+			new_segments[3*counter+1]=segments[3*i+1];
+			new_segments[3*counter+2]=segments[3*i+2];
+			new_segmentmarkers[counter]=segmentmarkerlist[i];
+			counter++;
+		}
+	}
+
+	/*Now deal with rift segments: */
+	riftsnumsegs=xNew<int>(numrifts);
+	riftssegments=xNew<int*>(numrifts);
+	for (i=0;i<numrifts;i++){
+		/*Figure out how many segments for rift i: */
+		counter=0;
+		for (j=0;j<numsegs;j++){
+			if (segmentmarkerlist[j]==2+i)counter++;
+		}
+		riftsnumsegs[i]=counter;
+		riftsegment=xNew<int>(counter*3);
+		/*Copy new segments info :*/
+		counter=0;
+		for (j=0;j<numsegs;j++){
+			if (segmentmarkerlist[j]==(2+i)){
+				riftsegment[3*counter+0]=segments[3*j+0];_assert_(riftsegment[3*counter+0]<nods+1);
+				riftsegment[3*counter+1]=segments[3*j+1];_assert_(riftsegment[3*counter+1]<nods+1);
+				riftsegment[3*counter+2]=segments[3*j+2];_assert_(riftsegment[3*counter+2]<nel+1);
+				counter++;
+			}
+		}
+		*(riftssegments+i)=riftsegment;
+	}
+
+	/*Free resources: */
+	xDelete<int>(segments);
+
+	/*Assign output pointers: */
+	*psegments=new_segments;
+	*psegmentmarkerlist=new_segmentmarkers;
+	*pnumsegs=new_numsegs;
+	*pnumrifts=numrifts;
+	*priftssegments=riftssegments;
+	*priftsnumsegs=riftsnumsegs;
+	return noerr;
+}/*}}}*/
+int PairRiftElements(int** priftsnumpairs,int*** priftspairs,int numrifts,int* riftsnumsegments,int** riftssegments,double* x,double* y){/*{{{*/
+
+	int noerr=1;
+	int i,j,k;
+
+	/*output: */
+	int  *riftsnumpairs = NULL;
+	int **riftspairs    = NULL;
+
+	/*intermediary :*/
+	int  numsegs;
+	int* segments=NULL;
+	int* pairs=NULL;
+	int  node1,node2,node3,node4;
+
+	riftsnumpairs=xNew<int>(numrifts);
+	riftspairs=xNew<int*>(numrifts);
+	for (i=0;i<numrifts;i++){
+		segments=riftssegments[i];
+		numsegs =riftsnumsegments[i];
+		riftsnumpairs[i]=numsegs;
+		pairs=xNew<int>(2*numsegs);
+		for (j=0;j<numsegs;j++){
+			pairs[2*j+0]=segments[3*j+2]; //retrieve element to which this segment belongs.
+			node1=segments[3*j+0]-1; node2=segments[3*j+1]-1;
+			/*Find element facing on other side of rift: */
+			for (k=0;k<numsegs;k++){
+				if (k==j)continue;
+				node3=segments[3*k+0]-1; node4=segments[3*k+1]-1;
+				/*We are trying to find 2 elements, where position of node3 == position of node1, and position of node4 == position of node2*/
+				if (   ((x[node3]==x[node1]) && (y[node3]==y[node1]) && (x[node4]==x[node2]) && (y[node4]==y[node2]))
+				    || ((x[node3]==x[node2]) && (y[node3]==y[node2]) && (x[node4]==x[node1]) && (y[node4]==y[node1]))  ){
+					/*We found the corresponding element: */
+					pairs[2*j+1]=segments[3*k+2];
+					break;
+				}
+			}
+		}
+		riftspairs[i]=pairs;
+	}
+
+	/*Assign output pointers: */
+	*priftsnumpairs=riftsnumpairs;
+	*priftspairs=riftspairs;
+	return noerr;
+}/*}}}*/
+int IsRiftPresent(int* priftflag,int* pnumrifts,int* segmentmarkerlist,int nsegs){/*{{{*/
+
+	int i;
+	int noerr=1;
+
+	/*output: */
+	int riftflag=0;
+	int numrifts=0;
+
+	int maxmark=1; //default marker for regular segments
+
+	/*Any marker >=2 indicates a certain rift: */
+	numrifts=0;
+	for (i=0;i<nsegs;i++){
+		if (segmentmarkerlist[i]>maxmark){
+			numrifts++;
+			maxmark=segmentmarkerlist[i];
+		}
+	}
+	if(numrifts)riftflag=1;
+
+	/*Assign output pointers:*/
+	*priftflag=riftflag;
+	*pnumrifts=numrifts;
+	return noerr;
+}/*}}}*/
+int OrderRifts(int** priftstips,int** riftssegments,int** riftspairs,int numrifts,int* riftsnumsegments,double* x,double* y,int nods,int nels){/*{{{*/
+
+	int noerr=1;
+	int i,j,k,counter;
+
+	/*intermediary: */
+	int *riftsegments = NULL;
+	int *riftpairs    = NULL;
+	int numsegs;
+
+	/*ordering and copy: */
+	int *order             = NULL;
+	int *riftsegments_copy = NULL;
+	int *riftpairs_copy    = NULL;
+
+	/*node and element manipulation: */
+	int node1,node2,node3,node4,temp_node,tip1,tip2,node;
+	int el2;
+	int already_ordered=0;
+
+	/*output: */
+	int* riftstips=NULL;
+
+	/*Allocate byproduct of this routine, riftstips: */
+	riftstips=xNew<int>(numrifts*2);
+
+	/*Go through all rifts: */
+	for (i=0;i<numrifts;i++){
+		riftsegments = riftssegments[i];
+		riftpairs    = riftspairs[i];
+		numsegs      = riftsnumsegments[i];
+
+		/*Allocate copy of riftsegments and riftpairs, 
+		 *as well as ordering vector: */
+		riftsegments_copy=xNew<int>(numsegs*3);
+		riftpairs_copy=xNew<int>(numsegs*2);
+		order=xNew<int>(numsegs);
+
+		/*First find the tips, using the pairs. If a pair of elements has one node in common, this node is a rift tip: */
+		tip1=-1;
+		tip2=-1;
+
+		for (j=0;j<numsegs;j++){
+			el2=*(riftpairs+2*j+1);
+			node1=*(riftsegments+3*j+0);
+			node2=*(riftsegments+3*j+1);
+			/*Summary, el1 and el2 are facing one another across the rift. node1 and node2 belong to el1 and 
+			 *are located on the rift. Find node3 and node4, nodes belonging to el2 and located on the rift: */
+			for (k=0;k<numsegs;k++){
+				if (*(riftsegments+3*k+2)==el2){
+					node3=*(riftsegments+3*k+0);
+					node4=*(riftsegments+3*k+1);
+					break;
+				}
+			}
+			/* Make sure node3 faces node1 and node4 faces node2: */
+			_assert_(node1<nods+1 && node4<nods+1);
+			_assert_(node1>0 && node4>0);
+			if ((x[node1-1]==x[node4-1]) && (y[node1-1]==y[node4-1])){
+				/*Swap node3 and node4:*/
+				temp_node=node3;
+				node3=node4;
+				node4=temp_node;
+			}
+
+			/*Figure out if a tip is on this element: */
+			if (node3==node1){
+				/*node1 is a tip*/
+				if (tip1==-1) {
+					tip1=node1;
+					continue;
+				}
+				if ((tip2==-1) && (node1!=tip1)){
+					tip2=node1;
+					break;
+				}
+			}
+
+			if (node4==node2){
+				/*node2 is a tip*/
+				if (tip1==-1){
+					tip1=node2;
+					continue;
+				}
+				if ((tip2==-1) && (node2!=tip1)){
+					tip2=node2;
+					break;
+				}
+			}
+		}
+
+		/*Record tips in riftstips: */
+		*(riftstips+2*i+0)=tip1;
+		*(riftstips+2*i+1)=tip2;
+
+		/*We have the two tips for this rift.  Go from tip1 to tip2, and figure out the order in which segments are sequential. 
+		 *Because two elements are connected to tip1, we chose one first, which defines the direction we are rotating along the rift. */
+		node=tip1;
+		for (counter=0;counter<numsegs;counter++){
+			for (j=0;j<numsegs;j++){
+				node1=*(riftsegments+3*j+0);
+				node2=*(riftsegments+3*j+1);
+
+				if ((node1==node) || (node2==node)){
+					/*Ok, this segment is connected to node, plug its index into order, unless we already plugged it before: */
+					already_ordered=0;
+					for (k=0;k<counter;k++){
+						if(order[k]==j){
+							already_ordered=1;
+							break;
+						}
+					}
+					if (!already_ordered){
+						order[counter]=j;
+						if(node1==node){
+							node=node2;
+						}
+						else if(node2==node){
+							node=node1;
+						}
+						break;
+					}
+				}
+			}
+		}
+
+		/*Using the order vector, and the riftsegments_copy and riftspairs_copy, reorder the segments and the pairs: */
+		for (j=0;j<numsegs;j++){
+			_assert_(order[j]<numsegs);
+			*(riftsegments_copy+3*j+0)=*(riftsegments+3*order[j]+0);
+			*(riftsegments_copy+3*j+1)=*(riftsegments+3*order[j]+1);
+			*(riftsegments_copy+3*j+2)=*(riftsegments+3*order[j]+2);
+			*(riftpairs_copy+2*j+0)=*(riftpairs+2*order[j]+0);
+			*(riftpairs_copy+2*j+1)=*(riftpairs+2*order[j]+1);
+		}
+
+		for (j=0;j<numsegs;j++){
+			*(riftsegments+3*j+0)=*(riftsegments_copy+3*j+0);
+			*(riftsegments+3*j+1)=*(riftsegments_copy+3*j+1);
+			*(riftsegments+3*j+2)=*(riftsegments_copy+3*j+2);
+			*(riftpairs+2*j+0)=*(riftpairs_copy+2*j+0);
+			*(riftpairs+2*j+1)=*(riftpairs_copy+2*j+1);
+		}
+
+		xDelete<int>(order);
+		xDelete<int>(riftsegments_copy);
+		xDelete<int>(riftpairs_copy);
+
+	}
+
+	/*Assign output pointer:*/
+	*priftstips=riftstips;
+	return noerr;
+}/*}}}*/
+int PenaltyPairs(double*** priftspenaltypairs,int** priftsnumpenaltypairs,int numrifts,int** riftssegments,/*{{{*/
+		int* riftsnumsegs,int** riftspairs,int* riftstips,double* x,double* y){
+
+	int noerr=1;
+	int i,j,k,k0;
+
+	double el1,el2,node1,node2,node3,node4;
+	double temp_node;
+
+	/*output: */
+	double **riftspenaltypairs    = NULL;
+	double  *riftpenaltypairs     = NULL;
+	int     *riftsnumpenaltypairs = NULL;
+
+	/*intermediary: */
+	int numsegs;
+	int* riftsegments=NULL;
+	int* riftpairs=NULL;
+	int counter;
+	double normal[2];
+	double length;
+	int    k1,k2;
+
+	/*Allocate: */
+	riftspenaltypairs=xNew<double*>(numrifts);
+	riftsnumpenaltypairs=xNew<int>(numrifts);
+
+	for(i=0;i<numrifts;i++){
+		numsegs=riftsnumsegs[i];
+		riftsegments=riftssegments[i];
+		riftpairs=riftspairs[i];
+
+		/*allocate riftpenaltypairs, and riftnumpenaltypairs: */
+		if((numsegs/2-1)!=0)riftpenaltypairs=xNewZeroInit<double>((numsegs/2-1)*RIFTPENALTYPAIRSWIDTH);
+
+		/*Go through only one flank of the rifts, not counting the tips: */
+		counter=0;
+		for(j=0;j<(numsegs/2);j++){
+			el1=*(riftpairs+2*j+0);
+			el2=*(riftpairs+2*j+1);
+			node1=*(riftsegments+3*j+0);
+			node2=*(riftsegments+3*j+1);
+			/*Find segment index to recover node3 and node4, facing node1 and node2: */
+			k0=-1;
+			for(k=0;k<numsegs;k++){
+				if(*(riftsegments+3*k+2)==el2){
+					k0=k;
+					break;
+				}
+			}
+			node3=*(riftsegments+3*k0+0);
+			node4=*(riftsegments+3*k0+1);
+
+			/* Make sure node3 faces node1 and node4 faces node2: */
+			if ((x[(int)node1-1]==x[(int)node4-1]) && (y[(int)node1-1]==y[(int)node4-1])){
+				/*Swap node3 and node4:*/
+				temp_node=node3;
+				node3=node4;
+				node4=temp_node;
+			}	
+			/*Ok, we have node1 facing node3, and node2 facing node4. Compute the normal to 
+			 *this segment, and its length: */
+			normal[0]=cos(atan2(x[(int)node1-1]-x[(int)node2-1],y[(int)node2-1]-y[(int)node1-1]));
+			normal[1]=sin(atan2(x[(int)node1-1]-x[(int)node2-1],y[(int)node2-1]-y[(int)node1-1]));
+			length=sqrt(pow(x[(int)node2-1]-x[(int)node1-1],(double)2)+pow(y[(int)node2-1]-y[(int)node1-1],(double)2));
+
+			/*Be careful here, we want penalty loads on each node, not on each segment. This means we cannot plug node1,
+			 * node2, node3 and node4 directly into riftpenaltypairs. We need to include node1, node2, node3 and node4, 
+			 * only once. We'll add the normals and the lengths : */
+
+			if(node1!=node3){ //exclude tips from loads
+				k1=-1;
+				for(k=0;k<counter;k++){
+					if( (*(riftpenaltypairs+k*7+0))==node1){
+						k1=k; 
+						break;
+					}
+				}
+				if(k1==-1){
+					*(riftpenaltypairs+counter*7+0)=node1;
+					*(riftpenaltypairs+counter*7+1)=node3;
+					*(riftpenaltypairs+counter*7+2)=el1;
+					*(riftpenaltypairs+counter*7+3)=el2;
+					*(riftpenaltypairs+counter*7+4)=normal[0];
+					*(riftpenaltypairs+counter*7+5)=normal[1];
+					*(riftpenaltypairs+counter*7+6)=length/2;
+					counter++;
+				}
+				else{
+					*(riftpenaltypairs+k1*7+4)+=normal[0];
+					*(riftpenaltypairs+k1*7+5)+=normal[1];
+					*(riftpenaltypairs+k1*7+6)+=length/2;
+				}
+			}
+			if(node2!=node4){
+				k2=-1;
+				for(k=0;k<counter;k++){
+					if( (*(riftpenaltypairs+k*7+0))==node2){
+						k2=k;
+						break;
+					}
+				}
+				if(k2==-1){
+					*(riftpenaltypairs+counter*7+0)=node2;
+					*(riftpenaltypairs+counter*7+1)=node4;
+					*(riftpenaltypairs+counter*7+2)=el1;
+					*(riftpenaltypairs+counter*7+3)=el2;
+					*(riftpenaltypairs+counter*7+4)=normal[0];
+					*(riftpenaltypairs+counter*7+5)=normal[1];
+					*(riftpenaltypairs+counter*7+6)=length/2;
+					counter++;
+				}
+				else{
+					*(riftpenaltypairs+k2*7+4)+=normal[0];
+					*(riftpenaltypairs+k2*7+5)+=normal[1];
+					*(riftpenaltypairs+k2*7+6)+=length/2;
+				}
+			}
+		}
+		/*Renormalize normals: */
+		for(j=0;j<counter;j++){
+			double magnitude=sqrt(pow( double(riftpenaltypairs[j*7+4]),2) + pow( double(riftpenaltypairs[j*7+5]),2) );
+			*(riftpenaltypairs+j*7+4)=*(riftpenaltypairs+j*7+4)/magnitude;
+			*(riftpenaltypairs+j*7+5)=*(riftpenaltypairs+j*7+5)/magnitude;
+		}
+
+		riftspenaltypairs[i]=riftpenaltypairs;
+		riftsnumpenaltypairs[i]=(numsegs/2-1);
+	}
+
+	/*Assign output pointers: */
+	*priftspenaltypairs=riftspenaltypairs;
+	*priftsnumpenaltypairs=riftsnumpenaltypairs;
+	return noerr;
+}/*}}}*/
+int RemoveCornersFromRifts(int** pindex,int* pnel,double** px,double** py,int* pnods,int* segments,int* segmentmarkers,int num_seg){/*{{{*/
+
+	int noerr=1;
+	int i,j,k;
+	int node1,node2,node3;
+	int el;
+	double  pair[2];
+	int     pair_count=0;
+	int     triple=0;
+
+	/*Recover input: */
+	int    *index = *pindex;
+	int     nel   = *pnel;
+	double *x     = *px;
+	double *y     = *py;
+	int     nods  = *pnods;
+
+	for (i=0;i<num_seg;i++){
+		node1=*(segments+3*i+0);
+		node2=*(segments+3*i+1);
+		/*Find all elements connected to [node1 node2]: */
+		pair_count=0;
+		for (j=0;j<nel;j++){
+			if (*(index+3*j+0)==node1){
+				if ((*(index+3*j+1)==node2) || (*(index+3*j+2)==node2)){
+					pair[pair_count]=j;
+					pair_count++;
+				}
+			}
+			if (*(index+3*j+1)==node1){
+				if ((*(index+3*j+0)==node2) || (*(index+3*j+2)==node2)){
+					pair[pair_count]=j;
+					pair_count++;
+				}
+			}
+			if (*(index+3*j+2)==node1){
+				if ((*(index+3*j+0)==node2) || (*(index+3*j+1)==node2)){
+					pair[pair_count]=j;
+					pair_count++;
+				}
+			}
+		}
+		/*Ok, we have pair_count elements connected to this segment. For each of these elements, 
+		 *figure out if the third node also belongs to a segment: */
+		if ((pair_count==0) || (pair_count==1)){ //we only select the rift segments, which belong to  2 elements
+			continue;
+		}
+		else{
+			for (j=0;j<pair_count;j++){
+				el=(int)pair[j];
+				triple=0;
+				/*First find node3: */
+				if (*(index+3*el+0)==node1){
+					if (*(index+3*el+1)==node2)node3=*(index+3*el+2);
+					else node3=*(index+3*el+1);
+				}
+				if (*(index+3*el+1)==node1){
+					if (*(index+3*el+0)==node2)node3=*(index+3*el+2);
+					else node3=*(index+3*el+0);
+				}
+				if (*(index+3*el+2)==node1){
+					if (*(index+3*el+0)==node2)node3=*(index+3*el+1);
+					else node3=*(index+3*el+0);
+				}
+				/*Ok, we have node3. Does node3 belong to a segment? : */
+				for (k=0;k<num_seg;k++){
+					if ((node3==*(segments+3*k+0)) || (node3==*(segments+3*k+1))){
+						triple=1;
+						break;
+					}
+				}
+				if(triple==1){
+					/*el is a corner element: we need to split it in 3 triangles: */
+					x=xReNew<double>(x,nods,nods+1);
+					y=xReNew<double>(y,nods,nods+1);
+					x[nods]=(x[(int)node1-1]+x[(int)node2-1]+x[(int)node3-1])/3;
+					y[nods]=(y[(int)node1-1]+y[(int)node2-1]+y[(int)node3-1])/3;
+					index=xReNew<int>(index,nel*3,(nel+2*3));
+					/*First, reassign element el: */
+					*(index+3*el+0)=node1;
+					*(index+3*el+1)=node2;
+					*(index+3*el+2)=nods+1;
+					/*Other two elements: */
+					*(index+3*nel+0)=node2;
+					*(index+3*nel+1)=node3;
+					*(index+3*nel+2)=nods+1;
+
+					*(index+3*(nel+1)+0)=node3;
+					*(index+3*(nel+1)+1)=node1;
+					*(index+3*(nel+1)+2)=nods+1;
+					/*we need  to change the segment elements corresponding to el: */
+					for (k=0;k<num_seg;k++){
+						if (*(segments+3*k+2)==(el+1)){
+							if ( ((*(segments+3*k+0)==node1) && (*(segments+3*k+1)==node2)) || ((*(segments+3*k+0)==node2) && (*(segments+3*k+1)==node1))) *(segments+3*k+2)=el+1;
+							if ( ((*(segments+3*k+0)==node2) && (*(segments+3*k+1)==node3)) || ((*(segments+3*k+0)==node3) && (*(segments+3*k+1)==node2))) *(segments+3*k+2)=nel+1;
+							if ( ((*(segments+3*k+0)==node3) && (*(segments+3*k+1)==node1)) || ((*(segments+3*k+0)==node1) && (*(segments+3*k+1)==node3))) *(segments+3*k+2)=nel+2;
+						}
+					}
+
+					nods=nods+1;
+					nel=nel+2;
+					i=0;
+					break;
+				}
+			} //for (j=0;j<pair_count;j++)
+		}
+	}// for (i=0;i<num_seg;i++)
+
+	/*Assign output pointers: */
+	*pindex=index;
+	*pnel=nel;
+	*px=x;
+	*py=y;
+	*pnods=nods;
+	return noerr;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/Triangle/triangle.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/Triangle/triangle.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/Triangle/triangle.h	(revision 27955)
@@ -0,0 +1,33 @@
+/*!\file:  triangle.h
+ * \brief
+ */ 
+
+#ifndef _SHARED_TRIANGLE_H
+#define _SHARED_TRIANGLE_H
+
+#include <stdio.h>
+#include <math.h>
+
+//#define REAL double //took  it out because it may conflict with stdlib.h defines. put back if necessary
+int AssociateSegmentToElement(int** psegments,int nseg,int* index,int nel);
+int OrderSegments(int** psegments,int nseg, int* index,int nel);
+int GridInsideHole(double* px0,double* py0,int n,double* x,double* y);
+int FindElement(int A,int B,int* index,int nel);
+int SplitMeshForRifts(int* pnel,int** pindex,int* pnods,double** px,double** py,int* pnsegs,int** psegments,int** psegmentmarkerlist);
+int IsGridOnRift(int* riftsegments, int nriftsegs, int node);
+int GridElementsList(int** pGridElements, int* pNumGridElements,int node,double * index,int nel);
+int IsNeighbor(int el1,int el2,int* index);
+int IsOnRift(int el,int nriftsegs,int* riftsegments);
+void RiftSegmentsFromSegments(int* pnriftsegs, int** priftsegments, int nel,int* index, int nsegs,int* segments);
+int DetermineGridElementListOnOneSideOfRift(int* pNumGridElementListOnOneSideOfRift, int** pGridElementListOnOneSideOfRift,int segmentnumber, int nriftsegs,int* riftsegments, int node,int* index,int nel);
+int UpdateSegments(int** psegments,int** psegmentmarkerlist, int* pnsegs,int* index, double* x,double* y,int* riftsegments,int nriftsegs,int nods,int nel);
+int FindElement(double A,double B,int* index,int nel);
+int IsRiftPresent(int* priftflag,int* pnumrifts,int* segmentmarkerlist,int nsegs);
+int SplitRiftSegments(int** psegments,int** psegmentmarkerlist, int* pnumsegs, int* pnumrifts,int** priftsnumsegs,int*** priftssegments,int numrifts,int nods,int nels);
+int OrderRifts(int** priftstips,int** riftssegments,int** riftspairs,int numrifts,int* riftsnumsegments,double* x,double* y,int nods,int nels);
+int PenaltyPairs(double*** priftspenaltypairs,int** priftsnumpenaltypairs,int numrifts,int**  riftssegments,
+		int* riftsnumsegments,int** riftspairs,int* riftstips,double* x,double* y);
+int RemoveCornersFromRifts(int** pindex,int* pnel,double** px,double** py,int* pnods,int* segments,int* segmentmarkers,int num_seg);
+int PairRiftElements(int** priftsnumpairs,int*** priftspairs,int numrifts,int* riftsnumsegments,int** riftssegments,double* x,double* y);
+
+#endif  /* _SHARED_TRIANGLE_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Comm/IssmComm.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Comm/IssmComm.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Comm/IssmComm.cpp	(revision 27955)
@@ -0,0 +1,62 @@
+/*! \file IssmComm.cpp
+ * \brief  file containing the methods for IssmComm.h
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./IssmComm.h"
+#include "../../Numerics/types.h"
+#include "../../Exceptions/exceptions.h"
+
+#ifdef _DO_NOT_LOAD_GLOBALS_
+ISSM_MPI_Comm	IssmComm::comm;
+bool			IssmComm::parallel;
+#endif
+
+void IssmComm::SetComm(ISSM_MPI_Comm incomm){ /*{{{*/
+
+	/*A comm is provided, we are running in parallel (this is not a module)*/
+	parallel = true;
+	comm     = incomm;
+
+}/*}}}*/
+void IssmComm::SetComm(void){ /*{{{*/
+
+	/*no comm provided, This is a matlab/python module*/
+	parallel = false;
+
+	/*No need to initialise comm*/
+
+}/*}}}*/
+ISSM_MPI_Comm IssmComm::GetComm(){  /*{{{*/
+	if(!parallel) _error_("Cannot return comm in serial mode");
+	return comm;
+}/*}}}*/
+int IssmComm::GetRank(){  /*{{{*/
+
+	int my_rank = 0;
+
+	/*for matlab and python modules*/
+	if(!parallel) return my_rank;
+
+	ISSM_MPI_Comm_rank(comm,&my_rank);
+
+	return my_rank;
+
+}/*}}}*/
+int IssmComm::GetSize(){  /*{{{*/
+
+	int size = 1;
+
+	/*for matlab and python modules*/
+	if(!parallel) return size;
+
+	ISSM_MPI_Comm_size(comm,&size);
+
+	return size;
+
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Comm/IssmComm.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Comm/IssmComm.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Comm/IssmComm.h	(revision 27955)
@@ -0,0 +1,34 @@
+/* \file IssmComm.h
+ * \brief  create a class with a static comm, and static methods to access it
+ * This is a way of protecting access to the communicator.
+ */
+
+#ifndef _ISSM_COMM_H
+#define _ISSM_COMM_H
+
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../../toolkits/mpi/issmmpi.h"
+
+/*}}}*/
+
+class IssmComm {
+
+	private:
+		static ISSM_MPI_Comm comm;
+		static bool parallel;
+
+	public:
+		static void SetComm(ISSM_MPI_Comm incomm);
+		static void SetComm(void);
+		static ISSM_MPI_Comm GetComm(void);
+		static int GetRank(void);
+		static int GetSize(void);
+};
+
+#endif  /* _ISSM_COMM_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Disk/WriteLockFile.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Disk/WriteLockFile.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Disk/WriteLockFile.cpp	(revision 27955)
@@ -0,0 +1,27 @@
+/*!\file:  WriteLockFile.cpp
+ * \brief
+ */ 
+#include <cstdio>
+#include "../../Exceptions/exceptions.h"
+#include "../Comm/IssmComm.h"
+#include "../Print/Print.h"
+#include <cstdio>
+
+void WriteLockFile(char* filename){
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	/* output: */
+	FILE* fid=NULL;
+
+	/* Open lock file and write 1 into it: */
+	if(my_rank==0){
+		fid=fopen(filename,"w");
+		if(fid==NULL) _error_("error message: could not open lock file " << filename);
+
+		/*Close file: */
+		if(fclose(fid)!=0) _error_("could not close lock file " << filename);
+	}
+
+}	
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Disk/diskio.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Disk/diskio.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Disk/diskio.h	(revision 27955)
@@ -0,0 +1,15 @@
+/*\file diskio.h
+ *\brief: I/O for ISSM from disk
+ */
+
+#ifndef _DISK_IO_H_
+#define _DISK_IO_H_
+
+#include <stdio.h>
+
+FILE* pfopen(char* filename,const char* format,bool errorout=true);
+FILE* pfopen0(char* filename,const char* format);
+void  pfclose(FILE* fid,char* filename);
+void WriteLockFile(char* filename);
+
+#endif	/* _IO_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Disk/pfclose.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Disk/pfclose.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Disk/pfclose.cpp	(revision 27955)
@@ -0,0 +1,19 @@
+/*!\file:  pfclose.cpp
+ * \brief fclose wrapper for parallel solution
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include "../../shared.h"
+
+void pfclose(FILE* fid,char* filename){
+
+	/*Close file handle: */
+	_assert_(fid);
+	if(fclose(fid)!=0)_error_("could not close file " << filename);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Disk/pfopen.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Disk/pfopen.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Disk/pfopen.cpp	(revision 27955)
@@ -0,0 +1,46 @@
+/*!\file:  pfopen.cpp
+ * \brief fopen wrapper for parallel solution
+ */ 
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include "../Print/Print.h"
+#include "../Comm/IssmComm.h"
+#include "../../Exceptions/exceptions.h"
+
+FILE* pfopen0(char* filename,const char* format){
+
+	FILE* fid=NULL;
+
+	/*recover my_rank:*/
+	int my_rank  = IssmComm::GetRank();
+	if(my_rank) _error_("This function should only be called by cpu 0");
+
+	/*Open handle to data on disk*/
+	fid = fopen(filename,format);
+	if(fid==NULL)_error_("could not open file " << filename << " for binary reading or writing");
+
+	return fid;
+}
+FILE* pfopen(char* filename,const char* format,bool errorout){
+
+	FILE* fid=NULL;
+
+	/*recover my_rank:*/
+	int my_rank  = IssmComm::GetRank();
+	int num_proc = IssmComm::GetSize();
+
+	/*Open handle to data on disk (one by one to avoid errors)*/
+	for(int i=0;i<num_proc;i++){
+		if(my_rank==i) fid = fopen(filename,format);
+		ISSM_MPI_Barrier(IssmComm::GetComm());
+	}
+	if(errorout && fid==NULL)_error_("could not open file " << filename << " for binary reading or writing");
+
+	return fid;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Marshalling/IoCodeConversions.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Marshalling/IoCodeConversions.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Marshalling/IoCodeConversions.cpp	(revision 27955)
@@ -0,0 +1,406 @@
+#include <math.h>
+#include <float.h>
+#include <cstring>
+
+#include "../../Enum/EnumDefinitions.h"
+#include "../../MemOps/MemOps.h"
+#include "../../Exceptions/exceptions.h"
+
+void FieldAndEnumFromCode(int* out_enum,char** pfield,const char* string_in){/*{{{*/
+
+	/*output*/
+	char* fieldname = NULL;
+	int   input_enum = -1;
+
+	if(strcmp(string_in,"Thickness")==0 || strcmp(string_in,"md.geometry.thickness")==0){
+		const char* field = "md.geometry.thickness";
+		input_enum        = ThicknessEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"MaterialsRheologyBbar")==0){
+		const char* field = "md.materials.rheology_B";
+		input_enum        = MaterialsRheologyBbarEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"MaterialsRheologyB")==0){
+		const char* field = "md.materials.rheology_B";
+		input_enum        = MaterialsRheologyBEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"MaterialsRheologyN")==0){
+		const char* field = "md.materials.rheology_n";
+		input_enum        = MaterialsRheologyNEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"SmbMassBalance")==0){
+		const char* field = "md.smb.mass_balance";
+		input_enum        = SmbMassBalanceEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"SmbAccumulation")==0){
+		const char* field = "md.smb.accumulation";
+		input_enum        = SmbAccumulationEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"SmbMelt")==0){
+		const char* field = "md.smb.melt";
+		input_enum        = SmbMeltEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"SmbRefreeze")==0){
+		const char* field = "md.smb.refreeze";
+		input_enum        = SmbRefreezeEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"SmbRunoff")==0){
+		const char* field = "md.smb.runoff";
+		input_enum        = SmbRunoffEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"SmbEvaporation")==0){
+		const char* field = "md.smb.evaporation";
+		input_enum        = SmbEvaporationEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"SmbTa")==0){
+		const char* field = "md.smb.Ta";
+		input_enum        = SmbTaEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"SmbV")==0){
+		const char* field = "md.smb.V";
+		input_enum        = SmbVEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"SmbDswrf")==0){
+		const char* field = "md.smb.dswrf";
+		input_enum        = SmbDswrfEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"SmbDlwrf")==0){
+		const char* field = "md.smb.dlwrf";
+		input_enum        = SmbDlwrfEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"SmbP")==0){
+		const char* field = "md.smb.P";
+		input_enum        = SmbPEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"SmbEAir")==0){
+		const char* field = "md.smb.eAir";
+		input_enum        = SmbEAirEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"SmbPAir")==0){
+		const char* field = "md.smb.pAir";
+		input_enum        = SmbPAirEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"SmbVz")==0){
+		const char* field = "md.smb.Vz";
+		input_enum        = SmbVzEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"SmbTz")==0){
+		const char* field = "md.smb.Tz";
+		input_enum        = SmbTzEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"SmbC")==0){
+		const char* field = "md.smb.C";
+		input_enum        = SmbCEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"BasalforcingsFloatingiceMeltingRate")==0){
+		const char* field = "md.basalforcings.floatingice_melting_rate";
+		input_enum        = BasalforcingsFloatingiceMeltingRateEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"BasalforcingsGeothermalflux")==0){
+		const char* field = "md.basalforcings.geothermalflux";
+		input_enum        = BasalforcingsGeothermalfluxEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"FrictionCoefficient")==0 || strcmp(string_in,"md.friction.coefficient")==0){
+		const char* field = "md.friction.coefficient";
+		input_enum        = FrictionCoefficientEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"FrictionC")==0 || strcmp(string_in,"md.friction.C")==0){
+		const char* field = "md.friction.C";
+		input_enum        = FrictionCEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"FrictionEffectivePressure")==0){
+		const char* field = "md.friction.effective_pressure";
+		input_enum        = FrictionEffectivePressureEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"Vx")==0){
+		 const char* field = "md.initialization.vx";
+		 input_enum        = VxEnum;
+		 fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	 }
+	else if(strcmp(string_in,"Vy")==0){
+		 const char* field = "md.initialization.vy";
+		 input_enum        = VyEnum;
+		 fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	 }
+	else if(strcmp(string_in,"BalancethicknessThickeningRate")==0){
+		 const char* field = "md.balancethickness.thickening_rate";
+		 input_enum        = BalancethicknessThickeningRateEnum;
+		 fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"BalancethicknessSpcthickness")==0){
+		 const char* field = "md.balancethickness.spcthickness";
+		 input_enum        = BalancethicknessSpcthicknessEnum;
+		 fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"CalvingMeltingrate")==0){
+		const char* field = "md.calving.meltingrate";
+		input_enum        = CalvingMeltingrateEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"CalvingStressThresholdGroundedice")==0){
+		const char* field = "md.calving.stress_threshold_groundedice";
+		input_enum        = CalvingStressThresholdGroundediceEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"CalvingADStressThresholdGroundedice")==0){
+		const char* field = "md.calving.stress_threshold_groundedice";
+		input_enum        = CalvingADStressThresholdGroundediceEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"DamageDbar")==0){
+		const char* field = "md.damage.D";
+		input_enum        = DamageDbarEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"IceLoad")==0){
+		const char* field = "md.masstransport.spcthickness";
+		input_enum        = MasstransportSpcthicknessEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"NGiaRate")==0){
+		const char* field = "md.gia.Ngia";
+		input_enum        = NGiaRateEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"DslGlobalAverageThermostericSeaLevel")==0){
+		const char* field = "md.dsl.global_average_thermosteric_sea_level";
+		input_enum        = OceantransportSpcstrEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"DslSeaWaterPressureAtSeaFloor")==0){
+		const char* field = "md.dsl.sea_water_pressure_at_sea_floor";
+		input_enum        = OceantransportSpcbottompressureEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"DslSeaSurfaceHeightAboveGeoid")==0){
+		const char* field = "md.dsl.sea_surface_height_above_geoid";
+		input_enum        = OceantransportSpcdslEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"TwsLoad")==0){
+		const char* field = "md.hydrology.spcwatercolumn";
+		input_enum        = HydrologyTwsSpcEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"UGiaRate")==0){
+		const char* field = "md.gia.Ugia";
+		input_enum        = UGiaRateEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"MaskIceLevelset")==0){
+		const char* field = "md.mask.ice_levelset";
+		input_enum        = MaskIceLevelsetEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"BasalforcingsPerturbationMeltingRate")==0){
+		const char* field = "md.basalforcings.perturbation_melting_rate";
+		input_enum        = BasalforcingsPerturbationMeltingRateEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"BasalforcingsMeltrateFactor")==0){
+		const char* field = "md.basalforcings.meltrate_factor";
+		input_enum        = BasalforcingsMeltrateFactorEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"BasalforcingsSpatialDeepwaterMeltingRate")==0){
+		const char* field = "md.basalforcings.deepwater_melting_rate";
+		input_enum        = BasalforcingsSpatialDeepwaterMeltingRateEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else if(strcmp(string_in,"BasalforcingsDeepwaterMeltingRate")==0){
+		const char* field = "md.basalforcings.deepwater_melting_rate";
+		input_enum        = BasalforcingsDeepwaterMeltingRateEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
+	else{
+		_error_("Field \""<<string_in<<"\" not supported yet");
+	}
+
+	/*Assign output pointers*/
+	*out_enum = input_enum;
+	*pfield   = fieldname;
+	return;
+}/*}}}*/
+int IoCodeToEnumSMB(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 1: return SMBforcingEnum;
+		case 2: return SMBcomponentsEnum;
+		case 3: return SMBmeltcomponentsEnum;
+		case 4: return SMBpddEnum;
+		case 5: return SMBd18opddEnum;
+		case 6: return SMBgradientsEnum;
+		case 7: return SMBhenningEnum;
+		case 8: return SMBgembEnum;
+		case 9: return SMBgradientselaEnum;
+		case 10: return SMBpddSicopolisEnum;
+		case 11: return SMBgradientscomponentsEnum;
+		case 12: return SMBsemicEnum;	 
+		case 13: return SMBarmaEnum;
+		case 14: return SMBdebrisEvattEnum;
+		default: _error_("Marshalled SMB code \""<<enum_in<<"\" not supported yet");
+	}
+}/*}}}*/
+int IoCodeToEnumBasal(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 1: return FloatingMeltRateEnum;
+		case 2: return LinearFloatingMeltRateEnum;
+		case 3: return MismipFloatingMeltRateEnum;
+		case 4: return MantlePlumeGeothermalFluxEnum;
+		case 5: return BasalforcingsPicoEnum;
+		case 6: return SpatialLinearFloatingMeltRateEnum;
+		case 7: return BasalforcingsIsmip6Enum;
+		case 8: return BeckmannGoosseFloatingMeltRateEnum;
+		case 9: return LinearFloatingMeltRatearmaEnum;
+		default: _error_("Marshalled Basal Forcings code \""<<enum_in<<"\" not supported yet");
+	}
+}/*}}}*/
+int IoCodeToEnumCalving(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 1:  return DefaultCalvingEnum;
+		case 2:  return CalvingVonmisesEnum;
+		case 3:  return CalvingLevermannEnum;
+		case 4:  return CalvingMinthicknessEnum;
+		case 5:  return CalvingHabEnum;
+		case 6:  return CalvingCrevasseDepthEnum;
+		case 7:  return CalvingDev2Enum;
+		case 8:  return CalvingTestEnum;
+		case 9:  return CalvingParameterizationEnum;
+		case 10: return CalvingPollardEnum;
+		case 11: return CalvingVonmisesADEnum;
+		case 12:  return CalvingCalvingMIPEnum;
+		default: _error_("Marshalled Calving law code \""<<enum_in<<"\" not supported yet");
+	}
+}/*}}}*/
+int IoCodeToEnumFrontalforcings(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 1: return FrontalForcingsDefaultEnum;
+		case 2: return FrontalForcingsRignotEnum;
+		case 3: return FrontalForcingsRignotarmaEnum;
+		default: _error_("Marshalled Frontalforcings code \""<<enum_in<<"\" not supported yet");
+	}
+}/*}}}*/
+int IoCodeToEnumHydrology(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 1: return HydrologydcEnum;
+		case 2: return HydrologyshreveEnum;
+		case 3: return HydrologyshaktiEnum;
+		case 4: return HydrologypismEnum;
+		case 5: return HydrologyGlaDSEnum;
+		case 6: return HydrologyTwsEnum;
+		case 7: return HydrologyarmapwEnum;
+		default: _error_("Marshalled hydrology code \""<<enum_in<<"\" not supported yet");
+	}
+}/*}}}*/
+int IoCodeToEnumMaterials(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 1: return MatdamageiceEnum;
+		case 2: return MatestarEnum;
+		case 3: return MaticeEnum;
+		case 4: return MatenhancediceEnum;
+		case 5: return MaterialsEnum; //This should not happen anymore??
+		case 6: return MatlithoEnum;
+		case 7: return MathydroEnum;
+		default: _error_("Marshalled materials code \""<<enum_in<<"\" not supported yet");
+	}
+}/*}}}*/
+int IoCodeToEnumNature(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 1: return MatdamageiceEnum;
+		case 2: return MatestarEnum;
+		case 3: return MaticeEnum;
+		case 4: return MatenhancediceEnum;
+		case 5: return MaterialsEnum;
+		case 6: return MatlithoEnum;
+		case 7: return MathydroEnum;
+		default: _error_("Marshalled materials nature code \""<<enum_in<<"\" not supported yet");
+	}
+}/*}}}*/
+int IoCodeToEnumTimestepping(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 1: return FixedTimesteppingEnum;
+		case 2: return AdaptiveTimesteppingEnum;
+		default: _error_("Marshalled materials code \""<<enum_in<<"\" not supported yet");
+	}
+}/*}}}*/
+int IoCodeToEnumAmr(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 1: return AmrBamgEnum;
+		case 2: return AmrNeopzEnum;
+		default: _error_("Marshalled AMR code \""<<enum_in<<"\" not supported yet");
+	}
+}/*}}}*/
+int IoCodeToEnumGrd(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 0: return NoneEnum;
+		case 1: return ElasticEnum;
+		case 2: return IvinsEnum;
+		default: _error_("Marshalled GRD code \""<<enum_in<<"\" not supported yet");
+	}
+}/*}}}*/
+
+int IoCodeToEnumVertexEquation(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 0: return NoneApproximationEnum;
+		case 1: return SIAApproximationEnum;
+		case 2: return SSAApproximationEnum;
+		case 3: return L1L2ApproximationEnum;
+		case 4: return MOLHOApproximationEnum;
+		case 5: return HOApproximationEnum;
+		case 6: return FSApproximationEnum;
+		case 7: return SSAHOApproximationEnum;
+		case 8: return HOFSApproximationEnum;
+		case 9: return SSAFSApproximationEnum;
+		default: _error_("Marshalled vertex equation code \""<<enum_in<<"\" not supported yet.");
+	}
+}/*}}}*/
+int IoCodeToEnumElementEquation(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 0: return NoneApproximationEnum;
+		case 1: return SIAApproximationEnum;
+		case 2: return SSAApproximationEnum;
+		case 3: return L1L2ApproximationEnum;
+		case 4: return MOLHOApproximationEnum;
+		case 5: return HOApproximationEnum;
+		case 6: return FSApproximationEnum;
+		case 7: return SSAHOApproximationEnum;
+		case 8: return SSAFSApproximationEnum;
+		case 9: return HOFSApproximationEnum;
+		default: _error_("Marshalled element equation code \""<<enum_in<<"\" not supported yet.");
+	}
+
+}/*}}}*/
+
+int IoRiftfillToEnum(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 0: return AirEnum;
+		case 1: return IceEnum;
+		case 2: return MelangeEnum;
+		case 3: return WaterEnum;
+		default: _error_("Marshalled Riftfill enum \""<<enum_in<<"\" not supported yet.");
+	}
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Marshalling/IoCodeConversions.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Marshalling/IoCodeConversions.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Marshalling/IoCodeConversions.h	(revision 27955)
@@ -0,0 +1,22 @@
+#ifndef _IOCODECONVERSION_H_
+#define _IOCODECONVERSION_H_
+
+void FieldAndEnumFromCode(int* out_enum,char** pfield,const char* string_in);
+
+int IoCodeToEnumSMB(int enum_in);
+int IoCodeToEnumBasal(int enum_in);
+int IoCodeToEnumCalving(int enum_in);
+int IoCodeToEnumFrontalforcings(int enum_in);
+int IoCodeToEnumHydrology(int enum_in);
+int IoCodeToEnumMaterials(int enum_in);
+int IoCodeToEnumNature(int enum_in);
+int IoCodeToEnumTimestepping(int enum_in);
+int IoCodeToEnumAmr(int enum_in);
+int IoCodeToEnumGrd(int enum_in);
+
+int IoCodeToEnumVertexEquation(int enum_in);
+int IoCodeToEnumElementEquation(int enum_in);
+
+int IoRiftfillToEnum(int enum_in);
+
+#endif	
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Marshalling/Marshalling.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Marshalling/Marshalling.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Marshalling/Marshalling.cpp	(revision 27955)
@@ -0,0 +1,188 @@
+/*!\file:  Marshalling.cpp
+ * \brief implement marshall
+ */ 
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Marshalling.h"
+#include "../../Numerics/isnan.h"
+
+WriteCheckpointFunctor::WriteCheckpointFunctor(char** pmarshalled_data_in) : MarshallHandle(MARSHALLING_WRITE){/*{{{*/
+	this->pmarshalled_data = pmarshalled_data_in;
+}/*}}}*/
+void WriteCheckpointFunctor::Echo(void){/*{{{*/
+	printf("WriteCheckpointFunctor Echo:\n");
+	printf("   pmarshalled_data: %p\n",pmarshalled_data);
+}/*}}}*/
+void WriteCheckpointFunctor::call(char* & value){/*{{{*/
+	int size = strlen(value)+1;
+	this->call(size);
+	this->call(value,size);
+};/*}}}*/
+
+LoadCheckpointFunctor::LoadCheckpointFunctor(char** pmarshalled_data_in) : MarshallHandle(MARSHALLING_LOAD){/*{{{*/
+	this->pmarshalled_data = pmarshalled_data_in;
+}/*}}}*/
+void LoadCheckpointFunctor::Echo(void){/*{{{*/
+	printf("LoadCheckpointFunctor Echo:\n");
+	printf("   pmarshalled_data: %p\n",pmarshalled_data);
+}/*}}}*/
+void LoadCheckpointFunctor::call(char* & value){/*{{{*/
+	int size;
+	this->call(size);
+	this->call(value,size);
+};/*}}}*/
+
+SizeCheckpointFunctor::SizeCheckpointFunctor(void) : MarshallHandle(MARSHALLING_SIZE){/*{{{*/
+	this->marshalled_data_size = 0;
+}/*}}}*/
+int  SizeCheckpointFunctor::MarshalledSize(void){/*{{{*/
+	return this->marshalled_data_size;
+};/*}}}*/
+void SizeCheckpointFunctor::Echo(void){/*{{{*/
+	printf("SizeCheckpointFunctor Echo:\n");
+	printf("   marshalled_data_size: %i\n",marshalled_data_size);
+}/*}}}*/
+void SizeCheckpointFunctor::call(char* & value){/*{{{*/
+	int size = strlen(value)+1;
+	this->call(size);
+	this->call(value,size);
+};/*}}}*/
+
+#if defined(_HAVE_CODIPACK_) && !defined(_WRAPPERS_)
+CountDoublesFunctor::CountDoublesFunctor(void) : MarshallHandle(AD_COUNTDOUBLES){/*{{{*/
+	this->double_count= 0;
+}/*}}}*/
+int  CountDoublesFunctor::DoubleCount(void){/*{{{*/
+	return this->double_count;
+};/*}}}*/
+void CountDoublesFunctor::Echo(void){/*{{{*/
+	printf("CountDoublesFunctor Echo:\n");
+	printf("   double_count: %i\n",double_count);
+}/*}}}*/
+void CountDoublesFunctor::call(IssmDouble & value){/*{{{*/
+	this->double_count++;
+}/*}}}*/
+void CountDoublesFunctor::call(IssmDouble* & value,int size){/*{{{*/
+	if(value) this->double_count+= size;
+}/*}}}*/
+
+RegisterInputFunctor::RegisterInputFunctor(int* identifiers_in,int size_max_in) : MarshallHandle(AD_REGISTERINPUT){/*{{{*/
+	this->double_count = 0;
+	this->identifiers  = identifiers_in;
+	this->size_max         = size_max_in;
+	#if _CODIPACK_MAJOR_==2
+	this->tape_codi    = &(IssmDouble::getTape());
+	#elif _CODIPACK_MAJOR_==1
+	this->tape_codi    = &(IssmDouble::getGlobalTape());
+	#else
+	#error "_CODIPACK_MAJOR_ not supported"
+	#endif
+
+}/*}}}*/
+void RegisterInputFunctor::Echo(void){/*{{{*/
+	printf("RegisterInputFunctor Echo:\n");
+	printf("   double_count: %i\n",double_count);
+}/*}}}*/
+void RegisterInputFunctor::call(IssmDouble & value){/*{{{*/
+	_assert_(this->double_count<size_max);
+
+	/*Comment out this assert, some parameters are NaN (e.g. abstol) by default*/
+	//_assert_(!xIsNan<IssmDouble>(value));
+
+	this->tape_codi->registerInput(value);
+	#if _CODIPACK_MAJOR_==2
+	this->identifiers[this->double_count] = value.getIdentifier();
+	#elif _CODIPACK_MAJOR_==1
+	this->identifiers[this->double_count] = value.getGradientData();
+	#else
+	#error "_CODIPACK_MAJOR_ not supported"
+	#endif
+
+	this->double_count++;
+}/*}}}*/
+void RegisterInputFunctor::call(IssmDouble* & value,int size){/*{{{*/
+	if(value){
+		for(int i=0;i<size;i++){
+			_assert_(this->double_count<size_max);
+			_assert_(!xIsNan<IssmDouble>(value[i]));
+			this->tape_codi->registerInput(value[i]);
+			#if _CODIPACK_MAJOR_==2
+			this->identifiers[this->double_count] = value[i].getIdentifier();
+			#elif _CODIPACK_MAJOR_==1
+			this->identifiers[this->double_count] = value[i].getGradientData();
+			#else
+			#error "_CODIPACK_MAJOR_ not supported"
+			#endif
+
+			this->double_count++;
+		}
+	}
+}/*}}}*/
+
+RegisterOutputFunctor::RegisterOutputFunctor(void) : MarshallHandle(AD_REGISTEROUTPUT){/*{{{*/
+	this->double_count = 0;
+	#if _CODIPACK_MAJOR_==2
+	this->tape_codi    = &(IssmDouble::getTape());
+	#elif _CODIPACK_MAJOR_==1
+	this->tape_codi    = &(IssmDouble::getGlobalTape());
+	#else
+	#error "_CODIPACK_MAJOR_ not supported"
+	#endif
+}/*}}}*/
+void RegisterOutputFunctor::Echo(void){/*{{{*/
+	printf("RegisterOutputFunctor Echo:\n");
+	printf("   double_count: %i\n",double_count);
+}/*}}}*/
+void RegisterOutputFunctor::call(IssmDouble & value){/*{{{*/
+	//_assert_(!xIsNan<IssmDouble>(value));
+	this->tape_codi->registerOutput(value);
+	this->double_count++;
+}/*}}}*/
+void RegisterOutputFunctor::call(IssmDouble* & value,int size){/*{{{*/
+	if(value){
+		for(int i=0;i<size;i++){
+			_assert_(!xIsNan<IssmDouble>(value[i]));
+			this->tape_codi->registerOutput(value[i]);
+			this->double_count++;
+		}
+	}
+}/*}}}*/
+
+SetAdjointFunctor::SetAdjointFunctor(double* adjoint_in,int size_max_in) : MarshallHandle(AD_SETADJOINT){/*{{{*/
+	this->double_count = 0;
+	this->adjoint      = adjoint_in;
+	this->size_max     = size_max_in;
+	#if _CODIPACK_MAJOR_==2
+	this->tape_codi    = &(IssmDouble::getTape());
+	#elif _CODIPACK_MAJOR_==1
+	this->tape_codi    = &(IssmDouble::getGlobalTape());
+	#else
+	#error "_CODIPACK_MAJOR_ not supported"
+	#endif
+}/*}}}*/
+void SetAdjointFunctor::Echo(void){/*{{{*/
+	printf("SetAdjointFunctor Echo:\n");
+	printf("   double_count: %i\n",double_count);
+}/*}}}*/
+void SetAdjointFunctor::call(IssmDouble & value){/*{{{*/
+	_assert_(this->double_count<size_max);
+	_assert_(!xIsNan<IssmDouble>(this->adjoint[this->double_count]));
+	value.gradient() = this->adjoint[this->double_count];
+	this->double_count++;
+}/*}}}*/
+void SetAdjointFunctor::call(IssmDouble* & value,int size){/*{{{*/
+	if(value){
+		for(int i=0;i<size;i++){
+			_assert_(this->double_count<size_max);
+			_assert_(!xIsNan<IssmDouble>(this->adjoint[this->double_count]));
+			value[i].gradient() = this->adjoint[this->double_count];
+			this->double_count++;
+		}
+	}
+}/*}}}*/
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Marshalling/Marshalling.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Marshalling/Marshalling.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Marshalling/Marshalling.h	(revision 27955)
@@ -0,0 +1,208 @@
+/*\file Marshalling.h
+ *\brief: macros to help automate the marshalling, demarshalling, and marshalling size routines. 
+ */
+
+#ifndef _MARSHALLING_H_
+#define _MARSHALLING_H_
+
+#include <string.h>
+#include "../../Exceptions/exceptions.h"
+#include "../../MemOps/MemOps.h"
+#include "../../Numerics/recast.h"
+
+/*Define Marshall operation Enums first*/
+enum MarshallOpEnum{
+	MARSHALLING_WRITE,
+	MARSHALLING_LOAD,
+	MARSHALLING_SIZE,
+#if defined(_HAVE_CODIPACK_) && !defined(_WRAPPERS_)
+	AD_COUNTDOUBLES,
+	AD_REGISTERINPUT,
+	AD_REGISTEROUTPUT,
+	AD_SETADJOINT,
+#endif
+};
+
+/*Define virtual Marshall Handle*/
+class MarshallHandle{ /*{{{*/
+	public:
+		MarshallOpEnum operation_enum;
+		MarshallHandle(MarshallOpEnum op_in) : operation_enum(op_in){}
+		~MarshallHandle(){}
+		virtual void Echo(void)=0;
+		int OperationNumber(){return operation_enum;}
+		template<typename T> void call(T  & value);
+		template<typename T> void call(T* & value,int size);
+}; /*}}}*/
+/* !! Make sure to pass all fields by reference !! */
+class WriteCheckpointFunctor: public MarshallHandle{ /*{{{*/
+
+	private:
+		char** pmarshalled_data;
+
+	public:
+		WriteCheckpointFunctor(char** pmarshalled_data_in);
+		void Echo(void);
+		template<typename T> void call(T & value){
+			memcpy(*pmarshalled_data,&value,sizeof(T));
+			*pmarshalled_data+=sizeof(T);
+		}
+		void call(char* & value);
+		template<typename T> void call(T* & value,int size){
+			bool pointer_null = true;
+			if(value) pointer_null = false;
+			this->call<bool>(pointer_null);
+			if(value){
+				memcpy(*pmarshalled_data,value,size*sizeof(T));
+				*pmarshalled_data+=size*sizeof(T);
+			}
+		}
+};/*}}}*/
+class LoadCheckpointFunctor:  public MarshallHandle{ /*{{{*/
+
+	private:
+		char** pmarshalled_data;
+
+	public:
+		LoadCheckpointFunctor(char** pmarshalled_data_in);
+		void Echo(void);
+		void call(char* & value);
+		template<typename T> void call(T & value){
+			memcpy(&value,*pmarshalled_data,sizeof(T));
+			*pmarshalled_data+=sizeof(T);
+		}
+		template<typename T> void call(T* & value,int size){
+			bool pointer_null;
+			call(pointer_null);
+			if(!pointer_null){
+				value=xNew<T>(size);
+				memcpy(value,*pmarshalled_data,size*sizeof(T));
+				*pmarshalled_data+=size*sizeof(T);
+			}
+			else{
+				value = NULL;
+			}
+		}
+};/*}}}*/
+class SizeCheckpointFunctor:  public MarshallHandle{ /*{{{*/
+
+	private:
+		int marshalled_data_size;
+
+	public:
+		SizeCheckpointFunctor(void);
+		int MarshalledSize(void);
+		void Echo(void);
+		template<typename T> void call(T & value){
+			marshalled_data_size+=sizeof(T);
+		}
+		void call(char* & value);
+		template<typename T> void call(T* & value,int size){
+			bool pointer_null = true;
+			if(value) pointer_null = false;
+			this->call(pointer_null);
+			if(!pointer_null){
+				marshalled_data_size+=size*sizeof(T);
+			}
+		}
+};/*}}}*/
+#if defined(_HAVE_CODIPACK_) && !defined(_WRAPPERS_)
+#if _CODIPACK_MAJOR_==2
+using Tape = typename IssmDouble::Tape;
+#elif _CODIPACK_MAJOR_==1
+using Tape = typename IssmDouble::TapeType;
+#else
+#error "_CODIPACK_MAJOR_ not supported"
+#endif
+class CountDoublesFunctor:    public MarshallHandle{ /*{{{*/
+
+	private:
+		int double_count;
+
+	public:
+		CountDoublesFunctor(void);
+		int  DoubleCount(void);
+		void Echo(void);
+		template<typename T> void call(T & value){/*General case: do nothing*/}
+		template<typename T> void call(T* & value,int size){/*General case: do nothing*/}
+		void call(IssmDouble & value);
+		void call(IssmDouble* & value,int size);
+}; /*}}}*/
+class RegisterInputFunctor:   public MarshallHandle{ /*{{{*/
+
+	private:
+		int  double_count;
+		int *identifiers;
+		int  size_max;
+		Tape *tape_codi;
+
+	public:
+		RegisterInputFunctor(int* identifiers_in,int size_max_in);
+		void Echo(void);
+		template<typename T> void call(T & value){/*General case: do nothing*/}
+		template<typename T> void call(T* & value,int size){/*General case: do nothing*/}
+		void call(IssmDouble & value);
+		void call(IssmDouble* & value,int size);
+}; /*}}}*/
+class RegisterOutputFunctor:  public MarshallHandle{ /*{{{*/
+
+	private:
+		int   double_count;
+		Tape *tape_codi;
+
+	public:
+		RegisterOutputFunctor(void);
+		void Echo(void);
+		template<typename T> void call(T & value){/*General case: do nothing*/}
+		template<typename T> void call(T* & value,int size){/*General case: do nothing*/}
+		void call(IssmDouble & value);
+		void call(IssmDouble* & value,int size);
+}; /*}}}*/
+class SetAdjointFunctor:      public MarshallHandle{ /*{{{*/
+
+	private:
+		int     double_count;
+		int     size_max;
+		Tape   *tape_codi;
+		double *adjoint;
+
+	public:
+		SetAdjointFunctor(double* adjoint_in,int size_max_in);
+		void Echo(void);
+		template<typename T> void call(T & value){/*General case: do nothing*/}
+		template<typename T> void call(T* & value,int size){/*General case: do nothing*/}
+		void call(IssmDouble & value);
+		void call(IssmDouble* & value,int size);
+}; /*}}}*/
+#endif
+
+template<typename T> void MarshallHandle::call(T & value){
+	switch(OperationNumber()){
+		case MARSHALLING_WRITE:{WriteCheckpointFunctor* temp = xDynamicCast<WriteCheckpointFunctor*>(this); temp->call(value); break;}
+		case MARSHALLING_LOAD: {LoadCheckpointFunctor*  temp = xDynamicCast<LoadCheckpointFunctor*>(this);  temp->call(value); break;}
+		case MARSHALLING_SIZE: {SizeCheckpointFunctor*  temp = xDynamicCast<SizeCheckpointFunctor*>(this);  temp->call(value); break;}
+#if defined(_HAVE_CODIPACK_) && !defined(_WRAPPERS_)
+		case AD_COUNTDOUBLES:  {CountDoublesFunctor*   temp = xDynamicCast<CountDoublesFunctor*>(this);    temp->call(value); break;}
+		case AD_REGISTERINPUT: {RegisterInputFunctor*  temp = xDynamicCast<RegisterInputFunctor*>(this);   temp->call(value); break;}
+		case AD_REGISTEROUTPUT:{RegisterOutputFunctor* temp = xDynamicCast<RegisterOutputFunctor*>(this);  temp->call(value); break;}
+		case AD_SETADJOINT:    {SetAdjointFunctor*     temp = xDynamicCast<SetAdjointFunctor*>(this);      temp->call(value); break;}
+#endif
+		default: _error_("Operation "<<OperationNumber()<<" not supported yet");
+	}
+}
+template<typename T> void MarshallHandle::call(T* & value,int size){
+	switch(OperationNumber()){
+		case MARSHALLING_WRITE:{WriteCheckpointFunctor* temp = xDynamicCast<WriteCheckpointFunctor*>(this); temp->call(value,size); break;}
+		case MARSHALLING_LOAD: {LoadCheckpointFunctor*  temp = xDynamicCast<LoadCheckpointFunctor*>(this);  temp->call(value,size); break;}
+		case MARSHALLING_SIZE: {SizeCheckpointFunctor*  temp = xDynamicCast<SizeCheckpointFunctor*>(this);  temp->call(value,size); break;}
+#if defined(_HAVE_CODIPACK_) && !defined(_WRAPPERS_)
+		case AD_COUNTDOUBLES:  {CountDoublesFunctor*   temp = xDynamicCast<CountDoublesFunctor*>(this);    temp->call(value,size); break;}
+		case AD_REGISTERINPUT: {RegisterInputFunctor*  temp = xDynamicCast<RegisterInputFunctor*>(this);   temp->call(value,size); break;}
+		case AD_REGISTEROUTPUT:{RegisterOutputFunctor* temp = xDynamicCast<RegisterOutputFunctor*>(this);  temp->call(value,size); break;}
+		case AD_SETADJOINT:    {SetAdjointFunctor*     temp = xDynamicCast<SetAdjointFunctor*>(this);      temp->call(value,size); break;}
+#endif
+		default: _error_("Operation "<<OperationNumber() <<" not supported yet");
+	}
+}
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Print/Print.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Print/Print.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Print/Print.h	(revision 27955)
@@ -0,0 +1,39 @@
+/*\file Print.h
+ *\brief: print I/O for ISSM
+ */
+
+#ifndef _ISSM_PRINT_H_
+#define _ISSM_PRINT_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif 
+
+/*Only include forward declaration to save compile time*/
+#include <iosfwd>
+#include <sstream>
+
+using namespace std;
+/*macros:*/
+/* _printf_{{{*/
+/* macro to print some string on all cpus */
+#define _printf_(StreamArgs)\
+  do{std::ostringstream aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy; \
+	  aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy << StreamArgs; \
+	  PrintfFunctionOnAllCpus(aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy.str());}while(0)
+/*}}}*/
+/* _printf0_ {{{*/
+/* macro to print some string only on cpu 0 */
+#define _printf0_(StreamArgs)\
+  do{std::ostringstream aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy; \
+	  aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy << StreamArgs; \
+	  PrintfFunctionOnCpu0(aLoNgAnDwEiRdLoCaLnAmeFoRtHiSmAcRoOnLy.str());}while(0)
+/*}}}*/
+
+/*functions: */
+int PrintfFunctionOnCpu0(const string & message);
+int PrintfFunctionOnAllCpus(const string & message);
+
+#endif	
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Print/PrintfFunction.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Print/PrintfFunction.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/Print/PrintfFunction.cpp	(revision 27955)
@@ -0,0 +1,53 @@
+/*\file PrintfFunction.c
+ *\brief: this function is used by the _printf_ macro, to take into account the 
+ *fact we may be running on a cluster. 
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdarg.h>
+#include <cstdio>
+#include <string>
+#include <iostream>
+#include <iomanip>
+
+#ifdef _HAVE_ANDROID_NDK_
+#include <android/log.h>
+#endif
+#include "./Print.h"
+#include "../Comm/IssmComm.h"
+#include "../../String/sharedstring.h"
+#include "../../MemOps/MemOps.h"
+
+int PrintfFunctionOnCpu0(const string & message){
+
+	/*recover my_rank:*/
+	int my_rank=IssmComm::GetRank();
+
+	if(my_rank==0){
+		#ifdef _HAVE_ANDROID_JNI_
+		__android_log_print(ANDROID_LOG_INFO, "Native",message.c_str());
+		#elif _IS_MSYS2_
+		printf("%s",message.c_str());
+		#else
+		ApiPrintf(message.c_str());
+		#endif
+	}
+	return 1;
+}
+int PrintfFunctionOnAllCpus(const string & message){
+
+	#ifdef _HAVE_ANDROID_JNI_
+	__android_log_print(ANDROID_LOG_INFO, "Native",message.c_str());
+	#elif _IS_MSYS2_
+	printf("%s",message.c_str());
+	#else
+	ApiPrintf(message.c_str());
+	#endif
+
+	return 1;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/io.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/io.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/io/io.h	(revision 27955)
@@ -0,0 +1,20 @@
+/*\file io.h
+ *\brief: I/O for ISSM
+ */
+
+#ifndef _ISSM_IO_H_
+#define _ISSM_IO_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif 
+
+#include "./Comm/IssmComm.h"
+#include "./Disk/diskio.h"
+#include "./Print/Print.h"
+#include "./Marshalling/Marshalling.h"
+#include "./Marshalling/IoCodeConversions.h"
+
+#endif	/* _IO_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/shared/shared.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/shared/shared.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/shared/shared.h	(revision 27955)
@@ -0,0 +1,24 @@
+/* \file shared.h
+ * \brief: header file for all shared  routines.
+ */
+
+#ifndef _SHARED_H_
+#define _SHARED_H_
+
+#include "./FSanalyticals/fsanalyticals.h"
+#include "./MemOps/MemOps.h"
+#include "./Bamg/shared.h"
+#include "./Elements/elements.h"
+#include "./Enum/Enum.h"
+#include "./Exceptions/exceptions.h"
+#include "./io/io.h"
+#include "./Exp/exp.h"
+#include "./Matrix/matrix.h"
+#include "./Numerics/numerics.h"
+#include "./Sorting/sorting.h"
+#include "./String/sharedstring.h"
+#include "./Threads/issm_threads.h"
+#include "./Triangle/triangle.h"
+#include "./LatLong/latlong.h"
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/convergence.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/convergence.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/convergence.cpp	(revision 27955)
@@ -0,0 +1,121 @@
+/*!\file: convergence.cpp
+ * \brief: figure out if convergence has been reached
+ */
+
+#include "../classes/classes.h"
+#include "../modules/modules.h"
+#include "../shared/shared.h"
+
+void convergence(bool* pconverged, Matrix<IssmDouble>* Kff,Vector<IssmDouble>* pf,Vector<IssmDouble>* uf,Vector<IssmDouble>* old_uf,IssmDouble eps_res,IssmDouble eps_rel,IssmDouble eps_abs){
+
+	/*output*/
+	bool converged=false;
+
+	/*intermediary*/
+	Vector<IssmDouble>* KUold=NULL;
+	Vector<IssmDouble>* KUoldF=NULL;
+	Vector<IssmDouble>* duf=NULL;
+	IssmDouble ndu,nduinf,nu;
+	IssmDouble nKUoldF;
+	IssmDouble nF;
+	IssmDouble res;
+	int analysis_type;
+	int ufsize;
+
+	if(VerboseModule()) _printf0_("   checking convergence\n");
+
+	/*If uf is NULL in input, f-set is nil, model is fully constrained, therefore converged from
+	 * the get go: */
+	uf->GetSize(&ufsize);
+	if(ufsize==0){
+		*pconverged=true;
+		return;
+	}
+
+	/* if(uf->IsEmpty()){ */
+	/* 	*pconverged=true; */
+	/* 	return; */
+	/* } */
+
+	/*Force equilibrium (Mandatory)*/
+
+	/*compute K[n]U[n-1]F = K[n]U[n-1] - F*/
+	_assert_(uf); _assert_(Kff);
+	KUold=uf->Duplicate(); Kff->MatMult(old_uf,KUold);
+	KUoldF=KUold->Duplicate();KUold->Copy(KUoldF); KUoldF->AYPX(pf,-1.0);
+	nKUoldF=KUoldF->Norm(NORM_TWO);
+	nF=pf->Norm(NORM_TWO)+1.e-14;
+	res=nKUoldF/nF;
+	if (xIsNan<IssmDouble>(res)){
+		_printf0_("norm nf = " << nF << "f and norm kuold = " << nKUoldF << "f\n");
+		_error_("mechanical equilibrium convergence criterion is NaN!");
+	}
+
+	//clean up
+	delete KUold;
+	delete KUoldF;
+
+	//print
+	if(res<eps_res){
+		if(VerboseConvergence()) _printf0_(setw(50)<<left<<"   mechanical equilibrium convergence criterion"<<res*100<< " < "<<eps_res*100<<" %\n");
+		converged=true;
+	}
+	else{
+		if(VerboseConvergence()) _printf0_(setw(50)<<left<<"   mechanical equilibrium convergence criterion"<<res*100<<" > "<<eps_res*100<<" %\n");
+		converged=false;
+	}
+
+	/*Relative criterion (optional)*/
+	if (!xIsNan<IssmDouble>(eps_rel) || (VerboseConvergence())){
+
+		//compute norm(du)/norm(u)
+		duf=old_uf->Duplicate(); old_uf->Copy(duf); duf->AYPX(uf,-1.0);
+		ndu=duf->Norm(NORM_TWO); nu=old_uf->Norm(NORM_TWO)+1.e-14;
+
+		if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error_("convergence criterion is NaN!");
+
+		//clean up
+		delete duf;
+
+		//print
+		if (!xIsNan<IssmDouble>(eps_rel)){
+			if((ndu/nu)<eps_rel){
+				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " < " << eps_rel*100 << " %\n");
+			}
+			else{
+				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " > " << eps_rel*100 << " %\n");
+				converged=false;
+			}
+		}
+		else _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " %\n");
+
+	}
+
+	/*Absolute criterion (Optional) = max(du)*/
+	if (!xIsNan<IssmDouble>(eps_abs) || (VerboseConvergence())){
+
+		//compute max(du)
+		duf=old_uf->Duplicate(); old_uf->Copy(duf); duf->AYPX(uf,-1.0);
+		nduinf=duf->Norm(NORM_INF);
+		if (xIsNan<IssmDouble>(nduinf)) _error_("convergence criterion is NaN!");
+
+		//clean up
+		delete duf;
+
+		//print
+		if (!xIsNan<IssmDouble>(eps_abs)){
+			if ((nduinf)<eps_abs){
+				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: max(du)" << nduinf << " < " << eps_abs << "\n");
+			}
+			else{
+				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: max(du)" << nduinf << " > " << eps_abs << "\n");
+				converged=false;
+			}
+		}
+		else  _printf0_(setw(50) << left << "   Convergence criterion: max(du)" << nduinf << "\n");
+
+	}
+
+	/*assign output*/
+	*pconverged=converged;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_adjoint_linear.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_adjoint_linear.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_adjoint_linear.cpp	(revision 27955)
@@ -0,0 +1,37 @@
+/*!\file: solutionsequence_adjoint_linear.cpp
+ * \brief: numerical core of linear solutions
+ */ 
+
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+void solutionsequence_adjoint_linear(FemModel* femmodel){
+	/*This is axactly the same solutionsequence as solutionsequence_linear except that Reduceloadfromgtofx and Mergesolutionfromftogx
+	 * use the flag "true" so that all spc are taken as 0*/
+
+	/*intermediary: */
+	Matrix<IssmDouble>*  Kff = NULL;
+	Matrix<IssmDouble>*  Kfs = NULL;
+	Vector<IssmDouble>*  ug  = NULL;
+	Vector<IssmDouble>*  uf  = NULL;
+	Vector<IssmDouble>*  pf  = NULL;
+	Vector<IssmDouble>*  df  = NULL;
+	Vector<IssmDouble>*  ys  = NULL;
+
+	/*Recover parameters: */
+	femmodel->UpdateConstraintsx();
+
+	SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL,femmodel);
+	CreateNodalConstraintsx(&ys,femmodel->nodes);
+	Reduceloadx(pf, Kfs, ys,true); delete Kfs; //true means spc = 0
+
+	femmodel->profiler->Start(SOLVER);
+	Solverx(&uf, Kff, pf, NULL, df, femmodel->parameters); delete Kff; delete pf; delete df;
+	femmodel->profiler->Stop(SOLVER);
+
+	Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters,true); delete ys; //true means spc0
+	InputUpdateFromSolutionx(femmodel,ug);
+	delete ug; delete uf;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_fct.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_fct.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_fct.cpp	(revision 27955)
@@ -0,0 +1,515 @@
+/*!\file: solutionsequence_fct.cpp
+ * \brief: numerical core of flux corrected transport solution
+ */
+
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../analyses/analyses.h"
+#define USEPENALTYMETHOD false
+
+#ifdef _HAVE_PETSC_
+void CreateDMatrix(Mat* pD,Mat K){/*{{{*/
+	/*Create D matrix such that:
+	 *
+	 * d_ij = max( -k_ij,0,-k_ji) off diagonal
+	 *
+	 * d_ii = - sum_{i!=j} d_ij for the diagonal
+	 *
+	 */
+
+	/*Intermediaries*/
+	int        ncols,ncols2,rstart,rend;
+	double     d,diagD;
+	Mat        D        = NULL;
+	Mat        K_transp = NULL;
+	int*       cols  = NULL;
+	int*       cols2 = NULL;
+	double*    vals  = NULL;
+	double*    vals2 = NULL;
+
+	/*First, we need to transpose K so that we access both k_ij and k_ji*/
+	MatTranspose(K,MAT_INITIAL_MATRIX,&K_transp);
+
+	/*Initialize output (D has the same non zero pattern as K)*/
+	MatDuplicate(K,MAT_SHARE_NONZERO_PATTERN,&D);
+
+	/*Go through the rows of K an K' and build D*/
+	MatGetOwnershipRange(K,&rstart,&rend);
+	for(int row=rstart; row<rend; row++){
+		diagD = 0.;
+		MatGetRow(K       ,row,&ncols, (const int**)&cols, (const double**)&vals);
+		MatGetRow(K_transp,row,&ncols2,(const int**)&cols2,(const double**)&vals2);
+		_assert_(ncols==ncols2);
+		for(int j=0; j<ncols; j++) {
+			_assert_(cols[j]==cols2[j]);
+			d = max(max(-vals[j],-vals2[j]),0.);
+			MatSetValue(D,row,cols[j],d,INSERT_VALUES);
+			if(cols[j]!=row) diagD -= d;
+		}
+		MatSetValue(D,row,row,diagD,INSERT_VALUES);
+		MatRestoreRow(K       ,row,&ncols, (const int**)&cols, (const double**)&vals);
+		MatRestoreRow(K_transp,row,&ncols2,(const int**)&cols2,(const double**)&vals2);
+	}
+	MatAssemblyBegin(D,MAT_FINAL_ASSEMBLY);
+	MatAssemblyEnd(  D,MAT_FINAL_ASSEMBLY);
+
+	/*Clean up and assign output pointer*/
+	MatFree(&K_transp);
+	*pD = D;
+}/*}}}*/
+void CreateLHS(Mat* pLHS,IssmDouble* pdmax,Mat K,Mat D,Vec Ml,IssmDouble theta,IssmDouble deltat,FemModel* femmodel,int configuration_type){/*{{{*/
+	/*Create Left Hand side of Lower order solution
+	 *
+	 * LHS = [ML - theta*detlat *(K+D)^n+1]
+	 *
+	 */
+
+	/*Intermediaries*/
+	int        dof,ncols,ncols2,rstart,rend;
+	double     d,mi,dmax = 0.;
+	Mat        LHS   = NULL;
+	int*       cols  = NULL;
+	int*       cols2 = NULL;
+	double*    vals  = NULL;
+	double*    vals2 = NULL;
+
+	MatDuplicate(K,MAT_SHARE_NONZERO_PATTERN,&LHS);
+	MatGetOwnershipRange(K,&rstart,&rend);
+	for(int row=rstart; row<rend; row++){
+		MatGetRow(K,row,&ncols, (const int**)&cols, (const double**)&vals);
+		MatGetRow(D,row,&ncols2,(const int**)&cols2,(const double**)&vals2);
+		_assert_(ncols==ncols2);
+		for(int j=0; j<ncols; j++) {
+			_assert_(cols[j]==cols2[j]);
+			d = -theta*deltat*(vals[j] + vals2[j]);
+			if(cols[j]==row){
+				VecGetValues(Ml,1,(const int*)&cols[j],&mi);
+				d += mi;
+			}
+			if(fabs(d)>dmax) dmax = fabs(d);
+			MatSetValue(LHS,row,cols[j],d,INSERT_VALUES);
+		}
+		MatRestoreRow(K,row,&ncols, (const int**)&cols, (const double**)&vals);
+		MatRestoreRow(D,row,&ncols2,(const int**)&cols2,(const double**)&vals2);
+	}
+	MatAssemblyBegin(LHS,MAT_FINAL_ASSEMBLY);
+	MatAssemblyEnd(  LHS,MAT_FINAL_ASSEMBLY);
+
+	/*Deal with Dirichlet conditions: 2 options, penalties or zeros in K matrix*/
+	if(USEPENALTYMETHOD){
+		/*Option 1: Penalty method*/
+
+		/*Broadcast max(dmax)*/
+		IssmDouble dmax_all;
+		ISSM_MPI_Reduce(&dmax,&dmax_all,1,ISSM_MPI_DOUBLE,ISSM_MPI_MAX,0,IssmComm::GetComm() );
+		ISSM_MPI_Bcast(&dmax_all,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+		dmax = dmax_all;
+
+		dmax = dmax * 1.e+3;
+		for(Object* & object: femmodel->constraints->objects){
+			Constraint* constraint=xDynamicCast<Constraint*>(object);
+			constraint->PenaltyDofAndValue(&dof,&d,femmodel->nodes,femmodel->parameters);
+			if(dof!=-1){
+				MatSetValue(LHS,dof,dof,dmax,INSERT_VALUES);
+			}
+		}
+	}
+	else{
+		/*Option 2: zero stiffness matrix, 1 one diagonal*/
+		int numrows = femmodel->constraints->Size();
+		int* rows = xNew<int>(numrows);
+		IssmDouble* rows_spc = xNew<IssmDouble>(numrows);
+		numrows = 0;
+
+		dmax = dmax * 1.e+3;
+		for(Object* & object: femmodel->constraints->objects){
+			Constraint* constraint=xDynamicCast<Constraint*>(object);
+			constraint->PenaltyDofAndValue(&dof,&d,femmodel->nodes,femmodel->parameters);
+			if(dof!=-1){
+				rows[numrows] = dof;
+				numrows++;
+			}
+		}
+		MatZeroRows(LHS,numrows,rows,1.,NULL,NULL);
+		xDelete<int>(rows);
+		xDelete<IssmDouble>(rows_spc);
+	}
+	MatAssemblyBegin(LHS,MAT_FINAL_ASSEMBLY);
+	MatAssemblyEnd(  LHS,MAT_FINAL_ASSEMBLY);
+
+	/*Clean up and assign output pointer*/
+	*pdmax = dmax;
+	*pLHS  = LHS;
+}/*}}}*/
+void CreateRHS(Vec* pRHS,Mat K,Mat D,Vec Ml,Vec p,Vec u,IssmDouble theta,IssmDouble deltat,IssmDouble dmax,FemModel* femmodel,int configuration_type){/*{{{*/
+	/*Create Right Hand side of Lower order solution
+	 *
+	 * RHS = [ML + (1 - theta) deltaT L^n] u^n
+	 *
+	 * where L = K + D
+	 *
+	 */
+
+	/*Intermediaries*/
+	Vec         Ku  = NULL;
+	Vec         Du  = NULL;
+	Vec         RHS = NULL;
+	int         dof;
+	IssmDouble  d;
+
+	/*Initialize vectors*/
+	VecDuplicate(u,&Ku);
+	VecDuplicate(u,&Du);
+	VecDuplicate(u,&RHS);
+
+	/*Create RHS = M*u + (1-theta)*deltat*K*u + (1-theta)*deltat*D*u*/
+	MatMult(K,u,Ku);
+	MatMult(D,u,Du);
+	VecPointwiseMult(RHS,Ml,u);
+	VecAXPBYPCZ(RHS,(1-theta)*deltat,(1-theta)*deltat,1,Ku,Du);
+	VecAXPBY(RHS,deltat,1,p);
+	VecFree(&Ku);
+	VecFree(&Du);
+
+	VecAssemblyBegin(RHS);
+	VecAssemblyEnd(  RHS);
+
+	/*Deal with Dirichlet conditions: 2 options, penalties or zeros in K matrix*/
+	if(USEPENALTYMETHOD){
+		/*Option 1: Penalty method*/
+		for(Object* & object: femmodel->constraints->objects){
+			Constraint* constraint=xDynamicCast<Constraint*>(object);
+			constraint->PenaltyDofAndValue(&dof,&d,femmodel->nodes,femmodel->parameters);
+			d = d*dmax;
+			if(dof!=-1){
+				VecSetValues(RHS,1,&dof,(const double*)&d,INSERT_VALUES);
+			}
+		}
+	}
+	else{
+		/*Option 2: zero stiffness matrix, 1 one diagonal*/
+		int  numrows = femmodel->constraints->Size();
+		int* rows = xNew<int>(numrows);
+		IssmDouble* rows_spc = xNew<IssmDouble>(numrows);
+		numrows = 0;
+		for(Object* & object: femmodel->constraints->objects){
+			Constraint* constraint=xDynamicCast<Constraint*>(object);
+			constraint->PenaltyDofAndValue(&dof,&d,femmodel->nodes,femmodel->parameters);
+			if(dof!=-1){
+				rows[numrows] = dof;
+				rows_spc[numrows] = d;
+				numrows++;
+			}
+		}
+		VecSetValues(RHS,numrows,rows,rows_spc,INSERT_VALUES);
+		xDelete<int>(rows);
+		xDelete<IssmDouble>(rows_spc);
+	}
+	VecAssemblyBegin(RHS);
+	VecAssemblyEnd(  RHS);
+
+	/*Assign output pointer*/
+	*pRHS = RHS;
+
+}/*}}}*/
+void RichardsonUdot(Vec* pudot,Vec u,Vec Ml,Mat K,Mat Mc){/*{{{*/
+	/*Use Richardson's formula to get udot using 5 steps and an initial guess of 0
+	 *
+	 * udot_new = udot_old + Ml^-1 (K^(n+1) u - Mc udot_old)
+	 *
+	 * */
+
+	/*Intermediaries*/
+	Vec udot  = NULL;
+	Vec temp1 = NULL;
+	Vec temp2 = NULL;
+
+	/*Initialize vectors*/
+	VecDuplicate(u,&udot);
+	VecDuplicate(u,&temp1);
+	VecDuplicate(u,&temp2);
+
+	/*Initial guess*/
+	VecZeroEntries(udot);
+
+	/*Richardson's iterations*/
+	for(int i=0;i<5;i++){
+		MatMult(Mc,udot,temp1);
+		MatMult(K, u,   temp2);
+		VecAXPBY(temp2,-1.,1.,temp1);       // temp2 = (K^(n+1) u -- Mc udot_old)
+		VecPointwiseDivide(temp1,temp2,Ml); // temp1 = Ml^-1 temp2
+		VecAXPBY(udot,1.,1.,temp1);
+	}
+
+	/*Clean up and assign output pointer*/
+	VecFree(&temp1);
+	VecFree(&temp2);
+	*pudot=udot;
+
+}/*}}}*/
+void CreateRis(IssmDouble** pRi_plus_serial,IssmDouble** pRi_minus_serial,Mat Mc,Mat D,IssmDouble* ml_serial,Vec uvec,IssmDouble* u,IssmDouble* udot,IssmDouble* ulmin,IssmDouble* ulmax,IssmDouble deltat){/*{{{*/
+
+	/*Intermediaries*/
+	Vec         Ri_plus  = NULL;
+	Vec         Ri_minus = NULL;
+	int         ncols,ncols2,rstart,rend;
+	double      d;
+	int        *cols     = NULL;
+	int        *cols2    = NULL;
+	double     *vals     = NULL;
+	double     *vals2    = NULL;
+
+	/*Initialize vectors*/
+	VecDuplicate(uvec,&Ri_plus);
+	VecDuplicate(uvec,&Ri_minus);
+
+	/*Get global extremas*/
+	IssmDouble uLmin_global =  ulmin[0];
+	IssmDouble uLmax_global =  ulmax[0];
+	VecGetSize(uvec,&ncols);
+	for(int i=1;i<ncols;i++) if(ulmin[i]<uLmin_global) uLmin_global = ulmin[i];
+	for(int i=1;i<ncols;i++) if(ulmax[i]>uLmax_global) uLmax_global = ulmax[i];
+	//printf("%g %g\n",uLmin_global,uLmax_global);
+
+	/*Go through D and calculate Ris*/
+	MatGetOwnershipRange(D,&rstart,&rend);
+	for(int row=rstart; row<rend; row++){
+		double Pi_plus  = 0.;
+		double Pi_minus = 0.;
+		MatGetRow(Mc,row,&ncols, (const int**)&cols, (const double**)&vals);
+		MatGetRow(D ,row,&ncols2,(const int**)&cols2,(const double**)&vals2);
+		_assert_(ncols==ncols2);
+		for(int j=0; j<ncols; j++) {
+			_assert_(cols[j]==cols2[j]);
+			d = vals[j]*(udot[row] - udot[cols[j]]) + vals2[j]*(u[row] - u[cols[j]]);
+			if(row!=cols[j]){
+				if(d>0.){
+					Pi_plus  += d;
+				}
+				else{
+					Pi_minus += d;
+				}
+			}
+		}
+
+		/*Compute Qis and Ris*/
+		//double Qi_plus  = ml_serial[row]/deltat*(3. - u[row]);
+		//double Qi_minus = ml_serial[row]/deltat*(2. - u[row]);
+		double Qi_plus  = ml_serial[row]/deltat*(ulmax[row] - u[row]);
+		double Qi_minus = ml_serial[row]/deltat*(ulmin[row] - u[row]);
+		//double Qi_plus  = ml_serial[row]/deltat*(uLmax_global - u[row]);
+		//double Qi_minus = ml_serial[row]/deltat*(uLmin_global - u[row]);
+		_assert_(Qi_plus  >= 0.);
+		_assert_(Qi_minus <= 0.);
+		d = 1.;
+		if(Pi_plus!=0.) d = min(1.,Qi_plus/Pi_plus);
+		VecSetValue(Ri_plus,row,d,INSERT_VALUES);
+		d = 1.;
+		if(Pi_minus!=0.) d = min(1.,Qi_minus/Pi_minus);
+		VecSetValue(Ri_minus,row,d,INSERT_VALUES);
+
+		MatRestoreRow(Mc,row,&ncols, (const int**)&cols, (const double**)&vals);
+		MatRestoreRow(D ,row,&ncols2,(const int**)&cols2,(const double**)&vals2);
+	}
+	VecAssemblyBegin(Ri_plus);
+	VecAssemblyEnd(  Ri_plus);
+	VecAssemblyBegin(Ri_minus);
+	VecAssemblyEnd(  Ri_minus);
+
+	/*Serialize Ris*/
+	IssmDouble* Ri_plus_serial  = NULL;
+	IssmDouble* Ri_minus_serial = NULL;
+	VecToMPISerial(&Ri_plus_serial,Ri_plus,IssmComm::GetComm());
+	VecToMPISerial(&Ri_minus_serial,Ri_minus,IssmComm::GetComm());
+	VecFree(&Ri_plus);
+	VecFree(&Ri_minus);
+
+	/*Assign output pointer*/
+	*pRi_plus_serial  = Ri_plus_serial;
+	*pRi_minus_serial = Ri_minus_serial;
+}/*}}}*/
+void CreateFbar(Vec* pFbar,IssmDouble* Ri_plus,IssmDouble* Ri_minus,Mat Mc,Mat D,IssmDouble* udot,IssmDouble* u,Vec uvec){/*{{{*/
+
+	/*Intermediaries*/
+	Vec         Fbar = NULL;
+	int         ncols,ncols2,rstart,rend;
+	double      d,f_ij;
+	int        *cols     = NULL;
+	int        *cols2    = NULL;
+	double     *vals     = NULL;
+	double     *vals2    = NULL;
+
+	/*Build fbar*/
+	VecDuplicate(uvec,&Fbar);
+	MatGetOwnershipRange(D,&rstart,&rend);
+	for(int row=rstart; row<rend; row++){
+		MatGetRow(Mc,row,&ncols, (const int**)&cols, (const double**)&vals);
+		MatGetRow(D ,row,&ncols2,(const int**)&cols2,(const double**)&vals2);
+		_assert_(ncols==ncols2);
+		d = 0.;
+		for(int j=0; j<ncols; j++) {
+			_assert_(cols[j]==cols2[j]);
+			if(row==cols[j]) continue;
+			f_ij = vals[j]*(udot[row] - udot[cols[j]]) + vals2[j]*(u[row] - u[cols[j]]);
+			if(f_ij>0){
+				d += min(Ri_plus[row],Ri_minus[cols[j]]) * f_ij;
+			}
+			else{
+				d += min(Ri_minus[row],Ri_plus[cols[j]]) * f_ij;
+			}
+		}
+		VecSetValue(Fbar,row,d,INSERT_VALUES);
+		MatRestoreRow(Mc,row,&ncols, (const int**)&cols, (const double**)&vals);
+		MatRestoreRow(D ,row,&ncols2,(const int**)&cols2,(const double**)&vals2);
+	}
+	VecAssemblyBegin(Fbar);
+	VecAssemblyEnd(  Fbar);
+
+	/*Assign output pointer*/
+	*pFbar = Fbar;
+}/*}}}*/
+void UpdateSolution(Vec u,Vec udot,Vec Ml,Vec Fbar,IssmDouble deltat){/*{{{*/
+
+	/*Intermediary*/
+	Vec temp1 = NULL;
+
+	/*Compute solution u^n+1 = u_L + deltat Ml^-1 fbar*/
+	VecDuplicate(u,&temp1);
+	VecPointwiseDivide(temp1,Fbar,Ml); //temp1 = Ml^-1 temp2
+	VecAXPBY(udot,1.,1.,temp1);
+	VecAXPY(u,deltat,temp1);
+
+	/*CLean up and return*/
+	VecFree(&temp1);
+}/*}}}*/
+#endif
+void solutionsequence_fct(FemModel* femmodel){/*{{{*/
+
+	/*intermediary: */
+	IssmDouble           theta,deltat,dmax;
+	int                  configuration_type,analysis_type;
+	Matrix<IssmDouble>*  K  = NULL;
+	Matrix<IssmDouble>*  Mc = NULL;
+	Vector<IssmDouble>*  p  = NULL;
+	Vector<IssmDouble>*  ug = NULL;
+	Vector<IssmDouble>*  uf = NULL;
+	MasstransportAnalysis* manalysis = NULL;
+	DamageEvolutionAnalysis* danalysis = NULL;
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&deltat,TimesteppingTimeStepEnum);
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	femmodel->UpdateConstraintsx();
+	theta = 0.5; //0.5==Crank-Nicolson, 1==Backward Euler
+
+	/*Create analysis*/
+	femmodel->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+	switch(analysis_type){
+		case MasstransportAnalysisEnum:
+			manalysis = new MasstransportAnalysis();
+			manalysis->MassMatrix(&Mc,femmodel);
+			manalysis->FctKMatrix(&K,NULL,femmodel);
+			manalysis->FctPVector(&p,femmodel);
+			break;
+		case DamageEvolutionAnalysisEnum:
+			danalysis = new DamageEvolutionAnalysis();
+			danalysis->MassMatrix(&Mc,femmodel);
+			danalysis->FctKMatrix(&K,NULL,femmodel);
+			danalysis->FctPVector(&p,femmodel);
+			break;
+		default: _error_("analysis type " << EnumToStringx(analysis_type) << " not supported for FCT\n");
+	}
+	delete manalysis;
+	delete danalysis;
+
+	#ifdef _HAVE_PETSC_
+
+	/*Convert matrices to PETSc matrices*/
+	Mat D_petsc  = NULL;
+	Mat LHS      = NULL;
+	Vec RHS      = NULL;
+	Vec u        = NULL;
+	Vec udot     = NULL;
+	Mat K_petsc  = K->pmatrix->matrix;
+	Mat Mc_petsc = Mc->pmatrix->matrix;
+	Vec p_petsc	 = p->pvector->vector;
+
+	/*Get previous solution u^n*/
+	GetSolutionFromInputsx(&ug,femmodel);
+	Reducevectorgtofx(&uf, ug, femmodel->nodes,femmodel->parameters);
+	delete ug;
+
+	/*Compute lumped mass matrix*/
+	Vec Ml_petsc = NULL;
+	VecDuplicate(uf->pvector->vector,&Ml_petsc);
+	MatGetRowSum(Mc_petsc,Ml_petsc);
+
+	/*Create D Matrix*/
+	CreateDMatrix(&D_petsc,K_petsc);
+
+	/*Create LHS: [ML - theta*detlat *(K+D)^n+1]*/
+	CreateLHS(&LHS,&dmax,K_petsc,D_petsc,Ml_petsc,theta,deltat,femmodel,configuration_type);
+
+	/*Create RHS: [ML + (1 - theta) deltaT L^n] u^n */
+	CreateRHS(&RHS,K_petsc,D_petsc,Ml_petsc,p_petsc,uf->pvector->vector,theta,deltat,dmax,femmodel,configuration_type);
+	delete uf;
+	delete p;
+
+	/*Go solve lower order solution*/
+	femmodel->profiler->Start(SOLVER);
+	SolverxPetsc(&u,LHS,RHS,NULL,NULL, femmodel->parameters);
+	femmodel->profiler->Stop(SOLVER);
+	MatFree(&LHS);
+	VecFree(&RHS);
+
+	/*Richardson to calculate udot*/
+	RichardsonUdot(&udot,u,Ml_petsc,K_petsc,Mc_petsc);
+	delete K;
+
+	/*Serialize u and udot*/
+	IssmDouble* udot_serial = NULL;
+	IssmDouble* u_serial    = NULL;
+	IssmDouble* ml_serial   = NULL;
+	VecToMPISerial(&udot_serial,udot    ,IssmComm::GetComm());
+	VecToMPISerial(&u_serial   ,u       ,IssmComm::GetComm());
+	VecToMPISerial(&ml_serial  ,Ml_petsc,IssmComm::GetComm());
+
+	/*Anti diffusive fluxes*/
+	Vec         Fbar            = NULL;
+	IssmDouble *Ri_minus_serial = NULL;
+	IssmDouble *Ri_plus_serial  = NULL;
+	IssmDouble *ulmin           = NULL;
+	IssmDouble *ulmax           = NULL;
+	femmodel->GetInputLocalMinMaxOnNodesx(&ulmin,&ulmax,u_serial);
+	CreateRis(&Ri_plus_serial,&Ri_minus_serial,Mc_petsc,D_petsc,ml_serial,u,u_serial,udot_serial,ulmin,ulmax,deltat);
+	CreateFbar(&Fbar,Ri_plus_serial,Ri_minus_serial,Mc_petsc,D_petsc,udot_serial,u_serial,u);
+	xDelete<IssmDouble>(Ri_plus_serial);
+	xDelete<IssmDouble>(Ri_minus_serial);
+	xDelete<IssmDouble>(ulmin);
+	xDelete<IssmDouble>(ulmax);
+
+	/*Clean up*/
+	MatFree(&D_petsc);
+	delete Mc;
+	xDelete<IssmDouble>(udot_serial);
+	xDelete<IssmDouble>(u_serial);
+	xDelete<IssmDouble>(ml_serial);
+
+	/*Compute solution u^n+1 = u_L + deltat Ml^-1 fbar*/
+	UpdateSolution(u,udot,Ml_petsc,Fbar,deltat);
+	uf =new Vector<IssmDouble>(u);
+	VecFree(&u);
+	VecFree(&Fbar);
+	VecFree(&udot);
+	VecFree(&Ml_petsc);
+
+	/*Update Element inputs*/
+	InputUpdateFromSolutionx(femmodel,uf);
+	delete uf;
+
+	#else
+	_error_("PETSc needs to be installed");
+	#endif
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_glads_nonlinear.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_glads_nonlinear.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_glads_nonlinear.cpp	(revision 27955)
@@ -0,0 +1,96 @@
+/*!\file: solutionsequence_nonlinear.cpp
+ * \brief: core of a non-linear solution, using fixed-point method 
+ */ 
+
+#include "./solutionsequences.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+void solutionsequence_glads_nonlinear(FemModel* femmodel){
+
+	/*intermediary: */
+	Matrix<IssmDouble>* Kff = NULL;
+	Matrix<IssmDouble>* Kfs = NULL;
+	Vector<IssmDouble>* ug  = NULL;
+	Vector<IssmDouble>* uf  = NULL;
+	Vector<IssmDouble>* old_uf = NULL;
+	Vector<IssmDouble>* pf  = NULL;
+	Vector<IssmDouble>* df  = NULL;
+	Vector<IssmDouble>* ys  = NULL;
+
+	/*parameters:*/
+	int max_nonlinear_iterations;
+	IssmDouble eps_res,eps_rel,eps_abs;
+	HydrologyGlaDSAnalysis* analysis = new HydrologyGlaDSAnalysis();
+
+	/*Recover parameters (FIXME: from Stress balance for now :( )*/
+	femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
+	femmodel->parameters->FindParam(&eps_res,StressbalanceRestolEnum);
+	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
+	femmodel->parameters->FindParam(&eps_abs,StressbalanceAbstolEnum);
+	femmodel->UpdateConstraintsx();
+
+	int  count_out=0;
+	bool converged_out=false;
+	int  count_in=0;
+	bool converged_in=false;
+
+	/*Start non-linear iteration using input velocity: */
+	GetSolutionFromInputsx(&ug,femmodel);
+	Reducevectorgtofx(&uf, ug, femmodel->nodes,femmodel->parameters);
+
+	while(!converged_out){
+
+		count_in=0;
+		converged_in=false;
+
+		while(!converged_in){
+			/*save pointer to old solution*/
+			delete old_uf;old_uf=uf;
+			delete ug;
+
+			SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+			CreateNodalConstraintsx(&ys,femmodel->nodes);
+			Reduceloadx(pf, Kfs, ys); delete Kfs;
+			femmodel->profiler->Start(SOLVER);
+			Solverx(&uf, Kff, pf, old_uf, df, femmodel->parameters);
+			femmodel->profiler->Stop(SOLVER);
+			Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters);delete ys;
+
+			convergence(&converged_in,Kff,pf,uf,old_uf,eps_res,eps_rel,eps_abs); delete Kff; delete pf; delete df;
+			InputUpdateFromSolutionx(femmodel,ug);
+
+			/*Increase count: */
+			count_in++;
+			if(count_in>=max_nonlinear_iterations && !converged_in){
+				//_printf0_("   maximum number of nonlinear iterations of inner loop (" << max_nonlinear_iterations << ") exceeded\n"); 
+				converged_in = true;
+			}
+		}
+		if(VerboseConvergence()) _printf0_(setw(50) << left << "   Inner loop converged in "<<count_in<<" iterations\n");
+
+		if(VerboseConvergence()) _printf0_("   updating sheet thickness and channels cross section\n");
+		analysis->UpdateSheetThickness(femmodel);
+		analysis->UpdateChannelCrossSection(femmodel);
+
+		/*Converged if inner loop converged in one solution*/
+		if(count_in==1) converged_out = true;
+
+		/*Increase count: */
+		count_out++;
+		if(count_out>=max_nonlinear_iterations && !converged_out){
+			_printf0_("   maximum number of nonlinear iterations of outer loop (" << max_nonlinear_iterations << ") exceeded\n"); 
+			converged_out = true;
+		}
+	}
+
+	if(VerboseConvergence()) _printf0_("\n   total number of iterations: " << count_out<<"x"<<count_in<<"\n");
+
+	/*clean-up*/
+	delete uf;
+	delete ug;
+	delete old_uf;
+	delete analysis;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 27955)
@@ -0,0 +1,323 @@
+/*!\file: solutionsequence_hydro_nonlinear.cpp
+ * \brief: core of the hydro solution
+ */
+
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+/*FIXME, dirty hack to get the solutionsequence linear needed to compute the slopes*/
+#include "../solutionsequences/solutionsequences.h"
+
+void solutionsequence_hydro_nonlinear(FemModel* femmodel, bool* pconv_fail){
+	/*solution : */
+	Vector<IssmDouble>* ug_sed=NULL;
+	Vector<IssmDouble>* uf_sed=NULL;
+	Vector<IssmDouble>* uf_sed_sub_iter=NULL;
+	Vector<IssmDouble>* ug_sed_main_iter=NULL;
+	Vector<IssmDouble>* ug_sed_init=NULL;
+
+	Vector<IssmDouble>* ug_epl=NULL;
+	Vector<IssmDouble>* uf_epl=NULL;
+	Vector<IssmDouble>* uf_epl_sub_iter=NULL;
+	Vector<IssmDouble>* ug_epl_main_iter=NULL;
+	Vector<IssmDouble>* ug_epl_init=NULL;
+
+	Vector<IssmDouble>* ys=NULL;
+	Vector<IssmDouble>* dug=NULL;
+
+	Matrix<IssmDouble>* Kff=NULL;
+	Matrix<IssmDouble>* Kfs=NULL;
+
+	Vector<IssmDouble>* pf=NULL;
+	Vector<IssmDouble>* df=NULL;
+
+	HydrologyDCInefficientAnalysis* inefanalysis = NULL;
+	HydrologyDCEfficientAnalysis* effanalysis = NULL;
+
+	bool       sedconverged,eplconverged,hydroconverged;
+	bool       isefficientlayer;
+	bool       sliceadapt;
+	int        constraints_converged;
+	int        num_unstable_constraints;
+	int        sedcount,eplcount,hydrocount;
+	int        hydro_maxiter;
+	int        epl_fsize,epl_sub_fsize,epl_main_fsize;
+	IssmDouble sediment_kmax;
+	IssmDouble eps_res,eps_rel,eps_abs;
+	IssmDouble ndu_sed,nu_sed;
+	IssmDouble ndu_epl,nu_epl;
+	IssmDouble ThickCount,L2Count;
+	/*Recover parameters: */
+	femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
+	femmodel->parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum);
+	femmodel->parameters->FindParam(&sliceadapt,HydrologyStepAdaptEnum);
+	femmodel->parameters->FindParam(&hydro_maxiter,HydrologydcMaxIterEnum);
+	femmodel->parameters->FindParam(&eps_res,StressbalanceRestolEnum);
+	femmodel->parameters->FindParam(&eps_rel,HydrologydcRelTolEnum);
+	femmodel->parameters->FindParam(&eps_abs,StressbalanceAbstolEnum);
+	hydrocount=1;
+	hydroconverged=false;
+	/*We don't need the outer loop if only one layer is used*/
+	if(!isefficientlayer) hydroconverged=true;
+
+	/*{{{*//*Retrieve inputs as the initial state for the non linear iteration*/
+	GetBasalSolutionFromInputsx(&ug_sed,femmodel);
+	/*Initialize the IDS element mask to exclude frozen nodes*/
+	inefanalysis = new HydrologyDCInefficientAnalysis();
+	inefanalysis->ElementizeIdsMask(femmodel);
+
+	Reducevectorgtofx(&uf_sed, ug_sed, femmodel->nodes,femmodel->parameters);
+	ug_sed_init=ug_sed->Duplicate();
+	ug_sed->Copy(ug_sed_init);
+
+	if(isefficientlayer) {
+		effanalysis = new HydrologyDCEfficientAnalysis();
+		femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
+		GetBasalSolutionFromInputsx(&ug_epl,femmodel);
+		inefanalysis->ElementizeEplMask(femmodel);
+		effanalysis->InitZigZagCounter(femmodel);
+		ug_epl_init=ug_epl->Duplicate();
+		ug_epl->Copy(ug_epl_init);
+	}
+	/*}}}*/
+	/*The real computation starts here, outermost loop is on the two layer system*/
+	for(;;){
+		sedcount=1;
+		eplcount=1;
+
+		/*If there is two layers we need an outer loop value to compute convergence*/
+		if(isefficientlayer){
+			ug_sed_main_iter=ug_sed->Duplicate();
+			ug_sed->Copy(ug_sed_main_iter);
+			ug_epl_main_iter=ug_epl->Duplicate();
+			ug_epl->Copy(ug_epl_main_iter);
+		}
+		/*Loop on sediment layer to deal with transfer and head value*/
+		femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
+		ResetZigzagCounterx(femmodel);
+		InputUpdateFromConstantx(femmodel,false,ConvergedEnum);
+		femmodel->UpdateConstraintsx();
+
+		/*Reset constraint on the ZigZag Lock*/
+		ResetConstraintsx(femmodel);
+
+		/*{{{*//*Treating the sediment*/
+		femmodel->profiler->Start(SEDLOOP);
+		for(;;){
+			sedconverged=false;
+			uf_sed_sub_iter=uf_sed->Duplicate();_assert_(uf_sed_sub_iter);
+			uf_sed->Copy(uf_sed_sub_iter);
+			/*{{{*//*Loop on the sediment layer to deal with the penalization*/
+			for(;;){
+				/*{{{*//*Core of the computation*/
+				if(VerboseSolution()) _printf0_("Building Sediment Matrix...\n");
+
+				femmodel->profiler->Start(SEDMatrix);
+				SystemMatricesx(&Kff,&Kfs,&pf,&df,&sediment_kmax,femmodel);
+				CreateNodalConstraintsx(&ys,femmodel->nodes);
+				Reduceloadx(pf,Kfs,ys); delete Kfs;
+				delete uf_sed;
+				femmodel->profiler->Stop(SEDMatrix);
+
+				femmodel->profiler->Start(SOLVER);
+				Solverx(&uf_sed,Kff,pf,uf_sed_sub_iter,df,femmodel->parameters);
+				delete df;
+				femmodel->profiler->Stop(SOLVER);
+				delete ug_sed;
+				femmodel->profiler->Start(SEDUpdate);
+				Mergesolutionfromftogx(&ug_sed,uf_sed,ys,femmodel->nodes,femmodel->parameters); delete ys;
+				InputUpdateFromSolutionx(femmodel,ug_sed);
+				ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel);
+				femmodel->profiler->Stop(SEDUpdate);
+				/*}}}*/
+				if (!sedconverged){
+					/*First check that all the penalizations are applied*/
+					if(VerboseConvergence()) _printf0_("   # Sediment unstable constraints = " << num_unstable_constraints << "\n");
+					if(num_unstable_constraints==0) {
+						sedconverged = true;
+					}
+					else{//clean up
+						delete Kff;
+						delete pf;
+					}
+					if (sedcount>=hydro_maxiter){
+						delete ug_sed;delete uf_sed;delete inefanalysis; delete ug_sed_main_iter;
+						if(isefficientlayer)delete ug_epl;delete effanalysis; delete ug_epl_main_iter;
+						_error_("   maximum number of Sediment iterations (" << hydro_maxiter << ") exceeded");
+
+					}
+				}
+				/*Add an iteration and get out of the loop if the penalisation is converged*/
+				sedcount++;
+				if(sedconverged)break;
+			}
+			/*}}}*//*End of the sediment penalization loop*/
+			sedconverged=false;
+			/*Checking convergence on the value of the sediment head*/
+			convergence(&sedconverged,Kff,pf,uf_sed,uf_sed_sub_iter,eps_res,eps_rel,eps_abs);
+			delete Kff; delete pf;delete uf_sed_sub_iter;
+			if(sedconverged){
+				femmodel->parameters->SetParam(sediment_kmax,HydrologySedimentKmaxEnum);
+				InputUpdateFromConstantx(femmodel,sedconverged,ConvergedEnum);
+				InputUpdateFromSolutionx(femmodel,ug_sed);
+				InputUpdateFromConstantx(femmodel,sediment_kmax,HydrologySedimentKmaxEnum);
+				break;
+			}
+		}
+		femmodel->profiler->Stop(SEDLOOP);
+		/*}}}*//*End of the global sediment loop*/
+		/*{{{*//*Now dealing with the EPL in the same way*/
+		femmodel->profiler->Start(EPLLOOP);
+		if(isefficientlayer){
+			femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
+			/*updating mask*/
+			if(VerboseSolution()) _printf0_("==updating mask...\n");
+			femmodel->HydrologyEPLupdateDomainx(&ThickCount);
+			ResetZigzagCounterx(femmodel);
+			InputUpdateFromConstantx(femmodel,false,ConvergedEnum);
+
+			for(;;){
+				eplconverged=false;
+				/*{{{*//*Retrieve the EPL head slopes and compute EPL Thickness*/
+				if(VerboseSolution()) _printf0_("computing EPL Head slope...\n");
+				femmodel->profiler->Start(EPLMasking);
+				femmodel->SetCurrentConfiguration(L2ProjectionEPLAnalysisEnum);
+				femmodel->UpdateConstraintsL2ProjectionEPLx(&L2Count);
+				femmodel->parameters->SetParam(EplHeadSlopeXEnum,InputToL2ProjectEnum);
+				solutionsequence_linear(femmodel);
+				femmodel->parameters->SetParam(EplHeadSlopeYEnum,InputToL2ProjectEnum);
+				solutionsequence_linear(femmodel);
+
+				femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
+				effanalysis->ComputeEPLThickness(femmodel);
+				//updating mask after the computation of the epl thickness (Allow to close too thin EPL)
+				femmodel->HydrologyEPLupdateDomainx(&ThickCount);
+				/*}}}*/
+				femmodel->profiler->Stop(EPLMasking);
+				Reducevectorgtofx(&uf_epl, ug_epl, femmodel->nodes,femmodel->parameters);
+				if(VerboseSolution()) _printf0_("Building EPL Matrix...\n");
+				uf_epl_sub_iter=uf_epl->Duplicate();_assert_(uf_epl_sub_iter);
+				uf_epl->Copy(uf_epl_sub_iter);
+				uf_epl->GetSize(&epl_sub_fsize);
+				femmodel->profiler->Start(EPLMatrices);
+				SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+				CreateNodalConstraintsx(&ys,femmodel->nodes);
+				Reduceloadx(pf,Kfs,ys);
+				delete Kfs;delete uf_epl;
+				femmodel->profiler->Stop(EPLMatrices);
+				femmodel->profiler->Start(SOLVER);
+				Solverx(&uf_epl,Kff,pf,uf_epl_sub_iter,df,femmodel->parameters);
+				femmodel->profiler->Stop(SOLVER);
+				delete df;delete ug_epl;
+				femmodel->profiler->Start(EPLUpdate);
+				Mergesolutionfromftogx(&ug_epl,uf_epl,ys,femmodel->nodes,femmodel->parameters); delete ys;
+				InputUpdateFromSolutionx(femmodel,ug_epl);
+				ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel);
+				femmodel->profiler->Stop(EPLUpdate);
+				uf_epl->GetSize(&epl_fsize);
+				if(epl_fsize-epl_sub_fsize==0){
+					convergence(&eplconverged,Kff,pf,uf_epl,uf_epl_sub_iter,eps_res,eps_rel,eps_abs);
+					delete Kff; delete pf;
+				}
+				else{
+					delete Kff; delete pf;
+				}
+
+				if (eplcount>=hydro_maxiter*9/10 && sliceadapt && !eplconverged) {
+					if(VerboseSolution()) _printf0_("epl did not converged after "<<eplconverged<<" iteration, we refine the steping\n");
+					*pconv_fail = true;
+					InputUpdateFromSolutionx(femmodel,ug_epl_init);
+					delete ug_epl_init;
+					femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
+					InputUpdateFromSolutionx(femmodel,ug_sed_init);
+					delete ug_sed_init;
+					break;
+				}
+				else if (eplcount>=hydro_maxiter){
+					delete ug_sed;delete uf_sed;delete inefanalysis;delete ug_sed_main_iter;
+					delete ug_epl;delete uf_epl;delete effanalysis;delete ug_epl_main_iter;
+					_error_("   maximum number of EPL iterations (" << hydro_maxiter << ") exceeded");
+
+				}
+				eplcount++;
+				delete uf_epl_sub_iter; delete uf_epl;
+				if(eplconverged){
+					if(VerboseSolution()) _printf0_("eplconverged...\n");
+					effanalysis->ResetCounter(femmodel);
+					break;
+				}
+			}
+		}
+		femmodel->profiler->Stop(EPLLOOP);
+		if(*pconv_fail){
+			break;
+		}
+		/*}}}*//*End of the global EPL loop*/
+		/*{{{*//*Now dealing with the convergence of the whole system*/
+		if(!hydroconverged){
+			//compute norm(du)/norm(u)
+			dug=ug_sed_main_iter->Duplicate(); _assert_(dug);
+			ug_sed_main_iter->Copy(dug);
+			dug->AYPX(ug_sed,-1.0);
+			ndu_sed=dug->Norm(NORM_TWO);
+			delete dug;
+			nu_sed=ug_sed_main_iter->Norm(NORM_TWO);
+			delete ug_sed_main_iter;
+			if (xIsNan<IssmDouble>(ndu_sed) || xIsNan<IssmDouble>(nu_sed)) _error_("Sed convergence criterion is NaN!");
+			if (ndu_sed==0.0 && nu_sed==0.0) nu_sed=1.0e-6; /*Hacking the case where the Sediment is used but empty*/
+			dug=ug_epl_main_iter->Duplicate();_assert_(dug);
+			ug_epl_main_iter->Copy(dug);
+			dug->AYPX(ug_epl,-1.0);
+			ndu_epl=dug->Norm(NORM_TWO);
+			delete dug;
+			nu_epl=ug_epl_main_iter->Norm(NORM_TWO);
+			delete ug_epl_main_iter;
+			if (xIsNan<IssmDouble>(ndu_epl) || xIsNan<IssmDouble>(nu_epl)) _error_("EPL convergence criterion is NaN!");
+			if (ndu_epl==0.0 && nu_epl==0.0) nu_epl=1.0e-6; /*Hacking the case where the EPL is used but empty*/
+			if (!xIsNan<IssmDouble>(eps_rel)){
+				if ((ndu_epl/nu_epl)<eps_rel && (ndu_sed/nu_sed)<(eps_rel)){
+					if (VerboseConvergence()) _printf0_(setw(50) << left << "   Converged after, " << hydrocount << " iterations \n");
+					hydroconverged=true;
+				}
+				else{
+					if(VerboseConvergence()) _printf0_(setw(50) << left << "   for iteration:" << hydrocount << " \n");
+					if(VerboseConvergence()) _printf0_(setw(50) << left << "   Sediment Convergence criterion:" << ndu_sed/nu_sed*100 << "%, aiming lower than " << eps_rel*100 << " %\n");
+					if(VerboseConvergence()) _printf0_(setw(50) << left << "   EPL Convergence criterion:" << ndu_epl/nu_epl*100 << "%, aiming lower than " << eps_rel*100 << " %\n");
+					hydroconverged=false;
+				}
+			}
+			else _printf0_(setw(50) << left << "   Convergence criterion:" << ndu_sed/nu_sed*100 << " %\n");
+
+			if (hydrocount>=hydro_maxiter*9/10  && sliceadapt && !hydroconverged) {
+				if(VerboseSolution()) _printf0_("hydrology main loop  did not converged after "<<hydrocount<<" iteration, we refine the steping\n");
+				*pconv_fail = true;
+				InputUpdateFromSolutionx(femmodel,ug_epl_init);
+				delete ug_epl_init;
+				femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
+				InputUpdateFromSolutionx(femmodel,ug_sed_init);
+				delete ug_sed_init;
+				break;
+			}
+			if (hydrocount>=hydro_maxiter){
+				_error_("   maximum number for hydrological global iterations (" << hydro_maxiter << ") exceeded");
+				delete ug_sed;delete uf_sed;delete effanalysis;
+				delete ug_epl;	delete uf_epl;
+			}
+		}
+		hydrocount++;
+		if(hydroconverged)break;
+	}
+	/*}}}*/
+	/*To deal with adaptative stepping we only save results if we are actually converged*/
+	if(hydroconverged){
+		if(isefficientlayer){
+			delete ug_epl_init;
+		}
+		delete ug_sed_init;
+	}
+	/*Free resources: */
+	delete ug_epl;delete ug_sed;
+	delete uf_sed;
+	delete inefanalysis;	delete effanalysis;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_la.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_la.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_la.cpp	(revision 27955)
@@ -0,0 +1,152 @@
+/*!\file: solutionsequence_la.cpp
+ * \brief: numerical core of la solutions
+ */ 
+
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+void solutionsequence_la(FemModel* femmodel){
+
+	/*intermediary: */
+	Matrix<IssmDouble>*  Kff     = NULL;
+	Matrix<IssmDouble>*  Kfs     = NULL;
+	Vector<IssmDouble>*  ug      = NULL;
+	Vector<IssmDouble>*  uf      = NULL;
+	Vector<IssmDouble>*  pf      = NULL;
+	Vector<IssmDouble>*  df      = NULL;
+	Vector<IssmDouble>*  ys      = NULL;
+	Vector<IssmDouble>*  pug     = NULL;
+	Vector<IssmDouble>*  pug_old = NULL;
+	IssmDouble           eps_rel,r,theta; // 0<theta<.5   -> .15<theta<.45
+	int                  max_nonlinear_iterations;
+	bool                 vel_converged      = false;
+	bool                 pressure_converged = false;
+
+	/*Create analysis*/
+	StressbalanceAnalysis* stressanalysis   = new StressbalanceAnalysis();
+	UzawaPressureAnalysis* pressureanalysis = new UzawaPressureAnalysis();
+	femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
+	femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
+
+	/*Update constraints*/
+	femmodel->UpdateConstraintsx();
+
+	/*Convergence criterion*/
+	int  count       = 0;
+	int  count_local = 0;
+	Vector<IssmDouble>* vel           = NULL;
+	Vector<IssmDouble>* vel_old       = NULL;
+	Vector<IssmDouble>* vel_old_local = NULL;
+	GetVectorFromInputsx(&vel,femmodel,VxEnum,VertexPIdEnum);
+	GetVectorFromInputsx(&pug,femmodel,PressureEnum,VertexPIdEnum);
+
+	while(true){
+		count++;
+
+		/*save pointer to old velocity*/
+		delete vel_old;vel_old=vel->Duplicate(); vel->Copy(vel_old);
+		delete pug_old;pug_old=pug; 
+		pressure_converged=false; vel_converged=false;
+
+		while(true){
+			count_local++;
+			delete vel_old_local;vel_old_local=vel;
+			/*Solve KU=F*/
+			femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+			SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+			CreateNodalConstraintsx(&ys,femmodel->nodes);
+			Reduceloadx(pf, Kfs, ys); delete Kfs;
+
+			femmodel->profiler->Start(SOLVER);
+			Solverx(&uf, Kff, pf, NULL, df, femmodel->parameters); 
+			femmodel->profiler->Stop(SOLVER);
+
+			delete Kff; delete pf; delete df;
+			Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters);delete uf; delete ys;
+
+			/*Update solution*/
+			InputUpdateFromSolutionx(femmodel,ug); delete ug;
+			GetVectorFromInputsx(&vel,femmodel,VxEnum,VertexPIdEnum);
+			/*Check for convergence*/
+			Vector<IssmDouble>* dvel_local=vel_old_local->Duplicate(); vel_old_local->Copy(dvel_local); dvel_local->AYPX(vel,-1.0);
+			IssmDouble ndu=dvel_local->Norm(NORM_TWO);   delete dvel_local;
+			IssmDouble nu =vel_old_local->Norm(NORM_TWO);
+			if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error_("convergence criterion is NaN!");
+			if((ndu/nu)<eps_rel){
+				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " < " << eps_rel*100 << " %\n");
+				break;
+			}
+			else{ 
+				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " > " << eps_rel*100 << " %\n");
+			}
+			if(count_local>=max_nonlinear_iterations){
+				_printf0_("   maximum number of nonlinear iterations (" << max_nonlinear_iterations << ") exceeded\n"); 
+				break;
+			}
+		}
+		count_local=0;
+
+		femmodel->SetCurrentConfiguration(UzawaPressureAnalysisEnum);
+		SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+		CreateNodalConstraintsx(&ys,femmodel->nodes);
+		Reduceloadx(pf, Kfs, ys); delete Kfs;
+
+		femmodel->profiler->Start(SOLVER);
+		Solverx(&uf, Kff, pf, NULL, df, femmodel->parameters); 
+		femmodel->profiler->Stop(SOLVER);
+
+		delete Kff; delete pf; delete df;
+		Mergesolutionfromftogx(&pug, uf,ys,femmodel->nodes,femmodel->parameters); delete uf; delete ys;
+
+		/*Update solution*/
+		InputUpdateFromSolutionx(femmodel,pug); delete pug;
+		GetVectorFromInputsx(&pug,femmodel,PressureEnum,VertexPIdEnum);
+
+		/*Check for convergence*/
+		Vector<IssmDouble>* dvel=vel_old_local->Duplicate(); vel_old_local->Copy(dvel); dvel->AYPX(vel,-1.0);
+		IssmDouble ndu=dvel->Norm(NORM_TWO);   delete dvel;
+		IssmDouble nu =vel_old_local->Norm(NORM_TWO);
+		if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error_("convergence criterion is NaN!");
+		if((ndu/nu)<eps_rel){
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " < " << eps_rel*100 << " %\n");
+			vel_converged=true;
+		}
+		else{ 
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " > " << eps_rel*100 << " %\n");
+			vel_converged=false;
+		}
+		Vector<IssmDouble>* dup=pug_old->Duplicate(); pug_old->Copy(dup); dup->AYPX(pug,-1.0);
+		IssmDouble ndp=dup->Norm(NORM_TWO);   delete dup;
+		IssmDouble np =pug_old->Norm(NORM_TWO);
+		if (xIsNan<IssmDouble>(ndp) || xIsNan<IssmDouble>(np)) _error_("convergence criterion is NaN!");
+		if((ndp/np)<eps_rel){
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(dp)/norm(p)" << ndp/np*100 << " < " << eps_rel*100 << " %\n");
+			pressure_converged=true;
+		}
+		else{ 
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(dp/)/norm(p)" << ndp/np*100 << " > " << eps_rel*100 << " %\n");
+			pressure_converged=false;
+		}
+
+		if(pressure_converged && vel_converged) break;
+		if(count>=max_nonlinear_iterations){
+			_printf0_("   maximum number of nonlinear iterations (" << max_nonlinear_iterations << ") exceeded\n"); 
+			break;
+		}
+	}
+
+	if(VerboseConvergence()) _printf0_("\n   total number of iterations: " << count-1 << "\n");
+
+	delete pug;  
+	delete pug_old;  
+	delete vel;  
+	delete vel_old;  
+	delete vel_old_local;  
+	delete stressanalysis;
+	delete pressureanalysis;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_la_theta.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_la_theta.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_la_theta.cpp	(revision 27955)
@@ -0,0 +1,105 @@
+/*!\file: solutionsequence_la_theta.cpp
+ * \brief: numerical core of la_theta solutions
+ */ 
+
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+void solutionsequence_la_theta(FemModel* femmodel){
+
+	/*intermediary: */
+	Matrix<IssmDouble>*  Kff    = NULL;
+	Matrix<IssmDouble>*  Kfs    = NULL;
+	Vector<IssmDouble>*  ug_old = NULL;
+	Vector<IssmDouble>*  ug     = NULL;
+	Vector<IssmDouble>*  uf     = NULL;
+	Vector<IssmDouble>*  pf     = NULL;
+	Vector<IssmDouble>*  df     = NULL;
+	Vector<IssmDouble>*  ys     = NULL;
+	IssmDouble           eps_rel,r,theta; // 0<theta<.5   -> .15<theta<.45
+	int                  max_nonlinear_iterations;
+
+	/*Create analysis*/
+	StressbalanceAnalysis* analysis = new StressbalanceAnalysis();
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
+	femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
+	femmodel->parameters->FindParam(&r,AugmentedLagrangianREnum);
+	femmodel->parameters->FindParam(&theta,AugmentedLagrangianThetaEnum);
+
+	/*Update constraints and initialize d and tau if necessary*/
+	femmodel->UpdateConstraintsx();
+	analysis->InitializeXTH(femmodel->elements,femmodel->parameters);
+
+	/*Convergence criterion*/
+	int  count = 0;
+	GetSolutionFromInputsx(&ug,femmodel);
+	Vector<IssmDouble>* vx     = NULL;
+	Vector<IssmDouble>* vx_old = NULL;
+	GetVectorFromInputsx(&vx,femmodel,VxEnum,VertexPIdEnum);
+
+	while(true){
+		count++;
+
+		/*save pointer to old velocity*/
+		delete ug_old;ug_old=ug;
+		delete vx_old;vx_old=vx;
+
+		/*Calculate d*/
+		if(theta>0.){
+			analysis->InputUpdateFromSolutionFSXTH_d(femmodel->elements,femmodel->parameters);
+		}
+
+		/*Solve KU=F*/
+		SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+		CreateNodalConstraintsx(&ys,femmodel->nodes);
+		Reduceloadx(pf, Kfs, ys); delete Kfs;
+
+		femmodel->profiler->Start(SOLVER);
+		Solverx(&uf, Kff, pf, NULL, df, femmodel->parameters); 
+		femmodel->profiler->Stop(SOLVER);
+
+		delete Kff; delete pf; delete df;
+		Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters);delete uf; delete ys;
+
+		/*Update solution*/
+		InputUpdateFromSolutionx(femmodel,ug); 
+
+		/*Update d and tau accordingly*/
+		analysis->InputUpdateFromSolutionFSXTH_d(  femmodel->elements,femmodel->parameters);
+		analysis->InputUpdateFromSolutionFSXTH_tau(femmodel->elements,femmodel->parameters);
+		GetVectorFromInputsx(&vx,femmodel,VxEnum,VertexPIdEnum);
+
+		/*Check for convergence*/
+		//Vector<IssmDouble>* dug=ug_old->Duplicate(); ug_old->Copy(dug); dug->AYPX(ug,-1.0);
+		//IssmDouble ndu=dug->Norm(NORM_TWO);   delete dug;
+		//IssmDouble nu =ug_old->Norm(NORM_TWO);
+		Vector<IssmDouble>* dvx=vx_old->Duplicate(); vx_old->Copy(dvx); dvx->AYPX(vx,-1.0);
+		IssmDouble ndu=dvx->Norm(NORM_TWO);   delete dvx;
+		IssmDouble nu =vx_old->Norm(NORM_TWO);
+		if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error_("convergence criterion is NaN!");
+		if((ndu/nu)<eps_rel){
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " < " << eps_rel*100 << " %\n");
+			break;
+		}
+		else{ 
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " > " << eps_rel*100 << " %\n");
+		}
+
+		if(count>=max_nonlinear_iterations){
+			_printf0_("   maximum number of nonlinear iterations (" << max_nonlinear_iterations << ") exceeded\n"); 
+			break;
+		}
+	}
+
+	if(VerboseConvergence()) _printf0_("\n   total number of iterations: " << count-1 << "\n");
+
+	delete ug;  
+	delete ug_old;  
+	delete vx;  
+	delete vx_old;  
+	delete analysis;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_linear.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_linear.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_linear.cpp	(revision 27955)
@@ -0,0 +1,43 @@
+/*!\file: solutionsequence_linear.cpp
+ * \brief: numerical core of linear solutions
+ */ 
+
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+void solutionsequence_linear(FemModel* femmodel){
+
+	/*intermediary: */
+	Matrix<IssmDouble>*  Kff = NULL;
+	Matrix<IssmDouble>*  Kfs = NULL;
+	Vector<IssmDouble>*  ug  = NULL;
+	Vector<IssmDouble>*  uf  = NULL;
+	Vector<IssmDouble>*  pf  = NULL;
+	Vector<IssmDouble>*  df  = NULL;
+	Vector<IssmDouble>*  ys  = NULL;
+
+	/*Recover parameters: */
+	femmodel->UpdateConstraintsx();
+	SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+	CreateNodalConstraintsx(&ys,femmodel->nodes);
+	Reduceloadx(pf, Kfs, ys); delete Kfs;
+
+	femmodel->profiler->Start(SOLVER);
+	Solverx(&uf, Kff, pf, NULL, df, femmodel->parameters); 
+	femmodel->profiler->Stop(SOLVER);
+
+	/*Clean up*/
+	delete Kff; delete pf; delete df;
+
+	//#ifdef  _HAVE_ADOLC_
+	//        for (int i =0; i<uf->svector->M; ++i) {
+	//          ADOLC_DUMP_MACRO(uf->svector->vector[i]);
+	//        }
+	//#endif
+
+	Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters);delete uf; delete ys;
+	InputUpdateFromSolutionx(femmodel,ug); 
+	delete ug;  
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_newton.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_newton.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_newton.cpp	(revision 27955)
@@ -0,0 +1,109 @@
+/*!\file: solutionsequence_nonlinear.cpp
+ * \brief: core of a non-linear solution, using fixed-point method 
+ */ 
+
+#include "./solutionsequences.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+void solutionsequence_newton(FemModel* femmodel){
+
+	/*intermediary: */
+	bool   converged;
+	int    count,newton;
+	IssmDouble kmax;
+	Matrix<IssmDouble>* Kff = NULL;
+	Matrix<IssmDouble>* Kfs    = NULL;
+	Matrix<IssmDouble>* Jff = NULL;
+	Vector<IssmDouble>* ug  = NULL;
+	Vector<IssmDouble>* old_ug = NULL;
+	Vector<IssmDouble>* uf  = NULL;
+	Vector<IssmDouble>* old_uf = NULL;
+	Vector<IssmDouble>* duf = NULL;
+	Vector<IssmDouble>* pf  = NULL;
+	Vector<IssmDouble>* pJf    = NULL;
+	Vector<IssmDouble>* df  = NULL;
+	Vector<IssmDouble>* ys  = NULL;
+
+	/*parameters:*/
+	int max_nonlinear_iterations;
+	IssmDouble eps_res,eps_rel,eps_abs;
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
+	femmodel->parameters->FindParam(&newton,StressbalanceIsnewtonEnum);
+	femmodel->parameters->FindParam(&eps_res,StressbalanceRestolEnum);
+	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
+	femmodel->parameters->FindParam(&eps_abs,StressbalanceAbstolEnum);
+	femmodel->UpdateConstraintsx();
+
+	count=0;
+	converged=false;
+
+	/*Start non-linear iteration using input velocity: */
+	GetSolutionFromInputsx(&ug,femmodel);
+	Reducevectorgtofx(&uf,ug,femmodel->nodes,femmodel->parameters);
+
+	//Update once again the solution to make sure that vx and vxold are similar (for next step in transient or steadystate)
+	InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
+	InputUpdateFromSolutionx(femmodel,ug);
+
+	for(;;){
+
+		delete old_ug;old_ug=ug;
+		delete old_uf;old_uf=uf;
+
+		/*Solver forward model*/
+		if(count==0 || newton==2){
+			SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+			CreateNodalConstraintsx(&ys,femmodel->nodes);
+			Reduceloadx(pf,Kfs,ys);delete Kfs;
+			femmodel->profiler->Start(SOLVER);
+			Solverx(&uf,Kff,pf,old_uf,df,femmodel->parameters);delete df; delete Kff; delete pf;
+			femmodel->profiler->Stop(SOLVER);
+			Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);delete ys;
+			InputUpdateFromSolutionx(femmodel,ug);
+			delete old_ug;old_ug=ug;
+			delete old_uf;old_uf=uf;
+		}
+		uf=old_uf->Duplicate(); old_uf->Copy(uf);
+
+		/*Prepare next iteration using Newton's method*/
+		SystemMatricesx(&Kff,&Kfs,&pf,&df,&kmax,femmodel);delete df;
+		CreateNodalConstraintsx(&ys,femmodel->nodes);
+		Reduceloadx(pf,Kfs,ys);delete Kfs;
+
+		pJf=pf->Duplicate();
+		Kff->MatMult(uf,pJf);
+		pJf->Scale(-1.0); pJf->AXPY(pf,+1.0);
+
+		CreateJacobianMatrixx(&Jff,femmodel,kmax);
+		femmodel->profiler->Start(SOLVER);
+		Solverx(&duf,Jff,pJf,NULL,NULL,femmodel->parameters); delete Jff; delete pJf;
+		femmodel->profiler->Stop(SOLVER);
+		uf->AXPY(duf, 1.0); delete duf;
+		Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);delete ys;
+		InputUpdateFromSolutionx(femmodel,ug);
+		count++;
+
+		/*Check convergence*/
+		convergence(&converged,Kff,pf,uf,old_uf,eps_res,eps_rel,eps_abs); 
+		delete Kff; delete pf;
+		if(converged==true) break;
+		if(count>=max_nonlinear_iterations){
+			_printf0_("   maximum number of Newton iterations (" << max_nonlinear_iterations << ") exceeded\n"); 
+			break;
+		}
+	}
+
+	if(VerboseConvergence()) _printf0_("\n   total number of iterations: " << count << "\n");
+	femmodel->results->AddResult(new GenericExternalResult<int>(femmodel->results->Size()+1,StressbalanceConvergenceNumStepsEnum,count));
+
+	/*clean-up*/
+	delete uf;
+	delete ug;
+	delete old_ug;
+	delete old_uf;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_nonlinear.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_nonlinear.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_nonlinear.cpp	(revision 27955)
@@ -0,0 +1,142 @@
+/*!\file: solutionsequence_nonlinear.cpp
+ * \brief: core of a non-linear solution, using fixed-point method 
+ */ 
+
+#include "./solutionsequences.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+void solutionsequence_nonlinear(FemModel* femmodel,bool conserve_loads){
+
+	/*intermediary: */
+	Matrix<IssmDouble>* Kff = NULL;
+	Matrix<IssmDouble>* Kfs = NULL;
+	Vector<IssmDouble>* ug  = NULL;
+	Vector<IssmDouble>* uf  = NULL;
+	Vector<IssmDouble>* old_uf = NULL;
+	Vector<IssmDouble>* pf  = NULL;
+	Vector<IssmDouble>* df  = NULL;
+	Vector<IssmDouble>* ys  = NULL;
+
+	int constraints_converged;
+	int num_unstable_constraints;
+
+	/*parameters:*/
+	int min_mechanical_constraints;
+	int max_nonlinear_iterations;
+	int configuration_type;
+	IssmDouble eps_res,eps_rel,eps_abs;
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&min_mechanical_constraints,StressbalanceRiftPenaltyThresholdEnum);
+	femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
+	femmodel->parameters->FindParam(&eps_res,StressbalanceRestolEnum);
+	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
+	femmodel->parameters->FindParam(&eps_abs,StressbalanceAbstolEnum);
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	femmodel->UpdateConstraintsx();
+
+	/*Were loads requested as output? : */
+	Loads* savedloads=NULL;
+	if(conserve_loads){
+		savedloads = static_cast<Loads*>(femmodel->loads->Copy());
+	}
+
+	int  count=0;
+	bool converged=false;
+
+	/*Start non-linear iteration using input velocity: */
+	GetSolutionFromInputsx(&ug,femmodel);
+	Reducevectorgtofx(&uf, ug, femmodel->nodes,femmodel->parameters);
+
+	/*Update once again the solution to make sure that vx and vxold are similar (for next step in transient or steadystate)*/
+	InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
+	InputUpdateFromSolutionx(femmodel,ug);
+
+	/*allocate the matrices once and reuse them per iteration*/
+	if(femmodel->loads->numrifts == 0){
+		AllocateSystemMatricesx(&Kff,&Kfs,&df,&pf,femmodel);
+	}
+
+	for(;;){
+
+		//save pointer to old velocity
+		delete old_uf;old_uf=uf;
+		delete ug;
+
+		if(femmodel->loads->numrifts){
+			AllocateSystemMatricesx(&Kff,&Kfs,&df,&pf,femmodel);
+		}
+		SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel, true);
+		CreateNodalConstraintsx(&ys,femmodel->nodes);
+		Reduceloadx(pf, Kfs, ys);
+		femmodel->profiler->Start(SOLVER);
+		Solverx(&uf, Kff, pf, old_uf, df, femmodel->parameters);
+		femmodel->profiler->Stop(SOLVER);
+
+		Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters);delete ys;
+
+		convergence(&converged,Kff,pf,uf,old_uf,eps_res,eps_rel,eps_abs);
+		InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
+		InputUpdateFromSolutionx(femmodel,ug);
+
+		/*Clean up if rifts*/
+		if(femmodel->loads->numrifts){
+			delete Kfs; delete Kff; delete pf; delete df;
+		}
+
+		ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel);
+		if(VerboseConvergence()) _printf0_("   number of unstable constraints: " << num_unstable_constraints << "\n");
+
+		//rift convergence
+		if (!constraints_converged) {
+			if (converged){
+				if (num_unstable_constraints <= min_mechanical_constraints) converged=true;
+				else converged=false;
+			}
+		}
+
+		/*Increase count: */
+		count++;
+		if(converged==true){
+			femmodel->results->AddResult(new GenericExternalResult<int>(femmodel->results->Size()+1,StressbalanceConvergenceNumStepsEnum,count));
+			break;
+		}
+		if(count>=max_nonlinear_iterations){
+			_printf0_("   maximum number of nonlinear iterations (" << max_nonlinear_iterations << ") exceeded\n"); 
+			converged=true;
+			femmodel->results->AddResult(new GenericExternalResult<int>(femmodel->results->Size()+1,StressbalanceConvergenceNumStepsEnum,max_nonlinear_iterations));
+			InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
+			InputUpdateFromSolutionx(femmodel,ug);		
+			break;
+		}
+
+		/*Set the matrix entries to zero if we do an other iteration*/
+		if(femmodel->loads->numrifts==0){
+			Kff->SetZero();
+			Kfs->SetZero();
+			df->Set(0);
+			pf->Set(0);
+		}
+	}
+
+	/*delete matrices after the iteration loop*/
+	if(femmodel->loads->numrifts==0){
+		delete Kff; delete pf; delete df; delete Kfs;
+	}
+
+	if(VerboseConvergence()) _printf0_("\n   total number of iterations: " << count << "\n");
+
+	/*clean-up*/
+	if(conserve_loads){
+		delete femmodel->loads;
+		int index=femmodel->AnalysisIndex(configuration_type);
+		femmodel->loads_list[index]=savedloads;
+		femmodel->loads=savedloads;
+	}
+	delete uf;
+	delete ug;
+	delete old_uf;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_sampling.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_sampling.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_sampling.cpp	(revision 27955)
@@ -0,0 +1,121 @@
+/*!\file: solutionsequence_sampling.cpp
+ * \brief: numerical core of linear solutions
+ */
+
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../analyses/analyses.h"
+#include "../shared/Random/randomgenerator.h"
+//#include <random>
+
+void GaussianVector(Vector<IssmDouble>* ppf,int seed){/*{{{*/
+
+	/*Define seed*/
+	rnd::linear_congruential_engine random_engine;
+	if(seed>=0){
+		int my_rank;
+		ISSM_MPI_Comm_rank(ISSM_MPI_COMM_WORLD,&my_rank);
+		seed = seed + 783728*my_rank; // change default seed for parallel simulations (by considering an arbitrary shif based on the rank number)
+	}
+	random_engine.seed(seed);
+
+	/* Define univariate distribution */
+	rnd::normal_distribution distribution(0.0,1.0);
+
+	int        *local_indices = NULL;
+	IssmDouble *local_vector = NULL;
+	ppf->GetLocalVector(&local_vector,&local_indices);
+
+  int M;
+	ppf->GetLocalSize(&M);
+	for(int i=0;i<M;i++){
+		double rdnumber = distribution.generator(random_engine);
+		ppf->SetValue(local_indices[i],rdnumber,INS_VAL);
+	}
+	ppf->Assemble();
+
+	/*Cleanup*/
+	random_engine.free_resources();
+	xDelete<int>(local_indices);
+	xDelete<IssmDouble>(local_vector);
+}/*}}}*/
+void solutionsequence_sampling(FemModel* femmodel){
+
+	/*intermediary: */
+  Matrix<IssmDouble>*  Kff = NULL;
+	Matrix<IssmDouble>*  Kfs = NULL;
+  Vector<IssmDouble>*  ug  = NULL;
+  Vector<IssmDouble>*  uf  = NULL;
+	Vector<IssmDouble>*  pf  = NULL;
+  Vector<IssmDouble>*  df  = NULL;
+  Vector<IssmDouble>*  ys=NULL;
+
+  SamplingAnalysis*    analysis = NULL;
+
+  Vector<IssmDouble>*  Ml = NULL;      // diagonal lumped mass matrix
+  Vector<IssmDouble>*  Mscale = NULL;  // square root of diagonal lumped factor matrix
+
+  /*parameters:*/
+  int alpha, seed, nsize;
+
+  /*Recover parameters: */
+  femmodel->parameters->FindParam(&seed,SamplingSeedEnum);
+  femmodel->parameters->FindParam(&alpha,SamplingAlphaEnum);
+
+  /*CreateAnalysis*/
+
+  analysis = new SamplingAnalysis();
+
+  analysis->LumpedMassMatrix(&Ml,femmodel); //Create lumped mass matrix
+
+  if(alpha%2!=0)  analysis->LumpedKMatrix(&Mscale,femmodel);   /* Compute square root of lump mass matrix (for alpha even) or stiffness matrix (for alpha odd) */
+  else{
+    Mscale=Ml->Duplicate();
+    Ml->Copy(Mscale);
+  }
+  Mscale->Pow(0.5);
+
+  femmodel->UpdateConstraintsx();
+  SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL,femmodel);
+  CreateNodalConstraintsx(&ys,femmodel->nodes);
+  Reduceloadx(pf, Kfs, ys);
+  delete Kfs;
+
+  /* Generate random RHS */
+  GaussianVector(pf,seed);
+
+  /* Multiply random RHS by square root of mass matrix (for alpha even) or stiffness matrix (for alpha odd) */
+  pf->PointwiseMult(pf,Mscale);
+
+  /*Go solve SPDE */
+  femmodel->profiler->Start(SOLVER);
+  Solverx(&uf, Kff, pf, NULL, df, femmodel->parameters);
+  femmodel->profiler->Stop(SOLVER);
+
+  /* Iterate to compute a realization for alpha>2 */
+  for(int i=3;i<=alpha;i+=2){
+
+    /*Create RHS */
+    uf->Copy(pf);
+    pf->PointwiseMult(pf,Ml);
+
+    /*Go solve SPDE */
+    femmodel->profiler->Start(SOLVER);
+    Solverx(&uf, Kff, pf, NULL, df, femmodel->parameters);
+    femmodel->profiler->Stop(SOLVER);
+
+  }
+
+  /* Update input */
+  Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters);
+  InputUpdateFromSolutionx(femmodel,ug);
+
+  /*clean-up*/
+  delete Kff; delete pf; delete df; delete uf; delete ys;
+  delete Ml; delete Mscale;
+  delete analysis;
+  delete ug;
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_schurcg.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_schurcg.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_schurcg.cpp	(revision 27955)
@@ -0,0 +1,786 @@
+/*!\file: solutionsequence_schurcg.cpp
+ * \brief: numerical core of 
+ */ 
+
+#include "./solutionsequences.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../analyses/analyses.h"
+#include <iostream>
+#include <fstream>
+
+#ifdef _HAVE_PETSC_
+#include <petscversion.h>
+
+void SchurCGSolver(Vector<IssmDouble>** puf,Mat Kff, Vec pf, Vec uf0,IS isv,IS isp,Parameters* parameters){/*{{{*/
+
+	Mat                  A, B, BT;				/* Saddle point block matrices */
+	Mat						IP;						/* Preconditioner or mass matrix */
+	int                  nu, np;					/* No of. free nodes in velocity / pressure space */
+   Vec                  p,uold,unew;			/* Solution vectors for pressure / vel. */ 
+	Vec						tmpu,tmpu2,resu,resp,tmpp,tmpp2,rhsu,rhsp; /* temp. vectors, arbitrary RHS in vel. / pressure space */
+	Vec						gold,gnew,wold,wnew,chi; /* CG intermediaries */
+	Vec						f1,f2;					/* RHS of the global system */
+	double					rho,gamma,tmpScalar,tmpScalar2; /* Step sizes, arbitrary double */
+	KSP						kspu,kspip;		/* KSP contexts for vel. / pressure systems*/
+	KSPConvergedReason	reason;					/* Convergence reason for troubleshooting */
+	int						its;						/* No. of iterations for troubleshooting */
+	double					initRnorm, rnorm, TOL,ELLTOL; /* residual norms, STOP tolerance */
+	PC							pcu,pcp;					/* Preconditioner contexts pertaining the KSP contexts*/
+	PetscViewer				viewer;					/* Viewer for troubleshooting */
+	IssmPDouble				t1,t2;					/* Time measurement for bottleneck analysis */
+
+	double tmp1,tmp2,tmp3;
+	int tmpi;
+	double tmp4,tmp5,tmp6,tmp7;
+
+	int noIt;
+
+	int precond = 0;
+
+	#if PETSC_VERSION_LT(3,2,0)
+	PetscTruth flag,flg;
+	#else
+	PetscBool flag,flg;
+	#endif
+
+	char ksp_type[50];
+	char pc_type[50];
+	int maxiter;
+
+	#if PETSC_VERSION_LT(3,7,0)
+	PetscOptionsGetString(PETSC_NULL,"-ksp_type",ksp_type,49,&flg);
+	PetscOptionsGetString(PETSC_NULL,"-pc_type",pc_type,49,&flg);
+	PetscOptionsGetReal(PETSC_NULL,"-tol",&TOL,NULL);
+	PetscOptionsGetReal(PETSC_NULL,"-elltol",&ELLTOL,NULL);
+	PetscOptionsGetInt(PETSC_NULL,"-schur_pc",&precond,NULL);
+	PetscOptionsGetInt(PETSC_NULL,"-max_iter",&maxiter,NULL);
+	#elif PETSC_VERSION_LT(3,19,0)
+	PetscOptionsGetString(NULL,PETSC_NULL,"-ksp_type",ksp_type,49,&flg);
+	PetscOptionsGetString(NULL,PETSC_NULL,"-pc_type",pc_type,49,&flg);
+	PetscOptionsGetReal(NULL,PETSC_NULL,"-tol",&TOL,NULL);
+	PetscOptionsGetReal(NULL,PETSC_NULL,"-elltol",&ELLTOL,NULL);
+	PetscOptionsGetInt(NULL,PETSC_NULL,"-schur_pc",&precond,NULL);
+	PetscOptionsGetInt(NULL,PETSC_NULL,"-max_iter",&maxiter,NULL);
+	#else
+	PetscOptionsGetString(NULL,PETSC_NULLPTR,"-ksp_type",ksp_type,49,&flg);
+	PetscOptionsGetString(NULL,PETSC_NULLPTR,"-pc_type",pc_type,49,&flg);
+	PetscOptionsGetReal(NULL,PETSC_NULLPTR,"-tol",&TOL,NULL);
+	PetscOptionsGetReal(NULL,PETSC_NULLPTR,"-elltol",&ELLTOL,NULL);
+	PetscOptionsGetInt(NULL,PETSC_NULLPTR,"-schur_pc",&precond,NULL);
+	PetscOptionsGetInt(NULL,PETSC_NULLPTR,"-max_iter",&maxiter,NULL);
+	#endif
+
+	if(precond){
+		_printf0_("Running WITH preconditioner\n");
+	}else{
+		_printf0_("Running WITHOUT preconditioner\n");
+	}
+
+	/*Initialize output*/
+	Vector<IssmDouble>* out_uf=new Vector<IssmDouble>(uf0);
+
+	/* Extract block matrices from the saddle point matrix */
+	/* [ A   B ] = Kff
+    * [ B^T I ]
+	 * where A is the elliptic submatrix, B^T represents the incompressibility, 
+	 * and I the Schur preconditioner (stored here, because the space was allocated either way) 
+	 *         */
+	#if PETSC_VERSION_GT(3,8,0)
+	MatCreateSubMatrix(Kff,isv,isv,MAT_INITIAL_MATRIX,&A);
+	MatCreateSubMatrix(Kff,isv,isp,MAT_INITIAL_MATRIX,&B);
+	MatCreateSubMatrix(Kff,isp,isv,MAT_INITIAL_MATRIX,&BT);
+	#else
+	MatGetSubMatrix(Kff,isv,isv,MAT_INITIAL_MATRIX,&A);
+	MatGetSubMatrix(Kff,isv,isp,MAT_INITIAL_MATRIX,&B);
+	MatGetSubMatrix(Kff,isp,isv,MAT_INITIAL_MATRIX,&BT);
+	#endif
+
+	/* Extract preconditioner matrix on the pressure space*/
+	#if PETSC_VERSION_GT(3,8,0)
+	MatCreateSubMatrix(Kff,isp,isp,MAT_INITIAL_MATRIX,&IP);
+	#else
+	MatGetSubMatrix(Kff,isp,isp,MAT_INITIAL_MATRIX,&IP);
+	#endif
+
+	/* Get number of velocity / pressure nodes */
+	MatGetSize(B,&nu,&np);
+
+	/* Extract initial guesses for uold and pold */
+	VecCreate(IssmComm::GetComm(),&p);VecSetSizes(p,PETSC_DECIDE,np);VecSetFromOptions(p);
+	VecAssemblyBegin(p);VecAssemblyEnd(p);
+	VecCreate(IssmComm::GetComm(),&uold);VecSetSizes(uold,PETSC_DECIDE,nu);VecSetFromOptions(uold);
+	VecAssemblyBegin(uold);VecAssemblyEnd(uold);
+
+	VecGetSubVector(out_uf->pvector->vector,isv,&uold);
+	VecGetSubVector(out_uf->pvector->vector,isp,&p);
+
+	/* Set up intermediaries */
+	VecDuplicate(uold,&f1);VecSet(f1,0.0);
+	VecDuplicate(p,&f2);VecSet(f2,0.0);
+	VecDuplicate(uold,&tmpu);VecSet(tmpu,0.0);
+	VecDuplicate(uold,&tmpu2);VecSet(tmpu2,0.0);
+	VecDuplicate(uold,&resu);VecSet(resu,0.0);
+	VecDuplicate(p,&tmpp);VecSet(tmpp,0.0);
+	VecDuplicate(p,&tmpp2);VecSet(tmpp2,0.0);
+	VecDuplicate(p,&rhsp);VecSet(rhsp,0.0);
+	VecDuplicate(p,&resp);VecSet(resp,0.0);
+	VecDuplicate(uold,&rhsu);VecSet(rhsu,0.0);
+	VecDuplicate(p,&gold);VecSet(gold,0.0);
+	VecDuplicate(p,&wnew);VecSet(wnew,0.0);
+	VecDuplicate(uold,&chi);VecSet(chi,0.0);
+
+	/* Get global RHS (for each block sub-problem respectively)*/
+	VecGetSubVector(pf,isv,&f1);
+	VecGetSubVector(pf,isp,&f2);
+
+   /* ------------------------------------------------------------ */
+
+	/* Generate initial value for the velocity from the pressure */
+	/* a(u0,v) = f1(v)-b(p0,v)  i.e.  Au0 = F1-Bp0 */
+	/* u0 = u_DIR on \Gamma_DIR */
+
+	/* Create KSP context */
+	KSPCreate(IssmComm::GetComm(),&kspu);
+	#if PETSC_VERSION_GE(3,5,0)
+	KSPSetOperators(kspu,A,A);
+	#else
+	KSPSetOperators(kspu,A,A,DIFFERENT_NONZERO_PATTERN);
+	#endif
+	if (strcmp(ksp_type,"gmres")==0){
+		KSPSetType(kspu,KSPGMRES);
+	}else if(strcmp(ksp_type,"pipegmres")==0){
+		KSPSetType(kspu,KSPPGMRES);
+	}else if(strcmp(ksp_type,"cg")==0){
+		KSPSetType(kspu,KSPCG);
+	}else if(strcmp(ksp_type,"pipecg")==0){
+		KSPSetType(kspu,KSPPIPECG);
+	}else if(strcmp(ksp_type,"bicg")==0){
+		KSPSetType(kspu,KSPBICG);
+	}else if(strcmp(ksp_type,"bicgstab")==0){
+		KSPSetType(kspu,KSPBCGS);
+	}else if(strcmp(ksp_type,"ibicgstab")==0){
+		KSPSetType(kspu,KSPIBCGS);
+	}else if(strcmp(ksp_type,"minres")==0){
+		KSPSetType(kspu,KSPMINRES);
+	}else if(strcmp(ksp_type,"cr")==0){
+		KSPSetType(kspu,KSPCR);
+	}else if(strcmp(ksp_type,"pipecr")==0){
+		KSPSetType(kspu,KSPPIPECR);
+	}else{
+		_error_("Suggested KSP method not implemented yet!\n");
+	}
+
+	KSPSetInitialGuessNonzero(kspu,PETSC_TRUE);
+
+	/*Strong rel. residual tolerance needed when solving for the velocity update. 
+	 * This is because ISSM uses the dimensional equations, so the initial guess chi = 0
+	 * results in a very high initial residual (~ 1e19)*/
+	KSPSetTolerances(kspu,ELLTOL,PETSC_DEFAULT,PETSC_DEFAULT,maxiter); //maxiter
+
+	KSPGetPC(kspu,&pcu);
+	if (strcmp(pc_type,"bjacobi")==0){
+		PCSetType(pcu,PCBJACOBI);
+	}else if(strcmp(pc_type,"asm")==0){
+		PCSetType(pcu,PCASM);
+	}else if(strcmp(pc_type,"gamg")==0){
+		PCSetType(pcu,PCGAMG);
+	}else if(strcmp(pc_type,"gasm")==0){
+		PCSetType(pcu,PCGASM);
+	}else if(strcmp(pc_type,"jacobi")==0){
+		PCSetType(pcu,PCJACOBI);
+	}else if(strcmp(pc_type,"icc")==0){
+		PCSetType(pcu,PCICC);
+	}else if(strcmp(pc_type,"ilu")==0){
+		PCSetType(pcu,PCILU);
+	}else if(strcmp(pc_type,"sor")==0){
+		PCSetType(pcu,PCSOR);
+	}else if(strcmp(pc_type,"eisenstat")==0){
+		PCSetType(pcu,PCEISENSTAT);
+	}else if(strcmp(pc_type,"none")==0){
+		PCSetType(pcu,PCNONE);
+	}else{
+	_error_("Suggested preconditioner not implemented yet!\n");
+	}
+	KSPSetUp(kspu);
+
+	/* Create RHS */
+	/* RHS = F1-B * pold */
+	VecScale(p,-1.);MatMultAdd(B,p,f1,rhsu);VecScale(p,-1.);
+
+	if (VerboseConvergence())
+	{
+
+		VecScale(rhsu,-1.);MatMultAdd(A,uold,rhsu,tmpu);VecScale(rhsu,-1.);
+		VecNorm(tmpu,NORM_2,&tmp4);
+
+		VecScale(f2,-1.);MatMultAdd(BT,uold,f2,tmpp);VecScale(f2,-1.);
+		VecNorm(tmpp,NORM_2,&tmp6);
+
+		KSPInitialResidual(kspu,uold,tmpu,tmpu2,resu,rhsu);
+		VecNorm(resu,NORM_2,&tmp5);
+
+	}
+
+	/* Go solve Au0 = F1-Bp0*/
+	KSPSolve(kspu,rhsu,uold);
+	KSPGetIterationNumber(kspu,&noIt);
+
+	if (VerboseConvergence())
+	{
+
+	KSPGetIterationNumber(kspu,&tmpi);
+	VecScale(rhsu,-1.);MatMultAdd(A,uold,rhsu,tmpu);VecScale(rhsu,-1.);
+	VecNorm(tmpu,NORM_2,&tmp2);
+	KSPGetResidualNorm(kspu,&tmp1);
+
+	_printf0_("||Au_00 - rhsu||_euc: " << tmp4 <<"\n||P(-1)(Au_00 - rhsu)||_euc: " << tmp5 << "\n ||Au_n0 - rhsu||_euc: " << tmp2<< "\n||P(-1)(Au_n0 - rhsu)||_euc: " << tmp1 << "\nIteration number: "<<tmpi<<"\n"); 	
+	_printf0_("||BTu_00 - f2||_euc: " << tmp6 <<"\n");
+	}
+
+	/* Set up u_new */
+	VecDuplicate(uold,&unew);VecCopy(uold,unew);
+	VecAssemblyBegin(unew);VecAssemblyEnd(unew);
+
+	/* ------------------------------------------------------------- */
+
+	/*Get initial residual*/
+	/*(1/mu(x) * g0, q) = b(q,u0) - (f2,q)  i.e.  IP * g0 = BT * u0 - F2*/
+
+	/* Create KSP context */
+	KSPCreate(IssmComm::GetComm(),&kspip);
+	#if PETSC_VERSION_GE(3,5,0)
+	KSPSetOperators(kspip,IP,IP);
+	#else
+	KSPSetOperators(kspip,IP,IP,DIFFERENT_NONZERO_PATTERN);
+	#endif
+
+	/* Create RHS */
+	/* RHS = BT * uold - F2 */
+	VecScale(uold,-1.);MatMultAdd(BT,uold,f2,rhsp);VecScale(uold,-1.);
+
+	/* Set KSP & PC options */
+	KSPSetType(kspip,KSPGMRES);
+	KSPSetInitialGuessNonzero(kspip,PETSC_TRUE);
+
+	KSPGetPC(kspip,&pcp);
+	PCSetType(pcp,PCJACOBI);
+	/* Note: Systems in the pressure space are cheap, so we can afford a good tolerance */
+	KSPSetTolerances(kspip,1e-12,PETSC_DEFAULT,PETSC_DEFAULT,PETSC_DEFAULT);
+	KSPSetUp(kspip);
+
+	if (VerboseConvergence())
+	{
+		KSPInitialResidual(kspip,gold,tmpp,tmpp2,resp,rhsp);
+		VecScale(rhsp,-1.);MatMultAdd(IP,gold,rhsp,tmpp);VecScale(rhsp,-1.);
+		VecNorm(resp,NORM_2,&tmp5);
+		VecNorm(tmpp,NORM_2,&tmp4);
+	}
+
+	/* Go solve */
+	KSPSolve(kspip,rhsp,gold);
+
+	if (VerboseConvergence())
+	{
+
+	KSPGetResidualNorm(kspip,&tmp1);
+	VecScale(rhsp,-1.);MatMultAdd(IP,gold,rhsp,tmpp);VecScale(rhsp,-1.);
+	VecNorm(tmpp,NORM_2,&tmp2);
+
+	KSPGetIterationNumber(kspip,&tmpi);
+	_printf0_("||IP*g00 - rhsp||_euc: " << tmp4 <<"\n||Jac(-1)*(IP*g00-rhsp)||_euc: " << tmp5 << "\n||IP*gn0-rhsp||_euc: " << tmp2<< "\n||Jac(-1)*(IP*gn0-rhsp)||_euc: " << tmp1 << "\nIteration number: "<<tmpi<<"\n"); 	
+	}
+
+	/*Initial residual*/
+	MatMult(IP,gold,tmpp);VecDot(gold,tmpp,&initRnorm);
+	initRnorm = sqrt(initRnorm);
+	_printf0_("inner product norm g0: "<<initRnorm<<"\n");
+
+	/*Iterate only if inital residual large enough*/
+	if(initRnorm > 1e-5)
+	{
+
+	/* Further setup */
+	VecDuplicate(gold,&gnew);VecCopy(gold,gnew);
+	VecAssemblyBegin(gnew);VecAssemblyEnd(gnew);
+
+	/* ------------------------------------------------------------ */
+
+	/*Set initial search direction*/
+	/*w0 = g0*/
+	VecDuplicate(gold,&wold);VecCopy(gold,wold);
+	VecAssemblyBegin(wold);VecAssemblyEnd(wold);
+
+	/* Count number of iterations */
+	int count = 0;
+
+	/* CG iteration*/
+	for(;;){
+		if(VerboseConvergence())
+		{
+		 _printf0_("\n###### Step " << count << " ######\n");
+		}
+
+		/*Realizing the step size part 2: chim */
+		/*a(chim,v) = b(wm,v)  i.e.  A * chim = B * wm */
+		/*chim_DIR = 0*/
+		VecScale(wold,1.);MatMult(B,wold,rhsu);VecScale(wold,1.);
+		VecSet(chi,0.0);
+
+		if(VerboseConvergence())
+		{
+		VecScale(rhsu,-1.);MatMultAdd(A,chi,rhsu,tmpu);VecScale(rhsu,-1.);
+		VecNorm(tmpu,NORM_2,&tmp4);
+
+		KSPInitialResidual(kspu,chi,tmpu,tmpu2,resu,rhsu);
+		VecNorm(resu,NORM_2,&tmp5);
+
+		}
+
+			KSPSolve(kspu,rhsu,chi);
+
+		if (VerboseConvergence())
+		{
+		VecNorm(chi,NORM_2,&tmp1);
+		KSPGetResidualNorm(kspu,&tmp2);
+
+		VecScale(rhsu,-1.);MatMultAdd(A,chi,rhsu,tmpu);VecScale(rhsu,-1.);
+		VecNorm(tmpu,NORM_2,&tmp3);
+
+		KSPGetIterationNumber(kspu,&tmpi);
+		_printf0_("||chi_nk||_euc: "<< tmp1 << "\n||A*chi_0k - rhsu||_euc: "<<tmp4<< "\n||P(-1)*(A*chi_0k-rhsu)||_euc: " << tmp5 << "\n||A*chi_nk - rhsu||_euc: "<< tmp3 <<"\n||P(-1)*(A*chi_nk - rhsu)||_euc: " << tmp2 <<"\nIteration Number: " << tmpi <<"\n");
+		}
+
+		/* ---------------------------------------------------------- */
+
+		/*Set step size*/
+		/*rhom = [(wm)^T * IP^-1 * (BT * um - F2)]/[(wm)^T * IP^-1 * BT * chim]*/
+		MatMult(IP,gold,tmpp);
+		VecDot(tmpp,wold,&rho);
+
+		MatMult(BT,chi,tmpp);
+		VecDot(tmpp,wold,&tmpScalar);
+		rho = rho/tmpScalar;
+
+		/* ---------------------------------------------------------- */
+
+		/*Pressure update*/
+		/*p(m+1) = pm + rhom * wm*/
+		VecAXPY(p,-1.*rho,wold);
+
+		/*Velocity update*/
+		/*u(m+1) = um - rhom * chim*/
+		VecWAXPY(unew,rho,chi,uold);
+		VecNorm(unew,NORM_2,&tmpScalar);
+
+		if (VerboseConvergence())
+		{
+		VecScale(p,-1.);MatMultAdd(B,p,f1,rhsu);VecScale(p,-1.);
+		VecScale(rhsu,-1.);MatMultAdd(A,unew,rhsu,tmpu);VecScale(rhsu,-1.);
+		VecNorm(tmpu,NORM_2,&tmp6);
+
+		VecScale(f2,-1);MatMultAdd(BT,unew,f2,tmpp);VecScale(f2,-1);
+		VecNorm(tmpp,NORM_2,&tmp7);
+		_printf0_("Momentum balance norm: " << tmp6 <<"\n");
+		_printf0_("Incompressibility norm: " << tmp7 <<"\n");
+		}
+
+		/* ---------------------------------------------------------- */
+
+		/*Residual update*/
+		/*g(m+1) = gm - rhom * BT * chim*/
+		MatMult(BT,chi,tmpp);
+		MatMult(IP,gold,tmpp2);
+		VecWAXPY(rhsp,-1.*rho,tmpp,tmpp2);
+		KSPSolve(kspip,rhsp,gnew);
+
+		/* ---------------------------------------------------------- */
+
+		MatMult(IP,gnew,tmpp);
+
+		VecDot(tmpp,gnew,&gamma);
+		rnorm = sqrt(gamma);
+
+		/*BREAK if norm(g(m+0),2) < TOL or pressure space has been fully searched*/
+		if(rnorm < TOL*initRnorm) 
+		{
+			break;
+		}else if(rnorm > 1000*initRnorm)
+		{
+		 _printf0_("L2-Norm g: "<< rnorm << "\n");
+		 _printf0_("Solver diverged and ends prematurely.\n");
+		 break;
+		}else{
+			_printf0_("L2-Norm g: "<< rnorm << "\n");
+		}
+
+		/*Break prematurely if solver doesn't reach desired tolerance in reasonable time frame*/
+		if(count > 10./TOL)   
+		{ 
+		 _printf0_("Ended after " << ceil(5./TOL) << " CG iterations\n");
+		 break;
+		}
+
+		/* ---------------------------------------------------------- */
+
+		/*Directional update*/
+		MatMult(IP,gold,tmpp);
+		VecDot(tmpp,gold,&tmpScalar);
+		gamma = gamma/tmpScalar;
+
+		VecWAXPY(wnew,gamma,wold,gnew);
+
+		/* Assign new to old iterates */
+		VecCopy(wnew,wold);VecCopy(gnew,gold);VecCopy(unew,uold);
+
+		count++;
+	}
+	}
+
+	/* Restore pressure and velocity sol. vectors to its global form */
+	VecRestoreSubVector(out_uf->pvector->vector,isv,&unew);
+	VecRestoreSubVector(out_uf->pvector->vector,isp,&p);
+
+	/*return output pointer*/
+	*puf=out_uf;
+
+	/* Cleanup */
+	KSPDestroy(&kspu);KSPDestroy(&kspip);
+
+	MatDestroy(&A);MatDestroy(&B);MatDestroy(&BT);MatDestroy(&IP);
+
+	VecDestroy(&p);VecDestroy(&uold);VecDestroy(&unew);VecDestroy(&rhsu);VecDestroy(&rhsp);
+	VecDestroy(&gold);VecDestroy(&gnew);VecDestroy(&wold);VecDestroy(&wnew);VecDestroy(&chi);
+	VecDestroy(&tmpp);VecDestroy(&tmpu);VecDestroy(&f1);VecDestroy(&f2);
+	VecDestroy(&tmpu2);VecDestroy(&tmpp2);VecDestroy(&resu);VecDestroy(&resp);
+
+}/*}}}*/
+void convergence_schurcg(bool* pconverged, Matrix<IssmDouble>* Kff,Vector<IssmDouble>* pf,Vector<IssmDouble>* uf,Vector<IssmDouble>* old_uf,IssmDouble eps_res,IssmDouble eps_rel,IssmDouble eps_abs,IS isv,IS isp){/*{{{*/
+
+	/*output*/
+	bool converged=false;
+
+	/*intermediary*/
+	//Vector<IssmDouble>* KU=NULL;
+	//Vector<IssmDouble>* KUF=NULL;
+	//Vector<IssmDouble>* KUold=NULL;
+	//Vector<IssmDouble>* KUoldF=NULL;
+	Vector<IssmDouble>* duf=NULL;
+	IssmDouble ndu,nduinf,nu;
+	IssmDouble nKUF;
+	IssmDouble nKUoldF;
+	IssmDouble nF;
+	IssmDouble solver_residue,res;
+	int analysis_type;
+
+	Mat A, B, BT;
+	Vec u,p,uold,pold,f1,f2,tmp,res1,res2;
+	int n_u,n_p;
+	double rnorm1, rnorm2;
+
+	if(VerboseModule()) _printf0_("   checking convergence\n");
+
+	/*If uf is NULL in input, f-set is nil, model is fully constrained, therefore converged from 
+	 * the get go: */
+	if(uf->IsEmpty()){
+		*pconverged=true;
+		return;
+	}
+
+  /* Note: SchurCG also constructs the Schur preconditioner and stores it in the free block of Kff 
+   *			[A    B]
+	* Kff =  |      |
+	*			[B^T IP]
+   * To calculate the residual, only the necessary blocks need to be extracted */
+
+	/*Extract A, B, B^T */
+	#if PETSC_VERSION_GT(3,8,0)
+	MatCreateSubMatrix(Kff->pmatrix->matrix,isv,isv,MAT_INITIAL_MATRIX,&A);
+	MatCreateSubMatrix(Kff->pmatrix->matrix,isv,isp,MAT_INITIAL_MATRIX,&B);
+	MatCreateSubMatrix(Kff->pmatrix->matrix,isp,isv,MAT_INITIAL_MATRIX,&BT);
+	#else
+	MatGetSubMatrix(Kff->pmatrix->matrix,isv,isv,MAT_INITIAL_MATRIX,&A);
+	MatGetSubMatrix(Kff->pmatrix->matrix,isv,isp,MAT_INITIAL_MATRIX,&B);
+	MatGetSubMatrix(Kff->pmatrix->matrix,isp,isv,MAT_INITIAL_MATRIX,&BT);
+	#endif
+
+		/*no. of free nodes in velocity/pressure space*/
+		MatGetSize(B,&n_u,&n_p);
+
+		/*Extract values corresponding to the free velocity/pressure nodes*/
+		VecCreate(IssmComm::GetComm(),&p);VecSetSizes(p,PETSC_DECIDE,n_p);VecSetFromOptions(p);
+		VecAssemblyBegin(p);VecAssemblyEnd(p);
+		VecCreate(IssmComm::GetComm(),&u);VecSetSizes(u,PETSC_DECIDE,n_u);VecSetFromOptions(u);
+		VecAssemblyBegin(u);VecAssemblyEnd(u);
+
+		VecGetSubVector(uf->pvector->vector,isv,&u);
+		VecGetSubVector(uf->pvector->vector,isp,&p);
+
+		/*Extract values of the RHS corresponding to the first/second block*/
+		VecDuplicate(u,&f1);VecSet(f1,1.0);
+		VecDuplicate(p,&f2);VecSet(f2,1.0);
+		VecGetSubVector(pf->pvector->vector,isv,&f1);
+		VecGetSubVector(pf->pvector->vector,isp,&f2);
+
+		/*Allocate intermediaries*/
+		VecDuplicate(u,&res1);VecSet(res1,1.0);
+		VecDuplicate(u,&tmp);VecSet(tmp,1.0);
+		VecDuplicate(p,&res2);VecSet(res2,1.0);
+
+	/*Display solver caracteristics*/
+	if (VerboseConvergence()){
+
+		/*Calculate res1 = A*u + B*p - f1*/
+		VecScale(f1,-1.);MatMultAdd(A,u,f1,tmp);MatMultAdd(B,p,tmp,res1);VecScale(f1,-1.);
+		/*Calculate res2 = B^T * u - f2*/
+		VecScale(f2,-1.);MatMultAdd(BT,u,f2,res2);VecScale(f2,-1.);
+
+		/*compute norm(res1), norm(res2), norm(F) and residue*/
+		VecNorm(res1,NORM_2,&rnorm1);VecNorm(res2,NORM_2,&rnorm2);
+		nKUF=sqrt(rnorm1*rnorm1 + rnorm2*rnorm2);
+		nF=pf->Norm(NORM_TWO);
+		solver_residue=nKUF/nF;
+		_printf0_("\n" << "   solver residue: norm(KU-F)/norm(F)=" << solver_residue << "\n");
+		if(xIsNan<IssmDouble>(solver_residue)){
+			//Kff->Echo();
+		}
+
+	}
+	/*clean up*/
+	VecRestoreSubVector(uf->pvector->vector,isv,&u);
+	VecRestoreSubVector(uf->pvector->vector,isp,&p);
+
+	/*Extract values corresponding to velocity/pressure on the old solution*/
+	VecGetSubVector(old_uf->pvector->vector,isv,&uold);
+	VecGetSubVector(old_uf->pvector->vector,isp,&pold);
+
+	/*Force equilibrium (Mandatory)*/
+
+	/*Calculate res1 = A*uold + B*pold - f1*/
+	VecScale(f1,-1.);MatMultAdd(A,uold,f1,tmp);MatMultAdd(B,pold,tmp,res1);VecScale(f1,-1.);
+	/*Calculate res2 = B^T * uold - f2*/
+	VecScale(f2,-1.);MatMultAdd(BT,uold,f2,res2);VecScale(f2,-1.);
+
+	/*compute norm(res1), norm(res2), norm(F) and residue*/
+	VecNorm(res1,NORM_2,&rnorm1);VecNorm(res2,NORM_2,&rnorm2);
+	nKUoldF=sqrt(rnorm1*rnorm1 + rnorm2*rnorm2);
+	nF=pf->Norm(NORM_TWO);
+	res=nKUoldF/nF;
+	if (xIsNan<IssmDouble>(res)){
+		_printf0_("norm nf = " << nF << "f and norm kuold = " << nKUoldF << "f\n");
+		_error_("mechanical equilibrium convergence criterion is NaN!");
+	}
+
+	MatDestroy(&A);MatDestroy(&B);MatDestroy(&BT);
+	VecRestoreSubVector(pf->pvector->vector,isv,&f1);
+	VecRestoreSubVector(pf->pvector->vector,isp,&f2);
+	VecDestroy(&res1);VecDestroy(&res2);VecDestroy(&tmp);
+	VecRestoreSubVector(old_uf->pvector->vector,isv,&uold);
+	VecRestoreSubVector(old_uf->pvector->vector,isp,&pold);
+
+	//print
+	if(res<eps_res){
+		if(VerboseConvergence()) _printf0_(setw(50)<<left<<"   mechanical equilibrium convergence criterion"<<res*100<< " < "<<eps_res*100<<" %\n");
+		converged=true;
+	}
+	else{ 
+		if(VerboseConvergence()) _printf0_(setw(50)<<left<<"   mechanical equilibrium convergence criterion"<<res*100<<" > "<<eps_res*100<<" %\n");
+		converged=false;
+	}
+
+	/*Relative criterion (optional)*/
+	if (!xIsNan<IssmDouble>(eps_rel) || (VerboseConvergence())){
+
+		//compute norm(du)/norm(u)
+		duf=old_uf->Duplicate(); old_uf->Copy(duf); duf->AYPX(uf,-1.0);
+		ndu=duf->Norm(NORM_TWO); nu=old_uf->Norm(NORM_TWO);
+
+		if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error_("convergence criterion is NaN!");
+
+		//clean up
+		delete duf;
+
+		//print
+		if (!xIsNan<IssmDouble>(eps_rel)){
+			if((ndu/nu)<eps_rel){
+				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " < " << eps_rel*100 << " %\n");
+			}
+			else{ 
+				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " > " << eps_rel*100 << " %\n");
+				converged=false;
+			}
+		}
+		else _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " %\n");
+
+	}
+
+	/*Absolute criterion (Optional) = max(du)*/
+	if (!xIsNan<IssmDouble>(eps_abs) || (VerboseConvergence())){
+
+		//compute max(du)
+		duf=old_uf->Duplicate(); old_uf->Copy(duf); duf->AYPX(uf,-1.0);
+		ndu=duf->Norm(NORM_TWO); nduinf=duf->Norm(NORM_INF);
+		if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error_("convergence criterion is NaN!");
+
+		//clean up
+		delete duf;
+
+		//print
+		if (!xIsNan<IssmDouble>(eps_abs)){
+			if ((nduinf)<eps_abs){
+				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: max(du)" << nduinf << " < " << eps_abs << "\n");
+			}
+			else{
+				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: max(du)" << nduinf << " > " << eps_abs << "\n");
+				converged=false;
+			}
+		}
+		else  _printf0_(setw(50) << left << "   Convergence criterion: max(du)" << nduinf << "\n");
+
+	}
+
+	/*assign output*/
+	*pconverged=converged;
+}/*}}}*/
+void solutionsequence_schurcg(FemModel* femmodel){/*{{{*/
+
+	/*intermediary: */
+	Matrix<IssmDouble>* Kff = NULL;
+	Matrix<IssmDouble>* Kfs = NULL;
+	Vector<IssmDouble>* ug  = NULL;
+	Vector<IssmDouble>* uf  = NULL;
+	Vector<IssmDouble>* old_uf = NULL;
+	Vector<IssmDouble>* pf  = NULL;
+	Vector<IssmDouble>* df  = NULL;
+	Vector<IssmDouble>* ys  = NULL;
+
+	/*parameters:*/
+	int max_nonlinear_iterations;
+	int configuration_type;
+	int precond;
+	IssmDouble eps_res,eps_rel,eps_abs;
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
+	femmodel->parameters->FindParam(&eps_res,StressbalanceRestolEnum);
+	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
+	femmodel->parameters->FindParam(&eps_abs,StressbalanceAbstolEnum);
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	femmodel->UpdateConstraintsx();
+	int size;
+	int  count=0;
+	bool converged=false;
+
+	/*Start non-linear iteration using input velocity: */
+	GetSolutionFromInputsx(&ug,femmodel);
+	Reducevectorgtofx(&uf, ug, femmodel->nodes,femmodel->parameters);
+
+	/*Update once again the solution to make sure that vx and vxold are similar*/
+	InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
+	InputUpdateFromSolutionx(femmodel,ug);
+
+	for(;;){
+
+		/*save pointer to old velocity*/
+		delete old_uf; old_uf=uf;
+		delete ug;
+
+		/*Get stiffness matrix and Load vector*/
+		SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+		CreateNodalConstraintsx(&ys,femmodel->nodes);
+		Reduceloadx(pf, Kfs, ys); delete Kfs;
+
+		/*Create pressure matrix of choice*/
+		#if PETSC_VERSION_LT(3,7,0)
+		PetscOptionsGetInt(PETSC_NULL,"-schur_pc",&precond,NULL);
+		#elif PETSC_VERSION_LT(3,19,0)
+		PetscOptionsGetInt(NULL,PETSC_NULL,"-schur_pc",&precond,NULL);
+		#else
+		PetscOptionsGetInt(NULL,PETSC_NULLPTR,"-schur_pc",&precond,NULL);
+		#endif
+
+		StressbalanceAnalysis* analysis = new StressbalanceAnalysis();	
+
+		/* Construct Schur preconditioner matrix or mass matrix depending on input */
+		if(precond)
+		{
+			for(Object* & object : femmodel->elements->objects){
+				Element* element=xDynamicCast<Element*>(object);
+				ElementMatrix* Ie = analysis->CreateSchurPrecondMatrix(element);
+				if(Ie) Ie->AddToGlobal(Kff,NULL);
+				delete Ie;
+			}
+		}else{
+
+			for(Object* & object : femmodel->elements->objects){
+				Element* element2=xDynamicCast<Element*>(object);
+				ElementMatrix* Ie2 = analysis->CreatePressureMassMatrix(element2);
+				if(Ie2) Ie2->AddToGlobal(Kff,NULL);
+				delete Ie2;
+			}
+		}
+
+		delete analysis;
+
+		/*Obtain index sets for velocity and pressure components */
+		IS isv = NULL;
+		IS isp = NULL;
+		#if PETSC_VERSION_MAJOR==3
+
+		/*Make indices out of doftypes: */
+		if(!(df->pvector->vector))_error_("need doftypes for FS solver!\n");
+			DofTypesToIndexSet(&isv,&isp,df->pvector->vector,FSSolverEnum);
+		#else
+			_error_("Petsc 3.X required");
+		#endif
+		Kff->Assemble();
+
+		/*Solve*/
+		femmodel->profiler->Start(SOLVER);
+		_assert_(Kff->type==PetscMatType); 
+
+		SchurCGSolver(&uf,
+					Kff->pmatrix->matrix,
+					pf->pvector->vector,
+					old_uf->pvector->vector,
+					isv,
+					isp,
+					femmodel->parameters);
+		femmodel->profiler->Stop(SOLVER);
+
+		/*Merge solution from f set to g set*/
+		Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters);delete ys;
+
+		/*Check for convergence and update inputs accordingly*/
+		convergence_schurcg(&converged,Kff,pf,uf,old_uf,eps_res,eps_rel,eps_abs,isv,isp); delete Kff; delete pf; delete df;
+		count++;
+
+		if(count>=max_nonlinear_iterations){
+			_printf0_("   maximum number of nonlinear iterations (" << max_nonlinear_iterations << ") exceeded\n"); 
+			converged=true;
+		}
+
+		InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
+		InputUpdateFromSolutionx(femmodel,ug);
+
+		/*Increase count: */
+		if(converged==true){
+			femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,StressbalanceConvergenceNumStepsEnum,count));
+			break;
+		}
+	}
+
+	if(VerboseConvergence()) _printf0_("\n   total number of iterations: " << count << "\n");
+
+	/*clean-up*/
+	delete uf;
+	delete ug;
+	delete old_uf;
+
+}/*}}}*/
+
+#else
+void solutionsequence_schurcg(FemModel* femmodel){_error_("PETSc needs to be installed");}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_shakti_nonlinear.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_shakti_nonlinear.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_shakti_nonlinear.cpp	(revision 27955)
@@ -0,0 +1,72 @@
+/*!\file: solutionsequence_nonlinear.cpp
+ * \brief: core of a non-linear solution, using fixed-point method 
+ */ 
+
+#include "./solutionsequences.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+void solutionsequence_shakti_nonlinear(FemModel* femmodel){
+
+	/*intermediary: */
+	Matrix<IssmDouble>* Kff = NULL;
+	Matrix<IssmDouble>* Kfs = NULL;
+	Vector<IssmDouble>* ug  = NULL;
+	Vector<IssmDouble>* uf  = NULL;
+	Vector<IssmDouble>* old_uf = NULL;
+	Vector<IssmDouble>* pf  = NULL;
+	Vector<IssmDouble>* df  = NULL;
+	Vector<IssmDouble>* ys  = NULL;
+
+	/*parameters:*/
+	int max_nonlinear_iterations;
+	IssmDouble eps_res,eps_rel,eps_abs;
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
+	femmodel->parameters->FindParam(&eps_res,StressbalanceRestolEnum);
+	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
+	femmodel->parameters->FindParam(&eps_abs,StressbalanceAbstolEnum);
+	femmodel->UpdateConstraintsx();
+
+	int  count=0;
+	bool converged=false;
+
+	/*Start non-linear iteration using input velocity: */
+	GetSolutionFromInputsx(&ug,femmodel);
+	Reducevectorgtofx(&uf, ug, femmodel->nodes,femmodel->parameters);
+
+	for(;;){
+		/*save pointer to old solution*/
+		delete old_uf;old_uf=uf;
+		delete ug;
+
+		SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+		CreateNodalConstraintsx(&ys,femmodel->nodes);
+		Reduceloadx(pf, Kfs, ys); delete Kfs;
+		femmodel->profiler->Start(SOLVER);
+		Solverx(&uf, Kff, pf, old_uf, df, femmodel->parameters);
+		femmodel->profiler->Stop(SOLVER);
+		Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters);delete ys;
+
+		convergence(&converged,Kff,pf,uf,old_uf,eps_res,eps_rel,eps_abs); delete Kff; delete pf; delete df;
+		InputUpdateFromSolutionx(femmodel,ug);
+
+		/*Increase count: */
+		count++;
+		if(count>=max_nonlinear_iterations){
+			_printf0_("   maximum number of nonlinear iterations (" << max_nonlinear_iterations << ") exceeded\n"); 
+			converged = true;
+		}
+		if(converged) break;
+	}
+
+	if(VerboseConvergence()) _printf0_("\n   total number of iterations: " << count << "\n");
+
+	/*clean-up*/
+	delete uf;
+	delete ug;
+	delete old_uf;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp	(revision 27955)
@@ -0,0 +1,105 @@
+/*!\file: solutionsequence_FScoupling_nonlinear.cpp
+ * \brief: core of the coupling between FS and SSAHO
+ */ 
+
+#include "./solutionsequences.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+void solutionsequence_FScoupling_nonlinear(FemModel* femmodel,bool conserve_loads){
+
+	/*intermediary: */
+	Matrix<IssmDouble> *Kff_horiz    = NULL;
+	Matrix<IssmDouble> *Kfs_horiz    = NULL;
+	Vector<IssmDouble> *ug_horiz     = NULL;
+	Vector<IssmDouble> *uf_horiz     = NULL;
+	Vector<IssmDouble> *old_uf_horiz = NULL;
+	Vector<IssmDouble> *pf_horiz     = NULL;
+	Vector<IssmDouble> *df_horiz     = NULL;
+	Matrix<IssmDouble> *Kff_vert     = NULL;
+	Matrix<IssmDouble> *Kfs_vert     = NULL;
+	Vector<IssmDouble> *ug_vert      = NULL;
+	Vector<IssmDouble> *uf_vert      = NULL;
+	Vector<IssmDouble> *pf_vert      = NULL;
+	Vector<IssmDouble> *df_vert      = NULL;
+	Vector<IssmDouble> *ys           = NULL;
+	bool converged;
+	int  count;
+
+	/*parameters:*/
+	int  min_mechanical_constraints;
+	int  max_nonlinear_iterations;
+	IssmDouble eps_res,eps_rel,eps_abs;
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&min_mechanical_constraints,StressbalanceRiftPenaltyThresholdEnum);
+	femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
+	femmodel->parameters->FindParam(&eps_res,StressbalanceRestolEnum);
+	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
+	femmodel->parameters->FindParam(&eps_abs,StressbalanceAbstolEnum);
+	femmodel->UpdateConstraintsx();
+
+	count=1;
+	converged=false;
+
+	/*First get ug_horiz:*/
+	femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+	GetSolutionFromInputsx(&ug_horiz,femmodel);
+	Reducevectorgtofx(&uf_horiz, ug_horiz, femmodel->nodes,femmodel->parameters);
+
+	for(;;){
+
+		/*First stressbalance horiz:*/
+		femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
+
+		//Update once again the solution to make sure that vx and vxold are similar (for next step in transient or steadystate)
+		InputUpdateFromSolutionx(femmodel,ug_horiz);
+		delete ug_horiz;
+
+		//save pointer to old velocity
+		delete old_uf_horiz; old_uf_horiz=uf_horiz;
+
+		/*solve: */
+		SystemMatricesx(&Kff_horiz, &Kfs_horiz, &pf_horiz, &df_horiz, NULL,femmodel);
+		CreateNodalConstraintsx(&ys,femmodel->nodes);
+		Reduceloadx(pf_horiz, Kfs_horiz, ys); delete Kfs_horiz;
+		femmodel->profiler->Start(SOLVER);
+		Solverx(&uf_horiz, Kff_horiz, pf_horiz, old_uf_horiz, df_horiz,femmodel->parameters);
+		femmodel->profiler->Stop(SOLVER);
+		Mergesolutionfromftogx(&ug_horiz, uf_horiz,ys,femmodel->nodes,femmodel->parameters); delete ys;
+		InputUpdateFromSolutionx(femmodel,ug_horiz);
+
+		convergence(&converged,Kff_horiz,pf_horiz,uf_horiz,old_uf_horiz,eps_res,eps_rel,eps_abs); delete Kff_horiz; delete pf_horiz; delete df_horiz;
+
+		/*Second compute vertical velocity: */
+		femmodel->SetCurrentConfiguration(StressbalanceVerticalAnalysisEnum);
+
+		/*solve: */
+		SystemMatricesx(&Kff_vert, &Kfs_vert, &pf_vert, &df_vert,NULL,femmodel);
+		CreateNodalConstraintsx(&ys,femmodel->nodes);
+		Reduceloadx(pf_vert, Kfs_vert, ys); delete Kfs_vert;
+		femmodel->profiler->Start(SOLVER);
+		Solverx(&uf_vert, Kff_vert, pf_vert, NULL, df_vert,femmodel->parameters); delete Kff_vert; delete pf_vert; delete df_vert;
+		femmodel->profiler->Stop(SOLVER);
+		Mergesolutionfromftogx(&ug_vert, uf_vert,ys,femmodel->nodes,femmodel->parameters);
+		delete uf_vert; 
+		delete ys; 
+		InputUpdateFromSolutionx(femmodel,ug_vert);
+		delete ug_vert;
+
+		/*Increase count: */
+		count++;
+		if(converged==true)break;
+		if(count>=max_nonlinear_iterations){
+			_printf0_("   maximum number of iterations (" << max_nonlinear_iterations << ") exceeded\n"); 
+			break;
+		}
+	}
+
+	/*clean-up*/
+	delete old_uf_horiz;
+	delete uf_horiz;
+	delete ug_horiz;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp	(revision 27955)
@@ -0,0 +1,137 @@
+/*!\file: solutionsequence_thermal_nonlinear.cpp
+ * \brief: core of the thermal solution 
+ */ 
+
+#include "./solutionsequences.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+void solutionsequence_thermal_nonlinear(FemModel* femmodel){
+
+	/*solution : */
+	Vector<IssmDouble>* tg=NULL; 
+	Vector<IssmDouble>* tf=NULL; 
+	Vector<IssmDouble>* tf_old=NULL; 
+	Vector<IssmDouble>* ys=NULL; 
+	IssmDouble melting_offset;
+
+	/*intermediary: */
+	Matrix<IssmDouble>* Kff=NULL;
+	Matrix<IssmDouble>* Kfs=NULL;
+	Vector<IssmDouble>* pf=NULL;
+	Vector<IssmDouble>* df=NULL;
+
+	bool converged;
+	bool isenthalpy, isdynamicbasalspc;
+	int constraints_converged;
+	int num_unstable_constraints;
+	int count;
+	int thermal_penalty_threshold;
+	int thermal_maxiter;
+
+	/*parameters:*/
+	IssmDouble eps_rel;
+
+	/*Recover parameters: */
+	femmodel->parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);
+	femmodel->parameters->FindParam(&thermal_maxiter,ThermalMaxiterEnum);
+
+	converged=false;
+	InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
+
+	if(isenthalpy){
+		femmodel->parameters->FindParam(&isdynamicbasalspc,ThermalIsdynamicbasalspcEnum);
+		femmodel->parameters->FindParam(&eps_rel,ThermalReltolEnum);
+		femmodel->UpdateConstraintsx();
+
+		//Update the solution to make sure that tf and tf_old are similar (for next step in transient or steadystate)
+		GetSolutionFromInputsx(&tg,femmodel);
+		Reducevectorgtofx(&tf, tg, femmodel->nodes,femmodel->parameters);
+		InputUpdateFromSolutionx(femmodel,tg);
+	}
+	else{
+		femmodel->parameters->FindParam(&thermal_penalty_threshold,ThermalPenaltyThresholdEnum);
+		ResetZigzagCounterx(femmodel);
+		femmodel->UpdateConstraintsx();
+	}
+
+	count=1;
+
+	for(;;){
+		delete tf_old;tf_old=tf;
+
+		if(isenthalpy){ 
+			SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
+			/*Update old solution, such that sizes of tf_old and tf are comparable*/
+			if(isdynamicbasalspc){
+				delete tf_old;
+				Reducevectorgtofx(&tf_old, tg, femmodel->nodes,femmodel->parameters);
+			}
+		}
+		else SystemMatricesx(&Kff, &Kfs, &pf,&df, &melting_offset,femmodel);
+		delete tg;
+		CreateNodalConstraintsx(&ys,femmodel->nodes);
+		Reduceloadx(pf, Kfs, ys); delete Kfs;
+		femmodel->profiler->Start(SOLVER);
+		Solverx(&tf, Kff, pf, tf_old, df, femmodel->parameters);
+		femmodel->profiler->Stop(SOLVER);
+		Mergesolutionfromftogx(&tg, tf,ys,femmodel->nodes,femmodel->parameters); delete ys;
+		if(isenthalpy){ 
+			convergence(&converged,Kff,pf,tf,tf_old,0.05,eps_rel,NAN); 
+			InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
+		}
+		delete Kff; delete pf; delete df;
+		InputUpdateFromSolutionx(femmodel,tg);
+		ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel);
+		if(VerboseConvergence()) _printf0_("   number of unstable constraints: " << num_unstable_constraints << "\n");
+
+		if(isenthalpy){ // enthalpy method
+			IssmDouble dt;
+			femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
+
+			count++;
+			bool max_iteration_state=false;
+			if(count>=thermal_maxiter){
+				_printf0_("   maximum number of nonlinear iterations (" << thermal_maxiter << ") exceeded\n"); 
+				converged=true;
+				InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
+				InputUpdateFromSolutionx(femmodel,tg);		
+				max_iteration_state=true;
+			}
+			if(converged==true){
+				break;
+			}
+			else if(dt==0.){
+				EnthalpyAnalysis::ComputeBasalMeltingrate(femmodel);
+				EnthalpyAnalysis::UpdateBasalConstraints(femmodel);
+			}
+		}
+		else{ // dry ice method
+			if(!converged){
+				if(num_unstable_constraints<=thermal_penalty_threshold) converged=true;
+				if(count>=thermal_maxiter){
+					converged=true;
+					_printf0_("   maximum number of iterations (" << thermal_maxiter << ") exceeded\n"); 
+				}
+			}
+			count++;
+			InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
+			if(converged)break;
+		}
+	}
+
+	if(isenthalpy){
+		if(VerboseConvergence()) _printf0_("\n   total number of iterations: " << count-1 << "\n");
+	}
+	else{
+		InputUpdateFromSolutionx(femmodel,tg);
+		femmodel->parameters->SetParam(melting_offset,MeltingOffsetEnum);
+	}
+
+	/*Free resources: */
+	delete tg;
+	delete tf;
+	delete tf_old;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequences.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequences.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/solutionsequences/solutionsequences.h	(revision 27955)
@@ -0,0 +1,32 @@
+/*
+ * solutionsequences.h:
+ */
+
+#ifndef _SOLUTION_SEQUENCES_H_
+#define _SOLUTION_SEQUENCES_H_
+
+class FemModel;
+class Parameters;
+template <class doubletype> class Matrix;
+template <class doubletype> class Vector;
+#include "../shared/Numerics/types.h"
+
+void solutionsequence_thermal_nonlinear(FemModel* femmodel);
+void solutionsequence_hydro_nonlinear(FemModel* femmodel, bool* conv_fail);
+void solutionsequence_shakti_nonlinear(FemModel* femmodel);
+void solutionsequence_glads_nonlinear(FemModel* femmodel);
+void solutionsequence_nonlinear(FemModel* femmodel,bool conserve_loads);
+void solutionsequence_newton(FemModel* femmodel);
+void solutionsequence_fct(FemModel* femmodel);
+void solutionsequence_FScoupling_nonlinear(FemModel* femmodel,bool conserve_loads);
+void solutionsequence_linear(FemModel* femmodel);
+void solutionsequence_la(FemModel* femmodel);
+void solutionsequence_la_theta(FemModel* femmodel);
+void solutionsequence_adjoint_linear(FemModel* femmodel);
+void solutionsequence_schurcg(FemModel* femmodel);
+void solutionsequence_sampling(FemModel* femmodel);
+
+/*convergence*/
+void convergence(bool* pconverged, Matrix<IssmDouble>* K_ff,Vector<IssmDouble>* p_f,Vector<IssmDouble>* u_f,Vector<IssmDouble>* u_f_old,IssmDouble eps_res,IssmDouble eps_rel,IssmDouble eps_abs);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/ToolkitOptions.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/ToolkitOptions.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/ToolkitOptions.cpp	(revision 27955)
@@ -0,0 +1,110 @@
+/*! \file ToolkitOptions.cpp
+ * \brief  file containing the methods for ToolkitOptions.h
+ */
+
+#include <string.h>
+#include "./ToolkitOptions.h"
+#include "../shared/Numerics/types.h"
+#include "../shared/Exceptions/exceptions.h"
+#include "../shared/MemOps/MemOps.h"
+
+#ifdef _DO_NOT_LOAD_GLOBALS_
+char* ToolkitOptions::toolkittype;
+char* ToolkitOptions::toolkitoptions;
+#endif
+
+void  ToolkitOptions::Init(const char* toolkit_in,const char* options){ /*{{{*/
+
+	/*First, avoid a leak: */
+	xDelete<char>(toolkitoptions);
+	xDelete<char>(toolkittype);
+
+	/*copy options into toolkitoptions:*/
+	_assert_(toolkit_in);
+	_assert_(options);
+	toolkittype = xNew<char>(strlen(toolkit_in)+1); 
+	sprintf(toolkittype,"%s",toolkit_in);
+	toolkitoptions = xNew<char>(strlen(options)+1); 
+	sprintf(toolkitoptions,"%s",options);
+}/*}}}*/
+void  ToolkitOptions::Init(){ /*{{{*/
+	toolkittype    = NULL;
+	toolkitoptions = NULL;
+}/*}}}*/
+void  ToolkitOptions::Delete(){ /*{{{*/
+
+	xDelete<char>(toolkitoptions);
+	xDelete<char>(toolkittype);
+
+}/*}}}*/
+char* ToolkitOptions::GetToolkitType(){  /*{{{*/
+
+	if(toolkittype==NULL) _error_("toolkittype not set (may be a mex?)");
+	char* toolkittype_out = xNew<char>(strlen(toolkittype)+1); 
+	sprintf(toolkittype_out,"%s",toolkittype);
+	return toolkittype_out;
+}/*}}}*/
+char* ToolkitOptions::GetToolkitOptionValue(const char* option){  /*{{{*/
+
+	return TokenValue(toolkitoptions,option);
+
+}/*}}}*/
+char* TokenValue(char* tokenlist,const char* target){ /*{{{*/
+
+	/*output:*/
+	char* value=NULL;
+
+	/*intermediary: */
+	char *token         = NULL;
+	char *tokenlistcopy = NULL;
+
+	/*First, because tokenizing destroys a string, copy what we have: */
+	if(tokenlist==NULL) _error_("tokenlist not set (may be a mex?)");
+	tokenlistcopy= xNew<char>(strlen(tokenlist)+1); 
+	sprintf(tokenlistcopy,"%s",tokenlist);
+
+	/*Now go through list of tokens, and look for  target, return value: */
+	token=strtok(tokenlistcopy, " ");
+	while(token != NULL) {
+
+		/*Is this token starting with "-", if so, compare to our target: */
+		if (strncmp(token,"-",1)==0){
+			if (strcmp(token+1,target)==0){
+				/*Ok, we found our target. Get next token: */
+				token = strtok(NULL, " ");
+				/*This token could actually be another option start with "-", just be sure: */
+				if (strncmp(token,"-",1)==0){
+					/*ok, we hit another option, which means our target value is "":*/
+					value= xNew<char>(strlen("")+1); 
+					sprintf(value,"%s","");
+					continue;
+				}
+				else{
+					/*this token is the value we are looking for, copy: */
+					value= xNew<char>(strlen(token)+1); 
+					sprintf(value,"%s",token);
+				}
+			}
+			else{
+				/*we found the wrong target. Go to the next option: */
+				token = strtok(NULL, " ");
+				if (strncmp(token,"-",1)==0){
+					/*this is indeed an option, continue: */
+					continue;
+				}
+				else{
+					/*this is the value of the option, discard it: */
+				}
+			}
+		}
+		else _error_("token list should start with an option, not a value");
+
+		/*Get new token and continue*/
+		token = strtok(NULL, " ");
+	}
+
+	/*Clean up and return*/
+	xDelete<char>(tokenlistcopy);
+	return value;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/ToolkitOptions.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/ToolkitOptions.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/ToolkitOptions.h	(revision 27955)
@@ -0,0 +1,26 @@
+/* \file ToolkitOptions.h
+ * \brief  create a class with a static string of options, and static methods to access it
+ * This is a way of protecting access to the toolkit options, and to make it accessible everywhere
+ * in the code.
+ */
+
+#ifndef _TOOLKIT_OPTIONS_H
+#define _TOOLKIT_OPTIONS_H
+
+class ToolkitOptions {
+
+	private:
+		static char* toolkittype;
+		static char* toolkitoptions;
+
+	public:
+		static void  Init(const char* type_in,const char* options);
+		static void  Init(void);
+		static void  Delete(void);
+		static char* GetToolkitType(void);
+		static char* GetToolkitOptionValue(const char* option);
+};
+
+char* TokenValue(char* tokenlist,const char* target);
+
+#endif  /* _TOOLKIT_OPTIONS_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/adolc/AdolcEdf.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/adolc/AdolcEdf.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/adolc/AdolcEdf.h	(revision 27955)
@@ -0,0 +1,33 @@
+/*
+ * adolc_edf.h
+ *
+ *  Created on: Jun 26, 2012
+ *      Author: utke
+ */
+
+#ifndef _ADOLC_EDF_H_
+#define _ADOLC_EDF_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)
+#include "adolc/adolc.h"
+
+struct Adolc_edf {
+    ext_diff_fct *myEDF_for_solverx_p;
+    Adolc_edf() : myEDF_for_solverx_p(0) {}
+    inline friend std::ostream& operator << ( ostream&, const Adolc_edf& );
+};
+
+std::ostream& operator << ( std::ostream& out, const Adolc_edf& a) {
+    out << a.myEDF_for_solverx_p;
+    return out;
+}
+
+#endif
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/adolc/adolcincludes.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/adolc/adolcincludes.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/adolc/adolcincludes.h	(revision 27955)
@@ -0,0 +1,10 @@
+/* \file adolcincludes.h
+ * \brief all includes for ADOLC layer
+ */
+
+#ifndef _ADOLC_PATCHES_INCLUDES_H_
+#define _ADOLC_PATCHES_INCLUDES_H_
+
+#include "./AdolcEdf.h"
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/codipack/CoDiPackCommon.hpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/codipack/CoDiPackCommon.hpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/codipack/CoDiPackCommon.hpp	(revision 27955)
@@ -0,0 +1,120 @@
+/*
+ * CoDiPackCommon.hpp
+ *
+ *  Created on: Mai 30, 2016
+ *      Author: sagebaum
+ */
+
+#ifndef _CODIPACK_COMMON_HPP_
+#define _CODIPACK_COMMON_HPP_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile without HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#if defined(_HAVE_CODIPACK_)
+#include "codi.hpp"
+
+template<typename Real, typename Passive>
+inline void getVectorPrimal(const Real* vec, Passive* pasVec, int n) {
+  for(int i = 0; i < n; ++i) {
+    pasVec[i]=vec[i].getValue();
+  }
+}
+
+template<typename Real, typename Passive>
+inline void setVectorPrimal(Real* vec, const Passive* pasVec, int n) {
+  for(int i = 0; i < n; ++i) {
+    vec[i].value() = pasVec[i];
+  }
+}
+
+template<typename Real, typename Data>
+inline void getVectorGradData(const Real* vec, Data* dataVec, int n) {
+  for(int i = 0; i < n; ++i) {
+	 #if _CODIPACK_MAJOR_==2
+    dataVec[i]=vec[i].getIdentifier();
+	 #elif _CODIPACK_MAJOR_==1
+	 dataVec[i]=vec[i].getGradientData();
+	 #else
+	 #error "_CODIPACK_MAJOR_ not supported"
+	 #endif
+  }
+}
+
+template<typename Real, typename Passive, typename Data>
+inline void getVectorPrimalAndGradData(const Real* vec, Passive* pasVec, Data* dataVec, int n) {
+  for(int i = 0; i < n; ++i) {
+    pasVec[i]=vec[i].getValue();
+	 #if _CODIPACK_MAJOR_==2
+    dataVec[i]=vec[i].getIdentifier();
+	 #elif _CODIPACK_MAJOR_==1
+	 dataVec[i]=vec[i].getGradientData();
+	 #else
+	 #error "_CODIPACK_MAJOR_ not supported"
+	 #endif
+  }
+}
+
+template<typename Real, typename Passive, typename Data>
+inline void getPrimalAndGradData(const Real& value, Passive& pas, Data& data) {
+  pas=value.getValue();
+  #if _CODIPACK_MAJOR_==2
+  data=value.getIdentifier();
+  #elif _CODIPACK_MAJOR_==1
+  data=value.getGradientData();
+  #else
+  #error "_CODIPACK_MAJOR_ not supported"
+  #endif
+}
+
+template<typename Real, typename Data>
+inline void registerVector(Real* vec, Data* dataVec, int n) {
+	#if _CODIPACK_MAJOR_==2
+	typename Real::Tape& tape = Real::getTape();
+	#elif _CODIPACK_MAJOR_==1
+	typename Real::TapeType& tape = Real::getGlobalTape();
+	#else
+	#error "_CODIPACK_MAJOR_ not supported"
+	#endif
+
+  for(int i = 0; i < n; ++i) {
+    tape.registerInput(vec[i]);
+	 #if _CODIPACK_MAJOR_==2
+    dataVec[i]=vec[i].getIdentifier();
+	 #elif _CODIPACK_MAJOR_==1
+	 dataVec[i]=vec[i].getGradientData();
+	 #else
+	 #error "_CODIPACK_MAJOR_ not supported"
+	 #endif
+  }
+}
+
+template<typename Tape, typename Data, typename Adjoint>
+inline void getVectorAdjoint(Tape& tape, const Data* dataVec, Adjoint* adjVec, int n) {
+  for(int i = 0; i < n; ++i) {
+    Data index = dataVec[i];
+    adjVec[i] = tape.getGradient(index);
+    tape.gradient(index) = 0.0;
+  }
+}
+
+template<typename Tape, typename Data, typename Adjoint>
+inline void updateVectorAdjoint(Tape& tape, const Data* dataVec, const Adjoint* adjVec, int n) {
+  for(int i = 0; i < n; ++i) {
+    Data index = dataVec[i];
+    tape.gradient(index) += adjVec[i];
+  }
+}
+
+template<typename Tape, typename Data, typename Adjoint>
+inline void updateAdjoint(Tape& tape, const Data& data, const Adjoint& adj) {
+  Data index = data;
+  tape.gradient(index) += adj;
+}
+
+#endif
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/codipack/CoDiPackGlobal.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/codipack/CoDiPackGlobal.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/codipack/CoDiPackGlobal.h	(revision 27955)
@@ -0,0 +1,40 @@
+/*
+ * CoDiPackGlobal.h
+ *
+ *  Created on: Jul 20, 2016
+ *      Author: a_h_ck
+ */
+
+#ifndef SRC_C_TOOLKITS_CODIPACK_CODIPACKGLOBAL_H_
+#define SRC_C_TOOLKITS_CODIPACK_CODIPACKGLOBAL_H_
+
+#ifdef HAVE_CONFIG_H
+    #include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#if defined(_HAVE_CODIPACK_)
+
+#include <iostream>
+#include <vector>
+
+struct CoDi_global {
+    std::vector<int> input_indices;
+    std::vector<int> output_indices;
+
+    void print(std::ostream& out) const {
+        out << "-------------------------------------\nCoDi_global:\n  in = [ ";
+        for(auto& in_index : input_indices) {
+            out << in_index << " ";
+        }
+        out << "]\n  out = [ ";
+        for(auto& out_index : output_indices) {
+            out << out_index << " ";
+        }
+        out << "]\n-------------------------------------\n";
+    }
+};
+
+#endif /* _HAVE_CODIPACK_ */
+#endif /* SRC_C_TOOLKITS_CODIPACK_CODIPACKGLOBAL_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/codipack/ampi_interface.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/codipack/ampi_interface.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/codipack/ampi_interface.cpp	(revision 27955)
@@ -0,0 +1,13 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#if defined(_HAVE_ADJOINTMPI_)
+#include "externals/ampi_interface_realreverse.cpp"
+#elif defined(_HAVE_MEDIPACK_)
+#include "medi/medi.cpp"
+#else
+#error "Cannot compile without MeDiPack and AdjointMpi"
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/codipack/codipackincludes.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/codipack/codipackincludes.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/codipack/codipackincludes.h	(revision 27955)
@@ -0,0 +1,11 @@
+/* \file codipackincludes.h
+ * \brief all includes for CoDiPack layer
+ */
+
+#ifndef _COIDPACK_INCLUDES_H_
+#define _COIDPACK_INCLUDES_H_
+
+#include "./CoDiPackCommon.hpp"
+#include "./CoDiPackGlobal.h"
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/gsl/DenseGslSolve.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/gsl/DenseGslSolve.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/gsl/DenseGslSolve.cpp	(revision 27955)
@@ -0,0 +1,540 @@
+/*!\file DenseGslSolve.cpp
+ * \brief: solve dense matrix system with GSL library
+ */
+
+/*Header files: {{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/shared.h"
+#include "../../classes/Params/GenericParam.h"
+#include "../../classes/Params/Parameters.h"
+#include "../adolc/adolcincludes.h"
+#include "../codipack/codipackincludes.h"
+#include "./gslincludes.h"
+
+#ifdef _HAVE_GSL_
+#include <gsl/gsl_linalg.h>
+#endif
+
+/*}}}*/
+
+void DenseGslSolve(IssmPDouble** pX,IssmPDouble* A,IssmPDouble* B, int n){ /*{{{*/
+
+	/*Intermediary: */
+	IssmPDouble *X  = xNew<IssmPDouble>(n);
+	SolverxSeq(X,A,B,n);
+
+	/*allocate output pointers: */
+	*pX=X;
+}
+/*}}}*/
+void DenseGslSolve(IssmPDouble** px,IssmPDouble* Kff,int Kff_M,int Kff_N,IssmPDouble* pf,int pf_M,Parameters* parameters){ /*{{{*/
+
+	/*Intermediary: */
+
+	if(Kff_N!=pf_M)_error_("Right hand side vector of size " << pf_M << ", when matrix is of size " << Kff_M << "-" << Kff_N << " !");
+	if(Kff_M!=Kff_N)_error_("Stiffness matrix should be square!");
+
+	IssmPDouble *x  = xNew<IssmPDouble>(Kff_N);
+	SolverxSeq(x,Kff,pf,Kff_N);
+
+	/*allocate output pointers: */
+	*px=x;
+}
+/*}}}*/
+void SolverxSeq(IssmPDouble *X, IssmPDouble *A, IssmPDouble *B,int n){ /*{{{*/
+#ifdef _HAVE_GSL_
+	/*GSL Matrices and vectors: */
+	int              s;
+	gsl_matrix_view  a;
+	gsl_vector_view  b,x;
+	gsl_permutation *p = NULL;
+//	for (int i=0; i<n*n; ++i) std::cout << "SolverxSeq A["<< i << "]=" << A[i] << std::endl;
+//	for (int i=0; i<n; ++i) std::cout << "SolverxSeq b["<< i << "]=" << B[i] << std::endl;
+	/*A will be modified by LU decomposition. Use copy*/
+	double* Acopy = xNew<double>(n*n);
+	xMemCpy(Acopy,A,n*n);
+
+	/*Initialize gsl matrices and vectors: */
+	a = gsl_matrix_view_array (Acopy,n,n);
+	b = gsl_vector_view_array (B,n);
+	x = gsl_vector_view_array (X,n);
+
+	/*Run LU and solve: */
+	p = gsl_permutation_alloc (n);
+	gsl_linalg_LU_decomp (&a.matrix, p, &s);
+	gsl_linalg_LU_solve (&a.matrix, p, &b.vector, &x.vector);
+
+	/*Clean up and assign output pointer*/
+	xDelete(Acopy);
+	gsl_permutation_free(p);
+#endif
+}
+/*}}}*/
+
+#ifdef _HAVE_ADOLC_
+int EDF_for_solverx(int n, IssmPDouble *x, int m, IssmPDouble *y){ /*{{{*/
+	SolverxSeq(y,x, x+m*m, m); // x is where the matrix starts, x+m*m is where the right-hand side starts
+	return 0;
+} /*}}}*/
+int EDF_fos_forward_for_solverx(int n, IssmPDouble *inVal, IssmPDouble *inDeriv, int m, IssmPDouble *outVal, IssmPDouble *outDeriv) { /*{{{*/
+#ifdef _HAVE_GSL_
+	//  for (int i=0; i<m*m; ++i) std::cout << "EDF_fos_forward_for_solverx A["<< i << "]=" << inVal[i] << std::endl;
+	//  for (int i=0; i<m; ++i) std::cout << "EDF_fos_forward_for_solverx b["<< i << "]=" << inVal[i+m*m] << std::endl;
+	// the matrix will be modified by LU decomposition. Use gsl_A copy
+	double* Acopy = xNew<double>(m*m);
+	xMemCpy(Acopy,inVal,m*m);
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix_view gsl_A = gsl_matrix_view_array (Acopy,m,m);
+	gsl_vector_view gsl_b = gsl_vector_view_array (inVal+m*m,m); // the right hand side starts at address inVal+m*m
+	gsl_permutation *perm_p = gsl_permutation_alloc (m);
+	int  signPerm;
+	// factorize
+	gsl_linalg_LU_decomp (&gsl_A.matrix, perm_p, &signPerm);
+	gsl_vector *gsl_x_p = gsl_vector_alloc (m);
+	// solve for the value
+	gsl_linalg_LU_solve (&gsl_A.matrix, perm_p, &gsl_b.vector, gsl_x_p);
+	/*Copy result*/
+	xMemCpy(outVal,gsl_vector_ptr(gsl_x_p,0),m);
+	gsl_vector_free(gsl_x_p);
+	//  for (int i=0; i<m; ++i) std::cout << "EDF_fos_forward_for_solverx x["<< i << "]=" << outVal[i] << std::endl;
+	// solve for the derivatives acc. to A * dx = r  with r=db - dA * x
+	// compute the RHS
+	double* r=xNew<double>(m);
+	for (int i=0; i<m; i++) {
+		r[i]=inDeriv[m*m+i]; // this is db[i]
+		for (int j=0;j<m; j++) {
+			r[i]-=inDeriv[i*m+j]*outVal[j]; // this is dA[i][j]*x[j]
+		}
+	}
+	gsl_vector_view gsl_r=gsl_vector_view_array(r,m);
+	gsl_vector *gsl_dx_p = gsl_vector_alloc(m);
+	gsl_linalg_LU_solve (&gsl_A.matrix, perm_p, &gsl_r.vector, gsl_dx_p);
+	xMemCpy(outDeriv,gsl_vector_ptr(gsl_dx_p,0),m);
+	gsl_vector_free(gsl_dx_p);
+	xDelete(r);
+	gsl_permutation_free(perm_p);
+	xDelete(Acopy);
+#endif
+	return 0;
+} /*}}}*/
+int EDF_fov_forward_for_solverx(int n, IssmPDouble *inVal, int directionCount, IssmPDouble **inDeriv, int m, IssmPDouble *outVal, IssmPDouble **outDeriv) { /*{{{*/
+#ifdef _HAVE_GSL_
+	// the matrix will be modified by LU decomposition. Use gsl_A copy
+	double* Acopy = xNew<double>(m*m);
+	xMemCpy(Acopy,inVal,m*m);
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix_view gsl_A = gsl_matrix_view_array (Acopy,m,m);
+	gsl_vector_view gsl_b = gsl_vector_view_array (inVal+m*m,m); // the right hand side starts at address inVal+m*m
+	gsl_permutation *perm_p = gsl_permutation_alloc (m);
+	int  signPerm;
+	// factorize
+	gsl_linalg_LU_decomp (&gsl_A.matrix, perm_p, &signPerm);
+	gsl_vector *gsl_x_p = gsl_vector_alloc (m);
+	// solve for the value
+	gsl_linalg_LU_solve (&gsl_A.matrix, perm_p, &gsl_b.vector, gsl_x_p);
+	/*Copy result*/
+	xMemCpy(outVal,gsl_vector_ptr(gsl_x_p,0),m);
+	gsl_vector_free(gsl_x_p);
+	// solve for the derivatives acc. to A * dx = r  with r=db - dA * x
+	double* r=xNew<double>(m);
+	gsl_vector *gsl_dx_p = gsl_vector_alloc(m);
+	for (int dir=0;dir<directionCount;++dir) {
+		// compute the RHS
+		for (int i=0; i<m; i++) {
+			r[i]=inDeriv[m*m+i][dir]; // this is db[i]
+			for (int j=0;j<m; j++) {
+				r[i]-=inDeriv[i*m+j][dir]*outVal[j]; // this is dA[i][j]*x[j]
+			}
+		}
+		gsl_vector_view gsl_r=gsl_vector_view_array(r,m);
+		gsl_linalg_LU_solve (&gsl_A.matrix, perm_p, &gsl_r.vector, gsl_dx_p);
+		// reuse r
+		xMemCpy(r,gsl_vector_ptr(gsl_dx_p,0),m);
+		for (int i=0; i<m; i++) {
+			outDeriv[i][dir]=r[i];
+		}
+	}
+	gsl_vector_free(gsl_dx_p);
+	xDelete(r);
+	gsl_permutation_free(perm_p);
+	xDelete(Acopy);
+#endif
+	return 0;
+}
+/*}}}*/
+int EDF_fos_reverse_for_solverx(int m, double *dp_U, int n, double *dp_Z, double* dp_x, double* dp_y) { /*{{{*/
+	// copy to transpose the matrix
+	double* transposed=xNew<double>(m*m);
+	for (int i=0; i<m; ++i) for (int j=0; j<m; ++j) transposed[j*m+i]=dp_x[i*m+j];
+	gsl_matrix_view aTransposed = gsl_matrix_view_array (transposed,m,m);
+	// the adjoint of the solution is our right-hand side
+	gsl_vector_view x_bar=gsl_vector_view_array(dp_U,m);
+	// the last m elements of dp_Z representing the adjoint of the right-hand side we want to compute:
+	gsl_vector_view b_bar=gsl_vector_view_array(dp_Z+m*m,m);
+	gsl_permutation *perm_p = gsl_permutation_alloc (m);
+	int permSign;
+	gsl_linalg_LU_decomp (&aTransposed.matrix, perm_p, &permSign);
+	gsl_linalg_LU_solve (&aTransposed.matrix, perm_p, &x_bar.vector, &b_bar.vector);
+	// now do the adjoint of the matrix
+	for (int i=0; i<m; ++i) for (int j=0; j<m; ++j) dp_Z[i*m+j]-=dp_Z[m*m+i]*dp_y[j];
+	gsl_permutation_free(perm_p);
+	xDelete(transposed);
+	return 0;
+}
+/*}}}*/
+int EDF_fov_reverse_for_solverx(int m, int p, double **dpp_U, int n, double **dpp_Z, double* dp_x, double* dp_y) { /*{{{*/
+	// copy to transpose the matrix
+	double* transposed=xNew<double>(m*m);
+	for (int i=0; i<m; ++i) for (int j=0; j<m; ++j) transposed[j*m+i]=dp_x[i*m+j];
+	gsl_matrix_view aTransposed = gsl_matrix_view_array (transposed,m,m);
+	gsl_permutation *perm_p = gsl_permutation_alloc (m);
+	int permSign;
+	gsl_linalg_LU_decomp (&aTransposed.matrix, perm_p, &permSign);
+	for (int weightsRowIndex=0;weightsRowIndex<p;++weightsRowIndex) {
+		// the adjoint of the solution is our right-hand side
+		gsl_vector_view x_bar=gsl_vector_view_array(dpp_U[weightsRowIndex],m);
+		// the last m elements of dp_Z representing the adjoint of the right-hand side we want to compute:
+		gsl_vector_view b_bar=gsl_vector_view_array(dpp_Z[weightsRowIndex]+m*m,m);
+		gsl_linalg_LU_solve (&aTransposed.matrix, perm_p, &x_bar.vector, &b_bar.vector);
+		// now do the adjoint of the matrix
+		for (int i=0; i<m; ++i) for (int j=0; j<m; ++j) dpp_Z[weightsRowIndex][i*m+j]-=dpp_Z[weightsRowIndex][m*m+i]*dp_y[j];
+	}
+	gsl_permutation_free(perm_p);
+	xDelete(transposed);
+	return 0;
+}
+/*}}}*/
+void DenseGslSolve(/*output*/ IssmDouble** px,/*stiffness matrix:*/ IssmDouble* Kff, int Kff_M, int Kff_N, /*right hand side load vector: */ IssmDouble* pf, int pf_M, Parameters* parameters){ /*{{{*/
+
+	/*Intermediary: */
+
+	if(Kff_N!=pf_M)_error_("Right hand side vector of size " << pf_M << ", when matrix is of size " << Kff_M << "-" << Kff_N << " !");
+	if(Kff_M!=Kff_N)_error_("Stiffness matrix should be square!");
+
+// AD performance is sensitive to calls to ensurecontiguous.
+// Providing "t" will cause ensurecontiguous to be called.
+#ifdef _HAVE_AD_
+	IssmDouble *x  = xNew<IssmDouble>(Kff_N,"t");
+#else
+	IssmDouble *x  = xNew<IssmDouble>(Kff_N);
+#endif
+
+	SolverxSeq(x,Kff,pf,Kff_N,parameters);
+
+	/*allocate output pointers: */
+	*px=x;
+}
+/*}}}*/
+void SolverxSeq(IssmDouble *X,IssmDouble *A,IssmDouble *B,int n, Parameters* parameters){/*{{{*/
+	// pack inputs to conform to the EDF-prescribed interface
+// AD performance is sensitive to calls to ensurecontiguous.
+// Providing "t" will cause ensurecontiguous to be called.
+#ifdef _HAVE_AD_
+        IssmDouble*  adoubleEDFin=xNew<IssmDouble>(n*(n+1),"t");
+#else
+        IssmDouble*  adoubleEDFin=xNew<IssmDouble>(n*(n+1));
+#endif  
+	// packed inputs, i.e. matrix and right hand side
+        for(int i=0; i<n*n;i++)adoubleEDFin[i]    =A[i];      // pack matrix
+        for(int i=0; i<n;  i++)adoubleEDFin[i+n*n]=B[i];      // pack the right hand side
+	// call the wrapped solver through the registry entry we retrieve from parameters
+	call_ext_fct(xDynamicCast<GenericParam<Adolc_edf> * >(parameters->FindParamObject(AdolcParamEnum))->GetParameterValue().myEDF_for_solverx_p,
+	             n*(n+1), adoubleEDFin,
+	             n, X);
+	// for(int i=0; i<n;  i++) {ADOLC_DUMP_MACRO(X[i]);}
+	xDelete(adoubleEDFin);
+}
+/*}}}*/
+#endif
+
+#ifdef _HAVE_CODIPACK_
+#if _CODIPACK_MAJOR_==2
+using Tape = typename IssmDouble::Tape;
+using AccessInterface = codi::VectorAccessInterface<typename Tape::Real, typename Tape::Identifier>;
+void SolverxSeq_codi_b(Tape* tape,void* data_in, AccessInterface* ra) {/*{{{*/
+
+	/*recast data_in and tape*/
+	codi::ExternalFunctionUserData* data = (codi::ExternalFunctionUserData*)data_in;
+
+  IssmDouble::Real* valueATrans;
+  IssmDouble::Identifier* indexATrans;
+  IssmDouble::Identifier* indexB;
+  IssmDouble::Real* valueX;
+  IssmDouble::Identifier* indexX;
+  int n;
+
+  data->getData(valueATrans);
+  data->getData(indexATrans);
+  data->getData(indexB);
+  data->getData(valueX);
+  data->getData(indexX);
+  data->getData(n);
+
+  // create the adjoint vector for x and reset the adjoint values on the tape
+  IssmDouble::Gradient* adjX = xNew<IssmDouble::Gradient>(n);
+  getVectorAdjoint(*tape, indexX, adjX, n);
+
+  IssmDouble::Gradient* sol  = xNew<IssmDouble::Gradient>(n);
+  SolverxSeq(sol, valueATrans, adjX, n);
+
+  updateVectorAdjoint(*tape, indexB, sol, n);
+  for(int i=0; i<n; ++i) {
+    for (int j=0; j<n; ++j) {
+      // we access the transposed matrix here because we stored the indices in a transposed way
+      updateAdjoint(*tape, indexATrans[i*n+j], -sol[j]*valueX[i]);
+    }
+  }
+
+  xDelete(sol);
+  xDelete(adjX);
+}
+/*}}}*/
+void SolverxSeq_codi_delete(Tape* tape,void* data_in) {/*{{{*/
+
+	/*recast data_in*/
+	codi::ExternalFunctionUserData* data = (codi::ExternalFunctionUserData*)data_in;
+
+  IssmDouble::Real* valueATrans;
+  IssmDouble::Identifier* indexATrans;
+  IssmDouble::Identifier* indexB;
+  IssmDouble::Real* valueX;
+  IssmDouble::Identifier* indexX;
+  int n;
+
+  data->getData(valueATrans);
+  data->getData(indexATrans);
+  data->getData(indexB);
+  data->getData(valueX);
+  data->getData(indexX);
+  data->getData(n);
+
+  xDelete(valueATrans);
+  xDelete(indexATrans);
+  xDelete(indexB);
+  xDelete(valueX);
+  xDelete(indexX);
+
+  delete data;
+}
+/*}}}*/
+void SolverxSeq(IssmDouble *X,IssmDouble *A,IssmDouble *B,int n, Parameters* parameters){/*{{{*/
+  IssmDouble::Tape& tape = IssmDouble::getTape();
+  codi::ExternalFunctionUserData* dataHandler = NULL;
+
+  if(tape.isActive()) {
+    dataHandler = new codi::ExternalFunctionUserData();
+
+    // create the index vector and the double data for A and B
+    IssmDouble::Real* valueATrans = xNew<IssmDouble::Real>(n*n);
+    IssmDouble::Identifier* indexATrans = xNew<IssmDouble::Identifier>(n*n);
+
+    // read the data for matrix in a transposed fashion
+	  for (int i=0; i<n; ++i) {
+      for (int j=0; j<n; ++j) {
+        getPrimalAndGradData(A[i*n+j], valueATrans[j*n+i], indexATrans[j*n+i]);
+      }
+    }
+
+    // read the data from B (primal values are not required vor B
+    IssmDouble::Identifier* indexB = xNew<IssmDouble::Identifier>(n);
+    getVectorGradData(B, indexB, n);
+
+    dataHandler->addData(valueATrans);
+    dataHandler->addData(indexATrans);
+    dataHandler->addData(indexB);
+  }
+
+  // unpack the primal values from the matrix and the vector
+  IssmDouble::Real* valueA = xNew<IssmDouble::Real>(n*n);
+  IssmDouble::Real* valueB = xNew<IssmDouble::Real>(n);
+  // read the data from A and B
+  getVectorPrimal(A, valueA, n*n);
+  getVectorPrimal(B, valueB, n);
+
+  // create the placeholder for X and solve the system
+  IssmDouble::Real* valueX = xNew<IssmDouble::Real>(n);
+  SolverxSeq(valueX, valueA, valueB, n);
+
+  // pack the values into x
+  setVectorPrimal(X, valueX, n);
+
+  if(tape.isActive()) {
+    // create the index vector X and register x as active variables
+    IssmDouble::Identifier* indexX = xNew<IssmDouble::Identifier>(n);
+    registerVector(X, indexX, n);
+
+    dataHandler->addData(valueX);
+    dataHandler->addData(indexX);
+
+    // store other arguments
+    dataHandler->addData(n);
+
+	 tape.pushExternalFunction(codi::ExternalFunction<Tape>::create(&SolverxSeq_codi_b,(void*)dataHandler, &SolverxSeq_codi_delete));
+  }
+  else{
+    // if the tape is active valueX is stored in the dataHandler and deleted in the reverse sweep
+    xDelete(valueX);
+  }
+
+  xDelete(valueB);
+  xDelete(valueA);
+}
+/*}}}*/
+#elif _CODIPACK_MAJOR_==1
+void SolverxSeq_codi_b(void* tape_in,void* data_in,void* ra) {/*{{{*/
+
+	/*recast data_in and tape*/
+	codi::DataStore* data = (codi::DataStore*)data_in;
+	//IssmDouble::TapeType& tape = (IssmDouble::TapeType&)tape_in;
+	IssmDouble::TapeType& tape = IssmDouble::getGlobalTape();
+
+	IssmDouble::Real* valueATrans;
+	IssmDouble::GradientData* indexATrans;
+	IssmDouble::GradientData* indexB;
+	IssmDouble::Real* valueX;
+	IssmDouble::GradientData* indexX;
+	int n;
+
+	data->getData(valueATrans);
+	data->getData(indexATrans);
+	data->getData(indexB);
+	data->getData(valueX);
+	data->getData(indexX);
+	data->getData(n);
+
+
+	// create the adjoint vector for x and reset the adjoint values on the tape
+	IssmDouble::GradientValue* adjX = xNew<IssmDouble::GradientValue>(n);
+	getVectorAdjoint(tape, indexX, adjX, n);
+
+	IssmDouble::GradientValue* sol  = xNew<IssmDouble::GradientValue>(n);
+	SolverxSeq(sol, valueATrans, adjX, n);
+
+	updateVectorAdjoint(tape, indexB, sol, n);
+	for(int i=0; i<n; ++i) {
+		for (int j=0; j<n; ++j) {
+			// we access the transposed matrix here because we stored the indices in a transposed way
+			updateAdjoint(tape, indexATrans[i*n+j], -sol[j]*valueX[i]);
+		}
+	}
+
+	xDelete(sol);
+	xDelete(adjX);
+}
+/*}}}*/
+void SolverxSeq_codi_delete(void* tape_in,void* data_in) {/*{{{*/
+
+	/*recast data_in*/
+	codi::DataStore* data = (codi::DataStore*)data_in;
+
+	IssmDouble::Real* valueATrans;
+	IssmDouble::GradientData* indexATrans;
+	IssmDouble::GradientData* indexB;
+	IssmDouble::Real* valueX;
+	IssmDouble::GradientData* indexX;
+	int n;
+
+	data->getData(valueATrans);
+	data->getData(indexATrans);
+	data->getData(indexB);
+	data->getData(valueX);
+	data->getData(indexX);
+	data->getData(n);
+
+	xDelete(valueATrans);
+	xDelete(indexATrans);
+	xDelete(indexB);
+	xDelete(valueX);
+	xDelete(indexX);
+
+	delete data;
+}
+/*}}}*/
+void SolverxSeq(IssmDouble *X,IssmDouble *A,IssmDouble *B,int n, Parameters* parameters){/*{{{*/
+	IssmDouble::TapeType& tape = IssmDouble::getGlobalTape();
+	codi::DataStore* dataHandler = NULL;
+
+	if(tape.isActive()) {
+		dataHandler = new codi::DataStore();
+
+		// create the index vector and the double data for A and B
+		IssmDouble::Real* valueATrans = xNew<IssmDouble::Real>(n*n);
+		IssmDouble::GradientData* indexATrans = xNew<IssmDouble::GradientData>(n*n);
+
+		// read the data for matrix in a transposed fashion
+		for (int i=0; i<n; ++i) {
+			for (int j=0; j<n; ++j) {
+				getPrimalAndGradData(A[i*n+j], valueATrans[j*n+i], indexATrans[j*n+i]);
+			}
+		}
+
+		// read the data from B (primal values are not required vor B
+		IssmDouble::GradientData* indexB = xNew<IssmDouble::GradientData>(n);
+		getVectorGradData(B, indexB, n);
+
+		dataHandler->addData(valueATrans);
+		dataHandler->addData(indexATrans);
+		dataHandler->addData(indexB);
+	}
+
+	// unpack the primal values from the matrix and the vector
+	IssmDouble::Real* valueA = xNew<IssmDouble::Real>(n*n);
+	IssmDouble::Real* valueB = xNew<IssmDouble::Real>(n);
+	// read the data from A and B
+	getVectorPrimal(A, valueA, n*n);
+	getVectorPrimal(B, valueB, n);
+
+	// create the placeholder for X and solve the system
+	IssmDouble::Real* valueX = xNew<IssmDouble::Real>(n);
+	SolverxSeq(valueX, valueA, valueB, n);
+
+	// pack the values into x
+	setVectorPrimal(X, valueX, n);
+
+	if(tape.isActive()) {
+		// create the index vector X and register x as active variables
+		IssmDouble::GradientData* indexX = xNew<IssmDouble::GradientData>(n);
+		registerVector(X, indexX, n);
+
+		dataHandler->addData(valueX);
+		dataHandler->addData(indexX);
+
+		// store other arguments
+		dataHandler->addData(n);
+
+		tape.pushExternalFunctionHandle(&SolverxSeq_codi_b, dataHandler, &SolverxSeq_codi_delete);
+	}
+	else{
+		// if the tape is active valueX is stored in the dataHandler and deleted in the reverse sweep
+		xDelete(valueX);
+	}
+
+	xDelete(valueB);
+	xDelete(valueA);
+}
+/*}}}*/
+#else
+#error "_CODIPACK_MAJOR_ not supported"
+#endif
+void DenseGslSolve(/*output*/ IssmDouble** px,/*stiffness matrix:*/ IssmDouble* Kff, int Kff_M, int Kff_N, /*right hand side load vector: */ IssmDouble* pf, int pf_M, Parameters* parameters){ /*{{{*/
+
+	/*Intermediary: */
+
+	if(Kff_N!=pf_M)_error_("Right hand side vector of size " << pf_M << ", when matrix is of size " << Kff_M << "-" << Kff_N << " !");
+	if(Kff_M!=Kff_N)_error_("Stiffness matrix should be square!");
+
+	IssmDouble *x  = xNew<IssmDouble>(Kff_N,"t");
+
+	SolverxSeq(x,Kff,pf,Kff_N,parameters);
+
+	/*allocate output pointers: */
+	*px=x;
+}
+/*}}}*/
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/gsl/gslincludes.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/gsl/gslincludes.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/gsl/gslincludes.h	(revision 27955)
@@ -0,0 +1,37 @@
+/* \file gslsincludes.h
+ * \brief all includes for GSL layer
+ */
+
+#ifndef _GSL_INCLUDES_H_
+#define _GSL_INCLUDES_H_
+
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/Numerics/types.h"
+/*}}}*/
+
+template <class doubletype> class IssmVec;
+template <class doubletype> class IssmMat;
+class Parameters;
+
+void DenseGslSolve(IssmPDouble** pX,IssmPDouble* A,IssmPDouble* B, int n);
+void DenseGslSolve(IssmDouble** pX,IssmDouble* Kff,int Kff_M,int Kff_N,IssmDouble* pf,int pf_M,Parameters* parameters);
+
+void SolverxSeq(IssmPDouble *X, IssmPDouble *A, IssmPDouble *B,int n);
+
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)
+void SolverxSeq(IssmDouble *X,IssmDouble *A,IssmDouble *B,int n, Parameters* parameters);
+// call back functions:
+ADOLC_ext_fct EDF_for_solverx;
+ADOLC_ext_fct_fos_forward EDF_fos_forward_for_solverx;
+ADOLC_ext_fct_fos_reverse EDF_fos_reverse_for_solverx;
+ADOLC_ext_fct_fov_forward EDF_fov_forward_for_solverx;
+ADOLC_ext_fct_fov_reverse EDF_fov_reverse_for_solverx;
+#endif
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/Bucket.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/Bucket.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/Bucket.h	(revision 27955)
@@ -0,0 +1,286 @@
+/*!\file Bucket.h
+ * \brief: header file for Bucket object
+ */
+
+#ifndef _BUCKET_H
+#define _BUCKET_H
+
+/*Headers:*/
+/*{{{*/
+#include "../../datastructures/datastructures.h"
+#include "../../shared/io/Comm/IssmComm.h"
+#include "../toolkitsenums.h"
+/*}}}*/
+
+/*how many ISSM_MPI_Isend requests does it take to transfer the contents of a bucket to another cpu?*/
+#define MATRIXBUCKETSIZEOFREQUESTS 7 
+#define VECTORBUCKETSIZEOFREQUESTS 5 
+typedef enum {VECTOR_BUCKET, MATRIX_BUCKET} BucketType;
+template <class doubletype> class Bucket: public Object{
+
+	private: 
+		int type; //either a VECTOR_BUCKET or MATRIX_BUCKET
+		int m,n; /*size of local matrix we are storing*/
+		/*row and column indices of the matrix we are storing*/
+		int* idxm;
+		int* idxn; 
+		doubletype* values; /*local matrix*/
+		InsMode mode; /*mode of insertion for this bucket*/
+
+	public: 
+
+		/*constructors, destructors: */
+		Bucket(){ /*{{{*/
+			this->Initialize();
+		} /*}}}*/
+		Bucket(int m_in,int* idxm_in,int n_in,int* idxn_in,doubletype* values_in,InsMode mode_in){ /*{{{*/
+
+			this->Initialize();
+
+			/*Check whether we have negative indices?*/
+			int m_numneg = 0;
+			int n_numneg = 0;
+			for(int i=0;i<m_in;i++) if(idxm_in[i]<0) m_numneg++;
+			for(int i=0;i<n_in;i++) if(idxn_in[i]<0) n_numneg++;
+
+			this->type=MATRIX_BUCKET;
+			this->m=m_in-m_numneg;
+			this->n=n_in-n_numneg;
+			this->mode=mode_in;
+			if(this->m*this->n){
+				this->idxm=xNew<int>(this->m); 
+				this->idxn=xNew<int>(this->n); 
+				this->values=xNew<doubletype>(this->n*this->m);
+
+				if(m_numneg==0 && n_numneg==0){
+					xMemCpy(this->values,values_in,this->n*this->m);
+					xMemCpy(this->idxm,idxm_in,this->m);
+					xMemCpy(this->idxn,idxn_in,this->n);
+				}
+				else{
+					int count;
+					count =0; for(int i=0;i<m_in;i++) if(idxm_in[i]>=0) this->idxm[count++] = idxm_in[i];
+					count =0; for(int i=0;i<n_in;i++) if(idxn_in[i]>=0) this->idxn[count++] = idxn_in[i];
+					count = 0;
+					for(int i=0;i<m_in;i++){
+						if(idxm_in[i]>=0){
+							for(int j=0;j<n_in;j++){
+								if(idxn_in[j]>=0){
+									this->values[count++] = values_in[i*n_in+j];
+								}
+							}
+						}
+					}
+				}
+			}
+			else{
+				/*Set both as 0 to save time*/
+				this->m = 0;
+				this->n = 0;
+			}
+		} /*}}}*/
+		Bucket(int m_in,int* idxm_in,doubletype* values_in,InsMode mode_in){ /*{{{*/ 
+			this->Initialize();
+
+			/*Check whether we have negative indices?*/
+			int numneg = 0;
+			for(int i=0;i<m_in;i++) if(idxm_in[i]<0) numneg++;
+
+			this->type=VECTOR_BUCKET; 
+			this->m=m_in-numneg;
+			this->mode=mode_in;
+			if(this->m){
+				this->idxm=xNew<int>(this->m);
+				this->values=xNew<doubletype>(this->m);
+
+				if(numneg==0){
+					xMemCpy(this->idxm,idxm_in,this->m);
+					xMemCpy(this->values,values_in,this->m);
+				}
+				else{
+					int count = 0;
+					for(int i=0;i<m_in;i++){
+						if(idxm_in[i]>=0){
+							this->idxm[count]   = idxm_in[i];
+							this->values[count] = values_in[i];
+							count++;
+						}
+					}
+				}
+			}
+		} /*}}}*/
+		~Bucket(){ /*{{{*/
+			xDelete<int>(idxm);
+			xDelete<int>(idxn);
+			xDelete<doubletype>(values);
+		} /*}}}*/
+		void Initialize(void){ /*{{{*/
+
+			this->type=0;
+			this->m=0;
+			this->n=0;
+			this->idxm=NULL;
+			this->idxn=NULL;
+			this->values=NULL;
+			mode=INS_VAL;
+
+		} /*}}}*/
+
+		/*object virtual functions definitions:*/
+		void    Echo(){ /*{{{*/
+			_printf_("Bucket echo (cpu #"<<IssmComm::GetRank()<<")\n");
+			_printf_("bucket type: " << type << "\n");
+			_printf_("num rows: "<<this->m<<" num cols: "<<this->n << "\n");
+		} /*}}}*/
+		void    DeepEcho(){ /*{{{*/
+			int i,j;
+
+			_printf_("Bucket echo (cpu #"<<IssmComm::GetRank()<<")\n");
+			_printf_("bucket type: " << type << "\n");
+			_printf_("num rows: "<<this->m<<" num cols: "<<this->n << "\n");
+			if(type==MATRIX_BUCKET){
+				for (i=0;i<this->m;i++){
+					_printf_("row "<<this->idxm[i]<<", column indices: \n");
+					for (j=0;j<this->n;j++){
+						_printf_(" "<<this->idxn[j] << "\n");
+					}
+					_printf_("values: \n");
+					for (j=0;j<this->n;j++){
+						_printf_(" "<<this->values[m*i+j] << "\n");
+					}
+				}
+			}
+			else if(type==VECTOR_BUCKET){
+				for (i=0;i<this->m;i++){
+					_printf_("row "<<this->idxm[i]<<", value " << this->values[i] << "\n");
+				}
+			}
+			else _error_("unknown type of bucket!");
+		}
+		/*}}}*/
+		int     Id(){ /*{{{*/
+			return -1;
+		} /*}}}*/
+		int     ObjectEnum(){ /*{{{*/
+			return -1;
+		} /*}}}*/
+		Object *copy()        {/*{{{*/
+			if (this->type==MATRIX_BUCKET) return new Bucket(this->m,this->idxm,this->n,this->idxn,this->values,this->mode);
+			else if (this->type==VECTOR_BUCKET) return new Bucket(this->m,this->idxm,this->values,this->mode);
+			else _error_("No Copy of Bucket because its type is invalid."); };
+		/*}}}*/
+		void Marshall(MarshallHandle* marshallhandle){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
+
+		/*specific routines of Bucket: */
+		void SpawnBucketsPerCpu(DataSet* bucketsofcpu_i,int rank_i,int* rowranks){ /*{{{*/
+
+			/*go through our idxm index of rows this bucket owns, and spawn buckets  
+			 *if these rows belong to cpu rank_i. Use rowranks to determine this.*/
+			for(int i=0;i<m;i++){
+				if (rowranks[idxm[i]]==rank_i){
+					/*This row belongs to cpu rank_i, so spawn a bucket with this row, and add it to the bucketsofcpu_i dataset: */
+					if(type==MATRIX_BUCKET){
+						bucketsofcpu_i->AddObject(new Bucket(1,idxm+i,n,idxn,values+n*i,mode));
+					}
+					else{
+						bucketsofcpu_i->AddObject(new Bucket(1,idxm+i,values+i,mode));
+					}
+				}
+			}
+
+		}; /*}}}*/
+		int BucketType(void){ /*{{{*/
+
+			return type;
+		};
+		/*}}}*/
+		void Marshall(int** prow_indices_forcpu,int** pcol_indices_forcpu,doubletype** pvalues_forcpu,int** pmodes_forcpu){ /*{{{*/
+
+			/*intermediary: */
+			int         i;
+			int         j;
+
+			/*buffers: */
+			int        *row_indices_forcpu = NULL;
+			int        *col_indices_forcpu = NULL;
+			doubletype *values_forcpu      = NULL;
+			int        *modes_forcpu       = NULL;
+
+			/*initialize buffers: */
+			row_indices_forcpu=*prow_indices_forcpu;
+			col_indices_forcpu=*pcol_indices_forcpu;
+			values_forcpu=*pvalues_forcpu;
+			modes_forcpu=*pmodes_forcpu;
+
+			/*fill buffers with out values and indices and modes: */
+			for(i=0;i<m;i++){
+				for(j=0;j<n;j++){
+					row_indices_forcpu[i*n+j]=idxm[i];
+					col_indices_forcpu[i*n+j]=idxn[j];
+					values_forcpu[i*n+j]=values[i*n+j];
+					modes_forcpu[i*n+j]=mode;
+				}
+			}
+
+			/*increment buffer for next Bucket who will marshall his data: */
+			row_indices_forcpu+=(m*n);
+			col_indices_forcpu+=(m*n);
+			values_forcpu+=(m*n);
+			modes_forcpu+=(m*n);
+
+			/*output modified buffers: */
+			*prow_indices_forcpu=row_indices_forcpu;
+			*pcol_indices_forcpu=col_indices_forcpu;
+			*pvalues_forcpu=values_forcpu;
+			*pmodes_forcpu=modes_forcpu;
+		};
+		/*}}}*/
+		void Marshall(int** prow_indices_forcpu,doubletype** pvalues_forcpu,int** pmodes_forcpu){ /*{{{*/
+
+			/*intermediary: */
+			int         i;
+
+			/*buffers: */
+			int        *row_indices_forcpu = NULL;
+			doubletype *values_forcpu      = NULL;
+			int        *modes_forcpu       = NULL;
+
+			/*initialize buffers: */
+			row_indices_forcpu=*prow_indices_forcpu;
+			values_forcpu=*pvalues_forcpu;
+			modes_forcpu=*pmodes_forcpu;
+
+			/*fill buffers with out values and indices and modes: */
+			for(i=0;i<m;i++){
+				row_indices_forcpu[i]=idxm[i];
+				values_forcpu[i]=values[i];
+				modes_forcpu[i]=mode;
+			}
+
+			/*increment buffer for next Bucket who will marshall his data: */
+			row_indices_forcpu+=m;
+			values_forcpu+=m;
+			modes_forcpu+=m;
+
+			/*output modified buffers: */
+			*prow_indices_forcpu=row_indices_forcpu;
+			*pvalues_forcpu=values_forcpu;
+			*pmodes_forcpu=modes_forcpu;
+		};
+		/*}}}*/
+		int MarshallSize(void){ /*{{{*/
+
+			if(type==MATRIX_BUCKET){
+				return m*n;
+			}
+			else{
+				return m;
+			}
+		};
+		/*}}}*/
+};
+
+#endif  /* _BUCKET_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmAbsMat.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmAbsMat.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmAbsMat.h	(revision 27955)
@@ -0,0 +1,51 @@
+/*!\file:  IssmAbsMat.h
+ * \brief Main abstract class for the ISSM matrices.  This abstract class defines the pure virtual
+ * functions that each of its descendants need to implement, such as contructors, destructors, as well
+ * as matrix specific routines, such as SetValue, Assemple, MatMult, etc ...
+ * Descendants include among others:
+ * IssmDenseMat and IssmMpiDenseMat
+ *
+ */ 
+
+#ifndef _ISSM_ABS_MAT_H_
+#define _ISSM_ABS_MAT_H_
+
+/*Headers:*/
+#include "../toolkitsenums.h"
+#include "../../shared/Numerics/types.h"
+
+/*We need to template this class, in case we want to create Matrices that hold
+  IssmDouble* matrix or IssmPDouble* matrix. 
+  Such vectors are useful for use without or with the matlab or python
+  interface (which do not care for IssmDouble types, but only rely on
+  IssmPDouble types) */
+
+template <class doubletype> class IssmAbsVec;
+class Parameters;
+
+template <class doubletype> 
+class IssmAbsMat{
+
+	public:
+
+		/*IssmAbsMat constructors, destructors*/
+		virtual ~IssmAbsMat(){};
+
+		/*Functionality: */
+		virtual void Echo(void)=0;
+		virtual void Assemble(void)=0;
+		virtual doubletype Norm(NormMode mode)=0;
+		virtual void GetSize(int* pM,int* pN)=0;
+		virtual void GetLocalSize(int* pM,int* pN)=0;
+		virtual void MatMult(IssmAbsVec<doubletype>* X,IssmAbsVec<doubletype>* AX)=0;
+		virtual IssmAbsMat<doubletype>* Duplicate(void)=0;
+		virtual doubletype* ToSerial(void)=0;
+		virtual void SetValues(int m,int* idxm,int n,int* idxn,doubletype* values,InsMode mode)=0;
+		virtual void Convert(MatrixType type)=0;
+		virtual void SetZero(void)=0;
+		#ifndef _HAVE_WRAPPERS_
+		virtual IssmAbsVec<IssmDouble>* Solve(IssmAbsVec<IssmDouble>* pf, Parameters* parameters)=0;
+		#endif
+};
+
+#endif //#ifndef _ISSM_ABS_MAT_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmAbsVec.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmAbsVec.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmAbsVec.h	(revision 27955)
@@ -0,0 +1,57 @@
+/*!\file:  IssmAbsVec.h
+ * \brief Main abstract class for the ISSM vectors.  This abstract class defines the pure virtual
+ * functions that each of its descendants need to implement, such as contructors, destructors, as well
+ * as matrix specific routines, such as SetValue, Assemple, VecMult, etc ...
+ * Descendants include among others:
+ *	  IssmSeqVec and IssmMpiVec
+ *
+ */
+
+#ifndef _ISSM_ABS_VEC_H_
+#define _ISSM_ABS_VEC_H_
+
+/*Headers:*/
+#include "../toolkitsenums.h"
+#include "../../shared/Numerics/types.h"
+
+/*We need to template this class, in case we want to create Vectors that hold
+  IssmDouble* vector or IssmPDouble* vector.
+  Such vectors are useful for use without or with the matlab or python
+  interface (which do not care for IssmDouble types, but only rely on
+  IssmPDouble types)
+*/
+template <class doubletype>
+class IssmAbsVec{
+
+	public:
+
+		/*IssmAbsVec constructors, destructors*/
+		virtual ~IssmAbsVec(){};
+
+		/*IssmAbsVec specific routines*/
+		virtual void Echo(void)=0;
+		virtual void Assemble(void)=0;
+		virtual void SetValues(int ssize, int* list, doubletype* values, InsMode mode)=0;
+		virtual void SetValue(int dof, doubletype value, InsMode mode)=0;
+		virtual void GetValue(doubletype* pvalue,int dof)=0;
+		virtual void GetSize(int* pM)=0;
+		virtual void GetLocalSize(int* pM)=0;
+		virtual void GetLocalVector(doubletype** pvector,int** pindices)=0;
+		virtual IssmAbsVec<doubletype>* Duplicate(void)=0;
+		virtual void Set(doubletype value)=0;
+		virtual void AXPY(IssmAbsVec* X, doubletype a)=0;
+		virtual void AYPX(IssmAbsVec* X, doubletype a)=0;
+		virtual doubletype* ToMPISerial(void)=0;
+		virtual doubletype* ToMPISerial0(void)=0;
+		virtual void Shift(doubletype shift)=0;
+		virtual void Copy(IssmAbsVec* to)=0;
+		virtual doubletype Norm(NormMode mode)=0;
+		virtual void Scale(doubletype scale_factor)=0;
+		virtual doubletype Dot(IssmAbsVec* input)=0;
+		virtual void PointwiseDivide(IssmAbsVec* x,IssmAbsVec* y)=0;
+		virtual void PointwiseMult(IssmAbsVec* x,IssmAbsVec* y)=0;
+		virtual void Pow(doubletype scale_factor)=0;
+		virtual void Sum(doubletype* pvalue)=0;
+};
+
+#endif //#ifndef _ISSM_ABS_VEC_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmDenseMat.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmDenseMat.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmDenseMat.h	(revision 27955)
@@ -0,0 +1,307 @@
+/*!\file:  IssmDenseMat.h
+ * \brief implementation of an ISSM matrix which run serially (1 cpu only), which is made of a fully dense 
+ * matrix. Internally, this dense matrix is just a linear buffer of type doubletype. 
+ * This object needs to answer the API defined by the virtual functions in IssmAbsMat, 
+ * and the contructors required by IssmMat (see IssmMat.h)
+ */ 
+
+#ifndef _ISSM_DENSE_MAT_H_
+#define _ISSM_DENSE_MAT_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./IssmSeqVec.h"
+#include "./IssmToolkitUtils.h"
+#include "../../shared/shared.h"
+#include "../gsl/gslincludes.h"
+
+#include <math.h>
+
+/*}}}*/
+
+/*We need to template this class, in case we want to create Matrices that hold
+  IssmDouble* matrix or IssmPDouble* matrix. 
+  Such matrices would be useful for use without or with the matlab or python
+  interface (which do not care for IssmDouble types, but only rely on
+  IssmPDouble types)*/
+
+template <class doubletype> class IssmAbsVec;
+template <class doubletype> class IssmAbsMat;
+template <class doubletype> class IssmSeqVec;
+
+template <class doubletype> 
+class IssmDenseMat: public IssmAbsMat<doubletype>{
+
+	public:
+
+		int M,N; 
+		doubletype* matrix;  /*here, doubletype is either IssmDouble or IssmPDouble*/
+
+		/*IssmDenseMat constructors, destructors*/
+		/*IssmDenseMat(){{{*/
+		IssmDenseMat(){
+
+			this->M=0;
+			this->N=0;
+			this->matrix=NULL;
+		}
+		/*}}}*/
+		/*IssmDenseMat(int M,int N){{{*/
+		IssmDenseMat(int pM,int pN){
+
+			this->M=pM;
+			this->N=pN;
+			this->matrix=NULL;
+			if(M*N) this->matrix=xNewZeroInit<doubletype>(pM*pN);
+		}
+		/*}}}*/
+		/*IssmDenseMat(int M,int N, doubletype sparsity){{{*/
+		IssmDenseMat(int pM,int pN, doubletype sparsity){
+
+			this->M=pM;
+			this->N=pN;
+			this->matrix=NULL;
+			if(M*N) this->matrix=xNewZeroInit<doubletype>(pM*pN);
+		}
+		/*}}}*/
+		/*IssmDenseMat(int m,int n,int M,int N,int* d_nnz,int* o_nnz){{{*/
+		IssmDenseMat(int m,int n,int pM,int pN,int* d_nnz,int* o_nnz){
+
+			this->M=pM;
+			this->N=pN;
+			this->matrix=NULL;
+			if(pM*pN) this->matrix=xNewZeroInit<doubletype>(pM*pN);
+		}
+		/*}}}*/
+		/*IssmDenseMat(doubletype* serial_mat,int M,int N,doubletype sparsity){{{*/
+		IssmDenseMat(doubletype* serial_mat,int pM,int pN,doubletype sparsity){
+
+			this->M=pM;
+			this->N=pN;
+			this->matrix=NULL;
+			if(M*N){
+				this->matrix=xNewZeroInit<doubletype>(pM*pN);
+				xMemCpy<doubletype>(this->matrix,serial_mat,pM*pN);
+			}
+
+		}
+		/*}}}*/
+		/*IssmDenseMat(int M,int N, int connectivity, int numberofdofspernode){{{*/
+		IssmDenseMat(int pM,int pN, int connectivity,int numberofdofspernode){
+
+			this->M=pM;
+			this->N=pN;
+			this->matrix=NULL;
+			if(M*N) this->matrix=xNewZeroInit<doubletype>(pM*pN);
+		}
+		/*}}}*/
+		/*~IssmDenseMat(){{{*/
+		~IssmDenseMat(){
+
+			xDelete<doubletype>(this->matrix);
+			M=0;
+			N=0;
+		}
+		/*}}}*/
+
+		/*IssmAbsMat virtual functions*/
+		void Echo(void){/*{{{*/
+
+			_printf_("IssmDenseMat size " << this->M << "-" << this->N << "\n");
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					_printf_(this->matrix[N*i+j] << " ");
+				}
+				_printf_("\n");
+			}
+		}
+		/*}}}*/
+		void Assemble(void){/*{{{*/
+
+			/*do nothing*/
+
+		}
+		/*}}}*/
+		doubletype Norm(NormMode mode){/*{{{*/
+
+			doubletype norm;
+			doubletype absolute;
+			int i,j;
+
+			switch(mode){
+				case NORM_INF:
+					norm=0.;
+					for(i=0;i<this->M;i++){
+						absolute=0;
+						for(j=0;j<this->N;j++){
+							absolute+=fabs(this->matrix[N*i+j]);
+						}
+						norm=max(norm,absolute);
+					}
+					return norm;
+					break; 
+				case NORM_FROB:
+					norm=0.;
+					for(i=0;i<this->M;i++){
+						for(j=0;j<this->N;j++){
+							norm+=this->matrix[N*i+j]*this->matrix[N*i+j];
+						}
+					}
+					return sqrt(norm);
+					break; 
+
+				default:
+					_error_("unknown norm !");
+					break;
+			}
+
+			return 0.;
+		}
+		/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM=this->M;
+			*pN=this->N;
+		}
+		/*}}}*/
+		void GetLocalSize(int* pM,int* pN){/*{{{*/
+
+			*pM=this->M;
+			*pN=this->N;
+
+		}
+		/*}}}*/
+		void MatMult(IssmAbsVec<doubletype>* Xin,IssmAbsVec<doubletype>* AXin){/*{{{*/
+
+			/*We assume that the vectors coming in are of compatible type: */
+			int i,j;
+			int XM,AXM;
+			doubletype dummy;
+			IssmSeqVec<doubletype>* X=NULL;
+			IssmSeqVec<doubletype>* AX=NULL;
+
+			/*downcast X and AX: */
+			X=(IssmSeqVec<doubletype>*)Xin;
+			AX=(IssmSeqVec<doubletype>*)AXin;
+
+			/*Some checks first: */
+			X->GetSize(&XM);
+			AX->GetSize(&AXM);
+
+			if(M!=AXM)_error_("A and AX should have the same number of rows!");
+			if(N!=XM)_error_("A and X should have the same number of columns!");
+
+			for(i=0;i<M;i++){
+				dummy=0;
+				for(j=0;j<N;j++){
+					dummy+= this->matrix[N*i+j]*X->vector[j];
+				}
+				AX->vector[i]=dummy;
+			}
+
+		}
+		/*}}}*/
+		IssmDenseMat<doubletype>* Duplicate(void){/*{{{*/
+
+			doubletype dummy=0;
+
+			return new IssmDenseMat<doubletype>(this->matrix,this->M,this->N,dummy);
+
+		}
+		/*}}}*/
+		doubletype* ToSerial(void){/*{{{*/
+
+			doubletype* buffer=NULL;
+
+			if(this->M*this->N){
+				buffer=xNew<doubletype>(this->M*this->N);
+				xMemCpy<doubletype>(buffer,this->matrix,this->M*this->N);
+			}
+			return buffer;
+
+		}
+		/*}}}*/
+		void SetValues(int m,int* idxm,int n,int* idxn,doubletype* values,InsMode mode){/*{{{*/
+
+			int i,j;
+			switch(mode){
+				case ADD_VAL:
+					for(i=0;i<m;i++){
+						if(idxm[i]<0) continue;
+						for(j=0;j<n;j++){
+							if(idxn[j]<0) continue;
+							this->matrix[N*idxm[i]+idxn[j]]+=values[n*i+j];
+						}
+					}
+					break;
+				case INS_VAL:
+					for(i=0;i<m;i++){
+						if(idxm[i]<0) continue;
+						for(j=0;j<n;j++){
+							if(idxn[j]<0) continue;
+							this->matrix[N*idxm[i]+idxn[j]]=values[n*i+j];
+						}
+					}
+					break;
+				default:
+					_error_("unknown insert mode!");
+					break;
+			}
+
+		}
+		/*}}}*/
+		void Convert(MatrixType type){/*{{{*/
+
+			/*do nothing*/
+
+		}
+		/*}}}*/		
+		void SetZero(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					this->matrix[N*i+j] = 0.;
+				}
+			}
+		}/*}}}*/
+		#ifndef _HAVE_WRAPPERS_
+		IssmAbsVec<IssmDouble>* Solve(IssmAbsVec<IssmDouble>* pfin, Parameters* parameters){/*{{{*/
+
+			/*First off, we assume that the type of IssmAbsVec is IssmSeqVec. So downcast: */
+			IssmSeqVec<IssmDouble>* pf = NULL;
+			IssmSeqVec<IssmDouble> *uf = NULL;
+			IssmDouble* x=NULL;
+
+			/*Assume we are getting an IssmMpiVec in input, downcast: */
+			pf=(IssmSeqVec<IssmDouble>*)pfin;
+
+			switch(IssmSolverTypeFromToolkitOptions()){
+			#ifdef _HAVE_MUMPS_
+				case MumpsEnum: {
+					/*Assume we have a sequential vec, downcast*/
+					uf=((IssmSeqVec<IssmDouble>*)pfin)->Duplicate();
+					SeqDenseMumpsSolve(uf->vector,uf->M,uf->M, /*stiffness matrix:*/ this->matrix,this->M,this->N,this->M, /*right hand side load vector: */ pf->vector,pf->M,pf->M,parameters);
+					return uf;
+									 }
+			#endif
+			#ifdef _HAVE_GSL_
+				case GslEnum: {
+					DenseGslSolve(/*output*/ &x,/*stiffness matrix:*/ this->matrix,this->M,this->N, /*right hand side load vector: */ pf->vector,pf->M,parameters);
+					uf=new IssmSeqVec<IssmDouble>(x,this->N); xDelete(x);
+					return uf;
+								  }
+			#endif
+				default: _error_("No solver available");
+			}
+
+			return NULL;
+
+		}/*}}}*/
+		#endif
+};
+
+#endif //#ifndef _ISSM_DENSE_MAT_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmMat.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmMat.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmMat.h	(revision 27955)
@@ -0,0 +1,259 @@
+/*!\file:  IssmMat.h
+ * \brief Main Matrix class for the Issm toolkit. 
+ */ 
+
+#ifndef _ISSM_MAT_H_
+#define _ISSM_MAT_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/shared.h"
+#include "../ToolkitOptions.h"
+#include "./IssmToolkitUtils.h"
+#include "../mumps/mumpsincludes.h"
+/*}}}*/
+
+/*We need to template this class, in case we want to create Matrices that hold
+  IssmDouble* matrix or IssmPDouble* matrix. 
+  Such matrices are useful for use without or with the matlab or python
+  interface (which do not care for IssmDouble types, but only rely on
+  IssmPDouble types)
+*/
+template <class doubletype> class IssmVec;
+template <class doubletype> class IssmDenseMat;
+template <class doubletype> class IssmMpiDenseMat;
+template <class doubletype> class IssmMpiSparseMat;
+class Parameters;
+
+template <class doubletype> 
+class IssmMat{
+
+	public:
+
+		IssmAbsMat<doubletype>* matrix; /*abstract matrix, which implements object orientation*/
+
+		/*IssmMat constructors, destructors*/
+		IssmMat(){ /*{{{*/
+
+			switch(IssmMatTypeFromToolkitOptions()){
+
+				case DenseEnum: 
+					this->matrix=new IssmDenseMat<doubletype>();
+					break;
+				case MpiDenseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiDenseMat<doubletype>();
+					#else
+					_error_("MpiDense matrix requires compilation of MPI!");
+					#endif
+					break;
+				case MpiSparseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiSparseMat<doubletype>();
+					#else
+					_error_("MpiSparse matrix requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("matrix type not supported yet!");
+			}
+		}
+		/*}}}*/
+		IssmMat(int M,int N){ /*{{{*/
+
+			switch(IssmMatTypeFromToolkitOptions()){
+
+				case DenseEnum: 
+					this->matrix=new IssmDenseMat<doubletype>(M,N);
+					break;
+				case MpiDenseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiDenseMat<doubletype>(M,N);
+					#else
+					_error_("MpiDense matrix requires compilation of MPI!");
+					#endif
+					break;
+				case MpiSparseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiSparseMat<doubletype>(M,N);
+					#else
+					_error_("MpiSparse matrix requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("matrix type not supported yet!");
+			}
+		}
+		/*}}}*/
+		IssmMat(int M,int N, doubletype sparsity){ /*{{{*/
+
+			switch(IssmMatTypeFromToolkitOptions()){
+
+				case DenseEnum: 
+					this->matrix=new IssmDenseMat<doubletype>(M,N,sparsity);
+					break;
+				case MpiDenseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiDenseMat<doubletype>(M,N,sparsity);
+					#else
+					_error_("MpiDense matrix requires compilation of MPI!");
+					#endif
+					break;
+				case MpiSparseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiSparseMat<doubletype>(M,N,sparsity);
+					#else
+					_error_("MpiSparse matrix requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("matrix type not supported yet!");
+			}
+		}
+		/*}}}*/
+		IssmMat(int m,int n,int M,int N,int* d_nnz,int* o_nnz){ /*{{{*/
+
+			switch(IssmMatTypeFromToolkitOptions()){
+
+				case DenseEnum: 
+					this->matrix=new IssmDenseMat<doubletype>(m,n,M,N,d_nnz,o_nnz);
+					break;
+				case MpiDenseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiDenseMat<doubletype>(m,n,M,N,d_nnz,o_nnz);
+					#else
+					_error_("MpiDense matrix requires compilation of MPI!");
+					#endif
+					break;
+				case MpiSparseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiSparseMat<doubletype>(m,n,M,N,d_nnz,o_nnz);
+					#else
+					_error_("MpiSparse matrix requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("matrix type not supported yet!");
+			}
+		}
+		/*}}}*/
+		IssmMat(doubletype* serial_mat,int M,int N,doubletype sparsity){ /*{{{*/
+
+			switch(IssmMatTypeFromToolkitOptions()){
+
+				case DenseEnum: 
+					this->matrix=new IssmDenseMat<doubletype>(serial_mat,M,N,sparsity);
+					break;
+				case MpiDenseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiDenseMat<doubletype>(serial_mat,M,N,sparsity);
+					#else
+					_error_("MpiDense matrix requires compilation of MPI!");
+					#endif
+					break;
+				case MpiSparseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiSparseMat<doubletype>(serial_mat,M,N,sparsity);
+					#else
+					_error_("MpiSparse matrix requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("matrix type not supported yet!");
+			}
+
+		}
+		/*}}}*/
+		IssmMat(int M,int N, int connectivity, int numberofdofspernode){ /*{{{*/
+
+			switch(IssmMatTypeFromToolkitOptions()){
+
+				case DenseEnum: 
+					this->matrix=new IssmDenseMat<doubletype>(M,N,connectivity,numberofdofspernode);
+					break;
+				case MpiDenseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiDenseMat<doubletype>(M,N,connectivity,numberofdofspernode);
+					#else
+					_error_("MpiDense matrix requires compilation of MPI!");
+					#endif
+					break;
+				case MpiSparseEnum:
+					#ifdef _HAVE_MPI_
+					this->matrix=new IssmMpiSparseMat<doubletype>(M,N,connectivity,numberofdofspernode);
+					#else
+					_error_("MpiSparse matrix requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("matrix type not supported yet!");
+			}
+		}
+		/*}}}*/
+		~IssmMat(){ /*{{{*/
+			delete matrix;
+		} /*}}}*/
+
+		/*Functionality: */
+		void Echo(void){  /*{{{*/
+			matrix->Echo();
+		} /*}}}*/
+		void Assemble(void){  /*{{{*/
+			matrix->Assemble();
+		} /*}}}*/
+		doubletype Norm(NormMode mode){ /*{{{*/
+			return matrix->Norm(mode);
+		}
+		/*}}}*/
+		void GetSize(int* pM,int* pN){ /*{{{*/
+			matrix->GetSize(pM,pN);
+		} /*}}}*/
+		void GetLocalSize(int* pM,int* pN){ /*{{{*/
+			matrix->GetLocalSize(pM,pN);
+		} /*}}}*/
+		void MatMult(IssmVec<doubletype>* X,IssmVec<doubletype>* AX){ /*{{{*/
+			matrix->MatMult(X->vector,AX->vector);
+		} /*}}}*/
+		IssmMat<doubletype>* Duplicate(void){ /*{{{*/
+
+			IssmMat<doubletype>* issmmatrix=NULL;
+
+			issmmatrix=new IssmMat<doubletype>();
+			issmmatrix->matrix=this->matrix->Duplicate();
+
+			return issmmatrix;
+		} /*}}}*/
+		doubletype* ToSerial(void){/*{{{*/
+			return matrix->ToSerial();
+		}/*}}}*/
+		void SetValues(int m,int* idxm,int n,int* idxn,doubletype* values,InsMode mode){/*{{{*/
+			matrix->SetValues(m,idxm,n,idxn,values,mode);
+		}/*}}}*/
+		void Convert(MatrixType type){/*{{{*/
+			matrix->convert(type);
+		}/*}}}*/
+		void SetZero(void){/*{{{*/
+			matrix->SetZero();
+		}/*}}}*/
+		#ifndef _HAVE_WRAPPERS_
+		IssmVec<doubletype>* Solve(IssmVec<doubletype>* pf, Parameters* parameters){ /*{{{*/
+
+			IssmVec<doubletype>* outvector=NULL;
+
+			outvector=new IssmVec<doubletype>();
+
+			outvector->vector=this->matrix->Solve(pf->vector,parameters);
+
+			return outvector;
+
+		}/*}}}*/
+		#endif
+};
+
+#endif //#ifndef _ISSMMAT_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmMpiDenseMat.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmMpiDenseMat.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmMpiDenseMat.h	(revision 27955)
@@ -0,0 +1,532 @@
+/*!\file:  IssmMpiDenseMat.h
+ * \brief implementation of parallel dense ISSM matrix. Internally, the parallel dense matrix is 
+ * split in rows across each cpu. Each matrix (representing a subset of rows) on each cpu is fully 
+ * dense, and is represented by a linear buffer of type doubletype. 
+ * This object needs to answer the API defined by the virtual functions in IssmAbsMat, 
+ * and the contructors required by IssmMat (see IssmMat.h)
+ */ 
+
+#ifndef _ISSM_MPI_DENSE_MAT_H_
+#define _ISSM_MPI_DENSE_MAT_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/shared.h"
+#include "../../datastructures/datastructures.h"
+#include "../mumps/mumpsincludes.h"
+#include "./Bucket.h"
+#include "./IssmMpiVec.h"
+#include <math.h>
+
+/*}}}*/
+
+/*We need to template this class, in case we want to create Matrices that hold
+  IssmDouble* matrix or IssmPDouble* matrix. 
+  Such matrices would be useful for use without or with the matlab or python
+  interface (which do not care for IssmDouble types, but only rely on
+  IssmPDouble types)*/
+template <class doubletype> class IssmAbsMat;
+
+template <class doubletype> 
+class IssmMpiDenseMat:public IssmAbsMat<doubletype>{
+
+	public:
+
+		int M,N;  //global size
+		int m;    //local number of rows
+		doubletype* matrix;  /*here, doubletype is either IssmDouble or IssmPDouble*/
+		DataSet*    buckets;  /*here, we store buckets of values that we will Assemble into a global matrix.*/
+
+		/*IssmMpiDenseMat constructors, destructors*/
+		IssmMpiDenseMat(){/*{{{*/
+			this->M=0;
+			this->N=0;
+			this->m=0;
+			this->matrix=NULL;
+			this->buckets=new DataSet();
+		}
+		/*}}}*/
+		IssmMpiDenseMat(int Min,int Nin){/*{{{*/
+			this->Init(Min,Nin);
+		}
+		/*}}}*/
+		IssmMpiDenseMat(int pM,int pN, doubletype sparsity){/*{{{*/
+			/*no sparsity involved here, we are fully dense, so just use the previous constructor: */
+			this->Init(pM,pN);
+		}
+		/*}}}*/
+		IssmMpiDenseMat(int min,int nin,int Min,int Nin,int* d_nnz,int* o_nnz){/*{{{*/
+			/*not needed, we are fully dense!: */
+
+			this->buckets=new DataSet();
+
+			this->M=Min;
+			this->N=Nin;
+			this->m=min;
+
+			/*Initialize pointer: */
+			this->matrix=NULL;
+
+			/*Allocate: */
+			if (m*N)this->matrix=xNewZeroInit<doubletype>(this->m*N);
+		}
+		/*}}}*/
+		IssmMpiDenseMat(doubletype* serial_mat,int Min,int Nin,doubletype sparsity){/*{{{*/
+
+			/*Here, we assume that the serial_mat is local to the local cpu, and that it has 
+			 * the correct size (m rows by N colums), n determined by DetermineLocalSize: */
+			this->buckets=new DataSet();
+			this->M=Min;
+			this->N=Nin;
+			this->m=DetermineLocalSize(this->M,IssmComm::GetComm());
+
+			this->matrix=NULL;
+			if(m*N){
+				this->matrix=xNewZeroInit<doubletype>(m*N);
+				xMemCpy<doubletype>(this->matrix,serial_mat,m*N);
+			}
+		}
+		/*}}}*/
+		IssmMpiDenseMat(int pM,int pN, int connectivity,int numberofdofspernode){/*{{{*/
+			/*not needed, we are fully dense!: */
+			this->Init(pM,pN);
+		}
+		/*}}}*/
+		~IssmMpiDenseMat(){/*{{{*/
+			xDelete<doubletype>(this->matrix);
+			M=0;
+			N=0;
+			m=0;
+			delete this->buckets;
+		}
+		/*}}}*/
+		void Init(int Min,int Nin){/*{{{*/
+
+			this->buckets=new DataSet();
+
+			this->M=Min;
+			this->N=Nin;
+
+			/*Figure out local number of rows: */
+			this->m=DetermineLocalSize(this->M,IssmComm::GetComm());
+
+			/*Initialize pointer: */
+			this->matrix=NULL;
+
+			/*Allocate: */
+			if (m*N)this->matrix=xNewZeroInit<doubletype>(this->m*N);
+		}
+		/*}}}*/
+
+		/*IssmMpiDenseMat specific routines */
+		void Echo(void){/*{{{*/
+
+			int my_rank;
+			int i,j,k;
+
+			/*Do a synchronized dump across all the rows: */
+			my_rank=IssmComm::GetRank();
+			for(i=0;i<IssmComm::GetSize();i++){
+				if (my_rank==i){
+					_printf_("cpu " << i << " #rows: " << this->m << "\n");
+					for (j=0;j<this->m;j++){
+						_printf_("row " << j << ":");
+						for (k=0;k<this->N;k++){
+							if(this->matrix[j*this->N+k]!=0)_printf_("(" << k << "," << this->matrix[j*this->N+k] << ") ");
+						}
+						_printf_("\n");
+					}
+				}
+				ISSM_MPI_Barrier(IssmComm::GetComm());
+			}
+
+		}
+		/*}}}*/
+		void Assemble(){/*{{{*/
+
+			int           i,j;
+
+			int         *RowRank            = NULL;
+			int           num_procs;
+
+			int        *row_indices_forcpu = NULL;
+			int        *col_indices_forcpu = NULL;
+			int        *modes_forcpu       = NULL;
+			doubletype *values_forcpu      = NULL;
+			int         *numvalues_forcpu   = NULL;
+			DataSet     **bucketsforcpu       = NULL;
+
+			int        **row_indices_fromcpu = NULL;
+			int        **col_indices_fromcpu = NULL;
+			int        **modes_fromcpu       = NULL;
+			doubletype **values_fromcpu      = NULL;
+			int         *numvalues_fromcpu   = NULL;
+
+			int           lower_row;
+			int           upper_row;
+			int*          sendcnts            = NULL;
+			int*          displs              = NULL;
+			int           count               = 0;
+
+			/*some communicator info: */
+			num_procs=IssmComm::GetSize();
+			ISSM_MPI_Comm comm=IssmComm::GetComm();
+
+			/*First, make a vector of size M, which for each row between 0 and M-1, tells which cpu this row belongs to: */
+			RowRank=DetermineRowRankFromLocalSize(M,m,comm);
+
+			/*Now, sort out our dataset of buckets according to cpu ownership of rows: {{{*/
+			bucketsforcpu=xNew<DataSet*>(num_procs);
+
+			for(i=0;i<num_procs;i++){
+				DataSet* bucketsofcpu_i=new DataSet();
+				for (j=0;j<buckets->Size();j++){
+					Bucket<doubletype>* bucket=(Bucket<doubletype>*)buckets->GetObjectByOffset(j);
+					bucket->SpawnBucketsPerCpu(bucketsofcpu_i,i,RowRank);
+				}
+				bucketsforcpu[i]=bucketsofcpu_i;
+			}
+			/*}}}*/
+
+			/*Recap, each cpu has num_procs datasets of buckets. For a certain cpu j, for a given dataset i, the buckets this  {{{
+			 * dataset owns correspond to rows that are owned by cpu i, not j!. Out of all the buckets we own, make row,col,value,insert_mode 
+			 * vectors that will be shipped around the cluster: */
+			this->BucketsBuildScatterBuffers(&numvalues_forcpu,&row_indices_forcpu,&col_indices_forcpu,&values_forcpu,&modes_forcpu,bucketsforcpu,num_procs);
+			/*}}}*/
+
+			/*Now, we need to allocate on each cpu arrays to receive data from all the other cpus. To know what we need to allocate, we need  {{{
+			 *some scatter calls: */
+			numvalues_fromcpu   = xNew<int>(num_procs);
+			for(i=0;i<num_procs;i++){
+				ISSM_MPI_Scatter(numvalues_forcpu,1,ISSM_MPI_INT,numvalues_fromcpu+i,1,ISSM_MPI_INT,i,comm);
+			}
+
+			row_indices_fromcpu=xNew<int*>(num_procs);
+			col_indices_fromcpu=xNew<int*>(num_procs);
+			values_fromcpu=xNew<doubletype*>(num_procs);
+			modes_fromcpu=xNew<int*>(num_procs);
+			for(i=0;i<num_procs;i++){
+				int size=numvalues_fromcpu[i];
+				if(size){
+					row_indices_fromcpu[i]=xNew<int>(size);
+					col_indices_fromcpu[i]=xNew<int>(size);
+					values_fromcpu[i]=xNew<doubletype>(size);
+					modes_fromcpu[i]=xNew<int>(size);
+				}
+				else{
+					row_indices_fromcpu[i]=NULL;
+					col_indices_fromcpu[i]=NULL;
+					values_fromcpu[i]=NULL;
+					modes_fromcpu[i]=NULL;
+				}
+			}
+			/*}}}*/
+
+			/*Scatter values around: {{{*/
+			/*Now, to scatter values across the cluster, we need sendcnts and displs. Our sendbufs have been built by BucketsBuildScatterBuffers, with a stride given 
+			 * by numvalues_forcpu. Get this ready to go before starting the scatter itslef. For reference, here is the ISSM_MPI_Scatterv prototype: 
+			 * int ISSM_MPI_Scatterv( void *sendbuf, int *sendcnts, int *displs, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcnt, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm) :*/
+			sendcnts=xNew<int>(num_procs);
+			displs=xNew<int>(num_procs);
+			count=0;
+			for(i=0;i<num_procs;i++){
+				sendcnts[i]=numvalues_forcpu[i];
+				displs[i]=count;
+				count+=numvalues_forcpu[i];
+			}
+
+			for(i=0;i<num_procs;i++){
+				ISSM_MPI_Scatterv( row_indices_forcpu, sendcnts, displs, ISSM_MPI_INT, row_indices_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_INT, i, comm);
+				ISSM_MPI_Scatterv( col_indices_forcpu, sendcnts, displs, ISSM_MPI_INT, col_indices_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_INT, i, comm);
+				ISSM_MPI_Scatterv( values_forcpu, sendcnts, displs, ISSM_MPI_DOUBLE, values_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_DOUBLE, i, comm);
+				ISSM_MPI_Scatterv( modes_forcpu, sendcnts, displs, ISSM_MPI_INT, modes_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_INT, i, comm);
+			}
+			/*}}}*/
+
+			/*Plug values into global matrix: {{{*/
+			GetOwnershipBoundariesFromRange(&lower_row,&upper_row,m,comm);
+			for(i=0;i<num_procs;i++){
+				int  numvalues=numvalues_fromcpu[i];
+				int* rows=row_indices_fromcpu[i];
+				int* cols=col_indices_fromcpu[i];
+				doubletype* values=values_fromcpu[i];
+				int* mods=modes_fromcpu[i];
+
+				for(j=0;j<numvalues;j++){
+					if(mods[j]==ADD_VAL) *(matrix+N*(rows[j]-lower_row)+cols[j])+=values[j];
+					else *(matrix+N*(rows[j]-lower_row)+cols[j])=values[j];
+				}
+			}
+			/*}}}*/
+
+			/*Free resources:{{{*/
+			xDelete<int>(RowRank);
+			xDelete<int>(row_indices_forcpu);
+			xDelete<int>(col_indices_forcpu);
+			xDelete<int>(modes_forcpu);
+			xDelete<doubletype>(values_forcpu);
+			xDelete<int>(numvalues_forcpu);
+
+			for(i=0;i<num_procs;i++){
+				DataSet* buckets=bucketsforcpu[i];
+				delete buckets;
+			}
+			xDelete<DataSet*>(bucketsforcpu);
+
+			for(i=0;i<num_procs;i++){
+				int* rows=row_indices_fromcpu[i];
+				int* cols=col_indices_fromcpu[i];
+				int* modes=modes_fromcpu[i];
+				doubletype* values=values_fromcpu[i];
+
+				xDelete<int>(rows);
+				xDelete<int>(cols);
+				xDelete<int>(modes);
+				xDelete<doubletype>(values);
+			}
+			xDelete<int*>(row_indices_fromcpu);
+			xDelete<int*>(col_indices_fromcpu);
+			xDelete<int*>(modes_fromcpu);
+			xDelete<doubletype*>(values_fromcpu);
+			xDelete<int>(numvalues_fromcpu);
+
+			xDelete<int>(sendcnts);
+			xDelete<int>(displs);
+			/*}}}*/
+
+		}
+		/*}}}*/
+		doubletype Norm(NormMode mode){/*{{{*/
+
+			doubletype norm,local_norm;
+			doubletype absolute;
+			int i,j;
+
+			switch(mode){
+				case NORM_INF:
+					local_norm=0.;
+					for(i=0;i<this->m;i++){
+						absolute=0;
+						for(j=0;j<this->N;j++){
+							absolute+=fabs(this->matrix[N*i+j]);
+						}
+						local_norm=max(local_norm,absolute);
+					}
+					ISSM_MPI_Reduce(&local_norm, &norm, 1, ISSM_MPI_DOUBLE, ISSM_MPI_MAX, 0, IssmComm::GetComm());
+					ISSM_MPI_Bcast(&norm,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+					return norm;
+					break; 
+				case NORM_FROB:
+					local_norm=0.;
+					for(i=0;i<this->m;i++){
+						for(j=0;j<this->N;j++){
+							local_norm+=this->matrix[N*i+j]*this->matrix[N*i+j];
+						}
+					}
+					ISSM_MPI_Reduce(&local_norm, &norm, 1, ISSM_MPI_DOUBLE, ISSM_MPI_SUM, 0, IssmComm::GetComm());
+					ISSM_MPI_Bcast(&norm,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+					return sqrt(norm);
+					break; 
+
+				default:
+					_error_("unknown norm !");
+					break;
+			}
+
+			return 0.;
+		}
+		/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM=M;
+			*pN=N;
+		}
+		/*}}}*/
+		void GetLocalSize(int* pM,int* pN){/*{{{*/
+			*pM=m;
+			*pN=N;
+		}
+		/*}}}*/
+		void MatMult(IssmAbsVec<doubletype>* Xin,IssmAbsVec<doubletype>* AXin){/*{{{*/
+
+			int         i,j;
+			doubletype *X_serial  = NULL;
+
+			/*A check on the types: */
+			if(IssmVecTypeFromToolkitOptions()!=MpiEnum)_error_("MatMult operation only possible with 'mpi' vectors");
+
+			/*Now that we are sure, cast vectors: */
+			IssmMpiVec<doubletype>* X=(IssmMpiVec<doubletype>*)Xin;
+			IssmMpiVec<doubletype>* AX=(IssmMpiVec<doubletype>*)AXin;
+
+			/*Serialize input Xin: */
+			X_serial=X->ToMPISerial();
+
+			/*Every cpu has a serial version of the input vector. Use it to do the Matrix-Vector multiply 
+			 *locally and plug it into AXin: */
+			for(i=0;i<this->m;i++){
+				for(j=0;j<this->N;j++){
+					AX->vector[i]+=this->matrix[i*N+j]*X_serial[j];
+				}
+			}
+
+			/*Free resources: */
+			xDelete<doubletype>(X_serial);
+		}
+		/*}}}*/
+		IssmMpiDenseMat<doubletype>* Duplicate(void){/*{{{*/
+
+			IssmMpiDenseMat<doubletype>* dup=new IssmMpiDenseMat<doubletype>(this->matrix,this->M,this->N,0);
+			return dup;
+
+		}
+		/*}}}*/
+		doubletype* ToSerial(void){/*{{{*/
+			_error_("not supported yet!");
+		}
+		/*}}}*/
+		void SetValues(int min,int* idxm,int nin,int* idxn,doubletype* values,InsMode mode){/*{{{*/
+
+			/*we need to store all the values we collect here in order to Assemble later. 
+			 * Indeed, the values we are collecting here most of the time will not belong 
+			 * to us, but to another part of the matrix on another cpu: */
+			_assert_(buckets);
+
+			buckets->AddObject(new Bucket<doubletype>(min,idxm,nin,idxn,values,mode));
+
+		}
+		/*}}}*/
+		void SetZero(void){/*{{{*/
+			for(int i=0;i<this->m*this->N;i++) this->matrix[i] = 0.;
+		}/*}}}*/
+		void Convert(MatrixType type){/*{{{*/
+			_error_("not supported yet!");
+		}
+		/*}}}*/		
+		void BucketsBuildScatterBuffers(int** pnumvalues_forcpu,int** prow_indices_forcpu,int** pcol_indices_forcpu,doubletype** pvalues_forcpu,int** pmodes_forcpu,DataSet** bucketsforcpu,int num_procs){/*{{{*/
+
+			/*intermediary: */
+			int         i,j;
+			int         count                   = 0;
+			int         total_size              = 0;
+			int        *temp_row_indices_forcpu = NULL;
+			int        *temp_col_indices_forcpu = NULL;
+			doubletype *temp_values_forcpu      = NULL;
+			int        *temp_modes_forcpu       = NULL;
+
+			/*output: */
+			int        *numvalues_forcpu        = NULL;
+			int        *row_indices_forcpu      = NULL;
+			int        *col_indices_forcpu      = NULL;
+			doubletype *values_forcpu           = NULL;
+			int        *modes_forcpu            = NULL;
+
+			/*figure out size of buffers per cpu: */
+
+			numvalues_forcpu=xNew<int>(num_procs);
+			for(i=0;i<num_procs;i++){
+				DataSet    *buckets            = bucketsforcpu[i];
+
+				count=0;
+				for(j=0;j<buckets->Size();j++){
+					Bucket<doubletype>* bucket =(Bucket<doubletype>*)buckets->GetObjectByOffset(j);
+					count+=bucket->MarshallSize();
+				}
+
+				numvalues_forcpu[i]=count;
+			}
+
+			/*now, figure out size of  total buffers (for all cpus!): */
+			count=0;
+			for(i=0;i<num_procs;i++){
+				count+=numvalues_forcpu[i];
+			}
+			total_size=count;
+
+			/*Allocate buffers: */
+			row_indices_forcpu = xNew<int>(total_size);
+			col_indices_forcpu = xNew<int>(total_size);
+			values_forcpu = xNew<doubletype>(total_size);
+			modes_forcpu = xNew<int>(total_size);
+
+			/*we are going to march through the buffers, and marshall data onto them, so in order to not
+			 *lose track of where these buffers are located in memory, we are going to work using copies 
+			 of them: */
+			temp_row_indices_forcpu=row_indices_forcpu;
+			temp_col_indices_forcpu=col_indices_forcpu;
+			temp_values_forcpu=values_forcpu;
+			temp_modes_forcpu=modes_forcpu;
+
+			/*Fill buffers: */
+			for(i=0;i<num_procs;i++){
+				DataSet    *buckets            = bucketsforcpu[i];
+				for(j=0;j<buckets->Size();j++){
+					Bucket<doubletype>* bucket =(Bucket<doubletype>*)buckets->GetObjectByOffset(j);
+					bucket->Marshall(&temp_row_indices_forcpu,&temp_col_indices_forcpu,&temp_values_forcpu,&temp_modes_forcpu); //pass in the address of the buffers, so as to have the Marshall routine increment them.
+				}
+			}
+
+			/*sanity check: */
+			if (temp_row_indices_forcpu!=row_indices_forcpu+total_size)_error_("problem with marshalling of buckets");
+			if (temp_col_indices_forcpu!=col_indices_forcpu+total_size)_error_("problem with marshalling of buckets");
+			if (temp_values_forcpu!=values_forcpu+total_size)_error_("problem with marshalling of buckets");
+			if (temp_modes_forcpu!=modes_forcpu+total_size)_error_("problem with marshalling of buckets");
+
+			/*output buffers: */
+			*pnumvalues_forcpu   = numvalues_forcpu;
+			*prow_indices_forcpu = row_indices_forcpu;
+			*pcol_indices_forcpu = col_indices_forcpu;
+			*pvalues_forcpu      = values_forcpu;
+			*pmodes_forcpu       = modes_forcpu;
+		}
+		/*}}}*/		
+		#ifndef _HAVE_WRAPPERS_
+		/*Solve{{{*/
+		IssmAbsVec<IssmDouble>* Solve(IssmAbsVec<IssmDouble>* pfin, Parameters* parameters){
+
+			/*output: */
+			IssmMpiVec<IssmDouble>* uf=NULL;
+			IssmMpiVec<IssmDouble>* pf=NULL;
+
+			/*Assume we are getting an IssmMpiVec in input, downcast: */
+			pf=(IssmMpiVec<IssmDouble>*)pfin;
+
+			switch(IssmSolverTypeFromToolkitOptions()){
+				case MumpsEnum: {
+					/*Initialize output: */
+					uf=pf->Duplicate();
+					#ifdef _HAVE_MUMPS_
+					MpiDenseMumpsSolve(/*output*/ uf->vector,uf->M,uf->m, /*stiffness matrix:*/ this->matrix,this->M,this->N,this->m, /*right hand side load vector: */ pf->vector,pf->M,pf->m,parameters);
+					#else
+					_error_("IssmMpiDenseMat solver requires MUMPS solver");
+					#endif
+					return (IssmAbsVec<IssmDouble>*)uf;
+									 }
+				case GslEnum: {
+
+					IssmDouble* x=NULL;
+					#ifdef _HAVE_GSL_
+
+					DenseGslSolve(/*output*/ &x,/*stiffness matrix:*/ this->matrix,this->M,this->N, /*right hand side load vector: */ pf->vector,pf->M,parameters);
+
+					uf=new IssmMpiVec<IssmDouble>(x,this->N); xDelete(x);
+
+					return (IssmAbsVec<IssmDouble>*)uf;
+					#else
+					_error_("GSL support not compiled in!");
+					#endif
+								  }
+				default:
+					_error_("solver type not supported yet!");
+			}
+
+		}/*}}}*/
+		#endif
+};
+
+#endif //#ifndef _ISSM_MPI_DENSE_MAT_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmMpiSparseMat.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmMpiSparseMat.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmMpiSparseMat.h	(revision 27955)
@@ -0,0 +1,564 @@
+/*!\file:  IssmMpiSparseMat.h
+ * \brief implementation of parallel sparse ISSM matrix. Internally, the parallel sparse matrix is 
+ * split in rows across each cpu. Locally, on each cpu, the local matrix is represented by a vector of sparse rows.
+ * This object needs to answer the API defined by the virtual functions in IssmAbsMat, 
+ * and the contructors required by IssmMat (see IssmMat.h)
+ */ 
+
+#ifndef _ISSM_MPI_SPARSE_MAT_H_
+#define _ISSM_MPI_SPARSE_MAT_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../datastructures/datastructures.h"
+#include "../../shared/shared.h"
+#include "../mumps/mumpsincludes.h"
+#include "./Bucket.h"
+#include "./IssmMpiVec.h"
+#include "./SparseRow.h"
+#include <math.h>
+/*}}}*/
+
+/*We need to template this class, in case we want to create Matrices that hold
+  IssmDouble* matrix or IssmPDouble* matrix. 
+  Such matrices would be useful for use without or with the matlab or python
+  interface (which do not care for IssmDouble types, but only rely on
+  IssmPDouble types)*/
+
+template <class doubletype> class IssmAbsMat;
+
+template <class doubletype> 
+class IssmMpiSparseMat:public IssmAbsMat<doubletype>{
+
+	public:
+
+		int M,N;  //global size
+		int m;    //local number of rows
+		SparseRow<doubletype>** matrix;  /*here, doubletype is either IssmDouble or IssmPDouble*/
+		DataSet*    buckets;  /*here, we store buckets of values that we will Assemble into a global matrix.*/
+		/*IssmMpiSparseMat constructors, destructors*/
+		IssmMpiSparseMat(){/*{{{*/
+			this->M=0;
+			this->N=0;
+			this->m=0;
+			this->matrix=NULL;
+			this->buckets=new DataSet();
+		}
+		/*}}}*/
+		IssmMpiSparseMat(int Min,int Nin){/*{{{*/
+			this->Init(Min,Nin);
+		}
+		/*}}}*/
+		IssmMpiSparseMat(int pM,int pN, doubletype sparsity){/*{{{*/
+			/*no sparsity involved here, the sparsity pattern is resolve during the assemble phase: */
+			this->Init(pM,pN);
+		}
+		/*}}}*/
+		IssmMpiSparseMat(int min,int nin,int Min,int Nin,int* d_nnz,int* o_nnz){/*{{{*/
+
+			int i;
+
+			/*no sparsity involved here, the sparsity pattern is resolved at the assemble phase: */
+			this->buckets=new DataSet();
+
+			this->M=Min;
+			this->N=Nin;
+			this->m=min;
+
+			/*Initialize pointer: */
+			this->matrix=NULL;
+
+			/*Allocate: */
+			if (m*N){
+				this->matrix=xNew<SparseRow<doubletype>*>(m);
+				for(i=0;i<m;i++){
+					this->matrix[i]=new SparseRow<doubletype>(N);
+				}
+			}
+		}
+		/*}}}*/
+		IssmMpiSparseMat(int pM,int pN, int connectivity,int numberofdofspernode){/*{{{*/
+			/*this is not needed, sparsity pattern is resolved at assemble phase: */
+			this->Init(pM,pN);
+		}
+		/*}}}*/
+		void Init(int Min,int Nin){/*{{{*/
+
+			this->buckets=new DataSet();
+
+			this->M=Min;
+			this->N=Nin;
+
+			/*Figure out local number of rows: */
+			this->m=DetermineLocalSize(this->M,IssmComm::GetComm());
+
+			/*Initialize pointer: */
+			this->matrix=NULL;
+
+			/*Allocate: */
+			if (m*N){
+				this->matrix=xNew<SparseRow<doubletype>*>(m);
+				for(int i=0;i<m;i++){
+					this->matrix[i]=new SparseRow<doubletype>(N);
+				}
+			}
+		}
+		/*}}}*/
+		~IssmMpiSparseMat(){/*{{{*/
+			if(m*N){
+				for(int i=0;i<m;i++){
+					delete this->matrix[i];
+				}
+				xDelete<SparseRow<doubletype>*>(this->matrix);
+			}
+			this->M=0;
+			this->N=0;
+			this->m=0;
+			delete this->buckets;
+		}
+		/*}}}*/
+
+		/*IssmMpiSparseMat specific routines */
+		void Echo(void){/*{{{*/
+
+			/*Do a synchronized dump across all the rows: */
+			int my_rank=IssmComm::GetRank();
+			for(int i=0;i<IssmComm::GetSize();i++){
+				if(my_rank==i){
+					_printf_("cpu " << i << " #rows: " << this->m << "\n");
+					for(int j=0;j<this->m;j++){
+						_printf_("row " << j << ":");
+						this->matrix[j]->Echo();
+						_printf_("\n");
+					}
+				}
+				ISSM_MPI_Barrier(IssmComm::GetComm());
+			}
+
+		}
+		/*}}}*/
+		void Assemble(){/*{{{*/
+
+			int         *RowRank = NULL;
+			int         *row_indices_forcpu  = NULL;
+			int         *col_indices_forcpu  = NULL;
+			int         *modes_forcpu        = NULL;
+			doubletype  *values_forcpu       = NULL;
+			int         *numvalues_forcpu    = NULL;
+			DataSet    **bucketsforcpu       = NULL;
+			int        **row_indices_fromcpu = NULL;
+			int        **col_indices_fromcpu = NULL;
+			int        **modes_fromcpu       = NULL;
+			doubletype **values_fromcpu      = NULL;
+			int         *numvalues_fromcpu   = NULL;
+			int          lower_row;
+			int          upper_row;
+			int         *sendcnts = NULL;
+			int         *displs   = NULL;
+			int          this_row_numvalues;
+			int         *this_row_cols       = NULL;
+			int         *this_row_mods       = NULL;
+			int         *numvalues_perrow    = NULL;
+
+			doubletype **values_perrow       = NULL;
+			int        **cols_perrow         = NULL;
+			int        **mods_perrow         = NULL;
+			int         *counters_perrow     = NULL;
+
+			/*Early exit: */
+			if(this->M*this->N==0) return;
+
+			/*some communicator info: */
+			int num_procs=IssmComm::GetSize();
+			ISSM_MPI_Comm comm=IssmComm::GetComm();
+
+			/*First, make a vector of size M, which for each row between 0 and M-1, tells which cpu this row belongs to: */
+			RowRank=DetermineRowRankFromLocalSize(M,m,comm);
+
+			/*Now, sort out our dataset of buckets according to cpu ownership of rows*/
+			bucketsforcpu=xNew<DataSet*>(num_procs);
+			for(int i=0;i<num_procs;i++){
+				DataSet* bucketsofcpu_i=new DataSet();
+				for(int j=0;j<buckets->Size();j++){
+					Bucket<doubletype>* bucket=(Bucket<doubletype>*)buckets->GetObjectByOffset(j);
+					bucket->SpawnBucketsPerCpu(bucketsofcpu_i,i,RowRank);
+				}
+				bucketsforcpu[i]=bucketsofcpu_i;
+			}
+
+			/*Recap, each cpu has num_procs datasets of buckets. For a certain cpu j, for a given dataset i, the buckets this 
+			 * dataset owns correspond to rows that are owned by cpu i, not j!. Out of all the buckets we own, make row,col,value,insert_mode 
+			 * vectors that will be shipped around the cluster: */
+			this->BucketsBuildScatterBuffers(&numvalues_forcpu,&row_indices_forcpu,&col_indices_forcpu,&values_forcpu,&modes_forcpu,bucketsforcpu,num_procs);
+
+			/*Now, we need to allocate on each cpu arrays to receive data from all the other cpus. To know what we need to allocate, we need 
+			 *some scatter calls: */
+			numvalues_fromcpu   = xNew<int>(num_procs);
+			for(int i=0;i<num_procs;i++) ISSM_MPI_Scatter(numvalues_forcpu,1,ISSM_MPI_INT,numvalues_fromcpu+i,1,ISSM_MPI_INT,i,comm);
+
+			row_indices_fromcpu=xNew<int*>(num_procs);
+			col_indices_fromcpu=xNew<int*>(num_procs);
+			values_fromcpu=xNew<doubletype*>(num_procs);
+			modes_fromcpu=xNew<int*>(num_procs);
+			for(int i=0;i<num_procs;i++){
+				int size=numvalues_fromcpu[i];
+				if(size){
+					row_indices_fromcpu[i]=xNew<int>(size);
+					col_indices_fromcpu[i]=xNew<int>(size);
+// AD performance is sensitive to calls to ensurecontiguous.
+// Providing "t" will cause ensurecontiguous to be called.
+#ifdef _HAVE_AD_
+					values_fromcpu[i]=xNew<doubletype>(size,"t");
+#else
+					values_fromcpu[i]=xNew<doubletype>(size);
+#endif
+					modes_fromcpu[i]=xNew<int>(size);
+				}
+				else{
+					row_indices_fromcpu[i] = NULL;
+					col_indices_fromcpu[i] = NULL;
+					values_fromcpu[i]      = NULL;
+					modes_fromcpu[i]       = NULL;
+				}
+			}
+
+			/*Scatter values around*/
+			/*Now, to scatter values across the cluster, we need sendcnts and displs. Our sendbufs have been built by BucketsBuildScatterBuffers, with a stride given 
+			 * by numvalues_forcpu. Get this ready to go before starting the scatter itslef. For reference, here is the ISSM_MPI_Scatterv prototype: 
+			 * int ISSM_MPI_Scatterv( void *sendbuf, int *sendcnts, int *displs, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcnt, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm) :*/
+			sendcnts=xNew<int>(num_procs);
+			displs=xNew<int>(num_procs);
+			int count=0;
+			for(int i=0;i<num_procs;i++){
+				sendcnts[i]=numvalues_forcpu[i];
+				displs[i]=count;
+				count+=numvalues_forcpu[i];
+			}
+
+			for(int i=0;i<num_procs;i++){
+				ISSM_MPI_Scatterv( row_indices_forcpu, sendcnts, displs, ISSM_MPI_INT, row_indices_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_INT, i, comm);
+				ISSM_MPI_Scatterv( col_indices_forcpu, sendcnts, displs, ISSM_MPI_INT, col_indices_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_INT, i, comm);
+				ISSM_MPI_Scatterv( values_forcpu, sendcnts, displs, ISSM_MPI_DOUBLE, values_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_DOUBLE, i, comm);
+				ISSM_MPI_Scatterv( modes_forcpu, sendcnts, displs, ISSM_MPI_INT, modes_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_INT, i, comm);
+			}
+
+			/*Plug values into global matrix. To do so, we are going to first figure out how many overall values each sparse row is going to get, then we fill up these values, and give it to each sparse row*/
+			GetOwnershipBoundariesFromRange(&lower_row,&upper_row,m,comm);
+
+			/*Figure out how many values each row is going to get: */
+			numvalues_perrow=xNewZeroInit<int>(this->m);
+			for(int i=0;i<num_procs;i++){ 
+				int  numvalues=numvalues_fromcpu[i];
+				int* rows=row_indices_fromcpu[i];
+				for(int j=0;j<numvalues;j++)numvalues_perrow[rows[j]-lower_row]++;
+			}
+
+			/*Allocate all the values, cols and mods from each cpu: */
+			values_perrow=xNew<doubletype*>(this->m);
+			cols_perrow=xNew<int*>(this->m);
+			mods_perrow=xNew<int*>(this->m);
+			counters_perrow=xNewZeroInit<int>(this->m);
+
+			for(int i=0;i<this->m;i++){
+				values_perrow[i]=xNewZeroInit<doubletype>(numvalues_perrow[i]);
+				cols_perrow[i]=xNewZeroInit<int>(numvalues_perrow[i]);
+				mods_perrow[i]=xNewZeroInit<int>(numvalues_perrow[i]);
+			}
+
+			/*collect:*/
+			for(int i=0;i<num_procs;i++){
+				int  numvalues=numvalues_fromcpu[i];
+				int* rows=row_indices_fromcpu[i];
+				int* cols=col_indices_fromcpu[i];
+				doubletype* values=values_fromcpu[i];
+				int* mods=modes_fromcpu[i];
+				for(int j=0;j<numvalues;j++){
+					int row=rows[j]-lower_row;
+					int counter=counters_perrow[row];
+					values_perrow[row][counter]=values[j];
+					cols_perrow[row][counter]=cols[j];
+					mods_perrow[row][counter]=mods[j];
+					counter=counters_perrow[row]++;
+				}
+			}
+
+			/*Plug into matrix: */
+			for(int i=0;i<this->m;i++) this->matrix[i]->SetValues(numvalues_perrow[i],cols_perrow[i],values_perrow[i],mods_perrow[i]);
+
+			/*Free resources:*/
+			xDelete<int>(numvalues_perrow);
+			xDelete<int>(RowRank);
+			xDelete<int>(row_indices_forcpu);
+			xDelete<int>(col_indices_forcpu);
+			xDelete<int>(modes_forcpu);
+			xDelete<doubletype>(values_forcpu);
+			xDelete<int>(numvalues_forcpu);
+			for(int i=0;i<num_procs;i++){
+				DataSet* buckets=bucketsforcpu[i];
+				delete buckets;
+			}
+			xDelete<DataSet*>(bucketsforcpu);
+			for(int i=0;i<num_procs;i++){
+				int* rows=row_indices_fromcpu[i];
+				int* cols=col_indices_fromcpu[i];
+				int* modes=modes_fromcpu[i];
+				doubletype* values=values_fromcpu[i];
+				xDelete<int>(rows);
+				xDelete<int>(cols);
+				xDelete<int>(modes);
+				xDelete<doubletype>(values);
+			}
+			xDelete<int*>(row_indices_fromcpu);
+			xDelete<int*>(col_indices_fromcpu);
+			xDelete<int*>(modes_fromcpu);
+			xDelete<doubletype*>(values_fromcpu);
+			xDelete<int>(numvalues_fromcpu);
+			xDelete<int>(sendcnts);
+			xDelete<int>(displs);
+			for(int i=0;i<this->m;i++){
+				doubletype* values=values_perrow[i]; xDelete<doubletype>(values);
+				int* cols=cols_perrow[i]; xDelete<int>(cols);
+				int* mods=mods_perrow[i]; xDelete<int>(mods);
+			}
+			xDelete<int>(counters_perrow);
+			xDelete<doubletype*>(values_perrow);
+			xDelete<int*>(cols_perrow);
+			xDelete<int*>(mods_perrow);
+		}/*}}}*/
+		doubletype Norm(NormMode mode){/*{{{*/
+
+			doubletype norm,local_norm;
+			doubletype absolute;
+			int i;
+
+			switch(mode){
+				case NORM_INF:
+					local_norm=0;
+					for(i=0;i<this->m;i++){
+						local_norm=max(local_norm,this->matrix[i]->Norm(mode));
+					}
+					ISSM_MPI_Reduce(&local_norm, &norm, 1, ISSM_MPI_DOUBLE, ISSM_MPI_MAX, 0, IssmComm::GetComm());
+					ISSM_MPI_Bcast(&norm,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+					return norm;
+					break; 
+				case NORM_FROB:
+					local_norm=0;
+					for(i=0;i<this->m;i++){
+						local_norm+=this->matrix[i]->Norm(mode);
+					}
+					ISSM_MPI_Reduce(&local_norm, &norm, 1, ISSM_MPI_DOUBLE, ISSM_MPI_SUM, 0, IssmComm::GetComm());
+					ISSM_MPI_Bcast(&norm,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+					return sqrt(norm);
+					break; 
+
+				default:
+					_error_("unknown norm !");
+					break;
+			}
+
+			return 0.;
+		}
+		/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM=M;
+			*pN=N;
+		}
+		/*}}}*/
+		void GetLocalSize(int* pM,int* pN){/*{{{*/
+			*pM=m;
+			*pN=N;
+		}
+		/*}}}*/
+		void MatMult(IssmAbsVec<doubletype>* Xin,IssmAbsVec<doubletype>* AXin){/*{{{*/
+
+			/*A check on the types: */
+			if(IssmVecTypeFromToolkitOptions()!=MpiEnum)_error_("MatMult operation only possible with 'mpi' vectors");
+
+			/*Now that we are sure, cast vectors: */
+			IssmMpiVec<doubletype>* X=(IssmMpiVec<doubletype>*)Xin;
+			IssmMpiVec<doubletype>* AX=(IssmMpiVec<doubletype>*)AXin;
+
+			/*Serialize input Xin: */
+			doubletype* X_serial=X->ToMPISerial();
+
+			/*Every cpu has a serial version of the input vector. Use it to do the Matrix-Vector multiply 
+			 *locally and plug it into AXin: */
+			for(int i=0;i<this->m;i++){
+				AX->vector[i]=this->matrix[i]->Mult(X_serial);
+			}
+
+			/*Free resources: */
+			xDelete<doubletype>(X_serial);
+		}
+		/*}}}*/
+		IssmMpiSparseMat<doubletype>* Duplicate(void){/*{{{*/
+
+			_error_("not supported yet!");
+
+		}
+		/*}}}*/
+		doubletype* ToSerial(void){/*{{{*/
+			_error_("not supported yet!");
+		}
+		/*}}}*/
+		void SetValues(int min,int* idxm,int nin,int* idxn,doubletype* values,InsMode mode){/*{{{*/
+
+			/*we need to store all the values we collect here in order to Assemble later. 
+			 * Indeed, the values we are collecting here most of the time will not belong 
+			 * to us, but to another part of the matrix on another cpu: */
+			_assert_(buckets);
+
+			buckets->AddObject(new Bucket<doubletype>(min,idxm,nin,idxn,values,mode));
+
+		}
+		/*}}}*/
+		void SetZero(void){/*{{{*/
+
+			/*Reset buckets*/
+			delete this->buckets;
+			this->buckets=new DataSet();
+
+			/*reset matrix*/
+			if(m*N){
+				for(int i=0;i<m;i++) delete this->matrix[i];
+				xDelete<SparseRow<doubletype>*>(this->matrix);
+
+				this->matrix=xNew<SparseRow<doubletype>*>(m);
+				for(int i=0;i<m;i++) this->matrix[i]=new SparseRow<doubletype>(N);
+			}
+
+			/*Reallocate matrix*/
+		}/*}}}*/
+		void Convert(MatrixType type){/*{{{*/
+			_error_("not supported yet!");
+		}
+		/*}}}*/		
+		void BucketsBuildScatterBuffers(int** pnumvalues_forcpu,int** prow_indices_forcpu,int** pcol_indices_forcpu,doubletype** pvalues_forcpu,int** pmodes_forcpu,DataSet** bucketsforcpu,int num_procs){/*{{{*/
+
+			/*intermediary: */
+			int         count;
+			int        *temp_row_indices_forcpu = NULL;
+			int        *temp_col_indices_forcpu = NULL;
+			doubletype *temp_values_forcpu      = NULL;
+			int        *temp_modes_forcpu       = NULL;
+
+			/*output: */
+			int        *numvalues_forcpu        = NULL;
+			int        *row_indices_forcpu      = NULL;
+			int        *col_indices_forcpu      = NULL;
+			doubletype *values_forcpu           = NULL;
+			int        *modes_forcpu            = NULL;
+
+			/*figure out size of buffers per cpu: */
+
+			numvalues_forcpu=xNew<int>(num_procs);
+			for(int i=0;i<num_procs;i++){
+				DataSet    *buckets = bucketsforcpu[i];
+				count=0;
+				for(int j=0;j<buckets->Size();j++){
+					Bucket<doubletype>* bucket =(Bucket<doubletype>*)buckets->GetObjectByOffset(j);
+					count+=bucket->MarshallSize();
+				}
+				numvalues_forcpu[i]=count;
+			}
+
+			/*now, figure out size of  total buffers (for all cpus!): */
+			count=0;
+			for(int i=0;i<num_procs;i++) count+=numvalues_forcpu[i];
+			int total_size=count;
+
+			/*Allocate buffers: */
+			row_indices_forcpu = xNew<int>(total_size);
+			col_indices_forcpu = xNew<int>(total_size);
+// AD performance is sensitive to calls to ensurecontiguous.
+// Providing "t" will cause ensurecontiguous to be called.
+#ifdef _HAVE_AD_
+			values_forcpu = xNew<doubletype>(total_size,"t");
+#else
+			values_forcpu = xNew<doubletype>(total_size);
+#endif
+			modes_forcpu = xNew<int>(total_size);
+
+			/*we are going to march through the buffers, and marshall data onto them, so in order to not
+			 *lose track of where these buffers are located in memory, we are going to work using copies 
+			 of them: */
+			temp_row_indices_forcpu = row_indices_forcpu;
+			temp_col_indices_forcpu = col_indices_forcpu;
+			temp_values_forcpu      = values_forcpu;
+			temp_modes_forcpu       = modes_forcpu;
+
+			/*Fill buffers: */
+			for(int i=0;i<num_procs;i++){
+				DataSet *buckets = bucketsforcpu[i];
+				for(int j=0;j<buckets->Size();j++){
+					Bucket<doubletype>* bucket =(Bucket<doubletype>*)buckets->GetObjectByOffset(j);
+					bucket->Marshall(&temp_row_indices_forcpu,&temp_col_indices_forcpu,&temp_values_forcpu,&temp_modes_forcpu); //pass in the address of the buffers, so as to have the Marshall routine increment them.
+				}
+			}
+
+			/*sanity check: */
+			if(temp_row_indices_forcpu!=row_indices_forcpu+total_size)_error_("problem with marshalling of buckets");
+			if(temp_col_indices_forcpu!=col_indices_forcpu+total_size)_error_("problem with marshalling of buckets");
+			if(temp_values_forcpu!=values_forcpu+total_size)_error_("problem with marshalling of buckets");
+			if(temp_modes_forcpu!=modes_forcpu+total_size)_error_("problem with marshalling of buckets");
+
+			/*output buffers: */
+			*pnumvalues_forcpu   = numvalues_forcpu;
+			*prow_indices_forcpu = row_indices_forcpu;
+			*pcol_indices_forcpu = col_indices_forcpu;
+			*pvalues_forcpu      = values_forcpu;
+			*pmodes_forcpu       = modes_forcpu;
+		}
+		/*}}}*/		
+		#ifndef _HAVE_WRAPPERS_
+		/*Solve{{{*/
+		IssmAbsVec<IssmDouble>* Solve(IssmAbsVec<IssmDouble>* pfin, Parameters* parameters){
+
+			/*output: */
+			IssmMpiVec<IssmDouble>* uf=NULL;
+			IssmMpiVec<IssmDouble>* pf=NULL;
+
+			/*Assume we are getting an IssmMpiVec in input, downcast: */
+			pf=(IssmMpiVec<IssmDouble>*)pfin;
+
+			switch(IssmSolverTypeFromToolkitOptions()){
+				case MumpsEnum: {
+					/*Initialize output: */
+					uf=pf->Duplicate();
+					#ifdef _HAVE_MUMPS_
+					MpiSparseMumpsSolve(/*output*/ uf->vector,uf->M,uf->m, /*stiffness matrix:*/ this->matrix,this->M,this->N,this->m, /*right hand side load vector: */ pf->vector,pf->M,pf->m,parameters);
+					#else
+					_error_("IssmMpiSparseMat solver requires MUMPS solver");
+					#endif
+					return (IssmAbsVec<IssmDouble>*)uf;
+									 }
+				case GslEnum: {
+
+					IssmDouble* x=NULL;
+					#ifdef _HAVE_GSL_
+
+					_error_("not implemented yet!");
+					//SparseGslSolve(/*output*/ &x,/*stiffness matrix:*/ this->matrix,this->M,this->N, /*right hand side load vector: */ pf->vector,pf->M,parameters);
+
+					uf=new IssmMpiVec<IssmDouble>(x,this->N); xDelete(x);
+
+					return (IssmAbsVec<IssmDouble>*)uf;
+					#else
+					_error_("GSL support not compiled in!");
+					#endif
+								  }
+				default:
+					_error_("solver type not supported yet!");
+			}
+
+		}/*}}}*/
+		#endif
+};
+
+#endif //#ifndef _ISSM_MPI_SPARSE_MAT_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmMpiVec.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmMpiVec.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmMpiVec.h	(revision 27955)
@@ -0,0 +1,679 @@
+/*!\file:  IssmMpiVec.h
+ * \brief implementation of parallel dense ISSM vector. Internally, the parallel dense vector is
+ * split in rows across each cpu. Each vector (representing a subset of rows) on each cpu is fully
+ * dense, and is represented by a linear buffer of type doubletype.
+ * This object needs to answer the API defined by the virtual functions in IssmAbsVec,
+ * and the contructors required by IssmVec (see IssmVec.h)
+ */
+
+#ifndef _ISSM_MPI_VEC_H_
+#define _ISSM_MPI_VEC_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/MemOps/MemOps.h"
+#include "../../shared/io/io.h"
+#include "../mpi/issmmpi.h"
+#include <math.h>
+
+/*}}}*/
+
+/*We need to template this class, in case we want to create vectors that hold IssmDouble* vector or IssmPDouble* vector.
+  Such vectors would be useful for use without or with the matlab or python interface (which do not care for IssmDouble types,
+  but only rely on IssmPDouble types)*/
+template <class doubletype> class IssmAbsVec;
+
+template <class doubletype>
+class IssmMpiVec:public IssmAbsVec<doubletype>{
+
+	public:
+
+		bool isassembled;
+		int M; //global size
+		int m; //local number of rows
+		doubletype* vector;  /*here, doubletype is either IssmDouble or IssmPDouble*/
+		DataSet*    buckets;  /*here, we store buckets of values that we will Assemble into a global vector.*/
+
+		/*IssmMpiVec constructors, destructors*/
+		IssmMpiVec(){/*{{{*/
+
+			this->M=0;
+			this->m=0;
+			this->isassembled=false;
+			this->vector=NULL;
+			this->buckets=new DataSet();
+		}
+		/*}}}*/
+		IssmMpiVec(int Min){/*{{{*/
+			this->Init(Min,false);
+		}
+		/*}}}*/
+		IssmMpiVec(int min, int Min){/*{{{*/
+			this->Init(min,true);
+		}
+		/*}}}*/
+		IssmMpiVec(int Min, bool fromlocalsize){/*{{{*/
+			this->Init(Min,fromlocalsize);
+		}
+		/*}}}*/
+		IssmMpiVec(doubletype* buffer,int Min){/*{{{*/
+
+			this->Init(Min,false);
+
+			if(this->M){
+// AD performance is sensitive to calls to ensurecontiguous.
+// Providing "t" will cause ensurecontiguous to be called.
+#ifdef _HAVE_AD_
+				this->vector=xNew<doubletype>(this->m,"t");
+#else
+				this->vector=xNew<doubletype>(this->m);
+#endif
+
+				xMemCpy<doubletype>(this->vector,buffer,this->m);
+			}
+		}
+		/*}}}*/
+		IssmMpiVec(doubletype* buffer,int Min,int min){/*{{{*/
+
+			this->vector=NULL;
+			this->buckets=new DataSet();
+			this->M=Min;
+			this->m=min;
+
+			if(this->m){
+// AD performance is sensitive to calls to ensurecontiguous.
+// Providing "t" will cause ensurecontiguous to be called.
+#ifdef _HAVE_AD_
+				this->vector=xNew<doubletype>(this->m,"t");
+#else
+				this->vector=xNew<doubletype>(this->m);
+#endif
+
+				xMemCpy<doubletype>(this->vector,buffer,this->m);
+			}
+		}
+		/*}}}*/
+		void Init(int Min,bool fromlocalsize){/*{{{*/
+
+			this->buckets=new DataSet();
+			this->isassembled=false;
+
+			if(fromlocalsize){
+				this->m=Min;
+				this->M=DetermineGlobalSize(this->m,IssmComm::GetComm());
+			}
+			else{
+				this->M=Min;
+				this->m=DetermineLocalSize(this->M,IssmComm::GetComm());
+			}
+
+			/*Initialize pointer: */
+			this->vector=NULL;
+
+			/*Allocate: */
+// AD performance is sensitive to calls to ensurecontiguous.
+// Providing "t" will cause ensurecontiguous to be called.
+#ifdef _HAVE_AD_
+			if (m)this->vector=xNewZeroInit<doubletype>(this->m,"t");
+#else
+			if (m)this->vector=xNewZeroInit<doubletype>(this->m);
+#endif
+
+		}
+		/*}}}*/
+		~IssmMpiVec(){/*{{{*/
+			xDelete<doubletype>(this->vector);
+			this->M=0;
+			this->m=0;
+			delete buckets;
+		}
+		/*}}}*/
+
+		/*IssmMpiVec specific routines*/
+		void Echo(void){/*{{{*/
+
+			/*Do a synchronized dump across all the rows: */
+			int my_rank=IssmComm::GetRank();
+			for(int i=0;i<IssmComm::GetSize();i++){
+				if(my_rank==i){
+					if(i==0) _printf_("Vector of global size M="<<this->M<<"\n");
+					_printf_("cpu " << i << " #rows: " << this->m << "\n");
+					if(this->isassembled){
+						for(int j=0;j<this->m;j++){
+							_printf_("row " << j << ": "<<this->vector[j]);
+							_printf_("\n");
+						}
+					}
+					else{
+						this->buckets->DeepEcho();
+					}
+				}
+				ISSM_MPI_Barrier(IssmComm::GetComm());
+			}
+		}
+		/*}}}*/
+		void Assemble(){/*{{{*/
+
+			int           i,j;
+
+			int         *RowRank            = NULL;
+			int           num_procs;
+
+			int        *row_indices_forcpu = NULL;
+			int        *modes_forcpu       = NULL;
+			doubletype *values_forcpu      = NULL;
+			int         *numvalues_forcpu   = NULL;
+			DataSet     **bucketsforcpu       = NULL;
+
+			int        **row_indices_fromcpu = NULL;
+			int        **col_indices_fromcpu = NULL;
+			int        **modes_fromcpu       = NULL;
+			doubletype **values_fromcpu      = NULL;
+			int         *numvalues_fromcpu   = NULL;
+
+			int           lower_row;
+			int           upper_row;
+			int*          sendcnts            = NULL;
+			int*          displs              = NULL;
+			int           count               = 0;
+
+			/*some communicator info: */
+			num_procs=IssmComm::GetSize();
+			ISSM_MPI_Comm comm=IssmComm::GetComm();
+
+			/*First, make a vector of size M, which for each row between 0 and M-1, tells which cpu this row belongs to: */
+			RowRank=DetermineRowRankFromLocalSize(M,m,comm);
+
+			/*Now, sort out our dataset of buckets according to cpu ownership of rows: {{{*/
+			bucketsforcpu=xNew<DataSet*>(num_procs);
+
+			for(i=0;i<num_procs;i++){
+				DataSet* bucketsofcpu_i=new DataSet();
+				for (j=0;j<buckets->Size();j++){
+					Bucket<doubletype>* bucket=(Bucket<doubletype>*)buckets->GetObjectByOffset(j);
+					bucket->SpawnBucketsPerCpu(bucketsofcpu_i,i,RowRank);
+				}
+				bucketsforcpu[i]=bucketsofcpu_i;
+			}
+			/*}}}*/
+
+			/*Recap, each cpu has num_procs datasets of buckets. For a certain cpu j, for a given dataset i, the buckets this  {{{
+			 * dataset owns correspond to rows that are owned by cpu i, not j!. Out of all the buckets we own, make row,col,value,insert_mode
+			 * vectors that will be shipped around the cluster: */
+			this->BucketsBuildScatterBuffers(&numvalues_forcpu,&row_indices_forcpu,&values_forcpu,&modes_forcpu,bucketsforcpu,num_procs);
+			/*}}}*/
+
+			/*Now, we need to allocate on each cpu arrays to receive data from all the other cpus. To know what we need to allocate, we need  {{{
+			 *some scatter calls: */
+			numvalues_fromcpu   = xNew<int>(num_procs);
+			for(i=0;i<num_procs;i++){
+				ISSM_MPI_Scatter(numvalues_forcpu,1,ISSM_MPI_INT,numvalues_fromcpu+i,1,ISSM_MPI_INT,i,comm);
+			}
+
+			row_indices_fromcpu=xNew<int*>(num_procs);
+			values_fromcpu=xNew<doubletype*>(num_procs);
+			modes_fromcpu=xNew<int*>(num_procs);
+			for(i=0;i<num_procs;i++){
+				int size=numvalues_fromcpu[i];
+				if(size){
+					row_indices_fromcpu[i]=xNew<int>(size);
+// AD performance is sensitive to calls to ensurecontiguous.
+// Providing "t" will cause ensurecontiguous to be called.
+#ifdef _HAVE_AD_
+					values_fromcpu[i]=xNew<doubletype>(size,"t");
+#else
+					values_fromcpu[i]=xNew<doubletype>(size);
+#endif
+
+					modes_fromcpu[i]=xNew<int>(size);
+				}
+				else{
+					row_indices_fromcpu[i]=NULL;
+					values_fromcpu[i]=NULL;
+					modes_fromcpu[i]=NULL;
+				}
+			}
+			/*}}}*/
+
+			/*Scatter values around: {{{*/
+			/*Now, to scatter values across the cluster, we need sendcnts and displs. Our sendbufs have been built by BucketsBuildScatterBuffers, with a stride given
+			 * by numvalues_forcpu. Get this ready to go before starting the scatter itslef. For reference, here is the ISSM_MPI_Scatterv prototype:
+			 * int ISSM_MPI_Scatterv( void *sendbuf, int *sendcnts, int *displs, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcnt, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm) :*/
+			sendcnts=xNew<int>(num_procs);
+			displs=xNew<int>(num_procs);
+			count=0;
+			for(i=0;i<num_procs;i++){
+				sendcnts[i] = numvalues_forcpu[i];
+				displs[i]   = count;
+				count      += numvalues_forcpu[i];
+			}
+
+			for(i=0;i<num_procs;i++){
+				ISSM_MPI_Scatterv( row_indices_forcpu, sendcnts, displs, ISSM_MPI_INT, row_indices_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_INT, i, comm);
+				ISSM_MPI_Scatterv( values_forcpu, sendcnts, displs, TypeToMPIType<doubletype>(), values_fromcpu[i], numvalues_fromcpu[i], TypeToMPIType<doubletype>(), i, comm);
+				ISSM_MPI_Scatterv( modes_forcpu, sendcnts, displs, ISSM_MPI_INT, modes_fromcpu[i], numvalues_fromcpu[i], ISSM_MPI_INT, i, comm);
+			}
+			/*}}}*/
+
+			/*Plug values into global vector: {{{*/
+			GetOwnershipBoundariesFromRange(&lower_row,&upper_row,m,comm);
+			for(i=0;i<num_procs;i++){
+				int  numvalues=numvalues_fromcpu[i];
+				int* rows=row_indices_fromcpu[i];
+				doubletype* values=values_fromcpu[i];
+				int* mods=modes_fromcpu[i];
+
+				for(j=0;j<numvalues;j++){
+					if(mods[j]==ADD_VAL) *(vector+(rows[j]-lower_row))+=values[j];
+					else *(vector+(rows[j]-lower_row))=values[j];
+				}
+			}
+			/*}}}*/
+			this->isassembled=true;
+
+			/*Free resources:{{{*/
+			xDelete<int>(RowRank);
+			xDelete<int>(row_indices_forcpu);
+			xDelete<int>(modes_forcpu);
+			xDelete<doubletype>(values_forcpu);
+			xDelete<int>(numvalues_forcpu);
+
+			for(i=0;i<num_procs;i++){
+				DataSet* bucketsn=bucketsforcpu[i];
+				delete bucketsn;
+			}
+			xDelete<DataSet*>(bucketsforcpu);
+
+			for(i=0;i<num_procs;i++){
+				int* rows=row_indices_fromcpu[i];
+				int* modes=modes_fromcpu[i];
+				doubletype* values=values_fromcpu[i];
+
+				xDelete<int>(rows);
+				xDelete<int>(modes);
+				xDelete<doubletype>(values);
+			}
+			xDelete<int*>(row_indices_fromcpu);
+			xDelete<int*>(modes_fromcpu);
+			xDelete<doubletype*>(values_fromcpu);
+			xDelete<int>(numvalues_fromcpu);
+
+			xDelete<int>(sendcnts);
+			xDelete<int>(displs);
+
+			/*Get rid of all buckets, as we have already added them to the matrix!: */
+			delete this->buckets;
+			this->buckets=new DataSet();
+			/*}}}*/
+
+		}
+		/*}}}*/
+		void SetValues(int ssize, int* list, doubletype* values, InsMode mode){/*{{{*/
+
+			/*we need to store all the values we collect here in order to Assemble later.
+			 * Indeed, the values we are collecting here most of the time will not belong
+			 * to us, but to another part of the vector on another cpu: */
+			_assert_(buckets);
+
+			buckets->AddObject(new Bucket<doubletype>(ssize, list, values, mode));
+
+		}
+		/*}}}*/
+		void SetValue(int dof, doubletype value, InsMode mode){/*{{{*/
+
+			/*we need to store the value we collect here in order to Assemble later.
+			 * Indeed, the value we are collecting here most of the time will not belong
+			 * to us, but to another part of the vector on another cpu: */
+			_assert_(buckets);
+
+			buckets->AddObject(new Bucket<doubletype>(1,&dof,&value, mode));
+		}
+		/*}}}*/
+		void GetValue(doubletype* pvalue,int dof){/*{{{*/
+			_error_("Get value on a MpiVec vector not implemented yet!");
+		}
+		/*}}}*/
+		void GetSize(int* pM){/*{{{*/
+
+			*pM=this->M;
+
+		}
+		/*}}}*/
+		void GetLocalSize(int* pM){/*{{{*/
+
+			*pM=this->m;
+
+		}
+		/*}}}*/
+		void GetLocalVector(doubletype** pvector,int** pindices){/*{{{*/
+
+			/*First, check that vector size is not 0*/
+			int vector_size;
+			this->GetSize(&vector_size);
+			if(vector_size==0){
+				*pvector=NULL;
+				*pindices=NULL;
+				return;
+			}
+
+			/*Get Ownership range*/
+			int lower_row,upper_row;
+			GetOwnershipBoundariesFromRange(&lower_row,&upper_row,m,IssmComm::GetComm());
+			int range=upper_row-lower_row;
+
+			/*return NULL if no range*/
+			if(range==0){
+				*pvector=NULL;
+				*pindices=NULL;
+				return;
+			}
+
+			/*Build indices*/
+			int* indices=xNew<int>(range);
+			for(int i=0;i<range;i++) indices[i]=lower_row+i;
+
+			/*Get vector*/
+			_assert_(range==this->m);
+			doubletype* values =xNew<doubletype>(range);
+			xMemCpy<doubletype>(values,this->vector,this->m);
+
+			*pvector  = values;
+			*pindices = indices;
+		} /*}}}*/
+		IssmMpiVec<doubletype>* Duplicate(void){/*{{{*/
+
+			return new IssmMpiVec<doubletype>(this->vector,this->M,this->m);
+
+		}
+		/*}}}*/
+		void Set(doubletype value){/*{{{*/
+
+			for(int i=0;i<this->m;i++)this->vector[i]=value;
+
+		}
+		/*}}}*/
+		void AXPY(IssmAbsVec<doubletype>* Xin, doubletype a){/*{{{*/
+
+			int i;
+
+			/*Assume X is of the correct type, and downcast: */
+			IssmMpiVec* X=NULL;
+
+			X=(IssmMpiVec<doubletype>*)Xin;
+
+			/*y=a*x+y where this->vector is y*/
+			for(i=0;i<this->m;i++)this->vector[i]=a*X->vector[i]+this->vector[i];
+
+		}
+		/*}}}*/
+		void AYPX(IssmAbsVec<doubletype>* Xin, doubletype a){/*{{{*/
+			int i;
+
+			/*Assume X is of the correct type, and downcast: */
+			IssmMpiVec* X=NULL;
+
+			X=(IssmMpiVec<doubletype>*)Xin;
+
+			/*y=x+a*y where this->vector is y*/
+			for(i=0;i<this->m;i++)this->vector[i]=X->vector[i]+a*this->vector[i];
+
+		}
+		/*}}}*/
+		doubletype* ToMPISerial(void){/*{{{*/
+
+			/*communicator info: */
+			ISSM_MPI_Comm comm;
+			int num_procs;
+
+			/*ISSM_MPI_Allgatherv info: */
+			int  lower_row,upper_row;
+			int* recvcounts=NULL;
+			int* displs=NULL;
+
+			/*output: */
+			doubletype* buffer=NULL;
+
+			/*initialize comm info: */
+			comm=IssmComm::GetComm();
+			num_procs=IssmComm::GetSize();
+
+			/*Allocate: */
+// AD performance is sensitive to calls to ensurecontiguous.
+// Providing "t" will cause ensurecontiguous to be called.
+#ifdef _HAVE_AD_
+			buffer=xNew<doubletype>(M,"t");
+#else
+			buffer=xNew<doubletype>(M);
+#endif
+
+			recvcounts=xNew<int>(num_procs);
+			displs=xNew<int>(num_procs);
+
+			/*recvcounts:*/
+			ISSM_MPI_Allgather(&this->m,1,ISSM_MPI_INT,recvcounts,1,ISSM_MPI_INT,comm);
+
+			/*get lower_row: */
+			GetOwnershipBoundariesFromRange(&lower_row,&upper_row,this->m,comm);
+
+			/*displs: */
+			ISSM_MPI_Allgather(&lower_row,1,ISSM_MPI_INT,displs,1,ISSM_MPI_INT,comm);
+
+			/*All gather:*/
+			ISSM_MPI_Allgatherv(this->vector, this->m, TypeToMPIType<doubletype>(), buffer, recvcounts, displs, TypeToMPIType<doubletype>(),comm);
+			/*Free resources: */
+			xDelete<int>(recvcounts);
+			xDelete<int>(displs);
+
+			/*return: */
+			return buffer;
+
+		}
+		/*}}}*/
+		doubletype* ToMPISerial0(void){/*{{{*/
+
+			/*FIXME: Should not broadcast to every cpu*/
+			return this->ToMPISerial();
+
+		}
+		/*}}}*/
+		void Shift(doubletype shift){/*{{{*/
+			for(int i=0;i<this->m;i++)this->vector[i]+=shift;
+		}
+		/*}}}*/
+		void Copy(IssmAbsVec<doubletype>* toin){/*{{{*/
+
+			int i;
+
+			/*Assume toin is of the correct type, and downcast: */
+			IssmMpiVec* to=NULL;
+
+			to=(IssmMpiVec<doubletype>*)toin;
+
+			to->M=this->M;
+			for(i=0;i<this->m;i++)to->vector[i]=this->vector[i];
+
+		}
+		/*}}}*/
+		doubletype Norm(NormMode mode){/*{{{*/
+
+			doubletype local_norm;
+			doubletype norm;
+			int i;
+
+			switch(mode){
+				case NORM_INF:
+					local_norm=0.; for(i=0;i<this->m;i++)local_norm=max(local_norm,fabs(this->vector[i]));
+					//local_norm=0; for(i=0;i<this->m;i++)local_norm=max(local_norm,this->vector[i]);
+					ISSM_MPI_Reduce(&local_norm, &norm, 1, ISSM_MPI_DOUBLE, ISSM_MPI_MAX, 0, IssmComm::GetComm());
+					ISSM_MPI_Bcast(&norm,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+					return norm;
+					break;
+				case NORM_TWO:
+					local_norm=0.;
+					for(i=0;i<this->m;i++)local_norm+=this->vector[i]*this->vector[i];
+					ISSM_MPI_Reduce(&local_norm, &norm, 1, ISSM_MPI_DOUBLE, ISSM_MPI_SUM, 0, IssmComm::GetComm());
+					ISSM_MPI_Bcast(&norm,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+					return sqrt(norm);
+					break;
+				default:
+					_error_("unknown norm !");
+					break;
+			}
+			return 0.;
+		}
+		/*}}}*/
+		void Scale(doubletype scale_factor){/*{{{*/
+
+			int i;
+			for(i=0;i<this->M;i++)this->vector[i]=scale_factor*this->vector[i];
+
+		}
+		/*}}}*/
+		doubletype Dot(IssmAbsVec<doubletype>* inputin){/*{{{*/
+
+			int i;
+			doubletype local_dot=0;
+			doubletype dot=0;
+
+			/*Assume inputin is of the correct type, and downcast: */
+			IssmMpiVec* input=NULL;
+
+			input=(IssmMpiVec<doubletype>*)inputin;
+
+			for(i=0;i<this->m;i++)local_dot+=this->vector[i]*input->vector[i];
+
+			/*ISSM_MPI_SUM all the dots across the cluster: */
+			ISSM_MPI_Reduce(&local_dot, &dot, 1, ISSM_MPI_DOUBLE, ISSM_MPI_SUM, 0, IssmComm::GetComm());
+			ISSM_MPI_Bcast(&dot,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+			return dot;
+		}
+		/*}}}*/
+		void PointwiseDivide(IssmAbsVec<doubletype>* xin,IssmAbsVec<doubletype>* yin){/*{{{*/
+
+			int i;
+
+			/*Assume xin and yin are of the correct type, and downcast: */
+			IssmMpiVec* x=NULL;
+			IssmMpiVec* y=NULL;
+
+			x=(IssmMpiVec<doubletype>*)xin;
+			y=(IssmMpiVec<doubletype>*)yin;
+
+			/*pointwise w=x/y where this->vector is w: */
+			for(i=0;i<this->m;i++)this->vector[i]=x->vector[i]/y->vector[i];
+		}
+		/*}}}*/
+		void PointwiseMult(IssmAbsVec<doubletype>* xin,IssmAbsVec<doubletype>* yin){/*{{{*/
+
+			int i;
+
+			/*Assume xin and yin are of the correct type, and downcast: */
+			IssmMpiVec* x=NULL;
+			IssmMpiVec* y=NULL;
+
+			x=(IssmMpiVec<doubletype>*)xin;
+			y=(IssmMpiVec<doubletype>*)yin;
+
+			/*pointwise w=x*y where this->vector is w: */
+			for(i=0;i<this->m;i++)this->vector[i]=x->vector[i]*y->vector[i];
+		}
+		/*}}}*/
+		void Pow(doubletype scale_factor){/*{{{*/
+
+			int i;
+			for(i=0;i<this->M;i++)this->vector[i]=pow(this->vector[i],scale_factor);
+
+		}
+		/*}}}*/
+		void Sum(doubletype* pvalue){/*{{{*/
+			_error_("not support yet!");
+		}
+		/*}}}*/
+		void BucketsBuildScatterBuffers(int** pnumvalues_forcpu,int** prow_indices_forcpu,doubletype** pvalues_forcpu,int** pmodes_forcpu,DataSet** bucketsforcpu,int num_procs){/*{{{*/
+
+			/*intermediary: */
+			int         i,j;
+			int         count                   = 0;
+			int         total_size              = 0;
+			int        *temp_row_indices_forcpu = NULL;
+			doubletype *temp_values_forcpu      = NULL;
+			int        *temp_modes_forcpu       = NULL;
+
+			/*output: */
+			int        *numvalues_forcpu        = NULL;
+			int        *row_indices_forcpu      = NULL;
+			doubletype *values_forcpu           = NULL;
+			int        *modes_forcpu            = NULL;
+
+			/*figure out size of buffers per cpu: */
+
+			numvalues_forcpu=xNew<int>(num_procs);
+			for(i=0;i<num_procs;i++){
+				DataSet    *buckets            = bucketsforcpu[i];
+
+				count=0;
+				for(j=0;j<buckets->Size();j++){
+					Bucket<doubletype>* bucket =(Bucket<doubletype>*)buckets->GetObjectByOffset(j);
+					count+=bucket->MarshallSize();
+				}
+
+				numvalues_forcpu[i]=count;
+			}
+
+			/*now, figure out size of  total buffers (for all cpus!): */
+			count=0;
+			for(i=0;i<num_procs;i++){
+				count+=numvalues_forcpu[i];
+			}
+			total_size=count;
+
+			/*Allocate buffers: */
+			row_indices_forcpu = xNew<int>(total_size);
+// AD performance is sensitive to calls to ensurecontiguous.
+// Providing "t" will cause ensurecontiguous to be called.
+#ifdef _HAVE_AD_
+			values_forcpu = xNew<doubletype>(total_size,"t");
+#else
+			values_forcpu = xNew<doubletype>(total_size);
+#endif
+
+			modes_forcpu = xNew<int>(total_size);
+
+			/*we are going to march through the buffers, and marshall data onto them, so in order to not
+			 *lose track of where these buffers are located in memory, we are going to work using copies
+			 of them: */
+			temp_row_indices_forcpu=row_indices_forcpu;
+			temp_values_forcpu=values_forcpu;
+			temp_modes_forcpu=modes_forcpu;
+
+			/*Fill buffers: */
+			for(i=0;i<num_procs;i++){
+				DataSet    *buckets            = bucketsforcpu[i];
+				for(j=0;j<buckets->Size();j++){
+					Bucket<doubletype>* bucket =(Bucket<doubletype>*)buckets->GetObjectByOffset(j);
+					bucket->Marshall(&temp_row_indices_forcpu,&temp_values_forcpu,&temp_modes_forcpu); //pass in the address of the buffers, so as to have the Marshall routine increment them.
+				}
+			}
+
+			/*sanity check: */
+			if (temp_row_indices_forcpu!=row_indices_forcpu+total_size)_error_("problem with marshalling of buckets");
+			if (temp_values_forcpu!=values_forcpu+total_size)_error_("problem with marshalling of buckets");
+			if (temp_modes_forcpu!=modes_forcpu+total_size)_error_("problem with marshalling of buckets");
+
+			/*output buffers: */
+			*pnumvalues_forcpu   = numvalues_forcpu;
+			*prow_indices_forcpu = row_indices_forcpu;
+			*pvalues_forcpu      = values_forcpu;
+			*pmodes_forcpu       = modes_forcpu;
+		}
+		/*}}}*/
+};
+#endif //#ifndef _ISSM_MPI_VEC_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmSeqVec.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmSeqVec.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmSeqVec.h	(revision 27955)
@@ -0,0 +1,340 @@
+/*!\file:  IssmSeqVec.h
+ * \brief implementation of an ISSM vector which run serially (1 cpu only), which is made of a fully dense
+ * vector. Internally, this dense vector is just a linear buffer of type doubletype.
+ * This object needs to answer the API defined by the virtual functions in IssmAbsVec,
+ * and the contructors required by IssmVec (see IssmVec.h)
+ */
+
+#ifndef _ISSM_SEQ_VEC_H_
+#define _ISSM_SEQ_VEC_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/shared.h"
+#include <math.h>
+
+/*}}}*/
+
+/*We need to template this class, in case we want to create vectors that hold IssmDouble* vector or IssmPDouble* vector.
+  Such vectors would be useful for use without or with the matlab or python interface (which do not care for IssmDouble types,
+  but only rely on IssmPDouble types)*/
+
+template <class doubletype> class IssmAbsVec;
+
+template <class doubletype>
+class IssmSeqVec: public IssmAbsVec<doubletype>{
+
+	public:
+
+		doubletype* vector;
+		int M;
+
+		/*IssmSeqVec constructors, destructors*/
+		IssmSeqVec(){/*{{{*/
+
+			this->M=0;
+			this->vector=NULL;
+		}
+		/*}}}*/
+		IssmSeqVec(int pM){/*{{{*/
+
+			this->M=pM;
+			this->vector=NULL;
+			if(this->M) this->vector=xNewZeroInit<doubletype>(pM);
+		}
+		/*}}}*/
+		IssmSeqVec(int pm,int pM){/*{{{*/
+
+			this->M=pM;
+			this->vector=NULL;
+			if(this->M) this->vector=xNewZeroInit<doubletype>(pM);
+		}
+		/*}}}*/
+		IssmSeqVec(int pM,bool fromlocalsize){/*{{{*/
+
+			this->M=pM;
+			this->vector=NULL;
+			if(this->M) this->vector=xNewZeroInit<doubletype>(pM);
+		}
+		/*}}}*/
+		IssmSeqVec(doubletype* buffer,int pM){/*{{{*/
+
+			this->M=pM;
+			this->vector=NULL;
+			if(this->M){
+				this->vector=xNew<doubletype>(pM);
+				xMemCpy<doubletype>(this->vector,buffer,pM);
+			}
+		}
+		/*}}}*/
+		~IssmSeqVec(){/*{{{*/
+			if(this->M)xDelete<doubletype>(this->vector);
+			M=0;
+		}
+		/*}}}*/
+
+		/*IssmSeqVec specific routines*/
+		void Echo(void){/*{{{*/
+
+			int i;
+			_printf_("IssmSeqVec size " << this->M << "\n");
+			for(i=0;i<M;i++){
+				_printf_(vector[i] << "\n ");
+			}
+		}
+		/*}}}*/
+		void Assemble(void){/*{{{*/
+
+			/*do nothing*/
+
+		}
+		/*}}}*/
+		void SetValues(int ssize, int* list, doubletype* values, InsMode mode){/*{{{*/
+
+			int i;
+			switch(mode){
+				case ADD_VAL:
+					for(i=0;i<ssize;i++) if(list[i]>=0) this->vector[list[i]]+=values[i];
+					break;
+				case INS_VAL:
+					for(i=0;i<ssize;i++) if(list[i]>=0) this->vector[list[i]]=values[i];
+					break;
+				default:
+					_error_("unknown insert mode!");
+					break;
+			}
+
+		}
+		/*}}}*/
+		void SetValue(int dof, doubletype value,InsMode mode){/*{{{*/
+
+			_assert_(dof>=0);
+
+			switch(mode){
+				case ADD_VAL:
+					this->vector[dof]+=value;
+					break;
+				case INS_VAL:
+					this->vector[dof]=value;
+					break;
+				default:
+					_error_("unknown insert mode!");
+					break;
+			}
+		}
+		/*}}}*/
+		void GetValue(doubletype* pvalue,int dof){/*{{{*/
+
+			*pvalue=this->vector[dof];
+
+		}
+		/*}}}*/
+		void GetSize(int* pM){/*{{{*/
+
+			*pM=this->M;
+
+		}
+		/*}}}*/
+		void GetLocalSize(int* pM){/*{{{*/
+			*pM=this->M;
+		}/*}}}*/
+		void GetLocalVector(doubletype** pvector,int** pindices){/*{{{*/
+
+			/*First, check that vector size is not 0*/
+			int vector_size;
+			this->GetSize(&vector_size);
+			if(vector_size==0){
+				*pvector=NULL;
+				*pindices=NULL;
+				return;
+			}
+
+			/*Build indices*/
+			int* indices=xNew<int>(vector_size);
+			for(int i=0;i<vector_size;i++) indices[i]=i;
+
+			/*Get vector*/
+			doubletype* values =xNew<doubletype>(vector_size);
+			xMemCpy<doubletype>(values,this->vector,vector_size);
+
+			*pvector  = values;
+			*pindices = indices;
+		} /*}}}*/
+		IssmSeqVec<doubletype>* Duplicate(void){/*{{{*/
+
+			return new IssmSeqVec<doubletype>(this->vector,this->M);
+
+		}
+		/*}}}*/
+		void Set(doubletype value){/*{{{*/
+
+			for(int i=0;i<this->M;i++)this->vector[i]=value;
+
+		}
+		/*}}}*/
+		void AXPY(IssmAbsVec<doubletype>* Xin, doubletype a){/*{{{*/
+
+			int i;
+
+			/*Assume X is of the correct type, and downcast: */
+			IssmSeqVec* X=NULL;
+
+			X=(IssmSeqVec<doubletype>*)Xin;
+
+			/*y=a*x+y where this->vector is y*/
+			for(i=0;i<this->M;i++)this->vector[i]=a*X->vector[i]+this->vector[i];
+
+		}
+		/*}}}*/
+		void AYPX(IssmAbsVec<doubletype>* Xin, doubletype a){/*{{{*/
+
+			int i;
+
+			/*Assume X is of the correct type, and downcast: */
+			IssmSeqVec* X=NULL;
+
+			X=(IssmSeqVec<doubletype>*)Xin;
+
+			/*y=x+a*y where this->vector is y*/
+			for(i=0;i<this->M;i++)this->vector[i]=X->vector[i]+a*this->vector[i];
+
+		}
+		/*}}}*/
+		doubletype* ToMPISerial(void){/*{{{*/
+
+			doubletype* buffer=NULL;
+
+			if(this->M){
+				buffer=xNew<doubletype>(this->M);
+				xMemCpy<doubletype>(buffer,this->vector,this->M);
+			}
+			return buffer;
+
+		}
+		/*}}}*/
+		doubletype* ToMPISerial0(void){/*{{{*/
+
+			return this->ToMPISerial();
+
+		}
+		/*}}}*/
+		void Shift(doubletype shift){/*{{{*/
+
+			for(int i=0;i<this->M;i++)this->vector[i]+=shift;
+
+		}
+		/*}}}*/
+		void Copy(IssmAbsVec<doubletype>* toin){/*{{{*/
+
+			int i;
+
+			/*Assume toin is of the correct type, and downcast: */
+			IssmSeqVec* to=NULL;
+
+			to=(IssmSeqVec<doubletype>*)toin;
+
+			to->M=this->M;
+			for(i=0;i<this->M;i++)to->vector[i]=this->vector[i];
+
+		}
+		/*}}}*/
+		doubletype Norm(NormMode mode){/*{{{*/
+
+			doubletype norm;
+			int i;
+
+			switch(mode){
+				case NORM_INF:
+					norm=0.; for(i=0;i<this->M;i++)norm=max(norm,fabs(this->vector[i]));
+					//norm=0.; for(i=0;i<this->M;i++)norm=max(norm,this->vector[i]);
+					return norm;
+					break;
+				case NORM_TWO:
+					norm=0.;
+					for(i=0;i<this->M;i++)norm+=this->vector[i]*this->vector[i];
+					return sqrt(norm);
+					break;
+				default:
+					_error_("unknown norm !");
+					break;
+			}
+
+			return 0.;
+		}
+		/*}}}*/
+		void Scale(doubletype scale_factor){/*{{{*/
+
+			int i;
+			for(i=0;i<this->M;i++)this->vector[i]=scale_factor*this->vector[i];
+
+		}
+		/*}}}*/
+		doubletype Dot(IssmAbsVec<doubletype>* inputin){/*{{{*/
+
+			int i;
+
+			/*Assume inputin is of the correct type, and downcast: */
+			IssmSeqVec* input=NULL;
+
+			input=(IssmSeqVec<doubletype>*)inputin;
+
+			doubletype dot=0;
+			for(i=0;i<this->M;i++)dot+=this->vector[i]*input->vector[i];
+			return dot;
+
+		}
+		/*}}}*/
+		void PointwiseDivide(IssmAbsVec<doubletype>* xin,IssmAbsVec<doubletype>* yin){/*{{{*/
+
+			int i;
+
+			/*Assume xin and yin are of the correct type, and downcast: */
+			IssmSeqVec* x=NULL;
+			IssmSeqVec* y=NULL;
+
+			x=(IssmSeqVec<doubletype>*)xin;
+			y=(IssmSeqVec<doubletype>*)yin;
+
+			/*pointwise w=x/y where this->vector is w: */
+			for(i=0;i<this->M;i++)this->vector[i]=x->vector[i]/y->vector[i];
+		}
+		/*}}}*/
+		void PointwiseMult(IssmAbsVec<doubletype>* xin,IssmAbsVec<doubletype>* yin){/*{{{*/
+
+			int i;
+
+			/*Assume xin and yin are of the correct type, and downcast: */
+			IssmSeqVec* x=NULL;
+			IssmSeqVec* y=NULL;
+
+			x=(IssmSeqVec<doubletype>*)xin;
+			y=(IssmSeqVec<doubletype>*)yin;
+
+			/*pointwise w=x*y where this->vector is w: */
+			for(i=0;i<this->M;i++)this->vector[i]=x->vector[i]*y->vector[i];
+		}
+		/*}}}*/
+		void Pow(doubletype scale_factor){/*{{{*/
+
+			int i;
+			for(i=0;i<this->M;i++)this->vector[i]=pow(this->vector[i],scale_factor);
+
+		}
+		/*}}}*/
+		void Sum(doubletype* pvalue){/*{{{*/
+
+			doubletype value=0;
+			int i;
+			for(i=0;i<this->M;i++)value+=this->vector[i];
+			*pvalue=value;
+		}
+		/*}}}*/
+
+};
+#endif //#ifndef _ISSM_SEQ_VEC_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmSolver.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmSolver.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmSolver.cpp	(revision 27955)
@@ -0,0 +1,24 @@
+/*!\file IssmSolver
+ * \brief implementation of solver 
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include <cstring>
+
+#include "../../shared/shared.h"
+#include "./issmtoolkit.h"
+
+void IssmSolve(IssmVec<IssmDouble>** pout,IssmMat<IssmDouble>* Kff, IssmVec<IssmDouble>* pf, Parameters* parameters){/*{{{*/
+
+	/*Let matrix decide, to retain object orientation: */
+	IssmVec<IssmDouble>* outvector=NULL;
+
+	outvector=Kff->Solve(pf,parameters);
+
+	*pout=outvector;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmSolver.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmSolver.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmSolver.h	(revision 27955)
@@ -0,0 +1,26 @@
+/*!\file:  IssmSolver.h
+ * \brief main hook up from Solver toolkit object to the ISSM toolkit
+ */ 
+
+#ifndef _ISSM_SOLVER_H_
+#define _ISSM_SOLVER_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/Numerics/types.h"
+
+/*}}}*/
+
+template <class doubletype> class IssmVec;
+template <class doubletype> class IssmMat;
+class Parameters;
+
+void IssmSolve(IssmVec<IssmDouble>** puf,IssmMat<IssmDouble>* Kff, IssmVec<IssmDouble>* pf,Parameters* parameters);
+
+#endif 
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmToolkitUtils.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmToolkitUtils.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmToolkitUtils.cpp	(revision 27955)
@@ -0,0 +1,114 @@
+/*!\file:  IssmToolkitUtils.cpp
+ * \brief utilities used throughout our ISSM toolkit
+ */ 
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/MemOps/MemOps.h"
+#include "../../shared/io/Comm/IssmComm.h"
+#include "../../shared/Enum/Enum.h"
+#include "../../shared/Exceptions/exceptions.h"
+#include "../ToolkitOptions.h"
+#include "./IssmToolkitUtils.h"
+#include <string.h>
+/*}}}*/
+
+/*Routines: */
+int IssmMatTypeFromToolkitOptions(void){ /*{{{*/
+
+	char *mat_type      = NULL;
+	int   mat_type_enum;
+	int   num_procs     = 0;
+	bool  isparallel    = false;
+
+	/*first, figure out if we are running in parallel: */
+	num_procs=IssmComm::GetSize();
+	if(num_procs>1)isparallel=true;
+
+	/*retrieve matrix type as a string, from the Toolkits Options database, similar to what Petsc does. Actually, 
+	 *we try and stick with the Petsc matrix types: */
+	mat_type=ToolkitOptions::GetToolkitOptionValue("mat_type");
+
+	if (strcmp(mat_type,"mpidense")==0){
+		mat_type_enum=MpiDenseEnum;
+	}
+	else if (strcmp(mat_type,"mpisparse")==0){
+		mat_type_enum=MpiSparseEnum;
+	}
+	else if (strcmp(mat_type,"dense")==0){
+		if (isparallel) _error_("Dense matrix type not supported for parallel runs with num_procs>1");
+		else mat_type_enum=DenseEnum;
+	}
+	else _error_("matrix type not supported yet!");
+
+	/*Free resources: */
+	xDelete<char>(mat_type);
+
+	/*return: */
+	return mat_type_enum;
+} /*}}}*/
+int IssmVecTypeFromToolkitOptions(void){ /*{{{*/
+
+	char* vec_type=NULL;
+	int   vec_type_enum;
+	int   num_procs=0;
+	bool  isparallel=false;
+
+	/*first, figure out if we are running in parallel: */
+	num_procs=IssmComm::GetSize();
+	if(num_procs>1)isparallel=true;
+
+	/*retrieve vector type as a string, from the Toolkits Options database, similar to what Petsc does. Actually, 
+	 *we try and stick with the Petsc vector types: */
+	vec_type=ToolkitOptions::GetToolkitOptionValue("vec_type");
+
+	if (strcmp(vec_type,"mpi")==0){
+		vec_type_enum=MpiEnum;
+	}
+	else if (strcmp(vec_type,"seq")==0){
+		if (isparallel) _error_("Dense vector type not supported for parallel runs with num_procs>1");
+		else vec_type_enum=SeqEnum;
+	}
+	else _error_("vector type not supported yet!");
+
+	/*Free resources: */
+	xDelete<char>(vec_type);
+
+	/*return: */
+	return vec_type_enum;
+} /*}}}*/  
+int IssmSolverTypeFromToolkitOptions(void){ /*{{{*/
+
+	int   solver_type_enum;
+	bool  isparallel=false;
+
+	/*first, figure out if we are running in parallel: */
+	int num_procs=IssmComm::GetSize();
+	if(num_procs>1)isparallel=true;
+
+	/*retrieve solver type as a string, from the Toolkits Options database, similar to what Petsc does. Actually, 
+	 *we try and stick with the Petsc vector types: */
+	char* solver_type=ToolkitOptions::GetToolkitOptionValue("solver_type");
+	if(!solver_type) _error_("Solver not set");
+
+	if (strcmp(solver_type,"mumps")==0){
+		solver_type_enum=MumpsEnum;
+	}
+	else if (strcmp(solver_type,"gsl")==0){
+		if (isparallel) _error_("Gsl solver type not supported for parallel runs with num_procs>1");
+		else solver_type_enum=GslEnum;
+	}
+	else _error_("solver type not supported yet!");
+
+	/*Free resources: */
+	xDelete<char>(solver_type);
+
+	/*return: */
+	return solver_type_enum;
+} /*}}}*/  
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmToolkitUtils.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmToolkitUtils.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmToolkitUtils.h	(revision 27955)
@@ -0,0 +1,22 @@
+/*!\file:  IssmToolkitUtils.h
+ * \brief routines used throughout the ISSM toolkit
+ */ 
+
+#ifndef _ISSM_TOOLKIT_UTILS_H_
+#define _ISSM_TOOLKIT_UTILS_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*}}}*/
+
+int IssmMatTypeFromToolkitOptions(void);
+int IssmVecTypeFromToolkitOptions(void);
+int IssmSolverTypeFromToolkitOptions(void);
+
+#endif //#ifndef _ISSMMAT_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmVec.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmVec.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/IssmVec.h	(revision 27955)
@@ -0,0 +1,228 @@
+/*!\file:  IssmVec.h
+ * \brief Main Vector class for the Issm toolkit.
+ */
+
+#ifndef _ISSMVEC_H_
+#define _ISSMVEC_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/Enum/Enum.h"
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/MemOps/MemOps.h"
+#include "./IssmToolkitUtils.h"
+#include <math.h>
+/*}}}*/
+
+/*We need to template this class, in case we want to create Vectors that hold
+  IssmDouble* matrix or IssmPDouble* matrix.
+  Such vectors are useful for use without or with the matlab or python
+  interface (which do not care for IssmDouble types, but only rely on
+  IssmPDouble types)
+*/
+int IssmVecTypeFromToolkitOptions(void);
+template <class doubletype> class IssmSeqVec;
+template <class doubletype> class IssmMpiVec;
+
+template <class doubletype>
+class IssmVec{
+
+	public:
+
+		IssmAbsVec<doubletype>* vector; /*abstract vector, which implements object orientation*/
+
+		/*IssmVec constructors, destructors*/
+		IssmVec(){ /*{{{*/
+			this->vector=NULL;
+		}
+		/*}}}*/
+		IssmVec(int M){/*{{{*/
+
+			switch(IssmVecTypeFromToolkitOptions()){
+
+				case SeqEnum:
+					this->vector=new IssmSeqVec<doubletype>(M);
+					break;
+				case MpiEnum:
+					#ifdef _HAVE_MPI_
+					this->vector=new IssmMpiVec<doubletype>(M);
+					#else
+					_error_("Mpi vector requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("vector type not supported yet!");
+			}
+		}
+		/*}}}*/
+		IssmVec(int m,int M){/*{{{*/
+
+			switch(IssmVecTypeFromToolkitOptions()){
+
+				case SeqEnum:
+					this->vector=new IssmSeqVec<doubletype>(m,M);
+					break;
+				case MpiEnum:
+					#ifdef _HAVE_MPI_
+					this->vector=new IssmMpiVec<doubletype>(m,M);
+					#else
+					_error_("Mpi vector requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("vector type not supported yet!");
+			}
+		}
+		/*}}}*/
+		IssmVec(int M,bool fromlocalsize){/*{{{*/
+
+			switch(IssmVecTypeFromToolkitOptions()){
+
+				case SeqEnum:
+					this->vector=new IssmSeqVec<doubletype>(M,fromlocalsize);
+					break;
+				case MpiEnum:
+					#ifdef _HAVE_MPI_
+					this->vector=new IssmMpiVec<doubletype>(M,fromlocalsize);
+					#else
+					_error_("Mpi vector requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("vector type not supported yet!");
+			}
+		}
+		/*}}}*/
+		IssmVec(doubletype* buffer,int M){/*{{{*/
+
+			switch(IssmVecTypeFromToolkitOptions()){
+
+				case SeqEnum:
+					this->vector=new IssmSeqVec<doubletype>(buffer,M);
+					break;
+				case MpiEnum:
+					#ifdef _HAVE_MPI_
+					this->vector=new IssmMpiVec<doubletype>(buffer,M);
+					#else
+					_error_("Mpi vector requires compilation of MPI!");
+					#endif
+					break;
+				default:
+					_error_("vector type not supported yet!");
+			}
+		}
+		/*}}}*/
+		~IssmVec(){/*{{{*/
+			delete this->vector;
+		}
+		/*}}}*/
+
+		/*IssmVec specific routines*/
+		void Echo(void){/*{{{*/
+			vector->Echo();
+		}
+		/*}}}*/
+		void Assemble(void){/*{{{*/
+			vector->Assemble();
+		}
+		/*}}}*/
+		void SetValues(int ssize, int* list, doubletype* values, InsMode mode){/*{{{*/
+			vector->SetValues(ssize,list,values,mode);
+		}
+		/*}}}*/
+		void SetValue(int dof, doubletype value, InsMode mode){/*{{{*/
+			vector->SetValue(dof,value,mode);
+		}
+		/*}}}*/
+		void GetValue(doubletype* pvalue,int dof){/*{{{*/
+			vector->GetValue(pvalue,dof);
+		}
+		/*}}}*/
+		void GetSize(int* pM){/*{{{*/
+			vector->GetSize(pM);
+		}
+		/*}}}*/
+		void GetLocalSize(int* pM){/*{{{*/
+			vector->GetLocalSize(pM);
+		}
+		/*}}}*/
+		void GetLocalVector(doubletype** pvector,int** pindices){/*{{{*/
+			vector->GetLocalVector(pvector,pindices);
+		} /*}}}*/
+		IssmVec<doubletype>* Duplicate(void){/*{{{*/
+
+			_assert_(this);
+			IssmVec<doubletype>* issmvector=NULL;
+
+			issmvector=new IssmVec<doubletype>();
+			issmvector->vector=this->vector->Duplicate();
+			this->vector->Copy(issmvector->vector);
+
+			return issmvector;
+		}
+		/*}}}*/
+		void Set(doubletype value){/*{{{*/
+			vector->Set(value);
+		}
+		/*}}}*/
+		void AXPY(IssmVec* X, doubletype a){/*{{{*/
+			vector->AXPY(X->vector,a);
+		}
+		/*}}}*/
+		void AYPX(IssmVec* X, doubletype a){/*{{{*/
+			vector->AYPX(X->vector,a);
+		}
+		/*}}}*/
+		doubletype* ToMPISerial(void){/*{{{*/
+			return vector->ToMPISerial();
+		}
+		/*}}}*/
+		doubletype* ToMPISerial0(void){/*{{{*/
+			return vector->ToMPISerial0();
+		}
+		/*}}}*/
+		void Shift(doubletype shift){/*{{{*/
+			vector->Shift(shift);
+		}
+		/*}}}*/
+		void Copy(IssmVec* to){/*{{{*/
+			vector->Copy(to->vector);
+		}
+		/*}}}*/
+		doubletype Norm(NormMode mode){/*{{{*/
+			return vector->Norm(mode);
+		}
+		/*}}}*/
+		void Scale(doubletype scale_factor){/*{{{*/
+			vector->Scale(scale_factor);
+		}
+		/*}}}*/
+		doubletype Dot(IssmVec* input){/*{{{*/
+			return vector->Dot(input->vector);
+		}
+		/*}}}*/
+		void PointwiseDivide(IssmVec* x,IssmVec* y){/*{{{*/
+			vector->PointwiseDivide(x->vector,y->vector);
+		}
+		/*}}}*/
+		void PointwiseMult(IssmVec* x,IssmVec* y){/*{{{*/
+			vector->PointwiseMult(x->vector,y->vector);
+		}
+		/*}}}*/
+		void Pow(doubletype scale_factor){/*{{{*/
+			vector->Pow(scale_factor);
+		}
+		/*}}}*/
+		void Sum(doubletype*  pvalue){/*{{{*/
+			vector->Sum(pvalue);
+		}
+		/*}}}*/
+};
+
+#endif //#ifndef _ISSMVEC_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/SparseRow.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/SparseRow.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/SparseRow.h	(revision 27955)
@@ -0,0 +1,154 @@
+/*!\file:  SparseRow: 
+ * \brief implementation of a sparse row, which can then be used to make a sparse matrix.
+ */ 
+
+#ifndef _SPARSE_ROW_H_
+#define _SPARSE_ROW_H_
+
+/*Headers:*/
+#include "../toolkitsenums.h"
+#include "../../shared/shared.h"
+
+template <class doubletype> 
+class SparseRow{
+
+	public:
+
+		int         M; //real size
+		int         ncols; //number of non-zeros 
+		int*        indices;
+		doubletype* values;
+
+		/*SparseRow constructors, destructors*/
+		SparseRow(){ /*{{{*/
+			 M=0;
+			 ncols=0;
+			 indices=NULL;
+			 values=NULL;
+		} /*}}}*/
+		SparseRow(int in_M){/*{{{*/
+
+			M=in_M;
+			ncols=0;
+			indices=NULL;
+			values=NULL;
+
+		} /*}}}*/
+		~SparseRow(){/*{{{*/
+			if(ncols){
+				xDelete<int>(indices);
+				xDelete<doubletype>(values);
+			}
+		} /*}}}*/
+
+		/*SparseRow specific routines*/
+		void Echo(){ /*{{{*/
+			int i;
+
+			for(i=0;i<ncols;i++){
+				_printf_("(" << indices[i] << "," << values[i] << ") ");
+			}
+		} /*}}}*/
+		void SetValues(int numvalues,int* cols,doubletype* vals, int* mods){ /*{{{*/
+
+			int count;
+			int i,j;
+
+			if(!M)_error_("unknow dimension for this sparse row!");
+
+			/*Deallocate if already allocated: */
+			if(ncols){
+				xDelete<int>(indices);
+				xDelete<doubletype>(values);
+			}
+
+			/*check numvalues: */
+			if(!numvalues)return;
+
+			/*Go through cols and resolve duplicates: */
+			for(i=0;i<numvalues;i++){
+				for(j=i+1;j<numvalues;j++){
+					if (cols[j]==cols[i]){
+						if (mods[j]==ADD_VAL){
+							vals[i]+=vals[j];
+						}
+						else vals[i]=vals[j];
+						cols[j]=-1;
+					}
+					/*Ensure that this value will not be used anymore: */
+				}
+			}
+
+			/*Now go through cols once more, and retrieve only what we need: */
+			ncols=0;
+			for(i=0;i<numvalues;i++)if(cols[i]>=0)ncols++;
+
+			/*Allocate and fill: */
+			indices=xNew<int>(ncols); _assert_(indices);
+			values=xNewZeroInit<doubletype>(ncols);  _assert_(values);
+
+			count=0;
+			for(i=0;i<numvalues;i++){
+				if(cols[i]>=0){
+					indices[count]=cols[i];
+					values[count]=vals[i];
+					count++;
+				}
+			}
+
+			if(count!=ncols)_error_("counter problem during set values operations");
+		} /*}}}*/
+		doubletype Norm(NormMode mode){ /*{{{*/
+
+			int i;
+			doubletype norm=0.;
+
+			switch(mode){
+				case NORM_INF:
+					for(i=0;i<ncols;i++){
+						norm+=fabs(values[i]);
+					}
+					return norm;
+					break; 
+				case NORM_FROB:
+					for(i=0;i<ncols;i++){
+						norm+=values[i]*values[i];
+					}
+					return norm;
+					break; 
+
+				default:
+					_error_("unknown norm !");
+					break;
+			}
+		}
+		/*}}}*/
+		doubletype Mult(doubletype* X){ /*{{{*/
+
+			int i;
+			doubletype mult=0;
+
+			for(i=0;i<ncols;i++){
+				mult+=values[i]*X[indices[i]];
+			}
+
+			return mult;
+		}
+		/*}}}*/
+		int Nnz(void){ /*{{{*/
+
+			return ncols;
+		}
+		/*}}}*/
+		void SetIrnJcnA(int* irn_loc,int* jcn_loc,doubletype* a_loc,int i_index,int count){/*{{{*/
+			int i;
+
+			for(i=0;i<ncols;i++){
+				irn_loc[count+i]=i_index;
+				jcn_loc[count+i]=indices[i]+1; //fortran indexing
+				a_loc[count+i]=values[i];
+			}
+		}
+		/*}}}*/
+};
+#endif //#ifndef _SPARSE_ROW_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/issmtoolkit.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/issmtoolkit.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/issm/issmtoolkit.h	(revision 27955)
@@ -0,0 +1,28 @@
+/* \file issmtoolkit.h
+ * \brief all includes for MPI layer
+ */
+
+#ifndef _ISSM_TOOLKIT_H_
+#define _ISSM_TOOLKIT_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./IssmAbsMat.h"
+#include "./IssmAbsVec.h"
+#include "./IssmDenseMat.h"
+#include "./IssmMat.h"
+#include "./IssmSeqVec.h"
+#include "./IssmVec.h"
+#include "./IssmSolver.h"
+
+#ifdef _HAVE_MPI_
+#include "./IssmMpiDenseMat.h"
+#include "./IssmMpiSparseMat.h"
+#include "./IssmMpiVec.h"
+#endif
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/metis/metisincludes.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/metis/metisincludes.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/metis/metisincludes.h	(revision 27955)
@@ -0,0 +1,20 @@
+/* \file metisincludes.h
+ * \brief all includes from metis + our own patches
+ */
+
+#ifndef _METIS_INCLUDES_H_
+#define _METIS_INCLUDES_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Metis includes: */
+#include <metis.h>
+
+/*our own patches: */
+#include "patches/metispatches.h"
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/metis/patches/METIS_PartMeshNodalPatch.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/metis/patches/METIS_PartMeshNodalPatch.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/metis/patches/METIS_PartMeshNodalPatch.cpp	(revision 27955)
@@ -0,0 +1,81 @@
+/*!\file METIS_PartMeshNodalPatch
+ * \brief common interface to Metis 4.0 and 5.0
+ */
+
+#include <config.h>
+#include "../metisincludes.h"
+#include "../../../shared/shared.h"
+
+/*METIS prototypes*/
+extern "C" {
+#if _METIS_VERSION_ == 4
+	void METIS_PartMeshNodal(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
+#endif
+#if _METIS_VERSION_ == 5
+	int METIS_PartMeshNodal(idx_t*, idx_t*, idx_t*, idx_t*, idx_t*, idx_t*, idx_t*, real_t*, idx_t*, idx_t*, idx_t*, idx_t*);
+	int METIS_SetDefaultOptions(idx_t *options);
+#endif
+}
+
+void METIS_PartMeshNodalPatch(int numberofelements,int numberofnodes,int* index,int* vweights,int num_procs,int* epart,int* npart){
+
+	#if _METIS_VERSION_ == 4
+	/*Our interface originates in the Metis 4.0 version, hence identical calls*/
+	int  edgecut=1;
+	int  etype  =1; //tria mesh see metis/Programs/Io.c
+	int  numflag=0;
+	METIS_PartMeshNodal(&numberofelements,&numberofnodes, index,&etype,&numflag,&num_procs,&edgecut, epart, npart); 
+
+	#elif _METIS_VERSION_ == 5
+
+	/*Create options*/
+	idx_t options[METIS_NOPTIONS];
+	METIS_SetDefaultOptions(options);
+
+	options[METIS_OPTION_PTYPE]   = METIS_PTYPE_KWAY;     /* partitioning method  */
+	options[METIS_OPTION_OBJTYPE] = METIS_OBJTYPE_CUT;    /* type of objective */
+	options[METIS_OPTION_CTYPE]   = METIS_CTYPE_SHEM;     /* matching scheme to be used during coarsening.*/
+	options[METIS_OPTION_IPTYPE]  = METIS_IPTYPE_METISRB; /* algorithm used during initial partitioning*/
+	options[METIS_OPTION_RTYPE]   = METIS_RTYPE_GREEDY;   /* algorithm used for refinement*/
+	options[METIS_OPTION_DBGLVL]  = 0;                    /* amount of progress/debugging information will be printed */
+	options[METIS_OPTION_UFACTOR] = 30;                   /* maximum allowed load imbalance among the partitions*/
+	options[METIS_OPTION_MINCONN] = 0;                    /* explicitly minimize the maximum connectivity ?*/
+	options[METIS_OPTION_CONTIG]  = 0;                    /* force contiguous partitions?*/
+	options[METIS_OPTION_SEED]    = -1;                   /* seed for the random number generator*/
+	options[METIS_OPTION_NITER]   = 10;                   /* number of iterations for the refinement algorithms*/
+	options[METIS_OPTION_NCUTS]   = 1;                    /* number of different partitionings that it will compute*/
+
+	/*create eptr*/
+	idx_t  k=0;
+	idx_t* eptr=xNew<idx_t>(numberofelements+1);
+	eptr[0]=0;
+	for(int i=0;i<numberofelements;i++){
+		k+=3;
+		eptr[i+1]=k;
+	}
+
+	/*create tpwgts (Weight per processor)*/
+	real_t* tpwgts=xNew<real_t>(num_procs);
+	for(int i=0;i<num_procs;i++) tpwgts[i]=1.0/(num_procs);
+
+	/*create vwgt (Weight per node)*/
+	idx_t* vwgts=NULL;
+	if(vweights){
+		vwgts=xNew<idx_t>(numberofnodes);
+		for(int i=0;i<numberofnodes;i++) vwgts[i]=reCast<idx_t>(vweights[i]);
+	}
+
+	/*Call METIS*/
+	idx_t objval;
+	int output = METIS_PartMeshNodal(&numberofelements,&numberofnodes,eptr,index,vwgts,NULL,&num_procs,tpwgts,options,&objval,epart,npart);
+	if(output!=METIS_OK) _error_("Could not partition mesh");
+
+	/*clean-up*/
+	xDelete<idx_t>(vwgts);
+	xDelete<idx_t>(eptr);
+	xDelete<real_t>(tpwgts);
+
+	#else
+	_error_("METIS version not supported yet");
+	#endif
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/metis/patches/metispatches.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/metis/patches/metispatches.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/metis/patches/metispatches.h	(revision 27955)
@@ -0,0 +1,16 @@
+/*\file metispatches.h
+ * \brief: our own patches for metis. Mainly to work through new apis from 4.0 to 5.0 version.
+ */
+
+#ifndef _METIS_PATCHES_H_
+#define _METIS_PATCHES_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+void METIS_PartMeshNodalPatch(int numberofelements,int numberofnodes,int* index,int* vweights,int num_procs,int* epart,int* npart);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/commops/DetermineGlobalSize.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/commops/DetermineGlobalSize.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/commops/DetermineGlobalSize.cpp	(revision 27955)
@@ -0,0 +1,20 @@
+/* \file DetermineGlobalSize.cpp
+ * \brief: routine to determine global size from local size 
+ */
+
+#include <stdio.h>
+#include <math.h>
+#include "../../../shared/shared.h"
+#include "../../../shared/Numerics/types.h"
+
+int DetermineGlobalSize(int local_size,ISSM_MPI_Comm comm){
+
+	/*output: */
+	int  global_size;
+
+	ISSM_MPI_Reduce(&local_size, &global_size, 1, ISSM_MPI_INT, ISSM_MPI_SUM, 0, comm);
+	ISSM_MPI_Bcast(&global_size,1,ISSM_MPI_INT,0,comm);
+
+	return global_size;
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/commops/DetermineLocalSize.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/commops/DetermineLocalSize.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/commops/DetermineLocalSize.cpp	(revision 27955)
@@ -0,0 +1,58 @@
+/* \file DetermineLocalSize.cpp
+ * \brief: routine to determine local size of a global petsc matrix or vector. 
+ */
+
+#include <stdio.h>
+#include <math.h>
+#include "../../../shared/shared.h"
+
+int DetermineLocalSize(int global_size,ISSM_MPI_Comm comm){
+
+	/*output: */
+	int  local_size;
+
+	/*intermediary: */
+	int  i;
+	int  row_rest;
+	int* num_local_rows=NULL;
+
+	/*from MPI: */
+	int num_procs;
+	int my_rank;
+
+	/*recover my_rank*/
+	ISSM_MPI_Comm_rank(comm,&my_rank);
+	ISSM_MPI_Comm_size(comm,&num_procs);
+
+	/* TODO replace the following with ->
+
+	local_size=global_size/num_procs; // integer division
+	if (global_size%num_procs>my_rank) local_size++; // distribute the remainder
+	return local_size;
+
+	<- to here  */
+
+	/*We are  not bound by any library, just use what seems most logical*/
+	num_local_rows=xNew<int>(num_procs);    
+
+	for (i=0;i<num_procs;i++){
+		/*Here, we use floor. We under distribute rows. The rows 
+		  left  are then redistributed, therefore resulting in a 
+		  more even distribution.*/
+		num_local_rows[i]=(int)floor((double)global_size/(double)num_procs); 
+	}
+
+	/*There may be some rows left. Distribute evenly.*/ 
+	row_rest=global_size - num_procs*(int)floor((double)global_size/(double)num_procs);
+	for (i=0;i<row_rest;i++){
+		num_local_rows[i]++;
+	}
+	local_size=num_local_rows[my_rank];
+
+	/*Free resources: */
+	xDelete<int>(num_local_rows);
+
+	/*return size: */
+	return local_size;
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/commops/DetermineRowRankFromLocalSize.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/commops/DetermineRowRankFromLocalSize.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/commops/DetermineRowRankFromLocalSize.cpp	(revision 27955)
@@ -0,0 +1,46 @@
+/* \file DetermineRowRankFromLocalSize.cpp
+ * \brief: routine to determine, from local size of a matrix or vector (in terms of number 
+ * of rows), a vector of global size  which for each row of the matrix or vector, determines
+ * what cpu this row belong to.
+ */
+
+#include <stdio.h>
+#include <math.h>
+#include "../../../shared/shared.h"
+#include "../../../shared/Numerics/types.h"
+
+int* DetermineRowRankFromLocalSize(int global_size,int localsize,ISSM_MPI_Comm comm){
+
+	/*intermediary: */
+	int i,j;
+	int my_rank=0;
+	int num_procs=0;
+	int lower_row,upper_row;
+
+	/*output: */
+	int* RowRank=NULL;
+
+	ISSM_MPI_Comm_rank(comm,&my_rank);
+	ISSM_MPI_Comm_size(comm,&num_procs);
+
+	/*allocate: */
+	RowRank=xNew<int>(global_size);
+
+	/*Gather all local_size values into alllocalsizes, for all cpus*/
+	int* alllocalsizes=xNew<int>(num_procs);
+	ISSM_MPI_Allgather(&localsize,1,ISSM_MPI_INT,alllocalsizes,1,ISSM_MPI_INT,comm);
+
+	/*From all localsizes, get lower row and upper row*/
+	lower_row=0;
+	upper_row=lower_row+alllocalsizes[0];
+	for(j=lower_row;j<upper_row;j++)RowRank[j]=0;
+
+	for(i=1;i<num_procs;i++){
+		lower_row=lower_row+alllocalsizes[i-1];
+		upper_row=upper_row+alllocalsizes[i];
+		for(j=lower_row;j<upper_row;j++)RowRank[j]=i;
+	}
+	xDelete<int>(alllocalsizes);
+
+	return RowRank;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/commops/GetOwnershipBoundariesFromRange.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/commops/GetOwnershipBoundariesFromRange.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/commops/GetOwnershipBoundariesFromRange.cpp	(revision 27955)
@@ -0,0 +1,45 @@
+/*! \file:  GetOwnershipBoundariesFromRange.cpp
+ *  \brief from a local range on each cpu, we determine what 
+ *  lower row and upper row from a matrix a cpu owns.
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include "../../../shared/MemOps/MemOps.h"
+#include "../../../shared/io/Comm/IssmComm.h"
+
+void GetOwnershipBoundariesFromRange(int* plower_row,int* pupper_row,int range,ISSM_MPI_Comm comm){
+
+	/*externals :*/
+	int my_rank;
+	int num_procs;
+
+	/*recover my_rank and num_procs:*/
+	ISSM_MPI_Comm_size(comm,&num_procs);
+	ISSM_MPI_Comm_rank(comm,&my_rank);
+
+	/*output: */
+	int lower_row,upper_row;
+
+	/*Gather all range values into allranges, for all nodes*/
+	int* allranges=xNew<int>(num_procs);
+	ISSM_MPI_Allgather(&range,1,ISSM_MPI_INT,allranges,1,ISSM_MPI_INT,comm);
+
+	/*From all ranges, get lower row and upper row*/
+	lower_row=0;
+	upper_row=lower_row+allranges[0];
+	for(int i=1;i<=my_rank;i++){
+		lower_row=lower_row+allranges[i-1];
+		upper_row=upper_row+allranges[i];
+	}
+
+	/*Assign output*/
+	*plower_row=lower_row;
+	*pupper_row=upper_row;
+	xDelete<int>(allranges);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/commops/commops.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/commops/commops.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/commops/commops.h	(revision 27955)
@@ -0,0 +1,17 @@
+/*! \file mpipatches.h
+ *  \brief: prototype header for all ISSM add-ons to MPI
+ */
+
+#ifndef MPI_PATCHES_H_ 
+#define MPI_PATCHES_H_
+
+#include "../../../shared/Numerics/types.h" 
+#include "../../../shared/io/Comm/IssmComm.h"
+#include "../../mpi/issmmpi.h"
+
+int DetermineLocalSize(int global_size,ISSM_MPI_Comm comm);
+int* DetermineRowRankFromLocalSize(int global_size,int localsize,ISSM_MPI_Comm comm);
+void GetOwnershipBoundariesFromRange(int* plower_row,int* pupper_row,int range,ISSM_MPI_Comm comm);
+int DetermineGlobalSize(int local_size,ISSM_MPI_Comm comm);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/issmmpi.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/issmmpi.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/issmmpi.cpp	(revision 27955)
@@ -0,0 +1,597 @@
+/* \file issmmpi.cpp
+ * \brief: implementation of all the mpi wrappers that ISSM requires. The goal is to control
+ * which MPI layer we are using at compile time: the standard mpi, the autodiff mpi or no mpi at all.
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <cassert>
+#include <cstring> // for memcpy
+
+#include "./issmmpi.h"
+
+#if defined(_HAVE_MPI_) && defined(_HAVE_CODIPACK_)
+MpiTypes* mpiTypes;
+#endif
+
+#include "../../shared/Numerics/types.h"
+
+#ifndef _HAVE_MPI_
+ISSM_MPI_Status ourIssmMPIStatusIgnore=0;
+size_t sizeHelper(ISSM_MPI_Datatype type) { /*{{{*/
+
+  switch(type) {
+  case ISSM_MPI_CHAR:
+    return sizeof(char);
+    break;
+  case ISSM_MPI_DOUBLE:
+    return sizeof(double);
+    break;
+  case ISSM_MPI_INT:
+    return sizeof(int);
+    break;
+  default:
+    assert(0);
+    break;
+  }
+  return 0;
+}/*}}}*/
+#endif
+
+int ISSM_MPI_Allgather(void *sendbuf, int sendcount, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcount, ISSM_MPI_Datatype recvtype, ISSM_MPI_Comm comm) {  /*{{{*/
+  int rc=0;
+  assert(sendcount==recvcount || sendtype==recvtype); // we handle only identical representations
+#ifdef _HAVE_MPI_
+#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+  rc=AMPI_Allgather(sendbuf,
+		    sendcount,
+		    sendtype,
+		    recvbuf,
+		    recvcount,
+		    recvtype,
+		    comm);
+# else
+  rc=MPI_Allgather(sendbuf,
+		   sendcount,
+		   sendtype,
+		   recvbuf,
+		   recvcount,
+		   recvtype,
+		   comm);
+# endif
+#else
+# ifdef _HAVE_AD_
+  if (sendtype==ISSM_MPI_DOUBLE) {
+    IssmDouble* activeSendBuf=(IssmDouble*)sendbuf;
+    IssmDouble* activeRecvBuf=(IssmDouble*)recvbuf;
+    for(int i=0;i<sendcount;++i) activeRecvBuf[i]=activeSendBuf[i];
+  }
+  else
+# endif
+    memcpy(recvbuf,sendbuf,sizeHelper(sendtype)*sendcount);
+#endif
+  return rc;
+} /*}}}*/
+int ISSM_MPI_Allgatherv(void *sendbuf, int sendcount, ISSM_MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, ISSM_MPI_Datatype recvtype, ISSM_MPI_Comm comm) {  /*{{{*/
+  int rc=0;
+  assert(sendtype==recvtype); // we handle only identical representations
+#ifdef _HAVE_MPI_
+#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+  rc=AMPI_Allgatherv(sendbuf,
+		     sendcount,
+		     sendtype,
+		     recvbuf,
+		     recvcounts,
+		     displs,
+		     recvtype,
+		     comm);
+# else
+  rc=MPI_Allgatherv(sendbuf,
+		    sendcount,
+		    sendtype,
+		    recvbuf,
+		    recvcounts,
+		    displs,
+		    recvtype,
+		    comm);
+# endif
+#else
+  assert(sendcount==recvcounts[0]); // we handle only identical representations
+# ifdef _HAVE_AD_
+  if (sendtype==ISSM_MPI_DOUBLE) {
+    IssmDouble* activeSendBuf=(IssmDouble*)sendbuf;
+    IssmDouble* activeRecvBuf=(IssmDouble*)(recvbuf)+displs[0];
+    for(int i=0;i<sendcount;++i) activeRecvBuf[i]=activeSendBuf[i];
+  }
+  else
+# endif
+    memcpy((char*)recvbuf+(sizeHelper(recvtype)*displs[0]),sendbuf,sizeHelper(sendtype)*sendcount);
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Allreduce(void *sendbuf, void *recvbuf, int count, ISSM_MPI_Datatype datatype, ISSM_MPI_Op op, ISSM_MPI_Comm comm){/*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+  rc=AMPI_Allreduce(sendbuf,
+		    recvbuf,
+		    count,
+		    datatype,
+		    op,
+		    comm);
+# else
+  rc=MPI_Allreduce(sendbuf,
+		   recvbuf,
+		   count,
+		   datatype,
+		   op,
+		   comm);
+# endif
+#else
+#ifdef _HAVE_AD_
+  if (datatype==ISSM_MPI_DOUBLE) {
+    IssmDouble* activeSendBuf=(IssmDouble*)sendbuf;
+    IssmDouble* activeRecvBuf=(IssmDouble*)recvbuf;
+    for(int i=0;i<count;++i) activeRecvBuf[i]=activeSendBuf[i];
+  }
+  else
+# endif
+    memcpy(recvbuf,sendbuf,sizeHelper(datatype)*count);
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Barrier(ISSM_MPI_Comm comm){  /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+  rc=AMPI_Barrier(comm);
+# else
+  rc=MPI_Barrier(comm);
+# endif
+#else
+// do nothing
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Bcast(void *buffer, int count, ISSM_MPI_Datatype datatype, int root, ISSM_MPI_Comm comm){  /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+  rc=AMPI_Bcast(buffer,
+		count,
+		datatype,
+		root,
+		comm);
+# else
+  rc=MPI_Bcast(buffer,
+	       count,
+	       datatype,
+	       root,
+	       comm);
+# endif
+#else
+// nothing to be done here
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Comm_free(ISSM_MPI_Comm *comm){ /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+  assert(0); // to be implemented
+# else
+  rc=MPI_Comm_free(comm);
+# endif
+#else
+// do nothing
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Comm_rank(ISSM_MPI_Comm comm, int *rank){  /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+  rc=MPI_Comm_rank(comm,
+		   rank);
+#else
+  *rank=0;
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Comm_size( ISSM_MPI_Comm comm, int *size){ /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+  rc=MPI_Comm_size(comm,
+		   size);
+#else
+  *size=1;
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Finalize(void){  /*{{{*/
+
+	int rc=0;
+	#ifdef _HAVE_MPI_
+		#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+			#if defined(_HAVE_ADJOINTMPI_)
+				rc=AMPI_Finalize();
+			#elif defined(_HAVE_MEDIPACK_)
+				/*Old implementation*/
+				//TOOL::finalize();
+				/*New implementation*/
+				delete mpiTypes;
+				rc=AMPI_Finalize();
+			#else
+				rc=AMPI_Finalize_NT();
+			#endif
+		#else
+		  rc=MPI_Finalize();
+		#endif
+	#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Gather(void *sendbuf, int sendcnt, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcnt, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm){  /*{{{*/
+
+  int rc=0;
+  assert(sendtype==recvtype && sendcnt==recvcnt); // we handle only identical representations
+#ifdef _HAVE_MPI_
+#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+  rc=AMPI_Gather(sendbuf,
+		 sendcnt,
+		 sendtype,
+		 recvbuf,
+		 recvcnt,
+		 recvtype,
+		 root,
+		 comm);
+# else
+  rc=MPI_Gather(sendbuf,
+		sendcnt,
+		sendtype,
+		recvbuf,
+		recvcnt,
+		recvtype,
+		root,
+		comm);
+# endif
+#else
+# ifdef _HAVE_AD_
+  if (sendtype==ISSM_MPI_DOUBLE) {
+    IssmDouble* activeSendBuf=(IssmDouble*)sendbuf;
+    IssmDouble* activeRecvBuf=(IssmDouble*)recvbuf;
+    for(int i=0;i<sendcnt;++i) activeRecvBuf[i]=activeSendBuf[i];
+  }
+  else
+# endif
+    memcpy(recvbuf,sendbuf,sizeHelper(sendtype)*sendcnt);
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Gatherv(void *sendbuf, int sendcnt, ISSM_MPI_Datatype sendtype, void *recvbuf, int *recvcnts, int *displs, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm){/*{{{*/
+
+  int rc=0;
+  assert(sendtype==recvtype); // we handle only identical representations
+#ifdef _HAVE_MPI_
+#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+  rc=AMPI_Gatherv(sendbuf,
+		  sendcnt,
+		  sendtype,
+		  recvbuf,
+		  recvcnts,
+		  displs,
+		  recvtype,
+		  root,
+		  comm);
+# else
+  rc=MPI_Gatherv(sendbuf,
+		 sendcnt,
+		 sendtype,
+		 recvbuf,
+		 recvcnts,
+		 displs,
+		 recvtype,
+		 root,
+		 comm);
+# endif
+#else
+  assert(sendcnt==recvcnts[0]); // we handle only identical representations
+#ifdef _HAVE_AD_
+  if (sendtype==ISSM_MPI_DOUBLE) {
+    IssmDouble* activeSendBuf=(IssmDouble*)sendbuf;
+    IssmDouble* activeRecvBuf=(IssmDouble*)(recvbuf)+displs[0];
+    for(int i=0;i<sendcnt;++i) activeRecvBuf[i]=activeSendBuf[i];
+  }
+  else
+# endif
+    memcpy((char*)recvbuf+(sizeHelper(recvtype)*displs[0]),sendbuf,sizeHelper(sendtype)*sendcnt);
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Init(int *argc, char ***argv){  /*{{{*/
+
+	int rc=0;
+	#ifdef _HAVE_MPI_
+		#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+			#if defined(_HAVE_ADJOINTMPI_)
+				rc=AMPI_Init(argc,argv);
+			#elif defined(_HAVE_MEDIPACK_)
+				rc=AMPI_Init(argc,argv);
+				/*Old implementation of Medipack*/
+				//TOOL::init();
+				/*New*/
+				//MpiTypes* mpiTypes;
+				mpiTypes = new MpiTypes();
+			#else
+				rc=AMPI_Init_NT(argc,argv);
+			#endif
+		#else
+			rc=MPI_Init(argc,argv);
+		#endif
+	#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Recv(void *buf, int count, ISSM_MPI_Datatype datatype, int source, int tag, ISSM_MPI_Comm comm, ISSM_MPI_Status *status){ /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+  rc=AMPI_Recv(buf,
+	       count,
+	       datatype,
+	       source,
+	       tag,
+			 #if !defined(_HAVE_ADJOINTMPI_) && !defined(_HAVE_MEDIPACK_)
+	       AMPI_FROM_SEND, // as long as there are no other variants
+			 #endif
+	       comm,
+	       status);
+# else
+  rc=MPI_Recv(buf,
+	      count,
+	      datatype,
+	      source,
+	      tag,
+	      comm,
+	      status);
+# endif
+#else
+// nothing to be done here
+// as long as nobody tries to do anything with 'status'
+// we won't do anything to it here either
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Reduce(void *sendbuf, void *recvbuf, int count, ISSM_MPI_Datatype datatype, ISSM_MPI_Op op, int root, ISSM_MPI_Comm comm){ /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+  rc=AMPI_Reduce(sendbuf,
+		 recvbuf,
+		 count,
+		 datatype,
+		 op,
+		 root,
+		 comm);
+# else
+  rc=MPI_Reduce(sendbuf,
+		recvbuf,
+		count,
+		datatype,
+		op,
+		root,
+		comm);
+# endif
+#else
+# ifdef _HAVE_AD_
+  if (datatype==ISSM_MPI_DOUBLE) {
+    IssmDouble* activeSendBuf=(IssmDouble*)sendbuf;
+    IssmDouble* activeRecvBuf=(IssmDouble*)recvbuf;
+    for(int i=0;i<count;++i) activeRecvBuf[i]=activeSendBuf[i];
+  }
+  else
+# endif
+    memcpy(recvbuf,sendbuf,sizeHelper(datatype)*count);
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Scatter(void *sendbuf, int sendcnt, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcnt, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm){ /*{{{*/
+
+  int rc=0;
+  assert(sendtype==recvtype && sendcnt==recvcnt); // we handle only identical representations
+#ifdef _HAVE_MPI_
+#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+  rc=AMPI_Scatter(sendbuf,
+		  sendcnt,
+		  sendtype,
+		  recvbuf,
+		  recvcnt,
+		  recvtype,
+		  root,
+		  comm);
+# else
+  rc=MPI_Scatter(sendbuf,
+		 sendcnt,
+		 sendtype,
+		 recvbuf,
+		 recvcnt,
+		 recvtype,
+		 root,
+		 comm);
+# endif
+#else
+# ifdef _HAVE_AD_
+  if (sendtype==ISSM_MPI_DOUBLE) {
+    IssmDouble* activeSendBuf=(IssmDouble*)sendbuf;
+    IssmDouble* activeRecvBuf=(IssmDouble*)recvbuf;
+    for(int i=0;i<recvcnt;++i) activeRecvBuf[i]=activeSendBuf[i];
+  }
+  else
+# endif
+    memcpy(recvbuf,sendbuf,sizeHelper(sendtype)*recvcnt);
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Scatterv(void *sendbuf, int *sendcnts, int *displs, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcnt, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm){ /*{{{*/
+
+  int rc=0;
+  assert(sendtype==recvtype); // we handle only identical representations
+#ifdef _HAVE_MPI_
+#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+  rc=AMPI_Scatterv(sendbuf,
+		   sendcnts,
+		   displs,
+		   sendtype,
+		   recvbuf,
+		   recvcnt,
+		   recvtype,
+		   root,
+		   comm);
+# else
+  rc=MPI_Scatterv(sendbuf,
+		  sendcnts,
+		  displs,
+		  sendtype,
+		  recvbuf,
+		  recvcnt,
+		  recvtype,
+		  root,
+		  comm);
+# endif
+#else
+  assert(sendcnts[0]==recvcnt); // we handle only identical representations
+# ifdef _HAVE_AD_
+  if (sendtype==ISSM_MPI_DOUBLE) {
+    IssmDouble* activeSendBuf=(IssmDouble*)(sendbuf)+displs[0];
+    IssmDouble* activeRecvBuf=(IssmDouble*)recvbuf;
+    for(int i=0;i<recvcnt;++i) activeRecvBuf[i]=activeSendBuf[i];
+  }
+  else
+# endif
+    memcpy(recvbuf,(char*)sendbuf+(sizeHelper(sendtype)*displs[0]),sizeHelper(sendtype)*recvcnt);
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Send(void *buf, int count, ISSM_MPI_Datatype datatype, int dest, int tag, ISSM_MPI_Comm comm){ /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+  rc=AMPI_Send(buf,
+	       count,
+	       datatype,
+	       dest,
+	       tag,
+			 #if !defined(_HAVE_ADJOINTMPI_) && !defined(_HAVE_MEDIPACK_)
+	       AMPI_TO_RECV, // as long as there are no other variants
+			 #endif
+	       comm);
+# else
+  rc=MPI_Send(buf,
+	      count,
+	      datatype,
+	      dest,
+	      tag,
+	      comm);
+# endif
+#else
+// nothing to be done here
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Isend(void *buf, int count, ISSM_MPI_Datatype datatype, int dest, int tag, ISSM_MPI_Comm comm, ISSM_MPI_Request* req){ /*{{{*/
+
+  int rc=0;
+#ifdef _HAVE_MPI_
+#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+  rc=AMPI_Isend(buf,
+	       count,
+	       datatype,
+	       dest,
+	       tag,
+			 #if !defined(_HAVE_ADJOINTMPI_) && !defined(_HAVE_MEDIPACK_)
+	       AMPI_TO_RECV, // as long as there are no other variants
+			 #endif
+	       comm,
+		   req);
+# else
+  rc=MPI_Isend(buf,
+	      count,
+	      datatype,
+	      dest,
+	      tag,
+	      comm,
+	      req);
+# endif
+#else
+// nothing to be done here
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Wait(ISSM_MPI_Request *req, ISSM_MPI_Status *status){/*{{{*/
+	int rc=0;
+#ifdef _HAVE_MPI_
+#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+	rc=AMPI_Wait(req, status);
+# else
+	rc=MPI_Wait(req, status);
+# endif
+#else
+// nothing to be done here
+#endif
+	return rc;
+}/*}}}*/
+double ISSM_MPI_Wtime(void){/*{{{*/
+
+#ifdef _HAVE_MPI_
+	return MPI_Wtime();
+#else
+	assert(0); // to be implemented
+	return 0.0;
+#endif
+}/*}}}*/
+void ISSM_MPI_ContiguousInAdolc(size_t aSize) { /*{{{*/
+
+#ifdef _HAVE_ADOLC_
+  ensureContiguousLocations(aSize);
+#else
+  fprintf(stderr, "*** Codipack ISSM_MPI_ContiguousInAdolc()\n");
+#endif
+}/*}}}*/
+int ISSM_MPI_Comm_split(ISSM_MPI_Comm comm, int color, int key, ISSM_MPI_Comm *newcomm){ /*{{{*/
+
+int rc=0;
+#ifdef _HAVE_MPI_
+#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+rc=MPI_Comm_split(comm, color, key, newcomm);
+#else
+rc=MPI_Comm_split(comm, color, key, newcomm);
+#endif
+#else
+// nothing to be done here
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Intercomm_create(ISSM_MPI_Comm comm,int local_leader,ISSM_MPI_Comm peer_comm, int remote_leader, int tag,ISSM_MPI_Comm *newintercomm){ /*{{{*/
+
+	int rc=0;
+#ifdef _HAVE_MPI_
+#if defined(_HAVE_AMPI_) &&  !defined(_WRAPPERS_)
+	rc=MPI_Intercomm_create(comm,local_leader,peer_comm,remote_leader,tag,newintercomm);
+#else
+	rc=MPI_Intercomm_create(comm,local_leader,peer_comm,remote_leader,tag,newintercomm);
+#endif
+#else
+	// nothing to be done here
+#endif
+	return rc;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/issmmpi.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/issmmpi.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mpi/issmmpi.h	(revision 27955)
@@ -0,0 +1,236 @@
+/* \file issmmpi.h
+ * \brief: header file that defines all the mpi wrappers that ISSM requires. The goal is to control
+ * which MPI layer we are using at compile time: the standard mpi, the autodiff mpi or no mpi at all.
+ */
+
+#ifndef _ISSM_MPI_H_
+#define _ISSM_MPI_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include <cstddef>
+#include <cassert>
+#include "../../shared/Numerics/types.h"
+
+#if defined(_HAVE_MPI_)
+	/*Include header files: {{{*/
+	#if defined(_HAVE_AMPI_) && !defined(_WRAPPERS_)
+		#if defined(_HAVE_ADJOINTMPI_)
+			#include <ampi_tape.hpp>
+
+		#elif defined(_HAVE_MEDIPACK_)
+			#include "medi/medi.hpp"
+			using namespace medi;
+			#if defined(_HAVE_CODIPACK_)
+			/*Old implementation of MeDiPack*/
+			//#include "codi/externals/codiMediPackTypes.hpp"
+			//#define TOOL CoDiPackTool<IssmDouble>
+			//#define AMPI_ADOUBLE TOOL::MPI_TYPE
+			//
+			//#include <codi/externals/codiMpiTypes.hpp>
+			//using MpiTypes = CoDiMpiTypes<IssmDouble>;
+			/*New implementation*/
+			#if _CODIPACK_MAJOR_==2
+			#include <codi/tools/mpi/codiMpiTypes.hpp>
+			using MpiTypes = codi::CoDiMpiTypes<IssmDouble>;
+
+			#elif _CODIPACK_MAJOR_==1
+			#include <codi/externals/codiMpiTypes.hpp>
+			using MpiTypes = CoDiMpiTypes<IssmDouble>;
+
+			#else
+			#error "_CODIPACK_MAJOR_ not supported"
+			#endif
+
+			extern MpiTypes* mpiTypes;
+			#define AMPI_ADOUBLE mpiTypes->MPI_TYPE
+			#elif defined(_HAVE_ADOLC_)
+			#include "adolc/medipacksupport.h"
+			#define TOOL AdolcTool
+			#else
+			#error "don't know about AD tool"
+			#endif
+
+		#else
+			#include <ampi/ampi.h>
+		#endif
+	#elif  _HAVE_PETSC_MPI_ // PETSc now hides their MPI header. It can be reached through PETSc's header file.
+		#include <petsc.h>
+	#else
+		#include <mpi.h>
+	#endif
+	/*}}}*/
+	/*MPI defines: *{{{*/
+
+	// types
+	#if defined(_HAVE_MEDIPACK_) && !defined(_WRAPPERS_)
+	typedef AMPI_Comm     ISSM_MPI_Comm;
+	typedef AMPI_Datatype ISSM_MPI_Datatype;
+	typedef AMPI_Op       ISSM_MPI_Op;
+	typedef AMPI_Status   ISSM_MPI_Status;
+	typedef AMPI_Request  ISSM_MPI_Request;
+	#else
+	typedef MPI_Comm      ISSM_MPI_Comm;
+	typedef MPI_Datatype  ISSM_MPI_Datatype;
+	typedef MPI_Op        ISSM_MPI_Op;
+	typedef MPI_Status    ISSM_MPI_Status;
+	#if defined(_HAVE_AMPI_) && !defined(_WRAPPERS_)
+	typedef AMPI_Request   ISSM_MPI_Request;
+	#else
+	typedef MPI_Request  ISSM_MPI_Request;
+	#endif
+	#endif
+
+	#if defined(_HAVE_MEDIPACK_) && !defined(_WRAPPERS_)
+	#define ISSM_MPI_CHAR          AMPI_CHAR
+	#define ISSM_MPI_DOUBLE        AMPI_ADOUBLE // corresponds to IssmDouble
+	#define ISSM_MPI_PDOUBLE       AMPI_DOUBLE  // corresponds to IssmPDouble
+	#define ISSM_MPI_INT           AMPI_INT
+	#define ISSM_MPI_LONG_LONG_INT AMPI_LONG_LONG_INT
+
+	// operations
+	#define ISSM_MPI_MAX        AMPI_MAX
+	#define ISSM_MPI_MIN        AMPI_MIN
+	#define ISSM_MPI_PROD       AMPI_PROD
+	#define ISSM_MPI_SUM        AMPI_SUM
+
+	// others
+	#define ISSM_MPI_COMM_WORLD    AMPI_COMM_WORLD
+	#define ISSM_MPI_STATUS_IGNORE AMPI_STATUS_IGNORE
+	#define ISSM_MPI_ANY_TAG       AMPI_ANY_TAG
+	#define ISSM_MPI_ANY_SOURCE    AMPI_ANY_SOURCE
+	#define ISSM_MPI_REQUEST_NULL  AMPI_Request()
+
+	#else
+		#if defined(_HAVE_AMPI_) && !defined(_WRAPPERS_)
+			#define ISSM_MPI_DOUBLE    AMPI_ADOUBLE
+		#else
+			#define ISSM_MPI_DOUBLE    MPI_DOUBLE
+		#endif
+		#define ISSM_MPI_PDOUBLE        MPI_DOUBLE
+		#define ISSM_MPI_INT            MPI_INT
+		#define ISSM_MPI_LONG_LONG_INT  MPI_LONG_LONG_INT
+		#define ISSM_MPI_CHAR           MPI_CHAR
+
+		// operations
+		#define ISSM_MPI_MAX        MPI_MAX
+		#define ISSM_MPI_MIN        MPI_MIN
+		#define ISSM_MPI_PROD       MPI_PROD
+		#define ISSM_MPI_SUM        MPI_SUM
+
+		// others
+		#define ISSM_MPI_COMM_WORLD    MPI_COMM_WORLD
+		#define ISSM_MPI_STATUS_IGNORE MPI_STATUS_IGNORE
+		#define ISSM_MPI_ANY_TAG       MPI_ANY_TAG
+		#define ISSM_MPI_ANY_SOURCE    MPI_ANY_SOURCE
+		#if defined(_HAVE_AMPI_) && !defined(_WRAPPERS_)
+			#define ISSM_MPI_REQUEST_NULL  AMPI_Request()
+		#else
+			#define ISSM_MPI_REQUEST_NULL  0
+		#endif
+	#endif
+
+    /*other include files: */
+	#include "./commops/commops.h"
+	/*}}}*/
+#else
+	/*Our ISSM MPI defines: {{{*/
+	// types
+	typedef int  ISSM_MPI_Comm;
+	typedef int  ISSM_MPI_Datatype;
+	typedef int  ISSM_MPI_Op;
+	typedef int  ISSM_MPI_Status;
+	typedef int  ISSM_MPI_Request;
+
+	// data types
+	#define ISSM_MPI_CHAR          1
+	#define ISSM_MPI_DOUBLE        2
+	#define ISSM_MPI_PDOUBLE       3
+	#define ISSM_MPI_INT           4
+	#define ISSM_MPI_LONG_LONG_INT 5
+
+	// operations
+	#define ISSM_MPI_MAX        1
+	#define ISSM_MPI_MIN        2
+	#define ISSM_MPI_PROD       3
+	#define ISSM_MPI_SUM        4
+
+	// others
+	#define ISSM_MPI_COMM_WORLD    1
+	extern ISSM_MPI_Status ourIssmMPIStatusIgnore;
+	#define ISSM_MPI_STATUS_IGNORE &ourIssmMPIStatusIgnore
+	#define ISSM_MPI_ANY_TAG       2
+	#define ISSM_MPI_ANY_SOURCE    3
+	#define ISSM_MPI_REQUEST_NULL  0
+	/*}}}*/
+#endif
+
+/*Dynamically return ISSM_MPI type from variable type */
+template <class T> ISSM_MPI_Datatype TypeToMPIType(){assert(false);};
+template <> inline ISSM_MPI_Datatype TypeToMPIType<IssmDouble>(){return ISSM_MPI_DOUBLE;};
+#if defined(_HAVE_AD_) && !defined(_WRAPPERS_)
+template <> inline ISSM_MPI_Datatype TypeToMPIType<IssmPDouble>(){return ISSM_MPI_PDOUBLE;};
+#endif
+template <> inline ISSM_MPI_Datatype TypeToMPIType<int>(){return ISSM_MPI_INT;};
+template <> inline ISSM_MPI_Datatype TypeToMPIType<char>(){return ISSM_MPI_CHAR;};
+
+template <class T> int ISSM_MPI_Bcast(T *buffer, int count,int root, ISSM_MPI_Comm comm){  /*{{{*/
+
+	int rc=0;
+
+	/*Get MPI type*/
+	ISSM_MPI_Datatype datatype = TypeToMPIType<T>();
+
+#ifdef _HAVE_MPI_
+# ifdef _HAVE_AMPI_
+	rc=AMPI_Bcast(buffer,
+				count,
+				datatype,
+				root,
+				comm);
+# else
+	rc=MPI_Bcast(buffer,
+				count,
+				datatype,
+				root,
+				comm);
+# endif
+#else
+	// nothing to be done here
+#endif
+	return rc;
+}/*}}}*/
+/* interfaces  {{{*/
+int ISSM_MPI_Allgather(void *sendbuf, int sendcount, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcount, ISSM_MPI_Datatype recvtype, ISSM_MPI_Comm comm);
+int ISSM_MPI_Allgatherv(void *sendbuf, int sendcount, ISSM_MPI_Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, ISSM_MPI_Datatype recvtype, ISSM_MPI_Comm comm);
+int ISSM_MPI_Allreduce(void *sendbuf, void *recvbuf, int count, ISSM_MPI_Datatype datatype, ISSM_MPI_Op op, ISSM_MPI_Comm comm);
+int ISSM_MPI_Barrier(ISSM_MPI_Comm comm);
+int ISSM_MPI_Bcast(void *buffer, int count, ISSM_MPI_Datatype datatype, int root, ISSM_MPI_Comm comm);
+int ISSM_MPI_Comm_free(ISSM_MPI_Comm *comm);
+int ISSM_MPI_Comm_rank(ISSM_MPI_Comm comm, int *rank);
+int ISSM_MPI_Comm_size( ISSM_MPI_Comm comm, int *size);
+int ISSM_MPI_Finalize(void);
+int ISSM_MPI_Gather(void *sendbuf, int sendcnt, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcnt, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm);
+int ISSM_MPI_Gatherv(void *sendbuf, int sendcnt, ISSM_MPI_Datatype sendtype, void *recvbuf, int *recvcnts, int *displs, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm);
+int ISSM_MPI_Init(int *argc, char ***argv);
+int ISSM_MPI_Recv(void *buf, int count, ISSM_MPI_Datatype datatype, int source, int tag, ISSM_MPI_Comm comm, ISSM_MPI_Status *status);
+int ISSM_MPI_Reduce(void *sendbuf, void *recvbuf, int count, ISSM_MPI_Datatype datatype, ISSM_MPI_Op op, int root, ISSM_MPI_Comm comm);
+int ISSM_MPI_Scatter(void *sendbuf, int sendcnt, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcnt, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm);
+int ISSM_MPI_Scatterv(void *sendbuf, int *sendcnts, int *displs, ISSM_MPI_Datatype sendtype, void *recvbuf, int recvcnt, ISSM_MPI_Datatype recvtype, int root, ISSM_MPI_Comm comm);
+int ISSM_MPI_Send(void *buf, int count, ISSM_MPI_Datatype datatype, int dest, int tag, ISSM_MPI_Comm comm);
+int ISSM_MPI_Isend(void* buf, int count, ISSM_MPI_Datatype datatype, int dest, int tag, ISSM_MPI_Comm comm, ISSM_MPI_Request* req);
+int ISSM_MPI_Wait(ISSM_MPI_Request* req, ISSM_MPI_Status* status);
+double ISSM_MPI_Wtime(void);
+int ISSM_MPI_Comm_split(ISSM_MPI_Comm comm, int color, int key, ISSM_MPI_Comm *newcomm);
+int ISSM_MPI_Intercomm_create(ISSM_MPI_Comm comm,int local_leader,ISSM_MPI_Comm peer_comm, int remote_leader, int tag,ISSM_MPI_Comm *newintercomm);
+
+// special for Adol-C locations when buffers are allocated with new
+// this could end up in the xNew template specialized for adoubles
+// so as to not litter the code with it.
+void ISSM_MPI_ContiguousInAdolc(size_t aSize);
+/*}}}*/
+
+#endif  //#ifndef _ISSM_MPI_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mumps/MpiDenseMumpsSolve.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mumps/MpiDenseMumpsSolve.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mumps/MpiDenseMumpsSolve.cpp	(revision 27955)
@@ -0,0 +1,316 @@
+/*!\file MpiDenseMumpsSolve.cpp
+ * \brief: solve dense matrix system with MUMPS
+ */
+
+/*Header files: */
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/Numerics/types.h"
+#include "../../shared/MemOps/MemOps.h"
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/io/Comm/IssmComm.h"
+#include "../../classes/Params/GenericParam.h"
+#include "../../classes/Params/Parameters.h"
+#include "../mpi/issmmpi.h"
+#include "../adolc/adolcincludes.h"
+#include "./mumpsincludes.h"
+
+/*Mumps header files: */
+#include <dmumps_c.h>
+
+void MumpsInit(DMUMPS_STRUC_C &theMumpsStruc){ 
+	theMumpsStruc.par          = 1;  
+	theMumpsStruc.sym          = 0;
+	theMumpsStruc.comm_fortran = MPI_Comm_c2f(IssmComm::GetComm());
+	theMumpsStruc.job          = -1;
+	dmumps_c(&theMumpsStruc);
+}
+
+// must be preceded by a call to MumpsInit
+void MumpsSettings(DMUMPS_STRUC_C &theMumpsStruc) { 
+	/*Control statements:{{{ */
+	theMumpsStruc.icntl[1-1] = 6; //error verbose: default 6, 0 or negative -> suppressed
+	theMumpsStruc.icntl[2-1] = 0; //std verbose: default 1, 0 or negative -> suppressed
+	theMumpsStruc.icntl[3-1] = 0; //global information verbose: default 6, 0 or negative -> suppressed
+	theMumpsStruc.icntl[4-1] = 0; //verbose everything: default is 4
+	theMumpsStruc.icntl[5-1] = 0;
+	theMumpsStruc.icntl[18-1] = 3;
+
+	theMumpsStruc.icntl[20-1] = 0;
+	theMumpsStruc.icntl[21-1] = 0;
+	theMumpsStruc.icntl[30-1] = 0;
+	/*}}}*/
+}
+
+// must be preceded by a call to MumpsInit
+void MumpsAnalyze(DMUMPS_STRUC_C &theMumpsStruc) { 
+	theMumpsStruc.job          = 1;
+	dmumps_c(&theMumpsStruc);
+}
+
+// must be preceded by a call to MumpsAnalyze
+void MumpsFactorize(DMUMPS_STRUC_C &theMumpsStruc) { 
+	theMumpsStruc.job          = 2;
+	dmumps_c(&theMumpsStruc);
+}
+
+// must be preceded by a call to MumpsFactorize
+void MumpsBacksubstitute(DMUMPS_STRUC_C &theMumpsStruc) { 
+	theMumpsStruc.job          = 3;
+	dmumps_c(&theMumpsStruc);
+}
+
+// must be preceded at least  by a call to MumpsInit
+void MumpsFinalize(DMUMPS_STRUC_C &theMumpsStruc) { 
+	theMumpsStruc.job          = -2;
+	dmumps_c(&theMumpsStruc);
+}
+
+void MumpsSolve(int n,int nnz,int local_nnz,int* irn_loc,int* jcn_loc, IssmPDouble *a_loc, IssmPDouble *rhs, Parameters* parameters=0 /*unused here*/){
+	/*Initialize mumps*/
+	DMUMPS_STRUC_C theMumpsStruc;
+	MumpsInit(theMumpsStruc);
+	MumpsSettings(theMumpsStruc);
+
+	/*now setup the rest of theMumpsStruc */
+	theMumpsStruc.n=n;
+	theMumpsStruc.nz=nnz;
+	theMumpsStruc.nz_loc=local_nnz;
+	theMumpsStruc.irn_loc=irn_loc;
+	theMumpsStruc.jcn_loc=jcn_loc;
+	theMumpsStruc.a_loc=a_loc;
+	theMumpsStruc.rhs=rhs;
+	theMumpsStruc.nrhs=1;
+	theMumpsStruc.lrhs=1;
+
+	/*Solve system*/
+	MumpsAnalyze(theMumpsStruc);
+	MumpsFactorize(theMumpsStruc);
+	MumpsBacksubstitute(theMumpsStruc);
+	MumpsFinalize(theMumpsStruc);
+}
+
+#ifdef _HAVE_ADOLC_
+// prototype for active variant
+void MumpsSolve(int n,
+		int nnz,
+		int local_nnz,
+		int* irn_loc,
+		int* jcn_loc,
+		IssmDouble *a_loc,
+		IssmDouble *rhs,
+		Parameters* parameters);
+#endif 
+
+void MpiDenseMumpsSolve( /*output: */ IssmDouble* uf, int uf_M, int uf_m, /*matrix input: */ IssmDouble* Kff, int Kff_M, int Kff_N, int Kff_m, /*right hand side vector: */ IssmDouble* pf, int pf_M, int pf_m, Parameters* parameters){ /*{{{*/
+
+	/*Variables*/
+	ISSM_MPI_Comm  comm;
+	int            num_procs;
+	int            i,j;
+	int            nnz,local_nnz;
+	int           *irn_loc    = NULL;
+	int           *jcn_loc    = NULL;
+	IssmDouble    *a_loc      = NULL;
+	int            count;
+	int            lower_row;
+	int            upper_row;
+	IssmDouble    *rhs        = NULL;
+	int           *recvcounts = NULL;
+	int           *displs     = NULL;
+
+	/*Communicator info */
+	num_procs = IssmComm::GetSize();
+	comm      = IssmComm::GetComm();
+
+	/*First, some checks*/
+	if (Kff_M!=Kff_N)_error_("stiffness matrix Kff should be square");
+	if (uf_M!=Kff_M || uf_M!=pf_M)_error_("solution vector should be the same size as stiffness matrix Kff and load vector pf");
+	if (uf_m!=Kff_m || uf_m!=pf_m)_error_("solution vector should be locally the same size as stiffness matrix Kff and load vector pf");
+
+	/*Initialize matrix */
+	/*figure out number of non-zero entries: */
+	local_nnz=0;
+	for(i=0;i<Kff_m;i++){
+		for(j=0;j<Kff_N;j++){
+			if (Kff[i*Kff_N+j]!=0)local_nnz++;
+		}
+	}
+
+	ISSM_MPI_Reduce(&local_nnz,&nnz,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,comm);
+	ISSM_MPI_Bcast(&nnz,1,ISSM_MPI_INT,0,comm);
+
+	/*Allocate: */
+	if(local_nnz){
+		irn_loc=xNew<int>(local_nnz);
+		jcn_loc=xNew<int>(local_nnz);
+		a_loc=xNew<IssmDouble>(local_nnz);
+	}
+
+	/*Populate the triplets: */
+	GetOwnershipBoundariesFromRange(&lower_row,&upper_row,Kff_m,comm);
+	count=0;
+	for(i=0;i<Kff_m;i++){
+		for(j=0;j<Kff_N;j++){
+			if (Kff[i*Kff_N+j]!=0){
+				irn_loc[count]=lower_row+i+1; //fortran indexing
+				jcn_loc[count]=j+1; //fortran indexing
+				a_loc[count]=Kff[i*Kff_N+j];
+				count++;
+			}
+		}
+	}
+	/*Deal with right hand side. We need to ISSM_MPI_Gather it onto cpu 0: */
+	rhs=xNew<IssmDouble>(pf_M);
+
+	recvcounts=xNew<int>(num_procs);
+	displs=xNew<int>(num_procs);
+
+	/*recvcounts:*/
+	ISSM_MPI_Allgather(&pf_m,1,ISSM_MPI_INT,recvcounts,1,ISSM_MPI_INT,comm);
+
+	/*displs: */
+	ISSM_MPI_Allgather(&lower_row,1,ISSM_MPI_INT,displs,1,ISSM_MPI_INT,comm);
+
+	/*Gather:*/
+	ISSM_MPI_Gatherv(pf, pf_m, ISSM_MPI_DOUBLE, rhs, recvcounts, displs, ISSM_MPI_DOUBLE,0,comm);
+
+	MumpsSolve(Kff_M,nnz,local_nnz,irn_loc,jcn_loc,a_loc,rhs,parameters);
+
+	/*Now scatter from cpu 0 to all other cpus*/
+	ISSM_MPI_Scatterv( rhs, recvcounts, displs, ISSM_MPI_DOUBLE, uf, uf_m, ISSM_MPI_DOUBLE, 0, comm); 
+
+	/*Cleanup*/
+	xDelete<int>(irn_loc);
+	xDelete<int>(jcn_loc);
+	xDelete<IssmDouble>(a_loc);
+	xDelete<IssmDouble>(rhs);
+	xDelete<int>(recvcounts);
+	xDelete<int>(displs);
+} /*}}}*/
+
+#ifdef _HAVE_ADOLC_
+
+int mumpsSolveEDF(int iArrLength, int* iArr, int /* ignored */, IssmPDouble* dp_x, int /* ignored */, IssmPDouble* dp_y) {
+  // unpack parameters
+  int n=iArr[0];
+  int nnz=iArr[1];
+  int local_nnz=iArr[2];
+  int *local_irn=xNew<int>(local_nnz);
+  int *local_jcn=xNew<int>(local_nnz);
+  IssmPDouble *A=xNew<IssmPDouble>(local_nnz);
+  for (int i=0;i<local_nnz;++i) {
+    local_irn[i]=iArr[3+i];
+    local_jcn[i]=iArr[3+local_nnz+i];
+    A[i]=dp_x[i];
+  }
+  IssmPDouble *rhs_sol=xNew<IssmPDouble>(n);
+  for (int i=0;i<n;++i) { 
+    rhs_sol[i]=dp_x[local_nnz+i];
+  }
+  MumpsSolve(n,nnz,local_nnz,local_irn,local_jcn,A,rhs_sol);
+  for (int i=0;i<n;++i) {
+    dp_y[i]=rhs_sol[i];
+  }
+  xDelete(rhs_sol);
+  xDelete(A);
+  xDelete(local_jcn);
+  xDelete(local_irn);
+  return 0;
+}
+
+void MumpsSolve(int n,int nnz,int local_nnz,int* irn_loc,int* jcn_loc,IssmDouble *a_loc,IssmDouble *rhs,Parameters* parameters){
+  int packedDimsSparseArrLength=1+1+1+local_nnz+local_nnz;
+  int *packedDimsSparseArr=xNew<int>(packedDimsSparseArrLength);
+  packedDimsSparseArr[0]=n;
+  packedDimsSparseArr[1]=nnz;
+  packedDimsSparseArr[2]=local_nnz;
+  for (int i=0;i<local_nnz;++i) {
+    packedDimsSparseArr[3+i]=irn_loc[i];
+    packedDimsSparseArr[3+local_nnz+i]=jcn_loc[i];
+  }
+  IssmDouble *pack_A_rhs=xNew<IssmDouble>(local_nnz+n);
+  for (int i=0;i<local_nnz;++i) { 
+    pack_A_rhs[i]=a_loc[i];
+  }
+  for (int i=0;i<n;++i) { 
+    pack_A_rhs[local_nnz+i]=rhs[i];
+  }
+  IssmPDouble *passivePack_A_rhs=xNew<IssmPDouble>(local_nnz+n);
+  IssmPDouble *passiveSol=xNew<IssmPDouble>(n);
+  IssmDouble *sol=xNew<IssmDouble>(n);
+  call_ext_fct(xDynamicCast<GenericParam<Adolc_edf> * >(parameters->FindParamObject(AdolcParamEnum))->GetParameterValue().myEDF_for_solverx_p,
+	       packedDimsSparseArrLength, packedDimsSparseArr,
+	       local_nnz+n, passivePack_A_rhs, pack_A_rhs, 
+	       n, passiveSol,sol);
+  for (int i=0;i<n;++i) { 
+    rhs[i]=sol[i];
+  }
+  xDelete(sol);
+  xDelete(passiveSol);
+  xDelete(passivePack_A_rhs);
+  xDelete(pack_A_rhs);
+  xDelete(packedDimsSparseArr);
+}
+
+int fos_reverse_mumpsSolveEDF(int iArrLength, int* iArr, 
+			      int m, IssmPDouble *dp_U,
+			      int nPlusNz, IssmPDouble *dp_Z,
+			      IssmPDouble *dp_x, IssmPDouble *dp_y) {
+  // unpack parameters
+  int n=iArr[0];
+  int nnz=iArr[1];
+  int local_nnz=iArr[2];
+  int *local_irn=xNew<int>(local_nnz);
+  int *local_jcn=xNew<int>(local_nnz);
+  IssmPDouble *a_loc=xNew<IssmPDouble>(local_nnz);
+  for (int i=0;i<local_nnz;++i) {
+	  local_irn[i]=iArr[3+i];
+	  local_jcn[i]=iArr[3+local_nnz+i];
+	  a_loc[i]=dp_x[i];
+  }
+  IssmPDouble *rhs_sol=xNew<IssmPDouble>(n);
+  for (int i=0;i<n;++i) { 
+    rhs_sol[i]=dp_U[i];
+  }
+  DMUMPS_STRUC_C theMumpsStruc;
+  MumpsInit(theMumpsStruc);
+  MumpsSettings(theMumpsStruc);
+  theMumpsStruc.n=n;
+  theMumpsStruc.nz=nnz;
+  theMumpsStruc.nz_loc=local_nnz;
+  theMumpsStruc.irn_loc=local_irn;
+  theMumpsStruc.jcn_loc=local_jcn;
+  theMumpsStruc.a_loc=a_loc;
+  theMumpsStruc.rhs=rhs_sol;
+  theMumpsStruc.nrhs=1;
+  theMumpsStruc.lrhs=1;
+  theMumpsStruc.icntl[9-1] = 0; //solve for the transpose
+  MumpsAnalyze(theMumpsStruc);
+  MumpsFactorize(theMumpsStruc);
+  MumpsBacksubstitute(theMumpsStruc);
+  MumpsFinalize(theMumpsStruc);
+  // update the adjoint of the rhs:
+  for (int i=0;i<n;++i) {
+    dp_Z[local_nnz+i]+=rhs_sol[i];
+  }
+  // bcast dp_y (the solution of the forward system)
+  ISSM_MPI_Bcast(dp_y,n,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+  // bcast the adjoint of the right-hand-side, i.e. this solution
+  ISSM_MPI_Bcast(rhs_sol,n,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+  // update the adjoint of the matrix with the outer product of right-hand-side adjoint and the original solution
+  for (int i=0;i<local_nnz;++i) {
+    dp_Z[i]-=rhs_sol[iArr[3+i]-1]*dp_y[iArr[3+local_nnz+i]-1];
+  }
+  xDelete(rhs_sol);
+  xDelete(a_loc);
+  xDelete(local_jcn);
+  xDelete(local_irn);
+  return 3;
+}
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mumps/MumpsSolve.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mumps/MumpsSolve.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mumps/MumpsSolve.cpp	(revision 27955)
@@ -0,0 +1,818 @@
+/*!\file MumpsSolve.cpp
+ * \brief: solve dense matrix system with MUMPS
+ */
+
+/*Header files: */
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/Numerics/types.h"
+#include "../../shared/MemOps/MemOps.h"
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/io/Comm/IssmComm.h"
+#include "../../classes/Params/GenericParam.h"
+#include "../../classes/Params/Parameters.h"
+#include "../mpi/issmmpi.h"
+#include "../adolc/adolcincludes.h"
+#include "../codipack/codipackincludes.h"
+#include "../issm/SparseRow.h"
+#include "./mumpsincludes.h"
+
+/*Mumps header files: */
+#include <dmumps_c.h>
+
+void MumpsInit(DMUMPS_STRUC_C &theMumpsStruc){ 
+	theMumpsStruc.n = 0;
+	theMumpsStruc.nz = 0;
+	theMumpsStruc.a = NULL;
+	theMumpsStruc.jcn = NULL;
+	theMumpsStruc.irn = NULL;
+	theMumpsStruc.par          = 1;  
+	theMumpsStruc.sym          = 0;
+	#ifdef _HAVE_MPI_
+	theMumpsStruc.comm_fortran = MPI_Comm_c2f(IssmComm::GetComm());
+	#endif
+	theMumpsStruc.job          = -1;
+	dmumps_c(&theMumpsStruc);
+}
+
+// must be preceded by a call to MumpsInit
+void MumpsSettings(DMUMPS_STRUC_C &theMumpsStruc) { 
+	/*Control statements:{{{ */
+	theMumpsStruc.icntl[1-1] = 0; //error verbose: default 6, 0 or negative -> suppressed
+	theMumpsStruc.icntl[2-1] = 0; //std verbose: default 1, 0 or negative -> suppressed
+	theMumpsStruc.icntl[3-1] = 0; //global information verbose: default 6, 0 or negative -> suppressed
+	theMumpsStruc.icntl[4-1] = 0; //verbose everything: default is 4
+	theMumpsStruc.icntl[5-1] = 0;
+	theMumpsStruc.icntl[18-1] = 3;
+
+	theMumpsStruc.icntl[20-1] = 0;
+	theMumpsStruc.icntl[21-1] = 0;
+	theMumpsStruc.icntl[30-1] = 0;
+	/*}}}*/
+}
+
+// must be preceded by a call to MumpsInit
+void MumpsAnalyze(DMUMPS_STRUC_C &theMumpsStruc) { 
+	theMumpsStruc.job          = 1;
+	dmumps_c(&theMumpsStruc);
+}
+
+// must be preceded by a call to MumpsAnalyze
+void MumpsFactorize(DMUMPS_STRUC_C &theMumpsStruc) { 
+	theMumpsStruc.job          = 2;
+	dmumps_c(&theMumpsStruc);
+}
+
+// must be preceded by a call to MumpsFactorize
+void MumpsBacksubstitute(DMUMPS_STRUC_C &theMumpsStruc) { 
+	theMumpsStruc.job          = 3;
+	dmumps_c(&theMumpsStruc);
+}
+
+// must be preceded at least  by a call to MumpsInit
+void MumpsFinalize(DMUMPS_STRUC_C &theMumpsStruc) { 
+	theMumpsStruc.job          = -2;
+	dmumps_c(&theMumpsStruc);
+}
+
+void MumpsSolve(int n,int nnz,int local_nnz,int* irn_loc,int* jcn_loc, IssmPDouble *a_loc, IssmPDouble *rhs, Parameters* parameters=0 /*unused here*/){
+	/*Initialize mumps*/
+	DMUMPS_STRUC_C theMumpsStruc;
+	MumpsInit(theMumpsStruc);
+	MumpsSettings(theMumpsStruc);
+
+	/*now setup the rest of theMumpsStruc */
+	theMumpsStruc.n=n;
+	theMumpsStruc.nz=nnz;
+	theMumpsStruc.nz_loc=local_nnz;
+	theMumpsStruc.irn_loc=irn_loc;
+	theMumpsStruc.jcn_loc=jcn_loc;
+	theMumpsStruc.a_loc=a_loc;
+	theMumpsStruc.rhs=rhs;
+	theMumpsStruc.nrhs=1;
+	theMumpsStruc.lrhs=1;
+
+	/*Solve system*/
+	MumpsAnalyze(theMumpsStruc);
+	MumpsFactorize(theMumpsStruc);
+	MumpsBacksubstitute(theMumpsStruc);
+	MumpsFinalize(theMumpsStruc);
+}
+
+#ifdef _HAVE_AD_
+// prototype for active variant
+void MumpsSolve(int n,
+		int nnz,
+		int local_nnz,
+		int* irn_loc,
+		int* jcn_loc,
+		IssmDouble *a_loc,
+		IssmDouble *rhs,
+		Parameters* parameters);
+#endif 
+
+#ifdef _HAVE_MPI_
+void MpiDenseMumpsSolve( /*output: */ IssmDouble* uf, int uf_M, int uf_m, /*matrix input: */ IssmDouble* Kff, int Kff_M, int Kff_N, int Kff_m, /*right hand side vector: */ IssmDouble* pf, int pf_M, int pf_m, Parameters* parameters){ /*{{{*/
+
+	/*Variables*/
+	ISSM_MPI_Comm  comm;
+	int            num_procs;
+	int            i,j;
+	int            nnz,local_nnz;
+	int           *irn_loc    = NULL;
+	int           *jcn_loc    = NULL;
+	IssmDouble    *a_loc      = NULL;
+	int            count;
+	int            lower_row;
+	int            upper_row;
+	IssmDouble    *rhs        = NULL;
+	int           *recvcounts = NULL;
+	int           *displs     = NULL;
+
+	/*Communicator info */
+	num_procs = IssmComm::GetSize();
+	comm      = IssmComm::GetComm();
+
+	/*First, some checks*/
+	if (Kff_M!=Kff_N)_error_("stiffness matrix Kff should be square");
+	if (uf_M!=Kff_M || uf_M!=pf_M)_error_("solution vector should be the same size as stiffness matrix Kff and load vector pf");
+	if (uf_m!=Kff_m || uf_m!=pf_m)_error_("solution vector should be locally the same size as stiffness matrix Kff and load vector pf");
+
+	/*Initialize matrix */
+	/*figure out number of non-zero entries: */
+	local_nnz=0;
+	for(i=0;i<Kff_m;i++){
+		for(j=0;j<Kff_N;j++){
+			if (Kff[i*Kff_N+j]!=0)local_nnz++;
+		}
+	}
+
+	ISSM_MPI_Reduce(&local_nnz,&nnz,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,comm);
+	ISSM_MPI_Bcast(&nnz,1,ISSM_MPI_INT,0,comm);
+
+	/*Allocate: */
+	if(local_nnz){
+		irn_loc=xNew<int>(local_nnz);
+		jcn_loc=xNew<int>(local_nnz);
+		a_loc=xNew<IssmDouble>(local_nnz);
+	}
+
+	/*Populate the triplets: */
+	GetOwnershipBoundariesFromRange(&lower_row,&upper_row,Kff_m,comm);
+	count=0;
+	for(i=0;i<Kff_m;i++){
+		for(j=0;j<Kff_N;j++){
+			if (Kff[i*Kff_N+j]!=0){
+				irn_loc[count]=lower_row+i+1; //fortran indexing
+				jcn_loc[count]=j+1; //fortran indexing
+				a_loc[count]=Kff[i*Kff_N+j];
+				count++;
+			}
+		}
+	}
+	/*Deal with right hand side. We need to ISSM_MPI_Gather it onto cpu 0: */
+// AD performance is sensitive to calls to ensurecontiguous.
+// Providing "t" will cause ensurecontiguous to be called.
+#ifdef _HAVE_AD_
+	rhs=xNew<IssmDouble>(pf_M,"t");
+#else
+	rhs=xNew<IssmDouble>(pf_M);
+#endif
+
+	recvcounts=xNew<int>(num_procs);
+	displs=xNew<int>(num_procs);
+
+	/*recvcounts:*/
+	ISSM_MPI_Allgather(&pf_m,1,ISSM_MPI_INT,recvcounts,1,ISSM_MPI_INT,comm);
+
+	/*displs: */
+	ISSM_MPI_Allgather(&lower_row,1,ISSM_MPI_INT,displs,1,ISSM_MPI_INT,comm);
+
+	/*Gather:*/
+	ISSM_MPI_Gatherv(pf, pf_m, ISSM_MPI_DOUBLE, rhs, recvcounts, displs, ISSM_MPI_DOUBLE,0,comm);
+
+	MumpsSolve(Kff_M,nnz,local_nnz,irn_loc,jcn_loc,a_loc,rhs,parameters);
+
+	/*Now scatter from cpu 0 to all other cpus*/
+	ISSM_MPI_Scatterv( rhs, recvcounts, displs, ISSM_MPI_DOUBLE, uf, uf_m, ISSM_MPI_DOUBLE, 0, comm); 
+
+	/*Cleanup*/
+	xDelete<int>(irn_loc);
+	xDelete<int>(jcn_loc);
+	xDelete<IssmDouble>(a_loc);
+	xDelete<IssmDouble>(rhs);
+	xDelete<int>(recvcounts);
+	xDelete<int>(displs);
+} /*}}}*/
+void MpiSparseMumpsSolve( /*output: */ IssmDouble* uf, int uf_M, int uf_m, /*matrix input: */ SparseRow<IssmDouble>** Kff, int Kff_M, int Kff_N, int Kff_m, /*right hand side vector: */ IssmDouble* pf, int pf_M, int pf_m, Parameters* parameters){ /*{{{*/
+
+	/*Variables*/
+	ISSM_MPI_Comm  comm;
+	int            num_procs;
+	int            i;
+	int            nnz,local_nnz;
+	int           *irn_loc    = NULL;
+	int           *jcn_loc    = NULL;
+	IssmDouble    *a_loc      = NULL;
+	int            count;
+	int            lower_row;
+	int            upper_row;
+	IssmDouble    *rhs        = NULL;
+	int           *recvcounts = NULL;
+	int           *displs     = NULL;
+
+	/*Communicator info */
+	num_procs = IssmComm::GetSize();
+	comm      = IssmComm::GetComm();
+
+	/*First, some checks*/
+	if(Kff_M!=Kff_N)_error_("stiffness matrix Kff should be square");
+	if(uf_M!=Kff_M || uf_M!=pf_M)_error_("solution vector should be the same size as stiffness matrix Kff and load vector pf");
+	if(uf_m!=Kff_m || uf_m!=pf_m)_error_("solution vector should be locally the same size as stiffness matrix Kff and load vector pf");
+
+	/*Initialize matrix */
+	/*figure out number of non-zero entries: */
+	local_nnz=0;
+	for(i=0;i<Kff_m;i++){
+		local_nnz+=Kff[i]->Nnz();
+	}
+
+	ISSM_MPI_Reduce(&local_nnz,&nnz,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,comm);
+	ISSM_MPI_Bcast(&nnz,1,ISSM_MPI_INT,0,comm);
+
+	/*Allocate: */
+	if(local_nnz){
+		irn_loc=xNew<int>(local_nnz);
+		jcn_loc=xNew<int>(local_nnz);
+		a_loc=xNew<IssmDouble>(local_nnz);
+	}
+
+	/*Populate the triplets: */
+	GetOwnershipBoundariesFromRange(&lower_row,&upper_row,Kff_m,comm);
+	count=0;
+	for(i=0;i<Kff_m;i++){
+		Kff[i]->SetIrnJcnA(irn_loc,jcn_loc,a_loc,lower_row+i+1,count);
+		count+=Kff[i]->Nnz();
+	}
+	/*Deal with right hand side. We need to ISSM_MPI_Gather it onto cpu 0: */
+// AD performance is sensitive to calls to ensurecontiguous.
+// Providing "t" will cause ensurecontiguous to be called.
+#ifdef _HAVE_AD_
+	rhs=xNew<IssmDouble>(pf_M,"t");
+#else
+	rhs=xNew<IssmDouble>(pf_M);
+#endif
+
+	recvcounts=xNew<int>(num_procs);
+	displs=xNew<int>(num_procs);
+
+	/*recvcounts:*/
+	ISSM_MPI_Allgather(&pf_m,1,ISSM_MPI_INT,recvcounts,1,ISSM_MPI_INT,comm);
+
+	/*displs: */
+	ISSM_MPI_Allgather(&lower_row,1,ISSM_MPI_INT,displs,1,ISSM_MPI_INT,comm);
+
+	/*Gather:*/
+	ISSM_MPI_Gatherv(pf, pf_m, ISSM_MPI_DOUBLE, rhs, recvcounts, displs, ISSM_MPI_DOUBLE,0,comm);
+
+	MumpsSolve(Kff_M,nnz,local_nnz,irn_loc,jcn_loc,a_loc,rhs,parameters);
+
+	/*Now scatter from cpu 0 to all other cpus*/
+	ISSM_MPI_Scatterv( rhs, recvcounts, displs, ISSM_MPI_DOUBLE, uf, uf_m, ISSM_MPI_DOUBLE, 0, comm); 
+
+	/*Cleanup*/
+	xDelete<int>(irn_loc);
+	xDelete<int>(jcn_loc);
+	xDelete<IssmDouble>(a_loc);
+	xDelete<IssmDouble>(rhs);
+	xDelete<int>(recvcounts);
+	xDelete<int>(displs);
+} /*}}}*/
+#endif
+void SeqDenseMumpsSolve(IssmDouble* uf,int uf_M,int uf_m, IssmDouble* Kff,int Kff_M, int Kff_N, int Kff_m, IssmDouble* pf, int pf_M, int pf_m, Parameters* parameters){/*{{{*/
+
+	/*Variables*/
+	int        *irn_loc = NULL;
+	int        *jcn_loc = NULL;
+	IssmDouble *a_loc   = NULL;
+	IssmDouble *rhs     = NULL;
+
+	/*First, some checks*/
+	if (Kff_M!=Kff_N)_error_("stiffness matrix Kff should be square");
+	if (Kff_M!=Kff_m)_error_("stiffness matrix Kff is not serial");
+	if (uf_M!=Kff_M || uf_M!=pf_M)_error_("solution vector should be the same size as stiffness matrix Kff and load vector pf");
+	if (uf_m!=Kff_m || uf_m!=pf_m)_error_("solution vector should be locally the same size as stiffness matrix Kff and load vector pf");
+
+	/*Initialize matrix */
+	/*figure out number of non-zero entries: */
+	int nnz = 0;
+	for(int i=0;i<Kff_M;i++){
+		for(int j=0;j<Kff_N;j++){
+			if(Kff[i*Kff_N+j]!=0)nnz++;
+		}
+	}
+
+	/*Allocate: */
+	if(nnz){
+		irn_loc = xNew<int>(nnz);
+		jcn_loc = xNew<int>(nnz);
+		a_loc   = xNew<IssmDouble>(nnz);
+	}
+
+	/*Populate the triplets: */
+	int count=0;
+	for(int i=0;i<Kff_M;i++){
+		for(int j=0;j<Kff_N;j++){
+			if(Kff[i*Kff_N+j]!=0){
+				irn_loc[count] = i+1; //fortran indexing
+				jcn_loc[count] = j+1; //fortran indexing
+				a_loc[count]   = Kff[i*Kff_N+j];
+				count++;
+			}
+		}
+	}
+
+	/*Deal with right hand side. We need to ISSM_MPI_Gather it onto cpu 0: */
+// AD performance is sensitive to calls to ensurecontiguous.
+// Providing "t" will cause ensurecontiguous to be called.
+#ifdef _HAVE_AD_
+	rhs=xNew<IssmDouble>(pf_M,"t");
+#else
+	rhs=xNew<IssmDouble>(pf_M);
+#endif
+	xMemCpy<IssmDouble>(rhs,pf,Kff_M);
+
+	MumpsSolve(Kff_M,nnz,nnz,irn_loc,jcn_loc,a_loc,rhs,parameters);
+
+	/*Now scatter from cpu 0 to all other cpus*/
+	xMemCpy<IssmDouble>(uf,rhs,Kff_M);
+
+	/*Cleanup*/
+	xDelete<int>(irn_loc);
+	xDelete<int>(jcn_loc);
+	xDelete<IssmDouble>(a_loc);
+	xDelete<IssmDouble>(rhs);
+}/*}}}*/
+
+#ifdef _HAVE_ADOLC_
+int mumpsSolveEDF(int iArrLength, int* iArr, int /* ignored */, IssmPDouble* dp_x, int /* ignored */, IssmPDouble* dp_y){/*{{{*/
+  // unpack parameters
+  int n=iArr[0];
+  int nnz=iArr[1];
+  int local_nnz=iArr[2];
+  int *local_irn=xNew<int>(local_nnz);
+  int *local_jcn=xNew<int>(local_nnz);
+  IssmPDouble *A=xNew<IssmPDouble>(local_nnz);
+  for (int i=0;i<local_nnz;++i) {
+    local_irn[i]=iArr[3+i];
+    local_jcn[i]=iArr[3+local_nnz+i];
+    A[i]=dp_x[i];
+  }
+  IssmPDouble *rhs_sol=xNew<IssmPDouble>(n);
+  for (int i=0;i<n;++i) { 
+    rhs_sol[i]=dp_x[local_nnz+i];
+  }
+  MumpsSolve(n,nnz,local_nnz,local_irn,local_jcn,A,rhs_sol);
+  for (int i=0;i<n;++i) {
+    dp_y[i]=rhs_sol[i];
+  }
+  xDelete(rhs_sol);
+  xDelete(A);
+  xDelete(local_jcn);
+  xDelete(local_irn);
+  return 0;
+}/*}}}*/
+void MumpsSolve(int n,int nnz,int local_nnz,int* irn_loc,int* jcn_loc,IssmDouble *a_loc,IssmDouble *rhs,Parameters* parameters){/*{{{*/
+  int packedDimsSparseArrLength=1+1+1+local_nnz+local_nnz;
+  int *packedDimsSparseArr=xNew<int>(packedDimsSparseArrLength);
+  packedDimsSparseArr[0]=n;
+  packedDimsSparseArr[1]=nnz;
+  packedDimsSparseArr[2]=local_nnz;
+  for (int i=0;i<local_nnz;++i) {
+    packedDimsSparseArr[3+i]=irn_loc[i];
+    packedDimsSparseArr[3+local_nnz+i]=jcn_loc[i];
+  }
+// AD performance is sensitive to calls to ensurecontiguous.
+// Providing "t" will cause ensurecontiguous to be called.
+#ifdef _HAVE_AD_
+  IssmDouble *pack_A_rhs=xNew<IssmDouble>(local_nnz+n,"t");
+#else
+  IssmDouble *pack_A_rhs=xNew<IssmDouble>(local_nnz+n);
+#endif
+
+  for (int i=0;i<local_nnz;++i) { 
+    pack_A_rhs[i]=a_loc[i];
+  }
+  for (int i=0;i<n;++i) { 
+    pack_A_rhs[local_nnz+i]=rhs[i];
+  }
+// AD performance is sensitive to calls to ensurecontiguous.
+// Providing "t" will cause ensurecontiguous to be called.
+#ifdef _HAVE_AD_
+  IssmDouble *sol=xNew<IssmDouble>(n,"t");
+#else
+  IssmDouble *sol=xNew<IssmDouble>(n);
+#endif
+
+  call_ext_fct(xDynamicCast<GenericParam<Adolc_edf> * >(parameters->FindParamObject(AdolcParamEnum))->GetParameterValue().myEDF_for_solverx_p,
+	       packedDimsSparseArrLength, packedDimsSparseArr,
+	       local_nnz+n, pack_A_rhs, 
+	       n,sol);
+  for (int i=0;i<n;++i) { 
+    rhs[i]=sol[i];
+  }
+  xDelete(sol);
+  xDelete(pack_A_rhs);
+  xDelete(packedDimsSparseArr);
+}/*}}}*/
+int fos_reverse_mumpsSolveEDF(int iArrLength, int* iArr, int m, IssmPDouble *dp_U, int nPlusNz, IssmPDouble *dp_Z, IssmPDouble *dp_x, IssmPDouble *dp_y) {/*{{{*/
+  // unpack parameters
+  int n=iArr[0];
+  int nnz=iArr[1];
+  int local_nnz=iArr[2];
+  int *local_irn=xNew<int>(local_nnz);
+  int *local_jcn=xNew<int>(local_nnz);
+  IssmPDouble *a_loc=xNew<IssmPDouble>(local_nnz);
+  for (int i=0;i<local_nnz;++i) {
+	  local_irn[i]=iArr[3+i];
+	  local_jcn[i]=iArr[3+local_nnz+i];
+	  a_loc[i]=dp_x[i];
+  }
+  IssmPDouble *rhs_sol=xNew<IssmPDouble>(n);
+  for (int i=0;i<n;++i) { 
+    rhs_sol[i]=dp_U[i];
+  }
+  DMUMPS_STRUC_C theMumpsStruc;
+  MumpsInit(theMumpsStruc);
+  MumpsSettings(theMumpsStruc);
+  theMumpsStruc.n=n;
+  theMumpsStruc.nz=nnz;
+  theMumpsStruc.nz_loc=local_nnz;
+  theMumpsStruc.irn_loc=local_irn;
+  theMumpsStruc.jcn_loc=local_jcn;
+  theMumpsStruc.a_loc=a_loc;
+  theMumpsStruc.rhs=rhs_sol;
+  theMumpsStruc.nrhs=1;
+  theMumpsStruc.lrhs=1;
+  theMumpsStruc.icntl[9-1] = 0; //solve for the transpose
+  MumpsAnalyze(theMumpsStruc);
+  MumpsFactorize(theMumpsStruc);
+  MumpsBacksubstitute(theMumpsStruc);
+  MumpsFinalize(theMumpsStruc);
+  // update the adjoint of the rhs:
+  for (int i=0;i<n;++i) {
+    dp_Z[local_nnz+i]+=rhs_sol[i];
+  }
+  // bcast dp_y (the solution of the forward system)
+  ISSM_MPI_Bcast(dp_y,n,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+  // bcast the adjoint of the right-hand-side, i.e. this solution
+  ISSM_MPI_Bcast(rhs_sol,n,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+  // update the adjoint of the matrix with the outer product of right-hand-side adjoint and the original solution
+  for (int i=0;i<local_nnz;++i) {
+    dp_Z[i]-=rhs_sol[iArr[3+i]-1]*dp_y[iArr[3+local_nnz+i]-1];
+  }
+  xDelete(rhs_sol);
+  xDelete(a_loc);
+  xDelete(local_jcn);
+  xDelete(local_irn);
+  return 3;
+}/*}}}*/
+#endif
+
+#ifdef _HAVE_CODIPACK_
+#if _CODIPACK_MAJOR_==2
+using Tape = typename IssmDouble::Tape;
+using AccessInterface = codi::VectorAccessInterface<typename Tape::Real, typename Tape::Identifier>;
+void MumpsSolve_codi_b(Tape* tape, void* data_in, AccessInterface* ra) {/*{{{*/
+
+	/*recast data_in and tape*/
+  codi::ExternalFunctionUserData* data = (codi::ExternalFunctionUserData*)data_in;
+
+  IssmDouble::Real* valueATrans;
+  IssmDouble::Identifier* indexATrans;
+  int* irnATrans;
+  int* jcnATrans;
+  IssmDouble::Identifier* indexB;
+  IssmDouble::Real* valueX;
+  IssmDouble::Identifier* indexX;
+  int n;
+  int nnz;
+  int local_nnz;
+  Parameters* parameters;
+
+  data->getData(valueATrans);
+  data->getData(indexATrans);
+  data->getData(irnATrans);
+  data->getData(jcnATrans);
+  data->getData(indexB);
+  data->getData(valueX);
+  data->getData(indexX);
+  data->getData(n);
+  data->getData(nnz);
+  data->getData(local_nnz);
+  data->getData(parameters);
+
+  // create the adjoint vector for x and reset the adjoint values on the tape
+  IssmDouble::Gradient* adjX = xNew<IssmDouble::Gradient>(n);
+  getVectorAdjoint(*tape, indexX, adjX, n);
+
+  MumpsSolve(n, nnz, local_nnz, irnATrans, jcnATrans, valueATrans, adjX, parameters);
+  // adjX contains now the solution
+
+  updateVectorAdjoint(*tape, indexB, adjX, n);
+
+  // bcast dp_y (the solution of the forward system)
+  ISSM_MPI_Bcast(valueX,n,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+  // bcast the adjoint of the right-hand-side, i.e. this solution
+  ISSM_MPI_Bcast(adjX,n,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+
+  for(int i=0; i<local_nnz; ++i) {
+    // we access the transposed matrix here because we stored the indices in a transposed way
+    // -1 is substracted because jcn and irn are stored with fortran indexing
+    updateAdjoint(*tape, indexATrans[i], -adjX[jcnATrans[i]-1]*valueX[irnATrans[i]-1]);
+  }
+
+  xDelete(adjX);
+}
+/*}}}*/
+void MumpsSolve_codi_delete(Tape* tape,void* data_in) {/*{{{*/
+
+	/*recast data_in*/
+	codi::ExternalFunctionUserData* data = (codi::ExternalFunctionUserData*)data_in;
+
+  IssmDouble::Real* valueATrans;
+  IssmDouble::Identifier* indexATrans;
+  int* irnATrans;
+  int* jcnATrans;
+  IssmDouble::Identifier* indexB;
+  IssmDouble::Real* valueX;
+  IssmDouble::Identifier* indexX;
+  int n;
+  int nnz;
+  int local_nnz;
+  Parameters* parameters;
+
+  data->getData(valueATrans);
+  data->getData(indexATrans);
+  data->getData(irnATrans);
+  data->getData(jcnATrans);
+  data->getData(indexB);
+  data->getData(valueX);
+  data->getData(indexX);
+  data->getData(n);
+  data->getData(nnz);
+  data->getData(local_nnz);
+  data->getData(parameters);
+
+  xDelete(valueATrans);
+  xDelete(indexATrans);
+  xDelete(irnATrans);
+  xDelete(jcnATrans);
+  xDelete(indexB);
+  xDelete(valueX);
+  xDelete(indexX);
+
+  delete data;
+}
+/*}}}*/
+void MumpsSolve(int n,int nnz,int local_nnz,int* irn_loc,int* jcn_loc,IssmDouble *a_loc,IssmDouble *rhs,Parameters* parameters){/*{{{*/
+  IssmDouble::Tape& tape = IssmDouble::getTape();
+  codi::ExternalFunctionUserData* dataHandler = NULL;
+
+  if(tape.isActive()) {
+    dataHandler = new codi::ExternalFunctionUserData();
+
+    // create the index and double vector for the matrix
+    IssmDouble::Real* valueATrans = xNew<IssmDouble::Real>(local_nnz);
+    IssmDouble::Identifier* indexATrans = xNew<IssmDouble::Identifier>(local_nnz);
+    int* irnATrans = xNew<int>(local_nnz);
+    int* jcnATrans = xNew<int>(local_nnz);
+
+    // read the data for the matrix A in a transposed fashion
+	  for (int i=0; i<local_nnz; ++i) {
+        getPrimalAndGradData(a_loc[i], valueATrans[i], indexATrans[i]);
+        irnATrans[i]=jcn_loc[i];  // transposed store
+        jcnATrans[i]=irn_loc[i];  // transposed store
+    }
+
+    // create the index vector for a (primal values are not needed for a)
+    IssmDouble::Identifier* indexB = xNew<IssmDouble::Identifier>(n);
+    getVectorGradData(rhs, indexB, n);
+
+    dataHandler->addData(valueATrans);
+    dataHandler->addData(indexATrans);
+    dataHandler->addData(irnATrans);
+    dataHandler->addData(jcnATrans);
+    dataHandler->addData(indexB);
+  }
+
+  // unpack the primal values from the matrix and the vector
+  IssmDouble::Real* valueA = xNew<IssmDouble::Real>(local_nnz);
+  IssmDouble::Real* valueB = xNew<IssmDouble::Real>(n);
+  // read the data from A and B
+  getVectorPrimal(a_loc, valueA, local_nnz);
+  getVectorPrimal(rhs, valueB, n);
+
+  MumpsSolve(n, nnz, local_nnz, irn_loc, jcn_loc, valueA, valueB, parameters);
+  // valueB contains now the solution
+
+  // pack the values into rhs
+  setVectorPrimal(rhs, valueB, n);
+
+  if(tape.isActive()) {
+    // create the index vector X and register x as active variables
+    IssmDouble::Identifier* indexX = xNew<IssmDouble::Identifier>(n);
+    registerVector(rhs, indexX, n);
+
+    dataHandler->addData(valueB); // contains the values from x
+    dataHandler->addData(indexX);
+
+    // store other arguments
+    dataHandler->addData(n);
+    dataHandler->addData(nnz);
+    dataHandler->addData(local_nnz);
+    dataHandler->addData(parameters); // we assume here that parameters is still intact when the reverse run is called
+
+	 tape.pushExternalFunction(codi::ExternalFunction<Tape>::create(&MumpsSolve_codi_b,(void*)dataHandler, &MumpsSolve_codi_delete));
+  }
+  else{
+    // if the tape is active valueB is stored in the dataHandler and deleted in the reverse sweep
+    xDelete(valueB);
+  }
+
+  xDelete(valueA);
+}
+/*}}}*/
+#elif _CODIPACK_MAJOR_==1
+void MumpsSolve_codi_b(void* tape_in,void* data_in,void* ra) {/*{{{*/
+
+	/*recast data_in and tape*/
+	codi::DataStore* data = (codi::DataStore*)data_in;
+	//IssmDouble::TapeType& tape = (IssmDouble::TapeType&)tape_in;
+	IssmDouble::TapeType& tape = IssmDouble::getGlobalTape();
+
+
+	IssmDouble::Real* valueATrans;
+	IssmDouble::GradientData* indexATrans;
+	int* irnATrans;
+	int* jcnATrans;
+	IssmDouble::GradientData* indexB;
+	IssmDouble::Real* valueX;
+	IssmDouble::GradientData* indexX;
+	int n;
+	int nnz;
+	int local_nnz;
+	Parameters* parameters;
+
+	data->getData(valueATrans);
+	data->getData(indexATrans);
+	data->getData(irnATrans);
+	data->getData(jcnATrans);
+	data->getData(indexB);
+	data->getData(valueX);
+	data->getData(indexX);
+	data->getData(n);
+	data->getData(nnz);
+	data->getData(local_nnz);
+	data->getData(parameters);
+
+	// create the adjoint vector for x and reset the adjoint values on the tape
+	IssmDouble::GradientValue* adjX = xNew<IssmDouble::GradientValue>(n);
+	getVectorAdjoint(tape, indexX, adjX, n);
+
+	MumpsSolve(n, nnz, local_nnz, irnATrans, jcnATrans, valueATrans, adjX, parameters);
+	// adjX contains now the solution
+
+	updateVectorAdjoint(tape, indexB, adjX, n);
+
+	// bcast dp_y (the solution of the forward system)
+	ISSM_MPI_Bcast(valueX,n,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+	// bcast the adjoint of the right-hand-side, i.e. this solution
+	ISSM_MPI_Bcast(adjX,n,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm());
+
+	for(int i=0; i<local_nnz; ++i) {
+		// we access the transposed matrix here because we stored the indices in a transposed way
+		// -1 is substracted because jcn and irn are stored with fortran indexing
+		updateAdjoint(tape, indexATrans[i], -adjX[jcnATrans[i]-1]*valueX[irnATrans[i]-1]);
+	}
+
+	xDelete(adjX);
+}
+/*}}}*/
+void MumpsSolve_codi_delete(void* tape_in,void* data_in) {/*{{{*/
+
+	/*recast data_in*/
+	codi::DataStore* data = (codi::DataStore*)data_in;
+
+	IssmDouble::Real* valueATrans;
+	IssmDouble::GradientData* indexATrans;
+	int* irnATrans;
+	int* jcnATrans;
+	IssmDouble::GradientData* indexB;
+	IssmDouble::Real* valueX;
+	IssmDouble::GradientData* indexX;
+	int n;
+	int nnz;
+	int local_nnz;
+	Parameters* parameters;
+
+	data->getData(valueATrans);
+	data->getData(indexATrans);
+	data->getData(irnATrans);
+	data->getData(jcnATrans);
+	data->getData(indexB);
+	data->getData(valueX);
+	data->getData(indexX);
+	data->getData(n);
+	data->getData(nnz);
+	data->getData(local_nnz);
+	data->getData(parameters);
+
+	xDelete(valueATrans);
+	xDelete(indexATrans);
+	xDelete(irnATrans);
+	xDelete(jcnATrans);
+	xDelete(indexB);
+	xDelete(valueX);
+	xDelete(indexX);
+
+	delete data;
+}
+/*}}}*/
+void MumpsSolve(int n,int nnz,int local_nnz,int* irn_loc,int* jcn_loc,IssmDouble *a_loc,IssmDouble *rhs,Parameters* parameters){/*{{{*/
+	IssmDouble::TapeType& tape = IssmDouble::getGlobalTape();
+	codi::DataStore* dataHandler = NULL;
+
+	if(tape.isActive()) {
+		dataHandler = new codi::DataStore();
+
+		// create the index and double vector for the matrix
+		IssmDouble::Real* valueATrans = xNew<IssmDouble::Real>(local_nnz);
+		IssmDouble::GradientData* indexATrans = xNew<IssmDouble::GradientData>(local_nnz);
+		int* irnATrans = xNew<int>(local_nnz);
+		int* jcnATrans = xNew<int>(local_nnz);
+
+		// read the data for the matrix A in a transposed fashion
+		for (int i=0; i<local_nnz; ++i) {
+			getPrimalAndGradData(a_loc[i], valueATrans[i], indexATrans[i]);
+			irnATrans[i]=jcn_loc[i];  // transposed store
+			jcnATrans[i]=irn_loc[i];  // transposed store
+		}
+
+		// create the index vector for a (primal values are not needed for a)
+		IssmDouble::GradientData* indexB = xNew<IssmDouble::GradientData>(n);
+		getVectorGradData(rhs, indexB, n);
+
+		dataHandler->addData(valueATrans);
+		dataHandler->addData(indexATrans);
+		dataHandler->addData(irnATrans);
+		dataHandler->addData(jcnATrans);
+		dataHandler->addData(indexB);
+	}
+
+	// unpack the primal values from the matrix and the vector
+	IssmDouble::Real* valueA = xNew<IssmDouble::Real>(local_nnz);
+	IssmDouble::Real* valueB = xNew<IssmDouble::Real>(n);
+	// read the data from A and B
+	getVectorPrimal(a_loc, valueA, local_nnz);
+	getVectorPrimal(rhs, valueB, n);
+
+	MumpsSolve(n, nnz, local_nnz, irn_loc, jcn_loc, valueA, valueB, parameters);
+	// valueB contains now the solution
+
+	// pack the values into rhs
+	setVectorPrimal(rhs, valueB, n);
+
+	if(tape.isActive()) {
+		// create the index vector X and register x as active variables
+		IssmDouble::GradientData* indexX = xNew<IssmDouble::GradientData>(n);
+		registerVector(rhs, indexX, n);
+
+		dataHandler->addData(valueB); // contains the values from x
+		dataHandler->addData(indexX);
+
+		// store other arguments
+		dataHandler->addData(n);
+		dataHandler->addData(nnz);
+		dataHandler->addData(local_nnz);
+		dataHandler->addData(parameters); // we assume here that parameters is still intact when the reverse run is called
+
+		//tape.pushExternalFunction(&MumpsSolve_codi_b, dataHandler, &MumpsSolve_codi_delete);
+		tape.pushExternalFunctionHandle(&MumpsSolve_codi_b,(void*)dataHandler, &MumpsSolve_codi_delete);
+	}
+	else{
+		// if the tape is active valueB is stored in the dataHandler and deleted in the reverse sweep
+		xDelete(valueB);
+	}
+
+	xDelete(valueA);
+}
+/*}}}*/
+#else
+#error "_CODIPACK_MAJOR_ not supported"
+#endif
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mumps/mumpsincludes.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mumps/mumpsincludes.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/mumps/mumpsincludes.h	(revision 27955)
@@ -0,0 +1,34 @@
+/* \file mumpsincludes.h
+ * \brief all includes for MUMPS layer
+ */
+
+#ifndef _MUMPS_INCLUDES_H_
+#define _MUMPS_INCLUDES_H_
+
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/Numerics/types.h"
+/*}}}*/
+
+class Parameters;
+template <class doubletype> class SparseRow;
+
+#ifdef _HAVE_MPI_
+void MpiDenseMumpsSolve(IssmDouble* uf,int uf_M,int uf_n, IssmDouble* Kff,int Kff_M, int Kff_N, int Kff_m, IssmDouble* pf, int pf_M, int pf_m, Parameters* parameters);
+void MpiSparseMumpsSolve(IssmDouble* uf,int uf_M,int uf_n, SparseRow<IssmDouble>** Kff,int Kff_M, int Kff_N, int Kff_m, IssmDouble* pf, int pf_M, int pf_m, Parameters* parameters);
+#endif
+void SeqDenseMumpsSolve(IssmDouble* uf,int uf_M,int uf_n, IssmDouble* Kff,int Kff_M, int Kff_N, int Kff_m, IssmDouble* pf, int pf_M, int pf_m, Parameters* parameters);
+
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)
+// call back functions:
+ADOLC_ext_fct_iArr mumpsSolveEDF;
+ADOLC_ext_fct_iArr_fos_reverse fos_reverse_mumpsSolveEDF;
+ADOLC_ext_fct_iArr_fov_reverse fov_reverse_mumpsSolveEDF;
+#endif
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/objects/Matrix.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/objects/Matrix.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/objects/Matrix.h	(revision 27955)
@@ -0,0 +1,339 @@
+/*!\file:  Matrix.h
+ * \brief wrapper to matrix objects. The goal is to control which API (PETSc,Scalpack, Plapack?) 
+ * implements our underlying matrix format.
+ */ 
+
+#ifndef _MATRIX_H_
+#define _MATRIX_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include <cstring>
+#include "../../shared/Enum/Enum.h"
+#include "../petsc/petscincludes.h"
+#include "../issm/issmtoolkit.h"
+/*}}}*/
+
+enum matrixtype { PetscMatType, IssmMatType };
+
+template <class doubletype> class Vector;
+
+template <class doubletype> 
+class Matrix{
+
+	public:
+
+		int       type;
+		#ifdef _HAVE_PETSC_
+		PetscMat              *pmatrix;
+		#endif
+		IssmMat<doubletype>   *imatrix;
+
+		/*Matrix constructors, destructors*/
+		Matrix(){/*{{{*/
+			InitCheckAndSetType();
+		}
+		/*}}}*/
+		Matrix(int M,int N){/*{{{*/
+
+			InitCheckAndSetType();
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix=new PetscMat(M,N);
+				#endif
+			}
+			else{
+				this->imatrix=new IssmMat<doubletype>(M,N);
+			}
+
+		}
+		/*}}}*/
+		Matrix(int m,int n,int M,int N,int* d_nnz,int* o_nnz){/*{{{*/
+
+			InitCheckAndSetType();
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix=new PetscMat(m,n,M,N,d_nnz,o_nnz);
+				#endif
+			}
+			else{
+				this->imatrix=new IssmMat<doubletype>(m,n,M,N,d_nnz,o_nnz);
+			}
+
+		}
+		/*}}}*/
+		Matrix(int M,int N,double sparsity){/*{{{*/
+
+			InitCheckAndSetType();
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix=new PetscMat(M,N,sparsity);
+				#endif
+			}
+			else{
+				this->imatrix=new IssmMat<doubletype>(M,N,sparsity);
+			}
+		}
+		/*}}}*/
+		Matrix(IssmPDouble* serial_mat,int M,int N,IssmPDouble sparsity){/*{{{*/
+
+			InitCheckAndSetType();
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix=new PetscMat(serial_mat,M,N,sparsity);
+				#endif
+			}
+			else{
+				this->imatrix=new IssmMat<doubletype>(serial_mat,M,N,sparsity);
+			}
+
+		}
+		/*}}}*/
+		Matrix(int M,int N,int connectivity,int numberofdofspernode){/*{{{*/
+
+			InitCheckAndSetType();
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix=new PetscMat(M,N,connectivity,numberofdofspernode);
+				#endif
+			}
+			else{
+				this->imatrix=new IssmMat<doubletype>(M,N,connectivity,numberofdofspernode);
+			}
+
+		}
+		/*}}}*/
+		~Matrix(){/*{{{*/
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				delete this->pmatrix;
+				#endif
+			}
+			else delete this->imatrix;
+
+		}
+		/*}}}*/
+		void InitCheckAndSetType(void){/*{{{*/
+
+			#ifdef _HAVE_PETSC_
+			pmatrix=NULL;
+			#endif
+			imatrix=NULL;
+
+			/*retrieve toolkittype: */
+			char* toolkittype=ToolkitOptions::GetToolkitType();
+
+			/*set matrix type: */
+			if (strcmp(toolkittype,"petsc")==0){
+				#ifdef _HAVE_PETSC_
+				type=PetscMatType; 
+				#else
+				_error_("cannot create petsc matrix without PETSC compiled!");
+				#endif
+			}
+			else if(strcmp(toolkittype,"issm")==0){
+				/*let this choice stand:*/
+				type=IssmMatType;
+			}
+			else{
+				_error_("unknow toolkit type ");
+			}
+
+			/*Free resources: */
+			xDelete<char>(toolkittype);
+		}
+		/*}}}*/
+
+		/*Matrix specific routines:*/
+		void Echo(void){/*{{{*/
+			_assert_(this);
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix->Echo();
+				#endif
+			}
+			else{
+				this->imatrix->Echo();
+			}
+
+		}
+		/*}}}*/
+		void AllocationInfo(void){/*{{{*/
+			_assert_(this);
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix->AllocationInfo();
+				#endif
+			}
+			else{
+				//this->imatrix->AllocationInfo();
+				_error_("not supported yet");
+			}
+		}/*}}}*/
+		void Assemble(void){/*{{{*/
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix->Assemble();
+				#endif
+			}
+			else{
+				this->imatrix->Assemble();
+			}
+		}
+		/*}}}*/
+		IssmDouble Norm(NormMode norm_type){/*{{{*/
+
+			IssmDouble norm=0;
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				norm=this->pmatrix->Norm(norm_type);
+				#endif
+			}
+			else{
+				norm=this->imatrix->Norm(norm_type);
+			}
+
+			return norm;
+		}
+		/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix->GetSize(pM,pN);
+				#endif
+			}
+			else{
+				this->imatrix->GetSize(pM,pN);
+			}
+
+		}
+		/*}}}*/
+		void GetLocalSize(int* pM,int* pN){/*{{{*/
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix->GetLocalSize(pM,pN);
+				#endif
+			}
+			else{
+				this->imatrix->GetLocalSize(pM,pN);
+			}
+
+		}
+		/*}}}*/
+		void MatMult(Vector<doubletype>* X,Vector<doubletype>* AX){/*{{{*/
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix->MatMult(X->pvector,AX->pvector);
+				#endif
+			}
+			else{
+				this->imatrix->MatMult(X->ivector,AX->ivector);
+			}
+
+		}
+		/*}}}*/
+		Matrix<doubletype>* Duplicate(void){/*{{{*/
+
+			Matrix<doubletype>* output=new Matrix<doubletype>();
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				output->pmatrix=this->pmatrix->Duplicate();
+				#endif
+			}
+			else{
+				output->imatrix=this->imatrix->Duplicate();
+			}
+
+			return output;
+		}
+		/*}}}*/
+		doubletype* ToMPISerial0(void){/*{{{*/
+
+			doubletype* output=NULL;
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				output=this->pmatrix->ToMPISerial0();
+				#endif
+			}
+			else{
+				output=this->imatrix->ToMPISerial0();
+			}
+
+			return output;
+		}
+		/*}}}*/
+		doubletype* ToMPISerial(void){/*{{{*/
+
+			doubletype* output=NULL;
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				output=this->pmatrix->ToMPISerial();
+				#endif
+			}
+			else{
+				_error_("not implemented yet!");
+			}
+
+			return output;
+		}
+		/*}}}*/
+		void SetValues(int m,int* idxm,int n,int* idxn,IssmDouble* values,InsMode mode){/*{{{*/
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix->SetValues(m,idxm,n,idxn,values,mode);
+				#endif
+			}
+			else{
+				this->imatrix->SetValues(m,idxm,n,idxn,values,mode);
+			}
+		}
+		/*}}}*/
+		void Convert(MatrixType newtype){/*{{{*/
+
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix->Convert(newtype);
+				#endif
+			}
+			else{
+				this->imatrix->Convert(newtype);
+			}
+
+		}
+		/*}}}*/
+		void SetZero(void) {/*{{{*/
+			// sets all values to 0 but keeps the structure of a sparse matrix
+			if(type==PetscMatType){
+				#ifdef _HAVE_PETSC_
+				this->pmatrix->SetZero();
+				#endif
+			}
+			else{
+				this->imatrix->SetZero();
+			}
+		}
+		/*}}}*/
+};
+
+#endif //#ifndef _MATRIX_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/objects/Solver.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/objects/Solver.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/objects/Solver.h	(revision 27955)
@@ -0,0 +1,86 @@
+/*!\file:  Solver.h
+ */ 
+
+#ifndef _SOLVER_CLASS_H_
+#define _SOLVER_CLASS_H_
+
+/*Headers:*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./Matrix.h"
+#include "./Vector.h"
+#include "../issm/issmtoolkit.h"
+#include "../petsc/petscincludes.h"
+class Parameters;
+
+template <class doubletype> 
+class Solver{
+
+	private:
+		Matrix<doubletype>* Kff;
+		Vector<doubletype>* pf;
+		Vector<doubletype>* uf0;
+		Vector<doubletype>* df;
+		Parameters* parameters;
+
+	public:
+		/*Constructors, destructors:*/
+		Solver(){/*{{{*/
+		}
+		/*}}}*/
+		Solver(Matrix<doubletype>* Kff_in, Vector<doubletype>* pf_in, Vector<doubletype>* uf0_in,Vector<doubletype>* df_in, Parameters* parameters_in){/*{{{*/
+
+			/*In debugging mode, check that stiffness matrix and load vectors are not NULL (they can be empty)*/
+			_assert_(Kff_in);
+			_assert_(pf_in);
+
+			/*initialize fields: */
+			this->Kff=Kff_in;
+			this->pf=pf_in;
+			this->uf0=uf0_in;
+			this->df=df_in;
+			this->parameters=parameters_in;
+		}
+		/*}}}*/
+		~Solver(){/*{{{*/
+		}
+		/*}}}*/
+
+		/*Methods: */
+		Vector<doubletype>* Solve(void){ /*{{{*/
+
+			/*output: */
+			Vector<doubletype>* uf=NULL;
+
+			/*Initialize vector: */
+			uf=new Vector<doubletype>();
+
+			/*According to matrix type, use specific solvers: */
+			switch(Kff->type){
+				#ifdef _HAVE_PETSC_
+				case PetscMatType:{
+					PetscVec* uf0_vector = NULL;
+					PetscVec* df_vector  = NULL;
+					if(uf0) uf0_vector = uf0->pvector;
+					if(df)  df_vector  = df->pvector;
+					PetscSolve(&uf->pvector,Kff->pmatrix,pf->pvector,uf0_vector,df_vector,parameters);
+					break;
+								  }
+				#endif
+				case IssmMatType:{
+					IssmSolve(&uf->ivector,Kff->imatrix,pf->ivector,parameters);
+					break;
+								 }
+				default:
+					_error_("Matrix type: " << Kff->type << " not supported yet!");
+			}
+
+			/*allocate output pointer: */
+			return uf;
+		}
+		/*}}}*/
+};
+#endif //#ifndef _SOLVER_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/objects/Vector.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/objects/Vector.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/objects/Vector.h	(revision 27955)
@@ -0,0 +1,420 @@
+/*!\file:  Vector.h
+ * \brief wrapper to vector objects. The goal is to control which API (PETSc,Scalpack, Plapack?)
+ * implements our underlying vector format.
+ */
+
+#ifndef _VECTOR_H_
+#define _VECTOR_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include <cstring>
+#include "../../shared/Enum/Enum.h"
+#include "../petsc/petscincludes.h"
+#include "../issm/issmtoolkit.h"
+/*}}}*/
+
+enum vectortype { PetscVecType, IssmVecType };
+
+template <class doubletype>
+class Vector{
+
+	public:
+
+		int  type;
+		#ifdef _HAVE_PETSC_
+		PetscVec* pvector;
+		#endif
+		IssmVec<doubletype>* ivector;
+
+		/*Vector constructors, destructors */
+		Vector(){ /*{{{*/
+
+			InitCheckAndSetType();
+		}
+		/*}}}*/
+		Vector(int M,bool fromlocalsize=false){ /*{{{*/
+
+			InitCheckAndSetType();
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector=new PetscVec(M,fromlocalsize);
+				#endif
+			}
+			else this->ivector=new IssmVec<doubletype>(M,fromlocalsize);
+
+		}
+		/*}}}*/
+		Vector(int m,int M){ /*{{{*/
+
+			InitCheckAndSetType();
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+					this->pvector=new PetscVec(m,M);
+				 #endif
+			}
+			else this->ivector=new IssmVec<doubletype>(m,M);
+		}
+		/*}}}*/
+		Vector(doubletype* serial_vec,int M){ /*{{{*/
+
+			InitCheckAndSetType();
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector=new PetscVec(serial_vec,M);
+				#endif
+			}
+			else this->ivector=new IssmVec<doubletype>(serial_vec,M);
+		}
+		/*}}}*/
+		~Vector(){ /*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				delete this->pvector;
+				#endif
+			}
+			else delete this->ivector;
+		}
+		/*}}}*/
+		#ifdef _HAVE_PETSC_
+		Vector(Vec petsc_vector){ /*{{{*/
+
+			this->type=PetscVecType;
+			this->ivector=NULL;
+			this->pvector=new PetscVec(petsc_vector);
+
+		}
+		/*}}}*/
+		#endif
+		void InitCheckAndSetType(void){ /*{{{*/
+
+			#ifdef _HAVE_PETSC_
+			pvector=NULL;
+			#endif
+			ivector=NULL;
+
+			/*retrieve toolkittype: */
+			char* toolkittype=ToolkitOptions::GetToolkitType();
+			_assert_(toolkittype);
+
+			/*set vector type: */
+			if(strcmp(toolkittype,"petsc")==0){
+				#ifdef _HAVE_PETSC_
+				type=PetscVecType;
+				#else
+				_error_("cannot create petsc vector without PETSC compiled!");
+				#endif
+			}
+			else if(strcmp(toolkittype,"issm")==0){
+				/*let this choice stand:*/
+				type=IssmVecType;
+			}
+			else{
+				_error_("unknow toolkit type ");
+			}
+
+			/*Free resources: */
+			xDelete<char>(toolkittype);
+		}
+		/*}}}*/
+
+		/*Vector specific routines*/
+		void Echo(void){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->Echo();
+				#endif
+			}
+			else this->ivector->Echo();
+
+		}
+		/*}}}*/
+		void Assemble(void){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->Assemble();
+				#endif
+			}
+			else this->ivector->Assemble();
+
+		}
+		/*}}}*/
+		void SetValues(int ssize, int* list, doubletype* values, InsMode mode){ _assert_(this);/*{{{*/
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->SetValues(ssize,list,values,mode);
+				#endif
+			}
+			else this->ivector->SetValues(ssize,list,values,mode);
+
+		}
+		/*}}}*/
+		void SetValue(int dof, doubletype value, InsMode mode){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->SetValue(dof,value,mode);
+				#endif
+			}
+			else this->ivector->SetValue(dof,value,mode);
+
+		}
+		/*}}}*/
+		void GetValue(doubletype* pvalue,int dof){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->GetValue(pvalue,dof);
+				#endif
+			}
+			else this->ivector->GetValue(pvalue,dof);
+
+		}
+		/*}}}*/
+		void GetSize(int* pM){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->GetSize(pM);
+				#endif
+			}
+			else this->ivector->GetSize(pM);
+
+		}
+		/*}}}*/
+		bool IsEmpty(void){/*{{{*/
+			int M;
+
+			_assert_(this);
+			this->GetSize(&M);
+
+			if(M==0)
+				return true;
+			else
+				return false;
+		}
+		/*}}}*/
+		void GetLocalSize(int* pM){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->GetLocalSize(pM);
+				#endif
+			}
+			else this->ivector->GetLocalSize(pM);
+
+		}
+		/*}}}*/
+		void GetLocalVector(doubletype** pvector,int** pindices){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->GetLocalVector(pvector,pindices);
+				#endif
+			}
+			else this->ivector->GetLocalVector(pvector,pindices);
+
+		}
+		/*}}}*/
+		Vector<doubletype>* Duplicate(void){_assert_(this);/*{{{*/
+
+			Vector<doubletype>* output=NULL;
+
+			output=new Vector<doubletype>();
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				output->pvector=this->pvector->Duplicate();
+				#endif
+			}
+			else output->ivector=this->ivector->Duplicate();
+
+			return output;
+		} /*}}}*/
+		void Set(doubletype value){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->Set(value);
+				#endif
+			}
+			else this->ivector->Set(value);
+
+		}
+		/*}}}*/
+		void AXPY(Vector* X, doubletype a){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->AXPY(X->pvector,a);
+				#endif
+			}
+			else this->ivector->AXPY(X->ivector,a);
+
+		}
+		/*}}}*/
+		void AYPX(Vector* X, doubletype a){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->AYPX(X->pvector,a);
+				#endif
+			}
+			else this->ivector->AYPX(X->ivector,a);
+		}
+		/*}}}*/
+		doubletype* ToMPISerial(void){/*{{{*/
+
+			doubletype* vec_serial=NULL;
+
+			_assert_(this);
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				vec_serial=this->pvector->ToMPISerial();
+				#endif
+			}
+			else vec_serial=this->ivector->ToMPISerial();
+
+			return vec_serial;
+
+		}
+		/*}}}*/
+		doubletype* ToMPISerial0(void){/*{{{*/
+
+			doubletype* vec_serial=NULL;
+
+			_assert_(this);
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				vec_serial=this->pvector->ToMPISerial0();
+				#endif
+			}
+			else vec_serial=this->ivector->ToMPISerial0();
+
+			return vec_serial;
+
+		}
+		/*}}}*/
+		void Shift(doubletype shift){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->Shift(shift);
+				#endif
+			}
+			else this->ivector->Shift(shift);
+		}
+		/*}}}*/
+		void Copy(Vector* to){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->Copy(to->pvector);
+				#endif
+			}
+			else this->ivector->Copy(to->ivector);
+		}
+		/*}}}*/
+		doubletype Max(void){_assert_(this);/*{{{*/
+
+			doubletype max=0;
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				max=this->pvector->Max();
+				#endif
+			}
+			else _error_("operation not supported yet");
+			return max;
+		}
+		/*}}}*/
+		doubletype Norm(NormMode norm_type){_assert_(this);/*{{{*/
+
+			doubletype norm=0;
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				norm=this->pvector->Norm(norm_type);
+				#endif
+			}
+			else norm=this->ivector->Norm(norm_type);
+			return norm;
+		}
+		/*}}}*/
+		void Scale(doubletype scale_factor){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->Scale(scale_factor);
+				#endif
+			}
+			else this->ivector->Scale(scale_factor);
+		}
+		/*}}}*/
+		doubletype Dot(Vector* vector){_assert_(this);/*{{{*/
+
+			doubletype dot;
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				dot=this->pvector->Dot(vector->pvector);
+				#endif
+			}
+			else dot=this->ivector->Dot(vector->ivector);
+			return dot;
+		}
+		/*}}}*/
+		void PointwiseDivide(Vector* x,Vector* y){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->PointwiseDivide(x->pvector,y->pvector);
+				#endif
+			}
+			else this->ivector->PointwiseDivide(x->ivector,y->ivector);
+		}
+		/*}}}*/
+		void PointwiseMult(Vector* x,Vector* y){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->PointwiseMult(x->pvector,y->pvector);
+				#endif
+			}
+			else this->ivector->PointwiseMult(x->ivector,y->ivector);
+		}
+		/*}}}*/
+		void Pow(doubletype scale_factor){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->Pow(scale_factor);
+				#endif
+			}
+			else this->ivector->Pow(scale_factor);
+		}
+		/*}}}*/
+void Sum(doubletype* pvalue){ /*{{{*/
+	_assert_(this);/*{{{*/
+
+	if(type==PetscVecType){
+		#ifdef _HAVE_PETSC_
+		this->pvector->Sum(pvalue);
+		#endif
+	}
+	else this->ivector->Sum(pvalue);
+}
+/*}}}*/
+}; /*}}}*/
+#endif //#ifndef _VECTOR_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/objects/toolkitobjects.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/objects/toolkitobjects.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/objects/toolkitobjects.h	(revision 27955)
@@ -0,0 +1,13 @@
+
+/*!\file:  toolkitobjects.h
+ * \brief wrappers to toolkits
+ */ 
+
+#ifndef _TOOLKIT_OBJECTS_H_
+#define _TOOLKIT_OBJECTS_H_
+
+#include "./Vector.h"
+#include "./Matrix.h"
+#include "./Solver.h"
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/PetscMat.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/PetscMat.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/PetscMat.cpp	(revision 27955)
@@ -0,0 +1,205 @@
+/*!\file PetscMat.cpp
+ * \brief: implementation of the PetscMat object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include "../petscincludes.h"
+#include "../../../shared/shared.h"
+
+/*}}}*/
+
+/*PetscMat constructors and destructor*/
+PetscMat::PetscMat(){/*{{{*/
+	this->matrix=NULL;
+	#ifdef _HAVE_AD_
+	this->amatrix=NULL;
+	#endif
+
+}
+/*}}}*/
+PetscMat::PetscMat(int M,int N){/*{{{*/
+
+	this->matrix=NewMat(M,N,IssmComm::GetComm());
+}
+/*}}}*/
+PetscMat::PetscMat(int M,int N, IssmDouble sparsity){/*{{{*/
+
+	this->matrix=NewMat(M,N,sparsity,IssmComm::GetComm());
+}
+/*}}}*/
+PetscMat::PetscMat(int m,int n,int M,int N,int* d_nnz,int* o_nnz){/*{{{*/
+
+	MatCreate(IssmComm::GetComm(),&this->matrix);
+	MatSetSizes(this->matrix,m,n,M,N);
+	MatSetFromOptions(this->matrix);
+
+	/* 
+	 * Versions of Petsc beyond 3.3 have changed the use of preallocation 
+	 * routines to distinguish between parallel builds and sequential. Since
+	 * our Windows builds are currently only sequential, we need to change
+	 * the way we use these functions.
+	 *
+	 * The following code computes the total number of non-zeroes per row of the
+	 * matrix in question. In parallel builds it is nescessary to kep track of 
+	 * diagonal non zeros and off-diagonal (d_nnz and o_nnz). Sequential does
+	 * not make that distinction.
+	*/
+	#ifdef _HAVE_PETSC_MPI_
+		int* nnz = new int[M];
+		for(int i = 0; i < M; i++)
+			nnz[i] = o_nnz[i] + d_nnz[i];
+
+		PetscErrorCode ierr = MatSeqAIJSetPreallocation(this->matrix,0,nnz);
+		delete[] nnz;
+	#else
+		PetscErrorCode ierr = MatMPIAIJSetPreallocation(this->matrix,0,d_nnz,0,o_nnz);
+	#endif
+	if(ierr) _error_("PETSc could not allocate matrix (probably not enough memory)");
+//	MatSetOption(this->matrix,MAT_NEW_NONZERO_ALLOCATION_ERR,PETSC_FALSE);
+
+}
+/*}}}*/
+PetscMat::PetscMat(IssmDouble* serial_mat,int M,int N,IssmDouble sparsity){/*{{{*/
+
+	int     i;
+	int* idxm=NULL;
+	int* idxn=NULL;
+
+	if(M)idxm=xNew<int>(M);
+	if(N)idxn=xNew<int>(N);
+
+	for(i=0;i<M;i++)idxm[i]=i;
+	for(i=0;i<N;i++)idxn[i]=i;
+
+	this->matrix=NewMat(M,N,sparsity,IssmComm::GetComm());
+	MatSetValues(this->matrix,M,idxm,N,idxn,serial_mat,INSERT_VALUES);
+	MatAssemblyBegin(this->matrix,MAT_FINAL_ASSEMBLY);
+	MatAssemblyEnd(this->matrix,MAT_FINAL_ASSEMBLY);
+
+	xDelete<int>(idxm);
+	xDelete<int>(idxn);
+
+}
+/*}}}*/
+PetscMat::PetscMat(int M,int N, int connectivity,int numberofdofspernode){/*{{{*/
+
+	this->matrix=NewMat(M,N,connectivity,numberofdofspernode,IssmComm::GetComm());
+
+}
+/*}}}*/
+PetscMat::~PetscMat(){/*{{{*/
+	MatFree(&this->matrix);
+}
+/*}}}*/
+
+/*PetscMat specific routines: */
+void PetscMat::AllocationInfo(void){/*{{{*/
+
+	MatInfo info;
+	MatGetInfo(this->matrix,MAT_GLOBAL_SUM,&info);
+	_printf0_("=========================== Stiffness matrix allocation info ===========================\n");
+	_printf0_("\n");
+   _printf0_(" Block size  : "<<info.block_size << "\n");
+	_printf0_(" nz_allocated: "<<info.nz_allocated << "\n");
+	_printf0_(" nz_used     : "<<info.nz_used << "\n");
+	_printf0_(" nz_unneeded : "<<info.nz_unneeded<<" ("<<double(info.nz_unneeded)/double(info.nz_allocated)*100.<<"%)\n");
+	_printf0_("\n");
+	_printf0_("========================================================================================\n");
+}
+/*}}}*/
+void PetscMat::Echo(void){/*{{{*/
+
+	MatView(this->matrix,PETSC_VIEWER_STDOUT_WORLD);
+}
+/*}}}*/
+void PetscMat::Assemble(void){/*{{{*/
+
+	_assert_(this->matrix);
+	MatAssemblyBegin(this->matrix,MAT_FINAL_ASSEMBLY);
+	MatAssemblyEnd(this->matrix,MAT_FINAL_ASSEMBLY);
+
+}
+/*}}}*/
+IssmDouble PetscMat::Norm(NormMode mode){/*{{{*/
+
+	IssmDouble norm=0;
+	_assert_(this->matrix);
+	MatNorm(this->matrix,ISSMToPetscNormMode(mode),&norm);
+
+	return norm;
+
+}
+/*}}}*/
+void PetscMat::GetSize(int* pM,int* pN){/*{{{*/
+
+	_assert_(this->matrix);
+	MatGetSize(this->matrix,pM,pN);
+}
+/*}}}*/
+void PetscMat::GetLocalSize(int* pM,int* pN){/*{{{*/
+
+	_assert_(this->matrix);
+	MatGetLocalSize(this->matrix,pM,pN);
+
+}
+/*}}}*/
+void PetscMat::MatMult(PetscVec* X,PetscVec* AX){/*{{{*/
+
+	_assert_(this->matrix);
+	_assert_(X->vector);
+	MatMultPatch(this->matrix,X->vector,AX->vector,IssmComm::GetComm());
+
+}
+/*}}}*/
+PetscMat* PetscMat::Duplicate(void){/*{{{*/
+
+	PetscMat* output=new PetscMat();
+	_assert_(this->matrix);
+	MatDuplicate(this->matrix,MAT_COPY_VALUES,&output->matrix);
+
+	return output;
+
+}
+/*}}}*/
+IssmDouble* PetscMat::ToMPISerial(void){/*{{{*/
+
+	 IssmDouble* output=NULL;
+	 MatToMPISerial(&output,this->matrix,IssmComm::GetComm(),true);
+	 return output;
+
+}
+/*}}}*/
+IssmDouble* PetscMat::ToMPISerial0(void){/*{{{*/
+
+	 IssmDouble* output=NULL;
+	 MatToMPISerial(&output,this->matrix,IssmComm::GetComm(),false);
+	 return output;
+
+}
+/*}}}*/
+void PetscMat::SetValues(int m,int* idxm,int n,int* idxn,IssmDouble* values,InsMode mode){/*{{{*/
+
+	PetscErrorCode ierr = MatSetValues(this->matrix,m,idxm,n,idxn,values,ISSMToPetscInsertMode(mode));
+	if(ierr) _error_("PETSc's MatSetValues reported an error");
+
+}
+/*}}}*/
+void PetscMat::Convert(MatrixType type){/*{{{*/
+
+	MatConvert(this->matrix,ISSMToPetscMatrixType(type),MAT_REUSE_MATRIX,&this->matrix);
+
+}
+/*}}}*/
+void PetscMat::SetZero(void){/*{{{*/
+	MatZeroEntries(this->matrix);
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/PetscMat.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/PetscMat.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/PetscMat.h	(revision 27955)
@@ -0,0 +1,58 @@
+/*!\file:  PetscMat.h
+ * \brief wrapper to our own PetscMat object, which is needed to add AD capabilities (using ADOLC) 
+ * to a C-coded Petsc API. We are just wrapping the Petsc objects into C++ equivalent, so that 
+ * later, we can map all of the Petsc routines into Adolc equivalents.
+ */ 
+
+#ifndef _PETSCMAT_H_
+#define _PETSCMAT_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../petscincludes.h"
+#include "../../../shared/Numerics/types.h"
+
+/*}}}*/
+class PetscVec;
+
+class PetscMat{
+
+	public:
+		Mat matrix;
+
+		#ifdef _HAVE_AD_
+		IssmDouble* amatrix;
+		#endif
+
+		/*PetscMat constructors, destructors*/
+		PetscMat();
+		PetscMat(int M,int N);
+		PetscMat(int M,int N,IssmDouble sparsity);
+		PetscMat(int m,int n,int M,int N,int* d_nnz,int* o_nnz);
+		PetscMat(IssmDouble* serial_mat,int M,int N,IssmDouble sparsity);
+		PetscMat(int M,int N,int connectivity,int numberofdofspernode);
+		~PetscMat();
+
+		/*PetscMat specific routines*/
+		void AllocationInfo(void);
+		void Echo(void);
+		void Assemble(void);
+		IssmDouble Norm(NormMode norm_type);
+		void GetSize(int* pM,int* pN);
+		void GetLocalSize(int* pM,int* pN);
+		void MatMult(PetscVec* X,PetscVec* AX);
+		PetscMat* Duplicate(void);
+		IssmDouble* ToMPISerial(void);
+		IssmDouble* ToMPISerial0(void);
+		void SetValues(int m,int* idxm,int n,int* idxn,IssmDouble* values,InsMode mode);
+		void Convert(MatrixType type);
+		void SetZero(void);
+};
+
+#endif //#ifndef _PETSCMAT_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/PetscSolver.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/PetscSolver.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/PetscSolver.cpp	(revision 27955)
@@ -0,0 +1,243 @@
+/*!\file SolverxPetsc
+ * \brief Petsc implementation of solver
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./PetscSolver.h"
+#include "../../../shared/Numerics/Verbosity.h"
+#include "../../../shared/MemOps/MemOps.h"
+#include "../../../shared/Exceptions/exceptions.h"
+#include "../../../shared/io/Comm/IssmComm.h"
+#include "../../../shared/Enum/Enum.h"
+#include "../../../shared/io/Print/Print.h"
+
+void	PetscSolve(PetscVec** puf, PetscMat* Kff, PetscVec* pf, PetscVec* uf0,PetscVec* df, Parameters* parameters){ /*{{{*/
+
+	PetscVec* uf=new PetscVec();
+
+	Vec uf0_vector = NULL;
+	Vec df_vector  = NULL;
+
+	if(uf0) uf0_vector = uf0->vector;
+	if(df)  df_vector  = df->vector;
+
+	SolverxPetsc(&uf->vector, Kff->matrix, pf->vector, uf0_vector, df_vector, parameters);
+
+	*puf=uf;
+
+}
+/*}}}*/
+void	SolverxPetsc(Vec* puf, Mat Kff, Vec pf, Vec uf0,Vec df, Parameters* parameters){ /*{{{*/
+
+	/*Output: */
+	Vec        uf = NULL;
+
+	/*Intermediary: */
+	int        local_m,local_n,global_m,global_n;
+
+	/*Solver */
+	KSP        ksp              = NULL;
+	PC         pc               = NULL;
+	int        iteration_number;
+	int        solver_type;
+	bool       fromlocalsize    = true;
+	#if PETSC_VERSION_LT(3,2,0)
+	PetscTruth flag,flg;
+	#else
+	PetscBool flag,flg;
+	#endif
+
+	/*FS: */
+	IS         isv=NULL;
+	IS         isp=NULL;
+	char ksp_type[50];
+
+	/*Display message*/
+	#if PETSC_VERSION_LT(3,2,0)
+	if(VerboseSolver())PetscOptionsPrint(stdout);
+	#else
+		#if PETSC_VERSION_LT(3,7,0)
+		if(VerboseSolver())PetscOptionsView(PETSC_VIEWER_STDOUT_WORLD);
+		#else
+		if(VerboseSolver())PetscOptionsView(NULL,PETSC_VIEWER_STDOUT_WORLD);
+		#endif
+	#endif
+
+	/*First, check that f-set is not NULL, i.e. model is fully constrained:*/ 
+	_assert_(Kff);
+	MatGetSize(Kff,&global_m,&global_n); _assert_(global_m==global_n);
+	if(!global_n){
+		*puf=NewVec(0,IssmComm::GetComm()); return;
+	}
+
+	/*Initial guess */
+	/*Now, check that we are not giving an initial guess to the solver, if we are running a direct solver: */
+	#if PETSC_VERSION_LT(3,7,0)
+	PetscOptionsGetString(PETSC_NULL,"-ksp_type",ksp_type,49,&flg);
+	#elif PETSC_VERSION_LT(3,19,0)
+	PetscOptionsGetString(NULL,PETSC_NULL,"-ksp_type",ksp_type,49,&flg);
+	#else
+	PetscOptionsGetString(NULL,PETSC_NULLPTR,"-ksp_type",ksp_type,49,&flg);
+	#endif
+	if(flg!=PETSC_TRUE) _error_("could not find option -ksp_type, maybe you are not using the right toolkit?");
+	if (strcmp(ksp_type,"preonly")==0) uf0=NULL;
+
+	/*If initial guess for the solution exists, use it to create uf, otherwise, 
+	 * duplicate the right hand side so that the solution vector has the same structure*/
+	if(uf0){
+		VecDuplicate(uf0,&uf); VecCopy(uf0,uf);
+	}
+	else{
+		MatGetLocalSize(Kff,&local_m,&local_n);uf=NewVec(local_n,IssmComm::GetComm(),fromlocalsize);
+	}
+
+	/*Process petsc options to see if we are using special types of external solvers*/
+	PetscOptionsDetermineSolverType(&solver_type);
+
+	/*Check the solver is available*/
+	if(solver_type==MUMPSPACKAGE_LU || solver_type==MUMPSPACKAGE_CHOL){
+		#ifndef _HAVE_MUMPS_
+		_error_("requested MUMPS solver, which was not compiled into ISSM!\n");
+		#endif
+	}
+
+	/*Prepare solver*/
+	KSPCreate(IssmComm::GetComm(),&ksp);
+	#if PETSC_VERSION_GE(3,5,0)
+		KSPSetOperators(ksp,Kff,Kff);
+	#else
+		KSPSetOperators(ksp,Kff,Kff,DIFFERENT_NONZERO_PATTERN);
+	#endif
+	KSPSetFromOptions(ksp);
+
+	/*Specific solver?: */
+	KSPGetPC(ksp,&pc);
+	if (solver_type==MUMPSPACKAGE_LU){
+		#if PETSC_VERSION_GE(3,9,0)
+		PCFactorSetMatSolverType(pc,MATSOLVERMUMPS);
+		#else
+		PCFactorSetMatSolverPackage(pc,MATSOLVERMUMPS);
+		#endif
+	}
+
+	/*FS: */
+	if (solver_type==FSSolverEnum){
+		/*Make indices out of doftypes: */
+		if(!df)_error_("need doftypes for FS solver!\n");
+		DofTypesToIndexSet(&isv,&isp,df,FSSolverEnum);
+
+		/*Set field splits: */
+		KSPGetPC(ksp,&pc);
+
+		#if PETSC_VERSION_LT(3,1,0)
+		PCFieldSplitSetIS(pc,isv);
+		PCFieldSplitSetIS(pc,isp);
+		#elif PETSC_VERSION_LT(3,19,0)
+		PCFieldSplitSetIS(pc,PETSC_NULL,isv);
+		PCFieldSplitSetIS(pc,PETSC_NULL,isp);
+		#else
+		PCFieldSplitSetIS(pc,PETSC_NULLPTR,isv);
+		PCFieldSplitSetIS(pc,PETSC_NULLPTR,isp);
+		#endif
+
+
+	}
+
+	/*If there is an initial guess for the solution, use it
+	 * except if we are using the MUMPS direct solver
+	 * where any initial guess will crash Petsc*/
+	if (uf0){
+		if((solver_type!=MUMPSPACKAGE_LU) && (solver_type!=MUMPSPACKAGE_CHOL) && (solver_type!=SPOOLESPACKAGE_LU) && (solver_type!=SPOOLESPACKAGE_CHOL) && (solver_type!=SUPERLUDISTPACKAGE)){
+			KSPSetInitialGuessNonzero(ksp,PETSC_TRUE);
+		}
+	}
+
+	/*Solve: */
+	if(VerboseSolver())KSPView(ksp,PETSC_VIEWER_STDOUT_WORLD);
+	KSPSolve(ksp,pf,uf);
+
+	/*Check convergence*/
+	KSPGetIterationNumber(ksp,&iteration_number);
+	if (iteration_number<0) _error_("Solver diverged at iteration number: " << -iteration_number);
+	if (VerboseSolver())  _printf0_("Petsc: "<< iteration_number << " KSP iterations\n"); 
+
+	/*Free resources:*/
+	KSPFree(&ksp);
+
+	/*Assign output pointers:*/
+	*puf=uf;
+} 
+/*}}}*/
+void DofTypesToIndexSet(IS* pisv, IS* pisp, Vec df,int typeenum){ /*{{{*/
+
+	/*output: */
+	IS          isv=NULL;
+	IS          isp=NULL;
+
+	int         start,end;
+	IssmDouble*     df_local=NULL;
+	int         df_local_size;
+
+	int*     pressure_indices=NULL;
+	int*     velocity_indices=NULL;
+	int      pressure_num=0;
+	int      velocity_num=0;
+	int      pressure_count=0;
+	int      velocity_count=0;
+
+	if(typeenum==FSSolverEnum){
+
+		/*Ok, recover doftypes vector values and indices: */
+		VecGetOwnershipRange(df,&start,&end);
+		VecGetLocalSize(df,&df_local_size);
+		VecGetArray(df,&df_local);
+
+		pressure_num=0;
+		velocity_num=0;
+		for(int i=0;i<df_local_size;i++){
+			if (df_local[i]==PressureEnum)pressure_num++;
+			else velocity_num++;
+		}
+
+		/*Allocate indices: */
+		if(pressure_num)pressure_indices=xNew<int>(pressure_num);
+		if(velocity_num)velocity_indices=xNew<int>(velocity_num);
+
+		pressure_count=0;
+		velocity_count=0;
+		for(int i=0;i<df_local_size;i++){
+			if (df_local[i]==PressureEnum){
+				pressure_indices[pressure_count]=start+i;
+				pressure_count++;
+			}
+			if (df_local[i]==VelocityEnum){
+				velocity_indices[velocity_count]=start+i;
+				velocity_count++;
+			}
+		}
+		VecRestoreArray(df,&df_local);
+
+		/*Create indices sets: */
+		#if PETSC_VERSION_LT(3,2,0)
+		ISCreateGeneral(IssmComm::GetComm(),pressure_num,pressure_indices,&isp);
+		ISCreateGeneral(IssmComm::GetComm(),velocity_num,velocity_indices,&isv);
+		#else
+		ISCreateGeneral(IssmComm::GetComm(),pressure_num,pressure_indices,PETSC_COPY_VALUES,&isp);
+		ISCreateGeneral(IssmComm::GetComm(),velocity_num,velocity_indices,PETSC_COPY_VALUES,&isv);
+		#endif
+	}
+
+	/*Free resources:*/
+	xDelete<int>(pressure_indices);
+	xDelete<int>(velocity_indices);
+
+	/*Assign output pointers:*/
+	*pisv=isv;
+	*pisp=isp;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/PetscSolver.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/PetscSolver.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/PetscSolver.h	(revision 27955)
@@ -0,0 +1,24 @@
+/*!\file:  PetscMat.h
+ */ 
+
+#ifndef _PETSC_SOLVER_H_
+#define _PETSC_SOLVER_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../petscincludes.h"
+class Parameters;
+
+/*}}}*/
+
+void	PetscSolve(PetscVec** puf, PetscMat* Kff, PetscVec* pf, PetscVec* uf0,PetscVec* df, Parameters* parameters);
+void	SolverxPetsc(Vec* puf, Mat Kff, Vec pf, Vec uf0,Vec df, Parameters* parameters);
+void    DofTypesToIndexSet(IS* pisv, IS* pisp, Vec df,int typeenum);
+
+#endif //#ifndef _PETSCSOLVER_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/PetscVec.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/PetscVec.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/PetscVec.cpp	(revision 27955)
@@ -0,0 +1,281 @@
+/*!\file PetscVec.cpp
+ * \brief: implementation of the PetscVec object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include "../petscincludes.h"
+#include "../../../shared/shared.h"
+
+/*}}}*/
+
+/*PetscVec constructors and destructor*/
+PetscVec::PetscVec(){/*{{{*/
+	this->vector=NULL;
+	#ifdef _HAVE_AD_
+	this->avector=NULL;
+	#endif
+}
+/*}}}*/
+PetscVec::PetscVec(int M,bool fromlocalsize){/*{{{*/
+
+	this->vector=NewVec(M,IssmComm::GetComm(),fromlocalsize);
+
+}
+/*}}}*/
+PetscVec::PetscVec(int m,int M){/*{{{*/
+
+	VecCreate(IssmComm::GetComm(),&this->vector);
+	VecSetSizes(this->vector,m,M);
+	VecSetFromOptions(this->vector);
+	VecSetOption(this->vector,VEC_IGNORE_NEGATIVE_INDICES,PETSC_TRUE);
+	VecSet(this->vector,0.0);
+
+}
+/*}}}*/
+PetscVec::PetscVec(Vec petsc_vec){/*{{{*/
+
+	if(petsc_vec==NULL){
+		this->vector=NewVec(0,IssmComm::GetComm());
+	}
+	else{
+		/*copy vector*/
+		VecDuplicate(petsc_vec,&this->vector);
+		VecCopy(petsc_vec,this->vector);
+	}
+
+}
+/*}}}*/
+PetscVec::PetscVec(IssmDouble* serial_vec,int M){/*{{{*/
+
+	int* idxm=NULL;
+	if(M)idxm=xNew<int>(M);
+	for(int i=0;i<M;i++) idxm[i]=i;
+
+	this->vector=NewVec(M,IssmComm::GetComm());
+	VecSetValues(this->vector,M,idxm,serial_vec,INSERT_VALUES);
+	VecAssemblyBegin(this->vector);
+	VecAssemblyEnd(this->vector);
+
+	xDelete<int>(idxm);
+}
+/*}}}*/
+PetscVec::~PetscVec(){/*{{{*/
+    VecFree(&this->vector);
+}
+/*}}}*/
+
+/*PetscVec specific routines: */
+void PetscVec::Echo(void){/*{{{*/
+
+	_assert_(this->vector);
+	VecView(this->vector,PETSC_VIEWER_STDOUT_WORLD);
+}
+/*}}}*/
+void PetscVec::Assemble(void){/*{{{*/
+
+	_assert_(this->vector);
+	VecAssemblyBegin(this->vector);
+	VecAssemblyEnd(this->vector);
+
+}
+/*}}}*/
+void PetscVec::SetValues(int ssize, int* list, IssmDouble* values, InsMode mode){/*{{{*/
+
+	_assert_(this->vector);
+	VecSetValues(this->vector,ssize,list,values,ISSMToPetscInsertMode(mode));
+
+}
+/*}}}*/
+void PetscVec::SetValue(int dof, IssmDouble value, InsMode mode){/*{{{*/
+
+	_assert_(this->vector);
+	VecSetValues(this->vector,1,&dof,&value,ISSMToPetscInsertMode(mode));
+
+}
+/*}}}*/
+void PetscVec::GetValue(IssmDouble* pvalue,int dof){/*{{{*/
+
+	_assert_(this->vector);
+	VecGetValues(this->vector,1,&dof,pvalue);
+
+}
+/*}}}*/
+void PetscVec::GetSize(int* pM){/*{{{*/
+
+	_assert_(this->vector);
+	VecGetSize(this->vector,pM);
+}
+/*}}}*/
+void PetscVec::GetLocalSize(int* pm){/*{{{*/
+
+	_assert_(this->vector);
+	VecGetLocalSize(this->vector,pm);
+}
+/*}}}*/
+void PetscVec::GetLocalVector(IssmDouble** pvector,int** pindices){/*{{{*/
+
+	_assert_(this->vector);
+
+	/*First, check that vector size is not 0*/
+	int vector_size;
+	this->GetSize(&vector_size);
+	if(vector_size==0){
+		*pvector=NULL;
+		*pindices=NULL;
+		return;
+	}
+
+	/*Get Ownership range*/
+	PetscInt lower_row,upper_row;
+	VecGetOwnershipRange(this->vector,&lower_row,&upper_row);
+	int range=upper_row-lower_row;
+
+	/*return NULL if no range*/
+	if(range==0){
+		*pvector=NULL;
+		*pindices=NULL;
+		return;
+	}
+
+	/*Build indices*/
+	int* indices=xNew<int>(range);
+	for(int i=0;i<range;i++) indices[i]=lower_row+i;
+	/*Get vector*/
+	IssmDouble* values =xNew<IssmDouble>(range);
+	VecGetValues(this->vector,range,indices,values);
+
+	*pvector  = values;
+	*pindices = indices;
+} /*}}}*/
+PetscVec* PetscVec::Duplicate(void){/*{{{*/
+
+	_assert_(this->vector);
+	Vec vec_output=NULL;
+	VecDuplicate(this->vector,&vec_output);
+	PetscVec* output=new PetscVec(vec_output);
+	VecFree(&vec_output);
+
+	return output;
+}
+/*}}}*/
+void PetscVec::Set(IssmDouble value){/*{{{*/
+
+	_assert_(this->vector);
+	VecSet(this->vector,value);
+
+}
+/*}}}*/
+void PetscVec::AXPY(PetscVec* X, IssmDouble a){/*{{{*/
+
+	_assert_(this->vector);
+	VecAXPY(this->vector,a,X->vector);
+
+}
+/*}}}*/
+void PetscVec::AYPX(PetscVec* X, IssmDouble a){/*{{{*/
+
+	_assert_(this->vector);
+	VecAYPX(this->vector,a,X->vector);
+
+}
+/*}}}*/
+IssmDouble* PetscVec::ToMPISerial(void){/*{{{*/
+
+	IssmDouble* vec_serial=NULL;
+	VecToMPISerial(&vec_serial, this->vector,IssmComm::GetComm(),true);
+	return vec_serial;
+
+}
+/*}}}*/
+IssmDouble* PetscVec::ToMPISerial0(void){/*{{{*/
+
+	IssmDouble* vec_serial=NULL;
+	VecToMPISerial(&vec_serial, this->vector,IssmComm::GetComm(),false);
+	return vec_serial;
+
+}
+/*}}}*/
+void PetscVec::Shift(IssmDouble shift){/*{{{*/
+
+	if(this->vector) VecShift(this->vector,shift);
+
+}
+/*}}}*/
+void PetscVec::Copy(PetscVec* to){/*{{{*/
+
+	if(this->vector) VecCopy(this->vector,to->vector);
+
+}
+/*}}}*/
+IssmDouble PetscVec::Max(void){/*{{{*/
+
+	_assert_(this->vector);
+
+	IssmDouble max;
+	VecMax(this->vector,NULL,&max);
+	return max;
+
+}
+/*}}}*/
+IssmDouble PetscVec::Norm(NormMode mode){/*{{{*/
+
+	IssmDouble norm=0;
+	_assert_(this->vector);
+	VecNorm(this->vector,ISSMToPetscNormMode(mode),&norm);
+	return norm;
+
+}
+/*}}}*/
+void PetscVec::Scale(IssmDouble scale_factor){/*{{{*/
+
+	_assert_(this->vector);
+	VecScale(this->vector,scale_factor);
+
+}
+/*}}}*/
+void PetscVec::Pow(IssmDouble scale_factor){/*{{{*/
+
+	_assert_(this->vector);
+	VecPow(this->vector,scale_factor);
+
+}
+/*}}}*/
+void PetscVec::Sum(IssmDouble* pvalue){/*{{{*/
+
+	_assert_(this->vector);
+	VecSum(this->vector,pvalue);
+
+}
+/*}}}*/
+IssmDouble PetscVec::Dot(PetscVec* input){/*{{{*/
+
+	IssmDouble dot;
+	_assert_(this->vector);
+	VecDot(this->vector,input->vector,&dot);
+	return dot;
+
+}
+/*}}}*/
+void PetscVec::PointwiseDivide(PetscVec* x,PetscVec* y){/*{{{*/
+
+	_assert_(this->vector);
+	VecPointwiseDivide(this->vector,x->vector,y->vector);
+
+}
+/*}}}*/
+void PetscVec::PointwiseMult(PetscVec* x,PetscVec* y){/*{{{*/
+
+	_assert_(this->vector);
+	VecPointwiseMult(this->vector,x->vector,y->vector);
+
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/PetscVec.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/PetscVec.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/PetscVec.h	(revision 27955)
@@ -0,0 +1,66 @@
+/*!\file:  PetscVec.h
+ * \brief wrapper to our own PetscVec object, which is needed to add AD capabilities (using ADOLC)
+ * to a C-coded Petsc API. We are just wrapping the Petsc objects into C++ equivalent, so that
+ * later, we can map all of the Petsc routines into Adolc equivalents.
+ */
+
+#ifndef _PETSCVEC_H_
+#define _PETSCVEC_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../petscincludes.h"
+
+/*}}}*/
+
+class PetscVec{
+
+	public:
+		Vec vector;
+
+		#ifdef _HAVE_AD_
+		IssmDouble* avector;
+		#endif
+
+		/*PetscVec constructors, destructors*/
+		PetscVec();
+		PetscVec(int M,bool fromlocalsize=false);
+		PetscVec(int m,int M);
+		PetscVec(IssmDouble* buffer, int M);
+		PetscVec(Vec petsc_vec);
+		~PetscVec();
+
+		/*PetscVec specific routines*/
+		void        Echo(void);
+		void        Assemble(void);
+		void        SetValues(int ssize, int* list, IssmDouble* values, InsMode mode);
+		void        SetValue(int dof, IssmDouble value, InsMode  mode);
+		void        GetValue(IssmDouble* pvalue, int dof);
+		void        GetSize(int* pM);
+		void        GetLocalSize(int* pM);
+		void        GetLocalVector(IssmDouble** pvector,int** pindices);
+		PetscVec*   Duplicate(void);
+		void        Set(IssmDouble value);
+		void        AXPY(PetscVec* X, IssmDouble a);
+		void        AYPX(PetscVec* X, IssmDouble a);
+		IssmDouble* ToMPISerial(void);
+		IssmDouble* ToMPISerial0(void);
+		void        Shift(IssmDouble shift);
+		void        Copy(PetscVec* to);
+		IssmDouble  Norm(NormMode norm_type);
+		IssmDouble  Max(void);
+		void        Scale(IssmDouble scale_factor);
+		void        Pow(IssmDouble scale_factor);
+		void        Sum(IssmDouble* pvalue);
+		void        PointwiseDivide(PetscVec* x,PetscVec* y);
+		void        PointwiseMult(PetscVec* x,PetscVec* y);
+		IssmDouble  Dot(PetscVec* vector);
+};
+
+#endif //#ifndef _PETSCVEC_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/petscobjects.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/petscobjects.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/objects/petscobjects.h	(revision 27955)
@@ -0,0 +1,12 @@
+/* \file petscobjects.h
+ * \brief all includes for our own petsc object implementation
+ */
+
+#ifndef _PETSC_OBJECTS_H_
+#define _PETSC_OBJECTS_H_
+
+#include "./PetscMat.h"
+#include "./PetscVec.h"
+#include "./PetscSolver.h"
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/ISSMToPetscInsertMode.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/ISSMToPetscInsertMode.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/ISSMToPetscInsertMode.cpp	(revision 27955)
@@ -0,0 +1,31 @@
+/* \file ISSMToPetscInsertMode.cpp
+ * \brief: convert InsertMode from ISSM to Petsc
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscksp.h>
+
+/*ISSM includes: */
+#include "../../toolkitsenums.h"
+#include "../../../shared/shared.h"
+
+InsertMode ISSMToPetscInsertMode(InsMode mode){
+
+	switch(mode){
+		case ADD_VAL:  
+			return ADD_VALUES;
+			break;
+		case INS_VAL:
+			return INSERT_VALUES;
+			break;
+		default: 
+			_error_("unknown insert mode!");
+			break;
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/ISSMToPetscMatrixType.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/ISSMToPetscMatrixType.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/ISSMToPetscMatrixType.cpp	(revision 27955)
@@ -0,0 +1,31 @@
+/* \file ISSMToPetscMatrixType.cpp
+ * \brief: convert MatrixType from ISSM to Petsc
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscksp.h>
+
+/*ISSM includes: */
+#include "../../toolkitsenums.h"
+#include "../../../shared/shared.h"
+
+MatType ISSMToPetscMatrixType(MatrixType type){
+
+	switch(type){
+		case DENSE_SEQUENTIAL:  
+			return MATSEQDENSE;
+			break;
+		case SPARSE_SEQUENTIAL:  
+			return MATSEQAIJ;
+			break;
+		default: 
+			_error_("unknown matrix type !");
+			break;
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/ISSMToPetscNormMode.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/ISSMToPetscNormMode.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/ISSMToPetscNormMode.cpp	(revision 27955)
@@ -0,0 +1,31 @@
+/* \file ISSMToPetscNormMode.cpp
+ * \brief: convert NormMode from ISSM to Petsc
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscksp.h>
+
+/*ISSM includes: */
+#include "../../toolkitsenums.h"
+#include "../../../shared/shared.h"
+
+NormType ISSMToPetscNormMode(NormMode mode){
+
+	switch(mode){
+		case NORM_INF:  
+			return NORM_INFINITY;
+			break;
+		case NORM_TWO:  
+			return NORM_2;
+			break;
+		default: 
+			_error_("unknown norm !");
+			break;
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/KSPFree.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/KSPFree.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/KSPFree.cpp	(revision 27955)
@@ -0,0 +1,24 @@
+/*!\file:  KSPFree.cpp
+ * \brief wrapper to KSPDestroy
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscksp.h>
+
+void KSPFree(KSP* pksp){
+
+	#if PETSC_VERSION_LT(3,2,0)
+	if(*pksp)KSPDestroy(*pksp);
+	*pksp=NULL;
+	#else
+	if(*pksp)KSPDestroy(pksp);
+	*pksp=NULL;
+	#endif
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/MatFree.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/MatFree.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/MatFree.cpp	(revision 27955)
@@ -0,0 +1,24 @@
+/*!\file:  MatFree.cpp
+ * \brief wrapper to MatDestroy
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscksp.h>
+
+void MatFree(Mat* pmat){
+
+	#if PETSC_VERSION_LT(3,2,0)
+	if(*pmat)MatDestroy(*pmat);
+	*pmat=NULL;
+	#else
+	if(*pmat)MatDestroy(pmat);
+	*pmat=NULL;
+	#endif
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/MatMultPatch.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/MatMultPatch.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/MatMultPatch.cpp	(revision 27955)
@@ -0,0 +1,113 @@
+/*!\file:  MatMultPatch
+ * \brief: relocalize vector when MatMult yields non conforming object sizes errors.
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscksp.h>
+
+#include "../../mpi/issmmpi.h"
+#include "../../../shared/shared.h"
+
+/*Function prototypes: */
+int MatMultCompatible(Mat A,Vec x,ISSM_MPI_Comm comm);
+void VecRelocalize(Vec* outvector,Vec vector,int m,ISSM_MPI_Comm comm);
+
+void MatMultPatch(Mat A,Vec X, Vec AX,ISSM_MPI_Comm comm){ //same prototype as MatMult in Petsc
+
+	int m,n;
+	Vec X_rel=NULL;
+
+	_assert_(A); _assert_(X);
+
+	if (MatMultCompatible(A,X,comm)){
+		MatMult(A,X,AX); 
+	}
+	else{
+		MatGetLocalSize(A,&m,&n);;
+		VecRelocalize(&X_rel,X,n,comm);
+		MatMult(A,X_rel,AX); ;
+		#if PETSC_VERSION_LT(3,2,0)
+		VecDestroy(X_rel);
+		#else
+		VecDestroy(&X_rel);
+		#endif
+	}
+}
+
+int MatMultCompatible(Mat A,Vec x,ISSM_MPI_Comm comm){
+
+	/*error management*/
+
+	int local_m,local_n;
+	int range;
+	int result=1;
+	int sumresult;
+	int num_procs;
+
+	/*recover num_procs:*/
+	ISSM_MPI_Comm_size(comm,&num_procs);
+
+	MatGetLocalSize(A,&local_m,&local_n);;
+	VecGetLocalSize(x,&range);;
+
+	if (local_n!=range)result=0;
+
+	/*synchronize result: */
+	ISSM_MPI_Reduce (&result,&sumresult,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,comm );
+	ISSM_MPI_Bcast(&sumresult,1,ISSM_MPI_INT,0,comm);                
+	if (sumresult!=num_procs){
+		result=0;
+	}
+	else{
+		result=1;
+	}
+	return result;
+}
+
+void VecRelocalize(Vec* poutvector,Vec vector,int m,ISSM_MPI_Comm comm){
+
+	/*vector index and vector values*/
+	int* index=NULL;
+	double* values=NULL;
+	int lower_row,upper_row,range;
+
+	/*output: */
+	Vec outvector=NULL;
+
+	/*Create outvector with local size m*/
+	VecCreate(comm,&outvector); ; 
+	VecSetSizes(outvector,m,PETSC_DECIDE); ; 
+	VecSetFromOptions(outvector); ; 
+
+	/*Go through vector, get values, and plug them into outvector*/
+	VecGetOwnershipRange(vector,&lower_row,&upper_row); ; 
+	upper_row--;
+	range=upper_row-lower_row+1;
+	if (range){
+		index=xNew<int>(range);
+		values=xNew<double>(range);
+		for (int i=0;i<range;i++){
+			*(index+i)=lower_row+i;
+		}
+		VecGetValues(vector,range,index,values);
+		VecSetValues(outvector,range,index,values,INSERT_VALUES);
+	}
+
+	/*Assemble outvector*/
+	VecAssemblyBegin(outvector);; 
+	VecAssemblyEnd(outvector);; 
+
+	/*Free resources:*/
+	xDelete<int>(index);
+	xDelete<double>(values);	
+
+	/*Assign output pointers:*/
+	*poutvector=outvector;
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/MatToMPISerial.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/MatToMPISerial.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/MatToMPISerial.cpp	(revision 27955)
@@ -0,0 +1,96 @@
+/*!\file MatToMPISerial.cpp
+ * \brief gather a Petsc Mat matrix onto all cpus
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../petscincludes.h"
+#include "../../../shared/shared.h"
+
+void MatToMPISerial(double** poutmatrix,Mat matrix,ISSM_MPI_Comm comm,bool broadcast){
+
+	int i;
+	int my_rank;
+	int num_procs;
+
+	/*Petsc variables*/
+	PetscInt lower_row,upper_row; 
+	int range;
+	int M,N; //size of matrix
+	ISSM_MPI_Status status;
+	int* idxm=NULL;
+	int* idxn=NULL; 
+	double* local_matrix=NULL; /*matrix local to each node used for temporary holding matrix values*/
+	int buffer[3];
+
+	/*recover my_rank and num_procs:*/
+	ISSM_MPI_Comm_size(comm,&num_procs);
+	ISSM_MPI_Comm_rank(comm,&my_rank);
+
+	/*Output*/
+	double* outmatrix=NULL;
+
+	/*get matrix size: */
+	MatGetSize(matrix,&M,&N);
+
+	/*partition: */
+	MatGetOwnershipRange(matrix,&lower_row,&upper_row);    
+	upper_row--; 
+	range=upper_row-lower_row+1;
+
+	/*Local and global allocation*/
+	if(broadcast || my_rank==0){ 
+		outmatrix=xNew<double>(M*N);
+	}
+
+	if (range){
+		local_matrix=xNew<double>(N*range);
+		idxm=xNew<int>(range);  
+		idxn=xNew<int>(N);  
+
+		for (i=0;i<N;i++){
+			*(idxn+i)=i;
+		}
+		for (i=0;i<range;i++){
+			*(idxm+i)=lower_row+i;
+		}
+
+		MatGetValues(matrix,range,idxm,N,idxn,local_matrix);     
+	}
+
+	/*Now each node holds its local_matrix containing range rows. 
+	 * We send these rows to the matrix on node 0*/
+
+	for (i=1;i<num_procs;i++){
+		if (my_rank==i){ 
+			buffer[0]=my_rank;
+			buffer[1]=lower_row;
+			buffer[2]=range;
+			ISSM_MPI_Send(buffer,3,ISSM_MPI_INT,0,1,comm);   
+			if (range)ISSM_MPI_Send(local_matrix,N*range,ISSM_MPI_PDOUBLE,0,1,comm); 
+		}
+		if (my_rank==0){
+			ISSM_MPI_Recv(buffer,3,ISSM_MPI_INT,i,1,comm,&status); 
+			if (buffer[2])ISSM_MPI_Recv(outmatrix+(buffer[1]*N),N*buffer[2],ISSM_MPI_PDOUBLE,i,1,comm,&status);
+		}
+	} 
+	if (my_rank==0){ 
+		//Still have the local_matrix on node 0 to take care of.
+		if (range) memcpy(outmatrix,local_matrix,N*range*sizeof(double));
+	} 
+
+	if(broadcast){
+		/*Broadcast:*/
+		ISSM_MPI_Bcast(outmatrix,M*N,ISSM_MPI_PDOUBLE,0,comm);
+	}
+
+	/*Assign output pointer: */
+	xDelete<int>(idxm);
+	xDelete<int>(idxn);
+	xDelete<double>(local_matrix);
+	*poutmatrix=outmatrix;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/NewMat.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/NewMat.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/NewMat.cpp	(revision 27955)
@@ -0,0 +1,121 @@
+/*!\file:  NewMat.cpp
+ * \brief create matrix using the Petsc library
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscksp.h>
+
+#include "./petscpatches.h"
+#include "../../../shared/shared.h"
+#include "../../mpi/issmmpi.h"
+
+/*NewMat(int M,int N){{{*/
+Mat NewMat(int M,int N,ISSM_MPI_Comm comm){
+
+	/*output:*/
+	Mat outmatrix=NULL;
+
+	/*parameters: */
+	double sparsity=0.001; //default
+	int    m,n;
+	int    d_nz,o_nz,nnz;
+
+	/*Determine local sizes: */
+	m=DetermineLocalSize(M,comm);
+	n=DetermineLocalSize(N,comm);
+
+	nnz=(int)((double)M*(double)N*sparsity); //number of non zeros.
+	d_nz=(int)((double)nnz/(double)M/2.0); //number of non zeros per row/2
+	o_nz=(int)((double)nnz/(double)M/2.0); //number of non zeros per row/2
+
+	#if PETSC_VERSION_GT(3,2,0)
+	MatCreateAIJ(comm,m,n,M,N,d_nz,NULL,o_nz,NULL,&outmatrix); 
+	#else
+	MatCreateMPIAIJ(comm,m,n,M,N,d_nz,NULL,o_nz,NULL,&outmatrix); 
+	#endif
+
+	return outmatrix;
+}
+/*}}}*/
+/*NewMat(int M,int N,double sparsity,ISSM_MPI_Comm comm){{{*/
+Mat NewMat(int M,int N,double sparsity,ISSM_MPI_Comm comm){
+
+	/*output:*/
+	Mat outmatrix=NULL;
+
+	/*parameters: */
+	int    m,n;
+	int    d_nz,o_nz;
+	int    nnz;
+
+	/*Determine local sizes: */
+	m=DetermineLocalSize(M,comm);
+	n=DetermineLocalSize(N,comm);
+
+	nnz=(int)((double)M*(double)N*sparsity); //number of non zeros.
+	d_nz=(int)((double)nnz/(double)M/2.0); //number of non zeros per row/2
+	o_nz=(int)((double)nnz/(double)M/2.0); //number of non zeros per row/2
+
+	#if PETSC_VERSION_GT(3,2,0)
+	if(sparsity==1){
+		MatCreateDense(comm,m,n,M,N,NULL,&outmatrix); 
+	}
+	else{
+		MatCreateAIJ(comm,m,n,M,N,d_nz,NULL,o_nz,NULL,&outmatrix); 
+	}
+	#else
+	MatCreateMPIAIJ(comm,m,n,M,N,d_nz,NULL,o_nz,NULL,&outmatrix); 
+	#endif
+
+	return outmatrix;
+}
+/*}}}*/
+/*NewMat(int M,int N,int connectivity,int numberofdofspernode){{{*/
+Mat NewMat(int M,int N,int connectivity,int numberofdofspernode,ISSM_MPI_Comm comm){
+
+	/*output:*/
+	Mat outmatrix=NULL;
+
+	/*parameters: */
+	int    m,n;
+	int    d_nz,o_nz;
+
+	#if PETSC_VERSION_MAJOR >= 3 
+	#if defined(_HAVE_PETSCDEV_) || PETSC_VERSION_MINOR >=4
+	MatType type;
+	#else
+	const MatType type;
+	#endif
+	#else
+	MatType type;
+	#endif
+
+	/*Determine local sizes: */
+	m=DetermineLocalSize(M,comm);
+	n=DetermineLocalSize(N,comm);
+
+	/*Figure out number of non zeros per row: */
+	d_nz=(int)connectivity*numberofdofspernode/2;
+	o_nz=(int)connectivity*numberofdofspernode/2;
+
+	MatCreate(comm,&outmatrix);
+	MatSetSizes(outmatrix,m,n,M,N);
+	MatSetFromOptions(outmatrix);
+	MatSetOption(outmatrix,MAT_IGNORE_ZERO_ENTRIES,PETSC_TRUE);
+
+	/*preallocation  according to type: */
+	MatGetType(outmatrix,&type);
+
+	if((strcmp(type,"mpiaij")==0) || (strcmp(type,"mpidense")==0)){
+		MatMPIAIJSetPreallocation(outmatrix,d_nz,NULL,o_nz,NULL);
+	}
+
+	return outmatrix;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/NewVec.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/NewVec.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/NewVec.cpp	(revision 27955)
@@ -0,0 +1,38 @@
+/*!\file NewVec.cpp
+ * \brief: create distributed Petsc vector.
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscksp.h>
+
+#include "./petscpatches.h"
+#include "../../mpi/issmmpi.h"
+
+Vec NewVec(int size,ISSM_MPI_Comm comm,bool fromlocalsize){
+
+	int local_size;
+
+	/*output: */
+	Vec vector=NULL;
+
+	/*determine local size of vector: */
+	if(fromlocalsize){
+		local_size=size;
+	}
+	else{
+		local_size=DetermineLocalSize(size,comm);
+	}
+
+	VecCreate(comm,&vector); 
+	VecSetSizes(vector,local_size,PETSC_DECIDE); 
+	VecSetFromOptions(vector); 
+	VecSetOption(vector,VEC_IGNORE_NEGATIVE_INDICES,PETSC_TRUE);
+
+	return vector;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/PetscOptionsDetermineSolverType.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/PetscOptionsDetermineSolverType.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/PetscOptionsDetermineSolverType.cpp	(revision 27955)
@@ -0,0 +1,78 @@
+/*!\file PetscOptionsDetermineSolverType.cpp: from the petsc options, determine what kind of solver
+ * we are using.
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscksp.h>
+
+#include "./petscpatches.h"
+
+#include "../../../shared/shared.h"
+
+void PetscOptionsDetermineSolverType(int* psolver_type){
+
+	char option[100];
+	#if PETSC_VERSION_LT(3,2,0)
+	PetscTruth flag;
+	#else
+	PetscBool flag;
+	#endif
+
+	/*output: */
+	int solver_type=PETSCPACKAGE;
+
+	/*retrieve mat_type option: */
+	#if PETSC_VERSION_LT(3,7,0)
+	PetscOptionsGetString(PETSC_NULL,"-mat_type",&option[0],100,&flag);
+	#elif PETSC_VERSION_LT(3,19,0)
+	PetscOptionsGetString(NULL,PETSC_NULL,"-mat_type",&option[0],100,&flag);
+	#else /*newest version*/
+	PetscOptionsGetString(NULL,PETSC_NULLPTR,"-mat_type",&option[0],100,&flag);
+	#endif
+
+	if (strcmp(option,"aijmumps")==0){
+		solver_type=MUMPSPACKAGE_LU;
+	}
+	if (strcmp(option,"sbaijmumps")==0){
+		solver_type=MUMPSPACKAGE_CHOL;
+	}
+	if (strcmp(option,"aijspooles")==0){
+		solver_type=SPOOLESPACKAGE_LU;
+	}
+	if (strcmp(option,"sbaijspooles")==0){
+		solver_type=SPOOLESPACKAGE_CHOL;
+	}
+	if (strcmp(option,"superlu_dist")==0){
+		solver_type=SUPERLUDISTPACKAGE;
+	}
+	if (strcmp(option,"")==0){
+		solver_type=SUPERLUDISTPACKAGE;
+	}
+
+	#if PETSC_VERSION_LT(3,7,0)
+	PetscOptionsGetString(PETSC_NULL,"-pc_factor_mat_solver_package",&option[0],100,&flag);
+   #elif PETSC_VERSION_LT(3,19,0)
+	PetscOptionsGetString(NULL,PETSC_NULL,"-pc_factor_mat_solver_package",&option[0],100,&flag);
+   #else
+	PetscOptionsGetString(NULL,PETSC_NULLPTR,"-pc_factor_mat_solver_package",&option[0],100,&flag);
+   #endif
+
+	#if PETSC_VERSION_LT(3,7,0)
+	PetscOptionsGetString(PETSC_NULL,"-issm_option_solver",&option[0],100,&flag);
+   #elif PETSC_VERSION_LT(3,19,0)
+	PetscOptionsGetString(NULL,PETSC_NULL,"-issm_option_solver",&option[0],100,&flag);
+   #else
+	PetscOptionsGetString(NULL,PETSC_NULLPTR,"-issm_option_solver",&option[0],100,&flag);
+   #endif
+
+	if(strcmp(option,"mumps")==0) solver_type=MUMPSPACKAGE_LU;
+	if(strcmp(option,"FS")==0 || strcmp(option,"stokes")==0) solver_type=FSSolverEnum;
+
+	*psolver_type=solver_type;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/SolverEnum.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/SolverEnum.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/SolverEnum.h	(revision 27955)
@@ -0,0 +1,17 @@
+/*!\file: SolverEnum.h
+ * \brief prototypes for SolverEnum.h
+ */ 
+
+#ifndef _SOLVERENUM_H_
+#define  _SOLVERENUM_H_
+
+typedef enum{
+	PETSCPACKAGE,
+	MUMPSPACKAGE_LU,
+	MUMPSPACKAGE_CHOL,
+	SPOOLESPACKAGE_LU,
+	SPOOLESPACKAGE_CHOL,
+	SUPERLUDISTPACKAGE,
+} EXTERNALPACKAGES; 
+
+#endif //ifndef _SOLVERENUM_H_
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/VecFree.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/VecFree.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/VecFree.cpp	(revision 27955)
@@ -0,0 +1,23 @@
+/*!\file:  VecFree.cpp
+ * \brief wrapper to VecDestroy
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*Petsc includes: */
+#include <petscksp.h>
+
+void VecFree(Vec* pvec){
+
+	#if PETSC_VERSION_LT(3,2,0)
+	if(*pvec)VecDestroy(*pvec);
+	#else
+	if(*pvec)VecDestroy(pvec);
+	#endif
+	*pvec=NULL;
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/VecToMPISerial.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/VecToMPISerial.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/VecToMPISerial.cpp	(revision 27955)
@@ -0,0 +1,100 @@
+/*!\file VecToMPISerial.cpp
+ * \brief gather a Petsc Vector spread across the cluster, onto node 0, and then broadcast to all nodes. 
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../petscincludes.h"
+#include "../../../shared/shared.h"
+
+int VecToMPISerial(double** pgathered_vector, Vec vector,ISSM_MPI_Comm comm,bool broadcast){
+
+	int i;
+	int num_procs; 
+	int my_rank;
+
+	/*Petsc*/
+	ISSM_MPI_Status status;
+	PetscInt lower_row,upper_row; 
+	int range;
+	int * idxn=NULL; 
+	int buffer[3];
+
+	/*intermediary results*/
+	double* local_vector=NULL;
+
+	/*input*/
+	int vector_size;
+
+	/*Output*/
+	double* gathered_vector=NULL; //Global vector holding the final assembled vector on all nodes.
+
+	/*recover my_rank and num_procs*/
+	ISSM_MPI_Comm_size(comm,&num_procs);
+	ISSM_MPI_Comm_rank(comm,&my_rank);
+
+	VecGetSize(vector,&vector_size);
+	if(vector_size==0){
+		*pgathered_vector=NULL;
+		return 1;
+	}
+
+	/*Allocate gathered vector on all nodes .*/
+	if(broadcast || my_rank==0){ 
+		gathered_vector=xNew<double>(vector_size);
+	}
+
+	/*Allocate local vectors*/
+	VecGetOwnershipRange(vector,&lower_row,&upper_row);
+	upper_row--;
+	range=upper_row-lower_row+1;    
+
+	if (range){
+		idxn=xNew<int>(range); 
+		for (i=0;i<range;i++){
+			*(idxn+i)=lower_row+i;
+		} 
+		local_vector=xNew<double>(range);
+		/*Extract values from MPI vector to serial local_vector on each node*/
+		VecGetValues(vector,range,idxn,local_vector); 
+	}
+
+	/*Now each node holds its local_vector containing range rows. 
+	 * We send this local_vector  to the gathered_vector on node 0*/
+	for (i=1;i<num_procs;i++){
+		if (my_rank==i){ 
+			buffer[0]=my_rank;
+			buffer[1]=lower_row;
+			buffer[2]=range;
+			ISSM_MPI_Send(buffer,3,ISSM_MPI_INT,0,1,comm);  
+			if (range)ISSM_MPI_Send(local_vector,range,ISSM_MPI_PDOUBLE,0,1,comm); 
+		}
+		if (my_rank==0){
+			ISSM_MPI_Recv(buffer,3,ISSM_MPI_INT,i,1,comm,&status); 
+			if (buffer[2])ISSM_MPI_Recv(gathered_vector+buffer[1],buffer[2],ISSM_MPI_PDOUBLE,i,1,comm,&status);
+		}
+	}
+
+	if (my_rank==0){ 
+		//Still have the local_vector on node 0 to take care of.
+		if (range) memcpy(gathered_vector+lower_row,local_vector,range*sizeof(double));
+	}
+
+	if(broadcast){
+		/*Now, broadcast gathered_vector from node 0 to other nodes: */
+		ISSM_MPI_Bcast(gathered_vector,vector_size,ISSM_MPI_PDOUBLE,0,comm);
+	}
+
+	/*Assign output pointers: */
+	*pgathered_vector=gathered_vector;
+
+	/*Free resources: */
+	xDelete<int>(idxn);
+	xDelete<double>(local_vector);
+
+	return 1;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/petscpatches.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/petscpatches.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/patches/petscpatches.h	(revision 27955)
@@ -0,0 +1,35 @@
+/*\file petscpatches.h
+ * \brief: our own patches for petsc use
+ */
+
+#ifndef _PETSC_PATCHES_H_
+#define _PETSC_PATCHES_H_
+
+#include <petscksp.h>
+
+#include "./SolverEnum.h"
+#include "../../toolkitsenums.h"
+#include "../../../shared/io/Comm/IssmComm.h"
+
+class Parameters;
+
+Vec NewVec(int size,ISSM_MPI_Comm comm,bool fromlocalsize=false);
+Mat NewMat(int M,int N,ISSM_MPI_Comm comm);
+Mat NewMat(int M,int N,double sparsity,ISSM_MPI_Comm comm);
+Mat NewMat(int M,int N,int connectivity,int numberofdofspernode, ISSM_MPI_Comm comm);
+
+int VecToMPISerial(double** pgathered_vector, Vec vector,ISSM_MPI_Comm comm,bool broadcast=true);
+void MatFree(Mat* pmat);
+void ISFree(IS* pis);
+void VecFree(Vec* pvec);
+void KSPFree(KSP* pksp);
+int MatPartition(Mat* poutmatrix,Mat matrixA,double* row_partition_vector,int row_partition_vector_size, double* col_partition_vector,int col_partition_vector_size);
+void PetscOptionsDetermineSolverType(int* psolver_type);
+void MatMultPatch(Mat A,Vec X, Vec AX,ISSM_MPI_Comm comm);
+void MatToMPISerial(double** poutmatrix,Mat matrix,ISSM_MPI_Comm comm,bool broadcast=true);
+Vec  SerialToVec(double* vector,int vector_size);
+InsertMode ISSMToPetscInsertMode(InsMode mode);
+NormType ISSMToPetscNormMode(NormMode mode);
+MatType ISSMToPetscMatrixType(MatrixType type);
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/petscincludes.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/petscincludes.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/petsc/petscincludes.h	(revision 27955)
@@ -0,0 +1,18 @@
+/* \file petscincludes.h
+ * \brief all includes from Petsc + our own patches
+ */
+
+#ifndef _PETSC_INCLUDES_H_
+#define _PETSC_INCLUDES_H_
+
+#ifdef _HAVE_PETSC_
+
+/*Petsc includes: */
+#include <petscksp.h>
+
+/*our own patches: */
+#include "patches/petscpatches.h"
+#include "objects/petscobjects.h"
+
+#endif
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/toolkits.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/toolkits.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/toolkits.h	(revision 27955)
@@ -0,0 +1,44 @@
+/* \file toolkits.h
+ * \brief: this API allows use of external packages, provides patches, etc ...
+ */
+
+#ifndef _TOOLKITS_H_
+#define _TOOLKITS_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_PETSC_
+#include "./petsc/petscincludes.h"
+#endif
+
+#include "./mpi/issmmpi.h"
+
+#ifdef _HAVE_METIS_
+#include "./metis/metisincludes.h"
+#endif
+
+#ifdef _HAVE_GSL_
+#include "./gsl/gslincludes.h"
+#endif
+
+#ifdef _HAVE_ADOLC_
+#include "./adolc/adolcincludes.h"
+#endif
+
+#ifdef _HAVE_CODIPACK_
+#include "./codipack/codipackincludes.h"
+#endif
+
+#ifdef _HAVE_TRIANGLE_
+#include "./triangle/triangleincludes.h"
+#endif
+
+#include "./objects/toolkitobjects.h"
+#include "./toolkitsenums.h"
+#include "./issm/issmtoolkit.h"
+#include "./ToolkitOptions.h"
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/toolkitsenums.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/toolkitsenums.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/toolkitsenums.h	(revision 27955)
@@ -0,0 +1,18 @@
+/* \file toolkitsenums.h
+ * \brief: enums that encompasse all of the toolkit APIs. This mainly maps into PETSC enums.
+ */
+
+#ifndef _TOOLKITSENUMS_H_
+#define _TOOLKITSENUMS_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+typedef enum {INS_VAL, ADD_VAL} InsMode;
+typedef enum {NORM_INF,NORM_TWO,NORM_FROB} NormMode;
+typedef enum {DENSE_SEQUENTIAL,SPARSE_SEQUENTIAL} MatrixType;
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/triangle/triangleincludes.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/triangle/triangleincludes.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/c/toolkits/triangle/triangleincludes.h	(revision 27955)
@@ -0,0 +1,13 @@
+/* \file triangleincludes.h
+ * \brief all includes from triangle
+ */
+
+#ifndef _TRIANGLE_INCLUDES_H_
+#define _TRIANGLE_INCLUDES_H_
+
+#ifdef _C_ //only valid for iso C, not C++
+/*Triangle includes: */
+#include "triangle.h"
+#endif //#ifdef _C_
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/dox/issm.dox
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/dox/issm.dox	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/dox/issm.dox	(revision 27955)
@@ -0,0 +1,88 @@
+/** 
+  \mainpage ISSM C/C++ Source Code Browser
+
+  <BR>
+
+  <B> <I> Welcome ! </I> </B>
+
+  This is the searchable browsing tool for ISSM 
+  (the <a href="http://issm.jpl.nasa.gov">Ice Sheet System Model</a>).
+  
+  These pages were automatically generated by <a href="http://www.doxygen.org/">doxygen</a>, 
+  from the ISSM source code. 
+
+  Navigate the tabs above and browse through ISSM's 
+  C++ source code, files/directories, and data 
+  structures.
+
+  To find additional information regarding the use of
+  ISSM, its current release, or the ISSM team, please 
+  visit <a href="http://issm.jpl.nasa.gov">http://issm.jpl.nasa.gov</a>.
+
+  <BR>
+
+  <B> Helpful Links </B>
+
+  - Download ISSM <a href="http://issm.jpl.nasa.gov/download/">here</a>.
+
+  - ISSM Installation instructions for Linux/Mac OSX are found <a href="http://issm.jpl.nasa.gov/download/unix/">here</a>.
+  
+  - ISSM Installation instructions for Windows are found <a href="http://issm.jpl.nasa.gov/download/windows/">here</a>.
+
+  - For help using ISSM, see our online <a href="http://issm.jpl.nasa.gov/documentation/">Documentation</a>.
+  Other documentation is also available including simple tutorials 
+  and FAQ.
+
+  - A current publication list is kept <a href="http://issm.jpl.nasa.gov/publications/">here</a>.
+
+  - Contact us by e-mail at <a href="mailto:issm@jpl.nasa.gov">issm@jpl.nasa.gov</a>
+
+  <BR>
+  
+  <B> Code Stats</B>
+
+<table width="600px" rules=none border=0 bordercolor="#000000" cellpadding="3" align="center" style="border-collapse:collapse;">
+ <tr> 
+<th  bgcolor=#7AA9DD style="text-align:left;">Language</th><th  bgcolor=#7AA9DD style="text-align:right;">files</th><th  bgcolor=#7AA9DD style="text-align:right;">blank</th><th  bgcolor=#7AA9DD style="text-align:right;">comment</th><th  bgcolor=#7AA9DD style="text-align:right;">code</th><th  bgcolor=#7AA9DD style="text-align:right;">Total</th>
+</th>
+<tr>
+<th  bgcolor=#FFFFFF style="text-align:left;"> C++ </th><td  bgcolor=#FFFFFF style="text-align:right;">500</td><td  bgcolor=#FFFFFF style="text-align:right;">21438</td><td  bgcolor=#FFFFFF style="text-align:right;">21870</td><td  bgcolor=#FFFFFF style="text-align:right;">104083</td><td  bgcolor=#FFFFFF style="text-align:right;">147391</td>
+</tr>
+<tr>
+<th  bgcolor=#C6E2FF style="text-align:left;"> MATLAB </th><td  bgcolor=#C6E2FF style="text-align:right;">1003</td><td  bgcolor=#C6E2FF style="text-align:right;">10461</td><td  bgcolor=#C6E2FF style="text-align:right;">15477</td><td  bgcolor=#C6E2FF style="text-align:right;">86652</td><td  bgcolor=#C6E2FF style="text-align:right;">112590</td>
+</tr>
+<tr>
+<th  bgcolor=#FFFFFF style="text-align:left;"> Python </th><td  bgcolor=#FFFFFF style="text-align:right;">313</td><td  bgcolor=#FFFFFF style="text-align:right;">5589</td><td  bgcolor=#FFFFFF style="text-align:right;">5485</td><td  bgcolor=#FFFFFF style="text-align:right;">43816</td><td  bgcolor=#FFFFFF style="text-align:right;">54890</td>
+</tr>
+<tr>
+<th  bgcolor=#C6E2FF style="text-align:left;"> JavaScript </th><td  bgcolor=#C6E2FF style="text-align:right;">108</td><td  bgcolor=#C6E2FF style="text-align:right;">4270</td><td  bgcolor=#C6E2FF style="text-align:right;">7779</td><td  bgcolor=#C6E2FF style="text-align:right;">24881</td><td  bgcolor=#C6E2FF style="text-align:right;">36930</td>
+</tr>
+<tr>
+<th  bgcolor=#FFFFFF style="text-align:left;"> C/C++  Header </th><td  bgcolor=#FFFFFF style="text-align:right;">435</td><td  bgcolor=#FFFFFF style="text-align:right;">3712</td><td  bgcolor=#FFFFFF style="text-align:right;">3794</td><td  bgcolor=#FFFFFF style="text-align:right;">17850</td><td  bgcolor=#FFFFFF style="text-align:right;">25356</td>
+</tr>
+<tr>
+<th  bgcolor=#C6E2FF style="text-align:left;"> m4 </th><td  bgcolor=#C6E2FF style="text-align:right;">8</td><td  bgcolor=#C6E2FF style="text-align:right;">1021</td><td  bgcolor=#C6E2FF style="text-align:right;">160</td><td  bgcolor=#C6E2FF style="text-align:right;">10627</td><td  bgcolor=#C6E2FF style="text-align:right;">11808</td>
+</tr>
+<tr>
+<th  bgcolor=#FFFFFF style="text-align:left;"> vim  script </th><td  bgcolor=#FFFFFF style="text-align:right;">1</td><td  bgcolor=#FFFFFF style="text-align:right;">4</td><td  bgcolor=#FFFFFF style="text-align:right;">13</td><td  bgcolor=#FFFFFF style="text-align:right;">1498</td><td  bgcolor=#FFFFFF style="text-align:right;">1515</td>
+</tr>
+<tr>
+<th  bgcolor=#C6E2FF style="text-align:left;"> Fortran  90 </th><td  bgcolor=#C6E2FF style="text-align:right;">6</td><td  bgcolor=#C6E2FF style="text-align:right;">361</td><td  bgcolor=#C6E2FF style="text-align:right;">382</td><td  bgcolor=#C6E2FF style="text-align:right;">1160</td><td  bgcolor=#C6E2FF style="text-align:right;">1903</td>
+</tr>
+<tr>
+<th  bgcolor=#FFFFFF style="text-align:left;"> Bourne  Again  Shell </th><td  bgcolor=#FFFFFF style="text-align:right;">4</td><td  bgcolor=#FFFFFF style="text-align:right;">108</td><td  bgcolor=#FFFFFF style="text-align:right;">208</td><td  bgcolor=#FFFFFF style="text-align:right;">524</td><td  bgcolor=#FFFFFF style="text-align:right;">840</td>
+</tr>
+<tr>
+<th  bgcolor=#C6E2FF style="text-align:left;"> Fortran  77 </th><td  bgcolor=#C6E2FF style="text-align:right;">7</td><td  bgcolor=#C6E2FF style="text-align:right;">4</td><td  bgcolor=#C6E2FF style="text-align:right;">302</td><td  bgcolor=#C6E2FF style="text-align:right;">365</td><td  bgcolor=#C6E2FF style="text-align:right;">671</td>
+</tr>
+<tr>
+<th  bgcolor=#FFFFFF style="text-align:left;"> Bourne  Shell </th><td  bgcolor=#FFFFFF style="text-align:right;">3</td><td  bgcolor=#FFFFFF style="text-align:right;">63</td><td  bgcolor=#FFFFFF style="text-align:right;">80</td><td  bgcolor=#FFFFFF style="text-align:right;">270</td><td  bgcolor=#FFFFFF style="text-align:right;">413</td>
+</tr>
+<tr>
+<th  bgcolor=#C6E2FF style="text-align:left;"> JSON </th><td  bgcolor=#C6E2FF style="text-align:right;">2</td><td  bgcolor=#C6E2FF style="text-align:right;">0</td><td  bgcolor=#C6E2FF style="text-align:right;">0</td><td  bgcolor=#C6E2FF style="text-align:right;">28</td><td  bgcolor=#C6E2FF style="text-align:right;">28</td>
+</tr>
+<tr>
+<th  bgcolor=#FFFFFF style="text-align:left;"> SUM: </th><td  bgcolor=#FFFFFF style="text-align:right;">2390</td><td  bgcolor=#FFFFFF style="text-align:right;">47031</td><td  bgcolor=#FFFFFF style="text-align:right;">55550</td><td  bgcolor=#FFFFFF style="text-align:right;">291754</td><td  bgcolor=#FFFFFF style="text-align:right;">394335</td>
+</tr>
+ </table>
+*/
Index: /issm/branches/trunk-dlcheng-ASE/src/m/Makefile.am
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/Makefile.am	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/Makefile.am	(revision 27955)
@@ -0,0 +1,134 @@
+#To generate list of directories
+#
+#find . -type d -exec ls -d {} \;
+
+bin_SCRIPTS =
+if WRAPPERS
+if MATLAB
+if !DEVELOPMENT
+# TODO: There should be a better way of doing this so that manual updating is
+#		not required when a new subdirectory or module is introduced (search
+#		all subdirectories for file type, checking against an exclude list)
+bin_SCRIPTS += \
+	${ISSM_DIR}/src/m/archive/*.m \
+	${ISSM_DIR}/src/m/array/*.m \
+	${ISSM_DIR}/src/m/boundaryconditions/*.m \
+	${ISSM_DIR}/src/m/classes/*.m \
+	${ISSM_DIR}/src/m/classes/clusters/*.m \
+	${ISSM_DIR}/src/m/classes/qmu/*.m \
+	${ISSM_DIR}/src/m/classes/qmu/dakota_method/*.m \
+	${ISSM_DIR}/src/m/consistency/*.m \
+	${ISSM_DIR}/src/m/coordsystems/*.m \
+	${ISSM_DIR}/src/m/dev/issmversion.m \
+	${ISSM_DIR}/src/m/exp/*.m \
+	${ISSM_DIR}/src/m/exp/operation/*.m \
+	${ISSM_DIR}/src/m/extrusion/*.m \
+	${ISSM_DIR}/src/m/geometry/*.m \
+	${ISSM_DIR}/src/m/interp/*.m \
+	${ISSM_DIR}/src/m/inversions/*.m \
+	${ISSM_DIR}/src/m/io/*.m \
+	${ISSM_DIR}/src/m/kml/*.m \
+	${ISSM_DIR}/src/m/materials/*.m \
+	${ISSM_DIR}/src/m/mech/*.m \
+	${ISSM_DIR}/src/m/mesh/*.m \
+	${ISSM_DIR}/src/m/mesh/planet/gmsh/*.m \
+	${ISSM_DIR}/src/m/mesh/planet/spheretri/*.m \
+	${ISSM_DIR}/src/m/mesh/rifts/*.m \
+	${ISSM_DIR}/src/m/miscellaneous/*.m \
+	${ISSM_DIR}/src/m/modules/*.m \
+	${ISSM_DIR}/src/m/modeldata/*.m \
+	${ISSM_DIR}/src/m/os/*.m \
+	${ISSM_DIR}/src/m/parameterization/*.m \
+	${ISSM_DIR}/src/m/partition/*.m \
+	${ISSM_DIR}/src/m/plot/*.m \
+	${ISSM_DIR}/src/m/plot/colormaps/*.m \
+	${ISSM_DIR}/src/m/print/*.m \
+	${ISSM_DIR}/src/m/qmu/*.m \
+	${ISSM_DIR}/src/m/qmu/examples/*.m \
+	${ISSM_DIR}/src/m/qmu/plot/*.m \
+	${ISSM_DIR}/src/m/qmu/setupdesign/*.m \
+	${ISSM_DIR}/src/m/regional/*.m \
+	${ISSM_DIR}/src/m/shp/*.m \
+	${ISSM_DIR}/src/m/solve/*.m \
+	${ISSM_DIR}/src/m/solvers/*.m \
+	${ISSM_DIR}/src/m/string/*.m
+endif
+endif
+
+if PYTHON
+if !DEVELOPMENT
+# TODO: There should be a better way of doing this so that manual updating is
+#		not required when a new subdirectory or module is introduced (search
+#		all subdirectories for file type, checking against an exclude list)
+bin_SCRIPTS += \
+	${ISSM_DIR}/src/m/archive/*.py \
+	${ISSM_DIR}/src/m/array/*.py \
+	${ISSM_DIR}/src/m/boundaryconditions/*.py \
+	${ISSM_DIR}/src/m/classes/*.py \
+	${ISSM_DIR}/src/m/classes/clusters/*.py \
+	${ISSM_DIR}/src/m/classes/qmu/*.py \
+	${ISSM_DIR}/src/m/classes/qmu/dakota_method/*.py \
+	${ISSM_DIR}/src/m/consistency/*.py \
+	${ISSM_DIR}/src/m/coordsystems/*.py \
+	${ISSM_DIR}/src/m/dev/issmversion.py \
+	${ISSM_DIR}/src/m/exp/*.py \
+	${ISSM_DIR}/src/m/extrusion/*.py \
+	${ISSM_DIR}/src/m/geometry/*.py \
+	${ISSM_DIR}/src/m/interp/*.py \
+	${ISSM_DIR}/src/m/inversions/*.py \
+	${ISSM_DIR}/src/m/io/*.py \
+	${ISSM_DIR}/src/m/materials/*.py \
+	${ISSM_DIR}/src/m/mech/*.py \
+	${ISSM_DIR}/src/m/mesh/*.py \
+	${ISSM_DIR}/src/m/mesh/planet/gmsh/*.py \
+	${ISSM_DIR}/src/m/mesh/rifts/*.py \
+	${ISSM_DIR}/src/m/miscellaneous/*.py \
+	${ISSM_DIR}/src/m/modules/*.py \
+	${ISSM_DIR}/src/m/os/*.py \
+	${ISSM_DIR}/src/m/parameterization/*.py \
+	${ISSM_DIR}/src/m/partition/*.py \
+	${ISSM_DIR}/src/m/plot/*.py \
+	${ISSM_DIR}/src/m/plot/colormaps/*.py \
+	${ISSM_DIR}/src/m/qmu/*.py \
+	${ISSM_DIR}/src/m/qmu/setupdesign/*.py \
+	${ISSM_DIR}/src/m/shp/*.py \
+	${ISSM_DIR}/src/m/solve/*.py \
+	${ISSM_DIR}/src/m/solvers/*.py
+endif
+endif
+
+if JAVASCRIPT
+if !DEVELOPMENT
+# TODO: There should be a better way of doing this so that manual updating is
+#		not required when a new subdirectory or module is introduced (search
+#		all subdirectories for file type, checking against an exclude list)
+js_scripts = \
+	${ISSM_DIR}/src/m/array/*.js \
+	${ISSM_DIR}/src/m/boundaryconditions/*.js \
+	${ISSM_DIR}/src/m/classes/*.js \
+	${ISSM_DIR}/src/m/classes/clusters/*.js \
+	${ISSM_DIR}/src/m/consistency/*.js \
+	${ISSM_DIR}/src/m/exp/*.js \
+	${ISSM_DIR}/src/m/extrusion/*.js \
+	${ISSM_DIR}/src/m/geometry/*.js \
+	${ISSM_DIR}/src/m/inversions/*.js \
+	${ISSM_DIR}/src/m/io/*.js \
+	${ISSM_DIR}/src/m/materials/*.js \
+	${ISSM_DIR}/src/m/mesh/*.js \
+	${ISSM_DIR}/src/m/miscellaneous/*.js \
+	${ISSM_DIR}/src/m/parameterization/*.js \
+	${ISSM_DIR}/src/m/plot/*.js \
+	${ISSM_DIR}/src/m/print/*.js \
+	${ISSM_DIR}/src/m/shp/*.js \
+	${ISSM_DIR}/src/m/solve/*.js \
+	${ISSM_DIR}/src/m/solvers/*.js
+bin_SCRIPTS +=  issm-bin.js
+
+issm-bin.js: ${js_scripts}
+	rm -f issm-bin.js
+	cat ${js_scripts} > issm-bin.js
+
+endif
+endif
+
+endif
Index: /issm/branches/trunk-dlcheng-ASE/src/m/archive/arch.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/archive/arch.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/archive/arch.py	(revision 27955)
@@ -0,0 +1,249 @@
+import numpy as np
+import struct
+from os import path
+from collections import OrderedDict
+
+
+def archwrite(filename, *args):  # {{{
+    """ARCHWRITE - Write data to a field, given the file name, field name, and data.
+
+    Usage:
+        archwrite('archive101.arch', 'variable_name', data)
+    """
+
+    if len(args) % 2 != 0:
+        raise ValueError('Incorrect number of arguments.')
+    # open file
+    try:
+        if not path.isfile(filename):
+            fid = open(filename, 'wb')
+        else:
+            fid = open(filename, 'ab')
+    except IOError as e:
+        raise IOError("archwrite error: could not open '{}' to write to due to:".format(filename), e)
+    nfields = len(args) / 2
+    # generate data to write
+    for i in range(int(nfields)):
+        # write field name
+        name = args[2 * i]
+        write_field_name(fid, name)
+        # write data associated with field name
+        data = args[2 * i + 1]
+        code = format_archive_code(data)
+        if code == 1:
+            raise ValueError("archwrite : error writing data, string should not be written as field data")
+        elif code == 2:
+            write_scalar(fid, data)
+        elif code == 3:
+            write_vector(fid, data)
+        else:
+            raise ValueError("archwrite : error writing data, invalid code entered '{}'".format(code))
+    fid.close()
+    # }}}
+
+
+def archread(filename, fieldname):  # {{{
+    """ARCHREAD - Given an arch file name, and a field name, find and return 
+    the data associated with that field name.
+
+    Usage:
+        archread('archive101.arch', 'field_var_1')
+    """
+    try:
+        if path.isfile(filename):
+            fid = open(filename, 'rb')
+        else:
+            raise IOError("archread error : file '{}' does not exist".format(filename))
+    except IOError as e:
+        raise IOError("archread error : could not open file '{}' to read from due to :".format(filename), e)
+
+    archive_results = []
+    # read first result
+    result = read_field(fid)
+    while result:
+        if fieldname == result['field_name']:
+            # found the data we wanted
+            archive_results = result['data']  # we only want the data
+            break
+    # read next result
+        result = read_field(fid)
+    # close file
+    fid.close()
+    return archive_results
+    # }}}
+
+
+def archdisp(filename):  # {{{
+    """ARCHDISP - Given an arch filename, display the contents of that file
+
+    Usage:
+        archdisp('archive101.arch')
+    """
+    try:
+        if path.isfile(filename):
+            fid = open(filename, 'rb')
+        else:
+            raise IOError("archread error : file '{}' does not exist".format(filename))
+    except IOError as e:
+        raise IOError("archread error : could not open file '{}' to read from due to ".format(filename), e)
+    print('Source file: ')
+    print(('\t{0}'.format(filename)))
+    print('Variables: ')
+    result = read_field(fid)
+    while result:
+        print(('\t{0}'.format(result['field_name'])))
+        print(('\t\tSize:\t\t{0}'.format(result['size'])))
+        print(('\t\tDatatype:\t{0}'.format(result['data_type'])))
+        # go to next result
+        result = read_field(fid)
+    # close file
+    fid.close()
+    # }}}
+
+
+# Helper functions
+def write_field_name(fid, data):  # {{{
+    """Routine to write field name (variable name) to an archive file.
+    """
+    # write the length of the record
+    # length to write + string size (len) + format code
+    reclen = len(data) + 4 + 4
+    fid.write(struct.pack('>i', reclen))
+    # write format code
+    code = format_archive_code(data)
+    if code != 1:
+        raise TypeError("archwrite : error writing field name, expected string, but got %s" % type(data))
+    fid.write(struct.pack('>i', 1))
+    # write string length, and then the string
+    fid.write(struct.pack('>i', len(data)))
+    fid.write(struct.pack('>{}s'.format(len(data)), data.encode('utf8')))
+    # }}}
+
+
+def write_scalar(fid, data):  # {{{
+    """Procedure to write a double to an arch file pointed to by fid
+    """
+    # write length of record
+    # double (8 bytes) + format code (4 bytes)
+    reclen = 8 + 4
+    fid.write(struct.pack('>i', reclen))
+
+    # write the format code (2 for scalar)
+    fid.write(struct.pack('>i', 2))
+    # write the double
+    fid.write(struct.pack('>d', data))
+    # }}}
+
+
+def write_vector(fid, data):  # {{{
+    """Procedure to write a np.array to an arch file
+    """
+    # Make sure our vector is the correct shape.
+    # Reshape it into a row vector if it is not correct.
+    if isinstance(data, (bool, int, float)):
+        data = np.array([data])
+    elif isinstance(data, (list, tuple)):
+        data = np.array(data).reshape(-1, )
+    if np.ndim(data) == 1:
+        if np.size(data):
+            data = data.reshape(np.size(data), )
+        else:
+            data = data.reshape(0, 0)
+    # get size of data
+    sz = data.shape
+    # write length of record
+    # format code + row size + col size + (double size * row amt * col amt)
+    reclen = 4 + 4 + 4 + 8 * sz[0] * sz[1]
+    # make sure we can fit data into file
+    if reclen > pow(2, 31):
+        raise ValueError("archwrite error : can not write vector to binary file because it is too large")
+    fid.write(struct.pack('>i', reclen))
+    # write format code
+    fid.write(struct.pack('>i', 3))
+    # write vector
+    fid.write(struct.pack('>i', sz[0]))
+    fid.write(struct.pack('>i', sz[1]))
+    for i in range(sz[0]):
+        for j in range(sz[1]):
+            fid.write(struct.pack('>d', float(data[i][j])))
+    # }}}
+
+
+def read_field(fid):  # {{{
+    """Procedure to read a field and return a results list with the following 
+    attributes:
+
+        result['field_name']    -> the name of the variable that was just read
+        result['size']          -> size (dimensions) of the variable just read
+        result['data_type']     -> the type of data that was just read
+        result['data']          -> the actual data
+    """
+
+    try:
+        # first, read the string
+        # first read the size and continue reading
+        struct.unpack('>i', fid.read(struct.calcsize('>i')))[0]  # name length
+        check_name = struct.unpack('>i', fid.read(struct.calcsize('>i')))[0]
+        if check_name != 1:
+            raise ValueError('archread error : a string was not present at the start of the arch file')
+        namelen = struct.unpack('>i', fid.read(struct.calcsize('>i')))[0]
+        fieldname = struct.unpack('>{}s'.format(namelen), fid.read(namelen))[0]
+        # then, read the data
+        # first read the size and continue reading
+        struct.unpack('>i', fid.read(struct.calcsize('>i')))[0]  # data length
+        data_type = struct.unpack('>i', fid.read(struct.calcsize('>i')))[0]
+
+        if data_type == 2:
+            # struct.upack scalar
+            data = struct.unpack('>d', fid.read(struct.calcsize('>d')))[0]
+        elif data_type == 3:
+            rows = struct.unpack('>i', fid.read(struct.calcsize('>i')))[0]
+            cols = struct.unpack('>i', fid.read(struct.calcsize('>i')))[0]
+            raw_data = np.zeros(shape=(rows, cols), dtype=float)
+            for i in range(rows):
+                raw_data[i, :] = struct.unpack('>{}d'.format(cols), fid.read(cols * struct.calcsize('>d')))
+                # The matrix will be struct.upacked in order and will be filled left -> right by column
+                # We need to reshape and transpose the matrix so it can be read correctly
+            data = raw_data.reshape(raw_data.shape[::-1]).T
+        else:
+            raise TypeError("Cannot read data type {}".format(data_type))
+
+        # give additional data to user
+        if data_type == 2:
+            data_size = '1x1'
+            data_type_str = 'double'
+        elif data_type == 3:
+            data_size = '{0}x{1}'.format(rows, cols)
+            data_type_str = 'vector/matrix'
+
+        result = OrderedDict()
+        result['field_name'] = fieldname.decode('utf8')
+        result['size'] = data_size
+        result['data_type'] = data_type_str
+        result['data'] = data
+
+    except struct.error as e:
+        result = None
+        print("result is empty due to", e)
+
+    return result
+    # }}}
+
+
+def format_archive_code(var):  # {{{
+    """Given a variable, determine it's type and return an integer value:
+
+        1 : string
+        2 : double (scalar)
+        3 : vector or matrix (of type double)
+    """
+    if isinstance(var, str):
+        code = 1
+    elif var.shape[0] == 1 and var.shape[1] == 1:
+        code = 2
+    elif isinstance(var, (list, tuple, np.ndarray)):
+        code = 3
+    else:
+        raise TypeError('archwrite error: data type {} is not valid.'.format(type(var)))
+    return code
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/archive/archdisp.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/archive/archdisp.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/archive/archdisp.m	(revision 27955)
@@ -0,0 +1,65 @@
+function archdisp(filename) % {{{
+%ARCHDISP - Display the contents of a .arch file
+%
+%	Usage:
+%		archdisp('archive101.arch');
+
+	if nargin~=1
+		help archdisplay
+		error('Error: Invalid number of arguments, only one file can be displayed at a time');
+	end
+
+	if ~exist(filename,'file'),
+		error('Error: File does not exist!');
+	end
+	
+	fid=fopen(filename,'rb');
+	fprintf('Source file: \n');
+	fprintf('\t%s\n',filename);
+	fprintf('Variables: \n');
+
+	field_names={};
+	field_sizes={};
+	field_types={};
+	archive_data=[];
+
+	% Read file
+	while ~feof(fid)
+		[reclen,count]=fread(fid,1,'int','ieee-be');
+		if count == 0, % reached eof
+			break;
+		end
+		% Read variable name
+		fread(fid,1,'int','ieee-be'); % this will always return a string
+		field_name_length=fread(fid,1,'int','ieee-be');
+		field_names{end+1}=char(fread(fid,field_name_length,'char','ieee-be')');
+		% Read variable traits
+		data_reclen=fread(fid,1,'int','ieee-be');
+		field_type=fread(fid,1,'int','ieee-be');
+		% return related type
+		if field_type==2
+			field_types{end+1}='double';
+			field_sizes{end+1}='1x1'; % a scalar will always be a 1x1 cell array
+			archive_data{end+1}=fread(fid,1,'double','ieee-be');
+		elseif field_type==3
+			field_types{end+1}='vector/matrix';
+			rows=fread(fid,1,'int','ieee-be');
+			cols=fread(fid,1,'int','ieee-be');
+			data=fread(fid,[rows,cols],'double','ieee-be');
+			field_size_cat=strcat(num2str(rows),'x',num2str(cols)); 
+			field_sizes{end+1}=field_size_cat;
+			archive_data{end+1}=data;
+		else
+			fclose(fid);
+			error('Encountered invalid data type while reading archive.');
+		end
+	end
+	fclose(fid);
+
+	% Display contents
+	for i=1:numel(field_names)
+		fprintf('\t%s\n',field_names{i});
+		fprintf('\t\tSize:\t\t%s\n',field_sizes{i});
+		fprintf('\t\tDatatype:\t%s\n',field_types{i});	
+	end
+end % }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/archive/archread.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/archive/archread.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/archive/archread.m	(revision 27955)
@@ -0,0 +1,101 @@
+function [archive_data]=archread(filename,varargin) % {{{
+%ARCHREAD - Given a variable name list of variable names (given as separate arguments),
+%	find and return the data associated with those variable names
+%
+%	Usage:
+%		archive_data = archread('archive101.arch','archive101_field1');
+
+	nvarargs=length(varargin);
+
+	if nargin<2
+		help archread
+		error('Error: Must provide correct number of arguments.');
+	end
+
+	%open file
+	fid=fopen(filename,'rb');
+	if fid==-1
+		error(['Error: File: ' filename ' does not exist.']);
+	end
+
+	% Get structure of file
+	field_names={};
+	field_data_positions=[]; % starting position (in bytes) of data
+	archive_data=[];
+
+	% pass 1: get field names and relate them to field data 
+	while ~feof(fid)
+		[reclen,count]=fread(fid,1,'int','ieee-be'); 
+		if count == 0, % reached eof 
+			break;
+		end
+		record_type=fread(fid,1,'int','ieee-be');
+		if record_type~=1
+			fclose(fid);
+			error(['Error: Reading failed. Expected variable of type string, type given was ' format_archive_code_to_type(record_type)]);
+		else
+			field_name_length=fread(fid,1,'int','ieee-be');
+			field_names{end+1}=char(fread(fid,field_name_length,'char','ieee-be')');
+			% once we have a field name at index i, we will associate
+			% the starting positiion of the data related to that field name
+			% by using field data positions at index i
+			field_data_positions(end+1)=ftell(fid);
+			data_reclen=fread(fid,1,'int','ieee-be');
+			fseek(fid,data_reclen,'cof'); % advance to next field name
+		end
+	end
+	fseek(fid,0,-1); % rewind
+
+	% Determine what fields we need (compare to varargin)
+	idx=find(ismember(field_names,varargin));
+	if size(idx) == 0,
+		fclose(fid);
+		error('Error: No matching variables found in archive.');
+	end
+	% Get data from field_data_positions
+	for i=1:length(idx)
+		fseek(fid,field_data_positions(idx(i)),0); % get starting position of data
+		reclen=fread(fid,1,'int','ieee-be');
+		field_type=fread(fid,1,'int','ieee-be');
+		if field_type==2
+			archive_data{i}=fread(fid,1,'double','ieee-be');
+		elseif field_type==3
+			archive_data{i}=read_vector(fid);
+		else
+			fclose(fid);
+			error('Error: Encountered invalid field type when reading data.');
+		end
+	end
+	fclose(fid);
+end%}}}
+
+%Helper functions{{{
+function [code]=format_archive_code(format) % {{{
+%Given a format, return corresponding code (for reading and writing)
+	if ischar(format)
+		code=1; % string
+	elseif isscalar(format)
+		code=2; % scalar
+	elseif isvector(format) or ismatrix(format)
+		code=3; % vector 
+	else
+		error('Error! Please ensure arguments are strings, scalars, or vectors.');
+	end
+end%}}}
+function [str]=format_archive_code_to_type(code) % {{{
+	if code == 1
+		str='string';
+	elseif code == 2
+		str='scalar';
+	elseif code == 3
+		str='vector';
+	else
+		error(['Code ' num2str(code) ' is not associated with any known format.']);
+	end
+end%}}}
+function [data]=read_vector(fid) % {{{
+	rows=fread(fid,1,'int','ieee-be'); 
+	cols=fread(fid,1,'int','ieee-be');
+	data=fread(fid,[rows,cols],'double','ieee-be');
+end%}}}
+%}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/archive/archwrite.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/archive/archwrite.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/archive/archwrite.m	(revision 27955)
@@ -0,0 +1,91 @@
+function archwrite(filename,varargin) % {{{
+%ARCHWRITE - Write data to a field, given the file name, field name, and data.
+%
+%	Usage:
+%		archwrite('archive101.arch','variable_name',data);
+%		archwrite('archive102.arch','archive102_field1',transpose(field_value{1}),...
+%					'archive_field2',transpose(field_value{2}),...
+%					'archive_field3',-6.2420512521312);
+
+	nvarargs=length(varargin);
+
+	if nargin==1 || mod(nvarargs,2)~=0
+		help archwrite
+		error('Error: Invalid number of arguments provided. Please check the usage above.');
+	end
+
+	if ~exist(filename,'file'),
+		fid=fopen(filename,'wb');	% create new file
+	else
+		fid=fopen(filename,'ab+');	% append to file
+	end
+
+	numfields=nvarargs/2;
+	% Generate data to write
+	for i=1:numfields,
+		% write field name
+		name=varargin{2*i-1};
+		write_field_name(fid,name);
+
+		% write data
+		data=varargin{2*i};
+		code=format_archive_code(data);
+		if code==1
+			fclose(fid);
+			error('Error: Field data should be a vector or scalar, string was detected');
+		elseif code==2 % scalar
+			write_scalar(fid,data);
+		elseif code==3 % vector
+			write_vector(fid,data);
+		end
+	end
+	% clean up
+	fclose(fid);
+end%}}}
+
+%Helper functions{{{
+function [code]=format_archive_code(format) % {{{
+	%Given a format, return corresponding code (for reading and writing)
+	if ischar(format)
+		code=1; % string
+	elseif isscalar(format)
+		code=2; % scalar
+	elseif (isvector(format) || ismatrix(format))
+		code=3; % vector or matrix
+	else
+		error('Error! Please ensure arguments are strings, scalars, or vectors/matrixes.');
+	end
+end%}}}
+function write_field_name(fid,field_name) % {{{
+	% write record length for name
+	rclen=4+4+length(field_name); % format code + length to write + amt of chars to write
+	fwrite(fid,rclen,'int','ieee-be');
+
+	% write field name to file
+	fwrite(fid,1,'int','ieee-be');							% data will be a string
+	fwrite(fid,length(field_name),'int','ieee-be');	% show how many chars need to be read
+	fwrite(fid,field_name,'char','ieee-be');			% write field name
+end%}}}
+function write_scalar(fid,data) % {{{
+	% write record length for scalar
+	rclen=4+8; % format code + size of double (8 bytes)
+	fwrite(fid,rclen,'int','ieee-be');
+
+	% write scalar to file
+	fwrite(fid,2,'int','ieee-be');			% data will be scalar
+	fwrite(fid,data,'double','ieee-be');	% write scalar to file
+end%}}}
+function write_vector(fid,data) % {{{
+	% write record length for vector
+	row_size=size(data,1);
+	col_size=size(data,2);
+	rclen=4+4+4+8*row_size*col_size; % code+rowsz+colsz+(doublesz*rowamt*colamt)
+	fwrite(fid,rclen,'int','ieee-be');
+	
+	% write vector to file
+	fwrite(fid,3,'int','ieee-be');
+	fwrite(fid,row_size,'int','ieee-be');
+	fwrite(fid,col_size,'int','ieee-be');
+	fwrite(fid,data,'double','ieee-be');
+end%}}}
+%}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/archive/functionSignatures.json
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/archive/functionSignatures.json	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/archive/functionSignatures.json	(revision 27955)
@@ -0,0 +1,10 @@
+{
+	"archread":
+	  {
+		"inputs":
+		  [
+			 {"name":"filename1", "kind":"required",   "type":"filepath=*.arch"},
+			 {"name":"varargin", "kind":"optional", "multiplicity":"append"}
+		]
+	  }
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/archive/netcdf2arch.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/archive/netcdf2arch.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/archive/netcdf2arch.m	(revision 27955)
@@ -0,0 +1,29 @@
+function netcdf2arch(netcdf_filename,arch_filename) % {{{
+%NETCDF2ARCH - Convert a netcdf file into an archive file.
+%
+%	Usage:
+%		netcdf2arch('Archive101.nc','Archive101.arch');
+	ncdata=readnetcdf(netcdf_filename);
+	ncstruct=struct();
+
+	variables = ncdata.VarArray;
+	for i=1:size(variables,2),
+		fieldname=deblank(variables(i).Str);
+		fieldvalue=double(squeeze(variables(i).Data));
+		ncstruct.(fieldname)=fieldvalue;
+	end
+
+	variables=ncdata.AttArray;
+	for i=1:size(variables,2),
+		fieldname=deblank(variables(i).Str);
+		fieldvalue=double(variables(i).Val);
+		ncstruct.(fieldname)=fieldvalue;
+	end
+	ncfields=fieldnames(ncstruct);
+	% first, remove old arch file
+	delete(arch_filename);
+	% write data to file 
+	for i=1:numel(ncfields)
+		archwrite(arch_filename,ncfields{i},ncstruct.(ncfields{i}));
+	end
+end%}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/array/MatlabArray.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/array/MatlabArray.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/array/MatlabArray.py	(revision 27955)
@@ -0,0 +1,283 @@
+from copy import deepcopy
+from functools import reduce
+
+import numpy as np
+
+from helpers import *
+from MatlabFuncs import *
+
+
+def allempty(cin):
+    '''
+    function to return an empty cell array if all array elements are empty
+    cout = allempty(cin)
+    '''
+    for i in cin:
+        if not isempty(i):
+            cout = cin
+            return cout
+    return []
+
+
+def allequal(ain, aval):
+    '''
+    function to return an empty array if all array elements are
+    equal to the given value, which may also be empty but not nan.
+
+    (note that by definition, nan is not equal to nan; this could
+    be changed by using isequalwithequalnans.)
+
+    aout = allequal(ain, aval)
+    '''
+    # if type(ain) != type(aval):
+    #     print((allequal.__doc__))
+    #     raise RuntimeError("ain and aval must be of the same type")
+    aincopy = ain.copy() # Save copy to return in case ain[n] != aval (we modify ain in order to iterate over its values)
+
+    if type(ain) == list:
+        ain = np.array(ain)
+    if type(ain) == np.ndarray:
+        ain = ain.flatten()
+
+    for i in ain:
+        if i != aval:
+            return aincopy
+    return []
+
+
+def array_numel(*args):
+    '''
+    function to find a number of elements from a list of arrays.
+
+    asize = array_numel(varargin)
+
+    see array_size to check the number and shape of elements, if
+    multiple indices will be used.
+    '''
+    anum = 0
+    inum = 0
+    for arg in args:
+        if type(arg) == str:
+            inum = len(arg)
+        else:
+            inum = np.size(arg)
+
+        if inum != 0:
+            if anum == 0:
+                anum = inum
+            else:
+                if inum != anum:
+                    raise RuntimeError('Inputs had inconsistent number of elements')
+    return anum
+
+
+def array_size(*args):
+    '''
+    function to find an array size from a list of arrays.
+
+    asize = array_size(varargin)
+
+    see array_numel to check only the number of elements, if
+    single indices will be used.
+    all arguments are assumed to be 1 or 2 dimensional
+
+    Note: to call on all elements of an array use: array_size(* x)
+        in Matlab this would be array_size(x{1:end})
+
+    Note: to get all elements in a linear array use: array_size(np.array(x).flatten()[0:])
+        in Matlab this would be array_size(x{1:end})
+        because Matlab allows direct 1D access of nD arrays
+    '''
+    asize = (0, 0)
+    isize = (0, 0)
+    for arg in args:
+        if type(arg) == str:
+            isize = (1, 1)  #cellstr in matlab makes this happen
+        else:
+            isize = np.shape(arg)
+            if isize == ():  #arg is a single value, ex. 0.3, 5, False, etc
+                isize = (1, 1)
+
+        if isize != (0, 0):
+            if asize == (0, 0):
+                asize = isize
+            else:
+                if isize != asize:
+                    raise RuntimeError('Inputs had inconsistent shapes')
+
+    #numpy gives (y, ) if x = 1, must be reversed to match matlab syntax in this case
+    if len(asize) == 1:
+        asize = (1, asize[0])
+
+    return asize
+
+
+def str2int(astr, cfl='first', asint=True):
+    '''
+    function to find and read the first or last positive integer
+    in a character string. cfl={'first', 'f', 'last', 'l'}; default: 'first'
+    returns 0 if astr has no positive integers
+
+    Setting asint = False returns a list of strings
+        eg. ['1', '2', '3'] from '123'
+
+    aint = str2int(astr, cfl)
+    '''
+    aint = []
+
+    num = '1234567890'
+
+    if type(cfl) != str or type(astr) != str or len(cfl) == 0 or len(astr) == 0:
+        raise TypeError('str2int(astr, cfl): both arguments must be strings with length > 0')
+
+    # find last positive int
+    if cfl[0] in ['l', 'L']:
+        for i in reversed(astr):
+            if i in num:
+                aint.append(i)
+            else:
+                if len(aint) > 0:
+                    # aint is backwards since we were iterating backwards
+                    aint = list(reversed(aint))
+                    if asint:
+                        # convert list(str) to int
+                        aint = int(reduce(lambda x, y: x + y, aint))
+                    break
+
+    elif cfl[0] in ['f', 'F']:
+        for i in astr:
+            if i in num:
+                aint.append(i)
+            else:
+                if len(aint) > 0:
+                    if asint:
+                        # convert list(str) to int
+                        aint = int(reduce(lambda x, y: x + y, aint))
+                    break
+
+    # return 0 if aint is still [] (no integers found)
+    return aint or 0
+
+
+def string_dim(a, idim, *args):
+    '''
+    function to return the string dimension of an array element
+
+    function sdim = string_dim(a, idim, varargin)
+
+    such that: given the array / matrix a,
+        idim is the linear index of an element in a,
+        return the x/y/z/w/... coordinates of idim in n dimensions
+
+    ex. a = [1 2 3
+         4 5 6]
+
+    idim = 4
+    (a[4] == 5; counted as [1, 4, 2, 5, 3, 6] linearly in matlab)
+
+    x = string_dim(a, 4) -> '[1, 1]'
+
+    a[x] == a[4] == a[1, 1] == 5
+
+    example use: exec('print a' + string_dim(a, 4)) -> print a[1, 1]
+    '''
+
+    if type(a) == list:
+        a = np.array(a)
+    if type(a) != np.ndarray:
+        raise TypeError('string_dim(a, idim, *args): a must be a numpy array < numpy.ndarray > . Try passing np.array(a) instead')
+
+    if np.size(a) == 0 and idim == 0:
+        return sdim
+
+    if idim >= np.size(a):
+        raise RuntimeError('string_dim(a, idim, *args): index idim exceeds number of elements in a')
+
+    #check for column or row vector
+    for iarg in args:
+        if strcmpi(iarg, 'vector'):
+            if a.ndim == 2 and (np.shape(a, 1) == 1 or np.shape(a, 2) == 1):
+                return '(' + str(idim) + ')'
+
+    #transpose to compensate for differences in linear indexing in
+    # matlab vs in python (y / x + linear vs x / y)
+    a = a.T
+
+    #general case
+    asize = np.shape(a)
+    i = np.zeros((np.shape(asize)))
+    aprod = np.prod(asize)
+    idim = idim - 1
+    index = np.zeros((len(asize)))
+
+    #calculate indices base 0
+    for i in range(len(asize)):
+        aprod = aprod / asize[i]
+        index[i] = np.floor(idim / aprod)
+        idim = idim - index[i] * aprod
+
+    #assemble string for output
+    sdim = '['
+    for i in range(len(asize) - 1):
+        sdim += str(int(index[i])) + ', '
+
+    sdim += str(int(index[-1])) + ']'
+
+    # happens due to how python does indexing, this response in matlab is just ''
+    if sdim == '[-1]':
+        return ''
+
+    return sdim
+
+
+def string_vec(a):
+    '''
+    function to return the string of a vector
+
+    function svec = string_vec(a)
+    '''
+    return str(a)
+
+
+def struc_class(sclass, cstr, name):
+    '''
+    function to find the structural fields of a specified class
+
+    sclasso = struc_class(sclass, cstr, variable_name)
+
+    such that:
+    sclasso.variable_name == sclass (hard copy)
+
+    if variable_name == ''
+        sclasso.cstr == sclass (hard copy)
+    '''
+    try:
+        # I tried other methods, but this is, unfortunately, the best behaving by far
+        exec('from ' + cstr + ' import * ')
+    except:
+        raise RuntimeError('MatlabArray.struc_class Class Error: class "' + cstr + '" does not exist')
+
+    sclasso = struct()
+
+    if isinstance(sclass, eval(cstr)):
+        # if we were given no name, call it by its class name
+        if name != '':
+            setattr(sclasso, name, deepcopy(sclass))
+        else:
+            setattr(sclasso, cstr, deepcopy(sclass))
+    else:
+        raise RuntimeError('MatlabArray.struc_class Match Error: provided object of type "' + str(type(sclass)) + '" does not match provided string; object should be of type ' + cstr)
+
+    #may need this later depending on how src / m / classes / qmu works out
+
+    #if len(vars(sclass)) == 0:
+    #return Lstruct()
+
+    #else:
+    #fnames = fieldnames(sclass)
+    #for f in fnames:
+    #if isinstance(vars(sclass)[f], eval(cstr)):
+    #exec('sclasso.%s = vars(sclass)[f]')%(f)
+    #vars(sclasso)[f] = vars(sclass)[f]
+
+    return sclasso
Index: /issm/branches/trunk-dlcheng-ASE/src/m/array/allempty.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/array/allempty.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/array/allempty.m	(revision 27955)
@@ -0,0 +1,21 @@
+%  function to return an empty cell array if all array elements are empty
+%
+%  function [cout]=allempty(cin)
+%
+function [cout]=allempty(cin)
+
+if ~nargin
+    help allempty
+    return
+end
+
+for j=1:numel(cin)
+    if ~isempty(cin{j})
+        cout=cin;
+        return
+    end
+end
+cout={};
+
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/array/allequal.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/array/allequal.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/array/allequal.m	(revision 27955)
@@ -0,0 +1,69 @@
+%  function to return an empty array if all array elements are
+%  equal to the given value, which may also be empty but not nan.
+%
+%  (note that by definition, nan is not equal to nan.  this could
+%  be changed by using isequalwithequalnans.)
+%
+%  function [aout]=allequal(ain,aval)
+%
+function [aout]=allequal(ain,aval)
+
+if ~nargin
+    help allequal
+    return
+end
+
+aout=ain;
+
+if     islogical(ain) && islogical(aval)
+    for i=1:numel(ain)
+        if ~isequal(ain(i),aval)
+            return
+        end
+    end
+    aout=logical([]);
+
+elseif isnumeric(ain) && isnumeric(aval)
+    for i=1:numel(ain)
+        if ~isequal(ain(i),aval)
+            return
+        end
+    end
+    aout=[];
+
+elseif ischar(ain) && ischar(aval)
+    for i=1:size(ain,1)
+        if ~strcmp(ain(i,:),aval)
+            return
+        end
+    end
+    aout='';
+
+elseif iscell(ain)
+    if     islogical(aval)
+        for i=1:numel(ain)
+            if ~islogical(ain{i}) || ~isequal(ain{i},aval)
+                return
+            end
+        end
+        aout={};
+
+    elseif isnumeric(aval)
+        for i=1:numel(ain)
+            if ~isnumeric(ain{i}) || ~isequal(ain{i},aval)
+                return
+            end
+        end
+        aout={};
+
+    elseif ischar(aval)
+        for i=1:size(ain,1)
+            if ~ischar(ain{i}) || ~strcmp(ain{i},aval)
+                return
+            end
+        end
+        aout={};
+    end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/array/any2str.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/array/any2str.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/array/any2str.m	(revision 27955)
@@ -0,0 +1,22 @@
+%
+%  function to convert anything to a string
+%
+%  function [svec]=any2str(a,alim)
+%
+function [svec]=any2str(a,alim)
+
+if ~exist('alim','var') || (numel(a) <= alim)
+    if iscell(a)
+        svec=string_cell(a);
+    else
+        if (numel(a) > 1) && ~ischar(a)
+            svec=string_vec(a);
+        else
+            svec=item2str(a);
+        end
+    end
+else
+	svec=[string_size(a) ' ''' class(a) ''''];
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/array/array_numel.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/array/array_numel.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/array/array_numel.m	(revision 27955)
@@ -0,0 +1,35 @@
+%
+%  function to find a number of elements from a list of arrays.
+%  
+%  [asize]=array_numel(varargin)
+%
+%  see array_size to check the number and shape of elements, if
+%  multiple indices will be used.
+%
+function [anum]=array_numel(varargin)
+
+anum=1;
+
+for iarg=1:nargin
+    if ischar(varargin{iarg})
+        inum=numel(cellstr(varargin{iarg}));
+    else
+        inum=numel(varargin{iarg});
+    end
+
+    if ~isequal(inum,1)
+        if isequal(anum,1)
+            anum=inum;
+        else
+            if ~isequal(inum,anum)
+                if ~isempty(inputname(iarg))
+                    error('Array ''%s'' has inconsistent number of elements.',inputname(iarg));
+                else
+                    error('Array %d has inconsistent number of elements.',iarg);
+                end
+            end
+        end
+    end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/array/array_size.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/array/array_size.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/array/array_size.m	(revision 27955)
@@ -0,0 +1,35 @@
+%
+%  function to find an array size from a list of arrays.
+%  
+%  [asize]=array_size(varargin)
+%
+%  see array_numel to check only the number of elements, if
+%  single indices will be used.
+%
+function [asize]=array_size(varargin)
+
+asize=[1 1];
+
+for iarg=1:nargin
+    if ischar(varargin{iarg})
+        isize=size(cellstr(varargin{iarg}));
+    else
+        isize=size(varargin{iarg});
+    end
+
+    if ~isequal(isize,[1 1])
+        if isequal(asize,[1 1])
+            asize=isize;
+        else
+            if ~isequal(isize,asize)
+                if ~isempty(inputname(iarg))
+                    error('Array ''%s'' has inconsistent size.',inputname(iarg));
+                else
+                    error('Array %d has inconsistent size.',iarg);
+                end
+            end
+        end
+    end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/array/arrayoperations.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/array/arrayoperations.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/array/arrayoperations.js	(revision 27955)
@@ -0,0 +1,1017 @@
+function ArrayMax(array){ //{{{
+	//Calculate array max using for loop instead of Math.max.apply(null, array) to avoid recursive stack overflow in mobile browsers
+	
+	var max=-Infinity;
+	
+	for (var i=0;i<array.length; i++) {
+		max=Math.max(max,array[i]);
+	}
+	
+	return max;
+} //}}}
+function ArrayMax2D(array){ //{{{
+	
+	var max=-Infinity;
+
+	for (var i=0;i<array.length;i++){
+		var subarray=array[i];
+		max=Math.max(max,ArrayMax(subarray));
+	}
+
+	return max;
+} //}}}
+function ArrayMin(array){ //{{{
+	//Calculate array min using for loop instead of Math.min.apply(null, array) to avoid recursive stack overflow in mobile browsers
+	
+	var min=Infinity;
+	
+	for (var i=0;i<array.length; i++) {
+		min=Math.min(min,array[i]);
+	}
+	
+	return min;
+} //}}}
+function ArrayMin2D(array){ //{{{
+	
+	var min=Infinity;
+
+	for (var i=0;i<array.length;i++){
+		var subarray=array[i];
+		min=Math.min(min,ArrayMin(subarray));
+	}
+
+	return min;
+} //}}}
+function ArraySum(array){ //{{{
+	var sum=0;
+	for(var i=0;i<array.length;i++)sum+=array[i];
+	return sum;
+} //}}}
+function ArrayAdd(){ //{{{
+    //Takes in any number of scalars or arrays, and calculates the sum. Scalars are treated as similar length arrays of the scalar.
+    //Determine reference array and size
+    var size, array, arg, initial;
+	for (var a = 0; a < arguments.length; a++) {
+        arg = arguments[a];
+        if (arg instanceof Array || arg instanceof Float64Array) {
+            size = arg.length;
+            array = arg;
+			initial = a;
+            break;
+        }
+    }
+	//check internal consistency of arrays provided!: 
+	for (var a = 0; a < arguments.length; a++) {
+        arg = arguments[a];
+        if ((arg instanceof Array || arg instanceof Float64Array) && arg.length != size) {
+            throw Error("ArrayAdd error message: arrays provided as arguments are not of the same length!");
+        } else if (!(arg instanceof Array || arg instanceof Float64Array) && typeof arg != 'number') {
+            throw Error("ArrayAdd error message: arguments provided are not of the type Array or Number!");
+        }
+	}
+	//do the result:
+	var result = array.slice(0);
+	for (var a = 0; a < arguments.length; a++) {
+		if (a != initial) {
+			arg = arguments[a];
+			if (arg instanceof Array || arg instanceof Float64Array) {
+				for(var i = 0; i < result.length; i++){
+					result[i] += arg[i];
+				}
+			} else if (typeof arg === 'number') {
+				for(var i = 0; i < result.length; i++){
+					result[i] += arg;
+				}
+			}
+        }
+	}
+	return result;
+} //}}}
+function ArraySubtract(){ //{{{
+    //Takes in any number of scalars or arrays, and calculates the subtraction. Scalars are treated as similar length arrays of the scalar.
+    //Determine reference array and size
+    var size, array, arg, initial;
+	for (var a = 0; a < arguments.length; a++) {
+        arg = arguments[a];
+        if (arg instanceof Array || arg instanceof Float64Array) {
+            size = arg.length;
+            array = arg;
+			initial = a;
+            break;
+        }
+    }
+	//check internal consistency of arrays provided!: 
+	for (var a = 0; a < arguments.length; a++) {
+        arg = arguments[a];
+        if ((arg instanceof Array || arg instanceof Float64Array) && arg.length != size) {
+            throw Error("ArrayAdd error message: arrays provided as arguments are not of the same length!");
+        } else if (!(arg instanceof Array || arg instanceof Float64Array) && typeof arg != 'number') {
+            throw Error("ArrayAdd error message: arguments provided are not of the type Array or Number!");
+        }
+	}
+	//calculate the result, using the first argument to initialize:
+	var result = array.slice(0);
+	for (var a = 0; a < arguments.length; a++) {
+		if (a !== initial) {
+			arg = arguments[a];
+			if (arg instanceof Array || arg instanceof Float64Array) {
+				for(var i = 0; i < result.length; i++){
+					result[i] -= arg[i];
+				}
+			} else if (typeof arg === 'number') {
+				for(var i = 0; i < result.length; i++){
+					result[i] -= arg;
+				}
+			}
+        }
+	}
+	return result;
+} //}}}
+function ArraySubtract2D(){ //{{{
+    //Takes in any number of scalars or arrays, and calculates the subtraction. Scalars are treated as similar length arrays of the scalar.
+    //Determine reference array and size
+    var size, array, arg, initial;
+	for (var a = 0; a < arguments.length; a++) {
+        arg = arguments[a];
+        if (arg instanceof Array || arg instanceof Float64Array) {
+            size = arg.length;
+            array = arg;
+			initial = a;
+            break;
+        }
+    }
+	//check internal consistency of arrays provided!: 
+	for (var a = 0; a < arguments.length; a++) {
+        arg = arguments[a];
+        if ((arg instanceof Array || arg instanceof Float64Array) && arg.length != size) {
+            throw Error("ArrayAdd error message: arrays provided as arguments are not of the same length!");
+        } else if (!(arg instanceof Array || arg instanceof Float64Array) && typeof arg != 'number') {
+            throw Error("ArrayAdd error message: arguments provided are not of the type Array or Number!");
+        }
+	}
+	//calculate the result, using the first argument to initialize:
+	var result = [];
+	for (var a = 0; a < arguments.length; a++) {
+		if (a !== initial) {
+			arg = arguments[a];
+			if (arg instanceof Array || arg instanceof Float64Array) {
+				for(var i = 0; i < array.length; i++){
+					result[i] = [];
+					for(var j = 0; j < array[i].length; j++){
+					    result[i][j] = array[i][j] - arg[i][j];
+					}
+				}
+			} else if (typeof arg === 'number') {
+				for(var i = 0; i < array.length; i++){
+					result[i] = [];
+					for(var j = 0; j < array[i].length; j++){
+					    result[i][j] = array[i][j] - arg;
+					}
+				}
+			}
+        }
+	}
+	return result;
+} //}}}
+function ArrayMultiply(){ //{{{
+    //Takes in any number of scalars or arrays, and calculates the product. Scalars are treated as similar length arrays of the scalar.
+    //Determine reference array and size
+    var size, array, arg, initial;
+	for (var a = 0; a < arguments.length; a++) {
+        arg = arguments[a];
+        if (arg instanceof Array || arg instanceof Float64Array) {
+            size = arg.length;
+            array = arg;
+			initial = a;
+            break;
+        }
+    }
+	//check internal consistency of arrays provided!: 
+	for (var a = 0; a < arguments.length; a++) {
+        arg = arguments[a];
+        if ((arg instanceof Array || arg instanceof Float64Array) && arg.length != size) {
+            throw Error("ArrayAdd error message: arrays provided as arguments are not of the same length!");
+        } else if (!(arg instanceof Array || arg instanceof Float64Array) && typeof arg != 'number') {
+            throw Error("ArrayAdd error message: arguments provided are not of the type Array or Number!");
+        }
+	}
+	//do the result:
+	var result = array.slice(0);
+	for (var a = 0; a < arguments.length; a++) {
+		if (a !== initial) {
+			arg = arguments[a];
+			if (arg instanceof Array || arg instanceof Float64Array) {
+				for(var i = 0; i < result.length; i++){
+					result[i] *= arg[i];
+				}
+			} else if (typeof arg === 'number') {
+				for(var i = 0; i < result.length; i++){
+					result[i] *= arg;
+				}
+			}
+		}
+	}
+	return result;
+} //}}}
+function ArrayDivide(){ //{{{
+    //Takes in any number of scalars or arrays, and calculates the quotient. Scalars are treated as similar length arrays of the scalar.
+    //Determine reference array and size
+    var size, array, arg, initial;
+	for (var a = 0; a < arguments.length; a++) {
+        arg = arguments[a];
+        if (arg instanceof Array || arg instanceof Float64Array) {
+            size = arg.length;
+            array = arg;
+			initial = a;
+            break;
+        }
+    }
+	//check internal consistency of arrays provided!: 
+	for (var a = 0; a < arguments.length; a++) {
+        arg = arguments[a];
+        if ((arg instanceof Array || arg instanceof Float64Array) && arg.length != size) {
+            throw Error("ArrayAdd error message: arrays provided as arguments are not of the same length!");
+        } else if (!(arg instanceof Array || arg instanceof Float64Array) && typeof arg != 'number') {
+            throw Error("ArrayAdd error message: arguments provided are not of the type Array or Number!");
+        }
+	}
+	//calculate the result, using the first argument to initialize:
+	var result = array.slice(0);
+	for (var a = 0; a < arguments.length; a++) {
+		if (a !== initial) {
+			arg = arguments[a];
+			if (arg instanceof Array || arg instanceof Float64Array) {
+				for(var i = 0; i < result.length; i++){
+					result[i] /= arg[i];
+				}
+			} else if (typeof arg === 'number') {
+				for(var i = 0; i < result.length; i++){
+					result[i] /= arg;
+				}
+			}
+		}
+	}
+	return result;
+} //}}}
+function ArrayMean(array){ //{{{
+    //Calculate the mean:
+    var sum = ArraySum(array);
+    return sum / array.length;
+
+} //}}}
+function ArraySTD(array){ //{{{
+    //Calculate the standard deviation:
+    var sum = ArraySum(array);
+    var differences = 0;
+    for(var i = 0; i < array.length; i++){
+        differences += (array[i] - sum) ** 2;
+    }
+    var variance = differences / array.length;
+    return Math.sqrt(variance);
+
+} //}}}
+function ArrayLerp(array1, array2, weight1, weight2, alpha){ //{{{
+    //Returns linear combination of array1 and array2, based on lerp coefficients weight1, weight2, and alpha.
+    //Parameters:
+    //  array1  - array 
+    //  array2  - array 
+    //  weight1 - value associated with array1.
+    //  weight2 - value associated with array2
+    //  alpha   - value associated with output array
+    //Output:
+    //  result - linear combination of array1 and array2 based on the equation array1 * alpha + 
+    
+    var range = weight2 - weight1;
+    var normalizedAlpha = (alpha - weight1) / range;
+    var result = array1.slice();
+    for(var i = 0; i < array1.length; i++){
+        result[i]  = array1[i] * normalizedAlpha + array2[i] * (1 - normalizedAlpha);
+    }
+    return result;
+
+} //}}}
+function ArrayTranspose(array){ //{{{
+    //Transposes 2d array.
+    var rows = array.length;
+    var cols = array[0].length;
+    var result = Create2DArray(cols, rows);
+
+    for(var i = 0; i < rows; i++) {
+        for(var j = 0; j < cols; j++) {
+            result[j][i]  = array[i][j];
+        }
+    }
+    return result;
+
+} //}}}
+function ArrayXPY(){ //{{{
+    if (arguments.length<2)throw Error("ArrayXPY error message: sum has to be for at least two arrays!");
+
+	//check internal consistency of arrays provided!: 
+	var firstarray=arguments[0];
+	var firstsize=firstarray.length;
+	
+	for(var a=1;a<arguments.length;a++){
+		var array=arguments[a];
+		if(array.length!=firstsize)throw Error("ArrayXPY error message: arrays provided as arguments are not of the same length!");
+	}
+
+	//do the sum:
+	var sum=NewArrayFill(firstsize,0);
+	for(var a=0;a<arguments.length;a++){
+		var array=arguments[a];
+		for(var i=0;i<array.length;i++){
+			sum[i]+=array[i];
+		}
+	}
+	return sum;
+
+} //}}}
+function ArrayConcat(a, b) { //{{{
+	// Make sure that both typed arrays are of the same type
+	if(Object.prototype.toString.call(a) !== Object.prototype.toString.call(b)) {
+		throw 'The types of the two arguments passed for parameters a and b do not match.';
+	}
+	var c;
+	if(a instanceof Float64Array) {
+		c = new a.constructor(a.length + b.length);
+		c.set(a);
+		c.set(b, a.length);
+	}
+	else {
+		c = clone(a).concat(clone(b));
+	}	
+	return c;
+} //}}}
+function ArrayCol(matrix, cols) { //{{{
+    var columns = [];
+    if (cols instanceof Array || cols instanceof Float64Array) {
+        for (var i = 0; i < matrix.length; i++){
+            var col = [];
+            for (var j = 0; j < cols.length; j++){
+                col.push(matrix[i][cols[j]]);
+            }
+            columns.push(col); 
+        }
+
+    } else if (typeof cols == 'number') {
+        for (var i = 0; i < matrix.length; i++){
+            columns.push(matrix[i][cols]);
+        }
+    } else {
+        throw new Error("ArrayCol error: cols must be a single integer or an array with 2 integers!");
+    }
+   return columns;
+} //}}}
+function ListToMatrix(list, elementsPerSubArray) { //{{{
+	var matrix = [], i, k;
+
+	for (i = 0, k = -1; i < list.length; i++) {
+		if (i % elementsPerSubArray === 0) {
+			k++;
+			matrix[k] = [];
+		}
+
+		matrix[k].push(list[i]);
+	}
+
+	return matrix;
+} //}}}
+function MatrixToList(matrixin) { //{{{
+
+	var matrix=matrixin;
+
+	if (!IsArray(matrix[0])) return matrix;
+	else{
+		var width = matrix[0].length;
+		var length = matrix.length;
+		var list= new Array(width*length);
+
+		for(var i=0;i<length;i++){
+			for(var j=0;j<width;j++){
+				list[i*width+j]=matrix[i][j];
+			}
+		}
+		return list;
+	}
+} //}}}
+function IsArray(object) { //{{{
+
+	var type=Object.prototype.toString.call( object );
+	if( type === '[object Array]' ) return 1;
+	if( type === '[object Float64Array]' ) return 1;
+	if( type === '[object Float32Array]' ) return 1;
+	if( type === '[object Int32Array]' ) return 1;
+	if( type === '[object Int16Array]' ) return 1;
+	if( type === '[object Uint32Array]' ) return 1;
+	if( type === '[object Uint16Array]' ) return 1;
+	if( type === '[object Uint8Array]' ) return 1;
+	return 0;
+
+} //}}}
+function ArrayNot(array) { //{{{
+
+	var notarray=array.slice();
+	for (var i=0;i<array.length;i++)notarray[i]=-array[i];
+	return notarray;
+} //}}}
+function ArrayFlip(array) { //{{{
+	
+	var notarray=array.slice();
+	for (var i=0;i<array.length;i++)notarray[i]=array[i]^1;
+	return notarray;
+} //}}}
+function ArrayCopy(array) { //{{{
+
+	var copy=[];
+	for(var i=0;i<array.length;i++)copy[i]=array[i];
+	return copy;
+} //}}}
+function ArrayPow(array,coefficient) { //{{{
+
+	var powarray=array.slice();
+	for (var i=0;i<array.length;i++)powarray[i]=Math.pow(array[i],coefficient);
+	return powarray;
+} //}}}
+function ArraySqrt(array) { //{{{
+
+	var sqrtarray=array.slice();
+	for (var i=0;i<array.length;i++)sqrtarray[i]=Math.sqrt(array[i]);
+	return sqrtarray;
+} //}}}
+function ArrayScale(array,alpha) { //{{{
+
+	var scalearray=array.slice();
+	for (var i=0;i<array.length;i++)scalearray[i]=array[i]*alpha;
+	return scalearray;
+} //}}}
+function ArrayMag(array1,array2) { //{{{
+
+	var arraymag=NewArrayFill(array1.length,0);
+	for (var i=0;i<array1.length;i++)arraymag[i]=Math.sqrt(Math.pow(array1[i],2)+Math.pow(array2[i],2));
+	return arraymag;
+} //}}}
+function ArrayAnyNaN(array) { //{{{
+
+    if(IsArray(array[0])){
+        for(var i=0;i<array.length;i++){
+            for(var j=0;j<array[0].length;j++){
+                if (isNaN(array[i][j])) return 1;
+            }
+        }
+    }
+    else{
+        for(var i=0;i<array.length;i++){
+            if (isNaN(array[i])) return 1;
+        }
+    }
+    return 0;
+} //}}}
+function ArrayUnique(arr,rows) { //{{{
+	if (arguments.length == 2){
+		if (rows == 'rows') {
+			//See Matlab unique function and https://stackoverflow.com/a/20339709/1905613
+			let equals = (a, b) => JSON.stringify(a) === JSON.stringify(b);
+			let uniques = [];
+			let indexA = [];
+			let indexC = [];
+			let itemsFound = {};;
+			for(let i = 0, l = arr.length; i < l; i++) {
+				let stringified = JSON.stringify(arr[i]);
+				if (typeof(itemsFound[stringified]) != 'undefined') {
+					indexC.push(itemsFound[stringified]);
+					continue;
+				}
+				uniques.push(arr[i]);
+				indexA.push(i);
+				itemsFound[stringified] = uniques.length-1;
+				indexC.push(itemsFound[stringified]);
+			}
+			//assert arr == uniques[indexC,:];
+			for (let i = 0; i < indexC.length; i++) {
+				if (!equals(arr[i], uniques[indexC[i]])) {
+					throw new Error('bad implementation');	
+				}
+			}
+			//assert uniques == arr[indexA, :];
+			for (let i = 0; i < indexA.length; i++) {
+				if (!equals(uniques[i], arr[indexA[i]])) {
+					throw new Error('bad implementation');	
+				}
+			}
+			let [uniquesSorted, indexInToOut, indexOutToIn] = ArraySortWithIndices(uniques);
+			//indexMapping is the index of the edge in the old array
+			indexCSorted = []; //indexC.length == arr.length
+			//assert uniquesSorted[i,:] = uniques[indexInToOut[i],:]
+			for (let i = 0; i < indexInToOut.length; i++) {
+				if (!equals(uniquesSorted[i], uniques[indexInToOut[i]])) {
+					console.log(i, uniquesSorted[indexInToOut[i]], uniques[i]);
+					throw new Error('bad implementation');	
+				}
+			}
+			//assert uniques[i,:] = uniquesSorted[indexOutToIn[i],:]
+			for (let i = 0; i < indexOutToIn.length; i++) {
+				if (!equals(uniques[i], uniquesSorted[indexOutToIn[i]])) {
+					console.log(i, uniques[indexOutToIn[i]], uniquesSorted[i]);
+					throw new Error('bad implementation');	
+				}
+			}
+			//GOAL: assert arr[i,:] == uniquesSorted[indexCSorted[i], :]
+			//GIVEN: assert arr[i,:] == uniques[indexC[i],:];
+			//GIVEN: assert uniquesSorted[i,:] = uniques[indexInToOut[i],:]
+			//GIVEN: assert uniques[i,:] = uniquesSorted[indexOutToIn[i],:]
+			//assert uniques[indexC[i],:] == uniquesSorted[indexOutToIn[indexC[i]],:]
+			//assert uniquesSorted[indexCSorted[i],:]; == uniquesSorted[indexOutToIn[indexC[i]],:];
+			for (let i = 0; i < arr.length; i++) {
+				indexCSorted[i] = indexOutToIn[indexC[i]];
+			}
+			for (let i = 0; i < indexC.length; i++) {
+				if (!equals(arr[i], uniquesSorted[indexCSorted[i]])) {
+					console.log(i, arr[i], uniquesSorted[indexCSorted[i]]);
+					throw new Error('bad implementation');	
+				}
+			}
+
+			indexASorted = []; //indexA.length == uniques.length
+			//GOAL: uniquesSorted[i, :] == arr[indexASorted[i], :]
+			//GIVEN: assert arr[i,:] == uniques[indexC[i],:];
+			//GIVEN: assert arr[indexA[i],:] == uniques[i,:];
+			//GIVEN: assert uniques[indexInToOut[i],:] == uniquesSorted[i,:]
+			//GIVEN: assert uniques[i,:] = uniquesSorted[indexOutToIn[i],:]
+			//assert uniquesSorted[i,:] == uniques[indexInToOut[i],:]
+			//assert uniques[indexInToOut[i],:] == arr[indexA[indexInToOut[i]],:];
+			//assert indexA[indexInToOut] == indexASorted
+			//indexASorted == indexA[indexMapping[i]]
+			for (let i = 0; i < indexA.length; i++) {
+				indexASorted[i] = indexA[indexInToOut[i]];
+			}
+			//assert uniques == arr[indexA, :];
+			for (let i = 0; i < indexASorted.length; i++) {
+				if (!equals(uniquesSorted[i], arr[indexASorted[i]])) {
+					throw new Error('bad implementation');	
+				}
+			}
+			console.log('Good uniques');
+			return [uniquesSorted, indexASorted, indexCSorted];
+		} else {
+			throw new Error('ArrayUnique non "rows" not supported');	
+		}
+	} else {
+		return arr.reverse().filter(function (e, i, arr) {
+				return arr.indexOf(e, i+1) === -1;
+		}).reverse();
+	}
+} //}}}
+function ArraySortWithIndices(toSort, sortingFunction) { //{{{
+	//returns the sorted and index such that toSort[index[i]] == sorted[i]
+	let toSortCopy = [];
+	for (var i = 0; i < toSort.length; i++) {
+	    toSortCopy[i] = [toSort[i], i];
+	}
+	if (typeof(sortingFunction) == 'undefined') {
+		let numeric2DFunction = function(a, b) {
+			if (a[0][0] == b[0][0]) {
+                return a[0][1] - b[0][1];
+			} else {
+			    return a[0][0] - b[0][0];
+			}
+		};
+		sortingFunction = numeric2DFunction;
+	}
+	toSortCopy.sort(sortingFunction);
+	let indicesInToOut = [];
+	let indicesOutToIn = [];
+	let sorted = [];
+	for (var j = 0; j < toSortCopy.length; j++) {
+	    indicesInToOut[j] = toSortCopy[j][1];
+	    indicesOutToIn[toSortCopy[j][1]] = j;
+	    sorted[j] = toSortCopy[j][0];
+	}
+	return [sorted, indicesInToOut, indicesOutToIn];
+} //}}}
+function ArraySort(array,dim) { //{{{
+	let numericFunction = function(a, b) {
+	    return a - b;
+	};
+	let numeric2DFunction = function(a, b) {
+	    return a[0] - b[0];
+	};
+	if (arguments.length == 2){
+		if (dim == 1) {
+			array.sort(numeric2DFunction);
+		} else if (dim == 2) {
+			for (let i = 0; i < array.length; i++) {
+				array[i].sort(numericFunction);
+			}
+		} else {
+			throw new Error('ArraySort dim > 2 not yet supported')
+		}
+		return array;
+	} else {
+		return array.sort(numericFunction);
+	}
+} //}}}
+function ArrayRange(lower, upper) { //{{{
+
+    var range = upper - lower + 1;
+    return Array.apply(null, Array(range)).map(function (val, ind) {return ind + lower;});
+
+} //}}}
+function ArrayAny(array) { //{{{
+    //Emulates Matlab 'any' function
+    
+    for(var i=0;i<array.length;i++){
+        if (array[i]!=0)return 1;
+    }
+    return 0;
+} //}}}
+function ArrayAnyEqual(array,value) { //{{{
+	
+	if(!isNaN(value)){
+		for(var i=0;i<array.length;i++){
+			if (array[i]==value)return 1;
+		}
+	}
+	else{
+		for(var i=0;i<array.length;i++){
+			if (isNaN(array[i]))return 1;
+		}
+	}
+	return 0;
+} //}}}
+function ArrayAnyBelowOrEqual(array,value) { //{{{
+
+	for(var i=0;i<array.length;i++){
+		if (array[i]<=value)return 1;
+	}
+	return 0;
+} //}}}
+function ArrayAnyBelowStrict(array,value) { //{{{
+
+	for(var i=0;i<array.length;i++){
+		if (array[i]<value)return 1;
+	}
+	return 0;
+} //}}}
+function ArrayAnyAboveOrEqual(array,value) { //{{{
+
+	for(var i=0;i<array.length;i++){
+		if (array[i]>=value)return 1;
+	}
+	return 0;
+} //}}}
+function ArrayAnyAboveStrict(array,value) { //{{{
+
+	for(var i=0;i<array.length;i++){
+		if (array[i]>value)return 1;
+	}
+	return 0;
+} //}}}
+function ArrayAnd(array1,array2) { //{{{
+	var array = new Array(array1.length);
+	for (var i=0;i<array1.length;i++) {
+		array[i]=array1[i] & array2[i];
+	}
+	return array;
+} //}}}
+function ArrayOr(array1,array2) { //{{{
+	var array = new Array(array1.length);
+	for (var i=0;i<array1.length;i++) {
+		array[i]=array1[i] | array2[i];
+	}
+	return array;
+} //}}}
+function ArrayEqual(array1,array2) { //{{{
+	var array = new Array(array1.length);
+
+	if (typeof(array1[0]) == 'number') {
+		if (typeof(array2) == 'number') {
+			for(var i=0;i<array1.length;i++){
+				array[i] = array1[i] == array2;
+			}
+		} else {
+			for(var i=0;i<array1.length;i++){
+				array[i] = array1[i] == array2[i];
+			}
+		}
+	} else { //provide support for 2d arrays
+		if (typeof(array2) == 'number') {
+			for(var i=0;i<array1.length;i++){
+				array[i] = new Array(array1[i].length);
+				for(var j=0;j<array1[i].length;j++){
+					array[i][j] = array1[i][j] == array2;
+				}
+			}
+		} else {
+			for(var i=0;i<array1.length;i++){
+				array[i] = new Array(array1[i].length);
+				for(var j=0;j<array1[i].length;j++){
+					array[i][j] = array1[i][j] == array2[i][j];
+				}
+			}
+		}
+	}
+	return array;
+} //}}}
+function ArrayLessThan(array1,array2) { //{{{
+	var array = new Array(array1.length);
+
+	if (typeof(array2) == 'number') {
+		for(var i=0;i<array1.length;i++){
+			array[i] = array1[i] < array2;
+		}
+	} else {
+		for(var i=0;i<array1.length;i++){
+			array[i] = array1[i] < array2[i];
+		}
+	}
+	return array;
+} //}}}
+function ArrayGreaterThan(array1,array2) { //{{{
+	var array = new Array(array1.length);
+	if (typeof(array2) == 'number') {
+		for(var i=0;i<array1.length;i++){
+			array[i] = array1[i] > array2;
+		}
+	} else {
+		for(var i=0;i<array1.length;i++){
+			array[i] = array1[i] > array2[i];
+		}
+	}
+	return array;
+} //}}}
+function ArrayLessEqualThan(array1,array2) { //{{{
+	var array = new Array(array1.length);
+	if (typeof(array2) == 'number') {
+		for(var i=0;i<array1.length;i++){
+			array[i] = array1[i] <= array2;
+		}
+	} else {
+		for(var i=0;i<array1.length;i++){
+			array[i] = array1[i] <= array2[i];
+		}
+	}
+	return array;
+} //}}}
+function ArrayGreaterEqualThan(array1,array2) { //{{{
+	var array = new Array(array1.length);
+	if (typeof(array2) == 'number') {
+		for(var i=0;i<array1.length;i++){
+			array[i] = array1[i] >= array2;
+		}
+	} else {
+		for(var i=0;i<array1.length;i++){
+			array[i] = array1[i] >= array2[i];
+		}
+	}
+	return array;
+} //}}}
+function ArrayIsMember(array1,array2) { //{{{
+
+	var array=NewArrayFill(array1.length,0);
+	for (var i=0;i<array1.length;i++){
+		for(var j=0;j<array2.length;j++){
+			if (array1[i] == array2[j]){
+				array[i]=1;
+				break;
+			}
+		}
+	}
+	return array;
+} //}}}
+function NewArrayFill(size,value) { //{{{
+	var array = new Array(size);
+	
+	for (var i = 0; i < size; i++) {
+		array[i] = value;
+	}
+	
+	return array;
+} //}}}
+function NewArrayFill2D(rows,cols,value) { //{{{
+	var arr=new Array(rows); 
+
+	for (var i=0;i<rows;i++) {
+		arr[i] = NewArrayFill(cols,value);
+	}
+
+	return arr;
+} //}}}
+function NewArrayFillIncrement(start,size,increment) { //{{{
+	var array=new Array(size); 
+
+	for(var i=0;i<size;i++){
+		array[i]=start+i*increment;
+	}
+
+	return array;
+} //}}}
+function ones(size) { //{{{
+	return NewArrayFill(size,1);
+} //}}}
+function zeros(size) { //{{{
+	return NewArrayFill(size,0);
+} //}}}
+function ArrayFind(array,value) { //{{{
+	var count=0;
+	var indices=[];
+
+	for (var i=0;i<array.length;i++){
+		if(array[i]===value){
+			indices.push(count);
+		}
+		count++;
+	}
+	return indices;
+} //}}}
+function ArrayFind2D(array,value) { //{{{
+	var count=0;
+	var indices=[];
+
+	for (var i=0;i<array.length;i++){
+		for (var j=0;j<array[i].length;j++){
+			if(array[i][j]===value){
+				indices.push(count);
+			}
+			count++;
+		}
+	}
+	return indices;
+} //}}}
+function ArrayFindNot(array,value) { //{{{
+	var count=0;
+	var indices=[];
+
+	for (var i=0;i<array.length;i++){
+		if(array[i]!==value){
+			indices.push(count);
+		}
+		count++;
+	}
+	return indices;
+} //}}}
+function ArrayFindNot2D(array,value) { //{{{
+	var count=0;
+	var indices=[];
+
+	for (var i=0;i<array.length;i++){
+		for (var j=0;j<array[i].length;j++){
+			if(array[i][j]!==value){
+				indices.push(count);
+			}
+			count++;
+		}
+	}
+	return indices;
+} //}}}
+function ArrayIndex(array1,array2,value) { //{{{
+	//Change behavior between get (if no value is provided) to set (if value to set is provided)
+	if (arguments.length == 2){
+		let data = []
+		if (typeof(array2[0]) == 'number') {
+			for (let i=0;i<array2.length;i++){
+				data.push(array1[array2[i]]);
+			}
+		} else {
+			//2d index array
+			for (let i=0;i<array2.length;i++){
+				let data2 = [];
+				for (let j=0;j<array2[i].length;j++){
+				    data2.push(array1[array2[i][j]]);
+				}
+				data.push(data2);
+			}
+		}
+		return data;
+	} else {
+		for (var i=0;i<array2.length;i++){
+			array1[array2[i]]=value;
+		}
+		return array1;
+	}
+} //}}}
+function Create2DArray(rows,cols) { //{{{
+	var arr=new Array(rows); 
+
+	for (var i=0;i<rows;i++) {
+		arr[i] = new Array(cols);
+	}
+
+	return arr;
+} //}}}
+function MapIsEmpty(map) { //{{{
+	for (var key in map){
+		if(map.hasOwnProperty(key)){
+			return false;
+		}
+	}
+	return true;
+} //}}}
+function clone(obj) {//{{{
+	
+	var copy;
+
+	// Handle the 3 simple types, and null or undefined
+	if (null == obj || "object" != typeof obj) return obj;
+
+	// Handle Date
+	if (obj instanceof Date) {
+		copy = new Date();
+		copy.setTime(obj.getTime());
+		return copy;
+	}
+
+	// Handle Array
+	if (obj instanceof Array || arg instanceof Float64Array) {
+		copy = [];
+		for (var i = 0, len = obj.length; i < len; i++) {
+			copy[i] = clone(obj[i]);
+		}
+		return copy;
+	}
+
+	// Handle Object
+	if (obj instanceof Object) {
+		copy = {};
+		for (var attr in obj) {
+			if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);
+		}
+		return copy;
+	}
+
+	throw new Error("Unable to copy obj! Its type isn't supported.");
+} //}}}
+function FloatFix(pointer,size) {//{{{
+
+	var buffer=new Float64Array(size);
+	for(var i=0;i<size;i++)buffer[i]=pointer[i];
+	return buffer;
+
+
+} //}}}
+function NullFix(pointer,value) {//{{{
+
+	if(pointer==null)return value;
+	else{
+		//check that the pointer values are not null: 
+		if(IsArray(pointer)){
+			if(IsArray(pointer[0])){
+				for(var i=0;i<pointer.length;i++){
+					for(var j=0;j<pointer[0].length;j++){
+						if(pointer[i][j]==null)pointer[i][j]=value;
+					}
+				}	
+			}
+			else{
+				for(var i=0;i<pointer.length;i++){
+					if(pointer[i]==null)pointer[i]=value;
+				}
+			}
+		}
+		return pointer;
+	}
+
+} //}}}
+function typedArraySliceSupport() { //{{{
+	//TypedArray compatibility for Safari/IE
+	if (typeof Int8Array !== 'undefined') {
+		if (!Int8Array.prototype.fill) { Int8Array.prototype.fill = Array.prototype.fill; }
+		if (!Int8Array.prototype.slice) { Int8Array.prototype.slice = Array.prototype.slice; }
+	}
+	if (typeof Uint8Array !== 'undefined') {
+		if (!Uint8Array.prototype.fill) { Uint8Array.prototype.fill = Array.prototype.fill; }
+		if (!Uint8Array.prototype.slice) { Uint8Array.prototype.slice = Array.prototype.slice; }
+	}
+	if (typeof Uint8ClampedArray !== 'undefined') {
+		if (!Uint8ClampedArray.prototype.fill) { Uint8ClampedArray.prototype.fill = Array.prototype.fill; }
+		if (!Uint8ClampedArray.prototype.slice) { Uint8ClampedArray.prototype.slice = Array.prototype.slice; }
+	}
+	if (typeof Int16Array !== 'undefined') {
+		if (!Int16Array.prototype.fill) { Int16Array.prototype.fill = Array.prototype.fill; }
+		if (!Int16Array.prototype.slice) { Int16Array.prototype.slice = Array.prototype.slice; }
+	}
+	if (typeof Uint16Array !== 'undefined') {
+		if (!Uint16Array.prototype.fill) { Uint16Array.prototype.fill = Array.prototype.fill; }
+		if (!Uint16Array.prototype.slice) { Uint16Array.prototype.slice = Array.prototype.slice; }
+	}
+	if (typeof Int32Array !== 'undefined') {
+		if (!Int32Array.prototype.fill) { Int32Array.prototype.fill = Array.prototype.fill; }
+		if (!Int32Array.prototype.slice) { Int32Array.prototype.slice = Array.prototype.slice; }
+	}
+	if (typeof Uint32Array !== 'undefined') {
+		if (!Uint32Array.prototype.fill) { Uint32Array.prototype.fill = Array.prototype.fill; }
+		if (!Uint32Array.prototype.slice) { Uint32Array.prototype.slice = Array.prototype.slice; }
+	}
+	if (typeof Float32Array !== 'undefined') {
+		if (!Float32Array.prototype.fill) { Float32Array.prototype.fill = Array.prototype.fill; }
+		if (!Float32Array.prototype.slice) { Float32Array.prototype.slice = Array.prototype.slice; }
+	}
+	if (typeof Float64Array !== 'undefined') {
+		if (!Float64Array.prototype.fill) { Float64Array.prototype.fill = Array.prototype.fill; }
+		if (!Float64Array.prototype.slice) { Float64Array.prototype.slice = Array.prototype.slice; }
+	}
+	if (typeof TypedArray !== 'undefined') {
+		if (!TypedArray.prototype.fill) { TypedArray.prototype.fill = Array.prototype.fill; }
+		if (!TypedArray.prototype.slice) { TypedArray.prototype.slice = Array.prototype.slice; }
+	}
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/array/item2str.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/array/item2str.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/array/item2str.m	(revision 27955)
@@ -0,0 +1,31 @@
+%
+%  function to convert an item to a string
+%
+%  function [svec]=item2str(a)
+%
+function [svec]=item2str(a)
+
+if     islogical(a)
+    if a
+        svec='true';
+    else
+        svec='false';
+    end
+elseif ischar(a)
+    svec=['''' a ''''];
+elseif isnumeric(a)
+    svec=num2str(a);
+else
+    if ~isempty(inputname(1))
+        warning('item2str:item_unrecog',...
+            'Item ''%s'' is of unrecognized type ''%s''.',...
+            inputname(1),class(a));
+    else
+        warning('item2str:item_unrecog',...
+            'Item %d is of unrecognized type ''%s''.',...
+            1,class(a));
+    end
+    return
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/array/rotateticklabel.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/array/rotateticklabel.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/array/rotateticklabel.m	(revision 27955)
@@ -0,0 +1,69 @@
+function th=rotateticklabel(h,rot,demo)
+%ROTATETICKLABEL rotates tick labels
+%   TH=ROTATETICKLABEL(H,ROT) is the calling form where H is a handle to
+%   the axis that contains the XTickLabels that are to be rotated. ROT is
+%   an optional parameter that specifies the angle of rotation. The default
+%   angle is 90. TH is a handle to the text objects created. For long
+%   strings such as those produced by datetick, you may have to adjust the
+%   position of the axes so the labels don't get cut off.
+%
+%   Of course, GCA can be substituted for H if desired.
+%
+%   TH=ROTATETICKLABEL([],[],'demo') shows a demo figure.
+%
+%   Known deficiencies: if tick labels are raised to a power, the power
+%   will be lost after rotation.
+%
+%   See also datetick.
+
+%   Written Oct 14, 2005 by Andy Bliss
+%   Copyright 2005 by Andy Bliss
+
+%DEMO:
+if nargin==3
+    x=[now-.7 now-.3 now];
+    y=[20 35 15];
+    figure
+    plot(x,y,'.-')
+    datetick('x',0,'keepticks')
+    h=gca;
+    set(h,'position',[0.13 0.35 0.775 0.55])
+    rot=90;
+end
+
+%set the default rotation if user doesn't specify
+if nargin==1
+    rot=90;
+end
+%make sure the rotation is in the range 0:360 (brute force method)
+while rot>360
+    rot=rot-360;
+end
+while rot<0
+    rot=rot+360;
+end
+%get current tick labels
+a=get(h,'XTickLabel');
+%erase current tick labels from figure
+set(h,'XTickLabel',[]);
+%get tick label positions
+b=get(h,'XTick');
+c=get(h,'YTick');
+%make new tick labels
+%  must consider yscale (jes, 9/14/10)
+switch lower(get(h,'YScale'))
+    case 'linear'
+        if rot<180
+            th=text(b,repmat(c(1)-.1*(c(2)-c(1)),length(b),1),a,'HorizontalAlignment','right','rotation',rot,'Interpreter','none');
+        else
+            th=text(b,repmat(c(1)-.1*(c(2)-c(1)),length(b),1),a,'HorizontalAlignment','left','rotation',rot,'Interpreter','none');
+        end
+    case 'log'
+        if rot<180
+            th=text(b,repmat(10^(log10(c(1))-.1*(log10(c(2))-log10(c(1)))),length(b),1),a,'HorizontalAlignment','right','rotation',rot,'Interpreter','none');
+        else
+            th=text(b,repmat(10^(log10(c(1))-.1*(log10(c(2))-log10(c(1)))),length(b),1),a,'HorizontalAlignment','left','rotation',rot,'Interpreter','none');
+        end
+    otherwise
+        set(h,'XTickLabel',a);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/array/str2int.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/array/str2int.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/array/str2int.m	(revision 27955)
@@ -0,0 +1,45 @@
+%
+%  function to find and read the first or last positive integer
+%  in a character string.
+%
+%  function [aint]=str2int(astr,cfl)
+%
+function [aint]=str2int(astr,cfl)
+
+aint=[];
+
+if     ~exist('cfl','var') || strncmpi(cfl,'f',1)
+    i=1;
+
+    while (i <= length(astr))
+        if (astr(i) >= '0' && astr(i) <= '9')
+            aint=sscanf(astr(i:length(astr)),'%d',[1,1]);
+            return
+        else
+            i=i+1;
+        end
+	end
+
+elseif strncmpi(cfl,'l',1)
+    i=length(astr);
+    ifound=false;
+
+    while (i >= 1)
+        if     (astr(i) >= '0' && astr(i) <= '9')
+            ifound=true;
+            i=i-1;
+        elseif ~ifound
+            i=i-1;
+        else
+            aint=sscanf(astr(i+1:length(astr)),'%d',[1,1]);
+            return
+        end
+	end
+
+    if ifound
+        aint=sscanf(astr,'%d',[1,1]);
+        return
+    end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/array/string_cell.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/array/string_cell.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/array/string_cell.m	(revision 27955)
@@ -0,0 +1,26 @@
+%
+%  function to return the string of a cell array
+%
+%  function [svec]=string_cell(a)
+%
+function [svec]=string_cell(a)
+
+if ~nargin
+    help string_cell
+    return
+end
+
+if (numel(a) == 0)
+    svec='{}';
+    return
+end
+
+%  assemble string for output
+
+svec ='{';
+for i=1:numel(a)-1;
+    svec=[svec item2str(a{i}) ' '];
+end
+svec=[svec item2str(a{end}) '}'];
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/array/string_dim.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/array/string_dim.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/array/string_dim.m	(revision 27955)
@@ -0,0 +1,72 @@
+%
+%  function to return the string dimension of an array element
+%
+%  function [sdim]=string_dim(a,idim,varargin)
+%
+function [sdim]=string_dim(a,idim,varargin)
+
+if ~nargin
+    help string_dim
+    return
+end
+
+%  check for scalar
+
+if (numel(a) == 1) && (idim == 1)
+    sdim='';
+    return
+end
+
+%  check for overflow
+
+if (idim > numel(a))
+    if ~isempty(inputname(1))
+        error('Index %d exceeds number of elements in array ''%s''.',...
+            idim,inputname(1));
+    else
+        error('Index %d exceeds number of elements in array %d.',...
+            idim,1);
+    end
+end
+
+%  check for column or row vector (Matlab uses a minimum of two
+%  dimensions, so this won't match Matlab standard output)
+
+for iarg=1:nargin-2
+    if strcmpi(varargin{iarg},'vector')
+        if (ndims(a) == 2) && ((size(a,1) == 1) || (size(a,2) == 1))
+            sdim =['(' num2str(idim) ')'];
+            return
+        end
+    end
+end
+
+%  do the general case
+
+asize=size(a);
+index=zeros(size(asize));
+aprod=prod(asize);
+idim =idim-1;
+
+%  calculate indices base 0 and convert to base 1
+
+%  note that ind2sub might be useful, except that it requires a list
+%  of scalars rather than a vector for output.
+
+for i=length(asize):-1:1
+    aprod=aprod/asize(i);
+    index(i)=floor(idim/aprod);
+    idim=idim-index(i)*aprod;
+end
+index=index+1;
+
+%  assemble string for output
+
+sdim ='(';
+for i=1:length(asize)-1;
+    sdim =[sdim num2str(index(i)) ','];
+end
+sdim =[sdim num2str(index(end)) ')'];
+
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/array/string_size.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/array/string_size.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/array/string_size.m	(revision 27955)
@@ -0,0 +1,38 @@
+%
+%  function to return the string size of an array
+%
+%  function [ssize]=string_size(a,varargin)
+%
+function [ssize]=string_size(a,varargin)
+
+if ~nargin
+    help string_size
+    return
+end
+
+%  check for column or row vector (Matlab uses a minimum of two
+%  dimensions, so this won't match Matlab standard output)
+
+for iarg=1:nargin-1
+    if strcmpi(varargin{iarg},'vector')
+        if (ndims(a) == 2) && ((size(a,1) == 1) || (size(a,2) == 1))
+            ssize =['(' num2str(numel(a)) ')'];
+            return
+        end
+    end
+end
+
+%  do the general case
+
+asize=size(a);
+
+%  assemble string for output
+
+ssize ='(';
+for i=1:length(asize)-1;
+    ssize =[ssize num2str(asize(i)) 'x'];
+end
+ssize =[ssize num2str(asize(end)) ')'];
+
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/array/string_vec.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/array/string_vec.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/array/string_vec.m	(revision 27955)
@@ -0,0 +1,26 @@
+%
+%  function to return the string of an vector
+%
+%  function [svec]=string_vec(a)
+%
+function [svec]=string_vec(a)
+
+if ~nargin
+    help string_vec
+    return
+end
+
+if (numel(a) == 0)
+    svec='[]';
+    return
+end
+
+%  assemble string for output
+
+svec ='[';
+for i=1:numel(a)-1;
+    svec=[svec item2str(a(i)) ' '];
+end
+svec=[svec item2str(a(end)) ']'];
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/array/struc_class.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/array/struc_class.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/array/struc_class.m	(revision 27955)
@@ -0,0 +1,30 @@
+%
+%  function to find the structural fields of a specified class
+%  
+%  [sclasso]=struc_class(sclass,cstr)
+%
+function [sclasso]=struc_class(sclass,cstr)
+
+%  collect only the objects of the appropriate class
+
+if     isa(sclass,cstr)
+    if ~isempty(inputname(1))
+        sclasso.(inputname(1))=sclass;
+    else
+        sclasso.(cstr)        =sclass;
+    end
+
+elseif isstruct(sclass)
+    fnames=fieldnames(sclass);
+    for i=1:numel(fnames)
+        if isa(sclass.(fnames{i}),cstr)
+            sclasso.(fnames{i})=sclass.(fnames{i});
+        end
+    end
+end
+
+if ~exist('sclasso','var')
+    sclasso=struct([]);
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/array/struc_desc.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/array/struc_desc.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/array/struc_desc.m	(revision 27955)
@@ -0,0 +1,61 @@
+%
+%  function to find the structures with the specified descriptors
+%  
+%  [sarrayo]=struc_desc(sarray,varargin)
+%
+function [sarrayo]=struc_desc(sarray,varargin)
+
+if ~isfield(sarray,'descriptor')
+    if ~isempty(inputname(1))
+        error('Field ''descriptor'' not found in array ''%s''.',inputname(1));
+    else
+        error('Field ''descriptor'' not found in array %d.',1);
+    end
+end
+
+sarrayo=struct([]);
+
+for iarg=1:nargin-1
+    if     iscell(varargin{iarg})
+        desc=        varargin{iarg};
+    elseif ischar(varargin{iarg})
+        desc=cellstr(varargin{iarg});
+    end
+
+    for i=1:length(desc)
+        sarrayoi=struc_desci(sarray,desc{i});
+        if ~isempty(sarrayoi)
+            if isempty(sarrayo)
+                sarrayo       =sarrayoi;
+            else
+                sarrayo(end+1)=sarrayoi;
+            end
+        end
+    end
+end
+
+%  if nothing found, return whole array
+
+if isempty(sarrayo)
+    sarrayo=sarray;
+end
+
+end
+
+%
+%  function to find the structure with the specified descriptor
+%  
+function [sarrayo]=struc_desci(sarray,str)
+
+sarrayo=struct([]);
+
+for i=1:numel(sarray)
+    if strcmp(sarray(i).descriptor,str)
+        sarrayo=sarray(i);
+        return
+    end
+end
+
+warning(['String ''' str ''' not found in array ''' inputname(1) '''.']);
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/PattynSMB.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/PattynSMB.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/PattynSMB.m	(revision 27955)
@@ -0,0 +1,51 @@
+function smb=PattynSMB(md,Tf)
+%PATTYNSMB- Compute SMB over Antarctica (from Pattyn 2006, pg. 18, "GRANTISM: An ExcelTM model for Greenland and 
+%           Antarctic ice-sheet response to climate changes")
+%
+%   Usage:
+%      md=PattynSMB(md,Tf)
+%
+%      where Tf is a background forcing temperature ("an anomalous temperature relative to the present conditions)
+%
+%
+%   See also: SETICESHELFBC, SETMARINEICESHEETBC
+
+ 
+% Tma    : Mean annual surface temperature in [deg C]
+% Tms    : Mean summer temperature in [deg C]
+% h      : Surface/bedrock elevation (I assume in meters but paper does not specify)
+% phi    : Latitude in degrees SOUTH
+% lambda : Longitude in degrees WEST
+% Tf     : Background forcing temperature ("an anomalous temperature relative to the present conditions)
+% ACCdot : Accumulation rate in units of [m/a] ice equivalent
+% ABLdot : Surface ablation rate in [m/a] ice equivalent
+
+	%Double check lat and long exist:
+	if isnan(md.mesh.lat),
+		error('PattynSMB error message: md.mesh.lat field required');
+	end
+
+	%Delta Temperature forcing 
+	if (nargin==1),
+		Tf=0; 
+	end
+
+	% Calculate mean annual surface temperature, Eqn (11)
+	% Here, -0.012 is the atmospheric Lapse rate from sea level in deg/m.
+	% It is multiplied by surface elevation from sea level
+	Tma = -15.15 - 0.012*md.geometry.surface;
+
+	%% Calculate summer temperature, Eqn (12)
+	%% No melting at PIG in mean conditions - need about 6 degress Tf to start having a negative yearly SMB
+	Tms = 16.81 - 0.00692*md.geometry.surface - 0.27937*abs(md.mesh.lat) + Tf;
+
+	%% Calculate Accumulation perturbation with Tf forcing, Eqn (9)
+	ACCdot = 2.5*2.^((Tma+Tf)/10.) - 2.5*2.^(Tma/10.);
+
+	%% Calculate Ablation, Eqn (10) (use for both Antarctica & Greenland), max melt is 10m/a
+	ABLdot=zeros(size(ACCdot));
+	pos=Tms>=0;
+	ABLdot(pos)=min(1.4*Tms(Tms>=0),10);
+
+	smb=ACCdot-ABLdot;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/PattynSMB.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/PattynSMB.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/PattynSMB.py	(revision 27955)
@@ -0,0 +1,50 @@
+import numpy as np
+
+
+def PattynSMB(md, Tf):
+    """
+    PATTYNSMB - Compute SMB over Antarctica (from Pattyn 2006, pg. 18, "GRANTISM: An ExcelTM model for Greenland
+    and Antarctic ice-sheet response to climate changes")
+
+    Usage:
+      md = PattynSMB(md, Tf)
+
+      where Tf is a background forcing temperature ("an anomalous temperature relative to the present conditions)
+
+
+    See also: SETICESHELFBC, SETMARINEICESHEETBC
+    """
+
+    # Tma    : Mean annual surface temperature in [deg C]
+    # Tms    : Mean summer temperature in [deg C]
+    # h      : Surface / bedrock elevation (I assume in meters but paper does not specify)
+    # phi    : Latitude in degrees SOUTH
+    # lambda : Longitude in degrees WEST
+    # Tf     : Background forcing temperature ("an anomalous temperature relative to the present conditions)
+    # ACCdot : Accumulation rate in units of [m / a] ice equivalent
+    # ABLdot : Surface ablation rate in [m / a] ice equivalent
+
+    #Double check lat and long exist:
+    if np.any(np.isnan(md.mesh.lat)):
+        raise IOError('PattynSMB error message: md.mesh.lat field required')
+
+    # Calculate mean annual surface temperature, Eqn (11)
+    # Here, -0.012 is the atmospheric Lapse rate from sea level in deg / m.
+    # It is multiplied by surface elevation from sea level
+    Tma = -15.15 - 0.012 * md.geometry.surface
+
+    # Calculate summer temperature, Eqn (12)
+    # No melting at PIG in mean conditions - need about 6 degress Tf to start having a negative yearly SMB
+    Tms = 16.81 - 0.00692 * md.geometry.surface - 0.27937 * np.abs(md.mesh.lat) + Tf
+    Tms = Tms[0]
+
+    # Calculate Accumulation perturbation with Tf forcing, Eqn (9)
+    ACCdot = 2.5 * 2**((Tma + Tf) / 10.) - 2.5 * 2**(Tma / 10.)
+
+    # Calculate Ablation, Eqn (10) (use for both Antarctica & Greenland), max melt is 10m / a
+    ABLdot = 0. * np.ones(md.mesh.numberofvertices)
+    pos = np.nonzero(Tms >= 0)
+    ABLdot[pos] = np.minimum(1.4 * Tms[pos], 10)
+
+    smb = ACCdot - ABLdot
+    return smb[0]
Index: /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetIceSheetBC.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetIceSheetBC.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetIceSheetBC.js	(revision 27955)
@@ -0,0 +1,69 @@
+function SetIceSheetBC(md) { 
+//SETICESHEETBC - Create the boundary conditions for stressbalance and thermal models for an IceSheet with no Ice Front
+//
+//   Usage
+//      md=SetIceSheetBC(md)
+//
+//   See also: SETICESHELFBC, SETMARINEICESHEETBC
+
+	md.stressbalance.spcvx=NewArrayFill(md.mesh.numberofvertices,NaN); 
+	md.stressbalance.spcvy=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.stressbalance.spcvz=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.stressbalance.referential=Create2DArray(md.mesh.numberofvertices,6);
+	for(var i=0;i<md.mesh.numberofvertices;i++)for(var j=0;j<6;j++)md.stressbalance.referential[i][j]=NaN;
+	md.stressbalance.loadingforce=Create2DArray(md.mesh.numberofvertices,3);
+	for(var i=0;i<md.mesh.numberofvertices;i++)for(var j=0;j<3;j++)md.stressbalance.loadingforce[i][j]=0;
+
+	//Node on dirichlet: 
+	pos=ArrayFind(md.mesh.vertexonboundary,1);
+	for(var i=0;i<pos.length;i++){
+		md.stressbalance.spcvx[pos[i]]=0;
+		md.stressbalance.spcvy[pos[i]]=0;
+		md.stressbalance.spcvz[pos[i]]=0;
+	}
+
+	//Dirichlet values: 
+	var obs=false;
+	if((md.inversion.vx_obs.length == md.mesh.numberofvertices) & (md.inversion.vy_obs.length==md.mesh.numberofvertices))obs=true;
+
+	if(obs==true){
+		console.log('      boundary conditions for stressbalance model: setting spc as observed velocities');
+		for(var i=0;i<pos.length;i++){
+			md.stressbalance.spcvx[pos[i]]=md.inversion.vx_obs[pos[i]];
+			md.stressbalance.spcvy[pos[i]]=md.inversion.vy_obs[pos[i]];
+		}
+	}
+	else{
+		console.log('      boundary conditions for stressbalance model: setting spc as zero');
+	}
+
+	//No ice front, do nothing. 
+	
+	//Initialize surface and basal forcings
+	md.smb.initialize(md);
+	md.basalforcings.initialize(md);
+
+	//Deal with other boundary conditions
+	if (isNaN(md.balancethickness.thickening_rate)){
+		md.balancethickness.thickening_rate=NewArrayFill(md.mesh.numberofvertices,0);
+		console.log('      no balancethickness.thickening_rate specified: values set as zero');
+	}
+		
+	md.masstransport.spcthickness=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.balancethickness.spcthickness=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.damage.spcdamage=NewArrayFill(md.mesh.numberofvertices,NaN);
+
+	if (md.initialization.temperature.length==md.mesh.numberofvertices){
+		md.thermal.spctemperature=NewArrayFill(md.mesh.numberofvertices,NaN);
+		if ('vertexonsurface' in md.mesh){
+			pos=ArrayFind(md.mesh.vertexonsurface,1);
+			for(var i=0;i<pos.length;i++)md.thermal.spctemperature[i]=md.initialization.temperature[i]; //impose observed temperature on surface
+		}
+		if (md.basalforcings.geothermalflux.length != md.mesh.numberofvertices){
+			md.basalforcings.geothermalflux=NewArrayFill(md.mesh.numberofvertices,0);
+		}
+	}
+	else{
+		console.log('      no thermal boundary conditions created: no observed temperature found');
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetIceSheetBC.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetIceSheetBC.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetIceSheetBC.m	(revision 27955)
@@ -0,0 +1,58 @@
+function md=SetIceSheetBC(md)
+%SETICESHEETBC - Create the boundary conditions for stressbalance and thermal models for an IceSheet with no Ice Front
+%
+%   Usage:
+%      md=SetIceSheetBC(md)
+%
+%   See also: SETICESHELFBC, SETMARINEICESHEETBC
+
+%node on Dirichlet
+pos=find(md.mesh.vertexonboundary);
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvy(pos)=0;
+md.stressbalance.spcvz(pos)=0;
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+
+%Dirichlet Values
+if (length(md.inversion.vx_obs)==md.mesh.numberofvertices & length(md.inversion.vy_obs)==md.mesh.numberofvertices)
+	disp('      boundary conditions for stressbalance model: spc set as observed velocities');
+	md.stressbalance.spcvx(pos)=md.inversion.vx_obs(pos);
+	md.stressbalance.spcvy(pos)=md.inversion.vy_obs(pos);
+else
+	disp('      boundary conditions for stressbalance model: spc set as zero');
+end
+
+%No ice front: do nothing
+
+%Initialize surface and basal forcings
+md.smb = initialize(md.smb,md);
+md.basalforcings = initialize(md.basalforcings,md);
+
+%Initialize ocean forcings and sealevel
+md.dsl = initialize(md.dsl,md);
+
+%Deal with other boundary conditions
+if isnan(md.balancethickness.thickening_rate),
+	md.balancethickness.thickening_rate=zeros(md.mesh.numberofvertices,1);
+	disp('      no balancethickness.thickening_rate specified: values set as zero');
+end
+md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.balancethickness.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+
+if (length(md.initialization.temperature)==md.mesh.numberofvertices),
+	md.thermal.spctemperature=NaN*ones(md.mesh.numberofvertices,1);
+	if isprop(md.mesh,'vertexonsurface')
+		pos=find(md.mesh.vertexonsurface);
+		md.thermal.spctemperature(pos)=md.initialization.temperature(pos); %impose observed temperature on surface
+	end
+	if (length(md.basalforcings.geothermalflux)~=md.mesh.numberofvertices),
+		md.basalforcings.geothermalflux=50.*10^-3*ones(md.mesh.numberofvertices,1); %50 mW/m^2
+	end
+else
+	disp('      no thermal boundary conditions created: no observed temperature found');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetIceSheetBC.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetIceSheetBC.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetIceSheetBC.py	(revision 27955)
@@ -0,0 +1,59 @@
+import numpy as np
+
+
+def SetIceSheetBC(md):
+    """SETICESHEETBC - Create the boundary conditions for stressbalance and thermal models for an IceSheet with no Ice Front
+
+    Usage:
+        md = SetIceSheetBC(md)
+
+    See also: SETICESHELFBC, SETMARINEICESHEETBC
+    """
+
+    # node on Dirichlet
+    pos = np.nonzero(md.mesh.vertexonboundary)
+    md.stressbalance.spcvx = np.nan * np.ones((md.mesh.numberofvertices))
+    md.stressbalance.spcvy = np.nan * np.ones((md.mesh.numberofvertices))
+    md.stressbalance.spcvz = np.nan * np.ones((md.mesh.numberofvertices))
+    md.stressbalance.spcvx[pos] = 0
+    md.stressbalance.spcvy[pos] = 0
+    md.stressbalance.spcvz[pos] = 0
+    md.stressbalance.referential = np.nan * np.ones((md.mesh.numberofvertices, 6))
+    md.stressbalance.loadingforce = 0 * np.ones((md.mesh.numberofvertices, 3))
+
+    # Dirichlet Values
+    if isinstance(md.inversion.vx_obs, np.ndarray) and np.size(md.inversion.vx_obs, axis=0) == md.mesh.numberofvertices and isinstance(md.inversion.vy_obs, np.ndarray) and np.size(md.inversion.vy_obs, axis=0) == md.mesh.numberofvertices:
+        print('      boundary conditions for stressbalance model: spc set as observed velocities')
+        md.stressbalance.spcvx[pos] = md.inversion.vx_obs[pos]
+        md.stressbalance.spcvy[pos] = md.inversion.vy_obs[pos]
+    else:
+        print('      boundary conditions for stressbalance model: spc set as zero')
+
+    # No ice front -> do nothing
+
+    # Initialize surface and basal forcings
+    md.smb.initialize(md)
+    md.basalforcings.initialize(md)
+
+    # Initialize ocean forcings and sealevel
+    md.dsl.initialize(md)
+
+    # Deal with other boundary conditions
+    if np.all(np.isnan(md.balancethickness.thickening_rate)):
+        md.balancethickness.thickening_rate = np.zeros((md.mesh.numberofvertices))
+        print('      no balancethickness.thickening_rate specified: values set as zero')
+    md.masstransport.spcthickness = np.nan * np.ones((md.mesh.numberofvertices))
+    md.balancethickness.spcthickness = np.nan * np.ones((md.mesh.numberofvertices))
+    md.damage.spcdamage = np.nan * np.ones((md.mesh.numberofvertices))
+
+    if isinstance(md.initialization.temperature, np.ndarray) and np.size(md.initialization.temperature, axis=0) == md.mesh.numberofvertices:
+        md.thermal.spctemperature = np.nan * np.ones((md.mesh.numberofvertices))
+        if hasattr(md.mesh, 'vertexonsurface'):
+            pos = np.nonzero(md.mesh.vertexonsurface)[0]
+            md.thermal.spctemperature[pos] = md.initialization.temperature[pos]  # impose observed temperature on surface
+        if not isinstance(md.basalforcings.geothermalflux, np.ndarray) or not np.size(md.basalforcings.geothermalflux) == md.mesh.numberofvertices:
+            md.basalforcings.geothermalflux = 50.0 * pow(10, -3) * np.ones((md.mesh.numberofvertices))  # 50 mW/m^2
+    else:
+        print('      no thermal boundary conditions created: no observed temperature found')
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetIceShelfBC.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetIceShelfBC.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetIceShelfBC.js	(revision 27955)
@@ -0,0 +1,107 @@
+function SetIceShelfBC(md) { 
+//SETICESHELFBC - Create the boundary conditions for stressbalance and thermal models for a  Ice Shelf with Ice Front
+//
+//   Neumann BC are used on the ice front (an ANRGUS contour around the ice front
+//   must be given in input)
+//   Dirichlet BC are used elsewhere for stressbalance
+//
+//   Usage:
+//      md=SetIceShelfBC(md,varargin)
+//
+//   Example:
+//      SetIceShelfBC(md);
+//      SetIceShelfBC(md,'Front.exp');
+//
+//   See also: SETICESHEETBC, SETMARINEICESHEETBC
+
+	//node on Dirichlet (boundary and ~icefront)
+	if (arguments.length==2){
+		icefront=arguments[1];
+		nodeinsideicefront=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,icefront,'node',2);
+		nodeonicefront=ArrayAnd(md.mesh.vertexonboundary,nodeinsideicefront);
+	}
+	else if(arguments.length==1){
+		nodeonicefront=NewArrayFill(md.mesh.numberofvertices,0);
+	}
+	else{
+		throw Error('SetIceShelfBC usage error');
+	}
+
+	md.stressbalance.spcvx=NewArrayFill(md.mesh.numberofvertices,NaN); 
+	md.stressbalance.spcvy=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.stressbalance.spcvz=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.stressbalance.referential=Create2DArray(md.mesh.numberofvertices,6);
+	for(var i=0;i<md.mesh.numberofvertices;i++)for(var j=0;j<6;j++)md.stressbalance.referential[i][j]=NaN;
+	md.stressbalance.loadingforce=Create2DArray(md.mesh.numberofvertices,3);
+	for(var i=0;i<md.mesh.numberofvertices;i++)for(var j=0;j<3;j++)md.stressbalance.loadingforce[i][j]=0;
+
+	//Ice front position: 
+	pos=ArrayFind(nodeonicefront,1);
+	for(var i=0;i<pos.length;i++)md.mask.ice_levelset[pos[i]]=0;
+
+	//First find segments that are not completely on the front
+	if (md.mesh.elementtype() === 'Penta'){
+		numbernodesfront=4;
+	}
+	else if (md.mesh.elementtype() === 'Tria'){
+		numbernodesfront=2;
+	}
+	else{
+		throw Error('mesh type not supported yet');
+	}
+	var obs=false;
+	if((md.inversion.vx_obs.length == md.mesh.numberofvertices) & (md.inversion.vy_obs.length==md.mesh.numberofvertices))obs=true;
+
+	if(obs==true){
+		console.log('      boundary conditions for stressbalance model: setting spc as observed velocities');
+	}
+	else{
+		console.log('      boundary conditions for stressbalance model: setting spc as zero');
+	}
+	for(var i=0;i<md.mesh.segments.length;i++){
+		var sum=0;
+		for (var j=0;j<numbernodesfront;j++) sum+=md.mask.ice_levelset[md.mesh.segments[i][j]-1];
+		if(sum!=0){
+			for (var j=0;j<numbernodesfront;j++){
+				if(obs==false){
+					md.stressbalance.spcvx[md.mesh.segments[i][j]-1]=0;
+					md.stressbalance.spcvy[md.mesh.segments[i][j]-1]=0;
+				}
+				else{
+					md.stressbalance.spcvx[md.mesh.segments[i][j]-1]=md.inversion.vx_obs[md.mesh.segments[i][j]-1];
+					md.stressbalance.spcvy[md.mesh.segments[i][j]-1]=md.inversion.vy_obs[md.mesh.segments[i][j]-1];
+				}
+				md.stressbalance.spcvz[md.mesh.segments[i][j]-1]=0;
+
+			}
+		}
+	}
+
+	//Initialize surface and basal forcings
+	md.smb.initialize(md);
+	md.basalforcings.initialize(md);
+
+	//Deal with other boundary conditions
+	if (isNaN(md.balancethickness.thickening_rate)){
+		md.balancethickness.thickening_rate=NewArrayFill(md.mesh.numberofvertices,0);
+		console.log('      no balancethickness.thickening_rate specified: values set as zero');
+	}
+		
+	md.masstransport.spcthickness=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.balancethickness.spcthickness=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.damage.spcdamage=NewArrayFill(md.mesh.numberofvertices,NaN);
+
+	if (md.initialization.temperature.length==md.mesh.numberofvertices){
+		md.thermal.spctemperature=NewArrayFill(md.mesh.numberofvertices,NaN);
+		if ('vertexonsurface' in md.mesh){
+			pos=ArrayFind(md.mesh.vertexonsurface,1);
+			for(var i=0;i<pos.length;i++)md.thermal.spctemperature[i]=md.initialization.temperature[i]; //impose observed temperature on surface
+		}
+		if (md.basalforcings.geothermalflux.length != md.mesh.numberofvertices){
+			md.basalforcings.geothermalflux=NewArrayFill(md.mesh.numberofvertices,0);
+		}
+	}
+	else{
+		console.log('      no thermal boundary conditions created: no observed temperature found');
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetIceShelfBC.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetIceShelfBC.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetIceShelfBC.m	(revision 27955)
@@ -0,0 +1,88 @@
+function md=SetIceShelfBC(md,varargin)
+%SETICESHELFBC - Create the boundary conditions for stressbalance and thermal models for a  Ice Shelf with Ice Front
+%
+%   Neumann BC are used on the ice front (an ANRGUS contour around the ice front
+%   must be given in input)
+%   Dirichlet BC are used elsewhere for stressbalance
+%
+%   Usage:
+%      md=SetIceShelfBC(md,varargin)
+%
+%   Example:
+%      md=SetIceShelfBC(md);
+%      md=SetIceShelfBC(md,'Front.exp');
+%
+%   See also: SETICESHEETBC, SETMARINEICESHEETBC
+
+%node on Dirichlet (boundary and ~icefront)
+if nargin==2,
+	icefrontfile=varargin{1};
+	if ~exist(icefrontfile), error(['SetIceShelfBC error message: ice front file ' icefrontfile ' not found']); end
+	nodeinsideicefront=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,icefrontfile,'node',2);
+	nodeonicefront=double(md.mesh.vertexonboundary & nodeinsideicefront);
+elseif nargin==1,
+	nodeonicefront=zeros(md.mesh.numberofvertices,1);
+else
+	help SetIceShelfBC
+	error('bad usage');
+end
+pos=find(md.mesh.vertexonboundary & ~nodeonicefront);
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+
+%Ice front position: 
+md.mask.ice_levelset(find(nodeonicefront))=0;
+
+%First find segments that are not completely on the front
+if strcmp(elementtype(md.mesh),'Penta'),
+	numbernodesfront=4;
+elseif strcmp(elementtype(md.mesh),'Tria'),
+	numbernodesfront=2;
+else
+	error('mesh type not supported yet');
+end
+segmentsfront=md.mask.ice_levelset(md.mesh.segments(:,1:numbernodesfront))==0;
+segments=find(sum(segmentsfront,2)~=numbernodesfront);
+%Find all nodes for these segments and spc them
+pos=md.mesh.segments(segments,1:numbernodesfront);
+md.stressbalance.spcvx(pos(:))=0;
+md.stressbalance.spcvy(pos(:))=0;
+md.stressbalance.spcvz(pos(:))=0;
+
+%Dirichlet Values
+if (length(md.inversion.vx_obs)==md.mesh.numberofvertices & length(md.inversion.vy_obs)==md.mesh.numberofvertices)
+	disp('      boundary conditions for stressbalance model: spc set as observed velocities');
+	md.stressbalance.spcvx(pos)=md.inversion.vx_obs(pos);
+	md.stressbalance.spcvy(pos)=md.inversion.vy_obs(pos);
+else
+	disp('      boundary conditions for stressbalance model: spc set as zero');
+end
+
+%Initialize surface and basal forcings
+md.smb = initialize(md.smb,md);
+md.basalforcings   = initialize(md.basalforcings,md);
+
+%Deal with other boundary conditions
+if isnan(md.balancethickness.thickening_rate),
+	md.balancethickness.thickening_rate=zeros(md.mesh.numberofvertices,1);
+	disp('      no balancethickness.thickening_rate specified: values set as zero');
+end
+md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.balancethickness.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+
+if (length(md.initialization.temperature)==md.mesh.numberofvertices),
+	md.thermal.spctemperature=NaN*ones(md.mesh.numberofvertices,1);
+	if isprop(md.mesh,'vertexonsurface'),
+		pos=find(md.mesh.vertexonsurface);
+		md.thermal.spctemperature(pos)=md.initialization.temperature(pos); %impose observed temperature on surface
+	end
+	if (length(md.basalforcings.geothermalflux)~=md.mesh.numberofvertices),
+		md.basalforcings.geothermalflux=zeros(md.mesh.numberofvertices,1);
+	end
+else
+	disp('      no thermal boundary conditions created: no observed temperature found');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetIceShelfBC.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetIceShelfBC.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetIceShelfBC.py	(revision 27955)
@@ -0,0 +1,101 @@
+import os
+import numpy as np
+from ContourToMesh import ContourToMesh
+import MatlabFuncs as m
+
+
+def SetIceShelfBC(md, icefrontfile=''):
+    """
+    SETICESHELFBC - Create the boundary conditions for stressbalance and thermal models for a  Ice Shelf with Ice Front
+
+       Neumann BC are used on the ice front (an ARGUS contour around the ice front
+       must be given in input)
+       Dirichlet BC are used elsewhere for stressbalance
+
+       Usage:
+          md = SetIceShelfBC(md, varargin)
+
+       Example:
+          md = SetIceShelfBC(md)
+          md = SetIceShelfBC(md, 'Front.exp')
+
+       See also: SETICESHEETBC, SETMARINEICESHEETBC
+    """
+
+    #node on Dirichlet (boundary and ~icefront)
+    if icefrontfile:
+        if not os.path.exists(icefrontfile):
+            raise IOError("SetIceShelfBC error message: ice front file '%s' not found." % icefrontfile)
+        nodeinsideicefront = ContourToMesh(md.mesh.elements, md.mesh.x, md.mesh.y, icefrontfile, 'node', 2)
+        nodeonicefront = np.logical_and(md.mesh.vertexonboundary, nodeinsideicefront.reshape(-1))
+    else:
+        nodeonicefront = np.zeros((md.mesh.numberofvertices), bool)
+
+    #    pos = find(md.mesh.vertexonboundary & ~nodeonicefront)
+    pos = np.nonzero(np.logical_and(md.mesh.vertexonboundary, np.logical_not(nodeonicefront)))[0]
+    md.stressbalance.spcvx = float('nan') * np.ones(md.mesh.numberofvertices)
+    md.stressbalance.spcvy = float('nan') * np.ones(md.mesh.numberofvertices)
+    md.stressbalance.spcvz = float('nan') * np.ones(md.mesh.numberofvertices)
+    md.stressbalance.referential = float('nan') * np.ones((md.mesh.numberofvertices, 6))
+    md.stressbalance.loadingforce = 0 * np.ones((md.mesh.numberofvertices, 3))
+
+    #Icefront position
+    pos = np.nonzero(nodeonicefront)[0]
+    md.mask.ice_levelset[pos] = 0
+
+    #First find segments that are not completely on the front
+    if m.strcmp(md.mesh.elementtype(), 'Penta'):
+        numbernodesfront = 4
+    elif m.strcmp(md.mesh.elementtype(), 'Tria'):
+        numbernodesfront = 2
+    else:
+        raise NameError('mesh type not supported yet')
+    if any(md.mask.ice_levelset <= 0):
+        values = md.mask.ice_levelset[md.mesh.segments[:, 0:-1] - 1]
+        segmentsfront = 1 - values
+        np.sum(segmentsfront, axis=1) != numbernodesfront
+        segments = np.nonzero(np.sum(segmentsfront, axis=1) != numbernodesfront)[0]
+    #Find all nodes for these segments and spc them
+        pos = md.mesh.segments[segments, 0:-1] - 1
+    else:
+        pos = np.nonzero(md.mesh.vertexonboundary)[0]
+    md.stressbalance.spcvx[pos] = 0
+    md.stressbalance.spcvy[pos] = 0
+    md.stressbalance.spcvz[pos] = 0
+
+    #Dirichlet Values
+    if isinstance(md.inversion.vx_obs, np.ndarray) and np.size(md.inversion.vx_obs, axis=0) == md.mesh.numberofvertices and isinstance(md.inversion.vy_obs, np.ndarray) and np.size(md.inversion.vy_obs, axis=0) == md.mesh.numberofvertices:
+        #reshape to rank - 2 if necessary to match spc arrays
+        if np.ndim(md.inversion.vx_obs) == 1:
+            md.inversion.vx_obs = md.inversion.vx_obs.reshape(-1, )
+        if np.ndim(md.inversion.vy_obs) == 1:
+            md.inversion.vy_obs = md.inversion.vy_obs.reshape(-1, )
+        print("      boundary conditions for stressbalance model: spc set as observed velocities")
+        md.stressbalance.spcvx[pos] = md.inversion.vx_obs[pos]
+        md.stressbalance.spcvy[pos] = md.inversion.vy_obs[pos]
+    else:
+        print("      boundary conditions for stressbalance model: spc set as zero")
+
+    #Create zeros basalforcings and smb
+    md.smb.initialize(md)
+    md.basalforcings.initialize(md)
+
+    #Deal with other boundary conditions
+    if np.all(np.isnan(md.balancethickness.thickening_rate)):
+        md.balancethickness.thickening_rate = np.zeros((md.mesh.numberofvertices))
+        print("      no balancethickness.thickening_rate specified: values set as zero")
+    md.masstransport.spcthickness = float('nan') * np.ones((md.mesh.numberofvertices))
+    md.balancethickness.spcthickness = float('nan') * np.ones((md.mesh.numberofvertices))
+    md.damage.spcdamage = float('nan') * np.ones((md.mesh.numberofvertices))
+
+    if isinstance(md.initialization.temperature, np.ndarray) and np.size(md.initialization.temperature, axis=0) == md.mesh.numberofvertices:
+        md.thermal.spctemperature = float('nan') * np.ones((md.mesh.numberofvertices))
+        if hasattr(md.mesh, 'vertexonsurface'):
+            pos = np.nonzero(md.mesh.vertexonsurface)[0]
+            md.thermal.spctemperature[pos] = md.initialization.temperature[pos]  #impose observed temperature on surface
+        if not isinstance(md.basalforcings.geothermalflux, np.ndarray) or not np.size(md.basalforcings.geothermalflux, axis=0) == md.mesh.numberofvertices:
+            md.basalforcings.geothermalflux = np.zeros((md.mesh.numberofvertices))
+    else:
+        print("      no thermal boundary conditions created: no observed temperature found")
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetMOLHOBC.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetMOLHOBC.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetMOLHOBC.m	(revision 27955)
@@ -0,0 +1,16 @@
+function md=SetMOLHOBC(md)
+%SETMOLHOBC - Create the boundary conditions for stressbalance for MOLHO: VxBase, VyBase, VxShear, VyShear
+%
+%   Usage:
+%      md=SetMOLHOBC(md)
+%
+
+
+%node on Dirichlet
+if md.flowequation.isMOLHO
+	md.stressbalance.spcvx_base=md.stressbalance.spcvx;
+	md.stressbalance.spcvy_base=md.stressbalance.spcvy;
+
+	md.stressbalance.spcvx_shear=NaN*ones(size(md.stressbalance.spcvx_base));
+	md.stressbalance.spcvy_shear=NaN*ones(size(md.stressbalance.spcvy_base));
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetMOLHOBC.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetMOLHOBC.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetMOLHOBC.py	(revision 27955)
@@ -0,0 +1,21 @@
+import numpy as np
+
+def SetMOLHOBC(md):
+    """
+    SETMOLHOBC - Create the boundary conditions for stressbalance for MOLHO: VxBase, VyBase, VxShear, VyShear
+
+       Usage:
+          md = SetIceShelfBC(md, varargin)
+
+       Example:
+          md = SetIceShelfBC(md)
+
+    """
+
+    #node on Dirichlet (boundary and ~icefront)
+    md.stressbalance.spcvx_base = md.stressbalance.spcvx
+    md.stressbalance.spcvy_base = md.stressbalance.spcvy
+    md.stressbalance.spcvx_shear = np.nan * md.stressbalance.spcvx
+    md.stressbalance.spcvy_shear = np.nan * md.stressbalance.spcvy
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetMarineIceSheetBC.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetMarineIceSheetBC.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetMarineIceSheetBC.m	(revision 27955)
@@ -0,0 +1,108 @@
+function md=SetMarineIceSheetBC(md,varargin)
+%SETICEMARINESHEETBC - Create the boundary conditions for stressbalance and thermal models for a  Marine Ice Sheet with Ice Front
+%
+%   Neumann BC are used on the ice front (an ARGUS contour around the ice front
+%   can be given in input, or it will be deduced as onfloatingice & onboundary)
+%   Dirichlet BC are used elsewhere for stressbalance
+%
+%   Usage:
+%      md=SetMarineIceSheetBC(md,icefrontfile)
+%      md=SetMarineIceSheetBC(md)
+%
+%   Example:
+%      md=SetMarineIceSheetBC(md,'Front.exp')
+%      md=SetMarineIceSheetBC(md)
+%
+%   See also: SETICESHELFBC, SETMARINEICESHEETBC
+
+%node on Dirichlet (boundary and ~icefront)
+if nargin==2,
+	%User provided Front.exp, use it
+	icefrontfile=varargin{1};
+	if ~exist(icefrontfile)
+		error(['SetMarineIceSheetBC error message: ice front file ' icefrontfile ' not found']);
+	end
+	[path,name,ext]=fileparts(icefrontfile);
+	if strcmp(ext,'.shp'),
+		contours=shpread(icefrontfile);
+	elseif strcmp(ext,'.exp'),
+		contours=expread(icefrontfile);
+	end
+	incontour=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,contours,'node',2);
+	vertexonicefront=double(md.mesh.vertexonboundary & incontour);
+else
+	%Guess where the ice front is
+	pos=find(sum(md.mask.ocean_levelset(md.mesh.elements)<0.,2) >0.);
+	vertexonfloatingice=zeros(md.mesh.numberofvertices,1);
+	vertexonfloatingice(md.mesh.elements(pos,:))=1.;
+	vertexonicefront=double(md.mesh.vertexonboundary & vertexonfloatingice);
+end
+pos=find(md.mesh.vertexonboundary & ~vertexonicefront);
+if isempty(pos),
+	disp('Warning: SetMarineIceSheetBC.m: ice front all around the glacier, no dirichlet applied')
+end
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+
+%Position of ice front
+md.mask.ice_levelset(find(vertexonicefront))=0;
+
+%First find segments that are not completely on the front
+if strcmp(elementtype(md.mesh),'Penta'),
+	numbernodesfront=4;
+elseif strcmp(elementtype(md.mesh),'Tria'),
+	numbernodesfront=2;
+else
+	error('mesh type not supported yet');
+end
+segmentsfront=md.mask.ice_levelset(md.mesh.segments(:,1:numbernodesfront))==0;
+segments=find(sum(segmentsfront,2)~=numbernodesfront);
+%Find all nodes for these segments and spc them
+pos=md.mesh.segments(segments,1:numbernodesfront);
+md.stressbalance.spcvx(pos(:))=0;
+md.stressbalance.spcvy(pos(:))=0;
+md.stressbalance.spcvz(pos(:))=0; % FIXME probably shouldn't spc vertical velocity here
+
+%Dirichlet Values
+if (length(md.inversion.vx_obs)==md.mesh.numberofvertices & length(md.inversion.vy_obs)==md.mesh.numberofvertices)
+	disp('      boundary conditions for stressbalance model: spc set as observed velocities');
+	md.stressbalance.spcvx(pos)=md.inversion.vx_obs(pos);
+	md.stressbalance.spcvy(pos)=md.inversion.vy_obs(pos);
+else
+	disp('      boundary conditions for stressbalance model: spc set as zero');
+end
+
+md.hydrology.spcwatercolumn=zeros(md.mesh.numberofvertices,2);
+pos=find(md.mesh.vertexonboundary);
+md.hydrology.spcwatercolumn(pos,1)=1;
+
+%Initialize surface and basal forcings
+md.smb = initialize(md.smb,md);
+md.basalforcings   = initialize(md.basalforcings,md);
+
+%Deal with other boundary conditions
+if isnan(md.balancethickness.thickening_rate),
+	md.balancethickness.thickening_rate=zeros(md.mesh.numberofvertices,1);
+	disp('      no balancethickness.thickening_rate specified: values set as zero');
+end
+
+md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.balancethickness.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+
+if (length(md.initialization.temperature)==md.mesh.numberofvertices),
+	md.thermal.spctemperature=NaN*ones(md.mesh.numberofvertices,1);
+	if isprop(md.mesh,'vertexonsurface'),
+		pos=find(md.mesh.vertexonsurface);
+		md.thermal.spctemperature(pos)=md.initialization.temperature(pos); %impose observed temperature on surface
+	end
+	if (length(md.basalforcings.geothermalflux)~=md.mesh.numberofvertices),
+		md.basalforcings.geothermalflux=zeros(md.mesh.numberofvertices,1);
+		md.basalforcings.geothermalflux(find(md.mask.ocean_levelset>0.))=50.*10.^-3; %50mW/m2
+	end
+else
+	disp('      no thermal boundary conditions created: no observed temperature found');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetMarineIceSheetBC.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetMarineIceSheetBC.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/SetMarineIceSheetBC.py	(revision 27955)
@@ -0,0 +1,109 @@
+import os
+import numpy as np
+from ContourToMesh import ContourToMesh
+
+
+def SetMarineIceSheetBC(md, icefrontfile=''):
+    """SETICEMARINESHEETBC - Create the boundary conditions for stressbalance 
+    and thermal models for a  Marine Ice Sheet with Ice Front
+
+    Neumann BC are used on the ice front (an ARGUS contour around the ice front
+    can be given in input, or it will be deduced as onfloatingice & onboundary)
+    Dirichlet BC are used elsewhere for stressbalance
+
+    Usage:
+        md = SetMarineIceSheetBC(md, icefrontfile)
+        md = SetMarineIceSheetBC(md)
+
+    Example:
+        md = SetMarineIceSheetBC(md, 'Front.exp')
+        md = SetMarineIceSheetBC(md)
+
+    See also: SETICESHELFBC, SETMARINEICESHEETBC
+    """
+    #node on Dirichlet (boundary and ~icefront)
+    if icefrontfile:
+        # User provided Front.exp, use it
+        if not os.path.exists(icefrontfile):
+            raise IOError('SetMarineIceSheetBC error message: ice front file \'{}\' not found.'.format(icefrontfile))
+        incontour = ContourToMesh(md.mesh.elements, md.mesh.x, md.mesh.y, icefrontfile, 'node', 2)
+        vertexonicefront = np.logical_and(md.mesh.vertexonboundary, incontour.reshape(-1))
+    else:
+        # Guess where the ice front is
+        vertexonfloatingice = np.zeros((md.mesh.numberofvertices))
+        pos = np.nonzero(np.sum(md.mask.ocean_levelset[md.mesh.elements - 1] < 0.0, axis=1) > 0.0)[0]
+        vertexonfloatingice[md.mesh.elements[pos].astype(int) - 1] = 1.
+        vertexonicefront = np.logical_and(np.reshape(md.mesh.vertexonboundary, (-1, )), vertexonfloatingice > 0.0)
+
+    #pos = find(md.mesh.vertexonboundary & ~vertexonicefront)
+    pos = np.nonzero(np.logical_and(md.mesh.vertexonboundary, np.logical_not(vertexonicefront)))[0]
+    if not np.size(pos):
+        print('Warning: SetMarineIceSheetBC.py: ice front all around the glacier, no dirichlet found. Dirichlet must be added manually.')
+
+    md.stressbalance.spcvx = np.nan * np.ones(md.mesh.numberofvertices)
+    md.stressbalance.spcvy = np.nan * np.ones(md.mesh.numberofvertices)
+    md.stressbalance.spcvz = np.nan * np.ones(md.mesh.numberofvertices)
+    md.stressbalance.referential = np.nan * np.ones((md.mesh.numberofvertices, 6))
+    md.stressbalance.loadingforce = 0 * np.ones((md.mesh.numberofvertices, 3))
+
+    # Position of ice front
+    pos = np.nonzero(vertexonicefront)[0]
+    md.mask.ice_levelset[pos] = 0
+
+    # First find segments that are not completely on the front
+    if md.mesh.elementtype() == 'Penta':
+        numbernodesfront = 4
+    elif md.mesh.elementtype() == 'Tria':
+        numbernodesfront = 2
+    else:
+        raise Exception('Mesh type not supported')
+    if any(md.mask.ice_levelset <= 0):
+        values = md.mask.ice_levelset[md.mesh.segments[:, 0:-1] - 1]
+        segmentsfront = 1 - values
+        np.sum(segmentsfront, axis=1) != numbernodesfront
+        segments = np.nonzero(np.sum(segmentsfront, axis=1) != numbernodesfront)[0]
+        # Find all nodes for these segments and spc them
+        pos = md.mesh.segments[segments, 0:-1] - 1
+    else:
+        pos = np.nonzero(md.mesh.vertexonboundary)[0]
+    md.stressbalance.spcvx[pos] = 0
+    md.stressbalance.spcvy[pos] = 0
+    md.stressbalance.spcvz[pos] = 0
+
+    # Dirichlet Values
+    if isinstance(md.inversion.vx_obs, np.ndarray) and np.size(md.inversion.vx_obs, axis=0) == md.mesh.numberofvertices and isinstance(md.inversion.vy_obs, np.ndarray) and np.size(md.inversion.vy_obs, axis=0) == md.mesh.numberofvertices:
+        print('      boundary conditions for stressbalance model: spc set as observed velocities')
+        md.stressbalance.spcvx[pos] = md.inversion.vx_obs[pos]
+        md.stressbalance.spcvy[pos] = md.inversion.vy_obs[pos]
+    else:
+        print('      boundary conditions for stressbalance model: spc set as zero')
+
+    md.hydrology.spcwatercolumn = np.zeros((md.mesh.numberofvertices, 2))
+    pos = np.nonzero(md.mesh.vertexonboundary)[0]
+    md.hydrology.spcwatercolumn[pos, 0] = 1
+
+    #Create zeros basalforcings and smb
+    md.smb.initialize(md)
+    md.basalforcings.initialize(md)
+
+    #Deal with other boundary conditions
+    if np.all(np.isnan(md.balancethickness.thickening_rate)):
+        md.balancethickness.thickening_rate = np.zeros((md.mesh.numberofvertices))
+        print('      no balancethickness.thickening_rate specified: values set as zero')
+
+    md.masstransport.spcthickness = np.nan * np.ones((md.mesh.numberofvertices))
+    md.balancethickness.spcthickness = np.nan * np.ones((md.mesh.numberofvertices))
+    md.damage.spcdamage = np.nan * np.ones((md.mesh.numberofvertices))
+
+    if isinstance(md.initialization.temperature, np.ndarray) and np.size(md.initialization.temperature, axis=0) == md.mesh.numberofvertices:
+        md.thermal.spctemperature = np.nan * np.ones((md.mesh.numberofvertices))
+        if hasattr(md.mesh, 'vertexonsurface'):
+            pos = np.nonzero(md.mesh.vertexonsurface)[0]
+            md.thermal.spctemperature[pos] = md.initialization.temperature[pos]  # impose observed temperature on surface
+        if not isinstance(md.basalforcings.geothermalflux, np.ndarray) or not np.size(md.basalforcings.geothermalflux, axis=0) == md.mesh.numberofvertices:
+            md.basalforcings.geothermalflux = np.zeros((md.mesh.numberofvertices))
+            md.basalforcings.geothermalflux[np.nonzero(md.mask.ocean_levelset > 0.0)] = 50.0 * pow(10.0, -3)  # 50mW/m2
+    else:
+        print('      no thermal boundary conditions created: no observed temperature found')
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/getlovenumbers.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/getlovenumbers.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/getlovenumbers.js	(revision 27955)
@@ -0,0 +1,10104 @@
+function getlovenumbers() {//{{{
+	/**
+	 * GETLOVENUMBERS: provide love numbers retrieved from,
+	 *
+	 *     http://www.srosat.com/iag-jsg/loveNb.php
+	 *
+	 * in a chosen reference frame
+	 *
+	 * Usage:
+	 *     series = getlovenumbers('type', 'loadingverticaldisplacement', 'referenceframe', 'CM', 'maxdeg', 1000);
+	 * - type = one of 'loadingverticaldisplacement', 
+	'loadinggravitationalpotential', 'loadinghorizontaldisplacement', 
+	'tidalverticaldisplacement', 'tidalgravitationalpotential', 
+	'tidalhorizontaldisplacement'
+	 * - referenceframe = one of 'CM' (default) and 'CF'
+	 * - maxdeg = default 1000
+	 *
+	 * Example:
+	 *     h = getlovenumbers('type', 'loadingverticaldisplacement', 'referenceframe', 'CM', 'maxdeg', maxdeg);
+	 *     k = getlovenumbers('type', 'loadinggravitationalpotential', 'referenceframe', 'CM', 'maxdeg', maxdeg);
+	 *     l = getlovenumbers('type', 'loadinghorizontaldisplacement', 'referenceframe', 'CM', 'maxdeg', maxdeg);
+	 *     th = getlovenumbers('type', 'tidalverticaldisplacement', 'referenceframe', 'CM', 'maxdeg', maxdeg);
+	 *     tk = getlovenumbers('type', 'tidalgravitationalpotential', 'referenceframe', 'CM', 'maxdeg', maxdeg);
+	 *     tl = getlovenumbers('type', 'tidalhorizontaldisplacement', 'referenceframe', 'CM', 'maxdeg', maxdeg);
+	 */
+
+	// Recover options
+	let options = new pairoptions(arguments);
+	let type = options.getfieldvalue('type');
+	let frame = options.getfieldvalue('referenceframe', 'CM');
+	let maxdeg = options.getfieldvalue('maxdeg', 1000);
+
+	if (maxdeg > 10000) {
+		error('PREM love numbers computed only for deg < 10,000. Request lower maxdeg');
+	}
+
+	const TYPES = [
+		'loadingverticaldisplacement',
+		'loadinggravitationalpotential',
+		'loadinghorizontaldisplacement',
+		'tidalverticaldisplacement',
+		'tidalgravitationalpotential',
+		'tidalhorizontaldisplacement'
+	];
+
+	if (!(TYPES.includes(type))) {
+		error('type should be one of \'loadingverticaldisplacement\', \'loadinggravitationalpotential\', \'loadinghorizontaldisplacement\',\'tidalverticaldisplacement\', \'tidalgravitationalpotential\', \'tidalhorizontaldisplacement\'');
+	}
+
+	let love_numbers = [
+		[0.00000000, 0.00000000, 0.00000000, 0.00000000, 0.00000000, 0.00000000],
+		[-1.28740059, -1.00000000, -0.89858519, 0.00000000, 0.00000000, 0.00000000],
+		[-1.00025365, -0.30922675, 0.02060926, 0.62933648, 0.30136172, 0.08745784],
+		[-1.06243501, -0.19927948, 0.06801636, 0.29799672, 0.09304210, 0.01525258],
+		[-1.06779588, -0.13649834, 0.05667027, 0.18024117, 0.04181593, 0.01055799],
+		[-1.10365923, -0.10736896, 0.04401221, 0.13257950, 0.02455390, 0.00874595],
+		[-1.16440348, -0.09295485, 0.03638747, 0.10999739, 0.01694141, 0.00701045],
+		[-1.23634156, -0.08469861, 0.03202759, 0.09727833, 0.01279626, 0.00556581],
+		[-1.31140380, -0.07921412, 0.02937593, 0.08896691, 0.01019313, 0.00445157],
+		[-1.38582399, -0.07513541, 0.02762338, 0.08291950, 0.00840274, 0.00360620],
+		[-1.45807465, -0.07187005, 0.02638627, 0.07819716, 0.00709641, 0.00295944],
+		[-1.52763314, -0.06913154, 0.02547640, 0.07433538, 0.00610349, 0.00245649],
+		[-1.59437866, -0.06676258, 0.02479080, 0.07107472, 0.00532548, 0.00205857],
+		[-1.65833071, -0.06466619, 0.02426511, 0.06825469, 0.00470107, 0.00173889],
+		[-1.71954820, -0.06277732, 0.02385464, 0.06576832, 0.00418998, 0.00147872],
+		[-1.77809640, -0.06105001, 0.02352654, 0.06354080, 0.00376467, 0.00126474],
+		[-1.83403970, -0.05945081, 0.02325609, 0.06151811, 0.00340573, 0.00108719],
+		[-1.88744242, -0.05795502, 0.02302469, 0.05966045, 0.00309910, 0.00093879],
+		[-1.93837115, -0.05654418, 0.02281843, 0.05793806, 0.00283441, 0.00081397],
+		[-1.98689666, -0.05520447, 0.02262706, 0.05632844, 0.00260382, 0.00070843],
+		[-2.03309477, -0.05392545, 0.02244322, 0.05481440, 0.00240132, 0.00061877],
+		[-2.07704643, -0.05269926, 0.02226173, 0.05338269, 0.00222224, 0.00054227],
+		[-2.11883714, -0.05151988, 0.02207909, 0.05202300, 0.00206289, 0.00047675],
+		[-2.15855611, -0.05038274, 0.02189307, 0.05072723, 0.00192031, 0.00042043],
+		[-2.19629514, -0.04928430, 0.02170238, 0.04948894, 0.00179212, 0.00037187],
+		[-2.23214747, -0.04822179, 0.02150643, 0.04830294, 0.00167634, 0.00032986],
+		[-2.26620674, -0.04719301, 0.02130509, 0.04716500, 0.00157138, 0.00029341],
+		[-2.29856595, -0.04619619, 0.02109858, 0.04607163, 0.00147587, 0.00026171],
+		[-2.32931659, -0.04522983, 0.02088735, 0.04501989, 0.00138869, 0.00023405],
+		[-2.35854794, -0.04429270, 0.02067197, 0.04400725, 0.00130886, 0.00020985],
+		[-2.38634650, -0.04338368, 0.02045310, 0.04303154, 0.00123559, 0.00018864],
+		[-2.41279547, -0.04250179, 0.02023142, 0.04209082, 0.00116814, 0.00017000],
+		[-2.43797451, -0.04164613, 0.02000761, 0.04118337, 0.00110593, 0.00015358],
+		[-2.46195951, -0.04081583, 0.01978231, 0.04030761, 0.00104841, 0.00013908],
+		[-2.48482241, -0.04001011, 0.01955614, 0.03946212, 0.00099513, 0.00012625],
+		[-2.50663126, -0.03922817, 0.01932966, 0.03864555, 0.00094568, 0.00011488],
+		[-2.52745016, -0.03846928, 0.01910337, 0.03785666, 0.00089971, 0.00010477],
+		[-2.54733938, -0.03773269, 0.01887774, 0.03709428, 0.00085689, 0.00009577],
+		[-2.56635547, -0.03701769, 0.01865317, 0.03635731, 0.00081696, 0.00008775],
+		[-2.58455138, -0.03632358, 0.01843000, 0.03564469, 0.00077965, 0.00008057],
+		[-2.60197665, -0.03564968, 0.01820854, 0.03495543, 0.00074474, 0.00007415],
+		[-2.61867756, -0.03499532, 0.01798905, 0.03428858, 0.00071205, 0.00006839],
+		[-2.63469733, -0.03435985, 0.01777176, 0.03364323, 0.00068137, 0.00006322],
+		[-2.65007629, -0.03374263, 0.01755683, 0.03301851, 0.00065257, 0.00005857],
+		[-2.66485208, -0.03314303, 0.01734443, 0.03241359, 0.00062548, 0.00005438],
+		[-2.67905981, -0.03256047, 0.01713468, 0.03182769, 0.00059998, 0.00005059],
+		[-2.69273222, -0.03199435, 0.01692767, 0.03126003, 0.00057595, 0.00004717],
+		[-2.70589990, -0.03144411, 0.01672347, 0.03070991, 0.00055327, 0.00004407],
+		[-2.71859139, -0.03090919, 0.01652215, 0.03017662, 0.00053186, 0.00004127],
+		[-2.73083334, -0.03038907, 0.01632374, 0.02965950, 0.00051162, 0.00003872],
+		[-2.74265068, -0.02988323, 0.01612826, 0.02915791, 0.00049246, 0.00003641],
+		[-2.75406669, -0.02939118, 0.01593573, 0.02867125, 0.00047432, 0.00003431],
+		[-2.76510320, -0.02891245, 0.01574615, 0.02819894, 0.00045712, 0.00003239],
+		[-2.77578063, -0.02844656, 0.01555950, 0.02774043, 0.00044081, 0.00003065],
+		[-2.78611812, -0.02799309, 0.01537578, 0.02729517, 0.00042531, 0.00002905],
+		[-2.79613364, -0.02755161, 0.01519496, 0.02686267, 0.00041059, 0.00002760],
+		[-2.80584405, -0.02712170, 0.01501701, 0.02644244, 0.00039659, 0.00002627],
+		[-2.81526521, -0.02670298, 0.01484191, 0.02603402, 0.00038326, 0.00002505],
+		[-2.82441204, -0.02629506, 0.01466961, 0.02563696, 0.00037057, 0.00002393],
+		[-2.83329857, -0.02589759, 0.01450009, 0.02525085, 0.00035847, 0.00002291],
+		[-2.84193804, -0.02551021, 0.01433329, 0.02487527, 0.00034693, 0.00002197],
+		[-2.85034293, -0.02513260, 0.01416919, 0.02450984, 0.00033591, 0.00002111],
+		[-2.85852503, -0.02476443, 0.01400773, 0.02415420, 0.00032539, 0.00002031],
+		[-2.86649548, -0.02440538, 0.01384888, 0.02380798, 0.00031534, 0.00001958],
+		[-2.87426481, -0.02405518, 0.01369258, 0.02347086, 0.00030573, 0.00001891],
+		[-2.88184299, -0.02371352, 0.01353880, 0.02314250, 0.00029653, 0.00001829],
+		[-2.88923945, -0.02338014, 0.01338749, 0.02282261, 0.00028772, 0.00001772],
+		[-2.89646316, -0.02305478, 0.01323861, 0.02251087, 0.00027928, 0.00001720],
+		[-2.90352261, -0.02273718, 0.01309211, 0.02220702, 0.00027120, 0.00001671],
+		[-2.91042585, -0.02242710, 0.01294795, 0.02191078, 0.00026344, 0.00001626],
+		[-2.91718054, -0.02212431, 0.01280609, 0.02162189, 0.00025600, 0.00001585],
+		[-2.92379397, -0.02182859, 0.01266648, 0.02134010, 0.00024886, 0.00001546],
+		[-2.93027306, -0.02153971, 0.01252908, 0.02106517, 0.00024200, 0.00001511],
+		[-2.93662439, -0.02125748, 0.01239386, 0.02079689, 0.00023540, 0.00001478],
+		[-2.94285425, -0.02098169, 0.01226077, 0.02053502, 0.00022907, 0.00001447],
+		[-2.94896860, -0.02071215, 0.01212977, 0.02027936, 0.00022297, 0.00001419],
+		[-2.95497314, -0.02044868, 0.01200082, 0.02002971, 0.00021710, 0.00001392],
+		[-2.96087331, -0.02019110, 0.01187388, 0.01978587, 0.00021146, 0.00001368],
+		[-2.96667427, -0.01993924, 0.01174893, 0.01954767, 0.00020602, 0.00001345],
+		[-2.97238097, -0.01969293, 0.01162591, 0.01931492, 0.00020078, 0.00001324],
+		[-2.97799813, -0.01945201, 0.01150481, 0.01908746, 0.00019573, 0.00001305],
+		[-2.98353025, -0.01921634, 0.01138557, 0.01886511, 0.00019086, 0.00001286],
+		[-2.98898162, -0.01898576, 0.01126817, 0.01864773, 0.00018616, 0.00001269],
+		[-2.99435636, -0.01876014, 0.01115257, 0.01843516, 0.00018162, 0.00001253],
+		[-2.99965838, -0.01853932, 0.01103875, 0.01822725, 0.00017725, 0.00001238],
+		[-3.00489143, -0.01832319, 0.01092666, 0.01802387, 0.00017302, 0.00001224],
+		[-3.01005909, -0.01811161, 0.01081628, 0.01782489, 0.00016893, 0.00001211],
+		[-3.01516479, -0.01790446, 0.01070757, 0.01763017, 0.00016499, 0.00001199],
+		[-3.02021180, -0.01770162, 0.01060052, 0.01743958, 0.00016117, 0.00001187],
+		[-3.02520323, -0.01750298, 0.01049508, 0.01725302, 0.00015748, 0.00001177],
+		[-3.03014209, -0.01730842, 0.01039123, 0.01707036, 0.00015391, 0.00001166],
+		[-3.03503122, -0.01711783, 0.01028894, 0.01689149, 0.00015045, 0.00001157],
+		[-3.03987336, -0.01693111, 0.01018819, 0.01671631, 0.00014711, 0.00001148],
+		[-3.04467112, -0.01674816, 0.01008894, 0.01654470, 0.00014387, 0.00001139],
+		[-3.04942699, -0.01656889, 0.00999117, 0.01637658, 0.00014073, 0.00001131],
+		[-3.05414335, -0.01639319, 0.00989485, 0.01621185, 0.00013769, 0.00001124],
+		[-3.05882250, -0.01622097, 0.00979997, 0.01605041, 0.00013474, 0.00001116],
+		[-3.06346660, -0.01605215, 0.00970649, 0.01589217, 0.00013189, 0.00001109],
+		[-3.06807773, -0.01588664, 0.00961439, 0.01573705, 0.00012912, 0.00001103],
+		[-3.07265789, -0.01572436, 0.00952364, 0.01558496, 0.00012643, 0.00001097],
+		[-3.07720897, -0.01556522, 0.00943423, 0.01543582, 0.00012382, 0.00001091],
+		[-3.08173279, -0.01540916, 0.00934613, 0.01528956, 0.00012129, 0.00001085],
+		[-3.08623109, -0.01525608, 0.00925931, 0.01514610, 0.00011883, 0.00001080],
+		[-3.09070551, -0.01510592, 0.00917376, 0.01500536, 0.00011645, 0.00001074],
+		[-3.09515765, -0.01495861, 0.00908946, 0.01486728, 0.00011413, 0.00001069],
+		[-3.09958899, -0.01481408, 0.00900637, 0.01473179, 0.00011188, 0.00001064],
+		[-3.10400100, -0.01467225, 0.00892449, 0.01459882, 0.00010969, 0.00001060],
+		[-3.10839504, -0.01453308, 0.00884379, 0.01446831, 0.00010756, 0.00001055],
+		[-3.11277241, -0.01439648, 0.00876425, 0.01434019, 0.00010549, 0.00001051],
+		[-3.11713438, -0.01426240, 0.00868586, 0.01421441, 0.00010348, 0.00001047],
+		[-3.12148213, -0.01413079, 0.00860858, 0.01409091, 0.00010152, 0.00001042],
+		[-3.12581680, -0.01400157, 0.00853241, 0.01396963, 0.00009962, 0.00001038],
+		[-3.13013947, -0.01387471, 0.00845733, 0.01385052, 0.00009776, 0.00001034],
+		[-3.13445117, -0.01375013, 0.00838331, 0.01373352, 0.00009596, 0.00001031],
+		[-3.13875289, -0.01362779, 0.00831034, 0.01361859, 0.00009420, 0.00001027],
+		[-3.14304556, -0.01350764, 0.00823841, 0.01350567, 0.00009249, 0.00001023],
+		[-3.14733008, -0.01338963, 0.00816748, 0.01339472, 0.00009083, 0.00001020],
+		[-3.15160728, -0.01327370, 0.00809756, 0.01328569, 0.00008920, 0.00001016],
+		[-3.15587797, -0.01315981, 0.00802862, 0.01317853, 0.00008762, 0.00001012],
+		[-3.16014293, -0.01304792, 0.00796064, 0.01307320, 0.00008608, 0.00001009],
+		[-3.16440288, -0.01293797, 0.00789361, 0.01296967, 0.00008458, 0.00001006],
+		[-3.16865852, -0.01282993, 0.00782751, 0.01286788, 0.00008311, 0.00001002],
+		[-3.17291049, -0.01272375, 0.00776233, 0.01276779, 0.00008169, 0.00000999],
+		[-3.17715942, -0.01261940, 0.00769805, 0.01266938, 0.00008029, 0.00000996],
+		[-3.18140591, -0.01251682, 0.00763466, 0.01257259, 0.00007893, 0.00000992],
+		[-3.18565052, -0.01241598, 0.00757215, 0.01247740, 0.00007761, 0.00000989],
+		[-3.18989378, -0.01231685, 0.00751049, 0.01238376, 0.00007631, 0.00000986],
+		[-3.19413619, -0.01221938, 0.00744968, 0.01229165, 0.00007505, 0.00000983],
+		[-3.19837823, -0.01212354, 0.00738970, 0.01220103, 0.00007381, 0.00000979],
+		[-3.20262035, -0.01202930, 0.00733053, 0.01211186, 0.00007261, 0.00000976],
+		[-3.20686298, -0.01193661, 0.00727217, 0.01202412, 0.00007143, 0.00000973],
+		[-3.21110653, -0.01184546, 0.00721461, 0.01193777, 0.00007028, 0.00000970],
+		[-3.21535137, -0.01175579, 0.00715782, 0.01185279, 0.00006916, 0.00000967],
+		[-3.21959786, -0.01166759, 0.00710179, 0.01176914, 0.00006806, 0.00000964],
+		[-3.22384634, -0.01158082, 0.00704652, 0.01168680, 0.00006699, 0.00000961],
+		[-3.22809714, -0.01149545, 0.00699199, 0.01160573, 0.00006594, 0.00000957],
+		[-3.23235055, -0.01141146, 0.00693819, 0.01152591, 0.00006492, 0.00000954],
+		[-3.23660685, -0.01132880, 0.00688511, 0.01144732, 0.00006392, 0.00000951],
+		[-3.24086631, -0.01124746, 0.00683273, 0.01136993, 0.00006294, 0.00000948],
+		[-3.24512918, -0.01116741, 0.00678105, 0.01129371, 0.00006198, 0.00000945],
+		[-3.24939569, -0.01108862, 0.00673005, 0.01121864, 0.00006105, 0.00000942],
+		[-3.25366606, -0.01101107, 0.00667973, 0.01114470, 0.00006013, 0.00000939],
+		[-3.25794050, -0.01093473, 0.00663007, 0.01107186, 0.00005923, 0.00000936],
+		[-3.26221918, -0.01085957, 0.00658106, 0.01100010, 0.00005835, 0.00000932],
+		[-3.26650230, -0.01078557, 0.00653269, 0.01092939, 0.00005750, 0.00000929],
+		[-3.27079000, -0.01071272, 0.00648495, 0.01085973, 0.00005665, 0.00000926],
+		[-3.27508246, -0.01064097, 0.00643784, 0.01079108, 0.00005583, 0.00000923],
+		[-3.27937980, -0.01057032, 0.00639134, 0.01072343, 0.00005503, 0.00000920],
+		[-3.28368216, -0.01050074, 0.00634544, 0.01065676, 0.00005424, 0.00000917],
+		[-3.28798965, -0.01043222, 0.00630013, 0.01059104, 0.00005346, 0.00000914],
+		[-3.29230239, -0.01036472, 0.00625541, 0.01052626, 0.00005271, 0.00000910],
+		[-3.29662047, -0.01029823, 0.00621126, 0.01046241, 0.00005196, 0.00000907],
+		[-3.30094399, -0.01023273, 0.00616768, 0.01039945, 0.00005124, 0.00000904],
+		[-3.30527303, -0.01016819, 0.00612465, 0.01033738, 0.00005053, 0.00000901],
+		[-3.30960766, -0.01010461, 0.00608218, 0.01027618, 0.00004983, 0.00000898],
+		[-3.31394795, -0.01004197, 0.00604024, 0.01021583, 0.00004914, 0.00000895],
+		[-3.31829395, -0.00998024, 0.00599883, 0.01015631, 0.00004847, 0.00000891],
+		[-3.32264573, -0.00991940, 0.00595795, 0.01009762, 0.00004781, 0.00000888],
+		[-3.32700331, -0.00985945, 0.00591759, 0.01003973, 0.00004717, 0.00000885],
+		[-3.33136675, -0.00980035, 0.00587773, 0.00998262, 0.00004654, 0.00000882],
+		[-3.33573607, -0.00974211, 0.00583838, 0.00992630, 0.00004592, 0.00000879],
+		[-3.34011130, -0.00968470, 0.00579951, 0.00987073, 0.00004531, 0.00000875],
+		[-3.34449246, -0.00962810, 0.00576113, 0.00981591, 0.00004471, 0.00000872],
+		[-3.34887956, -0.00957230, 0.00572323, 0.00976182, 0.00004413, 0.00000869],
+		[-3.35327261, -0.00951729, 0.00568581, 0.00970845, 0.00004355, 0.00000866],
+		[-3.35767163, -0.00946304, 0.00564884, 0.00965578, 0.00004299, 0.00000863],
+		[-3.36207660, -0.00940956, 0.00561233, 0.00960381, 0.00004244, 0.00000859],
+		[-3.36648753, -0.00935681, 0.00557627, 0.00955252, 0.00004189, 0.00000856],
+		[-3.37090440, -0.00930480, 0.00554066, 0.00950190, 0.00004136, 0.00000853],
+		[-3.37532721, -0.00925350, 0.00550548, 0.00945194, 0.00004084, 0.00000850],
+		[-3.37975593, -0.00920290, 0.00547073, 0.00940262, 0.00004032, 0.00000847],
+		[-3.38419056, -0.00915300, 0.00543641, 0.00935393, 0.00003982, 0.00000843],
+		[-3.38863105, -0.00910377, 0.00540251, 0.00930586, 0.00003932, 0.00000840],
+		[-3.39307740, -0.00905520, 0.00536901, 0.00925841, 0.00003884, 0.00000837],
+		[-3.39752956, -0.00900729, 0.00533593, 0.00921156, 0.00003836, 0.00000834],
+		[-3.40198751, -0.00896002, 0.00530324, 0.00916530, 0.00003789, 0.00000830],
+		[-3.40645121, -0.00891338, 0.00527095, 0.00911962, 0.00003743, 0.00000827],
+		[-3.41092063, -0.00886736, 0.00523904, 0.00907451, 0.00003697, 0.00000824],
+		[-3.41539571, -0.00882195, 0.00520752, 0.00902996, 0.00003653, 0.00000821],
+		[-3.41987643, -0.00877713, 0.00517637, 0.00898596, 0.00003609, 0.00000817],
+		[-3.42436272, -0.00873290, 0.00514560, 0.00894250, 0.00003566, 0.00000814],
+		[-3.42885456, -0.00868925, 0.00511520, 0.00889958, 0.00003524, 0.00000811],
+		[-3.43335188, -0.00864617, 0.00508515, 0.00885718, 0.00003482, 0.00000808],
+		[-3.43785464, -0.00860364, 0.00505546, 0.00881530, 0.00003441, 0.00000804],
+		[-3.44236278, -0.00856166, 0.00502613, 0.00877392, 0.00003401, 0.00000801],
+		[-3.44687625, -0.00852021, 0.00499714, 0.00873304, 0.00003361, 0.00000798],
+		[-3.45139500, -0.00847930, 0.00496849, 0.00869264, 0.00003323, 0.00000795],
+		[-3.45591895, -0.00843890, 0.00494017, 0.00865273, 0.00003284, 0.00000791],
+		[-3.46044807, -0.00839902, 0.00491219, 0.00861330, 0.00003247, 0.00000788],
+		[-3.46498227, -0.00835964, 0.00488454, 0.00857433, 0.00003210, 0.00000785],
+		[-3.46952151, -0.00832075, 0.00485721, 0.00853582, 0.00003173, 0.00000782],
+		[-3.47406572, -0.00828234, 0.00483019, 0.00849776, 0.00003138, 0.00000778],
+		[-3.47861484, -0.00824442, 0.00480349, 0.00846014, 0.00003102, 0.00000775],
+		[-3.48316880, -0.00820696, 0.00477710, 0.00842296, 0.00003068, 0.00000772],
+		[-3.48772753, -0.00816996, 0.00475102, 0.00838622, 0.00003034, 0.00000769],
+		[-3.49229097, -0.00813342, 0.00472523, 0.00834989, 0.00003000, 0.00000766],
+		[-3.49685904, -0.00809733, 0.00469975, 0.00831398, 0.00002967, 0.00000762],
+		[-3.50143169, -0.00806167, 0.00467455, 0.00827848, 0.00002935, 0.00000759],
+		[-3.50600884, -0.00802644, 0.00464964, 0.00824338, 0.00002903, 0.00000756],
+		[-3.51059042, -0.00799164, 0.00462502, 0.00820868, 0.00002871, 0.00000753],
+		[-3.51517637, -0.00795726, 0.00460068, 0.00817437, 0.00002840, 0.00000750],
+		[-3.51976660, -0.00792329, 0.00457662, 0.00814045, 0.00002810, 0.00000746],
+		[-3.52436105, -0.00788972, 0.00455283, 0.00810691, 0.00002779, 0.00000743],
+		[-3.52895964, -0.00785655, 0.00452930, 0.00807373, 0.00002750, 0.00000740],
+		[-3.53356231, -0.00782377, 0.00450605, 0.00804093, 0.00002721, 0.00000737],
+		[-3.53816898, -0.00779138, 0.00448306, 0.00800849, 0.00002692, 0.00000734],
+		[-3.54277957, -0.00775937, 0.00446032, 0.00797640, 0.00002664, 0.00000730],
+		[-3.54739402, -0.00772773, 0.00443784, 0.00794466, 0.00002636, 0.00000727],
+		[-3.55201224, -0.00769645, 0.00441562, 0.00791327, 0.00002608, 0.00000724],
+		[-3.55663417, -0.00766554, 0.00439364, 0.00788222, 0.00002581, 0.00000721],
+		[-3.56125973, -0.00763498, 0.00437190, 0.00785151, 0.00002555, 0.00000718],
+		[-3.56588885, -0.00760478, 0.00435041, 0.00782113, 0.00002528, 0.00000715],
+		[-3.57052145, -0.00757491, 0.00432916, 0.00779107, 0.00002502, 0.00000712],
+		[-3.57515745, -0.00754539, 0.00430814, 0.00776133, 0.00002477, 0.00000708],
+		[-3.57979678, -0.00751620, 0.00428736, 0.00773191, 0.00002452, 0.00000705],
+		[-3.58443937, -0.00748734, 0.00426681, 0.00770279, 0.00002427, 0.00000702],
+		[-3.58908514, -0.00745880, 0.00424648, 0.00767399, 0.00002403, 0.00000699],
+		[-3.59373401, -0.00743059, 0.00422637, 0.00764549, 0.00002379, 0.00000696],
+		[-3.59838592, -0.00740268, 0.00420649, 0.00761728, 0.00002355, 0.00000693],
+		[-3.60304078, -0.00737509, 0.00418682, 0.00758937, 0.00002331, 0.00000690],
+		[-3.60769852, -0.00734780, 0.00416737, 0.00756175, 0.00002308, 0.00000687],
+		[-3.61235907, -0.00732081, 0.00414813, 0.00753441, 0.00002286, 0.00000684],
+		[-3.61702235, -0.00729411, 0.00412910, 0.00750735, 0.00002263, 0.00000681],
+		[-3.62168828, -0.00726771, 0.00411028, 0.00748058, 0.00002241, 0.00000678],
+		[-3.62635680, -0.00724159, 0.00409166, 0.00745407, 0.00002219, 0.00000674],
+		[-3.63102782, -0.00721575, 0.00407325, 0.00742783, 0.00002198, 0.00000671],
+		[-3.63570128, -0.00719020, 0.00405503, 0.00740186, 0.00002176, 0.00000668],
+		[-3.64037709, -0.00716491, 0.00403700, 0.00737615, 0.00002156, 0.00000665],
+		[-3.64505519, -0.00713990, 0.00401918, 0.00735070, 0.00002135, 0.00000662],
+		[-3.64973550, -0.00711515, 0.00400154, 0.00732550, 0.00002115, 0.00000659],
+		[-3.65441795, -0.00709066, 0.00398409, 0.00730055, 0.00002094, 0.00000656],
+		[-3.65910247, -0.00706643, 0.00396683, 0.00727585, 0.00002075, 0.00000653],
+		[-3.66378898, -0.00704246, 0.00394975, 0.00725140, 0.00002055, 0.00000650],
+		[-3.66847740, -0.00701873, 0.00393286, 0.00722718, 0.00002036, 0.00000647],
+		[-3.67316767, -0.00699526, 0.00391614, 0.00720320, 0.00002017, 0.00000644],
+		[-3.67785972, -0.00697202, 0.00389960, 0.00717946, 0.00001998, 0.00000641],
+		[-3.68255347, -0.00694903, 0.00388324, 0.00715594, 0.00001979, 0.00000638],
+		[-3.68724885, -0.00692627, 0.00386705, 0.00713266, 0.00001961, 0.00000636],
+		[-3.69194579, -0.00690374, 0.00385103, 0.00710959, 0.00001943, 0.00000633],
+		[-3.69664421, -0.00688145, 0.00383518, 0.00708675, 0.00001925, 0.00000630],
+		[-3.70134406, -0.00685938, 0.00381949, 0.00706413, 0.00001907, 0.00000627],
+		[-3.70604525, -0.00683753, 0.00380397, 0.00704173, 0.00001890, 0.00000624],
+		[-3.71074772, -0.00681590, 0.00378861, 0.00701953, 0.00001873, 0.00000621],
+		[-3.71545140, -0.00679449, 0.00377342, 0.00699755, 0.00001856, 0.00000618],
+		[-3.72015622, -0.00677330, 0.00375838, 0.00697577, 0.00001839, 0.00000615],
+		[-3.72486211, -0.00675231, 0.00374349, 0.00695420, 0.00001823, 0.00000612],
+		[-3.72956899, -0.00673153, 0.00372877, 0.00693283, 0.00001806, 0.00000609],
+		[-3.73427682, -0.00671096, 0.00371419, 0.00691165, 0.00001790, 0.00000607],
+		[-3.73898550, -0.00669059, 0.00369976, 0.00689068, 0.00001774, 0.00000604],
+		[-3.74369498, -0.00667042, 0.00368549, 0.00686989, 0.00001759, 0.00000601],
+		[-3.74840519, -0.00665044, 0.00367136, 0.00684930, 0.00001743, 0.00000598],
+		[-3.75311607, -0.00663066, 0.00365738, 0.00682890, 0.00001728, 0.00000595],
+		[-3.75782754, -0.00661107, 0.00364354, 0.00680868, 0.00001713, 0.00000592],
+		[-3.76253955, -0.00659167, 0.00362984, 0.00678865, 0.00001698, 0.00000590],
+		[-3.76725202, -0.00657245, 0.00361628, 0.00676880, 0.00001683, 0.00000587],
+		[-3.77196489, -0.00655341, 0.00360286, 0.00674913, 0.00001668, 0.00000584],
+		[-3.77667809, -0.00653456, 0.00358958, 0.00672963, 0.00001654, 0.00000581],
+		[-3.78139156, -0.00651589, 0.00357643, 0.00671031, 0.00001640, 0.00000579],
+		[-3.78610525, -0.00649739, 0.00356342, 0.00669116, 0.00001625, 0.00000576],
+		[-3.79081907, -0.00647906, 0.00355053, 0.00667218, 0.00001612, 0.00000573],
+		[-3.79553298, -0.00646091, 0.00353778, 0.00665337, 0.00001598, 0.00000570],
+		[-3.80024690, -0.00644292, 0.00352516, 0.00663472, 0.00001584, 0.00000568],
+		[-3.80496078, -0.00642510, 0.00351266, 0.00661624, 0.00001571, 0.00000565],
+		[-3.80967455, -0.00640745, 0.00350029, 0.00659792, 0.00001557, 0.00000562],
+		[-3.81438815, -0.00638996, 0.00348804, 0.00657976, 0.00001544, 0.00000560],
+		[-3.81910152, -0.00637262, 0.00347592, 0.00656176, 0.00001531, 0.00000557],
+		[-3.82381460, -0.00635545, 0.00346392, 0.00654391, 0.00001519, 0.00000554],
+		[-3.82852732, -0.00633843, 0.00345204, 0.00652622, 0.00001506, 0.00000552],
+		[-3.83323964, -0.00632157, 0.00344027, 0.00650867, 0.00001493, 0.00000549],
+		[-3.83795149, -0.00630485, 0.00342863, 0.00649128, 0.00001481, 0.00000546],
+		[-3.84266280, -0.00628829, 0.00341709, 0.00647404, 0.00001469, 0.00000544],
+		[-3.84737353, -0.00627187, 0.00340568, 0.00645694, 0.00001457, 0.00000541],
+		[-3.85208361, -0.00625560, 0.00339437, 0.00643998, 0.00001445, 0.00000538],
+		[-3.85679299, -0.00623948, 0.00338318, 0.00642317, 0.00001433, 0.00000536],
+		[-3.86150160, -0.00622349, 0.00337210, 0.00640650, 0.00001421, 0.00000533],
+		[-3.86620939, -0.00620765, 0.00336112, 0.00638997, 0.00001410, 0.00000531],
+		[-3.87091631, -0.00619194, 0.00335026, 0.00637358, 0.00001398, 0.00000528],
+		[-3.87562229, -0.00617637, 0.00333950, 0.00635732, 0.00001387, 0.00000526],
+		[-3.88032729, -0.00616094, 0.00332885, 0.00634120, 0.00001376, 0.00000523],
+		[-3.88503124, -0.00614564, 0.00331830, 0.00632520, 0.00001364, 0.00000521],
+		[-3.88973410, -0.00613047, 0.00330785, 0.00630934, 0.00001354, 0.00000518],
+		[-3.89443580, -0.00611543, 0.00329750, 0.00629361, 0.00001343, 0.00000515],
+		[-3.89913629, -0.00610051, 0.00328726, 0.00627801, 0.00001332, 0.00000513],
+		[-3.90383552, -0.00608573, 0.00327711, 0.00626253, 0.00001321, 0.00000510],
+		[-3.90853343, -0.00607107, 0.00326707, 0.00624718, 0.00001311, 0.00000508],
+		[-3.91322998, -0.00605653, 0.00325712, 0.00623195, 0.00001301, 0.00000506],
+		[-3.91792511, -0.00604212, 0.00324726, 0.00621684, 0.00001290, 0.00000503],
+		[-3.92261876, -0.00602782, 0.00323750, 0.00620185, 0.00001280, 0.00000501],
+		[-3.92731089, -0.00601364, 0.00322784, 0.00618698, 0.00001270, 0.00000498],
+		[-3.93200144, -0.00599958, 0.00321826, 0.00617223, 0.00001260, 0.00000496],
+		[-3.93669036, -0.00598564, 0.00320878, 0.00615760, 0.00001250, 0.00000493],
+		[-3.94137761, -0.00597181, 0.00319939, 0.00614308, 0.00001241, 0.00000491],
+		[-3.94606313, -0.00595809, 0.00319009, 0.00612867, 0.00001231, 0.00000488],
+		[-3.95074687, -0.00594449, 0.00318088, 0.00611438, 0.00001221, 0.00000486],
+		[-3.95542878, -0.00593099, 0.00317175, 0.00610019, 0.00001212, 0.00000484],
+		[-3.96010882, -0.00591761, 0.00316271, 0.00608612, 0.00001203, 0.00000481],
+		[-3.96478693, -0.00590433, 0.00315376, 0.00607215, 0.00001193, 0.00000479],
+		[-3.96946306, -0.00589116, 0.00314489, 0.00605829, 0.00001184, 0.00000477],
+		[-3.97413718, -0.00587809, 0.00313611, 0.00604454, 0.00001175, 0.00000474],
+		[-3.97880922, -0.00586512, 0.00312740, 0.00603089, 0.00001166, 0.00000472],
+		[-3.98347915, -0.00585226, 0.00311878, 0.00601735, 0.00001157, 0.00000470],
+		[-3.98814692, -0.00583950, 0.00311024, 0.00600390, 0.00001149, 0.00000467],
+		[-3.99281247, -0.00582684, 0.00310178, 0.00599056, 0.00001140, 0.00000465],
+		[-3.99747577, -0.00581428, 0.00309340, 0.00597732, 0.00001131, 0.00000463],
+		[-4.00213677, -0.00580181, 0.00308510, 0.00596417, 0.00001123, 0.00000460],
+		[-4.00679542, -0.00578944, 0.00307688, 0.00595113, 0.00001114, 0.00000458],
+		[-4.01145168, -0.00577717, 0.00306873, 0.00593818, 0.00001106, 0.00000456],
+		[-4.01610551, -0.00576499, 0.00306065, 0.00592532, 0.00001098, 0.00000454],
+		[-4.02075685, -0.00575290, 0.00305266, 0.00591256, 0.00001090, 0.00000451],
+		[-4.02540567, -0.00574091, 0.00304473, 0.00589990, 0.00001082, 0.00000449],
+		[-4.03005191, -0.00572900, 0.00303688, 0.00588732, 0.00001073, 0.00000447],
+		[-4.03469555, -0.00571719, 0.00302910, 0.00587484, 0.00001066, 0.00000445],
+		[-4.03933654, -0.00570546, 0.00302139, 0.00586244, 0.00001058, 0.00000443],
+		[-4.04397482, -0.00569382, 0.00301375, 0.00585014, 0.00001050, 0.00000440],
+		[-4.04861037, -0.00568227, 0.00300619, 0.00583792, 0.00001042, 0.00000438],
+		[-4.05324314, -0.00567080, 0.00299869, 0.00582579, 0.00001035, 0.00000436],
+		[-4.05787308, -0.00565942, 0.00299126, 0.00581375, 0.00001027, 0.00000434],
+		[-4.06250017, -0.00564812, 0.00298390, 0.00580179, 0.00001019, 0.00000432],
+		[-4.06712435, -0.00563690, 0.00297660, 0.00578992, 0.00001012, 0.00000430],
+		[-4.07174558, -0.00562577, 0.00296937, 0.00577813, 0.00001005, 0.00000427],
+		[-4.07636383, -0.00561471, 0.00296221, 0.00576642, 0.00000997, 0.00000425],
+		[-4.08097906, -0.00560374, 0.00295511, 0.00575480, 0.00000990, 0.00000423],
+		[-4.08559122, -0.00559284, 0.00294807, 0.00574325, 0.00000983, 0.00000421],
+		[-4.09020028, -0.00558202, 0.00294110, 0.00573179, 0.00000976, 0.00000419],
+		[-4.09480620, -0.00557128, 0.00293419, 0.00572040, 0.00000969, 0.00000417],
+		[-4.09940894, -0.00556061, 0.00292734, 0.00570909, 0.00000962, 0.00000415],
+		[-4.10400846, -0.00555002, 0.00292056, 0.00569786, 0.00000955, 0.00000413],
+		[-4.10860473, -0.00553950, 0.00291383, 0.00568670, 0.00000948, 0.00000411],
+		[-4.11319770, -0.00552906, 0.00290717, 0.00567562, 0.00000942, 0.00000409],
+		[-4.11778734, -0.00551869, 0.00290056, 0.00566462, 0.00000935, 0.00000407],
+		[-4.12237362, -0.00550839, 0.00289401, 0.00565369, 0.00000928, 0.00000405],
+		[-4.12695649, -0.00549816, 0.00288752, 0.00564283, 0.00000922, 0.00000403],
+		[-4.13153592, -0.00548801, 0.00288109, 0.00563204, 0.00000915, 0.00000401],
+		[-4.13611188, -0.00547792, 0.00287471, 0.00562133, 0.00000909, 0.00000399],
+		[-4.14068433, -0.00546790, 0.00286839, 0.00561069, 0.00000902, 0.00000397],
+		[-4.14525323, -0.00545795, 0.00286213, 0.00560011, 0.00000896, 0.00000395],
+		[-4.14981854, -0.00544806, 0.00285592, 0.00558961, 0.00000890, 0.00000393],
+		[-4.15438025, -0.00543824, 0.00284976, 0.00557918, 0.00000883, 0.00000391],
+		[-4.15893830, -0.00542849, 0.00284366, 0.00556881, 0.00000877, 0.00000389],
+		[-4.16349267, -0.00541880, 0.00283761, 0.00555851, 0.00000871, 0.00000387],
+		[-4.16804332, -0.00540918, 0.00283162, 0.00554827, 0.00000865, 0.00000385],
+		[-4.17259021, -0.00539962, 0.00282567, 0.00553811, 0.00000859, 0.00000383],
+		[-4.17713333, -0.00539012, 0.00281978, 0.00552800, 0.00000853, 0.00000381],
+		[-4.18167262, -0.00538069, 0.00281394, 0.00551796, 0.00000847, 0.00000379],
+		[-4.18620807, -0.00537131, 0.00280815, 0.00550799, 0.00000841, 0.00000377],
+		[-4.19073963, -0.00536200, 0.00280241, 0.00549808, 0.00000836, 0.00000375],
+		[-4.19526728, -0.00535274, 0.00279671, 0.00548823, 0.00000830, 0.00000373],
+		[-4.19979098, -0.00534355, 0.00279107, 0.00547844, 0.00000824, 0.00000372],
+		[-4.20431070, -0.00533441, 0.00278548, 0.00546871, 0.00000818, 0.00000370],
+		[-4.20882641, -0.00532534, 0.00277993, 0.00545905, 0.00000813, 0.00000368],
+		[-4.21333809, -0.00531632, 0.00277443, 0.00544944, 0.00000807, 0.00000366],
+		[-4.21784569, -0.00530735, 0.00276897, 0.00543989, 0.00000802, 0.00000364],
+		[-4.22234919, -0.00529845, 0.00276357, 0.00543040, 0.00000796, 0.00000362],
+		[-4.22684856, -0.00528959, 0.00275820, 0.00542097, 0.00000791, 0.00000361],
+		[-4.23134377, -0.00528080, 0.00275289, 0.00541160, 0.00000786, 0.00000359],
+		[-4.23583479, -0.00527206, 0.00274762, 0.00540228, 0.00000780, 0.00000357],
+		[-4.24032159, -0.00526337, 0.00274239, 0.00539302, 0.00000775, 0.00000355],
+		[-4.24480413, -0.00525473, 0.00273720, 0.00538382, 0.00000770, 0.00000353],
+		[-4.24928241, -0.00524615, 0.00273206, 0.00537467, 0.00000765, 0.00000352],
+		[-4.25375637, -0.00523762, 0.00272697, 0.00536557, 0.00000759, 0.00000350],
+		[-4.25822600, -0.00522914, 0.00272191, 0.00535653, 0.00000754, 0.00000348],
+		[-4.26269127, -0.00522071, 0.00271690, 0.00534754, 0.00000749, 0.00000346],
+		[-4.26715214, -0.00521233, 0.00271193, 0.00533861, 0.00000744, 0.00000345],
+		[-4.27160860, -0.00520401, 0.00270700, 0.00532973, 0.00000739, 0.00000343],
+		[-4.27606061, -0.00519573, 0.00270211, 0.00532090, 0.00000734, 0.00000341],
+		[-4.28050816, -0.00518750, 0.00269726, 0.00531212, 0.00000729, 0.00000339],
+		[-4.28495120, -0.00517932, 0.00269245, 0.00530339, 0.00000725, 0.00000338],
+		[-4.28938971, -0.00517119, 0.00268767, 0.00529471, 0.00000720, 0.00000336],
+		[-4.29382368, -0.00516310, 0.00268294, 0.00528608, 0.00000715, 0.00000334],
+		[-4.29825306, -0.00515506, 0.00267825, 0.00527750, 0.00000710, 0.00000333],
+		[-4.30267785, -0.00514707, 0.00267359, 0.00526897, 0.00000706, 0.00000331],
+		[-4.30709800, -0.00513912, 0.00266898, 0.00526049, 0.00000701, 0.00000329],
+		[-4.31151350, -0.00513122, 0.00266440, 0.00525206, 0.00000696, 0.00000328],
+		[-4.31592431, -0.00512337, 0.00265985, 0.00524367, 0.00000692, 0.00000326],
+		[-4.32033043, -0.00511555, 0.00265535, 0.00523533, 0.00000687, 0.00000324],
+		[-4.32473181, -0.00510779, 0.00265088, 0.00522704, 0.00000683, 0.00000323],
+		[-4.32912844, -0.00510006, 0.00264644, 0.00521879, 0.00000678, 0.00000321],
+		[-4.33352030, -0.00509238, 0.00264204, 0.00521059, 0.00000674, 0.00000319],
+		[-4.33790735, -0.00508474, 0.00263768, 0.00520243, 0.00000669, 0.00000318],
+		[-4.34228957, -0.00507715, 0.00263335, 0.00519432, 0.00000665, 0.00000316],
+		[-4.34666695, -0.00506959, 0.00262906, 0.00518625, 0.00000661, 0.00000315],
+		[-4.35103946, -0.00506208, 0.00262479, 0.00517822, 0.00000656, 0.00000313],
+		[-4.35540706, -0.00505461, 0.00262057, 0.00517024, 0.00000652, 0.00000311],
+		[-4.35976976, -0.00504718, 0.00261637, 0.00516230, 0.00000648, 0.00000310],
+		[-4.36412751, -0.00503978, 0.00261221, 0.00515441, 0.00000644, 0.00000308],
+		[-4.36848029, -0.00503243, 0.00260808, 0.00514656, 0.00000639, 0.00000307],
+		[-4.37282810, -0.00502512, 0.00260399, 0.00513874, 0.00000635, 0.00000305],
+		[-4.37717089, -0.00501785, 0.00259992, 0.00513097, 0.00000631, 0.00000304],
+		[-4.38150866, -0.00501061, 0.00259589, 0.00512324, 0.00000627, 0.00000302],
+		[-4.38584137, -0.00500341, 0.00259189, 0.00511555, 0.00000623, 0.00000301],
+		[-4.39016901, -0.00499626, 0.00258792, 0.00510791, 0.00000619, 0.00000299],
+		[-4.39449156, -0.00498913, 0.00258397, 0.00510030, 0.00000615, 0.00000298],
+		[-4.39880900, -0.00498205, 0.00258006, 0.00509273, 0.00000611, 0.00000296],
+		[-4.40312130, -0.00497500, 0.00257618, 0.00508520, 0.00000607, 0.00000295],
+		[-4.40742845, -0.00496799, 0.00257233, 0.00507770, 0.00000603, 0.00000293],
+		[-4.41173042, -0.00496101, 0.00256851, 0.00507025, 0.00000599, 0.00000292],
+		[-4.41602719, -0.00495407, 0.00256472, 0.00506283, 0.00000596, 0.00000290],
+		[-4.42031875, -0.00494717, 0.00256096, 0.00505545, 0.00000592, 0.00000289],
+		[-4.42460508, -0.00494030, 0.00255722, 0.00504811, 0.00000588, 0.00000287],
+		[-4.42888615, -0.00493346, 0.00255351, 0.00504081, 0.00000584, 0.00000286],
+		[-4.43316194, -0.00492666, 0.00254984, 0.00503354, 0.00000581, 0.00000284],
+		[-4.43743244, -0.00491989, 0.00254618, 0.00502631, 0.00000577, 0.00000283],
+		[-4.44169763, -0.00491316, 0.00254256, 0.00501911, 0.00000573, 0.00000281],
+		[-4.44595749, -0.00490646, 0.00253896, 0.00501195, 0.00000570, 0.00000280],
+		[-4.45021200, -0.00489979, 0.00253539, 0.00500482, 0.00000566, 0.00000279],
+		[-4.45446115, -0.00489316, 0.00253185, 0.00499773, 0.00000562, 0.00000277],
+		[-4.45870490, -0.00488655, 0.00252833, 0.00499068, 0.00000559, 0.00000276],
+		[-4.46294326, -0.00487998, 0.00252484, 0.00498365, 0.00000555, 0.00000274],
+		[-4.46717619, -0.00487344, 0.00252137, 0.00497667, 0.00000552, 0.00000273],
+		[-4.47140368, -0.00486693, 0.00251793, 0.00496971, 0.00000548, 0.00000272],
+		[-4.47562571, -0.00486046, 0.00251451, 0.00496279, 0.00000545, 0.00000270],
+		[-4.47984227, -0.00485401, 0.00251112, 0.00495590, 0.00000541, 0.00000269],
+		[-4.48405334, -0.00484759, 0.00250775, 0.00494904, 0.00000538, 0.00000268],
+		[-4.48825891, -0.00484121, 0.00250441, 0.00494222, 0.00000535, 0.00000266],
+		[-4.49245894, -0.00483485, 0.00250109, 0.00493543, 0.00000531, 0.00000265],
+		[-4.49665344, -0.00482852, 0.00249780, 0.00492867, 0.00000528, 0.00000264],
+		[-4.50084238, -0.00482223, 0.00249453, 0.00492194, 0.00000525, 0.00000262],
+		[-4.50502575, -0.00481596, 0.00249128, 0.00491524, 0.00000521, 0.00000261],
+		[-4.50920352, -0.00480972, 0.00248805, 0.00490857, 0.00000518, 0.00000260],
+		[-4.51337569, -0.00480350, 0.00248485, 0.00490194, 0.00000515, 0.00000258],
+		[-4.51754224, -0.00479732, 0.00248167, 0.00489533, 0.00000512, 0.00000257],
+		[-4.52170315, -0.00479117, 0.00247851, 0.00488876, 0.00000508, 0.00000256],
+		[-4.52585842, -0.00478504, 0.00247538, 0.00488221, 0.00000505, 0.00000254],
+		[-4.53000801, -0.00477894, 0.00247227, 0.00487569, 0.00000502, 0.00000253],
+		[-4.53415192, -0.00477286, 0.00246917, 0.00486921, 0.00000499, 0.00000252],
+		[-4.53829014, -0.00476682, 0.00246610, 0.00486275, 0.00000496, 0.00000251],
+		[-4.54242264, -0.00476080, 0.00246306, 0.00485632, 0.00000493, 0.00000249],
+		[-4.54654942, -0.00475480, 0.00246003, 0.00484992, 0.00000490, 0.00000248],
+		[-4.55067046, -0.00474884, 0.00245702, 0.00484354, 0.00000487, 0.00000247],
+		[-4.55478574, -0.00474290, 0.00245404, 0.00483720, 0.00000484, 0.00000245],
+		[-4.55889526, -0.00473698, 0.00245107, 0.00483088, 0.00000481, 0.00000244],
+		[-4.56299899, -0.00473109, 0.00244812, 0.00482459, 0.00000478, 0.00000243],
+		[-4.56709693, -0.00472522, 0.00244520, 0.00481833, 0.00000475, 0.00000242],
+		[-4.57118906, -0.00471938, 0.00244229, 0.00481209, 0.00000472, 0.00000241],
+		[-4.57527536, -0.00471357, 0.00243940, 0.00480588, 0.00000469, 0.00000239],
+		[-4.57935583, -0.00470778, 0.00243654, 0.00479970, 0.00000466, 0.00000238],
+		[-4.58343045, -0.00470201, 0.00243369, 0.00479354, 0.00000463, 0.00000237],
+		[-4.58749921, -0.00469627, 0.00243086, 0.00478741, 0.00000460, 0.00000236],
+		[-4.59156210, -0.00469055, 0.00242805, 0.00478131, 0.00000457, 0.00000235],
+		[-4.59561910, -0.00468485, 0.00242526, 0.00477523, 0.00000454, 0.00000233],
+		[-4.59967020, -0.00467918, 0.00242248, 0.00476918, 0.00000452, 0.00000232],
+		[-4.60371538, -0.00467353, 0.00241973, 0.00476315, 0.00000449, 0.00000231],
+		[-4.60775465, -0.00466791, 0.00241699, 0.00475714, 0.00000446, 0.00000230],
+		[-4.61178797, -0.00466230, 0.00241427, 0.00475116, 0.00000443, 0.00000229],
+		[-4.61581536, -0.00465672, 0.00241157, 0.00474521, 0.00000441, 0.00000228],
+		[-4.61983678, -0.00465116, 0.00240889, 0.00473928, 0.00000438, 0.00000226],
+		[-4.62385223, -0.00464563, 0.00240622, 0.00473337, 0.00000435, 0.00000225],
+		[-4.62786170, -0.00464011, 0.00240357, 0.00472749, 0.00000432, 0.00000224],
+		[-4.63186517, -0.00463462, 0.00240093, 0.00472163, 0.00000430, 0.00000223],
+		[-4.63586264, -0.00462915, 0.00239832, 0.00471580, 0.00000427, 0.00000222],
+		[-4.63985410, -0.00462370, 0.00239572, 0.00470998, 0.00000425, 0.00000221],
+		[-4.64383953, -0.00461827, 0.00239313, 0.00470419, 0.00000422, 0.00000220],
+		[-4.64781892, -0.00461286, 0.00239057, 0.00469843, 0.00000419, 0.00000219],
+		[-4.65179227, -0.00460748, 0.00238802, 0.00469268, 0.00000417, 0.00000217],
+		[-4.65575956, -0.00460211, 0.00238548, 0.00468696, 0.00000414, 0.00000216],
+		[-4.65972078, -0.00459677, 0.00238296, 0.00468126, 0.00000412, 0.00000215],
+		[-4.66367592, -0.00459144, 0.00238046, 0.00467559, 0.00000409, 0.00000214],
+		[-4.66762497, -0.00458614, 0.00237797, 0.00466993, 0.00000407, 0.00000213],
+		[-4.67156793, -0.00458085, 0.00237549, 0.00466430, 0.00000404, 0.00000212],
+		[-4.67550478, -0.00457558, 0.00237303, 0.00465869, 0.00000402, 0.00000211],
+		[-4.67943552, -0.00457034, 0.00237059, 0.00465310, 0.00000399, 0.00000210],
+		[-4.68336012, -0.00456511, 0.00236816, 0.00464753, 0.00000397, 0.00000209],
+		[-4.68727860, -0.00455990, 0.00236575, 0.00464198, 0.00000394, 0.00000208],
+		[-4.69119092, -0.00455472, 0.00236335, 0.00463645, 0.00000392, 0.00000207],
+		[-4.69509710, -0.00454955, 0.00236096, 0.00463095, 0.00000389, 0.00000206],
+		[-4.69899711, -0.00454440, 0.00235859, 0.00462546, 0.00000387, 0.00000205],
+		[-4.70289095, -0.00453926, 0.00235623, 0.00461999, 0.00000385, 0.00000204],
+		[-4.70677861, -0.00453415, 0.00235389, 0.00461455, 0.00000382, 0.00000203],
+		[-4.71066008, -0.00452905, 0.00235156, 0.00460912, 0.00000380, 0.00000202],
+		[-4.71453535, -0.00452398, 0.00234924, 0.00460372, 0.00000378, 0.00000200],
+		[-4.71840442, -0.00451892, 0.00234694, 0.00459833, 0.00000375, 0.00000199],
+		[-4.72226728, -0.00451387, 0.00234465, 0.00459296, 0.00000373, 0.00000198],
+		[-4.72612392, -0.00450885, 0.00234237, 0.00458761, 0.00000371, 0.00000197],
+		[-4.72997433, -0.00450384, 0.00234011, 0.00458229, 0.00000369, 0.00000196],
+		[-4.73381850, -0.00449885, 0.00233786, 0.00457698, 0.00000366, 0.00000195],
+		[-4.73765643, -0.00449388, 0.00233562, 0.00457168, 0.00000364, 0.00000195],
+		[-4.74148810, -0.00448893, 0.00233340, 0.00456641, 0.00000362, 0.00000194],
+		[-4.74531352, -0.00448399, 0.00233119, 0.00456116, 0.00000360, 0.00000193],
+		[-4.74913267, -0.00447907, 0.00232899, 0.00455592, 0.00000357, 0.00000192],
+		[-4.75294555, -0.00447416, 0.00232680, 0.00455071, 0.00000355, 0.00000191],
+		[-4.75675214, -0.00446927, 0.00232462, 0.00454551, 0.00000353, 0.00000190],
+		[-4.76055246, -0.00446440, 0.00232246, 0.00454033, 0.00000351, 0.00000189],
+		[-4.76434647, -0.00445955, 0.00232031, 0.00453516, 0.00000349, 0.00000188],
+		[-4.76813419, -0.00445471, 0.00231816, 0.00453002, 0.00000347, 0.00000187],
+		[-4.77191560, -0.00444988, 0.00231604, 0.00452489, 0.00000344, 0.00000186],
+		[-4.77569070, -0.00444507, 0.00231392, 0.00451978, 0.00000342, 0.00000185],
+		[-4.77945947, -0.00444028, 0.00231181, 0.00451469, 0.00000340, 0.00000184],
+		[-4.78322192, -0.00443550, 0.00230972, 0.00450961, 0.00000338, 0.00000183],
+		[-4.78697804, -0.00443074, 0.00230763, 0.00450455, 0.00000336, 0.00000182],
+		[-4.79072783, -0.00442600, 0.00230556, 0.00449951, 0.00000334, 0.00000181],
+		[-4.79447127, -0.00442127, 0.00230350, 0.00449448, 0.00000332, 0.00000180],
+		[-4.79820836, -0.00441655, 0.00230145, 0.00448947, 0.00000330, 0.00000179],
+		[-4.80193909, -0.00441185, 0.00229941, 0.00448448, 0.00000328, 0.00000178],
+		[-4.80566347, -0.00440716, 0.00229738, 0.00447951, 0.00000326, 0.00000178],
+		[-4.80938148, -0.00440249, 0.00229536, 0.00447454, 0.00000324, 0.00000177],
+		[-4.81309312, -0.00439783, 0.00229335, 0.00446960, 0.00000322, 0.00000176],
+		[-4.81679838, -0.00439319, 0.00229135, 0.00446467, 0.00000320, 0.00000175],
+		[-4.82049726, -0.00438856, 0.00228937, 0.00445976, 0.00000318, 0.00000174],
+		[-4.82418976, -0.00438395, 0.00228739, 0.00445486, 0.00000316, 0.00000173],
+		[-4.82787587, -0.00437935, 0.00228542, 0.00444998, 0.00000314, 0.00000172],
+		[-4.83155558, -0.00437476, 0.00228346, 0.00444512, 0.00000312, 0.00000171],
+		[-4.83522889, -0.00437019, 0.00228151, 0.00444027, 0.00000310, 0.00000171],
+		[-4.83889580, -0.00436563, 0.00227957, 0.00443543, 0.00000308, 0.00000170],
+		[-4.84255630, -0.00436109, 0.00227764, 0.00443061, 0.00000306, 0.00000169],
+		[-4.84621038, -0.00435656, 0.00227572, 0.00442580, 0.00000305, 0.00000168],
+		[-4.84985805, -0.00435204, 0.00227381, 0.00442101, 0.00000303, 0.00000167],
+		[-4.85349930, -0.00434753, 0.00227191, 0.00441624, 0.00000301, 0.00000166],
+		[-4.85713412, -0.00434304, 0.00227002, 0.00441148, 0.00000299, 0.00000165],
+		[-4.86076252, -0.00433856, 0.00226813, 0.00440673, 0.00000297, 0.00000165],
+		[-4.86438448, -0.00433410, 0.00226626, 0.00440200, 0.00000295, 0.00000164],
+		[-4.86800001, -0.00432965, 0.00226439, 0.00439728, 0.00000294, 0.00000163],
+		[-4.87160909, -0.00432521, 0.00226253, 0.00439258, 0.00000292, 0.00000162],
+		[-4.87521174, -0.00432078, 0.00226069, 0.00438789, 0.00000290, 0.00000161],
+		[-4.87880793, -0.00431637, 0.00225885, 0.00438321, 0.00000288, 0.00000161],
+		[-4.88239768, -0.00431196, 0.00225701, 0.00437855, 0.00000286, 0.00000160],
+		[-4.88598098, -0.00430758, 0.00225519, 0.00437390, 0.00000285, 0.00000159],
+		[-4.88955781, -0.00430320, 0.00225338, 0.00436927, 0.00000283, 0.00000158],
+		[-4.89312819, -0.00429883, 0.00225157, 0.00436465, 0.00000281, 0.00000157],
+		[-4.89669211, -0.00429448, 0.00224977, 0.00436004, 0.00000279, 0.00000157],
+		[-4.90024957, -0.00429014, 0.00224798, 0.00435545, 0.00000278, 0.00000156],
+		[-4.90380055, -0.00428581, 0.00224620, 0.00435087, 0.00000276, 0.00000155],
+		[-4.90734507, -0.00428150, 0.00224442, 0.00434630, 0.00000274, 0.00000154],
+		[-4.91088312, -0.00427719, 0.00224266, 0.00434174, 0.00000272, 0.00000153],
+		[-4.91441469, -0.00427290, 0.00224090, 0.00433720, 0.00000271, 0.00000153],
+		[-4.91793978, -0.00426862, 0.00223915, 0.00433267, 0.00000269, 0.00000152],
+		[-4.92145840, -0.00426435, 0.00223740, 0.00432816, 0.00000267, 0.00000151],
+		[-4.92497053, -0.00426009, 0.00223566, 0.00432366, 0.00000266, 0.00000150],
+		[-4.92847618, -0.00425584, 0.00223394, 0.00431916, 0.00000264, 0.00000150],
+		[-4.93197535, -0.00425160, 0.00223221, 0.00431469, 0.00000262, 0.00000149],
+		[-4.93546803, -0.00424738, 0.00223050, 0.00431022, 0.00000261, 0.00000148],
+		[-4.93895423, -0.00424317, 0.00222879, 0.00430577, 0.00000259, 0.00000147],
+		[-4.94243393, -0.00423896, 0.00222709, 0.00430133, 0.00000258, 0.00000147],
+		[-4.94590714, -0.00423477, 0.00222540, 0.00429690, 0.00000256, 0.00000146],
+		[-4.94937386, -0.00423059, 0.00222371, 0.00429248, 0.00000254, 0.00000145],
+		[-4.95283409, -0.00422642, 0.00222203, 0.00428808, 0.00000253, 0.00000144],
+		[-4.95628782, -0.00422226, 0.00222036, 0.00428368, 0.00000251, 0.00000144],
+		[-4.95973505, -0.00421811, 0.00221869, 0.00427930, 0.00000250, 0.00000143],
+		[-4.96317579, -0.00421397, 0.00221703, 0.00427493, 0.00000248, 0.00000142],
+		[-4.96661002, -0.00420984, 0.00221538, 0.00427058, 0.00000246, 0.00000142],
+		[-4.97003776, -0.00420573, 0.00221373, 0.00426623, 0.00000245, 0.00000141],
+		[-4.97345900, -0.00420162, 0.00221209, 0.00426189, 0.00000243, 0.00000140],
+		[-4.97687374, -0.00419752, 0.00221046, 0.00425757, 0.00000242, 0.00000139],
+		[-4.98028197, -0.00419344, 0.00220883, 0.00425326, 0.00000240, 0.00000139],
+		[-4.98368371, -0.00418936, 0.00220721, 0.00424896, 0.00000239, 0.00000138],
+		[-4.98707894, -0.00418529, 0.00220559, 0.00424467, 0.00000237, 0.00000137],
+		[-4.99046767, -0.00418123, 0.00220398, 0.00424039, 0.00000236, 0.00000137],
+		[-4.99384989, -0.00417719, 0.00220238, 0.00423612, 0.00000234, 0.00000136],
+		[-4.99722561, -0.00417315, 0.00220078, 0.00423187, 0.00000233, 0.00000135],
+		[-5.00059483, -0.00416912, 0.00219919, 0.00422762, 0.00000231, 0.00000135],
+		[-5.00395754, -0.00416511, 0.00219761, 0.00422339, 0.00000230, 0.00000134],
+		[-5.00731375, -0.00416110, 0.00219603, 0.00421916, 0.00000228, 0.00000133],
+		[-5.01066346, -0.00415710, 0.00219445, 0.00421495, 0.00000227, 0.00000133],
+		[-5.01400667, -0.00415311, 0.00219288, 0.00421075, 0.00000226, 0.00000132],
+		[-5.01734337, -0.00414913, 0.00219132, 0.00420655, 0.00000224, 0.00000131],
+		[-5.02067356, -0.00414516, 0.00218976, 0.00420237, 0.00000223, 0.00000131],
+		[-5.02399726, -0.00414120, 0.00218821, 0.00419820, 0.00000221, 0.00000130],
+		[-5.02731445, -0.00413724, 0.00218666, 0.00419404, 0.00000220, 0.00000129],
+		[-5.03062515, -0.00413330, 0.00218512, 0.00418989, 0.00000218, 0.00000129],
+		[-5.03392934, -0.00412937, 0.00218359, 0.00418574, 0.00000217, 0.00000128],
+		[-5.03722703, -0.00412544, 0.00218206, 0.00418161, 0.00000216, 0.00000127],
+		[-5.04051822, -0.00412153, 0.00218053, 0.00417749, 0.00000214, 0.00000127],
+		[-5.04380292, -0.00411762, 0.00217901, 0.00417338, 0.00000213, 0.00000126],
+		[-5.04708112, -0.00411372, 0.00217750, 0.00416928, 0.00000212, 0.00000125],
+		[-5.05035282, -0.00410983, 0.00217599, 0.00416519, 0.00000210, 0.00000125],
+		[-5.05361802, -0.00410595, 0.00217448, 0.00416111, 0.00000209, 0.00000124],
+		[-5.05687674, -0.00410208, 0.00217298, 0.00415703, 0.00000207, 0.00000124],
+		[-5.06012896, -0.00409821, 0.00217148, 0.00415297, 0.00000206, 0.00000123],
+		[-5.06337469, -0.00409436, 0.00216999, 0.00414892, 0.00000205, 0.00000122],
+		[-5.06661393, -0.00409051, 0.00216851, 0.00414488, 0.00000203, 0.00000122],
+		[-5.06984668, -0.00408668, 0.00216703, 0.00414084, 0.00000202, 0.00000121],
+		[-5.07307294, -0.00408285, 0.00216555, 0.00413682, 0.00000201, 0.00000121],
+		[-5.07629272, -0.00407902, 0.00216408, 0.00413280, 0.00000199, 0.00000120],
+		[-5.07950602, -0.00407521, 0.00216261, 0.00412880, 0.00000198, 0.00000119],
+		[-5.08271283, -0.00407141, 0.00216115, 0.00412480, 0.00000197, 0.00000119],
+		[-5.08591317, -0.00406761, 0.00215969, 0.00412081, 0.00000196, 0.00000118],
+		[-5.08910703, -0.00406382, 0.00215823, 0.00411683, 0.00000194, 0.00000118],
+		[-5.09229441, -0.00406004, 0.00215678, 0.00411286, 0.00000193, 0.00000117],
+		[-5.09547532, -0.00405627, 0.00215534, 0.00410890, 0.00000192, 0.00000116],
+		[-5.09864975, -0.00405250, 0.00215390, 0.00410495, 0.00000191, 0.00000116],
+		[-5.10181772, -0.00404874, 0.00215246, 0.00410101, 0.00000189, 0.00000115],
+		[-5.10497922, -0.00404500, 0.00215102, 0.00409707, 0.00000188, 0.00000115],
+		[-5.10813425, -0.00404125, 0.00214960, 0.00409315, 0.00000187, 0.00000114],
+		[-5.11128282, -0.00403752, 0.00214817, 0.00408923, 0.00000186, 0.00000114],
+		[-5.11442494, -0.00403379, 0.00214675, 0.00408532, 0.00000184, 0.00000113],
+		[-5.11756059, -0.00403008, 0.00214533, 0.00408142, 0.00000183, 0.00000112],
+		[-5.12068979, -0.00402637, 0.00214392, 0.00407753, 0.00000182, 0.00000112],
+		[-5.12381254, -0.00402266, 0.00214251, 0.00407365, 0.00000181, 0.00000111],
+		[-5.12692884, -0.00401897, 0.00214110, 0.00406978, 0.00000179, 0.00000111],
+		[-5.13003869, -0.00401528, 0.00213970, 0.00406591, 0.00000178, 0.00000110],
+		[-5.13314210, -0.00401160, 0.00213831, 0.00406205, 0.00000177, 0.00000110],
+		[-5.13623906, -0.00400792, 0.00213691, 0.00405820, 0.00000176, 0.00000109],
+		[-5.13932959, -0.00400426, 0.00213552, 0.00405436, 0.00000175, 0.00000109],
+		[-5.14241368, -0.00400060, 0.00213413, 0.00405053, 0.00000173, 0.00000108],
+		[-5.14549135, -0.00399695, 0.00213275, 0.00404670, 0.00000172, 0.00000107],
+		[-5.14856258, -0.00399330, 0.00213137, 0.00404289, 0.00000171, 0.00000107],
+		[-5.15162739, -0.00398967, 0.00213000, 0.00403908, 0.00000170, 0.00000106],
+		[-5.15468577, -0.00398604, 0.00212862, 0.00403528, 0.00000169, 0.00000106],
+		[-5.15773774, -0.00398241, 0.00212725, 0.00403148, 0.00000168, 0.00000105],
+		[-5.16078329, -0.00397880, 0.00212589, 0.00402770, 0.00000167, 0.00000105],
+		[-5.16382243, -0.00397519, 0.00212453, 0.00402392, 0.00000165, 0.00000104],
+		[-5.16685516, -0.00397159, 0.00212317, 0.00402015, 0.00000164, 0.00000104],
+		[-5.16988149, -0.00396799, 0.00212181, 0.00401639, 0.00000163, 0.00000103],
+		[-5.17290141, -0.00396440, 0.00212046, 0.00401264, 0.00000162, 0.00000103],
+		[-5.17591494, -0.00396082, 0.00211911, 0.00400889, 0.00000161, 0.00000102],
+		[-5.17892208, -0.00395724, 0.00211776, 0.00400515, 0.00000160, 0.00000102],
+		[-5.18192282, -0.00395368, 0.00211642, 0.00400142, 0.00000159, 0.00000101],
+		[-5.18491718, -0.00395011, 0.00211508, 0.00399770, 0.00000158, 0.00000101],
+		[-5.18790516, -0.00394656, 0.00211374, 0.00399398, 0.00000156, 0.00000100],
+		[-5.19088675, -0.00394301, 0.00211241, 0.00399027, 0.00000155, 0.00000100],
+		[-5.19386198, -0.00393947, 0.00211108, 0.00398657, 0.00000154, 0.00000099],
+		[-5.19683083, -0.00393593, 0.00210975, 0.00398288, 0.00000153, 0.00000099],
+		[-5.19979332, -0.00393241, 0.00210843, 0.00397919, 0.00000152, 0.00000098],
+		[-5.20274945, -0.00392888, 0.00210710, 0.00397551, 0.00000151, 0.00000098],
+		[-5.20569922, -0.00392537, 0.00210578, 0.00397184, 0.00000150, 0.00000097],
+		[-5.20864264, -0.00392186, 0.00210447, 0.00396817, 0.00000149, 0.00000097],
+		[-5.21157971, -0.00391835, 0.00210315, 0.00396451, 0.00000148, 0.00000096],
+		[-5.21451043, -0.00391486, 0.00210184, 0.00396086, 0.00000147, 0.00000096],
+		[-5.21743482, -0.00391137, 0.00210054, 0.00395722, 0.00000146, 0.00000095],
+		[-5.22035287, -0.00390788, 0.00209923, 0.00395358, 0.00000145, 0.00000095],
+		[-5.22326459, -0.00390440, 0.00209793, 0.00394995, 0.00000144, 0.00000094],
+		[-5.22616999, -0.00390093, 0.00209663, 0.00394633, 0.00000143, 0.00000094],
+		[-5.22906906, -0.00389747, 0.00209533, 0.00394271, 0.00000142, 0.00000093],
+		[-5.23196182, -0.00389401, 0.00209404, 0.00393910, 0.00000141, 0.00000093],
+		[-5.23484826, -0.00389055, 0.00209274, 0.00393550, 0.00000140, 0.00000093],
+		[-5.23772840, -0.00388711, 0.00209145, 0.00393191, 0.00000139, 0.00000092],
+		[-5.24060224, -0.00388366, 0.00209017, 0.00392832, 0.00000138, 0.00000092],
+		[-5.24346978, -0.00388023, 0.00208888, 0.00392473, 0.00000137, 0.00000091],
+		[-5.24633103, -0.00387680, 0.00208760, 0.00392116, 0.00000136, 0.00000091],
+		[-5.24918599, -0.00387338, 0.00208632, 0.00391759, 0.00000135, 0.00000090],
+		[-5.25203467, -0.00386996, 0.00208504, 0.00391403, 0.00000134, 0.00000090],
+		[-5.25487707, -0.00386655, 0.00208377, 0.00391047, 0.00000133, 0.00000089],
+		[-5.25771320, -0.00386314, 0.00208250, 0.00390692, 0.00000132, 0.00000089],
+		[-5.26054307, -0.00385974, 0.00208123, 0.00390338, 0.00000131, 0.00000088],
+		[-5.26336668, -0.00385634, 0.00207996, 0.00389984, 0.00000130, 0.00000088],
+		[-5.26618402, -0.00385295, 0.00207869, 0.00389631, 0.00000129, 0.00000088],
+		[-5.26899512, -0.00384957, 0.00207743, 0.00389279, 0.00000128, 0.00000087],
+		[-5.27179998, -0.00384619, 0.00207617, 0.00388927, 0.00000127, 0.00000087],
+		[-5.27459860, -0.00384282, 0.00207491, 0.00388576, 0.00000126, 0.00000086],
+		[-5.27739098, -0.00383945, 0.00207365, 0.00388226, 0.00000125, 0.00000086],
+		[-5.28017713, -0.00383609, 0.00207240, 0.00387876, 0.00000124, 0.00000085],
+		[-5.28295706, -0.00383274, 0.00207115, 0.00387527, 0.00000123, 0.00000085],
+		[-5.28573078, -0.00382939, 0.00206989, 0.00387178, 0.00000122, 0.00000085],
+		[-5.28849828, -0.00382604, 0.00206865, 0.00386830, 0.00000121, 0.00000084],
+		[-5.29125958, -0.00382271, 0.00206740, 0.00386483, 0.00000120, 0.00000084],
+		[-5.29401468, -0.00381937, 0.00206616, 0.00386136, 0.00000119, 0.00000083],
+		[-5.29676358, -0.00381604, 0.00206491, 0.00385790, 0.00000118, 0.00000083],
+		[-5.29950630, -0.00381272, 0.00206367, 0.00385445, 0.00000118, 0.00000083],
+		[-5.30224283, -0.00380940, 0.00206243, 0.00385100, 0.00000117, 0.00000082],
+		[-5.30497319, -0.00380609, 0.00206120, 0.00384755, 0.00000116, 0.00000082],
+		[-5.30769738, -0.00380279, 0.00205996, 0.00384412, 0.00000115, 0.00000081],
+		[-5.31041540, -0.00379948, 0.00205873, 0.00384068, 0.00000114, 0.00000081],
+		[-5.31312727, -0.00379619, 0.00205750, 0.00383726, 0.00000113, 0.00000081],
+		[-5.31583299, -0.00379290, 0.00205627, 0.00383384, 0.00000112, 0.00000080],
+		[-5.31853255, -0.00378961, 0.00205504, 0.00383043, 0.00000111, 0.00000080],
+		[-5.32122598, -0.00378633, 0.00205382, 0.00382702, 0.00000110, 0.00000079],
+		[-5.32391328, -0.00378306, 0.00205259, 0.00382362, 0.00000110, 0.00000079],
+		[-5.32659445, -0.00377979, 0.00205137, 0.00382022, 0.00000109, 0.00000079],
+		[-5.32926950, -0.00377652, 0.00205015, 0.00381683, 0.00000108, 0.00000078],
+		[-5.33193843, -0.00377326, 0.00204893, 0.00381344, 0.00000107, 0.00000078],
+		[-5.33460126, -0.00377000, 0.00204772, 0.00381006, 0.00000106, 0.00000077],
+		[-5.33725798, -0.00376675, 0.00204650, 0.00380669, 0.00000105, 0.00000077],
+		[-5.33990861, -0.00376351, 0.00204529, 0.00380332, 0.00000104, 0.00000077],
+		[-5.34255316, -0.00376027, 0.00204408, 0.00379996, 0.00000103, 0.00000076],
+		[-5.34519162, -0.00375703, 0.00204287, 0.00379660, 0.00000103, 0.00000076],
+		[-5.34782400, -0.00375380, 0.00204166, 0.00379325, 0.00000102, 0.00000075],
+		[-5.35045032, -0.00375058, 0.00204045, 0.00378991, 0.00000101, 0.00000075],
+		[-5.35307057, -0.00374736, 0.00203925, 0.00378657, 0.00000100, 0.00000075],
+		[-5.35568477, -0.00374414, 0.00203804, 0.00378323, 0.00000099, 0.00000074],
+		[-5.35829292, -0.00374093, 0.00203684, 0.00377990, 0.00000098, 0.00000074],
+		[-5.36089503, -0.00373773, 0.00203564, 0.00377658, 0.00000098, 0.00000074],
+		[-5.36349110, -0.00373453, 0.00203444, 0.00377326, 0.00000097, 0.00000073],
+		[-5.36608114, -0.00373133, 0.00203324, 0.00376994, 0.00000096, 0.00000073],
+		[-5.36866517, -0.00372814, 0.00203205, 0.00376664, 0.00000095, 0.00000073],
+		[-5.37124318, -0.00372495, 0.00203085, 0.00376333, 0.00000094, 0.00000072],
+		[-5.37381518, -0.00372177, 0.00202966, 0.00376004, 0.00000094, 0.00000072],
+		[-5.37638118, -0.00371859, 0.00202847, 0.00375674, 0.00000093, 0.00000071],
+		[-5.37894119, -0.00371542, 0.00202728, 0.00375346, 0.00000092, 0.00000071],
+		[-5.38149521, -0.00371225, 0.00202609, 0.00375018, 0.00000091, 0.00000071],
+		[-5.38404325, -0.00370909, 0.00202490, 0.00374690, 0.00000090, 0.00000070],
+		[-5.38658532, -0.00370593, 0.00202371, 0.00374363, 0.00000090, 0.00000070],
+		[-5.38912142, -0.00370278, 0.00202253, 0.00374036, 0.00000089, 0.00000070],
+		[-5.39165157, -0.00369963, 0.00202134, 0.00373710, 0.00000088, 0.00000069],
+		[-5.39417576, -0.00369648, 0.00202016, 0.00373385, 0.00000087, 0.00000069],
+		[-5.39669401, -0.00369334, 0.00201898, 0.00373059, 0.00000087, 0.00000069],
+		[-5.39920633, -0.00369021, 0.00201780, 0.00372735, 0.00000086, 0.00000068],
+		[-5.40171272, -0.00368707, 0.00201662, 0.00372411, 0.00000085, 0.00000068],
+		[-5.40421318, -0.00368395, 0.00201544, 0.00372087, 0.00000084, 0.00000068],
+		[-5.40670773, -0.00368082, 0.00201427, 0.00371764, 0.00000083, 0.00000067],
+		[-5.40919637, -0.00367771, 0.00201309, 0.00371442, 0.00000083, 0.00000067],
+		[-5.41167912, -0.00367459, 0.00201192, 0.00371119, 0.00000082, 0.00000067],
+		[-5.41415597, -0.00367148, 0.00201075, 0.00370798, 0.00000081, 0.00000066],
+		[-5.41662693, -0.00366838, 0.00200957, 0.00370477, 0.00000080, 0.00000066],
+		[-5.41909202, -0.00366528, 0.00200840, 0.00370156, 0.00000080, 0.00000066],
+		[-5.42155124, -0.00366218, 0.00200724, 0.00369836, 0.00000079, 0.00000065],
+		[-5.42400460, -0.00365909, 0.00200607, 0.00369516, 0.00000078, 0.00000065],
+		[-5.42645210, -0.00365600, 0.00200490, 0.00369197, 0.00000077, 0.00000065],
+		[-5.42889376, -0.00365292, 0.00200374, 0.00368879, 0.00000077, 0.00000064],
+		[-5.43132958, -0.00364984, 0.00200257, 0.00368560, 0.00000076, 0.00000064],
+		[-5.43375956, -0.00364677, 0.00200141, 0.00368243, 0.00000075, 0.00000064],
+		[-5.43618372, -0.00364370, 0.00200024, 0.00367926, 0.00000075, 0.00000063],
+		[-5.43860207, -0.00364063, 0.00199908, 0.00367609, 0.00000074, 0.00000063],
+		[-5.44101460, -0.00363757, 0.00199792, 0.00367293, 0.00000073, 0.00000063],
+		[-5.44342134, -0.00363451, 0.00199676, 0.00366977, 0.00000072, 0.00000063],
+		[-5.44582228, -0.00363146, 0.00199561, 0.00366661, 0.00000072, 0.00000062],
+		[-5.44821744, -0.00362841, 0.00199445, 0.00366346, 0.00000071, 0.00000062],
+		[-5.45060682, -0.00362536, 0.00199329, 0.00366032, 0.00000070, 0.00000062],
+		[-5.45299043, -0.00362232, 0.00199214, 0.00365718, 0.00000070, 0.00000061],
+		[-5.45536828, -0.00361929, 0.00199098, 0.00365405, 0.00000069, 0.00000061],
+		[-5.45774037, -0.00361625, 0.00198983, 0.00365092, 0.00000068, 0.00000061],
+		[-5.46010672, -0.00361323, 0.00198868, 0.00364779, 0.00000067, 0.00000060],
+		[-5.46246734, -0.00361020, 0.00198753, 0.00364467, 0.00000067, 0.00000060],
+		[-5.46482222, -0.00360718, 0.00198638, 0.00364155, 0.00000066, 0.00000060],
+		[-5.46717138, -0.00360417, 0.00198523, 0.00363844, 0.00000065, 0.00000060],
+		[-5.46951483, -0.00360115, 0.00198408, 0.00363533, 0.00000065, 0.00000059],
+		[-5.47185257, -0.00359814, 0.00198293, 0.00363223, 0.00000064, 0.00000059],
+		[-5.47418461, -0.00359514, 0.00198178, 0.00362913, 0.00000063, 0.00000059],
+		[-5.47651097, -0.00359214, 0.00198064, 0.00362604, 0.00000063, 0.00000058],
+		[-5.47883164, -0.00358914, 0.00197949, 0.00362295, 0.00000062, 0.00000058],
+		[-5.48114664, -0.00358615, 0.00197835, 0.00361986, 0.00000061, 0.00000058],
+		[-5.48345598, -0.00358316, 0.00197721, 0.00361678, 0.00000061, 0.00000058],
+		[-5.48575966, -0.00358018, 0.00197606, 0.00361370, 0.00000060, 0.00000057],
+		[-5.48805769, -0.00357720, 0.00197492, 0.00361063, 0.00000059, 0.00000057],
+		[-5.49035007, -0.00357422, 0.00197378, 0.00360756, 0.00000059, 0.00000057],
+		[-5.49263683, -0.00357125, 0.00197264, 0.00360450, 0.00000058, 0.00000056],
+		[-5.49491797, -0.00356828, 0.00197150, 0.00360144, 0.00000057, 0.00000056],
+		[-5.49719348, -0.00356532, 0.00197036, 0.00359839, 0.00000057, 0.00000056],
+		[-5.49946339, -0.00356236, 0.00196923, 0.00359534, 0.00000056, 0.00000056],
+		[-5.50172771, -0.00355940, 0.00196809, 0.00359229, 0.00000056, 0.00000055],
+		[-5.50398643, -0.00355645, 0.00196695, 0.00358925, 0.00000055, 0.00000055],
+		[-5.50623957, -0.00355350, 0.00196582, 0.00358621, 0.00000054, 0.00000055],
+		[-5.50848713, -0.00355055, 0.00196468, 0.00358318, 0.00000054, 0.00000054],
+		[-5.51072913, -0.00354761, 0.00196355, 0.00358015, 0.00000053, 0.00000054],
+		[-5.51296557, -0.00354467, 0.00196242, 0.00357712, 0.00000052, 0.00000054],
+		[-5.51519647, -0.00354174, 0.00196129, 0.00357410, 0.00000052, 0.00000054],
+		[-5.51742182, -0.00353881, 0.00196016, 0.00357108, 0.00000051, 0.00000053],
+		[-5.51964164, -0.00353588, 0.00195902, 0.00356807, 0.00000050, 0.00000053],
+		[-5.52185594, -0.00353296, 0.00195789, 0.00356506, 0.00000050, 0.00000053],
+		[-5.52406473, -0.00353004, 0.00195677, 0.00356206, 0.00000049, 0.00000053],
+		[-5.52626800, -0.00352712, 0.00195564, 0.00355906, 0.00000049, 0.00000052],
+		[-5.52846578, -0.00352421, 0.00195451, 0.00355606, 0.00000048, 0.00000052],
+		[-5.53065808, -0.00352130, 0.00195338, 0.00355307, 0.00000047, 0.00000052],
+		[-5.53284489, -0.00351840, 0.00195226, 0.00355008, 0.00000047, 0.00000052],
+		[-5.53502623, -0.00351550, 0.00195113, 0.00354710, 0.00000046, 0.00000051],
+		[-5.53720210, -0.00351260, 0.00195001, 0.00354412, 0.00000046, 0.00000051],
+		[-5.53937252, -0.00350971, 0.00194888, 0.00354114, 0.00000045, 0.00000051],
+		[-5.54153750, -0.00350682, 0.00194776, 0.00353817, 0.00000044, 0.00000051],
+		[-5.54369704, -0.00350393, 0.00194663, 0.00353520, 0.00000044, 0.00000050],
+		[-5.54585115, -0.00350105, 0.00194551, 0.00353224, 0.00000043, 0.00000050],
+		[-5.54799984, -0.00349817, 0.00194439, 0.00352928, 0.00000043, 0.00000050],
+		[-5.55014311, -0.00349529, 0.00194327, 0.00352632, 0.00000042, 0.00000050],
+		[-5.55228099, -0.00349242, 0.00194215, 0.00352337, 0.00000041, 0.00000049],
+		[-5.55441347, -0.00348955, 0.00194103, 0.00352042, 0.00000041, 0.00000049],
+		[-5.55654057, -0.00348669, 0.00193991, 0.00351748, 0.00000040, 0.00000049],
+		[-5.55866229, -0.00348383, 0.00193879, 0.00351454, 0.00000040, 0.00000049],
+		[-5.56077864, -0.00348097, 0.00193767, 0.00351160, 0.00000039, 0.00000048],
+		[-5.56288964, -0.00347811, 0.00193655, 0.00350867, 0.00000039, 0.00000048],
+		[-5.56499528, -0.00347526, 0.00193544, 0.00350574, 0.00000038, 0.00000048],
+		[-5.56709558, -0.00347242, 0.00193432, 0.00350282, 0.00000037, 0.00000048],
+		[-5.56919055, -0.00346957, 0.00193321, 0.00349990, 0.00000037, 0.00000047],
+		[-5.57128020, -0.00346673, 0.00193209, 0.00349698, 0.00000036, 0.00000047],
+		[-5.57336453, -0.00346390, 0.00193098, 0.00349407, 0.00000036, 0.00000047],
+		[-5.57544356, -0.00346106, 0.00192986, 0.00349116, 0.00000035, 0.00000047],
+		[-5.57751729, -0.00345823, 0.00192875, 0.00348825, 0.00000035, 0.00000047],
+		[-5.57958573, -0.00345541, 0.00192764, 0.00348535, 0.00000034, 0.00000046],
+		[-5.58164889, -0.00345259, 0.00192652, 0.00348245, 0.00000033, 0.00000046],
+		[-5.58370679, -0.00344977, 0.00192541, 0.00347956, 0.00000033, 0.00000046],
+		[-5.58575942, -0.00344695, 0.00192430, 0.00347667, 0.00000032, 0.00000046],
+		[-5.58780679, -0.00344414, 0.00192319, 0.00347378, 0.00000032, 0.00000045],
+		[-5.58984893, -0.00344133, 0.00192208, 0.00347090, 0.00000031, 0.00000045],
+		[-5.59188583, -0.00343852, 0.00192097, 0.00346802, 0.00000031, 0.00000045],
+		[-5.59391750, -0.00343572, 0.00191986, 0.00346515, 0.00000030, 0.00000045],
+		[-5.59594396, -0.00343292, 0.00191875, 0.00346228, 0.00000030, 0.00000045],
+		[-5.59796521, -0.00343013, 0.00191764, 0.00345941, 0.00000029, 0.00000044],
+		[-5.59998126, -0.00342733, 0.00191653, 0.00345654, 0.00000029, 0.00000044],
+		[-5.60199212, -0.00342455, 0.00191543, 0.00345368, 0.00000028, 0.00000044],
+		[-5.60399781, -0.00342176, 0.00191432, 0.00345083, 0.00000028, 0.00000044],
+		[-5.60599831, -0.00341898, 0.00191321, 0.00344797, 0.00000027, 0.00000043],
+		[-5.60799366, -0.00341620, 0.00191211, 0.00344513, 0.00000026, 0.00000043],
+		[-5.60998385, -0.00341342, 0.00191100, 0.00344228, 0.00000026, 0.00000043],
+		[-5.61196890, -0.00341065, 0.00190990, 0.00343944, 0.00000025, 0.00000043],
+		[-5.61394881, -0.00340788, 0.00190879, 0.00343660, 0.00000025, 0.00000043],
+		[-5.61592360, -0.00340512, 0.00190769, 0.00343376, 0.00000024, 0.00000042],
+		[-5.61789327, -0.00340235, 0.00190659, 0.00343093, 0.00000024, 0.00000042],
+		[-5.61985783, -0.00339960, 0.00190548, 0.00342811, 0.00000023, 0.00000042],
+		[-5.62181729, -0.00339684, 0.00190438, 0.00342528, 0.00000023, 0.00000042],
+		[-5.62377166, -0.00339409, 0.00190328, 0.00342246, 0.00000022, 0.00000042],
+		[-5.62572095, -0.00339134, 0.00190218, 0.00341964, 0.00000022, 0.00000041],
+		[-5.62766517, -0.00338859, 0.00190108, 0.00341683, 0.00000021, 0.00000041],
+		[-5.62960432, -0.00338585, 0.00189998, 0.00341402, 0.00000021, 0.00000041],
+		[-5.63153842, -0.00338311, 0.00189888, 0.00341122, 0.00000020, 0.00000041],
+		[-5.63346748, -0.00338037, 0.00189778, 0.00340841, 0.00000020, 0.00000041],
+		[-5.63539150, -0.00337764, 0.00189668, 0.00340561, 0.00000019, 0.00000040],
+		[-5.63731050, -0.00337491, 0.00189558, 0.00340282, 0.00000019, 0.00000040],
+		[-5.63922447, -0.00337218, 0.00189448, 0.00340003, 0.00000018, 0.00000040],
+		[-5.64113344, -0.00336946, 0.00189338, 0.00339724, 0.00000018, 0.00000040],
+		[-5.64303741, -0.00336674, 0.00189229, 0.00339445, 0.00000017, 0.00000040],
+		[-5.64493639, -0.00336402, 0.00189119, 0.00339167, 0.00000017, 0.00000039],
+		[-5.64683039, -0.00336131, 0.00189009, 0.00338889, 0.00000016, 0.00000039],
+		[-5.64871942, -0.00335860, 0.00188899, 0.00338612, 0.00000016, 0.00000039],
+		[-5.65060348, -0.00335589, 0.00188790, 0.00338335, 0.00000015, 0.00000039],
+		[-5.65248259, -0.00335319, 0.00188680, 0.00338058, 0.00000015, 0.00000039],
+		[-5.65435676, -0.00335049, 0.00188571, 0.00337781, 0.00000014, 0.00000038],
+		[-5.65622600, -0.00334779, 0.00188461, 0.00337505, 0.00000014, 0.00000038],
+		[-5.65809030, -0.00334509, 0.00188352, 0.00337229, 0.00000013, 0.00000038],
+		[-5.65994970, -0.00334240, 0.00188243, 0.00336954, 0.00000013, 0.00000038],
+		[-5.66180418, -0.00333971, 0.00188133, 0.00336679, 0.00000013, 0.00000038],
+		[-5.66365377, -0.00333703, 0.00188024, 0.00336404, 0.00000012, 0.00000038],
+		[-5.66549846, -0.00333434, 0.00187915, 0.00336130, 0.00000012, 0.00000037],
+		[-5.66733828, -0.00333166, 0.00187805, 0.00335856, 0.00000011, 0.00000037],
+		[-5.66917323, -0.00332899, 0.00187696, 0.00335582, 0.00000011, 0.00000037],
+		[-5.67100331, -0.00332631, 0.00187587, 0.00335309, 0.00000010, 0.00000037],
+		[-5.67282855, -0.00332364, 0.00187478, 0.00335035, 0.00000010, 0.00000037],
+		[-5.67464894, -0.00332098, 0.00187369, 0.00334763, 0.00000009, 0.00000036],
+		[-5.67646450, -0.00331831, 0.00187260, 0.00334490, 0.00000009, 0.00000036],
+		[-5.67827523, -0.00331565, 0.00187151, 0.00334218, 0.00000008, 0.00000036],
+		[-5.68008115, -0.00331299, 0.00187042, 0.00333947, 0.00000008, 0.00000036],
+		[-5.68188226, -0.00331034, 0.00186933, 0.00333675, 0.00000007, 0.00000036],
+		[-5.68367858, -0.00330769, 0.00186824, 0.00333404, 0.00000007, 0.00000036],
+		[-5.68547011, -0.00330504, 0.00186715, 0.00333133, 0.00000007, 0.00000035],
+		[-5.68725686, -0.00330239, 0.00186606, 0.00332863, 0.00000006, 0.00000035],
+		[-5.68903884, -0.00329975, 0.00186498, 0.00332593, 0.00000006, 0.00000035],
+		[-5.69081606, -0.00329711, 0.00186389, 0.00332323, 0.00000005, 0.00000035],
+		[-5.69258853, -0.00329447, 0.00186280, 0.00332054, 0.00000005, 0.00000035],
+		[-5.69435627, -0.00329184, 0.00186172, 0.00331785, 0.00000004, 0.00000035],
+		[-5.69611926, -0.00328921, 0.00186063, 0.00331516, 0.00000004, 0.00000034],
+		[-5.69787754, -0.00328658, 0.00185954, 0.00331247, 0.00000003, 0.00000034],
+		[-5.69963110, -0.00328396, 0.00185846, 0.00330979, 0.00000003, 0.00000034],
+		[-5.70137996, -0.00328133, 0.00185737, 0.00330711, 0.00000003, 0.00000034],
+		[-5.70312413, -0.00327872, 0.00185629, 0.00330444, 0.00000002, 0.00000034],
+		[-5.70486360, -0.00327610, 0.00185520, 0.00330177, 0.00000002, 0.00000034],
+		[-5.70659840, -0.00327349, 0.00185412, 0.00329910, 0.00000001, 0.00000033],
+		[-5.70832854, -0.00327088, 0.00185304, 0.00329643, 0.00000001, 0.00000033],
+		[-5.71005402, -0.00326827, 0.00185195, 0.00329377, 0.00000000, 0.00000033],
+		[-5.71177484, -0.00326567, 0.00185087, 0.00329111, 0.00000000, 0.00000033],
+		[-5.71349103, -0.00326306, 0.00184979, 0.00328846, -0.00000000, 0.00000033],
+		[-5.71520259, -0.00326047, 0.00184870, 0.00328580, -0.00000001, 0.00000033],
+		[-5.71690953, -0.00325787, 0.00184762, 0.00328316, -0.00000001, 0.00000032],
+		[-5.71861185, -0.00325528, 0.00184654, 0.00328051, -0.00000002, 0.00000032],
+		[-5.72030958, -0.00325269, 0.00184546, 0.00327787, -0.00000002, 0.00000032],
+		[-5.72200271, -0.00325010, 0.00184438, 0.00327523, -0.00000002, 0.00000032],
+		[-5.72369126, -0.00324752, 0.00184330, 0.00327259, -0.00000003, 0.00000032],
+		[-5.72537523, -0.00324494, 0.00184222, 0.00326996, -0.00000003, 0.00000032],
+		[-5.72705463, -0.00324236, 0.00184114, 0.00326733, -0.00000004, 0.00000032],
+		[-5.72872948, -0.00323979, 0.00184006, 0.00326470, -0.00000004, 0.00000031],
+		[-5.73039979, -0.00323721, 0.00183898, 0.00326207, -0.00000005, 0.00000031],
+		[-5.73206555, -0.00323464, 0.00183790, 0.00325945, -0.00000005, 0.00000031],
+		[-5.73372679, -0.00323208, 0.00183682, 0.00325683, -0.00000005, 0.00000031],
+		[-5.73538351, -0.00322952, 0.00183574, 0.00325422, -0.00000006, 0.00000031],
+		[-5.73703572, -0.00322695, 0.00183466, 0.00325161, -0.00000006, 0.00000031],
+		[-5.73868343, -0.00322440, 0.00183359, 0.00324900, -0.00000007, 0.00000030],
+		[-5.74032664, -0.00322184, 0.00183251, 0.00324639, -0.00000007, 0.00000030],
+		[-5.74196538, -0.00321929, 0.00183143, 0.00324379, -0.00000007, 0.00000030],
+		[-5.74359964, -0.00321674, 0.00183036, 0.00324119, -0.00000008, 0.00000030],
+		[-5.74522943, -0.00321419, 0.00182928, 0.00323859, -0.00000008, 0.00000030],
+		[-5.74685478, -0.00321165, 0.00182820, 0.00323600, -0.00000009, 0.00000030],
+		[-5.74847567, -0.00320911, 0.00182713, 0.00323341, -0.00000009, 0.00000030],
+		[-5.75009213, -0.00320657, 0.00182605, 0.00323082, -0.00000009, 0.00000029],
+		[-5.75170417, -0.00320404, 0.00182498, 0.00322824, -0.00000010, 0.00000029],
+		[-5.75331179, -0.00320151, 0.00182390, 0.00322566, -0.00000010, 0.00000029],
+		[-5.75491499, -0.00319898, 0.00182283, 0.00322308, -0.00000010, 0.00000029],
+		[-5.75651380, -0.00319645, 0.00182176, 0.00322050, -0.00000011, 0.00000029],
+		[-5.75810822, -0.00319393, 0.00182068, 0.00321793, -0.00000011, 0.00000029],
+		[-5.75969826, -0.00319141, 0.00181961, 0.00321536, -0.00000012, 0.00000029],
+		[-5.76128392, -0.00318889, 0.00181854, 0.00321280, -0.00000012, 0.00000028],
+		[-5.76286523, -0.00318637, 0.00181746, 0.00321023, -0.00000012, 0.00000028],
+		[-5.76444218, -0.00318386, 0.00181639, 0.00320767, -0.00000013, 0.00000028],
+		[-5.76601479, -0.00318135, 0.00181532, 0.00320512, -0.00000013, 0.00000028],
+		[-5.76758306, -0.00317884, 0.00181425, 0.00320256, -0.00000013, 0.00000028],
+		[-5.76914700, -0.00317634, 0.00181318, 0.00320001, -0.00000014, 0.00000028],
+		[-5.77070663, -0.00317384, 0.00181210, 0.00319746, -0.00000014, 0.00000028],
+		[-5.77226195, -0.00317134, 0.00181103, 0.00319492, -0.00000015, 0.00000028],
+		[-5.77381298, -0.00316884, 0.00180996, 0.00319237, -0.00000015, 0.00000027],
+		[-5.77535971, -0.00316635, 0.00180889, 0.00318984, -0.00000015, 0.00000027],
+		[-5.77690216, -0.00316386, 0.00180782, 0.00318730, -0.00000016, 0.00000027],
+		[-5.77844035, -0.00316137, 0.00180675, 0.00318477, -0.00000016, 0.00000027],
+		[-5.77997427, -0.00315889, 0.00180569, 0.00318223, -0.00000016, 0.00000027],
+		[-5.78150394, -0.00315640, 0.00180462, 0.00317971, -0.00000017, 0.00000027],
+		[-5.78302936, -0.00315393, 0.00180355, 0.00317718, -0.00000017, 0.00000027],
+		[-5.78455056, -0.00315145, 0.00180248, 0.00317466, -0.00000017, 0.00000026],
+		[-5.78606752, -0.00314897, 0.00180141, 0.00317214, -0.00000018, 0.00000026],
+		[-5.78758027, -0.00314650, 0.00180035, 0.00316963, -0.00000018, 0.00000026],
+		[-5.78908882, -0.00314403, 0.00179928, 0.00316711, -0.00000019, 0.00000026],
+		[-5.79059316, -0.00314157, 0.00179821, 0.00316460, -0.00000019, 0.00000026],
+		[-5.79209332, -0.00313911, 0.00179715, 0.00316209, -0.00000019, 0.00000026],
+		[-5.79358930, -0.00313665, 0.00179608, 0.00315959, -0.00000020, 0.00000026],
+		[-5.79508110, -0.00313419, 0.00179501, 0.00315709, -0.00000020, 0.00000026],
+		[-5.79656875, -0.00313173, 0.00179395, 0.00315459, -0.00000020, 0.00000025],
+		[-5.79805224, -0.00312928, 0.00179288, 0.00315209, -0.00000021, 0.00000025],
+		[-5.79953159, -0.00312683, 0.00179182, 0.00314960, -0.00000021, 0.00000025],
+		[-5.80100681, -0.00312438, 0.00179075, 0.00314711, -0.00000021, 0.00000025],
+		[-5.80247790, -0.00312194, 0.00178969, 0.00314462, -0.00000022, 0.00000025],
+		[-5.80394487, -0.00311950, 0.00178863, 0.00314214, -0.00000022, 0.00000025],
+		[-5.80540774, -0.00311706, 0.00178756, 0.00313966, -0.00000022, 0.00000025],
+		[-5.80686651, -0.00311462, 0.00178650, 0.00313718, -0.00000023, 0.00000025],
+		[-5.80832119, -0.00311219, 0.00178544, 0.00313470, -0.00000023, 0.00000024],
+		[-5.80977179, -0.00310976, 0.00178438, 0.00313223, -0.00000023, 0.00000024],
+		[-5.81121832, -0.00310733, 0.00178331, 0.00312976, -0.00000024, 0.00000024],
+		[-5.81266079, -0.00310490, 0.00178225, 0.00312729, -0.00000024, 0.00000024],
+		[-5.81409921, -0.00310248, 0.00178119, 0.00312483, -0.00000024, 0.00000024],
+		[-5.81553358, -0.00310006, 0.00178013, 0.00312237, -0.00000025, 0.00000024],
+		[-5.81696392, -0.00309764, 0.00177907, 0.00311991, -0.00000025, 0.00000024],
+		[-5.81839023, -0.00309523, 0.00177801, 0.00311745, -0.00000025, 0.00000024],
+		[-5.81981252, -0.00309282, 0.00177695, 0.00311500, -0.00000026, 0.00000024],
+		[-5.82123081, -0.00309041, 0.00177589, 0.00311255, -0.00000026, 0.00000023],
+		[-5.82264509, -0.00308800, 0.00177483, 0.00311010, -0.00000026, 0.00000023],
+		[-5.82405539, -0.00308560, 0.00177377, 0.00310766, -0.00000027, 0.00000023],
+		[-5.82546171, -0.00308319, 0.00177271, 0.00310521, -0.00000027, 0.00000023],
+		[-5.82686405, -0.00308079, 0.00177165, 0.00310277, -0.00000027, 0.00000023],
+		[-5.82826243, -0.00307840, 0.00177059, 0.00310034, -0.00000028, 0.00000023],
+		[-5.82965686, -0.00307600, 0.00176954, 0.00309790, -0.00000028, 0.00000023],
+		[-5.83104734, -0.00307361, 0.00176848, 0.00309547, -0.00000028, 0.00000023],
+		[-5.83243389, -0.00307122, 0.00176742, 0.00309305, -0.00000029, 0.00000023],
+		[-5.83381650, -0.00306884, 0.00176637, 0.00309062, -0.00000029, 0.00000022],
+		[-5.83519520, -0.00306645, 0.00176531, 0.00308820, -0.00000029, 0.00000022],
+		[-5.83656999, -0.00306407, 0.00176425, 0.00308578, -0.00000030, 0.00000022],
+		[-5.83794088, -0.00306169, 0.00176320, 0.00308336, -0.00000030, 0.00000022],
+		[-5.83930788, -0.00305932, 0.00176214, 0.00308095, -0.00000030, 0.00000022],
+		[-5.84067099, -0.00305695, 0.00176109, 0.00307853, -0.00000031, 0.00000022],
+		[-5.84203023, -0.00305458, 0.00176003, 0.00307612, -0.00000031, 0.00000022],
+		[-5.84338560, -0.00305221, 0.00175898, 0.00307372, -0.00000031, 0.00000022],
+		[-5.84473712, -0.00304984, 0.00175793, 0.00307132, -0.00000031, 0.00000022],
+		[-5.84608479, -0.00304748, 0.00175687, 0.00306891, -0.00000032, 0.00000022],
+		[-5.84742862, -0.00304512, 0.00175582, 0.00306652, -0.00000032, 0.00000021],
+		[-5.84876862, -0.00304276, 0.00175477, 0.00306412, -0.00000032, 0.00000021],
+		[-5.85010480, -0.00304041, 0.00175371, 0.00306173, -0.00000033, 0.00000021],
+		[-5.85143717, -0.00303805, 0.00175266, 0.00305934, -0.00000033, 0.00000021],
+		[-5.85276573, -0.00303570, 0.00175161, 0.00305695, -0.00000033, 0.00000021],
+		[-5.85409050, -0.00303336, 0.00175056, 0.00305457, -0.00000034, 0.00000021],
+		[-5.85541148, -0.00303101, 0.00174951, 0.00305218, -0.00000034, 0.00000021],
+		[-5.85672868, -0.00302867, 0.00174846, 0.00304981, -0.00000034, 0.00000021],
+		[-5.85804212, -0.00302633, 0.00174741, 0.00304743, -0.00000034, 0.00000021],
+		[-5.85935180, -0.00302399, 0.00174636, 0.00304506, -0.00000035, 0.00000020],
+		[-5.86065772, -0.00302166, 0.00174531, 0.00304268, -0.00000035, 0.00000020],
+		[-5.86195991, -0.00301932, 0.00174426, 0.00304032, -0.00000035, 0.00000020],
+		[-5.86325835, -0.00301699, 0.00174321, 0.00303795, -0.00000036, 0.00000020],
+		[-5.86455308, -0.00301467, 0.00174216, 0.00303559, -0.00000036, 0.00000020],
+		[-5.86584409, -0.00301234, 0.00174111, 0.00303323, -0.00000036, 0.00000020],
+		[-5.86713139, -0.00301002, 0.00174006, 0.00303087, -0.00000037, 0.00000020],
+		[-5.86841499, -0.00300770, 0.00173902, 0.00302851, -0.00000037, 0.00000020],
+		[-5.86969490, -0.00300538, 0.00173797, 0.00302616, -0.00000037, 0.00000020],
+		[-5.87097113, -0.00300307, 0.00173692, 0.00302381, -0.00000037, 0.00000020],
+		[-5.87224368, -0.00300076, 0.00173588, 0.00302146, -0.00000038, 0.00000020],
+		[-5.87351257, -0.00299845, 0.00173483, 0.00301912, -0.00000038, 0.00000019],
+		[-5.87477781, -0.00299614, 0.00173378, 0.00301678, -0.00000038, 0.00000019],
+		[-5.87603940, -0.00299383, 0.00173274, 0.00301444, -0.00000039, 0.00000019],
+		[-5.87729735, -0.00299153, 0.00173169, 0.00301210, -0.00000039, 0.00000019],
+		[-5.87855167, -0.00298923, 0.00173065, 0.00300977, -0.00000039, 0.00000019],
+		[-5.87980237, -0.00298694, 0.00172961, 0.00300744, -0.00000039, 0.00000019],
+		[-5.88104946, -0.00298464, 0.00172856, 0.00300511, -0.00000040, 0.00000019],
+		[-5.88229294, -0.00298235, 0.00172752, 0.00300278, -0.00000040, 0.00000019],
+		[-5.88353283, -0.00298006, 0.00172648, 0.00300046, -0.00000040, 0.00000019],
+		[-5.88476913, -0.00297777, 0.00172543, 0.00299814, -0.00000040, 0.00000019],
+		[-5.88600185, -0.00297549, 0.00172439, 0.00299582, -0.00000041, 0.00000019],
+		[-5.88723100, -0.00297320, 0.00172335, 0.00299350, -0.00000041, 0.00000018],
+		[-5.88845659, -0.00297093, 0.00172231, 0.00299119, -0.00000041, 0.00000018],
+		[-5.88967862, -0.00296865, 0.00172127, 0.00298888, -0.00000042, 0.00000018],
+		[-5.89089712, -0.00296637, 0.00172022, 0.00298657, -0.00000042, 0.00000018],
+		[-5.89211207, -0.00296410, 0.00171918, 0.00298427, -0.00000042, 0.00000018],
+		[-5.89332350, -0.00296183, 0.00171814, 0.00298196, -0.00000042, 0.00000018],
+		[-5.89453141, -0.00295956, 0.00171710, 0.00297966, -0.00000043, 0.00000018],
+		[-5.89573581, -0.00295730, 0.00171607, 0.00297737, -0.00000043, 0.00000018],
+		[-5.89693670, -0.00295504, 0.00171503, 0.00297507, -0.00000043, 0.00000018],
+		[-5.89813411, -0.00295278, 0.00171399, 0.00297278, -0.00000043, 0.00000018],
+		[-5.89932802, -0.00295052, 0.00171295, 0.00297049, -0.00000044, 0.00000018],
+		[-5.90051846, -0.00294826, 0.00171191, 0.00296820, -0.00000044, 0.00000017],
+		[-5.90170544, -0.00294601, 0.00171088, 0.00296592, -0.00000044, 0.00000017],
+		[-5.90288895, -0.00294376, 0.00170984, 0.00296363, -0.00000045, 0.00000017],
+		[-5.90406901, -0.00294151, 0.00170880, 0.00296136, -0.00000045, 0.00000017],
+		[-5.90524562, -0.00293927, 0.00170777, 0.00295908, -0.00000045, 0.00000017],
+		[-5.90641881, -0.00293702, 0.00170673, 0.00295680, -0.00000045, 0.00000017],
+		[-5.90758856, -0.00293478, 0.00170569, 0.00295453, -0.00000046, 0.00000017],
+		[-5.90875490, -0.00293254, 0.00170466, 0.00295226, -0.00000046, 0.00000017],
+		[-5.90991782, -0.00293031, 0.00170363, 0.00295000, -0.00000046, 0.00000017],
+		[-5.91107735, -0.00292807, 0.00170259, 0.00294773, -0.00000046, 0.00000017],
+		[-5.91223348, -0.00292584, 0.00170156, 0.00294547, -0.00000047, 0.00000017],
+		[-5.91338622, -0.00292362, 0.00170052, 0.00294321, -0.00000047, 0.00000017],
+		[-5.91453559, -0.00292139, 0.00169949, 0.00294095, -0.00000047, 0.00000016],
+		[-5.91568159, -0.00291917, 0.00169846, 0.00293870, -0.00000047, 0.00000016],
+		[-5.91682423, -0.00291694, 0.00169743, 0.00293645, -0.00000048, 0.00000016],
+		[-5.91796352, -0.00291472, 0.00169639, 0.00293420, -0.00000048, 0.00000016],
+		[-5.91909946, -0.00291251, 0.00169536, 0.00293195, -0.00000048, 0.00000016],
+		[-5.92023207, -0.00291029, 0.00169433, 0.00292971, -0.00000048, 0.00000016],
+		[-5.92136135, -0.00290808, 0.00169330, 0.00292746, -0.00000049, 0.00000016],
+		[-5.92248731, -0.00290587, 0.00169227, 0.00292523, -0.00000049, 0.00000016],
+		[-5.92360996, -0.00290367, 0.00169124, 0.00292299, -0.00000049, 0.00000016],
+		[-5.92472930, -0.00290146, 0.00169021, 0.00292075, -0.00000049, 0.00000016],
+		[-5.92584536, -0.00289926, 0.00168918, 0.00291852, -0.00000050, 0.00000016],
+		[-5.92695812, -0.00289706, 0.00168816, 0.00291629, -0.00000050, 0.00000016],
+		[-5.92806761, -0.00289486, 0.00168713, 0.00291407, -0.00000050, 0.00000016],
+		[-5.92917382, -0.00289267, 0.00168610, 0.00291184, -0.00000050, 0.00000015],
+		[-5.93027677, -0.00289047, 0.00168507, 0.00290962, -0.00000051, 0.00000015],
+		[-5.93137647, -0.00288828, 0.00168405, 0.00290740, -0.00000051, 0.00000015],
+		[-5.93247293, -0.00288610, 0.00168302, 0.00290518, -0.00000051, 0.00000015],
+		[-5.93356614, -0.00288391, 0.00168199, 0.00290297, -0.00000051, 0.00000015],
+		[-5.93465613, -0.00288173, 0.00168097, 0.00290076, -0.00000051, 0.00000015],
+		[-5.93574289, -0.00287955, 0.00167994, 0.00289855, -0.00000052, 0.00000015],
+		[-5.93682644, -0.00287737, 0.00167892, 0.00289634, -0.00000052, 0.00000015],
+		[-5.93790678, -0.00287519, 0.00167789, 0.00289414, -0.00000052, 0.00000015],
+		[-5.93898392, -0.00287302, 0.00167687, 0.00289193, -0.00000052, 0.00000015],
+		[-5.94005788, -0.00287085, 0.00167585, 0.00288973, -0.00000053, 0.00000015],
+		[-5.94112865, -0.00286868, 0.00167482, 0.00288754, -0.00000053, 0.00000015],
+		[-5.94219625, -0.00286651, 0.00167380, 0.00288534, -0.00000053, 0.00000015],
+		[-5.94326068, -0.00286435, 0.00167278, 0.00288315, -0.00000053, 0.00000015],
+		[-5.94432196, -0.00286218, 0.00167176, 0.00288096, -0.00000054, 0.00000014],
+		[-5.94538008, -0.00286002, 0.00167074, 0.00287877, -0.00000054, 0.00000014],
+		[-5.94643506, -0.00285787, 0.00166971, 0.00287659, -0.00000054, 0.00000014],
+		[-5.94748691, -0.00285571, 0.00166869, 0.00287441, -0.00000054, 0.00000014],
+		[-5.94853563, -0.00285356, 0.00166767, 0.00287222, -0.00000055, 0.00000014],
+		[-5.94958124, -0.00285141, 0.00166666, 0.00287005, -0.00000055, 0.00000014],
+		[-5.95062373, -0.00284926, 0.00166564, 0.00286787, -0.00000055, 0.00000014],
+		[-5.95166312, -0.00284711, 0.00166462, 0.00286570, -0.00000055, 0.00000014],
+		[-5.95269941, -0.00284497, 0.00166360, 0.00286353, -0.00000055, 0.00000014],
+		[-5.95373262, -0.00284283, 0.00166258, 0.00286136, -0.00000056, 0.00000014],
+		[-5.95476275, -0.00284069, 0.00166156, 0.00285919, -0.00000056, 0.00000014],
+		[-5.95578980, -0.00283855, 0.00166055, 0.00285703, -0.00000056, 0.00000014],
+		[-5.95681380, -0.00283642, 0.00165953, 0.00285487, -0.00000056, 0.00000014],
+		[-5.95783474, -0.00283429, 0.00165852, 0.00285271, -0.00000057, 0.00000014],
+		[-5.95885262, -0.00283216, 0.00165750, 0.00285056, -0.00000057, 0.00000014],
+		[-5.95986747, -0.00283003, 0.00165648, 0.00284840, -0.00000057, 0.00000013],
+		[-5.96087929, -0.00282791, 0.00165547, 0.00284625, -0.00000057, 0.00000013],
+		[-5.96188808, -0.00282578, 0.00165446, 0.00284410, -0.00000057, 0.00000013],
+		[-5.96289385, -0.00282366, 0.00165344, 0.00284196, -0.00000058, 0.00000013],
+		[-5.96389662, -0.00282154, 0.00165243, 0.00283981, -0.00000058, 0.00000013],
+		[-5.96489638, -0.00281943, 0.00165142, 0.00283767, -0.00000058, 0.00000013],
+		[-5.96589315, -0.00281732, 0.00165040, 0.00283553, -0.00000058, 0.00000013],
+		[-5.96688693, -0.00281520, 0.00164939, 0.00283339, -0.00000058, 0.00000013],
+		[-5.96787774, -0.00281310, 0.00164838, 0.00283126, -0.00000059, 0.00000013],
+		[-5.96886557, -0.00281099, 0.00164737, 0.00282913, -0.00000059, 0.00000013],
+		[-5.96985044, -0.00280888, 0.00164636, 0.00282700, -0.00000059, 0.00000013],
+		[-5.97083235, -0.00280678, 0.00164535, 0.00282487, -0.00000059, 0.00000013],
+		[-5.97181132, -0.00280468, 0.00164434, 0.00282274, -0.00000060, 0.00000013],
+		[-5.97278734, -0.00280258, 0.00164333, 0.00282062, -0.00000060, 0.00000013],
+		[-5.97376044, -0.00280049, 0.00164232, 0.00281850, -0.00000060, 0.00000013],
+		[-5.97473060, -0.00279840, 0.00164131, 0.00281638, -0.00000060, 0.00000013],
+		[-5.97569785, -0.00279631, 0.00164031, 0.00281427, -0.00000060, 0.00000012],
+		[-5.97666219, -0.00279422, 0.00163930, 0.00281215, -0.00000061, 0.00000012],
+		[-5.97762362, -0.00279213, 0.00163829, 0.00281004, -0.00000061, 0.00000012],
+		[-5.97858216, -0.00279005, 0.00163729, 0.00280793, -0.00000061, 0.00000012],
+		[-5.97953782, -0.00278796, 0.00163628, 0.00280583, -0.00000061, 0.00000012],
+		[-5.98049059, -0.00278589, 0.00163527, 0.00280372, -0.00000061, 0.00000012],
+		[-5.98144049, -0.00278381, 0.00163427, 0.00280162, -0.00000062, 0.00000012],
+		[-5.98238752, -0.00278173, 0.00163326, 0.00279952, -0.00000062, 0.00000012],
+		[-5.98333170, -0.00277966, 0.00163226, 0.00279742, -0.00000062, 0.00000012],
+		[-5.98427302, -0.00277759, 0.00163126, 0.00279533, -0.00000062, 0.00000012],
+		[-5.98521150, -0.00277552, 0.00163025, 0.00279324, -0.00000062, 0.00000012],
+		[-5.98614715, -0.00277346, 0.00162925, 0.00279115, -0.00000063, 0.00000012],
+		[-5.98707997, -0.00277139, 0.00162825, 0.00278906, -0.00000063, 0.00000012],
+		[-5.98800996, -0.00276933, 0.00162725, 0.00278697, -0.00000063, 0.00000012],
+		[-5.98893715, -0.00276727, 0.00162625, 0.00278489, -0.00000063, 0.00000012],
+		[-5.98986153, -0.00276521, 0.00162525, 0.00278281, -0.00000063, 0.00000012],
+		[-5.99078310, -0.00276316, 0.00162425, 0.00278073, -0.00000064, 0.00000012],
+		[-5.99170189, -0.00276111, 0.00162325, 0.00277865, -0.00000064, 0.00000012],
+		[-5.99261789, -0.00275906, 0.00162225, 0.00277658, -0.00000064, 0.00000011],
+		[-5.99353112, -0.00275701, 0.00162125, 0.00277451, -0.00000064, 0.00000011],
+		[-5.99444158, -0.00275496, 0.00162025, 0.00277244, -0.00000064, 0.00000011],
+		[-5.99534927, -0.00275292, 0.00161925, 0.00277037, -0.00000065, 0.00000011],
+		[-5.99625421, -0.00275088, 0.00161826, 0.00276831, -0.00000065, 0.00000011],
+		[-5.99715640, -0.00274884, 0.00161726, 0.00276624, -0.00000065, 0.00000011],
+		[-5.99805585, -0.00274680, 0.00161626, 0.00276418, -0.00000065, 0.00000011],
+		[-5.99895257, -0.00274476, 0.00161527, 0.00276213, -0.00000065, 0.00000011],
+		[-5.99984656, -0.00274273, 0.00161427, 0.00276007, -0.00000066, 0.00000011],
+		[-6.00073784, -0.00274070, 0.00161328, 0.00275802, -0.00000066, 0.00000011],
+		[-6.00162640, -0.00273867, 0.00161228, 0.00275597, -0.00000066, 0.00000011],
+		[-6.00251225, -0.00273665, 0.00161129, 0.00275392, -0.00000066, 0.00000011],
+		[-6.00339541, -0.00273462, 0.00161030, 0.00275187, -0.00000066, 0.00000011],
+		[-6.00427588, -0.00273260, 0.00160931, 0.00274983, -0.00000066, 0.00000011],
+		[-6.00515367, -0.00273058, 0.00160831, 0.00274778, -0.00000067, 0.00000011],
+		[-6.00602878, -0.00272856, 0.00160732, 0.00274574, -0.00000067, 0.00000011],
+		[-6.00690122, -0.00272655, 0.00160633, 0.00274371, -0.00000067, 0.00000011],
+		[-6.00777100, -0.00272454, 0.00160534, 0.00274167, -0.00000067, 0.00000011],
+		[-6.00863812, -0.00272252, 0.00160435, 0.00273964, -0.00000067, 0.00000011],
+		[-6.00950260, -0.00272052, 0.00160336, 0.00273761, -0.00000068, 0.00000010],
+		[-6.01036444, -0.00271851, 0.00160237, 0.00273558, -0.00000068, 0.00000010],
+		[-6.01122364, -0.00271651, 0.00160138, 0.00273355, -0.00000068, 0.00000010],
+		[-6.01208022, -0.00271450, 0.00160039, 0.00273153, -0.00000068, 0.00000010],
+		[-6.01293417, -0.00271250, 0.00159941, 0.00272951, -0.00000068, 0.00000010],
+		[-6.01378552, -0.00271051, 0.00159842, 0.00272749, -0.00000068, 0.00000010],
+		[-6.01463426, -0.00270851, 0.00159743, 0.00272547, -0.00000069, 0.00000010],
+		[-6.01548040, -0.00270652, 0.00159645, 0.00272346, -0.00000069, 0.00000010],
+		[-6.01632394, -0.00270453, 0.00159546, 0.00272144, -0.00000069, 0.00000010],
+		[-6.01716491, -0.00270254, 0.00159448, 0.00271943, -0.00000069, 0.00000010],
+		[-6.01800329, -0.00270055, 0.00159349, 0.00271742, -0.00000069, 0.00000010],
+		[-6.01883911, -0.00269856, 0.00159251, 0.00271542, -0.00000070, 0.00000010],
+		[-6.01967236, -0.00269658, 0.00159153, 0.00271341, -0.00000070, 0.00000010],
+		[-6.02050306, -0.00269460, 0.00159054, 0.00271141, -0.00000070, 0.00000010],
+		[-6.02133120, -0.00269262, 0.00158956, 0.00270941, -0.00000070, 0.00000010],
+		[-6.02215680, -0.00269065, 0.00158858, 0.00270741, -0.00000070, 0.00000010],
+		[-6.02297987, -0.00268867, 0.00158760, 0.00270542, -0.00000070, 0.00000010],
+		[-6.02380040, -0.00268670, 0.00158662, 0.00270343, -0.00000071, 0.00000010],
+		[-6.02461841, -0.00268473, 0.00158564, 0.00270144, -0.00000071, 0.00000010],
+		[-6.02543391, -0.00268276, 0.00158466, 0.00269945, -0.00000071, 0.00000010],
+		[-6.02624690, -0.00268080, 0.00158368, 0.00269746, -0.00000071, 0.00000010],
+		[-6.02705738, -0.00267883, 0.00158270, 0.00269548, -0.00000071, 0.00000009],
+		[-6.02786537, -0.00267687, 0.00158172, 0.00269350, -0.00000071, 0.00000009],
+		[-6.02867087, -0.00267491, 0.00158074, 0.00269152, -0.00000072, 0.00000009],
+		[-6.02947389, -0.00267296, 0.00157977, 0.00268954, -0.00000072, 0.00000009],
+		[-6.03027443, -0.00267100, 0.00157879, 0.00268756, -0.00000072, 0.00000009],
+		[-6.03107251, -0.00266905, 0.00157781, 0.00268559, -0.00000072, 0.00000009],
+		[-6.03186812, -0.00266710, 0.00157684, 0.00268362, -0.00000072, 0.00000009],
+		[-6.03266127, -0.00266515, 0.00157586, 0.00268165, -0.00000072, 0.00000009],
+		[-6.03345198, -0.00266320, 0.00157489, 0.00267968, -0.00000073, 0.00000009],
+		[-6.03424025, -0.00266126, 0.00157391, 0.00267772, -0.00000073, 0.00000009],
+		[-6.03502608, -0.00265932, 0.00157294, 0.00267576, -0.00000073, 0.00000009],
+		[-6.03580948, -0.00265738, 0.00157197, 0.00267380, -0.00000073, 0.00000009],
+		[-6.03659046, -0.00265544, 0.00157100, 0.00267184, -0.00000073, 0.00000009],
+		[-6.03736903, -0.00265350, 0.00157002, 0.00266988, -0.00000073, 0.00000009],
+		[-6.03814518, -0.00265157, 0.00156905, 0.00266793, -0.00000074, 0.00000009],
+		[-6.03891894, -0.00264964, 0.00156808, 0.00266598, -0.00000074, 0.00000009],
+		[-6.03969029, -0.00264771, 0.00156711, 0.00266403, -0.00000074, 0.00000009],
+		[-6.04045926, -0.00264578, 0.00156614, 0.00266208, -0.00000074, 0.00000009],
+		[-6.04122585, -0.00264386, 0.00156517, 0.00266014, -0.00000074, 0.00000009],
+		[-6.04199006, -0.00264193, 0.00156421, 0.00265819, -0.00000074, 0.00000009],
+		[-6.04275190, -0.00264001, 0.00156324, 0.00265625, -0.00000075, 0.00000009],
+		[-6.04351138, -0.00263809, 0.00156227, 0.00265431, -0.00000075, 0.00000009],
+		[-6.04426850, -0.00263618, 0.00156130, 0.00265238, -0.00000075, 0.00000009],
+		[-6.04502327, -0.00263426, 0.00156034, 0.00265044, -0.00000075, 0.00000008],
+		[-6.04577570, -0.00263235, 0.00155937, 0.00264851, -0.00000075, 0.00000008],
+		[-6.04652579, -0.00263044, 0.00155841, 0.00264658, -0.00000075, 0.00000008],
+		[-6.04727354, -0.00262853, 0.00155744, 0.00264465, -0.00000075, 0.00000008],
+		[-6.04801898, -0.00262662, 0.00155648, 0.00264273, -0.00000076, 0.00000008],
+		[-6.04876210, -0.00262472, 0.00155552, 0.00264080, -0.00000076, 0.00000008],
+		[-6.04950290, -0.00262282, 0.00155455, 0.00263888, -0.00000076, 0.00000008],
+		[-6.05024140, -0.00262092, 0.00155359, 0.00263696, -0.00000076, 0.00000008],
+		[-6.05097760, -0.00261902, 0.00155263, 0.00263505, -0.00000076, 0.00000008],
+		[-6.05171151, -0.00261712, 0.00155167, 0.00263313, -0.00000076, 0.00000008],
+		[-6.05244313, -0.00261523, 0.00155071, 0.00263122, -0.00000077, 0.00000008],
+		[-6.05317248, -0.00261334, 0.00154975, 0.00262931, -0.00000077, 0.00000008],
+		[-6.05389955, -0.00261145, 0.00154879, 0.00262740, -0.00000077, 0.00000008],
+		[-6.05462435, -0.00260956, 0.00154783, 0.00262549, -0.00000077, 0.00000008],
+		[-6.05534689, -0.00260767, 0.00154687, 0.00262359, -0.00000077, 0.00000008],
+		[-6.05606718, -0.00260579, 0.00154591, 0.00262169, -0.00000077, 0.00000008],
+		[-6.05678521, -0.00260391, 0.00154495, 0.00261979, -0.00000077, 0.00000008],
+		[-6.05750101, -0.00260203, 0.00154400, 0.00261789, -0.00000078, 0.00000008],
+		[-6.05821457, -0.00260015, 0.00154304, 0.00261599, -0.00000078, 0.00000008],
+		[-6.05892590, -0.00259827, 0.00154209, 0.00261410, -0.00000078, 0.00000008],
+		[-6.05963501, -0.00259640, 0.00154113, 0.00261221, -0.00000078, 0.00000008],
+		[-6.06034190, -0.00259453, 0.00154018, 0.00261032, -0.00000078, 0.00000008],
+		[-6.06104657, -0.00259266, 0.00153922, 0.00260843, -0.00000078, 0.00000008],
+		[-6.06174905, -0.00259079, 0.00153827, 0.00260654, -0.00000078, 0.00000008],
+		[-6.06244932, -0.00258893, 0.00153732, 0.00260466, -0.00000079, 0.00000008],
+		[-6.06314740, -0.00258706, 0.00153637, 0.00260278, -0.00000079, 0.00000008],
+		[-6.06384330, -0.00258520, 0.00153541, 0.00260090, -0.00000079, 0.00000008],
+		[-6.06453701, -0.00258334, 0.00153446, 0.00259902, -0.00000079, 0.00000007],
+		[-6.06522855, -0.00258148, 0.00153351, 0.00259715, -0.00000079, 0.00000007],
+		[-6.06591793, -0.00257963, 0.00153256, 0.00259527, -0.00000079, 0.00000007],
+		[-6.06660514, -0.00257778, 0.00153161, 0.00259340, -0.00000079, 0.00000007],
+		[-6.06729019, -0.00257592, 0.00153067, 0.00259153, -0.00000080, 0.00000007],
+		[-6.06797309, -0.00257408, 0.00152972, 0.00258967, -0.00000080, 0.00000007],
+		[-6.06865385, -0.00257223, 0.00152877, 0.00258780, -0.00000080, 0.00000007],
+		[-6.06933248, -0.00257038, 0.00152782, 0.00258594, -0.00000080, 0.00000007],
+		[-6.07000896, -0.00256854, 0.00152688, 0.00258408, -0.00000080, 0.00000007],
+		[-6.07068333, -0.00256670, 0.00152593, 0.00258222, -0.00000080, 0.00000007],
+		[-6.07135557, -0.00256486, 0.00152499, 0.00258036, -0.00000080, 0.00000007],
+		[-6.07202570, -0.00256302, 0.00152404, 0.00257851, -0.00000081, 0.00000007],
+		[-6.07269372, -0.00256119, 0.00152310, 0.00257666, -0.00000081, 0.00000007],
+		[-6.07335964, -0.00255935, 0.00152215, 0.00257480, -0.00000081, 0.00000007],
+		[-6.07402346, -0.00255752, 0.00152121, 0.00257296, -0.00000081, 0.00000007],
+		[-6.07468520, -0.00255569, 0.00152027, 0.00257111, -0.00000081, 0.00000007],
+		[-6.07534484, -0.00255387, 0.00151933, 0.00256927, -0.00000081, 0.00000007],
+		[-6.07600241, -0.00255204, 0.00151839, 0.00256742, -0.00000081, 0.00000007],
+		[-6.07665791, -0.00255022, 0.00151745, 0.00256558, -0.00000082, 0.00000007],
+		[-6.07731134, -0.00254840, 0.00151651, 0.00256374, -0.00000082, 0.00000007],
+		[-6.07796271, -0.00254658, 0.00151557, 0.00256191, -0.00000082, 0.00000007],
+		[-6.07861202, -0.00254476, 0.00151463, 0.00256007, -0.00000082, 0.00000007],
+		[-6.07925928, -0.00254294, 0.00151369, 0.00255824, -0.00000082, 0.00000007],
+		[-6.07990450, -0.00254113, 0.00151275, 0.00255641, -0.00000082, 0.00000007],
+		[-6.08054769, -0.00253932, 0.00151182, 0.00255458, -0.00000082, 0.00000007],
+		[-6.08118884, -0.00253751, 0.00151088, 0.00255276, -0.00000082, 0.00000007],
+		[-6.08182796, -0.00253570, 0.00150994, 0.00255093, -0.00000083, 0.00000007],
+		[-6.08246507, -0.00253390, 0.00150901, 0.00254911, -0.00000083, 0.00000007],
+		[-6.08310016, -0.00253210, 0.00150807, 0.00254729, -0.00000083, 0.00000007],
+		[-6.08373324, -0.00253029, 0.00150714, 0.00254547, -0.00000083, 0.00000007],
+		[-6.08436431, -0.00252849, 0.00150621, 0.00254366, -0.00000083, 0.00000006],
+		[-6.08499339, -0.00252670, 0.00150527, 0.00254184, -0.00000083, 0.00000006],
+		[-6.08562048, -0.00252490, 0.00150434, 0.00254003, -0.00000083, 0.00000006],
+		[-6.08624558, -0.00252311, 0.00150341, 0.00253822, -0.00000084, 0.00000006],
+		[-6.08686870, -0.00252132, 0.00150248, 0.00253641, -0.00000084, 0.00000006],
+		[-6.08748985, -0.00251953, 0.00150155, 0.00253461, -0.00000084, 0.00000006],
+		[-6.08810902, -0.00251774, 0.00150062, 0.00253280, -0.00000084, 0.00000006],
+		[-6.08872624, -0.00251595, 0.00149969, 0.00253100, -0.00000084, 0.00000006],
+		[-6.08934149, -0.00251417, 0.00149876, 0.00252920, -0.00000084, 0.00000006],
+		[-6.08995479, -0.00251239, 0.00149784, 0.00252740, -0.00000084, 0.00000006],
+		[-6.09056615, -0.00251061, 0.00149691, 0.00252561, -0.00000084, 0.00000006],
+		[-6.09117556, -0.00250883, 0.00149598, 0.00252381, -0.00000085, 0.00000006],
+		[-6.09178304, -0.00250705, 0.00149506, 0.00252202, -0.00000085, 0.00000006],
+		[-6.09238859, -0.00250528, 0.00149413, 0.00252023, -0.00000085, 0.00000006],
+		[-6.09299221, -0.00250351, 0.00149320, 0.00251844, -0.00000085, 0.00000006],
+		[-6.09359392, -0.00250174, 0.00149228, 0.00251666, -0.00000085, 0.00000006],
+		[-6.09419371, -0.00249997, 0.00149136, 0.00251487, -0.00000085, 0.00000006],
+		[-6.09479159, -0.00249820, 0.00149043, 0.00251309, -0.00000085, 0.00000006],
+		[-6.09538757, -0.00249644, 0.00148951, 0.00251131, -0.00000085, 0.00000006],
+		[-6.09598165, -0.00249468, 0.00148859, 0.00250953, -0.00000086, 0.00000006],
+		[-6.09657385, -0.00249292, 0.00148767, 0.00250776, -0.00000086, 0.00000006],
+		[-6.09716415, -0.00249116, 0.00148675, 0.00250598, -0.00000086, 0.00000006],
+		[-6.09775257, -0.00248940, 0.00148583, 0.00250421, -0.00000086, 0.00000006],
+		[-6.09833912, -0.00248765, 0.00148491, 0.00250244, -0.00000086, 0.00000006],
+		[-6.09892380, -0.00248589, 0.00148399, 0.00250067, -0.00000086, 0.00000006],
+		[-6.09950662, -0.00248414, 0.00148307, 0.00249891, -0.00000086, 0.00000006],
+		[-6.10008757, -0.00248239, 0.00148215, 0.00249714, -0.00000086, 0.00000006],
+		[-6.10066667, -0.00248065, 0.00148124, 0.00249538, -0.00000086, 0.00000006],
+		[-6.10124393, -0.00247890, 0.00148032, 0.00249362, -0.00000087, 0.00000006],
+		[-6.10181934, -0.00247716, 0.00147941, 0.00249186, -0.00000087, 0.00000006],
+		[-6.10239291, -0.00247542, 0.00147849, 0.00249010, -0.00000087, 0.00000006],
+		[-6.10296465, -0.00247368, 0.00147758, 0.00248835, -0.00000087, 0.00000006],
+		[-6.10353456, -0.00247194, 0.00147666, 0.00248660, -0.00000087, 0.00000006],
+		[-6.10410265, -0.00247020, 0.00147575, 0.00248484, -0.00000087, 0.00000006],
+		[-6.10466892, -0.00246847, 0.00147484, 0.00248310, -0.00000087, 0.00000006],
+		[-6.10523338, -0.00246674, 0.00147393, 0.00248135, -0.00000087, 0.00000005],
+		[-6.10579604, -0.00246501, 0.00147301, 0.00247960, -0.00000088, 0.00000005],
+		[-6.10635689, -0.00246328, 0.00147210, 0.00247786, -0.00000088, 0.00000005],
+		[-6.10691595, -0.00246155, 0.00147119, 0.00247612, -0.00000088, 0.00000005],
+		[-6.10747322, -0.00245983, 0.00147028, 0.00247438, -0.00000088, 0.00000005],
+		[-6.10802871, -0.00245811, 0.00146937, 0.00247264, -0.00000088, 0.00000005],
+		[-6.10858241, -0.00245639, 0.00146847, 0.00247091, -0.00000088, 0.00000005],
+		[-6.10913434, -0.00245467, 0.00146756, 0.00246917, -0.00000088, 0.00000005],
+		[-6.10968450, -0.00245295, 0.00146665, 0.00246744, -0.00000088, 0.00000005],
+		[-6.11023289, -0.00245123, 0.00146575, 0.00246571, -0.00000088, 0.00000005],
+		[-6.11077953, -0.00244952, 0.00146484, 0.00246398, -0.00000089, 0.00000005],
+		[-6.11132441, -0.00244781, 0.00146393, 0.00246226, -0.00000089, 0.00000005],
+		[-6.11186754, -0.00244610, 0.00146303, 0.00246053, -0.00000089, 0.00000005],
+		[-6.11240893, -0.00244439, 0.00146213, 0.00245881, -0.00000089, 0.00000005],
+		[-6.11294858, -0.00244269, 0.00146122, 0.00245709, -0.00000089, 0.00000005],
+		[-6.11348649, -0.00244098, 0.00146032, 0.00245537, -0.00000089, 0.00000005],
+		[-6.11402268, -0.00243928, 0.00145942, 0.00245366, -0.00000089, 0.00000005],
+		[-6.11455714, -0.00243758, 0.00145852, 0.00245194, -0.00000089, 0.00000005],
+		[-6.11508989, -0.00243588, 0.00145762, 0.00245023, -0.00000089, 0.00000005],
+		[-6.11562092, -0.00243419, 0.00145672, 0.00244852, -0.00000090, 0.00000005],
+		[-6.11615024, -0.00243249, 0.00145582, 0.00244681, -0.00000090, 0.00000005],
+		[-6.11667786, -0.00243080, 0.00145492, 0.00244510, -0.00000090, 0.00000005],
+		[-6.11720378, -0.00242911, 0.00145402, 0.00244340, -0.00000090, 0.00000005],
+		[-6.11772800, -0.00242742, 0.00145312, 0.00244170, -0.00000090, 0.00000005],
+		[-6.11825054, -0.00242574, 0.00145223, 0.00244000, -0.00000090, 0.00000005],
+		[-6.11877140, -0.00242405, 0.00145133, 0.00243830, -0.00000090, 0.00000005],
+		[-6.11929057, -0.00242237, 0.00145043, 0.00243660, -0.00000090, 0.00000005],
+		[-6.11980807, -0.00242069, 0.00144954, 0.00243490, -0.00000090, 0.00000005],
+		[-6.12032390, -0.00241901, 0.00144864, 0.00243321, -0.00000090, 0.00000005],
+		[-6.12083807, -0.00241733, 0.00144775, 0.00243152, -0.00000091, 0.00000005],
+		[-6.12135058, -0.00241565, 0.00144686, 0.00242983, -0.00000091, 0.00000005],
+		[-6.12186144, -0.00241398, 0.00144597, 0.00242814, -0.00000091, 0.00000005],
+		[-6.12237064, -0.00241231, 0.00144507, 0.00242645, -0.00000091, 0.00000005],
+		[-6.12287820, -0.00241064, 0.00144418, 0.00242477, -0.00000091, 0.00000005],
+		[-6.12338412, -0.00240897, 0.00144329, 0.00242309, -0.00000091, 0.00000005],
+		[-6.12388841, -0.00240730, 0.00144240, 0.00242141, -0.00000091, 0.00000005],
+		[-6.12439107, -0.00240563, 0.00144151, 0.00241973, -0.00000091, 0.00000005],
+		[-6.12489210, -0.00240397, 0.00144062, 0.00241805, -0.00000091, 0.00000005],
+		[-6.12539151, -0.00240231, 0.00143974, 0.00241637, -0.00000092, 0.00000005],
+		[-6.12588931, -0.00240065, 0.00143885, 0.00241470, -0.00000092, 0.00000005],
+		[-6.12638549, -0.00239899, 0.00143796, 0.00241303, -0.00000092, 0.00000005],
+		[-6.12688007, -0.00239734, 0.00143708, 0.00241136, -0.00000092, 0.00000005],
+		[-6.12737305, -0.00239568, 0.00143619, 0.00240969, -0.00000092, 0.00000005],
+		[-6.12786443, -0.00239403, 0.00143531, 0.00240803, -0.00000092, 0.00000004],
+		[-6.12835422, -0.00239238, 0.00143442, 0.00240636, -0.00000092, 0.00000004],
+		[-6.12884242, -0.00239073, 0.00143354, 0.00240470, -0.00000092, 0.00000004],
+		[-6.12932904, -0.00238908, 0.00143266, 0.00240304, -0.00000092, 0.00000004],
+		[-6.12981408, -0.00238744, 0.00143177, 0.00240138, -0.00000092, 0.00000004],
+		[-6.13029755, -0.00238580, 0.00143089, 0.00239972, -0.00000093, 0.00000004],
+		[-6.13077945, -0.00238416, 0.00143001, 0.00239807, -0.00000093, 0.00000004],
+		[-6.13125979, -0.00238252, 0.00142913, 0.00239642, -0.00000093, 0.00000004],
+		[-6.13173857, -0.00238088, 0.00142825, 0.00239477, -0.00000093, 0.00000004],
+		[-6.13221579, -0.00237924, 0.00142737, 0.00239312, -0.00000093, 0.00000004],
+		[-6.13269147, -0.00237761, 0.00142649, 0.00239147, -0.00000093, 0.00000004],
+		[-6.13316560, -0.00237598, 0.00142562, 0.00238982, -0.00000093, 0.00000004],
+		[-6.13363819, -0.00237434, 0.00142474, 0.00238818, -0.00000093, 0.00000004],
+		[-6.13410924, -0.00237272, 0.00142386, 0.00238654, -0.00000093, 0.00000004],
+		[-6.13457876, -0.00237109, 0.00142299, 0.00238490, -0.00000093, 0.00000004],
+		[-6.13504676, -0.00236946, 0.00142211, 0.00238326, -0.00000093, 0.00000004],
+		[-6.13551323, -0.00236784, 0.00142124, 0.00238162, -0.00000094, 0.00000004],
+		[-6.13597818, -0.00236622, 0.00142036, 0.00237999, -0.00000094, 0.00000004],
+		[-6.13644163, -0.00236460, 0.00141949, 0.00237835, -0.00000094, 0.00000004],
+		[-6.13690356, -0.00236298, 0.00141862, 0.00237672, -0.00000094, 0.00000004],
+		[-6.13736399, -0.00236136, 0.00141774, 0.00237509, -0.00000094, 0.00000004],
+		[-6.13782292, -0.00235975, 0.00141687, 0.00237347, -0.00000094, 0.00000004],
+		[-6.13828035, -0.00235814, 0.00141600, 0.00237184, -0.00000094, 0.00000004],
+		[-6.13873630, -0.00235652, 0.00141513, 0.00237022, -0.00000094, 0.00000004],
+		[-6.13919076, -0.00235492, 0.00141426, 0.00236859, -0.00000094, 0.00000004],
+		[-6.13964373, -0.00235331, 0.00141339, 0.00236697, -0.00000094, 0.00000004],
+		[-6.14009523, -0.00235170, 0.00141253, 0.00236535, -0.00000094, 0.00000004],
+		[-6.14054526, -0.00235010, 0.00141166, 0.00236374, -0.00000095, 0.00000004],
+		[-6.14099381, -0.00234850, 0.00141079, 0.00236212, -0.00000095, 0.00000004],
+		[-6.14144091, -0.00234689, 0.00140993, 0.00236051, -0.00000095, 0.00000004],
+		[-6.14188654, -0.00234530, 0.00140906, 0.00235890, -0.00000095, 0.00000004],
+		[-6.14233072, -0.00234370, 0.00140820, 0.00235729, -0.00000095, 0.00000004],
+		[-6.14277345, -0.00234210, 0.00140733, 0.00235568, -0.00000095, 0.00000004],
+		[-6.14321473, -0.00234051, 0.00140647, 0.00235407, -0.00000095, 0.00000004],
+		[-6.14365457, -0.00233892, 0.00140561, 0.00235247, -0.00000095, 0.00000004],
+		[-6.14409297, -0.00233733, 0.00140474, 0.00235087, -0.00000095, 0.00000004],
+		[-6.14452994, -0.00233574, 0.00140388, 0.00234926, -0.00000095, 0.00000004],
+		[-6.14496548, -0.00233415, 0.00140302, 0.00234767, -0.00000095, 0.00000004],
+		[-6.14539959, -0.00233257, 0.00140216, 0.00234607, -0.00000096, 0.00000004],
+		[-6.14583228, -0.00233098, 0.00140130, 0.00234447, -0.00000096, 0.00000004],
+		[-6.14626356, -0.00232940, 0.00140044, 0.00234288, -0.00000096, 0.00000004],
+		[-6.14669342, -0.00232782, 0.00139958, 0.00234129, -0.00000096, 0.00000004],
+		[-6.14712188, -0.00232625, 0.00139873, 0.00233970, -0.00000096, 0.00000004],
+		[-6.14754894, -0.00232467, 0.00139787, 0.00233811, -0.00000096, 0.00000004],
+		[-6.14797459, -0.00232309, 0.00139701, 0.00233652, -0.00000096, 0.00000004],
+		[-6.14839885, -0.00232152, 0.00139616, 0.00233493, -0.00000096, 0.00000004],
+		[-6.14882172, -0.00231995, 0.00139530, 0.00233335, -0.00000096, 0.00000004],
+		[-6.14924320, -0.00231838, 0.00139445, 0.00233177, -0.00000096, 0.00000004],
+		[-6.14966330, -0.00231681, 0.00139359, 0.00233019, -0.00000096, 0.00000004],
+		[-6.15008202, -0.00231525, 0.00139274, 0.00232861, -0.00000097, 0.00000004],
+		[-6.15049937, -0.00231368, 0.00139189, 0.00232704, -0.00000097, 0.00000004],
+		[-6.15091535, -0.00231212, 0.00139104, 0.00232546, -0.00000097, 0.00000004],
+		[-6.15132996, -0.00231056, 0.00139018, 0.00232389, -0.00000097, 0.00000004],
+		[-6.15174321, -0.00230900, 0.00138933, 0.00232232, -0.00000097, 0.00000003],
+		[-6.15215510, -0.00230744, 0.00138848, 0.00232075, -0.00000097, 0.00000003],
+		[-6.15256564, -0.00230589, 0.00138763, 0.00231918, -0.00000097, 0.00000003],
+		[-6.15297483, -0.00230433, 0.00138679, 0.00231761, -0.00000097, 0.00000003],
+		[-6.15338268, -0.00230278, 0.00138594, 0.00231605, -0.00000097, 0.00000003],
+		[-6.15378918, -0.00230123, 0.00138509, 0.00231449, -0.00000097, 0.00000003],
+		[-6.15419435, -0.00229968, 0.00138424, 0.00231293, -0.00000097, 0.00000003],
+		[-6.15459818, -0.00229814, 0.00138340, 0.00231137, -0.00000097, 0.00000003],
+		[-6.15500069, -0.00229659, 0.00138255, 0.00230981, -0.00000097, 0.00000003],
+		[-6.15540187, -0.00229505, 0.00138171, 0.00230825, -0.00000098, 0.00000003],
+		[-6.15580173, -0.00229350, 0.00138087, 0.00230670, -0.00000098, 0.00000003],
+		[-6.15620027, -0.00229196, 0.00138002, 0.00230515, -0.00000098, 0.00000003],
+		[-6.15659750, -0.00229042, 0.00137918, 0.00230360, -0.00000098, 0.00000003],
+		[-6.15699342, -0.00228889, 0.00137834, 0.00230205, -0.00000098, 0.00000003],
+		[-6.15738804, -0.00228735, 0.00137750, 0.00230050, -0.00000098, 0.00000003],
+		[-6.15778136, -0.00228582, 0.00137666, 0.00229896, -0.00000098, 0.00000003],
+		[-6.15817338, -0.00228429, 0.00137582, 0.00229741, -0.00000098, 0.00000003],
+		[-6.15856410, -0.00228276, 0.00137498, 0.00229587, -0.00000098, 0.00000003],
+		[-6.15895354, -0.00228123, 0.00137414, 0.00229433, -0.00000098, 0.00000003],
+		[-6.15934170, -0.00227970, 0.00137330, 0.00229279, -0.00000098, 0.00000003],
+		[-6.15972857, -0.00227818, 0.00137246, 0.00229125, -0.00000098, 0.00000003],
+		[-6.16011416, -0.00227665, 0.00137162, 0.00228972, -0.00000099, 0.00000003],
+		[-6.16049848, -0.00227513, 0.00137079, 0.00228818, -0.00000099, 0.00000003],
+		[-6.16088154, -0.00227361, 0.00136995, 0.00228665, -0.00000099, 0.00000003],
+		[-6.16126332, -0.00227209, 0.00136912, 0.00228512, -0.00000099, 0.00000003],
+		[-6.16164385, -0.00227057, 0.00136828, 0.00228359, -0.00000099, 0.00000003],
+		[-6.16202312, -0.00226906, 0.00136745, 0.00228207, -0.00000099, 0.00000003],
+		[-6.16240113, -0.00226754, 0.00136662, 0.00228054, -0.00000099, 0.00000003],
+		[-6.16277790, -0.00226603, 0.00136579, 0.00227902, -0.00000099, 0.00000003],
+		[-6.16315341, -0.00226452, 0.00136495, 0.00227750, -0.00000099, 0.00000003],
+		[-6.16352769, -0.00226301, 0.00136412, 0.00227598, -0.00000099, 0.00000003],
+		[-6.16390073, -0.00226151, 0.00136329, 0.00227446, -0.00000099, 0.00000003],
+		[-6.16427253, -0.00226000, 0.00136246, 0.00227294, -0.00000099, 0.00000003],
+		[-6.16464310, -0.00225850, 0.00136164, 0.00227143, -0.00000099, 0.00000003],
+		[-6.16501245, -0.00225700, 0.00136081, 0.00226991, -0.00000100, 0.00000003],
+		[-6.16538057, -0.00225549, 0.00135998, 0.00226840, -0.00000100, 0.00000003],
+		[-6.16574747, -0.00225400, 0.00135915, 0.00226689, -0.00000100, 0.00000003],
+		[-6.16611316, -0.00225250, 0.00135833, 0.00226538, -0.00000100, 0.00000003],
+		[-6.16647763, -0.00225100, 0.00135750, 0.00226388, -0.00000100, 0.00000003],
+		[-6.16684090, -0.00224951, 0.00135668, 0.00226237, -0.00000100, 0.00000003],
+		[-6.16720296, -0.00224802, 0.00135585, 0.00226087, -0.00000100, 0.00000003],
+		[-6.16756382, -0.00224653, 0.00135503, 0.00225936, -0.00000100, 0.00000003],
+		[-6.16792348, -0.00224504, 0.00135421, 0.00225786, -0.00000100, 0.00000003],
+		[-6.16828195, -0.00224355, 0.00135338, 0.00225637, -0.00000100, 0.00000003],
+		[-6.16863923, -0.00224206, 0.00135256, 0.00225487, -0.00000100, 0.00000003],
+		[-6.16899533, -0.00224058, 0.00135174, 0.00225337, -0.00000100, 0.00000003],
+		[-6.16935024, -0.00223910, 0.00135092, 0.00225188, -0.00000100, 0.00000003],
+		[-6.16970397, -0.00223762, 0.00135010, 0.00225039, -0.00000100, 0.00000003],
+		[-6.17005653, -0.00223614, 0.00134928, 0.00224890, -0.00000101, 0.00000003],
+		[-6.17040791, -0.00223466, 0.00134846, 0.00224741, -0.00000101, 0.00000003],
+		[-6.17075813, -0.00223318, 0.00134765, 0.00224592, -0.00000101, 0.00000003],
+		[-6.17110719, -0.00223171, 0.00134683, 0.00224444, -0.00000101, 0.00000003],
+		[-6.17145508, -0.00223024, 0.00134601, 0.00224295, -0.00000101, 0.00000003],
+		[-6.17180182, -0.00222876, 0.00134520, 0.00224147, -0.00000101, 0.00000003],
+		[-6.17214740, -0.00222729, 0.00134438, 0.00223999, -0.00000101, 0.00000003],
+		[-6.17249183, -0.00222583, 0.00134357, 0.00223851, -0.00000101, 0.00000003],
+		[-6.17283512, -0.00222436, 0.00134275, 0.00223703, -0.00000101, 0.00000003],
+		[-6.17317726, -0.00222289, 0.00134194, 0.00223556, -0.00000101, 0.00000003],
+		[-6.17351827, -0.00222143, 0.00134113, 0.00223408, -0.00000101, 0.00000003],
+		[-6.17385813, -0.00221997, 0.00134032, 0.00223261, -0.00000101, 0.00000003],
+		[-6.17419687, -0.00221851, 0.00133950, 0.00223114, -0.00000101, 0.00000003],
+		[-6.17453448, -0.00221705, 0.00133869, 0.00222967, -0.00000101, 0.00000003],
+		[-6.17487096, -0.00221559, 0.00133788, 0.00222820, -0.00000101, 0.00000003],
+		[-6.17520632, -0.00221414, 0.00133708, 0.00222674, -0.00000102, 0.00000003],
+		[-6.17554056, -0.00221269, 0.00133627, 0.00222527, -0.00000102, 0.00000003],
+		[-6.17587369, -0.00221123, 0.00133546, 0.00222381, -0.00000102, 0.00000003],
+		[-6.17620571, -0.00220978, 0.00133465, 0.00222235, -0.00000102, 0.00000003],
+		[-6.17653662, -0.00220833, 0.00133385, 0.00222089, -0.00000102, 0.00000003],
+		[-6.17686642, -0.00220689, 0.00133304, 0.00221943, -0.00000102, 0.00000003],
+		[-6.17719513, -0.00220544, 0.00133223, 0.00221798, -0.00000102, 0.00000003],
+		[-6.17752273, -0.00220400, 0.00133143, 0.00221652, -0.00000102, 0.00000003],
+		[-6.17784925, -0.00220255, 0.00133063, 0.00221507, -0.00000102, 0.00000003],
+		[-6.17817467, -0.00220111, 0.00132982, 0.00221362, -0.00000102, 0.00000002],
+		[-6.17849900, -0.00219967, 0.00132902, 0.00221217, -0.00000102, 0.00000002],
+		[-6.17882225, -0.00219823, 0.00132822, 0.00221072, -0.00000102, 0.00000002],
+		[-6.17914442, -0.00219680, 0.00132742, 0.00220927, -0.00000102, 0.00000002],
+		[-6.17946552, -0.00219536, 0.00132662, 0.00220782, -0.00000102, 0.00000002],
+		[-6.17978554, -0.00219393, 0.00132582, 0.00220638, -0.00000102, 0.00000002],
+		[-6.18010448, -0.00219250, 0.00132502, 0.00220494, -0.00000103, 0.00000002],
+		[-6.18042237, -0.00219107, 0.00132422, 0.00220350, -0.00000103, 0.00000002],
+		[-6.18073919, -0.00218964, 0.00132342, 0.00220206, -0.00000103, 0.00000002],
+		[-6.18105494, -0.00218821, 0.00132262, 0.00220062, -0.00000103, 0.00000002],
+		[-6.18136964, -0.00218679, 0.00132183, 0.00219919, -0.00000103, 0.00000002],
+		[-6.18168329, -0.00218536, 0.00132103, 0.00219775, -0.00000103, 0.00000002],
+		[-6.18199589, -0.00218394, 0.00132024, 0.00219632, -0.00000103, 0.00000002],
+		[-6.18230744, -0.00218252, 0.00131944, 0.00219489, -0.00000103, 0.00000002],
+		[-6.18261795, -0.00218110, 0.00131865, 0.00219346, -0.00000103, 0.00000002],
+		[-6.18292741, -0.00217968, 0.00131785, 0.00219203, -0.00000103, 0.00000002],
+		[-6.18323584, -0.00217827, 0.00131706, 0.00219060, -0.00000103, 0.00000002],
+		[-6.18354323, -0.00217685, 0.00131627, 0.00218918, -0.00000103, 0.00000002],
+		[-6.18384960, -0.00217544, 0.00131548, 0.00218776, -0.00000103, 0.00000002],
+		[-6.18415493, -0.00217403, 0.00131469, 0.00218633, -0.00000103, 0.00000002],
+		[-6.18445924, -0.00217262, 0.00131390, 0.00218491, -0.00000103, 0.00000002],
+		[-6.18476253, -0.00217121, 0.00131311, 0.00218350, -0.00000103, 0.00000002],
+		[-6.18506481, -0.00216980, 0.00131232, 0.00218208, -0.00000104, 0.00000002],
+		[-6.18536606, -0.00216840, 0.00131153, 0.00218066, -0.00000104, 0.00000002],
+		[-6.18566631, -0.00216699, 0.00131074, 0.00217925, -0.00000104, 0.00000002],
+		[-6.18596555, -0.00216559, 0.00130996, 0.00217784, -0.00000104, 0.00000002],
+		[-6.18626378, -0.00216419, 0.00130917, 0.00217643, -0.00000104, 0.00000002],
+		[-6.18656101, -0.00216279, 0.00130839, 0.00217502, -0.00000104, 0.00000002],
+		[-6.18685724, -0.00216139, 0.00130760, 0.00217361, -0.00000104, 0.00000002],
+		[-6.18715248, -0.00216000, 0.00130682, 0.00217220, -0.00000104, 0.00000002],
+		[-6.18744673, -0.00215860, 0.00130603, 0.00217080, -0.00000104, 0.00000002],
+		[-6.18773998, -0.00215721, 0.00130525, 0.00216939, -0.00000104, 0.00000002],
+		[-6.18803225, -0.00215582, 0.00130447, 0.00216799, -0.00000104, 0.00000002],
+		[-6.18832353, -0.00215443, 0.00130369, 0.00216659, -0.00000104, 0.00000002],
+		[-6.18861384, -0.00215304, 0.00130291, 0.00216519, -0.00000104, 0.00000002],
+		[-6.18890316, -0.00215165, 0.00130213, 0.00216380, -0.00000104, 0.00000002],
+		[-6.18919152, -0.00215026, 0.00130135, 0.00216240, -0.00000104, 0.00000002],
+		[-6.18947890, -0.00214888, 0.00130057, 0.00216101, -0.00000104, 0.00000002],
+		[-6.18976532, -0.00214750, 0.00129979, 0.00215961, -0.00000104, 0.00000002],
+		[-6.19005077, -0.00214612, 0.00129901, 0.00215822, -0.00000105, 0.00000002],
+		[-6.19033526, -0.00214474, 0.00129823, 0.00215683, -0.00000105, 0.00000002],
+		[-6.19061879, -0.00214336, 0.00129746, 0.00215545, -0.00000105, 0.00000002],
+		[-6.19090136, -0.00214198, 0.00129668, 0.00215406, -0.00000105, 0.00000002],
+		[-6.19118298, -0.00214061, 0.00129591, 0.00215268, -0.00000105, 0.00000002],
+		[-6.19146366, -0.00213923, 0.00129513, 0.00215129, -0.00000105, 0.00000002],
+		[-6.19174338, -0.00213786, 0.00129436, 0.00214991, -0.00000105, 0.00000002],
+		[-6.19202217, -0.00213649, 0.00129359, 0.00214853, -0.00000105, 0.00000002],
+		[-6.19230001, -0.00213512, 0.00129281, 0.00214715, -0.00000105, 0.00000002],
+		[-6.19257691, -0.00213375, 0.00129204, 0.00214577, -0.00000105, 0.00000002],
+		[-6.19285288, -0.00213239, 0.00129127, 0.00214440, -0.00000105, 0.00000002],
+		[-6.19312792, -0.00213102, 0.00129050, 0.00214302, -0.00000105, 0.00000002],
+		[-6.19340203, -0.00212966, 0.00128973, 0.00214165, -0.00000105, 0.00000002],
+		[-6.19367521, -0.00212830, 0.00128896, 0.00214028, -0.00000105, 0.00000002],
+		[-6.19394748, -0.00212694, 0.00128819, 0.00213891, -0.00000105, 0.00000002],
+		[-6.19421882, -0.00212558, 0.00128743, 0.00213754, -0.00000105, 0.00000002],
+		[-6.19448924, -0.00212422, 0.00128666, 0.00213617, -0.00000105, 0.00000002],
+		[-6.19475875, -0.00212286, 0.00128589, 0.00213481, -0.00000105, 0.00000002],
+		[-6.19502735, -0.00212151, 0.00128513, 0.00213344, -0.00000105, 0.00000002],
+		[-6.19529504, -0.00212016, 0.00128436, 0.00213208, -0.00000106, 0.00000002],
+		[-6.19556183, -0.00211880, 0.00128360, 0.00213072, -0.00000106, 0.00000002],
+		[-6.19582771, -0.00211745, 0.00128283, 0.00212936, -0.00000106, 0.00000002],
+		[-6.19609270, -0.00211611, 0.00128207, 0.00212800, -0.00000106, 0.00000002],
+		[-6.19635678, -0.00211476, 0.00128131, 0.00212665, -0.00000106, 0.00000002],
+		[-6.19661998, -0.00211341, 0.00128054, 0.00212529, -0.00000106, 0.00000002],
+		[-6.19688228, -0.00211207, 0.00127978, 0.00212394, -0.00000106, 0.00000002],
+		[-6.19714369, -0.00211073, 0.00127902, 0.00212259, -0.00000106, 0.00000002],
+		[-6.19740422, -0.00210938, 0.00127826, 0.00212123, -0.00000106, 0.00000002],
+		[-6.19766387, -0.00210804, 0.00127750, 0.00211989, -0.00000106, 0.00000002],
+		[-6.19792264, -0.00210671, 0.00127674, 0.00211854, -0.00000106, 0.00000002],
+		[-6.19818053, -0.00210537, 0.00127599, 0.00211719, -0.00000106, 0.00000002],
+		[-6.19843754, -0.00210403, 0.00127523, 0.00211585, -0.00000106, 0.00000002],
+		[-6.19869369, -0.00210270, 0.00127447, 0.00211450, -0.00000106, 0.00000002],
+		[-6.19894896, -0.00210137, 0.00127372, 0.00211316, -0.00000106, 0.00000002],
+		[-6.19920337, -0.00210004, 0.00127296, 0.00211182, -0.00000106, 0.00000002],
+		[-6.19945692, -0.00209871, 0.00127221, 0.00211048, -0.00000106, 0.00000002],
+		[-6.19970961, -0.00209738, 0.00127145, 0.00210914, -0.00000106, 0.00000002],
+		[-6.19996144, -0.00209605, 0.00127070, 0.00210781, -0.00000106, 0.00000002],
+		[-6.20021242, -0.00209473, 0.00126995, 0.00210647, -0.00000107, 0.00000002],
+		[-6.20046254, -0.00209340, 0.00126919, 0.00210514, -0.00000107, 0.00000002],
+		[-6.20071181, -0.00209208, 0.00126844, 0.00210381, -0.00000107, 0.00000002],
+		[-6.20096024, -0.00209076, 0.00126769, 0.00210248, -0.00000107, 0.00000002],
+		[-6.20120782, -0.00208944, 0.00126694, 0.00210115, -0.00000107, 0.00000002],
+		[-6.20145457, -0.00208812, 0.00126619, 0.00209982, -0.00000107, 0.00000002],
+		[-6.20170047, -0.00208680, 0.00126544, 0.00209850, -0.00000107, 0.00000002],
+		[-6.20194554, -0.00208549, 0.00126469, 0.00209717, -0.00000107, 0.00000002],
+		[-6.20218978, -0.00208417, 0.00126395, 0.00209585, -0.00000107, 0.00000002],
+		[-6.20243318, -0.00208286, 0.00126320, 0.00209453, -0.00000107, 0.00000002],
+		[-6.20267576, -0.00208155, 0.00126245, 0.00209321, -0.00000107, 0.00000002],
+		[-6.20291751, -0.00208024, 0.00126171, 0.00209189, -0.00000107, 0.00000002],
+		[-6.20315844, -0.00207893, 0.00126096, 0.00209057, -0.00000107, 0.00000002],
+		[-6.20339855, -0.00207762, 0.00126022, 0.00208925, -0.00000107, 0.00000002],
+		[-6.20363785, -0.00207632, 0.00125947, 0.00208794, -0.00000107, 0.00000002],
+		[-6.20387633, -0.00207501, 0.00125873, 0.00208663, -0.00000107, 0.00000002],
+		[-6.20411399, -0.00207371, 0.00125799, 0.00208532, -0.00000107, 0.00000002],
+		[-6.20435085, -0.00207241, 0.00125725, 0.00208400, -0.00000107, 0.00000002],
+		[-6.20458690, -0.00207111, 0.00125650, 0.00208270, -0.00000107, 0.00000002],
+		[-6.20482215, -0.00206981, 0.00125576, 0.00208139, -0.00000107, 0.00000002],
+		[-6.20505660, -0.00206852, 0.00125502, 0.00208008, -0.00000107, 0.00000002],
+		[-6.20529024, -0.00206722, 0.00125428, 0.00207878, -0.00000108, 0.00000002],
+		[-6.20552310, -0.00206593, 0.00125355, 0.00207748, -0.00000108, 0.00000002],
+		[-6.20575515, -0.00206463, 0.00125281, 0.00207617, -0.00000108, 0.00000002],
+		[-6.20598642, -0.00206334, 0.00125207, 0.00207487, -0.00000108, 0.00000002],
+		[-6.20621690, -0.00206205, 0.00125133, 0.00207357, -0.00000108, 0.00000002],
+		[-6.20644659, -0.00206076, 0.00125060, 0.00207228, -0.00000108, 0.00000002],
+		[-6.20667550, -0.00205947, 0.00124986, 0.00207098, -0.00000108, 0.00000002],
+		[-6.20690362, -0.00205819, 0.00124913, 0.00206969, -0.00000108, 0.00000002],
+		[-6.20713097, -0.00205690, 0.00124839, 0.00206839, -0.00000108, 0.00000002],
+		[-6.20735754, -0.00205562, 0.00124766, 0.00206710, -0.00000108, 0.00000002],
+		[-6.20758334, -0.00205434, 0.00124693, 0.00206581, -0.00000108, 0.00000002],
+		[-6.20780837, -0.00205306, 0.00124619, 0.00206452, -0.00000108, 0.00000001],
+		[-6.20803263, -0.00205178, 0.00124546, 0.00206323, -0.00000108, 0.00000001],
+		[-6.20825612, -0.00205050, 0.00124473, 0.00206195, -0.00000108, 0.00000001],
+		[-6.20847885, -0.00204923, 0.00124400, 0.00206066, -0.00000108, 0.00000001],
+		[-6.20870082, -0.00204795, 0.00124327, 0.00205938, -0.00000108, 0.00000001],
+		[-6.20892203, -0.00204668, 0.00124254, 0.00205810, -0.00000108, 0.00000001],
+		[-6.20914249, -0.00204540, 0.00124181, 0.00205681, -0.00000108, 0.00000001],
+		[-6.20936219, -0.00204413, 0.00124109, 0.00205554, -0.00000108, 0.00000001],
+		[-6.20958114, -0.00204286, 0.00124036, 0.00205426, -0.00000108, 0.00000001],
+		[-6.20979934, -0.00204160, 0.00123963, 0.00205298, -0.00000108, 0.00000001],
+		[-6.21001679, -0.00204033, 0.00123891, 0.00205171, -0.00000108, 0.00000001],
+		[-6.21023350, -0.00203906, 0.00123818, 0.00205043, -0.00000108, 0.00000001],
+		[-6.21044947, -0.00203780, 0.00123746, 0.00204916, -0.00000109, 0.00000001],
+		[-6.21066470, -0.00203654, 0.00123673, 0.00204789, -0.00000109, 0.00000001],
+		[-6.21087920, -0.00203528, 0.00123601, 0.00204662, -0.00000109, 0.00000001],
+		[-6.21109295, -0.00203402, 0.00123529, 0.00204535, -0.00000109, 0.00000001],
+		[-6.21130598, -0.00203276, 0.00123456, 0.00204408, -0.00000109, 0.00000001],
+		[-6.21151828, -0.00203150, 0.00123384, 0.00204282, -0.00000109, 0.00000001],
+		[-6.21172985, -0.00203024, 0.00123312, 0.00204155, -0.00000109, 0.00000001],
+		[-6.21194069, -0.00202899, 0.00123240, 0.00204029, -0.00000109, 0.00000001],
+		[-6.21215082, -0.00202774, 0.00123168, 0.00203903, -0.00000109, 0.00000001],
+		[-6.21236022, -0.00202648, 0.00123096, 0.00203777, -0.00000109, 0.00000001],
+		[-6.21256890, -0.00202523, 0.00123025, 0.00203651, -0.00000109, 0.00000001],
+		[-6.21277687, -0.00202398, 0.00122953, 0.00203525, -0.00000109, 0.00000001],
+		[-6.21298413, -0.00202274, 0.00122881, 0.00203399, -0.00000109, 0.00000001],
+		[-6.21319067, -0.00202149, 0.00122809, 0.00203274, -0.00000109, 0.00000001],
+		[-6.21339651, -0.00202025, 0.00122738, 0.00203149, -0.00000109, 0.00000001],
+		[-6.21360164, -0.00201900, 0.00122666, 0.00203023, -0.00000109, 0.00000001],
+		[-6.21380607, -0.00201776, 0.00122595, 0.00202898, -0.00000109, 0.00000001],
+		[-6.21400979, -0.00201652, 0.00122523, 0.00202773, -0.00000109, 0.00000001],
+		[-6.21421282, -0.00201528, 0.00122452, 0.00202649, -0.00000109, 0.00000001],
+		[-6.21441515, -0.00201404, 0.00122381, 0.00202524, -0.00000109, 0.00000001],
+		[-6.21461678, -0.00201280, 0.00122310, 0.00202399, -0.00000109, 0.00000001],
+		[-6.21481773, -0.00201157, 0.00122239, 0.00202275, -0.00000109, 0.00000001],
+		[-6.21501798, -0.00201033, 0.00122167, 0.00202151, -0.00000109, 0.00000001],
+		[-6.21521754, -0.00200910, 0.00122096, 0.00202026, -0.00000109, 0.00000001],
+		[-6.21541642, -0.00200787, 0.00122026, 0.00201902, -0.00000110, 0.00000001],
+		[-6.21561461, -0.00200664, 0.00121955, 0.00201779, -0.00000110, 0.00000001],
+		[-6.21581213, -0.00200541, 0.00121884, 0.00201655, -0.00000110, 0.00000001],
+		[-6.21600896, -0.00200418, 0.00121813, 0.00201531, -0.00000110, 0.00000001],
+		[-6.21620512, -0.00200295, 0.00121742, 0.00201408, -0.00000110, 0.00000001],
+		[-6.21640060, -0.00200173, 0.00121672, 0.00201284, -0.00000110, 0.00000001],
+		[-6.21659541, -0.00200050, 0.00121601, 0.00201161, -0.00000110, 0.00000001],
+		[-6.21678955, -0.00199928, 0.00121531, 0.00201038, -0.00000110, 0.00000001],
+		[-6.21698302, -0.00199806, 0.00121460, 0.00200915, -0.00000110, 0.00000001],
+		[-6.21717583, -0.00199684, 0.00121390, 0.00200792, -0.00000110, 0.00000001],
+		[-6.21736797, -0.00199562, 0.00121320, 0.00200670, -0.00000110, 0.00000001],
+		[-6.21755945, -0.00199440, 0.00121249, 0.00200547, -0.00000110, 0.00000001],
+		[-6.21775028, -0.00199319, 0.00121179, 0.00200425, -0.00000110, 0.00000001],
+		[-6.21794044, -0.00199197, 0.00121109, 0.00200302, -0.00000110, 0.00000001],
+		[-6.21812995, -0.00199076, 0.00121039, 0.00200180, -0.00000110, 0.00000001],
+		[-6.21831881, -0.00198955, 0.00120969, 0.00200058, -0.00000110, 0.00000001],
+		[-6.21850702, -0.00198833, 0.00120899, 0.00199936, -0.00000110, 0.00000001],
+		[-6.21869457, -0.00198712, 0.00120829, 0.00199815, -0.00000110, 0.00000001],
+		[-6.21888149, -0.00198592, 0.00120759, 0.00199693, -0.00000110, 0.00000001],
+		[-6.21906775, -0.00198471, 0.00120689, 0.00199571, -0.00000110, 0.00000001],
+		[-6.21925338, -0.00198350, 0.00120620, 0.00199450, -0.00000110, 0.00000001],
+		[-6.21943836, -0.00198230, 0.00120550, 0.00199329, -0.00000110, 0.00000001],
+		[-6.21962271, -0.00198110, 0.00120481, 0.00199208, -0.00000110, 0.00000001],
+		[-6.21980642, -0.00197989, 0.00120411, 0.00199087, -0.00000110, 0.00000001],
+		[-6.21998950, -0.00197869, 0.00120342, 0.00198966, -0.00000110, 0.00000001],
+		[-6.22017194, -0.00197749, 0.00120272, 0.00198845, -0.00000110, 0.00000001],
+		[-6.22035376, -0.00197630, 0.00120203, 0.00198724, -0.00000110, 0.00000001],
+		[-6.22053495, -0.00197510, 0.00120134, 0.00198604, -0.00000110, 0.00000001],
+		[-6.22071551, -0.00197390, 0.00120064, 0.00198484, -0.00000111, 0.00000001],
+		[-6.22089545, -0.00197271, 0.00119995, 0.00198363, -0.00000111, 0.00000001],
+		[-6.22107477, -0.00197152, 0.00119926, 0.00198243, -0.00000111, 0.00000001],
+		[-6.22125347, -0.00197032, 0.00119857, 0.00198123, -0.00000111, 0.00000001],
+		[-6.22143155, -0.00196913, 0.00119788, 0.00198003, -0.00000111, 0.00000001],
+		[-6.22160902, -0.00196794, 0.00119719, 0.00197884, -0.00000111, 0.00000001],
+		[-6.22178587, -0.00196676, 0.00119650, 0.00197764, -0.00000111, 0.00000001],
+		[-6.22196211, -0.00196557, 0.00119582, 0.00197645, -0.00000111, 0.00000001],
+		[-6.22213774, -0.00196438, 0.00119513, 0.00197525, -0.00000111, 0.00000001],
+		[-6.22231277, -0.00196320, 0.00119444, 0.00197406, -0.00000111, 0.00000001],
+		[-6.22248719, -0.00196202, 0.00119376, 0.00197287, -0.00000111, 0.00000001],
+		[-6.22266101, -0.00196083, 0.00119307, 0.00197168, -0.00000111, 0.00000001],
+		[-6.22283422, -0.00195965, 0.00119239, 0.00197049, -0.00000111, 0.00000001],
+		[-6.22300684, -0.00195848, 0.00119170, 0.00196931, -0.00000111, 0.00000001],
+		[-6.22317886, -0.00195730, 0.00119102, 0.00196812, -0.00000111, 0.00000001],
+		[-6.22335028, -0.00195612, 0.00119034, 0.00196694, -0.00000111, 0.00000001],
+		[-6.22352111, -0.00195495, 0.00118965, 0.00196575, -0.00000111, 0.00000001],
+		[-6.22369135, -0.00195377, 0.00118897, 0.00196457, -0.00000111, 0.00000001],
+		[-6.22386100, -0.00195260, 0.00118829, 0.00196339, -0.00000111, 0.00000001],
+		[-6.22403007, -0.00195143, 0.00118761, 0.00196221, -0.00000111, 0.00000001],
+		[-6.22419854, -0.00195026, 0.00118693, 0.00196103, -0.00000111, 0.00000001],
+		[-6.22436644, -0.00194909, 0.00118625, 0.00195986, -0.00000111, 0.00000001],
+		[-6.22453375, -0.00194792, 0.00118557, 0.00195868, -0.00000111, 0.00000001],
+		[-6.22470048, -0.00194675, 0.00118490, 0.00195751, -0.00000111, 0.00000001],
+		[-6.22486664, -0.00194559, 0.00118422, 0.00195633, -0.00000111, 0.00000001],
+		[-6.22503222, -0.00194442, 0.00118354, 0.00195516, -0.00000111, 0.00000001],
+		[-6.22519722, -0.00194326, 0.00118287, 0.00195399, -0.00000111, 0.00000001],
+		[-6.22536166, -0.00194210, 0.00118219, 0.00195282, -0.00000111, 0.00000001],
+		[-6.22552552, -0.00194094, 0.00118152, 0.00195165, -0.00000111, 0.00000001],
+		[-6.22568881, -0.00193978, 0.00118084, 0.00195049, -0.00000111, 0.00000001],
+		[-6.22585154, -0.00193862, 0.00118017, 0.00194932, -0.00000112, 0.00000001],
+		[-6.22601370, -0.00193746, 0.00117950, 0.00194816, -0.00000112, 0.00000001],
+		[-6.22617531, -0.00193631, 0.00117882, 0.00194699, -0.00000112, 0.00000001],
+		[-6.22633635, -0.00193515, 0.00117815, 0.00194583, -0.00000112, 0.00000001],
+		[-6.22649683, -0.00193400, 0.00117748, 0.00194467, -0.00000112, 0.00000001],
+		[-6.22665675, -0.00193285, 0.00117681, 0.00194351, -0.00000112, 0.00000001],
+		[-6.22681612, -0.00193170, 0.00117614, 0.00194235, -0.00000112, 0.00000001],
+		[-6.22697494, -0.00193055, 0.00117547, 0.00194120, -0.00000112, 0.00000001],
+		[-6.22713320, -0.00192940, 0.00117480, 0.00194004, -0.00000112, 0.00000001],
+		[-6.22729092, -0.00192825, 0.00117413, 0.00193889, -0.00000112, 0.00000001],
+		[-6.22744808, -0.00192711, 0.00117346, 0.00193773, -0.00000112, 0.00000001],
+		[-6.22760470, -0.00192596, 0.00117280, 0.00193658, -0.00000112, 0.00000001],
+		[-6.22776078, -0.00192482, 0.00117213, 0.00193543, -0.00000112, 0.00000001],
+		[-6.22791631, -0.00192368, 0.00117147, 0.00193428, -0.00000112, 0.00000001],
+		[-6.22807131, -0.00192253, 0.00117080, 0.00193313, -0.00000112, 0.00000001],
+		[-6.22822576, -0.00192139, 0.00117014, 0.00193198, -0.00000112, 0.00000001],
+		[-6.22837968, -0.00192026, 0.00116947, 0.00193084, -0.00000112, 0.00000001],
+		[-6.22853306, -0.00191912, 0.00116881, 0.00192969, -0.00000112, 0.00000001],
+		[-6.22868591, -0.00191798, 0.00116815, 0.00192855, -0.00000112, 0.00000001],
+		[-6.22883823, -0.00191685, 0.00116748, 0.00192741, -0.00000112, 0.00000001],
+		[-6.22899002, -0.00191571, 0.00116682, 0.00192627, -0.00000112, 0.00000001],
+		[-6.22914128, -0.00191458, 0.00116616, 0.00192513, -0.00000112, 0.00000001],
+		[-6.22929201, -0.00191345, 0.00116550, 0.00192399, -0.00000112, 0.00000001],
+		[-6.22944222, -0.00191232, 0.00116484, 0.00192285, -0.00000112, 0.00000001],
+		[-6.22959190, -0.00191119, 0.00116418, 0.00192171, -0.00000112, 0.00000001],
+		[-6.22974107, -0.00191006, 0.00116352, 0.00192058, -0.00000112, 0.00000001],
+		[-6.22988971, -0.00190893, 0.00116286, 0.00191944, -0.00000112, 0.00000001],
+		[-6.23003784, -0.00190781, 0.00116221, 0.00191831, -0.00000112, 0.00000001],
+		[-6.23018545, -0.00190669, 0.00116155, 0.00191718, -0.00000112, 0.00000001],
+		[-6.23033255, -0.00190556, 0.00116089, 0.00191605, -0.00000112, 0.00000001],
+		[-6.23047913, -0.00190444, 0.00116024, 0.00191492, -0.00000112, 0.00000001],
+		[-6.23062521, -0.00190332, 0.00115958, 0.00191379, -0.00000112, 0.00000001],
+		[-6.23077077, -0.00190220, 0.00115893, 0.00191267, -0.00000112, 0.00000001],
+		[-6.23091583, -0.00190108, 0.00115828, 0.00191154, -0.00000112, 0.00000001],
+		[-6.23106038, -0.00189996, 0.00115762, 0.00191042, -0.00000113, 0.00000001],
+		[-6.23120443, -0.00189885, 0.00115697, 0.00190929, -0.00000113, 0.00000001],
+		[-6.23134798, -0.00189773, 0.00115632, 0.00190817, -0.00000113, 0.00000001],
+		[-6.23149102, -0.00189662, 0.00115567, 0.00190705, -0.00000113, 0.00000001],
+		[-6.23163357, -0.00189551, 0.00115501, 0.00190593, -0.00000113, 0.00000001],
+		[-6.23177562, -0.00189439, 0.00115436, 0.00190481, -0.00000113, 0.00000001],
+		[-6.23191717, -0.00189328, 0.00115371, 0.00190369, -0.00000113, 0.00000001],
+		[-6.23205823, -0.00189218, 0.00115307, 0.00190258, -0.00000113, 0.00000001],
+		[-6.23219880, -0.00189107, 0.00115242, 0.00190146, -0.00000113, 0.00000001],
+		[-6.23233888, -0.00188996, 0.00115177, 0.00190035, -0.00000113, 0.00000001],
+		[-6.23247846, -0.00188886, 0.00115112, 0.00189924, -0.00000113, 0.00000001],
+		[-6.23261756, -0.00188775, 0.00115047, 0.00189812, -0.00000113, 0.00000001],
+		[-6.23275618, -0.00188665, 0.00114983, 0.00189701, -0.00000113, 0.00000001],
+		[-6.23289431, -0.00188555, 0.00114918, 0.00189591, -0.00000113, 0.00000001],
+		[-6.23303196, -0.00188444, 0.00114854, 0.00189480, -0.00000113, 0.00000001],
+		[-6.23316912, -0.00188334, 0.00114789, 0.00189369, -0.00000113, 0.00000001],
+		[-6.23330581, -0.00188225, 0.00114725, 0.00189258, -0.00000113, 0.00000001],
+		[-6.23344202, -0.00188115, 0.00114661, 0.00189148, -0.00000113, 0.00000001],
+		[-6.23357776, -0.00188005, 0.00114596, 0.00189038, -0.00000113, 0.00000001],
+		[-6.23371302, -0.00187896, 0.00114532, 0.00188927, -0.00000113, 0.00000001],
+		[-6.23384781, -0.00187786, 0.00114468, 0.00188817, -0.00000113, 0.00000001],
+		[-6.23398212, -0.00187677, 0.00114404, 0.00188707, -0.00000113, 0.00000001],
+		[-6.23411597, -0.00187568, 0.00114340, 0.00188598, -0.00000113, 0.00000001],
+		[-6.23424935, -0.00187459, 0.00114276, 0.00188488, -0.00000113, 0.00000001],
+		[-6.23438226, -0.00187350, 0.00114212, 0.00188378, -0.00000113, 0.00000001],
+		[-6.23451471, -0.00187241, 0.00114148, 0.00188269, -0.00000113, 0.00000001],
+		[-6.23464669, -0.00187132, 0.00114084, 0.00188159, -0.00000113, 0.00000001],
+		[-6.23477821, -0.00187024, 0.00114021, 0.00188050, -0.00000113, 0.00000001],
+		[-6.23490927, -0.00186915, 0.00113957, 0.00187941, -0.00000113, 0.00000001],
+		[-6.23503988, -0.00186807, 0.00113893, 0.00187832, -0.00000113, 0.00000001],
+		[-6.23517002, -0.00186698, 0.00113830, 0.00187723, -0.00000113, 0.00000001],
+		[-6.23529971, -0.00186590, 0.00113766, 0.00187614, -0.00000113, 0.00000001],
+		[-6.23542895, -0.00186482, 0.00113703, 0.00187505, -0.00000113, 0.00000001],
+		[-6.23555773, -0.00186374, 0.00113639, 0.00187396, -0.00000113, 0.00000001],
+		[-6.23568606, -0.00186267, 0.00113576, 0.00187288, -0.00000113, 0.00000001],
+		[-6.23581395, -0.00186159, 0.00113513, 0.00187180, -0.00000113, 0.00000001],
+		[-6.23594138, -0.00186051, 0.00113449, 0.00187071, -0.00000113, 0.00000001],
+		[-6.23606837, -0.00185944, 0.00113386, 0.00186963, -0.00000113, 0.00000001],
+		[-6.23619491, -0.00185836, 0.00113323, 0.00186855, -0.00000113, 0.00000001],
+		[-6.23632102, -0.00185729, 0.00113260, 0.00186747, -0.00000113, 0.00000001],
+		[-6.23644667, -0.00185622, 0.00113197, 0.00186639, -0.00000114, 0.00000001],
+		[-6.23657189, -0.00185515, 0.00113134, 0.00186532, -0.00000114, 0.00000001],
+		[-6.23669667, -0.00185408, 0.00113071, 0.00186424, -0.00000114, 0.00000001],
+		[-6.23682101, -0.00185301, 0.00113009, 0.00186317, -0.00000114, 0.00000001],
+		[-6.23694492, -0.00185195, 0.00112946, 0.00186209, -0.00000114, 0.00000001],
+		[-6.23706839, -0.00185088, 0.00112883, 0.00186102, -0.00000114, 0.00000001],
+		[-6.23719143, -0.00184981, 0.00112820, 0.00185995, -0.00000114, 0.00000001],
+		[-6.23731403, -0.00184875, 0.00112758, 0.00185888, -0.00000114, 0.00000001],
+		[-6.23743621, -0.00184769, 0.00112695, 0.00185781, -0.00000114, 0.00000001],
+		[-6.23755795, -0.00184663, 0.00112633, 0.00185674, -0.00000114, 0.00000001],
+		[-6.23767927, -0.00184557, 0.00112570, 0.00185567, -0.00000114, 0.00000001],
+		[-6.23780017, -0.00184451, 0.00112508, 0.00185461, -0.00000114, 0.00000001],
+		[-6.23792064, -0.00184345, 0.00112446, 0.00185354, -0.00000114, 0.00000001],
+		[-6.23804068, -0.00184239, 0.00112383, 0.00185248, -0.00000114, 0.00000001],
+		[-6.23816031, -0.00184134, 0.00112321, 0.00185142, -0.00000114, 0.00000001],
+		[-6.23827952, -0.00184028, 0.00112259, 0.00185035, -0.00000114, 0.00000001],
+		[-6.23839830, -0.00183923, 0.00112197, 0.00184929, -0.00000114, 0.00000001],
+		[-6.23851667, -0.00183817, 0.00112135, 0.00184823, -0.00000114, 0.00000001],
+		[-6.23863462, -0.00183712, 0.00112073, 0.00184718, -0.00000114, 0.00000001],
+		[-6.23875216, -0.00183607, 0.00112011, 0.00184612, -0.00000114, 0.00000001],
+		[-6.23886929, -0.00183502, 0.00111949, 0.00184506, -0.00000114, 0.00000001],
+		[-6.23898600, -0.00183398, 0.00111887, 0.00184401, -0.00000114, 0.00000001],
+		[-6.23910231, -0.00183293, 0.00111826, 0.00184295, -0.00000114, 0.00000001],
+		[-6.23921820, -0.00183188, 0.00111764, 0.00184190, -0.00000114, 0.00000001],
+		[-6.23933369, -0.00183084, 0.00111702, 0.00184085, -0.00000114, 0.00000001],
+		[-6.23944877, -0.00182979, 0.00111641, 0.00183980, -0.00000114, 0.00000001],
+		[-6.23956345, -0.00182875, 0.00111579, 0.00183875, -0.00000114, 0.00000001],
+		[-6.23967773, -0.00182771, 0.00111518, 0.00183770, -0.00000114, 0.00000001],
+		[-6.23979160, -0.00182667, 0.00111456, 0.00183665, -0.00000114, 0.00000001],
+		[-6.23990507, -0.00182563, 0.00111395, 0.00183561, -0.00000114, 0.00000001],
+		[-6.24001814, -0.00182459, 0.00111334, 0.00183456, -0.00000114, 0.00000001],
+		[-6.24013082, -0.00182355, 0.00111273, 0.00183352, -0.00000114, 0.00000001],
+		[-6.24024309, -0.00182251, 0.00111211, 0.00183248, -0.00000114, 0.00000001],
+		[-6.24035498, -0.00182148, 0.00111150, 0.00183143, -0.00000114, 0.00000001],
+		[-6.24046647, -0.00182045, 0.00111089, 0.00183039, -0.00000114, 0.00000001],
+		[-6.24057756, -0.00181941, 0.00111028, 0.00182935, -0.00000114, 0.00000001],
+		[-6.24068827, -0.00181838, 0.00110967, 0.00182831, -0.00000114, 0.00000001],
+		[-6.24079858, -0.00181735, 0.00110906, 0.00182728, -0.00000114, 0.00000001],
+		[-6.24090851, -0.00181632, 0.00110846, 0.00182624, -0.00000114, 0.00000001],
+		[-6.24101805, -0.00181529, 0.00110785, 0.00182521, -0.00000114, 0.00000001],
+		[-6.24112720, -0.00181426, 0.00110724, 0.00182417, -0.00000114, 0.00000001],
+		[-6.24123597, -0.00181324, 0.00110663, 0.00182314, -0.00000114, 0.00000001],
+		[-6.24134436, -0.00181221, 0.00110603, 0.00182211, -0.00000114, 0.00000001],
+		[-6.24145237, -0.00181118, 0.00110542, 0.00182107, -0.00000114, 0.00000001],
+		[-6.24155999, -0.00181016, 0.00110482, 0.00182004, -0.00000114, 0.00000001],
+		[-6.24166723, -0.00180914, 0.00110421, 0.00181902, -0.00000114, 0.00000001],
+		[-6.24177410, -0.00180812, 0.00110361, 0.00181799, -0.00000114, 0.00000001],
+		[-6.24188059, -0.00180710, 0.00110300, 0.00181696, -0.00000115, 0.00000001],
+		[-6.24198671, -0.00180608, 0.00110240, 0.00181593, -0.00000115, 0.00000001],
+		[-6.24209245, -0.00180506, 0.00110180, 0.00181491, -0.00000115, 0.00000001],
+		[-6.24219781, -0.00180404, 0.00110120, 0.00181389, -0.00000115, 0.00000001],
+		[-6.24230281, -0.00180302, 0.00110060, 0.00181286, -0.00000115, 0.00000001],
+		[-6.24240743, -0.00180201, 0.00110000, 0.00181184, -0.00000115, 0.00000001],
+		[-6.24251169, -0.00180100, 0.00109940, 0.00181082, -0.00000115, 0.00000001],
+		[-6.24261558, -0.00179998, 0.00109880, 0.00180980, -0.00000115, 0.00000001],
+		[-6.24271910, -0.00179897, 0.00109820, 0.00180878, -0.00000115, 0.00000001],
+		[-6.24282226, -0.00179796, 0.00109760, 0.00180777, -0.00000115, 0.00000001],
+		[-6.24292505, -0.00179695, 0.00109700, 0.00180675, -0.00000115, 0.00000001],
+		[-6.24302748, -0.00179594, 0.00109640, 0.00180573, -0.00000115, 0.00000001],
+		[-6.24312955, -0.00179493, 0.00109581, 0.00180472, -0.00000115, 0.00000001],
+		[-6.24323126, -0.00179392, 0.00109521, 0.00180371, -0.00000115, 0.00000001],
+		[-6.24333261, -0.00179292, 0.00109461, 0.00180269, -0.00000115, 0.00000001],
+		[-6.24343360, -0.00179191, 0.00109402, 0.00180168, -0.00000115, 0.00000001],
+		[-6.24353423, -0.00179091, 0.00109342, 0.00180067, -0.00000115, 0.00000001],
+		[-6.24363451, -0.00178991, 0.00109283, 0.00179966, -0.00000115, 0.00000001],
+		[-6.24373444, -0.00178891, 0.00109224, 0.00179866, -0.00000115, 0.00000001],
+		[-6.24383401, -0.00178790, 0.00109164, 0.00179765, -0.00000115, 0.00000001],
+		[-6.24393323, -0.00178690, 0.00109105, 0.00179664, -0.00000115, 0.00000001],
+		[-6.24403210, -0.00178591, 0.00109046, 0.00179564, -0.00000115, 0.00000001],
+		[-6.24413062, -0.00178491, 0.00108987, 0.00179463, -0.00000115, 0.00000001],
+		[-6.24422879, -0.00178391, 0.00108928, 0.00179363, -0.00000115, 0.00000001],
+		[-6.24432661, -0.00178292, 0.00108869, 0.00179263, -0.00000115, 0.00000001],
+		[-6.24442409, -0.00178192, 0.00108810, 0.00179163, -0.00000115, 0.00000001],
+		[-6.24452123, -0.00178093, 0.00108751, 0.00179063, -0.00000115, 0.00000000],
+		[-6.24461802, -0.00177993, 0.00108692, 0.00178963, -0.00000115, 0.00000000],
+		[-6.24471446, -0.00177894, 0.00108633, 0.00178863, -0.00000115, 0.00000000],
+		[-6.24481057, -0.00177795, 0.00108574, 0.00178764, -0.00000115, 0.00000000],
+		[-6.24490634, -0.00177696, 0.00108516, 0.00178664, -0.00000115, 0.00000000],
+		[-6.24500177, -0.00177597, 0.00108457, 0.00178565, -0.00000115, 0.00000000],
+		[-6.24509686, -0.00177499, 0.00108398, 0.00178465, -0.00000115, 0.00000000],
+		[-6.24519161, -0.00177400, 0.00108340, 0.00178366, -0.00000115, 0.00000000],
+		[-6.24528603, -0.00177301, 0.00108281, 0.00178267, -0.00000115, 0.00000000],
+		[-6.24538012, -0.00177203, 0.00108223, 0.00178168, -0.00000115, 0.00000000],
+		[-6.24547387, -0.00177105, 0.00108164, 0.00178069, -0.00000115, 0.00000000],
+		[-6.24556729, -0.00177006, 0.00108106, 0.00177970, -0.00000115, 0.00000000],
+		[-6.24566038, -0.00176908, 0.00108048, 0.00177871, -0.00000115, 0.00000000],
+		[-6.24575314, -0.00176810, 0.00107990, 0.00177772, -0.00000115, 0.00000000],
+		[-6.24584557, -0.00176712, 0.00107931, 0.00177674, -0.00000115, 0.00000000],
+		[-6.24593768, -0.00176614, 0.00107873, 0.00177575, -0.00000115, 0.00000000],
+		[-6.24602946, -0.00176517, 0.00107815, 0.00177477, -0.00000115, 0.00000000],
+		[-6.24612091, -0.00176419, 0.00107757, 0.00177379, -0.00000115, 0.00000000],
+		[-6.24621204, -0.00176321, 0.00107699, 0.00177281, -0.00000115, 0.00000000],
+		[-6.24630285, -0.00176224, 0.00107641, 0.00177183, -0.00000115, 0.00000000],
+		[-6.24639333, -0.00176127, 0.00107584, 0.00177085, -0.00000115, 0.00000000],
+		[-6.24648350, -0.00176029, 0.00107526, 0.00176987, -0.00000115, 0.00000000],
+		[-6.24657334, -0.00175932, 0.00107468, 0.00176889, -0.00000115, 0.00000000],
+		[-6.24666287, -0.00175835, 0.00107410, 0.00176791, -0.00000115, 0.00000000],
+		[-6.24675208, -0.00175738, 0.00107353, 0.00176694, -0.00000115, 0.00000000],
+		[-6.24684097, -0.00175641, 0.00107295, 0.00176596, -0.00000115, 0.00000000],
+		[-6.24692955, -0.00175545, 0.00107238, 0.00176499, -0.00000115, 0.00000000],
+		[-6.24701781, -0.00175448, 0.00107180, 0.00176402, -0.00000115, 0.00000000],
+		[-6.24710576, -0.00175351, 0.00107123, 0.00176305, -0.00000115, 0.00000000],
+		[-6.24719340, -0.00175255, 0.00107065, 0.00176207, -0.00000115, 0.00000000],
+		[-6.24728073, -0.00175158, 0.00107008, 0.00176110, -0.00000115, 0.00000000],
+		[-6.24736775, -0.00175062, 0.00106951, 0.00176014, -0.00000115, 0.00000000],
+		[-6.24745446, -0.00174966, 0.00106893, 0.00175917, -0.00000115, 0.00000000],
+		[-6.24754086, -0.00174870, 0.00106836, 0.00175820, -0.00000115, 0.00000000],
+		[-6.24762695, -0.00174774, 0.00106779, 0.00175724, -0.00000116, 0.00000000],
+		[-6.24771274, -0.00174678, 0.00106722, 0.00175627, -0.00000116, 0.00000000],
+		[-6.24779823, -0.00174582, 0.00106665, 0.00175531, -0.00000116, 0.00000000],
+		[-6.24788341, -0.00174487, 0.00106608, 0.00175434, -0.00000116, 0.00000000],
+		[-6.24796829, -0.00174391, 0.00106551, 0.00175338, -0.00000116, 0.00000000],
+		[-6.24805287, -0.00174296, 0.00106494, 0.00175242, -0.00000116, 0.00000000],
+		[-6.24813715, -0.00174200, 0.00106438, 0.00175146, -0.00000116, 0.00000000],
+		[-6.24822113, -0.00174105, 0.00106381, 0.00175050, -0.00000116, 0.00000000],
+		[-6.24830481, -0.00174010, 0.00106324, 0.00174955, -0.00000116, 0.00000000],
+		[-6.24838819, -0.00173915, 0.00106267, 0.00174859, -0.00000116, 0.00000000],
+		[-6.24847128, -0.00173819, 0.00106211, 0.00174763, -0.00000116, 0.00000000],
+		[-6.24855407, -0.00173725, 0.00106154, 0.00174668, -0.00000116, 0.00000000],
+		[-6.24863657, -0.00173630, 0.00106098, 0.00174572, -0.00000116, 0.00000000],
+		[-6.24871878, -0.00173535, 0.00106041, 0.00174477, -0.00000116, 0.00000000],
+		[-6.24880069, -0.00173440, 0.00105985, 0.00174382, -0.00000116, 0.00000000],
+		[-6.24888231, -0.00173346, 0.00105929, 0.00174287, -0.00000116, 0.00000000],
+		[-6.24896365, -0.00173251, 0.00105872, 0.00174192, -0.00000116, 0.00000000],
+		[-6.24904469, -0.00173157, 0.00105816, 0.00174097, -0.00000116, 0.00000000],
+		[-6.24912545, -0.00173063, 0.00105760, 0.00174002, -0.00000116, 0.00000000],
+		[-6.24920591, -0.00172969, 0.00105704, 0.00173907, -0.00000116, 0.00000000],
+		[-6.24928610, -0.00172875, 0.00105648, 0.00173813, -0.00000116, 0.00000000],
+		[-6.24936599, -0.00172781, 0.00105592, 0.00173718, -0.00000116, 0.00000000],
+		[-6.24944561, -0.00172687, 0.00105536, 0.00173624, -0.00000116, 0.00000000],
+		[-6.24952494, -0.00172593, 0.00105480, 0.00173529, -0.00000116, 0.00000000],
+		[-6.24960399, -0.00172499, 0.00105424, 0.00173435, -0.00000116, 0.00000000],
+		[-6.24968275, -0.00172406, 0.00105368, 0.00173341, -0.00000116, 0.00000000],
+		[-6.24976124, -0.00172312, 0.00105312, 0.00173247, -0.00000116, 0.00000000],
+		[-6.24983945, -0.00172219, 0.00105257, 0.00173153, -0.00000116, 0.00000000],
+		[-6.24991738, -0.00172126, 0.00105201, 0.00173059, -0.00000116, 0.00000000],
+		[-6.24999503, -0.00172032, 0.00105145, 0.00172965, -0.00000116, 0.00000000],
+		[-6.25007241, -0.00171939, 0.00105090, 0.00172871, -0.00000116, 0.00000000],
+		[-6.25014951, -0.00171846, 0.00105034, 0.00172778, -0.00000116, 0.00000000],
+		[-6.25022634, -0.00171753, 0.00104979, 0.00172684, -0.00000116, 0.00000000],
+		[-6.25030289, -0.00171660, 0.00104923, 0.00172591, -0.00000116, 0.00000000],
+		[-6.25037917, -0.00171568, 0.00104868, 0.00172498, -0.00000116, 0.00000000],
+		[-6.25045518, -0.00171475, 0.00104813, 0.00172404, -0.00000116, 0.00000000],
+		[-6.25053092, -0.00171382, 0.00104758, 0.00172311, -0.00000116, 0.00000000],
+		[-6.25060639, -0.00171290, 0.00104702, 0.00172218, -0.00000116, 0.00000000],
+		[-6.25068159, -0.00171198, 0.00104647, 0.00172125, -0.00000116, 0.00000000],
+		[-6.25075652, -0.00171105, 0.00104592, 0.00172032, -0.00000116, 0.00000000],
+		[-6.25083119, -0.00171013, 0.00104537, 0.00171940, -0.00000116, 0.00000000],
+		[-6.25090559, -0.00170921, 0.00104482, 0.00171847, -0.00000116, 0.00000000],
+		[-6.25097972, -0.00170829, 0.00104427, 0.00171754, -0.00000116, 0.00000000],
+		[-6.25105359, -0.00170737, 0.00104372, 0.00171662, -0.00000116, 0.00000000],
+		[-6.25112720, -0.00170645, 0.00104317, 0.00171570, -0.00000116, 0.00000000],
+		[-6.25120055, -0.00170554, 0.00104262, 0.00171477, -0.00000116, 0.00000000],
+		[-6.25127363, -0.00170462, 0.00104208, 0.00171385, -0.00000116, 0.00000000],
+		[-6.25134646, -0.00170370, 0.00104153, 0.00171293, -0.00000116, 0.00000000],
+		[-6.25141902, -0.00170279, 0.00104098, 0.00171201, -0.00000116, 0.00000000],
+		[-6.25149133, -0.00170188, 0.00104044, 0.00171109, -0.00000116, 0.00000000],
+		[-6.25156338, -0.00170096, 0.00103989, 0.00171017, -0.00000116, 0.00000000],
+		[-6.25163517, -0.00170005, 0.00103935, 0.00170926, -0.00000116, 0.00000000],
+		[-6.25170670, -0.00169914, 0.00103880, 0.00170834, -0.00000116, 0.00000000],
+		[-6.25177798, -0.00169823, 0.00103826, 0.00170742, -0.00000116, 0.00000000],
+		[-6.25184901, -0.00169732, 0.00103771, 0.00170651, -0.00000116, 0.00000000],
+		[-6.25191978, -0.00169641, 0.00103717, 0.00170560, -0.00000116, 0.00000000],
+		[-6.25199031, -0.00169551, 0.00103663, 0.00170468, -0.00000116, 0.00000000],
+		[-6.25206057, -0.00169460, 0.00103609, 0.00170377, -0.00000116, 0.00000000],
+		[-6.25213059, -0.00169369, 0.00103555, 0.00170286, -0.00000116, 0.00000000],
+		[-6.25220036, -0.00169279, 0.00103500, 0.00170195, -0.00000116, 0.00000000],
+		[-6.25226988, -0.00169189, 0.00103446, 0.00170104, -0.00000116, 0.00000000],
+		[-6.25233916, -0.00169098, 0.00103392, 0.00170013, -0.00000116, 0.00000000],
+		[-6.25240818, -0.00169008, 0.00103338, 0.00169923, -0.00000116, 0.00000000],
+		[-6.25247696, -0.00168918, 0.00103285, 0.00169832, -0.00000116, 0.00000000],
+		[-6.25254550, -0.00168828, 0.00103231, 0.00169741, -0.00000116, 0.00000000],
+		[-6.25261379, -0.00168738, 0.00103177, 0.00169651, -0.00000116, 0.00000000],
+		[-6.25268183, -0.00168648, 0.00103123, 0.00169560, -0.00000116, 0.00000000],
+		[-6.25274963, -0.00168559, 0.00103069, 0.00169470, -0.00000116, 0.00000000],
+		[-6.25281720, -0.00168469, 0.00103016, 0.00169380, -0.00000116, 0.00000000],
+		[-6.25288452, -0.00168379, 0.00102962, 0.00169290, -0.00000116, 0.00000000],
+		[-6.25295160, -0.00168290, 0.00102909, 0.00169200, -0.00000116, 0.00000000],
+		[-6.25301844, -0.00168200, 0.00102855, 0.00169110, -0.00000116, 0.00000000],
+		[-6.25308504, -0.00168111, 0.00102802, 0.00169020, -0.00000116, 0.00000000],
+		[-6.25315140, -0.00168022, 0.00102748, 0.00168930, -0.00000116, 0.00000000],
+		[-6.25321753, -0.00167933, 0.00102695, 0.00168841, -0.00000116, 0.00000000],
+		[-6.25328342, -0.00167844, 0.00102641, 0.00168751, -0.00000116, 0.00000000],
+		[-6.25334907, -0.00167755, 0.00102588, 0.00168662, -0.00000116, 0.00000000],
+		[-6.25341450, -0.00167666, 0.00102535, 0.00168572, -0.00000116, 0.00000000],
+		[-6.25347968, -0.00167577, 0.00102482, 0.00168483, -0.00000116, 0.00000000],
+		[-6.25354464, -0.00167489, 0.00102429, 0.00168394, -0.00000116, 0.00000000],
+		[-6.25360936, -0.00167400, 0.00102376, 0.00168305, -0.00000116, 0.00000000],
+		[-6.25367385, -0.00167312, 0.00102323, 0.00168216, -0.00000116, 0.00000000],
+		[-6.25373811, -0.00167223, 0.00102270, 0.00168127, -0.00000116, 0.00000000],
+		[-6.25380215, -0.00167135, 0.00102217, 0.00168038, -0.00000116, 0.00000000],
+		[-6.25386595, -0.00167047, 0.00102164, 0.00167949, -0.00000117, 0.00000000],
+		[-6.25392952, -0.00166958, 0.00102111, 0.00167860, -0.00000117, 0.00000000],
+		[-6.25399287, -0.00166870, 0.00102058, 0.00167772, -0.00000117, 0.00000000],
+		[-6.25405599, -0.00166782, 0.00102005, 0.00167683, -0.00000117, 0.00000000],
+		[-6.25411889, -0.00166694, 0.00101953, 0.00167595, -0.00000117, 0.00000000],
+		[-6.25418156, -0.00166607, 0.00101900, 0.00167507, -0.00000117, 0.00000000],
+		[-6.25424401, -0.00166519, 0.00101847, 0.00167418, -0.00000117, 0.00000000],
+		[-6.25430623, -0.00166431, 0.00101795, 0.00167330, -0.00000117, 0.00000000],
+		[-6.25436823, -0.00166344, 0.00101742, 0.00167242, -0.00000117, 0.00000000],
+		[-6.25443001, -0.00166256, 0.00101690, 0.00167154, -0.00000117, 0.00000000],
+		[-6.25449157, -0.00166169, 0.00101638, 0.00167066, -0.00000117, 0.00000000],
+		[-6.25455291, -0.00166082, 0.00101585, 0.00166978, -0.00000117, 0.00000000],
+		[-6.25461403, -0.00165994, 0.00101533, 0.00166891, -0.00000117, 0.00000000],
+		[-6.25467493, -0.00165907, 0.00101481, 0.00166803, -0.00000117, 0.00000000],
+		[-6.25473561, -0.00165820, 0.00101428, 0.00166715, -0.00000117, 0.00000000],
+		[-6.25479608, -0.00165733, 0.00101376, 0.00166628, -0.00000117, 0.00000000],
+		[-6.25485633, -0.00165647, 0.00101324, 0.00166541, -0.00000117, 0.00000000],
+		[-6.25491636, -0.00165560, 0.00101272, 0.00166453, -0.00000117, 0.00000000],
+		[-6.25497618, -0.00165473, 0.00101220, 0.00166366, -0.00000117, 0.00000000],
+		[-6.25503579, -0.00165386, 0.00101168, 0.00166279, -0.00000117, 0.00000000],
+		[-6.25509518, -0.00165300, 0.00101116, 0.00166192, -0.00000117, 0.00000000],
+		[-6.25515436, -0.00165214, 0.00101064, 0.00166105, -0.00000117, 0.00000000],
+		[-6.25521333, -0.00165127, 0.00101012, 0.00166018, -0.00000117, 0.00000000],
+		[-6.25527209, -0.00165041, 0.00100961, 0.00165931, -0.00000117, 0.00000000],
+		[-6.25533063, -0.00164955, 0.00100909, 0.00165845, -0.00000117, 0.00000000],
+		[-6.25538897, -0.00164869, 0.00100857, 0.00165758, -0.00000117, 0.00000000],
+		[-6.25544710, -0.00164783, 0.00100806, 0.00165672, -0.00000117, 0.00000000],
+		[-6.25550502, -0.00164697, 0.00100754, 0.00165585, -0.00000117, 0.00000000],
+		[-6.25556273, -0.00164611, 0.00100702, 0.00165499, -0.00000117, 0.00000000],
+		[-6.25562024, -0.00164525, 0.00100651, 0.00165413, -0.00000117, 0.00000000],
+		[-6.25567754, -0.00164440, 0.00100599, 0.00165326, -0.00000117, 0.00000000],
+		[-6.25573464, -0.00164354, 0.00100548, 0.00165240, -0.00000117, 0.00000000],
+		[-6.25579153, -0.00164268, 0.00100497, 0.00165154, -0.00000117, 0.00000000],
+		[-6.25584821, -0.00164183, 0.00100445, 0.00165068, -0.00000117, 0.00000000],
+		[-6.25590470, -0.00164098, 0.00100394, 0.00164982, -0.00000117, 0.00000000],
+		[-6.25596098, -0.00164012, 0.00100343, 0.00164897, -0.00000117, 0.00000000],
+		[-6.25601706, -0.00163927, 0.00100292, 0.00164811, -0.00000117, 0.00000000],
+		[-6.25607294, -0.00163842, 0.00100241, 0.00164725, -0.00000117, 0.00000000],
+		[-6.25612862, -0.00163757, 0.00100189, 0.00164640, -0.00000117, 0.00000000],
+		[-6.25618410, -0.00163672, 0.00100138, 0.00164554, -0.00000117, 0.00000000],
+		[-6.25623938, -0.00163587, 0.00100087, 0.00164469, -0.00000117, 0.00000000],
+		[-6.25629447, -0.00163503, 0.00100036, 0.00164384, -0.00000117, 0.00000000],
+		[-6.25634936, -0.00163418, 0.00099986, 0.00164299, -0.00000117, 0.00000000],
+		[-6.25640405, -0.00163333, 0.00099935, 0.00164214, -0.00000117, 0.00000000],
+		[-6.25645854, -0.00163249, 0.00099884, 0.00164129, -0.00000117, 0.00000000],
+		[-6.25651284, -0.00163164, 0.00099833, 0.00164044, -0.00000117, 0.00000000],
+		[-6.25656694, -0.00163080, 0.00099782, 0.00163959, -0.00000117, 0.00000000],
+		[-6.25662085, -0.00162996, 0.00099732, 0.00163874, -0.00000117, 0.00000000],
+		[-6.25667457, -0.00162912, 0.00099681, 0.00163789, -0.00000117, 0.00000000],
+		[-6.25672809, -0.00162828, 0.00099631, 0.00163705, -0.00000117, 0.00000000],
+		[-6.25678143, -0.00162744, 0.00099580, 0.00163620, -0.00000117, 0.00000000],
+		[-6.25683457, -0.00162660, 0.00099530, 0.00163536, -0.00000117, 0.00000000],
+		[-6.25688752, -0.00162576, 0.00099479, 0.00163451, -0.00000117, 0.00000000],
+		[-6.25694028, -0.00162492, 0.00099429, 0.00163367, -0.00000117, 0.00000000],
+		[-6.25699285, -0.00162408, 0.00099378, 0.00163283, -0.00000117, 0.00000000],
+		[-6.25704524, -0.00162325, 0.00099328, 0.00163199, -0.00000117, 0.00000000],
+		[-6.25709743, -0.00162241, 0.00099278, 0.00163115, -0.00000117, 0.00000000],
+		[-6.25714944, -0.00162158, 0.00099228, 0.00163031, -0.00000117, 0.00000000],
+		[-6.25720127, -0.00162074, 0.00099177, 0.00162947, -0.00000117, 0.00000000],
+		[-6.25725290, -0.00161991, 0.00099127, 0.00162863, -0.00000117, 0.00000000],
+		[-6.25730435, -0.00161908, 0.00099077, 0.00162780, -0.00000117, 0.00000000],
+		[-6.25735562, -0.00161825, 0.00099027, 0.00162696, -0.00000117, 0.00000000],
+		[-6.25740670, -0.00161742, 0.00098977, 0.00162613, -0.00000117, 0.00000000],
+		[-6.25745761, -0.00161659, 0.00098927, 0.00162529, -0.00000117, 0.00000000],
+		[-6.25750832, -0.00161576, 0.00098877, 0.00162446, -0.00000117, 0.00000000],
+		[-6.25755886, -0.00161493, 0.00098828, 0.00162362, -0.00000117, 0.00000000],
+		[-6.25760921, -0.00161411, 0.00098778, 0.00162279, -0.00000117, 0.00000000],
+		[-6.25765939, -0.00161328, 0.00098728, 0.00162196, -0.00000117, 0.00000000],
+		[-6.25770938, -0.00161245, 0.00098678, 0.00162113, -0.00000117, 0.00000000],
+		[-6.25775920, -0.00161163, 0.00098629, 0.00162030, -0.00000117, 0.00000000],
+		[-6.25780883, -0.00161080, 0.00098579, 0.00161947, -0.00000117, 0.00000000],
+		[-6.25785829, -0.00160998, 0.00098529, 0.00161864, -0.00000117, 0.00000000],
+		[-6.25790757, -0.00160916, 0.00098480, 0.00161782, -0.00000117, 0.00000000],
+		[-6.25795667, -0.00160834, 0.00098430, 0.00161699, -0.00000117, 0.00000000],
+		[-6.25800560, -0.00160752, 0.00098381, 0.00161616, -0.00000117, 0.00000000],
+		[-6.25805435, -0.00160670, 0.00098332, 0.00161534, -0.00000117, 0.00000000],
+		[-6.25810293, -0.00160588, 0.00098282, 0.00161452, -0.00000117, 0.00000000],
+		[-6.25815133, -0.00160506, 0.00098233, 0.00161369, -0.00000117, 0.00000000],
+		[-6.25819956, -0.00160424, 0.00098184, 0.00161287, -0.00000117, 0.00000000],
+		[-6.25824762, -0.00160342, 0.00098134, 0.00161205, -0.00000117, 0.00000000],
+		[-6.25829550, -0.00160261, 0.00098085, 0.00161123, -0.00000117, 0.00000000],
+		[-6.25834321, -0.00160179, 0.00098036, 0.00161041, -0.00000117, 0.00000000],
+		[-6.25839075, -0.00160098, 0.00097987, 0.00160959, -0.00000117, 0.00000000],
+		[-6.25843812, -0.00160017, 0.00097938, 0.00160877, -0.00000117, 0.00000000],
+		[-6.25848532, -0.00159935, 0.00097889, 0.00160795, -0.00000117, 0.00000000],
+		[-6.25853235, -0.00159854, 0.00097840, 0.00160713, -0.00000117, 0.00000000],
+		[-6.25857922, -0.00159773, 0.00097791, 0.00160632, -0.00000117, 0.00000000],
+		[-6.25862591, -0.00159692, 0.00097742, 0.00160550, -0.00000117, 0.00000000],
+		[-6.25867244, -0.00159611, 0.00097693, 0.00160469, -0.00000117, 0.00000000],
+		[-6.25871879, -0.00159530, 0.00097645, 0.00160387, -0.00000117, 0.00000000],
+		[-6.25876499, -0.00159449, 0.00097596, 0.00160306, -0.00000117, 0.00000000],
+		[-6.25881101, -0.00159368, 0.00097547, 0.00160225, -0.00000117, 0.00000000],
+		[-6.25885688, -0.00159288, 0.00097499, 0.00160144, -0.00000117, 0.00000000],
+		[-6.25890257, -0.00159207, 0.00097450, 0.00160063, -0.00000117, 0.00000000],
+		[-6.25894810, -0.00159127, 0.00097402, 0.00159982, -0.00000117, 0.00000000],
+		[-6.25899347, -0.00159046, 0.00097353, 0.00159901, -0.00000117, 0.00000000],
+		[-6.25903868, -0.00158966, 0.00097305, 0.00159820, -0.00000117, 0.00000000],
+		[-6.25908372, -0.00158886, 0.00097256, 0.00159739, -0.00000117, 0.00000000],
+		[-6.25912861, -0.00158805, 0.00097208, 0.00159659, -0.00000117, 0.00000000],
+		[-6.25917333, -0.00158725, 0.00097159, 0.00159578, -0.00000117, 0.00000000],
+		[-6.25921789, -0.00158645, 0.00097111, 0.00159497, -0.00000117, 0.00000000],
+		[-6.25926229, -0.00158565, 0.00097063, 0.00159417, -0.00000117, 0.00000000],
+		[-6.25930653, -0.00158485, 0.00097015, 0.00159337, -0.00000117, 0.00000000],
+		[-6.25935061, -0.00158406, 0.00096966, 0.00159256, -0.00000117, 0.00000000],
+		[-6.25939453, -0.00158326, 0.00096918, 0.00159176, -0.00000117, 0.00000000],
+		[-6.25943830, -0.00158246, 0.00096870, 0.00159096, -0.00000117, 0.00000000],
+		[-6.25948191, -0.00158167, 0.00096822, 0.00159016, -0.00000117, 0.00000000],
+		[-6.25952536, -0.00158087, 0.00096774, 0.00158936, -0.00000117, 0.00000000],
+		[-6.25956866, -0.00158008, 0.00096726, 0.00158856, -0.00000117, 0.00000000],
+		[-6.25961180, -0.00157928, 0.00096678, 0.00158776, -0.00000117, 0.00000000],
+		[-6.25965478, -0.00157849, 0.00096631, 0.00158696, -0.00000117, 0.00000000],
+		[-6.25969761, -0.00157770, 0.00096583, 0.00158617, -0.00000117, 0.00000000],
+		[-6.25974029, -0.00157691, 0.00096535, 0.00158537, -0.00000117, 0.00000000],
+		[-6.25978282, -0.00157612, 0.00096487, 0.00158458, -0.00000117, 0.00000000],
+		[-6.25982519, -0.00157533, 0.00096440, 0.00158378, -0.00000117, 0.00000000],
+		[-6.25986741, -0.00157454, 0.00096392, 0.00158299, -0.00000117, 0.00000000],
+		[-6.25990947, -0.00157375, 0.00096344, 0.00158220, -0.00000117, 0.00000000],
+		[-6.25995139, -0.00157296, 0.00096297, 0.00158140, -0.00000117, 0.00000000],
+		[-6.25999315, -0.00157217, 0.00096249, 0.00158061, -0.00000117, 0.00000000],
+		[-6.26003477, -0.00157139, 0.00096202, 0.00157982, -0.00000117, 0.00000000],
+		[-6.26007624, -0.00157060, 0.00096154, 0.00157903, -0.00000117, 0.00000000],
+		[-6.26011755, -0.00156982, 0.00096107, 0.00157824, -0.00000117, 0.00000000],
+		[-6.26015872, -0.00156903, 0.00096060, 0.00157745, -0.00000117, 0.00000000],
+		[-6.26019974, -0.00156825, 0.00096012, 0.00157667, -0.00000117, 0.00000000],
+		[-6.26024061, -0.00156747, 0.00095965, 0.00157588, -0.00000117, 0.00000000],
+		[-6.26028134, -0.00156669, 0.00095918, 0.00157509, -0.00000117, 0.00000000],
+		[-6.26032192, -0.00156591, 0.00095871, 0.00157431, -0.00000117, 0.00000000],
+		[-6.26036235, -0.00156513, 0.00095823, 0.00157352, -0.00000117, 0.00000000],
+		[-6.26040264, -0.00156435, 0.00095776, 0.00157274, -0.00000117, 0.00000000],
+		[-6.26044279, -0.00156357, 0.00095729, 0.00157195, -0.00000117, 0.00000000],
+		[-6.26048279, -0.00156279, 0.00095682, 0.00157117, -0.00000117, 0.00000000],
+		[-6.26052264, -0.00156201, 0.00095635, 0.00157039, -0.00000117, 0.00000000],
+		[-6.26056235, -0.00156124, 0.00095588, 0.00156961, -0.00000117, 0.00000000],
+		[-6.26060192, -0.00156046, 0.00095542, 0.00156883, -0.00000117, 0.00000000],
+		[-6.26064135, -0.00155969, 0.00095495, 0.00156805, -0.00000117, 0.00000000],
+		[-6.26068064, -0.00155891, 0.00095448, 0.00156727, -0.00000117, 0.00000000],
+		[-6.26071978, -0.00155814, 0.00095401, 0.00156649, -0.00000117, 0.00000000],
+		[-6.26075879, -0.00155737, 0.00095354, 0.00156572, -0.00000117, 0.00000000],
+		[-6.26079765, -0.00155659, 0.00095308, 0.00156494, -0.00000117, 0.00000000],
+		[-6.26083637, -0.00155582, 0.00095261, 0.00156416, -0.00000117, 0.00000000],
+		[-6.26087496, -0.00155505, 0.00095215, 0.00156339, -0.00000117, 0.00000000],
+		[-6.26091341, -0.00155428, 0.00095168, 0.00156261, -0.00000117, 0.00000000],
+		[-6.26095171, -0.00155351, 0.00095122, 0.00156184, -0.00000117, 0.00000000],
+		[-6.26098988, -0.00155274, 0.00095075, 0.00156107, -0.00000117, 0.00000000],
+		[-6.26102792, -0.00155198, 0.00095029, 0.00156029, -0.00000117, 0.00000000],
+		[-6.26106581, -0.00155121, 0.00094982, 0.00155952, -0.00000117, 0.00000000],
+		[-6.26110357, -0.00155044, 0.00094936, 0.00155875, -0.00000117, 0.00000000],
+		[-6.26114120, -0.00154968, 0.00094890, 0.00155798, -0.00000117, 0.00000000],
+		[-6.26117869, -0.00154891, 0.00094843, 0.00155721, -0.00000117, 0.00000000],
+		[-6.26121604, -0.00154815, 0.00094797, 0.00155644, -0.00000117, 0.00000000],
+		[-6.26125326, -0.00154739, 0.00094751, 0.00155568, -0.00000117, 0.00000000],
+		[-6.26129035, -0.00154662, 0.00094705, 0.00155491, -0.00000117, 0.00000000],
+		[-6.26132730, -0.00154586, 0.00094659, 0.00155414, -0.00000117, 0.00000000],
+		[-6.26136412, -0.00154510, 0.00094613, 0.00155338, -0.00000117, 0.00000000],
+		[-6.26140081, -0.00154434, 0.00094567, 0.00155261, -0.00000117, 0.00000000],
+		[-6.26143736, -0.00154358, 0.00094521, 0.00155185, -0.00000117, 0.00000000],
+		[-6.26147379, -0.00154282, 0.00094475, 0.00155109, -0.00000117, 0.00000000],
+		[-6.26151008, -0.00154206, 0.00094429, 0.00155032, -0.00000117, 0.00000000],
+		[-6.26154624, -0.00154131, 0.00094383, 0.00154956, -0.00000117, 0.00000000],
+		[-6.26158228, -0.00154055, 0.00094337, 0.00154880, -0.00000117, 0.00000000],
+		[-6.26161818, -0.00153979, 0.00094292, 0.00154804, -0.00000117, 0.00000000],
+		[-6.26165395, -0.00153904, 0.00094246, 0.00154728, -0.00000117, 0.00000000],
+		[-6.26168960, -0.00153828, 0.00094200, 0.00154652, -0.00000117, 0.00000000],
+		[-6.26172512, -0.00153753, 0.00094155, 0.00154576, -0.00000117, 0.00000000],
+		[-6.26176051, -0.00153677, 0.00094109, 0.00154500, -0.00000117, 0.00000000],
+		[-6.26179577, -0.00153602, 0.00094063, 0.00154425, -0.00000117, 0.00000000],
+		[-6.26183090, -0.00153527, 0.00094018, 0.00154349, -0.00000117, 0.00000000],
+		[-6.26186591, -0.00153452, 0.00093972, 0.00154273, -0.00000117, 0.00000000],
+		[-6.26190080, -0.00153377, 0.00093927, 0.00154198, -0.00000117, 0.00000000],
+		[-6.26193555, -0.00153302, 0.00093882, 0.00154123, -0.00000117, 0.00000000],
+		[-6.26197019, -0.00153227, 0.00093836, 0.00154047, -0.00000117, 0.00000000],
+		[-6.26200470, -0.00153152, 0.00093791, 0.00153972, -0.00000117, 0.00000000],
+		[-6.26203908, -0.00153077, 0.00093746, 0.00153897, -0.00000117, 0.00000000],
+		[-6.26207334, -0.00153003, 0.00093700, 0.00153822, -0.00000118, 0.00000000],
+		[-6.26210748, -0.00152928, 0.00093655, 0.00153746, -0.00000118, 0.00000000],
+		[-6.26214149, -0.00152853, 0.00093610, 0.00153671, -0.00000118, 0.00000000],
+		[-6.26217539, -0.00152779, 0.00093565, 0.00153597, -0.00000118, 0.00000000],
+		[-6.26220916, -0.00152705, 0.00093520, 0.00153522, -0.00000118, 0.00000000],
+		[-6.26224280, -0.00152630, 0.00093475, 0.00153447, -0.00000118, 0.00000000],
+		[-6.26227633, -0.00152556, 0.00093430, 0.00153372, -0.00000118, 0.00000000],
+		[-6.26230974, -0.00152482, 0.00093385, 0.00153298, -0.00000118, 0.00000000],
+		[-6.26234303, -0.00152408, 0.00093340, 0.00153223, -0.00000118, 0.00000000],
+		[-6.26237620, -0.00152333, 0.00093295, 0.00153148, -0.00000118, 0.00000000],
+		[-6.26240924, -0.00152259, 0.00093250, 0.00153074, -0.00000118, 0.00000000],
+		[-6.26244217, -0.00152186, 0.00093205, 0.00153000, -0.00000118, 0.00000000],
+		[-6.26247499, -0.00152112, 0.00093161, 0.00152925, -0.00000118, 0.00000000],
+		[-6.26250768, -0.00152038, 0.00093116, 0.00152851, -0.00000118, 0.00000000],
+		[-6.26254025, -0.00151964, 0.00093071, 0.00152777, -0.00000118, 0.00000000],
+		[-6.26257271, -0.00151890, 0.00093027, 0.00152703, -0.00000118, 0.00000000],
+		[-6.26260505, -0.00151817, 0.00092982, 0.00152629, -0.00000118, 0.00000000],
+		[-6.26263728, -0.00151743, 0.00092937, 0.00152555, -0.00000118, 0.00000000],
+		[-6.26266939, -0.00151670, 0.00092893, 0.00152481, -0.00000118, 0.00000000],
+		[-6.26270138, -0.00151596, 0.00092848, 0.00152407, -0.00000118, 0.00000000],
+		[-6.26273326, -0.00151523, 0.00092804, 0.00152333, -0.00000118, 0.00000000],
+		[-6.26276503, -0.00151450, 0.00092760, 0.00152260, -0.00000118, 0.00000000],
+		[-6.26279668, -0.00151377, 0.00092715, 0.00152186, -0.00000118, 0.00000000],
+		[-6.26282822, -0.00151304, 0.00092671, 0.00152113, -0.00000118, 0.00000000],
+		[-6.26285964, -0.00151231, 0.00092627, 0.00152039, -0.00000118, 0.00000000],
+		[-6.26289095, -0.00151158, 0.00092582, 0.00151966, -0.00000118, 0.00000000],
+		[-6.26292215, -0.00151085, 0.00092538, 0.00151892, -0.00000118, 0.00000000],
+		[-6.26295323, -0.00151012, 0.00092494, 0.00151819, -0.00000118, 0.00000000],
+		[-6.26298421, -0.00150939, 0.00092450, 0.00151746, -0.00000118, 0.00000000],
+		[-6.26301507, -0.00150866, 0.00092406, 0.00151673, -0.00000118, 0.00000000],
+		[-6.26304582, -0.00150794, 0.00092362, 0.00151600, -0.00000118, 0.00000000],
+		[-6.26307646, -0.00150721, 0.00092318, 0.00151527, -0.00000118, 0.00000000],
+		[-6.26310699, -0.00150649, 0.00092274, 0.00151454, -0.00000118, 0.00000000],
+		[-6.26313741, -0.00150576, 0.00092230, 0.00151381, -0.00000118, 0.00000000],
+		[-6.26316772, -0.00150504, 0.00092186, 0.00151308, -0.00000118, 0.00000000],
+		[-6.26319793, -0.00150431, 0.00092142, 0.00151235, -0.00000118, 0.00000000],
+		[-6.26322802, -0.00150359, 0.00092098, 0.00151163, -0.00000118, 0.00000000],
+		[-6.26325801, -0.00150287, 0.00092055, 0.00151090, -0.00000118, 0.00000000],
+		[-6.26328788, -0.00150215, 0.00092011, 0.00151018, -0.00000118, 0.00000000],
+		[-6.26331765, -0.00150143, 0.00091967, 0.00150945, -0.00000118, 0.00000000],
+		[-6.26334732, -0.00150071, 0.00091924, 0.00150873, -0.00000118, 0.00000000],
+		[-6.26337687, -0.00149999, 0.00091880, 0.00150800, -0.00000118, 0.00000000],
+		[-6.26340633, -0.00149927, 0.00091836, 0.00150728, -0.00000118, 0.00000000],
+		[-6.26343567, -0.00149855, 0.00091793, 0.00150656, -0.00000118, 0.00000000],
+		[-6.26346491, -0.00149784, 0.00091749, 0.00150584, -0.00000118, 0.00000000],
+		[-6.26349404, -0.00149712, 0.00091706, 0.00150512, -0.00000118, 0.00000000],
+		[-6.26352307, -0.00149640, 0.00091662, 0.00150440, -0.00000118, 0.00000000],
+		[-6.26355200, -0.00149569, 0.00091619, 0.00150368, -0.00000118, 0.00000000],
+		[-6.26358082, -0.00149498, 0.00091576, 0.00150296, -0.00000118, 0.00000000],
+		[-6.26360954, -0.00149426, 0.00091532, 0.00150224, -0.00000118, 0.00000000],
+		[-6.26363815, -0.00149355, 0.00091489, 0.00150152, -0.00000118, 0.00000000],
+		[-6.26366666, -0.00149284, 0.00091446, 0.00150081, -0.00000118, 0.00000000],
+		[-6.26369507, -0.00149212, 0.00091403, 0.00150009, -0.00000118, 0.00000000],
+		[-6.26372338, -0.00149141, 0.00091359, 0.00149938, -0.00000118, 0.00000000],
+		[-6.26375159, -0.00149070, 0.00091316, 0.00149866, -0.00000118, 0.00000000],
+		[-6.26377969, -0.00148999, 0.00091273, 0.00149795, -0.00000118, 0.00000000],
+		[-6.26380769, -0.00148928, 0.00091230, 0.00149723, -0.00000118, 0.00000000],
+		[-6.26383560, -0.00148857, 0.00091187, 0.00149652, -0.00000118, 0.00000000],
+		[-6.26386340, -0.00148787, 0.00091144, 0.00149581, -0.00000118, 0.00000000],
+		[-6.26389110, -0.00148716, 0.00091101, 0.00149510, -0.00000118, 0.00000000],
+		[-6.26391870, -0.00148645, 0.00091058, 0.00149439, -0.00000118, 0.00000000],
+		[-6.26394621, -0.00148575, 0.00091016, 0.00149368, -0.00000118, 0.00000000],
+		[-6.26397361, -0.00148504, 0.00090973, 0.00149297, -0.00000118, 0.00000000],
+		[-6.26400092, -0.00148434, 0.00090930, 0.00149226, -0.00000118, 0.00000000],
+		[-6.26402813, -0.00148363, 0.00090887, 0.00149155, -0.00000118, 0.00000000],
+		[-6.26405524, -0.00148293, 0.00090844, 0.00149084, -0.00000118, 0.00000000],
+		[-6.26408225, -0.00148223, 0.00090802, 0.00149014, -0.00000118, 0.00000000],
+		[-6.26410916, -0.00148152, 0.00090759, 0.00148943, -0.00000118, 0.00000000],
+		[-6.26413598, -0.00148082, 0.00090717, 0.00148872, -0.00000118, 0.00000000],
+		[-6.26416271, -0.00148012, 0.00090674, 0.00148802, -0.00000118, 0.00000000],
+		[-6.26418933, -0.00147942, 0.00090631, 0.00148732, -0.00000118, 0.00000000],
+		[-6.26421586, -0.00147872, 0.00090589, 0.00148661, -0.00000118, 0.00000000],
+		[-6.26424230, -0.00147802, 0.00090547, 0.00148591, -0.00000118, 0.00000000],
+		[-6.26426864, -0.00147733, 0.00090504, 0.00148521, -0.00000118, 0.00000000],
+		[-6.26429489, -0.00147663, 0.00090462, 0.00148450, -0.00000118, 0.00000000],
+		[-6.26432104, -0.00147593, 0.00090419, 0.00148380, -0.00000118, 0.00000000],
+		[-6.26434710, -0.00147523, 0.00090377, 0.00148310, -0.00000118, 0.00000000],
+		[-6.26437306, -0.00147454, 0.00090335, 0.00148240, -0.00000118, 0.00000000],
+		[-6.26439893, -0.00147384, 0.00090293, 0.00148170, -0.00000118, 0.00000000],
+		[-6.26442471, -0.00147315, 0.00090250, 0.00148101, -0.00000118, 0.00000000],
+		[-6.26445040, -0.00147246, 0.00090208, 0.00148031, -0.00000118, 0.00000000],
+		[-6.26447599, -0.00147176, 0.00090166, 0.00147961, -0.00000118, 0.00000000],
+		[-6.26450150, -0.00147107, 0.00090124, 0.00147891, -0.00000118, 0.00000000],
+		[-6.26452691, -0.00147038, 0.00090082, 0.00147822, -0.00000118, 0.00000000],
+		[-6.26455222, -0.00146969, 0.00090040, 0.00147752, -0.00000118, 0.00000000],
+		[-6.26457745, -0.00146900, 0.00089998, 0.00147683, -0.00000118, 0.00000000],
+		[-6.26460259, -0.00146831, 0.00089956, 0.00147613, -0.00000118, 0.00000000],
+		[-6.26462764, -0.00146762, 0.00089914, 0.00147544, -0.00000118, 0.00000000],
+		[-6.26465259, -0.00146693, 0.00089872, 0.00147475, -0.00000118, 0.00000000],
+		[-6.26467746, -0.00146624, 0.00089831, 0.00147406, -0.00000118, 0.00000000],
+		[-6.26470224, -0.00146555, 0.00089789, 0.00147336, -0.00000118, 0.00000000],
+		[-6.26472693, -0.00146486, 0.00089747, 0.00147267, -0.00000118, 0.00000000],
+		[-6.26475153, -0.00146418, 0.00089705, 0.00147198, -0.00000118, 0.00000000],
+		[-6.26477604, -0.00146349, 0.00089664, 0.00147129, -0.00000118, 0.00000000],
+		[-6.26480047, -0.00146281, 0.00089622, 0.00147060, -0.00000118, 0.00000000],
+		[-6.26482481, -0.00146212, 0.00089580, 0.00146992, -0.00000118, 0.00000000],
+		[-6.26484906, -0.00146144, 0.00089539, 0.00146923, -0.00000118, 0.00000000],
+		[-6.26487322, -0.00146076, 0.00089497, 0.00146854, -0.00000118, 0.00000000],
+		[-6.26489730, -0.00146007, 0.00089456, 0.00146785, -0.00000118, 0.00000000],
+		[-6.26492129, -0.00145939, 0.00089414, 0.00146717, -0.00000118, 0.00000000],
+		[-6.26494519, -0.00145871, 0.00089373, 0.00146648, -0.00000118, 0.00000000],
+		[-6.26496901, -0.00145803, 0.00089332, 0.00146580, -0.00000118, 0.00000000],
+		[-6.26499274, -0.00145735, 0.00089290, 0.00146511, -0.00000118, 0.00000000],
+		[-6.26501639, -0.00145667, 0.00089249, 0.00146443, -0.00000118, 0.00000000],
+		[-6.26503995, -0.00145599, 0.00089208, 0.00146375, -0.00000118, 0.00000000],
+		[-6.26506343, -0.00145531, 0.00089166, 0.00146307, -0.00000118, 0.00000000],
+		[-6.26508682, -0.00145463, 0.00089125, 0.00146238, -0.00000118, 0.00000000],
+		[-6.26511013, -0.00145396, 0.00089084, 0.00146170, -0.00000118, 0.00000000],
+		[-6.26513336, -0.00145328, 0.00089043, 0.00146102, -0.00000118, 0.00000000],
+		[-6.26515650, -0.00145261, 0.00089002, 0.00146034, -0.00000118, 0.00000000],
+		[-6.26517956, -0.00145193, 0.00088961, 0.00145966, -0.00000118, 0.00000000],
+		[-6.26520254, -0.00145126, 0.00088920, 0.00145898, -0.00000118, 0.00000000],
+		[-6.26522543, -0.00145058, 0.00088879, 0.00145831, -0.00000118, 0.00000000],
+		[-6.26524824, -0.00144991, 0.00088838, 0.00145763, -0.00000118, 0.00000000],
+		[-6.26527098, -0.00144924, 0.00088797, 0.00145695, -0.00000118, 0.00000000],
+		[-6.26529363, -0.00144856, 0.00088756, 0.00145628, -0.00000118, 0.00000000],
+		[-6.26531619, -0.00144789, 0.00088715, 0.00145560, -0.00000118, 0.00000000],
+		[-6.26533868, -0.00144722, 0.00088674, 0.00145493, -0.00000118, 0.00000000],
+		[-6.26536109, -0.00144655, 0.00088634, 0.00145425, -0.00000118, 0.00000000],
+		[-6.26538341, -0.00144588, 0.00088593, 0.00145358, -0.00000118, 0.00000000],
+		[-6.26540566, -0.00144521, 0.00088552, 0.00145291, -0.00000118, 0.00000000],
+		[-6.26542783, -0.00144454, 0.00088511, 0.00145223, -0.00000118, 0.00000000],
+		[-6.26544992, -0.00144387, 0.00088471, 0.00145156, -0.00000118, 0.00000000],
+		[-6.26547192, -0.00144321, 0.00088430, 0.00145089, -0.00000118, 0.00000000],
+		[-6.26549385, -0.00144254, 0.00088390, 0.00145022, -0.00000118, 0.00000000],
+		[-6.26551570, -0.00144187, 0.00088349, 0.00144955, -0.00000118, 0.00000000],
+		[-6.26553748, -0.00144121, 0.00088309, 0.00144888, -0.00000118, 0.00000000],
+		[-6.26555917, -0.00144054, 0.00088268, 0.00144821, -0.00000118, 0.00000000],
+		[-6.26558079, -0.00143988, 0.00088228, 0.00144754, -0.00000118, 0.00000000],
+		[-6.26560233, -0.00143922, 0.00088187, 0.00144687, -0.00000118, 0.00000000],
+		[-6.26562379, -0.00143855, 0.00088147, 0.00144621, -0.00000118, 0.00000000],
+		[-6.26564518, -0.00143789, 0.00088107, 0.00144554, -0.00000118, 0.00000000],
+		[-6.26566648, -0.00143723, 0.00088066, 0.00144488, -0.00000118, 0.00000000],
+		[-6.26568772, -0.00143657, 0.00088026, 0.00144421, -0.00000118, 0.00000000],
+		[-6.26570887, -0.00143590, 0.00087986, 0.00144355, -0.00000118, 0.00000000],
+		[-6.26572995, -0.00143524, 0.00087946, 0.00144288, -0.00000118, 0.00000000],
+		[-6.26575096, -0.00143458, 0.00087906, 0.00144222, -0.00000118, 0.00000000],
+		[-6.26577189, -0.00143393, 0.00087865, 0.00144155, -0.00000118, 0.00000000],
+		[-6.26579274, -0.00143327, 0.00087825, 0.00144089, -0.00000118, 0.00000000],
+		[-6.26581352, -0.00143261, 0.00087785, 0.00144023, -0.00000118, 0.00000000],
+		[-6.26583423, -0.00143195, 0.00087745, 0.00143957, -0.00000118, 0.00000000],
+		[-6.26585486, -0.00143130, 0.00087705, 0.00143891, -0.00000118, 0.00000000],
+		[-6.26587542, -0.00143064, 0.00087665, 0.00143825, -0.00000118, 0.00000000],
+		[-6.26589591, -0.00142998, 0.00087626, 0.00143759, -0.00000118, 0.00000000],
+		[-6.26591632, -0.00142933, 0.00087586, 0.00143693, -0.00000118, 0.00000000],
+		[-6.26593666, -0.00142867, 0.00087546, 0.00143627, -0.00000118, 0.00000000],
+		[-6.26595692, -0.00142802, 0.00087506, 0.00143562, -0.00000118, 0.00000000],
+		[-6.26597711, -0.00142737, 0.00087466, 0.00143496, -0.00000118, 0.00000000],
+		[-6.26599724, -0.00142671, 0.00087426, 0.00143430, -0.00000118, 0.00000000],
+		[-6.26601728, -0.00142606, 0.00087387, 0.00143365, -0.00000118, 0.00000000],
+		[-6.26603726, -0.00142541, 0.00087347, 0.00143299, -0.00000118, 0.00000000],
+		[-6.26605717, -0.00142476, 0.00087307, 0.00143234, -0.00000118, 0.00000000],
+		[-6.26607700, -0.00142411, 0.00087268, 0.00143168, -0.00000118, 0.00000000],
+		[-6.26609676, -0.00142346, 0.00087228, 0.00143103, -0.00000118, 0.00000000],
+		[-6.26611646, -0.00142281, 0.00087189, 0.00143038, -0.00000118, 0.00000000],
+		[-6.26613608, -0.00142216, 0.00087149, 0.00142972, -0.00000118, 0.00000000],
+		[-6.26615563, -0.00142151, 0.00087110, 0.00142907, -0.00000118, 0.00000000],
+		[-6.26617512, -0.00142087, 0.00087070, 0.00142842, -0.00000118, 0.00000000],
+		[-6.26619453, -0.00142022, 0.00087031, 0.00142777, -0.00000118, 0.00000000],
+		[-6.26621387, -0.00141957, 0.00086992, 0.00142712, -0.00000118, 0.00000000],
+		[-6.26623315, -0.00141893, 0.00086952, 0.00142647, -0.00000118, 0.00000000],
+		[-6.26625235, -0.00141828, 0.00086913, 0.00142582, -0.00000118, 0.00000000],
+		[-6.26627149, -0.00141764, 0.00086874, 0.00142517, -0.00000118, 0.00000000],
+		[-6.26629056, -0.00141699, 0.00086835, 0.00142452, -0.00000118, 0.00000000],
+		[-6.26630956, -0.00141635, 0.00086795, 0.00142388, -0.00000118, 0.00000000],
+		[-6.26632849, -0.00141571, 0.00086756, 0.00142323, -0.00000118, 0.00000000],
+		[-6.26634735, -0.00141506, 0.00086717, 0.00142258, -0.00000118, 0.00000000],
+		[-6.26636615, -0.00141442, 0.00086678, 0.00142194, -0.00000118, 0.00000000],
+		[-6.26638488, -0.00141378, 0.00086639, 0.00142129, -0.00000118, 0.00000000],
+		[-6.26640355, -0.00141314, 0.00086600, 0.00142065, -0.00000118, 0.00000000],
+		[-6.26642214, -0.00141250, 0.00086561, 0.00142001, -0.00000118, 0.00000000],
+		[-6.26644067, -0.00141186, 0.00086522, 0.00141936, -0.00000118, 0.00000000],
+		[-6.26645914, -0.00141122, 0.00086483, 0.00141872, -0.00000118, 0.00000000],
+		[-6.26647754, -0.00141058, 0.00086444, 0.00141808, -0.00000118, 0.00000000],
+		[-6.26649587, -0.00140995, 0.00086405, 0.00141744, -0.00000118, 0.00000000],
+		[-6.26651414, -0.00140931, 0.00086366, 0.00141680, -0.00000118, 0.00000000],
+		[-6.26653234, -0.00140867, 0.00086328, 0.00141616, -0.00000118, 0.00000000],
+		[-6.26655048, -0.00140804, 0.00086289, 0.00141552, -0.00000118, 0.00000000],
+		[-6.26656855, -0.00140740, 0.00086250, 0.00141488, -0.00000118, 0.00000000],
+		[-6.26658656, -0.00140677, 0.00086211, 0.00141424, -0.00000118, 0.00000000],
+		[-6.26660450, -0.00140613, 0.00086173, 0.00141360, -0.00000118, 0.00000000],
+		[-6.26662238, -0.00140550, 0.00086134, 0.00141296, -0.00000118, 0.00000000],
+		[-6.26664020, -0.00140486, 0.00086096, 0.00141233, -0.00000118, 0.00000000],
+		[-6.26665795, -0.00140423, 0.00086057, 0.00141169, -0.00000118, 0.00000000],
+		[-6.26667564, -0.00140360, 0.00086018, 0.00141105, -0.00000118, 0.00000000],
+		[-6.26669326, -0.00140297, 0.00085980, 0.00141042, -0.00000118, 0.00000000],
+		[-6.26671083, -0.00140234, 0.00085942, 0.00140978, -0.00000118, 0.00000000],
+		[-6.26672833, -0.00140171, 0.00085903, 0.00140915, -0.00000118, 0.00000000],
+		[-6.26674577, -0.00140108, 0.00085865, 0.00140852, -0.00000118, 0.00000000],
+		[-6.26676314, -0.00140045, 0.00085826, 0.00140788, -0.00000118, 0.00000000],
+		[-6.26678046, -0.00139982, 0.00085788, 0.00140725, -0.00000118, 0.00000000],
+		[-6.26679771, -0.00139919, 0.00085750, 0.00140662, -0.00000118, 0.00000000],
+		[-6.26681490, -0.00139856, 0.00085711, 0.00140599, -0.00000118, 0.00000000],
+		[-6.26683203, -0.00139793, 0.00085673, 0.00140536, -0.00000118, 0.00000000],
+		[-6.26684910, -0.00139731, 0.00085635, 0.00140472, -0.00000118, 0.00000000],
+		[-6.26686611, -0.00139668, 0.00085597, 0.00140409, -0.00000118, 0.00000000],
+		[-6.26688306, -0.00139605, 0.00085559, 0.00140347, -0.00000118, 0.00000000],
+		[-6.26689994, -0.00139543, 0.00085521, 0.00140284, -0.00000118, 0.00000000],
+		[-6.26691677, -0.00139481, 0.00085482, 0.00140221, -0.00000118, 0.00000000],
+		[-6.26693354, -0.00139418, 0.00085444, 0.00140158, -0.00000118, 0.00000000],
+		[-6.26695024, -0.00139356, 0.00085406, 0.00140095, -0.00000118, 0.00000000],
+		[-6.26696689, -0.00139293, 0.00085368, 0.00140033, -0.00000118, 0.00000000],
+		[-6.26698348, -0.00139231, 0.00085331, 0.00139970, -0.00000118, 0.00000000],
+		[-6.26700001, -0.00139169, 0.00085293, 0.00139908, -0.00000118, 0.00000000],
+		[-6.26701648, -0.00139107, 0.00085255, 0.00139845, -0.00000118, 0.00000000],
+		[-6.26703289, -0.00139045, 0.00085217, 0.00139783, -0.00000118, 0.00000000],
+		[-6.26704925, -0.00138983, 0.00085179, 0.00139720, -0.00000118, 0.00000000],
+		[-6.26706554, -0.00138921, 0.00085141, 0.00139658, -0.00000118, 0.00000000],
+		[-6.26708178, -0.00138859, 0.00085104, 0.00139596, -0.00000118, 0.00000000],
+		[-6.26709796, -0.00138797, 0.00085066, 0.00139534, -0.00000118, 0.00000000],
+		[-6.26711408, -0.00138735, 0.00085028, 0.00139471, -0.00000118, 0.00000000],
+		[-6.26713015, -0.00138674, 0.00084990, 0.00139409, -0.00000118, 0.00000000],
+		[-6.26714616, -0.00138612, 0.00084953, 0.00139347, -0.00000118, 0.00000000],
+		[-6.26716211, -0.00138550, 0.00084915, 0.00139285, -0.00000118, 0.00000000],
+		[-6.26717800, -0.00138489, 0.00084878, 0.00139223, -0.00000118, 0.00000000],
+		[-6.26719384, -0.00138427, 0.00084840, 0.00139161, -0.00000118, 0.00000000],
+		[-6.26720962, -0.00138366, 0.00084803, 0.00139100, -0.00000118, 0.00000000],
+		[-6.26722535, -0.00138304, 0.00084765, 0.00139038, -0.00000118, 0.00000000],
+		[-6.26724102, -0.00138243, 0.00084728, 0.00138976, -0.00000118, 0.00000000],
+		[-6.26725663, -0.00138181, 0.00084690, 0.00138914, -0.00000118, 0.00000000],
+		[-6.26727219, -0.00138120, 0.00084653, 0.00138853, -0.00000118, 0.00000000],
+		[-6.26728769, -0.00138059, 0.00084616, 0.00138791, -0.00000118, 0.00000000],
+		[-6.26730314, -0.00137998, 0.00084578, 0.00138730, -0.00000118, 0.00000000],
+		[-6.26731854, -0.00137937, 0.00084541, 0.00138668, -0.00000118, 0.00000000],
+		[-6.26733388, -0.00137876, 0.00084504, 0.00138607, -0.00000118, 0.00000000],
+		[-6.26734916, -0.00137815, 0.00084467, 0.00138545, -0.00000118, 0.00000000],
+		[-6.26736439, -0.00137754, 0.00084429, 0.00138484, -0.00000118, 0.00000000],
+		[-6.26737957, -0.00137693, 0.00084392, 0.00138423, -0.00000118, 0.00000000],
+		[-6.26739469, -0.00137632, 0.00084355, 0.00138362, -0.00000118, 0.00000000],
+		[-6.26740976, -0.00137571, 0.00084318, 0.00138301, -0.00000118, 0.00000000],
+		[-6.26742477, -0.00137510, 0.00084281, 0.00138239, -0.00000118, 0.00000000],
+		[-6.26743974, -0.00137450, 0.00084244, 0.00138178, -0.00000118, 0.00000000],
+		[-6.26745464, -0.00137389, 0.00084207, 0.00138117, -0.00000118, 0.00000000],
+		[-6.26746950, -0.00137328, 0.00084170, 0.00138056, -0.00000118, 0.00000000],
+		[-6.26748430, -0.00137268, 0.00084133, 0.00137996, -0.00000117, 0.00000000],
+		[-6.26749906, -0.00137207, 0.00084096, 0.00137935, -0.00000117, 0.00000000],
+		[-6.26751375, -0.00137147, 0.00084059, 0.00137874, -0.00000117, 0.00000000],
+		[-6.26752840, -0.00137087, 0.00084022, 0.00137813, -0.00000117, 0.00000000],
+		[-6.26754300, -0.00137026, 0.00083986, 0.00137753, -0.00000117, 0.00000000],
+		[-6.26755754, -0.00136966, 0.00083949, 0.00137692, -0.00000117, 0.00000000],
+		[-6.26757203, -0.00136906, 0.00083912, 0.00137631, -0.00000117, 0.00000000],
+		[-6.26758647, -0.00136846, 0.00083875, 0.00137571, -0.00000117, 0.00000000],
+		[-6.26760086, -0.00136786, 0.00083839, 0.00137510, -0.00000117, 0.00000000],
+		[-6.26761520, -0.00136725, 0.00083802, 0.00137450, -0.00000117, 0.00000000],
+		[-6.26762949, -0.00136665, 0.00083765, 0.00137390, -0.00000117, 0.00000000],
+		[-6.26764372, -0.00136605, 0.00083729, 0.00137329, -0.00000117, 0.00000000],
+		[-6.26765791, -0.00136546, 0.00083692, 0.00137269, -0.00000117, 0.00000000],
+		[-6.26767205, -0.00136486, 0.00083656, 0.00137209, -0.00000117, 0.00000000],
+		[-6.26768613, -0.00136426, 0.00083619, 0.00137149, -0.00000117, 0.00000000],
+		[-6.26770017, -0.00136366, 0.00083583, 0.00137089, -0.00000117, 0.00000000],
+		[-6.26771416, -0.00136306, 0.00083546, 0.00137029, -0.00000117, 0.00000000],
+		[-6.26772809, -0.00136247, 0.00083510, 0.00136969, -0.00000117, 0.00000000],
+		[-6.26774198, -0.00136187, 0.00083474, 0.00136909, -0.00000117, 0.00000000],
+		[-6.26775582, -0.00136128, 0.00083437, 0.00136849, -0.00000117, 0.00000000],
+		[-6.26776961, -0.00136068, 0.00083401, 0.00136789, -0.00000117, 0.00000000],
+		[-6.26778335, -0.00136009, 0.00083365, 0.00136729, -0.00000117, 0.00000000],
+		[-6.26779704, -0.00135949, 0.00083328, 0.00136669, -0.00000117, 0.00000000],
+		[-6.26781069, -0.00135890, 0.00083292, 0.00136610, -0.00000117, 0.00000000],
+		[-6.26782428, -0.00135831, 0.00083256, 0.00136550, -0.00000117, 0.00000000],
+		[-6.26783783, -0.00135771, 0.00083220, 0.00136490, -0.00000117, 0.00000000],
+		[-6.26785133, -0.00135712, 0.00083184, 0.00136431, -0.00000117, 0.00000000],
+		[-6.26786479, -0.00135653, 0.00083148, 0.00136371, -0.00000117, 0.00000000],
+		[-6.26787819, -0.00135594, 0.00083111, 0.00136312, -0.00000117, 0.00000000],
+		[-6.26789155, -0.00135535, 0.00083075, 0.00136253, -0.00000117, 0.00000000],
+		[-6.26790486, -0.00135476, 0.00083039, 0.00136193, -0.00000117, 0.00000000],
+		[-6.26791812, -0.00135417, 0.00083003, 0.00136134, -0.00000117, 0.00000000],
+		[-6.26793134, -0.00135358, 0.00082967, 0.00136075, -0.00000117, 0.00000000],
+		[-6.26794451, -0.00135299, 0.00082931, 0.00136016, -0.00000117, 0.00000000],
+		[-6.26795764, -0.00135240, 0.00082896, 0.00135956, -0.00000117, 0.00000000],
+		[-6.26797071, -0.00135182, 0.00082860, 0.00135897, -0.00000117, 0.00000000],
+		[-6.26798374, -0.00135123, 0.00082824, 0.00135838, -0.00000117, 0.00000000],
+		[-6.26799673, -0.00135064, 0.00082788, 0.00135779, -0.00000117, 0.00000000],
+		[-6.26800967, -0.00135006, 0.00082752, 0.00135720, -0.00000117, 0.00000000],
+		[-6.26802256, -0.00134947, 0.00082717, 0.00135662, -0.00000117, 0.00000000],
+		[-6.26803541, -0.00134889, 0.00082681, 0.00135603, -0.00000117, 0.00000000],
+		[-6.26804822, -0.00134830, 0.00082645, 0.00135544, -0.00000117, 0.00000000],
+		[-6.26806098, -0.00134772, 0.00082609, 0.00135485, -0.00000117, 0.00000000],
+		[-6.26807369, -0.00134713, 0.00082574, 0.00135427, -0.00000117, 0.00000000],
+		[-6.26808636, -0.00134655, 0.00082538, 0.00135368, -0.00000117, 0.00000000],
+		[-6.26809898, -0.00134597, 0.00082503, 0.00135309, -0.00000117, 0.00000000],
+		[-6.26811156, -0.00134539, 0.00082467, 0.00135251, -0.00000117, 0.00000000],
+		[-6.26812410, -0.00134481, 0.00082432, 0.00135192, -0.00000117, 0.00000000],
+		[-6.26813659, -0.00134422, 0.00082396, 0.00135134, -0.00000117, 0.00000000],
+		[-6.26814904, -0.00134364, 0.00082361, 0.00135075, -0.00000117, 0.00000000],
+		[-6.26816144, -0.00134306, 0.00082325, 0.00135017, -0.00000117, 0.00000000],
+		[-6.26817380, -0.00134248, 0.00082290, 0.00134959, -0.00000117, 0.00000000],
+		[-6.26818612, -0.00134191, 0.00082255, 0.00134901, -0.00000117, 0.00000000],
+		[-6.26819839, -0.00134133, 0.00082219, 0.00134842, -0.00000117, 0.00000000],
+		[-6.26821062, -0.00134075, 0.00082184, 0.00134784, -0.00000117, 0.00000000],
+		[-6.26822281, -0.00134017, 0.00082149, 0.00134726, -0.00000117, 0.00000000],
+		[-6.26823495, -0.00133959, 0.00082113, 0.00134668, -0.00000117, 0.00000000],
+		[-6.26824705, -0.00133902, 0.00082078, 0.00134610, -0.00000117, 0.00000000],
+		[-6.26825911, -0.00133844, 0.00082043, 0.00134552, -0.00000117, 0.00000000],
+		[-6.26827113, -0.00133787, 0.00082008, 0.00134494, -0.00000117, 0.00000000],
+		[-6.26828310, -0.00133729, 0.00081973, 0.00134437, -0.00000117, 0.00000000],
+		[-6.26829504, -0.00133672, 0.00081938, 0.00134379, -0.00000117, 0.00000000],
+		[-6.26830693, -0.00133614, 0.00081902, 0.00134321, -0.00000117, 0.00000000],
+		[-6.26831878, -0.00133557, 0.00081867, 0.00134263, -0.00000117, 0.00000000],
+		[-6.26833058, -0.00133499, 0.00081832, 0.00134206, -0.00000117, 0.00000000],
+		[-6.26834235, -0.00133442, 0.00081797, 0.00134148, -0.00000117, 0.00000000],
+		[-6.26835407, -0.00133385, 0.00081762, 0.00134090, -0.00000117, 0.00000000],
+		[-6.26836576, -0.00133328, 0.00081728, 0.00134033, -0.00000117, 0.00000000],
+		[-6.26837740, -0.00133271, 0.00081693, 0.00133976, -0.00000117, 0.00000000],
+		[-6.26838900, -0.00133214, 0.00081658, 0.00133918, -0.00000117, 0.00000000],
+		[-6.26840056, -0.00133157, 0.00081623, 0.00133861, -0.00000117, 0.00000000],
+		[-6.26841209, -0.00133100, 0.00081588, 0.00133803, -0.00000117, 0.00000000],
+		[-6.26842357, -0.00133043, 0.00081553, 0.00133746, -0.00000117, 0.00000000],
+		[-6.26843501, -0.00132986, 0.00081519, 0.00133689, -0.00000117, 0.00000000],
+		[-6.26844641, -0.00132929, 0.00081484, 0.00133632, -0.00000117, 0.00000000],
+		[-6.26845777, -0.00132872, 0.00081449, 0.00133575, -0.00000117, 0.00000000],
+		[-6.26846909, -0.00132815, 0.00081414, 0.00133518, -0.00000117, 0.00000000],
+		[-6.26848037, -0.00132759, 0.00081380, 0.00133461, -0.00000117, 0.00000000],
+		[-6.26849161, -0.00132702, 0.00081345, 0.00133404, -0.00000117, 0.00000000],
+		[-6.26850281, -0.00132645, 0.00081311, 0.00133347, -0.00000117, 0.00000000],
+		[-6.26851397, -0.00132589, 0.00081276, 0.00133290, -0.00000117, 0.00000000],
+		[-6.26852510, -0.00132532, 0.00081242, 0.00133233, -0.00000117, 0.00000000],
+		[-6.26853618, -0.00132476, 0.00081207, 0.00133176, -0.00000117, 0.00000000],
+		[-6.26854723, -0.00132419, 0.00081173, 0.00133120, -0.00000117, 0.00000000],
+		[-6.26855824, -0.00132363, 0.00081138, 0.00133063, -0.00000117, 0.00000000],
+		[-6.26856921, -0.00132307, 0.00081104, 0.00133006, -0.00000117, 0.00000000],
+		[-6.26858014, -0.00132251, 0.00081069, 0.00132950, -0.00000117, 0.00000000],
+		[-6.26859103, -0.00132194, 0.00081035, 0.00132893, -0.00000117, 0.00000000],
+		[-6.26860188, -0.00132138, 0.00081001, 0.00132837, -0.00000117, 0.00000000],
+		[-6.26861270, -0.00132082, 0.00080966, 0.00132780, -0.00000117, 0.00000000],
+		[-6.26862348, -0.00132026, 0.00080932, 0.00132724, -0.00000117, 0.00000000],
+		[-6.26863422, -0.00131970, 0.00080898, 0.00132667, -0.00000117, 0.00000000],
+		[-6.26864493, -0.00131914, 0.00080864, 0.00132611, -0.00000117, 0.00000000],
+		[-6.26865559, -0.00131858, 0.00080829, 0.00132555, -0.00000117, 0.00000000],
+		[-6.26866622, -0.00131802, 0.00080795, 0.00132499, -0.00000117, 0.00000000],
+		[-6.26867681, -0.00131746, 0.00080761, 0.00132442, -0.00000117, 0.00000000],
+		[-6.26868737, -0.00131690, 0.00080727, 0.00132386, -0.00000117, 0.00000000],
+		[-6.26869789, -0.00131635, 0.00080693, 0.00132330, -0.00000117, 0.00000000],
+		[-6.26870837, -0.00131579, 0.00080659, 0.00132274, -0.00000117, 0.00000000],
+		[-6.26871882, -0.00131523, 0.00080625, 0.00132218, -0.00000117, 0.00000000],
+		[-6.26872923, -0.00131468, 0.00080591, 0.00132162, -0.00000117, 0.00000000],
+		[-6.26873960, -0.00131412, 0.00080557, 0.00132106, -0.00000117, 0.00000000],
+		[-6.26874993, -0.00131357, 0.00080523, 0.00132050, -0.00000117, 0.00000000],
+		[-6.26876024, -0.00131301, 0.00080489, 0.00131995, -0.00000117, 0.00000000],
+		[-6.26877050, -0.00131246, 0.00080455, 0.00131939, -0.00000117, 0.00000000],
+		[-6.26878073, -0.00131190, 0.00080421, 0.00131883, -0.00000117, 0.00000000],
+		[-6.26879092, -0.00131135, 0.00080387, 0.00131828, -0.00000117, 0.00000000],
+		[-6.26880108, -0.00131080, 0.00080354, 0.00131772, -0.00000117, 0.00000000],
+		[-6.26881120, -0.00131024, 0.00080320, 0.00131716, -0.00000117, 0.00000000],
+		[-6.26882129, -0.00130969, 0.00080286, 0.00131661, -0.00000117, 0.00000000],
+		[-6.26883135, -0.00130914, 0.00080252, 0.00131605, -0.00000117, 0.00000000],
+		[-6.26884136, -0.00130859, 0.00080219, 0.00131550, -0.00000117, 0.00000000],
+		[-6.26885135, -0.00130804, 0.00080185, 0.00131495, -0.00000117, 0.00000000],
+		[-6.26886129, -0.00130749, 0.00080151, 0.00131439, -0.00000117, 0.00000000],
+		[-6.26887121, -0.00130694, 0.00080118, 0.00131384, -0.00000117, 0.00000000],
+		[-6.26888109, -0.00130639, 0.00080084, 0.00131329, -0.00000117, 0.00000000],
+		[-6.26889093, -0.00130584, 0.00080051, 0.00131274, -0.00000117, 0.00000000],
+		[-6.26890074, -0.00130529, 0.00080017, 0.00131218, -0.00000117, 0.00000000],
+		[-6.26891052, -0.00130474, 0.00079984, 0.00131163, -0.00000117, 0.00000000],
+		[-6.26892026, -0.00130420, 0.00079950, 0.00131108, -0.00000117, 0.00000000],
+		[-6.26892997, -0.00130365, 0.00079917, 0.00131053, -0.00000117, 0.00000000],
+		[-6.26893965, -0.00130310, 0.00079883, 0.00130998, -0.00000117, 0.00000000],
+		[-6.26894929, -0.00130256, 0.00079850, 0.00130943, -0.00000117, 0.00000000],
+		[-6.26895890, -0.00130201, 0.00079816, 0.00130888, -0.00000117, 0.00000000],
+		[-6.26896848, -0.00130146, 0.00079783, 0.00130834, -0.00000117, 0.00000000],
+		[-6.26897802, -0.00130092, 0.00079750, 0.00130779, -0.00000117, 0.00000000],
+		[-6.26898753, -0.00130038, 0.00079717, 0.00130724, -0.00000117, 0.00000000],
+		[-6.26899700, -0.00129983, 0.00079683, 0.00130669, -0.00000117, 0.00000000],
+		[-6.26900645, -0.00129929, 0.00079650, 0.00130615, -0.00000117, 0.00000000],
+		[-6.26901586, -0.00129875, 0.00079617, 0.00130560, -0.00000117, 0.00000000],
+		[-6.26902524, -0.00129820, 0.00079584, 0.00130506, -0.00000117, 0.00000000],
+		[-6.26903458, -0.00129766, 0.00079550, 0.00130451, -0.00000117, 0.00000000],
+		[-6.26904390, -0.00129712, 0.00079517, 0.00130397, -0.00000117, 0.00000000],
+		[-6.26905318, -0.00129658, 0.00079484, 0.00130342, -0.00000117, 0.00000000],
+		[-6.26906243, -0.00129604, 0.00079451, 0.00130288, -0.00000117, 0.00000000],
+		[-6.26907164, -0.00129550, 0.00079418, 0.00130233, -0.00000117, 0.00000000],
+		[-6.26908083, -0.00129496, 0.00079385, 0.00130179, -0.00000117, 0.00000000],
+		[-6.26908998, -0.00129442, 0.00079352, 0.00130125, -0.00000117, 0.00000000],
+		[-6.26909911, -0.00129388, 0.00079319, 0.00130071, -0.00000117, 0.00000000],
+		[-6.26910820, -0.00129334, 0.00079286, 0.00130016, -0.00000117, 0.00000000],
+		[-6.26911726, -0.00129280, 0.00079253, 0.00129962, -0.00000117, 0.00000000],
+		[-6.26912629, -0.00129226, 0.00079220, 0.00129908, -0.00000117, 0.00000000],
+		[-6.26913528, -0.00129173, 0.00079188, 0.00129854, -0.00000117, 0.00000000],
+		[-6.26914425, -0.00129119, 0.00079155, 0.00129800, -0.00000117, 0.00000000],
+		[-6.26915318, -0.00129065, 0.00079122, 0.00129746, -0.00000117, 0.00000000],
+		[-6.26916209, -0.00129012, 0.00079089, 0.00129692, -0.00000117, 0.00000000],
+		[-6.26917096, -0.00128958, 0.00079056, 0.00129639, -0.00000117, 0.00000000],
+		[-6.26917981, -0.00128905, 0.00079024, 0.00129585, -0.00000117, 0.00000000],
+		[-6.26918862, -0.00128851, 0.00078991, 0.00129531, -0.00000117, 0.00000000],
+		[-6.26919740, -0.00128798, 0.00078958, 0.00129477, -0.00000117, 0.00000000],
+		[-6.26920615, -0.00128744, 0.00078926, 0.00129424, -0.00000117, 0.00000000],
+		[-6.26921488, -0.00128691, 0.00078893, 0.00129370, -0.00000117, 0.00000000],
+		[-6.26922357, -0.00128638, 0.00078860, 0.00129316, -0.00000117, 0.00000000],
+		[-6.26923223, -0.00128585, 0.00078828, 0.00129263, -0.00000117, 0.00000000],
+		[-6.26924086, -0.00128531, 0.00078795, 0.00129209, -0.00000117, 0.00000000],
+		[-6.26924947, -0.00128478, 0.00078763, 0.00129156, -0.00000117, 0.00000000],
+		[-6.26925804, -0.00128425, 0.00078730, 0.00129102, -0.00000117, 0.00000000],
+		[-6.26926658, -0.00128372, 0.00078698, 0.00129049, -0.00000117, 0.00000000],
+		[-6.26927510, -0.00128319, 0.00078665, 0.00128996, -0.00000117, 0.00000000],
+		[-6.26928358, -0.00128266, 0.00078633, 0.00128942, -0.00000117, 0.00000000],
+		[-6.26929204, -0.00128213, 0.00078601, 0.00128889, -0.00000117, 0.00000000],
+		[-6.26930047, -0.00128160, 0.00078568, 0.00128836, -0.00000117, 0.00000000],
+		[-6.26930887, -0.00128107, 0.00078536, 0.00128783, -0.00000117, 0.00000000],
+		[-6.26931724, -0.00128054, 0.00078504, 0.00128730, -0.00000117, 0.00000000],
+		[-6.26932558, -0.00128002, 0.00078471, 0.00128677, -0.00000117, 0.00000000],
+		[-6.26933389, -0.00127949, 0.00078439, 0.00128624, -0.00000117, 0.00000000],
+		[-6.26934217, -0.00127896, 0.00078407, 0.00128571, -0.00000117, 0.00000000],
+		[-6.26935043, -0.00127844, 0.00078375, 0.00128518, -0.00000117, 0.00000000],
+		[-6.26935866, -0.00127791, 0.00078342, 0.00128465, -0.00000117, 0.00000000],
+		[-6.26936686, -0.00127738, 0.00078310, 0.00128412, -0.00000117, 0.00000000],
+		[-6.26937503, -0.00127686, 0.00078278, 0.00128359, -0.00000117, 0.00000000],
+		[-6.26938317, -0.00127634, 0.00078246, 0.00128306, -0.00000117, 0.00000000],
+		[-6.26939129, -0.00127581, 0.00078214, 0.00128254, -0.00000117, 0.00000000],
+		[-6.26939937, -0.00127529, 0.00078182, 0.00128201, -0.00000117, 0.00000000],
+		[-6.26940743, -0.00127476, 0.00078150, 0.00128148, -0.00000117, 0.00000000],
+		[-6.26941547, -0.00127424, 0.00078118, 0.00128096, -0.00000117, 0.00000000],
+		[-6.26942347, -0.00127372, 0.00078086, 0.00128043, -0.00000117, 0.00000000],
+		[-6.26943145, -0.00127320, 0.00078054, 0.00127991, -0.00000117, 0.00000000],
+		[-6.26943940, -0.00127267, 0.00078022, 0.00127938, -0.00000117, 0.00000000],
+		[-6.26944732, -0.00127215, 0.00077990, 0.00127886, -0.00000117, 0.00000000],
+		[-6.26945522, -0.00127163, 0.00077958, 0.00127833, -0.00000117, 0.00000000],
+		[-6.26946309, -0.00127111, 0.00077926, 0.00127781, -0.00000117, 0.00000000],
+		[-6.26947093, -0.00127059, 0.00077895, 0.00127729, -0.00000117, 0.00000000],
+		[-6.26947875, -0.00127007, 0.00077863, 0.00127677, -0.00000117, 0.00000000],
+		[-6.26948654, -0.00126955, 0.00077831, 0.00127624, -0.00000117, 0.00000000],
+		[-6.26949430, -0.00126903, 0.00077799, 0.00127572, -0.00000117, 0.00000000],
+		[-6.26950204, -0.00126852, 0.00077768, 0.00127520, -0.00000117, 0.00000000],
+		[-6.26950975, -0.00126800, 0.00077736, 0.00127468, -0.00000117, 0.00000000],
+		[-6.26951743, -0.00126748, 0.00077704, 0.00127416, -0.00000117, 0.00000000],
+		[-6.26952509, -0.00126696, 0.00077673, 0.00127364, -0.00000117, 0.00000000],
+		[-6.26953272, -0.00126645, 0.00077641, 0.00127312, -0.00000117, 0.00000000],
+		[-6.26954033, -0.00126593, 0.00077609, 0.00127260, -0.00000117, 0.00000000],
+		[-6.26954791, -0.00126541, 0.00077578, 0.00127208, -0.00000117, 0.00000000],
+		[-6.26955546, -0.00126490, 0.00077546, 0.00127156, -0.00000117, 0.00000000],
+		[-6.26956299, -0.00126438, 0.00077515, 0.00127104, -0.00000117, 0.00000000],
+		[-6.26957049, -0.00126387, 0.00077483, 0.00127053, -0.00000117, 0.00000000],
+		[-6.26957797, -0.00126335, 0.00077452, 0.00127001, -0.00000117, 0.00000000],
+		[-6.26958542, -0.00126284, 0.00077420, 0.00126949, -0.00000117, 0.00000000],
+		[-6.26959285, -0.00126233, 0.00077389, 0.00126898, -0.00000117, 0.00000000],
+		[-6.26960025, -0.00126181, 0.00077357, 0.00126846, -0.00000117, 0.00000000],
+		[-6.26960763, -0.00126130, 0.00077326, 0.00126795, -0.00000117, 0.00000000],
+		[-6.26961498, -0.00126079, 0.00077295, 0.00126743, -0.00000117, 0.00000000],
+		[-6.26962230, -0.00126028, 0.00077263, 0.00126692, -0.00000117, 0.00000000],
+		[-6.26962961, -0.00125977, 0.00077232, 0.00126640, -0.00000117, 0.00000000],
+		[-6.26963688, -0.00125926, 0.00077201, 0.00126589, -0.00000117, 0.00000000],
+		[-6.26964414, -0.00125874, 0.00077170, 0.00126537, -0.00000117, 0.00000000],
+		[-6.26965137, -0.00125823, 0.00077138, 0.00126486, -0.00000117, 0.00000000],
+		[-6.26965857, -0.00125772, 0.00077107, 0.00126435, -0.00000117, 0.00000000],
+		[-6.26966575, -0.00125722, 0.00077076, 0.00126384, -0.00000117, 0.00000000],
+		[-6.26967290, -0.00125671, 0.00077045, 0.00126333, -0.00000117, 0.00000000],
+		[-6.26968003, -0.00125620, 0.00077014, 0.00126281, -0.00000117, 0.00000000],
+		[-6.26968714, -0.00125569, 0.00076983, 0.00126230, -0.00000117, 0.00000000],
+		[-6.26969422, -0.00125518, 0.00076952, 0.00126179, -0.00000117, 0.00000000],
+		[-6.26970128, -0.00125468, 0.00076920, 0.00126128, -0.00000117, 0.00000000],
+		[-6.26970832, -0.00125417, 0.00076889, 0.00126077, -0.00000117, 0.00000000],
+		[-6.26971533, -0.00125366, 0.00076858, 0.00126026, -0.00000117, 0.00000000],
+		[-6.26972232, -0.00125316, 0.00076827, 0.00125975, -0.00000117, 0.00000000],
+		[-6.26972928, -0.00125265, 0.00076797, 0.00125925, -0.00000117, 0.00000000],
+		[-6.26973622, -0.00125214, 0.00076766, 0.00125874, -0.00000117, 0.00000000],
+		[-6.26974314, -0.00125164, 0.00076735, 0.00125823, -0.00000117, 0.00000000],
+		[-6.26975003, -0.00125114, 0.00076704, 0.00125772, -0.00000117, 0.00000000],
+		[-6.26975691, -0.00125063, 0.00076673, 0.00125722, -0.00000117, 0.00000000],
+		[-6.26976375, -0.00125013, 0.00076642, 0.00125671, -0.00000117, 0.00000000],
+		[-6.26977058, -0.00124962, 0.00076611, 0.00125620, -0.00000117, 0.00000000],
+		[-6.26977738, -0.00124912, 0.00076581, 0.00125570, -0.00000117, 0.00000000],
+		[-6.26978416, -0.00124862, 0.00076550, 0.00125519, -0.00000117, 0.00000000],
+		[-6.26979092, -0.00124812, 0.00076519, 0.00125469, -0.00000117, 0.00000000],
+		[-6.26979765, -0.00124762, 0.00076488, 0.00125418, -0.00000117, 0.00000000],
+		[-6.26980436, -0.00124711, 0.00076458, 0.00125368, -0.00000117, 0.00000000],
+		[-6.26981105, -0.00124661, 0.00076427, 0.00125318, -0.00000117, 0.00000000],
+		[-6.26981772, -0.00124611, 0.00076396, 0.00125267, -0.00000117, 0.00000000],
+		[-6.26982436, -0.00124561, 0.00076366, 0.00125217, -0.00000117, 0.00000000],
+		[-6.26983098, -0.00124511, 0.00076335, 0.00125167, -0.00000117, 0.00000000],
+		[-6.26983758, -0.00124461, 0.00076305, 0.00125116, -0.00000117, 0.00000000],
+		[-6.26984416, -0.00124412, 0.00076274, 0.00125066, -0.00000117, 0.00000000],
+		[-6.26985071, -0.00124362, 0.00076244, 0.00125016, -0.00000117, 0.00000000],
+		[-6.26985725, -0.00124312, 0.00076213, 0.00124966, -0.00000117, 0.00000000],
+		[-6.26986376, -0.00124262, 0.00076183, 0.00124916, -0.00000117, 0.00000000],
+		[-6.26987025, -0.00124212, 0.00076152, 0.00124866, -0.00000117, 0.00000000],
+		[-6.26987672, -0.00124163, 0.00076122, 0.00124816, -0.00000117, 0.00000000],
+		[-6.26988316, -0.00124113, 0.00076091, 0.00124766, -0.00000117, 0.00000000],
+		[-6.26988959, -0.00124063, 0.00076061, 0.00124716, -0.00000117, 0.00000000],
+		[-6.26989599, -0.00124014, 0.00076031, 0.00124666, -0.00000117, 0.00000000],
+		[-6.26990237, -0.00123964, 0.00076000, 0.00124617, -0.00000117, 0.00000000],
+		[-6.26990873, -0.00123915, 0.00075970, 0.00124567, -0.00000117, 0.00000000],
+		[-6.26991507, -0.00123865, 0.00075940, 0.00124517, -0.00000117, 0.00000000],
+		[-6.26992139, -0.00123816, 0.00075909, 0.00124467, -0.00000117, 0.00000000],
+		[-6.26992769, -0.00123767, 0.00075879, 0.00124418, -0.00000117, 0.00000000],
+		[-6.26993396, -0.00123717, 0.00075849, 0.00124368, -0.00000117, 0.00000000],
+		[-6.26994022, -0.00123668, 0.00075819, 0.00124319, -0.00000117, 0.00000000],
+		[-6.26994645, -0.00123619, 0.00075789, 0.00124269, -0.00000117, 0.00000000],
+		[-6.26995267, -0.00123569, 0.00075758, 0.00124219, -0.00000117, 0.00000000],
+		[-6.26995886, -0.00123520, 0.00075728, 0.00124170, -0.00000117, 0.00000000],
+		[-6.26996503, -0.00123471, 0.00075698, 0.00124121, -0.00000117, 0.00000000],
+		[-6.26997119, -0.00123422, 0.00075668, 0.00124071, -0.00000117, 0.00000000],
+		[-6.26997732, -0.00123373, 0.00075638, 0.00124022, -0.00000117, 0.00000000],
+		[-6.26998343, -0.00123324, 0.00075608, 0.00123973, -0.00000117, 0.00000000],
+		[-6.26998952, -0.00123275, 0.00075578, 0.00123923, -0.00000117, 0.00000000],
+		[-6.26999559, -0.00123226, 0.00075548, 0.00123874, -0.00000117, 0.00000000],
+		[-6.27000164, -0.00123177, 0.00075518, 0.00123825, -0.00000117, 0.00000000],
+		[-6.27000767, -0.00123128, 0.00075488, 0.00123776, -0.00000117, 0.00000000],
+		[-6.27001368, -0.00123079, 0.00075458, 0.00123727, -0.00000117, 0.00000000],
+		[-6.27001968, -0.00123031, 0.00075428, 0.00123678, -0.00000117, 0.00000000],
+		[-6.27002565, -0.00122982, 0.00075399, 0.00123629, -0.00000117, 0.00000000],
+		[-6.27003160, -0.00122933, 0.00075369, 0.00123580, -0.00000117, 0.00000000],
+		[-6.27003753, -0.00122884, 0.00075339, 0.00123531, -0.00000117, 0.00000000],
+		[-6.27004344, -0.00122836, 0.00075309, 0.00123482, -0.00000117, 0.00000000],
+		[-6.27004933, -0.00122787, 0.00075279, 0.00123433, -0.00000117, 0.00000000],
+		[-6.27005521, -0.00122739, 0.00075250, 0.00123384, -0.00000117, 0.00000000],
+		[-6.27006106, -0.00122690, 0.00075220, 0.00123335, -0.00000117, 0.00000000],
+		[-6.27006690, -0.00122642, 0.00075190, 0.00123286, -0.00000117, 0.00000000],
+		[-6.27007271, -0.00122593, 0.00075160, 0.00123238, -0.00000117, 0.00000000],
+		[-6.27007851, -0.00122545, 0.00075131, 0.00123189, -0.00000117, 0.00000000],
+		[-6.27008428, -0.00122496, 0.00075101, 0.00123140, -0.00000117, 0.00000000],
+		[-6.27009004, -0.00122448, 0.00075072, 0.00123092, -0.00000117, 0.00000000],
+		[-6.27009578, -0.00122400, 0.00075042, 0.00123043, -0.00000117, 0.00000000],
+		[-6.27010150, -0.00122351, 0.00075012, 0.00122995, -0.00000117, 0.00000000],
+		[-6.27010720, -0.00122303, 0.00074983, 0.00122946, -0.00000117, 0.00000000],
+		[-6.27011288, -0.00122255, 0.00074953, 0.00122898, -0.00000117, 0.00000000],
+		[-6.27011855, -0.00122207, 0.00074924, 0.00122849, -0.00000117, 0.00000000],
+		[-6.27012419, -0.00122159, 0.00074894, 0.00122801, -0.00000117, 0.00000000],
+		[-6.27012982, -0.00122111, 0.00074865, 0.00122752, -0.00000117, 0.00000000],
+		[-6.27013543, -0.00122063, 0.00074836, 0.00122704, -0.00000117, 0.00000000],
+		[-6.27014102, -0.00122015, 0.00074806, 0.00122656, -0.00000117, 0.00000000],
+		[-6.27014659, -0.00121967, 0.00074777, 0.00122608, -0.00000117, 0.00000000],
+		[-6.27015214, -0.00121919, 0.00074747, 0.00122559, -0.00000117, 0.00000000],
+		[-6.27015767, -0.00121871, 0.00074718, 0.00122511, -0.00000117, 0.00000000],
+		[-6.27016319, -0.00121823, 0.00074689, 0.00122463, -0.00000117, 0.00000000],
+		[-6.27016869, -0.00121775, 0.00074659, 0.00122415, -0.00000117, 0.00000000],
+		[-6.27017417, -0.00121727, 0.00074630, 0.00122367, -0.00000117, 0.00000000],
+		[-6.27017963, -0.00121680, 0.00074601, 0.00122319, -0.00000117, 0.00000000],
+		[-6.27018508, -0.00121632, 0.00074572, 0.00122271, -0.00000117, 0.00000000],
+		[-6.27019050, -0.00121584, 0.00074543, 0.00122223, -0.00000117, 0.00000000],
+		[-6.27019591, -0.00121537, 0.00074513, 0.00122175, -0.00000117, 0.00000000],
+		[-6.27020130, -0.00121489, 0.00074484, 0.00122127, -0.00000117, 0.00000000],
+		[-6.27020668, -0.00121441, 0.00074455, 0.00122080, -0.00000117, 0.00000000],
+		[-6.27021203, -0.00121394, 0.00074426, 0.00122032, -0.00000117, 0.00000000],
+		[-6.27021737, -0.00121346, 0.00074397, 0.00121984, -0.00000117, 0.00000000],
+		[-6.27022270, -0.00121299, 0.00074368, 0.00121936, -0.00000117, 0.00000000],
+		[-6.27022800, -0.00121252, 0.00074339, 0.00121889, -0.00000117, 0.00000000],
+		[-6.27023329, -0.00121204, 0.00074310, 0.00121841, -0.00000117, 0.00000000],
+		[-6.27023856, -0.00121157, 0.00074281, 0.00121793, -0.00000117, 0.00000000],
+		[-6.27024381, -0.00121110, 0.00074252, 0.00121746, -0.00000117, 0.00000000],
+		[-6.27024904, -0.00121062, 0.00074223, 0.00121698, -0.00000117, 0.00000000],
+		[-6.27025426, -0.00121015, 0.00074194, 0.00121651, -0.00000117, 0.00000000],
+		[-6.27025946, -0.00120968, 0.00074165, 0.00121603, -0.00000117, 0.00000000],
+		[-6.27026465, -0.00120921, 0.00074136, 0.00121556, -0.00000117, 0.00000000],
+		[-6.27026982, -0.00120874, 0.00074107, 0.00121509, -0.00000117, 0.00000000],
+		[-6.27027497, -0.00120827, 0.00074078, 0.00121461, -0.00000117, 0.00000000],
+		[-6.27028010, -0.00120780, 0.00074050, 0.00121414, -0.00000117, 0.00000000],
+		[-6.27028522, -0.00120732, 0.00074021, 0.00121367, -0.00000116, 0.00000000],
+		[-6.27029032, -0.00120686, 0.00073992, 0.00121319, -0.00000116, 0.00000000],
+		[-6.27029541, -0.00120639, 0.00073963, 0.00121272, -0.00000116, 0.00000000],
+		[-6.27030047, -0.00120592, 0.00073934, 0.00121225, -0.00000116, 0.00000000],
+		[-6.27030552, -0.00120545, 0.00073906, 0.00121178, -0.00000116, 0.00000000],
+		[-6.27031056, -0.00120498, 0.00073877, 0.00121131, -0.00000116, 0.00000000],
+		[-6.27031558, -0.00120451, 0.00073848, 0.00121084, -0.00000116, 0.00000000],
+		[-6.27032058, -0.00120404, 0.00073820, 0.00121037, -0.00000116, 0.00000000],
+		[-6.27032557, -0.00120358, 0.00073791, 0.00120990, -0.00000116, 0.00000000],
+		[-6.27033054, -0.00120311, 0.00073763, 0.00120943, -0.00000116, 0.00000000],
+		[-6.27033549, -0.00120264, 0.00073734, 0.00120896, -0.00000116, 0.00000000],
+		[-6.27034043, -0.00120218, 0.00073705, 0.00120849, -0.00000116, 0.00000000],
+		[-6.27034536, -0.00120171, 0.00073677, 0.00120802, -0.00000116, 0.00000000],
+		[-6.27035026, -0.00120125, 0.00073648, 0.00120755, -0.00000116, 0.00000000],
+		[-6.27035515, -0.00120078, 0.00073620, 0.00120709, -0.00000116, 0.00000000],
+		[-6.27036003, -0.00120032, 0.00073591, 0.00120662, -0.00000116, 0.00000000],
+		[-6.27036489, -0.00119985, 0.00073563, 0.00120615, -0.00000116, 0.00000000],
+		[-6.27036973, -0.00119939, 0.00073535, 0.00120569, -0.00000116, 0.00000000],
+		[-6.27037456, -0.00119892, 0.00073506, 0.00120522, -0.00000116, 0.00000000],
+		[-6.27037937, -0.00119846, 0.00073478, 0.00120475, -0.00000116, 0.00000000],
+		[-6.27038417, -0.00119800, 0.00073449, 0.00120429, -0.00000116, 0.00000000],
+		[-6.27038895, -0.00119754, 0.00073421, 0.00120382, -0.00000116, 0.00000000],
+		[-6.27039372, -0.00119707, 0.00073393, 0.00120336, -0.00000116, 0.00000000],
+		[-6.27039847, -0.00119661, 0.00073364, 0.00120289, -0.00000116, 0.00000000],
+		[-6.27040321, -0.00119615, 0.00073336, 0.00120243, -0.00000116, 0.00000000],
+		[-6.27040793, -0.00119569, 0.00073308, 0.00120197, -0.00000116, 0.00000000],
+		[-6.27041263, -0.00119523, 0.00073280, 0.00120150, -0.00000116, 0.00000000],
+		[-6.27041732, -0.00119477, 0.00073251, 0.00120104, -0.00000116, 0.00000000],
+		[-6.27042200, -0.00119431, 0.00073223, 0.00120058, -0.00000116, 0.00000000],
+		[-6.27042666, -0.00119385, 0.00073195, 0.00120011, -0.00000116, 0.00000000],
+		[-6.27043131, -0.00119339, 0.00073167, 0.00119965, -0.00000116, 0.00000000],
+		[-6.27043594, -0.00119293, 0.00073139, 0.00119919, -0.00000116, 0.00000000],
+		[-6.27044055, -0.00119247, 0.00073111, 0.00119873, -0.00000116, 0.00000000],
+		[-6.27044516, -0.00119201, 0.00073083, 0.00119827, -0.00000116, 0.00000000],
+		[-6.27044974, -0.00119155, 0.00073054, 0.00119781, -0.00000116, 0.00000000],
+		[-6.27045432, -0.00119110, 0.00073026, 0.00119735, -0.00000116, 0.00000000],
+		[-6.27045887, -0.00119064, 0.00072998, 0.00119689, -0.00000116, 0.00000000],
+		[-6.27046342, -0.00119018, 0.00072970, 0.00119643, -0.00000116, 0.00000000],
+		[-6.27046795, -0.00118973, 0.00072942, 0.00119597, -0.00000116, 0.00000000],
+		[-6.27047246, -0.00118927, 0.00072914, 0.00119551, -0.00000116, 0.00000000],
+		[-6.27047696, -0.00118881, 0.00072887, 0.00119505, -0.00000116, 0.00000000],
+		[-6.27048145, -0.00118836, 0.00072859, 0.00119459, -0.00000116, 0.00000000],
+		[-6.27048592, -0.00118790, 0.00072831, 0.00119414, -0.00000116, 0.00000000],
+		[-6.27049038, -0.00118745, 0.00072803, 0.00119368, -0.00000116, 0.00000000],
+		[-6.27049482, -0.00118699, 0.00072775, 0.00119322, -0.00000116, 0.00000000],
+		[-6.27049925, -0.00118654, 0.00072747, 0.00119277, -0.00000116, 0.00000000],
+		[-6.27050366, -0.00118609, 0.00072719, 0.00119231, -0.00000116, 0.00000000],
+		[-6.27050807, -0.00118563, 0.00072692, 0.00119185, -0.00000116, 0.00000000],
+		[-6.27051245, -0.00118518, 0.00072664, 0.00119140, -0.00000116, 0.00000000],
+		[-6.27051683, -0.00118473, 0.00072636, 0.00119094, -0.00000116, 0.00000000],
+		[-6.27052119, -0.00118427, 0.00072608, 0.00119049, -0.00000116, 0.00000000],
+		[-6.27052553, -0.00118382, 0.00072581, 0.00119003, -0.00000116, 0.00000000],
+		[-6.27052986, -0.00118337, 0.00072553, 0.00118958, -0.00000116, 0.00000000],
+		[-6.27053418, -0.00118292, 0.00072525, 0.00118912, -0.00000116, 0.00000000],
+		[-6.27053849, -0.00118247, 0.00072498, 0.00118867, -0.00000116, 0.00000000],
+		[-6.27054278, -0.00118202, 0.00072470, 0.00118822, -0.00000116, 0.00000000],
+		[-6.27054706, -0.00118157, 0.00072442, 0.00118776, -0.00000116, 0.00000000],
+		[-6.27055132, -0.00118112, 0.00072415, 0.00118731, -0.00000116, 0.00000000],
+		[-6.27055557, -0.00118067, 0.00072387, 0.00118686, -0.00000116, 0.00000000],
+		[-6.27055981, -0.00118022, 0.00072360, 0.00118641, -0.00000116, 0.00000000],
+		[-6.27056403, -0.00117977, 0.00072332, 0.00118596, -0.00000116, 0.00000000],
+		[-6.27056825, -0.00117932, 0.00072305, 0.00118550, -0.00000116, 0.00000000],
+		[-6.27057244, -0.00117887, 0.00072277, 0.00118505, -0.00000116, 0.00000000],
+		[-6.27057663, -0.00117842, 0.00072250, 0.00118460, -0.00000116, 0.00000000],
+		[-6.27058080, -0.00117798, 0.00072222, 0.00118415, -0.00000116, 0.00000000],
+		[-6.27058496, -0.00117753, 0.00072195, 0.00118370, -0.00000116, 0.00000000],
+		[-6.27058910, -0.00117708, 0.00072167, 0.00118325, -0.00000116, 0.00000000],
+		[-6.27059324, -0.00117663, 0.00072140, 0.00118280, -0.00000116, 0.00000000],
+		[-6.27059736, -0.00117619, 0.00072113, 0.00118236, -0.00000116, 0.00000000],
+		[-6.27060146, -0.00117574, 0.00072085, 0.00118191, -0.00000116, 0.00000000],
+		[-6.27060556, -0.00117530, 0.00072058, 0.00118146, -0.00000116, 0.00000000],
+		[-6.27060964, -0.00117485, 0.00072031, 0.00118101, -0.00000116, 0.00000000],
+		[-6.27061371, -0.00117441, 0.00072004, 0.00118056, -0.00000116, 0.00000000],
+		[-6.27061776, -0.00117396, 0.00071976, 0.00118012, -0.00000116, 0.00000000],
+		[-6.27062180, -0.00117352, 0.00071949, 0.00117967, -0.00000116, 0.00000000],
+		[-6.27062583, -0.00117307, 0.00071922, 0.00117922, -0.00000116, 0.00000000],
+		[-6.27062985, -0.00117263, 0.00071895, 0.00117878, -0.00000116, 0.00000000],
+		[-6.27063386, -0.00117219, 0.00071867, 0.00117833, -0.00000116, 0.00000000],
+		[-6.27063785, -0.00117174, 0.00071840, 0.00117789, -0.00000116, 0.00000000],
+		[-6.27064183, -0.00117130, 0.00071813, 0.00117744, -0.00000116, 0.00000000],
+		[-6.27064580, -0.00117086, 0.00071786, 0.00117700, -0.00000116, 0.00000000],
+		[-6.27064976, -0.00117042, 0.00071759, 0.00117655, -0.00000116, 0.00000000],
+		[-6.27065370, -0.00116997, 0.00071732, 0.00117611, -0.00000116, 0.00000000],
+		[-6.27065763, -0.00116953, 0.00071705, 0.00117566, -0.00000116, 0.00000000],
+		[-6.27066155, -0.00116909, 0.00071678, 0.00117522, -0.00000116, 0.00000000],
+		[-6.27066546, -0.00116865, 0.00071651, 0.00117478, -0.00000116, 0.00000000],
+		[-6.27066935, -0.00116821, 0.00071624, 0.00117433, -0.00000116, 0.00000000],
+		[-6.27067323, -0.00116777, 0.00071597, 0.00117389, -0.00000116, 0.00000000],
+		[-6.27067711, -0.00116733, 0.00071570, 0.00117345, -0.00000116, 0.00000000],
+		[-6.27068096, -0.00116689, 0.00071543, 0.00117301, -0.00000116, 0.00000000],
+		[-6.27068481, -0.00116645, 0.00071516, 0.00117257, -0.00000116, 0.00000000],
+		[-6.27068865, -0.00116601, 0.00071489, 0.00117212, -0.00000116, 0.00000000],
+		[-6.27069247, -0.00116558, 0.00071462, 0.00117168, -0.00000116, 0.00000000],
+		[-6.27069628, -0.00116514, 0.00071435, 0.00117124, -0.00000116, 0.00000000],
+		[-6.27070008, -0.00116470, 0.00071409, 0.00117080, -0.00000116, 0.00000000],
+		[-6.27070387, -0.00116426, 0.00071382, 0.00117036, -0.00000116, 0.00000000],
+		[-6.27070765, -0.00116383, 0.00071355, 0.00116992, -0.00000116, 0.00000000],
+		[-6.27071141, -0.00116339, 0.00071328, 0.00116948, -0.00000116, 0.00000000],
+		[-6.27071516, -0.00116295, 0.00071301, 0.00116905, -0.00000116, 0.00000000],
+		[-6.27071891, -0.00116252, 0.00071275, 0.00116861, -0.00000116, 0.00000000],
+		[-6.27072264, -0.00116208, 0.00071248, 0.00116817, -0.00000116, 0.00000000],
+		[-6.27072636, -0.00116165, 0.00071221, 0.00116773, -0.00000116, 0.00000000],
+		[-6.27073006, -0.00116121, 0.00071195, 0.00116729, -0.00000116, 0.00000000],
+		[-6.27073376, -0.00116078, 0.00071168, 0.00116686, -0.00000116, 0.00000000],
+		[-6.27073744, -0.00116034, 0.00071141, 0.00116642, -0.00000116, 0.00000000],
+		[-6.27074112, -0.00115991, 0.00071115, 0.00116598, -0.00000116, 0.00000000],
+		[-6.27074478, -0.00115947, 0.00071088, 0.00116555, -0.00000116, 0.00000000],
+		[-6.27074843, -0.00115904, 0.00071062, 0.00116511, -0.00000116, 0.00000000],
+		[-6.27075207, -0.00115861, 0.00071035, 0.00116468, -0.00000116, 0.00000000],
+		[-6.27075570, -0.00115817, 0.00071008, 0.00116424, -0.00000116, 0.00000000],
+		[-6.27075932, -0.00115774, 0.00070982, 0.00116381, -0.00000116, 0.00000000],
+		[-6.27076293, -0.00115731, 0.00070955, 0.00116337, -0.00000116, 0.00000000],
+		[-6.27076652, -0.00115688, 0.00070929, 0.00116294, -0.00000116, 0.00000000],
+		[-6.27077011, -0.00115644, 0.00070902, 0.00116250, -0.00000116, 0.00000000],
+		[-6.27077368, -0.00115601, 0.00070876, 0.00116207, -0.00000116, 0.00000000],
+		[-6.27077724, -0.00115558, 0.00070850, 0.00116164, -0.00000116, 0.00000000],
+		[-6.27078080, -0.00115515, 0.00070823, 0.00116120, -0.00000116, 0.00000000],
+		[-6.27078434, -0.00115472, 0.00070797, 0.00116077, -0.00000116, 0.00000000],
+		[-6.27078787, -0.00115429, 0.00070770, 0.00116034, -0.00000116, 0.00000000],
+		[-6.27079139, -0.00115386, 0.00070744, 0.00115991, -0.00000116, 0.00000000],
+		[-6.27079490, -0.00115343, 0.00070718, 0.00115947, -0.00000116, 0.00000000],
+		[-6.27079840, -0.00115300, 0.00070692, 0.00115904, -0.00000116, 0.00000000],
+		[-6.27080189, -0.00115257, 0.00070665, 0.00115861, -0.00000116, 0.00000000],
+		[-6.27080537, -0.00115215, 0.00070639, 0.00115818, -0.00000116, 0.00000000],
+		[-6.27080883, -0.00115172, 0.00070613, 0.00115775, -0.00000116, 0.00000000],
+		[-6.27081229, -0.00115129, 0.00070586, 0.00115732, -0.00000116, 0.00000000],
+		[-6.27081574, -0.00115086, 0.00070560, 0.00115689, -0.00000116, 0.00000000],
+		[-6.27081917, -0.00115044, 0.00070534, 0.00115646, -0.00000116, 0.00000000],
+		[-6.27082260, -0.00115001, 0.00070508, 0.00115603, -0.00000116, 0.00000000],
+		[-6.27082601, -0.00114958, 0.00070482, 0.00115560, -0.00000116, 0.00000000],
+		[-6.27082942, -0.00114916, 0.00070456, 0.00115517, -0.00000116, 0.00000000],
+		[-6.27083281, -0.00114873, 0.00070430, 0.00115475, -0.00000116, 0.00000000],
+		[-6.27083620, -0.00114830, 0.00070403, 0.00115432, -0.00000116, 0.00000000],
+		[-6.27083957, -0.00114788, 0.00070377, 0.00115389, -0.00000116, 0.00000000],
+		[-6.27084294, -0.00114745, 0.00070351, 0.00115346, -0.00000116, 0.00000000],
+		[-6.27084629, -0.00114703, 0.00070325, 0.00115304, -0.00000116, 0.00000000],
+		[-6.27084964, -0.00114661, 0.00070299, 0.00115261, -0.00000116, 0.00000000],
+		[-6.27085297, -0.00114618, 0.00070273, 0.00115218, -0.00000116, 0.00000000],
+		[-6.27085630, -0.00114576, 0.00070247, 0.00115176, -0.00000116, 0.00000000],
+		[-6.27085961, -0.00114533, 0.00070221, 0.00115133, -0.00000116, 0.00000000],
+		[-6.27086292, -0.00114491, 0.00070195, 0.00115091, -0.00000116, 0.00000000],
+		[-6.27086621, -0.00114449, 0.00070169, 0.00115048, -0.00000116, 0.00000000],
+		[-6.27086950, -0.00114407, 0.00070144, 0.00115006, -0.00000116, 0.00000000],
+		[-6.27087277, -0.00114364, 0.00070118, 0.00114963, -0.00000116, 0.00000000],
+		[-6.27087604, -0.00114322, 0.00070092, 0.00114921, -0.00000116, 0.00000000],
+		[-6.27087929, -0.00114280, 0.00070066, 0.00114878, -0.00000116, 0.00000000],
+		[-6.27088254, -0.00114238, 0.00070040, 0.00114836, -0.00000116, 0.00000000],
+		[-6.27088577, -0.00114196, 0.00070014, 0.00114794, -0.00000116, 0.00000000],
+		[-6.27088900, -0.00114154, 0.00069989, 0.00114751, -0.00000116, 0.00000000],
+		[-6.27089222, -0.00114112, 0.00069963, 0.00114709, -0.00000116, 0.00000000],
+		[-6.27089543, -0.00114070, 0.00069937, 0.00114667, -0.00000116, 0.00000000],
+		[-6.27089862, -0.00114028, 0.00069911, 0.00114625, -0.00000116, 0.00000000],
+		[-6.27090181, -0.00113986, 0.00069886, 0.00114582, -0.00000116, 0.00000000],
+		[-6.27090499, -0.00113944, 0.00069860, 0.00114540, -0.00000116, 0.00000000],
+		[-6.27090816, -0.00113902, 0.00069834, 0.00114498, -0.00000116, 0.00000000],
+		[-6.27091132, -0.00113860, 0.00069809, 0.00114456, -0.00000116, 0.00000000],
+		[-6.27091447, -0.00113818, 0.00069783, 0.00114414, -0.00000116, 0.00000000],
+		[-6.27091762, -0.00113777, 0.00069757, 0.00114372, -0.00000116, 0.00000000],
+		[-6.27092075, -0.00113735, 0.00069732, 0.00114330, -0.00000116, 0.00000000],
+		[-6.27092387, -0.00113693, 0.00069706, 0.00114288, -0.00000116, 0.00000000],
+		[-6.27092699, -0.00113651, 0.00069681, 0.00114246, -0.00000116, 0.00000000],
+		[-6.27093009, -0.00113610, 0.00069655, 0.00114204, -0.00000116, 0.00000000],
+		[-6.27093319, -0.00113568, 0.00069629, 0.00114162, -0.00000116, 0.00000000],
+		[-6.27093627, -0.00113527, 0.00069604, 0.00114121, -0.00000116, 0.00000000],
+		[-6.27093935, -0.00113485, 0.00069578, 0.00114079, -0.00000116, 0.00000000],
+		[-6.27094242, -0.00113443, 0.00069553, 0.00114037, -0.00000116, 0.00000000],
+		[-6.27094548, -0.00113402, 0.00069528, 0.00113995, -0.00000116, 0.00000000],
+		[-6.27094853, -0.00113360, 0.00069502, 0.00113954, -0.00000116, 0.00000000],
+		[-6.27095157, -0.00113319, 0.00069477, 0.00113912, -0.00000116, 0.00000000],
+		[-6.27095461, -0.00113278, 0.00069451, 0.00113870, -0.00000116, 0.00000000],
+		[-6.27095763, -0.00113236, 0.00069426, 0.00113829, -0.00000116, 0.00000000],
+		[-6.27096065, -0.00113195, 0.00069401, 0.00113787, -0.00000116, 0.00000000],
+		[-6.27096365, -0.00113154, 0.00069375, 0.00113745, -0.00000116, 0.00000000],
+		[-6.27096665, -0.00113112, 0.00069350, 0.00113704, -0.00000116, 0.00000000],
+		[-6.27096964, -0.00113071, 0.00069325, 0.00113662, -0.00000116, 0.00000000],
+		[-6.27097262, -0.00113030, 0.00069299, 0.00113621, -0.00000116, 0.00000000],
+		[-6.27097559, -0.00112989, 0.00069274, 0.00113580, -0.00000116, 0.00000000],
+		[-6.27097856, -0.00112947, 0.00069249, 0.00113538, -0.00000116, 0.00000000],
+		[-6.27098151, -0.00112906, 0.00069224, 0.00113497, -0.00000116, 0.00000000],
+		[-6.27098446, -0.00112865, 0.00069198, 0.00113455, -0.00000116, 0.00000000],
+		[-6.27098739, -0.00112824, 0.00069173, 0.00113414, -0.00000116, 0.00000000],
+		[-6.27099032, -0.00112783, 0.00069148, 0.00113373, -0.00000116, 0.00000000],
+		[-6.27099324, -0.00112742, 0.00069123, 0.00113332, -0.00000116, 0.00000000],
+		[-6.27099616, -0.00112701, 0.00069098, 0.00113290, -0.00000116, 0.00000000],
+		[-6.27099906, -0.00112660, 0.00069072, 0.00113249, -0.00000116, 0.00000000],
+		[-6.27100196, -0.00112619, 0.00069047, 0.00113208, -0.00000116, 0.00000000],
+		[-6.27100484, -0.00112578, 0.00069022, 0.00113167, -0.00000116, 0.00000000],
+		[-6.27100772, -0.00112537, 0.00068997, 0.00113126, -0.00000116, 0.00000000],
+		[-6.27101059, -0.00112496, 0.00068972, 0.00113085, -0.00000116, 0.00000000],
+		[-6.27101345, -0.00112455, 0.00068947, 0.00113044, -0.00000116, 0.00000000],
+		[-6.27101631, -0.00112415, 0.00068922, 0.00113003, -0.00000116, 0.00000000],
+		[-6.27101915, -0.00112374, 0.00068897, 0.00112962, -0.00000116, 0.00000000],
+		[-6.27102199, -0.00112333, 0.00068872, 0.00112921, -0.00000116, 0.00000000],
+		[-6.27102482, -0.00112292, 0.00068847, 0.00112880, -0.00000116, 0.00000000],
+		[-6.27102764, -0.00112252, 0.00068822, 0.00112839, -0.00000116, 0.00000000],
+		[-6.27103045, -0.00112211, 0.00068797, 0.00112798, -0.00000116, 0.00000000],
+		[-6.27103326, -0.00112171, 0.00068772, 0.00112757, -0.00000116, 0.00000000],
+		[-6.27103606, -0.00112130, 0.00068747, 0.00112716, -0.00000116, 0.00000000],
+		[-6.27103885, -0.00112089, 0.00068723, 0.00112675, -0.00000116, 0.00000000],
+		[-6.27104163, -0.00112049, 0.00068698, 0.00112635, -0.00000116, 0.00000000],
+		[-6.27104440, -0.00112008, 0.00068673, 0.00112594, -0.00000116, 0.00000000],
+		[-6.27104717, -0.00111968, 0.00068648, 0.00112553, -0.00000116, 0.00000000],
+		[-6.27104992, -0.00111927, 0.00068623, 0.00112513, -0.00000116, 0.00000000],
+		[-6.27105267, -0.00111887, 0.00068599, 0.00112472, -0.00000116, 0.00000000],
+		[-6.27105541, -0.00111847, 0.00068574, 0.00112431, -0.00000116, 0.00000000],
+		[-6.27105815, -0.00111806, 0.00068549, 0.00112391, -0.00000116, 0.00000000],
+		[-6.27106088, -0.00111766, 0.00068524, 0.00112350, -0.00000116, 0.00000000],
+		[-6.27106359, -0.00111726, 0.00068500, 0.00112310, -0.00000116, 0.00000000],
+		[-6.27106630, -0.00111685, 0.00068475, 0.00112269, -0.00000116, 0.00000000],
+		[-6.27106901, -0.00111645, 0.00068450, 0.00112229, -0.00000116, 0.00000000],
+		[-6.27107170, -0.00111605, 0.00068426, 0.00112188, -0.00000116, 0.00000000],
+		[-6.27107439, -0.00111565, 0.00068401, 0.00112148, -0.00000116, 0.00000000],
+		[-6.27107707, -0.00111525, 0.00068376, 0.00112107, -0.00000116, 0.00000000],
+		[-6.27107974, -0.00111484, 0.00068352, 0.00112067, -0.00000116, 0.00000000],
+		[-6.27108241, -0.00111444, 0.00068327, 0.00112027, -0.00000116, 0.00000000],
+		[-6.27108507, -0.00111404, 0.00068302, 0.00111987, -0.00000116, 0.00000000],
+		[-6.27108772, -0.00111364, 0.00068278, 0.00111946, -0.00000116, 0.00000000],
+		[-6.27109036, -0.00111324, 0.00068253, 0.00111906, -0.00000116, 0.00000000],
+		[-6.27109300, -0.00111284, 0.00068229, 0.00111866, -0.00000116, 0.00000000],
+		[-6.27109562, -0.00111244, 0.00068204, 0.00111826, -0.00000116, 0.00000000],
+		[-6.27109825, -0.00111204, 0.00068180, 0.00111786, -0.00000116, 0.00000000],
+		[-6.27110086, -0.00111164, 0.00068155, 0.00111745, -0.00000116, 0.00000000],
+		[-6.27110347, -0.00111125, 0.00068131, 0.00111705, -0.00000116, 0.00000000],
+		[-6.27110606, -0.00111085, 0.00068106, 0.00111665, -0.00000116, 0.00000000],
+		[-6.27110866, -0.00111045, 0.00068082, 0.00111625, -0.00000116, 0.00000000],
+		[-6.27111124, -0.00111005, 0.00068058, 0.00111585, -0.00000116, 0.00000000],
+		[-6.27111382, -0.00110965, 0.00068033, 0.00111545, -0.00000116, 0.00000000],
+		[-6.27111639, -0.00110926, 0.00068009, 0.00111505, -0.00000116, 0.00000000],
+		[-6.27111895, -0.00110886, 0.00067985, 0.00111465, -0.00000116, 0.00000000],
+		[-6.27112151, -0.00110846, 0.00067960, 0.00111425, -0.00000116, 0.00000000],
+		[-6.27112405, -0.00110807, 0.00067936, 0.00111386, -0.00000116, 0.00000000],
+		[-6.27112660, -0.00110767, 0.00067912, 0.00111346, -0.00000116, 0.00000000],
+		[-6.27112913, -0.00110728, 0.00067887, 0.00111306, -0.00000116, 0.00000000],
+		[-6.27113166, -0.00110688, 0.00067863, 0.00111266, -0.00000116, 0.00000000],
+		[-6.27113418, -0.00110648, 0.00067839, 0.00111226, -0.00000116, 0.00000000],
+		[-6.27113669, -0.00110609, 0.00067815, 0.00111187, -0.00000116, 0.00000000],
+		[-6.27113920, -0.00110569, 0.00067790, 0.00111147, -0.00000116, 0.00000000],
+		[-6.27114170, -0.00110530, 0.00067766, 0.00111107, -0.00000116, 0.00000000],
+		[-6.27114419, -0.00110491, 0.00067742, 0.00111068, -0.00000116, 0.00000000],
+		[-6.27114668, -0.00110451, 0.00067718, 0.00111028, -0.00000116, 0.00000000],
+		[-6.27114915, -0.00110412, 0.00067694, 0.00110989, -0.00000116, 0.00000000],
+		[-6.27115163, -0.00110372, 0.00067670, 0.00110949, -0.00000116, 0.00000000],
+		[-6.27115409, -0.00110333, 0.00067646, 0.00110910, -0.00000116, 0.00000000],
+		[-6.27115655, -0.00110294, 0.00067621, 0.00110870, -0.00000116, 0.00000000],
+		[-6.27115900, -0.00110255, 0.00067597, 0.00110831, -0.00000116, 0.00000000],
+		[-6.27116145, -0.00110215, 0.00067573, 0.00110791, -0.00000116, 0.00000000],
+		[-6.27116389, -0.00110176, 0.00067549, 0.00110752, -0.00000116, 0.00000000],
+		[-6.27116632, -0.00110137, 0.00067525, 0.00110712, -0.00000116, 0.00000000],
+		[-6.27116874, -0.00110098, 0.00067501, 0.00110673, -0.00000116, 0.00000000],
+		[-6.27117116, -0.00110059, 0.00067477, 0.00110634, -0.00000115, 0.00000000],
+		[-6.27117357, -0.00110020, 0.00067453, 0.00110594, -0.00000115, 0.00000000],
+		[-6.27117598, -0.00109981, 0.00067429, 0.00110555, -0.00000115, 0.00000000],
+		[-6.27117838, -0.00109942, 0.00067405, 0.00110516, -0.00000115, 0.00000000],
+		[-6.27118077, -0.00109903, 0.00067381, 0.00110477, -0.00000115, 0.00000000],
+		[-6.27118315, -0.00109864, 0.00067358, 0.00110437, -0.00000115, 0.00000000],
+		[-6.27118553, -0.00109825, 0.00067334, 0.00110398, -0.00000115, 0.00000000],
+		[-6.27118791, -0.00109786, 0.00067310, 0.00110359, -0.00000115, 0.00000000],
+		[-6.27119027, -0.00109747, 0.00067286, 0.00110320, -0.00000115, 0.00000000],
+		[-6.27119263, -0.00109708, 0.00067262, 0.00110281, -0.00000115, 0.00000000],
+		[-6.27119499, -0.00109669, 0.00067238, 0.00110242, -0.00000115, 0.00000000],
+		[-6.27119733, -0.00109630, 0.00067214, 0.00110203, -0.00000115, 0.00000000],
+		[-6.27119968, -0.00109592, 0.00067191, 0.00110164, -0.00000115, 0.00000000],
+		[-6.27120201, -0.00109553, 0.00067167, 0.00110125, -0.00000115, 0.00000000],
+		[-6.27120434, -0.00109514, 0.00067143, 0.00110086, -0.00000115, 0.00000000],
+		[-6.27120666, -0.00109475, 0.00067119, 0.00110047, -0.00000115, 0.00000000],
+		[-6.27120898, -0.00109437, 0.00067096, 0.00110008, -0.00000115, 0.00000000],
+		[-6.27121129, -0.00109398, 0.00067072, 0.00109969, -0.00000115, 0.00000000],
+		[-6.27121359, -0.00109360, 0.00067048, 0.00109930, -0.00000115, 0.00000000],
+		[-6.27121589, -0.00109321, 0.00067025, 0.00109892, -0.00000115, 0.00000000],
+		[-6.27121818, -0.00109282, 0.00067001, 0.00109853, -0.00000115, 0.00000000],
+		[-6.27122046, -0.00109244, 0.00066977, 0.00109814, -0.00000115, 0.00000000],
+		[-6.27122274, -0.00109205, 0.00066954, 0.00109775, -0.00000115, 0.00000000],
+		[-6.27122501, -0.00109167, 0.00066930, 0.00109737, -0.00000115, 0.00000000],
+		[-6.27122728, -0.00109128, 0.00066907, 0.00109698, -0.00000115, 0.00000000],
+		[-6.27122954, -0.00109090, 0.00066883, 0.00109659, -0.00000115, 0.00000000],
+		[-6.27123179, -0.00109052, 0.00066859, 0.00109621, -0.00000115, 0.00000000],
+		[-6.27123404, -0.00109013, 0.00066836, 0.00109582, -0.00000115, 0.00000000],
+		[-6.27123629, -0.00108975, 0.00066812, 0.00109544, -0.00000115, 0.00000000],
+		[-6.27123852, -0.00108937, 0.00066789, 0.00109505, -0.00000115, 0.00000000],
+		[-6.27124075, -0.00108898, 0.00066765, 0.00109467, -0.00000115, 0.00000000],
+		[-6.27124298, -0.00108860, 0.00066742, 0.00109428, -0.00000115, 0.00000000],
+		[-6.27124520, -0.00108822, 0.00066718, 0.00109390, -0.00000115, 0.00000000],
+		[-6.27124741, -0.00108784, 0.00066695, 0.00109351, -0.00000115, 0.00000000],
+		[-6.27124962, -0.00108745, 0.00066672, 0.00109313, -0.00000115, 0.00000000],
+		[-6.27125182, -0.00108707, 0.00066648, 0.00109275, -0.00000115, 0.00000000],
+		[-6.27125401, -0.00108669, 0.00066625, 0.00109236, -0.00000115, 0.00000000],
+		[-6.27125620, -0.00108631, 0.00066601, 0.00109198, -0.00000115, 0.00000000],
+		[-6.27125839, -0.00108593, 0.00066578, 0.00109160, -0.00000115, 0.00000000],
+		[-6.27126057, -0.00108555, 0.00066555, 0.00109121, -0.00000115, 0.00000000],
+		[-6.27126274, -0.00108517, 0.00066531, 0.00109083, -0.00000115, 0.00000000],
+		[-6.27126490, -0.00108479, 0.00066508, 0.00109045, -0.00000115, 0.00000000],
+		[-6.27126707, -0.00108441, 0.00066485, 0.00109007, -0.00000115, 0.00000000],
+		[-6.27126922, -0.00108403, 0.00066461, 0.00108969, -0.00000115, 0.00000000],
+		[-6.27127137, -0.00108365, 0.00066438, 0.00108930, -0.00000115, 0.00000000],
+		[-6.27127351, -0.00108327, 0.00066415, 0.00108892, -0.00000115, 0.00000000],
+		[-6.27127565, -0.00108289, 0.00066392, 0.00108854, -0.00000115, 0.00000000],
+		[-6.27127779, -0.00108251, 0.00066369, 0.00108816, -0.00000115, 0.00000000],
+		[-6.27127991, -0.00108214, 0.00066345, 0.00108778, -0.00000115, 0.00000000],
+		[-6.27128204, -0.00108176, 0.00066322, 0.00108740, -0.00000115, 0.00000000],
+		[-6.27128415, -0.00108138, 0.00066299, 0.00108702, -0.00000115, 0.00000000],
+		[-6.27128626, -0.00108100, 0.00066276, 0.00108664, -0.00000115, 0.00000000],
+		[-6.27128837, -0.00108063, 0.00066253, 0.00108626, -0.00000115, 0.00000000],
+		[-6.27129047, -0.00108025, 0.00066230, 0.00108588, -0.00000115, 0.00000000],
+		[-6.27129256, -0.00107987, 0.00066206, 0.00108551, -0.00000115, 0.00000000],
+		[-6.27129465, -0.00107950, 0.00066183, 0.00108513, -0.00000115, 0.00000000],
+		[-6.27129674, -0.00107912, 0.00066160, 0.00108475, -0.00000115, 0.00000000],
+		[-6.27129881, -0.00107874, 0.00066137, 0.00108437, -0.00000115, 0.00000000],
+		[-6.27130089, -0.00107837, 0.00066114, 0.00108399, -0.00000115, 0.00000000],
+		[-6.27130295, -0.00107799, 0.00066091, 0.00108362, -0.00000115, 0.00000000],
+		[-6.27130502, -0.00107762, 0.00066068, 0.00108324, -0.00000115, 0.00000000],
+		[-6.27130707, -0.00107724, 0.00066045, 0.00108286, -0.00000115, 0.00000000],
+		[-6.27130913, -0.00107687, 0.00066022, 0.00108249, -0.00000115, 0.00000000],
+		[-6.27131117, -0.00107649, 0.00065999, 0.00108211, -0.00000115, 0.00000000],
+		[-6.27131321, -0.00107612, 0.00065976, 0.00108173, -0.00000115, 0.00000000],
+		[-6.27131525, -0.00107575, 0.00065953, 0.00108136, -0.00000115, 0.00000000],
+		[-6.27131728, -0.00107537, 0.00065931, 0.00108098, -0.00000115, 0.00000000],
+		[-6.27131930, -0.00107500, 0.00065908, 0.00108061, -0.00000115, 0.00000000],
+		[-6.27132133, -0.00107463, 0.00065885, 0.00108023, -0.00000115, 0.00000000],
+		[-6.27132334, -0.00107425, 0.00065862, 0.00107986, -0.00000115, 0.00000000],
+		[-6.27132535, -0.00107388, 0.00065839, 0.00107948, -0.00000115, 0.00000000],
+		[-6.27132736, -0.00107351, 0.00065816, 0.00107911, -0.00000115, 0.00000000],
+		[-6.27132936, -0.00107314, 0.00065793, 0.00107873, -0.00000115, 0.00000000],
+		[-6.27133135, -0.00107277, 0.00065771, 0.00107836, -0.00000115, 0.00000000],
+		[-6.27133334, -0.00107239, 0.00065748, 0.00107799, -0.00000115, 0.00000000],
+		[-6.27133532, -0.00107202, 0.00065725, 0.00107761, -0.00000115, 0.00000000],
+		[-6.27133730, -0.00107165, 0.00065702, 0.00107724, -0.00000115, 0.00000000],
+		[-6.27133928, -0.00107128, 0.00065680, 0.00107687, -0.00000115, 0.00000000],
+		[-6.27134125, -0.00107091, 0.00065657, 0.00107650, -0.00000115, 0.00000000],
+		[-6.27134321, -0.00107054, 0.00065634, 0.00107612, -0.00000115, 0.00000000],
+		[-6.27134517, -0.00107017, 0.00065611, 0.00107575, -0.00000115, 0.00000000],
+		[-6.27134713, -0.00106980, 0.00065589, 0.00107538, -0.00000115, 0.00000000],
+		[-6.27134908, -0.00106943, 0.00065566, 0.00107501, -0.00000115, 0.00000000],
+		[-6.27135102, -0.00106906, 0.00065543, 0.00107464, -0.00000115, 0.00000000],
+		[-6.27135296, -0.00106870, 0.00065521, 0.00107427, -0.00000115, 0.00000000],
+		[-6.27135490, -0.00106833, 0.00065498, 0.00107390, -0.00000115, 0.00000000],
+		[-6.27135683, -0.00106796, 0.00065476, 0.00107353, -0.00000115, 0.00000000],
+		[-6.27135875, -0.00106759, 0.00065453, 0.00107316, -0.00000115, 0.00000000],
+		[-6.27136067, -0.00106722, 0.00065430, 0.00107279, -0.00000115, 0.00000000],
+		[-6.27136259, -0.00106685, 0.00065408, 0.00107242, -0.00000115, 0.00000000],
+		[-6.27136450, -0.00106649, 0.00065385, 0.00107205, -0.00000115, 0.00000000],
+		[-6.27136641, -0.00106612, 0.00065363, 0.00107168, -0.00000115, 0.00000000],
+		[-6.27136831, -0.00106575, 0.00065340, 0.00107131, -0.00000115, 0.00000000],
+		[-6.27137021, -0.00106539, 0.00065318, 0.00107094, -0.00000115, 0.00000000],
+		[-6.27137210, -0.00106502, 0.00065295, 0.00107057, -0.00000115, 0.00000000],
+		[-6.27137399, -0.00106465, 0.00065273, 0.00107020, -0.00000115, 0.00000000],
+		[-6.27137587, -0.00106429, 0.00065250, 0.00106984, -0.00000115, 0.00000000],
+		[-6.27137775, -0.00106392, 0.00065228, 0.00106947, -0.00000115, 0.00000000],
+		[-6.27137962, -0.00106356, 0.00065206, 0.00106910, -0.00000115, 0.00000000],
+		[-6.27138149, -0.00106319, 0.00065183, 0.00106873, -0.00000115, 0.00000000],
+		[-6.27138335, -0.00106283, 0.00065161, 0.00106837, -0.00000115, 0.00000000],
+		[-6.27138521, -0.00106246, 0.00065139, 0.00106800, -0.00000115, 0.00000000],
+		[-6.27138707, -0.00106210, 0.00065116, 0.00106763, -0.00000115, 0.00000000],
+		[-6.27138892, -0.00106173, 0.00065094, 0.00106727, -0.00000115, 0.00000000],
+		[-6.27139077, -0.00106137, 0.00065072, 0.00106690, -0.00000115, 0.00000000],
+		[-6.27139261, -0.00106101, 0.00065049, 0.00106654, -0.00000115, 0.00000000],
+		[-6.27139445, -0.00106064, 0.00065027, 0.00106617, -0.00000115, 0.00000000],
+		[-6.27139628, -0.00106028, 0.00065005, 0.00106581, -0.00000115, 0.00000000],
+		[-6.27139811, -0.00105992, 0.00064982, 0.00106544, -0.00000115, 0.00000000],
+		[-6.27139993, -0.00105956, 0.00064960, 0.00106508, -0.00000115, 0.00000000],
+		[-6.27140175, -0.00105919, 0.00064938, 0.00106471, -0.00000115, 0.00000000],
+		[-6.27140356, -0.00105883, 0.00064916, 0.00106435, -0.00000115, 0.00000000],
+		[-6.27140537, -0.00105847, 0.00064893, 0.00106399, -0.00000115, 0.00000000],
+		[-6.27140718, -0.00105811, 0.00064871, 0.00106362, -0.00000115, 0.00000000],
+		[-6.27140898, -0.00105775, 0.00064849, 0.00106326, -0.00000115, 0.00000000],
+		[-6.27141078, -0.00105739, 0.00064827, 0.00106290, -0.00000115, 0.00000000],
+		[-6.27141257, -0.00105702, 0.00064805, 0.00106253, -0.00000115, 0.00000000],
+		[-6.27141436, -0.00105666, 0.00064783, 0.00106217, -0.00000115, 0.00000000],
+		[-6.27141614, -0.00105630, 0.00064761, 0.00106181, -0.00000115, 0.00000000],
+		[-6.27141792, -0.00105594, 0.00064739, 0.00106145, -0.00000115, 0.00000000],
+		[-6.27141970, -0.00105558, 0.00064716, 0.00106108, -0.00000115, 0.00000000],
+		[-6.27142147, -0.00105522, 0.00064694, 0.00106072, -0.00000115, 0.00000000],
+		[-6.27142324, -0.00105486, 0.00064672, 0.00106036, -0.00000115, 0.00000000],
+		[-6.27142500, -0.00105451, 0.00064650, 0.00106000, -0.00000115, 0.00000000],
+		[-6.27142676, -0.00105415, 0.00064628, 0.00105964, -0.00000115, 0.00000000],
+		[-6.27142851, -0.00105379, 0.00064606, 0.00105928, -0.00000115, 0.00000000],
+		[-6.27143026, -0.00105343, 0.00064584, 0.00105892, -0.00000115, 0.00000000],
+		[-6.27143201, -0.00105307, 0.00064562, 0.00105856, -0.00000115, 0.00000000],
+		[-6.27143375, -0.00105271, 0.00064540, 0.00105820, -0.00000115, 0.00000000],
+		[-6.27143549, -0.00105236, 0.00064518, 0.00105784, -0.00000115, 0.00000000],
+		[-6.27143722, -0.00105200, 0.00064496, 0.00105748, -0.00000115, 0.00000000],
+		[-6.27143895, -0.00105164, 0.00064475, 0.00105712, -0.00000115, 0.00000000],
+		[-6.27144068, -0.00105128, 0.00064453, 0.00105676, -0.00000115, 0.00000000],
+		[-6.27144240, -0.00105093, 0.00064431, 0.00105640, -0.00000115, 0.00000000],
+		[-6.27144412, -0.00105057, 0.00064409, 0.00105604, -0.00000115, 0.00000000],
+		[-6.27144583, -0.00105021, 0.00064387, 0.00105569, -0.00000115, 0.00000000],
+		[-6.27144754, -0.00104986, 0.00064365, 0.00105533, -0.00000115, 0.00000000],
+		[-6.27144924, -0.00104950, 0.00064343, 0.00105497, -0.00000115, 0.00000000],
+		[-6.27145094, -0.00104915, 0.00064322, 0.00105461, -0.00000115, 0.00000000],
+		[-6.27145264, -0.00104879, 0.00064300, 0.00105425, -0.00000115, 0.00000000],
+		[-6.27145433, -0.00104844, 0.00064278, 0.00105390, -0.00000115, 0.00000000],
+		[-6.27145602, -0.00104808, 0.00064256, 0.00105354, -0.00000115, 0.00000000],
+		[-6.27145771, -0.00104773, 0.00064234, 0.00105318, -0.00000115, 0.00000000],
+		[-6.27145939, -0.00104737, 0.00064213, 0.00105283, -0.00000115, 0.00000000],
+		[-6.27146107, -0.00104702, 0.00064191, 0.00105247, -0.00000115, 0.00000000],
+		[-6.27146274, -0.00104667, 0.00064169, 0.00105212, -0.00000115, 0.00000000],
+		[-6.27146441, -0.00104631, 0.00064148, 0.00105176, -0.00000115, 0.00000000],
+		[-6.27146607, -0.00104596, 0.00064126, 0.00105141, -0.00000115, 0.00000000],
+		[-6.27146774, -0.00104561, 0.00064104, 0.00105105, -0.00000115, 0.00000000],
+		[-6.27146939, -0.00104525, 0.00064083, 0.00105070, -0.00000115, 0.00000000],
+		[-6.27147105, -0.00104490, 0.00064061, 0.00105034, -0.00000115, 0.00000000],
+		[-6.27147270, -0.00104455, 0.00064039, 0.00104999, -0.00000115, 0.00000000],
+		[-6.27147434, -0.00104420, 0.00064018, 0.00104963, -0.00000115, 0.00000000],
+		[-6.27147599, -0.00104384, 0.00063996, 0.00104928, -0.00000115, 0.00000000],
+		[-6.27147762, -0.00104349, 0.00063975, 0.00104893, -0.00000115, 0.00000000],
+		[-6.27147926, -0.00104314, 0.00063953, 0.00104857, -0.00000115, 0.00000000],
+		[-6.27148089, -0.00104279, 0.00063931, 0.00104822, -0.00000115, 0.00000000],
+		[-6.27148252, -0.00104244, 0.00063910, 0.00104787, -0.00000115, 0.00000000],
+		[-6.27148414, -0.00104209, 0.00063888, 0.00104751, -0.00000115, 0.00000000],
+		[-6.27148576, -0.00104174, 0.00063867, 0.00104716, -0.00000115, 0.00000000],
+		[-6.27148738, -0.00104139, 0.00063845, 0.00104681, -0.00000115, 0.00000000],
+		[-6.27148899, -0.00104104, 0.00063824, 0.00104646, -0.00000115, 0.00000000],
+		[-6.27149060, -0.00104069, 0.00063802, 0.00104610, -0.00000115, 0.00000000],
+		[-6.27149220, -0.00104034, 0.00063781, 0.00104575, -0.00000115, 0.00000000],
+		[-6.27149380, -0.00103999, 0.00063760, 0.00104540, -0.00000115, 0.00000000],
+		[-6.27149540, -0.00103964, 0.00063738, 0.00104505, -0.00000115, 0.00000000],
+		[-6.27149699, -0.00103929, 0.00063717, 0.00104470, -0.00000115, 0.00000000],
+		[-6.27149859, -0.00103894, 0.00063695, 0.00104435, -0.00000115, 0.00000000],
+		[-6.27150017, -0.00103859, 0.00063674, 0.00104400, -0.00000115, 0.00000000],
+		[-6.27150175, -0.00103824, 0.00063653, 0.00104365, -0.00000115, 0.00000000],
+		[-6.27150333, -0.00103790, 0.00063631, 0.00104330, -0.00000115, 0.00000000],
+		[-6.27150491, -0.00103755, 0.00063610, 0.00104295, -0.00000115, 0.00000000],
+		[-6.27150648, -0.00103720, 0.00063589, 0.00104260, -0.00000115, 0.00000000],
+		[-6.27150805, -0.00103685, 0.00063567, 0.00104225, -0.00000115, 0.00000000],
+		[-6.27150962, -0.00103651, 0.00063546, 0.00104190, -0.00000115, 0.00000000],
+		[-6.27151118, -0.00103616, 0.00063525, 0.00104155, -0.00000115, 0.00000000],
+		[-6.27151274, -0.00103581, 0.00063503, 0.00104120, -0.00000115, 0.00000000],
+		[-6.27151429, -0.00103547, 0.00063482, 0.00104086, -0.00000115, 0.00000000],
+		[-6.27151584, -0.00103512, 0.00063461, 0.00104051, -0.00000115, 0.00000000],
+		[-6.27151739, -0.00103478, 0.00063440, 0.00104016, -0.00000115, 0.00000000],
+		[-6.27151893, -0.00103443, 0.00063419, 0.00103981, -0.00000115, 0.00000000],
+		[-6.27152048, -0.00103408, 0.00063397, 0.00103947, -0.00000115, 0.00000000],
+		[-6.27152201, -0.00103374, 0.00063376, 0.00103912, -0.00000115, 0.00000000],
+		[-6.27152355, -0.00103339, 0.00063355, 0.00103877, -0.00000115, 0.00000000],
+		[-6.27152508, -0.00103305, 0.00063334, 0.00103843, -0.00000115, 0.00000000],
+		[-6.27152660, -0.00103270, 0.00063313, 0.00103808, -0.00000115, 0.00000000],
+		[-6.27152813, -0.00103236, 0.00063292, 0.00103773, -0.00000115, 0.00000000],
+		[-6.27152965, -0.00103202, 0.00063271, 0.00103739, -0.00000115, 0.00000000],
+		[-6.27153117, -0.00103167, 0.00063249, 0.00103704, -0.00000115, 0.00000000],
+		[-6.27153268, -0.00103133, 0.00063228, 0.00103670, -0.00000115, 0.00000000],
+		[-6.27153419, -0.00103099, 0.00063207, 0.00103635, -0.00000115, 0.00000000],
+		[-6.27153570, -0.00103064, 0.00063186, 0.00103601, -0.00000115, 0.00000000],
+		[-6.27153720, -0.00103030, 0.00063165, 0.00103566, -0.00000115, 0.00000000],
+		[-6.27153870, -0.00102996, 0.00063144, 0.00103532, -0.00000115, 0.00000000],
+		[-6.27154020, -0.00102961, 0.00063123, 0.00103497, -0.00000115, 0.00000000],
+		[-6.27154169, -0.00102927, 0.00063102, 0.00103463, -0.00000115, 0.00000000],
+		[-6.27154318, -0.00102893, 0.00063081, 0.00103428, -0.00000115, 0.00000000],
+		[-6.27154467, -0.00102859, 0.00063060, 0.00103394, -0.00000115, 0.00000000],
+		[-6.27154615, -0.00102825, 0.00063039, 0.00103360, -0.00000115, 0.00000000],
+		[-6.27154763, -0.00102791, 0.00063018, 0.00103325, -0.00000115, 0.00000000],
+		[-6.27154911, -0.00102756, 0.00062997, 0.00103291, -0.00000115, 0.00000000],
+		[-6.27155059, -0.00102722, 0.00062976, 0.00103257, -0.00000115, 0.00000000],
+		[-6.27155206, -0.00102688, 0.00062956, 0.00103223, -0.00000115, 0.00000000],
+		[-6.27155352, -0.00102654, 0.00062935, 0.00103188, -0.00000115, 0.00000000],
+		[-6.27155499, -0.00102620, 0.00062914, 0.00103154, -0.00000115, 0.00000000],
+		[-6.27155645, -0.00102586, 0.00062893, 0.00103120, -0.00000115, 0.00000000],
+		[-6.27155791, -0.00102552, 0.00062872, 0.00103086, -0.00000115, 0.00000000],
+		[-6.27155936, -0.00102518, 0.00062851, 0.00103052, -0.00000115, 0.00000000],
+		[-6.27156082, -0.00102484, 0.00062830, 0.00103018, -0.00000115, 0.00000000],
+		[-6.27156226, -0.00102451, 0.00062810, 0.00102983, -0.00000115, 0.00000000],
+		[-6.27156371, -0.00102417, 0.00062789, 0.00102949, -0.00000115, 0.00000000],
+		[-6.27156515, -0.00102383, 0.00062768, 0.00102915, -0.00000115, 0.00000000],
+		[-6.27156659, -0.00102349, 0.00062747, 0.00102881, -0.00000115, 0.00000000],
+		[-6.27156803, -0.00102315, 0.00062727, 0.00102847, -0.00000115, 0.00000000],
+		[-6.27156946, -0.00102281, 0.00062706, 0.00102813, -0.00000115, 0.00000000],
+		[-6.27157089, -0.00102248, 0.00062685, 0.00102779, -0.00000115, 0.00000000],
+		[-6.27157232, -0.00102214, 0.00062664, 0.00102745, -0.00000115, 0.00000000],
+		[-6.27157374, -0.00102180, 0.00062644, 0.00102712, -0.00000115, 0.00000000],
+		[-6.27157517, -0.00102146, 0.00062623, 0.00102678, -0.00000115, 0.00000000],
+		[-6.27157658, -0.00102113, 0.00062602, 0.00102644, -0.00000115, 0.00000000],
+		[-6.27157800, -0.00102079, 0.00062582, 0.00102610, -0.00000115, 0.00000000],
+		[-6.27157941, -0.00102045, 0.00062561, 0.00102576, -0.00000115, 0.00000000],
+		[-6.27158082, -0.00102012, 0.00062540, 0.00102542, -0.00000115, 0.00000000],
+		[-6.27158223, -0.00101978, 0.00062520, 0.00102509, -0.00000115, 0.00000000],
+		[-6.27158363, -0.00101945, 0.00062499, 0.00102475, -0.00000115, 0.00000000],
+		[-6.27158503, -0.00101911, 0.00062479, 0.00102441, -0.00000115, 0.00000000],
+		[-6.27158643, -0.00101878, 0.00062458, 0.00102407, -0.00000115, 0.00000000],
+		[-6.27158782, -0.00101844, 0.00062438, 0.00102374, -0.00000115, 0.00000000],
+		[-6.27158921, -0.00101811, 0.00062417, 0.00102340, -0.00000115, 0.00000000],
+		[-6.27159060, -0.00101777, 0.00062396, 0.00102306, -0.00000115, 0.00000000],
+		[-6.27159199, -0.00101744, 0.00062376, 0.00102273, -0.00000115, 0.00000000],
+		[-6.27159337, -0.00101710, 0.00062355, 0.00102239, -0.00000115, 0.00000000],
+		[-6.27159475, -0.00101677, 0.00062335, 0.00102206, -0.00000115, 0.00000000],
+		[-6.27159613, -0.00101644, 0.00062314, 0.00102172, -0.00000115, 0.00000000],
+		[-6.27159750, -0.00101610, 0.00062294, 0.00102138, -0.00000115, 0.00000000],
+		[-6.27159887, -0.00101577, 0.00062274, 0.00102105, -0.00000115, 0.00000000],
+		[-6.27160024, -0.00101544, 0.00062253, 0.00102071, -0.00000115, 0.00000000],
+		[-6.27160160, -0.00101510, 0.00062233, 0.00102038, -0.00000115, 0.00000000],
+		[-6.27160297, -0.00101477, 0.00062212, 0.00102005, -0.00000115, 0.00000000],
+		[-6.27160433, -0.00101444, 0.00062192, 0.00101971, -0.00000115, 0.00000000],
+		[-6.27160568, -0.00101410, 0.00062171, 0.00101938, -0.00000115, 0.00000000],
+		[-6.27160704, -0.00101377, 0.00062151, 0.00101904, -0.00000115, 0.00000000],
+		[-6.27160839, -0.00101344, 0.00062131, 0.00101871, -0.00000115, 0.00000000],
+		[-6.27160974, -0.00101311, 0.00062110, 0.00101838, -0.00000115, 0.00000000],
+		[-6.27161108, -0.00101278, 0.00062090, 0.00101804, -0.00000115, 0.00000000],
+		[-6.27161243, -0.00101245, 0.00062070, 0.00101771, -0.00000115, 0.00000000],
+		[-6.27161377, -0.00101212, 0.00062049, 0.00101738, -0.00000115, 0.00000000],
+		[-6.27161511, -0.00101179, 0.00062029, 0.00101705, -0.00000115, 0.00000000],
+		[-6.27161644, -0.00101146, 0.00062009, 0.00101671, -0.00000115, 0.00000000],
+		[-6.27161777, -0.00101112, 0.00061989, 0.00101638, -0.00000115, 0.00000000],
+		[-6.27161910, -0.00101079, 0.00061968, 0.00101605, -0.00000115, 0.00000000],
+		[-6.27162043, -0.00101046, 0.00061948, 0.00101572, -0.00000115, 0.00000000],
+		[-6.27162175, -0.00101014, 0.00061928, 0.00101539, -0.00000115, 0.00000000],
+		[-6.27162307, -0.00100981, 0.00061908, 0.00101505, -0.00000115, 0.00000000],
+		[-6.27162439, -0.00100948, 0.00061887, 0.00101472, -0.00000115, 0.00000000],
+		[-6.27162571, -0.00100915, 0.00061867, 0.00101439, -0.00000115, 0.00000000],
+		[-6.27162702, -0.00100882, 0.00061847, 0.00101406, -0.00000115, 0.00000000],
+		[-6.27162833, -0.00100849, 0.00061827, 0.00101373, -0.00000115, 0.00000000],
+		[-6.27162964, -0.00100816, 0.00061807, 0.00101340, -0.00000115, 0.00000000],
+		[-6.27163095, -0.00100783, 0.00061787, 0.00101307, -0.00000115, 0.00000000],
+		[-6.27163225, -0.00100751, 0.00061767, 0.00101274, -0.00000115, 0.00000000],
+		[-6.27163355, -0.00100718, 0.00061746, 0.00101241, -0.00000115, 0.00000000],
+		[-6.27163485, -0.00100685, 0.00061726, 0.00101208, -0.00000115, 0.00000000],
+		[-6.27163614, -0.00100652, 0.00061706, 0.00101175, -0.00000115, 0.00000000],
+		[-6.27163743, -0.00100620, 0.00061686, 0.00101143, -0.00000115, 0.00000000],
+		[-6.27163872, -0.00100587, 0.00061666, 0.00101110, -0.00000115, 0.00000000],
+		[-6.27164001, -0.00100554, 0.00061646, 0.00101077, -0.00000115, 0.00000000],
+		[-6.27164130, -0.00100522, 0.00061626, 0.00101044, -0.00000115, 0.00000000],
+		[-6.27164258, -0.00100489, 0.00061606, 0.00101011, -0.00000115, 0.00000000],
+		[-6.27164386, -0.00100456, 0.00061586, 0.00100978, -0.00000115, 0.00000000],
+		[-6.27164513, -0.00100424, 0.00061566, 0.00100946, -0.00000115, 0.00000000],
+		[-6.27164641, -0.00100391, 0.00061546, 0.00100913, -0.00000114, 0.00000000],
+		[-6.27164768, -0.00100359, 0.00061526, 0.00100880, -0.00000114, 0.00000000],
+		[-6.27164895, -0.00100326, 0.00061506, 0.00100848, -0.00000114, 0.00000000],
+		[-6.27165022, -0.00100294, 0.00061486, 0.00100815, -0.00000114, 0.00000000],
+		[-6.27165148, -0.00100261, 0.00061466, 0.00100782, -0.00000114, 0.00000000],
+		[-6.27165274, -0.00100229, 0.00061446, 0.00100750, -0.00000114, 0.00000000],
+		[-6.27165400, -0.00100196, 0.00061427, 0.00100717, -0.00000114, 0.00000000],
+		[-6.27165526, -0.00100164, 0.00061407, 0.00100684, -0.00000114, 0.00000000],
+		[-6.27165651, -0.00100132, 0.00061387, 0.00100652, -0.00000114, 0.00000000],
+		[-6.27165777, -0.00100099, 0.00061367, 0.00100619, -0.00000114, 0.00000000],
+		[-6.27165902, -0.00100067, 0.00061347, 0.00100587, -0.00000114, 0.00000000],
+		[-6.27166026, -0.00100035, 0.00061327, 0.00100554, -0.00000114, 0.00000000],
+		[-6.27166151, -0.00100002, 0.00061307, 0.00100522, -0.00000114, 0.00000000],
+		[-6.27166275, -0.00099970, 0.00061288, 0.00100489, -0.00000114, 0.00000000],
+		[-6.27166399, -0.00099938, 0.00061268, 0.00100457, -0.00000114, 0.00000000],
+		[-6.27166523, -0.00099905, 0.00061248, 0.00100424, -0.00000114, 0.00000000],
+		[-6.27166646, -0.00099873, 0.00061228, 0.00100392, -0.00000114, 0.00000000],
+		[-6.27166770, -0.00099841, 0.00061208, 0.00100360, -0.00000114, 0.00000000],
+		[-6.27166893, -0.00099809, 0.00061189, 0.00100327, -0.00000114, 0.00000000],
+		[-6.27167015, -0.00099777, 0.00061169, 0.00100295, -0.00000114, 0.00000000],
+		[-6.27167138, -0.00099745, 0.00061149, 0.00100263, -0.00000114, 0.00000000],
+		[-6.27167260, -0.00099712, 0.00061130, 0.00100230, -0.00000114, 0.00000000],
+		[-6.27167382, -0.00099680, 0.00061110, 0.00100198, -0.00000114, 0.00000000],
+		[-6.27167504, -0.00099648, 0.00061090, 0.00100166, -0.00000114, 0.00000000],
+		[-6.27167626, -0.00099616, 0.00061070, 0.00100134, -0.00000114, 0.00000000],
+		[-6.27167747, -0.00099584, 0.00061051, 0.00100101, -0.00000114, 0.00000000],
+		[-6.27167868, -0.00099552, 0.00061031, 0.00100069, -0.00000114, 0.00000000],
+		[-6.27167989, -0.00099520, 0.00061012, 0.00100037, -0.00000114, 0.00000000],
+		[-6.27168110, -0.00099488, 0.00060992, 0.00100005, -0.00000114, 0.00000000],
+		[-6.27168231, -0.00099456, 0.00060972, 0.00099973, -0.00000114, 0.00000000],
+		[-6.27168351, -0.00099424, 0.00060953, 0.00099941, -0.00000114, 0.00000000],
+		[-6.27168471, -0.00099392, 0.00060933, 0.00099909, -0.00000114, 0.00000000],
+		[-6.27168591, -0.00099360, 0.00060914, 0.00099877, -0.00000114, 0.00000000],
+		[-6.27168710, -0.00099329, 0.00060894, 0.00099844, -0.00000114, 0.00000000],
+		[-6.27168829, -0.00099297, 0.00060874, 0.00099812, -0.00000114, 0.00000000],
+		[-6.27168949, -0.00099265, 0.00060855, 0.00099780, -0.00000114, 0.00000000],
+		[-6.27169067, -0.00099233, 0.00060835, 0.00099748, -0.00000114, 0.00000000],
+		[-6.27169186, -0.00099201, 0.00060816, 0.00099716, -0.00000114, 0.00000000],
+		[-6.27169305, -0.00099170, 0.00060796, 0.00099685, -0.00000114, 0.00000000],
+		[-6.27169423, -0.00099138, 0.00060777, 0.00099653, -0.00000114, 0.00000000],
+		[-6.27169541, -0.00099106, 0.00060757, 0.00099621, -0.00000114, 0.00000000],
+		[-6.27169659, -0.00099074, 0.00060738, 0.00099589, -0.00000114, 0.00000000],
+		[-6.27169776, -0.00099043, 0.00060719, 0.00099557, -0.00000114, 0.00000000],
+		[-6.27169893, -0.00099011, 0.00060699, 0.00099525, -0.00000114, 0.00000000],
+		[-6.27170011, -0.00098979, 0.00060680, 0.00099493, -0.00000114, 0.00000000],
+		[-6.27170128, -0.00098948, 0.00060660, 0.00099461, -0.00000114, 0.00000000],
+		[-6.27170244, -0.00098916, 0.00060641, 0.00099430, -0.00000114, 0.00000000],
+		[-6.27170361, -0.00098884, 0.00060622, 0.00099398, -0.00000114, 0.00000000],
+		[-6.27170477, -0.00098853, 0.00060602, 0.00099366, -0.00000114, 0.00000000],
+		[-6.27170593, -0.00098821, 0.00060583, 0.00099334, -0.00000114, 0.00000000],
+		[-6.27170709, -0.00098790, 0.00060563, 0.00099303, -0.00000114, 0.00000000],
+		[-6.27170825, -0.00098758, 0.00060544, 0.00099271, -0.00000114, 0.00000000],
+		[-6.27170940, -0.00098727, 0.00060525, 0.00099239, -0.00000114, 0.00000000],
+		[-6.27171055, -0.00098695, 0.00060505, 0.00099208, -0.00000114, 0.00000000],
+		[-6.27171170, -0.00098664, 0.00060486, 0.00099176, -0.00000114, 0.00000000],
+		[-6.27171285, -0.00098633, 0.00060467, 0.00099145, -0.00000114, 0.00000000],
+		[-6.27171399, -0.00098601, 0.00060448, 0.00099113, -0.00000114, 0.00000000],
+		[-6.27171514, -0.00098570, 0.00060428, 0.00099081, -0.00000114, 0.00000000],
+		[-6.27171628, -0.00098538, 0.00060409, 0.00099050, -0.00000114, 0.00000000],
+		[-6.27171742, -0.00098507, 0.00060390, 0.00099018, -0.00000114, 0.00000000],
+		[-6.27171856, -0.00098476, 0.00060371, 0.00098987, -0.00000114, 0.00000000],
+		[-6.27171969, -0.00098444, 0.00060351, 0.00098955, -0.00000114, 0.00000000],
+		[-6.27172082, -0.00098413, 0.00060332, 0.00098924, -0.00000114, 0.00000000],
+		[-6.27172196, -0.00098382, 0.00060313, 0.00098893, -0.00000114, 0.00000000],
+		[-6.27172309, -0.00098351, 0.00060294, 0.00098861, -0.00000114, 0.00000000],
+		[-6.27172421, -0.00098319, 0.00060275, 0.00098830, -0.00000114, 0.00000000],
+		[-6.27172534, -0.00098288, 0.00060256, 0.00098798, -0.00000114, 0.00000000],
+		[-6.27172646, -0.00098257, 0.00060236, 0.00098767, -0.00000114, 0.00000000],
+		[-6.27172758, -0.00098226, 0.00060217, 0.00098736, -0.00000114, 0.00000000],
+		[-6.27172870, -0.00098195, 0.00060198, 0.00098704, -0.00000114, 0.00000000],
+		[-6.27172982, -0.00098163, 0.00060179, 0.00098673, -0.00000114, 0.00000000],
+		[-6.27173093, -0.00098132, 0.00060160, 0.00098642, -0.00000114, 0.00000000],
+		[-6.27173205, -0.00098101, 0.00060141, 0.00098610, -0.00000114, 0.00000000],
+		[-6.27173316, -0.00098070, 0.00060122, 0.00098579, -0.00000114, 0.00000000],
+		[-6.27173427, -0.00098039, 0.00060103, 0.00098548, -0.00000114, 0.00000000],
+		[-6.27173537, -0.00098008, 0.00060084, 0.00098517, -0.00000114, 0.00000000],
+		[-6.27173648, -0.00097977, 0.00060065, 0.00098486, -0.00000114, 0.00000000],
+		[-6.27173758, -0.00097946, 0.00060046, 0.00098454, -0.00000114, 0.00000000],
+		[-6.27173868, -0.00097915, 0.00060027, 0.00098423, -0.00000114, 0.00000000],
+		[-6.27173978, -0.00097884, 0.00060008, 0.00098392, -0.00000114, 0.00000000],
+		[-6.27174088, -0.00097853, 0.00059989, 0.00098361, -0.00000114, 0.00000000],
+		[-6.27174198, -0.00097822, 0.00059970, 0.00098330, -0.00000114, 0.00000000],
+		[-6.27174307, -0.00097791, 0.00059951, 0.00098299, -0.00000114, 0.00000000],
+		[-6.27174416, -0.00097761, 0.00059932, 0.00098268, -0.00000114, 0.00000000],
+		[-6.27174525, -0.00097730, 0.00059913, 0.00098237, -0.00000114, 0.00000000],
+		[-6.27174634, -0.00097699, 0.00059894, 0.00098206, -0.00000114, 0.00000000],
+		[-6.27174743, -0.00097668, 0.00059875, 0.00098175, -0.00000114, 0.00000000],
+		[-6.27174851, -0.00097637, 0.00059856, 0.00098144, -0.00000114, 0.00000000],
+		[-6.27174959, -0.00097606, 0.00059837, 0.00098113, -0.00000114, 0.00000000],
+		[-6.27175067, -0.00097576, 0.00059818, 0.00098082, -0.00000114, 0.00000000],
+		[-6.27175175, -0.00097545, 0.00059800, 0.00098051, -0.00000114, 0.00000000],
+		[-6.27175283, -0.00097514, 0.00059781, 0.00098020, -0.00000114, 0.00000000],
+		[-6.27175390, -0.00097484, 0.00059762, 0.00097989, -0.00000114, 0.00000000],
+		[-6.27175497, -0.00097453, 0.00059743, 0.00097958, -0.00000114, 0.00000000],
+		[-6.27175605, -0.00097422, 0.00059724, 0.00097928, -0.00000114, 0.00000000],
+		[-6.27175712, -0.00097392, 0.00059705, 0.00097897, -0.00000114, 0.00000000],
+		[-6.27175818, -0.00097361, 0.00059687, 0.00097866, -0.00000114, 0.00000000],
+		[-6.27175925, -0.00097330, 0.00059668, 0.00097835, -0.00000114, 0.00000000],
+		[-6.27176031, -0.00097300, 0.00059649, 0.00097805, -0.00000114, 0.00000000],
+		[-6.27176137, -0.00097269, 0.00059630, 0.00097774, -0.00000114, 0.00000000],
+		[-6.27176243, -0.00097239, 0.00059612, 0.00097743, -0.00000114, 0.00000000],
+		[-6.27176349, -0.00097208, 0.00059593, 0.00097712, -0.00000114, 0.00000000],
+		[-6.27176455, -0.00097178, 0.00059574, 0.00097682, -0.00000114, 0.00000000],
+		[-6.27176560, -0.00097147, 0.00059555, 0.00097651, -0.00000114, 0.00000000],
+		[-6.27176666, -0.00097117, 0.00059537, 0.00097620, -0.00000114, 0.00000000],
+		[-6.27176771, -0.00097086, 0.00059518, 0.00097590, -0.00000114, 0.00000000],
+		[-6.27176876, -0.00097056, 0.00059499, 0.00097559, -0.00000114, 0.00000000],
+		[-6.27176980, -0.00097025, 0.00059481, 0.00097529, -0.00000114, 0.00000000],
+		[-6.27177085, -0.00096995, 0.00059462, 0.00097498, -0.00000114, 0.00000000],
+		[-6.27177189, -0.00096965, 0.00059443, 0.00097468, -0.00000114, 0.00000000],
+		[-6.27177294, -0.00096934, 0.00059425, 0.00097437, -0.00000114, 0.00000000],
+		[-6.27177398, -0.00096904, 0.00059406, 0.00097407, -0.00000114, 0.00000000],
+		[-6.27177502, -0.00096874, 0.00059388, 0.00097376, -0.00000114, 0.00000000],
+		[-6.27177605, -0.00096843, 0.00059369, 0.00097346, -0.00000114, 0.00000000],
+		[-6.27177709, -0.00096813, 0.00059350, 0.00097315, -0.00000114, 0.00000000],
+		[-6.27177812, -0.00096783, 0.00059332, 0.00097285, -0.00000114, 0.00000000],
+		[-6.27177915, -0.00096752, 0.00059313, 0.00097254, -0.00000114, 0.00000000],
+		[-6.27178018, -0.00096722, 0.00059295, 0.00097224, -0.00000114, 0.00000000],
+		[-6.27178121, -0.00096692, 0.00059276, 0.00097194, -0.00000114, 0.00000000],
+		[-6.27178224, -0.00096662, 0.00059258, 0.00097163, -0.00000114, 0.00000000],
+		[-6.27178326, -0.00096632, 0.00059239, 0.00097133, -0.00000114, 0.00000000],
+		[-6.27178429, -0.00096602, 0.00059221, 0.00097103, -0.00000114, 0.00000000],
+		[-6.27178531, -0.00096571, 0.00059202, 0.00097072, -0.00000114, 0.00000000],
+		[-6.27178633, -0.00096541, 0.00059184, 0.00097042, -0.00000114, 0.00000000],
+		[-6.27178735, -0.00096511, 0.00059165, 0.00097012, -0.00000114, 0.00000000],
+		[-6.27178836, -0.00096481, 0.00059147, 0.00096981, -0.00000114, 0.00000000],
+		[-6.27178938, -0.00096451, 0.00059128, 0.00096951, -0.00000114, 0.00000000],
+		[-6.27179039, -0.00096421, 0.00059110, 0.00096921, -0.00000114, 0.00000000],
+		[-6.27179140, -0.00096391, 0.00059091, 0.00096891, -0.00000114, 0.00000000],
+		[-6.27179242, -0.00096361, 0.00059073, 0.00096861, -0.00000114, 0.00000000],
+		[-6.27179342, -0.00096331, 0.00059055, 0.00096831, -0.00000114, 0.00000000],
+		[-6.27179443, -0.00096301, 0.00059036, 0.00096800, -0.00000114, 0.00000000],
+		[-6.27179544, -0.00096271, 0.00059018, 0.00096770, -0.00000114, 0.00000000],
+		[-6.27179644, -0.00096241, 0.00058999, 0.00096740, -0.00000114, 0.00000000],
+		[-6.27179744, -0.00096211, 0.00058981, 0.00096710, -0.00000114, 0.00000000],
+		[-6.27179844, -0.00096181, 0.00058963, 0.00096680, -0.00000114, 0.00000000],
+		[-6.27179944, -0.00096152, 0.00058944, 0.00096650, -0.00000114, 0.00000000],
+		[-6.27180044, -0.00096122, 0.00058926, 0.00096620, -0.00000114, 0.00000000],
+		[-6.27180143, -0.00096092, 0.00058908, 0.00096590, -0.00000114, 0.00000000],
+		[-6.27180243, -0.00096062, 0.00058890, 0.00096560, -0.00000114, 0.00000000],
+		[-6.27180342, -0.00096032, 0.00058871, 0.00096530, -0.00000114, 0.00000000],
+		[-6.27180441, -0.00096002, 0.00058853, 0.00096500, -0.00000114, 0.00000000],
+		[-6.27180540, -0.00095973, 0.00058835, 0.00096470, -0.00000114, 0.00000000],
+		[-6.27180639, -0.00095943, 0.00058816, 0.00096440, -0.00000114, 0.00000000],
+		[-6.27180737, -0.00095913, 0.00058798, 0.00096410, -0.00000114, 0.00000000],
+		[-6.27180836, -0.00095884, 0.00058780, 0.00096381, -0.00000114, 0.00000000],
+		[-6.27180934, -0.00095854, 0.00058762, 0.00096351, -0.00000114, 0.00000000],
+		[-6.27181032, -0.00095824, 0.00058744, 0.00096321, -0.00000114, 0.00000000],
+		[-6.27181130, -0.00095795, 0.00058725, 0.00096291, -0.00000114, 0.00000000],
+		[-6.27181228, -0.00095765, 0.00058707, 0.00096261, -0.00000114, 0.00000000],
+		[-6.27181325, -0.00095735, 0.00058689, 0.00096232, -0.00000114, 0.00000000],
+		[-6.27181423, -0.00095706, 0.00058671, 0.00096202, -0.00000114, 0.00000000],
+		[-6.27181520, -0.00095676, 0.00058653, 0.00096172, -0.00000114, 0.00000000],
+		[-6.27181618, -0.00095647, 0.00058635, 0.00096142, -0.00000114, 0.00000000],
+		[-6.27181715, -0.00095617, 0.00058616, 0.00096113, -0.00000114, 0.00000000],
+		[-6.27181811, -0.00095588, 0.00058598, 0.00096083, -0.00000114, 0.00000000],
+		[-6.27181908, -0.00095558, 0.00058580, 0.00096053, -0.00000114, 0.00000000],
+		[-6.27182005, -0.00095529, 0.00058562, 0.00096024, -0.00000114, 0.00000000],
+		[-6.27182101, -0.00095499, 0.00058544, 0.00095994, -0.00000114, 0.00000000],
+		[-6.27182198, -0.00095470, 0.00058526, 0.00095964, -0.00000114, 0.00000000],
+		[-6.27182294, -0.00095440, 0.00058508, 0.00095935, -0.00000114, 0.00000000],
+		[-6.27182390, -0.00095411, 0.00058490, 0.00095905, -0.00000114, 0.00000000],
+		[-6.27182486, -0.00095381, 0.00058472, 0.00095876, -0.00000114, 0.00000000],
+		[-6.27182581, -0.00095352, 0.00058454, 0.00095846, -0.00000114, 0.00000000],
+		[-6.27182677, -0.00095323, 0.00058436, 0.00095817, -0.00000114, 0.00000000],
+		[-6.27182772, -0.00095293, 0.00058418, 0.00095787, -0.00000114, 0.00000000],
+		[-6.27182867, -0.00095264, 0.00058400, 0.00095758, -0.00000114, 0.00000000],
+		[-6.27182963, -0.00095235, 0.00058382, 0.00095728, -0.00000114, 0.00000000],
+		[-6.27183058, -0.00095205, 0.00058364, 0.00095699, -0.00000114, 0.00000000],
+		[-6.27183152, -0.00095176, 0.00058346, 0.00095669, -0.00000114, 0.00000000],
+		[-6.27183247, -0.00095147, 0.00058328, 0.00095640, -0.00000114, 0.00000000],
+		[-6.27183342, -0.00095118, 0.00058310, 0.00095611, -0.00000114, 0.00000000],
+		[-6.27183436, -0.00095088, 0.00058292, 0.00095581, -0.00000114, 0.00000000],
+		[-6.27183530, -0.00095059, 0.00058274, 0.00095552, -0.00000114, 0.00000000],
+		[-6.27183624, -0.00095030, 0.00058256, 0.00095523, -0.00000114, 0.00000000],
+		[-6.27183718, -0.00095001, 0.00058238, 0.00095493, -0.00000114, 0.00000000],
+		[-6.27183812, -0.00094972, 0.00058221, 0.00095464, -0.00000114, 0.00000000],
+		[-6.27183906, -0.00094943, 0.00058203, 0.00095435, -0.00000114, 0.00000000],
+		[-6.27183999, -0.00094914, 0.00058185, 0.00095405, -0.00000114, 0.00000000],
+		[-6.27184093, -0.00094884, 0.00058167, 0.00095376, -0.00000114, 0.00000000],
+		[-6.27184186, -0.00094855, 0.00058149, 0.00095347, -0.00000114, 0.00000000],
+		[-6.27184279, -0.00094826, 0.00058131, 0.00095318, -0.00000114, 0.00000000],
+		[-6.27184372, -0.00094797, 0.00058113, 0.00095288, -0.00000114, 0.00000000],
+		[-6.27184465, -0.00094768, 0.00058096, 0.00095259, -0.00000114, 0.00000000],
+		[-6.27184558, -0.00094739, 0.00058078, 0.00095230, -0.00000114, 0.00000000],
+		[-6.27184650, -0.00094710, 0.00058060, 0.00095201, -0.00000114, 0.00000000],
+		[-6.27184743, -0.00094681, 0.00058042, 0.00095172, -0.00000114, 0.00000000],
+		[-6.27184835, -0.00094652, 0.00058025, 0.00095143, -0.00000114, 0.00000000],
+		[-6.27184927, -0.00094623, 0.00058007, 0.00095114, -0.00000114, 0.00000000],
+		[-6.27185019, -0.00094595, 0.00057989, 0.00095085, -0.00000114, 0.00000000],
+		[-6.27185111, -0.00094566, 0.00057971, 0.00095056, -0.00000114, 0.00000000],
+		[-6.27185203, -0.00094537, 0.00057954, 0.00095027, -0.00000114, 0.00000000],
+		[-6.27185294, -0.00094508, 0.00057936, 0.00094998, -0.00000114, 0.00000000],
+		[-6.27185386, -0.00094479, 0.00057918, 0.00094969, -0.00000114, 0.00000000],
+		[-6.27185477, -0.00094450, 0.00057901, 0.00094940, -0.00000114, 0.00000000],
+		[-6.27185568, -0.00094421, 0.00057883, 0.00094911, -0.00000114, 0.00000000],
+		[-6.27185659, -0.00094393, 0.00057865, 0.00094882, -0.00000114, 0.00000000],
+		[-6.27185750, -0.00094364, 0.00057848, 0.00094853, -0.00000114, 0.00000000],
+		[-6.27185841, -0.00094335, 0.00057830, 0.00094824, -0.00000114, 0.00000000],
+		[-6.27185932, -0.00094306, 0.00057812, 0.00094795, -0.00000114, 0.00000000],
+		[-6.27186022, -0.00094278, 0.00057795, 0.00094766, -0.00000114, 0.00000000],
+		[-6.27186113, -0.00094249, 0.00057777, 0.00094737, -0.00000114, 0.00000000],
+		[-6.27186203, -0.00094220, 0.00057759, 0.00094708, -0.00000114, 0.00000000],
+		[-6.27186293, -0.00094192, 0.00057742, 0.00094680, -0.00000114, 0.00000000],
+		[-6.27186383, -0.00094163, 0.00057724, 0.00094651, -0.00000114, 0.00000000],
+		[-6.27186473, -0.00094134, 0.00057707, 0.00094622, -0.00000114, 0.00000000],
+		[-6.27186563, -0.00094106, 0.00057689, 0.00094593, -0.00000114, 0.00000000],
+		[-6.27186652, -0.00094077, 0.00057672, 0.00094564, -0.00000114, 0.00000000],
+		[-6.27186742, -0.00094049, 0.00057654, 0.00094536, -0.00000114, 0.00000000],
+		[-6.27186831, -0.00094020, 0.00057636, 0.00094507, -0.00000114, 0.00000000],
+		[-6.27186920, -0.00093991, 0.00057619, 0.00094478, -0.00000114, 0.00000000],
+		[-6.27187010, -0.00093963, 0.00057601, 0.00094450, -0.00000114, 0.00000000],
+		[-6.27187098, -0.00093934, 0.00057584, 0.00094421, -0.00000114, 0.00000000],
+		[-6.27187187, -0.00093906, 0.00057567, 0.00094392, -0.00000114, 0.00000000],
+		[-6.27187276, -0.00093877, 0.00057549, 0.00094364, -0.00000114, 0.00000000],
+		[-6.27187365, -0.00093849, 0.00057532, 0.00094335, -0.00000114, 0.00000000],
+		[-6.27187453, -0.00093821, 0.00057514, 0.00094306, -0.00000114, 0.00000000],
+		[-6.27187541, -0.00093792, 0.00057497, 0.00094278, -0.00000114, 0.00000000],
+		[-6.27187630, -0.00093764, 0.00057479, 0.00094249, -0.00000114, 0.00000000],
+		[-6.27187718, -0.00093735, 0.00057462, 0.00094221, -0.00000114, 0.00000000],
+		[-6.27187806, -0.00093707, 0.00057444, 0.00094192, -0.00000114, 0.00000000],
+		[-6.27187894, -0.00093679, 0.00057427, 0.00094164, -0.00000114, 0.00000000],
+		[-6.27187981, -0.00093650, 0.00057410, 0.00094135, -0.00000114, 0.00000000],
+		[-6.27188069, -0.00093622, 0.00057392, 0.00094107, -0.00000114, 0.00000000],
+		[-6.27188156, -0.00093594, 0.00057375, 0.00094078, -0.00000114, 0.00000000],
+		[-6.27188244, -0.00093565, 0.00057358, 0.00094050, -0.00000114, 0.00000000],
+		[-6.27188331, -0.00093537, 0.00057340, 0.00094021, -0.00000114, 0.00000000],
+		[-6.27188418, -0.00093509, 0.00057323, 0.00093993, -0.00000114, 0.00000000],
+		[-6.27188505, -0.00093481, 0.00057306, 0.00093965, -0.00000114, 0.00000000],
+		[-6.27188592, -0.00093452, 0.00057288, 0.00093936, -0.00000114, 0.00000000],
+		[-6.27188679, -0.00093424, 0.00057271, 0.00093908, -0.00000114, 0.00000000],
+		[-6.27188765, -0.00093396, 0.00057254, 0.00093880, -0.00000114, 0.00000000],
+		[-6.27188852, -0.00093368, 0.00057236, 0.00093851, -0.00000114, 0.00000000],
+		[-6.27188938, -0.00093340, 0.00057219, 0.00093823, -0.00000114, 0.00000000],
+		[-6.27189025, -0.00093312, 0.00057202, 0.00093795, -0.00000114, 0.00000000],
+		[-6.27189111, -0.00093283, 0.00057185, 0.00093766, -0.00000114, 0.00000000],
+		[-6.27189197, -0.00093255, 0.00057167, 0.00093738, -0.00000114, 0.00000000],
+		[-6.27189283, -0.00093227, 0.00057150, 0.00093710, -0.00000114, 0.00000000],
+		[-6.27189369, -0.00093199, 0.00057133, 0.00093682, -0.00000114, 0.00000000],
+		[-6.27189454, -0.00093171, 0.00057116, 0.00093654, -0.00000114, 0.00000000],
+		[-6.27189540, -0.00093143, 0.00057098, 0.00093625, -0.00000114, 0.00000000],
+		[-6.27189625, -0.00093115, 0.00057081, 0.00093597, -0.00000114, 0.00000000],
+		[-6.27189711, -0.00093087, 0.00057064, 0.00093569, -0.00000114, 0.00000000],
+		[-6.27189796, -0.00093059, 0.00057047, 0.00093541, -0.00000114, 0.00000000],
+		[-6.27189881, -0.00093031, 0.00057030, 0.00093513, -0.00000114, 0.00000000],
+		[-6.27189966, -0.00093003, 0.00057013, 0.00093485, -0.00000114, 0.00000000],
+		[-6.27190051, -0.00092975, 0.00056995, 0.00093457, -0.00000114, 0.00000000],
+		[-6.27190136, -0.00092947, 0.00056978, 0.00093429, -0.00000114, 0.00000000],
+		[-6.27190220, -0.00092919, 0.00056961, 0.00093401, -0.00000114, 0.00000000],
+		[-6.27190305, -0.00092892, 0.00056944, 0.00093372, -0.00000114, 0.00000000],
+		[-6.27190389, -0.00092864, 0.00056927, 0.00093344, -0.00000114, 0.00000000],
+		[-6.27190474, -0.00092836, 0.00056910, 0.00093316, -0.00000114, 0.00000000],
+		[-6.27190558, -0.00092808, 0.00056893, 0.00093288, -0.00000114, 0.00000000],
+		[-6.27190642, -0.00092780, 0.00056876, 0.00093261, -0.00000114, 0.00000000],
+		[-6.27190726, -0.00092752, 0.00056859, 0.00093233, -0.00000114, 0.00000000],
+		[-6.27190810, -0.00092725, 0.00056842, 0.00093205, -0.00000114, 0.00000000],
+		[-6.27190893, -0.00092697, 0.00056825, 0.00093177, -0.00000114, 0.00000000],
+		[-6.27190977, -0.00092669, 0.00056808, 0.00093149, -0.00000114, 0.00000000],
+		[-6.27191061, -0.00092641, 0.00056791, 0.00093121, -0.00000114, 0.00000000],
+		[-6.27191144, -0.00092614, 0.00056774, 0.00093093, -0.00000114, 0.00000000],
+		[-6.27191227, -0.00092586, 0.00056757, 0.00093065, -0.00000114, 0.00000000],
+		[-6.27191311, -0.00092558, 0.00056740, 0.00093037, -0.00000114, 0.00000000],
+		[-6.27191394, -0.00092531, 0.00056723, 0.00093010, -0.00000114, 0.00000000],
+		[-6.27191477, -0.00092503, 0.00056706, 0.00092982, -0.00000114, 0.00000000],
+		[-6.27191559, -0.00092475, 0.00056689, 0.00092954, -0.00000114, 0.00000000],
+		[-6.27191642, -0.00092448, 0.00056672, 0.00092926, -0.00000114, 0.00000000],
+		[-6.27191725, -0.00092420, 0.00056655, 0.00092899, -0.00000114, 0.00000000],
+		[-6.27191807, -0.00092393, 0.00056638, 0.00092871, -0.00000114, 0.00000000],
+		[-6.27191890, -0.00092365, 0.00056621, 0.00092843, -0.00000114, 0.00000000],
+		[-6.27191972, -0.00092338, 0.00056604, 0.00092815, -0.00000114, 0.00000000],
+		[-6.27192054, -0.00092310, 0.00056587, 0.00092788, -0.00000114, 0.00000000],
+		[-6.27192136, -0.00092282, 0.00056570, 0.00092760, -0.00000114, 0.00000000],
+		[-6.27192218, -0.00092255, 0.00056553, 0.00092732, -0.00000114, 0.00000000],
+		[-6.27192300, -0.00092227, 0.00056537, 0.00092705, -0.00000114, 0.00000000],
+		[-6.27192382, -0.00092200, 0.00056520, 0.00092677, -0.00000114, 0.00000000],
+		[-6.27192464, -0.00092173, 0.00056503, 0.00092650, -0.00000114, 0.00000000],
+		[-6.27192545, -0.00092145, 0.00056486, 0.00092622, -0.00000114, 0.00000000],
+		[-6.27192627, -0.00092118, 0.00056469, 0.00092594, -0.00000114, 0.00000000],
+		[-6.27192708, -0.00092090, 0.00056452, 0.00092567, -0.00000114, 0.00000000],
+		[-6.27192790, -0.00092063, 0.00056436, 0.00092539, -0.00000114, 0.00000000],
+		[-6.27192871, -0.00092036, 0.00056419, 0.00092512, -0.00000114, 0.00000000],
+		[-6.27192952, -0.00092008, 0.00056402, 0.00092484, -0.00000114, 0.00000000],
+		[-6.27193033, -0.00091981, 0.00056385, 0.00092457, -0.00000114, 0.00000000],
+		[-6.27193114, -0.00091954, 0.00056368, 0.00092429, -0.00000114, 0.00000000],
+		[-6.27193194, -0.00091926, 0.00056352, 0.00092402, -0.00000114, 0.00000000],
+		[-6.27193275, -0.00091899, 0.00056335, 0.00092374, -0.00000114, 0.00000000],
+		[-6.27193356, -0.00091872, 0.00056318, 0.00092347, -0.00000114, 0.00000000],
+		[-6.27193436, -0.00091844, 0.00056301, 0.00092320, -0.00000114, 0.00000000],
+		[-6.27193516, -0.00091817, 0.00056285, 0.00092292, -0.00000114, 0.00000000],
+		[-6.27193597, -0.00091790, 0.00056268, 0.00092265, -0.00000114, 0.00000000],
+		[-6.27193677, -0.00091763, 0.00056251, 0.00092238, -0.00000114, 0.00000000],
+		[-6.27193757, -0.00091736, 0.00056235, 0.00092210, -0.00000114, 0.00000000],
+		[-6.27193837, -0.00091708, 0.00056218, 0.00092183, -0.00000114, 0.00000000],
+		[-6.27193917, -0.00091681, 0.00056201, 0.00092156, -0.00000114, 0.00000000],
+		[-6.27193996, -0.00091654, 0.00056185, 0.00092128, -0.00000114, 0.00000000],
+		[-6.27194076, -0.00091627, 0.00056168, 0.00092101, -0.00000114, 0.00000000],
+		[-6.27194155, -0.00091600, 0.00056151, 0.00092074, -0.00000114, 0.00000000],
+		[-6.27194235, -0.00091573, 0.00056135, 0.00092046, -0.00000114, 0.00000000],
+		[-6.27194314, -0.00091546, 0.00056118, 0.00092019, -0.00000114, 0.00000000],
+		[-6.27194394, -0.00091519, 0.00056102, 0.00091992, -0.00000114, 0.00000000],
+		[-6.27194473, -0.00091492, 0.00056085, 0.00091965, -0.00000114, 0.00000000],
+		[-6.27194552, -0.00091465, 0.00056068, 0.00091938, -0.00000114, 0.00000000],
+		[-6.27194631, -0.00091438, 0.00056052, 0.00091911, -0.00000114, 0.00000000],
+		[-6.27194710, -0.00091411, 0.00056035, 0.00091883, -0.00000114, 0.00000000],
+		[-6.27194788, -0.00091384, 0.00056019, 0.00091856, -0.00000114, 0.00000000],
+		[-6.27194867, -0.00091357, 0.00056002, 0.00091829, -0.00000114, 0.00000000],
+		[-6.27194946, -0.00091330, 0.00055986, 0.00091802, -0.00000114, 0.00000000],
+		[-6.27195024, -0.00091303, 0.00055969, 0.00091775, -0.00000114, 0.00000000],
+		[-6.27195102, -0.00091276, 0.00055953, 0.00091748, -0.00000114, 0.00000000],
+		[-6.27195181, -0.00091249, 0.00055936, 0.00091721, -0.00000114, 0.00000000],
+		[-6.27195259, -0.00091222, 0.00055920, 0.00091694, -0.00000114, 0.00000000],
+		[-6.27195337, -0.00091195, 0.00055903, 0.00091667, -0.00000114, 0.00000000],
+		[-6.27195415, -0.00091168, 0.00055887, 0.00091640, -0.00000114, 0.00000000],
+		[-6.27195493, -0.00091141, 0.00055870, 0.00091613, -0.00000114, 0.00000000],
+		[-6.27195571, -0.00091115, 0.00055854, 0.00091586, -0.00000114, 0.00000000],
+		[-6.27195648, -0.00091088, 0.00055837, 0.00091559, -0.00000114, 0.00000000],
+		[-6.27195726, -0.00091061, 0.00055821, 0.00091532, -0.00000114, 0.00000000],
+		[-6.27195803, -0.00091034, 0.00055804, 0.00091505, -0.00000114, 0.00000000],
+		[-6.27195881, -0.00091007, 0.00055788, 0.00091478, -0.00000114, 0.00000000],
+		[-6.27195958, -0.00090981, 0.00055771, 0.00091451, -0.00000114, 0.00000000],
+		[-6.27196035, -0.00090954, 0.00055755, 0.00091424, -0.00000114, 0.00000000],
+		[-6.27196113, -0.00090927, 0.00055739, 0.00091397, -0.00000114, 0.00000000],
+		[-6.27196190, -0.00090901, 0.00055722, 0.00091371, -0.00000114, 0.00000000],
+		[-6.27196267, -0.00090874, 0.00055706, 0.00091344, -0.00000114, 0.00000000],
+		[-6.27196344, -0.00090847, 0.00055690, 0.00091317, -0.00000114, 0.00000000],
+		[-6.27196420, -0.00090821, 0.00055673, 0.00091290, -0.00000114, 0.00000000],
+		[-6.27196497, -0.00090794, 0.00055657, 0.00091263, -0.00000114, 0.00000000],
+		[-6.27196574, -0.00090767, 0.00055641, 0.00091237, -0.00000114, 0.00000000],
+		[-6.27196650, -0.00090741, 0.00055624, 0.00091210, -0.00000114, 0.00000000],
+		[-6.27196726, -0.00090714, 0.00055608, 0.00091183, -0.00000114, 0.00000000],
+		[-6.27196803, -0.00090688, 0.00055592, 0.00091156, -0.00000114, 0.00000000],
+		[-6.27196879, -0.00090661, 0.00055575, 0.00091130, -0.00000114, 0.00000000],
+		[-6.27196955, -0.00090634, 0.00055559, 0.00091103, -0.00000114, 0.00000000],
+		[-6.27197031, -0.00090608, 0.00055543, 0.00091076, -0.00000114, 0.00000000],
+		[-6.27197107, -0.00090581, 0.00055526, 0.00091050, -0.00000114, 0.00000000],
+		[-6.27197183, -0.00090555, 0.00055510, 0.00091023, -0.00000114, 0.00000000],
+		[-6.27197259, -0.00090528, 0.00055494, 0.00090997, -0.00000114, 0.00000000],
+		[-6.27197335, -0.00090502, 0.00055478, 0.00090970, -0.00000114, 0.00000000],
+		[-6.27197410, -0.00090476, 0.00055461, 0.00090943, -0.00000114, 0.00000000],
+		[-6.27197486, -0.00090449, 0.00055445, 0.00090917, -0.00000114, 0.00000000],
+		[-6.27197561, -0.00090423, 0.00055429, 0.00090890, -0.00000114, 0.00000000],
+		[-6.27197637, -0.00090396, 0.00055413, 0.00090864, -0.00000114, 0.00000000],
+		[-6.27197712, -0.00090370, 0.00055397, 0.00090837, -0.00000114, 0.00000000],
+		[-6.27197787, -0.00090344, 0.00055380, 0.00090811, -0.00000114, 0.00000000],
+		[-6.27197862, -0.00090317, 0.00055364, 0.00090784, -0.00000114, 0.00000000],
+		[-6.27197937, -0.00090291, 0.00055348, 0.00090758, -0.00000114, 0.00000000],
+		[-6.27198012, -0.00090264, 0.00055332, 0.00090731, -0.00000114, 0.00000000],
+		[-6.27198087, -0.00090238, 0.00055316, 0.00090705, -0.00000114, 0.00000000],
+		[-6.27198162, -0.00090212, 0.00055300, 0.00090678, -0.00000114, 0.00000000],
+		[-6.27198236, -0.00090186, 0.00055284, 0.00090652, -0.00000114, 0.00000000],
+		[-6.27198311, -0.00090159, 0.00055267, 0.00090625, -0.00000114, 0.00000000],
+		[-6.27198385, -0.00090133, 0.00055251, 0.00090599, -0.00000113, 0.00000000],
+		[-6.27198460, -0.00090107, 0.00055235, 0.00090573, -0.00000113, 0.00000000],
+		[-6.27198534, -0.00090081, 0.00055219, 0.00090546, -0.00000113, 0.00000000],
+		[-6.27198608, -0.00090054, 0.00055203, 0.00090520, -0.00000113, 0.00000000],
+		[-6.27198682, -0.00090028, 0.00055187, 0.00090494, -0.00000113, 0.00000000],
+		[-6.27198756, -0.00090002, 0.00055171, 0.00090467, -0.00000113, 0.00000000],
+		[-6.27198830, -0.00089976, 0.00055155, 0.00090441, -0.00000113, 0.00000000],
+		[-6.27198904, -0.00089950, 0.00055139, 0.00090415, -0.00000113, 0.00000000],
+		[-6.27198978, -0.00089924, 0.00055123, 0.00090388, -0.00000113, 0.00000000],
+		[-6.27199052, -0.00089898, 0.00055107, 0.00090362, -0.00000113, 0.00000000],
+		[-6.27199126, -0.00089871, 0.00055091, 0.00090336, -0.00000113, 0.00000000],
+		[-6.27199199, -0.00089845, 0.00055075, 0.00090310, -0.00000113, 0.00000000],
+		[-6.27199273, -0.00089819, 0.00055059, 0.00090284, -0.00000113, 0.00000000],
+		[-6.27199346, -0.00089793, 0.00055043, 0.00090257, -0.00000113, 0.00000000],
+		[-6.27199419, -0.00089767, 0.00055027, 0.00090231, -0.00000113, 0.00000000],
+		[-6.27199493, -0.00089741, 0.00055011, 0.00090205, -0.00000113, 0.00000000],
+		[-6.27199566, -0.00089715, 0.00054995, 0.00090179, -0.00000113, 0.00000000],
+		[-6.27199639, -0.00089689, 0.00054979, 0.00090153, -0.00000113, 0.00000000],
+		[-6.27199712, -0.00089663, 0.00054963, 0.00090127, -0.00000113, 0.00000000],
+		[-6.27199785, -0.00089637, 0.00054947, 0.00090100, -0.00000113, 0.00000000],
+		[-6.27199857, -0.00089611, 0.00054931, 0.00090074, -0.00000113, 0.00000000],
+		[-6.27199930, -0.00089585, 0.00054915, 0.00090048, -0.00000113, 0.00000000],
+		[-6.27200003, -0.00089559, 0.00054899, 0.00090022, -0.00000113, 0.00000000],
+		[-6.27200076, -0.00089534, 0.00054883, 0.00089996, -0.00000113, 0.00000000],
+		[-6.27200148, -0.00089508, 0.00054868, 0.00089970, -0.00000113, 0.00000000],
+		[-6.27200220, -0.00089482, 0.00054852, 0.00089944, -0.00000113, 0.00000000],
+		[-6.27200293, -0.00089456, 0.00054836, 0.00089918, -0.00000113, 0.00000000],
+		[-6.27200365, -0.00089430, 0.00054820, 0.00089892, -0.00000113, 0.00000000],
+		[-6.27200437, -0.00089404, 0.00054804, 0.00089866, -0.00000113, 0.00000000],
+		[-6.27200509, -0.00089378, 0.00054788, 0.00089840, -0.00000113, 0.00000000],
+		[-6.27200581, -0.00089353, 0.00054772, 0.00089814, -0.00000113, 0.00000000],
+		[-6.27200653, -0.00089327, 0.00054757, 0.00089788, -0.00000113, 0.00000000],
+		[-6.27200725, -0.00089301, 0.00054741, 0.00089763, -0.00000113, 0.00000000],
+		[-6.27200797, -0.00089275, 0.00054725, 0.00089737, -0.00000113, 0.00000000],
+		[-6.27200869, -0.00089250, 0.00054709, 0.00089711, -0.00000113, 0.00000000],
+		[-6.27200940, -0.00089224, 0.00054693, 0.00089685, -0.00000113, 0.00000000],
+		[-6.27201012, -0.00089198, 0.00054678, 0.00089659, -0.00000113, 0.00000000],
+		[-6.27201083, -0.00089172, 0.00054662, 0.00089633, -0.00000113, 0.00000000],
+		[-6.27201155, -0.00089147, 0.00054646, 0.00089607, -0.00000113, 0.00000000],
+		[-6.27201226, -0.00089121, 0.00054630, 0.00089582, -0.00000113, 0.00000000],
+		[-6.27201297, -0.00089095, 0.00054615, 0.00089556, -0.00000113, 0.00000000],
+		[-6.27201369, -0.00089070, 0.00054599, 0.00089530, -0.00000113, 0.00000000],
+		[-6.27201440, -0.00089044, 0.00054583, 0.00089504, -0.00000113, 0.00000000],
+		[-6.27201511, -0.00089019, 0.00054568, 0.00089479, -0.00000113, 0.00000000],
+		[-6.27201582, -0.00088993, 0.00054552, 0.00089453, -0.00000113, 0.00000000],
+		[-6.27201653, -0.00088967, 0.00054536, 0.00089427, -0.00000113, 0.00000000],
+		[-6.27201723, -0.00088942, 0.00054520, 0.00089401, -0.00000113, 0.00000000],
+		[-6.27201794, -0.00088916, 0.00054505, 0.00089376, -0.00000113, 0.00000000],
+		[-6.27201865, -0.00088891, 0.00054489, 0.00089350, -0.00000113, 0.00000000],
+		[-6.27201935, -0.00088865, 0.00054473, 0.00089324, -0.00000113, 0.00000000],
+		[-6.27202006, -0.00088840, 0.00054458, 0.00089299, -0.00000113, 0.00000000],
+		[-6.27202076, -0.00088814, 0.00054442, 0.00089273, -0.00000113, 0.00000000],
+		[-6.27202147, -0.00088789, 0.00054427, 0.00089248, -0.00000113, 0.00000000],
+		[-6.27202217, -0.00088763, 0.00054411, 0.00089222, -0.00000113, 0.00000000],
+		[-6.27202287, -0.00088738, 0.00054395, 0.00089196, -0.00000113, 0.00000000],
+		[-6.27202357, -0.00088713, 0.00054380, 0.00089171, -0.00000113, 0.00000000],
+		[-6.27202427, -0.00088687, 0.00054364, 0.00089145, -0.00000113, 0.00000000],
+		[-6.27202497, -0.00088662, 0.00054349, 0.00089120, -0.00000113, 0.00000000],
+		[-6.27202567, -0.00088636, 0.00054333, 0.00089094, -0.00000113, 0.00000000],
+		[-6.27202637, -0.00088611, 0.00054317, 0.00089069, -0.00000113, 0.00000000],
+		[-6.27202707, -0.00088586, 0.00054302, 0.00089043, -0.00000113, 0.00000000],
+		[-6.27202777, -0.00088560, 0.00054286, 0.00089018, -0.00000113, 0.00000000],
+		[-6.27202846, -0.00088535, 0.00054271, 0.00088992, -0.00000113, 0.00000000],
+		[-6.27202916, -0.00088510, 0.00054255, 0.00088967, -0.00000113, 0.00000000],
+		[-6.27202985, -0.00088484, 0.00054240, 0.00088941, -0.00000113, 0.00000000],
+		[-6.27203055, -0.00088459, 0.00054224, 0.00088916, -0.00000113, 0.00000000],
+		[-6.27203124, -0.00088434, 0.00054209, 0.00088891, -0.00000113, 0.00000000],
+		[-6.27203193, -0.00088409, 0.00054193, 0.00088865, -0.00000113, 0.00000000],
+		[-6.27203262, -0.00088383, 0.00054178, 0.00088840, -0.00000113, 0.00000000],
+		[-6.27203332, -0.00088358, 0.00054162, 0.00088814, -0.00000113, 0.00000000],
+		[-6.27203401, -0.00088333, 0.00054147, 0.00088789, -0.00000113, 0.00000000],
+		[-6.27203470, -0.00088308, 0.00054131, 0.00088764, -0.00000113, 0.00000000],
+		[-6.27203539, -0.00088282, 0.00054116, 0.00088738, -0.00000113, 0.00000000],
+		[-6.27203607, -0.00088257, 0.00054100, 0.00088713, -0.00000113, 0.00000000],
+		[-6.27203676, -0.00088232, 0.00054085, 0.00088688, -0.00000113, 0.00000000],
+		[-6.27203745, -0.00088207, 0.00054069, 0.00088663, -0.00000113, 0.00000000],
+		[-6.27203813, -0.00088182, 0.00054054, 0.00088637, -0.00000113, 0.00000000],
+		[-6.27203882, -0.00088157, 0.00054039, 0.00088612, -0.00000113, 0.00000000],
+		[-6.27203950, -0.00088132, 0.00054023, 0.00088587, -0.00000113, 0.00000000],
+		[-6.27204019, -0.00088107, 0.00054008, 0.00088562, -0.00000113, 0.00000000],
+		[-6.27204087, -0.00088082, 0.00053992, 0.00088536, -0.00000113, 0.00000000],
+		[-6.27204156, -0.00088056, 0.00053977, 0.00088511, -0.00000113, 0.00000000],
+		[-6.27204224, -0.00088031, 0.00053962, 0.00088486, -0.00000113, 0.00000000],
+		[-6.27204292, -0.00088006, 0.00053946, 0.00088461, -0.00000113, 0.00000000],
+		[-6.27204360, -0.00087981, 0.00053931, 0.00088436, -0.00000113, 0.00000000],
+		[-6.27204428, -0.00087956, 0.00053916, 0.00088411, -0.00000113, 0.00000000],
+		[-6.27204496, -0.00087931, 0.00053900, 0.00088385, -0.00000113, 0.00000000],
+		[-6.27204564, -0.00087906, 0.00053885, 0.00088360, -0.00000113, 0.00000000],
+		[-6.27204632, -0.00087881, 0.00053870, 0.00088335, -0.00000113, 0.00000000],
+		[-6.27204699, -0.00087857, 0.00053854, 0.00088310, -0.00000113, 0.00000000],
+		[-6.27204767, -0.00087832, 0.00053839, 0.00088285, -0.00000113, 0.00000000],
+		[-6.27204835, -0.00087807, 0.00053824, 0.00088260, -0.00000113, 0.00000000],
+		[-6.27204902, -0.00087782, 0.00053809, 0.00088235, -0.00000113, 0.00000000],
+		[-6.27204970, -0.00087757, 0.00053793, 0.00088210, -0.00000113, 0.00000000],
+		[-6.27205037, -0.00087732, 0.00053778, 0.00088185, -0.00000113, 0.00000000],
+		[-6.27205104, -0.00087707, 0.00053763, 0.00088160, -0.00000113, 0.00000000],
+		[-6.27205172, -0.00087682, 0.00053748, 0.00088135, -0.00000113, 0.00000000],
+		[-6.27205239, -0.00087658, 0.00053732, 0.00088110, -0.00000113, 0.00000000],
+		[-6.27205306, -0.00087633, 0.00053717, 0.00088085, -0.00000113, 0.00000000],
+		[-6.27205373, -0.00087608, 0.00053702, 0.00088060, -0.00000113, 0.00000000],
+		[-6.27205440, -0.00087583, 0.00053687, 0.00088035, -0.00000113, 0.00000000],
+		[-6.27205507, -0.00087558, 0.00053671, 0.00088010, -0.00000113, 0.00000000],
+		[-6.27205574, -0.00087534, 0.00053656, 0.00087985, -0.00000113, 0.00000000],
+		[-6.27205641, -0.00087509, 0.00053641, 0.00087961, -0.00000113, 0.00000000],
+		[-6.27205707, -0.00087484, 0.00053626, 0.00087936, -0.00000113, 0.00000000],
+		[-6.27205774, -0.00087459, 0.00053611, 0.00087911, -0.00000113, 0.00000000],
+		[-6.27205841, -0.00087435, 0.00053596, 0.00087886, -0.00000113, 0.00000000],
+		[-6.27205907, -0.00087410, 0.00053580, 0.00087861, -0.00000113, 0.00000000],
+		[-6.27205974, -0.00087385, 0.00053565, 0.00087836, -0.00000113, 0.00000000],
+		[-6.27206040, -0.00087361, 0.00053550, 0.00087812, -0.00000113, 0.00000000],
+		[-6.27206106, -0.00087336, 0.00053535, 0.00087787, -0.00000113, 0.00000000],
+		[-6.27206173, -0.00087311, 0.00053520, 0.00087762, -0.00000113, 0.00000000],
+		[-6.27206239, -0.00087287, 0.00053505, 0.00087737, -0.00000113, 0.00000000],
+		[-6.27206305, -0.00087262, 0.00053490, 0.00087713, -0.00000113, 0.00000000],
+		[-6.27206371, -0.00087238, 0.00053475, 0.00087688, -0.00000113, 0.00000000],
+		[-6.27206437, -0.00087213, 0.00053460, 0.00087663, -0.00000113, 0.00000000],
+		[-6.27206503, -0.00087188, 0.00053445, 0.00087638, -0.00000113, 0.00000000],
+		[-6.27206569, -0.00087164, 0.00053429, 0.00087614, -0.00000113, 0.00000000],
+		[-6.27206635, -0.00087139, 0.00053414, 0.00087589, -0.00000113, 0.00000000],
+		[-6.27206701, -0.00087115, 0.00053399, 0.00087564, -0.00000113, 0.00000000],
+		[-6.27206767, -0.00087090, 0.00053384, 0.00087540, -0.00000113, 0.00000000],
+		[-6.27206832, -0.00087066, 0.00053369, 0.00087515, -0.00000113, 0.00000000],
+		[-6.27206898, -0.00087041, 0.00053354, 0.00087491, -0.00000113, 0.00000000],
+		[-6.27206963, -0.00087017, 0.00053339, 0.00087466, -0.00000113, 0.00000000],
+		[-6.27207029, -0.00086992, 0.00053324, 0.00087441, -0.00000113, 0.00000000],
+		[-6.27207094, -0.00086968, 0.00053309, 0.00087417, -0.00000113, 0.00000000],
+		[-6.27207160, -0.00086944, 0.00053294, 0.00087392, -0.00000113, 0.00000000],
+		[-6.27207225, -0.00086919, 0.00053279, 0.00087368, -0.00000113, 0.00000000],
+		[-6.27207290, -0.00086895, 0.00053264, 0.00087343, -0.00000113, 0.00000000],
+		[-6.27207355, -0.00086870, 0.00053249, 0.00087319, -0.00000113, 0.00000000],
+		[-6.27207420, -0.00086846, 0.00053234, 0.00087294, -0.00000113, 0.00000000],
+		[-6.27207485, -0.00086822, 0.00053219, 0.00087270, -0.00000113, 0.00000000],
+		[-6.27207550, -0.00086797, 0.00053205, 0.00087245, -0.00000113, 0.00000000],
+		[-6.27207615, -0.00086773, 0.00053190, 0.00087221, -0.00000113, 0.00000000],
+		[-6.27207680, -0.00086749, 0.00053175, 0.00087196, -0.00000113, 0.00000000],
+		[-6.27207745, -0.00086724, 0.00053160, 0.00087172, -0.00000113, 0.00000000],
+		[-6.27207810, -0.00086700, 0.00053145, 0.00087147, -0.00000113, 0.00000000],
+		[-6.27207874, -0.00086676, 0.00053130, 0.00087123, -0.00000113, 0.00000000],
+		[-6.27207939, -0.00086652, 0.00053115, 0.00087099, -0.00000113, 0.00000000],
+		[-6.27208004, -0.00086627, 0.00053100, 0.00087074, -0.00000113, 0.00000000],
+		[-6.27208068, -0.00086603, 0.00053085, 0.00087050, -0.00000113, 0.00000000],
+		[-6.27208132, -0.00086579, 0.00053070, 0.00087026, -0.00000113, 0.00000000],
+		[-6.27208197, -0.00086555, 0.00053056, 0.00087001, -0.00000113, 0.00000000],
+		[-6.27208261, -0.00086530, 0.00053041, 0.00086977, -0.00000113, 0.00000000],
+		[-6.27208325, -0.00086506, 0.00053026, 0.00086953, -0.00000113, 0.00000000],
+		[-6.27208390, -0.00086482, 0.00053011, 0.00086928, -0.00000113, 0.00000000],
+		[-6.27208454, -0.00086458, 0.00052996, 0.00086904, -0.00000113, 0.00000000],
+		[-6.27208518, -0.00086434, 0.00052981, 0.00086880, -0.00000113, 0.00000000],
+		[-6.27208582, -0.00086410, 0.00052967, 0.00086856, -0.00000113, 0.00000000],
+		[-6.27208646, -0.00086386, 0.00052952, 0.00086831, -0.00000113, 0.00000000],
+		[-6.27208710, -0.00086361, 0.00052937, 0.00086807, -0.00000113, 0.00000000],
+		[-6.27208774, -0.00086337, 0.00052922, 0.00086783, -0.00000113, 0.00000000],
+		[-6.27208837, -0.00086313, 0.00052908, 0.00086759, -0.00000113, 0.00000000],
+		[-6.27208901, -0.00086289, 0.00052893, 0.00086734, -0.00000113, 0.00000000],
+		[-6.27208965, -0.00086265, 0.00052878, 0.00086710, -0.00000113, 0.00000000],
+		[-6.27209028, -0.00086241, 0.00052863, 0.00086686, -0.00000113, 0.00000000],
+		[-6.27209092, -0.00086217, 0.00052849, 0.00086662, -0.00000113, 0.00000000],
+		[-6.27209155, -0.00086193, 0.00052834, 0.00086638, -0.00000113, 0.00000000],
+		[-6.27209219, -0.00086169, 0.00052819, 0.00086614, -0.00000113, 0.00000000],
+		[-6.27209282, -0.00086145, 0.00052804, 0.00086590, -0.00000113, 0.00000000],
+		[-6.27209346, -0.00086121, 0.00052790, 0.00086565, -0.00000113, 0.00000000],
+		[-6.27209409, -0.00086097, 0.00052775, 0.00086541, -0.00000113, 0.00000000],
+		[-6.27209472, -0.00086073, 0.00052760, 0.00086517, -0.00000113, 0.00000000],
+		[-6.27209535, -0.00086049, 0.00052746, 0.00086493, -0.00000113, 0.00000000],
+		[-6.27209598, -0.00086025, 0.00052731, 0.00086469, -0.00000113, 0.00000000],
+		[-6.27209661, -0.00086002, 0.00052716, 0.00086445, -0.00000113, 0.00000000],
+		[-6.27209724, -0.00085978, 0.00052702, 0.00086421, -0.00000113, 0.00000000],
+		[-6.27209787, -0.00085954, 0.00052687, 0.00086397, -0.00000113, 0.00000000],
+		[-6.27209850, -0.00085930, 0.00052672, 0.00086373, -0.00000113, 0.00000000],
+		[-6.27209913, -0.00085906, 0.00052658, 0.00086349, -0.00000113, 0.00000000],
+		[-6.27209976, -0.00085882, 0.00052643, 0.00086325, -0.00000113, 0.00000000],
+		[-6.27210038, -0.00085858, 0.00052628, 0.00086301, -0.00000113, 0.00000000],
+		[-6.27210101, -0.00085835, 0.00052614, 0.00086277, -0.00000113, 0.00000000],
+		[-6.27210164, -0.00085811, 0.00052599, 0.00086253, -0.00000113, 0.00000000],
+		[-6.27210226, -0.00085787, 0.00052585, 0.00086230, -0.00000113, 0.00000000],
+		[-6.27210289, -0.00085763, 0.00052570, 0.00086206, -0.00000113, 0.00000000],
+		[-6.27210351, -0.00085740, 0.00052555, 0.00086182, -0.00000113, 0.00000000],
+		[-6.27210414, -0.00085716, 0.00052541, 0.00086158, -0.00000113, 0.00000000],
+		[-6.27210476, -0.00085692, 0.00052526, 0.00086134, -0.00000113, 0.00000000],
+		[-6.27210538, -0.00085668, 0.00052512, 0.00086110, -0.00000113, 0.00000000],
+		[-6.27210600, -0.00085645, 0.00052497, 0.00086086, -0.00000113, 0.00000000],
+		[-6.27210663, -0.00085621, 0.00052483, 0.00086063, -0.00000113, 0.00000000],
+		[-6.27210725, -0.00085597, 0.00052468, 0.00086039, -0.00000113, 0.00000000],
+		[-6.27210787, -0.00085574, 0.00052454, 0.00086015, -0.00000113, 0.00000000],
+		[-6.27210849, -0.00085550, 0.00052439, 0.00085991, -0.00000113, 0.00000000],
+		[-6.27210911, -0.00085526, 0.00052425, 0.00085967, -0.00000113, 0.00000000],
+		[-6.27210973, -0.00085503, 0.00052410, 0.00085944, -0.00000113, 0.00000000],
+		[-6.27211034, -0.00085479, 0.00052396, 0.00085920, -0.00000113, 0.00000000],
+		[-6.27211096, -0.00085456, 0.00052381, 0.00085896, -0.00000113, 0.00000000],
+		[-6.27211158, -0.00085432, 0.00052367, 0.00085873, -0.00000113, 0.00000000],
+		[-6.27211220, -0.00085408, 0.00052352, 0.00085849, -0.00000113, 0.00000000],
+		[-6.27211281, -0.00085385, 0.00052338, 0.00085825, -0.00000113, 0.00000000],
+		[-6.27211343, -0.00085361, 0.00052323, 0.00085801, -0.00000113, 0.00000000],
+		[-6.27211404, -0.00085338, 0.00052309, 0.00085778, -0.00000113, 0.00000000],
+		[-6.27211466, -0.00085314, 0.00052295, 0.00085754, -0.00000113, 0.00000000],
+		[-6.27211527, -0.00085291, 0.00052280, 0.00085731, -0.00000113, 0.00000000],
+		[-6.27211589, -0.00085267, 0.00052266, 0.00085707, -0.00000113, 0.00000000],
+		[-6.27211650, -0.00085244, 0.00052251, 0.00085683, -0.00000113, 0.00000000],
+		[-6.27211711, -0.00085220, 0.00052237, 0.00085660, -0.00000113, 0.00000000],
+		[-6.27211772, -0.00085197, 0.00052222, 0.00085636, -0.00000113, 0.00000000],
+		[-6.27211833, -0.00085173, 0.00052208, 0.00085613, -0.00000113, 0.00000000],
+		[-6.27211895, -0.00085150, 0.00052194, 0.00085589, -0.00000113, 0.00000000],
+		[-6.27211956, -0.00085127, 0.00052179, 0.00085565, -0.00000113, 0.00000000],
+		[-6.27212017, -0.00085103, 0.00052165, 0.00085542, -0.00000113, 0.00000000],
+		[-6.27212078, -0.00085080, 0.00052151, 0.00085518, -0.00000113, 0.00000000],
+		[-6.27212138, -0.00085056, 0.00052136, 0.00085495, -0.00000113, 0.00000000],
+		[-6.27212199, -0.00085033, 0.00052122, 0.00085471, -0.00000113, 0.00000000],
+		[-6.27212260, -0.00085010, 0.00052108, 0.00085448, -0.00000113, 0.00000000],
+		[-6.27212321, -0.00084986, 0.00052093, 0.00085425, -0.00000113, 0.00000000],
+		[-6.27212381, -0.00084963, 0.00052079, 0.00085401, -0.00000113, 0.00000000],
+		[-6.27212442, -0.00084940, 0.00052065, 0.00085378, -0.00000113, 0.00000000],
+		[-6.27212503, -0.00084916, 0.00052050, 0.00085354, -0.00000113, 0.00000000],
+		[-6.27212563, -0.00084893, 0.00052036, 0.00085331, -0.00000113, 0.00000000],
+		[-6.27212624, -0.00084870, 0.00052022, 0.00085307, -0.00000113, 0.00000000],
+		[-6.27212684, -0.00084847, 0.00052008, 0.00085284, -0.00000113, 0.00000000],
+		[-6.27212744, -0.00084823, 0.00051993, 0.00085261, -0.00000113, 0.00000000],
+		[-6.27212805, -0.00084800, 0.00051979, 0.00085237, -0.00000113, 0.00000000],
+		[-6.27212865, -0.00084777, 0.00051965, 0.00085214, -0.00000113, 0.00000000],
+		[-6.27212925, -0.00084754, 0.00051951, 0.00085191, -0.00000113, 0.00000000],
+		[-6.27212986, -0.00084730, 0.00051936, 0.00085167, -0.00000113, 0.00000000],
+		[-6.27213046, -0.00084707, 0.00051922, 0.00085144, -0.00000113, 0.00000000],
+		[-6.27213106, -0.00084684, 0.00051908, 0.00085121, -0.00000113, 0.00000000],
+		[-6.27213166, -0.00084661, 0.00051894, 0.00085097, -0.00000113, 0.00000000],
+		[-6.27213226, -0.00084638, 0.00051879, 0.00085074, -0.00000113, 0.00000000],
+		[-6.27213286, -0.00084615, 0.00051865, 0.00085051, -0.00000113, 0.00000000],
+		[-6.27213345, -0.00084592, 0.00051851, 0.00085028, -0.00000113, 0.00000000],
+		[-6.27213405, -0.00084568, 0.00051837, 0.00085004, -0.00000113, 0.00000000],
+		[-6.27213465, -0.00084545, 0.00051823, 0.00084981, -0.00000113, 0.00000000],
+		[-6.27213525, -0.00084522, 0.00051809, 0.00084958, -0.00000113, 0.00000000],
+		[-6.27213585, -0.00084499, 0.00051794, 0.00084935, -0.00000113, 0.00000000],
+		[-6.27213644, -0.00084476, 0.00051780, 0.00084912, -0.00000113, 0.00000000],
+		[-6.27213704, -0.00084453, 0.00051766, 0.00084888, -0.00000113, 0.00000000],
+		[-6.27213763, -0.00084430, 0.00051752, 0.00084865, -0.00000113, 0.00000000],
+		[-6.27213823, -0.00084407, 0.00051738, 0.00084842, -0.00000113, 0.00000000],
+		[-6.27213882, -0.00084384, 0.00051724, 0.00084819, -0.00000113, 0.00000000],
+		[-6.27213942, -0.00084361, 0.00051710, 0.00084796, -0.00000113, 0.00000000],
+		[-6.27214001, -0.00084338, 0.00051696, 0.00084773, -0.00000113, 0.00000000],
+		[-6.27214060, -0.00084315, 0.00051681, 0.00084750, -0.00000113, 0.00000000],
+		[-6.27214120, -0.00084292, 0.00051667, 0.00084727, -0.00000113, 0.00000000],
+		[-6.27214179, -0.00084269, 0.00051653, 0.00084703, -0.00000113, 0.00000000],
+		[-6.27214238, -0.00084246, 0.00051639, 0.00084680, -0.00000113, 0.00000000],
+		[-6.27214297, -0.00084223, 0.00051625, 0.00084657, -0.00000113, 0.00000000],
+		[-6.27214356, -0.00084200, 0.00051611, 0.00084634, -0.00000113, 0.00000000],
+		[-6.27214415, -0.00084178, 0.00051597, 0.00084611, -0.00000113, 0.00000000],
+		[-6.27214474, -0.00084155, 0.00051583, 0.00084588, -0.00000113, 0.00000000],
+		[-6.27214533, -0.00084132, 0.00051569, 0.00084565, -0.00000113, 0.00000000],
+		[-6.27214592, -0.00084109, 0.00051555, 0.00084542, -0.00000113, 0.00000000],
+		[-6.27214651, -0.00084086, 0.00051541, 0.00084519, -0.00000113, 0.00000000],
+		[-6.27214709, -0.00084063, 0.00051527, 0.00084496, -0.00000113, 0.00000000],
+		[-6.27214768, -0.00084040, 0.00051513, 0.00084473, -0.00000113, 0.00000000],
+		[-6.27214827, -0.00084018, 0.00051499, 0.00084451, -0.00000113, 0.00000000],
+		[-6.27214885, -0.00083995, 0.00051485, 0.00084428, -0.00000113, 0.00000000],
+		[-6.27214944, -0.00083972, 0.00051471, 0.00084405, -0.00000113, 0.00000000],
+		[-6.27215002, -0.00083949, 0.00051457, 0.00084382, -0.00000113, 0.00000000],
+		[-6.27215061, -0.00083926, 0.00051443, 0.00084359, -0.00000113, 0.00000000],
+		[-6.27215119, -0.00083904, 0.00051429, 0.00084336, -0.00000113, 0.00000000],
+		[-6.27215178, -0.00083881, 0.00051415, 0.00084313, -0.00000113, 0.00000000],
+		[-6.27215236, -0.00083858, 0.00051401, 0.00084290, -0.00000113, 0.00000000],
+		[-6.27215294, -0.00083836, 0.00051387, 0.00084268, -0.00000113, 0.00000000],
+		[-6.27215353, -0.00083813, 0.00051373, 0.00084245, -0.00000113, 0.00000000],
+		[-6.27215411, -0.00083790, 0.00051359, 0.00084222, -0.00000113, 0.00000000],
+		[-6.27215469, -0.00083768, 0.00051345, 0.00084199, -0.00000113, 0.00000000],
+		[-6.27215527, -0.00083745, 0.00051332, 0.00084176, -0.00000113, 0.00000000],
+		[-6.27215585, -0.00083722, 0.00051318, 0.00084154, -0.00000113, 0.00000000],
+		[-6.27215643, -0.00083700, 0.00051304, 0.00084131, -0.00000113, 0.00000000],
+		[-6.27215701, -0.00083677, 0.00051290, 0.00084108, -0.00000113, 0.00000000],
+		[-6.27215759, -0.00083654, 0.00051276, 0.00084085, -0.00000113, 0.00000000],
+		[-6.27215817, -0.00083632, 0.00051262, 0.00084063, -0.00000113, 0.00000000],
+		[-6.27215875, -0.00083609, 0.00051248, 0.00084040, -0.00000113, 0.00000000],
+		[-6.27215933, -0.00083587, 0.00051234, 0.00084017, -0.00000113, 0.00000000],
+		[-6.27215990, -0.00083564, 0.00051221, 0.00083995, -0.00000113, 0.00000000],
+		[-6.27216048, -0.00083541, 0.00051207, 0.00083972, -0.00000113, 0.00000000],
+		[-6.27216106, -0.00083519, 0.00051193, 0.00083949, -0.00000113, 0.00000000],
+		[-6.27216164, -0.00083496, 0.00051179, 0.00083927, -0.00000113, 0.00000000],
+		[-6.27216221, -0.00083474, 0.00051165, 0.00083904, -0.00000113, 0.00000000],
+		[-6.27216279, -0.00083451, 0.00051151, 0.00083881, -0.00000113, 0.00000000],
+		[-6.27216336, -0.00083429, 0.00051138, 0.00083859, -0.00000113, 0.00000000],
+		[-6.27216394, -0.00083406, 0.00051124, 0.00083836, -0.00000113, 0.00000000],
+		[-6.27216451, -0.00083384, 0.00051110, 0.00083813, -0.00000113, 0.00000000],
+		[-6.27216508, -0.00083361, 0.00051096, 0.00083791, -0.00000113, 0.00000000],
+		[-6.27216566, -0.00083339, 0.00051083, 0.00083768, -0.00000113, 0.00000000],
+		[-6.27216623, -0.00083317, 0.00051069, 0.00083746, -0.00000113, 0.00000000],
+		[-6.27216680, -0.00083294, 0.00051055, 0.00083723, -0.00000113, 0.00000000],
+		[-6.27216737, -0.00083272, 0.00051041, 0.00083701, -0.00000113, 0.00000000],
+		[-6.27216794, -0.00083249, 0.00051028, 0.00083678, -0.00000113, 0.00000000],
+		[-6.27216851, -0.00083227, 0.00051014, 0.00083656, -0.00000113, 0.00000000],
+		[-6.27216909, -0.00083205, 0.00051000, 0.00083633, -0.00000113, 0.00000000],
+		[-6.27216966, -0.00083182, 0.00050986, 0.00083611, -0.00000113, 0.00000000],
+		[-6.27217022, -0.00083160, 0.00050973, 0.00083588, -0.00000113, 0.00000000],
+		[-6.27217079, -0.00083138, 0.00050959, 0.00083566, -0.00000113, 0.00000000],
+		[-6.27217136, -0.00083115, 0.00050945, 0.00083543, -0.00000113, 0.00000000],
+		[-6.27217193, -0.00083093, 0.00050932, 0.00083521, -0.00000113, 0.00000000],
+		[-6.27217250, -0.00083071, 0.00050918, 0.00083499, -0.00000113, 0.00000000],
+		[-6.27217307, -0.00083048, 0.00050904, 0.00083476, -0.00000113, 0.00000000],
+		[-6.27217363, -0.00083026, 0.00050891, 0.00083454, -0.00000113, 0.00000000],
+		[-6.27217420, -0.00083004, 0.00050877, 0.00083431, -0.00000113, 0.00000000],
+		[-6.27217477, -0.00082982, 0.00050863, 0.00083409, -0.00000113, 0.00000000],
+		[-6.27217533, -0.00082959, 0.00050850, 0.00083387, -0.00000113, 0.00000000],
+		[-6.27217590, -0.00082937, 0.00050836, 0.00083364, -0.00000113, 0.00000000],
+		[-6.27217646, -0.00082915, 0.00050822, 0.00083342, -0.00000113, 0.00000000],
+		[-6.27217703, -0.00082893, 0.00050809, 0.00083320, -0.00000113, 0.00000000],
+		[-6.27217759, -0.00082871, 0.00050795, 0.00083297, -0.00000113, 0.00000000],
+		[-6.27217815, -0.00082848, 0.00050782, 0.00083275, -0.00000113, 0.00000000],
+		[-6.27217872, -0.00082826, 0.00050768, 0.00083253, -0.00000113, 0.00000000],
+		[-6.27217928, -0.00082804, 0.00050754, 0.00083230, -0.00000113, 0.00000000],
+		[-6.27217984, -0.00082782, 0.00050741, 0.00083208, -0.00000113, 0.00000000],
+		[-6.27218040, -0.00082760, 0.00050727, 0.00083186, -0.00000113, 0.00000000],
+		[-6.27218097, -0.00082738, 0.00050714, 0.00083164, -0.00000113, 0.00000000],
+		[-6.27218153, -0.00082716, 0.00050700, 0.00083141, -0.00000113, 0.00000000],
+		[-6.27218209, -0.00082693, 0.00050686, 0.00083119, -0.00000113, 0.00000000],
+		[-6.27218265, -0.00082671, 0.00050673, 0.00083097, -0.00000113, 0.00000000],
+		[-6.27218321, -0.00082649, 0.00050659, 0.00083075, -0.00000113, 0.00000000],
+		[-6.27218377, -0.00082627, 0.00050646, 0.00083053, -0.00000113, 0.00000000],
+		[-6.27218433, -0.00082605, 0.00050632, 0.00083031, -0.00000113, 0.00000000],
+		[-6.27218488, -0.00082583, 0.00050619, 0.00083008, -0.00000113, 0.00000000],
+		[-6.27218544, -0.00082561, 0.00050605, 0.00082986, -0.00000113, 0.00000000],
+		[-6.27218600, -0.00082539, 0.00050592, 0.00082964, -0.00000113, 0.00000000],
+		[-6.27218656, -0.00082517, 0.00050578, 0.00082942, -0.00000113, 0.00000000],
+		[-6.27218711, -0.00082495, 0.00050565, 0.00082920, -0.00000113, 0.00000000],
+		[-6.27218767, -0.00082473, 0.00050551, 0.00082898, -0.00000113, 0.00000000],
+		[-6.27218823, -0.00082451, 0.00050538, 0.00082876, -0.00000113, 0.00000000],
+		[-6.27218878, -0.00082429, 0.00050524, 0.00082854, -0.00000113, 0.00000000],
+		[-6.27218934, -0.00082407, 0.00050511, 0.00082832, -0.00000113, 0.00000000],
+		[-6.27218989, -0.00082385, 0.00050497, 0.00082810, -0.00000113, 0.00000000],
+		[-6.27219045, -0.00082363, 0.00050484, 0.00082787, -0.00000113, 0.00000000],
+		[-6.27219100, -0.00082341, 0.00050471, 0.00082765, -0.00000113, 0.00000000],
+		[-6.27219155, -0.00082320, 0.00050457, 0.00082743, -0.00000113, 0.00000000],
+		[-6.27219211, -0.00082298, 0.00050444, 0.00082721, -0.00000113, 0.00000000],
+		[-6.27219266, -0.00082276, 0.00050430, 0.00082699, -0.00000113, 0.00000000],
+		[-6.27219321, -0.00082254, 0.00050417, 0.00082677, -0.00000113, 0.00000000],
+		[-6.27219376, -0.00082232, 0.00050403, 0.00082656, -0.00000113, 0.00000000],
+		[-6.27219432, -0.00082210, 0.00050390, 0.00082634, -0.00000113, 0.00000000],
+		[-6.27219487, -0.00082188, 0.00050377, 0.00082612, -0.00000113, 0.00000000],
+		[-6.27219542, -0.00082167, 0.00050363, 0.00082590, -0.00000113, 0.00000000],
+		[-6.27219597, -0.00082145, 0.00050350, 0.00082568, -0.00000113, 0.00000000],
+		[-6.27219652, -0.00082123, 0.00050337, 0.00082546, -0.00000113, 0.00000000],
+		[-6.27219707, -0.00082101, 0.00050323, 0.00082524, -0.00000113, 0.00000000],
+		[-6.27219762, -0.00082080, 0.00050310, 0.00082502, -0.00000113, 0.00000000],
+		[-6.27219817, -0.00082058, 0.00050296, 0.00082480, -0.00000113, 0.00000000],
+		[-6.27219872, -0.00082036, 0.00050283, 0.00082458, -0.00000113, 0.00000000],
+		[-6.27219926, -0.00082014, 0.00050270, 0.00082436, -0.00000113, 0.00000000],
+		[-6.27219981, -0.00081993, 0.00050256, 0.00082415, -0.00000113, 0.00000000],
+		[-6.27220036, -0.00081971, 0.00050243, 0.00082393, -0.00000113, 0.00000000],
+		[-6.27220091, -0.00081949, 0.00050230, 0.00082371, -0.00000113, 0.00000000],
+		[-6.27220145, -0.00081927, 0.00050216, 0.00082349, -0.00000113, 0.00000000],
+		[-6.27220200, -0.00081906, 0.00050203, 0.00082327, -0.00000113, 0.00000000],
+		[-6.27220254, -0.00081884, 0.00050190, 0.00082306, -0.00000113, 0.00000000],
+		[-6.27220309, -0.00081862, 0.00050177, 0.00082284, -0.00000113, 0.00000000],
+		[-6.27220363, -0.00081841, 0.00050163, 0.00082262, -0.00000113, 0.00000000],
+		[-6.27220418, -0.00081819, 0.00050150, 0.00082240, -0.00000113, 0.00000000],
+		[-6.27220472, -0.00081798, 0.00050137, 0.00082219, -0.00000113, 0.00000000],
+		[-6.27220527, -0.00081776, 0.00050124, 0.00082197, -0.00000113, 0.00000000],
+		[-6.27220581, -0.00081754, 0.00050110, 0.00082175, -0.00000113, 0.00000000],
+		[-6.27220635, -0.00081733, 0.00050097, 0.00082153, -0.00000113, 0.00000000],
+		[-6.27220690, -0.00081711, 0.00050084, 0.00082132, -0.00000113, 0.00000000],
+		[-6.27220744, -0.00081690, 0.00050071, 0.00082110, -0.00000113, 0.00000000],
+		[-6.27220798, -0.00081668, 0.00050057, 0.00082088, -0.00000113, 0.00000000],
+		[-6.27220852, -0.00081647, 0.00050044, 0.00082067, -0.00000113, 0.00000000],
+		[-6.27220906, -0.00081625, 0.00050031, 0.00082045, -0.00000113, 0.00000000],
+		[-6.27220960, -0.00081604, 0.00050018, 0.00082024, -0.00000113, 0.00000000],
+		[-6.27221014, -0.00081582, 0.00050005, 0.00082002, -0.00000113, 0.00000000],
+		[-6.27221068, -0.00081561, 0.00049991, 0.00081980, -0.00000113, 0.00000000],
+		[-6.27221122, -0.00081539, 0.00049978, 0.00081959, -0.00000113, 0.00000000],
+		[-6.27221176, -0.00081518, 0.00049965, 0.00081937, -0.00000113, 0.00000000],
+		[-6.27221230, -0.00081496, 0.00049952, 0.00081916, -0.00000113, 0.00000000],
+		[-6.27221284, -0.00081475, 0.00049939, 0.00081894, -0.00000113, 0.00000000],
+		[-6.27221338, -0.00081453, 0.00049926, 0.00081872, -0.00000113, 0.00000000],
+		[-6.27221391, -0.00081432, 0.00049912, 0.00081851, -0.00000113, 0.00000000],
+		[-6.27221445, -0.00081410, 0.00049899, 0.00081829, -0.00000113, 0.00000000],
+		[-6.27221499, -0.00081389, 0.00049886, 0.00081808, -0.00000113, 0.00000000],
+		[-6.27221552, -0.00081368, 0.00049873, 0.00081786, -0.00000113, 0.00000000],
+		[-6.27221606, -0.00081346, 0.00049860, 0.00081765, -0.00000113, 0.00000000],
+		[-6.27221660, -0.00081325, 0.00049847, 0.00081743, -0.00000113, 0.00000000],
+		[-6.27221713, -0.00081303, 0.00049834, 0.00081722, -0.00000113, 0.00000000],
+		[-6.27221767, -0.00081282, 0.00049821, 0.00081700, -0.00000113, 0.00000000],
+		[-6.27221820, -0.00081261, 0.00049807, 0.00081679, -0.00000113, 0.00000000],
+		[-6.27221874, -0.00081239, 0.00049794, 0.00081657, -0.00000113, 0.00000000],
+		[-6.27221927, -0.00081218, 0.00049781, 0.00081636, -0.00000113, 0.00000000],
+		[-6.27221980, -0.00081197, 0.00049768, 0.00081615, -0.00000113, 0.00000000],
+		[-6.27222034, -0.00081176, 0.00049755, 0.00081593, -0.00000113, 0.00000000],
+		[-6.27222087, -0.00081154, 0.00049742, 0.00081572, -0.00000113, 0.00000000],
+		[-6.27222140, -0.00081133, 0.00049729, 0.00081550, -0.00000113, 0.00000000],
+		[-6.27222193, -0.00081112, 0.00049716, 0.00081529, -0.00000113, 0.00000000],
+		[-6.27222247, -0.00081090, 0.00049703, 0.00081508, -0.00000113, 0.00000000],
+		[-6.27222300, -0.00081069, 0.00049690, 0.00081486, -0.00000113, 0.00000000],
+		[-6.27222353, -0.00081048, 0.00049677, 0.00081465, -0.00000113, 0.00000000],
+		[-6.27222406, -0.00081027, 0.00049664, 0.00081444, -0.00000113, 0.00000000],
+		[-6.27222459, -0.00081006, 0.00049651, 0.00081422, -0.00000113, 0.00000000],
+		[-6.27222512, -0.00080984, 0.00049638, 0.00081401, -0.00000113, 0.00000000],
+		[-6.27222565, -0.00080963, 0.00049625, 0.00081380, -0.00000113, 0.00000000],
+		[-6.27222618, -0.00080942, 0.00049612, 0.00081359, -0.00000113, 0.00000000],
+		[-6.27222671, -0.00080921, 0.00049599, 0.00081337, -0.00000113, 0.00000000],
+		[-6.27222723, -0.00080900, 0.00049586, 0.00081316, -0.00000113, 0.00000000],
+		[-6.27222776, -0.00080879, 0.00049573, 0.00081295, -0.00000113, 0.00000000],
+		[-6.27222829, -0.00080857, 0.00049560, 0.00081273, -0.00000113, 0.00000000],
+		[-6.27222882, -0.00080836, 0.00049547, 0.00081252, -0.00000113, 0.00000000],
+		[-6.27222934, -0.00080815, 0.00049534, 0.00081231, -0.00000113, 0.00000000],
+		[-6.27222987, -0.00080794, 0.00049521, 0.00081210, -0.00000113, 0.00000000],
+		[-6.27223040, -0.00080773, 0.00049508, 0.00081189, -0.00000113, 0.00000000],
+		[-6.27223092, -0.00080752, 0.00049495, 0.00081167, -0.00000113, 0.00000000],
+		[-6.27223145, -0.00080731, 0.00049482, 0.00081146, -0.00000113, 0.00000000],
+		[-6.27223197, -0.00080710, 0.00049469, 0.00081125, -0.00000113, 0.00000000],
+		[-6.27223250, -0.00080689, 0.00049457, 0.00081104, -0.00000113, 0.00000000],
+		[-6.27223302, -0.00080668, 0.00049444, 0.00081083, -0.00000113, 0.00000000],
+		[-6.27223355, -0.00080647, 0.00049431, 0.00081062, -0.00000113, 0.00000000],
+		[-6.27223407, -0.00080626, 0.00049418, 0.00081041, -0.00000113, 0.00000000],
+		[-6.27223460, -0.00080605, 0.00049405, 0.00081019, -0.00000113, 0.00000000],
+		[-6.27223512, -0.00080584, 0.00049392, 0.00080998, -0.00000113, 0.00000000],
+		[-6.27223564, -0.00080563, 0.00049379, 0.00080977, -0.00000113, 0.00000000],
+		[-6.27223616, -0.00080542, 0.00049366, 0.00080956, -0.00000113, 0.00000000],
+		[-6.27223669, -0.00080521, 0.00049354, 0.00080935, -0.00000113, 0.00000000],
+		[-6.27223721, -0.00080500, 0.00049341, 0.00080914, -0.00000113, 0.00000000],
+		[-6.27223773, -0.00080479, 0.00049328, 0.00080893, -0.00000113, 0.00000000],
+		[-6.27223825, -0.00080458, 0.00049315, 0.00080872, -0.00000113, 0.00000000],
+		[-6.27223877, -0.00080437, 0.00049302, 0.00080851, -0.00000113, 0.00000000],
+		[-6.27223929, -0.00080416, 0.00049289, 0.00080830, -0.00000113, 0.00000000],
+		[-6.27223981, -0.00080395, 0.00049277, 0.00080809, -0.00000113, 0.00000000],
+		[-6.27224033, -0.00080375, 0.00049264, 0.00080788, -0.00000113, 0.00000000],
+		[-6.27224085, -0.00080354, 0.00049251, 0.00080767, -0.00000113, 0.00000000],
+		[-6.27224137, -0.00080333, 0.00049238, 0.00080746, -0.00000113, 0.00000000],
+		[-6.27224189, -0.00080312, 0.00049225, 0.00080725, -0.00000113, 0.00000000],
+		[-6.27224241, -0.00080291, 0.00049213, 0.00080704, -0.00000113, 0.00000000],
+		[-6.27224292, -0.00080270, 0.00049200, 0.00080683, -0.00000113, 0.00000000],
+		[-6.27224344, -0.00080250, 0.00049187, 0.00080662, -0.00000113, 0.00000000],
+		[-6.27224396, -0.00080229, 0.00049174, 0.00080641, -0.00000113, 0.00000000],
+		[-6.27224447, -0.00080208, 0.00049162, 0.00080621, -0.00000113, 0.00000000],
+		[-6.27224499, -0.00080187, 0.00049149, 0.00080600, -0.00000113, 0.00000000],
+		[-6.27224551, -0.00080166, 0.00049136, 0.00080579, -0.00000113, 0.00000000],
+		[-6.27224602, -0.00080146, 0.00049123, 0.00080558, -0.00000113, 0.00000000],
+		[-6.27224654, -0.00080125, 0.00049111, 0.00080537, -0.00000113, 0.00000000],
+		[-6.27224705, -0.00080104, 0.00049098, 0.00080516, -0.00000113, 0.00000000],
+		[-6.27224757, -0.00080084, 0.00049085, 0.00080495, -0.00000113, 0.00000000],
+		[-6.27224808, -0.00080063, 0.00049072, 0.00080475, -0.00000113, 0.00000000],
+		[-6.27224860, -0.00080042, 0.00049060, 0.00080454, -0.00000113, 0.00000000],
+		[-6.27224911, -0.00080021, 0.00049047, 0.00080433, -0.00000113, 0.00000000],
+		[-6.27224962, -0.00080001, 0.00049034, 0.00080412, -0.00000113, 0.00000000],
+		[-6.27225014, -0.00079980, 0.00049022, 0.00080391, -0.00000113, 0.00000000],
+		[-6.27225065, -0.00079959, 0.00049009, 0.00080371, -0.00000113, 0.00000000],
+		[-6.27225116, -0.00079939, 0.00048996, 0.00080350, -0.00000113, 0.00000000],
+		[-6.27225168, -0.00079918, 0.00048984, 0.00080329, -0.00000113, 0.00000000],
+		[-6.27225219, -0.00079897, 0.00048971, 0.00080308, -0.00000113, 0.00000000],
+		[-6.27225270, -0.00079877, 0.00048958, 0.00080288, -0.00000113, 0.00000000],
+		[-6.27225321, -0.00079856, 0.00048946, 0.00080267, -0.00000113, 0.00000000],
+		[-6.27225372, -0.00079836, 0.00048933, 0.00080246, -0.00000113, 0.00000000],
+		[-6.27225423, -0.00079815, 0.00048921, 0.00080226, -0.00000113, 0.00000000],
+		[-6.27225474, -0.00079795, 0.00048908, 0.00080205, -0.00000113, 0.00000000],
+		[-6.27225525, -0.00079774, 0.00048895, 0.00080184, -0.00000113, 0.00000000],
+		[-6.27225576, -0.00079753, 0.00048883, 0.00080164, -0.00000113, 0.00000000],
+		[-6.27225627, -0.00079733, 0.00048870, 0.00080143, -0.00000113, 0.00000000],
+		[-6.27225678, -0.00079712, 0.00048857, 0.00080122, -0.00000113, 0.00000000],
+		[-6.27225729, -0.00079692, 0.00048845, 0.00080102, -0.00000113, 0.00000000],
+		[-6.27225780, -0.00079671, 0.00048832, 0.00080081, -0.00000113, 0.00000000],
+		[-6.27225830, -0.00079651, 0.00048820, 0.00080060, -0.00000113, 0.00000000],
+		[-6.27225881, -0.00079630, 0.00048807, 0.00080040, -0.00000113, 0.00000000],
+		[-6.27225932, -0.00079610, 0.00048795, 0.00080019, -0.00000113, 0.00000000],
+		[-6.27225983, -0.00079589, 0.00048782, 0.00079999, -0.00000113, 0.00000000],
+		[-6.27226033, -0.00079569, 0.00048769, 0.00079978, -0.00000113, 0.00000000],
+		[-6.27226084, -0.00079548, 0.00048757, 0.00079957, -0.00000113, 0.00000000],
+		[-6.27226134, -0.00079528, 0.00048744, 0.00079937, -0.00000113, 0.00000000],
+		[-6.27226185, -0.00079508, 0.00048732, 0.00079916, -0.00000113, 0.00000000],
+		[-6.27226235, -0.00079487, 0.00048719, 0.00079896, -0.00000113, 0.00000000],
+		[-6.27226286, -0.00079467, 0.00048707, 0.00079875, -0.00000113, 0.00000000],
+		[-6.27226336, -0.00079446, 0.00048694, 0.00079855, -0.00000113, 0.00000000],
+		[-6.27226387, -0.00079426, 0.00048682, 0.00079834, -0.00000113, 0.00000000],
+		[-6.27226437, -0.00079406, 0.00048669, 0.00079814, -0.00000113, 0.00000000],
+		[-6.27226488, -0.00079385, 0.00048657, 0.00079793, -0.00000113, 0.00000000],
+		[-6.27226538, -0.00079365, 0.00048644, 0.00079773, -0.00000113, 0.00000000],
+		[-6.27226588, -0.00079345, 0.00048632, 0.00079752, -0.00000113, 0.00000000],
+		[-6.27226639, -0.00079324, 0.00048619, 0.00079732, -0.00000113, 0.00000000],
+		[-6.27226689, -0.00079304, 0.00048607, 0.00079712, -0.00000113, 0.00000000],
+		[-6.27226739, -0.00079284, 0.00048594, 0.00079691, -0.00000113, 0.00000000],
+		[-6.27226789, -0.00079263, 0.00048582, 0.00079671, -0.00000113, 0.00000000],
+		[-6.27226839, -0.00079243, 0.00048570, 0.00079650, -0.00000113, 0.00000000],
+		[-6.27226889, -0.00079223, 0.00048557, 0.00079630, -0.00000113, 0.00000000],
+		[-6.27226939, -0.00079202, 0.00048545, 0.00079610, -0.00000113, 0.00000000],
+		[-6.27226990, -0.00079182, 0.00048532, 0.00079589, -0.00000113, 0.00000000],
+		[-6.27227040, -0.00079162, 0.00048520, 0.00079569, -0.00000113, 0.00000000],
+		[-6.27227090, -0.00079142, 0.00048507, 0.00079549, -0.00000113, 0.00000000],
+		[-6.27227139, -0.00079121, 0.00048495, 0.00079528, -0.00000113, 0.00000000],
+		[-6.27227189, -0.00079101, 0.00048483, 0.00079508, -0.00000113, 0.00000000],
+		[-6.27227239, -0.00079081, 0.00048470, 0.00079488, -0.00000113, 0.00000000],
+		[-6.27227289, -0.00079061, 0.00048458, 0.00079467, -0.00000113, 0.00000000],
+		[-6.27227339, -0.00079041, 0.00048445, 0.00079447, -0.00000113, 0.00000000],
+		[-6.27227389, -0.00079020, 0.00048433, 0.00079427, -0.00000113, 0.00000000],
+		[-6.27227439, -0.00079000, 0.00048421, 0.00079406, -0.00000113, 0.00000000],
+		[-6.27227488, -0.00078980, 0.00048408, 0.00079386, -0.00000113, 0.00000000],
+		[-6.27227538, -0.00078960, 0.00048396, 0.00079366, -0.00000113, 0.00000000],
+		[-6.27227588, -0.00078940, 0.00048384, 0.00079346, -0.00000113, 0.00000000],
+		[-6.27227637, -0.00078920, 0.00048371, 0.00079325, -0.00000113, 0.00000000],
+		[-6.27227687, -0.00078900, 0.00048359, 0.00079305, -0.00000113, 0.00000000],
+		[-6.27227736, -0.00078880, 0.00048347, 0.00079285, -0.00000113, 0.00000000],
+		[-6.27227786, -0.00078859, 0.00048334, 0.00079265, -0.00000113, 0.00000000],
+		[-6.27227836, -0.00078839, 0.00048322, 0.00079245, -0.00000113, 0.00000000],
+		[-6.27227885, -0.00078819, 0.00048310, 0.00079224, -0.00000113, 0.00000000],
+		[-6.27227934, -0.00078799, 0.00048297, 0.00079204, -0.00000113, 0.00000000],
+		[-6.27227984, -0.00078779, 0.00048285, 0.00079184, -0.00000113, 0.00000000],
+		[-6.27228033, -0.00078759, 0.00048273, 0.00079164, -0.00000113, 0.00000000],
+		[-6.27228083, -0.00078739, 0.00048260, 0.00079144, -0.00000113, 0.00000000],
+		[-6.27228132, -0.00078719, 0.00048248, 0.00079124, -0.00000113, 0.00000000],
+		[-6.27228181, -0.00078699, 0.00048236, 0.00079104, -0.00000113, 0.00000000],
+		[-6.27228231, -0.00078679, 0.00048224, 0.00079083, -0.00000113, 0.00000000],
+		[-6.27228280, -0.00078659, 0.00048211, 0.00079063, -0.00000113, 0.00000000],
+		[-6.27228329, -0.00078639, 0.00048199, 0.00079043, -0.00000113, 0.00000000],
+		[-6.27228378, -0.00078619, 0.00048187, 0.00079023, -0.00000113, 0.00000000],
+		[-6.27228427, -0.00078599, 0.00048175, 0.00079003, -0.00000113, 0.00000000],
+		[-6.27228476, -0.00078579, 0.00048162, 0.00078983, -0.00000113, 0.00000000],
+		[-6.27228526, -0.00078559, 0.00048150, 0.00078963, -0.00000113, 0.00000000],
+		[-6.27228575, -0.00078539, 0.00048138, 0.00078943, -0.00000113, 0.00000000],
+		[-6.27228624, -0.00078519, 0.00048126, 0.00078923, -0.00000113, 0.00000000],
+		[-6.27228673, -0.00078500, 0.00048113, 0.00078903, -0.00000113, 0.00000000],
+		[-6.27228722, -0.00078480, 0.00048101, 0.00078883, -0.00000113, 0.00000000],
+		[-6.27228771, -0.00078460, 0.00048089, 0.00078863, -0.00000113, 0.00000000],
+		[-6.27228819, -0.00078440, 0.00048077, 0.00078843, -0.00000113, 0.00000000],
+		[-6.27228868, -0.00078420, 0.00048065, 0.00078823, -0.00000113, 0.00000000],
+		[-6.27228917, -0.00078400, 0.00048052, 0.00078803, -0.00000113, 0.00000000],
+		[-6.27228966, -0.00078380, 0.00048040, 0.00078783, -0.00000113, 0.00000000],
+		[-6.27229015, -0.00078360, 0.00048028, 0.00078763, -0.00000113, 0.00000000],
+		[-6.27229064, -0.00078341, 0.00048016, 0.00078743, -0.00000113, 0.00000000],
+		[-6.27229112, -0.00078321, 0.00048004, 0.00078723, -0.00000113, 0.00000000],
+		[-6.27229161, -0.00078301, 0.00047992, 0.00078703, -0.00000113, 0.00000000],
+		[-6.27229210, -0.00078281, 0.00047979, 0.00078683, -0.00000113, 0.00000000],
+		[-6.27229258, -0.00078261, 0.00047967, 0.00078663, -0.00000113, 0.00000000],
+		[-6.27229307, -0.00078242, 0.00047955, 0.00078644, -0.00000113, 0.00000000],
+		[-6.27229356, -0.00078222, 0.00047943, 0.00078624, -0.00000113, 0.00000000],
+		[-6.27229404, -0.00078202, 0.00047931, 0.00078604, -0.00000113, 0.00000000],
+		[-6.27229453, -0.00078182, 0.00047919, 0.00078584, -0.00000113, 0.00000000],
+		[-6.27229501, -0.00078163, 0.00047907, 0.00078564, -0.00000113, 0.00000000],
+		[-6.27229550, -0.00078143, 0.00047895, 0.00078544, -0.00000113, 0.00000000],
+		[-6.27229598, -0.00078123, 0.00047882, 0.00078524, -0.00000113, 0.00000000],
+		[-6.27229646, -0.00078103, 0.00047870, 0.00078505, -0.00000113, 0.00000000],
+		[-6.27229695, -0.00078084, 0.00047858, 0.00078485, -0.00000113, 0.00000000],
+		[-6.27229743, -0.00078064, 0.00047846, 0.00078465, -0.00000113, 0.00000000],
+		[-6.27229791, -0.00078044, 0.00047834, 0.00078445, -0.00000113, 0.00000000],
+		[-6.27229840, -0.00078025, 0.00047822, 0.00078426, -0.00000113, 0.00000000],
+		[-6.27229888, -0.00078005, 0.00047810, 0.00078406, -0.00000113, 0.00000000],
+		[-6.27229936, -0.00077985, 0.00047798, 0.00078386, -0.00000113, 0.00000000],
+		[-6.27229984, -0.00077966, 0.00047786, 0.00078366, -0.00000113, 0.00000000],
+		[-6.27230033, -0.00077946, 0.00047774, 0.00078346, -0.00000113, 0.00000000],
+		[-6.27230081, -0.00077926, 0.00047762, 0.00078327, -0.00000113, 0.00000000],
+		[-6.27230129, -0.00077907, 0.00047750, 0.00078307, -0.00000113, 0.00000000],
+		[-6.27230177, -0.00077887, 0.00047738, 0.00078287, -0.00000113, 0.00000000],
+		[-6.27230225, -0.00077868, 0.00047726, 0.00078268, -0.00000113, 0.00000000],
+		[-6.27230273, -0.00077848, 0.00047714, 0.00078248, -0.00000113, 0.00000000],
+		[-6.27230321, -0.00077828, 0.00047702, 0.00078228, -0.00000113, 0.00000000],
+		[-6.27230369, -0.00077809, 0.00047690, 0.00078209, -0.00000113, 0.00000000],
+		[-6.27230417, -0.00077789, 0.00047678, 0.00078189, -0.00000113, 0.00000000],
+		[-6.27230465, -0.00077770, 0.00047666, 0.00078169, -0.00000113, 0.00000000],
+		[-6.27230513, -0.00077750, 0.00047654, 0.00078150, -0.00000113, 0.00000000],
+		[-6.27230561, -0.00077731, 0.00047642, 0.00078130, -0.00000113, 0.00000000],
+		[-6.27230609, -0.00077711, 0.00047630, 0.00078110, -0.00000113, 0.00000000],
+		[-6.27230656, -0.00077692, 0.00047618, 0.00078091, -0.00000113, 0.00000000],
+		[-6.27230704, -0.00077672, 0.00047606, 0.00078071, -0.00000113, 0.00000000],
+		[-6.27230752, -0.00077653, 0.00047594, 0.00078052, -0.00000113, 0.00000000],
+		[-6.27230800, -0.00077633, 0.00047582, 0.00078032, -0.00000113, 0.00000000],
+		[-6.27230847, -0.00077614, 0.00047570, 0.00078012, -0.00000113, 0.00000000],
+		[-6.27230895, -0.00077594, 0.00047558, 0.00077993, -0.00000113, 0.00000000],
+		[-6.27230943, -0.00077575, 0.00047546, 0.00077973, -0.00000113, 0.00000000],
+		[-6.27230990, -0.00077556, 0.00047534, 0.00077954, -0.00000113, 0.00000000],
+		[-6.27231038, -0.00077536, 0.00047522, 0.00077934, -0.00000113, 0.00000000],
+		[-6.27231085, -0.00077517, 0.00047510, 0.00077915, -0.00000113, 0.00000000],
+		[-6.27231133, -0.00077497, 0.00047498, 0.00077895, -0.00000113, 0.00000000],
+		[-6.27231180, -0.00077478, 0.00047487, 0.00077876, -0.00000113, 0.00000000],
+		[-6.27231228, -0.00077458, 0.00047475, 0.00077856, -0.00000113, 0.00000000],
+		[-6.27231275, -0.00077439, 0.00047463, 0.00077837, -0.00000113, 0.00000000],
+		[-6.27231323, -0.00077420, 0.00047451, 0.00077817, -0.00000113, 0.00000000],
+		[-6.27231370, -0.00077400, 0.00047439, 0.00077798, -0.00000113, 0.00000000],
+		[-6.27231417, -0.00077381, 0.00047427, 0.00077778, -0.00000113, 0.00000000],
+		[-6.27231465, -0.00077362, 0.00047415, 0.00077759, -0.00000113, 0.00000000],
+		[-6.27231512, -0.00077342, 0.00047403, 0.00077740, -0.00000113, 0.00000000],
+		[-6.27231559, -0.00077323, 0.00047392, 0.00077720, -0.00000113, 0.00000000],
+		[-6.27231607, -0.00077304, 0.00047380, 0.00077701, -0.00000113, 0.00000000],
+		[-6.27231654, -0.00077284, 0.00047368, 0.00077681, -0.00000113, 0.00000000],
+		[-6.27231701, -0.00077265, 0.00047356, 0.00077662, -0.00000113, 0.00000000],
+		[-6.27231748, -0.00077246, 0.00047344, 0.00077643, -0.00000113, 0.00000000],
+		[-6.27231795, -0.00077227, 0.00047332, 0.00077623, -0.00000113, 0.00000000],
+		[-6.27231842, -0.00077207, 0.00047321, 0.00077604, -0.00000113, 0.00000000],
+		[-6.27231889, -0.00077188, 0.00047309, 0.00077584, -0.00000113, 0.00000000],
+		[-6.27231936, -0.00077169, 0.00047297, 0.00077565, -0.00000113, 0.00000000],
+		[-6.27231984, -0.00077150, 0.00047285, 0.00077546, -0.00000113, 0.00000000],
+		[-6.27232031, -0.00077130, 0.00047273, 0.00077526, -0.00000113, 0.00000000],
+		[-6.27232077, -0.00077111, 0.00047262, 0.00077507, -0.00000113, 0.00000000],
+		[-6.27232124, -0.00077092, 0.00047250, 0.00077488, -0.00000113, 0.00000000],
+		[-6.27232171, -0.00077073, 0.00047238, 0.00077469, -0.00000113, 0.00000000],
+		[-6.27232218, -0.00077054, 0.00047226, 0.00077449, -0.00000113, 0.00000000],
+		[-6.27232265, -0.00077034, 0.00047215, 0.00077430, -0.00000113, 0.00000000],
+		[-6.27232312, -0.00077015, 0.00047203, 0.00077411, -0.00000113, 0.00000000],
+		[-6.27232359, -0.00076996, 0.00047191, 0.00077391, -0.00000113, 0.00000000],
+		[-6.27232406, -0.00076977, 0.00047179, 0.00077372, -0.00000113, 0.00000000],
+		[-6.27232452, -0.00076958, 0.00047168, 0.00077353, -0.00000113, 0.00000000],
+		[-6.27232499, -0.00076939, 0.00047156, 0.00077334, -0.00000113, 0.00000000],
+		[-6.27232546, -0.00076920, 0.00047144, 0.00077315, -0.00000113, 0.00000000],
+		[-6.27232592, -0.00076900, 0.00047132, 0.00077295, -0.00000113, 0.00000000],
+		[-6.27232639, -0.00076881, 0.00047121, 0.00077276, -0.00000113, 0.00000000],
+		[-6.27232686, -0.00076862, 0.00047109, 0.00077257, -0.00000113, 0.00000000],
+		[-6.27232732, -0.00076843, 0.00047097, 0.00077238, -0.00000113, 0.00000000],
+		[-6.27232779, -0.00076824, 0.00047086, 0.00077219, -0.00000113, 0.00000000],
+		[-6.27232825, -0.00076805, 0.00047074, 0.00077199, -0.00000113, 0.00000000],
+		[-6.27232872, -0.00076786, 0.00047062, 0.00077180, -0.00000113, 0.00000000],
+		[-6.27232918, -0.00076767, 0.00047050, 0.00077161, -0.00000113, 0.00000000],
+		[-6.27232965, -0.00076748, 0.00047039, 0.00077142, -0.00000113, 0.00000000],
+		[-6.27233011, -0.00076729, 0.00047027, 0.00077123, -0.00000113, 0.00000000],
+		[-6.27233058, -0.00076710, 0.00047015, 0.00077104, -0.00000113, 0.00000000],
+		[-6.27233104, -0.00076691, 0.00047004, 0.00077085, -0.00000113, 0.00000000],
+		[-6.27233150, -0.00076672, 0.00046992, 0.00077066, -0.00000113, 0.00000000],
+		[-6.27233197, -0.00076653, 0.00046981, 0.00077046, -0.00000113, 0.00000000],
+		[-6.27233243, -0.00076634, 0.00046969, 0.00077027, -0.00000113, 0.00000000],
+		[-6.27233289, -0.00076615, 0.00046957, 0.00077008, -0.00000113, 0.00000000],
+		[-6.27233336, -0.00076596, 0.00046946, 0.00076989, -0.00000113, 0.00000000],
+		[-6.27233382, -0.00076577, 0.00046934, 0.00076970, -0.00000113, 0.00000000],
+		[-6.27233428, -0.00076558, 0.00046922, 0.00076951, -0.00000113, 0.00000000],
+		[-6.27233474, -0.00076539, 0.00046911, 0.00076932, -0.00000113, 0.00000000],
+		[-6.27233520, -0.00076520, 0.00046899, 0.00076913, -0.00000113, 0.00000000],
+		[-6.27233566, -0.00076501, 0.00046888, 0.00076894, -0.00000113, 0.00000000],
+		[-6.27233612, -0.00076482, 0.00046876, 0.00076875, -0.00000113, 0.00000000],
+		[-6.27233658, -0.00076464, 0.00046864, 0.00076856, -0.00000113, 0.00000000],
+		[-6.27233705, -0.00076445, 0.00046853, 0.00076837, -0.00000113, 0.00000000],
+		[-6.27233751, -0.00076426, 0.00046841, 0.00076818, -0.00000113, 0.00000000],
+		[-6.27233797, -0.00076407, 0.00046830, 0.00076799, -0.00000113, 0.00000000],
+		[-6.27233843, -0.00076388, 0.00046818, 0.00076780, -0.00000113, 0.00000000],
+		[-6.27233888, -0.00076369, 0.00046806, 0.00076761, -0.00000113, 0.00000000],
+		[-6.27233934, -0.00076350, 0.00046795, 0.00076742, -0.00000113, 0.00000000],
+		[-6.27233980, -0.00076332, 0.00046783, 0.00076723, -0.00000113, 0.00000000],
+		[-6.27234026, -0.00076313, 0.00046772, 0.00076704, -0.00000113, 0.00000000],
+		[-6.27234072, -0.00076294, 0.00046760, 0.00076686, -0.00000113, 0.00000000],
+		[-6.27234118, -0.00076275, 0.00046749, 0.00076667, -0.00000113, 0.00000000],
+		[-6.27234163, -0.00076256, 0.00046737, 0.00076648, -0.00000113, 0.00000000],
+		[-6.27234209, -0.00076238, 0.00046726, 0.00076629, -0.00000113, 0.00000000],
+		[-6.27234255, -0.00076219, 0.00046714, 0.00076610, -0.00000113, 0.00000000],
+		[-6.27234301, -0.00076200, 0.00046703, 0.00076591, -0.00000113, 0.00000000],
+		[-6.27234346, -0.00076181, 0.00046691, 0.00076572, -0.00000113, 0.00000000],
+		[-6.27234392, -0.00076163, 0.00046680, 0.00076553, -0.00000113, 0.00000000],
+		[-6.27234438, -0.00076144, 0.00046668, 0.00076535, -0.00000113, 0.00000000],
+		[-6.27234483, -0.00076125, 0.00046657, 0.00076516, -0.00000113, 0.00000000],
+		[-6.27234529, -0.00076106, 0.00046645, 0.00076497, -0.00000113, 0.00000000],
+		[-6.27234574, -0.00076088, 0.00046634, 0.00076478, -0.00000113, 0.00000000],
+		[-6.27234620, -0.00076069, 0.00046622, 0.00076459, -0.00000113, 0.00000000],
+		[-6.27234665, -0.00076050, 0.00046611, 0.00076441, -0.00000113, 0.00000000],
+		[-6.27234711, -0.00076032, 0.00046599, 0.00076422, -0.00000113, 0.00000000],
+		[-6.27234756, -0.00076013, 0.00046588, 0.00076403, -0.00000113, 0.00000000],
+		[-6.27234802, -0.00075994, 0.00046576, 0.00076384, -0.00000113, 0.00000000],
+		[-6.27234847, -0.00075976, 0.00046565, 0.00076366, -0.00000113, 0.00000000],
+		[-6.27234892, -0.00075957, 0.00046554, 0.00076347, -0.00000113, 0.00000000],
+		[-6.27234938, -0.00075938, 0.00046542, 0.00076328, -0.00000113, 0.00000000],
+		[-6.27234983, -0.00075920, 0.00046531, 0.00076309, -0.00000113, 0.00000000],
+		[-6.27235028, -0.00075901, 0.00046519, 0.00076291, -0.00000113, 0.00000000],
+		[-6.27235074, -0.00075882, 0.00046508, 0.00076272, -0.00000113, 0.00000000],
+		[-6.27235119, -0.00075864, 0.00046496, 0.00076253, -0.00000113, 0.00000000],
+		[-6.27235164, -0.00075845, 0.00046485, 0.00076235, -0.00000113, 0.00000000],
+		[-6.27235209, -0.00075827, 0.00046474, 0.00076216, -0.00000113, 0.00000000],
+		[-6.27235255, -0.00075808, 0.00046462, 0.00076197, -0.00000113, 0.00000000],
+		[-6.27235300, -0.00075790, 0.00046451, 0.00076179, -0.00000113, 0.00000000],
+		[-6.27235345, -0.00075771, 0.00046440, 0.00076160, -0.00000113, 0.00000000],
+		[-6.27235390, -0.00075753, 0.00046428, 0.00076141, -0.00000113, 0.00000000],
+		[-6.27235435, -0.00075734, 0.00046417, 0.00076123, -0.00000113, 0.00000000],
+		[-6.27235480, -0.00075715, 0.00046405, 0.00076104, -0.00000113, 0.00000000],
+		[-6.27235525, -0.00075697, 0.00046394, 0.00076085, -0.00000113, 0.00000000],
+		[-6.27235570, -0.00075678, 0.00046383, 0.00076067, -0.00000113, 0.00000000],
+		[-6.27235615, -0.00075660, 0.00046371, 0.00076048, -0.00000113, 0.00000000],
+		[-6.27235660, -0.00075641, 0.00046360, 0.00076030, -0.00000113, 0.00000000],
+		[-6.27235705, -0.00075623, 0.00046349, 0.00076011, -0.00000113, 0.00000000],
+		[-6.27235750, -0.00075605, 0.00046337, 0.00075992, -0.00000113, 0.00000000],
+		[-6.27235795, -0.00075586, 0.00046326, 0.00075974, -0.00000113, 0.00000000],
+		[-6.27235840, -0.00075568, 0.00046315, 0.00075955, -0.00000113, 0.00000000],
+		[-6.27235884, -0.00075549, 0.00046303, 0.00075937, -0.00000113, 0.00000000],
+		[-6.27235929, -0.00075531, 0.00046292, 0.00075918, -0.00000113, 0.00000000],
+		[-6.27235974, -0.00075512, 0.00046281, 0.00075900, -0.00000113, 0.00000000],
+		[-6.27236019, -0.00075494, 0.00046269, 0.00075881, -0.00000113, 0.00000000],
+		[-6.27236063, -0.00075475, 0.00046258, 0.00075863, -0.00000113, 0.00000000],
+		[-6.27236108, -0.00075457, 0.00046247, 0.00075844, -0.00000113, 0.00000000],
+		[-6.27236153, -0.00075439, 0.00046236, 0.00075826, -0.00000113, 0.00000000],
+		[-6.27236197, -0.00075420, 0.00046224, 0.00075807, -0.00000113, 0.00000000],
+		[-6.27236242, -0.00075402, 0.00046213, 0.00075789, -0.00000113, 0.00000000],
+		[-6.27236287, -0.00075384, 0.00046202, 0.00075770, -0.00000113, 0.00000000],
+		[-6.27236331, -0.00075365, 0.00046191, 0.00075752, -0.00000113, 0.00000000],
+		[-6.27236376, -0.00075347, 0.00046179, 0.00075733, -0.00000113, 0.00000000],
+		[-6.27236420, -0.00075329, 0.00046168, 0.00075715, -0.00000113, 0.00000000],
+		[-6.27236465, -0.00075310, 0.00046157, 0.00075697, -0.00000113, 0.00000000],
+		[-6.27236509, -0.00075292, 0.00046146, 0.00075678, -0.00000113, 0.00000000],
+		[-6.27236554, -0.00075274, 0.00046134, 0.00075660, -0.00000113, 0.00000000],
+		[-6.27236598, -0.00075255, 0.00046123, 0.00075641, -0.00000113, 0.00000000],
+		[-6.27236643, -0.00075237, 0.00046112, 0.00075623, -0.00000113, 0.00000000],
+		[-6.27236687, -0.00075219, 0.00046101, 0.00075605, -0.00000113, 0.00000000],
+		[-6.27236731, -0.00075200, 0.00046089, 0.00075586, -0.00000113, 0.00000000],
+		[-6.27236776, -0.00075182, 0.00046078, 0.00075568, -0.00000113, 0.00000000],
+		[-6.27236820, -0.00075164, 0.00046067, 0.00075550, -0.00000113, 0.00000000],
+		[-6.27236864, -0.00075146, 0.00046056, 0.00075531, -0.00000113, 0.00000000],
+		[-6.27236909, -0.00075127, 0.00046045, 0.00075513, -0.00000113, 0.00000000],
+		[-6.27236953, -0.00075109, 0.00046034, 0.00075495, -0.00000113, 0.00000000],
+		[-6.27236997, -0.00075091, 0.00046022, 0.00075476, -0.00000113, 0.00000000],
+		[-6.27237041, -0.00075073, 0.00046011, 0.00075458, -0.00000113, 0.00000000],
+		[-6.27237085, -0.00075055, 0.00046000, 0.00075440, -0.00000113, 0.00000000],
+		[-6.27237130, -0.00075036, 0.00045989, 0.00075421, -0.00000113, 0.00000000],
+		[-6.27237174, -0.00075018, 0.00045978, 0.00075403, -0.00000113, 0.00000000],
+		[-6.27237218, -0.00075000, 0.00045967, 0.00075385, -0.00000113, 0.00000000],
+		[-6.27237262, -0.00074982, 0.00045955, 0.00075366, -0.00000113, 0.00000000],
+		[-6.27237306, -0.00074964, 0.00045944, 0.00075348, -0.00000113, 0.00000000],
+		[-6.27237350, -0.00074946, 0.00045933, 0.00075330, -0.00000113, 0.00000000],
+		[-6.27237394, -0.00074927, 0.00045922, 0.00075312, -0.00000113, 0.00000000],
+		[-6.27237438, -0.00074909, 0.00045911, 0.00075294, -0.00000113, 0.00000000],
+		[-6.27237482, -0.00074891, 0.00045900, 0.00075275, -0.00000113, 0.00000000],
+		[-6.27237526, -0.00074873, 0.00045889, 0.00075257, -0.00000113, 0.00000000],
+		[-6.27237570, -0.00074855, 0.00045878, 0.00075239, -0.00000113, 0.00000000],
+		[-6.27237614, -0.00074837, 0.00045866, 0.00075221, -0.00000113, 0.00000000],
+		[-6.27237657, -0.00074819, 0.00045855, 0.00075203, -0.00000113, 0.00000000],
+		[-6.27237701, -0.00074801, 0.00045844, 0.00075184, -0.00000113, 0.00000000],
+		[-6.27237745, -0.00074783, 0.00045833, 0.00075166, -0.00000113, 0.00000000],
+		[-6.27237789, -0.00074765, 0.00045822, 0.00075148, -0.00000113, 0.00000000],
+		[-6.27237833, -0.00074747, 0.00045811, 0.00075130, -0.00000113, 0.00000000],
+		[-6.27237876, -0.00074728, 0.00045800, 0.00075112, -0.00000113, 0.00000000],
+		[-6.27237920, -0.00074710, 0.00045789, 0.00075094, -0.00000113, 0.00000000],
+		[-6.27237964, -0.00074692, 0.00045778, 0.00075075, -0.00000113, 0.00000000],
+		[-6.27238007, -0.00074674, 0.00045767, 0.00075057, -0.00000113, 0.00000000],
+		[-6.27238051, -0.00074656, 0.00045756, 0.00075039, -0.00000113, 0.00000000],
+		[-6.27238095, -0.00074638, 0.00045745, 0.00075021, -0.00000113, 0.00000000],
+		[-6.27238138, -0.00074620, 0.00045734, 0.00075003, -0.00000113, 0.00000000],
+		[-6.27238182, -0.00074602, 0.00045723, 0.00074985, -0.00000113, 0.00000000],
+		[-6.27238225, -0.00074584, 0.00045712, 0.00074967, -0.00000113, 0.00000000],
+		[-6.27238269, -0.00074566, 0.00045701, 0.00074949, -0.00000113, 0.00000000],
+		[-6.27238312, -0.00074548, 0.00045690, 0.00074931, -0.00000113, 0.00000000],
+		[-6.27238356, -0.00074531, 0.00045679, 0.00074913, -0.00000113, 0.00000000],
+		[-6.27238399, -0.00074513, 0.00045668, 0.00074895, -0.00000113, 0.00000000],
+		[-6.27238443, -0.00074495, 0.00045657, 0.00074877, -0.00000113, 0.00000000],
+		[-6.27238486, -0.00074477, 0.00045646, 0.00074859, -0.00000113, 0.00000000],
+		[-6.27238530, -0.00074459, 0.00045635, 0.00074841, -0.00000113, 0.00000000],
+		[-6.27238573, -0.00074441, 0.00045624, 0.00074823, -0.00000113, 0.00000000],
+		[-6.27238616, -0.00074423, 0.00045613, 0.00074805, -0.00000113, 0.00000000],
+		[-6.27238660, -0.00074405, 0.00045602, 0.00074787, -0.00000113, 0.00000000],
+		[-6.27238703, -0.00074387, 0.00045591, 0.00074769, -0.00000113, 0.00000000],
+		[-6.27238746, -0.00074369, 0.00045580, 0.00074751, -0.00000113, 0.00000000],
+		[-6.27238790, -0.00074352, 0.00045569, 0.00074733, -0.00000113, 0.00000000],
+		[-6.27238833, -0.00074334, 0.00045558, 0.00074715, -0.00000113, 0.00000000],
+		[-6.27238876, -0.00074316, 0.00045547, 0.00074697, -0.00000113, 0.00000000],
+		[-6.27238919, -0.00074298, 0.00045536, 0.00074679, -0.00000113, 0.00000000],
+		[-6.27238962, -0.00074280, 0.00045525, 0.00074661, -0.00000113, 0.00000000],
+		[-6.27239006, -0.00074262, 0.00045514, 0.00074643, -0.00000113, 0.00000000],
+		[-6.27239049, -0.00074245, 0.00045503, 0.00074625, -0.00000113, 0.00000000],
+		[-6.27239092, -0.00074227, 0.00045492, 0.00074607, -0.00000113, 0.00000000],
+		[-6.27239135, -0.00074209, 0.00045481, 0.00074589, -0.00000113, 0.00000000],
+		[-6.27239178, -0.00074191, 0.00045470, 0.00074572, -0.00000113, 0.00000000],
+		[-6.27239221, -0.00074173, 0.00045459, 0.00074554, -0.00000113, 0.00000000],
+		[-6.27239264, -0.00074156, 0.00045449, 0.00074536, -0.00000113, 0.00000000],
+		[-6.27239307, -0.00074138, 0.00045438, 0.00074518, -0.00000113, 0.00000000],
+		[-6.27239350, -0.00074120, 0.00045427, 0.00074500, -0.00000113, 0.00000000],
+		[-6.27239393, -0.00074102, 0.00045416, 0.00074482, -0.00000113, 0.00000000],
+		[-6.27239436, -0.00074085, 0.00045405, 0.00074464, -0.00000113, 0.00000000],
+		[-6.27239479, -0.00074067, 0.00045394, 0.00074447, -0.00000113, 0.00000000],
+		[-6.27239522, -0.00074049, 0.00045383, 0.00074429, -0.00000113, 0.00000000],
+		[-6.27239564, -0.00074031, 0.00045372, 0.00074411, -0.00000113, 0.00000000],
+		[-6.27239607, -0.00074014, 0.00045362, 0.00074393, -0.00000113, 0.00000000],
+		[-6.27239650, -0.00073996, 0.00045351, 0.00074375, -0.00000113, 0.00000000],
+		[-6.27239693, -0.00073978, 0.00045340, 0.00074358, -0.00000112, 0.00000000],
+		[-6.27239736, -0.00073961, 0.00045329, 0.00074340, -0.00000112, 0.00000000],
+		[-6.27239778, -0.00073943, 0.00045318, 0.00074322, -0.00000112, 0.00000000],
+		[-6.27239821, -0.00073925, 0.00045307, 0.00074304, -0.00000112, 0.00000000],
+		[-6.27239864, -0.00073908, 0.00045296, 0.00074287, -0.00000112, 0.00000000],
+		[-6.27239906, -0.00073890, 0.00045286, 0.00074269, -0.00000112, 0.00000000],
+		[-6.27239949, -0.00073872, 0.00045275, 0.00074251, -0.00000112, 0.00000000],
+		[-6.27239992, -0.00073855, 0.00045264, 0.00074233, -0.00000112, 0.00000000],
+		[-6.27240034, -0.00073837, 0.00045253, 0.00074216, -0.00000112, 0.00000000],
+		[-6.27240077, -0.00073820, 0.00045242, 0.00074198, -0.00000112, 0.00000000],
+		[-6.27240119, -0.00073802, 0.00045232, 0.00074180, -0.00000112, 0.00000000],
+		[-6.27240162, -0.00073784, 0.00045221, 0.00074163, -0.00000112, 0.00000000],
+		[-6.27240205, -0.00073767, 0.00045210, 0.00074145, -0.00000112, 0.00000000],
+		[-6.27240247, -0.00073749, 0.00045199, 0.00074127, -0.00000112, 0.00000000],
+		[-6.27240289, -0.00073732, 0.00045188, 0.00074110, -0.00000112, 0.00000000],
+		[-6.27240332, -0.00073714, 0.00045178, 0.00074092, -0.00000112, 0.00000000],
+		[-6.27240374, -0.00073697, 0.00045167, 0.00074074, -0.00000112, 0.00000000],
+		[-6.27240417, -0.00073679, 0.00045156, 0.00074057, -0.00000112, 0.00000000],
+		[-6.27240459, -0.00073662, 0.00045145, 0.00074039, -0.00000112, 0.00000000],
+		[-6.27240502, -0.00073644, 0.00045135, 0.00074022, -0.00000112, 0.00000000],
+		[-6.27240544, -0.00073626, 0.00045124, 0.00074004, -0.00000112, 0.00000000],
+		[-6.27240586, -0.00073609, 0.00045113, 0.00073986, -0.00000112, 0.00000000],
+		[-6.27240628, -0.00073591, 0.00045102, 0.00073969, -0.00000112, 0.00000000],
+		[-6.27240671, -0.00073574, 0.00045092, 0.00073951, -0.00000112, 0.00000000],
+		[-6.27240713, -0.00073556, 0.00045081, 0.00073934, -0.00000112, 0.00000000],
+		[-6.27240755, -0.00073539, 0.00045070, 0.00073916, -0.00000112, 0.00000000],
+		[-6.27240797, -0.00073522, 0.00045060, 0.00073898, -0.00000112, 0.00000000],
+		[-6.27240840, -0.00073504, 0.00045049, 0.00073881, -0.00000112, 0.00000000],
+		[-6.27240882, -0.00073487, 0.00045038, 0.00073863, -0.00000112, 0.00000000],
+		[-6.27240924, -0.00073469, 0.00045027, 0.00073846, -0.00000112, 0.00000000],
+		[-6.27240966, -0.00073452, 0.00045017, 0.00073828, -0.00000112, 0.00000000],
+		[-6.27241008, -0.00073434, 0.00045006, 0.00073811, -0.00000112, 0.00000000],
+		[-6.27241050, -0.00073417, 0.00044995, 0.00073793, -0.00000112, 0.00000000],
+		[-6.27241092, -0.00073400, 0.00044985, 0.00073776, -0.00000112, 0.00000000],
+		[-6.27241134, -0.00073382, 0.00044974, 0.00073758, -0.00000112, 0.00000000],
+		[-6.27241176, -0.00073365, 0.00044963, 0.00073741, -0.00000112, 0.00000000],
+		[-6.27241218, -0.00073347, 0.00044953, 0.00073723, -0.00000112, 0.00000000],
+		[-6.27241260, -0.00073330, 0.00044942, 0.00073706, -0.00000112, 0.00000000],
+		[-6.27241302, -0.00073313, 0.00044931, 0.00073688, -0.00000112, 0.00000000],
+		[-6.27241344, -0.00073295, 0.00044921, 0.00073671, -0.00000112, 0.00000000],
+		[-6.27241386, -0.00073278, 0.00044910, 0.00073653, -0.00000112, 0.00000000],
+		[-6.27241428, -0.00073261, 0.00044899, 0.00073636, -0.00000112, 0.00000000],
+		[-6.27241470, -0.00073243, 0.00044889, 0.00073619, -0.00000112, 0.00000000],
+		[-6.27241512, -0.00073226, 0.00044878, 0.00073601, -0.00000112, 0.00000000],
+		[-6.27241554, -0.00073209, 0.00044868, 0.00073584, -0.00000112, 0.00000000],
+		[-6.27241595, -0.00073191, 0.00044857, 0.00073566, -0.00000112, 0.00000000],
+		[-6.27241637, -0.00073174, 0.00044846, 0.00073549, -0.00000112, 0.00000000],
+		[-6.27241679, -0.00073157, 0.00044836, 0.00073532, -0.00000112, 0.00000000],
+		[-6.27241721, -0.00073139, 0.00044825, 0.00073514, -0.00000112, 0.00000000],
+		[-6.27241762, -0.00073122, 0.00044815, 0.00073497, -0.00000112, 0.00000000],
+		[-6.27241804, -0.00073105, 0.00044804, 0.00073479, -0.00000112, 0.00000000],
+		[-6.27241846, -0.00073088, 0.00044793, 0.00073462, -0.00000112, 0.00000000],
+		[-6.27241887, -0.00073070, 0.00044783, 0.00073445, -0.00000112, 0.00000000],
+		[-6.27241929, -0.00073053, 0.00044772, 0.00073427, -0.00000112, 0.00000000],
+		[-6.27241971, -0.00073036, 0.00044762, 0.00073410, -0.00000112, 0.00000000],
+		[-6.27242012, -0.00073019, 0.00044751, 0.00073393, -0.00000112, 0.00000000],
+		[-6.27242054, -0.00073001, 0.00044741, 0.00073376, -0.00000112, 0.00000000],
+		[-6.27242095, -0.00072984, 0.00044730, 0.00073358, -0.00000112, 0.00000000],
+		[-6.27242137, -0.00072967, 0.00044719, 0.00073341, -0.00000112, 0.00000000],
+		[-6.27242178, -0.00072950, 0.00044709, 0.00073324, -0.00000112, 0.00000000],
+		[-6.27242220, -0.00072933, 0.00044698, 0.00073306, -0.00000112, 0.00000000],
+		[-6.27242261, -0.00072915, 0.00044688, 0.00073289, -0.00000112, 0.00000000],
+		[-6.27242303, -0.00072898, 0.00044677, 0.00073272, -0.00000112, 0.00000000],
+		[-6.27242344, -0.00072881, 0.00044667, 0.00073255, -0.00000112, 0.00000000],
+		[-6.27242386, -0.00072864, 0.00044656, 0.00073237, -0.00000112, 0.00000000],
+		[-6.27242427, -0.00072847, 0.00044646, 0.00073220, -0.00000112, 0.00000000],
+		[-6.27242468, -0.00072830, 0.00044635, 0.00073203, -0.00000112, 0.00000000],
+		[-6.27242510, -0.00072813, 0.00044625, 0.00073186, -0.00000112, 0.00000000],
+		[-6.27242551, -0.00072795, 0.00044614, 0.00073168, -0.00000112, 0.00000000],
+		[-6.27242592, -0.00072778, 0.00044604, 0.00073151, -0.00000112, 0.00000000],
+		[-6.27242634, -0.00072761, 0.00044593, 0.00073134, -0.00000112, 0.00000000],
+		[-6.27242675, -0.00072744, 0.00044583, 0.00073117, -0.00000112, 0.00000000],
+		[-6.27242716, -0.00072727, 0.00044572, 0.00073100, -0.00000112, 0.00000000],
+		[-6.27242757, -0.00072710, 0.00044562, 0.00073082, -0.00000112, 0.00000000],
+		[-6.27242798, -0.00072693, 0.00044551, 0.00073065, -0.00000112, 0.00000000],
+		[-6.27242840, -0.00072676, 0.00044541, 0.00073048, -0.00000112, 0.00000000],
+		[-6.27242881, -0.00072659, 0.00044530, 0.00073031, -0.00000112, 0.00000000],
+		[-6.27242922, -0.00072642, 0.00044520, 0.00073014, -0.00000112, 0.00000000],
+		[-6.27242963, -0.00072625, 0.00044509, 0.00072997, -0.00000112, 0.00000000],
+		[-6.27243004, -0.00072608, 0.00044499, 0.00072980, -0.00000112, 0.00000000],
+		[-6.27243045, -0.00072591, 0.00044488, 0.00072962, -0.00000112, 0.00000000],
+		[-6.27243086, -0.00072574, 0.00044478, 0.00072945, -0.00000112, 0.00000000],
+		[-6.27243127, -0.00072557, 0.00044468, 0.00072928, -0.00000112, 0.00000000],
+		[-6.27243168, -0.00072540, 0.00044457, 0.00072911, -0.00000112, 0.00000000],
+		[-6.27243209, -0.00072523, 0.00044447, 0.00072894, -0.00000112, 0.00000000],
+		[-6.27243250, -0.00072506, 0.00044436, 0.00072877, -0.00000112, 0.00000000],
+		[-6.27243291, -0.00072489, 0.00044426, 0.00072860, -0.00000112, 0.00000000],
+		[-6.27243332, -0.00072472, 0.00044416, 0.00072843, -0.00000112, 0.00000000],
+		[-6.27243373, -0.00072455, 0.00044405, 0.00072826, -0.00000112, 0.00000000],
+		[-6.27243414, -0.00072438, 0.00044395, 0.00072809, -0.00000112, 0.00000000],
+		[-6.27243455, -0.00072421, 0.00044384, 0.00072792, -0.00000112, 0.00000000],
+		[-6.27243496, -0.00072404, 0.00044374, 0.00072775, -0.00000112, 0.00000000],
+		[-6.27243536, -0.00072387, 0.00044364, 0.00072758, -0.00000112, 0.00000000],
+		[-6.27243577, -0.00072370, 0.00044353, 0.00072741, -0.00000112, 0.00000000],
+		[-6.27243618, -0.00072353, 0.00044343, 0.00072724, -0.00000112, 0.00000000],
+		[-6.27243659, -0.00072336, 0.00044332, 0.00072707, -0.00000112, 0.00000000],
+		[-6.27243700, -0.00072319, 0.00044322, 0.00072690, -0.00000112, 0.00000000],
+		[-6.27243740, -0.00072302, 0.00044312, 0.00072673, -0.00000112, 0.00000000],
+		[-6.27243781, -0.00072285, 0.00044301, 0.00072656, -0.00000112, 0.00000000],
+		[-6.27243822, -0.00072269, 0.00044291, 0.00072639, -0.00000112, 0.00000000],
+		[-6.27243862, -0.00072252, 0.00044281, 0.00072622, -0.00000112, 0.00000000],
+		[-6.27243903, -0.00072235, 0.00044270, 0.00072605, -0.00000112, 0.00000000],
+		[-6.27243944, -0.00072218, 0.00044260, 0.00072588, -0.00000112, 0.00000000],
+		[-6.27243984, -0.00072201, 0.00044250, 0.00072571, -0.00000112, 0.00000000],
+		[-6.27244025, -0.00072184, 0.00044239, 0.00072554, -0.00000112, 0.00000000],
+		[-6.27244065, -0.00072167, 0.00044229, 0.00072537, -0.00000112, 0.00000000],
+		[-6.27244106, -0.00072151, 0.00044219, 0.00072520, -0.00000112, 0.00000000],
+		[-6.27244146, -0.00072134, 0.00044208, 0.00072503, -0.00000112, 0.00000000],
+		[-6.27244187, -0.00072117, 0.00044198, 0.00072486, -0.00000112, 0.00000000],
+		[-6.27244227, -0.00072100, 0.00044188, 0.00072470, -0.00000112, 0.00000000],
+		[-6.27244268, -0.00072083, 0.00044177, 0.00072453, -0.00000112, 0.00000000],
+		[-6.27244308, -0.00072067, 0.00044167, 0.00072436, -0.00000112, 0.00000000],
+		[-6.27244349, -0.00072050, 0.00044157, 0.00072419, -0.00000112, 0.00000000],
+		[-6.27244389, -0.00072033, 0.00044147, 0.00072402, -0.00000112, 0.00000000],
+		[-6.27244429, -0.00072016, 0.00044136, 0.00072385, -0.00000112, 0.00000000],
+		[-6.27244470, -0.00072000, 0.00044126, 0.00072368, -0.00000112, 0.00000000],
+		[-6.27244510, -0.00071983, 0.00044116, 0.00072352, -0.00000112, 0.00000000],
+		[-6.27244550, -0.00071966, 0.00044105, 0.00072335, -0.00000112, 0.00000000],
+		[-6.27244591, -0.00071949, 0.00044095, 0.00072318, -0.00000112, 0.00000000],
+		[-6.27244631, -0.00071933, 0.00044085, 0.00072301, -0.00000112, 0.00000000],
+		[-6.27244671, -0.00071916, 0.00044075, 0.00072284, -0.00000112, 0.00000000],
+		[-6.27244712, -0.00071899, 0.00044064, 0.00072268, -0.00000112, 0.00000000],
+		[-6.27244752, -0.00071883, 0.00044054, 0.00072251, -0.00000112, 0.00000000],
+		[-6.27244792, -0.00071866, 0.00044044, 0.00072234, -0.00000112, 0.00000000],
+		[-6.27244832, -0.00071849, 0.00044034, 0.00072217, -0.00000112, 0.00000000],
+		[-6.27244872, -0.00071833, 0.00044024, 0.00072200, -0.00000112, 0.00000000],
+		[-6.27244912, -0.00071816, 0.00044013, 0.00072184, -0.00000112, 0.00000000],
+		[-6.27244953, -0.00071799, 0.00044003, 0.00072167, -0.00000112, 0.00000000],
+		[-6.27244993, -0.00071783, 0.00043993, 0.00072150, -0.00000112, 0.00000000],
+		[-6.27245033, -0.00071766, 0.00043983, 0.00072133, -0.00000112, 0.00000000],
+		[-6.27245073, -0.00071749, 0.00043972, 0.00072117, -0.00000112, 0.00000000],
+		[-6.27245113, -0.00071733, 0.00043962, 0.00072100, -0.00000112, 0.00000000],
+		[-6.27245153, -0.00071716, 0.00043952, 0.00072083, -0.00000112, 0.00000000],
+		[-6.27245193, -0.00071699, 0.00043942, 0.00072067, -0.00000112, 0.00000000],
+		[-6.27245233, -0.00071683, 0.00043932, 0.00072050, -0.00000112, 0.00000000],
+		[-6.27245273, -0.00071666, 0.00043922, 0.00072033, -0.00000112, 0.00000000],
+		[-6.27245313, -0.00071650, 0.00043911, 0.00072017, -0.00000112, 0.00000000],
+		[-6.27245353, -0.00071633, 0.00043901, 0.00072000, -0.00000112, 0.00000000],
+		[-6.27245393, -0.00071617, 0.00043891, 0.00071983, -0.00000112, 0.00000000],
+		[-6.27245432, -0.00071600, 0.00043881, 0.00071967, -0.00000112, 0.00000000],
+		[-6.27245472, -0.00071583, 0.00043871, 0.00071950, -0.00000112, 0.00000000],
+		[-6.27245512, -0.00071567, 0.00043861, 0.00071933, -0.00000112, 0.00000000],
+		[-6.27245552, -0.00071550, 0.00043850, 0.00071917, -0.00000112, 0.00000000],
+		[-6.27245592, -0.00071534, 0.00043840, 0.00071900, -0.00000112, 0.00000000],
+		[-6.27245632, -0.00071517, 0.00043830, 0.00071883, -0.00000112, 0.00000000],
+		[-6.27245671, -0.00071501, 0.00043820, 0.00071867, -0.00000112, 0.00000000],
+		[-6.27245711, -0.00071484, 0.00043810, 0.00071850, -0.00000112, 0.00000000],
+		[-6.27245751, -0.00071468, 0.00043800, 0.00071834, -0.00000112, 0.00000000],
+		[-6.27245791, -0.00071451, 0.00043790, 0.00071817, -0.00000112, 0.00000000],
+		[-6.27245830, -0.00071435, 0.00043779, 0.00071800, -0.00000112, 0.00000000],
+		[-6.27245870, -0.00071418, 0.00043769, 0.00071784, -0.00000112, 0.00000000],
+		[-6.27245910, -0.00071402, 0.00043759, 0.00071767, -0.00000112, 0.00000000],
+		[-6.27245949, -0.00071385, 0.00043749, 0.00071751, -0.00000112, 0.00000000],
+		[-6.27245989, -0.00071369, 0.00043739, 0.00071734, -0.00000112, 0.00000000],
+		[-6.27246028, -0.00071352, 0.00043729, 0.00071718, -0.00000112, 0.00000000],
+		[-6.27246068, -0.00071336, 0.00043719, 0.00071701, -0.00000112, 0.00000000],
+		[-6.27246108, -0.00071320, 0.00043709, 0.00071685, -0.00000112, 0.00000000],
+		[-6.27246147, -0.00071303, 0.00043699, 0.00071668, -0.00000112, 0.00000000],
+		[-6.27246187, -0.00071287, 0.00043689, 0.00071652, -0.00000112, 0.00000000],
+		[-6.27246226, -0.00071270, 0.00043679, 0.00071635, -0.00000112, 0.00000000],
+		[-6.27246266, -0.00071254, 0.00043669, 0.00071619, -0.00000112, 0.00000000],
+		[-6.27246305, -0.00071237, 0.00043658, 0.00071602, -0.00000112, 0.00000000],
+		[-6.27246345, -0.00071221, 0.00043648, 0.00071586, -0.00000112, 0.00000000],
+		[-6.27246384, -0.00071205, 0.00043638, 0.00071569, -0.00000112, 0.00000000],
+		[-6.27246423, -0.00071188, 0.00043628, 0.00071553, -0.00000112, 0.00000000],
+		[-6.27246463, -0.00071172, 0.00043618, 0.00071536, -0.00000112, 0.00000000],
+		[-6.27246502, -0.00071156, 0.00043608, 0.00071520, -0.00000112, 0.00000000],
+		[-6.27246541, -0.00071139, 0.00043598, 0.00071503, -0.00000112, 0.00000000],
+		[-6.27246581, -0.00071123, 0.00043588, 0.00071487, -0.00000112, 0.00000000],
+		[-6.27246620, -0.00071107, 0.00043578, 0.00071471, -0.00000112, 0.00000000],
+		[-6.27246659, -0.00071090, 0.00043568, 0.00071454, -0.00000112, 0.00000000],
+		[-6.27246699, -0.00071074, 0.00043558, 0.00071438, -0.00000112, 0.00000000],
+		[-6.27246738, -0.00071058, 0.00043548, 0.00071421, -0.00000112, 0.00000000],
+		[-6.27246777, -0.00071041, 0.00043538, 0.00071405, -0.00000112, 0.00000000],
+		[-6.27246816, -0.00071025, 0.00043528, 0.00071389, -0.00000112, 0.00000000],
+		[-6.27246856, -0.00071009, 0.00043518, 0.00071372, -0.00000112, 0.00000000],
+		[-6.27246895, -0.00070992, 0.00043508, 0.00071356, -0.00000112, 0.00000000],
+		[-6.27246934, -0.00070976, 0.00043498, 0.00071339, -0.00000112, 0.00000000],
+		[-6.27246973, -0.00070960, 0.00043488, 0.00071323, -0.00000112, 0.00000000],
+		[-6.27247012, -0.00070944, 0.00043478, 0.00071307, -0.00000112, 0.00000000],
+		[-6.27247051, -0.00070927, 0.00043468, 0.00071290, -0.00000112, 0.00000000],
+		[-6.27247090, -0.00070911, 0.00043458, 0.00071274, -0.00000112, 0.00000000],
+		[-6.27247129, -0.00070895, 0.00043448, 0.00071258, -0.00000112, 0.00000000],
+		[-6.27247168, -0.00070879, 0.00043438, 0.00071241, -0.00000112, 0.00000000],
+		[-6.27247207, -0.00070862, 0.00043428, 0.00071225, -0.00000112, 0.00000000],
+		[-6.27247246, -0.00070846, 0.00043418, 0.00071209, -0.00000112, 0.00000000],
+		[-6.27247285, -0.00070830, 0.00043409, 0.00071193, -0.00000112, 0.00000000],
+		[-6.27247324, -0.00070814, 0.00043399, 0.00071176, -0.00000112, 0.00000000],
+		[-6.27247363, -0.00070798, 0.00043389, 0.00071160, -0.00000112, 0.00000000],
+		[-6.27247402, -0.00070781, 0.00043379, 0.00071144, -0.00000112, 0.00000000],
+		[-6.27247441, -0.00070765, 0.00043369, 0.00071127, -0.00000112, 0.00000000],
+		[-6.27247480, -0.00070749, 0.00043359, 0.00071111, -0.00000112, 0.00000000],
+		[-6.27247519, -0.00070733, 0.00043349, 0.00071095, -0.00000112, 0.00000000],
+		[-6.27247558, -0.00070717, 0.00043339, 0.00071079, -0.00000112, 0.00000000],
+		[-6.27247597, -0.00070701, 0.00043329, 0.00071062, -0.00000112, 0.00000000],
+		[-6.27247636, -0.00070684, 0.00043319, 0.00071046, -0.00000112, 0.00000000],
+		[-6.27247674, -0.00070668, 0.00043309, 0.00071030, -0.00000112, 0.00000000],
+		[-6.27247713, -0.00070652, 0.00043299, 0.00071014, -0.00000112, 0.00000000],
+		[-6.27247752, -0.00070636, 0.00043290, 0.00070998, -0.00000112, 0.00000000],
+		[-6.27247791, -0.00070620, 0.00043280, 0.00070981, -0.00000112, 0.00000000],
+		[-6.27247829, -0.00070604, 0.00043270, 0.00070965, -0.00000112, 0.00000000],
+		[-6.27247868, -0.00070588, 0.00043260, 0.00070949, -0.00000112, 0.00000000],
+		[-6.27247907, -0.00070572, 0.00043250, 0.00070933, -0.00000112, 0.00000000],
+		[-6.27247945, -0.00070556, 0.00043240, 0.00070917, -0.00000112, 0.00000000],
+		[-6.27247984, -0.00070539, 0.00043230, 0.00070900, -0.00000112, 0.00000000],
+		[-6.27248023, -0.00070523, 0.00043220, 0.00070884, -0.00000112, 0.00000000],
+		[-6.27248061, -0.00070507, 0.00043211, 0.00070868, -0.00000112, 0.00000000],
+		[-6.27248100, -0.00070491, 0.00043201, 0.00070852, -0.00000112, 0.00000000],
+		[-6.27248139, -0.00070475, 0.00043191, 0.00070836, -0.00000112, 0.00000000],
+		[-6.27248177, -0.00070459, 0.00043181, 0.00070820, -0.00000112, 0.00000000],
+		[-6.27248216, -0.00070443, 0.00043171, 0.00070804, -0.00000112, 0.00000000],
+		[-6.27248254, -0.00070427, 0.00043161, 0.00070788, -0.00000112, 0.00000000],
+		[-6.27248293, -0.00070411, 0.00043152, 0.00070771, -0.00000112, 0.00000000],
+		[-6.27248331, -0.00070395, 0.00043142, 0.00070755, -0.00000112, 0.00000000],
+		[-6.27248370, -0.00070379, 0.00043132, 0.00070739, -0.00000112, 0.00000000],
+		[-6.27248408, -0.00070363, 0.00043122, 0.00070723, -0.00000112, 0.00000000],
+		[-6.27248447, -0.00070347, 0.00043112, 0.00070707, -0.00000112, 0.00000000],
+		[-6.27248485, -0.00070331, 0.00043103, 0.00070691, -0.00000112, 0.00000000],
+		[-6.27248523, -0.00070315, 0.00043093, 0.00070675, -0.00000112, 0.00000000],
+		[-6.27248562, -0.00070299, 0.00043083, 0.00070659, -0.00000112, 0.00000000],
+		[-6.27248600, -0.00070283, 0.00043073, 0.00070643, -0.00000112, 0.00000000],
+		[-6.27248638, -0.00070267, 0.00043063, 0.00070627, -0.00000112, 0.00000000],
+		[-6.27248677, -0.00070251, 0.00043054, 0.00070611, -0.00000112, 0.00000000],
+		[-6.27248715, -0.00070235, 0.00043044, 0.00070595, -0.00000112, 0.00000000],
+		[-6.27248753, -0.00070219, 0.00043034, 0.00070579, -0.00000112, 0.00000000],
+		[-6.27248792, -0.00070203, 0.00043024, 0.00070563, -0.00000112, 0.00000000],
+		[-6.27248830, -0.00070188, 0.00043014, 0.00070547, -0.00000112, 0.00000000],
+		[-6.27248868, -0.00070172, 0.00043005, 0.00070531, -0.00000112, 0.00000000],
+		[-6.27248906, -0.00070156, 0.00042995, 0.00070515, -0.00000112, 0.00000000],
+		[-6.27248945, -0.00070140, 0.00042985, 0.00070499, -0.00000112, 0.00000000],
+		[-6.27248983, -0.00070124, 0.00042975, 0.00070483, -0.00000112, 0.00000000],
+		[-6.27249021, -0.00070108, 0.00042966, 0.00070467, -0.00000112, 0.00000000],
+		[-6.27249059, -0.00070092, 0.00042956, 0.00070451, -0.00000112, 0.00000000],
+		[-6.27249097, -0.00070076, 0.00042946, 0.00070435, -0.00000112, 0.00000000],
+		[-6.27249135, -0.00070060, 0.00042937, 0.00070419, -0.00000112, 0.00000000],
+		[-6.27249173, -0.00070045, 0.00042927, 0.00070403, -0.00000112, 0.00000000],
+		[-6.27249211, -0.00070029, 0.00042917, 0.00070387, -0.00000112, 0.00000000],
+		[-6.27249250, -0.00070013, 0.00042907, 0.00070371, -0.00000112, 0.00000000],
+		[-6.27249288, -0.00069997, 0.00042898, 0.00070355, -0.00000112, 0.00000000],
+		[-6.27249326, -0.00069981, 0.00042888, 0.00070339, -0.00000112, 0.00000000],
+		[-6.27249364, -0.00069965, 0.00042878, 0.00070323, -0.00000112, 0.00000000],
+		[-6.27249402, -0.00069950, 0.00042869, 0.00070308, -0.00000112, 0.00000000],
+		[-6.27249440, -0.00069934, 0.00042859, 0.00070292, -0.00000112, 0.00000000],
+		[-6.27249477, -0.00069918, 0.00042849, 0.00070276, -0.00000112, 0.00000000],
+		[-6.27249515, -0.00069902, 0.00042840, 0.00070260, -0.00000112, 0.00000000],
+		[-6.27249553, -0.00069887, 0.00042830, 0.00070244, -0.00000112, 0.00000000],
+		[-6.27249591, -0.00069871, 0.00042820, 0.00070228, -0.00000112, 0.00000000],
+		[-6.27249629, -0.00069855, 0.00042810, 0.00070212, -0.00000112, 0.00000000],
+		[-6.27249667, -0.00069839, 0.00042801, 0.00070197, -0.00000112, 0.00000000],
+		[-6.27249705, -0.00069823, 0.00042791, 0.00070181, -0.00000112, 0.00000000],
+		[-6.27249743, -0.00069808, 0.00042781, 0.00070165, -0.00000112, 0.00000000],
+		[-6.27249780, -0.00069792, 0.00042772, 0.00070149, -0.00000112, 0.00000000],
+		[-6.27249818, -0.00069776, 0.00042762, 0.00070133, -0.00000112, 0.00000000],
+		[-6.27249856, -0.00069761, 0.00042753, 0.00070117, -0.00000112, 0.00000000],
+		[-6.27249894, -0.00069745, 0.00042743, 0.00070102, -0.00000112, 0.00000000],
+		[-6.27249931, -0.00069729, 0.00042733, 0.00070086, -0.00000112, 0.00000000],
+		[-6.27249969, -0.00069713, 0.00042724, 0.00070070, -0.00000112, 0.00000000],
+		[-6.27250007, -0.00069698, 0.00042714, 0.00070054, -0.00000112, 0.00000000],
+		[-6.27250045, -0.00069682, 0.00042704, 0.00070038, -0.00000112, 0.00000000],
+		[-6.27250082, -0.00069666, 0.00042695, 0.00070023, -0.00000112, 0.00000000],
+		[-6.27250120, -0.00069651, 0.00042685, 0.00070007, -0.00000112, 0.00000000],
+		[-6.27250158, -0.00069635, 0.00042676, 0.00069991, -0.00000112, 0.00000000],
+		[-6.27250195, -0.00069619, 0.00042666, 0.00069975, -0.00000112, 0.00000000],
+		[-6.27250233, -0.00069604, 0.00042656, 0.00069960, -0.00000112, 0.00000000],
+		[-6.27250270, -0.00069588, 0.00042647, 0.00069944, -0.00000112, 0.00000000],
+		[-6.27250308, -0.00069572, 0.00042637, 0.00069928, -0.00000112, 0.00000000],
+		[-6.27250345, -0.00069557, 0.00042628, 0.00069913, -0.00000112, 0.00000000],
+		[-6.27250383, -0.00069541, 0.00042618, 0.00069897, -0.00000112, 0.00000000],
+		[-6.27250420, -0.00069525, 0.00042608, 0.00069881, -0.00000112, 0.00000000],
+		[-6.27250458, -0.00069510, 0.00042599, 0.00069865, -0.00000112, 0.00000000],
+		[-6.27250495, -0.00069494, 0.00042589, 0.00069850, -0.00000112, 0.00000000],
+		[-6.27250533, -0.00069479, 0.00042580, 0.00069834, -0.00000112, 0.00000000],
+		[-6.27250570, -0.00069463, 0.00042570, 0.00069818, -0.00000112, 0.00000000],
+		[-6.27250608, -0.00069447, 0.00042561, 0.00069803, -0.00000112, 0.00000000],
+		[-6.27250645, -0.00069432, 0.00042551, 0.00069787, -0.00000112, 0.00000000],
+		[-6.27250683, -0.00069416, 0.00042541, 0.00069771, -0.00000112, 0.00000000],
+		[-6.27250720, -0.00069401, 0.00042532, 0.00069756, -0.00000112, 0.00000000],
+		[-6.27250757, -0.00069385, 0.00042522, 0.00069740, -0.00000112, 0.00000000],
+		[-6.27250795, -0.00069370, 0.00042513, 0.00069725, -0.00000112, 0.00000000],
+		[-6.27250832, -0.00069354, 0.00042503, 0.00069709, -0.00000112, 0.00000000],
+		[-6.27250869, -0.00069339, 0.00042494, 0.00069693, -0.00000112, 0.00000000],
+		[-6.27250906, -0.00069323, 0.00042484, 0.00069678, -0.00000112, 0.00000000],
+		[-6.27250944, -0.00069308, 0.00042475, 0.00069662, -0.00000112, 0.00000000],
+		[-6.27250981, -0.00069292, 0.00042465, 0.00069646, -0.00000112, 0.00000000],
+		[-6.27251018, -0.00069277, 0.00042456, 0.00069631, -0.00000112, 0.00000000],
+		[-6.27251055, -0.00069261, 0.00042446, 0.00069615, -0.00000112, 0.00000000],
+		[-6.27251093, -0.00069246, 0.00042437, 0.00069600, -0.00000112, 0.00000000],
+		[-6.27251130, -0.00069230, 0.00042427, 0.00069584, -0.00000112, 0.00000000],
+		[-6.27251167, -0.00069215, 0.00042418, 0.00069569, -0.00000112, 0.00000000],
+		[-6.27251204, -0.00069199, 0.00042408, 0.00069553, -0.00000112, 0.00000000],
+		[-6.27251241, -0.00069184, 0.00042399, 0.00069537, -0.00000112, 0.00000000],
+		[-6.27251278, -0.00069168, 0.00042389, 0.00069522, -0.00000112, 0.00000000],
+		[-6.27251315, -0.00069153, 0.00042380, 0.00069506, -0.00000112, 0.00000000],
+		[-6.27251353, -0.00069137, 0.00042370, 0.00069491, -0.00000112, 0.00000000],
+		[-6.27251390, -0.00069122, 0.00042361, 0.00069475, -0.00000112, 0.00000000],
+		[-6.27251427, -0.00069106, 0.00042351, 0.00069460, -0.00000112, 0.00000000],
+		[-6.27251464, -0.00069091, 0.00042342, 0.00069444, -0.00000112, 0.00000000],
+		[-6.27251501, -0.00069076, 0.00042332, 0.00069429, -0.00000112, 0.00000000],
+		[-6.27251538, -0.00069060, 0.00042323, 0.00069413, -0.00000112, 0.00000000],
+		[-6.27251575, -0.00069045, 0.00042314, 0.00069398, -0.00000112, 0.00000000],
+		[-6.27251612, -0.00069029, 0.00042304, 0.00069382, -0.00000112, 0.00000000],
+		[-6.27251649, -0.00069014, 0.00042295, 0.00069367, -0.00000112, 0.00000000],
+		[-6.27251685, -0.00068999, 0.00042285, 0.00069351, -0.00000112, 0.00000000],
+		[-6.27251722, -0.00068983, 0.00042276, 0.00069336, -0.00000112, 0.00000000],
+		[-6.27251759, -0.00068968, 0.00042266, 0.00069321, -0.00000112, 0.00000000],
+		[-6.27251796, -0.00068952, 0.00042257, 0.00069305, -0.00000112, 0.00000000],
+		[-6.27251833, -0.00068937, 0.00042248, 0.00069290, -0.00000112, 0.00000000],
+		[-6.27251870, -0.00068922, 0.00042238, 0.00069274, -0.00000112, 0.00000000],
+		[-6.27251907, -0.00068906, 0.00042229, 0.00069259, -0.00000112, 0.00000000],
+		[-6.27251943, -0.00068891, 0.00042219, 0.00069243, -0.00000112, 0.00000000],
+		[-6.27251980, -0.00068876, 0.00042210, 0.00069228, -0.00000112, 0.00000000],
+		[-6.27252017, -0.00068860, 0.00042200, 0.00069213, -0.00000112, 0.00000000],
+		[-6.27252054, -0.00068845, 0.00042191, 0.00069197, -0.00000112, 0.00000000],
+		[-6.27252091, -0.00068830, 0.00042182, 0.00069182, -0.00000112, 0.00000000],
+		[-6.27252127, -0.00068815, 0.00042172, 0.00069166, -0.00000112, 0.00000000],
+		[-6.27252164, -0.00068799, 0.00042163, 0.00069151, -0.00000112, 0.00000000],
+		[-6.27252201, -0.00068784, 0.00042154, 0.00069136, -0.00000112, 0.00000000],
+		[-6.27252237, -0.00068769, 0.00042144, 0.00069120, -0.00000112, 0.00000000],
+		[-6.27252274, -0.00068753, 0.00042135, 0.00069105, -0.00000112, 0.00000000],
+		[-6.27252311, -0.00068738, 0.00042125, 0.00069090, -0.00000112, 0.00000000],
+		[-6.27252347, -0.00068723, 0.00042116, 0.00069074, -0.00000112, 0.00000000],
+		[-6.27252384, -0.00068708, 0.00042107, 0.00069059, -0.00000112, 0.00000000],
+		[-6.27252420, -0.00068692, 0.00042097, 0.00069044, -0.00000112, 0.00000000],
+		[-6.27252457, -0.00068677, 0.00042088, 0.00069028, -0.00000112, 0.00000000],
+		[-6.27252494, -0.00068662, 0.00042079, 0.00069013, -0.00000112, 0.00000000],
+		[-6.27252530, -0.00068647, 0.00042069, 0.00068998, -0.00000112, 0.00000000],
+		[-6.27252567, -0.00068631, 0.00042060, 0.00068982, -0.00000112, 0.00000000],
+		[-6.27252603, -0.00068616, 0.00042051, 0.00068967, -0.00000112, 0.00000000],
+		[-6.27252640, -0.00068601, 0.00042041, 0.00068952, -0.00000112, 0.00000000],
+		[-6.27252676, -0.00068586, 0.00042032, 0.00068937, -0.00000112, 0.00000000],
+		[-6.27252712, -0.00068571, 0.00042023, 0.00068921, -0.00000112, 0.00000000],
+		[-6.27252749, -0.00068555, 0.00042013, 0.00068906, -0.00000112, 0.00000000],
+		[-6.27252785, -0.00068540, 0.00042004, 0.00068891, -0.00000112, 0.00000000],
+		[-6.27252822, -0.00068525, 0.00041995, 0.00068875, -0.00000112, 0.00000000],
+		[-6.27252858, -0.00068510, 0.00041985, 0.00068860, -0.00000112, 0.00000000],
+		[-6.27252895, -0.00068495, 0.00041976, 0.00068845, -0.00000112, 0.00000000],
+		[-6.27252931, -0.00068480, 0.00041967, 0.00068830, -0.00000112, 0.00000000],
+		[-6.27252967, -0.00068464, 0.00041958, 0.00068815, -0.00000112, 0.00000000],
+		[-6.27253004, -0.00068449, 0.00041948, 0.00068799, -0.00000112, 0.00000000],
+		[-6.27253040, -0.00068434, 0.00041939, 0.00068784, -0.00000112, 0.00000000],
+		[-6.27253076, -0.00068419, 0.00041930, 0.00068769, -0.00000112, 0.00000000],
+		[-6.27253112, -0.00068404, 0.00041920, 0.00068754, -0.00000112, 0.00000000],
+		[-6.27253149, -0.00068389, 0.00041911, 0.00068738, -0.00000112, 0.00000000],
+		[-6.27253185, -0.00068374, 0.00041902, 0.00068723, -0.00000112, 0.00000000],
+		[-6.27253221, -0.00068359, 0.00041893, 0.00068708, -0.00000112, 0.00000000],
+		[-6.27253257, -0.00068344, 0.00041883, 0.00068693, -0.00000112, 0.00000000],
+		[-6.27253293, -0.00068328, 0.00041874, 0.00068678, -0.00000112, 0.00000000],
+		[-6.27253330, -0.00068313, 0.00041865, 0.00068663, -0.00000112, 0.00000000],
+		[-6.27253366, -0.00068298, 0.00041856, 0.00068647, -0.00000112, 0.00000000],
+		[-6.27253402, -0.00068283, 0.00041846, 0.00068632, -0.00000112, 0.00000000],
+		[-6.27253438, -0.00068268, 0.00041837, 0.00068617, -0.00000112, 0.00000000],
+		[-6.27253474, -0.00068253, 0.00041828, 0.00068602, -0.00000112, 0.00000000],
+		[-6.27253510, -0.00068238, 0.00041819, 0.00068587, -0.00000112, 0.00000000],
+		[-6.27253546, -0.00068223, 0.00041810, 0.00068572, -0.00000112, 0.00000000],
+		[-6.27253582, -0.00068208, 0.00041800, 0.00068557, -0.00000112, 0.00000000],
+		[-6.27253618, -0.00068193, 0.00041791, 0.00068542, -0.00000112, 0.00000000],
+		[-6.27253654, -0.00068178, 0.00041782, 0.00068526, -0.00000112, 0.00000000],
+		[-6.27253690, -0.00068163, 0.00041773, 0.00068511, -0.00000112, 0.00000000],
+		[-6.27253726, -0.00068148, 0.00041763, 0.00068496, -0.00000112, 0.00000000],
+		[-6.27253762, -0.00068133, 0.00041754, 0.00068481, -0.00000112, 0.00000000],
+		[-6.27253798, -0.00068118, 0.00041745, 0.00068466, -0.00000112, 0.00000000],
+		[-6.27253834, -0.00068103, 0.00041736, 0.00068451, -0.00000112, 0.00000000],
+		[-6.27253870, -0.00068088, 0.00041727, 0.00068436, -0.00000112, 0.00000000],
+		[-6.27253906, -0.00068073, 0.00041718, 0.00068421, -0.00000112, 0.00000000],
+		[-6.27253942, -0.00068058, 0.00041708, 0.00068406, -0.00000112, 0.00000000],
+		[-6.27253978, -0.00068043, 0.00041699, 0.00068391, -0.00000112, 0.00000000],
+		[-6.27254014, -0.00068028, 0.00041690, 0.00068376, -0.00000112, 0.00000000],
+		[-6.27254050, -0.00068013, 0.00041681, 0.00068361, -0.00000112, 0.00000000],
+		[-6.27254086, -0.00067998, 0.00041672, 0.00068346, -0.00000112, 0.00000000],
+		[-6.27254121, -0.00067983, 0.00041662, 0.00068331, -0.00000112, 0.00000000],
+		[-6.27254157, -0.00067968, 0.00041653, 0.00068316, -0.00000112, 0.00000000],
+		[-6.27254193, -0.00067953, 0.00041644, 0.00068301, -0.00000112, 0.00000000],
+		[-6.27254229, -0.00067939, 0.00041635, 0.00068286, -0.00000112, 0.00000000],
+		[-6.27254264, -0.00067924, 0.00041626, 0.00068271, -0.00000112, 0.00000000],
+		[-6.27254300, -0.00067909, 0.00041617, 0.00068256, -0.00000112, 0.00000000],
+		[-6.27254336, -0.00067894, 0.00041608, 0.00068241, -0.00000112, 0.00000000],
+		[-6.27254372, -0.00067879, 0.00041598, 0.00068226, -0.00000112, 0.00000000],
+		[-6.27254407, -0.00067864, 0.00041589, 0.00068211, -0.00000112, 0.00000000],
+		[-6.27254443, -0.00067849, 0.00041580, 0.00068196, -0.00000112, 0.00000000],
+		[-6.27254479, -0.00067834, 0.00041571, 0.00068181, -0.00000112, 0.00000000],
+		[-6.27254514, -0.00067819, 0.00041562, 0.00068166, -0.00000112, 0.00000000],
+		[-6.27254550, -0.00067805, 0.00041553, 0.00068151, -0.00000112, 0.00000000],
+		[-6.27254585, -0.00067790, 0.00041544, 0.00068136, -0.00000112, 0.00000000],
+		[-6.27254621, -0.00067775, 0.00041535, 0.00068121, -0.00000112, 0.00000000],
+		[-6.27254657, -0.00067760, 0.00041526, 0.00068106, -0.00000112, 0.00000000],
+		[-6.27254692, -0.00067745, 0.00041516, 0.00068092, -0.00000112, 0.00000000],
+		[-6.27254728, -0.00067730, 0.00041507, 0.00068077, -0.00000112, 0.00000000],
+		[-6.27254763, -0.00067716, 0.00041498, 0.00068062, -0.00000112, 0.00000000],
+		[-6.27254799, -0.00067701, 0.00041489, 0.00068047, -0.00000112, 0.00000000],
+		[-6.27254834, -0.00067686, 0.00041480, 0.00068032, -0.00000112, 0.00000000],
+		[-6.27254870, -0.00067671, 0.00041471, 0.00068017, -0.00000112, 0.00000000],
+		[-6.27254905, -0.00067656, 0.00041462, 0.00068002, -0.00000112, 0.00000000],
+		[-6.27254941, -0.00067642, 0.00041453, 0.00067987, -0.00000112, 0.00000000],
+		[-6.27254976, -0.00067627, 0.00041444, 0.00067972, -0.00000112, 0.00000000],
+		[-6.27255012, -0.00067612, 0.00041435, 0.00067958, -0.00000112, 0.00000000],
+		[-6.27255047, -0.00067597, 0.00041426, 0.00067943, -0.00000112, 0.00000000],
+		[-6.27255082, -0.00067583, 0.00041417, 0.00067928, -0.00000112, 0.00000000],
+		[-6.27255118, -0.00067568, 0.00041408, 0.00067913, -0.00000112, 0.00000000],
+		[-6.27255153, -0.00067553, 0.00041399, 0.00067898, -0.00000112, 0.00000000],
+		[-6.27255188, -0.00067538, 0.00041390, 0.00067883, -0.00000112, 0.00000000],
+		[-6.27255224, -0.00067524, 0.00041381, 0.00067869, -0.00000112, 0.00000000],
+		[-6.27255259, -0.00067509, 0.00041372, 0.00067854, -0.00000112, 0.00000000],
+		[-6.27255294, -0.00067494, 0.00041362, 0.00067839, -0.00000112, 0.00000000],
+		[-6.27255330, -0.00067479, 0.00041353, 0.00067824, -0.00000112, 0.00000000],
+		[-6.27255365, -0.00067465, 0.00041344, 0.00067810, -0.00000112, 0.00000000],
+		[-6.27255400, -0.00067450, 0.00041335, 0.00067795, -0.00000112, 0.00000000],
+		[-6.27255435, -0.00067435, 0.00041326, 0.00067780, -0.00000112, 0.00000000],
+		[-6.27255470, -0.00067421, 0.00041317, 0.00067765, -0.00000112, 0.00000000],
+		[-6.27255506, -0.00067406, 0.00041308, 0.00067750, -0.00000112, 0.00000000],
+		[-6.27255541, -0.00067391, 0.00041299, 0.00067736, -0.00000112, 0.00000000],
+		[-6.27255576, -0.00067377, 0.00041290, 0.00067721, -0.00000112, 0.00000000],
+		[-6.27255611, -0.00067362, 0.00041281, 0.00067706, -0.00000112, 0.00000000],
+		[-6.27255646, -0.00067347, 0.00041272, 0.00067691, -0.00000112, 0.00000000],
+		[-6.27255681, -0.00067333, 0.00041263, 0.00067677, -0.00000112, 0.00000000],
+		[-6.27255717, -0.00067318, 0.00041254, 0.00067662, -0.00000112, 0.00000000],
+		[-6.27255752, -0.00067303, 0.00041245, 0.00067647, -0.00000112, 0.00000000],
+		[-6.27255787, -0.00067289, 0.00041236, 0.00067633, -0.00000112, 0.00000000],
+		[-6.27255822, -0.00067274, 0.00041228, 0.00067618, -0.00000112, 0.00000000],
+		[-6.27255857, -0.00067260, 0.00041219, 0.00067603, -0.00000112, 0.00000000],
+		[-6.27255892, -0.00067245, 0.00041210, 0.00067589, -0.00000112, 0.00000000],
+		[-6.27255927, -0.00067230, 0.00041201, 0.00067574, -0.00000112, 0.00000000],
+		[-6.27255962, -0.00067216, 0.00041192, 0.00067559, -0.00000112, 0.00000000],
+		[-6.27255997, -0.00067201, 0.00041183, 0.00067544, -0.00000112, 0.00000000],
+		[-6.27256032, -0.00067187, 0.00041174, 0.00067530, -0.00000112, 0.00000000],
+		[-6.27256067, -0.00067172, 0.00041165, 0.00067515, -0.00000112, 0.00000000],
+		[-6.27256102, -0.00067157, 0.00041156, 0.00067501, -0.00000112, 0.00000000],
+		[-6.27256137, -0.00067143, 0.00041147, 0.00067486, -0.00000112, 0.00000000],
+		[-6.27256171, -0.00067128, 0.00041138, 0.00067471, -0.00000112, 0.00000000],
+		[-6.27256206, -0.00067114, 0.00041129, 0.00067457, -0.00000112, 0.00000000],
+		[-6.27256241, -0.00067099, 0.00041120, 0.00067442, -0.00000112, 0.00000000],
+		[-6.27256276, -0.00067085, 0.00041111, 0.00067427, -0.00000112, 0.00000000],
+		[-6.27256311, -0.00067070, 0.00041102, 0.00067413, -0.00000112, 0.00000000],
+		[-6.27256346, -0.00067056, 0.00041093, 0.00067398, -0.00000112, 0.00000000],
+		[-6.27256381, -0.00067041, 0.00041085, 0.00067384, -0.00000112, 0.00000000],
+		[-6.27256415, -0.00067027, 0.00041076, 0.00067369, -0.00000112, 0.00000000],
+		[-6.27256450, -0.00067012, 0.00041067, 0.00067354, -0.00000112, 0.00000000],
+		[-6.27256485, -0.00066998, 0.00041058, 0.00067340, -0.00000112, 0.00000000],
+		[-6.27256520, -0.00066983, 0.00041049, 0.00067325, -0.00000112, 0.00000000],
+		[-6.27256554, -0.00066969, 0.00041040, 0.00067311, -0.00000112, 0.00000000],
+		[-6.27256589, -0.00066954, 0.00041031, 0.00067296, -0.00000112, 0.00000000],
+		[-6.27256624, -0.00066940, 0.00041022, 0.00067282, -0.00000112, 0.00000000],
+		[-6.27256658, -0.00066925, 0.00041013, 0.00067267, -0.00000112, 0.00000000],
+		[-6.27256693, -0.00066911, 0.00041005, 0.00067252, -0.00000112, 0.00000000],
+		[-6.27256728, -0.00066896, 0.00040996, 0.00067238, -0.00000112, 0.00000000],
+		[-6.27256762, -0.00066882, 0.00040987, 0.00067223, -0.00000112, 0.00000000],
+		[-6.27256797, -0.00066867, 0.00040978, 0.00067209, -0.00000112, 0.00000000],
+		[-6.27256832, -0.00066853, 0.00040969, 0.00067194, -0.00000112, 0.00000000],
+		[-6.27256866, -0.00066838, 0.00040960, 0.00067180, -0.00000112, 0.00000000],
+		[-6.27256901, -0.00066824, 0.00040951, 0.00067165, -0.00000112, 0.00000000],
+		[-6.27256935, -0.00066810, 0.00040943, 0.00067151, -0.00000112, 0.00000000],
+		[-6.27256970, -0.00066795, 0.00040934, 0.00067136, -0.00000112, 0.00000000],
+		[-6.27257004, -0.00066781, 0.00040925, 0.00067122, -0.00000112, 0.00000000],
+		[-6.27257039, -0.00066766, 0.00040916, 0.00067107, -0.00000112, 0.00000000],
+		[-6.27257073, -0.00066752, 0.00040907, 0.00067093, -0.00000112, 0.00000000],
+		[-6.27257108, -0.00066738, 0.00040898, 0.00067078, -0.00000112, 0.00000000],
+		[-6.27257142, -0.00066723, 0.00040890, 0.00067064, -0.00000112, 0.00000000],
+		[-6.27257177, -0.00066709, 0.00040881, 0.00067050, -0.00000112, 0.00000000],
+		[-6.27257211, -0.00066694, 0.00040872, 0.00067035, -0.00000112, 0.00000000],
+		[-6.27257246, -0.00066680, 0.00040863, 0.00067021, -0.00000112, 0.00000000],
+		[-6.27257280, -0.00066666, 0.00040854, 0.00067006, -0.00000112, 0.00000000],
+		[-6.27257315, -0.00066651, 0.00040846, 0.00066992, -0.00000112, 0.00000000],
+		[-6.27257349, -0.00066637, 0.00040837, 0.00066977, -0.00000112, 0.00000000],
+		[-6.27257383, -0.00066623, 0.00040828, 0.00066963, -0.00000112, 0.00000000],
+		[-6.27257418, -0.00066608, 0.00040819, 0.00066949, -0.00000112, 0.00000000],
+		[-6.27257452, -0.00066594, 0.00040810, 0.00066934, -0.00000112, 0.00000000],
+		[-6.27257486, -0.00066580, 0.00040802, 0.00066920, -0.00000112, 0.00000000],
+		[-6.27257521, -0.00066565, 0.00040793, 0.00066905, -0.00000112, 0.00000000],
+		[-6.27257555, -0.00066551, 0.00040784, 0.00066891, -0.00000112, 0.00000000],
+		[-6.27257589, -0.00066537, 0.00040775, 0.00066877, -0.00000112, 0.00000000],
+		[-6.27257623, -0.00066522, 0.00040766, 0.00066862, -0.00000112, 0.00000000],
+		[-6.27257658, -0.00066508, 0.00040758, 0.00066848, -0.00000112, 0.00000000],
+		[-6.27257692, -0.00066494, 0.00040749, 0.00066833, -0.00000112, 0.00000000],
+		[-6.27257726, -0.00066480, 0.00040740, 0.00066819, -0.00000112, 0.00000000],
+		[-6.27257760, -0.00066465, 0.00040731, 0.00066805, -0.00000112, 0.00000000],
+		[-6.27257795, -0.00066451, 0.00040723, 0.00066790, -0.00000112, 0.00000000],
+		[-6.27257829, -0.00066437, 0.00040714, 0.00066776, -0.00000112, 0.00000000],
+		[-6.27257863, -0.00066422, 0.00040705, 0.00066762, -0.00000112, 0.00000000],
+		[-6.27257897, -0.00066408, 0.00040696, 0.00066747, -0.00000112, 0.00000000],
+		[-6.27257931, -0.00066394, 0.00040688, 0.00066733, -0.00000112, 0.00000000],
+		[-6.27257965, -0.00066380, 0.00040679, 0.00066719, -0.00000112, 0.00000000],
+		[-6.27257999, -0.00066366, 0.00040670, 0.00066704, -0.00000112, 0.00000000],
+		[-6.27258033, -0.00066351, 0.00040662, 0.00066690, -0.00000112, 0.00000000],
+		[-6.27258068, -0.00066337, 0.00040653, 0.00066676, -0.00000112, 0.00000000],
+		[-6.27258102, -0.00066323, 0.00040644, 0.00066662, -0.00000112, 0.00000000],
+		[-6.27258136, -0.00066309, 0.00040635, 0.00066647, -0.00000112, 0.00000000],
+		[-6.27258170, -0.00066294, 0.00040627, 0.00066633, -0.00000112, 0.00000000],
+		[-6.27258204, -0.00066280, 0.00040618, 0.00066619, -0.00000112, 0.00000000],
+		[-6.27258238, -0.00066266, 0.00040609, 0.00066604, -0.00000112, 0.00000000],
+		[-6.27258272, -0.00066252, 0.00040601, 0.00066590, -0.00000112, 0.00000000],
+		[-6.27258306, -0.00066238, 0.00040592, 0.00066576, -0.00000112, 0.00000000],
+		[-6.27258340, -0.00066224, 0.00040583, 0.00066562, -0.00000112, 0.00000000],
+		[-6.27258373, -0.00066209, 0.00040574, 0.00066547, -0.00000112, 0.00000000],
+		[-6.27258407, -0.00066195, 0.00040566, 0.00066533, -0.00000112, 0.00000000],
+		[-6.27258441, -0.00066181, 0.00040557, 0.00066519, -0.00000112, 0.00000000],
+		[-6.27258475, -0.00066167, 0.00040548, 0.00066505, -0.00000112, 0.00000000],
+		[-6.27258509, -0.00066153, 0.00040540, 0.00066491, -0.00000112, 0.00000000],
+		[-6.27258543, -0.00066139, 0.00040531, 0.00066476, -0.00000112, 0.00000000],
+		[-6.27258577, -0.00066125, 0.00040522, 0.00066462, -0.00000112, 0.00000000],
+		[-6.27258611, -0.00066110, 0.00040514, 0.00066448, -0.00000112, 0.00000000],
+		[-6.27258644, -0.00066096, 0.00040505, 0.00066434, -0.00000112, 0.00000000],
+		[-6.27258678, -0.00066082, 0.00040496, 0.00066420, -0.00000112, 0.00000000],
+		[-6.27258712, -0.00066068, 0.00040488, 0.00066405, -0.00000112, 0.00000000],
+		[-6.27258746, -0.00066054, 0.00040479, 0.00066391, -0.00000112, 0.00000000],
+		[-6.27258780, -0.00066040, 0.00040471, 0.00066377, -0.00000112, 0.00000000],
+		[-6.27258813, -0.00066026, 0.00040462, 0.00066363, -0.00000112, 0.00000000],
+		[-6.27258847, -0.00066012, 0.00040453, 0.00066349, -0.00000112, 0.00000000],
+		[-6.27258881, -0.00065998, 0.00040445, 0.00066335, -0.00000112, 0.00000000],
+		[-6.27258914, -0.00065984, 0.00040436, 0.00066320, -0.00000112, 0.00000000],
+		[-6.27258948, -0.00065970, 0.00040427, 0.00066306, -0.00000112, 0.00000000],
+		[-6.27258982, -0.00065955, 0.00040419, 0.00066292, -0.00000112, 0.00000000],
+		[-6.27259015, -0.00065941, 0.00040410, 0.00066278, -0.00000112, 0.00000000],
+		[-6.27259049, -0.00065927, 0.00040401, 0.00066264, -0.00000112, 0.00000000],
+		[-6.27259083, -0.00065913, 0.00040393, 0.00066250, -0.00000112, 0.00000000],
+		[-6.27259116, -0.00065899, 0.00040384, 0.00066236, -0.00000112, 0.00000000],
+		[-6.27259150, -0.00065885, 0.00040376, 0.00066222, -0.00000112, 0.00000000],
+		[-6.27259184, -0.00065871, 0.00040367, 0.00066208, -0.00000112, 0.00000000],
+		[-6.27259217, -0.00065857, 0.00040358, 0.00066193, -0.00000112, 0.00000000],
+		[-6.27259251, -0.00065843, 0.00040350, 0.00066179, -0.00000112, 0.00000000],
+		[-6.27259284, -0.00065829, 0.00040341, 0.00066165, -0.00000112, 0.00000000],
+		[-6.27259318, -0.00065815, 0.00040333, 0.00066151, -0.00000112, 0.00000000],
+		[-6.27259351, -0.00065801, 0.00040324, 0.00066137, -0.00000112, 0.00000000],
+		[-6.27259385, -0.00065787, 0.00040316, 0.00066123, -0.00000112, 0.00000000],
+		[-6.27259418, -0.00065773, 0.00040307, 0.00066109, -0.00000112, 0.00000000],
+		[-6.27259452, -0.00065759, 0.00040298, 0.00066095, -0.00000112, 0.00000000],
+		[-6.27259485, -0.00065745, 0.00040290, 0.00066081, -0.00000112, 0.00000000],
+		[-6.27259519, -0.00065731, 0.00040281, 0.00066067, -0.00000112, 0.00000000],
+		[-6.27259552, -0.00065717, 0.00040273, 0.00066053, -0.00000112, 0.00000000],
+		[-6.27259585, -0.00065703, 0.00040264, 0.00066039, -0.00000112, 0.00000000],
+		[-6.27259619, -0.00065690, 0.00040256, 0.00066025, -0.00000112, 0.00000000],
+		[-6.27259652, -0.00065676, 0.00040247, 0.00066011, -0.00000112, 0.00000000],
+		[-6.27259686, -0.00065662, 0.00040239, 0.00065997, -0.00000112, 0.00000000],
+		[-6.27259719, -0.00065648, 0.00040230, 0.00065983, -0.00000112, 0.00000000],
+		[-6.27259752, -0.00065634, 0.00040221, 0.00065969, -0.00000112, 0.00000000],
+		[-6.27259786, -0.00065620, 0.00040213, 0.00065955, -0.00000112, 0.00000000],
+		[-6.27259819, -0.00065606, 0.00040204, 0.00065941, -0.00000112, 0.00000000],
+		[-6.27259852, -0.00065592, 0.00040196, 0.00065927, -0.00000112, 0.00000000],
+		[-6.27259885, -0.00065578, 0.00040187, 0.00065913, -0.00000112, 0.00000000],
+		[-6.27259919, -0.00065564, 0.00040179, 0.00065899, -0.00000112, 0.00000000],
+		[-6.27259952, -0.00065550, 0.00040170, 0.00065885, -0.00000112, 0.00000000],
+		[-6.27259985, -0.00065537, 0.00040162, 0.00065871, -0.00000112, 0.00000000],
+		[-6.27260018, -0.00065523, 0.00040153, 0.00065857, -0.00000112, 0.00000000],
+		[-6.27260052, -0.00065509, 0.00040145, 0.00065843, -0.00000112, 0.00000000],
+		[-6.27260085, -0.00065495, 0.00040136, 0.00065829, -0.00000112, 0.00000000],
+		[-6.27260118, -0.00065481, 0.00040128, 0.00065815, -0.00000112, 0.00000000],
+		[-6.27260151, -0.00065467, 0.00040119, 0.00065801, -0.00000112, 0.00000000],
+		[-6.27260184, -0.00065453, 0.00040111, 0.00065788, -0.00000112, 0.00000000],
+		[-6.27260217, -0.00065440, 0.00040102, 0.00065774, -0.00000112, 0.00000000],
+		[-6.27260251, -0.00065426, 0.00040094, 0.00065760, -0.00000112, 0.00000000],
+		[-6.27260284, -0.00065412, 0.00040085, 0.00065746, -0.00000112, 0.00000000],
+		[-6.27260317, -0.00065398, 0.00040077, 0.00065732, -0.00000112, 0.00000000],
+		[-6.27260350, -0.00065384, 0.00040068, 0.00065718, -0.00000112, 0.00000000],
+		[-6.27260383, -0.00065370, 0.00040060, 0.00065704, -0.00000112, 0.00000000],
+		[-6.27260416, -0.00065357, 0.00040051, 0.00065690, -0.00000112, 0.00000000],
+		[-6.27260449, -0.00065343, 0.00040043, 0.00065676, -0.00000112, 0.00000000],
+		[-6.27260482, -0.00065329, 0.00040035, 0.00065663, -0.00000112, 0.00000000],
+		[-6.27260515, -0.00065315, 0.00040026, 0.00065649, -0.00000112, 0.00000000],
+		[-6.27260548, -0.00065302, 0.00040018, 0.00065635, -0.00000112, 0.00000000],
+		[-6.27260581, -0.00065288, 0.00040009, 0.00065621, -0.00000112, 0.00000000],
+		[-6.27260614, -0.00065274, 0.00040001, 0.00065607, -0.00000112, 0.00000000],
+		[-6.27260647, -0.00065260, 0.00039992, 0.00065593, -0.00000112, 0.00000000],
+		[-6.27260680, -0.00065246, 0.00039984, 0.00065580, -0.00000112, 0.00000000],
+		[-6.27260713, -0.00065233, 0.00039975, 0.00065566, -0.00000112, 0.00000000],
+		[-6.27260746, -0.00065219, 0.00039967, 0.00065552, -0.00000112, 0.00000000],
+		[-6.27260779, -0.00065205, 0.00039959, 0.00065538, -0.00000112, 0.00000000],
+		[-6.27260812, -0.00065192, 0.00039950, 0.00065524, -0.00000112, 0.00000000],
+		[-6.27260844, -0.00065178, 0.00039942, 0.00065510, -0.00000112, 0.00000000],
+		[-6.27260877, -0.00065164, 0.00039933, 0.00065497, -0.00000112, 0.00000000],
+		[-6.27260910, -0.00065150, 0.00039925, 0.00065483, -0.00000112, 0.00000000],
+		[-6.27260943, -0.00065137, 0.00039917, 0.00065469, -0.00000112, 0.00000000],
+		[-6.27260976, -0.00065123, 0.00039908, 0.00065455, -0.00000112, 0.00000000],
+		[-6.27261009, -0.00065109, 0.00039900, 0.00065442, -0.00000112, 0.00000000],
+		[-6.27261041, -0.00065096, 0.00039891, 0.00065428, -0.00000112, 0.00000000],
+		[-6.27261074, -0.00065082, 0.00039883, 0.00065414, -0.00000112, 0.00000000],
+		[-6.27261107, -0.00065068, 0.00039875, 0.00065400, -0.00000112, 0.00000000],
+		[-6.27261140, -0.00065055, 0.00039866, 0.00065387, -0.00000112, 0.00000000],
+		[-6.27261172, -0.00065041, 0.00039858, 0.00065373, -0.00000112, 0.00000000],
+		[-6.27261205, -0.00065027, 0.00039849, 0.00065359, -0.00000112, 0.00000000],
+		[-6.27261238, -0.00065014, 0.00039841, 0.00065345, -0.00000112, 0.00000000],
+		[-6.27261271, -0.00065000, 0.00039833, 0.00065332, -0.00000112, 0.00000000],
+		[-6.27261303, -0.00064986, 0.00039824, 0.00065318, -0.00000112, 0.00000000],
+		[-6.27261336, -0.00064973, 0.00039816, 0.00065304, -0.00000112, 0.00000000],
+		[-6.27261369, -0.00064959, 0.00039808, 0.00065290, -0.00000112, 0.00000000],
+		[-6.27261401, -0.00064945, 0.00039799, 0.00065277, -0.00000112, 0.00000000],
+		[-6.27261434, -0.00064932, 0.00039791, 0.00065263, -0.00000112, 0.00000000],
+		[-6.27261466, -0.00064918, 0.00039782, 0.00065249, -0.00000112, 0.00000000],
+		[-6.27261499, -0.00064904, 0.00039774, 0.00065236, -0.00000112, 0.00000000],
+		[-6.27261532, -0.00064891, 0.00039766, 0.00065222, -0.00000112, 0.00000000],
+		[-6.27261564, -0.00064877, 0.00039757, 0.00065208, -0.00000112, 0.00000000],
+		[-6.27261597, -0.00064864, 0.00039749, 0.00065195, -0.00000112, 0.00000000],
+		[-6.27261629, -0.00064850, 0.00039741, 0.00065181, -0.00000112, 0.00000000],
+		[-6.27261662, -0.00064836, 0.00039732, 0.00065167, -0.00000112, 0.00000000],
+		[-6.27261694, -0.00064823, 0.00039724, 0.00065154, -0.00000112, 0.00000000],
+		[-6.27261727, -0.00064809, 0.00039716, 0.00065140, -0.00000112, 0.00000000],
+		[-6.27261759, -0.00064796, 0.00039707, 0.00065126, -0.00000112, 0.00000000],
+		[-6.27261792, -0.00064782, 0.00039699, 0.00065113, -0.00000112, 0.00000000],
+		[-6.27261824, -0.00064769, 0.00039691, 0.00065099, -0.00000112, 0.00000000],
+		[-6.27261857, -0.00064755, 0.00039683, 0.00065086, -0.00000112, 0.00000000],
+		[-6.27261889, -0.00064742, 0.00039674, 0.00065072, -0.00000112, 0.00000000],
+		[-6.27261921, -0.00064728, 0.00039666, 0.00065058, -0.00000112, 0.00000000],
+		[-6.27261954, -0.00064715, 0.00039658, 0.00065045, -0.00000112, 0.00000000],
+		[-6.27261986, -0.00064701, 0.00039649, 0.00065031, -0.00000112, 0.00000000],
+		[-6.27262019, -0.00064687, 0.00039641, 0.00065018, -0.00000112, 0.00000000],
+		[-6.27262051, -0.00064674, 0.00039633, 0.00065004, -0.00000112, 0.00000000],
+		[-6.27262083, -0.00064660, 0.00039624, 0.00064990, -0.00000112, 0.00000000],
+		[-6.27262116, -0.00064647, 0.00039616, 0.00064977, -0.00000112, 0.00000000],
+		[-6.27262148, -0.00064633, 0.00039608, 0.00064963, -0.00000112, 0.00000000],
+		[-6.27262180, -0.00064620, 0.00039600, 0.00064950, -0.00000112, 0.00000000],
+		[-6.27262213, -0.00064606, 0.00039591, 0.00064936, -0.00000112, 0.00000000],
+		[-6.27262245, -0.00064593, 0.00039583, 0.00064923, -0.00000112, 0.00000000],
+		[-6.27262277, -0.00064579, 0.00039575, 0.00064909, -0.00000112, 0.00000000],
+		[-6.27262309, -0.00064566, 0.00039567, 0.00064895, -0.00000112, 0.00000000],
+		[-6.27262342, -0.00064553, 0.00039558, 0.00064882, -0.00000112, 0.00000000],
+		[-6.27262374, -0.00064539, 0.00039550, 0.00064868, -0.00000112, 0.00000000],
+		[-6.27262406, -0.00064526, 0.00039542, 0.00064855, -0.00000112, 0.00000000],
+		[-6.27262438, -0.00064512, 0.00039534, 0.00064841, -0.00000112, 0.00000000],
+		[-6.27262470, -0.00064499, 0.00039525, 0.00064828, -0.00000112, 0.00000000],
+		[-6.27262503, -0.00064485, 0.00039517, 0.00064814, -0.00000112, 0.00000000],
+		[-6.27262535, -0.00064472, 0.00039509, 0.00064801, -0.00000112, 0.00000000],
+		[-6.27262567, -0.00064458, 0.00039501, 0.00064787, -0.00000112, 0.00000000],
+		[-6.27262599, -0.00064445, 0.00039492, 0.00064774, -0.00000112, 0.00000000],
+		[-6.27262631, -0.00064432, 0.00039484, 0.00064760, -0.00000112, 0.00000000],
+		[-6.27262663, -0.00064418, 0.00039476, 0.00064747, -0.00000112, 0.00000000],
+		[-6.27262695, -0.00064405, 0.00039468, 0.00064733, -0.00000112, 0.00000000],
+		[-6.27262727, -0.00064391, 0.00039460, 0.00064720, -0.00000112, 0.00000000],
+		[-6.27262759, -0.00064378, 0.00039451, 0.00064706, -0.00000112, 0.00000000],
+		[-6.27262792, -0.00064365, 0.00039443, 0.00064693, -0.00000112, 0.00000000],
+		[-6.27262824, -0.00064351, 0.00039435, 0.00064680, -0.00000112, 0.00000000],
+		[-6.27262856, -0.00064338, 0.00039427, 0.00064666, -0.00000112, 0.00000000],
+		[-6.27262888, -0.00064325, 0.00039418, 0.00064653, -0.00000112, 0.00000000],
+		[-6.27262920, -0.00064311, 0.00039410, 0.00064639, -0.00000112, 0.00000000],
+		[-6.27262952, -0.00064298, 0.00039402, 0.00064626, -0.00000112, 0.00000000],
+		[-6.27262984, -0.00064284, 0.00039394, 0.00064612, -0.00000112, 0.00000000],
+		[-6.27263015, -0.00064271, 0.00039386, 0.00064599, -0.00000112, 0.00000000],
+		[-6.27263047, -0.00064258, 0.00039378, 0.00064586, -0.00000112, 0.00000000],
+		[-6.27263079, -0.00064244, 0.00039369, 0.00064572, -0.00000112, 0.00000000],
+		[-6.27263111, -0.00064231, 0.00039361, 0.00064559, -0.00000112, 0.00000000],
+		[-6.27263143, -0.00064218, 0.00039353, 0.00064545, -0.00000112, 0.00000000],
+		[-6.27263175, -0.00064204, 0.00039345, 0.00064532, -0.00000112, 0.00000000],
+		[-6.27263207, -0.00064191, 0.00039337, 0.00064519, -0.00000112, 0.00000000],
+		[-6.27263239, -0.00064178, 0.00039329, 0.00064505, -0.00000112, 0.00000000],
+		[-6.27263271, -0.00064165, 0.00039320, 0.00064492, -0.00000112, 0.00000000],
+		[-6.27263302, -0.00064151, 0.00039312, 0.00064478, -0.00000112, 0.00000000],
+		[-6.27263334, -0.00064138, 0.00039304, 0.00064465, -0.00000112, 0.00000000],
+		[-6.27263366, -0.00064125, 0.00039296, 0.00064452, -0.00000112, 0.00000000],
+		[-6.27263398, -0.00064111, 0.00039288, 0.00064438, -0.00000112, 0.00000000],
+		[-6.27263430, -0.00064098, 0.00039280, 0.00064425, -0.00000112, 0.00000000],
+		[-6.27263461, -0.00064085, 0.00039271, 0.00064412, -0.00000112, 0.00000000],
+		[-6.27263493, -0.00064072, 0.00039263, 0.00064398, -0.00000112, 0.00000000],
+		[-6.27263525, -0.00064058, 0.00039255, 0.00064385, -0.00000112, 0.00000000],
+		[-6.27263557, -0.00064045, 0.00039247, 0.00064372, -0.00000112, 0.00000000],
+		[-6.27263588, -0.00064032, 0.00039239, 0.00064358, -0.00000112, 0.00000000],
+		[-6.27263620, -0.00064019, 0.00039231, 0.00064345, -0.00000112, 0.00000000],
+		[-6.27263652, -0.00064005, 0.00039223, 0.00064332, -0.00000112, 0.00000000],
+		[-6.27263683, -0.00063992, 0.00039215, 0.00064319, -0.00000112, 0.00000000],
+		[-6.27263715, -0.00063979, 0.00039206, 0.00064305, -0.00000112, 0.00000000],
+		[-6.27263747, -0.00063966, 0.00039198, 0.00064292, -0.00000112, 0.00000000],
+		[-6.27263778, -0.00063952, 0.00039190, 0.00064279, -0.00000112, 0.00000000],
+		[-6.27263810, -0.00063939, 0.00039182, 0.00064265, -0.00000112, 0.00000000],
+		[-6.27263842, -0.00063926, 0.00039174, 0.00064252, -0.00000112, 0.00000000],
+		[-6.27263873, -0.00063913, 0.00039166, 0.00064239, -0.00000112, 0.00000000],
+		[-6.27263905, -0.00063900, 0.00039158, 0.00064226, -0.00000112, 0.00000000],
+		[-6.27263936, -0.00063886, 0.00039150, 0.00064212, -0.00000112, 0.00000000],
+		[-6.27263968, -0.00063873, 0.00039142, 0.00064199, -0.00000112, 0.00000000],
+		[-6.27263999, -0.00063860, 0.00039134, 0.00064186, -0.00000112, 0.00000000],
+		[-6.27264031, -0.00063847, 0.00039126, 0.00064173, -0.00000112, 0.00000000],
+		[-6.27264063, -0.00063834, 0.00039117, 0.00064159, -0.00000112, 0.00000000],
+		[-6.27264094, -0.00063821, 0.00039109, 0.00064146, -0.00000112, 0.00000000],
+		[-6.27264126, -0.00063807, 0.00039101, 0.00064133, -0.00000112, 0.00000000],
+		[-6.27264157, -0.00063794, 0.00039093, 0.00064120, -0.00000112, 0.00000000],
+		[-6.27264188, -0.00063781, 0.00039085, 0.00064106, -0.00000112, 0.00000000],
+		[-6.27264220, -0.00063768, 0.00039077, 0.00064093, -0.00000112, 0.00000000],
+		[-6.27264251, -0.00063755, 0.00039069, 0.00064080, -0.00000113, 0.00000000],
+		[-6.27264283, -0.00063742, 0.00039061, 0.00064067, -0.00000113, 0.00000000],
+		[-6.27264314, -0.00063729, 0.00039053, 0.00064054, -0.00000113, 0.00000000],
+		[-6.27264346, -0.00063716, 0.00039045, 0.00064040, -0.00000113, 0.00000000],
+		[-6.27264377, -0.00063702, 0.00039037, 0.00064027, -0.00000113, 0.00000000],
+		[-6.27264408, -0.00063689, 0.00039029, 0.00064014, -0.00000113, 0.00000000],
+		[-6.27264440, -0.00063676, 0.00039021, 0.00064001, -0.00000113, 0.00000000],
+		[-6.27264471, -0.00063663, 0.00039013, 0.00063988, -0.00000113, 0.00000000],
+		[-6.27264502, -0.00063650, 0.00039005, 0.00063975, -0.00000113, 0.00000000],
+		[-6.27264534, -0.00063637, 0.00038997, 0.00063961, -0.00000113, 0.00000000],
+		[-6.27264565, -0.00063624, 0.00038989, 0.00063948, -0.00000113, 0.00000000],
+		[-6.27264596, -0.00063611, 0.00038981, 0.00063935, -0.00000113, 0.00000000],
+		[-6.27264628, -0.00063598, 0.00038973, 0.00063922, -0.00000113, 0.00000000],
+		[-6.27264659, -0.00063585, 0.00038965, 0.00063909, -0.00000113, 0.00000000],
+		[-6.27264690, -0.00063572, 0.00038957, 0.00063896, -0.00000113, 0.00000000],
+		[-6.27264721, -0.00063559, 0.00038949, 0.00063883, -0.00000113, 0.00000000],
+		[-6.27264753, -0.00063545, 0.00038941, 0.00063870, -0.00000113, 0.00000000],
+		[-6.27264784, -0.00063532, 0.00038933, 0.00063856, -0.00000113, 0.00000000],
+		[-6.27264815, -0.00063519, 0.00038925, 0.00063843, -0.00000113, 0.00000000],
+		[-6.27264846, -0.00063506, 0.00038917, 0.00063830, -0.00000113, 0.00000000],
+		[-6.27264877, -0.00063493, 0.00038909, 0.00063817, -0.00000113, 0.00000000],
+		[-6.27264909, -0.00063480, 0.00038901, 0.00063804, -0.00000113, 0.00000000],
+		[-6.27264940, -0.00063467, 0.00038893, 0.00063791, -0.00000113, 0.00000000],
+		[-6.27264971, -0.00063454, 0.00038885, 0.00063778, -0.00000113, 0.00000000],
+		[-6.27265002, -0.00063441, 0.00038877, 0.00063765, -0.00000113, 0.00000000],
+		[-6.27265033, -0.00063428, 0.00038869, 0.00063752, -0.00000113, 0.00000000],
+		[-6.27265064, -0.00063415, 0.00038861, 0.00063739, -0.00000113, 0.00000000],
+		[-6.27265095, -0.00063402, 0.00038853, 0.00063726, -0.00000113, 0.00000000],
+		[-6.27265126, -0.00063389, 0.00038845, 0.00063713, -0.00000113, 0.00000000],
+		[-6.27265157, -0.00063376, 0.00038837, 0.00063700, -0.00000113, 0.00000000],
+		[-6.27265189, -0.00063363, 0.00038829, 0.00063686, -0.00000113, 0.00000000],
+		[-6.27265220, -0.00063350, 0.00038821, 0.00063673, -0.00000113, 0.00000000],
+		[-6.27265251, -0.00063337, 0.00038813, 0.00063660, -0.00000113, 0.00000000],
+		[-6.27265282, -0.00063324, 0.00038805, 0.00063647, -0.00000113, 0.00000000],
+		[-6.27265313, -0.00063312, 0.00038797, 0.00063634, -0.00000113, 0.00000000],
+		[-6.27265344, -0.00063299, 0.00038789, 0.00063621, -0.00000113, 0.00000000],
+		[-6.27265375, -0.00063286, 0.00038781, 0.00063608, -0.00000113, 0.00000000],
+		[-6.27265406, -0.00063273, 0.00038773, 0.00063595, -0.00000113, 0.00000000],
+		[-6.27265436, -0.00063260, 0.00038765, 0.00063582, -0.00000113, 0.00000000],
+		[-6.27265467, -0.00063247, 0.00038758, 0.00063569, -0.00000113, 0.00000000],
+		[-6.27265498, -0.00063234, 0.00038750, 0.00063556, -0.00000113, 0.00000000],
+		[-6.27265529, -0.00063221, 0.00038742, 0.00063543, -0.00000113, 0.00000000],
+		[-6.27265560, -0.00063208, 0.00038734, 0.00063530, -0.00000113, 0.00000000],
+		[-6.27265591, -0.00063195, 0.00038726, 0.00063517, -0.00000113, 0.00000000],
+		[-6.27265622, -0.00063182, 0.00038718, 0.00063504, -0.00000113, 0.00000000],
+		[-6.27265653, -0.00063169, 0.00038710, 0.00063492, -0.00000113, 0.00000000],
+		[-6.27265684, -0.00063157, 0.00038702, 0.00063479, -0.00000113, 0.00000000],
+		[-6.27265714, -0.00063144, 0.00038694, 0.00063466, -0.00000113, 0.00000000],
+		[-6.27265745, -0.00063131, 0.00038686, 0.00063453, -0.00000113, 0.00000000],
+		[-6.27265776, -0.00063118, 0.00038678, 0.00063440, -0.00000113, 0.00000000],
+		[-6.27265807, -0.00063105, 0.00038671, 0.00063427, -0.00000113, 0.00000000],
+		[-6.27265838, -0.00063092, 0.00038663, 0.00063414, -0.00000113, 0.00000000],
+		[-6.27265868, -0.00063079, 0.00038655, 0.00063401, -0.00000113, 0.00000000],
+		[-6.27265899, -0.00063066, 0.00038647, 0.00063388, -0.00000113, 0.00000000],
+		[-6.27265930, -0.00063054, 0.00038639, 0.00063375, -0.00000113, 0.00000000],
+		[-6.27265961, -0.00063041, 0.00038631, 0.00063362, -0.00000113, 0.00000000],
+		[-6.27265991, -0.00063028, 0.00038623, 0.00063349, -0.00000113, 0.00000000],
+		[-6.27266022, -0.00063015, 0.00038615, 0.00063336, -0.00000113, 0.00000000],
+		[-6.27266053, -0.00063002, 0.00038608, 0.00063323, -0.00000113, 0.00000000],
+		[-6.27266083, -0.00062989, 0.00038600, 0.00063311, -0.00000113, 0.00000000],
+		[-6.27266114, -0.00062977, 0.00038592, 0.00063298, -0.00000113, 0.00000000],
+		[-6.27266145, -0.00062964, 0.00038584, 0.00063285, -0.00000113, 0.00000000],
+		[-6.27266175, -0.00062951, 0.00038576, 0.00063272, -0.00000113, 0.00000000],
+		[-6.27266206, -0.00062938, 0.00038568, 0.00063259, -0.00000113, 0.00000000],
+		[-6.27266237, -0.00062925, 0.00038560, 0.00063246, -0.00000113, 0.00000000],
+		[-6.27266267, -0.00062913, 0.00038553, 0.00063233, -0.00000113, 0.00000000],
+		[-6.27266298, -0.00062900, 0.00038545, 0.00063221, -0.00000113, 0.00000000],
+		[-6.27266329, -0.00062887, 0.00038537, 0.00063208, -0.00000113, 0.00000000],
+		[-6.27266359, -0.00062874, 0.00038529, 0.00063195, -0.00000113, 0.00000000],
+		[-6.27266390, -0.00062862, 0.00038521, 0.00063182, -0.00000113, 0.00000000],
+		[-6.27266420, -0.00062849, 0.00038513, 0.00063169, -0.00000113, 0.00000000],
+		[-6.27266451, -0.00062836, 0.00038506, 0.00063156, -0.00000113, 0.00000000],
+		[-6.27266481, -0.00062823, 0.00038498, 0.00063144, -0.00000113, 0.00000000],
+		[-6.27266512, -0.00062811, 0.00038490, 0.00063131, -0.00000113, 0.00000000],
+		[-6.27266542, -0.00062798, 0.00038482, 0.00063118, -0.00000113, 0.00000000],
+		[-6.27266573, -0.00062785, 0.00038474, 0.00063105, -0.00000113, 0.00000000],
+		[-6.27266603, -0.00062772, 0.00038467, 0.00063092, -0.00000113, 0.00000000],
+		[-6.27266634, -0.00062760, 0.00038459, 0.00063080, -0.00000113, 0.00000000],
+		[-6.27266664, -0.00062747, 0.00038451, 0.00063067, -0.00000113, 0.00000000],
+		[-6.27266695, -0.00062734, 0.00038443, 0.00063054, -0.00000113, 0.00000000],
+		[-6.27266725, -0.00062721, 0.00038435, 0.00063041, -0.00000113, 0.00000000],
+		[-6.27266755, -0.00062709, 0.00038428, 0.00063028, -0.00000113, 0.00000000],
+		[-6.27266786, -0.00062696, 0.00038420, 0.00063016, -0.00000113, 0.00000000],
+		[-6.27266816, -0.00062683, 0.00038412, 0.00063003, -0.00000113, 0.00000000],
+		[-6.27266847, -0.00062671, 0.00038404, 0.00062990, -0.00000113, 0.00000000],
+		[-6.27266877, -0.00062658, 0.00038396, 0.00062977, -0.00000113, 0.00000000],
+		[-6.27266907, -0.00062645, 0.00038389, 0.00062965, -0.00000113, 0.00000000],
+		[-6.27266938, -0.00062633, 0.00038381, 0.00062952, -0.00000113, 0.00000000],
+		[-6.27266968, -0.00062620, 0.00038373, 0.00062939, -0.00000113, 0.00000000],
+		[-6.27266998, -0.00062607, 0.00038365, 0.00062926, -0.00000113, 0.00000000],
+		[-6.27267028, -0.00062595, 0.00038358, 0.00062914, -0.00000113, 0.00000000],
+		[-6.27267059, -0.00062582, 0.00038350, 0.00062901, -0.00000113, 0.00000000],
+		[-6.27267089, -0.00062569, 0.00038342, 0.00062888, -0.00000113, 0.00000000],
+		[-6.27267119, -0.00062557, 0.00038334, 0.00062876, -0.00000113, 0.00000000],
+		[-6.27267150, -0.00062544, 0.00038327, 0.00062863, -0.00000113, 0.00000000],
+		[-6.27267180, -0.00062531, 0.00038319, 0.00062850, -0.00000113, 0.00000000],
+		[-6.27267210, -0.00062519, 0.00038311, 0.00062837, -0.00000113, 0.00000000],
+		[-6.27267240, -0.00062506, 0.00038303, 0.00062825, -0.00000113, 0.00000000],
+		[-6.27267270, -0.00062494, 0.00038296, 0.00062812, -0.00000113, 0.00000000],
+		[-6.27267301, -0.00062481, 0.00038288, 0.00062799, -0.00000113, 0.00000000],
+		[-6.27267331, -0.00062468, 0.00038280, 0.00062787, -0.00000113, 0.00000000],
+		[-6.27267361, -0.00062456, 0.00038272, 0.00062774, -0.00000113, 0.00000000],
+		[-6.27267391, -0.00062443, 0.00038265, 0.00062761, -0.00000113, 0.00000000],
+		[-6.27267421, -0.00062431, 0.00038257, 0.00062749, -0.00000113, 0.00000000],
+		[-6.27267451, -0.00062418, 0.00038249, 0.00062736, -0.00000113, 0.00000000],
+		[-6.27267481, -0.00062405, 0.00038241, 0.00062723, -0.00000113, 0.00000000],
+		[-6.27267512, -0.00062393, 0.00038234, 0.00062711, -0.00000113, 0.00000000],
+		[-6.27267542, -0.00062380, 0.00038226, 0.00062698, -0.00000113, 0.00000000],
+		[-6.27267572, -0.00062368, 0.00038218, 0.00062685, -0.00000113, 0.00000000],
+		[-6.27267602, -0.00062355, 0.00038211, 0.00062673, -0.00000113, 0.00000000],
+		[-6.27267632, -0.00062342, 0.00038203, 0.00062660, -0.00000113, 0.00000000],
+		[-6.27267662, -0.00062330, 0.00038195, 0.00062648, -0.00000113, 0.00000000],
+		[-6.27267692, -0.00062317, 0.00038188, 0.00062635, -0.00000113, 0.00000000],
+		[-6.27267722, -0.00062305, 0.00038180, 0.00062622, -0.00000113, 0.00000000],
+		[-6.27267752, -0.00062292, 0.00038172, 0.00062610, -0.00000113, 0.00000000],
+		[-6.27267782, -0.00062280, 0.00038164, 0.00062597, -0.00000113, 0.00000000],
+		[-6.27267812, -0.00062267, 0.00038157, 0.00062585, -0.00000113, 0.00000000],
+		[-6.27267842, -0.00062255, 0.00038149, 0.00062572, -0.00000113, 0.00000000],
+		[-6.27267872, -0.00062242, 0.00038141, 0.00062559, -0.00000113, 0.00000000],
+		[-6.27267902, -0.00062230, 0.00038134, 0.00062547, -0.00000113, 0.00000000],
+		[-6.27267932, -0.00062217, 0.00038126, 0.00062534, -0.00000113, 0.00000000],
+		[-6.27267962, -0.00062205, 0.00038118, 0.00062522, -0.00000113, 0.00000000],
+		[-6.27267992, -0.00062192, 0.00038111, 0.00062509, -0.00000113, 0.00000000],
+		[-6.27268021, -0.00062180, 0.00038103, 0.00062497, -0.00000113, 0.00000000],
+		[-6.27268051, -0.00062167, 0.00038095, 0.00062484, -0.00000113, 0.00000000],
+		[-6.27268081, -0.00062155, 0.00038088, 0.00062471, -0.00000113, 0.00000000],
+		[-6.27268111, -0.00062142, 0.00038080, 0.00062459, -0.00000113, 0.00000000],
+		[-6.27268141, -0.00062130, 0.00038072, 0.00062446, -0.00000113, 0.00000000],
+		[-6.27268171, -0.00062117, 0.00038065, 0.00062434, -0.00000113, 0.00000000],
+		[-6.27268201, -0.00062105, 0.00038057, 0.00062421, -0.00000113, 0.00000000],
+		[-6.27268230, -0.00062092, 0.00038050, 0.00062409, -0.00000113, 0.00000000],
+		[-6.27268260, -0.00062080, 0.00038042, 0.00062396, -0.00000113, 0.00000000],
+		[-6.27268290, -0.00062067, 0.00038034, 0.00062384, -0.00000113, 0.00000000],
+		[-6.27268320, -0.00062055, 0.00038027, 0.00062371, -0.00000113, 0.00000000],
+		[-6.27268350, -0.00062043, 0.00038019, 0.00062359, -0.00000113, 0.00000000],
+		[-6.27268379, -0.00062030, 0.00038011, 0.00062346, -0.00000113, 0.00000000],
+		[-6.27268409, -0.00062018, 0.00038004, 0.00062334, -0.00000113, 0.00000000],
+		[-6.27268439, -0.00062005, 0.00037996, 0.00062321, -0.00000113, 0.00000000],
+		[-6.27268468, -0.00061993, 0.00037989, 0.00062309, -0.00000113, 0.00000000],
+		[-6.27268498, -0.00061980, 0.00037981, 0.00062296, -0.00000113, 0.00000000],
+		[-6.27268528, -0.00061968, 0.00037973, 0.00062284, -0.00000113, 0.00000000],
+		[-6.27268558, -0.00061956, 0.00037966, 0.00062271, -0.00000113, 0.00000000],
+		[-6.27268587, -0.00061943, 0.00037958, 0.00062259, -0.00000113, 0.00000000],
+		[-6.27268617, -0.00061931, 0.00037951, 0.00062246, -0.00000113, 0.00000000],
+		[-6.27268647, -0.00061919, 0.00037943, 0.00062234, -0.00000113, 0.00000000],
+		[-6.27268676, -0.00061906, 0.00037935, 0.00062222, -0.00000113, 0.00000000],
+		[-6.27268706, -0.00061894, 0.00037928, 0.00062209, -0.00000113, 0.00000000],
+		[-6.27268735, -0.00061881, 0.00037920, 0.00062197, -0.00000113, 0.00000000],
+		[-6.27268765, -0.00061869, 0.00037913, 0.00062184, -0.00000113, 0.00000000],
+		[-6.27268795, -0.00061857, 0.00037905, 0.00062172, -0.00000113, 0.00000000],
+		[-6.27268824, -0.00061844, 0.00037897, 0.00062159, -0.00000113, 0.00000000],
+		[-6.27268854, -0.00061832, 0.00037890, 0.00062147, -0.00000113, 0.00000000],
+		[-6.27268883, -0.00061820, 0.00037882, 0.00062135, -0.00000113, 0.00000000],
+		[-6.27268913, -0.00061807, 0.00037875, 0.00062122, -0.00000113, 0.00000000],
+		[-6.27268942, -0.00061795, 0.00037867, 0.00062110, -0.00000113, 0.00000000],
+		[-6.27268972, -0.00061783, 0.00037860, 0.00062097, -0.00000113, 0.00000000],
+		[-6.27269001, -0.00061770, 0.00037852, 0.00062085, -0.00000113, 0.00000000],
+		[-6.27269031, -0.00061758, 0.00037844, 0.00062073, -0.00000113, 0.00000000],
+		[-6.27269060, -0.00061746, 0.00037837, 0.00062060, -0.00000113, 0.00000000],
+		[-6.27269090, -0.00061733, 0.00037829, 0.00062048, -0.00000113, 0.00000000],
+		[-6.27269119, -0.00061721, 0.00037822, 0.00062035, -0.00000113, 0.00000000],
+		[-6.27269149, -0.00061709, 0.00037814, 0.00062023, -0.00000113, 0.00000000],
+		[-6.27269178, -0.00061696, 0.00037807, 0.00062011, -0.00000113, 0.00000000],
+		[-6.27269208, -0.00061684, 0.00037799, 0.00061998, -0.00000113, 0.00000000],
+		[-6.27269237, -0.00061672, 0.00037792, 0.00061986, -0.00000113, 0.00000000],
+		[-6.27269266, -0.00061660, 0.00037784, 0.00061974, -0.00000113, 0.00000000],
+		[-6.27269296, -0.00061647, 0.00037777, 0.00061961, -0.00000113, 0.00000000],
+		[-6.27269325, -0.00061635, 0.00037769, 0.00061949, -0.00000113, 0.00000000],
+		[-6.27269354, -0.00061623, 0.00037762, 0.00061937, -0.00000113, 0.00000000],
+		[-6.27269384, -0.00061610, 0.00037754, 0.00061924, -0.00000113, 0.00000000],
+		[-6.27269413, -0.00061598, 0.00037746, 0.00061912, -0.00000113, 0.00000000],
+		[-6.27269442, -0.00061586, 0.00037739, 0.00061900, -0.00000113, 0.00000000],
+		[-6.27269472, -0.00061574, 0.00037731, 0.00061887, -0.00000113, 0.00000000],
+		[-6.27269501, -0.00061561, 0.00037724, 0.00061875, -0.00000113, 0.00000000],
+		[-6.27269530, -0.00061549, 0.00037716, 0.00061863, -0.00000113, 0.00000000],
+		[-6.27269560, -0.00061537, 0.00037709, 0.00061850, -0.00000113, 0.00000000],
+		[-6.27269589, -0.00061525, 0.00037701, 0.00061838, -0.00000113, 0.00000000],
+		[-6.27269618, -0.00061512, 0.00037694, 0.00061826, -0.00000113, 0.00000000],
+		[-6.27269647, -0.00061500, 0.00037686, 0.00061814, -0.00000113, 0.00000000],
+		[-6.27269677, -0.00061488, 0.00037679, 0.00061801, -0.00000113, 0.00000000],
+		[-6.27269706, -0.00061476, 0.00037671, 0.00061789, -0.00000113, 0.00000000],
+		[-6.27269735, -0.00061464, 0.00037664, 0.00061777, -0.00000113, 0.00000000],
+		[-6.27269764, -0.00061451, 0.00037656, 0.00061764, -0.00000113, 0.00000000],
+		[-6.27269793, -0.00061439, 0.00037649, 0.00061752, -0.00000113, 0.00000000],
+		[-6.27269823, -0.00061427, 0.00037642, 0.00061740, -0.00000113, 0.00000000],
+		[-6.27269852, -0.00061415, 0.00037634, 0.00061728, -0.00000113, 0.00000000],
+		[-6.27269881, -0.00061403, 0.00037627, 0.00061715, -0.00000113, 0.00000000],
+		[-6.27269910, -0.00061390, 0.00037619, 0.00061703, -0.00000113, 0.00000000],
+		[-6.27269939, -0.00061378, 0.00037612, 0.00061691, -0.00000113, 0.00000000],
+		[-6.27269968, -0.00061366, 0.00037604, 0.00061679, -0.00000113, 0.00000000],
+		[-6.27269997, -0.00061354, 0.00037597, 0.00061667, -0.00000113, 0.00000000],
+		[-6.27270027, -0.00061342, 0.00037589, 0.00061654, -0.00000113, 0.00000000],
+		[-6.27270056, -0.00061330, 0.00037582, 0.00061642, -0.00000113, 0.00000000],
+		[-6.27270085, -0.00061318, 0.00037574, 0.00061630, -0.00000113, 0.00000000],
+		[-6.27270114, -0.00061305, 0.00037567, 0.00061618, -0.00000113, 0.00000000],
+		[-6.27270143, -0.00061293, 0.00037559, 0.00061605, -0.00000113, 0.00000000],
+		[-6.27270172, -0.00061281, 0.00037552, 0.00061593, -0.00000113, 0.00000000],
+		[-6.27270201, -0.00061269, 0.00037545, 0.00061581, -0.00000113, 0.00000000],
+		[-6.27270230, -0.00061257, 0.00037537, 0.00061569, -0.00000113, 0.00000000],
+		[-6.27270259, -0.00061245, 0.00037530, 0.00061557, -0.00000113, 0.00000000],
+		[-6.27270288, -0.00061233, 0.00037522, 0.00061545, -0.00000113, 0.00000000],
+		[-6.27270317, -0.00061221, 0.00037515, 0.00061532, -0.00000113, 0.00000000],
+		[-6.27270346, -0.00061208, 0.00037507, 0.00061520, -0.00000113, 0.00000000],
+		[-6.27270375, -0.00061196, 0.00037500, 0.00061508, -0.00000113, 0.00000000],
+		[-6.27270404, -0.00061184, 0.00037493, 0.00061496, -0.00000113, 0.00000000],
+		[-6.27270433, -0.00061172, 0.00037485, 0.00061484, -0.00000113, 0.00000000],
+		[-6.27270462, -0.00061160, 0.00037478, 0.00061472, -0.00000113, 0.00000000],
+		[-6.27270490, -0.00061148, 0.00037470, 0.00061459, -0.00000113, 0.00000000],
+		[-6.27270519, -0.00061136, 0.00037463, 0.00061447, -0.00000113, 0.00000000],
+		[-6.27270548, -0.00061124, 0.00037456, 0.00061435, -0.00000113, 0.00000000],
+		[-6.27270577, -0.00061112, 0.00037448, 0.00061423, -0.00000113, 0.00000000],
+		[-6.27270606, -0.00061100, 0.00037441, 0.00061411, -0.00000113, 0.00000000],
+		[-6.27270635, -0.00061088, 0.00037433, 0.00061399, -0.00000113, 0.00000000],
+		[-6.27270664, -0.00061076, 0.00037426, 0.00061387, -0.00000113, 0.00000000],
+		[-6.27270692, -0.00061064, 0.00037419, 0.00061375, -0.00000113, 0.00000000],
+		[-6.27270721, -0.00061051, 0.00037411, 0.00061362, -0.00000113, 0.00000000],
+		[-6.27270750, -0.00061039, 0.00037404, 0.00061350, -0.00000113, 0.00000000],
+		[-6.27270779, -0.00061027, 0.00037396, 0.00061338, -0.00000113, 0.00000000],
+		[-6.27270808, -0.00061015, 0.00037389, 0.00061326, -0.00000113, 0.00000000],
+		[-6.27270836, -0.00061003, 0.00037382, 0.00061314, -0.00000113, 0.00000000],
+		[-6.27270865, -0.00060991, 0.00037374, 0.00061302, -0.00000113, 0.00000000],
+		[-6.27270894, -0.00060979, 0.00037367, 0.00061290, -0.00000113, 0.00000000],
+		[-6.27270923, -0.00060967, 0.00037360, 0.00061278, -0.00000113, 0.00000000],
+		[-6.27270951, -0.00060955, 0.00037352, 0.00061266, -0.00000113, 0.00000000],
+		[-6.27270980, -0.00060943, 0.00037345, 0.00061254, -0.00000113, 0.00000000],
+		[-6.27271009, -0.00060931, 0.00037338, 0.00061242, -0.00000113, 0.00000000],
+		[-6.27271038, -0.00060919, 0.00037330, 0.00061230, -0.00000113, 0.00000000],
+		[-6.27271066, -0.00060907, 0.00037323, 0.00061218, -0.00000113, 0.00000000],
+		[-6.27271095, -0.00060895, 0.00037315, 0.00061205, -0.00000113, 0.00000000],
+		[-6.27271124, -0.00060883, 0.00037308, 0.00061193, -0.00000113, 0.00000000],
+		[-6.27271152, -0.00060871, 0.00037301, 0.00061181, -0.00000113, 0.00000000],
+		[-6.27271181, -0.00060859, 0.00037293, 0.00061169, -0.00000113, 0.00000000],
+		[-6.27271209, -0.00060847, 0.00037286, 0.00061157, -0.00000113, 0.00000000],
+		[-6.27271238, -0.00060836, 0.00037279, 0.00061145, -0.00000113, 0.00000000],
+		[-6.27271267, -0.00060824, 0.00037271, 0.00061133, -0.00000113, 0.00000000],
+		[-6.27271295, -0.00060812, 0.00037264, 0.00061121, -0.00000113, 0.00000000],
+		[-6.27271324, -0.00060800, 0.00037257, 0.00061109, -0.00000113, 0.00000000],
+		[-6.27271352, -0.00060788, 0.00037249, 0.00061097, -0.00000113, 0.00000000],
+		[-6.27271381, -0.00060776, 0.00037242, 0.00061085, -0.00000113, 0.00000000],
+		[-6.27271410, -0.00060764, 0.00037235, 0.00061073, -0.00000113, 0.00000000],
+		[-6.27271438, -0.00060752, 0.00037228, 0.00061061, -0.00000113, 0.00000000],
+		[-6.27271467, -0.00060740, 0.00037220, 0.00061049, -0.00000113, 0.00000000],
+		[-6.27271495, -0.00060728, 0.00037213, 0.00061037, -0.00000113, 0.00000000],
+		[-6.27271524, -0.00060716, 0.00037206, 0.00061025, -0.00000113, 0.00000000],
+		[-6.27271552, -0.00060704, 0.00037198, 0.00061013, -0.00000113, 0.00000000],
+		[-6.27271581, -0.00060692, 0.00037191, 0.00061001, -0.00000113, 0.00000000],
+		[-6.27271609, -0.00060680, 0.00037184, 0.00060989, -0.00000113, 0.00000000],
+		[-6.27271637, -0.00060669, 0.00037176, 0.00060978, -0.00000113, 0.00000000],
+		[-6.27271666, -0.00060657, 0.00037169, 0.00060966, -0.00000113, 0.00000000],
+		[-6.27271694, -0.00060645, 0.00037162, 0.00060954, -0.00000113, 0.00000000],
+		[-6.27271723, -0.00060633, 0.00037155, 0.00060942, -0.00000113, 0.00000000],
+		[-6.27271751, -0.00060621, 0.00037147, 0.00060930, -0.00000113, 0.00000000],
+		[-6.27271780, -0.00060609, 0.00037140, 0.00060918, -0.00000113, 0.00000000],
+		[-6.27271808, -0.00060597, 0.00037133, 0.00060906, -0.00000113, 0.00000000],
+		[-6.27271836, -0.00060585, 0.00037125, 0.00060894, -0.00000113, 0.00000000],
+		[-6.27271865, -0.00060574, 0.00037118, 0.00060882, -0.00000113, 0.00000000],
+		[-6.27271893, -0.00060562, 0.00037111, 0.00060870, -0.00000113, 0.00000000],
+		[-6.27271921, -0.00060550, 0.00037104, 0.00060858, -0.00000113, 0.00000000],
+		[-6.27271950, -0.00060538, 0.00037096, 0.00060846, -0.00000113, 0.00000000],
+		[-6.27271978, -0.00060526, 0.00037089, 0.00060834, -0.00000113, 0.00000000],
+		[-6.27272006, -0.00060514, 0.00037082, 0.00060823, -0.00000113, 0.00000000],
+		[-6.27272035, -0.00060503, 0.00037075, 0.00060811, -0.00000113, 0.00000000],
+		[-6.27272063, -0.00060491, 0.00037067, 0.00060799, -0.00000113, 0.00000000],
+		[-6.27272091, -0.00060479, 0.00037060, 0.00060787, -0.00000113, 0.00000000],
+		[-6.27272120, -0.00060467, 0.00037053, 0.00060775, -0.00000113, 0.00000000],
+		[-6.27272148, -0.00060455, 0.00037046, 0.00060763, -0.00000113, 0.00000000],
+		[-6.27272176, -0.00060444, 0.00037038, 0.00060751, -0.00000113, 0.00000000],
+		[-6.27272204, -0.00060432, 0.00037031, 0.00060739, -0.00000113, 0.00000000],
+		[-6.27272232, -0.00060420, 0.00037024, 0.00060728, -0.00000113, 0.00000000],
+		[-6.27272261, -0.00060408, 0.00037017, 0.00060716, -0.00000113, 0.00000000],
+		[-6.27272289, -0.00060396, 0.00037009, 0.00060704, -0.00000113, 0.00000000],
+		[-6.27272317, -0.00060385, 0.00037002, 0.00060692, -0.00000113, 0.00000000],
+		[-6.27272345, -0.00060373, 0.00036995, 0.00060680, -0.00000113, 0.00000000],
+		[-6.27272373, -0.00060361, 0.00036988, 0.00060668, -0.00000113, 0.00000000],
+		[-6.27272402, -0.00060349, 0.00036981, 0.00060657, -0.00000113, 0.00000000],
+		[-6.27272430, -0.00060337, 0.00036973, 0.00060645, -0.00000113, 0.00000000],
+		[-6.27272458, -0.00060326, 0.00036966, 0.00060633, -0.00000113, 0.00000000],
+		[-6.27272486, -0.00060314, 0.00036959, 0.00060621, -0.00000113, 0.00000000],
+		[-6.27272514, -0.00060302, 0.00036952, 0.00060609, -0.00000113, 0.00000000],
+		[-6.27272542, -0.00060290, 0.00036945, 0.00060597, -0.00000113, 0.00000000],
+		[-6.27272570, -0.00060279, 0.00036937, 0.00060586, -0.00000113, 0.00000000],
+		[-6.27272598, -0.00060267, 0.00036930, 0.00060574, -0.00000113, 0.00000000],
+		[-6.27272626, -0.00060255, 0.00036923, 0.00060562, -0.00000113, 0.00000000],
+		[-6.27272654, -0.00060244, 0.00036916, 0.00060550, -0.00000113, 0.00000000],
+		[-6.27272683, -0.00060232, 0.00036909, 0.00060538, -0.00000113, 0.00000000],
+		[-6.27272711, -0.00060220, 0.00036901, 0.00060527, -0.00000113, 0.00000000],
+		[-6.27272739, -0.00060208, 0.00036894, 0.00060515, -0.00000113, 0.00000000],
+		[-6.27272767, -0.00060197, 0.00036887, 0.00060503, -0.00000113, 0.00000000],
+		[-6.27272795, -0.00060185, 0.00036880, 0.00060491, -0.00000113, 0.00000000],
+		[-6.27272823, -0.00060173, 0.00036873, 0.00060480, -0.00000113, 0.00000000],
+		[-6.27272851, -0.00060162, 0.00036865, 0.00060468, -0.00000113, 0.00000000],
+		[-6.27272879, -0.00060150, 0.00036858, 0.00060456, -0.00000113, 0.00000000],
+		[-6.27272907, -0.00060138, 0.00036851, 0.00060444, -0.00000113, 0.00000000],
+		[-6.27272934, -0.00060127, 0.00036844, 0.00060433, -0.00000113, 0.00000000],
+		[-6.27272962, -0.00060115, 0.00036837, 0.00060421, -0.00000113, 0.00000000],
+		[-6.27272990, -0.00060103, 0.00036830, 0.00060409, -0.00000113, 0.00000000],
+		[-6.27273018, -0.00060092, 0.00036823, 0.00060397, -0.00000113, 0.00000000],
+		[-6.27273046, -0.00060080, 0.00036815, 0.00060386, -0.00000113, 0.00000000],
+		[-6.27273074, -0.00060068, 0.00036808, 0.00060374, -0.00000113, 0.00000000],
+		[-6.27273102, -0.00060057, 0.00036801, 0.00060362, -0.00000113, 0.00000000],
+		[-6.27273130, -0.00060045, 0.00036794, 0.00060351, -0.00000113, 0.00000000],
+		[-6.27273158, -0.00060033, 0.00036787, 0.00060339, -0.00000113, 0.00000000],
+		[-6.27273186, -0.00060022, 0.00036780, 0.00060327, -0.00000113, 0.00000000],
+		[-6.27273213, -0.00060010, 0.00036773, 0.00060315, -0.00000113, 0.00000000],
+		[-6.27273241, -0.00059998, 0.00036765, 0.00060304, -0.00000113, 0.00000000],
+		[-6.27273269, -0.00059987, 0.00036758, 0.00060292, -0.00000113, 0.00000000],
+		[-6.27273297, -0.00059975, 0.00036751, 0.00060280, -0.00000113, 0.00000000],
+		[-6.27273325, -0.00059963, 0.00036744, 0.00060269, -0.00000113, 0.00000000],
+		[-6.27273352, -0.00059952, 0.00036737, 0.00060257, -0.00000113, 0.00000000],
+		[-6.27273380, -0.00059940, 0.00036730, 0.00060245, -0.00000113, 0.00000000],
+		[-6.27273408, -0.00059929, 0.00036723, 0.00060234, -0.00000113, 0.00000000],
+		[-6.27273436, -0.00059917, 0.00036716, 0.00060222, -0.00000113, 0.00000000],
+		[-6.27273463, -0.00059905, 0.00036708, 0.00060210, -0.00000113, 0.00000000],
+		[-6.27273491, -0.00059894, 0.00036701, 0.00060199, -0.00000113, 0.00000000],
+		[-6.27273519, -0.00059882, 0.00036694, 0.00060187, -0.00000113, 0.00000000],
+		[-6.27273547, -0.00059871, 0.00036687, 0.00060175, -0.00000113, 0.00000000],
+		[-6.27273574, -0.00059859, 0.00036680, 0.00060164, -0.00000113, 0.00000000],
+		[-6.27273602, -0.00059848, 0.00036673, 0.00060152, -0.00000113, 0.00000000],
+		[-6.27273630, -0.00059836, 0.00036666, 0.00060141, -0.00000113, 0.00000000],
+		[-6.27273657, -0.00059824, 0.00036659, 0.00060129, -0.00000113, 0.00000000],
+		[-6.27273685, -0.00059813, 0.00036652, 0.00060117, -0.00000113, 0.00000000],
+		[-6.27273713, -0.00059801, 0.00036645, 0.00060106, -0.00000113, 0.00000000],
+		[-6.27273740, -0.00059790, 0.00036637, 0.00060094, -0.00000113, 0.00000000],
+		[-6.27273768, -0.00059778, 0.00036630, 0.00060082, -0.00000113, 0.00000000],
+		[-6.27273796, -0.00059767, 0.00036623, 0.00060071, -0.00000113, 0.00000000],
+		[-6.27273823, -0.00059755, 0.00036616, 0.00060059, -0.00000113, 0.00000000],
+		[-6.27273851, -0.00059744, 0.00036609, 0.00060048, -0.00000113, 0.00000000],
+		[-6.27273878, -0.00059732, 0.00036602, 0.00060036, -0.00000113, 0.00000000],
+		[-6.27273906, -0.00059721, 0.00036595, 0.00060025, -0.00000113, 0.00000000],
+		[-6.27273933, -0.00059709, 0.00036588, 0.00060013, -0.00000113, 0.00000000],
+		[-6.27273961, -0.00059698, 0.00036581, 0.00060001, -0.00000113, 0.00000000],
+		[-6.27273989, -0.00059686, 0.00036574, 0.00059990, -0.00000113, 0.00000000],
+		[-6.27274016, -0.00059674, 0.00036567, 0.00059978, -0.00000113, 0.00000000],
+		[-6.27274044, -0.00059663, 0.00036560, 0.00059967, -0.00000113, 0.00000000],
+		[-6.27274071, -0.00059651, 0.00036553, 0.00059955, -0.00000113, 0.00000000],
+		[-6.27274099, -0.00059640, 0.00036546, 0.00059944, -0.00000113, 0.00000000],
+		[-6.27274126, -0.00059629, 0.00036539, 0.00059932, -0.00000113, 0.00000000],
+		[-6.27274154, -0.00059617, 0.00036532, 0.00059920, -0.00000113, 0.00000000],
+		[-6.27274181, -0.00059606, 0.00036525, 0.00059909, -0.00000113, 0.00000000],
+		[-6.27274208, -0.00059594, 0.00036517, 0.00059897, -0.00000113, 0.00000000],
+		[-6.27274236, -0.00059583, 0.00036510, 0.00059886, -0.00000113, 0.00000000],
+		[-6.27274263, -0.00059571, 0.00036503, 0.00059874, -0.00000113, 0.00000000],
+		[-6.27274291, -0.00059560, 0.00036496, 0.00059863, -0.00000113, 0.00000000],
+		[-6.27274318, -0.00059548, 0.00036489, 0.00059851, -0.00000113, 0.00000000],
+		[-6.27274346, -0.00059537, 0.00036482, 0.00059840, -0.00000113, 0.00000000],
+		[-6.27274373, -0.00059525, 0.00036475, 0.00059828, -0.00000113, 0.00000000],
+		[-6.27274400, -0.00059514, 0.00036468, 0.00059817, -0.00000113, 0.00000000],
+		[-6.27274428, -0.00059502, 0.00036461, 0.00059805, -0.00000113, 0.00000000],
+		[-6.27274455, -0.00059491, 0.00036454, 0.00059794, -0.00000113, 0.00000000],
+		[-6.27274482, -0.00059480, 0.00036447, 0.00059782, -0.00000113, 0.00000000],
+		[-6.27274510, -0.00059468, 0.00036440, 0.00059771, -0.00000113, 0.00000000],
+		[-6.27274537, -0.00059457, 0.00036433, 0.00059759, -0.00000113, 0.00000000],
+		[-6.27274564, -0.00059445, 0.00036426, 0.00059748, -0.00000113, 0.00000000],
+		[-6.27274592, -0.00059434, 0.00036419, 0.00059736, -0.00000113, 0.00000000],
+		[-6.27274619, -0.00059422, 0.00036412, 0.00059725, -0.00000113, 0.00000000],
+		[-6.27274646, -0.00059411, 0.00036405, 0.00059713, -0.00000113, 0.00000000],
+		[-6.27274674, -0.00059400, 0.00036398, 0.00059702, -0.00000113, 0.00000000],
+		[-6.27274701, -0.00059388, 0.00036391, 0.00059690, -0.00000113, 0.00000000],
+		[-6.27274728, -0.00059377, 0.00036384, 0.00059679, -0.00000113, 0.00000000],
+		[-6.27274755, -0.00059365, 0.00036377, 0.00059668, -0.00000113, 0.00000000],
+		[-6.27274783, -0.00059354, 0.00036370, 0.00059656, -0.00000113, 0.00000000],
+		[-6.27274810, -0.00059343, 0.00036363, 0.00059645, -0.00000113, 0.00000000],
+		[-6.27274837, -0.00059331, 0.00036356, 0.00059633, -0.00000113, 0.00000000],
+		[-6.27274864, -0.00059320, 0.00036349, 0.00059622, -0.00000113, 0.00000000],
+		[-6.27274891, -0.00059309, 0.00036342, 0.00059610, -0.00000113, 0.00000000],
+		[-6.27274919, -0.00059297, 0.00036335, 0.00059599, -0.00000113, 0.00000000],
+		[-6.27274946, -0.00059286, 0.00036329, 0.00059588, -0.00000113, 0.00000000],
+		[-6.27274973, -0.00059275, 0.00036322, 0.00059576, -0.00000113, 0.00000000],
+		[-6.27275000, -0.00059263, 0.00036315, 0.00059565, -0.00000113, 0.00000000],
+		[-6.27275027, -0.00059252, 0.00036308, 0.00059553, -0.00000113, 0.00000000],
+		[-6.27275054, -0.00059241, 0.00036301, 0.00059542, -0.00000113, 0.00000000],
+		[-6.27275081, -0.00059229, 0.00036294, 0.00059531, -0.00000113, 0.00000000],
+		[-6.27275109, -0.00059218, 0.00036287, 0.00059519, -0.00000113, 0.00000000],
+		[-6.27275136, -0.00059207, 0.00036280, 0.00059508, -0.00000113, 0.00000000],
+		[-6.27275163, -0.00059195, 0.00036273, 0.00059496, -0.00000113, 0.00000000],
+		[-6.27275190, -0.00059184, 0.00036266, 0.00059485, -0.00000113, 0.00000000],
+		[-6.27275217, -0.00059173, 0.00036259, 0.00059474, -0.00000113, 0.00000000],
+		[-6.27275244, -0.00059161, 0.00036252, 0.00059462, -0.00000113, 0.00000000],
+		[-6.27275271, -0.00059150, 0.00036245, 0.00059451, -0.00000113, 0.00000000],
+		[-6.27275298, -0.00059139, 0.00036238, 0.00059440, -0.00000113, 0.00000000],
+		[-6.27275325, -0.00059127, 0.00036231, 0.00059428, -0.00000113, 0.00000000],
+		[-6.27275352, -0.00059116, 0.00036224, 0.00059417, -0.00000113, 0.00000000],
+		[-6.27275379, -0.00059105, 0.00036217, 0.00059406, -0.00000113, 0.00000000],
+		[-6.27275406, -0.00059094, 0.00036211, 0.00059394, -0.00000113, 0.00000000],
+		[-6.27275433, -0.00059082, 0.00036204, 0.00059383, -0.00000113, 0.00000000],
+		[-6.27275460, -0.00059071, 0.00036197, 0.00059372, -0.00000113, 0.00000000],
+		[-6.27275487, -0.00059060, 0.00036190, 0.00059360, -0.00000113, 0.00000000],
+		[-6.27275514, -0.00059048, 0.00036183, 0.00059349, -0.00000113, 0.00000000],
+		[-6.27275541, -0.00059037, 0.00036176, 0.00059338, -0.00000113, 0.00000000],
+		[-6.27275568, -0.00059026, 0.00036169, 0.00059326, -0.00000113, 0.00000000],
+		[-6.27275595, -0.00059015, 0.00036162, 0.00059315, -0.00000113, 0.00000000],
+		[-6.27275622, -0.00059003, 0.00036155, 0.00059304, -0.00000113, 0.00000000],
+		[-6.27275649, -0.00058992, 0.00036148, 0.00059292, -0.00000113, 0.00000000],
+		[-6.27275675, -0.00058981, 0.00036141, 0.00059281, -0.00000113, 0.00000000],
+		[-6.27275702, -0.00058970, 0.00036135, 0.00059270, -0.00000113, 0.00000000],
+		[-6.27275729, -0.00058958, 0.00036128, 0.00059258, -0.00000113, 0.00000000],
+		[-6.27275756, -0.00058947, 0.00036121, 0.00059247, -0.00000113, 0.00000000],
+		[-6.27275783, -0.00058936, 0.00036114, 0.00059236, -0.00000113, 0.00000000],
+		[-6.27275810, -0.00058925, 0.00036107, 0.00059225, -0.00000113, 0.00000000],
+		[-6.27275837, -0.00058914, 0.00036100, 0.00059213, -0.00000113, 0.00000000],
+		[-6.27275863, -0.00058902, 0.00036093, 0.00059202, -0.00000113, 0.00000000],
+		[-6.27275890, -0.00058891, 0.00036086, 0.00059191, -0.00000113, 0.00000000],
+		[-6.27275917, -0.00058880, 0.00036080, 0.00059180, -0.00000113, 0.00000000],
+		[-6.27275944, -0.00058869, 0.00036073, 0.00059168, -0.00000113, 0.00000000],
+		[-6.27275971, -0.00058858, 0.00036066, 0.00059157, -0.00000113, 0.00000000],
+		[-6.27275997, -0.00058846, 0.00036059, 0.00059146, -0.00000113, 0.00000000],
+		[-6.27276024, -0.00058835, 0.00036052, 0.00059135, -0.00000113, 0.00000000],
+		[-6.27276051, -0.00058824, 0.00036045, 0.00059123, -0.00000113, 0.00000000],
+		[-6.27276078, -0.00058813, 0.00036038, 0.00059112, -0.00000113, 0.00000000],
+		[-6.27276104, -0.00058802, 0.00036032, 0.00059101, -0.00000113, 0.00000000],
+		[-6.27276131, -0.00058790, 0.00036025, 0.00059090, -0.00000113, 0.00000000],
+		[-6.27276158, -0.00058779, 0.00036018, 0.00059078, -0.00000113, 0.00000000],
+		[-6.27276184, -0.00058768, 0.00036011, 0.00059067, -0.00000113, 0.00000000],
+		[-6.27276211, -0.00058757, 0.00036004, 0.00059056, -0.00000113, 0.00000000],
+		[-6.27276238, -0.00058746, 0.00035997, 0.00059045, -0.00000113, 0.00000000],
+		[-6.27276265, -0.00058735, 0.00035991, 0.00059034, -0.00000113, 0.00000000],
+		[-6.27276291, -0.00058724, 0.00035984, 0.00059022, -0.00000113, 0.00000000],
+		[-6.27276318, -0.00058712, 0.00035977, 0.00059011, -0.00000113, 0.00000000],
+		[-6.27276344, -0.00058701, 0.00035970, 0.00059000, -0.00000113, 0.00000000],
+		[-6.27276371, -0.00058690, 0.00035963, 0.00058989, -0.00000113, 0.00000000],
+		[-6.27276398, -0.00058679, 0.00035956, 0.00058978, -0.00000113, 0.00000000],
+		[-6.27276424, -0.00058668, 0.00035950, 0.00058966, -0.00000113, 0.00000000],
+		[-6.27276451, -0.00058657, 0.00035943, 0.00058955, -0.00000113, 0.00000000],
+		[-6.27276478, -0.00058646, 0.00035936, 0.00058944, -0.00000113, 0.00000000],
+		[-6.27276504, -0.00058635, 0.00035929, 0.00058933, -0.00000113, 0.00000000],
+		[-6.27276531, -0.00058623, 0.00035922, 0.00058922, -0.00000113, 0.00000000],
+		[-6.27276557, -0.00058612, 0.00035916, 0.00058911, -0.00000113, 0.00000000],
+		[-6.27276584, -0.00058601, 0.00035909, 0.00058899, -0.00000113, 0.00000000],
+		[-6.27276610, -0.00058590, 0.00035902, 0.00058888, -0.00000113, 0.00000000],
+		[-6.27276637, -0.00058579, 0.00035895, 0.00058877, -0.00000113, 0.00000000],
+		[-6.27276663, -0.00058568, 0.00035888, 0.00058866, -0.00000113, 0.00000000],
+		[-6.27276690, -0.00058557, 0.00035882, 0.00058855, -0.00000113, 0.00000000],
+		[-6.27276716, -0.00058546, 0.00035875, 0.00058844, -0.00000113, 0.00000000],
+		[-6.27276743, -0.00058535, 0.00035868, 0.00058833, -0.00000113, 0.00000000],
+		[-6.27276769, -0.00058524, 0.00035861, 0.00058821, -0.00000113, 0.00000000],
+		[-6.27276796, -0.00058513, 0.00035854, 0.00058810, -0.00000113, 0.00000000],
+		[-6.27276822, -0.00058502, 0.00035848, 0.00058799, -0.00000113, 0.00000000],
+		[-6.27276849, -0.00058491, 0.00035841, 0.00058788, -0.00000113, 0.00000000],
+		[-6.27276875, -0.00058480, 0.00035834, 0.00058777, -0.00000113, 0.00000000],
+		[-6.27276902, -0.00058468, 0.00035827, 0.00058766, -0.00000113, 0.00000000],
+		[-6.27276928, -0.00058457, 0.00035820, 0.00058755, -0.00000113, 0.00000000],
+		[-6.27276954, -0.00058446, 0.00035814, 0.00058744, -0.00000113, 0.00000000],
+		[-6.27276981, -0.00058435, 0.00035807, 0.00058733, -0.00000113, 0.00000000],
+		[-6.27277007, -0.00058424, 0.00035800, 0.00058721, -0.00000113, 0.00000000],
+		[-6.27277034, -0.00058413, 0.00035793, 0.00058710, -0.00000113, 0.00000000],
+		[-6.27277060, -0.00058402, 0.00035787, 0.00058699, -0.00000113, 0.00000000],
+		[-6.27277086, -0.00058391, 0.00035780, 0.00058688, -0.00000113, 0.00000000],
+		[-6.27277113, -0.00058380, 0.00035773, 0.00058677, -0.00000113, 0.00000000],
+		[-6.27277139, -0.00058369, 0.00035766, 0.00058666, -0.00000113, 0.00000000],
+		[-6.27277165, -0.00058358, 0.00035760, 0.00058655, -0.00000113, 0.00000000],
+		[-6.27277192, -0.00058347, 0.00035753, 0.00058644, -0.00000113, 0.00000000],
+		[-6.27277218, -0.00058336, 0.00035746, 0.00058633, -0.00000113, 0.00000000],
+		[-6.27277244, -0.00058325, 0.00035739, 0.00058622, -0.00000113, 0.00000000],
+		[-6.27277270, -0.00058314, 0.00035733, 0.00058611, -0.00000113, 0.00000000],
+		[-6.27277297, -0.00058303, 0.00035726, 0.00058600, -0.00000113, 0.00000000],
+		[-6.27277323, -0.00058292, 0.00035719, 0.00058589, -0.00000113, 0.00000000],
+		[-6.27277349, -0.00058281, 0.00035712, 0.00058578, -0.00000113, 0.00000000],
+		[-6.27277376, -0.00058270, 0.00035706, 0.00058567, -0.00000113, 0.00000000],
+		[-6.27277402, -0.00058259, 0.00035699, 0.00058556, -0.00000113, 0.00000000],
+		[-6.27277428, -0.00058248, 0.00035692, 0.00058545, -0.00000113, 0.00000000],
+		[-6.27277454, -0.00058237, 0.00035686, 0.00058534, -0.00000113, 0.00000000],
+		[-6.27277480, -0.00058227, 0.00035679, 0.00058523, -0.00000113, 0.00000000],
+		[-6.27277507, -0.00058216, 0.00035672, 0.00058512, -0.00000113, 0.00000000],
+		[-6.27277533, -0.00058205, 0.00035665, 0.00058501, -0.00000113, 0.00000000],
+		[-6.27277559, -0.00058194, 0.00035659, 0.00058490, -0.00000113, 0.00000000],
+		[-6.27277585, -0.00058183, 0.00035652, 0.00058479, -0.00000113, 0.00000000],
+		[-6.27277611, -0.00058172, 0.00035645, 0.00058468, -0.00000113, 0.00000000],
+		[-6.27277637, -0.00058161, 0.00035639, 0.00058457, -0.00000113, 0.00000000],
+		[-6.27277664, -0.00058150, 0.00035632, 0.00058446, -0.00000113, 0.00000000],
+		[-6.27277690, -0.00058139, 0.00035625, 0.00058435, -0.00000113, 0.00000000],
+		[-6.27277716, -0.00058128, 0.00035619, 0.00058424, -0.00000113, 0.00000000],
+		[-6.27277742, -0.00058117, 0.00035612, 0.00058413, -0.00000113, 0.00000000],
+		[-6.27277768, -0.00058106, 0.00035605, 0.00058402, -0.00000113, 0.00000000],
+		[-6.27277794, -0.00058095, 0.00035598, 0.00058391, -0.00000113, 0.00000000],
+		[-6.27277820, -0.00058084, 0.00035592, 0.00058380, -0.00000113, 0.00000000],
+		[-6.27277846, -0.00058074, 0.00035585, 0.00058369, -0.00000113, 0.00000000],
+		[-6.27277872, -0.00058063, 0.00035578, 0.00058358, -0.00000113, 0.00000000],
+		[-6.27277898, -0.00058052, 0.00035572, 0.00058347, -0.00000113, 0.00000000],
+		[-6.27277924, -0.00058041, 0.00035565, 0.00058336, -0.00000113, 0.00000000],
+		[-6.27277950, -0.00058030, 0.00035558, 0.00058325, -0.00000113, 0.00000000],
+		[-6.27277977, -0.00058019, 0.00035552, 0.00058314, -0.00000113, 0.00000000],
+		[-6.27278003, -0.00058008, 0.00035545, 0.00058303, -0.00000113, 0.00000000],
+		[-6.27278029, -0.00057997, 0.00035538, 0.00058292, -0.00000113, 0.00000000],
+		[-6.27278055, -0.00057987, 0.00035532, 0.00058281, -0.00000113, 0.00000000],
+		[-6.27278080, -0.00057976, 0.00035525, 0.00058271, -0.00000113, 0.00000000],
+		[-6.27278106, -0.00057965, 0.00035518, 0.00058260, -0.00000113, 0.00000000],
+		[-6.27278132, -0.00057954, 0.00035512, 0.00058249, -0.00000113, 0.00000000],
+		[-6.27278158, -0.00057943, 0.00035505, 0.00058238, -0.00000113, 0.00000000],
+		[-6.27278184, -0.00057932, 0.00035498, 0.00058227, -0.00000113, 0.00000000],
+		[-6.27278210, -0.00057921, 0.00035492, 0.00058216, -0.00000113, 0.00000000],
+		[-6.27278236, -0.00057911, 0.00035485, 0.00058205, -0.00000113, 0.00000000],
+		[-6.27278262, -0.00057900, 0.00035479, 0.00058194, -0.00000113, 0.00000000],
+		[-6.27278288, -0.00057889, 0.00035472, 0.00058183, -0.00000113, 0.00000000],
+		[-6.27278314, -0.00057878, 0.00035465, 0.00058172, -0.00000113, 0.00000000],
+		[-6.27278340, -0.00057867, 0.00035459, 0.00058162, -0.00000113, 0.00000000],
+		[-6.27278366, -0.00057857, 0.00035452, 0.00058151, -0.00000113, 0.00000000],
+		[-6.27278392, -0.00057846, 0.00035445, 0.00058140, -0.00000113, 0.00000000],
+		[-6.27278417, -0.00057835, 0.00035439, 0.00058129, -0.00000113, 0.00000000],
+		[-6.27278443, -0.00057824, 0.00035432, 0.00058118, -0.00000113, 0.00000000],
+		[-6.27278469, -0.00057813, 0.00035425, 0.00058107, -0.00000113, 0.00000000],
+		[-6.27278495, -0.00057802, 0.00035419, 0.00058096, -0.00000113, 0.00000000],
+		[-6.27278521, -0.00057792, 0.00035412, 0.00058086, -0.00000113, 0.00000000],
+		[-6.27278547, -0.00057781, 0.00035406, 0.00058075, -0.00000113, 0.00000000],
+		[-6.27278572, -0.00057770, 0.00035399, 0.00058064, -0.00000113, 0.00000000],
+		[-6.27278598, -0.00057759, 0.00035392, 0.00058053, -0.00000113, 0.00000000],
+		[-6.27278624, -0.00057749, 0.00035386, 0.00058042, -0.00000113, 0.00000000],
+		[-6.27278650, -0.00057738, 0.00035379, 0.00058031, -0.00000113, 0.00000000],
+		[-6.27278675, -0.00057727, 0.00035373, 0.00058021, -0.00000113, 0.00000000],
+		[-6.27278701, -0.00057716, 0.00035366, 0.00058010, -0.00000113, 0.00000000],
+		[-6.27278727, -0.00057706, 0.00035359, 0.00057999, -0.00000113, 0.00000000],
+		[-6.27278753, -0.00057695, 0.00035353, 0.00057988, -0.00000113, 0.00000000],
+		[-6.27278778, -0.00057684, 0.00035346, 0.00057977, -0.00000113, 0.00000000],
+		[-6.27278804, -0.00057673, 0.00035340, 0.00057966, -0.00000113, 0.00000000],
+		[-6.27278830, -0.00057663, 0.00035333, 0.00057956, -0.00000113, 0.00000000],
+		[-6.27278855, -0.00057652, 0.00035326, 0.00057945, -0.00000113, 0.00000000],
+		[-6.27278881, -0.00057641, 0.00035320, 0.00057934, -0.00000113, 0.00000000],
+		[-6.27278907, -0.00057630, 0.00035313, 0.00057923, -0.00000113, 0.00000000],
+		[-6.27278933, -0.00057620, 0.00035307, 0.00057913, -0.00000113, 0.00000000],
+		[-6.27278958, -0.00057609, 0.00035300, 0.00057902, -0.00000113, 0.00000000],
+		[-6.27278984, -0.00057598, 0.00035294, 0.00057891, -0.00000113, 0.00000000],
+		[-6.27279009, -0.00057587, 0.00035287, 0.00057880, -0.00000113, 0.00000000],
+		[-6.27279035, -0.00057577, 0.00035280, 0.00057869, -0.00000113, 0.00000000],
+		[-6.27279061, -0.00057566, 0.00035274, 0.00057859, -0.00000113, 0.00000000],
+		[-6.27279086, -0.00057555, 0.00035267, 0.00057848, -0.00000113, 0.00000000],
+		[-6.27279112, -0.00057545, 0.00035261, 0.00057837, -0.00000113, 0.00000000],
+		[-6.27279137, -0.00057534, 0.00035254, 0.00057826, -0.00000113, 0.00000000],
+		[-6.27279163, -0.00057523, 0.00035248, 0.00057816, -0.00000113, 0.00000000],
+		[-6.27279189, -0.00057513, 0.00035241, 0.00057805, -0.00000113, 0.00000000],
+		[-6.27279214, -0.00057502, 0.00035235, 0.00057794, -0.00000113, 0.00000000],
+		[-6.27279240, -0.00057491, 0.00035228, 0.00057783, -0.00000113, 0.00000000],
+		[-6.27279265, -0.00057480, 0.00035221, 0.00057773, -0.00000113, 0.00000000],
+		[-6.27279291, -0.00057470, 0.00035215, 0.00057762, -0.00000113, 0.00000000],
+		[-6.27279316, -0.00057459, 0.00035208, 0.00057751, -0.00000113, 0.00000000],
+		[-6.27279342, -0.00057448, 0.00035202, 0.00057741, -0.00000113, 0.00000000],
+		[-6.27279367, -0.00057438, 0.00035195, 0.00057730, -0.00000113, 0.00000000],
+		[-6.27279393, -0.00057427, 0.00035189, 0.00057719, -0.00000113, 0.00000000],
+		[-6.27279418, -0.00057417, 0.00035182, 0.00057708, -0.00000113, 0.00000000],
+		[-6.27279444, -0.00057406, 0.00035176, 0.00057698, -0.00000113, 0.00000000],
+		[-6.27279469, -0.00057395, 0.00035169, 0.00057687, -0.00000113, 0.00000000],
+		[-6.27279495, -0.00057385, 0.00035163, 0.00057676, -0.00000113, 0.00000000],
+		[-6.27279520, -0.00057374, 0.00035156, 0.00057666, -0.00000113, 0.00000000],
+		[-6.27279546, -0.00057363, 0.00035150, 0.00057655, -0.00000113, 0.00000000],
+		[-6.27279571, -0.00057353, 0.00035143, 0.00057644, -0.00000113, 0.00000000],
+		[-6.27279596, -0.00057342, 0.00035137, 0.00057634, -0.00000113, 0.00000000],
+		[-6.27279622, -0.00057331, 0.00035130, 0.00057623, -0.00000113, 0.00000000],
+		[-6.27279647, -0.00057321, 0.00035124, 0.00057612, -0.00000113, 0.00000000],
+		[-6.27279673, -0.00057310, 0.00035117, 0.00057602, -0.00000113, 0.00000000],
+		[-6.27279698, -0.00057300, 0.00035111, 0.00057591, -0.00000113, 0.00000000],
+		[-6.27279723, -0.00057289, 0.00035104, 0.00057580, -0.00000113, 0.00000000],
+		[-6.27279749, -0.00057278, 0.00035098, 0.00057570, -0.00000113, 0.00000000],
+		[-6.27279774, -0.00057268, 0.00035091, 0.00057559, -0.00000113, 0.00000000],
+		[-6.27279799, -0.00057257, 0.00035085, 0.00057548, -0.00000113, 0.00000000],
+		[-6.27279825, -0.00057247, 0.00035078, 0.00057538, -0.00000113, 0.00000000],
+		[-6.27279850, -0.00057236, 0.00035072, 0.00057527, -0.00000113, 0.00000000],
+		[-6.27279875, -0.00057225, 0.00035065, 0.00057516, -0.00000113, 0.00000000],
+		[-6.27279901, -0.00057215, 0.00035059, 0.00057506, -0.00000113, 0.00000000],
+		[-6.27279926, -0.00057204, 0.00035052, 0.00057495, -0.00000113, 0.00000000],
+		[-6.27279951, -0.00057194, 0.00035046, 0.00057484, -0.00000113, 0.00000000],
+		[-6.27279977, -0.00057183, 0.00035039, 0.00057474, -0.00000113, 0.00000000],
+		[-6.27280002, -0.00057173, 0.00035033, 0.00057463, -0.00000113, 0.00000000],
+		[-6.27280027, -0.00057162, 0.00035026, 0.00057453, -0.00000113, 0.00000000],
+		[-6.27280052, -0.00057152, 0.00035020, 0.00057442, -0.00000113, 0.00000000],
+		[-6.27280078, -0.00057141, 0.00035013, 0.00057431, -0.00000113, 0.00000000],
+		[-6.27280103, -0.00057130, 0.00035007, 0.00057421, -0.00000113, 0.00000000],
+		[-6.27280128, -0.00057120, 0.00035000, 0.00057410, -0.00000113, 0.00000000],
+		[-6.27280153, -0.00057109, 0.00034994, 0.00057400, -0.00000113, 0.00000000],
+		[-6.27280178, -0.00057099, 0.00034987, 0.00057389, -0.00000113, 0.00000000],
+		[-6.27280204, -0.00057088, 0.00034981, 0.00057378, -0.00000113, 0.00000000],
+		[-6.27280229, -0.00057078, 0.00034974, 0.00057368, -0.00000113, 0.00000000],
+		[-6.27280254, -0.00057067, 0.00034968, 0.00057357, -0.00000113, 0.00000000],
+		[-6.27280279, -0.00057057, 0.00034962, 0.00057347, -0.00000113, 0.00000000],
+		[-6.27280304, -0.00057046, 0.00034955, 0.00057336, -0.00000113, 0.00000000],
+		[-6.27280329, -0.00057036, 0.00034949, 0.00057326, -0.00000113, 0.00000000],
+		[-6.27280355, -0.00057025, 0.00034942, 0.00057315, -0.00000113, 0.00000000],
+		[-6.27280380, -0.00057015, 0.00034936, 0.00057304, -0.00000113, 0.00000000],
+		[-6.27280405, -0.00057004, 0.00034929, 0.00057294, -0.00000113, 0.00000000],
+		[-6.27280430, -0.00056994, 0.00034923, 0.00057283, -0.00000113, 0.00000000],
+		[-6.27280455, -0.00056983, 0.00034916, 0.00057273, -0.00000113, 0.00000000],
+		[-6.27280480, -0.00056973, 0.00034910, 0.00057262, -0.00000113, 0.00000000],
+		[-6.27280505, -0.00056962, 0.00034904, 0.00057252, -0.00000113, 0.00000000],
+		[-6.27280530, -0.00056952, 0.00034897, 0.00057241, -0.00000113, 0.00000000],
+		[-6.27280555, -0.00056941, 0.00034891, 0.00057231, -0.00000113, 0.00000000],
+		[-6.27280580, -0.00056931, 0.00034884, 0.00057220, -0.00000113, 0.00000000],
+		[-6.27280606, -0.00056920, 0.00034878, 0.00057210, -0.00000113, 0.00000000],
+		[-6.27280631, -0.00056910, 0.00034872, 0.00057199, -0.00000113, 0.00000000],
+		[-6.27280656, -0.00056899, 0.00034865, 0.00057189, -0.00000113, 0.00000000],
+		[-6.27280681, -0.00056889, 0.00034859, 0.00057178, -0.00000113, 0.00000000],
+		[-6.27280706, -0.00056878, 0.00034852, 0.00057168, -0.00000113, 0.00000000],
+		[-6.27280731, -0.00056868, 0.00034846, 0.00057157, -0.00000113, 0.00000000],
+		[-6.27280756, -0.00056858, 0.00034839, 0.00057147, -0.00000113, 0.00000000],
+		[-6.27280781, -0.00056847, 0.00034833, 0.00057136, -0.00000113, 0.00000000],
+		[-6.27280806, -0.00056837, 0.00034827, 0.00057126, -0.00000113, 0.00000000],
+		[-6.27280830, -0.00056826, 0.00034820, 0.00057115, -0.00000113, 0.00000000],
+		[-6.27280855, -0.00056816, 0.00034814, 0.00057105, -0.00000113, 0.00000000],
+		[-6.27280880, -0.00056805, 0.00034807, 0.00057094, -0.00000113, 0.00000000],
+		[-6.27280905, -0.00056795, 0.00034801, 0.00057084, -0.00000113, 0.00000000],
+		[-6.27280930, -0.00056785, 0.00034795, 0.00057073, -0.00000113, 0.00000000],
+		[-6.27280955, -0.00056774, 0.00034788, 0.00057063, -0.00000113, 0.00000000],
+		[-6.27280980, -0.00056764, 0.00034782, 0.00057052, -0.00000113, 0.00000000],
+		[-6.27281005, -0.00056753, 0.00034776, 0.00057042, -0.00000113, 0.00000000],
+		[-6.27281030, -0.00056743, 0.00034769, 0.00057031, -0.00000113, 0.00000000],
+		[-6.27281055, -0.00056733, 0.00034763, 0.00057021, -0.00000113, 0.00000000],
+		[-6.27281080, -0.00056722, 0.00034756, 0.00057010, -0.00000113, 0.00000000],
+		[-6.27281104, -0.00056712, 0.00034750, 0.00057000, -0.00000113, 0.00000000],
+		[-6.27281129, -0.00056701, 0.00034744, 0.00056990, -0.00000113, 0.00000000],
+		[-6.27281154, -0.00056691, 0.00034737, 0.00056979, -0.00000113, 0.00000000],
+		[-6.27281179, -0.00056681, 0.00034731, 0.00056969, -0.00000113, 0.00000000],
+		[-6.27281204, -0.00056670, 0.00034725, 0.00056958, -0.00000113, 0.00000000],
+		[-6.27281229, -0.00056660, 0.00034718, 0.00056948, -0.00000113, 0.00000000],
+		[-6.27281253, -0.00056649, 0.00034712, 0.00056937, -0.00000113, 0.00000000],
+		[-6.27281278, -0.00056639, 0.00034706, 0.00056927, -0.00000113, 0.00000000],
+		[-6.27281303, -0.00056629, 0.00034699, 0.00056917, -0.00000113, 0.00000000],
+		[-6.27281328, -0.00056618, 0.00034693, 0.00056906, -0.00000113, 0.00000000],
+		[-6.27281353, -0.00056608, 0.00034686, 0.00056896, -0.00000113, 0.00000000],
+		[-6.27281377, -0.00056598, 0.00034680, 0.00056885, -0.00000113, 0.00000000],
+		[-6.27281402, -0.00056587, 0.00034674, 0.00056875, -0.00000113, 0.00000000],
+		[-6.27281427, -0.00056577, 0.00034667, 0.00056865, -0.00000113, 0.00000000],
+		[-6.27281452, -0.00056567, 0.00034661, 0.00056854, -0.00000113, 0.00000000],
+		[-6.27281476, -0.00056556, 0.00034655, 0.00056844, -0.00000113, 0.00000000],
+		[-6.27281501, -0.00056546, 0.00034648, 0.00056833, -0.00000113, 0.00000000],
+		[-6.27281526, -0.00056536, 0.00034642, 0.00056823, -0.00000113, 0.00000000],
+		[-6.27281550, -0.00056525, 0.00034636, 0.00056813, -0.00000113, 0.00000000],
+		[-6.27281575, -0.00056515, 0.00034629, 0.00056802, -0.00000113, 0.00000000],
+		[-6.27281600, -0.00056505, 0.00034623, 0.00056792, -0.00000113, 0.00000000],
+		[-6.27281624, -0.00056494, 0.00034617, 0.00056781, -0.00000113, 0.00000000],
+		[-6.27281649, -0.00056484, 0.00034610, 0.00056771, -0.00000113, 0.00000000],
+		[-6.27281674, -0.00056474, 0.00034604, 0.00056761, -0.00000113, 0.00000000],
+		[-6.27281698, -0.00056463, 0.00034598, 0.00056750, -0.00000113, 0.00000000],
+		[-6.27281723, -0.00056453, 0.00034592, 0.00056740, -0.00000113, 0.00000000],
+		[-6.27281748, -0.00056443, 0.00034585, 0.00056730, -0.00000113, 0.00000000],
+		[-6.27281772, -0.00056433, 0.00034579, 0.00056719, -0.00000113, 0.00000000],
+		[-6.27281797, -0.00056422, 0.00034573, 0.00056709, -0.00000113, 0.00000000],
+		[-6.27281822, -0.00056412, 0.00034566, 0.00056699, -0.00000113, 0.00000000],
+		[-6.27281846, -0.00056402, 0.00034560, 0.00056688, -0.00000113, 0.00000000],
+		[-6.27281871, -0.00056391, 0.00034554, 0.00056678, -0.00000113, 0.00000000],
+		[-6.27281895, -0.00056381, 0.00034547, 0.00056668, -0.00000113, 0.00000000],
+		[-6.27281920, -0.00056371, 0.00034541, 0.00056657, -0.00000113, 0.00000000],
+		[-6.27281944, -0.00056361, 0.00034535, 0.00056647, -0.00000113, 0.00000000],
+		[-6.27281969, -0.00056350, 0.00034528, 0.00056637, -0.00000113, 0.00000000],
+		[-6.27281993, -0.00056340, 0.00034522, 0.00056626, -0.00000113, 0.00000000],
+		[-6.27282018, -0.00056330, 0.00034516, 0.00056616, -0.00000113, 0.00000000],
+		[-6.27282043, -0.00056320, 0.00034510, 0.00056606, -0.00000113, 0.00000000],
+		[-6.27282067, -0.00056309, 0.00034503, 0.00056596, -0.00000113, 0.00000000],
+		[-6.27282092, -0.00056299, 0.00034497, 0.00056585, -0.00000113, 0.00000000],
+		[-6.27282116, -0.00056289, 0.00034491, 0.00056575, -0.00000113, 0.00000000],
+		[-6.27282141, -0.00056279, 0.00034485, 0.00056565, -0.00000113, 0.00000000],
+		[-6.27282165, -0.00056268, 0.00034478, 0.00056554, -0.00000113, 0.00000000],
+		[-6.27282189, -0.00056258, 0.00034472, 0.00056544, -0.00000113, 0.00000000],
+		[-6.27282214, -0.00056248, 0.00034466, 0.00056534, -0.00000113, 0.00000000],
+		[-6.27282238, -0.00056238, 0.00034459, 0.00056524, -0.00000113, 0.00000000],
+		[-6.27282263, -0.00056228, 0.00034453, 0.00056513, -0.00000113, 0.00000000],
+		[-6.27282287, -0.00056217, 0.00034447, 0.00056503, -0.00000113, 0.00000000],
+		[-6.27282312, -0.00056207, 0.00034441, 0.00056493, -0.00000113, 0.00000000],
+		[-6.27282336, -0.00056197, 0.00034434, 0.00056483, -0.00000113, 0.00000000],
+		[-6.27282360, -0.00056187, 0.00034428, 0.00056472, -0.00000113, 0.00000000],
+		[-6.27282385, -0.00056177, 0.00034422, 0.00056462, -0.00000113, 0.00000000],
+		[-6.27282409, -0.00056166, 0.00034416, 0.00056452, -0.00000113, 0.00000000],
+		[-6.27282434, -0.00056156, 0.00034409, 0.00056442, -0.00000113, 0.00000000],
+		[-6.27282458, -0.00056146, 0.00034403, 0.00056431, -0.00000113, 0.00000000],
+		[-6.27282482, -0.00056136, 0.00034397, 0.00056421, -0.00000113, 0.00000000],
+		[-6.27282507, -0.00056126, 0.00034391, 0.00056411, -0.00000113, 0.00000000],
+		[-6.27282531, -0.00056115, 0.00034384, 0.00056401, -0.00000113, 0.00000000],
+		[-6.27282555, -0.00056105, 0.00034378, 0.00056390, -0.00000113, 0.00000000],
+		[-6.27282580, -0.00056095, 0.00034372, 0.00056380, -0.00000113, 0.00000000],
+		[-6.27282604, -0.00056085, 0.00034366, 0.00056370, -0.00000113, 0.00000000],
+		[-6.27282628, -0.00056075, 0.00034360, 0.00056360, -0.00000113, 0.00000000],
+		[-6.27282653, -0.00056065, 0.00034353, 0.00056349, -0.00000113, 0.00000000],
+		[-6.27282677, -0.00056055, 0.00034347, 0.00056339, -0.00000113, 0.00000000],
+		[-6.27282701, -0.00056044, 0.00034341, 0.00056329, -0.00000113, 0.00000000],
+		[-6.27282725, -0.00056034, 0.00034335, 0.00056319, -0.00000113, 0.00000000],
+		[-6.27282750, -0.00056024, 0.00034328, 0.00056309, -0.00000113, 0.00000000],
+		[-6.27282774, -0.00056014, 0.00034322, 0.00056299, -0.00000113, 0.00000000],
+		[-6.27282798, -0.00056004, 0.00034316, 0.00056288, -0.00000113, 0.00000000],
+		[-6.27282822, -0.00055994, 0.00034310, 0.00056278, -0.00000113, 0.00000000],
+		[-6.27282847, -0.00055984, 0.00034304, 0.00056268, -0.00000113, 0.00000000],
+		[-6.27282871, -0.00055973, 0.00034297, 0.00056258, -0.00000113, 0.00000000],
+		[-6.27282895, -0.00055963, 0.00034291, 0.00056248, -0.00000113, 0.00000000],
+		[-6.27282919, -0.00055953, 0.00034285, 0.00056237, -0.00000113, 0.00000000],
+		[-6.27282944, -0.00055943, 0.00034279, 0.00056227, -0.00000113, 0.00000000],
+		[-6.27282968, -0.00055933, 0.00034273, 0.00056217, -0.00000113, 0.00000000],
+		[-6.27282992, -0.00055923, 0.00034266, 0.00056207, -0.00000113, 0.00000000],
+		[-6.27283016, -0.00055913, 0.00034260, 0.00056197, -0.00000113, 0.00000000],
+		[-6.27283040, -0.00055903, 0.00034254, 0.00056187, -0.00000113, 0.00000000],
+		[-6.27283064, -0.00055893, 0.00034248, 0.00056177, -0.00000113, 0.00000000],
+		[-6.27283089, -0.00055882, 0.00034242, 0.00056166, -0.00000113, 0.00000000],
+		[-6.27283113, -0.00055872, 0.00034235, 0.00056156, -0.00000113, 0.00000000],
+		[-6.27283137, -0.00055862, 0.00034229, 0.00056146, -0.00000113, 0.00000000],
+		[-6.27283161, -0.00055852, 0.00034223, 0.00056136, -0.00000113, 0.00000000],
+		[-6.27283185, -0.00055842, 0.00034217, 0.00056126, -0.00000113, 0.00000000],
+		[-6.27283209, -0.00055832, 0.00034211, 0.00056116, -0.00000113, 0.00000000],
+		[-6.27283233, -0.00055822, 0.00034204, 0.00056106, -0.00000113, 0.00000000],
+		[-6.27283257, -0.00055812, 0.00034198, 0.00056095, -0.00000113, 0.00000000],
+		[-6.27283281, -0.00055802, 0.00034192, 0.00056085, -0.00000113, 0.00000000],
+		[-6.27283305, -0.00055792, 0.00034186, 0.00056075, -0.00000113, 0.00000000],
+		[-6.27283329, -0.00055782, 0.00034180, 0.00056065, -0.00000113, 0.00000000],
+		[-6.27283353, -0.00055772, 0.00034174, 0.00056055, -0.00000113, 0.00000000],
+		[-6.27283378, -0.00055762, 0.00034168, 0.00056045, -0.00000113, 0.00000000],
+		[-6.27283402, -0.00055752, 0.00034161, 0.00056035, -0.00000113, 0.00000000],
+		[-6.27283426, -0.00055742, 0.00034155, 0.00056025, -0.00000113, 0.00000000],
+		[-6.27283450, -0.00055732, 0.00034149, 0.00056015, -0.00000113, 0.00000000],
+		[-6.27283474, -0.00055722, 0.00034143, 0.00056005, -0.00000113, 0.00000000],
+		[-6.27283498, -0.00055712, 0.00034137, 0.00055994, -0.00000113, 0.00000000],
+		[-6.27283522, -0.00055701, 0.00034131, 0.00055984, -0.00000113, 0.00000000],
+		[-6.27283546, -0.00055691, 0.00034124, 0.00055974, -0.00000113, 0.00000000],
+		[-6.27283570, -0.00055681, 0.00034118, 0.00055964, -0.00000113, 0.00000000],
+		[-6.27283593, -0.00055671, 0.00034112, 0.00055954, -0.00000113, 0.00000000],
+		[-6.27283617, -0.00055661, 0.00034106, 0.00055944, -0.00000113, 0.00000000],
+		[-6.27283641, -0.00055651, 0.00034100, 0.00055934, -0.00000113, 0.00000000],
+		[-6.27283665, -0.00055641, 0.00034094, 0.00055924, -0.00000113, 0.00000000],
+		[-6.27283689, -0.00055631, 0.00034088, 0.00055914, -0.00000113, 0.00000000],
+		[-6.27283713, -0.00055621, 0.00034081, 0.00055904, -0.00000113, 0.00000000],
+		[-6.27283737, -0.00055611, 0.00034075, 0.00055894, -0.00000113, 0.00000000],
+		[-6.27283761, -0.00055601, 0.00034069, 0.00055884, -0.00000113, 0.00000000],
+		[-6.27283785, -0.00055591, 0.00034063, 0.00055874, -0.00000113, 0.00000000],
+		[-6.27283809, -0.00055581, 0.00034057, 0.00055864, -0.00000113, 0.00000000],
+		[-6.27283833, -0.00055571, 0.00034051, 0.00055854, -0.00000113, 0.00000000],
+		[-6.27283856, -0.00055562, 0.00034045, 0.00055844, -0.00000113, 0.00000000],
+		[-6.27283880, -0.00055552, 0.00034039, 0.00055834, -0.00000113, 0.00000000],
+		[-6.27283904, -0.00055542, 0.00034033, 0.00055824, -0.00000113, 0.00000000],
+		[-6.27283928, -0.00055532, 0.00034026, 0.00055814, -0.00000113, 0.00000000],
+		[-6.27283952, -0.00055522, 0.00034020, 0.00055804, -0.00000113, 0.00000000],
+		[-6.27283976, -0.00055512, 0.00034014, 0.00055794, -0.00000113, 0.00000000],
+		[-6.27283999, -0.00055502, 0.00034008, 0.00055784, -0.00000113, 0.00000000],
+		[-6.27284023, -0.00055492, 0.00034002, 0.00055774, -0.00000113, 0.00000000],
+		[-6.27284047, -0.00055482, 0.00033996, 0.00055764, -0.00000113, 0.00000000],
+		[-6.27284071, -0.00055472, 0.00033990, 0.00055754, -0.00000113, 0.00000000],
+		[-6.27284095, -0.00055462, 0.00033984, 0.00055744, -0.00000113, 0.00000000],
+		[-6.27284118, -0.00055452, 0.00033978, 0.00055734, -0.00000113, 0.00000000],
+		[-6.27284142, -0.00055442, 0.00033972, 0.00055724, -0.00000113, 0.00000000],
+		[-6.27284166, -0.00055432, 0.00033965, 0.00055714, -0.00000113, 0.00000000],
+		[-6.27284190, -0.00055422, 0.00033959, 0.00055704, -0.00000113, 0.00000000],
+		[-6.27284213, -0.00055412, 0.00033953, 0.00055694, -0.00000113, 0.00000000],
+		[-6.27284237, -0.00055402, 0.00033947, 0.00055684, -0.00000113, 0.00000000],
+		[-6.27284261, -0.00055393, 0.00033941, 0.00055674, -0.00000113, 0.00000000],
+		[-6.27284285, -0.00055383, 0.00033935, 0.00055664, -0.00000113, 0.00000000],
+		[-6.27284308, -0.00055373, 0.00033929, 0.00055654, -0.00000113, 0.00000000],
+		[-6.27284332, -0.00055363, 0.00033923, 0.00055644, -0.00000113, 0.00000000],
+		[-6.27284356, -0.00055353, 0.00033917, 0.00055634, -0.00000113, 0.00000000],
+		[-6.27284379, -0.00055343, 0.00033911, 0.00055624, -0.00000113, 0.00000000],
+		[-6.27284403, -0.00055333, 0.00033905, 0.00055614, -0.00000113, 0.00000000],
+		[-6.27284427, -0.00055323, 0.00033899, 0.00055604, -0.00000113, 0.00000000],
+		[-6.27284450, -0.00055313, 0.00033893, 0.00055594, -0.00000113, 0.00000000],
+		[-6.27284474, -0.00055303, 0.00033887, 0.00055584, -0.00000113, 0.00000000],
+		[-6.27284498, -0.00055294, 0.00033880, 0.00055574, -0.00000113, 0.00000000],
+		[-6.27284521, -0.00055284, 0.00033874, 0.00055564, -0.00000113, 0.00000000],
+		[-6.27284545, -0.00055274, 0.00033868, 0.00055555, -0.00000113, 0.00000000],
+		[-6.27284568, -0.00055264, 0.00033862, 0.00055545, -0.00000113, 0.00000000],
+		[-6.27284592, -0.00055254, 0.00033856, 0.00055535, -0.00000113, 0.00000000],
+		[-6.27284616, -0.00055244, 0.00033850, 0.00055525, -0.00000113, 0.00000000],
+		[-6.27284639, -0.00055234, 0.00033844, 0.00055515, -0.00000113, 0.00000000],
+		[-6.27284663, -0.00055225, 0.00033838, 0.00055505, -0.00000113, 0.00000000],
+		[-6.27284686, -0.00055215, 0.00033832, 0.00055495, -0.00000113, 0.00000000],
+		[-6.27284710, -0.00055205, 0.00033826, 0.00055485, -0.00000113, 0.00000000],
+		[-6.27284733, -0.00055195, 0.00033820, 0.00055475, -0.00000113, 0.00000000],
+		[-6.27284757, -0.00055185, 0.00033814, 0.00055465, -0.00000113, 0.00000000],
+		[-6.27284781, -0.00055175, 0.00033808, 0.00055455, -0.00000113, 0.00000000],
+		[-6.27284804, -0.00055165, 0.00033802, 0.00055446, -0.00000113, 0.00000000],
+		[-6.27284828, -0.00055156, 0.00033796, 0.00055436, -0.00000113, 0.00000000],
+		[-6.27284851, -0.00055146, 0.00033790, 0.00055426, -0.00000113, 0.00000000],
+		[-6.27284875, -0.00055136, 0.00033784, 0.00055416, -0.00000113, 0.00000000],
+		[-6.27284898, -0.00055126, 0.00033778, 0.00055406, -0.00000113, 0.00000000],
+		[-6.27284922, -0.00055116, 0.00033772, 0.00055396, -0.00000113, 0.00000000],
+		[-6.27284945, -0.00055107, 0.00033766, 0.00055386, -0.00000113, 0.00000000],
+		[-6.27284968, -0.00055097, 0.00033760, 0.00055377, -0.00000113, 0.00000000],
+		[-6.27284992, -0.00055087, 0.00033754, 0.00055367, -0.00000113, 0.00000000],
+		[-6.27285015, -0.00055077, 0.00033748, 0.00055357, -0.00000113, 0.00000000],
+		[-6.27285039, -0.00055067, 0.00033742, 0.00055347, -0.00000113, 0.00000000],
+		[-6.27285062, -0.00055058, 0.00033736, 0.00055337, -0.00000113, 0.00000000],
+		[-6.27285086, -0.00055048, 0.00033730, 0.00055327, -0.00000113, 0.00000000],
+		[-6.27285109, -0.00055038, 0.00033724, 0.00055317, -0.00000113, 0.00000000],
+		[-6.27285133, -0.00055028, 0.00033718, 0.00055308, -0.00000113, 0.00000000],
+		[-6.27285156, -0.00055018, 0.00033712, 0.00055298, -0.00000113, 0.00000000],
+		[-6.27285179, -0.00055009, 0.00033706, 0.00055288, -0.00000113, 0.00000000],
+		[-6.27285203, -0.00054999, 0.00033700, 0.00055278, -0.00000113, 0.00000000],
+		[-6.27285226, -0.00054989, 0.00033694, 0.00055268, -0.00000113, 0.00000000],
+		[-6.27285249, -0.00054979, 0.00033688, 0.00055258, -0.00000113, 0.00000000],
+		[-6.27285273, -0.00054970, 0.00033682, 0.00055249, -0.00000113, 0.00000000],
+		[-6.27285296, -0.00054960, 0.00033676, 0.00055239, -0.00000113, 0.00000000],
+		[-6.27285319, -0.00054950, 0.00033670, 0.00055229, -0.00000113, 0.00000000],
+		[-6.27285343, -0.00054940, 0.00033664, 0.00055219, -0.00000113, 0.00000000],
+		[-6.27285366, -0.00054931, 0.00033658, 0.00055209, -0.00000113, 0.00000000],
+		[-6.27285389, -0.00054921, 0.00033652, 0.00055200, -0.00000113, 0.00000000],
+		[-6.27285413, -0.00054911, 0.00033646, 0.00055190, -0.00000113, 0.00000000],
+		[-6.27285436, -0.00054901, 0.00033640, 0.00055180, -0.00000113, 0.00000000],
+		[-6.27285459, -0.00054892, 0.00033634, 0.00055170, -0.00000113, 0.00000000],
+		[-6.27285483, -0.00054882, 0.00033628, 0.00055160, -0.00000113, 0.00000000],
+		[-6.27285506, -0.00054872, 0.00033622, 0.00055151, -0.00000113, 0.00000000],
+		[-6.27285529, -0.00054862, 0.00033616, 0.00055141, -0.00000113, 0.00000000],
+		[-6.27285552, -0.00054853, 0.00033610, 0.00055131, -0.00000113, 0.00000000],
+		[-6.27285576, -0.00054843, 0.00033604, 0.00055121, -0.00000113, 0.00000000],
+		[-6.27285599, -0.00054833, 0.00033598, 0.00055112, -0.00000113, 0.00000000],
+		[-6.27285622, -0.00054824, 0.00033592, 0.00055102, -0.00000113, 0.00000000],
+		[-6.27285645, -0.00054814, 0.00033586, 0.00055092, -0.00000113, 0.00000000],
+		[-6.27285669, -0.00054804, 0.00033580, 0.00055082, -0.00000113, 0.00000000],
+		[-6.27285692, -0.00054794, 0.00033574, 0.00055073, -0.00000113, 0.00000000],
+		[-6.27285715, -0.00054785, 0.00033568, 0.00055063, -0.00000113, 0.00000000],
+		[-6.27285738, -0.00054775, 0.00033563, 0.00055053, -0.00000113, 0.00000000],
+		[-6.27285761, -0.00054765, 0.00033557, 0.00055043, -0.00000113, 0.00000000],
+		[-6.27285785, -0.00054756, 0.00033551, 0.00055034, -0.00000113, 0.00000000],
+		[-6.27285808, -0.00054746, 0.00033545, 0.00055024, -0.00000113, 0.00000000],
+		[-6.27285831, -0.00054736, 0.00033539, 0.00055014, -0.00000113, 0.00000000],
+		[-6.27285854, -0.00054727, 0.00033533, 0.00055004, -0.00000113, 0.00000000],
+		[-6.27285877, -0.00054717, 0.00033527, 0.00054995, -0.00000113, 0.00000000],
+		[-6.27285900, -0.00054707, 0.00033521, 0.00054985, -0.00000113, 0.00000000],
+		[-6.27285923, -0.00054698, 0.00033515, 0.00054975, -0.00000113, 0.00000000],
+		[-6.27285947, -0.00054688, 0.00033509, 0.00054966, -0.00000113, 0.00000000],
+		[-6.27285970, -0.00054678, 0.00033503, 0.00054956, -0.00000113, 0.00000000],
+		[-6.27285993, -0.00054669, 0.00033497, 0.00054946, -0.00000113, 0.00000000],
+		[-6.27286016, -0.00054659, 0.00033491, 0.00054936, -0.00000113, 0.00000000],
+		[-6.27286039, -0.00054649, 0.00033485, 0.00054927, -0.00000113, 0.00000000],
+		[-6.27286062, -0.00054640, 0.00033480, 0.00054917, -0.00000113, 0.00000000],
+		[-6.27286085, -0.00054630, 0.00033474, 0.00054907, -0.00000113, 0.00000000],
+		[-6.27286108, -0.00054620, 0.00033468, 0.00054898, -0.00000113, 0.00000000],
+		[-6.27286131, -0.00054611, 0.00033462, 0.00054888, -0.00000113, 0.00000000],
+		[-6.27286154, -0.00054601, 0.00033456, 0.00054878, -0.00000113, 0.00000000],
+		[-6.27286177, -0.00054591, 0.00033450, 0.00054869, -0.00000113, 0.00000000],
+		[-6.27286200, -0.00054582, 0.00033444, 0.00054859, -0.00000113, 0.00000000],
+		[-6.27286223, -0.00054572, 0.00033438, 0.00054849, -0.00000113, 0.00000000],
+		[-6.27286246, -0.00054563, 0.00033432, 0.00054840, -0.00000113, 0.00000000],
+		[-6.27286269, -0.00054553, 0.00033426, 0.00054830, -0.00000113, 0.00000000],
+		[-6.27286292, -0.00054543, 0.00033420, 0.00054820, -0.00000113, 0.00000000],
+		[-6.27286315, -0.00054534, 0.00033415, 0.00054811, -0.00000113, 0.00000000],
+		[-6.27286338, -0.00054524, 0.00033409, 0.00054801, -0.00000113, 0.00000000],
+		[-6.27286361, -0.00054515, 0.00033403, 0.00054791, -0.00000113, 0.00000000],
+		[-6.27286384, -0.00054505, 0.00033397, 0.00054782, -0.00000113, 0.00000000],
+		[-6.27286407, -0.00054495, 0.00033391, 0.00054772, -0.00000113, 0.00000000],
+		[-6.27286430, -0.00054486, 0.00033385, 0.00054762, -0.00000113, 0.00000000],
+		[-6.27286453, -0.00054476, 0.00033379, 0.00054753, -0.00000113, 0.00000000],
+		[-6.27286476, -0.00054467, 0.00033373, 0.00054743, -0.00000113, 0.00000000],
+		[-6.27286499, -0.00054457, 0.00033368, 0.00054733, -0.00000113, 0.00000000],
+		[-6.27286522, -0.00054447, 0.00033362, 0.00054724, -0.00000113, 0.00000000],
+		[-6.27286545, -0.00054438, 0.00033356, 0.00054714, -0.00000113, 0.00000000],
+		[-6.27286568, -0.00054428, 0.00033350, 0.00054705, -0.00000113, 0.00000000],
+		[-6.27286591, -0.00054419, 0.00033344, 0.00054695, -0.00000113, 0.00000000],
+		[-6.27286614, -0.00054409, 0.00033338, 0.00054685, -0.00000113, 0.00000000],
+		[-6.27286636, -0.00054400, 0.00033332, 0.00054676, -0.00000113, 0.00000000],
+		[-6.27286659, -0.00054390, 0.00033326, 0.00054666, -0.00000113, 0.00000000],
+		[-6.27286682, -0.00054380, 0.00033321, 0.00054657, -0.00000113, 0.00000000],
+		[-6.27286705, -0.00054371, 0.00033315, 0.00054647, -0.00000113, 0.00000000],
+		[-6.27286728, -0.00054361, 0.00033309, 0.00054637, -0.00000113, 0.00000000],
+		[-6.27286751, -0.00054352, 0.00033303, 0.00054628, -0.00000113, 0.00000000],
+		[-6.27286774, -0.00054342, 0.00033297, 0.00054618, -0.00000113, 0.00000000],
+		[-6.27286796, -0.00054333, 0.00033291, 0.00054609, -0.00000113, 0.00000000],
+		[-6.27286819, -0.00054323, 0.00033286, 0.00054599, -0.00000113, 0.00000000],
+		[-6.27286842, -0.00054314, 0.00033280, 0.00054589, -0.00000113, 0.00000000],
+		[-6.27286865, -0.00054304, 0.00033274, 0.00054580, -0.00000113, 0.00000000],
+		[-6.27286888, -0.00054295, 0.00033268, 0.00054570, -0.00000113, 0.00000000],
+		[-6.27286910, -0.00054285, 0.00033262, 0.00054561, -0.00000113, 0.00000000],
+		[-6.27286933, -0.00054276, 0.00033256, 0.00054551, -0.00000113, 0.00000000],
+		[-6.27286956, -0.00054266, 0.00033250, 0.00054542, -0.00000113, 0.00000000],
+		[-6.27286979, -0.00054257, 0.00033245, 0.00054532, -0.00000113, 0.00000000],
+		[-6.27287001, -0.00054247, 0.00033239, 0.00054522, -0.00000113, 0.00000000],
+		[-6.27287024, -0.00054238, 0.00033233, 0.00054513, -0.00000113, 0.00000000],
+		[-6.27287047, -0.00054228, 0.00033227, 0.00054503, -0.00000113, 0.00000000],
+		[-6.27287070, -0.00054219, 0.00033221, 0.00054494, -0.00000113, 0.00000000],
+		[-6.27287092, -0.00054209, 0.00033216, 0.00054484, -0.00000113, 0.00000000],
+		[-6.27287115, -0.00054200, 0.00033210, 0.00054475, -0.00000113, 0.00000000],
+		[-6.27287138, -0.00054190, 0.00033204, 0.00054465, -0.00000113, 0.00000000],
+		[-6.27287160, -0.00054181, 0.00033198, 0.00054456, -0.00000113, 0.00000000],
+		[-6.27287183, -0.00054171, 0.00033192, 0.00054446, -0.00000113, 0.00000000],
+		[-6.27287206, -0.00054162, 0.00033186, 0.00054437, -0.00000113, 0.00000000],
+		[-6.27287228, -0.00054152, 0.00033181, 0.00054427, -0.00000113, 0.00000000],
+		[-6.27287251, -0.00054143, 0.00033175, 0.00054417, -0.00000113, 0.00000000],
+		[-6.27287274, -0.00054133, 0.00033169, 0.00054408, -0.00000113, 0.00000000],
+		[-6.27287296, -0.00054124, 0.00033163, 0.00054398, -0.00000113, 0.00000000],
+		[-6.27287319, -0.00054114, 0.00033157, 0.00054389, -0.00000113, 0.00000000],
+		[-6.27287342, -0.00054105, 0.00033152, 0.00054379, -0.00000113, 0.00000000],
+		[-6.27287364, -0.00054095, 0.00033146, 0.00054370, -0.00000113, 0.00000000],
+		[-6.27287387, -0.00054086, 0.00033140, 0.00054360, -0.00000113, 0.00000000],
+		[-6.27287409, -0.00054076, 0.00033134, 0.00054351, -0.00000113, 0.00000000],
+		[-6.27287432, -0.00054067, 0.00033128, 0.00054341, -0.00000113, 0.00000000],
+		[-6.27287455, -0.00054058, 0.00033123, 0.00054332, -0.00000113, 0.00000000],
+		[-6.27287477, -0.00054048, 0.00033117, 0.00054322, -0.00000113, 0.00000000],
+		[-6.27287500, -0.00054039, 0.00033111, 0.00054313, -0.00000113, 0.00000000],
+		[-6.27287522, -0.00054029, 0.00033105, 0.00054304, -0.00000113, 0.00000000],
+		[-6.27287545, -0.00054020, 0.00033100, 0.00054294, -0.00000113, 0.00000000],
+		[-6.27287568, -0.00054010, 0.00033094, 0.00054285, -0.00000113, 0.00000000],
+		[-6.27287590, -0.00054001, 0.00033088, 0.00054275, -0.00000113, 0.00000000],
+		[-6.27287613, -0.00053992, 0.00033082, 0.00054266, -0.00000113, 0.00000000],
+		[-6.27287635, -0.00053982, 0.00033076, 0.00054256, -0.00000113, 0.00000000],
+		[-6.27287658, -0.00053973, 0.00033071, 0.00054247, -0.00000113, 0.00000000],
+		[-6.27287680, -0.00053963, 0.00033065, 0.00054237, -0.00000113, 0.00000000],
+		[-6.27287703, -0.00053954, 0.00033059, 0.00054228, -0.00000113, 0.00000000],
+		[-6.27287725, -0.00053945, 0.00033053, 0.00054218, -0.00000113, 0.00000000],
+		[-6.27287748, -0.00053935, 0.00033048, 0.00054209, -0.00000113, 0.00000000],
+		[-6.27287770, -0.00053926, 0.00033042, 0.00054199, -0.00000113, 0.00000000],
+		[-6.27287793, -0.00053916, 0.00033036, 0.00054190, -0.00000113, 0.00000000],
+		[-6.27287815, -0.00053907, 0.00033030, 0.00054181, -0.00000113, 0.00000000],
+		[-6.27287838, -0.00053898, 0.00033025, 0.00054171, -0.00000113, 0.00000000],
+		[-6.27287860, -0.00053888, 0.00033019, 0.00054162, -0.00000113, 0.00000000],
+		[-6.27287882, -0.00053879, 0.00033013, 0.00054152, -0.00000113, 0.00000000],
+		[-6.27287905, -0.00053869, 0.00033007, 0.00054143, -0.00000113, 0.00000000],
+		[-6.27287927, -0.00053860, 0.00033002, 0.00054133, -0.00000113, 0.00000000],
+		[-6.27287950, -0.00053851, 0.00032996, 0.00054124, -0.00000113, 0.00000000],
+		[-6.27287972, -0.00053841, 0.00032990, 0.00054115, -0.00000113, 0.00000000],
+		[-6.27287994, -0.00053832, 0.00032984, 0.00054105, -0.00000113, 0.00000000],
+		[-6.27288017, -0.00053823, 0.00032979, 0.00054096, -0.00000113, 0.00000000],
+		[-6.27288039, -0.00053813, 0.00032973, 0.00054086, -0.00000113, 0.00000000],
+		[-6.27288062, -0.00053804, 0.00032967, 0.00054077, -0.00000113, 0.00000000],
+		[-6.27288084, -0.00053795, 0.00032961, 0.00054068, -0.00000113, 0.00000000],
+		[-6.27288106, -0.00053785, 0.00032956, 0.00054058, -0.00000113, 0.00000000],
+		[-6.27288129, -0.00053776, 0.00032950, 0.00054049, -0.00000113, 0.00000000],
+		[-6.27288151, -0.00053767, 0.00032944, 0.00054039, -0.00000113, 0.00000000],
+		[-6.27288173, -0.00053757, 0.00032938, 0.00054030, -0.00000113, 0.00000000],
+		[-6.27288196, -0.00053748, 0.00032933, 0.00054021, -0.00000113, 0.00000000],
+		[-6.27288218, -0.00053739, 0.00032927, 0.00054011, -0.00000113, 0.00000000],
+		[-6.27288240, -0.00053729, 0.00032921, 0.00054002, -0.00000113, 0.00000000],
+		[-6.27288263, -0.00053720, 0.00032916, 0.00053992, -0.00000113, 0.00000000],
+		[-6.27288285, -0.00053711, 0.00032910, 0.00053983, -0.00000113, 0.00000000],
+		[-6.27288307, -0.00053701, 0.00032904, 0.00053974, -0.00000113, 0.00000000],
+		[-6.27288330, -0.00053692, 0.00032898, 0.00053964, -0.00000113, 0.00000000],
+		[-6.27288352, -0.00053683, 0.00032893, 0.00053955, -0.00000113, 0.00000000],
+		[-6.27288374, -0.00053673, 0.00032887, 0.00053946, -0.00000113, 0.00000000],
+		[-6.27288396, -0.00053664, 0.00032881, 0.00053936, -0.00000113, 0.00000000],
+		[-6.27288419, -0.00053655, 0.00032876, 0.00053927, -0.00000113, 0.00000000],
+		[-6.27288441, -0.00053645, 0.00032870, 0.00053918, -0.00000113, 0.00000000],
+		[-6.27288463, -0.00053636, 0.00032864, 0.00053908, -0.00000113, 0.00000000],
+		[-6.27288485, -0.00053627, 0.00032859, 0.00053899, -0.00000113, 0.00000000],
+		[-6.27288508, -0.00053618, 0.00032853, 0.00053890, -0.00000113, 0.00000000],
+		[-6.27288530, -0.00053608, 0.00032847, 0.00053880, -0.00000113, 0.00000000],
+		[-6.27288552, -0.00053599, 0.00032841, 0.00053871, -0.00000113, 0.00000000],
+		[-6.27288574, -0.00053590, 0.00032836, 0.00053862, -0.00000113, 0.00000000],
+		[-6.27288596, -0.00053580, 0.00032830, 0.00053852, -0.00000113, 0.00000000],
+		[-6.27288619, -0.00053571, 0.00032824, 0.00053843, -0.00000113, 0.00000000],
+		[-6.27288641, -0.00053562, 0.00032819, 0.00053834, -0.00000113, 0.00000000],
+		[-6.27288663, -0.00053553, 0.00032813, 0.00053824, -0.00000113, 0.00000000],
+		[-6.27288685, -0.00053543, 0.00032807, 0.00053815, -0.00000113, 0.00000000],
+		[-6.27288707, -0.00053534, 0.00032802, 0.00053806, -0.00000113, 0.00000000],
+		[-6.27288729, -0.00053525, 0.00032796, 0.00053796, -0.00000113, 0.00000000],
+		[-6.27288752, -0.00053516, 0.00032790, 0.00053787, -0.00000113, 0.00000000],
+		[-6.27288774, -0.00053506, 0.00032785, 0.00053778, -0.00000113, 0.00000000],
+		[-6.27288796, -0.00053497, 0.00032779, 0.00053769, -0.00000113, 0.00000000],
+		[-6.27288818, -0.00053488, 0.00032773, 0.00053759, -0.00000113, 0.00000000],
+		[-6.27288840, -0.00053479, 0.00032768, 0.00053750, -0.00000113, 0.00000000],
+		[-6.27288862, -0.00053469, 0.00032762, 0.00053741, -0.00000113, 0.00000000],
+		[-6.27288884, -0.00053460, 0.00032756, 0.00053731, -0.00000113, 0.00000000],
+		[-6.27288906, -0.00053451, 0.00032751, 0.00053722, -0.00000113, 0.00000000],
+		[-6.27288928, -0.00053442, 0.00032745, 0.00053713, -0.00000113, 0.00000000],
+		[-6.27288950, -0.00053432, 0.00032739, 0.00053704, -0.00000113, 0.00000000],
+		[-6.27288973, -0.00053423, 0.00032734, 0.00053694, -0.00000113, 0.00000000],
+		[-6.27288995, -0.00053414, 0.00032728, 0.00053685, -0.00000113, 0.00000000],
+		[-6.27289017, -0.00053405, 0.00032722, 0.00053676, -0.00000113, 0.00000000],
+		[-6.27289039, -0.00053396, 0.00032717, 0.00053666, -0.00000113, 0.00000000],
+		[-6.27289061, -0.00053386, 0.00032711, 0.00053657, -0.00000113, 0.00000000],
+		[-6.27289083, -0.00053377, 0.00032705, 0.00053648, -0.00000113, 0.00000000],
+		[-6.27289105, -0.00053368, 0.00032700, 0.00053639, -0.00000113, 0.00000000],
+		[-6.27289127, -0.00053359, 0.00032694, 0.00053629, -0.00000113, 0.00000000],
+		[-6.27289149, -0.00053350, 0.00032689, 0.00053620, -0.00000113, 0.00000000],
+		[-6.27289171, -0.00053340, 0.00032683, 0.00053611, -0.00000113, 0.00000000],
+		[-6.27289193, -0.00053331, 0.00032677, 0.00053602, -0.00000113, 0.00000000],
+		[-6.27289215, -0.00053322, 0.00032672, 0.00053593, -0.00000113, 0.00000000],
+		[-6.27289237, -0.00053313, 0.00032666, 0.00053583, -0.00000113, 0.00000000],
+		[-6.27289259, -0.00053304, 0.00032660, 0.00053574, -0.00000113, 0.00000000],
+		[-6.27289281, -0.00053294, 0.00032655, 0.00053565, -0.00000113, 0.00000000],
+		[-6.27289303, -0.00053285, 0.00032649, 0.00053556, -0.00000113, 0.00000000],
+		[-6.27289325, -0.00053276, 0.00032643, 0.00053546, -0.00000113, 0.00000000],
+		[-6.27289346, -0.00053267, 0.00032638, 0.00053537, -0.00000113, 0.00000000],
+		[-6.27289368, -0.00053258, 0.00032632, 0.00053528, -0.00000113, 0.00000000],
+		[-6.27289390, -0.00053249, 0.00032627, 0.00053519, -0.00000113, 0.00000000],
+		[-6.27289412, -0.00053239, 0.00032621, 0.00053510, -0.00000113, 0.00000000],
+		[-6.27289434, -0.00053230, 0.00032615, 0.00053500, -0.00000113, 0.00000000],
+		[-6.27289456, -0.00053221, 0.00032610, 0.00053491, -0.00000113, 0.00000000],
+		[-6.27289478, -0.00053212, 0.00032604, 0.00053482, -0.00000113, 0.00000000],
+		[-6.27289500, -0.00053203, 0.00032599, 0.00053473, -0.00000113, 0.00000000],
+		[-6.27289522, -0.00053194, 0.00032593, 0.00053464, -0.00000113, 0.00000000],
+		[-6.27289544, -0.00053185, 0.00032587, 0.00053454, -0.00000113, 0.00000000],
+		[-6.27289565, -0.00053175, 0.00032582, 0.00053445, -0.00000113, 0.00000000],
+		[-6.27289587, -0.00053166, 0.00032576, 0.00053436, -0.00000113, 0.00000000],
+		[-6.27289609, -0.00053157, 0.00032571, 0.00053427, -0.00000113, 0.00000000],
+		[-6.27289631, -0.00053148, 0.00032565, 0.00053418, -0.00000113, 0.00000000],
+		[-6.27289653, -0.00053139, 0.00032559, 0.00053408, -0.00000113, 0.00000000],
+		[-6.27289675, -0.00053130, 0.00032554, 0.00053399, -0.00000113, 0.00000000],
+		[-6.27289696, -0.00053121, 0.00032548, 0.00053390, -0.00000113, 0.00000000],
+		[-6.27289718, -0.00053112, 0.00032543, 0.00053381, -0.00000113, 0.00000000],
+		[-6.27289740, -0.00053102, 0.00032537, 0.00053372, -0.00000113, 0.00000000],
+		[-6.27289762, -0.00053093, 0.00032531, 0.00053363, -0.00000113, 0.00000000],
+		[-6.27289784, -0.00053084, 0.00032526, 0.00053354, -0.00000113, 0.00000000],
+		[-6.27289805, -0.00053075, 0.00032520, 0.00053344, -0.00000113, 0.00000000],
+		[-6.27289827, -0.00053066, 0.00032515, 0.00053335, -0.00000113, 0.00000000],
+		[-6.27289849, -0.00053057, 0.00032509, 0.00053326, -0.00000113, 0.00000000],
+		[-6.27289871, -0.00053048, 0.00032504, 0.00053317, -0.00000113, 0.00000000],
+		[-6.27289892, -0.00053039, 0.00032498, 0.00053308, -0.00000113, 0.00000000],
+		[-6.27289914, -0.00053030, 0.00032492, 0.00053299, -0.00000113, 0.00000000],
+		[-6.27289936, -0.00053021, 0.00032487, 0.00053290, -0.00000113, 0.00000000],
+		[-6.27289958, -0.00053012, 0.00032481, 0.00053280, -0.00000113, 0.00000000],
+		[-6.27289979, -0.00053002, 0.00032476, 0.00053271, -0.00000113, 0.00000000],
+		[-6.27290001, -0.00052993, 0.00032470, 0.00053262, -0.00000113, 0.00000000],
+		[-6.27290023, -0.00052984, 0.00032465, 0.00053253, -0.00000113, 0.00000000],
+		[-6.27290044, -0.00052975, 0.00032459, 0.00053244, -0.00000113, 0.00000000],
+		[-6.27290066, -0.00052966, 0.00032453, 0.00053235, -0.00000113, 0.00000000],
+		[-6.27290088, -0.00052957, 0.00032448, 0.00053226, -0.00000113, 0.00000000],
+		[-6.27290109, -0.00052948, 0.00032442, 0.00053217, -0.00000113, 0.00000000],
+		[-6.27290131, -0.00052939, 0.00032437, 0.00053208, -0.00000113, 0.00000000],
+		[-6.27290153, -0.00052930, 0.00032431, 0.00053198, -0.00000113, 0.00000000],
+		[-6.27290174, -0.00052921, 0.00032426, 0.00053189, -0.00000113, 0.00000000],
+		[-6.27290196, -0.00052912, 0.00032420, 0.00053180, -0.00000113, 0.00000000],
+		[-6.27290218, -0.00052903, 0.00032415, 0.00053171, -0.00000113, 0.00000000],
+		[-6.27290239, -0.00052894, 0.00032409, 0.00053162, -0.00000113, 0.00000000],
+		[-6.27290261, -0.00052885, 0.00032404, 0.00053153, -0.00000113, 0.00000000],
+		[-6.27290283, -0.00052876, 0.00032398, 0.00053144, -0.00000113, 0.00000000],
+		[-6.27290304, -0.00052867, 0.00032392, 0.00053135, -0.00000113, 0.00000000],
+		[-6.27290326, -0.00052858, 0.00032387, 0.00053126, -0.00000113, 0.00000000],
+		[-6.27290347, -0.00052849, 0.00032381, 0.00053117, -0.00000113, 0.00000000],
+		[-6.27290369, -0.00052840, 0.00032376, 0.00053108, -0.00000113, 0.00000000],
+		[-6.27290391, -0.00052831, 0.00032370, 0.00053099, -0.00000113, 0.00000000],
+		[-6.27290412, -0.00052822, 0.00032365, 0.00053089, -0.00000113, 0.00000000],
+		[-6.27290434, -0.00052813, 0.00032359, 0.00053080, -0.00000113, 0.00000000],
+		[-6.27290455, -0.00052804, 0.00032354, 0.00053071, -0.00000113, 0.00000000],
+		[-6.27290477, -0.00052795, 0.00032348, 0.00053062, -0.00000113, 0.00000000],
+		[-6.27290498, -0.00052786, 0.00032343, 0.00053053, -0.00000113, 0.00000000],
+		[-6.27290520, -0.00052777, 0.00032337, 0.00053044, -0.00000113, 0.00000000],
+		[-6.27290541, -0.00052768, 0.00032332, 0.00053035, -0.00000113, 0.00000000],
+		[-6.27290563, -0.00052759, 0.00032326, 0.00053026, -0.00000113, 0.00000000],
+		[-6.27290584, -0.00052750, 0.00032321, 0.00053017, -0.00000113, 0.00000000],
+		[-6.27290606, -0.00052741, 0.00032315, 0.00053008, -0.00000113, 0.00000000],
+		[-6.27290627, -0.00052732, 0.00032310, 0.00052999, -0.00000113, 0.00000000],
+		[-6.27290649, -0.00052723, 0.00032304, 0.00052990, -0.00000113, 0.00000000],
+		[-6.27290670, -0.00052714, 0.00032299, 0.00052981, -0.00000113, 0.00000000],
+		[-6.27290692, -0.00052705, 0.00032293, 0.00052972, -0.00000113, 0.00000000],
+		[-6.27290713, -0.00052696, 0.00032288, 0.00052963, -0.00000113, 0.00000000],
+		[-6.27290735, -0.00052687, 0.00032282, 0.00052954, -0.00000113, 0.00000000],
+		[-6.27290756, -0.00052678, 0.00032277, 0.00052945, -0.00000113, 0.00000000],
+		[-6.27290778, -0.00052669, 0.00032271, 0.00052936, -0.00000113, 0.00000000],
+		[-6.27290799, -0.00052660, 0.00032266, 0.00052927, -0.00000113, 0.00000000],
+		[-6.27290821, -0.00052651, 0.00032260, 0.00052918, -0.00000113, 0.00000000],
+		[-6.27290842, -0.00052642, 0.00032255, 0.00052909, -0.00000113, 0.00000000],
+		[-6.27290863, -0.00052633, 0.00032249, 0.00052900, -0.00000113, 0.00000000],
+		[-6.27290885, -0.00052624, 0.00032244, 0.00052891, -0.00000113, 0.00000000],
+		[-6.27290906, -0.00052615, 0.00032238, 0.00052882, -0.00000113, 0.00000000],
+		[-6.27290928, -0.00052606, 0.00032233, 0.00052873, -0.00000113, 0.00000000],
+		[-6.27290949, -0.00052597, 0.00032227, 0.00052864, -0.00000113, 0.00000000],
+		[-6.27290970, -0.00052588, 0.00032222, 0.00052855, -0.00000113, 0.00000000],
+		[-6.27290992, -0.00052579, 0.00032216, 0.00052846, -0.00000113, 0.00000000],
+		[-6.27291013, -0.00052570, 0.00032211, 0.00052837, -0.00000113, 0.00000000],
+		[-6.27291034, -0.00052561, 0.00032205, 0.00052828, -0.00000113, 0.00000000],
+		[-6.27291056, -0.00052553, 0.00032200, 0.00052819, -0.00000113, 0.00000000],
+		[-6.27291077, -0.00052544, 0.00032194, 0.00052810, -0.00000113, 0.00000000],
+		[-6.27291098, -0.00052535, 0.00032189, 0.00052801, -0.00000113, 0.00000000],
+		[-6.27291120, -0.00052526, 0.00032183, 0.00052792, -0.00000113, 0.00000000],
+		[-6.27291141, -0.00052517, 0.00032178, 0.00052783, -0.00000113, 0.00000000],
+		[-6.27291162, -0.00052508, 0.00032173, 0.00052774, -0.00000113, 0.00000000],
+		[-6.27291184, -0.00052499, 0.00032167, 0.00052765, -0.00000113, 0.00000000],
+		[-6.27291205, -0.00052490, 0.00032162, 0.00052756, -0.00000113, 0.00000000],
+		[-6.27291226, -0.00052481, 0.00032156, 0.00052747, -0.00000113, 0.00000000],
+		[-6.27291248, -0.00052472, 0.00032151, 0.00052738, -0.00000113, 0.00000000],
+		[-6.27291269, -0.00052463, 0.00032145, 0.00052730, -0.00000113, 0.00000000],
+		[-6.27291290, -0.00052455, 0.00032140, 0.00052721, -0.00000113, 0.00000000],
+		[-6.27291311, -0.00052446, 0.00032134, 0.00052712, -0.00000113, 0.00000000],
+		[-6.27291333, -0.00052437, 0.00032129, 0.00052703, -0.00000113, 0.00000000],
+		[-6.27291354, -0.00052428, 0.00032123, 0.00052694, -0.00000113, 0.00000000],
+		[-6.27291375, -0.00052419, 0.00032118, 0.00052685, -0.00000113, 0.00000000],
+		[-6.27291396, -0.00052410, 0.00032113, 0.00052676, -0.00000113, 0.00000000],
+		[-6.27291418, -0.00052401, 0.00032107, 0.00052667, -0.00000113, 0.00000000],
+		[-6.27291439, -0.00052392, 0.00032102, 0.00052658, -0.00000113, 0.00000000],
+		[-6.27291460, -0.00052384, 0.00032096, 0.00052649, -0.00000113, 0.00000000],
+		[-6.27291481, -0.00052375, 0.00032091, 0.00052640, -0.00000113, 0.00000000],
+		[-6.27291503, -0.00052366, 0.00032085, 0.00052631, -0.00000113, 0.00000000],
+		[-6.27291524, -0.00052357, 0.00032080, 0.00052622, -0.00000113, 0.00000000],
+		[-6.27291545, -0.00052348, 0.00032075, 0.00052614, -0.00000113, 0.00000000],
+		[-6.27291566, -0.00052339, 0.00032069, 0.00052605, -0.00000113, 0.00000000],
+		[-6.27291587, -0.00052330, 0.00032064, 0.00052596, -0.00000113, 0.00000000],
+		[-6.27291608, -0.00052322, 0.00032058, 0.00052587, -0.00000113, 0.00000000],
+		[-6.27291630, -0.00052313, 0.00032053, 0.00052578, -0.00000113, 0.00000000],
+		[-6.27291651, -0.00052304, 0.00032047, 0.00052569, -0.00000113, 0.00000000],
+		[-6.27291672, -0.00052295, 0.00032042, 0.00052560, -0.00000113, 0.00000000],
+		[-6.27291693, -0.00052286, 0.00032037, 0.00052551, -0.00000113, 0.00000000],
+		[-6.27291714, -0.00052277, 0.00032031, 0.00052542, -0.00000113, 0.00000000],
+		[-6.27291735, -0.00052269, 0.00032026, 0.00052534, -0.00000113, 0.00000000],
+		[-6.27291756, -0.00052260, 0.00032020, 0.00052525, -0.00000113, 0.00000000],
+		[-6.27291777, -0.00052251, 0.00032015, 0.00052516, -0.00000113, 0.00000000],
+		[-6.27291799, -0.00052242, 0.00032010, 0.00052507, -0.00000113, 0.00000000],
+		[-6.27291820, -0.00052233, 0.00032004, 0.00052498, -0.00000113, 0.00000000],
+		[-6.27291841, -0.00052225, 0.00031999, 0.00052489, -0.00000113, 0.00000000],
+		[-6.27291862, -0.00052216, 0.00031993, 0.00052480, -0.00000113, 0.00000000],
+		[-6.27291883, -0.00052207, 0.00031988, 0.00052472, -0.00000113, 0.00000000],
+		[-6.27291904, -0.00052198, 0.00031983, 0.00052463, -0.00000113, 0.00000000],
+		[-6.27291925, -0.00052189, 0.00031977, 0.00052454, -0.00000113, 0.00000000],
+		[-6.27291946, -0.00052180, 0.00031972, 0.00052445, -0.00000113, 0.00000000],
+		[-6.27291967, -0.00052172, 0.00031966, 0.00052436, -0.00000113, 0.00000000],
+		[-6.27291988, -0.00052163, 0.00031961, 0.00052427, -0.00000113, 0.00000000],
+		[-6.27292009, -0.00052154, 0.00031956, 0.00052419, -0.00000113, 0.00000000],
+		[-6.27292030, -0.00052145, 0.00031950, 0.00052410, -0.00000113, 0.00000000],
+		[-6.27292051, -0.00052137, 0.00031945, 0.00052401, -0.00000113, 0.00000000],
+		[-6.27292072, -0.00052128, 0.00031939, 0.00052392, -0.00000113, 0.00000000],
+		[-6.27292093, -0.00052119, 0.00031934, 0.00052383, -0.00000113, 0.00000000],
+		[-6.27292114, -0.00052110, 0.00031929, 0.00052374, -0.00000113, 0.00000000],
+		[-6.27292135, -0.00052101, 0.00031923, 0.00052366, -0.00000113, 0.00000000],
+		[-6.27292156, -0.00052093, 0.00031918, 0.00052357, -0.00000113, 0.00000000],
+		[-6.27292177, -0.00052084, 0.00031913, 0.00052348, -0.00000113, 0.00000000],
+		[-6.27292198, -0.00052075, 0.00031907, 0.00052339, -0.00000113, 0.00000000],
+		[-6.27292219, -0.00052066, 0.00031902, 0.00052330, -0.00000113, 0.00000000],
+		[-6.27292240, -0.00052058, 0.00031896, 0.00052322, -0.00000113, 0.00000000],
+		[-6.27292261, -0.00052049, 0.00031891, 0.00052313, -0.00000113, 0.00000000],
+		[-6.27292282, -0.00052040, 0.00031886, 0.00052304, -0.00000113, 0.00000000],
+		[-6.27292303, -0.00052031, 0.00031880, 0.00052295, -0.00000113, 0.00000000],
+		[-6.27292324, -0.00052023, 0.00031875, 0.00052286, -0.00000113, 0.00000000],
+		[-6.27292345, -0.00052014, 0.00031870, 0.00052278, -0.00000113, 0.00000000],
+		[-6.27292366, -0.00052005, 0.00031864, 0.00052269, -0.00000113, 0.00000000],
+		[-6.27292386, -0.00051996, 0.00031859, 0.00052260, -0.00000113, 0.00000000],
+		[-6.27292407, -0.00051988, 0.00031854, 0.00052251, -0.00000113, 0.00000000],
+		[-6.27292428, -0.00051979, 0.00031848, 0.00052242, -0.00000113, 0.00000000],
+		[-6.27292449, -0.00051970, 0.00031843, 0.00052234, -0.00000113, 0.00000000],
+		[-6.27292470, -0.00051962, 0.00031837, 0.00052225, -0.00000113, 0.00000000],
+		[-6.27292491, -0.00051953, 0.00031832, 0.00052216, -0.00000113, 0.00000000],
+		[-6.27292512, -0.00051944, 0.00031827, 0.00052207, -0.00000113, 0.00000000],
+		[-6.27292533, -0.00051935, 0.00031821, 0.00052199, -0.00000113, 0.00000000],
+		[-6.27292553, -0.00051927, 0.00031816, 0.00052190, -0.00000113, 0.00000000],
+		[-6.27292574, -0.00051918, 0.00031811, 0.00052181, -0.00000113, 0.00000000],
+		[-6.27292595, -0.00051909, 0.00031805, 0.00052172, -0.00000113, 0.00000000],
+		[-6.27292616, -0.00051901, 0.00031800, 0.00052164, -0.00000113, 0.00000000],
+		[-6.27292637, -0.00051892, 0.00031795, 0.00052155, -0.00000113, 0.00000000],
+		[-6.27292658, -0.00051883, 0.00031789, 0.00052146, -0.00000113, 0.00000000],
+		[-6.27292678, -0.00051874, 0.00031784, 0.00052137, -0.00000113, 0.00000000],
+		[-6.27292699, -0.00051866, 0.00031779, 0.00052129, -0.00000113, 0.00000000],
+		[-6.27292720, -0.00051857, 0.00031773, 0.00052120, -0.00000113, 0.00000000],
+		[-6.27292741, -0.00051848, 0.00031768, 0.00052111, -0.00000113, 0.00000000],
+		[-6.27292762, -0.00051840, 0.00031763, 0.00052102, -0.00000113, 0.00000000],
+		[-6.27292782, -0.00051831, 0.00031757, 0.00052094, -0.00000113, 0.00000000],
+		[-6.27292803, -0.00051822, 0.00031752, 0.00052085, -0.00000113, 0.00000000],
+		[-6.27292824, -0.00051814, 0.00031747, 0.00052076, -0.00000113, 0.00000000],
+		[-6.27292845, -0.00051805, 0.00031742, 0.00052068, -0.00000113, 0.00000000],
+		[-6.27292865, -0.00051796, 0.00031736, 0.00052059, -0.00000113, 0.00000000],
+		[-6.27292886, -0.00051788, 0.00031731, 0.00052050, -0.00000113, 0.00000000],
+		[-6.27292907, -0.00051779, 0.00031726, 0.00052041, -0.00000113, 0.00000000],
+		[-6.27292927, -0.00051770, 0.00031720, 0.00052033, -0.00000113, 0.00000000],
+		[-6.27292948, -0.00051762, 0.00031715, 0.00052024, -0.00000113, 0.00000000],
+		[-6.27292969, -0.00051753, 0.00031710, 0.00052015, -0.00000113, 0.00000000],
+		[-6.27292990, -0.00051744, 0.00031704, 0.00052007, -0.00000113, 0.00000000],
+		[-6.27293010, -0.00051736, 0.00031699, 0.00051998, -0.00000113, 0.00000000],
+		[-6.27293031, -0.00051727, 0.00031694, 0.00051989, -0.00000113, 0.00000000],
+		[-6.27293052, -0.00051718, 0.00031688, 0.00051981, -0.00000113, 0.00000000],
+		[-6.27293072, -0.00051710, 0.00031683, 0.00051972, -0.00000113, 0.00000000],
+		[-6.27293093, -0.00051701, 0.00031678, 0.00051963, -0.00000113, 0.00000000],
+		[-6.27293114, -0.00051693, 0.00031673, 0.00051955, -0.00000113, 0.00000000],
+		[-6.27293134, -0.00051684, 0.00031667, 0.00051946, -0.00000113, 0.00000000],
+		[-6.27293155, -0.00051675, 0.00031662, 0.00051937, -0.00000113, 0.00000000],
+		[-6.27293176, -0.00051667, 0.00031657, 0.00051929, -0.00000113, 0.00000000],
+		[-6.27293196, -0.00051658, 0.00031651, 0.00051920, -0.00000113, 0.00000000],
+		[-6.27293217, -0.00051649, 0.00031646, 0.00051911, -0.00000113, 0.00000000],
+		[-6.27293237, -0.00051641, 0.00031641, 0.00051903, -0.00000113, 0.00000000],
+		[-6.27293258, -0.00051632, 0.00031636, 0.00051894, -0.00000113, 0.00000000],
+		[-6.27293279, -0.00051624, 0.00031630, 0.00051885, -0.00000113, 0.00000000],
+		[-6.27293299, -0.00051615, 0.00031625, 0.00051877, -0.00000113, 0.00000000],
+		[-6.27293320, -0.00051606, 0.00031620, 0.00051868, -0.00000113, 0.00000000],
+		[-6.27293340, -0.00051598, 0.00031614, 0.00051859, -0.00000113, 0.00000000],
+		[-6.27293361, -0.00051589, 0.00031609, 0.00051851, -0.00000113, 0.00000000],
+		[-6.27293382, -0.00051581, 0.00031604, 0.00051842, -0.00000113, 0.00000000],
+		[-6.27293402, -0.00051572, 0.00031599, 0.00051833, -0.00000113, 0.00000000],
+		[-6.27293423, -0.00051563, 0.00031593, 0.00051825, -0.00000113, 0.00000000],
+		[-6.27293443, -0.00051555, 0.00031588, 0.00051816, -0.00000113, 0.00000000],
+		[-6.27293464, -0.00051546, 0.00031583, 0.00051807, -0.00000113, 0.00000000],
+		[-6.27293484, -0.00051538, 0.00031578, 0.00051799, -0.00000113, 0.00000000],
+		[-6.27293505, -0.00051529, 0.00031572, 0.00051790, -0.00000113, 0.00000000],
+		[-6.27293525, -0.00051520, 0.00031567, 0.00051782, -0.00000113, 0.00000000],
+		[-6.27293546, -0.00051512, 0.00031562, 0.00051773, -0.00000113, 0.00000000],
+		[-6.27293566, -0.00051503, 0.00031557, 0.00051764, -0.00000113, 0.00000000],
+		[-6.27293587, -0.00051495, 0.00031551, 0.00051756, -0.00000113, 0.00000000],
+		[-6.27293607, -0.00051486, 0.00031546, 0.00051747, -0.00000113, 0.00000000],
+		[-6.27293628, -0.00051478, 0.00031541, 0.00051739, -0.00000113, 0.00000000],
+		[-6.27293648, -0.00051469, 0.00031536, 0.00051730, -0.00000113, 0.00000000],
+		[-6.27293669, -0.00051461, 0.00031530, 0.00051721, -0.00000113, 0.00000000],
+		[-6.27293689, -0.00051452, 0.00031525, 0.00051713, -0.00000113, 0.00000000],
+		[-6.27293710, -0.00051443, 0.00031520, 0.00051704, -0.00000113, 0.00000000],
+		[-6.27293730, -0.00051435, 0.00031515, 0.00051696, -0.00000113, 0.00000000],
+		[-6.27293751, -0.00051426, 0.00031509, 0.00051687, -0.00000113, 0.00000000],
+		[-6.27293771, -0.00051418, 0.00031504, 0.00051678, -0.00000113, 0.00000000],
+		[-6.27293792, -0.00051409, 0.00031499, 0.00051670, -0.00000113, 0.00000000],
+		[-6.27293812, -0.00051401, 0.00031494, 0.00051661, -0.00000113, 0.00000000],
+		[-6.27293832, -0.00051392, 0.00031488, 0.00051653, -0.00000113, 0.00000000],
+		[-6.27293853, -0.00051384, 0.00031483, 0.00051644, -0.00000113, 0.00000000],
+		[-6.27293873, -0.00051375, 0.00031478, 0.00051635, -0.00000113, 0.00000000],
+		[-6.27293894, -0.00051367, 0.00031473, 0.00051627, -0.00000113, 0.00000000],
+		[-6.27293914, -0.00051358, 0.00031467, 0.00051618, -0.00000113, 0.00000000],
+		[-6.27293934, -0.00051350, 0.00031462, 0.00051610, -0.00000113, 0.00000000],
+		[-6.27293955, -0.00051341, 0.00031457, 0.00051601, -0.00000113, 0.00000000],
+		[-6.27293975, -0.00051333, 0.00031452, 0.00051593, -0.00000113, 0.00000000],
+		[-6.27293995, -0.00051324, 0.00031447, 0.00051584, -0.00000113, 0.00000000],
+		[-6.27294016, -0.00051315, 0.00031441, 0.00051576, -0.00000113, 0.00000000],
+		[-6.27294036, -0.00051307, 0.00031436, 0.00051567, -0.00000113, 0.00000000],
+		[-6.27294057, -0.00051298, 0.00031431, 0.00051558, -0.00000113, 0.00000000],
+		[-6.27294077, -0.00051290, 0.00031426, 0.00051550, -0.00000113, 0.00000000],
+		[-6.27294097, -0.00051281, 0.00031421, 0.00051541, -0.00000113, 0.00000000],
+		[-6.27294118, -0.00051273, 0.00031415, 0.00051533, -0.00000113, 0.00000000],
+		[-6.27294138, -0.00051265, 0.00031410, 0.00051524, -0.00000113, 0.00000000],
+		[-6.27294158, -0.00051256, 0.00031405, 0.00051516, -0.00000113, 0.00000000],
+		[-6.27294178, -0.00051248, 0.00031400, 0.00051507, -0.00000113, 0.00000000],
+		[-6.27294199, -0.00051239, 0.00031395, 0.00051499, -0.00000113, 0.00000000],
+		[-6.27294219, -0.00051231, 0.00031389, 0.00051490, -0.00000113, 0.00000000],
+		[-6.27294239, -0.00051222, 0.00031384, 0.00051482, -0.00000113, 0.00000000],
+		[-6.27294260, -0.00051214, 0.00031379, 0.00051473, -0.00000113, 0.00000000],
+		[-6.27294280, -0.00051205, 0.00031374, 0.00051465, -0.00000113, 0.00000000],
+		[-6.27294300, -0.00051197, 0.00031369, 0.00051456, -0.00000113, 0.00000000],
+		[-6.27294320, -0.00051188, 0.00031363, 0.00051448, -0.00000113, 0.00000000],
+		[-6.27294341, -0.00051180, 0.00031358, 0.00051439, -0.00000113, 0.00000000],
+		[-6.27294361, -0.00051171, 0.00031353, 0.00051431, -0.00000113, 0.00000000],
+		[-6.27294381, -0.00051163, 0.00031348, 0.00051422, -0.00000113, 0.00000000],
+		[-6.27294401, -0.00051154, 0.00031343, 0.00051414, -0.00000113, 0.00000000],
+		[-6.27294422, -0.00051146, 0.00031337, 0.00051405, -0.00000113, 0.00000000],
+		[-6.27294442, -0.00051137, 0.00031332, 0.00051397, -0.00000113, 0.00000000],
+		[-6.27294462, -0.00051129, 0.00031327, 0.00051388, -0.00000113, 0.00000000],
+		[-6.27294482, -0.00051121, 0.00031322, 0.00051380, -0.00000113, 0.00000000],
+		[-6.27294502, -0.00051112, 0.00031317, 0.00051371, -0.00000113, 0.00000000],
+		[-6.27294523, -0.00051104, 0.00031312, 0.00051363, -0.00000113, 0.00000000],
+		[-6.27294543, -0.00051095, 0.00031306, 0.00051354, -0.00000113, 0.00000000],
+		[-6.27294563, -0.00051087, 0.00031301, 0.00051346, -0.00000113, 0.00000000],
+		[-6.27294583, -0.00051078, 0.00031296, 0.00051337, -0.00000113, 0.00000000],
+		[-6.27294603, -0.00051070, 0.00031291, 0.00051329, -0.00000113, 0.00000000],
+		[-6.27294623, -0.00051062, 0.00031286, 0.00051320, -0.00000113, 0.00000000],
+		[-6.27294644, -0.00051053, 0.00031281, 0.00051312, -0.00000113, 0.00000000],
+		[-6.27294664, -0.00051045, 0.00031275, 0.00051303, -0.00000113, 0.00000000],
+		[-6.27294684, -0.00051036, 0.00031270, 0.00051295, -0.00000113, 0.00000000],
+		[-6.27294704, -0.00051028, 0.00031265, 0.00051286, -0.00000113, 0.00000000],
+		[-6.27294724, -0.00051019, 0.00031260, 0.00051278, -0.00000113, 0.00000000],
+		[-6.27294744, -0.00051011, 0.00031255, 0.00051270, -0.00000113, 0.00000000],
+		[-6.27294764, -0.00051003, 0.00031250, 0.00051261, -0.00000113, 0.00000000],
+		[-6.27294784, -0.00050994, 0.00031244, 0.00051253, -0.00000113, 0.00000000],
+		[-6.27294805, -0.00050986, 0.00031239, 0.00051244, -0.00000113, 0.00000000],
+		[-6.27294825, -0.00050977, 0.00031234, 0.00051236, -0.00000113, 0.00000000],
+		[-6.27294845, -0.00050969, 0.00031229, 0.00051227, -0.00000113, 0.00000000],
+		[-6.27294865, -0.00050961, 0.00031224, 0.00051219, -0.00000113, 0.00000000],
+		[-6.27294885, -0.00050952, 0.00031219, 0.00051210, -0.00000113, 0.00000000],
+		[-6.27294905, -0.00050944, 0.00031214, 0.00051202, -0.00000113, 0.00000000],
+		[-6.27294925, -0.00050936, 0.00031208, 0.00051194, -0.00000113, 0.00000000],
+		[-6.27294945, -0.00050927, 0.00031203, 0.00051185, -0.00000113, 0.00000000],
+		[-6.27294965, -0.00050919, 0.00031198, 0.00051177, -0.00000113, 0.00000000],
+		[-6.27294985, -0.00050910, 0.00031193, 0.00051168, -0.00000113, 0.00000000],
+		[-6.27295005, -0.00050902, 0.00031188, 0.00051160, -0.00000113, 0.00000000],
+		[-6.27295025, -0.00050894, 0.00031183, 0.00051152, -0.00000113, 0.00000000],
+		[-6.27295045, -0.00050885, 0.00031178, 0.00051143, -0.00000113, 0.00000000],
+		[-6.27295065, -0.00050877, 0.00031173, 0.00051135, -0.00000113, 0.00000000],
+		[-6.27295085, -0.00050869, 0.00031167, 0.00051126, -0.00000113, 0.00000000],
+		[-6.27295105, -0.00050860, 0.00031162, 0.00051118, -0.00000113, 0.00000000],
+		[-6.27295125, -0.00050852, 0.00031157, 0.00051109, -0.00000113, 0.00000000],
+		[-6.27295145, -0.00050844, 0.00031152, 0.00051101, -0.00000113, 0.00000000],
+		[-6.27295165, -0.00050835, 0.00031147, 0.00051093, -0.00000113, 0.00000000],
+		[-6.27295185, -0.00050827, 0.00031142, 0.00051084, -0.00000113, 0.00000000],
+		[-6.27295205, -0.00050818, 0.00031137, 0.00051076, -0.00000113, 0.00000000],
+		[-6.27295225, -0.00050810, 0.00031132, 0.00051068, -0.00000113, 0.00000000],
+		[-6.27295245, -0.00050802, 0.00031126, 0.00051059, -0.00000113, 0.00000000],
+		[-6.27295265, -0.00050793, 0.00031121, 0.00051051, -0.00000113, 0.00000000],
+		[-6.27295285, -0.00050785, 0.00031116, 0.00051042, -0.00000113, 0.00000000],
+		[-6.27295305, -0.00050777, 0.00031111, 0.00051034, -0.00000113, 0.00000000],
+		[-6.27295325, -0.00050768, 0.00031106, 0.00051026, -0.00000113, 0.00000000],
+		[-6.27295345, -0.00050760, 0.00031101, 0.00051017, -0.00000113, 0.00000000],
+		[-6.27295365, -0.00050752, 0.00031096, 0.00051009, -0.00000113, 0.00000000],
+		[-6.27295385, -0.00050743, 0.00031091, 0.00051001, -0.00000113, 0.00000000],
+		[-6.27295404, -0.00050735, 0.00031086, 0.00050992, -0.00000113, 0.00000000],
+		[-6.27295424, -0.00050727, 0.00031081, 0.00050984, -0.00000113, 0.00000000],
+		[-6.27295444, -0.00050719, 0.00031075, 0.00050975, -0.00000113, 0.00000000],
+		[-6.27295464, -0.00050710, 0.00031070, 0.00050967, -0.00000113, 0.00000000],
+		[-6.27295484, -0.00050702, 0.00031065, 0.00050959, -0.00000113, 0.00000000],
+		[-6.27295504, -0.00050694, 0.00031060, 0.00050950, -0.00000113, 0.00000000],
+		[-6.27295524, -0.00050685, 0.00031055, 0.00050942, -0.00000113, 0.00000000],
+		[-6.27295544, -0.00050677, 0.00031050, 0.00050934, -0.00000113, 0.00000000],
+		[-6.27295563, -0.00050669, 0.00031045, 0.00050925, -0.00000113, 0.00000000],
+		[-6.27295583, -0.00050660, 0.00031040, 0.00050917, -0.00000113, 0.00000000],
+		[-6.27295603, -0.00050652, 0.00031035, 0.00050909, -0.00000113, 0.00000000],
+		[-6.27295623, -0.00050644, 0.00031030, 0.00050900, -0.00000113, 0.00000000],
+		[-6.27295643, -0.00050636, 0.00031025, 0.00050892, -0.00000113, 0.00000000],
+		[-6.27295663, -0.00050627, 0.00031019, 0.00050884, -0.00000113, 0.00000000],
+		[-6.27295682, -0.00050619, 0.00031014, 0.00050875, -0.00000113, 0.00000000],
+		[-6.27295702, -0.00050611, 0.00031009, 0.00050867, -0.00000113, 0.00000000],
+		[-6.27295722, -0.00050602, 0.00031004, 0.00050859, -0.00000113, 0.00000000],
+		[-6.27295742, -0.00050594, 0.00030999, 0.00050851, -0.00000113, 0.00000000],
+		[-6.27295762, -0.00050586, 0.00030994, 0.00050842, -0.00000113, 0.00000000],
+		[-6.27295781, -0.00050578, 0.00030989, 0.00050834, -0.00000113, 0.00000000],
+		[-6.27295801, -0.00050569, 0.00030984, 0.00050826, -0.00000113, 0.00000000],
+		[-6.27295821, -0.00050561, 0.00030979, 0.00050817, -0.00000113, 0.00000000],
+		[-6.27295841, -0.00050553, 0.00030974, 0.00050809, -0.00000113, 0.00000000],
+		[-6.27295860, -0.00050545, 0.00030969, 0.00050801, -0.00000113, 0.00000000],
+		[-6.27295880, -0.00050536, 0.00030964, 0.00050792, -0.00000113, 0.00000000],
+		[-6.27295900, -0.00050528, 0.00030959, 0.00050784, -0.00000113, 0.00000000],
+		[-6.27295920, -0.00050520, 0.00030954, 0.00050776, -0.00000113, 0.00000000],
+		[-6.27295939, -0.00050512, 0.00030949, 0.00050768, -0.00000113, 0.00000000],
+		[-6.27295959, -0.00050503, 0.00030944, 0.00050759, -0.00000113, 0.00000000],
+		[-6.27295979, -0.00050495, 0.00030938, 0.00050751, -0.00000113, 0.00000000],
+		[-6.27295998, -0.00050487, 0.00030933, 0.00050743, -0.00000113, 0.00000000],
+		[-6.27296018, -0.00050479, 0.00030928, 0.00050734, -0.00000113, 0.00000000],
+		[-6.27296038, -0.00050470, 0.00030923, 0.00050726, -0.00000113, 0.00000000],
+		[-6.27296058, -0.00050462, 0.00030918, 0.00050718, -0.00000113, 0.00000000],
+		[-6.27296077, -0.00050454, 0.00030913, 0.00050710, -0.00000113, 0.00000000],
+		[-6.27296097, -0.00050446, 0.00030908, 0.00050701, -0.00000113, 0.00000000],
+		[-6.27296117, -0.00050438, 0.00030903, 0.00050693, -0.00000113, 0.00000000],
+		[-6.27296136, -0.00050429, 0.00030898, 0.00050685, -0.00000113, 0.00000000],
+		[-6.27296156, -0.00050421, 0.00030893, 0.00050677, -0.00000113, 0.00000000],
+		[-6.27296176, -0.00050413, 0.00030888, 0.00050668, -0.00000113, 0.00000000],
+		[-6.27296195, -0.00050405, 0.00030883, 0.00050660, -0.00000113, 0.00000000],
+		[-6.27296215, -0.00050397, 0.00030878, 0.00050652, -0.00000113, 0.00000000],
+		[-6.27296234, -0.00050388, 0.00030873, 0.00050644, -0.00000113, 0.00000000],
+		[-6.27296254, -0.00050380, 0.00030868, 0.00050635, -0.00000113, 0.00000000],
+		[-6.27296274, -0.00050372, 0.00030863, 0.00050627, -0.00000113, 0.00000000],
+		[-6.27296293, -0.00050364, 0.00030858, 0.00050619, -0.00000113, 0.00000000],
+		[-6.27296313, -0.00050356, 0.00030853, 0.00050611, -0.00000113, 0.00000000],
+		[-6.27296332, -0.00050347, 0.00030848, 0.00050602, -0.00000113, 0.00000000],
+		[-6.27296352, -0.00050339, 0.00030843, 0.00050594, -0.00000113, 0.00000000],
+		[-6.27296372, -0.00050331, 0.00030838, 0.00050586, -0.00000113, 0.00000000],
+		[-6.27296391, -0.00050323, 0.00030833, 0.00050578, -0.00000113, 0.00000000],
+		[-6.27296411, -0.00050315, 0.00030828, 0.00050569, -0.00000113, 0.00000000],
+		[-6.27296430, -0.00050306, 0.00030823, 0.00050561, -0.00000113, 0.00000000],
+		[-6.27296450, -0.00050298, 0.00030818, 0.00050553, -0.00000113, 0.00000000],
+		[-6.27296469, -0.00050290, 0.00030813, 0.00050545, -0.00000113, 0.00000000],
+		[-6.27296489, -0.00050282, 0.00030808, 0.00050537, -0.00000113, 0.00000000],
+		[-6.27296509, -0.00050274, 0.00030803, 0.00050528, -0.00000113, 0.00000000],
+		[-6.27296528, -0.00050266, 0.00030798, 0.00050520, -0.00000113, 0.00000000],
+		[-6.27296548, -0.00050257, 0.00030793, 0.00050512, -0.00000113, 0.00000000],
+		[-6.27296567, -0.00050249, 0.00030788, 0.00050504, -0.00000113, 0.00000000],
+		[-6.27296587, -0.00050241, 0.00030783, 0.00050496, -0.00000113, 0.00000000],
+		[-6.27296606, -0.00050233, 0.00030778, 0.00050487, -0.00000113, 0.00000000],
+		[-6.27296626, -0.00050225, 0.00030773, 0.00050479, -0.00000113, 0.00000000],
+		[-6.27296645, -0.00050217, 0.00030768, 0.00050471, -0.00000113, 0.00000000],
+		[-6.27296665, -0.00050209, 0.00030763, 0.00050463, -0.00000113, 0.00000000],
+		[-6.27296684, -0.00050200, 0.00030758, 0.00050455, -0.00000113, 0.00000000],
+		[-6.27296704, -0.00050192, 0.00030753, 0.00050446, -0.00000113, 0.00000000],
+		[-6.27296723, -0.00050184, 0.00030748, 0.00050438, -0.00000113, 0.00000000],
+		[-6.27296743, -0.00050176, 0.00030743, 0.00050430, -0.00000113, 0.00000000],
+		[-6.27296762, -0.00050168, 0.00030738, 0.00050422, -0.00000113, 0.00000000],
+		[-6.27296781, -0.00050160, 0.00030733, 0.00050414, -0.00000113, 0.00000000],
+		[-6.27296801, -0.00050152, 0.00030728, 0.00050406, -0.00000113, 0.00000000],
+		[-6.27296820, -0.00050143, 0.00030723, 0.00050397, -0.00000113, 0.00000000],
+		[-6.27296840, -0.00050135, 0.00030718, 0.00050389, -0.00000113, 0.00000000],
+		[-6.27296859, -0.00050127, 0.00030713, 0.00050381, -0.00000113, 0.00000000],
+		[-6.27296879, -0.00050119, 0.00030708, 0.00050373, -0.00000113, 0.00000000],
+		[-6.27296898, -0.00050111, 0.00030703, 0.00050365, -0.00000113, 0.00000000],
+		[-6.27296917, -0.00050103, 0.00030698, 0.00050357, -0.00000113, 0.00000000],
+		[-6.27296937, -0.00050095, 0.00030693, 0.00050348, -0.00000113, 0.00000000],
+		[-6.27296956, -0.00050087, 0.00030688, 0.00050340, -0.00000113, 0.00000000],
+		[-6.27296976, -0.00050079, 0.00030683, 0.00050332, -0.00000113, 0.00000000],
+		[-6.27296995, -0.00050070, 0.00030678, 0.00050324, -0.00000113, 0.00000000],
+		[-6.27297014, -0.00050062, 0.00030673, 0.00050316, -0.00000113, 0.00000000],
+		[-6.27297034, -0.00050054, 0.00030668, 0.00050308, -0.00000113, 0.00000000],
+		[-6.27297053, -0.00050046, 0.00030663, 0.00050300, -0.00000113, 0.00000000],
+		[-6.27297073, -0.00050038, 0.00030658, 0.00050291, -0.00000113, 0.00000000],
+		[-6.27297092, -0.00050030, 0.00030653, 0.00050283, -0.00000113, 0.00000000],
+		[-6.27297111, -0.00050022, 0.00030648, 0.00050275, -0.00000113, 0.00000000],
+		[-6.27297131, -0.00050014, 0.00030643, 0.00050267, -0.00000113, 0.00000000],
+		[-6.27297150, -0.00050006, 0.00030638, 0.00050259, -0.00000113, 0.00000000],
+		[-6.27297169, -0.00049998, 0.00030633, 0.00050251, -0.00000113, 0.00000000],
+		[-6.27297189, -0.00049990, 0.00030629, 0.00050243, -0.00000113, 0.00000000],
+		[-6.27297208, -0.00049982, 0.00030624, 0.00050235, -0.00000113, 0.00000000],
+		[-6.27297227, -0.00049973, 0.00030619, 0.00050227, -0.00000113, 0.00000000],
+		[-6.27297246, -0.00049965, 0.00030614, 0.00050218, -0.00000113, 0.00000000],
+		[-6.27297266, -0.00049957, 0.00030609, 0.00050210, -0.00000113, 0.00000000],
+		[-6.27297285, -0.00049949, 0.00030604, 0.00050202, -0.00000113, 0.00000000],
+		[-6.27297304, -0.00049941, 0.00030599, 0.00050194, -0.00000113, 0.00000000],
+		[-6.27297324, -0.00049933, 0.00030594, 0.00050186, -0.00000113, 0.00000000],
+		[-6.27297343, -0.00049925, 0.00030589, 0.00050178, -0.00000113, 0.00000000],
+		[-6.27297362, -0.00049917, 0.00030584, 0.00050170, -0.00000113, 0.00000000],
+		[-6.27297381, -0.00049909, 0.00030579, 0.00050162, -0.00000113, 0.00000000],
+		[-6.27297401, -0.00049901, 0.00030574, 0.00050154, -0.00000113, 0.00000000],
+		[-6.27297420, -0.00049893, 0.00030569, 0.00050146, -0.00000113, 0.00000000],
+		[-6.27297439, -0.00049885, 0.00030564, 0.00050137, -0.00000113, 0.00000000],
+		[-6.27297458, -0.00049877, 0.00030559, 0.00050129, -0.00000113, 0.00000000],
+		[-6.27297478, -0.00049869, 0.00030554, 0.00050121, -0.00000113, 0.00000000],
+		[-6.27297497, -0.00049861, 0.00030550, 0.00050113, -0.00000113, 0.00000000],
+		[-6.27297516, -0.00049853, 0.00030545, 0.00050105, -0.00000113, 0.00000000],
+		[-6.27297535, -0.00049845, 0.00030540, 0.00050097, -0.00000113, 0.00000000],
+		[-6.27297554, -0.00049837, 0.00030535, 0.00050089, -0.00000113, 0.00000000],
+		[-6.27297574, -0.00049829, 0.00030530, 0.00050081, -0.00000113, 0.00000000],
+		[-6.27297593, -0.00049821, 0.00030525, 0.00050073, -0.00000113, 0.00000000],
+		[-6.27297612, -0.00049813, 0.00030520, 0.00050065, -0.00000113, 0.00000000],
+		[-6.27297631, -0.00049805, 0.00030515, 0.00050057, -0.00000113, 0.00000000],
+		[-6.27297650, -0.00049797, 0.00030510, 0.00050049, -0.00000113, 0.00000000],
+		[-6.27297670, -0.00049789, 0.00030505, 0.00050041, -0.00000113, 0.00000000],
+		[-6.27297689, -0.00049781, 0.00030500, 0.00050033, -0.00000113, 0.00000000],
+		[-6.27297708, -0.00049773, 0.00030495, 0.00050025, -0.00000113, 0.00000000],
+		[-6.27297727, -0.00049765, 0.00030491, 0.00050017, -0.00000113, 0.00000000],
+		[-6.27297746, -0.00049757, 0.00030486, 0.00050009, -0.00000113, 0.00000000],
+		[-6.27297765, -0.00049749, 0.00030481, 0.00050000, -0.00000113, 0.00000000],
+		[-6.27297784, -0.00049741, 0.00030476, 0.00049992, -0.00000113, 0.00000000],
+		[-6.27297804, -0.00049733, 0.00030471, 0.00049984, -0.00000113, 0.00000000],
+		[-6.27297823, -0.00049725, 0.00030466, 0.00049976, -0.00000113, 0.00000000],
+		[-6.27297842, -0.00049717, 0.00030461, 0.00049968, -0.00000113, 0.00000000],
+		[-6.27297861, -0.00049709, 0.00030456, 0.00049960, -0.00000113, 0.00000000],
+		[-6.27297880, -0.00049701, 0.00030451, 0.00049952, -0.00000113, 0.00000000],
+		[-6.27297899, -0.00049693, 0.00030446, 0.00049944, -0.00000113, 0.00000000],
+		[-6.27297918, -0.00049685, 0.00030442, 0.00049936, -0.00000113, 0.00000000],
+		[-6.27297937, -0.00049677, 0.00030437, 0.00049928, -0.00000113, 0.00000000],
+		[-6.27297956, -0.00049669, 0.00030432, 0.00049920, -0.00000113, 0.00000000],
+		[-6.27297975, -0.00049661, 0.00030427, 0.00049912, -0.00000113, 0.00000000],
+		[-6.27297994, -0.00049653, 0.00030422, 0.00049904, -0.00000113, 0.00000000],
+		[-6.27298013, -0.00049645, 0.00030417, 0.00049896, -0.00000113, 0.00000000],
+		[-6.27298033, -0.00049637, 0.00030412, 0.00049888, -0.00000114, 0.00000000],
+		[-6.27298052, -0.00049629, 0.00030407, 0.00049880, -0.00000114, 0.00000000],
+		[-6.27298071, -0.00049621, 0.00030403, 0.00049872, -0.00000114, 0.00000000],
+		[-6.27298090, -0.00049613, 0.00030398, 0.00049864, -0.00000114, 0.00000000],
+		[-6.27298109, -0.00049605, 0.00030393, 0.00049856, -0.00000114, 0.00000000],
+		[-6.27298128, -0.00049597, 0.00030388, 0.00049848, -0.00000114, 0.00000000],
+		[-6.27298147, -0.00049589, 0.00030383, 0.00049840, -0.00000114, 0.00000000],
+		[-6.27298166, -0.00049581, 0.00030378, 0.00049832, -0.00000114, 0.00000000],
+		[-6.27298185, -0.00049573, 0.00030373, 0.00049824, -0.00000114, 0.00000000],
+		[-6.27298204, -0.00049565, 0.00030368, 0.00049816, -0.00000114, 0.00000000],
+		[-6.27298223, -0.00049557, 0.00030364, 0.00049808, -0.00000114, 0.00000000],
+		[-6.27298242, -0.00049550, 0.00030359, 0.00049800, -0.00000114, 0.00000000],
+		[-6.27298261, -0.00049542, 0.00030354, 0.00049792, -0.00000114, 0.00000000],
+		[-6.27298280, -0.00049534, 0.00030349, 0.00049784, -0.00000114, 0.00000000],
+		[-6.27298299, -0.00049526, 0.00030344, 0.00049776, -0.00000114, 0.00000000],
+		[-6.27298318, -0.00049518, 0.00030339, 0.00049769, -0.00000114, 0.00000000],
+		[-6.27298336, -0.00049510, 0.00030334, 0.00049761, -0.00000114, 0.00000000],
+		[-6.27298355, -0.00049502, 0.00030330, 0.00049753, -0.00000114, 0.00000000],
+		[-6.27298374, -0.00049494, 0.00030325, 0.00049745, -0.00000114, 0.00000000],
+		[-6.27298393, -0.00049486, 0.00030320, 0.00049737, -0.00000114, 0.00000000],
+		[-6.27298412, -0.00049478, 0.00030315, 0.00049729, -0.00000114, 0.00000000],
+		[-6.27298431, -0.00049470, 0.00030310, 0.00049721, -0.00000114, 0.00000000],
+		[-6.27298450, -0.00049462, 0.00030305, 0.00049713, -0.00000114, 0.00000000],
+		[-6.27298469, -0.00049455, 0.00030300, 0.00049705, -0.00000114, 0.00000000],
+		[-6.27298488, -0.00049447, 0.00030296, 0.00049697, -0.00000114, 0.00000000],
+		[-6.27298507, -0.00049439, 0.00030291, 0.00049689, -0.00000114, 0.00000000],
+		[-6.27298526, -0.00049431, 0.00030286, 0.00049681, -0.00000114, 0.00000000],
+		[-6.27298545, -0.00049423, 0.00030281, 0.00049673, -0.00000114, 0.00000000],
+		[-6.27298563, -0.00049415, 0.00030276, 0.00049665, -0.00000114, 0.00000000],
+		[-6.27298582, -0.00049407, 0.00030271, 0.00049657, -0.00000114, 0.00000000],
+		[-6.27298601, -0.00049399, 0.00030267, 0.00049649, -0.00000114, 0.00000000],
+		[-6.27298620, -0.00049391, 0.00030262, 0.00049641, -0.00000114, 0.00000000],
+		[-6.27298639, -0.00049384, 0.00030257, 0.00049634, -0.00000114, 0.00000000],
+		[-6.27298658, -0.00049376, 0.00030252, 0.00049626, -0.00000114, 0.00000000],
+		[-6.27298677, -0.00049368, 0.00030247, 0.00049618, -0.00000114, 0.00000000],
+		[-6.27298695, -0.00049360, 0.00030242, 0.00049610, -0.00000114, 0.00000000],
+		[-6.27298714, -0.00049352, 0.00030238, 0.00049602, -0.00000114, 0.00000000],
+		[-6.27298733, -0.00049344, 0.00030233, 0.00049594, -0.00000114, 0.00000000],
+		[-6.27298752, -0.00049336, 0.00030228, 0.00049586, -0.00000114, 0.00000000],
+		[-6.27298771, -0.00049328, 0.00030223, 0.00049578, -0.00000114, 0.00000000],
+		[-6.27298790, -0.00049321, 0.00030218, 0.00049570, -0.00000114, 0.00000000],
+		[-6.27298808, -0.00049313, 0.00030214, 0.00049562, -0.00000114, 0.00000000],
+		[-6.27298827, -0.00049305, 0.00030209, 0.00049554, -0.00000114, 0.00000000],
+		[-6.27298846, -0.00049297, 0.00030204, 0.00049547, -0.00000114, 0.00000000],
+		[-6.27298865, -0.00049289, 0.00030199, 0.00049539, -0.00000114, 0.00000000],
+		[-6.27298883, -0.00049281, 0.00030194, 0.00049531, -0.00000114, 0.00000000],
+		[-6.27298902, -0.00049273, 0.00030189, 0.00049523, -0.00000114, 0.00000000],
+		[-6.27298921, -0.00049266, 0.00030185, 0.00049515, -0.00000114, 0.00000000],
+		[-6.27298940, -0.00049258, 0.00030180, 0.00049507, -0.00000114, 0.00000000],
+		[-6.27298959, -0.00049250, 0.00030175, 0.00049499, -0.00000114, 0.00000000],
+		[-6.27298977, -0.00049242, 0.00030170, 0.00049491, -0.00000114, 0.00000000],
+		[-6.27298996, -0.00049234, 0.00030165, 0.00049484, -0.00000114, 0.00000000],
+		[-6.27299015, -0.00049226, 0.00030161, 0.00049476, -0.00000114, 0.00000000],
+		[-6.27299033, -0.00049219, 0.00030156, 0.00049468, -0.00000114, 0.00000000],
+		[-6.27299052, -0.00049211, 0.00030151, 0.00049460, -0.00000114, 0.00000000],
+		[-6.27299071, -0.00049203, 0.00030146, 0.00049452, -0.00000114, 0.00000000],
+		[-6.27299090, -0.00049195, 0.00030141, 0.00049444, -0.00000114, 0.00000000],
+		[-6.27299108, -0.00049187, 0.00030137, 0.00049436, -0.00000114, 0.00000000],
+		[-6.27299127, -0.00049180, 0.00030132, 0.00049428, -0.00000114, 0.00000000],
+		[-6.27299146, -0.00049172, 0.00030127, 0.00049421, -0.00000114, 0.00000000],
+		[-6.27299164, -0.00049164, 0.00030122, 0.00049413, -0.00000114, 0.00000000],
+		[-6.27299183, -0.00049156, 0.00030118, 0.00049405, -0.00000114, 0.00000000],
+		[-6.27299202, -0.00049148, 0.00030113, 0.00049397, -0.00000114, 0.00000000],
+		[-6.27299220, -0.00049140, 0.00030108, 0.00049389, -0.00000114, 0.00000000],
+		[-6.27299239, -0.00049133, 0.00030103, 0.00049381, -0.00000114, 0.00000000],
+		[-6.27299258, -0.00049125, 0.00030098, 0.00049374, -0.00000114, 0.00000000],
+		[-6.27299276, -0.00049117, 0.00030094, 0.00049366, -0.00000114, 0.00000000],
+		[-6.27299295, -0.00049109, 0.00030089, 0.00049358, -0.00000114, 0.00000000],
+		[-6.27299314, -0.00049102, 0.00030084, 0.00049350, -0.00000114, 0.00000000],
+		[-6.27299332, -0.00049094, 0.00030079, 0.00049342, -0.00000114, 0.00000000],
+		[-6.27299351, -0.00049086, 0.00030075, 0.00049334, -0.00000114, 0.00000000],
+		[-6.27299370, -0.00049078, 0.00030070, 0.00049327, -0.00000114, 0.00000000],
+		[-6.27299388, -0.00049070, 0.00030065, 0.00049319, -0.00000114, 0.00000000],
+		[-6.27299407, -0.00049063, 0.00030060, 0.00049311, -0.00000114, 0.00000000],
+		[-6.27299425, -0.00049055, 0.00030055, 0.00049303, -0.00000114, 0.00000000],
+		[-6.27299444, -0.00049047, 0.00030051, 0.00049295, -0.00000114, 0.00000000],
+		[-6.27299463, -0.00049039, 0.00030046, 0.00049288, -0.00000114, 0.00000000],
+		[-6.27299481, -0.00049032, 0.00030041, 0.00049280, -0.00000114, 0.00000000],
+		[-6.27299500, -0.00049024, 0.00030036, 0.00049272, -0.00000114, 0.00000000],
+		[-6.27299518, -0.00049016, 0.00030032, 0.00049264, -0.00000114, 0.00000000],
+		[-6.27299537, -0.00049008, 0.00030027, 0.00049256, -0.00000114, 0.00000000],
+		[-6.27299556, -0.00049000, 0.00030022, 0.00049249, -0.00000114, 0.00000000],
+		[-6.27299574, -0.00048993, 0.00030017, 0.00049241, -0.00000114, 0.00000000],
+		[-6.27299593, -0.00048985, 0.00030013, 0.00049233, -0.00000114, 0.00000000],
+		[-6.27299611, -0.00048977, 0.00030008, 0.00049225, -0.00000114, 0.00000000],
+		[-6.27299630, -0.00048969, 0.00030003, 0.00049217, -0.00000114, 0.00000000],
+		[-6.27299648, -0.00048962, 0.00029998, 0.00049210, -0.00000114, 0.00000000],
+		[-6.27299667, -0.00048954, 0.00029994, 0.00049202, -0.00000114, 0.00000000],
+		[-6.27299685, -0.00048946, 0.00029989, 0.00049194, -0.00000114, 0.00000000],
+		[-6.27299704, -0.00048938, 0.00029984, 0.00049186, -0.00000114, 0.00000000],
+		[-6.27299722, -0.00048931, 0.00029979, 0.00049178, -0.00000114, 0.00000000],
+		[-6.27299741, -0.00048923, 0.00029975, 0.00049171, -0.00000114, 0.00000000],
+		[-6.27299759, -0.00048915, 0.00029970, 0.00049163, -0.00000114, 0.00000000],
+		[-6.27299778, -0.00048908, 0.00029965, 0.00049155, -0.00000114, 0.00000000],
+		[-6.27299796, -0.00048900, 0.00029960, 0.00049147, -0.00000114, 0.00000000],
+		[-6.27299815, -0.00048892, 0.00029956, 0.00049140, -0.00000114, 0.00000000],
+		[-6.27299833, -0.00048884, 0.00029951, 0.00049132, -0.00000114, 0.00000000],
+		[-6.27299852, -0.00048877, 0.00029946, 0.00049124, -0.00000114, 0.00000000],
+		[-6.27299870, -0.00048869, 0.00029941, 0.00049116, -0.00000114, 0.00000000],
+		[-6.27299889, -0.00048861, 0.00029937, 0.00049109, -0.00000114, 0.00000000],
+		[-6.27299907, -0.00048854, 0.00029932, 0.00049101, -0.00000114, 0.00000000],
+		[-6.27299926, -0.00048846, 0.00029927, 0.00049093, -0.00000114, 0.00000000],
+		[-6.27299944, -0.00048838, 0.00029923, 0.00049085, -0.00000114, 0.00000000],
+		[-6.27299962, -0.00048830, 0.00029918, 0.00049078, -0.00000114, 0.00000000],
+		[-6.27299981, -0.00048823, 0.00029913, 0.00049070, -0.00000114, 0.00000000],
+		[-6.27299999, -0.00048815, 0.00029908, 0.00049062, -0.00000114, 0.00000000],
+		[-6.27300018, -0.00048807, 0.00029904, 0.00049054, -0.00000114, 0.00000000],
+		[-6.27300036, -0.00048800, 0.00029899, 0.00049047, -0.00000114, 0.00000000],
+		[-6.27300055, -0.00048792, 0.00029894, 0.00049039, -0.00000114, 0.00000000],
+		[-6.27300073, -0.00048784, 0.00029890, 0.00049031, -0.00000114, 0.00000000],
+		[-6.27300091, -0.00048777, 0.00029885, 0.00049023, -0.00000114, 0.00000000],
+		[-6.27300110, -0.00048769, 0.00029880, 0.00049016, -0.00000114, 0.00000000],
+		[-6.27300128, -0.00048761, 0.00029875, 0.00049008, -0.00000114, 0.00000000],
+		[-6.27300146, -0.00048754, 0.00029871, 0.00049000, -0.00000114, 0.00000000],
+		[-6.27300165, -0.00048746, 0.00029866, 0.00048993, -0.00000114, 0.00000000],
+		[-6.27300183, -0.00048738, 0.00029861, 0.00048985, -0.00000114, 0.00000000],
+		[-6.27300202, -0.00048730, 0.00029857, 0.00048977, -0.00000114, 0.00000000],
+		[-6.27300220, -0.00048723, 0.00029852, 0.00048969, -0.00000114, 0.00000000],
+		[-6.27300238, -0.00048715, 0.00029847, 0.00048962, -0.00000114, 0.00000000],
+		[-6.27300257, -0.00048707, 0.00029842, 0.00048954, -0.00000114, 0.00000000],
+		[-6.27300275, -0.00048700, 0.00029838, 0.00048946, -0.00000114, 0.00000000],
+		[-6.27300293, -0.00048692, 0.00029833, 0.00048939, -0.00000114, 0.00000000],
+		[-6.27300312, -0.00048685, 0.00029828, 0.00048931, -0.00000114, 0.00000000],
+		[-6.27300330, -0.00048677, 0.00029824, 0.00048923, -0.00000114, 0.00000000],
+		[-6.27300348, -0.00048669, 0.00029819, 0.00048916, -0.00000114, 0.00000000],
+		[-6.27300367, -0.00048662, 0.00029814, 0.00048908, -0.00000114, 0.00000000],
+		[-6.27300385, -0.00048654, 0.00029810, 0.00048900, -0.00000114, 0.00000000],
+		[-6.27300403, -0.00048646, 0.00029805, 0.00048892, -0.00000114, 0.00000000],
+		[-6.27300421, -0.00048639, 0.00029800, 0.00048885, -0.00000114, 0.00000000],
+		[-6.27300440, -0.00048631, 0.00029796, 0.00048877, -0.00000114, 0.00000000],
+		[-6.27300458, -0.00048623, 0.00029791, 0.00048869, -0.00000114, 0.00000000],
+		[-6.27300476, -0.00048616, 0.00029786, 0.00048862, -0.00000114, 0.00000000],
+		[-6.27300495, -0.00048608, 0.00029782, 0.00048854, -0.00000114, 0.00000000],
+		[-6.27300513, -0.00048600, 0.00029777, 0.00048846, -0.00000114, 0.00000000],
+		[-6.27300531, -0.00048593, 0.00029772, 0.00048839, -0.00000114, 0.00000000],
+		[-6.27300549, -0.00048585, 0.00029768, 0.00048831, -0.00000114, 0.00000000],
+		[-6.27300568, -0.00048578, 0.00029763, 0.00048823, -0.00000114, 0.00000000],
+		[-6.27300586, -0.00048570, 0.00029758, 0.00048816, -0.00000114, 0.00000000],
+		[-6.27300604, -0.00048562, 0.00029753, 0.00048808, -0.00000114, 0.00000000],
+		[-6.27300622, -0.00048555, 0.00029749, 0.00048800, -0.00000114, 0.00000000],
+		[-6.27300640, -0.00048547, 0.00029744, 0.00048793, -0.00000114, 0.00000000],
+		[-6.27300659, -0.00048539, 0.00029739, 0.00048785, -0.00000114, 0.00000000],
+		[-6.27300677, -0.00048532, 0.00029735, 0.00048777, -0.00000114, 0.00000000],
+		[-6.27300695, -0.00048524, 0.00029730, 0.00048770, -0.00000114, 0.00000000],
+		[-6.27300713, -0.00048517, 0.00029725, 0.00048762, -0.00000114, 0.00000000],
+		[-6.27300732, -0.00048509, 0.00029721, 0.00048755, -0.00000114, 0.00000000],
+		[-6.27300750, -0.00048501, 0.00029716, 0.00048747, -0.00000114, 0.00000000],
+		[-6.27300768, -0.00048494, 0.00029712, 0.00048739, -0.00000114, 0.00000000],
+		[-6.27300786, -0.00048486, 0.00029707, 0.00048732, -0.00000114, 0.00000000],
+		[-6.27300804, -0.00048479, 0.00029702, 0.00048724, -0.00000114, 0.00000000],
+		[-6.27300822, -0.00048471, 0.00029698, 0.00048716, -0.00000114, 0.00000000],
+		[-6.27300841, -0.00048463, 0.00029693, 0.00048709, -0.00000114, 0.00000000],
+		[-6.27300859, -0.00048456, 0.00029688, 0.00048701, -0.00000114, 0.00000000],
+		[-6.27300877, -0.00048448, 0.00029684, 0.00048693, -0.00000114, 0.00000000],
+		[-6.27300895, -0.00048441, 0.00029679, 0.00048686, -0.00000114, 0.00000000],
+		[-6.27300913, -0.00048433, 0.00029674, 0.00048678, -0.00000114, 0.00000000],
+		[-6.27300931, -0.00048426, 0.00029670, 0.00048671, -0.00000114, 0.00000000],
+		[-6.27300949, -0.00048418, 0.00029665, 0.00048663, -0.00000114, 0.00000000],
+		[-6.27300968, -0.00048410, 0.00029660, 0.00048655, -0.00000114, 0.00000000],
+		[-6.27300986, -0.00048403, 0.00029656, 0.00048648, -0.00000114, 0.00000000],
+		[-6.27301004, -0.00048395, 0.00029651, 0.00048640, -0.00000114, 0.00000000],
+		[-6.27301022, -0.00048388, 0.00029646, 0.00048633, -0.00000114, 0.00000000],
+		[-6.27301040, -0.00048380, 0.00029642, 0.00048625, -0.00000114, 0.00000000],
+		[-6.27301058, -0.00048373, 0.00029637, 0.00048617, -0.00000114, 0.00000000],
+		[-6.27301076, -0.00048365, 0.00029633, 0.00048610, -0.00000114, 0.00000000],
+		[-6.27301094, -0.00048357, 0.00029628, 0.00048602, -0.00000114, 0.00000000],
+		[-6.27301112, -0.00048350, 0.00029623, 0.00048595, -0.00000114, 0.00000000],
+		[-6.27301130, -0.00048342, 0.00029619, 0.00048587, -0.00000114, 0.00000000],
+		[-6.27301148, -0.00048335, 0.00029614, 0.00048579, -0.00000114, 0.00000000],
+		[-6.27301166, -0.00048327, 0.00029609, 0.00048572, -0.00000114, 0.00000000],
+		[-6.27301185, -0.00048320, 0.00029605, 0.00048564, -0.00000114, 0.00000000],
+		[-6.27301203, -0.00048312, 0.00029600, 0.00048557, -0.00000114, 0.00000000],
+		[-6.27301221, -0.00048305, 0.00029596, 0.00048549, -0.00000114, 0.00000000],
+		[-6.27301239, -0.00048297, 0.00029591, 0.00048542, -0.00000114, 0.00000000],
+		[-6.27301257, -0.00048290, 0.00029586, 0.00048534, -0.00000114, 0.00000000],
+		[-6.27301275, -0.00048282, 0.00029582, 0.00048526, -0.00000114, 0.00000000],
+		[-6.27301293, -0.00048275, 0.00029577, 0.00048519, -0.00000114, 0.00000000],
+		[-6.27301311, -0.00048267, 0.00029572, 0.00048511, -0.00000114, 0.00000000],
+		[-6.27301329, -0.00048259, 0.00029568, 0.00048504, -0.00000114, 0.00000000],
+		[-6.27301347, -0.00048252, 0.00029563, 0.00048496, -0.00000114, 0.00000000],
+		[-6.27301365, -0.00048244, 0.00029559, 0.00048489, -0.00000114, 0.00000000],
+		[-6.27301383, -0.00048237, 0.00029554, 0.00048481, -0.00000114, 0.00000000],
+		[-6.27301401, -0.00048229, 0.00029549, 0.00048473, -0.00000114, 0.00000000],
+		[-6.27301419, -0.00048222, 0.00029545, 0.00048466, -0.00000114, 0.00000000],
+		[-6.27301437, -0.00048214, 0.00029540, 0.00048458, -0.00000114, 0.00000000],
+		[-6.27301455, -0.00048207, 0.00029536, 0.00048451, -0.00000114, 0.00000000],
+		[-6.27301473, -0.00048199, 0.00029531, 0.00048443, -0.00000114, 0.00000000],
+		[-6.27301491, -0.00048192, 0.00029526, 0.00048436, -0.00000114, 0.00000000],
+		[-6.27301509, -0.00048184, 0.00029522, 0.00048428, -0.00000114, 0.00000000],
+		[-6.27301526, -0.00048177, 0.00029517, 0.00048421, -0.00000114, 0.00000000],
+		[-6.27301544, -0.00048169, 0.00029513, 0.00048413, -0.00000114, 0.00000000],
+		[-6.27301562, -0.00048162, 0.00029508, 0.00048406, -0.00000114, 0.00000000],
+		[-6.27301580, -0.00048154, 0.00029503, 0.00048398, -0.00000114, 0.00000000],
+		[-6.27301598, -0.00048147, 0.00029499, 0.00048390, -0.00000114, 0.00000000],
+		[-6.27301616, -0.00048139, 0.00029494, 0.00048383, -0.00000114, 0.00000000],
+		[-6.27301634, -0.00048132, 0.00029490, 0.00048375, -0.00000114, 0.00000000],
+		[-6.27301652, -0.00048124, 0.00029485, 0.00048368, -0.00000114, 0.00000000],
+		[-6.27301670, -0.00048117, 0.00029480, 0.00048360, -0.00000114, 0.00000000],
+		[-6.27301688, -0.00048109, 0.00029476, 0.00048353, -0.00000114, 0.00000000],
+		[-6.27301706, -0.00048102, 0.00029471, 0.00048345, -0.00000114, 0.00000000],
+		[-6.27301724, -0.00048095, 0.00029467, 0.00048338, -0.00000114, 0.00000000],
+		[-6.27301741, -0.00048087, 0.00029462, 0.00048330, -0.00000114, 0.00000000],
+		[-6.27301759, -0.00048080, 0.00029458, 0.00048323, -0.00000114, 0.00000000],
+		[-6.27301777, -0.00048072, 0.00029453, 0.00048315, -0.00000114, 0.00000000],
+		[-6.27301795, -0.00048065, 0.00029448, 0.00048308, -0.00000114, 0.00000000],
+		[-6.27301813, -0.00048057, 0.00029444, 0.00048300, -0.00000114, 0.00000000],
+		[-6.27301831, -0.00048050, 0.00029439, 0.00048293, -0.00000114, 0.00000000],
+		[-6.27301849, -0.00048042, 0.00029435, 0.00048285, -0.00000114, 0.00000000],
+		[-6.27301866, -0.00048035, 0.00029430, 0.00048278, -0.00000114, 0.00000000],
+		[-6.27301884, -0.00048027, 0.00029426, 0.00048270, -0.00000114, 0.00000000],
+		[-6.27301902, -0.00048020, 0.00029421, 0.00048263, -0.00000114, 0.00000000],
+		[-6.27301920, -0.00048012, 0.00029416, 0.00048255, -0.00000114, 0.00000000],
+		[-6.27301938, -0.00048005, 0.00029412, 0.00048248, -0.00000114, 0.00000000],
+		[-6.27301956, -0.00047998, 0.00029407, 0.00048240, -0.00000114, 0.00000000],
+		[-6.27301973, -0.00047990, 0.00029403, 0.00048233, -0.00000114, 0.00000000],
+		[-6.27301991, -0.00047983, 0.00029398, 0.00048225, -0.00000114, 0.00000000],
+		[-6.27302009, -0.00047975, 0.00029394, 0.00048218, -0.00000114, 0.00000000],
+		[-6.27302027, -0.00047968, 0.00029389, 0.00048211, -0.00000114, 0.00000000],
+		[-6.27302044, -0.00047960, 0.00029384, 0.00048203, -0.00000114, 0.00000000],
+		[-6.27302062, -0.00047953, 0.00029380, 0.00048196, -0.00000114, 0.00000000],
+		[-6.27302080, -0.00047946, 0.00029375, 0.00048188, -0.00000114, 0.00000000],
+		[-6.27302098, -0.00047938, 0.00029371, 0.00048181, -0.00000114, 0.00000000],
+		[-6.27302116, -0.00047931, 0.00029366, 0.00048173, -0.00000114, 0.00000000],
+		[-6.27302133, -0.00047923, 0.00029362, 0.00048166, -0.00000114, 0.00000000],
+		[-6.27302151, -0.00047916, 0.00029357, 0.00048158, -0.00000114, 0.00000000],
+		[-6.27302169, -0.00047908, 0.00029353, 0.00048151, -0.00000114, 0.00000000],
+		[-6.27302187, -0.00047901, 0.00029348, 0.00048143, -0.00000114, 0.00000000],
+		[-6.27302204, -0.00047894, 0.00029344, 0.00048136, -0.00000114, 0.00000000],
+		[-6.27302222, -0.00047886, 0.00029339, 0.00048128, -0.00000114, 0.00000000],
+		[-6.27302240, -0.00047879, 0.00029334, 0.00048121, -0.00000114, 0.00000000],
+		[-6.27302257, -0.00047871, 0.00029330, 0.00048114, -0.00000114, 0.00000000],
+		[-6.27302275, -0.00047864, 0.00029325, 0.00048106, -0.00000114, 0.00000000],
+		[-6.27302293, -0.00047857, 0.00029321, 0.00048099, -0.00000114, 0.00000000],
+		[-6.27302311, -0.00047849, 0.00029316, 0.00048091, -0.00000114, 0.00000000],
+		[-6.27302328, -0.00047842, 0.00029312, 0.00048084, -0.00000114, 0.00000000],
+		[-6.27302346, -0.00047834, 0.00029307, 0.00048076, -0.00000114, 0.00000000],
+		[-6.27302364, -0.00047827, 0.00029303, 0.00048069, -0.00000114, 0.00000000],
+		[-6.27302381, -0.00047820, 0.00029298, 0.00048062, -0.00000114, 0.00000000],
+		[-6.27302399, -0.00047812, 0.00029294, 0.00048054, -0.00000114, 0.00000000],
+		[-6.27302417, -0.00047805, 0.00029289, 0.00048047, -0.00000114, 0.00000000],
+		[-6.27302434, -0.00047797, 0.00029285, 0.00048039, -0.00000114, 0.00000000],
+		[-6.27302452, -0.00047790, 0.00029280, 0.00048032, -0.00000114, 0.00000000],
+		[-6.27302470, -0.00047783, 0.00029276, 0.00048024, -0.00000114, 0.00000000],
+		[-6.27302487, -0.00047775, 0.00029271, 0.00048017, -0.00000114, 0.00000000],
+		[-6.27302505, -0.00047768, 0.00029267, 0.00048010, -0.00000114, 0.00000000],
+		[-6.27302523, -0.00047761, 0.00029262, 0.00048002, -0.00000114, 0.00000000],
+		[-6.27302540, -0.00047753, 0.00029257, 0.00047995, -0.00000114, 0.00000000],
+		[-6.27302558, -0.00047746, 0.00029253, 0.00047987, -0.00000114, 0.00000000],
+		[-6.27302575, -0.00047739, 0.00029248, 0.00047980, -0.00000114, 0.00000000],
+		[-6.27302593, -0.00047731, 0.00029244, 0.00047973, -0.00000114, 0.00000000],
+		[-6.27302611, -0.00047724, 0.00029239, 0.00047965, -0.00000114, 0.00000000],
+		[-6.27302628, -0.00047716, 0.00029235, 0.00047958, -0.00000114, 0.00000000],
+		[-6.27302646, -0.00047709, 0.00029230, 0.00047950, -0.00000114, 0.00000000],
+		[-6.27302664, -0.00047702, 0.00029226, 0.00047943, -0.00000114, 0.00000000],
+		[-6.27302681, -0.00047694, 0.00029221, 0.00047936, -0.00000114, 0.00000000],
+		[-6.27302699, -0.00047687, 0.00029217, 0.00047928, -0.00000114, 0.00000000],
+		[-6.27302716, -0.00047680, 0.00029212, 0.00047921, -0.00000114, 0.00000000],
+		[-6.27302734, -0.00047672, 0.00029208, 0.00047913, -0.00000114, 0.00000000],
+		[-6.27302751, -0.00047665, 0.00029203, 0.00047906, -0.00000114, 0.00000000],
+		[-6.27302769, -0.00047658, 0.00029199, 0.00047899, -0.00000114, 0.00000000],
+		[-6.27302787, -0.00047650, 0.00029194, 0.00047891, -0.00000114, 0.00000000],
+		[-6.27302804, -0.00047643, 0.00029190, 0.00047884, -0.00000114, 0.00000000],
+		[-6.27302822, -0.00047636, 0.00029185, 0.00047877, -0.00000114, 0.00000000],
+		[-6.27302839, -0.00047628, 0.00029181, 0.00047869, -0.00000114, 0.00000000],
+		[-6.27302857, -0.00047621, 0.00029176, 0.00047862, -0.00000114, 0.00000000],
+		[-6.27302874, -0.00047614, 0.00029172, 0.00047855, -0.00000114, 0.00000000],
+		[-6.27302892, -0.00047606, 0.00029167, 0.00047847, -0.00000114, 0.00000000],
+		[-6.27302909, -0.00047599, 0.00029163, 0.00047840, -0.00000114, 0.00000000],
+		[-6.27302927, -0.00047592, 0.00029158, 0.00047832, -0.00000114, 0.00000000],
+		[-6.27302944, -0.00047584, 0.00029154, 0.00047825, -0.00000114, 0.00000000],
+		[-6.27302962, -0.00047577, 0.00029150, 0.00047818, -0.00000114, 0.00000000],
+		[-6.27302979, -0.00047570, 0.00029145, 0.00047810, -0.00000114, 0.00000000],
+		[-6.27302997, -0.00047562, 0.00029141, 0.00047803, -0.00000114, 0.00000000],
+		[-6.27303014, -0.00047555, 0.00029136, 0.00047796, -0.00000114, 0.00000000],
+		[-6.27303032, -0.00047548, 0.00029132, 0.00047788, -0.00000114, 0.00000000],
+		[-6.27303049, -0.00047541, 0.00029127, 0.00047781, -0.00000114, 0.00000000],
+		[-6.27303067, -0.00047533, 0.00029123, 0.00047774, -0.00000114, 0.00000000],
+		[-6.27303084, -0.00047526, 0.00029118, 0.00047766, -0.00000114, 0.00000000],
+		[-6.27303102, -0.00047519, 0.00029114, 0.00047759, -0.00000114, 0.00000000],
+		[-6.27303119, -0.00047511, 0.00029109, 0.00047752, -0.00000114, 0.00000000],
+		[-6.27303137, -0.00047504, 0.00029105, 0.00047744, -0.00000114, 0.00000000],
+		[-6.27303154, -0.00047497, 0.00029100, 0.00047737, -0.00000114, 0.00000000],
+		[-6.27303171, -0.00047490, 0.00029096, 0.00047730, -0.00000114, 0.00000000],
+		[-6.27303189, -0.00047482, 0.00029091, 0.00047722, -0.00000114, 0.00000000],
+		[-6.27303206, -0.00047475, 0.00029087, 0.00047715, -0.00000114, 0.00000000],
+		[-6.27303224, -0.00047468, 0.00029082, 0.00047708, -0.00000114, 0.00000000],
+		[-6.27303241, -0.00047460, 0.00029078, 0.00047700, -0.00000114, 0.00000000],
+		[-6.27303259, -0.00047453, 0.00029073, 0.00047693, -0.00000114, 0.00000000],
+		[-6.27303276, -0.00047446, 0.00029069, 0.00047686, -0.00000114, 0.00000000],
+		[-6.27303293, -0.00047439, 0.00029065, 0.00047678, -0.00000114, 0.00000000],
+		[-6.27303311, -0.00047431, 0.00029060, 0.00047671, -0.00000114, 0.00000000],
+		[-6.27303328, -0.00047424, 0.00029056, 0.00047664, -0.00000114, 0.00000000],
+		[-6.27303345, -0.00047417, 0.00029051, 0.00047657, -0.00000114, 0.00000000],
+		[-6.27303363, -0.00047410, 0.00029047, 0.00047649, -0.00000114, 0.00000000],
+		[-6.27303380, -0.00047402, 0.00029042, 0.00047642, -0.00000114, 0.00000000],
+		[-6.27303398, -0.00047395, 0.00029038, 0.00047635, -0.00000114, 0.00000000],
+		[-6.27303415, -0.00047388, 0.00029033, 0.00047627, -0.00000114, 0.00000000],
+		[-6.27303432, -0.00047380, 0.00029029, 0.00047620, -0.00000114, 0.00000000],
+		[-6.27303450, -0.00047373, 0.00029025, 0.00047613, -0.00000114, 0.00000000],
+		[-6.27303467, -0.00047366, 0.00029020, 0.00047606, -0.00000114, 0.00000000],
+		[-6.27303484, -0.00047359, 0.00029016, 0.00047598, -0.00000114, 0.00000000],
+		[-6.27303502, -0.00047351, 0.00029011, 0.00047591, -0.00000114, 0.00000000],
+		[-6.27303519, -0.00047344, 0.00029007, 0.00047584, -0.00000114, 0.00000000],
+		[-6.27303536, -0.00047337, 0.00029002, 0.00047576, -0.00000114, 0.00000000],
+		[-6.27303554, -0.00047330, 0.00028998, 0.00047569, -0.00000114, 0.00000000],
+		[-6.27303571, -0.00047323, 0.00028993, 0.00047562, -0.00000114, 0.00000000],
+		[-6.27303588, -0.00047315, 0.00028989, 0.00047555, -0.00000114, 0.00000000],
+		[-6.27303606, -0.00047308, 0.00028985, 0.00047547, -0.00000114, 0.00000000],
+		[-6.27303623, -0.00047301, 0.00028980, 0.00047540, -0.00000114, 0.00000000],
+		[-6.27303640, -0.00047294, 0.00028976, 0.00047533, -0.00000114, 0.00000000],
+		[-6.27303658, -0.00047286, 0.00028971, 0.00047526, -0.00000114, 0.00000000],
+		[-6.27303675, -0.00047279, 0.00028967, 0.00047518, -0.00000114, 0.00000000],
+		[-6.27303692, -0.00047272, 0.00028962, 0.00047511, -0.00000114, 0.00000000],
+		[-6.27303709, -0.00047265, 0.00028958, 0.00047504, -0.00000114, 0.00000000],
+		[-6.27303727, -0.00047258, 0.00028954, 0.00047497, -0.00000114, 0.00000000],
+		[-6.27303744, -0.00047250, 0.00028949, 0.00047489, -0.00000114, 0.00000000],
+		[-6.27303761, -0.00047243, 0.00028945, 0.00047482, -0.00000114, 0.00000000],
+		[-6.27303778, -0.00047236, 0.00028940, 0.00047475, -0.00000114, 0.00000000],
+		[-6.27303796, -0.00047229, 0.00028936, 0.00047468, -0.00000114, 0.00000000],
+		[-6.27303813, -0.00047221, 0.00028931, 0.00047460, -0.00000114, 0.00000000],
+		[-6.27303830, -0.00047214, 0.00028927, 0.00047453, -0.00000114, 0.00000000],
+		[-6.27303847, -0.00047207, 0.00028923, 0.00047446, -0.00000114, 0.00000000],
+		[-6.27303865, -0.00047200, 0.00028918, 0.00047439, -0.00000114, 0.00000000],
+		[-6.27303882, -0.00047193, 0.00028914, 0.00047431, -0.00000114, 0.00000000],
+		[-6.27303899, -0.00047185, 0.00028909, 0.00047424, -0.00000114, 0.00000000],
+		[-6.27303916, -0.00047178, 0.00028905, 0.00047417, -0.00000114, 0.00000000],
+		[-6.27303933, -0.00047171, 0.00028901, 0.00047410, -0.00000114, 0.00000000],
+		[-6.27303951, -0.00047164, 0.00028896, 0.00047402, -0.00000114, 0.00000000],
+		[-6.27303968, -0.00047157, 0.00028892, 0.00047395, -0.00000114, 0.00000000],
+		[-6.27303985, -0.00047150, 0.00028887, 0.00047388, -0.00000114, 0.00000000],
+		[-6.27304002, -0.00047142, 0.00028883, 0.00047381, -0.00000114, 0.00000000],
+		[-6.27304019, -0.00047135, 0.00028879, 0.00047374, -0.00000114, 0.00000000],
+		[-6.27304037, -0.00047128, 0.00028874, 0.00047366, -0.00000114, 0.00000000],
+		[-6.27304054, -0.00047121, 0.00028870, 0.00047359, -0.00000114, 0.00000000],
+		[-6.27304071, -0.00047114, 0.00028865, 0.00047352, -0.00000114, 0.00000000],
+		[-6.27304088, -0.00047106, 0.00028861, 0.00047345, -0.00000114, 0.00000000],
+		[-6.27304105, -0.00047099, 0.00028857, 0.00047337, -0.00000114, 0.00000000],
+		[-6.27304122, -0.00047092, 0.00028852, 0.00047330, -0.00000114, 0.00000000],
+		[-6.27304139, -0.00047085, 0.00028848, 0.00047323, -0.00000114, 0.00000000],
+		[-6.27304157, -0.00047078, 0.00028843, 0.00047316, -0.00000114, 0.00000000],
+		[-6.27304174, -0.00047071, 0.00028839, 0.00047309, -0.00000114, 0.00000000],
+		[-6.27304191, -0.00047064, 0.00028835, 0.00047302, -0.00000114, 0.00000000],
+		[-6.27304208, -0.00047056, 0.00028830, 0.00047294, -0.00000114, 0.00000000],
+		[-6.27304225, -0.00047049, 0.00028826, 0.00047287, -0.00000114, 0.00000000],
+		[-6.27304242, -0.00047042, 0.00028822, 0.00047280, -0.00000114, 0.00000000],
+		[-6.27304259, -0.00047035, 0.00028817, 0.00047273, -0.00000114, 0.00000000],
+		[-6.27304276, -0.00047028, 0.00028813, 0.00047266, -0.00000114, 0.00000000],
+		[-6.27304294, -0.00047021, 0.00028808, 0.00047258, -0.00000114, 0.00000000],
+		[-6.27304311, -0.00047013, 0.00028804, 0.00047251, -0.00000114, 0.00000000],
+		[-6.27304328, -0.00047006, 0.00028800, 0.00047244, -0.00000114, 0.00000000],
+		[-6.27304345, -0.00046999, 0.00028795, 0.00047237, -0.00000114, 0.00000000],
+		[-6.27304362, -0.00046992, 0.00028791, 0.00047230, -0.00000114, 0.00000000],
+		[-6.27304379, -0.00046985, 0.00028787, 0.00047223, -0.00000114, 0.00000000],
+		[-6.27304396, -0.00046978, 0.00028782, 0.00047215, -0.00000114, 0.00000000],
+		[-6.27304413, -0.00046971, 0.00028778, 0.00047208, -0.00000114, 0.00000000],
+		[-6.27304430, -0.00046964, 0.00028773, 0.00047201, -0.00000114, 0.00000000],
+		[-6.27304447, -0.00046956, 0.00028769, 0.00047194, -0.00000114, 0.00000000],
+		[-6.27304464, -0.00046949, 0.00028765, 0.00047187, -0.00000114, 0.00000000],
+		[-6.27304481, -0.00046942, 0.00028760, 0.00047180, -0.00000114, 0.00000000],
+		[-6.27304498, -0.00046935, 0.00028756, 0.00047172, -0.00000114, 0.00000000],
+		[-6.27304515, -0.00046928, 0.00028752, 0.00047165, -0.00000114, 0.00000000],
+		[-6.27304532, -0.00046921, 0.00028747, 0.00047158, -0.00000114, 0.00000000],
+		[-6.27304549, -0.00046914, 0.00028743, 0.00047151, -0.00000114, 0.00000000],
+		[-6.27304566, -0.00046907, 0.00028738, 0.00047144, -0.00000114, 0.00000000],
+		[-6.27304583, -0.00046900, 0.00028734, 0.00047137, -0.00000114, 0.00000000],
+		[-6.27304600, -0.00046892, 0.00028730, 0.00047130, -0.00000114, 0.00000000],
+		[-6.27304617, -0.00046885, 0.00028725, 0.00047122, -0.00000114, 0.00000000],
+		[-6.27304634, -0.00046878, 0.00028721, 0.00047115, -0.00000114, 0.00000000],
+		[-6.27304651, -0.00046871, 0.00028717, 0.00047108, -0.00000114, 0.00000000],
+		[-6.27304668, -0.00046864, 0.00028712, 0.00047101, -0.00000114, 0.00000000],
+		[-6.27304685, -0.00046857, 0.00028708, 0.00047094, -0.00000114, 0.00000000],
+		[-6.27304702, -0.00046850, 0.00028704, 0.00047087, -0.00000114, 0.00000000],
+		[-6.27304719, -0.00046843, 0.00028699, 0.00047080, -0.00000114, 0.00000000],
+		[-6.27304736, -0.00046836, 0.00028695, 0.00047072, -0.00000114, 0.00000000],
+		[-6.27304753, -0.00046829, 0.00028691, 0.00047065, -0.00000114, 0.00000000],
+		[-6.27304770, -0.00046821, 0.00028686, 0.00047058, -0.00000114, 0.00000000],
+		[-6.27304787, -0.00046814, 0.00028682, 0.00047051, -0.00000114, 0.00000000],
+		[-6.27304804, -0.00046807, 0.00028678, 0.00047044, -0.00000114, 0.00000000],
+		[-6.27304821, -0.00046800, 0.00028673, 0.00047037, -0.00000114, 0.00000000],
+		[-6.27304838, -0.00046793, 0.00028669, 0.00047030, -0.00000114, 0.00000000],
+		[-6.27304855, -0.00046786, 0.00028665, 0.00047023, -0.00000114, 0.00000000],
+		[-6.27304872, -0.00046779, 0.00028660, 0.00047016, -0.00000114, 0.00000000],
+		[-6.27304889, -0.00046772, 0.00028656, 0.00047008, -0.00000114, 0.00000000],
+		[-6.27304906, -0.00046765, 0.00028652, 0.00047001, -0.00000114, 0.00000000],
+		[-6.27304922, -0.00046758, 0.00028647, 0.00046994, -0.00000114, 0.00000000],
+		[-6.27304939, -0.00046751, 0.00028643, 0.00046987, -0.00000114, 0.00000000],
+		[-6.27304956, -0.00046744, 0.00028639, 0.00046980, -0.00000114, 0.00000000],
+		[-6.27304973, -0.00046737, 0.00028634, 0.00046973, -0.00000114, 0.00000000],
+		[-6.27304990, -0.00046730, 0.00028630, 0.00046966, -0.00000114, 0.00000000],
+		[-6.27305007, -0.00046723, 0.00028626, 0.00046959, -0.00000114, 0.00000000],
+		[-6.27305024, -0.00046715, 0.00028621, 0.00046952, -0.00000114, 0.00000000],
+		[-6.27305041, -0.00046708, 0.00028617, 0.00046945, -0.00000114, 0.00000000],
+		[-6.27305057, -0.00046701, 0.00028613, 0.00046938, -0.00000114, 0.00000000],
+		[-6.27305074, -0.00046694, 0.00028608, 0.00046930, -0.00000114, 0.00000000],
+		[-6.27305091, -0.00046687, 0.00028604, 0.00046923, -0.00000114, 0.00000000],
+		[-6.27305108, -0.00046680, 0.00028600, 0.00046916, -0.00000114, 0.00000000],
+		[-6.27305125, -0.00046673, 0.00028595, 0.00046909, -0.00000114, 0.00000000],
+		[-6.27305142, -0.00046666, 0.00028591, 0.00046902, -0.00000114, 0.00000000],
+		[-6.27305159, -0.00046659, 0.00028587, 0.00046895, -0.00000114, 0.00000000],
+		[-6.27305175, -0.00046652, 0.00028582, 0.00046888, -0.00000114, 0.00000000],
+		[-6.27305192, -0.00046645, 0.00028578, 0.00046881, -0.00000114, 0.00000000],
+		[-6.27305209, -0.00046638, 0.00028574, 0.00046874, -0.00000114, 0.00000000],
+		[-6.27305226, -0.00046631, 0.00028570, 0.00046867, -0.00000114, 0.00000000],
+		[-6.27305243, -0.00046624, 0.00028565, 0.00046860, -0.00000114, 0.00000000],
+		[-6.27305259, -0.00046617, 0.00028561, 0.00046853, -0.00000114, 0.00000000],
+		[-6.27305276, -0.00046610, 0.00028557, 0.00046846, -0.00000114, 0.00000000],
+		[-6.27305293, -0.00046603, 0.00028552, 0.00046839, -0.00000114, 0.00000000],
+		[-6.27305310, -0.00046596, 0.00028548, 0.00046832, -0.00000114, 0.00000000],
+		[-6.27305327, -0.00046589, 0.00028544, 0.00046824, -0.00000114, 0.00000000],
+		[-6.27305343, -0.00046582, 0.00028539, 0.00046817, -0.00000114, 0.00000000],
+		[-6.27305360, -0.00046575, 0.00028535, 0.00046810, -0.00000114, 0.00000000],
+		[-6.27305377, -0.00046568, 0.00028531, 0.00046803, -0.00000114, 0.00000000],
+		[-6.27305394, -0.00046561, 0.00028527, 0.00046796, -0.00000114, 0.00000000],
+		[-6.27305410, -0.00046554, 0.00028522, 0.00046789, -0.00000114, 0.00000000],
+		[-6.27305427, -0.00046547, 0.00028518, 0.00046782, -0.00000114, 0.00000000],
+		[-6.27305444, -0.00046540, 0.00028514, 0.00046775, -0.00000114, 0.00000000],
+		[-6.27305461, -0.00046533, 0.00028509, 0.00046768, -0.00000114, 0.00000000],
+		[-6.27305477, -0.00046526, 0.00028505, 0.00046761, -0.00000114, 0.00000000],
+		[-6.27305494, -0.00046519, 0.00028501, 0.00046754, -0.00000114, 0.00000000],
+		[-6.27305511, -0.00046512, 0.00028497, 0.00046747, -0.00000114, 0.00000000],
+		[-6.27305528, -0.00046505, 0.00028492, 0.00046740, -0.00000114, 0.00000000],
+		[-6.27305544, -0.00046498, 0.00028488, 0.00046733, -0.00000114, 0.00000000],
+		[-6.27305561, -0.00046491, 0.00028484, 0.00046726, -0.00000114, 0.00000000],
+		[-6.27305578, -0.00046484, 0.00028479, 0.00046719, -0.00000114, 0.00000000],
+		[-6.27305594, -0.00046477, 0.00028475, 0.00046712, -0.00000114, 0.00000000],
+		[-6.27305611, -0.00046470, 0.00028471, 0.00046705, -0.00000114, 0.00000000],
+		[-6.27305628, -0.00046463, 0.00028467, 0.00046698, -0.00000114, 0.00000000],
+		[-6.27305645, -0.00046456, 0.00028462, 0.00046691, -0.00000114, 0.00000000],
+		[-6.27305661, -0.00046449, 0.00028458, 0.00046684, -0.00000114, 0.00000000],
+		[-6.27305678, -0.00046442, 0.00028454, 0.00046677, -0.00000114, 0.00000000],
+		[-6.27305695, -0.00046435, 0.00028449, 0.00046670, -0.00000114, 0.00000000],
+		[-6.27305711, -0.00046428, 0.00028445, 0.00046663, -0.00000114, 0.00000000],
+		[-6.27305728, -0.00046421, 0.00028441, 0.00046656, -0.00000114, 0.00000000],
+		[-6.27305745, -0.00046414, 0.00028437, 0.00046649, -0.00000114, 0.00000000],
+		[-6.27305761, -0.00046407, 0.00028432, 0.00046642, -0.00000114, 0.00000000],
+		[-6.27305778, -0.00046400, 0.00028428, 0.00046635, -0.00000114, 0.00000000],
+		[-6.27305795, -0.00046393, 0.00028424, 0.00046628, -0.00000114, 0.00000000],
+		[-6.27305811, -0.00046386, 0.00028420, 0.00046621, -0.00000114, 0.00000000],
+		[-6.27305828, -0.00046380, 0.00028415, 0.00046614, -0.00000114, 0.00000000],
+		[-6.27305844, -0.00046373, 0.00028411, 0.00046607, -0.00000114, 0.00000000],
+		[-6.27305861, -0.00046366, 0.00028407, 0.00046600, -0.00000114, 0.00000000],
+		[-6.27305878, -0.00046359, 0.00028403, 0.00046593, -0.00000114, 0.00000000],
+		[-6.27305894, -0.00046352, 0.00028398, 0.00046586, -0.00000114, 0.00000000],
+		[-6.27305911, -0.00046345, 0.00028394, 0.00046579, -0.00000114, 0.00000000],
+		[-6.27305927, -0.00046338, 0.00028390, 0.00046572, -0.00000114, 0.00000000],
+		[-6.27305944, -0.00046331, 0.00028386, 0.00046565, -0.00000114, 0.00000000],
+		[-6.27305961, -0.00046324, 0.00028381, 0.00046558, -0.00000114, 0.00000000],
+		[-6.27305977, -0.00046317, 0.00028377, 0.00046551, -0.00000114, 0.00000000],
+		[-6.27305994, -0.00046310, 0.00028373, 0.00046544, -0.00000114, 0.00000000],
+		[-6.27306010, -0.00046303, 0.00028369, 0.00046537, -0.00000114, 0.00000000],
+		[-6.27306027, -0.00046296, 0.00028364, 0.00046530, -0.00000114, 0.00000000],
+		[-6.27306044, -0.00046289, 0.00028360, 0.00046523, -0.00000114, 0.00000000],
+		[-6.27306060, -0.00046282, 0.00028356, 0.00046516, -0.00000114, 0.00000000],
+		[-6.27306077, -0.00046276, 0.00028352, 0.00046509, -0.00000114, 0.00000000],
+		[-6.27306093, -0.00046269, 0.00028347, 0.00046502, -0.00000114, 0.00000000],
+		[-6.27306110, -0.00046262, 0.00028343, 0.00046496, -0.00000114, 0.00000000],
+		[-6.27306126, -0.00046255, 0.00028339, 0.00046489, -0.00000114, 0.00000000],
+		[-6.27306143, -0.00046248, 0.00028335, 0.00046482, -0.00000114, 0.00000000],
+		[-6.27306159, -0.00046241, 0.00028330, 0.00046475, -0.00000114, 0.00000000],
+		[-6.27306176, -0.00046234, 0.00028326, 0.00046468, -0.00000114, 0.00000000],
+		[-6.27306192, -0.00046227, 0.00028322, 0.00046461, -0.00000114, 0.00000000],
+		[-6.27306209, -0.00046220, 0.00028318, 0.00046454, -0.00000114, 0.00000000],
+		[-6.27306225, -0.00046213, 0.00028314, 0.00046447, -0.00000114, 0.00000000],
+		[-6.27306242, -0.00046206, 0.00028309, 0.00046440, -0.00000114, 0.00000000],
+		[-6.27306259, -0.00046200, 0.00028305, 0.00046433, -0.00000114, 0.00000000],
+		[-6.27306275, -0.00046193, 0.00028301, 0.00046426, -0.00000114, 0.00000000],
+		[-6.27306292, -0.00046186, 0.00028297, 0.00046419, -0.00000114, 0.00000000],
+		[-6.27306308, -0.00046179, 0.00028292, 0.00046412, -0.00000114, 0.00000000],
+		[-6.27306324, -0.00046172, 0.00028288, 0.00046405, -0.00000114, 0.00000000],
+		[-6.27306341, -0.00046165, 0.00028284, 0.00046398, -0.00000114, 0.00000000],
+		[-6.27306357, -0.00046158, 0.00028280, 0.00046392, -0.00000114, 0.00000000],
+		[-6.27306374, -0.00046151, 0.00028275, 0.00046385, -0.00000114, 0.00000000],
+		[-6.27306390, -0.00046144, 0.00028271, 0.00046378, -0.00000114, 0.00000000],
+		[-6.27306407, -0.00046138, 0.00028267, 0.00046371, -0.00000114, 0.00000000],
+		[-6.27306423, -0.00046131, 0.00028263, 0.00046364, -0.00000114, 0.00000000],
+		[-6.27306440, -0.00046124, 0.00028259, 0.00046357, -0.00000114, 0.00000000],
+		[-6.27306456, -0.00046117, 0.00028254, 0.00046350, -0.00000114, 0.00000000],
+		[-6.27306473, -0.00046110, 0.00028250, 0.00046343, -0.00000114, 0.00000000],
+		[-6.27306489, -0.00046103, 0.00028246, 0.00046336, -0.00000114, 0.00000000],
+		[-6.27306505, -0.00046096, 0.00028242, 0.00046329, -0.00000114, 0.00000000],
+		[-6.27306522, -0.00046090, 0.00028238, 0.00046322, -0.00000114, 0.00000000],
+		[-6.27306538, -0.00046083, 0.00028233, 0.00046316, -0.00000114, 0.00000000],
+		[-6.27306555, -0.00046076, 0.00028229, 0.00046309, -0.00000114, 0.00000000],
+		[-6.27306571, -0.00046069, 0.00028225, 0.00046302, -0.00000114, 0.00000000],
+		[-6.27306588, -0.00046062, 0.00028221, 0.00046295, -0.00000114, 0.00000000],
+		[-6.27306604, -0.00046055, 0.00028217, 0.00046288, -0.00000114, 0.00000000],
+		[-6.27306620, -0.00046048, 0.00028212, 0.00046281, -0.00000114, 0.00000000],
+		[-6.27306637, -0.00046042, 0.00028208, 0.00046274, -0.00000114, 0.00000000],
+		[-6.27306653, -0.00046035, 0.00028204, 0.00046267, -0.00000114, 0.00000000],
+		[-6.27306670, -0.00046028, 0.00028200, 0.00046260, -0.00000114, 0.00000000],
+		[-6.27306686, -0.00046021, 0.00028196, 0.00046254, -0.00000114, 0.00000000],
+		[-6.27306702, -0.00046014, 0.00028191, 0.00046247, -0.00000114, 0.00000000],
+		[-6.27306719, -0.00046007, 0.00028187, 0.00046240, -0.00000114, 0.00000000],
+		[-6.27306735, -0.00046000, 0.00028183, 0.00046233, -0.00000114, 0.00000000],
+		[-6.27306751, -0.00045994, 0.00028179, 0.00046226, -0.00000114, 0.00000000],
+		[-6.27306768, -0.00045987, 0.00028175, 0.00046219, -0.00000114, 0.00000000],
+		[-6.27306784, -0.00045980, 0.00028170, 0.00046212, -0.00000114, 0.00000000],
+		[-6.27306800, -0.00045973, 0.00028166, 0.00046205, -0.00000114, 0.00000000],
+		[-6.27306817, -0.00045966, 0.00028162, 0.00046199, -0.00000114, 0.00000000],
+		[-6.27306833, -0.00045959, 0.00028158, 0.00046192, -0.00000114, 0.00000000],
+		[-6.27306849, -0.00045953, 0.00028154, 0.00046185, -0.00000114, 0.00000000],
+		[-6.27306866, -0.00045946, 0.00028150, 0.00046178, -0.00000114, 0.00000000],
+		[-6.27306882, -0.00045939, 0.00028145, 0.00046171, -0.00000114, 0.00000000],
+		[-6.27306898, -0.00045932, 0.00028141, 0.00046164, -0.00000114, 0.00000000],
+		[-6.27306915, -0.00045925, 0.00028137, 0.00046158, -0.00000114, 0.00000000],
+		[-6.27306931, -0.00045919, 0.00028133, 0.00046151, -0.00000114, 0.00000000],
+		[-6.27306947, -0.00045912, 0.00028129, 0.00046144, -0.00000114, 0.00000000],
+		[-6.27306964, -0.00045905, 0.00028124, 0.00046137, -0.00000114, 0.00000000],
+		[-6.27306980, -0.00045898, 0.00028120, 0.00046130, -0.00000114, 0.00000000],
+		[-6.27306996, -0.00045891, 0.00028116, 0.00046123, -0.00000114, 0.00000000],
+		[-6.27307012, -0.00045885, 0.00028112, 0.00046116, -0.00000114, 0.00000000],
+		[-6.27307029, -0.00045878, 0.00028108, 0.00046110, -0.00000114, 0.00000000],
+		[-6.27307045, -0.00045871, 0.00028104, 0.00046103, -0.00000114, 0.00000000],
+		[-6.27307061, -0.00045864, 0.00028099, 0.00046096, -0.00000114, 0.00000000],
+		[-6.27307078, -0.00045857, 0.00028095, 0.00046089, -0.00000114, 0.00000000],
+		[-6.27307094, -0.00045851, 0.00028091, 0.00046082, -0.00000114, 0.00000000],
+		[-6.27307110, -0.00045844, 0.00028087, 0.00046075, -0.00000114, 0.00000000],
+		[-6.27307126, -0.00045837, 0.00028083, 0.00046069, -0.00000114, 0.00000000],
+		[-6.27307142, -0.00045830, 0.00028079, 0.00046062, -0.00000114, 0.00000000],
+		[-6.27307159, -0.00045823, 0.00028074, 0.00046055, -0.00000114, 0.00000000],
+		[-6.27307175, -0.00045817, 0.00028070, 0.00046048, -0.00000114, 0.00000000],
+		[-6.27307191, -0.00045810, 0.00028066, 0.00046041, -0.00000114, 0.00000000],
+		[-6.27307207, -0.00045803, 0.00028062, 0.00046035, -0.00000114, 0.00000000],
+		[-6.27307224, -0.00045796, 0.00028058, 0.00046028, -0.00000114, 0.00000000],
+		[-6.27307240, -0.00045790, 0.00028054, 0.00046021, -0.00000114, 0.00000000],
+		[-6.27307256, -0.00045783, 0.00028050, 0.00046014, -0.00000114, 0.00000000],
+		[-6.27307272, -0.00045776, 0.00028045, 0.00046007, -0.00000114, 0.00000000],
+		[-6.27307288, -0.00045769, 0.00028041, 0.00046001, -0.00000114, 0.00000000],
+		[-6.27307305, -0.00045762, 0.00028037, 0.00045994, -0.00000114, 0.00000000],
+		[-6.27307321, -0.00045756, 0.00028033, 0.00045987, -0.00000114, 0.00000000],
+		[-6.27307337, -0.00045749, 0.00028029, 0.00045980, -0.00000114, 0.00000000],
+		[-6.27307353, -0.00045742, 0.00028025, 0.00045973, -0.00000114, 0.00000000],
+		[-6.27307369, -0.00045735, 0.00028021, 0.00045967, -0.00000114, 0.00000000],
+		[-6.27307386, -0.00045729, 0.00028016, 0.00045960, -0.00000114, 0.00000000],
+		[-6.27307402, -0.00045722, 0.00028012, 0.00045953, -0.00000114, 0.00000000],
+		[-6.27307418, -0.00045715, 0.00028008, 0.00045946, -0.00000114, 0.00000000],
+		[-6.27307434, -0.00045708, 0.00028004, 0.00045939, -0.00000114, 0.00000000],
+		[-6.27307450, -0.00045702, 0.00028000, 0.00045933, -0.00000114, 0.00000000],
+		[-6.27307466, -0.00045695, 0.00027996, 0.00045926, -0.00000114, 0.00000000],
+		[-6.27307482, -0.00045688, 0.00027992, 0.00045919, -0.00000114, 0.00000000],
+		[-6.27307499, -0.00045681, 0.00027987, 0.00045912, -0.00000114, 0.00000000],
+		[-6.27307515, -0.00045675, 0.00027983, 0.00045905, -0.00000114, 0.00000000],
+		[-6.27307531, -0.00045668, 0.00027979, 0.00045899, -0.00000114, 0.00000000],
+		[-6.27307547, -0.00045661, 0.00027975, 0.00045892, -0.00000114, 0.00000000],
+		[-6.27307563, -0.00045654, 0.00027971, 0.00045885, -0.00000114, 0.00000000],
+		[-6.27307579, -0.00045648, 0.00027967, 0.00045878, -0.00000114, 0.00000000],
+		[-6.27307595, -0.00045641, 0.00027963, 0.00045872, -0.00000114, 0.00000000],
+		[-6.27307611, -0.00045634, 0.00027959, 0.00045865, -0.00000114, 0.00000000],
+		[-6.27307628, -0.00045628, 0.00027954, 0.00045858, -0.00000114, 0.00000000],
+		[-6.27307644, -0.00045621, 0.00027950, 0.00045851, -0.00000114, 0.00000000],
+		[-6.27307660, -0.00045614, 0.00027946, 0.00045845, -0.00000114, 0.00000000],
+		[-6.27307676, -0.00045607, 0.00027942, 0.00045838, -0.00000114, 0.00000000],
+		[-6.27307692, -0.00045601, 0.00027938, 0.00045831, -0.00000114, 0.00000000],
+		[-6.27307708, -0.00045594, 0.00027934, 0.00045824, -0.00000114, 0.00000000],
+		[-6.27307724, -0.00045587, 0.00027930, 0.00045818, -0.00000114, 0.00000000],
+		[-6.27307740, -0.00045581, 0.00027926, 0.00045811, -0.00000114, 0.00000000],
+		[-6.27307756, -0.00045574, 0.00027921, 0.00045804, -0.00000114, 0.00000000],
+		[-6.27307772, -0.00045567, 0.00027917, 0.00045797, -0.00000114, 0.00000000],
+		[-6.27307788, -0.00045560, 0.00027913, 0.00045791, -0.00000114, 0.00000000],
+		[-6.27307804, -0.00045554, 0.00027909, 0.00045784, -0.00000114, 0.00000000],
+		[-6.27307820, -0.00045547, 0.00027905, 0.00045777, -0.00000114, 0.00000000],
+		[-6.27307836, -0.00045540, 0.00027901, 0.00045770, -0.00000114, 0.00000000],
+		[-6.27307852, -0.00045534, 0.00027897, 0.00045764, -0.00000114, 0.00000000],
+		[-6.27307868, -0.00045527, 0.00027893, 0.00045757, -0.00000114, 0.00000000],
+		[-6.27307884, -0.00045520, 0.00027889, 0.00045750, -0.00000114, 0.00000000],
+		[-6.27307900, -0.00045514, 0.00027884, 0.00045743, -0.00000114, 0.00000000],
+		[-6.27307916, -0.00045507, 0.00027880, 0.00045737, -0.00000114, 0.00000000],
+		[-6.27307932, -0.00045500, 0.00027876, 0.00045730, -0.00000114, 0.00000000],
+		[-6.27307949, -0.00045493, 0.00027872, 0.00045723, -0.00000114, 0.00000000],
+		[-6.27307964, -0.00045487, 0.00027868, 0.00045717, -0.00000114, 0.00000000],
+		[-6.27307980, -0.00045480, 0.00027864, 0.00045710, -0.00000114, 0.00000000],
+		[-6.27307996, -0.00045473, 0.00027860, 0.00045703, -0.00000114, 0.00000000],
+		[-6.27308012, -0.00045467, 0.00027856, 0.00045696, -0.00000114, 0.00000000],
+		[-6.27308028, -0.00045460, 0.00027852, 0.00045690, -0.00000114, 0.00000000],
+		[-6.27308044, -0.00045453, 0.00027848, 0.00045683, -0.00000114, 0.00000000],
+		[-6.27308060, -0.00045447, 0.00027844, 0.00045676, -0.00000114, 0.00000000],
+		[-6.27308076, -0.00045440, 0.00027839, 0.00045670, -0.00000114, 0.00000000],
+		[-6.27308092, -0.00045433, 0.00027835, 0.00045663, -0.00000114, 0.00000000],
+		[-6.27308108, -0.00045427, 0.00027831, 0.00045656, -0.00000114, 0.00000000],
+		[-6.27308124, -0.00045420, 0.00027827, 0.00045650, -0.00000114, 0.00000000],
+		[-6.27308140, -0.00045413, 0.00027823, 0.00045643, -0.00000114, 0.00000000],
+		[-6.27308156, -0.00045407, 0.00027819, 0.00045636, -0.00000114, 0.00000000],
+		[-6.27308172, -0.00045400, 0.00027815, 0.00045629, -0.00000114, 0.00000000],
+		[-6.27308188, -0.00045393, 0.00027811, 0.00045623, -0.00000114, 0.00000000],
+		[-6.27308204, -0.00045387, 0.00027807, 0.00045616, -0.00000114, 0.00000000],
+		[-6.27308220, -0.00045380, 0.00027803, 0.00045609, -0.00000114, 0.00000000],
+		[-6.27308236, -0.00045373, 0.00027799, 0.00045603, -0.00000114, 0.00000000],
+		[-6.27308252, -0.00045367, 0.00027795, 0.00045596, -0.00000114, 0.00000000],
+		[-6.27308268, -0.00045360, 0.00027790, 0.00045589, -0.00000114, 0.00000000],
+		[-6.27308284, -0.00045353, 0.00027786, 0.00045583, -0.00000114, 0.00000000],
+		[-6.27308299, -0.00045347, 0.00027782, 0.00045576, -0.00000114, 0.00000000],
+		[-6.27308315, -0.00045340, 0.00027778, 0.00045569, -0.00000114, 0.00000000],
+		[-6.27308331, -0.00045334, 0.00027774, 0.00045563, -0.00000114, 0.00000000],
+		[-6.27308347, -0.00045327, 0.00027770, 0.00045556, -0.00000114, 0.00000000],
+		[-6.27308363, -0.00045320, 0.00027766, 0.00045549, -0.00000114, 0.00000000],
+		[-6.27308379, -0.00045314, 0.00027762, 0.00045543, -0.00000114, 0.00000000],
+		[-6.27308395, -0.00045307, 0.00027758, 0.00045536, -0.00000114, 0.00000000],
+		[-6.27308411, -0.00045300, 0.00027754, 0.00045529, -0.00000114, 0.00000000],
+		[-6.27308426, -0.00045294, 0.00027750, 0.00045523, -0.00000114, 0.00000000],
+		[-6.27308442, -0.00045287, 0.00027746, 0.00045516, -0.00000114, 0.00000000],
+		[-6.27308458, -0.00045281, 0.00027742, 0.00045509, -0.00000114, 0.00000000],
+		[-6.27308474, -0.00045274, 0.00027738, 0.00045503, -0.00000114, 0.00000000],
+		[-6.27308490, -0.00045267, 0.00027734, 0.00045496, -0.00000114, 0.00000000],
+		[-6.27308506, -0.00045261, 0.00027729, 0.00045489, -0.00000114, 0.00000000],
+		[-6.27308522, -0.00045254, 0.00027725, 0.00045483, -0.00000114, 0.00000000],
+		[-6.27308537, -0.00045247, 0.00027721, 0.00045476, -0.00000114, 0.00000000],
+		[-6.27308553, -0.00045241, 0.00027717, 0.00045469, -0.00000114, 0.00000000],
+		[-6.27308569, -0.00045234, 0.00027713, 0.00045463, -0.00000114, 0.00000000],
+		[-6.27308585, -0.00045228, 0.00027709, 0.00045456, -0.00000114, 0.00000000],
+		[-6.27308601, -0.00045221, 0.00027705, 0.00045449, -0.00000114, 0.00000000],
+		[-6.27308616, -0.00045214, 0.00027701, 0.00045443, -0.00000114, 0.00000000],
+		[-6.27308632, -0.00045208, 0.00027697, 0.00045436, -0.00000114, 0.00000000],
+		[-6.27308648, -0.00045201, 0.00027693, 0.00045430, -0.00000114, 0.00000000],
+		[-6.27308664, -0.00045195, 0.00027689, 0.00045423, -0.00000114, 0.00000000],
+		[-6.27308680, -0.00045188, 0.00027685, 0.00045416, -0.00000114, 0.00000000],
+		[-6.27308695, -0.00045181, 0.00027681, 0.00045410, -0.00000114, 0.00000000],
+		[-6.27308711, -0.00045175, 0.00027677, 0.00045403, -0.00000114, 0.00000000],
+		[-6.27308727, -0.00045168, 0.00027673, 0.00045396, -0.00000114, 0.00000000],
+		[-6.27308743, -0.00045162, 0.00027669, 0.00045390, -0.00000114, 0.00000000],
+		[-6.27308759, -0.00045155, 0.00027665, 0.00045383, -0.00000114, 0.00000000],
+		[-6.27308774, -0.00045148, 0.00027661, 0.00045376, -0.00000114, 0.00000000],
+		[-6.27308790, -0.00045142, 0.00027657, 0.00045370, -0.00000114, 0.00000000],
+		[-6.27308806, -0.00045135, 0.00027653, 0.00045363, -0.00000114, 0.00000000],
+		[-6.27308822, -0.00045129, 0.00027649, 0.00045357, -0.00000114, 0.00000000],
+		[-6.27308837, -0.00045122, 0.00027645, 0.00045350, -0.00000114, 0.00000000],
+		[-6.27308853, -0.00045116, 0.00027641, 0.00045343, -0.00000114, 0.00000000],
+		[-6.27308869, -0.00045109, 0.00027636, 0.00045337, -0.00000114, 0.00000000],
+		[-6.27308884, -0.00045102, 0.00027632, 0.00045330, -0.00000114, 0.00000000],
+		[-6.27308900, -0.00045096, 0.00027628, 0.00045324, -0.00000114, 0.00000000],
+		[-6.27308916, -0.00045089, 0.00027624, 0.00045317, -0.00000114, 0.00000000],
+		[-6.27308932, -0.00045083, 0.00027620, 0.00045310, -0.00000114, 0.00000000],
+		[-6.27308947, -0.00045076, 0.00027616, 0.00045304, -0.00000114, 0.00000000],
+		[-6.27308963, -0.00045070, 0.00027612, 0.00045297, -0.00000114, 0.00000000],
+		[-6.27308979, -0.00045063, 0.00027608, 0.00045291, -0.00000114, 0.00000000],
+		[-6.27308994, -0.00045056, 0.00027604, 0.00045284, -0.00000114, 0.00000000],
+		[-6.27309010, -0.00045050, 0.00027600, 0.00045277, -0.00000114, 0.00000000],
+		[-6.27309026, -0.00045043, 0.00027596, 0.00045271, -0.00000114, 0.00000000],
+		[-6.27309042, -0.00045037, 0.00027592, 0.00045264, -0.00000114, 0.00000000],
+		[-6.27309057, -0.00045030, 0.00027588, 0.00045258, -0.00000114, 0.00000000],
+		[-6.27309073, -0.00045024, 0.00027584, 0.00045251, -0.00000114, 0.00000000],
+		[-6.27309089, -0.00045017, 0.00027580, 0.00045245, -0.00000114, 0.00000000],
+		[-6.27309104, -0.00045011, 0.00027576, 0.00045238, -0.00000114, 0.00000000],
+		[-6.27309120, -0.00045004, 0.00027572, 0.00045231, -0.00000114, 0.00000000],
+		[-6.27309136, -0.00044997, 0.00027568, 0.00045225, -0.00000114, 0.00000000],
+		[-6.27309151, -0.00044991, 0.00027564, 0.00045218, -0.00000114, 0.00000000],
+		[-6.27309167, -0.00044984, 0.00027560, 0.00045212, -0.00000114, 0.00000000],
+		[-6.27309183, -0.00044978, 0.00027556, 0.00045205, -0.00000114, 0.00000000],
+		[-6.27309198, -0.00044971, 0.00027552, 0.00045198, -0.00000114, 0.00000000],
+		[-6.27309214, -0.00044965, 0.00027548, 0.00045192, -0.00000114, 0.00000000],
+		[-6.27309229, -0.00044958, 0.00027544, 0.00045185, -0.00000114, 0.00000000],
+		[-6.27309245, -0.00044952, 0.00027540, 0.00045179, -0.00000114, 0.00000000],
+		[-6.27309261, -0.00044945, 0.00027536, 0.00045172, -0.00000114, 0.00000000],
+		[-6.27309276, -0.00044939, 0.00027532, 0.00045166, -0.00000114, 0.00000000],
+		[-6.27309292, -0.00044932, 0.00027528, 0.00045159, -0.00000114, 0.00000000],
+		[-6.27309307, -0.00044926, 0.00027524, 0.00045153, -0.00000114, 0.00000000],
+		[-6.27309323, -0.00044919, 0.00027520, 0.00045146, -0.00000114, 0.00000000],
+		[-6.27309339, -0.00044913, 0.00027516, 0.00045139, -0.00000114, 0.00000000],
+		[-6.27309354, -0.00044906, 0.00027512, 0.00045133, -0.00000114, 0.00000000],
+		[-6.27309370, -0.00044900, 0.00027508, 0.00045126, -0.00000114, 0.00000000],
+		[-6.27309385, -0.00044893, 0.00027504, 0.00045120, -0.00000114, 0.00000000],
+		[-6.27309401, -0.00044887, 0.00027500, 0.00045113, -0.00000114, 0.00000000],
+		[-6.27309417, -0.00044880, 0.00027496, 0.00045107, -0.00000114, 0.00000000],
+		[-6.27309432, -0.00044874, 0.00027492, 0.00045100, -0.00000114, 0.00000000],
+		[-6.27309448, -0.00044867, 0.00027488, 0.00045094, -0.00000114, 0.00000000],
+		[-6.27309463, -0.00044861, 0.00027484, 0.00045087, -0.00000114, 0.00000000],
+		[-6.27309479, -0.00044854, 0.00027480, 0.00045081, -0.00000114, 0.00000000],
+		[-6.27309494, -0.00044848, 0.00027476, 0.00045074, -0.00000114, 0.00000000],
+		[-6.27309510, -0.00044841, 0.00027472, 0.00045068, -0.00000114, 0.00000000],
+		[-6.27309526, -0.00044835, 0.00027468, 0.00045061, -0.00000114, 0.00000000],
+		[-6.27309541, -0.00044828, 0.00027464, 0.00045054, -0.00000114, 0.00000000],
+		[-6.27309557, -0.00044822, 0.00027460, 0.00045048, -0.00000114, 0.00000000],
+		[-6.27309572, -0.00044815, 0.00027456, 0.00045041, -0.00000114, 0.00000000],
+		[-6.27309588, -0.00044809, 0.00027452, 0.00045035, -0.00000114, 0.00000000],
+		[-6.27309603, -0.00044802, 0.00027448, 0.00045028, -0.00000114, 0.00000000],
+		[-6.27309619, -0.00044796, 0.00027444, 0.00045022, -0.00000114, 0.00000000],
+		[-6.27309634, -0.00044789, 0.00027440, 0.00045015, -0.00000114, 0.00000000],
+		[-6.27309650, -0.00044783, 0.00027436, 0.00045009, -0.00000114, 0.00000000],
+		[-6.27309665, -0.00044776, 0.00027432, 0.00045002, -0.00000114, 0.00000000],
+		[-6.27309681, -0.00044770, 0.00027429, 0.00044996, -0.00000114, 0.00000000],
+		[-6.27309696, -0.00044763, 0.00027425, 0.00044989, -0.00000114, 0.00000000],
+		[-6.27309712, -0.00044757, 0.00027421, 0.00044983, -0.00000114, 0.00000000],
+		[-6.27309727, -0.00044750, 0.00027417, 0.00044976, -0.00000114, 0.00000000],
+		[-6.27309743, -0.00044744, 0.00027413, 0.00044970, -0.00000114, 0.00000000],
+		[-6.27309758, -0.00044737, 0.00027409, 0.00044963, -0.00000114, 0.00000000],
+		[-6.27309774, -0.00044731, 0.00027405, 0.00044957, -0.00000114, 0.00000000],
+		[-6.27309789, -0.00044724, 0.00027401, 0.00044950, -0.00000114, 0.00000000],
+		[-6.27309805, -0.00044718, 0.00027397, 0.00044944, -0.00000114, 0.00000000],
+		[-6.27309820, -0.00044712, 0.00027393, 0.00044937, -0.00000114, 0.00000000],
+		[-6.27309835, -0.00044705, 0.00027389, 0.00044931, -0.00000114, 0.00000000],
+		[-6.27309851, -0.00044699, 0.00027385, 0.00044924, -0.00000114, 0.00000000],
+		[-6.27309866, -0.00044692, 0.00027381, 0.00044918, -0.00000114, 0.00000000],
+		[-6.27309882, -0.00044686, 0.00027377, 0.00044911, -0.00000114, 0.00000000],
+		[-6.27309897, -0.00044679, 0.00027373, 0.00044905, -0.00000114, 0.00000000],
+		[-6.27309913, -0.00044673, 0.00027369, 0.00044898, -0.00000114, 0.00000000],
+		[-6.27309928, -0.00044666, 0.00027365, 0.00044892, -0.00000114, 0.00000000],
+		[-6.27309944, -0.00044660, 0.00027361, 0.00044885, -0.00000114, 0.00000000],
+		[-6.27309959, -0.00044653, 0.00027357, 0.00044879, -0.00000114, 0.00000000],
+		[-6.27309974, -0.00044647, 0.00027353, 0.00044873, -0.00000114, 0.00000000],
+		[-6.27309990, -0.00044641, 0.00027349, 0.00044866, -0.00000114, 0.00000000],
+		[-6.27310005, -0.00044634, 0.00027345, 0.00044860, -0.00000114, 0.00000000],
+		[-6.27310021, -0.00044628, 0.00027341, 0.00044853, -0.00000114, 0.00000000],
+		[-6.27310036, -0.00044621, 0.00027338, 0.00044847, -0.00000114, 0.00000000],
+		[-6.27310051, -0.00044615, 0.00027334, 0.00044840, -0.00000114, 0.00000000],
+		[-6.27310067, -0.00044608, 0.00027330, 0.00044834, -0.00000114, 0.00000000],
+		[-6.27310082, -0.00044602, 0.00027326, 0.00044827, -0.00000114, 0.00000000],
+		[-6.27310097, -0.00044596, 0.00027322, 0.00044821, -0.00000114, 0.00000000],
+		[-6.27310113, -0.00044589, 0.00027318, 0.00044814, -0.00000114, 0.00000000],
+		[-6.27310128, -0.00044583, 0.00027314, 0.00044808, -0.00000114, 0.00000000],
+		[-6.27310144, -0.00044576, 0.00027310, 0.00044801, -0.00000114, 0.00000000],
+		[-6.27310159, -0.00044570, 0.00027306, 0.00044795, -0.00000114, 0.00000000],
+		[-6.27310174, -0.00044563, 0.00027302, 0.00044789, -0.00000114, 0.00000000],
+		[-6.27310190, -0.00044557, 0.00027298, 0.00044782, -0.00000114, 0.00000000],
+		[-6.27310205, -0.00044551, 0.00027294, 0.00044776, -0.00000114, 0.00000000],
+		[-6.27310220, -0.00044544, 0.00027290, 0.00044769, -0.00000114, 0.00000000],
+		[-6.27310236, -0.00044538, 0.00027286, 0.00044763, -0.00000114, 0.00000000],
+		[-6.27310251, -0.00044531, 0.00027282, 0.00044756, -0.00000114, 0.00000000],
+		[-6.27310266, -0.00044525, 0.00027279, 0.00044750, -0.00000114, 0.00000000],
+		[-6.27310282, -0.00044519, 0.00027275, 0.00044743, -0.00000114, 0.00000000],
+		[-6.27310297, -0.00044512, 0.00027271, 0.00044737, -0.00000114, 0.00000000],
+		[-6.27310312, -0.00044506, 0.00027267, 0.00044731, -0.00000114, 0.00000000],
+		[-6.27310328, -0.00044499, 0.00027263, 0.00044724, -0.00000114, 0.00000000],
+		[-6.27310343, -0.00044493, 0.00027259, 0.00044718, -0.00000114, 0.00000000],
+		[-6.27310358, -0.00044487, 0.00027255, 0.00044711, -0.00000114, 0.00000000],
+		[-6.27310374, -0.00044480, 0.00027251, 0.00044705, -0.00000114, 0.00000000],
+		[-6.27310389, -0.00044474, 0.00027247, 0.00044698, -0.00000114, 0.00000000],
+		[-6.27310404, -0.00044467, 0.00027243, 0.00044692, -0.00000114, 0.00000000],
+		[-6.27310419, -0.00044461, 0.00027239, 0.00044686, -0.00000114, 0.00000000],
+		[-6.27310435, -0.00044455, 0.00027235, 0.00044679, -0.00000114, 0.00000000],
+		[-6.27310450, -0.00044448, 0.00027231, 0.00044673, -0.00000114, 0.00000000],
+		[-6.27310465, -0.00044442, 0.00027228, 0.00044666, -0.00000114, 0.00000000],
+		[-6.27310481, -0.00044436, 0.00027224, 0.00044660, -0.00000114, 0.00000000],
+		[-6.27310496, -0.00044429, 0.00027220, 0.00044654, -0.00000114, 0.00000000],
+		[-6.27310511, -0.00044423, 0.00027216, 0.00044647, -0.00000114, 0.00000000],
+		[-6.27310526, -0.00044416, 0.00027212, 0.00044641, -0.00000114, 0.00000000],
+		[-6.27310542, -0.00044410, 0.00027208, 0.00044634, -0.00000114, 0.00000000],
+		[-6.27310557, -0.00044404, 0.00027204, 0.00044628, -0.00000114, 0.00000000],
+		[-6.27310572, -0.00044397, 0.00027200, 0.00044621, -0.00000114, 0.00000000],
+		[-6.27310587, -0.00044391, 0.00027196, 0.00044615, -0.00000114, 0.00000000],
+		[-6.27310603, -0.00044385, 0.00027192, 0.00044609, -0.00000114, 0.00000000],
+		[-6.27310618, -0.00044378, 0.00027189, 0.00044602, -0.00000114, 0.00000000],
+		[-6.27310633, -0.00044372, 0.00027185, 0.00044596, -0.00000114, 0.00000000],
+		[-6.27310648, -0.00044365, 0.00027181, 0.00044590, -0.00000114, 0.00000000],
+		[-6.27310663, -0.00044359, 0.00027177, 0.00044583, -0.00000114, 0.00000000],
+		[-6.27310679, -0.00044353, 0.00027173, 0.00044577, -0.00000114, 0.00000000],
+		[-6.27310694, -0.00044346, 0.00027169, 0.00044570, -0.00000114, 0.00000000],
+		[-6.27310709, -0.00044340, 0.00027165, 0.00044564, -0.00000114, 0.00000000],
+		[-6.27310724, -0.00044334, 0.00027161, 0.00044558, -0.00000114, 0.00000000],
+		[-6.27310739, -0.00044327, 0.00027157, 0.00044551, -0.00000114, 0.00000000],
+		[-6.27310755, -0.00044321, 0.00027153, 0.00044545, -0.00000114, 0.00000000],
+		[-6.27310770, -0.00044315, 0.00027150, 0.00044538, -0.00000114, 0.00000000],
+		[-6.27310785, -0.00044308, 0.00027146, 0.00044532, -0.00000114, 0.00000000],
+		[-6.27310800, -0.00044302, 0.00027142, 0.00044526, -0.00000114, 0.00000000],
+		[-6.27310815, -0.00044296, 0.00027138, 0.00044519, -0.00000114, 0.00000000],
+		[-6.27310831, -0.00044289, 0.00027134, 0.00044513, -0.00000114, 0.00000000],
+		[-6.27310846, -0.00044283, 0.00027130, 0.00044507, -0.00000114, 0.00000000],
+		[-6.27310861, -0.00044277, 0.00027126, 0.00044500, -0.00000114, 0.00000000],
+		[-6.27310876, -0.00044270, 0.00027122, 0.00044494, -0.00000114, 0.00000000],
+		[-6.27310891, -0.00044264, 0.00027119, 0.00044487, -0.00000114, 0.00000000],
+		[-6.27310906, -0.00044258, 0.00027115, 0.00044481, -0.00000114, 0.00000000],
+		[-6.27310921, -0.00044251, 0.00027111, 0.00044475, -0.00000114, 0.00000000],
+		[-6.27310937, -0.00044245, 0.00027107, 0.00044468, -0.00000114, 0.00000000],
+		[-6.27310952, -0.00044239, 0.00027103, 0.00044462, -0.00000114, 0.00000000],
+		[-6.27310967, -0.00044232, 0.00027099, 0.00044456, -0.00000114, 0.00000000],
+		[-6.27310982, -0.00044226, 0.00027095, 0.00044449, -0.00000114, 0.00000000],
+		[-6.27310997, -0.00044220, 0.00027091, 0.00044443, -0.00000114, 0.00000000],
+		[-6.27311012, -0.00044213, 0.00027088, 0.00044437, -0.00000114, 0.00000000],
+		[-6.27311027, -0.00044207, 0.00027084, 0.00044430, -0.00000114, 0.00000000],
+		[-6.27311042, -0.00044201, 0.00027080, 0.00044424, -0.00000114, 0.00000000],
+		[-6.27311058, -0.00044194, 0.00027076, 0.00044418, -0.00000114, 0.00000000],
+		[-6.27311073, -0.00044188, 0.00027072, 0.00044411, -0.00000114, 0.00000000],
+		[-6.27311088, -0.00044182, 0.00027068, 0.00044405, -0.00000114, 0.00000000],
+		[-6.27311103, -0.00044176, 0.00027064, 0.00044399, -0.00000114, 0.00000000],
+		[-6.27311118, -0.00044169, 0.00027060, 0.00044392, -0.00000114, 0.00000000],
+		[-6.27311133, -0.00044163, 0.00027057, 0.00044386, -0.00000114, 0.00000000],
+		[-6.27311148, -0.00044157, 0.00027053, 0.00044380, -0.00000114, 0.00000000],
+		[-6.27311163, -0.00044150, 0.00027049, 0.00044373, -0.00000114, 0.00000000],
+		[-6.27311178, -0.00044144, 0.00027045, 0.00044367, -0.00000114, 0.00000000],
+		[-6.27311193, -0.00044138, 0.00027041, 0.00044361, -0.00000114, 0.00000000],
+		[-6.27311208, -0.00044131, 0.00027037, 0.00044354, -0.00000114, 0.00000000],
+		[-6.27311223, -0.00044125, 0.00027033, 0.00044348, -0.00000114, 0.00000000],
+		[-6.27311238, -0.00044119, 0.00027030, 0.00044342, -0.00000114, 0.00000000],
+		[-6.27311253, -0.00044113, 0.00027026, 0.00044335, -0.00000114, 0.00000000],
+		[-6.27311269, -0.00044106, 0.00027022, 0.00044329, -0.00000114, 0.00000000],
+		[-6.27311284, -0.00044100, 0.00027018, 0.00044323, -0.00000114, 0.00000000],
+		[-6.27311299, -0.00044094, 0.00027014, 0.00044316, -0.00000114, 0.00000000],
+		[-6.27311314, -0.00044087, 0.00027010, 0.00044310, -0.00000114, 0.00000000],
+		[-6.27311329, -0.00044081, 0.00027006, 0.00044304, -0.00000114, 0.00000000],
+		[-6.27311344, -0.00044075, 0.00027003, 0.00044297, -0.00000114, 0.00000000],
+		[-6.27311359, -0.00044069, 0.00026999, 0.00044291, -0.00000114, 0.00000000],
+		[-6.27311374, -0.00044062, 0.00026995, 0.00044285, -0.00000114, 0.00000000],
+		[-6.27311389, -0.00044056, 0.00026991, 0.00044279, -0.00000114, 0.00000000],
+		[-6.27311404, -0.00044050, 0.00026987, 0.00044272, -0.00000114, 0.00000000],
+		[-6.27311419, -0.00044044, 0.00026983, 0.00044266, -0.00000114, 0.00000000],
+		[-6.27311434, -0.00044037, 0.00026980, 0.00044260, -0.00000114, 0.00000000],
+		[-6.27311449, -0.00044031, 0.00026976, 0.00044253, -0.00000114, 0.00000000],
+		[-6.27311464, -0.00044025, 0.00026972, 0.00044247, -0.00000114, 0.00000000],
+		[-6.27311479, -0.00044018, 0.00026968, 0.00044241, -0.00000114, 0.00000000],
+		[-6.27311494, -0.00044012, 0.00026964, 0.00044234, -0.00000114, 0.00000000],
+		[-6.27311509, -0.00044006, 0.00026960, 0.00044228, -0.00000114, 0.00000000],
+		[-6.27311524, -0.00044000, 0.00026957, 0.00044222, -0.00000114, 0.00000000],
+		[-6.27311539, -0.00043993, 0.00026953, 0.00044216, -0.00000114, 0.00000000],
+		[-6.27311554, -0.00043987, 0.00026949, 0.00044209, -0.00000114, 0.00000000],
+		[-6.27311569, -0.00043981, 0.00026945, 0.00044203, -0.00000114, 0.00000000],
+		[-6.27311583, -0.00043975, 0.00026941, 0.00044197, -0.00000114, 0.00000000],
+		[-6.27311598, -0.00043968, 0.00026937, 0.00044190, -0.00000114, 0.00000000],
+		[-6.27311613, -0.00043962, 0.00026934, 0.00044184, -0.00000114, 0.00000000],
+		[-6.27311628, -0.00043956, 0.00026930, 0.00044178, -0.00000114, 0.00000000],
+		[-6.27311643, -0.00043950, 0.00026926, 0.00044172, -0.00000114, 0.00000000],
+		[-6.27311658, -0.00043944, 0.00026922, 0.00044165, -0.00000114, 0.00000000],
+		[-6.27311673, -0.00043937, 0.00026918, 0.00044159, -0.00000114, 0.00000000],
+		[-6.27311688, -0.00043931, 0.00026914, 0.00044153, -0.00000114, 0.00000000],
+		[-6.27311703, -0.00043925, 0.00026911, 0.00044147, -0.00000114, 0.00000000],
+		[-6.27311718, -0.00043919, 0.00026907, 0.00044140, -0.00000114, 0.00000000],
+		[-6.27311733, -0.00043912, 0.00026903, 0.00044134, -0.00000114, 0.00000000],
+		[-6.27311748, -0.00043906, 0.00026899, 0.00044128, -0.00000114, 0.00000000],
+		[-6.27311763, -0.00043900, 0.00026895, 0.00044122, -0.00000114, 0.00000000],
+		[-6.27311777, -0.00043894, 0.00026892, 0.00044115, -0.00000114, 0.00000000],
+		[-6.27311792, -0.00043887, 0.00026888, 0.00044109, -0.00000114, 0.00000000],
+		[-6.27311807, -0.00043881, 0.00026884, 0.00044103, -0.00000114, 0.00000000],
+		[-6.27311822, -0.00043875, 0.00026880, 0.00044096, -0.00000114, 0.00000000],
+		[-6.27311837, -0.00043869, 0.00026876, 0.00044090, -0.00000114, 0.00000000],
+		[-6.27311852, -0.00043863, 0.00026872, 0.00044084, -0.00000114, 0.00000000],
+		[-6.27311867, -0.00043856, 0.00026869, 0.00044078, -0.00000114, 0.00000000],
+		[-6.27311882, -0.00043850, 0.00026865, 0.00044072, -0.00000114, 0.00000000],
+		[-6.27311897, -0.00043844, 0.00026861, 0.00044065, -0.00000114, 0.00000000],
+		[-6.27311911, -0.00043838, 0.00026857, 0.00044059, -0.00000114, 0.00000000],
+		[-6.27311926, -0.00043832, 0.00026853, 0.00044053, -0.00000114, 0.00000000],
+		[-6.27311941, -0.00043825, 0.00026850, 0.00044047, -0.00000114, 0.00000000],
+		[-6.27311956, -0.00043819, 0.00026846, 0.00044040, -0.00000114, 0.00000000],
+		[-6.27311971, -0.00043813, 0.00026842, 0.00044034, -0.00000114, 0.00000000],
+		[-6.27311986, -0.00043807, 0.00026838, 0.00044028, -0.00000114, 0.00000000],
+		[-6.27312000, -0.00043800, 0.00026834, 0.00044022, -0.00000114, 0.00000000],
+		[-6.27312015, -0.00043794, 0.00026831, 0.00044015, -0.00000114, 0.00000000],
+		[-6.27312030, -0.00043788, 0.00026827, 0.00044009, -0.00000114, 0.00000000],
+		[-6.27312045, -0.00043782, 0.00026823, 0.00044003, -0.00000114, 0.00000000],
+		[-6.27312060, -0.00043776, 0.00026819, 0.00043997, -0.00000114, 0.00000000],
+		[-6.27312075, -0.00043770, 0.00026815, 0.00043990, -0.00000114, 0.00000000],
+		[-6.27312089, -0.00043763, 0.00026812, 0.00043984, -0.00000114, 0.00000000],
+		[-6.27312104, -0.00043757, 0.00026808, 0.00043978, -0.00000114, 0.00000000],
+		[-6.27312119, -0.00043751, 0.00026804, 0.00043972, -0.00000114, 0.00000000],
+		[-6.27312134, -0.00043745, 0.00026800, 0.00043966, -0.00000114, 0.00000000],
+		[-6.27312149, -0.00043739, 0.00026796, 0.00043959, -0.00000114, 0.00000000],
+		[-6.27312163, -0.00043732, 0.00026793, 0.00043953, -0.00000114, 0.00000000],
+		[-6.27312178, -0.00043726, 0.00026789, 0.00043947, -0.00000114, 0.00000000],
+		[-6.27312193, -0.00043720, 0.00026785, 0.00043941, -0.00000114, 0.00000000],
+		[-6.27312208, -0.00043714, 0.00026781, 0.00043935, -0.00000114, 0.00000000],
+		[-6.27312223, -0.00043708, 0.00026778, 0.00043928, -0.00000114, 0.00000000],
+		[-6.27312237, -0.00043702, 0.00026774, 0.00043922, -0.00000114, 0.00000000],
+		[-6.27312252, -0.00043695, 0.00026770, 0.00043916, -0.00000114, 0.00000000],
+		[-6.27312267, -0.00043689, 0.00026766, 0.00043910, -0.00000114, 0.00000000],
+		[-6.27312282, -0.00043683, 0.00026762, 0.00043904, -0.00000114, 0.00000000],
+		[-6.27312296, -0.00043677, 0.00026759, 0.00043897, -0.00000114, 0.00000000],
+		[-6.27312311, -0.00043671, 0.00026755, 0.00043891, -0.00000114, 0.00000000],
+		[-6.27312326, -0.00043665, 0.00026751, 0.00043885, -0.00000114, 0.00000000],
+		[-6.27312341, -0.00043658, 0.00026747, 0.00043879, -0.00000114, 0.00000000],
+		[-6.27312355, -0.00043652, 0.00026744, 0.00043873, -0.00000114, 0.00000000],
+		[-6.27312370, -0.00043646, 0.00026740, 0.00043866, -0.00000114, 0.00000000],
+		[-6.27312385, -0.00043640, 0.00026736, 0.00043860, -0.00000114, 0.00000000],
+		[-6.27312399, -0.00043634, 0.00026732, 0.00043854, -0.00000114, 0.00000000],
+		[-6.27312414, -0.00043628, 0.00026728, 0.00043848, -0.00000114, 0.00000000],
+		[-6.27312429, -0.00043622, 0.00026725, 0.00043842, -0.00000114, 0.00000000],
+		[-6.27312444, -0.00043615, 0.00026721, 0.00043836, -0.00000114, 0.00000000],
+		[-6.27312458, -0.00043609, 0.00026717, 0.00043829, -0.00000114, 0.00000000],
+		[-6.27312473, -0.00043603, 0.00026713, 0.00043823, -0.00000114, 0.00000000],
+		[-6.27312488, -0.00043597, 0.00026710, 0.00043817, -0.00000114, 0.00000000],
+		[-6.27312502, -0.00043591, 0.00026706, 0.00043811, -0.00000114, 0.00000000],
+		[-6.27312517, -0.00043585, 0.00026702, 0.00043805, -0.00000114, 0.00000000],
+		[-6.27312532, -0.00043579, 0.00026698, 0.00043798, -0.00000114, 0.00000000],
+		[-6.27312546, -0.00043572, 0.00026695, 0.00043792, -0.00000114, 0.00000000],
+		[-6.27312561, -0.00043566, 0.00026691, 0.00043786, -0.00000114, 0.00000000],
+		[-6.27312576, -0.00043560, 0.00026687, 0.00043780, -0.00000114, 0.00000000],
+		[-6.27312590, -0.00043554, 0.00026683, 0.00043774, -0.00000114, 0.00000000],
+		[-6.27312605, -0.00043548, 0.00026680, 0.00043768, -0.00000114, 0.00000000],
+		[-6.27312620, -0.00043542, 0.00026676, 0.00043762, -0.00000114, 0.00000000],
+		[-6.27312634, -0.00043536, 0.00026672, 0.00043755, -0.00000114, 0.00000000],
+		[-6.27312649, -0.00043529, 0.00026668, 0.00043749, -0.00000114, 0.00000000],
+		[-6.27312664, -0.00043523, 0.00026665, 0.00043743, -0.00000114, 0.00000000],
+		[-6.27312678, -0.00043517, 0.00026661, 0.00043737, -0.00000114, 0.00000000],
+		[-6.27312693, -0.00043511, 0.00026657, 0.00043731, -0.00000114, 0.00000000],
+		[-6.27312708, -0.00043505, 0.00026653, 0.00043725, -0.00000114, 0.00000000],
+		[-6.27312722, -0.00043499, 0.00026650, 0.00043718, -0.00000114, 0.00000000],
+		[-6.27312737, -0.00043493, 0.00026646, 0.00043712, -0.00000114, 0.00000000],
+		[-6.27312752, -0.00043487, 0.00026642, 0.00043706, -0.00000114, 0.00000000],
+		[-6.27312766, -0.00043481, 0.00026638, 0.00043700, -0.00000114, 0.00000000],
+		[-6.27312781, -0.00043474, 0.00026635, 0.00043694, -0.00000114, 0.00000000],
+		[-6.27312795, -0.00043468, 0.00026631, 0.00043688, -0.00000114, 0.00000000],
+		[-6.27312810, -0.00043462, 0.00026627, 0.00043682, -0.00000114, 0.00000000],
+		[-6.27312825, -0.00043456, 0.00026623, 0.00043676, -0.00000114, 0.00000000],
+		[-6.27312839, -0.00043450, 0.00026620, 0.00043669, -0.00000114, 0.00000000],
+		[-6.27312854, -0.00043444, 0.00026616, 0.00043663, -0.00000114, 0.00000000],
+		[-6.27312868, -0.00043438, 0.00026612, 0.00043657, -0.00000114, 0.00000000],
+		[-6.27312883, -0.00043432, 0.00026608, 0.00043651, -0.00000114, 0.00000000],
+		[-6.27312898, -0.00043426, 0.00026605, 0.00043645, -0.00000114, 0.00000000],
+		[-6.27312912, -0.00043420, 0.00026601, 0.00043639, -0.00000114, 0.00000000],
+		[-6.27312927, -0.00043413, 0.00026597, 0.00043633, -0.00000114, 0.00000000],
+		[-6.27312941, -0.00043407, 0.00026593, 0.00043626, -0.00000114, 0.00000000],
+		[-6.27312956, -0.00043401, 0.00026590, 0.00043620, -0.00000114, 0.00000000],
+		[-6.27312970, -0.00043395, 0.00026586, 0.00043614, -0.00000114, 0.00000000],
+		[-6.27312985, -0.00043389, 0.00026582, 0.00043608, -0.00000114, 0.00000000],
+		[-6.27313000, -0.00043383, 0.00026579, 0.00043602, -0.00000114, 0.00000000],
+		[-6.27313014, -0.00043377, 0.00026575, 0.00043596, -0.00000114, 0.00000000],
+		[-6.27313029, -0.00043371, 0.00026571, 0.00043590, -0.00000114, 0.00000000],
+		[-6.27313043, -0.00043365, 0.00026567, 0.00043584, -0.00000114, 0.00000000],
+		[-6.27313058, -0.00043359, 0.00026564, 0.00043578, -0.00000114, 0.00000000],
+		[-6.27313072, -0.00043353, 0.00026560, 0.00043572, -0.00000114, 0.00000000],
+		[-6.27313087, -0.00043347, 0.00026556, 0.00043565, -0.00000114, 0.00000000],
+		[-6.27313101, -0.00043341, 0.00026552, 0.00043559, -0.00000114, 0.00000000],
+		[-6.27313116, -0.00043335, 0.00026549, 0.00043553, -0.00000114, 0.00000000],
+		[-6.27313130, -0.00043328, 0.00026545, 0.00043547, -0.00000114, 0.00000000],
+		[-6.27313145, -0.00043322, 0.00026541, 0.00043541, -0.00000114, 0.00000000],
+		[-6.27313159, -0.00043316, 0.00026538, 0.00043535, -0.00000114, 0.00000000],
+		[-6.27313174, -0.00043310, 0.00026534, 0.00043529, -0.00000114, 0.00000000],
+		[-6.27313188, -0.00043304, 0.00026530, 0.00043523, -0.00000114, 0.00000000],
+		[-6.27313203, -0.00043298, 0.00026526, 0.00043517, -0.00000114, 0.00000000],
+		[-6.27313217, -0.00043292, 0.00026523, 0.00043511, -0.00000114, 0.00000000],
+		[-6.27313232, -0.00043286, 0.00026519, 0.00043504, -0.00000114, 0.00000000],
+		[-6.27313246, -0.00043280, 0.00026515, 0.00043498, -0.00000114, 0.00000000],
+		[-6.27313261, -0.00043274, 0.00026512, 0.00043492, -0.00000114, 0.00000000],
+		[-6.27313275, -0.00043268, 0.00026508, 0.00043486, -0.00000114, 0.00000000],
+		[-6.27313290, -0.00043262, 0.00026504, 0.00043480, -0.00000114, 0.00000000],
+		[-6.27313304, -0.00043256, 0.00026501, 0.00043474, -0.00000114, 0.00000000],
+		[-6.27313319, -0.00043250, 0.00026497, 0.00043468, -0.00000114, 0.00000000],
+		[-6.27313333, -0.00043244, 0.00026493, 0.00043462, -0.00000114, 0.00000000],
+		[-6.27313348, -0.00043238, 0.00026489, 0.00043456, -0.00000114, 0.00000000],
+		[-6.27313362, -0.00043232, 0.00026486, 0.00043450, -0.00000114, 0.00000000],
+		[-6.27313377, -0.00043226, 0.00026482, 0.00043444, -0.00000114, 0.00000000],
+		[-6.27313391, -0.00043220, 0.00026478, 0.00043438, -0.00000114, 0.00000000],
+		[-6.27313405, -0.00043214, 0.00026475, 0.00043432, -0.00000114, 0.00000000],
+		[-6.27313420, -0.00043207, 0.00026471, 0.00043426, -0.00000114, 0.00000000],
+		[-6.27313434, -0.00043201, 0.00026467, 0.00043419, -0.00000114, 0.00000000],
+		[-6.27313449, -0.00043195, 0.00026464, 0.00043413, -0.00000114, 0.00000000],
+		[-6.27313463, -0.00043189, 0.00026460, 0.00043407, -0.00000114, 0.00000000],
+		[-6.27313478, -0.00043183, 0.00026456, 0.00043401, -0.00000114, 0.00000000],
+		[-6.27313492, -0.00043177, 0.00026452, 0.00043395, -0.00000114, 0.00000000],
+		[-6.27313506, -0.00043171, 0.00026449, 0.00043389, -0.00000114, 0.00000000],
+		[-6.27313521, -0.00043165, 0.00026445, 0.00043383, -0.00000114, 0.00000000],
+		[-6.27313535, -0.00043159, 0.00026441, 0.00043377, -0.00000114, 0.00000000],
+		[-6.27313550, -0.00043153, 0.00026438, 0.00043371, -0.00000114, 0.00000000],
+		[-6.27313564, -0.00043147, 0.00026434, 0.00043365, -0.00000114, 0.00000000],
+		[-6.27313578, -0.00043141, 0.00026430, 0.00043359, -0.00000114, 0.00000000],
+		[-6.27313593, -0.00043135, 0.00026427, 0.00043353, -0.00000114, 0.00000000],
+		[-6.27313607, -0.00043129, 0.00026423, 0.00043347, -0.00000114, 0.00000000],
+		[-6.27313622, -0.00043123, 0.00026419, 0.00043341, -0.00000114, 0.00000000],
+		[-6.27313636, -0.00043117, 0.00026416, 0.00043335, -0.00000114, 0.00000000],
+		[-6.27313650, -0.00043111, 0.00026412, 0.00043329, -0.00000114, 0.00000000],
+		[-6.27313665, -0.00043105, 0.00026408, 0.00043323, -0.00000114, 0.00000000],
+		[-6.27313679, -0.00043099, 0.00026405, 0.00043317, -0.00000114, 0.00000000],
+		[-6.27313693, -0.00043093, 0.00026401, 0.00043311, -0.00000114, 0.00000000],
+		[-6.27313708, -0.00043087, 0.00026397, 0.00043305, -0.00000114, 0.00000000],
+		[-6.27313722, -0.00043081, 0.00026394, 0.00043299, -0.00000114, 0.00000000],
+		[-6.27313737, -0.00043075, 0.00026390, 0.00043293, -0.00000114, 0.00000000],
+		[-6.27313751, -0.00043069, 0.00026386, 0.00043287, -0.00000114, 0.00000000],
+		[-6.27313765, -0.00043063, 0.00026382, 0.00043281, -0.00000114, 0.00000000],
+		[-6.27313780, -0.00043057, 0.00026379, 0.00043275, -0.00000114, 0.00000000],
+		[-6.27313794, -0.00043051, 0.00026375, 0.00043268, -0.00000114, 0.00000000],
+		[-6.27313808, -0.00043045, 0.00026371, 0.00043262, -0.00000114, 0.00000000],
+		[-6.27313823, -0.00043039, 0.00026368, 0.00043256, -0.00000114, 0.00000000],
+		[-6.27313837, -0.00043033, 0.00026364, 0.00043250, -0.00000114, 0.00000000],
+		[-6.27313851, -0.00043027, 0.00026360, 0.00043244, -0.00000114, 0.00000000],
+		[-6.27313865, -0.00043021, 0.00026357, 0.00043238, -0.00000114, 0.00000000],
+		[-6.27313880, -0.00043015, 0.00026353, 0.00043232, -0.00000114, 0.00000000],
+		[-6.27313894, -0.00043009, 0.00026349, 0.00043226, -0.00000114, 0.00000000],
+		[-6.27313908, -0.00043003, 0.00026346, 0.00043220, -0.00000114, 0.00000000],
+		[-6.27313923, -0.00042997, 0.00026342, 0.00043214, -0.00000114, 0.00000000],
+		[-6.27313937, -0.00042991, 0.00026338, 0.00043208, -0.00000114, 0.00000000],
+		[-6.27313951, -0.00042985, 0.00026335, 0.00043202, -0.00000114, 0.00000000],
+		[-6.27313966, -0.00042980, 0.00026331, 0.00043196, -0.00000114, 0.00000000],
+		[-6.27313980, -0.00042974, 0.00026328, 0.00043190, -0.00000114, 0.00000000],
+		[-6.27313994, -0.00042968, 0.00026324, 0.00043184, -0.00000114, 0.00000000],
+		[-6.27314008, -0.00042962, 0.00026320, 0.00043178, -0.00000114, 0.00000000],
+		[-6.27314023, -0.00042956, 0.00026317, 0.00043172, -0.00000114, 0.00000000],
+		[-6.27314037, -0.00042950, 0.00026313, 0.00043166, -0.00000114, 0.00000000],
+		[-6.27314051, -0.00042944, 0.00026309, 0.00043160, -0.00000114, 0.00000000],
+		[-6.27314065, -0.00042938, 0.00026306, 0.00043154, -0.00000114, 0.00000000],
+		[-6.27314080, -0.00042932, 0.00026302, 0.00043148, -0.00000114, 0.00000000],
+		[-6.27314094, -0.00042926, 0.00026298, 0.00043142, -0.00000114, 0.00000000],
+		[-6.27314108, -0.00042920, 0.00026295, 0.00043136, -0.00000114, 0.00000000],
+		[-6.27314122, -0.00042914, 0.00026291, 0.00043131, -0.00000114, 0.00000000],
+		[-6.27314137, -0.00042908, 0.00026287, 0.00043125, -0.00000114, 0.00000000],
+		[-6.27314151, -0.00042902, 0.00026284, 0.00043119, -0.00000114, 0.00000000],
+		[-6.27314165, -0.00042896, 0.00026280, 0.00043113, -0.00000114, 0.00000000],
+		[-6.27314179, -0.00042890, 0.00026276, 0.00043107, -0.00000114, 0.00000000],
+		[-6.27314194, -0.00042884, 0.00026273, 0.00043101, -0.00000114, 0.00000000],
+		[-6.27314208, -0.00042878, 0.00026269, 0.00043095, -0.00000114, 0.00000000],
+		[-6.27314222, -0.00042872, 0.00026265, 0.00043089, -0.00000114, 0.00000000],
+		[-6.27314236, -0.00042866, 0.00026262, 0.00043083, -0.00000114, 0.00000000],
+		[-6.27314250, -0.00042861, 0.00026258, 0.00043077, -0.00000114, 0.00000000],
+		[-6.27314265, -0.00042855, 0.00026255, 0.00043071, -0.00000114, 0.00000000],
+		[-6.27314279, -0.00042849, 0.00026251, 0.00043065, -0.00000114, 0.00000000],
+		[-6.27314293, -0.00042843, 0.00026247, 0.00043059, -0.00000114, 0.00000000],
+		[-6.27314307, -0.00042837, 0.00026244, 0.00043053, -0.00000114, 0.00000000],
+		[-6.27314321, -0.00042831, 0.00026240, 0.00043047, -0.00000114, 0.00000000],
+		[-6.27314336, -0.00042825, 0.00026236, 0.00043041, -0.00000114, 0.00000000],
+		[-6.27314350, -0.00042819, 0.00026233, 0.00043035, -0.00000114, 0.00000000],
+		[-6.27314364, -0.00042813, 0.00026229, 0.00043029, -0.00000114, 0.00000000],
+		[-6.27314378, -0.00042807, 0.00026226, 0.00043023, -0.00000114, 0.00000000],
+		[-6.27314392, -0.00042801, 0.00026222, 0.00043017, -0.00000114, 0.00000000],
+		[-6.27314406, -0.00042795, 0.00026218, 0.00043011, -0.00000114, 0.00000000],
+		[-6.27314421, -0.00042789, 0.00026215, 0.00043005, -0.00000114, 0.00000000],
+		[-6.27314435, -0.00042783, 0.00026211, 0.00042999, -0.00000114, 0.00000000],
+		[-6.27314449, -0.00042778, 0.00026207, 0.00042993, -0.00000114, 0.00000000],
+		[-6.27314463, -0.00042772, 0.00026204, 0.00042987, -0.00000114, 0.00000000],
+		[-6.27314477, -0.00042766, 0.00026200, 0.00042982, -0.00000114, 0.00000000],
+		[-6.27314491, -0.00042760, 0.00026197, 0.00042976, -0.00000114, 0.00000000],
+		[-6.27314505, -0.00042754, 0.00026193, 0.00042970, -0.00000114, 0.00000000],
+		[-6.27314520, -0.00042748, 0.00026189, 0.00042964, -0.00000114, 0.00000000],
+		[-6.27314534, -0.00042742, 0.00026186, 0.00042958, -0.00000114, 0.00000000],
+		[-6.27314548, -0.00042736, 0.00026182, 0.00042952, -0.00000114, 0.00000000],
+		[-6.27314562, -0.00042730, 0.00026178, 0.00042946, -0.00000114, 0.00000000],
+		[-6.27314576, -0.00042724, 0.00026175, 0.00042940, -0.00000114, 0.00000000],
+		[-6.27314590, -0.00042719, 0.00026171, 0.00042934, -0.00000114, 0.00000000],
+		[-6.27314604, -0.00042713, 0.00026168, 0.00042928, -0.00000114, 0.00000000],
+		[-6.27314618, -0.00042707, 0.00026164, 0.00042922, -0.00000114, 0.00000000],
+		[-6.27314633, -0.00042701, 0.00026160, 0.00042916, -0.00000114, 0.00000000],
+		[-6.27314647, -0.00042695, 0.00026157, 0.00042910, -0.00000114, 0.00000000],
+		[-6.27314661, -0.00042689, 0.00026153, 0.00042904, -0.00000114, 0.00000000],
+		[-6.27314675, -0.00042683, 0.00026150, 0.00042899, -0.00000114, 0.00000000],
+		[-6.27314689, -0.00042677, 0.00026146, 0.00042893, -0.00000114, 0.00000000],
+		[-6.27314703, -0.00042671, 0.00026142, 0.00042887, -0.00000114, 0.00000000],
+		[-6.27314717, -0.00042666, 0.00026139, 0.00042881, -0.00000114, 0.00000000],
+		[-6.27314731, -0.00042660, 0.00026135, 0.00042875, -0.00000114, 0.00000000],
+		[-6.27314745, -0.00042654, 0.00026132, 0.00042869, -0.00000114, 0.00000000],
+		[-6.27314759, -0.00042648, 0.00026128, 0.00042863, -0.00000114, 0.00000000],
+		[-6.27314773, -0.00042642, 0.00026124, 0.00042857, -0.00000114, 0.00000000],
+		[-6.27314787, -0.00042636, 0.00026121, 0.00042851, -0.00000114, 0.00000000],
+		[-6.27314801, -0.00042630, 0.00026117, 0.00042845, -0.00000114, 0.00000000],
+		[-6.27314815, -0.00042624, 0.00026114, 0.00042839, -0.00000114, 0.00000000],
+		[-6.27314830, -0.00042619, 0.00026110, 0.00042834, -0.00000114, 0.00000000],
+		[-6.27314844, -0.00042613, 0.00026106, 0.00042828, -0.00000114, 0.00000000],
+		[-6.27314858, -0.00042607, 0.00026103, 0.00042822, -0.00000114, 0.00000000],
+		[-6.27314872, -0.00042601, 0.00026099, 0.00042816, -0.00000114, 0.00000000],
+		[-6.27314886, -0.00042595, 0.00026096, 0.00042810, -0.00000114, 0.00000000],
+		[-6.27314900, -0.00042589, 0.00026092, 0.00042804, -0.00000114, 0.00000000],
+		[-6.27314914, -0.00042583, 0.00026088, 0.00042798, -0.00000114, 0.00000000],
+		[-6.27314928, -0.00042578, 0.00026085, 0.00042792, -0.00000114, 0.00000000],
+		[-6.27314942, -0.00042572, 0.00026081, 0.00042786, -0.00000114, 0.00000000],
+		[-6.27314956, -0.00042566, 0.00026078, 0.00042781, -0.00000114, 0.00000000],
+		[-6.27314970, -0.00042560, 0.00026074, 0.00042775, -0.00000114, 0.00000000],
+		[-6.27314984, -0.00042554, 0.00026070, 0.00042769, -0.00000114, 0.00000000],
+		[-6.27314998, -0.00042548, 0.00026067, 0.00042763, -0.00000114, 0.00000000],
+		[-6.27315012, -0.00042542, 0.00026063, 0.00042757, -0.00000114, 0.00000000],
+		[-6.27315026, -0.00042537, 0.00026060, 0.00042751, -0.00000114, 0.00000000],
+		[-6.27315040, -0.00042531, 0.00026056, 0.00042745, -0.00000114, 0.00000000],
+		[-6.27315054, -0.00042525, 0.00026052, 0.00042739, -0.00000114, 0.00000000],
+		[-6.27315068, -0.00042519, 0.00026049, 0.00042734, -0.00000114, 0.00000000],
+		[-6.27315082, -0.00042513, 0.00026045, 0.00042728, -0.00000114, 0.00000000],
+		[-6.27315096, -0.00042507, 0.00026042, 0.00042722, -0.00000114, 0.00000000],
+		[-6.27315110, -0.00042502, 0.00026038, 0.00042716, -0.00000114, 0.00000000],
+		[-6.27315124, -0.00042496, 0.00026035, 0.00042710, -0.00000114, 0.00000000],
+		[-6.27315138, -0.00042490, 0.00026031, 0.00042704, -0.00000114, 0.00000000],
+		[-6.27315152, -0.00042484, 0.00026027, 0.00042698, -0.00000114, 0.00000000],
+		[-6.27315165, -0.00042478, 0.00026024, 0.00042692, -0.00000114, 0.00000000],
+		[-6.27315179, -0.00042472, 0.00026020, 0.00042687, -0.00000114, 0.00000000],
+		[-6.27315193, -0.00042467, 0.00026017, 0.00042681, -0.00000114, 0.00000000],
+		[-6.27315207, -0.00042461, 0.00026013, 0.00042675, -0.00000114, 0.00000000],
+		[-6.27315221, -0.00042455, 0.00026010, 0.00042669, -0.00000114, 0.00000000],
+		[-6.27315235, -0.00042449, 0.00026006, 0.00042663, -0.00000114, 0.00000000],
+		[-6.27315249, -0.00042443, 0.00026002, 0.00042657, -0.00000114, 0.00000000],
+		[-6.27315263, -0.00042437, 0.00025999, 0.00042652, -0.00000114, 0.00000000],
+		[-6.27315277, -0.00042432, 0.00025995, 0.00042646, -0.00000114, 0.00000000],
+		[-6.27315291, -0.00042426, 0.00025992, 0.00042640, -0.00000114, 0.00000000],
+		[-6.27315305, -0.00042420, 0.00025988, 0.00042634, -0.00000114, 0.00000000],
+		[-6.27315319, -0.00042414, 0.00025985, 0.00042628, -0.00000114, 0.00000000],
+		[-6.27315333, -0.00042408, 0.00025981, 0.00042622, -0.00000114, 0.00000000],
+		[-6.27315347, -0.00042403, 0.00025978, 0.00042616, -0.00000114, 0.00000000],
+		[-6.27315360, -0.00042397, 0.00025974, 0.00042611, -0.00000114, 0.00000000],
+		[-6.27315374, -0.00042391, 0.00025970, 0.00042605, -0.00000114, 0.00000000],
+		[-6.27315388, -0.00042385, 0.00025967, 0.00042599, -0.00000114, 0.00000000],
+		[-6.27315402, -0.00042379, 0.00025963, 0.00042593, -0.00000114, 0.00000000],
+		[-6.27315416, -0.00042374, 0.00025960, 0.00042587, -0.00000114, 0.00000000],
+		[-6.27315430, -0.00042368, 0.00025956, 0.00042581, -0.00000114, 0.00000000],
+		[-6.27315444, -0.00042362, 0.00025953, 0.00042576, -0.00000114, 0.00000000],
+		[-6.27315458, -0.00042356, 0.00025949, 0.00042570, -0.00000114, 0.00000000],
+		[-6.27315472, -0.00042350, 0.00025946, 0.00042564, -0.00000114, 0.00000000],
+		[-6.27315485, -0.00042345, 0.00025942, 0.00042558, -0.00000114, 0.00000000],
+		[-6.27315499, -0.00042339, 0.00025938, 0.00042552, -0.00000114, 0.00000000],
+		[-6.27315513, -0.00042333, 0.00025935, 0.00042547, -0.00000114, 0.00000000],
+		[-6.27315527, -0.00042327, 0.00025931, 0.00042541, -0.00000114, 0.00000000],
+		[-6.27315541, -0.00042321, 0.00025928, 0.00042535, -0.00000114, 0.00000000],
+		[-6.27315555, -0.00042316, 0.00025924, 0.00042529, -0.00000114, 0.00000000],
+		[-6.27315569, -0.00042310, 0.00025921, 0.00042523, -0.00000114, 0.00000000],
+		[-6.27315582, -0.00042304, 0.00025917, 0.00042517, -0.00000114, 0.00000000],
+		[-6.27315596, -0.00042298, 0.00025914, 0.00042512, -0.00000114, 0.00000000],
+		[-6.27315610, -0.00042292, 0.00025910, 0.00042506, -0.00000114, 0.00000000],
+		[-6.27315624, -0.00042287, 0.00025907, 0.00042500, -0.00000114, 0.00000000],
+		[-6.27315638, -0.00042281, 0.00025903, 0.00042494, -0.00000114, 0.00000000],
+		[-6.27315652, -0.00042275, 0.00025899, 0.00042488, -0.00000114, 0.00000000],
+		[-6.27315665, -0.00042269, 0.00025896, 0.00042483, -0.00000114, 0.00000000],
+		[-6.27315679, -0.00042264, 0.00025892, 0.00042477, -0.00000114, 0.00000000],
+		[-6.27315693, -0.00042258, 0.00025889, 0.00042471, -0.00000114, 0.00000000],
+		[-6.27315707, -0.00042252, 0.00025885, 0.00042465, -0.00000114, 0.00000000],
+		[-6.27315721, -0.00042246, 0.00025882, 0.00042459, -0.00000114, 0.00000000],
+		[-6.27315734, -0.00042241, 0.00025878, 0.00042454, -0.00000114, 0.00000000],
+		[-6.27315748, -0.00042235, 0.00025875, 0.00042448, -0.00000114, 0.00000000],
+		[-6.27315762, -0.00042229, 0.00025871, 0.00042442, -0.00000114, 0.00000000],
+		[-6.27315776, -0.00042223, 0.00025868, 0.00042436, -0.00000114, 0.00000000],
+		[-6.27315790, -0.00042218, 0.00025864, 0.00042430, -0.00000114, 0.00000000],
+		[-6.27315803, -0.00042212, 0.00025861, 0.00042425, -0.00000114, 0.00000000],
+		[-6.27315817, -0.00042206, 0.00025857, 0.00042419, -0.00000114, 0.00000000],
+		[-6.27315831, -0.00042200, 0.00025854, 0.00042413, -0.00000114, 0.00000000],
+		[-6.27315845, -0.00042194, 0.00025850, 0.00042407, -0.00000114, 0.00000000],
+		[-6.27315858, -0.00042189, 0.00025846, 0.00042402, -0.00000114, 0.00000000],
+		[-6.27315872, -0.00042183, 0.00025843, 0.00042396, -0.00000114, 0.00000000],
+		[-6.27315886, -0.00042177, 0.00025839, 0.00042390, -0.00000114, 0.00000000],
+		[-6.27315900, -0.00042171, 0.00025836, 0.00042384, -0.00000114, 0.00000000],
+		[-6.27315913, -0.00042166, 0.00025832, 0.00042378, -0.00000114, 0.00000000],
+		[-6.27315927, -0.00042160, 0.00025829, 0.00042373, -0.00000114, 0.00000000],
+		[-6.27315941, -0.00042154, 0.00025825, 0.00042367, -0.00000114, 0.00000000],
+		[-6.27315955, -0.00042149, 0.00025822, 0.00042361, -0.00000114, 0.00000000],
+		[-6.27315968, -0.00042143, 0.00025818, 0.00042355, -0.00000114, 0.00000000],
+		[-6.27315982, -0.00042137, 0.00025815, 0.00042350, -0.00000114, 0.00000000],
+		[-6.27315996, -0.00042131, 0.00025811, 0.00042344, -0.00000114, 0.00000000],
+		[-6.27316010, -0.00042126, 0.00025808, 0.00042338, -0.00000114, 0.00000000],
+		[-6.27316023, -0.00042120, 0.00025804, 0.00042332, -0.00000114, 0.00000000],
+		[-6.27316037, -0.00042114, 0.00025801, 0.00042327, -0.00000114, 0.00000000],
+		[-6.27316051, -0.00042108, 0.00025797, 0.00042321, -0.00000114, 0.00000000],
+		[-6.27316064, -0.00042103, 0.00025794, 0.00042315, -0.00000114, 0.00000000],
+		[-6.27316078, -0.00042097, 0.00025790, 0.00042309, -0.00000114, 0.00000000],
+		[-6.27316092, -0.00042091, 0.00025787, 0.00042304, -0.00000114, 0.00000000],
+		[-6.27316105, -0.00042085, 0.00025783, 0.00042298, -0.00000114, 0.00000000],
+		[-6.27316119, -0.00042080, 0.00025780, 0.00042292, -0.00000114, 0.00000000],
+		[-6.27316133, -0.00042074, 0.00025776, 0.00042286, -0.00000114, 0.00000000],
+		[-6.27316147, -0.00042068, 0.00025773, 0.00042281, -0.00000114, 0.00000000],
+		[-6.27316160, -0.00042063, 0.00025769, 0.00042275, -0.00000114, 0.00000000],
+		[-6.27316174, -0.00042057, 0.00025766, 0.00042269, -0.00000114, 0.00000000],
+		[-6.27316188, -0.00042051, 0.00025762, 0.00042263, -0.00000114, 0.00000000],
+		[-6.27316201, -0.00042045, 0.00025759, 0.00042258, -0.00000114, 0.00000000],
+		[-6.27316215, -0.00042040, 0.00025755, 0.00042252, -0.00000114, 0.00000000],
+		[-6.27316229, -0.00042034, 0.00025752, 0.00042246, -0.00000114, 0.00000000],
+		[-6.27316242, -0.00042028, 0.00025748, 0.00042240, -0.00000114, 0.00000000],
+		[-6.27316256, -0.00042023, 0.00025745, 0.00042235, -0.00000114, 0.00000000],
+		[-6.27316270, -0.00042017, 0.00025741, 0.00042229, -0.00000114, 0.00000000],
+		[-6.27316283, -0.00042011, 0.00025738, 0.00042223, -0.00000114, 0.00000000],
+		[-6.27316297, -0.00042006, 0.00025734, 0.00042217, -0.00000114, 0.00000000],
+		[-6.27316311, -0.00042000, 0.00025731, 0.00042212, -0.00000114, 0.00000000],
+		[-6.27316324, -0.00041994, 0.00025727, 0.00042206, -0.00000114, 0.00000000],
+		[-6.27316338, -0.00041988, 0.00025724, 0.00042200, -0.00000114, 0.00000000],
+		[-6.27316351, -0.00041983, 0.00025720, 0.00042194, -0.00000114, 0.00000000],
+		[-6.27316365, -0.00041977, 0.00025717, 0.00042189, -0.00000114, 0.00000000],
+		[-6.27316379, -0.00041971, 0.00025713, 0.00042183, -0.00000114, 0.00000000],
+		[-6.27316392, -0.00041966, 0.00025710, 0.00042177, -0.00000114, 0.00000000],
+		[-6.27316406, -0.00041960, 0.00025706, 0.00042172, -0.00000114, 0.00000000],
+		[-6.27316420, -0.00041954, 0.00025703, 0.00042166, -0.00000114, 0.00000000],
+		[-6.27316433, -0.00041949, 0.00025699, 0.00042160, -0.00000114, 0.00000000],
+		[-6.27316447, -0.00041943, 0.00025696, 0.00042154, -0.00000114, 0.00000000],
+		[-6.27316460, -0.00041937, 0.00025692, 0.00042149, -0.00000114, 0.00000000],
+		[-6.27316474, -0.00041932, 0.00025689, 0.00042143, -0.00000114, 0.00000000],
+		[-6.27316488, -0.00041926, 0.00025685, 0.00042137, -0.00000114, 0.00000000],
+		[-6.27316501, -0.00041920, 0.00025682, 0.00042132, -0.00000114, 0.00000000],
+		[-6.27316515, -0.00041915, 0.00025678, 0.00042126, -0.00000114, 0.00000000],
+		[-6.27316528, -0.00041909, 0.00025675, 0.00042120, -0.00000114, 0.00000000],
+		[-6.27316542, -0.00041903, 0.00025671, 0.00042115, -0.00000114, 0.00000000],
+		[-6.27316555, -0.00041898, 0.00025668, 0.00042109, -0.00000114, 0.00000000],
+		[-6.27316569, -0.00041892, 0.00025664, 0.00042103, -0.00000114, 0.00000000],
+		[-6.27316583, -0.00041886, 0.00025661, 0.00042097, -0.00000114, 0.00000000],
+		[-6.27316596, -0.00041881, 0.00025658, 0.00042092, -0.00000114, 0.00000000],
+		[-6.27316610, -0.00041875, 0.00025654, 0.00042086, -0.00000114, 0.00000000],
+		[-6.27316623, -0.00041869, 0.00025651, 0.00042080, -0.00000114, 0.00000000],
+		[-6.27316637, -0.00041864, 0.00025647, 0.00042075, -0.00000114, 0.00000000],
+		[-6.27316650, -0.00041858, 0.00025644, 0.00042069, -0.00000114, 0.00000000],
+		[-6.27316664, -0.00041852, 0.00025640, 0.00042063, -0.00000114, 0.00000000],
+		[-6.27316677, -0.00041847, 0.00025637, 0.00042058, -0.00000114, 0.00000000],
+		[-6.27316691, -0.00041841, 0.00025633, 0.00042052, -0.00000114, 0.00000000],
+		[-6.27316705, -0.00041835, 0.00025630, 0.00042046, -0.00000114, 0.00000000],
+		[-6.27316718, -0.00041830, 0.00025626, 0.00042041, -0.00000114, 0.00000000],
+		[-6.27316732, -0.00041824, 0.00025623, 0.00042035, -0.00000114, 0.00000000],
+		[-6.27316745, -0.00041818, 0.00025619, 0.00042029, -0.00000114, 0.00000000],
+		[-6.27316759, -0.00041813, 0.00025616, 0.00042023, -0.00000114, 0.00000000],
+		[-6.27316772, -0.00041807, 0.00025612, 0.00042018, -0.00000114, 0.00000000],
+		[-6.27316786, -0.00041801, 0.00025609, 0.00042012, -0.00000114, 0.00000000],
+		[-6.27316799, -0.00041796, 0.00025606, 0.00042006, -0.00000114, 0.00000000],
+		[-6.27316813, -0.00041790, 0.00025602, 0.00042001, -0.00000114, 0.00000000],
+		[-6.27316826, -0.00041784, 0.00025599, 0.00041995, -0.00000114, 0.00000000],
+		[-6.27316840, -0.00041779, 0.00025595, 0.00041989, -0.00000114, 0.00000000],
+		[-6.27316853, -0.00041773, 0.00025592, 0.00041984, -0.00000114, 0.00000000],
+		[-6.27316867, -0.00041768, 0.00025588, 0.00041978, -0.00000114, 0.00000000],
+		[-6.27316880, -0.00041762, 0.00025585, 0.00041972, -0.00000114, 0.00000000],
+		[-6.27316894, -0.00041756, 0.00025581, 0.00041967, -0.00000114, 0.00000000],
+		[-6.27316907, -0.00041751, 0.00025578, 0.00041961, -0.00000114, 0.00000000],
+		[-6.27316921, -0.00041745, 0.00025574, 0.00041955, -0.00000114, 0.00000000],
+		[-6.27316934, -0.00041739, 0.00025571, 0.00041950, -0.00000114, 0.00000000],
+		[-6.27316948, -0.00041734, 0.00025568, 0.00041944, -0.00000114, 0.00000000],
+		[-6.27316961, -0.00041728, 0.00025564, 0.00041939, -0.00000114, 0.00000000],
+		[-6.27316974, -0.00041722, 0.00025561, 0.00041933, -0.00000114, 0.00000000],
+		[-6.27316988, -0.00041717, 0.00025557, 0.00041927, -0.00000114, 0.00000000],
+		[-6.27317001, -0.00041711, 0.00025554, 0.00041922, -0.00000114, 0.00000000],
+		[-6.27317015, -0.00041706, 0.00025550, 0.00041916, -0.00000114, 0.00000000],
+		[-6.27317028, -0.00041700, 0.00025547, 0.00041910, -0.00000114, 0.00000000],
+		[-6.27317042, -0.00041694, 0.00025543, 0.00041905, -0.00000114, 0.00000000],
+		[-6.27317055, -0.00041689, 0.00025540, 0.00041899, -0.00000114, 0.00000000],
+		[-6.27317069, -0.00041683, 0.00025537, 0.00041893, -0.00000114, 0.00000000],
+		[-6.27317082, -0.00041678, 0.00025533, 0.00041888, -0.00000114, 0.00000000],
+		[-6.27317095, -0.00041672, 0.00025530, 0.00041882, -0.00000114, 0.00000000],
+		[-6.27317109, -0.00041666, 0.00025526, 0.00041876, -0.00000114, 0.00000000],
+		[-6.27317122, -0.00041661, 0.00025523, 0.00041871, -0.00000114, 0.00000000],
+		[-6.27317136, -0.00041655, 0.00025519, 0.00041865, -0.00000114, 0.00000000],
+		[-6.27317149, -0.00041649, 0.00025516, 0.00041860, -0.00000114, 0.00000000],
+		[-6.27317163, -0.00041644, 0.00025512, 0.00041854, -0.00000114, 0.00000000],
+		[-6.27317176, -0.00041638, 0.00025509, 0.00041848, -0.00000114, 0.00000000],
+		[-6.27317189, -0.00041633, 0.00025506, 0.00041843, -0.00000114, 0.00000000],
+		[-6.27317203, -0.00041627, 0.00025502, 0.00041837, -0.00000114, 0.00000000],
+		[-6.27317216, -0.00041621, 0.00025499, 0.00041831, -0.00000114, 0.00000000],
+		[-6.27317230, -0.00041616, 0.00025495, 0.00041826, -0.00000114, 0.00000000],
+		[-6.27317243, -0.00041610, 0.00025492, 0.00041820, -0.00000114, 0.00000000],
+		[-6.27317256, -0.00041605, 0.00025488, 0.00041814, -0.00000114, 0.00000000],
+		[-6.27317270, -0.00041599, 0.00025485, 0.00041809, -0.00000114, 0.00000000],
+		[-6.27317283, -0.00041594, 0.00025482, 0.00041803, -0.00000114, 0.00000000],
+		[-6.27317297, -0.00041588, 0.00025478, 0.00041798, -0.00000114, 0.00000000],
+		[-6.27317310, -0.00041582, 0.00025475, 0.00041792, -0.00000115, 0.00000000],
+		[-6.27317323, -0.00041577, 0.00025471, 0.00041786, -0.00000115, 0.00000000],
+		[-6.27317337, -0.00041571, 0.00025468, 0.00041781, -0.00000115, 0.00000000],
+		[-6.27317350, -0.00041566, 0.00025465, 0.00041775, -0.00000115, 0.00000000],
+		[-6.27317363, -0.00041560, 0.00025461, 0.00041770, -0.00000115, 0.00000000],
+		[-6.27317377, -0.00041554, 0.00025458, 0.00041764, -0.00000115, 0.00000000],
+		[-6.27317390, -0.00041549, 0.00025454, 0.00041758, -0.00000115, 0.00000000],
+		[-6.27317403, -0.00041543, 0.00025451, 0.00041753, -0.00000115, 0.00000000],
+		[-6.27317417, -0.00041538, 0.00025447, 0.00041747, -0.00000115, 0.00000000],
+		[-6.27317430, -0.00041532, 0.00025444, 0.00041742, -0.00000115, 0.00000000],
+		[-6.27317443, -0.00041527, 0.00025441, 0.00041736, -0.00000115, 0.00000000],
+		[-6.27317457, -0.00041521, 0.00025437, 0.00041730, -0.00000115, 0.00000000],
+		[-6.27317470, -0.00041515, 0.00025434, 0.00041725, -0.00000115, 0.00000000],
+		[-6.27317483, -0.00041510, 0.00025430, 0.00041719, -0.00000115, 0.00000000],
+		[-6.27317497, -0.00041504, 0.00025427, 0.00041714, -0.00000115, 0.00000000],
+		[-6.27317510, -0.00041499, 0.00025424, 0.00041708, -0.00000115, 0.00000000],
+		[-6.27317523, -0.00041493, 0.00025420, 0.00041702, -0.00000115, 0.00000000],
+		[-6.27317537, -0.00041488, 0.00025417, 0.00041697, -0.00000115, 0.00000000],
+		[-6.27317550, -0.00041482, 0.00025413, 0.00041691, -0.00000115, 0.00000000],
+		[-6.27317563, -0.00041476, 0.00025410, 0.00041686, -0.00000115, 0.00000000],
+		[-6.27317577, -0.00041471, 0.00025406, 0.00041680, -0.00000115, 0.00000000],
+		[-6.27317590, -0.00041465, 0.00025403, 0.00041674, -0.00000115, 0.00000000],
+		[-6.27317603, -0.00041460, 0.00025400, 0.00041669, -0.00000115, 0.00000000],
+		[-6.27317616, -0.00041454, 0.00025396, 0.00041663, -0.00000115, 0.00000000],
+		[-6.27317630, -0.00041449, 0.00025393, 0.00041658, -0.00000115, 0.00000000],
+		[-6.27317643, -0.00041443, 0.00025389, 0.00041652, -0.00000115, 0.00000000],
+		[-6.27317656, -0.00041438, 0.00025386, 0.00041647, -0.00000115, 0.00000000],
+		[-6.27317670, -0.00041432, 0.00025383, 0.00041641, -0.00000115, 0.00000000],
+		[-6.27317683, -0.00041427, 0.00025379, 0.00041635, -0.00000115, 0.00000000],
+		[-6.27317696, -0.00041421, 0.00025376, 0.00041630, -0.00000115, 0.00000000],
+		[-6.27317709, -0.00041415, 0.00025372, 0.00041624, -0.00000115, 0.00000000],
+		[-6.27317723, -0.00041410, 0.00025369, 0.00041619, -0.00000115, 0.00000000],
+		[-6.27317736, -0.00041404, 0.00025366, 0.00041613, -0.00000115, 0.00000000],
+		[-6.27317749, -0.00041399, 0.00025362, 0.00041608, -0.00000115, 0.00000000],
+		[-6.27317762, -0.00041393, 0.00025359, 0.00041602, -0.00000115, 0.00000000],
+		[-6.27317776, -0.00041388, 0.00025355, 0.00041596, -0.00000115, 0.00000000],
+		[-6.27317789, -0.00041382, 0.00025352, 0.00041591, -0.00000115, 0.00000000],
+		[-6.27317802, -0.00041377, 0.00025349, 0.00041585, -0.00000115, 0.00000000],
+		[-6.27317815, -0.00041371, 0.00025345, 0.00041580, -0.00000115, 0.00000000],
+		[-6.27317829, -0.00041366, 0.00025342, 0.00041574, -0.00000115, 0.00000000],
+		[-6.27317842, -0.00041360, 0.00025339, 0.00041569, -0.00000115, 0.00000000],
+		[-6.27317855, -0.00041355, 0.00025335, 0.00041563, -0.00000115, 0.00000000],
+		[-6.27317868, -0.00041349, 0.00025332, 0.00041558, -0.00000115, 0.00000000],
+		[-6.27317882, -0.00041344, 0.00025328, 0.00041552, -0.00000115, 0.00000000],
+		[-6.27317895, -0.00041338, 0.00025325, 0.00041546, -0.00000115, 0.00000000],
+		[-6.27317908, -0.00041333, 0.00025322, 0.00041541, -0.00000115, 0.00000000],
+		[-6.27317921, -0.00041327, 0.00025318, 0.00041535, -0.00000115, 0.00000000],
+		[-6.27317934, -0.00041321, 0.00025315, 0.00041530, -0.00000115, 0.00000000],
+		[-6.27317948, -0.00041316, 0.00025311, 0.00041524, -0.00000115, 0.00000000],
+		[-6.27317961, -0.00041310, 0.00025308, 0.00041519, -0.00000115, 0.00000000],
+		[-6.27317974, -0.00041305, 0.00025305, 0.00041513, -0.00000115, 0.00000000],
+		[-6.27317987, -0.00041299, 0.00025301, 0.00041508, -0.00000115, 0.00000000],
+		[-6.27318000, -0.00041294, 0.00025298, 0.00041502, -0.00000115, 0.00000000],
+		[-6.27318014, -0.00041288, 0.00025295, 0.00041497, -0.00000115, 0.00000000],
+		[-6.27318027, -0.00041283, 0.00025291, 0.00041491, -0.00000115, 0.00000000],
+		[-6.27318040, -0.00041277, 0.00025288, 0.00041485, -0.00000115, 0.00000000],
+		[-6.27318053, -0.00041272, 0.00025284, 0.00041480, -0.00000115, 0.00000000],
+		[-6.27318066, -0.00041266, 0.00025281, 0.00041474, -0.00000115, 0.00000000],
+		[-6.27318079, -0.00041261, 0.00025278, 0.00041469, -0.00000115, 0.00000000],
+		[-6.27318093, -0.00041255, 0.00025274, 0.00041463, -0.00000115, 0.00000000],
+		[-6.27318106, -0.00041250, 0.00025271, 0.00041458, -0.00000115, 0.00000000],
+		[-6.27318119, -0.00041244, 0.00025268, 0.00041452, -0.00000115, 0.00000000],
+		[-6.27318132, -0.00041239, 0.00025264, 0.00041447, -0.00000115, 0.00000000],
+		[-6.27318145, -0.00041233, 0.00025261, 0.00041441, -0.00000115, 0.00000000],
+		[-6.27318158, -0.00041228, 0.00025258, 0.00041436, -0.00000115, 0.00000000],
+		[-6.27318171, -0.00041222, 0.00025254, 0.00041430, -0.00000115, 0.00000000],
+		[-6.27318185, -0.00041217, 0.00025251, 0.00041425, -0.00000115, 0.00000000],
+		[-6.27318198, -0.00041211, 0.00025247, 0.00041419, -0.00000115, 0.00000000],
+		[-6.27318211, -0.00041206, 0.00025244, 0.00041414, -0.00000115, 0.00000000],
+		[-6.27318224, -0.00041200, 0.00025241, 0.00041408, -0.00000115, 0.00000000],
+		[-6.27318237, -0.00041195, 0.00025237, 0.00041403, -0.00000115, 0.00000000],
+		[-6.27318250, -0.00041190, 0.00025234, 0.00041397, -0.00000115, 0.00000000],
+		[-6.27318263, -0.00041184, 0.00025231, 0.00041392, -0.00000115, 0.00000000],
+		[-6.27318276, -0.00041179, 0.00025227, 0.00041386, -0.00000115, 0.00000000],
+		[-6.27318290, -0.00041173, 0.00025224, 0.00041381, -0.00000115, 0.00000000],
+		[-6.27318303, -0.00041168, 0.00025221, 0.00041375, -0.00000115, 0.00000000],
+		[-6.27318316, -0.00041162, 0.00025217, 0.00041370, -0.00000115, 0.00000000],
+		[-6.27318329, -0.00041157, 0.00025214, 0.00041364, -0.00000115, 0.00000000],
+		[-6.27318342, -0.00041151, 0.00025210, 0.00041359, -0.00000115, 0.00000000],
+		[-6.27318355, -0.00041146, 0.00025207, 0.00041353, -0.00000115, 0.00000000],
+		[-6.27318368, -0.00041140, 0.00025204, 0.00041348, -0.00000115, 0.00000000],
+		[-6.27318381, -0.00041135, 0.00025200, 0.00041342, -0.00000115, 0.00000000],
+		[-6.27318394, -0.00041129, 0.00025197, 0.00041337, -0.00000115, 0.00000000],
+		[-6.27318407, -0.00041124, 0.00025194, 0.00041331, -0.00000115, 0.00000000],
+		[-6.27318420, -0.00041118, 0.00025190, 0.00041326, -0.00000115, 0.00000000],
+		[-6.27318434, -0.00041113, 0.00025187, 0.00041320, -0.00000115, 0.00000000],
+		[-6.27318447, -0.00041107, 0.00025184, 0.00041315, -0.00000115, 0.00000000],
+		[-6.27318460, -0.00041102, 0.00025180, 0.00041309, -0.00000115, 0.00000000],
+		[-6.27318473, -0.00041097, 0.00025177, 0.00041304, -0.00000115, 0.00000000],
+		[-6.27318486, -0.00041091, 0.00025174, 0.00041298, -0.00000115, 0.00000000],
+		[-6.27318499, -0.00041086, 0.00025170, 0.00041293, -0.00000115, 0.00000000],
+		[-6.27318512, -0.00041080, 0.00025167, 0.00041287, -0.00000115, 0.00000000],
+		[-6.27318525, -0.00041075, 0.00025164, 0.00041282, -0.00000115, 0.00000000],
+		[-6.27318538, -0.00041069, 0.00025160, 0.00041276, -0.00000115, 0.00000000],
+		[-6.27318551, -0.00041064, 0.00025157, 0.00041271, -0.00000115, 0.00000000],
+		[-6.27318564, -0.00041058, 0.00025154, 0.00041265, -0.00000115, 0.00000000],
+		[-6.27318577, -0.00041053, 0.00025150, 0.00041260, -0.00000115, 0.00000000],
+		[-6.27318590, -0.00041048, 0.00025147, 0.00041254, -0.00000115, 0.00000000],
+		[-6.27318603, -0.00041042, 0.00025144, 0.00041249, -0.00000115, 0.00000000],
+		[-6.27318616, -0.00041037, 0.00025140, 0.00041243, -0.00000115, 0.00000000],
+		[-6.27318629, -0.00041031, 0.00025137, 0.00041238, -0.00000115, 0.00000000],
+		[-6.27318642, -0.00041026, 0.00025134, 0.00041233, -0.00000115, 0.00000000],
+		[-6.27318655, -0.00041020, 0.00025130, 0.00041227, -0.00000115, 0.00000000],
+		[-6.27318668, -0.00041015, 0.00025127, 0.00041222, -0.00000115, 0.00000000],
+		[-6.27318681, -0.00041009, 0.00025124, 0.00041216, -0.00000115, 0.00000000],
+		[-6.27318694, -0.00041004, 0.00025120, 0.00041211, -0.00000115, 0.00000000],
+		[-6.27318707, -0.00040999, 0.00025117, 0.00041205, -0.00000115, 0.00000000],
+		[-6.27318720, -0.00040993, 0.00025114, 0.00041200, -0.00000115, 0.00000000],
+		[-6.27318733, -0.00040988, 0.00025110, 0.00041194, -0.00000115, 0.00000000],
+		[-6.27318746, -0.00040982, 0.00025107, 0.00041189, -0.00000115, 0.00000000],
+		[-6.27318759, -0.00040977, 0.00025104, 0.00041183, -0.00000115, 0.00000000],
+		[-6.27318772, -0.00040971, 0.00025100, 0.00041178, -0.00000115, 0.00000000],
+		[-6.27318785, -0.00040966, 0.00025097, 0.00041173, -0.00000115, 0.00000000],
+		[-6.27318798, -0.00040961, 0.00025094, 0.00041167, -0.00000115, 0.00000000],
+		[-6.27318811, -0.00040955, 0.00025090, 0.00041162, -0.00000115, 0.00000000],
+		[-6.27318824, -0.00040950, 0.00025087, 0.00041156, -0.00000115, 0.00000000],
+		[-6.27318837, -0.00040944, 0.00025084, 0.00041151, -0.00000115, 0.00000000],
+		[-6.27318850, -0.00040939, 0.00025080, 0.00041145, -0.00000115, 0.00000000],
+		[-6.27318863, -0.00040934, 0.00025077, 0.00041140, -0.00000115, 0.00000000],
+		[-6.27318876, -0.00040928, 0.00025074, 0.00041134, -0.00000115, 0.00000000],
+		[-6.27318889, -0.00040923, 0.00025070, 0.00041129, -0.00000115, 0.00000000],
+		[-6.27318902, -0.00040917, 0.00025067, 0.00041124, -0.00000115, 0.00000000],
+		[-6.27318915, -0.00040912, 0.00025064, 0.00041118, -0.00000115, 0.00000000],
+		[-6.27318928, -0.00040906, 0.00025060, 0.00041113, -0.00000115, 0.00000000],
+		[-6.27318941, -0.00040901, 0.00025057, 0.00041107, -0.00000115, 0.00000000],
+		[-6.27318954, -0.00040896, 0.00025054, 0.00041102, -0.00000115, 0.00000000],
+		[-6.27318967, -0.00040890, 0.00025051, 0.00041096, -0.00000115, 0.00000000],
+		[-6.27318979, -0.00040885, 0.00025047, 0.00041091, -0.00000115, 0.00000000],
+		[-6.27318992, -0.00040879, 0.00025044, 0.00041086, -0.00000115, 0.00000000],
+		[-6.27319005, -0.00040874, 0.00025041, 0.00041080, -0.00000115, 0.00000000],
+		[-6.27319018, -0.00040869, 0.00025037, 0.00041075, -0.00000115, 0.00000000],
+		[-6.27319031, -0.00040863, 0.00025034, 0.00041069, -0.00000115, 0.00000000],
+		[-6.27319044, -0.00040858, 0.00025031, 0.00041064, -0.00000115, 0.00000000],
+		[-6.27319057, -0.00040852, 0.00025027, 0.00041058, -0.00000115, 0.00000000],
+		[-6.27319070, -0.00040847, 0.00025024, 0.00041053, -0.00000115, 0.00000000],
+		[-6.27319083, -0.00040842, 0.00025021, 0.00041048, -0.00000115, 0.00000000],
+		[-6.27319096, -0.00040836, 0.00025017, 0.00041042, -0.00000115, 0.00000000],
+		[-6.27319109, -0.00040831, 0.00025014, 0.00041037, -0.00000115, 0.00000000],
+		[-6.27319121, -0.00040826, 0.00025011, 0.00041031, -0.00000115, 0.00000000],
+		[-6.27319134, -0.00040820, 0.00025008, 0.00041026, -0.00000115, 0.00000000],
+		[-6.27319147, -0.00040815, 0.00025004, 0.00041021, -0.00000115, 0.00000000],
+		[-6.27319160, -0.00040809, 0.00025001, 0.00041015, -0.00000115, 0.00000000],
+		[-6.27319173, -0.00040804, 0.00024998, 0.00041010, -0.00000115, 0.00000000],
+		[-6.27319186, -0.00040799, 0.00024994, 0.00041004, -0.00000115, 0.00000000],
+		[-6.27319199, -0.00040793, 0.00024991, 0.00040999, -0.00000115, 0.00000000],
+		[-6.27319212, -0.00040788, 0.00024988, 0.00040993, -0.00000115, 0.00000000],
+		[-6.27319224, -0.00040783, 0.00024985, 0.00040988, -0.00000115, 0.00000000],
+		[-6.27319237, -0.00040777, 0.00024981, 0.00040983, -0.00000115, 0.00000000],
+		[-6.27319250, -0.00040772, 0.00024978, 0.00040977, -0.00000115, 0.00000000],
+		[-6.27319263, -0.00040766, 0.00024975, 0.00040972, -0.00000115, 0.00000000],
+		[-6.27319276, -0.00040761, 0.00024971, 0.00040966, -0.00000115, 0.00000000],
+		[-6.27319289, -0.00040756, 0.00024968, 0.00040961, -0.00000115, 0.00000000],
+		[-6.27319302, -0.00040750, 0.00024965, 0.00040956, -0.00000115, 0.00000000],
+		[-6.27319314, -0.00040745, 0.00024961, 0.00040950, -0.00000115, 0.00000000],
+		[-6.27319327, -0.00040740, 0.00024958, 0.00040945, -0.00000115, 0.00000000],
+		[-6.27319340, -0.00040734, 0.00024955, 0.00040940, -0.00000115, 0.00000000],
+		[-6.27319353, -0.00040729, 0.00024952, 0.00040934, -0.00000115, 0.00000000],
+		[-6.27319366, -0.00040724, 0.00024948, 0.00040929, -0.00000115, 0.00000000],
+		[-6.27319379, -0.00040718, 0.00024945, 0.00040923, -0.00000115, 0.00000000],
+		[-6.27319391, -0.00040713, 0.00024942, 0.00040918, -0.00000115, 0.00000000],
+		[-6.27319404, -0.00040707, 0.00024938, 0.00040913, -0.00000115, 0.00000000],
+		[-6.27319417, -0.00040702, 0.00024935, 0.00040907, -0.00000115, 0.00000000],
+		[-6.27319430, -0.00040697, 0.00024932, 0.00040902, -0.00000115, 0.00000000],
+		[-6.27319443, -0.00040691, 0.00024929, 0.00040896, -0.00000115, 0.00000000],
+		[-6.27319455, -0.00040686, 0.00024925, 0.00040891, -0.00000115, 0.00000000],
+		[-6.27319468, -0.00040681, 0.00024922, 0.00040886, -0.00000115, 0.00000000],
+		[-6.27319481, -0.00040675, 0.00024919, 0.00040880, -0.00000115, 0.00000000],
+		[-6.27319494, -0.00040670, 0.00024916, 0.00040875, -0.00000115, 0.00000000],
+		[-6.27319507, -0.00040665, 0.00024912, 0.00040870, -0.00000115, 0.00000000],
+		[-6.27319519, -0.00040659, 0.00024909, 0.00040864, -0.00000115, 0.00000000],
+		[-6.27319532, -0.00040654, 0.00024906, 0.00040859, -0.00000115, 0.00000000],
+		[-6.27319545, -0.00040649, 0.00024902, 0.00040854, -0.00000115, 0.00000000],
+		[-6.27319558, -0.00040643, 0.00024899, 0.00040848, -0.00000115, 0.00000000],
+		[-6.27319571, -0.00040638, 0.00024896, 0.00040843, -0.00000115, 0.00000000],
+		[-6.27319583, -0.00040633, 0.00024893, 0.00040837, -0.00000115, 0.00000000],
+		[-6.27319596, -0.00040627, 0.00024889, 0.00040832, -0.00000115, 0.00000000],
+		[-6.27319609, -0.00040622, 0.00024886, 0.00040827, -0.00000115, 0.00000000],
+		[-6.27319622, -0.00040617, 0.00024883, 0.00040821, -0.00000115, 0.00000000],
+		[-6.27319634, -0.00040611, 0.00024880, 0.00040816, -0.00000115, 0.00000000],
+		[-6.27319647, -0.00040606, 0.00024876, 0.00040811, -0.00000115, 0.00000000],
+		[-6.27319660, -0.00040601, 0.00024873, 0.00040805, -0.00000115, 0.00000000],
+		[-6.27319673, -0.00040595, 0.00024870, 0.00040800, -0.00000115, 0.00000000],
+		[-6.27319685, -0.00040590, 0.00024867, 0.00040795, -0.00000115, 0.00000000],
+		[-6.27319698, -0.00040585, 0.00024863, 0.00040789, -0.00000115, 0.00000000],
+		[-6.27319711, -0.00040579, 0.00024860, 0.00040784, -0.00000115, 0.00000000],
+		[-6.27319724, -0.00040574, 0.00024857, 0.00040779, -0.00000115, 0.00000000],
+		[-6.27319736, -0.00040569, 0.00024853, 0.00040773, -0.00000115, 0.00000000],
+		[-6.27319749, -0.00040563, 0.00024850, 0.00040768, -0.00000115, 0.00000000],
+		[-6.27319762, -0.00040558, 0.00024847, 0.00040763, -0.00000115, 0.00000000],
+		[-6.27319774, -0.00040553, 0.00024844, 0.00040757, -0.00000115, 0.00000000],
+		[-6.27319787, -0.00040547, 0.00024840, 0.00040752, -0.00000115, 0.00000000],
+		[-6.27319800, -0.00040542, 0.00024837, 0.00040746, -0.00000115, 0.00000000],
+		[-6.27319813, -0.00040537, 0.00024834, 0.00040741, -0.00000115, 0.00000000],
+		[-6.27319825, -0.00040532, 0.00024831, 0.00040736, -0.00000115, 0.00000000],
+		[-6.27319838, -0.00040526, 0.00024827, 0.00040730, -0.00000115, 0.00000000],
+		[-6.27319851, -0.00040521, 0.00024824, 0.00040725, -0.00000115, 0.00000000],
+		[-6.27319863, -0.00040516, 0.00024821, 0.00040720, -0.00000115, 0.00000000],
+		[-6.27319876, -0.00040510, 0.00024818, 0.00040714, -0.00000115, 0.00000000],
+		[-6.27319889, -0.00040505, 0.00024814, 0.00040709, -0.00000115, 0.00000000],
+		[-6.27319901, -0.00040500, 0.00024811, 0.00040704, -0.00000115, 0.00000000],
+		[-6.27319914, -0.00040494, 0.00024808, 0.00040699, -0.00000115, 0.00000000],
+		[-6.27319927, -0.00040489, 0.00024805, 0.00040693, -0.00000115, 0.00000000],
+		[-6.27319939, -0.00040484, 0.00024801, 0.00040688, -0.00000115, 0.00000000],
+		[-6.27319952, -0.00040479, 0.00024798, 0.00040683, -0.00000115, 0.00000000],
+		[-6.27319965, -0.00040473, 0.00024795, 0.00040677, -0.00000115, 0.00000000],
+		[-6.27319977, -0.00040468, 0.00024792, 0.00040672, -0.00000115, 0.00000000],
+		[-6.27319990, -0.00040463, 0.00024788, 0.00040667, -0.00000115, 0.00000000],
+		[-6.27320003, -0.00040457, 0.00024785, 0.00040661, -0.00000115, 0.00000000],
+		[-6.27320015, -0.00040452, 0.00024782, 0.00040656, -0.00000115, 0.00000000],
+		[-6.27320028, -0.00040447, 0.00024779, 0.00040651, -0.00000115, 0.00000000],
+		[-6.27320041, -0.00040442, 0.00024776, 0.00040645, -0.00000115, 0.00000000],
+		[-6.27320053, -0.00040436, 0.00024772, 0.00040640, -0.00000115, 0.00000000],
+		[-6.27320066, -0.00040431, 0.00024769, 0.00040635, -0.00000115, 0.00000000],
+		[-6.27320079, -0.00040426, 0.00024766, 0.00040629, -0.00000115, 0.00000000],
+		[-6.27320091, -0.00040420, 0.00024763, 0.00040624, -0.00000115, 0.00000000],
+		[-6.27320104, -0.00040415, 0.00024759, 0.00040619, -0.00000115, 0.00000000],
+		[-6.27320117, -0.00040410, 0.00024756, 0.00040613, -0.00000115, 0.00000000],
+		[-6.27320129, -0.00040405, 0.00024753, 0.00040608, -0.00000115, 0.00000000],
+		[-6.27320142, -0.00040399, 0.00024750, 0.00040603, -0.00000115, 0.00000000],
+		[-6.27320154, -0.00040394, 0.00024746, 0.00040598, -0.00000115, 0.00000000],
+		[-6.27320167, -0.00040389, 0.00024743, 0.00040592, -0.00000115, 0.00000000],
+		[-6.27320180, -0.00040383, 0.00024740, 0.00040587, -0.00000115, 0.00000000],
+		[-6.27320192, -0.00040378, 0.00024737, 0.00040582, -0.00000115, 0.00000000],
+		[-6.27320205, -0.00040373, 0.00024733, 0.00040576, -0.00000115, 0.00000000],
+		[-6.27320217, -0.00040368, 0.00024730, 0.00040571, -0.00000115, 0.00000000],
+		[-6.27320230, -0.00040362, 0.00024727, 0.00040566, -0.00000115, 0.00000000],
+		[-6.27320243, -0.00040357, 0.00024724, 0.00040561, -0.00000115, 0.00000000],
+		[-6.27320255, -0.00040352, 0.00024721, 0.00040555, -0.00000115, 0.00000000],
+		[-6.27320268, -0.00040347, 0.00024717, 0.00040550, -0.00000115, 0.00000000],
+		[-6.27320280, -0.00040341, 0.00024714, 0.00040545, -0.00000115, 0.00000000],
+		[-6.27320293, -0.00040336, 0.00024711, 0.00040539, -0.00000115, 0.00000000],
+		[-6.27320306, -0.00040331, 0.00024708, 0.00040534, -0.00000115, 0.00000000],
+		[-6.27320318, -0.00040326, 0.00024704, 0.00040529, -0.00000115, 0.00000000],
+		[-6.27320331, -0.00040320, 0.00024701, 0.00040524, -0.00000115, 0.00000000],
+		[-6.27320343, -0.00040315, 0.00024698, 0.00040518, -0.00000115, 0.00000000],
+		[-6.27320356, -0.00040310, 0.00024695, 0.00040513, -0.00000115, 0.00000000],
+		[-6.27320368, -0.00040305, 0.00024692, 0.00040508, -0.00000115, 0.00000000],
+		[-6.27320381, -0.00040299, 0.00024688, 0.00040502, -0.00000115, 0.00000000],
+		[-6.27320394, -0.00040294, 0.00024685, 0.00040497, -0.00000115, 0.00000000],
+		[-6.27320406, -0.00040289, 0.00024682, 0.00040492, -0.00000115, 0.00000000],
+		[-6.27320419, -0.00040284, 0.00024679, 0.00040487, -0.00000115, 0.00000000],
+		[-6.27320431, -0.00040278, 0.00024676, 0.00040481, -0.00000115, 0.00000000],
+		[-6.27320444, -0.00040273, 0.00024672, 0.00040476, -0.00000115, 0.00000000],
+		[-6.27320456, -0.00040268, 0.00024669, 0.00040471, -0.00000115, 0.00000000],
+		[-6.27320469, -0.00040263, 0.00024666, 0.00040466, -0.00000115, 0.00000000],
+		[-6.27320481, -0.00040257, 0.00024663, 0.00040460, -0.00000115, 0.00000000],
+		[-6.27320494, -0.00040252, 0.00024659, 0.00040455, -0.00000115, 0.00000000],
+		[-6.27320506, -0.00040247, 0.00024656, 0.00040450, -0.00000115, 0.00000000],
+		[-6.27320519, -0.00040242, 0.00024653, 0.00040445, -0.00000115, 0.00000000],
+		[-6.27320532, -0.00040237, 0.00024650, 0.00040439, -0.00000115, 0.00000000],
+		[-6.27320544, -0.00040231, 0.00024647, 0.00040434, -0.00000115, 0.00000000],
+		[-6.27320557, -0.00040226, 0.00024643, 0.00040429, -0.00000115, 0.00000000],
+		[-6.27320569, -0.00040221, 0.00024640, 0.00040424, -0.00000115, 0.00000000],
+		[-6.27320582, -0.00040216, 0.00024637, 0.00040418, -0.00000115, 0.00000000],
+		[-6.27320594, -0.00040210, 0.00024634, 0.00040413, -0.00000115, 0.00000000],
+		[-6.27320607, -0.00040205, 0.00024631, 0.00040408, -0.00000115, 0.00000000],
+		[-6.27320619, -0.00040200, 0.00024627, 0.00040403, -0.00000115, 0.00000000],
+		[-6.27320632, -0.00040195, 0.00024624, 0.00040397, -0.00000115, 0.00000000],
+		[-6.27320644, -0.00040190, 0.00024621, 0.00040392, -0.00000115, 0.00000000],
+		[-6.27320657, -0.00040184, 0.00024618, 0.00040387, -0.00000115, 0.00000000],
+		[-6.27320669, -0.00040179, 0.00024615, 0.00040382, -0.00000115, 0.00000000],
+		[-6.27320682, -0.00040174, 0.00024611, 0.00040376, -0.00000115, 0.00000000],
+		[-6.27320694, -0.00040169, 0.00024608, 0.00040371, -0.00000115, 0.00000000],
+		[-6.27320706, -0.00040163, 0.00024605, 0.00040366, -0.00000115, 0.00000000],
+		[-6.27320719, -0.00040158, 0.00024602, 0.00040361, -0.00000115, 0.00000000],
+		[-6.27320731, -0.00040153, 0.00024599, 0.00040355, -0.00000115, 0.00000000],
+		[-6.27320744, -0.00040148, 0.00024595, 0.00040350, -0.00000115, 0.00000000],
+		[-6.27320756, -0.00040143, 0.00024592, 0.00040345, -0.00000115, 0.00000000],
+		[-6.27320769, -0.00040137, 0.00024589, 0.00040340, -0.00000115, 0.00000000],
+		[-6.27320781, -0.00040132, 0.00024586, 0.00040334, -0.00000115, 0.00000000],
+		[-6.27320794, -0.00040127, 0.00024583, 0.00040329, -0.00000115, 0.00000000],
+		[-6.27320806, -0.00040122, 0.00024580, 0.00040324, -0.00000115, 0.00000000],
+		[-6.27320819, -0.00040117, 0.00024576, 0.00040319, -0.00000115, 0.00000000],
+		[-6.27320831, -0.00040111, 0.00024573, 0.00040313, -0.00000115, 0.00000000],
+		[-6.27320843, -0.00040106, 0.00024570, 0.00040308, -0.00000115, 0.00000000],
+		[-6.27320856, -0.00040101, 0.00024567, 0.00040303, -0.00000115, 0.00000000],
+		[-6.27320868, -0.00040096, 0.00024564, 0.00040298, -0.00000115, 0.00000000],
+		[-6.27320881, -0.00040091, 0.00024560, 0.00040293, -0.00000115, 0.00000000],
+		[-6.27320893, -0.00040085, 0.00024557, 0.00040287, -0.00000115, 0.00000000],
+		[-6.27320906, -0.00040080, 0.00024554, 0.00040282, -0.00000115, 0.00000000],
+		[-6.27320918, -0.00040075, 0.00024551, 0.00040277, -0.00000115, 0.00000000],
+		[-6.27320930, -0.00040070, 0.00024548, 0.00040272, -0.00000115, 0.00000000],
+		[-6.27320943, -0.00040065, 0.00024545, 0.00040267, -0.00000115, 0.00000000],
+		[-6.27320955, -0.00040059, 0.00024541, 0.00040261, -0.00000115, 0.00000000],
+		[-6.27320968, -0.00040054, 0.00024538, 0.00040256, -0.00000115, 0.00000000],
+		[-6.27320980, -0.00040049, 0.00024535, 0.00040251, -0.00000115, 0.00000000],
+		[-6.27320993, -0.00040044, 0.00024532, 0.00040246, -0.00000115, 0.00000000],
+		[-6.27321005, -0.00040039, 0.00024529, 0.00040240, -0.00000115, 0.00000000],
+		[-6.27321017, -0.00040034, 0.00024525, 0.00040235, -0.00000115, 0.00000000],
+		[-6.27321030, -0.00040028, 0.00024522, 0.00040230, -0.00000115, 0.00000000],
+		[-6.27321042, -0.00040023, 0.00024519, 0.00040225, -0.00000115, 0.00000000],
+		[-6.27321054, -0.00040018, 0.00024516, 0.00040220, -0.00000115, 0.00000000],
+		[-6.27321067, -0.00040013, 0.00024513, 0.00040214, -0.00000115, 0.00000000],
+		[-6.27321079, -0.00040008, 0.00024510, 0.00040209, -0.00000115, 0.00000000],
+		[-6.27321092, -0.00040003, 0.00024506, 0.00040204, -0.00000115, 0.00000000],
+		[-6.27321104, -0.00039997, 0.00024503, 0.00040199, -0.00000115, 0.00000000],
+		[-6.27321116, -0.00039992, 0.00024500, 0.00040194, -0.00000115, 0.00000000],
+		[-6.27321129, -0.00039987, 0.00024497, 0.00040189, -0.00000115, 0.00000000],
+		[-6.27321141, -0.00039982, 0.00024494, 0.00040183, -0.00000115, 0.00000000],
+		[-6.27321153, -0.00039977, 0.00024491, 0.00040178, -0.00000115, 0.00000000],
+		[-6.27321166, -0.00039972, 0.00024487, 0.00040173, -0.00000115, 0.00000000],
+		[-6.27321178, -0.00039966, 0.00024484, 0.00040168, -0.00000115, 0.00000000],
+		[-6.27321191, -0.00039961, 0.00024481, 0.00040163, -0.00000115, 0.00000000],
+		[-6.27321203, -0.00039956, 0.00024478, 0.00040157, -0.00000115, 0.00000000],
+		[-6.27321215, -0.00039951, 0.00024475, 0.00040152, -0.00000115, 0.00000000],
+		[-6.27321228, -0.00039946, 0.00024472, 0.00040147, -0.00000115, 0.00000000],
+		[-6.27321240, -0.00039941, 0.00024468, 0.00040142, -0.00000115, 0.00000000],
+		[-6.27321252, -0.00039935, 0.00024465, 0.00040137, -0.00000115, 0.00000000],
+		[-6.27321265, -0.00039930, 0.00024462, 0.00040131, -0.00000115, 0.00000000],
+		[-6.27321277, -0.00039925, 0.00024459, 0.00040126, -0.00000115, 0.00000000],
+		[-6.27321289, -0.00039920, 0.00024456, 0.00040121, -0.00000115, 0.00000000],
+		[-6.27321302, -0.00039915, 0.00024453, 0.00040116, -0.00000115, 0.00000000],
+		[-6.27321314, -0.00039910, 0.00024450, 0.00040111, -0.00000115, 0.00000000],
+		[-6.27321326, -0.00039905, 0.00024446, 0.00040106, -0.00000115, 0.00000000],
+		[-6.27321338, -0.00039899, 0.00024443, 0.00040100, -0.00000115, 0.00000000],
+		[-6.27321351, -0.00039894, 0.00024440, 0.00040095, -0.00000115, 0.00000000],
+		[-6.27321363, -0.00039889, 0.00024437, 0.00040090, -0.00000115, 0.00000000],
+		[-6.27321375, -0.00039884, 0.00024434, 0.00040085, -0.00000115, 0.00000000],
+		[-6.27321388, -0.00039879, 0.00024431, 0.00040080, -0.00000115, 0.00000000],
+		[-6.27321400, -0.00039874, 0.00024427, 0.00040075, -0.00000115, 0.00000000],
+		[-6.27321412, -0.00039869, 0.00024424, 0.00040069, -0.00000115, 0.00000000],
+		[-6.27321425, -0.00039863, 0.00024421, 0.00040064, -0.00000115, 0.00000000],
+		[-6.27321437, -0.00039858, 0.00024418, 0.00040059, -0.00000115, 0.00000000],
+		[-6.27321449, -0.00039853, 0.00024415, 0.00040054, -0.00000115, 0.00000000],
+		[-6.27321461, -0.00039848, 0.00024412, 0.00040049, -0.00000115, 0.00000000],
+		[-6.27321474, -0.00039843, 0.00024409, 0.00040044, -0.00000115, 0.00000000],
+		[-6.27321486, -0.00039838, 0.00024405, 0.00040039, -0.00000115, 0.00000000],
+		[-6.27321498, -0.00039833, 0.00024402, 0.00040033, -0.00000115, 0.00000000],
+		[-6.27321511, -0.00039828, 0.00024399, 0.00040028, -0.00000115, 0.00000000],
+		[-6.27321523, -0.00039822, 0.00024396, 0.00040023, -0.00000115, 0.00000000],
+		[-6.27321535, -0.00039817, 0.00024393, 0.00040018, -0.00000115, 0.00000000],
+		[-6.27321547, -0.00039812, 0.00024390, 0.00040013, -0.00000115, 0.00000000],
+		[-6.27321560, -0.00039807, 0.00024387, 0.00040008, -0.00000115, 0.00000000],
+		[-6.27321572, -0.00039802, 0.00024383, 0.00040002, -0.00000115, 0.00000000],
+		[-6.27321584, -0.00039797, 0.00024380, 0.00039997, -0.00000115, 0.00000000],
+		[-6.27321596, -0.00039792, 0.00024377, 0.00039992, -0.00000115, 0.00000000],
+		[-6.27321609, -0.00039787, 0.00024374, 0.00039987, -0.00000115, 0.00000000],
+		[-6.27321621, -0.00039781, 0.00024371, 0.00039982, -0.00000115, 0.00000000],
+		[-6.27321633, -0.00039776, 0.00024368, 0.00039977, -0.00000115, 0.00000000],
+		[-6.27321645, -0.00039771, 0.00024365, 0.00039972, -0.00000115, 0.00000000],
+		[-6.27321658, -0.00039766, 0.00024362, 0.00039966, -0.00000115, 0.00000000],
+		[-6.27321670, -0.00039761, 0.00024358, 0.00039961, -0.00000115, 0.00000000],
+		[-6.27321682, -0.00039756, 0.00024355, 0.00039956, -0.00000115, 0.00000000],
+		[-6.27321694, -0.00039751, 0.00024352, 0.00039951, -0.00000115, 0.00000000],
+		[-6.27321706, -0.00039746, 0.00024349, 0.00039946, -0.00000115, 0.00000000],
+		[-6.27321719, -0.00039741, 0.00024346, 0.00039941, -0.00000115, 0.00000000],
+		[-6.27321731, -0.00039736, 0.00024343, 0.00039936, -0.00000115, 0.00000000],
+		[-6.27321743, -0.00039730, 0.00024340, 0.00039931, -0.00000115, 0.00000000],
+		[-6.27321755, -0.00039725, 0.00024337, 0.00039925, -0.00000115, 0.00000000],
+		[-6.27321767, -0.00039720, 0.00024333, 0.00039920, -0.00000115, 0.00000000],
+		[-6.27321780, -0.00039715, 0.00024330, 0.00039915, -0.00000115, 0.00000000],
+		[-6.27321792, -0.00039710, 0.00024327, 0.00039910, -0.00000115, 0.00000000],
+		[-6.27321804, -0.00039705, 0.00024324, 0.00039905, -0.00000115, 0.00000000],
+		[-6.27321816, -0.00039700, 0.00024321, 0.00039900, -0.00000115, 0.00000000],
+		[-6.27321828, -0.00039695, 0.00024318, 0.00039895, -0.00000115, 0.00000000],
+		[-6.27321841, -0.00039690, 0.00024315, 0.00039890, -0.00000115, 0.00000000],
+		[-6.27321853, -0.00039685, 0.00024312, 0.00039884, -0.00000115, 0.00000000],
+		[-6.27321865, -0.00039680, 0.00024308, 0.00039879, -0.00000115, 0.00000000],
+		[-6.27321877, -0.00039674, 0.00024305, 0.00039874, -0.00000115, 0.00000000],
+		[-6.27321889, -0.00039669, 0.00024302, 0.00039869, -0.00000115, 0.00000000],
+		[-6.27321901, -0.00039664, 0.00024299, 0.00039864, -0.00000115, 0.00000000],
+		[-6.27321914, -0.00039659, 0.00024296, 0.00039859, -0.00000115, 0.00000000],
+		[-6.27321926, -0.00039654, 0.00024293, 0.00039854, -0.00000115, 0.00000000],
+		[-6.27321938, -0.00039649, 0.00024290, 0.00039849, -0.00000115, 0.00000000],
+		[-6.27321950, -0.00039644, 0.00024287, 0.00039844, -0.00000115, 0.00000000],
+		[-6.27321962, -0.00039639, 0.00024284, 0.00039839, -0.00000115, 0.00000000],
+		[-6.27321974, -0.00039634, 0.00024280, 0.00039833, -0.00000115, 0.00000000],
+		[-6.27321987, -0.00039629, 0.00024277, 0.00039828, -0.00000115, 0.00000000],
+		[-6.27321999, -0.00039624, 0.00024274, 0.00039823, -0.00000115, 0.00000000],
+		[-6.27322011, -0.00039619, 0.00024271, 0.00039818, -0.00000115, 0.00000000],
+		[-6.27322023, -0.00039613, 0.00024268, 0.00039813, -0.00000115, 0.00000000],
+		[-6.27322035, -0.00039608, 0.00024265, 0.00039808, -0.00000115, 0.00000000],
+		[-6.27322047, -0.00039603, 0.00024262, 0.00039803, -0.00000115, 0.00000000],
+		[-6.27322059, -0.00039598, 0.00024259, 0.00039798, -0.00000115, 0.00000000],
+		[-6.27322071, -0.00039593, 0.00024256, 0.00039793, -0.00000115, 0.00000000],
+		[-6.27322084, -0.00039588, 0.00024252, 0.00039788, -0.00000115, 0.00000000],
+		[-6.27322096, -0.00039583, 0.00024249, 0.00039782, -0.00000115, 0.00000000],
+		[-6.27322108, -0.00039578, 0.00024246, 0.00039777, -0.00000115, 0.00000000],
+		[-6.27322120, -0.00039573, 0.00024243, 0.00039772, -0.00000115, 0.00000000],
+		[-6.27322132, -0.00039568, 0.00024240, 0.00039767, -0.00000115, 0.00000000],
+		[-6.27322144, -0.00039563, 0.00024237, 0.00039762, -0.00000115, 0.00000000],
+		[-6.27322156, -0.00039558, 0.00024234, 0.00039757, -0.00000115, 0.00000000],
+		[-6.27322168, -0.00039553, 0.00024231, 0.00039752, -0.00000115, 0.00000000],
+		[-6.27322180, -0.00039548, 0.00024228, 0.00039747, -0.00000115, 0.00000000],
+		[-6.27322193, -0.00039543, 0.00024225, 0.00039742, -0.00000115, 0.00000000],
+		[-6.27322205, -0.00039538, 0.00024221, 0.00039737, -0.00000115, 0.00000000],
+		[-6.27322217, -0.00039533, 0.00024218, 0.00039732, -0.00000115, 0.00000000],
+		[-6.27322229, -0.00039528, 0.00024215, 0.00039727, -0.00000115, 0.00000000],
+		[-6.27322241, -0.00039522, 0.00024212, 0.00039722, -0.00000115, 0.00000000],
+		[-6.27322253, -0.00039517, 0.00024209, 0.00039716, -0.00000115, 0.00000000],
+		[-6.27322265, -0.00039512, 0.00024206, 0.00039711, -0.00000115, 0.00000000],
+		[-6.27322277, -0.00039507, 0.00024203, 0.00039706, -0.00000115, 0.00000000],
+		[-6.27322289, -0.00039502, 0.00024200, 0.00039701, -0.00000115, 0.00000000],
+		[-6.27322301, -0.00039497, 0.00024197, 0.00039696, -0.00000115, 0.00000000],
+		[-6.27322313, -0.00039492, 0.00024194, 0.00039691, -0.00000115, 0.00000000],
+		[-6.27322325, -0.00039487, 0.00024191, 0.00039686, -0.00000115, 0.00000000],
+		[-6.27322337, -0.00039482, 0.00024187, 0.00039681, -0.00000115, 0.00000000],
+		[-6.27322349, -0.00039477, 0.00024184, 0.00039676, -0.00000115, 0.00000000],
+		[-6.27322362, -0.00039472, 0.00024181, 0.00039671, -0.00000115, 0.00000000],
+		[-6.27322374, -0.00039467, 0.00024178, 0.00039666, -0.00000115, 0.00000000],
+		[-6.27322386, -0.00039462, 0.00024175, 0.00039661, -0.00000115, 0.00000000],
+		[-6.27322398, -0.00039457, 0.00024172, 0.00039656, -0.00000115, 0.00000000],
+		[-6.27322410, -0.00039452, 0.00024169, 0.00039651, -0.00000115, 0.00000000],
+		[-6.27322422, -0.00039447, 0.00024166, 0.00039646, -0.00000115, 0.00000000],
+		[-6.27322434, -0.00039442, 0.00024163, 0.00039641, -0.00000115, 0.00000000],
+		[-6.27322446, -0.00039437, 0.00024160, 0.00039635, -0.00000115, 0.00000000],
+		[-6.27322458, -0.00039432, 0.00024157, 0.00039630, -0.00000115, 0.00000000],
+		[-6.27322470, -0.00039427, 0.00024154, 0.00039625, -0.00000115, 0.00000000],
+		[-6.27322482, -0.00039422, 0.00024150, 0.00039620, -0.00000115, 0.00000000],
+		[-6.27322494, -0.00039417, 0.00024147, 0.00039615, -0.00000115, 0.00000000],
+		[-6.27322506, -0.00039412, 0.00024144, 0.00039610, -0.00000115, 0.00000000],
+		[-6.27322518, -0.00039407, 0.00024141, 0.00039605, -0.00000115, 0.00000000],
+		[-6.27322530, -0.00039402, 0.00024138, 0.00039600, -0.00000115, 0.00000000],
+		[-6.27322542, -0.00039397, 0.00024135, 0.00039595, -0.00000115, 0.00000000],
+		[-6.27322554, -0.00039392, 0.00024132, 0.00039590, -0.00000115, 0.00000000],
+		[-6.27322566, -0.00039387, 0.00024129, 0.00039585, -0.00000115, 0.00000000],
+		[-6.27322578, -0.00039382, 0.00024126, 0.00039580, -0.00000115, 0.00000000],
+		[-6.27322590, -0.00039377, 0.00024123, 0.00039575, -0.00000115, 0.00000000],
+		[-6.27322602, -0.00039372, 0.00024120, 0.00039570, -0.00000115, 0.00000000],
+		[-6.27322614, -0.00039367, 0.00024117, 0.00039565, -0.00000115, 0.00000000],
+		[-6.27322626, -0.00039362, 0.00024114, 0.00039560, -0.00000115, 0.00000000],
+		[-6.27322638, -0.00039357, 0.00024111, 0.00039555, -0.00000115, 0.00000000],
+		[-6.27322650, -0.00039352, 0.00024107, 0.00039550, -0.00000115, 0.00000000],
+		[-6.27322662, -0.00039347, 0.00024104, 0.00039545, -0.00000115, 0.00000000],
+		[-6.27322674, -0.00039342, 0.00024101, 0.00039540, -0.00000115, 0.00000000],
+		[-6.27322686, -0.00039337, 0.00024098, 0.00039535, -0.00000115, 0.00000000],
+		[-6.27322698, -0.00039332, 0.00024095, 0.00039530, -0.00000115, 0.00000000],
+		[-6.27322710, -0.00039327, 0.00024092, 0.00039525, -0.00000115, 0.00000000],
+		[-6.27322722, -0.00039322, 0.00024089, 0.00039520, -0.00000115, 0.00000000],
+		[-6.27322734, -0.00039317, 0.00024086, 0.00039515, -0.00000115, 0.00000000],
+		[-6.27322746, -0.00039312, 0.00024083, 0.00039510, -0.00000115, 0.00000000],
+		[-6.27322757, -0.00039307, 0.00024080, 0.00039505, -0.00000115, 0.00000000],
+		[-6.27322769, -0.00039302, 0.00024077, 0.00039500, -0.00000115, 0.00000000],
+		[-6.27322781, -0.00039297, 0.00024074, 0.00039495, -0.00000115, 0.00000000],
+		[-6.27322793, -0.00039292, 0.00024071, 0.00039490, -0.00000115, 0.00000000],
+		[-6.27322805, -0.00039287, 0.00024068, 0.00039485, -0.00000115, 0.00000000],
+		[-6.27322817, -0.00039282, 0.00024065, 0.00039480, -0.00000115, 0.00000000],
+		[-6.27322829, -0.00039277, 0.00024062, 0.00039475, -0.00000115, 0.00000000],
+		[-6.27322841, -0.00039272, 0.00024059, 0.00039470, -0.00000115, 0.00000000],
+		[-6.27322853, -0.00039267, 0.00024055, 0.00039465, -0.00000115, 0.00000000],
+		[-6.27322865, -0.00039262, 0.00024052, 0.00039460, -0.00000115, 0.00000000],
+		[-6.27322877, -0.00039257, 0.00024049, 0.00039455, -0.00000115, 0.00000000],
+		[-6.27322889, -0.00039252, 0.00024046, 0.00039450, -0.00000115, 0.00000000],
+		[-6.27322901, -0.00039247, 0.00024043, 0.00039445, -0.00000115, 0.00000000],
+		[-6.27322913, -0.00039242, 0.00024040, 0.00039440, -0.00000115, 0.00000000],
+		[-6.27322924, -0.00039237, 0.00024037, 0.00039435, -0.00000115, 0.00000000],
+		[-6.27322936, -0.00039232, 0.00024034, 0.00039430, -0.00000115, 0.00000000],
+		[-6.27322948, -0.00039227, 0.00024031, 0.00039425, -0.00000115, 0.00000000],
+		[-6.27322960, -0.00039222, 0.00024028, 0.00039420, -0.00000115, 0.00000000],
+		[-6.27322972, -0.00039217, 0.00024025, 0.00039415, -0.00000115, 0.00000000],
+		[-6.27322984, -0.00039212, 0.00024022, 0.00039410, -0.00000115, 0.00000000],
+		[-6.27322996, -0.00039207, 0.00024019, 0.00039405, -0.00000115, 0.00000000],
+		[-6.27323008, -0.00039202, 0.00024016, 0.00039400, -0.00000115, 0.00000000],
+		[-6.27323020, -0.00039197, 0.00024013, 0.00039395, -0.00000115, 0.00000000],
+		[-6.27323032, -0.00039192, 0.00024010, 0.00039390, -0.00000115, 0.00000000],
+		[-6.27323043, -0.00039187, 0.00024007, 0.00039385, -0.00000115, 0.00000000],
+		[-6.27323055, -0.00039182, 0.00024004, 0.00039380, -0.00000115, 0.00000000],
+		[-6.27323067, -0.00039177, 0.00024001, 0.00039375, -0.00000115, 0.00000000],
+		[-6.27323079, -0.00039172, 0.00023998, 0.00039370, -0.00000115, 0.00000000],
+		[-6.27323091, -0.00039167, 0.00023995, 0.00039365, -0.00000115, 0.00000000],
+		[-6.27323103, -0.00039162, 0.00023992, 0.00039360, -0.00000115, 0.00000000],
+		[-6.27323115, -0.00039158, 0.00023989, 0.00039355, -0.00000115, 0.00000000],
+		[-6.27323126, -0.00039153, 0.00023985, 0.00039350, -0.00000115, 0.00000000],
+		[-6.27323138, -0.00039148, 0.00023982, 0.00039345, -0.00000115, 0.00000000],
+		[-6.27323150, -0.00039143, 0.00023979, 0.00039340, -0.00000115, 0.00000000],
+		[-6.27323162, -0.00039138, 0.00023976, 0.00039335, -0.00000115, 0.00000000],
+		[-6.27323174, -0.00039133, 0.00023973, 0.00039330, -0.00000115, 0.00000000],
+		[-6.27323186, -0.00039128, 0.00023970, 0.00039325, -0.00000115, 0.00000000],
+		[-6.27323198, -0.00039123, 0.00023967, 0.00039320, -0.00000115, 0.00000000],
+		[-6.27323209, -0.00039118, 0.00023964, 0.00039315, -0.00000115, 0.00000000],
+		[-6.27323221, -0.00039113, 0.00023961, 0.00039310, -0.00000115, 0.00000000],
+		[-6.27323233, -0.00039108, 0.00023958, 0.00039305, -0.00000115, 0.00000000],
+		[-6.27323245, -0.00039103, 0.00023955, 0.00039300, -0.00000115, 0.00000000],
+		[-6.27323257, -0.00039098, 0.00023952, 0.00039295, -0.00000115, 0.00000000],
+		[-6.27323268, -0.00039093, 0.00023949, 0.00039290, -0.00000115, 0.00000000],
+		[-6.27323280, -0.00039088, 0.00023946, 0.00039285, -0.00000115, 0.00000000],
+		[-6.27323292, -0.00039083, 0.00023943, 0.00039280, -0.00000115, 0.00000000],
+		[-6.27323304, -0.00039078, 0.00023940, 0.00039275, -0.00000115, 0.00000000],
+		[-6.27323316, -0.00039073, 0.00023937, 0.00039270, -0.00000115, 0.00000000],
+		[-6.27323328, -0.00039069, 0.00023934, 0.00039265, -0.00000115, 0.00000000],
+		[-6.27323339, -0.00039064, 0.00023931, 0.00039260, -0.00000115, 0.00000000],
+		[-6.27323351, -0.00039059, 0.00023928, 0.00039255, -0.00000115, 0.00000000],
+		[-6.27323363, -0.00039054, 0.00023925, 0.00039250, -0.00000115, 0.00000000],
+		[-6.27323375, -0.00039049, 0.00023922, 0.00039245, -0.00000115, 0.00000000],
+		[-6.27323387, -0.00039044, 0.00023919, 0.00039241, -0.00000115, 0.00000000],
+		[-6.27323398, -0.00039039, 0.00023916, 0.00039236, -0.00000115, 0.00000000],
+		[-6.27323410, -0.00039034, 0.00023913, 0.00039231, -0.00000115, 0.00000000],
+		[-6.27323422, -0.00039029, 0.00023910, 0.00039226, -0.00000115, 0.00000000],
+		[-6.27323434, -0.00039024, 0.00023907, 0.00039221, -0.00000115, 0.00000000],
+		[-6.27323445, -0.00039019, 0.00023904, 0.00039216, -0.00000115, 0.00000000],
+		[-6.27323457, -0.00039014, 0.00023901, 0.00039211, -0.00000115, 0.00000000],
+		[-6.27323469, -0.00039009, 0.00023898, 0.00039206, -0.00000115, 0.00000000],
+		[-6.27323481, -0.00039005, 0.00023895, 0.00039201, -0.00000115, 0.00000000],
+		[-6.27323493, -0.00039000, 0.00023892, 0.00039196, -0.00000115, 0.00000000],
+		[-6.27323504, -0.00038995, 0.00023889, 0.00039191, -0.00000115, 0.00000000],
+		[-6.27323516, -0.00038990, 0.00023886, 0.00039186, -0.00000115, 0.00000000],
+		[-6.27323528, -0.00038985, 0.00023883, 0.00039181, -0.00000115, 0.00000000],
+		[-6.27323540, -0.00038980, 0.00023880, 0.00039176, -0.00000115, 0.00000000],
+		[-6.27323551, -0.00038975, 0.00023877, 0.00039171, -0.00000115, 0.00000000],
+		[-6.27323563, -0.00038970, 0.00023874, 0.00039166, -0.00000115, 0.00000000],
+		[-6.27323575, -0.00038965, 0.00023871, 0.00039161, -0.00000115, 0.00000000],
+		[-6.27323587, -0.00038960, 0.00023868, 0.00039157, -0.00000115, 0.00000000],
+		[-6.27323598, -0.00038955, 0.00023865, 0.00039152, -0.00000115, 0.00000000],
+		[-6.27323610, -0.00038951, 0.00023862, 0.00039147, -0.00000115, 0.00000000],
+		[-6.27323622, -0.00038946, 0.00023859, 0.00039142, -0.00000115, 0.00000000],
+		[-6.27323633, -0.00038941, 0.00023856, 0.00039137, -0.00000115, 0.00000000],
+		[-6.27323645, -0.00038936, 0.00023853, 0.00039132, -0.00000115, 0.00000000],
+		[-6.27323657, -0.00038931, 0.00023850, 0.00039127, -0.00000115, 0.00000000],
+		[-6.27323669, -0.00038926, 0.00023847, 0.00039122, -0.00000115, 0.00000000],
+		[-6.27323680, -0.00038921, 0.00023844, 0.00039117, -0.00000115, 0.00000000],
+		[-6.27323692, -0.00038916, 0.00023841, 0.00039112, -0.00000115, 0.00000000],
+		[-6.27323704, -0.00038911, 0.00023838, 0.00039107, -0.00000115, 0.00000000],
+		[-6.27323715, -0.00038907, 0.00023835, 0.00039102, -0.00000115, 0.00000000],
+		[-6.27323727, -0.00038902, 0.00023832, 0.00039097, -0.00000115, 0.00000000],
+		[-6.27323739, -0.00038897, 0.00023829, 0.00039093, -0.00000115, 0.00000000],
+		[-6.27323751, -0.00038892, 0.00023826, 0.00039088, -0.00000115, 0.00000000],
+		[-6.27323762, -0.00038887, 0.00023823, 0.00039083, -0.00000115, 0.00000000],
+		[-6.27323774, -0.00038882, 0.00023820, 0.00039078, -0.00000115, 0.00000000],
+		[-6.27323786, -0.00038877, 0.00023817, 0.00039073, -0.00000115, 0.00000000],
+		[-6.27323797, -0.00038872, 0.00023814, 0.00039068, -0.00000115, 0.00000000],
+		[-6.27323809, -0.00038867, 0.00023811, 0.00039063, -0.00000115, 0.00000000],
+		[-6.27323821, -0.00038863, 0.00023808, 0.00039058, -0.00000115, 0.00000000],
+		[-6.27323832, -0.00038858, 0.00023805, 0.00039053, -0.00000115, 0.00000000],
+		[-6.27323844, -0.00038853, 0.00023802, 0.00039048, -0.00000115, 0.00000000],
+		[-6.27323856, -0.00038848, 0.00023799, 0.00039044, -0.00000115, 0.00000000],
+		[-6.27323867, -0.00038843, 0.00023796, 0.00039039, -0.00000115, 0.00000000],
+		[-6.27323879, -0.00038838, 0.00023793, 0.00039034, -0.00000115, 0.00000000],
+		[-6.27323891, -0.00038833, 0.00023790, 0.00039029, -0.00000115, 0.00000000],
+		[-6.27323902, -0.00038828, 0.00023787, 0.00039024, -0.00000115, 0.00000000],
+		[-6.27323914, -0.00038824, 0.00023784, 0.00039019, -0.00000115, 0.00000000],
+		[-6.27323926, -0.00038819, 0.00023781, 0.00039014, -0.00000115, 0.00000000],
+		[-6.27323937, -0.00038814, 0.00023778, 0.00039009, -0.00000115, 0.00000000],
+		[-6.27323949, -0.00038809, 0.00023775, 0.00039004, -0.00000115, 0.00000000],
+		[-6.27323961, -0.00038804, 0.00023772, 0.00038999, -0.00000115, 0.00000000],
+		[-6.27323972, -0.00038799, 0.00023769, 0.00038995, -0.00000115, 0.00000000],
+		[-6.27323984, -0.00038794, 0.00023766, 0.00038990, -0.00000115, 0.00000000],
+		[-6.27323996, -0.00038789, 0.00023763, 0.00038985, -0.00000115, 0.00000000],
+		[-6.27324007, -0.00038785, 0.00023760, 0.00038980, -0.00000115, 0.00000000],
+		[-6.27324019, -0.00038780, 0.00023757, 0.00038975, -0.00000115, 0.00000000],
+		[-6.27324030, -0.00038775, 0.00023754, 0.00038970, -0.00000115, 0.00000000],
+		[-6.27324042, -0.00038770, 0.00023751, 0.00038965, -0.00000115, 0.00000000],
+		[-6.27324054, -0.00038765, 0.00023748, 0.00038960, -0.00000115, 0.00000000],
+		[-6.27324065, -0.00038760, 0.00023745, 0.00038956, -0.00000115, 0.00000000],
+		[-6.27324077, -0.00038755, 0.00023742, 0.00038951, -0.00000115, 0.00000000],
+		[-6.27324089, -0.00038751, 0.00023739, 0.00038946, -0.00000115, 0.00000000],
+		[-6.27324100, -0.00038746, 0.00023736, 0.00038941, -0.00000115, 0.00000000],
+		[-6.27324112, -0.00038741, 0.00023733, 0.00038936, -0.00000115, 0.00000000],
+		[-6.27324123, -0.00038736, 0.00023730, 0.00038931, -0.00000115, 0.00000000],
+		[-6.27324135, -0.00038731, 0.00023727, 0.00038926, -0.00000115, 0.00000000],
+		[-6.27324147, -0.00038726, 0.00023724, 0.00038921, -0.00000115, 0.00000000],
+		[-6.27324158, -0.00038722, 0.00023721, 0.00038917, -0.00000115, 0.00000000],
+		[-6.27324170, -0.00038717, 0.00023718, 0.00038912, -0.00000115, 0.00000000],
+		[-6.27324181, -0.00038712, 0.00023715, 0.00038907, -0.00000115, 0.00000000],
+		[-6.27324193, -0.00038707, 0.00023712, 0.00038902, -0.00000115, 0.00000000],
+		[-6.27324205, -0.00038702, 0.00023709, 0.00038897, -0.00000115, 0.00000000],
+		[-6.27324216, -0.00038697, 0.00023706, 0.00038892, -0.00000115, 0.00000000],
+		[-6.27324228, -0.00038693, 0.00023704, 0.00038887, -0.00000115, 0.00000000],
+		[-6.27324239, -0.00038688, 0.00023701, 0.00038882, -0.00000115, 0.00000000],
+		[-6.27324251, -0.00038683, 0.00023698, 0.00038878, -0.00000115, 0.00000000],
+		[-6.27324262, -0.00038678, 0.00023695, 0.00038873, -0.00000115, 0.00000000],
+		[-6.27324274, -0.00038673, 0.00023692, 0.00038868, -0.00000115, 0.00000000],
+		[-6.27324286, -0.00038668, 0.00023689, 0.00038863, -0.00000115, 0.00000000],
+		[-6.27324297, -0.00038664, 0.00023686, 0.00038858, -0.00000115, 0.00000000],
+		[-6.27324309, -0.00038659, 0.00023683, 0.00038853, -0.00000115, 0.00000000],
+		[-6.27324320, -0.00038654, 0.00023680, 0.00038848, -0.00000115, 0.00000000],
+		[-6.27324332, -0.00038649, 0.00023677, 0.00038844, -0.00000115, 0.00000000],
+		[-6.27324343, -0.00038644, 0.00023674, 0.00038839, -0.00000115, 0.00000000],
+		[-6.27324355, -0.00038639, 0.00023671, 0.00038834, -0.00000115, 0.00000000],
+		[-6.27324366, -0.00038635, 0.00023668, 0.00038829, -0.00000115, 0.00000000],
+		[-6.27324378, -0.00038630, 0.00023665, 0.00038824, -0.00000115, 0.00000000],
+		[-6.27324390, -0.00038625, 0.00023662, 0.00038819, -0.00000115, 0.00000000],
+		[-6.27324401, -0.00038620, 0.00023659, 0.00038815, -0.00000115, 0.00000000],
+		[-6.27324413, -0.00038615, 0.00023656, 0.00038810, -0.00000115, 0.00000000],
+		[-6.27324424, -0.00038610, 0.00023653, 0.00038805, -0.00000115, 0.00000000],
+		[-6.27324436, -0.00038606, 0.00023650, 0.00038800, -0.00000115, 0.00000000],
+		[-6.27324447, -0.00038601, 0.00023647, 0.00038795, -0.00000115, 0.00000000],
+		[-6.27324459, -0.00038596, 0.00023644, 0.00038790, -0.00000115, 0.00000000],
+		[-6.27324470, -0.00038591, 0.00023641, 0.00038786, -0.00000115, 0.00000000],
+		[-6.27324482, -0.00038586, 0.00023638, 0.00038781, -0.00000115, 0.00000000],
+		[-6.27324493, -0.00038582, 0.00023636, 0.00038776, -0.00000115, 0.00000000],
+		[-6.27324505, -0.00038577, 0.00023633, 0.00038771, -0.00000115, 0.00000000],
+		[-6.27324516, -0.00038572, 0.00023630, 0.00038766, -0.00000115, 0.00000000],
+		[-6.27324528, -0.00038567, 0.00023627, 0.00038761, -0.00000115, 0.00000000],
+		[-6.27324539, -0.00038562, 0.00023624, 0.00038757, -0.00000115, 0.00000000],
+		[-6.27324551, -0.00038558, 0.00023621, 0.00038752, -0.00000115, 0.00000000],
+		[-6.27324562, -0.00038553, 0.00023618, 0.00038747, -0.00000115, 0.00000000],
+		[-6.27324574, -0.00038548, 0.00023615, 0.00038742, -0.00000115, 0.00000000],
+		[-6.27324585, -0.00038543, 0.00023612, 0.00038737, -0.00000115, 0.00000000],
+		[-6.27324597, -0.00038538, 0.00023609, 0.00038732, -0.00000115, 0.00000000],
+		[-6.27324608, -0.00038534, 0.00023606, 0.00038728, -0.00000115, 0.00000000],
+		[-6.27324620, -0.00038529, 0.00023603, 0.00038723, -0.00000115, 0.00000000],
+		[-6.27324631, -0.00038524, 0.00023600, 0.00038718, -0.00000115, 0.00000000],
+		[-6.27324643, -0.00038519, 0.00023597, 0.00038713, -0.00000115, 0.00000000],
+		[-6.27324654, -0.00038514, 0.00023594, 0.00038708, -0.00000115, 0.00000000],
+		[-6.27324666, -0.00038510, 0.00023591, 0.00038703, -0.00000115, 0.00000000],
+		[-6.27324677, -0.00038505, 0.00023588, 0.00038699, -0.00000115, 0.00000000],
+		[-6.27324689, -0.00038500, 0.00023586, 0.00038694, -0.00000115, 0.00000000],
+		[-6.27324700, -0.00038495, 0.00023583, 0.00038689, -0.00000115, 0.00000000],
+		[-6.27324711, -0.00038490, 0.00023580, 0.00038684, -0.00000115, 0.00000000],
+		[-6.27324723, -0.00038486, 0.00023577, 0.00038679, -0.00000115, 0.00000000],
+		[-6.27324734, -0.00038481, 0.00023574, 0.00038675, -0.00000115, 0.00000000],
+		[-6.27324746, -0.00038476, 0.00023571, 0.00038670, -0.00000115, 0.00000000],
+		[-6.27324757, -0.00038471, 0.00023568, 0.00038665, -0.00000115, 0.00000000],
+		[-6.27324769, -0.00038467, 0.00023565, 0.00038660, -0.00000115, 0.00000000],
+		[-6.27324780, -0.00038462, 0.00023562, 0.00038655, -0.00000115, 0.00000000],
+		[-6.27324792, -0.00038457, 0.00023559, 0.00038651, -0.00000115, 0.00000000],
+		[-6.27324803, -0.00038452, 0.00023556, 0.00038646, -0.00000115, 0.00000000],
+		[-6.27324814, -0.00038447, 0.00023553, 0.00038641, -0.00000115, 0.00000000],
+		[-6.27324826, -0.00038443, 0.00023550, 0.00038636, -0.00000115, 0.00000000],
+		[-6.27324837, -0.00038438, 0.00023547, 0.00038631, -0.00000115, 0.00000000],
+		[-6.27324849, -0.00038433, 0.00023545, 0.00038627, -0.00000115, 0.00000000],
+		[-6.27324860, -0.00038428, 0.00023542, 0.00038622, -0.00000115, 0.00000000],
+		[-6.27324872, -0.00038424, 0.00023539, 0.00038617, -0.00000115, 0.00000000],
+		[-6.27324883, -0.00038419, 0.00023536, 0.00038612, -0.00000115, 0.00000000],
+		[-6.27324894, -0.00038414, 0.00023533, 0.00038607, -0.00000115, 0.00000000],
+		[-6.27324906, -0.00038409, 0.00023530, 0.00038603, -0.00000115, 0.00000000],
+		[-6.27324917, -0.00038405, 0.00023527, 0.00038598, -0.00000115, 0.00000000],
+		[-6.27324929, -0.00038400, 0.00023524, 0.00038593, -0.00000115, 0.00000000],
+		[-6.27324940, -0.00038395, 0.00023521, 0.00038588, -0.00000115, 0.00000000],
+		[-6.27324951, -0.00038390, 0.00023518, 0.00038583, -0.00000115, 0.00000000],
+		[-6.27324963, -0.00038385, 0.00023515, 0.00038579, -0.00000115, 0.00000000],
+		[-6.27324974, -0.00038381, 0.00023512, 0.00038574, -0.00000115, 0.00000000],
+		[-6.27324986, -0.00038376, 0.00023509, 0.00038569, -0.00000115, 0.00000000],
+		[-6.27324997, -0.00038371, 0.00023507, 0.00038564, -0.00000115, 0.00000000],
+		[-6.27325008, -0.00038366, 0.00023504, 0.00038560, -0.00000115, 0.00000000],
+		[-6.27325020, -0.00038362, 0.00023501, 0.00038555, -0.00000115, 0.00000000],
+		[-6.27325031, -0.00038357, 0.00023498, 0.00038550, -0.00000115, 0.00000000],
+		[-6.27325043, -0.00038352, 0.00023495, 0.00038545, -0.00000115, 0.00000000],
+		[-6.27325054, -0.00038347, 0.00023492, 0.00038540, -0.00000115, 0.00000000],
+		[-6.27325065, -0.00038343, 0.00023489, 0.00038536, -0.00000115, 0.00000000],
+		[-6.27325077, -0.00038338, 0.00023486, 0.00038531, -0.00000115, 0.00000000],
+		[-6.27325088, -0.00038333, 0.00023483, 0.00038526, -0.00000115, 0.00000000],
+		[-6.27325099, -0.00038328, 0.00023480, 0.00038521, -0.00000115, 0.00000000],
+		[-6.27325111, -0.00038324, 0.00023477, 0.00038517, -0.00000115, 0.00000000],
+		[-6.27325122, -0.00038319, 0.00023475, 0.00038512, -0.00000115, 0.00000000],
+		[-6.27325133, -0.00038314, 0.00023472, 0.00038507, -0.00000115, 0.00000000],
+		[-6.27325145, -0.00038309, 0.00023469, 0.00038502, -0.00000115, 0.00000000],
+		[-6.27325156, -0.00038305, 0.00023466, 0.00038498, -0.00000115, 0.00000000],
+		[-6.27325168, -0.00038300, 0.00023463, 0.00038493, -0.00000115, 0.00000000],
+		[-6.27325179, -0.00038295, 0.00023460, 0.00038488, -0.00000115, 0.00000000],
+		[-6.27325190, -0.00038291, 0.00023457, 0.00038483, -0.00000115, 0.00000000],
+		[-6.27325202, -0.00038286, 0.00023454, 0.00038478, -0.00000115, 0.00000000],
+		[-6.27325213, -0.00038281, 0.00023451, 0.00038474, -0.00000115, 0.00000000],
+		[-6.27325224, -0.00038276, 0.00023448, 0.00038469, -0.00000115, 0.00000000],
+		[-6.27325236, -0.00038272, 0.00023446, 0.00038464, -0.00000115, 0.00000000],
+		[-6.27325247, -0.00038267, 0.00023443, 0.00038459, -0.00000115, 0.00000000],
+		[-6.27325258, -0.00038262, 0.00023440, 0.00038455, -0.00000115, 0.00000000],
+		[-6.27325269, -0.00038257, 0.00023437, 0.00038450, -0.00000115, 0.00000000],
+		[-6.27325281, -0.00038253, 0.00023434, 0.00038445, -0.00000115, 0.00000000],
+		[-6.27325292, -0.00038248, 0.00023431, 0.00038440, -0.00000115, 0.00000000],
+		[-6.27325303, -0.00038243, 0.00023428, 0.00038436, -0.00000115, 0.00000000],
+		[-6.27325315, -0.00038238, 0.00023425, 0.00038431, -0.00000115, 0.00000000],
+		[-6.27325326, -0.00038234, 0.00023422, 0.00038426, -0.00000115, 0.00000000],
+		[-6.27325337, -0.00038229, 0.00023419, 0.00038421, -0.00000115, 0.00000000],
+		[-6.27325349, -0.00038224, 0.00023417, 0.00038417, -0.00000115, 0.00000000],
+		[-6.27325360, -0.00038220, 0.00023414, 0.00038412, -0.00000115, 0.00000000],
+		[-6.27325371, -0.00038215, 0.00023411, 0.00038407, -0.00000115, 0.00000000],
+		[-6.27325383, -0.00038210, 0.00023408, 0.00038402, -0.00000115, 0.00000000],
+		[-6.27325394, -0.00038205, 0.00023405, 0.00038398, -0.00000115, 0.00000000],
+		[-6.27325405, -0.00038201, 0.00023402, 0.00038393, -0.00000115, 0.00000000],
+		[-6.27325416, -0.00038196, 0.00023399, 0.00038388, -0.00000115, 0.00000000],
+		[-6.27325428, -0.00038191, 0.00023396, 0.00038384, -0.00000115, 0.00000000],
+		[-6.27325439, -0.00038187, 0.00023393, 0.00038379, -0.00000115, 0.00000000],
+		[-6.27325450, -0.00038182, 0.00023391, 0.00038374, -0.00000115, 0.00000000],
+		[-6.27325462, -0.00038177, 0.00023388, 0.00038369, -0.00000115, 0.00000000],
+		[-6.27325473, -0.00038172, 0.00023385, 0.00038365, -0.00000115, 0.00000000],
+		[-6.27325484, -0.00038168, 0.00023382, 0.00038360, -0.00000115, 0.00000000],
+		[-6.27325495, -0.00038163, 0.00023379, 0.00038355, -0.00000115, 0.00000000],
+		[-6.27325507, -0.00038158, 0.00023376, 0.00038350, -0.00000115, 0.00000000],
+		[-6.27325518, -0.00038154, 0.00023373, 0.00038346, -0.00000115, 0.00000000],
+		[-6.27325529, -0.00038149, 0.00023370, 0.00038341, -0.00000115, 0.00000000],
+		[-6.27325540, -0.00038144, 0.00023367, 0.00038336, -0.00000115, 0.00000000],
+		[-6.27325552, -0.00038140, 0.00023365, 0.00038332, -0.00000115, 0.00000000],
+		[-6.27325563, -0.00038135, 0.00023362, 0.00038327, -0.00000115, 0.00000000],
+		[-6.27325574, -0.00038130, 0.00023359, 0.00038322, -0.00000115, 0.00000000],
+		[-6.27325585, -0.00038125, 0.00023356, 0.00038317, -0.00000115, 0.00000000],
+		[-6.27325597, -0.00038121, 0.00023353, 0.00038313, -0.00000115, 0.00000000],
+		[-6.27325608, -0.00038116, 0.00023350, 0.00038308, -0.00000115, 0.00000000],
+		[-6.27325619, -0.00038111, 0.00023347, 0.00038303, -0.00000115, 0.00000000],
+		[-6.27325630, -0.00038107, 0.00023344, 0.00038298, -0.00000115, 0.00000000],
+		[-6.27325642, -0.00038102, 0.00023342, 0.00038294, -0.00000115, 0.00000000],
+		[-6.27325653, -0.00038097, 0.00023339, 0.00038289, -0.00000115, 0.00000000],
+		[-6.27325664, -0.00038093, 0.00023336, 0.00038284, -0.00000115, 0.00000000],
+		[-6.27325675, -0.00038088, 0.00023333, 0.00038280, -0.00000115, 0.00000000],
+		[-6.27325686, -0.00038083, 0.00023330, 0.00038275, -0.00000115, 0.00000000],
+		[-6.27325698, -0.00038079, 0.00023327, 0.00038270, -0.00000115, 0.00000000],
+		[-6.27325709, -0.00038074, 0.00023324, 0.00038265, -0.00000115, 0.00000000],
+		[-6.27325720, -0.00038069, 0.00023321, 0.00038261, -0.00000115, 0.00000000],
+		[-6.27325731, -0.00038065, 0.00023319, 0.00038256, -0.00000115, 0.00000000],
+		[-6.27325742, -0.00038060, 0.00023316, 0.00038251, -0.00000115, 0.00000000],
+		[-6.27325754, -0.00038055, 0.00023313, 0.00038247, -0.00000115, 0.00000000],
+		[-6.27325765, -0.00038050, 0.00023310, 0.00038242, -0.00000115, 0.00000000],
+		[-6.27325776, -0.00038046, 0.00023307, 0.00038237, -0.00000115, 0.00000000],
+		[-6.27325787, -0.00038041, 0.00023304, 0.00038233, -0.00000115, 0.00000000],
+		[-6.27325798, -0.00038036, 0.00023301, 0.00038228, -0.00000115, 0.00000000],
+		[-6.27325810, -0.00038032, 0.00023299, 0.00038223, -0.00000115, 0.00000000],
+		[-6.27325821, -0.00038027, 0.00023296, 0.00038218, -0.00000115, 0.00000000],
+		[-6.27325832, -0.00038022, 0.00023293, 0.00038214, -0.00000115, 0.00000000],
+		[-6.27325843, -0.00038018, 0.00023290, 0.00038209, -0.00000115, 0.00000000],
+		[-6.27325854, -0.00038013, 0.00023287, 0.00038204, -0.00000115, 0.00000000],
+		[-6.27325866, -0.00038008, 0.00023284, 0.00038200, -0.00000115, 0.00000000],
+		[-6.27325877, -0.00038004, 0.00023281, 0.00038195, -0.00000115, 0.00000000],
+		[-6.27325888, -0.00037999, 0.00023279, 0.00038190, -0.00000115, 0.00000000],
+		[-6.27325899, -0.00037994, 0.00023276, 0.00038186, -0.00000115, 0.00000000],
+		[-6.27325910, -0.00037990, 0.00023273, 0.00038181, -0.00000115, 0.00000000],
+		[-6.27325921, -0.00037985, 0.00023270, 0.00038176, -0.00000115, 0.00000000],
+		[-6.27325932, -0.00037980, 0.00023267, 0.00038172, -0.00000115, 0.00000000],
+		[-6.27325944, -0.00037976, 0.00023264, 0.00038167, -0.00000115, 0.00000000],
+		[-6.27325955, -0.00037971, 0.00023261, 0.00038162, -0.00000115, 0.00000000],
+		[-6.27325966, -0.00037966, 0.00023259, 0.00038158, -0.00000115, 0.00000000],
+		[-6.27325977, -0.00037962, 0.00023256, 0.00038153, -0.00000115, 0.00000000],
+		[-6.27325988, -0.00037957, 0.00023253, 0.00038148, -0.00000115, 0.00000000],
+		[-6.27325999, -0.00037953, 0.00023250, 0.00038144, -0.00000115, 0.00000000],
+		[-6.27326011, -0.00037948, 0.00023247, 0.00038139, -0.00000115, 0.00000000],
+		[-6.27326022, -0.00037943, 0.00023244, 0.00038134, -0.00000115, 0.00000000],
+		[-6.27326033, -0.00037939, 0.00023241, 0.00038129, -0.00000115, 0.00000000],
+		[-6.27326044, -0.00037934, 0.00023239, 0.00038125, -0.00000115, 0.00000000],
+		[-6.27326055, -0.00037929, 0.00023236, 0.00038120, -0.00000115, 0.00000000],
+		[-6.27326066, -0.00037925, 0.00023233, 0.00038115, -0.00000115, 0.00000000],
+		[-6.27326077, -0.00037920, 0.00023230, 0.00038111, -0.00000115, 0.00000000],
+		[-6.27326088, -0.00037915, 0.00023227, 0.00038106, -0.00000115, 0.00000000],
+		[-6.27326100, -0.00037911, 0.00023224, 0.00038101, -0.00000115, 0.00000000],
+		[-6.27326111, -0.00037906, 0.00023221, 0.00038097, -0.00000115, 0.00000000],
+		[-6.27326122, -0.00037901, 0.00023219, 0.00038092, -0.00000115, 0.00000000],
+		[-6.27326133, -0.00037897, 0.00023216, 0.00038087, -0.00000115, 0.00000000],
+		[-6.27326144, -0.00037892, 0.00023213, 0.00038083, -0.00000115, 0.00000000],
+		[-6.27326155, -0.00037887, 0.00023210, 0.00038078, -0.00000115, 0.00000000],
+		[-6.27326166, -0.00037883, 0.00023207, 0.00038073, -0.00000115, 0.00000000],
+		[-6.27326177, -0.00037878, 0.00023204, 0.00038069, -0.00000115, 0.00000000],
+		[-6.27326188, -0.00037874, 0.00023202, 0.00038064, -0.00000115, 0.00000000],
+		[-6.27326199, -0.00037869, 0.00023199, 0.00038060, -0.00000115, 0.00000000],
+		[-6.27326211, -0.00037864, 0.00023196, 0.00038055, -0.00000115, 0.00000000],
+		[-6.27326222, -0.00037860, 0.00023193, 0.00038050, -0.00000115, 0.00000000],
+		[-6.27326233, -0.00037855, 0.00023190, 0.00038046, -0.00000115, 0.00000000],
+		[-6.27326244, -0.00037850, 0.00023187, 0.00038041, -0.00000115, 0.00000000],
+		[-6.27326255, -0.00037846, 0.00023185, 0.00038036, -0.00000115, 0.00000000],
+		[-6.27326266, -0.00037841, 0.00023182, 0.00038032, -0.00000115, 0.00000000],
+		[-6.27326277, -0.00037837, 0.00023179, 0.00038027, -0.00000115, 0.00000000],
+		[-6.27326288, -0.00037832, 0.00023176, 0.00038022, -0.00000115, 0.00000000],
+		[-6.27326299, -0.00037827, 0.00023173, 0.00038018, -0.00000115, 0.00000000],
+		[-6.27326310, -0.00037823, 0.00023170, 0.00038013, -0.00000115, 0.00000000],
+		[-6.27326321, -0.00037818, 0.00023168, 0.00038008, -0.00000115, 0.00000000],
+		[-6.27326332, -0.00037813, 0.00023165, 0.00038004, -0.00000115, 0.00000000],
+		[-6.27326343, -0.00037809, 0.00023162, 0.00037999, -0.00000115, 0.00000000],
+		[-6.27326354, -0.00037804, 0.00023159, 0.00037994, -0.00000115, 0.00000000],
+		[-6.27326366, -0.00037800, 0.00023156, 0.00037990, -0.00000115, 0.00000000],
+		[-6.27326377, -0.00037795, 0.00023153, 0.00037985, -0.00000115, 0.00000000],
+		[-6.27326388, -0.00037790, 0.00023151, 0.00037981, -0.00000115, 0.00000000],
+		[-6.27326399, -0.00037786, 0.00023148, 0.00037976, -0.00000115, 0.00000000],
+		[-6.27326410, -0.00037781, 0.00023145, 0.00037971, -0.00000115, 0.00000000],
+		[-6.27326421, -0.00037777, 0.00023142, 0.00037967, -0.00000115, 0.00000000],
+		[-6.27326432, -0.00037772, 0.00023139, 0.00037962, -0.00000115, 0.00000000],
+		[-6.27326443, -0.00037767, 0.00023136, 0.00037957, -0.00000115, 0.00000000],
+		[-6.27326454, -0.00037763, 0.00023134, 0.00037953, -0.00000115, 0.00000000],
+		[-6.27326465, -0.00037758, 0.00023131, 0.00037948, -0.00000115, 0.00000000],
+		[-6.27326476, -0.00037753, 0.00023128, 0.00037943, -0.00000115, 0.00000000],
+		[-6.27326487, -0.00037749, 0.00023125, 0.00037939, -0.00000115, 0.00000000],
+		[-6.27326498, -0.00037744, 0.00023122, 0.00037934, -0.00000115, 0.00000000],
+		[-6.27326509, -0.00037740, 0.00023120, 0.00037930, -0.00000115, 0.00000000],
+		[-6.27326520, -0.00037735, 0.00023117, 0.00037925, -0.00000115, 0.00000000],
+		[-6.27326531, -0.00037730, 0.00023114, 0.00037920, -0.00000115, 0.00000000],
+		[-6.27326542, -0.00037726, 0.00023111, 0.00037916, -0.00000115, 0.00000000],
+		[-6.27326553, -0.00037721, 0.00023108, 0.00037911, -0.00000115, 0.00000000],
+		[-6.27326564, -0.00037717, 0.00023105, 0.00037906, -0.00000115, 0.00000000],
+		[-6.27326575, -0.00037712, 0.00023103, 0.00037902, -0.00000115, 0.00000000],
+		[-6.27326586, -0.00037707, 0.00023100, 0.00037897, -0.00000115, 0.00000000],
+		[-6.27326597, -0.00037703, 0.00023097, 0.00037893, -0.00000115, 0.00000000],
+		[-6.27326608, -0.00037698, 0.00023094, 0.00037888, -0.00000115, 0.00000000],
+		[-6.27326619, -0.00037694, 0.00023091, 0.00037883, -0.00000115, 0.00000000],
+		[-6.27326630, -0.00037689, 0.00023089, 0.00037879, -0.00000115, 0.00000000],
+		[-6.27326641, -0.00037685, 0.00023086, 0.00037874, -0.00000115, 0.00000000],
+		[-6.27326652, -0.00037680, 0.00023083, 0.00037870, -0.00000115, 0.00000000],
+		[-6.27326663, -0.00037675, 0.00023080, 0.00037865, -0.00000115, 0.00000000],
+		[-6.27326674, -0.00037671, 0.00023077, 0.00037860, -0.00000115, 0.00000000],
+		[-6.27326685, -0.00037666, 0.00023074, 0.00037856, -0.00000115, 0.00000000],
+		[-6.27326696, -0.00037662, 0.00023072, 0.00037851, -0.00000115, 0.00000000],
+		[-6.27326707, -0.00037657, 0.00023069, 0.00037847, -0.00000115, 0.00000000],
+		[-6.27326718, -0.00037652, 0.00023066, 0.00037842, -0.00000115, 0.00000000],
+		[-6.27326729, -0.00037648, 0.00023063, 0.00037837, -0.00000115, 0.00000000],
+		[-6.27326740, -0.00037643, 0.00023060, 0.00037833, -0.00000115, 0.00000000],
+		[-6.27326751, -0.00037639, 0.00023058, 0.00037828, -0.00000115, 0.00000000],
+		[-6.27326762, -0.00037634, 0.00023055, 0.00037823, -0.00000115, 0.00000000],
+		[-6.27326773, -0.00037630, 0.00023052, 0.00037819, -0.00000115, 0.00000000],
+		[-6.27326783, -0.00037625, 0.00023049, 0.00037814, -0.00000115, 0.00000000],
+		[-6.27326794, -0.00037620, 0.00023046, 0.00037810, -0.00000115, 0.00000000],
+		[-6.27326805, -0.00037616, 0.00023044, 0.00037805, -0.00000115, 0.00000000],
+		[-6.27326816, -0.00037611, 0.00023041, 0.00037801, -0.00000115, 0.00000000],
+		[-6.27326827, -0.00037607, 0.00023038, 0.00037796, -0.00000115, 0.00000000],
+		[-6.27326838, -0.00037602, 0.00023035, 0.00037791, -0.00000115, 0.00000000],
+		[-6.27326849, -0.00037598, 0.00023032, 0.00037787, -0.00000115, 0.00000000],
+		[-6.27326860, -0.00037593, 0.00023030, 0.00037782, -0.00000115, 0.00000000],
+		[-6.27326871, -0.00037588, 0.00023027, 0.00037778, -0.00000115, 0.00000000],
+		[-6.27326882, -0.00037584, 0.00023024, 0.00037773, -0.00000115, 0.00000000],
+		[-6.27326893, -0.00037579, 0.00023021, 0.00037768, -0.00000115, 0.00000000],
+		[-6.27326904, -0.00037575, 0.00023018, 0.00037764, -0.00000115, 0.00000000],
+		[-6.27326915, -0.00037570, 0.00023016, 0.00037759, -0.00000115, 0.00000000],
+		[-6.27326926, -0.00037566, 0.00023013, 0.00037755, -0.00000115, 0.00000000],
+		[-6.27326937, -0.00037561, 0.00023010, 0.00037750, -0.00000115, 0.00000000],
+		[-6.27326947, -0.00037557, 0.00023007, 0.00037745, -0.00000115, 0.00000000],
+		[-6.27326958, -0.00037552, 0.00023004, 0.00037741, -0.00000115, 0.00000000],
+		[-6.27326969, -0.00037547, 0.00023002, 0.00037736, -0.00000115, 0.00000000],
+		[-6.27326980, -0.00037543, 0.00022999, 0.00037732, -0.00000115, 0.00000000],
+		[-6.27326991, -0.00037538, 0.00022996, 0.00037727, -0.00000115, 0.00000000],
+		[-6.27327002, -0.00037534, 0.00022993, 0.00037723, -0.00000115, 0.00000000],
+		[-6.27327013, -0.00037529, 0.00022991, 0.00037718, -0.00000115, 0.00000000],
+		[-6.27327024, -0.00037525, 0.00022988, 0.00037713, -0.00000115, 0.00000000],
+		[-6.27327035, -0.00037520, 0.00022985, 0.00037709, -0.00000115, 0.00000000],
+		[-6.27327045, -0.00037516, 0.00022982, 0.00037704, -0.00000115, 0.00000000],
+		[-6.27327056, -0.00037511, 0.00022979, 0.00037700, -0.00000115, 0.00000000],
+		[-6.27327067, -0.00037506, 0.00022977, 0.00037695, -0.00000115, 0.00000000],
+		[-6.27327078, -0.00037502, 0.00022974, 0.00037691, -0.00000115, 0.00000000],
+		[-6.27327089, -0.00037497, 0.00022971, 0.00037686, -0.00000115, 0.00000000],
+		[-6.27327100, -0.00037493, 0.00022968, 0.00037681, -0.00000115, 0.00000000],
+		[-6.27327111, -0.00037488, 0.00022965, 0.00037677, -0.00000115, 0.00000000],
+		[-6.27327122, -0.00037484, 0.00022963, 0.00037672, -0.00000115, 0.00000000],
+		[-6.27327132, -0.00037479, 0.00022960, 0.00037668, -0.00000115, 0.00000000],
+		[-6.27327143, -0.00037475, 0.00022957, 0.00037663, -0.00000115, 0.00000000],
+		[-6.27327154, -0.00037470, 0.00022954, 0.00037659, -0.00000115, 0.00000000],
+		[-6.27327165, -0.00037466, 0.00022952, 0.00037654, -0.00000115, 0.00000000],
+		[-6.27327176, -0.00037461, 0.00022949, 0.00037650, -0.00000115, 0.00000000],
+		[-6.27327187, -0.00037457, 0.00022946, 0.00037645, -0.00000115, 0.00000000],
+		[-6.27327198, -0.00037452, 0.00022943, 0.00037640, -0.00000115, 0.00000000],
+		[-6.27327208, -0.00037447, 0.00022940, 0.00037636, -0.00000115, 0.00000000],
+		[-6.27327219, -0.00037443, 0.00022938, 0.00037631, -0.00000115, 0.00000000],
+		[-6.27327230, -0.00037438, 0.00022935, 0.00037627, -0.00000115, 0.00000000],
+		[-6.27327241, -0.00037434, 0.00022932, 0.00037622, -0.00000115, 0.00000000],
+		[-6.27327252, -0.00037429, 0.00022929, 0.00037618, -0.00000115, 0.00000000],
+		[-6.27327263, -0.00037425, 0.00022927, 0.00037613, -0.00000115, 0.00000000],
+		[-6.27327273, -0.00037420, 0.00022924, 0.00037609, -0.00000115, 0.00000000],
+		[-6.27327284, -0.00037416, 0.00022921, 0.00037604, -0.00000115, 0.00000000],
+		[-6.27327295, -0.00037411, 0.00022918, 0.00037599, -0.00000115, 0.00000000],
+		[-6.27327306, -0.00037407, 0.00022915, 0.00037595, -0.00000115, 0.00000000],
+		[-6.27327317, -0.00037402, 0.00022913, 0.00037590, -0.00000115, 0.00000000],
+		[-6.27327328, -0.00037398, 0.00022910, 0.00037586, -0.00000115, 0.00000000],
+		[-6.27327338, -0.00037393, 0.00022907, 0.00037581, -0.00000115, 0.00000000],
+		[-6.27327349, -0.00037389, 0.00022904, 0.00037577, -0.00000115, 0.00000000],
+		[-6.27327360, -0.00037384, 0.00022902, 0.00037572, -0.00000115, 0.00000000],
+		[-6.27327371, -0.00037380, 0.00022899, 0.00037568, -0.00000115, 0.00000000],
+		[-6.27327382, -0.00037375, 0.00022896, 0.00037563, -0.00000115, 0.00000000],
+		[-6.27327392, -0.00037371, 0.00022893, 0.00037559, -0.00000115, 0.00000000],
+		[-6.27327403, -0.00037366, 0.00022891, 0.00037554, -0.00000115, 0.00000000],
+		[-6.27327414, -0.00037362, 0.00022888, 0.00037550, -0.00000115, 0.00000000],
+		[-6.27327425, -0.00037357, 0.00022885, 0.00037545, -0.00000115, 0.00000000],
+		[-6.27327436, -0.00037353, 0.00022882, 0.00037541, -0.00000115, 0.00000000],
+		[-6.27327446, -0.00037348, 0.00022880, 0.00037536, -0.00000115, 0.00000000],
+		[-6.27327457, -0.00037344, 0.00022877, 0.00037531, -0.00000115, 0.00000000],
+		[-6.27327468, -0.00037339, 0.00022874, 0.00037527, -0.00000115, 0.00000000],
+		[-6.27327479, -0.00037335, 0.00022871, 0.00037522, -0.00000115, 0.00000000],
+		[-6.27327490, -0.00037330, 0.00022868, 0.00037518, -0.00000115, 0.00000000],
+		[-6.27327500, -0.00037326, 0.00022866, 0.00037513, -0.00000115, 0.00000000],
+		[-6.27327511, -0.00037321, 0.00022863, 0.00037509, -0.00000115, 0.00000000],
+		[-6.27327522, -0.00037317, 0.00022860, 0.00037504, -0.00000115, 0.00000000],
+		[-6.27327533, -0.00037312, 0.00022857, 0.00037500, -0.00000115, 0.00000000],
+		[-6.27327543, -0.00037308, 0.00022855, 0.00037495, -0.00000115, 0.00000000],
+		[-6.27327554, -0.00037303, 0.00022852, 0.00037491, -0.00000115, 0.00000000],
+		[-6.27327565, -0.00037299, 0.00022849, 0.00037486, -0.00000115, 0.00000000],
+		[-6.27327576, -0.00037294, 0.00022846, 0.00037482, -0.00000115, 0.00000000],
+		[-6.27327586, -0.00037290, 0.00022844, 0.00037477, -0.00000115, 0.00000000],
+		[-6.27327597, -0.00037285, 0.00022841, 0.00037473, -0.00000115, 0.00000000],
+		[-6.27327608, -0.00037281, 0.00022838, 0.00037468, -0.00000115, 0.00000000],
+		[-6.27327619, -0.00037276, 0.00022835, 0.00037464, -0.00000115, 0.00000000],
+		[-6.27327629, -0.00037272, 0.00022833, 0.00037459, -0.00000115, 0.00000000],
+		[-6.27327640, -0.00037267, 0.00022830, 0.00037455, -0.00000115, 0.00000000],
+		[-6.27327651, -0.00037263, 0.00022827, 0.00037450, -0.00000115, 0.00000000],
+		[-6.27327662, -0.00037258, 0.00022824, 0.00037446, -0.00000115, 0.00000000],
+		[-6.27327672, -0.00037254, 0.00022822, 0.00037441, -0.00000115, 0.00000000],
+		[-6.27327683, -0.00037249, 0.00022819, 0.00037437, -0.00000115, 0.00000000],
+		[-6.27327694, -0.00037245, 0.00022816, 0.00037432, -0.00000115, 0.00000000],
+		[-6.27327705, -0.00037240, 0.00022813, 0.00037428, -0.00000115, 0.00000000],
+		[-6.27327715, -0.00037236, 0.00022811, 0.00037423, -0.00000115, 0.00000000],
+		[-6.27327726, -0.00037231, 0.00022808, 0.00037419, -0.00000115, 0.00000000],
+		[-6.27327737, -0.00037227, 0.00022805, 0.00037414, -0.00000115, 0.00000000],
+		[-6.27327747, -0.00037222, 0.00022802, 0.00037410, -0.00000115, 0.00000000],
+		[-6.27327758, -0.00037218, 0.00022800, 0.00037405, -0.00000115, 0.00000000],
+		[-6.27327769, -0.00037213, 0.00022797, 0.00037401, -0.00000115, 0.00000000],
+		[-6.27327780, -0.00037209, 0.00022794, 0.00037396, -0.00000115, 0.00000000],
+		[-6.27327790, -0.00037204, 0.00022791, 0.00037392, -0.00000115, 0.00000000],
+		[-6.27327801, -0.00037200, 0.00022789, 0.00037387, -0.00000115, 0.00000000],
+		[-6.27327812, -0.00037195, 0.00022786, 0.00037383, -0.00000115, 0.00000000],
+		[-6.27327822, -0.00037191, 0.00022783, 0.00037378, -0.00000115, 0.00000000],
+		[-6.27327833, -0.00037187, 0.00022781, 0.00037374, -0.00000115, 0.00000000],
+		[-6.27327844, -0.00037182, 0.00022778, 0.00037369, -0.00000115, 0.00000000],
+		[-6.27327855, -0.00037178, 0.00022775, 0.00037365, -0.00000115, 0.00000000],
+		[-6.27327865, -0.00037173, 0.00022772, 0.00037360, -0.00000115, 0.00000000],
+		[-6.27327876, -0.00037169, 0.00022770, 0.00037356, -0.00000115, 0.00000000],
+		[-6.27327887, -0.00037164, 0.00022767, 0.00037351, -0.00000115, 0.00000000],
+		[-6.27327897, -0.00037160, 0.00022764, 0.00037347, -0.00000115, 0.00000000],
+		[-6.27327908, -0.00037155, 0.00022761, 0.00037342, -0.00000115, 0.00000000],
+		[-6.27327919, -0.00037151, 0.00022759, 0.00037338, -0.00000115, 0.00000000],
+		[-6.27327929, -0.00037146, 0.00022756, 0.00037333, -0.00000115, 0.00000000],
+		[-6.27327940, -0.00037142, 0.00022753, 0.00037329, -0.00000115, 0.00000000],
+		[-6.27327951, -0.00037137, 0.00022750, 0.00037324, -0.00000115, 0.00000000],
+		[-6.27327961, -0.00037133, 0.00022748, 0.00037320, -0.00000115, 0.00000000],
+		[-6.27327972, -0.00037129, 0.00022745, 0.00037315, -0.00000115, 0.00000000],
+		[-6.27327983, -0.00037124, 0.00022742, 0.00037311, -0.00000115, 0.00000000],
+		[-6.27327993, -0.00037120, 0.00022740, 0.00037306, -0.00000115, 0.00000000],
+		[-6.27328004, -0.00037115, 0.00022737, 0.00037302, -0.00000115, 0.00000000],
+		[-6.27328015, -0.00037111, 0.00022734, 0.00037297, -0.00000115, 0.00000000],
+		[-6.27328025, -0.00037106, 0.00022731, 0.00037293, -0.00000115, 0.00000000],
+		[-6.27328036, -0.00037102, 0.00022729, 0.00037289, -0.00000115, 0.00000000],
+		[-6.27328047, -0.00037097, 0.00022726, 0.00037284, -0.00000115, 0.00000000],
+		[-6.27328057, -0.00037093, 0.00022723, 0.00037280, -0.00000115, 0.00000000],
+		[-6.27328068, -0.00037089, 0.00022720, 0.00037275, -0.00000115, 0.00000000],
+		[-6.27328078, -0.00037084, 0.00022718, 0.00037271, -0.00000115, 0.00000000],
+		[-6.27328089, -0.00037080, 0.00022715, 0.00037266, -0.00000115, 0.00000000],
+		[-6.27328100, -0.00037075, 0.00022712, 0.00037262, -0.00000115, 0.00000000],
+		[-6.27328110, -0.00037071, 0.00022710, 0.00037257, -0.00000115, 0.00000000],
+		[-6.27328121, -0.00037066, 0.00022707, 0.00037253, -0.00000115, 0.00000000],
+		[-6.27328132, -0.00037062, 0.00022704, 0.00037248, -0.00000115, 0.00000000],
+		[-6.27328142, -0.00037057, 0.00022701, 0.00037244, -0.00000115, 0.00000000],
+		[-6.27328153, -0.00037053, 0.00022699, 0.00037239, -0.00000115, 0.00000000],
+		[-6.27328163, -0.00037049, 0.00022696, 0.00037235, -0.00000115, 0.00000000],
+		[-6.27328174, -0.00037044, 0.00022693, 0.00037230, -0.00000115, 0.00000000],
+		[-6.27328185, -0.00037040, 0.00022691, 0.00037226, -0.00000115, 0.00000000],
+		[-6.27328195, -0.00037035, 0.00022688, 0.00037222, -0.00000115, 0.00000000],
+		[-6.27328206, -0.00037031, 0.00022685, 0.00037217, -0.00000115, 0.00000000],
+		[-6.27328217, -0.00037026, 0.00022682, 0.00037213, -0.00000115, 0.00000000],
+		[-6.27328227, -0.00037022, 0.00022680, 0.00037208, -0.00000115, 0.00000000],
+		[-6.27328238, -0.00037018, 0.00022677, 0.00037204, -0.00000115, 0.00000000],
+		[-6.27328248, -0.00037013, 0.00022674, 0.00037199, -0.00000115, 0.00000000],
+		[-6.27328259, -0.00037009, 0.00022672, 0.00037195, -0.00000115, 0.00000000],
+		[-6.27328269, -0.00037004, 0.00022669, 0.00037190, -0.00000115, 0.00000000],
+		[-6.27328280, -0.00037000, 0.00022666, 0.00037186, -0.00000115, 0.00000000],
+		[-6.27328291, -0.00036995, 0.00022663, 0.00037182, -0.00000115, 0.00000000],
+		[-6.27328301, -0.00036991, 0.00022661, 0.00037177, -0.00000115, 0.00000000],
+		[-6.27328312, -0.00036987, 0.00022658, 0.00037173, -0.00000115, 0.00000000],
+		[-6.27328322, -0.00036982, 0.00022655, 0.00037168, -0.00000115, 0.00000000],
+		[-6.27328333, -0.00036978, 0.00022653, 0.00037164, -0.00000115, 0.00000000],
+		[-6.27328344, -0.00036973, 0.00022650, 0.00037159, -0.00000115, 0.00000000],
+		[-6.27328354, -0.00036969, 0.00022647, 0.00037155, -0.00000115, 0.00000000],
+		[-6.27328365, -0.00036965, 0.00022644, 0.00037150, -0.00000115, 0.00000000],
+		[-6.27328375, -0.00036960, 0.00022642, 0.00037146, -0.00000115, 0.00000000],
+		[-6.27328386, -0.00036956, 0.00022639, 0.00037142, -0.00000115, 0.00000000],
+		[-6.27328396, -0.00036951, 0.00022636, 0.00037137, -0.00000115, 0.00000000],
+		[-6.27328407, -0.00036947, 0.00022634, 0.00037133, -0.00000115, 0.00000000],
+		[-6.27328418, -0.00036942, 0.00022631, 0.00037128, -0.00000115, 0.00000000],
+		[-6.27328428, -0.00036938, 0.00022628, 0.00037124, -0.00000115, 0.00000000],
+		[-6.27328439, -0.00036934, 0.00022626, 0.00037119, -0.00000115, 0.00000000],
+		[-6.27328449, -0.00036929, 0.00022623, 0.00037115, -0.00000115, 0.00000000],
+		[-6.27328460, -0.00036925, 0.00022620, 0.00037111, -0.00000115, 0.00000000],
+		[-6.27328470, -0.00036920, 0.00022617, 0.00037106, -0.00000115, 0.00000000],
+		[-6.27328481, -0.00036916, 0.00022615, 0.00037102, -0.00000115, 0.00000000],
+		[-6.27328491, -0.00036912, 0.00022612, 0.00037097, -0.00000115, 0.00000000],
+		[-6.27328502, -0.00036907, 0.00022609, 0.00037093, -0.00000115, 0.00000000],
+		[-6.27328512, -0.00036903, 0.00022607, 0.00037088, -0.00000115, 0.00000000],
+		[-6.27328523, -0.00036898, 0.00022604, 0.00037084, -0.00000115, 0.00000000],
+		[-6.27328533, -0.00036894, 0.00022601, 0.00037080, -0.00000115, 0.00000000],
+		[-6.27328544, -0.00036890, 0.00022599, 0.00037075, -0.00000115, 0.00000000],
+		[-6.27328555, -0.00036885, 0.00022596, 0.00037071, -0.00000115, 0.00000000],
+		[-6.27328565, -0.00036881, 0.00022593, 0.00037066, -0.00000115, 0.00000000],
+		[-6.27328576, -0.00036876, 0.00022590, 0.00037062, -0.00000115, 0.00000000],
+		[-6.27328586, -0.00036872, 0.00022588, 0.00037058, -0.00000115, 0.00000000],
+		[-6.27328597, -0.00036868, 0.00022585, 0.00037053, -0.00000115, 0.00000000],
+		[-6.27328607, -0.00036863, 0.00022582, 0.00037049, -0.00000115, 0.00000000],
+		[-6.27328618, -0.00036859, 0.00022580, 0.00037044, -0.00000115, 0.00000000],
+		[-6.27328628, -0.00036855, 0.00022577, 0.00037040, -0.00000115, 0.00000000],
+		[-6.27328639, -0.00036850, 0.00022574, 0.00037035, -0.00000115, 0.00000000],
+		[-6.27328649, -0.00036846, 0.00022572, 0.00037031, -0.00000115, 0.00000000],
+		[-6.27328660, -0.00036841, 0.00022569, 0.00037027, -0.00000115, 0.00000000],
+		[-6.27328670, -0.00036837, 0.00022566, 0.00037022, -0.00000115, 0.00000000],
+		[-6.27328681, -0.00036833, 0.00022564, 0.00037018, -0.00000115, 0.00000000],
+		[-6.27328691, -0.00036828, 0.00022561, 0.00037013, -0.00000115, 0.00000000],
+		[-6.27328702, -0.00036824, 0.00022558, 0.00037009, -0.00000115, 0.00000000],
+		[-6.27328712, -0.00036819, 0.00022556, 0.00037005, -0.00000115, 0.00000000],
+		[-6.27328723, -0.00036815, 0.00022553, 0.00037000, -0.00000115, 0.00000000],
+		[-6.27328733, -0.00036811, 0.00022550, 0.00036996, -0.00000115, 0.00000000],
+		[-6.27328744, -0.00036806, 0.00022547, 0.00036991, -0.00000115, 0.00000000],
+		[-6.27328754, -0.00036802, 0.00022545, 0.00036987, -0.00000115, 0.00000000],
+		[-6.27328764, -0.00036798, 0.00022542, 0.00036983, -0.00000115, 0.00000000],
+		[-6.27328775, -0.00036793, 0.00022539, 0.00036978, -0.00000115, 0.00000000],
+		[-6.27328785, -0.00036789, 0.00022537, 0.00036974, -0.00000115, 0.00000000],
+		[-6.27328796, -0.00036784, 0.00022534, 0.00036969, -0.00000115, 0.00000000],
+		[-6.27328806, -0.00036780, 0.00022531, 0.00036965, -0.00000115, 0.00000000],
+		[-6.27328817, -0.00036776, 0.00022529, 0.00036961, -0.00000115, 0.00000000],
+		[-6.27328827, -0.00036771, 0.00022526, 0.00036956, -0.00000115, 0.00000000],
+		[-6.27328838, -0.00036767, 0.00022523, 0.00036952, -0.00000115, 0.00000000],
+		[-6.27328848, -0.00036763, 0.00022521, 0.00036947, -0.00000115, 0.00000000],
+		[-6.27328859, -0.00036758, 0.00022518, 0.00036943, -0.00000115, 0.00000000],
+		[-6.27328869, -0.00036754, 0.00022515, 0.00036939, -0.00000115, 0.00000000],
+		[-6.27328880, -0.00036749, 0.00022513, 0.00036934, -0.00000115, 0.00000000],
+		[-6.27328890, -0.00036745, 0.00022510, 0.00036930, -0.00000115, 0.00000000],
+		[-6.27328900, -0.00036741, 0.00022507, 0.00036926, -0.00000115, 0.00000000],
+		[-6.27328911, -0.00036736, 0.00022505, 0.00036921, -0.00000115, 0.00000000],
+		[-6.27328921, -0.00036732, 0.00022502, 0.00036917, -0.00000115, 0.00000000],
+		[-6.27328932, -0.00036728, 0.00022499, 0.00036912, -0.00000115, 0.00000000],
+		[-6.27328942, -0.00036723, 0.00022497, 0.00036908, -0.00000115, 0.00000000],
+		[-6.27328953, -0.00036719, 0.00022494, 0.00036904, -0.00000115, 0.00000000],
+		[-6.27328963, -0.00036715, 0.00022491, 0.00036899, -0.00000115, 0.00000000],
+		[-6.27328973, -0.00036710, 0.00022489, 0.00036895, -0.00000115, 0.00000000],
+		[-6.27328984, -0.00036706, 0.00022486, 0.00036891, -0.00000115, 0.00000000],
+		[-6.27328994, -0.00036702, 0.00022483, 0.00036886, -0.00000115, 0.00000000],
+		[-6.27329005, -0.00036697, 0.00022481, 0.00036882, -0.00000115, 0.00000000],
+		[-6.27329015, -0.00036693, 0.00022478, 0.00036877, -0.00000115, 0.00000000],
+		[-6.27329025, -0.00036689, 0.00022475, 0.00036873, -0.00000115, 0.00000000],
+		[-6.27329036, -0.00036684, 0.00022473, 0.00036869, -0.00000115, 0.00000000],
+		[-6.27329046, -0.00036680, 0.00022470, 0.00036864, -0.00000115, 0.00000000],
+		[-6.27329057, -0.00036675, 0.00022467, 0.00036860, -0.00000115, 0.00000000],
+		[-6.27329067, -0.00036671, 0.00022465, 0.00036856, -0.00000115, 0.00000000],
+		[-6.27329078, -0.00036667, 0.00022462, 0.00036851, -0.00000115, 0.00000000],
+		[-6.27329088, -0.00036662, 0.00022459, 0.00036847, -0.00000115, 0.00000000],
+		[-6.27329098, -0.00036658, 0.00022457, 0.00036842, -0.00000115, 0.00000000],
+		[-6.27329109, -0.00036654, 0.00022454, 0.00036838, -0.00000115, 0.00000000],
+		[-6.27329119, -0.00036649, 0.00022451, 0.00036834, -0.00000115, 0.00000000],
+		[-6.27329129, -0.00036645, 0.00022449, 0.00036829, -0.00000115, 0.00000000],
+		[-6.27329140, -0.00036641, 0.00022446, 0.00036825, -0.00000115, 0.00000000],
+		[-6.27329150, -0.00036636, 0.00022443, 0.00036821, -0.00000115, 0.00000000],
+		[-6.27329161, -0.00036632, 0.00022441, 0.00036816, -0.00000115, 0.00000000],
+		[-6.27329171, -0.00036628, 0.00022438, 0.00036812, -0.00000115, 0.00000000],
+		[-6.27329181, -0.00036623, 0.00022435, 0.00036808, -0.00000115, 0.00000000],
+		[-6.27329192, -0.00036619, 0.00022433, 0.00036803, -0.00000115, 0.00000000],
+		[-6.27329202, -0.00036615, 0.00022430, 0.00036799, -0.00000115, 0.00000000],
+		[-6.27329212, -0.00036610, 0.00022427, 0.00036795, -0.00000115, 0.00000000],
+		[-6.27329223, -0.00036606, 0.00022425, 0.00036790, -0.00000115, 0.00000000],
+		[-6.27329233, -0.00036602, 0.00022422, 0.00036786, -0.00000115, 0.00000000],
+		[-6.27329244, -0.00036597, 0.00022419, 0.00036781, -0.00000115, 0.00000000],
+		[-6.27329254, -0.00036593, 0.00022417, 0.00036777, -0.00000115, 0.00000000],
+		[-6.27329264, -0.00036589, 0.00022414, 0.00036773, -0.00000115, 0.00000000],
+		[-6.27329275, -0.00036584, 0.00022412, 0.00036768, -0.00000115, 0.00000000],
+		[-6.27329285, -0.00036580, 0.00022409, 0.00036764, -0.00000115, 0.00000000],
+		[-6.27329295, -0.00036576, 0.00022406, 0.00036760, -0.00000115, 0.00000000],
+		[-6.27329306, -0.00036571, 0.00022404, 0.00036755, -0.00000115, 0.00000000],
+		[-6.27329316, -0.00036567, 0.00022401, 0.00036751, -0.00000115, 0.00000000],
+		[-6.27329326, -0.00036563, 0.00022398, 0.00036747, -0.00000115, 0.00000000],
+		[-6.27329337, -0.00036559, 0.00022396, 0.00036742, -0.00000115, 0.00000000],
+		[-6.27329347, -0.00036554, 0.00022393, 0.00036738, -0.00000115, 0.00000000],
+		[-6.27329357, -0.00036550, 0.00022390, 0.00036734, -0.00000115, 0.00000000],
+		[-6.27329368, -0.00036546, 0.00022388, 0.00036729, -0.00000115, 0.00000000],
+		[-6.27329378, -0.00036541, 0.00022385, 0.00036725, -0.00000115, 0.00000000],
+		[-6.27329388, -0.00036537, 0.00022382, 0.00036721, -0.00000115, 0.00000000],
+		[-6.27329399, -0.00036533, 0.00022380, 0.00036716, -0.00000115, 0.00000000],
+		[-6.27329409, -0.00036528, 0.00022377, 0.00036712, -0.00000115, 0.00000000],
+		[-6.27329419, -0.00036524, 0.00022374, 0.00036708, -0.00000115, 0.00000000],
+		[-6.27329430, -0.00036520, 0.00022372, 0.00036703, -0.00000115, 0.00000000],
+		[-6.27329440, -0.00036515, 0.00022369, 0.00036699, -0.00000115, 0.00000000],
+		[-6.27329450, -0.00036511, 0.00022367, 0.00036695, -0.00000115, 0.00000000],
+		[-6.27329461, -0.00036507, 0.00022364, 0.00036690, -0.00000115, 0.00000000],
+		[-6.27329471, -0.00036502, 0.00022361, 0.00036686, -0.00000115, 0.00000000],
+		[-6.27329481, -0.00036498, 0.00022359, 0.00036682, -0.00000115, 0.00000000],
+		[-6.27329491, -0.00036494, 0.00022356, 0.00036677, -0.00000115, 0.00000000],
+		[-6.27329502, -0.00036490, 0.00022353, 0.00036673, -0.00000115, 0.00000000],
+		[-6.27329512, -0.00036485, 0.00022351, 0.00036669, -0.00000115, 0.00000000],
+		[-6.27329522, -0.00036481, 0.00022348, 0.00036664, -0.00000115, 0.00000000],
+		[-6.27329533, -0.00036477, 0.00022345, 0.00036660, -0.00000115, 0.00000000],
+		[-6.27329543, -0.00036472, 0.00022343, 0.00036656, -0.00000115, 0.00000000],
+		[-6.27329553, -0.00036468, 0.00022340, 0.00036651, -0.00000115, 0.00000000],
+		[-6.27329564, -0.00036464, 0.00022338, 0.00036647, -0.00000115, 0.00000000],
+		[-6.27329574, -0.00036460, 0.00022335, 0.00036643, -0.00000115, 0.00000000],
+		[-6.27329584, -0.00036455, 0.00022332, 0.00036639, -0.00000115, 0.00000000],
+		[-6.27329594, -0.00036451, 0.00022330, 0.00036634, -0.00000115, 0.00000000],
+		[-6.27329605, -0.00036447, 0.00022327, 0.00036630, -0.00000115, 0.00000000],
+		[-6.27329615, -0.00036442, 0.00022324, 0.00036626, -0.00000115, 0.00000000],
+		[-6.27329625, -0.00036438, 0.00022322, 0.00036621, -0.00000115, 0.00000000],
+		[-6.27329635, -0.00036434, 0.00022319, 0.00036617, -0.00000115, 0.00000000],
+		[-6.27329646, -0.00036429, 0.00022317, 0.00036613, -0.00000115, 0.00000000],
+		[-6.27329656, -0.00036425, 0.00022314, 0.00036608, -0.00000115, 0.00000000],
+		[-6.27329666, -0.00036421, 0.00022311, 0.00036604, -0.00000115, 0.00000000],
+		[-6.27329677, -0.00036417, 0.00022309, 0.00036600, -0.00000115, 0.00000000],
+		[-6.27329687, -0.00036412, 0.00022306, 0.00036595, -0.00000115, 0.00000000],
+		[-6.27329697, -0.00036408, 0.00022303, 0.00036591, -0.00000115, 0.00000000],
+		[-6.27329707, -0.00036404, 0.00022301, 0.00036587, -0.00000115, 0.00000000],
+		[-6.27329718, -0.00036399, 0.00022298, 0.00036583, -0.00000115, 0.00000000],
+		[-6.27329728, -0.00036395, 0.00022296, 0.00036578, -0.00000115, 0.00000000],
+		[-6.27329738, -0.00036391, 0.00022293, 0.00036574, -0.00000115, 0.00000000],
+		[-6.27329748, -0.00036387, 0.00022290, 0.00036570, -0.00000115, 0.00000000],
+		[-6.27329758, -0.00036382, 0.00022288, 0.00036565, -0.00000115, 0.00000000],
+		[-6.27329769, -0.00036378, 0.00022285, 0.00036561, -0.00000115, 0.00000000],
+		[-6.27329779, -0.00036374, 0.00022282, 0.00036557, -0.00000115, 0.00000000],
+		[-6.27329789, -0.00036370, 0.00022280, 0.00036552, -0.00000115, 0.00000000],
+		[-6.27329799, -0.00036365, 0.00022277, 0.00036548, -0.00000115, 0.00000000],
+		[-6.27329810, -0.00036361, 0.00022275, 0.00036544, -0.00000115, 0.00000000],
+		[-6.27329820, -0.00036357, 0.00022272, 0.00036540, -0.00000115, 0.00000000],
+		[-6.27329830, -0.00036352, 0.00022269, 0.00036535, -0.00000115, 0.00000000],
+		[-6.27329840, -0.00036348, 0.00022267, 0.00036531, -0.00000115, 0.00000000],
+		[-6.27329851, -0.00036344, 0.00022264, 0.00036527, -0.00000115, 0.00000000],
+		[-6.27329861, -0.00036340, 0.00022261, 0.00036522, -0.00000115, 0.00000000],
+		[-6.27329871, -0.00036335, 0.00022259, 0.00036518, -0.00000115, 0.00000000],
+		[-6.27329881, -0.00036331, 0.00022256, 0.00036514, -0.00000115, 0.00000000],
+		[-6.27329891, -0.00036327, 0.00022254, 0.00036510, -0.00000115, 0.00000000],
+		[-6.27329902, -0.00036323, 0.00022251, 0.00036505, -0.00000115, 0.00000000],
+		[-6.27329912, -0.00036318, 0.00022248, 0.00036501, -0.00000115, 0.00000000],
+		[-6.27329922, -0.00036314, 0.00022246, 0.00036497, -0.00000115, 0.00000000],
+		[-6.27329932, -0.00036310, 0.00022243, 0.00036492, -0.00000115, 0.00000000],
+		[-6.27329942, -0.00036306, 0.00022241, 0.00036488, -0.00000115, 0.00000000],
+		[-6.27329953, -0.00036301, 0.00022238, 0.00036484, -0.00000115, 0.00000000],
+		[-6.27329963, -0.00036297, 0.00022235, 0.00036480, -0.00000115, 0.00000000],
+		[-6.27329973, -0.00036293, 0.00022233, 0.00036475, -0.00000115, 0.00000000],
+		[-6.27329983, -0.00036289, 0.00022230, 0.00036471, -0.00000115, 0.00000000],
+		[-6.27329993, -0.00036284, 0.00022228, 0.00036467, -0.00000115, 0.00000000],
+		[-6.27330004, -0.00036280, 0.00022225, 0.00036462, -0.00000115, 0.00000000],
+		[-6.27330014, -0.00036276, 0.00022222, 0.00036458, -0.00000115, 0.00000000],
+		[-6.27330024, -0.00036272, 0.00022220, 0.00036454, -0.00000115, 0.00000000],
+		[-6.27330034, -0.00036267, 0.00022217, 0.00036450, -0.00000115, 0.00000000],
+		[-6.27330044, -0.00036263, 0.00022215, 0.00036445, -0.00000115, 0.00000000],
+		[-6.27330054, -0.00036259, 0.00022212, 0.00036441, -0.00000115, 0.00000000],
+		[-6.27330065, -0.00036255, 0.00022209, 0.00036437, -0.00000115, 0.00000000],
+		[-6.27330075, -0.00036250, 0.00022207, 0.00036433, -0.00000115, 0.00000000],
+		[-6.27330085, -0.00036246, 0.00022204, 0.00036428, -0.00000115, 0.00000000],
+		[-6.27330095, -0.00036242, 0.00022202, 0.00036424, -0.00000115, 0.00000000],
+		[-6.27330105, -0.00036238, 0.00022199, 0.00036420, -0.00000115, 0.00000000],
+		[-6.27330115, -0.00036233, 0.00022196, 0.00036416, -0.00000115, 0.00000000],
+		[-6.27330126, -0.00036229, 0.00022194, 0.00036411, -0.00000115, 0.00000000],
+		[-6.27330136, -0.00036225, 0.00022191, 0.00036407, -0.00000115, 0.00000000],
+		[-6.27330146, -0.00036221, 0.00022189, 0.00036403, -0.00000115, 0.00000000],
+		[-6.27330156, -0.00036216, 0.00022186, 0.00036398, -0.00000115, 0.00000000],
+		[-6.27330166, -0.00036212, 0.00022183, 0.00036394, -0.00000115, 0.00000000],
+		[-6.27330176, -0.00036208, 0.00022181, 0.00036390, -0.00000115, 0.00000000],
+		[-6.27330186, -0.00036204, 0.00022178, 0.00036386, -0.00000115, 0.00000000],
+		[-6.27330197, -0.00036199, 0.00022176, 0.00036381, -0.00000115, 0.00000000],
+		[-6.27330207, -0.00036195, 0.00022173, 0.00036377, -0.00000115, 0.00000000],
+		[-6.27330217, -0.00036191, 0.00022170, 0.00036373, -0.00000115, 0.00000000],
+		[-6.27330227, -0.00036187, 0.00022168, 0.00036369, -0.00000115, 0.00000000],
+		[-6.27330237, -0.00036182, 0.00022165, 0.00036364, -0.00000115, 0.00000000],
+		[-6.27330247, -0.00036178, 0.00022163, 0.00036360, -0.00000115, 0.00000000],
+		[-6.27330257, -0.00036174, 0.00022160, 0.00036356, -0.00000115, 0.00000000],
+		[-6.27330267, -0.00036170, 0.00022157, 0.00036352, -0.00000115, 0.00000000],
+		[-6.27330278, -0.00036166, 0.00022155, 0.00036347, -0.00000115, 0.00000000],
+		[-6.27330288, -0.00036161, 0.00022152, 0.00036343, -0.00000115, 0.00000000],
+		[-6.27330298, -0.00036157, 0.00022150, 0.00036339, -0.00000115, 0.00000000],
+		[-6.27330308, -0.00036153, 0.00022147, 0.00036335, -0.00000115, 0.00000000],
+		[-6.27330318, -0.00036149, 0.00022144, 0.00036330, -0.00000115, 0.00000000],
+		[-6.27330328, -0.00036144, 0.00022142, 0.00036326, -0.00000115, 0.00000000],
+		[-6.27330338, -0.00036140, 0.00022139, 0.00036322, -0.00000115, 0.00000000],
+		[-6.27330348, -0.00036136, 0.00022137, 0.00036318, -0.00000115, 0.00000000],
+		[-6.27330358, -0.00036132, 0.00022134, 0.00036313, -0.00000115, 0.00000000],
+		[-6.27330368, -0.00036128, 0.00022132, 0.00036309, -0.00000115, 0.00000000],
+		[-6.27330379, -0.00036123, 0.00022129, 0.00036305, -0.00000115, 0.00000000],
+		[-6.27330389, -0.00036119, 0.00022126, 0.00036301, -0.00000115, 0.00000000],
+		[-6.27330399, -0.00036115, 0.00022124, 0.00036297, -0.00000115, 0.00000000],
+		[-6.27330409, -0.00036111, 0.00022121, 0.00036292, -0.00000115, 0.00000000],
+		[-6.27330419, -0.00036107, 0.00022119, 0.00036288, -0.00000115, 0.00000000],
+		[-6.27330429, -0.00036102, 0.00022116, 0.00036284, -0.00000115, 0.00000000],
+		[-6.27330439, -0.00036098, 0.00022113, 0.00036280, -0.00000115, 0.00000000],
+		[-6.27330449, -0.00036094, 0.00022111, 0.00036275, -0.00000115, 0.00000000],
+		[-6.27330459, -0.00036090, 0.00022108, 0.00036271, -0.00000115, 0.00000000],
+		[-6.27330469, -0.00036085, 0.00022106, 0.00036267, -0.00000115, 0.00000000],
+		[-6.27330479, -0.00036081, 0.00022103, 0.00036263, -0.00000115, 0.00000000],
+		[-6.27330489, -0.00036077, 0.00022101, 0.00036258, -0.00000115, 0.00000000],
+		[-6.27330499, -0.00036073, 0.00022098, 0.00036254, -0.00000115, 0.00000000],
+		[-6.27330510, -0.00036069, 0.00022095, 0.00036250, -0.00000115, 0.00000000],
+		[-6.27330520, -0.00036064, 0.00022093, 0.00036246, -0.00000115, 0.00000000],
+		[-6.27330530, -0.00036060, 0.00022090, 0.00036242, -0.00000115, 0.00000000],
+		[-6.27330540, -0.00036056, 0.00022088, 0.00036237, -0.00000115, 0.00000000],
+		[-6.27330550, -0.00036052, 0.00022085, 0.00036233, -0.00000115, 0.00000000],
+		[-6.27330560, -0.00036048, 0.00022083, 0.00036229, -0.00000115, 0.00000000],
+		[-6.27330570, -0.00036043, 0.00022080, 0.00036225, -0.00000115, 0.00000000],
+		[-6.27330580, -0.00036039, 0.00022077, 0.00036220, -0.00000115, 0.00000000],
+		[-6.27330590, -0.00036035, 0.00022075, 0.00036216, -0.00000115, 0.00000000],
+		[-6.27330600, -0.00036031, 0.00022072, 0.00036212, -0.00000115, 0.00000000],
+		[-6.27330610, -0.00036027, 0.00022070, 0.00036208, -0.00000115, 0.00000000],
+		[-6.27330620, -0.00036023, 0.00022067, 0.00036204, -0.00000115, 0.00000000],
+		[-6.27330630, -0.00036018, 0.00022065, 0.00036199, -0.00000115, 0.00000000],
+		[-6.27330640, -0.00036014, 0.00022062, 0.00036195, -0.00000115, 0.00000000],
+		[-6.27330650, -0.00036010, 0.00022059, 0.00036191, -0.00000115, 0.00000000],
+		[-6.27330660, -0.00036006, 0.00022057, 0.00036187, -0.00000115, 0.00000000],
+		[-6.27330670, -0.00036002, 0.00022054, 0.00036183, -0.00000115, 0.00000000],
+		[-6.27330680, -0.00035997, 0.00022052, 0.00036178, -0.00000115, 0.00000000],
+		[-6.27330690, -0.00035993, 0.00022049, 0.00036174, -0.00000115, 0.00000000],
+		[-6.27330700, -0.00035989, 0.00022047, 0.00036170, -0.00000115, 0.00000000],
+		[-6.27330710, -0.00035985, 0.00022044, 0.00036166, -0.00000115, 0.00000000],
+		[-6.27330720, -0.00035981, 0.00022041, 0.00036162, -0.00000115, 0.00000000],
+		[-6.27330730, -0.00035976, 0.00022039, 0.00036157, -0.00000115, 0.00000000],
+		[-6.27330740, -0.00035972, 0.00022036, 0.00036153, -0.00000115, 0.00000000],
+		[-6.27330750, -0.00035968, 0.00022034, 0.00036149, -0.00000115, 0.00000000],
+		[-6.27330760, -0.00035964, 0.00022031, 0.00036145, -0.00000115, 0.00000000],
+		[-6.27330770, -0.00035960, 0.00022029, 0.00036141, -0.00000115, 0.00000000],
+		[-6.27330780, -0.00035956, 0.00022026, 0.00036136, -0.00000115, 0.00000000],
+		[-6.27330790, -0.00035951, 0.00022024, 0.00036132, -0.00000115, 0.00000000],
+		[-6.27330800, -0.00035947, 0.00022021, 0.00036128, -0.00000115, 0.00000000],
+		[-6.27330810, -0.00035943, 0.00022018, 0.00036124, -0.00000115, 0.00000000],
+		[-6.27330820, -0.00035939, 0.00022016, 0.00036120, -0.00000115, 0.00000000],
+		[-6.27330830, -0.00035935, 0.00022013, 0.00036115, -0.00000115, 0.00000000],
+		[-6.27330840, -0.00035931, 0.00022011, 0.00036111, -0.00000115, 0.00000000],
+		[-6.27330850, -0.00035926, 0.00022008, 0.00036107, -0.00000115, 0.00000000],
+		[-6.27330860, -0.00035922, 0.00022006, 0.00036103, -0.00000115, 0.00000000],
+		[-6.27330870, -0.00035918, 0.00022003, 0.00036099, -0.00000115, 0.00000000],
+		[-6.27330880, -0.00035914, 0.00022001, 0.00036094, -0.00000115, 0.00000000],
+		[-6.27330890, -0.00035910, 0.00021998, 0.00036090, -0.00000115, 0.00000000],
+		[-6.27330900, -0.00035906, 0.00021995, 0.00036086, -0.00000115, 0.00000000],
+		[-6.27330910, -0.00035901, 0.00021993, 0.00036082, -0.00000115, 0.00000000],
+		[-6.27330920, -0.00035897, 0.00021990, 0.00036078, -0.00000115, 0.00000000],
+		[-6.27330930, -0.00035893, 0.00021988, 0.00036073, -0.00000115, 0.00000000],
+		[-6.27330940, -0.00035889, 0.00021985, 0.00036069, -0.00000115, 0.00000000],
+		[-6.27330950, -0.00035885, 0.00021983, 0.00036065, -0.00000115, 0.00000000],
+		[-6.27330960, -0.00035881, 0.00021980, 0.00036061, -0.00000115, 0.00000000],
+		[-6.27330970, -0.00035876, 0.00021978, 0.00036057, -0.00000115, 0.00000000],
+		[-6.27330980, -0.00035872, 0.00021975, 0.00036053, -0.00000115, 0.00000000],
+		[-6.27330990, -0.00035868, 0.00021972, 0.00036048, -0.00000115, 0.00000000],
+		[-6.27331000, -0.00035864, 0.00021970, 0.00036044, -0.00000115, 0.00000000],
+		[-6.27331010, -0.00035860, 0.00021967, 0.00036040, -0.00000115, 0.00000000],
+		[-6.27331020, -0.00035856, 0.00021965, 0.00036036, -0.00000115, 0.00000000],
+		[-6.27331030, -0.00035851, 0.00021962, 0.00036032, -0.00000115, 0.00000000],
+		[-6.27331040, -0.00035847, 0.00021960, 0.00036028, -0.00000115, 0.00000000],
+		[-6.27331050, -0.00035843, 0.00021957, 0.00036023, -0.00000115, 0.00000000],
+		[-6.27331059, -0.00035839, 0.00021955, 0.00036019, -0.00000115, 0.00000000],
+		[-6.27331069, -0.00035835, 0.00021952, 0.00036015, -0.00000115, 0.00000000],
+		[-6.27331079, -0.00035831, 0.00021950, 0.00036011, -0.00000115, 0.00000000],
+		[-6.27331089, -0.00035827, 0.00021947, 0.00036007, -0.00000115, 0.00000000],
+		[-6.27331099, -0.00035822, 0.00021944, 0.00036002, -0.00000115, 0.00000000],
+		[-6.27331109, -0.00035818, 0.00021942, 0.00035998, -0.00000115, 0.00000000],
+		[-6.27331119, -0.00035814, 0.00021939, 0.00035994, -0.00000115, 0.00000000],
+		[-6.27331129, -0.00035810, 0.00021937, 0.00035990, -0.00000115, 0.00000000],
+		[-6.27331139, -0.00035806, 0.00021934, 0.00035986, -0.00000115, 0.00000000],
+		[-6.27331149, -0.00035802, 0.00021932, 0.00035982, -0.00000115, 0.00000000],
+		[-6.27331159, -0.00035798, 0.00021929, 0.00035978, -0.00000115, 0.00000000],
+		[-6.27331169, -0.00035793, 0.00021927, 0.00035973, -0.00000115, 0.00000000],
+		[-6.27331179, -0.00035789, 0.00021924, 0.00035969, -0.00000115, 0.00000000],
+		[-6.27331188, -0.00035785, 0.00021922, 0.00035965, -0.00000115, 0.00000000],
+		[-6.27331198, -0.00035781, 0.00021919, 0.00035961, -0.00000115, 0.00000000],
+		[-6.27331208, -0.00035777, 0.00021917, 0.00035957, -0.00000115, 0.00000000],
+		[-6.27331218, -0.00035773, 0.00021914, 0.00035953, -0.00000115, 0.00000000],
+		[-6.27331228, -0.00035769, 0.00021911, 0.00035948, -0.00000115, 0.00000000],
+		[-6.27331238, -0.00035764, 0.00021909, 0.00035944, -0.00000115, 0.00000000],
+		[-6.27331248, -0.00035760, 0.00021906, 0.00035940, -0.00000115, 0.00000000],
+		[-6.27331258, -0.00035756, 0.00021904, 0.00035936, -0.00000115, 0.00000000],
+		[-6.27331268, -0.00035752, 0.00021901, 0.00035932, -0.00000115, 0.00000000],
+		[-6.27331277, -0.00035748, 0.00021899, 0.00035928, -0.00000115, 0.00000000],
+		[-6.27331287, -0.00035744, 0.00021896, 0.00035923, -0.00000115, 0.00000000],
+		[-6.27331297, -0.00035740, 0.00021894, 0.00035919, -0.00000115, 0.00000000],
+		[-6.27331307, -0.00035736, 0.00021891, 0.00035915, -0.00000115, 0.00000000],
+		[-6.27331317, -0.00035731, 0.00021889, 0.00035911, -0.00000115, 0.00000000],
+		[-6.27331327, -0.00035727, 0.00021886, 0.00035907, -0.00000115, 0.00000000],
+		[-6.27331337, -0.00035723, 0.00021884, 0.00035903, -0.00000115, 0.00000000],
+		[-6.27331347, -0.00035719, 0.00021881, 0.00035899, -0.00000115, 0.00000000],
+		[-6.27331356, -0.00035715, 0.00021879, 0.00035894, -0.00000115, 0.00000000],
+		[-6.27331366, -0.00035711, 0.00021876, 0.00035890, -0.00000115, 0.00000000],
+		[-6.27331376, -0.00035707, 0.00021874, 0.00035886, -0.00000115, 0.00000000],
+		[-6.27331386, -0.00035703, 0.00021871, 0.00035882, -0.00000115, 0.00000000],
+		[-6.27331396, -0.00035698, 0.00021869, 0.00035878, -0.00000115, 0.00000000],
+		[-6.27331406, -0.00035694, 0.00021866, 0.00035874, -0.00000115, 0.00000000],
+		[-6.27331416, -0.00035690, 0.00021863, 0.00035870, -0.00000115, 0.00000000],
+		[-6.27331425, -0.00035686, 0.00021861, 0.00035866, -0.00000115, 0.00000000],
+		[-6.27331435, -0.00035682, 0.00021858, 0.00035861, -0.00000115, 0.00000000],
+		[-6.27331445, -0.00035678, 0.00021856, 0.00035857, -0.00000115, 0.00000000],
+		[-6.27331455, -0.00035674, 0.00021853, 0.00035853, -0.00000115, 0.00000000],
+		[-6.27331465, -0.00035670, 0.00021851, 0.00035849, -0.00000115, 0.00000000],
+		[-6.27331475, -0.00035666, 0.00021848, 0.00035845, -0.00000115, 0.00000000],
+		[-6.27331485, -0.00035661, 0.00021846, 0.00035841, -0.00000115, 0.00000000],
+		[-6.27331494, -0.00035657, 0.00021843, 0.00035837, -0.00000115, 0.00000000],
+		[-6.27331504, -0.00035653, 0.00021841, 0.00035832, -0.00000115, 0.00000000],
+		[-6.27331514, -0.00035649, 0.00021838, 0.00035828, -0.00000115, 0.00000000],
+		[-6.27331524, -0.00035645, 0.00021836, 0.00035824, -0.00000115, 0.00000000],
+		[-6.27331534, -0.00035641, 0.00021833, 0.00035820, -0.00000115, 0.00000000],
+		[-6.27331543, -0.00035637, 0.00021831, 0.00035816, -0.00000115, 0.00000000],
+		[-6.27331553, -0.00035633, 0.00021828, 0.00035812, -0.00000115, 0.00000000],
+		[-6.27331563, -0.00035629, 0.00021826, 0.00035808, -0.00000115, 0.00000000],
+		[-6.27331573, -0.00035625, 0.00021823, 0.00035804, -0.00000115, 0.00000000],
+		[-6.27331583, -0.00035620, 0.00021821, 0.00035799, -0.00000115, 0.00000000],
+		[-6.27331593, -0.00035616, 0.00021818, 0.00035795, -0.00000115, 0.00000000],
+		[-6.27331602, -0.00035612, 0.00021816, 0.00035791, -0.00000115, 0.00000000],
+		[-6.27331612, -0.00035608, 0.00021813, 0.00035787, -0.00000115, 0.00000000],
+		[-6.27331622, -0.00035604, 0.00021811, 0.00035783, -0.00000115, 0.00000000],
+		[-6.27331632, -0.00035600, 0.00021808, 0.00035779, -0.00000115, 0.00000000],
+		[-6.27331642, -0.00035596, 0.00021806, 0.00035775, -0.00000115, 0.00000000],
+		[-6.27331651, -0.00035592, 0.00021803, 0.00035771, -0.00000115, 0.00000000],
+		[-6.27331661, -0.00035588, 0.00021801, 0.00035767, -0.00000115, 0.00000000],
+		[-6.27331671, -0.00035584, 0.00021798, 0.00035762, -0.00000115, 0.00000000],
+		[-6.27331681, -0.00035579, 0.00021796, 0.00035758, -0.00000115, 0.00000000],
+		[-6.27331691, -0.00035575, 0.00021793, 0.00035754, -0.00000115, 0.00000000],
+		[-6.27331700, -0.00035571, 0.00021791, 0.00035750, -0.00000115, 0.00000000],
+		[-6.27331710, -0.00035567, 0.00021788, 0.00035746, -0.00000115, 0.00000000],
+		[-6.27331720, -0.00035563, 0.00021786, 0.00035742, -0.00000115, 0.00000000],
+		[-6.27331730, -0.00035559, 0.00021783, 0.00035738, -0.00000115, 0.00000000],
+		[-6.27331740, -0.00035555, 0.00021781, 0.00035734, -0.00000115, 0.00000000],
+		[-6.27331749, -0.00035551, 0.00021778, 0.00035730, -0.00000115, 0.00000000],
+		[-6.27331759, -0.00035547, 0.00021776, 0.00035725, -0.00000115, 0.00000000],
+		[-6.27331769, -0.00035543, 0.00021773, 0.00035721, -0.00000115, 0.00000000],
+		[-6.27331779, -0.00035539, 0.00021771, 0.00035717, -0.00000115, 0.00000000],
+		[-6.27331788, -0.00035535, 0.00021768, 0.00035713, -0.00000115, 0.00000000],
+		[-6.27331798, -0.00035530, 0.00021766, 0.00035709, -0.00000115, 0.00000000],
+		[-6.27331808, -0.00035526, 0.00021763, 0.00035705, -0.00000115, 0.00000000],
+		[-6.27331818, -0.00035522, 0.00021761, 0.00035701, -0.00000115, 0.00000000],
+		[-6.27331827, -0.00035518, 0.00021758, 0.00035697, -0.00000115, 0.00000000],
+		[-6.27331837, -0.00035514, 0.00021756, 0.00035693, -0.00000115, 0.00000000],
+		[-6.27331847, -0.00035510, 0.00021753, 0.00035689, -0.00000115, 0.00000000],
+		[-6.27331857, -0.00035506, 0.00021751, 0.00035684, -0.00000115, 0.00000000],
+		[-6.27331866, -0.00035502, 0.00021748, 0.00035680, -0.00000115, 0.00000000],
+		[-6.27331876, -0.00035498, 0.00021746, 0.00035676, -0.00000115, 0.00000000],
+		[-6.27331886, -0.00035494, 0.00021743, 0.00035672, -0.00000115, 0.00000000],
+		[-6.27331896, -0.00035490, 0.00021741, 0.00035668, -0.00000115, 0.00000000],
+		[-6.27331905, -0.00035486, 0.00021738, 0.00035664, -0.00000115, 0.00000000],
+		[-6.27331915, -0.00035482, 0.00021736, 0.00035660, -0.00000115, 0.00000000],
+		[-6.27331925, -0.00035478, 0.00021733, 0.00035656, -0.00000115, 0.00000000],
+		[-6.27331935, -0.00035473, 0.00021731, 0.00035652, -0.00000115, 0.00000000],
+		[-6.27331944, -0.00035469, 0.00021728, 0.00035648, -0.00000115, 0.00000000],
+		[-6.27331954, -0.00035465, 0.00021726, 0.00035644, -0.00000115, 0.00000000],
+		[-6.27331964, -0.00035461, 0.00021723, 0.00035640, -0.00000115, 0.00000000],
+		[-6.27331974, -0.00035457, 0.00021721, 0.00035635, -0.00000115, 0.00000000],
+		[-6.27331983, -0.00035453, 0.00021718, 0.00035631, -0.00000115, 0.00000000],
+		[-6.27331993, -0.00035449, 0.00021716, 0.00035627, -0.00000115, 0.00000000],
+		[-6.27332003, -0.00035445, 0.00021713, 0.00035623, -0.00000115, 0.00000000],
+		[-6.27332012, -0.00035441, 0.00021711, 0.00035619, -0.00000115, 0.00000000],
+		[-6.27332022, -0.00035437, 0.00021708, 0.00035615, -0.00000115, 0.00000000],
+		[-6.27332032, -0.00035433, 0.00021706, 0.00035611, -0.00000115, 0.00000000],
+		[-6.27332042, -0.00035429, 0.00021703, 0.00035607, -0.00000115, 0.00000000],
+		[-6.27332051, -0.00035425, 0.00021701, 0.00035603, -0.00000115, 0.00000000],
+		[-6.27332061, -0.00035421, 0.00021698, 0.00035599, -0.00000115, 0.00000000],
+		[-6.27332071, -0.00035417, 0.00021696, 0.00035595, -0.00000115, 0.00000000],
+		[-6.27332080, -0.00035413, 0.00021693, 0.00035591, -0.00000115, 0.00000000],
+		[-6.27332090, -0.00035409, 0.00021691, 0.00035587, -0.00000115, 0.00000000],
+		[-6.27332100, -0.00035405, 0.00021688, 0.00035582, -0.00000115, 0.00000000],
+		[-6.27332109, -0.00035400, 0.00021686, 0.00035578, -0.00000115, 0.00000000],
+		[-6.27332119, -0.00035396, 0.00021683, 0.00035574, -0.00000115, 0.00000000],
+		[-6.27332129, -0.00035392, 0.00021681, 0.00035570, -0.00000115, 0.00000000],
+		[-6.27332139, -0.00035388, 0.00021678, 0.00035566, -0.00000115, 0.00000000],
+		[-6.27332148, -0.00035384, 0.00021676, 0.00035562, -0.00000115, 0.00000000],
+		[-6.27332158, -0.00035380, 0.00021673, 0.00035558, -0.00000115, 0.00000000],
+		[-6.27332168, -0.00035376, 0.00021671, 0.00035554, -0.00000115, 0.00000000],
+		[-6.27332177, -0.00035372, 0.00021669, 0.00035550, -0.00000115, 0.00000000],
+		[-6.27332187, -0.00035368, 0.00021666, 0.00035546, -0.00000115, 0.00000000],
+		[-6.27332197, -0.00035364, 0.00021664, 0.00035542, -0.00000115, 0.00000000],
+		[-6.27332206, -0.00035360, 0.00021661, 0.00035538, -0.00000115, 0.00000000],
+		[-6.27332216, -0.00035356, 0.00021659, 0.00035534, -0.00000115, 0.00000000],
+		[-6.27332226, -0.00035352, 0.00021656, 0.00035530, -0.00000115, 0.00000000],
+		[-6.27332235, -0.00035348, 0.00021654, 0.00035526, -0.00000115, 0.00000000],
+		[-6.27332245, -0.00035344, 0.00021651, 0.00035522, -0.00000115, 0.00000000],
+		[-6.27332255, -0.00035340, 0.00021649, 0.00035517, -0.00000115, 0.00000000],
+		[-6.27332264, -0.00035336, 0.00021646, 0.00035513, -0.00000115, 0.00000000],
+		[-6.27332274, -0.00035332, 0.00021644, 0.00035509, -0.00000115, 0.00000000],
+		[-6.27332284, -0.00035328, 0.00021641, 0.00035505, -0.00000115, 0.00000000],
+		[-6.27332293, -0.00035324, 0.00021639, 0.00035501, -0.00000115, 0.00000000],
+		[-6.27332303, -0.00035320, 0.00021636, 0.00035497, -0.00000115, 0.00000000],
+		[-6.27332313, -0.00035316, 0.00021634, 0.00035493, -0.00000115, 0.00000000],
+		[-6.27332322, -0.00035312, 0.00021631, 0.00035489, -0.00000115, 0.00000000],
+		[-6.27332332, -0.00035308, 0.00021629, 0.00035485, -0.00000115, 0.00000000],
+		[-6.27332341, -0.00035304, 0.00021626, 0.00035481, -0.00000115, 0.00000000],
+		[-6.27332351, -0.00035300, 0.00021624, 0.00035477, -0.00000115, 0.00000000],
+		[-6.27332361, -0.00035296, 0.00021622, 0.00035473, -0.00000115, 0.00000000],
+		[-6.27332370, -0.00035291, 0.00021619, 0.00035469, -0.00000115, 0.00000000],
+		[-6.27332380, -0.00035287, 0.00021617, 0.00035465, -0.00000115, 0.00000000],
+		[-6.27332390, -0.00035283, 0.00021614, 0.00035461, -0.00000115, 0.00000000],
+		[-6.27332399, -0.00035279, 0.00021612, 0.00035457, -0.00000115, 0.00000000],
+		[-6.27332409, -0.00035275, 0.00021609, 0.00035453, -0.00000115, 0.00000000],
+		[-6.27332418, -0.00035271, 0.00021607, 0.00035449, -0.00000115, 0.00000000],
+		[-6.27332428, -0.00035267, 0.00021604, 0.00035445, -0.00000115, 0.00000000],
+		[-6.27332438, -0.00035263, 0.00021602, 0.00035441, -0.00000115, 0.00000000],
+		[-6.27332447, -0.00035259, 0.00021599, 0.00035437, -0.00000115, 0.00000000],
+		[-6.27332457, -0.00035255, 0.00021597, 0.00035432, -0.00000115, 0.00000000],
+		[-6.27332467, -0.00035251, 0.00021594, 0.00035428, -0.00000115, 0.00000000],
+		[-6.27332476, -0.00035247, 0.00021592, 0.00035424, -0.00000115, 0.00000000],
+		[-6.27332486, -0.00035243, 0.00021590, 0.00035420, -0.00000115, 0.00000000],
+		[-6.27332495, -0.00035239, 0.00021587, 0.00035416, -0.00000115, 0.00000000],
+		[-6.27332505, -0.00035235, 0.00021585, 0.00035412, -0.00000115, 0.00000000],
+		[-6.27332515, -0.00035231, 0.00021582, 0.00035408, -0.00000115, 0.00000000],
+		[-6.27332524, -0.00035227, 0.00021580, 0.00035404, -0.00000115, 0.00000000],
+		[-6.27332534, -0.00035223, 0.00021577, 0.00035400, -0.00000115, 0.00000000],
+		[-6.27332543, -0.00035219, 0.00021575, 0.00035396, -0.00000115, 0.00000000],
+		[-6.27332553, -0.00035215, 0.00021572, 0.00035392, -0.00000115, 0.00000000],
+		[-6.27332563, -0.00035211, 0.00021570, 0.00035388, -0.00000115, 0.00000000],
+		[-6.27332572, -0.00035207, 0.00021567, 0.00035384, -0.00000115, 0.00000000],
+		[-6.27332582, -0.00035203, 0.00021565, 0.00035380, -0.00000115, 0.00000000],
+		[-6.27332591, -0.00035199, 0.00021563, 0.00035376, -0.00000115, 0.00000000],
+		[-6.27332601, -0.00035195, 0.00021560, 0.00035372, -0.00000115, 0.00000000],
+		[-6.27332611, -0.00035191, 0.00021558, 0.00035368, -0.00000115, 0.00000000],
+		[-6.27332620, -0.00035187, 0.00021555, 0.00035364, -0.00000115, 0.00000000],
+		[-6.27332630, -0.00035183, 0.00021553, 0.00035360, -0.00000115, 0.00000000],
+		[-6.27332639, -0.00035179, 0.00021550, 0.00035356, -0.00000115, 0.00000000],
+		[-6.27332649, -0.00035175, 0.00021548, 0.00035352, -0.00000115, 0.00000000],
+		[-6.27332658, -0.00035171, 0.00021545, 0.00035348, -0.00000115, 0.00000000],
+		[-6.27332668, -0.00035167, 0.00021543, 0.00035344, -0.00000115, 0.00000000],
+		[-6.27332678, -0.00035163, 0.00021540, 0.00035340, -0.00000115, 0.00000000],
+		[-6.27332687, -0.00035159, 0.00021538, 0.00035336, -0.00000115, 0.00000000],
+		[-6.27332697, -0.00035155, 0.00021536, 0.00035332, -0.00000115, 0.00000000],
+		[-6.27332706, -0.00035151, 0.00021533, 0.00035328, -0.00000115, 0.00000000],
+		[-6.27332716, -0.00035147, 0.00021531, 0.00035324, -0.00000115, 0.00000000],
+		[-6.27332725, -0.00035143, 0.00021528, 0.00035320, -0.00000115, 0.00000000],
+		[-6.27332735, -0.00035139, 0.00021526, 0.00035316, -0.00000115, 0.00000000],
+		[-6.27332744, -0.00035135, 0.00021523, 0.00035312, -0.00000115, 0.00000000],
+		[-6.27332754, -0.00035131, 0.00021521, 0.00035308, -0.00000115, 0.00000000],
+		[-6.27332763, -0.00035127, 0.00021518, 0.00035304, -0.00000115, 0.00000000],
+		[-6.27332773, -0.00035123, 0.00021516, 0.00035300, -0.00000115, 0.00000000],
+		[-6.27332783, -0.00035119, 0.00021514, 0.00035296, -0.00000115, 0.00000000],
+		[-6.27332792, -0.00035115, 0.00021511, 0.00035292, -0.00000115, 0.00000000],
+		[-6.27332802, -0.00035111, 0.00021509, 0.00035288, -0.00000115, 0.00000000],
+		[-6.27332811, -0.00035107, 0.00021506, 0.00035284, -0.00000115, 0.00000000],
+		[-6.27332821, -0.00035103, 0.00021504, 0.00035280, -0.00000115, 0.00000000],
+		[-6.27332830, -0.00035099, 0.00021501, 0.00035276, -0.00000115, 0.00000000],
+		[-6.27332840, -0.00035095, 0.00021499, 0.00035272, -0.00000115, 0.00000000],
+		[-6.27332849, -0.00035091, 0.00021496, 0.00035268, -0.00000115, 0.00000000],
+		[-6.27332859, -0.00035087, 0.00021494, 0.00035264, -0.00000115, 0.00000000],
+		[-6.27332868, -0.00035084, 0.00021492, 0.00035260, -0.00000115, 0.00000000],
+		[-6.27332878, -0.00035080, 0.00021489, 0.00035256, -0.00000115, 0.00000000],
+		[-6.27332887, -0.00035076, 0.00021487, 0.00035252, -0.00000115, 0.00000000],
+		[-6.27332897, -0.00035072, 0.00021484, 0.00035248, -0.00000115, 0.00000000],
+		[-6.27332906, -0.00035068, 0.00021482, 0.00035244, -0.00000115, 0.00000000],
+		[-6.27332916, -0.00035064, 0.00021479, 0.00035240, -0.00000115, 0.00000000],
+		[-6.27332925, -0.00035060, 0.00021477, 0.00035236, -0.00000115, 0.00000000],
+		[-6.27332935, -0.00035056, 0.00021475, 0.00035232, -0.00000115, 0.00000000],
+		[-6.27332944, -0.00035052, 0.00021472, 0.00035228, -0.00000115, 0.00000000],
+		[-6.27332954, -0.00035048, 0.00021470, 0.00035224, -0.00000115, 0.00000000],
+		[-6.27332963, -0.00035044, 0.00021467, 0.00035220, -0.00000115, 0.00000000],
+		[-6.27332973, -0.00035040, 0.00021465, 0.00035216, -0.00000115, 0.00000000],
+		[-6.27332982, -0.00035036, 0.00021462, 0.00035212, -0.00000115, 0.00000000],
+		[-6.27332992, -0.00035032, 0.00021460, 0.00035208, -0.00000115, 0.00000000],
+		[-6.27333001, -0.00035028, 0.00021458, 0.00035204, -0.00000115, 0.00000000],
+		[-6.27333011, -0.00035024, 0.00021455, 0.00035200, -0.00000115, 0.00000000],
+		[-6.27333020, -0.00035020, 0.00021453, 0.00035196, -0.00000115, 0.00000000],
+		[-6.27333030, -0.00035016, 0.00021450, 0.00035192, -0.00000115, 0.00000000],
+		[-6.27333039, -0.00035012, 0.00021448, 0.00035188, -0.00000115, 0.00000000],
+		[-6.27333049, -0.00035008, 0.00021445, 0.00035184, -0.00000115, 0.00000000],
+		[-6.27333058, -0.00035004, 0.00021443, 0.00035180, -0.00000115, 0.00000000],
+		[-6.27333068, -0.00035000, 0.00021441, 0.00035176, -0.00000115, 0.00000000],
+		[-6.27333077, -0.00034996, 0.00021438, 0.00035172, -0.00000115, 0.00000000],
+		[-6.27333087, -0.00034992, 0.00021436, 0.00035168, -0.00000115, 0.00000000],
+		[-6.27333096, -0.00034988, 0.00021433, 0.00035164, -0.00000115, 0.00000000],
+		[-6.27333106, -0.00034984, 0.00021431, 0.00035160, -0.00000115, 0.00000000],
+		[-6.27333115, -0.00034980, 0.00021428, 0.00035156, -0.00000115, 0.00000000],
+		[-6.27333125, -0.00034976, 0.00021426, 0.00035152, -0.00000115, 0.00000000],
+		[-6.27333134, -0.00034973, 0.00021424, 0.00035148, -0.00000115, 0.00000000],
+		[-6.27333144, -0.00034969, 0.00021421, 0.00035144, -0.00000115, 0.00000000],
+		[-6.27333153, -0.00034965, 0.00021419, 0.00035140, -0.00000115, 0.00000000],
+		[-6.27333162, -0.00034961, 0.00021416, 0.00035136, -0.00000115, 0.00000000],
+		[-6.27333172, -0.00034957, 0.00021414, 0.00035132, -0.00000115, 0.00000000],
+		[-6.27333181, -0.00034953, 0.00021412, 0.00035128, -0.00000115, 0.00000000],
+		[-6.27333191, -0.00034949, 0.00021409, 0.00035124, -0.00000115, 0.00000000],
+		[-6.27333200, -0.00034945, 0.00021407, 0.00035120, -0.00000115, 0.00000000],
+		[-6.27333210, -0.00034941, 0.00021404, 0.00035117, -0.00000115, 0.00000000],
+		[-6.27333219, -0.00034937, 0.00021402, 0.00035113, -0.00000115, 0.00000000],
+		[-6.27333229, -0.00034933, 0.00021399, 0.00035109, -0.00000115, 0.00000000],
+		[-6.27333238, -0.00034929, 0.00021397, 0.00035105, -0.00000115, 0.00000000],
+		[-6.27333247, -0.00034925, 0.00021395, 0.00035101, -0.00000115, 0.00000000],
+		[-6.27333257, -0.00034921, 0.00021392, 0.00035097, -0.00000115, 0.00000000],
+		[-6.27333266, -0.00034917, 0.00021390, 0.00035093, -0.00000115, 0.00000000],
+		[-6.27333276, -0.00034913, 0.00021387, 0.00035089, -0.00000115, 0.00000000],
+		[-6.27333285, -0.00034909, 0.00021385, 0.00035085, -0.00000115, 0.00000000],
+		[-6.27333295, -0.00034905, 0.00021383, 0.00035081, -0.00000115, 0.00000000],
+		[-6.27333304, -0.00034902, 0.00021380, 0.00035077, -0.00000115, 0.00000000],
+		[-6.27333313, -0.00034898, 0.00021378, 0.00035073, -0.00000115, 0.00000000],
+		[-6.27333323, -0.00034894, 0.00021375, 0.00035069, -0.00000115, 0.00000000],
+		[-6.27333332, -0.00034890, 0.00021373, 0.00035065, -0.00000115, 0.00000000],
+		[-6.27333342, -0.00034886, 0.00021370, 0.00035061, -0.00000115, 0.00000000],
+		[-6.27333351, -0.00034882, 0.00021368, 0.00035057, -0.00000115, 0.00000000],
+		[-6.27333360, -0.00034878, 0.00021366, 0.00035053, -0.00000115, 0.00000000],
+		[-6.27333370, -0.00034874, 0.00021363, 0.00035049, -0.00000115, 0.00000000],
+		[-6.27333379, -0.00034870, 0.00021361, 0.00035045, -0.00000115, 0.00000000],
+		[-6.27333389, -0.00034866, 0.00021358, 0.00035041, -0.00000115, 0.00000000],
+		[-6.27333398, -0.00034862, 0.00021356, 0.00035037, -0.00000115, 0.00000000],
+		[-6.27333408, -0.00034858, 0.00021354, 0.00035033, -0.00000115, 0.00000000],
+		[-6.27333417, -0.00034854, 0.00021351, 0.00035030, -0.00000115, 0.00000000],
+		[-6.27333426, -0.00034850, 0.00021349, 0.00035026, -0.00000115, 0.00000000],
+		[-6.27333436, -0.00034847, 0.00021346, 0.00035022, -0.00000115, 0.00000000],
+		[-6.27333445, -0.00034843, 0.00021344, 0.00035018, -0.00000115, 0.00000000],
+		[-6.27333454, -0.00034839, 0.00021342, 0.00035014, -0.00000115, 0.00000000],
+		[-6.27333464, -0.00034835, 0.00021339, 0.00035010, -0.00000115, 0.00000000],
+		[-6.27333473, -0.00034831, 0.00021337, 0.00035006, -0.00000115, 0.00000000],
+		[-6.27333483, -0.00034827, 0.00021334, 0.00035002, -0.00000115, 0.00000000],
+		[-6.27333492, -0.00034823, 0.00021332, 0.00034998, -0.00000115, 0.00000000],
+		[-6.27333501, -0.00034819, 0.00021330, 0.00034994, -0.00000115, 0.00000000],
+		[-6.27333511, -0.00034815, 0.00021327, 0.00034990, -0.00000115, 0.00000000],
+		[-6.27333520, -0.00034811, 0.00021325, 0.00034986, -0.00000115, 0.00000000],
+		[-6.27333530, -0.00034807, 0.00021322, 0.00034982, -0.00000115, 0.00000000],
+		[-6.27333539, -0.00034803, 0.00021320, 0.00034978, -0.00000115, 0.00000000],
+		[-6.27333548, -0.00034800, 0.00021318, 0.00034974, -0.00000115, 0.00000000],
+		[-6.27333558, -0.00034796, 0.00021315, 0.00034970, -0.00000115, 0.00000000],
+		[-6.27333567, -0.00034792, 0.00021313, 0.00034967, -0.00000115, 0.00000000],
+		[-6.27333576, -0.00034788, 0.00021310, 0.00034963, -0.00000115, 0.00000000],
+		[-6.27333586, -0.00034784, 0.00021308, 0.00034959, -0.00000115, 0.00000000],
+		[-6.27333595, -0.00034780, 0.00021306, 0.00034955, -0.00000115, 0.00000000],
+		[-6.27333604, -0.00034776, 0.00021303, 0.00034951, -0.00000115, 0.00000000],
+		[-6.27333614, -0.00034772, 0.00021301, 0.00034947, -0.00000115, 0.00000000],
+		[-6.27333623, -0.00034768, 0.00021298, 0.00034943, -0.00000115, 0.00000000],
+		[-6.27333632, -0.00034764, 0.00021296, 0.00034939, -0.00000115, 0.00000000],
+		[-6.27333642, -0.00034760, 0.00021294, 0.00034935, -0.00000115, 0.00000000],
+		[-6.27333651, -0.00034757, 0.00021291, 0.00034931, -0.00000115, 0.00000000],
+		[-6.27333661, -0.00034753, 0.00021289, 0.00034927, -0.00000115, 0.00000000],
+		[-6.27333670, -0.00034749, 0.00021286, 0.00034923, -0.00000115, 0.00000000],
+		[-6.27333679, -0.00034745, 0.00021284, 0.00034919, -0.00000115, 0.00000000],
+		[-6.27333689, -0.00034741, 0.00021282, 0.00034915, -0.00000115, 0.00000000],
+		[-6.27333698, -0.00034737, 0.00021279, 0.00034912, -0.00000115, 0.00000000],
+		[-6.27333707, -0.00034733, 0.00021277, 0.00034908, -0.00000115, 0.00000000],
+		[-6.27333717, -0.00034729, 0.00021275, 0.00034904, -0.00000115, 0.00000000],
+		[-6.27333726, -0.00034725, 0.00021272, 0.00034900, -0.00000115, 0.00000000],
+		[-6.27333735, -0.00034721, 0.00021270, 0.00034896, -0.00000115, 0.00000000],
+		[-6.27333745, -0.00034718, 0.00021267, 0.00034892, -0.00000115, 0.00000000],
+		[-6.27333754, -0.00034714, 0.00021265, 0.00034888, -0.00000115, 0.00000000],
+		[-6.27333763, -0.00034710, 0.00021263, 0.00034884, -0.00000115, 0.00000000],
+		[-6.27333772, -0.00034706, 0.00021260, 0.00034880, -0.00000115, 0.00000000],
+		[-6.27333782, -0.00034702, 0.00021258, 0.00034876, -0.00000115, 0.00000000],
+		[-6.27333791, -0.00034698, 0.00021255, 0.00034872, -0.00000115, 0.00000000],
+		[-6.27333800, -0.00034694, 0.00021253, 0.00034869, -0.00000115, 0.00000000],
+		[-6.27333810, -0.00034690, 0.00021251, 0.00034865, -0.00000115, 0.00000000],
+		[-6.27333819, -0.00034686, 0.00021248, 0.00034861, -0.00000115, 0.00000000],
+		[-6.27333828, -0.00034683, 0.00021246, 0.00034857, -0.00000115, 0.00000000],
+		[-6.27333838, -0.00034679, 0.00021244, 0.00034853, -0.00000115, 0.00000000],
+		[-6.27333847, -0.00034675, 0.00021241, 0.00034849, -0.00000115, 0.00000000],
+		[-6.27333856, -0.00034671, 0.00021239, 0.00034845, -0.00000115, 0.00000000],
+		[-6.27333866, -0.00034667, 0.00021236, 0.00034841, -0.00000115, 0.00000000],
+		[-6.27333875, -0.00034663, 0.00021234, 0.00034837, -0.00000115, 0.00000000],
+		[-6.27333884, -0.00034659, 0.00021232, 0.00034833, -0.00000115, 0.00000000],
+		[-6.27333893, -0.00034655, 0.00021229, 0.00034829, -0.00000115, 0.00000000],
+		[-6.27333903, -0.00034652, 0.00021227, 0.00034826, -0.00000115, 0.00000000],
+		[-6.27333912, -0.00034648, 0.00021225, 0.00034822, -0.00000115, 0.00000000],
+		[-6.27333921, -0.00034644, 0.00021222, 0.00034818, -0.00000115, 0.00000000],
+		[-6.27333931, -0.00034640, 0.00021220, 0.00034814, -0.00000115, 0.00000000],
+		[-6.27333940, -0.00034636, 0.00021217, 0.00034810, -0.00000115, 0.00000000],
+		[-6.27333949, -0.00034632, 0.00021215, 0.00034806, -0.00000115, 0.00000000],
+		[-6.27333958, -0.00034628, 0.00021213, 0.00034802, -0.00000115, 0.00000000],
+		[-6.27333968, -0.00034624, 0.00021210, 0.00034798, -0.00000115, 0.00000000],
+		[-6.27333977, -0.00034620, 0.00021208, 0.00034794, -0.00000115, 0.00000000],
+		[-6.27333986, -0.00034617, 0.00021206, 0.00034791, -0.00000115, 0.00000000],
+		[-6.27333995, -0.00034613, 0.00021203, 0.00034787, -0.00000115, 0.00000000],
+		[-6.27334005, -0.00034609, 0.00021201, 0.00034783, -0.00000115, 0.00000000],
+		[-6.27334014, -0.00034605, 0.00021198, 0.00034779, -0.00000115, 0.00000000],
+		[-6.27334023, -0.00034601, 0.00021196, 0.00034775, -0.00000115, 0.00000000],
+		[-6.27334033, -0.00034597, 0.00021194, 0.00034771, -0.00000115, 0.00000000],
+		[-6.27334042, -0.00034593, 0.00021191, 0.00034767, -0.00000115, 0.00000000],
+		[-6.27334051, -0.00034590, 0.00021189, 0.00034763, -0.00000115, 0.00000000],
+		[-6.27334060, -0.00034586, 0.00021187, 0.00034759, -0.00000115, 0.00000000],
+		[-6.27334070, -0.00034582, 0.00021184, 0.00034756, -0.00000115, 0.00000000],
+		[-6.27334079, -0.00034578, 0.00021182, 0.00034752, -0.00000115, 0.00000000],
+		[-6.27334088, -0.00034574, 0.00021179, 0.00034748, -0.00000115, 0.00000000],
+		[-6.27334097, -0.00034570, 0.00021177, 0.00034744, -0.00000115, 0.00000000],
+		[-6.27334107, -0.00034566, 0.00021175, 0.00034740, -0.00000115, 0.00000000],
+		[-6.27334116, -0.00034563, 0.00021172, 0.00034736, -0.00000115, 0.00000000],
+		[-6.27334125, -0.00034559, 0.00021170, 0.00034732, -0.00000115, 0.00000000],
+		[-6.27334134, -0.00034555, 0.00021168, 0.00034728, -0.00000115, 0.00000000],
+		[-6.27334143, -0.00034551, 0.00021165, 0.00034725, -0.00000115, 0.00000000],
+		[-6.27334153, -0.00034547, 0.00021163, 0.00034721, -0.00000115, 0.00000000],
+		[-6.27334162, -0.00034543, 0.00021161, 0.00034717, -0.00000115, 0.00000000],
+		[-6.27334171, -0.00034539, 0.00021158, 0.00034713, -0.00000115, 0.00000000],
+		[-6.27334180, -0.00034536, 0.00021156, 0.00034709, -0.00000115, 0.00000000],
+		[-6.27334190, -0.00034532, 0.00021153, 0.00034705, -0.00000115, 0.00000000],
+		[-6.27334199, -0.00034528, 0.00021151, 0.00034701, -0.00000115, 0.00000000],
+		[-6.27334208, -0.00034524, 0.00021149, 0.00034697, -0.00000115, 0.00000000],
+		[-6.27334217, -0.00034520, 0.00021146, 0.00034694, -0.00000115, 0.00000000],
+		[-6.27334226, -0.00034516, 0.00021144, 0.00034690, -0.00000115, 0.00000000],
+		[-6.27334236, -0.00034512, 0.00021142, 0.00034686, -0.00000115, 0.00000000],
+		[-6.27334245, -0.00034509, 0.00021139, 0.00034682, -0.00000115, 0.00000000],
+		[-6.27334254, -0.00034505, 0.00021137, 0.00034678, -0.00000115, 0.00000000],
+		[-6.27334263, -0.00034501, 0.00021135, 0.00034674, -0.00000115, 0.00000000],
+		[-6.27334273, -0.00034497, 0.00021132, 0.00034670, -0.00000115, 0.00000000],
+		[-6.27334282, -0.00034493, 0.00021130, 0.00034666, -0.00000115, 0.00000000],
+		[-6.27334291, -0.00034489, 0.00021128, 0.00034663, -0.00000115, 0.00000000],
+		[-6.27334300, -0.00034486, 0.00021125, 0.00034659, -0.00000115, 0.00000000],
+		[-6.27334309, -0.00034482, 0.00021123, 0.00034655, -0.00000115, 0.00000000],
+		[-6.27334319, -0.00034478, 0.00021120, 0.00034651, -0.00000115, 0.00000000],
+		[-6.27334328, -0.00034474, 0.00021118, 0.00034647, -0.00000115, 0.00000000],
+		[-6.27334337, -0.00034470, 0.00021116, 0.00034643, -0.00000115, 0.00000000],
+		[-6.27334346, -0.00034466, 0.00021113, 0.00034639, -0.00000115, 0.00000000],
+		[-6.27334355, -0.00034462, 0.00021111, 0.00034636, -0.00000115, 0.00000000],
+		[-6.27334364, -0.00034459, 0.00021109, 0.00034632, -0.00000115, 0.00000000],
+		[-6.27334374, -0.00034455, 0.00021106, 0.00034628, -0.00000115, 0.00000000],
+		[-6.27334383, -0.00034451, 0.00021104, 0.00034624, -0.00000115, 0.00000000],
+		[-6.27334392, -0.00034447, 0.00021102, 0.00034620, -0.00000115, 0.00000000],
+		[-6.27334401, -0.00034443, 0.00021099, 0.00034616, -0.00000115, 0.00000000],
+		[-6.27334410, -0.00034439, 0.00021097, 0.00034612, -0.00000115, 0.00000000],
+		[-6.27334420, -0.00034436, 0.00021095, 0.00034609, -0.00000115, 0.00000000],
+		[-6.27334429, -0.00034432, 0.00021092, 0.00034605, -0.00000115, 0.00000000],
+		[-6.27334438, -0.00034428, 0.00021090, 0.00034601, -0.00000115, 0.00000000],
+		[-6.27334447, -0.00034424, 0.00021088, 0.00034597, -0.00000115, 0.00000000],
+		[-6.27334456, -0.00034420, 0.00021085, 0.00034593, -0.00000115, 0.00000000],
+		[-6.27334465, -0.00034417, 0.00021083, 0.00034589, -0.00000115, 0.00000000],
+		[-6.27334475, -0.00034413, 0.00021081, 0.00034586, -0.00000115, 0.00000000],
+		[-6.27334484, -0.00034409, 0.00021078, 0.00034582, -0.00000115, 0.00000000],
+		[-6.27334493, -0.00034405, 0.00021076, 0.00034578, -0.00000115, 0.00000000],
+		[-6.27334502, -0.00034401, 0.00021073, 0.00034574, -0.00000115, 0.00000000],
+		[-6.27334511, -0.00034397, 0.00021071, 0.00034570, -0.00000115, 0.00000000],
+		[-6.27334520, -0.00034394, 0.00021069, 0.00034566, -0.00000115, 0.00000000],
+		[-6.27334529, -0.00034390, 0.00021066, 0.00034562, -0.00000115, 0.00000000],
+		[-6.27334539, -0.00034386, 0.00021064, 0.00034559, -0.00000115, 0.00000000],
+		[-6.27334548, -0.00034382, 0.00021062, 0.00034555, -0.00000115, 0.00000000],
+		[-6.27334557, -0.00034378, 0.00021059, 0.00034551, -0.00000115, 0.00000000],
+		[-6.27334566, -0.00034374, 0.00021057, 0.00034547, -0.00000115, 0.00000000],
+		[-6.27334575, -0.00034371, 0.00021055, 0.00034543, -0.00000116, 0.00000000],
+		[-6.27334584, -0.00034367, 0.00021052, 0.00034539, -0.00000116, 0.00000000],
+		[-6.27334593, -0.00034363, 0.00021050, 0.00034536, -0.00000116, 0.00000000],
+		[-6.27334603, -0.00034359, 0.00021048, 0.00034532, -0.00000116, 0.00000000],
+		[-6.27334612, -0.00034355, 0.00021045, 0.00034528, -0.00000116, 0.00000000],
+		[-6.27334621, -0.00034352, 0.00021043, 0.00034524, -0.00000116, 0.00000000],
+		[-6.27334630, -0.00034348, 0.00021041, 0.00034520, -0.00000116, 0.00000000],
+		[-6.27334639, -0.00034344, 0.00021038, 0.00034516, -0.00000116, 0.00000000],
+		[-6.27334648, -0.00034340, 0.00021036, 0.00034513, -0.00000116, 0.00000000],
+		[-6.27334657, -0.00034336, 0.00021034, 0.00034509, -0.00000116, 0.00000000],
+		[-6.27334666, -0.00034333, 0.00021031, 0.00034505, -0.00000116, 0.00000000],
+		[-6.27334676, -0.00034329, 0.00021029, 0.00034501, -0.00000116, 0.00000000],
+		[-6.27334685, -0.00034325, 0.00021027, 0.00034497, -0.00000116, 0.00000000],
+		[-6.27334694, -0.00034321, 0.00021024, 0.00034494, -0.00000116, 0.00000000],
+		[-6.27334703, -0.00034317, 0.00021022, 0.00034490, -0.00000116, 0.00000000],
+		[-6.27334712, -0.00034313, 0.00021020, 0.00034486, -0.00000116, 0.00000000],
+		[-6.27334721, -0.00034310, 0.00021017, 0.00034482, -0.00000116, 0.00000000],
+		[-6.27334730, -0.00034306, 0.00021015, 0.00034478, -0.00000116, 0.00000000],
+		[-6.27334739, -0.00034302, 0.00021013, 0.00034474, -0.00000116, 0.00000000],
+		[-6.27334748, -0.00034298, 0.00021010, 0.00034471, -0.00000116, 0.00000000],
+		[-6.27334758, -0.00034294, 0.00021008, 0.00034467, -0.00000116, 0.00000000],
+		[-6.27334767, -0.00034291, 0.00021006, 0.00034463, -0.00000116, 0.00000000],
+		[-6.27334776, -0.00034287, 0.00021003, 0.00034459, -0.00000116, 0.00000000],
+		[-6.27334785, -0.00034283, 0.00021001, 0.00034455, -0.00000116, 0.00000000],
+		[-6.27334794, -0.00034279, 0.00020999, 0.00034451, -0.00000116, 0.00000000],
+		[-6.27334803, -0.00034276, 0.00020996, 0.00034448, -0.00000116, 0.00000000],
+		[-6.27334812, -0.00034272, 0.00020994, 0.00034444, -0.00000116, 0.00000000],
+		[-6.27334821, -0.00034268, 0.00020992, 0.00034440, -0.00000116, 0.00000000],
+		[-6.27334830, -0.00034264, 0.00020989, 0.00034436, -0.00000116, 0.00000000],
+		[-6.27334839, -0.00034260, 0.00020987, 0.00034432, -0.00000116, 0.00000000],
+		[-6.27334848, -0.00034257, 0.00020985, 0.00034429, -0.00000116, 0.00000000],
+		[-6.27334857, -0.00034253, 0.00020983, 0.00034425, -0.00000116, 0.00000000],
+		[-6.27334867, -0.00034249, 0.00020980, 0.00034421, -0.00000116, 0.00000000],
+		[-6.27334876, -0.00034245, 0.00020978, 0.00034417, -0.00000116, 0.00000000],
+		[-6.27334885, -0.00034241, 0.00020976, 0.00034413, -0.00000116, 0.00000000],
+		[-6.27334894, -0.00034238, 0.00020973, 0.00034410, -0.00000116, 0.00000000],
+		[-6.27334903, -0.00034234, 0.00020971, 0.00034406, -0.00000116, 0.00000000],
+		[-6.27334912, -0.00034230, 0.00020969, 0.00034402, -0.00000116, 0.00000000],
+		[-6.27334921, -0.00034226, 0.00020966, 0.00034398, -0.00000116, 0.00000000],
+		[-6.27334930, -0.00034222, 0.00020964, 0.00034394, -0.00000116, 0.00000000],
+		[-6.27334939, -0.00034219, 0.00020962, 0.00034391, -0.00000116, 0.00000000],
+		[-6.27334948, -0.00034215, 0.00020959, 0.00034387, -0.00000116, 0.00000000],
+		[-6.27334957, -0.00034211, 0.00020957, 0.00034383, -0.00000116, 0.00000000],
+		[-6.27334966, -0.00034207, 0.00020955, 0.00034379, -0.00000116, 0.00000000],
+		[-6.27334975, -0.00034204, 0.00020952, 0.00034375, -0.00000116, 0.00000000],
+		[-6.27334984, -0.00034200, 0.00020950, 0.00034372, -0.00000116, 0.00000000],
+		[-6.27334993, -0.00034196, 0.00020948, 0.00034368, -0.00000116, 0.00000000],
+		[-6.27335002, -0.00034192, 0.00020945, 0.00034364, -0.00000116, 0.00000000],
+		[-6.27335011, -0.00034188, 0.00020943, 0.00034360, -0.00000116, 0.00000000],
+		[-6.27335021, -0.00034185, 0.00020941, 0.00034356, -0.00000116, 0.00000000],
+		[-6.27335030, -0.00034181, 0.00020938, 0.00034353, -0.00000116, 0.00000000],
+		[-6.27335039, -0.00034177, 0.00020936, 0.00034349, -0.00000116, 0.00000000],
+		[-6.27335048, -0.00034173, 0.00020934, 0.00034345, -0.00000116, 0.00000000],
+		[-6.27335057, -0.00034170, 0.00020932, 0.00034341, -0.00000116, 0.00000000],
+		[-6.27335066, -0.00034166, 0.00020929, 0.00034337, -0.00000116, 0.00000000],
+		[-6.27335075, -0.00034162, 0.00020927, 0.00034334, -0.00000116, 0.00000000],
+		[-6.27335084, -0.00034158, 0.00020925, 0.00034330, -0.00000116, 0.00000000],
+		[-6.27335093, -0.00034154, 0.00020922, 0.00034326, -0.00000116, 0.00000000],
+		[-6.27335102, -0.00034151, 0.00020920, 0.00034322, -0.00000116, 0.00000000],
+		[-6.27335111, -0.00034147, 0.00020918, 0.00034318, -0.00000116, 0.00000000],
+		[-6.27335120, -0.00034143, 0.00020915, 0.00034315, -0.00000116, 0.00000000],
+		[-6.27335129, -0.00034139, 0.00020913, 0.00034311, -0.00000116, 0.00000000],
+		[-6.27335138, -0.00034136, 0.00020911, 0.00034307, -0.00000116, 0.00000000],
+		[-6.27335147, -0.00034132, 0.00020908, 0.00034303, -0.00000116, 0.00000000],
+		[-6.27335156, -0.00034128, 0.00020906, 0.00034300, -0.00000116, 0.00000000],
+		[-6.27335165, -0.00034124, 0.00020904, 0.00034296, -0.00000116, 0.00000000],
+		[-6.27335174, -0.00034121, 0.00020902, 0.00034292, -0.00000116, 0.00000000],
+		[-6.27335183, -0.00034117, 0.00020899, 0.00034288, -0.00000116, 0.00000000],
+		[-6.27335192, -0.00034113, 0.00020897, 0.00034284, -0.00000116, 0.00000000],
+		[-6.27335201, -0.00034109, 0.00020895, 0.00034281, -0.00000116, 0.00000000],
+		[-6.27335210, -0.00034106, 0.00020892, 0.00034277, -0.00000116, 0.00000000],
+		[-6.27335219, -0.00034102, 0.00020890, 0.00034273, -0.00000116, 0.00000000],
+		[-6.27335228, -0.00034098, 0.00020888, 0.00034269, -0.00000116, 0.00000000],
+		[-6.27335237, -0.00034094, 0.00020885, 0.00034266, -0.00000116, 0.00000000],
+		[-6.27335246, -0.00034091, 0.00020883, 0.00034262, -0.00000116, 0.00000000],
+		[-6.27335255, -0.00034087, 0.00020881, 0.00034258, -0.00000116, 0.00000000],
+		[-6.27335264, -0.00034083, 0.00020878, 0.00034254, -0.00000116, 0.00000000],
+		[-6.27335273, -0.00034079, 0.00020876, 0.00034250, -0.00000116, 0.00000000],
+		[-6.27335282, -0.00034076, 0.00020874, 0.00034247, -0.00000116, 0.00000000],
+		[-6.27335291, -0.00034072, 0.00020872, 0.00034243, -0.00000116, 0.00000000],
+		[-6.27335300, -0.00034068, 0.00020869, 0.00034239, -0.00000116, 0.00000000],
+		[-6.27335309, -0.00034064, 0.00020867, 0.00034235, -0.00000116, 0.00000000],
+		[-6.27335318, -0.00034061, 0.00020865, 0.00034232, -0.00000116, 0.00000000],
+		[-6.27335327, -0.00034057, 0.00020862, 0.00034228, -0.00000116, 0.00000000],
+		[-6.27335336, -0.00034053, 0.00020860, 0.00034224, -0.00000116, 0.00000000],
+		[-6.27335345, -0.00034049, 0.00020858, 0.00034220, -0.00000116, 0.00000000],
+		[-6.27335354, -0.00034046, 0.00020856, 0.00034217, -0.00000116, 0.00000000],
+		[-6.27335363, -0.00034042, 0.00020853, 0.00034213, -0.00000116, 0.00000000],
+		[-6.27335372, -0.00034038, 0.00020851, 0.00034209, -0.00000116, 0.00000000],
+		[-6.27335380, -0.00034034, 0.00020849, 0.00034205, -0.00000116, 0.00000000],
+		[-6.27335389, -0.00034031, 0.00020846, 0.00034201, -0.00000116, 0.00000000],
+		[-6.27335398, -0.00034027, 0.00020844, 0.00034198, -0.00000116, 0.00000000],
+		[-6.27335407, -0.00034023, 0.00020842, 0.00034194, -0.00000116, 0.00000000],
+		[-6.27335416, -0.00034019, 0.00020839, 0.00034190, -0.00000116, 0.00000000],
+		[-6.27335425, -0.00034016, 0.00020837, 0.00034186, -0.00000116, 0.00000000],
+		[-6.27335434, -0.00034012, 0.00020835, 0.00034183, -0.00000116, 0.00000000],
+		[-6.27335443, -0.00034008, 0.00020833, 0.00034179, -0.00000116, 0.00000000],
+		[-6.27335452, -0.00034004, 0.00020830, 0.00034175, -0.00000116, 0.00000000],
+		[-6.27335461, -0.00034001, 0.00020828, 0.00034171, -0.00000116, 0.00000000],
+		[-6.27335470, -0.00033997, 0.00020826, 0.00034168, -0.00000116, 0.00000000],
+		[-6.27335479, -0.00033993, 0.00020823, 0.00034164, -0.00000116, 0.00000000],
+		[-6.27335488, -0.00033989, 0.00020821, 0.00034160, -0.00000116, 0.00000000],
+		[-6.27335497, -0.00033986, 0.00020819, 0.00034156, -0.00000116, 0.00000000],
+		[-6.27335506, -0.00033982, 0.00020817, 0.00034153, -0.00000116, 0.00000000],
+		[-6.27335515, -0.00033978, 0.00020814, 0.00034149, -0.00000116, 0.00000000],
+		[-6.27335524, -0.00033975, 0.00020812, 0.00034145, -0.00000116, 0.00000000],
+		[-6.27335533, -0.00033971, 0.00020810, 0.00034141, -0.00000116, 0.00000000],
+		[-6.27335541, -0.00033967, 0.00020807, 0.00034138, -0.00000116, 0.00000000],
+		[-6.27335550, -0.00033963, 0.00020805, 0.00034134, -0.00000116, 0.00000000],
+		[-6.27335559, -0.00033960, 0.00020803, 0.00034130, -0.00000116, 0.00000000],
+		[-6.27335568, -0.00033956, 0.00020801, 0.00034126, -0.00000116, 0.00000000],
+		[-6.27335577, -0.00033952, 0.00020798, 0.00034123, -0.00000116, 0.00000000],
+		[-6.27335586, -0.00033948, 0.00020796, 0.00034119, -0.00000116, 0.00000000],
+		[-6.27335595, -0.00033945, 0.00020794, 0.00034115, -0.00000116, 0.00000000],
+		[-6.27335604, -0.00033941, 0.00020791, 0.00034111, -0.00000116, 0.00000000],
+		[-6.27335613, -0.00033937, 0.00020789, 0.00034108, -0.00000116, 0.00000000],
+		[-6.27335622, -0.00033934, 0.00020787, 0.00034104, -0.00000116, 0.00000000],
+		[-6.27335631, -0.00033930, 0.00020785, 0.00034100, -0.00000116, 0.00000000],
+		[-6.27335639, -0.00033926, 0.00020782, 0.00034097, -0.00000116, 0.00000000],
+		[-6.27335648, -0.00033922, 0.00020780, 0.00034093, -0.00000116, 0.00000000],
+		[-6.27335657, -0.00033919, 0.00020778, 0.00034089, -0.00000116, 0.00000000],
+		[-6.27335666, -0.00033915, 0.00020776, 0.00034085, -0.00000116, 0.00000000],
+		[-6.27335675, -0.00033911, 0.00020773, 0.00034082, -0.00000116, 0.00000000],
+		[-6.27335684, -0.00033908, 0.00020771, 0.00034078, -0.00000116, 0.00000000],
+		[-6.27335693, -0.00033904, 0.00020769, 0.00034074, -0.00000116, 0.00000000],
+		[-6.27335702, -0.00033900, 0.00020766, 0.00034070, -0.00000116, 0.00000000],
+		[-6.27335711, -0.00033896, 0.00020764, 0.00034067, -0.00000116, 0.00000000],
+		[-6.27335720, -0.00033893, 0.00020762, 0.00034063, -0.00000116, 0.00000000],
+		[-6.27335728, -0.00033889, 0.00020760, 0.00034059, -0.00000116, 0.00000000],
+		[-6.27335737, -0.00033885, 0.00020757, 0.00034055, -0.00000116, 0.00000000],
+		[-6.27335746, -0.00033882, 0.00020755, 0.00034052, -0.00000116, 0.00000000],
+		[-6.27335755, -0.00033878, 0.00020753, 0.00034048, -0.00000116, 0.00000000],
+		[-6.27335764, -0.00033874, 0.00020751, 0.00034044, -0.00000116, 0.00000000],
+		[-6.27335773, -0.00033870, 0.00020748, 0.00034041, -0.00000116, 0.00000000],
+		[-6.27335782, -0.00033867, 0.00020746, 0.00034037, -0.00000116, 0.00000000],
+		[-6.27335791, -0.00033863, 0.00020744, 0.00034033, -0.00000116, 0.00000000],
+		[-6.27335799, -0.00033859, 0.00020741, 0.00034029, -0.00000116, 0.00000000],
+		[-6.27335808, -0.00033856, 0.00020739, 0.00034026, -0.00000116, 0.00000000],
+		[-6.27335817, -0.00033852, 0.00020737, 0.00034022, -0.00000116, 0.00000000],
+		[-6.27335826, -0.00033848, 0.00020735, 0.00034018, -0.00000116, 0.00000000],
+		[-6.27335835, -0.00033845, 0.00020732, 0.00034015, -0.00000116, 0.00000000],
+		[-6.27335844, -0.00033841, 0.00020730, 0.00034011, -0.00000116, 0.00000000],
+		[-6.27335853, -0.00033837, 0.00020728, 0.00034007, -0.00000116, 0.00000000],
+		[-6.27335861, -0.00033833, 0.00020726, 0.00034003, -0.00000116, 0.00000000],
+		[-6.27335870, -0.00033830, 0.00020723, 0.00034000, -0.00000116, 0.00000000],
+		[-6.27335879, -0.00033826, 0.00020721, 0.00033996, -0.00000116, 0.00000000],
+		[-6.27335888, -0.00033822, 0.00020719, 0.00033992, -0.00000116, 0.00000000],
+		[-6.27335897, -0.00033819, 0.00020716, 0.00033988, -0.00000116, 0.00000000],
+		[-6.27335906, -0.00033815, 0.00020714, 0.00033985, -0.00000116, 0.00000000],
+		[-6.27335915, -0.00033811, 0.00020712, 0.00033981, -0.00000116, 0.00000000],
+		[-6.27335923, -0.00033808, 0.00020710, 0.00033977, -0.00000116, 0.00000000],
+		[-6.27335932, -0.00033804, 0.00020707, 0.00033974, -0.00000116, 0.00000000],
+		[-6.27335941, -0.00033800, 0.00020705, 0.00033970, -0.00000116, 0.00000000],
+		[-6.27335950, -0.00033797, 0.00020703, 0.00033966, -0.00000116, 0.00000000],
+		[-6.27335959, -0.00033793, 0.00020701, 0.00033963, -0.00000116, 0.00000000],
+		[-6.27335968, -0.00033789, 0.00020698, 0.00033959, -0.00000116, 0.00000000],
+		[-6.27335976, -0.00033785, 0.00020696, 0.00033955, -0.00000116, 0.00000000],
+		[-6.27335985, -0.00033782, 0.00020694, 0.00033951, -0.00000116, 0.00000000],
+		[-6.27335994, -0.00033778, 0.00020692, 0.00033948, -0.00000116, 0.00000000],
+		[-6.27336003, -0.00033774, 0.00020689, 0.00033944, -0.00000116, 0.00000000],
+		[-6.27336012, -0.00033771, 0.00020687, 0.00033940, -0.00000116, 0.00000000],
+		[-6.27336021, -0.00033767, 0.00020685, 0.00033937, -0.00000116, 0.00000000],
+		[-6.27336029, -0.00033763, 0.00020683, 0.00033933, -0.00000116, 0.00000000],
+		[-6.27336038, -0.00033760, 0.00020680, 0.00033929, -0.00000116, 0.00000000],
+		[-6.27336047, -0.00033756, 0.00020678, 0.00033925, -0.00000116, 0.00000000],
+		[-6.27336056, -0.00033752, 0.00020676, 0.00033922, -0.00000116, 0.00000000],
+		[-6.27336065, -0.00033749, 0.00020674, 0.00033918, -0.00000116, 0.00000000],
+		[-6.27336073, -0.00033745, 0.00020671, 0.00033914, -0.00000116, 0.00000000],
+		[-6.27336082, -0.00033741, 0.00020669, 0.00033911, -0.00000116, 0.00000000],
+		[-6.27336091, -0.00033738, 0.00020667, 0.00033907, -0.00000116, 0.00000000],
+		[-6.27336100, -0.00033734, 0.00020665, 0.00033903, -0.00000116, 0.00000000],
+		[-6.27336109, -0.00033730, 0.00020662, 0.00033900, -0.00000116, 0.00000000],
+		[-6.27336117, -0.00033727, 0.00020660, 0.00033896, -0.00000116, 0.00000000],
+		[-6.27336126, -0.00033723, 0.00020658, 0.00033892, -0.00000116, 0.00000000],
+		[-6.27336135, -0.00033719, 0.00020656, 0.00033889, -0.00000116, 0.00000000],
+		[-6.27336144, -0.00033716, 0.00020653, 0.00033885, -0.00000116, 0.00000000],
+		[-6.27336153, -0.00033712, 0.00020651, 0.00033881, -0.00000116, 0.00000000],
+		[-6.27336161, -0.00033708, 0.00020649, 0.00033877, -0.00000116, 0.00000000],
+		[-6.27336170, -0.00033705, 0.00020647, 0.00033874, -0.00000116, 0.00000000],
+		[-6.27336179, -0.00033701, 0.00020644, 0.00033870, -0.00000116, 0.00000000],
+		[-6.27336188, -0.00033697, 0.00020642, 0.00033866, -0.00000116, 0.00000000],
+		[-6.27336197, -0.00033694, 0.00020640, 0.00033863, -0.00000116, 0.00000000],
+		[-6.27336205, -0.00033690, 0.00020638, 0.00033859, -0.00000116, 0.00000000],
+		[-6.27336214, -0.00033686, 0.00020635, 0.00033855, -0.00000116, 0.00000000],
+		[-6.27336223, -0.00033683, 0.00020633, 0.00033852, -0.00000116, 0.00000000],
+		[-6.27336232, -0.00033679, 0.00020631, 0.00033848, -0.00000116, 0.00000000],
+		[-6.27336240, -0.00033675, 0.00020629, 0.00033844, -0.00000116, 0.00000000],
+		[-6.27336249, -0.00033672, 0.00020626, 0.00033841, -0.00000116, 0.00000000],
+		[-6.27336258, -0.00033668, 0.00020624, 0.00033837, -0.00000116, 0.00000000],
+		[-6.27336267, -0.00033664, 0.00020622, 0.00033833, -0.00000116, 0.00000000],
+		[-6.27336275, -0.00033661, 0.00020620, 0.00033830, -0.00000116, 0.00000000],
+		[-6.27336284, -0.00033657, 0.00020617, 0.00033826, -0.00000116, 0.00000000],
+		[-6.27336293, -0.00033653, 0.00020615, 0.00033822, -0.00000116, 0.00000000],
+		[-6.27336302, -0.00033650, 0.00020613, 0.00033819, -0.00000116, 0.00000000],
+		[-6.27336311, -0.00033646, 0.00020611, 0.00033815, -0.00000116, 0.00000000],
+		[-6.27336319, -0.00033642, 0.00020608, 0.00033811, -0.00000116, 0.00000000],
+		[-6.27336328, -0.00033639, 0.00020606, 0.00033808, -0.00000116, 0.00000000],
+		[-6.27336337, -0.00033635, 0.00020604, 0.00033804, -0.00000116, 0.00000000],
+		[-6.27336346, -0.00033631, 0.00020602, 0.00033800, -0.00000116, 0.00000000],
+		[-6.27336354, -0.00033628, 0.00020599, 0.00033796, -0.00000116, 0.00000000],
+		[-6.27336363, -0.00033624, 0.00020597, 0.00033793, -0.00000116, 0.00000000],
+		[-6.27336372, -0.00033620, 0.00020595, 0.00033789, -0.00000116, 0.00000000],
+		[-6.27336381, -0.00033617, 0.00020593, 0.00033785, -0.00000116, 0.00000000],
+		[-6.27336389, -0.00033613, 0.00020590, 0.00033782, -0.00000116, 0.00000000],
+		[-6.27336398, -0.00033609, 0.00020588, 0.00033778, -0.00000116, 0.00000000],
+		[-6.27336407, -0.00033606, 0.00020586, 0.00033774, -0.00000116, 0.00000000],
+		[-6.27336415, -0.00033602, 0.00020584, 0.00033771, -0.00000116, 0.00000000],
+		[-6.27336424, -0.00033598, 0.00020582, 0.00033767, -0.00000116, 0.00000000],
+		[-6.27336433, -0.00033595, 0.00020579, 0.00033763, -0.00000116, 0.00000000],
+		[-6.27336442, -0.00033591, 0.00020577, 0.00033760, -0.00000116, 0.00000000],
+		[-6.27336450, -0.00033587, 0.00020575, 0.00033756, -0.00000116, 0.00000000],
+		[-6.27336459, -0.00033584, 0.00020573, 0.00033752, -0.00000116, 0.00000000],
+		[-6.27336468, -0.00033580, 0.00020570, 0.00033749, -0.00000116, 0.00000000],
+		[-6.27336477, -0.00033577, 0.00020568, 0.00033745, -0.00000116, 0.00000000],
+		[-6.27336485, -0.00033573, 0.00020566, 0.00033742, -0.00000116, 0.00000000],
+		[-6.27336494, -0.00033569, 0.00020564, 0.00033738, -0.00000116, 0.00000000],
+		[-6.27336503, -0.00033566, 0.00020561, 0.00033734, -0.00000116, 0.00000000],
+		[-6.27336511, -0.00033562, 0.00020559, 0.00033731, -0.00000116, 0.00000000],
+		[-6.27336520, -0.00033558, 0.00020557, 0.00033727, -0.00000116, 0.00000000],
+		[-6.27336529, -0.00033555, 0.00020555, 0.00033723, -0.00000116, 0.00000000],
+		[-6.27336538, -0.00033551, 0.00020553, 0.00033720, -0.00000116, 0.00000000],
+		[-6.27336546, -0.00033547, 0.00020550, 0.00033716, -0.00000116, 0.00000000],
+		[-6.27336555, -0.00033544, 0.00020548, 0.00033712, -0.00000116, 0.00000000],
+		[-6.27336564, -0.00033540, 0.00020546, 0.00033709, -0.00000116, 0.00000000],
+		[-6.27336572, -0.00033537, 0.00020544, 0.00033705, -0.00000116, 0.00000000],
+		[-6.27336581, -0.00033533, 0.00020541, 0.00033701, -0.00000116, 0.00000000],
+		[-6.27336590, -0.00033529, 0.00020539, 0.00033698, -0.00000116, 0.00000000],
+		[-6.27336598, -0.00033526, 0.00020537, 0.00033694, -0.00000116, 0.00000000],
+		[-6.27336607, -0.00033522, 0.00020535, 0.00033690, -0.00000116, 0.00000000],
+		[-6.27336616, -0.00033518, 0.00020532, 0.00033687, -0.00000116, 0.00000000],
+		[-6.27336625, -0.00033515, 0.00020530, 0.00033683, -0.00000116, 0.00000000],
+		[-6.27336633, -0.00033511, 0.00020528, 0.00033679, -0.00000116, 0.00000000],
+		[-6.27336642, -0.00033508, 0.00020526, 0.00033676, -0.00000116, 0.00000000],
+		[-6.27336651, -0.00033504, 0.00020524, 0.00033672, -0.00000116, 0.00000000],
+		[-6.27336659, -0.00033500, 0.00020521, 0.00033668, -0.00000116, 0.00000000],
+		[-6.27336668, -0.00033497, 0.00020519, 0.00033665, -0.00000116, 0.00000000],
+		[-6.27336677, -0.00033493, 0.00020517, 0.00033661, -0.00000116, 0.00000000],
+		[-6.27336685, -0.00033489, 0.00020515, 0.00033658, -0.00000116, 0.00000000],
+		[-6.27336694, -0.00033486, 0.00020512, 0.00033654, -0.00000116, 0.00000000],
+		[-6.27336703, -0.00033482, 0.00020510, 0.00033650, -0.00000116, 0.00000000],
+		[-6.27336711, -0.00033479, 0.00020508, 0.00033647, -0.00000116, 0.00000000],
+		[-6.27336720, -0.00033475, 0.00020506, 0.00033643, -0.00000116, 0.00000000],
+		[-6.27336729, -0.00033471, 0.00020504, 0.00033639, -0.00000116, 0.00000000],
+		[-6.27336737, -0.00033468, 0.00020501, 0.00033636, -0.00000116, 0.00000000],
+		[-6.27336746, -0.00033464, 0.00020499, 0.00033632, -0.00000116, 0.00000000],
+		[-6.27336755, -0.00033460, 0.00020497, 0.00033628, -0.00000116, 0.00000000],
+		[-6.27336763, -0.00033457, 0.00020495, 0.00033625, -0.00000116, 0.00000000],
+		[-6.27336772, -0.00033453, 0.00020493, 0.00033621, -0.00000116, 0.00000000],
+		[-6.27336781, -0.00033450, 0.00020490, 0.00033618, -0.00000116, 0.00000000],
+		[-6.27336789, -0.00033446, 0.00020488, 0.00033614, -0.00000116, 0.00000000],
+		[-6.27336798, -0.00033442, 0.00020486, 0.00033610, -0.00000116, 0.00000000],
+		[-6.27336807, -0.00033439, 0.00020484, 0.00033607, -0.00000116, 0.00000000],
+		[-6.27336815, -0.00033435, 0.00020481, 0.00033603, -0.00000116, 0.00000000],
+		[-6.27336824, -0.00033432, 0.00020479, 0.00033599, -0.00000116, 0.00000000],
+		[-6.27336833, -0.00033428, 0.00020477, 0.00033596, -0.00000116, 0.00000000],
+		[-6.27336841, -0.00033424, 0.00020475, 0.00033592, -0.00000116, 0.00000000],
+		[-6.27336850, -0.00033421, 0.00020473, 0.00033588, -0.00000116, 0.00000000],
+		[-6.27336858, -0.00033417, 0.00020470, 0.00033585, -0.00000116, 0.00000000],
+		[-6.27336867, -0.00033413, 0.00020468, 0.00033581, -0.00000116, 0.00000000],
+		[-6.27336876, -0.00033410, 0.00020466, 0.00033578, -0.00000116, 0.00000000],
+		[-6.27336884, -0.00033406, 0.00020464, 0.00033574, -0.00000116, 0.00000000],
+		[-6.27336893, -0.00033403, 0.00020462, 0.00033570, -0.00000116, 0.00000000],
+		[-6.27336902, -0.00033399, 0.00020459, 0.00033567, -0.00000116, 0.00000000],
+		[-6.27336910, -0.00033395, 0.00020457, 0.00033563, -0.00000116, 0.00000000],
+		[-6.27336919, -0.00033392, 0.00020455, 0.00033559, -0.00000116, 0.00000000],
+		[-6.27336927, -0.00033388, 0.00020453, 0.00033556, -0.00000116, 0.00000000],
+		[-6.27336936, -0.00033385, 0.00020451, 0.00033552, -0.00000116, 0.00000000],
+		[-6.27336945, -0.00033381, 0.00020448, 0.00033549, -0.00000116, 0.00000000],
+		[-6.27336953, -0.00033377, 0.00020446, 0.00033545, -0.00000116, 0.00000000],
+		[-6.27336962, -0.00033374, 0.00020444, 0.00033541, -0.00000116, 0.00000000],
+		[-6.27336971, -0.00033370, 0.00020442, 0.00033538, -0.00000116, 0.00000000],
+		[-6.27336979, -0.00033367, 0.00020439, 0.00033534, -0.00000116, 0.00000000],
+		[-6.27336988, -0.00033363, 0.00020437, 0.00033531, -0.00000116, 0.00000000],
+		[-6.27336996, -0.00033359, 0.00020435, 0.00033527, -0.00000116, 0.00000000],
+		[-6.27337005, -0.00033356, 0.00020433, 0.00033523, -0.00000116, 0.00000000],
+		[-6.27337014, -0.00033352, 0.00020431, 0.00033520, -0.00000116, 0.00000000],
+		[-6.27337022, -0.00033349, 0.00020428, 0.00033516, -0.00000116, 0.00000000],
+		[-6.27337031, -0.00033345, 0.00020426, 0.00033513, -0.00000116, 0.00000000],
+		[-6.27337039, -0.00033342, 0.00020424, 0.00033509, -0.00000116, 0.00000000],
+		[-6.27337048, -0.00033338, 0.00020422, 0.00033505, -0.00000116, 0.00000000],
+		[-6.27337057, -0.00033334, 0.00020420, 0.00033502, -0.00000116, 0.00000000],
+		[-6.27337065, -0.00033331, 0.00020417, 0.00033498, -0.00000116, 0.00000000],
+		[-6.27337074, -0.00033327, 0.00020415, 0.00033494, -0.00000116, 0.00000000],
+		[-6.27337082, -0.00033324, 0.00020413, 0.00033491, -0.00000116, 0.00000000],
+		[-6.27337091, -0.00033320, 0.00020411, 0.00033487, -0.00000116, 0.00000000],
+		[-6.27337100, -0.00033316, 0.00020409, 0.00033484, -0.00000116, 0.00000000],
+		[-6.27337108, -0.00033313, 0.00020406, 0.00033480, -0.00000116, 0.00000000],
+		[-6.27337117, -0.00033309, 0.00020404, 0.00033476, -0.00000116, 0.00000000],
+		[-6.27337125, -0.00033306, 0.00020402, 0.00033473, -0.00000116, 0.00000000],
+		[-6.27337134, -0.00033302, 0.00020400, 0.00033469, -0.00000116, 0.00000000],
+		[-6.27337142, -0.00033298, 0.00020398, 0.00033466, -0.00000116, 0.00000000],
+		[-6.27337151, -0.00033295, 0.00020395, 0.00033462, -0.00000116, 0.00000000],
+		[-6.27337160, -0.00033291, 0.00020393, 0.00033458, -0.00000116, 0.00000000],
+		[-6.27337168, -0.00033288, 0.00020391, 0.00033455, -0.00000116, 0.00000000],
+		[-6.27337177, -0.00033284, 0.00020389, 0.00033451, -0.00000116, 0.00000000],
+		[-6.27337185, -0.00033281, 0.00020387, 0.00033448, -0.00000116, 0.00000000],
+		[-6.27337194, -0.00033277, 0.00020385, 0.00033444, -0.00000116, 0.00000000],
+		[-6.27337202, -0.00033273, 0.00020382, 0.00033440, -0.00000116, 0.00000000],
+		[-6.27337211, -0.00033270, 0.00020380, 0.00033437, -0.00000116, 0.00000000],
+		[-6.27337220, -0.00033266, 0.00020378, 0.00033433, -0.00000116, 0.00000000],
+		[-6.27337228, -0.00033263, 0.00020376, 0.00033430, -0.00000116, 0.00000000],
+		[-6.27337237, -0.00033259, 0.00020374, 0.00033426, -0.00000116, 0.00000000],
+		[-6.27337245, -0.00033256, 0.00020371, 0.00033422, -0.00000116, 0.00000000],
+		[-6.27337254, -0.00033252, 0.00020369, 0.00033419, -0.00000116, 0.00000000],
+		[-6.27337262, -0.00033248, 0.00020367, 0.00033415, -0.00000116, 0.00000000],
+		[-6.27337271, -0.00033245, 0.00020365, 0.00033412, -0.00000116, 0.00000000],
+		[-6.27337279, -0.00033241, 0.00020363, 0.00033408, -0.00000116, 0.00000000],
+		[-6.27337288, -0.00033238, 0.00020360, 0.00033405, -0.00000116, 0.00000000],
+		[-6.27337297, -0.00033234, 0.00020358, 0.00033401, -0.00000116, 0.00000000],
+		[-6.27337305, -0.00033231, 0.00020356, 0.00033397, -0.00000116, 0.00000000],
+		[-6.27337314, -0.00033227, 0.00020354, 0.00033394, -0.00000116, 0.00000000],
+		[-6.27337322, -0.00033223, 0.00020352, 0.00033390, -0.00000116, 0.00000000],
+		[-6.27337331, -0.00033220, 0.00020350, 0.00033387, -0.00000116, 0.00000000],
+		[-6.27337339, -0.00033216, 0.00020347, 0.00033383, -0.00000116, 0.00000000],
+		[-6.27337348, -0.00033213, 0.00020345, 0.00033379, -0.00000116, 0.00000000],
+		[-6.27337356, -0.00033209, 0.00020343, 0.00033376, -0.00000116, 0.00000000],
+		[-6.27337365, -0.00033206, 0.00020341, 0.00033372, -0.00000116, 0.00000000],
+		[-6.27337373, -0.00033202, 0.00020339, 0.00033369, -0.00000116, 0.00000000],
+		[-6.27337382, -0.00033198, 0.00020336, 0.00033365, -0.00000116, 0.00000000],
+		[-6.27337390, -0.00033195, 0.00020334, 0.00033362, -0.00000116, 0.00000000],
+		[-6.27337399, -0.00033191, 0.00020332, 0.00033358, -0.00000116, 0.00000000],
+		[-6.27337407, -0.00033188, 0.00020330, 0.00033354, -0.00000116, 0.00000000],
+		[-6.27337416, -0.00033184, 0.00020328, 0.00033351, -0.00000116, 0.00000000],
+		[-6.27337425, -0.00033181, 0.00020326, 0.00033347, -0.00000116, 0.00000000],
+		[-6.27337433, -0.00033177, 0.00020323, 0.00033344, -0.00000116, 0.00000000],
+		[-6.27337442, -0.00033174, 0.00020321, 0.00033340, -0.00000116, 0.00000000],
+		[-6.27337450, -0.00033170, 0.00020319, 0.00033337, -0.00000116, 0.00000000],
+		[-6.27337459, -0.00033166, 0.00020317, 0.00033333, -0.00000116, 0.00000000],
+		[-6.27337467, -0.00033163, 0.00020315, 0.00033329, -0.00000116, 0.00000000],
+		[-6.27337476, -0.00033159, 0.00020312, 0.00033326, -0.00000116, 0.00000000],
+		[-6.27337484, -0.00033156, 0.00020310, 0.00033322, -0.00000116, 0.00000000],
+		[-6.27337493, -0.00033152, 0.00020308, 0.00033319, -0.00000116, 0.00000000],
+		[-6.27337501, -0.00033149, 0.00020306, 0.00033315, -0.00000116, 0.00000000],
+		[-6.27337510, -0.00033145, 0.00020304, 0.00033312, -0.00000116, 0.00000000],
+		[-6.27337518, -0.00033142, 0.00020302, 0.00033308, -0.00000116, 0.00000000],
+		[-6.27337527, -0.00033138, 0.00020299, 0.00033304, -0.00000116, 0.00000000],
+		[-6.27337535, -0.00033135, 0.00020297, 0.00033301, -0.00000116, 0.00000000],
+		[-6.27337544, -0.00033131, 0.00020295, 0.00033297, -0.00000116, 0.00000000],
+		[-6.27337552, -0.00033127, 0.00020293, 0.00033294, -0.00000116, 0.00000000],
+		[-6.27337561, -0.00033124, 0.00020291, 0.00033290, -0.00000116, 0.00000000],
+		[-6.27337569, -0.00033120, 0.00020289, 0.00033287, -0.00000116, 0.00000000],
+		[-6.27337578, -0.00033117, 0.00020286, 0.00033283, -0.00000116, 0.00000000],
+		[-6.27337586, -0.00033113, 0.00020284, 0.00033279, -0.00000116, 0.00000000],
+		[-6.27337594, -0.00033110, 0.00020282, 0.00033276, -0.00000116, 0.00000000],
+		[-6.27337603, -0.00033106, 0.00020280, 0.00033272, -0.00000116, 0.00000000],
+		[-6.27337611, -0.00033103, 0.00020278, 0.00033269, -0.00000116, 0.00000000],
+		[-6.27337620, -0.00033099, 0.00020275, 0.00033265, -0.00000116, 0.00000000],
+		[-6.27337628, -0.00033096, 0.00020273, 0.00033262, -0.00000116, 0.00000000],
+		[-6.27337637, -0.00033092, 0.00020271, 0.00033258, -0.00000116, 0.00000000],
+		[-6.27337645, -0.00033088, 0.00020269, 0.00033255, -0.00000116, 0.00000000],
+		[-6.27337654, -0.00033085, 0.00020267, 0.00033251, -0.00000116, 0.00000000],
+		[-6.27337662, -0.00033081, 0.00020265, 0.00033247, -0.00000116, 0.00000000],
+		[-6.27337671, -0.00033078, 0.00020262, 0.00033244, -0.00000116, 0.00000000],
+		[-6.27337679, -0.00033074, 0.00020260, 0.00033240, -0.00000116, 0.00000000],
+		[-6.27337688, -0.00033071, 0.00020258, 0.00033237, -0.00000116, 0.00000000],
+		[-6.27337696, -0.00033067, 0.00020256, 0.00033233, -0.00000116, 0.00000000],
+		[-6.27337705, -0.00033064, 0.00020254, 0.00033230, -0.00000116, 0.00000000],
+		[-6.27337713, -0.00033060, 0.00020252, 0.00033226, -0.00000116, 0.00000000],
+		[-6.27337721, -0.00033057, 0.00020250, 0.00033223, -0.00000116, 0.00000000],
+		[-6.27337730, -0.00033053, 0.00020247, 0.00033219, -0.00000116, 0.00000000],
+		[-6.27337738, -0.00033050, 0.00020245, 0.00033216, -0.00000116, 0.00000000],
+		[-6.27337747, -0.00033046, 0.00020243, 0.00033212, -0.00000116, 0.00000000],
+		[-6.27337755, -0.00033043, 0.00020241, 0.00033208, -0.00000116, 0.00000000],
+		[-6.27337764, -0.00033039, 0.00020239, 0.00033205, -0.00000116, 0.00000000],
+		[-6.27337772, -0.00033035, 0.00020237, 0.00033201, -0.00000116, 0.00000000],
+		[-6.27337781, -0.00033032, 0.00020234, 0.00033198, -0.00000116, 0.00000000],
+		[-6.27337789, -0.00033028, 0.00020232, 0.00033194, -0.00000116, 0.00000000],
+		[-6.27337797, -0.00033025, 0.00020230, 0.00033191, -0.00000116, 0.00000000],
+		[-6.27337806, -0.00033021, 0.00020228, 0.00033187, -0.00000116, 0.00000000],
+		[-6.27337814, -0.00033018, 0.00020226, 0.00033184, -0.00000116, 0.00000000],
+		[-6.27337823, -0.00033014, 0.00020224, 0.00033180, -0.00000116, 0.00000000],
+		[-6.27337831, -0.00033011, 0.00020221, 0.00033177, -0.00000116, 0.00000000],
+		[-6.27337840, -0.00033007, 0.00020219, 0.00033173, -0.00000116, 0.00000000],
+		[-6.27337848, -0.00033004, 0.00020217, 0.00033169, -0.00000116, 0.00000000],
+		[-6.27337856, -0.00033000, 0.00020215, 0.00033166, -0.00000116, 0.00000000],
+		[-6.27337865, -0.00032997, 0.00020213, 0.00033162, -0.00000116, 0.00000000],
+		[-6.27337873, -0.00032993, 0.00020211, 0.00033159, -0.00000116, 0.00000000],
+		[-6.27337882, -0.00032990, 0.00020208, 0.00033155, -0.00000116, 0.00000000],
+		[-6.27337890, -0.00032986, 0.00020206, 0.00033152, -0.00000116, 0.00000000],
+		[-6.27337899, -0.00032983, 0.00020204, 0.00033148, -0.00000116, 0.00000000],
+		[-6.27337907, -0.00032979, 0.00020202, 0.00033145, -0.00000116, 0.00000000],
+		[-6.27337915, -0.00032976, 0.00020200, 0.00033141, -0.00000116, 0.00000000],
+		[-6.27337924, -0.00032972, 0.00020198, 0.00033138, -0.00000116, 0.00000000],
+		[-6.27337932, -0.00032969, 0.00020196, 0.00033134, -0.00000116, 0.00000000],
+		[-6.27337941, -0.00032965, 0.00020193, 0.00033131, -0.00000116, 0.00000000],
+		[-6.27337949, -0.00032962, 0.00020191, 0.00033127, -0.00000116, 0.00000000],
+		[-6.27337957, -0.00032958, 0.00020189, 0.00033124, -0.00000116, 0.00000000],
+		[-6.27337966, -0.00032955, 0.00020187, 0.00033120, -0.00000116, 0.00000000],
+		[-6.27337974, -0.00032951, 0.00020185, 0.00033116, -0.00000116, 0.00000000],
+		[-6.27337983, -0.00032948, 0.00020183, 0.00033113, -0.00000116, 0.00000000],
+		[-6.27337991, -0.00032944, 0.00020181, 0.00033109, -0.00000116, 0.00000000],
+		[-6.27337999, -0.00032941, 0.00020178, 0.00033106, -0.00000116, 0.00000000],
+		[-6.27338008, -0.00032937, 0.00020176, 0.00033102, -0.00000116, 0.00000000],
+		[-6.27338016, -0.00032934, 0.00020174, 0.00033099, -0.00000116, 0.00000000],
+		[-6.27338025, -0.00032930, 0.00020172, 0.00033095, -0.00000116, 0.00000000],
+		[-6.27338033, -0.00032927, 0.00020170, 0.00033092, -0.00000116, 0.00000000],
+		[-6.27338041, -0.00032923, 0.00020168, 0.00033088, -0.00000116, 0.00000000],
+		[-6.27338050, -0.00032920, 0.00020165, 0.00033085, -0.00000116, 0.00000000],
+		[-6.27338058, -0.00032916, 0.00020163, 0.00033081, -0.00000116, 0.00000000],
+		[-6.27338067, -0.00032913, 0.00020161, 0.00033078, -0.00000116, 0.00000000],
+		[-6.27338075, -0.00032909, 0.00020159, 0.00033074, -0.00000116, 0.00000000],
+		[-6.27338083, -0.00032906, 0.00020157, 0.00033071, -0.00000116, 0.00000000],
+		[-6.27338092, -0.00032902, 0.00020155, 0.00033067, -0.00000116, 0.00000000],
+		[-6.27338100, -0.00032899, 0.00020153, 0.00033064, -0.00000116, 0.00000000],
+		[-6.27338108, -0.00032895, 0.00020150, 0.00033060, -0.00000116, 0.00000000],
+		[-6.27338117, -0.00032892, 0.00020148, 0.00033057, -0.00000116, 0.00000000],
+		[-6.27338125, -0.00032888, 0.00020146, 0.00033053, -0.00000116, 0.00000000],
+		[-6.27338134, -0.00032885, 0.00020144, 0.00033050, -0.00000116, 0.00000000],
+		[-6.27338142, -0.00032881, 0.00020142, 0.00033046, -0.00000116, 0.00000000],
+		[-6.27338150, -0.00032878, 0.00020140, 0.00033043, -0.00000116, 0.00000000],
+		[-6.27338159, -0.00032874, 0.00020138, 0.00033039, -0.00000116, 0.00000000],
+		[-6.27338167, -0.00032871, 0.00020135, 0.00033036, -0.00000116, 0.00000000],
+		[-6.27338175, -0.00032867, 0.00020133, 0.00033032, -0.00000116, 0.00000000],
+		[-6.27338184, -0.00032864, 0.00020131, 0.00033029, -0.00000116, 0.00000000],
+		[-6.27338192, -0.00032860, 0.00020129, 0.00033025, -0.00000116, 0.00000000],
+		[-6.27338200, -0.00032857, 0.00020127, 0.00033022, -0.00000116, 0.00000000],
+		[-6.27338209, -0.00032853, 0.00020125, 0.00033018, -0.00000116, 0.00000000],
+		[-6.27338217, -0.00032850, 0.00020123, 0.00033015, -0.00000116, 0.00000000],
+		[-6.27338225, -0.00032846, 0.00020121, 0.00033011, -0.00000116, 0.00000000],
+		[-6.27338234, -0.00032843, 0.00020118, 0.00033008, -0.00000116, 0.00000000],
+		[-6.27338242, -0.00032839, 0.00020116, 0.00033004, -0.00000116, 0.00000000],
+		[-6.27338250, -0.00032836, 0.00020114, 0.00033001, -0.00000116, 0.00000000],
+		[-6.27338259, -0.00032832, 0.00020112, 0.00032997, -0.00000116, 0.00000000],
+		[-6.27338267, -0.00032829, 0.00020110, 0.00032994, -0.00000116, 0.00000000],
+		[-6.27338275, -0.00032825, 0.00020108, 0.00032990, -0.00000116, 0.00000000],
+		[-6.27338284, -0.00032822, 0.00020106, 0.00032987, -0.00000116, 0.00000000],
+		[-6.27338292, -0.00032818, 0.00020103, 0.00032983, -0.00000116, 0.00000000],
+		[-6.27338300, -0.00032815, 0.00020101, 0.00032980, -0.00000116, 0.00000000],
+		[-6.27338309, -0.00032811, 0.00020099, 0.00032976, -0.00000116, 0.00000000],
+		[-6.27338317, -0.00032808, 0.00020097, 0.00032973, -0.00000116, 0.00000000],
+		[-6.27338325, -0.00032804, 0.00020095, 0.00032969, -0.00000116, 0.00000000],
+		[-6.27338334, -0.00032801, 0.00020093, 0.00032966, -0.00000116, 0.00000000],
+		[-6.27338342, -0.00032797, 0.00020091, 0.00032962, -0.00000116, 0.00000000],
+		[-6.27338350, -0.00032794, 0.00020089, 0.00032959, -0.00000116, 0.00000000],
+		[-6.27338359, -0.00032791, 0.00020086, 0.00032955, -0.00000116, 0.00000000],
+		[-6.27338367, -0.00032787, 0.00020084, 0.00032952, -0.00000116, 0.00000000],
+		[-6.27338375, -0.00032784, 0.00020082, 0.00032948, -0.00000116, 0.00000000],
+		[-6.27338384, -0.00032780, 0.00020080, 0.00032945, -0.00000116, 0.00000000],
+		[-6.27338392, -0.00032777, 0.00020078, 0.00032941, -0.00000116, 0.00000000],
+		[-6.27338400, -0.00032773, 0.00020076, 0.00032938, -0.00000116, 0.00000000],
+		[-6.27338409, -0.00032770, 0.00020074, 0.00032934, -0.00000116, 0.00000000],
+		[-6.27338417, -0.00032766, 0.00020072, 0.00032931, -0.00000116, 0.00000000],
+		[-6.27338425, -0.00032763, 0.00020069, 0.00032927, -0.00000116, 0.00000000],
+		[-6.27338433, -0.00032759, 0.00020067, 0.00032924, -0.00000116, 0.00000000],
+		[-6.27338442, -0.00032756, 0.00020065, 0.00032920, -0.00000116, 0.00000000],
+		[-6.27338450, -0.00032752, 0.00020063, 0.00032917, -0.00000116, 0.00000000],
+		[-6.27338458, -0.00032749, 0.00020061, 0.00032913, -0.00000116, 0.00000000],
+		[-6.27338467, -0.00032745, 0.00020059, 0.00032910, -0.00000116, 0.00000000],
+		[-6.27338475, -0.00032742, 0.00020057, 0.00032906, -0.00000116, 0.00000000],
+		[-6.27338483, -0.00032739, 0.00020055, 0.00032903, -0.00000116, 0.00000000],
+		[-6.27338492, -0.00032735, 0.00020052, 0.00032899, -0.00000116, 0.00000000],
+		[-6.27338500, -0.00032732, 0.00020050, 0.00032896, -0.00000116, 0.00000000],
+		[-6.27338508, -0.00032728, 0.00020048, 0.00032892, -0.00000116, 0.00000000],
+		[-6.27338516, -0.00032725, 0.00020046, 0.00032889, -0.00000116, 0.00000000],
+		[-6.27338525, -0.00032721, 0.00020044, 0.00032885, -0.00000116, 0.00000000],
+		[-6.27338533, -0.00032718, 0.00020042, 0.00032882, -0.00000116, 0.00000000],
+		[-6.27338541, -0.00032714, 0.00020040, 0.00032878, -0.00000116, 0.00000000],
+		[-6.27338550, -0.00032711, 0.00020038, 0.00032875, -0.00000116, 0.00000000],
+		[-6.27338558, -0.00032707, 0.00020035, 0.00032872, -0.00000116, 0.00000000],
+		[-6.27338566, -0.00032704, 0.00020033, 0.00032868, -0.00000116, 0.00000000],
+		[-6.27338574, -0.00032700, 0.00020031, 0.00032865, -0.00000116, 0.00000000],
+		[-6.27338583, -0.00032697, 0.00020029, 0.00032861, -0.00000116, 0.00000000],
+		[-6.27338591, -0.00032694, 0.00020027, 0.00032858, -0.00000116, 0.00000000],
+		[-6.27338599, -0.00032690, 0.00020025, 0.00032854, -0.00000116, 0.00000000],
+		[-6.27338607, -0.00032687, 0.00020023, 0.00032851, -0.00000116, 0.00000000],
+		[-6.27338616, -0.00032683, 0.00020021, 0.00032847, -0.00000116, 0.00000000],
+		[-6.27338624, -0.00032680, 0.00020019, 0.00032844, -0.00000116, 0.00000000],
+		[-6.27338632, -0.00032676, 0.00020016, 0.00032840, -0.00000116, 0.00000000],
+		[-6.27338640, -0.00032673, 0.00020014, 0.00032837, -0.00000116, 0.00000000],
+		[-6.27338649, -0.00032669, 0.00020012, 0.00032833, -0.00000116, 0.00000000],
+		[-6.27338657, -0.00032666, 0.00020010, 0.00032830, -0.00000116, 0.00000000],
+		[-6.27338665, -0.00032663, 0.00020008, 0.00032826, -0.00000116, 0.00000000],
+		[-6.27338674, -0.00032659, 0.00020006, 0.00032823, -0.00000116, 0.00000000],
+		[-6.27338682, -0.00032656, 0.00020004, 0.00032820, -0.00000116, 0.00000000],
+		[-6.27338690, -0.00032652, 0.00020002, 0.00032816, -0.00000116, 0.00000000],
+		[-6.27338698, -0.00032649, 0.00020000, 0.00032813, -0.00000116, 0.00000000],
+		[-6.27338706, -0.00032645, 0.00019997, 0.00032809, -0.00000116, 0.00000000],
+		[-6.27338715, -0.00032642, 0.00019995, 0.00032806, -0.00000116, 0.00000000],
+		[-6.27338723, -0.00032638, 0.00019993, 0.00032802, -0.00000116, 0.00000000],
+		[-6.27338731, -0.00032635, 0.00019991, 0.00032799, -0.00000116, 0.00000000],
+		[-6.27338739, -0.00032632, 0.00019989, 0.00032795, -0.00000116, 0.00000000],
+		[-6.27338748, -0.00032628, 0.00019987, 0.00032792, -0.00000116, 0.00000000],
+		[-6.27338756, -0.00032625, 0.00019985, 0.00032788, -0.00000116, 0.00000000],
+		[-6.27338764, -0.00032621, 0.00019983, 0.00032785, -0.00000116, 0.00000000],
+		[-6.27338772, -0.00032618, 0.00019981, 0.00032781, -0.00000116, 0.00000000],
+		[-6.27338781, -0.00032614, 0.00019978, 0.00032778, -0.00000116, 0.00000000],
+		[-6.27338789, -0.00032611, 0.00019976, 0.00032775, -0.00000116, 0.00000000],
+		[-6.27338797, -0.00032607, 0.00019974, 0.00032771, -0.00000116, 0.00000000],
+		[-6.27338805, -0.00032604, 0.00019972, 0.00032768, -0.00000116, 0.00000000],
+		[-6.27338814, -0.00032601, 0.00019970, 0.00032764, -0.00000116, 0.00000000],
+		[-6.27338822, -0.00032597, 0.00019968, 0.00032761, -0.00000116, 0.00000000],
+		[-6.27338830, -0.00032594, 0.00019966, 0.00032757, -0.00000116, 0.00000000],
+		[-6.27338838, -0.00032590, 0.00019964, 0.00032754, -0.00000116, 0.00000000],
+		[-6.27338846, -0.00032587, 0.00019962, 0.00032750, -0.00000116, 0.00000000],
+		[-6.27338855, -0.00032583, 0.00019960, 0.00032747, -0.00000116, 0.00000000],
+		[-6.27338863, -0.00032580, 0.00019957, 0.00032744, -0.00000116, 0.00000000],
+		[-6.27338871, -0.00032577, 0.00019955, 0.00032740, -0.00000116, 0.00000000],
+		[-6.27338879, -0.00032573, 0.00019953, 0.00032737, -0.00000116, 0.00000000],
+		[-6.27338887, -0.00032570, 0.00019951, 0.00032733, -0.00000116, 0.00000000],
+		[-6.27338896, -0.00032566, 0.00019949, 0.00032730, -0.00000116, 0.00000000],
+		[-6.27338904, -0.00032563, 0.00019947, 0.00032726, -0.00000116, 0.00000000],
+		[-6.27338912, -0.00032559, 0.00019945, 0.00032723, -0.00000116, 0.00000000],
+		[-6.27338920, -0.00032556, 0.00019943, 0.00032719, -0.00000116, 0.00000000],
+		[-6.27338928, -0.00032553, 0.00019941, 0.00032716, -0.00000116, 0.00000000],
+		[-6.27338937, -0.00032549, 0.00019939, 0.00032713, -0.00000116, 0.00000000],
+		[-6.27338945, -0.00032546, 0.00019936, 0.00032709, -0.00000116, 0.00000000],
+		[-6.27338953, -0.00032542, 0.00019934, 0.00032706, -0.00000116, 0.00000000],
+		[-6.27338961, -0.00032539, 0.00019932, 0.00032702, -0.00000116, 0.00000000],
+		[-6.27338969, -0.00032536, 0.00019930, 0.00032699, -0.00000116, 0.00000000],
+		[-6.27338978, -0.00032532, 0.00019928, 0.00032695, -0.00000116, 0.00000000],
+		[-6.27338986, -0.00032529, 0.00019926, 0.00032692, -0.00000116, 0.00000000],
+		[-6.27338994, -0.00032525, 0.00019924, 0.00032688, -0.00000116, 0.00000000],
+		[-6.27339002, -0.00032522, 0.00019922, 0.00032685, -0.00000116, 0.00000000],
+		[-6.27339010, -0.00032518, 0.00019920, 0.00032682, -0.00000116, 0.00000000],
+		[-6.27339019, -0.00032515, 0.00019918, 0.00032678, -0.00000116, 0.00000000],
+		[-6.27339027, -0.00032512, 0.00019915, 0.00032675, -0.00000116, 0.00000000],
+		[-6.27339035, -0.00032508, 0.00019913, 0.00032671, -0.00000116, 0.00000000],
+		[-6.27339043, -0.00032505, 0.00019911, 0.00032668, -0.00000116, 0.00000000],
+		[-6.27339051, -0.00032501, 0.00019909, 0.00032664, -0.00000116, 0.00000000],
+		[-6.27339059, -0.00032498, 0.00019907, 0.00032661, -0.00000116, 0.00000000],
+		[-6.27339068, -0.00032495, 0.00019905, 0.00032658, -0.00000116, 0.00000000],
+		[-6.27339076, -0.00032491, 0.00019903, 0.00032654, -0.00000116, 0.00000000],
+		[-6.27339084, -0.00032488, 0.00019901, 0.00032651, -0.00000116, 0.00000000],
+		[-6.27339092, -0.00032484, 0.00019899, 0.00032647, -0.00000116, 0.00000000],
+		[-6.27339100, -0.00032481, 0.00019897, 0.00032644, -0.00000116, 0.00000000],
+		[-6.27339108, -0.00032477, 0.00019895, 0.00032640, -0.00000116, 0.00000000],
+		[-6.27339117, -0.00032474, 0.00019892, 0.00032637, -0.00000116, 0.00000000],
+		[-6.27339125, -0.00032471, 0.00019890, 0.00032634, -0.00000116, 0.00000000],
+		[-6.27339133, -0.00032467, 0.00019888, 0.00032630, -0.00000116, 0.00000000],
+		[-6.27339141, -0.00032464, 0.00019886, 0.00032627, -0.00000116, 0.00000000],
+		[-6.27339149, -0.00032460, 0.00019884, 0.00032623, -0.00000116, 0.00000000],
+		[-6.27339157, -0.00032457, 0.00019882, 0.00032620, -0.00000116, 0.00000000],
+		[-6.27339165, -0.00032454, 0.00019880, 0.00032617, -0.00000116, 0.00000000],
+		[-6.27339174, -0.00032450, 0.00019878, 0.00032613, -0.00000116, 0.00000000],
+		[-6.27339182, -0.00032447, 0.00019876, 0.00032610, -0.00000116, 0.00000000],
+		[-6.27339190, -0.00032443, 0.00019874, 0.00032606, -0.00000116, 0.00000000],
+		[-6.27339198, -0.00032440, 0.00019872, 0.00032603, -0.00000116, 0.00000000],
+		[-6.27339206, -0.00032437, 0.00019870, 0.00032599, -0.00000116, 0.00000000],
+		[-6.27339214, -0.00032433, 0.00019867, 0.00032596, -0.00000116, 0.00000000],
+		[-6.27339222, -0.00032430, 0.00019865, 0.00032593, -0.00000116, 0.00000000],
+		[-6.27339231, -0.00032426, 0.00019863, 0.00032589, -0.00000116, 0.00000000],
+		[-6.27339239, -0.00032423, 0.00019861, 0.00032586, -0.00000116, 0.00000000],
+		[-6.27339247, -0.00032420, 0.00019859, 0.00032582, -0.00000116, 0.00000000],
+		[-6.27339255, -0.00032416, 0.00019857, 0.00032579, -0.00000116, 0.00000000],
+		[-6.27339263, -0.00032413, 0.00019855, 0.00032576, -0.00000116, 0.00000000],
+		[-6.27339271, -0.00032409, 0.00019853, 0.00032572, -0.00000116, 0.00000000],
+		[-6.27339279, -0.00032406, 0.00019851, 0.00032569, -0.00000116, 0.00000000],
+		[-6.27339287, -0.00032403, 0.00019849, 0.00032565, -0.00000116, 0.00000000],
+		[-6.27339296, -0.00032399, 0.00019847, 0.00032562, -0.00000116, 0.00000000],
+		[-6.27339304, -0.00032396, 0.00019845, 0.00032558, -0.00000116, 0.00000000],
+		[-6.27339312, -0.00032393, 0.00019843, 0.00032555, -0.00000116, 0.00000000],
+		[-6.27339320, -0.00032389, 0.00019840, 0.00032552, -0.00000116, 0.00000000],
+		[-6.27339328, -0.00032386, 0.00019838, 0.00032548, -0.00000116, 0.00000000],
+		[-6.27339336, -0.00032382, 0.00019836, 0.00032545, -0.00000116, 0.00000000],
+		[-6.27339344, -0.00032379, 0.00019834, 0.00032541, -0.00000116, 0.00000000],
+		[-6.27339352, -0.00032376, 0.00019832, 0.00032538, -0.00000116, 0.00000000],
+		[-6.27339360, -0.00032372, 0.00019830, 0.00032535, -0.00000116, 0.00000000],
+		[-6.27339369, -0.00032369, 0.00019828, 0.00032531, -0.00000116, 0.00000000],
+		[-6.27339377, -0.00032365, 0.00019826, 0.00032528, -0.00000116, 0.00000000],
+		[-6.27339385, -0.00032362, 0.00019824, 0.00032524, -0.00000116, 0.00000000],
+		[-6.27339393, -0.00032359, 0.00019822, 0.00032521, -0.00000116, 0.00000000],
+		[-6.27339401, -0.00032355, 0.00019820, 0.00032518, -0.00000116, 0.00000000],
+		[-6.27339409, -0.00032352, 0.00019818, 0.00032514, -0.00000116, 0.00000000],
+		[-6.27339417, -0.00032349, 0.00019816, 0.00032511, -0.00000116, 0.00000000],
+		[-6.27339425, -0.00032345, 0.00019813, 0.00032507, -0.00000116, 0.00000000],
+		[-6.27339433, -0.00032342, 0.00019811, 0.00032504, -0.00000116, 0.00000000],
+		[-6.27339441, -0.00032338, 0.00019809, 0.00032501, -0.00000116, 0.00000000],
+		[-6.27339450, -0.00032335, 0.00019807, 0.00032497, -0.00000116, 0.00000000],
+		[-6.27339458, -0.00032332, 0.00019805, 0.00032494, -0.00000116, 0.00000000],
+		[-6.27339466, -0.00032328, 0.00019803, 0.00032490, -0.00000116, 0.00000000],
+		[-6.27339474, -0.00032325, 0.00019801, 0.00032487, -0.00000116, 0.00000000],
+		[-6.27339482, -0.00032321, 0.00019799, 0.00032484, -0.00000116, 0.00000000],
+		[-6.27339490, -0.00032318, 0.00019797, 0.00032480, -0.00000116, 0.00000000],
+		[-6.27339498, -0.00032315, 0.00019795, 0.00032477, -0.00000116, 0.00000000],
+		[-6.27339506, -0.00032311, 0.00019793, 0.00032473, -0.00000116, 0.00000000],
+		[-6.27339514, -0.00032308, 0.00019791, 0.00032470, -0.00000116, 0.00000000],
+		[-6.27339522, -0.00032305, 0.00019789, 0.00032467, -0.00000116, 0.00000000],
+		[-6.27339530, -0.00032301, 0.00019787, 0.00032463, -0.00000116, 0.00000000],
+		[-6.27339538, -0.00032298, 0.00019785, 0.00032460, -0.00000116, 0.00000000],
+		[-6.27339546, -0.00032295, 0.00019782, 0.00032457, -0.00000116, 0.00000000],
+		[-6.27339555, -0.00032291, 0.00019780, 0.00032453, -0.00000116, 0.00000000],
+		[-6.27339563, -0.00032288, 0.00019778, 0.00032450, -0.00000116, 0.00000000],
+		[-6.27339571, -0.00032284, 0.00019776, 0.00032446, -0.00000116, 0.00000000],
+		[-6.27339579, -0.00032281, 0.00019774, 0.00032443, -0.00000116, 0.00000000],
+		[-6.27339587, -0.00032278, 0.00019772, 0.00032440, -0.00000116, 0.00000000],
+		[-6.27339595, -0.00032274, 0.00019770, 0.00032436, -0.00000116, 0.00000000],
+		[-6.27339603, -0.00032271, 0.00019768, 0.00032433, -0.00000116, 0.00000000],
+		[-6.27339611, -0.00032268, 0.00019766, 0.00032429, -0.00000116, 0.00000000],
+		[-6.27339619, -0.00032264, 0.00019764, 0.00032426, -0.00000116, 0.00000000],
+		[-6.27339627, -0.00032261, 0.00019762, 0.00032423, -0.00000116, 0.00000000],
+		[-6.27339635, -0.00032258, 0.00019760, 0.00032419, -0.00000116, 0.00000000],
+		[-6.27339643, -0.00032254, 0.00019758, 0.00032416, -0.00000116, 0.00000000],
+		[-6.27339651, -0.00032251, 0.00019756, 0.00032413, -0.00000116, 0.00000000],
+		[-6.27339659, -0.00032247, 0.00019754, 0.00032409, -0.00000116, 0.00000000],
+		[-6.27339667, -0.00032244, 0.00019752, 0.00032406, -0.00000116, 0.00000000],
+		[-6.27339675, -0.00032241, 0.00019749, 0.00032402, -0.00000116, 0.00000000],
+		[-6.27339683, -0.00032237, 0.00019747, 0.00032399, -0.00000116, 0.00000000],
+		[-6.27339691, -0.00032234, 0.00019745, 0.00032396, -0.00000116, 0.00000000],
+		[-6.27339699, -0.00032231, 0.00019743, 0.00032392, -0.00000116, 0.00000000],
+		[-6.27339708, -0.00032227, 0.00019741, 0.00032389, -0.00000116, 0.00000000],
+		[-6.27339716, -0.00032224, 0.00019739, 0.00032386, -0.00000116, 0.00000000],
+		[-6.27339724, -0.00032221, 0.00019737, 0.00032382, -0.00000116, 0.00000000],
+		[-6.27339732, -0.00032217, 0.00019735, 0.00032379, -0.00000116, 0.00000000],
+		[-6.27339740, -0.00032214, 0.00019733, 0.00032375, -0.00000116, 0.00000000],
+		[-6.27339748, -0.00032210, 0.00019731, 0.00032372, -0.00000116, 0.00000000],
+		[-6.27339756, -0.00032207, 0.00019729, 0.00032369, -0.00000116, 0.00000000],
+		[-6.27339764, -0.00032204, 0.00019727, 0.00032365, -0.00000116, 0.00000000],
+		[-6.27339772, -0.00032200, 0.00019725, 0.00032362, -0.00000116, 0.00000000],
+		[-6.27339780, -0.00032197, 0.00019723, 0.00032359, -0.00000116, 0.00000000],
+		[-6.27339788, -0.00032194, 0.00019721, 0.00032355, -0.00000116, 0.00000000],
+		[-6.27339796, -0.00032190, 0.00019719, 0.00032352, -0.00000116, 0.00000000],
+		[-6.27339804, -0.00032187, 0.00019717, 0.00032349, -0.00000116, 0.00000000],
+		[-6.27339812, -0.00032184, 0.00019715, 0.00032345, -0.00000116, 0.00000000],
+		[-6.27339820, -0.00032180, 0.00019713, 0.00032342, -0.00000116, 0.00000000],
+		[-6.27339828, -0.00032177, 0.00019710, 0.00032338, -0.00000116, 0.00000000],
+		[-6.27339836, -0.00032174, 0.00019708, 0.00032335, -0.00000116, 0.00000000],
+		[-6.27339844, -0.00032170, 0.00019706, 0.00032332, -0.00000116, 0.00000000],
+		[-6.27339852, -0.00032167, 0.00019704, 0.00032328, -0.00000116, 0.00000000],
+		[-6.27339860, -0.00032164, 0.00019702, 0.00032325, -0.00000116, 0.00000000],
+		[-6.27339868, -0.00032160, 0.00019700, 0.00032322, -0.00000116, 0.00000000],
+		[-6.27339876, -0.00032157, 0.00019698, 0.00032318, -0.00000116, 0.00000000],
+		[-6.27339884, -0.00032154, 0.00019696, 0.00032315, -0.00000116, 0.00000000],
+		[-6.27339892, -0.00032150, 0.00019694, 0.00032312, -0.00000116, 0.00000000],
+		[-6.27339900, -0.00032147, 0.00019692, 0.00032308, -0.00000116, 0.00000000],
+		[-6.27339908, -0.00032144, 0.00019690, 0.00032305, -0.00000116, 0.00000000],
+		[-6.27339916, -0.00032140, 0.00019688, 0.00032302, -0.00000116, 0.00000000],
+		[-6.27339924, -0.00032137, 0.00019686, 0.00032298, -0.00000116, 0.00000000],
+		[-6.27339932, -0.00032134, 0.00019684, 0.00032295, -0.00000116, 0.00000000],
+		[-6.27339940, -0.00032130, 0.00019682, 0.00032291, -0.00000116, 0.00000000],
+		[-6.27339948, -0.00032127, 0.00019680, 0.00032288, -0.00000116, 0.00000000],
+		[-6.27339956, -0.00032124, 0.00019678, 0.00032285, -0.00000116, 0.00000000],
+		[-6.27339964, -0.00032120, 0.00019676, 0.00032281, -0.00000116, 0.00000000],
+		[-6.27339972, -0.00032117, 0.00019674, 0.00032278, -0.00000116, 0.00000000],
+		[-6.27339980, -0.00032114, 0.00019672, 0.00032275, -0.00000116, 0.00000000],
+		[-6.27339988, -0.00032110, 0.00019670, 0.00032271, -0.00000116, 0.00000000],
+		[-6.27339996, -0.00032107, 0.00019668, 0.00032268, -0.00000116, 0.00000000],
+		[-6.27340004, -0.00032104, 0.00019665, 0.00032265, -0.00000116, 0.00000000],
+		[-6.27340012, -0.00032100, 0.00019663, 0.00032261, -0.00000116, 0.00000000],
+		[-6.27340020, -0.00032097, 0.00019661, 0.00032258, -0.00000116, 0.00000000],
+		[-6.27340028, -0.00032094, 0.00019659, 0.00032255, -0.00000116, 0.00000000],
+		[-6.27340036, -0.00032090, 0.00019657, 0.00032251, -0.00000116, 0.00000000],
+		[-6.27340043, -0.00032087, 0.00019655, 0.00032248, -0.00000116, 0.00000000],
+		[-6.27340051, -0.00032084, 0.00019653, 0.00032245, -0.00000116, 0.00000000],
+		[-6.27340059, -0.00032080, 0.00019651, 0.00032241, -0.00000116, 0.00000000],
+		[-6.27340067, -0.00032077, 0.00019649, 0.00032238, -0.00000116, 0.00000000],
+		[-6.27340075, -0.00032074, 0.00019647, 0.00032235, -0.00000116, 0.00000000],
+		[-6.27340083, -0.00032070, 0.00019645, 0.00032231, -0.00000116, 0.00000000],
+		[-6.27340091, -0.00032067, 0.00019643, 0.00032228, -0.00000116, 0.00000000],
+		[-6.27340099, -0.00032064, 0.00019641, 0.00032225, -0.00000116, 0.00000000],
+		[-6.27340107, -0.00032060, 0.00019639, 0.00032221, -0.00000116, 0.00000000],
+		[-6.27340115, -0.00032057, 0.00019637, 0.00032218, -0.00000116, 0.00000000],
+		[-6.27340123, -0.00032054, 0.00019635, 0.00032215, -0.00000116, 0.00000000],
+		[-6.27340131, -0.00032050, 0.00019633, 0.00032211, -0.00000116, 0.00000000],
+		[-6.27340139, -0.00032047, 0.00019631, 0.00032208, -0.00000116, 0.00000000],
+		[-6.27340147, -0.00032044, 0.00019629, 0.00032205, -0.00000116, 0.00000000],
+		[-6.27340155, -0.00032040, 0.00019627, 0.00032201, -0.00000116, 0.00000000],
+		[-6.27340163, -0.00032037, 0.00019625, 0.00032198, -0.00000116, 0.00000000],
+		[-6.27340171, -0.00032034, 0.00019623, 0.00032195, -0.00000116, 0.00000000],
+		[-6.27340179, -0.00032031, 0.00019621, 0.00032191, -0.00000116, 0.00000000],
+		[-6.27340187, -0.00032027, 0.00019619, 0.00032188, -0.00000116, 0.00000000],
+		[-6.27340194, -0.00032024, 0.00019617, 0.00032185, -0.00000116, 0.00000000],
+		[-6.27340202, -0.00032021, 0.00019615, 0.00032181, -0.00000116, 0.00000000],
+		[-6.27340210, -0.00032017, 0.00019613, 0.00032178, -0.00000116, 0.00000000],
+		[-6.27340218, -0.00032014, 0.00019611, 0.00032175, -0.00000116, 0.00000000],
+		[-6.27340226, -0.00032011, 0.00019608, 0.00032171, -0.00000116, 0.00000000],
+		[-6.27340234, -0.00032007, 0.00019606, 0.00032168, -0.00000116, 0.00000000],
+		[-6.27340242, -0.00032004, 0.00019604, 0.00032165, -0.00000116, 0.00000000],
+		[-6.27340250, -0.00032001, 0.00019602, 0.00032161, -0.00000116, 0.00000000],
+		[-6.27340258, -0.00031997, 0.00019600, 0.00032158, -0.00000116, 0.00000000],
+		[-6.27340266, -0.00031994, 0.00019598, 0.00032155, -0.00000116, 0.00000000],
+		[-6.27340274, -0.00031991, 0.00019596, 0.00032151, -0.00000116, 0.00000000],
+		[-6.27340282, -0.00031987, 0.00019594, 0.00032148, -0.00000116, 0.00000000],
+		[-6.27340290, -0.00031984, 0.00019592, 0.00032145, -0.00000116, 0.00000000],
+		[-6.27340297, -0.00031981, 0.00019590, 0.00032141, -0.00000116, 0.00000000],
+		[-6.27340305, -0.00031978, 0.00019588, 0.00032138, -0.00000116, 0.00000000],
+		[-6.27340313, -0.00031974, 0.00019586, 0.00032135, -0.00000116, 0.00000000],
+		[-6.27340321, -0.00031971, 0.00019584, 0.00032131, -0.00000116, 0.00000000],
+		[-6.27340329, -0.00031968, 0.00019582, 0.00032128, -0.00000116, 0.00000000],
+		[-6.27340337, -0.00031964, 0.00019580, 0.00032125, -0.00000116, 0.00000000],
+		[-6.27340345, -0.00031961, 0.00019578, 0.00032121, -0.00000116, 0.00000000],
+		[-6.27340353, -0.00031958, 0.00019576, 0.00032118, -0.00000116, 0.00000000],
+		[-6.27340361, -0.00031954, 0.00019574, 0.00032115, -0.00000116, 0.00000000],
+		[-6.27340369, -0.00031951, 0.00019572, 0.00032111, -0.00000116, 0.00000000],
+		[-6.27340377, -0.00031948, 0.00019570, 0.00032108, -0.00000116, 0.00000000],
+		[-6.27340384, -0.00031945, 0.00019568, 0.00032105, -0.00000116, 0.00000000],
+		[-6.27340392, -0.00031941, 0.00019566, 0.00032102, -0.00000116, 0.00000000],
+		[-6.27340400, -0.00031938, 0.00019564, 0.00032098, -0.00000116, 0.00000000],
+		[-6.27340408, -0.00031935, 0.00019562, 0.00032095, -0.00000116, 0.00000000],
+		[-6.27340416, -0.00031931, 0.00019560, 0.00032092, -0.00000116, 0.00000000],
+		[-6.27340424, -0.00031928, 0.00019558, 0.00032088, -0.00000116, 0.00000000],
+		[-6.27340432, -0.00031925, 0.00019556, 0.00032085, -0.00000116, 0.00000000],
+		[-6.27340440, -0.00031922, 0.00019554, 0.00032082, -0.00000116, 0.00000000],
+		[-6.27340448, -0.00031918, 0.00019552, 0.00032078, -0.00000116, 0.00000000],
+		[-6.27340455, -0.00031915, 0.00019550, 0.00032075, -0.00000116, 0.00000000],
+		[-6.27340463, -0.00031912, 0.00019548, 0.00032072, -0.00000116, 0.00000000],
+		[-6.27340471, -0.00031908, 0.00019546, 0.00032068, -0.00000116, 0.00000000],
+		[-6.27340479, -0.00031905, 0.00019544, 0.00032065, -0.00000116, 0.00000000],
+		[-6.27340487, -0.00031902, 0.00019542, 0.00032062, -0.00000116, 0.00000000],
+		[-6.27340495, -0.00031899, 0.00019540, 0.00032059, -0.00000116, 0.00000000],
+		[-6.27340503, -0.00031895, 0.00019538, 0.00032055, -0.00000116, 0.00000000],
+		[-6.27340511, -0.00031892, 0.00019536, 0.00032052, -0.00000116, 0.00000000],
+		[-6.27340518, -0.00031889, 0.00019534, 0.00032049, -0.00000116, 0.00000000],
+		[-6.27340526, -0.00031885, 0.00019532, 0.00032045, -0.00000116, 0.00000000],
+		[-6.27340534, -0.00031882, 0.00019530, 0.00032042, -0.00000116, 0.00000000],
+		[-6.27340542, -0.00031879, 0.00019528, 0.00032039, -0.00000116, 0.00000000],
+		[-6.27340550, -0.00031876, 0.00019526, 0.00032035, -0.00000116, 0.00000000],
+		[-6.27340558, -0.00031872, 0.00019524, 0.00032032, -0.00000116, 0.00000000],
+		[-6.27340566, -0.00031869, 0.00019522, 0.00032029, -0.00000116, 0.00000000],
+		[-6.27340573, -0.00031866, 0.00019520, 0.00032026, -0.00000116, 0.00000000],
+		[-6.27340581, -0.00031862, 0.00019518, 0.00032022, -0.00000116, 0.00000000],
+		[-6.27340589, -0.00031859, 0.00019516, 0.00032019, -0.00000116, 0.00000000],
+		[-6.27340597, -0.00031856, 0.00019514, 0.00032016, -0.00000116, 0.00000000],
+		[-6.27340605, -0.00031853, 0.00019512, 0.00032012, -0.00000116, 0.00000000],
+		[-6.27340613, -0.00031849, 0.00019510, 0.00032009, -0.00000116, 0.00000000],
+		[-6.27340621, -0.00031846, 0.00019508, 0.00032006, -0.00000116, 0.00000000],
+		[-6.27340628, -0.00031843, 0.00019506, 0.00032002, -0.00000116, 0.00000000],
+		[-6.27340636, -0.00031839, 0.00019504, 0.00031999, -0.00000116, 0.00000000],
+		[-6.27340644, -0.00031836, 0.00019502, 0.00031996, -0.00000116, 0.00000000],
+		[-6.27340652, -0.00031833, 0.00019500, 0.00031993, -0.00000116, 0.00000000],
+		[-6.27340660, -0.00031830, 0.00019498, 0.00031989, -0.00000116, 0.00000000],
+		[-6.27340668, -0.00031826, 0.00019496, 0.00031986, -0.00000116, 0.00000000],
+		[-6.27340675, -0.00031823, 0.00019494, 0.00031983, -0.00000116, 0.00000000],
+		[-6.27340683, -0.00031820, 0.00019492, 0.00031979, -0.00000116, 0.00000000],
+		[-6.27340691, -0.00031817, 0.00019490, 0.00031976, -0.00000116, 0.00000000],
+		[-6.27340699, -0.00031813, 0.00019488, 0.00031973, -0.00000116, 0.00000000],
+		[-6.27340707, -0.00031810, 0.00019486, 0.00031970, -0.00000116, 0.00000000],
+		[-6.27340715, -0.00031807, 0.00019484, 0.00031966, -0.00000116, 0.00000000],
+		[-6.27340722, -0.00031803, 0.00019482, 0.00031963, -0.00000116, 0.00000000],
+		[-6.27340730, -0.00031800, 0.00019480, 0.00031960, -0.00000116, 0.00000000],
+		[-6.27340738, -0.00031797, 0.00019478, 0.00031956, -0.00000116, 0.00000000],
+		[-6.27340746, -0.00031794, 0.00019476, 0.00031953, -0.00000116, 0.00000000],
+		[-6.27340754, -0.00031790, 0.00019474, 0.00031950, -0.00000116, 0.00000000],
+		[-6.27340761, -0.00031787, 0.00019472, 0.00031947, -0.00000116, 0.00000000],
+		[-6.27340769, -0.00031784, 0.00019470, 0.00031943, -0.00000116, 0.00000000],
+		[-6.27340777, -0.00031781, 0.00019468, 0.00031940, -0.00000116, 0.00000000],
+		[-6.27340785, -0.00031777, 0.00019466, 0.00031937, -0.00000116, 0.00000000],
+		[-6.27340793, -0.00031774, 0.00019464, 0.00031933, -0.00000116, 0.00000000],
+		[-6.27340801, -0.00031771, 0.00019462, 0.00031930, -0.00000116, 0.00000000],
+		[-6.27340808, -0.00031768, 0.00019460, 0.00031927, -0.00000116, 0.00000000],
+		[-6.27340816, -0.00031764, 0.00019458, 0.00031924, -0.00000116, 0.00000000],
+		[-6.27340824, -0.00031761, 0.00019456, 0.00031920, -0.00000116, 0.00000000],
+		[-6.27340832, -0.00031758, 0.00019454, 0.00031917, -0.00000116, 0.00000000],
+		[-6.27340840, -0.00031755, 0.00019452, 0.00031914, -0.00000116, 0.00000000],
+		[-6.27340847, -0.00031751, 0.00019450, 0.00031911, -0.00000116, 0.00000000],
+		[-6.27340855, -0.00031748, 0.00019448, 0.00031907, -0.00000116, 0.00000000],
+		[-6.27340863, -0.00031745, 0.00019446, 0.00031904, -0.00000116, 0.00000000],
+		[-6.27340871, -0.00031742, 0.00019444, 0.00031901, -0.00000116, 0.00000000],
+		[-6.27340879, -0.00031738, 0.00019442, 0.00031897, -0.00000116, 0.00000000],
+		[-6.27340886, -0.00031735, 0.00019440, 0.00031894, -0.00000116, 0.00000000],
+		[-6.27340894, -0.00031732, 0.00019438, 0.00031891, -0.00000116, 0.00000000],
+		[-6.27340902, -0.00031728, 0.00019436, 0.00031888, -0.00000116, 0.00000000],
+		[-6.27340910, -0.00031725, 0.00019434, 0.00031884, -0.00000116, 0.00000000],
+		[-6.27340917, -0.00031722, 0.00019432, 0.00031881, -0.00000116, 0.00000000],
+		[-6.27340925, -0.00031719, 0.00019430, 0.00031878, -0.00000116, 0.00000000],
+		[-6.27340933, -0.00031715, 0.00019428, 0.00031875, -0.00000116, 0.00000000],
+		[-6.27340941, -0.00031712, 0.00019426, 0.00031871, -0.00000116, 0.00000000],
+		[-6.27340949, -0.00031709, 0.00019424, 0.00031868, -0.00000116, 0.00000000],
+		[-6.27340956, -0.00031706, 0.00019422, 0.00031865, -0.00000116, 0.00000000],
+		[-6.27340964, -0.00031702, 0.00019420, 0.00031862, -0.00000116, 0.00000000],
+		[-6.27340972, -0.00031699, 0.00019418, 0.00031858, -0.00000116, 0.00000000],
+		[-6.27340980, -0.00031696, 0.00019416, 0.00031855, -0.00000116, 0.00000000],
+		[-6.27340987, -0.00031693, 0.00019414, 0.00031852, -0.00000116, 0.00000000],
+		[-6.27340995, -0.00031690, 0.00019412, 0.00031848, -0.00000116, 0.00000000],
+		[-6.27341003, -0.00031686, 0.00019410, 0.00031845, -0.00000116, 0.00000000],
+		[-6.27341011, -0.00031683, 0.00019408, 0.00031842, -0.00000116, 0.00000000],
+		[-6.27341019, -0.00031680, 0.00019406, 0.00031839, -0.00000116, 0.00000000],
+		[-6.27341026, -0.00031677, 0.00019404, 0.00031835, -0.00000116, 0.00000000],
+		[-6.27341034, -0.00031673, 0.00019402, 0.00031832, -0.00000116, 0.00000000],
+		[-6.27341042, -0.00031670, 0.00019400, 0.00031829, -0.00000116, 0.00000000],
+		[-6.27341050, -0.00031667, 0.00019398, 0.00031826, -0.00000116, 0.00000000],
+		[-6.27341057, -0.00031664, 0.00019396, 0.00031822, -0.00000116, 0.00000000],
+		[-6.27341065, -0.00031660, 0.00019394, 0.00031819, -0.00000116, 0.00000000],
+		[-6.27341073, -0.00031657, 0.00019392, 0.00031816, -0.00000116, 0.00000000],
+		[-6.27341081, -0.00031654, 0.00019390, 0.00031813, -0.00000116, 0.00000000],
+		[-6.27341088, -0.00031651, 0.00019388, 0.00031809, -0.00000116, 0.00000000],
+		[-6.27341096, -0.00031647, 0.00019386, 0.00031806, -0.00000116, 0.00000000],
+		[-6.27341104, -0.00031644, 0.00019384, 0.00031803, -0.00000116, 0.00000000],
+		[-6.27341112, -0.00031641, 0.00019382, 0.00031800, -0.00000116, 0.00000000],
+		[-6.27341119, -0.00031638, 0.00019380, 0.00031796, -0.00000116, 0.00000000],
+		[-6.27341127, -0.00031634, 0.00019378, 0.00031793, -0.00000116, 0.00000000],
+		[-6.27341135, -0.00031631, 0.00019376, 0.00031790, -0.00000116, 0.00000000],
+		[-6.27341143, -0.00031628, 0.00019374, 0.00031787, -0.00000116, 0.00000000],
+		[-6.27341150, -0.00031625, 0.00019372, 0.00031783, -0.00000116, 0.00000000],
+		[-6.27341158, -0.00031622, 0.00019370, 0.00031780, -0.00000116, 0.00000000],
+		[-6.27341166, -0.00031618, 0.00019368, 0.00031777, -0.00000116, 0.00000000],
+		[-6.27341173, -0.00031615, 0.00019366, 0.00031774, -0.00000116, 0.00000000],
+		[-6.27341181, -0.00031612, 0.00019364, 0.00031770, -0.00000116, 0.00000000],
+		[-6.27341189, -0.00031609, 0.00019362, 0.00031767, -0.00000116, 0.00000000],
+		[-6.27341197, -0.00031605, 0.00019360, 0.00031764, -0.00000116, 0.00000000],
+		[-6.27341204, -0.00031602, 0.00019358, 0.00031761, -0.00000116, 0.00000000],
+		[-6.27341212, -0.00031599, 0.00019356, 0.00031757, -0.00000116, 0.00000000],
+		[-6.27341220, -0.00031596, 0.00019354, 0.00031754, -0.00000116, 0.00000000],
+		[-6.27341228, -0.00031592, 0.00019352, 0.00031751, -0.00000116, 0.00000000],
+		[-6.27341235, -0.00031589, 0.00019350, 0.00031748, -0.00000116, 0.00000000],
+		[-6.27341243, -0.00031586, 0.00019348, 0.00031744, -0.00000116, 0.00000000],
+		[-6.27341251, -0.00031583, 0.00019346, 0.00031741, -0.00000116, 0.00000000],
+		[-6.27341258, -0.00031580, 0.00019344, 0.00031738, -0.00000116, 0.00000000],
+		[-6.27341266, -0.00031576, 0.00019342, 0.00031735, -0.00000116, 0.00000000],
+		[-6.27341274, -0.00031573, 0.00019340, 0.00031732, -0.00000116, 0.00000000],
+		[-6.27341282, -0.00031570, 0.00019338, 0.00031728, -0.00000116, 0.00000000],
+		[-6.27341289, -0.00031567, 0.00019336, 0.00031725, -0.00000116, 0.00000000],
+		[-6.27341297, -0.00031563, 0.00019334, 0.00031722, -0.00000116, 0.00000000],
+		[-6.27341305, -0.00031560, 0.00019333, 0.00031719, -0.00000116, 0.00000000],
+		[-6.27341312, -0.00031557, 0.00019331, 0.00031715, -0.00000116, 0.00000000],
+		[-6.27341320, -0.00031554, 0.00019329, 0.00031712, -0.00000116, 0.00000000],
+		[-6.27341328, -0.00031551, 0.00019327, 0.00031709, -0.00000116, 0.00000000],
+		[-6.27341336, -0.00031547, 0.00019325, 0.00031706, -0.00000116, 0.00000000],
+		[-6.27341343, -0.00031544, 0.00019323, 0.00031702, -0.00000116, 0.00000000],
+		[-6.27341351, -0.00031541, 0.00019321, 0.00031699, -0.00000116, 0.00000000],
+		[-6.27341359, -0.00031538, 0.00019319, 0.00031696, -0.00000116, 0.00000000],
+		[-6.27341366, -0.00031535, 0.00019317, 0.00031693, -0.00000116, 0.00000000],
+		[-6.27341374, -0.00031531, 0.00019315, 0.00031689, -0.00000116, 0.00000000],
+		[-6.27341382, -0.00031528, 0.00019313, 0.00031686, -0.00000116, 0.00000000],
+		[-6.27341389, -0.00031525, 0.00019311, 0.00031683, -0.00000116, 0.00000000],
+		[-6.27341397, -0.00031522, 0.00019309, 0.00031680, -0.00000116, 0.00000000],
+		[-6.27341405, -0.00031519, 0.00019307, 0.00031677, -0.00000116, 0.00000000],
+		[-6.27341412, -0.00031515, 0.00019305, 0.00031673, -0.00000116, 0.00000000],
+		[-6.27341420, -0.00031512, 0.00019303, 0.00031670, -0.00000116, 0.00000000],
+		[-6.27341428, -0.00031509, 0.00019301, 0.00031667, -0.00000116, 0.00000000],
+		[-6.27341435, -0.00031506, 0.00019299, 0.00031664, -0.00000116, 0.00000000],
+		[-6.27341443, -0.00031502, 0.00019297, 0.00031660, -0.00000116, 0.00000000],
+		[-6.27341451, -0.00031499, 0.00019295, 0.00031657, -0.00000116, 0.00000000],
+		[-6.27341459, -0.00031496, 0.00019293, 0.00031654, -0.00000116, 0.00000000],
+		[-6.27341466, -0.00031493, 0.00019291, 0.00031651, -0.00000116, 0.00000000],
+		[-6.27341474, -0.00031490, 0.00019289, 0.00031648, -0.00000116, 0.00000000],
+		[-6.27341482, -0.00031486, 0.00019287, 0.00031644, -0.00000116, 0.00000000],
+		[-6.27341489, -0.00031483, 0.00019285, 0.00031641, -0.00000116, 0.00000000],
+		[-6.27341497, -0.00031480, 0.00019283, 0.00031638, -0.00000116, 0.00000000],
+		[-6.27341505, -0.00031477, 0.00019281, 0.00031635, -0.00000116, 0.00000000],
+		[-6.27341512, -0.00031474, 0.00019279, 0.00031631, -0.00000116, 0.00000000],
+		[-6.27341520, -0.00031470, 0.00019277, 0.00031628, -0.00000116, 0.00000000],
+		[-6.27341528, -0.00031467, 0.00019275, 0.00031625, -0.00000116, 0.00000000],
+		[-6.27341535, -0.00031464, 0.00019274, 0.00031622, -0.00000116, 0.00000000],
+		[-6.27341543, -0.00031461, 0.00019272, 0.00031619, -0.00000116, 0.00000000],
+		[-6.27341550, -0.00031458, 0.00019270, 0.00031615, -0.00000116, 0.00000000],
+		[-6.27341558, -0.00031454, 0.00019268, 0.00031612, -0.00000116, 0.00000000],
+		[-6.27341566, -0.00031451, 0.00019266, 0.00031609, -0.00000116, 0.00000000],
+		[-6.27341573, -0.00031448, 0.00019264, 0.00031606, -0.00000116, 0.00000000],
+		[-6.27341581, -0.00031445, 0.00019262, 0.00031603, -0.00000116, 0.00000000],
+		[-6.27341589, -0.00031442, 0.00019260, 0.00031599, -0.00000116, 0.00000000],
+		[-6.27341596, -0.00031438, 0.00019258, 0.00031596, -0.00000116, 0.00000000],
+		[-6.27341604, -0.00031435, 0.00019256, 0.00031593, -0.00000116, 0.00000000],
+		[-6.27341612, -0.00031432, 0.00019254, 0.00031590, -0.00000116, 0.00000000],
+		[-6.27341619, -0.00031429, 0.00019252, 0.00031587, -0.00000116, 0.00000000],
+		[-6.27341627, -0.00031426, 0.00019250, 0.00031583, -0.00000116, 0.00000000],
+		[-6.27341635, -0.00031423, 0.00019248, 0.00031580, -0.00000116, 0.00000000],
+		[-6.27341642, -0.00031419, 0.00019246, 0.00031577, -0.00000116, 0.00000000],
+		[-6.27341650, -0.00031416, 0.00019244, 0.00031574, -0.00000116, 0.00000000],
+		[-6.27341658, -0.00031413, 0.00019242, 0.00031571, -0.00000116, 0.00000000],
+		[-6.27341665, -0.00031410, 0.00019240, 0.00031567, -0.00000116, 0.00000000],
+		[-6.27341673, -0.00031407, 0.00019238, 0.00031564, -0.00000116, 0.00000000],
+		[-6.27341680, -0.00031403, 0.00019236, 0.00031561, -0.00000116, 0.00000000],
+		[-6.27341688, -0.00031400, 0.00019234, 0.00031558, -0.00000116, 0.00000000],
+		[-6.27341696, -0.00031397, 0.00019232, 0.00031554, -0.00000116, 0.00000000],
+		[-6.27341703, -0.00031394, 0.00019231, 0.00031551, -0.00000116, 0.00000000],
+		[-6.27341711, -0.00031391, 0.00019229, 0.00031548, -0.00000116, 0.00000000],
+		[-6.27341719, -0.00031387, 0.00019227, 0.00031545, -0.00000116, 0.00000000],
+		[-6.27341726, -0.00031384, 0.00019225, 0.00031542, -0.00000116, 0.00000000],
+		[-6.27341734, -0.00031381, 0.00019223, 0.00031538, -0.00000116, 0.00000000],
+		[-6.27341741, -0.00031378, 0.00019221, 0.00031535, -0.00000116, 0.00000000],
+		[-6.27341749, -0.00031375, 0.00019219, 0.00031532, -0.00000116, 0.00000000],
+		[-6.27341757, -0.00031372, 0.00019217, 0.00031529, -0.00000116, 0.00000000],
+		[-6.27341764, -0.00031368, 0.00019215, 0.00031526, -0.00000116, 0.00000000],
+		[-6.27341772, -0.00031365, 0.00019213, 0.00031523, -0.00000116, 0.00000000],
+		[-6.27341779, -0.00031362, 0.00019211, 0.00031519, -0.00000116, 0.00000000],
+		[-6.27341787, -0.00031359, 0.00019209, 0.00031516, -0.00000116, 0.00000000],
+		[-6.27341795, -0.00031356, 0.00019207, 0.00031513, -0.00000116, 0.00000000],
+		[-6.27341802, -0.00031353, 0.00019205, 0.00031510, -0.00000116, 0.00000000],
+		[-6.27341810, -0.00031349, 0.00019203, 0.00031507, -0.00000116, 0.00000000],
+		[-6.27341817, -0.00031346, 0.00019201, 0.00031503, -0.00000116, 0.00000000],
+		[-6.27341825, -0.00031343, 0.00019199, 0.00031500, -0.00000116, 0.00000000],
+		[-6.27341833, -0.00031340, 0.00019197, 0.00031497, -0.00000116, 0.00000000],
+		[-6.27341840, -0.00031337, 0.00019195, 0.00031494, -0.00000116, 0.00000000],
+		[-6.27341848, -0.00031333, 0.00019194, 0.00031491, -0.00000116, 0.00000000],
+		[-6.27341855, -0.00031330, 0.00019192, 0.00031487, -0.00000116, 0.00000000],
+		[-6.27341863, -0.00031327, 0.00019190, 0.00031484, -0.00000116, 0.00000000],
+		[-6.27341871, -0.00031324, 0.00019188, 0.00031481, -0.00000116, 0.00000000],
+		[-6.27341878, -0.00031321, 0.00019186, 0.00031478, -0.00000116, 0.00000000],
+		[-6.27341886, -0.00031318, 0.00019184, 0.00031475, -0.00000116, 0.00000000],
+		[-6.27341893, -0.00031314, 0.00019182, 0.00031471, -0.00000116, 0.00000000],
+		[-6.27341901, -0.00031311, 0.00019180, 0.00031468, -0.00000116, 0.00000000],
+		[-6.27341909, -0.00031308, 0.00019178, 0.00031465, -0.00000116, 0.00000000],
+		[-6.27341916, -0.00031305, 0.00019176, 0.00031462, -0.00000116, 0.00000000],
+		[-6.27341924, -0.00031302, 0.00019174, 0.00031459, -0.00000116, 0.00000000],
+		[-6.27341931, -0.00031299, 0.00019172, 0.00031456, -0.00000116, 0.00000000],
+		[-6.27341939, -0.00031295, 0.00019170, 0.00031452, -0.00000116, 0.00000000],
+		[-6.27341946, -0.00031292, 0.00019168, 0.00031449, -0.00000116, 0.00000000],
+		[-6.27341954, -0.00031289, 0.00019166, 0.00031446, -0.00000116, 0.00000000],
+		[-6.27341962, -0.00031286, 0.00019164, 0.00031443, -0.00000116, 0.00000000],
+		[-6.27341969, -0.00031283, 0.00019162, 0.00031440, -0.00000116, 0.00000000],
+		[-6.27341977, -0.00031280, 0.00019161, 0.00031437, -0.00000116, 0.00000000],
+		[-6.27341984, -0.00031276, 0.00019159, 0.00031433, -0.00000116, 0.00000000],
+		[-6.27341992, -0.00031273, 0.00019157, 0.00031430, -0.00000116, 0.00000000],
+		[-6.27341999, -0.00031270, 0.00019155, 0.00031427, -0.00000116, 0.00000000],
+		[-6.27342007, -0.00031267, 0.00019153, 0.00031424, -0.00000116, 0.00000000],
+		[-6.27342015, -0.00031264, 0.00019151, 0.00031421, -0.00000116, 0.00000000],
+		[-6.27342022, -0.00031261, 0.00019149, 0.00031417, -0.00000116, 0.00000000],
+		[-6.27342030, -0.00031258, 0.00019147, 0.00031414, -0.00000116, 0.00000000],
+		[-6.27342037, -0.00031254, 0.00019145, 0.00031411, -0.00000116, 0.00000000],
+		[-6.27342045, -0.00031251, 0.00019143, 0.00031408, -0.00000116, 0.00000000],
+		[-6.27342052, -0.00031248, 0.00019141, 0.00031405, -0.00000116, 0.00000000],
+		[-6.27342060, -0.00031245, 0.00019139, 0.00031402, -0.00000116, 0.00000000],
+		[-6.27342067, -0.00031242, 0.00019137, 0.00031398, -0.00000116, 0.00000000],
+		[-6.27342075, -0.00031239, 0.00019135, 0.00031395, -0.00000116, 0.00000000],
+		[-6.27342083, -0.00031235, 0.00019133, 0.00031392, -0.00000116, 0.00000000],
+		[-6.27342090, -0.00031232, 0.00019132, 0.00031389, -0.00000116, 0.00000000],
+		[-6.27342098, -0.00031229, 0.00019130, 0.00031386, -0.00000116, 0.00000000],
+		[-6.27342105, -0.00031226, 0.00019128, 0.00031383, -0.00000116, 0.00000000],
+		[-6.27342113, -0.00031223, 0.00019126, 0.00031379, -0.00000116, 0.00000000],
+		[-6.27342120, -0.00031220, 0.00019124, 0.00031376, -0.00000116, 0.00000000],
+		[-6.27342128, -0.00031217, 0.00019122, 0.00031373, -0.00000116, 0.00000000],
+		[-6.27342135, -0.00031213, 0.00019120, 0.00031370, -0.00000116, 0.00000000],
+		[-6.27342143, -0.00031210, 0.00019118, 0.00031367, -0.00000116, 0.00000000],
+		[-6.27342150, -0.00031207, 0.00019116, 0.00031364, -0.00000116, 0.00000000],
+		[-6.27342158, -0.00031204, 0.00019114, 0.00031360, -0.00000116, 0.00000000],
+		[-6.27342166, -0.00031201, 0.00019112, 0.00031357, -0.00000116, 0.00000000],
+		[-6.27342173, -0.00031198, 0.00019110, 0.00031354, -0.00000116, 0.00000000],
+		[-6.27342181, -0.00031195, 0.00019108, 0.00031351, -0.00000116, 0.00000000],
+		[-6.27342188, -0.00031191, 0.00019106, 0.00031348, -0.00000116, 0.00000000],
+		[-6.27342196, -0.00031188, 0.00019105, 0.00031345, -0.00000116, 0.00000000],
+		[-6.27342203, -0.00031185, 0.00019103, 0.00031341, -0.00000116, 0.00000000],
+		[-6.27342211, -0.00031182, 0.00019101, 0.00031338, -0.00000116, 0.00000000],
+		[-6.27342218, -0.00031179, 0.00019099, 0.00031335, -0.00000116, 0.00000000],
+		[-6.27342226, -0.00031176, 0.00019097, 0.00031332, -0.00000116, 0.00000000],
+		[-6.27342233, -0.00031173, 0.00019095, 0.00031329, -0.00000116, 0.00000000],
+		[-6.27342241, -0.00031169, 0.00019093, 0.00031326, -0.00000116, 0.00000000],
+		[-6.27342248, -0.00031166, 0.00019091, 0.00031323, -0.00000116, 0.00000000],
+		[-6.27342256, -0.00031163, 0.00019089, 0.00031319, -0.00000116, 0.00000000],
+		[-6.27342263, -0.00031160, 0.00019087, 0.00031316, -0.00000116, 0.00000000],
+		[-6.27342271, -0.00031157, 0.00019085, 0.00031313, -0.00000116, 0.00000000],
+		[-6.27342278, -0.00031154, 0.00019083, 0.00031310, -0.00000116, 0.00000000],
+		[-6.27342286, -0.00031151, 0.00019081, 0.00031307, -0.00000116, 0.00000000],
+		[-6.27342293, -0.00031147, 0.00019080, 0.00031304, -0.00000116, 0.00000000],
+		[-6.27342301, -0.00031144, 0.00019078, 0.00031300, -0.00000116, 0.00000000],
+		[-6.27342308, -0.00031141, 0.00019076, 0.00031297, -0.00000116, 0.00000000],
+		[-6.27342316, -0.00031138, 0.00019074, 0.00031294, -0.00000116, 0.00000000],
+		[-6.27342323, -0.00031135, 0.00019072, 0.00031291, -0.00000116, 0.00000000],
+		[-6.27342331, -0.00031132, 0.00019070, 0.00031288, -0.00000116, 0.00000000],
+		[-6.27342338, -0.00031129, 0.00019068, 0.00031285, -0.00000116, 0.00000000],
+		[-6.27342346, -0.00031126, 0.00019066, 0.00031282, -0.00000116, 0.00000000],
+		[-6.27342353, -0.00031122, 0.00019064, 0.00031278, -0.00000116, 0.00000000],
+		[-6.27342361, -0.00031119, 0.00019062, 0.00031275, -0.00000116, 0.00000000],
+		[-6.27342368, -0.00031116, 0.00019060, 0.00031272, -0.00000116, 0.00000000],
+		[-6.27342376, -0.00031113, 0.00019058, 0.00031269, -0.00000116, 0.00000000],
+		[-6.27342383, -0.00031110, 0.00019057, 0.00031266, -0.00000116, 0.00000000],
+		[-6.27342391, -0.00031107, 0.00019055, 0.00031263, -0.00000116, 0.00000000],
+		[-6.27342398, -0.00031104, 0.00019053, 0.00031260, -0.00000116, 0.00000000],
+		[-6.27342406, -0.00031101, 0.00019051, 0.00031256, -0.00000116, 0.00000000],
+		[-6.27342413, -0.00031097, 0.00019049, 0.00031253, -0.00000116, 0.00000000],
+		[-6.27342421, -0.00031094, 0.00019047, 0.00031250, -0.00000116, 0.00000000],
+		[-6.27342428, -0.00031091, 0.00019045, 0.00031247, -0.00000116, 0.00000000],
+		[-6.27342436, -0.00031088, 0.00019043, 0.00031244, -0.00000116, 0.00000000],
+		[-6.27342443, -0.00031085, 0.00019041, 0.00031241, -0.00000116, 0.00000000],
+		[-6.27342451, -0.00031082, 0.00019039, 0.00031238, -0.00000116, 0.00000000],
+		[-6.27342458, -0.00031079, 0.00019037, 0.00031235, -0.00000116, 0.00000000],
+		[-6.27342466, -0.00031076, 0.00019035, 0.00031231, -0.00000116, 0.00000000],
+		[-6.27342473, -0.00031072, 0.00019034, 0.00031228, -0.00000116, 0.00000000],
+		[-6.27342480, -0.00031069, 0.00019032, 0.00031225, -0.00000116, 0.00000000],
+		[-6.27342488, -0.00031066, 0.00019030, 0.00031222, -0.00000116, 0.00000000],
+		[-6.27342495, -0.00031063, 0.00019028, 0.00031219, -0.00000116, 0.00000000],
+		[-6.27342503, -0.00031060, 0.00019026, 0.00031216, -0.00000116, 0.00000000],
+		[-6.27342510, -0.00031057, 0.00019024, 0.00031213, -0.00000116, 0.00000000],
+		[-6.27342518, -0.00031054, 0.00019022, 0.00031209, -0.00000116, 0.00000000],
+		[-6.27342525, -0.00031051, 0.00019020, 0.00031206, -0.00000116, 0.00000000],
+		[-6.27342533, -0.00031047, 0.00019018, 0.00031203, -0.00000116, 0.00000000],
+		[-6.27342540, -0.00031044, 0.00019016, 0.00031200, -0.00000116, 0.00000000],
+		[-6.27342548, -0.00031041, 0.00019014, 0.00031197, -0.00000116, 0.00000000],
+		[-6.27342555, -0.00031038, 0.00019013, 0.00031194, -0.00000116, 0.00000000],
+		[-6.27342563, -0.00031035, 0.00019011, 0.00031191, -0.00000116, 0.00000000],
+		[-6.27342570, -0.00031032, 0.00019009, 0.00031188, -0.00000116, 0.00000000],
+		[-6.27342577, -0.00031029, 0.00019007, 0.00031184, -0.00000116, 0.00000000],
+		[-6.27342585, -0.00031026, 0.00019005, 0.00031181, -0.00000116, 0.00000000],
+		[-6.27342592, -0.00031023, 0.00019003, 0.00031178, -0.00000116, 0.00000000],
+		[-6.27342600, -0.00031019, 0.00019001, 0.00031175, -0.00000116, 0.00000000],
+		[-6.27342607, -0.00031016, 0.00018999, 0.00031172, -0.00000116, 0.00000000],
+		[-6.27342615, -0.00031013, 0.00018997, 0.00031169, -0.00000116, 0.00000000],
+		[-6.27342622, -0.00031010, 0.00018995, 0.00031166, -0.00000116, 0.00000000],
+		[-6.27342630, -0.00031007, 0.00018993, 0.00031163, -0.00000116, 0.00000000],
+		[-6.27342637, -0.00031004, 0.00018992, 0.00031159, -0.00000116, 0.00000000],
+		[-6.27342644, -0.00031001, 0.00018990, 0.00031156, -0.00000116, 0.00000000],
+		[-6.27342652, -0.00030998, 0.00018988, 0.00031153, -0.00000116, 0.00000000],
+		[-6.27342659, -0.00030995, 0.00018986, 0.00031150, -0.00000116, 0.00000000],
+		[-6.27342667, -0.00030992, 0.00018984, 0.00031147, -0.00000116, 0.00000000],
+		[-6.27342674, -0.00030988, 0.00018982, 0.00031144, -0.00000116, 0.00000000],
+		[-6.27342682, -0.00030985, 0.00018980, 0.00031141, -0.00000116, 0.00000000],
+		[-6.27342689, -0.00030982, 0.00018978, 0.00031138, -0.00000116, 0.00000000],
+		[-6.27342696, -0.00030979, 0.00018976, 0.00031134, -0.00000116, 0.00000000],
+		[-6.27342704, -0.00030976, 0.00018974, 0.00031131, -0.00000116, 0.00000000],
+		[-6.27342711, -0.00030973, 0.00018973, 0.00031128, -0.00000116, 0.00000000],
+		[-6.27342719, -0.00030970, 0.00018971, 0.00031125, -0.00000116, 0.00000000],
+		[-6.27342726, -0.00030967, 0.00018969, 0.00031122, -0.00000116, 0.00000000],
+		[-6.27342733, -0.00030964, 0.00018967, 0.00031119, -0.00000116, 0.00000000],
+		[-6.27342741, -0.00030961, 0.00018965, 0.00031116, -0.00000116, 0.00000000],
+		[-6.27342748, -0.00030957, 0.00018963, 0.00031113, -0.00000116, 0.00000000],
+		[-6.27342756, -0.00030954, 0.00018961, 0.00031110, -0.00000116, 0.00000000],
+		[-6.27342763, -0.00030951, 0.00018959, 0.00031106, -0.00000116, 0.00000000],
+		[-6.27342771, -0.00030948, 0.00018957, 0.00031103, -0.00000116, 0.00000000],
+		[-6.27342778, -0.00030945, 0.00018956, 0.00031100, -0.00000116, 0.00000000]
+	];
+
+	// Cut off series at maxdeg
+	love_numbers.splice(maxdeg + 1, love_numbers.length - maxdeg + 1);
+
+	// Retrieve right type
+
+	/*
+	Arrow function to retrieve column of values
+
+	Sources:
+	 - https://stackoverflow.com/questions/7848004/get-column-from-a-two-dimensional-array
+
+	TODO:
+	- Place this in another scope so that it is available generally as a helper 
+	function.
+	*/
+	const array_column = (arr, n) => arr.map(x => x[n]);
+
+	let series = [];
+	if (type === 'loadingverticaldisplacement') {
+		series = array_column(love_numbers, 0);
+	} else if (type === 'loadinggravitationalpotential') {
+		series = array_column(love_numbers, 1);
+	} else if (type === 'loadinghorizontaldisplacement') {
+		series = array_column(love_numbers, 2);
+	} else if (type === 'tidalverticaldisplacement') {
+		series = array_column(love_numbers, 3);
+	} else if (type === 'tidalgravitationalpotential') {
+		series = array_column(love_numbers, 4);
+	} else if (type === 'tidalhorizontaldisplacement') {
+		series = array_column(love_numbers, 5);
+	} else {
+		error('love_numbers error message: unknown type: ' + type);
+	}
+
+	// Choose degree 1 term for CF reference system
+	if (frame === 'CM') {
+		// pass
+	} else if (frame === 'CF') {
+		if (type === 'loadingverticaldisplacement') {
+			series[1] = -0.269;
+		} else if (type === 'loadinggravitationalpotential') {
+			series[1] = -0.021;
+		} else if (type === 'loadinghorizontaldisplacement') {
+			series[1] = -0.134;
+		}
+	} else {
+		error('love_numbers error message: unknown reference frame:' + frame);
+	}
+
+	return series;
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/getlovenumbers.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/getlovenumbers.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/getlovenumbers.m	(revision 27955)
@@ -0,0 +1,10077 @@
+function series=getlovenumbers(varargin)
+%GETLOVENUMBERS: provide love numbers retrieved from: 
+%http://www.srosat.com/iag-jsg/loveNb.php in a chosen reference frame 
+%
+%	Usage: 
+%		series = getlovenumbers('type','loadingverticaldisplacement','referenceframe','CM','maxdeg',1000) 
+% 
+%	- type = one of 'loadingverticaldisplacement', 
+%	'loadinggravitationalpotential', 'loadinghorizontaldisplacement', 
+%	'tidalverticaldisplacement', 'tidalgravitationalpotential', 
+%	'tidalhorizontaldisplacement'
+%	- reference_frame = one of 'CM' (default) and 'CF'.
+%   - maxdeg = default 1000
+%
+%	Example:  
+%		h=getlovenumbers('type','loadingverticaldisplacement','referenceframe','CM','maxdeg',maxdeg);
+%		k=getlovenumbers('type','loadinggravitationalpotential','referenceframe','CM','maxdeg',maxdeg);
+%		l=getlovenumbers('type','loadinghorizontaldisplacement','referenceframe','CM','maxdeg',maxdeg);
+%		th=getlovenumbers('type','tidalverticaldisplacement','referenceframe','CM','maxdeg',maxdeg);
+%		tk=getlovenumbers('type','tidalgravitationalpotential','referenceframe','CM','maxdeg',maxdeg);
+%		tl=getlovenumbers('type','tidalhorizontaldisplacement','referenceframe','CM','maxdeg',maxdeg);
+
+%recover options: 
+options=pairoptions(varargin{:});
+type=getfieldvalue(options,'type');
+frame=getfieldvalue(options,'referenceframe','CM');
+maxdeg=getfieldvalue(options,'maxdeg',1000);
+
+if(maxdeg>10000),
+	error('PREM love numbers computed only for deg < 10,000. Request lower maxdeg' );
+end
+
+if ~( strcmpi(type,'loadingverticaldisplacement') | strcmpi(type,'loadinggravitationalpotential') | strcmpi(type,'loadinghorizontaldisplacement') ...
+		| strcmpi(type,'tidalverticaldisplacement') | strcmpi(type,'tidalgravitationalpotential') | strcmpi(type,'tidalhorizontaldisplacement')), 
+	error('type should be one of ''loadingverticaldisplacement'', ''loadinggravitationalpotential'', ''loadinghorizontaldisplacement'',''tidalverticaldisplacement'', ''tidalgravitationalpotential'', ''tidalhorizontaldisplacement''');
+end
+
+	love_numbers=[...
+		0.00000000	0.00000000	0.00000000	0.00000000	0.00000000	0.00000000
+		-1.28740059	-1.00000000	-0.89858519	0.00000000	0.00000000	0.00000000
+		-1.00025365	-0.30922675	0.02060926	0.62933648	0.30136172	0.08745784
+		-1.06243501	-0.19927948	0.06801636	0.29799672	0.09304210	0.01525258
+		-1.06779588	-0.13649834	0.05667027	0.18024117	0.04181593	0.01055799
+		-1.10365923	-0.10736896	0.04401221	0.13257950	0.02455390	0.00874595
+		-1.16440348	-0.09295485	0.03638747	0.10999739	0.01694141	0.00701045
+		-1.23634156	-0.08469861	0.03202759	0.09727833	0.01279626	0.00556581
+		-1.31140380	-0.07921412	0.02937593	0.08896691	0.01019313	0.00445157
+		-1.38582399	-0.07513541	0.02762338	0.08291950	0.00840274	0.00360620
+		-1.45807465	-0.07187005	0.02638627	0.07819716	0.00709641	0.00295944
+		-1.52763314	-0.06913154	0.02547640	0.07433538	0.00610349	0.00245649
+		-1.59437866	-0.06676258	0.02479080	0.07107472	0.00532548	0.00205857
+		-1.65833071	-0.06466619	0.02426511	0.06825469	0.00470107	0.00173889
+		-1.71954820	-0.06277732	0.02385464	0.06576832	0.00418998	0.00147872
+		-1.77809640	-0.06105001	0.02352654	0.06354080	0.00376467	0.00126474
+		-1.83403970	-0.05945081	0.02325609	0.06151811	0.00340573	0.00108719
+		-1.88744242	-0.05795502	0.02302469	0.05966045	0.00309910	0.00093879
+		-1.93837115	-0.05654418	0.02281843	0.05793806	0.00283441	0.00081397
+		-1.98689666	-0.05520447	0.02262706	0.05632844	0.00260382	0.00070843
+		-2.03309477	-0.05392545	0.02244322	0.05481440	0.00240132	0.00061877
+		-2.07704643	-0.05269926	0.02226173	0.05338269	0.00222224	0.00054227
+		-2.11883714	-0.05151988	0.02207909	0.05202300	0.00206289	0.00047675
+		-2.15855611	-0.05038274	0.02189307	0.05072723	0.00192031	0.00042043
+		-2.19629514	-0.04928430	0.02170238	0.04948894	0.00179212	0.00037187
+		-2.23214747	-0.04822179	0.02150643	0.04830294	0.00167634	0.00032986
+		-2.26620674	-0.04719301	0.02130509	0.04716500	0.00157138	0.00029341
+		-2.29856595	-0.04619619	0.02109858	0.04607163	0.00147587	0.00026171
+		-2.32931659	-0.04522983	0.02088735	0.04501989	0.00138869	0.00023405
+		-2.35854794	-0.04429270	0.02067197	0.04400725	0.00130886	0.00020985
+		-2.38634650	-0.04338368	0.02045310	0.04303154	0.00123559	0.00018864
+		-2.41279547	-0.04250179	0.02023142	0.04209082	0.00116814	0.00017000
+		-2.43797451	-0.04164613	0.02000761	0.04118337	0.00110593	0.00015358
+		-2.46195951	-0.04081583	0.01978231	0.04030761	0.00104841	0.00013908
+		-2.48482241	-0.04001011	0.01955614	0.03946212	0.00099513	0.00012625
+		-2.50663126	-0.03922817	0.01932966	0.03864555	0.00094568	0.00011488
+		-2.52745016	-0.03846928	0.01910337	0.03785666	0.00089971	0.00010477
+		-2.54733938	-0.03773269	0.01887774	0.03709428	0.00085689	0.00009577
+		-2.56635547	-0.03701769	0.01865317	0.03635731	0.00081696	0.00008775
+		-2.58455138	-0.03632358	0.01843000	0.03564469	0.00077965	0.00008057
+		-2.60197665	-0.03564968	0.01820854	0.03495543	0.00074474	0.00007415
+		-2.61867756	-0.03499532	0.01798905	0.03428858	0.00071205	0.00006839
+		-2.63469733	-0.03435985	0.01777176	0.03364323	0.00068137	0.00006322
+		-2.65007629	-0.03374263	0.01755683	0.03301851	0.00065257	0.00005857
+		-2.66485208	-0.03314303	0.01734443	0.03241359	0.00062548	0.00005438
+		-2.67905981	-0.03256047	0.01713468	0.03182769	0.00059998	0.00005059
+		-2.69273222	-0.03199435	0.01692767	0.03126003	0.00057595	0.00004717
+		-2.70589990	-0.03144411	0.01672347	0.03070991	0.00055327	0.00004407
+		-2.71859139	-0.03090919	0.01652215	0.03017662	0.00053186	0.00004127
+		-2.73083334	-0.03038907	0.01632374	0.02965950	0.00051162	0.00003872
+		-2.74265068	-0.02988323	0.01612826	0.02915791	0.00049246	0.00003641
+		-2.75406669	-0.02939118	0.01593573	0.02867125	0.00047432	0.00003431
+		-2.76510320	-0.02891245	0.01574615	0.02819894	0.00045712	0.00003239
+		-2.77578063	-0.02844656	0.01555950	0.02774043	0.00044081	0.00003065
+		-2.78611812	-0.02799309	0.01537578	0.02729517	0.00042531	0.00002905
+		-2.79613364	-0.02755161	0.01519496	0.02686267	0.00041059	0.00002760
+		-2.80584405	-0.02712170	0.01501701	0.02644244	0.00039659	0.00002627
+		-2.81526521	-0.02670298	0.01484191	0.02603402	0.00038326	0.00002505
+		-2.82441204	-0.02629506	0.01466961	0.02563696	0.00037057	0.00002393
+		-2.83329857	-0.02589759	0.01450009	0.02525085	0.00035847	0.00002291
+		-2.84193804	-0.02551021	0.01433329	0.02487527	0.00034693	0.00002197
+		-2.85034293	-0.02513260	0.01416919	0.02450984	0.00033591	0.00002111
+		-2.85852503	-0.02476443	0.01400773	0.02415420	0.00032539	0.00002031
+		-2.86649548	-0.02440538	0.01384888	0.02380798	0.00031534	0.00001958
+		-2.87426481	-0.02405518	0.01369258	0.02347086	0.00030573	0.00001891
+		-2.88184299	-0.02371352	0.01353880	0.02314250	0.00029653	0.00001829
+		-2.88923945	-0.02338014	0.01338749	0.02282261	0.00028772	0.00001772
+		-2.89646316	-0.02305478	0.01323861	0.02251087	0.00027928	0.00001720
+		-2.90352261	-0.02273718	0.01309211	0.02220702	0.00027120	0.00001671
+		-2.91042585	-0.02242710	0.01294795	0.02191078	0.00026344	0.00001626
+		-2.91718054	-0.02212431	0.01280609	0.02162189	0.00025600	0.00001585
+		-2.92379397	-0.02182859	0.01266648	0.02134010	0.00024886	0.00001546
+		-2.93027306	-0.02153971	0.01252908	0.02106517	0.00024200	0.00001511
+		-2.93662439	-0.02125748	0.01239386	0.02079689	0.00023540	0.00001478
+		-2.94285425	-0.02098169	0.01226077	0.02053502	0.00022907	0.00001447
+		-2.94896860	-0.02071215	0.01212977	0.02027936	0.00022297	0.00001419
+		-2.95497314	-0.02044868	0.01200082	0.02002971	0.00021710	0.00001392
+		-2.96087331	-0.02019110	0.01187388	0.01978587	0.00021146	0.00001368
+		-2.96667427	-0.01993924	0.01174893	0.01954767	0.00020602	0.00001345
+		-2.97238097	-0.01969293	0.01162591	0.01931492	0.00020078	0.00001324
+		-2.97799813	-0.01945201	0.01150481	0.01908746	0.00019573	0.00001305
+		-2.98353025	-0.01921634	0.01138557	0.01886511	0.00019086	0.00001286
+		-2.98898162	-0.01898576	0.01126817	0.01864773	0.00018616	0.00001269
+		-2.99435636	-0.01876014	0.01115257	0.01843516	0.00018162	0.00001253
+		-2.99965838	-0.01853932	0.01103875	0.01822725	0.00017725	0.00001238
+		-3.00489143	-0.01832319	0.01092666	0.01802387	0.00017302	0.00001224
+		-3.01005909	-0.01811161	0.01081628	0.01782489	0.00016893	0.00001211
+		-3.01516479	-0.01790446	0.01070757	0.01763017	0.00016499	0.00001199
+		-3.02021180	-0.01770162	0.01060052	0.01743958	0.00016117	0.00001187
+		-3.02520323	-0.01750298	0.01049508	0.01725302	0.00015748	0.00001177
+		-3.03014209	-0.01730842	0.01039123	0.01707036	0.00015391	0.00001166
+		-3.03503122	-0.01711783	0.01028894	0.01689149	0.00015045	0.00001157
+		-3.03987336	-0.01693111	0.01018819	0.01671631	0.00014711	0.00001148
+		-3.04467112	-0.01674816	0.01008894	0.01654470	0.00014387	0.00001139
+		-3.04942699	-0.01656889	0.00999117	0.01637658	0.00014073	0.00001131
+		-3.05414335	-0.01639319	0.00989485	0.01621185	0.00013769	0.00001124
+		-3.05882250	-0.01622097	0.00979997	0.01605041	0.00013474	0.00001116
+		-3.06346660	-0.01605215	0.00970649	0.01589217	0.00013189	0.00001109
+		-3.06807773	-0.01588664	0.00961439	0.01573705	0.00012912	0.00001103
+		-3.07265789	-0.01572436	0.00952364	0.01558496	0.00012643	0.00001097
+		-3.07720897	-0.01556522	0.00943423	0.01543582	0.00012382	0.00001091
+		-3.08173279	-0.01540916	0.00934613	0.01528956	0.00012129	0.00001085
+		-3.08623109	-0.01525608	0.00925931	0.01514610	0.00011883	0.00001080
+		-3.09070551	-0.01510592	0.00917376	0.01500536	0.00011645	0.00001074
+		-3.09515765	-0.01495861	0.00908946	0.01486728	0.00011413	0.00001069
+		-3.09958899	-0.01481408	0.00900637	0.01473179	0.00011188	0.00001064
+		-3.10400100	-0.01467225	0.00892449	0.01459882	0.00010969	0.00001060
+		-3.10839504	-0.01453308	0.00884379	0.01446831	0.00010756	0.00001055
+		-3.11277241	-0.01439648	0.00876425	0.01434019	0.00010549	0.00001051
+		-3.11713438	-0.01426240	0.00868586	0.01421441	0.00010348	0.00001047
+		-3.12148213	-0.01413079	0.00860858	0.01409091	0.00010152	0.00001042
+		-3.12581680	-0.01400157	0.00853241	0.01396963	0.00009962	0.00001038
+		-3.13013947	-0.01387471	0.00845733	0.01385052	0.00009776	0.00001034
+		-3.13445117	-0.01375013	0.00838331	0.01373352	0.00009596	0.00001031
+		-3.13875289	-0.01362779	0.00831034	0.01361859	0.00009420	0.00001027
+		-3.14304556	-0.01350764	0.00823841	0.01350567	0.00009249	0.00001023
+		-3.14733008	-0.01338963	0.00816748	0.01339472	0.00009083	0.00001020
+		-3.15160728	-0.01327370	0.00809756	0.01328569	0.00008920	0.00001016
+		-3.15587797	-0.01315981	0.00802862	0.01317853	0.00008762	0.00001012
+		-3.16014293	-0.01304792	0.00796064	0.01307320	0.00008608	0.00001009
+		-3.16440288	-0.01293797	0.00789361	0.01296967	0.00008458	0.00001006
+		-3.16865852	-0.01282993	0.00782751	0.01286788	0.00008311	0.00001002
+		-3.17291049	-0.01272375	0.00776233	0.01276779	0.00008169	0.00000999
+		-3.17715942	-0.01261940	0.00769805	0.01266938	0.00008029	0.00000996
+		-3.18140591	-0.01251682	0.00763466	0.01257259	0.00007893	0.00000992
+		-3.18565052	-0.01241598	0.00757215	0.01247740	0.00007761	0.00000989
+		-3.18989378	-0.01231685	0.00751049	0.01238376	0.00007631	0.00000986
+		-3.19413619	-0.01221938	0.00744968	0.01229165	0.00007505	0.00000983
+		-3.19837823	-0.01212354	0.00738970	0.01220103	0.00007381	0.00000979
+		-3.20262035	-0.01202930	0.00733053	0.01211186	0.00007261	0.00000976
+		-3.20686298	-0.01193661	0.00727217	0.01202412	0.00007143	0.00000973
+		-3.21110653	-0.01184546	0.00721461	0.01193777	0.00007028	0.00000970
+		-3.21535137	-0.01175579	0.00715782	0.01185279	0.00006916	0.00000967
+		-3.21959786	-0.01166759	0.00710179	0.01176914	0.00006806	0.00000964
+		-3.22384634	-0.01158082	0.00704652	0.01168680	0.00006699	0.00000961
+		-3.22809714	-0.01149545	0.00699199	0.01160573	0.00006594	0.00000957
+		-3.23235055	-0.01141146	0.00693819	0.01152591	0.00006492	0.00000954
+		-3.23660685	-0.01132880	0.00688511	0.01144732	0.00006392	0.00000951
+		-3.24086631	-0.01124746	0.00683273	0.01136993	0.00006294	0.00000948
+		-3.24512918	-0.01116741	0.00678105	0.01129371	0.00006198	0.00000945
+		-3.24939569	-0.01108862	0.00673005	0.01121864	0.00006105	0.00000942
+		-3.25366606	-0.01101107	0.00667973	0.01114470	0.00006013	0.00000939
+		-3.25794050	-0.01093473	0.00663007	0.01107186	0.00005923	0.00000936
+		-3.26221918	-0.01085957	0.00658106	0.01100010	0.00005835	0.00000932
+		-3.26650230	-0.01078557	0.00653269	0.01092939	0.00005750	0.00000929
+		-3.27079000	-0.01071272	0.00648495	0.01085973	0.00005665	0.00000926
+		-3.27508246	-0.01064097	0.00643784	0.01079108	0.00005583	0.00000923
+		-3.27937980	-0.01057032	0.00639134	0.01072343	0.00005503	0.00000920
+		-3.28368216	-0.01050074	0.00634544	0.01065676	0.00005424	0.00000917
+		-3.28798965	-0.01043222	0.00630013	0.01059104	0.00005346	0.00000914
+		-3.29230239	-0.01036472	0.00625541	0.01052626	0.00005271	0.00000910
+		-3.29662047	-0.01029823	0.00621126	0.01046241	0.00005196	0.00000907
+		-3.30094399	-0.01023273	0.00616768	0.01039945	0.00005124	0.00000904
+		-3.30527303	-0.01016819	0.00612465	0.01033738	0.00005053	0.00000901
+		-3.30960766	-0.01010461	0.00608218	0.01027618	0.00004983	0.00000898
+		-3.31394795	-0.01004197	0.00604024	0.01021583	0.00004914	0.00000895
+		-3.31829395	-0.00998024	0.00599883	0.01015631	0.00004847	0.00000891
+		-3.32264573	-0.00991940	0.00595795	0.01009762	0.00004781	0.00000888
+		-3.32700331	-0.00985945	0.00591759	0.01003973	0.00004717	0.00000885
+		-3.33136675	-0.00980035	0.00587773	0.00998262	0.00004654	0.00000882
+		-3.33573607	-0.00974211	0.00583838	0.00992630	0.00004592	0.00000879
+		-3.34011130	-0.00968470	0.00579951	0.00987073	0.00004531	0.00000875
+		-3.34449246	-0.00962810	0.00576113	0.00981591	0.00004471	0.00000872
+		-3.34887956	-0.00957230	0.00572323	0.00976182	0.00004413	0.00000869
+		-3.35327261	-0.00951729	0.00568581	0.00970845	0.00004355	0.00000866
+		-3.35767163	-0.00946304	0.00564884	0.00965578	0.00004299	0.00000863
+		-3.36207660	-0.00940956	0.00561233	0.00960381	0.00004244	0.00000859
+		-3.36648753	-0.00935681	0.00557627	0.00955252	0.00004189	0.00000856
+		-3.37090440	-0.00930480	0.00554066	0.00950190	0.00004136	0.00000853
+		-3.37532721	-0.00925350	0.00550548	0.00945194	0.00004084	0.00000850
+		-3.37975593	-0.00920290	0.00547073	0.00940262	0.00004032	0.00000847
+		-3.38419056	-0.00915300	0.00543641	0.00935393	0.00003982	0.00000843
+		-3.38863105	-0.00910377	0.00540251	0.00930586	0.00003932	0.00000840
+		-3.39307740	-0.00905520	0.00536901	0.00925841	0.00003884	0.00000837
+		-3.39752956	-0.00900729	0.00533593	0.00921156	0.00003836	0.00000834
+		-3.40198751	-0.00896002	0.00530324	0.00916530	0.00003789	0.00000830
+		-3.40645121	-0.00891338	0.00527095	0.00911962	0.00003743	0.00000827
+		-3.41092063	-0.00886736	0.00523904	0.00907451	0.00003697	0.00000824
+		-3.41539571	-0.00882195	0.00520752	0.00902996	0.00003653	0.00000821
+		-3.41987643	-0.00877713	0.00517637	0.00898596	0.00003609	0.00000817
+		-3.42436272	-0.00873290	0.00514560	0.00894250	0.00003566	0.00000814
+		-3.42885456	-0.00868925	0.00511520	0.00889958	0.00003524	0.00000811
+		-3.43335188	-0.00864617	0.00508515	0.00885718	0.00003482	0.00000808
+		-3.43785464	-0.00860364	0.00505546	0.00881530	0.00003441	0.00000804
+		-3.44236278	-0.00856166	0.00502613	0.00877392	0.00003401	0.00000801
+		-3.44687625	-0.00852021	0.00499714	0.00873304	0.00003361	0.00000798
+		-3.45139500	-0.00847930	0.00496849	0.00869264	0.00003323	0.00000795
+		-3.45591895	-0.00843890	0.00494017	0.00865273	0.00003284	0.00000791
+		-3.46044807	-0.00839902	0.00491219	0.00861330	0.00003247	0.00000788
+		-3.46498227	-0.00835964	0.00488454	0.00857433	0.00003210	0.00000785
+		-3.46952151	-0.00832075	0.00485721	0.00853582	0.00003173	0.00000782
+		-3.47406572	-0.00828234	0.00483019	0.00849776	0.00003138	0.00000778
+		-3.47861484	-0.00824442	0.00480349	0.00846014	0.00003102	0.00000775
+		-3.48316880	-0.00820696	0.00477710	0.00842296	0.00003068	0.00000772
+		-3.48772753	-0.00816996	0.00475102	0.00838622	0.00003034	0.00000769
+		-3.49229097	-0.00813342	0.00472523	0.00834989	0.00003000	0.00000766
+		-3.49685904	-0.00809733	0.00469975	0.00831398	0.00002967	0.00000762
+		-3.50143169	-0.00806167	0.00467455	0.00827848	0.00002935	0.00000759
+		-3.50600884	-0.00802644	0.00464964	0.00824338	0.00002903	0.00000756
+		-3.51059042	-0.00799164	0.00462502	0.00820868	0.00002871	0.00000753
+		-3.51517637	-0.00795726	0.00460068	0.00817437	0.00002840	0.00000750
+		-3.51976660	-0.00792329	0.00457662	0.00814045	0.00002810	0.00000746
+		-3.52436105	-0.00788972	0.00455283	0.00810691	0.00002779	0.00000743
+		-3.52895964	-0.00785655	0.00452930	0.00807373	0.00002750	0.00000740
+		-3.53356231	-0.00782377	0.00450605	0.00804093	0.00002721	0.00000737
+		-3.53816898	-0.00779138	0.00448306	0.00800849	0.00002692	0.00000734
+		-3.54277957	-0.00775937	0.00446032	0.00797640	0.00002664	0.00000730
+		-3.54739402	-0.00772773	0.00443784	0.00794466	0.00002636	0.00000727
+		-3.55201224	-0.00769645	0.00441562	0.00791327	0.00002608	0.00000724
+		-3.55663417	-0.00766554	0.00439364	0.00788222	0.00002581	0.00000721
+		-3.56125973	-0.00763498	0.00437190	0.00785151	0.00002555	0.00000718
+		-3.56588885	-0.00760478	0.00435041	0.00782113	0.00002528	0.00000715
+		-3.57052145	-0.00757491	0.00432916	0.00779107	0.00002502	0.00000712
+		-3.57515745	-0.00754539	0.00430814	0.00776133	0.00002477	0.00000708
+		-3.57979678	-0.00751620	0.00428736	0.00773191	0.00002452	0.00000705
+		-3.58443937	-0.00748734	0.00426681	0.00770279	0.00002427	0.00000702
+		-3.58908514	-0.00745880	0.00424648	0.00767399	0.00002403	0.00000699
+		-3.59373401	-0.00743059	0.00422637	0.00764549	0.00002379	0.00000696
+		-3.59838592	-0.00740268	0.00420649	0.00761728	0.00002355	0.00000693
+		-3.60304078	-0.00737509	0.00418682	0.00758937	0.00002331	0.00000690
+		-3.60769852	-0.00734780	0.00416737	0.00756175	0.00002308	0.00000687
+		-3.61235907	-0.00732081	0.00414813	0.00753441	0.00002286	0.00000684
+		-3.61702235	-0.00729411	0.00412910	0.00750735	0.00002263	0.00000681
+		-3.62168828	-0.00726771	0.00411028	0.00748058	0.00002241	0.00000678
+		-3.62635680	-0.00724159	0.00409166	0.00745407	0.00002219	0.00000674
+		-3.63102782	-0.00721575	0.00407325	0.00742783	0.00002198	0.00000671
+		-3.63570128	-0.00719020	0.00405503	0.00740186	0.00002176	0.00000668
+		-3.64037709	-0.00716491	0.00403700	0.00737615	0.00002156	0.00000665
+		-3.64505519	-0.00713990	0.00401918	0.00735070	0.00002135	0.00000662
+		-3.64973550	-0.00711515	0.00400154	0.00732550	0.00002115	0.00000659
+		-3.65441795	-0.00709066	0.00398409	0.00730055	0.00002094	0.00000656
+		-3.65910247	-0.00706643	0.00396683	0.00727585	0.00002075	0.00000653
+		-3.66378898	-0.00704246	0.00394975	0.00725140	0.00002055	0.00000650
+		-3.66847740	-0.00701873	0.00393286	0.00722718	0.00002036	0.00000647
+		-3.67316767	-0.00699526	0.00391614	0.00720320	0.00002017	0.00000644
+		-3.67785972	-0.00697202	0.00389960	0.00717946	0.00001998	0.00000641
+		-3.68255347	-0.00694903	0.00388324	0.00715594	0.00001979	0.00000638
+		-3.68724885	-0.00692627	0.00386705	0.00713266	0.00001961	0.00000636
+		-3.69194579	-0.00690374	0.00385103	0.00710959	0.00001943	0.00000633
+		-3.69664421	-0.00688145	0.00383518	0.00708675	0.00001925	0.00000630
+		-3.70134406	-0.00685938	0.00381949	0.00706413	0.00001907	0.00000627
+		-3.70604525	-0.00683753	0.00380397	0.00704173	0.00001890	0.00000624
+		-3.71074772	-0.00681590	0.00378861	0.00701953	0.00001873	0.00000621
+		-3.71545140	-0.00679449	0.00377342	0.00699755	0.00001856	0.00000618
+		-3.72015622	-0.00677330	0.00375838	0.00697577	0.00001839	0.00000615
+		-3.72486211	-0.00675231	0.00374349	0.00695420	0.00001823	0.00000612
+		-3.72956899	-0.00673153	0.00372877	0.00693283	0.00001806	0.00000609
+		-3.73427682	-0.00671096	0.00371419	0.00691165	0.00001790	0.00000607
+		-3.73898550	-0.00669059	0.00369976	0.00689068	0.00001774	0.00000604
+		-3.74369498	-0.00667042	0.00368549	0.00686989	0.00001759	0.00000601
+		-3.74840519	-0.00665044	0.00367136	0.00684930	0.00001743	0.00000598
+		-3.75311607	-0.00663066	0.00365738	0.00682890	0.00001728	0.00000595
+		-3.75782754	-0.00661107	0.00364354	0.00680868	0.00001713	0.00000592
+		-3.76253955	-0.00659167	0.00362984	0.00678865	0.00001698	0.00000590
+		-3.76725202	-0.00657245	0.00361628	0.00676880	0.00001683	0.00000587
+		-3.77196489	-0.00655341	0.00360286	0.00674913	0.00001668	0.00000584
+		-3.77667809	-0.00653456	0.00358958	0.00672963	0.00001654	0.00000581
+		-3.78139156	-0.00651589	0.00357643	0.00671031	0.00001640	0.00000579
+		-3.78610525	-0.00649739	0.00356342	0.00669116	0.00001625	0.00000576
+		-3.79081907	-0.00647906	0.00355053	0.00667218	0.00001612	0.00000573
+		-3.79553298	-0.00646091	0.00353778	0.00665337	0.00001598	0.00000570
+		-3.80024690	-0.00644292	0.00352516	0.00663472	0.00001584	0.00000568
+		-3.80496078	-0.00642510	0.00351266	0.00661624	0.00001571	0.00000565
+		-3.80967455	-0.00640745	0.00350029	0.00659792	0.00001557	0.00000562
+		-3.81438815	-0.00638996	0.00348804	0.00657976	0.00001544	0.00000560
+		-3.81910152	-0.00637262	0.00347592	0.00656176	0.00001531	0.00000557
+		-3.82381460	-0.00635545	0.00346392	0.00654391	0.00001519	0.00000554
+		-3.82852732	-0.00633843	0.00345204	0.00652622	0.00001506	0.00000552
+		-3.83323964	-0.00632157	0.00344027	0.00650867	0.00001493	0.00000549
+		-3.83795149	-0.00630485	0.00342863	0.00649128	0.00001481	0.00000546
+		-3.84266280	-0.00628829	0.00341709	0.00647404	0.00001469	0.00000544
+		-3.84737353	-0.00627187	0.00340568	0.00645694	0.00001457	0.00000541
+		-3.85208361	-0.00625560	0.00339437	0.00643998	0.00001445	0.00000538
+		-3.85679299	-0.00623948	0.00338318	0.00642317	0.00001433	0.00000536
+		-3.86150160	-0.00622349	0.00337210	0.00640650	0.00001421	0.00000533
+		-3.86620939	-0.00620765	0.00336112	0.00638997	0.00001410	0.00000531
+		-3.87091631	-0.00619194	0.00335026	0.00637358	0.00001398	0.00000528
+		-3.87562229	-0.00617637	0.00333950	0.00635732	0.00001387	0.00000526
+		-3.88032729	-0.00616094	0.00332885	0.00634120	0.00001376	0.00000523
+		-3.88503124	-0.00614564	0.00331830	0.00632520	0.00001364	0.00000521
+		-3.88973410	-0.00613047	0.00330785	0.00630934	0.00001354	0.00000518
+		-3.89443580	-0.00611543	0.00329750	0.00629361	0.00001343	0.00000515
+		-3.89913629	-0.00610051	0.00328726	0.00627801	0.00001332	0.00000513
+		-3.90383552	-0.00608573	0.00327711	0.00626253	0.00001321	0.00000510
+		-3.90853343	-0.00607107	0.00326707	0.00624718	0.00001311	0.00000508
+		-3.91322998	-0.00605653	0.00325712	0.00623195	0.00001301	0.00000506
+		-3.91792511	-0.00604212	0.00324726	0.00621684	0.00001290	0.00000503
+		-3.92261876	-0.00602782	0.00323750	0.00620185	0.00001280	0.00000501
+		-3.92731089	-0.00601364	0.00322784	0.00618698	0.00001270	0.00000498
+		-3.93200144	-0.00599958	0.00321826	0.00617223	0.00001260	0.00000496
+		-3.93669036	-0.00598564	0.00320878	0.00615760	0.00001250	0.00000493
+		-3.94137761	-0.00597181	0.00319939	0.00614308	0.00001241	0.00000491
+		-3.94606313	-0.00595809	0.00319009	0.00612867	0.00001231	0.00000488
+		-3.95074687	-0.00594449	0.00318088	0.00611438	0.00001221	0.00000486
+		-3.95542878	-0.00593099	0.00317175	0.00610019	0.00001212	0.00000484
+		-3.96010882	-0.00591761	0.00316271	0.00608612	0.00001203	0.00000481
+		-3.96478693	-0.00590433	0.00315376	0.00607215	0.00001193	0.00000479
+		-3.96946306	-0.00589116	0.00314489	0.00605829	0.00001184	0.00000477
+		-3.97413718	-0.00587809	0.00313611	0.00604454	0.00001175	0.00000474
+		-3.97880922	-0.00586512	0.00312740	0.00603089	0.00001166	0.00000472
+		-3.98347915	-0.00585226	0.00311878	0.00601735	0.00001157	0.00000470
+		-3.98814692	-0.00583950	0.00311024	0.00600390	0.00001149	0.00000467
+		-3.99281247	-0.00582684	0.00310178	0.00599056	0.00001140	0.00000465
+		-3.99747577	-0.00581428	0.00309340	0.00597732	0.00001131	0.00000463
+		-4.00213677	-0.00580181	0.00308510	0.00596417	0.00001123	0.00000460
+		-4.00679542	-0.00578944	0.00307688	0.00595113	0.00001114	0.00000458
+		-4.01145168	-0.00577717	0.00306873	0.00593818	0.00001106	0.00000456
+		-4.01610551	-0.00576499	0.00306065	0.00592532	0.00001098	0.00000454
+		-4.02075685	-0.00575290	0.00305266	0.00591256	0.00001090	0.00000451
+		-4.02540567	-0.00574091	0.00304473	0.00589990	0.00001082	0.00000449
+		-4.03005191	-0.00572900	0.00303688	0.00588732	0.00001073	0.00000447
+		-4.03469555	-0.00571719	0.00302910	0.00587484	0.00001066	0.00000445
+		-4.03933654	-0.00570546	0.00302139	0.00586244	0.00001058	0.00000443
+		-4.04397482	-0.00569382	0.00301375	0.00585014	0.00001050	0.00000440
+		-4.04861037	-0.00568227	0.00300619	0.00583792	0.00001042	0.00000438
+		-4.05324314	-0.00567080	0.00299869	0.00582579	0.00001035	0.00000436
+		-4.05787308	-0.00565942	0.00299126	0.00581375	0.00001027	0.00000434
+		-4.06250017	-0.00564812	0.00298390	0.00580179	0.00001019	0.00000432
+		-4.06712435	-0.00563690	0.00297660	0.00578992	0.00001012	0.00000430
+		-4.07174558	-0.00562577	0.00296937	0.00577813	0.00001005	0.00000427
+		-4.07636383	-0.00561471	0.00296221	0.00576642	0.00000997	0.00000425
+		-4.08097906	-0.00560374	0.00295511	0.00575480	0.00000990	0.00000423
+		-4.08559122	-0.00559284	0.00294807	0.00574325	0.00000983	0.00000421
+		-4.09020028	-0.00558202	0.00294110	0.00573179	0.00000976	0.00000419
+		-4.09480620	-0.00557128	0.00293419	0.00572040	0.00000969	0.00000417
+		-4.09940894	-0.00556061	0.00292734	0.00570909	0.00000962	0.00000415
+		-4.10400846	-0.00555002	0.00292056	0.00569786	0.00000955	0.00000413
+		-4.10860473	-0.00553950	0.00291383	0.00568670	0.00000948	0.00000411
+		-4.11319770	-0.00552906	0.00290717	0.00567562	0.00000942	0.00000409
+		-4.11778734	-0.00551869	0.00290056	0.00566462	0.00000935	0.00000407
+		-4.12237362	-0.00550839	0.00289401	0.00565369	0.00000928	0.00000405
+		-4.12695649	-0.00549816	0.00288752	0.00564283	0.00000922	0.00000403
+		-4.13153592	-0.00548801	0.00288109	0.00563204	0.00000915	0.00000401
+		-4.13611188	-0.00547792	0.00287471	0.00562133	0.00000909	0.00000399
+		-4.14068433	-0.00546790	0.00286839	0.00561069	0.00000902	0.00000397
+		-4.14525323	-0.00545795	0.00286213	0.00560011	0.00000896	0.00000395
+		-4.14981854	-0.00544806	0.00285592	0.00558961	0.00000890	0.00000393
+		-4.15438025	-0.00543824	0.00284976	0.00557918	0.00000883	0.00000391
+		-4.15893830	-0.00542849	0.00284366	0.00556881	0.00000877	0.00000389
+		-4.16349267	-0.00541880	0.00283761	0.00555851	0.00000871	0.00000387
+		-4.16804332	-0.00540918	0.00283162	0.00554827	0.00000865	0.00000385
+		-4.17259021	-0.00539962	0.00282567	0.00553811	0.00000859	0.00000383
+		-4.17713333	-0.00539012	0.00281978	0.00552800	0.00000853	0.00000381
+		-4.18167262	-0.00538069	0.00281394	0.00551796	0.00000847	0.00000379
+		-4.18620807	-0.00537131	0.00280815	0.00550799	0.00000841	0.00000377
+		-4.19073963	-0.00536200	0.00280241	0.00549808	0.00000836	0.00000375
+		-4.19526728	-0.00535274	0.00279671	0.00548823	0.00000830	0.00000373
+		-4.19979098	-0.00534355	0.00279107	0.00547844	0.00000824	0.00000372
+		-4.20431070	-0.00533441	0.00278548	0.00546871	0.00000818	0.00000370
+		-4.20882641	-0.00532534	0.00277993	0.00545905	0.00000813	0.00000368
+		-4.21333809	-0.00531632	0.00277443	0.00544944	0.00000807	0.00000366
+		-4.21784569	-0.00530735	0.00276897	0.00543989	0.00000802	0.00000364
+		-4.22234919	-0.00529845	0.00276357	0.00543040	0.00000796	0.00000362
+		-4.22684856	-0.00528959	0.00275820	0.00542097	0.00000791	0.00000361
+		-4.23134377	-0.00528080	0.00275289	0.00541160	0.00000786	0.00000359
+		-4.23583479	-0.00527206	0.00274762	0.00540228	0.00000780	0.00000357
+		-4.24032159	-0.00526337	0.00274239	0.00539302	0.00000775	0.00000355
+		-4.24480413	-0.00525473	0.00273720	0.00538382	0.00000770	0.00000353
+		-4.24928241	-0.00524615	0.00273206	0.00537467	0.00000765	0.00000352
+		-4.25375637	-0.00523762	0.00272697	0.00536557	0.00000759	0.00000350
+		-4.25822600	-0.00522914	0.00272191	0.00535653	0.00000754	0.00000348
+		-4.26269127	-0.00522071	0.00271690	0.00534754	0.00000749	0.00000346
+		-4.26715214	-0.00521233	0.00271193	0.00533861	0.00000744	0.00000345
+		-4.27160860	-0.00520401	0.00270700	0.00532973	0.00000739	0.00000343
+		-4.27606061	-0.00519573	0.00270211	0.00532090	0.00000734	0.00000341
+		-4.28050816	-0.00518750	0.00269726	0.00531212	0.00000729	0.00000339
+		-4.28495120	-0.00517932	0.00269245	0.00530339	0.00000725	0.00000338
+		-4.28938971	-0.00517119	0.00268767	0.00529471	0.00000720	0.00000336
+		-4.29382368	-0.00516310	0.00268294	0.00528608	0.00000715	0.00000334
+		-4.29825306	-0.00515506	0.00267825	0.00527750	0.00000710	0.00000333
+		-4.30267785	-0.00514707	0.00267359	0.00526897	0.00000706	0.00000331
+		-4.30709800	-0.00513912	0.00266898	0.00526049	0.00000701	0.00000329
+		-4.31151350	-0.00513122	0.00266440	0.00525206	0.00000696	0.00000328
+		-4.31592431	-0.00512337	0.00265985	0.00524367	0.00000692	0.00000326
+		-4.32033043	-0.00511555	0.00265535	0.00523533	0.00000687	0.00000324
+		-4.32473181	-0.00510779	0.00265088	0.00522704	0.00000683	0.00000323
+		-4.32912844	-0.00510006	0.00264644	0.00521879	0.00000678	0.00000321
+		-4.33352030	-0.00509238	0.00264204	0.00521059	0.00000674	0.00000319
+		-4.33790735	-0.00508474	0.00263768	0.00520243	0.00000669	0.00000318
+		-4.34228957	-0.00507715	0.00263335	0.00519432	0.00000665	0.00000316
+		-4.34666695	-0.00506959	0.00262906	0.00518625	0.00000661	0.00000315
+		-4.35103946	-0.00506208	0.00262479	0.00517822	0.00000656	0.00000313
+		-4.35540706	-0.00505461	0.00262057	0.00517024	0.00000652	0.00000311
+		-4.35976976	-0.00504718	0.00261637	0.00516230	0.00000648	0.00000310
+		-4.36412751	-0.00503978	0.00261221	0.00515441	0.00000644	0.00000308
+		-4.36848029	-0.00503243	0.00260808	0.00514656	0.00000639	0.00000307
+		-4.37282810	-0.00502512	0.00260399	0.00513874	0.00000635	0.00000305
+		-4.37717089	-0.00501785	0.00259992	0.00513097	0.00000631	0.00000304
+		-4.38150866	-0.00501061	0.00259589	0.00512324	0.00000627	0.00000302
+		-4.38584137	-0.00500341	0.00259189	0.00511555	0.00000623	0.00000301
+		-4.39016901	-0.00499626	0.00258792	0.00510791	0.00000619	0.00000299
+		-4.39449156	-0.00498913	0.00258397	0.00510030	0.00000615	0.00000298
+		-4.39880900	-0.00498205	0.00258006	0.00509273	0.00000611	0.00000296
+		-4.40312130	-0.00497500	0.00257618	0.00508520	0.00000607	0.00000295
+		-4.40742845	-0.00496799	0.00257233	0.00507770	0.00000603	0.00000293
+		-4.41173042	-0.00496101	0.00256851	0.00507025	0.00000599	0.00000292
+		-4.41602719	-0.00495407	0.00256472	0.00506283	0.00000596	0.00000290
+		-4.42031875	-0.00494717	0.00256096	0.00505545	0.00000592	0.00000289
+		-4.42460508	-0.00494030	0.00255722	0.00504811	0.00000588	0.00000287
+		-4.42888615	-0.00493346	0.00255351	0.00504081	0.00000584	0.00000286
+		-4.43316194	-0.00492666	0.00254984	0.00503354	0.00000581	0.00000284
+		-4.43743244	-0.00491989	0.00254618	0.00502631	0.00000577	0.00000283
+		-4.44169763	-0.00491316	0.00254256	0.00501911	0.00000573	0.00000281
+		-4.44595749	-0.00490646	0.00253896	0.00501195	0.00000570	0.00000280
+		-4.45021200	-0.00489979	0.00253539	0.00500482	0.00000566	0.00000279
+		-4.45446115	-0.00489316	0.00253185	0.00499773	0.00000562	0.00000277
+		-4.45870490	-0.00488655	0.00252833	0.00499068	0.00000559	0.00000276
+		-4.46294326	-0.00487998	0.00252484	0.00498365	0.00000555	0.00000274
+		-4.46717619	-0.00487344	0.00252137	0.00497667	0.00000552	0.00000273
+		-4.47140368	-0.00486693	0.00251793	0.00496971	0.00000548	0.00000272
+		-4.47562571	-0.00486046	0.00251451	0.00496279	0.00000545	0.00000270
+		-4.47984227	-0.00485401	0.00251112	0.00495590	0.00000541	0.00000269
+		-4.48405334	-0.00484759	0.00250775	0.00494904	0.00000538	0.00000268
+		-4.48825891	-0.00484121	0.00250441	0.00494222	0.00000535	0.00000266
+		-4.49245894	-0.00483485	0.00250109	0.00493543	0.00000531	0.00000265
+		-4.49665344	-0.00482852	0.00249780	0.00492867	0.00000528	0.00000264
+		-4.50084238	-0.00482223	0.00249453	0.00492194	0.00000525	0.00000262
+		-4.50502575	-0.00481596	0.00249128	0.00491524	0.00000521	0.00000261
+		-4.50920352	-0.00480972	0.00248805	0.00490857	0.00000518	0.00000260
+		-4.51337569	-0.00480350	0.00248485	0.00490194	0.00000515	0.00000258
+		-4.51754224	-0.00479732	0.00248167	0.00489533	0.00000512	0.00000257
+		-4.52170315	-0.00479117	0.00247851	0.00488876	0.00000508	0.00000256
+		-4.52585842	-0.00478504	0.00247538	0.00488221	0.00000505	0.00000254
+		-4.53000801	-0.00477894	0.00247227	0.00487569	0.00000502	0.00000253
+		-4.53415192	-0.00477286	0.00246917	0.00486921	0.00000499	0.00000252
+		-4.53829014	-0.00476682	0.00246610	0.00486275	0.00000496	0.00000251
+		-4.54242264	-0.00476080	0.00246306	0.00485632	0.00000493	0.00000249
+		-4.54654942	-0.00475480	0.00246003	0.00484992	0.00000490	0.00000248
+		-4.55067046	-0.00474884	0.00245702	0.00484354	0.00000487	0.00000247
+		-4.55478574	-0.00474290	0.00245404	0.00483720	0.00000484	0.00000245
+		-4.55889526	-0.00473698	0.00245107	0.00483088	0.00000481	0.00000244
+		-4.56299899	-0.00473109	0.00244812	0.00482459	0.00000478	0.00000243
+		-4.56709693	-0.00472522	0.00244520	0.00481833	0.00000475	0.00000242
+		-4.57118906	-0.00471938	0.00244229	0.00481209	0.00000472	0.00000241
+		-4.57527536	-0.00471357	0.00243940	0.00480588	0.00000469	0.00000239
+		-4.57935583	-0.00470778	0.00243654	0.00479970	0.00000466	0.00000238
+		-4.58343045	-0.00470201	0.00243369	0.00479354	0.00000463	0.00000237
+		-4.58749921	-0.00469627	0.00243086	0.00478741	0.00000460	0.00000236
+		-4.59156210	-0.00469055	0.00242805	0.00478131	0.00000457	0.00000235
+		-4.59561910	-0.00468485	0.00242526	0.00477523	0.00000454	0.00000233
+		-4.59967020	-0.00467918	0.00242248	0.00476918	0.00000452	0.00000232
+		-4.60371538	-0.00467353	0.00241973	0.00476315	0.00000449	0.00000231
+		-4.60775465	-0.00466791	0.00241699	0.00475714	0.00000446	0.00000230
+		-4.61178797	-0.00466230	0.00241427	0.00475116	0.00000443	0.00000229
+		-4.61581536	-0.00465672	0.00241157	0.00474521	0.00000441	0.00000228
+		-4.61983678	-0.00465116	0.00240889	0.00473928	0.00000438	0.00000226
+		-4.62385223	-0.00464563	0.00240622	0.00473337	0.00000435	0.00000225
+		-4.62786170	-0.00464011	0.00240357	0.00472749	0.00000432	0.00000224
+		-4.63186517	-0.00463462	0.00240093	0.00472163	0.00000430	0.00000223
+		-4.63586264	-0.00462915	0.00239832	0.00471580	0.00000427	0.00000222
+		-4.63985410	-0.00462370	0.00239572	0.00470998	0.00000425	0.00000221
+		-4.64383953	-0.00461827	0.00239313	0.00470419	0.00000422	0.00000220
+		-4.64781892	-0.00461286	0.00239057	0.00469843	0.00000419	0.00000219
+		-4.65179227	-0.00460748	0.00238802	0.00469268	0.00000417	0.00000217
+		-4.65575956	-0.00460211	0.00238548	0.00468696	0.00000414	0.00000216
+		-4.65972078	-0.00459677	0.00238296	0.00468126	0.00000412	0.00000215
+		-4.66367592	-0.00459144	0.00238046	0.00467559	0.00000409	0.00000214
+		-4.66762497	-0.00458614	0.00237797	0.00466993	0.00000407	0.00000213
+		-4.67156793	-0.00458085	0.00237549	0.00466430	0.00000404	0.00000212
+		-4.67550478	-0.00457558	0.00237303	0.00465869	0.00000402	0.00000211
+		-4.67943552	-0.00457034	0.00237059	0.00465310	0.00000399	0.00000210
+		-4.68336012	-0.00456511	0.00236816	0.00464753	0.00000397	0.00000209
+		-4.68727860	-0.00455990	0.00236575	0.00464198	0.00000394	0.00000208
+		-4.69119092	-0.00455472	0.00236335	0.00463645	0.00000392	0.00000207
+		-4.69509710	-0.00454955	0.00236096	0.00463095	0.00000389	0.00000206
+		-4.69899711	-0.00454440	0.00235859	0.00462546	0.00000387	0.00000205
+		-4.70289095	-0.00453926	0.00235623	0.00461999	0.00000385	0.00000204
+		-4.70677861	-0.00453415	0.00235389	0.00461455	0.00000382	0.00000203
+		-4.71066008	-0.00452905	0.00235156	0.00460912	0.00000380	0.00000202
+		-4.71453535	-0.00452398	0.00234924	0.00460372	0.00000378	0.00000200
+		-4.71840442	-0.00451892	0.00234694	0.00459833	0.00000375	0.00000199
+		-4.72226728	-0.00451387	0.00234465	0.00459296	0.00000373	0.00000198
+		-4.72612392	-0.00450885	0.00234237	0.00458761	0.00000371	0.00000197
+		-4.72997433	-0.00450384	0.00234011	0.00458229	0.00000369	0.00000196
+		-4.73381850	-0.00449885	0.00233786	0.00457698	0.00000366	0.00000195
+		-4.73765643	-0.00449388	0.00233562	0.00457168	0.00000364	0.00000195
+		-4.74148810	-0.00448893	0.00233340	0.00456641	0.00000362	0.00000194
+		-4.74531352	-0.00448399	0.00233119	0.00456116	0.00000360	0.00000193
+		-4.74913267	-0.00447907	0.00232899	0.00455592	0.00000357	0.00000192
+		-4.75294555	-0.00447416	0.00232680	0.00455071	0.00000355	0.00000191
+		-4.75675214	-0.00446927	0.00232462	0.00454551	0.00000353	0.00000190
+		-4.76055246	-0.00446440	0.00232246	0.00454033	0.00000351	0.00000189
+		-4.76434647	-0.00445955	0.00232031	0.00453516	0.00000349	0.00000188
+		-4.76813419	-0.00445471	0.00231816	0.00453002	0.00000347	0.00000187
+		-4.77191560	-0.00444988	0.00231604	0.00452489	0.00000344	0.00000186
+		-4.77569070	-0.00444507	0.00231392	0.00451978	0.00000342	0.00000185
+		-4.77945947	-0.00444028	0.00231181	0.00451469	0.00000340	0.00000184
+		-4.78322192	-0.00443550	0.00230972	0.00450961	0.00000338	0.00000183
+		-4.78697804	-0.00443074	0.00230763	0.00450455	0.00000336	0.00000182
+		-4.79072783	-0.00442600	0.00230556	0.00449951	0.00000334	0.00000181
+		-4.79447127	-0.00442127	0.00230350	0.00449448	0.00000332	0.00000180
+		-4.79820836	-0.00441655	0.00230145	0.00448947	0.00000330	0.00000179
+		-4.80193909	-0.00441185	0.00229941	0.00448448	0.00000328	0.00000178
+		-4.80566347	-0.00440716	0.00229738	0.00447951	0.00000326	0.00000178
+		-4.80938148	-0.00440249	0.00229536	0.00447454	0.00000324	0.00000177
+		-4.81309312	-0.00439783	0.00229335	0.00446960	0.00000322	0.00000176
+		-4.81679838	-0.00439319	0.00229135	0.00446467	0.00000320	0.00000175
+		-4.82049726	-0.00438856	0.00228937	0.00445976	0.00000318	0.00000174
+		-4.82418976	-0.00438395	0.00228739	0.00445486	0.00000316	0.00000173
+		-4.82787587	-0.00437935	0.00228542	0.00444998	0.00000314	0.00000172
+		-4.83155558	-0.00437476	0.00228346	0.00444512	0.00000312	0.00000171
+		-4.83522889	-0.00437019	0.00228151	0.00444027	0.00000310	0.00000171
+		-4.83889580	-0.00436563	0.00227957	0.00443543	0.00000308	0.00000170
+		-4.84255630	-0.00436109	0.00227764	0.00443061	0.00000306	0.00000169
+		-4.84621038	-0.00435656	0.00227572	0.00442580	0.00000305	0.00000168
+		-4.84985805	-0.00435204	0.00227381	0.00442101	0.00000303	0.00000167
+		-4.85349930	-0.00434753	0.00227191	0.00441624	0.00000301	0.00000166
+		-4.85713412	-0.00434304	0.00227002	0.00441148	0.00000299	0.00000165
+		-4.86076252	-0.00433856	0.00226813	0.00440673	0.00000297	0.00000165
+		-4.86438448	-0.00433410	0.00226626	0.00440200	0.00000295	0.00000164
+		-4.86800001	-0.00432965	0.00226439	0.00439728	0.00000294	0.00000163
+		-4.87160909	-0.00432521	0.00226253	0.00439258	0.00000292	0.00000162
+		-4.87521174	-0.00432078	0.00226069	0.00438789	0.00000290	0.00000161
+		-4.87880793	-0.00431637	0.00225885	0.00438321	0.00000288	0.00000161
+		-4.88239768	-0.00431196	0.00225701	0.00437855	0.00000286	0.00000160
+		-4.88598098	-0.00430758	0.00225519	0.00437390	0.00000285	0.00000159
+		-4.88955781	-0.00430320	0.00225338	0.00436927	0.00000283	0.00000158
+		-4.89312819	-0.00429883	0.00225157	0.00436465	0.00000281	0.00000157
+		-4.89669211	-0.00429448	0.00224977	0.00436004	0.00000279	0.00000157
+		-4.90024957	-0.00429014	0.00224798	0.00435545	0.00000278	0.00000156
+		-4.90380055	-0.00428581	0.00224620	0.00435087	0.00000276	0.00000155
+		-4.90734507	-0.00428150	0.00224442	0.00434630	0.00000274	0.00000154
+		-4.91088312	-0.00427719	0.00224266	0.00434174	0.00000272	0.00000153
+		-4.91441469	-0.00427290	0.00224090	0.00433720	0.00000271	0.00000153
+		-4.91793978	-0.00426862	0.00223915	0.00433267	0.00000269	0.00000152
+		-4.92145840	-0.00426435	0.00223740	0.00432816	0.00000267	0.00000151
+		-4.92497053	-0.00426009	0.00223566	0.00432366	0.00000266	0.00000150
+		-4.92847618	-0.00425584	0.00223394	0.00431916	0.00000264	0.00000150
+		-4.93197535	-0.00425160	0.00223221	0.00431469	0.00000262	0.00000149
+		-4.93546803	-0.00424738	0.00223050	0.00431022	0.00000261	0.00000148
+		-4.93895423	-0.00424317	0.00222879	0.00430577	0.00000259	0.00000147
+		-4.94243393	-0.00423896	0.00222709	0.00430133	0.00000258	0.00000147
+		-4.94590714	-0.00423477	0.00222540	0.00429690	0.00000256	0.00000146
+		-4.94937386	-0.00423059	0.00222371	0.00429248	0.00000254	0.00000145
+		-4.95283409	-0.00422642	0.00222203	0.00428808	0.00000253	0.00000144
+		-4.95628782	-0.00422226	0.00222036	0.00428368	0.00000251	0.00000144
+		-4.95973505	-0.00421811	0.00221869	0.00427930	0.00000250	0.00000143
+		-4.96317579	-0.00421397	0.00221703	0.00427493	0.00000248	0.00000142
+		-4.96661002	-0.00420984	0.00221538	0.00427058	0.00000246	0.00000142
+		-4.97003776	-0.00420573	0.00221373	0.00426623	0.00000245	0.00000141
+		-4.97345900	-0.00420162	0.00221209	0.00426189	0.00000243	0.00000140
+		-4.97687374	-0.00419752	0.00221046	0.00425757	0.00000242	0.00000139
+		-4.98028197	-0.00419344	0.00220883	0.00425326	0.00000240	0.00000139
+		-4.98368371	-0.00418936	0.00220721	0.00424896	0.00000239	0.00000138
+		-4.98707894	-0.00418529	0.00220559	0.00424467	0.00000237	0.00000137
+		-4.99046767	-0.00418123	0.00220398	0.00424039	0.00000236	0.00000137
+		-4.99384989	-0.00417719	0.00220238	0.00423612	0.00000234	0.00000136
+		-4.99722561	-0.00417315	0.00220078	0.00423187	0.00000233	0.00000135
+		-5.00059483	-0.00416912	0.00219919	0.00422762	0.00000231	0.00000135
+		-5.00395754	-0.00416511	0.00219761	0.00422339	0.00000230	0.00000134
+		-5.00731375	-0.00416110	0.00219603	0.00421916	0.00000228	0.00000133
+		-5.01066346	-0.00415710	0.00219445	0.00421495	0.00000227	0.00000133
+		-5.01400667	-0.00415311	0.00219288	0.00421075	0.00000226	0.00000132
+		-5.01734337	-0.00414913	0.00219132	0.00420655	0.00000224	0.00000131
+		-5.02067356	-0.00414516	0.00218976	0.00420237	0.00000223	0.00000131
+		-5.02399726	-0.00414120	0.00218821	0.00419820	0.00000221	0.00000130
+		-5.02731445	-0.00413724	0.00218666	0.00419404	0.00000220	0.00000129
+		-5.03062515	-0.00413330	0.00218512	0.00418989	0.00000218	0.00000129
+		-5.03392934	-0.00412937	0.00218359	0.00418574	0.00000217	0.00000128
+		-5.03722703	-0.00412544	0.00218206	0.00418161	0.00000216	0.00000127
+		-5.04051822	-0.00412153	0.00218053	0.00417749	0.00000214	0.00000127
+		-5.04380292	-0.00411762	0.00217901	0.00417338	0.00000213	0.00000126
+		-5.04708112	-0.00411372	0.00217750	0.00416928	0.00000212	0.00000125
+		-5.05035282	-0.00410983	0.00217599	0.00416519	0.00000210	0.00000125
+		-5.05361802	-0.00410595	0.00217448	0.00416111	0.00000209	0.00000124
+		-5.05687674	-0.00410208	0.00217298	0.00415703	0.00000207	0.00000124
+		-5.06012896	-0.00409821	0.00217148	0.00415297	0.00000206	0.00000123
+		-5.06337469	-0.00409436	0.00216999	0.00414892	0.00000205	0.00000122
+		-5.06661393	-0.00409051	0.00216851	0.00414488	0.00000203	0.00000122
+		-5.06984668	-0.00408668	0.00216703	0.00414084	0.00000202	0.00000121
+		-5.07307294	-0.00408285	0.00216555	0.00413682	0.00000201	0.00000121
+		-5.07629272	-0.00407902	0.00216408	0.00413280	0.00000199	0.00000120
+		-5.07950602	-0.00407521	0.00216261	0.00412880	0.00000198	0.00000119
+		-5.08271283	-0.00407141	0.00216115	0.00412480	0.00000197	0.00000119
+		-5.08591317	-0.00406761	0.00215969	0.00412081	0.00000196	0.00000118
+		-5.08910703	-0.00406382	0.00215823	0.00411683	0.00000194	0.00000118
+		-5.09229441	-0.00406004	0.00215678	0.00411286	0.00000193	0.00000117
+		-5.09547532	-0.00405627	0.00215534	0.00410890	0.00000192	0.00000116
+		-5.09864975	-0.00405250	0.00215390	0.00410495	0.00000191	0.00000116
+		-5.10181772	-0.00404874	0.00215246	0.00410101	0.00000189	0.00000115
+		-5.10497922	-0.00404500	0.00215102	0.00409707	0.00000188	0.00000115
+		-5.10813425	-0.00404125	0.00214960	0.00409315	0.00000187	0.00000114
+		-5.11128282	-0.00403752	0.00214817	0.00408923	0.00000186	0.00000114
+		-5.11442494	-0.00403379	0.00214675	0.00408532	0.00000184	0.00000113
+		-5.11756059	-0.00403008	0.00214533	0.00408142	0.00000183	0.00000112
+		-5.12068979	-0.00402637	0.00214392	0.00407753	0.00000182	0.00000112
+		-5.12381254	-0.00402266	0.00214251	0.00407365	0.00000181	0.00000111
+		-5.12692884	-0.00401897	0.00214110	0.00406978	0.00000179	0.00000111
+		-5.13003869	-0.00401528	0.00213970	0.00406591	0.00000178	0.00000110
+		-5.13314210	-0.00401160	0.00213831	0.00406205	0.00000177	0.00000110
+		-5.13623906	-0.00400792	0.00213691	0.00405820	0.00000176	0.00000109
+		-5.13932959	-0.00400426	0.00213552	0.00405436	0.00000175	0.00000109
+		-5.14241368	-0.00400060	0.00213413	0.00405053	0.00000173	0.00000108
+		-5.14549135	-0.00399695	0.00213275	0.00404670	0.00000172	0.00000107
+		-5.14856258	-0.00399330	0.00213137	0.00404289	0.00000171	0.00000107
+		-5.15162739	-0.00398967	0.00213000	0.00403908	0.00000170	0.00000106
+		-5.15468577	-0.00398604	0.00212862	0.00403528	0.00000169	0.00000106
+		-5.15773774	-0.00398241	0.00212725	0.00403148	0.00000168	0.00000105
+		-5.16078329	-0.00397880	0.00212589	0.00402770	0.00000167	0.00000105
+		-5.16382243	-0.00397519	0.00212453	0.00402392	0.00000165	0.00000104
+		-5.16685516	-0.00397159	0.00212317	0.00402015	0.00000164	0.00000104
+		-5.16988149	-0.00396799	0.00212181	0.00401639	0.00000163	0.00000103
+		-5.17290141	-0.00396440	0.00212046	0.00401264	0.00000162	0.00000103
+		-5.17591494	-0.00396082	0.00211911	0.00400889	0.00000161	0.00000102
+		-5.17892208	-0.00395724	0.00211776	0.00400515	0.00000160	0.00000102
+		-5.18192282	-0.00395368	0.00211642	0.00400142	0.00000159	0.00000101
+		-5.18491718	-0.00395011	0.00211508	0.00399770	0.00000158	0.00000101
+		-5.18790516	-0.00394656	0.00211374	0.00399398	0.00000156	0.00000100
+		-5.19088675	-0.00394301	0.00211241	0.00399027	0.00000155	0.00000100
+		-5.19386198	-0.00393947	0.00211108	0.00398657	0.00000154	0.00000099
+		-5.19683083	-0.00393593	0.00210975	0.00398288	0.00000153	0.00000099
+		-5.19979332	-0.00393241	0.00210843	0.00397919	0.00000152	0.00000098
+		-5.20274945	-0.00392888	0.00210710	0.00397551	0.00000151	0.00000098
+		-5.20569922	-0.00392537	0.00210578	0.00397184	0.00000150	0.00000097
+		-5.20864264	-0.00392186	0.00210447	0.00396817	0.00000149	0.00000097
+		-5.21157971	-0.00391835	0.00210315	0.00396451	0.00000148	0.00000096
+		-5.21451043	-0.00391486	0.00210184	0.00396086	0.00000147	0.00000096
+		-5.21743482	-0.00391137	0.00210054	0.00395722	0.00000146	0.00000095
+		-5.22035287	-0.00390788	0.00209923	0.00395358	0.00000145	0.00000095
+		-5.22326459	-0.00390440	0.00209793	0.00394995	0.00000144	0.00000094
+		-5.22616999	-0.00390093	0.00209663	0.00394633	0.00000143	0.00000094
+		-5.22906906	-0.00389747	0.00209533	0.00394271	0.00000142	0.00000093
+		-5.23196182	-0.00389401	0.00209404	0.00393910	0.00000141	0.00000093
+		-5.23484826	-0.00389055	0.00209274	0.00393550	0.00000140	0.00000093
+		-5.23772840	-0.00388711	0.00209145	0.00393191	0.00000139	0.00000092
+		-5.24060224	-0.00388366	0.00209017	0.00392832	0.00000138	0.00000092
+		-5.24346978	-0.00388023	0.00208888	0.00392473	0.00000137	0.00000091
+		-5.24633103	-0.00387680	0.00208760	0.00392116	0.00000136	0.00000091
+		-5.24918599	-0.00387338	0.00208632	0.00391759	0.00000135	0.00000090
+		-5.25203467	-0.00386996	0.00208504	0.00391403	0.00000134	0.00000090
+		-5.25487707	-0.00386655	0.00208377	0.00391047	0.00000133	0.00000089
+		-5.25771320	-0.00386314	0.00208250	0.00390692	0.00000132	0.00000089
+		-5.26054307	-0.00385974	0.00208123	0.00390338	0.00000131	0.00000088
+		-5.26336668	-0.00385634	0.00207996	0.00389984	0.00000130	0.00000088
+		-5.26618402	-0.00385295	0.00207869	0.00389631	0.00000129	0.00000088
+		-5.26899512	-0.00384957	0.00207743	0.00389279	0.00000128	0.00000087
+		-5.27179998	-0.00384619	0.00207617	0.00388927	0.00000127	0.00000087
+		-5.27459860	-0.00384282	0.00207491	0.00388576	0.00000126	0.00000086
+		-5.27739098	-0.00383945	0.00207365	0.00388226	0.00000125	0.00000086
+		-5.28017713	-0.00383609	0.00207240	0.00387876	0.00000124	0.00000085
+		-5.28295706	-0.00383274	0.00207115	0.00387527	0.00000123	0.00000085
+		-5.28573078	-0.00382939	0.00206989	0.00387178	0.00000122	0.00000085
+		-5.28849828	-0.00382604	0.00206865	0.00386830	0.00000121	0.00000084
+		-5.29125958	-0.00382271	0.00206740	0.00386483	0.00000120	0.00000084
+		-5.29401468	-0.00381937	0.00206616	0.00386136	0.00000119	0.00000083
+		-5.29676358	-0.00381604	0.00206491	0.00385790	0.00000118	0.00000083
+		-5.29950630	-0.00381272	0.00206367	0.00385445	0.00000118	0.00000083
+		-5.30224283	-0.00380940	0.00206243	0.00385100	0.00000117	0.00000082
+		-5.30497319	-0.00380609	0.00206120	0.00384755	0.00000116	0.00000082
+		-5.30769738	-0.00380279	0.00205996	0.00384412	0.00000115	0.00000081
+		-5.31041540	-0.00379948	0.00205873	0.00384068	0.00000114	0.00000081
+		-5.31312727	-0.00379619	0.00205750	0.00383726	0.00000113	0.00000081
+		-5.31583299	-0.00379290	0.00205627	0.00383384	0.00000112	0.00000080
+		-5.31853255	-0.00378961	0.00205504	0.00383043	0.00000111	0.00000080
+		-5.32122598	-0.00378633	0.00205382	0.00382702	0.00000110	0.00000079
+		-5.32391328	-0.00378306	0.00205259	0.00382362	0.00000110	0.00000079
+		-5.32659445	-0.00377979	0.00205137	0.00382022	0.00000109	0.00000079
+		-5.32926950	-0.00377652	0.00205015	0.00381683	0.00000108	0.00000078
+		-5.33193843	-0.00377326	0.00204893	0.00381344	0.00000107	0.00000078
+		-5.33460126	-0.00377000	0.00204772	0.00381006	0.00000106	0.00000077
+		-5.33725798	-0.00376675	0.00204650	0.00380669	0.00000105	0.00000077
+		-5.33990861	-0.00376351	0.00204529	0.00380332	0.00000104	0.00000077
+		-5.34255316	-0.00376027	0.00204408	0.00379996	0.00000103	0.00000076
+		-5.34519162	-0.00375703	0.00204287	0.00379660	0.00000103	0.00000076
+		-5.34782400	-0.00375380	0.00204166	0.00379325	0.00000102	0.00000075
+		-5.35045032	-0.00375058	0.00204045	0.00378991	0.00000101	0.00000075
+		-5.35307057	-0.00374736	0.00203925	0.00378657	0.00000100	0.00000075
+		-5.35568477	-0.00374414	0.00203804	0.00378323	0.00000099	0.00000074
+		-5.35829292	-0.00374093	0.00203684	0.00377990	0.00000098	0.00000074
+		-5.36089503	-0.00373773	0.00203564	0.00377658	0.00000098	0.00000074
+		-5.36349110	-0.00373453	0.00203444	0.00377326	0.00000097	0.00000073
+		-5.36608114	-0.00373133	0.00203324	0.00376994	0.00000096	0.00000073
+		-5.36866517	-0.00372814	0.00203205	0.00376664	0.00000095	0.00000073
+		-5.37124318	-0.00372495	0.00203085	0.00376333	0.00000094	0.00000072
+		-5.37381518	-0.00372177	0.00202966	0.00376004	0.00000094	0.00000072
+		-5.37638118	-0.00371859	0.00202847	0.00375674	0.00000093	0.00000071
+		-5.37894119	-0.00371542	0.00202728	0.00375346	0.00000092	0.00000071
+		-5.38149521	-0.00371225	0.00202609	0.00375018	0.00000091	0.00000071
+		-5.38404325	-0.00370909	0.00202490	0.00374690	0.00000090	0.00000070
+		-5.38658532	-0.00370593	0.00202371	0.00374363	0.00000090	0.00000070
+		-5.38912142	-0.00370278	0.00202253	0.00374036	0.00000089	0.00000070
+		-5.39165157	-0.00369963	0.00202134	0.00373710	0.00000088	0.00000069
+		-5.39417576	-0.00369648	0.00202016	0.00373385	0.00000087	0.00000069
+		-5.39669401	-0.00369334	0.00201898	0.00373059	0.00000087	0.00000069
+		-5.39920633	-0.00369021	0.00201780	0.00372735	0.00000086	0.00000068
+		-5.40171272	-0.00368707	0.00201662	0.00372411	0.00000085	0.00000068
+		-5.40421318	-0.00368395	0.00201544	0.00372087	0.00000084	0.00000068
+		-5.40670773	-0.00368082	0.00201427	0.00371764	0.00000083	0.00000067
+		-5.40919637	-0.00367771	0.00201309	0.00371442	0.00000083	0.00000067
+		-5.41167912	-0.00367459	0.00201192	0.00371119	0.00000082	0.00000067
+		-5.41415597	-0.00367148	0.00201075	0.00370798	0.00000081	0.00000066
+		-5.41662693	-0.00366838	0.00200957	0.00370477	0.00000080	0.00000066
+		-5.41909202	-0.00366528	0.00200840	0.00370156	0.00000080	0.00000066
+		-5.42155124	-0.00366218	0.00200724	0.00369836	0.00000079	0.00000065
+		-5.42400460	-0.00365909	0.00200607	0.00369516	0.00000078	0.00000065
+		-5.42645210	-0.00365600	0.00200490	0.00369197	0.00000077	0.00000065
+		-5.42889376	-0.00365292	0.00200374	0.00368879	0.00000077	0.00000064
+		-5.43132958	-0.00364984	0.00200257	0.00368560	0.00000076	0.00000064
+		-5.43375956	-0.00364677	0.00200141	0.00368243	0.00000075	0.00000064
+		-5.43618372	-0.00364370	0.00200024	0.00367926	0.00000075	0.00000063
+		-5.43860207	-0.00364063	0.00199908	0.00367609	0.00000074	0.00000063
+		-5.44101460	-0.00363757	0.00199792	0.00367293	0.00000073	0.00000063
+		-5.44342134	-0.00363451	0.00199676	0.00366977	0.00000072	0.00000063
+		-5.44582228	-0.00363146	0.00199561	0.00366661	0.00000072	0.00000062
+		-5.44821744	-0.00362841	0.00199445	0.00366346	0.00000071	0.00000062
+		-5.45060682	-0.00362536	0.00199329	0.00366032	0.00000070	0.00000062
+		-5.45299043	-0.00362232	0.00199214	0.00365718	0.00000070	0.00000061
+		-5.45536828	-0.00361929	0.00199098	0.00365405	0.00000069	0.00000061
+		-5.45774037	-0.00361625	0.00198983	0.00365092	0.00000068	0.00000061
+		-5.46010672	-0.00361323	0.00198868	0.00364779	0.00000067	0.00000060
+		-5.46246734	-0.00361020	0.00198753	0.00364467	0.00000067	0.00000060
+		-5.46482222	-0.00360718	0.00198638	0.00364155	0.00000066	0.00000060
+		-5.46717138	-0.00360417	0.00198523	0.00363844	0.00000065	0.00000060
+		-5.46951483	-0.00360115	0.00198408	0.00363533	0.00000065	0.00000059
+		-5.47185257	-0.00359814	0.00198293	0.00363223	0.00000064	0.00000059
+		-5.47418461	-0.00359514	0.00198178	0.00362913	0.00000063	0.00000059
+		-5.47651097	-0.00359214	0.00198064	0.00362604	0.00000063	0.00000058
+		-5.47883164	-0.00358914	0.00197949	0.00362295	0.00000062	0.00000058
+		-5.48114664	-0.00358615	0.00197835	0.00361986	0.00000061	0.00000058
+		-5.48345598	-0.00358316	0.00197721	0.00361678	0.00000061	0.00000058
+		-5.48575966	-0.00358018	0.00197606	0.00361370	0.00000060	0.00000057
+		-5.48805769	-0.00357720	0.00197492	0.00361063	0.00000059	0.00000057
+		-5.49035007	-0.00357422	0.00197378	0.00360756	0.00000059	0.00000057
+		-5.49263683	-0.00357125	0.00197264	0.00360450	0.00000058	0.00000056
+		-5.49491797	-0.00356828	0.00197150	0.00360144	0.00000057	0.00000056
+		-5.49719348	-0.00356532	0.00197036	0.00359839	0.00000057	0.00000056
+		-5.49946339	-0.00356236	0.00196923	0.00359534	0.00000056	0.00000056
+		-5.50172771	-0.00355940	0.00196809	0.00359229	0.00000056	0.00000055
+		-5.50398643	-0.00355645	0.00196695	0.00358925	0.00000055	0.00000055
+		-5.50623957	-0.00355350	0.00196582	0.00358621	0.00000054	0.00000055
+		-5.50848713	-0.00355055	0.00196468	0.00358318	0.00000054	0.00000054
+		-5.51072913	-0.00354761	0.00196355	0.00358015	0.00000053	0.00000054
+		-5.51296557	-0.00354467	0.00196242	0.00357712	0.00000052	0.00000054
+		-5.51519647	-0.00354174	0.00196129	0.00357410	0.00000052	0.00000054
+		-5.51742182	-0.00353881	0.00196016	0.00357108	0.00000051	0.00000053
+		-5.51964164	-0.00353588	0.00195902	0.00356807	0.00000050	0.00000053
+		-5.52185594	-0.00353296	0.00195789	0.00356506	0.00000050	0.00000053
+		-5.52406473	-0.00353004	0.00195677	0.00356206	0.00000049	0.00000053
+		-5.52626800	-0.00352712	0.00195564	0.00355906	0.00000049	0.00000052
+		-5.52846578	-0.00352421	0.00195451	0.00355606	0.00000048	0.00000052
+		-5.53065808	-0.00352130	0.00195338	0.00355307	0.00000047	0.00000052
+		-5.53284489	-0.00351840	0.00195226	0.00355008	0.00000047	0.00000052
+		-5.53502623	-0.00351550	0.00195113	0.00354710	0.00000046	0.00000051
+		-5.53720210	-0.00351260	0.00195001	0.00354412	0.00000046	0.00000051
+		-5.53937252	-0.00350971	0.00194888	0.00354114	0.00000045	0.00000051
+		-5.54153750	-0.00350682	0.00194776	0.00353817	0.00000044	0.00000051
+		-5.54369704	-0.00350393	0.00194663	0.00353520	0.00000044	0.00000050
+		-5.54585115	-0.00350105	0.00194551	0.00353224	0.00000043	0.00000050
+		-5.54799984	-0.00349817	0.00194439	0.00352928	0.00000043	0.00000050
+		-5.55014311	-0.00349529	0.00194327	0.00352632	0.00000042	0.00000050
+		-5.55228099	-0.00349242	0.00194215	0.00352337	0.00000041	0.00000049
+		-5.55441347	-0.00348955	0.00194103	0.00352042	0.00000041	0.00000049
+		-5.55654057	-0.00348669	0.00193991	0.00351748	0.00000040	0.00000049
+		-5.55866229	-0.00348383	0.00193879	0.00351454	0.00000040	0.00000049
+		-5.56077864	-0.00348097	0.00193767	0.00351160	0.00000039	0.00000048
+		-5.56288964	-0.00347811	0.00193655	0.00350867	0.00000039	0.00000048
+		-5.56499528	-0.00347526	0.00193544	0.00350574	0.00000038	0.00000048
+		-5.56709558	-0.00347242	0.00193432	0.00350282	0.00000037	0.00000048
+		-5.56919055	-0.00346957	0.00193321	0.00349990	0.00000037	0.00000047
+		-5.57128020	-0.00346673	0.00193209	0.00349698	0.00000036	0.00000047
+		-5.57336453	-0.00346390	0.00193098	0.00349407	0.00000036	0.00000047
+		-5.57544356	-0.00346106	0.00192986	0.00349116	0.00000035	0.00000047
+		-5.57751729	-0.00345823	0.00192875	0.00348825	0.00000035	0.00000047
+		-5.57958573	-0.00345541	0.00192764	0.00348535	0.00000034	0.00000046
+		-5.58164889	-0.00345259	0.00192652	0.00348245	0.00000033	0.00000046
+		-5.58370679	-0.00344977	0.00192541	0.00347956	0.00000033	0.00000046
+		-5.58575942	-0.00344695	0.00192430	0.00347667	0.00000032	0.00000046
+		-5.58780679	-0.00344414	0.00192319	0.00347378	0.00000032	0.00000045
+		-5.58984893	-0.00344133	0.00192208	0.00347090	0.00000031	0.00000045
+		-5.59188583	-0.00343852	0.00192097	0.00346802	0.00000031	0.00000045
+		-5.59391750	-0.00343572	0.00191986	0.00346515	0.00000030	0.00000045
+		-5.59594396	-0.00343292	0.00191875	0.00346228	0.00000030	0.00000045
+		-5.59796521	-0.00343013	0.00191764	0.00345941	0.00000029	0.00000044
+		-5.59998126	-0.00342733	0.00191653	0.00345654	0.00000029	0.00000044
+		-5.60199212	-0.00342455	0.00191543	0.00345368	0.00000028	0.00000044
+		-5.60399781	-0.00342176	0.00191432	0.00345083	0.00000028	0.00000044
+		-5.60599831	-0.00341898	0.00191321	0.00344797	0.00000027	0.00000043
+		-5.60799366	-0.00341620	0.00191211	0.00344513	0.00000026	0.00000043
+		-5.60998385	-0.00341342	0.00191100	0.00344228	0.00000026	0.00000043
+		-5.61196890	-0.00341065	0.00190990	0.00343944	0.00000025	0.00000043
+		-5.61394881	-0.00340788	0.00190879	0.00343660	0.00000025	0.00000043
+		-5.61592360	-0.00340512	0.00190769	0.00343376	0.00000024	0.00000042
+		-5.61789327	-0.00340235	0.00190659	0.00343093	0.00000024	0.00000042
+		-5.61985783	-0.00339960	0.00190548	0.00342811	0.00000023	0.00000042
+		-5.62181729	-0.00339684	0.00190438	0.00342528	0.00000023	0.00000042
+		-5.62377166	-0.00339409	0.00190328	0.00342246	0.00000022	0.00000042
+		-5.62572095	-0.00339134	0.00190218	0.00341964	0.00000022	0.00000041
+		-5.62766517	-0.00338859	0.00190108	0.00341683	0.00000021	0.00000041
+		-5.62960432	-0.00338585	0.00189998	0.00341402	0.00000021	0.00000041
+		-5.63153842	-0.00338311	0.00189888	0.00341122	0.00000020	0.00000041
+		-5.63346748	-0.00338037	0.00189778	0.00340841	0.00000020	0.00000041
+		-5.63539150	-0.00337764	0.00189668	0.00340561	0.00000019	0.00000040
+		-5.63731050	-0.00337491	0.00189558	0.00340282	0.00000019	0.00000040
+		-5.63922447	-0.00337218	0.00189448	0.00340003	0.00000018	0.00000040
+		-5.64113344	-0.00336946	0.00189338	0.00339724	0.00000018	0.00000040
+		-5.64303741	-0.00336674	0.00189229	0.00339445	0.00000017	0.00000040
+		-5.64493639	-0.00336402	0.00189119	0.00339167	0.00000017	0.00000039
+		-5.64683039	-0.00336131	0.00189009	0.00338889	0.00000016	0.00000039
+		-5.64871942	-0.00335860	0.00188899	0.00338612	0.00000016	0.00000039
+		-5.65060348	-0.00335589	0.00188790	0.00338335	0.00000015	0.00000039
+		-5.65248259	-0.00335319	0.00188680	0.00338058	0.00000015	0.00000039
+		-5.65435676	-0.00335049	0.00188571	0.00337781	0.00000014	0.00000038
+		-5.65622600	-0.00334779	0.00188461	0.00337505	0.00000014	0.00000038
+		-5.65809030	-0.00334509	0.00188352	0.00337229	0.00000013	0.00000038
+		-5.65994970	-0.00334240	0.00188243	0.00336954	0.00000013	0.00000038
+		-5.66180418	-0.00333971	0.00188133	0.00336679	0.00000013	0.00000038
+		-5.66365377	-0.00333703	0.00188024	0.00336404	0.00000012	0.00000038
+		-5.66549846	-0.00333434	0.00187915	0.00336130	0.00000012	0.00000037
+		-5.66733828	-0.00333166	0.00187805	0.00335856	0.00000011	0.00000037
+		-5.66917323	-0.00332899	0.00187696	0.00335582	0.00000011	0.00000037
+		-5.67100331	-0.00332631	0.00187587	0.00335309	0.00000010	0.00000037
+		-5.67282855	-0.00332364	0.00187478	0.00335035	0.00000010	0.00000037
+		-5.67464894	-0.00332098	0.00187369	0.00334763	0.00000009	0.00000036
+		-5.67646450	-0.00331831	0.00187260	0.00334490	0.00000009	0.00000036
+		-5.67827523	-0.00331565	0.00187151	0.00334218	0.00000008	0.00000036
+		-5.68008115	-0.00331299	0.00187042	0.00333947	0.00000008	0.00000036
+		-5.68188226	-0.00331034	0.00186933	0.00333675	0.00000007	0.00000036
+		-5.68367858	-0.00330769	0.00186824	0.00333404	0.00000007	0.00000036
+		-5.68547011	-0.00330504	0.00186715	0.00333133	0.00000007	0.00000035
+		-5.68725686	-0.00330239	0.00186606	0.00332863	0.00000006	0.00000035
+		-5.68903884	-0.00329975	0.00186498	0.00332593	0.00000006	0.00000035
+		-5.69081606	-0.00329711	0.00186389	0.00332323	0.00000005	0.00000035
+		-5.69258853	-0.00329447	0.00186280	0.00332054	0.00000005	0.00000035
+		-5.69435627	-0.00329184	0.00186172	0.00331785	0.00000004	0.00000035
+		-5.69611926	-0.00328921	0.00186063	0.00331516	0.00000004	0.00000034
+		-5.69787754	-0.00328658	0.00185954	0.00331247	0.00000003	0.00000034
+		-5.69963110	-0.00328396	0.00185846	0.00330979	0.00000003	0.00000034
+		-5.70137996	-0.00328133	0.00185737	0.00330711	0.00000003	0.00000034
+		-5.70312413	-0.00327872	0.00185629	0.00330444	0.00000002	0.00000034
+		-5.70486360	-0.00327610	0.00185520	0.00330177	0.00000002	0.00000034
+		-5.70659840	-0.00327349	0.00185412	0.00329910	0.00000001	0.00000033
+		-5.70832854	-0.00327088	0.00185304	0.00329643	0.00000001	0.00000033
+		-5.71005402	-0.00326827	0.00185195	0.00329377	0.00000000	0.00000033
+		-5.71177484	-0.00326567	0.00185087	0.00329111	0.00000000	0.00000033
+		-5.71349103	-0.00326306	0.00184979	0.00328846	-0.00000000	0.00000033
+		-5.71520259	-0.00326047	0.00184870	0.00328580	-0.00000001	0.00000033
+		-5.71690953	-0.00325787	0.00184762	0.00328316	-0.00000001	0.00000032
+		-5.71861185	-0.00325528	0.00184654	0.00328051	-0.00000002	0.00000032
+		-5.72030958	-0.00325269	0.00184546	0.00327787	-0.00000002	0.00000032
+		-5.72200271	-0.00325010	0.00184438	0.00327523	-0.00000002	0.00000032
+		-5.72369126	-0.00324752	0.00184330	0.00327259	-0.00000003	0.00000032
+		-5.72537523	-0.00324494	0.00184222	0.00326996	-0.00000003	0.00000032
+		-5.72705463	-0.00324236	0.00184114	0.00326733	-0.00000004	0.00000032
+		-5.72872948	-0.00323979	0.00184006	0.00326470	-0.00000004	0.00000031
+		-5.73039979	-0.00323721	0.00183898	0.00326207	-0.00000005	0.00000031
+		-5.73206555	-0.00323464	0.00183790	0.00325945	-0.00000005	0.00000031
+		-5.73372679	-0.00323208	0.00183682	0.00325683	-0.00000005	0.00000031
+		-5.73538351	-0.00322952	0.00183574	0.00325422	-0.00000006	0.00000031
+		-5.73703572	-0.00322695	0.00183466	0.00325161	-0.00000006	0.00000031
+		-5.73868343	-0.00322440	0.00183359	0.00324900	-0.00000007	0.00000030
+		-5.74032664	-0.00322184	0.00183251	0.00324639	-0.00000007	0.00000030
+		-5.74196538	-0.00321929	0.00183143	0.00324379	-0.00000007	0.00000030
+		-5.74359964	-0.00321674	0.00183036	0.00324119	-0.00000008	0.00000030
+		-5.74522943	-0.00321419	0.00182928	0.00323859	-0.00000008	0.00000030
+		-5.74685478	-0.00321165	0.00182820	0.00323600	-0.00000009	0.00000030
+		-5.74847567	-0.00320911	0.00182713	0.00323341	-0.00000009	0.00000030
+		-5.75009213	-0.00320657	0.00182605	0.00323082	-0.00000009	0.00000029
+		-5.75170417	-0.00320404	0.00182498	0.00322824	-0.00000010	0.00000029
+		-5.75331179	-0.00320151	0.00182390	0.00322566	-0.00000010	0.00000029
+		-5.75491499	-0.00319898	0.00182283	0.00322308	-0.00000010	0.00000029
+		-5.75651380	-0.00319645	0.00182176	0.00322050	-0.00000011	0.00000029
+		-5.75810822	-0.00319393	0.00182068	0.00321793	-0.00000011	0.00000029
+		-5.75969826	-0.00319141	0.00181961	0.00321536	-0.00000012	0.00000029
+		-5.76128392	-0.00318889	0.00181854	0.00321280	-0.00000012	0.00000028
+		-5.76286523	-0.00318637	0.00181746	0.00321023	-0.00000012	0.00000028
+		-5.76444218	-0.00318386	0.00181639	0.00320767	-0.00000013	0.00000028
+		-5.76601479	-0.00318135	0.00181532	0.00320512	-0.00000013	0.00000028
+		-5.76758306	-0.00317884	0.00181425	0.00320256	-0.00000013	0.00000028
+		-5.76914700	-0.00317634	0.00181318	0.00320001	-0.00000014	0.00000028
+		-5.77070663	-0.00317384	0.00181210	0.00319746	-0.00000014	0.00000028
+		-5.77226195	-0.00317134	0.00181103	0.00319492	-0.00000015	0.00000028
+		-5.77381298	-0.00316884	0.00180996	0.00319237	-0.00000015	0.00000027
+		-5.77535971	-0.00316635	0.00180889	0.00318984	-0.00000015	0.00000027
+		-5.77690216	-0.00316386	0.00180782	0.00318730	-0.00000016	0.00000027
+		-5.77844035	-0.00316137	0.00180675	0.00318477	-0.00000016	0.00000027
+		-5.77997427	-0.00315889	0.00180569	0.00318223	-0.00000016	0.00000027
+		-5.78150394	-0.00315640	0.00180462	0.00317971	-0.00000017	0.00000027
+		-5.78302936	-0.00315393	0.00180355	0.00317718	-0.00000017	0.00000027
+		-5.78455056	-0.00315145	0.00180248	0.00317466	-0.00000017	0.00000026
+		-5.78606752	-0.00314897	0.00180141	0.00317214	-0.00000018	0.00000026
+		-5.78758027	-0.00314650	0.00180035	0.00316963	-0.00000018	0.00000026
+		-5.78908882	-0.00314403	0.00179928	0.00316711	-0.00000019	0.00000026
+		-5.79059316	-0.00314157	0.00179821	0.00316460	-0.00000019	0.00000026
+		-5.79209332	-0.00313911	0.00179715	0.00316209	-0.00000019	0.00000026
+		-5.79358930	-0.00313665	0.00179608	0.00315959	-0.00000020	0.00000026
+		-5.79508110	-0.00313419	0.00179501	0.00315709	-0.00000020	0.00000026
+		-5.79656875	-0.00313173	0.00179395	0.00315459	-0.00000020	0.00000025
+		-5.79805224	-0.00312928	0.00179288	0.00315209	-0.00000021	0.00000025
+		-5.79953159	-0.00312683	0.00179182	0.00314960	-0.00000021	0.00000025
+		-5.80100681	-0.00312438	0.00179075	0.00314711	-0.00000021	0.00000025
+		-5.80247790	-0.00312194	0.00178969	0.00314462	-0.00000022	0.00000025
+		-5.80394487	-0.00311950	0.00178863	0.00314214	-0.00000022	0.00000025
+		-5.80540774	-0.00311706	0.00178756	0.00313966	-0.00000022	0.00000025
+		-5.80686651	-0.00311462	0.00178650	0.00313718	-0.00000023	0.00000025
+		-5.80832119	-0.00311219	0.00178544	0.00313470	-0.00000023	0.00000024
+		-5.80977179	-0.00310976	0.00178438	0.00313223	-0.00000023	0.00000024
+		-5.81121832	-0.00310733	0.00178331	0.00312976	-0.00000024	0.00000024
+		-5.81266079	-0.00310490	0.00178225	0.00312729	-0.00000024	0.00000024
+		-5.81409921	-0.00310248	0.00178119	0.00312483	-0.00000024	0.00000024
+		-5.81553358	-0.00310006	0.00178013	0.00312237	-0.00000025	0.00000024
+		-5.81696392	-0.00309764	0.00177907	0.00311991	-0.00000025	0.00000024
+		-5.81839023	-0.00309523	0.00177801	0.00311745	-0.00000025	0.00000024
+		-5.81981252	-0.00309282	0.00177695	0.00311500	-0.00000026	0.00000024
+		-5.82123081	-0.00309041	0.00177589	0.00311255	-0.00000026	0.00000023
+		-5.82264509	-0.00308800	0.00177483	0.00311010	-0.00000026	0.00000023
+		-5.82405539	-0.00308560	0.00177377	0.00310766	-0.00000027	0.00000023
+		-5.82546171	-0.00308319	0.00177271	0.00310521	-0.00000027	0.00000023
+		-5.82686405	-0.00308079	0.00177165	0.00310277	-0.00000027	0.00000023
+		-5.82826243	-0.00307840	0.00177059	0.00310034	-0.00000028	0.00000023
+		-5.82965686	-0.00307600	0.00176954	0.00309790	-0.00000028	0.00000023
+		-5.83104734	-0.00307361	0.00176848	0.00309547	-0.00000028	0.00000023
+		-5.83243389	-0.00307122	0.00176742	0.00309305	-0.00000029	0.00000023
+		-5.83381650	-0.00306884	0.00176637	0.00309062	-0.00000029	0.00000022
+		-5.83519520	-0.00306645	0.00176531	0.00308820	-0.00000029	0.00000022
+		-5.83656999	-0.00306407	0.00176425	0.00308578	-0.00000030	0.00000022
+		-5.83794088	-0.00306169	0.00176320	0.00308336	-0.00000030	0.00000022
+		-5.83930788	-0.00305932	0.00176214	0.00308095	-0.00000030	0.00000022
+		-5.84067099	-0.00305695	0.00176109	0.00307853	-0.00000031	0.00000022
+		-5.84203023	-0.00305458	0.00176003	0.00307612	-0.00000031	0.00000022
+		-5.84338560	-0.00305221	0.00175898	0.00307372	-0.00000031	0.00000022
+		-5.84473712	-0.00304984	0.00175793	0.00307132	-0.00000031	0.00000022
+		-5.84608479	-0.00304748	0.00175687	0.00306891	-0.00000032	0.00000022
+		-5.84742862	-0.00304512	0.00175582	0.00306652	-0.00000032	0.00000021
+		-5.84876862	-0.00304276	0.00175477	0.00306412	-0.00000032	0.00000021
+		-5.85010480	-0.00304041	0.00175371	0.00306173	-0.00000033	0.00000021
+		-5.85143717	-0.00303805	0.00175266	0.00305934	-0.00000033	0.00000021
+		-5.85276573	-0.00303570	0.00175161	0.00305695	-0.00000033	0.00000021
+		-5.85409050	-0.00303336	0.00175056	0.00305457	-0.00000034	0.00000021
+		-5.85541148	-0.00303101	0.00174951	0.00305218	-0.00000034	0.00000021
+		-5.85672868	-0.00302867	0.00174846	0.00304981	-0.00000034	0.00000021
+		-5.85804212	-0.00302633	0.00174741	0.00304743	-0.00000034	0.00000021
+		-5.85935180	-0.00302399	0.00174636	0.00304506	-0.00000035	0.00000020
+		-5.86065772	-0.00302166	0.00174531	0.00304268	-0.00000035	0.00000020
+		-5.86195991	-0.00301932	0.00174426	0.00304032	-0.00000035	0.00000020
+		-5.86325835	-0.00301699	0.00174321	0.00303795	-0.00000036	0.00000020
+		-5.86455308	-0.00301467	0.00174216	0.00303559	-0.00000036	0.00000020
+		-5.86584409	-0.00301234	0.00174111	0.00303323	-0.00000036	0.00000020
+		-5.86713139	-0.00301002	0.00174006	0.00303087	-0.00000037	0.00000020
+		-5.86841499	-0.00300770	0.00173902	0.00302851	-0.00000037	0.00000020
+		-5.86969490	-0.00300538	0.00173797	0.00302616	-0.00000037	0.00000020
+		-5.87097113	-0.00300307	0.00173692	0.00302381	-0.00000037	0.00000020
+		-5.87224368	-0.00300076	0.00173588	0.00302146	-0.00000038	0.00000020
+		-5.87351257	-0.00299845	0.00173483	0.00301912	-0.00000038	0.00000019
+		-5.87477781	-0.00299614	0.00173378	0.00301678	-0.00000038	0.00000019
+		-5.87603940	-0.00299383	0.00173274	0.00301444	-0.00000039	0.00000019
+		-5.87729735	-0.00299153	0.00173169	0.00301210	-0.00000039	0.00000019
+		-5.87855167	-0.00298923	0.00173065	0.00300977	-0.00000039	0.00000019
+		-5.87980237	-0.00298694	0.00172961	0.00300744	-0.00000039	0.00000019
+		-5.88104946	-0.00298464	0.00172856	0.00300511	-0.00000040	0.00000019
+		-5.88229294	-0.00298235	0.00172752	0.00300278	-0.00000040	0.00000019
+		-5.88353283	-0.00298006	0.00172648	0.00300046	-0.00000040	0.00000019
+		-5.88476913	-0.00297777	0.00172543	0.00299814	-0.00000040	0.00000019
+		-5.88600185	-0.00297549	0.00172439	0.00299582	-0.00000041	0.00000019
+		-5.88723100	-0.00297320	0.00172335	0.00299350	-0.00000041	0.00000018
+		-5.88845659	-0.00297093	0.00172231	0.00299119	-0.00000041	0.00000018
+		-5.88967862	-0.00296865	0.00172127	0.00298888	-0.00000042	0.00000018
+		-5.89089712	-0.00296637	0.00172022	0.00298657	-0.00000042	0.00000018
+		-5.89211207	-0.00296410	0.00171918	0.00298427	-0.00000042	0.00000018
+		-5.89332350	-0.00296183	0.00171814	0.00298196	-0.00000042	0.00000018
+		-5.89453141	-0.00295956	0.00171710	0.00297966	-0.00000043	0.00000018
+		-5.89573581	-0.00295730	0.00171607	0.00297737	-0.00000043	0.00000018
+		-5.89693670	-0.00295504	0.00171503	0.00297507	-0.00000043	0.00000018
+		-5.89813411	-0.00295278	0.00171399	0.00297278	-0.00000043	0.00000018
+		-5.89932802	-0.00295052	0.00171295	0.00297049	-0.00000044	0.00000018
+		-5.90051846	-0.00294826	0.00171191	0.00296820	-0.00000044	0.00000017
+		-5.90170544	-0.00294601	0.00171088	0.00296592	-0.00000044	0.00000017
+		-5.90288895	-0.00294376	0.00170984	0.00296363	-0.00000045	0.00000017
+		-5.90406901	-0.00294151	0.00170880	0.00296136	-0.00000045	0.00000017
+		-5.90524562	-0.00293927	0.00170777	0.00295908	-0.00000045	0.00000017
+		-5.90641881	-0.00293702	0.00170673	0.00295680	-0.00000045	0.00000017
+		-5.90758856	-0.00293478	0.00170569	0.00295453	-0.00000046	0.00000017
+		-5.90875490	-0.00293254	0.00170466	0.00295226	-0.00000046	0.00000017
+		-5.90991782	-0.00293031	0.00170363	0.00295000	-0.00000046	0.00000017
+		-5.91107735	-0.00292807	0.00170259	0.00294773	-0.00000046	0.00000017
+		-5.91223348	-0.00292584	0.00170156	0.00294547	-0.00000047	0.00000017
+		-5.91338622	-0.00292362	0.00170052	0.00294321	-0.00000047	0.00000017
+		-5.91453559	-0.00292139	0.00169949	0.00294095	-0.00000047	0.00000016
+		-5.91568159	-0.00291917	0.00169846	0.00293870	-0.00000047	0.00000016
+		-5.91682423	-0.00291694	0.00169743	0.00293645	-0.00000048	0.00000016
+		-5.91796352	-0.00291472	0.00169639	0.00293420	-0.00000048	0.00000016
+		-5.91909946	-0.00291251	0.00169536	0.00293195	-0.00000048	0.00000016
+		-5.92023207	-0.00291029	0.00169433	0.00292971	-0.00000048	0.00000016
+		-5.92136135	-0.00290808	0.00169330	0.00292746	-0.00000049	0.00000016
+		-5.92248731	-0.00290587	0.00169227	0.00292523	-0.00000049	0.00000016
+		-5.92360996	-0.00290367	0.00169124	0.00292299	-0.00000049	0.00000016
+		-5.92472930	-0.00290146	0.00169021	0.00292075	-0.00000049	0.00000016
+		-5.92584536	-0.00289926	0.00168918	0.00291852	-0.00000050	0.00000016
+		-5.92695812	-0.00289706	0.00168816	0.00291629	-0.00000050	0.00000016
+		-5.92806761	-0.00289486	0.00168713	0.00291407	-0.00000050	0.00000016
+		-5.92917382	-0.00289267	0.00168610	0.00291184	-0.00000050	0.00000015
+		-5.93027677	-0.00289047	0.00168507	0.00290962	-0.00000051	0.00000015
+		-5.93137647	-0.00288828	0.00168405	0.00290740	-0.00000051	0.00000015
+		-5.93247293	-0.00288610	0.00168302	0.00290518	-0.00000051	0.00000015
+		-5.93356614	-0.00288391	0.00168199	0.00290297	-0.00000051	0.00000015
+		-5.93465613	-0.00288173	0.00168097	0.00290076	-0.00000051	0.00000015
+		-5.93574289	-0.00287955	0.00167994	0.00289855	-0.00000052	0.00000015
+		-5.93682644	-0.00287737	0.00167892	0.00289634	-0.00000052	0.00000015
+		-5.93790678	-0.00287519	0.00167789	0.00289414	-0.00000052	0.00000015
+		-5.93898392	-0.00287302	0.00167687	0.00289193	-0.00000052	0.00000015
+		-5.94005788	-0.00287085	0.00167585	0.00288973	-0.00000053	0.00000015
+		-5.94112865	-0.00286868	0.00167482	0.00288754	-0.00000053	0.00000015
+		-5.94219625	-0.00286651	0.00167380	0.00288534	-0.00000053	0.00000015
+		-5.94326068	-0.00286435	0.00167278	0.00288315	-0.00000053	0.00000015
+		-5.94432196	-0.00286218	0.00167176	0.00288096	-0.00000054	0.00000014
+		-5.94538008	-0.00286002	0.00167074	0.00287877	-0.00000054	0.00000014
+		-5.94643506	-0.00285787	0.00166971	0.00287659	-0.00000054	0.00000014
+		-5.94748691	-0.00285571	0.00166869	0.00287441	-0.00000054	0.00000014
+		-5.94853563	-0.00285356	0.00166767	0.00287222	-0.00000055	0.00000014
+		-5.94958124	-0.00285141	0.00166666	0.00287005	-0.00000055	0.00000014
+		-5.95062373	-0.00284926	0.00166564	0.00286787	-0.00000055	0.00000014
+		-5.95166312	-0.00284711	0.00166462	0.00286570	-0.00000055	0.00000014
+		-5.95269941	-0.00284497	0.00166360	0.00286353	-0.00000055	0.00000014
+		-5.95373262	-0.00284283	0.00166258	0.00286136	-0.00000056	0.00000014
+		-5.95476275	-0.00284069	0.00166156	0.00285919	-0.00000056	0.00000014
+		-5.95578980	-0.00283855	0.00166055	0.00285703	-0.00000056	0.00000014
+		-5.95681380	-0.00283642	0.00165953	0.00285487	-0.00000056	0.00000014
+		-5.95783474	-0.00283429	0.00165852	0.00285271	-0.00000057	0.00000014
+		-5.95885262	-0.00283216	0.00165750	0.00285056	-0.00000057	0.00000014
+		-5.95986747	-0.00283003	0.00165648	0.00284840	-0.00000057	0.00000013
+		-5.96087929	-0.00282791	0.00165547	0.00284625	-0.00000057	0.00000013
+		-5.96188808	-0.00282578	0.00165446	0.00284410	-0.00000057	0.00000013
+		-5.96289385	-0.00282366	0.00165344	0.00284196	-0.00000058	0.00000013
+		-5.96389662	-0.00282154	0.00165243	0.00283981	-0.00000058	0.00000013
+		-5.96489638	-0.00281943	0.00165142	0.00283767	-0.00000058	0.00000013
+		-5.96589315	-0.00281732	0.00165040	0.00283553	-0.00000058	0.00000013
+		-5.96688693	-0.00281520	0.00164939	0.00283339	-0.00000058	0.00000013
+		-5.96787774	-0.00281310	0.00164838	0.00283126	-0.00000059	0.00000013
+		-5.96886557	-0.00281099	0.00164737	0.00282913	-0.00000059	0.00000013
+		-5.96985044	-0.00280888	0.00164636	0.00282700	-0.00000059	0.00000013
+		-5.97083235	-0.00280678	0.00164535	0.00282487	-0.00000059	0.00000013
+		-5.97181132	-0.00280468	0.00164434	0.00282274	-0.00000060	0.00000013
+		-5.97278734	-0.00280258	0.00164333	0.00282062	-0.00000060	0.00000013
+		-5.97376044	-0.00280049	0.00164232	0.00281850	-0.00000060	0.00000013
+		-5.97473060	-0.00279840	0.00164131	0.00281638	-0.00000060	0.00000013
+		-5.97569785	-0.00279631	0.00164031	0.00281427	-0.00000060	0.00000012
+		-5.97666219	-0.00279422	0.00163930	0.00281215	-0.00000061	0.00000012
+		-5.97762362	-0.00279213	0.00163829	0.00281004	-0.00000061	0.00000012
+		-5.97858216	-0.00279005	0.00163729	0.00280793	-0.00000061	0.00000012
+		-5.97953782	-0.00278796	0.00163628	0.00280583	-0.00000061	0.00000012
+		-5.98049059	-0.00278589	0.00163527	0.00280372	-0.00000061	0.00000012
+		-5.98144049	-0.00278381	0.00163427	0.00280162	-0.00000062	0.00000012
+		-5.98238752	-0.00278173	0.00163326	0.00279952	-0.00000062	0.00000012
+		-5.98333170	-0.00277966	0.00163226	0.00279742	-0.00000062	0.00000012
+		-5.98427302	-0.00277759	0.00163126	0.00279533	-0.00000062	0.00000012
+		-5.98521150	-0.00277552	0.00163025	0.00279324	-0.00000062	0.00000012
+		-5.98614715	-0.00277346	0.00162925	0.00279115	-0.00000063	0.00000012
+		-5.98707997	-0.00277139	0.00162825	0.00278906	-0.00000063	0.00000012
+		-5.98800996	-0.00276933	0.00162725	0.00278697	-0.00000063	0.00000012
+		-5.98893715	-0.00276727	0.00162625	0.00278489	-0.00000063	0.00000012
+		-5.98986153	-0.00276521	0.00162525	0.00278281	-0.00000063	0.00000012
+		-5.99078310	-0.00276316	0.00162425	0.00278073	-0.00000064	0.00000012
+		-5.99170189	-0.00276111	0.00162325	0.00277865	-0.00000064	0.00000012
+		-5.99261789	-0.00275906	0.00162225	0.00277658	-0.00000064	0.00000011
+		-5.99353112	-0.00275701	0.00162125	0.00277451	-0.00000064	0.00000011
+		-5.99444158	-0.00275496	0.00162025	0.00277244	-0.00000064	0.00000011
+		-5.99534927	-0.00275292	0.00161925	0.00277037	-0.00000065	0.00000011
+		-5.99625421	-0.00275088	0.00161826	0.00276831	-0.00000065	0.00000011
+		-5.99715640	-0.00274884	0.00161726	0.00276624	-0.00000065	0.00000011
+		-5.99805585	-0.00274680	0.00161626	0.00276418	-0.00000065	0.00000011
+		-5.99895257	-0.00274476	0.00161527	0.00276213	-0.00000065	0.00000011
+		-5.99984656	-0.00274273	0.00161427	0.00276007	-0.00000066	0.00000011
+		-6.00073784	-0.00274070	0.00161328	0.00275802	-0.00000066	0.00000011
+		-6.00162640	-0.00273867	0.00161228	0.00275597	-0.00000066	0.00000011
+		-6.00251225	-0.00273665	0.00161129	0.00275392	-0.00000066	0.00000011
+		-6.00339541	-0.00273462	0.00161030	0.00275187	-0.00000066	0.00000011
+		-6.00427588	-0.00273260	0.00160931	0.00274983	-0.00000066	0.00000011
+		-6.00515367	-0.00273058	0.00160831	0.00274778	-0.00000067	0.00000011
+		-6.00602878	-0.00272856	0.00160732	0.00274574	-0.00000067	0.00000011
+		-6.00690122	-0.00272655	0.00160633	0.00274371	-0.00000067	0.00000011
+		-6.00777100	-0.00272454	0.00160534	0.00274167	-0.00000067	0.00000011
+		-6.00863812	-0.00272252	0.00160435	0.00273964	-0.00000067	0.00000011
+		-6.00950260	-0.00272052	0.00160336	0.00273761	-0.00000068	0.00000010
+		-6.01036444	-0.00271851	0.00160237	0.00273558	-0.00000068	0.00000010
+		-6.01122364	-0.00271651	0.00160138	0.00273355	-0.00000068	0.00000010
+		-6.01208022	-0.00271450	0.00160039	0.00273153	-0.00000068	0.00000010
+		-6.01293417	-0.00271250	0.00159941	0.00272951	-0.00000068	0.00000010
+		-6.01378552	-0.00271051	0.00159842	0.00272749	-0.00000068	0.00000010
+		-6.01463426	-0.00270851	0.00159743	0.00272547	-0.00000069	0.00000010
+		-6.01548040	-0.00270652	0.00159645	0.00272346	-0.00000069	0.00000010
+		-6.01632394	-0.00270453	0.00159546	0.00272144	-0.00000069	0.00000010
+		-6.01716491	-0.00270254	0.00159448	0.00271943	-0.00000069	0.00000010
+		-6.01800329	-0.00270055	0.00159349	0.00271742	-0.00000069	0.00000010
+		-6.01883911	-0.00269856	0.00159251	0.00271542	-0.00000070	0.00000010
+		-6.01967236	-0.00269658	0.00159153	0.00271341	-0.00000070	0.00000010
+		-6.02050306	-0.00269460	0.00159054	0.00271141	-0.00000070	0.00000010
+		-6.02133120	-0.00269262	0.00158956	0.00270941	-0.00000070	0.00000010
+		-6.02215680	-0.00269065	0.00158858	0.00270741	-0.00000070	0.00000010
+		-6.02297987	-0.00268867	0.00158760	0.00270542	-0.00000070	0.00000010
+		-6.02380040	-0.00268670	0.00158662	0.00270343	-0.00000071	0.00000010
+		-6.02461841	-0.00268473	0.00158564	0.00270144	-0.00000071	0.00000010
+		-6.02543391	-0.00268276	0.00158466	0.00269945	-0.00000071	0.00000010
+		-6.02624690	-0.00268080	0.00158368	0.00269746	-0.00000071	0.00000010
+		-6.02705738	-0.00267883	0.00158270	0.00269548	-0.00000071	0.00000009
+		-6.02786537	-0.00267687	0.00158172	0.00269350	-0.00000071	0.00000009
+		-6.02867087	-0.00267491	0.00158074	0.00269152	-0.00000072	0.00000009
+		-6.02947389	-0.00267296	0.00157977	0.00268954	-0.00000072	0.00000009
+		-6.03027443	-0.00267100	0.00157879	0.00268756	-0.00000072	0.00000009
+		-6.03107251	-0.00266905	0.00157781	0.00268559	-0.00000072	0.00000009
+		-6.03186812	-0.00266710	0.00157684	0.00268362	-0.00000072	0.00000009
+		-6.03266127	-0.00266515	0.00157586	0.00268165	-0.00000072	0.00000009
+		-6.03345198	-0.00266320	0.00157489	0.00267968	-0.00000073	0.00000009
+		-6.03424025	-0.00266126	0.00157391	0.00267772	-0.00000073	0.00000009
+		-6.03502608	-0.00265932	0.00157294	0.00267576	-0.00000073	0.00000009
+		-6.03580948	-0.00265738	0.00157197	0.00267380	-0.00000073	0.00000009
+		-6.03659046	-0.00265544	0.00157100	0.00267184	-0.00000073	0.00000009
+		-6.03736903	-0.00265350	0.00157002	0.00266988	-0.00000073	0.00000009
+		-6.03814518	-0.00265157	0.00156905	0.00266793	-0.00000074	0.00000009
+		-6.03891894	-0.00264964	0.00156808	0.00266598	-0.00000074	0.00000009
+		-6.03969029	-0.00264771	0.00156711	0.00266403	-0.00000074	0.00000009
+		-6.04045926	-0.00264578	0.00156614	0.00266208	-0.00000074	0.00000009
+		-6.04122585	-0.00264386	0.00156517	0.00266014	-0.00000074	0.00000009
+		-6.04199006	-0.00264193	0.00156421	0.00265819	-0.00000074	0.00000009
+		-6.04275190	-0.00264001	0.00156324	0.00265625	-0.00000075	0.00000009
+		-6.04351138	-0.00263809	0.00156227	0.00265431	-0.00000075	0.00000009
+		-6.04426850	-0.00263618	0.00156130	0.00265238	-0.00000075	0.00000009
+		-6.04502327	-0.00263426	0.00156034	0.00265044	-0.00000075	0.00000008
+		-6.04577570	-0.00263235	0.00155937	0.00264851	-0.00000075	0.00000008
+		-6.04652579	-0.00263044	0.00155841	0.00264658	-0.00000075	0.00000008
+		-6.04727354	-0.00262853	0.00155744	0.00264465	-0.00000075	0.00000008
+		-6.04801898	-0.00262662	0.00155648	0.00264273	-0.00000076	0.00000008
+		-6.04876210	-0.00262472	0.00155552	0.00264080	-0.00000076	0.00000008
+		-6.04950290	-0.00262282	0.00155455	0.00263888	-0.00000076	0.00000008
+		-6.05024140	-0.00262092	0.00155359	0.00263696	-0.00000076	0.00000008
+		-6.05097760	-0.00261902	0.00155263	0.00263505	-0.00000076	0.00000008
+		-6.05171151	-0.00261712	0.00155167	0.00263313	-0.00000076	0.00000008
+		-6.05244313	-0.00261523	0.00155071	0.00263122	-0.00000077	0.00000008
+		-6.05317248	-0.00261334	0.00154975	0.00262931	-0.00000077	0.00000008
+		-6.05389955	-0.00261145	0.00154879	0.00262740	-0.00000077	0.00000008
+		-6.05462435	-0.00260956	0.00154783	0.00262549	-0.00000077	0.00000008
+		-6.05534689	-0.00260767	0.00154687	0.00262359	-0.00000077	0.00000008
+		-6.05606718	-0.00260579	0.00154591	0.00262169	-0.00000077	0.00000008
+		-6.05678521	-0.00260391	0.00154495	0.00261979	-0.00000077	0.00000008
+		-6.05750101	-0.00260203	0.00154400	0.00261789	-0.00000078	0.00000008
+		-6.05821457	-0.00260015	0.00154304	0.00261599	-0.00000078	0.00000008
+		-6.05892590	-0.00259827	0.00154209	0.00261410	-0.00000078	0.00000008
+		-6.05963501	-0.00259640	0.00154113	0.00261221	-0.00000078	0.00000008
+		-6.06034190	-0.00259453	0.00154018	0.00261032	-0.00000078	0.00000008
+		-6.06104657	-0.00259266	0.00153922	0.00260843	-0.00000078	0.00000008
+		-6.06174905	-0.00259079	0.00153827	0.00260654	-0.00000078	0.00000008
+		-6.06244932	-0.00258893	0.00153732	0.00260466	-0.00000079	0.00000008
+		-6.06314740	-0.00258706	0.00153637	0.00260278	-0.00000079	0.00000008
+		-6.06384330	-0.00258520	0.00153541	0.00260090	-0.00000079	0.00000008
+		-6.06453701	-0.00258334	0.00153446	0.00259902	-0.00000079	0.00000007
+		-6.06522855	-0.00258148	0.00153351	0.00259715	-0.00000079	0.00000007
+		-6.06591793	-0.00257963	0.00153256	0.00259527	-0.00000079	0.00000007
+		-6.06660514	-0.00257778	0.00153161	0.00259340	-0.00000079	0.00000007
+		-6.06729019	-0.00257592	0.00153067	0.00259153	-0.00000080	0.00000007
+		-6.06797309	-0.00257408	0.00152972	0.00258967	-0.00000080	0.00000007
+		-6.06865385	-0.00257223	0.00152877	0.00258780	-0.00000080	0.00000007
+		-6.06933248	-0.00257038	0.00152782	0.00258594	-0.00000080	0.00000007
+		-6.07000896	-0.00256854	0.00152688	0.00258408	-0.00000080	0.00000007
+		-6.07068333	-0.00256670	0.00152593	0.00258222	-0.00000080	0.00000007
+		-6.07135557	-0.00256486	0.00152499	0.00258036	-0.00000080	0.00000007
+		-6.07202570	-0.00256302	0.00152404	0.00257851	-0.00000081	0.00000007
+		-6.07269372	-0.00256119	0.00152310	0.00257666	-0.00000081	0.00000007
+		-6.07335964	-0.00255935	0.00152215	0.00257480	-0.00000081	0.00000007
+		-6.07402346	-0.00255752	0.00152121	0.00257296	-0.00000081	0.00000007
+		-6.07468520	-0.00255569	0.00152027	0.00257111	-0.00000081	0.00000007
+		-6.07534484	-0.00255387	0.00151933	0.00256927	-0.00000081	0.00000007
+		-6.07600241	-0.00255204	0.00151839	0.00256742	-0.00000081	0.00000007
+		-6.07665791	-0.00255022	0.00151745	0.00256558	-0.00000082	0.00000007
+		-6.07731134	-0.00254840	0.00151651	0.00256374	-0.00000082	0.00000007
+		-6.07796271	-0.00254658	0.00151557	0.00256191	-0.00000082	0.00000007
+		-6.07861202	-0.00254476	0.00151463	0.00256007	-0.00000082	0.00000007
+		-6.07925928	-0.00254294	0.00151369	0.00255824	-0.00000082	0.00000007
+		-6.07990450	-0.00254113	0.00151275	0.00255641	-0.00000082	0.00000007
+		-6.08054769	-0.00253932	0.00151182	0.00255458	-0.00000082	0.00000007
+		-6.08118884	-0.00253751	0.00151088	0.00255276	-0.00000082	0.00000007
+		-6.08182796	-0.00253570	0.00150994	0.00255093	-0.00000083	0.00000007
+		-6.08246507	-0.00253390	0.00150901	0.00254911	-0.00000083	0.00000007
+		-6.08310016	-0.00253210	0.00150807	0.00254729	-0.00000083	0.00000007
+		-6.08373324	-0.00253029	0.00150714	0.00254547	-0.00000083	0.00000007
+		-6.08436431	-0.00252849	0.00150621	0.00254366	-0.00000083	0.00000006
+		-6.08499339	-0.00252670	0.00150527	0.00254184	-0.00000083	0.00000006
+		-6.08562048	-0.00252490	0.00150434	0.00254003	-0.00000083	0.00000006
+		-6.08624558	-0.00252311	0.00150341	0.00253822	-0.00000084	0.00000006
+		-6.08686870	-0.00252132	0.00150248	0.00253641	-0.00000084	0.00000006
+		-6.08748985	-0.00251953	0.00150155	0.00253461	-0.00000084	0.00000006
+		-6.08810902	-0.00251774	0.00150062	0.00253280	-0.00000084	0.00000006
+		-6.08872624	-0.00251595	0.00149969	0.00253100	-0.00000084	0.00000006
+		-6.08934149	-0.00251417	0.00149876	0.00252920	-0.00000084	0.00000006
+		-6.08995479	-0.00251239	0.00149784	0.00252740	-0.00000084	0.00000006
+		-6.09056615	-0.00251061	0.00149691	0.00252561	-0.00000084	0.00000006
+		-6.09117556	-0.00250883	0.00149598	0.00252381	-0.00000085	0.00000006
+		-6.09178304	-0.00250705	0.00149506	0.00252202	-0.00000085	0.00000006
+		-6.09238859	-0.00250528	0.00149413	0.00252023	-0.00000085	0.00000006
+		-6.09299221	-0.00250351	0.00149320	0.00251844	-0.00000085	0.00000006
+		-6.09359392	-0.00250174	0.00149228	0.00251666	-0.00000085	0.00000006
+		-6.09419371	-0.00249997	0.00149136	0.00251487	-0.00000085	0.00000006
+		-6.09479159	-0.00249820	0.00149043	0.00251309	-0.00000085	0.00000006
+		-6.09538757	-0.00249644	0.00148951	0.00251131	-0.00000085	0.00000006
+		-6.09598165	-0.00249468	0.00148859	0.00250953	-0.00000086	0.00000006
+		-6.09657385	-0.00249292	0.00148767	0.00250776	-0.00000086	0.00000006
+		-6.09716415	-0.00249116	0.00148675	0.00250598	-0.00000086	0.00000006
+		-6.09775257	-0.00248940	0.00148583	0.00250421	-0.00000086	0.00000006
+		-6.09833912	-0.00248765	0.00148491	0.00250244	-0.00000086	0.00000006
+		-6.09892380	-0.00248589	0.00148399	0.00250067	-0.00000086	0.00000006
+		-6.09950662	-0.00248414	0.00148307	0.00249891	-0.00000086	0.00000006
+		-6.10008757	-0.00248239	0.00148215	0.00249714	-0.00000086	0.00000006
+		-6.10066667	-0.00248065	0.00148124	0.00249538	-0.00000086	0.00000006
+		-6.10124393	-0.00247890	0.00148032	0.00249362	-0.00000087	0.00000006
+		-6.10181934	-0.00247716	0.00147941	0.00249186	-0.00000087	0.00000006
+		-6.10239291	-0.00247542	0.00147849	0.00249010	-0.00000087	0.00000006
+		-6.10296465	-0.00247368	0.00147758	0.00248835	-0.00000087	0.00000006
+		-6.10353456	-0.00247194	0.00147666	0.00248660	-0.00000087	0.00000006
+		-6.10410265	-0.00247020	0.00147575	0.00248484	-0.00000087	0.00000006
+		-6.10466892	-0.00246847	0.00147484	0.00248310	-0.00000087	0.00000006
+		-6.10523338	-0.00246674	0.00147393	0.00248135	-0.00000087	0.00000005
+		-6.10579604	-0.00246501	0.00147301	0.00247960	-0.00000088	0.00000005
+		-6.10635689	-0.00246328	0.00147210	0.00247786	-0.00000088	0.00000005
+		-6.10691595	-0.00246155	0.00147119	0.00247612	-0.00000088	0.00000005
+		-6.10747322	-0.00245983	0.00147028	0.00247438	-0.00000088	0.00000005
+		-6.10802871	-0.00245811	0.00146937	0.00247264	-0.00000088	0.00000005
+		-6.10858241	-0.00245639	0.00146847	0.00247091	-0.00000088	0.00000005
+		-6.10913434	-0.00245467	0.00146756	0.00246917	-0.00000088	0.00000005
+		-6.10968450	-0.00245295	0.00146665	0.00246744	-0.00000088	0.00000005
+		-6.11023289	-0.00245123	0.00146575	0.00246571	-0.00000088	0.00000005
+		-6.11077953	-0.00244952	0.00146484	0.00246398	-0.00000089	0.00000005
+		-6.11132441	-0.00244781	0.00146393	0.00246226	-0.00000089	0.00000005
+		-6.11186754	-0.00244610	0.00146303	0.00246053	-0.00000089	0.00000005
+		-6.11240893	-0.00244439	0.00146213	0.00245881	-0.00000089	0.00000005
+		-6.11294858	-0.00244269	0.00146122	0.00245709	-0.00000089	0.00000005
+		-6.11348649	-0.00244098	0.00146032	0.00245537	-0.00000089	0.00000005
+		-6.11402268	-0.00243928	0.00145942	0.00245366	-0.00000089	0.00000005
+		-6.11455714	-0.00243758	0.00145852	0.00245194	-0.00000089	0.00000005
+		-6.11508989	-0.00243588	0.00145762	0.00245023	-0.00000089	0.00000005
+		-6.11562092	-0.00243419	0.00145672	0.00244852	-0.00000090	0.00000005
+		-6.11615024	-0.00243249	0.00145582	0.00244681	-0.00000090	0.00000005
+		-6.11667786	-0.00243080	0.00145492	0.00244510	-0.00000090	0.00000005
+		-6.11720378	-0.00242911	0.00145402	0.00244340	-0.00000090	0.00000005
+		-6.11772800	-0.00242742	0.00145312	0.00244170	-0.00000090	0.00000005
+		-6.11825054	-0.00242574	0.00145223	0.00244000	-0.00000090	0.00000005
+		-6.11877140	-0.00242405	0.00145133	0.00243830	-0.00000090	0.00000005
+		-6.11929057	-0.00242237	0.00145043	0.00243660	-0.00000090	0.00000005
+		-6.11980807	-0.00242069	0.00144954	0.00243490	-0.00000090	0.00000005
+		-6.12032390	-0.00241901	0.00144864	0.00243321	-0.00000090	0.00000005
+		-6.12083807	-0.00241733	0.00144775	0.00243152	-0.00000091	0.00000005
+		-6.12135058	-0.00241565	0.00144686	0.00242983	-0.00000091	0.00000005
+		-6.12186144	-0.00241398	0.00144597	0.00242814	-0.00000091	0.00000005
+		-6.12237064	-0.00241231	0.00144507	0.00242645	-0.00000091	0.00000005
+		-6.12287820	-0.00241064	0.00144418	0.00242477	-0.00000091	0.00000005
+		-6.12338412	-0.00240897	0.00144329	0.00242309	-0.00000091	0.00000005
+		-6.12388841	-0.00240730	0.00144240	0.00242141	-0.00000091	0.00000005
+		-6.12439107	-0.00240563	0.00144151	0.00241973	-0.00000091	0.00000005
+		-6.12489210	-0.00240397	0.00144062	0.00241805	-0.00000091	0.00000005
+		-6.12539151	-0.00240231	0.00143974	0.00241637	-0.00000092	0.00000005
+		-6.12588931	-0.00240065	0.00143885	0.00241470	-0.00000092	0.00000005
+		-6.12638549	-0.00239899	0.00143796	0.00241303	-0.00000092	0.00000005
+		-6.12688007	-0.00239734	0.00143708	0.00241136	-0.00000092	0.00000005
+		-6.12737305	-0.00239568	0.00143619	0.00240969	-0.00000092	0.00000005
+		-6.12786443	-0.00239403	0.00143531	0.00240803	-0.00000092	0.00000004
+		-6.12835422	-0.00239238	0.00143442	0.00240636	-0.00000092	0.00000004
+		-6.12884242	-0.00239073	0.00143354	0.00240470	-0.00000092	0.00000004
+		-6.12932904	-0.00238908	0.00143266	0.00240304	-0.00000092	0.00000004
+		-6.12981408	-0.00238744	0.00143177	0.00240138	-0.00000092	0.00000004
+		-6.13029755	-0.00238580	0.00143089	0.00239972	-0.00000093	0.00000004
+		-6.13077945	-0.00238416	0.00143001	0.00239807	-0.00000093	0.00000004
+		-6.13125979	-0.00238252	0.00142913	0.00239642	-0.00000093	0.00000004
+		-6.13173857	-0.00238088	0.00142825	0.00239477	-0.00000093	0.00000004
+		-6.13221579	-0.00237924	0.00142737	0.00239312	-0.00000093	0.00000004
+		-6.13269147	-0.00237761	0.00142649	0.00239147	-0.00000093	0.00000004
+		-6.13316560	-0.00237598	0.00142562	0.00238982	-0.00000093	0.00000004
+		-6.13363819	-0.00237434	0.00142474	0.00238818	-0.00000093	0.00000004
+		-6.13410924	-0.00237272	0.00142386	0.00238654	-0.00000093	0.00000004
+		-6.13457876	-0.00237109	0.00142299	0.00238490	-0.00000093	0.00000004
+		-6.13504676	-0.00236946	0.00142211	0.00238326	-0.00000093	0.00000004
+		-6.13551323	-0.00236784	0.00142124	0.00238162	-0.00000094	0.00000004
+		-6.13597818	-0.00236622	0.00142036	0.00237999	-0.00000094	0.00000004
+		-6.13644163	-0.00236460	0.00141949	0.00237835	-0.00000094	0.00000004
+		-6.13690356	-0.00236298	0.00141862	0.00237672	-0.00000094	0.00000004
+		-6.13736399	-0.00236136	0.00141774	0.00237509	-0.00000094	0.00000004
+		-6.13782292	-0.00235975	0.00141687	0.00237347	-0.00000094	0.00000004
+		-6.13828035	-0.00235814	0.00141600	0.00237184	-0.00000094	0.00000004
+		-6.13873630	-0.00235652	0.00141513	0.00237022	-0.00000094	0.00000004
+		-6.13919076	-0.00235492	0.00141426	0.00236859	-0.00000094	0.00000004
+		-6.13964373	-0.00235331	0.00141339	0.00236697	-0.00000094	0.00000004
+		-6.14009523	-0.00235170	0.00141253	0.00236535	-0.00000094	0.00000004
+		-6.14054526	-0.00235010	0.00141166	0.00236374	-0.00000095	0.00000004
+		-6.14099381	-0.00234850	0.00141079	0.00236212	-0.00000095	0.00000004
+		-6.14144091	-0.00234689	0.00140993	0.00236051	-0.00000095	0.00000004
+		-6.14188654	-0.00234530	0.00140906	0.00235890	-0.00000095	0.00000004
+		-6.14233072	-0.00234370	0.00140820	0.00235729	-0.00000095	0.00000004
+		-6.14277345	-0.00234210	0.00140733	0.00235568	-0.00000095	0.00000004
+		-6.14321473	-0.00234051	0.00140647	0.00235407	-0.00000095	0.00000004
+		-6.14365457	-0.00233892	0.00140561	0.00235247	-0.00000095	0.00000004
+		-6.14409297	-0.00233733	0.00140474	0.00235087	-0.00000095	0.00000004
+		-6.14452994	-0.00233574	0.00140388	0.00234926	-0.00000095	0.00000004
+		-6.14496548	-0.00233415	0.00140302	0.00234767	-0.00000095	0.00000004
+		-6.14539959	-0.00233257	0.00140216	0.00234607	-0.00000096	0.00000004
+		-6.14583228	-0.00233098	0.00140130	0.00234447	-0.00000096	0.00000004
+		-6.14626356	-0.00232940	0.00140044	0.00234288	-0.00000096	0.00000004
+		-6.14669342	-0.00232782	0.00139958	0.00234129	-0.00000096	0.00000004
+		-6.14712188	-0.00232625	0.00139873	0.00233970	-0.00000096	0.00000004
+		-6.14754894	-0.00232467	0.00139787	0.00233811	-0.00000096	0.00000004
+		-6.14797459	-0.00232309	0.00139701	0.00233652	-0.00000096	0.00000004
+		-6.14839885	-0.00232152	0.00139616	0.00233493	-0.00000096	0.00000004
+		-6.14882172	-0.00231995	0.00139530	0.00233335	-0.00000096	0.00000004
+		-6.14924320	-0.00231838	0.00139445	0.00233177	-0.00000096	0.00000004
+		-6.14966330	-0.00231681	0.00139359	0.00233019	-0.00000096	0.00000004
+		-6.15008202	-0.00231525	0.00139274	0.00232861	-0.00000097	0.00000004
+		-6.15049937	-0.00231368	0.00139189	0.00232704	-0.00000097	0.00000004
+		-6.15091535	-0.00231212	0.00139104	0.00232546	-0.00000097	0.00000004
+		-6.15132996	-0.00231056	0.00139018	0.00232389	-0.00000097	0.00000004
+		-6.15174321	-0.00230900	0.00138933	0.00232232	-0.00000097	0.00000003
+		-6.15215510	-0.00230744	0.00138848	0.00232075	-0.00000097	0.00000003
+		-6.15256564	-0.00230589	0.00138763	0.00231918	-0.00000097	0.00000003
+		-6.15297483	-0.00230433	0.00138679	0.00231761	-0.00000097	0.00000003
+		-6.15338268	-0.00230278	0.00138594	0.00231605	-0.00000097	0.00000003
+		-6.15378918	-0.00230123	0.00138509	0.00231449	-0.00000097	0.00000003
+		-6.15419435	-0.00229968	0.00138424	0.00231293	-0.00000097	0.00000003
+		-6.15459818	-0.00229814	0.00138340	0.00231137	-0.00000097	0.00000003
+		-6.15500069	-0.00229659	0.00138255	0.00230981	-0.00000097	0.00000003
+		-6.15540187	-0.00229505	0.00138171	0.00230825	-0.00000098	0.00000003
+		-6.15580173	-0.00229350	0.00138087	0.00230670	-0.00000098	0.00000003
+		-6.15620027	-0.00229196	0.00138002	0.00230515	-0.00000098	0.00000003
+		-6.15659750	-0.00229042	0.00137918	0.00230360	-0.00000098	0.00000003
+		-6.15699342	-0.00228889	0.00137834	0.00230205	-0.00000098	0.00000003
+		-6.15738804	-0.00228735	0.00137750	0.00230050	-0.00000098	0.00000003
+		-6.15778136	-0.00228582	0.00137666	0.00229896	-0.00000098	0.00000003
+		-6.15817338	-0.00228429	0.00137582	0.00229741	-0.00000098	0.00000003
+		-6.15856410	-0.00228276	0.00137498	0.00229587	-0.00000098	0.00000003
+		-6.15895354	-0.00228123	0.00137414	0.00229433	-0.00000098	0.00000003
+		-6.15934170	-0.00227970	0.00137330	0.00229279	-0.00000098	0.00000003
+		-6.15972857	-0.00227818	0.00137246	0.00229125	-0.00000098	0.00000003
+		-6.16011416	-0.00227665	0.00137162	0.00228972	-0.00000099	0.00000003
+		-6.16049848	-0.00227513	0.00137079	0.00228818	-0.00000099	0.00000003
+		-6.16088154	-0.00227361	0.00136995	0.00228665	-0.00000099	0.00000003
+		-6.16126332	-0.00227209	0.00136912	0.00228512	-0.00000099	0.00000003
+		-6.16164385	-0.00227057	0.00136828	0.00228359	-0.00000099	0.00000003
+		-6.16202312	-0.00226906	0.00136745	0.00228207	-0.00000099	0.00000003
+		-6.16240113	-0.00226754	0.00136662	0.00228054	-0.00000099	0.00000003
+		-6.16277790	-0.00226603	0.00136579	0.00227902	-0.00000099	0.00000003
+		-6.16315341	-0.00226452	0.00136495	0.00227750	-0.00000099	0.00000003
+		-6.16352769	-0.00226301	0.00136412	0.00227598	-0.00000099	0.00000003
+		-6.16390073	-0.00226151	0.00136329	0.00227446	-0.00000099	0.00000003
+		-6.16427253	-0.00226000	0.00136246	0.00227294	-0.00000099	0.00000003
+		-6.16464310	-0.00225850	0.00136164	0.00227143	-0.00000099	0.00000003
+		-6.16501245	-0.00225700	0.00136081	0.00226991	-0.00000100	0.00000003
+		-6.16538057	-0.00225549	0.00135998	0.00226840	-0.00000100	0.00000003
+		-6.16574747	-0.00225400	0.00135915	0.00226689	-0.00000100	0.00000003
+		-6.16611316	-0.00225250	0.00135833	0.00226538	-0.00000100	0.00000003
+		-6.16647763	-0.00225100	0.00135750	0.00226388	-0.00000100	0.00000003
+		-6.16684090	-0.00224951	0.00135668	0.00226237	-0.00000100	0.00000003
+		-6.16720296	-0.00224802	0.00135585	0.00226087	-0.00000100	0.00000003
+		-6.16756382	-0.00224653	0.00135503	0.00225936	-0.00000100	0.00000003
+		-6.16792348	-0.00224504	0.00135421	0.00225786	-0.00000100	0.00000003
+		-6.16828195	-0.00224355	0.00135338	0.00225637	-0.00000100	0.00000003
+		-6.16863923	-0.00224206	0.00135256	0.00225487	-0.00000100	0.00000003
+		-6.16899533	-0.00224058	0.00135174	0.00225337	-0.00000100	0.00000003
+		-6.16935024	-0.00223910	0.00135092	0.00225188	-0.00000100	0.00000003
+		-6.16970397	-0.00223762	0.00135010	0.00225039	-0.00000100	0.00000003
+		-6.17005653	-0.00223614	0.00134928	0.00224890	-0.00000101	0.00000003
+		-6.17040791	-0.00223466	0.00134846	0.00224741	-0.00000101	0.00000003
+		-6.17075813	-0.00223318	0.00134765	0.00224592	-0.00000101	0.00000003
+		-6.17110719	-0.00223171	0.00134683	0.00224444	-0.00000101	0.00000003
+		-6.17145508	-0.00223024	0.00134601	0.00224295	-0.00000101	0.00000003
+		-6.17180182	-0.00222876	0.00134520	0.00224147	-0.00000101	0.00000003
+		-6.17214740	-0.00222729	0.00134438	0.00223999	-0.00000101	0.00000003
+		-6.17249183	-0.00222583	0.00134357	0.00223851	-0.00000101	0.00000003
+		-6.17283512	-0.00222436	0.00134275	0.00223703	-0.00000101	0.00000003
+		-6.17317726	-0.00222289	0.00134194	0.00223556	-0.00000101	0.00000003
+		-6.17351827	-0.00222143	0.00134113	0.00223408	-0.00000101	0.00000003
+		-6.17385813	-0.00221997	0.00134032	0.00223261	-0.00000101	0.00000003
+		-6.17419687	-0.00221851	0.00133950	0.00223114	-0.00000101	0.00000003
+		-6.17453448	-0.00221705	0.00133869	0.00222967	-0.00000101	0.00000003
+		-6.17487096	-0.00221559	0.00133788	0.00222820	-0.00000101	0.00000003
+		-6.17520632	-0.00221414	0.00133708	0.00222674	-0.00000102	0.00000003
+		-6.17554056	-0.00221269	0.00133627	0.00222527	-0.00000102	0.00000003
+		-6.17587369	-0.00221123	0.00133546	0.00222381	-0.00000102	0.00000003
+		-6.17620571	-0.00220978	0.00133465	0.00222235	-0.00000102	0.00000003
+		-6.17653662	-0.00220833	0.00133385	0.00222089	-0.00000102	0.00000003
+		-6.17686642	-0.00220689	0.00133304	0.00221943	-0.00000102	0.00000003
+		-6.17719513	-0.00220544	0.00133223	0.00221798	-0.00000102	0.00000003
+		-6.17752273	-0.00220400	0.00133143	0.00221652	-0.00000102	0.00000003
+		-6.17784925	-0.00220255	0.00133063	0.00221507	-0.00000102	0.00000003
+		-6.17817467	-0.00220111	0.00132982	0.00221362	-0.00000102	0.00000002
+		-6.17849900	-0.00219967	0.00132902	0.00221217	-0.00000102	0.00000002
+		-6.17882225	-0.00219823	0.00132822	0.00221072	-0.00000102	0.00000002
+		-6.17914442	-0.00219680	0.00132742	0.00220927	-0.00000102	0.00000002
+		-6.17946552	-0.00219536	0.00132662	0.00220782	-0.00000102	0.00000002
+		-6.17978554	-0.00219393	0.00132582	0.00220638	-0.00000102	0.00000002
+		-6.18010448	-0.00219250	0.00132502	0.00220494	-0.00000103	0.00000002
+		-6.18042237	-0.00219107	0.00132422	0.00220350	-0.00000103	0.00000002
+		-6.18073919	-0.00218964	0.00132342	0.00220206	-0.00000103	0.00000002
+		-6.18105494	-0.00218821	0.00132262	0.00220062	-0.00000103	0.00000002
+		-6.18136964	-0.00218679	0.00132183	0.00219919	-0.00000103	0.00000002
+		-6.18168329	-0.00218536	0.00132103	0.00219775	-0.00000103	0.00000002
+		-6.18199589	-0.00218394	0.00132024	0.00219632	-0.00000103	0.00000002
+		-6.18230744	-0.00218252	0.00131944	0.00219489	-0.00000103	0.00000002
+		-6.18261795	-0.00218110	0.00131865	0.00219346	-0.00000103	0.00000002
+		-6.18292741	-0.00217968	0.00131785	0.00219203	-0.00000103	0.00000002
+		-6.18323584	-0.00217827	0.00131706	0.00219060	-0.00000103	0.00000002
+		-6.18354323	-0.00217685	0.00131627	0.00218918	-0.00000103	0.00000002
+		-6.18384960	-0.00217544	0.00131548	0.00218776	-0.00000103	0.00000002
+		-6.18415493	-0.00217403	0.00131469	0.00218633	-0.00000103	0.00000002
+		-6.18445924	-0.00217262	0.00131390	0.00218491	-0.00000103	0.00000002
+		-6.18476253	-0.00217121	0.00131311	0.00218350	-0.00000103	0.00000002
+		-6.18506481	-0.00216980	0.00131232	0.00218208	-0.00000104	0.00000002
+		-6.18536606	-0.00216840	0.00131153	0.00218066	-0.00000104	0.00000002
+		-6.18566631	-0.00216699	0.00131074	0.00217925	-0.00000104	0.00000002
+		-6.18596555	-0.00216559	0.00130996	0.00217784	-0.00000104	0.00000002
+		-6.18626378	-0.00216419	0.00130917	0.00217643	-0.00000104	0.00000002
+		-6.18656101	-0.00216279	0.00130839	0.00217502	-0.00000104	0.00000002
+		-6.18685724	-0.00216139	0.00130760	0.00217361	-0.00000104	0.00000002
+		-6.18715248	-0.00216000	0.00130682	0.00217220	-0.00000104	0.00000002
+		-6.18744673	-0.00215860	0.00130603	0.00217080	-0.00000104	0.00000002
+		-6.18773998	-0.00215721	0.00130525	0.00216939	-0.00000104	0.00000002
+		-6.18803225	-0.00215582	0.00130447	0.00216799	-0.00000104	0.00000002
+		-6.18832353	-0.00215443	0.00130369	0.00216659	-0.00000104	0.00000002
+		-6.18861384	-0.00215304	0.00130291	0.00216519	-0.00000104	0.00000002
+		-6.18890316	-0.00215165	0.00130213	0.00216380	-0.00000104	0.00000002
+		-6.18919152	-0.00215026	0.00130135	0.00216240	-0.00000104	0.00000002
+		-6.18947890	-0.00214888	0.00130057	0.00216101	-0.00000104	0.00000002
+		-6.18976532	-0.00214750	0.00129979	0.00215961	-0.00000104	0.00000002
+		-6.19005077	-0.00214612	0.00129901	0.00215822	-0.00000105	0.00000002
+		-6.19033526	-0.00214474	0.00129823	0.00215683	-0.00000105	0.00000002
+		-6.19061879	-0.00214336	0.00129746	0.00215545	-0.00000105	0.00000002
+		-6.19090136	-0.00214198	0.00129668	0.00215406	-0.00000105	0.00000002
+		-6.19118298	-0.00214061	0.00129591	0.00215268	-0.00000105	0.00000002
+		-6.19146366	-0.00213923	0.00129513	0.00215129	-0.00000105	0.00000002
+		-6.19174338	-0.00213786	0.00129436	0.00214991	-0.00000105	0.00000002
+		-6.19202217	-0.00213649	0.00129359	0.00214853	-0.00000105	0.00000002
+		-6.19230001	-0.00213512	0.00129281	0.00214715	-0.00000105	0.00000002
+		-6.19257691	-0.00213375	0.00129204	0.00214577	-0.00000105	0.00000002
+		-6.19285288	-0.00213239	0.00129127	0.00214440	-0.00000105	0.00000002
+		-6.19312792	-0.00213102	0.00129050	0.00214302	-0.00000105	0.00000002
+		-6.19340203	-0.00212966	0.00128973	0.00214165	-0.00000105	0.00000002
+		-6.19367521	-0.00212830	0.00128896	0.00214028	-0.00000105	0.00000002
+		-6.19394748	-0.00212694	0.00128819	0.00213891	-0.00000105	0.00000002
+		-6.19421882	-0.00212558	0.00128743	0.00213754	-0.00000105	0.00000002
+		-6.19448924	-0.00212422	0.00128666	0.00213617	-0.00000105	0.00000002
+		-6.19475875	-0.00212286	0.00128589	0.00213481	-0.00000105	0.00000002
+		-6.19502735	-0.00212151	0.00128513	0.00213344	-0.00000105	0.00000002
+		-6.19529504	-0.00212016	0.00128436	0.00213208	-0.00000106	0.00000002
+		-6.19556183	-0.00211880	0.00128360	0.00213072	-0.00000106	0.00000002
+		-6.19582771	-0.00211745	0.00128283	0.00212936	-0.00000106	0.00000002
+		-6.19609270	-0.00211611	0.00128207	0.00212800	-0.00000106	0.00000002
+		-6.19635678	-0.00211476	0.00128131	0.00212665	-0.00000106	0.00000002
+		-6.19661998	-0.00211341	0.00128054	0.00212529	-0.00000106	0.00000002
+		-6.19688228	-0.00211207	0.00127978	0.00212394	-0.00000106	0.00000002
+		-6.19714369	-0.00211073	0.00127902	0.00212259	-0.00000106	0.00000002
+		-6.19740422	-0.00210938	0.00127826	0.00212123	-0.00000106	0.00000002
+		-6.19766387	-0.00210804	0.00127750	0.00211989	-0.00000106	0.00000002
+		-6.19792264	-0.00210671	0.00127674	0.00211854	-0.00000106	0.00000002
+		-6.19818053	-0.00210537	0.00127599	0.00211719	-0.00000106	0.00000002
+		-6.19843754	-0.00210403	0.00127523	0.00211585	-0.00000106	0.00000002
+		-6.19869369	-0.00210270	0.00127447	0.00211450	-0.00000106	0.00000002
+		-6.19894896	-0.00210137	0.00127372	0.00211316	-0.00000106	0.00000002
+		-6.19920337	-0.00210004	0.00127296	0.00211182	-0.00000106	0.00000002
+		-6.19945692	-0.00209871	0.00127221	0.00211048	-0.00000106	0.00000002
+		-6.19970961	-0.00209738	0.00127145	0.00210914	-0.00000106	0.00000002
+		-6.19996144	-0.00209605	0.00127070	0.00210781	-0.00000106	0.00000002
+		-6.20021242	-0.00209473	0.00126995	0.00210647	-0.00000107	0.00000002
+		-6.20046254	-0.00209340	0.00126919	0.00210514	-0.00000107	0.00000002
+		-6.20071181	-0.00209208	0.00126844	0.00210381	-0.00000107	0.00000002
+		-6.20096024	-0.00209076	0.00126769	0.00210248	-0.00000107	0.00000002
+		-6.20120782	-0.00208944	0.00126694	0.00210115	-0.00000107	0.00000002
+		-6.20145457	-0.00208812	0.00126619	0.00209982	-0.00000107	0.00000002
+		-6.20170047	-0.00208680	0.00126544	0.00209850	-0.00000107	0.00000002
+		-6.20194554	-0.00208549	0.00126469	0.00209717	-0.00000107	0.00000002
+		-6.20218978	-0.00208417	0.00126395	0.00209585	-0.00000107	0.00000002
+		-6.20243318	-0.00208286	0.00126320	0.00209453	-0.00000107	0.00000002
+		-6.20267576	-0.00208155	0.00126245	0.00209321	-0.00000107	0.00000002
+		-6.20291751	-0.00208024	0.00126171	0.00209189	-0.00000107	0.00000002
+		-6.20315844	-0.00207893	0.00126096	0.00209057	-0.00000107	0.00000002
+		-6.20339855	-0.00207762	0.00126022	0.00208925	-0.00000107	0.00000002
+		-6.20363785	-0.00207632	0.00125947	0.00208794	-0.00000107	0.00000002
+		-6.20387633	-0.00207501	0.00125873	0.00208663	-0.00000107	0.00000002
+		-6.20411399	-0.00207371	0.00125799	0.00208532	-0.00000107	0.00000002
+		-6.20435085	-0.00207241	0.00125725	0.00208400	-0.00000107	0.00000002
+		-6.20458690	-0.00207111	0.00125650	0.00208270	-0.00000107	0.00000002
+		-6.20482215	-0.00206981	0.00125576	0.00208139	-0.00000107	0.00000002
+		-6.20505660	-0.00206852	0.00125502	0.00208008	-0.00000107	0.00000002
+		-6.20529024	-0.00206722	0.00125428	0.00207878	-0.00000108	0.00000002
+		-6.20552310	-0.00206593	0.00125355	0.00207748	-0.00000108	0.00000002
+		-6.20575515	-0.00206463	0.00125281	0.00207617	-0.00000108	0.00000002
+		-6.20598642	-0.00206334	0.00125207	0.00207487	-0.00000108	0.00000002
+		-6.20621690	-0.00206205	0.00125133	0.00207357	-0.00000108	0.00000002
+		-6.20644659	-0.00206076	0.00125060	0.00207228	-0.00000108	0.00000002
+		-6.20667550	-0.00205947	0.00124986	0.00207098	-0.00000108	0.00000002
+		-6.20690362	-0.00205819	0.00124913	0.00206969	-0.00000108	0.00000002
+		-6.20713097	-0.00205690	0.00124839	0.00206839	-0.00000108	0.00000002
+		-6.20735754	-0.00205562	0.00124766	0.00206710	-0.00000108	0.00000002
+		-6.20758334	-0.00205434	0.00124693	0.00206581	-0.00000108	0.00000002
+		-6.20780837	-0.00205306	0.00124619	0.00206452	-0.00000108	0.00000001
+		-6.20803263	-0.00205178	0.00124546	0.00206323	-0.00000108	0.00000001
+		-6.20825612	-0.00205050	0.00124473	0.00206195	-0.00000108	0.00000001
+		-6.20847885	-0.00204923	0.00124400	0.00206066	-0.00000108	0.00000001
+		-6.20870082	-0.00204795	0.00124327	0.00205938	-0.00000108	0.00000001
+		-6.20892203	-0.00204668	0.00124254	0.00205810	-0.00000108	0.00000001
+		-6.20914249	-0.00204540	0.00124181	0.00205681	-0.00000108	0.00000001
+		-6.20936219	-0.00204413	0.00124109	0.00205554	-0.00000108	0.00000001
+		-6.20958114	-0.00204286	0.00124036	0.00205426	-0.00000108	0.00000001
+		-6.20979934	-0.00204160	0.00123963	0.00205298	-0.00000108	0.00000001
+		-6.21001679	-0.00204033	0.00123891	0.00205171	-0.00000108	0.00000001
+		-6.21023350	-0.00203906	0.00123818	0.00205043	-0.00000108	0.00000001
+		-6.21044947	-0.00203780	0.00123746	0.00204916	-0.00000109	0.00000001
+		-6.21066470	-0.00203654	0.00123673	0.00204789	-0.00000109	0.00000001
+		-6.21087920	-0.00203528	0.00123601	0.00204662	-0.00000109	0.00000001
+		-6.21109295	-0.00203402	0.00123529	0.00204535	-0.00000109	0.00000001
+		-6.21130598	-0.00203276	0.00123456	0.00204408	-0.00000109	0.00000001
+		-6.21151828	-0.00203150	0.00123384	0.00204282	-0.00000109	0.00000001
+		-6.21172985	-0.00203024	0.00123312	0.00204155	-0.00000109	0.00000001
+		-6.21194069	-0.00202899	0.00123240	0.00204029	-0.00000109	0.00000001
+		-6.21215082	-0.00202774	0.00123168	0.00203903	-0.00000109	0.00000001
+		-6.21236022	-0.00202648	0.00123096	0.00203777	-0.00000109	0.00000001
+		-6.21256890	-0.00202523	0.00123025	0.00203651	-0.00000109	0.00000001
+		-6.21277687	-0.00202398	0.00122953	0.00203525	-0.00000109	0.00000001
+		-6.21298413	-0.00202274	0.00122881	0.00203399	-0.00000109	0.00000001
+		-6.21319067	-0.00202149	0.00122809	0.00203274	-0.00000109	0.00000001
+		-6.21339651	-0.00202025	0.00122738	0.00203149	-0.00000109	0.00000001
+		-6.21360164	-0.00201900	0.00122666	0.00203023	-0.00000109	0.00000001
+		-6.21380607	-0.00201776	0.00122595	0.00202898	-0.00000109	0.00000001
+		-6.21400979	-0.00201652	0.00122523	0.00202773	-0.00000109	0.00000001
+		-6.21421282	-0.00201528	0.00122452	0.00202649	-0.00000109	0.00000001
+		-6.21441515	-0.00201404	0.00122381	0.00202524	-0.00000109	0.00000001
+		-6.21461678	-0.00201280	0.00122310	0.00202399	-0.00000109	0.00000001
+		-6.21481773	-0.00201157	0.00122239	0.00202275	-0.00000109	0.00000001
+		-6.21501798	-0.00201033	0.00122167	0.00202151	-0.00000109	0.00000001
+		-6.21521754	-0.00200910	0.00122096	0.00202026	-0.00000109	0.00000001
+		-6.21541642	-0.00200787	0.00122026	0.00201902	-0.00000110	0.00000001
+		-6.21561461	-0.00200664	0.00121955	0.00201779	-0.00000110	0.00000001
+		-6.21581213	-0.00200541	0.00121884	0.00201655	-0.00000110	0.00000001
+		-6.21600896	-0.00200418	0.00121813	0.00201531	-0.00000110	0.00000001
+		-6.21620512	-0.00200295	0.00121742	0.00201408	-0.00000110	0.00000001
+		-6.21640060	-0.00200173	0.00121672	0.00201284	-0.00000110	0.00000001
+		-6.21659541	-0.00200050	0.00121601	0.00201161	-0.00000110	0.00000001
+		-6.21678955	-0.00199928	0.00121531	0.00201038	-0.00000110	0.00000001
+		-6.21698302	-0.00199806	0.00121460	0.00200915	-0.00000110	0.00000001
+		-6.21717583	-0.00199684	0.00121390	0.00200792	-0.00000110	0.00000001
+		-6.21736797	-0.00199562	0.00121320	0.00200670	-0.00000110	0.00000001
+		-6.21755945	-0.00199440	0.00121249	0.00200547	-0.00000110	0.00000001
+		-6.21775028	-0.00199319	0.00121179	0.00200425	-0.00000110	0.00000001
+		-6.21794044	-0.00199197	0.00121109	0.00200302	-0.00000110	0.00000001
+		-6.21812995	-0.00199076	0.00121039	0.00200180	-0.00000110	0.00000001
+		-6.21831881	-0.00198955	0.00120969	0.00200058	-0.00000110	0.00000001
+		-6.21850702	-0.00198833	0.00120899	0.00199936	-0.00000110	0.00000001
+		-6.21869457	-0.00198712	0.00120829	0.00199815	-0.00000110	0.00000001
+		-6.21888149	-0.00198592	0.00120759	0.00199693	-0.00000110	0.00000001
+		-6.21906775	-0.00198471	0.00120689	0.00199571	-0.00000110	0.00000001
+		-6.21925338	-0.00198350	0.00120620	0.00199450	-0.00000110	0.00000001
+		-6.21943836	-0.00198230	0.00120550	0.00199329	-0.00000110	0.00000001
+		-6.21962271	-0.00198110	0.00120481	0.00199208	-0.00000110	0.00000001
+		-6.21980642	-0.00197989	0.00120411	0.00199087	-0.00000110	0.00000001
+		-6.21998950	-0.00197869	0.00120342	0.00198966	-0.00000110	0.00000001
+		-6.22017194	-0.00197749	0.00120272	0.00198845	-0.00000110	0.00000001
+		-6.22035376	-0.00197630	0.00120203	0.00198724	-0.00000110	0.00000001
+		-6.22053495	-0.00197510	0.00120134	0.00198604	-0.00000110	0.00000001
+		-6.22071551	-0.00197390	0.00120064	0.00198484	-0.00000111	0.00000001
+		-6.22089545	-0.00197271	0.00119995	0.00198363	-0.00000111	0.00000001
+		-6.22107477	-0.00197152	0.00119926	0.00198243	-0.00000111	0.00000001
+		-6.22125347	-0.00197032	0.00119857	0.00198123	-0.00000111	0.00000001
+		-6.22143155	-0.00196913	0.00119788	0.00198003	-0.00000111	0.00000001
+		-6.22160902	-0.00196794	0.00119719	0.00197884	-0.00000111	0.00000001
+		-6.22178587	-0.00196676	0.00119650	0.00197764	-0.00000111	0.00000001
+		-6.22196211	-0.00196557	0.00119582	0.00197645	-0.00000111	0.00000001
+		-6.22213774	-0.00196438	0.00119513	0.00197525	-0.00000111	0.00000001
+		-6.22231277	-0.00196320	0.00119444	0.00197406	-0.00000111	0.00000001
+		-6.22248719	-0.00196202	0.00119376	0.00197287	-0.00000111	0.00000001
+		-6.22266101	-0.00196083	0.00119307	0.00197168	-0.00000111	0.00000001
+		-6.22283422	-0.00195965	0.00119239	0.00197049	-0.00000111	0.00000001
+		-6.22300684	-0.00195848	0.00119170	0.00196931	-0.00000111	0.00000001
+		-6.22317886	-0.00195730	0.00119102	0.00196812	-0.00000111	0.00000001
+		-6.22335028	-0.00195612	0.00119034	0.00196694	-0.00000111	0.00000001
+		-6.22352111	-0.00195495	0.00118965	0.00196575	-0.00000111	0.00000001
+		-6.22369135	-0.00195377	0.00118897	0.00196457	-0.00000111	0.00000001
+		-6.22386100	-0.00195260	0.00118829	0.00196339	-0.00000111	0.00000001
+		-6.22403007	-0.00195143	0.00118761	0.00196221	-0.00000111	0.00000001
+		-6.22419854	-0.00195026	0.00118693	0.00196103	-0.00000111	0.00000001
+		-6.22436644	-0.00194909	0.00118625	0.00195986	-0.00000111	0.00000001
+		-6.22453375	-0.00194792	0.00118557	0.00195868	-0.00000111	0.00000001
+		-6.22470048	-0.00194675	0.00118490	0.00195751	-0.00000111	0.00000001
+		-6.22486664	-0.00194559	0.00118422	0.00195633	-0.00000111	0.00000001
+		-6.22503222	-0.00194442	0.00118354	0.00195516	-0.00000111	0.00000001
+		-6.22519722	-0.00194326	0.00118287	0.00195399	-0.00000111	0.00000001
+		-6.22536166	-0.00194210	0.00118219	0.00195282	-0.00000111	0.00000001
+		-6.22552552	-0.00194094	0.00118152	0.00195165	-0.00000111	0.00000001
+		-6.22568881	-0.00193978	0.00118084	0.00195049	-0.00000111	0.00000001
+		-6.22585154	-0.00193862	0.00118017	0.00194932	-0.00000112	0.00000001
+		-6.22601370	-0.00193746	0.00117950	0.00194816	-0.00000112	0.00000001
+		-6.22617531	-0.00193631	0.00117882	0.00194699	-0.00000112	0.00000001
+		-6.22633635	-0.00193515	0.00117815	0.00194583	-0.00000112	0.00000001
+		-6.22649683	-0.00193400	0.00117748	0.00194467	-0.00000112	0.00000001
+		-6.22665675	-0.00193285	0.00117681	0.00194351	-0.00000112	0.00000001
+		-6.22681612	-0.00193170	0.00117614	0.00194235	-0.00000112	0.00000001
+		-6.22697494	-0.00193055	0.00117547	0.00194120	-0.00000112	0.00000001
+		-6.22713320	-0.00192940	0.00117480	0.00194004	-0.00000112	0.00000001
+		-6.22729092	-0.00192825	0.00117413	0.00193889	-0.00000112	0.00000001
+		-6.22744808	-0.00192711	0.00117346	0.00193773	-0.00000112	0.00000001
+		-6.22760470	-0.00192596	0.00117280	0.00193658	-0.00000112	0.00000001
+		-6.22776078	-0.00192482	0.00117213	0.00193543	-0.00000112	0.00000001
+		-6.22791631	-0.00192368	0.00117147	0.00193428	-0.00000112	0.00000001
+		-6.22807131	-0.00192253	0.00117080	0.00193313	-0.00000112	0.00000001
+		-6.22822576	-0.00192139	0.00117014	0.00193198	-0.00000112	0.00000001
+		-6.22837968	-0.00192026	0.00116947	0.00193084	-0.00000112	0.00000001
+		-6.22853306	-0.00191912	0.00116881	0.00192969	-0.00000112	0.00000001
+		-6.22868591	-0.00191798	0.00116815	0.00192855	-0.00000112	0.00000001
+		-6.22883823	-0.00191685	0.00116748	0.00192741	-0.00000112	0.00000001
+		-6.22899002	-0.00191571	0.00116682	0.00192627	-0.00000112	0.00000001
+		-6.22914128	-0.00191458	0.00116616	0.00192513	-0.00000112	0.00000001
+		-6.22929201	-0.00191345	0.00116550	0.00192399	-0.00000112	0.00000001
+		-6.22944222	-0.00191232	0.00116484	0.00192285	-0.00000112	0.00000001
+		-6.22959190	-0.00191119	0.00116418	0.00192171	-0.00000112	0.00000001
+		-6.22974107	-0.00191006	0.00116352	0.00192058	-0.00000112	0.00000001
+		-6.22988971	-0.00190893	0.00116286	0.00191944	-0.00000112	0.00000001
+		-6.23003784	-0.00190781	0.00116221	0.00191831	-0.00000112	0.00000001
+		-6.23018545	-0.00190669	0.00116155	0.00191718	-0.00000112	0.00000001
+		-6.23033255	-0.00190556	0.00116089	0.00191605	-0.00000112	0.00000001
+		-6.23047913	-0.00190444	0.00116024	0.00191492	-0.00000112	0.00000001
+		-6.23062521	-0.00190332	0.00115958	0.00191379	-0.00000112	0.00000001
+		-6.23077077	-0.00190220	0.00115893	0.00191267	-0.00000112	0.00000001
+		-6.23091583	-0.00190108	0.00115828	0.00191154	-0.00000112	0.00000001
+		-6.23106038	-0.00189996	0.00115762	0.00191042	-0.00000113	0.00000001
+		-6.23120443	-0.00189885	0.00115697	0.00190929	-0.00000113	0.00000001
+		-6.23134798	-0.00189773	0.00115632	0.00190817	-0.00000113	0.00000001
+		-6.23149102	-0.00189662	0.00115567	0.00190705	-0.00000113	0.00000001
+		-6.23163357	-0.00189551	0.00115501	0.00190593	-0.00000113	0.00000001
+		-6.23177562	-0.00189439	0.00115436	0.00190481	-0.00000113	0.00000001
+		-6.23191717	-0.00189328	0.00115371	0.00190369	-0.00000113	0.00000001
+		-6.23205823	-0.00189218	0.00115307	0.00190258	-0.00000113	0.00000001
+		-6.23219880	-0.00189107	0.00115242	0.00190146	-0.00000113	0.00000001
+		-6.23233888	-0.00188996	0.00115177	0.00190035	-0.00000113	0.00000001
+		-6.23247846	-0.00188886	0.00115112	0.00189924	-0.00000113	0.00000001
+		-6.23261756	-0.00188775	0.00115047	0.00189812	-0.00000113	0.00000001
+		-6.23275618	-0.00188665	0.00114983	0.00189701	-0.00000113	0.00000001
+		-6.23289431	-0.00188555	0.00114918	0.00189591	-0.00000113	0.00000001
+		-6.23303196	-0.00188444	0.00114854	0.00189480	-0.00000113	0.00000001
+		-6.23316912	-0.00188334	0.00114789	0.00189369	-0.00000113	0.00000001
+		-6.23330581	-0.00188225	0.00114725	0.00189258	-0.00000113	0.00000001
+		-6.23344202	-0.00188115	0.00114661	0.00189148	-0.00000113	0.00000001
+		-6.23357776	-0.00188005	0.00114596	0.00189038	-0.00000113	0.00000001
+		-6.23371302	-0.00187896	0.00114532	0.00188927	-0.00000113	0.00000001
+		-6.23384781	-0.00187786	0.00114468	0.00188817	-0.00000113	0.00000001
+		-6.23398212	-0.00187677	0.00114404	0.00188707	-0.00000113	0.00000001
+		-6.23411597	-0.00187568	0.00114340	0.00188598	-0.00000113	0.00000001
+		-6.23424935	-0.00187459	0.00114276	0.00188488	-0.00000113	0.00000001
+		-6.23438226	-0.00187350	0.00114212	0.00188378	-0.00000113	0.00000001
+		-6.23451471	-0.00187241	0.00114148	0.00188269	-0.00000113	0.00000001
+		-6.23464669	-0.00187132	0.00114084	0.00188159	-0.00000113	0.00000001
+		-6.23477821	-0.00187024	0.00114021	0.00188050	-0.00000113	0.00000001
+		-6.23490927	-0.00186915	0.00113957	0.00187941	-0.00000113	0.00000001
+		-6.23503988	-0.00186807	0.00113893	0.00187832	-0.00000113	0.00000001
+		-6.23517002	-0.00186698	0.00113830	0.00187723	-0.00000113	0.00000001
+		-6.23529971	-0.00186590	0.00113766	0.00187614	-0.00000113	0.00000001
+		-6.23542895	-0.00186482	0.00113703	0.00187505	-0.00000113	0.00000001
+		-6.23555773	-0.00186374	0.00113639	0.00187396	-0.00000113	0.00000001
+		-6.23568606	-0.00186267	0.00113576	0.00187288	-0.00000113	0.00000001
+		-6.23581395	-0.00186159	0.00113513	0.00187180	-0.00000113	0.00000001
+		-6.23594138	-0.00186051	0.00113449	0.00187071	-0.00000113	0.00000001
+		-6.23606837	-0.00185944	0.00113386	0.00186963	-0.00000113	0.00000001
+		-6.23619491	-0.00185836	0.00113323	0.00186855	-0.00000113	0.00000001
+		-6.23632102	-0.00185729	0.00113260	0.00186747	-0.00000113	0.00000001
+		-6.23644667	-0.00185622	0.00113197	0.00186639	-0.00000114	0.00000001
+		-6.23657189	-0.00185515	0.00113134	0.00186532	-0.00000114	0.00000001
+		-6.23669667	-0.00185408	0.00113071	0.00186424	-0.00000114	0.00000001
+		-6.23682101	-0.00185301	0.00113009	0.00186317	-0.00000114	0.00000001
+		-6.23694492	-0.00185195	0.00112946	0.00186209	-0.00000114	0.00000001
+		-6.23706839	-0.00185088	0.00112883	0.00186102	-0.00000114	0.00000001
+		-6.23719143	-0.00184981	0.00112820	0.00185995	-0.00000114	0.00000001
+		-6.23731403	-0.00184875	0.00112758	0.00185888	-0.00000114	0.00000001
+		-6.23743621	-0.00184769	0.00112695	0.00185781	-0.00000114	0.00000001
+		-6.23755795	-0.00184663	0.00112633	0.00185674	-0.00000114	0.00000001
+		-6.23767927	-0.00184557	0.00112570	0.00185567	-0.00000114	0.00000001
+		-6.23780017	-0.00184451	0.00112508	0.00185461	-0.00000114	0.00000001
+		-6.23792064	-0.00184345	0.00112446	0.00185354	-0.00000114	0.00000001
+		-6.23804068	-0.00184239	0.00112383	0.00185248	-0.00000114	0.00000001
+		-6.23816031	-0.00184134	0.00112321	0.00185142	-0.00000114	0.00000001
+		-6.23827952	-0.00184028	0.00112259	0.00185035	-0.00000114	0.00000001
+		-6.23839830	-0.00183923	0.00112197	0.00184929	-0.00000114	0.00000001
+		-6.23851667	-0.00183817	0.00112135	0.00184823	-0.00000114	0.00000001
+		-6.23863462	-0.00183712	0.00112073	0.00184718	-0.00000114	0.00000001
+		-6.23875216	-0.00183607	0.00112011	0.00184612	-0.00000114	0.00000001
+		-6.23886929	-0.00183502	0.00111949	0.00184506	-0.00000114	0.00000001
+		-6.23898600	-0.00183398	0.00111887	0.00184401	-0.00000114	0.00000001
+		-6.23910231	-0.00183293	0.00111826	0.00184295	-0.00000114	0.00000001
+		-6.23921820	-0.00183188	0.00111764	0.00184190	-0.00000114	0.00000001
+		-6.23933369	-0.00183084	0.00111702	0.00184085	-0.00000114	0.00000001
+		-6.23944877	-0.00182979	0.00111641	0.00183980	-0.00000114	0.00000001
+		-6.23956345	-0.00182875	0.00111579	0.00183875	-0.00000114	0.00000001
+		-6.23967773	-0.00182771	0.00111518	0.00183770	-0.00000114	0.00000001
+		-6.23979160	-0.00182667	0.00111456	0.00183665	-0.00000114	0.00000001
+		-6.23990507	-0.00182563	0.00111395	0.00183561	-0.00000114	0.00000001
+		-6.24001814	-0.00182459	0.00111334	0.00183456	-0.00000114	0.00000001
+		-6.24013082	-0.00182355	0.00111273	0.00183352	-0.00000114	0.00000001
+		-6.24024309	-0.00182251	0.00111211	0.00183248	-0.00000114	0.00000001
+		-6.24035498	-0.00182148	0.00111150	0.00183143	-0.00000114	0.00000001
+		-6.24046647	-0.00182045	0.00111089	0.00183039	-0.00000114	0.00000001
+		-6.24057756	-0.00181941	0.00111028	0.00182935	-0.00000114	0.00000001
+		-6.24068827	-0.00181838	0.00110967	0.00182831	-0.00000114	0.00000001
+		-6.24079858	-0.00181735	0.00110906	0.00182728	-0.00000114	0.00000001
+		-6.24090851	-0.00181632	0.00110846	0.00182624	-0.00000114	0.00000001
+		-6.24101805	-0.00181529	0.00110785	0.00182521	-0.00000114	0.00000001
+		-6.24112720	-0.00181426	0.00110724	0.00182417	-0.00000114	0.00000001
+		-6.24123597	-0.00181324	0.00110663	0.00182314	-0.00000114	0.00000001
+		-6.24134436	-0.00181221	0.00110603	0.00182211	-0.00000114	0.00000001
+		-6.24145237	-0.00181118	0.00110542	0.00182107	-0.00000114	0.00000001
+		-6.24155999	-0.00181016	0.00110482	0.00182004	-0.00000114	0.00000001
+		-6.24166723	-0.00180914	0.00110421	0.00181902	-0.00000114	0.00000001
+		-6.24177410	-0.00180812	0.00110361	0.00181799	-0.00000114	0.00000001
+		-6.24188059	-0.00180710	0.00110300	0.00181696	-0.00000115	0.00000001
+		-6.24198671	-0.00180608	0.00110240	0.00181593	-0.00000115	0.00000001
+		-6.24209245	-0.00180506	0.00110180	0.00181491	-0.00000115	0.00000001
+		-6.24219781	-0.00180404	0.00110120	0.00181389	-0.00000115	0.00000001
+		-6.24230281	-0.00180302	0.00110060	0.00181286	-0.00000115	0.00000001
+		-6.24240743	-0.00180201	0.00110000	0.00181184	-0.00000115	0.00000001
+		-6.24251169	-0.00180100	0.00109940	0.00181082	-0.00000115	0.00000001
+		-6.24261558	-0.00179998	0.00109880	0.00180980	-0.00000115	0.00000001
+		-6.24271910	-0.00179897	0.00109820	0.00180878	-0.00000115	0.00000001
+		-6.24282226	-0.00179796	0.00109760	0.00180777	-0.00000115	0.00000001
+		-6.24292505	-0.00179695	0.00109700	0.00180675	-0.00000115	0.00000001
+		-6.24302748	-0.00179594	0.00109640	0.00180573	-0.00000115	0.00000001
+		-6.24312955	-0.00179493	0.00109581	0.00180472	-0.00000115	0.00000001
+		-6.24323126	-0.00179392	0.00109521	0.00180371	-0.00000115	0.00000001
+		-6.24333261	-0.00179292	0.00109461	0.00180269	-0.00000115	0.00000001
+		-6.24343360	-0.00179191	0.00109402	0.00180168	-0.00000115	0.00000001
+		-6.24353423	-0.00179091	0.00109342	0.00180067	-0.00000115	0.00000001
+		-6.24363451	-0.00178991	0.00109283	0.00179966	-0.00000115	0.00000001
+		-6.24373444	-0.00178891	0.00109224	0.00179866	-0.00000115	0.00000001
+		-6.24383401	-0.00178790	0.00109164	0.00179765	-0.00000115	0.00000001
+		-6.24393323	-0.00178690	0.00109105	0.00179664	-0.00000115	0.00000001
+		-6.24403210	-0.00178591	0.00109046	0.00179564	-0.00000115	0.00000001
+		-6.24413062	-0.00178491	0.00108987	0.00179463	-0.00000115	0.00000001
+		-6.24422879	-0.00178391	0.00108928	0.00179363	-0.00000115	0.00000001
+		-6.24432661	-0.00178292	0.00108869	0.00179263	-0.00000115	0.00000001
+		-6.24442409	-0.00178192	0.00108810	0.00179163	-0.00000115	0.00000001
+		-6.24452123	-0.00178093	0.00108751	0.00179063	-0.00000115	0.00000000
+		-6.24461802	-0.00177993	0.00108692	0.00178963	-0.00000115	0.00000000
+		-6.24471446	-0.00177894	0.00108633	0.00178863	-0.00000115	0.00000000
+		-6.24481057	-0.00177795	0.00108574	0.00178764	-0.00000115	0.00000000
+		-6.24490634	-0.00177696	0.00108516	0.00178664	-0.00000115	0.00000000
+		-6.24500177	-0.00177597	0.00108457	0.00178565	-0.00000115	0.00000000
+		-6.24509686	-0.00177499	0.00108398	0.00178465	-0.00000115	0.00000000
+		-6.24519161	-0.00177400	0.00108340	0.00178366	-0.00000115	0.00000000
+		-6.24528603	-0.00177301	0.00108281	0.00178267	-0.00000115	0.00000000
+		-6.24538012	-0.00177203	0.00108223	0.00178168	-0.00000115	0.00000000
+		-6.24547387	-0.00177105	0.00108164	0.00178069	-0.00000115	0.00000000
+		-6.24556729	-0.00177006	0.00108106	0.00177970	-0.00000115	0.00000000
+		-6.24566038	-0.00176908	0.00108048	0.00177871	-0.00000115	0.00000000
+		-6.24575314	-0.00176810	0.00107990	0.00177772	-0.00000115	0.00000000
+		-6.24584557	-0.00176712	0.00107931	0.00177674	-0.00000115	0.00000000
+		-6.24593768	-0.00176614	0.00107873	0.00177575	-0.00000115	0.00000000
+		-6.24602946	-0.00176517	0.00107815	0.00177477	-0.00000115	0.00000000
+		-6.24612091	-0.00176419	0.00107757	0.00177379	-0.00000115	0.00000000
+		-6.24621204	-0.00176321	0.00107699	0.00177281	-0.00000115	0.00000000
+		-6.24630285	-0.00176224	0.00107641	0.00177183	-0.00000115	0.00000000
+		-6.24639333	-0.00176127	0.00107584	0.00177085	-0.00000115	0.00000000
+		-6.24648350	-0.00176029	0.00107526	0.00176987	-0.00000115	0.00000000
+		-6.24657334	-0.00175932	0.00107468	0.00176889	-0.00000115	0.00000000
+		-6.24666287	-0.00175835	0.00107410	0.00176791	-0.00000115	0.00000000
+		-6.24675208	-0.00175738	0.00107353	0.00176694	-0.00000115	0.00000000
+		-6.24684097	-0.00175641	0.00107295	0.00176596	-0.00000115	0.00000000
+		-6.24692955	-0.00175545	0.00107238	0.00176499	-0.00000115	0.00000000
+		-6.24701781	-0.00175448	0.00107180	0.00176402	-0.00000115	0.00000000
+		-6.24710576	-0.00175351	0.00107123	0.00176305	-0.00000115	0.00000000
+		-6.24719340	-0.00175255	0.00107065	0.00176207	-0.00000115	0.00000000
+		-6.24728073	-0.00175158	0.00107008	0.00176110	-0.00000115	0.00000000
+		-6.24736775	-0.00175062	0.00106951	0.00176014	-0.00000115	0.00000000
+		-6.24745446	-0.00174966	0.00106893	0.00175917	-0.00000115	0.00000000
+		-6.24754086	-0.00174870	0.00106836	0.00175820	-0.00000115	0.00000000
+		-6.24762695	-0.00174774	0.00106779	0.00175724	-0.00000116	0.00000000
+		-6.24771274	-0.00174678	0.00106722	0.00175627	-0.00000116	0.00000000
+		-6.24779823	-0.00174582	0.00106665	0.00175531	-0.00000116	0.00000000
+		-6.24788341	-0.00174487	0.00106608	0.00175434	-0.00000116	0.00000000
+		-6.24796829	-0.00174391	0.00106551	0.00175338	-0.00000116	0.00000000
+		-6.24805287	-0.00174296	0.00106494	0.00175242	-0.00000116	0.00000000
+		-6.24813715	-0.00174200	0.00106438	0.00175146	-0.00000116	0.00000000
+		-6.24822113	-0.00174105	0.00106381	0.00175050	-0.00000116	0.00000000
+		-6.24830481	-0.00174010	0.00106324	0.00174955	-0.00000116	0.00000000
+		-6.24838819	-0.00173915	0.00106267	0.00174859	-0.00000116	0.00000000
+		-6.24847128	-0.00173819	0.00106211	0.00174763	-0.00000116	0.00000000
+		-6.24855407	-0.00173725	0.00106154	0.00174668	-0.00000116	0.00000000
+		-6.24863657	-0.00173630	0.00106098	0.00174572	-0.00000116	0.00000000
+		-6.24871878	-0.00173535	0.00106041	0.00174477	-0.00000116	0.00000000
+		-6.24880069	-0.00173440	0.00105985	0.00174382	-0.00000116	0.00000000
+		-6.24888231	-0.00173346	0.00105929	0.00174287	-0.00000116	0.00000000
+		-6.24896365	-0.00173251	0.00105872	0.00174192	-0.00000116	0.00000000
+		-6.24904469	-0.00173157	0.00105816	0.00174097	-0.00000116	0.00000000
+		-6.24912545	-0.00173063	0.00105760	0.00174002	-0.00000116	0.00000000
+		-6.24920591	-0.00172969	0.00105704	0.00173907	-0.00000116	0.00000000
+		-6.24928610	-0.00172875	0.00105648	0.00173813	-0.00000116	0.00000000
+		-6.24936599	-0.00172781	0.00105592	0.00173718	-0.00000116	0.00000000
+		-6.24944561	-0.00172687	0.00105536	0.00173624	-0.00000116	0.00000000
+		-6.24952494	-0.00172593	0.00105480	0.00173529	-0.00000116	0.00000000
+		-6.24960399	-0.00172499	0.00105424	0.00173435	-0.00000116	0.00000000
+		-6.24968275	-0.00172406	0.00105368	0.00173341	-0.00000116	0.00000000
+		-6.24976124	-0.00172312	0.00105312	0.00173247	-0.00000116	0.00000000
+		-6.24983945	-0.00172219	0.00105257	0.00173153	-0.00000116	0.00000000
+		-6.24991738	-0.00172126	0.00105201	0.00173059	-0.00000116	0.00000000
+		-6.24999503	-0.00172032	0.00105145	0.00172965	-0.00000116	0.00000000
+		-6.25007241	-0.00171939	0.00105090	0.00172871	-0.00000116	0.00000000
+		-6.25014951	-0.00171846	0.00105034	0.00172778	-0.00000116	0.00000000
+		-6.25022634	-0.00171753	0.00104979	0.00172684	-0.00000116	0.00000000
+		-6.25030289	-0.00171660	0.00104923	0.00172591	-0.00000116	0.00000000
+		-6.25037917	-0.00171568	0.00104868	0.00172498	-0.00000116	0.00000000
+		-6.25045518	-0.00171475	0.00104813	0.00172404	-0.00000116	0.00000000
+		-6.25053092	-0.00171382	0.00104758	0.00172311	-0.00000116	0.00000000
+		-6.25060639	-0.00171290	0.00104702	0.00172218	-0.00000116	0.00000000
+		-6.25068159	-0.00171198	0.00104647	0.00172125	-0.00000116	0.00000000
+		-6.25075652	-0.00171105	0.00104592	0.00172032	-0.00000116	0.00000000
+		-6.25083119	-0.00171013	0.00104537	0.00171940	-0.00000116	0.00000000
+		-6.25090559	-0.00170921	0.00104482	0.00171847	-0.00000116	0.00000000
+		-6.25097972	-0.00170829	0.00104427	0.00171754	-0.00000116	0.00000000
+		-6.25105359	-0.00170737	0.00104372	0.00171662	-0.00000116	0.00000000
+		-6.25112720	-0.00170645	0.00104317	0.00171570	-0.00000116	0.00000000
+		-6.25120055	-0.00170554	0.00104262	0.00171477	-0.00000116	0.00000000
+		-6.25127363	-0.00170462	0.00104208	0.00171385	-0.00000116	0.00000000
+		-6.25134646	-0.00170370	0.00104153	0.00171293	-0.00000116	0.00000000
+		-6.25141902	-0.00170279	0.00104098	0.00171201	-0.00000116	0.00000000
+		-6.25149133	-0.00170188	0.00104044	0.00171109	-0.00000116	0.00000000
+		-6.25156338	-0.00170096	0.00103989	0.00171017	-0.00000116	0.00000000
+		-6.25163517	-0.00170005	0.00103935	0.00170926	-0.00000116	0.00000000
+		-6.25170670	-0.00169914	0.00103880	0.00170834	-0.00000116	0.00000000
+		-6.25177798	-0.00169823	0.00103826	0.00170742	-0.00000116	0.00000000
+		-6.25184901	-0.00169732	0.00103771	0.00170651	-0.00000116	0.00000000
+		-6.25191978	-0.00169641	0.00103717	0.00170560	-0.00000116	0.00000000
+		-6.25199031	-0.00169551	0.00103663	0.00170468	-0.00000116	0.00000000
+		-6.25206057	-0.00169460	0.00103609	0.00170377	-0.00000116	0.00000000
+		-6.25213059	-0.00169369	0.00103555	0.00170286	-0.00000116	0.00000000
+		-6.25220036	-0.00169279	0.00103500	0.00170195	-0.00000116	0.00000000
+		-6.25226988	-0.00169189	0.00103446	0.00170104	-0.00000116	0.00000000
+		-6.25233916	-0.00169098	0.00103392	0.00170013	-0.00000116	0.00000000
+		-6.25240818	-0.00169008	0.00103338	0.00169923	-0.00000116	0.00000000
+		-6.25247696	-0.00168918	0.00103285	0.00169832	-0.00000116	0.00000000
+		-6.25254550	-0.00168828	0.00103231	0.00169741	-0.00000116	0.00000000
+		-6.25261379	-0.00168738	0.00103177	0.00169651	-0.00000116	0.00000000
+		-6.25268183	-0.00168648	0.00103123	0.00169560	-0.00000116	0.00000000
+		-6.25274963	-0.00168559	0.00103069	0.00169470	-0.00000116	0.00000000
+		-6.25281720	-0.00168469	0.00103016	0.00169380	-0.00000116	0.00000000
+		-6.25288452	-0.00168379	0.00102962	0.00169290	-0.00000116	0.00000000
+		-6.25295160	-0.00168290	0.00102909	0.00169200	-0.00000116	0.00000000
+		-6.25301844	-0.00168200	0.00102855	0.00169110	-0.00000116	0.00000000
+		-6.25308504	-0.00168111	0.00102802	0.00169020	-0.00000116	0.00000000
+		-6.25315140	-0.00168022	0.00102748	0.00168930	-0.00000116	0.00000000
+		-6.25321753	-0.00167933	0.00102695	0.00168841	-0.00000116	0.00000000
+		-6.25328342	-0.00167844	0.00102641	0.00168751	-0.00000116	0.00000000
+		-6.25334907	-0.00167755	0.00102588	0.00168662	-0.00000116	0.00000000
+		-6.25341450	-0.00167666	0.00102535	0.00168572	-0.00000116	0.00000000
+		-6.25347968	-0.00167577	0.00102482	0.00168483	-0.00000116	0.00000000
+		-6.25354464	-0.00167489	0.00102429	0.00168394	-0.00000116	0.00000000
+		-6.25360936	-0.00167400	0.00102376	0.00168305	-0.00000116	0.00000000
+		-6.25367385	-0.00167312	0.00102323	0.00168216	-0.00000116	0.00000000
+		-6.25373811	-0.00167223	0.00102270	0.00168127	-0.00000116	0.00000000
+		-6.25380215	-0.00167135	0.00102217	0.00168038	-0.00000116	0.00000000
+		-6.25386595	-0.00167047	0.00102164	0.00167949	-0.00000117	0.00000000
+		-6.25392952	-0.00166958	0.00102111	0.00167860	-0.00000117	0.00000000
+		-6.25399287	-0.00166870	0.00102058	0.00167772	-0.00000117	0.00000000
+		-6.25405599	-0.00166782	0.00102005	0.00167683	-0.00000117	0.00000000
+		-6.25411889	-0.00166694	0.00101953	0.00167595	-0.00000117	0.00000000
+		-6.25418156	-0.00166607	0.00101900	0.00167507	-0.00000117	0.00000000
+		-6.25424401	-0.00166519	0.00101847	0.00167418	-0.00000117	0.00000000
+		-6.25430623	-0.00166431	0.00101795	0.00167330	-0.00000117	0.00000000
+		-6.25436823	-0.00166344	0.00101742	0.00167242	-0.00000117	0.00000000
+		-6.25443001	-0.00166256	0.00101690	0.00167154	-0.00000117	0.00000000
+		-6.25449157	-0.00166169	0.00101638	0.00167066	-0.00000117	0.00000000
+		-6.25455291	-0.00166082	0.00101585	0.00166978	-0.00000117	0.00000000
+		-6.25461403	-0.00165994	0.00101533	0.00166891	-0.00000117	0.00000000
+		-6.25467493	-0.00165907	0.00101481	0.00166803	-0.00000117	0.00000000
+		-6.25473561	-0.00165820	0.00101428	0.00166715	-0.00000117	0.00000000
+		-6.25479608	-0.00165733	0.00101376	0.00166628	-0.00000117	0.00000000
+		-6.25485633	-0.00165647	0.00101324	0.00166541	-0.00000117	0.00000000
+		-6.25491636	-0.00165560	0.00101272	0.00166453	-0.00000117	0.00000000
+		-6.25497618	-0.00165473	0.00101220	0.00166366	-0.00000117	0.00000000
+		-6.25503579	-0.00165386	0.00101168	0.00166279	-0.00000117	0.00000000
+		-6.25509518	-0.00165300	0.00101116	0.00166192	-0.00000117	0.00000000
+		-6.25515436	-0.00165214	0.00101064	0.00166105	-0.00000117	0.00000000
+		-6.25521333	-0.00165127	0.00101012	0.00166018	-0.00000117	0.00000000
+		-6.25527209	-0.00165041	0.00100961	0.00165931	-0.00000117	0.00000000
+		-6.25533063	-0.00164955	0.00100909	0.00165845	-0.00000117	0.00000000
+		-6.25538897	-0.00164869	0.00100857	0.00165758	-0.00000117	0.00000000
+		-6.25544710	-0.00164783	0.00100806	0.00165672	-0.00000117	0.00000000
+		-6.25550502	-0.00164697	0.00100754	0.00165585	-0.00000117	0.00000000
+		-6.25556273	-0.00164611	0.00100702	0.00165499	-0.00000117	0.00000000
+		-6.25562024	-0.00164525	0.00100651	0.00165413	-0.00000117	0.00000000
+		-6.25567754	-0.00164440	0.00100599	0.00165326	-0.00000117	0.00000000
+		-6.25573464	-0.00164354	0.00100548	0.00165240	-0.00000117	0.00000000
+		-6.25579153	-0.00164268	0.00100497	0.00165154	-0.00000117	0.00000000
+		-6.25584821	-0.00164183	0.00100445	0.00165068	-0.00000117	0.00000000
+		-6.25590470	-0.00164098	0.00100394	0.00164982	-0.00000117	0.00000000
+		-6.25596098	-0.00164012	0.00100343	0.00164897	-0.00000117	0.00000000
+		-6.25601706	-0.00163927	0.00100292	0.00164811	-0.00000117	0.00000000
+		-6.25607294	-0.00163842	0.00100241	0.00164725	-0.00000117	0.00000000
+		-6.25612862	-0.00163757	0.00100189	0.00164640	-0.00000117	0.00000000
+		-6.25618410	-0.00163672	0.00100138	0.00164554	-0.00000117	0.00000000
+		-6.25623938	-0.00163587	0.00100087	0.00164469	-0.00000117	0.00000000
+		-6.25629447	-0.00163503	0.00100036	0.00164384	-0.00000117	0.00000000
+		-6.25634936	-0.00163418	0.00099986	0.00164299	-0.00000117	0.00000000
+		-6.25640405	-0.00163333	0.00099935	0.00164214	-0.00000117	0.00000000
+		-6.25645854	-0.00163249	0.00099884	0.00164129	-0.00000117	0.00000000
+		-6.25651284	-0.00163164	0.00099833	0.00164044	-0.00000117	0.00000000
+		-6.25656694	-0.00163080	0.00099782	0.00163959	-0.00000117	0.00000000
+		-6.25662085	-0.00162996	0.00099732	0.00163874	-0.00000117	0.00000000
+		-6.25667457	-0.00162912	0.00099681	0.00163789	-0.00000117	0.00000000
+		-6.25672809	-0.00162828	0.00099631	0.00163705	-0.00000117	0.00000000
+		-6.25678143	-0.00162744	0.00099580	0.00163620	-0.00000117	0.00000000
+		-6.25683457	-0.00162660	0.00099530	0.00163536	-0.00000117	0.00000000
+		-6.25688752	-0.00162576	0.00099479	0.00163451	-0.00000117	0.00000000
+		-6.25694028	-0.00162492	0.00099429	0.00163367	-0.00000117	0.00000000
+		-6.25699285	-0.00162408	0.00099378	0.00163283	-0.00000117	0.00000000
+		-6.25704524	-0.00162325	0.00099328	0.00163199	-0.00000117	0.00000000
+		-6.25709743	-0.00162241	0.00099278	0.00163115	-0.00000117	0.00000000
+		-6.25714944	-0.00162158	0.00099228	0.00163031	-0.00000117	0.00000000
+		-6.25720127	-0.00162074	0.00099177	0.00162947	-0.00000117	0.00000000
+		-6.25725290	-0.00161991	0.00099127	0.00162863	-0.00000117	0.00000000
+		-6.25730435	-0.00161908	0.00099077	0.00162780	-0.00000117	0.00000000
+		-6.25735562	-0.00161825	0.00099027	0.00162696	-0.00000117	0.00000000
+		-6.25740670	-0.00161742	0.00098977	0.00162613	-0.00000117	0.00000000
+		-6.25745761	-0.00161659	0.00098927	0.00162529	-0.00000117	0.00000000
+		-6.25750832	-0.00161576	0.00098877	0.00162446	-0.00000117	0.00000000
+		-6.25755886	-0.00161493	0.00098828	0.00162362	-0.00000117	0.00000000
+		-6.25760921	-0.00161411	0.00098778	0.00162279	-0.00000117	0.00000000
+		-6.25765939	-0.00161328	0.00098728	0.00162196	-0.00000117	0.00000000
+		-6.25770938	-0.00161245	0.00098678	0.00162113	-0.00000117	0.00000000
+		-6.25775920	-0.00161163	0.00098629	0.00162030	-0.00000117	0.00000000
+		-6.25780883	-0.00161080	0.00098579	0.00161947	-0.00000117	0.00000000
+		-6.25785829	-0.00160998	0.00098529	0.00161864	-0.00000117	0.00000000
+		-6.25790757	-0.00160916	0.00098480	0.00161782	-0.00000117	0.00000000
+		-6.25795667	-0.00160834	0.00098430	0.00161699	-0.00000117	0.00000000
+		-6.25800560	-0.00160752	0.00098381	0.00161616	-0.00000117	0.00000000
+		-6.25805435	-0.00160670	0.00098332	0.00161534	-0.00000117	0.00000000
+		-6.25810293	-0.00160588	0.00098282	0.00161452	-0.00000117	0.00000000
+		-6.25815133	-0.00160506	0.00098233	0.00161369	-0.00000117	0.00000000
+		-6.25819956	-0.00160424	0.00098184	0.00161287	-0.00000117	0.00000000
+		-6.25824762	-0.00160342	0.00098134	0.00161205	-0.00000117	0.00000000
+		-6.25829550	-0.00160261	0.00098085	0.00161123	-0.00000117	0.00000000
+		-6.25834321	-0.00160179	0.00098036	0.00161041	-0.00000117	0.00000000
+		-6.25839075	-0.00160098	0.00097987	0.00160959	-0.00000117	0.00000000
+		-6.25843812	-0.00160017	0.00097938	0.00160877	-0.00000117	0.00000000
+		-6.25848532	-0.00159935	0.00097889	0.00160795	-0.00000117	0.00000000
+		-6.25853235	-0.00159854	0.00097840	0.00160713	-0.00000117	0.00000000
+		-6.25857922	-0.00159773	0.00097791	0.00160632	-0.00000117	0.00000000
+		-6.25862591	-0.00159692	0.00097742	0.00160550	-0.00000117	0.00000000
+		-6.25867244	-0.00159611	0.00097693	0.00160469	-0.00000117	0.00000000
+		-6.25871879	-0.00159530	0.00097645	0.00160387	-0.00000117	0.00000000
+		-6.25876499	-0.00159449	0.00097596	0.00160306	-0.00000117	0.00000000
+		-6.25881101	-0.00159368	0.00097547	0.00160225	-0.00000117	0.00000000
+		-6.25885688	-0.00159288	0.00097499	0.00160144	-0.00000117	0.00000000
+		-6.25890257	-0.00159207	0.00097450	0.00160063	-0.00000117	0.00000000
+		-6.25894810	-0.00159127	0.00097402	0.00159982	-0.00000117	0.00000000
+		-6.25899347	-0.00159046	0.00097353	0.00159901	-0.00000117	0.00000000
+		-6.25903868	-0.00158966	0.00097305	0.00159820	-0.00000117	0.00000000
+		-6.25908372	-0.00158886	0.00097256	0.00159739	-0.00000117	0.00000000
+		-6.25912861	-0.00158805	0.00097208	0.00159659	-0.00000117	0.00000000
+		-6.25917333	-0.00158725	0.00097159	0.00159578	-0.00000117	0.00000000
+		-6.25921789	-0.00158645	0.00097111	0.00159497	-0.00000117	0.00000000
+		-6.25926229	-0.00158565	0.00097063	0.00159417	-0.00000117	0.00000000
+		-6.25930653	-0.00158485	0.00097015	0.00159337	-0.00000117	0.00000000
+		-6.25935061	-0.00158406	0.00096966	0.00159256	-0.00000117	0.00000000
+		-6.25939453	-0.00158326	0.00096918	0.00159176	-0.00000117	0.00000000
+		-6.25943830	-0.00158246	0.00096870	0.00159096	-0.00000117	0.00000000
+		-6.25948191	-0.00158167	0.00096822	0.00159016	-0.00000117	0.00000000
+		-6.25952536	-0.00158087	0.00096774	0.00158936	-0.00000117	0.00000000
+		-6.25956866	-0.00158008	0.00096726	0.00158856	-0.00000117	0.00000000
+		-6.25961180	-0.00157928	0.00096678	0.00158776	-0.00000117	0.00000000
+		-6.25965478	-0.00157849	0.00096631	0.00158696	-0.00000117	0.00000000
+		-6.25969761	-0.00157770	0.00096583	0.00158617	-0.00000117	0.00000000
+		-6.25974029	-0.00157691	0.00096535	0.00158537	-0.00000117	0.00000000
+		-6.25978282	-0.00157612	0.00096487	0.00158458	-0.00000117	0.00000000
+		-6.25982519	-0.00157533	0.00096440	0.00158378	-0.00000117	0.00000000
+		-6.25986741	-0.00157454	0.00096392	0.00158299	-0.00000117	0.00000000
+		-6.25990947	-0.00157375	0.00096344	0.00158220	-0.00000117	0.00000000
+		-6.25995139	-0.00157296	0.00096297	0.00158140	-0.00000117	0.00000000
+		-6.25999315	-0.00157217	0.00096249	0.00158061	-0.00000117	0.00000000
+		-6.26003477	-0.00157139	0.00096202	0.00157982	-0.00000117	0.00000000
+		-6.26007624	-0.00157060	0.00096154	0.00157903	-0.00000117	0.00000000
+		-6.26011755	-0.00156982	0.00096107	0.00157824	-0.00000117	0.00000000
+		-6.26015872	-0.00156903	0.00096060	0.00157745	-0.00000117	0.00000000
+		-6.26019974	-0.00156825	0.00096012	0.00157667	-0.00000117	0.00000000
+		-6.26024061	-0.00156747	0.00095965	0.00157588	-0.00000117	0.00000000
+		-6.26028134	-0.00156669	0.00095918	0.00157509	-0.00000117	0.00000000
+		-6.26032192	-0.00156591	0.00095871	0.00157431	-0.00000117	0.00000000
+		-6.26036235	-0.00156513	0.00095823	0.00157352	-0.00000117	0.00000000
+		-6.26040264	-0.00156435	0.00095776	0.00157274	-0.00000117	0.00000000
+		-6.26044279	-0.00156357	0.00095729	0.00157195	-0.00000117	0.00000000
+		-6.26048279	-0.00156279	0.00095682	0.00157117	-0.00000117	0.00000000
+		-6.26052264	-0.00156201	0.00095635	0.00157039	-0.00000117	0.00000000
+		-6.26056235	-0.00156124	0.00095588	0.00156961	-0.00000117	0.00000000
+		-6.26060192	-0.00156046	0.00095542	0.00156883	-0.00000117	0.00000000
+		-6.26064135	-0.00155969	0.00095495	0.00156805	-0.00000117	0.00000000
+		-6.26068064	-0.00155891	0.00095448	0.00156727	-0.00000117	0.00000000
+		-6.26071978	-0.00155814	0.00095401	0.00156649	-0.00000117	0.00000000
+		-6.26075879	-0.00155737	0.00095354	0.00156572	-0.00000117	0.00000000
+		-6.26079765	-0.00155659	0.00095308	0.00156494	-0.00000117	0.00000000
+		-6.26083637	-0.00155582	0.00095261	0.00156416	-0.00000117	0.00000000
+		-6.26087496	-0.00155505	0.00095215	0.00156339	-0.00000117	0.00000000
+		-6.26091341	-0.00155428	0.00095168	0.00156261	-0.00000117	0.00000000
+		-6.26095171	-0.00155351	0.00095122	0.00156184	-0.00000117	0.00000000
+		-6.26098988	-0.00155274	0.00095075	0.00156107	-0.00000117	0.00000000
+		-6.26102792	-0.00155198	0.00095029	0.00156029	-0.00000117	0.00000000
+		-6.26106581	-0.00155121	0.00094982	0.00155952	-0.00000117	0.00000000
+		-6.26110357	-0.00155044	0.00094936	0.00155875	-0.00000117	0.00000000
+		-6.26114120	-0.00154968	0.00094890	0.00155798	-0.00000117	0.00000000
+		-6.26117869	-0.00154891	0.00094843	0.00155721	-0.00000117	0.00000000
+		-6.26121604	-0.00154815	0.00094797	0.00155644	-0.00000117	0.00000000
+		-6.26125326	-0.00154739	0.00094751	0.00155568	-0.00000117	0.00000000
+		-6.26129035	-0.00154662	0.00094705	0.00155491	-0.00000117	0.00000000
+		-6.26132730	-0.00154586	0.00094659	0.00155414	-0.00000117	0.00000000
+		-6.26136412	-0.00154510	0.00094613	0.00155338	-0.00000117	0.00000000
+		-6.26140081	-0.00154434	0.00094567	0.00155261	-0.00000117	0.00000000
+		-6.26143736	-0.00154358	0.00094521	0.00155185	-0.00000117	0.00000000
+		-6.26147379	-0.00154282	0.00094475	0.00155109	-0.00000117	0.00000000
+		-6.26151008	-0.00154206	0.00094429	0.00155032	-0.00000117	0.00000000
+		-6.26154624	-0.00154131	0.00094383	0.00154956	-0.00000117	0.00000000
+		-6.26158228	-0.00154055	0.00094337	0.00154880	-0.00000117	0.00000000
+		-6.26161818	-0.00153979	0.00094292	0.00154804	-0.00000117	0.00000000
+		-6.26165395	-0.00153904	0.00094246	0.00154728	-0.00000117	0.00000000
+		-6.26168960	-0.00153828	0.00094200	0.00154652	-0.00000117	0.00000000
+		-6.26172512	-0.00153753	0.00094155	0.00154576	-0.00000117	0.00000000
+		-6.26176051	-0.00153677	0.00094109	0.00154500	-0.00000117	0.00000000
+		-6.26179577	-0.00153602	0.00094063	0.00154425	-0.00000117	0.00000000
+		-6.26183090	-0.00153527	0.00094018	0.00154349	-0.00000117	0.00000000
+		-6.26186591	-0.00153452	0.00093972	0.00154273	-0.00000117	0.00000000
+		-6.26190080	-0.00153377	0.00093927	0.00154198	-0.00000117	0.00000000
+		-6.26193555	-0.00153302	0.00093882	0.00154123	-0.00000117	0.00000000
+		-6.26197019	-0.00153227	0.00093836	0.00154047	-0.00000117	0.00000000
+		-6.26200470	-0.00153152	0.00093791	0.00153972	-0.00000117	0.00000000
+		-6.26203908	-0.00153077	0.00093746	0.00153897	-0.00000117	0.00000000
+		-6.26207334	-0.00153003	0.00093700	0.00153822	-0.00000118	0.00000000
+		-6.26210748	-0.00152928	0.00093655	0.00153746	-0.00000118	0.00000000
+		-6.26214149	-0.00152853	0.00093610	0.00153671	-0.00000118	0.00000000
+		-6.26217539	-0.00152779	0.00093565	0.00153597	-0.00000118	0.00000000
+		-6.26220916	-0.00152705	0.00093520	0.00153522	-0.00000118	0.00000000
+		-6.26224280	-0.00152630	0.00093475	0.00153447	-0.00000118	0.00000000
+		-6.26227633	-0.00152556	0.00093430	0.00153372	-0.00000118	0.00000000
+		-6.26230974	-0.00152482	0.00093385	0.00153298	-0.00000118	0.00000000
+		-6.26234303	-0.00152408	0.00093340	0.00153223	-0.00000118	0.00000000
+		-6.26237620	-0.00152333	0.00093295	0.00153148	-0.00000118	0.00000000
+		-6.26240924	-0.00152259	0.00093250	0.00153074	-0.00000118	0.00000000
+		-6.26244217	-0.00152186	0.00093205	0.00153000	-0.00000118	0.00000000
+		-6.26247499	-0.00152112	0.00093161	0.00152925	-0.00000118	0.00000000
+		-6.26250768	-0.00152038	0.00093116	0.00152851	-0.00000118	0.00000000
+		-6.26254025	-0.00151964	0.00093071	0.00152777	-0.00000118	0.00000000
+		-6.26257271	-0.00151890	0.00093027	0.00152703	-0.00000118	0.00000000
+		-6.26260505	-0.00151817	0.00092982	0.00152629	-0.00000118	0.00000000
+		-6.26263728	-0.00151743	0.00092937	0.00152555	-0.00000118	0.00000000
+		-6.26266939	-0.00151670	0.00092893	0.00152481	-0.00000118	0.00000000
+		-6.26270138	-0.00151596	0.00092848	0.00152407	-0.00000118	0.00000000
+		-6.26273326	-0.00151523	0.00092804	0.00152333	-0.00000118	0.00000000
+		-6.26276503	-0.00151450	0.00092760	0.00152260	-0.00000118	0.00000000
+		-6.26279668	-0.00151377	0.00092715	0.00152186	-0.00000118	0.00000000
+		-6.26282822	-0.00151304	0.00092671	0.00152113	-0.00000118	0.00000000
+		-6.26285964	-0.00151231	0.00092627	0.00152039	-0.00000118	0.00000000
+		-6.26289095	-0.00151158	0.00092582	0.00151966	-0.00000118	0.00000000
+		-6.26292215	-0.00151085	0.00092538	0.00151892	-0.00000118	0.00000000
+		-6.26295323	-0.00151012	0.00092494	0.00151819	-0.00000118	0.00000000
+		-6.26298421	-0.00150939	0.00092450	0.00151746	-0.00000118	0.00000000
+		-6.26301507	-0.00150866	0.00092406	0.00151673	-0.00000118	0.00000000
+		-6.26304582	-0.00150794	0.00092362	0.00151600	-0.00000118	0.00000000
+		-6.26307646	-0.00150721	0.00092318	0.00151527	-0.00000118	0.00000000
+		-6.26310699	-0.00150649	0.00092274	0.00151454	-0.00000118	0.00000000
+		-6.26313741	-0.00150576	0.00092230	0.00151381	-0.00000118	0.00000000
+		-6.26316772	-0.00150504	0.00092186	0.00151308	-0.00000118	0.00000000
+		-6.26319793	-0.00150431	0.00092142	0.00151235	-0.00000118	0.00000000
+		-6.26322802	-0.00150359	0.00092098	0.00151163	-0.00000118	0.00000000
+		-6.26325801	-0.00150287	0.00092055	0.00151090	-0.00000118	0.00000000
+		-6.26328788	-0.00150215	0.00092011	0.00151018	-0.00000118	0.00000000
+		-6.26331765	-0.00150143	0.00091967	0.00150945	-0.00000118	0.00000000
+		-6.26334732	-0.00150071	0.00091924	0.00150873	-0.00000118	0.00000000
+		-6.26337687	-0.00149999	0.00091880	0.00150800	-0.00000118	0.00000000
+		-6.26340633	-0.00149927	0.00091836	0.00150728	-0.00000118	0.00000000
+		-6.26343567	-0.00149855	0.00091793	0.00150656	-0.00000118	0.00000000
+		-6.26346491	-0.00149784	0.00091749	0.00150584	-0.00000118	0.00000000
+		-6.26349404	-0.00149712	0.00091706	0.00150512	-0.00000118	0.00000000
+		-6.26352307	-0.00149640	0.00091662	0.00150440	-0.00000118	0.00000000
+		-6.26355200	-0.00149569	0.00091619	0.00150368	-0.00000118	0.00000000
+		-6.26358082	-0.00149498	0.00091576	0.00150296	-0.00000118	0.00000000
+		-6.26360954	-0.00149426	0.00091532	0.00150224	-0.00000118	0.00000000
+		-6.26363815	-0.00149355	0.00091489	0.00150152	-0.00000118	0.00000000
+		-6.26366666	-0.00149284	0.00091446	0.00150081	-0.00000118	0.00000000
+		-6.26369507	-0.00149212	0.00091403	0.00150009	-0.00000118	0.00000000
+		-6.26372338	-0.00149141	0.00091359	0.00149938	-0.00000118	0.00000000
+		-6.26375159	-0.00149070	0.00091316	0.00149866	-0.00000118	0.00000000
+		-6.26377969	-0.00148999	0.00091273	0.00149795	-0.00000118	0.00000000
+		-6.26380769	-0.00148928	0.00091230	0.00149723	-0.00000118	0.00000000
+		-6.26383560	-0.00148857	0.00091187	0.00149652	-0.00000118	0.00000000
+		-6.26386340	-0.00148787	0.00091144	0.00149581	-0.00000118	0.00000000
+		-6.26389110	-0.00148716	0.00091101	0.00149510	-0.00000118	0.00000000
+		-6.26391870	-0.00148645	0.00091058	0.00149439	-0.00000118	0.00000000
+		-6.26394621	-0.00148575	0.00091016	0.00149368	-0.00000118	0.00000000
+		-6.26397361	-0.00148504	0.00090973	0.00149297	-0.00000118	0.00000000
+		-6.26400092	-0.00148434	0.00090930	0.00149226	-0.00000118	0.00000000
+		-6.26402813	-0.00148363	0.00090887	0.00149155	-0.00000118	0.00000000
+		-6.26405524	-0.00148293	0.00090844	0.00149084	-0.00000118	0.00000000
+		-6.26408225	-0.00148223	0.00090802	0.00149014	-0.00000118	0.00000000
+		-6.26410916	-0.00148152	0.00090759	0.00148943	-0.00000118	0.00000000
+		-6.26413598	-0.00148082	0.00090717	0.00148872	-0.00000118	0.00000000
+		-6.26416271	-0.00148012	0.00090674	0.00148802	-0.00000118	0.00000000
+		-6.26418933	-0.00147942	0.00090631	0.00148732	-0.00000118	0.00000000
+		-6.26421586	-0.00147872	0.00090589	0.00148661	-0.00000118	0.00000000
+		-6.26424230	-0.00147802	0.00090547	0.00148591	-0.00000118	0.00000000
+		-6.26426864	-0.00147733	0.00090504	0.00148521	-0.00000118	0.00000000
+		-6.26429489	-0.00147663	0.00090462	0.00148450	-0.00000118	0.00000000
+		-6.26432104	-0.00147593	0.00090419	0.00148380	-0.00000118	0.00000000
+		-6.26434710	-0.00147523	0.00090377	0.00148310	-0.00000118	0.00000000
+		-6.26437306	-0.00147454	0.00090335	0.00148240	-0.00000118	0.00000000
+		-6.26439893	-0.00147384	0.00090293	0.00148170	-0.00000118	0.00000000
+		-6.26442471	-0.00147315	0.00090250	0.00148101	-0.00000118	0.00000000
+		-6.26445040	-0.00147246	0.00090208	0.00148031	-0.00000118	0.00000000
+		-6.26447599	-0.00147176	0.00090166	0.00147961	-0.00000118	0.00000000
+		-6.26450150	-0.00147107	0.00090124	0.00147891	-0.00000118	0.00000000
+		-6.26452691	-0.00147038	0.00090082	0.00147822	-0.00000118	0.00000000
+		-6.26455222	-0.00146969	0.00090040	0.00147752	-0.00000118	0.00000000
+		-6.26457745	-0.00146900	0.00089998	0.00147683	-0.00000118	0.00000000
+		-6.26460259	-0.00146831	0.00089956	0.00147613	-0.00000118	0.00000000
+		-6.26462764	-0.00146762	0.00089914	0.00147544	-0.00000118	0.00000000
+		-6.26465259	-0.00146693	0.00089872	0.00147475	-0.00000118	0.00000000
+		-6.26467746	-0.00146624	0.00089831	0.00147406	-0.00000118	0.00000000
+		-6.26470224	-0.00146555	0.00089789	0.00147336	-0.00000118	0.00000000
+		-6.26472693	-0.00146486	0.00089747	0.00147267	-0.00000118	0.00000000
+		-6.26475153	-0.00146418	0.00089705	0.00147198	-0.00000118	0.00000000
+		-6.26477604	-0.00146349	0.00089664	0.00147129	-0.00000118	0.00000000
+		-6.26480047	-0.00146281	0.00089622	0.00147060	-0.00000118	0.00000000
+		-6.26482481	-0.00146212	0.00089580	0.00146992	-0.00000118	0.00000000
+		-6.26484906	-0.00146144	0.00089539	0.00146923	-0.00000118	0.00000000
+		-6.26487322	-0.00146076	0.00089497	0.00146854	-0.00000118	0.00000000
+		-6.26489730	-0.00146007	0.00089456	0.00146785	-0.00000118	0.00000000
+		-6.26492129	-0.00145939	0.00089414	0.00146717	-0.00000118	0.00000000
+		-6.26494519	-0.00145871	0.00089373	0.00146648	-0.00000118	0.00000000
+		-6.26496901	-0.00145803	0.00089332	0.00146580	-0.00000118	0.00000000
+		-6.26499274	-0.00145735	0.00089290	0.00146511	-0.00000118	0.00000000
+		-6.26501639	-0.00145667	0.00089249	0.00146443	-0.00000118	0.00000000
+		-6.26503995	-0.00145599	0.00089208	0.00146375	-0.00000118	0.00000000
+		-6.26506343	-0.00145531	0.00089166	0.00146307	-0.00000118	0.00000000
+		-6.26508682	-0.00145463	0.00089125	0.00146238	-0.00000118	0.00000000
+		-6.26511013	-0.00145396	0.00089084	0.00146170	-0.00000118	0.00000000
+		-6.26513336	-0.00145328	0.00089043	0.00146102	-0.00000118	0.00000000
+		-6.26515650	-0.00145261	0.00089002	0.00146034	-0.00000118	0.00000000
+		-6.26517956	-0.00145193	0.00088961	0.00145966	-0.00000118	0.00000000
+		-6.26520254	-0.00145126	0.00088920	0.00145898	-0.00000118	0.00000000
+		-6.26522543	-0.00145058	0.00088879	0.00145831	-0.00000118	0.00000000
+		-6.26524824	-0.00144991	0.00088838	0.00145763	-0.00000118	0.00000000
+		-6.26527098	-0.00144924	0.00088797	0.00145695	-0.00000118	0.00000000
+		-6.26529363	-0.00144856	0.00088756	0.00145628	-0.00000118	0.00000000
+		-6.26531619	-0.00144789	0.00088715	0.00145560	-0.00000118	0.00000000
+		-6.26533868	-0.00144722	0.00088674	0.00145493	-0.00000118	0.00000000
+		-6.26536109	-0.00144655	0.00088634	0.00145425	-0.00000118	0.00000000
+		-6.26538341	-0.00144588	0.00088593	0.00145358	-0.00000118	0.00000000
+		-6.26540566	-0.00144521	0.00088552	0.00145291	-0.00000118	0.00000000
+		-6.26542783	-0.00144454	0.00088511	0.00145223	-0.00000118	0.00000000
+		-6.26544992	-0.00144387	0.00088471	0.00145156	-0.00000118	0.00000000
+		-6.26547192	-0.00144321	0.00088430	0.00145089	-0.00000118	0.00000000
+		-6.26549385	-0.00144254	0.00088390	0.00145022	-0.00000118	0.00000000
+		-6.26551570	-0.00144187	0.00088349	0.00144955	-0.00000118	0.00000000
+		-6.26553748	-0.00144121	0.00088309	0.00144888	-0.00000118	0.00000000
+		-6.26555917	-0.00144054	0.00088268	0.00144821	-0.00000118	0.00000000
+		-6.26558079	-0.00143988	0.00088228	0.00144754	-0.00000118	0.00000000
+		-6.26560233	-0.00143922	0.00088187	0.00144687	-0.00000118	0.00000000
+		-6.26562379	-0.00143855	0.00088147	0.00144621	-0.00000118	0.00000000
+		-6.26564518	-0.00143789	0.00088107	0.00144554	-0.00000118	0.00000000
+		-6.26566648	-0.00143723	0.00088066	0.00144488	-0.00000118	0.00000000
+		-6.26568772	-0.00143657	0.00088026	0.00144421	-0.00000118	0.00000000
+		-6.26570887	-0.00143590	0.00087986	0.00144355	-0.00000118	0.00000000
+		-6.26572995	-0.00143524	0.00087946	0.00144288	-0.00000118	0.00000000
+		-6.26575096	-0.00143458	0.00087906	0.00144222	-0.00000118	0.00000000
+		-6.26577189	-0.00143393	0.00087865	0.00144155	-0.00000118	0.00000000
+		-6.26579274	-0.00143327	0.00087825	0.00144089	-0.00000118	0.00000000
+		-6.26581352	-0.00143261	0.00087785	0.00144023	-0.00000118	0.00000000
+		-6.26583423	-0.00143195	0.00087745	0.00143957	-0.00000118	0.00000000
+		-6.26585486	-0.00143130	0.00087705	0.00143891	-0.00000118	0.00000000
+		-6.26587542	-0.00143064	0.00087665	0.00143825	-0.00000118	0.00000000
+		-6.26589591	-0.00142998	0.00087626	0.00143759	-0.00000118	0.00000000
+		-6.26591632	-0.00142933	0.00087586	0.00143693	-0.00000118	0.00000000
+		-6.26593666	-0.00142867	0.00087546	0.00143627	-0.00000118	0.00000000
+		-6.26595692	-0.00142802	0.00087506	0.00143562	-0.00000118	0.00000000
+		-6.26597711	-0.00142737	0.00087466	0.00143496	-0.00000118	0.00000000
+		-6.26599724	-0.00142671	0.00087426	0.00143430	-0.00000118	0.00000000
+		-6.26601728	-0.00142606	0.00087387	0.00143365	-0.00000118	0.00000000
+		-6.26603726	-0.00142541	0.00087347	0.00143299	-0.00000118	0.00000000
+		-6.26605717	-0.00142476	0.00087307	0.00143234	-0.00000118	0.00000000
+		-6.26607700	-0.00142411	0.00087268	0.00143168	-0.00000118	0.00000000
+		-6.26609676	-0.00142346	0.00087228	0.00143103	-0.00000118	0.00000000
+		-6.26611646	-0.00142281	0.00087189	0.00143038	-0.00000118	0.00000000
+		-6.26613608	-0.00142216	0.00087149	0.00142972	-0.00000118	0.00000000
+		-6.26615563	-0.00142151	0.00087110	0.00142907	-0.00000118	0.00000000
+		-6.26617512	-0.00142087	0.00087070	0.00142842	-0.00000118	0.00000000
+		-6.26619453	-0.00142022	0.00087031	0.00142777	-0.00000118	0.00000000
+		-6.26621387	-0.00141957	0.00086992	0.00142712	-0.00000118	0.00000000
+		-6.26623315	-0.00141893	0.00086952	0.00142647	-0.00000118	0.00000000
+		-6.26625235	-0.00141828	0.00086913	0.00142582	-0.00000118	0.00000000
+		-6.26627149	-0.00141764	0.00086874	0.00142517	-0.00000118	0.00000000
+		-6.26629056	-0.00141699	0.00086835	0.00142452	-0.00000118	0.00000000
+		-6.26630956	-0.00141635	0.00086795	0.00142388	-0.00000118	0.00000000
+		-6.26632849	-0.00141571	0.00086756	0.00142323	-0.00000118	0.00000000
+		-6.26634735	-0.00141506	0.00086717	0.00142258	-0.00000118	0.00000000
+		-6.26636615	-0.00141442	0.00086678	0.00142194	-0.00000118	0.00000000
+		-6.26638488	-0.00141378	0.00086639	0.00142129	-0.00000118	0.00000000
+		-6.26640355	-0.00141314	0.00086600	0.00142065	-0.00000118	0.00000000
+		-6.26642214	-0.00141250	0.00086561	0.00142001	-0.00000118	0.00000000
+		-6.26644067	-0.00141186	0.00086522	0.00141936	-0.00000118	0.00000000
+		-6.26645914	-0.00141122	0.00086483	0.00141872	-0.00000118	0.00000000
+		-6.26647754	-0.00141058	0.00086444	0.00141808	-0.00000118	0.00000000
+		-6.26649587	-0.00140995	0.00086405	0.00141744	-0.00000118	0.00000000
+		-6.26651414	-0.00140931	0.00086366	0.00141680	-0.00000118	0.00000000
+		-6.26653234	-0.00140867	0.00086328	0.00141616	-0.00000118	0.00000000
+		-6.26655048	-0.00140804	0.00086289	0.00141552	-0.00000118	0.00000000
+		-6.26656855	-0.00140740	0.00086250	0.00141488	-0.00000118	0.00000000
+		-6.26658656	-0.00140677	0.00086211	0.00141424	-0.00000118	0.00000000
+		-6.26660450	-0.00140613	0.00086173	0.00141360	-0.00000118	0.00000000
+		-6.26662238	-0.00140550	0.00086134	0.00141296	-0.00000118	0.00000000
+		-6.26664020	-0.00140486	0.00086096	0.00141233	-0.00000118	0.00000000
+		-6.26665795	-0.00140423	0.00086057	0.00141169	-0.00000118	0.00000000
+		-6.26667564	-0.00140360	0.00086018	0.00141105	-0.00000118	0.00000000
+		-6.26669326	-0.00140297	0.00085980	0.00141042	-0.00000118	0.00000000
+		-6.26671083	-0.00140234	0.00085942	0.00140978	-0.00000118	0.00000000
+		-6.26672833	-0.00140171	0.00085903	0.00140915	-0.00000118	0.00000000
+		-6.26674577	-0.00140108	0.00085865	0.00140852	-0.00000118	0.00000000
+		-6.26676314	-0.00140045	0.00085826	0.00140788	-0.00000118	0.00000000
+		-6.26678046	-0.00139982	0.00085788	0.00140725	-0.00000118	0.00000000
+		-6.26679771	-0.00139919	0.00085750	0.00140662	-0.00000118	0.00000000
+		-6.26681490	-0.00139856	0.00085711	0.00140599	-0.00000118	0.00000000
+		-6.26683203	-0.00139793	0.00085673	0.00140536	-0.00000118	0.00000000
+		-6.26684910	-0.00139731	0.00085635	0.00140472	-0.00000118	0.00000000
+		-6.26686611	-0.00139668	0.00085597	0.00140409	-0.00000118	0.00000000
+		-6.26688306	-0.00139605	0.00085559	0.00140347	-0.00000118	0.00000000
+		-6.26689994	-0.00139543	0.00085521	0.00140284	-0.00000118	0.00000000
+		-6.26691677	-0.00139481	0.00085482	0.00140221	-0.00000118	0.00000000
+		-6.26693354	-0.00139418	0.00085444	0.00140158	-0.00000118	0.00000000
+		-6.26695024	-0.00139356	0.00085406	0.00140095	-0.00000118	0.00000000
+		-6.26696689	-0.00139293	0.00085368	0.00140033	-0.00000118	0.00000000
+		-6.26698348	-0.00139231	0.00085331	0.00139970	-0.00000118	0.00000000
+		-6.26700001	-0.00139169	0.00085293	0.00139908	-0.00000118	0.00000000
+		-6.26701648	-0.00139107	0.00085255	0.00139845	-0.00000118	0.00000000
+		-6.26703289	-0.00139045	0.00085217	0.00139783	-0.00000118	0.00000000
+		-6.26704925	-0.00138983	0.00085179	0.00139720	-0.00000118	0.00000000
+		-6.26706554	-0.00138921	0.00085141	0.00139658	-0.00000118	0.00000000
+		-6.26708178	-0.00138859	0.00085104	0.00139596	-0.00000118	0.00000000
+		-6.26709796	-0.00138797	0.00085066	0.00139534	-0.00000118	0.00000000
+		-6.26711408	-0.00138735	0.00085028	0.00139471	-0.00000118	0.00000000
+		-6.26713015	-0.00138674	0.00084990	0.00139409	-0.00000118	0.00000000
+		-6.26714616	-0.00138612	0.00084953	0.00139347	-0.00000118	0.00000000
+		-6.26716211	-0.00138550	0.00084915	0.00139285	-0.00000118	0.00000000
+		-6.26717800	-0.00138489	0.00084878	0.00139223	-0.00000118	0.00000000
+		-6.26719384	-0.00138427	0.00084840	0.00139161	-0.00000118	0.00000000
+		-6.26720962	-0.00138366	0.00084803	0.00139100	-0.00000118	0.00000000
+		-6.26722535	-0.00138304	0.00084765	0.00139038	-0.00000118	0.00000000
+		-6.26724102	-0.00138243	0.00084728	0.00138976	-0.00000118	0.00000000
+		-6.26725663	-0.00138181	0.00084690	0.00138914	-0.00000118	0.00000000
+		-6.26727219	-0.00138120	0.00084653	0.00138853	-0.00000118	0.00000000
+		-6.26728769	-0.00138059	0.00084616	0.00138791	-0.00000118	0.00000000
+		-6.26730314	-0.00137998	0.00084578	0.00138730	-0.00000118	0.00000000
+		-6.26731854	-0.00137937	0.00084541	0.00138668	-0.00000118	0.00000000
+		-6.26733388	-0.00137876	0.00084504	0.00138607	-0.00000118	0.00000000
+		-6.26734916	-0.00137815	0.00084467	0.00138545	-0.00000118	0.00000000
+		-6.26736439	-0.00137754	0.00084429	0.00138484	-0.00000118	0.00000000
+		-6.26737957	-0.00137693	0.00084392	0.00138423	-0.00000118	0.00000000
+		-6.26739469	-0.00137632	0.00084355	0.00138362	-0.00000118	0.00000000
+		-6.26740976	-0.00137571	0.00084318	0.00138301	-0.00000118	0.00000000
+		-6.26742477	-0.00137510	0.00084281	0.00138239	-0.00000118	0.00000000
+		-6.26743974	-0.00137450	0.00084244	0.00138178	-0.00000118	0.00000000
+		-6.26745464	-0.00137389	0.00084207	0.00138117	-0.00000118	0.00000000
+		-6.26746950	-0.00137328	0.00084170	0.00138056	-0.00000118	0.00000000
+		-6.26748430	-0.00137268	0.00084133	0.00137996	-0.00000117	0.00000000
+		-6.26749906	-0.00137207	0.00084096	0.00137935	-0.00000117	0.00000000
+		-6.26751375	-0.00137147	0.00084059	0.00137874	-0.00000117	0.00000000
+		-6.26752840	-0.00137087	0.00084022	0.00137813	-0.00000117	0.00000000
+		-6.26754300	-0.00137026	0.00083986	0.00137753	-0.00000117	0.00000000
+		-6.26755754	-0.00136966	0.00083949	0.00137692	-0.00000117	0.00000000
+		-6.26757203	-0.00136906	0.00083912	0.00137631	-0.00000117	0.00000000
+		-6.26758647	-0.00136846	0.00083875	0.00137571	-0.00000117	0.00000000
+		-6.26760086	-0.00136786	0.00083839	0.00137510	-0.00000117	0.00000000
+		-6.26761520	-0.00136725	0.00083802	0.00137450	-0.00000117	0.00000000
+		-6.26762949	-0.00136665	0.00083765	0.00137390	-0.00000117	0.00000000
+		-6.26764372	-0.00136605	0.00083729	0.00137329	-0.00000117	0.00000000
+		-6.26765791	-0.00136546	0.00083692	0.00137269	-0.00000117	0.00000000
+		-6.26767205	-0.00136486	0.00083656	0.00137209	-0.00000117	0.00000000
+		-6.26768613	-0.00136426	0.00083619	0.00137149	-0.00000117	0.00000000
+		-6.26770017	-0.00136366	0.00083583	0.00137089	-0.00000117	0.00000000
+		-6.26771416	-0.00136306	0.00083546	0.00137029	-0.00000117	0.00000000
+		-6.26772809	-0.00136247	0.00083510	0.00136969	-0.00000117	0.00000000
+		-6.26774198	-0.00136187	0.00083474	0.00136909	-0.00000117	0.00000000
+		-6.26775582	-0.00136128	0.00083437	0.00136849	-0.00000117	0.00000000
+		-6.26776961	-0.00136068	0.00083401	0.00136789	-0.00000117	0.00000000
+		-6.26778335	-0.00136009	0.00083365	0.00136729	-0.00000117	0.00000000
+		-6.26779704	-0.00135949	0.00083328	0.00136669	-0.00000117	0.00000000
+		-6.26781069	-0.00135890	0.00083292	0.00136610	-0.00000117	0.00000000
+		-6.26782428	-0.00135831	0.00083256	0.00136550	-0.00000117	0.00000000
+		-6.26783783	-0.00135771	0.00083220	0.00136490	-0.00000117	0.00000000
+		-6.26785133	-0.00135712	0.00083184	0.00136431	-0.00000117	0.00000000
+		-6.26786479	-0.00135653	0.00083148	0.00136371	-0.00000117	0.00000000
+		-6.26787819	-0.00135594	0.00083111	0.00136312	-0.00000117	0.00000000
+		-6.26789155	-0.00135535	0.00083075	0.00136253	-0.00000117	0.00000000
+		-6.26790486	-0.00135476	0.00083039	0.00136193	-0.00000117	0.00000000
+		-6.26791812	-0.00135417	0.00083003	0.00136134	-0.00000117	0.00000000
+		-6.26793134	-0.00135358	0.00082967	0.00136075	-0.00000117	0.00000000
+		-6.26794451	-0.00135299	0.00082931	0.00136016	-0.00000117	0.00000000
+		-6.26795764	-0.00135240	0.00082896	0.00135956	-0.00000117	0.00000000
+		-6.26797071	-0.00135182	0.00082860	0.00135897	-0.00000117	0.00000000
+		-6.26798374	-0.00135123	0.00082824	0.00135838	-0.00000117	0.00000000
+		-6.26799673	-0.00135064	0.00082788	0.00135779	-0.00000117	0.00000000
+		-6.26800967	-0.00135006	0.00082752	0.00135720	-0.00000117	0.00000000
+		-6.26802256	-0.00134947	0.00082717	0.00135662	-0.00000117	0.00000000
+		-6.26803541	-0.00134889	0.00082681	0.00135603	-0.00000117	0.00000000
+		-6.26804822	-0.00134830	0.00082645	0.00135544	-0.00000117	0.00000000
+		-6.26806098	-0.00134772	0.00082609	0.00135485	-0.00000117	0.00000000
+		-6.26807369	-0.00134713	0.00082574	0.00135427	-0.00000117	0.00000000
+		-6.26808636	-0.00134655	0.00082538	0.00135368	-0.00000117	0.00000000
+		-6.26809898	-0.00134597	0.00082503	0.00135309	-0.00000117	0.00000000
+		-6.26811156	-0.00134539	0.00082467	0.00135251	-0.00000117	0.00000000
+		-6.26812410	-0.00134481	0.00082432	0.00135192	-0.00000117	0.00000000
+		-6.26813659	-0.00134422	0.00082396	0.00135134	-0.00000117	0.00000000
+		-6.26814904	-0.00134364	0.00082361	0.00135075	-0.00000117	0.00000000
+		-6.26816144	-0.00134306	0.00082325	0.00135017	-0.00000117	0.00000000
+		-6.26817380	-0.00134248	0.00082290	0.00134959	-0.00000117	0.00000000
+		-6.26818612	-0.00134191	0.00082255	0.00134901	-0.00000117	0.00000000
+		-6.26819839	-0.00134133	0.00082219	0.00134842	-0.00000117	0.00000000
+		-6.26821062	-0.00134075	0.00082184	0.00134784	-0.00000117	0.00000000
+		-6.26822281	-0.00134017	0.00082149	0.00134726	-0.00000117	0.00000000
+		-6.26823495	-0.00133959	0.00082113	0.00134668	-0.00000117	0.00000000
+		-6.26824705	-0.00133902	0.00082078	0.00134610	-0.00000117	0.00000000
+		-6.26825911	-0.00133844	0.00082043	0.00134552	-0.00000117	0.00000000
+		-6.26827113	-0.00133787	0.00082008	0.00134494	-0.00000117	0.00000000
+		-6.26828310	-0.00133729	0.00081973	0.00134437	-0.00000117	0.00000000
+		-6.26829504	-0.00133672	0.00081938	0.00134379	-0.00000117	0.00000000
+		-6.26830693	-0.00133614	0.00081902	0.00134321	-0.00000117	0.00000000
+		-6.26831878	-0.00133557	0.00081867	0.00134263	-0.00000117	0.00000000
+		-6.26833058	-0.00133499	0.00081832	0.00134206	-0.00000117	0.00000000
+		-6.26834235	-0.00133442	0.00081797	0.00134148	-0.00000117	0.00000000
+		-6.26835407	-0.00133385	0.00081762	0.00134090	-0.00000117	0.00000000
+		-6.26836576	-0.00133328	0.00081728	0.00134033	-0.00000117	0.00000000
+		-6.26837740	-0.00133271	0.00081693	0.00133976	-0.00000117	0.00000000
+		-6.26838900	-0.00133214	0.00081658	0.00133918	-0.00000117	0.00000000
+		-6.26840056	-0.00133157	0.00081623	0.00133861	-0.00000117	0.00000000
+		-6.26841209	-0.00133100	0.00081588	0.00133803	-0.00000117	0.00000000
+		-6.26842357	-0.00133043	0.00081553	0.00133746	-0.00000117	0.00000000
+		-6.26843501	-0.00132986	0.00081519	0.00133689	-0.00000117	0.00000000
+		-6.26844641	-0.00132929	0.00081484	0.00133632	-0.00000117	0.00000000
+		-6.26845777	-0.00132872	0.00081449	0.00133575	-0.00000117	0.00000000
+		-6.26846909	-0.00132815	0.00081414	0.00133518	-0.00000117	0.00000000
+		-6.26848037	-0.00132759	0.00081380	0.00133461	-0.00000117	0.00000000
+		-6.26849161	-0.00132702	0.00081345	0.00133404	-0.00000117	0.00000000
+		-6.26850281	-0.00132645	0.00081311	0.00133347	-0.00000117	0.00000000
+		-6.26851397	-0.00132589	0.00081276	0.00133290	-0.00000117	0.00000000
+		-6.26852510	-0.00132532	0.00081242	0.00133233	-0.00000117	0.00000000
+		-6.26853618	-0.00132476	0.00081207	0.00133176	-0.00000117	0.00000000
+		-6.26854723	-0.00132419	0.00081173	0.00133120	-0.00000117	0.00000000
+		-6.26855824	-0.00132363	0.00081138	0.00133063	-0.00000117	0.00000000
+		-6.26856921	-0.00132307	0.00081104	0.00133006	-0.00000117	0.00000000
+		-6.26858014	-0.00132251	0.00081069	0.00132950	-0.00000117	0.00000000
+		-6.26859103	-0.00132194	0.00081035	0.00132893	-0.00000117	0.00000000
+		-6.26860188	-0.00132138	0.00081001	0.00132837	-0.00000117	0.00000000
+		-6.26861270	-0.00132082	0.00080966	0.00132780	-0.00000117	0.00000000
+		-6.26862348	-0.00132026	0.00080932	0.00132724	-0.00000117	0.00000000
+		-6.26863422	-0.00131970	0.00080898	0.00132667	-0.00000117	0.00000000
+		-6.26864493	-0.00131914	0.00080864	0.00132611	-0.00000117	0.00000000
+		-6.26865559	-0.00131858	0.00080829	0.00132555	-0.00000117	0.00000000
+		-6.26866622	-0.00131802	0.00080795	0.00132499	-0.00000117	0.00000000
+		-6.26867681	-0.00131746	0.00080761	0.00132442	-0.00000117	0.00000000
+		-6.26868737	-0.00131690	0.00080727	0.00132386	-0.00000117	0.00000000
+		-6.26869789	-0.00131635	0.00080693	0.00132330	-0.00000117	0.00000000
+		-6.26870837	-0.00131579	0.00080659	0.00132274	-0.00000117	0.00000000
+		-6.26871882	-0.00131523	0.00080625	0.00132218	-0.00000117	0.00000000
+		-6.26872923	-0.00131468	0.00080591	0.00132162	-0.00000117	0.00000000
+		-6.26873960	-0.00131412	0.00080557	0.00132106	-0.00000117	0.00000000
+		-6.26874993	-0.00131357	0.00080523	0.00132050	-0.00000117	0.00000000
+		-6.26876024	-0.00131301	0.00080489	0.00131995	-0.00000117	0.00000000
+		-6.26877050	-0.00131246	0.00080455	0.00131939	-0.00000117	0.00000000
+		-6.26878073	-0.00131190	0.00080421	0.00131883	-0.00000117	0.00000000
+		-6.26879092	-0.00131135	0.00080387	0.00131828	-0.00000117	0.00000000
+		-6.26880108	-0.00131080	0.00080354	0.00131772	-0.00000117	0.00000000
+		-6.26881120	-0.00131024	0.00080320	0.00131716	-0.00000117	0.00000000
+		-6.26882129	-0.00130969	0.00080286	0.00131661	-0.00000117	0.00000000
+		-6.26883135	-0.00130914	0.00080252	0.00131605	-0.00000117	0.00000000
+		-6.26884136	-0.00130859	0.00080219	0.00131550	-0.00000117	0.00000000
+		-6.26885135	-0.00130804	0.00080185	0.00131495	-0.00000117	0.00000000
+		-6.26886129	-0.00130749	0.00080151	0.00131439	-0.00000117	0.00000000
+		-6.26887121	-0.00130694	0.00080118	0.00131384	-0.00000117	0.00000000
+		-6.26888109	-0.00130639	0.00080084	0.00131329	-0.00000117	0.00000000
+		-6.26889093	-0.00130584	0.00080051	0.00131274	-0.00000117	0.00000000
+		-6.26890074	-0.00130529	0.00080017	0.00131218	-0.00000117	0.00000000
+		-6.26891052	-0.00130474	0.00079984	0.00131163	-0.00000117	0.00000000
+		-6.26892026	-0.00130420	0.00079950	0.00131108	-0.00000117	0.00000000
+		-6.26892997	-0.00130365	0.00079917	0.00131053	-0.00000117	0.00000000
+		-6.26893965	-0.00130310	0.00079883	0.00130998	-0.00000117	0.00000000
+		-6.26894929	-0.00130256	0.00079850	0.00130943	-0.00000117	0.00000000
+		-6.26895890	-0.00130201	0.00079816	0.00130888	-0.00000117	0.00000000
+		-6.26896848	-0.00130146	0.00079783	0.00130834	-0.00000117	0.00000000
+		-6.26897802	-0.00130092	0.00079750	0.00130779	-0.00000117	0.00000000
+		-6.26898753	-0.00130038	0.00079717	0.00130724	-0.00000117	0.00000000
+		-6.26899700	-0.00129983	0.00079683	0.00130669	-0.00000117	0.00000000
+		-6.26900645	-0.00129929	0.00079650	0.00130615	-0.00000117	0.00000000
+		-6.26901586	-0.00129875	0.00079617	0.00130560	-0.00000117	0.00000000
+		-6.26902524	-0.00129820	0.00079584	0.00130506	-0.00000117	0.00000000
+		-6.26903458	-0.00129766	0.00079550	0.00130451	-0.00000117	0.00000000
+		-6.26904390	-0.00129712	0.00079517	0.00130397	-0.00000117	0.00000000
+		-6.26905318	-0.00129658	0.00079484	0.00130342	-0.00000117	0.00000000
+		-6.26906243	-0.00129604	0.00079451	0.00130288	-0.00000117	0.00000000
+		-6.26907164	-0.00129550	0.00079418	0.00130233	-0.00000117	0.00000000
+		-6.26908083	-0.00129496	0.00079385	0.00130179	-0.00000117	0.00000000
+		-6.26908998	-0.00129442	0.00079352	0.00130125	-0.00000117	0.00000000
+		-6.26909911	-0.00129388	0.00079319	0.00130071	-0.00000117	0.00000000
+		-6.26910820	-0.00129334	0.00079286	0.00130016	-0.00000117	0.00000000
+		-6.26911726	-0.00129280	0.00079253	0.00129962	-0.00000117	0.00000000
+		-6.26912629	-0.00129226	0.00079220	0.00129908	-0.00000117	0.00000000
+		-6.26913528	-0.00129173	0.00079188	0.00129854	-0.00000117	0.00000000
+		-6.26914425	-0.00129119	0.00079155	0.00129800	-0.00000117	0.00000000
+		-6.26915318	-0.00129065	0.00079122	0.00129746	-0.00000117	0.00000000
+		-6.26916209	-0.00129012	0.00079089	0.00129692	-0.00000117	0.00000000
+		-6.26917096	-0.00128958	0.00079056	0.00129639	-0.00000117	0.00000000
+		-6.26917981	-0.00128905	0.00079024	0.00129585	-0.00000117	0.00000000
+		-6.26918862	-0.00128851	0.00078991	0.00129531	-0.00000117	0.00000000
+		-6.26919740	-0.00128798	0.00078958	0.00129477	-0.00000117	0.00000000
+		-6.26920615	-0.00128744	0.00078926	0.00129424	-0.00000117	0.00000000
+		-6.26921488	-0.00128691	0.00078893	0.00129370	-0.00000117	0.00000000
+		-6.26922357	-0.00128638	0.00078860	0.00129316	-0.00000117	0.00000000
+		-6.26923223	-0.00128585	0.00078828	0.00129263	-0.00000117	0.00000000
+		-6.26924086	-0.00128531	0.00078795	0.00129209	-0.00000117	0.00000000
+		-6.26924947	-0.00128478	0.00078763	0.00129156	-0.00000117	0.00000000
+		-6.26925804	-0.00128425	0.00078730	0.00129102	-0.00000117	0.00000000
+		-6.26926658	-0.00128372	0.00078698	0.00129049	-0.00000117	0.00000000
+		-6.26927510	-0.00128319	0.00078665	0.00128996	-0.00000117	0.00000000
+		-6.26928358	-0.00128266	0.00078633	0.00128942	-0.00000117	0.00000000
+		-6.26929204	-0.00128213	0.00078601	0.00128889	-0.00000117	0.00000000
+		-6.26930047	-0.00128160	0.00078568	0.00128836	-0.00000117	0.00000000
+		-6.26930887	-0.00128107	0.00078536	0.00128783	-0.00000117	0.00000000
+		-6.26931724	-0.00128054	0.00078504	0.00128730	-0.00000117	0.00000000
+		-6.26932558	-0.00128002	0.00078471	0.00128677	-0.00000117	0.00000000
+		-6.26933389	-0.00127949	0.00078439	0.00128624	-0.00000117	0.00000000
+		-6.26934217	-0.00127896	0.00078407	0.00128571	-0.00000117	0.00000000
+		-6.26935043	-0.00127844	0.00078375	0.00128518	-0.00000117	0.00000000
+		-6.26935866	-0.00127791	0.00078342	0.00128465	-0.00000117	0.00000000
+		-6.26936686	-0.00127738	0.00078310	0.00128412	-0.00000117	0.00000000
+		-6.26937503	-0.00127686	0.00078278	0.00128359	-0.00000117	0.00000000
+		-6.26938317	-0.00127634	0.00078246	0.00128306	-0.00000117	0.00000000
+		-6.26939129	-0.00127581	0.00078214	0.00128254	-0.00000117	0.00000000
+		-6.26939937	-0.00127529	0.00078182	0.00128201	-0.00000117	0.00000000
+		-6.26940743	-0.00127476	0.00078150	0.00128148	-0.00000117	0.00000000
+		-6.26941547	-0.00127424	0.00078118	0.00128096	-0.00000117	0.00000000
+		-6.26942347	-0.00127372	0.00078086	0.00128043	-0.00000117	0.00000000
+		-6.26943145	-0.00127320	0.00078054	0.00127991	-0.00000117	0.00000000
+		-6.26943940	-0.00127267	0.00078022	0.00127938	-0.00000117	0.00000000
+		-6.26944732	-0.00127215	0.00077990	0.00127886	-0.00000117	0.00000000
+		-6.26945522	-0.00127163	0.00077958	0.00127833	-0.00000117	0.00000000
+		-6.26946309	-0.00127111	0.00077926	0.00127781	-0.00000117	0.00000000
+		-6.26947093	-0.00127059	0.00077895	0.00127729	-0.00000117	0.00000000
+		-6.26947875	-0.00127007	0.00077863	0.00127677	-0.00000117	0.00000000
+		-6.26948654	-0.00126955	0.00077831	0.00127624	-0.00000117	0.00000000
+		-6.26949430	-0.00126903	0.00077799	0.00127572	-0.00000117	0.00000000
+		-6.26950204	-0.00126852	0.00077768	0.00127520	-0.00000117	0.00000000
+		-6.26950975	-0.00126800	0.00077736	0.00127468	-0.00000117	0.00000000
+		-6.26951743	-0.00126748	0.00077704	0.00127416	-0.00000117	0.00000000
+		-6.26952509	-0.00126696	0.00077673	0.00127364	-0.00000117	0.00000000
+		-6.26953272	-0.00126645	0.00077641	0.00127312	-0.00000117	0.00000000
+		-6.26954033	-0.00126593	0.00077609	0.00127260	-0.00000117	0.00000000
+		-6.26954791	-0.00126541	0.00077578	0.00127208	-0.00000117	0.00000000
+		-6.26955546	-0.00126490	0.00077546	0.00127156	-0.00000117	0.00000000
+		-6.26956299	-0.00126438	0.00077515	0.00127104	-0.00000117	0.00000000
+		-6.26957049	-0.00126387	0.00077483	0.00127053	-0.00000117	0.00000000
+		-6.26957797	-0.00126335	0.00077452	0.00127001	-0.00000117	0.00000000
+		-6.26958542	-0.00126284	0.00077420	0.00126949	-0.00000117	0.00000000
+		-6.26959285	-0.00126233	0.00077389	0.00126898	-0.00000117	0.00000000
+		-6.26960025	-0.00126181	0.00077357	0.00126846	-0.00000117	0.00000000
+		-6.26960763	-0.00126130	0.00077326	0.00126795	-0.00000117	0.00000000
+		-6.26961498	-0.00126079	0.00077295	0.00126743	-0.00000117	0.00000000
+		-6.26962230	-0.00126028	0.00077263	0.00126692	-0.00000117	0.00000000
+		-6.26962961	-0.00125977	0.00077232	0.00126640	-0.00000117	0.00000000
+		-6.26963688	-0.00125926	0.00077201	0.00126589	-0.00000117	0.00000000
+		-6.26964414	-0.00125874	0.00077170	0.00126537	-0.00000117	0.00000000
+		-6.26965137	-0.00125823	0.00077138	0.00126486	-0.00000117	0.00000000
+		-6.26965857	-0.00125772	0.00077107	0.00126435	-0.00000117	0.00000000
+		-6.26966575	-0.00125722	0.00077076	0.00126384	-0.00000117	0.00000000
+		-6.26967290	-0.00125671	0.00077045	0.00126333	-0.00000117	0.00000000
+		-6.26968003	-0.00125620	0.00077014	0.00126281	-0.00000117	0.00000000
+		-6.26968714	-0.00125569	0.00076983	0.00126230	-0.00000117	0.00000000
+		-6.26969422	-0.00125518	0.00076952	0.00126179	-0.00000117	0.00000000
+		-6.26970128	-0.00125468	0.00076920	0.00126128	-0.00000117	0.00000000
+		-6.26970832	-0.00125417	0.00076889	0.00126077	-0.00000117	0.00000000
+		-6.26971533	-0.00125366	0.00076858	0.00126026	-0.00000117	0.00000000
+		-6.26972232	-0.00125316	0.00076827	0.00125975	-0.00000117	0.00000000
+		-6.26972928	-0.00125265	0.00076797	0.00125925	-0.00000117	0.00000000
+		-6.26973622	-0.00125214	0.00076766	0.00125874	-0.00000117	0.00000000
+		-6.26974314	-0.00125164	0.00076735	0.00125823	-0.00000117	0.00000000
+		-6.26975003	-0.00125114	0.00076704	0.00125772	-0.00000117	0.00000000
+		-6.26975691	-0.00125063	0.00076673	0.00125722	-0.00000117	0.00000000
+		-6.26976375	-0.00125013	0.00076642	0.00125671	-0.00000117	0.00000000
+		-6.26977058	-0.00124962	0.00076611	0.00125620	-0.00000117	0.00000000
+		-6.26977738	-0.00124912	0.00076581	0.00125570	-0.00000117	0.00000000
+		-6.26978416	-0.00124862	0.00076550	0.00125519	-0.00000117	0.00000000
+		-6.26979092	-0.00124812	0.00076519	0.00125469	-0.00000117	0.00000000
+		-6.26979765	-0.00124762	0.00076488	0.00125418	-0.00000117	0.00000000
+		-6.26980436	-0.00124711	0.00076458	0.00125368	-0.00000117	0.00000000
+		-6.26981105	-0.00124661	0.00076427	0.00125318	-0.00000117	0.00000000
+		-6.26981772	-0.00124611	0.00076396	0.00125267	-0.00000117	0.00000000
+		-6.26982436	-0.00124561	0.00076366	0.00125217	-0.00000117	0.00000000
+		-6.26983098	-0.00124511	0.00076335	0.00125167	-0.00000117	0.00000000
+		-6.26983758	-0.00124461	0.00076305	0.00125116	-0.00000117	0.00000000
+		-6.26984416	-0.00124412	0.00076274	0.00125066	-0.00000117	0.00000000
+		-6.26985071	-0.00124362	0.00076244	0.00125016	-0.00000117	0.00000000
+		-6.26985725	-0.00124312	0.00076213	0.00124966	-0.00000117	0.00000000
+		-6.26986376	-0.00124262	0.00076183	0.00124916	-0.00000117	0.00000000
+		-6.26987025	-0.00124212	0.00076152	0.00124866	-0.00000117	0.00000000
+		-6.26987672	-0.00124163	0.00076122	0.00124816	-0.00000117	0.00000000
+		-6.26988316	-0.00124113	0.00076091	0.00124766	-0.00000117	0.00000000
+		-6.26988959	-0.00124063	0.00076061	0.00124716	-0.00000117	0.00000000
+		-6.26989599	-0.00124014	0.00076031	0.00124666	-0.00000117	0.00000000
+		-6.26990237	-0.00123964	0.00076000	0.00124617	-0.00000117	0.00000000
+		-6.26990873	-0.00123915	0.00075970	0.00124567	-0.00000117	0.00000000
+		-6.26991507	-0.00123865	0.00075940	0.00124517	-0.00000117	0.00000000
+		-6.26992139	-0.00123816	0.00075909	0.00124467	-0.00000117	0.00000000
+		-6.26992769	-0.00123767	0.00075879	0.00124418	-0.00000117	0.00000000
+		-6.26993396	-0.00123717	0.00075849	0.00124368	-0.00000117	0.00000000
+		-6.26994022	-0.00123668	0.00075819	0.00124319	-0.00000117	0.00000000
+		-6.26994645	-0.00123619	0.00075789	0.00124269	-0.00000117	0.00000000
+		-6.26995267	-0.00123569	0.00075758	0.00124219	-0.00000117	0.00000000
+		-6.26995886	-0.00123520	0.00075728	0.00124170	-0.00000117	0.00000000
+		-6.26996503	-0.00123471	0.00075698	0.00124121	-0.00000117	0.00000000
+		-6.26997119	-0.00123422	0.00075668	0.00124071	-0.00000117	0.00000000
+		-6.26997732	-0.00123373	0.00075638	0.00124022	-0.00000117	0.00000000
+		-6.26998343	-0.00123324	0.00075608	0.00123973	-0.00000117	0.00000000
+		-6.26998952	-0.00123275	0.00075578	0.00123923	-0.00000117	0.00000000
+		-6.26999559	-0.00123226	0.00075548	0.00123874	-0.00000117	0.00000000
+		-6.27000164	-0.00123177	0.00075518	0.00123825	-0.00000117	0.00000000
+		-6.27000767	-0.00123128	0.00075488	0.00123776	-0.00000117	0.00000000
+		-6.27001368	-0.00123079	0.00075458	0.00123727	-0.00000117	0.00000000
+		-6.27001968	-0.00123031	0.00075428	0.00123678	-0.00000117	0.00000000
+		-6.27002565	-0.00122982	0.00075399	0.00123629	-0.00000117	0.00000000
+		-6.27003160	-0.00122933	0.00075369	0.00123580	-0.00000117	0.00000000
+		-6.27003753	-0.00122884	0.00075339	0.00123531	-0.00000117	0.00000000
+		-6.27004344	-0.00122836	0.00075309	0.00123482	-0.00000117	0.00000000
+		-6.27004933	-0.00122787	0.00075279	0.00123433	-0.00000117	0.00000000
+		-6.27005521	-0.00122739	0.00075250	0.00123384	-0.00000117	0.00000000
+		-6.27006106	-0.00122690	0.00075220	0.00123335	-0.00000117	0.00000000
+		-6.27006690	-0.00122642	0.00075190	0.00123286	-0.00000117	0.00000000
+		-6.27007271	-0.00122593	0.00075160	0.00123238	-0.00000117	0.00000000
+		-6.27007851	-0.00122545	0.00075131	0.00123189	-0.00000117	0.00000000
+		-6.27008428	-0.00122496	0.00075101	0.00123140	-0.00000117	0.00000000
+		-6.27009004	-0.00122448	0.00075072	0.00123092	-0.00000117	0.00000000
+		-6.27009578	-0.00122400	0.00075042	0.00123043	-0.00000117	0.00000000
+		-6.27010150	-0.00122351	0.00075012	0.00122995	-0.00000117	0.00000000
+		-6.27010720	-0.00122303	0.00074983	0.00122946	-0.00000117	0.00000000
+		-6.27011288	-0.00122255	0.00074953	0.00122898	-0.00000117	0.00000000
+		-6.27011855	-0.00122207	0.00074924	0.00122849	-0.00000117	0.00000000
+		-6.27012419	-0.00122159	0.00074894	0.00122801	-0.00000117	0.00000000
+		-6.27012982	-0.00122111	0.00074865	0.00122752	-0.00000117	0.00000000
+		-6.27013543	-0.00122063	0.00074836	0.00122704	-0.00000117	0.00000000
+		-6.27014102	-0.00122015	0.00074806	0.00122656	-0.00000117	0.00000000
+		-6.27014659	-0.00121967	0.00074777	0.00122608	-0.00000117	0.00000000
+		-6.27015214	-0.00121919	0.00074747	0.00122559	-0.00000117	0.00000000
+		-6.27015767	-0.00121871	0.00074718	0.00122511	-0.00000117	0.00000000
+		-6.27016319	-0.00121823	0.00074689	0.00122463	-0.00000117	0.00000000
+		-6.27016869	-0.00121775	0.00074659	0.00122415	-0.00000117	0.00000000
+		-6.27017417	-0.00121727	0.00074630	0.00122367	-0.00000117	0.00000000
+		-6.27017963	-0.00121680	0.00074601	0.00122319	-0.00000117	0.00000000
+		-6.27018508	-0.00121632	0.00074572	0.00122271	-0.00000117	0.00000000
+		-6.27019050	-0.00121584	0.00074543	0.00122223	-0.00000117	0.00000000
+		-6.27019591	-0.00121537	0.00074513	0.00122175	-0.00000117	0.00000000
+		-6.27020130	-0.00121489	0.00074484	0.00122127	-0.00000117	0.00000000
+		-6.27020668	-0.00121441	0.00074455	0.00122080	-0.00000117	0.00000000
+		-6.27021203	-0.00121394	0.00074426	0.00122032	-0.00000117	0.00000000
+		-6.27021737	-0.00121346	0.00074397	0.00121984	-0.00000117	0.00000000
+		-6.27022270	-0.00121299	0.00074368	0.00121936	-0.00000117	0.00000000
+		-6.27022800	-0.00121252	0.00074339	0.00121889	-0.00000117	0.00000000
+		-6.27023329	-0.00121204	0.00074310	0.00121841	-0.00000117	0.00000000
+		-6.27023856	-0.00121157	0.00074281	0.00121793	-0.00000117	0.00000000
+		-6.27024381	-0.00121110	0.00074252	0.00121746	-0.00000117	0.00000000
+		-6.27024904	-0.00121062	0.00074223	0.00121698	-0.00000117	0.00000000
+		-6.27025426	-0.00121015	0.00074194	0.00121651	-0.00000117	0.00000000
+		-6.27025946	-0.00120968	0.00074165	0.00121603	-0.00000117	0.00000000
+		-6.27026465	-0.00120921	0.00074136	0.00121556	-0.00000117	0.00000000
+		-6.27026982	-0.00120874	0.00074107	0.00121509	-0.00000117	0.00000000
+		-6.27027497	-0.00120827	0.00074078	0.00121461	-0.00000117	0.00000000
+		-6.27028010	-0.00120780	0.00074050	0.00121414	-0.00000117	0.00000000
+		-6.27028522	-0.00120732	0.00074021	0.00121367	-0.00000116	0.00000000
+		-6.27029032	-0.00120686	0.00073992	0.00121319	-0.00000116	0.00000000
+		-6.27029541	-0.00120639	0.00073963	0.00121272	-0.00000116	0.00000000
+		-6.27030047	-0.00120592	0.00073934	0.00121225	-0.00000116	0.00000000
+		-6.27030552	-0.00120545	0.00073906	0.00121178	-0.00000116	0.00000000
+		-6.27031056	-0.00120498	0.00073877	0.00121131	-0.00000116	0.00000000
+		-6.27031558	-0.00120451	0.00073848	0.00121084	-0.00000116	0.00000000
+		-6.27032058	-0.00120404	0.00073820	0.00121037	-0.00000116	0.00000000
+		-6.27032557	-0.00120358	0.00073791	0.00120990	-0.00000116	0.00000000
+		-6.27033054	-0.00120311	0.00073763	0.00120943	-0.00000116	0.00000000
+		-6.27033549	-0.00120264	0.00073734	0.00120896	-0.00000116	0.00000000
+		-6.27034043	-0.00120218	0.00073705	0.00120849	-0.00000116	0.00000000
+		-6.27034536	-0.00120171	0.00073677	0.00120802	-0.00000116	0.00000000
+		-6.27035026	-0.00120125	0.00073648	0.00120755	-0.00000116	0.00000000
+		-6.27035515	-0.00120078	0.00073620	0.00120709	-0.00000116	0.00000000
+		-6.27036003	-0.00120032	0.00073591	0.00120662	-0.00000116	0.00000000
+		-6.27036489	-0.00119985	0.00073563	0.00120615	-0.00000116	0.00000000
+		-6.27036973	-0.00119939	0.00073535	0.00120569	-0.00000116	0.00000000
+		-6.27037456	-0.00119892	0.00073506	0.00120522	-0.00000116	0.00000000
+		-6.27037937	-0.00119846	0.00073478	0.00120475	-0.00000116	0.00000000
+		-6.27038417	-0.00119800	0.00073449	0.00120429	-0.00000116	0.00000000
+		-6.27038895	-0.00119754	0.00073421	0.00120382	-0.00000116	0.00000000
+		-6.27039372	-0.00119707	0.00073393	0.00120336	-0.00000116	0.00000000
+		-6.27039847	-0.00119661	0.00073364	0.00120289	-0.00000116	0.00000000
+		-6.27040321	-0.00119615	0.00073336	0.00120243	-0.00000116	0.00000000
+		-6.27040793	-0.00119569	0.00073308	0.00120197	-0.00000116	0.00000000
+		-6.27041263	-0.00119523	0.00073280	0.00120150	-0.00000116	0.00000000
+		-6.27041732	-0.00119477	0.00073251	0.00120104	-0.00000116	0.00000000
+		-6.27042200	-0.00119431	0.00073223	0.00120058	-0.00000116	0.00000000
+		-6.27042666	-0.00119385	0.00073195	0.00120011	-0.00000116	0.00000000
+		-6.27043131	-0.00119339	0.00073167	0.00119965	-0.00000116	0.00000000
+		-6.27043594	-0.00119293	0.00073139	0.00119919	-0.00000116	0.00000000
+		-6.27044055	-0.00119247	0.00073111	0.00119873	-0.00000116	0.00000000
+		-6.27044516	-0.00119201	0.00073083	0.00119827	-0.00000116	0.00000000
+		-6.27044974	-0.00119155	0.00073054	0.00119781	-0.00000116	0.00000000
+		-6.27045432	-0.00119110	0.00073026	0.00119735	-0.00000116	0.00000000
+		-6.27045887	-0.00119064	0.00072998	0.00119689	-0.00000116	0.00000000
+		-6.27046342	-0.00119018	0.00072970	0.00119643	-0.00000116	0.00000000
+		-6.27046795	-0.00118973	0.00072942	0.00119597	-0.00000116	0.00000000
+		-6.27047246	-0.00118927	0.00072914	0.00119551	-0.00000116	0.00000000
+		-6.27047696	-0.00118881	0.00072887	0.00119505	-0.00000116	0.00000000
+		-6.27048145	-0.00118836	0.00072859	0.00119459	-0.00000116	0.00000000
+		-6.27048592	-0.00118790	0.00072831	0.00119414	-0.00000116	0.00000000
+		-6.27049038	-0.00118745	0.00072803	0.00119368	-0.00000116	0.00000000
+		-6.27049482	-0.00118699	0.00072775	0.00119322	-0.00000116	0.00000000
+		-6.27049925	-0.00118654	0.00072747	0.00119277	-0.00000116	0.00000000
+		-6.27050366	-0.00118609	0.00072719	0.00119231	-0.00000116	0.00000000
+		-6.27050807	-0.00118563	0.00072692	0.00119185	-0.00000116	0.00000000
+		-6.27051245	-0.00118518	0.00072664	0.00119140	-0.00000116	0.00000000
+		-6.27051683	-0.00118473	0.00072636	0.00119094	-0.00000116	0.00000000
+		-6.27052119	-0.00118427	0.00072608	0.00119049	-0.00000116	0.00000000
+		-6.27052553	-0.00118382	0.00072581	0.00119003	-0.00000116	0.00000000
+		-6.27052986	-0.00118337	0.00072553	0.00118958	-0.00000116	0.00000000
+		-6.27053418	-0.00118292	0.00072525	0.00118912	-0.00000116	0.00000000
+		-6.27053849	-0.00118247	0.00072498	0.00118867	-0.00000116	0.00000000
+		-6.27054278	-0.00118202	0.00072470	0.00118822	-0.00000116	0.00000000
+		-6.27054706	-0.00118157	0.00072442	0.00118776	-0.00000116	0.00000000
+		-6.27055132	-0.00118112	0.00072415	0.00118731	-0.00000116	0.00000000
+		-6.27055557	-0.00118067	0.00072387	0.00118686	-0.00000116	0.00000000
+		-6.27055981	-0.00118022	0.00072360	0.00118641	-0.00000116	0.00000000
+		-6.27056403	-0.00117977	0.00072332	0.00118596	-0.00000116	0.00000000
+		-6.27056825	-0.00117932	0.00072305	0.00118550	-0.00000116	0.00000000
+		-6.27057244	-0.00117887	0.00072277	0.00118505	-0.00000116	0.00000000
+		-6.27057663	-0.00117842	0.00072250	0.00118460	-0.00000116	0.00000000
+		-6.27058080	-0.00117798	0.00072222	0.00118415	-0.00000116	0.00000000
+		-6.27058496	-0.00117753	0.00072195	0.00118370	-0.00000116	0.00000000
+		-6.27058910	-0.00117708	0.00072167	0.00118325	-0.00000116	0.00000000
+		-6.27059324	-0.00117663	0.00072140	0.00118280	-0.00000116	0.00000000
+		-6.27059736	-0.00117619	0.00072113	0.00118236	-0.00000116	0.00000000
+		-6.27060146	-0.00117574	0.00072085	0.00118191	-0.00000116	0.00000000
+		-6.27060556	-0.00117530	0.00072058	0.00118146	-0.00000116	0.00000000
+		-6.27060964	-0.00117485	0.00072031	0.00118101	-0.00000116	0.00000000
+		-6.27061371	-0.00117441	0.00072004	0.00118056	-0.00000116	0.00000000
+		-6.27061776	-0.00117396	0.00071976	0.00118012	-0.00000116	0.00000000
+		-6.27062180	-0.00117352	0.00071949	0.00117967	-0.00000116	0.00000000
+		-6.27062583	-0.00117307	0.00071922	0.00117922	-0.00000116	0.00000000
+		-6.27062985	-0.00117263	0.00071895	0.00117878	-0.00000116	0.00000000
+		-6.27063386	-0.00117219	0.00071867	0.00117833	-0.00000116	0.00000000
+		-6.27063785	-0.00117174	0.00071840	0.00117789	-0.00000116	0.00000000
+		-6.27064183	-0.00117130	0.00071813	0.00117744	-0.00000116	0.00000000
+		-6.27064580	-0.00117086	0.00071786	0.00117700	-0.00000116	0.00000000
+		-6.27064976	-0.00117042	0.00071759	0.00117655	-0.00000116	0.00000000
+		-6.27065370	-0.00116997	0.00071732	0.00117611	-0.00000116	0.00000000
+		-6.27065763	-0.00116953	0.00071705	0.00117566	-0.00000116	0.00000000
+		-6.27066155	-0.00116909	0.00071678	0.00117522	-0.00000116	0.00000000
+		-6.27066546	-0.00116865	0.00071651	0.00117478	-0.00000116	0.00000000
+		-6.27066935	-0.00116821	0.00071624	0.00117433	-0.00000116	0.00000000
+		-6.27067323	-0.00116777	0.00071597	0.00117389	-0.00000116	0.00000000
+		-6.27067711	-0.00116733	0.00071570	0.00117345	-0.00000116	0.00000000
+		-6.27068096	-0.00116689	0.00071543	0.00117301	-0.00000116	0.00000000
+		-6.27068481	-0.00116645	0.00071516	0.00117257	-0.00000116	0.00000000
+		-6.27068865	-0.00116601	0.00071489	0.00117212	-0.00000116	0.00000000
+		-6.27069247	-0.00116558	0.00071462	0.00117168	-0.00000116	0.00000000
+		-6.27069628	-0.00116514	0.00071435	0.00117124	-0.00000116	0.00000000
+		-6.27070008	-0.00116470	0.00071409	0.00117080	-0.00000116	0.00000000
+		-6.27070387	-0.00116426	0.00071382	0.00117036	-0.00000116	0.00000000
+		-6.27070765	-0.00116383	0.00071355	0.00116992	-0.00000116	0.00000000
+		-6.27071141	-0.00116339	0.00071328	0.00116948	-0.00000116	0.00000000
+		-6.27071516	-0.00116295	0.00071301	0.00116905	-0.00000116	0.00000000
+		-6.27071891	-0.00116252	0.00071275	0.00116861	-0.00000116	0.00000000
+		-6.27072264	-0.00116208	0.00071248	0.00116817	-0.00000116	0.00000000
+		-6.27072636	-0.00116165	0.00071221	0.00116773	-0.00000116	0.00000000
+		-6.27073006	-0.00116121	0.00071195	0.00116729	-0.00000116	0.00000000
+		-6.27073376	-0.00116078	0.00071168	0.00116686	-0.00000116	0.00000000
+		-6.27073744	-0.00116034	0.00071141	0.00116642	-0.00000116	0.00000000
+		-6.27074112	-0.00115991	0.00071115	0.00116598	-0.00000116	0.00000000
+		-6.27074478	-0.00115947	0.00071088	0.00116555	-0.00000116	0.00000000
+		-6.27074843	-0.00115904	0.00071062	0.00116511	-0.00000116	0.00000000
+		-6.27075207	-0.00115861	0.00071035	0.00116468	-0.00000116	0.00000000
+		-6.27075570	-0.00115817	0.00071008	0.00116424	-0.00000116	0.00000000
+		-6.27075932	-0.00115774	0.00070982	0.00116381	-0.00000116	0.00000000
+		-6.27076293	-0.00115731	0.00070955	0.00116337	-0.00000116	0.00000000
+		-6.27076652	-0.00115688	0.00070929	0.00116294	-0.00000116	0.00000000
+		-6.27077011	-0.00115644	0.00070902	0.00116250	-0.00000116	0.00000000
+		-6.27077368	-0.00115601	0.00070876	0.00116207	-0.00000116	0.00000000
+		-6.27077724	-0.00115558	0.00070850	0.00116164	-0.00000116	0.00000000
+		-6.27078080	-0.00115515	0.00070823	0.00116120	-0.00000116	0.00000000
+		-6.27078434	-0.00115472	0.00070797	0.00116077	-0.00000116	0.00000000
+		-6.27078787	-0.00115429	0.00070770	0.00116034	-0.00000116	0.00000000
+		-6.27079139	-0.00115386	0.00070744	0.00115991	-0.00000116	0.00000000
+		-6.27079490	-0.00115343	0.00070718	0.00115947	-0.00000116	0.00000000
+		-6.27079840	-0.00115300	0.00070692	0.00115904	-0.00000116	0.00000000
+		-6.27080189	-0.00115257	0.00070665	0.00115861	-0.00000116	0.00000000
+		-6.27080537	-0.00115215	0.00070639	0.00115818	-0.00000116	0.00000000
+		-6.27080883	-0.00115172	0.00070613	0.00115775	-0.00000116	0.00000000
+		-6.27081229	-0.00115129	0.00070586	0.00115732	-0.00000116	0.00000000
+		-6.27081574	-0.00115086	0.00070560	0.00115689	-0.00000116	0.00000000
+		-6.27081917	-0.00115044	0.00070534	0.00115646	-0.00000116	0.00000000
+		-6.27082260	-0.00115001	0.00070508	0.00115603	-0.00000116	0.00000000
+		-6.27082601	-0.00114958	0.00070482	0.00115560	-0.00000116	0.00000000
+		-6.27082942	-0.00114916	0.00070456	0.00115517	-0.00000116	0.00000000
+		-6.27083281	-0.00114873	0.00070430	0.00115475	-0.00000116	0.00000000
+		-6.27083620	-0.00114830	0.00070403	0.00115432	-0.00000116	0.00000000
+		-6.27083957	-0.00114788	0.00070377	0.00115389	-0.00000116	0.00000000
+		-6.27084294	-0.00114745	0.00070351	0.00115346	-0.00000116	0.00000000
+		-6.27084629	-0.00114703	0.00070325	0.00115304	-0.00000116	0.00000000
+		-6.27084964	-0.00114661	0.00070299	0.00115261	-0.00000116	0.00000000
+		-6.27085297	-0.00114618	0.00070273	0.00115218	-0.00000116	0.00000000
+		-6.27085630	-0.00114576	0.00070247	0.00115176	-0.00000116	0.00000000
+		-6.27085961	-0.00114533	0.00070221	0.00115133	-0.00000116	0.00000000
+		-6.27086292	-0.00114491	0.00070195	0.00115091	-0.00000116	0.00000000
+		-6.27086621	-0.00114449	0.00070169	0.00115048	-0.00000116	0.00000000
+		-6.27086950	-0.00114407	0.00070144	0.00115006	-0.00000116	0.00000000
+		-6.27087277	-0.00114364	0.00070118	0.00114963	-0.00000116	0.00000000
+		-6.27087604	-0.00114322	0.00070092	0.00114921	-0.00000116	0.00000000
+		-6.27087929	-0.00114280	0.00070066	0.00114878	-0.00000116	0.00000000
+		-6.27088254	-0.00114238	0.00070040	0.00114836	-0.00000116	0.00000000
+		-6.27088577	-0.00114196	0.00070014	0.00114794	-0.00000116	0.00000000
+		-6.27088900	-0.00114154	0.00069989	0.00114751	-0.00000116	0.00000000
+		-6.27089222	-0.00114112	0.00069963	0.00114709	-0.00000116	0.00000000
+		-6.27089543	-0.00114070	0.00069937	0.00114667	-0.00000116	0.00000000
+		-6.27089862	-0.00114028	0.00069911	0.00114625	-0.00000116	0.00000000
+		-6.27090181	-0.00113986	0.00069886	0.00114582	-0.00000116	0.00000000
+		-6.27090499	-0.00113944	0.00069860	0.00114540	-0.00000116	0.00000000
+		-6.27090816	-0.00113902	0.00069834	0.00114498	-0.00000116	0.00000000
+		-6.27091132	-0.00113860	0.00069809	0.00114456	-0.00000116	0.00000000
+		-6.27091447	-0.00113818	0.00069783	0.00114414	-0.00000116	0.00000000
+		-6.27091762	-0.00113777	0.00069757	0.00114372	-0.00000116	0.00000000
+		-6.27092075	-0.00113735	0.00069732	0.00114330	-0.00000116	0.00000000
+		-6.27092387	-0.00113693	0.00069706	0.00114288	-0.00000116	0.00000000
+		-6.27092699	-0.00113651	0.00069681	0.00114246	-0.00000116	0.00000000
+		-6.27093009	-0.00113610	0.00069655	0.00114204	-0.00000116	0.00000000
+		-6.27093319	-0.00113568	0.00069629	0.00114162	-0.00000116	0.00000000
+		-6.27093627	-0.00113527	0.00069604	0.00114121	-0.00000116	0.00000000
+		-6.27093935	-0.00113485	0.00069578	0.00114079	-0.00000116	0.00000000
+		-6.27094242	-0.00113443	0.00069553	0.00114037	-0.00000116	0.00000000
+		-6.27094548	-0.00113402	0.00069528	0.00113995	-0.00000116	0.00000000
+		-6.27094853	-0.00113360	0.00069502	0.00113954	-0.00000116	0.00000000
+		-6.27095157	-0.00113319	0.00069477	0.00113912	-0.00000116	0.00000000
+		-6.27095461	-0.00113278	0.00069451	0.00113870	-0.00000116	0.00000000
+		-6.27095763	-0.00113236	0.00069426	0.00113829	-0.00000116	0.00000000
+		-6.27096065	-0.00113195	0.00069401	0.00113787	-0.00000116	0.00000000
+		-6.27096365	-0.00113154	0.00069375	0.00113745	-0.00000116	0.00000000
+		-6.27096665	-0.00113112	0.00069350	0.00113704	-0.00000116	0.00000000
+		-6.27096964	-0.00113071	0.00069325	0.00113662	-0.00000116	0.00000000
+		-6.27097262	-0.00113030	0.00069299	0.00113621	-0.00000116	0.00000000
+		-6.27097559	-0.00112989	0.00069274	0.00113580	-0.00000116	0.00000000
+		-6.27097856	-0.00112947	0.00069249	0.00113538	-0.00000116	0.00000000
+		-6.27098151	-0.00112906	0.00069224	0.00113497	-0.00000116	0.00000000
+		-6.27098446	-0.00112865	0.00069198	0.00113455	-0.00000116	0.00000000
+		-6.27098739	-0.00112824	0.00069173	0.00113414	-0.00000116	0.00000000
+		-6.27099032	-0.00112783	0.00069148	0.00113373	-0.00000116	0.00000000
+		-6.27099324	-0.00112742	0.00069123	0.00113332	-0.00000116	0.00000000
+		-6.27099616	-0.00112701	0.00069098	0.00113290	-0.00000116	0.00000000
+		-6.27099906	-0.00112660	0.00069072	0.00113249	-0.00000116	0.00000000
+		-6.27100196	-0.00112619	0.00069047	0.00113208	-0.00000116	0.00000000
+		-6.27100484	-0.00112578	0.00069022	0.00113167	-0.00000116	0.00000000
+		-6.27100772	-0.00112537	0.00068997	0.00113126	-0.00000116	0.00000000
+		-6.27101059	-0.00112496	0.00068972	0.00113085	-0.00000116	0.00000000
+		-6.27101345	-0.00112455	0.00068947	0.00113044	-0.00000116	0.00000000
+		-6.27101631	-0.00112415	0.00068922	0.00113003	-0.00000116	0.00000000
+		-6.27101915	-0.00112374	0.00068897	0.00112962	-0.00000116	0.00000000
+		-6.27102199	-0.00112333	0.00068872	0.00112921	-0.00000116	0.00000000
+		-6.27102482	-0.00112292	0.00068847	0.00112880	-0.00000116	0.00000000
+		-6.27102764	-0.00112252	0.00068822	0.00112839	-0.00000116	0.00000000
+		-6.27103045	-0.00112211	0.00068797	0.00112798	-0.00000116	0.00000000
+		-6.27103326	-0.00112171	0.00068772	0.00112757	-0.00000116	0.00000000
+		-6.27103606	-0.00112130	0.00068747	0.00112716	-0.00000116	0.00000000
+		-6.27103885	-0.00112089	0.00068723	0.00112675	-0.00000116	0.00000000
+		-6.27104163	-0.00112049	0.00068698	0.00112635	-0.00000116	0.00000000
+		-6.27104440	-0.00112008	0.00068673	0.00112594	-0.00000116	0.00000000
+		-6.27104717	-0.00111968	0.00068648	0.00112553	-0.00000116	0.00000000
+		-6.27104992	-0.00111927	0.00068623	0.00112513	-0.00000116	0.00000000
+		-6.27105267	-0.00111887	0.00068599	0.00112472	-0.00000116	0.00000000
+		-6.27105541	-0.00111847	0.00068574	0.00112431	-0.00000116	0.00000000
+		-6.27105815	-0.00111806	0.00068549	0.00112391	-0.00000116	0.00000000
+		-6.27106088	-0.00111766	0.00068524	0.00112350	-0.00000116	0.00000000
+		-6.27106359	-0.00111726	0.00068500	0.00112310	-0.00000116	0.00000000
+		-6.27106630	-0.00111685	0.00068475	0.00112269	-0.00000116	0.00000000
+		-6.27106901	-0.00111645	0.00068450	0.00112229	-0.00000116	0.00000000
+		-6.27107170	-0.00111605	0.00068426	0.00112188	-0.00000116	0.00000000
+		-6.27107439	-0.00111565	0.00068401	0.00112148	-0.00000116	0.00000000
+		-6.27107707	-0.00111525	0.00068376	0.00112107	-0.00000116	0.00000000
+		-6.27107974	-0.00111484	0.00068352	0.00112067	-0.00000116	0.00000000
+		-6.27108241	-0.00111444	0.00068327	0.00112027	-0.00000116	0.00000000
+		-6.27108507	-0.00111404	0.00068302	0.00111987	-0.00000116	0.00000000
+		-6.27108772	-0.00111364	0.00068278	0.00111946	-0.00000116	0.00000000
+		-6.27109036	-0.00111324	0.00068253	0.00111906	-0.00000116	0.00000000
+		-6.27109300	-0.00111284	0.00068229	0.00111866	-0.00000116	0.00000000
+		-6.27109562	-0.00111244	0.00068204	0.00111826	-0.00000116	0.00000000
+		-6.27109825	-0.00111204	0.00068180	0.00111786	-0.00000116	0.00000000
+		-6.27110086	-0.00111164	0.00068155	0.00111745	-0.00000116	0.00000000
+		-6.27110347	-0.00111125	0.00068131	0.00111705	-0.00000116	0.00000000
+		-6.27110606	-0.00111085	0.00068106	0.00111665	-0.00000116	0.00000000
+		-6.27110866	-0.00111045	0.00068082	0.00111625	-0.00000116	0.00000000
+		-6.27111124	-0.00111005	0.00068058	0.00111585	-0.00000116	0.00000000
+		-6.27111382	-0.00110965	0.00068033	0.00111545	-0.00000116	0.00000000
+		-6.27111639	-0.00110926	0.00068009	0.00111505	-0.00000116	0.00000000
+		-6.27111895	-0.00110886	0.00067985	0.00111465	-0.00000116	0.00000000
+		-6.27112151	-0.00110846	0.00067960	0.00111425	-0.00000116	0.00000000
+		-6.27112405	-0.00110807	0.00067936	0.00111386	-0.00000116	0.00000000
+		-6.27112660	-0.00110767	0.00067912	0.00111346	-0.00000116	0.00000000
+		-6.27112913	-0.00110728	0.00067887	0.00111306	-0.00000116	0.00000000
+		-6.27113166	-0.00110688	0.00067863	0.00111266	-0.00000116	0.00000000
+		-6.27113418	-0.00110648	0.00067839	0.00111226	-0.00000116	0.00000000
+		-6.27113669	-0.00110609	0.00067815	0.00111187	-0.00000116	0.00000000
+		-6.27113920	-0.00110569	0.00067790	0.00111147	-0.00000116	0.00000000
+		-6.27114170	-0.00110530	0.00067766	0.00111107	-0.00000116	0.00000000
+		-6.27114419	-0.00110491	0.00067742	0.00111068	-0.00000116	0.00000000
+		-6.27114668	-0.00110451	0.00067718	0.00111028	-0.00000116	0.00000000
+		-6.27114915	-0.00110412	0.00067694	0.00110989	-0.00000116	0.00000000
+		-6.27115163	-0.00110372	0.00067670	0.00110949	-0.00000116	0.00000000
+		-6.27115409	-0.00110333	0.00067646	0.00110910	-0.00000116	0.00000000
+		-6.27115655	-0.00110294	0.00067621	0.00110870	-0.00000116	0.00000000
+		-6.27115900	-0.00110255	0.00067597	0.00110831	-0.00000116	0.00000000
+		-6.27116145	-0.00110215	0.00067573	0.00110791	-0.00000116	0.00000000
+		-6.27116389	-0.00110176	0.00067549	0.00110752	-0.00000116	0.00000000
+		-6.27116632	-0.00110137	0.00067525	0.00110712	-0.00000116	0.00000000
+		-6.27116874	-0.00110098	0.00067501	0.00110673	-0.00000116	0.00000000
+		-6.27117116	-0.00110059	0.00067477	0.00110634	-0.00000115	0.00000000
+		-6.27117357	-0.00110020	0.00067453	0.00110594	-0.00000115	0.00000000
+		-6.27117598	-0.00109981	0.00067429	0.00110555	-0.00000115	0.00000000
+		-6.27117838	-0.00109942	0.00067405	0.00110516	-0.00000115	0.00000000
+		-6.27118077	-0.00109903	0.00067381	0.00110477	-0.00000115	0.00000000
+		-6.27118315	-0.00109864	0.00067358	0.00110437	-0.00000115	0.00000000
+		-6.27118553	-0.00109825	0.00067334	0.00110398	-0.00000115	0.00000000
+		-6.27118791	-0.00109786	0.00067310	0.00110359	-0.00000115	0.00000000
+		-6.27119027	-0.00109747	0.00067286	0.00110320	-0.00000115	0.00000000
+		-6.27119263	-0.00109708	0.00067262	0.00110281	-0.00000115	0.00000000
+		-6.27119499	-0.00109669	0.00067238	0.00110242	-0.00000115	0.00000000
+		-6.27119733	-0.00109630	0.00067214	0.00110203	-0.00000115	0.00000000
+		-6.27119968	-0.00109592	0.00067191	0.00110164	-0.00000115	0.00000000
+		-6.27120201	-0.00109553	0.00067167	0.00110125	-0.00000115	0.00000000
+		-6.27120434	-0.00109514	0.00067143	0.00110086	-0.00000115	0.00000000
+		-6.27120666	-0.00109475	0.00067119	0.00110047	-0.00000115	0.00000000
+		-6.27120898	-0.00109437	0.00067096	0.00110008	-0.00000115	0.00000000
+		-6.27121129	-0.00109398	0.00067072	0.00109969	-0.00000115	0.00000000
+		-6.27121359	-0.00109360	0.00067048	0.00109930	-0.00000115	0.00000000
+		-6.27121589	-0.00109321	0.00067025	0.00109892	-0.00000115	0.00000000
+		-6.27121818	-0.00109282	0.00067001	0.00109853	-0.00000115	0.00000000
+		-6.27122046	-0.00109244	0.00066977	0.00109814	-0.00000115	0.00000000
+		-6.27122274	-0.00109205	0.00066954	0.00109775	-0.00000115	0.00000000
+		-6.27122501	-0.00109167	0.00066930	0.00109737	-0.00000115	0.00000000
+		-6.27122728	-0.00109128	0.00066907	0.00109698	-0.00000115	0.00000000
+		-6.27122954	-0.00109090	0.00066883	0.00109659	-0.00000115	0.00000000
+		-6.27123179	-0.00109052	0.00066859	0.00109621	-0.00000115	0.00000000
+		-6.27123404	-0.00109013	0.00066836	0.00109582	-0.00000115	0.00000000
+		-6.27123629	-0.00108975	0.00066812	0.00109544	-0.00000115	0.00000000
+		-6.27123852	-0.00108937	0.00066789	0.00109505	-0.00000115	0.00000000
+		-6.27124075	-0.00108898	0.00066765	0.00109467	-0.00000115	0.00000000
+		-6.27124298	-0.00108860	0.00066742	0.00109428	-0.00000115	0.00000000
+		-6.27124520	-0.00108822	0.00066718	0.00109390	-0.00000115	0.00000000
+		-6.27124741	-0.00108784	0.00066695	0.00109351	-0.00000115	0.00000000
+		-6.27124962	-0.00108745	0.00066672	0.00109313	-0.00000115	0.00000000
+		-6.27125182	-0.00108707	0.00066648	0.00109275	-0.00000115	0.00000000
+		-6.27125401	-0.00108669	0.00066625	0.00109236	-0.00000115	0.00000000
+		-6.27125620	-0.00108631	0.00066601	0.00109198	-0.00000115	0.00000000
+		-6.27125839	-0.00108593	0.00066578	0.00109160	-0.00000115	0.00000000
+		-6.27126057	-0.00108555	0.00066555	0.00109121	-0.00000115	0.00000000
+		-6.27126274	-0.00108517	0.00066531	0.00109083	-0.00000115	0.00000000
+		-6.27126490	-0.00108479	0.00066508	0.00109045	-0.00000115	0.00000000
+		-6.27126707	-0.00108441	0.00066485	0.00109007	-0.00000115	0.00000000
+		-6.27126922	-0.00108403	0.00066461	0.00108969	-0.00000115	0.00000000
+		-6.27127137	-0.00108365	0.00066438	0.00108930	-0.00000115	0.00000000
+		-6.27127351	-0.00108327	0.00066415	0.00108892	-0.00000115	0.00000000
+		-6.27127565	-0.00108289	0.00066392	0.00108854	-0.00000115	0.00000000
+		-6.27127779	-0.00108251	0.00066369	0.00108816	-0.00000115	0.00000000
+		-6.27127991	-0.00108214	0.00066345	0.00108778	-0.00000115	0.00000000
+		-6.27128204	-0.00108176	0.00066322	0.00108740	-0.00000115	0.00000000
+		-6.27128415	-0.00108138	0.00066299	0.00108702	-0.00000115	0.00000000
+		-6.27128626	-0.00108100	0.00066276	0.00108664	-0.00000115	0.00000000
+		-6.27128837	-0.00108063	0.00066253	0.00108626	-0.00000115	0.00000000
+		-6.27129047	-0.00108025	0.00066230	0.00108588	-0.00000115	0.00000000
+		-6.27129256	-0.00107987	0.00066206	0.00108551	-0.00000115	0.00000000
+		-6.27129465	-0.00107950	0.00066183	0.00108513	-0.00000115	0.00000000
+		-6.27129674	-0.00107912	0.00066160	0.00108475	-0.00000115	0.00000000
+		-6.27129881	-0.00107874	0.00066137	0.00108437	-0.00000115	0.00000000
+		-6.27130089	-0.00107837	0.00066114	0.00108399	-0.00000115	0.00000000
+		-6.27130295	-0.00107799	0.00066091	0.00108362	-0.00000115	0.00000000
+		-6.27130502	-0.00107762	0.00066068	0.00108324	-0.00000115	0.00000000
+		-6.27130707	-0.00107724	0.00066045	0.00108286	-0.00000115	0.00000000
+		-6.27130913	-0.00107687	0.00066022	0.00108249	-0.00000115	0.00000000
+		-6.27131117	-0.00107649	0.00065999	0.00108211	-0.00000115	0.00000000
+		-6.27131321	-0.00107612	0.00065976	0.00108173	-0.00000115	0.00000000
+		-6.27131525	-0.00107575	0.00065953	0.00108136	-0.00000115	0.00000000
+		-6.27131728	-0.00107537	0.00065931	0.00108098	-0.00000115	0.00000000
+		-6.27131930	-0.00107500	0.00065908	0.00108061	-0.00000115	0.00000000
+		-6.27132133	-0.00107463	0.00065885	0.00108023	-0.00000115	0.00000000
+		-6.27132334	-0.00107425	0.00065862	0.00107986	-0.00000115	0.00000000
+		-6.27132535	-0.00107388	0.00065839	0.00107948	-0.00000115	0.00000000
+		-6.27132736	-0.00107351	0.00065816	0.00107911	-0.00000115	0.00000000
+		-6.27132936	-0.00107314	0.00065793	0.00107873	-0.00000115	0.00000000
+		-6.27133135	-0.00107277	0.00065771	0.00107836	-0.00000115	0.00000000
+		-6.27133334	-0.00107239	0.00065748	0.00107799	-0.00000115	0.00000000
+		-6.27133532	-0.00107202	0.00065725	0.00107761	-0.00000115	0.00000000
+		-6.27133730	-0.00107165	0.00065702	0.00107724	-0.00000115	0.00000000
+		-6.27133928	-0.00107128	0.00065680	0.00107687	-0.00000115	0.00000000
+		-6.27134125	-0.00107091	0.00065657	0.00107650	-0.00000115	0.00000000
+		-6.27134321	-0.00107054	0.00065634	0.00107612	-0.00000115	0.00000000
+		-6.27134517	-0.00107017	0.00065611	0.00107575	-0.00000115	0.00000000
+		-6.27134713	-0.00106980	0.00065589	0.00107538	-0.00000115	0.00000000
+		-6.27134908	-0.00106943	0.00065566	0.00107501	-0.00000115	0.00000000
+		-6.27135102	-0.00106906	0.00065543	0.00107464	-0.00000115	0.00000000
+		-6.27135296	-0.00106870	0.00065521	0.00107427	-0.00000115	0.00000000
+		-6.27135490	-0.00106833	0.00065498	0.00107390	-0.00000115	0.00000000
+		-6.27135683	-0.00106796	0.00065476	0.00107353	-0.00000115	0.00000000
+		-6.27135875	-0.00106759	0.00065453	0.00107316	-0.00000115	0.00000000
+		-6.27136067	-0.00106722	0.00065430	0.00107279	-0.00000115	0.00000000
+		-6.27136259	-0.00106685	0.00065408	0.00107242	-0.00000115	0.00000000
+		-6.27136450	-0.00106649	0.00065385	0.00107205	-0.00000115	0.00000000
+		-6.27136641	-0.00106612	0.00065363	0.00107168	-0.00000115	0.00000000
+		-6.27136831	-0.00106575	0.00065340	0.00107131	-0.00000115	0.00000000
+		-6.27137021	-0.00106539	0.00065318	0.00107094	-0.00000115	0.00000000
+		-6.27137210	-0.00106502	0.00065295	0.00107057	-0.00000115	0.00000000
+		-6.27137399	-0.00106465	0.00065273	0.00107020	-0.00000115	0.00000000
+		-6.27137587	-0.00106429	0.00065250	0.00106984	-0.00000115	0.00000000
+		-6.27137775	-0.00106392	0.00065228	0.00106947	-0.00000115	0.00000000
+		-6.27137962	-0.00106356	0.00065206	0.00106910	-0.00000115	0.00000000
+		-6.27138149	-0.00106319	0.00065183	0.00106873	-0.00000115	0.00000000
+		-6.27138335	-0.00106283	0.00065161	0.00106837	-0.00000115	0.00000000
+		-6.27138521	-0.00106246	0.00065139	0.00106800	-0.00000115	0.00000000
+		-6.27138707	-0.00106210	0.00065116	0.00106763	-0.00000115	0.00000000
+		-6.27138892	-0.00106173	0.00065094	0.00106727	-0.00000115	0.00000000
+		-6.27139077	-0.00106137	0.00065072	0.00106690	-0.00000115	0.00000000
+		-6.27139261	-0.00106101	0.00065049	0.00106654	-0.00000115	0.00000000
+		-6.27139445	-0.00106064	0.00065027	0.00106617	-0.00000115	0.00000000
+		-6.27139628	-0.00106028	0.00065005	0.00106581	-0.00000115	0.00000000
+		-6.27139811	-0.00105992	0.00064982	0.00106544	-0.00000115	0.00000000
+		-6.27139993	-0.00105956	0.00064960	0.00106508	-0.00000115	0.00000000
+		-6.27140175	-0.00105919	0.00064938	0.00106471	-0.00000115	0.00000000
+		-6.27140356	-0.00105883	0.00064916	0.00106435	-0.00000115	0.00000000
+		-6.27140537	-0.00105847	0.00064893	0.00106399	-0.00000115	0.00000000
+		-6.27140718	-0.00105811	0.00064871	0.00106362	-0.00000115	0.00000000
+		-6.27140898	-0.00105775	0.00064849	0.00106326	-0.00000115	0.00000000
+		-6.27141078	-0.00105739	0.00064827	0.00106290	-0.00000115	0.00000000
+		-6.27141257	-0.00105702	0.00064805	0.00106253	-0.00000115	0.00000000
+		-6.27141436	-0.00105666	0.00064783	0.00106217	-0.00000115	0.00000000
+		-6.27141614	-0.00105630	0.00064761	0.00106181	-0.00000115	0.00000000
+		-6.27141792	-0.00105594	0.00064739	0.00106145	-0.00000115	0.00000000
+		-6.27141970	-0.00105558	0.00064716	0.00106108	-0.00000115	0.00000000
+		-6.27142147	-0.00105522	0.00064694	0.00106072	-0.00000115	0.00000000
+		-6.27142324	-0.00105486	0.00064672	0.00106036	-0.00000115	0.00000000
+		-6.27142500	-0.00105451	0.00064650	0.00106000	-0.00000115	0.00000000
+		-6.27142676	-0.00105415	0.00064628	0.00105964	-0.00000115	0.00000000
+		-6.27142851	-0.00105379	0.00064606	0.00105928	-0.00000115	0.00000000
+		-6.27143026	-0.00105343	0.00064584	0.00105892	-0.00000115	0.00000000
+		-6.27143201	-0.00105307	0.00064562	0.00105856	-0.00000115	0.00000000
+		-6.27143375	-0.00105271	0.00064540	0.00105820	-0.00000115	0.00000000
+		-6.27143549	-0.00105236	0.00064518	0.00105784	-0.00000115	0.00000000
+		-6.27143722	-0.00105200	0.00064496	0.00105748	-0.00000115	0.00000000
+		-6.27143895	-0.00105164	0.00064475	0.00105712	-0.00000115	0.00000000
+		-6.27144068	-0.00105128	0.00064453	0.00105676	-0.00000115	0.00000000
+		-6.27144240	-0.00105093	0.00064431	0.00105640	-0.00000115	0.00000000
+		-6.27144412	-0.00105057	0.00064409	0.00105604	-0.00000115	0.00000000
+		-6.27144583	-0.00105021	0.00064387	0.00105569	-0.00000115	0.00000000
+		-6.27144754	-0.00104986	0.00064365	0.00105533	-0.00000115	0.00000000
+		-6.27144924	-0.00104950	0.00064343	0.00105497	-0.00000115	0.00000000
+		-6.27145094	-0.00104915	0.00064322	0.00105461	-0.00000115	0.00000000
+		-6.27145264	-0.00104879	0.00064300	0.00105425	-0.00000115	0.00000000
+		-6.27145433	-0.00104844	0.00064278	0.00105390	-0.00000115	0.00000000
+		-6.27145602	-0.00104808	0.00064256	0.00105354	-0.00000115	0.00000000
+		-6.27145771	-0.00104773	0.00064234	0.00105318	-0.00000115	0.00000000
+		-6.27145939	-0.00104737	0.00064213	0.00105283	-0.00000115	0.00000000
+		-6.27146107	-0.00104702	0.00064191	0.00105247	-0.00000115	0.00000000
+		-6.27146274	-0.00104667	0.00064169	0.00105212	-0.00000115	0.00000000
+		-6.27146441	-0.00104631	0.00064148	0.00105176	-0.00000115	0.00000000
+		-6.27146607	-0.00104596	0.00064126	0.00105141	-0.00000115	0.00000000
+		-6.27146774	-0.00104561	0.00064104	0.00105105	-0.00000115	0.00000000
+		-6.27146939	-0.00104525	0.00064083	0.00105070	-0.00000115	0.00000000
+		-6.27147105	-0.00104490	0.00064061	0.00105034	-0.00000115	0.00000000
+		-6.27147270	-0.00104455	0.00064039	0.00104999	-0.00000115	0.00000000
+		-6.27147434	-0.00104420	0.00064018	0.00104963	-0.00000115	0.00000000
+		-6.27147599	-0.00104384	0.00063996	0.00104928	-0.00000115	0.00000000
+		-6.27147762	-0.00104349	0.00063975	0.00104893	-0.00000115	0.00000000
+		-6.27147926	-0.00104314	0.00063953	0.00104857	-0.00000115	0.00000000
+		-6.27148089	-0.00104279	0.00063931	0.00104822	-0.00000115	0.00000000
+		-6.27148252	-0.00104244	0.00063910	0.00104787	-0.00000115	0.00000000
+		-6.27148414	-0.00104209	0.00063888	0.00104751	-0.00000115	0.00000000
+		-6.27148576	-0.00104174	0.00063867	0.00104716	-0.00000115	0.00000000
+		-6.27148738	-0.00104139	0.00063845	0.00104681	-0.00000115	0.00000000
+		-6.27148899	-0.00104104	0.00063824	0.00104646	-0.00000115	0.00000000
+		-6.27149060	-0.00104069	0.00063802	0.00104610	-0.00000115	0.00000000
+		-6.27149220	-0.00104034	0.00063781	0.00104575	-0.00000115	0.00000000
+		-6.27149380	-0.00103999	0.00063760	0.00104540	-0.00000115	0.00000000
+		-6.27149540	-0.00103964	0.00063738	0.00104505	-0.00000115	0.00000000
+		-6.27149699	-0.00103929	0.00063717	0.00104470	-0.00000115	0.00000000
+		-6.27149859	-0.00103894	0.00063695	0.00104435	-0.00000115	0.00000000
+		-6.27150017	-0.00103859	0.00063674	0.00104400	-0.00000115	0.00000000
+		-6.27150175	-0.00103824	0.00063653	0.00104365	-0.00000115	0.00000000
+		-6.27150333	-0.00103790	0.00063631	0.00104330	-0.00000115	0.00000000
+		-6.27150491	-0.00103755	0.00063610	0.00104295	-0.00000115	0.00000000
+		-6.27150648	-0.00103720	0.00063589	0.00104260	-0.00000115	0.00000000
+		-6.27150805	-0.00103685	0.00063567	0.00104225	-0.00000115	0.00000000
+		-6.27150962	-0.00103651	0.00063546	0.00104190	-0.00000115	0.00000000
+		-6.27151118	-0.00103616	0.00063525	0.00104155	-0.00000115	0.00000000
+		-6.27151274	-0.00103581	0.00063503	0.00104120	-0.00000115	0.00000000
+		-6.27151429	-0.00103547	0.00063482	0.00104086	-0.00000115	0.00000000
+		-6.27151584	-0.00103512	0.00063461	0.00104051	-0.00000115	0.00000000
+		-6.27151739	-0.00103478	0.00063440	0.00104016	-0.00000115	0.00000000
+		-6.27151893	-0.00103443	0.00063419	0.00103981	-0.00000115	0.00000000
+		-6.27152048	-0.00103408	0.00063397	0.00103947	-0.00000115	0.00000000
+		-6.27152201	-0.00103374	0.00063376	0.00103912	-0.00000115	0.00000000
+		-6.27152355	-0.00103339	0.00063355	0.00103877	-0.00000115	0.00000000
+		-6.27152508	-0.00103305	0.00063334	0.00103843	-0.00000115	0.00000000
+		-6.27152660	-0.00103270	0.00063313	0.00103808	-0.00000115	0.00000000
+		-6.27152813	-0.00103236	0.00063292	0.00103773	-0.00000115	0.00000000
+		-6.27152965	-0.00103202	0.00063271	0.00103739	-0.00000115	0.00000000
+		-6.27153117	-0.00103167	0.00063249	0.00103704	-0.00000115	0.00000000
+		-6.27153268	-0.00103133	0.00063228	0.00103670	-0.00000115	0.00000000
+		-6.27153419	-0.00103099	0.00063207	0.00103635	-0.00000115	0.00000000
+		-6.27153570	-0.00103064	0.00063186	0.00103601	-0.00000115	0.00000000
+		-6.27153720	-0.00103030	0.00063165	0.00103566	-0.00000115	0.00000000
+		-6.27153870	-0.00102996	0.00063144	0.00103532	-0.00000115	0.00000000
+		-6.27154020	-0.00102961	0.00063123	0.00103497	-0.00000115	0.00000000
+		-6.27154169	-0.00102927	0.00063102	0.00103463	-0.00000115	0.00000000
+		-6.27154318	-0.00102893	0.00063081	0.00103428	-0.00000115	0.00000000
+		-6.27154467	-0.00102859	0.00063060	0.00103394	-0.00000115	0.00000000
+		-6.27154615	-0.00102825	0.00063039	0.00103360	-0.00000115	0.00000000
+		-6.27154763	-0.00102791	0.00063018	0.00103325	-0.00000115	0.00000000
+		-6.27154911	-0.00102756	0.00062997	0.00103291	-0.00000115	0.00000000
+		-6.27155059	-0.00102722	0.00062976	0.00103257	-0.00000115	0.00000000
+		-6.27155206	-0.00102688	0.00062956	0.00103223	-0.00000115	0.00000000
+		-6.27155352	-0.00102654	0.00062935	0.00103188	-0.00000115	0.00000000
+		-6.27155499	-0.00102620	0.00062914	0.00103154	-0.00000115	0.00000000
+		-6.27155645	-0.00102586	0.00062893	0.00103120	-0.00000115	0.00000000
+		-6.27155791	-0.00102552	0.00062872	0.00103086	-0.00000115	0.00000000
+		-6.27155936	-0.00102518	0.00062851	0.00103052	-0.00000115	0.00000000
+		-6.27156082	-0.00102484	0.00062830	0.00103018	-0.00000115	0.00000000
+		-6.27156226	-0.00102451	0.00062810	0.00102983	-0.00000115	0.00000000
+		-6.27156371	-0.00102417	0.00062789	0.00102949	-0.00000115	0.00000000
+		-6.27156515	-0.00102383	0.00062768	0.00102915	-0.00000115	0.00000000
+		-6.27156659	-0.00102349	0.00062747	0.00102881	-0.00000115	0.00000000
+		-6.27156803	-0.00102315	0.00062727	0.00102847	-0.00000115	0.00000000
+		-6.27156946	-0.00102281	0.00062706	0.00102813	-0.00000115	0.00000000
+		-6.27157089	-0.00102248	0.00062685	0.00102779	-0.00000115	0.00000000
+		-6.27157232	-0.00102214	0.00062664	0.00102745	-0.00000115	0.00000000
+		-6.27157374	-0.00102180	0.00062644	0.00102712	-0.00000115	0.00000000
+		-6.27157517	-0.00102146	0.00062623	0.00102678	-0.00000115	0.00000000
+		-6.27157658	-0.00102113	0.00062602	0.00102644	-0.00000115	0.00000000
+		-6.27157800	-0.00102079	0.00062582	0.00102610	-0.00000115	0.00000000
+		-6.27157941	-0.00102045	0.00062561	0.00102576	-0.00000115	0.00000000
+		-6.27158082	-0.00102012	0.00062540	0.00102542	-0.00000115	0.00000000
+		-6.27158223	-0.00101978	0.00062520	0.00102509	-0.00000115	0.00000000
+		-6.27158363	-0.00101945	0.00062499	0.00102475	-0.00000115	0.00000000
+		-6.27158503	-0.00101911	0.00062479	0.00102441	-0.00000115	0.00000000
+		-6.27158643	-0.00101878	0.00062458	0.00102407	-0.00000115	0.00000000
+		-6.27158782	-0.00101844	0.00062438	0.00102374	-0.00000115	0.00000000
+		-6.27158921	-0.00101811	0.00062417	0.00102340	-0.00000115	0.00000000
+		-6.27159060	-0.00101777	0.00062396	0.00102306	-0.00000115	0.00000000
+		-6.27159199	-0.00101744	0.00062376	0.00102273	-0.00000115	0.00000000
+		-6.27159337	-0.00101710	0.00062355	0.00102239	-0.00000115	0.00000000
+		-6.27159475	-0.00101677	0.00062335	0.00102206	-0.00000115	0.00000000
+		-6.27159613	-0.00101644	0.00062314	0.00102172	-0.00000115	0.00000000
+		-6.27159750	-0.00101610	0.00062294	0.00102138	-0.00000115	0.00000000
+		-6.27159887	-0.00101577	0.00062274	0.00102105	-0.00000115	0.00000000
+		-6.27160024	-0.00101544	0.00062253	0.00102071	-0.00000115	0.00000000
+		-6.27160160	-0.00101510	0.00062233	0.00102038	-0.00000115	0.00000000
+		-6.27160297	-0.00101477	0.00062212	0.00102005	-0.00000115	0.00000000
+		-6.27160433	-0.00101444	0.00062192	0.00101971	-0.00000115	0.00000000
+		-6.27160568	-0.00101410	0.00062171	0.00101938	-0.00000115	0.00000000
+		-6.27160704	-0.00101377	0.00062151	0.00101904	-0.00000115	0.00000000
+		-6.27160839	-0.00101344	0.00062131	0.00101871	-0.00000115	0.00000000
+		-6.27160974	-0.00101311	0.00062110	0.00101838	-0.00000115	0.00000000
+		-6.27161108	-0.00101278	0.00062090	0.00101804	-0.00000115	0.00000000
+		-6.27161243	-0.00101245	0.00062070	0.00101771	-0.00000115	0.00000000
+		-6.27161377	-0.00101212	0.00062049	0.00101738	-0.00000115	0.00000000
+		-6.27161511	-0.00101179	0.00062029	0.00101705	-0.00000115	0.00000000
+		-6.27161644	-0.00101146	0.00062009	0.00101671	-0.00000115	0.00000000
+		-6.27161777	-0.00101112	0.00061989	0.00101638	-0.00000115	0.00000000
+		-6.27161910	-0.00101079	0.00061968	0.00101605	-0.00000115	0.00000000
+		-6.27162043	-0.00101046	0.00061948	0.00101572	-0.00000115	0.00000000
+		-6.27162175	-0.00101014	0.00061928	0.00101539	-0.00000115	0.00000000
+		-6.27162307	-0.00100981	0.00061908	0.00101505	-0.00000115	0.00000000
+		-6.27162439	-0.00100948	0.00061887	0.00101472	-0.00000115	0.00000000
+		-6.27162571	-0.00100915	0.00061867	0.00101439	-0.00000115	0.00000000
+		-6.27162702	-0.00100882	0.00061847	0.00101406	-0.00000115	0.00000000
+		-6.27162833	-0.00100849	0.00061827	0.00101373	-0.00000115	0.00000000
+		-6.27162964	-0.00100816	0.00061807	0.00101340	-0.00000115	0.00000000
+		-6.27163095	-0.00100783	0.00061787	0.00101307	-0.00000115	0.00000000
+		-6.27163225	-0.00100751	0.00061767	0.00101274	-0.00000115	0.00000000
+		-6.27163355	-0.00100718	0.00061746	0.00101241	-0.00000115	0.00000000
+		-6.27163485	-0.00100685	0.00061726	0.00101208	-0.00000115	0.00000000
+		-6.27163614	-0.00100652	0.00061706	0.00101175	-0.00000115	0.00000000
+		-6.27163743	-0.00100620	0.00061686	0.00101143	-0.00000115	0.00000000
+		-6.27163872	-0.00100587	0.00061666	0.00101110	-0.00000115	0.00000000
+		-6.27164001	-0.00100554	0.00061646	0.00101077	-0.00000115	0.00000000
+		-6.27164130	-0.00100522	0.00061626	0.00101044	-0.00000115	0.00000000
+		-6.27164258	-0.00100489	0.00061606	0.00101011	-0.00000115	0.00000000
+		-6.27164386	-0.00100456	0.00061586	0.00100978	-0.00000115	0.00000000
+		-6.27164513	-0.00100424	0.00061566	0.00100946	-0.00000115	0.00000000
+		-6.27164641	-0.00100391	0.00061546	0.00100913	-0.00000114	0.00000000
+		-6.27164768	-0.00100359	0.00061526	0.00100880	-0.00000114	0.00000000
+		-6.27164895	-0.00100326	0.00061506	0.00100848	-0.00000114	0.00000000
+		-6.27165022	-0.00100294	0.00061486	0.00100815	-0.00000114	0.00000000
+		-6.27165148	-0.00100261	0.00061466	0.00100782	-0.00000114	0.00000000
+		-6.27165274	-0.00100229	0.00061446	0.00100750	-0.00000114	0.00000000
+		-6.27165400	-0.00100196	0.00061427	0.00100717	-0.00000114	0.00000000
+		-6.27165526	-0.00100164	0.00061407	0.00100684	-0.00000114	0.00000000
+		-6.27165651	-0.00100132	0.00061387	0.00100652	-0.00000114	0.00000000
+		-6.27165777	-0.00100099	0.00061367	0.00100619	-0.00000114	0.00000000
+		-6.27165902	-0.00100067	0.00061347	0.00100587	-0.00000114	0.00000000
+		-6.27166026	-0.00100035	0.00061327	0.00100554	-0.00000114	0.00000000
+		-6.27166151	-0.00100002	0.00061307	0.00100522	-0.00000114	0.00000000
+		-6.27166275	-0.00099970	0.00061288	0.00100489	-0.00000114	0.00000000
+		-6.27166399	-0.00099938	0.00061268	0.00100457	-0.00000114	0.00000000
+		-6.27166523	-0.00099905	0.00061248	0.00100424	-0.00000114	0.00000000
+		-6.27166646	-0.00099873	0.00061228	0.00100392	-0.00000114	0.00000000
+		-6.27166770	-0.00099841	0.00061208	0.00100360	-0.00000114	0.00000000
+		-6.27166893	-0.00099809	0.00061189	0.00100327	-0.00000114	0.00000000
+		-6.27167015	-0.00099777	0.00061169	0.00100295	-0.00000114	0.00000000
+		-6.27167138	-0.00099745	0.00061149	0.00100263	-0.00000114	0.00000000
+		-6.27167260	-0.00099712	0.00061130	0.00100230	-0.00000114	0.00000000
+		-6.27167382	-0.00099680	0.00061110	0.00100198	-0.00000114	0.00000000
+		-6.27167504	-0.00099648	0.00061090	0.00100166	-0.00000114	0.00000000
+		-6.27167626	-0.00099616	0.00061070	0.00100134	-0.00000114	0.00000000
+		-6.27167747	-0.00099584	0.00061051	0.00100101	-0.00000114	0.00000000
+		-6.27167868	-0.00099552	0.00061031	0.00100069	-0.00000114	0.00000000
+		-6.27167989	-0.00099520	0.00061012	0.00100037	-0.00000114	0.00000000
+		-6.27168110	-0.00099488	0.00060992	0.00100005	-0.00000114	0.00000000
+		-6.27168231	-0.00099456	0.00060972	0.00099973	-0.00000114	0.00000000
+		-6.27168351	-0.00099424	0.00060953	0.00099941	-0.00000114	0.00000000
+		-6.27168471	-0.00099392	0.00060933	0.00099909	-0.00000114	0.00000000
+		-6.27168591	-0.00099360	0.00060914	0.00099877	-0.00000114	0.00000000
+		-6.27168710	-0.00099329	0.00060894	0.00099844	-0.00000114	0.00000000
+		-6.27168829	-0.00099297	0.00060874	0.00099812	-0.00000114	0.00000000
+		-6.27168949	-0.00099265	0.00060855	0.00099780	-0.00000114	0.00000000
+		-6.27169067	-0.00099233	0.00060835	0.00099748	-0.00000114	0.00000000
+		-6.27169186	-0.00099201	0.00060816	0.00099716	-0.00000114	0.00000000
+		-6.27169305	-0.00099170	0.00060796	0.00099685	-0.00000114	0.00000000
+		-6.27169423	-0.00099138	0.00060777	0.00099653	-0.00000114	0.00000000
+		-6.27169541	-0.00099106	0.00060757	0.00099621	-0.00000114	0.00000000
+		-6.27169659	-0.00099074	0.00060738	0.00099589	-0.00000114	0.00000000
+		-6.27169776	-0.00099043	0.00060719	0.00099557	-0.00000114	0.00000000
+		-6.27169893	-0.00099011	0.00060699	0.00099525	-0.00000114	0.00000000
+		-6.27170011	-0.00098979	0.00060680	0.00099493	-0.00000114	0.00000000
+		-6.27170128	-0.00098948	0.00060660	0.00099461	-0.00000114	0.00000000
+		-6.27170244	-0.00098916	0.00060641	0.00099430	-0.00000114	0.00000000
+		-6.27170361	-0.00098884	0.00060622	0.00099398	-0.00000114	0.00000000
+		-6.27170477	-0.00098853	0.00060602	0.00099366	-0.00000114	0.00000000
+		-6.27170593	-0.00098821	0.00060583	0.00099334	-0.00000114	0.00000000
+		-6.27170709	-0.00098790	0.00060563	0.00099303	-0.00000114	0.00000000
+		-6.27170825	-0.00098758	0.00060544	0.00099271	-0.00000114	0.00000000
+		-6.27170940	-0.00098727	0.00060525	0.00099239	-0.00000114	0.00000000
+		-6.27171055	-0.00098695	0.00060505	0.00099208	-0.00000114	0.00000000
+		-6.27171170	-0.00098664	0.00060486	0.00099176	-0.00000114	0.00000000
+		-6.27171285	-0.00098633	0.00060467	0.00099145	-0.00000114	0.00000000
+		-6.27171399	-0.00098601	0.00060448	0.00099113	-0.00000114	0.00000000
+		-6.27171514	-0.00098570	0.00060428	0.00099081	-0.00000114	0.00000000
+		-6.27171628	-0.00098538	0.00060409	0.00099050	-0.00000114	0.00000000
+		-6.27171742	-0.00098507	0.00060390	0.00099018	-0.00000114	0.00000000
+		-6.27171856	-0.00098476	0.00060371	0.00098987	-0.00000114	0.00000000
+		-6.27171969	-0.00098444	0.00060351	0.00098955	-0.00000114	0.00000000
+		-6.27172082	-0.00098413	0.00060332	0.00098924	-0.00000114	0.00000000
+		-6.27172196	-0.00098382	0.00060313	0.00098893	-0.00000114	0.00000000
+		-6.27172309	-0.00098351	0.00060294	0.00098861	-0.00000114	0.00000000
+		-6.27172421	-0.00098319	0.00060275	0.00098830	-0.00000114	0.00000000
+		-6.27172534	-0.00098288	0.00060256	0.00098798	-0.00000114	0.00000000
+		-6.27172646	-0.00098257	0.00060236	0.00098767	-0.00000114	0.00000000
+		-6.27172758	-0.00098226	0.00060217	0.00098736	-0.00000114	0.00000000
+		-6.27172870	-0.00098195	0.00060198	0.00098704	-0.00000114	0.00000000
+		-6.27172982	-0.00098163	0.00060179	0.00098673	-0.00000114	0.00000000
+		-6.27173093	-0.00098132	0.00060160	0.00098642	-0.00000114	0.00000000
+		-6.27173205	-0.00098101	0.00060141	0.00098610	-0.00000114	0.00000000
+		-6.27173316	-0.00098070	0.00060122	0.00098579	-0.00000114	0.00000000
+		-6.27173427	-0.00098039	0.00060103	0.00098548	-0.00000114	0.00000000
+		-6.27173537	-0.00098008	0.00060084	0.00098517	-0.00000114	0.00000000
+		-6.27173648	-0.00097977	0.00060065	0.00098486	-0.00000114	0.00000000
+		-6.27173758	-0.00097946	0.00060046	0.00098454	-0.00000114	0.00000000
+		-6.27173868	-0.00097915	0.00060027	0.00098423	-0.00000114	0.00000000
+		-6.27173978	-0.00097884	0.00060008	0.00098392	-0.00000114	0.00000000
+		-6.27174088	-0.00097853	0.00059989	0.00098361	-0.00000114	0.00000000
+		-6.27174198	-0.00097822	0.00059970	0.00098330	-0.00000114	0.00000000
+		-6.27174307	-0.00097791	0.00059951	0.00098299	-0.00000114	0.00000000
+		-6.27174416	-0.00097761	0.00059932	0.00098268	-0.00000114	0.00000000
+		-6.27174525	-0.00097730	0.00059913	0.00098237	-0.00000114	0.00000000
+		-6.27174634	-0.00097699	0.00059894	0.00098206	-0.00000114	0.00000000
+		-6.27174743	-0.00097668	0.00059875	0.00098175	-0.00000114	0.00000000
+		-6.27174851	-0.00097637	0.00059856	0.00098144	-0.00000114	0.00000000
+		-6.27174959	-0.00097606	0.00059837	0.00098113	-0.00000114	0.00000000
+		-6.27175067	-0.00097576	0.00059818	0.00098082	-0.00000114	0.00000000
+		-6.27175175	-0.00097545	0.00059800	0.00098051	-0.00000114	0.00000000
+		-6.27175283	-0.00097514	0.00059781	0.00098020	-0.00000114	0.00000000
+		-6.27175390	-0.00097484	0.00059762	0.00097989	-0.00000114	0.00000000
+		-6.27175497	-0.00097453	0.00059743	0.00097958	-0.00000114	0.00000000
+		-6.27175605	-0.00097422	0.00059724	0.00097928	-0.00000114	0.00000000
+		-6.27175712	-0.00097392	0.00059705	0.00097897	-0.00000114	0.00000000
+		-6.27175818	-0.00097361	0.00059687	0.00097866	-0.00000114	0.00000000
+		-6.27175925	-0.00097330	0.00059668	0.00097835	-0.00000114	0.00000000
+		-6.27176031	-0.00097300	0.00059649	0.00097805	-0.00000114	0.00000000
+		-6.27176137	-0.00097269	0.00059630	0.00097774	-0.00000114	0.00000000
+		-6.27176243	-0.00097239	0.00059612	0.00097743	-0.00000114	0.00000000
+		-6.27176349	-0.00097208	0.00059593	0.00097712	-0.00000114	0.00000000
+		-6.27176455	-0.00097178	0.00059574	0.00097682	-0.00000114	0.00000000
+		-6.27176560	-0.00097147	0.00059555	0.00097651	-0.00000114	0.00000000
+		-6.27176666	-0.00097117	0.00059537	0.00097620	-0.00000114	0.00000000
+		-6.27176771	-0.00097086	0.00059518	0.00097590	-0.00000114	0.00000000
+		-6.27176876	-0.00097056	0.00059499	0.00097559	-0.00000114	0.00000000
+		-6.27176980	-0.00097025	0.00059481	0.00097529	-0.00000114	0.00000000
+		-6.27177085	-0.00096995	0.00059462	0.00097498	-0.00000114	0.00000000
+		-6.27177189	-0.00096965	0.00059443	0.00097468	-0.00000114	0.00000000
+		-6.27177294	-0.00096934	0.00059425	0.00097437	-0.00000114	0.00000000
+		-6.27177398	-0.00096904	0.00059406	0.00097407	-0.00000114	0.00000000
+		-6.27177502	-0.00096874	0.00059388	0.00097376	-0.00000114	0.00000000
+		-6.27177605	-0.00096843	0.00059369	0.00097346	-0.00000114	0.00000000
+		-6.27177709	-0.00096813	0.00059350	0.00097315	-0.00000114	0.00000000
+		-6.27177812	-0.00096783	0.00059332	0.00097285	-0.00000114	0.00000000
+		-6.27177915	-0.00096752	0.00059313	0.00097254	-0.00000114	0.00000000
+		-6.27178018	-0.00096722	0.00059295	0.00097224	-0.00000114	0.00000000
+		-6.27178121	-0.00096692	0.00059276	0.00097194	-0.00000114	0.00000000
+		-6.27178224	-0.00096662	0.00059258	0.00097163	-0.00000114	0.00000000
+		-6.27178326	-0.00096632	0.00059239	0.00097133	-0.00000114	0.00000000
+		-6.27178429	-0.00096602	0.00059221	0.00097103	-0.00000114	0.00000000
+		-6.27178531	-0.00096571	0.00059202	0.00097072	-0.00000114	0.00000000
+		-6.27178633	-0.00096541	0.00059184	0.00097042	-0.00000114	0.00000000
+		-6.27178735	-0.00096511	0.00059165	0.00097012	-0.00000114	0.00000000
+		-6.27178836	-0.00096481	0.00059147	0.00096981	-0.00000114	0.00000000
+		-6.27178938	-0.00096451	0.00059128	0.00096951	-0.00000114	0.00000000
+		-6.27179039	-0.00096421	0.00059110	0.00096921	-0.00000114	0.00000000
+		-6.27179140	-0.00096391	0.00059091	0.00096891	-0.00000114	0.00000000
+		-6.27179242	-0.00096361	0.00059073	0.00096861	-0.00000114	0.00000000
+		-6.27179342	-0.00096331	0.00059055	0.00096831	-0.00000114	0.00000000
+		-6.27179443	-0.00096301	0.00059036	0.00096800	-0.00000114	0.00000000
+		-6.27179544	-0.00096271	0.00059018	0.00096770	-0.00000114	0.00000000
+		-6.27179644	-0.00096241	0.00058999	0.00096740	-0.00000114	0.00000000
+		-6.27179744	-0.00096211	0.00058981	0.00096710	-0.00000114	0.00000000
+		-6.27179844	-0.00096181	0.00058963	0.00096680	-0.00000114	0.00000000
+		-6.27179944	-0.00096152	0.00058944	0.00096650	-0.00000114	0.00000000
+		-6.27180044	-0.00096122	0.00058926	0.00096620	-0.00000114	0.00000000
+		-6.27180143	-0.00096092	0.00058908	0.00096590	-0.00000114	0.00000000
+		-6.27180243	-0.00096062	0.00058890	0.00096560	-0.00000114	0.00000000
+		-6.27180342	-0.00096032	0.00058871	0.00096530	-0.00000114	0.00000000
+		-6.27180441	-0.00096002	0.00058853	0.00096500	-0.00000114	0.00000000
+		-6.27180540	-0.00095973	0.00058835	0.00096470	-0.00000114	0.00000000
+		-6.27180639	-0.00095943	0.00058816	0.00096440	-0.00000114	0.00000000
+		-6.27180737	-0.00095913	0.00058798	0.00096410	-0.00000114	0.00000000
+		-6.27180836	-0.00095884	0.00058780	0.00096381	-0.00000114	0.00000000
+		-6.27180934	-0.00095854	0.00058762	0.00096351	-0.00000114	0.00000000
+		-6.27181032	-0.00095824	0.00058744	0.00096321	-0.00000114	0.00000000
+		-6.27181130	-0.00095795	0.00058725	0.00096291	-0.00000114	0.00000000
+		-6.27181228	-0.00095765	0.00058707	0.00096261	-0.00000114	0.00000000
+		-6.27181325	-0.00095735	0.00058689	0.00096232	-0.00000114	0.00000000
+		-6.27181423	-0.00095706	0.00058671	0.00096202	-0.00000114	0.00000000
+		-6.27181520	-0.00095676	0.00058653	0.00096172	-0.00000114	0.00000000
+		-6.27181618	-0.00095647	0.00058635	0.00096142	-0.00000114	0.00000000
+		-6.27181715	-0.00095617	0.00058616	0.00096113	-0.00000114	0.00000000
+		-6.27181811	-0.00095588	0.00058598	0.00096083	-0.00000114	0.00000000
+		-6.27181908	-0.00095558	0.00058580	0.00096053	-0.00000114	0.00000000
+		-6.27182005	-0.00095529	0.00058562	0.00096024	-0.00000114	0.00000000
+		-6.27182101	-0.00095499	0.00058544	0.00095994	-0.00000114	0.00000000
+		-6.27182198	-0.00095470	0.00058526	0.00095964	-0.00000114	0.00000000
+		-6.27182294	-0.00095440	0.00058508	0.00095935	-0.00000114	0.00000000
+		-6.27182390	-0.00095411	0.00058490	0.00095905	-0.00000114	0.00000000
+		-6.27182486	-0.00095381	0.00058472	0.00095876	-0.00000114	0.00000000
+		-6.27182581	-0.00095352	0.00058454	0.00095846	-0.00000114	0.00000000
+		-6.27182677	-0.00095323	0.00058436	0.00095817	-0.00000114	0.00000000
+		-6.27182772	-0.00095293	0.00058418	0.00095787	-0.00000114	0.00000000
+		-6.27182867	-0.00095264	0.00058400	0.00095758	-0.00000114	0.00000000
+		-6.27182963	-0.00095235	0.00058382	0.00095728	-0.00000114	0.00000000
+		-6.27183058	-0.00095205	0.00058364	0.00095699	-0.00000114	0.00000000
+		-6.27183152	-0.00095176	0.00058346	0.00095669	-0.00000114	0.00000000
+		-6.27183247	-0.00095147	0.00058328	0.00095640	-0.00000114	0.00000000
+		-6.27183342	-0.00095118	0.00058310	0.00095611	-0.00000114	0.00000000
+		-6.27183436	-0.00095088	0.00058292	0.00095581	-0.00000114	0.00000000
+		-6.27183530	-0.00095059	0.00058274	0.00095552	-0.00000114	0.00000000
+		-6.27183624	-0.00095030	0.00058256	0.00095523	-0.00000114	0.00000000
+		-6.27183718	-0.00095001	0.00058238	0.00095493	-0.00000114	0.00000000
+		-6.27183812	-0.00094972	0.00058221	0.00095464	-0.00000114	0.00000000
+		-6.27183906	-0.00094943	0.00058203	0.00095435	-0.00000114	0.00000000
+		-6.27183999	-0.00094914	0.00058185	0.00095405	-0.00000114	0.00000000
+		-6.27184093	-0.00094884	0.00058167	0.00095376	-0.00000114	0.00000000
+		-6.27184186	-0.00094855	0.00058149	0.00095347	-0.00000114	0.00000000
+		-6.27184279	-0.00094826	0.00058131	0.00095318	-0.00000114	0.00000000
+		-6.27184372	-0.00094797	0.00058113	0.00095288	-0.00000114	0.00000000
+		-6.27184465	-0.00094768	0.00058096	0.00095259	-0.00000114	0.00000000
+		-6.27184558	-0.00094739	0.00058078	0.00095230	-0.00000114	0.00000000
+		-6.27184650	-0.00094710	0.00058060	0.00095201	-0.00000114	0.00000000
+		-6.27184743	-0.00094681	0.00058042	0.00095172	-0.00000114	0.00000000
+		-6.27184835	-0.00094652	0.00058025	0.00095143	-0.00000114	0.00000000
+		-6.27184927	-0.00094623	0.00058007	0.00095114	-0.00000114	0.00000000
+		-6.27185019	-0.00094595	0.00057989	0.00095085	-0.00000114	0.00000000
+		-6.27185111	-0.00094566	0.00057971	0.00095056	-0.00000114	0.00000000
+		-6.27185203	-0.00094537	0.00057954	0.00095027	-0.00000114	0.00000000
+		-6.27185294	-0.00094508	0.00057936	0.00094998	-0.00000114	0.00000000
+		-6.27185386	-0.00094479	0.00057918	0.00094969	-0.00000114	0.00000000
+		-6.27185477	-0.00094450	0.00057901	0.00094940	-0.00000114	0.00000000
+		-6.27185568	-0.00094421	0.00057883	0.00094911	-0.00000114	0.00000000
+		-6.27185659	-0.00094393	0.00057865	0.00094882	-0.00000114	0.00000000
+		-6.27185750	-0.00094364	0.00057848	0.00094853	-0.00000114	0.00000000
+		-6.27185841	-0.00094335	0.00057830	0.00094824	-0.00000114	0.00000000
+		-6.27185932	-0.00094306	0.00057812	0.00094795	-0.00000114	0.00000000
+		-6.27186022	-0.00094278	0.00057795	0.00094766	-0.00000114	0.00000000
+		-6.27186113	-0.00094249	0.00057777	0.00094737	-0.00000114	0.00000000
+		-6.27186203	-0.00094220	0.00057759	0.00094708	-0.00000114	0.00000000
+		-6.27186293	-0.00094192	0.00057742	0.00094680	-0.00000114	0.00000000
+		-6.27186383	-0.00094163	0.00057724	0.00094651	-0.00000114	0.00000000
+		-6.27186473	-0.00094134	0.00057707	0.00094622	-0.00000114	0.00000000
+		-6.27186563	-0.00094106	0.00057689	0.00094593	-0.00000114	0.00000000
+		-6.27186652	-0.00094077	0.00057672	0.00094564	-0.00000114	0.00000000
+		-6.27186742	-0.00094049	0.00057654	0.00094536	-0.00000114	0.00000000
+		-6.27186831	-0.00094020	0.00057636	0.00094507	-0.00000114	0.00000000
+		-6.27186920	-0.00093991	0.00057619	0.00094478	-0.00000114	0.00000000
+		-6.27187010	-0.00093963	0.00057601	0.00094450	-0.00000114	0.00000000
+		-6.27187098	-0.00093934	0.00057584	0.00094421	-0.00000114	0.00000000
+		-6.27187187	-0.00093906	0.00057567	0.00094392	-0.00000114	0.00000000
+		-6.27187276	-0.00093877	0.00057549	0.00094364	-0.00000114	0.00000000
+		-6.27187365	-0.00093849	0.00057532	0.00094335	-0.00000114	0.00000000
+		-6.27187453	-0.00093821	0.00057514	0.00094306	-0.00000114	0.00000000
+		-6.27187541	-0.00093792	0.00057497	0.00094278	-0.00000114	0.00000000
+		-6.27187630	-0.00093764	0.00057479	0.00094249	-0.00000114	0.00000000
+		-6.27187718	-0.00093735	0.00057462	0.00094221	-0.00000114	0.00000000
+		-6.27187806	-0.00093707	0.00057444	0.00094192	-0.00000114	0.00000000
+		-6.27187894	-0.00093679	0.00057427	0.00094164	-0.00000114	0.00000000
+		-6.27187981	-0.00093650	0.00057410	0.00094135	-0.00000114	0.00000000
+		-6.27188069	-0.00093622	0.00057392	0.00094107	-0.00000114	0.00000000
+		-6.27188156	-0.00093594	0.00057375	0.00094078	-0.00000114	0.00000000
+		-6.27188244	-0.00093565	0.00057358	0.00094050	-0.00000114	0.00000000
+		-6.27188331	-0.00093537	0.00057340	0.00094021	-0.00000114	0.00000000
+		-6.27188418	-0.00093509	0.00057323	0.00093993	-0.00000114	0.00000000
+		-6.27188505	-0.00093481	0.00057306	0.00093965	-0.00000114	0.00000000
+		-6.27188592	-0.00093452	0.00057288	0.00093936	-0.00000114	0.00000000
+		-6.27188679	-0.00093424	0.00057271	0.00093908	-0.00000114	0.00000000
+		-6.27188765	-0.00093396	0.00057254	0.00093880	-0.00000114	0.00000000
+		-6.27188852	-0.00093368	0.00057236	0.00093851	-0.00000114	0.00000000
+		-6.27188938	-0.00093340	0.00057219	0.00093823	-0.00000114	0.00000000
+		-6.27189025	-0.00093312	0.00057202	0.00093795	-0.00000114	0.00000000
+		-6.27189111	-0.00093283	0.00057185	0.00093766	-0.00000114	0.00000000
+		-6.27189197	-0.00093255	0.00057167	0.00093738	-0.00000114	0.00000000
+		-6.27189283	-0.00093227	0.00057150	0.00093710	-0.00000114	0.00000000
+		-6.27189369	-0.00093199	0.00057133	0.00093682	-0.00000114	0.00000000
+		-6.27189454	-0.00093171	0.00057116	0.00093654	-0.00000114	0.00000000
+		-6.27189540	-0.00093143	0.00057098	0.00093625	-0.00000114	0.00000000
+		-6.27189625	-0.00093115	0.00057081	0.00093597	-0.00000114	0.00000000
+		-6.27189711	-0.00093087	0.00057064	0.00093569	-0.00000114	0.00000000
+		-6.27189796	-0.00093059	0.00057047	0.00093541	-0.00000114	0.00000000
+		-6.27189881	-0.00093031	0.00057030	0.00093513	-0.00000114	0.00000000
+		-6.27189966	-0.00093003	0.00057013	0.00093485	-0.00000114	0.00000000
+		-6.27190051	-0.00092975	0.00056995	0.00093457	-0.00000114	0.00000000
+		-6.27190136	-0.00092947	0.00056978	0.00093429	-0.00000114	0.00000000
+		-6.27190220	-0.00092919	0.00056961	0.00093401	-0.00000114	0.00000000
+		-6.27190305	-0.00092892	0.00056944	0.00093372	-0.00000114	0.00000000
+		-6.27190389	-0.00092864	0.00056927	0.00093344	-0.00000114	0.00000000
+		-6.27190474	-0.00092836	0.00056910	0.00093316	-0.00000114	0.00000000
+		-6.27190558	-0.00092808	0.00056893	0.00093288	-0.00000114	0.00000000
+		-6.27190642	-0.00092780	0.00056876	0.00093261	-0.00000114	0.00000000
+		-6.27190726	-0.00092752	0.00056859	0.00093233	-0.00000114	0.00000000
+		-6.27190810	-0.00092725	0.00056842	0.00093205	-0.00000114	0.00000000
+		-6.27190893	-0.00092697	0.00056825	0.00093177	-0.00000114	0.00000000
+		-6.27190977	-0.00092669	0.00056808	0.00093149	-0.00000114	0.00000000
+		-6.27191061	-0.00092641	0.00056791	0.00093121	-0.00000114	0.00000000
+		-6.27191144	-0.00092614	0.00056774	0.00093093	-0.00000114	0.00000000
+		-6.27191227	-0.00092586	0.00056757	0.00093065	-0.00000114	0.00000000
+		-6.27191311	-0.00092558	0.00056740	0.00093037	-0.00000114	0.00000000
+		-6.27191394	-0.00092531	0.00056723	0.00093010	-0.00000114	0.00000000
+		-6.27191477	-0.00092503	0.00056706	0.00092982	-0.00000114	0.00000000
+		-6.27191559	-0.00092475	0.00056689	0.00092954	-0.00000114	0.00000000
+		-6.27191642	-0.00092448	0.00056672	0.00092926	-0.00000114	0.00000000
+		-6.27191725	-0.00092420	0.00056655	0.00092899	-0.00000114	0.00000000
+		-6.27191807	-0.00092393	0.00056638	0.00092871	-0.00000114	0.00000000
+		-6.27191890	-0.00092365	0.00056621	0.00092843	-0.00000114	0.00000000
+		-6.27191972	-0.00092338	0.00056604	0.00092815	-0.00000114	0.00000000
+		-6.27192054	-0.00092310	0.00056587	0.00092788	-0.00000114	0.00000000
+		-6.27192136	-0.00092282	0.00056570	0.00092760	-0.00000114	0.00000000
+		-6.27192218	-0.00092255	0.00056553	0.00092732	-0.00000114	0.00000000
+		-6.27192300	-0.00092227	0.00056537	0.00092705	-0.00000114	0.00000000
+		-6.27192382	-0.00092200	0.00056520	0.00092677	-0.00000114	0.00000000
+		-6.27192464	-0.00092173	0.00056503	0.00092650	-0.00000114	0.00000000
+		-6.27192545	-0.00092145	0.00056486	0.00092622	-0.00000114	0.00000000
+		-6.27192627	-0.00092118	0.00056469	0.00092594	-0.00000114	0.00000000
+		-6.27192708	-0.00092090	0.00056452	0.00092567	-0.00000114	0.00000000
+		-6.27192790	-0.00092063	0.00056436	0.00092539	-0.00000114	0.00000000
+		-6.27192871	-0.00092036	0.00056419	0.00092512	-0.00000114	0.00000000
+		-6.27192952	-0.00092008	0.00056402	0.00092484	-0.00000114	0.00000000
+		-6.27193033	-0.00091981	0.00056385	0.00092457	-0.00000114	0.00000000
+		-6.27193114	-0.00091954	0.00056368	0.00092429	-0.00000114	0.00000000
+		-6.27193194	-0.00091926	0.00056352	0.00092402	-0.00000114	0.00000000
+		-6.27193275	-0.00091899	0.00056335	0.00092374	-0.00000114	0.00000000
+		-6.27193356	-0.00091872	0.00056318	0.00092347	-0.00000114	0.00000000
+		-6.27193436	-0.00091844	0.00056301	0.00092320	-0.00000114	0.00000000
+		-6.27193516	-0.00091817	0.00056285	0.00092292	-0.00000114	0.00000000
+		-6.27193597	-0.00091790	0.00056268	0.00092265	-0.00000114	0.00000000
+		-6.27193677	-0.00091763	0.00056251	0.00092238	-0.00000114	0.00000000
+		-6.27193757	-0.00091736	0.00056235	0.00092210	-0.00000114	0.00000000
+		-6.27193837	-0.00091708	0.00056218	0.00092183	-0.00000114	0.00000000
+		-6.27193917	-0.00091681	0.00056201	0.00092156	-0.00000114	0.00000000
+		-6.27193996	-0.00091654	0.00056185	0.00092128	-0.00000114	0.00000000
+		-6.27194076	-0.00091627	0.00056168	0.00092101	-0.00000114	0.00000000
+		-6.27194155	-0.00091600	0.00056151	0.00092074	-0.00000114	0.00000000
+		-6.27194235	-0.00091573	0.00056135	0.00092046	-0.00000114	0.00000000
+		-6.27194314	-0.00091546	0.00056118	0.00092019	-0.00000114	0.00000000
+		-6.27194394	-0.00091519	0.00056102	0.00091992	-0.00000114	0.00000000
+		-6.27194473	-0.00091492	0.00056085	0.00091965	-0.00000114	0.00000000
+		-6.27194552	-0.00091465	0.00056068	0.00091938	-0.00000114	0.00000000
+		-6.27194631	-0.00091438	0.00056052	0.00091911	-0.00000114	0.00000000
+		-6.27194710	-0.00091411	0.00056035	0.00091883	-0.00000114	0.00000000
+		-6.27194788	-0.00091384	0.00056019	0.00091856	-0.00000114	0.00000000
+		-6.27194867	-0.00091357	0.00056002	0.00091829	-0.00000114	0.00000000
+		-6.27194946	-0.00091330	0.00055986	0.00091802	-0.00000114	0.00000000
+		-6.27195024	-0.00091303	0.00055969	0.00091775	-0.00000114	0.00000000
+		-6.27195102	-0.00091276	0.00055953	0.00091748	-0.00000114	0.00000000
+		-6.27195181	-0.00091249	0.00055936	0.00091721	-0.00000114	0.00000000
+		-6.27195259	-0.00091222	0.00055920	0.00091694	-0.00000114	0.00000000
+		-6.27195337	-0.00091195	0.00055903	0.00091667	-0.00000114	0.00000000
+		-6.27195415	-0.00091168	0.00055887	0.00091640	-0.00000114	0.00000000
+		-6.27195493	-0.00091141	0.00055870	0.00091613	-0.00000114	0.00000000
+		-6.27195571	-0.00091115	0.00055854	0.00091586	-0.00000114	0.00000000
+		-6.27195648	-0.00091088	0.00055837	0.00091559	-0.00000114	0.00000000
+		-6.27195726	-0.00091061	0.00055821	0.00091532	-0.00000114	0.00000000
+		-6.27195803	-0.00091034	0.00055804	0.00091505	-0.00000114	0.00000000
+		-6.27195881	-0.00091007	0.00055788	0.00091478	-0.00000114	0.00000000
+		-6.27195958	-0.00090981	0.00055771	0.00091451	-0.00000114	0.00000000
+		-6.27196035	-0.00090954	0.00055755	0.00091424	-0.00000114	0.00000000
+		-6.27196113	-0.00090927	0.00055739	0.00091397	-0.00000114	0.00000000
+		-6.27196190	-0.00090901	0.00055722	0.00091371	-0.00000114	0.00000000
+		-6.27196267	-0.00090874	0.00055706	0.00091344	-0.00000114	0.00000000
+		-6.27196344	-0.00090847	0.00055690	0.00091317	-0.00000114	0.00000000
+		-6.27196420	-0.00090821	0.00055673	0.00091290	-0.00000114	0.00000000
+		-6.27196497	-0.00090794	0.00055657	0.00091263	-0.00000114	0.00000000
+		-6.27196574	-0.00090767	0.00055641	0.00091237	-0.00000114	0.00000000
+		-6.27196650	-0.00090741	0.00055624	0.00091210	-0.00000114	0.00000000
+		-6.27196726	-0.00090714	0.00055608	0.00091183	-0.00000114	0.00000000
+		-6.27196803	-0.00090688	0.00055592	0.00091156	-0.00000114	0.00000000
+		-6.27196879	-0.00090661	0.00055575	0.00091130	-0.00000114	0.00000000
+		-6.27196955	-0.00090634	0.00055559	0.00091103	-0.00000114	0.00000000
+		-6.27197031	-0.00090608	0.00055543	0.00091076	-0.00000114	0.00000000
+		-6.27197107	-0.00090581	0.00055526	0.00091050	-0.00000114	0.00000000
+		-6.27197183	-0.00090555	0.00055510	0.00091023	-0.00000114	0.00000000
+		-6.27197259	-0.00090528	0.00055494	0.00090997	-0.00000114	0.00000000
+		-6.27197335	-0.00090502	0.00055478	0.00090970	-0.00000114	0.00000000
+		-6.27197410	-0.00090476	0.00055461	0.00090943	-0.00000114	0.00000000
+		-6.27197486	-0.00090449	0.00055445	0.00090917	-0.00000114	0.00000000
+		-6.27197561	-0.00090423	0.00055429	0.00090890	-0.00000114	0.00000000
+		-6.27197637	-0.00090396	0.00055413	0.00090864	-0.00000114	0.00000000
+		-6.27197712	-0.00090370	0.00055397	0.00090837	-0.00000114	0.00000000
+		-6.27197787	-0.00090344	0.00055380	0.00090811	-0.00000114	0.00000000
+		-6.27197862	-0.00090317	0.00055364	0.00090784	-0.00000114	0.00000000
+		-6.27197937	-0.00090291	0.00055348	0.00090758	-0.00000114	0.00000000
+		-6.27198012	-0.00090264	0.00055332	0.00090731	-0.00000114	0.00000000
+		-6.27198087	-0.00090238	0.00055316	0.00090705	-0.00000114	0.00000000
+		-6.27198162	-0.00090212	0.00055300	0.00090678	-0.00000114	0.00000000
+		-6.27198236	-0.00090186	0.00055284	0.00090652	-0.00000114	0.00000000
+		-6.27198311	-0.00090159	0.00055267	0.00090625	-0.00000114	0.00000000
+		-6.27198385	-0.00090133	0.00055251	0.00090599	-0.00000113	0.00000000
+		-6.27198460	-0.00090107	0.00055235	0.00090573	-0.00000113	0.00000000
+		-6.27198534	-0.00090081	0.00055219	0.00090546	-0.00000113	0.00000000
+		-6.27198608	-0.00090054	0.00055203	0.00090520	-0.00000113	0.00000000
+		-6.27198682	-0.00090028	0.00055187	0.00090494	-0.00000113	0.00000000
+		-6.27198756	-0.00090002	0.00055171	0.00090467	-0.00000113	0.00000000
+		-6.27198830	-0.00089976	0.00055155	0.00090441	-0.00000113	0.00000000
+		-6.27198904	-0.00089950	0.00055139	0.00090415	-0.00000113	0.00000000
+		-6.27198978	-0.00089924	0.00055123	0.00090388	-0.00000113	0.00000000
+		-6.27199052	-0.00089898	0.00055107	0.00090362	-0.00000113	0.00000000
+		-6.27199126	-0.00089871	0.00055091	0.00090336	-0.00000113	0.00000000
+		-6.27199199	-0.00089845	0.00055075	0.00090310	-0.00000113	0.00000000
+		-6.27199273	-0.00089819	0.00055059	0.00090284	-0.00000113	0.00000000
+		-6.27199346	-0.00089793	0.00055043	0.00090257	-0.00000113	0.00000000
+		-6.27199419	-0.00089767	0.00055027	0.00090231	-0.00000113	0.00000000
+		-6.27199493	-0.00089741	0.00055011	0.00090205	-0.00000113	0.00000000
+		-6.27199566	-0.00089715	0.00054995	0.00090179	-0.00000113	0.00000000
+		-6.27199639	-0.00089689	0.00054979	0.00090153	-0.00000113	0.00000000
+		-6.27199712	-0.00089663	0.00054963	0.00090127	-0.00000113	0.00000000
+		-6.27199785	-0.00089637	0.00054947	0.00090100	-0.00000113	0.00000000
+		-6.27199857	-0.00089611	0.00054931	0.00090074	-0.00000113	0.00000000
+		-6.27199930	-0.00089585	0.00054915	0.00090048	-0.00000113	0.00000000
+		-6.27200003	-0.00089559	0.00054899	0.00090022	-0.00000113	0.00000000
+		-6.27200076	-0.00089534	0.00054883	0.00089996	-0.00000113	0.00000000
+		-6.27200148	-0.00089508	0.00054868	0.00089970	-0.00000113	0.00000000
+		-6.27200220	-0.00089482	0.00054852	0.00089944	-0.00000113	0.00000000
+		-6.27200293	-0.00089456	0.00054836	0.00089918	-0.00000113	0.00000000
+		-6.27200365	-0.00089430	0.00054820	0.00089892	-0.00000113	0.00000000
+		-6.27200437	-0.00089404	0.00054804	0.00089866	-0.00000113	0.00000000
+		-6.27200509	-0.00089378	0.00054788	0.00089840	-0.00000113	0.00000000
+		-6.27200581	-0.00089353	0.00054772	0.00089814	-0.00000113	0.00000000
+		-6.27200653	-0.00089327	0.00054757	0.00089788	-0.00000113	0.00000000
+		-6.27200725	-0.00089301	0.00054741	0.00089763	-0.00000113	0.00000000
+		-6.27200797	-0.00089275	0.00054725	0.00089737	-0.00000113	0.00000000
+		-6.27200869	-0.00089250	0.00054709	0.00089711	-0.00000113	0.00000000
+		-6.27200940	-0.00089224	0.00054693	0.00089685	-0.00000113	0.00000000
+		-6.27201012	-0.00089198	0.00054678	0.00089659	-0.00000113	0.00000000
+		-6.27201083	-0.00089172	0.00054662	0.00089633	-0.00000113	0.00000000
+		-6.27201155	-0.00089147	0.00054646	0.00089607	-0.00000113	0.00000000
+		-6.27201226	-0.00089121	0.00054630	0.00089582	-0.00000113	0.00000000
+		-6.27201297	-0.00089095	0.00054615	0.00089556	-0.00000113	0.00000000
+		-6.27201369	-0.00089070	0.00054599	0.00089530	-0.00000113	0.00000000
+		-6.27201440	-0.00089044	0.00054583	0.00089504	-0.00000113	0.00000000
+		-6.27201511	-0.00089019	0.00054568	0.00089479	-0.00000113	0.00000000
+		-6.27201582	-0.00088993	0.00054552	0.00089453	-0.00000113	0.00000000
+		-6.27201653	-0.00088967	0.00054536	0.00089427	-0.00000113	0.00000000
+		-6.27201723	-0.00088942	0.00054520	0.00089401	-0.00000113	0.00000000
+		-6.27201794	-0.00088916	0.00054505	0.00089376	-0.00000113	0.00000000
+		-6.27201865	-0.00088891	0.00054489	0.00089350	-0.00000113	0.00000000
+		-6.27201935	-0.00088865	0.00054473	0.00089324	-0.00000113	0.00000000
+		-6.27202006	-0.00088840	0.00054458	0.00089299	-0.00000113	0.00000000
+		-6.27202076	-0.00088814	0.00054442	0.00089273	-0.00000113	0.00000000
+		-6.27202147	-0.00088789	0.00054427	0.00089248	-0.00000113	0.00000000
+		-6.27202217	-0.00088763	0.00054411	0.00089222	-0.00000113	0.00000000
+		-6.27202287	-0.00088738	0.00054395	0.00089196	-0.00000113	0.00000000
+		-6.27202357	-0.00088713	0.00054380	0.00089171	-0.00000113	0.00000000
+		-6.27202427	-0.00088687	0.00054364	0.00089145	-0.00000113	0.00000000
+		-6.27202497	-0.00088662	0.00054349	0.00089120	-0.00000113	0.00000000
+		-6.27202567	-0.00088636	0.00054333	0.00089094	-0.00000113	0.00000000
+		-6.27202637	-0.00088611	0.00054317	0.00089069	-0.00000113	0.00000000
+		-6.27202707	-0.00088586	0.00054302	0.00089043	-0.00000113	0.00000000
+		-6.27202777	-0.00088560	0.00054286	0.00089018	-0.00000113	0.00000000
+		-6.27202846	-0.00088535	0.00054271	0.00088992	-0.00000113	0.00000000
+		-6.27202916	-0.00088510	0.00054255	0.00088967	-0.00000113	0.00000000
+		-6.27202985	-0.00088484	0.00054240	0.00088941	-0.00000113	0.00000000
+		-6.27203055	-0.00088459	0.00054224	0.00088916	-0.00000113	0.00000000
+		-6.27203124	-0.00088434	0.00054209	0.00088891	-0.00000113	0.00000000
+		-6.27203193	-0.00088409	0.00054193	0.00088865	-0.00000113	0.00000000
+		-6.27203262	-0.00088383	0.00054178	0.00088840	-0.00000113	0.00000000
+		-6.27203332	-0.00088358	0.00054162	0.00088814	-0.00000113	0.00000000
+		-6.27203401	-0.00088333	0.00054147	0.00088789	-0.00000113	0.00000000
+		-6.27203470	-0.00088308	0.00054131	0.00088764	-0.00000113	0.00000000
+		-6.27203539	-0.00088282	0.00054116	0.00088738	-0.00000113	0.00000000
+		-6.27203607	-0.00088257	0.00054100	0.00088713	-0.00000113	0.00000000
+		-6.27203676	-0.00088232	0.00054085	0.00088688	-0.00000113	0.00000000
+		-6.27203745	-0.00088207	0.00054069	0.00088663	-0.00000113	0.00000000
+		-6.27203813	-0.00088182	0.00054054	0.00088637	-0.00000113	0.00000000
+		-6.27203882	-0.00088157	0.00054039	0.00088612	-0.00000113	0.00000000
+		-6.27203950	-0.00088132	0.00054023	0.00088587	-0.00000113	0.00000000
+		-6.27204019	-0.00088107	0.00054008	0.00088562	-0.00000113	0.00000000
+		-6.27204087	-0.00088082	0.00053992	0.00088536	-0.00000113	0.00000000
+		-6.27204156	-0.00088056	0.00053977	0.00088511	-0.00000113	0.00000000
+		-6.27204224	-0.00088031	0.00053962	0.00088486	-0.00000113	0.00000000
+		-6.27204292	-0.00088006	0.00053946	0.00088461	-0.00000113	0.00000000
+		-6.27204360	-0.00087981	0.00053931	0.00088436	-0.00000113	0.00000000
+		-6.27204428	-0.00087956	0.00053916	0.00088411	-0.00000113	0.00000000
+		-6.27204496	-0.00087931	0.00053900	0.00088385	-0.00000113	0.00000000
+		-6.27204564	-0.00087906	0.00053885	0.00088360	-0.00000113	0.00000000
+		-6.27204632	-0.00087881	0.00053870	0.00088335	-0.00000113	0.00000000
+		-6.27204699	-0.00087857	0.00053854	0.00088310	-0.00000113	0.00000000
+		-6.27204767	-0.00087832	0.00053839	0.00088285	-0.00000113	0.00000000
+		-6.27204835	-0.00087807	0.00053824	0.00088260	-0.00000113	0.00000000
+		-6.27204902	-0.00087782	0.00053809	0.00088235	-0.00000113	0.00000000
+		-6.27204970	-0.00087757	0.00053793	0.00088210	-0.00000113	0.00000000
+		-6.27205037	-0.00087732	0.00053778	0.00088185	-0.00000113	0.00000000
+		-6.27205104	-0.00087707	0.00053763	0.00088160	-0.00000113	0.00000000
+		-6.27205172	-0.00087682	0.00053748	0.00088135	-0.00000113	0.00000000
+		-6.27205239	-0.00087658	0.00053732	0.00088110	-0.00000113	0.00000000
+		-6.27205306	-0.00087633	0.00053717	0.00088085	-0.00000113	0.00000000
+		-6.27205373	-0.00087608	0.00053702	0.00088060	-0.00000113	0.00000000
+		-6.27205440	-0.00087583	0.00053687	0.00088035	-0.00000113	0.00000000
+		-6.27205507	-0.00087558	0.00053671	0.00088010	-0.00000113	0.00000000
+		-6.27205574	-0.00087534	0.00053656	0.00087985	-0.00000113	0.00000000
+		-6.27205641	-0.00087509	0.00053641	0.00087961	-0.00000113	0.00000000
+		-6.27205707	-0.00087484	0.00053626	0.00087936	-0.00000113	0.00000000
+		-6.27205774	-0.00087459	0.00053611	0.00087911	-0.00000113	0.00000000
+		-6.27205841	-0.00087435	0.00053596	0.00087886	-0.00000113	0.00000000
+		-6.27205907	-0.00087410	0.00053580	0.00087861	-0.00000113	0.00000000
+		-6.27205974	-0.00087385	0.00053565	0.00087836	-0.00000113	0.00000000
+		-6.27206040	-0.00087361	0.00053550	0.00087812	-0.00000113	0.00000000
+		-6.27206106	-0.00087336	0.00053535	0.00087787	-0.00000113	0.00000000
+		-6.27206173	-0.00087311	0.00053520	0.00087762	-0.00000113	0.00000000
+		-6.27206239	-0.00087287	0.00053505	0.00087737	-0.00000113	0.00000000
+		-6.27206305	-0.00087262	0.00053490	0.00087713	-0.00000113	0.00000000
+		-6.27206371	-0.00087238	0.00053475	0.00087688	-0.00000113	0.00000000
+		-6.27206437	-0.00087213	0.00053460	0.00087663	-0.00000113	0.00000000
+		-6.27206503	-0.00087188	0.00053445	0.00087638	-0.00000113	0.00000000
+		-6.27206569	-0.00087164	0.00053429	0.00087614	-0.00000113	0.00000000
+		-6.27206635	-0.00087139	0.00053414	0.00087589	-0.00000113	0.00000000
+		-6.27206701	-0.00087115	0.00053399	0.00087564	-0.00000113	0.00000000
+		-6.27206767	-0.00087090	0.00053384	0.00087540	-0.00000113	0.00000000
+		-6.27206832	-0.00087066	0.00053369	0.00087515	-0.00000113	0.00000000
+		-6.27206898	-0.00087041	0.00053354	0.00087491	-0.00000113	0.00000000
+		-6.27206963	-0.00087017	0.00053339	0.00087466	-0.00000113	0.00000000
+		-6.27207029	-0.00086992	0.00053324	0.00087441	-0.00000113	0.00000000
+		-6.27207094	-0.00086968	0.00053309	0.00087417	-0.00000113	0.00000000
+		-6.27207160	-0.00086944	0.00053294	0.00087392	-0.00000113	0.00000000
+		-6.27207225	-0.00086919	0.00053279	0.00087368	-0.00000113	0.00000000
+		-6.27207290	-0.00086895	0.00053264	0.00087343	-0.00000113	0.00000000
+		-6.27207355	-0.00086870	0.00053249	0.00087319	-0.00000113	0.00000000
+		-6.27207420	-0.00086846	0.00053234	0.00087294	-0.00000113	0.00000000
+		-6.27207485	-0.00086822	0.00053219	0.00087270	-0.00000113	0.00000000
+		-6.27207550	-0.00086797	0.00053205	0.00087245	-0.00000113	0.00000000
+		-6.27207615	-0.00086773	0.00053190	0.00087221	-0.00000113	0.00000000
+		-6.27207680	-0.00086749	0.00053175	0.00087196	-0.00000113	0.00000000
+		-6.27207745	-0.00086724	0.00053160	0.00087172	-0.00000113	0.00000000
+		-6.27207810	-0.00086700	0.00053145	0.00087147	-0.00000113	0.00000000
+		-6.27207874	-0.00086676	0.00053130	0.00087123	-0.00000113	0.00000000
+		-6.27207939	-0.00086652	0.00053115	0.00087099	-0.00000113	0.00000000
+		-6.27208004	-0.00086627	0.00053100	0.00087074	-0.00000113	0.00000000
+		-6.27208068	-0.00086603	0.00053085	0.00087050	-0.00000113	0.00000000
+		-6.27208132	-0.00086579	0.00053070	0.00087026	-0.00000113	0.00000000
+		-6.27208197	-0.00086555	0.00053056	0.00087001	-0.00000113	0.00000000
+		-6.27208261	-0.00086530	0.00053041	0.00086977	-0.00000113	0.00000000
+		-6.27208325	-0.00086506	0.00053026	0.00086953	-0.00000113	0.00000000
+		-6.27208390	-0.00086482	0.00053011	0.00086928	-0.00000113	0.00000000
+		-6.27208454	-0.00086458	0.00052996	0.00086904	-0.00000113	0.00000000
+		-6.27208518	-0.00086434	0.00052981	0.00086880	-0.00000113	0.00000000
+		-6.27208582	-0.00086410	0.00052967	0.00086856	-0.00000113	0.00000000
+		-6.27208646	-0.00086386	0.00052952	0.00086831	-0.00000113	0.00000000
+		-6.27208710	-0.00086361	0.00052937	0.00086807	-0.00000113	0.00000000
+		-6.27208774	-0.00086337	0.00052922	0.00086783	-0.00000113	0.00000000
+		-6.27208837	-0.00086313	0.00052908	0.00086759	-0.00000113	0.00000000
+		-6.27208901	-0.00086289	0.00052893	0.00086734	-0.00000113	0.00000000
+		-6.27208965	-0.00086265	0.00052878	0.00086710	-0.00000113	0.00000000
+		-6.27209028	-0.00086241	0.00052863	0.00086686	-0.00000113	0.00000000
+		-6.27209092	-0.00086217	0.00052849	0.00086662	-0.00000113	0.00000000
+		-6.27209155	-0.00086193	0.00052834	0.00086638	-0.00000113	0.00000000
+		-6.27209219	-0.00086169	0.00052819	0.00086614	-0.00000113	0.00000000
+		-6.27209282	-0.00086145	0.00052804	0.00086590	-0.00000113	0.00000000
+		-6.27209346	-0.00086121	0.00052790	0.00086565	-0.00000113	0.00000000
+		-6.27209409	-0.00086097	0.00052775	0.00086541	-0.00000113	0.00000000
+		-6.27209472	-0.00086073	0.00052760	0.00086517	-0.00000113	0.00000000
+		-6.27209535	-0.00086049	0.00052746	0.00086493	-0.00000113	0.00000000
+		-6.27209598	-0.00086025	0.00052731	0.00086469	-0.00000113	0.00000000
+		-6.27209661	-0.00086002	0.00052716	0.00086445	-0.00000113	0.00000000
+		-6.27209724	-0.00085978	0.00052702	0.00086421	-0.00000113	0.00000000
+		-6.27209787	-0.00085954	0.00052687	0.00086397	-0.00000113	0.00000000
+		-6.27209850	-0.00085930	0.00052672	0.00086373	-0.00000113	0.00000000
+		-6.27209913	-0.00085906	0.00052658	0.00086349	-0.00000113	0.00000000
+		-6.27209976	-0.00085882	0.00052643	0.00086325	-0.00000113	0.00000000
+		-6.27210038	-0.00085858	0.00052628	0.00086301	-0.00000113	0.00000000
+		-6.27210101	-0.00085835	0.00052614	0.00086277	-0.00000113	0.00000000
+		-6.27210164	-0.00085811	0.00052599	0.00086253	-0.00000113	0.00000000
+		-6.27210226	-0.00085787	0.00052585	0.00086230	-0.00000113	0.00000000
+		-6.27210289	-0.00085763	0.00052570	0.00086206	-0.00000113	0.00000000
+		-6.27210351	-0.00085740	0.00052555	0.00086182	-0.00000113	0.00000000
+		-6.27210414	-0.00085716	0.00052541	0.00086158	-0.00000113	0.00000000
+		-6.27210476	-0.00085692	0.00052526	0.00086134	-0.00000113	0.00000000
+		-6.27210538	-0.00085668	0.00052512	0.00086110	-0.00000113	0.00000000
+		-6.27210600	-0.00085645	0.00052497	0.00086086	-0.00000113	0.00000000
+		-6.27210663	-0.00085621	0.00052483	0.00086063	-0.00000113	0.00000000
+		-6.27210725	-0.00085597	0.00052468	0.00086039	-0.00000113	0.00000000
+		-6.27210787	-0.00085574	0.00052454	0.00086015	-0.00000113	0.00000000
+		-6.27210849	-0.00085550	0.00052439	0.00085991	-0.00000113	0.00000000
+		-6.27210911	-0.00085526	0.00052425	0.00085967	-0.00000113	0.00000000
+		-6.27210973	-0.00085503	0.00052410	0.00085944	-0.00000113	0.00000000
+		-6.27211034	-0.00085479	0.00052396	0.00085920	-0.00000113	0.00000000
+		-6.27211096	-0.00085456	0.00052381	0.00085896	-0.00000113	0.00000000
+		-6.27211158	-0.00085432	0.00052367	0.00085873	-0.00000113	0.00000000
+		-6.27211220	-0.00085408	0.00052352	0.00085849	-0.00000113	0.00000000
+		-6.27211281	-0.00085385	0.00052338	0.00085825	-0.00000113	0.00000000
+		-6.27211343	-0.00085361	0.00052323	0.00085801	-0.00000113	0.00000000
+		-6.27211404	-0.00085338	0.00052309	0.00085778	-0.00000113	0.00000000
+		-6.27211466	-0.00085314	0.00052295	0.00085754	-0.00000113	0.00000000
+		-6.27211527	-0.00085291	0.00052280	0.00085731	-0.00000113	0.00000000
+		-6.27211589	-0.00085267	0.00052266	0.00085707	-0.00000113	0.00000000
+		-6.27211650	-0.00085244	0.00052251	0.00085683	-0.00000113	0.00000000
+		-6.27211711	-0.00085220	0.00052237	0.00085660	-0.00000113	0.00000000
+		-6.27211772	-0.00085197	0.00052222	0.00085636	-0.00000113	0.00000000
+		-6.27211833	-0.00085173	0.00052208	0.00085613	-0.00000113	0.00000000
+		-6.27211895	-0.00085150	0.00052194	0.00085589	-0.00000113	0.00000000
+		-6.27211956	-0.00085127	0.00052179	0.00085565	-0.00000113	0.00000000
+		-6.27212017	-0.00085103	0.00052165	0.00085542	-0.00000113	0.00000000
+		-6.27212078	-0.00085080	0.00052151	0.00085518	-0.00000113	0.00000000
+		-6.27212138	-0.00085056	0.00052136	0.00085495	-0.00000113	0.00000000
+		-6.27212199	-0.00085033	0.00052122	0.00085471	-0.00000113	0.00000000
+		-6.27212260	-0.00085010	0.00052108	0.00085448	-0.00000113	0.00000000
+		-6.27212321	-0.00084986	0.00052093	0.00085425	-0.00000113	0.00000000
+		-6.27212381	-0.00084963	0.00052079	0.00085401	-0.00000113	0.00000000
+		-6.27212442	-0.00084940	0.00052065	0.00085378	-0.00000113	0.00000000
+		-6.27212503	-0.00084916	0.00052050	0.00085354	-0.00000113	0.00000000
+		-6.27212563	-0.00084893	0.00052036	0.00085331	-0.00000113	0.00000000
+		-6.27212624	-0.00084870	0.00052022	0.00085307	-0.00000113	0.00000000
+		-6.27212684	-0.00084847	0.00052008	0.00085284	-0.00000113	0.00000000
+		-6.27212744	-0.00084823	0.00051993	0.00085261	-0.00000113	0.00000000
+		-6.27212805	-0.00084800	0.00051979	0.00085237	-0.00000113	0.00000000
+		-6.27212865	-0.00084777	0.00051965	0.00085214	-0.00000113	0.00000000
+		-6.27212925	-0.00084754	0.00051951	0.00085191	-0.00000113	0.00000000
+		-6.27212986	-0.00084730	0.00051936	0.00085167	-0.00000113	0.00000000
+		-6.27213046	-0.00084707	0.00051922	0.00085144	-0.00000113	0.00000000
+		-6.27213106	-0.00084684	0.00051908	0.00085121	-0.00000113	0.00000000
+		-6.27213166	-0.00084661	0.00051894	0.00085097	-0.00000113	0.00000000
+		-6.27213226	-0.00084638	0.00051879	0.00085074	-0.00000113	0.00000000
+		-6.27213286	-0.00084615	0.00051865	0.00085051	-0.00000113	0.00000000
+		-6.27213345	-0.00084592	0.00051851	0.00085028	-0.00000113	0.00000000
+		-6.27213405	-0.00084568	0.00051837	0.00085004	-0.00000113	0.00000000
+		-6.27213465	-0.00084545	0.00051823	0.00084981	-0.00000113	0.00000000
+		-6.27213525	-0.00084522	0.00051809	0.00084958	-0.00000113	0.00000000
+		-6.27213585	-0.00084499	0.00051794	0.00084935	-0.00000113	0.00000000
+		-6.27213644	-0.00084476	0.00051780	0.00084912	-0.00000113	0.00000000
+		-6.27213704	-0.00084453	0.00051766	0.00084888	-0.00000113	0.00000000
+		-6.27213763	-0.00084430	0.00051752	0.00084865	-0.00000113	0.00000000
+		-6.27213823	-0.00084407	0.00051738	0.00084842	-0.00000113	0.00000000
+		-6.27213882	-0.00084384	0.00051724	0.00084819	-0.00000113	0.00000000
+		-6.27213942	-0.00084361	0.00051710	0.00084796	-0.00000113	0.00000000
+		-6.27214001	-0.00084338	0.00051696	0.00084773	-0.00000113	0.00000000
+		-6.27214060	-0.00084315	0.00051681	0.00084750	-0.00000113	0.00000000
+		-6.27214120	-0.00084292	0.00051667	0.00084727	-0.00000113	0.00000000
+		-6.27214179	-0.00084269	0.00051653	0.00084703	-0.00000113	0.00000000
+		-6.27214238	-0.00084246	0.00051639	0.00084680	-0.00000113	0.00000000
+		-6.27214297	-0.00084223	0.00051625	0.00084657	-0.00000113	0.00000000
+		-6.27214356	-0.00084200	0.00051611	0.00084634	-0.00000113	0.00000000
+		-6.27214415	-0.00084178	0.00051597	0.00084611	-0.00000113	0.00000000
+		-6.27214474	-0.00084155	0.00051583	0.00084588	-0.00000113	0.00000000
+		-6.27214533	-0.00084132	0.00051569	0.00084565	-0.00000113	0.00000000
+		-6.27214592	-0.00084109	0.00051555	0.00084542	-0.00000113	0.00000000
+		-6.27214651	-0.00084086	0.00051541	0.00084519	-0.00000113	0.00000000
+		-6.27214709	-0.00084063	0.00051527	0.00084496	-0.00000113	0.00000000
+		-6.27214768	-0.00084040	0.00051513	0.00084473	-0.00000113	0.00000000
+		-6.27214827	-0.00084018	0.00051499	0.00084451	-0.00000113	0.00000000
+		-6.27214885	-0.00083995	0.00051485	0.00084428	-0.00000113	0.00000000
+		-6.27214944	-0.00083972	0.00051471	0.00084405	-0.00000113	0.00000000
+		-6.27215002	-0.00083949	0.00051457	0.00084382	-0.00000113	0.00000000
+		-6.27215061	-0.00083926	0.00051443	0.00084359	-0.00000113	0.00000000
+		-6.27215119	-0.00083904	0.00051429	0.00084336	-0.00000113	0.00000000
+		-6.27215178	-0.00083881	0.00051415	0.00084313	-0.00000113	0.00000000
+		-6.27215236	-0.00083858	0.00051401	0.00084290	-0.00000113	0.00000000
+		-6.27215294	-0.00083836	0.00051387	0.00084268	-0.00000113	0.00000000
+		-6.27215353	-0.00083813	0.00051373	0.00084245	-0.00000113	0.00000000
+		-6.27215411	-0.00083790	0.00051359	0.00084222	-0.00000113	0.00000000
+		-6.27215469	-0.00083768	0.00051345	0.00084199	-0.00000113	0.00000000
+		-6.27215527	-0.00083745	0.00051332	0.00084176	-0.00000113	0.00000000
+		-6.27215585	-0.00083722	0.00051318	0.00084154	-0.00000113	0.00000000
+		-6.27215643	-0.00083700	0.00051304	0.00084131	-0.00000113	0.00000000
+		-6.27215701	-0.00083677	0.00051290	0.00084108	-0.00000113	0.00000000
+		-6.27215759	-0.00083654	0.00051276	0.00084085	-0.00000113	0.00000000
+		-6.27215817	-0.00083632	0.00051262	0.00084063	-0.00000113	0.00000000
+		-6.27215875	-0.00083609	0.00051248	0.00084040	-0.00000113	0.00000000
+		-6.27215933	-0.00083587	0.00051234	0.00084017	-0.00000113	0.00000000
+		-6.27215990	-0.00083564	0.00051221	0.00083995	-0.00000113	0.00000000
+		-6.27216048	-0.00083541	0.00051207	0.00083972	-0.00000113	0.00000000
+		-6.27216106	-0.00083519	0.00051193	0.00083949	-0.00000113	0.00000000
+		-6.27216164	-0.00083496	0.00051179	0.00083927	-0.00000113	0.00000000
+		-6.27216221	-0.00083474	0.00051165	0.00083904	-0.00000113	0.00000000
+		-6.27216279	-0.00083451	0.00051151	0.00083881	-0.00000113	0.00000000
+		-6.27216336	-0.00083429	0.00051138	0.00083859	-0.00000113	0.00000000
+		-6.27216394	-0.00083406	0.00051124	0.00083836	-0.00000113	0.00000000
+		-6.27216451	-0.00083384	0.00051110	0.00083813	-0.00000113	0.00000000
+		-6.27216508	-0.00083361	0.00051096	0.00083791	-0.00000113	0.00000000
+		-6.27216566	-0.00083339	0.00051083	0.00083768	-0.00000113	0.00000000
+		-6.27216623	-0.00083317	0.00051069	0.00083746	-0.00000113	0.00000000
+		-6.27216680	-0.00083294	0.00051055	0.00083723	-0.00000113	0.00000000
+		-6.27216737	-0.00083272	0.00051041	0.00083701	-0.00000113	0.00000000
+		-6.27216794	-0.00083249	0.00051028	0.00083678	-0.00000113	0.00000000
+		-6.27216851	-0.00083227	0.00051014	0.00083656	-0.00000113	0.00000000
+		-6.27216909	-0.00083205	0.00051000	0.00083633	-0.00000113	0.00000000
+		-6.27216966	-0.00083182	0.00050986	0.00083611	-0.00000113	0.00000000
+		-6.27217022	-0.00083160	0.00050973	0.00083588	-0.00000113	0.00000000
+		-6.27217079	-0.00083138	0.00050959	0.00083566	-0.00000113	0.00000000
+		-6.27217136	-0.00083115	0.00050945	0.00083543	-0.00000113	0.00000000
+		-6.27217193	-0.00083093	0.00050932	0.00083521	-0.00000113	0.00000000
+		-6.27217250	-0.00083071	0.00050918	0.00083499	-0.00000113	0.00000000
+		-6.27217307	-0.00083048	0.00050904	0.00083476	-0.00000113	0.00000000
+		-6.27217363	-0.00083026	0.00050891	0.00083454	-0.00000113	0.00000000
+		-6.27217420	-0.00083004	0.00050877	0.00083431	-0.00000113	0.00000000
+		-6.27217477	-0.00082982	0.00050863	0.00083409	-0.00000113	0.00000000
+		-6.27217533	-0.00082959	0.00050850	0.00083387	-0.00000113	0.00000000
+		-6.27217590	-0.00082937	0.00050836	0.00083364	-0.00000113	0.00000000
+		-6.27217646	-0.00082915	0.00050822	0.00083342	-0.00000113	0.00000000
+		-6.27217703	-0.00082893	0.00050809	0.00083320	-0.00000113	0.00000000
+		-6.27217759	-0.00082871	0.00050795	0.00083297	-0.00000113	0.00000000
+		-6.27217815	-0.00082848	0.00050782	0.00083275	-0.00000113	0.00000000
+		-6.27217872	-0.00082826	0.00050768	0.00083253	-0.00000113	0.00000000
+		-6.27217928	-0.00082804	0.00050754	0.00083230	-0.00000113	0.00000000
+		-6.27217984	-0.00082782	0.00050741	0.00083208	-0.00000113	0.00000000
+		-6.27218040	-0.00082760	0.00050727	0.00083186	-0.00000113	0.00000000
+		-6.27218097	-0.00082738	0.00050714	0.00083164	-0.00000113	0.00000000
+		-6.27218153	-0.00082716	0.00050700	0.00083141	-0.00000113	0.00000000
+		-6.27218209	-0.00082693	0.00050686	0.00083119	-0.00000113	0.00000000
+		-6.27218265	-0.00082671	0.00050673	0.00083097	-0.00000113	0.00000000
+		-6.27218321	-0.00082649	0.00050659	0.00083075	-0.00000113	0.00000000
+		-6.27218377	-0.00082627	0.00050646	0.00083053	-0.00000113	0.00000000
+		-6.27218433	-0.00082605	0.00050632	0.00083031	-0.00000113	0.00000000
+		-6.27218488	-0.00082583	0.00050619	0.00083008	-0.00000113	0.00000000
+		-6.27218544	-0.00082561	0.00050605	0.00082986	-0.00000113	0.00000000
+		-6.27218600	-0.00082539	0.00050592	0.00082964	-0.00000113	0.00000000
+		-6.27218656	-0.00082517	0.00050578	0.00082942	-0.00000113	0.00000000
+		-6.27218711	-0.00082495	0.00050565	0.00082920	-0.00000113	0.00000000
+		-6.27218767	-0.00082473	0.00050551	0.00082898	-0.00000113	0.00000000
+		-6.27218823	-0.00082451	0.00050538	0.00082876	-0.00000113	0.00000000
+		-6.27218878	-0.00082429	0.00050524	0.00082854	-0.00000113	0.00000000
+		-6.27218934	-0.00082407	0.00050511	0.00082832	-0.00000113	0.00000000
+		-6.27218989	-0.00082385	0.00050497	0.00082810	-0.00000113	0.00000000
+		-6.27219045	-0.00082363	0.00050484	0.00082787	-0.00000113	0.00000000
+		-6.27219100	-0.00082341	0.00050471	0.00082765	-0.00000113	0.00000000
+		-6.27219155	-0.00082320	0.00050457	0.00082743	-0.00000113	0.00000000
+		-6.27219211	-0.00082298	0.00050444	0.00082721	-0.00000113	0.00000000
+		-6.27219266	-0.00082276	0.00050430	0.00082699	-0.00000113	0.00000000
+		-6.27219321	-0.00082254	0.00050417	0.00082677	-0.00000113	0.00000000
+		-6.27219376	-0.00082232	0.00050403	0.00082656	-0.00000113	0.00000000
+		-6.27219432	-0.00082210	0.00050390	0.00082634	-0.00000113	0.00000000
+		-6.27219487	-0.00082188	0.00050377	0.00082612	-0.00000113	0.00000000
+		-6.27219542	-0.00082167	0.00050363	0.00082590	-0.00000113	0.00000000
+		-6.27219597	-0.00082145	0.00050350	0.00082568	-0.00000113	0.00000000
+		-6.27219652	-0.00082123	0.00050337	0.00082546	-0.00000113	0.00000000
+		-6.27219707	-0.00082101	0.00050323	0.00082524	-0.00000113	0.00000000
+		-6.27219762	-0.00082080	0.00050310	0.00082502	-0.00000113	0.00000000
+		-6.27219817	-0.00082058	0.00050296	0.00082480	-0.00000113	0.00000000
+		-6.27219872	-0.00082036	0.00050283	0.00082458	-0.00000113	0.00000000
+		-6.27219926	-0.00082014	0.00050270	0.00082436	-0.00000113	0.00000000
+		-6.27219981	-0.00081993	0.00050256	0.00082415	-0.00000113	0.00000000
+		-6.27220036	-0.00081971	0.00050243	0.00082393	-0.00000113	0.00000000
+		-6.27220091	-0.00081949	0.00050230	0.00082371	-0.00000113	0.00000000
+		-6.27220145	-0.00081927	0.00050216	0.00082349	-0.00000113	0.00000000
+		-6.27220200	-0.00081906	0.00050203	0.00082327	-0.00000113	0.00000000
+		-6.27220254	-0.00081884	0.00050190	0.00082306	-0.00000113	0.00000000
+		-6.27220309	-0.00081862	0.00050177	0.00082284	-0.00000113	0.00000000
+		-6.27220363	-0.00081841	0.00050163	0.00082262	-0.00000113	0.00000000
+		-6.27220418	-0.00081819	0.00050150	0.00082240	-0.00000113	0.00000000
+		-6.27220472	-0.00081798	0.00050137	0.00082219	-0.00000113	0.00000000
+		-6.27220527	-0.00081776	0.00050124	0.00082197	-0.00000113	0.00000000
+		-6.27220581	-0.00081754	0.00050110	0.00082175	-0.00000113	0.00000000
+		-6.27220635	-0.00081733	0.00050097	0.00082153	-0.00000113	0.00000000
+		-6.27220690	-0.00081711	0.00050084	0.00082132	-0.00000113	0.00000000
+		-6.27220744	-0.00081690	0.00050071	0.00082110	-0.00000113	0.00000000
+		-6.27220798	-0.00081668	0.00050057	0.00082088	-0.00000113	0.00000000
+		-6.27220852	-0.00081647	0.00050044	0.00082067	-0.00000113	0.00000000
+		-6.27220906	-0.00081625	0.00050031	0.00082045	-0.00000113	0.00000000
+		-6.27220960	-0.00081604	0.00050018	0.00082024	-0.00000113	0.00000000
+		-6.27221014	-0.00081582	0.00050005	0.00082002	-0.00000113	0.00000000
+		-6.27221068	-0.00081561	0.00049991	0.00081980	-0.00000113	0.00000000
+		-6.27221122	-0.00081539	0.00049978	0.00081959	-0.00000113	0.00000000
+		-6.27221176	-0.00081518	0.00049965	0.00081937	-0.00000113	0.00000000
+		-6.27221230	-0.00081496	0.00049952	0.00081916	-0.00000113	0.00000000
+		-6.27221284	-0.00081475	0.00049939	0.00081894	-0.00000113	0.00000000
+		-6.27221338	-0.00081453	0.00049926	0.00081872	-0.00000113	0.00000000
+		-6.27221391	-0.00081432	0.00049912	0.00081851	-0.00000113	0.00000000
+		-6.27221445	-0.00081410	0.00049899	0.00081829	-0.00000113	0.00000000
+		-6.27221499	-0.00081389	0.00049886	0.00081808	-0.00000113	0.00000000
+		-6.27221552	-0.00081368	0.00049873	0.00081786	-0.00000113	0.00000000
+		-6.27221606	-0.00081346	0.00049860	0.00081765	-0.00000113	0.00000000
+		-6.27221660	-0.00081325	0.00049847	0.00081743	-0.00000113	0.00000000
+		-6.27221713	-0.00081303	0.00049834	0.00081722	-0.00000113	0.00000000
+		-6.27221767	-0.00081282	0.00049821	0.00081700	-0.00000113	0.00000000
+		-6.27221820	-0.00081261	0.00049807	0.00081679	-0.00000113	0.00000000
+		-6.27221874	-0.00081239	0.00049794	0.00081657	-0.00000113	0.00000000
+		-6.27221927	-0.00081218	0.00049781	0.00081636	-0.00000113	0.00000000
+		-6.27221980	-0.00081197	0.00049768	0.00081615	-0.00000113	0.00000000
+		-6.27222034	-0.00081176	0.00049755	0.00081593	-0.00000113	0.00000000
+		-6.27222087	-0.00081154	0.00049742	0.00081572	-0.00000113	0.00000000
+		-6.27222140	-0.00081133	0.00049729	0.00081550	-0.00000113	0.00000000
+		-6.27222193	-0.00081112	0.00049716	0.00081529	-0.00000113	0.00000000
+		-6.27222247	-0.00081090	0.00049703	0.00081508	-0.00000113	0.00000000
+		-6.27222300	-0.00081069	0.00049690	0.00081486	-0.00000113	0.00000000
+		-6.27222353	-0.00081048	0.00049677	0.00081465	-0.00000113	0.00000000
+		-6.27222406	-0.00081027	0.00049664	0.00081444	-0.00000113	0.00000000
+		-6.27222459	-0.00081006	0.00049651	0.00081422	-0.00000113	0.00000000
+		-6.27222512	-0.00080984	0.00049638	0.00081401	-0.00000113	0.00000000
+		-6.27222565	-0.00080963	0.00049625	0.00081380	-0.00000113	0.00000000
+		-6.27222618	-0.00080942	0.00049612	0.00081359	-0.00000113	0.00000000
+		-6.27222671	-0.00080921	0.00049599	0.00081337	-0.00000113	0.00000000
+		-6.27222723	-0.00080900	0.00049586	0.00081316	-0.00000113	0.00000000
+		-6.27222776	-0.00080879	0.00049573	0.00081295	-0.00000113	0.00000000
+		-6.27222829	-0.00080857	0.00049560	0.00081273	-0.00000113	0.00000000
+		-6.27222882	-0.00080836	0.00049547	0.00081252	-0.00000113	0.00000000
+		-6.27222934	-0.00080815	0.00049534	0.00081231	-0.00000113	0.00000000
+		-6.27222987	-0.00080794	0.00049521	0.00081210	-0.00000113	0.00000000
+		-6.27223040	-0.00080773	0.00049508	0.00081189	-0.00000113	0.00000000
+		-6.27223092	-0.00080752	0.00049495	0.00081167	-0.00000113	0.00000000
+		-6.27223145	-0.00080731	0.00049482	0.00081146	-0.00000113	0.00000000
+		-6.27223197	-0.00080710	0.00049469	0.00081125	-0.00000113	0.00000000
+		-6.27223250	-0.00080689	0.00049457	0.00081104	-0.00000113	0.00000000
+		-6.27223302	-0.00080668	0.00049444	0.00081083	-0.00000113	0.00000000
+		-6.27223355	-0.00080647	0.00049431	0.00081062	-0.00000113	0.00000000
+		-6.27223407	-0.00080626	0.00049418	0.00081041	-0.00000113	0.00000000
+		-6.27223460	-0.00080605	0.00049405	0.00081019	-0.00000113	0.00000000
+		-6.27223512	-0.00080584	0.00049392	0.00080998	-0.00000113	0.00000000
+		-6.27223564	-0.00080563	0.00049379	0.00080977	-0.00000113	0.00000000
+		-6.27223616	-0.00080542	0.00049366	0.00080956	-0.00000113	0.00000000
+		-6.27223669	-0.00080521	0.00049354	0.00080935	-0.00000113	0.00000000
+		-6.27223721	-0.00080500	0.00049341	0.00080914	-0.00000113	0.00000000
+		-6.27223773	-0.00080479	0.00049328	0.00080893	-0.00000113	0.00000000
+		-6.27223825	-0.00080458	0.00049315	0.00080872	-0.00000113	0.00000000
+		-6.27223877	-0.00080437	0.00049302	0.00080851	-0.00000113	0.00000000
+		-6.27223929	-0.00080416	0.00049289	0.00080830	-0.00000113	0.00000000
+		-6.27223981	-0.00080395	0.00049277	0.00080809	-0.00000113	0.00000000
+		-6.27224033	-0.00080375	0.00049264	0.00080788	-0.00000113	0.00000000
+		-6.27224085	-0.00080354	0.00049251	0.00080767	-0.00000113	0.00000000
+		-6.27224137	-0.00080333	0.00049238	0.00080746	-0.00000113	0.00000000
+		-6.27224189	-0.00080312	0.00049225	0.00080725	-0.00000113	0.00000000
+		-6.27224241	-0.00080291	0.00049213	0.00080704	-0.00000113	0.00000000
+		-6.27224292	-0.00080270	0.00049200	0.00080683	-0.00000113	0.00000000
+		-6.27224344	-0.00080250	0.00049187	0.00080662	-0.00000113	0.00000000
+		-6.27224396	-0.00080229	0.00049174	0.00080641	-0.00000113	0.00000000
+		-6.27224447	-0.00080208	0.00049162	0.00080621	-0.00000113	0.00000000
+		-6.27224499	-0.00080187	0.00049149	0.00080600	-0.00000113	0.00000000
+		-6.27224551	-0.00080166	0.00049136	0.00080579	-0.00000113	0.00000000
+		-6.27224602	-0.00080146	0.00049123	0.00080558	-0.00000113	0.00000000
+		-6.27224654	-0.00080125	0.00049111	0.00080537	-0.00000113	0.00000000
+		-6.27224705	-0.00080104	0.00049098	0.00080516	-0.00000113	0.00000000
+		-6.27224757	-0.00080084	0.00049085	0.00080495	-0.00000113	0.00000000
+		-6.27224808	-0.00080063	0.00049072	0.00080475	-0.00000113	0.00000000
+		-6.27224860	-0.00080042	0.00049060	0.00080454	-0.00000113	0.00000000
+		-6.27224911	-0.00080021	0.00049047	0.00080433	-0.00000113	0.00000000
+		-6.27224962	-0.00080001	0.00049034	0.00080412	-0.00000113	0.00000000
+		-6.27225014	-0.00079980	0.00049022	0.00080391	-0.00000113	0.00000000
+		-6.27225065	-0.00079959	0.00049009	0.00080371	-0.00000113	0.00000000
+		-6.27225116	-0.00079939	0.00048996	0.00080350	-0.00000113	0.00000000
+		-6.27225168	-0.00079918	0.00048984	0.00080329	-0.00000113	0.00000000
+		-6.27225219	-0.00079897	0.00048971	0.00080308	-0.00000113	0.00000000
+		-6.27225270	-0.00079877	0.00048958	0.00080288	-0.00000113	0.00000000
+		-6.27225321	-0.00079856	0.00048946	0.00080267	-0.00000113	0.00000000
+		-6.27225372	-0.00079836	0.00048933	0.00080246	-0.00000113	0.00000000
+		-6.27225423	-0.00079815	0.00048921	0.00080226	-0.00000113	0.00000000
+		-6.27225474	-0.00079795	0.00048908	0.00080205	-0.00000113	0.00000000
+		-6.27225525	-0.00079774	0.00048895	0.00080184	-0.00000113	0.00000000
+		-6.27225576	-0.00079753	0.00048883	0.00080164	-0.00000113	0.00000000
+		-6.27225627	-0.00079733	0.00048870	0.00080143	-0.00000113	0.00000000
+		-6.27225678	-0.00079712	0.00048857	0.00080122	-0.00000113	0.00000000
+		-6.27225729	-0.00079692	0.00048845	0.00080102	-0.00000113	0.00000000
+		-6.27225780	-0.00079671	0.00048832	0.00080081	-0.00000113	0.00000000
+		-6.27225830	-0.00079651	0.00048820	0.00080060	-0.00000113	0.00000000
+		-6.27225881	-0.00079630	0.00048807	0.00080040	-0.00000113	0.00000000
+		-6.27225932	-0.00079610	0.00048795	0.00080019	-0.00000113	0.00000000
+		-6.27225983	-0.00079589	0.00048782	0.00079999	-0.00000113	0.00000000
+		-6.27226033	-0.00079569	0.00048769	0.00079978	-0.00000113	0.00000000
+		-6.27226084	-0.00079548	0.00048757	0.00079957	-0.00000113	0.00000000
+		-6.27226134	-0.00079528	0.00048744	0.00079937	-0.00000113	0.00000000
+		-6.27226185	-0.00079508	0.00048732	0.00079916	-0.00000113	0.00000000
+		-6.27226235	-0.00079487	0.00048719	0.00079896	-0.00000113	0.00000000
+		-6.27226286	-0.00079467	0.00048707	0.00079875	-0.00000113	0.00000000
+		-6.27226336	-0.00079446	0.00048694	0.00079855	-0.00000113	0.00000000
+		-6.27226387	-0.00079426	0.00048682	0.00079834	-0.00000113	0.00000000
+		-6.27226437	-0.00079406	0.00048669	0.00079814	-0.00000113	0.00000000
+		-6.27226488	-0.00079385	0.00048657	0.00079793	-0.00000113	0.00000000
+		-6.27226538	-0.00079365	0.00048644	0.00079773	-0.00000113	0.00000000
+		-6.27226588	-0.00079345	0.00048632	0.00079752	-0.00000113	0.00000000
+		-6.27226639	-0.00079324	0.00048619	0.00079732	-0.00000113	0.00000000
+		-6.27226689	-0.00079304	0.00048607	0.00079712	-0.00000113	0.00000000
+		-6.27226739	-0.00079284	0.00048594	0.00079691	-0.00000113	0.00000000
+		-6.27226789	-0.00079263	0.00048582	0.00079671	-0.00000113	0.00000000
+		-6.27226839	-0.00079243	0.00048570	0.00079650	-0.00000113	0.00000000
+		-6.27226889	-0.00079223	0.00048557	0.00079630	-0.00000113	0.00000000
+		-6.27226939	-0.00079202	0.00048545	0.00079610	-0.00000113	0.00000000
+		-6.27226990	-0.00079182	0.00048532	0.00079589	-0.00000113	0.00000000
+		-6.27227040	-0.00079162	0.00048520	0.00079569	-0.00000113	0.00000000
+		-6.27227090	-0.00079142	0.00048507	0.00079549	-0.00000113	0.00000000
+		-6.27227139	-0.00079121	0.00048495	0.00079528	-0.00000113	0.00000000
+		-6.27227189	-0.00079101	0.00048483	0.00079508	-0.00000113	0.00000000
+		-6.27227239	-0.00079081	0.00048470	0.00079488	-0.00000113	0.00000000
+		-6.27227289	-0.00079061	0.00048458	0.00079467	-0.00000113	0.00000000
+		-6.27227339	-0.00079041	0.00048445	0.00079447	-0.00000113	0.00000000
+		-6.27227389	-0.00079020	0.00048433	0.00079427	-0.00000113	0.00000000
+		-6.27227439	-0.00079000	0.00048421	0.00079406	-0.00000113	0.00000000
+		-6.27227488	-0.00078980	0.00048408	0.00079386	-0.00000113	0.00000000
+		-6.27227538	-0.00078960	0.00048396	0.00079366	-0.00000113	0.00000000
+		-6.27227588	-0.00078940	0.00048384	0.00079346	-0.00000113	0.00000000
+		-6.27227637	-0.00078920	0.00048371	0.00079325	-0.00000113	0.00000000
+		-6.27227687	-0.00078900	0.00048359	0.00079305	-0.00000113	0.00000000
+		-6.27227736	-0.00078880	0.00048347	0.00079285	-0.00000113	0.00000000
+		-6.27227786	-0.00078859	0.00048334	0.00079265	-0.00000113	0.00000000
+		-6.27227836	-0.00078839	0.00048322	0.00079245	-0.00000113	0.00000000
+		-6.27227885	-0.00078819	0.00048310	0.00079224	-0.00000113	0.00000000
+		-6.27227934	-0.00078799	0.00048297	0.00079204	-0.00000113	0.00000000
+		-6.27227984	-0.00078779	0.00048285	0.00079184	-0.00000113	0.00000000
+		-6.27228033	-0.00078759	0.00048273	0.00079164	-0.00000113	0.00000000
+		-6.27228083	-0.00078739	0.00048260	0.00079144	-0.00000113	0.00000000
+		-6.27228132	-0.00078719	0.00048248	0.00079124	-0.00000113	0.00000000
+		-6.27228181	-0.00078699	0.00048236	0.00079104	-0.00000113	0.00000000
+		-6.27228231	-0.00078679	0.00048224	0.00079083	-0.00000113	0.00000000
+		-6.27228280	-0.00078659	0.00048211	0.00079063	-0.00000113	0.00000000
+		-6.27228329	-0.00078639	0.00048199	0.00079043	-0.00000113	0.00000000
+		-6.27228378	-0.00078619	0.00048187	0.00079023	-0.00000113	0.00000000
+		-6.27228427	-0.00078599	0.00048175	0.00079003	-0.00000113	0.00000000
+		-6.27228476	-0.00078579	0.00048162	0.00078983	-0.00000113	0.00000000
+		-6.27228526	-0.00078559	0.00048150	0.00078963	-0.00000113	0.00000000
+		-6.27228575	-0.00078539	0.00048138	0.00078943	-0.00000113	0.00000000
+		-6.27228624	-0.00078519	0.00048126	0.00078923	-0.00000113	0.00000000
+		-6.27228673	-0.00078500	0.00048113	0.00078903	-0.00000113	0.00000000
+		-6.27228722	-0.00078480	0.00048101	0.00078883	-0.00000113	0.00000000
+		-6.27228771	-0.00078460	0.00048089	0.00078863	-0.00000113	0.00000000
+		-6.27228819	-0.00078440	0.00048077	0.00078843	-0.00000113	0.00000000
+		-6.27228868	-0.00078420	0.00048065	0.00078823	-0.00000113	0.00000000
+		-6.27228917	-0.00078400	0.00048052	0.00078803	-0.00000113	0.00000000
+		-6.27228966	-0.00078380	0.00048040	0.00078783	-0.00000113	0.00000000
+		-6.27229015	-0.00078360	0.00048028	0.00078763	-0.00000113	0.00000000
+		-6.27229064	-0.00078341	0.00048016	0.00078743	-0.00000113	0.00000000
+		-6.27229112	-0.00078321	0.00048004	0.00078723	-0.00000113	0.00000000
+		-6.27229161	-0.00078301	0.00047992	0.00078703	-0.00000113	0.00000000
+		-6.27229210	-0.00078281	0.00047979	0.00078683	-0.00000113	0.00000000
+		-6.27229258	-0.00078261	0.00047967	0.00078663	-0.00000113	0.00000000
+		-6.27229307	-0.00078242	0.00047955	0.00078644	-0.00000113	0.00000000
+		-6.27229356	-0.00078222	0.00047943	0.00078624	-0.00000113	0.00000000
+		-6.27229404	-0.00078202	0.00047931	0.00078604	-0.00000113	0.00000000
+		-6.27229453	-0.00078182	0.00047919	0.00078584	-0.00000113	0.00000000
+		-6.27229501	-0.00078163	0.00047907	0.00078564	-0.00000113	0.00000000
+		-6.27229550	-0.00078143	0.00047895	0.00078544	-0.00000113	0.00000000
+		-6.27229598	-0.00078123	0.00047882	0.00078524	-0.00000113	0.00000000
+		-6.27229646	-0.00078103	0.00047870	0.00078505	-0.00000113	0.00000000
+		-6.27229695	-0.00078084	0.00047858	0.00078485	-0.00000113	0.00000000
+		-6.27229743	-0.00078064	0.00047846	0.00078465	-0.00000113	0.00000000
+		-6.27229791	-0.00078044	0.00047834	0.00078445	-0.00000113	0.00000000
+		-6.27229840	-0.00078025	0.00047822	0.00078426	-0.00000113	0.00000000
+		-6.27229888	-0.00078005	0.00047810	0.00078406	-0.00000113	0.00000000
+		-6.27229936	-0.00077985	0.00047798	0.00078386	-0.00000113	0.00000000
+		-6.27229984	-0.00077966	0.00047786	0.00078366	-0.00000113	0.00000000
+		-6.27230033	-0.00077946	0.00047774	0.00078346	-0.00000113	0.00000000
+		-6.27230081	-0.00077926	0.00047762	0.00078327	-0.00000113	0.00000000
+		-6.27230129	-0.00077907	0.00047750	0.00078307	-0.00000113	0.00000000
+		-6.27230177	-0.00077887	0.00047738	0.00078287	-0.00000113	0.00000000
+		-6.27230225	-0.00077868	0.00047726	0.00078268	-0.00000113	0.00000000
+		-6.27230273	-0.00077848	0.00047714	0.00078248	-0.00000113	0.00000000
+		-6.27230321	-0.00077828	0.00047702	0.00078228	-0.00000113	0.00000000
+		-6.27230369	-0.00077809	0.00047690	0.00078209	-0.00000113	0.00000000
+		-6.27230417	-0.00077789	0.00047678	0.00078189	-0.00000113	0.00000000
+		-6.27230465	-0.00077770	0.00047666	0.00078169	-0.00000113	0.00000000
+		-6.27230513	-0.00077750	0.00047654	0.00078150	-0.00000113	0.00000000
+		-6.27230561	-0.00077731	0.00047642	0.00078130	-0.00000113	0.00000000
+		-6.27230609	-0.00077711	0.00047630	0.00078110	-0.00000113	0.00000000
+		-6.27230656	-0.00077692	0.00047618	0.00078091	-0.00000113	0.00000000
+		-6.27230704	-0.00077672	0.00047606	0.00078071	-0.00000113	0.00000000
+		-6.27230752	-0.00077653	0.00047594	0.00078052	-0.00000113	0.00000000
+		-6.27230800	-0.00077633	0.00047582	0.00078032	-0.00000113	0.00000000
+		-6.27230847	-0.00077614	0.00047570	0.00078012	-0.00000113	0.00000000
+		-6.27230895	-0.00077594	0.00047558	0.00077993	-0.00000113	0.00000000
+		-6.27230943	-0.00077575	0.00047546	0.00077973	-0.00000113	0.00000000
+		-6.27230990	-0.00077556	0.00047534	0.00077954	-0.00000113	0.00000000
+		-6.27231038	-0.00077536	0.00047522	0.00077934	-0.00000113	0.00000000
+		-6.27231085	-0.00077517	0.00047510	0.00077915	-0.00000113	0.00000000
+		-6.27231133	-0.00077497	0.00047498	0.00077895	-0.00000113	0.00000000
+		-6.27231180	-0.00077478	0.00047487	0.00077876	-0.00000113	0.00000000
+		-6.27231228	-0.00077458	0.00047475	0.00077856	-0.00000113	0.00000000
+		-6.27231275	-0.00077439	0.00047463	0.00077837	-0.00000113	0.00000000
+		-6.27231323	-0.00077420	0.00047451	0.00077817	-0.00000113	0.00000000
+		-6.27231370	-0.00077400	0.00047439	0.00077798	-0.00000113	0.00000000
+		-6.27231417	-0.00077381	0.00047427	0.00077778	-0.00000113	0.00000000
+		-6.27231465	-0.00077362	0.00047415	0.00077759	-0.00000113	0.00000000
+		-6.27231512	-0.00077342	0.00047403	0.00077740	-0.00000113	0.00000000
+		-6.27231559	-0.00077323	0.00047392	0.00077720	-0.00000113	0.00000000
+		-6.27231607	-0.00077304	0.00047380	0.00077701	-0.00000113	0.00000000
+		-6.27231654	-0.00077284	0.00047368	0.00077681	-0.00000113	0.00000000
+		-6.27231701	-0.00077265	0.00047356	0.00077662	-0.00000113	0.00000000
+		-6.27231748	-0.00077246	0.00047344	0.00077643	-0.00000113	0.00000000
+		-6.27231795	-0.00077227	0.00047332	0.00077623	-0.00000113	0.00000000
+		-6.27231842	-0.00077207	0.00047321	0.00077604	-0.00000113	0.00000000
+		-6.27231889	-0.00077188	0.00047309	0.00077584	-0.00000113	0.00000000
+		-6.27231936	-0.00077169	0.00047297	0.00077565	-0.00000113	0.00000000
+		-6.27231984	-0.00077150	0.00047285	0.00077546	-0.00000113	0.00000000
+		-6.27232031	-0.00077130	0.00047273	0.00077526	-0.00000113	0.00000000
+		-6.27232077	-0.00077111	0.00047262	0.00077507	-0.00000113	0.00000000
+		-6.27232124	-0.00077092	0.00047250	0.00077488	-0.00000113	0.00000000
+		-6.27232171	-0.00077073	0.00047238	0.00077469	-0.00000113	0.00000000
+		-6.27232218	-0.00077054	0.00047226	0.00077449	-0.00000113	0.00000000
+		-6.27232265	-0.00077034	0.00047215	0.00077430	-0.00000113	0.00000000
+		-6.27232312	-0.00077015	0.00047203	0.00077411	-0.00000113	0.00000000
+		-6.27232359	-0.00076996	0.00047191	0.00077391	-0.00000113	0.00000000
+		-6.27232406	-0.00076977	0.00047179	0.00077372	-0.00000113	0.00000000
+		-6.27232452	-0.00076958	0.00047168	0.00077353	-0.00000113	0.00000000
+		-6.27232499	-0.00076939	0.00047156	0.00077334	-0.00000113	0.00000000
+		-6.27232546	-0.00076920	0.00047144	0.00077315	-0.00000113	0.00000000
+		-6.27232592	-0.00076900	0.00047132	0.00077295	-0.00000113	0.00000000
+		-6.27232639	-0.00076881	0.00047121	0.00077276	-0.00000113	0.00000000
+		-6.27232686	-0.00076862	0.00047109	0.00077257	-0.00000113	0.00000000
+		-6.27232732	-0.00076843	0.00047097	0.00077238	-0.00000113	0.00000000
+		-6.27232779	-0.00076824	0.00047086	0.00077219	-0.00000113	0.00000000
+		-6.27232825	-0.00076805	0.00047074	0.00077199	-0.00000113	0.00000000
+		-6.27232872	-0.00076786	0.00047062	0.00077180	-0.00000113	0.00000000
+		-6.27232918	-0.00076767	0.00047050	0.00077161	-0.00000113	0.00000000
+		-6.27232965	-0.00076748	0.00047039	0.00077142	-0.00000113	0.00000000
+		-6.27233011	-0.00076729	0.00047027	0.00077123	-0.00000113	0.00000000
+		-6.27233058	-0.00076710	0.00047015	0.00077104	-0.00000113	0.00000000
+		-6.27233104	-0.00076691	0.00047004	0.00077085	-0.00000113	0.00000000
+		-6.27233150	-0.00076672	0.00046992	0.00077066	-0.00000113	0.00000000
+		-6.27233197	-0.00076653	0.00046981	0.00077046	-0.00000113	0.00000000
+		-6.27233243	-0.00076634	0.00046969	0.00077027	-0.00000113	0.00000000
+		-6.27233289	-0.00076615	0.00046957	0.00077008	-0.00000113	0.00000000
+		-6.27233336	-0.00076596	0.00046946	0.00076989	-0.00000113	0.00000000
+		-6.27233382	-0.00076577	0.00046934	0.00076970	-0.00000113	0.00000000
+		-6.27233428	-0.00076558	0.00046922	0.00076951	-0.00000113	0.00000000
+		-6.27233474	-0.00076539	0.00046911	0.00076932	-0.00000113	0.00000000
+		-6.27233520	-0.00076520	0.00046899	0.00076913	-0.00000113	0.00000000
+		-6.27233566	-0.00076501	0.00046888	0.00076894	-0.00000113	0.00000000
+		-6.27233612	-0.00076482	0.00046876	0.00076875	-0.00000113	0.00000000
+		-6.27233658	-0.00076464	0.00046864	0.00076856	-0.00000113	0.00000000
+		-6.27233705	-0.00076445	0.00046853	0.00076837	-0.00000113	0.00000000
+		-6.27233751	-0.00076426	0.00046841	0.00076818	-0.00000113	0.00000000
+		-6.27233797	-0.00076407	0.00046830	0.00076799	-0.00000113	0.00000000
+		-6.27233843	-0.00076388	0.00046818	0.00076780	-0.00000113	0.00000000
+		-6.27233888	-0.00076369	0.00046806	0.00076761	-0.00000113	0.00000000
+		-6.27233934	-0.00076350	0.00046795	0.00076742	-0.00000113	0.00000000
+		-6.27233980	-0.00076332	0.00046783	0.00076723	-0.00000113	0.00000000
+		-6.27234026	-0.00076313	0.00046772	0.00076704	-0.00000113	0.00000000
+		-6.27234072	-0.00076294	0.00046760	0.00076686	-0.00000113	0.00000000
+		-6.27234118	-0.00076275	0.00046749	0.00076667	-0.00000113	0.00000000
+		-6.27234163	-0.00076256	0.00046737	0.00076648	-0.00000113	0.00000000
+		-6.27234209	-0.00076238	0.00046726	0.00076629	-0.00000113	0.00000000
+		-6.27234255	-0.00076219	0.00046714	0.00076610	-0.00000113	0.00000000
+		-6.27234301	-0.00076200	0.00046703	0.00076591	-0.00000113	0.00000000
+		-6.27234346	-0.00076181	0.00046691	0.00076572	-0.00000113	0.00000000
+		-6.27234392	-0.00076163	0.00046680	0.00076553	-0.00000113	0.00000000
+		-6.27234438	-0.00076144	0.00046668	0.00076535	-0.00000113	0.00000000
+		-6.27234483	-0.00076125	0.00046657	0.00076516	-0.00000113	0.00000000
+		-6.27234529	-0.00076106	0.00046645	0.00076497	-0.00000113	0.00000000
+		-6.27234574	-0.00076088	0.00046634	0.00076478	-0.00000113	0.00000000
+		-6.27234620	-0.00076069	0.00046622	0.00076459	-0.00000113	0.00000000
+		-6.27234665	-0.00076050	0.00046611	0.00076441	-0.00000113	0.00000000
+		-6.27234711	-0.00076032	0.00046599	0.00076422	-0.00000113	0.00000000
+		-6.27234756	-0.00076013	0.00046588	0.00076403	-0.00000113	0.00000000
+		-6.27234802	-0.00075994	0.00046576	0.00076384	-0.00000113	0.00000000
+		-6.27234847	-0.00075976	0.00046565	0.00076366	-0.00000113	0.00000000
+		-6.27234892	-0.00075957	0.00046554	0.00076347	-0.00000113	0.00000000
+		-6.27234938	-0.00075938	0.00046542	0.00076328	-0.00000113	0.00000000
+		-6.27234983	-0.00075920	0.00046531	0.00076309	-0.00000113	0.00000000
+		-6.27235028	-0.00075901	0.00046519	0.00076291	-0.00000113	0.00000000
+		-6.27235074	-0.00075882	0.00046508	0.00076272	-0.00000113	0.00000000
+		-6.27235119	-0.00075864	0.00046496	0.00076253	-0.00000113	0.00000000
+		-6.27235164	-0.00075845	0.00046485	0.00076235	-0.00000113	0.00000000
+		-6.27235209	-0.00075827	0.00046474	0.00076216	-0.00000113	0.00000000
+		-6.27235255	-0.00075808	0.00046462	0.00076197	-0.00000113	0.00000000
+		-6.27235300	-0.00075790	0.00046451	0.00076179	-0.00000113	0.00000000
+		-6.27235345	-0.00075771	0.00046440	0.00076160	-0.00000113	0.00000000
+		-6.27235390	-0.00075753	0.00046428	0.00076141	-0.00000113	0.00000000
+		-6.27235435	-0.00075734	0.00046417	0.00076123	-0.00000113	0.00000000
+		-6.27235480	-0.00075715	0.00046405	0.00076104	-0.00000113	0.00000000
+		-6.27235525	-0.00075697	0.00046394	0.00076085	-0.00000113	0.00000000
+		-6.27235570	-0.00075678	0.00046383	0.00076067	-0.00000113	0.00000000
+		-6.27235615	-0.00075660	0.00046371	0.00076048	-0.00000113	0.00000000
+		-6.27235660	-0.00075641	0.00046360	0.00076030	-0.00000113	0.00000000
+		-6.27235705	-0.00075623	0.00046349	0.00076011	-0.00000113	0.00000000
+		-6.27235750	-0.00075605	0.00046337	0.00075992	-0.00000113	0.00000000
+		-6.27235795	-0.00075586	0.00046326	0.00075974	-0.00000113	0.00000000
+		-6.27235840	-0.00075568	0.00046315	0.00075955	-0.00000113	0.00000000
+		-6.27235884	-0.00075549	0.00046303	0.00075937	-0.00000113	0.00000000
+		-6.27235929	-0.00075531	0.00046292	0.00075918	-0.00000113	0.00000000
+		-6.27235974	-0.00075512	0.00046281	0.00075900	-0.00000113	0.00000000
+		-6.27236019	-0.00075494	0.00046269	0.00075881	-0.00000113	0.00000000
+		-6.27236063	-0.00075475	0.00046258	0.00075863	-0.00000113	0.00000000
+		-6.27236108	-0.00075457	0.00046247	0.00075844	-0.00000113	0.00000000
+		-6.27236153	-0.00075439	0.00046236	0.00075826	-0.00000113	0.00000000
+		-6.27236197	-0.00075420	0.00046224	0.00075807	-0.00000113	0.00000000
+		-6.27236242	-0.00075402	0.00046213	0.00075789	-0.00000113	0.00000000
+		-6.27236287	-0.00075384	0.00046202	0.00075770	-0.00000113	0.00000000
+		-6.27236331	-0.00075365	0.00046191	0.00075752	-0.00000113	0.00000000
+		-6.27236376	-0.00075347	0.00046179	0.00075733	-0.00000113	0.00000000
+		-6.27236420	-0.00075329	0.00046168	0.00075715	-0.00000113	0.00000000
+		-6.27236465	-0.00075310	0.00046157	0.00075697	-0.00000113	0.00000000
+		-6.27236509	-0.00075292	0.00046146	0.00075678	-0.00000113	0.00000000
+		-6.27236554	-0.00075274	0.00046134	0.00075660	-0.00000113	0.00000000
+		-6.27236598	-0.00075255	0.00046123	0.00075641	-0.00000113	0.00000000
+		-6.27236643	-0.00075237	0.00046112	0.00075623	-0.00000113	0.00000000
+		-6.27236687	-0.00075219	0.00046101	0.00075605	-0.00000113	0.00000000
+		-6.27236731	-0.00075200	0.00046089	0.00075586	-0.00000113	0.00000000
+		-6.27236776	-0.00075182	0.00046078	0.00075568	-0.00000113	0.00000000
+		-6.27236820	-0.00075164	0.00046067	0.00075550	-0.00000113	0.00000000
+		-6.27236864	-0.00075146	0.00046056	0.00075531	-0.00000113	0.00000000
+		-6.27236909	-0.00075127	0.00046045	0.00075513	-0.00000113	0.00000000
+		-6.27236953	-0.00075109	0.00046034	0.00075495	-0.00000113	0.00000000
+		-6.27236997	-0.00075091	0.00046022	0.00075476	-0.00000113	0.00000000
+		-6.27237041	-0.00075073	0.00046011	0.00075458	-0.00000113	0.00000000
+		-6.27237085	-0.00075055	0.00046000	0.00075440	-0.00000113	0.00000000
+		-6.27237130	-0.00075036	0.00045989	0.00075421	-0.00000113	0.00000000
+		-6.27237174	-0.00075018	0.00045978	0.00075403	-0.00000113	0.00000000
+		-6.27237218	-0.00075000	0.00045967	0.00075385	-0.00000113	0.00000000
+		-6.27237262	-0.00074982	0.00045955	0.00075366	-0.00000113	0.00000000
+		-6.27237306	-0.00074964	0.00045944	0.00075348	-0.00000113	0.00000000
+		-6.27237350	-0.00074946	0.00045933	0.00075330	-0.00000113	0.00000000
+		-6.27237394	-0.00074927	0.00045922	0.00075312	-0.00000113	0.00000000
+		-6.27237438	-0.00074909	0.00045911	0.00075294	-0.00000113	0.00000000
+		-6.27237482	-0.00074891	0.00045900	0.00075275	-0.00000113	0.00000000
+		-6.27237526	-0.00074873	0.00045889	0.00075257	-0.00000113	0.00000000
+		-6.27237570	-0.00074855	0.00045878	0.00075239	-0.00000113	0.00000000
+		-6.27237614	-0.00074837	0.00045866	0.00075221	-0.00000113	0.00000000
+		-6.27237657	-0.00074819	0.00045855	0.00075203	-0.00000113	0.00000000
+		-6.27237701	-0.00074801	0.00045844	0.00075184	-0.00000113	0.00000000
+		-6.27237745	-0.00074783	0.00045833	0.00075166	-0.00000113	0.00000000
+		-6.27237789	-0.00074765	0.00045822	0.00075148	-0.00000113	0.00000000
+		-6.27237833	-0.00074747	0.00045811	0.00075130	-0.00000113	0.00000000
+		-6.27237876	-0.00074728	0.00045800	0.00075112	-0.00000113	0.00000000
+		-6.27237920	-0.00074710	0.00045789	0.00075094	-0.00000113	0.00000000
+		-6.27237964	-0.00074692	0.00045778	0.00075075	-0.00000113	0.00000000
+		-6.27238007	-0.00074674	0.00045767	0.00075057	-0.00000113	0.00000000
+		-6.27238051	-0.00074656	0.00045756	0.00075039	-0.00000113	0.00000000
+		-6.27238095	-0.00074638	0.00045745	0.00075021	-0.00000113	0.00000000
+		-6.27238138	-0.00074620	0.00045734	0.00075003	-0.00000113	0.00000000
+		-6.27238182	-0.00074602	0.00045723	0.00074985	-0.00000113	0.00000000
+		-6.27238225	-0.00074584	0.00045712	0.00074967	-0.00000113	0.00000000
+		-6.27238269	-0.00074566	0.00045701	0.00074949	-0.00000113	0.00000000
+		-6.27238312	-0.00074548	0.00045690	0.00074931	-0.00000113	0.00000000
+		-6.27238356	-0.00074531	0.00045679	0.00074913	-0.00000113	0.00000000
+		-6.27238399	-0.00074513	0.00045668	0.00074895	-0.00000113	0.00000000
+		-6.27238443	-0.00074495	0.00045657	0.00074877	-0.00000113	0.00000000
+		-6.27238486	-0.00074477	0.00045646	0.00074859	-0.00000113	0.00000000
+		-6.27238530	-0.00074459	0.00045635	0.00074841	-0.00000113	0.00000000
+		-6.27238573	-0.00074441	0.00045624	0.00074823	-0.00000113	0.00000000
+		-6.27238616	-0.00074423	0.00045613	0.00074805	-0.00000113	0.00000000
+		-6.27238660	-0.00074405	0.00045602	0.00074787	-0.00000113	0.00000000
+		-6.27238703	-0.00074387	0.00045591	0.00074769	-0.00000113	0.00000000
+		-6.27238746	-0.00074369	0.00045580	0.00074751	-0.00000113	0.00000000
+		-6.27238790	-0.00074352	0.00045569	0.00074733	-0.00000113	0.00000000
+		-6.27238833	-0.00074334	0.00045558	0.00074715	-0.00000113	0.00000000
+		-6.27238876	-0.00074316	0.00045547	0.00074697	-0.00000113	0.00000000
+		-6.27238919	-0.00074298	0.00045536	0.00074679	-0.00000113	0.00000000
+		-6.27238962	-0.00074280	0.00045525	0.00074661	-0.00000113	0.00000000
+		-6.27239006	-0.00074262	0.00045514	0.00074643	-0.00000113	0.00000000
+		-6.27239049	-0.00074245	0.00045503	0.00074625	-0.00000113	0.00000000
+		-6.27239092	-0.00074227	0.00045492	0.00074607	-0.00000113	0.00000000
+		-6.27239135	-0.00074209	0.00045481	0.00074589	-0.00000113	0.00000000
+		-6.27239178	-0.00074191	0.00045470	0.00074572	-0.00000113	0.00000000
+		-6.27239221	-0.00074173	0.00045459	0.00074554	-0.00000113	0.00000000
+		-6.27239264	-0.00074156	0.00045449	0.00074536	-0.00000113	0.00000000
+		-6.27239307	-0.00074138	0.00045438	0.00074518	-0.00000113	0.00000000
+		-6.27239350	-0.00074120	0.00045427	0.00074500	-0.00000113	0.00000000
+		-6.27239393	-0.00074102	0.00045416	0.00074482	-0.00000113	0.00000000
+		-6.27239436	-0.00074085	0.00045405	0.00074464	-0.00000113	0.00000000
+		-6.27239479	-0.00074067	0.00045394	0.00074447	-0.00000113	0.00000000
+		-6.27239522	-0.00074049	0.00045383	0.00074429	-0.00000113	0.00000000
+		-6.27239564	-0.00074031	0.00045372	0.00074411	-0.00000113	0.00000000
+		-6.27239607	-0.00074014	0.00045362	0.00074393	-0.00000113	0.00000000
+		-6.27239650	-0.00073996	0.00045351	0.00074375	-0.00000113	0.00000000
+		-6.27239693	-0.00073978	0.00045340	0.00074358	-0.00000112	0.00000000
+		-6.27239736	-0.00073961	0.00045329	0.00074340	-0.00000112	0.00000000
+		-6.27239778	-0.00073943	0.00045318	0.00074322	-0.00000112	0.00000000
+		-6.27239821	-0.00073925	0.00045307	0.00074304	-0.00000112	0.00000000
+		-6.27239864	-0.00073908	0.00045296	0.00074287	-0.00000112	0.00000000
+		-6.27239906	-0.00073890	0.00045286	0.00074269	-0.00000112	0.00000000
+		-6.27239949	-0.00073872	0.00045275	0.00074251	-0.00000112	0.00000000
+		-6.27239992	-0.00073855	0.00045264	0.00074233	-0.00000112	0.00000000
+		-6.27240034	-0.00073837	0.00045253	0.00074216	-0.00000112	0.00000000
+		-6.27240077	-0.00073820	0.00045242	0.00074198	-0.00000112	0.00000000
+		-6.27240119	-0.00073802	0.00045232	0.00074180	-0.00000112	0.00000000
+		-6.27240162	-0.00073784	0.00045221	0.00074163	-0.00000112	0.00000000
+		-6.27240205	-0.00073767	0.00045210	0.00074145	-0.00000112	0.00000000
+		-6.27240247	-0.00073749	0.00045199	0.00074127	-0.00000112	0.00000000
+		-6.27240289	-0.00073732	0.00045188	0.00074110	-0.00000112	0.00000000
+		-6.27240332	-0.00073714	0.00045178	0.00074092	-0.00000112	0.00000000
+		-6.27240374	-0.00073697	0.00045167	0.00074074	-0.00000112	0.00000000
+		-6.27240417	-0.00073679	0.00045156	0.00074057	-0.00000112	0.00000000
+		-6.27240459	-0.00073662	0.00045145	0.00074039	-0.00000112	0.00000000
+		-6.27240502	-0.00073644	0.00045135	0.00074022	-0.00000112	0.00000000
+		-6.27240544	-0.00073626	0.00045124	0.00074004	-0.00000112	0.00000000
+		-6.27240586	-0.00073609	0.00045113	0.00073986	-0.00000112	0.00000000
+		-6.27240628	-0.00073591	0.00045102	0.00073969	-0.00000112	0.00000000
+		-6.27240671	-0.00073574	0.00045092	0.00073951	-0.00000112	0.00000000
+		-6.27240713	-0.00073556	0.00045081	0.00073934	-0.00000112	0.00000000
+		-6.27240755	-0.00073539	0.00045070	0.00073916	-0.00000112	0.00000000
+		-6.27240797	-0.00073522	0.00045060	0.00073898	-0.00000112	0.00000000
+		-6.27240840	-0.00073504	0.00045049	0.00073881	-0.00000112	0.00000000
+		-6.27240882	-0.00073487	0.00045038	0.00073863	-0.00000112	0.00000000
+		-6.27240924	-0.00073469	0.00045027	0.00073846	-0.00000112	0.00000000
+		-6.27240966	-0.00073452	0.00045017	0.00073828	-0.00000112	0.00000000
+		-6.27241008	-0.00073434	0.00045006	0.00073811	-0.00000112	0.00000000
+		-6.27241050	-0.00073417	0.00044995	0.00073793	-0.00000112	0.00000000
+		-6.27241092	-0.00073400	0.00044985	0.00073776	-0.00000112	0.00000000
+		-6.27241134	-0.00073382	0.00044974	0.00073758	-0.00000112	0.00000000
+		-6.27241176	-0.00073365	0.00044963	0.00073741	-0.00000112	0.00000000
+		-6.27241218	-0.00073347	0.00044953	0.00073723	-0.00000112	0.00000000
+		-6.27241260	-0.00073330	0.00044942	0.00073706	-0.00000112	0.00000000
+		-6.27241302	-0.00073313	0.00044931	0.00073688	-0.00000112	0.00000000
+		-6.27241344	-0.00073295	0.00044921	0.00073671	-0.00000112	0.00000000
+		-6.27241386	-0.00073278	0.00044910	0.00073653	-0.00000112	0.00000000
+		-6.27241428	-0.00073261	0.00044899	0.00073636	-0.00000112	0.00000000
+		-6.27241470	-0.00073243	0.00044889	0.00073619	-0.00000112	0.00000000
+		-6.27241512	-0.00073226	0.00044878	0.00073601	-0.00000112	0.00000000
+		-6.27241554	-0.00073209	0.00044868	0.00073584	-0.00000112	0.00000000
+		-6.27241595	-0.00073191	0.00044857	0.00073566	-0.00000112	0.00000000
+		-6.27241637	-0.00073174	0.00044846	0.00073549	-0.00000112	0.00000000
+		-6.27241679	-0.00073157	0.00044836	0.00073532	-0.00000112	0.00000000
+		-6.27241721	-0.00073139	0.00044825	0.00073514	-0.00000112	0.00000000
+		-6.27241762	-0.00073122	0.00044815	0.00073497	-0.00000112	0.00000000
+		-6.27241804	-0.00073105	0.00044804	0.00073479	-0.00000112	0.00000000
+		-6.27241846	-0.00073088	0.00044793	0.00073462	-0.00000112	0.00000000
+		-6.27241887	-0.00073070	0.00044783	0.00073445	-0.00000112	0.00000000
+		-6.27241929	-0.00073053	0.00044772	0.00073427	-0.00000112	0.00000000
+		-6.27241971	-0.00073036	0.00044762	0.00073410	-0.00000112	0.00000000
+		-6.27242012	-0.00073019	0.00044751	0.00073393	-0.00000112	0.00000000
+		-6.27242054	-0.00073001	0.00044741	0.00073376	-0.00000112	0.00000000
+		-6.27242095	-0.00072984	0.00044730	0.00073358	-0.00000112	0.00000000
+		-6.27242137	-0.00072967	0.00044719	0.00073341	-0.00000112	0.00000000
+		-6.27242178	-0.00072950	0.00044709	0.00073324	-0.00000112	0.00000000
+		-6.27242220	-0.00072933	0.00044698	0.00073306	-0.00000112	0.00000000
+		-6.27242261	-0.00072915	0.00044688	0.00073289	-0.00000112	0.00000000
+		-6.27242303	-0.00072898	0.00044677	0.00073272	-0.00000112	0.00000000
+		-6.27242344	-0.00072881	0.00044667	0.00073255	-0.00000112	0.00000000
+		-6.27242386	-0.00072864	0.00044656	0.00073237	-0.00000112	0.00000000
+		-6.27242427	-0.00072847	0.00044646	0.00073220	-0.00000112	0.00000000
+		-6.27242468	-0.00072830	0.00044635	0.00073203	-0.00000112	0.00000000
+		-6.27242510	-0.00072813	0.00044625	0.00073186	-0.00000112	0.00000000
+		-6.27242551	-0.00072795	0.00044614	0.00073168	-0.00000112	0.00000000
+		-6.27242592	-0.00072778	0.00044604	0.00073151	-0.00000112	0.00000000
+		-6.27242634	-0.00072761	0.00044593	0.00073134	-0.00000112	0.00000000
+		-6.27242675	-0.00072744	0.00044583	0.00073117	-0.00000112	0.00000000
+		-6.27242716	-0.00072727	0.00044572	0.00073100	-0.00000112	0.00000000
+		-6.27242757	-0.00072710	0.00044562	0.00073082	-0.00000112	0.00000000
+		-6.27242798	-0.00072693	0.00044551	0.00073065	-0.00000112	0.00000000
+		-6.27242840	-0.00072676	0.00044541	0.00073048	-0.00000112	0.00000000
+		-6.27242881	-0.00072659	0.00044530	0.00073031	-0.00000112	0.00000000
+		-6.27242922	-0.00072642	0.00044520	0.00073014	-0.00000112	0.00000000
+		-6.27242963	-0.00072625	0.00044509	0.00072997	-0.00000112	0.00000000
+		-6.27243004	-0.00072608	0.00044499	0.00072980	-0.00000112	0.00000000
+		-6.27243045	-0.00072591	0.00044488	0.00072962	-0.00000112	0.00000000
+		-6.27243086	-0.00072574	0.00044478	0.00072945	-0.00000112	0.00000000
+		-6.27243127	-0.00072557	0.00044468	0.00072928	-0.00000112	0.00000000
+		-6.27243168	-0.00072540	0.00044457	0.00072911	-0.00000112	0.00000000
+		-6.27243209	-0.00072523	0.00044447	0.00072894	-0.00000112	0.00000000
+		-6.27243250	-0.00072506	0.00044436	0.00072877	-0.00000112	0.00000000
+		-6.27243291	-0.00072489	0.00044426	0.00072860	-0.00000112	0.00000000
+		-6.27243332	-0.00072472	0.00044416	0.00072843	-0.00000112	0.00000000
+		-6.27243373	-0.00072455	0.00044405	0.00072826	-0.00000112	0.00000000
+		-6.27243414	-0.00072438	0.00044395	0.00072809	-0.00000112	0.00000000
+		-6.27243455	-0.00072421	0.00044384	0.00072792	-0.00000112	0.00000000
+		-6.27243496	-0.00072404	0.00044374	0.00072775	-0.00000112	0.00000000
+		-6.27243536	-0.00072387	0.00044364	0.00072758	-0.00000112	0.00000000
+		-6.27243577	-0.00072370	0.00044353	0.00072741	-0.00000112	0.00000000
+		-6.27243618	-0.00072353	0.00044343	0.00072724	-0.00000112	0.00000000
+		-6.27243659	-0.00072336	0.00044332	0.00072707	-0.00000112	0.00000000
+		-6.27243700	-0.00072319	0.00044322	0.00072690	-0.00000112	0.00000000
+		-6.27243740	-0.00072302	0.00044312	0.00072673	-0.00000112	0.00000000
+		-6.27243781	-0.00072285	0.00044301	0.00072656	-0.00000112	0.00000000
+		-6.27243822	-0.00072269	0.00044291	0.00072639	-0.00000112	0.00000000
+		-6.27243862	-0.00072252	0.00044281	0.00072622	-0.00000112	0.00000000
+		-6.27243903	-0.00072235	0.00044270	0.00072605	-0.00000112	0.00000000
+		-6.27243944	-0.00072218	0.00044260	0.00072588	-0.00000112	0.00000000
+		-6.27243984	-0.00072201	0.00044250	0.00072571	-0.00000112	0.00000000
+		-6.27244025	-0.00072184	0.00044239	0.00072554	-0.00000112	0.00000000
+		-6.27244065	-0.00072167	0.00044229	0.00072537	-0.00000112	0.00000000
+		-6.27244106	-0.00072151	0.00044219	0.00072520	-0.00000112	0.00000000
+		-6.27244146	-0.00072134	0.00044208	0.00072503	-0.00000112	0.00000000
+		-6.27244187	-0.00072117	0.00044198	0.00072486	-0.00000112	0.00000000
+		-6.27244227	-0.00072100	0.00044188	0.00072470	-0.00000112	0.00000000
+		-6.27244268	-0.00072083	0.00044177	0.00072453	-0.00000112	0.00000000
+		-6.27244308	-0.00072067	0.00044167	0.00072436	-0.00000112	0.00000000
+		-6.27244349	-0.00072050	0.00044157	0.00072419	-0.00000112	0.00000000
+		-6.27244389	-0.00072033	0.00044147	0.00072402	-0.00000112	0.00000000
+		-6.27244429	-0.00072016	0.00044136	0.00072385	-0.00000112	0.00000000
+		-6.27244470	-0.00072000	0.00044126	0.00072368	-0.00000112	0.00000000
+		-6.27244510	-0.00071983	0.00044116	0.00072352	-0.00000112	0.00000000
+		-6.27244550	-0.00071966	0.00044105	0.00072335	-0.00000112	0.00000000
+		-6.27244591	-0.00071949	0.00044095	0.00072318	-0.00000112	0.00000000
+		-6.27244631	-0.00071933	0.00044085	0.00072301	-0.00000112	0.00000000
+		-6.27244671	-0.00071916	0.00044075	0.00072284	-0.00000112	0.00000000
+		-6.27244712	-0.00071899	0.00044064	0.00072268	-0.00000112	0.00000000
+		-6.27244752	-0.00071883	0.00044054	0.00072251	-0.00000112	0.00000000
+		-6.27244792	-0.00071866	0.00044044	0.00072234	-0.00000112	0.00000000
+		-6.27244832	-0.00071849	0.00044034	0.00072217	-0.00000112	0.00000000
+		-6.27244872	-0.00071833	0.00044024	0.00072200	-0.00000112	0.00000000
+		-6.27244912	-0.00071816	0.00044013	0.00072184	-0.00000112	0.00000000
+		-6.27244953	-0.00071799	0.00044003	0.00072167	-0.00000112	0.00000000
+		-6.27244993	-0.00071783	0.00043993	0.00072150	-0.00000112	0.00000000
+		-6.27245033	-0.00071766	0.00043983	0.00072133	-0.00000112	0.00000000
+		-6.27245073	-0.00071749	0.00043972	0.00072117	-0.00000112	0.00000000
+		-6.27245113	-0.00071733	0.00043962	0.00072100	-0.00000112	0.00000000
+		-6.27245153	-0.00071716	0.00043952	0.00072083	-0.00000112	0.00000000
+		-6.27245193	-0.00071699	0.00043942	0.00072067	-0.00000112	0.00000000
+		-6.27245233	-0.00071683	0.00043932	0.00072050	-0.00000112	0.00000000
+		-6.27245273	-0.00071666	0.00043922	0.00072033	-0.00000112	0.00000000
+		-6.27245313	-0.00071650	0.00043911	0.00072017	-0.00000112	0.00000000
+		-6.27245353	-0.00071633	0.00043901	0.00072000	-0.00000112	0.00000000
+		-6.27245393	-0.00071617	0.00043891	0.00071983	-0.00000112	0.00000000
+		-6.27245432	-0.00071600	0.00043881	0.00071967	-0.00000112	0.00000000
+		-6.27245472	-0.00071583	0.00043871	0.00071950	-0.00000112	0.00000000
+		-6.27245512	-0.00071567	0.00043861	0.00071933	-0.00000112	0.00000000
+		-6.27245552	-0.00071550	0.00043850	0.00071917	-0.00000112	0.00000000
+		-6.27245592	-0.00071534	0.00043840	0.00071900	-0.00000112	0.00000000
+		-6.27245632	-0.00071517	0.00043830	0.00071883	-0.00000112	0.00000000
+		-6.27245671	-0.00071501	0.00043820	0.00071867	-0.00000112	0.00000000
+		-6.27245711	-0.00071484	0.00043810	0.00071850	-0.00000112	0.00000000
+		-6.27245751	-0.00071468	0.00043800	0.00071834	-0.00000112	0.00000000
+		-6.27245791	-0.00071451	0.00043790	0.00071817	-0.00000112	0.00000000
+		-6.27245830	-0.00071435	0.00043779	0.00071800	-0.00000112	0.00000000
+		-6.27245870	-0.00071418	0.00043769	0.00071784	-0.00000112	0.00000000
+		-6.27245910	-0.00071402	0.00043759	0.00071767	-0.00000112	0.00000000
+		-6.27245949	-0.00071385	0.00043749	0.00071751	-0.00000112	0.00000000
+		-6.27245989	-0.00071369	0.00043739	0.00071734	-0.00000112	0.00000000
+		-6.27246028	-0.00071352	0.00043729	0.00071718	-0.00000112	0.00000000
+		-6.27246068	-0.00071336	0.00043719	0.00071701	-0.00000112	0.00000000
+		-6.27246108	-0.00071320	0.00043709	0.00071685	-0.00000112	0.00000000
+		-6.27246147	-0.00071303	0.00043699	0.00071668	-0.00000112	0.00000000
+		-6.27246187	-0.00071287	0.00043689	0.00071652	-0.00000112	0.00000000
+		-6.27246226	-0.00071270	0.00043679	0.00071635	-0.00000112	0.00000000
+		-6.27246266	-0.00071254	0.00043669	0.00071619	-0.00000112	0.00000000
+		-6.27246305	-0.00071237	0.00043658	0.00071602	-0.00000112	0.00000000
+		-6.27246345	-0.00071221	0.00043648	0.00071586	-0.00000112	0.00000000
+		-6.27246384	-0.00071205	0.00043638	0.00071569	-0.00000112	0.00000000
+		-6.27246423	-0.00071188	0.00043628	0.00071553	-0.00000112	0.00000000
+		-6.27246463	-0.00071172	0.00043618	0.00071536	-0.00000112	0.00000000
+		-6.27246502	-0.00071156	0.00043608	0.00071520	-0.00000112	0.00000000
+		-6.27246541	-0.00071139	0.00043598	0.00071503	-0.00000112	0.00000000
+		-6.27246581	-0.00071123	0.00043588	0.00071487	-0.00000112	0.00000000
+		-6.27246620	-0.00071107	0.00043578	0.00071471	-0.00000112	0.00000000
+		-6.27246659	-0.00071090	0.00043568	0.00071454	-0.00000112	0.00000000
+		-6.27246699	-0.00071074	0.00043558	0.00071438	-0.00000112	0.00000000
+		-6.27246738	-0.00071058	0.00043548	0.00071421	-0.00000112	0.00000000
+		-6.27246777	-0.00071041	0.00043538	0.00071405	-0.00000112	0.00000000
+		-6.27246816	-0.00071025	0.00043528	0.00071389	-0.00000112	0.00000000
+		-6.27246856	-0.00071009	0.00043518	0.00071372	-0.00000112	0.00000000
+		-6.27246895	-0.00070992	0.00043508	0.00071356	-0.00000112	0.00000000
+		-6.27246934	-0.00070976	0.00043498	0.00071339	-0.00000112	0.00000000
+		-6.27246973	-0.00070960	0.00043488	0.00071323	-0.00000112	0.00000000
+		-6.27247012	-0.00070944	0.00043478	0.00071307	-0.00000112	0.00000000
+		-6.27247051	-0.00070927	0.00043468	0.00071290	-0.00000112	0.00000000
+		-6.27247090	-0.00070911	0.00043458	0.00071274	-0.00000112	0.00000000
+		-6.27247129	-0.00070895	0.00043448	0.00071258	-0.00000112	0.00000000
+		-6.27247168	-0.00070879	0.00043438	0.00071241	-0.00000112	0.00000000
+		-6.27247207	-0.00070862	0.00043428	0.00071225	-0.00000112	0.00000000
+		-6.27247246	-0.00070846	0.00043418	0.00071209	-0.00000112	0.00000000
+		-6.27247285	-0.00070830	0.00043409	0.00071193	-0.00000112	0.00000000
+		-6.27247324	-0.00070814	0.00043399	0.00071176	-0.00000112	0.00000000
+		-6.27247363	-0.00070798	0.00043389	0.00071160	-0.00000112	0.00000000
+		-6.27247402	-0.00070781	0.00043379	0.00071144	-0.00000112	0.00000000
+		-6.27247441	-0.00070765	0.00043369	0.00071127	-0.00000112	0.00000000
+		-6.27247480	-0.00070749	0.00043359	0.00071111	-0.00000112	0.00000000
+		-6.27247519	-0.00070733	0.00043349	0.00071095	-0.00000112	0.00000000
+		-6.27247558	-0.00070717	0.00043339	0.00071079	-0.00000112	0.00000000
+		-6.27247597	-0.00070701	0.00043329	0.00071062	-0.00000112	0.00000000
+		-6.27247636	-0.00070684	0.00043319	0.00071046	-0.00000112	0.00000000
+		-6.27247674	-0.00070668	0.00043309	0.00071030	-0.00000112	0.00000000
+		-6.27247713	-0.00070652	0.00043299	0.00071014	-0.00000112	0.00000000
+		-6.27247752	-0.00070636	0.00043290	0.00070998	-0.00000112	0.00000000
+		-6.27247791	-0.00070620	0.00043280	0.00070981	-0.00000112	0.00000000
+		-6.27247829	-0.00070604	0.00043270	0.00070965	-0.00000112	0.00000000
+		-6.27247868	-0.00070588	0.00043260	0.00070949	-0.00000112	0.00000000
+		-6.27247907	-0.00070572	0.00043250	0.00070933	-0.00000112	0.00000000
+		-6.27247945	-0.00070556	0.00043240	0.00070917	-0.00000112	0.00000000
+		-6.27247984	-0.00070539	0.00043230	0.00070900	-0.00000112	0.00000000
+		-6.27248023	-0.00070523	0.00043220	0.00070884	-0.00000112	0.00000000
+		-6.27248061	-0.00070507	0.00043211	0.00070868	-0.00000112	0.00000000
+		-6.27248100	-0.00070491	0.00043201	0.00070852	-0.00000112	0.00000000
+		-6.27248139	-0.00070475	0.00043191	0.00070836	-0.00000112	0.00000000
+		-6.27248177	-0.00070459	0.00043181	0.00070820	-0.00000112	0.00000000
+		-6.27248216	-0.00070443	0.00043171	0.00070804	-0.00000112	0.00000000
+		-6.27248254	-0.00070427	0.00043161	0.00070788	-0.00000112	0.00000000
+		-6.27248293	-0.00070411	0.00043152	0.00070771	-0.00000112	0.00000000
+		-6.27248331	-0.00070395	0.00043142	0.00070755	-0.00000112	0.00000000
+		-6.27248370	-0.00070379	0.00043132	0.00070739	-0.00000112	0.00000000
+		-6.27248408	-0.00070363	0.00043122	0.00070723	-0.00000112	0.00000000
+		-6.27248447	-0.00070347	0.00043112	0.00070707	-0.00000112	0.00000000
+		-6.27248485	-0.00070331	0.00043103	0.00070691	-0.00000112	0.00000000
+		-6.27248523	-0.00070315	0.00043093	0.00070675	-0.00000112	0.00000000
+		-6.27248562	-0.00070299	0.00043083	0.00070659	-0.00000112	0.00000000
+		-6.27248600	-0.00070283	0.00043073	0.00070643	-0.00000112	0.00000000
+		-6.27248638	-0.00070267	0.00043063	0.00070627	-0.00000112	0.00000000
+		-6.27248677	-0.00070251	0.00043054	0.00070611	-0.00000112	0.00000000
+		-6.27248715	-0.00070235	0.00043044	0.00070595	-0.00000112	0.00000000
+		-6.27248753	-0.00070219	0.00043034	0.00070579	-0.00000112	0.00000000
+		-6.27248792	-0.00070203	0.00043024	0.00070563	-0.00000112	0.00000000
+		-6.27248830	-0.00070188	0.00043014	0.00070547	-0.00000112	0.00000000
+		-6.27248868	-0.00070172	0.00043005	0.00070531	-0.00000112	0.00000000
+		-6.27248906	-0.00070156	0.00042995	0.00070515	-0.00000112	0.00000000
+		-6.27248945	-0.00070140	0.00042985	0.00070499	-0.00000112	0.00000000
+		-6.27248983	-0.00070124	0.00042975	0.00070483	-0.00000112	0.00000000
+		-6.27249021	-0.00070108	0.00042966	0.00070467	-0.00000112	0.00000000
+		-6.27249059	-0.00070092	0.00042956	0.00070451	-0.00000112	0.00000000
+		-6.27249097	-0.00070076	0.00042946	0.00070435	-0.00000112	0.00000000
+		-6.27249135	-0.00070060	0.00042937	0.00070419	-0.00000112	0.00000000
+		-6.27249173	-0.00070045	0.00042927	0.00070403	-0.00000112	0.00000000
+		-6.27249211	-0.00070029	0.00042917	0.00070387	-0.00000112	0.00000000
+		-6.27249250	-0.00070013	0.00042907	0.00070371	-0.00000112	0.00000000
+		-6.27249288	-0.00069997	0.00042898	0.00070355	-0.00000112	0.00000000
+		-6.27249326	-0.00069981	0.00042888	0.00070339	-0.00000112	0.00000000
+		-6.27249364	-0.00069965	0.00042878	0.00070323	-0.00000112	0.00000000
+		-6.27249402	-0.00069950	0.00042869	0.00070308	-0.00000112	0.00000000
+		-6.27249440	-0.00069934	0.00042859	0.00070292	-0.00000112	0.00000000
+		-6.27249477	-0.00069918	0.00042849	0.00070276	-0.00000112	0.00000000
+		-6.27249515	-0.00069902	0.00042840	0.00070260	-0.00000112	0.00000000
+		-6.27249553	-0.00069887	0.00042830	0.00070244	-0.00000112	0.00000000
+		-6.27249591	-0.00069871	0.00042820	0.00070228	-0.00000112	0.00000000
+		-6.27249629	-0.00069855	0.00042810	0.00070212	-0.00000112	0.00000000
+		-6.27249667	-0.00069839	0.00042801	0.00070197	-0.00000112	0.00000000
+		-6.27249705	-0.00069823	0.00042791	0.00070181	-0.00000112	0.00000000
+		-6.27249743	-0.00069808	0.00042781	0.00070165	-0.00000112	0.00000000
+		-6.27249780	-0.00069792	0.00042772	0.00070149	-0.00000112	0.00000000
+		-6.27249818	-0.00069776	0.00042762	0.00070133	-0.00000112	0.00000000
+		-6.27249856	-0.00069761	0.00042753	0.00070117	-0.00000112	0.00000000
+		-6.27249894	-0.00069745	0.00042743	0.00070102	-0.00000112	0.00000000
+		-6.27249931	-0.00069729	0.00042733	0.00070086	-0.00000112	0.00000000
+		-6.27249969	-0.00069713	0.00042724	0.00070070	-0.00000112	0.00000000
+		-6.27250007	-0.00069698	0.00042714	0.00070054	-0.00000112	0.00000000
+		-6.27250045	-0.00069682	0.00042704	0.00070038	-0.00000112	0.00000000
+		-6.27250082	-0.00069666	0.00042695	0.00070023	-0.00000112	0.00000000
+		-6.27250120	-0.00069651	0.00042685	0.00070007	-0.00000112	0.00000000
+		-6.27250158	-0.00069635	0.00042676	0.00069991	-0.00000112	0.00000000
+		-6.27250195	-0.00069619	0.00042666	0.00069975	-0.00000112	0.00000000
+		-6.27250233	-0.00069604	0.00042656	0.00069960	-0.00000112	0.00000000
+		-6.27250270	-0.00069588	0.00042647	0.00069944	-0.00000112	0.00000000
+		-6.27250308	-0.00069572	0.00042637	0.00069928	-0.00000112	0.00000000
+		-6.27250345	-0.00069557	0.00042628	0.00069913	-0.00000112	0.00000000
+		-6.27250383	-0.00069541	0.00042618	0.00069897	-0.00000112	0.00000000
+		-6.27250420	-0.00069525	0.00042608	0.00069881	-0.00000112	0.00000000
+		-6.27250458	-0.00069510	0.00042599	0.00069865	-0.00000112	0.00000000
+		-6.27250495	-0.00069494	0.00042589	0.00069850	-0.00000112	0.00000000
+		-6.27250533	-0.00069479	0.00042580	0.00069834	-0.00000112	0.00000000
+		-6.27250570	-0.00069463	0.00042570	0.00069818	-0.00000112	0.00000000
+		-6.27250608	-0.00069447	0.00042561	0.00069803	-0.00000112	0.00000000
+		-6.27250645	-0.00069432	0.00042551	0.00069787	-0.00000112	0.00000000
+		-6.27250683	-0.00069416	0.00042541	0.00069771	-0.00000112	0.00000000
+		-6.27250720	-0.00069401	0.00042532	0.00069756	-0.00000112	0.00000000
+		-6.27250757	-0.00069385	0.00042522	0.00069740	-0.00000112	0.00000000
+		-6.27250795	-0.00069370	0.00042513	0.00069725	-0.00000112	0.00000000
+		-6.27250832	-0.00069354	0.00042503	0.00069709	-0.00000112	0.00000000
+		-6.27250869	-0.00069339	0.00042494	0.00069693	-0.00000112	0.00000000
+		-6.27250906	-0.00069323	0.00042484	0.00069678	-0.00000112	0.00000000
+		-6.27250944	-0.00069308	0.00042475	0.00069662	-0.00000112	0.00000000
+		-6.27250981	-0.00069292	0.00042465	0.00069646	-0.00000112	0.00000000
+		-6.27251018	-0.00069277	0.00042456	0.00069631	-0.00000112	0.00000000
+		-6.27251055	-0.00069261	0.00042446	0.00069615	-0.00000112	0.00000000
+		-6.27251093	-0.00069246	0.00042437	0.00069600	-0.00000112	0.00000000
+		-6.27251130	-0.00069230	0.00042427	0.00069584	-0.00000112	0.00000000
+		-6.27251167	-0.00069215	0.00042418	0.00069569	-0.00000112	0.00000000
+		-6.27251204	-0.00069199	0.00042408	0.00069553	-0.00000112	0.00000000
+		-6.27251241	-0.00069184	0.00042399	0.00069537	-0.00000112	0.00000000
+		-6.27251278	-0.00069168	0.00042389	0.00069522	-0.00000112	0.00000000
+		-6.27251315	-0.00069153	0.00042380	0.00069506	-0.00000112	0.00000000
+		-6.27251353	-0.00069137	0.00042370	0.00069491	-0.00000112	0.00000000
+		-6.27251390	-0.00069122	0.00042361	0.00069475	-0.00000112	0.00000000
+		-6.27251427	-0.00069106	0.00042351	0.00069460	-0.00000112	0.00000000
+		-6.27251464	-0.00069091	0.00042342	0.00069444	-0.00000112	0.00000000
+		-6.27251501	-0.00069076	0.00042332	0.00069429	-0.00000112	0.00000000
+		-6.27251538	-0.00069060	0.00042323	0.00069413	-0.00000112	0.00000000
+		-6.27251575	-0.00069045	0.00042314	0.00069398	-0.00000112	0.00000000
+		-6.27251612	-0.00069029	0.00042304	0.00069382	-0.00000112	0.00000000
+		-6.27251649	-0.00069014	0.00042295	0.00069367	-0.00000112	0.00000000
+		-6.27251685	-0.00068999	0.00042285	0.00069351	-0.00000112	0.00000000
+		-6.27251722	-0.00068983	0.00042276	0.00069336	-0.00000112	0.00000000
+		-6.27251759	-0.00068968	0.00042266	0.00069321	-0.00000112	0.00000000
+		-6.27251796	-0.00068952	0.00042257	0.00069305	-0.00000112	0.00000000
+		-6.27251833	-0.00068937	0.00042248	0.00069290	-0.00000112	0.00000000
+		-6.27251870	-0.00068922	0.00042238	0.00069274	-0.00000112	0.00000000
+		-6.27251907	-0.00068906	0.00042229	0.00069259	-0.00000112	0.00000000
+		-6.27251943	-0.00068891	0.00042219	0.00069243	-0.00000112	0.00000000
+		-6.27251980	-0.00068876	0.00042210	0.00069228	-0.00000112	0.00000000
+		-6.27252017	-0.00068860	0.00042200	0.00069213	-0.00000112	0.00000000
+		-6.27252054	-0.00068845	0.00042191	0.00069197	-0.00000112	0.00000000
+		-6.27252091	-0.00068830	0.00042182	0.00069182	-0.00000112	0.00000000
+		-6.27252127	-0.00068815	0.00042172	0.00069166	-0.00000112	0.00000000
+		-6.27252164	-0.00068799	0.00042163	0.00069151	-0.00000112	0.00000000
+		-6.27252201	-0.00068784	0.00042154	0.00069136	-0.00000112	0.00000000
+		-6.27252237	-0.00068769	0.00042144	0.00069120	-0.00000112	0.00000000
+		-6.27252274	-0.00068753	0.00042135	0.00069105	-0.00000112	0.00000000
+		-6.27252311	-0.00068738	0.00042125	0.00069090	-0.00000112	0.00000000
+		-6.27252347	-0.00068723	0.00042116	0.00069074	-0.00000112	0.00000000
+		-6.27252384	-0.00068708	0.00042107	0.00069059	-0.00000112	0.00000000
+		-6.27252420	-0.00068692	0.00042097	0.00069044	-0.00000112	0.00000000
+		-6.27252457	-0.00068677	0.00042088	0.00069028	-0.00000112	0.00000000
+		-6.27252494	-0.00068662	0.00042079	0.00069013	-0.00000112	0.00000000
+		-6.27252530	-0.00068647	0.00042069	0.00068998	-0.00000112	0.00000000
+		-6.27252567	-0.00068631	0.00042060	0.00068982	-0.00000112	0.00000000
+		-6.27252603	-0.00068616	0.00042051	0.00068967	-0.00000112	0.00000000
+		-6.27252640	-0.00068601	0.00042041	0.00068952	-0.00000112	0.00000000
+		-6.27252676	-0.00068586	0.00042032	0.00068937	-0.00000112	0.00000000
+		-6.27252712	-0.00068571	0.00042023	0.00068921	-0.00000112	0.00000000
+		-6.27252749	-0.00068555	0.00042013	0.00068906	-0.00000112	0.00000000
+		-6.27252785	-0.00068540	0.00042004	0.00068891	-0.00000112	0.00000000
+		-6.27252822	-0.00068525	0.00041995	0.00068875	-0.00000112	0.00000000
+		-6.27252858	-0.00068510	0.00041985	0.00068860	-0.00000112	0.00000000
+		-6.27252895	-0.00068495	0.00041976	0.00068845	-0.00000112	0.00000000
+		-6.27252931	-0.00068480	0.00041967	0.00068830	-0.00000112	0.00000000
+		-6.27252967	-0.00068464	0.00041958	0.00068815	-0.00000112	0.00000000
+		-6.27253004	-0.00068449	0.00041948	0.00068799	-0.00000112	0.00000000
+		-6.27253040	-0.00068434	0.00041939	0.00068784	-0.00000112	0.00000000
+		-6.27253076	-0.00068419	0.00041930	0.00068769	-0.00000112	0.00000000
+		-6.27253112	-0.00068404	0.00041920	0.00068754	-0.00000112	0.00000000
+		-6.27253149	-0.00068389	0.00041911	0.00068738	-0.00000112	0.00000000
+		-6.27253185	-0.00068374	0.00041902	0.00068723	-0.00000112	0.00000000
+		-6.27253221	-0.00068359	0.00041893	0.00068708	-0.00000112	0.00000000
+		-6.27253257	-0.00068344	0.00041883	0.00068693	-0.00000112	0.00000000
+		-6.27253293	-0.00068328	0.00041874	0.00068678	-0.00000112	0.00000000
+		-6.27253330	-0.00068313	0.00041865	0.00068663	-0.00000112	0.00000000
+		-6.27253366	-0.00068298	0.00041856	0.00068647	-0.00000112	0.00000000
+		-6.27253402	-0.00068283	0.00041846	0.00068632	-0.00000112	0.00000000
+		-6.27253438	-0.00068268	0.00041837	0.00068617	-0.00000112	0.00000000
+		-6.27253474	-0.00068253	0.00041828	0.00068602	-0.00000112	0.00000000
+		-6.27253510	-0.00068238	0.00041819	0.00068587	-0.00000112	0.00000000
+		-6.27253546	-0.00068223	0.00041810	0.00068572	-0.00000112	0.00000000
+		-6.27253582	-0.00068208	0.00041800	0.00068557	-0.00000112	0.00000000
+		-6.27253618	-0.00068193	0.00041791	0.00068542	-0.00000112	0.00000000
+		-6.27253654	-0.00068178	0.00041782	0.00068526	-0.00000112	0.00000000
+		-6.27253690	-0.00068163	0.00041773	0.00068511	-0.00000112	0.00000000
+		-6.27253726	-0.00068148	0.00041763	0.00068496	-0.00000112	0.00000000
+		-6.27253762	-0.00068133	0.00041754	0.00068481	-0.00000112	0.00000000
+		-6.27253798	-0.00068118	0.00041745	0.00068466	-0.00000112	0.00000000
+		-6.27253834	-0.00068103	0.00041736	0.00068451	-0.00000112	0.00000000
+		-6.27253870	-0.00068088	0.00041727	0.00068436	-0.00000112	0.00000000
+		-6.27253906	-0.00068073	0.00041718	0.00068421	-0.00000112	0.00000000
+		-6.27253942	-0.00068058	0.00041708	0.00068406	-0.00000112	0.00000000
+		-6.27253978	-0.00068043	0.00041699	0.00068391	-0.00000112	0.00000000
+		-6.27254014	-0.00068028	0.00041690	0.00068376	-0.00000112	0.00000000
+		-6.27254050	-0.00068013	0.00041681	0.00068361	-0.00000112	0.00000000
+		-6.27254086	-0.00067998	0.00041672	0.00068346	-0.00000112	0.00000000
+		-6.27254121	-0.00067983	0.00041662	0.00068331	-0.00000112	0.00000000
+		-6.27254157	-0.00067968	0.00041653	0.00068316	-0.00000112	0.00000000
+		-6.27254193	-0.00067953	0.00041644	0.00068301	-0.00000112	0.00000000
+		-6.27254229	-0.00067939	0.00041635	0.00068286	-0.00000112	0.00000000
+		-6.27254264	-0.00067924	0.00041626	0.00068271	-0.00000112	0.00000000
+		-6.27254300	-0.00067909	0.00041617	0.00068256	-0.00000112	0.00000000
+		-6.27254336	-0.00067894	0.00041608	0.00068241	-0.00000112	0.00000000
+		-6.27254372	-0.00067879	0.00041598	0.00068226	-0.00000112	0.00000000
+		-6.27254407	-0.00067864	0.00041589	0.00068211	-0.00000112	0.00000000
+		-6.27254443	-0.00067849	0.00041580	0.00068196	-0.00000112	0.00000000
+		-6.27254479	-0.00067834	0.00041571	0.00068181	-0.00000112	0.00000000
+		-6.27254514	-0.00067819	0.00041562	0.00068166	-0.00000112	0.00000000
+		-6.27254550	-0.00067805	0.00041553	0.00068151	-0.00000112	0.00000000
+		-6.27254585	-0.00067790	0.00041544	0.00068136	-0.00000112	0.00000000
+		-6.27254621	-0.00067775	0.00041535	0.00068121	-0.00000112	0.00000000
+		-6.27254657	-0.00067760	0.00041526	0.00068106	-0.00000112	0.00000000
+		-6.27254692	-0.00067745	0.00041516	0.00068092	-0.00000112	0.00000000
+		-6.27254728	-0.00067730	0.00041507	0.00068077	-0.00000112	0.00000000
+		-6.27254763	-0.00067716	0.00041498	0.00068062	-0.00000112	0.00000000
+		-6.27254799	-0.00067701	0.00041489	0.00068047	-0.00000112	0.00000000
+		-6.27254834	-0.00067686	0.00041480	0.00068032	-0.00000112	0.00000000
+		-6.27254870	-0.00067671	0.00041471	0.00068017	-0.00000112	0.00000000
+		-6.27254905	-0.00067656	0.00041462	0.00068002	-0.00000112	0.00000000
+		-6.27254941	-0.00067642	0.00041453	0.00067987	-0.00000112	0.00000000
+		-6.27254976	-0.00067627	0.00041444	0.00067972	-0.00000112	0.00000000
+		-6.27255012	-0.00067612	0.00041435	0.00067958	-0.00000112	0.00000000
+		-6.27255047	-0.00067597	0.00041426	0.00067943	-0.00000112	0.00000000
+		-6.27255082	-0.00067583	0.00041417	0.00067928	-0.00000112	0.00000000
+		-6.27255118	-0.00067568	0.00041408	0.00067913	-0.00000112	0.00000000
+		-6.27255153	-0.00067553	0.00041399	0.00067898	-0.00000112	0.00000000
+		-6.27255188	-0.00067538	0.00041390	0.00067883	-0.00000112	0.00000000
+		-6.27255224	-0.00067524	0.00041381	0.00067869	-0.00000112	0.00000000
+		-6.27255259	-0.00067509	0.00041372	0.00067854	-0.00000112	0.00000000
+		-6.27255294	-0.00067494	0.00041362	0.00067839	-0.00000112	0.00000000
+		-6.27255330	-0.00067479	0.00041353	0.00067824	-0.00000112	0.00000000
+		-6.27255365	-0.00067465	0.00041344	0.00067810	-0.00000112	0.00000000
+		-6.27255400	-0.00067450	0.00041335	0.00067795	-0.00000112	0.00000000
+		-6.27255435	-0.00067435	0.00041326	0.00067780	-0.00000112	0.00000000
+		-6.27255470	-0.00067421	0.00041317	0.00067765	-0.00000112	0.00000000
+		-6.27255506	-0.00067406	0.00041308	0.00067750	-0.00000112	0.00000000
+		-6.27255541	-0.00067391	0.00041299	0.00067736	-0.00000112	0.00000000
+		-6.27255576	-0.00067377	0.00041290	0.00067721	-0.00000112	0.00000000
+		-6.27255611	-0.00067362	0.00041281	0.00067706	-0.00000112	0.00000000
+		-6.27255646	-0.00067347	0.00041272	0.00067691	-0.00000112	0.00000000
+		-6.27255681	-0.00067333	0.00041263	0.00067677	-0.00000112	0.00000000
+		-6.27255717	-0.00067318	0.00041254	0.00067662	-0.00000112	0.00000000
+		-6.27255752	-0.00067303	0.00041245	0.00067647	-0.00000112	0.00000000
+		-6.27255787	-0.00067289	0.00041236	0.00067633	-0.00000112	0.00000000
+		-6.27255822	-0.00067274	0.00041228	0.00067618	-0.00000112	0.00000000
+		-6.27255857	-0.00067260	0.00041219	0.00067603	-0.00000112	0.00000000
+		-6.27255892	-0.00067245	0.00041210	0.00067589	-0.00000112	0.00000000
+		-6.27255927	-0.00067230	0.00041201	0.00067574	-0.00000112	0.00000000
+		-6.27255962	-0.00067216	0.00041192	0.00067559	-0.00000112	0.00000000
+		-6.27255997	-0.00067201	0.00041183	0.00067544	-0.00000112	0.00000000
+		-6.27256032	-0.00067187	0.00041174	0.00067530	-0.00000112	0.00000000
+		-6.27256067	-0.00067172	0.00041165	0.00067515	-0.00000112	0.00000000
+		-6.27256102	-0.00067157	0.00041156	0.00067501	-0.00000112	0.00000000
+		-6.27256137	-0.00067143	0.00041147	0.00067486	-0.00000112	0.00000000
+		-6.27256171	-0.00067128	0.00041138	0.00067471	-0.00000112	0.00000000
+		-6.27256206	-0.00067114	0.00041129	0.00067457	-0.00000112	0.00000000
+		-6.27256241	-0.00067099	0.00041120	0.00067442	-0.00000112	0.00000000
+		-6.27256276	-0.00067085	0.00041111	0.00067427	-0.00000112	0.00000000
+		-6.27256311	-0.00067070	0.00041102	0.00067413	-0.00000112	0.00000000
+		-6.27256346	-0.00067056	0.00041093	0.00067398	-0.00000112	0.00000000
+		-6.27256381	-0.00067041	0.00041085	0.00067384	-0.00000112	0.00000000
+		-6.27256415	-0.00067027	0.00041076	0.00067369	-0.00000112	0.00000000
+		-6.27256450	-0.00067012	0.00041067	0.00067354	-0.00000112	0.00000000
+		-6.27256485	-0.00066998	0.00041058	0.00067340	-0.00000112	0.00000000
+		-6.27256520	-0.00066983	0.00041049	0.00067325	-0.00000112	0.00000000
+		-6.27256554	-0.00066969	0.00041040	0.00067311	-0.00000112	0.00000000
+		-6.27256589	-0.00066954	0.00041031	0.00067296	-0.00000112	0.00000000
+		-6.27256624	-0.00066940	0.00041022	0.00067282	-0.00000112	0.00000000
+		-6.27256658	-0.00066925	0.00041013	0.00067267	-0.00000112	0.00000000
+		-6.27256693	-0.00066911	0.00041005	0.00067252	-0.00000112	0.00000000
+		-6.27256728	-0.00066896	0.00040996	0.00067238	-0.00000112	0.00000000
+		-6.27256762	-0.00066882	0.00040987	0.00067223	-0.00000112	0.00000000
+		-6.27256797	-0.00066867	0.00040978	0.00067209	-0.00000112	0.00000000
+		-6.27256832	-0.00066853	0.00040969	0.00067194	-0.00000112	0.00000000
+		-6.27256866	-0.00066838	0.00040960	0.00067180	-0.00000112	0.00000000
+		-6.27256901	-0.00066824	0.00040951	0.00067165	-0.00000112	0.00000000
+		-6.27256935	-0.00066810	0.00040943	0.00067151	-0.00000112	0.00000000
+		-6.27256970	-0.00066795	0.00040934	0.00067136	-0.00000112	0.00000000
+		-6.27257004	-0.00066781	0.00040925	0.00067122	-0.00000112	0.00000000
+		-6.27257039	-0.00066766	0.00040916	0.00067107	-0.00000112	0.00000000
+		-6.27257073	-0.00066752	0.00040907	0.00067093	-0.00000112	0.00000000
+		-6.27257108	-0.00066738	0.00040898	0.00067078	-0.00000112	0.00000000
+		-6.27257142	-0.00066723	0.00040890	0.00067064	-0.00000112	0.00000000
+		-6.27257177	-0.00066709	0.00040881	0.00067050	-0.00000112	0.00000000
+		-6.27257211	-0.00066694	0.00040872	0.00067035	-0.00000112	0.00000000
+		-6.27257246	-0.00066680	0.00040863	0.00067021	-0.00000112	0.00000000
+		-6.27257280	-0.00066666	0.00040854	0.00067006	-0.00000112	0.00000000
+		-6.27257315	-0.00066651	0.00040846	0.00066992	-0.00000112	0.00000000
+		-6.27257349	-0.00066637	0.00040837	0.00066977	-0.00000112	0.00000000
+		-6.27257383	-0.00066623	0.00040828	0.00066963	-0.00000112	0.00000000
+		-6.27257418	-0.00066608	0.00040819	0.00066949	-0.00000112	0.00000000
+		-6.27257452	-0.00066594	0.00040810	0.00066934	-0.00000112	0.00000000
+		-6.27257486	-0.00066580	0.00040802	0.00066920	-0.00000112	0.00000000
+		-6.27257521	-0.00066565	0.00040793	0.00066905	-0.00000112	0.00000000
+		-6.27257555	-0.00066551	0.00040784	0.00066891	-0.00000112	0.00000000
+		-6.27257589	-0.00066537	0.00040775	0.00066877	-0.00000112	0.00000000
+		-6.27257623	-0.00066522	0.00040766	0.00066862	-0.00000112	0.00000000
+		-6.27257658	-0.00066508	0.00040758	0.00066848	-0.00000112	0.00000000
+		-6.27257692	-0.00066494	0.00040749	0.00066833	-0.00000112	0.00000000
+		-6.27257726	-0.00066480	0.00040740	0.00066819	-0.00000112	0.00000000
+		-6.27257760	-0.00066465	0.00040731	0.00066805	-0.00000112	0.00000000
+		-6.27257795	-0.00066451	0.00040723	0.00066790	-0.00000112	0.00000000
+		-6.27257829	-0.00066437	0.00040714	0.00066776	-0.00000112	0.00000000
+		-6.27257863	-0.00066422	0.00040705	0.00066762	-0.00000112	0.00000000
+		-6.27257897	-0.00066408	0.00040696	0.00066747	-0.00000112	0.00000000
+		-6.27257931	-0.00066394	0.00040688	0.00066733	-0.00000112	0.00000000
+		-6.27257965	-0.00066380	0.00040679	0.00066719	-0.00000112	0.00000000
+		-6.27257999	-0.00066366	0.00040670	0.00066704	-0.00000112	0.00000000
+		-6.27258033	-0.00066351	0.00040662	0.00066690	-0.00000112	0.00000000
+		-6.27258068	-0.00066337	0.00040653	0.00066676	-0.00000112	0.00000000
+		-6.27258102	-0.00066323	0.00040644	0.00066662	-0.00000112	0.00000000
+		-6.27258136	-0.00066309	0.00040635	0.00066647	-0.00000112	0.00000000
+		-6.27258170	-0.00066294	0.00040627	0.00066633	-0.00000112	0.00000000
+		-6.27258204	-0.00066280	0.00040618	0.00066619	-0.00000112	0.00000000
+		-6.27258238	-0.00066266	0.00040609	0.00066604	-0.00000112	0.00000000
+		-6.27258272	-0.00066252	0.00040601	0.00066590	-0.00000112	0.00000000
+		-6.27258306	-0.00066238	0.00040592	0.00066576	-0.00000112	0.00000000
+		-6.27258340	-0.00066224	0.00040583	0.00066562	-0.00000112	0.00000000
+		-6.27258373	-0.00066209	0.00040574	0.00066547	-0.00000112	0.00000000
+		-6.27258407	-0.00066195	0.00040566	0.00066533	-0.00000112	0.00000000
+		-6.27258441	-0.00066181	0.00040557	0.00066519	-0.00000112	0.00000000
+		-6.27258475	-0.00066167	0.00040548	0.00066505	-0.00000112	0.00000000
+		-6.27258509	-0.00066153	0.00040540	0.00066491	-0.00000112	0.00000000
+		-6.27258543	-0.00066139	0.00040531	0.00066476	-0.00000112	0.00000000
+		-6.27258577	-0.00066125	0.00040522	0.00066462	-0.00000112	0.00000000
+		-6.27258611	-0.00066110	0.00040514	0.00066448	-0.00000112	0.00000000
+		-6.27258644	-0.00066096	0.00040505	0.00066434	-0.00000112	0.00000000
+		-6.27258678	-0.00066082	0.00040496	0.00066420	-0.00000112	0.00000000
+		-6.27258712	-0.00066068	0.00040488	0.00066405	-0.00000112	0.00000000
+		-6.27258746	-0.00066054	0.00040479	0.00066391	-0.00000112	0.00000000
+		-6.27258780	-0.00066040	0.00040471	0.00066377	-0.00000112	0.00000000
+		-6.27258813	-0.00066026	0.00040462	0.00066363	-0.00000112	0.00000000
+		-6.27258847	-0.00066012	0.00040453	0.00066349	-0.00000112	0.00000000
+		-6.27258881	-0.00065998	0.00040445	0.00066335	-0.00000112	0.00000000
+		-6.27258914	-0.00065984	0.00040436	0.00066320	-0.00000112	0.00000000
+		-6.27258948	-0.00065970	0.00040427	0.00066306	-0.00000112	0.00000000
+		-6.27258982	-0.00065955	0.00040419	0.00066292	-0.00000112	0.00000000
+		-6.27259015	-0.00065941	0.00040410	0.00066278	-0.00000112	0.00000000
+		-6.27259049	-0.00065927	0.00040401	0.00066264	-0.00000112	0.00000000
+		-6.27259083	-0.00065913	0.00040393	0.00066250	-0.00000112	0.00000000
+		-6.27259116	-0.00065899	0.00040384	0.00066236	-0.00000112	0.00000000
+		-6.27259150	-0.00065885	0.00040376	0.00066222	-0.00000112	0.00000000
+		-6.27259184	-0.00065871	0.00040367	0.00066208	-0.00000112	0.00000000
+		-6.27259217	-0.00065857	0.00040358	0.00066193	-0.00000112	0.00000000
+		-6.27259251	-0.00065843	0.00040350	0.00066179	-0.00000112	0.00000000
+		-6.27259284	-0.00065829	0.00040341	0.00066165	-0.00000112	0.00000000
+		-6.27259318	-0.00065815	0.00040333	0.00066151	-0.00000112	0.00000000
+		-6.27259351	-0.00065801	0.00040324	0.00066137	-0.00000112	0.00000000
+		-6.27259385	-0.00065787	0.00040316	0.00066123	-0.00000112	0.00000000
+		-6.27259418	-0.00065773	0.00040307	0.00066109	-0.00000112	0.00000000
+		-6.27259452	-0.00065759	0.00040298	0.00066095	-0.00000112	0.00000000
+		-6.27259485	-0.00065745	0.00040290	0.00066081	-0.00000112	0.00000000
+		-6.27259519	-0.00065731	0.00040281	0.00066067	-0.00000112	0.00000000
+		-6.27259552	-0.00065717	0.00040273	0.00066053	-0.00000112	0.00000000
+		-6.27259585	-0.00065703	0.00040264	0.00066039	-0.00000112	0.00000000
+		-6.27259619	-0.00065690	0.00040256	0.00066025	-0.00000112	0.00000000
+		-6.27259652	-0.00065676	0.00040247	0.00066011	-0.00000112	0.00000000
+		-6.27259686	-0.00065662	0.00040239	0.00065997	-0.00000112	0.00000000
+		-6.27259719	-0.00065648	0.00040230	0.00065983	-0.00000112	0.00000000
+		-6.27259752	-0.00065634	0.00040221	0.00065969	-0.00000112	0.00000000
+		-6.27259786	-0.00065620	0.00040213	0.00065955	-0.00000112	0.00000000
+		-6.27259819	-0.00065606	0.00040204	0.00065941	-0.00000112	0.00000000
+		-6.27259852	-0.00065592	0.00040196	0.00065927	-0.00000112	0.00000000
+		-6.27259885	-0.00065578	0.00040187	0.00065913	-0.00000112	0.00000000
+		-6.27259919	-0.00065564	0.00040179	0.00065899	-0.00000112	0.00000000
+		-6.27259952	-0.00065550	0.00040170	0.00065885	-0.00000112	0.00000000
+		-6.27259985	-0.00065537	0.00040162	0.00065871	-0.00000112	0.00000000
+		-6.27260018	-0.00065523	0.00040153	0.00065857	-0.00000112	0.00000000
+		-6.27260052	-0.00065509	0.00040145	0.00065843	-0.00000112	0.00000000
+		-6.27260085	-0.00065495	0.00040136	0.00065829	-0.00000112	0.00000000
+		-6.27260118	-0.00065481	0.00040128	0.00065815	-0.00000112	0.00000000
+		-6.27260151	-0.00065467	0.00040119	0.00065801	-0.00000112	0.00000000
+		-6.27260184	-0.00065453	0.00040111	0.00065788	-0.00000112	0.00000000
+		-6.27260217	-0.00065440	0.00040102	0.00065774	-0.00000112	0.00000000
+		-6.27260251	-0.00065426	0.00040094	0.00065760	-0.00000112	0.00000000
+		-6.27260284	-0.00065412	0.00040085	0.00065746	-0.00000112	0.00000000
+		-6.27260317	-0.00065398	0.00040077	0.00065732	-0.00000112	0.00000000
+		-6.27260350	-0.00065384	0.00040068	0.00065718	-0.00000112	0.00000000
+		-6.27260383	-0.00065370	0.00040060	0.00065704	-0.00000112	0.00000000
+		-6.27260416	-0.00065357	0.00040051	0.00065690	-0.00000112	0.00000000
+		-6.27260449	-0.00065343	0.00040043	0.00065676	-0.00000112	0.00000000
+		-6.27260482	-0.00065329	0.00040035	0.00065663	-0.00000112	0.00000000
+		-6.27260515	-0.00065315	0.00040026	0.00065649	-0.00000112	0.00000000
+		-6.27260548	-0.00065302	0.00040018	0.00065635	-0.00000112	0.00000000
+		-6.27260581	-0.00065288	0.00040009	0.00065621	-0.00000112	0.00000000
+		-6.27260614	-0.00065274	0.00040001	0.00065607	-0.00000112	0.00000000
+		-6.27260647	-0.00065260	0.00039992	0.00065593	-0.00000112	0.00000000
+		-6.27260680	-0.00065246	0.00039984	0.00065580	-0.00000112	0.00000000
+		-6.27260713	-0.00065233	0.00039975	0.00065566	-0.00000112	0.00000000
+		-6.27260746	-0.00065219	0.00039967	0.00065552	-0.00000112	0.00000000
+		-6.27260779	-0.00065205	0.00039959	0.00065538	-0.00000112	0.00000000
+		-6.27260812	-0.00065192	0.00039950	0.00065524	-0.00000112	0.00000000
+		-6.27260844	-0.00065178	0.00039942	0.00065510	-0.00000112	0.00000000
+		-6.27260877	-0.00065164	0.00039933	0.00065497	-0.00000112	0.00000000
+		-6.27260910	-0.00065150	0.00039925	0.00065483	-0.00000112	0.00000000
+		-6.27260943	-0.00065137	0.00039917	0.00065469	-0.00000112	0.00000000
+		-6.27260976	-0.00065123	0.00039908	0.00065455	-0.00000112	0.00000000
+		-6.27261009	-0.00065109	0.00039900	0.00065442	-0.00000112	0.00000000
+		-6.27261041	-0.00065096	0.00039891	0.00065428	-0.00000112	0.00000000
+		-6.27261074	-0.00065082	0.00039883	0.00065414	-0.00000112	0.00000000
+		-6.27261107	-0.00065068	0.00039875	0.00065400	-0.00000112	0.00000000
+		-6.27261140	-0.00065055	0.00039866	0.00065387	-0.00000112	0.00000000
+		-6.27261172	-0.00065041	0.00039858	0.00065373	-0.00000112	0.00000000
+		-6.27261205	-0.00065027	0.00039849	0.00065359	-0.00000112	0.00000000
+		-6.27261238	-0.00065014	0.00039841	0.00065345	-0.00000112	0.00000000
+		-6.27261271	-0.00065000	0.00039833	0.00065332	-0.00000112	0.00000000
+		-6.27261303	-0.00064986	0.00039824	0.00065318	-0.00000112	0.00000000
+		-6.27261336	-0.00064973	0.00039816	0.00065304	-0.00000112	0.00000000
+		-6.27261369	-0.00064959	0.00039808	0.00065290	-0.00000112	0.00000000
+		-6.27261401	-0.00064945	0.00039799	0.00065277	-0.00000112	0.00000000
+		-6.27261434	-0.00064932	0.00039791	0.00065263	-0.00000112	0.00000000
+		-6.27261466	-0.00064918	0.00039782	0.00065249	-0.00000112	0.00000000
+		-6.27261499	-0.00064904	0.00039774	0.00065236	-0.00000112	0.00000000
+		-6.27261532	-0.00064891	0.00039766	0.00065222	-0.00000112	0.00000000
+		-6.27261564	-0.00064877	0.00039757	0.00065208	-0.00000112	0.00000000
+		-6.27261597	-0.00064864	0.00039749	0.00065195	-0.00000112	0.00000000
+		-6.27261629	-0.00064850	0.00039741	0.00065181	-0.00000112	0.00000000
+		-6.27261662	-0.00064836	0.00039732	0.00065167	-0.00000112	0.00000000
+		-6.27261694	-0.00064823	0.00039724	0.00065154	-0.00000112	0.00000000
+		-6.27261727	-0.00064809	0.00039716	0.00065140	-0.00000112	0.00000000
+		-6.27261759	-0.00064796	0.00039707	0.00065126	-0.00000112	0.00000000
+		-6.27261792	-0.00064782	0.00039699	0.00065113	-0.00000112	0.00000000
+		-6.27261824	-0.00064769	0.00039691	0.00065099	-0.00000112	0.00000000
+		-6.27261857	-0.00064755	0.00039683	0.00065086	-0.00000112	0.00000000
+		-6.27261889	-0.00064742	0.00039674	0.00065072	-0.00000112	0.00000000
+		-6.27261921	-0.00064728	0.00039666	0.00065058	-0.00000112	0.00000000
+		-6.27261954	-0.00064715	0.00039658	0.00065045	-0.00000112	0.00000000
+		-6.27261986	-0.00064701	0.00039649	0.00065031	-0.00000112	0.00000000
+		-6.27262019	-0.00064687	0.00039641	0.00065018	-0.00000112	0.00000000
+		-6.27262051	-0.00064674	0.00039633	0.00065004	-0.00000112	0.00000000
+		-6.27262083	-0.00064660	0.00039624	0.00064990	-0.00000112	0.00000000
+		-6.27262116	-0.00064647	0.00039616	0.00064977	-0.00000112	0.00000000
+		-6.27262148	-0.00064633	0.00039608	0.00064963	-0.00000112	0.00000000
+		-6.27262180	-0.00064620	0.00039600	0.00064950	-0.00000112	0.00000000
+		-6.27262213	-0.00064606	0.00039591	0.00064936	-0.00000112	0.00000000
+		-6.27262245	-0.00064593	0.00039583	0.00064923	-0.00000112	0.00000000
+		-6.27262277	-0.00064579	0.00039575	0.00064909	-0.00000112	0.00000000
+		-6.27262309	-0.00064566	0.00039567	0.00064895	-0.00000112	0.00000000
+		-6.27262342	-0.00064553	0.00039558	0.00064882	-0.00000112	0.00000000
+		-6.27262374	-0.00064539	0.00039550	0.00064868	-0.00000112	0.00000000
+		-6.27262406	-0.00064526	0.00039542	0.00064855	-0.00000112	0.00000000
+		-6.27262438	-0.00064512	0.00039534	0.00064841	-0.00000112	0.00000000
+		-6.27262470	-0.00064499	0.00039525	0.00064828	-0.00000112	0.00000000
+		-6.27262503	-0.00064485	0.00039517	0.00064814	-0.00000112	0.00000000
+		-6.27262535	-0.00064472	0.00039509	0.00064801	-0.00000112	0.00000000
+		-6.27262567	-0.00064458	0.00039501	0.00064787	-0.00000112	0.00000000
+		-6.27262599	-0.00064445	0.00039492	0.00064774	-0.00000112	0.00000000
+		-6.27262631	-0.00064432	0.00039484	0.00064760	-0.00000112	0.00000000
+		-6.27262663	-0.00064418	0.00039476	0.00064747	-0.00000112	0.00000000
+		-6.27262695	-0.00064405	0.00039468	0.00064733	-0.00000112	0.00000000
+		-6.27262727	-0.00064391	0.00039460	0.00064720	-0.00000112	0.00000000
+		-6.27262759	-0.00064378	0.00039451	0.00064706	-0.00000112	0.00000000
+		-6.27262792	-0.00064365	0.00039443	0.00064693	-0.00000112	0.00000000
+		-6.27262824	-0.00064351	0.00039435	0.00064680	-0.00000112	0.00000000
+		-6.27262856	-0.00064338	0.00039427	0.00064666	-0.00000112	0.00000000
+		-6.27262888	-0.00064325	0.00039418	0.00064653	-0.00000112	0.00000000
+		-6.27262920	-0.00064311	0.00039410	0.00064639	-0.00000112	0.00000000
+		-6.27262952	-0.00064298	0.00039402	0.00064626	-0.00000112	0.00000000
+		-6.27262984	-0.00064284	0.00039394	0.00064612	-0.00000112	0.00000000
+		-6.27263015	-0.00064271	0.00039386	0.00064599	-0.00000112	0.00000000
+		-6.27263047	-0.00064258	0.00039378	0.00064586	-0.00000112	0.00000000
+		-6.27263079	-0.00064244	0.00039369	0.00064572	-0.00000112	0.00000000
+		-6.27263111	-0.00064231	0.00039361	0.00064559	-0.00000112	0.00000000
+		-6.27263143	-0.00064218	0.00039353	0.00064545	-0.00000112	0.00000000
+		-6.27263175	-0.00064204	0.00039345	0.00064532	-0.00000112	0.00000000
+		-6.27263207	-0.00064191	0.00039337	0.00064519	-0.00000112	0.00000000
+		-6.27263239	-0.00064178	0.00039329	0.00064505	-0.00000112	0.00000000
+		-6.27263271	-0.00064165	0.00039320	0.00064492	-0.00000112	0.00000000
+		-6.27263302	-0.00064151	0.00039312	0.00064478	-0.00000112	0.00000000
+		-6.27263334	-0.00064138	0.00039304	0.00064465	-0.00000112	0.00000000
+		-6.27263366	-0.00064125	0.00039296	0.00064452	-0.00000112	0.00000000
+		-6.27263398	-0.00064111	0.00039288	0.00064438	-0.00000112	0.00000000
+		-6.27263430	-0.00064098	0.00039280	0.00064425	-0.00000112	0.00000000
+		-6.27263461	-0.00064085	0.00039271	0.00064412	-0.00000112	0.00000000
+		-6.27263493	-0.00064072	0.00039263	0.00064398	-0.00000112	0.00000000
+		-6.27263525	-0.00064058	0.00039255	0.00064385	-0.00000112	0.00000000
+		-6.27263557	-0.00064045	0.00039247	0.00064372	-0.00000112	0.00000000
+		-6.27263588	-0.00064032	0.00039239	0.00064358	-0.00000112	0.00000000
+		-6.27263620	-0.00064019	0.00039231	0.00064345	-0.00000112	0.00000000
+		-6.27263652	-0.00064005	0.00039223	0.00064332	-0.00000112	0.00000000
+		-6.27263683	-0.00063992	0.00039215	0.00064319	-0.00000112	0.00000000
+		-6.27263715	-0.00063979	0.00039206	0.00064305	-0.00000112	0.00000000
+		-6.27263747	-0.00063966	0.00039198	0.00064292	-0.00000112	0.00000000
+		-6.27263778	-0.00063952	0.00039190	0.00064279	-0.00000112	0.00000000
+		-6.27263810	-0.00063939	0.00039182	0.00064265	-0.00000112	0.00000000
+		-6.27263842	-0.00063926	0.00039174	0.00064252	-0.00000112	0.00000000
+		-6.27263873	-0.00063913	0.00039166	0.00064239	-0.00000112	0.00000000
+		-6.27263905	-0.00063900	0.00039158	0.00064226	-0.00000112	0.00000000
+		-6.27263936	-0.00063886	0.00039150	0.00064212	-0.00000112	0.00000000
+		-6.27263968	-0.00063873	0.00039142	0.00064199	-0.00000112	0.00000000
+		-6.27263999	-0.00063860	0.00039134	0.00064186	-0.00000112	0.00000000
+		-6.27264031	-0.00063847	0.00039126	0.00064173	-0.00000112	0.00000000
+		-6.27264063	-0.00063834	0.00039117	0.00064159	-0.00000112	0.00000000
+		-6.27264094	-0.00063821	0.00039109	0.00064146	-0.00000112	0.00000000
+		-6.27264126	-0.00063807	0.00039101	0.00064133	-0.00000112	0.00000000
+		-6.27264157	-0.00063794	0.00039093	0.00064120	-0.00000112	0.00000000
+		-6.27264188	-0.00063781	0.00039085	0.00064106	-0.00000112	0.00000000
+		-6.27264220	-0.00063768	0.00039077	0.00064093	-0.00000112	0.00000000
+		-6.27264251	-0.00063755	0.00039069	0.00064080	-0.00000113	0.00000000
+		-6.27264283	-0.00063742	0.00039061	0.00064067	-0.00000113	0.00000000
+		-6.27264314	-0.00063729	0.00039053	0.00064054	-0.00000113	0.00000000
+		-6.27264346	-0.00063716	0.00039045	0.00064040	-0.00000113	0.00000000
+		-6.27264377	-0.00063702	0.00039037	0.00064027	-0.00000113	0.00000000
+		-6.27264408	-0.00063689	0.00039029	0.00064014	-0.00000113	0.00000000
+		-6.27264440	-0.00063676	0.00039021	0.00064001	-0.00000113	0.00000000
+		-6.27264471	-0.00063663	0.00039013	0.00063988	-0.00000113	0.00000000
+		-6.27264502	-0.00063650	0.00039005	0.00063975	-0.00000113	0.00000000
+		-6.27264534	-0.00063637	0.00038997	0.00063961	-0.00000113	0.00000000
+		-6.27264565	-0.00063624	0.00038989	0.00063948	-0.00000113	0.00000000
+		-6.27264596	-0.00063611	0.00038981	0.00063935	-0.00000113	0.00000000
+		-6.27264628	-0.00063598	0.00038973	0.00063922	-0.00000113	0.00000000
+		-6.27264659	-0.00063585	0.00038965	0.00063909	-0.00000113	0.00000000
+		-6.27264690	-0.00063572	0.00038957	0.00063896	-0.00000113	0.00000000
+		-6.27264721	-0.00063559	0.00038949	0.00063883	-0.00000113	0.00000000
+		-6.27264753	-0.00063545	0.00038941	0.00063870	-0.00000113	0.00000000
+		-6.27264784	-0.00063532	0.00038933	0.00063856	-0.00000113	0.00000000
+		-6.27264815	-0.00063519	0.00038925	0.00063843	-0.00000113	0.00000000
+		-6.27264846	-0.00063506	0.00038917	0.00063830	-0.00000113	0.00000000
+		-6.27264877	-0.00063493	0.00038909	0.00063817	-0.00000113	0.00000000
+		-6.27264909	-0.00063480	0.00038901	0.00063804	-0.00000113	0.00000000
+		-6.27264940	-0.00063467	0.00038893	0.00063791	-0.00000113	0.00000000
+		-6.27264971	-0.00063454	0.00038885	0.00063778	-0.00000113	0.00000000
+		-6.27265002	-0.00063441	0.00038877	0.00063765	-0.00000113	0.00000000
+		-6.27265033	-0.00063428	0.00038869	0.00063752	-0.00000113	0.00000000
+		-6.27265064	-0.00063415	0.00038861	0.00063739	-0.00000113	0.00000000
+		-6.27265095	-0.00063402	0.00038853	0.00063726	-0.00000113	0.00000000
+		-6.27265126	-0.00063389	0.00038845	0.00063713	-0.00000113	0.00000000
+		-6.27265157	-0.00063376	0.00038837	0.00063700	-0.00000113	0.00000000
+		-6.27265189	-0.00063363	0.00038829	0.00063686	-0.00000113	0.00000000
+		-6.27265220	-0.00063350	0.00038821	0.00063673	-0.00000113	0.00000000
+		-6.27265251	-0.00063337	0.00038813	0.00063660	-0.00000113	0.00000000
+		-6.27265282	-0.00063324	0.00038805	0.00063647	-0.00000113	0.00000000
+		-6.27265313	-0.00063312	0.00038797	0.00063634	-0.00000113	0.00000000
+		-6.27265344	-0.00063299	0.00038789	0.00063621	-0.00000113	0.00000000
+		-6.27265375	-0.00063286	0.00038781	0.00063608	-0.00000113	0.00000000
+		-6.27265406	-0.00063273	0.00038773	0.00063595	-0.00000113	0.00000000
+		-6.27265436	-0.00063260	0.00038765	0.00063582	-0.00000113	0.00000000
+		-6.27265467	-0.00063247	0.00038758	0.00063569	-0.00000113	0.00000000
+		-6.27265498	-0.00063234	0.00038750	0.00063556	-0.00000113	0.00000000
+		-6.27265529	-0.00063221	0.00038742	0.00063543	-0.00000113	0.00000000
+		-6.27265560	-0.00063208	0.00038734	0.00063530	-0.00000113	0.00000000
+		-6.27265591	-0.00063195	0.00038726	0.00063517	-0.00000113	0.00000000
+		-6.27265622	-0.00063182	0.00038718	0.00063504	-0.00000113	0.00000000
+		-6.27265653	-0.00063169	0.00038710	0.00063492	-0.00000113	0.00000000
+		-6.27265684	-0.00063157	0.00038702	0.00063479	-0.00000113	0.00000000
+		-6.27265714	-0.00063144	0.00038694	0.00063466	-0.00000113	0.00000000
+		-6.27265745	-0.00063131	0.00038686	0.00063453	-0.00000113	0.00000000
+		-6.27265776	-0.00063118	0.00038678	0.00063440	-0.00000113	0.00000000
+		-6.27265807	-0.00063105	0.00038671	0.00063427	-0.00000113	0.00000000
+		-6.27265838	-0.00063092	0.00038663	0.00063414	-0.00000113	0.00000000
+		-6.27265868	-0.00063079	0.00038655	0.00063401	-0.00000113	0.00000000
+		-6.27265899	-0.00063066	0.00038647	0.00063388	-0.00000113	0.00000000
+		-6.27265930	-0.00063054	0.00038639	0.00063375	-0.00000113	0.00000000
+		-6.27265961	-0.00063041	0.00038631	0.00063362	-0.00000113	0.00000000
+		-6.27265991	-0.00063028	0.00038623	0.00063349	-0.00000113	0.00000000
+		-6.27266022	-0.00063015	0.00038615	0.00063336	-0.00000113	0.00000000
+		-6.27266053	-0.00063002	0.00038608	0.00063323	-0.00000113	0.00000000
+		-6.27266083	-0.00062989	0.00038600	0.00063311	-0.00000113	0.00000000
+		-6.27266114	-0.00062977	0.00038592	0.00063298	-0.00000113	0.00000000
+		-6.27266145	-0.00062964	0.00038584	0.00063285	-0.00000113	0.00000000
+		-6.27266175	-0.00062951	0.00038576	0.00063272	-0.00000113	0.00000000
+		-6.27266206	-0.00062938	0.00038568	0.00063259	-0.00000113	0.00000000
+		-6.27266237	-0.00062925	0.00038560	0.00063246	-0.00000113	0.00000000
+		-6.27266267	-0.00062913	0.00038553	0.00063233	-0.00000113	0.00000000
+		-6.27266298	-0.00062900	0.00038545	0.00063221	-0.00000113	0.00000000
+		-6.27266329	-0.00062887	0.00038537	0.00063208	-0.00000113	0.00000000
+		-6.27266359	-0.00062874	0.00038529	0.00063195	-0.00000113	0.00000000
+		-6.27266390	-0.00062862	0.00038521	0.00063182	-0.00000113	0.00000000
+		-6.27266420	-0.00062849	0.00038513	0.00063169	-0.00000113	0.00000000
+		-6.27266451	-0.00062836	0.00038506	0.00063156	-0.00000113	0.00000000
+		-6.27266481	-0.00062823	0.00038498	0.00063144	-0.00000113	0.00000000
+		-6.27266512	-0.00062811	0.00038490	0.00063131	-0.00000113	0.00000000
+		-6.27266542	-0.00062798	0.00038482	0.00063118	-0.00000113	0.00000000
+		-6.27266573	-0.00062785	0.00038474	0.00063105	-0.00000113	0.00000000
+		-6.27266603	-0.00062772	0.00038467	0.00063092	-0.00000113	0.00000000
+		-6.27266634	-0.00062760	0.00038459	0.00063080	-0.00000113	0.00000000
+		-6.27266664	-0.00062747	0.00038451	0.00063067	-0.00000113	0.00000000
+		-6.27266695	-0.00062734	0.00038443	0.00063054	-0.00000113	0.00000000
+		-6.27266725	-0.00062721	0.00038435	0.00063041	-0.00000113	0.00000000
+		-6.27266755	-0.00062709	0.00038428	0.00063028	-0.00000113	0.00000000
+		-6.27266786	-0.00062696	0.00038420	0.00063016	-0.00000113	0.00000000
+		-6.27266816	-0.00062683	0.00038412	0.00063003	-0.00000113	0.00000000
+		-6.27266847	-0.00062671	0.00038404	0.00062990	-0.00000113	0.00000000
+		-6.27266877	-0.00062658	0.00038396	0.00062977	-0.00000113	0.00000000
+		-6.27266907	-0.00062645	0.00038389	0.00062965	-0.00000113	0.00000000
+		-6.27266938	-0.00062633	0.00038381	0.00062952	-0.00000113	0.00000000
+		-6.27266968	-0.00062620	0.00038373	0.00062939	-0.00000113	0.00000000
+		-6.27266998	-0.00062607	0.00038365	0.00062926	-0.00000113	0.00000000
+		-6.27267028	-0.00062595	0.00038358	0.00062914	-0.00000113	0.00000000
+		-6.27267059	-0.00062582	0.00038350	0.00062901	-0.00000113	0.00000000
+		-6.27267089	-0.00062569	0.00038342	0.00062888	-0.00000113	0.00000000
+		-6.27267119	-0.00062557	0.00038334	0.00062876	-0.00000113	0.00000000
+		-6.27267150	-0.00062544	0.00038327	0.00062863	-0.00000113	0.00000000
+		-6.27267180	-0.00062531	0.00038319	0.00062850	-0.00000113	0.00000000
+		-6.27267210	-0.00062519	0.00038311	0.00062837	-0.00000113	0.00000000
+		-6.27267240	-0.00062506	0.00038303	0.00062825	-0.00000113	0.00000000
+		-6.27267270	-0.00062494	0.00038296	0.00062812	-0.00000113	0.00000000
+		-6.27267301	-0.00062481	0.00038288	0.00062799	-0.00000113	0.00000000
+		-6.27267331	-0.00062468	0.00038280	0.00062787	-0.00000113	0.00000000
+		-6.27267361	-0.00062456	0.00038272	0.00062774	-0.00000113	0.00000000
+		-6.27267391	-0.00062443	0.00038265	0.00062761	-0.00000113	0.00000000
+		-6.27267421	-0.00062431	0.00038257	0.00062749	-0.00000113	0.00000000
+		-6.27267451	-0.00062418	0.00038249	0.00062736	-0.00000113	0.00000000
+		-6.27267481	-0.00062405	0.00038241	0.00062723	-0.00000113	0.00000000
+		-6.27267512	-0.00062393	0.00038234	0.00062711	-0.00000113	0.00000000
+		-6.27267542	-0.00062380	0.00038226	0.00062698	-0.00000113	0.00000000
+		-6.27267572	-0.00062368	0.00038218	0.00062685	-0.00000113	0.00000000
+		-6.27267602	-0.00062355	0.00038211	0.00062673	-0.00000113	0.00000000
+		-6.27267632	-0.00062342	0.00038203	0.00062660	-0.00000113	0.00000000
+		-6.27267662	-0.00062330	0.00038195	0.00062648	-0.00000113	0.00000000
+		-6.27267692	-0.00062317	0.00038188	0.00062635	-0.00000113	0.00000000
+		-6.27267722	-0.00062305	0.00038180	0.00062622	-0.00000113	0.00000000
+		-6.27267752	-0.00062292	0.00038172	0.00062610	-0.00000113	0.00000000
+		-6.27267782	-0.00062280	0.00038164	0.00062597	-0.00000113	0.00000000
+		-6.27267812	-0.00062267	0.00038157	0.00062585	-0.00000113	0.00000000
+		-6.27267842	-0.00062255	0.00038149	0.00062572	-0.00000113	0.00000000
+		-6.27267872	-0.00062242	0.00038141	0.00062559	-0.00000113	0.00000000
+		-6.27267902	-0.00062230	0.00038134	0.00062547	-0.00000113	0.00000000
+		-6.27267932	-0.00062217	0.00038126	0.00062534	-0.00000113	0.00000000
+		-6.27267962	-0.00062205	0.00038118	0.00062522	-0.00000113	0.00000000
+		-6.27267992	-0.00062192	0.00038111	0.00062509	-0.00000113	0.00000000
+		-6.27268021	-0.00062180	0.00038103	0.00062497	-0.00000113	0.00000000
+		-6.27268051	-0.00062167	0.00038095	0.00062484	-0.00000113	0.00000000
+		-6.27268081	-0.00062155	0.00038088	0.00062471	-0.00000113	0.00000000
+		-6.27268111	-0.00062142	0.00038080	0.00062459	-0.00000113	0.00000000
+		-6.27268141	-0.00062130	0.00038072	0.00062446	-0.00000113	0.00000000
+		-6.27268171	-0.00062117	0.00038065	0.00062434	-0.00000113	0.00000000
+		-6.27268201	-0.00062105	0.00038057	0.00062421	-0.00000113	0.00000000
+		-6.27268230	-0.00062092	0.00038050	0.00062409	-0.00000113	0.00000000
+		-6.27268260	-0.00062080	0.00038042	0.00062396	-0.00000113	0.00000000
+		-6.27268290	-0.00062067	0.00038034	0.00062384	-0.00000113	0.00000000
+		-6.27268320	-0.00062055	0.00038027	0.00062371	-0.00000113	0.00000000
+		-6.27268350	-0.00062043	0.00038019	0.00062359	-0.00000113	0.00000000
+		-6.27268379	-0.00062030	0.00038011	0.00062346	-0.00000113	0.00000000
+		-6.27268409	-0.00062018	0.00038004	0.00062334	-0.00000113	0.00000000
+		-6.27268439	-0.00062005	0.00037996	0.00062321	-0.00000113	0.00000000
+		-6.27268468	-0.00061993	0.00037989	0.00062309	-0.00000113	0.00000000
+		-6.27268498	-0.00061980	0.00037981	0.00062296	-0.00000113	0.00000000
+		-6.27268528	-0.00061968	0.00037973	0.00062284	-0.00000113	0.00000000
+		-6.27268558	-0.00061956	0.00037966	0.00062271	-0.00000113	0.00000000
+		-6.27268587	-0.00061943	0.00037958	0.00062259	-0.00000113	0.00000000
+		-6.27268617	-0.00061931	0.00037951	0.00062246	-0.00000113	0.00000000
+		-6.27268647	-0.00061919	0.00037943	0.00062234	-0.00000113	0.00000000
+		-6.27268676	-0.00061906	0.00037935	0.00062222	-0.00000113	0.00000000
+		-6.27268706	-0.00061894	0.00037928	0.00062209	-0.00000113	0.00000000
+		-6.27268735	-0.00061881	0.00037920	0.00062197	-0.00000113	0.00000000
+		-6.27268765	-0.00061869	0.00037913	0.00062184	-0.00000113	0.00000000
+		-6.27268795	-0.00061857	0.00037905	0.00062172	-0.00000113	0.00000000
+		-6.27268824	-0.00061844	0.00037897	0.00062159	-0.00000113	0.00000000
+		-6.27268854	-0.00061832	0.00037890	0.00062147	-0.00000113	0.00000000
+		-6.27268883	-0.00061820	0.00037882	0.00062135	-0.00000113	0.00000000
+		-6.27268913	-0.00061807	0.00037875	0.00062122	-0.00000113	0.00000000
+		-6.27268942	-0.00061795	0.00037867	0.00062110	-0.00000113	0.00000000
+		-6.27268972	-0.00061783	0.00037860	0.00062097	-0.00000113	0.00000000
+		-6.27269001	-0.00061770	0.00037852	0.00062085	-0.00000113	0.00000000
+		-6.27269031	-0.00061758	0.00037844	0.00062073	-0.00000113	0.00000000
+		-6.27269060	-0.00061746	0.00037837	0.00062060	-0.00000113	0.00000000
+		-6.27269090	-0.00061733	0.00037829	0.00062048	-0.00000113	0.00000000
+		-6.27269119	-0.00061721	0.00037822	0.00062035	-0.00000113	0.00000000
+		-6.27269149	-0.00061709	0.00037814	0.00062023	-0.00000113	0.00000000
+		-6.27269178	-0.00061696	0.00037807	0.00062011	-0.00000113	0.00000000
+		-6.27269208	-0.00061684	0.00037799	0.00061998	-0.00000113	0.00000000
+		-6.27269237	-0.00061672	0.00037792	0.00061986	-0.00000113	0.00000000
+		-6.27269266	-0.00061660	0.00037784	0.00061974	-0.00000113	0.00000000
+		-6.27269296	-0.00061647	0.00037777	0.00061961	-0.00000113	0.00000000
+		-6.27269325	-0.00061635	0.00037769	0.00061949	-0.00000113	0.00000000
+		-6.27269354	-0.00061623	0.00037762	0.00061937	-0.00000113	0.00000000
+		-6.27269384	-0.00061610	0.00037754	0.00061924	-0.00000113	0.00000000
+		-6.27269413	-0.00061598	0.00037746	0.00061912	-0.00000113	0.00000000
+		-6.27269442	-0.00061586	0.00037739	0.00061900	-0.00000113	0.00000000
+		-6.27269472	-0.00061574	0.00037731	0.00061887	-0.00000113	0.00000000
+		-6.27269501	-0.00061561	0.00037724	0.00061875	-0.00000113	0.00000000
+		-6.27269530	-0.00061549	0.00037716	0.00061863	-0.00000113	0.00000000
+		-6.27269560	-0.00061537	0.00037709	0.00061850	-0.00000113	0.00000000
+		-6.27269589	-0.00061525	0.00037701	0.00061838	-0.00000113	0.00000000
+		-6.27269618	-0.00061512	0.00037694	0.00061826	-0.00000113	0.00000000
+		-6.27269647	-0.00061500	0.00037686	0.00061814	-0.00000113	0.00000000
+		-6.27269677	-0.00061488	0.00037679	0.00061801	-0.00000113	0.00000000
+		-6.27269706	-0.00061476	0.00037671	0.00061789	-0.00000113	0.00000000
+		-6.27269735	-0.00061464	0.00037664	0.00061777	-0.00000113	0.00000000
+		-6.27269764	-0.00061451	0.00037656	0.00061764	-0.00000113	0.00000000
+		-6.27269793	-0.00061439	0.00037649	0.00061752	-0.00000113	0.00000000
+		-6.27269823	-0.00061427	0.00037642	0.00061740	-0.00000113	0.00000000
+		-6.27269852	-0.00061415	0.00037634	0.00061728	-0.00000113	0.00000000
+		-6.27269881	-0.00061403	0.00037627	0.00061715	-0.00000113	0.00000000
+		-6.27269910	-0.00061390	0.00037619	0.00061703	-0.00000113	0.00000000
+		-6.27269939	-0.00061378	0.00037612	0.00061691	-0.00000113	0.00000000
+		-6.27269968	-0.00061366	0.00037604	0.00061679	-0.00000113	0.00000000
+		-6.27269997	-0.00061354	0.00037597	0.00061667	-0.00000113	0.00000000
+		-6.27270027	-0.00061342	0.00037589	0.00061654	-0.00000113	0.00000000
+		-6.27270056	-0.00061330	0.00037582	0.00061642	-0.00000113	0.00000000
+		-6.27270085	-0.00061318	0.00037574	0.00061630	-0.00000113	0.00000000
+		-6.27270114	-0.00061305	0.00037567	0.00061618	-0.00000113	0.00000000
+		-6.27270143	-0.00061293	0.00037559	0.00061605	-0.00000113	0.00000000
+		-6.27270172	-0.00061281	0.00037552	0.00061593	-0.00000113	0.00000000
+		-6.27270201	-0.00061269	0.00037545	0.00061581	-0.00000113	0.00000000
+		-6.27270230	-0.00061257	0.00037537	0.00061569	-0.00000113	0.00000000
+		-6.27270259	-0.00061245	0.00037530	0.00061557	-0.00000113	0.00000000
+		-6.27270288	-0.00061233	0.00037522	0.00061545	-0.00000113	0.00000000
+		-6.27270317	-0.00061221	0.00037515	0.00061532	-0.00000113	0.00000000
+		-6.27270346	-0.00061208	0.00037507	0.00061520	-0.00000113	0.00000000
+		-6.27270375	-0.00061196	0.00037500	0.00061508	-0.00000113	0.00000000
+		-6.27270404	-0.00061184	0.00037493	0.00061496	-0.00000113	0.00000000
+		-6.27270433	-0.00061172	0.00037485	0.00061484	-0.00000113	0.00000000
+		-6.27270462	-0.00061160	0.00037478	0.00061472	-0.00000113	0.00000000
+		-6.27270490	-0.00061148	0.00037470	0.00061459	-0.00000113	0.00000000
+		-6.27270519	-0.00061136	0.00037463	0.00061447	-0.00000113	0.00000000
+		-6.27270548	-0.00061124	0.00037456	0.00061435	-0.00000113	0.00000000
+		-6.27270577	-0.00061112	0.00037448	0.00061423	-0.00000113	0.00000000
+		-6.27270606	-0.00061100	0.00037441	0.00061411	-0.00000113	0.00000000
+		-6.27270635	-0.00061088	0.00037433	0.00061399	-0.00000113	0.00000000
+		-6.27270664	-0.00061076	0.00037426	0.00061387	-0.00000113	0.00000000
+		-6.27270692	-0.00061064	0.00037419	0.00061375	-0.00000113	0.00000000
+		-6.27270721	-0.00061051	0.00037411	0.00061362	-0.00000113	0.00000000
+		-6.27270750	-0.00061039	0.00037404	0.00061350	-0.00000113	0.00000000
+		-6.27270779	-0.00061027	0.00037396	0.00061338	-0.00000113	0.00000000
+		-6.27270808	-0.00061015	0.00037389	0.00061326	-0.00000113	0.00000000
+		-6.27270836	-0.00061003	0.00037382	0.00061314	-0.00000113	0.00000000
+		-6.27270865	-0.00060991	0.00037374	0.00061302	-0.00000113	0.00000000
+		-6.27270894	-0.00060979	0.00037367	0.00061290	-0.00000113	0.00000000
+		-6.27270923	-0.00060967	0.00037360	0.00061278	-0.00000113	0.00000000
+		-6.27270951	-0.00060955	0.00037352	0.00061266	-0.00000113	0.00000000
+		-6.27270980	-0.00060943	0.00037345	0.00061254	-0.00000113	0.00000000
+		-6.27271009	-0.00060931	0.00037338	0.00061242	-0.00000113	0.00000000
+		-6.27271038	-0.00060919	0.00037330	0.00061230	-0.00000113	0.00000000
+		-6.27271066	-0.00060907	0.00037323	0.00061218	-0.00000113	0.00000000
+		-6.27271095	-0.00060895	0.00037315	0.00061205	-0.00000113	0.00000000
+		-6.27271124	-0.00060883	0.00037308	0.00061193	-0.00000113	0.00000000
+		-6.27271152	-0.00060871	0.00037301	0.00061181	-0.00000113	0.00000000
+		-6.27271181	-0.00060859	0.00037293	0.00061169	-0.00000113	0.00000000
+		-6.27271209	-0.00060847	0.00037286	0.00061157	-0.00000113	0.00000000
+		-6.27271238	-0.00060836	0.00037279	0.00061145	-0.00000113	0.00000000
+		-6.27271267	-0.00060824	0.00037271	0.00061133	-0.00000113	0.00000000
+		-6.27271295	-0.00060812	0.00037264	0.00061121	-0.00000113	0.00000000
+		-6.27271324	-0.00060800	0.00037257	0.00061109	-0.00000113	0.00000000
+		-6.27271352	-0.00060788	0.00037249	0.00061097	-0.00000113	0.00000000
+		-6.27271381	-0.00060776	0.00037242	0.00061085	-0.00000113	0.00000000
+		-6.27271410	-0.00060764	0.00037235	0.00061073	-0.00000113	0.00000000
+		-6.27271438	-0.00060752	0.00037228	0.00061061	-0.00000113	0.00000000
+		-6.27271467	-0.00060740	0.00037220	0.00061049	-0.00000113	0.00000000
+		-6.27271495	-0.00060728	0.00037213	0.00061037	-0.00000113	0.00000000
+		-6.27271524	-0.00060716	0.00037206	0.00061025	-0.00000113	0.00000000
+		-6.27271552	-0.00060704	0.00037198	0.00061013	-0.00000113	0.00000000
+		-6.27271581	-0.00060692	0.00037191	0.00061001	-0.00000113	0.00000000
+		-6.27271609	-0.00060680	0.00037184	0.00060989	-0.00000113	0.00000000
+		-6.27271637	-0.00060669	0.00037176	0.00060978	-0.00000113	0.00000000
+		-6.27271666	-0.00060657	0.00037169	0.00060966	-0.00000113	0.00000000
+		-6.27271694	-0.00060645	0.00037162	0.00060954	-0.00000113	0.00000000
+		-6.27271723	-0.00060633	0.00037155	0.00060942	-0.00000113	0.00000000
+		-6.27271751	-0.00060621	0.00037147	0.00060930	-0.00000113	0.00000000
+		-6.27271780	-0.00060609	0.00037140	0.00060918	-0.00000113	0.00000000
+		-6.27271808	-0.00060597	0.00037133	0.00060906	-0.00000113	0.00000000
+		-6.27271836	-0.00060585	0.00037125	0.00060894	-0.00000113	0.00000000
+		-6.27271865	-0.00060574	0.00037118	0.00060882	-0.00000113	0.00000000
+		-6.27271893	-0.00060562	0.00037111	0.00060870	-0.00000113	0.00000000
+		-6.27271921	-0.00060550	0.00037104	0.00060858	-0.00000113	0.00000000
+		-6.27271950	-0.00060538	0.00037096	0.00060846	-0.00000113	0.00000000
+		-6.27271978	-0.00060526	0.00037089	0.00060834	-0.00000113	0.00000000
+		-6.27272006	-0.00060514	0.00037082	0.00060823	-0.00000113	0.00000000
+		-6.27272035	-0.00060503	0.00037075	0.00060811	-0.00000113	0.00000000
+		-6.27272063	-0.00060491	0.00037067	0.00060799	-0.00000113	0.00000000
+		-6.27272091	-0.00060479	0.00037060	0.00060787	-0.00000113	0.00000000
+		-6.27272120	-0.00060467	0.00037053	0.00060775	-0.00000113	0.00000000
+		-6.27272148	-0.00060455	0.00037046	0.00060763	-0.00000113	0.00000000
+		-6.27272176	-0.00060444	0.00037038	0.00060751	-0.00000113	0.00000000
+		-6.27272204	-0.00060432	0.00037031	0.00060739	-0.00000113	0.00000000
+		-6.27272232	-0.00060420	0.00037024	0.00060728	-0.00000113	0.00000000
+		-6.27272261	-0.00060408	0.00037017	0.00060716	-0.00000113	0.00000000
+		-6.27272289	-0.00060396	0.00037009	0.00060704	-0.00000113	0.00000000
+		-6.27272317	-0.00060385	0.00037002	0.00060692	-0.00000113	0.00000000
+		-6.27272345	-0.00060373	0.00036995	0.00060680	-0.00000113	0.00000000
+		-6.27272373	-0.00060361	0.00036988	0.00060668	-0.00000113	0.00000000
+		-6.27272402	-0.00060349	0.00036981	0.00060657	-0.00000113	0.00000000
+		-6.27272430	-0.00060337	0.00036973	0.00060645	-0.00000113	0.00000000
+		-6.27272458	-0.00060326	0.00036966	0.00060633	-0.00000113	0.00000000
+		-6.27272486	-0.00060314	0.00036959	0.00060621	-0.00000113	0.00000000
+		-6.27272514	-0.00060302	0.00036952	0.00060609	-0.00000113	0.00000000
+		-6.27272542	-0.00060290	0.00036945	0.00060597	-0.00000113	0.00000000
+		-6.27272570	-0.00060279	0.00036937	0.00060586	-0.00000113	0.00000000
+		-6.27272598	-0.00060267	0.00036930	0.00060574	-0.00000113	0.00000000
+		-6.27272626	-0.00060255	0.00036923	0.00060562	-0.00000113	0.00000000
+		-6.27272654	-0.00060244	0.00036916	0.00060550	-0.00000113	0.00000000
+		-6.27272683	-0.00060232	0.00036909	0.00060538	-0.00000113	0.00000000
+		-6.27272711	-0.00060220	0.00036901	0.00060527	-0.00000113	0.00000000
+		-6.27272739	-0.00060208	0.00036894	0.00060515	-0.00000113	0.00000000
+		-6.27272767	-0.00060197	0.00036887	0.00060503	-0.00000113	0.00000000
+		-6.27272795	-0.00060185	0.00036880	0.00060491	-0.00000113	0.00000000
+		-6.27272823	-0.00060173	0.00036873	0.00060480	-0.00000113	0.00000000
+		-6.27272851	-0.00060162	0.00036865	0.00060468	-0.00000113	0.00000000
+		-6.27272879	-0.00060150	0.00036858	0.00060456	-0.00000113	0.00000000
+		-6.27272907	-0.00060138	0.00036851	0.00060444	-0.00000113	0.00000000
+		-6.27272934	-0.00060127	0.00036844	0.00060433	-0.00000113	0.00000000
+		-6.27272962	-0.00060115	0.00036837	0.00060421	-0.00000113	0.00000000
+		-6.27272990	-0.00060103	0.00036830	0.00060409	-0.00000113	0.00000000
+		-6.27273018	-0.00060092	0.00036823	0.00060397	-0.00000113	0.00000000
+		-6.27273046	-0.00060080	0.00036815	0.00060386	-0.00000113	0.00000000
+		-6.27273074	-0.00060068	0.00036808	0.00060374	-0.00000113	0.00000000
+		-6.27273102	-0.00060057	0.00036801	0.00060362	-0.00000113	0.00000000
+		-6.27273130	-0.00060045	0.00036794	0.00060351	-0.00000113	0.00000000
+		-6.27273158	-0.00060033	0.00036787	0.00060339	-0.00000113	0.00000000
+		-6.27273186	-0.00060022	0.00036780	0.00060327	-0.00000113	0.00000000
+		-6.27273213	-0.00060010	0.00036773	0.00060315	-0.00000113	0.00000000
+		-6.27273241	-0.00059998	0.00036765	0.00060304	-0.00000113	0.00000000
+		-6.27273269	-0.00059987	0.00036758	0.00060292	-0.00000113	0.00000000
+		-6.27273297	-0.00059975	0.00036751	0.00060280	-0.00000113	0.00000000
+		-6.27273325	-0.00059963	0.00036744	0.00060269	-0.00000113	0.00000000
+		-6.27273352	-0.00059952	0.00036737	0.00060257	-0.00000113	0.00000000
+		-6.27273380	-0.00059940	0.00036730	0.00060245	-0.00000113	0.00000000
+		-6.27273408	-0.00059929	0.00036723	0.00060234	-0.00000113	0.00000000
+		-6.27273436	-0.00059917	0.00036716	0.00060222	-0.00000113	0.00000000
+		-6.27273463	-0.00059905	0.00036708	0.00060210	-0.00000113	0.00000000
+		-6.27273491	-0.00059894	0.00036701	0.00060199	-0.00000113	0.00000000
+		-6.27273519	-0.00059882	0.00036694	0.00060187	-0.00000113	0.00000000
+		-6.27273547	-0.00059871	0.00036687	0.00060175	-0.00000113	0.00000000
+		-6.27273574	-0.00059859	0.00036680	0.00060164	-0.00000113	0.00000000
+		-6.27273602	-0.00059848	0.00036673	0.00060152	-0.00000113	0.00000000
+		-6.27273630	-0.00059836	0.00036666	0.00060141	-0.00000113	0.00000000
+		-6.27273657	-0.00059824	0.00036659	0.00060129	-0.00000113	0.00000000
+		-6.27273685	-0.00059813	0.00036652	0.00060117	-0.00000113	0.00000000
+		-6.27273713	-0.00059801	0.00036645	0.00060106	-0.00000113	0.00000000
+		-6.27273740	-0.00059790	0.00036637	0.00060094	-0.00000113	0.00000000
+		-6.27273768	-0.00059778	0.00036630	0.00060082	-0.00000113	0.00000000
+		-6.27273796	-0.00059767	0.00036623	0.00060071	-0.00000113	0.00000000
+		-6.27273823	-0.00059755	0.00036616	0.00060059	-0.00000113	0.00000000
+		-6.27273851	-0.00059744	0.00036609	0.00060048	-0.00000113	0.00000000
+		-6.27273878	-0.00059732	0.00036602	0.00060036	-0.00000113	0.00000000
+		-6.27273906	-0.00059721	0.00036595	0.00060025	-0.00000113	0.00000000
+		-6.27273933	-0.00059709	0.00036588	0.00060013	-0.00000113	0.00000000
+		-6.27273961	-0.00059698	0.00036581	0.00060001	-0.00000113	0.00000000
+		-6.27273989	-0.00059686	0.00036574	0.00059990	-0.00000113	0.00000000
+		-6.27274016	-0.00059674	0.00036567	0.00059978	-0.00000113	0.00000000
+		-6.27274044	-0.00059663	0.00036560	0.00059967	-0.00000113	0.00000000
+		-6.27274071	-0.00059651	0.00036553	0.00059955	-0.00000113	0.00000000
+		-6.27274099	-0.00059640	0.00036546	0.00059944	-0.00000113	0.00000000
+		-6.27274126	-0.00059629	0.00036539	0.00059932	-0.00000113	0.00000000
+		-6.27274154	-0.00059617	0.00036532	0.00059920	-0.00000113	0.00000000
+		-6.27274181	-0.00059606	0.00036525	0.00059909	-0.00000113	0.00000000
+		-6.27274208	-0.00059594	0.00036517	0.00059897	-0.00000113	0.00000000
+		-6.27274236	-0.00059583	0.00036510	0.00059886	-0.00000113	0.00000000
+		-6.27274263	-0.00059571	0.00036503	0.00059874	-0.00000113	0.00000000
+		-6.27274291	-0.00059560	0.00036496	0.00059863	-0.00000113	0.00000000
+		-6.27274318	-0.00059548	0.00036489	0.00059851	-0.00000113	0.00000000
+		-6.27274346	-0.00059537	0.00036482	0.00059840	-0.00000113	0.00000000
+		-6.27274373	-0.00059525	0.00036475	0.00059828	-0.00000113	0.00000000
+		-6.27274400	-0.00059514	0.00036468	0.00059817	-0.00000113	0.00000000
+		-6.27274428	-0.00059502	0.00036461	0.00059805	-0.00000113	0.00000000
+		-6.27274455	-0.00059491	0.00036454	0.00059794	-0.00000113	0.00000000
+		-6.27274482	-0.00059480	0.00036447	0.00059782	-0.00000113	0.00000000
+		-6.27274510	-0.00059468	0.00036440	0.00059771	-0.00000113	0.00000000
+		-6.27274537	-0.00059457	0.00036433	0.00059759	-0.00000113	0.00000000
+		-6.27274564	-0.00059445	0.00036426	0.00059748	-0.00000113	0.00000000
+		-6.27274592	-0.00059434	0.00036419	0.00059736	-0.00000113	0.00000000
+		-6.27274619	-0.00059422	0.00036412	0.00059725	-0.00000113	0.00000000
+		-6.27274646	-0.00059411	0.00036405	0.00059713	-0.00000113	0.00000000
+		-6.27274674	-0.00059400	0.00036398	0.00059702	-0.00000113	0.00000000
+		-6.27274701	-0.00059388	0.00036391	0.00059690	-0.00000113	0.00000000
+		-6.27274728	-0.00059377	0.00036384	0.00059679	-0.00000113	0.00000000
+		-6.27274755	-0.00059365	0.00036377	0.00059668	-0.00000113	0.00000000
+		-6.27274783	-0.00059354	0.00036370	0.00059656	-0.00000113	0.00000000
+		-6.27274810	-0.00059343	0.00036363	0.00059645	-0.00000113	0.00000000
+		-6.27274837	-0.00059331	0.00036356	0.00059633	-0.00000113	0.00000000
+		-6.27274864	-0.00059320	0.00036349	0.00059622	-0.00000113	0.00000000
+		-6.27274891	-0.00059309	0.00036342	0.00059610	-0.00000113	0.00000000
+		-6.27274919	-0.00059297	0.00036335	0.00059599	-0.00000113	0.00000000
+		-6.27274946	-0.00059286	0.00036329	0.00059588	-0.00000113	0.00000000
+		-6.27274973	-0.00059275	0.00036322	0.00059576	-0.00000113	0.00000000
+		-6.27275000	-0.00059263	0.00036315	0.00059565	-0.00000113	0.00000000
+		-6.27275027	-0.00059252	0.00036308	0.00059553	-0.00000113	0.00000000
+		-6.27275054	-0.00059241	0.00036301	0.00059542	-0.00000113	0.00000000
+		-6.27275081	-0.00059229	0.00036294	0.00059531	-0.00000113	0.00000000
+		-6.27275109	-0.00059218	0.00036287	0.00059519	-0.00000113	0.00000000
+		-6.27275136	-0.00059207	0.00036280	0.00059508	-0.00000113	0.00000000
+		-6.27275163	-0.00059195	0.00036273	0.00059496	-0.00000113	0.00000000
+		-6.27275190	-0.00059184	0.00036266	0.00059485	-0.00000113	0.00000000
+		-6.27275217	-0.00059173	0.00036259	0.00059474	-0.00000113	0.00000000
+		-6.27275244	-0.00059161	0.00036252	0.00059462	-0.00000113	0.00000000
+		-6.27275271	-0.00059150	0.00036245	0.00059451	-0.00000113	0.00000000
+		-6.27275298	-0.00059139	0.00036238	0.00059440	-0.00000113	0.00000000
+		-6.27275325	-0.00059127	0.00036231	0.00059428	-0.00000113	0.00000000
+		-6.27275352	-0.00059116	0.00036224	0.00059417	-0.00000113	0.00000000
+		-6.27275379	-0.00059105	0.00036217	0.00059406	-0.00000113	0.00000000
+		-6.27275406	-0.00059094	0.00036211	0.00059394	-0.00000113	0.00000000
+		-6.27275433	-0.00059082	0.00036204	0.00059383	-0.00000113	0.00000000
+		-6.27275460	-0.00059071	0.00036197	0.00059372	-0.00000113	0.00000000
+		-6.27275487	-0.00059060	0.00036190	0.00059360	-0.00000113	0.00000000
+		-6.27275514	-0.00059048	0.00036183	0.00059349	-0.00000113	0.00000000
+		-6.27275541	-0.00059037	0.00036176	0.00059338	-0.00000113	0.00000000
+		-6.27275568	-0.00059026	0.00036169	0.00059326	-0.00000113	0.00000000
+		-6.27275595	-0.00059015	0.00036162	0.00059315	-0.00000113	0.00000000
+		-6.27275622	-0.00059003	0.00036155	0.00059304	-0.00000113	0.00000000
+		-6.27275649	-0.00058992	0.00036148	0.00059292	-0.00000113	0.00000000
+		-6.27275675	-0.00058981	0.00036141	0.00059281	-0.00000113	0.00000000
+		-6.27275702	-0.00058970	0.00036135	0.00059270	-0.00000113	0.00000000
+		-6.27275729	-0.00058958	0.00036128	0.00059258	-0.00000113	0.00000000
+		-6.27275756	-0.00058947	0.00036121	0.00059247	-0.00000113	0.00000000
+		-6.27275783	-0.00058936	0.00036114	0.00059236	-0.00000113	0.00000000
+		-6.27275810	-0.00058925	0.00036107	0.00059225	-0.00000113	0.00000000
+		-6.27275837	-0.00058914	0.00036100	0.00059213	-0.00000113	0.00000000
+		-6.27275863	-0.00058902	0.00036093	0.00059202	-0.00000113	0.00000000
+		-6.27275890	-0.00058891	0.00036086	0.00059191	-0.00000113	0.00000000
+		-6.27275917	-0.00058880	0.00036080	0.00059180	-0.00000113	0.00000000
+		-6.27275944	-0.00058869	0.00036073	0.00059168	-0.00000113	0.00000000
+		-6.27275971	-0.00058858	0.00036066	0.00059157	-0.00000113	0.00000000
+		-6.27275997	-0.00058846	0.00036059	0.00059146	-0.00000113	0.00000000
+		-6.27276024	-0.00058835	0.00036052	0.00059135	-0.00000113	0.00000000
+		-6.27276051	-0.00058824	0.00036045	0.00059123	-0.00000113	0.00000000
+		-6.27276078	-0.00058813	0.00036038	0.00059112	-0.00000113	0.00000000
+		-6.27276104	-0.00058802	0.00036032	0.00059101	-0.00000113	0.00000000
+		-6.27276131	-0.00058790	0.00036025	0.00059090	-0.00000113	0.00000000
+		-6.27276158	-0.00058779	0.00036018	0.00059078	-0.00000113	0.00000000
+		-6.27276184	-0.00058768	0.00036011	0.00059067	-0.00000113	0.00000000
+		-6.27276211	-0.00058757	0.00036004	0.00059056	-0.00000113	0.00000000
+		-6.27276238	-0.00058746	0.00035997	0.00059045	-0.00000113	0.00000000
+		-6.27276265	-0.00058735	0.00035991	0.00059034	-0.00000113	0.00000000
+		-6.27276291	-0.00058724	0.00035984	0.00059022	-0.00000113	0.00000000
+		-6.27276318	-0.00058712	0.00035977	0.00059011	-0.00000113	0.00000000
+		-6.27276344	-0.00058701	0.00035970	0.00059000	-0.00000113	0.00000000
+		-6.27276371	-0.00058690	0.00035963	0.00058989	-0.00000113	0.00000000
+		-6.27276398	-0.00058679	0.00035956	0.00058978	-0.00000113	0.00000000
+		-6.27276424	-0.00058668	0.00035950	0.00058966	-0.00000113	0.00000000
+		-6.27276451	-0.00058657	0.00035943	0.00058955	-0.00000113	0.00000000
+		-6.27276478	-0.00058646	0.00035936	0.00058944	-0.00000113	0.00000000
+		-6.27276504	-0.00058635	0.00035929	0.00058933	-0.00000113	0.00000000
+		-6.27276531	-0.00058623	0.00035922	0.00058922	-0.00000113	0.00000000
+		-6.27276557	-0.00058612	0.00035916	0.00058911	-0.00000113	0.00000000
+		-6.27276584	-0.00058601	0.00035909	0.00058899	-0.00000113	0.00000000
+		-6.27276610	-0.00058590	0.00035902	0.00058888	-0.00000113	0.00000000
+		-6.27276637	-0.00058579	0.00035895	0.00058877	-0.00000113	0.00000000
+		-6.27276663	-0.00058568	0.00035888	0.00058866	-0.00000113	0.00000000
+		-6.27276690	-0.00058557	0.00035882	0.00058855	-0.00000113	0.00000000
+		-6.27276716	-0.00058546	0.00035875	0.00058844	-0.00000113	0.00000000
+		-6.27276743	-0.00058535	0.00035868	0.00058833	-0.00000113	0.00000000
+		-6.27276769	-0.00058524	0.00035861	0.00058821	-0.00000113	0.00000000
+		-6.27276796	-0.00058513	0.00035854	0.00058810	-0.00000113	0.00000000
+		-6.27276822	-0.00058502	0.00035848	0.00058799	-0.00000113	0.00000000
+		-6.27276849	-0.00058491	0.00035841	0.00058788	-0.00000113	0.00000000
+		-6.27276875	-0.00058480	0.00035834	0.00058777	-0.00000113	0.00000000
+		-6.27276902	-0.00058468	0.00035827	0.00058766	-0.00000113	0.00000000
+		-6.27276928	-0.00058457	0.00035820	0.00058755	-0.00000113	0.00000000
+		-6.27276954	-0.00058446	0.00035814	0.00058744	-0.00000113	0.00000000
+		-6.27276981	-0.00058435	0.00035807	0.00058733	-0.00000113	0.00000000
+		-6.27277007	-0.00058424	0.00035800	0.00058721	-0.00000113	0.00000000
+		-6.27277034	-0.00058413	0.00035793	0.00058710	-0.00000113	0.00000000
+		-6.27277060	-0.00058402	0.00035787	0.00058699	-0.00000113	0.00000000
+		-6.27277086	-0.00058391	0.00035780	0.00058688	-0.00000113	0.00000000
+		-6.27277113	-0.00058380	0.00035773	0.00058677	-0.00000113	0.00000000
+		-6.27277139	-0.00058369	0.00035766	0.00058666	-0.00000113	0.00000000
+		-6.27277165	-0.00058358	0.00035760	0.00058655	-0.00000113	0.00000000
+		-6.27277192	-0.00058347	0.00035753	0.00058644	-0.00000113	0.00000000
+		-6.27277218	-0.00058336	0.00035746	0.00058633	-0.00000113	0.00000000
+		-6.27277244	-0.00058325	0.00035739	0.00058622	-0.00000113	0.00000000
+		-6.27277270	-0.00058314	0.00035733	0.00058611	-0.00000113	0.00000000
+		-6.27277297	-0.00058303	0.00035726	0.00058600	-0.00000113	0.00000000
+		-6.27277323	-0.00058292	0.00035719	0.00058589	-0.00000113	0.00000000
+		-6.27277349	-0.00058281	0.00035712	0.00058578	-0.00000113	0.00000000
+		-6.27277376	-0.00058270	0.00035706	0.00058567	-0.00000113	0.00000000
+		-6.27277402	-0.00058259	0.00035699	0.00058556	-0.00000113	0.00000000
+		-6.27277428	-0.00058248	0.00035692	0.00058545	-0.00000113	0.00000000
+		-6.27277454	-0.00058237	0.00035686	0.00058534	-0.00000113	0.00000000
+		-6.27277480	-0.00058227	0.00035679	0.00058523	-0.00000113	0.00000000
+		-6.27277507	-0.00058216	0.00035672	0.00058512	-0.00000113	0.00000000
+		-6.27277533	-0.00058205	0.00035665	0.00058501	-0.00000113	0.00000000
+		-6.27277559	-0.00058194	0.00035659	0.00058490	-0.00000113	0.00000000
+		-6.27277585	-0.00058183	0.00035652	0.00058479	-0.00000113	0.00000000
+		-6.27277611	-0.00058172	0.00035645	0.00058468	-0.00000113	0.00000000
+		-6.27277637	-0.00058161	0.00035639	0.00058457	-0.00000113	0.00000000
+		-6.27277664	-0.00058150	0.00035632	0.00058446	-0.00000113	0.00000000
+		-6.27277690	-0.00058139	0.00035625	0.00058435	-0.00000113	0.00000000
+		-6.27277716	-0.00058128	0.00035619	0.00058424	-0.00000113	0.00000000
+		-6.27277742	-0.00058117	0.00035612	0.00058413	-0.00000113	0.00000000
+		-6.27277768	-0.00058106	0.00035605	0.00058402	-0.00000113	0.00000000
+		-6.27277794	-0.00058095	0.00035598	0.00058391	-0.00000113	0.00000000
+		-6.27277820	-0.00058084	0.00035592	0.00058380	-0.00000113	0.00000000
+		-6.27277846	-0.00058074	0.00035585	0.00058369	-0.00000113	0.00000000
+		-6.27277872	-0.00058063	0.00035578	0.00058358	-0.00000113	0.00000000
+		-6.27277898	-0.00058052	0.00035572	0.00058347	-0.00000113	0.00000000
+		-6.27277924	-0.00058041	0.00035565	0.00058336	-0.00000113	0.00000000
+		-6.27277950	-0.00058030	0.00035558	0.00058325	-0.00000113	0.00000000
+		-6.27277977	-0.00058019	0.00035552	0.00058314	-0.00000113	0.00000000
+		-6.27278003	-0.00058008	0.00035545	0.00058303	-0.00000113	0.00000000
+		-6.27278029	-0.00057997	0.00035538	0.00058292	-0.00000113	0.00000000
+		-6.27278055	-0.00057987	0.00035532	0.00058281	-0.00000113	0.00000000
+		-6.27278080	-0.00057976	0.00035525	0.00058271	-0.00000113	0.00000000
+		-6.27278106	-0.00057965	0.00035518	0.00058260	-0.00000113	0.00000000
+		-6.27278132	-0.00057954	0.00035512	0.00058249	-0.00000113	0.00000000
+		-6.27278158	-0.00057943	0.00035505	0.00058238	-0.00000113	0.00000000
+		-6.27278184	-0.00057932	0.00035498	0.00058227	-0.00000113	0.00000000
+		-6.27278210	-0.00057921	0.00035492	0.00058216	-0.00000113	0.00000000
+		-6.27278236	-0.00057911	0.00035485	0.00058205	-0.00000113	0.00000000
+		-6.27278262	-0.00057900	0.00035479	0.00058194	-0.00000113	0.00000000
+		-6.27278288	-0.00057889	0.00035472	0.00058183	-0.00000113	0.00000000
+		-6.27278314	-0.00057878	0.00035465	0.00058172	-0.00000113	0.00000000
+		-6.27278340	-0.00057867	0.00035459	0.00058162	-0.00000113	0.00000000
+		-6.27278366	-0.00057857	0.00035452	0.00058151	-0.00000113	0.00000000
+		-6.27278392	-0.00057846	0.00035445	0.00058140	-0.00000113	0.00000000
+		-6.27278417	-0.00057835	0.00035439	0.00058129	-0.00000113	0.00000000
+		-6.27278443	-0.00057824	0.00035432	0.00058118	-0.00000113	0.00000000
+		-6.27278469	-0.00057813	0.00035425	0.00058107	-0.00000113	0.00000000
+		-6.27278495	-0.00057802	0.00035419	0.00058096	-0.00000113	0.00000000
+		-6.27278521	-0.00057792	0.00035412	0.00058086	-0.00000113	0.00000000
+		-6.27278547	-0.00057781	0.00035406	0.00058075	-0.00000113	0.00000000
+		-6.27278572	-0.00057770	0.00035399	0.00058064	-0.00000113	0.00000000
+		-6.27278598	-0.00057759	0.00035392	0.00058053	-0.00000113	0.00000000
+		-6.27278624	-0.00057749	0.00035386	0.00058042	-0.00000113	0.00000000
+		-6.27278650	-0.00057738	0.00035379	0.00058031	-0.00000113	0.00000000
+		-6.27278675	-0.00057727	0.00035373	0.00058021	-0.00000113	0.00000000
+		-6.27278701	-0.00057716	0.00035366	0.00058010	-0.00000113	0.00000000
+		-6.27278727	-0.00057706	0.00035359	0.00057999	-0.00000113	0.00000000
+		-6.27278753	-0.00057695	0.00035353	0.00057988	-0.00000113	0.00000000
+		-6.27278778	-0.00057684	0.00035346	0.00057977	-0.00000113	0.00000000
+		-6.27278804	-0.00057673	0.00035340	0.00057966	-0.00000113	0.00000000
+		-6.27278830	-0.00057663	0.00035333	0.00057956	-0.00000113	0.00000000
+		-6.27278855	-0.00057652	0.00035326	0.00057945	-0.00000113	0.00000000
+		-6.27278881	-0.00057641	0.00035320	0.00057934	-0.00000113	0.00000000
+		-6.27278907	-0.00057630	0.00035313	0.00057923	-0.00000113	0.00000000
+		-6.27278933	-0.00057620	0.00035307	0.00057913	-0.00000113	0.00000000
+		-6.27278958	-0.00057609	0.00035300	0.00057902	-0.00000113	0.00000000
+		-6.27278984	-0.00057598	0.00035294	0.00057891	-0.00000113	0.00000000
+		-6.27279009	-0.00057587	0.00035287	0.00057880	-0.00000113	0.00000000
+		-6.27279035	-0.00057577	0.00035280	0.00057869	-0.00000113	0.00000000
+		-6.27279061	-0.00057566	0.00035274	0.00057859	-0.00000113	0.00000000
+		-6.27279086	-0.00057555	0.00035267	0.00057848	-0.00000113	0.00000000
+		-6.27279112	-0.00057545	0.00035261	0.00057837	-0.00000113	0.00000000
+		-6.27279137	-0.00057534	0.00035254	0.00057826	-0.00000113	0.00000000
+		-6.27279163	-0.00057523	0.00035248	0.00057816	-0.00000113	0.00000000
+		-6.27279189	-0.00057513	0.00035241	0.00057805	-0.00000113	0.00000000
+		-6.27279214	-0.00057502	0.00035235	0.00057794	-0.00000113	0.00000000
+		-6.27279240	-0.00057491	0.00035228	0.00057783	-0.00000113	0.00000000
+		-6.27279265	-0.00057480	0.00035221	0.00057773	-0.00000113	0.00000000
+		-6.27279291	-0.00057470	0.00035215	0.00057762	-0.00000113	0.00000000
+		-6.27279316	-0.00057459	0.00035208	0.00057751	-0.00000113	0.00000000
+		-6.27279342	-0.00057448	0.00035202	0.00057741	-0.00000113	0.00000000
+		-6.27279367	-0.00057438	0.00035195	0.00057730	-0.00000113	0.00000000
+		-6.27279393	-0.00057427	0.00035189	0.00057719	-0.00000113	0.00000000
+		-6.27279418	-0.00057417	0.00035182	0.00057708	-0.00000113	0.00000000
+		-6.27279444	-0.00057406	0.00035176	0.00057698	-0.00000113	0.00000000
+		-6.27279469	-0.00057395	0.00035169	0.00057687	-0.00000113	0.00000000
+		-6.27279495	-0.00057385	0.00035163	0.00057676	-0.00000113	0.00000000
+		-6.27279520	-0.00057374	0.00035156	0.00057666	-0.00000113	0.00000000
+		-6.27279546	-0.00057363	0.00035150	0.00057655	-0.00000113	0.00000000
+		-6.27279571	-0.00057353	0.00035143	0.00057644	-0.00000113	0.00000000
+		-6.27279596	-0.00057342	0.00035137	0.00057634	-0.00000113	0.00000000
+		-6.27279622	-0.00057331	0.00035130	0.00057623	-0.00000113	0.00000000
+		-6.27279647	-0.00057321	0.00035124	0.00057612	-0.00000113	0.00000000
+		-6.27279673	-0.00057310	0.00035117	0.00057602	-0.00000113	0.00000000
+		-6.27279698	-0.00057300	0.00035111	0.00057591	-0.00000113	0.00000000
+		-6.27279723	-0.00057289	0.00035104	0.00057580	-0.00000113	0.00000000
+		-6.27279749	-0.00057278	0.00035098	0.00057570	-0.00000113	0.00000000
+		-6.27279774	-0.00057268	0.00035091	0.00057559	-0.00000113	0.00000000
+		-6.27279799	-0.00057257	0.00035085	0.00057548	-0.00000113	0.00000000
+		-6.27279825	-0.00057247	0.00035078	0.00057538	-0.00000113	0.00000000
+		-6.27279850	-0.00057236	0.00035072	0.00057527	-0.00000113	0.00000000
+		-6.27279875	-0.00057225	0.00035065	0.00057516	-0.00000113	0.00000000
+		-6.27279901	-0.00057215	0.00035059	0.00057506	-0.00000113	0.00000000
+		-6.27279926	-0.00057204	0.00035052	0.00057495	-0.00000113	0.00000000
+		-6.27279951	-0.00057194	0.00035046	0.00057484	-0.00000113	0.00000000
+		-6.27279977	-0.00057183	0.00035039	0.00057474	-0.00000113	0.00000000
+		-6.27280002	-0.00057173	0.00035033	0.00057463	-0.00000113	0.00000000
+		-6.27280027	-0.00057162	0.00035026	0.00057453	-0.00000113	0.00000000
+		-6.27280052	-0.00057152	0.00035020	0.00057442	-0.00000113	0.00000000
+		-6.27280078	-0.00057141	0.00035013	0.00057431	-0.00000113	0.00000000
+		-6.27280103	-0.00057130	0.00035007	0.00057421	-0.00000113	0.00000000
+		-6.27280128	-0.00057120	0.00035000	0.00057410	-0.00000113	0.00000000
+		-6.27280153	-0.00057109	0.00034994	0.00057400	-0.00000113	0.00000000
+		-6.27280178	-0.00057099	0.00034987	0.00057389	-0.00000113	0.00000000
+		-6.27280204	-0.00057088	0.00034981	0.00057378	-0.00000113	0.00000000
+		-6.27280229	-0.00057078	0.00034974	0.00057368	-0.00000113	0.00000000
+		-6.27280254	-0.00057067	0.00034968	0.00057357	-0.00000113	0.00000000
+		-6.27280279	-0.00057057	0.00034962	0.00057347	-0.00000113	0.00000000
+		-6.27280304	-0.00057046	0.00034955	0.00057336	-0.00000113	0.00000000
+		-6.27280329	-0.00057036	0.00034949	0.00057326	-0.00000113	0.00000000
+		-6.27280355	-0.00057025	0.00034942	0.00057315	-0.00000113	0.00000000
+		-6.27280380	-0.00057015	0.00034936	0.00057304	-0.00000113	0.00000000
+		-6.27280405	-0.00057004	0.00034929	0.00057294	-0.00000113	0.00000000
+		-6.27280430	-0.00056994	0.00034923	0.00057283	-0.00000113	0.00000000
+		-6.27280455	-0.00056983	0.00034916	0.00057273	-0.00000113	0.00000000
+		-6.27280480	-0.00056973	0.00034910	0.00057262	-0.00000113	0.00000000
+		-6.27280505	-0.00056962	0.00034904	0.00057252	-0.00000113	0.00000000
+		-6.27280530	-0.00056952	0.00034897	0.00057241	-0.00000113	0.00000000
+		-6.27280555	-0.00056941	0.00034891	0.00057231	-0.00000113	0.00000000
+		-6.27280580	-0.00056931	0.00034884	0.00057220	-0.00000113	0.00000000
+		-6.27280606	-0.00056920	0.00034878	0.00057210	-0.00000113	0.00000000
+		-6.27280631	-0.00056910	0.00034872	0.00057199	-0.00000113	0.00000000
+		-6.27280656	-0.00056899	0.00034865	0.00057189	-0.00000113	0.00000000
+		-6.27280681	-0.00056889	0.00034859	0.00057178	-0.00000113	0.00000000
+		-6.27280706	-0.00056878	0.00034852	0.00057168	-0.00000113	0.00000000
+		-6.27280731	-0.00056868	0.00034846	0.00057157	-0.00000113	0.00000000
+		-6.27280756	-0.00056858	0.00034839	0.00057147	-0.00000113	0.00000000
+		-6.27280781	-0.00056847	0.00034833	0.00057136	-0.00000113	0.00000000
+		-6.27280806	-0.00056837	0.00034827	0.00057126	-0.00000113	0.00000000
+		-6.27280830	-0.00056826	0.00034820	0.00057115	-0.00000113	0.00000000
+		-6.27280855	-0.00056816	0.00034814	0.00057105	-0.00000113	0.00000000
+		-6.27280880	-0.00056805	0.00034807	0.00057094	-0.00000113	0.00000000
+		-6.27280905	-0.00056795	0.00034801	0.00057084	-0.00000113	0.00000000
+		-6.27280930	-0.00056785	0.00034795	0.00057073	-0.00000113	0.00000000
+		-6.27280955	-0.00056774	0.00034788	0.00057063	-0.00000113	0.00000000
+		-6.27280980	-0.00056764	0.00034782	0.00057052	-0.00000113	0.00000000
+		-6.27281005	-0.00056753	0.00034776	0.00057042	-0.00000113	0.00000000
+		-6.27281030	-0.00056743	0.00034769	0.00057031	-0.00000113	0.00000000
+		-6.27281055	-0.00056733	0.00034763	0.00057021	-0.00000113	0.00000000
+		-6.27281080	-0.00056722	0.00034756	0.00057010	-0.00000113	0.00000000
+		-6.27281104	-0.00056712	0.00034750	0.00057000	-0.00000113	0.00000000
+		-6.27281129	-0.00056701	0.00034744	0.00056990	-0.00000113	0.00000000
+		-6.27281154	-0.00056691	0.00034737	0.00056979	-0.00000113	0.00000000
+		-6.27281179	-0.00056681	0.00034731	0.00056969	-0.00000113	0.00000000
+		-6.27281204	-0.00056670	0.00034725	0.00056958	-0.00000113	0.00000000
+		-6.27281229	-0.00056660	0.00034718	0.00056948	-0.00000113	0.00000000
+		-6.27281253	-0.00056649	0.00034712	0.00056937	-0.00000113	0.00000000
+		-6.27281278	-0.00056639	0.00034706	0.00056927	-0.00000113	0.00000000
+		-6.27281303	-0.00056629	0.00034699	0.00056917	-0.00000113	0.00000000
+		-6.27281328	-0.00056618	0.00034693	0.00056906	-0.00000113	0.00000000
+		-6.27281353	-0.00056608	0.00034686	0.00056896	-0.00000113	0.00000000
+		-6.27281377	-0.00056598	0.00034680	0.00056885	-0.00000113	0.00000000
+		-6.27281402	-0.00056587	0.00034674	0.00056875	-0.00000113	0.00000000
+		-6.27281427	-0.00056577	0.00034667	0.00056865	-0.00000113	0.00000000
+		-6.27281452	-0.00056567	0.00034661	0.00056854	-0.00000113	0.00000000
+		-6.27281476	-0.00056556	0.00034655	0.00056844	-0.00000113	0.00000000
+		-6.27281501	-0.00056546	0.00034648	0.00056833	-0.00000113	0.00000000
+		-6.27281526	-0.00056536	0.00034642	0.00056823	-0.00000113	0.00000000
+		-6.27281550	-0.00056525	0.00034636	0.00056813	-0.00000113	0.00000000
+		-6.27281575	-0.00056515	0.00034629	0.00056802	-0.00000113	0.00000000
+		-6.27281600	-0.00056505	0.00034623	0.00056792	-0.00000113	0.00000000
+		-6.27281624	-0.00056494	0.00034617	0.00056781	-0.00000113	0.00000000
+		-6.27281649	-0.00056484	0.00034610	0.00056771	-0.00000113	0.00000000
+		-6.27281674	-0.00056474	0.00034604	0.00056761	-0.00000113	0.00000000
+		-6.27281698	-0.00056463	0.00034598	0.00056750	-0.00000113	0.00000000
+		-6.27281723	-0.00056453	0.00034592	0.00056740	-0.00000113	0.00000000
+		-6.27281748	-0.00056443	0.00034585	0.00056730	-0.00000113	0.00000000
+		-6.27281772	-0.00056433	0.00034579	0.00056719	-0.00000113	0.00000000
+		-6.27281797	-0.00056422	0.00034573	0.00056709	-0.00000113	0.00000000
+		-6.27281822	-0.00056412	0.00034566	0.00056699	-0.00000113	0.00000000
+		-6.27281846	-0.00056402	0.00034560	0.00056688	-0.00000113	0.00000000
+		-6.27281871	-0.00056391	0.00034554	0.00056678	-0.00000113	0.00000000
+		-6.27281895	-0.00056381	0.00034547	0.00056668	-0.00000113	0.00000000
+		-6.27281920	-0.00056371	0.00034541	0.00056657	-0.00000113	0.00000000
+		-6.27281944	-0.00056361	0.00034535	0.00056647	-0.00000113	0.00000000
+		-6.27281969	-0.00056350	0.00034528	0.00056637	-0.00000113	0.00000000
+		-6.27281993	-0.00056340	0.00034522	0.00056626	-0.00000113	0.00000000
+		-6.27282018	-0.00056330	0.00034516	0.00056616	-0.00000113	0.00000000
+		-6.27282043	-0.00056320	0.00034510	0.00056606	-0.00000113	0.00000000
+		-6.27282067	-0.00056309	0.00034503	0.00056596	-0.00000113	0.00000000
+		-6.27282092	-0.00056299	0.00034497	0.00056585	-0.00000113	0.00000000
+		-6.27282116	-0.00056289	0.00034491	0.00056575	-0.00000113	0.00000000
+		-6.27282141	-0.00056279	0.00034485	0.00056565	-0.00000113	0.00000000
+		-6.27282165	-0.00056268	0.00034478	0.00056554	-0.00000113	0.00000000
+		-6.27282189	-0.00056258	0.00034472	0.00056544	-0.00000113	0.00000000
+		-6.27282214	-0.00056248	0.00034466	0.00056534	-0.00000113	0.00000000
+		-6.27282238	-0.00056238	0.00034459	0.00056524	-0.00000113	0.00000000
+		-6.27282263	-0.00056228	0.00034453	0.00056513	-0.00000113	0.00000000
+		-6.27282287	-0.00056217	0.00034447	0.00056503	-0.00000113	0.00000000
+		-6.27282312	-0.00056207	0.00034441	0.00056493	-0.00000113	0.00000000
+		-6.27282336	-0.00056197	0.00034434	0.00056483	-0.00000113	0.00000000
+		-6.27282360	-0.00056187	0.00034428	0.00056472	-0.00000113	0.00000000
+		-6.27282385	-0.00056177	0.00034422	0.00056462	-0.00000113	0.00000000
+		-6.27282409	-0.00056166	0.00034416	0.00056452	-0.00000113	0.00000000
+		-6.27282434	-0.00056156	0.00034409	0.00056442	-0.00000113	0.00000000
+		-6.27282458	-0.00056146	0.00034403	0.00056431	-0.00000113	0.00000000
+		-6.27282482	-0.00056136	0.00034397	0.00056421	-0.00000113	0.00000000
+		-6.27282507	-0.00056126	0.00034391	0.00056411	-0.00000113	0.00000000
+		-6.27282531	-0.00056115	0.00034384	0.00056401	-0.00000113	0.00000000
+		-6.27282555	-0.00056105	0.00034378	0.00056390	-0.00000113	0.00000000
+		-6.27282580	-0.00056095	0.00034372	0.00056380	-0.00000113	0.00000000
+		-6.27282604	-0.00056085	0.00034366	0.00056370	-0.00000113	0.00000000
+		-6.27282628	-0.00056075	0.00034360	0.00056360	-0.00000113	0.00000000
+		-6.27282653	-0.00056065	0.00034353	0.00056349	-0.00000113	0.00000000
+		-6.27282677	-0.00056055	0.00034347	0.00056339	-0.00000113	0.00000000
+		-6.27282701	-0.00056044	0.00034341	0.00056329	-0.00000113	0.00000000
+		-6.27282725	-0.00056034	0.00034335	0.00056319	-0.00000113	0.00000000
+		-6.27282750	-0.00056024	0.00034328	0.00056309	-0.00000113	0.00000000
+		-6.27282774	-0.00056014	0.00034322	0.00056299	-0.00000113	0.00000000
+		-6.27282798	-0.00056004	0.00034316	0.00056288	-0.00000113	0.00000000
+		-6.27282822	-0.00055994	0.00034310	0.00056278	-0.00000113	0.00000000
+		-6.27282847	-0.00055984	0.00034304	0.00056268	-0.00000113	0.00000000
+		-6.27282871	-0.00055973	0.00034297	0.00056258	-0.00000113	0.00000000
+		-6.27282895	-0.00055963	0.00034291	0.00056248	-0.00000113	0.00000000
+		-6.27282919	-0.00055953	0.00034285	0.00056237	-0.00000113	0.00000000
+		-6.27282944	-0.00055943	0.00034279	0.00056227	-0.00000113	0.00000000
+		-6.27282968	-0.00055933	0.00034273	0.00056217	-0.00000113	0.00000000
+		-6.27282992	-0.00055923	0.00034266	0.00056207	-0.00000113	0.00000000
+		-6.27283016	-0.00055913	0.00034260	0.00056197	-0.00000113	0.00000000
+		-6.27283040	-0.00055903	0.00034254	0.00056187	-0.00000113	0.00000000
+		-6.27283064	-0.00055893	0.00034248	0.00056177	-0.00000113	0.00000000
+		-6.27283089	-0.00055882	0.00034242	0.00056166	-0.00000113	0.00000000
+		-6.27283113	-0.00055872	0.00034235	0.00056156	-0.00000113	0.00000000
+		-6.27283137	-0.00055862	0.00034229	0.00056146	-0.00000113	0.00000000
+		-6.27283161	-0.00055852	0.00034223	0.00056136	-0.00000113	0.00000000
+		-6.27283185	-0.00055842	0.00034217	0.00056126	-0.00000113	0.00000000
+		-6.27283209	-0.00055832	0.00034211	0.00056116	-0.00000113	0.00000000
+		-6.27283233	-0.00055822	0.00034204	0.00056106	-0.00000113	0.00000000
+		-6.27283257	-0.00055812	0.00034198	0.00056095	-0.00000113	0.00000000
+		-6.27283281	-0.00055802	0.00034192	0.00056085	-0.00000113	0.00000000
+		-6.27283305	-0.00055792	0.00034186	0.00056075	-0.00000113	0.00000000
+		-6.27283329	-0.00055782	0.00034180	0.00056065	-0.00000113	0.00000000
+		-6.27283353	-0.00055772	0.00034174	0.00056055	-0.00000113	0.00000000
+		-6.27283378	-0.00055762	0.00034168	0.00056045	-0.00000113	0.00000000
+		-6.27283402	-0.00055752	0.00034161	0.00056035	-0.00000113	0.00000000
+		-6.27283426	-0.00055742	0.00034155	0.00056025	-0.00000113	0.00000000
+		-6.27283450	-0.00055732	0.00034149	0.00056015	-0.00000113	0.00000000
+		-6.27283474	-0.00055722	0.00034143	0.00056005	-0.00000113	0.00000000
+		-6.27283498	-0.00055712	0.00034137	0.00055994	-0.00000113	0.00000000
+		-6.27283522	-0.00055701	0.00034131	0.00055984	-0.00000113	0.00000000
+		-6.27283546	-0.00055691	0.00034124	0.00055974	-0.00000113	0.00000000
+		-6.27283570	-0.00055681	0.00034118	0.00055964	-0.00000113	0.00000000
+		-6.27283593	-0.00055671	0.00034112	0.00055954	-0.00000113	0.00000000
+		-6.27283617	-0.00055661	0.00034106	0.00055944	-0.00000113	0.00000000
+		-6.27283641	-0.00055651	0.00034100	0.00055934	-0.00000113	0.00000000
+		-6.27283665	-0.00055641	0.00034094	0.00055924	-0.00000113	0.00000000
+		-6.27283689	-0.00055631	0.00034088	0.00055914	-0.00000113	0.00000000
+		-6.27283713	-0.00055621	0.00034081	0.00055904	-0.00000113	0.00000000
+		-6.27283737	-0.00055611	0.00034075	0.00055894	-0.00000113	0.00000000
+		-6.27283761	-0.00055601	0.00034069	0.00055884	-0.00000113	0.00000000
+		-6.27283785	-0.00055591	0.00034063	0.00055874	-0.00000113	0.00000000
+		-6.27283809	-0.00055581	0.00034057	0.00055864	-0.00000113	0.00000000
+		-6.27283833	-0.00055571	0.00034051	0.00055854	-0.00000113	0.00000000
+		-6.27283856	-0.00055562	0.00034045	0.00055844	-0.00000113	0.00000000
+		-6.27283880	-0.00055552	0.00034039	0.00055834	-0.00000113	0.00000000
+		-6.27283904	-0.00055542	0.00034033	0.00055824	-0.00000113	0.00000000
+		-6.27283928	-0.00055532	0.00034026	0.00055814	-0.00000113	0.00000000
+		-6.27283952	-0.00055522	0.00034020	0.00055804	-0.00000113	0.00000000
+		-6.27283976	-0.00055512	0.00034014	0.00055794	-0.00000113	0.00000000
+		-6.27283999	-0.00055502	0.00034008	0.00055784	-0.00000113	0.00000000
+		-6.27284023	-0.00055492	0.00034002	0.00055774	-0.00000113	0.00000000
+		-6.27284047	-0.00055482	0.00033996	0.00055764	-0.00000113	0.00000000
+		-6.27284071	-0.00055472	0.00033990	0.00055754	-0.00000113	0.00000000
+		-6.27284095	-0.00055462	0.00033984	0.00055744	-0.00000113	0.00000000
+		-6.27284118	-0.00055452	0.00033978	0.00055734	-0.00000113	0.00000000
+		-6.27284142	-0.00055442	0.00033972	0.00055724	-0.00000113	0.00000000
+		-6.27284166	-0.00055432	0.00033965	0.00055714	-0.00000113	0.00000000
+		-6.27284190	-0.00055422	0.00033959	0.00055704	-0.00000113	0.00000000
+		-6.27284213	-0.00055412	0.00033953	0.00055694	-0.00000113	0.00000000
+		-6.27284237	-0.00055402	0.00033947	0.00055684	-0.00000113	0.00000000
+		-6.27284261	-0.00055393	0.00033941	0.00055674	-0.00000113	0.00000000
+		-6.27284285	-0.00055383	0.00033935	0.00055664	-0.00000113	0.00000000
+		-6.27284308	-0.00055373	0.00033929	0.00055654	-0.00000113	0.00000000
+		-6.27284332	-0.00055363	0.00033923	0.00055644	-0.00000113	0.00000000
+		-6.27284356	-0.00055353	0.00033917	0.00055634	-0.00000113	0.00000000
+		-6.27284379	-0.00055343	0.00033911	0.00055624	-0.00000113	0.00000000
+		-6.27284403	-0.00055333	0.00033905	0.00055614	-0.00000113	0.00000000
+		-6.27284427	-0.00055323	0.00033899	0.00055604	-0.00000113	0.00000000
+		-6.27284450	-0.00055313	0.00033893	0.00055594	-0.00000113	0.00000000
+		-6.27284474	-0.00055303	0.00033887	0.00055584	-0.00000113	0.00000000
+		-6.27284498	-0.00055294	0.00033880	0.00055574	-0.00000113	0.00000000
+		-6.27284521	-0.00055284	0.00033874	0.00055564	-0.00000113	0.00000000
+		-6.27284545	-0.00055274	0.00033868	0.00055555	-0.00000113	0.00000000
+		-6.27284568	-0.00055264	0.00033862	0.00055545	-0.00000113	0.00000000
+		-6.27284592	-0.00055254	0.00033856	0.00055535	-0.00000113	0.00000000
+		-6.27284616	-0.00055244	0.00033850	0.00055525	-0.00000113	0.00000000
+		-6.27284639	-0.00055234	0.00033844	0.00055515	-0.00000113	0.00000000
+		-6.27284663	-0.00055225	0.00033838	0.00055505	-0.00000113	0.00000000
+		-6.27284686	-0.00055215	0.00033832	0.00055495	-0.00000113	0.00000000
+		-6.27284710	-0.00055205	0.00033826	0.00055485	-0.00000113	0.00000000
+		-6.27284733	-0.00055195	0.00033820	0.00055475	-0.00000113	0.00000000
+		-6.27284757	-0.00055185	0.00033814	0.00055465	-0.00000113	0.00000000
+		-6.27284781	-0.00055175	0.00033808	0.00055455	-0.00000113	0.00000000
+		-6.27284804	-0.00055165	0.00033802	0.00055446	-0.00000113	0.00000000
+		-6.27284828	-0.00055156	0.00033796	0.00055436	-0.00000113	0.00000000
+		-6.27284851	-0.00055146	0.00033790	0.00055426	-0.00000113	0.00000000
+		-6.27284875	-0.00055136	0.00033784	0.00055416	-0.00000113	0.00000000
+		-6.27284898	-0.00055126	0.00033778	0.00055406	-0.00000113	0.00000000
+		-6.27284922	-0.00055116	0.00033772	0.00055396	-0.00000113	0.00000000
+		-6.27284945	-0.00055107	0.00033766	0.00055386	-0.00000113	0.00000000
+		-6.27284968	-0.00055097	0.00033760	0.00055377	-0.00000113	0.00000000
+		-6.27284992	-0.00055087	0.00033754	0.00055367	-0.00000113	0.00000000
+		-6.27285015	-0.00055077	0.00033748	0.00055357	-0.00000113	0.00000000
+		-6.27285039	-0.00055067	0.00033742	0.00055347	-0.00000113	0.00000000
+		-6.27285062	-0.00055058	0.00033736	0.00055337	-0.00000113	0.00000000
+		-6.27285086	-0.00055048	0.00033730	0.00055327	-0.00000113	0.00000000
+		-6.27285109	-0.00055038	0.00033724	0.00055317	-0.00000113	0.00000000
+		-6.27285133	-0.00055028	0.00033718	0.00055308	-0.00000113	0.00000000
+		-6.27285156	-0.00055018	0.00033712	0.00055298	-0.00000113	0.00000000
+		-6.27285179	-0.00055009	0.00033706	0.00055288	-0.00000113	0.00000000
+		-6.27285203	-0.00054999	0.00033700	0.00055278	-0.00000113	0.00000000
+		-6.27285226	-0.00054989	0.00033694	0.00055268	-0.00000113	0.00000000
+		-6.27285249	-0.00054979	0.00033688	0.00055258	-0.00000113	0.00000000
+		-6.27285273	-0.00054970	0.00033682	0.00055249	-0.00000113	0.00000000
+		-6.27285296	-0.00054960	0.00033676	0.00055239	-0.00000113	0.00000000
+		-6.27285319	-0.00054950	0.00033670	0.00055229	-0.00000113	0.00000000
+		-6.27285343	-0.00054940	0.00033664	0.00055219	-0.00000113	0.00000000
+		-6.27285366	-0.00054931	0.00033658	0.00055209	-0.00000113	0.00000000
+		-6.27285389	-0.00054921	0.00033652	0.00055200	-0.00000113	0.00000000
+		-6.27285413	-0.00054911	0.00033646	0.00055190	-0.00000113	0.00000000
+		-6.27285436	-0.00054901	0.00033640	0.00055180	-0.00000113	0.00000000
+		-6.27285459	-0.00054892	0.00033634	0.00055170	-0.00000113	0.00000000
+		-6.27285483	-0.00054882	0.00033628	0.00055160	-0.00000113	0.00000000
+		-6.27285506	-0.00054872	0.00033622	0.00055151	-0.00000113	0.00000000
+		-6.27285529	-0.00054862	0.00033616	0.00055141	-0.00000113	0.00000000
+		-6.27285552	-0.00054853	0.00033610	0.00055131	-0.00000113	0.00000000
+		-6.27285576	-0.00054843	0.00033604	0.00055121	-0.00000113	0.00000000
+		-6.27285599	-0.00054833	0.00033598	0.00055112	-0.00000113	0.00000000
+		-6.27285622	-0.00054824	0.00033592	0.00055102	-0.00000113	0.00000000
+		-6.27285645	-0.00054814	0.00033586	0.00055092	-0.00000113	0.00000000
+		-6.27285669	-0.00054804	0.00033580	0.00055082	-0.00000113	0.00000000
+		-6.27285692	-0.00054794	0.00033574	0.00055073	-0.00000113	0.00000000
+		-6.27285715	-0.00054785	0.00033568	0.00055063	-0.00000113	0.00000000
+		-6.27285738	-0.00054775	0.00033563	0.00055053	-0.00000113	0.00000000
+		-6.27285761	-0.00054765	0.00033557	0.00055043	-0.00000113	0.00000000
+		-6.27285785	-0.00054756	0.00033551	0.00055034	-0.00000113	0.00000000
+		-6.27285808	-0.00054746	0.00033545	0.00055024	-0.00000113	0.00000000
+		-6.27285831	-0.00054736	0.00033539	0.00055014	-0.00000113	0.00000000
+		-6.27285854	-0.00054727	0.00033533	0.00055004	-0.00000113	0.00000000
+		-6.27285877	-0.00054717	0.00033527	0.00054995	-0.00000113	0.00000000
+		-6.27285900	-0.00054707	0.00033521	0.00054985	-0.00000113	0.00000000
+		-6.27285923	-0.00054698	0.00033515	0.00054975	-0.00000113	0.00000000
+		-6.27285947	-0.00054688	0.00033509	0.00054966	-0.00000113	0.00000000
+		-6.27285970	-0.00054678	0.00033503	0.00054956	-0.00000113	0.00000000
+		-6.27285993	-0.00054669	0.00033497	0.00054946	-0.00000113	0.00000000
+		-6.27286016	-0.00054659	0.00033491	0.00054936	-0.00000113	0.00000000
+		-6.27286039	-0.00054649	0.00033485	0.00054927	-0.00000113	0.00000000
+		-6.27286062	-0.00054640	0.00033480	0.00054917	-0.00000113	0.00000000
+		-6.27286085	-0.00054630	0.00033474	0.00054907	-0.00000113	0.00000000
+		-6.27286108	-0.00054620	0.00033468	0.00054898	-0.00000113	0.00000000
+		-6.27286131	-0.00054611	0.00033462	0.00054888	-0.00000113	0.00000000
+		-6.27286154	-0.00054601	0.00033456	0.00054878	-0.00000113	0.00000000
+		-6.27286177	-0.00054591	0.00033450	0.00054869	-0.00000113	0.00000000
+		-6.27286200	-0.00054582	0.00033444	0.00054859	-0.00000113	0.00000000
+		-6.27286223	-0.00054572	0.00033438	0.00054849	-0.00000113	0.00000000
+		-6.27286246	-0.00054563	0.00033432	0.00054840	-0.00000113	0.00000000
+		-6.27286269	-0.00054553	0.00033426	0.00054830	-0.00000113	0.00000000
+		-6.27286292	-0.00054543	0.00033420	0.00054820	-0.00000113	0.00000000
+		-6.27286315	-0.00054534	0.00033415	0.00054811	-0.00000113	0.00000000
+		-6.27286338	-0.00054524	0.00033409	0.00054801	-0.00000113	0.00000000
+		-6.27286361	-0.00054515	0.00033403	0.00054791	-0.00000113	0.00000000
+		-6.27286384	-0.00054505	0.00033397	0.00054782	-0.00000113	0.00000000
+		-6.27286407	-0.00054495	0.00033391	0.00054772	-0.00000113	0.00000000
+		-6.27286430	-0.00054486	0.00033385	0.00054762	-0.00000113	0.00000000
+		-6.27286453	-0.00054476	0.00033379	0.00054753	-0.00000113	0.00000000
+		-6.27286476	-0.00054467	0.00033373	0.00054743	-0.00000113	0.00000000
+		-6.27286499	-0.00054457	0.00033368	0.00054733	-0.00000113	0.00000000
+		-6.27286522	-0.00054447	0.00033362	0.00054724	-0.00000113	0.00000000
+		-6.27286545	-0.00054438	0.00033356	0.00054714	-0.00000113	0.00000000
+		-6.27286568	-0.00054428	0.00033350	0.00054705	-0.00000113	0.00000000
+		-6.27286591	-0.00054419	0.00033344	0.00054695	-0.00000113	0.00000000
+		-6.27286614	-0.00054409	0.00033338	0.00054685	-0.00000113	0.00000000
+		-6.27286636	-0.00054400	0.00033332	0.00054676	-0.00000113	0.00000000
+		-6.27286659	-0.00054390	0.00033326	0.00054666	-0.00000113	0.00000000
+		-6.27286682	-0.00054380	0.00033321	0.00054657	-0.00000113	0.00000000
+		-6.27286705	-0.00054371	0.00033315	0.00054647	-0.00000113	0.00000000
+		-6.27286728	-0.00054361	0.00033309	0.00054637	-0.00000113	0.00000000
+		-6.27286751	-0.00054352	0.00033303	0.00054628	-0.00000113	0.00000000
+		-6.27286774	-0.00054342	0.00033297	0.00054618	-0.00000113	0.00000000
+		-6.27286796	-0.00054333	0.00033291	0.00054609	-0.00000113	0.00000000
+		-6.27286819	-0.00054323	0.00033286	0.00054599	-0.00000113	0.00000000
+		-6.27286842	-0.00054314	0.00033280	0.00054589	-0.00000113	0.00000000
+		-6.27286865	-0.00054304	0.00033274	0.00054580	-0.00000113	0.00000000
+		-6.27286888	-0.00054295	0.00033268	0.00054570	-0.00000113	0.00000000
+		-6.27286910	-0.00054285	0.00033262	0.00054561	-0.00000113	0.00000000
+		-6.27286933	-0.00054276	0.00033256	0.00054551	-0.00000113	0.00000000
+		-6.27286956	-0.00054266	0.00033250	0.00054542	-0.00000113	0.00000000
+		-6.27286979	-0.00054257	0.00033245	0.00054532	-0.00000113	0.00000000
+		-6.27287001	-0.00054247	0.00033239	0.00054522	-0.00000113	0.00000000
+		-6.27287024	-0.00054238	0.00033233	0.00054513	-0.00000113	0.00000000
+		-6.27287047	-0.00054228	0.00033227	0.00054503	-0.00000113	0.00000000
+		-6.27287070	-0.00054219	0.00033221	0.00054494	-0.00000113	0.00000000
+		-6.27287092	-0.00054209	0.00033216	0.00054484	-0.00000113	0.00000000
+		-6.27287115	-0.00054200	0.00033210	0.00054475	-0.00000113	0.00000000
+		-6.27287138	-0.00054190	0.00033204	0.00054465	-0.00000113	0.00000000
+		-6.27287160	-0.00054181	0.00033198	0.00054456	-0.00000113	0.00000000
+		-6.27287183	-0.00054171	0.00033192	0.00054446	-0.00000113	0.00000000
+		-6.27287206	-0.00054162	0.00033186	0.00054437	-0.00000113	0.00000000
+		-6.27287228	-0.00054152	0.00033181	0.00054427	-0.00000113	0.00000000
+		-6.27287251	-0.00054143	0.00033175	0.00054417	-0.00000113	0.00000000
+		-6.27287274	-0.00054133	0.00033169	0.00054408	-0.00000113	0.00000000
+		-6.27287296	-0.00054124	0.00033163	0.00054398	-0.00000113	0.00000000
+		-6.27287319	-0.00054114	0.00033157	0.00054389	-0.00000113	0.00000000
+		-6.27287342	-0.00054105	0.00033152	0.00054379	-0.00000113	0.00000000
+		-6.27287364	-0.00054095	0.00033146	0.00054370	-0.00000113	0.00000000
+		-6.27287387	-0.00054086	0.00033140	0.00054360	-0.00000113	0.00000000
+		-6.27287409	-0.00054076	0.00033134	0.00054351	-0.00000113	0.00000000
+		-6.27287432	-0.00054067	0.00033128	0.00054341	-0.00000113	0.00000000
+		-6.27287455	-0.00054058	0.00033123	0.00054332	-0.00000113	0.00000000
+		-6.27287477	-0.00054048	0.00033117	0.00054322	-0.00000113	0.00000000
+		-6.27287500	-0.00054039	0.00033111	0.00054313	-0.00000113	0.00000000
+		-6.27287522	-0.00054029	0.00033105	0.00054304	-0.00000113	0.00000000
+		-6.27287545	-0.00054020	0.00033100	0.00054294	-0.00000113	0.00000000
+		-6.27287568	-0.00054010	0.00033094	0.00054285	-0.00000113	0.00000000
+		-6.27287590	-0.00054001	0.00033088	0.00054275	-0.00000113	0.00000000
+		-6.27287613	-0.00053992	0.00033082	0.00054266	-0.00000113	0.00000000
+		-6.27287635	-0.00053982	0.00033076	0.00054256	-0.00000113	0.00000000
+		-6.27287658	-0.00053973	0.00033071	0.00054247	-0.00000113	0.00000000
+		-6.27287680	-0.00053963	0.00033065	0.00054237	-0.00000113	0.00000000
+		-6.27287703	-0.00053954	0.00033059	0.00054228	-0.00000113	0.00000000
+		-6.27287725	-0.00053945	0.00033053	0.00054218	-0.00000113	0.00000000
+		-6.27287748	-0.00053935	0.00033048	0.00054209	-0.00000113	0.00000000
+		-6.27287770	-0.00053926	0.00033042	0.00054199	-0.00000113	0.00000000
+		-6.27287793	-0.00053916	0.00033036	0.00054190	-0.00000113	0.00000000
+		-6.27287815	-0.00053907	0.00033030	0.00054181	-0.00000113	0.00000000
+		-6.27287838	-0.00053898	0.00033025	0.00054171	-0.00000113	0.00000000
+		-6.27287860	-0.00053888	0.00033019	0.00054162	-0.00000113	0.00000000
+		-6.27287882	-0.00053879	0.00033013	0.00054152	-0.00000113	0.00000000
+		-6.27287905	-0.00053869	0.00033007	0.00054143	-0.00000113	0.00000000
+		-6.27287927	-0.00053860	0.00033002	0.00054133	-0.00000113	0.00000000
+		-6.27287950	-0.00053851	0.00032996	0.00054124	-0.00000113	0.00000000
+		-6.27287972	-0.00053841	0.00032990	0.00054115	-0.00000113	0.00000000
+		-6.27287994	-0.00053832	0.00032984	0.00054105	-0.00000113	0.00000000
+		-6.27288017	-0.00053823	0.00032979	0.00054096	-0.00000113	0.00000000
+		-6.27288039	-0.00053813	0.00032973	0.00054086	-0.00000113	0.00000000
+		-6.27288062	-0.00053804	0.00032967	0.00054077	-0.00000113	0.00000000
+		-6.27288084	-0.00053795	0.00032961	0.00054068	-0.00000113	0.00000000
+		-6.27288106	-0.00053785	0.00032956	0.00054058	-0.00000113	0.00000000
+		-6.27288129	-0.00053776	0.00032950	0.00054049	-0.00000113	0.00000000
+		-6.27288151	-0.00053767	0.00032944	0.00054039	-0.00000113	0.00000000
+		-6.27288173	-0.00053757	0.00032938	0.00054030	-0.00000113	0.00000000
+		-6.27288196	-0.00053748	0.00032933	0.00054021	-0.00000113	0.00000000
+		-6.27288218	-0.00053739	0.00032927	0.00054011	-0.00000113	0.00000000
+		-6.27288240	-0.00053729	0.00032921	0.00054002	-0.00000113	0.00000000
+		-6.27288263	-0.00053720	0.00032916	0.00053992	-0.00000113	0.00000000
+		-6.27288285	-0.00053711	0.00032910	0.00053983	-0.00000113	0.00000000
+		-6.27288307	-0.00053701	0.00032904	0.00053974	-0.00000113	0.00000000
+		-6.27288330	-0.00053692	0.00032898	0.00053964	-0.00000113	0.00000000
+		-6.27288352	-0.00053683	0.00032893	0.00053955	-0.00000113	0.00000000
+		-6.27288374	-0.00053673	0.00032887	0.00053946	-0.00000113	0.00000000
+		-6.27288396	-0.00053664	0.00032881	0.00053936	-0.00000113	0.00000000
+		-6.27288419	-0.00053655	0.00032876	0.00053927	-0.00000113	0.00000000
+		-6.27288441	-0.00053645	0.00032870	0.00053918	-0.00000113	0.00000000
+		-6.27288463	-0.00053636	0.00032864	0.00053908	-0.00000113	0.00000000
+		-6.27288485	-0.00053627	0.00032859	0.00053899	-0.00000113	0.00000000
+		-6.27288508	-0.00053618	0.00032853	0.00053890	-0.00000113	0.00000000
+		-6.27288530	-0.00053608	0.00032847	0.00053880	-0.00000113	0.00000000
+		-6.27288552	-0.00053599	0.00032841	0.00053871	-0.00000113	0.00000000
+		-6.27288574	-0.00053590	0.00032836	0.00053862	-0.00000113	0.00000000
+		-6.27288596	-0.00053580	0.00032830	0.00053852	-0.00000113	0.00000000
+		-6.27288619	-0.00053571	0.00032824	0.00053843	-0.00000113	0.00000000
+		-6.27288641	-0.00053562	0.00032819	0.00053834	-0.00000113	0.00000000
+		-6.27288663	-0.00053553	0.00032813	0.00053824	-0.00000113	0.00000000
+		-6.27288685	-0.00053543	0.00032807	0.00053815	-0.00000113	0.00000000
+		-6.27288707	-0.00053534	0.00032802	0.00053806	-0.00000113	0.00000000
+		-6.27288729	-0.00053525	0.00032796	0.00053796	-0.00000113	0.00000000
+		-6.27288752	-0.00053516	0.00032790	0.00053787	-0.00000113	0.00000000
+		-6.27288774	-0.00053506	0.00032785	0.00053778	-0.00000113	0.00000000
+		-6.27288796	-0.00053497	0.00032779	0.00053769	-0.00000113	0.00000000
+		-6.27288818	-0.00053488	0.00032773	0.00053759	-0.00000113	0.00000000
+		-6.27288840	-0.00053479	0.00032768	0.00053750	-0.00000113	0.00000000
+		-6.27288862	-0.00053469	0.00032762	0.00053741	-0.00000113	0.00000000
+		-6.27288884	-0.00053460	0.00032756	0.00053731	-0.00000113	0.00000000
+		-6.27288906	-0.00053451	0.00032751	0.00053722	-0.00000113	0.00000000
+		-6.27288928	-0.00053442	0.00032745	0.00053713	-0.00000113	0.00000000
+		-6.27288950	-0.00053432	0.00032739	0.00053704	-0.00000113	0.00000000
+		-6.27288973	-0.00053423	0.00032734	0.00053694	-0.00000113	0.00000000
+		-6.27288995	-0.00053414	0.00032728	0.00053685	-0.00000113	0.00000000
+		-6.27289017	-0.00053405	0.00032722	0.00053676	-0.00000113	0.00000000
+		-6.27289039	-0.00053396	0.00032717	0.00053666	-0.00000113	0.00000000
+		-6.27289061	-0.00053386	0.00032711	0.00053657	-0.00000113	0.00000000
+		-6.27289083	-0.00053377	0.00032705	0.00053648	-0.00000113	0.00000000
+		-6.27289105	-0.00053368	0.00032700	0.00053639	-0.00000113	0.00000000
+		-6.27289127	-0.00053359	0.00032694	0.00053629	-0.00000113	0.00000000
+		-6.27289149	-0.00053350	0.00032689	0.00053620	-0.00000113	0.00000000
+		-6.27289171	-0.00053340	0.00032683	0.00053611	-0.00000113	0.00000000
+		-6.27289193	-0.00053331	0.00032677	0.00053602	-0.00000113	0.00000000
+		-6.27289215	-0.00053322	0.00032672	0.00053593	-0.00000113	0.00000000
+		-6.27289237	-0.00053313	0.00032666	0.00053583	-0.00000113	0.00000000
+		-6.27289259	-0.00053304	0.00032660	0.00053574	-0.00000113	0.00000000
+		-6.27289281	-0.00053294	0.00032655	0.00053565	-0.00000113	0.00000000
+		-6.27289303	-0.00053285	0.00032649	0.00053556	-0.00000113	0.00000000
+		-6.27289325	-0.00053276	0.00032643	0.00053546	-0.00000113	0.00000000
+		-6.27289346	-0.00053267	0.00032638	0.00053537	-0.00000113	0.00000000
+		-6.27289368	-0.00053258	0.00032632	0.00053528	-0.00000113	0.00000000
+		-6.27289390	-0.00053249	0.00032627	0.00053519	-0.00000113	0.00000000
+		-6.27289412	-0.00053239	0.00032621	0.00053510	-0.00000113	0.00000000
+		-6.27289434	-0.00053230	0.00032615	0.00053500	-0.00000113	0.00000000
+		-6.27289456	-0.00053221	0.00032610	0.00053491	-0.00000113	0.00000000
+		-6.27289478	-0.00053212	0.00032604	0.00053482	-0.00000113	0.00000000
+		-6.27289500	-0.00053203	0.00032599	0.00053473	-0.00000113	0.00000000
+		-6.27289522	-0.00053194	0.00032593	0.00053464	-0.00000113	0.00000000
+		-6.27289544	-0.00053185	0.00032587	0.00053454	-0.00000113	0.00000000
+		-6.27289565	-0.00053175	0.00032582	0.00053445	-0.00000113	0.00000000
+		-6.27289587	-0.00053166	0.00032576	0.00053436	-0.00000113	0.00000000
+		-6.27289609	-0.00053157	0.00032571	0.00053427	-0.00000113	0.00000000
+		-6.27289631	-0.00053148	0.00032565	0.00053418	-0.00000113	0.00000000
+		-6.27289653	-0.00053139	0.00032559	0.00053408	-0.00000113	0.00000000
+		-6.27289675	-0.00053130	0.00032554	0.00053399	-0.00000113	0.00000000
+		-6.27289696	-0.00053121	0.00032548	0.00053390	-0.00000113	0.00000000
+		-6.27289718	-0.00053112	0.00032543	0.00053381	-0.00000113	0.00000000
+		-6.27289740	-0.00053102	0.00032537	0.00053372	-0.00000113	0.00000000
+		-6.27289762	-0.00053093	0.00032531	0.00053363	-0.00000113	0.00000000
+		-6.27289784	-0.00053084	0.00032526	0.00053354	-0.00000113	0.00000000
+		-6.27289805	-0.00053075	0.00032520	0.00053344	-0.00000113	0.00000000
+		-6.27289827	-0.00053066	0.00032515	0.00053335	-0.00000113	0.00000000
+		-6.27289849	-0.00053057	0.00032509	0.00053326	-0.00000113	0.00000000
+		-6.27289871	-0.00053048	0.00032504	0.00053317	-0.00000113	0.00000000
+		-6.27289892	-0.00053039	0.00032498	0.00053308	-0.00000113	0.00000000
+		-6.27289914	-0.00053030	0.00032492	0.00053299	-0.00000113	0.00000000
+		-6.27289936	-0.00053021	0.00032487	0.00053290	-0.00000113	0.00000000
+		-6.27289958	-0.00053012	0.00032481	0.00053280	-0.00000113	0.00000000
+		-6.27289979	-0.00053002	0.00032476	0.00053271	-0.00000113	0.00000000
+		-6.27290001	-0.00052993	0.00032470	0.00053262	-0.00000113	0.00000000
+		-6.27290023	-0.00052984	0.00032465	0.00053253	-0.00000113	0.00000000
+		-6.27290044	-0.00052975	0.00032459	0.00053244	-0.00000113	0.00000000
+		-6.27290066	-0.00052966	0.00032453	0.00053235	-0.00000113	0.00000000
+		-6.27290088	-0.00052957	0.00032448	0.00053226	-0.00000113	0.00000000
+		-6.27290109	-0.00052948	0.00032442	0.00053217	-0.00000113	0.00000000
+		-6.27290131	-0.00052939	0.00032437	0.00053208	-0.00000113	0.00000000
+		-6.27290153	-0.00052930	0.00032431	0.00053198	-0.00000113	0.00000000
+		-6.27290174	-0.00052921	0.00032426	0.00053189	-0.00000113	0.00000000
+		-6.27290196	-0.00052912	0.00032420	0.00053180	-0.00000113	0.00000000
+		-6.27290218	-0.00052903	0.00032415	0.00053171	-0.00000113	0.00000000
+		-6.27290239	-0.00052894	0.00032409	0.00053162	-0.00000113	0.00000000
+		-6.27290261	-0.00052885	0.00032404	0.00053153	-0.00000113	0.00000000
+		-6.27290283	-0.00052876	0.00032398	0.00053144	-0.00000113	0.00000000
+		-6.27290304	-0.00052867	0.00032392	0.00053135	-0.00000113	0.00000000
+		-6.27290326	-0.00052858	0.00032387	0.00053126	-0.00000113	0.00000000
+		-6.27290347	-0.00052849	0.00032381	0.00053117	-0.00000113	0.00000000
+		-6.27290369	-0.00052840	0.00032376	0.00053108	-0.00000113	0.00000000
+		-6.27290391	-0.00052831	0.00032370	0.00053099	-0.00000113	0.00000000
+		-6.27290412	-0.00052822	0.00032365	0.00053089	-0.00000113	0.00000000
+		-6.27290434	-0.00052813	0.00032359	0.00053080	-0.00000113	0.00000000
+		-6.27290455	-0.00052804	0.00032354	0.00053071	-0.00000113	0.00000000
+		-6.27290477	-0.00052795	0.00032348	0.00053062	-0.00000113	0.00000000
+		-6.27290498	-0.00052786	0.00032343	0.00053053	-0.00000113	0.00000000
+		-6.27290520	-0.00052777	0.00032337	0.00053044	-0.00000113	0.00000000
+		-6.27290541	-0.00052768	0.00032332	0.00053035	-0.00000113	0.00000000
+		-6.27290563	-0.00052759	0.00032326	0.00053026	-0.00000113	0.00000000
+		-6.27290584	-0.00052750	0.00032321	0.00053017	-0.00000113	0.00000000
+		-6.27290606	-0.00052741	0.00032315	0.00053008	-0.00000113	0.00000000
+		-6.27290627	-0.00052732	0.00032310	0.00052999	-0.00000113	0.00000000
+		-6.27290649	-0.00052723	0.00032304	0.00052990	-0.00000113	0.00000000
+		-6.27290670	-0.00052714	0.00032299	0.00052981	-0.00000113	0.00000000
+		-6.27290692	-0.00052705	0.00032293	0.00052972	-0.00000113	0.00000000
+		-6.27290713	-0.00052696	0.00032288	0.00052963	-0.00000113	0.00000000
+		-6.27290735	-0.00052687	0.00032282	0.00052954	-0.00000113	0.00000000
+		-6.27290756	-0.00052678	0.00032277	0.00052945	-0.00000113	0.00000000
+		-6.27290778	-0.00052669	0.00032271	0.00052936	-0.00000113	0.00000000
+		-6.27290799	-0.00052660	0.00032266	0.00052927	-0.00000113	0.00000000
+		-6.27290821	-0.00052651	0.00032260	0.00052918	-0.00000113	0.00000000
+		-6.27290842	-0.00052642	0.00032255	0.00052909	-0.00000113	0.00000000
+		-6.27290863	-0.00052633	0.00032249	0.00052900	-0.00000113	0.00000000
+		-6.27290885	-0.00052624	0.00032244	0.00052891	-0.00000113	0.00000000
+		-6.27290906	-0.00052615	0.00032238	0.00052882	-0.00000113	0.00000000
+		-6.27290928	-0.00052606	0.00032233	0.00052873	-0.00000113	0.00000000
+		-6.27290949	-0.00052597	0.00032227	0.00052864	-0.00000113	0.00000000
+		-6.27290970	-0.00052588	0.00032222	0.00052855	-0.00000113	0.00000000
+		-6.27290992	-0.00052579	0.00032216	0.00052846	-0.00000113	0.00000000
+		-6.27291013	-0.00052570	0.00032211	0.00052837	-0.00000113	0.00000000
+		-6.27291034	-0.00052561	0.00032205	0.00052828	-0.00000113	0.00000000
+		-6.27291056	-0.00052553	0.00032200	0.00052819	-0.00000113	0.00000000
+		-6.27291077	-0.00052544	0.00032194	0.00052810	-0.00000113	0.00000000
+		-6.27291098	-0.00052535	0.00032189	0.00052801	-0.00000113	0.00000000
+		-6.27291120	-0.00052526	0.00032183	0.00052792	-0.00000113	0.00000000
+		-6.27291141	-0.00052517	0.00032178	0.00052783	-0.00000113	0.00000000
+		-6.27291162	-0.00052508	0.00032173	0.00052774	-0.00000113	0.00000000
+		-6.27291184	-0.00052499	0.00032167	0.00052765	-0.00000113	0.00000000
+		-6.27291205	-0.00052490	0.00032162	0.00052756	-0.00000113	0.00000000
+		-6.27291226	-0.00052481	0.00032156	0.00052747	-0.00000113	0.00000000
+		-6.27291248	-0.00052472	0.00032151	0.00052738	-0.00000113	0.00000000
+		-6.27291269	-0.00052463	0.00032145	0.00052730	-0.00000113	0.00000000
+		-6.27291290	-0.00052455	0.00032140	0.00052721	-0.00000113	0.00000000
+		-6.27291311	-0.00052446	0.00032134	0.00052712	-0.00000113	0.00000000
+		-6.27291333	-0.00052437	0.00032129	0.00052703	-0.00000113	0.00000000
+		-6.27291354	-0.00052428	0.00032123	0.00052694	-0.00000113	0.00000000
+		-6.27291375	-0.00052419	0.00032118	0.00052685	-0.00000113	0.00000000
+		-6.27291396	-0.00052410	0.00032113	0.00052676	-0.00000113	0.00000000
+		-6.27291418	-0.00052401	0.00032107	0.00052667	-0.00000113	0.00000000
+		-6.27291439	-0.00052392	0.00032102	0.00052658	-0.00000113	0.00000000
+		-6.27291460	-0.00052384	0.00032096	0.00052649	-0.00000113	0.00000000
+		-6.27291481	-0.00052375	0.00032091	0.00052640	-0.00000113	0.00000000
+		-6.27291503	-0.00052366	0.00032085	0.00052631	-0.00000113	0.00000000
+		-6.27291524	-0.00052357	0.00032080	0.00052622	-0.00000113	0.00000000
+		-6.27291545	-0.00052348	0.00032075	0.00052614	-0.00000113	0.00000000
+		-6.27291566	-0.00052339	0.00032069	0.00052605	-0.00000113	0.00000000
+		-6.27291587	-0.00052330	0.00032064	0.00052596	-0.00000113	0.00000000
+		-6.27291608	-0.00052322	0.00032058	0.00052587	-0.00000113	0.00000000
+		-6.27291630	-0.00052313	0.00032053	0.00052578	-0.00000113	0.00000000
+		-6.27291651	-0.00052304	0.00032047	0.00052569	-0.00000113	0.00000000
+		-6.27291672	-0.00052295	0.00032042	0.00052560	-0.00000113	0.00000000
+		-6.27291693	-0.00052286	0.00032037	0.00052551	-0.00000113	0.00000000
+		-6.27291714	-0.00052277	0.00032031	0.00052542	-0.00000113	0.00000000
+		-6.27291735	-0.00052269	0.00032026	0.00052534	-0.00000113	0.00000000
+		-6.27291756	-0.00052260	0.00032020	0.00052525	-0.00000113	0.00000000
+		-6.27291777	-0.00052251	0.00032015	0.00052516	-0.00000113	0.00000000
+		-6.27291799	-0.00052242	0.00032010	0.00052507	-0.00000113	0.00000000
+		-6.27291820	-0.00052233	0.00032004	0.00052498	-0.00000113	0.00000000
+		-6.27291841	-0.00052225	0.00031999	0.00052489	-0.00000113	0.00000000
+		-6.27291862	-0.00052216	0.00031993	0.00052480	-0.00000113	0.00000000
+		-6.27291883	-0.00052207	0.00031988	0.00052472	-0.00000113	0.00000000
+		-6.27291904	-0.00052198	0.00031983	0.00052463	-0.00000113	0.00000000
+		-6.27291925	-0.00052189	0.00031977	0.00052454	-0.00000113	0.00000000
+		-6.27291946	-0.00052180	0.00031972	0.00052445	-0.00000113	0.00000000
+		-6.27291967	-0.00052172	0.00031966	0.00052436	-0.00000113	0.00000000
+		-6.27291988	-0.00052163	0.00031961	0.00052427	-0.00000113	0.00000000
+		-6.27292009	-0.00052154	0.00031956	0.00052419	-0.00000113	0.00000000
+		-6.27292030	-0.00052145	0.00031950	0.00052410	-0.00000113	0.00000000
+		-6.27292051	-0.00052137	0.00031945	0.00052401	-0.00000113	0.00000000
+		-6.27292072	-0.00052128	0.00031939	0.00052392	-0.00000113	0.00000000
+		-6.27292093	-0.00052119	0.00031934	0.00052383	-0.00000113	0.00000000
+		-6.27292114	-0.00052110	0.00031929	0.00052374	-0.00000113	0.00000000
+		-6.27292135	-0.00052101	0.00031923	0.00052366	-0.00000113	0.00000000
+		-6.27292156	-0.00052093	0.00031918	0.00052357	-0.00000113	0.00000000
+		-6.27292177	-0.00052084	0.00031913	0.00052348	-0.00000113	0.00000000
+		-6.27292198	-0.00052075	0.00031907	0.00052339	-0.00000113	0.00000000
+		-6.27292219	-0.00052066	0.00031902	0.00052330	-0.00000113	0.00000000
+		-6.27292240	-0.00052058	0.00031896	0.00052322	-0.00000113	0.00000000
+		-6.27292261	-0.00052049	0.00031891	0.00052313	-0.00000113	0.00000000
+		-6.27292282	-0.00052040	0.00031886	0.00052304	-0.00000113	0.00000000
+		-6.27292303	-0.00052031	0.00031880	0.00052295	-0.00000113	0.00000000
+		-6.27292324	-0.00052023	0.00031875	0.00052286	-0.00000113	0.00000000
+		-6.27292345	-0.00052014	0.00031870	0.00052278	-0.00000113	0.00000000
+		-6.27292366	-0.00052005	0.00031864	0.00052269	-0.00000113	0.00000000
+		-6.27292386	-0.00051996	0.00031859	0.00052260	-0.00000113	0.00000000
+		-6.27292407	-0.00051988	0.00031854	0.00052251	-0.00000113	0.00000000
+		-6.27292428	-0.00051979	0.00031848	0.00052242	-0.00000113	0.00000000
+		-6.27292449	-0.00051970	0.00031843	0.00052234	-0.00000113	0.00000000
+		-6.27292470	-0.00051962	0.00031837	0.00052225	-0.00000113	0.00000000
+		-6.27292491	-0.00051953	0.00031832	0.00052216	-0.00000113	0.00000000
+		-6.27292512	-0.00051944	0.00031827	0.00052207	-0.00000113	0.00000000
+		-6.27292533	-0.00051935	0.00031821	0.00052199	-0.00000113	0.00000000
+		-6.27292553	-0.00051927	0.00031816	0.00052190	-0.00000113	0.00000000
+		-6.27292574	-0.00051918	0.00031811	0.00052181	-0.00000113	0.00000000
+		-6.27292595	-0.00051909	0.00031805	0.00052172	-0.00000113	0.00000000
+		-6.27292616	-0.00051901	0.00031800	0.00052164	-0.00000113	0.00000000
+		-6.27292637	-0.00051892	0.00031795	0.00052155	-0.00000113	0.00000000
+		-6.27292658	-0.00051883	0.00031789	0.00052146	-0.00000113	0.00000000
+		-6.27292678	-0.00051874	0.00031784	0.00052137	-0.00000113	0.00000000
+		-6.27292699	-0.00051866	0.00031779	0.00052129	-0.00000113	0.00000000
+		-6.27292720	-0.00051857	0.00031773	0.00052120	-0.00000113	0.00000000
+		-6.27292741	-0.00051848	0.00031768	0.00052111	-0.00000113	0.00000000
+		-6.27292762	-0.00051840	0.00031763	0.00052102	-0.00000113	0.00000000
+		-6.27292782	-0.00051831	0.00031757	0.00052094	-0.00000113	0.00000000
+		-6.27292803	-0.00051822	0.00031752	0.00052085	-0.00000113	0.00000000
+		-6.27292824	-0.00051814	0.00031747	0.00052076	-0.00000113	0.00000000
+		-6.27292845	-0.00051805	0.00031742	0.00052068	-0.00000113	0.00000000
+		-6.27292865	-0.00051796	0.00031736	0.00052059	-0.00000113	0.00000000
+		-6.27292886	-0.00051788	0.00031731	0.00052050	-0.00000113	0.00000000
+		-6.27292907	-0.00051779	0.00031726	0.00052041	-0.00000113	0.00000000
+		-6.27292927	-0.00051770	0.00031720	0.00052033	-0.00000113	0.00000000
+		-6.27292948	-0.00051762	0.00031715	0.00052024	-0.00000113	0.00000000
+		-6.27292969	-0.00051753	0.00031710	0.00052015	-0.00000113	0.00000000
+		-6.27292990	-0.00051744	0.00031704	0.00052007	-0.00000113	0.00000000
+		-6.27293010	-0.00051736	0.00031699	0.00051998	-0.00000113	0.00000000
+		-6.27293031	-0.00051727	0.00031694	0.00051989	-0.00000113	0.00000000
+		-6.27293052	-0.00051718	0.00031688	0.00051981	-0.00000113	0.00000000
+		-6.27293072	-0.00051710	0.00031683	0.00051972	-0.00000113	0.00000000
+		-6.27293093	-0.00051701	0.00031678	0.00051963	-0.00000113	0.00000000
+		-6.27293114	-0.00051693	0.00031673	0.00051955	-0.00000113	0.00000000
+		-6.27293134	-0.00051684	0.00031667	0.00051946	-0.00000113	0.00000000
+		-6.27293155	-0.00051675	0.00031662	0.00051937	-0.00000113	0.00000000
+		-6.27293176	-0.00051667	0.00031657	0.00051929	-0.00000113	0.00000000
+		-6.27293196	-0.00051658	0.00031651	0.00051920	-0.00000113	0.00000000
+		-6.27293217	-0.00051649	0.00031646	0.00051911	-0.00000113	0.00000000
+		-6.27293237	-0.00051641	0.00031641	0.00051903	-0.00000113	0.00000000
+		-6.27293258	-0.00051632	0.00031636	0.00051894	-0.00000113	0.00000000
+		-6.27293279	-0.00051624	0.00031630	0.00051885	-0.00000113	0.00000000
+		-6.27293299	-0.00051615	0.00031625	0.00051877	-0.00000113	0.00000000
+		-6.27293320	-0.00051606	0.00031620	0.00051868	-0.00000113	0.00000000
+		-6.27293340	-0.00051598	0.00031614	0.00051859	-0.00000113	0.00000000
+		-6.27293361	-0.00051589	0.00031609	0.00051851	-0.00000113	0.00000000
+		-6.27293382	-0.00051581	0.00031604	0.00051842	-0.00000113	0.00000000
+		-6.27293402	-0.00051572	0.00031599	0.00051833	-0.00000113	0.00000000
+		-6.27293423	-0.00051563	0.00031593	0.00051825	-0.00000113	0.00000000
+		-6.27293443	-0.00051555	0.00031588	0.00051816	-0.00000113	0.00000000
+		-6.27293464	-0.00051546	0.00031583	0.00051807	-0.00000113	0.00000000
+		-6.27293484	-0.00051538	0.00031578	0.00051799	-0.00000113	0.00000000
+		-6.27293505	-0.00051529	0.00031572	0.00051790	-0.00000113	0.00000000
+		-6.27293525	-0.00051520	0.00031567	0.00051782	-0.00000113	0.00000000
+		-6.27293546	-0.00051512	0.00031562	0.00051773	-0.00000113	0.00000000
+		-6.27293566	-0.00051503	0.00031557	0.00051764	-0.00000113	0.00000000
+		-6.27293587	-0.00051495	0.00031551	0.00051756	-0.00000113	0.00000000
+		-6.27293607	-0.00051486	0.00031546	0.00051747	-0.00000113	0.00000000
+		-6.27293628	-0.00051478	0.00031541	0.00051739	-0.00000113	0.00000000
+		-6.27293648	-0.00051469	0.00031536	0.00051730	-0.00000113	0.00000000
+		-6.27293669	-0.00051461	0.00031530	0.00051721	-0.00000113	0.00000000
+		-6.27293689	-0.00051452	0.00031525	0.00051713	-0.00000113	0.00000000
+		-6.27293710	-0.00051443	0.00031520	0.00051704	-0.00000113	0.00000000
+		-6.27293730	-0.00051435	0.00031515	0.00051696	-0.00000113	0.00000000
+		-6.27293751	-0.00051426	0.00031509	0.00051687	-0.00000113	0.00000000
+		-6.27293771	-0.00051418	0.00031504	0.00051678	-0.00000113	0.00000000
+		-6.27293792	-0.00051409	0.00031499	0.00051670	-0.00000113	0.00000000
+		-6.27293812	-0.00051401	0.00031494	0.00051661	-0.00000113	0.00000000
+		-6.27293832	-0.00051392	0.00031488	0.00051653	-0.00000113	0.00000000
+		-6.27293853	-0.00051384	0.00031483	0.00051644	-0.00000113	0.00000000
+		-6.27293873	-0.00051375	0.00031478	0.00051635	-0.00000113	0.00000000
+		-6.27293894	-0.00051367	0.00031473	0.00051627	-0.00000113	0.00000000
+		-6.27293914	-0.00051358	0.00031467	0.00051618	-0.00000113	0.00000000
+		-6.27293934	-0.00051350	0.00031462	0.00051610	-0.00000113	0.00000000
+		-6.27293955	-0.00051341	0.00031457	0.00051601	-0.00000113	0.00000000
+		-6.27293975	-0.00051333	0.00031452	0.00051593	-0.00000113	0.00000000
+		-6.27293995	-0.00051324	0.00031447	0.00051584	-0.00000113	0.00000000
+		-6.27294016	-0.00051315	0.00031441	0.00051576	-0.00000113	0.00000000
+		-6.27294036	-0.00051307	0.00031436	0.00051567	-0.00000113	0.00000000
+		-6.27294057	-0.00051298	0.00031431	0.00051558	-0.00000113	0.00000000
+		-6.27294077	-0.00051290	0.00031426	0.00051550	-0.00000113	0.00000000
+		-6.27294097	-0.00051281	0.00031421	0.00051541	-0.00000113	0.00000000
+		-6.27294118	-0.00051273	0.00031415	0.00051533	-0.00000113	0.00000000
+		-6.27294138	-0.00051265	0.00031410	0.00051524	-0.00000113	0.00000000
+		-6.27294158	-0.00051256	0.00031405	0.00051516	-0.00000113	0.00000000
+		-6.27294178	-0.00051248	0.00031400	0.00051507	-0.00000113	0.00000000
+		-6.27294199	-0.00051239	0.00031395	0.00051499	-0.00000113	0.00000000
+		-6.27294219	-0.00051231	0.00031389	0.00051490	-0.00000113	0.00000000
+		-6.27294239	-0.00051222	0.00031384	0.00051482	-0.00000113	0.00000000
+		-6.27294260	-0.00051214	0.00031379	0.00051473	-0.00000113	0.00000000
+		-6.27294280	-0.00051205	0.00031374	0.00051465	-0.00000113	0.00000000
+		-6.27294300	-0.00051197	0.00031369	0.00051456	-0.00000113	0.00000000
+		-6.27294320	-0.00051188	0.00031363	0.00051448	-0.00000113	0.00000000
+		-6.27294341	-0.00051180	0.00031358	0.00051439	-0.00000113	0.00000000
+		-6.27294361	-0.00051171	0.00031353	0.00051431	-0.00000113	0.00000000
+		-6.27294381	-0.00051163	0.00031348	0.00051422	-0.00000113	0.00000000
+		-6.27294401	-0.00051154	0.00031343	0.00051414	-0.00000113	0.00000000
+		-6.27294422	-0.00051146	0.00031337	0.00051405	-0.00000113	0.00000000
+		-6.27294442	-0.00051137	0.00031332	0.00051397	-0.00000113	0.00000000
+		-6.27294462	-0.00051129	0.00031327	0.00051388	-0.00000113	0.00000000
+		-6.27294482	-0.00051121	0.00031322	0.00051380	-0.00000113	0.00000000
+		-6.27294502	-0.00051112	0.00031317	0.00051371	-0.00000113	0.00000000
+		-6.27294523	-0.00051104	0.00031312	0.00051363	-0.00000113	0.00000000
+		-6.27294543	-0.00051095	0.00031306	0.00051354	-0.00000113	0.00000000
+		-6.27294563	-0.00051087	0.00031301	0.00051346	-0.00000113	0.00000000
+		-6.27294583	-0.00051078	0.00031296	0.00051337	-0.00000113	0.00000000
+		-6.27294603	-0.00051070	0.00031291	0.00051329	-0.00000113	0.00000000
+		-6.27294623	-0.00051062	0.00031286	0.00051320	-0.00000113	0.00000000
+		-6.27294644	-0.00051053	0.00031281	0.00051312	-0.00000113	0.00000000
+		-6.27294664	-0.00051045	0.00031275	0.00051303	-0.00000113	0.00000000
+		-6.27294684	-0.00051036	0.00031270	0.00051295	-0.00000113	0.00000000
+		-6.27294704	-0.00051028	0.00031265	0.00051286	-0.00000113	0.00000000
+		-6.27294724	-0.00051019	0.00031260	0.00051278	-0.00000113	0.00000000
+		-6.27294744	-0.00051011	0.00031255	0.00051270	-0.00000113	0.00000000
+		-6.27294764	-0.00051003	0.00031250	0.00051261	-0.00000113	0.00000000
+		-6.27294784	-0.00050994	0.00031244	0.00051253	-0.00000113	0.00000000
+		-6.27294805	-0.00050986	0.00031239	0.00051244	-0.00000113	0.00000000
+		-6.27294825	-0.00050977	0.00031234	0.00051236	-0.00000113	0.00000000
+		-6.27294845	-0.00050969	0.00031229	0.00051227	-0.00000113	0.00000000
+		-6.27294865	-0.00050961	0.00031224	0.00051219	-0.00000113	0.00000000
+		-6.27294885	-0.00050952	0.00031219	0.00051210	-0.00000113	0.00000000
+		-6.27294905	-0.00050944	0.00031214	0.00051202	-0.00000113	0.00000000
+		-6.27294925	-0.00050936	0.00031208	0.00051194	-0.00000113	0.00000000
+		-6.27294945	-0.00050927	0.00031203	0.00051185	-0.00000113	0.00000000
+		-6.27294965	-0.00050919	0.00031198	0.00051177	-0.00000113	0.00000000
+		-6.27294985	-0.00050910	0.00031193	0.00051168	-0.00000113	0.00000000
+		-6.27295005	-0.00050902	0.00031188	0.00051160	-0.00000113	0.00000000
+		-6.27295025	-0.00050894	0.00031183	0.00051152	-0.00000113	0.00000000
+		-6.27295045	-0.00050885	0.00031178	0.00051143	-0.00000113	0.00000000
+		-6.27295065	-0.00050877	0.00031173	0.00051135	-0.00000113	0.00000000
+		-6.27295085	-0.00050869	0.00031167	0.00051126	-0.00000113	0.00000000
+		-6.27295105	-0.00050860	0.00031162	0.00051118	-0.00000113	0.00000000
+		-6.27295125	-0.00050852	0.00031157	0.00051109	-0.00000113	0.00000000
+		-6.27295145	-0.00050844	0.00031152	0.00051101	-0.00000113	0.00000000
+		-6.27295165	-0.00050835	0.00031147	0.00051093	-0.00000113	0.00000000
+		-6.27295185	-0.00050827	0.00031142	0.00051084	-0.00000113	0.00000000
+		-6.27295205	-0.00050818	0.00031137	0.00051076	-0.00000113	0.00000000
+		-6.27295225	-0.00050810	0.00031132	0.00051068	-0.00000113	0.00000000
+		-6.27295245	-0.00050802	0.00031126	0.00051059	-0.00000113	0.00000000
+		-6.27295265	-0.00050793	0.00031121	0.00051051	-0.00000113	0.00000000
+		-6.27295285	-0.00050785	0.00031116	0.00051042	-0.00000113	0.00000000
+		-6.27295305	-0.00050777	0.00031111	0.00051034	-0.00000113	0.00000000
+		-6.27295325	-0.00050768	0.00031106	0.00051026	-0.00000113	0.00000000
+		-6.27295345	-0.00050760	0.00031101	0.00051017	-0.00000113	0.00000000
+		-6.27295365	-0.00050752	0.00031096	0.00051009	-0.00000113	0.00000000
+		-6.27295385	-0.00050743	0.00031091	0.00051001	-0.00000113	0.00000000
+		-6.27295404	-0.00050735	0.00031086	0.00050992	-0.00000113	0.00000000
+		-6.27295424	-0.00050727	0.00031081	0.00050984	-0.00000113	0.00000000
+		-6.27295444	-0.00050719	0.00031075	0.00050975	-0.00000113	0.00000000
+		-6.27295464	-0.00050710	0.00031070	0.00050967	-0.00000113	0.00000000
+		-6.27295484	-0.00050702	0.00031065	0.00050959	-0.00000113	0.00000000
+		-6.27295504	-0.00050694	0.00031060	0.00050950	-0.00000113	0.00000000
+		-6.27295524	-0.00050685	0.00031055	0.00050942	-0.00000113	0.00000000
+		-6.27295544	-0.00050677	0.00031050	0.00050934	-0.00000113	0.00000000
+		-6.27295563	-0.00050669	0.00031045	0.00050925	-0.00000113	0.00000000
+		-6.27295583	-0.00050660	0.00031040	0.00050917	-0.00000113	0.00000000
+		-6.27295603	-0.00050652	0.00031035	0.00050909	-0.00000113	0.00000000
+		-6.27295623	-0.00050644	0.00031030	0.00050900	-0.00000113	0.00000000
+		-6.27295643	-0.00050636	0.00031025	0.00050892	-0.00000113	0.00000000
+		-6.27295663	-0.00050627	0.00031019	0.00050884	-0.00000113	0.00000000
+		-6.27295682	-0.00050619	0.00031014	0.00050875	-0.00000113	0.00000000
+		-6.27295702	-0.00050611	0.00031009	0.00050867	-0.00000113	0.00000000
+		-6.27295722	-0.00050602	0.00031004	0.00050859	-0.00000113	0.00000000
+		-6.27295742	-0.00050594	0.00030999	0.00050851	-0.00000113	0.00000000
+		-6.27295762	-0.00050586	0.00030994	0.00050842	-0.00000113	0.00000000
+		-6.27295781	-0.00050578	0.00030989	0.00050834	-0.00000113	0.00000000
+		-6.27295801	-0.00050569	0.00030984	0.00050826	-0.00000113	0.00000000
+		-6.27295821	-0.00050561	0.00030979	0.00050817	-0.00000113	0.00000000
+		-6.27295841	-0.00050553	0.00030974	0.00050809	-0.00000113	0.00000000
+		-6.27295860	-0.00050545	0.00030969	0.00050801	-0.00000113	0.00000000
+		-6.27295880	-0.00050536	0.00030964	0.00050792	-0.00000113	0.00000000
+		-6.27295900	-0.00050528	0.00030959	0.00050784	-0.00000113	0.00000000
+		-6.27295920	-0.00050520	0.00030954	0.00050776	-0.00000113	0.00000000
+		-6.27295939	-0.00050512	0.00030949	0.00050768	-0.00000113	0.00000000
+		-6.27295959	-0.00050503	0.00030944	0.00050759	-0.00000113	0.00000000
+		-6.27295979	-0.00050495	0.00030938	0.00050751	-0.00000113	0.00000000
+		-6.27295998	-0.00050487	0.00030933	0.00050743	-0.00000113	0.00000000
+		-6.27296018	-0.00050479	0.00030928	0.00050734	-0.00000113	0.00000000
+		-6.27296038	-0.00050470	0.00030923	0.00050726	-0.00000113	0.00000000
+		-6.27296058	-0.00050462	0.00030918	0.00050718	-0.00000113	0.00000000
+		-6.27296077	-0.00050454	0.00030913	0.00050710	-0.00000113	0.00000000
+		-6.27296097	-0.00050446	0.00030908	0.00050701	-0.00000113	0.00000000
+		-6.27296117	-0.00050438	0.00030903	0.00050693	-0.00000113	0.00000000
+		-6.27296136	-0.00050429	0.00030898	0.00050685	-0.00000113	0.00000000
+		-6.27296156	-0.00050421	0.00030893	0.00050677	-0.00000113	0.00000000
+		-6.27296176	-0.00050413	0.00030888	0.00050668	-0.00000113	0.00000000
+		-6.27296195	-0.00050405	0.00030883	0.00050660	-0.00000113	0.00000000
+		-6.27296215	-0.00050397	0.00030878	0.00050652	-0.00000113	0.00000000
+		-6.27296234	-0.00050388	0.00030873	0.00050644	-0.00000113	0.00000000
+		-6.27296254	-0.00050380	0.00030868	0.00050635	-0.00000113	0.00000000
+		-6.27296274	-0.00050372	0.00030863	0.00050627	-0.00000113	0.00000000
+		-6.27296293	-0.00050364	0.00030858	0.00050619	-0.00000113	0.00000000
+		-6.27296313	-0.00050356	0.00030853	0.00050611	-0.00000113	0.00000000
+		-6.27296332	-0.00050347	0.00030848	0.00050602	-0.00000113	0.00000000
+		-6.27296352	-0.00050339	0.00030843	0.00050594	-0.00000113	0.00000000
+		-6.27296372	-0.00050331	0.00030838	0.00050586	-0.00000113	0.00000000
+		-6.27296391	-0.00050323	0.00030833	0.00050578	-0.00000113	0.00000000
+		-6.27296411	-0.00050315	0.00030828	0.00050569	-0.00000113	0.00000000
+		-6.27296430	-0.00050306	0.00030823	0.00050561	-0.00000113	0.00000000
+		-6.27296450	-0.00050298	0.00030818	0.00050553	-0.00000113	0.00000000
+		-6.27296469	-0.00050290	0.00030813	0.00050545	-0.00000113	0.00000000
+		-6.27296489	-0.00050282	0.00030808	0.00050537	-0.00000113	0.00000000
+		-6.27296509	-0.00050274	0.00030803	0.00050528	-0.00000113	0.00000000
+		-6.27296528	-0.00050266	0.00030798	0.00050520	-0.00000113	0.00000000
+		-6.27296548	-0.00050257	0.00030793	0.00050512	-0.00000113	0.00000000
+		-6.27296567	-0.00050249	0.00030788	0.00050504	-0.00000113	0.00000000
+		-6.27296587	-0.00050241	0.00030783	0.00050496	-0.00000113	0.00000000
+		-6.27296606	-0.00050233	0.00030778	0.00050487	-0.00000113	0.00000000
+		-6.27296626	-0.00050225	0.00030773	0.00050479	-0.00000113	0.00000000
+		-6.27296645	-0.00050217	0.00030768	0.00050471	-0.00000113	0.00000000
+		-6.27296665	-0.00050209	0.00030763	0.00050463	-0.00000113	0.00000000
+		-6.27296684	-0.00050200	0.00030758	0.00050455	-0.00000113	0.00000000
+		-6.27296704	-0.00050192	0.00030753	0.00050446	-0.00000113	0.00000000
+		-6.27296723	-0.00050184	0.00030748	0.00050438	-0.00000113	0.00000000
+		-6.27296743	-0.00050176	0.00030743	0.00050430	-0.00000113	0.00000000
+		-6.27296762	-0.00050168	0.00030738	0.00050422	-0.00000113	0.00000000
+		-6.27296781	-0.00050160	0.00030733	0.00050414	-0.00000113	0.00000000
+		-6.27296801	-0.00050152	0.00030728	0.00050406	-0.00000113	0.00000000
+		-6.27296820	-0.00050143	0.00030723	0.00050397	-0.00000113	0.00000000
+		-6.27296840	-0.00050135	0.00030718	0.00050389	-0.00000113	0.00000000
+		-6.27296859	-0.00050127	0.00030713	0.00050381	-0.00000113	0.00000000
+		-6.27296879	-0.00050119	0.00030708	0.00050373	-0.00000113	0.00000000
+		-6.27296898	-0.00050111	0.00030703	0.00050365	-0.00000113	0.00000000
+		-6.27296917	-0.00050103	0.00030698	0.00050357	-0.00000113	0.00000000
+		-6.27296937	-0.00050095	0.00030693	0.00050348	-0.00000113	0.00000000
+		-6.27296956	-0.00050087	0.00030688	0.00050340	-0.00000113	0.00000000
+		-6.27296976	-0.00050079	0.00030683	0.00050332	-0.00000113	0.00000000
+		-6.27296995	-0.00050070	0.00030678	0.00050324	-0.00000113	0.00000000
+		-6.27297014	-0.00050062	0.00030673	0.00050316	-0.00000113	0.00000000
+		-6.27297034	-0.00050054	0.00030668	0.00050308	-0.00000113	0.00000000
+		-6.27297053	-0.00050046	0.00030663	0.00050300	-0.00000113	0.00000000
+		-6.27297073	-0.00050038	0.00030658	0.00050291	-0.00000113	0.00000000
+		-6.27297092	-0.00050030	0.00030653	0.00050283	-0.00000113	0.00000000
+		-6.27297111	-0.00050022	0.00030648	0.00050275	-0.00000113	0.00000000
+		-6.27297131	-0.00050014	0.00030643	0.00050267	-0.00000113	0.00000000
+		-6.27297150	-0.00050006	0.00030638	0.00050259	-0.00000113	0.00000000
+		-6.27297169	-0.00049998	0.00030633	0.00050251	-0.00000113	0.00000000
+		-6.27297189	-0.00049990	0.00030629	0.00050243	-0.00000113	0.00000000
+		-6.27297208	-0.00049982	0.00030624	0.00050235	-0.00000113	0.00000000
+		-6.27297227	-0.00049973	0.00030619	0.00050227	-0.00000113	0.00000000
+		-6.27297246	-0.00049965	0.00030614	0.00050218	-0.00000113	0.00000000
+		-6.27297266	-0.00049957	0.00030609	0.00050210	-0.00000113	0.00000000
+		-6.27297285	-0.00049949	0.00030604	0.00050202	-0.00000113	0.00000000
+		-6.27297304	-0.00049941	0.00030599	0.00050194	-0.00000113	0.00000000
+		-6.27297324	-0.00049933	0.00030594	0.00050186	-0.00000113	0.00000000
+		-6.27297343	-0.00049925	0.00030589	0.00050178	-0.00000113	0.00000000
+		-6.27297362	-0.00049917	0.00030584	0.00050170	-0.00000113	0.00000000
+		-6.27297381	-0.00049909	0.00030579	0.00050162	-0.00000113	0.00000000
+		-6.27297401	-0.00049901	0.00030574	0.00050154	-0.00000113	0.00000000
+		-6.27297420	-0.00049893	0.00030569	0.00050146	-0.00000113	0.00000000
+		-6.27297439	-0.00049885	0.00030564	0.00050137	-0.00000113	0.00000000
+		-6.27297458	-0.00049877	0.00030559	0.00050129	-0.00000113	0.00000000
+		-6.27297478	-0.00049869	0.00030554	0.00050121	-0.00000113	0.00000000
+		-6.27297497	-0.00049861	0.00030550	0.00050113	-0.00000113	0.00000000
+		-6.27297516	-0.00049853	0.00030545	0.00050105	-0.00000113	0.00000000
+		-6.27297535	-0.00049845	0.00030540	0.00050097	-0.00000113	0.00000000
+		-6.27297554	-0.00049837	0.00030535	0.00050089	-0.00000113	0.00000000
+		-6.27297574	-0.00049829	0.00030530	0.00050081	-0.00000113	0.00000000
+		-6.27297593	-0.00049821	0.00030525	0.00050073	-0.00000113	0.00000000
+		-6.27297612	-0.00049813	0.00030520	0.00050065	-0.00000113	0.00000000
+		-6.27297631	-0.00049805	0.00030515	0.00050057	-0.00000113	0.00000000
+		-6.27297650	-0.00049797	0.00030510	0.00050049	-0.00000113	0.00000000
+		-6.27297670	-0.00049789	0.00030505	0.00050041	-0.00000113	0.00000000
+		-6.27297689	-0.00049781	0.00030500	0.00050033	-0.00000113	0.00000000
+		-6.27297708	-0.00049773	0.00030495	0.00050025	-0.00000113	0.00000000
+		-6.27297727	-0.00049765	0.00030491	0.00050017	-0.00000113	0.00000000
+		-6.27297746	-0.00049757	0.00030486	0.00050009	-0.00000113	0.00000000
+		-6.27297765	-0.00049749	0.00030481	0.00050000	-0.00000113	0.00000000
+		-6.27297784	-0.00049741	0.00030476	0.00049992	-0.00000113	0.00000000
+		-6.27297804	-0.00049733	0.00030471	0.00049984	-0.00000113	0.00000000
+		-6.27297823	-0.00049725	0.00030466	0.00049976	-0.00000113	0.00000000
+		-6.27297842	-0.00049717	0.00030461	0.00049968	-0.00000113	0.00000000
+		-6.27297861	-0.00049709	0.00030456	0.00049960	-0.00000113	0.00000000
+		-6.27297880	-0.00049701	0.00030451	0.00049952	-0.00000113	0.00000000
+		-6.27297899	-0.00049693	0.00030446	0.00049944	-0.00000113	0.00000000
+		-6.27297918	-0.00049685	0.00030442	0.00049936	-0.00000113	0.00000000
+		-6.27297937	-0.00049677	0.00030437	0.00049928	-0.00000113	0.00000000
+		-6.27297956	-0.00049669	0.00030432	0.00049920	-0.00000113	0.00000000
+		-6.27297975	-0.00049661	0.00030427	0.00049912	-0.00000113	0.00000000
+		-6.27297994	-0.00049653	0.00030422	0.00049904	-0.00000113	0.00000000
+		-6.27298013	-0.00049645	0.00030417	0.00049896	-0.00000113	0.00000000
+		-6.27298033	-0.00049637	0.00030412	0.00049888	-0.00000114	0.00000000
+		-6.27298052	-0.00049629	0.00030407	0.00049880	-0.00000114	0.00000000
+		-6.27298071	-0.00049621	0.00030403	0.00049872	-0.00000114	0.00000000
+		-6.27298090	-0.00049613	0.00030398	0.00049864	-0.00000114	0.00000000
+		-6.27298109	-0.00049605	0.00030393	0.00049856	-0.00000114	0.00000000
+		-6.27298128	-0.00049597	0.00030388	0.00049848	-0.00000114	0.00000000
+		-6.27298147	-0.00049589	0.00030383	0.00049840	-0.00000114	0.00000000
+		-6.27298166	-0.00049581	0.00030378	0.00049832	-0.00000114	0.00000000
+		-6.27298185	-0.00049573	0.00030373	0.00049824	-0.00000114	0.00000000
+		-6.27298204	-0.00049565	0.00030368	0.00049816	-0.00000114	0.00000000
+		-6.27298223	-0.00049557	0.00030364	0.00049808	-0.00000114	0.00000000
+		-6.27298242	-0.00049550	0.00030359	0.00049800	-0.00000114	0.00000000
+		-6.27298261	-0.00049542	0.00030354	0.00049792	-0.00000114	0.00000000
+		-6.27298280	-0.00049534	0.00030349	0.00049784	-0.00000114	0.00000000
+		-6.27298299	-0.00049526	0.00030344	0.00049776	-0.00000114	0.00000000
+		-6.27298318	-0.00049518	0.00030339	0.00049769	-0.00000114	0.00000000
+		-6.27298336	-0.00049510	0.00030334	0.00049761	-0.00000114	0.00000000
+		-6.27298355	-0.00049502	0.00030330	0.00049753	-0.00000114	0.00000000
+		-6.27298374	-0.00049494	0.00030325	0.00049745	-0.00000114	0.00000000
+		-6.27298393	-0.00049486	0.00030320	0.00049737	-0.00000114	0.00000000
+		-6.27298412	-0.00049478	0.00030315	0.00049729	-0.00000114	0.00000000
+		-6.27298431	-0.00049470	0.00030310	0.00049721	-0.00000114	0.00000000
+		-6.27298450	-0.00049462	0.00030305	0.00049713	-0.00000114	0.00000000
+		-6.27298469	-0.00049455	0.00030300	0.00049705	-0.00000114	0.00000000
+		-6.27298488	-0.00049447	0.00030296	0.00049697	-0.00000114	0.00000000
+		-6.27298507	-0.00049439	0.00030291	0.00049689	-0.00000114	0.00000000
+		-6.27298526	-0.00049431	0.00030286	0.00049681	-0.00000114	0.00000000
+		-6.27298545	-0.00049423	0.00030281	0.00049673	-0.00000114	0.00000000
+		-6.27298563	-0.00049415	0.00030276	0.00049665	-0.00000114	0.00000000
+		-6.27298582	-0.00049407	0.00030271	0.00049657	-0.00000114	0.00000000
+		-6.27298601	-0.00049399	0.00030267	0.00049649	-0.00000114	0.00000000
+		-6.27298620	-0.00049391	0.00030262	0.00049641	-0.00000114	0.00000000
+		-6.27298639	-0.00049384	0.00030257	0.00049634	-0.00000114	0.00000000
+		-6.27298658	-0.00049376	0.00030252	0.00049626	-0.00000114	0.00000000
+		-6.27298677	-0.00049368	0.00030247	0.00049618	-0.00000114	0.00000000
+		-6.27298695	-0.00049360	0.00030242	0.00049610	-0.00000114	0.00000000
+		-6.27298714	-0.00049352	0.00030238	0.00049602	-0.00000114	0.00000000
+		-6.27298733	-0.00049344	0.00030233	0.00049594	-0.00000114	0.00000000
+		-6.27298752	-0.00049336	0.00030228	0.00049586	-0.00000114	0.00000000
+		-6.27298771	-0.00049328	0.00030223	0.00049578	-0.00000114	0.00000000
+		-6.27298790	-0.00049321	0.00030218	0.00049570	-0.00000114	0.00000000
+		-6.27298808	-0.00049313	0.00030214	0.00049562	-0.00000114	0.00000000
+		-6.27298827	-0.00049305	0.00030209	0.00049554	-0.00000114	0.00000000
+		-6.27298846	-0.00049297	0.00030204	0.00049547	-0.00000114	0.00000000
+		-6.27298865	-0.00049289	0.00030199	0.00049539	-0.00000114	0.00000000
+		-6.27298883	-0.00049281	0.00030194	0.00049531	-0.00000114	0.00000000
+		-6.27298902	-0.00049273	0.00030189	0.00049523	-0.00000114	0.00000000
+		-6.27298921	-0.00049266	0.00030185	0.00049515	-0.00000114	0.00000000
+		-6.27298940	-0.00049258	0.00030180	0.00049507	-0.00000114	0.00000000
+		-6.27298959	-0.00049250	0.00030175	0.00049499	-0.00000114	0.00000000
+		-6.27298977	-0.00049242	0.00030170	0.00049491	-0.00000114	0.00000000
+		-6.27298996	-0.00049234	0.00030165	0.00049484	-0.00000114	0.00000000
+		-6.27299015	-0.00049226	0.00030161	0.00049476	-0.00000114	0.00000000
+		-6.27299033	-0.00049219	0.00030156	0.00049468	-0.00000114	0.00000000
+		-6.27299052	-0.00049211	0.00030151	0.00049460	-0.00000114	0.00000000
+		-6.27299071	-0.00049203	0.00030146	0.00049452	-0.00000114	0.00000000
+		-6.27299090	-0.00049195	0.00030141	0.00049444	-0.00000114	0.00000000
+		-6.27299108	-0.00049187	0.00030137	0.00049436	-0.00000114	0.00000000
+		-6.27299127	-0.00049180	0.00030132	0.00049428	-0.00000114	0.00000000
+		-6.27299146	-0.00049172	0.00030127	0.00049421	-0.00000114	0.00000000
+		-6.27299164	-0.00049164	0.00030122	0.00049413	-0.00000114	0.00000000
+		-6.27299183	-0.00049156	0.00030118	0.00049405	-0.00000114	0.00000000
+		-6.27299202	-0.00049148	0.00030113	0.00049397	-0.00000114	0.00000000
+		-6.27299220	-0.00049140	0.00030108	0.00049389	-0.00000114	0.00000000
+		-6.27299239	-0.00049133	0.00030103	0.00049381	-0.00000114	0.00000000
+		-6.27299258	-0.00049125	0.00030098	0.00049374	-0.00000114	0.00000000
+		-6.27299276	-0.00049117	0.00030094	0.00049366	-0.00000114	0.00000000
+		-6.27299295	-0.00049109	0.00030089	0.00049358	-0.00000114	0.00000000
+		-6.27299314	-0.00049102	0.00030084	0.00049350	-0.00000114	0.00000000
+		-6.27299332	-0.00049094	0.00030079	0.00049342	-0.00000114	0.00000000
+		-6.27299351	-0.00049086	0.00030075	0.00049334	-0.00000114	0.00000000
+		-6.27299370	-0.00049078	0.00030070	0.00049327	-0.00000114	0.00000000
+		-6.27299388	-0.00049070	0.00030065	0.00049319	-0.00000114	0.00000000
+		-6.27299407	-0.00049063	0.00030060	0.00049311	-0.00000114	0.00000000
+		-6.27299425	-0.00049055	0.00030055	0.00049303	-0.00000114	0.00000000
+		-6.27299444	-0.00049047	0.00030051	0.00049295	-0.00000114	0.00000000
+		-6.27299463	-0.00049039	0.00030046	0.00049288	-0.00000114	0.00000000
+		-6.27299481	-0.00049032	0.00030041	0.00049280	-0.00000114	0.00000000
+		-6.27299500	-0.00049024	0.00030036	0.00049272	-0.00000114	0.00000000
+		-6.27299518	-0.00049016	0.00030032	0.00049264	-0.00000114	0.00000000
+		-6.27299537	-0.00049008	0.00030027	0.00049256	-0.00000114	0.00000000
+		-6.27299556	-0.00049000	0.00030022	0.00049249	-0.00000114	0.00000000
+		-6.27299574	-0.00048993	0.00030017	0.00049241	-0.00000114	0.00000000
+		-6.27299593	-0.00048985	0.00030013	0.00049233	-0.00000114	0.00000000
+		-6.27299611	-0.00048977	0.00030008	0.00049225	-0.00000114	0.00000000
+		-6.27299630	-0.00048969	0.00030003	0.00049217	-0.00000114	0.00000000
+		-6.27299648	-0.00048962	0.00029998	0.00049210	-0.00000114	0.00000000
+		-6.27299667	-0.00048954	0.00029994	0.00049202	-0.00000114	0.00000000
+		-6.27299685	-0.00048946	0.00029989	0.00049194	-0.00000114	0.00000000
+		-6.27299704	-0.00048938	0.00029984	0.00049186	-0.00000114	0.00000000
+		-6.27299722	-0.00048931	0.00029979	0.00049178	-0.00000114	0.00000000
+		-6.27299741	-0.00048923	0.00029975	0.00049171	-0.00000114	0.00000000
+		-6.27299759	-0.00048915	0.00029970	0.00049163	-0.00000114	0.00000000
+		-6.27299778	-0.00048908	0.00029965	0.00049155	-0.00000114	0.00000000
+		-6.27299796	-0.00048900	0.00029960	0.00049147	-0.00000114	0.00000000
+		-6.27299815	-0.00048892	0.00029956	0.00049140	-0.00000114	0.00000000
+		-6.27299833	-0.00048884	0.00029951	0.00049132	-0.00000114	0.00000000
+		-6.27299852	-0.00048877	0.00029946	0.00049124	-0.00000114	0.00000000
+		-6.27299870	-0.00048869	0.00029941	0.00049116	-0.00000114	0.00000000
+		-6.27299889	-0.00048861	0.00029937	0.00049109	-0.00000114	0.00000000
+		-6.27299907	-0.00048854	0.00029932	0.00049101	-0.00000114	0.00000000
+		-6.27299926	-0.00048846	0.00029927	0.00049093	-0.00000114	0.00000000
+		-6.27299944	-0.00048838	0.00029923	0.00049085	-0.00000114	0.00000000
+		-6.27299962	-0.00048830	0.00029918	0.00049078	-0.00000114	0.00000000
+		-6.27299981	-0.00048823	0.00029913	0.00049070	-0.00000114	0.00000000
+		-6.27299999	-0.00048815	0.00029908	0.00049062	-0.00000114	0.00000000
+		-6.27300018	-0.00048807	0.00029904	0.00049054	-0.00000114	0.00000000
+		-6.27300036	-0.00048800	0.00029899	0.00049047	-0.00000114	0.00000000
+		-6.27300055	-0.00048792	0.00029894	0.00049039	-0.00000114	0.00000000
+		-6.27300073	-0.00048784	0.00029890	0.00049031	-0.00000114	0.00000000
+		-6.27300091	-0.00048777	0.00029885	0.00049023	-0.00000114	0.00000000
+		-6.27300110	-0.00048769	0.00029880	0.00049016	-0.00000114	0.00000000
+		-6.27300128	-0.00048761	0.00029875	0.00049008	-0.00000114	0.00000000
+		-6.27300146	-0.00048754	0.00029871	0.00049000	-0.00000114	0.00000000
+		-6.27300165	-0.00048746	0.00029866	0.00048993	-0.00000114	0.00000000
+		-6.27300183	-0.00048738	0.00029861	0.00048985	-0.00000114	0.00000000
+		-6.27300202	-0.00048730	0.00029857	0.00048977	-0.00000114	0.00000000
+		-6.27300220	-0.00048723	0.00029852	0.00048969	-0.00000114	0.00000000
+		-6.27300238	-0.00048715	0.00029847	0.00048962	-0.00000114	0.00000000
+		-6.27300257	-0.00048707	0.00029842	0.00048954	-0.00000114	0.00000000
+		-6.27300275	-0.00048700	0.00029838	0.00048946	-0.00000114	0.00000000
+		-6.27300293	-0.00048692	0.00029833	0.00048939	-0.00000114	0.00000000
+		-6.27300312	-0.00048685	0.00029828	0.00048931	-0.00000114	0.00000000
+		-6.27300330	-0.00048677	0.00029824	0.00048923	-0.00000114	0.00000000
+		-6.27300348	-0.00048669	0.00029819	0.00048916	-0.00000114	0.00000000
+		-6.27300367	-0.00048662	0.00029814	0.00048908	-0.00000114	0.00000000
+		-6.27300385	-0.00048654	0.00029810	0.00048900	-0.00000114	0.00000000
+		-6.27300403	-0.00048646	0.00029805	0.00048892	-0.00000114	0.00000000
+		-6.27300421	-0.00048639	0.00029800	0.00048885	-0.00000114	0.00000000
+		-6.27300440	-0.00048631	0.00029796	0.00048877	-0.00000114	0.00000000
+		-6.27300458	-0.00048623	0.00029791	0.00048869	-0.00000114	0.00000000
+		-6.27300476	-0.00048616	0.00029786	0.00048862	-0.00000114	0.00000000
+		-6.27300495	-0.00048608	0.00029782	0.00048854	-0.00000114	0.00000000
+		-6.27300513	-0.00048600	0.00029777	0.00048846	-0.00000114	0.00000000
+		-6.27300531	-0.00048593	0.00029772	0.00048839	-0.00000114	0.00000000
+		-6.27300549	-0.00048585	0.00029768	0.00048831	-0.00000114	0.00000000
+		-6.27300568	-0.00048578	0.00029763	0.00048823	-0.00000114	0.00000000
+		-6.27300586	-0.00048570	0.00029758	0.00048816	-0.00000114	0.00000000
+		-6.27300604	-0.00048562	0.00029753	0.00048808	-0.00000114	0.00000000
+		-6.27300622	-0.00048555	0.00029749	0.00048800	-0.00000114	0.00000000
+		-6.27300640	-0.00048547	0.00029744	0.00048793	-0.00000114	0.00000000
+		-6.27300659	-0.00048539	0.00029739	0.00048785	-0.00000114	0.00000000
+		-6.27300677	-0.00048532	0.00029735	0.00048777	-0.00000114	0.00000000
+		-6.27300695	-0.00048524	0.00029730	0.00048770	-0.00000114	0.00000000
+		-6.27300713	-0.00048517	0.00029725	0.00048762	-0.00000114	0.00000000
+		-6.27300732	-0.00048509	0.00029721	0.00048755	-0.00000114	0.00000000
+		-6.27300750	-0.00048501	0.00029716	0.00048747	-0.00000114	0.00000000
+		-6.27300768	-0.00048494	0.00029712	0.00048739	-0.00000114	0.00000000
+		-6.27300786	-0.00048486	0.00029707	0.00048732	-0.00000114	0.00000000
+		-6.27300804	-0.00048479	0.00029702	0.00048724	-0.00000114	0.00000000
+		-6.27300822	-0.00048471	0.00029698	0.00048716	-0.00000114	0.00000000
+		-6.27300841	-0.00048463	0.00029693	0.00048709	-0.00000114	0.00000000
+		-6.27300859	-0.00048456	0.00029688	0.00048701	-0.00000114	0.00000000
+		-6.27300877	-0.00048448	0.00029684	0.00048693	-0.00000114	0.00000000
+		-6.27300895	-0.00048441	0.00029679	0.00048686	-0.00000114	0.00000000
+		-6.27300913	-0.00048433	0.00029674	0.00048678	-0.00000114	0.00000000
+		-6.27300931	-0.00048426	0.00029670	0.00048671	-0.00000114	0.00000000
+		-6.27300949	-0.00048418	0.00029665	0.00048663	-0.00000114	0.00000000
+		-6.27300968	-0.00048410	0.00029660	0.00048655	-0.00000114	0.00000000
+		-6.27300986	-0.00048403	0.00029656	0.00048648	-0.00000114	0.00000000
+		-6.27301004	-0.00048395	0.00029651	0.00048640	-0.00000114	0.00000000
+		-6.27301022	-0.00048388	0.00029646	0.00048633	-0.00000114	0.00000000
+		-6.27301040	-0.00048380	0.00029642	0.00048625	-0.00000114	0.00000000
+		-6.27301058	-0.00048373	0.00029637	0.00048617	-0.00000114	0.00000000
+		-6.27301076	-0.00048365	0.00029633	0.00048610	-0.00000114	0.00000000
+		-6.27301094	-0.00048357	0.00029628	0.00048602	-0.00000114	0.00000000
+		-6.27301112	-0.00048350	0.00029623	0.00048595	-0.00000114	0.00000000
+		-6.27301130	-0.00048342	0.00029619	0.00048587	-0.00000114	0.00000000
+		-6.27301148	-0.00048335	0.00029614	0.00048579	-0.00000114	0.00000000
+		-6.27301166	-0.00048327	0.00029609	0.00048572	-0.00000114	0.00000000
+		-6.27301185	-0.00048320	0.00029605	0.00048564	-0.00000114	0.00000000
+		-6.27301203	-0.00048312	0.00029600	0.00048557	-0.00000114	0.00000000
+		-6.27301221	-0.00048305	0.00029596	0.00048549	-0.00000114	0.00000000
+		-6.27301239	-0.00048297	0.00029591	0.00048542	-0.00000114	0.00000000
+		-6.27301257	-0.00048290	0.00029586	0.00048534	-0.00000114	0.00000000
+		-6.27301275	-0.00048282	0.00029582	0.00048526	-0.00000114	0.00000000
+		-6.27301293	-0.00048275	0.00029577	0.00048519	-0.00000114	0.00000000
+		-6.27301311	-0.00048267	0.00029572	0.00048511	-0.00000114	0.00000000
+		-6.27301329	-0.00048259	0.00029568	0.00048504	-0.00000114	0.00000000
+		-6.27301347	-0.00048252	0.00029563	0.00048496	-0.00000114	0.00000000
+		-6.27301365	-0.00048244	0.00029559	0.00048489	-0.00000114	0.00000000
+		-6.27301383	-0.00048237	0.00029554	0.00048481	-0.00000114	0.00000000
+		-6.27301401	-0.00048229	0.00029549	0.00048473	-0.00000114	0.00000000
+		-6.27301419	-0.00048222	0.00029545	0.00048466	-0.00000114	0.00000000
+		-6.27301437	-0.00048214	0.00029540	0.00048458	-0.00000114	0.00000000
+		-6.27301455	-0.00048207	0.00029536	0.00048451	-0.00000114	0.00000000
+		-6.27301473	-0.00048199	0.00029531	0.00048443	-0.00000114	0.00000000
+		-6.27301491	-0.00048192	0.00029526	0.00048436	-0.00000114	0.00000000
+		-6.27301509	-0.00048184	0.00029522	0.00048428	-0.00000114	0.00000000
+		-6.27301526	-0.00048177	0.00029517	0.00048421	-0.00000114	0.00000000
+		-6.27301544	-0.00048169	0.00029513	0.00048413	-0.00000114	0.00000000
+		-6.27301562	-0.00048162	0.00029508	0.00048406	-0.00000114	0.00000000
+		-6.27301580	-0.00048154	0.00029503	0.00048398	-0.00000114	0.00000000
+		-6.27301598	-0.00048147	0.00029499	0.00048390	-0.00000114	0.00000000
+		-6.27301616	-0.00048139	0.00029494	0.00048383	-0.00000114	0.00000000
+		-6.27301634	-0.00048132	0.00029490	0.00048375	-0.00000114	0.00000000
+		-6.27301652	-0.00048124	0.00029485	0.00048368	-0.00000114	0.00000000
+		-6.27301670	-0.00048117	0.00029480	0.00048360	-0.00000114	0.00000000
+		-6.27301688	-0.00048109	0.00029476	0.00048353	-0.00000114	0.00000000
+		-6.27301706	-0.00048102	0.00029471	0.00048345	-0.00000114	0.00000000
+		-6.27301724	-0.00048095	0.00029467	0.00048338	-0.00000114	0.00000000
+		-6.27301741	-0.00048087	0.00029462	0.00048330	-0.00000114	0.00000000
+		-6.27301759	-0.00048080	0.00029458	0.00048323	-0.00000114	0.00000000
+		-6.27301777	-0.00048072	0.00029453	0.00048315	-0.00000114	0.00000000
+		-6.27301795	-0.00048065	0.00029448	0.00048308	-0.00000114	0.00000000
+		-6.27301813	-0.00048057	0.00029444	0.00048300	-0.00000114	0.00000000
+		-6.27301831	-0.00048050	0.00029439	0.00048293	-0.00000114	0.00000000
+		-6.27301849	-0.00048042	0.00029435	0.00048285	-0.00000114	0.00000000
+		-6.27301866	-0.00048035	0.00029430	0.00048278	-0.00000114	0.00000000
+		-6.27301884	-0.00048027	0.00029426	0.00048270	-0.00000114	0.00000000
+		-6.27301902	-0.00048020	0.00029421	0.00048263	-0.00000114	0.00000000
+		-6.27301920	-0.00048012	0.00029416	0.00048255	-0.00000114	0.00000000
+		-6.27301938	-0.00048005	0.00029412	0.00048248	-0.00000114	0.00000000
+		-6.27301956	-0.00047998	0.00029407	0.00048240	-0.00000114	0.00000000
+		-6.27301973	-0.00047990	0.00029403	0.00048233	-0.00000114	0.00000000
+		-6.27301991	-0.00047983	0.00029398	0.00048225	-0.00000114	0.00000000
+		-6.27302009	-0.00047975	0.00029394	0.00048218	-0.00000114	0.00000000
+		-6.27302027	-0.00047968	0.00029389	0.00048211	-0.00000114	0.00000000
+		-6.27302044	-0.00047960	0.00029384	0.00048203	-0.00000114	0.00000000
+		-6.27302062	-0.00047953	0.00029380	0.00048196	-0.00000114	0.00000000
+		-6.27302080	-0.00047946	0.00029375	0.00048188	-0.00000114	0.00000000
+		-6.27302098	-0.00047938	0.00029371	0.00048181	-0.00000114	0.00000000
+		-6.27302116	-0.00047931	0.00029366	0.00048173	-0.00000114	0.00000000
+		-6.27302133	-0.00047923	0.00029362	0.00048166	-0.00000114	0.00000000
+		-6.27302151	-0.00047916	0.00029357	0.00048158	-0.00000114	0.00000000
+		-6.27302169	-0.00047908	0.00029353	0.00048151	-0.00000114	0.00000000
+		-6.27302187	-0.00047901	0.00029348	0.00048143	-0.00000114	0.00000000
+		-6.27302204	-0.00047894	0.00029344	0.00048136	-0.00000114	0.00000000
+		-6.27302222	-0.00047886	0.00029339	0.00048128	-0.00000114	0.00000000
+		-6.27302240	-0.00047879	0.00029334	0.00048121	-0.00000114	0.00000000
+		-6.27302257	-0.00047871	0.00029330	0.00048114	-0.00000114	0.00000000
+		-6.27302275	-0.00047864	0.00029325	0.00048106	-0.00000114	0.00000000
+		-6.27302293	-0.00047857	0.00029321	0.00048099	-0.00000114	0.00000000
+		-6.27302311	-0.00047849	0.00029316	0.00048091	-0.00000114	0.00000000
+		-6.27302328	-0.00047842	0.00029312	0.00048084	-0.00000114	0.00000000
+		-6.27302346	-0.00047834	0.00029307	0.00048076	-0.00000114	0.00000000
+		-6.27302364	-0.00047827	0.00029303	0.00048069	-0.00000114	0.00000000
+		-6.27302381	-0.00047820	0.00029298	0.00048062	-0.00000114	0.00000000
+		-6.27302399	-0.00047812	0.00029294	0.00048054	-0.00000114	0.00000000
+		-6.27302417	-0.00047805	0.00029289	0.00048047	-0.00000114	0.00000000
+		-6.27302434	-0.00047797	0.00029285	0.00048039	-0.00000114	0.00000000
+		-6.27302452	-0.00047790	0.00029280	0.00048032	-0.00000114	0.00000000
+		-6.27302470	-0.00047783	0.00029276	0.00048024	-0.00000114	0.00000000
+		-6.27302487	-0.00047775	0.00029271	0.00048017	-0.00000114	0.00000000
+		-6.27302505	-0.00047768	0.00029267	0.00048010	-0.00000114	0.00000000
+		-6.27302523	-0.00047761	0.00029262	0.00048002	-0.00000114	0.00000000
+		-6.27302540	-0.00047753	0.00029257	0.00047995	-0.00000114	0.00000000
+		-6.27302558	-0.00047746	0.00029253	0.00047987	-0.00000114	0.00000000
+		-6.27302575	-0.00047739	0.00029248	0.00047980	-0.00000114	0.00000000
+		-6.27302593	-0.00047731	0.00029244	0.00047973	-0.00000114	0.00000000
+		-6.27302611	-0.00047724	0.00029239	0.00047965	-0.00000114	0.00000000
+		-6.27302628	-0.00047716	0.00029235	0.00047958	-0.00000114	0.00000000
+		-6.27302646	-0.00047709	0.00029230	0.00047950	-0.00000114	0.00000000
+		-6.27302664	-0.00047702	0.00029226	0.00047943	-0.00000114	0.00000000
+		-6.27302681	-0.00047694	0.00029221	0.00047936	-0.00000114	0.00000000
+		-6.27302699	-0.00047687	0.00029217	0.00047928	-0.00000114	0.00000000
+		-6.27302716	-0.00047680	0.00029212	0.00047921	-0.00000114	0.00000000
+		-6.27302734	-0.00047672	0.00029208	0.00047913	-0.00000114	0.00000000
+		-6.27302751	-0.00047665	0.00029203	0.00047906	-0.00000114	0.00000000
+		-6.27302769	-0.00047658	0.00029199	0.00047899	-0.00000114	0.00000000
+		-6.27302787	-0.00047650	0.00029194	0.00047891	-0.00000114	0.00000000
+		-6.27302804	-0.00047643	0.00029190	0.00047884	-0.00000114	0.00000000
+		-6.27302822	-0.00047636	0.00029185	0.00047877	-0.00000114	0.00000000
+		-6.27302839	-0.00047628	0.00029181	0.00047869	-0.00000114	0.00000000
+		-6.27302857	-0.00047621	0.00029176	0.00047862	-0.00000114	0.00000000
+		-6.27302874	-0.00047614	0.00029172	0.00047855	-0.00000114	0.00000000
+		-6.27302892	-0.00047606	0.00029167	0.00047847	-0.00000114	0.00000000
+		-6.27302909	-0.00047599	0.00029163	0.00047840	-0.00000114	0.00000000
+		-6.27302927	-0.00047592	0.00029158	0.00047832	-0.00000114	0.00000000
+		-6.27302944	-0.00047584	0.00029154	0.00047825	-0.00000114	0.00000000
+		-6.27302962	-0.00047577	0.00029150	0.00047818	-0.00000114	0.00000000
+		-6.27302979	-0.00047570	0.00029145	0.00047810	-0.00000114	0.00000000
+		-6.27302997	-0.00047562	0.00029141	0.00047803	-0.00000114	0.00000000
+		-6.27303014	-0.00047555	0.00029136	0.00047796	-0.00000114	0.00000000
+		-6.27303032	-0.00047548	0.00029132	0.00047788	-0.00000114	0.00000000
+		-6.27303049	-0.00047541	0.00029127	0.00047781	-0.00000114	0.00000000
+		-6.27303067	-0.00047533	0.00029123	0.00047774	-0.00000114	0.00000000
+		-6.27303084	-0.00047526	0.00029118	0.00047766	-0.00000114	0.00000000
+		-6.27303102	-0.00047519	0.00029114	0.00047759	-0.00000114	0.00000000
+		-6.27303119	-0.00047511	0.00029109	0.00047752	-0.00000114	0.00000000
+		-6.27303137	-0.00047504	0.00029105	0.00047744	-0.00000114	0.00000000
+		-6.27303154	-0.00047497	0.00029100	0.00047737	-0.00000114	0.00000000
+		-6.27303171	-0.00047490	0.00029096	0.00047730	-0.00000114	0.00000000
+		-6.27303189	-0.00047482	0.00029091	0.00047722	-0.00000114	0.00000000
+		-6.27303206	-0.00047475	0.00029087	0.00047715	-0.00000114	0.00000000
+		-6.27303224	-0.00047468	0.00029082	0.00047708	-0.00000114	0.00000000
+		-6.27303241	-0.00047460	0.00029078	0.00047700	-0.00000114	0.00000000
+		-6.27303259	-0.00047453	0.00029073	0.00047693	-0.00000114	0.00000000
+		-6.27303276	-0.00047446	0.00029069	0.00047686	-0.00000114	0.00000000
+		-6.27303293	-0.00047439	0.00029065	0.00047678	-0.00000114	0.00000000
+		-6.27303311	-0.00047431	0.00029060	0.00047671	-0.00000114	0.00000000
+		-6.27303328	-0.00047424	0.00029056	0.00047664	-0.00000114	0.00000000
+		-6.27303345	-0.00047417	0.00029051	0.00047657	-0.00000114	0.00000000
+		-6.27303363	-0.00047410	0.00029047	0.00047649	-0.00000114	0.00000000
+		-6.27303380	-0.00047402	0.00029042	0.00047642	-0.00000114	0.00000000
+		-6.27303398	-0.00047395	0.00029038	0.00047635	-0.00000114	0.00000000
+		-6.27303415	-0.00047388	0.00029033	0.00047627	-0.00000114	0.00000000
+		-6.27303432	-0.00047380	0.00029029	0.00047620	-0.00000114	0.00000000
+		-6.27303450	-0.00047373	0.00029025	0.00047613	-0.00000114	0.00000000
+		-6.27303467	-0.00047366	0.00029020	0.00047606	-0.00000114	0.00000000
+		-6.27303484	-0.00047359	0.00029016	0.00047598	-0.00000114	0.00000000
+		-6.27303502	-0.00047351	0.00029011	0.00047591	-0.00000114	0.00000000
+		-6.27303519	-0.00047344	0.00029007	0.00047584	-0.00000114	0.00000000
+		-6.27303536	-0.00047337	0.00029002	0.00047576	-0.00000114	0.00000000
+		-6.27303554	-0.00047330	0.00028998	0.00047569	-0.00000114	0.00000000
+		-6.27303571	-0.00047323	0.00028993	0.00047562	-0.00000114	0.00000000
+		-6.27303588	-0.00047315	0.00028989	0.00047555	-0.00000114	0.00000000
+		-6.27303606	-0.00047308	0.00028985	0.00047547	-0.00000114	0.00000000
+		-6.27303623	-0.00047301	0.00028980	0.00047540	-0.00000114	0.00000000
+		-6.27303640	-0.00047294	0.00028976	0.00047533	-0.00000114	0.00000000
+		-6.27303658	-0.00047286	0.00028971	0.00047526	-0.00000114	0.00000000
+		-6.27303675	-0.00047279	0.00028967	0.00047518	-0.00000114	0.00000000
+		-6.27303692	-0.00047272	0.00028962	0.00047511	-0.00000114	0.00000000
+		-6.27303709	-0.00047265	0.00028958	0.00047504	-0.00000114	0.00000000
+		-6.27303727	-0.00047258	0.00028954	0.00047497	-0.00000114	0.00000000
+		-6.27303744	-0.00047250	0.00028949	0.00047489	-0.00000114	0.00000000
+		-6.27303761	-0.00047243	0.00028945	0.00047482	-0.00000114	0.00000000
+		-6.27303778	-0.00047236	0.00028940	0.00047475	-0.00000114	0.00000000
+		-6.27303796	-0.00047229	0.00028936	0.00047468	-0.00000114	0.00000000
+		-6.27303813	-0.00047221	0.00028931	0.00047460	-0.00000114	0.00000000
+		-6.27303830	-0.00047214	0.00028927	0.00047453	-0.00000114	0.00000000
+		-6.27303847	-0.00047207	0.00028923	0.00047446	-0.00000114	0.00000000
+		-6.27303865	-0.00047200	0.00028918	0.00047439	-0.00000114	0.00000000
+		-6.27303882	-0.00047193	0.00028914	0.00047431	-0.00000114	0.00000000
+		-6.27303899	-0.00047185	0.00028909	0.00047424	-0.00000114	0.00000000
+		-6.27303916	-0.00047178	0.00028905	0.00047417	-0.00000114	0.00000000
+		-6.27303933	-0.00047171	0.00028901	0.00047410	-0.00000114	0.00000000
+		-6.27303951	-0.00047164	0.00028896	0.00047402	-0.00000114	0.00000000
+		-6.27303968	-0.00047157	0.00028892	0.00047395	-0.00000114	0.00000000
+		-6.27303985	-0.00047150	0.00028887	0.00047388	-0.00000114	0.00000000
+		-6.27304002	-0.00047142	0.00028883	0.00047381	-0.00000114	0.00000000
+		-6.27304019	-0.00047135	0.00028879	0.00047374	-0.00000114	0.00000000
+		-6.27304037	-0.00047128	0.00028874	0.00047366	-0.00000114	0.00000000
+		-6.27304054	-0.00047121	0.00028870	0.00047359	-0.00000114	0.00000000
+		-6.27304071	-0.00047114	0.00028865	0.00047352	-0.00000114	0.00000000
+		-6.27304088	-0.00047106	0.00028861	0.00047345	-0.00000114	0.00000000
+		-6.27304105	-0.00047099	0.00028857	0.00047337	-0.00000114	0.00000000
+		-6.27304122	-0.00047092	0.00028852	0.00047330	-0.00000114	0.00000000
+		-6.27304139	-0.00047085	0.00028848	0.00047323	-0.00000114	0.00000000
+		-6.27304157	-0.00047078	0.00028843	0.00047316	-0.00000114	0.00000000
+		-6.27304174	-0.00047071	0.00028839	0.00047309	-0.00000114	0.00000000
+		-6.27304191	-0.00047064	0.00028835	0.00047302	-0.00000114	0.00000000
+		-6.27304208	-0.00047056	0.00028830	0.00047294	-0.00000114	0.00000000
+		-6.27304225	-0.00047049	0.00028826	0.00047287	-0.00000114	0.00000000
+		-6.27304242	-0.00047042	0.00028822	0.00047280	-0.00000114	0.00000000
+		-6.27304259	-0.00047035	0.00028817	0.00047273	-0.00000114	0.00000000
+		-6.27304276	-0.00047028	0.00028813	0.00047266	-0.00000114	0.00000000
+		-6.27304294	-0.00047021	0.00028808	0.00047258	-0.00000114	0.00000000
+		-6.27304311	-0.00047013	0.00028804	0.00047251	-0.00000114	0.00000000
+		-6.27304328	-0.00047006	0.00028800	0.00047244	-0.00000114	0.00000000
+		-6.27304345	-0.00046999	0.00028795	0.00047237	-0.00000114	0.00000000
+		-6.27304362	-0.00046992	0.00028791	0.00047230	-0.00000114	0.00000000
+		-6.27304379	-0.00046985	0.00028787	0.00047223	-0.00000114	0.00000000
+		-6.27304396	-0.00046978	0.00028782	0.00047215	-0.00000114	0.00000000
+		-6.27304413	-0.00046971	0.00028778	0.00047208	-0.00000114	0.00000000
+		-6.27304430	-0.00046964	0.00028773	0.00047201	-0.00000114	0.00000000
+		-6.27304447	-0.00046956	0.00028769	0.00047194	-0.00000114	0.00000000
+		-6.27304464	-0.00046949	0.00028765	0.00047187	-0.00000114	0.00000000
+		-6.27304481	-0.00046942	0.00028760	0.00047180	-0.00000114	0.00000000
+		-6.27304498	-0.00046935	0.00028756	0.00047172	-0.00000114	0.00000000
+		-6.27304515	-0.00046928	0.00028752	0.00047165	-0.00000114	0.00000000
+		-6.27304532	-0.00046921	0.00028747	0.00047158	-0.00000114	0.00000000
+		-6.27304549	-0.00046914	0.00028743	0.00047151	-0.00000114	0.00000000
+		-6.27304566	-0.00046907	0.00028738	0.00047144	-0.00000114	0.00000000
+		-6.27304583	-0.00046900	0.00028734	0.00047137	-0.00000114	0.00000000
+		-6.27304600	-0.00046892	0.00028730	0.00047130	-0.00000114	0.00000000
+		-6.27304617	-0.00046885	0.00028725	0.00047122	-0.00000114	0.00000000
+		-6.27304634	-0.00046878	0.00028721	0.00047115	-0.00000114	0.00000000
+		-6.27304651	-0.00046871	0.00028717	0.00047108	-0.00000114	0.00000000
+		-6.27304668	-0.00046864	0.00028712	0.00047101	-0.00000114	0.00000000
+		-6.27304685	-0.00046857	0.00028708	0.00047094	-0.00000114	0.00000000
+		-6.27304702	-0.00046850	0.00028704	0.00047087	-0.00000114	0.00000000
+		-6.27304719	-0.00046843	0.00028699	0.00047080	-0.00000114	0.00000000
+		-6.27304736	-0.00046836	0.00028695	0.00047072	-0.00000114	0.00000000
+		-6.27304753	-0.00046829	0.00028691	0.00047065	-0.00000114	0.00000000
+		-6.27304770	-0.00046821	0.00028686	0.00047058	-0.00000114	0.00000000
+		-6.27304787	-0.00046814	0.00028682	0.00047051	-0.00000114	0.00000000
+		-6.27304804	-0.00046807	0.00028678	0.00047044	-0.00000114	0.00000000
+		-6.27304821	-0.00046800	0.00028673	0.00047037	-0.00000114	0.00000000
+		-6.27304838	-0.00046793	0.00028669	0.00047030	-0.00000114	0.00000000
+		-6.27304855	-0.00046786	0.00028665	0.00047023	-0.00000114	0.00000000
+		-6.27304872	-0.00046779	0.00028660	0.00047016	-0.00000114	0.00000000
+		-6.27304889	-0.00046772	0.00028656	0.00047008	-0.00000114	0.00000000
+		-6.27304906	-0.00046765	0.00028652	0.00047001	-0.00000114	0.00000000
+		-6.27304922	-0.00046758	0.00028647	0.00046994	-0.00000114	0.00000000
+		-6.27304939	-0.00046751	0.00028643	0.00046987	-0.00000114	0.00000000
+		-6.27304956	-0.00046744	0.00028639	0.00046980	-0.00000114	0.00000000
+		-6.27304973	-0.00046737	0.00028634	0.00046973	-0.00000114	0.00000000
+		-6.27304990	-0.00046730	0.00028630	0.00046966	-0.00000114	0.00000000
+		-6.27305007	-0.00046723	0.00028626	0.00046959	-0.00000114	0.00000000
+		-6.27305024	-0.00046715	0.00028621	0.00046952	-0.00000114	0.00000000
+		-6.27305041	-0.00046708	0.00028617	0.00046945	-0.00000114	0.00000000
+		-6.27305057	-0.00046701	0.00028613	0.00046938	-0.00000114	0.00000000
+		-6.27305074	-0.00046694	0.00028608	0.00046930	-0.00000114	0.00000000
+		-6.27305091	-0.00046687	0.00028604	0.00046923	-0.00000114	0.00000000
+		-6.27305108	-0.00046680	0.00028600	0.00046916	-0.00000114	0.00000000
+		-6.27305125	-0.00046673	0.00028595	0.00046909	-0.00000114	0.00000000
+		-6.27305142	-0.00046666	0.00028591	0.00046902	-0.00000114	0.00000000
+		-6.27305159	-0.00046659	0.00028587	0.00046895	-0.00000114	0.00000000
+		-6.27305175	-0.00046652	0.00028582	0.00046888	-0.00000114	0.00000000
+		-6.27305192	-0.00046645	0.00028578	0.00046881	-0.00000114	0.00000000
+		-6.27305209	-0.00046638	0.00028574	0.00046874	-0.00000114	0.00000000
+		-6.27305226	-0.00046631	0.00028570	0.00046867	-0.00000114	0.00000000
+		-6.27305243	-0.00046624	0.00028565	0.00046860	-0.00000114	0.00000000
+		-6.27305259	-0.00046617	0.00028561	0.00046853	-0.00000114	0.00000000
+		-6.27305276	-0.00046610	0.00028557	0.00046846	-0.00000114	0.00000000
+		-6.27305293	-0.00046603	0.00028552	0.00046839	-0.00000114	0.00000000
+		-6.27305310	-0.00046596	0.00028548	0.00046832	-0.00000114	0.00000000
+		-6.27305327	-0.00046589	0.00028544	0.00046824	-0.00000114	0.00000000
+		-6.27305343	-0.00046582	0.00028539	0.00046817	-0.00000114	0.00000000
+		-6.27305360	-0.00046575	0.00028535	0.00046810	-0.00000114	0.00000000
+		-6.27305377	-0.00046568	0.00028531	0.00046803	-0.00000114	0.00000000
+		-6.27305394	-0.00046561	0.00028527	0.00046796	-0.00000114	0.00000000
+		-6.27305410	-0.00046554	0.00028522	0.00046789	-0.00000114	0.00000000
+		-6.27305427	-0.00046547	0.00028518	0.00046782	-0.00000114	0.00000000
+		-6.27305444	-0.00046540	0.00028514	0.00046775	-0.00000114	0.00000000
+		-6.27305461	-0.00046533	0.00028509	0.00046768	-0.00000114	0.00000000
+		-6.27305477	-0.00046526	0.00028505	0.00046761	-0.00000114	0.00000000
+		-6.27305494	-0.00046519	0.00028501	0.00046754	-0.00000114	0.00000000
+		-6.27305511	-0.00046512	0.00028497	0.00046747	-0.00000114	0.00000000
+		-6.27305528	-0.00046505	0.00028492	0.00046740	-0.00000114	0.00000000
+		-6.27305544	-0.00046498	0.00028488	0.00046733	-0.00000114	0.00000000
+		-6.27305561	-0.00046491	0.00028484	0.00046726	-0.00000114	0.00000000
+		-6.27305578	-0.00046484	0.00028479	0.00046719	-0.00000114	0.00000000
+		-6.27305594	-0.00046477	0.00028475	0.00046712	-0.00000114	0.00000000
+		-6.27305611	-0.00046470	0.00028471	0.00046705	-0.00000114	0.00000000
+		-6.27305628	-0.00046463	0.00028467	0.00046698	-0.00000114	0.00000000
+		-6.27305645	-0.00046456	0.00028462	0.00046691	-0.00000114	0.00000000
+		-6.27305661	-0.00046449	0.00028458	0.00046684	-0.00000114	0.00000000
+		-6.27305678	-0.00046442	0.00028454	0.00046677	-0.00000114	0.00000000
+		-6.27305695	-0.00046435	0.00028449	0.00046670	-0.00000114	0.00000000
+		-6.27305711	-0.00046428	0.00028445	0.00046663	-0.00000114	0.00000000
+		-6.27305728	-0.00046421	0.00028441	0.00046656	-0.00000114	0.00000000
+		-6.27305745	-0.00046414	0.00028437	0.00046649	-0.00000114	0.00000000
+		-6.27305761	-0.00046407	0.00028432	0.00046642	-0.00000114	0.00000000
+		-6.27305778	-0.00046400	0.00028428	0.00046635	-0.00000114	0.00000000
+		-6.27305795	-0.00046393	0.00028424	0.00046628	-0.00000114	0.00000000
+		-6.27305811	-0.00046386	0.00028420	0.00046621	-0.00000114	0.00000000
+		-6.27305828	-0.00046380	0.00028415	0.00046614	-0.00000114	0.00000000
+		-6.27305844	-0.00046373	0.00028411	0.00046607	-0.00000114	0.00000000
+		-6.27305861	-0.00046366	0.00028407	0.00046600	-0.00000114	0.00000000
+		-6.27305878	-0.00046359	0.00028403	0.00046593	-0.00000114	0.00000000
+		-6.27305894	-0.00046352	0.00028398	0.00046586	-0.00000114	0.00000000
+		-6.27305911	-0.00046345	0.00028394	0.00046579	-0.00000114	0.00000000
+		-6.27305927	-0.00046338	0.00028390	0.00046572	-0.00000114	0.00000000
+		-6.27305944	-0.00046331	0.00028386	0.00046565	-0.00000114	0.00000000
+		-6.27305961	-0.00046324	0.00028381	0.00046558	-0.00000114	0.00000000
+		-6.27305977	-0.00046317	0.00028377	0.00046551	-0.00000114	0.00000000
+		-6.27305994	-0.00046310	0.00028373	0.00046544	-0.00000114	0.00000000
+		-6.27306010	-0.00046303	0.00028369	0.00046537	-0.00000114	0.00000000
+		-6.27306027	-0.00046296	0.00028364	0.00046530	-0.00000114	0.00000000
+		-6.27306044	-0.00046289	0.00028360	0.00046523	-0.00000114	0.00000000
+		-6.27306060	-0.00046282	0.00028356	0.00046516	-0.00000114	0.00000000
+		-6.27306077	-0.00046276	0.00028352	0.00046509	-0.00000114	0.00000000
+		-6.27306093	-0.00046269	0.00028347	0.00046502	-0.00000114	0.00000000
+		-6.27306110	-0.00046262	0.00028343	0.00046496	-0.00000114	0.00000000
+		-6.27306126	-0.00046255	0.00028339	0.00046489	-0.00000114	0.00000000
+		-6.27306143	-0.00046248	0.00028335	0.00046482	-0.00000114	0.00000000
+		-6.27306159	-0.00046241	0.00028330	0.00046475	-0.00000114	0.00000000
+		-6.27306176	-0.00046234	0.00028326	0.00046468	-0.00000114	0.00000000
+		-6.27306192	-0.00046227	0.00028322	0.00046461	-0.00000114	0.00000000
+		-6.27306209	-0.00046220	0.00028318	0.00046454	-0.00000114	0.00000000
+		-6.27306225	-0.00046213	0.00028314	0.00046447	-0.00000114	0.00000000
+		-6.27306242	-0.00046206	0.00028309	0.00046440	-0.00000114	0.00000000
+		-6.27306259	-0.00046200	0.00028305	0.00046433	-0.00000114	0.00000000
+		-6.27306275	-0.00046193	0.00028301	0.00046426	-0.00000114	0.00000000
+		-6.27306292	-0.00046186	0.00028297	0.00046419	-0.00000114	0.00000000
+		-6.27306308	-0.00046179	0.00028292	0.00046412	-0.00000114	0.00000000
+		-6.27306324	-0.00046172	0.00028288	0.00046405	-0.00000114	0.00000000
+		-6.27306341	-0.00046165	0.00028284	0.00046398	-0.00000114	0.00000000
+		-6.27306357	-0.00046158	0.00028280	0.00046392	-0.00000114	0.00000000
+		-6.27306374	-0.00046151	0.00028275	0.00046385	-0.00000114	0.00000000
+		-6.27306390	-0.00046144	0.00028271	0.00046378	-0.00000114	0.00000000
+		-6.27306407	-0.00046138	0.00028267	0.00046371	-0.00000114	0.00000000
+		-6.27306423	-0.00046131	0.00028263	0.00046364	-0.00000114	0.00000000
+		-6.27306440	-0.00046124	0.00028259	0.00046357	-0.00000114	0.00000000
+		-6.27306456	-0.00046117	0.00028254	0.00046350	-0.00000114	0.00000000
+		-6.27306473	-0.00046110	0.00028250	0.00046343	-0.00000114	0.00000000
+		-6.27306489	-0.00046103	0.00028246	0.00046336	-0.00000114	0.00000000
+		-6.27306505	-0.00046096	0.00028242	0.00046329	-0.00000114	0.00000000
+		-6.27306522	-0.00046090	0.00028238	0.00046322	-0.00000114	0.00000000
+		-6.27306538	-0.00046083	0.00028233	0.00046316	-0.00000114	0.00000000
+		-6.27306555	-0.00046076	0.00028229	0.00046309	-0.00000114	0.00000000
+		-6.27306571	-0.00046069	0.00028225	0.00046302	-0.00000114	0.00000000
+		-6.27306588	-0.00046062	0.00028221	0.00046295	-0.00000114	0.00000000
+		-6.27306604	-0.00046055	0.00028217	0.00046288	-0.00000114	0.00000000
+		-6.27306620	-0.00046048	0.00028212	0.00046281	-0.00000114	0.00000000
+		-6.27306637	-0.00046042	0.00028208	0.00046274	-0.00000114	0.00000000
+		-6.27306653	-0.00046035	0.00028204	0.00046267	-0.00000114	0.00000000
+		-6.27306670	-0.00046028	0.00028200	0.00046260	-0.00000114	0.00000000
+		-6.27306686	-0.00046021	0.00028196	0.00046254	-0.00000114	0.00000000
+		-6.27306702	-0.00046014	0.00028191	0.00046247	-0.00000114	0.00000000
+		-6.27306719	-0.00046007	0.00028187	0.00046240	-0.00000114	0.00000000
+		-6.27306735	-0.00046000	0.00028183	0.00046233	-0.00000114	0.00000000
+		-6.27306751	-0.00045994	0.00028179	0.00046226	-0.00000114	0.00000000
+		-6.27306768	-0.00045987	0.00028175	0.00046219	-0.00000114	0.00000000
+		-6.27306784	-0.00045980	0.00028170	0.00046212	-0.00000114	0.00000000
+		-6.27306800	-0.00045973	0.00028166	0.00046205	-0.00000114	0.00000000
+		-6.27306817	-0.00045966	0.00028162	0.00046199	-0.00000114	0.00000000
+		-6.27306833	-0.00045959	0.00028158	0.00046192	-0.00000114	0.00000000
+		-6.27306849	-0.00045953	0.00028154	0.00046185	-0.00000114	0.00000000
+		-6.27306866	-0.00045946	0.00028150	0.00046178	-0.00000114	0.00000000
+		-6.27306882	-0.00045939	0.00028145	0.00046171	-0.00000114	0.00000000
+		-6.27306898	-0.00045932	0.00028141	0.00046164	-0.00000114	0.00000000
+		-6.27306915	-0.00045925	0.00028137	0.00046158	-0.00000114	0.00000000
+		-6.27306931	-0.00045919	0.00028133	0.00046151	-0.00000114	0.00000000
+		-6.27306947	-0.00045912	0.00028129	0.00046144	-0.00000114	0.00000000
+		-6.27306964	-0.00045905	0.00028124	0.00046137	-0.00000114	0.00000000
+		-6.27306980	-0.00045898	0.00028120	0.00046130	-0.00000114	0.00000000
+		-6.27306996	-0.00045891	0.00028116	0.00046123	-0.00000114	0.00000000
+		-6.27307012	-0.00045885	0.00028112	0.00046116	-0.00000114	0.00000000
+		-6.27307029	-0.00045878	0.00028108	0.00046110	-0.00000114	0.00000000
+		-6.27307045	-0.00045871	0.00028104	0.00046103	-0.00000114	0.00000000
+		-6.27307061	-0.00045864	0.00028099	0.00046096	-0.00000114	0.00000000
+		-6.27307078	-0.00045857	0.00028095	0.00046089	-0.00000114	0.00000000
+		-6.27307094	-0.00045851	0.00028091	0.00046082	-0.00000114	0.00000000
+		-6.27307110	-0.00045844	0.00028087	0.00046075	-0.00000114	0.00000000
+		-6.27307126	-0.00045837	0.00028083	0.00046069	-0.00000114	0.00000000
+		-6.27307142	-0.00045830	0.00028079	0.00046062	-0.00000114	0.00000000
+		-6.27307159	-0.00045823	0.00028074	0.00046055	-0.00000114	0.00000000
+		-6.27307175	-0.00045817	0.00028070	0.00046048	-0.00000114	0.00000000
+		-6.27307191	-0.00045810	0.00028066	0.00046041	-0.00000114	0.00000000
+		-6.27307207	-0.00045803	0.00028062	0.00046035	-0.00000114	0.00000000
+		-6.27307224	-0.00045796	0.00028058	0.00046028	-0.00000114	0.00000000
+		-6.27307240	-0.00045790	0.00028054	0.00046021	-0.00000114	0.00000000
+		-6.27307256	-0.00045783	0.00028050	0.00046014	-0.00000114	0.00000000
+		-6.27307272	-0.00045776	0.00028045	0.00046007	-0.00000114	0.00000000
+		-6.27307288	-0.00045769	0.00028041	0.00046001	-0.00000114	0.00000000
+		-6.27307305	-0.00045762	0.00028037	0.00045994	-0.00000114	0.00000000
+		-6.27307321	-0.00045756	0.00028033	0.00045987	-0.00000114	0.00000000
+		-6.27307337	-0.00045749	0.00028029	0.00045980	-0.00000114	0.00000000
+		-6.27307353	-0.00045742	0.00028025	0.00045973	-0.00000114	0.00000000
+		-6.27307369	-0.00045735	0.00028021	0.00045967	-0.00000114	0.00000000
+		-6.27307386	-0.00045729	0.00028016	0.00045960	-0.00000114	0.00000000
+		-6.27307402	-0.00045722	0.00028012	0.00045953	-0.00000114	0.00000000
+		-6.27307418	-0.00045715	0.00028008	0.00045946	-0.00000114	0.00000000
+		-6.27307434	-0.00045708	0.00028004	0.00045939	-0.00000114	0.00000000
+		-6.27307450	-0.00045702	0.00028000	0.00045933	-0.00000114	0.00000000
+		-6.27307466	-0.00045695	0.00027996	0.00045926	-0.00000114	0.00000000
+		-6.27307482	-0.00045688	0.00027992	0.00045919	-0.00000114	0.00000000
+		-6.27307499	-0.00045681	0.00027987	0.00045912	-0.00000114	0.00000000
+		-6.27307515	-0.00045675	0.00027983	0.00045905	-0.00000114	0.00000000
+		-6.27307531	-0.00045668	0.00027979	0.00045899	-0.00000114	0.00000000
+		-6.27307547	-0.00045661	0.00027975	0.00045892	-0.00000114	0.00000000
+		-6.27307563	-0.00045654	0.00027971	0.00045885	-0.00000114	0.00000000
+		-6.27307579	-0.00045648	0.00027967	0.00045878	-0.00000114	0.00000000
+		-6.27307595	-0.00045641	0.00027963	0.00045872	-0.00000114	0.00000000
+		-6.27307611	-0.00045634	0.00027959	0.00045865	-0.00000114	0.00000000
+		-6.27307628	-0.00045628	0.00027954	0.00045858	-0.00000114	0.00000000
+		-6.27307644	-0.00045621	0.00027950	0.00045851	-0.00000114	0.00000000
+		-6.27307660	-0.00045614	0.00027946	0.00045845	-0.00000114	0.00000000
+		-6.27307676	-0.00045607	0.00027942	0.00045838	-0.00000114	0.00000000
+		-6.27307692	-0.00045601	0.00027938	0.00045831	-0.00000114	0.00000000
+		-6.27307708	-0.00045594	0.00027934	0.00045824	-0.00000114	0.00000000
+		-6.27307724	-0.00045587	0.00027930	0.00045818	-0.00000114	0.00000000
+		-6.27307740	-0.00045581	0.00027926	0.00045811	-0.00000114	0.00000000
+		-6.27307756	-0.00045574	0.00027921	0.00045804	-0.00000114	0.00000000
+		-6.27307772	-0.00045567	0.00027917	0.00045797	-0.00000114	0.00000000
+		-6.27307788	-0.00045560	0.00027913	0.00045791	-0.00000114	0.00000000
+		-6.27307804	-0.00045554	0.00027909	0.00045784	-0.00000114	0.00000000
+		-6.27307820	-0.00045547	0.00027905	0.00045777	-0.00000114	0.00000000
+		-6.27307836	-0.00045540	0.00027901	0.00045770	-0.00000114	0.00000000
+		-6.27307852	-0.00045534	0.00027897	0.00045764	-0.00000114	0.00000000
+		-6.27307868	-0.00045527	0.00027893	0.00045757	-0.00000114	0.00000000
+		-6.27307884	-0.00045520	0.00027889	0.00045750	-0.00000114	0.00000000
+		-6.27307900	-0.00045514	0.00027884	0.00045743	-0.00000114	0.00000000
+		-6.27307916	-0.00045507	0.00027880	0.00045737	-0.00000114	0.00000000
+		-6.27307932	-0.00045500	0.00027876	0.00045730	-0.00000114	0.00000000
+		-6.27307949	-0.00045493	0.00027872	0.00045723	-0.00000114	0.00000000
+		-6.27307964	-0.00045487	0.00027868	0.00045717	-0.00000114	0.00000000
+		-6.27307980	-0.00045480	0.00027864	0.00045710	-0.00000114	0.00000000
+		-6.27307996	-0.00045473	0.00027860	0.00045703	-0.00000114	0.00000000
+		-6.27308012	-0.00045467	0.00027856	0.00045696	-0.00000114	0.00000000
+		-6.27308028	-0.00045460	0.00027852	0.00045690	-0.00000114	0.00000000
+		-6.27308044	-0.00045453	0.00027848	0.00045683	-0.00000114	0.00000000
+		-6.27308060	-0.00045447	0.00027844	0.00045676	-0.00000114	0.00000000
+		-6.27308076	-0.00045440	0.00027839	0.00045670	-0.00000114	0.00000000
+		-6.27308092	-0.00045433	0.00027835	0.00045663	-0.00000114	0.00000000
+		-6.27308108	-0.00045427	0.00027831	0.00045656	-0.00000114	0.00000000
+		-6.27308124	-0.00045420	0.00027827	0.00045650	-0.00000114	0.00000000
+		-6.27308140	-0.00045413	0.00027823	0.00045643	-0.00000114	0.00000000
+		-6.27308156	-0.00045407	0.00027819	0.00045636	-0.00000114	0.00000000
+		-6.27308172	-0.00045400	0.00027815	0.00045629	-0.00000114	0.00000000
+		-6.27308188	-0.00045393	0.00027811	0.00045623	-0.00000114	0.00000000
+		-6.27308204	-0.00045387	0.00027807	0.00045616	-0.00000114	0.00000000
+		-6.27308220	-0.00045380	0.00027803	0.00045609	-0.00000114	0.00000000
+		-6.27308236	-0.00045373	0.00027799	0.00045603	-0.00000114	0.00000000
+		-6.27308252	-0.00045367	0.00027795	0.00045596	-0.00000114	0.00000000
+		-6.27308268	-0.00045360	0.00027790	0.00045589	-0.00000114	0.00000000
+		-6.27308284	-0.00045353	0.00027786	0.00045583	-0.00000114	0.00000000
+		-6.27308299	-0.00045347	0.00027782	0.00045576	-0.00000114	0.00000000
+		-6.27308315	-0.00045340	0.00027778	0.00045569	-0.00000114	0.00000000
+		-6.27308331	-0.00045334	0.00027774	0.00045563	-0.00000114	0.00000000
+		-6.27308347	-0.00045327	0.00027770	0.00045556	-0.00000114	0.00000000
+		-6.27308363	-0.00045320	0.00027766	0.00045549	-0.00000114	0.00000000
+		-6.27308379	-0.00045314	0.00027762	0.00045543	-0.00000114	0.00000000
+		-6.27308395	-0.00045307	0.00027758	0.00045536	-0.00000114	0.00000000
+		-6.27308411	-0.00045300	0.00027754	0.00045529	-0.00000114	0.00000000
+		-6.27308426	-0.00045294	0.00027750	0.00045523	-0.00000114	0.00000000
+		-6.27308442	-0.00045287	0.00027746	0.00045516	-0.00000114	0.00000000
+		-6.27308458	-0.00045281	0.00027742	0.00045509	-0.00000114	0.00000000
+		-6.27308474	-0.00045274	0.00027738	0.00045503	-0.00000114	0.00000000
+		-6.27308490	-0.00045267	0.00027734	0.00045496	-0.00000114	0.00000000
+		-6.27308506	-0.00045261	0.00027729	0.00045489	-0.00000114	0.00000000
+		-6.27308522	-0.00045254	0.00027725	0.00045483	-0.00000114	0.00000000
+		-6.27308537	-0.00045247	0.00027721	0.00045476	-0.00000114	0.00000000
+		-6.27308553	-0.00045241	0.00027717	0.00045469	-0.00000114	0.00000000
+		-6.27308569	-0.00045234	0.00027713	0.00045463	-0.00000114	0.00000000
+		-6.27308585	-0.00045228	0.00027709	0.00045456	-0.00000114	0.00000000
+		-6.27308601	-0.00045221	0.00027705	0.00045449	-0.00000114	0.00000000
+		-6.27308616	-0.00045214	0.00027701	0.00045443	-0.00000114	0.00000000
+		-6.27308632	-0.00045208	0.00027697	0.00045436	-0.00000114	0.00000000
+		-6.27308648	-0.00045201	0.00027693	0.00045430	-0.00000114	0.00000000
+		-6.27308664	-0.00045195	0.00027689	0.00045423	-0.00000114	0.00000000
+		-6.27308680	-0.00045188	0.00027685	0.00045416	-0.00000114	0.00000000
+		-6.27308695	-0.00045181	0.00027681	0.00045410	-0.00000114	0.00000000
+		-6.27308711	-0.00045175	0.00027677	0.00045403	-0.00000114	0.00000000
+		-6.27308727	-0.00045168	0.00027673	0.00045396	-0.00000114	0.00000000
+		-6.27308743	-0.00045162	0.00027669	0.00045390	-0.00000114	0.00000000
+		-6.27308759	-0.00045155	0.00027665	0.00045383	-0.00000114	0.00000000
+		-6.27308774	-0.00045148	0.00027661	0.00045376	-0.00000114	0.00000000
+		-6.27308790	-0.00045142	0.00027657	0.00045370	-0.00000114	0.00000000
+		-6.27308806	-0.00045135	0.00027653	0.00045363	-0.00000114	0.00000000
+		-6.27308822	-0.00045129	0.00027649	0.00045357	-0.00000114	0.00000000
+		-6.27308837	-0.00045122	0.00027645	0.00045350	-0.00000114	0.00000000
+		-6.27308853	-0.00045116	0.00027641	0.00045343	-0.00000114	0.00000000
+		-6.27308869	-0.00045109	0.00027636	0.00045337	-0.00000114	0.00000000
+		-6.27308884	-0.00045102	0.00027632	0.00045330	-0.00000114	0.00000000
+		-6.27308900	-0.00045096	0.00027628	0.00045324	-0.00000114	0.00000000
+		-6.27308916	-0.00045089	0.00027624	0.00045317	-0.00000114	0.00000000
+		-6.27308932	-0.00045083	0.00027620	0.00045310	-0.00000114	0.00000000
+		-6.27308947	-0.00045076	0.00027616	0.00045304	-0.00000114	0.00000000
+		-6.27308963	-0.00045070	0.00027612	0.00045297	-0.00000114	0.00000000
+		-6.27308979	-0.00045063	0.00027608	0.00045291	-0.00000114	0.00000000
+		-6.27308994	-0.00045056	0.00027604	0.00045284	-0.00000114	0.00000000
+		-6.27309010	-0.00045050	0.00027600	0.00045277	-0.00000114	0.00000000
+		-6.27309026	-0.00045043	0.00027596	0.00045271	-0.00000114	0.00000000
+		-6.27309042	-0.00045037	0.00027592	0.00045264	-0.00000114	0.00000000
+		-6.27309057	-0.00045030	0.00027588	0.00045258	-0.00000114	0.00000000
+		-6.27309073	-0.00045024	0.00027584	0.00045251	-0.00000114	0.00000000
+		-6.27309089	-0.00045017	0.00027580	0.00045245	-0.00000114	0.00000000
+		-6.27309104	-0.00045011	0.00027576	0.00045238	-0.00000114	0.00000000
+		-6.27309120	-0.00045004	0.00027572	0.00045231	-0.00000114	0.00000000
+		-6.27309136	-0.00044997	0.00027568	0.00045225	-0.00000114	0.00000000
+		-6.27309151	-0.00044991	0.00027564	0.00045218	-0.00000114	0.00000000
+		-6.27309167	-0.00044984	0.00027560	0.00045212	-0.00000114	0.00000000
+		-6.27309183	-0.00044978	0.00027556	0.00045205	-0.00000114	0.00000000
+		-6.27309198	-0.00044971	0.00027552	0.00045198	-0.00000114	0.00000000
+		-6.27309214	-0.00044965	0.00027548	0.00045192	-0.00000114	0.00000000
+		-6.27309229	-0.00044958	0.00027544	0.00045185	-0.00000114	0.00000000
+		-6.27309245	-0.00044952	0.00027540	0.00045179	-0.00000114	0.00000000
+		-6.27309261	-0.00044945	0.00027536	0.00045172	-0.00000114	0.00000000
+		-6.27309276	-0.00044939	0.00027532	0.00045166	-0.00000114	0.00000000
+		-6.27309292	-0.00044932	0.00027528	0.00045159	-0.00000114	0.00000000
+		-6.27309307	-0.00044926	0.00027524	0.00045153	-0.00000114	0.00000000
+		-6.27309323	-0.00044919	0.00027520	0.00045146	-0.00000114	0.00000000
+		-6.27309339	-0.00044913	0.00027516	0.00045139	-0.00000114	0.00000000
+		-6.27309354	-0.00044906	0.00027512	0.00045133	-0.00000114	0.00000000
+		-6.27309370	-0.00044900	0.00027508	0.00045126	-0.00000114	0.00000000
+		-6.27309385	-0.00044893	0.00027504	0.00045120	-0.00000114	0.00000000
+		-6.27309401	-0.00044887	0.00027500	0.00045113	-0.00000114	0.00000000
+		-6.27309417	-0.00044880	0.00027496	0.00045107	-0.00000114	0.00000000
+		-6.27309432	-0.00044874	0.00027492	0.00045100	-0.00000114	0.00000000
+		-6.27309448	-0.00044867	0.00027488	0.00045094	-0.00000114	0.00000000
+		-6.27309463	-0.00044861	0.00027484	0.00045087	-0.00000114	0.00000000
+		-6.27309479	-0.00044854	0.00027480	0.00045081	-0.00000114	0.00000000
+		-6.27309494	-0.00044848	0.00027476	0.00045074	-0.00000114	0.00000000
+		-6.27309510	-0.00044841	0.00027472	0.00045068	-0.00000114	0.00000000
+		-6.27309526	-0.00044835	0.00027468	0.00045061	-0.00000114	0.00000000
+		-6.27309541	-0.00044828	0.00027464	0.00045054	-0.00000114	0.00000000
+		-6.27309557	-0.00044822	0.00027460	0.00045048	-0.00000114	0.00000000
+		-6.27309572	-0.00044815	0.00027456	0.00045041	-0.00000114	0.00000000
+		-6.27309588	-0.00044809	0.00027452	0.00045035	-0.00000114	0.00000000
+		-6.27309603	-0.00044802	0.00027448	0.00045028	-0.00000114	0.00000000
+		-6.27309619	-0.00044796	0.00027444	0.00045022	-0.00000114	0.00000000
+		-6.27309634	-0.00044789	0.00027440	0.00045015	-0.00000114	0.00000000
+		-6.27309650	-0.00044783	0.00027436	0.00045009	-0.00000114	0.00000000
+		-6.27309665	-0.00044776	0.00027432	0.00045002	-0.00000114	0.00000000
+		-6.27309681	-0.00044770	0.00027429	0.00044996	-0.00000114	0.00000000
+		-6.27309696	-0.00044763	0.00027425	0.00044989	-0.00000114	0.00000000
+		-6.27309712	-0.00044757	0.00027421	0.00044983	-0.00000114	0.00000000
+		-6.27309727	-0.00044750	0.00027417	0.00044976	-0.00000114	0.00000000
+		-6.27309743	-0.00044744	0.00027413	0.00044970	-0.00000114	0.00000000
+		-6.27309758	-0.00044737	0.00027409	0.00044963	-0.00000114	0.00000000
+		-6.27309774	-0.00044731	0.00027405	0.00044957	-0.00000114	0.00000000
+		-6.27309789	-0.00044724	0.00027401	0.00044950	-0.00000114	0.00000000
+		-6.27309805	-0.00044718	0.00027397	0.00044944	-0.00000114	0.00000000
+		-6.27309820	-0.00044712	0.00027393	0.00044937	-0.00000114	0.00000000
+		-6.27309835	-0.00044705	0.00027389	0.00044931	-0.00000114	0.00000000
+		-6.27309851	-0.00044699	0.00027385	0.00044924	-0.00000114	0.00000000
+		-6.27309866	-0.00044692	0.00027381	0.00044918	-0.00000114	0.00000000
+		-6.27309882	-0.00044686	0.00027377	0.00044911	-0.00000114	0.00000000
+		-6.27309897	-0.00044679	0.00027373	0.00044905	-0.00000114	0.00000000
+		-6.27309913	-0.00044673	0.00027369	0.00044898	-0.00000114	0.00000000
+		-6.27309928	-0.00044666	0.00027365	0.00044892	-0.00000114	0.00000000
+		-6.27309944	-0.00044660	0.00027361	0.00044885	-0.00000114	0.00000000
+		-6.27309959	-0.00044653	0.00027357	0.00044879	-0.00000114	0.00000000
+		-6.27309974	-0.00044647	0.00027353	0.00044873	-0.00000114	0.00000000
+		-6.27309990	-0.00044641	0.00027349	0.00044866	-0.00000114	0.00000000
+		-6.27310005	-0.00044634	0.00027345	0.00044860	-0.00000114	0.00000000
+		-6.27310021	-0.00044628	0.00027341	0.00044853	-0.00000114	0.00000000
+		-6.27310036	-0.00044621	0.00027338	0.00044847	-0.00000114	0.00000000
+		-6.27310051	-0.00044615	0.00027334	0.00044840	-0.00000114	0.00000000
+		-6.27310067	-0.00044608	0.00027330	0.00044834	-0.00000114	0.00000000
+		-6.27310082	-0.00044602	0.00027326	0.00044827	-0.00000114	0.00000000
+		-6.27310097	-0.00044596	0.00027322	0.00044821	-0.00000114	0.00000000
+		-6.27310113	-0.00044589	0.00027318	0.00044814	-0.00000114	0.00000000
+		-6.27310128	-0.00044583	0.00027314	0.00044808	-0.00000114	0.00000000
+		-6.27310144	-0.00044576	0.00027310	0.00044801	-0.00000114	0.00000000
+		-6.27310159	-0.00044570	0.00027306	0.00044795	-0.00000114	0.00000000
+		-6.27310174	-0.00044563	0.00027302	0.00044789	-0.00000114	0.00000000
+		-6.27310190	-0.00044557	0.00027298	0.00044782	-0.00000114	0.00000000
+		-6.27310205	-0.00044551	0.00027294	0.00044776	-0.00000114	0.00000000
+		-6.27310220	-0.00044544	0.00027290	0.00044769	-0.00000114	0.00000000
+		-6.27310236	-0.00044538	0.00027286	0.00044763	-0.00000114	0.00000000
+		-6.27310251	-0.00044531	0.00027282	0.00044756	-0.00000114	0.00000000
+		-6.27310266	-0.00044525	0.00027279	0.00044750	-0.00000114	0.00000000
+		-6.27310282	-0.00044519	0.00027275	0.00044743	-0.00000114	0.00000000
+		-6.27310297	-0.00044512	0.00027271	0.00044737	-0.00000114	0.00000000
+		-6.27310312	-0.00044506	0.00027267	0.00044731	-0.00000114	0.00000000
+		-6.27310328	-0.00044499	0.00027263	0.00044724	-0.00000114	0.00000000
+		-6.27310343	-0.00044493	0.00027259	0.00044718	-0.00000114	0.00000000
+		-6.27310358	-0.00044487	0.00027255	0.00044711	-0.00000114	0.00000000
+		-6.27310374	-0.00044480	0.00027251	0.00044705	-0.00000114	0.00000000
+		-6.27310389	-0.00044474	0.00027247	0.00044698	-0.00000114	0.00000000
+		-6.27310404	-0.00044467	0.00027243	0.00044692	-0.00000114	0.00000000
+		-6.27310419	-0.00044461	0.00027239	0.00044686	-0.00000114	0.00000000
+		-6.27310435	-0.00044455	0.00027235	0.00044679	-0.00000114	0.00000000
+		-6.27310450	-0.00044448	0.00027231	0.00044673	-0.00000114	0.00000000
+		-6.27310465	-0.00044442	0.00027228	0.00044666	-0.00000114	0.00000000
+		-6.27310481	-0.00044436	0.00027224	0.00044660	-0.00000114	0.00000000
+		-6.27310496	-0.00044429	0.00027220	0.00044654	-0.00000114	0.00000000
+		-6.27310511	-0.00044423	0.00027216	0.00044647	-0.00000114	0.00000000
+		-6.27310526	-0.00044416	0.00027212	0.00044641	-0.00000114	0.00000000
+		-6.27310542	-0.00044410	0.00027208	0.00044634	-0.00000114	0.00000000
+		-6.27310557	-0.00044404	0.00027204	0.00044628	-0.00000114	0.00000000
+		-6.27310572	-0.00044397	0.00027200	0.00044621	-0.00000114	0.00000000
+		-6.27310587	-0.00044391	0.00027196	0.00044615	-0.00000114	0.00000000
+		-6.27310603	-0.00044385	0.00027192	0.00044609	-0.00000114	0.00000000
+		-6.27310618	-0.00044378	0.00027189	0.00044602	-0.00000114	0.00000000
+		-6.27310633	-0.00044372	0.00027185	0.00044596	-0.00000114	0.00000000
+		-6.27310648	-0.00044365	0.00027181	0.00044590	-0.00000114	0.00000000
+		-6.27310663	-0.00044359	0.00027177	0.00044583	-0.00000114	0.00000000
+		-6.27310679	-0.00044353	0.00027173	0.00044577	-0.00000114	0.00000000
+		-6.27310694	-0.00044346	0.00027169	0.00044570	-0.00000114	0.00000000
+		-6.27310709	-0.00044340	0.00027165	0.00044564	-0.00000114	0.00000000
+		-6.27310724	-0.00044334	0.00027161	0.00044558	-0.00000114	0.00000000
+		-6.27310739	-0.00044327	0.00027157	0.00044551	-0.00000114	0.00000000
+		-6.27310755	-0.00044321	0.00027153	0.00044545	-0.00000114	0.00000000
+		-6.27310770	-0.00044315	0.00027150	0.00044538	-0.00000114	0.00000000
+		-6.27310785	-0.00044308	0.00027146	0.00044532	-0.00000114	0.00000000
+		-6.27310800	-0.00044302	0.00027142	0.00044526	-0.00000114	0.00000000
+		-6.27310815	-0.00044296	0.00027138	0.00044519	-0.00000114	0.00000000
+		-6.27310831	-0.00044289	0.00027134	0.00044513	-0.00000114	0.00000000
+		-6.27310846	-0.00044283	0.00027130	0.00044507	-0.00000114	0.00000000
+		-6.27310861	-0.00044277	0.00027126	0.00044500	-0.00000114	0.00000000
+		-6.27310876	-0.00044270	0.00027122	0.00044494	-0.00000114	0.00000000
+		-6.27310891	-0.00044264	0.00027119	0.00044487	-0.00000114	0.00000000
+		-6.27310906	-0.00044258	0.00027115	0.00044481	-0.00000114	0.00000000
+		-6.27310921	-0.00044251	0.00027111	0.00044475	-0.00000114	0.00000000
+		-6.27310937	-0.00044245	0.00027107	0.00044468	-0.00000114	0.00000000
+		-6.27310952	-0.00044239	0.00027103	0.00044462	-0.00000114	0.00000000
+		-6.27310967	-0.00044232	0.00027099	0.00044456	-0.00000114	0.00000000
+		-6.27310982	-0.00044226	0.00027095	0.00044449	-0.00000114	0.00000000
+		-6.27310997	-0.00044220	0.00027091	0.00044443	-0.00000114	0.00000000
+		-6.27311012	-0.00044213	0.00027088	0.00044437	-0.00000114	0.00000000
+		-6.27311027	-0.00044207	0.00027084	0.00044430	-0.00000114	0.00000000
+		-6.27311042	-0.00044201	0.00027080	0.00044424	-0.00000114	0.00000000
+		-6.27311058	-0.00044194	0.00027076	0.00044418	-0.00000114	0.00000000
+		-6.27311073	-0.00044188	0.00027072	0.00044411	-0.00000114	0.00000000
+		-6.27311088	-0.00044182	0.00027068	0.00044405	-0.00000114	0.00000000
+		-6.27311103	-0.00044176	0.00027064	0.00044399	-0.00000114	0.00000000
+		-6.27311118	-0.00044169	0.00027060	0.00044392	-0.00000114	0.00000000
+		-6.27311133	-0.00044163	0.00027057	0.00044386	-0.00000114	0.00000000
+		-6.27311148	-0.00044157	0.00027053	0.00044380	-0.00000114	0.00000000
+		-6.27311163	-0.00044150	0.00027049	0.00044373	-0.00000114	0.00000000
+		-6.27311178	-0.00044144	0.00027045	0.00044367	-0.00000114	0.00000000
+		-6.27311193	-0.00044138	0.00027041	0.00044361	-0.00000114	0.00000000
+		-6.27311208	-0.00044131	0.00027037	0.00044354	-0.00000114	0.00000000
+		-6.27311223	-0.00044125	0.00027033	0.00044348	-0.00000114	0.00000000
+		-6.27311238	-0.00044119	0.00027030	0.00044342	-0.00000114	0.00000000
+		-6.27311253	-0.00044113	0.00027026	0.00044335	-0.00000114	0.00000000
+		-6.27311269	-0.00044106	0.00027022	0.00044329	-0.00000114	0.00000000
+		-6.27311284	-0.00044100	0.00027018	0.00044323	-0.00000114	0.00000000
+		-6.27311299	-0.00044094	0.00027014	0.00044316	-0.00000114	0.00000000
+		-6.27311314	-0.00044087	0.00027010	0.00044310	-0.00000114	0.00000000
+		-6.27311329	-0.00044081	0.00027006	0.00044304	-0.00000114	0.00000000
+		-6.27311344	-0.00044075	0.00027003	0.00044297	-0.00000114	0.00000000
+		-6.27311359	-0.00044069	0.00026999	0.00044291	-0.00000114	0.00000000
+		-6.27311374	-0.00044062	0.00026995	0.00044285	-0.00000114	0.00000000
+		-6.27311389	-0.00044056	0.00026991	0.00044279	-0.00000114	0.00000000
+		-6.27311404	-0.00044050	0.00026987	0.00044272	-0.00000114	0.00000000
+		-6.27311419	-0.00044044	0.00026983	0.00044266	-0.00000114	0.00000000
+		-6.27311434	-0.00044037	0.00026980	0.00044260	-0.00000114	0.00000000
+		-6.27311449	-0.00044031	0.00026976	0.00044253	-0.00000114	0.00000000
+		-6.27311464	-0.00044025	0.00026972	0.00044247	-0.00000114	0.00000000
+		-6.27311479	-0.00044018	0.00026968	0.00044241	-0.00000114	0.00000000
+		-6.27311494	-0.00044012	0.00026964	0.00044234	-0.00000114	0.00000000
+		-6.27311509	-0.00044006	0.00026960	0.00044228	-0.00000114	0.00000000
+		-6.27311524	-0.00044000	0.00026957	0.00044222	-0.00000114	0.00000000
+		-6.27311539	-0.00043993	0.00026953	0.00044216	-0.00000114	0.00000000
+		-6.27311554	-0.00043987	0.00026949	0.00044209	-0.00000114	0.00000000
+		-6.27311569	-0.00043981	0.00026945	0.00044203	-0.00000114	0.00000000
+		-6.27311583	-0.00043975	0.00026941	0.00044197	-0.00000114	0.00000000
+		-6.27311598	-0.00043968	0.00026937	0.00044190	-0.00000114	0.00000000
+		-6.27311613	-0.00043962	0.00026934	0.00044184	-0.00000114	0.00000000
+		-6.27311628	-0.00043956	0.00026930	0.00044178	-0.00000114	0.00000000
+		-6.27311643	-0.00043950	0.00026926	0.00044172	-0.00000114	0.00000000
+		-6.27311658	-0.00043944	0.00026922	0.00044165	-0.00000114	0.00000000
+		-6.27311673	-0.00043937	0.00026918	0.00044159	-0.00000114	0.00000000
+		-6.27311688	-0.00043931	0.00026914	0.00044153	-0.00000114	0.00000000
+		-6.27311703	-0.00043925	0.00026911	0.00044147	-0.00000114	0.00000000
+		-6.27311718	-0.00043919	0.00026907	0.00044140	-0.00000114	0.00000000
+		-6.27311733	-0.00043912	0.00026903	0.00044134	-0.00000114	0.00000000
+		-6.27311748	-0.00043906	0.00026899	0.00044128	-0.00000114	0.00000000
+		-6.27311763	-0.00043900	0.00026895	0.00044122	-0.00000114	0.00000000
+		-6.27311777	-0.00043894	0.00026892	0.00044115	-0.00000114	0.00000000
+		-6.27311792	-0.00043887	0.00026888	0.00044109	-0.00000114	0.00000000
+		-6.27311807	-0.00043881	0.00026884	0.00044103	-0.00000114	0.00000000
+		-6.27311822	-0.00043875	0.00026880	0.00044096	-0.00000114	0.00000000
+		-6.27311837	-0.00043869	0.00026876	0.00044090	-0.00000114	0.00000000
+		-6.27311852	-0.00043863	0.00026872	0.00044084	-0.00000114	0.00000000
+		-6.27311867	-0.00043856	0.00026869	0.00044078	-0.00000114	0.00000000
+		-6.27311882	-0.00043850	0.00026865	0.00044072	-0.00000114	0.00000000
+		-6.27311897	-0.00043844	0.00026861	0.00044065	-0.00000114	0.00000000
+		-6.27311911	-0.00043838	0.00026857	0.00044059	-0.00000114	0.00000000
+		-6.27311926	-0.00043832	0.00026853	0.00044053	-0.00000114	0.00000000
+		-6.27311941	-0.00043825	0.00026850	0.00044047	-0.00000114	0.00000000
+		-6.27311956	-0.00043819	0.00026846	0.00044040	-0.00000114	0.00000000
+		-6.27311971	-0.00043813	0.00026842	0.00044034	-0.00000114	0.00000000
+		-6.27311986	-0.00043807	0.00026838	0.00044028	-0.00000114	0.00000000
+		-6.27312000	-0.00043800	0.00026834	0.00044022	-0.00000114	0.00000000
+		-6.27312015	-0.00043794	0.00026831	0.00044015	-0.00000114	0.00000000
+		-6.27312030	-0.00043788	0.00026827	0.00044009	-0.00000114	0.00000000
+		-6.27312045	-0.00043782	0.00026823	0.00044003	-0.00000114	0.00000000
+		-6.27312060	-0.00043776	0.00026819	0.00043997	-0.00000114	0.00000000
+		-6.27312075	-0.00043770	0.00026815	0.00043990	-0.00000114	0.00000000
+		-6.27312089	-0.00043763	0.00026812	0.00043984	-0.00000114	0.00000000
+		-6.27312104	-0.00043757	0.00026808	0.00043978	-0.00000114	0.00000000
+		-6.27312119	-0.00043751	0.00026804	0.00043972	-0.00000114	0.00000000
+		-6.27312134	-0.00043745	0.00026800	0.00043966	-0.00000114	0.00000000
+		-6.27312149	-0.00043739	0.00026796	0.00043959	-0.00000114	0.00000000
+		-6.27312163	-0.00043732	0.00026793	0.00043953	-0.00000114	0.00000000
+		-6.27312178	-0.00043726	0.00026789	0.00043947	-0.00000114	0.00000000
+		-6.27312193	-0.00043720	0.00026785	0.00043941	-0.00000114	0.00000000
+		-6.27312208	-0.00043714	0.00026781	0.00043935	-0.00000114	0.00000000
+		-6.27312223	-0.00043708	0.00026778	0.00043928	-0.00000114	0.00000000
+		-6.27312237	-0.00043702	0.00026774	0.00043922	-0.00000114	0.00000000
+		-6.27312252	-0.00043695	0.00026770	0.00043916	-0.00000114	0.00000000
+		-6.27312267	-0.00043689	0.00026766	0.00043910	-0.00000114	0.00000000
+		-6.27312282	-0.00043683	0.00026762	0.00043904	-0.00000114	0.00000000
+		-6.27312296	-0.00043677	0.00026759	0.00043897	-0.00000114	0.00000000
+		-6.27312311	-0.00043671	0.00026755	0.00043891	-0.00000114	0.00000000
+		-6.27312326	-0.00043665	0.00026751	0.00043885	-0.00000114	0.00000000
+		-6.27312341	-0.00043658	0.00026747	0.00043879	-0.00000114	0.00000000
+		-6.27312355	-0.00043652	0.00026744	0.00043873	-0.00000114	0.00000000
+		-6.27312370	-0.00043646	0.00026740	0.00043866	-0.00000114	0.00000000
+		-6.27312385	-0.00043640	0.00026736	0.00043860	-0.00000114	0.00000000
+		-6.27312399	-0.00043634	0.00026732	0.00043854	-0.00000114	0.00000000
+		-6.27312414	-0.00043628	0.00026728	0.00043848	-0.00000114	0.00000000
+		-6.27312429	-0.00043622	0.00026725	0.00043842	-0.00000114	0.00000000
+		-6.27312444	-0.00043615	0.00026721	0.00043836	-0.00000114	0.00000000
+		-6.27312458	-0.00043609	0.00026717	0.00043829	-0.00000114	0.00000000
+		-6.27312473	-0.00043603	0.00026713	0.00043823	-0.00000114	0.00000000
+		-6.27312488	-0.00043597	0.00026710	0.00043817	-0.00000114	0.00000000
+		-6.27312502	-0.00043591	0.00026706	0.00043811	-0.00000114	0.00000000
+		-6.27312517	-0.00043585	0.00026702	0.00043805	-0.00000114	0.00000000
+		-6.27312532	-0.00043579	0.00026698	0.00043798	-0.00000114	0.00000000
+		-6.27312546	-0.00043572	0.00026695	0.00043792	-0.00000114	0.00000000
+		-6.27312561	-0.00043566	0.00026691	0.00043786	-0.00000114	0.00000000
+		-6.27312576	-0.00043560	0.00026687	0.00043780	-0.00000114	0.00000000
+		-6.27312590	-0.00043554	0.00026683	0.00043774	-0.00000114	0.00000000
+		-6.27312605	-0.00043548	0.00026680	0.00043768	-0.00000114	0.00000000
+		-6.27312620	-0.00043542	0.00026676	0.00043762	-0.00000114	0.00000000
+		-6.27312634	-0.00043536	0.00026672	0.00043755	-0.00000114	0.00000000
+		-6.27312649	-0.00043529	0.00026668	0.00043749	-0.00000114	0.00000000
+		-6.27312664	-0.00043523	0.00026665	0.00043743	-0.00000114	0.00000000
+		-6.27312678	-0.00043517	0.00026661	0.00043737	-0.00000114	0.00000000
+		-6.27312693	-0.00043511	0.00026657	0.00043731	-0.00000114	0.00000000
+		-6.27312708	-0.00043505	0.00026653	0.00043725	-0.00000114	0.00000000
+		-6.27312722	-0.00043499	0.00026650	0.00043718	-0.00000114	0.00000000
+		-6.27312737	-0.00043493	0.00026646	0.00043712	-0.00000114	0.00000000
+		-6.27312752	-0.00043487	0.00026642	0.00043706	-0.00000114	0.00000000
+		-6.27312766	-0.00043481	0.00026638	0.00043700	-0.00000114	0.00000000
+		-6.27312781	-0.00043474	0.00026635	0.00043694	-0.00000114	0.00000000
+		-6.27312795	-0.00043468	0.00026631	0.00043688	-0.00000114	0.00000000
+		-6.27312810	-0.00043462	0.00026627	0.00043682	-0.00000114	0.00000000
+		-6.27312825	-0.00043456	0.00026623	0.00043676	-0.00000114	0.00000000
+		-6.27312839	-0.00043450	0.00026620	0.00043669	-0.00000114	0.00000000
+		-6.27312854	-0.00043444	0.00026616	0.00043663	-0.00000114	0.00000000
+		-6.27312868	-0.00043438	0.00026612	0.00043657	-0.00000114	0.00000000
+		-6.27312883	-0.00043432	0.00026608	0.00043651	-0.00000114	0.00000000
+		-6.27312898	-0.00043426	0.00026605	0.00043645	-0.00000114	0.00000000
+		-6.27312912	-0.00043420	0.00026601	0.00043639	-0.00000114	0.00000000
+		-6.27312927	-0.00043413	0.00026597	0.00043633	-0.00000114	0.00000000
+		-6.27312941	-0.00043407	0.00026593	0.00043626	-0.00000114	0.00000000
+		-6.27312956	-0.00043401	0.00026590	0.00043620	-0.00000114	0.00000000
+		-6.27312970	-0.00043395	0.00026586	0.00043614	-0.00000114	0.00000000
+		-6.27312985	-0.00043389	0.00026582	0.00043608	-0.00000114	0.00000000
+		-6.27313000	-0.00043383	0.00026579	0.00043602	-0.00000114	0.00000000
+		-6.27313014	-0.00043377	0.00026575	0.00043596	-0.00000114	0.00000000
+		-6.27313029	-0.00043371	0.00026571	0.00043590	-0.00000114	0.00000000
+		-6.27313043	-0.00043365	0.00026567	0.00043584	-0.00000114	0.00000000
+		-6.27313058	-0.00043359	0.00026564	0.00043578	-0.00000114	0.00000000
+		-6.27313072	-0.00043353	0.00026560	0.00043572	-0.00000114	0.00000000
+		-6.27313087	-0.00043347	0.00026556	0.00043565	-0.00000114	0.00000000
+		-6.27313101	-0.00043341	0.00026552	0.00043559	-0.00000114	0.00000000
+		-6.27313116	-0.00043335	0.00026549	0.00043553	-0.00000114	0.00000000
+		-6.27313130	-0.00043328	0.00026545	0.00043547	-0.00000114	0.00000000
+		-6.27313145	-0.00043322	0.00026541	0.00043541	-0.00000114	0.00000000
+		-6.27313159	-0.00043316	0.00026538	0.00043535	-0.00000114	0.00000000
+		-6.27313174	-0.00043310	0.00026534	0.00043529	-0.00000114	0.00000000
+		-6.27313188	-0.00043304	0.00026530	0.00043523	-0.00000114	0.00000000
+		-6.27313203	-0.00043298	0.00026526	0.00043517	-0.00000114	0.00000000
+		-6.27313217	-0.00043292	0.00026523	0.00043511	-0.00000114	0.00000000
+		-6.27313232	-0.00043286	0.00026519	0.00043504	-0.00000114	0.00000000
+		-6.27313246	-0.00043280	0.00026515	0.00043498	-0.00000114	0.00000000
+		-6.27313261	-0.00043274	0.00026512	0.00043492	-0.00000114	0.00000000
+		-6.27313275	-0.00043268	0.00026508	0.00043486	-0.00000114	0.00000000
+		-6.27313290	-0.00043262	0.00026504	0.00043480	-0.00000114	0.00000000
+		-6.27313304	-0.00043256	0.00026501	0.00043474	-0.00000114	0.00000000
+		-6.27313319	-0.00043250	0.00026497	0.00043468	-0.00000114	0.00000000
+		-6.27313333	-0.00043244	0.00026493	0.00043462	-0.00000114	0.00000000
+		-6.27313348	-0.00043238	0.00026489	0.00043456	-0.00000114	0.00000000
+		-6.27313362	-0.00043232	0.00026486	0.00043450	-0.00000114	0.00000000
+		-6.27313377	-0.00043226	0.00026482	0.00043444	-0.00000114	0.00000000
+		-6.27313391	-0.00043220	0.00026478	0.00043438	-0.00000114	0.00000000
+		-6.27313405	-0.00043214	0.00026475	0.00043432	-0.00000114	0.00000000
+		-6.27313420	-0.00043207	0.00026471	0.00043426	-0.00000114	0.00000000
+		-6.27313434	-0.00043201	0.00026467	0.00043419	-0.00000114	0.00000000
+		-6.27313449	-0.00043195	0.00026464	0.00043413	-0.00000114	0.00000000
+		-6.27313463	-0.00043189	0.00026460	0.00043407	-0.00000114	0.00000000
+		-6.27313478	-0.00043183	0.00026456	0.00043401	-0.00000114	0.00000000
+		-6.27313492	-0.00043177	0.00026452	0.00043395	-0.00000114	0.00000000
+		-6.27313506	-0.00043171	0.00026449	0.00043389	-0.00000114	0.00000000
+		-6.27313521	-0.00043165	0.00026445	0.00043383	-0.00000114	0.00000000
+		-6.27313535	-0.00043159	0.00026441	0.00043377	-0.00000114	0.00000000
+		-6.27313550	-0.00043153	0.00026438	0.00043371	-0.00000114	0.00000000
+		-6.27313564	-0.00043147	0.00026434	0.00043365	-0.00000114	0.00000000
+		-6.27313578	-0.00043141	0.00026430	0.00043359	-0.00000114	0.00000000
+		-6.27313593	-0.00043135	0.00026427	0.00043353	-0.00000114	0.00000000
+		-6.27313607	-0.00043129	0.00026423	0.00043347	-0.00000114	0.00000000
+		-6.27313622	-0.00043123	0.00026419	0.00043341	-0.00000114	0.00000000
+		-6.27313636	-0.00043117	0.00026416	0.00043335	-0.00000114	0.00000000
+		-6.27313650	-0.00043111	0.00026412	0.00043329	-0.00000114	0.00000000
+		-6.27313665	-0.00043105	0.00026408	0.00043323	-0.00000114	0.00000000
+		-6.27313679	-0.00043099	0.00026405	0.00043317	-0.00000114	0.00000000
+		-6.27313693	-0.00043093	0.00026401	0.00043311	-0.00000114	0.00000000
+		-6.27313708	-0.00043087	0.00026397	0.00043305	-0.00000114	0.00000000
+		-6.27313722	-0.00043081	0.00026394	0.00043299	-0.00000114	0.00000000
+		-6.27313737	-0.00043075	0.00026390	0.00043293	-0.00000114	0.00000000
+		-6.27313751	-0.00043069	0.00026386	0.00043287	-0.00000114	0.00000000
+		-6.27313765	-0.00043063	0.00026382	0.00043281	-0.00000114	0.00000000
+		-6.27313780	-0.00043057	0.00026379	0.00043275	-0.00000114	0.00000000
+		-6.27313794	-0.00043051	0.00026375	0.00043268	-0.00000114	0.00000000
+		-6.27313808	-0.00043045	0.00026371	0.00043262	-0.00000114	0.00000000
+		-6.27313823	-0.00043039	0.00026368	0.00043256	-0.00000114	0.00000000
+		-6.27313837	-0.00043033	0.00026364	0.00043250	-0.00000114	0.00000000
+		-6.27313851	-0.00043027	0.00026360	0.00043244	-0.00000114	0.00000000
+		-6.27313865	-0.00043021	0.00026357	0.00043238	-0.00000114	0.00000000
+		-6.27313880	-0.00043015	0.00026353	0.00043232	-0.00000114	0.00000000
+		-6.27313894	-0.00043009	0.00026349	0.00043226	-0.00000114	0.00000000
+		-6.27313908	-0.00043003	0.00026346	0.00043220	-0.00000114	0.00000000
+		-6.27313923	-0.00042997	0.00026342	0.00043214	-0.00000114	0.00000000
+		-6.27313937	-0.00042991	0.00026338	0.00043208	-0.00000114	0.00000000
+		-6.27313951	-0.00042985	0.00026335	0.00043202	-0.00000114	0.00000000
+		-6.27313966	-0.00042980	0.00026331	0.00043196	-0.00000114	0.00000000
+		-6.27313980	-0.00042974	0.00026328	0.00043190	-0.00000114	0.00000000
+		-6.27313994	-0.00042968	0.00026324	0.00043184	-0.00000114	0.00000000
+		-6.27314008	-0.00042962	0.00026320	0.00043178	-0.00000114	0.00000000
+		-6.27314023	-0.00042956	0.00026317	0.00043172	-0.00000114	0.00000000
+		-6.27314037	-0.00042950	0.00026313	0.00043166	-0.00000114	0.00000000
+		-6.27314051	-0.00042944	0.00026309	0.00043160	-0.00000114	0.00000000
+		-6.27314065	-0.00042938	0.00026306	0.00043154	-0.00000114	0.00000000
+		-6.27314080	-0.00042932	0.00026302	0.00043148	-0.00000114	0.00000000
+		-6.27314094	-0.00042926	0.00026298	0.00043142	-0.00000114	0.00000000
+		-6.27314108	-0.00042920	0.00026295	0.00043136	-0.00000114	0.00000000
+		-6.27314122	-0.00042914	0.00026291	0.00043131	-0.00000114	0.00000000
+		-6.27314137	-0.00042908	0.00026287	0.00043125	-0.00000114	0.00000000
+		-6.27314151	-0.00042902	0.00026284	0.00043119	-0.00000114	0.00000000
+		-6.27314165	-0.00042896	0.00026280	0.00043113	-0.00000114	0.00000000
+		-6.27314179	-0.00042890	0.00026276	0.00043107	-0.00000114	0.00000000
+		-6.27314194	-0.00042884	0.00026273	0.00043101	-0.00000114	0.00000000
+		-6.27314208	-0.00042878	0.00026269	0.00043095	-0.00000114	0.00000000
+		-6.27314222	-0.00042872	0.00026265	0.00043089	-0.00000114	0.00000000
+		-6.27314236	-0.00042866	0.00026262	0.00043083	-0.00000114	0.00000000
+		-6.27314250	-0.00042861	0.00026258	0.00043077	-0.00000114	0.00000000
+		-6.27314265	-0.00042855	0.00026255	0.00043071	-0.00000114	0.00000000
+		-6.27314279	-0.00042849	0.00026251	0.00043065	-0.00000114	0.00000000
+		-6.27314293	-0.00042843	0.00026247	0.00043059	-0.00000114	0.00000000
+		-6.27314307	-0.00042837	0.00026244	0.00043053	-0.00000114	0.00000000
+		-6.27314321	-0.00042831	0.00026240	0.00043047	-0.00000114	0.00000000
+		-6.27314336	-0.00042825	0.00026236	0.00043041	-0.00000114	0.00000000
+		-6.27314350	-0.00042819	0.00026233	0.00043035	-0.00000114	0.00000000
+		-6.27314364	-0.00042813	0.00026229	0.00043029	-0.00000114	0.00000000
+		-6.27314378	-0.00042807	0.00026226	0.00043023	-0.00000114	0.00000000
+		-6.27314392	-0.00042801	0.00026222	0.00043017	-0.00000114	0.00000000
+		-6.27314406	-0.00042795	0.00026218	0.00043011	-0.00000114	0.00000000
+		-6.27314421	-0.00042789	0.00026215	0.00043005	-0.00000114	0.00000000
+		-6.27314435	-0.00042783	0.00026211	0.00042999	-0.00000114	0.00000000
+		-6.27314449	-0.00042778	0.00026207	0.00042993	-0.00000114	0.00000000
+		-6.27314463	-0.00042772	0.00026204	0.00042987	-0.00000114	0.00000000
+		-6.27314477	-0.00042766	0.00026200	0.00042982	-0.00000114	0.00000000
+		-6.27314491	-0.00042760	0.00026197	0.00042976	-0.00000114	0.00000000
+		-6.27314505	-0.00042754	0.00026193	0.00042970	-0.00000114	0.00000000
+		-6.27314520	-0.00042748	0.00026189	0.00042964	-0.00000114	0.00000000
+		-6.27314534	-0.00042742	0.00026186	0.00042958	-0.00000114	0.00000000
+		-6.27314548	-0.00042736	0.00026182	0.00042952	-0.00000114	0.00000000
+		-6.27314562	-0.00042730	0.00026178	0.00042946	-0.00000114	0.00000000
+		-6.27314576	-0.00042724	0.00026175	0.00042940	-0.00000114	0.00000000
+		-6.27314590	-0.00042719	0.00026171	0.00042934	-0.00000114	0.00000000
+		-6.27314604	-0.00042713	0.00026168	0.00042928	-0.00000114	0.00000000
+		-6.27314618	-0.00042707	0.00026164	0.00042922	-0.00000114	0.00000000
+		-6.27314633	-0.00042701	0.00026160	0.00042916	-0.00000114	0.00000000
+		-6.27314647	-0.00042695	0.00026157	0.00042910	-0.00000114	0.00000000
+		-6.27314661	-0.00042689	0.00026153	0.00042904	-0.00000114	0.00000000
+		-6.27314675	-0.00042683	0.00026150	0.00042899	-0.00000114	0.00000000
+		-6.27314689	-0.00042677	0.00026146	0.00042893	-0.00000114	0.00000000
+		-6.27314703	-0.00042671	0.00026142	0.00042887	-0.00000114	0.00000000
+		-6.27314717	-0.00042666	0.00026139	0.00042881	-0.00000114	0.00000000
+		-6.27314731	-0.00042660	0.00026135	0.00042875	-0.00000114	0.00000000
+		-6.27314745	-0.00042654	0.00026132	0.00042869	-0.00000114	0.00000000
+		-6.27314759	-0.00042648	0.00026128	0.00042863	-0.00000114	0.00000000
+		-6.27314773	-0.00042642	0.00026124	0.00042857	-0.00000114	0.00000000
+		-6.27314787	-0.00042636	0.00026121	0.00042851	-0.00000114	0.00000000
+		-6.27314801	-0.00042630	0.00026117	0.00042845	-0.00000114	0.00000000
+		-6.27314815	-0.00042624	0.00026114	0.00042839	-0.00000114	0.00000000
+		-6.27314830	-0.00042619	0.00026110	0.00042834	-0.00000114	0.00000000
+		-6.27314844	-0.00042613	0.00026106	0.00042828	-0.00000114	0.00000000
+		-6.27314858	-0.00042607	0.00026103	0.00042822	-0.00000114	0.00000000
+		-6.27314872	-0.00042601	0.00026099	0.00042816	-0.00000114	0.00000000
+		-6.27314886	-0.00042595	0.00026096	0.00042810	-0.00000114	0.00000000
+		-6.27314900	-0.00042589	0.00026092	0.00042804	-0.00000114	0.00000000
+		-6.27314914	-0.00042583	0.00026088	0.00042798	-0.00000114	0.00000000
+		-6.27314928	-0.00042578	0.00026085	0.00042792	-0.00000114	0.00000000
+		-6.27314942	-0.00042572	0.00026081	0.00042786	-0.00000114	0.00000000
+		-6.27314956	-0.00042566	0.00026078	0.00042781	-0.00000114	0.00000000
+		-6.27314970	-0.00042560	0.00026074	0.00042775	-0.00000114	0.00000000
+		-6.27314984	-0.00042554	0.00026070	0.00042769	-0.00000114	0.00000000
+		-6.27314998	-0.00042548	0.00026067	0.00042763	-0.00000114	0.00000000
+		-6.27315012	-0.00042542	0.00026063	0.00042757	-0.00000114	0.00000000
+		-6.27315026	-0.00042537	0.00026060	0.00042751	-0.00000114	0.00000000
+		-6.27315040	-0.00042531	0.00026056	0.00042745	-0.00000114	0.00000000
+		-6.27315054	-0.00042525	0.00026052	0.00042739	-0.00000114	0.00000000
+		-6.27315068	-0.00042519	0.00026049	0.00042734	-0.00000114	0.00000000
+		-6.27315082	-0.00042513	0.00026045	0.00042728	-0.00000114	0.00000000
+		-6.27315096	-0.00042507	0.00026042	0.00042722	-0.00000114	0.00000000
+		-6.27315110	-0.00042502	0.00026038	0.00042716	-0.00000114	0.00000000
+		-6.27315124	-0.00042496	0.00026035	0.00042710	-0.00000114	0.00000000
+		-6.27315138	-0.00042490	0.00026031	0.00042704	-0.00000114	0.00000000
+		-6.27315152	-0.00042484	0.00026027	0.00042698	-0.00000114	0.00000000
+		-6.27315165	-0.00042478	0.00026024	0.00042692	-0.00000114	0.00000000
+		-6.27315179	-0.00042472	0.00026020	0.00042687	-0.00000114	0.00000000
+		-6.27315193	-0.00042467	0.00026017	0.00042681	-0.00000114	0.00000000
+		-6.27315207	-0.00042461	0.00026013	0.00042675	-0.00000114	0.00000000
+		-6.27315221	-0.00042455	0.00026010	0.00042669	-0.00000114	0.00000000
+		-6.27315235	-0.00042449	0.00026006	0.00042663	-0.00000114	0.00000000
+		-6.27315249	-0.00042443	0.00026002	0.00042657	-0.00000114	0.00000000
+		-6.27315263	-0.00042437	0.00025999	0.00042652	-0.00000114	0.00000000
+		-6.27315277	-0.00042432	0.00025995	0.00042646	-0.00000114	0.00000000
+		-6.27315291	-0.00042426	0.00025992	0.00042640	-0.00000114	0.00000000
+		-6.27315305	-0.00042420	0.00025988	0.00042634	-0.00000114	0.00000000
+		-6.27315319	-0.00042414	0.00025985	0.00042628	-0.00000114	0.00000000
+		-6.27315333	-0.00042408	0.00025981	0.00042622	-0.00000114	0.00000000
+		-6.27315347	-0.00042403	0.00025978	0.00042616	-0.00000114	0.00000000
+		-6.27315360	-0.00042397	0.00025974	0.00042611	-0.00000114	0.00000000
+		-6.27315374	-0.00042391	0.00025970	0.00042605	-0.00000114	0.00000000
+		-6.27315388	-0.00042385	0.00025967	0.00042599	-0.00000114	0.00000000
+		-6.27315402	-0.00042379	0.00025963	0.00042593	-0.00000114	0.00000000
+		-6.27315416	-0.00042374	0.00025960	0.00042587	-0.00000114	0.00000000
+		-6.27315430	-0.00042368	0.00025956	0.00042581	-0.00000114	0.00000000
+		-6.27315444	-0.00042362	0.00025953	0.00042576	-0.00000114	0.00000000
+		-6.27315458	-0.00042356	0.00025949	0.00042570	-0.00000114	0.00000000
+		-6.27315472	-0.00042350	0.00025946	0.00042564	-0.00000114	0.00000000
+		-6.27315485	-0.00042345	0.00025942	0.00042558	-0.00000114	0.00000000
+		-6.27315499	-0.00042339	0.00025938	0.00042552	-0.00000114	0.00000000
+		-6.27315513	-0.00042333	0.00025935	0.00042547	-0.00000114	0.00000000
+		-6.27315527	-0.00042327	0.00025931	0.00042541	-0.00000114	0.00000000
+		-6.27315541	-0.00042321	0.00025928	0.00042535	-0.00000114	0.00000000
+		-6.27315555	-0.00042316	0.00025924	0.00042529	-0.00000114	0.00000000
+		-6.27315569	-0.00042310	0.00025921	0.00042523	-0.00000114	0.00000000
+		-6.27315582	-0.00042304	0.00025917	0.00042517	-0.00000114	0.00000000
+		-6.27315596	-0.00042298	0.00025914	0.00042512	-0.00000114	0.00000000
+		-6.27315610	-0.00042292	0.00025910	0.00042506	-0.00000114	0.00000000
+		-6.27315624	-0.00042287	0.00025907	0.00042500	-0.00000114	0.00000000
+		-6.27315638	-0.00042281	0.00025903	0.00042494	-0.00000114	0.00000000
+		-6.27315652	-0.00042275	0.00025899	0.00042488	-0.00000114	0.00000000
+		-6.27315665	-0.00042269	0.00025896	0.00042483	-0.00000114	0.00000000
+		-6.27315679	-0.00042264	0.00025892	0.00042477	-0.00000114	0.00000000
+		-6.27315693	-0.00042258	0.00025889	0.00042471	-0.00000114	0.00000000
+		-6.27315707	-0.00042252	0.00025885	0.00042465	-0.00000114	0.00000000
+		-6.27315721	-0.00042246	0.00025882	0.00042459	-0.00000114	0.00000000
+		-6.27315734	-0.00042241	0.00025878	0.00042454	-0.00000114	0.00000000
+		-6.27315748	-0.00042235	0.00025875	0.00042448	-0.00000114	0.00000000
+		-6.27315762	-0.00042229	0.00025871	0.00042442	-0.00000114	0.00000000
+		-6.27315776	-0.00042223	0.00025868	0.00042436	-0.00000114	0.00000000
+		-6.27315790	-0.00042218	0.00025864	0.00042430	-0.00000114	0.00000000
+		-6.27315803	-0.00042212	0.00025861	0.00042425	-0.00000114	0.00000000
+		-6.27315817	-0.00042206	0.00025857	0.00042419	-0.00000114	0.00000000
+		-6.27315831	-0.00042200	0.00025854	0.00042413	-0.00000114	0.00000000
+		-6.27315845	-0.00042194	0.00025850	0.00042407	-0.00000114	0.00000000
+		-6.27315858	-0.00042189	0.00025846	0.00042402	-0.00000114	0.00000000
+		-6.27315872	-0.00042183	0.00025843	0.00042396	-0.00000114	0.00000000
+		-6.27315886	-0.00042177	0.00025839	0.00042390	-0.00000114	0.00000000
+		-6.27315900	-0.00042171	0.00025836	0.00042384	-0.00000114	0.00000000
+		-6.27315913	-0.00042166	0.00025832	0.00042378	-0.00000114	0.00000000
+		-6.27315927	-0.00042160	0.00025829	0.00042373	-0.00000114	0.00000000
+		-6.27315941	-0.00042154	0.00025825	0.00042367	-0.00000114	0.00000000
+		-6.27315955	-0.00042149	0.00025822	0.00042361	-0.00000114	0.00000000
+		-6.27315968	-0.00042143	0.00025818	0.00042355	-0.00000114	0.00000000
+		-6.27315982	-0.00042137	0.00025815	0.00042350	-0.00000114	0.00000000
+		-6.27315996	-0.00042131	0.00025811	0.00042344	-0.00000114	0.00000000
+		-6.27316010	-0.00042126	0.00025808	0.00042338	-0.00000114	0.00000000
+		-6.27316023	-0.00042120	0.00025804	0.00042332	-0.00000114	0.00000000
+		-6.27316037	-0.00042114	0.00025801	0.00042327	-0.00000114	0.00000000
+		-6.27316051	-0.00042108	0.00025797	0.00042321	-0.00000114	0.00000000
+		-6.27316064	-0.00042103	0.00025794	0.00042315	-0.00000114	0.00000000
+		-6.27316078	-0.00042097	0.00025790	0.00042309	-0.00000114	0.00000000
+		-6.27316092	-0.00042091	0.00025787	0.00042304	-0.00000114	0.00000000
+		-6.27316105	-0.00042085	0.00025783	0.00042298	-0.00000114	0.00000000
+		-6.27316119	-0.00042080	0.00025780	0.00042292	-0.00000114	0.00000000
+		-6.27316133	-0.00042074	0.00025776	0.00042286	-0.00000114	0.00000000
+		-6.27316147	-0.00042068	0.00025773	0.00042281	-0.00000114	0.00000000
+		-6.27316160	-0.00042063	0.00025769	0.00042275	-0.00000114	0.00000000
+		-6.27316174	-0.00042057	0.00025766	0.00042269	-0.00000114	0.00000000
+		-6.27316188	-0.00042051	0.00025762	0.00042263	-0.00000114	0.00000000
+		-6.27316201	-0.00042045	0.00025759	0.00042258	-0.00000114	0.00000000
+		-6.27316215	-0.00042040	0.00025755	0.00042252	-0.00000114	0.00000000
+		-6.27316229	-0.00042034	0.00025752	0.00042246	-0.00000114	0.00000000
+		-6.27316242	-0.00042028	0.00025748	0.00042240	-0.00000114	0.00000000
+		-6.27316256	-0.00042023	0.00025745	0.00042235	-0.00000114	0.00000000
+		-6.27316270	-0.00042017	0.00025741	0.00042229	-0.00000114	0.00000000
+		-6.27316283	-0.00042011	0.00025738	0.00042223	-0.00000114	0.00000000
+		-6.27316297	-0.00042006	0.00025734	0.00042217	-0.00000114	0.00000000
+		-6.27316311	-0.00042000	0.00025731	0.00042212	-0.00000114	0.00000000
+		-6.27316324	-0.00041994	0.00025727	0.00042206	-0.00000114	0.00000000
+		-6.27316338	-0.00041988	0.00025724	0.00042200	-0.00000114	0.00000000
+		-6.27316351	-0.00041983	0.00025720	0.00042194	-0.00000114	0.00000000
+		-6.27316365	-0.00041977	0.00025717	0.00042189	-0.00000114	0.00000000
+		-6.27316379	-0.00041971	0.00025713	0.00042183	-0.00000114	0.00000000
+		-6.27316392	-0.00041966	0.00025710	0.00042177	-0.00000114	0.00000000
+		-6.27316406	-0.00041960	0.00025706	0.00042172	-0.00000114	0.00000000
+		-6.27316420	-0.00041954	0.00025703	0.00042166	-0.00000114	0.00000000
+		-6.27316433	-0.00041949	0.00025699	0.00042160	-0.00000114	0.00000000
+		-6.27316447	-0.00041943	0.00025696	0.00042154	-0.00000114	0.00000000
+		-6.27316460	-0.00041937	0.00025692	0.00042149	-0.00000114	0.00000000
+		-6.27316474	-0.00041932	0.00025689	0.00042143	-0.00000114	0.00000000
+		-6.27316488	-0.00041926	0.00025685	0.00042137	-0.00000114	0.00000000
+		-6.27316501	-0.00041920	0.00025682	0.00042132	-0.00000114	0.00000000
+		-6.27316515	-0.00041915	0.00025678	0.00042126	-0.00000114	0.00000000
+		-6.27316528	-0.00041909	0.00025675	0.00042120	-0.00000114	0.00000000
+		-6.27316542	-0.00041903	0.00025671	0.00042115	-0.00000114	0.00000000
+		-6.27316555	-0.00041898	0.00025668	0.00042109	-0.00000114	0.00000000
+		-6.27316569	-0.00041892	0.00025664	0.00042103	-0.00000114	0.00000000
+		-6.27316583	-0.00041886	0.00025661	0.00042097	-0.00000114	0.00000000
+		-6.27316596	-0.00041881	0.00025658	0.00042092	-0.00000114	0.00000000
+		-6.27316610	-0.00041875	0.00025654	0.00042086	-0.00000114	0.00000000
+		-6.27316623	-0.00041869	0.00025651	0.00042080	-0.00000114	0.00000000
+		-6.27316637	-0.00041864	0.00025647	0.00042075	-0.00000114	0.00000000
+		-6.27316650	-0.00041858	0.00025644	0.00042069	-0.00000114	0.00000000
+		-6.27316664	-0.00041852	0.00025640	0.00042063	-0.00000114	0.00000000
+		-6.27316677	-0.00041847	0.00025637	0.00042058	-0.00000114	0.00000000
+		-6.27316691	-0.00041841	0.00025633	0.00042052	-0.00000114	0.00000000
+		-6.27316705	-0.00041835	0.00025630	0.00042046	-0.00000114	0.00000000
+		-6.27316718	-0.00041830	0.00025626	0.00042041	-0.00000114	0.00000000
+		-6.27316732	-0.00041824	0.00025623	0.00042035	-0.00000114	0.00000000
+		-6.27316745	-0.00041818	0.00025619	0.00042029	-0.00000114	0.00000000
+		-6.27316759	-0.00041813	0.00025616	0.00042023	-0.00000114	0.00000000
+		-6.27316772	-0.00041807	0.00025612	0.00042018	-0.00000114	0.00000000
+		-6.27316786	-0.00041801	0.00025609	0.00042012	-0.00000114	0.00000000
+		-6.27316799	-0.00041796	0.00025606	0.00042006	-0.00000114	0.00000000
+		-6.27316813	-0.00041790	0.00025602	0.00042001	-0.00000114	0.00000000
+		-6.27316826	-0.00041784	0.00025599	0.00041995	-0.00000114	0.00000000
+		-6.27316840	-0.00041779	0.00025595	0.00041989	-0.00000114	0.00000000
+		-6.27316853	-0.00041773	0.00025592	0.00041984	-0.00000114	0.00000000
+		-6.27316867	-0.00041768	0.00025588	0.00041978	-0.00000114	0.00000000
+		-6.27316880	-0.00041762	0.00025585	0.00041972	-0.00000114	0.00000000
+		-6.27316894	-0.00041756	0.00025581	0.00041967	-0.00000114	0.00000000
+		-6.27316907	-0.00041751	0.00025578	0.00041961	-0.00000114	0.00000000
+		-6.27316921	-0.00041745	0.00025574	0.00041955	-0.00000114	0.00000000
+		-6.27316934	-0.00041739	0.00025571	0.00041950	-0.00000114	0.00000000
+		-6.27316948	-0.00041734	0.00025568	0.00041944	-0.00000114	0.00000000
+		-6.27316961	-0.00041728	0.00025564	0.00041939	-0.00000114	0.00000000
+		-6.27316974	-0.00041722	0.00025561	0.00041933	-0.00000114	0.00000000
+		-6.27316988	-0.00041717	0.00025557	0.00041927	-0.00000114	0.00000000
+		-6.27317001	-0.00041711	0.00025554	0.00041922	-0.00000114	0.00000000
+		-6.27317015	-0.00041706	0.00025550	0.00041916	-0.00000114	0.00000000
+		-6.27317028	-0.00041700	0.00025547	0.00041910	-0.00000114	0.00000000
+		-6.27317042	-0.00041694	0.00025543	0.00041905	-0.00000114	0.00000000
+		-6.27317055	-0.00041689	0.00025540	0.00041899	-0.00000114	0.00000000
+		-6.27317069	-0.00041683	0.00025537	0.00041893	-0.00000114	0.00000000
+		-6.27317082	-0.00041678	0.00025533	0.00041888	-0.00000114	0.00000000
+		-6.27317095	-0.00041672	0.00025530	0.00041882	-0.00000114	0.00000000
+		-6.27317109	-0.00041666	0.00025526	0.00041876	-0.00000114	0.00000000
+		-6.27317122	-0.00041661	0.00025523	0.00041871	-0.00000114	0.00000000
+		-6.27317136	-0.00041655	0.00025519	0.00041865	-0.00000114	0.00000000
+		-6.27317149	-0.00041649	0.00025516	0.00041860	-0.00000114	0.00000000
+		-6.27317163	-0.00041644	0.00025512	0.00041854	-0.00000114	0.00000000
+		-6.27317176	-0.00041638	0.00025509	0.00041848	-0.00000114	0.00000000
+		-6.27317189	-0.00041633	0.00025506	0.00041843	-0.00000114	0.00000000
+		-6.27317203	-0.00041627	0.00025502	0.00041837	-0.00000114	0.00000000
+		-6.27317216	-0.00041621	0.00025499	0.00041831	-0.00000114	0.00000000
+		-6.27317230	-0.00041616	0.00025495	0.00041826	-0.00000114	0.00000000
+		-6.27317243	-0.00041610	0.00025492	0.00041820	-0.00000114	0.00000000
+		-6.27317256	-0.00041605	0.00025488	0.00041814	-0.00000114	0.00000000
+		-6.27317270	-0.00041599	0.00025485	0.00041809	-0.00000114	0.00000000
+		-6.27317283	-0.00041594	0.00025482	0.00041803	-0.00000114	0.00000000
+		-6.27317297	-0.00041588	0.00025478	0.00041798	-0.00000114	0.00000000
+		-6.27317310	-0.00041582	0.00025475	0.00041792	-0.00000115	0.00000000
+		-6.27317323	-0.00041577	0.00025471	0.00041786	-0.00000115	0.00000000
+		-6.27317337	-0.00041571	0.00025468	0.00041781	-0.00000115	0.00000000
+		-6.27317350	-0.00041566	0.00025465	0.00041775	-0.00000115	0.00000000
+		-6.27317363	-0.00041560	0.00025461	0.00041770	-0.00000115	0.00000000
+		-6.27317377	-0.00041554	0.00025458	0.00041764	-0.00000115	0.00000000
+		-6.27317390	-0.00041549	0.00025454	0.00041758	-0.00000115	0.00000000
+		-6.27317403	-0.00041543	0.00025451	0.00041753	-0.00000115	0.00000000
+		-6.27317417	-0.00041538	0.00025447	0.00041747	-0.00000115	0.00000000
+		-6.27317430	-0.00041532	0.00025444	0.00041742	-0.00000115	0.00000000
+		-6.27317443	-0.00041527	0.00025441	0.00041736	-0.00000115	0.00000000
+		-6.27317457	-0.00041521	0.00025437	0.00041730	-0.00000115	0.00000000
+		-6.27317470	-0.00041515	0.00025434	0.00041725	-0.00000115	0.00000000
+		-6.27317483	-0.00041510	0.00025430	0.00041719	-0.00000115	0.00000000
+		-6.27317497	-0.00041504	0.00025427	0.00041714	-0.00000115	0.00000000
+		-6.27317510	-0.00041499	0.00025424	0.00041708	-0.00000115	0.00000000
+		-6.27317523	-0.00041493	0.00025420	0.00041702	-0.00000115	0.00000000
+		-6.27317537	-0.00041488	0.00025417	0.00041697	-0.00000115	0.00000000
+		-6.27317550	-0.00041482	0.00025413	0.00041691	-0.00000115	0.00000000
+		-6.27317563	-0.00041476	0.00025410	0.00041686	-0.00000115	0.00000000
+		-6.27317577	-0.00041471	0.00025406	0.00041680	-0.00000115	0.00000000
+		-6.27317590	-0.00041465	0.00025403	0.00041674	-0.00000115	0.00000000
+		-6.27317603	-0.00041460	0.00025400	0.00041669	-0.00000115	0.00000000
+		-6.27317616	-0.00041454	0.00025396	0.00041663	-0.00000115	0.00000000
+		-6.27317630	-0.00041449	0.00025393	0.00041658	-0.00000115	0.00000000
+		-6.27317643	-0.00041443	0.00025389	0.00041652	-0.00000115	0.00000000
+		-6.27317656	-0.00041438	0.00025386	0.00041647	-0.00000115	0.00000000
+		-6.27317670	-0.00041432	0.00025383	0.00041641	-0.00000115	0.00000000
+		-6.27317683	-0.00041427	0.00025379	0.00041635	-0.00000115	0.00000000
+		-6.27317696	-0.00041421	0.00025376	0.00041630	-0.00000115	0.00000000
+		-6.27317709	-0.00041415	0.00025372	0.00041624	-0.00000115	0.00000000
+		-6.27317723	-0.00041410	0.00025369	0.00041619	-0.00000115	0.00000000
+		-6.27317736	-0.00041404	0.00025366	0.00041613	-0.00000115	0.00000000
+		-6.27317749	-0.00041399	0.00025362	0.00041608	-0.00000115	0.00000000
+		-6.27317762	-0.00041393	0.00025359	0.00041602	-0.00000115	0.00000000
+		-6.27317776	-0.00041388	0.00025355	0.00041596	-0.00000115	0.00000000
+		-6.27317789	-0.00041382	0.00025352	0.00041591	-0.00000115	0.00000000
+		-6.27317802	-0.00041377	0.00025349	0.00041585	-0.00000115	0.00000000
+		-6.27317815	-0.00041371	0.00025345	0.00041580	-0.00000115	0.00000000
+		-6.27317829	-0.00041366	0.00025342	0.00041574	-0.00000115	0.00000000
+		-6.27317842	-0.00041360	0.00025339	0.00041569	-0.00000115	0.00000000
+		-6.27317855	-0.00041355	0.00025335	0.00041563	-0.00000115	0.00000000
+		-6.27317868	-0.00041349	0.00025332	0.00041558	-0.00000115	0.00000000
+		-6.27317882	-0.00041344	0.00025328	0.00041552	-0.00000115	0.00000000
+		-6.27317895	-0.00041338	0.00025325	0.00041546	-0.00000115	0.00000000
+		-6.27317908	-0.00041333	0.00025322	0.00041541	-0.00000115	0.00000000
+		-6.27317921	-0.00041327	0.00025318	0.00041535	-0.00000115	0.00000000
+		-6.27317934	-0.00041321	0.00025315	0.00041530	-0.00000115	0.00000000
+		-6.27317948	-0.00041316	0.00025311	0.00041524	-0.00000115	0.00000000
+		-6.27317961	-0.00041310	0.00025308	0.00041519	-0.00000115	0.00000000
+		-6.27317974	-0.00041305	0.00025305	0.00041513	-0.00000115	0.00000000
+		-6.27317987	-0.00041299	0.00025301	0.00041508	-0.00000115	0.00000000
+		-6.27318000	-0.00041294	0.00025298	0.00041502	-0.00000115	0.00000000
+		-6.27318014	-0.00041288	0.00025295	0.00041497	-0.00000115	0.00000000
+		-6.27318027	-0.00041283	0.00025291	0.00041491	-0.00000115	0.00000000
+		-6.27318040	-0.00041277	0.00025288	0.00041485	-0.00000115	0.00000000
+		-6.27318053	-0.00041272	0.00025284	0.00041480	-0.00000115	0.00000000
+		-6.27318066	-0.00041266	0.00025281	0.00041474	-0.00000115	0.00000000
+		-6.27318079	-0.00041261	0.00025278	0.00041469	-0.00000115	0.00000000
+		-6.27318093	-0.00041255	0.00025274	0.00041463	-0.00000115	0.00000000
+		-6.27318106	-0.00041250	0.00025271	0.00041458	-0.00000115	0.00000000
+		-6.27318119	-0.00041244	0.00025268	0.00041452	-0.00000115	0.00000000
+		-6.27318132	-0.00041239	0.00025264	0.00041447	-0.00000115	0.00000000
+		-6.27318145	-0.00041233	0.00025261	0.00041441	-0.00000115	0.00000000
+		-6.27318158	-0.00041228	0.00025258	0.00041436	-0.00000115	0.00000000
+		-6.27318171	-0.00041222	0.00025254	0.00041430	-0.00000115	0.00000000
+		-6.27318185	-0.00041217	0.00025251	0.00041425	-0.00000115	0.00000000
+		-6.27318198	-0.00041211	0.00025247	0.00041419	-0.00000115	0.00000000
+		-6.27318211	-0.00041206	0.00025244	0.00041414	-0.00000115	0.00000000
+		-6.27318224	-0.00041200	0.00025241	0.00041408	-0.00000115	0.00000000
+		-6.27318237	-0.00041195	0.00025237	0.00041403	-0.00000115	0.00000000
+		-6.27318250	-0.00041190	0.00025234	0.00041397	-0.00000115	0.00000000
+		-6.27318263	-0.00041184	0.00025231	0.00041392	-0.00000115	0.00000000
+		-6.27318276	-0.00041179	0.00025227	0.00041386	-0.00000115	0.00000000
+		-6.27318290	-0.00041173	0.00025224	0.00041381	-0.00000115	0.00000000
+		-6.27318303	-0.00041168	0.00025221	0.00041375	-0.00000115	0.00000000
+		-6.27318316	-0.00041162	0.00025217	0.00041370	-0.00000115	0.00000000
+		-6.27318329	-0.00041157	0.00025214	0.00041364	-0.00000115	0.00000000
+		-6.27318342	-0.00041151	0.00025210	0.00041359	-0.00000115	0.00000000
+		-6.27318355	-0.00041146	0.00025207	0.00041353	-0.00000115	0.00000000
+		-6.27318368	-0.00041140	0.00025204	0.00041348	-0.00000115	0.00000000
+		-6.27318381	-0.00041135	0.00025200	0.00041342	-0.00000115	0.00000000
+		-6.27318394	-0.00041129	0.00025197	0.00041337	-0.00000115	0.00000000
+		-6.27318407	-0.00041124	0.00025194	0.00041331	-0.00000115	0.00000000
+		-6.27318420	-0.00041118	0.00025190	0.00041326	-0.00000115	0.00000000
+		-6.27318434	-0.00041113	0.00025187	0.00041320	-0.00000115	0.00000000
+		-6.27318447	-0.00041107	0.00025184	0.00041315	-0.00000115	0.00000000
+		-6.27318460	-0.00041102	0.00025180	0.00041309	-0.00000115	0.00000000
+		-6.27318473	-0.00041097	0.00025177	0.00041304	-0.00000115	0.00000000
+		-6.27318486	-0.00041091	0.00025174	0.00041298	-0.00000115	0.00000000
+		-6.27318499	-0.00041086	0.00025170	0.00041293	-0.00000115	0.00000000
+		-6.27318512	-0.00041080	0.00025167	0.00041287	-0.00000115	0.00000000
+		-6.27318525	-0.00041075	0.00025164	0.00041282	-0.00000115	0.00000000
+		-6.27318538	-0.00041069	0.00025160	0.00041276	-0.00000115	0.00000000
+		-6.27318551	-0.00041064	0.00025157	0.00041271	-0.00000115	0.00000000
+		-6.27318564	-0.00041058	0.00025154	0.00041265	-0.00000115	0.00000000
+		-6.27318577	-0.00041053	0.00025150	0.00041260	-0.00000115	0.00000000
+		-6.27318590	-0.00041048	0.00025147	0.00041254	-0.00000115	0.00000000
+		-6.27318603	-0.00041042	0.00025144	0.00041249	-0.00000115	0.00000000
+		-6.27318616	-0.00041037	0.00025140	0.00041243	-0.00000115	0.00000000
+		-6.27318629	-0.00041031	0.00025137	0.00041238	-0.00000115	0.00000000
+		-6.27318642	-0.00041026	0.00025134	0.00041233	-0.00000115	0.00000000
+		-6.27318655	-0.00041020	0.00025130	0.00041227	-0.00000115	0.00000000
+		-6.27318668	-0.00041015	0.00025127	0.00041222	-0.00000115	0.00000000
+		-6.27318681	-0.00041009	0.00025124	0.00041216	-0.00000115	0.00000000
+		-6.27318694	-0.00041004	0.00025120	0.00041211	-0.00000115	0.00000000
+		-6.27318707	-0.00040999	0.00025117	0.00041205	-0.00000115	0.00000000
+		-6.27318720	-0.00040993	0.00025114	0.00041200	-0.00000115	0.00000000
+		-6.27318733	-0.00040988	0.00025110	0.00041194	-0.00000115	0.00000000
+		-6.27318746	-0.00040982	0.00025107	0.00041189	-0.00000115	0.00000000
+		-6.27318759	-0.00040977	0.00025104	0.00041183	-0.00000115	0.00000000
+		-6.27318772	-0.00040971	0.00025100	0.00041178	-0.00000115	0.00000000
+		-6.27318785	-0.00040966	0.00025097	0.00041173	-0.00000115	0.00000000
+		-6.27318798	-0.00040961	0.00025094	0.00041167	-0.00000115	0.00000000
+		-6.27318811	-0.00040955	0.00025090	0.00041162	-0.00000115	0.00000000
+		-6.27318824	-0.00040950	0.00025087	0.00041156	-0.00000115	0.00000000
+		-6.27318837	-0.00040944	0.00025084	0.00041151	-0.00000115	0.00000000
+		-6.27318850	-0.00040939	0.00025080	0.00041145	-0.00000115	0.00000000
+		-6.27318863	-0.00040934	0.00025077	0.00041140	-0.00000115	0.00000000
+		-6.27318876	-0.00040928	0.00025074	0.00041134	-0.00000115	0.00000000
+		-6.27318889	-0.00040923	0.00025070	0.00041129	-0.00000115	0.00000000
+		-6.27318902	-0.00040917	0.00025067	0.00041124	-0.00000115	0.00000000
+		-6.27318915	-0.00040912	0.00025064	0.00041118	-0.00000115	0.00000000
+		-6.27318928	-0.00040906	0.00025060	0.00041113	-0.00000115	0.00000000
+		-6.27318941	-0.00040901	0.00025057	0.00041107	-0.00000115	0.00000000
+		-6.27318954	-0.00040896	0.00025054	0.00041102	-0.00000115	0.00000000
+		-6.27318967	-0.00040890	0.00025051	0.00041096	-0.00000115	0.00000000
+		-6.27318979	-0.00040885	0.00025047	0.00041091	-0.00000115	0.00000000
+		-6.27318992	-0.00040879	0.00025044	0.00041086	-0.00000115	0.00000000
+		-6.27319005	-0.00040874	0.00025041	0.00041080	-0.00000115	0.00000000
+		-6.27319018	-0.00040869	0.00025037	0.00041075	-0.00000115	0.00000000
+		-6.27319031	-0.00040863	0.00025034	0.00041069	-0.00000115	0.00000000
+		-6.27319044	-0.00040858	0.00025031	0.00041064	-0.00000115	0.00000000
+		-6.27319057	-0.00040852	0.00025027	0.00041058	-0.00000115	0.00000000
+		-6.27319070	-0.00040847	0.00025024	0.00041053	-0.00000115	0.00000000
+		-6.27319083	-0.00040842	0.00025021	0.00041048	-0.00000115	0.00000000
+		-6.27319096	-0.00040836	0.00025017	0.00041042	-0.00000115	0.00000000
+		-6.27319109	-0.00040831	0.00025014	0.00041037	-0.00000115	0.00000000
+		-6.27319121	-0.00040826	0.00025011	0.00041031	-0.00000115	0.00000000
+		-6.27319134	-0.00040820	0.00025008	0.00041026	-0.00000115	0.00000000
+		-6.27319147	-0.00040815	0.00025004	0.00041021	-0.00000115	0.00000000
+		-6.27319160	-0.00040809	0.00025001	0.00041015	-0.00000115	0.00000000
+		-6.27319173	-0.00040804	0.00024998	0.00041010	-0.00000115	0.00000000
+		-6.27319186	-0.00040799	0.00024994	0.00041004	-0.00000115	0.00000000
+		-6.27319199	-0.00040793	0.00024991	0.00040999	-0.00000115	0.00000000
+		-6.27319212	-0.00040788	0.00024988	0.00040993	-0.00000115	0.00000000
+		-6.27319224	-0.00040783	0.00024985	0.00040988	-0.00000115	0.00000000
+		-6.27319237	-0.00040777	0.00024981	0.00040983	-0.00000115	0.00000000
+		-6.27319250	-0.00040772	0.00024978	0.00040977	-0.00000115	0.00000000
+		-6.27319263	-0.00040766	0.00024975	0.00040972	-0.00000115	0.00000000
+		-6.27319276	-0.00040761	0.00024971	0.00040966	-0.00000115	0.00000000
+		-6.27319289	-0.00040756	0.00024968	0.00040961	-0.00000115	0.00000000
+		-6.27319302	-0.00040750	0.00024965	0.00040956	-0.00000115	0.00000000
+		-6.27319314	-0.00040745	0.00024961	0.00040950	-0.00000115	0.00000000
+		-6.27319327	-0.00040740	0.00024958	0.00040945	-0.00000115	0.00000000
+		-6.27319340	-0.00040734	0.00024955	0.00040940	-0.00000115	0.00000000
+		-6.27319353	-0.00040729	0.00024952	0.00040934	-0.00000115	0.00000000
+		-6.27319366	-0.00040724	0.00024948	0.00040929	-0.00000115	0.00000000
+		-6.27319379	-0.00040718	0.00024945	0.00040923	-0.00000115	0.00000000
+		-6.27319391	-0.00040713	0.00024942	0.00040918	-0.00000115	0.00000000
+		-6.27319404	-0.00040707	0.00024938	0.00040913	-0.00000115	0.00000000
+		-6.27319417	-0.00040702	0.00024935	0.00040907	-0.00000115	0.00000000
+		-6.27319430	-0.00040697	0.00024932	0.00040902	-0.00000115	0.00000000
+		-6.27319443	-0.00040691	0.00024929	0.00040896	-0.00000115	0.00000000
+		-6.27319455	-0.00040686	0.00024925	0.00040891	-0.00000115	0.00000000
+		-6.27319468	-0.00040681	0.00024922	0.00040886	-0.00000115	0.00000000
+		-6.27319481	-0.00040675	0.00024919	0.00040880	-0.00000115	0.00000000
+		-6.27319494	-0.00040670	0.00024916	0.00040875	-0.00000115	0.00000000
+		-6.27319507	-0.00040665	0.00024912	0.00040870	-0.00000115	0.00000000
+		-6.27319519	-0.00040659	0.00024909	0.00040864	-0.00000115	0.00000000
+		-6.27319532	-0.00040654	0.00024906	0.00040859	-0.00000115	0.00000000
+		-6.27319545	-0.00040649	0.00024902	0.00040854	-0.00000115	0.00000000
+		-6.27319558	-0.00040643	0.00024899	0.00040848	-0.00000115	0.00000000
+		-6.27319571	-0.00040638	0.00024896	0.00040843	-0.00000115	0.00000000
+		-6.27319583	-0.00040633	0.00024893	0.00040837	-0.00000115	0.00000000
+		-6.27319596	-0.00040627	0.00024889	0.00040832	-0.00000115	0.00000000
+		-6.27319609	-0.00040622	0.00024886	0.00040827	-0.00000115	0.00000000
+		-6.27319622	-0.00040617	0.00024883	0.00040821	-0.00000115	0.00000000
+		-6.27319634	-0.00040611	0.00024880	0.00040816	-0.00000115	0.00000000
+		-6.27319647	-0.00040606	0.00024876	0.00040811	-0.00000115	0.00000000
+		-6.27319660	-0.00040601	0.00024873	0.00040805	-0.00000115	0.00000000
+		-6.27319673	-0.00040595	0.00024870	0.00040800	-0.00000115	0.00000000
+		-6.27319685	-0.00040590	0.00024867	0.00040795	-0.00000115	0.00000000
+		-6.27319698	-0.00040585	0.00024863	0.00040789	-0.00000115	0.00000000
+		-6.27319711	-0.00040579	0.00024860	0.00040784	-0.00000115	0.00000000
+		-6.27319724	-0.00040574	0.00024857	0.00040779	-0.00000115	0.00000000
+		-6.27319736	-0.00040569	0.00024853	0.00040773	-0.00000115	0.00000000
+		-6.27319749	-0.00040563	0.00024850	0.00040768	-0.00000115	0.00000000
+		-6.27319762	-0.00040558	0.00024847	0.00040763	-0.00000115	0.00000000
+		-6.27319774	-0.00040553	0.00024844	0.00040757	-0.00000115	0.00000000
+		-6.27319787	-0.00040547	0.00024840	0.00040752	-0.00000115	0.00000000
+		-6.27319800	-0.00040542	0.00024837	0.00040746	-0.00000115	0.00000000
+		-6.27319813	-0.00040537	0.00024834	0.00040741	-0.00000115	0.00000000
+		-6.27319825	-0.00040532	0.00024831	0.00040736	-0.00000115	0.00000000
+		-6.27319838	-0.00040526	0.00024827	0.00040730	-0.00000115	0.00000000
+		-6.27319851	-0.00040521	0.00024824	0.00040725	-0.00000115	0.00000000
+		-6.27319863	-0.00040516	0.00024821	0.00040720	-0.00000115	0.00000000
+		-6.27319876	-0.00040510	0.00024818	0.00040714	-0.00000115	0.00000000
+		-6.27319889	-0.00040505	0.00024814	0.00040709	-0.00000115	0.00000000
+		-6.27319901	-0.00040500	0.00024811	0.00040704	-0.00000115	0.00000000
+		-6.27319914	-0.00040494	0.00024808	0.00040699	-0.00000115	0.00000000
+		-6.27319927	-0.00040489	0.00024805	0.00040693	-0.00000115	0.00000000
+		-6.27319939	-0.00040484	0.00024801	0.00040688	-0.00000115	0.00000000
+		-6.27319952	-0.00040479	0.00024798	0.00040683	-0.00000115	0.00000000
+		-6.27319965	-0.00040473	0.00024795	0.00040677	-0.00000115	0.00000000
+		-6.27319977	-0.00040468	0.00024792	0.00040672	-0.00000115	0.00000000
+		-6.27319990	-0.00040463	0.00024788	0.00040667	-0.00000115	0.00000000
+		-6.27320003	-0.00040457	0.00024785	0.00040661	-0.00000115	0.00000000
+		-6.27320015	-0.00040452	0.00024782	0.00040656	-0.00000115	0.00000000
+		-6.27320028	-0.00040447	0.00024779	0.00040651	-0.00000115	0.00000000
+		-6.27320041	-0.00040442	0.00024776	0.00040645	-0.00000115	0.00000000
+		-6.27320053	-0.00040436	0.00024772	0.00040640	-0.00000115	0.00000000
+		-6.27320066	-0.00040431	0.00024769	0.00040635	-0.00000115	0.00000000
+		-6.27320079	-0.00040426	0.00024766	0.00040629	-0.00000115	0.00000000
+		-6.27320091	-0.00040420	0.00024763	0.00040624	-0.00000115	0.00000000
+		-6.27320104	-0.00040415	0.00024759	0.00040619	-0.00000115	0.00000000
+		-6.27320117	-0.00040410	0.00024756	0.00040613	-0.00000115	0.00000000
+		-6.27320129	-0.00040405	0.00024753	0.00040608	-0.00000115	0.00000000
+		-6.27320142	-0.00040399	0.00024750	0.00040603	-0.00000115	0.00000000
+		-6.27320154	-0.00040394	0.00024746	0.00040598	-0.00000115	0.00000000
+		-6.27320167	-0.00040389	0.00024743	0.00040592	-0.00000115	0.00000000
+		-6.27320180	-0.00040383	0.00024740	0.00040587	-0.00000115	0.00000000
+		-6.27320192	-0.00040378	0.00024737	0.00040582	-0.00000115	0.00000000
+		-6.27320205	-0.00040373	0.00024733	0.00040576	-0.00000115	0.00000000
+		-6.27320217	-0.00040368	0.00024730	0.00040571	-0.00000115	0.00000000
+		-6.27320230	-0.00040362	0.00024727	0.00040566	-0.00000115	0.00000000
+		-6.27320243	-0.00040357	0.00024724	0.00040561	-0.00000115	0.00000000
+		-6.27320255	-0.00040352	0.00024721	0.00040555	-0.00000115	0.00000000
+		-6.27320268	-0.00040347	0.00024717	0.00040550	-0.00000115	0.00000000
+		-6.27320280	-0.00040341	0.00024714	0.00040545	-0.00000115	0.00000000
+		-6.27320293	-0.00040336	0.00024711	0.00040539	-0.00000115	0.00000000
+		-6.27320306	-0.00040331	0.00024708	0.00040534	-0.00000115	0.00000000
+		-6.27320318	-0.00040326	0.00024704	0.00040529	-0.00000115	0.00000000
+		-6.27320331	-0.00040320	0.00024701	0.00040524	-0.00000115	0.00000000
+		-6.27320343	-0.00040315	0.00024698	0.00040518	-0.00000115	0.00000000
+		-6.27320356	-0.00040310	0.00024695	0.00040513	-0.00000115	0.00000000
+		-6.27320368	-0.00040305	0.00024692	0.00040508	-0.00000115	0.00000000
+		-6.27320381	-0.00040299	0.00024688	0.00040502	-0.00000115	0.00000000
+		-6.27320394	-0.00040294	0.00024685	0.00040497	-0.00000115	0.00000000
+		-6.27320406	-0.00040289	0.00024682	0.00040492	-0.00000115	0.00000000
+		-6.27320419	-0.00040284	0.00024679	0.00040487	-0.00000115	0.00000000
+		-6.27320431	-0.00040278	0.00024676	0.00040481	-0.00000115	0.00000000
+		-6.27320444	-0.00040273	0.00024672	0.00040476	-0.00000115	0.00000000
+		-6.27320456	-0.00040268	0.00024669	0.00040471	-0.00000115	0.00000000
+		-6.27320469	-0.00040263	0.00024666	0.00040466	-0.00000115	0.00000000
+		-6.27320481	-0.00040257	0.00024663	0.00040460	-0.00000115	0.00000000
+		-6.27320494	-0.00040252	0.00024659	0.00040455	-0.00000115	0.00000000
+		-6.27320506	-0.00040247	0.00024656	0.00040450	-0.00000115	0.00000000
+		-6.27320519	-0.00040242	0.00024653	0.00040445	-0.00000115	0.00000000
+		-6.27320532	-0.00040237	0.00024650	0.00040439	-0.00000115	0.00000000
+		-6.27320544	-0.00040231	0.00024647	0.00040434	-0.00000115	0.00000000
+		-6.27320557	-0.00040226	0.00024643	0.00040429	-0.00000115	0.00000000
+		-6.27320569	-0.00040221	0.00024640	0.00040424	-0.00000115	0.00000000
+		-6.27320582	-0.00040216	0.00024637	0.00040418	-0.00000115	0.00000000
+		-6.27320594	-0.00040210	0.00024634	0.00040413	-0.00000115	0.00000000
+		-6.27320607	-0.00040205	0.00024631	0.00040408	-0.00000115	0.00000000
+		-6.27320619	-0.00040200	0.00024627	0.00040403	-0.00000115	0.00000000
+		-6.27320632	-0.00040195	0.00024624	0.00040397	-0.00000115	0.00000000
+		-6.27320644	-0.00040190	0.00024621	0.00040392	-0.00000115	0.00000000
+		-6.27320657	-0.00040184	0.00024618	0.00040387	-0.00000115	0.00000000
+		-6.27320669	-0.00040179	0.00024615	0.00040382	-0.00000115	0.00000000
+		-6.27320682	-0.00040174	0.00024611	0.00040376	-0.00000115	0.00000000
+		-6.27320694	-0.00040169	0.00024608	0.00040371	-0.00000115	0.00000000
+		-6.27320706	-0.00040163	0.00024605	0.00040366	-0.00000115	0.00000000
+		-6.27320719	-0.00040158	0.00024602	0.00040361	-0.00000115	0.00000000
+		-6.27320731	-0.00040153	0.00024599	0.00040355	-0.00000115	0.00000000
+		-6.27320744	-0.00040148	0.00024595	0.00040350	-0.00000115	0.00000000
+		-6.27320756	-0.00040143	0.00024592	0.00040345	-0.00000115	0.00000000
+		-6.27320769	-0.00040137	0.00024589	0.00040340	-0.00000115	0.00000000
+		-6.27320781	-0.00040132	0.00024586	0.00040334	-0.00000115	0.00000000
+		-6.27320794	-0.00040127	0.00024583	0.00040329	-0.00000115	0.00000000
+		-6.27320806	-0.00040122	0.00024580	0.00040324	-0.00000115	0.00000000
+		-6.27320819	-0.00040117	0.00024576	0.00040319	-0.00000115	0.00000000
+		-6.27320831	-0.00040111	0.00024573	0.00040313	-0.00000115	0.00000000
+		-6.27320843	-0.00040106	0.00024570	0.00040308	-0.00000115	0.00000000
+		-6.27320856	-0.00040101	0.00024567	0.00040303	-0.00000115	0.00000000
+		-6.27320868	-0.00040096	0.00024564	0.00040298	-0.00000115	0.00000000
+		-6.27320881	-0.00040091	0.00024560	0.00040293	-0.00000115	0.00000000
+		-6.27320893	-0.00040085	0.00024557	0.00040287	-0.00000115	0.00000000
+		-6.27320906	-0.00040080	0.00024554	0.00040282	-0.00000115	0.00000000
+		-6.27320918	-0.00040075	0.00024551	0.00040277	-0.00000115	0.00000000
+		-6.27320930	-0.00040070	0.00024548	0.00040272	-0.00000115	0.00000000
+		-6.27320943	-0.00040065	0.00024545	0.00040267	-0.00000115	0.00000000
+		-6.27320955	-0.00040059	0.00024541	0.00040261	-0.00000115	0.00000000
+		-6.27320968	-0.00040054	0.00024538	0.00040256	-0.00000115	0.00000000
+		-6.27320980	-0.00040049	0.00024535	0.00040251	-0.00000115	0.00000000
+		-6.27320993	-0.00040044	0.00024532	0.00040246	-0.00000115	0.00000000
+		-6.27321005	-0.00040039	0.00024529	0.00040240	-0.00000115	0.00000000
+		-6.27321017	-0.00040034	0.00024525	0.00040235	-0.00000115	0.00000000
+		-6.27321030	-0.00040028	0.00024522	0.00040230	-0.00000115	0.00000000
+		-6.27321042	-0.00040023	0.00024519	0.00040225	-0.00000115	0.00000000
+		-6.27321054	-0.00040018	0.00024516	0.00040220	-0.00000115	0.00000000
+		-6.27321067	-0.00040013	0.00024513	0.00040214	-0.00000115	0.00000000
+		-6.27321079	-0.00040008	0.00024510	0.00040209	-0.00000115	0.00000000
+		-6.27321092	-0.00040003	0.00024506	0.00040204	-0.00000115	0.00000000
+		-6.27321104	-0.00039997	0.00024503	0.00040199	-0.00000115	0.00000000
+		-6.27321116	-0.00039992	0.00024500	0.00040194	-0.00000115	0.00000000
+		-6.27321129	-0.00039987	0.00024497	0.00040189	-0.00000115	0.00000000
+		-6.27321141	-0.00039982	0.00024494	0.00040183	-0.00000115	0.00000000
+		-6.27321153	-0.00039977	0.00024491	0.00040178	-0.00000115	0.00000000
+		-6.27321166	-0.00039972	0.00024487	0.00040173	-0.00000115	0.00000000
+		-6.27321178	-0.00039966	0.00024484	0.00040168	-0.00000115	0.00000000
+		-6.27321191	-0.00039961	0.00024481	0.00040163	-0.00000115	0.00000000
+		-6.27321203	-0.00039956	0.00024478	0.00040157	-0.00000115	0.00000000
+		-6.27321215	-0.00039951	0.00024475	0.00040152	-0.00000115	0.00000000
+		-6.27321228	-0.00039946	0.00024472	0.00040147	-0.00000115	0.00000000
+		-6.27321240	-0.00039941	0.00024468	0.00040142	-0.00000115	0.00000000
+		-6.27321252	-0.00039935	0.00024465	0.00040137	-0.00000115	0.00000000
+		-6.27321265	-0.00039930	0.00024462	0.00040131	-0.00000115	0.00000000
+		-6.27321277	-0.00039925	0.00024459	0.00040126	-0.00000115	0.00000000
+		-6.27321289	-0.00039920	0.00024456	0.00040121	-0.00000115	0.00000000
+		-6.27321302	-0.00039915	0.00024453	0.00040116	-0.00000115	0.00000000
+		-6.27321314	-0.00039910	0.00024450	0.00040111	-0.00000115	0.00000000
+		-6.27321326	-0.00039905	0.00024446	0.00040106	-0.00000115	0.00000000
+		-6.27321338	-0.00039899	0.00024443	0.00040100	-0.00000115	0.00000000
+		-6.27321351	-0.00039894	0.00024440	0.00040095	-0.00000115	0.00000000
+		-6.27321363	-0.00039889	0.00024437	0.00040090	-0.00000115	0.00000000
+		-6.27321375	-0.00039884	0.00024434	0.00040085	-0.00000115	0.00000000
+		-6.27321388	-0.00039879	0.00024431	0.00040080	-0.00000115	0.00000000
+		-6.27321400	-0.00039874	0.00024427	0.00040075	-0.00000115	0.00000000
+		-6.27321412	-0.00039869	0.00024424	0.00040069	-0.00000115	0.00000000
+		-6.27321425	-0.00039863	0.00024421	0.00040064	-0.00000115	0.00000000
+		-6.27321437	-0.00039858	0.00024418	0.00040059	-0.00000115	0.00000000
+		-6.27321449	-0.00039853	0.00024415	0.00040054	-0.00000115	0.00000000
+		-6.27321461	-0.00039848	0.00024412	0.00040049	-0.00000115	0.00000000
+		-6.27321474	-0.00039843	0.00024409	0.00040044	-0.00000115	0.00000000
+		-6.27321486	-0.00039838	0.00024405	0.00040039	-0.00000115	0.00000000
+		-6.27321498	-0.00039833	0.00024402	0.00040033	-0.00000115	0.00000000
+		-6.27321511	-0.00039828	0.00024399	0.00040028	-0.00000115	0.00000000
+		-6.27321523	-0.00039822	0.00024396	0.00040023	-0.00000115	0.00000000
+		-6.27321535	-0.00039817	0.00024393	0.00040018	-0.00000115	0.00000000
+		-6.27321547	-0.00039812	0.00024390	0.00040013	-0.00000115	0.00000000
+		-6.27321560	-0.00039807	0.00024387	0.00040008	-0.00000115	0.00000000
+		-6.27321572	-0.00039802	0.00024383	0.00040002	-0.00000115	0.00000000
+		-6.27321584	-0.00039797	0.00024380	0.00039997	-0.00000115	0.00000000
+		-6.27321596	-0.00039792	0.00024377	0.00039992	-0.00000115	0.00000000
+		-6.27321609	-0.00039787	0.00024374	0.00039987	-0.00000115	0.00000000
+		-6.27321621	-0.00039781	0.00024371	0.00039982	-0.00000115	0.00000000
+		-6.27321633	-0.00039776	0.00024368	0.00039977	-0.00000115	0.00000000
+		-6.27321645	-0.00039771	0.00024365	0.00039972	-0.00000115	0.00000000
+		-6.27321658	-0.00039766	0.00024362	0.00039966	-0.00000115	0.00000000
+		-6.27321670	-0.00039761	0.00024358	0.00039961	-0.00000115	0.00000000
+		-6.27321682	-0.00039756	0.00024355	0.00039956	-0.00000115	0.00000000
+		-6.27321694	-0.00039751	0.00024352	0.00039951	-0.00000115	0.00000000
+		-6.27321706	-0.00039746	0.00024349	0.00039946	-0.00000115	0.00000000
+		-6.27321719	-0.00039741	0.00024346	0.00039941	-0.00000115	0.00000000
+		-6.27321731	-0.00039736	0.00024343	0.00039936	-0.00000115	0.00000000
+		-6.27321743	-0.00039730	0.00024340	0.00039931	-0.00000115	0.00000000
+		-6.27321755	-0.00039725	0.00024337	0.00039925	-0.00000115	0.00000000
+		-6.27321767	-0.00039720	0.00024333	0.00039920	-0.00000115	0.00000000
+		-6.27321780	-0.00039715	0.00024330	0.00039915	-0.00000115	0.00000000
+		-6.27321792	-0.00039710	0.00024327	0.00039910	-0.00000115	0.00000000
+		-6.27321804	-0.00039705	0.00024324	0.00039905	-0.00000115	0.00000000
+		-6.27321816	-0.00039700	0.00024321	0.00039900	-0.00000115	0.00000000
+		-6.27321828	-0.00039695	0.00024318	0.00039895	-0.00000115	0.00000000
+		-6.27321841	-0.00039690	0.00024315	0.00039890	-0.00000115	0.00000000
+		-6.27321853	-0.00039685	0.00024312	0.00039884	-0.00000115	0.00000000
+		-6.27321865	-0.00039680	0.00024308	0.00039879	-0.00000115	0.00000000
+		-6.27321877	-0.00039674	0.00024305	0.00039874	-0.00000115	0.00000000
+		-6.27321889	-0.00039669	0.00024302	0.00039869	-0.00000115	0.00000000
+		-6.27321901	-0.00039664	0.00024299	0.00039864	-0.00000115	0.00000000
+		-6.27321914	-0.00039659	0.00024296	0.00039859	-0.00000115	0.00000000
+		-6.27321926	-0.00039654	0.00024293	0.00039854	-0.00000115	0.00000000
+		-6.27321938	-0.00039649	0.00024290	0.00039849	-0.00000115	0.00000000
+		-6.27321950	-0.00039644	0.00024287	0.00039844	-0.00000115	0.00000000
+		-6.27321962	-0.00039639	0.00024284	0.00039839	-0.00000115	0.00000000
+		-6.27321974	-0.00039634	0.00024280	0.00039833	-0.00000115	0.00000000
+		-6.27321987	-0.00039629	0.00024277	0.00039828	-0.00000115	0.00000000
+		-6.27321999	-0.00039624	0.00024274	0.00039823	-0.00000115	0.00000000
+		-6.27322011	-0.00039619	0.00024271	0.00039818	-0.00000115	0.00000000
+		-6.27322023	-0.00039613	0.00024268	0.00039813	-0.00000115	0.00000000
+		-6.27322035	-0.00039608	0.00024265	0.00039808	-0.00000115	0.00000000
+		-6.27322047	-0.00039603	0.00024262	0.00039803	-0.00000115	0.00000000
+		-6.27322059	-0.00039598	0.00024259	0.00039798	-0.00000115	0.00000000
+		-6.27322071	-0.00039593	0.00024256	0.00039793	-0.00000115	0.00000000
+		-6.27322084	-0.00039588	0.00024252	0.00039788	-0.00000115	0.00000000
+		-6.27322096	-0.00039583	0.00024249	0.00039782	-0.00000115	0.00000000
+		-6.27322108	-0.00039578	0.00024246	0.00039777	-0.00000115	0.00000000
+		-6.27322120	-0.00039573	0.00024243	0.00039772	-0.00000115	0.00000000
+		-6.27322132	-0.00039568	0.00024240	0.00039767	-0.00000115	0.00000000
+		-6.27322144	-0.00039563	0.00024237	0.00039762	-0.00000115	0.00000000
+		-6.27322156	-0.00039558	0.00024234	0.00039757	-0.00000115	0.00000000
+		-6.27322168	-0.00039553	0.00024231	0.00039752	-0.00000115	0.00000000
+		-6.27322180	-0.00039548	0.00024228	0.00039747	-0.00000115	0.00000000
+		-6.27322193	-0.00039543	0.00024225	0.00039742	-0.00000115	0.00000000
+		-6.27322205	-0.00039538	0.00024221	0.00039737	-0.00000115	0.00000000
+		-6.27322217	-0.00039533	0.00024218	0.00039732	-0.00000115	0.00000000
+		-6.27322229	-0.00039528	0.00024215	0.00039727	-0.00000115	0.00000000
+		-6.27322241	-0.00039522	0.00024212	0.00039722	-0.00000115	0.00000000
+		-6.27322253	-0.00039517	0.00024209	0.00039716	-0.00000115	0.00000000
+		-6.27322265	-0.00039512	0.00024206	0.00039711	-0.00000115	0.00000000
+		-6.27322277	-0.00039507	0.00024203	0.00039706	-0.00000115	0.00000000
+		-6.27322289	-0.00039502	0.00024200	0.00039701	-0.00000115	0.00000000
+		-6.27322301	-0.00039497	0.00024197	0.00039696	-0.00000115	0.00000000
+		-6.27322313	-0.00039492	0.00024194	0.00039691	-0.00000115	0.00000000
+		-6.27322325	-0.00039487	0.00024191	0.00039686	-0.00000115	0.00000000
+		-6.27322337	-0.00039482	0.00024187	0.00039681	-0.00000115	0.00000000
+		-6.27322349	-0.00039477	0.00024184	0.00039676	-0.00000115	0.00000000
+		-6.27322362	-0.00039472	0.00024181	0.00039671	-0.00000115	0.00000000
+		-6.27322374	-0.00039467	0.00024178	0.00039666	-0.00000115	0.00000000
+		-6.27322386	-0.00039462	0.00024175	0.00039661	-0.00000115	0.00000000
+		-6.27322398	-0.00039457	0.00024172	0.00039656	-0.00000115	0.00000000
+		-6.27322410	-0.00039452	0.00024169	0.00039651	-0.00000115	0.00000000
+		-6.27322422	-0.00039447	0.00024166	0.00039646	-0.00000115	0.00000000
+		-6.27322434	-0.00039442	0.00024163	0.00039641	-0.00000115	0.00000000
+		-6.27322446	-0.00039437	0.00024160	0.00039635	-0.00000115	0.00000000
+		-6.27322458	-0.00039432	0.00024157	0.00039630	-0.00000115	0.00000000
+		-6.27322470	-0.00039427	0.00024154	0.00039625	-0.00000115	0.00000000
+		-6.27322482	-0.00039422	0.00024150	0.00039620	-0.00000115	0.00000000
+		-6.27322494	-0.00039417	0.00024147	0.00039615	-0.00000115	0.00000000
+		-6.27322506	-0.00039412	0.00024144	0.00039610	-0.00000115	0.00000000
+		-6.27322518	-0.00039407	0.00024141	0.00039605	-0.00000115	0.00000000
+		-6.27322530	-0.00039402	0.00024138	0.00039600	-0.00000115	0.00000000
+		-6.27322542	-0.00039397	0.00024135	0.00039595	-0.00000115	0.00000000
+		-6.27322554	-0.00039392	0.00024132	0.00039590	-0.00000115	0.00000000
+		-6.27322566	-0.00039387	0.00024129	0.00039585	-0.00000115	0.00000000
+		-6.27322578	-0.00039382	0.00024126	0.00039580	-0.00000115	0.00000000
+		-6.27322590	-0.00039377	0.00024123	0.00039575	-0.00000115	0.00000000
+		-6.27322602	-0.00039372	0.00024120	0.00039570	-0.00000115	0.00000000
+		-6.27322614	-0.00039367	0.00024117	0.00039565	-0.00000115	0.00000000
+		-6.27322626	-0.00039362	0.00024114	0.00039560	-0.00000115	0.00000000
+		-6.27322638	-0.00039357	0.00024111	0.00039555	-0.00000115	0.00000000
+		-6.27322650	-0.00039352	0.00024107	0.00039550	-0.00000115	0.00000000
+		-6.27322662	-0.00039347	0.00024104	0.00039545	-0.00000115	0.00000000
+		-6.27322674	-0.00039342	0.00024101	0.00039540	-0.00000115	0.00000000
+		-6.27322686	-0.00039337	0.00024098	0.00039535	-0.00000115	0.00000000
+		-6.27322698	-0.00039332	0.00024095	0.00039530	-0.00000115	0.00000000
+		-6.27322710	-0.00039327	0.00024092	0.00039525	-0.00000115	0.00000000
+		-6.27322722	-0.00039322	0.00024089	0.00039520	-0.00000115	0.00000000
+		-6.27322734	-0.00039317	0.00024086	0.00039515	-0.00000115	0.00000000
+		-6.27322746	-0.00039312	0.00024083	0.00039510	-0.00000115	0.00000000
+		-6.27322757	-0.00039307	0.00024080	0.00039505	-0.00000115	0.00000000
+		-6.27322769	-0.00039302	0.00024077	0.00039500	-0.00000115	0.00000000
+		-6.27322781	-0.00039297	0.00024074	0.00039495	-0.00000115	0.00000000
+		-6.27322793	-0.00039292	0.00024071	0.00039490	-0.00000115	0.00000000
+		-6.27322805	-0.00039287	0.00024068	0.00039485	-0.00000115	0.00000000
+		-6.27322817	-0.00039282	0.00024065	0.00039480	-0.00000115	0.00000000
+		-6.27322829	-0.00039277	0.00024062	0.00039475	-0.00000115	0.00000000
+		-6.27322841	-0.00039272	0.00024059	0.00039470	-0.00000115	0.00000000
+		-6.27322853	-0.00039267	0.00024055	0.00039465	-0.00000115	0.00000000
+		-6.27322865	-0.00039262	0.00024052	0.00039460	-0.00000115	0.00000000
+		-6.27322877	-0.00039257	0.00024049	0.00039455	-0.00000115	0.00000000
+		-6.27322889	-0.00039252	0.00024046	0.00039450	-0.00000115	0.00000000
+		-6.27322901	-0.00039247	0.00024043	0.00039445	-0.00000115	0.00000000
+		-6.27322913	-0.00039242	0.00024040	0.00039440	-0.00000115	0.00000000
+		-6.27322924	-0.00039237	0.00024037	0.00039435	-0.00000115	0.00000000
+		-6.27322936	-0.00039232	0.00024034	0.00039430	-0.00000115	0.00000000
+		-6.27322948	-0.00039227	0.00024031	0.00039425	-0.00000115	0.00000000
+		-6.27322960	-0.00039222	0.00024028	0.00039420	-0.00000115	0.00000000
+		-6.27322972	-0.00039217	0.00024025	0.00039415	-0.00000115	0.00000000
+		-6.27322984	-0.00039212	0.00024022	0.00039410	-0.00000115	0.00000000
+		-6.27322996	-0.00039207	0.00024019	0.00039405	-0.00000115	0.00000000
+		-6.27323008	-0.00039202	0.00024016	0.00039400	-0.00000115	0.00000000
+		-6.27323020	-0.00039197	0.00024013	0.00039395	-0.00000115	0.00000000
+		-6.27323032	-0.00039192	0.00024010	0.00039390	-0.00000115	0.00000000
+		-6.27323043	-0.00039187	0.00024007	0.00039385	-0.00000115	0.00000000
+		-6.27323055	-0.00039182	0.00024004	0.00039380	-0.00000115	0.00000000
+		-6.27323067	-0.00039177	0.00024001	0.00039375	-0.00000115	0.00000000
+		-6.27323079	-0.00039172	0.00023998	0.00039370	-0.00000115	0.00000000
+		-6.27323091	-0.00039167	0.00023995	0.00039365	-0.00000115	0.00000000
+		-6.27323103	-0.00039162	0.00023992	0.00039360	-0.00000115	0.00000000
+		-6.27323115	-0.00039158	0.00023989	0.00039355	-0.00000115	0.00000000
+		-6.27323126	-0.00039153	0.00023985	0.00039350	-0.00000115	0.00000000
+		-6.27323138	-0.00039148	0.00023982	0.00039345	-0.00000115	0.00000000
+		-6.27323150	-0.00039143	0.00023979	0.00039340	-0.00000115	0.00000000
+		-6.27323162	-0.00039138	0.00023976	0.00039335	-0.00000115	0.00000000
+		-6.27323174	-0.00039133	0.00023973	0.00039330	-0.00000115	0.00000000
+		-6.27323186	-0.00039128	0.00023970	0.00039325	-0.00000115	0.00000000
+		-6.27323198	-0.00039123	0.00023967	0.00039320	-0.00000115	0.00000000
+		-6.27323209	-0.00039118	0.00023964	0.00039315	-0.00000115	0.00000000
+		-6.27323221	-0.00039113	0.00023961	0.00039310	-0.00000115	0.00000000
+		-6.27323233	-0.00039108	0.00023958	0.00039305	-0.00000115	0.00000000
+		-6.27323245	-0.00039103	0.00023955	0.00039300	-0.00000115	0.00000000
+		-6.27323257	-0.00039098	0.00023952	0.00039295	-0.00000115	0.00000000
+		-6.27323268	-0.00039093	0.00023949	0.00039290	-0.00000115	0.00000000
+		-6.27323280	-0.00039088	0.00023946	0.00039285	-0.00000115	0.00000000
+		-6.27323292	-0.00039083	0.00023943	0.00039280	-0.00000115	0.00000000
+		-6.27323304	-0.00039078	0.00023940	0.00039275	-0.00000115	0.00000000
+		-6.27323316	-0.00039073	0.00023937	0.00039270	-0.00000115	0.00000000
+		-6.27323328	-0.00039069	0.00023934	0.00039265	-0.00000115	0.00000000
+		-6.27323339	-0.00039064	0.00023931	0.00039260	-0.00000115	0.00000000
+		-6.27323351	-0.00039059	0.00023928	0.00039255	-0.00000115	0.00000000
+		-6.27323363	-0.00039054	0.00023925	0.00039250	-0.00000115	0.00000000
+		-6.27323375	-0.00039049	0.00023922	0.00039245	-0.00000115	0.00000000
+		-6.27323387	-0.00039044	0.00023919	0.00039241	-0.00000115	0.00000000
+		-6.27323398	-0.00039039	0.00023916	0.00039236	-0.00000115	0.00000000
+		-6.27323410	-0.00039034	0.00023913	0.00039231	-0.00000115	0.00000000
+		-6.27323422	-0.00039029	0.00023910	0.00039226	-0.00000115	0.00000000
+		-6.27323434	-0.00039024	0.00023907	0.00039221	-0.00000115	0.00000000
+		-6.27323445	-0.00039019	0.00023904	0.00039216	-0.00000115	0.00000000
+		-6.27323457	-0.00039014	0.00023901	0.00039211	-0.00000115	0.00000000
+		-6.27323469	-0.00039009	0.00023898	0.00039206	-0.00000115	0.00000000
+		-6.27323481	-0.00039005	0.00023895	0.00039201	-0.00000115	0.00000000
+		-6.27323493	-0.00039000	0.00023892	0.00039196	-0.00000115	0.00000000
+		-6.27323504	-0.00038995	0.00023889	0.00039191	-0.00000115	0.00000000
+		-6.27323516	-0.00038990	0.00023886	0.00039186	-0.00000115	0.00000000
+		-6.27323528	-0.00038985	0.00023883	0.00039181	-0.00000115	0.00000000
+		-6.27323540	-0.00038980	0.00023880	0.00039176	-0.00000115	0.00000000
+		-6.27323551	-0.00038975	0.00023877	0.00039171	-0.00000115	0.00000000
+		-6.27323563	-0.00038970	0.00023874	0.00039166	-0.00000115	0.00000000
+		-6.27323575	-0.00038965	0.00023871	0.00039161	-0.00000115	0.00000000
+		-6.27323587	-0.00038960	0.00023868	0.00039157	-0.00000115	0.00000000
+		-6.27323598	-0.00038955	0.00023865	0.00039152	-0.00000115	0.00000000
+		-6.27323610	-0.00038951	0.00023862	0.00039147	-0.00000115	0.00000000
+		-6.27323622	-0.00038946	0.00023859	0.00039142	-0.00000115	0.00000000
+		-6.27323633	-0.00038941	0.00023856	0.00039137	-0.00000115	0.00000000
+		-6.27323645	-0.00038936	0.00023853	0.00039132	-0.00000115	0.00000000
+		-6.27323657	-0.00038931	0.00023850	0.00039127	-0.00000115	0.00000000
+		-6.27323669	-0.00038926	0.00023847	0.00039122	-0.00000115	0.00000000
+		-6.27323680	-0.00038921	0.00023844	0.00039117	-0.00000115	0.00000000
+		-6.27323692	-0.00038916	0.00023841	0.00039112	-0.00000115	0.00000000
+		-6.27323704	-0.00038911	0.00023838	0.00039107	-0.00000115	0.00000000
+		-6.27323715	-0.00038907	0.00023835	0.00039102	-0.00000115	0.00000000
+		-6.27323727	-0.00038902	0.00023832	0.00039097	-0.00000115	0.00000000
+		-6.27323739	-0.00038897	0.00023829	0.00039093	-0.00000115	0.00000000
+		-6.27323751	-0.00038892	0.00023826	0.00039088	-0.00000115	0.00000000
+		-6.27323762	-0.00038887	0.00023823	0.00039083	-0.00000115	0.00000000
+		-6.27323774	-0.00038882	0.00023820	0.00039078	-0.00000115	0.00000000
+		-6.27323786	-0.00038877	0.00023817	0.00039073	-0.00000115	0.00000000
+		-6.27323797	-0.00038872	0.00023814	0.00039068	-0.00000115	0.00000000
+		-6.27323809	-0.00038867	0.00023811	0.00039063	-0.00000115	0.00000000
+		-6.27323821	-0.00038863	0.00023808	0.00039058	-0.00000115	0.00000000
+		-6.27323832	-0.00038858	0.00023805	0.00039053	-0.00000115	0.00000000
+		-6.27323844	-0.00038853	0.00023802	0.00039048	-0.00000115	0.00000000
+		-6.27323856	-0.00038848	0.00023799	0.00039044	-0.00000115	0.00000000
+		-6.27323867	-0.00038843	0.00023796	0.00039039	-0.00000115	0.00000000
+		-6.27323879	-0.00038838	0.00023793	0.00039034	-0.00000115	0.00000000
+		-6.27323891	-0.00038833	0.00023790	0.00039029	-0.00000115	0.00000000
+		-6.27323902	-0.00038828	0.00023787	0.00039024	-0.00000115	0.00000000
+		-6.27323914	-0.00038824	0.00023784	0.00039019	-0.00000115	0.00000000
+		-6.27323926	-0.00038819	0.00023781	0.00039014	-0.00000115	0.00000000
+		-6.27323937	-0.00038814	0.00023778	0.00039009	-0.00000115	0.00000000
+		-6.27323949	-0.00038809	0.00023775	0.00039004	-0.00000115	0.00000000
+		-6.27323961	-0.00038804	0.00023772	0.00038999	-0.00000115	0.00000000
+		-6.27323972	-0.00038799	0.00023769	0.00038995	-0.00000115	0.00000000
+		-6.27323984	-0.00038794	0.00023766	0.00038990	-0.00000115	0.00000000
+		-6.27323996	-0.00038789	0.00023763	0.00038985	-0.00000115	0.00000000
+		-6.27324007	-0.00038785	0.00023760	0.00038980	-0.00000115	0.00000000
+		-6.27324019	-0.00038780	0.00023757	0.00038975	-0.00000115	0.00000000
+		-6.27324030	-0.00038775	0.00023754	0.00038970	-0.00000115	0.00000000
+		-6.27324042	-0.00038770	0.00023751	0.00038965	-0.00000115	0.00000000
+		-6.27324054	-0.00038765	0.00023748	0.00038960	-0.00000115	0.00000000
+		-6.27324065	-0.00038760	0.00023745	0.00038956	-0.00000115	0.00000000
+		-6.27324077	-0.00038755	0.00023742	0.00038951	-0.00000115	0.00000000
+		-6.27324089	-0.00038751	0.00023739	0.00038946	-0.00000115	0.00000000
+		-6.27324100	-0.00038746	0.00023736	0.00038941	-0.00000115	0.00000000
+		-6.27324112	-0.00038741	0.00023733	0.00038936	-0.00000115	0.00000000
+		-6.27324123	-0.00038736	0.00023730	0.00038931	-0.00000115	0.00000000
+		-6.27324135	-0.00038731	0.00023727	0.00038926	-0.00000115	0.00000000
+		-6.27324147	-0.00038726	0.00023724	0.00038921	-0.00000115	0.00000000
+		-6.27324158	-0.00038722	0.00023721	0.00038917	-0.00000115	0.00000000
+		-6.27324170	-0.00038717	0.00023718	0.00038912	-0.00000115	0.00000000
+		-6.27324181	-0.00038712	0.00023715	0.00038907	-0.00000115	0.00000000
+		-6.27324193	-0.00038707	0.00023712	0.00038902	-0.00000115	0.00000000
+		-6.27324205	-0.00038702	0.00023709	0.00038897	-0.00000115	0.00000000
+		-6.27324216	-0.00038697	0.00023706	0.00038892	-0.00000115	0.00000000
+		-6.27324228	-0.00038693	0.00023704	0.00038887	-0.00000115	0.00000000
+		-6.27324239	-0.00038688	0.00023701	0.00038882	-0.00000115	0.00000000
+		-6.27324251	-0.00038683	0.00023698	0.00038878	-0.00000115	0.00000000
+		-6.27324262	-0.00038678	0.00023695	0.00038873	-0.00000115	0.00000000
+		-6.27324274	-0.00038673	0.00023692	0.00038868	-0.00000115	0.00000000
+		-6.27324286	-0.00038668	0.00023689	0.00038863	-0.00000115	0.00000000
+		-6.27324297	-0.00038664	0.00023686	0.00038858	-0.00000115	0.00000000
+		-6.27324309	-0.00038659	0.00023683	0.00038853	-0.00000115	0.00000000
+		-6.27324320	-0.00038654	0.00023680	0.00038848	-0.00000115	0.00000000
+		-6.27324332	-0.00038649	0.00023677	0.00038844	-0.00000115	0.00000000
+		-6.27324343	-0.00038644	0.00023674	0.00038839	-0.00000115	0.00000000
+		-6.27324355	-0.00038639	0.00023671	0.00038834	-0.00000115	0.00000000
+		-6.27324366	-0.00038635	0.00023668	0.00038829	-0.00000115	0.00000000
+		-6.27324378	-0.00038630	0.00023665	0.00038824	-0.00000115	0.00000000
+		-6.27324390	-0.00038625	0.00023662	0.00038819	-0.00000115	0.00000000
+		-6.27324401	-0.00038620	0.00023659	0.00038815	-0.00000115	0.00000000
+		-6.27324413	-0.00038615	0.00023656	0.00038810	-0.00000115	0.00000000
+		-6.27324424	-0.00038610	0.00023653	0.00038805	-0.00000115	0.00000000
+		-6.27324436	-0.00038606	0.00023650	0.00038800	-0.00000115	0.00000000
+		-6.27324447	-0.00038601	0.00023647	0.00038795	-0.00000115	0.00000000
+		-6.27324459	-0.00038596	0.00023644	0.00038790	-0.00000115	0.00000000
+		-6.27324470	-0.00038591	0.00023641	0.00038786	-0.00000115	0.00000000
+		-6.27324482	-0.00038586	0.00023638	0.00038781	-0.00000115	0.00000000
+		-6.27324493	-0.00038582	0.00023636	0.00038776	-0.00000115	0.00000000
+		-6.27324505	-0.00038577	0.00023633	0.00038771	-0.00000115	0.00000000
+		-6.27324516	-0.00038572	0.00023630	0.00038766	-0.00000115	0.00000000
+		-6.27324528	-0.00038567	0.00023627	0.00038761	-0.00000115	0.00000000
+		-6.27324539	-0.00038562	0.00023624	0.00038757	-0.00000115	0.00000000
+		-6.27324551	-0.00038558	0.00023621	0.00038752	-0.00000115	0.00000000
+		-6.27324562	-0.00038553	0.00023618	0.00038747	-0.00000115	0.00000000
+		-6.27324574	-0.00038548	0.00023615	0.00038742	-0.00000115	0.00000000
+		-6.27324585	-0.00038543	0.00023612	0.00038737	-0.00000115	0.00000000
+		-6.27324597	-0.00038538	0.00023609	0.00038732	-0.00000115	0.00000000
+		-6.27324608	-0.00038534	0.00023606	0.00038728	-0.00000115	0.00000000
+		-6.27324620	-0.00038529	0.00023603	0.00038723	-0.00000115	0.00000000
+		-6.27324631	-0.00038524	0.00023600	0.00038718	-0.00000115	0.00000000
+		-6.27324643	-0.00038519	0.00023597	0.00038713	-0.00000115	0.00000000
+		-6.27324654	-0.00038514	0.00023594	0.00038708	-0.00000115	0.00000000
+		-6.27324666	-0.00038510	0.00023591	0.00038703	-0.00000115	0.00000000
+		-6.27324677	-0.00038505	0.00023588	0.00038699	-0.00000115	0.00000000
+		-6.27324689	-0.00038500	0.00023586	0.00038694	-0.00000115	0.00000000
+		-6.27324700	-0.00038495	0.00023583	0.00038689	-0.00000115	0.00000000
+		-6.27324711	-0.00038490	0.00023580	0.00038684	-0.00000115	0.00000000
+		-6.27324723	-0.00038486	0.00023577	0.00038679	-0.00000115	0.00000000
+		-6.27324734	-0.00038481	0.00023574	0.00038675	-0.00000115	0.00000000
+		-6.27324746	-0.00038476	0.00023571	0.00038670	-0.00000115	0.00000000
+		-6.27324757	-0.00038471	0.00023568	0.00038665	-0.00000115	0.00000000
+		-6.27324769	-0.00038467	0.00023565	0.00038660	-0.00000115	0.00000000
+		-6.27324780	-0.00038462	0.00023562	0.00038655	-0.00000115	0.00000000
+		-6.27324792	-0.00038457	0.00023559	0.00038651	-0.00000115	0.00000000
+		-6.27324803	-0.00038452	0.00023556	0.00038646	-0.00000115	0.00000000
+		-6.27324814	-0.00038447	0.00023553	0.00038641	-0.00000115	0.00000000
+		-6.27324826	-0.00038443	0.00023550	0.00038636	-0.00000115	0.00000000
+		-6.27324837	-0.00038438	0.00023547	0.00038631	-0.00000115	0.00000000
+		-6.27324849	-0.00038433	0.00023545	0.00038627	-0.00000115	0.00000000
+		-6.27324860	-0.00038428	0.00023542	0.00038622	-0.00000115	0.00000000
+		-6.27324872	-0.00038424	0.00023539	0.00038617	-0.00000115	0.00000000
+		-6.27324883	-0.00038419	0.00023536	0.00038612	-0.00000115	0.00000000
+		-6.27324894	-0.00038414	0.00023533	0.00038607	-0.00000115	0.00000000
+		-6.27324906	-0.00038409	0.00023530	0.00038603	-0.00000115	0.00000000
+		-6.27324917	-0.00038405	0.00023527	0.00038598	-0.00000115	0.00000000
+		-6.27324929	-0.00038400	0.00023524	0.00038593	-0.00000115	0.00000000
+		-6.27324940	-0.00038395	0.00023521	0.00038588	-0.00000115	0.00000000
+		-6.27324951	-0.00038390	0.00023518	0.00038583	-0.00000115	0.00000000
+		-6.27324963	-0.00038385	0.00023515	0.00038579	-0.00000115	0.00000000
+		-6.27324974	-0.00038381	0.00023512	0.00038574	-0.00000115	0.00000000
+		-6.27324986	-0.00038376	0.00023509	0.00038569	-0.00000115	0.00000000
+		-6.27324997	-0.00038371	0.00023507	0.00038564	-0.00000115	0.00000000
+		-6.27325008	-0.00038366	0.00023504	0.00038560	-0.00000115	0.00000000
+		-6.27325020	-0.00038362	0.00023501	0.00038555	-0.00000115	0.00000000
+		-6.27325031	-0.00038357	0.00023498	0.00038550	-0.00000115	0.00000000
+		-6.27325043	-0.00038352	0.00023495	0.00038545	-0.00000115	0.00000000
+		-6.27325054	-0.00038347	0.00023492	0.00038540	-0.00000115	0.00000000
+		-6.27325065	-0.00038343	0.00023489	0.00038536	-0.00000115	0.00000000
+		-6.27325077	-0.00038338	0.00023486	0.00038531	-0.00000115	0.00000000
+		-6.27325088	-0.00038333	0.00023483	0.00038526	-0.00000115	0.00000000
+		-6.27325099	-0.00038328	0.00023480	0.00038521	-0.00000115	0.00000000
+		-6.27325111	-0.00038324	0.00023477	0.00038517	-0.00000115	0.00000000
+		-6.27325122	-0.00038319	0.00023475	0.00038512	-0.00000115	0.00000000
+		-6.27325133	-0.00038314	0.00023472	0.00038507	-0.00000115	0.00000000
+		-6.27325145	-0.00038309	0.00023469	0.00038502	-0.00000115	0.00000000
+		-6.27325156	-0.00038305	0.00023466	0.00038498	-0.00000115	0.00000000
+		-6.27325168	-0.00038300	0.00023463	0.00038493	-0.00000115	0.00000000
+		-6.27325179	-0.00038295	0.00023460	0.00038488	-0.00000115	0.00000000
+		-6.27325190	-0.00038291	0.00023457	0.00038483	-0.00000115	0.00000000
+		-6.27325202	-0.00038286	0.00023454	0.00038478	-0.00000115	0.00000000
+		-6.27325213	-0.00038281	0.00023451	0.00038474	-0.00000115	0.00000000
+		-6.27325224	-0.00038276	0.00023448	0.00038469	-0.00000115	0.00000000
+		-6.27325236	-0.00038272	0.00023446	0.00038464	-0.00000115	0.00000000
+		-6.27325247	-0.00038267	0.00023443	0.00038459	-0.00000115	0.00000000
+		-6.27325258	-0.00038262	0.00023440	0.00038455	-0.00000115	0.00000000
+		-6.27325269	-0.00038257	0.00023437	0.00038450	-0.00000115	0.00000000
+		-6.27325281	-0.00038253	0.00023434	0.00038445	-0.00000115	0.00000000
+		-6.27325292	-0.00038248	0.00023431	0.00038440	-0.00000115	0.00000000
+		-6.27325303	-0.00038243	0.00023428	0.00038436	-0.00000115	0.00000000
+		-6.27325315	-0.00038238	0.00023425	0.00038431	-0.00000115	0.00000000
+		-6.27325326	-0.00038234	0.00023422	0.00038426	-0.00000115	0.00000000
+		-6.27325337	-0.00038229	0.00023419	0.00038421	-0.00000115	0.00000000
+		-6.27325349	-0.00038224	0.00023417	0.00038417	-0.00000115	0.00000000
+		-6.27325360	-0.00038220	0.00023414	0.00038412	-0.00000115	0.00000000
+		-6.27325371	-0.00038215	0.00023411	0.00038407	-0.00000115	0.00000000
+		-6.27325383	-0.00038210	0.00023408	0.00038402	-0.00000115	0.00000000
+		-6.27325394	-0.00038205	0.00023405	0.00038398	-0.00000115	0.00000000
+		-6.27325405	-0.00038201	0.00023402	0.00038393	-0.00000115	0.00000000
+		-6.27325416	-0.00038196	0.00023399	0.00038388	-0.00000115	0.00000000
+		-6.27325428	-0.00038191	0.00023396	0.00038384	-0.00000115	0.00000000
+		-6.27325439	-0.00038187	0.00023393	0.00038379	-0.00000115	0.00000000
+		-6.27325450	-0.00038182	0.00023391	0.00038374	-0.00000115	0.00000000
+		-6.27325462	-0.00038177	0.00023388	0.00038369	-0.00000115	0.00000000
+		-6.27325473	-0.00038172	0.00023385	0.00038365	-0.00000115	0.00000000
+		-6.27325484	-0.00038168	0.00023382	0.00038360	-0.00000115	0.00000000
+		-6.27325495	-0.00038163	0.00023379	0.00038355	-0.00000115	0.00000000
+		-6.27325507	-0.00038158	0.00023376	0.00038350	-0.00000115	0.00000000
+		-6.27325518	-0.00038154	0.00023373	0.00038346	-0.00000115	0.00000000
+		-6.27325529	-0.00038149	0.00023370	0.00038341	-0.00000115	0.00000000
+		-6.27325540	-0.00038144	0.00023367	0.00038336	-0.00000115	0.00000000
+		-6.27325552	-0.00038140	0.00023365	0.00038332	-0.00000115	0.00000000
+		-6.27325563	-0.00038135	0.00023362	0.00038327	-0.00000115	0.00000000
+		-6.27325574	-0.00038130	0.00023359	0.00038322	-0.00000115	0.00000000
+		-6.27325585	-0.00038125	0.00023356	0.00038317	-0.00000115	0.00000000
+		-6.27325597	-0.00038121	0.00023353	0.00038313	-0.00000115	0.00000000
+		-6.27325608	-0.00038116	0.00023350	0.00038308	-0.00000115	0.00000000
+		-6.27325619	-0.00038111	0.00023347	0.00038303	-0.00000115	0.00000000
+		-6.27325630	-0.00038107	0.00023344	0.00038298	-0.00000115	0.00000000
+		-6.27325642	-0.00038102	0.00023342	0.00038294	-0.00000115	0.00000000
+		-6.27325653	-0.00038097	0.00023339	0.00038289	-0.00000115	0.00000000
+		-6.27325664	-0.00038093	0.00023336	0.00038284	-0.00000115	0.00000000
+		-6.27325675	-0.00038088	0.00023333	0.00038280	-0.00000115	0.00000000
+		-6.27325686	-0.00038083	0.00023330	0.00038275	-0.00000115	0.00000000
+		-6.27325698	-0.00038079	0.00023327	0.00038270	-0.00000115	0.00000000
+		-6.27325709	-0.00038074	0.00023324	0.00038265	-0.00000115	0.00000000
+		-6.27325720	-0.00038069	0.00023321	0.00038261	-0.00000115	0.00000000
+		-6.27325731	-0.00038065	0.00023319	0.00038256	-0.00000115	0.00000000
+		-6.27325742	-0.00038060	0.00023316	0.00038251	-0.00000115	0.00000000
+		-6.27325754	-0.00038055	0.00023313	0.00038247	-0.00000115	0.00000000
+		-6.27325765	-0.00038050	0.00023310	0.00038242	-0.00000115	0.00000000
+		-6.27325776	-0.00038046	0.00023307	0.00038237	-0.00000115	0.00000000
+		-6.27325787	-0.00038041	0.00023304	0.00038233	-0.00000115	0.00000000
+		-6.27325798	-0.00038036	0.00023301	0.00038228	-0.00000115	0.00000000
+		-6.27325810	-0.00038032	0.00023299	0.00038223	-0.00000115	0.00000000
+		-6.27325821	-0.00038027	0.00023296	0.00038218	-0.00000115	0.00000000
+		-6.27325832	-0.00038022	0.00023293	0.00038214	-0.00000115	0.00000000
+		-6.27325843	-0.00038018	0.00023290	0.00038209	-0.00000115	0.00000000
+		-6.27325854	-0.00038013	0.00023287	0.00038204	-0.00000115	0.00000000
+		-6.27325866	-0.00038008	0.00023284	0.00038200	-0.00000115	0.00000000
+		-6.27325877	-0.00038004	0.00023281	0.00038195	-0.00000115	0.00000000
+		-6.27325888	-0.00037999	0.00023279	0.00038190	-0.00000115	0.00000000
+		-6.27325899	-0.00037994	0.00023276	0.00038186	-0.00000115	0.00000000
+		-6.27325910	-0.00037990	0.00023273	0.00038181	-0.00000115	0.00000000
+		-6.27325921	-0.00037985	0.00023270	0.00038176	-0.00000115	0.00000000
+		-6.27325932	-0.00037980	0.00023267	0.00038172	-0.00000115	0.00000000
+		-6.27325944	-0.00037976	0.00023264	0.00038167	-0.00000115	0.00000000
+		-6.27325955	-0.00037971	0.00023261	0.00038162	-0.00000115	0.00000000
+		-6.27325966	-0.00037966	0.00023259	0.00038158	-0.00000115	0.00000000
+		-6.27325977	-0.00037962	0.00023256	0.00038153	-0.00000115	0.00000000
+		-6.27325988	-0.00037957	0.00023253	0.00038148	-0.00000115	0.00000000
+		-6.27325999	-0.00037953	0.00023250	0.00038144	-0.00000115	0.00000000
+		-6.27326011	-0.00037948	0.00023247	0.00038139	-0.00000115	0.00000000
+		-6.27326022	-0.00037943	0.00023244	0.00038134	-0.00000115	0.00000000
+		-6.27326033	-0.00037939	0.00023241	0.00038129	-0.00000115	0.00000000
+		-6.27326044	-0.00037934	0.00023239	0.00038125	-0.00000115	0.00000000
+		-6.27326055	-0.00037929	0.00023236	0.00038120	-0.00000115	0.00000000
+		-6.27326066	-0.00037925	0.00023233	0.00038115	-0.00000115	0.00000000
+		-6.27326077	-0.00037920	0.00023230	0.00038111	-0.00000115	0.00000000
+		-6.27326088	-0.00037915	0.00023227	0.00038106	-0.00000115	0.00000000
+		-6.27326100	-0.00037911	0.00023224	0.00038101	-0.00000115	0.00000000
+		-6.27326111	-0.00037906	0.00023221	0.00038097	-0.00000115	0.00000000
+		-6.27326122	-0.00037901	0.00023219	0.00038092	-0.00000115	0.00000000
+		-6.27326133	-0.00037897	0.00023216	0.00038087	-0.00000115	0.00000000
+		-6.27326144	-0.00037892	0.00023213	0.00038083	-0.00000115	0.00000000
+		-6.27326155	-0.00037887	0.00023210	0.00038078	-0.00000115	0.00000000
+		-6.27326166	-0.00037883	0.00023207	0.00038073	-0.00000115	0.00000000
+		-6.27326177	-0.00037878	0.00023204	0.00038069	-0.00000115	0.00000000
+		-6.27326188	-0.00037874	0.00023202	0.00038064	-0.00000115	0.00000000
+		-6.27326199	-0.00037869	0.00023199	0.00038060	-0.00000115	0.00000000
+		-6.27326211	-0.00037864	0.00023196	0.00038055	-0.00000115	0.00000000
+		-6.27326222	-0.00037860	0.00023193	0.00038050	-0.00000115	0.00000000
+		-6.27326233	-0.00037855	0.00023190	0.00038046	-0.00000115	0.00000000
+		-6.27326244	-0.00037850	0.00023187	0.00038041	-0.00000115	0.00000000
+		-6.27326255	-0.00037846	0.00023185	0.00038036	-0.00000115	0.00000000
+		-6.27326266	-0.00037841	0.00023182	0.00038032	-0.00000115	0.00000000
+		-6.27326277	-0.00037837	0.00023179	0.00038027	-0.00000115	0.00000000
+		-6.27326288	-0.00037832	0.00023176	0.00038022	-0.00000115	0.00000000
+		-6.27326299	-0.00037827	0.00023173	0.00038018	-0.00000115	0.00000000
+		-6.27326310	-0.00037823	0.00023170	0.00038013	-0.00000115	0.00000000
+		-6.27326321	-0.00037818	0.00023168	0.00038008	-0.00000115	0.00000000
+		-6.27326332	-0.00037813	0.00023165	0.00038004	-0.00000115	0.00000000
+		-6.27326343	-0.00037809	0.00023162	0.00037999	-0.00000115	0.00000000
+		-6.27326354	-0.00037804	0.00023159	0.00037994	-0.00000115	0.00000000
+		-6.27326366	-0.00037800	0.00023156	0.00037990	-0.00000115	0.00000000
+		-6.27326377	-0.00037795	0.00023153	0.00037985	-0.00000115	0.00000000
+		-6.27326388	-0.00037790	0.00023151	0.00037981	-0.00000115	0.00000000
+		-6.27326399	-0.00037786	0.00023148	0.00037976	-0.00000115	0.00000000
+		-6.27326410	-0.00037781	0.00023145	0.00037971	-0.00000115	0.00000000
+		-6.27326421	-0.00037777	0.00023142	0.00037967	-0.00000115	0.00000000
+		-6.27326432	-0.00037772	0.00023139	0.00037962	-0.00000115	0.00000000
+		-6.27326443	-0.00037767	0.00023136	0.00037957	-0.00000115	0.00000000
+		-6.27326454	-0.00037763	0.00023134	0.00037953	-0.00000115	0.00000000
+		-6.27326465	-0.00037758	0.00023131	0.00037948	-0.00000115	0.00000000
+		-6.27326476	-0.00037753	0.00023128	0.00037943	-0.00000115	0.00000000
+		-6.27326487	-0.00037749	0.00023125	0.00037939	-0.00000115	0.00000000
+		-6.27326498	-0.00037744	0.00023122	0.00037934	-0.00000115	0.00000000
+		-6.27326509	-0.00037740	0.00023120	0.00037930	-0.00000115	0.00000000
+		-6.27326520	-0.00037735	0.00023117	0.00037925	-0.00000115	0.00000000
+		-6.27326531	-0.00037730	0.00023114	0.00037920	-0.00000115	0.00000000
+		-6.27326542	-0.00037726	0.00023111	0.00037916	-0.00000115	0.00000000
+		-6.27326553	-0.00037721	0.00023108	0.00037911	-0.00000115	0.00000000
+		-6.27326564	-0.00037717	0.00023105	0.00037906	-0.00000115	0.00000000
+		-6.27326575	-0.00037712	0.00023103	0.00037902	-0.00000115	0.00000000
+		-6.27326586	-0.00037707	0.00023100	0.00037897	-0.00000115	0.00000000
+		-6.27326597	-0.00037703	0.00023097	0.00037893	-0.00000115	0.00000000
+		-6.27326608	-0.00037698	0.00023094	0.00037888	-0.00000115	0.00000000
+		-6.27326619	-0.00037694	0.00023091	0.00037883	-0.00000115	0.00000000
+		-6.27326630	-0.00037689	0.00023089	0.00037879	-0.00000115	0.00000000
+		-6.27326641	-0.00037685	0.00023086	0.00037874	-0.00000115	0.00000000
+		-6.27326652	-0.00037680	0.00023083	0.00037870	-0.00000115	0.00000000
+		-6.27326663	-0.00037675	0.00023080	0.00037865	-0.00000115	0.00000000
+		-6.27326674	-0.00037671	0.00023077	0.00037860	-0.00000115	0.00000000
+		-6.27326685	-0.00037666	0.00023074	0.00037856	-0.00000115	0.00000000
+		-6.27326696	-0.00037662	0.00023072	0.00037851	-0.00000115	0.00000000
+		-6.27326707	-0.00037657	0.00023069	0.00037847	-0.00000115	0.00000000
+		-6.27326718	-0.00037652	0.00023066	0.00037842	-0.00000115	0.00000000
+		-6.27326729	-0.00037648	0.00023063	0.00037837	-0.00000115	0.00000000
+		-6.27326740	-0.00037643	0.00023060	0.00037833	-0.00000115	0.00000000
+		-6.27326751	-0.00037639	0.00023058	0.00037828	-0.00000115	0.00000000
+		-6.27326762	-0.00037634	0.00023055	0.00037823	-0.00000115	0.00000000
+		-6.27326773	-0.00037630	0.00023052	0.00037819	-0.00000115	0.00000000
+		-6.27326783	-0.00037625	0.00023049	0.00037814	-0.00000115	0.00000000
+		-6.27326794	-0.00037620	0.00023046	0.00037810	-0.00000115	0.00000000
+		-6.27326805	-0.00037616	0.00023044	0.00037805	-0.00000115	0.00000000
+		-6.27326816	-0.00037611	0.00023041	0.00037801	-0.00000115	0.00000000
+		-6.27326827	-0.00037607	0.00023038	0.00037796	-0.00000115	0.00000000
+		-6.27326838	-0.00037602	0.00023035	0.00037791	-0.00000115	0.00000000
+		-6.27326849	-0.00037598	0.00023032	0.00037787	-0.00000115	0.00000000
+		-6.27326860	-0.00037593	0.00023030	0.00037782	-0.00000115	0.00000000
+		-6.27326871	-0.00037588	0.00023027	0.00037778	-0.00000115	0.00000000
+		-6.27326882	-0.00037584	0.00023024	0.00037773	-0.00000115	0.00000000
+		-6.27326893	-0.00037579	0.00023021	0.00037768	-0.00000115	0.00000000
+		-6.27326904	-0.00037575	0.00023018	0.00037764	-0.00000115	0.00000000
+		-6.27326915	-0.00037570	0.00023016	0.00037759	-0.00000115	0.00000000
+		-6.27326926	-0.00037566	0.00023013	0.00037755	-0.00000115	0.00000000
+		-6.27326937	-0.00037561	0.00023010	0.00037750	-0.00000115	0.00000000
+		-6.27326947	-0.00037557	0.00023007	0.00037745	-0.00000115	0.00000000
+		-6.27326958	-0.00037552	0.00023004	0.00037741	-0.00000115	0.00000000
+		-6.27326969	-0.00037547	0.00023002	0.00037736	-0.00000115	0.00000000
+		-6.27326980	-0.00037543	0.00022999	0.00037732	-0.00000115	0.00000000
+		-6.27326991	-0.00037538	0.00022996	0.00037727	-0.00000115	0.00000000
+		-6.27327002	-0.00037534	0.00022993	0.00037723	-0.00000115	0.00000000
+		-6.27327013	-0.00037529	0.00022991	0.00037718	-0.00000115	0.00000000
+		-6.27327024	-0.00037525	0.00022988	0.00037713	-0.00000115	0.00000000
+		-6.27327035	-0.00037520	0.00022985	0.00037709	-0.00000115	0.00000000
+		-6.27327045	-0.00037516	0.00022982	0.00037704	-0.00000115	0.00000000
+		-6.27327056	-0.00037511	0.00022979	0.00037700	-0.00000115	0.00000000
+		-6.27327067	-0.00037506	0.00022977	0.00037695	-0.00000115	0.00000000
+		-6.27327078	-0.00037502	0.00022974	0.00037691	-0.00000115	0.00000000
+		-6.27327089	-0.00037497	0.00022971	0.00037686	-0.00000115	0.00000000
+		-6.27327100	-0.00037493	0.00022968	0.00037681	-0.00000115	0.00000000
+		-6.27327111	-0.00037488	0.00022965	0.00037677	-0.00000115	0.00000000
+		-6.27327122	-0.00037484	0.00022963	0.00037672	-0.00000115	0.00000000
+		-6.27327132	-0.00037479	0.00022960	0.00037668	-0.00000115	0.00000000
+		-6.27327143	-0.00037475	0.00022957	0.00037663	-0.00000115	0.00000000
+		-6.27327154	-0.00037470	0.00022954	0.00037659	-0.00000115	0.00000000
+		-6.27327165	-0.00037466	0.00022952	0.00037654	-0.00000115	0.00000000
+		-6.27327176	-0.00037461	0.00022949	0.00037650	-0.00000115	0.00000000
+		-6.27327187	-0.00037457	0.00022946	0.00037645	-0.00000115	0.00000000
+		-6.27327198	-0.00037452	0.00022943	0.00037640	-0.00000115	0.00000000
+		-6.27327208	-0.00037447	0.00022940	0.00037636	-0.00000115	0.00000000
+		-6.27327219	-0.00037443	0.00022938	0.00037631	-0.00000115	0.00000000
+		-6.27327230	-0.00037438	0.00022935	0.00037627	-0.00000115	0.00000000
+		-6.27327241	-0.00037434	0.00022932	0.00037622	-0.00000115	0.00000000
+		-6.27327252	-0.00037429	0.00022929	0.00037618	-0.00000115	0.00000000
+		-6.27327263	-0.00037425	0.00022927	0.00037613	-0.00000115	0.00000000
+		-6.27327273	-0.00037420	0.00022924	0.00037609	-0.00000115	0.00000000
+		-6.27327284	-0.00037416	0.00022921	0.00037604	-0.00000115	0.00000000
+		-6.27327295	-0.00037411	0.00022918	0.00037599	-0.00000115	0.00000000
+		-6.27327306	-0.00037407	0.00022915	0.00037595	-0.00000115	0.00000000
+		-6.27327317	-0.00037402	0.00022913	0.00037590	-0.00000115	0.00000000
+		-6.27327328	-0.00037398	0.00022910	0.00037586	-0.00000115	0.00000000
+		-6.27327338	-0.00037393	0.00022907	0.00037581	-0.00000115	0.00000000
+		-6.27327349	-0.00037389	0.00022904	0.00037577	-0.00000115	0.00000000
+		-6.27327360	-0.00037384	0.00022902	0.00037572	-0.00000115	0.00000000
+		-6.27327371	-0.00037380	0.00022899	0.00037568	-0.00000115	0.00000000
+		-6.27327382	-0.00037375	0.00022896	0.00037563	-0.00000115	0.00000000
+		-6.27327392	-0.00037371	0.00022893	0.00037559	-0.00000115	0.00000000
+		-6.27327403	-0.00037366	0.00022891	0.00037554	-0.00000115	0.00000000
+		-6.27327414	-0.00037362	0.00022888	0.00037550	-0.00000115	0.00000000
+		-6.27327425	-0.00037357	0.00022885	0.00037545	-0.00000115	0.00000000
+		-6.27327436	-0.00037353	0.00022882	0.00037541	-0.00000115	0.00000000
+		-6.27327446	-0.00037348	0.00022880	0.00037536	-0.00000115	0.00000000
+		-6.27327457	-0.00037344	0.00022877	0.00037531	-0.00000115	0.00000000
+		-6.27327468	-0.00037339	0.00022874	0.00037527	-0.00000115	0.00000000
+		-6.27327479	-0.00037335	0.00022871	0.00037522	-0.00000115	0.00000000
+		-6.27327490	-0.00037330	0.00022868	0.00037518	-0.00000115	0.00000000
+		-6.27327500	-0.00037326	0.00022866	0.00037513	-0.00000115	0.00000000
+		-6.27327511	-0.00037321	0.00022863	0.00037509	-0.00000115	0.00000000
+		-6.27327522	-0.00037317	0.00022860	0.00037504	-0.00000115	0.00000000
+		-6.27327533	-0.00037312	0.00022857	0.00037500	-0.00000115	0.00000000
+		-6.27327543	-0.00037308	0.00022855	0.00037495	-0.00000115	0.00000000
+		-6.27327554	-0.00037303	0.00022852	0.00037491	-0.00000115	0.00000000
+		-6.27327565	-0.00037299	0.00022849	0.00037486	-0.00000115	0.00000000
+		-6.27327576	-0.00037294	0.00022846	0.00037482	-0.00000115	0.00000000
+		-6.27327586	-0.00037290	0.00022844	0.00037477	-0.00000115	0.00000000
+		-6.27327597	-0.00037285	0.00022841	0.00037473	-0.00000115	0.00000000
+		-6.27327608	-0.00037281	0.00022838	0.00037468	-0.00000115	0.00000000
+		-6.27327619	-0.00037276	0.00022835	0.00037464	-0.00000115	0.00000000
+		-6.27327629	-0.00037272	0.00022833	0.00037459	-0.00000115	0.00000000
+		-6.27327640	-0.00037267	0.00022830	0.00037455	-0.00000115	0.00000000
+		-6.27327651	-0.00037263	0.00022827	0.00037450	-0.00000115	0.00000000
+		-6.27327662	-0.00037258	0.00022824	0.00037446	-0.00000115	0.00000000
+		-6.27327672	-0.00037254	0.00022822	0.00037441	-0.00000115	0.00000000
+		-6.27327683	-0.00037249	0.00022819	0.00037437	-0.00000115	0.00000000
+		-6.27327694	-0.00037245	0.00022816	0.00037432	-0.00000115	0.00000000
+		-6.27327705	-0.00037240	0.00022813	0.00037428	-0.00000115	0.00000000
+		-6.27327715	-0.00037236	0.00022811	0.00037423	-0.00000115	0.00000000
+		-6.27327726	-0.00037231	0.00022808	0.00037419	-0.00000115	0.00000000
+		-6.27327737	-0.00037227	0.00022805	0.00037414	-0.00000115	0.00000000
+		-6.27327747	-0.00037222	0.00022802	0.00037410	-0.00000115	0.00000000
+		-6.27327758	-0.00037218	0.00022800	0.00037405	-0.00000115	0.00000000
+		-6.27327769	-0.00037213	0.00022797	0.00037401	-0.00000115	0.00000000
+		-6.27327780	-0.00037209	0.00022794	0.00037396	-0.00000115	0.00000000
+		-6.27327790	-0.00037204	0.00022791	0.00037392	-0.00000115	0.00000000
+		-6.27327801	-0.00037200	0.00022789	0.00037387	-0.00000115	0.00000000
+		-6.27327812	-0.00037195	0.00022786	0.00037383	-0.00000115	0.00000000
+		-6.27327822	-0.00037191	0.00022783	0.00037378	-0.00000115	0.00000000
+		-6.27327833	-0.00037187	0.00022781	0.00037374	-0.00000115	0.00000000
+		-6.27327844	-0.00037182	0.00022778	0.00037369	-0.00000115	0.00000000
+		-6.27327855	-0.00037178	0.00022775	0.00037365	-0.00000115	0.00000000
+		-6.27327865	-0.00037173	0.00022772	0.00037360	-0.00000115	0.00000000
+		-6.27327876	-0.00037169	0.00022770	0.00037356	-0.00000115	0.00000000
+		-6.27327887	-0.00037164	0.00022767	0.00037351	-0.00000115	0.00000000
+		-6.27327897	-0.00037160	0.00022764	0.00037347	-0.00000115	0.00000000
+		-6.27327908	-0.00037155	0.00022761	0.00037342	-0.00000115	0.00000000
+		-6.27327919	-0.00037151	0.00022759	0.00037338	-0.00000115	0.00000000
+		-6.27327929	-0.00037146	0.00022756	0.00037333	-0.00000115	0.00000000
+		-6.27327940	-0.00037142	0.00022753	0.00037329	-0.00000115	0.00000000
+		-6.27327951	-0.00037137	0.00022750	0.00037324	-0.00000115	0.00000000
+		-6.27327961	-0.00037133	0.00022748	0.00037320	-0.00000115	0.00000000
+		-6.27327972	-0.00037129	0.00022745	0.00037315	-0.00000115	0.00000000
+		-6.27327983	-0.00037124	0.00022742	0.00037311	-0.00000115	0.00000000
+		-6.27327993	-0.00037120	0.00022740	0.00037306	-0.00000115	0.00000000
+		-6.27328004	-0.00037115	0.00022737	0.00037302	-0.00000115	0.00000000
+		-6.27328015	-0.00037111	0.00022734	0.00037297	-0.00000115	0.00000000
+		-6.27328025	-0.00037106	0.00022731	0.00037293	-0.00000115	0.00000000
+		-6.27328036	-0.00037102	0.00022729	0.00037289	-0.00000115	0.00000000
+		-6.27328047	-0.00037097	0.00022726	0.00037284	-0.00000115	0.00000000
+		-6.27328057	-0.00037093	0.00022723	0.00037280	-0.00000115	0.00000000
+		-6.27328068	-0.00037089	0.00022720	0.00037275	-0.00000115	0.00000000
+		-6.27328078	-0.00037084	0.00022718	0.00037271	-0.00000115	0.00000000
+		-6.27328089	-0.00037080	0.00022715	0.00037266	-0.00000115	0.00000000
+		-6.27328100	-0.00037075	0.00022712	0.00037262	-0.00000115	0.00000000
+		-6.27328110	-0.00037071	0.00022710	0.00037257	-0.00000115	0.00000000
+		-6.27328121	-0.00037066	0.00022707	0.00037253	-0.00000115	0.00000000
+		-6.27328132	-0.00037062	0.00022704	0.00037248	-0.00000115	0.00000000
+		-6.27328142	-0.00037057	0.00022701	0.00037244	-0.00000115	0.00000000
+		-6.27328153	-0.00037053	0.00022699	0.00037239	-0.00000115	0.00000000
+		-6.27328163	-0.00037049	0.00022696	0.00037235	-0.00000115	0.00000000
+		-6.27328174	-0.00037044	0.00022693	0.00037230	-0.00000115	0.00000000
+		-6.27328185	-0.00037040	0.00022691	0.00037226	-0.00000115	0.00000000
+		-6.27328195	-0.00037035	0.00022688	0.00037222	-0.00000115	0.00000000
+		-6.27328206	-0.00037031	0.00022685	0.00037217	-0.00000115	0.00000000
+		-6.27328217	-0.00037026	0.00022682	0.00037213	-0.00000115	0.00000000
+		-6.27328227	-0.00037022	0.00022680	0.00037208	-0.00000115	0.00000000
+		-6.27328238	-0.00037018	0.00022677	0.00037204	-0.00000115	0.00000000
+		-6.27328248	-0.00037013	0.00022674	0.00037199	-0.00000115	0.00000000
+		-6.27328259	-0.00037009	0.00022672	0.00037195	-0.00000115	0.00000000
+		-6.27328269	-0.00037004	0.00022669	0.00037190	-0.00000115	0.00000000
+		-6.27328280	-0.00037000	0.00022666	0.00037186	-0.00000115	0.00000000
+		-6.27328291	-0.00036995	0.00022663	0.00037182	-0.00000115	0.00000000
+		-6.27328301	-0.00036991	0.00022661	0.00037177	-0.00000115	0.00000000
+		-6.27328312	-0.00036987	0.00022658	0.00037173	-0.00000115	0.00000000
+		-6.27328322	-0.00036982	0.00022655	0.00037168	-0.00000115	0.00000000
+		-6.27328333	-0.00036978	0.00022653	0.00037164	-0.00000115	0.00000000
+		-6.27328344	-0.00036973	0.00022650	0.00037159	-0.00000115	0.00000000
+		-6.27328354	-0.00036969	0.00022647	0.00037155	-0.00000115	0.00000000
+		-6.27328365	-0.00036965	0.00022644	0.00037150	-0.00000115	0.00000000
+		-6.27328375	-0.00036960	0.00022642	0.00037146	-0.00000115	0.00000000
+		-6.27328386	-0.00036956	0.00022639	0.00037142	-0.00000115	0.00000000
+		-6.27328396	-0.00036951	0.00022636	0.00037137	-0.00000115	0.00000000
+		-6.27328407	-0.00036947	0.00022634	0.00037133	-0.00000115	0.00000000
+		-6.27328418	-0.00036942	0.00022631	0.00037128	-0.00000115	0.00000000
+		-6.27328428	-0.00036938	0.00022628	0.00037124	-0.00000115	0.00000000
+		-6.27328439	-0.00036934	0.00022626	0.00037119	-0.00000115	0.00000000
+		-6.27328449	-0.00036929	0.00022623	0.00037115	-0.00000115	0.00000000
+		-6.27328460	-0.00036925	0.00022620	0.00037111	-0.00000115	0.00000000
+		-6.27328470	-0.00036920	0.00022617	0.00037106	-0.00000115	0.00000000
+		-6.27328481	-0.00036916	0.00022615	0.00037102	-0.00000115	0.00000000
+		-6.27328491	-0.00036912	0.00022612	0.00037097	-0.00000115	0.00000000
+		-6.27328502	-0.00036907	0.00022609	0.00037093	-0.00000115	0.00000000
+		-6.27328512	-0.00036903	0.00022607	0.00037088	-0.00000115	0.00000000
+		-6.27328523	-0.00036898	0.00022604	0.00037084	-0.00000115	0.00000000
+		-6.27328533	-0.00036894	0.00022601	0.00037080	-0.00000115	0.00000000
+		-6.27328544	-0.00036890	0.00022599	0.00037075	-0.00000115	0.00000000
+		-6.27328555	-0.00036885	0.00022596	0.00037071	-0.00000115	0.00000000
+		-6.27328565	-0.00036881	0.00022593	0.00037066	-0.00000115	0.00000000
+		-6.27328576	-0.00036876	0.00022590	0.00037062	-0.00000115	0.00000000
+		-6.27328586	-0.00036872	0.00022588	0.00037058	-0.00000115	0.00000000
+		-6.27328597	-0.00036868	0.00022585	0.00037053	-0.00000115	0.00000000
+		-6.27328607	-0.00036863	0.00022582	0.00037049	-0.00000115	0.00000000
+		-6.27328618	-0.00036859	0.00022580	0.00037044	-0.00000115	0.00000000
+		-6.27328628	-0.00036855	0.00022577	0.00037040	-0.00000115	0.00000000
+		-6.27328639	-0.00036850	0.00022574	0.00037035	-0.00000115	0.00000000
+		-6.27328649	-0.00036846	0.00022572	0.00037031	-0.00000115	0.00000000
+		-6.27328660	-0.00036841	0.00022569	0.00037027	-0.00000115	0.00000000
+		-6.27328670	-0.00036837	0.00022566	0.00037022	-0.00000115	0.00000000
+		-6.27328681	-0.00036833	0.00022564	0.00037018	-0.00000115	0.00000000
+		-6.27328691	-0.00036828	0.00022561	0.00037013	-0.00000115	0.00000000
+		-6.27328702	-0.00036824	0.00022558	0.00037009	-0.00000115	0.00000000
+		-6.27328712	-0.00036819	0.00022556	0.00037005	-0.00000115	0.00000000
+		-6.27328723	-0.00036815	0.00022553	0.00037000	-0.00000115	0.00000000
+		-6.27328733	-0.00036811	0.00022550	0.00036996	-0.00000115	0.00000000
+		-6.27328744	-0.00036806	0.00022547	0.00036991	-0.00000115	0.00000000
+		-6.27328754	-0.00036802	0.00022545	0.00036987	-0.00000115	0.00000000
+		-6.27328764	-0.00036798	0.00022542	0.00036983	-0.00000115	0.00000000
+		-6.27328775	-0.00036793	0.00022539	0.00036978	-0.00000115	0.00000000
+		-6.27328785	-0.00036789	0.00022537	0.00036974	-0.00000115	0.00000000
+		-6.27328796	-0.00036784	0.00022534	0.00036969	-0.00000115	0.00000000
+		-6.27328806	-0.00036780	0.00022531	0.00036965	-0.00000115	0.00000000
+		-6.27328817	-0.00036776	0.00022529	0.00036961	-0.00000115	0.00000000
+		-6.27328827	-0.00036771	0.00022526	0.00036956	-0.00000115	0.00000000
+		-6.27328838	-0.00036767	0.00022523	0.00036952	-0.00000115	0.00000000
+		-6.27328848	-0.00036763	0.00022521	0.00036947	-0.00000115	0.00000000
+		-6.27328859	-0.00036758	0.00022518	0.00036943	-0.00000115	0.00000000
+		-6.27328869	-0.00036754	0.00022515	0.00036939	-0.00000115	0.00000000
+		-6.27328880	-0.00036749	0.00022513	0.00036934	-0.00000115	0.00000000
+		-6.27328890	-0.00036745	0.00022510	0.00036930	-0.00000115	0.00000000
+		-6.27328900	-0.00036741	0.00022507	0.00036926	-0.00000115	0.00000000
+		-6.27328911	-0.00036736	0.00022505	0.00036921	-0.00000115	0.00000000
+		-6.27328921	-0.00036732	0.00022502	0.00036917	-0.00000115	0.00000000
+		-6.27328932	-0.00036728	0.00022499	0.00036912	-0.00000115	0.00000000
+		-6.27328942	-0.00036723	0.00022497	0.00036908	-0.00000115	0.00000000
+		-6.27328953	-0.00036719	0.00022494	0.00036904	-0.00000115	0.00000000
+		-6.27328963	-0.00036715	0.00022491	0.00036899	-0.00000115	0.00000000
+		-6.27328973	-0.00036710	0.00022489	0.00036895	-0.00000115	0.00000000
+		-6.27328984	-0.00036706	0.00022486	0.00036891	-0.00000115	0.00000000
+		-6.27328994	-0.00036702	0.00022483	0.00036886	-0.00000115	0.00000000
+		-6.27329005	-0.00036697	0.00022481	0.00036882	-0.00000115	0.00000000
+		-6.27329015	-0.00036693	0.00022478	0.00036877	-0.00000115	0.00000000
+		-6.27329025	-0.00036689	0.00022475	0.00036873	-0.00000115	0.00000000
+		-6.27329036	-0.00036684	0.00022473	0.00036869	-0.00000115	0.00000000
+		-6.27329046	-0.00036680	0.00022470	0.00036864	-0.00000115	0.00000000
+		-6.27329057	-0.00036675	0.00022467	0.00036860	-0.00000115	0.00000000
+		-6.27329067	-0.00036671	0.00022465	0.00036856	-0.00000115	0.00000000
+		-6.27329078	-0.00036667	0.00022462	0.00036851	-0.00000115	0.00000000
+		-6.27329088	-0.00036662	0.00022459	0.00036847	-0.00000115	0.00000000
+		-6.27329098	-0.00036658	0.00022457	0.00036842	-0.00000115	0.00000000
+		-6.27329109	-0.00036654	0.00022454	0.00036838	-0.00000115	0.00000000
+		-6.27329119	-0.00036649	0.00022451	0.00036834	-0.00000115	0.00000000
+		-6.27329129	-0.00036645	0.00022449	0.00036829	-0.00000115	0.00000000
+		-6.27329140	-0.00036641	0.00022446	0.00036825	-0.00000115	0.00000000
+		-6.27329150	-0.00036636	0.00022443	0.00036821	-0.00000115	0.00000000
+		-6.27329161	-0.00036632	0.00022441	0.00036816	-0.00000115	0.00000000
+		-6.27329171	-0.00036628	0.00022438	0.00036812	-0.00000115	0.00000000
+		-6.27329181	-0.00036623	0.00022435	0.00036808	-0.00000115	0.00000000
+		-6.27329192	-0.00036619	0.00022433	0.00036803	-0.00000115	0.00000000
+		-6.27329202	-0.00036615	0.00022430	0.00036799	-0.00000115	0.00000000
+		-6.27329212	-0.00036610	0.00022427	0.00036795	-0.00000115	0.00000000
+		-6.27329223	-0.00036606	0.00022425	0.00036790	-0.00000115	0.00000000
+		-6.27329233	-0.00036602	0.00022422	0.00036786	-0.00000115	0.00000000
+		-6.27329244	-0.00036597	0.00022419	0.00036781	-0.00000115	0.00000000
+		-6.27329254	-0.00036593	0.00022417	0.00036777	-0.00000115	0.00000000
+		-6.27329264	-0.00036589	0.00022414	0.00036773	-0.00000115	0.00000000
+		-6.27329275	-0.00036584	0.00022412	0.00036768	-0.00000115	0.00000000
+		-6.27329285	-0.00036580	0.00022409	0.00036764	-0.00000115	0.00000000
+		-6.27329295	-0.00036576	0.00022406	0.00036760	-0.00000115	0.00000000
+		-6.27329306	-0.00036571	0.00022404	0.00036755	-0.00000115	0.00000000
+		-6.27329316	-0.00036567	0.00022401	0.00036751	-0.00000115	0.00000000
+		-6.27329326	-0.00036563	0.00022398	0.00036747	-0.00000115	0.00000000
+		-6.27329337	-0.00036559	0.00022396	0.00036742	-0.00000115	0.00000000
+		-6.27329347	-0.00036554	0.00022393	0.00036738	-0.00000115	0.00000000
+		-6.27329357	-0.00036550	0.00022390	0.00036734	-0.00000115	0.00000000
+		-6.27329368	-0.00036546	0.00022388	0.00036729	-0.00000115	0.00000000
+		-6.27329378	-0.00036541	0.00022385	0.00036725	-0.00000115	0.00000000
+		-6.27329388	-0.00036537	0.00022382	0.00036721	-0.00000115	0.00000000
+		-6.27329399	-0.00036533	0.00022380	0.00036716	-0.00000115	0.00000000
+		-6.27329409	-0.00036528	0.00022377	0.00036712	-0.00000115	0.00000000
+		-6.27329419	-0.00036524	0.00022374	0.00036708	-0.00000115	0.00000000
+		-6.27329430	-0.00036520	0.00022372	0.00036703	-0.00000115	0.00000000
+		-6.27329440	-0.00036515	0.00022369	0.00036699	-0.00000115	0.00000000
+		-6.27329450	-0.00036511	0.00022367	0.00036695	-0.00000115	0.00000000
+		-6.27329461	-0.00036507	0.00022364	0.00036690	-0.00000115	0.00000000
+		-6.27329471	-0.00036502	0.00022361	0.00036686	-0.00000115	0.00000000
+		-6.27329481	-0.00036498	0.00022359	0.00036682	-0.00000115	0.00000000
+		-6.27329491	-0.00036494	0.00022356	0.00036677	-0.00000115	0.00000000
+		-6.27329502	-0.00036490	0.00022353	0.00036673	-0.00000115	0.00000000
+		-6.27329512	-0.00036485	0.00022351	0.00036669	-0.00000115	0.00000000
+		-6.27329522	-0.00036481	0.00022348	0.00036664	-0.00000115	0.00000000
+		-6.27329533	-0.00036477	0.00022345	0.00036660	-0.00000115	0.00000000
+		-6.27329543	-0.00036472	0.00022343	0.00036656	-0.00000115	0.00000000
+		-6.27329553	-0.00036468	0.00022340	0.00036651	-0.00000115	0.00000000
+		-6.27329564	-0.00036464	0.00022338	0.00036647	-0.00000115	0.00000000
+		-6.27329574	-0.00036460	0.00022335	0.00036643	-0.00000115	0.00000000
+		-6.27329584	-0.00036455	0.00022332	0.00036639	-0.00000115	0.00000000
+		-6.27329594	-0.00036451	0.00022330	0.00036634	-0.00000115	0.00000000
+		-6.27329605	-0.00036447	0.00022327	0.00036630	-0.00000115	0.00000000
+		-6.27329615	-0.00036442	0.00022324	0.00036626	-0.00000115	0.00000000
+		-6.27329625	-0.00036438	0.00022322	0.00036621	-0.00000115	0.00000000
+		-6.27329635	-0.00036434	0.00022319	0.00036617	-0.00000115	0.00000000
+		-6.27329646	-0.00036429	0.00022317	0.00036613	-0.00000115	0.00000000
+		-6.27329656	-0.00036425	0.00022314	0.00036608	-0.00000115	0.00000000
+		-6.27329666	-0.00036421	0.00022311	0.00036604	-0.00000115	0.00000000
+		-6.27329677	-0.00036417	0.00022309	0.00036600	-0.00000115	0.00000000
+		-6.27329687	-0.00036412	0.00022306	0.00036595	-0.00000115	0.00000000
+		-6.27329697	-0.00036408	0.00022303	0.00036591	-0.00000115	0.00000000
+		-6.27329707	-0.00036404	0.00022301	0.00036587	-0.00000115	0.00000000
+		-6.27329718	-0.00036399	0.00022298	0.00036583	-0.00000115	0.00000000
+		-6.27329728	-0.00036395	0.00022296	0.00036578	-0.00000115	0.00000000
+		-6.27329738	-0.00036391	0.00022293	0.00036574	-0.00000115	0.00000000
+		-6.27329748	-0.00036387	0.00022290	0.00036570	-0.00000115	0.00000000
+		-6.27329758	-0.00036382	0.00022288	0.00036565	-0.00000115	0.00000000
+		-6.27329769	-0.00036378	0.00022285	0.00036561	-0.00000115	0.00000000
+		-6.27329779	-0.00036374	0.00022282	0.00036557	-0.00000115	0.00000000
+		-6.27329789	-0.00036370	0.00022280	0.00036552	-0.00000115	0.00000000
+		-6.27329799	-0.00036365	0.00022277	0.00036548	-0.00000115	0.00000000
+		-6.27329810	-0.00036361	0.00022275	0.00036544	-0.00000115	0.00000000
+		-6.27329820	-0.00036357	0.00022272	0.00036540	-0.00000115	0.00000000
+		-6.27329830	-0.00036352	0.00022269	0.00036535	-0.00000115	0.00000000
+		-6.27329840	-0.00036348	0.00022267	0.00036531	-0.00000115	0.00000000
+		-6.27329851	-0.00036344	0.00022264	0.00036527	-0.00000115	0.00000000
+		-6.27329861	-0.00036340	0.00022261	0.00036522	-0.00000115	0.00000000
+		-6.27329871	-0.00036335	0.00022259	0.00036518	-0.00000115	0.00000000
+		-6.27329881	-0.00036331	0.00022256	0.00036514	-0.00000115	0.00000000
+		-6.27329891	-0.00036327	0.00022254	0.00036510	-0.00000115	0.00000000
+		-6.27329902	-0.00036323	0.00022251	0.00036505	-0.00000115	0.00000000
+		-6.27329912	-0.00036318	0.00022248	0.00036501	-0.00000115	0.00000000
+		-6.27329922	-0.00036314	0.00022246	0.00036497	-0.00000115	0.00000000
+		-6.27329932	-0.00036310	0.00022243	0.00036492	-0.00000115	0.00000000
+		-6.27329942	-0.00036306	0.00022241	0.00036488	-0.00000115	0.00000000
+		-6.27329953	-0.00036301	0.00022238	0.00036484	-0.00000115	0.00000000
+		-6.27329963	-0.00036297	0.00022235	0.00036480	-0.00000115	0.00000000
+		-6.27329973	-0.00036293	0.00022233	0.00036475	-0.00000115	0.00000000
+		-6.27329983	-0.00036289	0.00022230	0.00036471	-0.00000115	0.00000000
+		-6.27329993	-0.00036284	0.00022228	0.00036467	-0.00000115	0.00000000
+		-6.27330004	-0.00036280	0.00022225	0.00036462	-0.00000115	0.00000000
+		-6.27330014	-0.00036276	0.00022222	0.00036458	-0.00000115	0.00000000
+		-6.27330024	-0.00036272	0.00022220	0.00036454	-0.00000115	0.00000000
+		-6.27330034	-0.00036267	0.00022217	0.00036450	-0.00000115	0.00000000
+		-6.27330044	-0.00036263	0.00022215	0.00036445	-0.00000115	0.00000000
+		-6.27330054	-0.00036259	0.00022212	0.00036441	-0.00000115	0.00000000
+		-6.27330065	-0.00036255	0.00022209	0.00036437	-0.00000115	0.00000000
+		-6.27330075	-0.00036250	0.00022207	0.00036433	-0.00000115	0.00000000
+		-6.27330085	-0.00036246	0.00022204	0.00036428	-0.00000115	0.00000000
+		-6.27330095	-0.00036242	0.00022202	0.00036424	-0.00000115	0.00000000
+		-6.27330105	-0.00036238	0.00022199	0.00036420	-0.00000115	0.00000000
+		-6.27330115	-0.00036233	0.00022196	0.00036416	-0.00000115	0.00000000
+		-6.27330126	-0.00036229	0.00022194	0.00036411	-0.00000115	0.00000000
+		-6.27330136	-0.00036225	0.00022191	0.00036407	-0.00000115	0.00000000
+		-6.27330146	-0.00036221	0.00022189	0.00036403	-0.00000115	0.00000000
+		-6.27330156	-0.00036216	0.00022186	0.00036398	-0.00000115	0.00000000
+		-6.27330166	-0.00036212	0.00022183	0.00036394	-0.00000115	0.00000000
+		-6.27330176	-0.00036208	0.00022181	0.00036390	-0.00000115	0.00000000
+		-6.27330186	-0.00036204	0.00022178	0.00036386	-0.00000115	0.00000000
+		-6.27330197	-0.00036199	0.00022176	0.00036381	-0.00000115	0.00000000
+		-6.27330207	-0.00036195	0.00022173	0.00036377	-0.00000115	0.00000000
+		-6.27330217	-0.00036191	0.00022170	0.00036373	-0.00000115	0.00000000
+		-6.27330227	-0.00036187	0.00022168	0.00036369	-0.00000115	0.00000000
+		-6.27330237	-0.00036182	0.00022165	0.00036364	-0.00000115	0.00000000
+		-6.27330247	-0.00036178	0.00022163	0.00036360	-0.00000115	0.00000000
+		-6.27330257	-0.00036174	0.00022160	0.00036356	-0.00000115	0.00000000
+		-6.27330267	-0.00036170	0.00022157	0.00036352	-0.00000115	0.00000000
+		-6.27330278	-0.00036166	0.00022155	0.00036347	-0.00000115	0.00000000
+		-6.27330288	-0.00036161	0.00022152	0.00036343	-0.00000115	0.00000000
+		-6.27330298	-0.00036157	0.00022150	0.00036339	-0.00000115	0.00000000
+		-6.27330308	-0.00036153	0.00022147	0.00036335	-0.00000115	0.00000000
+		-6.27330318	-0.00036149	0.00022144	0.00036330	-0.00000115	0.00000000
+		-6.27330328	-0.00036144	0.00022142	0.00036326	-0.00000115	0.00000000
+		-6.27330338	-0.00036140	0.00022139	0.00036322	-0.00000115	0.00000000
+		-6.27330348	-0.00036136	0.00022137	0.00036318	-0.00000115	0.00000000
+		-6.27330358	-0.00036132	0.00022134	0.00036313	-0.00000115	0.00000000
+		-6.27330368	-0.00036128	0.00022132	0.00036309	-0.00000115	0.00000000
+		-6.27330379	-0.00036123	0.00022129	0.00036305	-0.00000115	0.00000000
+		-6.27330389	-0.00036119	0.00022126	0.00036301	-0.00000115	0.00000000
+		-6.27330399	-0.00036115	0.00022124	0.00036297	-0.00000115	0.00000000
+		-6.27330409	-0.00036111	0.00022121	0.00036292	-0.00000115	0.00000000
+		-6.27330419	-0.00036107	0.00022119	0.00036288	-0.00000115	0.00000000
+		-6.27330429	-0.00036102	0.00022116	0.00036284	-0.00000115	0.00000000
+		-6.27330439	-0.00036098	0.00022113	0.00036280	-0.00000115	0.00000000
+		-6.27330449	-0.00036094	0.00022111	0.00036275	-0.00000115	0.00000000
+		-6.27330459	-0.00036090	0.00022108	0.00036271	-0.00000115	0.00000000
+		-6.27330469	-0.00036085	0.00022106	0.00036267	-0.00000115	0.00000000
+		-6.27330479	-0.00036081	0.00022103	0.00036263	-0.00000115	0.00000000
+		-6.27330489	-0.00036077	0.00022101	0.00036258	-0.00000115	0.00000000
+		-6.27330499	-0.00036073	0.00022098	0.00036254	-0.00000115	0.00000000
+		-6.27330510	-0.00036069	0.00022095	0.00036250	-0.00000115	0.00000000
+		-6.27330520	-0.00036064	0.00022093	0.00036246	-0.00000115	0.00000000
+		-6.27330530	-0.00036060	0.00022090	0.00036242	-0.00000115	0.00000000
+		-6.27330540	-0.00036056	0.00022088	0.00036237	-0.00000115	0.00000000
+		-6.27330550	-0.00036052	0.00022085	0.00036233	-0.00000115	0.00000000
+		-6.27330560	-0.00036048	0.00022083	0.00036229	-0.00000115	0.00000000
+		-6.27330570	-0.00036043	0.00022080	0.00036225	-0.00000115	0.00000000
+		-6.27330580	-0.00036039	0.00022077	0.00036220	-0.00000115	0.00000000
+		-6.27330590	-0.00036035	0.00022075	0.00036216	-0.00000115	0.00000000
+		-6.27330600	-0.00036031	0.00022072	0.00036212	-0.00000115	0.00000000
+		-6.27330610	-0.00036027	0.00022070	0.00036208	-0.00000115	0.00000000
+		-6.27330620	-0.00036023	0.00022067	0.00036204	-0.00000115	0.00000000
+		-6.27330630	-0.00036018	0.00022065	0.00036199	-0.00000115	0.00000000
+		-6.27330640	-0.00036014	0.00022062	0.00036195	-0.00000115	0.00000000
+		-6.27330650	-0.00036010	0.00022059	0.00036191	-0.00000115	0.00000000
+		-6.27330660	-0.00036006	0.00022057	0.00036187	-0.00000115	0.00000000
+		-6.27330670	-0.00036002	0.00022054	0.00036183	-0.00000115	0.00000000
+		-6.27330680	-0.00035997	0.00022052	0.00036178	-0.00000115	0.00000000
+		-6.27330690	-0.00035993	0.00022049	0.00036174	-0.00000115	0.00000000
+		-6.27330700	-0.00035989	0.00022047	0.00036170	-0.00000115	0.00000000
+		-6.27330710	-0.00035985	0.00022044	0.00036166	-0.00000115	0.00000000
+		-6.27330720	-0.00035981	0.00022041	0.00036162	-0.00000115	0.00000000
+		-6.27330730	-0.00035976	0.00022039	0.00036157	-0.00000115	0.00000000
+		-6.27330740	-0.00035972	0.00022036	0.00036153	-0.00000115	0.00000000
+		-6.27330750	-0.00035968	0.00022034	0.00036149	-0.00000115	0.00000000
+		-6.27330760	-0.00035964	0.00022031	0.00036145	-0.00000115	0.00000000
+		-6.27330770	-0.00035960	0.00022029	0.00036141	-0.00000115	0.00000000
+		-6.27330780	-0.00035956	0.00022026	0.00036136	-0.00000115	0.00000000
+		-6.27330790	-0.00035951	0.00022024	0.00036132	-0.00000115	0.00000000
+		-6.27330800	-0.00035947	0.00022021	0.00036128	-0.00000115	0.00000000
+		-6.27330810	-0.00035943	0.00022018	0.00036124	-0.00000115	0.00000000
+		-6.27330820	-0.00035939	0.00022016	0.00036120	-0.00000115	0.00000000
+		-6.27330830	-0.00035935	0.00022013	0.00036115	-0.00000115	0.00000000
+		-6.27330840	-0.00035931	0.00022011	0.00036111	-0.00000115	0.00000000
+		-6.27330850	-0.00035926	0.00022008	0.00036107	-0.00000115	0.00000000
+		-6.27330860	-0.00035922	0.00022006	0.00036103	-0.00000115	0.00000000
+		-6.27330870	-0.00035918	0.00022003	0.00036099	-0.00000115	0.00000000
+		-6.27330880	-0.00035914	0.00022001	0.00036094	-0.00000115	0.00000000
+		-6.27330890	-0.00035910	0.00021998	0.00036090	-0.00000115	0.00000000
+		-6.27330900	-0.00035906	0.00021995	0.00036086	-0.00000115	0.00000000
+		-6.27330910	-0.00035901	0.00021993	0.00036082	-0.00000115	0.00000000
+		-6.27330920	-0.00035897	0.00021990	0.00036078	-0.00000115	0.00000000
+		-6.27330930	-0.00035893	0.00021988	0.00036073	-0.00000115	0.00000000
+		-6.27330940	-0.00035889	0.00021985	0.00036069	-0.00000115	0.00000000
+		-6.27330950	-0.00035885	0.00021983	0.00036065	-0.00000115	0.00000000
+		-6.27330960	-0.00035881	0.00021980	0.00036061	-0.00000115	0.00000000
+		-6.27330970	-0.00035876	0.00021978	0.00036057	-0.00000115	0.00000000
+		-6.27330980	-0.00035872	0.00021975	0.00036053	-0.00000115	0.00000000
+		-6.27330990	-0.00035868	0.00021972	0.00036048	-0.00000115	0.00000000
+		-6.27331000	-0.00035864	0.00021970	0.00036044	-0.00000115	0.00000000
+		-6.27331010	-0.00035860	0.00021967	0.00036040	-0.00000115	0.00000000
+		-6.27331020	-0.00035856	0.00021965	0.00036036	-0.00000115	0.00000000
+		-6.27331030	-0.00035851	0.00021962	0.00036032	-0.00000115	0.00000000
+		-6.27331040	-0.00035847	0.00021960	0.00036028	-0.00000115	0.00000000
+		-6.27331050	-0.00035843	0.00021957	0.00036023	-0.00000115	0.00000000
+		-6.27331059	-0.00035839	0.00021955	0.00036019	-0.00000115	0.00000000
+		-6.27331069	-0.00035835	0.00021952	0.00036015	-0.00000115	0.00000000
+		-6.27331079	-0.00035831	0.00021950	0.00036011	-0.00000115	0.00000000
+		-6.27331089	-0.00035827	0.00021947	0.00036007	-0.00000115	0.00000000
+		-6.27331099	-0.00035822	0.00021944	0.00036002	-0.00000115	0.00000000
+		-6.27331109	-0.00035818	0.00021942	0.00035998	-0.00000115	0.00000000
+		-6.27331119	-0.00035814	0.00021939	0.00035994	-0.00000115	0.00000000
+		-6.27331129	-0.00035810	0.00021937	0.00035990	-0.00000115	0.00000000
+		-6.27331139	-0.00035806	0.00021934	0.00035986	-0.00000115	0.00000000
+		-6.27331149	-0.00035802	0.00021932	0.00035982	-0.00000115	0.00000000
+		-6.27331159	-0.00035798	0.00021929	0.00035978	-0.00000115	0.00000000
+		-6.27331169	-0.00035793	0.00021927	0.00035973	-0.00000115	0.00000000
+		-6.27331179	-0.00035789	0.00021924	0.00035969	-0.00000115	0.00000000
+		-6.27331188	-0.00035785	0.00021922	0.00035965	-0.00000115	0.00000000
+		-6.27331198	-0.00035781	0.00021919	0.00035961	-0.00000115	0.00000000
+		-6.27331208	-0.00035777	0.00021917	0.00035957	-0.00000115	0.00000000
+		-6.27331218	-0.00035773	0.00021914	0.00035953	-0.00000115	0.00000000
+		-6.27331228	-0.00035769	0.00021911	0.00035948	-0.00000115	0.00000000
+		-6.27331238	-0.00035764	0.00021909	0.00035944	-0.00000115	0.00000000
+		-6.27331248	-0.00035760	0.00021906	0.00035940	-0.00000115	0.00000000
+		-6.27331258	-0.00035756	0.00021904	0.00035936	-0.00000115	0.00000000
+		-6.27331268	-0.00035752	0.00021901	0.00035932	-0.00000115	0.00000000
+		-6.27331277	-0.00035748	0.00021899	0.00035928	-0.00000115	0.00000000
+		-6.27331287	-0.00035744	0.00021896	0.00035923	-0.00000115	0.00000000
+		-6.27331297	-0.00035740	0.00021894	0.00035919	-0.00000115	0.00000000
+		-6.27331307	-0.00035736	0.00021891	0.00035915	-0.00000115	0.00000000
+		-6.27331317	-0.00035731	0.00021889	0.00035911	-0.00000115	0.00000000
+		-6.27331327	-0.00035727	0.00021886	0.00035907	-0.00000115	0.00000000
+		-6.27331337	-0.00035723	0.00021884	0.00035903	-0.00000115	0.00000000
+		-6.27331347	-0.00035719	0.00021881	0.00035899	-0.00000115	0.00000000
+		-6.27331356	-0.00035715	0.00021879	0.00035894	-0.00000115	0.00000000
+		-6.27331366	-0.00035711	0.00021876	0.00035890	-0.00000115	0.00000000
+		-6.27331376	-0.00035707	0.00021874	0.00035886	-0.00000115	0.00000000
+		-6.27331386	-0.00035703	0.00021871	0.00035882	-0.00000115	0.00000000
+		-6.27331396	-0.00035698	0.00021869	0.00035878	-0.00000115	0.00000000
+		-6.27331406	-0.00035694	0.00021866	0.00035874	-0.00000115	0.00000000
+		-6.27331416	-0.00035690	0.00021863	0.00035870	-0.00000115	0.00000000
+		-6.27331425	-0.00035686	0.00021861	0.00035866	-0.00000115	0.00000000
+		-6.27331435	-0.00035682	0.00021858	0.00035861	-0.00000115	0.00000000
+		-6.27331445	-0.00035678	0.00021856	0.00035857	-0.00000115	0.00000000
+		-6.27331455	-0.00035674	0.00021853	0.00035853	-0.00000115	0.00000000
+		-6.27331465	-0.00035670	0.00021851	0.00035849	-0.00000115	0.00000000
+		-6.27331475	-0.00035666	0.00021848	0.00035845	-0.00000115	0.00000000
+		-6.27331485	-0.00035661	0.00021846	0.00035841	-0.00000115	0.00000000
+		-6.27331494	-0.00035657	0.00021843	0.00035837	-0.00000115	0.00000000
+		-6.27331504	-0.00035653	0.00021841	0.00035832	-0.00000115	0.00000000
+		-6.27331514	-0.00035649	0.00021838	0.00035828	-0.00000115	0.00000000
+		-6.27331524	-0.00035645	0.00021836	0.00035824	-0.00000115	0.00000000
+		-6.27331534	-0.00035641	0.00021833	0.00035820	-0.00000115	0.00000000
+		-6.27331543	-0.00035637	0.00021831	0.00035816	-0.00000115	0.00000000
+		-6.27331553	-0.00035633	0.00021828	0.00035812	-0.00000115	0.00000000
+		-6.27331563	-0.00035629	0.00021826	0.00035808	-0.00000115	0.00000000
+		-6.27331573	-0.00035625	0.00021823	0.00035804	-0.00000115	0.00000000
+		-6.27331583	-0.00035620	0.00021821	0.00035799	-0.00000115	0.00000000
+		-6.27331593	-0.00035616	0.00021818	0.00035795	-0.00000115	0.00000000
+		-6.27331602	-0.00035612	0.00021816	0.00035791	-0.00000115	0.00000000
+		-6.27331612	-0.00035608	0.00021813	0.00035787	-0.00000115	0.00000000
+		-6.27331622	-0.00035604	0.00021811	0.00035783	-0.00000115	0.00000000
+		-6.27331632	-0.00035600	0.00021808	0.00035779	-0.00000115	0.00000000
+		-6.27331642	-0.00035596	0.00021806	0.00035775	-0.00000115	0.00000000
+		-6.27331651	-0.00035592	0.00021803	0.00035771	-0.00000115	0.00000000
+		-6.27331661	-0.00035588	0.00021801	0.00035767	-0.00000115	0.00000000
+		-6.27331671	-0.00035584	0.00021798	0.00035762	-0.00000115	0.00000000
+		-6.27331681	-0.00035579	0.00021796	0.00035758	-0.00000115	0.00000000
+		-6.27331691	-0.00035575	0.00021793	0.00035754	-0.00000115	0.00000000
+		-6.27331700	-0.00035571	0.00021791	0.00035750	-0.00000115	0.00000000
+		-6.27331710	-0.00035567	0.00021788	0.00035746	-0.00000115	0.00000000
+		-6.27331720	-0.00035563	0.00021786	0.00035742	-0.00000115	0.00000000
+		-6.27331730	-0.00035559	0.00021783	0.00035738	-0.00000115	0.00000000
+		-6.27331740	-0.00035555	0.00021781	0.00035734	-0.00000115	0.00000000
+		-6.27331749	-0.00035551	0.00021778	0.00035730	-0.00000115	0.00000000
+		-6.27331759	-0.00035547	0.00021776	0.00035725	-0.00000115	0.00000000
+		-6.27331769	-0.00035543	0.00021773	0.00035721	-0.00000115	0.00000000
+		-6.27331779	-0.00035539	0.00021771	0.00035717	-0.00000115	0.00000000
+		-6.27331788	-0.00035535	0.00021768	0.00035713	-0.00000115	0.00000000
+		-6.27331798	-0.00035530	0.00021766	0.00035709	-0.00000115	0.00000000
+		-6.27331808	-0.00035526	0.00021763	0.00035705	-0.00000115	0.00000000
+		-6.27331818	-0.00035522	0.00021761	0.00035701	-0.00000115	0.00000000
+		-6.27331827	-0.00035518	0.00021758	0.00035697	-0.00000115	0.00000000
+		-6.27331837	-0.00035514	0.00021756	0.00035693	-0.00000115	0.00000000
+		-6.27331847	-0.00035510	0.00021753	0.00035689	-0.00000115	0.00000000
+		-6.27331857	-0.00035506	0.00021751	0.00035684	-0.00000115	0.00000000
+		-6.27331866	-0.00035502	0.00021748	0.00035680	-0.00000115	0.00000000
+		-6.27331876	-0.00035498	0.00021746	0.00035676	-0.00000115	0.00000000
+		-6.27331886	-0.00035494	0.00021743	0.00035672	-0.00000115	0.00000000
+		-6.27331896	-0.00035490	0.00021741	0.00035668	-0.00000115	0.00000000
+		-6.27331905	-0.00035486	0.00021738	0.00035664	-0.00000115	0.00000000
+		-6.27331915	-0.00035482	0.00021736	0.00035660	-0.00000115	0.00000000
+		-6.27331925	-0.00035478	0.00021733	0.00035656	-0.00000115	0.00000000
+		-6.27331935	-0.00035473	0.00021731	0.00035652	-0.00000115	0.00000000
+		-6.27331944	-0.00035469	0.00021728	0.00035648	-0.00000115	0.00000000
+		-6.27331954	-0.00035465	0.00021726	0.00035644	-0.00000115	0.00000000
+		-6.27331964	-0.00035461	0.00021723	0.00035640	-0.00000115	0.00000000
+		-6.27331974	-0.00035457	0.00021721	0.00035635	-0.00000115	0.00000000
+		-6.27331983	-0.00035453	0.00021718	0.00035631	-0.00000115	0.00000000
+		-6.27331993	-0.00035449	0.00021716	0.00035627	-0.00000115	0.00000000
+		-6.27332003	-0.00035445	0.00021713	0.00035623	-0.00000115	0.00000000
+		-6.27332012	-0.00035441	0.00021711	0.00035619	-0.00000115	0.00000000
+		-6.27332022	-0.00035437	0.00021708	0.00035615	-0.00000115	0.00000000
+		-6.27332032	-0.00035433	0.00021706	0.00035611	-0.00000115	0.00000000
+		-6.27332042	-0.00035429	0.00021703	0.00035607	-0.00000115	0.00000000
+		-6.27332051	-0.00035425	0.00021701	0.00035603	-0.00000115	0.00000000
+		-6.27332061	-0.00035421	0.00021698	0.00035599	-0.00000115	0.00000000
+		-6.27332071	-0.00035417	0.00021696	0.00035595	-0.00000115	0.00000000
+		-6.27332080	-0.00035413	0.00021693	0.00035591	-0.00000115	0.00000000
+		-6.27332090	-0.00035409	0.00021691	0.00035587	-0.00000115	0.00000000
+		-6.27332100	-0.00035405	0.00021688	0.00035582	-0.00000115	0.00000000
+		-6.27332109	-0.00035400	0.00021686	0.00035578	-0.00000115	0.00000000
+		-6.27332119	-0.00035396	0.00021683	0.00035574	-0.00000115	0.00000000
+		-6.27332129	-0.00035392	0.00021681	0.00035570	-0.00000115	0.00000000
+		-6.27332139	-0.00035388	0.00021678	0.00035566	-0.00000115	0.00000000
+		-6.27332148	-0.00035384	0.00021676	0.00035562	-0.00000115	0.00000000
+		-6.27332158	-0.00035380	0.00021673	0.00035558	-0.00000115	0.00000000
+		-6.27332168	-0.00035376	0.00021671	0.00035554	-0.00000115	0.00000000
+		-6.27332177	-0.00035372	0.00021669	0.00035550	-0.00000115	0.00000000
+		-6.27332187	-0.00035368	0.00021666	0.00035546	-0.00000115	0.00000000
+		-6.27332197	-0.00035364	0.00021664	0.00035542	-0.00000115	0.00000000
+		-6.27332206	-0.00035360	0.00021661	0.00035538	-0.00000115	0.00000000
+		-6.27332216	-0.00035356	0.00021659	0.00035534	-0.00000115	0.00000000
+		-6.27332226	-0.00035352	0.00021656	0.00035530	-0.00000115	0.00000000
+		-6.27332235	-0.00035348	0.00021654	0.00035526	-0.00000115	0.00000000
+		-6.27332245	-0.00035344	0.00021651	0.00035522	-0.00000115	0.00000000
+		-6.27332255	-0.00035340	0.00021649	0.00035517	-0.00000115	0.00000000
+		-6.27332264	-0.00035336	0.00021646	0.00035513	-0.00000115	0.00000000
+		-6.27332274	-0.00035332	0.00021644	0.00035509	-0.00000115	0.00000000
+		-6.27332284	-0.00035328	0.00021641	0.00035505	-0.00000115	0.00000000
+		-6.27332293	-0.00035324	0.00021639	0.00035501	-0.00000115	0.00000000
+		-6.27332303	-0.00035320	0.00021636	0.00035497	-0.00000115	0.00000000
+		-6.27332313	-0.00035316	0.00021634	0.00035493	-0.00000115	0.00000000
+		-6.27332322	-0.00035312	0.00021631	0.00035489	-0.00000115	0.00000000
+		-6.27332332	-0.00035308	0.00021629	0.00035485	-0.00000115	0.00000000
+		-6.27332341	-0.00035304	0.00021626	0.00035481	-0.00000115	0.00000000
+		-6.27332351	-0.00035300	0.00021624	0.00035477	-0.00000115	0.00000000
+		-6.27332361	-0.00035296	0.00021622	0.00035473	-0.00000115	0.00000000
+		-6.27332370	-0.00035291	0.00021619	0.00035469	-0.00000115	0.00000000
+		-6.27332380	-0.00035287	0.00021617	0.00035465	-0.00000115	0.00000000
+		-6.27332390	-0.00035283	0.00021614	0.00035461	-0.00000115	0.00000000
+		-6.27332399	-0.00035279	0.00021612	0.00035457	-0.00000115	0.00000000
+		-6.27332409	-0.00035275	0.00021609	0.00035453	-0.00000115	0.00000000
+		-6.27332418	-0.00035271	0.00021607	0.00035449	-0.00000115	0.00000000
+		-6.27332428	-0.00035267	0.00021604	0.00035445	-0.00000115	0.00000000
+		-6.27332438	-0.00035263	0.00021602	0.00035441	-0.00000115	0.00000000
+		-6.27332447	-0.00035259	0.00021599	0.00035437	-0.00000115	0.00000000
+		-6.27332457	-0.00035255	0.00021597	0.00035432	-0.00000115	0.00000000
+		-6.27332467	-0.00035251	0.00021594	0.00035428	-0.00000115	0.00000000
+		-6.27332476	-0.00035247	0.00021592	0.00035424	-0.00000115	0.00000000
+		-6.27332486	-0.00035243	0.00021590	0.00035420	-0.00000115	0.00000000
+		-6.27332495	-0.00035239	0.00021587	0.00035416	-0.00000115	0.00000000
+		-6.27332505	-0.00035235	0.00021585	0.00035412	-0.00000115	0.00000000
+		-6.27332515	-0.00035231	0.00021582	0.00035408	-0.00000115	0.00000000
+		-6.27332524	-0.00035227	0.00021580	0.00035404	-0.00000115	0.00000000
+		-6.27332534	-0.00035223	0.00021577	0.00035400	-0.00000115	0.00000000
+		-6.27332543	-0.00035219	0.00021575	0.00035396	-0.00000115	0.00000000
+		-6.27332553	-0.00035215	0.00021572	0.00035392	-0.00000115	0.00000000
+		-6.27332563	-0.00035211	0.00021570	0.00035388	-0.00000115	0.00000000
+		-6.27332572	-0.00035207	0.00021567	0.00035384	-0.00000115	0.00000000
+		-6.27332582	-0.00035203	0.00021565	0.00035380	-0.00000115	0.00000000
+		-6.27332591	-0.00035199	0.00021563	0.00035376	-0.00000115	0.00000000
+		-6.27332601	-0.00035195	0.00021560	0.00035372	-0.00000115	0.00000000
+		-6.27332611	-0.00035191	0.00021558	0.00035368	-0.00000115	0.00000000
+		-6.27332620	-0.00035187	0.00021555	0.00035364	-0.00000115	0.00000000
+		-6.27332630	-0.00035183	0.00021553	0.00035360	-0.00000115	0.00000000
+		-6.27332639	-0.00035179	0.00021550	0.00035356	-0.00000115	0.00000000
+		-6.27332649	-0.00035175	0.00021548	0.00035352	-0.00000115	0.00000000
+		-6.27332658	-0.00035171	0.00021545	0.00035348	-0.00000115	0.00000000
+		-6.27332668	-0.00035167	0.00021543	0.00035344	-0.00000115	0.00000000
+		-6.27332678	-0.00035163	0.00021540	0.00035340	-0.00000115	0.00000000
+		-6.27332687	-0.00035159	0.00021538	0.00035336	-0.00000115	0.00000000
+		-6.27332697	-0.00035155	0.00021536	0.00035332	-0.00000115	0.00000000
+		-6.27332706	-0.00035151	0.00021533	0.00035328	-0.00000115	0.00000000
+		-6.27332716	-0.00035147	0.00021531	0.00035324	-0.00000115	0.00000000
+		-6.27332725	-0.00035143	0.00021528	0.00035320	-0.00000115	0.00000000
+		-6.27332735	-0.00035139	0.00021526	0.00035316	-0.00000115	0.00000000
+		-6.27332744	-0.00035135	0.00021523	0.00035312	-0.00000115	0.00000000
+		-6.27332754	-0.00035131	0.00021521	0.00035308	-0.00000115	0.00000000
+		-6.27332763	-0.00035127	0.00021518	0.00035304	-0.00000115	0.00000000
+		-6.27332773	-0.00035123	0.00021516	0.00035300	-0.00000115	0.00000000
+		-6.27332783	-0.00035119	0.00021514	0.00035296	-0.00000115	0.00000000
+		-6.27332792	-0.00035115	0.00021511	0.00035292	-0.00000115	0.00000000
+		-6.27332802	-0.00035111	0.00021509	0.00035288	-0.00000115	0.00000000
+		-6.27332811	-0.00035107	0.00021506	0.00035284	-0.00000115	0.00000000
+		-6.27332821	-0.00035103	0.00021504	0.00035280	-0.00000115	0.00000000
+		-6.27332830	-0.00035099	0.00021501	0.00035276	-0.00000115	0.00000000
+		-6.27332840	-0.00035095	0.00021499	0.00035272	-0.00000115	0.00000000
+		-6.27332849	-0.00035091	0.00021496	0.00035268	-0.00000115	0.00000000
+		-6.27332859	-0.00035087	0.00021494	0.00035264	-0.00000115	0.00000000
+		-6.27332868	-0.00035084	0.00021492	0.00035260	-0.00000115	0.00000000
+		-6.27332878	-0.00035080	0.00021489	0.00035256	-0.00000115	0.00000000
+		-6.27332887	-0.00035076	0.00021487	0.00035252	-0.00000115	0.00000000
+		-6.27332897	-0.00035072	0.00021484	0.00035248	-0.00000115	0.00000000
+		-6.27332906	-0.00035068	0.00021482	0.00035244	-0.00000115	0.00000000
+		-6.27332916	-0.00035064	0.00021479	0.00035240	-0.00000115	0.00000000
+		-6.27332925	-0.00035060	0.00021477	0.00035236	-0.00000115	0.00000000
+		-6.27332935	-0.00035056	0.00021475	0.00035232	-0.00000115	0.00000000
+		-6.27332944	-0.00035052	0.00021472	0.00035228	-0.00000115	0.00000000
+		-6.27332954	-0.00035048	0.00021470	0.00035224	-0.00000115	0.00000000
+		-6.27332963	-0.00035044	0.00021467	0.00035220	-0.00000115	0.00000000
+		-6.27332973	-0.00035040	0.00021465	0.00035216	-0.00000115	0.00000000
+		-6.27332982	-0.00035036	0.00021462	0.00035212	-0.00000115	0.00000000
+		-6.27332992	-0.00035032	0.00021460	0.00035208	-0.00000115	0.00000000
+		-6.27333001	-0.00035028	0.00021458	0.00035204	-0.00000115	0.00000000
+		-6.27333011	-0.00035024	0.00021455	0.00035200	-0.00000115	0.00000000
+		-6.27333020	-0.00035020	0.00021453	0.00035196	-0.00000115	0.00000000
+		-6.27333030	-0.00035016	0.00021450	0.00035192	-0.00000115	0.00000000
+		-6.27333039	-0.00035012	0.00021448	0.00035188	-0.00000115	0.00000000
+		-6.27333049	-0.00035008	0.00021445	0.00035184	-0.00000115	0.00000000
+		-6.27333058	-0.00035004	0.00021443	0.00035180	-0.00000115	0.00000000
+		-6.27333068	-0.00035000	0.00021441	0.00035176	-0.00000115	0.00000000
+		-6.27333077	-0.00034996	0.00021438	0.00035172	-0.00000115	0.00000000
+		-6.27333087	-0.00034992	0.00021436	0.00035168	-0.00000115	0.00000000
+		-6.27333096	-0.00034988	0.00021433	0.00035164	-0.00000115	0.00000000
+		-6.27333106	-0.00034984	0.00021431	0.00035160	-0.00000115	0.00000000
+		-6.27333115	-0.00034980	0.00021428	0.00035156	-0.00000115	0.00000000
+		-6.27333125	-0.00034976	0.00021426	0.00035152	-0.00000115	0.00000000
+		-6.27333134	-0.00034973	0.00021424	0.00035148	-0.00000115	0.00000000
+		-6.27333144	-0.00034969	0.00021421	0.00035144	-0.00000115	0.00000000
+		-6.27333153	-0.00034965	0.00021419	0.00035140	-0.00000115	0.00000000
+		-6.27333162	-0.00034961	0.00021416	0.00035136	-0.00000115	0.00000000
+		-6.27333172	-0.00034957	0.00021414	0.00035132	-0.00000115	0.00000000
+		-6.27333181	-0.00034953	0.00021412	0.00035128	-0.00000115	0.00000000
+		-6.27333191	-0.00034949	0.00021409	0.00035124	-0.00000115	0.00000000
+		-6.27333200	-0.00034945	0.00021407	0.00035120	-0.00000115	0.00000000
+		-6.27333210	-0.00034941	0.00021404	0.00035117	-0.00000115	0.00000000
+		-6.27333219	-0.00034937	0.00021402	0.00035113	-0.00000115	0.00000000
+		-6.27333229	-0.00034933	0.00021399	0.00035109	-0.00000115	0.00000000
+		-6.27333238	-0.00034929	0.00021397	0.00035105	-0.00000115	0.00000000
+		-6.27333247	-0.00034925	0.00021395	0.00035101	-0.00000115	0.00000000
+		-6.27333257	-0.00034921	0.00021392	0.00035097	-0.00000115	0.00000000
+		-6.27333266	-0.00034917	0.00021390	0.00035093	-0.00000115	0.00000000
+		-6.27333276	-0.00034913	0.00021387	0.00035089	-0.00000115	0.00000000
+		-6.27333285	-0.00034909	0.00021385	0.00035085	-0.00000115	0.00000000
+		-6.27333295	-0.00034905	0.00021383	0.00035081	-0.00000115	0.00000000
+		-6.27333304	-0.00034902	0.00021380	0.00035077	-0.00000115	0.00000000
+		-6.27333313	-0.00034898	0.00021378	0.00035073	-0.00000115	0.00000000
+		-6.27333323	-0.00034894	0.00021375	0.00035069	-0.00000115	0.00000000
+		-6.27333332	-0.00034890	0.00021373	0.00035065	-0.00000115	0.00000000
+		-6.27333342	-0.00034886	0.00021370	0.00035061	-0.00000115	0.00000000
+		-6.27333351	-0.00034882	0.00021368	0.00035057	-0.00000115	0.00000000
+		-6.27333360	-0.00034878	0.00021366	0.00035053	-0.00000115	0.00000000
+		-6.27333370	-0.00034874	0.00021363	0.00035049	-0.00000115	0.00000000
+		-6.27333379	-0.00034870	0.00021361	0.00035045	-0.00000115	0.00000000
+		-6.27333389	-0.00034866	0.00021358	0.00035041	-0.00000115	0.00000000
+		-6.27333398	-0.00034862	0.00021356	0.00035037	-0.00000115	0.00000000
+		-6.27333408	-0.00034858	0.00021354	0.00035033	-0.00000115	0.00000000
+		-6.27333417	-0.00034854	0.00021351	0.00035030	-0.00000115	0.00000000
+		-6.27333426	-0.00034850	0.00021349	0.00035026	-0.00000115	0.00000000
+		-6.27333436	-0.00034847	0.00021346	0.00035022	-0.00000115	0.00000000
+		-6.27333445	-0.00034843	0.00021344	0.00035018	-0.00000115	0.00000000
+		-6.27333454	-0.00034839	0.00021342	0.00035014	-0.00000115	0.00000000
+		-6.27333464	-0.00034835	0.00021339	0.00035010	-0.00000115	0.00000000
+		-6.27333473	-0.00034831	0.00021337	0.00035006	-0.00000115	0.00000000
+		-6.27333483	-0.00034827	0.00021334	0.00035002	-0.00000115	0.00000000
+		-6.27333492	-0.00034823	0.00021332	0.00034998	-0.00000115	0.00000000
+		-6.27333501	-0.00034819	0.00021330	0.00034994	-0.00000115	0.00000000
+		-6.27333511	-0.00034815	0.00021327	0.00034990	-0.00000115	0.00000000
+		-6.27333520	-0.00034811	0.00021325	0.00034986	-0.00000115	0.00000000
+		-6.27333530	-0.00034807	0.00021322	0.00034982	-0.00000115	0.00000000
+		-6.27333539	-0.00034803	0.00021320	0.00034978	-0.00000115	0.00000000
+		-6.27333548	-0.00034800	0.00021318	0.00034974	-0.00000115	0.00000000
+		-6.27333558	-0.00034796	0.00021315	0.00034970	-0.00000115	0.00000000
+		-6.27333567	-0.00034792	0.00021313	0.00034967	-0.00000115	0.00000000
+		-6.27333576	-0.00034788	0.00021310	0.00034963	-0.00000115	0.00000000
+		-6.27333586	-0.00034784	0.00021308	0.00034959	-0.00000115	0.00000000
+		-6.27333595	-0.00034780	0.00021306	0.00034955	-0.00000115	0.00000000
+		-6.27333604	-0.00034776	0.00021303	0.00034951	-0.00000115	0.00000000
+		-6.27333614	-0.00034772	0.00021301	0.00034947	-0.00000115	0.00000000
+		-6.27333623	-0.00034768	0.00021298	0.00034943	-0.00000115	0.00000000
+		-6.27333632	-0.00034764	0.00021296	0.00034939	-0.00000115	0.00000000
+		-6.27333642	-0.00034760	0.00021294	0.00034935	-0.00000115	0.00000000
+		-6.27333651	-0.00034757	0.00021291	0.00034931	-0.00000115	0.00000000
+		-6.27333661	-0.00034753	0.00021289	0.00034927	-0.00000115	0.00000000
+		-6.27333670	-0.00034749	0.00021286	0.00034923	-0.00000115	0.00000000
+		-6.27333679	-0.00034745	0.00021284	0.00034919	-0.00000115	0.00000000
+		-6.27333689	-0.00034741	0.00021282	0.00034915	-0.00000115	0.00000000
+		-6.27333698	-0.00034737	0.00021279	0.00034912	-0.00000115	0.00000000
+		-6.27333707	-0.00034733	0.00021277	0.00034908	-0.00000115	0.00000000
+		-6.27333717	-0.00034729	0.00021275	0.00034904	-0.00000115	0.00000000
+		-6.27333726	-0.00034725	0.00021272	0.00034900	-0.00000115	0.00000000
+		-6.27333735	-0.00034721	0.00021270	0.00034896	-0.00000115	0.00000000
+		-6.27333745	-0.00034718	0.00021267	0.00034892	-0.00000115	0.00000000
+		-6.27333754	-0.00034714	0.00021265	0.00034888	-0.00000115	0.00000000
+		-6.27333763	-0.00034710	0.00021263	0.00034884	-0.00000115	0.00000000
+		-6.27333772	-0.00034706	0.00021260	0.00034880	-0.00000115	0.00000000
+		-6.27333782	-0.00034702	0.00021258	0.00034876	-0.00000115	0.00000000
+		-6.27333791	-0.00034698	0.00021255	0.00034872	-0.00000115	0.00000000
+		-6.27333800	-0.00034694	0.00021253	0.00034869	-0.00000115	0.00000000
+		-6.27333810	-0.00034690	0.00021251	0.00034865	-0.00000115	0.00000000
+		-6.27333819	-0.00034686	0.00021248	0.00034861	-0.00000115	0.00000000
+		-6.27333828	-0.00034683	0.00021246	0.00034857	-0.00000115	0.00000000
+		-6.27333838	-0.00034679	0.00021244	0.00034853	-0.00000115	0.00000000
+		-6.27333847	-0.00034675	0.00021241	0.00034849	-0.00000115	0.00000000
+		-6.27333856	-0.00034671	0.00021239	0.00034845	-0.00000115	0.00000000
+		-6.27333866	-0.00034667	0.00021236	0.00034841	-0.00000115	0.00000000
+		-6.27333875	-0.00034663	0.00021234	0.00034837	-0.00000115	0.00000000
+		-6.27333884	-0.00034659	0.00021232	0.00034833	-0.00000115	0.00000000
+		-6.27333893	-0.00034655	0.00021229	0.00034829	-0.00000115	0.00000000
+		-6.27333903	-0.00034652	0.00021227	0.00034826	-0.00000115	0.00000000
+		-6.27333912	-0.00034648	0.00021225	0.00034822	-0.00000115	0.00000000
+		-6.27333921	-0.00034644	0.00021222	0.00034818	-0.00000115	0.00000000
+		-6.27333931	-0.00034640	0.00021220	0.00034814	-0.00000115	0.00000000
+		-6.27333940	-0.00034636	0.00021217	0.00034810	-0.00000115	0.00000000
+		-6.27333949	-0.00034632	0.00021215	0.00034806	-0.00000115	0.00000000
+		-6.27333958	-0.00034628	0.00021213	0.00034802	-0.00000115	0.00000000
+		-6.27333968	-0.00034624	0.00021210	0.00034798	-0.00000115	0.00000000
+		-6.27333977	-0.00034620	0.00021208	0.00034794	-0.00000115	0.00000000
+		-6.27333986	-0.00034617	0.00021206	0.00034791	-0.00000115	0.00000000
+		-6.27333995	-0.00034613	0.00021203	0.00034787	-0.00000115	0.00000000
+		-6.27334005	-0.00034609	0.00021201	0.00034783	-0.00000115	0.00000000
+		-6.27334014	-0.00034605	0.00021198	0.00034779	-0.00000115	0.00000000
+		-6.27334023	-0.00034601	0.00021196	0.00034775	-0.00000115	0.00000000
+		-6.27334033	-0.00034597	0.00021194	0.00034771	-0.00000115	0.00000000
+		-6.27334042	-0.00034593	0.00021191	0.00034767	-0.00000115	0.00000000
+		-6.27334051	-0.00034590	0.00021189	0.00034763	-0.00000115	0.00000000
+		-6.27334060	-0.00034586	0.00021187	0.00034759	-0.00000115	0.00000000
+		-6.27334070	-0.00034582	0.00021184	0.00034756	-0.00000115	0.00000000
+		-6.27334079	-0.00034578	0.00021182	0.00034752	-0.00000115	0.00000000
+		-6.27334088	-0.00034574	0.00021179	0.00034748	-0.00000115	0.00000000
+		-6.27334097	-0.00034570	0.00021177	0.00034744	-0.00000115	0.00000000
+		-6.27334107	-0.00034566	0.00021175	0.00034740	-0.00000115	0.00000000
+		-6.27334116	-0.00034563	0.00021172	0.00034736	-0.00000115	0.00000000
+		-6.27334125	-0.00034559	0.00021170	0.00034732	-0.00000115	0.00000000
+		-6.27334134	-0.00034555	0.00021168	0.00034728	-0.00000115	0.00000000
+		-6.27334143	-0.00034551	0.00021165	0.00034725	-0.00000115	0.00000000
+		-6.27334153	-0.00034547	0.00021163	0.00034721	-0.00000115	0.00000000
+		-6.27334162	-0.00034543	0.00021161	0.00034717	-0.00000115	0.00000000
+		-6.27334171	-0.00034539	0.00021158	0.00034713	-0.00000115	0.00000000
+		-6.27334180	-0.00034536	0.00021156	0.00034709	-0.00000115	0.00000000
+		-6.27334190	-0.00034532	0.00021153	0.00034705	-0.00000115	0.00000000
+		-6.27334199	-0.00034528	0.00021151	0.00034701	-0.00000115	0.00000000
+		-6.27334208	-0.00034524	0.00021149	0.00034697	-0.00000115	0.00000000
+		-6.27334217	-0.00034520	0.00021146	0.00034694	-0.00000115	0.00000000
+		-6.27334226	-0.00034516	0.00021144	0.00034690	-0.00000115	0.00000000
+		-6.27334236	-0.00034512	0.00021142	0.00034686	-0.00000115	0.00000000
+		-6.27334245	-0.00034509	0.00021139	0.00034682	-0.00000115	0.00000000
+		-6.27334254	-0.00034505	0.00021137	0.00034678	-0.00000115	0.00000000
+		-6.27334263	-0.00034501	0.00021135	0.00034674	-0.00000115	0.00000000
+		-6.27334273	-0.00034497	0.00021132	0.00034670	-0.00000115	0.00000000
+		-6.27334282	-0.00034493	0.00021130	0.00034666	-0.00000115	0.00000000
+		-6.27334291	-0.00034489	0.00021128	0.00034663	-0.00000115	0.00000000
+		-6.27334300	-0.00034486	0.00021125	0.00034659	-0.00000115	0.00000000
+		-6.27334309	-0.00034482	0.00021123	0.00034655	-0.00000115	0.00000000
+		-6.27334319	-0.00034478	0.00021120	0.00034651	-0.00000115	0.00000000
+		-6.27334328	-0.00034474	0.00021118	0.00034647	-0.00000115	0.00000000
+		-6.27334337	-0.00034470	0.00021116	0.00034643	-0.00000115	0.00000000
+		-6.27334346	-0.00034466	0.00021113	0.00034639	-0.00000115	0.00000000
+		-6.27334355	-0.00034462	0.00021111	0.00034636	-0.00000115	0.00000000
+		-6.27334364	-0.00034459	0.00021109	0.00034632	-0.00000115	0.00000000
+		-6.27334374	-0.00034455	0.00021106	0.00034628	-0.00000115	0.00000000
+		-6.27334383	-0.00034451	0.00021104	0.00034624	-0.00000115	0.00000000
+		-6.27334392	-0.00034447	0.00021102	0.00034620	-0.00000115	0.00000000
+		-6.27334401	-0.00034443	0.00021099	0.00034616	-0.00000115	0.00000000
+		-6.27334410	-0.00034439	0.00021097	0.00034612	-0.00000115	0.00000000
+		-6.27334420	-0.00034436	0.00021095	0.00034609	-0.00000115	0.00000000
+		-6.27334429	-0.00034432	0.00021092	0.00034605	-0.00000115	0.00000000
+		-6.27334438	-0.00034428	0.00021090	0.00034601	-0.00000115	0.00000000
+		-6.27334447	-0.00034424	0.00021088	0.00034597	-0.00000115	0.00000000
+		-6.27334456	-0.00034420	0.00021085	0.00034593	-0.00000115	0.00000000
+		-6.27334465	-0.00034417	0.00021083	0.00034589	-0.00000115	0.00000000
+		-6.27334475	-0.00034413	0.00021081	0.00034586	-0.00000115	0.00000000
+		-6.27334484	-0.00034409	0.00021078	0.00034582	-0.00000115	0.00000000
+		-6.27334493	-0.00034405	0.00021076	0.00034578	-0.00000115	0.00000000
+		-6.27334502	-0.00034401	0.00021073	0.00034574	-0.00000115	0.00000000
+		-6.27334511	-0.00034397	0.00021071	0.00034570	-0.00000115	0.00000000
+		-6.27334520	-0.00034394	0.00021069	0.00034566	-0.00000115	0.00000000
+		-6.27334529	-0.00034390	0.00021066	0.00034562	-0.00000115	0.00000000
+		-6.27334539	-0.00034386	0.00021064	0.00034559	-0.00000115	0.00000000
+		-6.27334548	-0.00034382	0.00021062	0.00034555	-0.00000115	0.00000000
+		-6.27334557	-0.00034378	0.00021059	0.00034551	-0.00000115	0.00000000
+		-6.27334566	-0.00034374	0.00021057	0.00034547	-0.00000115	0.00000000
+		-6.27334575	-0.00034371	0.00021055	0.00034543	-0.00000116	0.00000000
+		-6.27334584	-0.00034367	0.00021052	0.00034539	-0.00000116	0.00000000
+		-6.27334593	-0.00034363	0.00021050	0.00034536	-0.00000116	0.00000000
+		-6.27334603	-0.00034359	0.00021048	0.00034532	-0.00000116	0.00000000
+		-6.27334612	-0.00034355	0.00021045	0.00034528	-0.00000116	0.00000000
+		-6.27334621	-0.00034352	0.00021043	0.00034524	-0.00000116	0.00000000
+		-6.27334630	-0.00034348	0.00021041	0.00034520	-0.00000116	0.00000000
+		-6.27334639	-0.00034344	0.00021038	0.00034516	-0.00000116	0.00000000
+		-6.27334648	-0.00034340	0.00021036	0.00034513	-0.00000116	0.00000000
+		-6.27334657	-0.00034336	0.00021034	0.00034509	-0.00000116	0.00000000
+		-6.27334666	-0.00034333	0.00021031	0.00034505	-0.00000116	0.00000000
+		-6.27334676	-0.00034329	0.00021029	0.00034501	-0.00000116	0.00000000
+		-6.27334685	-0.00034325	0.00021027	0.00034497	-0.00000116	0.00000000
+		-6.27334694	-0.00034321	0.00021024	0.00034494	-0.00000116	0.00000000
+		-6.27334703	-0.00034317	0.00021022	0.00034490	-0.00000116	0.00000000
+		-6.27334712	-0.00034313	0.00021020	0.00034486	-0.00000116	0.00000000
+		-6.27334721	-0.00034310	0.00021017	0.00034482	-0.00000116	0.00000000
+		-6.27334730	-0.00034306	0.00021015	0.00034478	-0.00000116	0.00000000
+		-6.27334739	-0.00034302	0.00021013	0.00034474	-0.00000116	0.00000000
+		-6.27334748	-0.00034298	0.00021010	0.00034471	-0.00000116	0.00000000
+		-6.27334758	-0.00034294	0.00021008	0.00034467	-0.00000116	0.00000000
+		-6.27334767	-0.00034291	0.00021006	0.00034463	-0.00000116	0.00000000
+		-6.27334776	-0.00034287	0.00021003	0.00034459	-0.00000116	0.00000000
+		-6.27334785	-0.00034283	0.00021001	0.00034455	-0.00000116	0.00000000
+		-6.27334794	-0.00034279	0.00020999	0.00034451	-0.00000116	0.00000000
+		-6.27334803	-0.00034276	0.00020996	0.00034448	-0.00000116	0.00000000
+		-6.27334812	-0.00034272	0.00020994	0.00034444	-0.00000116	0.00000000
+		-6.27334821	-0.00034268	0.00020992	0.00034440	-0.00000116	0.00000000
+		-6.27334830	-0.00034264	0.00020989	0.00034436	-0.00000116	0.00000000
+		-6.27334839	-0.00034260	0.00020987	0.00034432	-0.00000116	0.00000000
+		-6.27334848	-0.00034257	0.00020985	0.00034429	-0.00000116	0.00000000
+		-6.27334857	-0.00034253	0.00020983	0.00034425	-0.00000116	0.00000000
+		-6.27334867	-0.00034249	0.00020980	0.00034421	-0.00000116	0.00000000
+		-6.27334876	-0.00034245	0.00020978	0.00034417	-0.00000116	0.00000000
+		-6.27334885	-0.00034241	0.00020976	0.00034413	-0.00000116	0.00000000
+		-6.27334894	-0.00034238	0.00020973	0.00034410	-0.00000116	0.00000000
+		-6.27334903	-0.00034234	0.00020971	0.00034406	-0.00000116	0.00000000
+		-6.27334912	-0.00034230	0.00020969	0.00034402	-0.00000116	0.00000000
+		-6.27334921	-0.00034226	0.00020966	0.00034398	-0.00000116	0.00000000
+		-6.27334930	-0.00034222	0.00020964	0.00034394	-0.00000116	0.00000000
+		-6.27334939	-0.00034219	0.00020962	0.00034391	-0.00000116	0.00000000
+		-6.27334948	-0.00034215	0.00020959	0.00034387	-0.00000116	0.00000000
+		-6.27334957	-0.00034211	0.00020957	0.00034383	-0.00000116	0.00000000
+		-6.27334966	-0.00034207	0.00020955	0.00034379	-0.00000116	0.00000000
+		-6.27334975	-0.00034204	0.00020952	0.00034375	-0.00000116	0.00000000
+		-6.27334984	-0.00034200	0.00020950	0.00034372	-0.00000116	0.00000000
+		-6.27334993	-0.00034196	0.00020948	0.00034368	-0.00000116	0.00000000
+		-6.27335002	-0.00034192	0.00020945	0.00034364	-0.00000116	0.00000000
+		-6.27335011	-0.00034188	0.00020943	0.00034360	-0.00000116	0.00000000
+		-6.27335021	-0.00034185	0.00020941	0.00034356	-0.00000116	0.00000000
+		-6.27335030	-0.00034181	0.00020938	0.00034353	-0.00000116	0.00000000
+		-6.27335039	-0.00034177	0.00020936	0.00034349	-0.00000116	0.00000000
+		-6.27335048	-0.00034173	0.00020934	0.00034345	-0.00000116	0.00000000
+		-6.27335057	-0.00034170	0.00020932	0.00034341	-0.00000116	0.00000000
+		-6.27335066	-0.00034166	0.00020929	0.00034337	-0.00000116	0.00000000
+		-6.27335075	-0.00034162	0.00020927	0.00034334	-0.00000116	0.00000000
+		-6.27335084	-0.00034158	0.00020925	0.00034330	-0.00000116	0.00000000
+		-6.27335093	-0.00034154	0.00020922	0.00034326	-0.00000116	0.00000000
+		-6.27335102	-0.00034151	0.00020920	0.00034322	-0.00000116	0.00000000
+		-6.27335111	-0.00034147	0.00020918	0.00034318	-0.00000116	0.00000000
+		-6.27335120	-0.00034143	0.00020915	0.00034315	-0.00000116	0.00000000
+		-6.27335129	-0.00034139	0.00020913	0.00034311	-0.00000116	0.00000000
+		-6.27335138	-0.00034136	0.00020911	0.00034307	-0.00000116	0.00000000
+		-6.27335147	-0.00034132	0.00020908	0.00034303	-0.00000116	0.00000000
+		-6.27335156	-0.00034128	0.00020906	0.00034300	-0.00000116	0.00000000
+		-6.27335165	-0.00034124	0.00020904	0.00034296	-0.00000116	0.00000000
+		-6.27335174	-0.00034121	0.00020902	0.00034292	-0.00000116	0.00000000
+		-6.27335183	-0.00034117	0.00020899	0.00034288	-0.00000116	0.00000000
+		-6.27335192	-0.00034113	0.00020897	0.00034284	-0.00000116	0.00000000
+		-6.27335201	-0.00034109	0.00020895	0.00034281	-0.00000116	0.00000000
+		-6.27335210	-0.00034106	0.00020892	0.00034277	-0.00000116	0.00000000
+		-6.27335219	-0.00034102	0.00020890	0.00034273	-0.00000116	0.00000000
+		-6.27335228	-0.00034098	0.00020888	0.00034269	-0.00000116	0.00000000
+		-6.27335237	-0.00034094	0.00020885	0.00034266	-0.00000116	0.00000000
+		-6.27335246	-0.00034091	0.00020883	0.00034262	-0.00000116	0.00000000
+		-6.27335255	-0.00034087	0.00020881	0.00034258	-0.00000116	0.00000000
+		-6.27335264	-0.00034083	0.00020878	0.00034254	-0.00000116	0.00000000
+		-6.27335273	-0.00034079	0.00020876	0.00034250	-0.00000116	0.00000000
+		-6.27335282	-0.00034076	0.00020874	0.00034247	-0.00000116	0.00000000
+		-6.27335291	-0.00034072	0.00020872	0.00034243	-0.00000116	0.00000000
+		-6.27335300	-0.00034068	0.00020869	0.00034239	-0.00000116	0.00000000
+		-6.27335309	-0.00034064	0.00020867	0.00034235	-0.00000116	0.00000000
+		-6.27335318	-0.00034061	0.00020865	0.00034232	-0.00000116	0.00000000
+		-6.27335327	-0.00034057	0.00020862	0.00034228	-0.00000116	0.00000000
+		-6.27335336	-0.00034053	0.00020860	0.00034224	-0.00000116	0.00000000
+		-6.27335345	-0.00034049	0.00020858	0.00034220	-0.00000116	0.00000000
+		-6.27335354	-0.00034046	0.00020856	0.00034217	-0.00000116	0.00000000
+		-6.27335363	-0.00034042	0.00020853	0.00034213	-0.00000116	0.00000000
+		-6.27335372	-0.00034038	0.00020851	0.00034209	-0.00000116	0.00000000
+		-6.27335380	-0.00034034	0.00020849	0.00034205	-0.00000116	0.00000000
+		-6.27335389	-0.00034031	0.00020846	0.00034201	-0.00000116	0.00000000
+		-6.27335398	-0.00034027	0.00020844	0.00034198	-0.00000116	0.00000000
+		-6.27335407	-0.00034023	0.00020842	0.00034194	-0.00000116	0.00000000
+		-6.27335416	-0.00034019	0.00020839	0.00034190	-0.00000116	0.00000000
+		-6.27335425	-0.00034016	0.00020837	0.00034186	-0.00000116	0.00000000
+		-6.27335434	-0.00034012	0.00020835	0.00034183	-0.00000116	0.00000000
+		-6.27335443	-0.00034008	0.00020833	0.00034179	-0.00000116	0.00000000
+		-6.27335452	-0.00034004	0.00020830	0.00034175	-0.00000116	0.00000000
+		-6.27335461	-0.00034001	0.00020828	0.00034171	-0.00000116	0.00000000
+		-6.27335470	-0.00033997	0.00020826	0.00034168	-0.00000116	0.00000000
+		-6.27335479	-0.00033993	0.00020823	0.00034164	-0.00000116	0.00000000
+		-6.27335488	-0.00033989	0.00020821	0.00034160	-0.00000116	0.00000000
+		-6.27335497	-0.00033986	0.00020819	0.00034156	-0.00000116	0.00000000
+		-6.27335506	-0.00033982	0.00020817	0.00034153	-0.00000116	0.00000000
+		-6.27335515	-0.00033978	0.00020814	0.00034149	-0.00000116	0.00000000
+		-6.27335524	-0.00033975	0.00020812	0.00034145	-0.00000116	0.00000000
+		-6.27335533	-0.00033971	0.00020810	0.00034141	-0.00000116	0.00000000
+		-6.27335541	-0.00033967	0.00020807	0.00034138	-0.00000116	0.00000000
+		-6.27335550	-0.00033963	0.00020805	0.00034134	-0.00000116	0.00000000
+		-6.27335559	-0.00033960	0.00020803	0.00034130	-0.00000116	0.00000000
+		-6.27335568	-0.00033956	0.00020801	0.00034126	-0.00000116	0.00000000
+		-6.27335577	-0.00033952	0.00020798	0.00034123	-0.00000116	0.00000000
+		-6.27335586	-0.00033948	0.00020796	0.00034119	-0.00000116	0.00000000
+		-6.27335595	-0.00033945	0.00020794	0.00034115	-0.00000116	0.00000000
+		-6.27335604	-0.00033941	0.00020791	0.00034111	-0.00000116	0.00000000
+		-6.27335613	-0.00033937	0.00020789	0.00034108	-0.00000116	0.00000000
+		-6.27335622	-0.00033934	0.00020787	0.00034104	-0.00000116	0.00000000
+		-6.27335631	-0.00033930	0.00020785	0.00034100	-0.00000116	0.00000000
+		-6.27335639	-0.00033926	0.00020782	0.00034097	-0.00000116	0.00000000
+		-6.27335648	-0.00033922	0.00020780	0.00034093	-0.00000116	0.00000000
+		-6.27335657	-0.00033919	0.00020778	0.00034089	-0.00000116	0.00000000
+		-6.27335666	-0.00033915	0.00020776	0.00034085	-0.00000116	0.00000000
+		-6.27335675	-0.00033911	0.00020773	0.00034082	-0.00000116	0.00000000
+		-6.27335684	-0.00033908	0.00020771	0.00034078	-0.00000116	0.00000000
+		-6.27335693	-0.00033904	0.00020769	0.00034074	-0.00000116	0.00000000
+		-6.27335702	-0.00033900	0.00020766	0.00034070	-0.00000116	0.00000000
+		-6.27335711	-0.00033896	0.00020764	0.00034067	-0.00000116	0.00000000
+		-6.27335720	-0.00033893	0.00020762	0.00034063	-0.00000116	0.00000000
+		-6.27335728	-0.00033889	0.00020760	0.00034059	-0.00000116	0.00000000
+		-6.27335737	-0.00033885	0.00020757	0.00034055	-0.00000116	0.00000000
+		-6.27335746	-0.00033882	0.00020755	0.00034052	-0.00000116	0.00000000
+		-6.27335755	-0.00033878	0.00020753	0.00034048	-0.00000116	0.00000000
+		-6.27335764	-0.00033874	0.00020751	0.00034044	-0.00000116	0.00000000
+		-6.27335773	-0.00033870	0.00020748	0.00034041	-0.00000116	0.00000000
+		-6.27335782	-0.00033867	0.00020746	0.00034037	-0.00000116	0.00000000
+		-6.27335791	-0.00033863	0.00020744	0.00034033	-0.00000116	0.00000000
+		-6.27335799	-0.00033859	0.00020741	0.00034029	-0.00000116	0.00000000
+		-6.27335808	-0.00033856	0.00020739	0.00034026	-0.00000116	0.00000000
+		-6.27335817	-0.00033852	0.00020737	0.00034022	-0.00000116	0.00000000
+		-6.27335826	-0.00033848	0.00020735	0.00034018	-0.00000116	0.00000000
+		-6.27335835	-0.00033845	0.00020732	0.00034015	-0.00000116	0.00000000
+		-6.27335844	-0.00033841	0.00020730	0.00034011	-0.00000116	0.00000000
+		-6.27335853	-0.00033837	0.00020728	0.00034007	-0.00000116	0.00000000
+		-6.27335861	-0.00033833	0.00020726	0.00034003	-0.00000116	0.00000000
+		-6.27335870	-0.00033830	0.00020723	0.00034000	-0.00000116	0.00000000
+		-6.27335879	-0.00033826	0.00020721	0.00033996	-0.00000116	0.00000000
+		-6.27335888	-0.00033822	0.00020719	0.00033992	-0.00000116	0.00000000
+		-6.27335897	-0.00033819	0.00020716	0.00033988	-0.00000116	0.00000000
+		-6.27335906	-0.00033815	0.00020714	0.00033985	-0.00000116	0.00000000
+		-6.27335915	-0.00033811	0.00020712	0.00033981	-0.00000116	0.00000000
+		-6.27335923	-0.00033808	0.00020710	0.00033977	-0.00000116	0.00000000
+		-6.27335932	-0.00033804	0.00020707	0.00033974	-0.00000116	0.00000000
+		-6.27335941	-0.00033800	0.00020705	0.00033970	-0.00000116	0.00000000
+		-6.27335950	-0.00033797	0.00020703	0.00033966	-0.00000116	0.00000000
+		-6.27335959	-0.00033793	0.00020701	0.00033963	-0.00000116	0.00000000
+		-6.27335968	-0.00033789	0.00020698	0.00033959	-0.00000116	0.00000000
+		-6.27335976	-0.00033785	0.00020696	0.00033955	-0.00000116	0.00000000
+		-6.27335985	-0.00033782	0.00020694	0.00033951	-0.00000116	0.00000000
+		-6.27335994	-0.00033778	0.00020692	0.00033948	-0.00000116	0.00000000
+		-6.27336003	-0.00033774	0.00020689	0.00033944	-0.00000116	0.00000000
+		-6.27336012	-0.00033771	0.00020687	0.00033940	-0.00000116	0.00000000
+		-6.27336021	-0.00033767	0.00020685	0.00033937	-0.00000116	0.00000000
+		-6.27336029	-0.00033763	0.00020683	0.00033933	-0.00000116	0.00000000
+		-6.27336038	-0.00033760	0.00020680	0.00033929	-0.00000116	0.00000000
+		-6.27336047	-0.00033756	0.00020678	0.00033925	-0.00000116	0.00000000
+		-6.27336056	-0.00033752	0.00020676	0.00033922	-0.00000116	0.00000000
+		-6.27336065	-0.00033749	0.00020674	0.00033918	-0.00000116	0.00000000
+		-6.27336073	-0.00033745	0.00020671	0.00033914	-0.00000116	0.00000000
+		-6.27336082	-0.00033741	0.00020669	0.00033911	-0.00000116	0.00000000
+		-6.27336091	-0.00033738	0.00020667	0.00033907	-0.00000116	0.00000000
+		-6.27336100	-0.00033734	0.00020665	0.00033903	-0.00000116	0.00000000
+		-6.27336109	-0.00033730	0.00020662	0.00033900	-0.00000116	0.00000000
+		-6.27336117	-0.00033727	0.00020660	0.00033896	-0.00000116	0.00000000
+		-6.27336126	-0.00033723	0.00020658	0.00033892	-0.00000116	0.00000000
+		-6.27336135	-0.00033719	0.00020656	0.00033889	-0.00000116	0.00000000
+		-6.27336144	-0.00033716	0.00020653	0.00033885	-0.00000116	0.00000000
+		-6.27336153	-0.00033712	0.00020651	0.00033881	-0.00000116	0.00000000
+		-6.27336161	-0.00033708	0.00020649	0.00033877	-0.00000116	0.00000000
+		-6.27336170	-0.00033705	0.00020647	0.00033874	-0.00000116	0.00000000
+		-6.27336179	-0.00033701	0.00020644	0.00033870	-0.00000116	0.00000000
+		-6.27336188	-0.00033697	0.00020642	0.00033866	-0.00000116	0.00000000
+		-6.27336197	-0.00033694	0.00020640	0.00033863	-0.00000116	0.00000000
+		-6.27336205	-0.00033690	0.00020638	0.00033859	-0.00000116	0.00000000
+		-6.27336214	-0.00033686	0.00020635	0.00033855	-0.00000116	0.00000000
+		-6.27336223	-0.00033683	0.00020633	0.00033852	-0.00000116	0.00000000
+		-6.27336232	-0.00033679	0.00020631	0.00033848	-0.00000116	0.00000000
+		-6.27336240	-0.00033675	0.00020629	0.00033844	-0.00000116	0.00000000
+		-6.27336249	-0.00033672	0.00020626	0.00033841	-0.00000116	0.00000000
+		-6.27336258	-0.00033668	0.00020624	0.00033837	-0.00000116	0.00000000
+		-6.27336267	-0.00033664	0.00020622	0.00033833	-0.00000116	0.00000000
+		-6.27336275	-0.00033661	0.00020620	0.00033830	-0.00000116	0.00000000
+		-6.27336284	-0.00033657	0.00020617	0.00033826	-0.00000116	0.00000000
+		-6.27336293	-0.00033653	0.00020615	0.00033822	-0.00000116	0.00000000
+		-6.27336302	-0.00033650	0.00020613	0.00033819	-0.00000116	0.00000000
+		-6.27336311	-0.00033646	0.00020611	0.00033815	-0.00000116	0.00000000
+		-6.27336319	-0.00033642	0.00020608	0.00033811	-0.00000116	0.00000000
+		-6.27336328	-0.00033639	0.00020606	0.00033808	-0.00000116	0.00000000
+		-6.27336337	-0.00033635	0.00020604	0.00033804	-0.00000116	0.00000000
+		-6.27336346	-0.00033631	0.00020602	0.00033800	-0.00000116	0.00000000
+		-6.27336354	-0.00033628	0.00020599	0.00033796	-0.00000116	0.00000000
+		-6.27336363	-0.00033624	0.00020597	0.00033793	-0.00000116	0.00000000
+		-6.27336372	-0.00033620	0.00020595	0.00033789	-0.00000116	0.00000000
+		-6.27336381	-0.00033617	0.00020593	0.00033785	-0.00000116	0.00000000
+		-6.27336389	-0.00033613	0.00020590	0.00033782	-0.00000116	0.00000000
+		-6.27336398	-0.00033609	0.00020588	0.00033778	-0.00000116	0.00000000
+		-6.27336407	-0.00033606	0.00020586	0.00033774	-0.00000116	0.00000000
+		-6.27336415	-0.00033602	0.00020584	0.00033771	-0.00000116	0.00000000
+		-6.27336424	-0.00033598	0.00020582	0.00033767	-0.00000116	0.00000000
+		-6.27336433	-0.00033595	0.00020579	0.00033763	-0.00000116	0.00000000
+		-6.27336442	-0.00033591	0.00020577	0.00033760	-0.00000116	0.00000000
+		-6.27336450	-0.00033587	0.00020575	0.00033756	-0.00000116	0.00000000
+		-6.27336459	-0.00033584	0.00020573	0.00033752	-0.00000116	0.00000000
+		-6.27336468	-0.00033580	0.00020570	0.00033749	-0.00000116	0.00000000
+		-6.27336477	-0.00033577	0.00020568	0.00033745	-0.00000116	0.00000000
+		-6.27336485	-0.00033573	0.00020566	0.00033742	-0.00000116	0.00000000
+		-6.27336494	-0.00033569	0.00020564	0.00033738	-0.00000116	0.00000000
+		-6.27336503	-0.00033566	0.00020561	0.00033734	-0.00000116	0.00000000
+		-6.27336511	-0.00033562	0.00020559	0.00033731	-0.00000116	0.00000000
+		-6.27336520	-0.00033558	0.00020557	0.00033727	-0.00000116	0.00000000
+		-6.27336529	-0.00033555	0.00020555	0.00033723	-0.00000116	0.00000000
+		-6.27336538	-0.00033551	0.00020553	0.00033720	-0.00000116	0.00000000
+		-6.27336546	-0.00033547	0.00020550	0.00033716	-0.00000116	0.00000000
+		-6.27336555	-0.00033544	0.00020548	0.00033712	-0.00000116	0.00000000
+		-6.27336564	-0.00033540	0.00020546	0.00033709	-0.00000116	0.00000000
+		-6.27336572	-0.00033537	0.00020544	0.00033705	-0.00000116	0.00000000
+		-6.27336581	-0.00033533	0.00020541	0.00033701	-0.00000116	0.00000000
+		-6.27336590	-0.00033529	0.00020539	0.00033698	-0.00000116	0.00000000
+		-6.27336598	-0.00033526	0.00020537	0.00033694	-0.00000116	0.00000000
+		-6.27336607	-0.00033522	0.00020535	0.00033690	-0.00000116	0.00000000
+		-6.27336616	-0.00033518	0.00020532	0.00033687	-0.00000116	0.00000000
+		-6.27336625	-0.00033515	0.00020530	0.00033683	-0.00000116	0.00000000
+		-6.27336633	-0.00033511	0.00020528	0.00033679	-0.00000116	0.00000000
+		-6.27336642	-0.00033508	0.00020526	0.00033676	-0.00000116	0.00000000
+		-6.27336651	-0.00033504	0.00020524	0.00033672	-0.00000116	0.00000000
+		-6.27336659	-0.00033500	0.00020521	0.00033668	-0.00000116	0.00000000
+		-6.27336668	-0.00033497	0.00020519	0.00033665	-0.00000116	0.00000000
+		-6.27336677	-0.00033493	0.00020517	0.00033661	-0.00000116	0.00000000
+		-6.27336685	-0.00033489	0.00020515	0.00033658	-0.00000116	0.00000000
+		-6.27336694	-0.00033486	0.00020512	0.00033654	-0.00000116	0.00000000
+		-6.27336703	-0.00033482	0.00020510	0.00033650	-0.00000116	0.00000000
+		-6.27336711	-0.00033479	0.00020508	0.00033647	-0.00000116	0.00000000
+		-6.27336720	-0.00033475	0.00020506	0.00033643	-0.00000116	0.00000000
+		-6.27336729	-0.00033471	0.00020504	0.00033639	-0.00000116	0.00000000
+		-6.27336737	-0.00033468	0.00020501	0.00033636	-0.00000116	0.00000000
+		-6.27336746	-0.00033464	0.00020499	0.00033632	-0.00000116	0.00000000
+		-6.27336755	-0.00033460	0.00020497	0.00033628	-0.00000116	0.00000000
+		-6.27336763	-0.00033457	0.00020495	0.00033625	-0.00000116	0.00000000
+		-6.27336772	-0.00033453	0.00020493	0.00033621	-0.00000116	0.00000000
+		-6.27336781	-0.00033450	0.00020490	0.00033618	-0.00000116	0.00000000
+		-6.27336789	-0.00033446	0.00020488	0.00033614	-0.00000116	0.00000000
+		-6.27336798	-0.00033442	0.00020486	0.00033610	-0.00000116	0.00000000
+		-6.27336807	-0.00033439	0.00020484	0.00033607	-0.00000116	0.00000000
+		-6.27336815	-0.00033435	0.00020481	0.00033603	-0.00000116	0.00000000
+		-6.27336824	-0.00033432	0.00020479	0.00033599	-0.00000116	0.00000000
+		-6.27336833	-0.00033428	0.00020477	0.00033596	-0.00000116	0.00000000
+		-6.27336841	-0.00033424	0.00020475	0.00033592	-0.00000116	0.00000000
+		-6.27336850	-0.00033421	0.00020473	0.00033588	-0.00000116	0.00000000
+		-6.27336858	-0.00033417	0.00020470	0.00033585	-0.00000116	0.00000000
+		-6.27336867	-0.00033413	0.00020468	0.00033581	-0.00000116	0.00000000
+		-6.27336876	-0.00033410	0.00020466	0.00033578	-0.00000116	0.00000000
+		-6.27336884	-0.00033406	0.00020464	0.00033574	-0.00000116	0.00000000
+		-6.27336893	-0.00033403	0.00020462	0.00033570	-0.00000116	0.00000000
+		-6.27336902	-0.00033399	0.00020459	0.00033567	-0.00000116	0.00000000
+		-6.27336910	-0.00033395	0.00020457	0.00033563	-0.00000116	0.00000000
+		-6.27336919	-0.00033392	0.00020455	0.00033559	-0.00000116	0.00000000
+		-6.27336927	-0.00033388	0.00020453	0.00033556	-0.00000116	0.00000000
+		-6.27336936	-0.00033385	0.00020451	0.00033552	-0.00000116	0.00000000
+		-6.27336945	-0.00033381	0.00020448	0.00033549	-0.00000116	0.00000000
+		-6.27336953	-0.00033377	0.00020446	0.00033545	-0.00000116	0.00000000
+		-6.27336962	-0.00033374	0.00020444	0.00033541	-0.00000116	0.00000000
+		-6.27336971	-0.00033370	0.00020442	0.00033538	-0.00000116	0.00000000
+		-6.27336979	-0.00033367	0.00020439	0.00033534	-0.00000116	0.00000000
+		-6.27336988	-0.00033363	0.00020437	0.00033531	-0.00000116	0.00000000
+		-6.27336996	-0.00033359	0.00020435	0.00033527	-0.00000116	0.00000000
+		-6.27337005	-0.00033356	0.00020433	0.00033523	-0.00000116	0.00000000
+		-6.27337014	-0.00033352	0.00020431	0.00033520	-0.00000116	0.00000000
+		-6.27337022	-0.00033349	0.00020428	0.00033516	-0.00000116	0.00000000
+		-6.27337031	-0.00033345	0.00020426	0.00033513	-0.00000116	0.00000000
+		-6.27337039	-0.00033342	0.00020424	0.00033509	-0.00000116	0.00000000
+		-6.27337048	-0.00033338	0.00020422	0.00033505	-0.00000116	0.00000000
+		-6.27337057	-0.00033334	0.00020420	0.00033502	-0.00000116	0.00000000
+		-6.27337065	-0.00033331	0.00020417	0.00033498	-0.00000116	0.00000000
+		-6.27337074	-0.00033327	0.00020415	0.00033494	-0.00000116	0.00000000
+		-6.27337082	-0.00033324	0.00020413	0.00033491	-0.00000116	0.00000000
+		-6.27337091	-0.00033320	0.00020411	0.00033487	-0.00000116	0.00000000
+		-6.27337100	-0.00033316	0.00020409	0.00033484	-0.00000116	0.00000000
+		-6.27337108	-0.00033313	0.00020406	0.00033480	-0.00000116	0.00000000
+		-6.27337117	-0.00033309	0.00020404	0.00033476	-0.00000116	0.00000000
+		-6.27337125	-0.00033306	0.00020402	0.00033473	-0.00000116	0.00000000
+		-6.27337134	-0.00033302	0.00020400	0.00033469	-0.00000116	0.00000000
+		-6.27337142	-0.00033298	0.00020398	0.00033466	-0.00000116	0.00000000
+		-6.27337151	-0.00033295	0.00020395	0.00033462	-0.00000116	0.00000000
+		-6.27337160	-0.00033291	0.00020393	0.00033458	-0.00000116	0.00000000
+		-6.27337168	-0.00033288	0.00020391	0.00033455	-0.00000116	0.00000000
+		-6.27337177	-0.00033284	0.00020389	0.00033451	-0.00000116	0.00000000
+		-6.27337185	-0.00033281	0.00020387	0.00033448	-0.00000116	0.00000000
+		-6.27337194	-0.00033277	0.00020385	0.00033444	-0.00000116	0.00000000
+		-6.27337202	-0.00033273	0.00020382	0.00033440	-0.00000116	0.00000000
+		-6.27337211	-0.00033270	0.00020380	0.00033437	-0.00000116	0.00000000
+		-6.27337220	-0.00033266	0.00020378	0.00033433	-0.00000116	0.00000000
+		-6.27337228	-0.00033263	0.00020376	0.00033430	-0.00000116	0.00000000
+		-6.27337237	-0.00033259	0.00020374	0.00033426	-0.00000116	0.00000000
+		-6.27337245	-0.00033256	0.00020371	0.00033422	-0.00000116	0.00000000
+		-6.27337254	-0.00033252	0.00020369	0.00033419	-0.00000116	0.00000000
+		-6.27337262	-0.00033248	0.00020367	0.00033415	-0.00000116	0.00000000
+		-6.27337271	-0.00033245	0.00020365	0.00033412	-0.00000116	0.00000000
+		-6.27337279	-0.00033241	0.00020363	0.00033408	-0.00000116	0.00000000
+		-6.27337288	-0.00033238	0.00020360	0.00033405	-0.00000116	0.00000000
+		-6.27337297	-0.00033234	0.00020358	0.00033401	-0.00000116	0.00000000
+		-6.27337305	-0.00033231	0.00020356	0.00033397	-0.00000116	0.00000000
+		-6.27337314	-0.00033227	0.00020354	0.00033394	-0.00000116	0.00000000
+		-6.27337322	-0.00033223	0.00020352	0.00033390	-0.00000116	0.00000000
+		-6.27337331	-0.00033220	0.00020350	0.00033387	-0.00000116	0.00000000
+		-6.27337339	-0.00033216	0.00020347	0.00033383	-0.00000116	0.00000000
+		-6.27337348	-0.00033213	0.00020345	0.00033379	-0.00000116	0.00000000
+		-6.27337356	-0.00033209	0.00020343	0.00033376	-0.00000116	0.00000000
+		-6.27337365	-0.00033206	0.00020341	0.00033372	-0.00000116	0.00000000
+		-6.27337373	-0.00033202	0.00020339	0.00033369	-0.00000116	0.00000000
+		-6.27337382	-0.00033198	0.00020336	0.00033365	-0.00000116	0.00000000
+		-6.27337390	-0.00033195	0.00020334	0.00033362	-0.00000116	0.00000000
+		-6.27337399	-0.00033191	0.00020332	0.00033358	-0.00000116	0.00000000
+		-6.27337407	-0.00033188	0.00020330	0.00033354	-0.00000116	0.00000000
+		-6.27337416	-0.00033184	0.00020328	0.00033351	-0.00000116	0.00000000
+		-6.27337425	-0.00033181	0.00020326	0.00033347	-0.00000116	0.00000000
+		-6.27337433	-0.00033177	0.00020323	0.00033344	-0.00000116	0.00000000
+		-6.27337442	-0.00033174	0.00020321	0.00033340	-0.00000116	0.00000000
+		-6.27337450	-0.00033170	0.00020319	0.00033337	-0.00000116	0.00000000
+		-6.27337459	-0.00033166	0.00020317	0.00033333	-0.00000116	0.00000000
+		-6.27337467	-0.00033163	0.00020315	0.00033329	-0.00000116	0.00000000
+		-6.27337476	-0.00033159	0.00020312	0.00033326	-0.00000116	0.00000000
+		-6.27337484	-0.00033156	0.00020310	0.00033322	-0.00000116	0.00000000
+		-6.27337493	-0.00033152	0.00020308	0.00033319	-0.00000116	0.00000000
+		-6.27337501	-0.00033149	0.00020306	0.00033315	-0.00000116	0.00000000
+		-6.27337510	-0.00033145	0.00020304	0.00033312	-0.00000116	0.00000000
+		-6.27337518	-0.00033142	0.00020302	0.00033308	-0.00000116	0.00000000
+		-6.27337527	-0.00033138	0.00020299	0.00033304	-0.00000116	0.00000000
+		-6.27337535	-0.00033135	0.00020297	0.00033301	-0.00000116	0.00000000
+		-6.27337544	-0.00033131	0.00020295	0.00033297	-0.00000116	0.00000000
+		-6.27337552	-0.00033127	0.00020293	0.00033294	-0.00000116	0.00000000
+		-6.27337561	-0.00033124	0.00020291	0.00033290	-0.00000116	0.00000000
+		-6.27337569	-0.00033120	0.00020289	0.00033287	-0.00000116	0.00000000
+		-6.27337578	-0.00033117	0.00020286	0.00033283	-0.00000116	0.00000000
+		-6.27337586	-0.00033113	0.00020284	0.00033279	-0.00000116	0.00000000
+		-6.27337594	-0.00033110	0.00020282	0.00033276	-0.00000116	0.00000000
+		-6.27337603	-0.00033106	0.00020280	0.00033272	-0.00000116	0.00000000
+		-6.27337611	-0.00033103	0.00020278	0.00033269	-0.00000116	0.00000000
+		-6.27337620	-0.00033099	0.00020275	0.00033265	-0.00000116	0.00000000
+		-6.27337628	-0.00033096	0.00020273	0.00033262	-0.00000116	0.00000000
+		-6.27337637	-0.00033092	0.00020271	0.00033258	-0.00000116	0.00000000
+		-6.27337645	-0.00033088	0.00020269	0.00033255	-0.00000116	0.00000000
+		-6.27337654	-0.00033085	0.00020267	0.00033251	-0.00000116	0.00000000
+		-6.27337662	-0.00033081	0.00020265	0.00033247	-0.00000116	0.00000000
+		-6.27337671	-0.00033078	0.00020262	0.00033244	-0.00000116	0.00000000
+		-6.27337679	-0.00033074	0.00020260	0.00033240	-0.00000116	0.00000000
+		-6.27337688	-0.00033071	0.00020258	0.00033237	-0.00000116	0.00000000
+		-6.27337696	-0.00033067	0.00020256	0.00033233	-0.00000116	0.00000000
+		-6.27337705	-0.00033064	0.00020254	0.00033230	-0.00000116	0.00000000
+		-6.27337713	-0.00033060	0.00020252	0.00033226	-0.00000116	0.00000000
+		-6.27337721	-0.00033057	0.00020250	0.00033223	-0.00000116	0.00000000
+		-6.27337730	-0.00033053	0.00020247	0.00033219	-0.00000116	0.00000000
+		-6.27337738	-0.00033050	0.00020245	0.00033216	-0.00000116	0.00000000
+		-6.27337747	-0.00033046	0.00020243	0.00033212	-0.00000116	0.00000000
+		-6.27337755	-0.00033043	0.00020241	0.00033208	-0.00000116	0.00000000
+		-6.27337764	-0.00033039	0.00020239	0.00033205	-0.00000116	0.00000000
+		-6.27337772	-0.00033035	0.00020237	0.00033201	-0.00000116	0.00000000
+		-6.27337781	-0.00033032	0.00020234	0.00033198	-0.00000116	0.00000000
+		-6.27337789	-0.00033028	0.00020232	0.00033194	-0.00000116	0.00000000
+		-6.27337797	-0.00033025	0.00020230	0.00033191	-0.00000116	0.00000000
+		-6.27337806	-0.00033021	0.00020228	0.00033187	-0.00000116	0.00000000
+		-6.27337814	-0.00033018	0.00020226	0.00033184	-0.00000116	0.00000000
+		-6.27337823	-0.00033014	0.00020224	0.00033180	-0.00000116	0.00000000
+		-6.27337831	-0.00033011	0.00020221	0.00033177	-0.00000116	0.00000000
+		-6.27337840	-0.00033007	0.00020219	0.00033173	-0.00000116	0.00000000
+		-6.27337848	-0.00033004	0.00020217	0.00033169	-0.00000116	0.00000000
+		-6.27337856	-0.00033000	0.00020215	0.00033166	-0.00000116	0.00000000
+		-6.27337865	-0.00032997	0.00020213	0.00033162	-0.00000116	0.00000000
+		-6.27337873	-0.00032993	0.00020211	0.00033159	-0.00000116	0.00000000
+		-6.27337882	-0.00032990	0.00020208	0.00033155	-0.00000116	0.00000000
+		-6.27337890	-0.00032986	0.00020206	0.00033152	-0.00000116	0.00000000
+		-6.27337899	-0.00032983	0.00020204	0.00033148	-0.00000116	0.00000000
+		-6.27337907	-0.00032979	0.00020202	0.00033145	-0.00000116	0.00000000
+		-6.27337915	-0.00032976	0.00020200	0.00033141	-0.00000116	0.00000000
+		-6.27337924	-0.00032972	0.00020198	0.00033138	-0.00000116	0.00000000
+		-6.27337932	-0.00032969	0.00020196	0.00033134	-0.00000116	0.00000000
+		-6.27337941	-0.00032965	0.00020193	0.00033131	-0.00000116	0.00000000
+		-6.27337949	-0.00032962	0.00020191	0.00033127	-0.00000116	0.00000000
+		-6.27337957	-0.00032958	0.00020189	0.00033124	-0.00000116	0.00000000
+		-6.27337966	-0.00032955	0.00020187	0.00033120	-0.00000116	0.00000000
+		-6.27337974	-0.00032951	0.00020185	0.00033116	-0.00000116	0.00000000
+		-6.27337983	-0.00032948	0.00020183	0.00033113	-0.00000116	0.00000000
+		-6.27337991	-0.00032944	0.00020181	0.00033109	-0.00000116	0.00000000
+		-6.27337999	-0.00032941	0.00020178	0.00033106	-0.00000116	0.00000000
+		-6.27338008	-0.00032937	0.00020176	0.00033102	-0.00000116	0.00000000
+		-6.27338016	-0.00032934	0.00020174	0.00033099	-0.00000116	0.00000000
+		-6.27338025	-0.00032930	0.00020172	0.00033095	-0.00000116	0.00000000
+		-6.27338033	-0.00032927	0.00020170	0.00033092	-0.00000116	0.00000000
+		-6.27338041	-0.00032923	0.00020168	0.00033088	-0.00000116	0.00000000
+		-6.27338050	-0.00032920	0.00020165	0.00033085	-0.00000116	0.00000000
+		-6.27338058	-0.00032916	0.00020163	0.00033081	-0.00000116	0.00000000
+		-6.27338067	-0.00032913	0.00020161	0.00033078	-0.00000116	0.00000000
+		-6.27338075	-0.00032909	0.00020159	0.00033074	-0.00000116	0.00000000
+		-6.27338083	-0.00032906	0.00020157	0.00033071	-0.00000116	0.00000000
+		-6.27338092	-0.00032902	0.00020155	0.00033067	-0.00000116	0.00000000
+		-6.27338100	-0.00032899	0.00020153	0.00033064	-0.00000116	0.00000000
+		-6.27338108	-0.00032895	0.00020150	0.00033060	-0.00000116	0.00000000
+		-6.27338117	-0.00032892	0.00020148	0.00033057	-0.00000116	0.00000000
+		-6.27338125	-0.00032888	0.00020146	0.00033053	-0.00000116	0.00000000
+		-6.27338134	-0.00032885	0.00020144	0.00033050	-0.00000116	0.00000000
+		-6.27338142	-0.00032881	0.00020142	0.00033046	-0.00000116	0.00000000
+		-6.27338150	-0.00032878	0.00020140	0.00033043	-0.00000116	0.00000000
+		-6.27338159	-0.00032874	0.00020138	0.00033039	-0.00000116	0.00000000
+		-6.27338167	-0.00032871	0.00020135	0.00033036	-0.00000116	0.00000000
+		-6.27338175	-0.00032867	0.00020133	0.00033032	-0.00000116	0.00000000
+		-6.27338184	-0.00032864	0.00020131	0.00033029	-0.00000116	0.00000000
+		-6.27338192	-0.00032860	0.00020129	0.00033025	-0.00000116	0.00000000
+		-6.27338200	-0.00032857	0.00020127	0.00033022	-0.00000116	0.00000000
+		-6.27338209	-0.00032853	0.00020125	0.00033018	-0.00000116	0.00000000
+		-6.27338217	-0.00032850	0.00020123	0.00033015	-0.00000116	0.00000000
+		-6.27338225	-0.00032846	0.00020121	0.00033011	-0.00000116	0.00000000
+		-6.27338234	-0.00032843	0.00020118	0.00033008	-0.00000116	0.00000000
+		-6.27338242	-0.00032839	0.00020116	0.00033004	-0.00000116	0.00000000
+		-6.27338250	-0.00032836	0.00020114	0.00033001	-0.00000116	0.00000000
+		-6.27338259	-0.00032832	0.00020112	0.00032997	-0.00000116	0.00000000
+		-6.27338267	-0.00032829	0.00020110	0.00032994	-0.00000116	0.00000000
+		-6.27338275	-0.00032825	0.00020108	0.00032990	-0.00000116	0.00000000
+		-6.27338284	-0.00032822	0.00020106	0.00032987	-0.00000116	0.00000000
+		-6.27338292	-0.00032818	0.00020103	0.00032983	-0.00000116	0.00000000
+		-6.27338300	-0.00032815	0.00020101	0.00032980	-0.00000116	0.00000000
+		-6.27338309	-0.00032811	0.00020099	0.00032976	-0.00000116	0.00000000
+		-6.27338317	-0.00032808	0.00020097	0.00032973	-0.00000116	0.00000000
+		-6.27338325	-0.00032804	0.00020095	0.00032969	-0.00000116	0.00000000
+		-6.27338334	-0.00032801	0.00020093	0.00032966	-0.00000116	0.00000000
+		-6.27338342	-0.00032797	0.00020091	0.00032962	-0.00000116	0.00000000
+		-6.27338350	-0.00032794	0.00020089	0.00032959	-0.00000116	0.00000000
+		-6.27338359	-0.00032791	0.00020086	0.00032955	-0.00000116	0.00000000
+		-6.27338367	-0.00032787	0.00020084	0.00032952	-0.00000116	0.00000000
+		-6.27338375	-0.00032784	0.00020082	0.00032948	-0.00000116	0.00000000
+		-6.27338384	-0.00032780	0.00020080	0.00032945	-0.00000116	0.00000000
+		-6.27338392	-0.00032777	0.00020078	0.00032941	-0.00000116	0.00000000
+		-6.27338400	-0.00032773	0.00020076	0.00032938	-0.00000116	0.00000000
+		-6.27338409	-0.00032770	0.00020074	0.00032934	-0.00000116	0.00000000
+		-6.27338417	-0.00032766	0.00020072	0.00032931	-0.00000116	0.00000000
+		-6.27338425	-0.00032763	0.00020069	0.00032927	-0.00000116	0.00000000
+		-6.27338433	-0.00032759	0.00020067	0.00032924	-0.00000116	0.00000000
+		-6.27338442	-0.00032756	0.00020065	0.00032920	-0.00000116	0.00000000
+		-6.27338450	-0.00032752	0.00020063	0.00032917	-0.00000116	0.00000000
+		-6.27338458	-0.00032749	0.00020061	0.00032913	-0.00000116	0.00000000
+		-6.27338467	-0.00032745	0.00020059	0.00032910	-0.00000116	0.00000000
+		-6.27338475	-0.00032742	0.00020057	0.00032906	-0.00000116	0.00000000
+		-6.27338483	-0.00032739	0.00020055	0.00032903	-0.00000116	0.00000000
+		-6.27338492	-0.00032735	0.00020052	0.00032899	-0.00000116	0.00000000
+		-6.27338500	-0.00032732	0.00020050	0.00032896	-0.00000116	0.00000000
+		-6.27338508	-0.00032728	0.00020048	0.00032892	-0.00000116	0.00000000
+		-6.27338516	-0.00032725	0.00020046	0.00032889	-0.00000116	0.00000000
+		-6.27338525	-0.00032721	0.00020044	0.00032885	-0.00000116	0.00000000
+		-6.27338533	-0.00032718	0.00020042	0.00032882	-0.00000116	0.00000000
+		-6.27338541	-0.00032714	0.00020040	0.00032878	-0.00000116	0.00000000
+		-6.27338550	-0.00032711	0.00020038	0.00032875	-0.00000116	0.00000000
+		-6.27338558	-0.00032707	0.00020035	0.00032872	-0.00000116	0.00000000
+		-6.27338566	-0.00032704	0.00020033	0.00032868	-0.00000116	0.00000000
+		-6.27338574	-0.00032700	0.00020031	0.00032865	-0.00000116	0.00000000
+		-6.27338583	-0.00032697	0.00020029	0.00032861	-0.00000116	0.00000000
+		-6.27338591	-0.00032694	0.00020027	0.00032858	-0.00000116	0.00000000
+		-6.27338599	-0.00032690	0.00020025	0.00032854	-0.00000116	0.00000000
+		-6.27338607	-0.00032687	0.00020023	0.00032851	-0.00000116	0.00000000
+		-6.27338616	-0.00032683	0.00020021	0.00032847	-0.00000116	0.00000000
+		-6.27338624	-0.00032680	0.00020019	0.00032844	-0.00000116	0.00000000
+		-6.27338632	-0.00032676	0.00020016	0.00032840	-0.00000116	0.00000000
+		-6.27338640	-0.00032673	0.00020014	0.00032837	-0.00000116	0.00000000
+		-6.27338649	-0.00032669	0.00020012	0.00032833	-0.00000116	0.00000000
+		-6.27338657	-0.00032666	0.00020010	0.00032830	-0.00000116	0.00000000
+		-6.27338665	-0.00032663	0.00020008	0.00032826	-0.00000116	0.00000000
+		-6.27338674	-0.00032659	0.00020006	0.00032823	-0.00000116	0.00000000
+		-6.27338682	-0.00032656	0.00020004	0.00032820	-0.00000116	0.00000000
+		-6.27338690	-0.00032652	0.00020002	0.00032816	-0.00000116	0.00000000
+		-6.27338698	-0.00032649	0.00020000	0.00032813	-0.00000116	0.00000000
+		-6.27338706	-0.00032645	0.00019997	0.00032809	-0.00000116	0.00000000
+		-6.27338715	-0.00032642	0.00019995	0.00032806	-0.00000116	0.00000000
+		-6.27338723	-0.00032638	0.00019993	0.00032802	-0.00000116	0.00000000
+		-6.27338731	-0.00032635	0.00019991	0.00032799	-0.00000116	0.00000000
+		-6.27338739	-0.00032632	0.00019989	0.00032795	-0.00000116	0.00000000
+		-6.27338748	-0.00032628	0.00019987	0.00032792	-0.00000116	0.00000000
+		-6.27338756	-0.00032625	0.00019985	0.00032788	-0.00000116	0.00000000
+		-6.27338764	-0.00032621	0.00019983	0.00032785	-0.00000116	0.00000000
+		-6.27338772	-0.00032618	0.00019981	0.00032781	-0.00000116	0.00000000
+		-6.27338781	-0.00032614	0.00019978	0.00032778	-0.00000116	0.00000000
+		-6.27338789	-0.00032611	0.00019976	0.00032775	-0.00000116	0.00000000
+		-6.27338797	-0.00032607	0.00019974	0.00032771	-0.00000116	0.00000000
+		-6.27338805	-0.00032604	0.00019972	0.00032768	-0.00000116	0.00000000
+		-6.27338814	-0.00032601	0.00019970	0.00032764	-0.00000116	0.00000000
+		-6.27338822	-0.00032597	0.00019968	0.00032761	-0.00000116	0.00000000
+		-6.27338830	-0.00032594	0.00019966	0.00032757	-0.00000116	0.00000000
+		-6.27338838	-0.00032590	0.00019964	0.00032754	-0.00000116	0.00000000
+		-6.27338846	-0.00032587	0.00019962	0.00032750	-0.00000116	0.00000000
+		-6.27338855	-0.00032583	0.00019960	0.00032747	-0.00000116	0.00000000
+		-6.27338863	-0.00032580	0.00019957	0.00032744	-0.00000116	0.00000000
+		-6.27338871	-0.00032577	0.00019955	0.00032740	-0.00000116	0.00000000
+		-6.27338879	-0.00032573	0.00019953	0.00032737	-0.00000116	0.00000000
+		-6.27338887	-0.00032570	0.00019951	0.00032733	-0.00000116	0.00000000
+		-6.27338896	-0.00032566	0.00019949	0.00032730	-0.00000116	0.00000000
+		-6.27338904	-0.00032563	0.00019947	0.00032726	-0.00000116	0.00000000
+		-6.27338912	-0.00032559	0.00019945	0.00032723	-0.00000116	0.00000000
+		-6.27338920	-0.00032556	0.00019943	0.00032719	-0.00000116	0.00000000
+		-6.27338928	-0.00032553	0.00019941	0.00032716	-0.00000116	0.00000000
+		-6.27338937	-0.00032549	0.00019939	0.00032713	-0.00000116	0.00000000
+		-6.27338945	-0.00032546	0.00019936	0.00032709	-0.00000116	0.00000000
+		-6.27338953	-0.00032542	0.00019934	0.00032706	-0.00000116	0.00000000
+		-6.27338961	-0.00032539	0.00019932	0.00032702	-0.00000116	0.00000000
+		-6.27338969	-0.00032536	0.00019930	0.00032699	-0.00000116	0.00000000
+		-6.27338978	-0.00032532	0.00019928	0.00032695	-0.00000116	0.00000000
+		-6.27338986	-0.00032529	0.00019926	0.00032692	-0.00000116	0.00000000
+		-6.27338994	-0.00032525	0.00019924	0.00032688	-0.00000116	0.00000000
+		-6.27339002	-0.00032522	0.00019922	0.00032685	-0.00000116	0.00000000
+		-6.27339010	-0.00032518	0.00019920	0.00032682	-0.00000116	0.00000000
+		-6.27339019	-0.00032515	0.00019918	0.00032678	-0.00000116	0.00000000
+		-6.27339027	-0.00032512	0.00019915	0.00032675	-0.00000116	0.00000000
+		-6.27339035	-0.00032508	0.00019913	0.00032671	-0.00000116	0.00000000
+		-6.27339043	-0.00032505	0.00019911	0.00032668	-0.00000116	0.00000000
+		-6.27339051	-0.00032501	0.00019909	0.00032664	-0.00000116	0.00000000
+		-6.27339059	-0.00032498	0.00019907	0.00032661	-0.00000116	0.00000000
+		-6.27339068	-0.00032495	0.00019905	0.00032658	-0.00000116	0.00000000
+		-6.27339076	-0.00032491	0.00019903	0.00032654	-0.00000116	0.00000000
+		-6.27339084	-0.00032488	0.00019901	0.00032651	-0.00000116	0.00000000
+		-6.27339092	-0.00032484	0.00019899	0.00032647	-0.00000116	0.00000000
+		-6.27339100	-0.00032481	0.00019897	0.00032644	-0.00000116	0.00000000
+		-6.27339108	-0.00032477	0.00019895	0.00032640	-0.00000116	0.00000000
+		-6.27339117	-0.00032474	0.00019892	0.00032637	-0.00000116	0.00000000
+		-6.27339125	-0.00032471	0.00019890	0.00032634	-0.00000116	0.00000000
+		-6.27339133	-0.00032467	0.00019888	0.00032630	-0.00000116	0.00000000
+		-6.27339141	-0.00032464	0.00019886	0.00032627	-0.00000116	0.00000000
+		-6.27339149	-0.00032460	0.00019884	0.00032623	-0.00000116	0.00000000
+		-6.27339157	-0.00032457	0.00019882	0.00032620	-0.00000116	0.00000000
+		-6.27339165	-0.00032454	0.00019880	0.00032617	-0.00000116	0.00000000
+		-6.27339174	-0.00032450	0.00019878	0.00032613	-0.00000116	0.00000000
+		-6.27339182	-0.00032447	0.00019876	0.00032610	-0.00000116	0.00000000
+		-6.27339190	-0.00032443	0.00019874	0.00032606	-0.00000116	0.00000000
+		-6.27339198	-0.00032440	0.00019872	0.00032603	-0.00000116	0.00000000
+		-6.27339206	-0.00032437	0.00019870	0.00032599	-0.00000116	0.00000000
+		-6.27339214	-0.00032433	0.00019867	0.00032596	-0.00000116	0.00000000
+		-6.27339222	-0.00032430	0.00019865	0.00032593	-0.00000116	0.00000000
+		-6.27339231	-0.00032426	0.00019863	0.00032589	-0.00000116	0.00000000
+		-6.27339239	-0.00032423	0.00019861	0.00032586	-0.00000116	0.00000000
+		-6.27339247	-0.00032420	0.00019859	0.00032582	-0.00000116	0.00000000
+		-6.27339255	-0.00032416	0.00019857	0.00032579	-0.00000116	0.00000000
+		-6.27339263	-0.00032413	0.00019855	0.00032576	-0.00000116	0.00000000
+		-6.27339271	-0.00032409	0.00019853	0.00032572	-0.00000116	0.00000000
+		-6.27339279	-0.00032406	0.00019851	0.00032569	-0.00000116	0.00000000
+		-6.27339287	-0.00032403	0.00019849	0.00032565	-0.00000116	0.00000000
+		-6.27339296	-0.00032399	0.00019847	0.00032562	-0.00000116	0.00000000
+		-6.27339304	-0.00032396	0.00019845	0.00032558	-0.00000116	0.00000000
+		-6.27339312	-0.00032393	0.00019843	0.00032555	-0.00000116	0.00000000
+		-6.27339320	-0.00032389	0.00019840	0.00032552	-0.00000116	0.00000000
+		-6.27339328	-0.00032386	0.00019838	0.00032548	-0.00000116	0.00000000
+		-6.27339336	-0.00032382	0.00019836	0.00032545	-0.00000116	0.00000000
+		-6.27339344	-0.00032379	0.00019834	0.00032541	-0.00000116	0.00000000
+		-6.27339352	-0.00032376	0.00019832	0.00032538	-0.00000116	0.00000000
+		-6.27339360	-0.00032372	0.00019830	0.00032535	-0.00000116	0.00000000
+		-6.27339369	-0.00032369	0.00019828	0.00032531	-0.00000116	0.00000000
+		-6.27339377	-0.00032365	0.00019826	0.00032528	-0.00000116	0.00000000
+		-6.27339385	-0.00032362	0.00019824	0.00032524	-0.00000116	0.00000000
+		-6.27339393	-0.00032359	0.00019822	0.00032521	-0.00000116	0.00000000
+		-6.27339401	-0.00032355	0.00019820	0.00032518	-0.00000116	0.00000000
+		-6.27339409	-0.00032352	0.00019818	0.00032514	-0.00000116	0.00000000
+		-6.27339417	-0.00032349	0.00019816	0.00032511	-0.00000116	0.00000000
+		-6.27339425	-0.00032345	0.00019813	0.00032507	-0.00000116	0.00000000
+		-6.27339433	-0.00032342	0.00019811	0.00032504	-0.00000116	0.00000000
+		-6.27339441	-0.00032338	0.00019809	0.00032501	-0.00000116	0.00000000
+		-6.27339450	-0.00032335	0.00019807	0.00032497	-0.00000116	0.00000000
+		-6.27339458	-0.00032332	0.00019805	0.00032494	-0.00000116	0.00000000
+		-6.27339466	-0.00032328	0.00019803	0.00032490	-0.00000116	0.00000000
+		-6.27339474	-0.00032325	0.00019801	0.00032487	-0.00000116	0.00000000
+		-6.27339482	-0.00032321	0.00019799	0.00032484	-0.00000116	0.00000000
+		-6.27339490	-0.00032318	0.00019797	0.00032480	-0.00000116	0.00000000
+		-6.27339498	-0.00032315	0.00019795	0.00032477	-0.00000116	0.00000000
+		-6.27339506	-0.00032311	0.00019793	0.00032473	-0.00000116	0.00000000
+		-6.27339514	-0.00032308	0.00019791	0.00032470	-0.00000116	0.00000000
+		-6.27339522	-0.00032305	0.00019789	0.00032467	-0.00000116	0.00000000
+		-6.27339530	-0.00032301	0.00019787	0.00032463	-0.00000116	0.00000000
+		-6.27339538	-0.00032298	0.00019785	0.00032460	-0.00000116	0.00000000
+		-6.27339546	-0.00032295	0.00019782	0.00032457	-0.00000116	0.00000000
+		-6.27339555	-0.00032291	0.00019780	0.00032453	-0.00000116	0.00000000
+		-6.27339563	-0.00032288	0.00019778	0.00032450	-0.00000116	0.00000000
+		-6.27339571	-0.00032284	0.00019776	0.00032446	-0.00000116	0.00000000
+		-6.27339579	-0.00032281	0.00019774	0.00032443	-0.00000116	0.00000000
+		-6.27339587	-0.00032278	0.00019772	0.00032440	-0.00000116	0.00000000
+		-6.27339595	-0.00032274	0.00019770	0.00032436	-0.00000116	0.00000000
+		-6.27339603	-0.00032271	0.00019768	0.00032433	-0.00000116	0.00000000
+		-6.27339611	-0.00032268	0.00019766	0.00032429	-0.00000116	0.00000000
+		-6.27339619	-0.00032264	0.00019764	0.00032426	-0.00000116	0.00000000
+		-6.27339627	-0.00032261	0.00019762	0.00032423	-0.00000116	0.00000000
+		-6.27339635	-0.00032258	0.00019760	0.00032419	-0.00000116	0.00000000
+		-6.27339643	-0.00032254	0.00019758	0.00032416	-0.00000116	0.00000000
+		-6.27339651	-0.00032251	0.00019756	0.00032413	-0.00000116	0.00000000
+		-6.27339659	-0.00032247	0.00019754	0.00032409	-0.00000116	0.00000000
+		-6.27339667	-0.00032244	0.00019752	0.00032406	-0.00000116	0.00000000
+		-6.27339675	-0.00032241	0.00019749	0.00032402	-0.00000116	0.00000000
+		-6.27339683	-0.00032237	0.00019747	0.00032399	-0.00000116	0.00000000
+		-6.27339691	-0.00032234	0.00019745	0.00032396	-0.00000116	0.00000000
+		-6.27339699	-0.00032231	0.00019743	0.00032392	-0.00000116	0.00000000
+		-6.27339708	-0.00032227	0.00019741	0.00032389	-0.00000116	0.00000000
+		-6.27339716	-0.00032224	0.00019739	0.00032386	-0.00000116	0.00000000
+		-6.27339724	-0.00032221	0.00019737	0.00032382	-0.00000116	0.00000000
+		-6.27339732	-0.00032217	0.00019735	0.00032379	-0.00000116	0.00000000
+		-6.27339740	-0.00032214	0.00019733	0.00032375	-0.00000116	0.00000000
+		-6.27339748	-0.00032210	0.00019731	0.00032372	-0.00000116	0.00000000
+		-6.27339756	-0.00032207	0.00019729	0.00032369	-0.00000116	0.00000000
+		-6.27339764	-0.00032204	0.00019727	0.00032365	-0.00000116	0.00000000
+		-6.27339772	-0.00032200	0.00019725	0.00032362	-0.00000116	0.00000000
+		-6.27339780	-0.00032197	0.00019723	0.00032359	-0.00000116	0.00000000
+		-6.27339788	-0.00032194	0.00019721	0.00032355	-0.00000116	0.00000000
+		-6.27339796	-0.00032190	0.00019719	0.00032352	-0.00000116	0.00000000
+		-6.27339804	-0.00032187	0.00019717	0.00032349	-0.00000116	0.00000000
+		-6.27339812	-0.00032184	0.00019715	0.00032345	-0.00000116	0.00000000
+		-6.27339820	-0.00032180	0.00019713	0.00032342	-0.00000116	0.00000000
+		-6.27339828	-0.00032177	0.00019710	0.00032338	-0.00000116	0.00000000
+		-6.27339836	-0.00032174	0.00019708	0.00032335	-0.00000116	0.00000000
+		-6.27339844	-0.00032170	0.00019706	0.00032332	-0.00000116	0.00000000
+		-6.27339852	-0.00032167	0.00019704	0.00032328	-0.00000116	0.00000000
+		-6.27339860	-0.00032164	0.00019702	0.00032325	-0.00000116	0.00000000
+		-6.27339868	-0.00032160	0.00019700	0.00032322	-0.00000116	0.00000000
+		-6.27339876	-0.00032157	0.00019698	0.00032318	-0.00000116	0.00000000
+		-6.27339884	-0.00032154	0.00019696	0.00032315	-0.00000116	0.00000000
+		-6.27339892	-0.00032150	0.00019694	0.00032312	-0.00000116	0.00000000
+		-6.27339900	-0.00032147	0.00019692	0.00032308	-0.00000116	0.00000000
+		-6.27339908	-0.00032144	0.00019690	0.00032305	-0.00000116	0.00000000
+		-6.27339916	-0.00032140	0.00019688	0.00032302	-0.00000116	0.00000000
+		-6.27339924	-0.00032137	0.00019686	0.00032298	-0.00000116	0.00000000
+		-6.27339932	-0.00032134	0.00019684	0.00032295	-0.00000116	0.00000000
+		-6.27339940	-0.00032130	0.00019682	0.00032291	-0.00000116	0.00000000
+		-6.27339948	-0.00032127	0.00019680	0.00032288	-0.00000116	0.00000000
+		-6.27339956	-0.00032124	0.00019678	0.00032285	-0.00000116	0.00000000
+		-6.27339964	-0.00032120	0.00019676	0.00032281	-0.00000116	0.00000000
+		-6.27339972	-0.00032117	0.00019674	0.00032278	-0.00000116	0.00000000
+		-6.27339980	-0.00032114	0.00019672	0.00032275	-0.00000116	0.00000000
+		-6.27339988	-0.00032110	0.00019670	0.00032271	-0.00000116	0.00000000
+		-6.27339996	-0.00032107	0.00019668	0.00032268	-0.00000116	0.00000000
+		-6.27340004	-0.00032104	0.00019665	0.00032265	-0.00000116	0.00000000
+		-6.27340012	-0.00032100	0.00019663	0.00032261	-0.00000116	0.00000000
+		-6.27340020	-0.00032097	0.00019661	0.00032258	-0.00000116	0.00000000
+		-6.27340028	-0.00032094	0.00019659	0.00032255	-0.00000116	0.00000000
+		-6.27340036	-0.00032090	0.00019657	0.00032251	-0.00000116	0.00000000
+		-6.27340043	-0.00032087	0.00019655	0.00032248	-0.00000116	0.00000000
+		-6.27340051	-0.00032084	0.00019653	0.00032245	-0.00000116	0.00000000
+		-6.27340059	-0.00032080	0.00019651	0.00032241	-0.00000116	0.00000000
+		-6.27340067	-0.00032077	0.00019649	0.00032238	-0.00000116	0.00000000
+		-6.27340075	-0.00032074	0.00019647	0.00032235	-0.00000116	0.00000000
+		-6.27340083	-0.00032070	0.00019645	0.00032231	-0.00000116	0.00000000
+		-6.27340091	-0.00032067	0.00019643	0.00032228	-0.00000116	0.00000000
+		-6.27340099	-0.00032064	0.00019641	0.00032225	-0.00000116	0.00000000
+		-6.27340107	-0.00032060	0.00019639	0.00032221	-0.00000116	0.00000000
+		-6.27340115	-0.00032057	0.00019637	0.00032218	-0.00000116	0.00000000
+		-6.27340123	-0.00032054	0.00019635	0.00032215	-0.00000116	0.00000000
+		-6.27340131	-0.00032050	0.00019633	0.00032211	-0.00000116	0.00000000
+		-6.27340139	-0.00032047	0.00019631	0.00032208	-0.00000116	0.00000000
+		-6.27340147	-0.00032044	0.00019629	0.00032205	-0.00000116	0.00000000
+		-6.27340155	-0.00032040	0.00019627	0.00032201	-0.00000116	0.00000000
+		-6.27340163	-0.00032037	0.00019625	0.00032198	-0.00000116	0.00000000
+		-6.27340171	-0.00032034	0.00019623	0.00032195	-0.00000116	0.00000000
+		-6.27340179	-0.00032031	0.00019621	0.00032191	-0.00000116	0.00000000
+		-6.27340187	-0.00032027	0.00019619	0.00032188	-0.00000116	0.00000000
+		-6.27340194	-0.00032024	0.00019617	0.00032185	-0.00000116	0.00000000
+		-6.27340202	-0.00032021	0.00019615	0.00032181	-0.00000116	0.00000000
+		-6.27340210	-0.00032017	0.00019613	0.00032178	-0.00000116	0.00000000
+		-6.27340218	-0.00032014	0.00019611	0.00032175	-0.00000116	0.00000000
+		-6.27340226	-0.00032011	0.00019608	0.00032171	-0.00000116	0.00000000
+		-6.27340234	-0.00032007	0.00019606	0.00032168	-0.00000116	0.00000000
+		-6.27340242	-0.00032004	0.00019604	0.00032165	-0.00000116	0.00000000
+		-6.27340250	-0.00032001	0.00019602	0.00032161	-0.00000116	0.00000000
+		-6.27340258	-0.00031997	0.00019600	0.00032158	-0.00000116	0.00000000
+		-6.27340266	-0.00031994	0.00019598	0.00032155	-0.00000116	0.00000000
+		-6.27340274	-0.00031991	0.00019596	0.00032151	-0.00000116	0.00000000
+		-6.27340282	-0.00031987	0.00019594	0.00032148	-0.00000116	0.00000000
+		-6.27340290	-0.00031984	0.00019592	0.00032145	-0.00000116	0.00000000
+		-6.27340297	-0.00031981	0.00019590	0.00032141	-0.00000116	0.00000000
+		-6.27340305	-0.00031978	0.00019588	0.00032138	-0.00000116	0.00000000
+		-6.27340313	-0.00031974	0.00019586	0.00032135	-0.00000116	0.00000000
+		-6.27340321	-0.00031971	0.00019584	0.00032131	-0.00000116	0.00000000
+		-6.27340329	-0.00031968	0.00019582	0.00032128	-0.00000116	0.00000000
+		-6.27340337	-0.00031964	0.00019580	0.00032125	-0.00000116	0.00000000
+		-6.27340345	-0.00031961	0.00019578	0.00032121	-0.00000116	0.00000000
+		-6.27340353	-0.00031958	0.00019576	0.00032118	-0.00000116	0.00000000
+		-6.27340361	-0.00031954	0.00019574	0.00032115	-0.00000116	0.00000000
+		-6.27340369	-0.00031951	0.00019572	0.00032111	-0.00000116	0.00000000
+		-6.27340377	-0.00031948	0.00019570	0.00032108	-0.00000116	0.00000000
+		-6.27340384	-0.00031945	0.00019568	0.00032105	-0.00000116	0.00000000
+		-6.27340392	-0.00031941	0.00019566	0.00032102	-0.00000116	0.00000000
+		-6.27340400	-0.00031938	0.00019564	0.00032098	-0.00000116	0.00000000
+		-6.27340408	-0.00031935	0.00019562	0.00032095	-0.00000116	0.00000000
+		-6.27340416	-0.00031931	0.00019560	0.00032092	-0.00000116	0.00000000
+		-6.27340424	-0.00031928	0.00019558	0.00032088	-0.00000116	0.00000000
+		-6.27340432	-0.00031925	0.00019556	0.00032085	-0.00000116	0.00000000
+		-6.27340440	-0.00031922	0.00019554	0.00032082	-0.00000116	0.00000000
+		-6.27340448	-0.00031918	0.00019552	0.00032078	-0.00000116	0.00000000
+		-6.27340455	-0.00031915	0.00019550	0.00032075	-0.00000116	0.00000000
+		-6.27340463	-0.00031912	0.00019548	0.00032072	-0.00000116	0.00000000
+		-6.27340471	-0.00031908	0.00019546	0.00032068	-0.00000116	0.00000000
+		-6.27340479	-0.00031905	0.00019544	0.00032065	-0.00000116	0.00000000
+		-6.27340487	-0.00031902	0.00019542	0.00032062	-0.00000116	0.00000000
+		-6.27340495	-0.00031899	0.00019540	0.00032059	-0.00000116	0.00000000
+		-6.27340503	-0.00031895	0.00019538	0.00032055	-0.00000116	0.00000000
+		-6.27340511	-0.00031892	0.00019536	0.00032052	-0.00000116	0.00000000
+		-6.27340518	-0.00031889	0.00019534	0.00032049	-0.00000116	0.00000000
+		-6.27340526	-0.00031885	0.00019532	0.00032045	-0.00000116	0.00000000
+		-6.27340534	-0.00031882	0.00019530	0.00032042	-0.00000116	0.00000000
+		-6.27340542	-0.00031879	0.00019528	0.00032039	-0.00000116	0.00000000
+		-6.27340550	-0.00031876	0.00019526	0.00032035	-0.00000116	0.00000000
+		-6.27340558	-0.00031872	0.00019524	0.00032032	-0.00000116	0.00000000
+		-6.27340566	-0.00031869	0.00019522	0.00032029	-0.00000116	0.00000000
+		-6.27340573	-0.00031866	0.00019520	0.00032026	-0.00000116	0.00000000
+		-6.27340581	-0.00031862	0.00019518	0.00032022	-0.00000116	0.00000000
+		-6.27340589	-0.00031859	0.00019516	0.00032019	-0.00000116	0.00000000
+		-6.27340597	-0.00031856	0.00019514	0.00032016	-0.00000116	0.00000000
+		-6.27340605	-0.00031853	0.00019512	0.00032012	-0.00000116	0.00000000
+		-6.27340613	-0.00031849	0.00019510	0.00032009	-0.00000116	0.00000000
+		-6.27340621	-0.00031846	0.00019508	0.00032006	-0.00000116	0.00000000
+		-6.27340628	-0.00031843	0.00019506	0.00032002	-0.00000116	0.00000000
+		-6.27340636	-0.00031839	0.00019504	0.00031999	-0.00000116	0.00000000
+		-6.27340644	-0.00031836	0.00019502	0.00031996	-0.00000116	0.00000000
+		-6.27340652	-0.00031833	0.00019500	0.00031993	-0.00000116	0.00000000
+		-6.27340660	-0.00031830	0.00019498	0.00031989	-0.00000116	0.00000000
+		-6.27340668	-0.00031826	0.00019496	0.00031986	-0.00000116	0.00000000
+		-6.27340675	-0.00031823	0.00019494	0.00031983	-0.00000116	0.00000000
+		-6.27340683	-0.00031820	0.00019492	0.00031979	-0.00000116	0.00000000
+		-6.27340691	-0.00031817	0.00019490	0.00031976	-0.00000116	0.00000000
+		-6.27340699	-0.00031813	0.00019488	0.00031973	-0.00000116	0.00000000
+		-6.27340707	-0.00031810	0.00019486	0.00031970	-0.00000116	0.00000000
+		-6.27340715	-0.00031807	0.00019484	0.00031966	-0.00000116	0.00000000
+		-6.27340722	-0.00031803	0.00019482	0.00031963	-0.00000116	0.00000000
+		-6.27340730	-0.00031800	0.00019480	0.00031960	-0.00000116	0.00000000
+		-6.27340738	-0.00031797	0.00019478	0.00031956	-0.00000116	0.00000000
+		-6.27340746	-0.00031794	0.00019476	0.00031953	-0.00000116	0.00000000
+		-6.27340754	-0.00031790	0.00019474	0.00031950	-0.00000116	0.00000000
+		-6.27340761	-0.00031787	0.00019472	0.00031947	-0.00000116	0.00000000
+		-6.27340769	-0.00031784	0.00019470	0.00031943	-0.00000116	0.00000000
+		-6.27340777	-0.00031781	0.00019468	0.00031940	-0.00000116	0.00000000
+		-6.27340785	-0.00031777	0.00019466	0.00031937	-0.00000116	0.00000000
+		-6.27340793	-0.00031774	0.00019464	0.00031933	-0.00000116	0.00000000
+		-6.27340801	-0.00031771	0.00019462	0.00031930	-0.00000116	0.00000000
+		-6.27340808	-0.00031768	0.00019460	0.00031927	-0.00000116	0.00000000
+		-6.27340816	-0.00031764	0.00019458	0.00031924	-0.00000116	0.00000000
+		-6.27340824	-0.00031761	0.00019456	0.00031920	-0.00000116	0.00000000
+		-6.27340832	-0.00031758	0.00019454	0.00031917	-0.00000116	0.00000000
+		-6.27340840	-0.00031755	0.00019452	0.00031914	-0.00000116	0.00000000
+		-6.27340847	-0.00031751	0.00019450	0.00031911	-0.00000116	0.00000000
+		-6.27340855	-0.00031748	0.00019448	0.00031907	-0.00000116	0.00000000
+		-6.27340863	-0.00031745	0.00019446	0.00031904	-0.00000116	0.00000000
+		-6.27340871	-0.00031742	0.00019444	0.00031901	-0.00000116	0.00000000
+		-6.27340879	-0.00031738	0.00019442	0.00031897	-0.00000116	0.00000000
+		-6.27340886	-0.00031735	0.00019440	0.00031894	-0.00000116	0.00000000
+		-6.27340894	-0.00031732	0.00019438	0.00031891	-0.00000116	0.00000000
+		-6.27340902	-0.00031728	0.00019436	0.00031888	-0.00000116	0.00000000
+		-6.27340910	-0.00031725	0.00019434	0.00031884	-0.00000116	0.00000000
+		-6.27340917	-0.00031722	0.00019432	0.00031881	-0.00000116	0.00000000
+		-6.27340925	-0.00031719	0.00019430	0.00031878	-0.00000116	0.00000000
+		-6.27340933	-0.00031715	0.00019428	0.00031875	-0.00000116	0.00000000
+		-6.27340941	-0.00031712	0.00019426	0.00031871	-0.00000116	0.00000000
+		-6.27340949	-0.00031709	0.00019424	0.00031868	-0.00000116	0.00000000
+		-6.27340956	-0.00031706	0.00019422	0.00031865	-0.00000116	0.00000000
+		-6.27340964	-0.00031702	0.00019420	0.00031862	-0.00000116	0.00000000
+		-6.27340972	-0.00031699	0.00019418	0.00031858	-0.00000116	0.00000000
+		-6.27340980	-0.00031696	0.00019416	0.00031855	-0.00000116	0.00000000
+		-6.27340987	-0.00031693	0.00019414	0.00031852	-0.00000116	0.00000000
+		-6.27340995	-0.00031690	0.00019412	0.00031848	-0.00000116	0.00000000
+		-6.27341003	-0.00031686	0.00019410	0.00031845	-0.00000116	0.00000000
+		-6.27341011	-0.00031683	0.00019408	0.00031842	-0.00000116	0.00000000
+		-6.27341019	-0.00031680	0.00019406	0.00031839	-0.00000116	0.00000000
+		-6.27341026	-0.00031677	0.00019404	0.00031835	-0.00000116	0.00000000
+		-6.27341034	-0.00031673	0.00019402	0.00031832	-0.00000116	0.00000000
+		-6.27341042	-0.00031670	0.00019400	0.00031829	-0.00000116	0.00000000
+		-6.27341050	-0.00031667	0.00019398	0.00031826	-0.00000116	0.00000000
+		-6.27341057	-0.00031664	0.00019396	0.00031822	-0.00000116	0.00000000
+		-6.27341065	-0.00031660	0.00019394	0.00031819	-0.00000116	0.00000000
+		-6.27341073	-0.00031657	0.00019392	0.00031816	-0.00000116	0.00000000
+		-6.27341081	-0.00031654	0.00019390	0.00031813	-0.00000116	0.00000000
+		-6.27341088	-0.00031651	0.00019388	0.00031809	-0.00000116	0.00000000
+		-6.27341096	-0.00031647	0.00019386	0.00031806	-0.00000116	0.00000000
+		-6.27341104	-0.00031644	0.00019384	0.00031803	-0.00000116	0.00000000
+		-6.27341112	-0.00031641	0.00019382	0.00031800	-0.00000116	0.00000000
+		-6.27341119	-0.00031638	0.00019380	0.00031796	-0.00000116	0.00000000
+		-6.27341127	-0.00031634	0.00019378	0.00031793	-0.00000116	0.00000000
+		-6.27341135	-0.00031631	0.00019376	0.00031790	-0.00000116	0.00000000
+		-6.27341143	-0.00031628	0.00019374	0.00031787	-0.00000116	0.00000000
+		-6.27341150	-0.00031625	0.00019372	0.00031783	-0.00000116	0.00000000
+		-6.27341158	-0.00031622	0.00019370	0.00031780	-0.00000116	0.00000000
+		-6.27341166	-0.00031618	0.00019368	0.00031777	-0.00000116	0.00000000
+		-6.27341173	-0.00031615	0.00019366	0.00031774	-0.00000116	0.00000000
+		-6.27341181	-0.00031612	0.00019364	0.00031770	-0.00000116	0.00000000
+		-6.27341189	-0.00031609	0.00019362	0.00031767	-0.00000116	0.00000000
+		-6.27341197	-0.00031605	0.00019360	0.00031764	-0.00000116	0.00000000
+		-6.27341204	-0.00031602	0.00019358	0.00031761	-0.00000116	0.00000000
+		-6.27341212	-0.00031599	0.00019356	0.00031757	-0.00000116	0.00000000
+		-6.27341220	-0.00031596	0.00019354	0.00031754	-0.00000116	0.00000000
+		-6.27341228	-0.00031592	0.00019352	0.00031751	-0.00000116	0.00000000
+		-6.27341235	-0.00031589	0.00019350	0.00031748	-0.00000116	0.00000000
+		-6.27341243	-0.00031586	0.00019348	0.00031744	-0.00000116	0.00000000
+		-6.27341251	-0.00031583	0.00019346	0.00031741	-0.00000116	0.00000000
+		-6.27341258	-0.00031580	0.00019344	0.00031738	-0.00000116	0.00000000
+		-6.27341266	-0.00031576	0.00019342	0.00031735	-0.00000116	0.00000000
+		-6.27341274	-0.00031573	0.00019340	0.00031732	-0.00000116	0.00000000
+		-6.27341282	-0.00031570	0.00019338	0.00031728	-0.00000116	0.00000000
+		-6.27341289	-0.00031567	0.00019336	0.00031725	-0.00000116	0.00000000
+		-6.27341297	-0.00031563	0.00019334	0.00031722	-0.00000116	0.00000000
+		-6.27341305	-0.00031560	0.00019333	0.00031719	-0.00000116	0.00000000
+		-6.27341312	-0.00031557	0.00019331	0.00031715	-0.00000116	0.00000000
+		-6.27341320	-0.00031554	0.00019329	0.00031712	-0.00000116	0.00000000
+		-6.27341328	-0.00031551	0.00019327	0.00031709	-0.00000116	0.00000000
+		-6.27341336	-0.00031547	0.00019325	0.00031706	-0.00000116	0.00000000
+		-6.27341343	-0.00031544	0.00019323	0.00031702	-0.00000116	0.00000000
+		-6.27341351	-0.00031541	0.00019321	0.00031699	-0.00000116	0.00000000
+		-6.27341359	-0.00031538	0.00019319	0.00031696	-0.00000116	0.00000000
+		-6.27341366	-0.00031535	0.00019317	0.00031693	-0.00000116	0.00000000
+		-6.27341374	-0.00031531	0.00019315	0.00031689	-0.00000116	0.00000000
+		-6.27341382	-0.00031528	0.00019313	0.00031686	-0.00000116	0.00000000
+		-6.27341389	-0.00031525	0.00019311	0.00031683	-0.00000116	0.00000000
+		-6.27341397	-0.00031522	0.00019309	0.00031680	-0.00000116	0.00000000
+		-6.27341405	-0.00031519	0.00019307	0.00031677	-0.00000116	0.00000000
+		-6.27341412	-0.00031515	0.00019305	0.00031673	-0.00000116	0.00000000
+		-6.27341420	-0.00031512	0.00019303	0.00031670	-0.00000116	0.00000000
+		-6.27341428	-0.00031509	0.00019301	0.00031667	-0.00000116	0.00000000
+		-6.27341435	-0.00031506	0.00019299	0.00031664	-0.00000116	0.00000000
+		-6.27341443	-0.00031502	0.00019297	0.00031660	-0.00000116	0.00000000
+		-6.27341451	-0.00031499	0.00019295	0.00031657	-0.00000116	0.00000000
+		-6.27341459	-0.00031496	0.00019293	0.00031654	-0.00000116	0.00000000
+		-6.27341466	-0.00031493	0.00019291	0.00031651	-0.00000116	0.00000000
+		-6.27341474	-0.00031490	0.00019289	0.00031648	-0.00000116	0.00000000
+		-6.27341482	-0.00031486	0.00019287	0.00031644	-0.00000116	0.00000000
+		-6.27341489	-0.00031483	0.00019285	0.00031641	-0.00000116	0.00000000
+		-6.27341497	-0.00031480	0.00019283	0.00031638	-0.00000116	0.00000000
+		-6.27341505	-0.00031477	0.00019281	0.00031635	-0.00000116	0.00000000
+		-6.27341512	-0.00031474	0.00019279	0.00031631	-0.00000116	0.00000000
+		-6.27341520	-0.00031470	0.00019277	0.00031628	-0.00000116	0.00000000
+		-6.27341528	-0.00031467	0.00019275	0.00031625	-0.00000116	0.00000000
+		-6.27341535	-0.00031464	0.00019274	0.00031622	-0.00000116	0.00000000
+		-6.27341543	-0.00031461	0.00019272	0.00031619	-0.00000116	0.00000000
+		-6.27341550	-0.00031458	0.00019270	0.00031615	-0.00000116	0.00000000
+		-6.27341558	-0.00031454	0.00019268	0.00031612	-0.00000116	0.00000000
+		-6.27341566	-0.00031451	0.00019266	0.00031609	-0.00000116	0.00000000
+		-6.27341573	-0.00031448	0.00019264	0.00031606	-0.00000116	0.00000000
+		-6.27341581	-0.00031445	0.00019262	0.00031603	-0.00000116	0.00000000
+		-6.27341589	-0.00031442	0.00019260	0.00031599	-0.00000116	0.00000000
+		-6.27341596	-0.00031438	0.00019258	0.00031596	-0.00000116	0.00000000
+		-6.27341604	-0.00031435	0.00019256	0.00031593	-0.00000116	0.00000000
+		-6.27341612	-0.00031432	0.00019254	0.00031590	-0.00000116	0.00000000
+		-6.27341619	-0.00031429	0.00019252	0.00031587	-0.00000116	0.00000000
+		-6.27341627	-0.00031426	0.00019250	0.00031583	-0.00000116	0.00000000
+		-6.27341635	-0.00031423	0.00019248	0.00031580	-0.00000116	0.00000000
+		-6.27341642	-0.00031419	0.00019246	0.00031577	-0.00000116	0.00000000
+		-6.27341650	-0.00031416	0.00019244	0.00031574	-0.00000116	0.00000000
+		-6.27341658	-0.00031413	0.00019242	0.00031571	-0.00000116	0.00000000
+		-6.27341665	-0.00031410	0.00019240	0.00031567	-0.00000116	0.00000000
+		-6.27341673	-0.00031407	0.00019238	0.00031564	-0.00000116	0.00000000
+		-6.27341680	-0.00031403	0.00019236	0.00031561	-0.00000116	0.00000000
+		-6.27341688	-0.00031400	0.00019234	0.00031558	-0.00000116	0.00000000
+		-6.27341696	-0.00031397	0.00019232	0.00031554	-0.00000116	0.00000000
+		-6.27341703	-0.00031394	0.00019231	0.00031551	-0.00000116	0.00000000
+		-6.27341711	-0.00031391	0.00019229	0.00031548	-0.00000116	0.00000000
+		-6.27341719	-0.00031387	0.00019227	0.00031545	-0.00000116	0.00000000
+		-6.27341726	-0.00031384	0.00019225	0.00031542	-0.00000116	0.00000000
+		-6.27341734	-0.00031381	0.00019223	0.00031538	-0.00000116	0.00000000
+		-6.27341741	-0.00031378	0.00019221	0.00031535	-0.00000116	0.00000000
+		-6.27341749	-0.00031375	0.00019219	0.00031532	-0.00000116	0.00000000
+		-6.27341757	-0.00031372	0.00019217	0.00031529	-0.00000116	0.00000000
+		-6.27341764	-0.00031368	0.00019215	0.00031526	-0.00000116	0.00000000
+		-6.27341772	-0.00031365	0.00019213	0.00031523	-0.00000116	0.00000000
+		-6.27341779	-0.00031362	0.00019211	0.00031519	-0.00000116	0.00000000
+		-6.27341787	-0.00031359	0.00019209	0.00031516	-0.00000116	0.00000000
+		-6.27341795	-0.00031356	0.00019207	0.00031513	-0.00000116	0.00000000
+		-6.27341802	-0.00031353	0.00019205	0.00031510	-0.00000116	0.00000000
+		-6.27341810	-0.00031349	0.00019203	0.00031507	-0.00000116	0.00000000
+		-6.27341817	-0.00031346	0.00019201	0.00031503	-0.00000116	0.00000000
+		-6.27341825	-0.00031343	0.00019199	0.00031500	-0.00000116	0.00000000
+		-6.27341833	-0.00031340	0.00019197	0.00031497	-0.00000116	0.00000000
+		-6.27341840	-0.00031337	0.00019195	0.00031494	-0.00000116	0.00000000
+		-6.27341848	-0.00031333	0.00019194	0.00031491	-0.00000116	0.00000000
+		-6.27341855	-0.00031330	0.00019192	0.00031487	-0.00000116	0.00000000
+		-6.27341863	-0.00031327	0.00019190	0.00031484	-0.00000116	0.00000000
+		-6.27341871	-0.00031324	0.00019188	0.00031481	-0.00000116	0.00000000
+		-6.27341878	-0.00031321	0.00019186	0.00031478	-0.00000116	0.00000000
+		-6.27341886	-0.00031318	0.00019184	0.00031475	-0.00000116	0.00000000
+		-6.27341893	-0.00031314	0.00019182	0.00031471	-0.00000116	0.00000000
+		-6.27341901	-0.00031311	0.00019180	0.00031468	-0.00000116	0.00000000
+		-6.27341909	-0.00031308	0.00019178	0.00031465	-0.00000116	0.00000000
+		-6.27341916	-0.00031305	0.00019176	0.00031462	-0.00000116	0.00000000
+		-6.27341924	-0.00031302	0.00019174	0.00031459	-0.00000116	0.00000000
+		-6.27341931	-0.00031299	0.00019172	0.00031456	-0.00000116	0.00000000
+		-6.27341939	-0.00031295	0.00019170	0.00031452	-0.00000116	0.00000000
+		-6.27341946	-0.00031292	0.00019168	0.00031449	-0.00000116	0.00000000
+		-6.27341954	-0.00031289	0.00019166	0.00031446	-0.00000116	0.00000000
+		-6.27341962	-0.00031286	0.00019164	0.00031443	-0.00000116	0.00000000
+		-6.27341969	-0.00031283	0.00019162	0.00031440	-0.00000116	0.00000000
+		-6.27341977	-0.00031280	0.00019161	0.00031437	-0.00000116	0.00000000
+		-6.27341984	-0.00031276	0.00019159	0.00031433	-0.00000116	0.00000000
+		-6.27341992	-0.00031273	0.00019157	0.00031430	-0.00000116	0.00000000
+		-6.27341999	-0.00031270	0.00019155	0.00031427	-0.00000116	0.00000000
+		-6.27342007	-0.00031267	0.00019153	0.00031424	-0.00000116	0.00000000
+		-6.27342015	-0.00031264	0.00019151	0.00031421	-0.00000116	0.00000000
+		-6.27342022	-0.00031261	0.00019149	0.00031417	-0.00000116	0.00000000
+		-6.27342030	-0.00031258	0.00019147	0.00031414	-0.00000116	0.00000000
+		-6.27342037	-0.00031254	0.00019145	0.00031411	-0.00000116	0.00000000
+		-6.27342045	-0.00031251	0.00019143	0.00031408	-0.00000116	0.00000000
+		-6.27342052	-0.00031248	0.00019141	0.00031405	-0.00000116	0.00000000
+		-6.27342060	-0.00031245	0.00019139	0.00031402	-0.00000116	0.00000000
+		-6.27342067	-0.00031242	0.00019137	0.00031398	-0.00000116	0.00000000
+		-6.27342075	-0.00031239	0.00019135	0.00031395	-0.00000116	0.00000000
+		-6.27342083	-0.00031235	0.00019133	0.00031392	-0.00000116	0.00000000
+		-6.27342090	-0.00031232	0.00019132	0.00031389	-0.00000116	0.00000000
+		-6.27342098	-0.00031229	0.00019130	0.00031386	-0.00000116	0.00000000
+		-6.27342105	-0.00031226	0.00019128	0.00031383	-0.00000116	0.00000000
+		-6.27342113	-0.00031223	0.00019126	0.00031379	-0.00000116	0.00000000
+		-6.27342120	-0.00031220	0.00019124	0.00031376	-0.00000116	0.00000000
+		-6.27342128	-0.00031217	0.00019122	0.00031373	-0.00000116	0.00000000
+		-6.27342135	-0.00031213	0.00019120	0.00031370	-0.00000116	0.00000000
+		-6.27342143	-0.00031210	0.00019118	0.00031367	-0.00000116	0.00000000
+		-6.27342150	-0.00031207	0.00019116	0.00031364	-0.00000116	0.00000000
+		-6.27342158	-0.00031204	0.00019114	0.00031360	-0.00000116	0.00000000
+		-6.27342166	-0.00031201	0.00019112	0.00031357	-0.00000116	0.00000000
+		-6.27342173	-0.00031198	0.00019110	0.00031354	-0.00000116	0.00000000
+		-6.27342181	-0.00031195	0.00019108	0.00031351	-0.00000116	0.00000000
+		-6.27342188	-0.00031191	0.00019106	0.00031348	-0.00000116	0.00000000
+		-6.27342196	-0.00031188	0.00019105	0.00031345	-0.00000116	0.00000000
+		-6.27342203	-0.00031185	0.00019103	0.00031341	-0.00000116	0.00000000
+		-6.27342211	-0.00031182	0.00019101	0.00031338	-0.00000116	0.00000000
+		-6.27342218	-0.00031179	0.00019099	0.00031335	-0.00000116	0.00000000
+		-6.27342226	-0.00031176	0.00019097	0.00031332	-0.00000116	0.00000000
+		-6.27342233	-0.00031173	0.00019095	0.00031329	-0.00000116	0.00000000
+		-6.27342241	-0.00031169	0.00019093	0.00031326	-0.00000116	0.00000000
+		-6.27342248	-0.00031166	0.00019091	0.00031323	-0.00000116	0.00000000
+		-6.27342256	-0.00031163	0.00019089	0.00031319	-0.00000116	0.00000000
+		-6.27342263	-0.00031160	0.00019087	0.00031316	-0.00000116	0.00000000
+		-6.27342271	-0.00031157	0.00019085	0.00031313	-0.00000116	0.00000000
+		-6.27342278	-0.00031154	0.00019083	0.00031310	-0.00000116	0.00000000
+		-6.27342286	-0.00031151	0.00019081	0.00031307	-0.00000116	0.00000000
+		-6.27342293	-0.00031147	0.00019080	0.00031304	-0.00000116	0.00000000
+		-6.27342301	-0.00031144	0.00019078	0.00031300	-0.00000116	0.00000000
+		-6.27342308	-0.00031141	0.00019076	0.00031297	-0.00000116	0.00000000
+		-6.27342316	-0.00031138	0.00019074	0.00031294	-0.00000116	0.00000000
+		-6.27342323	-0.00031135	0.00019072	0.00031291	-0.00000116	0.00000000
+		-6.27342331	-0.00031132	0.00019070	0.00031288	-0.00000116	0.00000000
+		-6.27342338	-0.00031129	0.00019068	0.00031285	-0.00000116	0.00000000
+		-6.27342346	-0.00031126	0.00019066	0.00031282	-0.00000116	0.00000000
+		-6.27342353	-0.00031122	0.00019064	0.00031278	-0.00000116	0.00000000
+		-6.27342361	-0.00031119	0.00019062	0.00031275	-0.00000116	0.00000000
+		-6.27342368	-0.00031116	0.00019060	0.00031272	-0.00000116	0.00000000
+		-6.27342376	-0.00031113	0.00019058	0.00031269	-0.00000116	0.00000000
+		-6.27342383	-0.00031110	0.00019057	0.00031266	-0.00000116	0.00000000
+		-6.27342391	-0.00031107	0.00019055	0.00031263	-0.00000116	0.00000000
+		-6.27342398	-0.00031104	0.00019053	0.00031260	-0.00000116	0.00000000
+		-6.27342406	-0.00031101	0.00019051	0.00031256	-0.00000116	0.00000000
+		-6.27342413	-0.00031097	0.00019049	0.00031253	-0.00000116	0.00000000
+		-6.27342421	-0.00031094	0.00019047	0.00031250	-0.00000116	0.00000000
+		-6.27342428	-0.00031091	0.00019045	0.00031247	-0.00000116	0.00000000
+		-6.27342436	-0.00031088	0.00019043	0.00031244	-0.00000116	0.00000000
+		-6.27342443	-0.00031085	0.00019041	0.00031241	-0.00000116	0.00000000
+		-6.27342451	-0.00031082	0.00019039	0.00031238	-0.00000116	0.00000000
+		-6.27342458	-0.00031079	0.00019037	0.00031235	-0.00000116	0.00000000
+		-6.27342466	-0.00031076	0.00019035	0.00031231	-0.00000116	0.00000000
+		-6.27342473	-0.00031072	0.00019034	0.00031228	-0.00000116	0.00000000
+		-6.27342480	-0.00031069	0.00019032	0.00031225	-0.00000116	0.00000000
+		-6.27342488	-0.00031066	0.00019030	0.00031222	-0.00000116	0.00000000
+		-6.27342495	-0.00031063	0.00019028	0.00031219	-0.00000116	0.00000000
+		-6.27342503	-0.00031060	0.00019026	0.00031216	-0.00000116	0.00000000
+		-6.27342510	-0.00031057	0.00019024	0.00031213	-0.00000116	0.00000000
+		-6.27342518	-0.00031054	0.00019022	0.00031209	-0.00000116	0.00000000
+		-6.27342525	-0.00031051	0.00019020	0.00031206	-0.00000116	0.00000000
+		-6.27342533	-0.00031047	0.00019018	0.00031203	-0.00000116	0.00000000
+		-6.27342540	-0.00031044	0.00019016	0.00031200	-0.00000116	0.00000000
+		-6.27342548	-0.00031041	0.00019014	0.00031197	-0.00000116	0.00000000
+		-6.27342555	-0.00031038	0.00019013	0.00031194	-0.00000116	0.00000000
+		-6.27342563	-0.00031035	0.00019011	0.00031191	-0.00000116	0.00000000
+		-6.27342570	-0.00031032	0.00019009	0.00031188	-0.00000116	0.00000000
+		-6.27342577	-0.00031029	0.00019007	0.00031184	-0.00000116	0.00000000
+		-6.27342585	-0.00031026	0.00019005	0.00031181	-0.00000116	0.00000000
+		-6.27342592	-0.00031023	0.00019003	0.00031178	-0.00000116	0.00000000
+		-6.27342600	-0.00031019	0.00019001	0.00031175	-0.00000116	0.00000000
+		-6.27342607	-0.00031016	0.00018999	0.00031172	-0.00000116	0.00000000
+		-6.27342615	-0.00031013	0.00018997	0.00031169	-0.00000116	0.00000000
+		-6.27342622	-0.00031010	0.00018995	0.00031166	-0.00000116	0.00000000
+		-6.27342630	-0.00031007	0.00018993	0.00031163	-0.00000116	0.00000000
+		-6.27342637	-0.00031004	0.00018992	0.00031159	-0.00000116	0.00000000
+		-6.27342644	-0.00031001	0.00018990	0.00031156	-0.00000116	0.00000000
+		-6.27342652	-0.00030998	0.00018988	0.00031153	-0.00000116	0.00000000
+		-6.27342659	-0.00030995	0.00018986	0.00031150	-0.00000116	0.00000000
+		-6.27342667	-0.00030992	0.00018984	0.00031147	-0.00000116	0.00000000
+		-6.27342674	-0.00030988	0.00018982	0.00031144	-0.00000116	0.00000000
+		-6.27342682	-0.00030985	0.00018980	0.00031141	-0.00000116	0.00000000
+		-6.27342689	-0.00030982	0.00018978	0.00031138	-0.00000116	0.00000000
+		-6.27342696	-0.00030979	0.00018976	0.00031134	-0.00000116	0.00000000
+		-6.27342704	-0.00030976	0.00018974	0.00031131	-0.00000116	0.00000000
+		-6.27342711	-0.00030973	0.00018973	0.00031128	-0.00000116	0.00000000
+		-6.27342719	-0.00030970	0.00018971	0.00031125	-0.00000116	0.00000000
+		-6.27342726	-0.00030967	0.00018969	0.00031122	-0.00000116	0.00000000
+		-6.27342733	-0.00030964	0.00018967	0.00031119	-0.00000116	0.00000000
+		-6.27342741	-0.00030961	0.00018965	0.00031116	-0.00000116	0.00000000
+		-6.27342748	-0.00030957	0.00018963	0.00031113	-0.00000116	0.00000000
+		-6.27342756	-0.00030954	0.00018961	0.00031110	-0.00000116	0.00000000
+		-6.27342763	-0.00030951	0.00018959	0.00031106	-0.00000116	0.00000000
+		-6.27342771	-0.00030948	0.00018957	0.00031103	-0.00000116	0.00000000
+		-6.27342778	-0.00030945	0.00018956	0.00031100	-0.00000116	0.00000000]; 
+
+	%cut off series at maxdeg: 
+	love_numbers(maxdeg+2:end,:)=[];
+
+	%retrive right type: 
+	if strcmpi(type,'loadingverticaldisplacement'),
+		series=love_numbers(:,1);
+	elseif strcmpi(type,'loadinggravitationalpotential'),
+		series=love_numbers(:,2);
+	elseif strcmpi(type,'loadinghorizontaldisplacement'),
+		series=love_numbers(:,3);
+	elseif strcmpi(type,'tidalverticaldisplacement'),
+		series=love_numbers(:,4);
+	elseif strcmpi(type,'tidalgravitationalpotential'),
+		series=love_numbers(:,5);
+	elseif strcmpi(type,'tidalhorizontaldisplacement'),
+		series=love_numbers(:,6);
+	else 
+		error(['love_numbers error message: unknown type:' type]);
+	end
+
+	% choose degree 1 term for CF reference system 
+	if strcmpi(frame,'CM'), 
+		return; 
+	elseif strcmpi(frame,'CF'), % from Blewitt, 2003, JGR
+		if strcmpi(type,'loadingverticaldisplacement'),
+			series(2,1) = -0.269; 
+		elseif strcmpi(type,'loadinggravitationalpotential'),
+			series(2,1) = 0.021;  
+		elseif strcmpi(type,'loadinghorizontaldisplacement'),
+			series(2,1) = 0.134; 
+		end
+	else 
+		error(['love_numbers error message: unknown reference frame:' frame]);
+	end
+
+
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/getlovenumbers.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/getlovenumbers.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/getlovenumbers.py	(revision 27955)
@@ -0,0 +1,10087 @@
+import numpy as np
+
+from pairoptions import pairoptions
+
+
+def getlovenumbers(*args):  # {{{
+    """GETLOVENUMBERS - provide love numbers retrieved from: 
+    http://www.srosat.com/iag-jsg/loveNb.php in a chosen reference frame
+
+    Usage:
+        series = love_numbers('type', 'loadingverticaldisplacement', 'referenceframe', 'CM', 'maxdeg', 1001)
+
+    - type = one of 'loadingverticaldisplacement', 
+    'loadinggravitationalpotential', 'loadinghorizontaldisplacement', 
+    'tidalverticaldisplacement', 'tidalgravitationalpotential', 
+    'tidalhorizontaldisplacement'
+    - reference_frame = one of 'CM' (default) and 'CF'
+    - maxdeg = default 1000
+
+    Example:
+        h = getlovenumbers('type', 'loadingverticaldisplacement', 'referenceframe', 'CM', 'maxdeg', maxdeg)
+        k = getlovenumbers('type', 'loadinggravitationalpotential', 'referenceframe', 'CM', 'maxdeg', maxdeg)
+        l = getlovenumbers('type', 'loadinghorizontaldisplacement', 'referenceframe', 'CM', 'maxdeg', maxdeg)
+        th = getlovenumbers('type', 'tidalverticaldisplacement', 'referenceframe', 'CM', 'maxdeg', maxdeg)
+        tk = getlovenumbers('type', 'tidalgravitationalpotential', 'referenceframe', 'CM', 'maxdeg', maxdeg)
+        tl = getlovenumbers('type', 'tidalhorizontaldisplacement', 'referenceframe', 'CM', 'maxdeg', maxdeg)
+    """
+
+    TYPES = [
+        'loadingverticaldisplacement', 
+        'loadinggravitationalpotential', 
+        'loadinghorizontaldisplacement', 
+        'tidalverticaldisplacement', 
+        'tidalgravitationalpotential', 
+        'tidalhorizontaldisplacement'
+    ]
+
+    # Recover options
+    options = pairoptions(*args)
+    type = options.getfieldvalue('type')
+    frame = options.getfieldvalue('referenceframe', 'CM')
+    maxdeg = options.getfieldvalue('maxdeg', 1000)
+
+    if (maxdeg > 10000):
+        raise Exception('PREM love numbers computed only for deg < 10,000. Request lower maxdeg')
+
+    if type not in TYPES:
+        raise Exception('type should be one of {}'.format(TYPES))
+
+    love_numbers = np.array([
+        [0.00000000, 0.00000000, 0.00000000, 0.00000000, 0.00000000, 0.00000000],
+        [-1.28740059, -1.00000000, -0.89858519, 0.00000000, 0.00000000, 0.00000000],
+        [-1.00025365, -0.30922675, 0.02060926, 0.62933648, 0.30136172, 0.08745784],
+        [-1.06243501, -0.19927948, 0.06801636, 0.29799672, 0.09304210, 0.01525258],
+        [-1.06779588, -0.13649834, 0.05667027, 0.18024117, 0.04181593, 0.01055799],
+        [-1.10365923, -0.10736896, 0.04401221, 0.13257950, 0.02455390, 0.00874595],
+        [-1.16440348, -0.09295485, 0.03638747, 0.10999739, 0.01694141, 0.00701045],
+        [-1.23634156, -0.08469861, 0.03202759, 0.09727833, 0.01279626, 0.00556581],
+        [-1.31140380, -0.07921412, 0.02937593, 0.08896691, 0.01019313, 0.00445157],
+        [-1.38582399, -0.07513541, 0.02762338, 0.08291950, 0.00840274, 0.00360620],
+        [-1.45807465, -0.07187005, 0.02638627, 0.07819716, 0.00709641, 0.00295944],
+        [-1.52763314, -0.06913154, 0.02547640, 0.07433538, 0.00610349, 0.00245649],
+        [-1.59437866, -0.06676258, 0.02479080, 0.07107472, 0.00532548, 0.00205857],
+        [-1.65833071, -0.06466619, 0.02426511, 0.06825469, 0.00470107, 0.00173889],
+        [-1.71954820, -0.06277732, 0.02385464, 0.06576832, 0.00418998, 0.00147872],
+        [-1.77809640, -0.06105001, 0.02352654, 0.06354080, 0.00376467, 0.00126474],
+        [-1.83403970, -0.05945081, 0.02325609, 0.06151811, 0.00340573, 0.00108719],
+        [-1.88744242, -0.05795502, 0.02302469, 0.05966045, 0.00309910, 0.00093879],
+        [-1.93837115, -0.05654418, 0.02281843, 0.05793806, 0.00283441, 0.00081397],
+        [-1.98689666, -0.05520447, 0.02262706, 0.05632844, 0.00260382, 0.00070843],
+        [-2.03309477, -0.05392545, 0.02244322, 0.05481440, 0.00240132, 0.00061877],
+        [-2.07704643, -0.05269926, 0.02226173, 0.05338269, 0.00222224, 0.00054227],
+        [-2.11883714, -0.05151988, 0.02207909, 0.05202300, 0.00206289, 0.00047675],
+        [-2.15855611, -0.05038274, 0.02189307, 0.05072723, 0.00192031, 0.00042043],
+        [-2.19629514, -0.04928430, 0.02170238, 0.04948894, 0.00179212, 0.00037187],
+        [-2.23214747, -0.04822179, 0.02150643, 0.04830294, 0.00167634, 0.00032986],
+        [-2.26620674, -0.04719301, 0.02130509, 0.04716500, 0.00157138, 0.00029341],
+        [-2.29856595, -0.04619619, 0.02109858, 0.04607163, 0.00147587, 0.00026171],
+        [-2.32931659, -0.04522983, 0.02088735, 0.04501989, 0.00138869, 0.00023405],
+        [-2.35854794, -0.04429270, 0.02067197, 0.04400725, 0.00130886, 0.00020985],
+        [-2.38634650, -0.04338368, 0.02045310, 0.04303154, 0.00123559, 0.00018864],
+        [-2.41279547, -0.04250179, 0.02023142, 0.04209082, 0.00116814, 0.00017000],
+        [-2.43797451, -0.04164613, 0.02000761, 0.04118337, 0.00110593, 0.00015358],
+        [-2.46195951, -0.04081583, 0.01978231, 0.04030761, 0.00104841, 0.00013908],
+        [-2.48482241, -0.04001011, 0.01955614, 0.03946212, 0.00099513, 0.00012625],
+        [-2.50663126, -0.03922817, 0.01932966, 0.03864555, 0.00094568, 0.00011488],
+        [-2.52745016, -0.03846928, 0.01910337, 0.03785666, 0.00089971, 0.00010477],
+        [-2.54733938, -0.03773269, 0.01887774, 0.03709428, 0.00085689, 0.00009577],
+        [-2.56635547, -0.03701769, 0.01865317, 0.03635731, 0.00081696, 0.00008775],
+        [-2.58455138, -0.03632358, 0.01843000, 0.03564469, 0.00077965, 0.00008057],
+        [-2.60197665, -0.03564968, 0.01820854, 0.03495543, 0.00074474, 0.00007415],
+        [-2.61867756, -0.03499532, 0.01798905, 0.03428858, 0.00071205, 0.00006839],
+        [-2.63469733, -0.03435985, 0.01777176, 0.03364323, 0.00068137, 0.00006322],
+        [-2.65007629, -0.03374263, 0.01755683, 0.03301851, 0.00065257, 0.00005857],
+        [-2.66485208, -0.03314303, 0.01734443, 0.03241359, 0.00062548, 0.00005438],
+        [-2.67905981, -0.03256047, 0.01713468, 0.03182769, 0.00059998, 0.00005059],
+        [-2.69273222, -0.03199435, 0.01692767, 0.03126003, 0.00057595, 0.00004717],
+        [-2.70589990, -0.03144411, 0.01672347, 0.03070991, 0.00055327, 0.00004407],
+        [-2.71859139, -0.03090919, 0.01652215, 0.03017662, 0.00053186, 0.00004127],
+        [-2.73083334, -0.03038907, 0.01632374, 0.02965950, 0.00051162, 0.00003872],
+        [-2.74265068, -0.02988323, 0.01612826, 0.02915791, 0.00049246, 0.00003641],
+        [-2.75406669, -0.02939118, 0.01593573, 0.02867125, 0.00047432, 0.00003431],
+        [-2.76510320, -0.02891245, 0.01574615, 0.02819894, 0.00045712, 0.00003239],
+        [-2.77578063, -0.02844656, 0.01555950, 0.02774043, 0.00044081, 0.00003065],
+        [-2.78611812, -0.02799309, 0.01537578, 0.02729517, 0.00042531, 0.00002905],
+        [-2.79613364, -0.02755161, 0.01519496, 0.02686267, 0.00041059, 0.00002760],
+        [-2.80584405, -0.02712170, 0.01501701, 0.02644244, 0.00039659, 0.00002627],
+        [-2.81526521, -0.02670298, 0.01484191, 0.02603402, 0.00038326, 0.00002505],
+        [-2.82441204, -0.02629506, 0.01466961, 0.02563696, 0.00037057, 0.00002393],
+        [-2.83329857, -0.02589759, 0.01450009, 0.02525085, 0.00035847, 0.00002291],
+        [-2.84193804, -0.02551021, 0.01433329, 0.02487527, 0.00034693, 0.00002197],
+        [-2.85034293, -0.02513260, 0.01416919, 0.02450984, 0.00033591, 0.00002111],
+        [-2.85852503, -0.02476443, 0.01400773, 0.02415420, 0.00032539, 0.00002031],
+        [-2.86649548, -0.02440538, 0.01384888, 0.02380798, 0.00031534, 0.00001958],
+        [-2.87426481, -0.02405518, 0.01369258, 0.02347086, 0.00030573, 0.00001891],
+        [-2.88184299, -0.02371352, 0.01353880, 0.02314250, 0.00029653, 0.00001829],
+        [-2.88923945, -0.02338014, 0.01338749, 0.02282261, 0.00028772, 0.00001772],
+        [-2.89646316, -0.02305478, 0.01323861, 0.02251087, 0.00027928, 0.00001720],
+        [-2.90352261, -0.02273718, 0.01309211, 0.02220702, 0.00027120, 0.00001671],
+        [-2.91042585, -0.02242710, 0.01294795, 0.02191078, 0.00026344, 0.00001626],
+        [-2.91718054, -0.02212431, 0.01280609, 0.02162189, 0.00025600, 0.00001585],
+        [-2.92379397, -0.02182859, 0.01266648, 0.02134010, 0.00024886, 0.00001546],
+        [-2.93027306, -0.02153971, 0.01252908, 0.02106517, 0.00024200, 0.00001511],
+        [-2.93662439, -0.02125748, 0.01239386, 0.02079689, 0.00023540, 0.00001478],
+        [-2.94285425, -0.02098169, 0.01226077, 0.02053502, 0.00022907, 0.00001447],
+        [-2.94896860, -0.02071215, 0.01212977, 0.02027936, 0.00022297, 0.00001419],
+        [-2.95497314, -0.02044868, 0.01200082, 0.02002971, 0.00021710, 0.00001392],
+        [-2.96087331, -0.02019110, 0.01187388, 0.01978587, 0.00021146, 0.00001368],
+        [-2.96667427, -0.01993924, 0.01174893, 0.01954767, 0.00020602, 0.00001345],
+        [-2.97238097, -0.01969293, 0.01162591, 0.01931492, 0.00020078, 0.00001324],
+        [-2.97799813, -0.01945201, 0.01150481, 0.01908746, 0.00019573, 0.00001305],
+        [-2.98353025, -0.01921634, 0.01138557, 0.01886511, 0.00019086, 0.00001286],
+        [-2.98898162, -0.01898576, 0.01126817, 0.01864773, 0.00018616, 0.00001269],
+        [-2.99435636, -0.01876014, 0.01115257, 0.01843516, 0.00018162, 0.00001253],
+        [-2.99965838, -0.01853932, 0.01103875, 0.01822725, 0.00017725, 0.00001238],
+        [-3.00489143, -0.01832319, 0.01092666, 0.01802387, 0.00017302, 0.00001224],
+        [-3.01005909, -0.01811161, 0.01081628, 0.01782489, 0.00016893, 0.00001211],
+        [-3.01516479, -0.01790446, 0.01070757, 0.01763017, 0.00016499, 0.00001199],
+        [-3.02021180, -0.01770162, 0.01060052, 0.01743958, 0.00016117, 0.00001187],
+        [-3.02520323, -0.01750298, 0.01049508, 0.01725302, 0.00015748, 0.00001177],
+        [-3.03014209, -0.01730842, 0.01039123, 0.01707036, 0.00015391, 0.00001166],
+        [-3.03503122, -0.01711783, 0.01028894, 0.01689149, 0.00015045, 0.00001157],
+        [-3.03987336, -0.01693111, 0.01018819, 0.01671631, 0.00014711, 0.00001148],
+        [-3.04467112, -0.01674816, 0.01008894, 0.01654470, 0.00014387, 0.00001139],
+        [-3.04942699, -0.01656889, 0.00999117, 0.01637658, 0.00014073, 0.00001131],
+        [-3.05414335, -0.01639319, 0.00989485, 0.01621185, 0.00013769, 0.00001124],
+        [-3.05882250, -0.01622097, 0.00979997, 0.01605041, 0.00013474, 0.00001116],
+        [-3.06346660, -0.01605215, 0.00970649, 0.01589217, 0.00013189, 0.00001109],
+        [-3.06807773, -0.01588664, 0.00961439, 0.01573705, 0.00012912, 0.00001103],
+        [-3.07265789, -0.01572436, 0.00952364, 0.01558496, 0.00012643, 0.00001097],
+        [-3.07720897, -0.01556522, 0.00943423, 0.01543582, 0.00012382, 0.00001091],
+        [-3.08173279, -0.01540916, 0.00934613, 0.01528956, 0.00012129, 0.00001085],
+        [-3.08623109, -0.01525608, 0.00925931, 0.01514610, 0.00011883, 0.00001080],
+        [-3.09070551, -0.01510592, 0.00917376, 0.01500536, 0.00011645, 0.00001074],
+        [-3.09515765, -0.01495861, 0.00908946, 0.01486728, 0.00011413, 0.00001069],
+        [-3.09958899, -0.01481408, 0.00900637, 0.01473179, 0.00011188, 0.00001064],
+        [-3.10400100, -0.01467225, 0.00892449, 0.01459882, 0.00010969, 0.00001060],
+        [-3.10839504, -0.01453308, 0.00884379, 0.01446831, 0.00010756, 0.00001055],
+        [-3.11277241, -0.01439648, 0.00876425, 0.01434019, 0.00010549, 0.00001051],
+        [-3.11713438, -0.01426240, 0.00868586, 0.01421441, 0.00010348, 0.00001047],
+        [-3.12148213, -0.01413079, 0.00860858, 0.01409091, 0.00010152, 0.00001042],
+        [-3.12581680, -0.01400157, 0.00853241, 0.01396963, 0.00009962, 0.00001038],
+        [-3.13013947, -0.01387471, 0.00845733, 0.01385052, 0.00009776, 0.00001034],
+        [-3.13445117, -0.01375013, 0.00838331, 0.01373352, 0.00009596, 0.00001031],
+        [-3.13875289, -0.01362779, 0.00831034, 0.01361859, 0.00009420, 0.00001027],
+        [-3.14304556, -0.01350764, 0.00823841, 0.01350567, 0.00009249, 0.00001023],
+        [-3.14733008, -0.01338963, 0.00816748, 0.01339472, 0.00009083, 0.00001020],
+        [-3.15160728, -0.01327370, 0.00809756, 0.01328569, 0.00008920, 0.00001016],
+        [-3.15587797, -0.01315981, 0.00802862, 0.01317853, 0.00008762, 0.00001012],
+        [-3.16014293, -0.01304792, 0.00796064, 0.01307320, 0.00008608, 0.00001009],
+        [-3.16440288, -0.01293797, 0.00789361, 0.01296967, 0.00008458, 0.00001006],
+        [-3.16865852, -0.01282993, 0.00782751, 0.01286788, 0.00008311, 0.00001002],
+        [-3.17291049, -0.01272375, 0.00776233, 0.01276779, 0.00008169, 0.00000999],
+        [-3.17715942, -0.01261940, 0.00769805, 0.01266938, 0.00008029, 0.00000996],
+        [-3.18140591, -0.01251682, 0.00763466, 0.01257259, 0.00007893, 0.00000992],
+        [-3.18565052, -0.01241598, 0.00757215, 0.01247740, 0.00007761, 0.00000989],
+        [-3.18989378, -0.01231685, 0.00751049, 0.01238376, 0.00007631, 0.00000986],
+        [-3.19413619, -0.01221938, 0.00744968, 0.01229165, 0.00007505, 0.00000983],
+        [-3.19837823, -0.01212354, 0.00738970, 0.01220103, 0.00007381, 0.00000979],
+        [-3.20262035, -0.01202930, 0.00733053, 0.01211186, 0.00007261, 0.00000976],
+        [-3.20686298, -0.01193661, 0.00727217, 0.01202412, 0.00007143, 0.00000973],
+        [-3.21110653, -0.01184546, 0.00721461, 0.01193777, 0.00007028, 0.00000970],
+        [-3.21535137, -0.01175579, 0.00715782, 0.01185279, 0.00006916, 0.00000967],
+        [-3.21959786, -0.01166759, 0.00710179, 0.01176914, 0.00006806, 0.00000964],
+        [-3.22384634, -0.01158082, 0.00704652, 0.01168680, 0.00006699, 0.00000961],
+        [-3.22809714, -0.01149545, 0.00699199, 0.01160573, 0.00006594, 0.00000957],
+        [-3.23235055, -0.01141146, 0.00693819, 0.01152591, 0.00006492, 0.00000954],
+        [-3.23660685, -0.01132880, 0.00688511, 0.01144732, 0.00006392, 0.00000951],
+        [-3.24086631, -0.01124746, 0.00683273, 0.01136993, 0.00006294, 0.00000948],
+        [-3.24512918, -0.01116741, 0.00678105, 0.01129371, 0.00006198, 0.00000945],
+        [-3.24939569, -0.01108862, 0.00673005, 0.01121864, 0.00006105, 0.00000942],
+        [-3.25366606, -0.01101107, 0.00667973, 0.01114470, 0.00006013, 0.00000939],
+        [-3.25794050, -0.01093473, 0.00663007, 0.01107186, 0.00005923, 0.00000936],
+        [-3.26221918, -0.01085957, 0.00658106, 0.01100010, 0.00005835, 0.00000932],
+        [-3.26650230, -0.01078557, 0.00653269, 0.01092939, 0.00005750, 0.00000929],
+        [-3.27079000, -0.01071272, 0.00648495, 0.01085973, 0.00005665, 0.00000926],
+        [-3.27508246, -0.01064097, 0.00643784, 0.01079108, 0.00005583, 0.00000923],
+        [-3.27937980, -0.01057032, 0.00639134, 0.01072343, 0.00005503, 0.00000920],
+        [-3.28368216, -0.01050074, 0.00634544, 0.01065676, 0.00005424, 0.00000917],
+        [-3.28798965, -0.01043222, 0.00630013, 0.01059104, 0.00005346, 0.00000914],
+        [-3.29230239, -0.01036472, 0.00625541, 0.01052626, 0.00005271, 0.00000910],
+        [-3.29662047, -0.01029823, 0.00621126, 0.01046241, 0.00005196, 0.00000907],
+        [-3.30094399, -0.01023273, 0.00616768, 0.01039945, 0.00005124, 0.00000904],
+        [-3.30527303, -0.01016819, 0.00612465, 0.01033738, 0.00005053, 0.00000901],
+        [-3.30960766, -0.01010461, 0.00608218, 0.01027618, 0.00004983, 0.00000898],
+        [-3.31394795, -0.01004197, 0.00604024, 0.01021583, 0.00004914, 0.00000895],
+        [-3.31829395, -0.00998024, 0.00599883, 0.01015631, 0.00004847, 0.00000891],
+        [-3.32264573, -0.00991940, 0.00595795, 0.01009762, 0.00004781, 0.00000888],
+        [-3.32700331, -0.00985945, 0.00591759, 0.01003973, 0.00004717, 0.00000885],
+        [-3.33136675, -0.00980035, 0.00587773, 0.00998262, 0.00004654, 0.00000882],
+        [-3.33573607, -0.00974211, 0.00583838, 0.00992630, 0.00004592, 0.00000879],
+        [-3.34011130, -0.00968470, 0.00579951, 0.00987073, 0.00004531, 0.00000875],
+        [-3.34449246, -0.00962810, 0.00576113, 0.00981591, 0.00004471, 0.00000872],
+        [-3.34887956, -0.00957230, 0.00572323, 0.00976182, 0.00004413, 0.00000869],
+        [-3.35327261, -0.00951729, 0.00568581, 0.00970845, 0.00004355, 0.00000866],
+        [-3.35767163, -0.00946304, 0.00564884, 0.00965578, 0.00004299, 0.00000863],
+        [-3.36207660, -0.00940956, 0.00561233, 0.00960381, 0.00004244, 0.00000859],
+        [-3.36648753, -0.00935681, 0.00557627, 0.00955252, 0.00004189, 0.00000856],
+        [-3.37090440, -0.00930480, 0.00554066, 0.00950190, 0.00004136, 0.00000853],
+        [-3.37532721, -0.00925350, 0.00550548, 0.00945194, 0.00004084, 0.00000850],
+        [-3.37975593, -0.00920290, 0.00547073, 0.00940262, 0.00004032, 0.00000847],
+        [-3.38419056, -0.00915300, 0.00543641, 0.00935393, 0.00003982, 0.00000843],
+        [-3.38863105, -0.00910377, 0.00540251, 0.00930586, 0.00003932, 0.00000840],
+        [-3.39307740, -0.00905520, 0.00536901, 0.00925841, 0.00003884, 0.00000837],
+        [-3.39752956, -0.00900729, 0.00533593, 0.00921156, 0.00003836, 0.00000834],
+        [-3.40198751, -0.00896002, 0.00530324, 0.00916530, 0.00003789, 0.00000830],
+        [-3.40645121, -0.00891338, 0.00527095, 0.00911962, 0.00003743, 0.00000827],
+        [-3.41092063, -0.00886736, 0.00523904, 0.00907451, 0.00003697, 0.00000824],
+        [-3.41539571, -0.00882195, 0.00520752, 0.00902996, 0.00003653, 0.00000821],
+        [-3.41987643, -0.00877713, 0.00517637, 0.00898596, 0.00003609, 0.00000817],
+        [-3.42436272, -0.00873290, 0.00514560, 0.00894250, 0.00003566, 0.00000814],
+        [-3.42885456, -0.00868925, 0.00511520, 0.00889958, 0.00003524, 0.00000811],
+        [-3.43335188, -0.00864617, 0.00508515, 0.00885718, 0.00003482, 0.00000808],
+        [-3.43785464, -0.00860364, 0.00505546, 0.00881530, 0.00003441, 0.00000804],
+        [-3.44236278, -0.00856166, 0.00502613, 0.00877392, 0.00003401, 0.00000801],
+        [-3.44687625, -0.00852021, 0.00499714, 0.00873304, 0.00003361, 0.00000798],
+        [-3.45139500, -0.00847930, 0.00496849, 0.00869264, 0.00003323, 0.00000795],
+        [-3.45591895, -0.00843890, 0.00494017, 0.00865273, 0.00003284, 0.00000791],
+        [-3.46044807, -0.00839902, 0.00491219, 0.00861330, 0.00003247, 0.00000788],
+        [-3.46498227, -0.00835964, 0.00488454, 0.00857433, 0.00003210, 0.00000785],
+        [-3.46952151, -0.00832075, 0.00485721, 0.00853582, 0.00003173, 0.00000782],
+        [-3.47406572, -0.00828234, 0.00483019, 0.00849776, 0.00003138, 0.00000778],
+        [-3.47861484, -0.00824442, 0.00480349, 0.00846014, 0.00003102, 0.00000775],
+        [-3.48316880, -0.00820696, 0.00477710, 0.00842296, 0.00003068, 0.00000772],
+        [-3.48772753, -0.00816996, 0.00475102, 0.00838622, 0.00003034, 0.00000769],
+        [-3.49229097, -0.00813342, 0.00472523, 0.00834989, 0.00003000, 0.00000766],
+        [-3.49685904, -0.00809733, 0.00469975, 0.00831398, 0.00002967, 0.00000762],
+        [-3.50143169, -0.00806167, 0.00467455, 0.00827848, 0.00002935, 0.00000759],
+        [-3.50600884, -0.00802644, 0.00464964, 0.00824338, 0.00002903, 0.00000756],
+        [-3.51059042, -0.00799164, 0.00462502, 0.00820868, 0.00002871, 0.00000753],
+        [-3.51517637, -0.00795726, 0.00460068, 0.00817437, 0.00002840, 0.00000750],
+        [-3.51976660, -0.00792329, 0.00457662, 0.00814045, 0.00002810, 0.00000746],
+        [-3.52436105, -0.00788972, 0.00455283, 0.00810691, 0.00002779, 0.00000743],
+        [-3.52895964, -0.00785655, 0.00452930, 0.00807373, 0.00002750, 0.00000740],
+        [-3.53356231, -0.00782377, 0.00450605, 0.00804093, 0.00002721, 0.00000737],
+        [-3.53816898, -0.00779138, 0.00448306, 0.00800849, 0.00002692, 0.00000734],
+        [-3.54277957, -0.00775937, 0.00446032, 0.00797640, 0.00002664, 0.00000730],
+        [-3.54739402, -0.00772773, 0.00443784, 0.00794466, 0.00002636, 0.00000727],
+        [-3.55201224, -0.00769645, 0.00441562, 0.00791327, 0.00002608, 0.00000724],
+        [-3.55663417, -0.00766554, 0.00439364, 0.00788222, 0.00002581, 0.00000721],
+        [-3.56125973, -0.00763498, 0.00437190, 0.00785151, 0.00002555, 0.00000718],
+        [-3.56588885, -0.00760478, 0.00435041, 0.00782113, 0.00002528, 0.00000715],
+        [-3.57052145, -0.00757491, 0.00432916, 0.00779107, 0.00002502, 0.00000712],
+        [-3.57515745, -0.00754539, 0.00430814, 0.00776133, 0.00002477, 0.00000708],
+        [-3.57979678, -0.00751620, 0.00428736, 0.00773191, 0.00002452, 0.00000705],
+        [-3.58443937, -0.00748734, 0.00426681, 0.00770279, 0.00002427, 0.00000702],
+        [-3.58908514, -0.00745880, 0.00424648, 0.00767399, 0.00002403, 0.00000699],
+        [-3.59373401, -0.00743059, 0.00422637, 0.00764549, 0.00002379, 0.00000696],
+        [-3.59838592, -0.00740268, 0.00420649, 0.00761728, 0.00002355, 0.00000693],
+        [-3.60304078, -0.00737509, 0.00418682, 0.00758937, 0.00002331, 0.00000690],
+        [-3.60769852, -0.00734780, 0.00416737, 0.00756175, 0.00002308, 0.00000687],
+        [-3.61235907, -0.00732081, 0.00414813, 0.00753441, 0.00002286, 0.00000684],
+        [-3.61702235, -0.00729411, 0.00412910, 0.00750735, 0.00002263, 0.00000681],
+        [-3.62168828, -0.00726771, 0.00411028, 0.00748058, 0.00002241, 0.00000678],
+        [-3.62635680, -0.00724159, 0.00409166, 0.00745407, 0.00002219, 0.00000674],
+        [-3.63102782, -0.00721575, 0.00407325, 0.00742783, 0.00002198, 0.00000671],
+        [-3.63570128, -0.00719020, 0.00405503, 0.00740186, 0.00002176, 0.00000668],
+        [-3.64037709, -0.00716491, 0.00403700, 0.00737615, 0.00002156, 0.00000665],
+        [-3.64505519, -0.00713990, 0.00401918, 0.00735070, 0.00002135, 0.00000662],
+        [-3.64973550, -0.00711515, 0.00400154, 0.00732550, 0.00002115, 0.00000659],
+        [-3.65441795, -0.00709066, 0.00398409, 0.00730055, 0.00002094, 0.00000656],
+        [-3.65910247, -0.00706643, 0.00396683, 0.00727585, 0.00002075, 0.00000653],
+        [-3.66378898, -0.00704246, 0.00394975, 0.00725140, 0.00002055, 0.00000650],
+        [-3.66847740, -0.00701873, 0.00393286, 0.00722718, 0.00002036, 0.00000647],
+        [-3.67316767, -0.00699526, 0.00391614, 0.00720320, 0.00002017, 0.00000644],
+        [-3.67785972, -0.00697202, 0.00389960, 0.00717946, 0.00001998, 0.00000641],
+        [-3.68255347, -0.00694903, 0.00388324, 0.00715594, 0.00001979, 0.00000638],
+        [-3.68724885, -0.00692627, 0.00386705, 0.00713266, 0.00001961, 0.00000636],
+        [-3.69194579, -0.00690374, 0.00385103, 0.00710959, 0.00001943, 0.00000633],
+        [-3.69664421, -0.00688145, 0.00383518, 0.00708675, 0.00001925, 0.00000630],
+        [-3.70134406, -0.00685938, 0.00381949, 0.00706413, 0.00001907, 0.00000627],
+        [-3.70604525, -0.00683753, 0.00380397, 0.00704173, 0.00001890, 0.00000624],
+        [-3.71074772, -0.00681590, 0.00378861, 0.00701953, 0.00001873, 0.00000621],
+        [-3.71545140, -0.00679449, 0.00377342, 0.00699755, 0.00001856, 0.00000618],
+        [-3.72015622, -0.00677330, 0.00375838, 0.00697577, 0.00001839, 0.00000615],
+        [-3.72486211, -0.00675231, 0.00374349, 0.00695420, 0.00001823, 0.00000612],
+        [-3.72956899, -0.00673153, 0.00372877, 0.00693283, 0.00001806, 0.00000609],
+        [-3.73427682, -0.00671096, 0.00371419, 0.00691165, 0.00001790, 0.00000607],
+        [-3.73898550, -0.00669059, 0.00369976, 0.00689068, 0.00001774, 0.00000604],
+        [-3.74369498, -0.00667042, 0.00368549, 0.00686989, 0.00001759, 0.00000601],
+        [-3.74840519, -0.00665044, 0.00367136, 0.00684930, 0.00001743, 0.00000598],
+        [-3.75311607, -0.00663066, 0.00365738, 0.00682890, 0.00001728, 0.00000595],
+        [-3.75782754, -0.00661107, 0.00364354, 0.00680868, 0.00001713, 0.00000592],
+        [-3.76253955, -0.00659167, 0.00362984, 0.00678865, 0.00001698, 0.00000590],
+        [-3.76725202, -0.00657245, 0.00361628, 0.00676880, 0.00001683, 0.00000587],
+        [-3.77196489, -0.00655341, 0.00360286, 0.00674913, 0.00001668, 0.00000584],
+        [-3.77667809, -0.00653456, 0.00358958, 0.00672963, 0.00001654, 0.00000581],
+        [-3.78139156, -0.00651589, 0.00357643, 0.00671031, 0.00001640, 0.00000579],
+        [-3.78610525, -0.00649739, 0.00356342, 0.00669116, 0.00001625, 0.00000576],
+        [-3.79081907, -0.00647906, 0.00355053, 0.00667218, 0.00001612, 0.00000573],
+        [-3.79553298, -0.00646091, 0.00353778, 0.00665337, 0.00001598, 0.00000570],
+        [-3.80024690, -0.00644292, 0.00352516, 0.00663472, 0.00001584, 0.00000568],
+        [-3.80496078, -0.00642510, 0.00351266, 0.00661624, 0.00001571, 0.00000565],
+        [-3.80967455, -0.00640745, 0.00350029, 0.00659792, 0.00001557, 0.00000562],
+        [-3.81438815, -0.00638996, 0.00348804, 0.00657976, 0.00001544, 0.00000560],
+        [-3.81910152, -0.00637262, 0.00347592, 0.00656176, 0.00001531, 0.00000557],
+        [-3.82381460, -0.00635545, 0.00346392, 0.00654391, 0.00001519, 0.00000554],
+        [-3.82852732, -0.00633843, 0.00345204, 0.00652622, 0.00001506, 0.00000552],
+        [-3.83323964, -0.00632157, 0.00344027, 0.00650867, 0.00001493, 0.00000549],
+        [-3.83795149, -0.00630485, 0.00342863, 0.00649128, 0.00001481, 0.00000546],
+        [-3.84266280, -0.00628829, 0.00341709, 0.00647404, 0.00001469, 0.00000544],
+        [-3.84737353, -0.00627187, 0.00340568, 0.00645694, 0.00001457, 0.00000541],
+        [-3.85208361, -0.00625560, 0.00339437, 0.00643998, 0.00001445, 0.00000538],
+        [-3.85679299, -0.00623948, 0.00338318, 0.00642317, 0.00001433, 0.00000536],
+        [-3.86150160, -0.00622349, 0.00337210, 0.00640650, 0.00001421, 0.00000533],
+        [-3.86620939, -0.00620765, 0.00336112, 0.00638997, 0.00001410, 0.00000531],
+        [-3.87091631, -0.00619194, 0.00335026, 0.00637358, 0.00001398, 0.00000528],
+        [-3.87562229, -0.00617637, 0.00333950, 0.00635732, 0.00001387, 0.00000526],
+        [-3.88032729, -0.00616094, 0.00332885, 0.00634120, 0.00001376, 0.00000523],
+        [-3.88503124, -0.00614564, 0.00331830, 0.00632520, 0.00001364, 0.00000521],
+        [-3.88973410, -0.00613047, 0.00330785, 0.00630934, 0.00001354, 0.00000518],
+        [-3.89443580, -0.00611543, 0.00329750, 0.00629361, 0.00001343, 0.00000515],
+        [-3.89913629, -0.00610051, 0.00328726, 0.00627801, 0.00001332, 0.00000513],
+        [-3.90383552, -0.00608573, 0.00327711, 0.00626253, 0.00001321, 0.00000510],
+        [-3.90853343, -0.00607107, 0.00326707, 0.00624718, 0.00001311, 0.00000508],
+        [-3.91322998, -0.00605653, 0.00325712, 0.00623195, 0.00001301, 0.00000506],
+        [-3.91792511, -0.00604212, 0.00324726, 0.00621684, 0.00001290, 0.00000503],
+        [-3.92261876, -0.00602782, 0.00323750, 0.00620185, 0.00001280, 0.00000501],
+        [-3.92731089, -0.00601364, 0.00322784, 0.00618698, 0.00001270, 0.00000498],
+        [-3.93200144, -0.00599958, 0.00321826, 0.00617223, 0.00001260, 0.00000496],
+        [-3.93669036, -0.00598564, 0.00320878, 0.00615760, 0.00001250, 0.00000493],
+        [-3.94137761, -0.00597181, 0.00319939, 0.00614308, 0.00001241, 0.00000491],
+        [-3.94606313, -0.00595809, 0.00319009, 0.00612867, 0.00001231, 0.00000488],
+        [-3.95074687, -0.00594449, 0.00318088, 0.00611438, 0.00001221, 0.00000486],
+        [-3.95542878, -0.00593099, 0.00317175, 0.00610019, 0.00001212, 0.00000484],
+        [-3.96010882, -0.00591761, 0.00316271, 0.00608612, 0.00001203, 0.00000481],
+        [-3.96478693, -0.00590433, 0.00315376, 0.00607215, 0.00001193, 0.00000479],
+        [-3.96946306, -0.00589116, 0.00314489, 0.00605829, 0.00001184, 0.00000477],
+        [-3.97413718, -0.00587809, 0.00313611, 0.00604454, 0.00001175, 0.00000474],
+        [-3.97880922, -0.00586512, 0.00312740, 0.00603089, 0.00001166, 0.00000472],
+        [-3.98347915, -0.00585226, 0.00311878, 0.00601735, 0.00001157, 0.00000470],
+        [-3.98814692, -0.00583950, 0.00311024, 0.00600390, 0.00001149, 0.00000467],
+        [-3.99281247, -0.00582684, 0.00310178, 0.00599056, 0.00001140, 0.00000465],
+        [-3.99747577, -0.00581428, 0.00309340, 0.00597732, 0.00001131, 0.00000463],
+        [-4.00213677, -0.00580181, 0.00308510, 0.00596417, 0.00001123, 0.00000460],
+        [-4.00679542, -0.00578944, 0.00307688, 0.00595113, 0.00001114, 0.00000458],
+        [-4.01145168, -0.00577717, 0.00306873, 0.00593818, 0.00001106, 0.00000456],
+        [-4.01610551, -0.00576499, 0.00306065, 0.00592532, 0.00001098, 0.00000454],
+        [-4.02075685, -0.00575290, 0.00305266, 0.00591256, 0.00001090, 0.00000451],
+        [-4.02540567, -0.00574091, 0.00304473, 0.00589990, 0.00001082, 0.00000449],
+        [-4.03005191, -0.00572900, 0.00303688, 0.00588732, 0.00001073, 0.00000447],
+        [-4.03469555, -0.00571719, 0.00302910, 0.00587484, 0.00001066, 0.00000445],
+        [-4.03933654, -0.00570546, 0.00302139, 0.00586244, 0.00001058, 0.00000443],
+        [-4.04397482, -0.00569382, 0.00301375, 0.00585014, 0.00001050, 0.00000440],
+        [-4.04861037, -0.00568227, 0.00300619, 0.00583792, 0.00001042, 0.00000438],
+        [-4.05324314, -0.00567080, 0.00299869, 0.00582579, 0.00001035, 0.00000436],
+        [-4.05787308, -0.00565942, 0.00299126, 0.00581375, 0.00001027, 0.00000434],
+        [-4.06250017, -0.00564812, 0.00298390, 0.00580179, 0.00001019, 0.00000432],
+        [-4.06712435, -0.00563690, 0.00297660, 0.00578992, 0.00001012, 0.00000430],
+        [-4.07174558, -0.00562577, 0.00296937, 0.00577813, 0.00001005, 0.00000427],
+        [-4.07636383, -0.00561471, 0.00296221, 0.00576642, 0.00000997, 0.00000425],
+        [-4.08097906, -0.00560374, 0.00295511, 0.00575480, 0.00000990, 0.00000423],
+        [-4.08559122, -0.00559284, 0.00294807, 0.00574325, 0.00000983, 0.00000421],
+        [-4.09020028, -0.00558202, 0.00294110, 0.00573179, 0.00000976, 0.00000419],
+        [-4.09480620, -0.00557128, 0.00293419, 0.00572040, 0.00000969, 0.00000417],
+        [-4.09940894, -0.00556061, 0.00292734, 0.00570909, 0.00000962, 0.00000415],
+        [-4.10400846, -0.00555002, 0.00292056, 0.00569786, 0.00000955, 0.00000413],
+        [-4.10860473, -0.00553950, 0.00291383, 0.00568670, 0.00000948, 0.00000411],
+        [-4.11319770, -0.00552906, 0.00290717, 0.00567562, 0.00000942, 0.00000409],
+        [-4.11778734, -0.00551869, 0.00290056, 0.00566462, 0.00000935, 0.00000407],
+        [-4.12237362, -0.00550839, 0.00289401, 0.00565369, 0.00000928, 0.00000405],
+        [-4.12695649, -0.00549816, 0.00288752, 0.00564283, 0.00000922, 0.00000403],
+        [-4.13153592, -0.00548801, 0.00288109, 0.00563204, 0.00000915, 0.00000401],
+        [-4.13611188, -0.00547792, 0.00287471, 0.00562133, 0.00000909, 0.00000399],
+        [-4.14068433, -0.00546790, 0.00286839, 0.00561069, 0.00000902, 0.00000397],
+        [-4.14525323, -0.00545795, 0.00286213, 0.00560011, 0.00000896, 0.00000395],
+        [-4.14981854, -0.00544806, 0.00285592, 0.00558961, 0.00000890, 0.00000393],
+        [-4.15438025, -0.00543824, 0.00284976, 0.00557918, 0.00000883, 0.00000391],
+        [-4.15893830, -0.00542849, 0.00284366, 0.00556881, 0.00000877, 0.00000389],
+        [-4.16349267, -0.00541880, 0.00283761, 0.00555851, 0.00000871, 0.00000387],
+        [-4.16804332, -0.00540918, 0.00283162, 0.00554827, 0.00000865, 0.00000385],
+        [-4.17259021, -0.00539962, 0.00282567, 0.00553811, 0.00000859, 0.00000383],
+        [-4.17713333, -0.00539012, 0.00281978, 0.00552800, 0.00000853, 0.00000381],
+        [-4.18167262, -0.00538069, 0.00281394, 0.00551796, 0.00000847, 0.00000379],
+        [-4.18620807, -0.00537131, 0.00280815, 0.00550799, 0.00000841, 0.00000377],
+        [-4.19073963, -0.00536200, 0.00280241, 0.00549808, 0.00000836, 0.00000375],
+        [-4.19526728, -0.00535274, 0.00279671, 0.00548823, 0.00000830, 0.00000373],
+        [-4.19979098, -0.00534355, 0.00279107, 0.00547844, 0.00000824, 0.00000372],
+        [-4.20431070, -0.00533441, 0.00278548, 0.00546871, 0.00000818, 0.00000370],
+        [-4.20882641, -0.00532534, 0.00277993, 0.00545905, 0.00000813, 0.00000368],
+        [-4.21333809, -0.00531632, 0.00277443, 0.00544944, 0.00000807, 0.00000366],
+        [-4.21784569, -0.00530735, 0.00276897, 0.00543989, 0.00000802, 0.00000364],
+        [-4.22234919, -0.00529845, 0.00276357, 0.00543040, 0.00000796, 0.00000362],
+        [-4.22684856, -0.00528959, 0.00275820, 0.00542097, 0.00000791, 0.00000361],
+        [-4.23134377, -0.00528080, 0.00275289, 0.00541160, 0.00000786, 0.00000359],
+        [-4.23583479, -0.00527206, 0.00274762, 0.00540228, 0.00000780, 0.00000357],
+        [-4.24032159, -0.00526337, 0.00274239, 0.00539302, 0.00000775, 0.00000355],
+        [-4.24480413, -0.00525473, 0.00273720, 0.00538382, 0.00000770, 0.00000353],
+        [-4.24928241, -0.00524615, 0.00273206, 0.00537467, 0.00000765, 0.00000352],
+        [-4.25375637, -0.00523762, 0.00272697, 0.00536557, 0.00000759, 0.00000350],
+        [-4.25822600, -0.00522914, 0.00272191, 0.00535653, 0.00000754, 0.00000348],
+        [-4.26269127, -0.00522071, 0.00271690, 0.00534754, 0.00000749, 0.00000346],
+        [-4.26715214, -0.00521233, 0.00271193, 0.00533861, 0.00000744, 0.00000345],
+        [-4.27160860, -0.00520401, 0.00270700, 0.00532973, 0.00000739, 0.00000343],
+        [-4.27606061, -0.00519573, 0.00270211, 0.00532090, 0.00000734, 0.00000341],
+        [-4.28050816, -0.00518750, 0.00269726, 0.00531212, 0.00000729, 0.00000339],
+        [-4.28495120, -0.00517932, 0.00269245, 0.00530339, 0.00000725, 0.00000338],
+        [-4.28938971, -0.00517119, 0.00268767, 0.00529471, 0.00000720, 0.00000336],
+        [-4.29382368, -0.00516310, 0.00268294, 0.00528608, 0.00000715, 0.00000334],
+        [-4.29825306, -0.00515506, 0.00267825, 0.00527750, 0.00000710, 0.00000333],
+        [-4.30267785, -0.00514707, 0.00267359, 0.00526897, 0.00000706, 0.00000331],
+        [-4.30709800, -0.00513912, 0.00266898, 0.00526049, 0.00000701, 0.00000329],
+        [-4.31151350, -0.00513122, 0.00266440, 0.00525206, 0.00000696, 0.00000328],
+        [-4.31592431, -0.00512337, 0.00265985, 0.00524367, 0.00000692, 0.00000326],
+        [-4.32033043, -0.00511555, 0.00265535, 0.00523533, 0.00000687, 0.00000324],
+        [-4.32473181, -0.00510779, 0.00265088, 0.00522704, 0.00000683, 0.00000323],
+        [-4.32912844, -0.00510006, 0.00264644, 0.00521879, 0.00000678, 0.00000321],
+        [-4.33352030, -0.00509238, 0.00264204, 0.00521059, 0.00000674, 0.00000319],
+        [-4.33790735, -0.00508474, 0.00263768, 0.00520243, 0.00000669, 0.00000318],
+        [-4.34228957, -0.00507715, 0.00263335, 0.00519432, 0.00000665, 0.00000316],
+        [-4.34666695, -0.00506959, 0.00262906, 0.00518625, 0.00000661, 0.00000315],
+        [-4.35103946, -0.00506208, 0.00262479, 0.00517822, 0.00000656, 0.00000313],
+        [-4.35540706, -0.00505461, 0.00262057, 0.00517024, 0.00000652, 0.00000311],
+        [-4.35976976, -0.00504718, 0.00261637, 0.00516230, 0.00000648, 0.00000310],
+        [-4.36412751, -0.00503978, 0.00261221, 0.00515441, 0.00000644, 0.00000308],
+        [-4.36848029, -0.00503243, 0.00260808, 0.00514656, 0.00000639, 0.00000307],
+        [-4.37282810, -0.00502512, 0.00260399, 0.00513874, 0.00000635, 0.00000305],
+        [-4.37717089, -0.00501785, 0.00259992, 0.00513097, 0.00000631, 0.00000304],
+        [-4.38150866, -0.00501061, 0.00259589, 0.00512324, 0.00000627, 0.00000302],
+        [-4.38584137, -0.00500341, 0.00259189, 0.00511555, 0.00000623, 0.00000301],
+        [-4.39016901, -0.00499626, 0.00258792, 0.00510791, 0.00000619, 0.00000299],
+        [-4.39449156, -0.00498913, 0.00258397, 0.00510030, 0.00000615, 0.00000298],
+        [-4.39880900, -0.00498205, 0.00258006, 0.00509273, 0.00000611, 0.00000296],
+        [-4.40312130, -0.00497500, 0.00257618, 0.00508520, 0.00000607, 0.00000295],
+        [-4.40742845, -0.00496799, 0.00257233, 0.00507770, 0.00000603, 0.00000293],
+        [-4.41173042, -0.00496101, 0.00256851, 0.00507025, 0.00000599, 0.00000292],
+        [-4.41602719, -0.00495407, 0.00256472, 0.00506283, 0.00000596, 0.00000290],
+        [-4.42031875, -0.00494717, 0.00256096, 0.00505545, 0.00000592, 0.00000289],
+        [-4.42460508, -0.00494030, 0.00255722, 0.00504811, 0.00000588, 0.00000287],
+        [-4.42888615, -0.00493346, 0.00255351, 0.00504081, 0.00000584, 0.00000286],
+        [-4.43316194, -0.00492666, 0.00254984, 0.00503354, 0.00000581, 0.00000284],
+        [-4.43743244, -0.00491989, 0.00254618, 0.00502631, 0.00000577, 0.00000283],
+        [-4.44169763, -0.00491316, 0.00254256, 0.00501911, 0.00000573, 0.00000281],
+        [-4.44595749, -0.00490646, 0.00253896, 0.00501195, 0.00000570, 0.00000280],
+        [-4.45021200, -0.00489979, 0.00253539, 0.00500482, 0.00000566, 0.00000279],
+        [-4.45446115, -0.00489316, 0.00253185, 0.00499773, 0.00000562, 0.00000277],
+        [-4.45870490, -0.00488655, 0.00252833, 0.00499068, 0.00000559, 0.00000276],
+        [-4.46294326, -0.00487998, 0.00252484, 0.00498365, 0.00000555, 0.00000274],
+        [-4.46717619, -0.00487344, 0.00252137, 0.00497667, 0.00000552, 0.00000273],
+        [-4.47140368, -0.00486693, 0.00251793, 0.00496971, 0.00000548, 0.00000272],
+        [-4.47562571, -0.00486046, 0.00251451, 0.00496279, 0.00000545, 0.00000270],
+        [-4.47984227, -0.00485401, 0.00251112, 0.00495590, 0.00000541, 0.00000269],
+        [-4.48405334, -0.00484759, 0.00250775, 0.00494904, 0.00000538, 0.00000268],
+        [-4.48825891, -0.00484121, 0.00250441, 0.00494222, 0.00000535, 0.00000266],
+        [-4.49245894, -0.00483485, 0.00250109, 0.00493543, 0.00000531, 0.00000265],
+        [-4.49665344, -0.00482852, 0.00249780, 0.00492867, 0.00000528, 0.00000264],
+        [-4.50084238, -0.00482223, 0.00249453, 0.00492194, 0.00000525, 0.00000262],
+        [-4.50502575, -0.00481596, 0.00249128, 0.00491524, 0.00000521, 0.00000261],
+        [-4.50920352, -0.00480972, 0.00248805, 0.00490857, 0.00000518, 0.00000260],
+        [-4.51337569, -0.00480350, 0.00248485, 0.00490194, 0.00000515, 0.00000258],
+        [-4.51754224, -0.00479732, 0.00248167, 0.00489533, 0.00000512, 0.00000257],
+        [-4.52170315, -0.00479117, 0.00247851, 0.00488876, 0.00000508, 0.00000256],
+        [-4.52585842, -0.00478504, 0.00247538, 0.00488221, 0.00000505, 0.00000254],
+        [-4.53000801, -0.00477894, 0.00247227, 0.00487569, 0.00000502, 0.00000253],
+        [-4.53415192, -0.00477286, 0.00246917, 0.00486921, 0.00000499, 0.00000252],
+        [-4.53829014, -0.00476682, 0.00246610, 0.00486275, 0.00000496, 0.00000251],
+        [-4.54242264, -0.00476080, 0.00246306, 0.00485632, 0.00000493, 0.00000249],
+        [-4.54654942, -0.00475480, 0.00246003, 0.00484992, 0.00000490, 0.00000248],
+        [-4.55067046, -0.00474884, 0.00245702, 0.00484354, 0.00000487, 0.00000247],
+        [-4.55478574, -0.00474290, 0.00245404, 0.00483720, 0.00000484, 0.00000245],
+        [-4.55889526, -0.00473698, 0.00245107, 0.00483088, 0.00000481, 0.00000244],
+        [-4.56299899, -0.00473109, 0.00244812, 0.00482459, 0.00000478, 0.00000243],
+        [-4.56709693, -0.00472522, 0.00244520, 0.00481833, 0.00000475, 0.00000242],
+        [-4.57118906, -0.00471938, 0.00244229, 0.00481209, 0.00000472, 0.00000241],
+        [-4.57527536, -0.00471357, 0.00243940, 0.00480588, 0.00000469, 0.00000239],
+        [-4.57935583, -0.00470778, 0.00243654, 0.00479970, 0.00000466, 0.00000238],
+        [-4.58343045, -0.00470201, 0.00243369, 0.00479354, 0.00000463, 0.00000237],
+        [-4.58749921, -0.00469627, 0.00243086, 0.00478741, 0.00000460, 0.00000236],
+        [-4.59156210, -0.00469055, 0.00242805, 0.00478131, 0.00000457, 0.00000235],
+        [-4.59561910, -0.00468485, 0.00242526, 0.00477523, 0.00000454, 0.00000233],
+        [-4.59967020, -0.00467918, 0.00242248, 0.00476918, 0.00000452, 0.00000232],
+        [-4.60371538, -0.00467353, 0.00241973, 0.00476315, 0.00000449, 0.00000231],
+        [-4.60775465, -0.00466791, 0.00241699, 0.00475714, 0.00000446, 0.00000230],
+        [-4.61178797, -0.00466230, 0.00241427, 0.00475116, 0.00000443, 0.00000229],
+        [-4.61581536, -0.00465672, 0.00241157, 0.00474521, 0.00000441, 0.00000228],
+        [-4.61983678, -0.00465116, 0.00240889, 0.00473928, 0.00000438, 0.00000226],
+        [-4.62385223, -0.00464563, 0.00240622, 0.00473337, 0.00000435, 0.00000225],
+        [-4.62786170, -0.00464011, 0.00240357, 0.00472749, 0.00000432, 0.00000224],
+        [-4.63186517, -0.00463462, 0.00240093, 0.00472163, 0.00000430, 0.00000223],
+        [-4.63586264, -0.00462915, 0.00239832, 0.00471580, 0.00000427, 0.00000222],
+        [-4.63985410, -0.00462370, 0.00239572, 0.00470998, 0.00000425, 0.00000221],
+        [-4.64383953, -0.00461827, 0.00239313, 0.00470419, 0.00000422, 0.00000220],
+        [-4.64781892, -0.00461286, 0.00239057, 0.00469843, 0.00000419, 0.00000219],
+        [-4.65179227, -0.00460748, 0.00238802, 0.00469268, 0.00000417, 0.00000217],
+        [-4.65575956, -0.00460211, 0.00238548, 0.00468696, 0.00000414, 0.00000216],
+        [-4.65972078, -0.00459677, 0.00238296, 0.00468126, 0.00000412, 0.00000215],
+        [-4.66367592, -0.00459144, 0.00238046, 0.00467559, 0.00000409, 0.00000214],
+        [-4.66762497, -0.00458614, 0.00237797, 0.00466993, 0.00000407, 0.00000213],
+        [-4.67156793, -0.00458085, 0.00237549, 0.00466430, 0.00000404, 0.00000212],
+        [-4.67550478, -0.00457558, 0.00237303, 0.00465869, 0.00000402, 0.00000211],
+        [-4.67943552, -0.00457034, 0.00237059, 0.00465310, 0.00000399, 0.00000210],
+        [-4.68336012, -0.00456511, 0.00236816, 0.00464753, 0.00000397, 0.00000209],
+        [-4.68727860, -0.00455990, 0.00236575, 0.00464198, 0.00000394, 0.00000208],
+        [-4.69119092, -0.00455472, 0.00236335, 0.00463645, 0.00000392, 0.00000207],
+        [-4.69509710, -0.00454955, 0.00236096, 0.00463095, 0.00000389, 0.00000206],
+        [-4.69899711, -0.00454440, 0.00235859, 0.00462546, 0.00000387, 0.00000205],
+        [-4.70289095, -0.00453926, 0.00235623, 0.00461999, 0.00000385, 0.00000204],
+        [-4.70677861, -0.00453415, 0.00235389, 0.00461455, 0.00000382, 0.00000203],
+        [-4.71066008, -0.00452905, 0.00235156, 0.00460912, 0.00000380, 0.00000202],
+        [-4.71453535, -0.00452398, 0.00234924, 0.00460372, 0.00000378, 0.00000200],
+        [-4.71840442, -0.00451892, 0.00234694, 0.00459833, 0.00000375, 0.00000199],
+        [-4.72226728, -0.00451387, 0.00234465, 0.00459296, 0.00000373, 0.00000198],
+        [-4.72612392, -0.00450885, 0.00234237, 0.00458761, 0.00000371, 0.00000197],
+        [-4.72997433, -0.00450384, 0.00234011, 0.00458229, 0.00000369, 0.00000196],
+        [-4.73381850, -0.00449885, 0.00233786, 0.00457698, 0.00000366, 0.00000195],
+        [-4.73765643, -0.00449388, 0.00233562, 0.00457168, 0.00000364, 0.00000195],
+        [-4.74148810, -0.00448893, 0.00233340, 0.00456641, 0.00000362, 0.00000194],
+        [-4.74531352, -0.00448399, 0.00233119, 0.00456116, 0.00000360, 0.00000193],
+        [-4.74913267, -0.00447907, 0.00232899, 0.00455592, 0.00000357, 0.00000192],
+        [-4.75294555, -0.00447416, 0.00232680, 0.00455071, 0.00000355, 0.00000191],
+        [-4.75675214, -0.00446927, 0.00232462, 0.00454551, 0.00000353, 0.00000190],
+        [-4.76055246, -0.00446440, 0.00232246, 0.00454033, 0.00000351, 0.00000189],
+        [-4.76434647, -0.00445955, 0.00232031, 0.00453516, 0.00000349, 0.00000188],
+        [-4.76813419, -0.00445471, 0.00231816, 0.00453002, 0.00000347, 0.00000187],
+        [-4.77191560, -0.00444988, 0.00231604, 0.00452489, 0.00000344, 0.00000186],
+        [-4.77569070, -0.00444507, 0.00231392, 0.00451978, 0.00000342, 0.00000185],
+        [-4.77945947, -0.00444028, 0.00231181, 0.00451469, 0.00000340, 0.00000184],
+        [-4.78322192, -0.00443550, 0.00230972, 0.00450961, 0.00000338, 0.00000183],
+        [-4.78697804, -0.00443074, 0.00230763, 0.00450455, 0.00000336, 0.00000182],
+        [-4.79072783, -0.00442600, 0.00230556, 0.00449951, 0.00000334, 0.00000181],
+        [-4.79447127, -0.00442127, 0.00230350, 0.00449448, 0.00000332, 0.00000180],
+        [-4.79820836, -0.00441655, 0.00230145, 0.00448947, 0.00000330, 0.00000179],
+        [-4.80193909, -0.00441185, 0.00229941, 0.00448448, 0.00000328, 0.00000178],
+        [-4.80566347, -0.00440716, 0.00229738, 0.00447951, 0.00000326, 0.00000178],
+        [-4.80938148, -0.00440249, 0.00229536, 0.00447454, 0.00000324, 0.00000177],
+        [-4.81309312, -0.00439783, 0.00229335, 0.00446960, 0.00000322, 0.00000176],
+        [-4.81679838, -0.00439319, 0.00229135, 0.00446467, 0.00000320, 0.00000175],
+        [-4.82049726, -0.00438856, 0.00228937, 0.00445976, 0.00000318, 0.00000174],
+        [-4.82418976, -0.00438395, 0.00228739, 0.00445486, 0.00000316, 0.00000173],
+        [-4.82787587, -0.00437935, 0.00228542, 0.00444998, 0.00000314, 0.00000172],
+        [-4.83155558, -0.00437476, 0.00228346, 0.00444512, 0.00000312, 0.00000171],
+        [-4.83522889, -0.00437019, 0.00228151, 0.00444027, 0.00000310, 0.00000171],
+        [-4.83889580, -0.00436563, 0.00227957, 0.00443543, 0.00000308, 0.00000170],
+        [-4.84255630, -0.00436109, 0.00227764, 0.00443061, 0.00000306, 0.00000169],
+        [-4.84621038, -0.00435656, 0.00227572, 0.00442580, 0.00000305, 0.00000168],
+        [-4.84985805, -0.00435204, 0.00227381, 0.00442101, 0.00000303, 0.00000167],
+        [-4.85349930, -0.00434753, 0.00227191, 0.00441624, 0.00000301, 0.00000166],
+        [-4.85713412, -0.00434304, 0.00227002, 0.00441148, 0.00000299, 0.00000165],
+        [-4.86076252, -0.00433856, 0.00226813, 0.00440673, 0.00000297, 0.00000165],
+        [-4.86438448, -0.00433410, 0.00226626, 0.00440200, 0.00000295, 0.00000164],
+        [-4.86800001, -0.00432965, 0.00226439, 0.00439728, 0.00000294, 0.00000163],
+        [-4.87160909, -0.00432521, 0.00226253, 0.00439258, 0.00000292, 0.00000162],
+        [-4.87521174, -0.00432078, 0.00226069, 0.00438789, 0.00000290, 0.00000161],
+        [-4.87880793, -0.00431637, 0.00225885, 0.00438321, 0.00000288, 0.00000161],
+        [-4.88239768, -0.00431196, 0.00225701, 0.00437855, 0.00000286, 0.00000160],
+        [-4.88598098, -0.00430758, 0.00225519, 0.00437390, 0.00000285, 0.00000159],
+        [-4.88955781, -0.00430320, 0.00225338, 0.00436927, 0.00000283, 0.00000158],
+        [-4.89312819, -0.00429883, 0.00225157, 0.00436465, 0.00000281, 0.00000157],
+        [-4.89669211, -0.00429448, 0.00224977, 0.00436004, 0.00000279, 0.00000157],
+        [-4.90024957, -0.00429014, 0.00224798, 0.00435545, 0.00000278, 0.00000156],
+        [-4.90380055, -0.00428581, 0.00224620, 0.00435087, 0.00000276, 0.00000155],
+        [-4.90734507, -0.00428150, 0.00224442, 0.00434630, 0.00000274, 0.00000154],
+        [-4.91088312, -0.00427719, 0.00224266, 0.00434174, 0.00000272, 0.00000153],
+        [-4.91441469, -0.00427290, 0.00224090, 0.00433720, 0.00000271, 0.00000153],
+        [-4.91793978, -0.00426862, 0.00223915, 0.00433267, 0.00000269, 0.00000152],
+        [-4.92145840, -0.00426435, 0.00223740, 0.00432816, 0.00000267, 0.00000151],
+        [-4.92497053, -0.00426009, 0.00223566, 0.00432366, 0.00000266, 0.00000150],
+        [-4.92847618, -0.00425584, 0.00223394, 0.00431916, 0.00000264, 0.00000150],
+        [-4.93197535, -0.00425160, 0.00223221, 0.00431469, 0.00000262, 0.00000149],
+        [-4.93546803, -0.00424738, 0.00223050, 0.00431022, 0.00000261, 0.00000148],
+        [-4.93895423, -0.00424317, 0.00222879, 0.00430577, 0.00000259, 0.00000147],
+        [-4.94243393, -0.00423896, 0.00222709, 0.00430133, 0.00000258, 0.00000147],
+        [-4.94590714, -0.00423477, 0.00222540, 0.00429690, 0.00000256, 0.00000146],
+        [-4.94937386, -0.00423059, 0.00222371, 0.00429248, 0.00000254, 0.00000145],
+        [-4.95283409, -0.00422642, 0.00222203, 0.00428808, 0.00000253, 0.00000144],
+        [-4.95628782, -0.00422226, 0.00222036, 0.00428368, 0.00000251, 0.00000144],
+        [-4.95973505, -0.00421811, 0.00221869, 0.00427930, 0.00000250, 0.00000143],
+        [-4.96317579, -0.00421397, 0.00221703, 0.00427493, 0.00000248, 0.00000142],
+        [-4.96661002, -0.00420984, 0.00221538, 0.00427058, 0.00000246, 0.00000142],
+        [-4.97003776, -0.00420573, 0.00221373, 0.00426623, 0.00000245, 0.00000141],
+        [-4.97345900, -0.00420162, 0.00221209, 0.00426189, 0.00000243, 0.00000140],
+        [-4.97687374, -0.00419752, 0.00221046, 0.00425757, 0.00000242, 0.00000139],
+        [-4.98028197, -0.00419344, 0.00220883, 0.00425326, 0.00000240, 0.00000139],
+        [-4.98368371, -0.00418936, 0.00220721, 0.00424896, 0.00000239, 0.00000138],
+        [-4.98707894, -0.00418529, 0.00220559, 0.00424467, 0.00000237, 0.00000137],
+        [-4.99046767, -0.00418123, 0.00220398, 0.00424039, 0.00000236, 0.00000137],
+        [-4.99384989, -0.00417719, 0.00220238, 0.00423612, 0.00000234, 0.00000136],
+        [-4.99722561, -0.00417315, 0.00220078, 0.00423187, 0.00000233, 0.00000135],
+        [-5.00059483, -0.00416912, 0.00219919, 0.00422762, 0.00000231, 0.00000135],
+        [-5.00395754, -0.00416511, 0.00219761, 0.00422339, 0.00000230, 0.00000134],
+        [-5.00731375, -0.00416110, 0.00219603, 0.00421916, 0.00000228, 0.00000133],
+        [-5.01066346, -0.00415710, 0.00219445, 0.00421495, 0.00000227, 0.00000133],
+        [-5.01400667, -0.00415311, 0.00219288, 0.00421075, 0.00000226, 0.00000132],
+        [-5.01734337, -0.00414913, 0.00219132, 0.00420655, 0.00000224, 0.00000131],
+        [-5.02067356, -0.00414516, 0.00218976, 0.00420237, 0.00000223, 0.00000131],
+        [-5.02399726, -0.00414120, 0.00218821, 0.00419820, 0.00000221, 0.00000130],
+        [-5.02731445, -0.00413724, 0.00218666, 0.00419404, 0.00000220, 0.00000129],
+        [-5.03062515, -0.00413330, 0.00218512, 0.00418989, 0.00000218, 0.00000129],
+        [-5.03392934, -0.00412937, 0.00218359, 0.00418574, 0.00000217, 0.00000128],
+        [-5.03722703, -0.00412544, 0.00218206, 0.00418161, 0.00000216, 0.00000127],
+        [-5.04051822, -0.00412153, 0.00218053, 0.00417749, 0.00000214, 0.00000127],
+        [-5.04380292, -0.00411762, 0.00217901, 0.00417338, 0.00000213, 0.00000126],
+        [-5.04708112, -0.00411372, 0.00217750, 0.00416928, 0.00000212, 0.00000125],
+        [-5.05035282, -0.00410983, 0.00217599, 0.00416519, 0.00000210, 0.00000125],
+        [-5.05361802, -0.00410595, 0.00217448, 0.00416111, 0.00000209, 0.00000124],
+        [-5.05687674, -0.00410208, 0.00217298, 0.00415703, 0.00000207, 0.00000124],
+        [-5.06012896, -0.00409821, 0.00217148, 0.00415297, 0.00000206, 0.00000123],
+        [-5.06337469, -0.00409436, 0.00216999, 0.00414892, 0.00000205, 0.00000122],
+        [-5.06661393, -0.00409051, 0.00216851, 0.00414488, 0.00000203, 0.00000122],
+        [-5.06984668, -0.00408668, 0.00216703, 0.00414084, 0.00000202, 0.00000121],
+        [-5.07307294, -0.00408285, 0.00216555, 0.00413682, 0.00000201, 0.00000121],
+        [-5.07629272, -0.00407902, 0.00216408, 0.00413280, 0.00000199, 0.00000120],
+        [-5.07950602, -0.00407521, 0.00216261, 0.00412880, 0.00000198, 0.00000119],
+        [-5.08271283, -0.00407141, 0.00216115, 0.00412480, 0.00000197, 0.00000119],
+        [-5.08591317, -0.00406761, 0.00215969, 0.00412081, 0.00000196, 0.00000118],
+        [-5.08910703, -0.00406382, 0.00215823, 0.00411683, 0.00000194, 0.00000118],
+        [-5.09229441, -0.00406004, 0.00215678, 0.00411286, 0.00000193, 0.00000117],
+        [-5.09547532, -0.00405627, 0.00215534, 0.00410890, 0.00000192, 0.00000116],
+        [-5.09864975, -0.00405250, 0.00215390, 0.00410495, 0.00000191, 0.00000116],
+        [-5.10181772, -0.00404874, 0.00215246, 0.00410101, 0.00000189, 0.00000115],
+        [-5.10497922, -0.00404500, 0.00215102, 0.00409707, 0.00000188, 0.00000115],
+        [-5.10813425, -0.00404125, 0.00214960, 0.00409315, 0.00000187, 0.00000114],
+        [-5.11128282, -0.00403752, 0.00214817, 0.00408923, 0.00000186, 0.00000114],
+        [-5.11442494, -0.00403379, 0.00214675, 0.00408532, 0.00000184, 0.00000113],
+        [-5.11756059, -0.00403008, 0.00214533, 0.00408142, 0.00000183, 0.00000112],
+        [-5.12068979, -0.00402637, 0.00214392, 0.00407753, 0.00000182, 0.00000112],
+        [-5.12381254, -0.00402266, 0.00214251, 0.00407365, 0.00000181, 0.00000111],
+        [-5.12692884, -0.00401897, 0.00214110, 0.00406978, 0.00000179, 0.00000111],
+        [-5.13003869, -0.00401528, 0.00213970, 0.00406591, 0.00000178, 0.00000110],
+        [-5.13314210, -0.00401160, 0.00213831, 0.00406205, 0.00000177, 0.00000110],
+        [-5.13623906, -0.00400792, 0.00213691, 0.00405820, 0.00000176, 0.00000109],
+        [-5.13932959, -0.00400426, 0.00213552, 0.00405436, 0.00000175, 0.00000109],
+        [-5.14241368, -0.00400060, 0.00213413, 0.00405053, 0.00000173, 0.00000108],
+        [-5.14549135, -0.00399695, 0.00213275, 0.00404670, 0.00000172, 0.00000107],
+        [-5.14856258, -0.00399330, 0.00213137, 0.00404289, 0.00000171, 0.00000107],
+        [-5.15162739, -0.00398967, 0.00213000, 0.00403908, 0.00000170, 0.00000106],
+        [-5.15468577, -0.00398604, 0.00212862, 0.00403528, 0.00000169, 0.00000106],
+        [-5.15773774, -0.00398241, 0.00212725, 0.00403148, 0.00000168, 0.00000105],
+        [-5.16078329, -0.00397880, 0.00212589, 0.00402770, 0.00000167, 0.00000105],
+        [-5.16382243, -0.00397519, 0.00212453, 0.00402392, 0.00000165, 0.00000104],
+        [-5.16685516, -0.00397159, 0.00212317, 0.00402015, 0.00000164, 0.00000104],
+        [-5.16988149, -0.00396799, 0.00212181, 0.00401639, 0.00000163, 0.00000103],
+        [-5.17290141, -0.00396440, 0.00212046, 0.00401264, 0.00000162, 0.00000103],
+        [-5.17591494, -0.00396082, 0.00211911, 0.00400889, 0.00000161, 0.00000102],
+        [-5.17892208, -0.00395724, 0.00211776, 0.00400515, 0.00000160, 0.00000102],
+        [-5.18192282, -0.00395368, 0.00211642, 0.00400142, 0.00000159, 0.00000101],
+        [-5.18491718, -0.00395011, 0.00211508, 0.00399770, 0.00000158, 0.00000101],
+        [-5.18790516, -0.00394656, 0.00211374, 0.00399398, 0.00000156, 0.00000100],
+        [-5.19088675, -0.00394301, 0.00211241, 0.00399027, 0.00000155, 0.00000100],
+        [-5.19386198, -0.00393947, 0.00211108, 0.00398657, 0.00000154, 0.00000099],
+        [-5.19683083, -0.00393593, 0.00210975, 0.00398288, 0.00000153, 0.00000099],
+        [-5.19979332, -0.00393241, 0.00210843, 0.00397919, 0.00000152, 0.00000098],
+        [-5.20274945, -0.00392888, 0.00210710, 0.00397551, 0.00000151, 0.00000098],
+        [-5.20569922, -0.00392537, 0.00210578, 0.00397184, 0.00000150, 0.00000097],
+        [-5.20864264, -0.00392186, 0.00210447, 0.00396817, 0.00000149, 0.00000097],
+        [-5.21157971, -0.00391835, 0.00210315, 0.00396451, 0.00000148, 0.00000096],
+        [-5.21451043, -0.00391486, 0.00210184, 0.00396086, 0.00000147, 0.00000096],
+        [-5.21743482, -0.00391137, 0.00210054, 0.00395722, 0.00000146, 0.00000095],
+        [-5.22035287, -0.00390788, 0.00209923, 0.00395358, 0.00000145, 0.00000095],
+        [-5.22326459, -0.00390440, 0.00209793, 0.00394995, 0.00000144, 0.00000094],
+        [-5.22616999, -0.00390093, 0.00209663, 0.00394633, 0.00000143, 0.00000094],
+        [-5.22906906, -0.00389747, 0.00209533, 0.00394271, 0.00000142, 0.00000093],
+        [-5.23196182, -0.00389401, 0.00209404, 0.00393910, 0.00000141, 0.00000093],
+        [-5.23484826, -0.00389055, 0.00209274, 0.00393550, 0.00000140, 0.00000093],
+        [-5.23772840, -0.00388711, 0.00209145, 0.00393191, 0.00000139, 0.00000092],
+        [-5.24060224, -0.00388366, 0.00209017, 0.00392832, 0.00000138, 0.00000092],
+        [-5.24346978, -0.00388023, 0.00208888, 0.00392473, 0.00000137, 0.00000091],
+        [-5.24633103, -0.00387680, 0.00208760, 0.00392116, 0.00000136, 0.00000091],
+        [-5.24918599, -0.00387338, 0.00208632, 0.00391759, 0.00000135, 0.00000090],
+        [-5.25203467, -0.00386996, 0.00208504, 0.00391403, 0.00000134, 0.00000090],
+        [-5.25487707, -0.00386655, 0.00208377, 0.00391047, 0.00000133, 0.00000089],
+        [-5.25771320, -0.00386314, 0.00208250, 0.00390692, 0.00000132, 0.00000089],
+        [-5.26054307, -0.00385974, 0.00208123, 0.00390338, 0.00000131, 0.00000088],
+        [-5.26336668, -0.00385634, 0.00207996, 0.00389984, 0.00000130, 0.00000088],
+        [-5.26618402, -0.00385295, 0.00207869, 0.00389631, 0.00000129, 0.00000088],
+        [-5.26899512, -0.00384957, 0.00207743, 0.00389279, 0.00000128, 0.00000087],
+        [-5.27179998, -0.00384619, 0.00207617, 0.00388927, 0.00000127, 0.00000087],
+        [-5.27459860, -0.00384282, 0.00207491, 0.00388576, 0.00000126, 0.00000086],
+        [-5.27739098, -0.00383945, 0.00207365, 0.00388226, 0.00000125, 0.00000086],
+        [-5.28017713, -0.00383609, 0.00207240, 0.00387876, 0.00000124, 0.00000085],
+        [-5.28295706, -0.00383274, 0.00207115, 0.00387527, 0.00000123, 0.00000085],
+        [-5.28573078, -0.00382939, 0.00206989, 0.00387178, 0.00000122, 0.00000085],
+        [-5.28849828, -0.00382604, 0.00206865, 0.00386830, 0.00000121, 0.00000084],
+        [-5.29125958, -0.00382271, 0.00206740, 0.00386483, 0.00000120, 0.00000084],
+        [-5.29401468, -0.00381937, 0.00206616, 0.00386136, 0.00000119, 0.00000083],
+        [-5.29676358, -0.00381604, 0.00206491, 0.00385790, 0.00000118, 0.00000083],
+        [-5.29950630, -0.00381272, 0.00206367, 0.00385445, 0.00000118, 0.00000083],
+        [-5.30224283, -0.00380940, 0.00206243, 0.00385100, 0.00000117, 0.00000082],
+        [-5.30497319, -0.00380609, 0.00206120, 0.00384755, 0.00000116, 0.00000082],
+        [-5.30769738, -0.00380279, 0.00205996, 0.00384412, 0.00000115, 0.00000081],
+        [-5.31041540, -0.00379948, 0.00205873, 0.00384068, 0.00000114, 0.00000081],
+        [-5.31312727, -0.00379619, 0.00205750, 0.00383726, 0.00000113, 0.00000081],
+        [-5.31583299, -0.00379290, 0.00205627, 0.00383384, 0.00000112, 0.00000080],
+        [-5.31853255, -0.00378961, 0.00205504, 0.00383043, 0.00000111, 0.00000080],
+        [-5.32122598, -0.00378633, 0.00205382, 0.00382702, 0.00000110, 0.00000079],
+        [-5.32391328, -0.00378306, 0.00205259, 0.00382362, 0.00000110, 0.00000079],
+        [-5.32659445, -0.00377979, 0.00205137, 0.00382022, 0.00000109, 0.00000079],
+        [-5.32926950, -0.00377652, 0.00205015, 0.00381683, 0.00000108, 0.00000078],
+        [-5.33193843, -0.00377326, 0.00204893, 0.00381344, 0.00000107, 0.00000078],
+        [-5.33460126, -0.00377000, 0.00204772, 0.00381006, 0.00000106, 0.00000077],
+        [-5.33725798, -0.00376675, 0.00204650, 0.00380669, 0.00000105, 0.00000077],
+        [-5.33990861, -0.00376351, 0.00204529, 0.00380332, 0.00000104, 0.00000077],
+        [-5.34255316, -0.00376027, 0.00204408, 0.00379996, 0.00000103, 0.00000076],
+        [-5.34519162, -0.00375703, 0.00204287, 0.00379660, 0.00000103, 0.00000076],
+        [-5.34782400, -0.00375380, 0.00204166, 0.00379325, 0.00000102, 0.00000075],
+        [-5.35045032, -0.00375058, 0.00204045, 0.00378991, 0.00000101, 0.00000075],
+        [-5.35307057, -0.00374736, 0.00203925, 0.00378657, 0.00000100, 0.00000075],
+        [-5.35568477, -0.00374414, 0.00203804, 0.00378323, 0.00000099, 0.00000074],
+        [-5.35829292, -0.00374093, 0.00203684, 0.00377990, 0.00000098, 0.00000074],
+        [-5.36089503, -0.00373773, 0.00203564, 0.00377658, 0.00000098, 0.00000074],
+        [-5.36349110, -0.00373453, 0.00203444, 0.00377326, 0.00000097, 0.00000073],
+        [-5.36608114, -0.00373133, 0.00203324, 0.00376994, 0.00000096, 0.00000073],
+        [-5.36866517, -0.00372814, 0.00203205, 0.00376664, 0.00000095, 0.00000073],
+        [-5.37124318, -0.00372495, 0.00203085, 0.00376333, 0.00000094, 0.00000072],
+        [-5.37381518, -0.00372177, 0.00202966, 0.00376004, 0.00000094, 0.00000072],
+        [-5.37638118, -0.00371859, 0.00202847, 0.00375674, 0.00000093, 0.00000071],
+        [-5.37894119, -0.00371542, 0.00202728, 0.00375346, 0.00000092, 0.00000071],
+        [-5.38149521, -0.00371225, 0.00202609, 0.00375018, 0.00000091, 0.00000071],
+        [-5.38404325, -0.00370909, 0.00202490, 0.00374690, 0.00000090, 0.00000070],
+        [-5.38658532, -0.00370593, 0.00202371, 0.00374363, 0.00000090, 0.00000070],
+        [-5.38912142, -0.00370278, 0.00202253, 0.00374036, 0.00000089, 0.00000070],
+        [-5.39165157, -0.00369963, 0.00202134, 0.00373710, 0.00000088, 0.00000069],
+        [-5.39417576, -0.00369648, 0.00202016, 0.00373385, 0.00000087, 0.00000069],
+        [-5.39669401, -0.00369334, 0.00201898, 0.00373059, 0.00000087, 0.00000069],
+        [-5.39920633, -0.00369021, 0.00201780, 0.00372735, 0.00000086, 0.00000068],
+        [-5.40171272, -0.00368707, 0.00201662, 0.00372411, 0.00000085, 0.00000068],
+        [-5.40421318, -0.00368395, 0.00201544, 0.00372087, 0.00000084, 0.00000068],
+        [-5.40670773, -0.00368082, 0.00201427, 0.00371764, 0.00000083, 0.00000067],
+        [-5.40919637, -0.00367771, 0.00201309, 0.00371442, 0.00000083, 0.00000067],
+        [-5.41167912, -0.00367459, 0.00201192, 0.00371119, 0.00000082, 0.00000067],
+        [-5.41415597, -0.00367148, 0.00201075, 0.00370798, 0.00000081, 0.00000066],
+        [-5.41662693, -0.00366838, 0.00200957, 0.00370477, 0.00000080, 0.00000066],
+        [-5.41909202, -0.00366528, 0.00200840, 0.00370156, 0.00000080, 0.00000066],
+        [-5.42155124, -0.00366218, 0.00200724, 0.00369836, 0.00000079, 0.00000065],
+        [-5.42400460, -0.00365909, 0.00200607, 0.00369516, 0.00000078, 0.00000065],
+        [-5.42645210, -0.00365600, 0.00200490, 0.00369197, 0.00000077, 0.00000065],
+        [-5.42889376, -0.00365292, 0.00200374, 0.00368879, 0.00000077, 0.00000064],
+        [-5.43132958, -0.00364984, 0.00200257, 0.00368560, 0.00000076, 0.00000064],
+        [-5.43375956, -0.00364677, 0.00200141, 0.00368243, 0.00000075, 0.00000064],
+        [-5.43618372, -0.00364370, 0.00200024, 0.00367926, 0.00000075, 0.00000063],
+        [-5.43860207, -0.00364063, 0.00199908, 0.00367609, 0.00000074, 0.00000063],
+        [-5.44101460, -0.00363757, 0.00199792, 0.00367293, 0.00000073, 0.00000063],
+        [-5.44342134, -0.00363451, 0.00199676, 0.00366977, 0.00000072, 0.00000063],
+        [-5.44582228, -0.00363146, 0.00199561, 0.00366661, 0.00000072, 0.00000062],
+        [-5.44821744, -0.00362841, 0.00199445, 0.00366346, 0.00000071, 0.00000062],
+        [-5.45060682, -0.00362536, 0.00199329, 0.00366032, 0.00000070, 0.00000062],
+        [-5.45299043, -0.00362232, 0.00199214, 0.00365718, 0.00000070, 0.00000061],
+        [-5.45536828, -0.00361929, 0.00199098, 0.00365405, 0.00000069, 0.00000061],
+        [-5.45774037, -0.00361625, 0.00198983, 0.00365092, 0.00000068, 0.00000061],
+        [-5.46010672, -0.00361323, 0.00198868, 0.00364779, 0.00000067, 0.00000060],
+        [-5.46246734, -0.00361020, 0.00198753, 0.00364467, 0.00000067, 0.00000060],
+        [-5.46482222, -0.00360718, 0.00198638, 0.00364155, 0.00000066, 0.00000060],
+        [-5.46717138, -0.00360417, 0.00198523, 0.00363844, 0.00000065, 0.00000060],
+        [-5.46951483, -0.00360115, 0.00198408, 0.00363533, 0.00000065, 0.00000059],
+        [-5.47185257, -0.00359814, 0.00198293, 0.00363223, 0.00000064, 0.00000059],
+        [-5.47418461, -0.00359514, 0.00198178, 0.00362913, 0.00000063, 0.00000059],
+        [-5.47651097, -0.00359214, 0.00198064, 0.00362604, 0.00000063, 0.00000058],
+        [-5.47883164, -0.00358914, 0.00197949, 0.00362295, 0.00000062, 0.00000058],
+        [-5.48114664, -0.00358615, 0.00197835, 0.00361986, 0.00000061, 0.00000058],
+        [-5.48345598, -0.00358316, 0.00197721, 0.00361678, 0.00000061, 0.00000058],
+        [-5.48575966, -0.00358018, 0.00197606, 0.00361370, 0.00000060, 0.00000057],
+        [-5.48805769, -0.00357720, 0.00197492, 0.00361063, 0.00000059, 0.00000057],
+        [-5.49035007, -0.00357422, 0.00197378, 0.00360756, 0.00000059, 0.00000057],
+        [-5.49263683, -0.00357125, 0.00197264, 0.00360450, 0.00000058, 0.00000056],
+        [-5.49491797, -0.00356828, 0.00197150, 0.00360144, 0.00000057, 0.00000056],
+        [-5.49719348, -0.00356532, 0.00197036, 0.00359839, 0.00000057, 0.00000056],
+        [-5.49946339, -0.00356236, 0.00196923, 0.00359534, 0.00000056, 0.00000056],
+        [-5.50172771, -0.00355940, 0.00196809, 0.00359229, 0.00000056, 0.00000055],
+        [-5.50398643, -0.00355645, 0.00196695, 0.00358925, 0.00000055, 0.00000055],
+        [-5.50623957, -0.00355350, 0.00196582, 0.00358621, 0.00000054, 0.00000055],
+        [-5.50848713, -0.00355055, 0.00196468, 0.00358318, 0.00000054, 0.00000054],
+        [-5.51072913, -0.00354761, 0.00196355, 0.00358015, 0.00000053, 0.00000054],
+        [-5.51296557, -0.00354467, 0.00196242, 0.00357712, 0.00000052, 0.00000054],
+        [-5.51519647, -0.00354174, 0.00196129, 0.00357410, 0.00000052, 0.00000054],
+        [-5.51742182, -0.00353881, 0.00196016, 0.00357108, 0.00000051, 0.00000053],
+        [-5.51964164, -0.00353588, 0.00195902, 0.00356807, 0.00000050, 0.00000053],
+        [-5.52185594, -0.00353296, 0.00195789, 0.00356506, 0.00000050, 0.00000053],
+        [-5.52406473, -0.00353004, 0.00195677, 0.00356206, 0.00000049, 0.00000053],
+        [-5.52626800, -0.00352712, 0.00195564, 0.00355906, 0.00000049, 0.00000052],
+        [-5.52846578, -0.00352421, 0.00195451, 0.00355606, 0.00000048, 0.00000052],
+        [-5.53065808, -0.00352130, 0.00195338, 0.00355307, 0.00000047, 0.00000052],
+        [-5.53284489, -0.00351840, 0.00195226, 0.00355008, 0.00000047, 0.00000052],
+        [-5.53502623, -0.00351550, 0.00195113, 0.00354710, 0.00000046, 0.00000051],
+        [-5.53720210, -0.00351260, 0.00195001, 0.00354412, 0.00000046, 0.00000051],
+        [-5.53937252, -0.00350971, 0.00194888, 0.00354114, 0.00000045, 0.00000051],
+        [-5.54153750, -0.00350682, 0.00194776, 0.00353817, 0.00000044, 0.00000051],
+        [-5.54369704, -0.00350393, 0.00194663, 0.00353520, 0.00000044, 0.00000050],
+        [-5.54585115, -0.00350105, 0.00194551, 0.00353224, 0.00000043, 0.00000050],
+        [-5.54799984, -0.00349817, 0.00194439, 0.00352928, 0.00000043, 0.00000050],
+        [-5.55014311, -0.00349529, 0.00194327, 0.00352632, 0.00000042, 0.00000050],
+        [-5.55228099, -0.00349242, 0.00194215, 0.00352337, 0.00000041, 0.00000049],
+        [-5.55441347, -0.00348955, 0.00194103, 0.00352042, 0.00000041, 0.00000049],
+        [-5.55654057, -0.00348669, 0.00193991, 0.00351748, 0.00000040, 0.00000049],
+        [-5.55866229, -0.00348383, 0.00193879, 0.00351454, 0.00000040, 0.00000049],
+        [-5.56077864, -0.00348097, 0.00193767, 0.00351160, 0.00000039, 0.00000048],
+        [-5.56288964, -0.00347811, 0.00193655, 0.00350867, 0.00000039, 0.00000048],
+        [-5.56499528, -0.00347526, 0.00193544, 0.00350574, 0.00000038, 0.00000048],
+        [-5.56709558, -0.00347242, 0.00193432, 0.00350282, 0.00000037, 0.00000048],
+        [-5.56919055, -0.00346957, 0.00193321, 0.00349990, 0.00000037, 0.00000047],
+        [-5.57128020, -0.00346673, 0.00193209, 0.00349698, 0.00000036, 0.00000047],
+        [-5.57336453, -0.00346390, 0.00193098, 0.00349407, 0.00000036, 0.00000047],
+        [-5.57544356, -0.00346106, 0.00192986, 0.00349116, 0.00000035, 0.00000047],
+        [-5.57751729, -0.00345823, 0.00192875, 0.00348825, 0.00000035, 0.00000047],
+        [-5.57958573, -0.00345541, 0.00192764, 0.00348535, 0.00000034, 0.00000046],
+        [-5.58164889, -0.00345259, 0.00192652, 0.00348245, 0.00000033, 0.00000046],
+        [-5.58370679, -0.00344977, 0.00192541, 0.00347956, 0.00000033, 0.00000046],
+        [-5.58575942, -0.00344695, 0.00192430, 0.00347667, 0.00000032, 0.00000046],
+        [-5.58780679, -0.00344414, 0.00192319, 0.00347378, 0.00000032, 0.00000045],
+        [-5.58984893, -0.00344133, 0.00192208, 0.00347090, 0.00000031, 0.00000045],
+        [-5.59188583, -0.00343852, 0.00192097, 0.00346802, 0.00000031, 0.00000045],
+        [-5.59391750, -0.00343572, 0.00191986, 0.00346515, 0.00000030, 0.00000045],
+        [-5.59594396, -0.00343292, 0.00191875, 0.00346228, 0.00000030, 0.00000045],
+        [-5.59796521, -0.00343013, 0.00191764, 0.00345941, 0.00000029, 0.00000044],
+        [-5.59998126, -0.00342733, 0.00191653, 0.00345654, 0.00000029, 0.00000044],
+        [-5.60199212, -0.00342455, 0.00191543, 0.00345368, 0.00000028, 0.00000044],
+        [-5.60399781, -0.00342176, 0.00191432, 0.00345083, 0.00000028, 0.00000044],
+        [-5.60599831, -0.00341898, 0.00191321, 0.00344797, 0.00000027, 0.00000043],
+        [-5.60799366, -0.00341620, 0.00191211, 0.00344513, 0.00000026, 0.00000043],
+        [-5.60998385, -0.00341342, 0.00191100, 0.00344228, 0.00000026, 0.00000043],
+        [-5.61196890, -0.00341065, 0.00190990, 0.00343944, 0.00000025, 0.00000043],
+        [-5.61394881, -0.00340788, 0.00190879, 0.00343660, 0.00000025, 0.00000043],
+        [-5.61592360, -0.00340512, 0.00190769, 0.00343376, 0.00000024, 0.00000042],
+        [-5.61789327, -0.00340235, 0.00190659, 0.00343093, 0.00000024, 0.00000042],
+        [-5.61985783, -0.00339960, 0.00190548, 0.00342811, 0.00000023, 0.00000042],
+        [-5.62181729, -0.00339684, 0.00190438, 0.00342528, 0.00000023, 0.00000042],
+        [-5.62377166, -0.00339409, 0.00190328, 0.00342246, 0.00000022, 0.00000042],
+        [-5.62572095, -0.00339134, 0.00190218, 0.00341964, 0.00000022, 0.00000041],
+        [-5.62766517, -0.00338859, 0.00190108, 0.00341683, 0.00000021, 0.00000041],
+        [-5.62960432, -0.00338585, 0.00189998, 0.00341402, 0.00000021, 0.00000041],
+        [-5.63153842, -0.00338311, 0.00189888, 0.00341122, 0.00000020, 0.00000041],
+        [-5.63346748, -0.00338037, 0.00189778, 0.00340841, 0.00000020, 0.00000041],
+        [-5.63539150, -0.00337764, 0.00189668, 0.00340561, 0.00000019, 0.00000040],
+        [-5.63731050, -0.00337491, 0.00189558, 0.00340282, 0.00000019, 0.00000040],
+        [-5.63922447, -0.00337218, 0.00189448, 0.00340003, 0.00000018, 0.00000040],
+        [-5.64113344, -0.00336946, 0.00189338, 0.00339724, 0.00000018, 0.00000040],
+        [-5.64303741, -0.00336674, 0.00189229, 0.00339445, 0.00000017, 0.00000040],
+        [-5.64493639, -0.00336402, 0.00189119, 0.00339167, 0.00000017, 0.00000039],
+        [-5.64683039, -0.00336131, 0.00189009, 0.00338889, 0.00000016, 0.00000039],
+        [-5.64871942, -0.00335860, 0.00188899, 0.00338612, 0.00000016, 0.00000039],
+        [-5.65060348, -0.00335589, 0.00188790, 0.00338335, 0.00000015, 0.00000039],
+        [-5.65248259, -0.00335319, 0.00188680, 0.00338058, 0.00000015, 0.00000039],
+        [-5.65435676, -0.00335049, 0.00188571, 0.00337781, 0.00000014, 0.00000038],
+        [-5.65622600, -0.00334779, 0.00188461, 0.00337505, 0.00000014, 0.00000038],
+        [-5.65809030, -0.00334509, 0.00188352, 0.00337229, 0.00000013, 0.00000038],
+        [-5.65994970, -0.00334240, 0.00188243, 0.00336954, 0.00000013, 0.00000038],
+        [-5.66180418, -0.00333971, 0.00188133, 0.00336679, 0.00000013, 0.00000038],
+        [-5.66365377, -0.00333703, 0.00188024, 0.00336404, 0.00000012, 0.00000038],
+        [-5.66549846, -0.00333434, 0.00187915, 0.00336130, 0.00000012, 0.00000037],
+        [-5.66733828, -0.00333166, 0.00187805, 0.00335856, 0.00000011, 0.00000037],
+        [-5.66917323, -0.00332899, 0.00187696, 0.00335582, 0.00000011, 0.00000037],
+        [-5.67100331, -0.00332631, 0.00187587, 0.00335309, 0.00000010, 0.00000037],
+        [-5.67282855, -0.00332364, 0.00187478, 0.00335035, 0.00000010, 0.00000037],
+        [-5.67464894, -0.00332098, 0.00187369, 0.00334763, 0.00000009, 0.00000036],
+        [-5.67646450, -0.00331831, 0.00187260, 0.00334490, 0.00000009, 0.00000036],
+        [-5.67827523, -0.00331565, 0.00187151, 0.00334218, 0.00000008, 0.00000036],
+        [-5.68008115, -0.00331299, 0.00187042, 0.00333947, 0.00000008, 0.00000036],
+        [-5.68188226, -0.00331034, 0.00186933, 0.00333675, 0.00000007, 0.00000036],
+        [-5.68367858, -0.00330769, 0.00186824, 0.00333404, 0.00000007, 0.00000036],
+        [-5.68547011, -0.00330504, 0.00186715, 0.00333133, 0.00000007, 0.00000035],
+        [-5.68725686, -0.00330239, 0.00186606, 0.00332863, 0.00000006, 0.00000035],
+        [-5.68903884, -0.00329975, 0.00186498, 0.00332593, 0.00000006, 0.00000035],
+        [-5.69081606, -0.00329711, 0.00186389, 0.00332323, 0.00000005, 0.00000035],
+        [-5.69258853, -0.00329447, 0.00186280, 0.00332054, 0.00000005, 0.00000035],
+        [-5.69435627, -0.00329184, 0.00186172, 0.00331785, 0.00000004, 0.00000035],
+        [-5.69611926, -0.00328921, 0.00186063, 0.00331516, 0.00000004, 0.00000034],
+        [-5.69787754, -0.00328658, 0.00185954, 0.00331247, 0.00000003, 0.00000034],
+        [-5.69963110, -0.00328396, 0.00185846, 0.00330979, 0.00000003, 0.00000034],
+        [-5.70137996, -0.00328133, 0.00185737, 0.00330711, 0.00000003, 0.00000034],
+        [-5.70312413, -0.00327872, 0.00185629, 0.00330444, 0.00000002, 0.00000034],
+        [-5.70486360, -0.00327610, 0.00185520, 0.00330177, 0.00000002, 0.00000034],
+        [-5.70659840, -0.00327349, 0.00185412, 0.00329910, 0.00000001, 0.00000033],
+        [-5.70832854, -0.00327088, 0.00185304, 0.00329643, 0.00000001, 0.00000033],
+        [-5.71005402, -0.00326827, 0.00185195, 0.00329377, 0.00000000, 0.00000033],
+        [-5.71177484, -0.00326567, 0.00185087, 0.00329111, 0.00000000, 0.00000033],
+        [-5.71349103, -0.00326306, 0.00184979, 0.00328846, -0.00000000, 0.00000033],
+        [-5.71520259, -0.00326047, 0.00184870, 0.00328580, -0.00000001, 0.00000033],
+        [-5.71690953, -0.00325787, 0.00184762, 0.00328316, -0.00000001, 0.00000032],
+        [-5.71861185, -0.00325528, 0.00184654, 0.00328051, -0.00000002, 0.00000032],
+        [-5.72030958, -0.00325269, 0.00184546, 0.00327787, -0.00000002, 0.00000032],
+        [-5.72200271, -0.00325010, 0.00184438, 0.00327523, -0.00000002, 0.00000032],
+        [-5.72369126, -0.00324752, 0.00184330, 0.00327259, -0.00000003, 0.00000032],
+        [-5.72537523, -0.00324494, 0.00184222, 0.00326996, -0.00000003, 0.00000032],
+        [-5.72705463, -0.00324236, 0.00184114, 0.00326733, -0.00000004, 0.00000032],
+        [-5.72872948, -0.00323979, 0.00184006, 0.00326470, -0.00000004, 0.00000031],
+        [-5.73039979, -0.00323721, 0.00183898, 0.00326207, -0.00000005, 0.00000031],
+        [-5.73206555, -0.00323464, 0.00183790, 0.00325945, -0.00000005, 0.00000031],
+        [-5.73372679, -0.00323208, 0.00183682, 0.00325683, -0.00000005, 0.00000031],
+        [-5.73538351, -0.00322952, 0.00183574, 0.00325422, -0.00000006, 0.00000031],
+        [-5.73703572, -0.00322695, 0.00183466, 0.00325161, -0.00000006, 0.00000031],
+        [-5.73868343, -0.00322440, 0.00183359, 0.00324900, -0.00000007, 0.00000030],
+        [-5.74032664, -0.00322184, 0.00183251, 0.00324639, -0.00000007, 0.00000030],
+        [-5.74196538, -0.00321929, 0.00183143, 0.00324379, -0.00000007, 0.00000030],
+        [-5.74359964, -0.00321674, 0.00183036, 0.00324119, -0.00000008, 0.00000030],
+        [-5.74522943, -0.00321419, 0.00182928, 0.00323859, -0.00000008, 0.00000030],
+        [-5.74685478, -0.00321165, 0.00182820, 0.00323600, -0.00000009, 0.00000030],
+        [-5.74847567, -0.00320911, 0.00182713, 0.00323341, -0.00000009, 0.00000030],
+        [-5.75009213, -0.00320657, 0.00182605, 0.00323082, -0.00000009, 0.00000029],
+        [-5.75170417, -0.00320404, 0.00182498, 0.00322824, -0.00000010, 0.00000029],
+        [-5.75331179, -0.00320151, 0.00182390, 0.00322566, -0.00000010, 0.00000029],
+        [-5.75491499, -0.00319898, 0.00182283, 0.00322308, -0.00000010, 0.00000029],
+        [-5.75651380, -0.00319645, 0.00182176, 0.00322050, -0.00000011, 0.00000029],
+        [-5.75810822, -0.00319393, 0.00182068, 0.00321793, -0.00000011, 0.00000029],
+        [-5.75969826, -0.00319141, 0.00181961, 0.00321536, -0.00000012, 0.00000029],
+        [-5.76128392, -0.00318889, 0.00181854, 0.00321280, -0.00000012, 0.00000028],
+        [-5.76286523, -0.00318637, 0.00181746, 0.00321023, -0.00000012, 0.00000028],
+        [-5.76444218, -0.00318386, 0.00181639, 0.00320767, -0.00000013, 0.00000028],
+        [-5.76601479, -0.00318135, 0.00181532, 0.00320512, -0.00000013, 0.00000028],
+        [-5.76758306, -0.00317884, 0.00181425, 0.00320256, -0.00000013, 0.00000028],
+        [-5.76914700, -0.00317634, 0.00181318, 0.00320001, -0.00000014, 0.00000028],
+        [-5.77070663, -0.00317384, 0.00181210, 0.00319746, -0.00000014, 0.00000028],
+        [-5.77226195, -0.00317134, 0.00181103, 0.00319492, -0.00000015, 0.00000028],
+        [-5.77381298, -0.00316884, 0.00180996, 0.00319237, -0.00000015, 0.00000027],
+        [-5.77535971, -0.00316635, 0.00180889, 0.00318984, -0.00000015, 0.00000027],
+        [-5.77690216, -0.00316386, 0.00180782, 0.00318730, -0.00000016, 0.00000027],
+        [-5.77844035, -0.00316137, 0.00180675, 0.00318477, -0.00000016, 0.00000027],
+        [-5.77997427, -0.00315889, 0.00180569, 0.00318223, -0.00000016, 0.00000027],
+        [-5.78150394, -0.00315640, 0.00180462, 0.00317971, -0.00000017, 0.00000027],
+        [-5.78302936, -0.00315393, 0.00180355, 0.00317718, -0.00000017, 0.00000027],
+        [-5.78455056, -0.00315145, 0.00180248, 0.00317466, -0.00000017, 0.00000026],
+        [-5.78606752, -0.00314897, 0.00180141, 0.00317214, -0.00000018, 0.00000026],
+        [-5.78758027, -0.00314650, 0.00180035, 0.00316963, -0.00000018, 0.00000026],
+        [-5.78908882, -0.00314403, 0.00179928, 0.00316711, -0.00000019, 0.00000026],
+        [-5.79059316, -0.00314157, 0.00179821, 0.00316460, -0.00000019, 0.00000026],
+        [-5.79209332, -0.00313911, 0.00179715, 0.00316209, -0.00000019, 0.00000026],
+        [-5.79358930, -0.00313665, 0.00179608, 0.00315959, -0.00000020, 0.00000026],
+        [-5.79508110, -0.00313419, 0.00179501, 0.00315709, -0.00000020, 0.00000026],
+        [-5.79656875, -0.00313173, 0.00179395, 0.00315459, -0.00000020, 0.00000025],
+        [-5.79805224, -0.00312928, 0.00179288, 0.00315209, -0.00000021, 0.00000025],
+        [-5.79953159, -0.00312683, 0.00179182, 0.00314960, -0.00000021, 0.00000025],
+        [-5.80100681, -0.00312438, 0.00179075, 0.00314711, -0.00000021, 0.00000025],
+        [-5.80247790, -0.00312194, 0.00178969, 0.00314462, -0.00000022, 0.00000025],
+        [-5.80394487, -0.00311950, 0.00178863, 0.00314214, -0.00000022, 0.00000025],
+        [-5.80540774, -0.00311706, 0.00178756, 0.00313966, -0.00000022, 0.00000025],
+        [-5.80686651, -0.00311462, 0.00178650, 0.00313718, -0.00000023, 0.00000025],
+        [-5.80832119, -0.00311219, 0.00178544, 0.00313470, -0.00000023, 0.00000024],
+        [-5.80977179, -0.00310976, 0.00178438, 0.00313223, -0.00000023, 0.00000024],
+        [-5.81121832, -0.00310733, 0.00178331, 0.00312976, -0.00000024, 0.00000024],
+        [-5.81266079, -0.00310490, 0.00178225, 0.00312729, -0.00000024, 0.00000024],
+        [-5.81409921, -0.00310248, 0.00178119, 0.00312483, -0.00000024, 0.00000024],
+        [-5.81553358, -0.00310006, 0.00178013, 0.00312237, -0.00000025, 0.00000024],
+        [-5.81696392, -0.00309764, 0.00177907, 0.00311991, -0.00000025, 0.00000024],
+        [-5.81839023, -0.00309523, 0.00177801, 0.00311745, -0.00000025, 0.00000024],
+        [-5.81981252, -0.00309282, 0.00177695, 0.00311500, -0.00000026, 0.00000024],
+        [-5.82123081, -0.00309041, 0.00177589, 0.00311255, -0.00000026, 0.00000023],
+        [-5.82264509, -0.00308800, 0.00177483, 0.00311010, -0.00000026, 0.00000023],
+        [-5.82405539, -0.00308560, 0.00177377, 0.00310766, -0.00000027, 0.00000023],
+        [-5.82546171, -0.00308319, 0.00177271, 0.00310521, -0.00000027, 0.00000023],
+        [-5.82686405, -0.00308079, 0.00177165, 0.00310277, -0.00000027, 0.00000023],
+        [-5.82826243, -0.00307840, 0.00177059, 0.00310034, -0.00000028, 0.00000023],
+        [-5.82965686, -0.00307600, 0.00176954, 0.00309790, -0.00000028, 0.00000023],
+        [-5.83104734, -0.00307361, 0.00176848, 0.00309547, -0.00000028, 0.00000023],
+        [-5.83243389, -0.00307122, 0.00176742, 0.00309305, -0.00000029, 0.00000023],
+        [-5.83381650, -0.00306884, 0.00176637, 0.00309062, -0.00000029, 0.00000022],
+        [-5.83519520, -0.00306645, 0.00176531, 0.00308820, -0.00000029, 0.00000022],
+        [-5.83656999, -0.00306407, 0.00176425, 0.00308578, -0.00000030, 0.00000022],
+        [-5.83794088, -0.00306169, 0.00176320, 0.00308336, -0.00000030, 0.00000022],
+        [-5.83930788, -0.00305932, 0.00176214, 0.00308095, -0.00000030, 0.00000022],
+        [-5.84067099, -0.00305695, 0.00176109, 0.00307853, -0.00000031, 0.00000022],
+        [-5.84203023, -0.00305458, 0.00176003, 0.00307612, -0.00000031, 0.00000022],
+        [-5.84338560, -0.00305221, 0.00175898, 0.00307372, -0.00000031, 0.00000022],
+        [-5.84473712, -0.00304984, 0.00175793, 0.00307132, -0.00000031, 0.00000022],
+        [-5.84608479, -0.00304748, 0.00175687, 0.00306891, -0.00000032, 0.00000022],
+        [-5.84742862, -0.00304512, 0.00175582, 0.00306652, -0.00000032, 0.00000021],
+        [-5.84876862, -0.00304276, 0.00175477, 0.00306412, -0.00000032, 0.00000021],
+        [-5.85010480, -0.00304041, 0.00175371, 0.00306173, -0.00000033, 0.00000021],
+        [-5.85143717, -0.00303805, 0.00175266, 0.00305934, -0.00000033, 0.00000021],
+        [-5.85276573, -0.00303570, 0.00175161, 0.00305695, -0.00000033, 0.00000021],
+        [-5.85409050, -0.00303336, 0.00175056, 0.00305457, -0.00000034, 0.00000021],
+        [-5.85541148, -0.00303101, 0.00174951, 0.00305218, -0.00000034, 0.00000021],
+        [-5.85672868, -0.00302867, 0.00174846, 0.00304981, -0.00000034, 0.00000021],
+        [-5.85804212, -0.00302633, 0.00174741, 0.00304743, -0.00000034, 0.00000021],
+        [-5.85935180, -0.00302399, 0.00174636, 0.00304506, -0.00000035, 0.00000020],
+        [-5.86065772, -0.00302166, 0.00174531, 0.00304268, -0.00000035, 0.00000020],
+        [-5.86195991, -0.00301932, 0.00174426, 0.00304032, -0.00000035, 0.00000020],
+        [-5.86325835, -0.00301699, 0.00174321, 0.00303795, -0.00000036, 0.00000020],
+        [-5.86455308, -0.00301467, 0.00174216, 0.00303559, -0.00000036, 0.00000020],
+        [-5.86584409, -0.00301234, 0.00174111, 0.00303323, -0.00000036, 0.00000020],
+        [-5.86713139, -0.00301002, 0.00174006, 0.00303087, -0.00000037, 0.00000020],
+        [-5.86841499, -0.00300770, 0.00173902, 0.00302851, -0.00000037, 0.00000020],
+        [-5.86969490, -0.00300538, 0.00173797, 0.00302616, -0.00000037, 0.00000020],
+        [-5.87097113, -0.00300307, 0.00173692, 0.00302381, -0.00000037, 0.00000020],
+        [-5.87224368, -0.00300076, 0.00173588, 0.00302146, -0.00000038, 0.00000020],
+        [-5.87351257, -0.00299845, 0.00173483, 0.00301912, -0.00000038, 0.00000019],
+        [-5.87477781, -0.00299614, 0.00173378, 0.00301678, -0.00000038, 0.00000019],
+        [-5.87603940, -0.00299383, 0.00173274, 0.00301444, -0.00000039, 0.00000019],
+        [-5.87729735, -0.00299153, 0.00173169, 0.00301210, -0.00000039, 0.00000019],
+        [-5.87855167, -0.00298923, 0.00173065, 0.00300977, -0.00000039, 0.00000019],
+        [-5.87980237, -0.00298694, 0.00172961, 0.00300744, -0.00000039, 0.00000019],
+        [-5.88104946, -0.00298464, 0.00172856, 0.00300511, -0.00000040, 0.00000019],
+        [-5.88229294, -0.00298235, 0.00172752, 0.00300278, -0.00000040, 0.00000019],
+        [-5.88353283, -0.00298006, 0.00172648, 0.00300046, -0.00000040, 0.00000019],
+        [-5.88476913, -0.00297777, 0.00172543, 0.00299814, -0.00000040, 0.00000019],
+        [-5.88600185, -0.00297549, 0.00172439, 0.00299582, -0.00000041, 0.00000019],
+        [-5.88723100, -0.00297320, 0.00172335, 0.00299350, -0.00000041, 0.00000018],
+        [-5.88845659, -0.00297093, 0.00172231, 0.00299119, -0.00000041, 0.00000018],
+        [-5.88967862, -0.00296865, 0.00172127, 0.00298888, -0.00000042, 0.00000018],
+        [-5.89089712, -0.00296637, 0.00172022, 0.00298657, -0.00000042, 0.00000018],
+        [-5.89211207, -0.00296410, 0.00171918, 0.00298427, -0.00000042, 0.00000018],
+        [-5.89332350, -0.00296183, 0.00171814, 0.00298196, -0.00000042, 0.00000018],
+        [-5.89453141, -0.00295956, 0.00171710, 0.00297966, -0.00000043, 0.00000018],
+        [-5.89573581, -0.00295730, 0.00171607, 0.00297737, -0.00000043, 0.00000018],
+        [-5.89693670, -0.00295504, 0.00171503, 0.00297507, -0.00000043, 0.00000018],
+        [-5.89813411, -0.00295278, 0.00171399, 0.00297278, -0.00000043, 0.00000018],
+        [-5.89932802, -0.00295052, 0.00171295, 0.00297049, -0.00000044, 0.00000018],
+        [-5.90051846, -0.00294826, 0.00171191, 0.00296820, -0.00000044, 0.00000017],
+        [-5.90170544, -0.00294601, 0.00171088, 0.00296592, -0.00000044, 0.00000017],
+        [-5.90288895, -0.00294376, 0.00170984, 0.00296363, -0.00000045, 0.00000017],
+        [-5.90406901, -0.00294151, 0.00170880, 0.00296136, -0.00000045, 0.00000017],
+        [-5.90524562, -0.00293927, 0.00170777, 0.00295908, -0.00000045, 0.00000017],
+        [-5.90641881, -0.00293702, 0.00170673, 0.00295680, -0.00000045, 0.00000017],
+        [-5.90758856, -0.00293478, 0.00170569, 0.00295453, -0.00000046, 0.00000017],
+        [-5.90875490, -0.00293254, 0.00170466, 0.00295226, -0.00000046, 0.00000017],
+        [-5.90991782, -0.00293031, 0.00170363, 0.00295000, -0.00000046, 0.00000017],
+        [-5.91107735, -0.00292807, 0.00170259, 0.00294773, -0.00000046, 0.00000017],
+        [-5.91223348, -0.00292584, 0.00170156, 0.00294547, -0.00000047, 0.00000017],
+        [-5.91338622, -0.00292362, 0.00170052, 0.00294321, -0.00000047, 0.00000017],
+        [-5.91453559, -0.00292139, 0.00169949, 0.00294095, -0.00000047, 0.00000016],
+        [-5.91568159, -0.00291917, 0.00169846, 0.00293870, -0.00000047, 0.00000016],
+        [-5.91682423, -0.00291694, 0.00169743, 0.00293645, -0.00000048, 0.00000016],
+        [-5.91796352, -0.00291472, 0.00169639, 0.00293420, -0.00000048, 0.00000016],
+        [-5.91909946, -0.00291251, 0.00169536, 0.00293195, -0.00000048, 0.00000016],
+        [-5.92023207, -0.00291029, 0.00169433, 0.00292971, -0.00000048, 0.00000016],
+        [-5.92136135, -0.00290808, 0.00169330, 0.00292746, -0.00000049, 0.00000016],
+        [-5.92248731, -0.00290587, 0.00169227, 0.00292523, -0.00000049, 0.00000016],
+        [-5.92360996, -0.00290367, 0.00169124, 0.00292299, -0.00000049, 0.00000016],
+        [-5.92472930, -0.00290146, 0.00169021, 0.00292075, -0.00000049, 0.00000016],
+        [-5.92584536, -0.00289926, 0.00168918, 0.00291852, -0.00000050, 0.00000016],
+        [-5.92695812, -0.00289706, 0.00168816, 0.00291629, -0.00000050, 0.00000016],
+        [-5.92806761, -0.00289486, 0.00168713, 0.00291407, -0.00000050, 0.00000016],
+        [-5.92917382, -0.00289267, 0.00168610, 0.00291184, -0.00000050, 0.00000015],
+        [-5.93027677, -0.00289047, 0.00168507, 0.00290962, -0.00000051, 0.00000015],
+        [-5.93137647, -0.00288828, 0.00168405, 0.00290740, -0.00000051, 0.00000015],
+        [-5.93247293, -0.00288610, 0.00168302, 0.00290518, -0.00000051, 0.00000015],
+        [-5.93356614, -0.00288391, 0.00168199, 0.00290297, -0.00000051, 0.00000015],
+        [-5.93465613, -0.00288173, 0.00168097, 0.00290076, -0.00000051, 0.00000015],
+        [-5.93574289, -0.00287955, 0.00167994, 0.00289855, -0.00000052, 0.00000015],
+        [-5.93682644, -0.00287737, 0.00167892, 0.00289634, -0.00000052, 0.00000015],
+        [-5.93790678, -0.00287519, 0.00167789, 0.00289414, -0.00000052, 0.00000015],
+        [-5.93898392, -0.00287302, 0.00167687, 0.00289193, -0.00000052, 0.00000015],
+        [-5.94005788, -0.00287085, 0.00167585, 0.00288973, -0.00000053, 0.00000015],
+        [-5.94112865, -0.00286868, 0.00167482, 0.00288754, -0.00000053, 0.00000015],
+        [-5.94219625, -0.00286651, 0.00167380, 0.00288534, -0.00000053, 0.00000015],
+        [-5.94326068, -0.00286435, 0.00167278, 0.00288315, -0.00000053, 0.00000015],
+        [-5.94432196, -0.00286218, 0.00167176, 0.00288096, -0.00000054, 0.00000014],
+        [-5.94538008, -0.00286002, 0.00167074, 0.00287877, -0.00000054, 0.00000014],
+        [-5.94643506, -0.00285787, 0.00166971, 0.00287659, -0.00000054, 0.00000014],
+        [-5.94748691, -0.00285571, 0.00166869, 0.00287441, -0.00000054, 0.00000014],
+        [-5.94853563, -0.00285356, 0.00166767, 0.00287222, -0.00000055, 0.00000014],
+        [-5.94958124, -0.00285141, 0.00166666, 0.00287005, -0.00000055, 0.00000014],
+        [-5.95062373, -0.00284926, 0.00166564, 0.00286787, -0.00000055, 0.00000014],
+        [-5.95166312, -0.00284711, 0.00166462, 0.00286570, -0.00000055, 0.00000014],
+        [-5.95269941, -0.00284497, 0.00166360, 0.00286353, -0.00000055, 0.00000014],
+        [-5.95373262, -0.00284283, 0.00166258, 0.00286136, -0.00000056, 0.00000014],
+        [-5.95476275, -0.00284069, 0.00166156, 0.00285919, -0.00000056, 0.00000014],
+        [-5.95578980, -0.00283855, 0.00166055, 0.00285703, -0.00000056, 0.00000014],
+        [-5.95681380, -0.00283642, 0.00165953, 0.00285487, -0.00000056, 0.00000014],
+        [-5.95783474, -0.00283429, 0.00165852, 0.00285271, -0.00000057, 0.00000014],
+        [-5.95885262, -0.00283216, 0.00165750, 0.00285056, -0.00000057, 0.00000014],
+        [-5.95986747, -0.00283003, 0.00165648, 0.00284840, -0.00000057, 0.00000013],
+        [-5.96087929, -0.00282791, 0.00165547, 0.00284625, -0.00000057, 0.00000013],
+        [-5.96188808, -0.00282578, 0.00165446, 0.00284410, -0.00000057, 0.00000013],
+        [-5.96289385, -0.00282366, 0.00165344, 0.00284196, -0.00000058, 0.00000013],
+        [-5.96389662, -0.00282154, 0.00165243, 0.00283981, -0.00000058, 0.00000013],
+        [-5.96489638, -0.00281943, 0.00165142, 0.00283767, -0.00000058, 0.00000013],
+        [-5.96589315, -0.00281732, 0.00165040, 0.00283553, -0.00000058, 0.00000013],
+        [-5.96688693, -0.00281520, 0.00164939, 0.00283339, -0.00000058, 0.00000013],
+        [-5.96787774, -0.00281310, 0.00164838, 0.00283126, -0.00000059, 0.00000013],
+        [-5.96886557, -0.00281099, 0.00164737, 0.00282913, -0.00000059, 0.00000013],
+        [-5.96985044, -0.00280888, 0.00164636, 0.00282700, -0.00000059, 0.00000013],
+        [-5.97083235, -0.00280678, 0.00164535, 0.00282487, -0.00000059, 0.00000013],
+        [-5.97181132, -0.00280468, 0.00164434, 0.00282274, -0.00000060, 0.00000013],
+        [-5.97278734, -0.00280258, 0.00164333, 0.00282062, -0.00000060, 0.00000013],
+        [-5.97376044, -0.00280049, 0.00164232, 0.00281850, -0.00000060, 0.00000013],
+        [-5.97473060, -0.00279840, 0.00164131, 0.00281638, -0.00000060, 0.00000013],
+        [-5.97569785, -0.00279631, 0.00164031, 0.00281427, -0.00000060, 0.00000012],
+        [-5.97666219, -0.00279422, 0.00163930, 0.00281215, -0.00000061, 0.00000012],
+        [-5.97762362, -0.00279213, 0.00163829, 0.00281004, -0.00000061, 0.00000012],
+        [-5.97858216, -0.00279005, 0.00163729, 0.00280793, -0.00000061, 0.00000012],
+        [-5.97953782, -0.00278796, 0.00163628, 0.00280583, -0.00000061, 0.00000012],
+        [-5.98049059, -0.00278589, 0.00163527, 0.00280372, -0.00000061, 0.00000012],
+        [-5.98144049, -0.00278381, 0.00163427, 0.00280162, -0.00000062, 0.00000012],
+        [-5.98238752, -0.00278173, 0.00163326, 0.00279952, -0.00000062, 0.00000012],
+        [-5.98333170, -0.00277966, 0.00163226, 0.00279742, -0.00000062, 0.00000012],
+        [-5.98427302, -0.00277759, 0.00163126, 0.00279533, -0.00000062, 0.00000012],
+        [-5.98521150, -0.00277552, 0.00163025, 0.00279324, -0.00000062, 0.00000012],
+        [-5.98614715, -0.00277346, 0.00162925, 0.00279115, -0.00000063, 0.00000012],
+        [-5.98707997, -0.00277139, 0.00162825, 0.00278906, -0.00000063, 0.00000012],
+        [-5.98800996, -0.00276933, 0.00162725, 0.00278697, -0.00000063, 0.00000012],
+        [-5.98893715, -0.00276727, 0.00162625, 0.00278489, -0.00000063, 0.00000012],
+        [-5.98986153, -0.00276521, 0.00162525, 0.00278281, -0.00000063, 0.00000012],
+        [-5.99078310, -0.00276316, 0.00162425, 0.00278073, -0.00000064, 0.00000012],
+        [-5.99170189, -0.00276111, 0.00162325, 0.00277865, -0.00000064, 0.00000012],
+        [-5.99261789, -0.00275906, 0.00162225, 0.00277658, -0.00000064, 0.00000011],
+        [-5.99353112, -0.00275701, 0.00162125, 0.00277451, -0.00000064, 0.00000011],
+        [-5.99444158, -0.00275496, 0.00162025, 0.00277244, -0.00000064, 0.00000011],
+        [-5.99534927, -0.00275292, 0.00161925, 0.00277037, -0.00000065, 0.00000011],
+        [-5.99625421, -0.00275088, 0.00161826, 0.00276831, -0.00000065, 0.00000011],
+        [-5.99715640, -0.00274884, 0.00161726, 0.00276624, -0.00000065, 0.00000011],
+        [-5.99805585, -0.00274680, 0.00161626, 0.00276418, -0.00000065, 0.00000011],
+        [-5.99895257, -0.00274476, 0.00161527, 0.00276213, -0.00000065, 0.00000011],
+        [-5.99984656, -0.00274273, 0.00161427, 0.00276007, -0.00000066, 0.00000011],
+        [-6.00073784, -0.00274070, 0.00161328, 0.00275802, -0.00000066, 0.00000011],
+        [-6.00162640, -0.00273867, 0.00161228, 0.00275597, -0.00000066, 0.00000011],
+        [-6.00251225, -0.00273665, 0.00161129, 0.00275392, -0.00000066, 0.00000011],
+        [-6.00339541, -0.00273462, 0.00161030, 0.00275187, -0.00000066, 0.00000011],
+        [-6.00427588, -0.00273260, 0.00160931, 0.00274983, -0.00000066, 0.00000011],
+        [-6.00515367, -0.00273058, 0.00160831, 0.00274778, -0.00000067, 0.00000011],
+        [-6.00602878, -0.00272856, 0.00160732, 0.00274574, -0.00000067, 0.00000011],
+        [-6.00690122, -0.00272655, 0.00160633, 0.00274371, -0.00000067, 0.00000011],
+        [-6.00777100, -0.00272454, 0.00160534, 0.00274167, -0.00000067, 0.00000011],
+        [-6.00863812, -0.00272252, 0.00160435, 0.00273964, -0.00000067, 0.00000011],
+        [-6.00950260, -0.00272052, 0.00160336, 0.00273761, -0.00000068, 0.00000010],
+        [-6.01036444, -0.00271851, 0.00160237, 0.00273558, -0.00000068, 0.00000010],
+        [-6.01122364, -0.00271651, 0.00160138, 0.00273355, -0.00000068, 0.00000010],
+        [-6.01208022, -0.00271450, 0.00160039, 0.00273153, -0.00000068, 0.00000010],
+        [-6.01293417, -0.00271250, 0.00159941, 0.00272951, -0.00000068, 0.00000010],
+        [-6.01378552, -0.00271051, 0.00159842, 0.00272749, -0.00000068, 0.00000010],
+        [-6.01463426, -0.00270851, 0.00159743, 0.00272547, -0.00000069, 0.00000010],
+        [-6.01548040, -0.00270652, 0.00159645, 0.00272346, -0.00000069, 0.00000010],
+        [-6.01632394, -0.00270453, 0.00159546, 0.00272144, -0.00000069, 0.00000010],
+        [-6.01716491, -0.00270254, 0.00159448, 0.00271943, -0.00000069, 0.00000010],
+        [-6.01800329, -0.00270055, 0.00159349, 0.00271742, -0.00000069, 0.00000010],
+        [-6.01883911, -0.00269856, 0.00159251, 0.00271542, -0.00000070, 0.00000010],
+        [-6.01967236, -0.00269658, 0.00159153, 0.00271341, -0.00000070, 0.00000010],
+        [-6.02050306, -0.00269460, 0.00159054, 0.00271141, -0.00000070, 0.00000010],
+        [-6.02133120, -0.00269262, 0.00158956, 0.00270941, -0.00000070, 0.00000010],
+        [-6.02215680, -0.00269065, 0.00158858, 0.00270741, -0.00000070, 0.00000010],
+        [-6.02297987, -0.00268867, 0.00158760, 0.00270542, -0.00000070, 0.00000010],
+        [-6.02380040, -0.00268670, 0.00158662, 0.00270343, -0.00000071, 0.00000010],
+        [-6.02461841, -0.00268473, 0.00158564, 0.00270144, -0.00000071, 0.00000010],
+        [-6.02543391, -0.00268276, 0.00158466, 0.00269945, -0.00000071, 0.00000010],
+        [-6.02624690, -0.00268080, 0.00158368, 0.00269746, -0.00000071, 0.00000010],
+        [-6.02705738, -0.00267883, 0.00158270, 0.00269548, -0.00000071, 0.00000009],
+        [-6.02786537, -0.00267687, 0.00158172, 0.00269350, -0.00000071, 0.00000009],
+        [-6.02867087, -0.00267491, 0.00158074, 0.00269152, -0.00000072, 0.00000009],
+        [-6.02947389, -0.00267296, 0.00157977, 0.00268954, -0.00000072, 0.00000009],
+        [-6.03027443, -0.00267100, 0.00157879, 0.00268756, -0.00000072, 0.00000009],
+        [-6.03107251, -0.00266905, 0.00157781, 0.00268559, -0.00000072, 0.00000009],
+        [-6.03186812, -0.00266710, 0.00157684, 0.00268362, -0.00000072, 0.00000009],
+        [-6.03266127, -0.00266515, 0.00157586, 0.00268165, -0.00000072, 0.00000009],
+        [-6.03345198, -0.00266320, 0.00157489, 0.00267968, -0.00000073, 0.00000009],
+        [-6.03424025, -0.00266126, 0.00157391, 0.00267772, -0.00000073, 0.00000009],
+        [-6.03502608, -0.00265932, 0.00157294, 0.00267576, -0.00000073, 0.00000009],
+        [-6.03580948, -0.00265738, 0.00157197, 0.00267380, -0.00000073, 0.00000009],
+        [-6.03659046, -0.00265544, 0.00157100, 0.00267184, -0.00000073, 0.00000009],
+        [-6.03736903, -0.00265350, 0.00157002, 0.00266988, -0.00000073, 0.00000009],
+        [-6.03814518, -0.00265157, 0.00156905, 0.00266793, -0.00000074, 0.00000009],
+        [-6.03891894, -0.00264964, 0.00156808, 0.00266598, -0.00000074, 0.00000009],
+        [-6.03969029, -0.00264771, 0.00156711, 0.00266403, -0.00000074, 0.00000009],
+        [-6.04045926, -0.00264578, 0.00156614, 0.00266208, -0.00000074, 0.00000009],
+        [-6.04122585, -0.00264386, 0.00156517, 0.00266014, -0.00000074, 0.00000009],
+        [-6.04199006, -0.00264193, 0.00156421, 0.00265819, -0.00000074, 0.00000009],
+        [-6.04275190, -0.00264001, 0.00156324, 0.00265625, -0.00000075, 0.00000009],
+        [-6.04351138, -0.00263809, 0.00156227, 0.00265431, -0.00000075, 0.00000009],
+        [-6.04426850, -0.00263618, 0.00156130, 0.00265238, -0.00000075, 0.00000009],
+        [-6.04502327, -0.00263426, 0.00156034, 0.00265044, -0.00000075, 0.00000008],
+        [-6.04577570, -0.00263235, 0.00155937, 0.00264851, -0.00000075, 0.00000008],
+        [-6.04652579, -0.00263044, 0.00155841, 0.00264658, -0.00000075, 0.00000008],
+        [-6.04727354, -0.00262853, 0.00155744, 0.00264465, -0.00000075, 0.00000008],
+        [-6.04801898, -0.00262662, 0.00155648, 0.00264273, -0.00000076, 0.00000008],
+        [-6.04876210, -0.00262472, 0.00155552, 0.00264080, -0.00000076, 0.00000008],
+        [-6.04950290, -0.00262282, 0.00155455, 0.00263888, -0.00000076, 0.00000008],
+        [-6.05024140, -0.00262092, 0.00155359, 0.00263696, -0.00000076, 0.00000008],
+        [-6.05097760, -0.00261902, 0.00155263, 0.00263505, -0.00000076, 0.00000008],
+        [-6.05171151, -0.00261712, 0.00155167, 0.00263313, -0.00000076, 0.00000008],
+        [-6.05244313, -0.00261523, 0.00155071, 0.00263122, -0.00000077, 0.00000008],
+        [-6.05317248, -0.00261334, 0.00154975, 0.00262931, -0.00000077, 0.00000008],
+        [-6.05389955, -0.00261145, 0.00154879, 0.00262740, -0.00000077, 0.00000008],
+        [-6.05462435, -0.00260956, 0.00154783, 0.00262549, -0.00000077, 0.00000008],
+        [-6.05534689, -0.00260767, 0.00154687, 0.00262359, -0.00000077, 0.00000008],
+        [-6.05606718, -0.00260579, 0.00154591, 0.00262169, -0.00000077, 0.00000008],
+        [-6.05678521, -0.00260391, 0.00154495, 0.00261979, -0.00000077, 0.00000008],
+        [-6.05750101, -0.00260203, 0.00154400, 0.00261789, -0.00000078, 0.00000008],
+        [-6.05821457, -0.00260015, 0.00154304, 0.00261599, -0.00000078, 0.00000008],
+        [-6.05892590, -0.00259827, 0.00154209, 0.00261410, -0.00000078, 0.00000008],
+        [-6.05963501, -0.00259640, 0.00154113, 0.00261221, -0.00000078, 0.00000008],
+        [-6.06034190, -0.00259453, 0.00154018, 0.00261032, -0.00000078, 0.00000008],
+        [-6.06104657, -0.00259266, 0.00153922, 0.00260843, -0.00000078, 0.00000008],
+        [-6.06174905, -0.00259079, 0.00153827, 0.00260654, -0.00000078, 0.00000008],
+        [-6.06244932, -0.00258893, 0.00153732, 0.00260466, -0.00000079, 0.00000008],
+        [-6.06314740, -0.00258706, 0.00153637, 0.00260278, -0.00000079, 0.00000008],
+        [-6.06384330, -0.00258520, 0.00153541, 0.00260090, -0.00000079, 0.00000008],
+        [-6.06453701, -0.00258334, 0.00153446, 0.00259902, -0.00000079, 0.00000007],
+        [-6.06522855, -0.00258148, 0.00153351, 0.00259715, -0.00000079, 0.00000007],
+        [-6.06591793, -0.00257963, 0.00153256, 0.00259527, -0.00000079, 0.00000007],
+        [-6.06660514, -0.00257778, 0.00153161, 0.00259340, -0.00000079, 0.00000007],
+        [-6.06729019, -0.00257592, 0.00153067, 0.00259153, -0.00000080, 0.00000007],
+        [-6.06797309, -0.00257408, 0.00152972, 0.00258967, -0.00000080, 0.00000007],
+        [-6.06865385, -0.00257223, 0.00152877, 0.00258780, -0.00000080, 0.00000007],
+        [-6.06933248, -0.00257038, 0.00152782, 0.00258594, -0.00000080, 0.00000007],
+        [-6.07000896, -0.00256854, 0.00152688, 0.00258408, -0.00000080, 0.00000007],
+        [-6.07068333, -0.00256670, 0.00152593, 0.00258222, -0.00000080, 0.00000007],
+        [-6.07135557, -0.00256486, 0.00152499, 0.00258036, -0.00000080, 0.00000007],
+        [-6.07202570, -0.00256302, 0.00152404, 0.00257851, -0.00000081, 0.00000007],
+        [-6.07269372, -0.00256119, 0.00152310, 0.00257666, -0.00000081, 0.00000007],
+        [-6.07335964, -0.00255935, 0.00152215, 0.00257480, -0.00000081, 0.00000007],
+        [-6.07402346, -0.00255752, 0.00152121, 0.00257296, -0.00000081, 0.00000007],
+        [-6.07468520, -0.00255569, 0.00152027, 0.00257111, -0.00000081, 0.00000007],
+        [-6.07534484, -0.00255387, 0.00151933, 0.00256927, -0.00000081, 0.00000007],
+        [-6.07600241, -0.00255204, 0.00151839, 0.00256742, -0.00000081, 0.00000007],
+        [-6.07665791, -0.00255022, 0.00151745, 0.00256558, -0.00000082, 0.00000007],
+        [-6.07731134, -0.00254840, 0.00151651, 0.00256374, -0.00000082, 0.00000007],
+        [-6.07796271, -0.00254658, 0.00151557, 0.00256191, -0.00000082, 0.00000007],
+        [-6.07861202, -0.00254476, 0.00151463, 0.00256007, -0.00000082, 0.00000007],
+        [-6.07925928, -0.00254294, 0.00151369, 0.00255824, -0.00000082, 0.00000007],
+        [-6.07990450, -0.00254113, 0.00151275, 0.00255641, -0.00000082, 0.00000007],
+        [-6.08054769, -0.00253932, 0.00151182, 0.00255458, -0.00000082, 0.00000007],
+        [-6.08118884, -0.00253751, 0.00151088, 0.00255276, -0.00000082, 0.00000007],
+        [-6.08182796, -0.00253570, 0.00150994, 0.00255093, -0.00000083, 0.00000007],
+        [-6.08246507, -0.00253390, 0.00150901, 0.00254911, -0.00000083, 0.00000007],
+        [-6.08310016, -0.00253210, 0.00150807, 0.00254729, -0.00000083, 0.00000007],
+        [-6.08373324, -0.00253029, 0.00150714, 0.00254547, -0.00000083, 0.00000007],
+        [-6.08436431, -0.00252849, 0.00150621, 0.00254366, -0.00000083, 0.00000006],
+        [-6.08499339, -0.00252670, 0.00150527, 0.00254184, -0.00000083, 0.00000006],
+        [-6.08562048, -0.00252490, 0.00150434, 0.00254003, -0.00000083, 0.00000006],
+        [-6.08624558, -0.00252311, 0.00150341, 0.00253822, -0.00000084, 0.00000006],
+        [-6.08686870, -0.00252132, 0.00150248, 0.00253641, -0.00000084, 0.00000006],
+        [-6.08748985, -0.00251953, 0.00150155, 0.00253461, -0.00000084, 0.00000006],
+        [-6.08810902, -0.00251774, 0.00150062, 0.00253280, -0.00000084, 0.00000006],
+        [-6.08872624, -0.00251595, 0.00149969, 0.00253100, -0.00000084, 0.00000006],
+        [-6.08934149, -0.00251417, 0.00149876, 0.00252920, -0.00000084, 0.00000006],
+        [-6.08995479, -0.00251239, 0.00149784, 0.00252740, -0.00000084, 0.00000006],
+        [-6.09056615, -0.00251061, 0.00149691, 0.00252561, -0.00000084, 0.00000006],
+        [-6.09117556, -0.00250883, 0.00149598, 0.00252381, -0.00000085, 0.00000006],
+        [-6.09178304, -0.00250705, 0.00149506, 0.00252202, -0.00000085, 0.00000006],
+        [-6.09238859, -0.00250528, 0.00149413, 0.00252023, -0.00000085, 0.00000006],
+        [-6.09299221, -0.00250351, 0.00149320, 0.00251844, -0.00000085, 0.00000006],
+        [-6.09359392, -0.00250174, 0.00149228, 0.00251666, -0.00000085, 0.00000006],
+        [-6.09419371, -0.00249997, 0.00149136, 0.00251487, -0.00000085, 0.00000006],
+        [-6.09479159, -0.00249820, 0.00149043, 0.00251309, -0.00000085, 0.00000006],
+        [-6.09538757, -0.00249644, 0.00148951, 0.00251131, -0.00000085, 0.00000006],
+        [-6.09598165, -0.00249468, 0.00148859, 0.00250953, -0.00000086, 0.00000006],
+        [-6.09657385, -0.00249292, 0.00148767, 0.00250776, -0.00000086, 0.00000006],
+        [-6.09716415, -0.00249116, 0.00148675, 0.00250598, -0.00000086, 0.00000006],
+        [-6.09775257, -0.00248940, 0.00148583, 0.00250421, -0.00000086, 0.00000006],
+        [-6.09833912, -0.00248765, 0.00148491, 0.00250244, -0.00000086, 0.00000006],
+        [-6.09892380, -0.00248589, 0.00148399, 0.00250067, -0.00000086, 0.00000006],
+        [-6.09950662, -0.00248414, 0.00148307, 0.00249891, -0.00000086, 0.00000006],
+        [-6.10008757, -0.00248239, 0.00148215, 0.00249714, -0.00000086, 0.00000006],
+        [-6.10066667, -0.00248065, 0.00148124, 0.00249538, -0.00000086, 0.00000006],
+        [-6.10124393, -0.00247890, 0.00148032, 0.00249362, -0.00000087, 0.00000006],
+        [-6.10181934, -0.00247716, 0.00147941, 0.00249186, -0.00000087, 0.00000006],
+        [-6.10239291, -0.00247542, 0.00147849, 0.00249010, -0.00000087, 0.00000006],
+        [-6.10296465, -0.00247368, 0.00147758, 0.00248835, -0.00000087, 0.00000006],
+        [-6.10353456, -0.00247194, 0.00147666, 0.00248660, -0.00000087, 0.00000006],
+        [-6.10410265, -0.00247020, 0.00147575, 0.00248484, -0.00000087, 0.00000006],
+        [-6.10466892, -0.00246847, 0.00147484, 0.00248310, -0.00000087, 0.00000006],
+        [-6.10523338, -0.00246674, 0.00147393, 0.00248135, -0.00000087, 0.00000005],
+        [-6.10579604, -0.00246501, 0.00147301, 0.00247960, -0.00000088, 0.00000005],
+        [-6.10635689, -0.00246328, 0.00147210, 0.00247786, -0.00000088, 0.00000005],
+        [-6.10691595, -0.00246155, 0.00147119, 0.00247612, -0.00000088, 0.00000005],
+        [-6.10747322, -0.00245983, 0.00147028, 0.00247438, -0.00000088, 0.00000005],
+        [-6.10802871, -0.00245811, 0.00146937, 0.00247264, -0.00000088, 0.00000005],
+        [-6.10858241, -0.00245639, 0.00146847, 0.00247091, -0.00000088, 0.00000005],
+        [-6.10913434, -0.00245467, 0.00146756, 0.00246917, -0.00000088, 0.00000005],
+        [-6.10968450, -0.00245295, 0.00146665, 0.00246744, -0.00000088, 0.00000005],
+        [-6.11023289, -0.00245123, 0.00146575, 0.00246571, -0.00000088, 0.00000005],
+        [-6.11077953, -0.00244952, 0.00146484, 0.00246398, -0.00000089, 0.00000005],
+        [-6.11132441, -0.00244781, 0.00146393, 0.00246226, -0.00000089, 0.00000005],
+        [-6.11186754, -0.00244610, 0.00146303, 0.00246053, -0.00000089, 0.00000005],
+        [-6.11240893, -0.00244439, 0.00146213, 0.00245881, -0.00000089, 0.00000005],
+        [-6.11294858, -0.00244269, 0.00146122, 0.00245709, -0.00000089, 0.00000005],
+        [-6.11348649, -0.00244098, 0.00146032, 0.00245537, -0.00000089, 0.00000005],
+        [-6.11402268, -0.00243928, 0.00145942, 0.00245366, -0.00000089, 0.00000005],
+        [-6.11455714, -0.00243758, 0.00145852, 0.00245194, -0.00000089, 0.00000005],
+        [-6.11508989, -0.00243588, 0.00145762, 0.00245023, -0.00000089, 0.00000005],
+        [-6.11562092, -0.00243419, 0.00145672, 0.00244852, -0.00000090, 0.00000005],
+        [-6.11615024, -0.00243249, 0.00145582, 0.00244681, -0.00000090, 0.00000005],
+        [-6.11667786, -0.00243080, 0.00145492, 0.00244510, -0.00000090, 0.00000005],
+        [-6.11720378, -0.00242911, 0.00145402, 0.00244340, -0.00000090, 0.00000005],
+        [-6.11772800, -0.00242742, 0.00145312, 0.00244170, -0.00000090, 0.00000005],
+        [-6.11825054, -0.00242574, 0.00145223, 0.00244000, -0.00000090, 0.00000005],
+        [-6.11877140, -0.00242405, 0.00145133, 0.00243830, -0.00000090, 0.00000005],
+        [-6.11929057, -0.00242237, 0.00145043, 0.00243660, -0.00000090, 0.00000005],
+        [-6.11980807, -0.00242069, 0.00144954, 0.00243490, -0.00000090, 0.00000005],
+        [-6.12032390, -0.00241901, 0.00144864, 0.00243321, -0.00000090, 0.00000005],
+        [-6.12083807, -0.00241733, 0.00144775, 0.00243152, -0.00000091, 0.00000005],
+        [-6.12135058, -0.00241565, 0.00144686, 0.00242983, -0.00000091, 0.00000005],
+        [-6.12186144, -0.00241398, 0.00144597, 0.00242814, -0.00000091, 0.00000005],
+        [-6.12237064, -0.00241231, 0.00144507, 0.00242645, -0.00000091, 0.00000005],
+        [-6.12287820, -0.00241064, 0.00144418, 0.00242477, -0.00000091, 0.00000005],
+        [-6.12338412, -0.00240897, 0.00144329, 0.00242309, -0.00000091, 0.00000005],
+        [-6.12388841, -0.00240730, 0.00144240, 0.00242141, -0.00000091, 0.00000005],
+        [-6.12439107, -0.00240563, 0.00144151, 0.00241973, -0.00000091, 0.00000005],
+        [-6.12489210, -0.00240397, 0.00144062, 0.00241805, -0.00000091, 0.00000005],
+        [-6.12539151, -0.00240231, 0.00143974, 0.00241637, -0.00000092, 0.00000005],
+        [-6.12588931, -0.00240065, 0.00143885, 0.00241470, -0.00000092, 0.00000005],
+        [-6.12638549, -0.00239899, 0.00143796, 0.00241303, -0.00000092, 0.00000005],
+        [-6.12688007, -0.00239734, 0.00143708, 0.00241136, -0.00000092, 0.00000005],
+        [-6.12737305, -0.00239568, 0.00143619, 0.00240969, -0.00000092, 0.00000005],
+        [-6.12786443, -0.00239403, 0.00143531, 0.00240803, -0.00000092, 0.00000004],
+        [-6.12835422, -0.00239238, 0.00143442, 0.00240636, -0.00000092, 0.00000004],
+        [-6.12884242, -0.00239073, 0.00143354, 0.00240470, -0.00000092, 0.00000004],
+        [-6.12932904, -0.00238908, 0.00143266, 0.00240304, -0.00000092, 0.00000004],
+        [-6.12981408, -0.00238744, 0.00143177, 0.00240138, -0.00000092, 0.00000004],
+        [-6.13029755, -0.00238580, 0.00143089, 0.00239972, -0.00000093, 0.00000004],
+        [-6.13077945, -0.00238416, 0.00143001, 0.00239807, -0.00000093, 0.00000004],
+        [-6.13125979, -0.00238252, 0.00142913, 0.00239642, -0.00000093, 0.00000004],
+        [-6.13173857, -0.00238088, 0.00142825, 0.00239477, -0.00000093, 0.00000004],
+        [-6.13221579, -0.00237924, 0.00142737, 0.00239312, -0.00000093, 0.00000004],
+        [-6.13269147, -0.00237761, 0.00142649, 0.00239147, -0.00000093, 0.00000004],
+        [-6.13316560, -0.00237598, 0.00142562, 0.00238982, -0.00000093, 0.00000004],
+        [-6.13363819, -0.00237434, 0.00142474, 0.00238818, -0.00000093, 0.00000004],
+        [-6.13410924, -0.00237272, 0.00142386, 0.00238654, -0.00000093, 0.00000004],
+        [-6.13457876, -0.00237109, 0.00142299, 0.00238490, -0.00000093, 0.00000004],
+        [-6.13504676, -0.00236946, 0.00142211, 0.00238326, -0.00000093, 0.00000004],
+        [-6.13551323, -0.00236784, 0.00142124, 0.00238162, -0.00000094, 0.00000004],
+        [-6.13597818, -0.00236622, 0.00142036, 0.00237999, -0.00000094, 0.00000004],
+        [-6.13644163, -0.00236460, 0.00141949, 0.00237835, -0.00000094, 0.00000004],
+        [-6.13690356, -0.00236298, 0.00141862, 0.00237672, -0.00000094, 0.00000004],
+        [-6.13736399, -0.00236136, 0.00141774, 0.00237509, -0.00000094, 0.00000004],
+        [-6.13782292, -0.00235975, 0.00141687, 0.00237347, -0.00000094, 0.00000004],
+        [-6.13828035, -0.00235814, 0.00141600, 0.00237184, -0.00000094, 0.00000004],
+        [-6.13873630, -0.00235652, 0.00141513, 0.00237022, -0.00000094, 0.00000004],
+        [-6.13919076, -0.00235492, 0.00141426, 0.00236859, -0.00000094, 0.00000004],
+        [-6.13964373, -0.00235331, 0.00141339, 0.00236697, -0.00000094, 0.00000004],
+        [-6.14009523, -0.00235170, 0.00141253, 0.00236535, -0.00000094, 0.00000004],
+        [-6.14054526, -0.00235010, 0.00141166, 0.00236374, -0.00000095, 0.00000004],
+        [-6.14099381, -0.00234850, 0.00141079, 0.00236212, -0.00000095, 0.00000004],
+        [-6.14144091, -0.00234689, 0.00140993, 0.00236051, -0.00000095, 0.00000004],
+        [-6.14188654, -0.00234530, 0.00140906, 0.00235890, -0.00000095, 0.00000004],
+        [-6.14233072, -0.00234370, 0.00140820, 0.00235729, -0.00000095, 0.00000004],
+        [-6.14277345, -0.00234210, 0.00140733, 0.00235568, -0.00000095, 0.00000004],
+        [-6.14321473, -0.00234051, 0.00140647, 0.00235407, -0.00000095, 0.00000004],
+        [-6.14365457, -0.00233892, 0.00140561, 0.00235247, -0.00000095, 0.00000004],
+        [-6.14409297, -0.00233733, 0.00140474, 0.00235087, -0.00000095, 0.00000004],
+        [-6.14452994, -0.00233574, 0.00140388, 0.00234926, -0.00000095, 0.00000004],
+        [-6.14496548, -0.00233415, 0.00140302, 0.00234767, -0.00000095, 0.00000004],
+        [-6.14539959, -0.00233257, 0.00140216, 0.00234607, -0.00000096, 0.00000004],
+        [-6.14583228, -0.00233098, 0.00140130, 0.00234447, -0.00000096, 0.00000004],
+        [-6.14626356, -0.00232940, 0.00140044, 0.00234288, -0.00000096, 0.00000004],
+        [-6.14669342, -0.00232782, 0.00139958, 0.00234129, -0.00000096, 0.00000004],
+        [-6.14712188, -0.00232625, 0.00139873, 0.00233970, -0.00000096, 0.00000004],
+        [-6.14754894, -0.00232467, 0.00139787, 0.00233811, -0.00000096, 0.00000004],
+        [-6.14797459, -0.00232309, 0.00139701, 0.00233652, -0.00000096, 0.00000004],
+        [-6.14839885, -0.00232152, 0.00139616, 0.00233493, -0.00000096, 0.00000004],
+        [-6.14882172, -0.00231995, 0.00139530, 0.00233335, -0.00000096, 0.00000004],
+        [-6.14924320, -0.00231838, 0.00139445, 0.00233177, -0.00000096, 0.00000004],
+        [-6.14966330, -0.00231681, 0.00139359, 0.00233019, -0.00000096, 0.00000004],
+        [-6.15008202, -0.00231525, 0.00139274, 0.00232861, -0.00000097, 0.00000004],
+        [-6.15049937, -0.00231368, 0.00139189, 0.00232704, -0.00000097, 0.00000004],
+        [-6.15091535, -0.00231212, 0.00139104, 0.00232546, -0.00000097, 0.00000004],
+        [-6.15132996, -0.00231056, 0.00139018, 0.00232389, -0.00000097, 0.00000004],
+        [-6.15174321, -0.00230900, 0.00138933, 0.00232232, -0.00000097, 0.00000003],
+        [-6.15215510, -0.00230744, 0.00138848, 0.00232075, -0.00000097, 0.00000003],
+        [-6.15256564, -0.00230589, 0.00138763, 0.00231918, -0.00000097, 0.00000003],
+        [-6.15297483, -0.00230433, 0.00138679, 0.00231761, -0.00000097, 0.00000003],
+        [-6.15338268, -0.00230278, 0.00138594, 0.00231605, -0.00000097, 0.00000003],
+        [-6.15378918, -0.00230123, 0.00138509, 0.00231449, -0.00000097, 0.00000003],
+        [-6.15419435, -0.00229968, 0.00138424, 0.00231293, -0.00000097, 0.00000003],
+        [-6.15459818, -0.00229814, 0.00138340, 0.00231137, -0.00000097, 0.00000003],
+        [-6.15500069, -0.00229659, 0.00138255, 0.00230981, -0.00000097, 0.00000003],
+        [-6.15540187, -0.00229505, 0.00138171, 0.00230825, -0.00000098, 0.00000003],
+        [-6.15580173, -0.00229350, 0.00138087, 0.00230670, -0.00000098, 0.00000003],
+        [-6.15620027, -0.00229196, 0.00138002, 0.00230515, -0.00000098, 0.00000003],
+        [-6.15659750, -0.00229042, 0.00137918, 0.00230360, -0.00000098, 0.00000003],
+        [-6.15699342, -0.00228889, 0.00137834, 0.00230205, -0.00000098, 0.00000003],
+        [-6.15738804, -0.00228735, 0.00137750, 0.00230050, -0.00000098, 0.00000003],
+        [-6.15778136, -0.00228582, 0.00137666, 0.00229896, -0.00000098, 0.00000003],
+        [-6.15817338, -0.00228429, 0.00137582, 0.00229741, -0.00000098, 0.00000003],
+        [-6.15856410, -0.00228276, 0.00137498, 0.00229587, -0.00000098, 0.00000003],
+        [-6.15895354, -0.00228123, 0.00137414, 0.00229433, -0.00000098, 0.00000003],
+        [-6.15934170, -0.00227970, 0.00137330, 0.00229279, -0.00000098, 0.00000003],
+        [-6.15972857, -0.00227818, 0.00137246, 0.00229125, -0.00000098, 0.00000003],
+        [-6.16011416, -0.00227665, 0.00137162, 0.00228972, -0.00000099, 0.00000003],
+        [-6.16049848, -0.00227513, 0.00137079, 0.00228818, -0.00000099, 0.00000003],
+        [-6.16088154, -0.00227361, 0.00136995, 0.00228665, -0.00000099, 0.00000003],
+        [-6.16126332, -0.00227209, 0.00136912, 0.00228512, -0.00000099, 0.00000003],
+        [-6.16164385, -0.00227057, 0.00136828, 0.00228359, -0.00000099, 0.00000003],
+        [-6.16202312, -0.00226906, 0.00136745, 0.00228207, -0.00000099, 0.00000003],
+        [-6.16240113, -0.00226754, 0.00136662, 0.00228054, -0.00000099, 0.00000003],
+        [-6.16277790, -0.00226603, 0.00136579, 0.00227902, -0.00000099, 0.00000003],
+        [-6.16315341, -0.00226452, 0.00136495, 0.00227750, -0.00000099, 0.00000003],
+        [-6.16352769, -0.00226301, 0.00136412, 0.00227598, -0.00000099, 0.00000003],
+        [-6.16390073, -0.00226151, 0.00136329, 0.00227446, -0.00000099, 0.00000003],
+        [-6.16427253, -0.00226000, 0.00136246, 0.00227294, -0.00000099, 0.00000003],
+        [-6.16464310, -0.00225850, 0.00136164, 0.00227143, -0.00000099, 0.00000003],
+        [-6.16501245, -0.00225700, 0.00136081, 0.00226991, -0.00000100, 0.00000003],
+        [-6.16538057, -0.00225549, 0.00135998, 0.00226840, -0.00000100, 0.00000003],
+        [-6.16574747, -0.00225400, 0.00135915, 0.00226689, -0.00000100, 0.00000003],
+        [-6.16611316, -0.00225250, 0.00135833, 0.00226538, -0.00000100, 0.00000003],
+        [-6.16647763, -0.00225100, 0.00135750, 0.00226388, -0.00000100, 0.00000003],
+        [-6.16684090, -0.00224951, 0.00135668, 0.00226237, -0.00000100, 0.00000003],
+        [-6.16720296, -0.00224802, 0.00135585, 0.00226087, -0.00000100, 0.00000003],
+        [-6.16756382, -0.00224653, 0.00135503, 0.00225936, -0.00000100, 0.00000003],
+        [-6.16792348, -0.00224504, 0.00135421, 0.00225786, -0.00000100, 0.00000003],
+        [-6.16828195, -0.00224355, 0.00135338, 0.00225637, -0.00000100, 0.00000003],
+        [-6.16863923, -0.00224206, 0.00135256, 0.00225487, -0.00000100, 0.00000003],
+        [-6.16899533, -0.00224058, 0.00135174, 0.00225337, -0.00000100, 0.00000003],
+        [-6.16935024, -0.00223910, 0.00135092, 0.00225188, -0.00000100, 0.00000003],
+        [-6.16970397, -0.00223762, 0.00135010, 0.00225039, -0.00000100, 0.00000003],
+        [-6.17005653, -0.00223614, 0.00134928, 0.00224890, -0.00000101, 0.00000003],
+        [-6.17040791, -0.00223466, 0.00134846, 0.00224741, -0.00000101, 0.00000003],
+        [-6.17075813, -0.00223318, 0.00134765, 0.00224592, -0.00000101, 0.00000003],
+        [-6.17110719, -0.00223171, 0.00134683, 0.00224444, -0.00000101, 0.00000003],
+        [-6.17145508, -0.00223024, 0.00134601, 0.00224295, -0.00000101, 0.00000003],
+        [-6.17180182, -0.00222876, 0.00134520, 0.00224147, -0.00000101, 0.00000003],
+        [-6.17214740, -0.00222729, 0.00134438, 0.00223999, -0.00000101, 0.00000003],
+        [-6.17249183, -0.00222583, 0.00134357, 0.00223851, -0.00000101, 0.00000003],
+        [-6.17283512, -0.00222436, 0.00134275, 0.00223703, -0.00000101, 0.00000003],
+        [-6.17317726, -0.00222289, 0.00134194, 0.00223556, -0.00000101, 0.00000003],
+        [-6.17351827, -0.00222143, 0.00134113, 0.00223408, -0.00000101, 0.00000003],
+        [-6.17385813, -0.00221997, 0.00134032, 0.00223261, -0.00000101, 0.00000003],
+        [-6.17419687, -0.00221851, 0.00133950, 0.00223114, -0.00000101, 0.00000003],
+        [-6.17453448, -0.00221705, 0.00133869, 0.00222967, -0.00000101, 0.00000003],
+        [-6.17487096, -0.00221559, 0.00133788, 0.00222820, -0.00000101, 0.00000003],
+        [-6.17520632, -0.00221414, 0.00133708, 0.00222674, -0.00000102, 0.00000003],
+        [-6.17554056, -0.00221269, 0.00133627, 0.00222527, -0.00000102, 0.00000003],
+        [-6.17587369, -0.00221123, 0.00133546, 0.00222381, -0.00000102, 0.00000003],
+        [-6.17620571, -0.00220978, 0.00133465, 0.00222235, -0.00000102, 0.00000003],
+        [-6.17653662, -0.00220833, 0.00133385, 0.00222089, -0.00000102, 0.00000003],
+        [-6.17686642, -0.00220689, 0.00133304, 0.00221943, -0.00000102, 0.00000003],
+        [-6.17719513, -0.00220544, 0.00133223, 0.00221798, -0.00000102, 0.00000003],
+        [-6.17752273, -0.00220400, 0.00133143, 0.00221652, -0.00000102, 0.00000003],
+        [-6.17784925, -0.00220255, 0.00133063, 0.00221507, -0.00000102, 0.00000003],
+        [-6.17817467, -0.00220111, 0.00132982, 0.00221362, -0.00000102, 0.00000002],
+        [-6.17849900, -0.00219967, 0.00132902, 0.00221217, -0.00000102, 0.00000002],
+        [-6.17882225, -0.00219823, 0.00132822, 0.00221072, -0.00000102, 0.00000002],
+        [-6.17914442, -0.00219680, 0.00132742, 0.00220927, -0.00000102, 0.00000002],
+        [-6.17946552, -0.00219536, 0.00132662, 0.00220782, -0.00000102, 0.00000002],
+        [-6.17978554, -0.00219393, 0.00132582, 0.00220638, -0.00000102, 0.00000002],
+        [-6.18010448, -0.00219250, 0.00132502, 0.00220494, -0.00000103, 0.00000002],
+        [-6.18042237, -0.00219107, 0.00132422, 0.00220350, -0.00000103, 0.00000002],
+        [-6.18073919, -0.00218964, 0.00132342, 0.00220206, -0.00000103, 0.00000002],
+        [-6.18105494, -0.00218821, 0.00132262, 0.00220062, -0.00000103, 0.00000002],
+        [-6.18136964, -0.00218679, 0.00132183, 0.00219919, -0.00000103, 0.00000002],
+        [-6.18168329, -0.00218536, 0.00132103, 0.00219775, -0.00000103, 0.00000002],
+        [-6.18199589, -0.00218394, 0.00132024, 0.00219632, -0.00000103, 0.00000002],
+        [-6.18230744, -0.00218252, 0.00131944, 0.00219489, -0.00000103, 0.00000002],
+        [-6.18261795, -0.00218110, 0.00131865, 0.00219346, -0.00000103, 0.00000002],
+        [-6.18292741, -0.00217968, 0.00131785, 0.00219203, -0.00000103, 0.00000002],
+        [-6.18323584, -0.00217827, 0.00131706, 0.00219060, -0.00000103, 0.00000002],
+        [-6.18354323, -0.00217685, 0.00131627, 0.00218918, -0.00000103, 0.00000002],
+        [-6.18384960, -0.00217544, 0.00131548, 0.00218776, -0.00000103, 0.00000002],
+        [-6.18415493, -0.00217403, 0.00131469, 0.00218633, -0.00000103, 0.00000002],
+        [-6.18445924, -0.00217262, 0.00131390, 0.00218491, -0.00000103, 0.00000002],
+        [-6.18476253, -0.00217121, 0.00131311, 0.00218350, -0.00000103, 0.00000002],
+        [-6.18506481, -0.00216980, 0.00131232, 0.00218208, -0.00000104, 0.00000002],
+        [-6.18536606, -0.00216840, 0.00131153, 0.00218066, -0.00000104, 0.00000002],
+        [-6.18566631, -0.00216699, 0.00131074, 0.00217925, -0.00000104, 0.00000002],
+        [-6.18596555, -0.00216559, 0.00130996, 0.00217784, -0.00000104, 0.00000002],
+        [-6.18626378, -0.00216419, 0.00130917, 0.00217643, -0.00000104, 0.00000002],
+        [-6.18656101, -0.00216279, 0.00130839, 0.00217502, -0.00000104, 0.00000002],
+        [-6.18685724, -0.00216139, 0.00130760, 0.00217361, -0.00000104, 0.00000002],
+        [-6.18715248, -0.00216000, 0.00130682, 0.00217220, -0.00000104, 0.00000002],
+        [-6.18744673, -0.00215860, 0.00130603, 0.00217080, -0.00000104, 0.00000002],
+        [-6.18773998, -0.00215721, 0.00130525, 0.00216939, -0.00000104, 0.00000002],
+        [-6.18803225, -0.00215582, 0.00130447, 0.00216799, -0.00000104, 0.00000002],
+        [-6.18832353, -0.00215443, 0.00130369, 0.00216659, -0.00000104, 0.00000002],
+        [-6.18861384, -0.00215304, 0.00130291, 0.00216519, -0.00000104, 0.00000002],
+        [-6.18890316, -0.00215165, 0.00130213, 0.00216380, -0.00000104, 0.00000002],
+        [-6.18919152, -0.00215026, 0.00130135, 0.00216240, -0.00000104, 0.00000002],
+        [-6.18947890, -0.00214888, 0.00130057, 0.00216101, -0.00000104, 0.00000002],
+        [-6.18976532, -0.00214750, 0.00129979, 0.00215961, -0.00000104, 0.00000002],
+        [-6.19005077, -0.00214612, 0.00129901, 0.00215822, -0.00000105, 0.00000002],
+        [-6.19033526, -0.00214474, 0.00129823, 0.00215683, -0.00000105, 0.00000002],
+        [-6.19061879, -0.00214336, 0.00129746, 0.00215545, -0.00000105, 0.00000002],
+        [-6.19090136, -0.00214198, 0.00129668, 0.00215406, -0.00000105, 0.00000002],
+        [-6.19118298, -0.00214061, 0.00129591, 0.00215268, -0.00000105, 0.00000002],
+        [-6.19146366, -0.00213923, 0.00129513, 0.00215129, -0.00000105, 0.00000002],
+        [-6.19174338, -0.00213786, 0.00129436, 0.00214991, -0.00000105, 0.00000002],
+        [-6.19202217, -0.00213649, 0.00129359, 0.00214853, -0.00000105, 0.00000002],
+        [-6.19230001, -0.00213512, 0.00129281, 0.00214715, -0.00000105, 0.00000002],
+        [-6.19257691, -0.00213375, 0.00129204, 0.00214577, -0.00000105, 0.00000002],
+        [-6.19285288, -0.00213239, 0.00129127, 0.00214440, -0.00000105, 0.00000002],
+        [-6.19312792, -0.00213102, 0.00129050, 0.00214302, -0.00000105, 0.00000002],
+        [-6.19340203, -0.00212966, 0.00128973, 0.00214165, -0.00000105, 0.00000002],
+        [-6.19367521, -0.00212830, 0.00128896, 0.00214028, -0.00000105, 0.00000002],
+        [-6.19394748, -0.00212694, 0.00128819, 0.00213891, -0.00000105, 0.00000002],
+        [-6.19421882, -0.00212558, 0.00128743, 0.00213754, -0.00000105, 0.00000002],
+        [-6.19448924, -0.00212422, 0.00128666, 0.00213617, -0.00000105, 0.00000002],
+        [-6.19475875, -0.00212286, 0.00128589, 0.00213481, -0.00000105, 0.00000002],
+        [-6.19502735, -0.00212151, 0.00128513, 0.00213344, -0.00000105, 0.00000002],
+        [-6.19529504, -0.00212016, 0.00128436, 0.00213208, -0.00000106, 0.00000002],
+        [-6.19556183, -0.00211880, 0.00128360, 0.00213072, -0.00000106, 0.00000002],
+        [-6.19582771, -0.00211745, 0.00128283, 0.00212936, -0.00000106, 0.00000002],
+        [-6.19609270, -0.00211611, 0.00128207, 0.00212800, -0.00000106, 0.00000002],
+        [-6.19635678, -0.00211476, 0.00128131, 0.00212665, -0.00000106, 0.00000002],
+        [-6.19661998, -0.00211341, 0.00128054, 0.00212529, -0.00000106, 0.00000002],
+        [-6.19688228, -0.00211207, 0.00127978, 0.00212394, -0.00000106, 0.00000002],
+        [-6.19714369, -0.00211073, 0.00127902, 0.00212259, -0.00000106, 0.00000002],
+        [-6.19740422, -0.00210938, 0.00127826, 0.00212123, -0.00000106, 0.00000002],
+        [-6.19766387, -0.00210804, 0.00127750, 0.00211989, -0.00000106, 0.00000002],
+        [-6.19792264, -0.00210671, 0.00127674, 0.00211854, -0.00000106, 0.00000002],
+        [-6.19818053, -0.00210537, 0.00127599, 0.00211719, -0.00000106, 0.00000002],
+        [-6.19843754, -0.00210403, 0.00127523, 0.00211585, -0.00000106, 0.00000002],
+        [-6.19869369, -0.00210270, 0.00127447, 0.00211450, -0.00000106, 0.00000002],
+        [-6.19894896, -0.00210137, 0.00127372, 0.00211316, -0.00000106, 0.00000002],
+        [-6.19920337, -0.00210004, 0.00127296, 0.00211182, -0.00000106, 0.00000002],
+        [-6.19945692, -0.00209871, 0.00127221, 0.00211048, -0.00000106, 0.00000002],
+        [-6.19970961, -0.00209738, 0.00127145, 0.00210914, -0.00000106, 0.00000002],
+        [-6.19996144, -0.00209605, 0.00127070, 0.00210781, -0.00000106, 0.00000002],
+        [-6.20021242, -0.00209473, 0.00126995, 0.00210647, -0.00000107, 0.00000002],
+        [-6.20046254, -0.00209340, 0.00126919, 0.00210514, -0.00000107, 0.00000002],
+        [-6.20071181, -0.00209208, 0.00126844, 0.00210381, -0.00000107, 0.00000002],
+        [-6.20096024, -0.00209076, 0.00126769, 0.00210248, -0.00000107, 0.00000002],
+        [-6.20120782, -0.00208944, 0.00126694, 0.00210115, -0.00000107, 0.00000002],
+        [-6.20145457, -0.00208812, 0.00126619, 0.00209982, -0.00000107, 0.00000002],
+        [-6.20170047, -0.00208680, 0.00126544, 0.00209850, -0.00000107, 0.00000002],
+        [-6.20194554, -0.00208549, 0.00126469, 0.00209717, -0.00000107, 0.00000002],
+        [-6.20218978, -0.00208417, 0.00126395, 0.00209585, -0.00000107, 0.00000002],
+        [-6.20243318, -0.00208286, 0.00126320, 0.00209453, -0.00000107, 0.00000002],
+        [-6.20267576, -0.00208155, 0.00126245, 0.00209321, -0.00000107, 0.00000002],
+        [-6.20291751, -0.00208024, 0.00126171, 0.00209189, -0.00000107, 0.00000002],
+        [-6.20315844, -0.00207893, 0.00126096, 0.00209057, -0.00000107, 0.00000002],
+        [-6.20339855, -0.00207762, 0.00126022, 0.00208925, -0.00000107, 0.00000002],
+        [-6.20363785, -0.00207632, 0.00125947, 0.00208794, -0.00000107, 0.00000002],
+        [-6.20387633, -0.00207501, 0.00125873, 0.00208663, -0.00000107, 0.00000002],
+        [-6.20411399, -0.00207371, 0.00125799, 0.00208532, -0.00000107, 0.00000002],
+        [-6.20435085, -0.00207241, 0.00125725, 0.00208400, -0.00000107, 0.00000002],
+        [-6.20458690, -0.00207111, 0.00125650, 0.00208270, -0.00000107, 0.00000002],
+        [-6.20482215, -0.00206981, 0.00125576, 0.00208139, -0.00000107, 0.00000002],
+        [-6.20505660, -0.00206852, 0.00125502, 0.00208008, -0.00000107, 0.00000002],
+        [-6.20529024, -0.00206722, 0.00125428, 0.00207878, -0.00000108, 0.00000002],
+        [-6.20552310, -0.00206593, 0.00125355, 0.00207748, -0.00000108, 0.00000002],
+        [-6.20575515, -0.00206463, 0.00125281, 0.00207617, -0.00000108, 0.00000002],
+        [-6.20598642, -0.00206334, 0.00125207, 0.00207487, -0.00000108, 0.00000002],
+        [-6.20621690, -0.00206205, 0.00125133, 0.00207357, -0.00000108, 0.00000002],
+        [-6.20644659, -0.00206076, 0.00125060, 0.00207228, -0.00000108, 0.00000002],
+        [-6.20667550, -0.00205947, 0.00124986, 0.00207098, -0.00000108, 0.00000002],
+        [-6.20690362, -0.00205819, 0.00124913, 0.00206969, -0.00000108, 0.00000002],
+        [-6.20713097, -0.00205690, 0.00124839, 0.00206839, -0.00000108, 0.00000002],
+        [-6.20735754, -0.00205562, 0.00124766, 0.00206710, -0.00000108, 0.00000002],
+        [-6.20758334, -0.00205434, 0.00124693, 0.00206581, -0.00000108, 0.00000002],
+        [-6.20780837, -0.00205306, 0.00124619, 0.00206452, -0.00000108, 0.00000001],
+        [-6.20803263, -0.00205178, 0.00124546, 0.00206323, -0.00000108, 0.00000001],
+        [-6.20825612, -0.00205050, 0.00124473, 0.00206195, -0.00000108, 0.00000001],
+        [-6.20847885, -0.00204923, 0.00124400, 0.00206066, -0.00000108, 0.00000001],
+        [-6.20870082, -0.00204795, 0.00124327, 0.00205938, -0.00000108, 0.00000001],
+        [-6.20892203, -0.00204668, 0.00124254, 0.00205810, -0.00000108, 0.00000001],
+        [-6.20914249, -0.00204540, 0.00124181, 0.00205681, -0.00000108, 0.00000001],
+        [-6.20936219, -0.00204413, 0.00124109, 0.00205554, -0.00000108, 0.00000001],
+        [-6.20958114, -0.00204286, 0.00124036, 0.00205426, -0.00000108, 0.00000001],
+        [-6.20979934, -0.00204160, 0.00123963, 0.00205298, -0.00000108, 0.00000001],
+        [-6.21001679, -0.00204033, 0.00123891, 0.00205171, -0.00000108, 0.00000001],
+        [-6.21023350, -0.00203906, 0.00123818, 0.00205043, -0.00000108, 0.00000001],
+        [-6.21044947, -0.00203780, 0.00123746, 0.00204916, -0.00000109, 0.00000001],
+        [-6.21066470, -0.00203654, 0.00123673, 0.00204789, -0.00000109, 0.00000001],
+        [-6.21087920, -0.00203528, 0.00123601, 0.00204662, -0.00000109, 0.00000001],
+        [-6.21109295, -0.00203402, 0.00123529, 0.00204535, -0.00000109, 0.00000001],
+        [-6.21130598, -0.00203276, 0.00123456, 0.00204408, -0.00000109, 0.00000001],
+        [-6.21151828, -0.00203150, 0.00123384, 0.00204282, -0.00000109, 0.00000001],
+        [-6.21172985, -0.00203024, 0.00123312, 0.00204155, -0.00000109, 0.00000001],
+        [-6.21194069, -0.00202899, 0.00123240, 0.00204029, -0.00000109, 0.00000001],
+        [-6.21215082, -0.00202774, 0.00123168, 0.00203903, -0.00000109, 0.00000001],
+        [-6.21236022, -0.00202648, 0.00123096, 0.00203777, -0.00000109, 0.00000001],
+        [-6.21256890, -0.00202523, 0.00123025, 0.00203651, -0.00000109, 0.00000001],
+        [-6.21277687, -0.00202398, 0.00122953, 0.00203525, -0.00000109, 0.00000001],
+        [-6.21298413, -0.00202274, 0.00122881, 0.00203399, -0.00000109, 0.00000001],
+        [-6.21319067, -0.00202149, 0.00122809, 0.00203274, -0.00000109, 0.00000001],
+        [-6.21339651, -0.00202025, 0.00122738, 0.00203149, -0.00000109, 0.00000001],
+        [-6.21360164, -0.00201900, 0.00122666, 0.00203023, -0.00000109, 0.00000001],
+        [-6.21380607, -0.00201776, 0.00122595, 0.00202898, -0.00000109, 0.00000001],
+        [-6.21400979, -0.00201652, 0.00122523, 0.00202773, -0.00000109, 0.00000001],
+        [-6.21421282, -0.00201528, 0.00122452, 0.00202649, -0.00000109, 0.00000001],
+        [-6.21441515, -0.00201404, 0.00122381, 0.00202524, -0.00000109, 0.00000001],
+        [-6.21461678, -0.00201280, 0.00122310, 0.00202399, -0.00000109, 0.00000001],
+        [-6.21481773, -0.00201157, 0.00122239, 0.00202275, -0.00000109, 0.00000001],
+        [-6.21501798, -0.00201033, 0.00122167, 0.00202151, -0.00000109, 0.00000001],
+        [-6.21521754, -0.00200910, 0.00122096, 0.00202026, -0.00000109, 0.00000001],
+        [-6.21541642, -0.00200787, 0.00122026, 0.00201902, -0.00000110, 0.00000001],
+        [-6.21561461, -0.00200664, 0.00121955, 0.00201779, -0.00000110, 0.00000001],
+        [-6.21581213, -0.00200541, 0.00121884, 0.00201655, -0.00000110, 0.00000001],
+        [-6.21600896, -0.00200418, 0.00121813, 0.00201531, -0.00000110, 0.00000001],
+        [-6.21620512, -0.00200295, 0.00121742, 0.00201408, -0.00000110, 0.00000001],
+        [-6.21640060, -0.00200173, 0.00121672, 0.00201284, -0.00000110, 0.00000001],
+        [-6.21659541, -0.00200050, 0.00121601, 0.00201161, -0.00000110, 0.00000001],
+        [-6.21678955, -0.00199928, 0.00121531, 0.00201038, -0.00000110, 0.00000001],
+        [-6.21698302, -0.00199806, 0.00121460, 0.00200915, -0.00000110, 0.00000001],
+        [-6.21717583, -0.00199684, 0.00121390, 0.00200792, -0.00000110, 0.00000001],
+        [-6.21736797, -0.00199562, 0.00121320, 0.00200670, -0.00000110, 0.00000001],
+        [-6.21755945, -0.00199440, 0.00121249, 0.00200547, -0.00000110, 0.00000001],
+        [-6.21775028, -0.00199319, 0.00121179, 0.00200425, -0.00000110, 0.00000001],
+        [-6.21794044, -0.00199197, 0.00121109, 0.00200302, -0.00000110, 0.00000001],
+        [-6.21812995, -0.00199076, 0.00121039, 0.00200180, -0.00000110, 0.00000001],
+        [-6.21831881, -0.00198955, 0.00120969, 0.00200058, -0.00000110, 0.00000001],
+        [-6.21850702, -0.00198833, 0.00120899, 0.00199936, -0.00000110, 0.00000001],
+        [-6.21869457, -0.00198712, 0.00120829, 0.00199815, -0.00000110, 0.00000001],
+        [-6.21888149, -0.00198592, 0.00120759, 0.00199693, -0.00000110, 0.00000001],
+        [-6.21906775, -0.00198471, 0.00120689, 0.00199571, -0.00000110, 0.00000001],
+        [-6.21925338, -0.00198350, 0.00120620, 0.00199450, -0.00000110, 0.00000001],
+        [-6.21943836, -0.00198230, 0.00120550, 0.00199329, -0.00000110, 0.00000001],
+        [-6.21962271, -0.00198110, 0.00120481, 0.00199208, -0.00000110, 0.00000001],
+        [-6.21980642, -0.00197989, 0.00120411, 0.00199087, -0.00000110, 0.00000001],
+        [-6.21998950, -0.00197869, 0.00120342, 0.00198966, -0.00000110, 0.00000001],
+        [-6.22017194, -0.00197749, 0.00120272, 0.00198845, -0.00000110, 0.00000001],
+        [-6.22035376, -0.00197630, 0.00120203, 0.00198724, -0.00000110, 0.00000001],
+        [-6.22053495, -0.00197510, 0.00120134, 0.00198604, -0.00000110, 0.00000001],
+        [-6.22071551, -0.00197390, 0.00120064, 0.00198484, -0.00000111, 0.00000001],
+        [-6.22089545, -0.00197271, 0.00119995, 0.00198363, -0.00000111, 0.00000001],
+        [-6.22107477, -0.00197152, 0.00119926, 0.00198243, -0.00000111, 0.00000001],
+        [-6.22125347, -0.00197032, 0.00119857, 0.00198123, -0.00000111, 0.00000001],
+        [-6.22143155, -0.00196913, 0.00119788, 0.00198003, -0.00000111, 0.00000001],
+        [-6.22160902, -0.00196794, 0.00119719, 0.00197884, -0.00000111, 0.00000001],
+        [-6.22178587, -0.00196676, 0.00119650, 0.00197764, -0.00000111, 0.00000001],
+        [-6.22196211, -0.00196557, 0.00119582, 0.00197645, -0.00000111, 0.00000001],
+        [-6.22213774, -0.00196438, 0.00119513, 0.00197525, -0.00000111, 0.00000001],
+        [-6.22231277, -0.00196320, 0.00119444, 0.00197406, -0.00000111, 0.00000001],
+        [-6.22248719, -0.00196202, 0.00119376, 0.00197287, -0.00000111, 0.00000001],
+        [-6.22266101, -0.00196083, 0.00119307, 0.00197168, -0.00000111, 0.00000001],
+        [-6.22283422, -0.00195965, 0.00119239, 0.00197049, -0.00000111, 0.00000001],
+        [-6.22300684, -0.00195848, 0.00119170, 0.00196931, -0.00000111, 0.00000001],
+        [-6.22317886, -0.00195730, 0.00119102, 0.00196812, -0.00000111, 0.00000001],
+        [-6.22335028, -0.00195612, 0.00119034, 0.00196694, -0.00000111, 0.00000001],
+        [-6.22352111, -0.00195495, 0.00118965, 0.00196575, -0.00000111, 0.00000001],
+        [-6.22369135, -0.00195377, 0.00118897, 0.00196457, -0.00000111, 0.00000001],
+        [-6.22386100, -0.00195260, 0.00118829, 0.00196339, -0.00000111, 0.00000001],
+        [-6.22403007, -0.00195143, 0.00118761, 0.00196221, -0.00000111, 0.00000001],
+        [-6.22419854, -0.00195026, 0.00118693, 0.00196103, -0.00000111, 0.00000001],
+        [-6.22436644, -0.00194909, 0.00118625, 0.00195986, -0.00000111, 0.00000001],
+        [-6.22453375, -0.00194792, 0.00118557, 0.00195868, -0.00000111, 0.00000001],
+        [-6.22470048, -0.00194675, 0.00118490, 0.00195751, -0.00000111, 0.00000001],
+        [-6.22486664, -0.00194559, 0.00118422, 0.00195633, -0.00000111, 0.00000001],
+        [-6.22503222, -0.00194442, 0.00118354, 0.00195516, -0.00000111, 0.00000001],
+        [-6.22519722, -0.00194326, 0.00118287, 0.00195399, -0.00000111, 0.00000001],
+        [-6.22536166, -0.00194210, 0.00118219, 0.00195282, -0.00000111, 0.00000001],
+        [-6.22552552, -0.00194094, 0.00118152, 0.00195165, -0.00000111, 0.00000001],
+        [-6.22568881, -0.00193978, 0.00118084, 0.00195049, -0.00000111, 0.00000001],
+        [-6.22585154, -0.00193862, 0.00118017, 0.00194932, -0.00000112, 0.00000001],
+        [-6.22601370, -0.00193746, 0.00117950, 0.00194816, -0.00000112, 0.00000001],
+        [-6.22617531, -0.00193631, 0.00117882, 0.00194699, -0.00000112, 0.00000001],
+        [-6.22633635, -0.00193515, 0.00117815, 0.00194583, -0.00000112, 0.00000001],
+        [-6.22649683, -0.00193400, 0.00117748, 0.00194467, -0.00000112, 0.00000001],
+        [-6.22665675, -0.00193285, 0.00117681, 0.00194351, -0.00000112, 0.00000001],
+        [-6.22681612, -0.00193170, 0.00117614, 0.00194235, -0.00000112, 0.00000001],
+        [-6.22697494, -0.00193055, 0.00117547, 0.00194120, -0.00000112, 0.00000001],
+        [-6.22713320, -0.00192940, 0.00117480, 0.00194004, -0.00000112, 0.00000001],
+        [-6.22729092, -0.00192825, 0.00117413, 0.00193889, -0.00000112, 0.00000001],
+        [-6.22744808, -0.00192711, 0.00117346, 0.00193773, -0.00000112, 0.00000001],
+        [-6.22760470, -0.00192596, 0.00117280, 0.00193658, -0.00000112, 0.00000001],
+        [-6.22776078, -0.00192482, 0.00117213, 0.00193543, -0.00000112, 0.00000001],
+        [-6.22791631, -0.00192368, 0.00117147, 0.00193428, -0.00000112, 0.00000001],
+        [-6.22807131, -0.00192253, 0.00117080, 0.00193313, -0.00000112, 0.00000001],
+        [-6.22822576, -0.00192139, 0.00117014, 0.00193198, -0.00000112, 0.00000001],
+        [-6.22837968, -0.00192026, 0.00116947, 0.00193084, -0.00000112, 0.00000001],
+        [-6.22853306, -0.00191912, 0.00116881, 0.00192969, -0.00000112, 0.00000001],
+        [-6.22868591, -0.00191798, 0.00116815, 0.00192855, -0.00000112, 0.00000001],
+        [-6.22883823, -0.00191685, 0.00116748, 0.00192741, -0.00000112, 0.00000001],
+        [-6.22899002, -0.00191571, 0.00116682, 0.00192627, -0.00000112, 0.00000001],
+        [-6.22914128, -0.00191458, 0.00116616, 0.00192513, -0.00000112, 0.00000001],
+        [-6.22929201, -0.00191345, 0.00116550, 0.00192399, -0.00000112, 0.00000001],
+        [-6.22944222, -0.00191232, 0.00116484, 0.00192285, -0.00000112, 0.00000001],
+        [-6.22959190, -0.00191119, 0.00116418, 0.00192171, -0.00000112, 0.00000001],
+        [-6.22974107, -0.00191006, 0.00116352, 0.00192058, -0.00000112, 0.00000001],
+        [-6.22988971, -0.00190893, 0.00116286, 0.00191944, -0.00000112, 0.00000001],
+        [-6.23003784, -0.00190781, 0.00116221, 0.00191831, -0.00000112, 0.00000001],
+        [-6.23018545, -0.00190669, 0.00116155, 0.00191718, -0.00000112, 0.00000001],
+        [-6.23033255, -0.00190556, 0.00116089, 0.00191605, -0.00000112, 0.00000001],
+        [-6.23047913, -0.00190444, 0.00116024, 0.00191492, -0.00000112, 0.00000001],
+        [-6.23062521, -0.00190332, 0.00115958, 0.00191379, -0.00000112, 0.00000001],
+        [-6.23077077, -0.00190220, 0.00115893, 0.00191267, -0.00000112, 0.00000001],
+        [-6.23091583, -0.00190108, 0.00115828, 0.00191154, -0.00000112, 0.00000001],
+        [-6.23106038, -0.00189996, 0.00115762, 0.00191042, -0.00000113, 0.00000001],
+        [-6.23120443, -0.00189885, 0.00115697, 0.00190929, -0.00000113, 0.00000001],
+        [-6.23134798, -0.00189773, 0.00115632, 0.00190817, -0.00000113, 0.00000001],
+        [-6.23149102, -0.00189662, 0.00115567, 0.00190705, -0.00000113, 0.00000001],
+        [-6.23163357, -0.00189551, 0.00115501, 0.00190593, -0.00000113, 0.00000001],
+        [-6.23177562, -0.00189439, 0.00115436, 0.00190481, -0.00000113, 0.00000001],
+        [-6.23191717, -0.00189328, 0.00115371, 0.00190369, -0.00000113, 0.00000001],
+        [-6.23205823, -0.00189218, 0.00115307, 0.00190258, -0.00000113, 0.00000001],
+        [-6.23219880, -0.00189107, 0.00115242, 0.00190146, -0.00000113, 0.00000001],
+        [-6.23233888, -0.00188996, 0.00115177, 0.00190035, -0.00000113, 0.00000001],
+        [-6.23247846, -0.00188886, 0.00115112, 0.00189924, -0.00000113, 0.00000001],
+        [-6.23261756, -0.00188775, 0.00115047, 0.00189812, -0.00000113, 0.00000001],
+        [-6.23275618, -0.00188665, 0.00114983, 0.00189701, -0.00000113, 0.00000001],
+        [-6.23289431, -0.00188555, 0.00114918, 0.00189591, -0.00000113, 0.00000001],
+        [-6.23303196, -0.00188444, 0.00114854, 0.00189480, -0.00000113, 0.00000001],
+        [-6.23316912, -0.00188334, 0.00114789, 0.00189369, -0.00000113, 0.00000001],
+        [-6.23330581, -0.00188225, 0.00114725, 0.00189258, -0.00000113, 0.00000001],
+        [-6.23344202, -0.00188115, 0.00114661, 0.00189148, -0.00000113, 0.00000001],
+        [-6.23357776, -0.00188005, 0.00114596, 0.00189038, -0.00000113, 0.00000001],
+        [-6.23371302, -0.00187896, 0.00114532, 0.00188927, -0.00000113, 0.00000001],
+        [-6.23384781, -0.00187786, 0.00114468, 0.00188817, -0.00000113, 0.00000001],
+        [-6.23398212, -0.00187677, 0.00114404, 0.00188707, -0.00000113, 0.00000001],
+        [-6.23411597, -0.00187568, 0.00114340, 0.00188598, -0.00000113, 0.00000001],
+        [-6.23424935, -0.00187459, 0.00114276, 0.00188488, -0.00000113, 0.00000001],
+        [-6.23438226, -0.00187350, 0.00114212, 0.00188378, -0.00000113, 0.00000001],
+        [-6.23451471, -0.00187241, 0.00114148, 0.00188269, -0.00000113, 0.00000001],
+        [-6.23464669, -0.00187132, 0.00114084, 0.00188159, -0.00000113, 0.00000001],
+        [-6.23477821, -0.00187024, 0.00114021, 0.00188050, -0.00000113, 0.00000001],
+        [-6.23490927, -0.00186915, 0.00113957, 0.00187941, -0.00000113, 0.00000001],
+        [-6.23503988, -0.00186807, 0.00113893, 0.00187832, -0.00000113, 0.00000001],
+        [-6.23517002, -0.00186698, 0.00113830, 0.00187723, -0.00000113, 0.00000001],
+        [-6.23529971, -0.00186590, 0.00113766, 0.00187614, -0.00000113, 0.00000001],
+        [-6.23542895, -0.00186482, 0.00113703, 0.00187505, -0.00000113, 0.00000001],
+        [-6.23555773, -0.00186374, 0.00113639, 0.00187396, -0.00000113, 0.00000001],
+        [-6.23568606, -0.00186267, 0.00113576, 0.00187288, -0.00000113, 0.00000001],
+        [-6.23581395, -0.00186159, 0.00113513, 0.00187180, -0.00000113, 0.00000001],
+        [-6.23594138, -0.00186051, 0.00113449, 0.00187071, -0.00000113, 0.00000001],
+        [-6.23606837, -0.00185944, 0.00113386, 0.00186963, -0.00000113, 0.00000001],
+        [-6.23619491, -0.00185836, 0.00113323, 0.00186855, -0.00000113, 0.00000001],
+        [-6.23632102, -0.00185729, 0.00113260, 0.00186747, -0.00000113, 0.00000001],
+        [-6.23644667, -0.00185622, 0.00113197, 0.00186639, -0.00000114, 0.00000001],
+        [-6.23657189, -0.00185515, 0.00113134, 0.00186532, -0.00000114, 0.00000001],
+        [-6.23669667, -0.00185408, 0.00113071, 0.00186424, -0.00000114, 0.00000001],
+        [-6.23682101, -0.00185301, 0.00113009, 0.00186317, -0.00000114, 0.00000001],
+        [-6.23694492, -0.00185195, 0.00112946, 0.00186209, -0.00000114, 0.00000001],
+        [-6.23706839, -0.00185088, 0.00112883, 0.00186102, -0.00000114, 0.00000001],
+        [-6.23719143, -0.00184981, 0.00112820, 0.00185995, -0.00000114, 0.00000001],
+        [-6.23731403, -0.00184875, 0.00112758, 0.00185888, -0.00000114, 0.00000001],
+        [-6.23743621, -0.00184769, 0.00112695, 0.00185781, -0.00000114, 0.00000001],
+        [-6.23755795, -0.00184663, 0.00112633, 0.00185674, -0.00000114, 0.00000001],
+        [-6.23767927, -0.00184557, 0.00112570, 0.00185567, -0.00000114, 0.00000001],
+        [-6.23780017, -0.00184451, 0.00112508, 0.00185461, -0.00000114, 0.00000001],
+        [-6.23792064, -0.00184345, 0.00112446, 0.00185354, -0.00000114, 0.00000001],
+        [-6.23804068, -0.00184239, 0.00112383, 0.00185248, -0.00000114, 0.00000001],
+        [-6.23816031, -0.00184134, 0.00112321, 0.00185142, -0.00000114, 0.00000001],
+        [-6.23827952, -0.00184028, 0.00112259, 0.00185035, -0.00000114, 0.00000001],
+        [-6.23839830, -0.00183923, 0.00112197, 0.00184929, -0.00000114, 0.00000001],
+        [-6.23851667, -0.00183817, 0.00112135, 0.00184823, -0.00000114, 0.00000001],
+        [-6.23863462, -0.00183712, 0.00112073, 0.00184718, -0.00000114, 0.00000001],
+        [-6.23875216, -0.00183607, 0.00112011, 0.00184612, -0.00000114, 0.00000001],
+        [-6.23886929, -0.00183502, 0.00111949, 0.00184506, -0.00000114, 0.00000001],
+        [-6.23898600, -0.00183398, 0.00111887, 0.00184401, -0.00000114, 0.00000001],
+        [-6.23910231, -0.00183293, 0.00111826, 0.00184295, -0.00000114, 0.00000001],
+        [-6.23921820, -0.00183188, 0.00111764, 0.00184190, -0.00000114, 0.00000001],
+        [-6.23933369, -0.00183084, 0.00111702, 0.00184085, -0.00000114, 0.00000001],
+        [-6.23944877, -0.00182979, 0.00111641, 0.00183980, -0.00000114, 0.00000001],
+        [-6.23956345, -0.00182875, 0.00111579, 0.00183875, -0.00000114, 0.00000001],
+        [-6.23967773, -0.00182771, 0.00111518, 0.00183770, -0.00000114, 0.00000001],
+        [-6.23979160, -0.00182667, 0.00111456, 0.00183665, -0.00000114, 0.00000001],
+        [-6.23990507, -0.00182563, 0.00111395, 0.00183561, -0.00000114, 0.00000001],
+        [-6.24001814, -0.00182459, 0.00111334, 0.00183456, -0.00000114, 0.00000001],
+        [-6.24013082, -0.00182355, 0.00111273, 0.00183352, -0.00000114, 0.00000001],
+        [-6.24024309, -0.00182251, 0.00111211, 0.00183248, -0.00000114, 0.00000001],
+        [-6.24035498, -0.00182148, 0.00111150, 0.00183143, -0.00000114, 0.00000001],
+        [-6.24046647, -0.00182045, 0.00111089, 0.00183039, -0.00000114, 0.00000001],
+        [-6.24057756, -0.00181941, 0.00111028, 0.00182935, -0.00000114, 0.00000001],
+        [-6.24068827, -0.00181838, 0.00110967, 0.00182831, -0.00000114, 0.00000001],
+        [-6.24079858, -0.00181735, 0.00110906, 0.00182728, -0.00000114, 0.00000001],
+        [-6.24090851, -0.00181632, 0.00110846, 0.00182624, -0.00000114, 0.00000001],
+        [-6.24101805, -0.00181529, 0.00110785, 0.00182521, -0.00000114, 0.00000001],
+        [-6.24112720, -0.00181426, 0.00110724, 0.00182417, -0.00000114, 0.00000001],
+        [-6.24123597, -0.00181324, 0.00110663, 0.00182314, -0.00000114, 0.00000001],
+        [-6.24134436, -0.00181221, 0.00110603, 0.00182211, -0.00000114, 0.00000001],
+        [-6.24145237, -0.00181118, 0.00110542, 0.00182107, -0.00000114, 0.00000001],
+        [-6.24155999, -0.00181016, 0.00110482, 0.00182004, -0.00000114, 0.00000001],
+        [-6.24166723, -0.00180914, 0.00110421, 0.00181902, -0.00000114, 0.00000001],
+        [-6.24177410, -0.00180812, 0.00110361, 0.00181799, -0.00000114, 0.00000001],
+        [-6.24188059, -0.00180710, 0.00110300, 0.00181696, -0.00000115, 0.00000001],
+        [-6.24198671, -0.00180608, 0.00110240, 0.00181593, -0.00000115, 0.00000001],
+        [-6.24209245, -0.00180506, 0.00110180, 0.00181491, -0.00000115, 0.00000001],
+        [-6.24219781, -0.00180404, 0.00110120, 0.00181389, -0.00000115, 0.00000001],
+        [-6.24230281, -0.00180302, 0.00110060, 0.00181286, -0.00000115, 0.00000001],
+        [-6.24240743, -0.00180201, 0.00110000, 0.00181184, -0.00000115, 0.00000001],
+        [-6.24251169, -0.00180100, 0.00109940, 0.00181082, -0.00000115, 0.00000001],
+        [-6.24261558, -0.00179998, 0.00109880, 0.00180980, -0.00000115, 0.00000001],
+        [-6.24271910, -0.00179897, 0.00109820, 0.00180878, -0.00000115, 0.00000001],
+        [-6.24282226, -0.00179796, 0.00109760, 0.00180777, -0.00000115, 0.00000001],
+        [-6.24292505, -0.00179695, 0.00109700, 0.00180675, -0.00000115, 0.00000001],
+        [-6.24302748, -0.00179594, 0.00109640, 0.00180573, -0.00000115, 0.00000001],
+        [-6.24312955, -0.00179493, 0.00109581, 0.00180472, -0.00000115, 0.00000001],
+        [-6.24323126, -0.00179392, 0.00109521, 0.00180371, -0.00000115, 0.00000001],
+        [-6.24333261, -0.00179292, 0.00109461, 0.00180269, -0.00000115, 0.00000001],
+        [-6.24343360, -0.00179191, 0.00109402, 0.00180168, -0.00000115, 0.00000001],
+        [-6.24353423, -0.00179091, 0.00109342, 0.00180067, -0.00000115, 0.00000001],
+        [-6.24363451, -0.00178991, 0.00109283, 0.00179966, -0.00000115, 0.00000001],
+        [-6.24373444, -0.00178891, 0.00109224, 0.00179866, -0.00000115, 0.00000001],
+        [-6.24383401, -0.00178790, 0.00109164, 0.00179765, -0.00000115, 0.00000001],
+        [-6.24393323, -0.00178690, 0.00109105, 0.00179664, -0.00000115, 0.00000001],
+        [-6.24403210, -0.00178591, 0.00109046, 0.00179564, -0.00000115, 0.00000001],
+        [-6.24413062, -0.00178491, 0.00108987, 0.00179463, -0.00000115, 0.00000001],
+        [-6.24422879, -0.00178391, 0.00108928, 0.00179363, -0.00000115, 0.00000001],
+        [-6.24432661, -0.00178292, 0.00108869, 0.00179263, -0.00000115, 0.00000001],
+        [-6.24442409, -0.00178192, 0.00108810, 0.00179163, -0.00000115, 0.00000001],
+        [-6.24452123, -0.00178093, 0.00108751, 0.00179063, -0.00000115, 0.00000000],
+        [-6.24461802, -0.00177993, 0.00108692, 0.00178963, -0.00000115, 0.00000000],
+        [-6.24471446, -0.00177894, 0.00108633, 0.00178863, -0.00000115, 0.00000000],
+        [-6.24481057, -0.00177795, 0.00108574, 0.00178764, -0.00000115, 0.00000000],
+        [-6.24490634, -0.00177696, 0.00108516, 0.00178664, -0.00000115, 0.00000000],
+        [-6.24500177, -0.00177597, 0.00108457, 0.00178565, -0.00000115, 0.00000000],
+        [-6.24509686, -0.00177499, 0.00108398, 0.00178465, -0.00000115, 0.00000000],
+        [-6.24519161, -0.00177400, 0.00108340, 0.00178366, -0.00000115, 0.00000000],
+        [-6.24528603, -0.00177301, 0.00108281, 0.00178267, -0.00000115, 0.00000000],
+        [-6.24538012, -0.00177203, 0.00108223, 0.00178168, -0.00000115, 0.00000000],
+        [-6.24547387, -0.00177105, 0.00108164, 0.00178069, -0.00000115, 0.00000000],
+        [-6.24556729, -0.00177006, 0.00108106, 0.00177970, -0.00000115, 0.00000000],
+        [-6.24566038, -0.00176908, 0.00108048, 0.00177871, -0.00000115, 0.00000000],
+        [-6.24575314, -0.00176810, 0.00107990, 0.00177772, -0.00000115, 0.00000000],
+        [-6.24584557, -0.00176712, 0.00107931, 0.00177674, -0.00000115, 0.00000000],
+        [-6.24593768, -0.00176614, 0.00107873, 0.00177575, -0.00000115, 0.00000000],
+        [-6.24602946, -0.00176517, 0.00107815, 0.00177477, -0.00000115, 0.00000000],
+        [-6.24612091, -0.00176419, 0.00107757, 0.00177379, -0.00000115, 0.00000000],
+        [-6.24621204, -0.00176321, 0.00107699, 0.00177281, -0.00000115, 0.00000000],
+        [-6.24630285, -0.00176224, 0.00107641, 0.00177183, -0.00000115, 0.00000000],
+        [-6.24639333, -0.00176127, 0.00107584, 0.00177085, -0.00000115, 0.00000000],
+        [-6.24648350, -0.00176029, 0.00107526, 0.00176987, -0.00000115, 0.00000000],
+        [-6.24657334, -0.00175932, 0.00107468, 0.00176889, -0.00000115, 0.00000000],
+        [-6.24666287, -0.00175835, 0.00107410, 0.00176791, -0.00000115, 0.00000000],
+        [-6.24675208, -0.00175738, 0.00107353, 0.00176694, -0.00000115, 0.00000000],
+        [-6.24684097, -0.00175641, 0.00107295, 0.00176596, -0.00000115, 0.00000000],
+        [-6.24692955, -0.00175545, 0.00107238, 0.00176499, -0.00000115, 0.00000000],
+        [-6.24701781, -0.00175448, 0.00107180, 0.00176402, -0.00000115, 0.00000000],
+        [-6.24710576, -0.00175351, 0.00107123, 0.00176305, -0.00000115, 0.00000000],
+        [-6.24719340, -0.00175255, 0.00107065, 0.00176207, -0.00000115, 0.00000000],
+        [-6.24728073, -0.00175158, 0.00107008, 0.00176110, -0.00000115, 0.00000000],
+        [-6.24736775, -0.00175062, 0.00106951, 0.00176014, -0.00000115, 0.00000000],
+        [-6.24745446, -0.00174966, 0.00106893, 0.00175917, -0.00000115, 0.00000000],
+        [-6.24754086, -0.00174870, 0.00106836, 0.00175820, -0.00000115, 0.00000000],
+        [-6.24762695, -0.00174774, 0.00106779, 0.00175724, -0.00000116, 0.00000000],
+        [-6.24771274, -0.00174678, 0.00106722, 0.00175627, -0.00000116, 0.00000000],
+        [-6.24779823, -0.00174582, 0.00106665, 0.00175531, -0.00000116, 0.00000000],
+        [-6.24788341, -0.00174487, 0.00106608, 0.00175434, -0.00000116, 0.00000000],
+        [-6.24796829, -0.00174391, 0.00106551, 0.00175338, -0.00000116, 0.00000000],
+        [-6.24805287, -0.00174296, 0.00106494, 0.00175242, -0.00000116, 0.00000000],
+        [-6.24813715, -0.00174200, 0.00106438, 0.00175146, -0.00000116, 0.00000000],
+        [-6.24822113, -0.00174105, 0.00106381, 0.00175050, -0.00000116, 0.00000000],
+        [-6.24830481, -0.00174010, 0.00106324, 0.00174955, -0.00000116, 0.00000000],
+        [-6.24838819, -0.00173915, 0.00106267, 0.00174859, -0.00000116, 0.00000000],
+        [-6.24847128, -0.00173819, 0.00106211, 0.00174763, -0.00000116, 0.00000000],
+        [-6.24855407, -0.00173725, 0.00106154, 0.00174668, -0.00000116, 0.00000000],
+        [-6.24863657, -0.00173630, 0.00106098, 0.00174572, -0.00000116, 0.00000000],
+        [-6.24871878, -0.00173535, 0.00106041, 0.00174477, -0.00000116, 0.00000000],
+        [-6.24880069, -0.00173440, 0.00105985, 0.00174382, -0.00000116, 0.00000000],
+        [-6.24888231, -0.00173346, 0.00105929, 0.00174287, -0.00000116, 0.00000000],
+        [-6.24896365, -0.00173251, 0.00105872, 0.00174192, -0.00000116, 0.00000000],
+        [-6.24904469, -0.00173157, 0.00105816, 0.00174097, -0.00000116, 0.00000000],
+        [-6.24912545, -0.00173063, 0.00105760, 0.00174002, -0.00000116, 0.00000000],
+        [-6.24920591, -0.00172969, 0.00105704, 0.00173907, -0.00000116, 0.00000000],
+        [-6.24928610, -0.00172875, 0.00105648, 0.00173813, -0.00000116, 0.00000000],
+        [-6.24936599, -0.00172781, 0.00105592, 0.00173718, -0.00000116, 0.00000000],
+        [-6.24944561, -0.00172687, 0.00105536, 0.00173624, -0.00000116, 0.00000000],
+        [-6.24952494, -0.00172593, 0.00105480, 0.00173529, -0.00000116, 0.00000000],
+        [-6.24960399, -0.00172499, 0.00105424, 0.00173435, -0.00000116, 0.00000000],
+        [-6.24968275, -0.00172406, 0.00105368, 0.00173341, -0.00000116, 0.00000000],
+        [-6.24976124, -0.00172312, 0.00105312, 0.00173247, -0.00000116, 0.00000000],
+        [-6.24983945, -0.00172219, 0.00105257, 0.00173153, -0.00000116, 0.00000000],
+        [-6.24991738, -0.00172126, 0.00105201, 0.00173059, -0.00000116, 0.00000000],
+        [-6.24999503, -0.00172032, 0.00105145, 0.00172965, -0.00000116, 0.00000000],
+        [-6.25007241, -0.00171939, 0.00105090, 0.00172871, -0.00000116, 0.00000000],
+        [-6.25014951, -0.00171846, 0.00105034, 0.00172778, -0.00000116, 0.00000000],
+        [-6.25022634, -0.00171753, 0.00104979, 0.00172684, -0.00000116, 0.00000000],
+        [-6.25030289, -0.00171660, 0.00104923, 0.00172591, -0.00000116, 0.00000000],
+        [-6.25037917, -0.00171568, 0.00104868, 0.00172498, -0.00000116, 0.00000000],
+        [-6.25045518, -0.00171475, 0.00104813, 0.00172404, -0.00000116, 0.00000000],
+        [-6.25053092, -0.00171382, 0.00104758, 0.00172311, -0.00000116, 0.00000000],
+        [-6.25060639, -0.00171290, 0.00104702, 0.00172218, -0.00000116, 0.00000000],
+        [-6.25068159, -0.00171198, 0.00104647, 0.00172125, -0.00000116, 0.00000000],
+        [-6.25075652, -0.00171105, 0.00104592, 0.00172032, -0.00000116, 0.00000000],
+        [-6.25083119, -0.00171013, 0.00104537, 0.00171940, -0.00000116, 0.00000000],
+        [-6.25090559, -0.00170921, 0.00104482, 0.00171847, -0.00000116, 0.00000000],
+        [-6.25097972, -0.00170829, 0.00104427, 0.00171754, -0.00000116, 0.00000000],
+        [-6.25105359, -0.00170737, 0.00104372, 0.00171662, -0.00000116, 0.00000000],
+        [-6.25112720, -0.00170645, 0.00104317, 0.00171570, -0.00000116, 0.00000000],
+        [-6.25120055, -0.00170554, 0.00104262, 0.00171477, -0.00000116, 0.00000000],
+        [-6.25127363, -0.00170462, 0.00104208, 0.00171385, -0.00000116, 0.00000000],
+        [-6.25134646, -0.00170370, 0.00104153, 0.00171293, -0.00000116, 0.00000000],
+        [-6.25141902, -0.00170279, 0.00104098, 0.00171201, -0.00000116, 0.00000000],
+        [-6.25149133, -0.00170188, 0.00104044, 0.00171109, -0.00000116, 0.00000000],
+        [-6.25156338, -0.00170096, 0.00103989, 0.00171017, -0.00000116, 0.00000000],
+        [-6.25163517, -0.00170005, 0.00103935, 0.00170926, -0.00000116, 0.00000000],
+        [-6.25170670, -0.00169914, 0.00103880, 0.00170834, -0.00000116, 0.00000000],
+        [-6.25177798, -0.00169823, 0.00103826, 0.00170742, -0.00000116, 0.00000000],
+        [-6.25184901, -0.00169732, 0.00103771, 0.00170651, -0.00000116, 0.00000000],
+        [-6.25191978, -0.00169641, 0.00103717, 0.00170560, -0.00000116, 0.00000000],
+        [-6.25199031, -0.00169551, 0.00103663, 0.00170468, -0.00000116, 0.00000000],
+        [-6.25206057, -0.00169460, 0.00103609, 0.00170377, -0.00000116, 0.00000000],
+        [-6.25213059, -0.00169369, 0.00103555, 0.00170286, -0.00000116, 0.00000000],
+        [-6.25220036, -0.00169279, 0.00103500, 0.00170195, -0.00000116, 0.00000000],
+        [-6.25226988, -0.00169189, 0.00103446, 0.00170104, -0.00000116, 0.00000000],
+        [-6.25233916, -0.00169098, 0.00103392, 0.00170013, -0.00000116, 0.00000000],
+        [-6.25240818, -0.00169008, 0.00103338, 0.00169923, -0.00000116, 0.00000000],
+        [-6.25247696, -0.00168918, 0.00103285, 0.00169832, -0.00000116, 0.00000000],
+        [-6.25254550, -0.00168828, 0.00103231, 0.00169741, -0.00000116, 0.00000000],
+        [-6.25261379, -0.00168738, 0.00103177, 0.00169651, -0.00000116, 0.00000000],
+        [-6.25268183, -0.00168648, 0.00103123, 0.00169560, -0.00000116, 0.00000000],
+        [-6.25274963, -0.00168559, 0.00103069, 0.00169470, -0.00000116, 0.00000000],
+        [-6.25281720, -0.00168469, 0.00103016, 0.00169380, -0.00000116, 0.00000000],
+        [-6.25288452, -0.00168379, 0.00102962, 0.00169290, -0.00000116, 0.00000000],
+        [-6.25295160, -0.00168290, 0.00102909, 0.00169200, -0.00000116, 0.00000000],
+        [-6.25301844, -0.00168200, 0.00102855, 0.00169110, -0.00000116, 0.00000000],
+        [-6.25308504, -0.00168111, 0.00102802, 0.00169020, -0.00000116, 0.00000000],
+        [-6.25315140, -0.00168022, 0.00102748, 0.00168930, -0.00000116, 0.00000000],
+        [-6.25321753, -0.00167933, 0.00102695, 0.00168841, -0.00000116, 0.00000000],
+        [-6.25328342, -0.00167844, 0.00102641, 0.00168751, -0.00000116, 0.00000000],
+        [-6.25334907, -0.00167755, 0.00102588, 0.00168662, -0.00000116, 0.00000000],
+        [-6.25341450, -0.00167666, 0.00102535, 0.00168572, -0.00000116, 0.00000000],
+        [-6.25347968, -0.00167577, 0.00102482, 0.00168483, -0.00000116, 0.00000000],
+        [-6.25354464, -0.00167489, 0.00102429, 0.00168394, -0.00000116, 0.00000000],
+        [-6.25360936, -0.00167400, 0.00102376, 0.00168305, -0.00000116, 0.00000000],
+        [-6.25367385, -0.00167312, 0.00102323, 0.00168216, -0.00000116, 0.00000000],
+        [-6.25373811, -0.00167223, 0.00102270, 0.00168127, -0.00000116, 0.00000000],
+        [-6.25380215, -0.00167135, 0.00102217, 0.00168038, -0.00000116, 0.00000000],
+        [-6.25386595, -0.00167047, 0.00102164, 0.00167949, -0.00000117, 0.00000000],
+        [-6.25392952, -0.00166958, 0.00102111, 0.00167860, -0.00000117, 0.00000000],
+        [-6.25399287, -0.00166870, 0.00102058, 0.00167772, -0.00000117, 0.00000000],
+        [-6.25405599, -0.00166782, 0.00102005, 0.00167683, -0.00000117, 0.00000000],
+        [-6.25411889, -0.00166694, 0.00101953, 0.00167595, -0.00000117, 0.00000000],
+        [-6.25418156, -0.00166607, 0.00101900, 0.00167507, -0.00000117, 0.00000000],
+        [-6.25424401, -0.00166519, 0.00101847, 0.00167418, -0.00000117, 0.00000000],
+        [-6.25430623, -0.00166431, 0.00101795, 0.00167330, -0.00000117, 0.00000000],
+        [-6.25436823, -0.00166344, 0.00101742, 0.00167242, -0.00000117, 0.00000000],
+        [-6.25443001, -0.00166256, 0.00101690, 0.00167154, -0.00000117, 0.00000000],
+        [-6.25449157, -0.00166169, 0.00101638, 0.00167066, -0.00000117, 0.00000000],
+        [-6.25455291, -0.00166082, 0.00101585, 0.00166978, -0.00000117, 0.00000000],
+        [-6.25461403, -0.00165994, 0.00101533, 0.00166891, -0.00000117, 0.00000000],
+        [-6.25467493, -0.00165907, 0.00101481, 0.00166803, -0.00000117, 0.00000000],
+        [-6.25473561, -0.00165820, 0.00101428, 0.00166715, -0.00000117, 0.00000000],
+        [-6.25479608, -0.00165733, 0.00101376, 0.00166628, -0.00000117, 0.00000000],
+        [-6.25485633, -0.00165647, 0.00101324, 0.00166541, -0.00000117, 0.00000000],
+        [-6.25491636, -0.00165560, 0.00101272, 0.00166453, -0.00000117, 0.00000000],
+        [-6.25497618, -0.00165473, 0.00101220, 0.00166366, -0.00000117, 0.00000000],
+        [-6.25503579, -0.00165386, 0.00101168, 0.00166279, -0.00000117, 0.00000000],
+        [-6.25509518, -0.00165300, 0.00101116, 0.00166192, -0.00000117, 0.00000000],
+        [-6.25515436, -0.00165214, 0.00101064, 0.00166105, -0.00000117, 0.00000000],
+        [-6.25521333, -0.00165127, 0.00101012, 0.00166018, -0.00000117, 0.00000000],
+        [-6.25527209, -0.00165041, 0.00100961, 0.00165931, -0.00000117, 0.00000000],
+        [-6.25533063, -0.00164955, 0.00100909, 0.00165845, -0.00000117, 0.00000000],
+        [-6.25538897, -0.00164869, 0.00100857, 0.00165758, -0.00000117, 0.00000000],
+        [-6.25544710, -0.00164783, 0.00100806, 0.00165672, -0.00000117, 0.00000000],
+        [-6.25550502, -0.00164697, 0.00100754, 0.00165585, -0.00000117, 0.00000000],
+        [-6.25556273, -0.00164611, 0.00100702, 0.00165499, -0.00000117, 0.00000000],
+        [-6.25562024, -0.00164525, 0.00100651, 0.00165413, -0.00000117, 0.00000000],
+        [-6.25567754, -0.00164440, 0.00100599, 0.00165326, -0.00000117, 0.00000000],
+        [-6.25573464, -0.00164354, 0.00100548, 0.00165240, -0.00000117, 0.00000000],
+        [-6.25579153, -0.00164268, 0.00100497, 0.00165154, -0.00000117, 0.00000000],
+        [-6.25584821, -0.00164183, 0.00100445, 0.00165068, -0.00000117, 0.00000000],
+        [-6.25590470, -0.00164098, 0.00100394, 0.00164982, -0.00000117, 0.00000000],
+        [-6.25596098, -0.00164012, 0.00100343, 0.00164897, -0.00000117, 0.00000000],
+        [-6.25601706, -0.00163927, 0.00100292, 0.00164811, -0.00000117, 0.00000000],
+        [-6.25607294, -0.00163842, 0.00100241, 0.00164725, -0.00000117, 0.00000000],
+        [-6.25612862, -0.00163757, 0.00100189, 0.00164640, -0.00000117, 0.00000000],
+        [-6.25618410, -0.00163672, 0.00100138, 0.00164554, -0.00000117, 0.00000000],
+        [-6.25623938, -0.00163587, 0.00100087, 0.00164469, -0.00000117, 0.00000000],
+        [-6.25629447, -0.00163503, 0.00100036, 0.00164384, -0.00000117, 0.00000000],
+        [-6.25634936, -0.00163418, 0.00099986, 0.00164299, -0.00000117, 0.00000000],
+        [-6.25640405, -0.00163333, 0.00099935, 0.00164214, -0.00000117, 0.00000000],
+        [-6.25645854, -0.00163249, 0.00099884, 0.00164129, -0.00000117, 0.00000000],
+        [-6.25651284, -0.00163164, 0.00099833, 0.00164044, -0.00000117, 0.00000000],
+        [-6.25656694, -0.00163080, 0.00099782, 0.00163959, -0.00000117, 0.00000000],
+        [-6.25662085, -0.00162996, 0.00099732, 0.00163874, -0.00000117, 0.00000000],
+        [-6.25667457, -0.00162912, 0.00099681, 0.00163789, -0.00000117, 0.00000000],
+        [-6.25672809, -0.00162828, 0.00099631, 0.00163705, -0.00000117, 0.00000000],
+        [-6.25678143, -0.00162744, 0.00099580, 0.00163620, -0.00000117, 0.00000000],
+        [-6.25683457, -0.00162660, 0.00099530, 0.00163536, -0.00000117, 0.00000000],
+        [-6.25688752, -0.00162576, 0.00099479, 0.00163451, -0.00000117, 0.00000000],
+        [-6.25694028, -0.00162492, 0.00099429, 0.00163367, -0.00000117, 0.00000000],
+        [-6.25699285, -0.00162408, 0.00099378, 0.00163283, -0.00000117, 0.00000000],
+        [-6.25704524, -0.00162325, 0.00099328, 0.00163199, -0.00000117, 0.00000000],
+        [-6.25709743, -0.00162241, 0.00099278, 0.00163115, -0.00000117, 0.00000000],
+        [-6.25714944, -0.00162158, 0.00099228, 0.00163031, -0.00000117, 0.00000000],
+        [-6.25720127, -0.00162074, 0.00099177, 0.00162947, -0.00000117, 0.00000000],
+        [-6.25725290, -0.00161991, 0.00099127, 0.00162863, -0.00000117, 0.00000000],
+        [-6.25730435, -0.00161908, 0.00099077, 0.00162780, -0.00000117, 0.00000000],
+        [-6.25735562, -0.00161825, 0.00099027, 0.00162696, -0.00000117, 0.00000000],
+        [-6.25740670, -0.00161742, 0.00098977, 0.00162613, -0.00000117, 0.00000000],
+        [-6.25745761, -0.00161659, 0.00098927, 0.00162529, -0.00000117, 0.00000000],
+        [-6.25750832, -0.00161576, 0.00098877, 0.00162446, -0.00000117, 0.00000000],
+        [-6.25755886, -0.00161493, 0.00098828, 0.00162362, -0.00000117, 0.00000000],
+        [-6.25760921, -0.00161411, 0.00098778, 0.00162279, -0.00000117, 0.00000000],
+        [-6.25765939, -0.00161328, 0.00098728, 0.00162196, -0.00000117, 0.00000000],
+        [-6.25770938, -0.00161245, 0.00098678, 0.00162113, -0.00000117, 0.00000000],
+        [-6.25775920, -0.00161163, 0.00098629, 0.00162030, -0.00000117, 0.00000000],
+        [-6.25780883, -0.00161080, 0.00098579, 0.00161947, -0.00000117, 0.00000000],
+        [-6.25785829, -0.00160998, 0.00098529, 0.00161864, -0.00000117, 0.00000000],
+        [-6.25790757, -0.00160916, 0.00098480, 0.00161782, -0.00000117, 0.00000000],
+        [-6.25795667, -0.00160834, 0.00098430, 0.00161699, -0.00000117, 0.00000000],
+        [-6.25800560, -0.00160752, 0.00098381, 0.00161616, -0.00000117, 0.00000000],
+        [-6.25805435, -0.00160670, 0.00098332, 0.00161534, -0.00000117, 0.00000000],
+        [-6.25810293, -0.00160588, 0.00098282, 0.00161452, -0.00000117, 0.00000000],
+        [-6.25815133, -0.00160506, 0.00098233, 0.00161369, -0.00000117, 0.00000000],
+        [-6.25819956, -0.00160424, 0.00098184, 0.00161287, -0.00000117, 0.00000000],
+        [-6.25824762, -0.00160342, 0.00098134, 0.00161205, -0.00000117, 0.00000000],
+        [-6.25829550, -0.00160261, 0.00098085, 0.00161123, -0.00000117, 0.00000000],
+        [-6.25834321, -0.00160179, 0.00098036, 0.00161041, -0.00000117, 0.00000000],
+        [-6.25839075, -0.00160098, 0.00097987, 0.00160959, -0.00000117, 0.00000000],
+        [-6.25843812, -0.00160017, 0.00097938, 0.00160877, -0.00000117, 0.00000000],
+        [-6.25848532, -0.00159935, 0.00097889, 0.00160795, -0.00000117, 0.00000000],
+        [-6.25853235, -0.00159854, 0.00097840, 0.00160713, -0.00000117, 0.00000000],
+        [-6.25857922, -0.00159773, 0.00097791, 0.00160632, -0.00000117, 0.00000000],
+        [-6.25862591, -0.00159692, 0.00097742, 0.00160550, -0.00000117, 0.00000000],
+        [-6.25867244, -0.00159611, 0.00097693, 0.00160469, -0.00000117, 0.00000000],
+        [-6.25871879, -0.00159530, 0.00097645, 0.00160387, -0.00000117, 0.00000000],
+        [-6.25876499, -0.00159449, 0.00097596, 0.00160306, -0.00000117, 0.00000000],
+        [-6.25881101, -0.00159368, 0.00097547, 0.00160225, -0.00000117, 0.00000000],
+        [-6.25885688, -0.00159288, 0.00097499, 0.00160144, -0.00000117, 0.00000000],
+        [-6.25890257, -0.00159207, 0.00097450, 0.00160063, -0.00000117, 0.00000000],
+        [-6.25894810, -0.00159127, 0.00097402, 0.00159982, -0.00000117, 0.00000000],
+        [-6.25899347, -0.00159046, 0.00097353, 0.00159901, -0.00000117, 0.00000000],
+        [-6.25903868, -0.00158966, 0.00097305, 0.00159820, -0.00000117, 0.00000000],
+        [-6.25908372, -0.00158886, 0.00097256, 0.00159739, -0.00000117, 0.00000000],
+        [-6.25912861, -0.00158805, 0.00097208, 0.00159659, -0.00000117, 0.00000000],
+        [-6.25917333, -0.00158725, 0.00097159, 0.00159578, -0.00000117, 0.00000000],
+        [-6.25921789, -0.00158645, 0.00097111, 0.00159497, -0.00000117, 0.00000000],
+        [-6.25926229, -0.00158565, 0.00097063, 0.00159417, -0.00000117, 0.00000000],
+        [-6.25930653, -0.00158485, 0.00097015, 0.00159337, -0.00000117, 0.00000000],
+        [-6.25935061, -0.00158406, 0.00096966, 0.00159256, -0.00000117, 0.00000000],
+        [-6.25939453, -0.00158326, 0.00096918, 0.00159176, -0.00000117, 0.00000000],
+        [-6.25943830, -0.00158246, 0.00096870, 0.00159096, -0.00000117, 0.00000000],
+        [-6.25948191, -0.00158167, 0.00096822, 0.00159016, -0.00000117, 0.00000000],
+        [-6.25952536, -0.00158087, 0.00096774, 0.00158936, -0.00000117, 0.00000000],
+        [-6.25956866, -0.00158008, 0.00096726, 0.00158856, -0.00000117, 0.00000000],
+        [-6.25961180, -0.00157928, 0.00096678, 0.00158776, -0.00000117, 0.00000000],
+        [-6.25965478, -0.00157849, 0.00096631, 0.00158696, -0.00000117, 0.00000000],
+        [-6.25969761, -0.00157770, 0.00096583, 0.00158617, -0.00000117, 0.00000000],
+        [-6.25974029, -0.00157691, 0.00096535, 0.00158537, -0.00000117, 0.00000000],
+        [-6.25978282, -0.00157612, 0.00096487, 0.00158458, -0.00000117, 0.00000000],
+        [-6.25982519, -0.00157533, 0.00096440, 0.00158378, -0.00000117, 0.00000000],
+        [-6.25986741, -0.00157454, 0.00096392, 0.00158299, -0.00000117, 0.00000000],
+        [-6.25990947, -0.00157375, 0.00096344, 0.00158220, -0.00000117, 0.00000000],
+        [-6.25995139, -0.00157296, 0.00096297, 0.00158140, -0.00000117, 0.00000000],
+        [-6.25999315, -0.00157217, 0.00096249, 0.00158061, -0.00000117, 0.00000000],
+        [-6.26003477, -0.00157139, 0.00096202, 0.00157982, -0.00000117, 0.00000000],
+        [-6.26007624, -0.00157060, 0.00096154, 0.00157903, -0.00000117, 0.00000000],
+        [-6.26011755, -0.00156982, 0.00096107, 0.00157824, -0.00000117, 0.00000000],
+        [-6.26015872, -0.00156903, 0.00096060, 0.00157745, -0.00000117, 0.00000000],
+        [-6.26019974, -0.00156825, 0.00096012, 0.00157667, -0.00000117, 0.00000000],
+        [-6.26024061, -0.00156747, 0.00095965, 0.00157588, -0.00000117, 0.00000000],
+        [-6.26028134, -0.00156669, 0.00095918, 0.00157509, -0.00000117, 0.00000000],
+        [-6.26032192, -0.00156591, 0.00095871, 0.00157431, -0.00000117, 0.00000000],
+        [-6.26036235, -0.00156513, 0.00095823, 0.00157352, -0.00000117, 0.00000000],
+        [-6.26040264, -0.00156435, 0.00095776, 0.00157274, -0.00000117, 0.00000000],
+        [-6.26044279, -0.00156357, 0.00095729, 0.00157195, -0.00000117, 0.00000000],
+        [-6.26048279, -0.00156279, 0.00095682, 0.00157117, -0.00000117, 0.00000000],
+        [-6.26052264, -0.00156201, 0.00095635, 0.00157039, -0.00000117, 0.00000000],
+        [-6.26056235, -0.00156124, 0.00095588, 0.00156961, -0.00000117, 0.00000000],
+        [-6.26060192, -0.00156046, 0.00095542, 0.00156883, -0.00000117, 0.00000000],
+        [-6.26064135, -0.00155969, 0.00095495, 0.00156805, -0.00000117, 0.00000000],
+        [-6.26068064, -0.00155891, 0.00095448, 0.00156727, -0.00000117, 0.00000000],
+        [-6.26071978, -0.00155814, 0.00095401, 0.00156649, -0.00000117, 0.00000000],
+        [-6.26075879, -0.00155737, 0.00095354, 0.00156572, -0.00000117, 0.00000000],
+        [-6.26079765, -0.00155659, 0.00095308, 0.00156494, -0.00000117, 0.00000000],
+        [-6.26083637, -0.00155582, 0.00095261, 0.00156416, -0.00000117, 0.00000000],
+        [-6.26087496, -0.00155505, 0.00095215, 0.00156339, -0.00000117, 0.00000000],
+        [-6.26091341, -0.00155428, 0.00095168, 0.00156261, -0.00000117, 0.00000000],
+        [-6.26095171, -0.00155351, 0.00095122, 0.00156184, -0.00000117, 0.00000000],
+        [-6.26098988, -0.00155274, 0.00095075, 0.00156107, -0.00000117, 0.00000000],
+        [-6.26102792, -0.00155198, 0.00095029, 0.00156029, -0.00000117, 0.00000000],
+        [-6.26106581, -0.00155121, 0.00094982, 0.00155952, -0.00000117, 0.00000000],
+        [-6.26110357, -0.00155044, 0.00094936, 0.00155875, -0.00000117, 0.00000000],
+        [-6.26114120, -0.00154968, 0.00094890, 0.00155798, -0.00000117, 0.00000000],
+        [-6.26117869, -0.00154891, 0.00094843, 0.00155721, -0.00000117, 0.00000000],
+        [-6.26121604, -0.00154815, 0.00094797, 0.00155644, -0.00000117, 0.00000000],
+        [-6.26125326, -0.00154739, 0.00094751, 0.00155568, -0.00000117, 0.00000000],
+        [-6.26129035, -0.00154662, 0.00094705, 0.00155491, -0.00000117, 0.00000000],
+        [-6.26132730, -0.00154586, 0.00094659, 0.00155414, -0.00000117, 0.00000000],
+        [-6.26136412, -0.00154510, 0.00094613, 0.00155338, -0.00000117, 0.00000000],
+        [-6.26140081, -0.00154434, 0.00094567, 0.00155261, -0.00000117, 0.00000000],
+        [-6.26143736, -0.00154358, 0.00094521, 0.00155185, -0.00000117, 0.00000000],
+        [-6.26147379, -0.00154282, 0.00094475, 0.00155109, -0.00000117, 0.00000000],
+        [-6.26151008, -0.00154206, 0.00094429, 0.00155032, -0.00000117, 0.00000000],
+        [-6.26154624, -0.00154131, 0.00094383, 0.00154956, -0.00000117, 0.00000000],
+        [-6.26158228, -0.00154055, 0.00094337, 0.00154880, -0.00000117, 0.00000000],
+        [-6.26161818, -0.00153979, 0.00094292, 0.00154804, -0.00000117, 0.00000000],
+        [-6.26165395, -0.00153904, 0.00094246, 0.00154728, -0.00000117, 0.00000000],
+        [-6.26168960, -0.00153828, 0.00094200, 0.00154652, -0.00000117, 0.00000000],
+        [-6.26172512, -0.00153753, 0.00094155, 0.00154576, -0.00000117, 0.00000000],
+        [-6.26176051, -0.00153677, 0.00094109, 0.00154500, -0.00000117, 0.00000000],
+        [-6.26179577, -0.00153602, 0.00094063, 0.00154425, -0.00000117, 0.00000000],
+        [-6.26183090, -0.00153527, 0.00094018, 0.00154349, -0.00000117, 0.00000000],
+        [-6.26186591, -0.00153452, 0.00093972, 0.00154273, -0.00000117, 0.00000000],
+        [-6.26190080, -0.00153377, 0.00093927, 0.00154198, -0.00000117, 0.00000000],
+        [-6.26193555, -0.00153302, 0.00093882, 0.00154123, -0.00000117, 0.00000000],
+        [-6.26197019, -0.00153227, 0.00093836, 0.00154047, -0.00000117, 0.00000000],
+        [-6.26200470, -0.00153152, 0.00093791, 0.00153972, -0.00000117, 0.00000000],
+        [-6.26203908, -0.00153077, 0.00093746, 0.00153897, -0.00000117, 0.00000000],
+        [-6.26207334, -0.00153003, 0.00093700, 0.00153822, -0.00000118, 0.00000000],
+        [-6.26210748, -0.00152928, 0.00093655, 0.00153746, -0.00000118, 0.00000000],
+        [-6.26214149, -0.00152853, 0.00093610, 0.00153671, -0.00000118, 0.00000000],
+        [-6.26217539, -0.00152779, 0.00093565, 0.00153597, -0.00000118, 0.00000000],
+        [-6.26220916, -0.00152705, 0.00093520, 0.00153522, -0.00000118, 0.00000000],
+        [-6.26224280, -0.00152630, 0.00093475, 0.00153447, -0.00000118, 0.00000000],
+        [-6.26227633, -0.00152556, 0.00093430, 0.00153372, -0.00000118, 0.00000000],
+        [-6.26230974, -0.00152482, 0.00093385, 0.00153298, -0.00000118, 0.00000000],
+        [-6.26234303, -0.00152408, 0.00093340, 0.00153223, -0.00000118, 0.00000000],
+        [-6.26237620, -0.00152333, 0.00093295, 0.00153148, -0.00000118, 0.00000000],
+        [-6.26240924, -0.00152259, 0.00093250, 0.00153074, -0.00000118, 0.00000000],
+        [-6.26244217, -0.00152186, 0.00093205, 0.00153000, -0.00000118, 0.00000000],
+        [-6.26247499, -0.00152112, 0.00093161, 0.00152925, -0.00000118, 0.00000000],
+        [-6.26250768, -0.00152038, 0.00093116, 0.00152851, -0.00000118, 0.00000000],
+        [-6.26254025, -0.00151964, 0.00093071, 0.00152777, -0.00000118, 0.00000000],
+        [-6.26257271, -0.00151890, 0.00093027, 0.00152703, -0.00000118, 0.00000000],
+        [-6.26260505, -0.00151817, 0.00092982, 0.00152629, -0.00000118, 0.00000000],
+        [-6.26263728, -0.00151743, 0.00092937, 0.00152555, -0.00000118, 0.00000000],
+        [-6.26266939, -0.00151670, 0.00092893, 0.00152481, -0.00000118, 0.00000000],
+        [-6.26270138, -0.00151596, 0.00092848, 0.00152407, -0.00000118, 0.00000000],
+        [-6.26273326, -0.00151523, 0.00092804, 0.00152333, -0.00000118, 0.00000000],
+        [-6.26276503, -0.00151450, 0.00092760, 0.00152260, -0.00000118, 0.00000000],
+        [-6.26279668, -0.00151377, 0.00092715, 0.00152186, -0.00000118, 0.00000000],
+        [-6.26282822, -0.00151304, 0.00092671, 0.00152113, -0.00000118, 0.00000000],
+        [-6.26285964, -0.00151231, 0.00092627, 0.00152039, -0.00000118, 0.00000000],
+        [-6.26289095, -0.00151158, 0.00092582, 0.00151966, -0.00000118, 0.00000000],
+        [-6.26292215, -0.00151085, 0.00092538, 0.00151892, -0.00000118, 0.00000000],
+        [-6.26295323, -0.00151012, 0.00092494, 0.00151819, -0.00000118, 0.00000000],
+        [-6.26298421, -0.00150939, 0.00092450, 0.00151746, -0.00000118, 0.00000000],
+        [-6.26301507, -0.00150866, 0.00092406, 0.00151673, -0.00000118, 0.00000000],
+        [-6.26304582, -0.00150794, 0.00092362, 0.00151600, -0.00000118, 0.00000000],
+        [-6.26307646, -0.00150721, 0.00092318, 0.00151527, -0.00000118, 0.00000000],
+        [-6.26310699, -0.00150649, 0.00092274, 0.00151454, -0.00000118, 0.00000000],
+        [-6.26313741, -0.00150576, 0.00092230, 0.00151381, -0.00000118, 0.00000000],
+        [-6.26316772, -0.00150504, 0.00092186, 0.00151308, -0.00000118, 0.00000000],
+        [-6.26319793, -0.00150431, 0.00092142, 0.00151235, -0.00000118, 0.00000000],
+        [-6.26322802, -0.00150359, 0.00092098, 0.00151163, -0.00000118, 0.00000000],
+        [-6.26325801, -0.00150287, 0.00092055, 0.00151090, -0.00000118, 0.00000000],
+        [-6.26328788, -0.00150215, 0.00092011, 0.00151018, -0.00000118, 0.00000000],
+        [-6.26331765, -0.00150143, 0.00091967, 0.00150945, -0.00000118, 0.00000000],
+        [-6.26334732, -0.00150071, 0.00091924, 0.00150873, -0.00000118, 0.00000000],
+        [-6.26337687, -0.00149999, 0.00091880, 0.00150800, -0.00000118, 0.00000000],
+        [-6.26340633, -0.00149927, 0.00091836, 0.00150728, -0.00000118, 0.00000000],
+        [-6.26343567, -0.00149855, 0.00091793, 0.00150656, -0.00000118, 0.00000000],
+        [-6.26346491, -0.00149784, 0.00091749, 0.00150584, -0.00000118, 0.00000000],
+        [-6.26349404, -0.00149712, 0.00091706, 0.00150512, -0.00000118, 0.00000000],
+        [-6.26352307, -0.00149640, 0.00091662, 0.00150440, -0.00000118, 0.00000000],
+        [-6.26355200, -0.00149569, 0.00091619, 0.00150368, -0.00000118, 0.00000000],
+        [-6.26358082, -0.00149498, 0.00091576, 0.00150296, -0.00000118, 0.00000000],
+        [-6.26360954, -0.00149426, 0.00091532, 0.00150224, -0.00000118, 0.00000000],
+        [-6.26363815, -0.00149355, 0.00091489, 0.00150152, -0.00000118, 0.00000000],
+        [-6.26366666, -0.00149284, 0.00091446, 0.00150081, -0.00000118, 0.00000000],
+        [-6.26369507, -0.00149212, 0.00091403, 0.00150009, -0.00000118, 0.00000000],
+        [-6.26372338, -0.00149141, 0.00091359, 0.00149938, -0.00000118, 0.00000000],
+        [-6.26375159, -0.00149070, 0.00091316, 0.00149866, -0.00000118, 0.00000000],
+        [-6.26377969, -0.00148999, 0.00091273, 0.00149795, -0.00000118, 0.00000000],
+        [-6.26380769, -0.00148928, 0.00091230, 0.00149723, -0.00000118, 0.00000000],
+        [-6.26383560, -0.00148857, 0.00091187, 0.00149652, -0.00000118, 0.00000000],
+        [-6.26386340, -0.00148787, 0.00091144, 0.00149581, -0.00000118, 0.00000000],
+        [-6.26389110, -0.00148716, 0.00091101, 0.00149510, -0.00000118, 0.00000000],
+        [-6.26391870, -0.00148645, 0.00091058, 0.00149439, -0.00000118, 0.00000000],
+        [-6.26394621, -0.00148575, 0.00091016, 0.00149368, -0.00000118, 0.00000000],
+        [-6.26397361, -0.00148504, 0.00090973, 0.00149297, -0.00000118, 0.00000000],
+        [-6.26400092, -0.00148434, 0.00090930, 0.00149226, -0.00000118, 0.00000000],
+        [-6.26402813, -0.00148363, 0.00090887, 0.00149155, -0.00000118, 0.00000000],
+        [-6.26405524, -0.00148293, 0.00090844, 0.00149084, -0.00000118, 0.00000000],
+        [-6.26408225, -0.00148223, 0.00090802, 0.00149014, -0.00000118, 0.00000000],
+        [-6.26410916, -0.00148152, 0.00090759, 0.00148943, -0.00000118, 0.00000000],
+        [-6.26413598, -0.00148082, 0.00090717, 0.00148872, -0.00000118, 0.00000000],
+        [-6.26416271, -0.00148012, 0.00090674, 0.00148802, -0.00000118, 0.00000000],
+        [-6.26418933, -0.00147942, 0.00090631, 0.00148732, -0.00000118, 0.00000000],
+        [-6.26421586, -0.00147872, 0.00090589, 0.00148661, -0.00000118, 0.00000000],
+        [-6.26424230, -0.00147802, 0.00090547, 0.00148591, -0.00000118, 0.00000000],
+        [-6.26426864, -0.00147733, 0.00090504, 0.00148521, -0.00000118, 0.00000000],
+        [-6.26429489, -0.00147663, 0.00090462, 0.00148450, -0.00000118, 0.00000000],
+        [-6.26432104, -0.00147593, 0.00090419, 0.00148380, -0.00000118, 0.00000000],
+        [-6.26434710, -0.00147523, 0.00090377, 0.00148310, -0.00000118, 0.00000000],
+        [-6.26437306, -0.00147454, 0.00090335, 0.00148240, -0.00000118, 0.00000000],
+        [-6.26439893, -0.00147384, 0.00090293, 0.00148170, -0.00000118, 0.00000000],
+        [-6.26442471, -0.00147315, 0.00090250, 0.00148101, -0.00000118, 0.00000000],
+        [-6.26445040, -0.00147246, 0.00090208, 0.00148031, -0.00000118, 0.00000000],
+        [-6.26447599, -0.00147176, 0.00090166, 0.00147961, -0.00000118, 0.00000000],
+        [-6.26450150, -0.00147107, 0.00090124, 0.00147891, -0.00000118, 0.00000000],
+        [-6.26452691, -0.00147038, 0.00090082, 0.00147822, -0.00000118, 0.00000000],
+        [-6.26455222, -0.00146969, 0.00090040, 0.00147752, -0.00000118, 0.00000000],
+        [-6.26457745, -0.00146900, 0.00089998, 0.00147683, -0.00000118, 0.00000000],
+        [-6.26460259, -0.00146831, 0.00089956, 0.00147613, -0.00000118, 0.00000000],
+        [-6.26462764, -0.00146762, 0.00089914, 0.00147544, -0.00000118, 0.00000000],
+        [-6.26465259, -0.00146693, 0.00089872, 0.00147475, -0.00000118, 0.00000000],
+        [-6.26467746, -0.00146624, 0.00089831, 0.00147406, -0.00000118, 0.00000000],
+        [-6.26470224, -0.00146555, 0.00089789, 0.00147336, -0.00000118, 0.00000000],
+        [-6.26472693, -0.00146486, 0.00089747, 0.00147267, -0.00000118, 0.00000000],
+        [-6.26475153, -0.00146418, 0.00089705, 0.00147198, -0.00000118, 0.00000000],
+        [-6.26477604, -0.00146349, 0.00089664, 0.00147129, -0.00000118, 0.00000000],
+        [-6.26480047, -0.00146281, 0.00089622, 0.00147060, -0.00000118, 0.00000000],
+        [-6.26482481, -0.00146212, 0.00089580, 0.00146992, -0.00000118, 0.00000000],
+        [-6.26484906, -0.00146144, 0.00089539, 0.00146923, -0.00000118, 0.00000000],
+        [-6.26487322, -0.00146076, 0.00089497, 0.00146854, -0.00000118, 0.00000000],
+        [-6.26489730, -0.00146007, 0.00089456, 0.00146785, -0.00000118, 0.00000000],
+        [-6.26492129, -0.00145939, 0.00089414, 0.00146717, -0.00000118, 0.00000000],
+        [-6.26494519, -0.00145871, 0.00089373, 0.00146648, -0.00000118, 0.00000000],
+        [-6.26496901, -0.00145803, 0.00089332, 0.00146580, -0.00000118, 0.00000000],
+        [-6.26499274, -0.00145735, 0.00089290, 0.00146511, -0.00000118, 0.00000000],
+        [-6.26501639, -0.00145667, 0.00089249, 0.00146443, -0.00000118, 0.00000000],
+        [-6.26503995, -0.00145599, 0.00089208, 0.00146375, -0.00000118, 0.00000000],
+        [-6.26506343, -0.00145531, 0.00089166, 0.00146307, -0.00000118, 0.00000000],
+        [-6.26508682, -0.00145463, 0.00089125, 0.00146238, -0.00000118, 0.00000000],
+        [-6.26511013, -0.00145396, 0.00089084, 0.00146170, -0.00000118, 0.00000000],
+        [-6.26513336, -0.00145328, 0.00089043, 0.00146102, -0.00000118, 0.00000000],
+        [-6.26515650, -0.00145261, 0.00089002, 0.00146034, -0.00000118, 0.00000000],
+        [-6.26517956, -0.00145193, 0.00088961, 0.00145966, -0.00000118, 0.00000000],
+        [-6.26520254, -0.00145126, 0.00088920, 0.00145898, -0.00000118, 0.00000000],
+        [-6.26522543, -0.00145058, 0.00088879, 0.00145831, -0.00000118, 0.00000000],
+        [-6.26524824, -0.00144991, 0.00088838, 0.00145763, -0.00000118, 0.00000000],
+        [-6.26527098, -0.00144924, 0.00088797, 0.00145695, -0.00000118, 0.00000000],
+        [-6.26529363, -0.00144856, 0.00088756, 0.00145628, -0.00000118, 0.00000000],
+        [-6.26531619, -0.00144789, 0.00088715, 0.00145560, -0.00000118, 0.00000000],
+        [-6.26533868, -0.00144722, 0.00088674, 0.00145493, -0.00000118, 0.00000000],
+        [-6.26536109, -0.00144655, 0.00088634, 0.00145425, -0.00000118, 0.00000000],
+        [-6.26538341, -0.00144588, 0.00088593, 0.00145358, -0.00000118, 0.00000000],
+        [-6.26540566, -0.00144521, 0.00088552, 0.00145291, -0.00000118, 0.00000000],
+        [-6.26542783, -0.00144454, 0.00088511, 0.00145223, -0.00000118, 0.00000000],
+        [-6.26544992, -0.00144387, 0.00088471, 0.00145156, -0.00000118, 0.00000000],
+        [-6.26547192, -0.00144321, 0.00088430, 0.00145089, -0.00000118, 0.00000000],
+        [-6.26549385, -0.00144254, 0.00088390, 0.00145022, -0.00000118, 0.00000000],
+        [-6.26551570, -0.00144187, 0.00088349, 0.00144955, -0.00000118, 0.00000000],
+        [-6.26553748, -0.00144121, 0.00088309, 0.00144888, -0.00000118, 0.00000000],
+        [-6.26555917, -0.00144054, 0.00088268, 0.00144821, -0.00000118, 0.00000000],
+        [-6.26558079, -0.00143988, 0.00088228, 0.00144754, -0.00000118, 0.00000000],
+        [-6.26560233, -0.00143922, 0.00088187, 0.00144687, -0.00000118, 0.00000000],
+        [-6.26562379, -0.00143855, 0.00088147, 0.00144621, -0.00000118, 0.00000000],
+        [-6.26564518, -0.00143789, 0.00088107, 0.00144554, -0.00000118, 0.00000000],
+        [-6.26566648, -0.00143723, 0.00088066, 0.00144488, -0.00000118, 0.00000000],
+        [-6.26568772, -0.00143657, 0.00088026, 0.00144421, -0.00000118, 0.00000000],
+        [-6.26570887, -0.00143590, 0.00087986, 0.00144355, -0.00000118, 0.00000000],
+        [-6.26572995, -0.00143524, 0.00087946, 0.00144288, -0.00000118, 0.00000000],
+        [-6.26575096, -0.00143458, 0.00087906, 0.00144222, -0.00000118, 0.00000000],
+        [-6.26577189, -0.00143393, 0.00087865, 0.00144155, -0.00000118, 0.00000000],
+        [-6.26579274, -0.00143327, 0.00087825, 0.00144089, -0.00000118, 0.00000000],
+        [-6.26581352, -0.00143261, 0.00087785, 0.00144023, -0.00000118, 0.00000000],
+        [-6.26583423, -0.00143195, 0.00087745, 0.00143957, -0.00000118, 0.00000000],
+        [-6.26585486, -0.00143130, 0.00087705, 0.00143891, -0.00000118, 0.00000000],
+        [-6.26587542, -0.00143064, 0.00087665, 0.00143825, -0.00000118, 0.00000000],
+        [-6.26589591, -0.00142998, 0.00087626, 0.00143759, -0.00000118, 0.00000000],
+        [-6.26591632, -0.00142933, 0.00087586, 0.00143693, -0.00000118, 0.00000000],
+        [-6.26593666, -0.00142867, 0.00087546, 0.00143627, -0.00000118, 0.00000000],
+        [-6.26595692, -0.00142802, 0.00087506, 0.00143562, -0.00000118, 0.00000000],
+        [-6.26597711, -0.00142737, 0.00087466, 0.00143496, -0.00000118, 0.00000000],
+        [-6.26599724, -0.00142671, 0.00087426, 0.00143430, -0.00000118, 0.00000000],
+        [-6.26601728, -0.00142606, 0.00087387, 0.00143365, -0.00000118, 0.00000000],
+        [-6.26603726, -0.00142541, 0.00087347, 0.00143299, -0.00000118, 0.00000000],
+        [-6.26605717, -0.00142476, 0.00087307, 0.00143234, -0.00000118, 0.00000000],
+        [-6.26607700, -0.00142411, 0.00087268, 0.00143168, -0.00000118, 0.00000000],
+        [-6.26609676, -0.00142346, 0.00087228, 0.00143103, -0.00000118, 0.00000000],
+        [-6.26611646, -0.00142281, 0.00087189, 0.00143038, -0.00000118, 0.00000000],
+        [-6.26613608, -0.00142216, 0.00087149, 0.00142972, -0.00000118, 0.00000000],
+        [-6.26615563, -0.00142151, 0.00087110, 0.00142907, -0.00000118, 0.00000000],
+        [-6.26617512, -0.00142087, 0.00087070, 0.00142842, -0.00000118, 0.00000000],
+        [-6.26619453, -0.00142022, 0.00087031, 0.00142777, -0.00000118, 0.00000000],
+        [-6.26621387, -0.00141957, 0.00086992, 0.00142712, -0.00000118, 0.00000000],
+        [-6.26623315, -0.00141893, 0.00086952, 0.00142647, -0.00000118, 0.00000000],
+        [-6.26625235, -0.00141828, 0.00086913, 0.00142582, -0.00000118, 0.00000000],
+        [-6.26627149, -0.00141764, 0.00086874, 0.00142517, -0.00000118, 0.00000000],
+        [-6.26629056, -0.00141699, 0.00086835, 0.00142452, -0.00000118, 0.00000000],
+        [-6.26630956, -0.00141635, 0.00086795, 0.00142388, -0.00000118, 0.00000000],
+        [-6.26632849, -0.00141571, 0.00086756, 0.00142323, -0.00000118, 0.00000000],
+        [-6.26634735, -0.00141506, 0.00086717, 0.00142258, -0.00000118, 0.00000000],
+        [-6.26636615, -0.00141442, 0.00086678, 0.00142194, -0.00000118, 0.00000000],
+        [-6.26638488, -0.00141378, 0.00086639, 0.00142129, -0.00000118, 0.00000000],
+        [-6.26640355, -0.00141314, 0.00086600, 0.00142065, -0.00000118, 0.00000000],
+        [-6.26642214, -0.00141250, 0.00086561, 0.00142001, -0.00000118, 0.00000000],
+        [-6.26644067, -0.00141186, 0.00086522, 0.00141936, -0.00000118, 0.00000000],
+        [-6.26645914, -0.00141122, 0.00086483, 0.00141872, -0.00000118, 0.00000000],
+        [-6.26647754, -0.00141058, 0.00086444, 0.00141808, -0.00000118, 0.00000000],
+        [-6.26649587, -0.00140995, 0.00086405, 0.00141744, -0.00000118, 0.00000000],
+        [-6.26651414, -0.00140931, 0.00086366, 0.00141680, -0.00000118, 0.00000000],
+        [-6.26653234, -0.00140867, 0.00086328, 0.00141616, -0.00000118, 0.00000000],
+        [-6.26655048, -0.00140804, 0.00086289, 0.00141552, -0.00000118, 0.00000000],
+        [-6.26656855, -0.00140740, 0.00086250, 0.00141488, -0.00000118, 0.00000000],
+        [-6.26658656, -0.00140677, 0.00086211, 0.00141424, -0.00000118, 0.00000000],
+        [-6.26660450, -0.00140613, 0.00086173, 0.00141360, -0.00000118, 0.00000000],
+        [-6.26662238, -0.00140550, 0.00086134, 0.00141296, -0.00000118, 0.00000000],
+        [-6.26664020, -0.00140486, 0.00086096, 0.00141233, -0.00000118, 0.00000000],
+        [-6.26665795, -0.00140423, 0.00086057, 0.00141169, -0.00000118, 0.00000000],
+        [-6.26667564, -0.00140360, 0.00086018, 0.00141105, -0.00000118, 0.00000000],
+        [-6.26669326, -0.00140297, 0.00085980, 0.00141042, -0.00000118, 0.00000000],
+        [-6.26671083, -0.00140234, 0.00085942, 0.00140978, -0.00000118, 0.00000000],
+        [-6.26672833, -0.00140171, 0.00085903, 0.00140915, -0.00000118, 0.00000000],
+        [-6.26674577, -0.00140108, 0.00085865, 0.00140852, -0.00000118, 0.00000000],
+        [-6.26676314, -0.00140045, 0.00085826, 0.00140788, -0.00000118, 0.00000000],
+        [-6.26678046, -0.00139982, 0.00085788, 0.00140725, -0.00000118, 0.00000000],
+        [-6.26679771, -0.00139919, 0.00085750, 0.00140662, -0.00000118, 0.00000000],
+        [-6.26681490, -0.00139856, 0.00085711, 0.00140599, -0.00000118, 0.00000000],
+        [-6.26683203, -0.00139793, 0.00085673, 0.00140536, -0.00000118, 0.00000000],
+        [-6.26684910, -0.00139731, 0.00085635, 0.00140472, -0.00000118, 0.00000000],
+        [-6.26686611, -0.00139668, 0.00085597, 0.00140409, -0.00000118, 0.00000000],
+        [-6.26688306, -0.00139605, 0.00085559, 0.00140347, -0.00000118, 0.00000000],
+        [-6.26689994, -0.00139543, 0.00085521, 0.00140284, -0.00000118, 0.00000000],
+        [-6.26691677, -0.00139481, 0.00085482, 0.00140221, -0.00000118, 0.00000000],
+        [-6.26693354, -0.00139418, 0.00085444, 0.00140158, -0.00000118, 0.00000000],
+        [-6.26695024, -0.00139356, 0.00085406, 0.00140095, -0.00000118, 0.00000000],
+        [-6.26696689, -0.00139293, 0.00085368, 0.00140033, -0.00000118, 0.00000000],
+        [-6.26698348, -0.00139231, 0.00085331, 0.00139970, -0.00000118, 0.00000000],
+        [-6.26700001, -0.00139169, 0.00085293, 0.00139908, -0.00000118, 0.00000000],
+        [-6.26701648, -0.00139107, 0.00085255, 0.00139845, -0.00000118, 0.00000000],
+        [-6.26703289, -0.00139045, 0.00085217, 0.00139783, -0.00000118, 0.00000000],
+        [-6.26704925, -0.00138983, 0.00085179, 0.00139720, -0.00000118, 0.00000000],
+        [-6.26706554, -0.00138921, 0.00085141, 0.00139658, -0.00000118, 0.00000000],
+        [-6.26708178, -0.00138859, 0.00085104, 0.00139596, -0.00000118, 0.00000000],
+        [-6.26709796, -0.00138797, 0.00085066, 0.00139534, -0.00000118, 0.00000000],
+        [-6.26711408, -0.00138735, 0.00085028, 0.00139471, -0.00000118, 0.00000000],
+        [-6.26713015, -0.00138674, 0.00084990, 0.00139409, -0.00000118, 0.00000000],
+        [-6.26714616, -0.00138612, 0.00084953, 0.00139347, -0.00000118, 0.00000000],
+        [-6.26716211, -0.00138550, 0.00084915, 0.00139285, -0.00000118, 0.00000000],
+        [-6.26717800, -0.00138489, 0.00084878, 0.00139223, -0.00000118, 0.00000000],
+        [-6.26719384, -0.00138427, 0.00084840, 0.00139161, -0.00000118, 0.00000000],
+        [-6.26720962, -0.00138366, 0.00084803, 0.00139100, -0.00000118, 0.00000000],
+        [-6.26722535, -0.00138304, 0.00084765, 0.00139038, -0.00000118, 0.00000000],
+        [-6.26724102, -0.00138243, 0.00084728, 0.00138976, -0.00000118, 0.00000000],
+        [-6.26725663, -0.00138181, 0.00084690, 0.00138914, -0.00000118, 0.00000000],
+        [-6.26727219, -0.00138120, 0.00084653, 0.00138853, -0.00000118, 0.00000000],
+        [-6.26728769, -0.00138059, 0.00084616, 0.00138791, -0.00000118, 0.00000000],
+        [-6.26730314, -0.00137998, 0.00084578, 0.00138730, -0.00000118, 0.00000000],
+        [-6.26731854, -0.00137937, 0.00084541, 0.00138668, -0.00000118, 0.00000000],
+        [-6.26733388, -0.00137876, 0.00084504, 0.00138607, -0.00000118, 0.00000000],
+        [-6.26734916, -0.00137815, 0.00084467, 0.00138545, -0.00000118, 0.00000000],
+        [-6.26736439, -0.00137754, 0.00084429, 0.00138484, -0.00000118, 0.00000000],
+        [-6.26737957, -0.00137693, 0.00084392, 0.00138423, -0.00000118, 0.00000000],
+        [-6.26739469, -0.00137632, 0.00084355, 0.00138362, -0.00000118, 0.00000000],
+        [-6.26740976, -0.00137571, 0.00084318, 0.00138301, -0.00000118, 0.00000000],
+        [-6.26742477, -0.00137510, 0.00084281, 0.00138239, -0.00000118, 0.00000000],
+        [-6.26743974, -0.00137450, 0.00084244, 0.00138178, -0.00000118, 0.00000000],
+        [-6.26745464, -0.00137389, 0.00084207, 0.00138117, -0.00000118, 0.00000000],
+        [-6.26746950, -0.00137328, 0.00084170, 0.00138056, -0.00000118, 0.00000000],
+        [-6.26748430, -0.00137268, 0.00084133, 0.00137996, -0.00000117, 0.00000000],
+        [-6.26749906, -0.00137207, 0.00084096, 0.00137935, -0.00000117, 0.00000000],
+        [-6.26751375, -0.00137147, 0.00084059, 0.00137874, -0.00000117, 0.00000000],
+        [-6.26752840, -0.00137087, 0.00084022, 0.00137813, -0.00000117, 0.00000000],
+        [-6.26754300, -0.00137026, 0.00083986, 0.00137753, -0.00000117, 0.00000000],
+        [-6.26755754, -0.00136966, 0.00083949, 0.00137692, -0.00000117, 0.00000000],
+        [-6.26757203, -0.00136906, 0.00083912, 0.00137631, -0.00000117, 0.00000000],
+        [-6.26758647, -0.00136846, 0.00083875, 0.00137571, -0.00000117, 0.00000000],
+        [-6.26760086, -0.00136786, 0.00083839, 0.00137510, -0.00000117, 0.00000000],
+        [-6.26761520, -0.00136725, 0.00083802, 0.00137450, -0.00000117, 0.00000000],
+        [-6.26762949, -0.00136665, 0.00083765, 0.00137390, -0.00000117, 0.00000000],
+        [-6.26764372, -0.00136605, 0.00083729, 0.00137329, -0.00000117, 0.00000000],
+        [-6.26765791, -0.00136546, 0.00083692, 0.00137269, -0.00000117, 0.00000000],
+        [-6.26767205, -0.00136486, 0.00083656, 0.00137209, -0.00000117, 0.00000000],
+        [-6.26768613, -0.00136426, 0.00083619, 0.00137149, -0.00000117, 0.00000000],
+        [-6.26770017, -0.00136366, 0.00083583, 0.00137089, -0.00000117, 0.00000000],
+        [-6.26771416, -0.00136306, 0.00083546, 0.00137029, -0.00000117, 0.00000000],
+        [-6.26772809, -0.00136247, 0.00083510, 0.00136969, -0.00000117, 0.00000000],
+        [-6.26774198, -0.00136187, 0.00083474, 0.00136909, -0.00000117, 0.00000000],
+        [-6.26775582, -0.00136128, 0.00083437, 0.00136849, -0.00000117, 0.00000000],
+        [-6.26776961, -0.00136068, 0.00083401, 0.00136789, -0.00000117, 0.00000000],
+        [-6.26778335, -0.00136009, 0.00083365, 0.00136729, -0.00000117, 0.00000000],
+        [-6.26779704, -0.00135949, 0.00083328, 0.00136669, -0.00000117, 0.00000000],
+        [-6.26781069, -0.00135890, 0.00083292, 0.00136610, -0.00000117, 0.00000000],
+        [-6.26782428, -0.00135831, 0.00083256, 0.00136550, -0.00000117, 0.00000000],
+        [-6.26783783, -0.00135771, 0.00083220, 0.00136490, -0.00000117, 0.00000000],
+        [-6.26785133, -0.00135712, 0.00083184, 0.00136431, -0.00000117, 0.00000000],
+        [-6.26786479, -0.00135653, 0.00083148, 0.00136371, -0.00000117, 0.00000000],
+        [-6.26787819, -0.00135594, 0.00083111, 0.00136312, -0.00000117, 0.00000000],
+        [-6.26789155, -0.00135535, 0.00083075, 0.00136253, -0.00000117, 0.00000000],
+        [-6.26790486, -0.00135476, 0.00083039, 0.00136193, -0.00000117, 0.00000000],
+        [-6.26791812, -0.00135417, 0.00083003, 0.00136134, -0.00000117, 0.00000000],
+        [-6.26793134, -0.00135358, 0.00082967, 0.00136075, -0.00000117, 0.00000000],
+        [-6.26794451, -0.00135299, 0.00082931, 0.00136016, -0.00000117, 0.00000000],
+        [-6.26795764, -0.00135240, 0.00082896, 0.00135956, -0.00000117, 0.00000000],
+        [-6.26797071, -0.00135182, 0.00082860, 0.00135897, -0.00000117, 0.00000000],
+        [-6.26798374, -0.00135123, 0.00082824, 0.00135838, -0.00000117, 0.00000000],
+        [-6.26799673, -0.00135064, 0.00082788, 0.00135779, -0.00000117, 0.00000000],
+        [-6.26800967, -0.00135006, 0.00082752, 0.00135720, -0.00000117, 0.00000000],
+        [-6.26802256, -0.00134947, 0.00082717, 0.00135662, -0.00000117, 0.00000000],
+        [-6.26803541, -0.00134889, 0.00082681, 0.00135603, -0.00000117, 0.00000000],
+        [-6.26804822, -0.00134830, 0.00082645, 0.00135544, -0.00000117, 0.00000000],
+        [-6.26806098, -0.00134772, 0.00082609, 0.00135485, -0.00000117, 0.00000000],
+        [-6.26807369, -0.00134713, 0.00082574, 0.00135427, -0.00000117, 0.00000000],
+        [-6.26808636, -0.00134655, 0.00082538, 0.00135368, -0.00000117, 0.00000000],
+        [-6.26809898, -0.00134597, 0.00082503, 0.00135309, -0.00000117, 0.00000000],
+        [-6.26811156, -0.00134539, 0.00082467, 0.00135251, -0.00000117, 0.00000000],
+        [-6.26812410, -0.00134481, 0.00082432, 0.00135192, -0.00000117, 0.00000000],
+        [-6.26813659, -0.00134422, 0.00082396, 0.00135134, -0.00000117, 0.00000000],
+        [-6.26814904, -0.00134364, 0.00082361, 0.00135075, -0.00000117, 0.00000000],
+        [-6.26816144, -0.00134306, 0.00082325, 0.00135017, -0.00000117, 0.00000000],
+        [-6.26817380, -0.00134248, 0.00082290, 0.00134959, -0.00000117, 0.00000000],
+        [-6.26818612, -0.00134191, 0.00082255, 0.00134901, -0.00000117, 0.00000000],
+        [-6.26819839, -0.00134133, 0.00082219, 0.00134842, -0.00000117, 0.00000000],
+        [-6.26821062, -0.00134075, 0.00082184, 0.00134784, -0.00000117, 0.00000000],
+        [-6.26822281, -0.00134017, 0.00082149, 0.00134726, -0.00000117, 0.00000000],
+        [-6.26823495, -0.00133959, 0.00082113, 0.00134668, -0.00000117, 0.00000000],
+        [-6.26824705, -0.00133902, 0.00082078, 0.00134610, -0.00000117, 0.00000000],
+        [-6.26825911, -0.00133844, 0.00082043, 0.00134552, -0.00000117, 0.00000000],
+        [-6.26827113, -0.00133787, 0.00082008, 0.00134494, -0.00000117, 0.00000000],
+        [-6.26828310, -0.00133729, 0.00081973, 0.00134437, -0.00000117, 0.00000000],
+        [-6.26829504, -0.00133672, 0.00081938, 0.00134379, -0.00000117, 0.00000000],
+        [-6.26830693, -0.00133614, 0.00081902, 0.00134321, -0.00000117, 0.00000000],
+        [-6.26831878, -0.00133557, 0.00081867, 0.00134263, -0.00000117, 0.00000000],
+        [-6.26833058, -0.00133499, 0.00081832, 0.00134206, -0.00000117, 0.00000000],
+        [-6.26834235, -0.00133442, 0.00081797, 0.00134148, -0.00000117, 0.00000000],
+        [-6.26835407, -0.00133385, 0.00081762, 0.00134090, -0.00000117, 0.00000000],
+        [-6.26836576, -0.00133328, 0.00081728, 0.00134033, -0.00000117, 0.00000000],
+        [-6.26837740, -0.00133271, 0.00081693, 0.00133976, -0.00000117, 0.00000000],
+        [-6.26838900, -0.00133214, 0.00081658, 0.00133918, -0.00000117, 0.00000000],
+        [-6.26840056, -0.00133157, 0.00081623, 0.00133861, -0.00000117, 0.00000000],
+        [-6.26841209, -0.00133100, 0.00081588, 0.00133803, -0.00000117, 0.00000000],
+        [-6.26842357, -0.00133043, 0.00081553, 0.00133746, -0.00000117, 0.00000000],
+        [-6.26843501, -0.00132986, 0.00081519, 0.00133689, -0.00000117, 0.00000000],
+        [-6.26844641, -0.00132929, 0.00081484, 0.00133632, -0.00000117, 0.00000000],
+        [-6.26845777, -0.00132872, 0.00081449, 0.00133575, -0.00000117, 0.00000000],
+        [-6.26846909, -0.00132815, 0.00081414, 0.00133518, -0.00000117, 0.00000000],
+        [-6.26848037, -0.00132759, 0.00081380, 0.00133461, -0.00000117, 0.00000000],
+        [-6.26849161, -0.00132702, 0.00081345, 0.00133404, -0.00000117, 0.00000000],
+        [-6.26850281, -0.00132645, 0.00081311, 0.00133347, -0.00000117, 0.00000000],
+        [-6.26851397, -0.00132589, 0.00081276, 0.00133290, -0.00000117, 0.00000000],
+        [-6.26852510, -0.00132532, 0.00081242, 0.00133233, -0.00000117, 0.00000000],
+        [-6.26853618, -0.00132476, 0.00081207, 0.00133176, -0.00000117, 0.00000000],
+        [-6.26854723, -0.00132419, 0.00081173, 0.00133120, -0.00000117, 0.00000000],
+        [-6.26855824, -0.00132363, 0.00081138, 0.00133063, -0.00000117, 0.00000000],
+        [-6.26856921, -0.00132307, 0.00081104, 0.00133006, -0.00000117, 0.00000000],
+        [-6.26858014, -0.00132251, 0.00081069, 0.00132950, -0.00000117, 0.00000000],
+        [-6.26859103, -0.00132194, 0.00081035, 0.00132893, -0.00000117, 0.00000000],
+        [-6.26860188, -0.00132138, 0.00081001, 0.00132837, -0.00000117, 0.00000000],
+        [-6.26861270, -0.00132082, 0.00080966, 0.00132780, -0.00000117, 0.00000000],
+        [-6.26862348, -0.00132026, 0.00080932, 0.00132724, -0.00000117, 0.00000000],
+        [-6.26863422, -0.00131970, 0.00080898, 0.00132667, -0.00000117, 0.00000000],
+        [-6.26864493, -0.00131914, 0.00080864, 0.00132611, -0.00000117, 0.00000000],
+        [-6.26865559, -0.00131858, 0.00080829, 0.00132555, -0.00000117, 0.00000000],
+        [-6.26866622, -0.00131802, 0.00080795, 0.00132499, -0.00000117, 0.00000000],
+        [-6.26867681, -0.00131746, 0.00080761, 0.00132442, -0.00000117, 0.00000000],
+        [-6.26868737, -0.00131690, 0.00080727, 0.00132386, -0.00000117, 0.00000000],
+        [-6.26869789, -0.00131635, 0.00080693, 0.00132330, -0.00000117, 0.00000000],
+        [-6.26870837, -0.00131579, 0.00080659, 0.00132274, -0.00000117, 0.00000000],
+        [-6.26871882, -0.00131523, 0.00080625, 0.00132218, -0.00000117, 0.00000000],
+        [-6.26872923, -0.00131468, 0.00080591, 0.00132162, -0.00000117, 0.00000000],
+        [-6.26873960, -0.00131412, 0.00080557, 0.00132106, -0.00000117, 0.00000000],
+        [-6.26874993, -0.00131357, 0.00080523, 0.00132050, -0.00000117, 0.00000000],
+        [-6.26876024, -0.00131301, 0.00080489, 0.00131995, -0.00000117, 0.00000000],
+        [-6.26877050, -0.00131246, 0.00080455, 0.00131939, -0.00000117, 0.00000000],
+        [-6.26878073, -0.00131190, 0.00080421, 0.00131883, -0.00000117, 0.00000000],
+        [-6.26879092, -0.00131135, 0.00080387, 0.00131828, -0.00000117, 0.00000000],
+        [-6.26880108, -0.00131080, 0.00080354, 0.00131772, -0.00000117, 0.00000000],
+        [-6.26881120, -0.00131024, 0.00080320, 0.00131716, -0.00000117, 0.00000000],
+        [-6.26882129, -0.00130969, 0.00080286, 0.00131661, -0.00000117, 0.00000000],
+        [-6.26883135, -0.00130914, 0.00080252, 0.00131605, -0.00000117, 0.00000000],
+        [-6.26884136, -0.00130859, 0.00080219, 0.00131550, -0.00000117, 0.00000000],
+        [-6.26885135, -0.00130804, 0.00080185, 0.00131495, -0.00000117, 0.00000000],
+        [-6.26886129, -0.00130749, 0.00080151, 0.00131439, -0.00000117, 0.00000000],
+        [-6.26887121, -0.00130694, 0.00080118, 0.00131384, -0.00000117, 0.00000000],
+        [-6.26888109, -0.00130639, 0.00080084, 0.00131329, -0.00000117, 0.00000000],
+        [-6.26889093, -0.00130584, 0.00080051, 0.00131274, -0.00000117, 0.00000000],
+        [-6.26890074, -0.00130529, 0.00080017, 0.00131218, -0.00000117, 0.00000000],
+        [-6.26891052, -0.00130474, 0.00079984, 0.00131163, -0.00000117, 0.00000000],
+        [-6.26892026, -0.00130420, 0.00079950, 0.00131108, -0.00000117, 0.00000000],
+        [-6.26892997, -0.00130365, 0.00079917, 0.00131053, -0.00000117, 0.00000000],
+        [-6.26893965, -0.00130310, 0.00079883, 0.00130998, -0.00000117, 0.00000000],
+        [-6.26894929, -0.00130256, 0.00079850, 0.00130943, -0.00000117, 0.00000000],
+        [-6.26895890, -0.00130201, 0.00079816, 0.00130888, -0.00000117, 0.00000000],
+        [-6.26896848, -0.00130146, 0.00079783, 0.00130834, -0.00000117, 0.00000000],
+        [-6.26897802, -0.00130092, 0.00079750, 0.00130779, -0.00000117, 0.00000000],
+        [-6.26898753, -0.00130038, 0.00079717, 0.00130724, -0.00000117, 0.00000000],
+        [-6.26899700, -0.00129983, 0.00079683, 0.00130669, -0.00000117, 0.00000000],
+        [-6.26900645, -0.00129929, 0.00079650, 0.00130615, -0.00000117, 0.00000000],
+        [-6.26901586, -0.00129875, 0.00079617, 0.00130560, -0.00000117, 0.00000000],
+        [-6.26902524, -0.00129820, 0.00079584, 0.00130506, -0.00000117, 0.00000000],
+        [-6.26903458, -0.00129766, 0.00079550, 0.00130451, -0.00000117, 0.00000000],
+        [-6.26904390, -0.00129712, 0.00079517, 0.00130397, -0.00000117, 0.00000000],
+        [-6.26905318, -0.00129658, 0.00079484, 0.00130342, -0.00000117, 0.00000000],
+        [-6.26906243, -0.00129604, 0.00079451, 0.00130288, -0.00000117, 0.00000000],
+        [-6.26907164, -0.00129550, 0.00079418, 0.00130233, -0.00000117, 0.00000000],
+        [-6.26908083, -0.00129496, 0.00079385, 0.00130179, -0.00000117, 0.00000000],
+        [-6.26908998, -0.00129442, 0.00079352, 0.00130125, -0.00000117, 0.00000000],
+        [-6.26909911, -0.00129388, 0.00079319, 0.00130071, -0.00000117, 0.00000000],
+        [-6.26910820, -0.00129334, 0.00079286, 0.00130016, -0.00000117, 0.00000000],
+        [-6.26911726, -0.00129280, 0.00079253, 0.00129962, -0.00000117, 0.00000000],
+        [-6.26912629, -0.00129226, 0.00079220, 0.00129908, -0.00000117, 0.00000000],
+        [-6.26913528, -0.00129173, 0.00079188, 0.00129854, -0.00000117, 0.00000000],
+        [-6.26914425, -0.00129119, 0.00079155, 0.00129800, -0.00000117, 0.00000000],
+        [-6.26915318, -0.00129065, 0.00079122, 0.00129746, -0.00000117, 0.00000000],
+        [-6.26916209, -0.00129012, 0.00079089, 0.00129692, -0.00000117, 0.00000000],
+        [-6.26917096, -0.00128958, 0.00079056, 0.00129639, -0.00000117, 0.00000000],
+        [-6.26917981, -0.00128905, 0.00079024, 0.00129585, -0.00000117, 0.00000000],
+        [-6.26918862, -0.00128851, 0.00078991, 0.00129531, -0.00000117, 0.00000000],
+        [-6.26919740, -0.00128798, 0.00078958, 0.00129477, -0.00000117, 0.00000000],
+        [-6.26920615, -0.00128744, 0.00078926, 0.00129424, -0.00000117, 0.00000000],
+        [-6.26921488, -0.00128691, 0.00078893, 0.00129370, -0.00000117, 0.00000000],
+        [-6.26922357, -0.00128638, 0.00078860, 0.00129316, -0.00000117, 0.00000000],
+        [-6.26923223, -0.00128585, 0.00078828, 0.00129263, -0.00000117, 0.00000000],
+        [-6.26924086, -0.00128531, 0.00078795, 0.00129209, -0.00000117, 0.00000000],
+        [-6.26924947, -0.00128478, 0.00078763, 0.00129156, -0.00000117, 0.00000000],
+        [-6.26925804, -0.00128425, 0.00078730, 0.00129102, -0.00000117, 0.00000000],
+        [-6.26926658, -0.00128372, 0.00078698, 0.00129049, -0.00000117, 0.00000000],
+        [-6.26927510, -0.00128319, 0.00078665, 0.00128996, -0.00000117, 0.00000000],
+        [-6.26928358, -0.00128266, 0.00078633, 0.00128942, -0.00000117, 0.00000000],
+        [-6.26929204, -0.00128213, 0.00078601, 0.00128889, -0.00000117, 0.00000000],
+        [-6.26930047, -0.00128160, 0.00078568, 0.00128836, -0.00000117, 0.00000000],
+        [-6.26930887, -0.00128107, 0.00078536, 0.00128783, -0.00000117, 0.00000000],
+        [-6.26931724, -0.00128054, 0.00078504, 0.00128730, -0.00000117, 0.00000000],
+        [-6.26932558, -0.00128002, 0.00078471, 0.00128677, -0.00000117, 0.00000000],
+        [-6.26933389, -0.00127949, 0.00078439, 0.00128624, -0.00000117, 0.00000000],
+        [-6.26934217, -0.00127896, 0.00078407, 0.00128571, -0.00000117, 0.00000000],
+        [-6.26935043, -0.00127844, 0.00078375, 0.00128518, -0.00000117, 0.00000000],
+        [-6.26935866, -0.00127791, 0.00078342, 0.00128465, -0.00000117, 0.00000000],
+        [-6.26936686, -0.00127738, 0.00078310, 0.00128412, -0.00000117, 0.00000000],
+        [-6.26937503, -0.00127686, 0.00078278, 0.00128359, -0.00000117, 0.00000000],
+        [-6.26938317, -0.00127634, 0.00078246, 0.00128306, -0.00000117, 0.00000000],
+        [-6.26939129, -0.00127581, 0.00078214, 0.00128254, -0.00000117, 0.00000000],
+        [-6.26939937, -0.00127529, 0.00078182, 0.00128201, -0.00000117, 0.00000000],
+        [-6.26940743, -0.00127476, 0.00078150, 0.00128148, -0.00000117, 0.00000000],
+        [-6.26941547, -0.00127424, 0.00078118, 0.00128096, -0.00000117, 0.00000000],
+        [-6.26942347, -0.00127372, 0.00078086, 0.00128043, -0.00000117, 0.00000000],
+        [-6.26943145, -0.00127320, 0.00078054, 0.00127991, -0.00000117, 0.00000000],
+        [-6.26943940, -0.00127267, 0.00078022, 0.00127938, -0.00000117, 0.00000000],
+        [-6.26944732, -0.00127215, 0.00077990, 0.00127886, -0.00000117, 0.00000000],
+        [-6.26945522, -0.00127163, 0.00077958, 0.00127833, -0.00000117, 0.00000000],
+        [-6.26946309, -0.00127111, 0.00077926, 0.00127781, -0.00000117, 0.00000000],
+        [-6.26947093, -0.00127059, 0.00077895, 0.00127729, -0.00000117, 0.00000000],
+        [-6.26947875, -0.00127007, 0.00077863, 0.00127677, -0.00000117, 0.00000000],
+        [-6.26948654, -0.00126955, 0.00077831, 0.00127624, -0.00000117, 0.00000000],
+        [-6.26949430, -0.00126903, 0.00077799, 0.00127572, -0.00000117, 0.00000000],
+        [-6.26950204, -0.00126852, 0.00077768, 0.00127520, -0.00000117, 0.00000000],
+        [-6.26950975, -0.00126800, 0.00077736, 0.00127468, -0.00000117, 0.00000000],
+        [-6.26951743, -0.00126748, 0.00077704, 0.00127416, -0.00000117, 0.00000000],
+        [-6.26952509, -0.00126696, 0.00077673, 0.00127364, -0.00000117, 0.00000000],
+        [-6.26953272, -0.00126645, 0.00077641, 0.00127312, -0.00000117, 0.00000000],
+        [-6.26954033, -0.00126593, 0.00077609, 0.00127260, -0.00000117, 0.00000000],
+        [-6.26954791, -0.00126541, 0.00077578, 0.00127208, -0.00000117, 0.00000000],
+        [-6.26955546, -0.00126490, 0.00077546, 0.00127156, -0.00000117, 0.00000000],
+        [-6.26956299, -0.00126438, 0.00077515, 0.00127104, -0.00000117, 0.00000000],
+        [-6.26957049, -0.00126387, 0.00077483, 0.00127053, -0.00000117, 0.00000000],
+        [-6.26957797, -0.00126335, 0.00077452, 0.00127001, -0.00000117, 0.00000000],
+        [-6.26958542, -0.00126284, 0.00077420, 0.00126949, -0.00000117, 0.00000000],
+        [-6.26959285, -0.00126233, 0.00077389, 0.00126898, -0.00000117, 0.00000000],
+        [-6.26960025, -0.00126181, 0.00077357, 0.00126846, -0.00000117, 0.00000000],
+        [-6.26960763, -0.00126130, 0.00077326, 0.00126795, -0.00000117, 0.00000000],
+        [-6.26961498, -0.00126079, 0.00077295, 0.00126743, -0.00000117, 0.00000000],
+        [-6.26962230, -0.00126028, 0.00077263, 0.00126692, -0.00000117, 0.00000000],
+        [-6.26962961, -0.00125977, 0.00077232, 0.00126640, -0.00000117, 0.00000000],
+        [-6.26963688, -0.00125926, 0.00077201, 0.00126589, -0.00000117, 0.00000000],
+        [-6.26964414, -0.00125874, 0.00077170, 0.00126537, -0.00000117, 0.00000000],
+        [-6.26965137, -0.00125823, 0.00077138, 0.00126486, -0.00000117, 0.00000000],
+        [-6.26965857, -0.00125772, 0.00077107, 0.00126435, -0.00000117, 0.00000000],
+        [-6.26966575, -0.00125722, 0.00077076, 0.00126384, -0.00000117, 0.00000000],
+        [-6.26967290, -0.00125671, 0.00077045, 0.00126333, -0.00000117, 0.00000000],
+        [-6.26968003, -0.00125620, 0.00077014, 0.00126281, -0.00000117, 0.00000000],
+        [-6.26968714, -0.00125569, 0.00076983, 0.00126230, -0.00000117, 0.00000000],
+        [-6.26969422, -0.00125518, 0.00076952, 0.00126179, -0.00000117, 0.00000000],
+        [-6.26970128, -0.00125468, 0.00076920, 0.00126128, -0.00000117, 0.00000000],
+        [-6.26970832, -0.00125417, 0.00076889, 0.00126077, -0.00000117, 0.00000000],
+        [-6.26971533, -0.00125366, 0.00076858, 0.00126026, -0.00000117, 0.00000000],
+        [-6.26972232, -0.00125316, 0.00076827, 0.00125975, -0.00000117, 0.00000000],
+        [-6.26972928, -0.00125265, 0.00076797, 0.00125925, -0.00000117, 0.00000000],
+        [-6.26973622, -0.00125214, 0.00076766, 0.00125874, -0.00000117, 0.00000000],
+        [-6.26974314, -0.00125164, 0.00076735, 0.00125823, -0.00000117, 0.00000000],
+        [-6.26975003, -0.00125114, 0.00076704, 0.00125772, -0.00000117, 0.00000000],
+        [-6.26975691, -0.00125063, 0.00076673, 0.00125722, -0.00000117, 0.00000000],
+        [-6.26976375, -0.00125013, 0.00076642, 0.00125671, -0.00000117, 0.00000000],
+        [-6.26977058, -0.00124962, 0.00076611, 0.00125620, -0.00000117, 0.00000000],
+        [-6.26977738, -0.00124912, 0.00076581, 0.00125570, -0.00000117, 0.00000000],
+        [-6.26978416, -0.00124862, 0.00076550, 0.00125519, -0.00000117, 0.00000000],
+        [-6.26979092, -0.00124812, 0.00076519, 0.00125469, -0.00000117, 0.00000000],
+        [-6.26979765, -0.00124762, 0.00076488, 0.00125418, -0.00000117, 0.00000000],
+        [-6.26980436, -0.00124711, 0.00076458, 0.00125368, -0.00000117, 0.00000000],
+        [-6.26981105, -0.00124661, 0.00076427, 0.00125318, -0.00000117, 0.00000000],
+        [-6.26981772, -0.00124611, 0.00076396, 0.00125267, -0.00000117, 0.00000000],
+        [-6.26982436, -0.00124561, 0.00076366, 0.00125217, -0.00000117, 0.00000000],
+        [-6.26983098, -0.00124511, 0.00076335, 0.00125167, -0.00000117, 0.00000000],
+        [-6.26983758, -0.00124461, 0.00076305, 0.00125116, -0.00000117, 0.00000000],
+        [-6.26984416, -0.00124412, 0.00076274, 0.00125066, -0.00000117, 0.00000000],
+        [-6.26985071, -0.00124362, 0.00076244, 0.00125016, -0.00000117, 0.00000000],
+        [-6.26985725, -0.00124312, 0.00076213, 0.00124966, -0.00000117, 0.00000000],
+        [-6.26986376, -0.00124262, 0.00076183, 0.00124916, -0.00000117, 0.00000000],
+        [-6.26987025, -0.00124212, 0.00076152, 0.00124866, -0.00000117, 0.00000000],
+        [-6.26987672, -0.00124163, 0.00076122, 0.00124816, -0.00000117, 0.00000000],
+        [-6.26988316, -0.00124113, 0.00076091, 0.00124766, -0.00000117, 0.00000000],
+        [-6.26988959, -0.00124063, 0.00076061, 0.00124716, -0.00000117, 0.00000000],
+        [-6.26989599, -0.00124014, 0.00076031, 0.00124666, -0.00000117, 0.00000000],
+        [-6.26990237, -0.00123964, 0.00076000, 0.00124617, -0.00000117, 0.00000000],
+        [-6.26990873, -0.00123915, 0.00075970, 0.00124567, -0.00000117, 0.00000000],
+        [-6.26991507, -0.00123865, 0.00075940, 0.00124517, -0.00000117, 0.00000000],
+        [-6.26992139, -0.00123816, 0.00075909, 0.00124467, -0.00000117, 0.00000000],
+        [-6.26992769, -0.00123767, 0.00075879, 0.00124418, -0.00000117, 0.00000000],
+        [-6.26993396, -0.00123717, 0.00075849, 0.00124368, -0.00000117, 0.00000000],
+        [-6.26994022, -0.00123668, 0.00075819, 0.00124319, -0.00000117, 0.00000000],
+        [-6.26994645, -0.00123619, 0.00075789, 0.00124269, -0.00000117, 0.00000000],
+        [-6.26995267, -0.00123569, 0.00075758, 0.00124219, -0.00000117, 0.00000000],
+        [-6.26995886, -0.00123520, 0.00075728, 0.00124170, -0.00000117, 0.00000000],
+        [-6.26996503, -0.00123471, 0.00075698, 0.00124121, -0.00000117, 0.00000000],
+        [-6.26997119, -0.00123422, 0.00075668, 0.00124071, -0.00000117, 0.00000000],
+        [-6.26997732, -0.00123373, 0.00075638, 0.00124022, -0.00000117, 0.00000000],
+        [-6.26998343, -0.00123324, 0.00075608, 0.00123973, -0.00000117, 0.00000000],
+        [-6.26998952, -0.00123275, 0.00075578, 0.00123923, -0.00000117, 0.00000000],
+        [-6.26999559, -0.00123226, 0.00075548, 0.00123874, -0.00000117, 0.00000000],
+        [-6.27000164, -0.00123177, 0.00075518, 0.00123825, -0.00000117, 0.00000000],
+        [-6.27000767, -0.00123128, 0.00075488, 0.00123776, -0.00000117, 0.00000000],
+        [-6.27001368, -0.00123079, 0.00075458, 0.00123727, -0.00000117, 0.00000000],
+        [-6.27001968, -0.00123031, 0.00075428, 0.00123678, -0.00000117, 0.00000000],
+        [-6.27002565, -0.00122982, 0.00075399, 0.00123629, -0.00000117, 0.00000000],
+        [-6.27003160, -0.00122933, 0.00075369, 0.00123580, -0.00000117, 0.00000000],
+        [-6.27003753, -0.00122884, 0.00075339, 0.00123531, -0.00000117, 0.00000000],
+        [-6.27004344, -0.00122836, 0.00075309, 0.00123482, -0.00000117, 0.00000000],
+        [-6.27004933, -0.00122787, 0.00075279, 0.00123433, -0.00000117, 0.00000000],
+        [-6.27005521, -0.00122739, 0.00075250, 0.00123384, -0.00000117, 0.00000000],
+        [-6.27006106, -0.00122690, 0.00075220, 0.00123335, -0.00000117, 0.00000000],
+        [-6.27006690, -0.00122642, 0.00075190, 0.00123286, -0.00000117, 0.00000000],
+        [-6.27007271, -0.00122593, 0.00075160, 0.00123238, -0.00000117, 0.00000000],
+        [-6.27007851, -0.00122545, 0.00075131, 0.00123189, -0.00000117, 0.00000000],
+        [-6.27008428, -0.00122496, 0.00075101, 0.00123140, -0.00000117, 0.00000000],
+        [-6.27009004, -0.00122448, 0.00075072, 0.00123092, -0.00000117, 0.00000000],
+        [-6.27009578, -0.00122400, 0.00075042, 0.00123043, -0.00000117, 0.00000000],
+        [-6.27010150, -0.00122351, 0.00075012, 0.00122995, -0.00000117, 0.00000000],
+        [-6.27010720, -0.00122303, 0.00074983, 0.00122946, -0.00000117, 0.00000000],
+        [-6.27011288, -0.00122255, 0.00074953, 0.00122898, -0.00000117, 0.00000000],
+        [-6.27011855, -0.00122207, 0.00074924, 0.00122849, -0.00000117, 0.00000000],
+        [-6.27012419, -0.00122159, 0.00074894, 0.00122801, -0.00000117, 0.00000000],
+        [-6.27012982, -0.00122111, 0.00074865, 0.00122752, -0.00000117, 0.00000000],
+        [-6.27013543, -0.00122063, 0.00074836, 0.00122704, -0.00000117, 0.00000000],
+        [-6.27014102, -0.00122015, 0.00074806, 0.00122656, -0.00000117, 0.00000000],
+        [-6.27014659, -0.00121967, 0.00074777, 0.00122608, -0.00000117, 0.00000000],
+        [-6.27015214, -0.00121919, 0.00074747, 0.00122559, -0.00000117, 0.00000000],
+        [-6.27015767, -0.00121871, 0.00074718, 0.00122511, -0.00000117, 0.00000000],
+        [-6.27016319, -0.00121823, 0.00074689, 0.00122463, -0.00000117, 0.00000000],
+        [-6.27016869, -0.00121775, 0.00074659, 0.00122415, -0.00000117, 0.00000000],
+        [-6.27017417, -0.00121727, 0.00074630, 0.00122367, -0.00000117, 0.00000000],
+        [-6.27017963, -0.00121680, 0.00074601, 0.00122319, -0.00000117, 0.00000000],
+        [-6.27018508, -0.00121632, 0.00074572, 0.00122271, -0.00000117, 0.00000000],
+        [-6.27019050, -0.00121584, 0.00074543, 0.00122223, -0.00000117, 0.00000000],
+        [-6.27019591, -0.00121537, 0.00074513, 0.00122175, -0.00000117, 0.00000000],
+        [-6.27020130, -0.00121489, 0.00074484, 0.00122127, -0.00000117, 0.00000000],
+        [-6.27020668, -0.00121441, 0.00074455, 0.00122080, -0.00000117, 0.00000000],
+        [-6.27021203, -0.00121394, 0.00074426, 0.00122032, -0.00000117, 0.00000000],
+        [-6.27021737, -0.00121346, 0.00074397, 0.00121984, -0.00000117, 0.00000000],
+        [-6.27022270, -0.00121299, 0.00074368, 0.00121936, -0.00000117, 0.00000000],
+        [-6.27022800, -0.00121252, 0.00074339, 0.00121889, -0.00000117, 0.00000000],
+        [-6.27023329, -0.00121204, 0.00074310, 0.00121841, -0.00000117, 0.00000000],
+        [-6.27023856, -0.00121157, 0.00074281, 0.00121793, -0.00000117, 0.00000000],
+        [-6.27024381, -0.00121110, 0.00074252, 0.00121746, -0.00000117, 0.00000000],
+        [-6.27024904, -0.00121062, 0.00074223, 0.00121698, -0.00000117, 0.00000000],
+        [-6.27025426, -0.00121015, 0.00074194, 0.00121651, -0.00000117, 0.00000000],
+        [-6.27025946, -0.00120968, 0.00074165, 0.00121603, -0.00000117, 0.00000000],
+        [-6.27026465, -0.00120921, 0.00074136, 0.00121556, -0.00000117, 0.00000000],
+        [-6.27026982, -0.00120874, 0.00074107, 0.00121509, -0.00000117, 0.00000000],
+        [-6.27027497, -0.00120827, 0.00074078, 0.00121461, -0.00000117, 0.00000000],
+        [-6.27028010, -0.00120780, 0.00074050, 0.00121414, -0.00000117, 0.00000000],
+        [-6.27028522, -0.00120732, 0.00074021, 0.00121367, -0.00000116, 0.00000000],
+        [-6.27029032, -0.00120686, 0.00073992, 0.00121319, -0.00000116, 0.00000000],
+        [-6.27029541, -0.00120639, 0.00073963, 0.00121272, -0.00000116, 0.00000000],
+        [-6.27030047, -0.00120592, 0.00073934, 0.00121225, -0.00000116, 0.00000000],
+        [-6.27030552, -0.00120545, 0.00073906, 0.00121178, -0.00000116, 0.00000000],
+        [-6.27031056, -0.00120498, 0.00073877, 0.00121131, -0.00000116, 0.00000000],
+        [-6.27031558, -0.00120451, 0.00073848, 0.00121084, -0.00000116, 0.00000000],
+        [-6.27032058, -0.00120404, 0.00073820, 0.00121037, -0.00000116, 0.00000000],
+        [-6.27032557, -0.00120358, 0.00073791, 0.00120990, -0.00000116, 0.00000000],
+        [-6.27033054, -0.00120311, 0.00073763, 0.00120943, -0.00000116, 0.00000000],
+        [-6.27033549, -0.00120264, 0.00073734, 0.00120896, -0.00000116, 0.00000000],
+        [-6.27034043, -0.00120218, 0.00073705, 0.00120849, -0.00000116, 0.00000000],
+        [-6.27034536, -0.00120171, 0.00073677, 0.00120802, -0.00000116, 0.00000000],
+        [-6.27035026, -0.00120125, 0.00073648, 0.00120755, -0.00000116, 0.00000000],
+        [-6.27035515, -0.00120078, 0.00073620, 0.00120709, -0.00000116, 0.00000000],
+        [-6.27036003, -0.00120032, 0.00073591, 0.00120662, -0.00000116, 0.00000000],
+        [-6.27036489, -0.00119985, 0.00073563, 0.00120615, -0.00000116, 0.00000000],
+        [-6.27036973, -0.00119939, 0.00073535, 0.00120569, -0.00000116, 0.00000000],
+        [-6.27037456, -0.00119892, 0.00073506, 0.00120522, -0.00000116, 0.00000000],
+        [-6.27037937, -0.00119846, 0.00073478, 0.00120475, -0.00000116, 0.00000000],
+        [-6.27038417, -0.00119800, 0.00073449, 0.00120429, -0.00000116, 0.00000000],
+        [-6.27038895, -0.00119754, 0.00073421, 0.00120382, -0.00000116, 0.00000000],
+        [-6.27039372, -0.00119707, 0.00073393, 0.00120336, -0.00000116, 0.00000000],
+        [-6.27039847, -0.00119661, 0.00073364, 0.00120289, -0.00000116, 0.00000000],
+        [-6.27040321, -0.00119615, 0.00073336, 0.00120243, -0.00000116, 0.00000000],
+        [-6.27040793, -0.00119569, 0.00073308, 0.00120197, -0.00000116, 0.00000000],
+        [-6.27041263, -0.00119523, 0.00073280, 0.00120150, -0.00000116, 0.00000000],
+        [-6.27041732, -0.00119477, 0.00073251, 0.00120104, -0.00000116, 0.00000000],
+        [-6.27042200, -0.00119431, 0.00073223, 0.00120058, -0.00000116, 0.00000000],
+        [-6.27042666, -0.00119385, 0.00073195, 0.00120011, -0.00000116, 0.00000000],
+        [-6.27043131, -0.00119339, 0.00073167, 0.00119965, -0.00000116, 0.00000000],
+        [-6.27043594, -0.00119293, 0.00073139, 0.00119919, -0.00000116, 0.00000000],
+        [-6.27044055, -0.00119247, 0.00073111, 0.00119873, -0.00000116, 0.00000000],
+        [-6.27044516, -0.00119201, 0.00073083, 0.00119827, -0.00000116, 0.00000000],
+        [-6.27044974, -0.00119155, 0.00073054, 0.00119781, -0.00000116, 0.00000000],
+        [-6.27045432, -0.00119110, 0.00073026, 0.00119735, -0.00000116, 0.00000000],
+        [-6.27045887, -0.00119064, 0.00072998, 0.00119689, -0.00000116, 0.00000000],
+        [-6.27046342, -0.00119018, 0.00072970, 0.00119643, -0.00000116, 0.00000000],
+        [-6.27046795, -0.00118973, 0.00072942, 0.00119597, -0.00000116, 0.00000000],
+        [-6.27047246, -0.00118927, 0.00072914, 0.00119551, -0.00000116, 0.00000000],
+        [-6.27047696, -0.00118881, 0.00072887, 0.00119505, -0.00000116, 0.00000000],
+        [-6.27048145, -0.00118836, 0.00072859, 0.00119459, -0.00000116, 0.00000000],
+        [-6.27048592, -0.00118790, 0.00072831, 0.00119414, -0.00000116, 0.00000000],
+        [-6.27049038, -0.00118745, 0.00072803, 0.00119368, -0.00000116, 0.00000000],
+        [-6.27049482, -0.00118699, 0.00072775, 0.00119322, -0.00000116, 0.00000000],
+        [-6.27049925, -0.00118654, 0.00072747, 0.00119277, -0.00000116, 0.00000000],
+        [-6.27050366, -0.00118609, 0.00072719, 0.00119231, -0.00000116, 0.00000000],
+        [-6.27050807, -0.00118563, 0.00072692, 0.00119185, -0.00000116, 0.00000000],
+        [-6.27051245, -0.00118518, 0.00072664, 0.00119140, -0.00000116, 0.00000000],
+        [-6.27051683, -0.00118473, 0.00072636, 0.00119094, -0.00000116, 0.00000000],
+        [-6.27052119, -0.00118427, 0.00072608, 0.00119049, -0.00000116, 0.00000000],
+        [-6.27052553, -0.00118382, 0.00072581, 0.00119003, -0.00000116, 0.00000000],
+        [-6.27052986, -0.00118337, 0.00072553, 0.00118958, -0.00000116, 0.00000000],
+        [-6.27053418, -0.00118292, 0.00072525, 0.00118912, -0.00000116, 0.00000000],
+        [-6.27053849, -0.00118247, 0.00072498, 0.00118867, -0.00000116, 0.00000000],
+        [-6.27054278, -0.00118202, 0.00072470, 0.00118822, -0.00000116, 0.00000000],
+        [-6.27054706, -0.00118157, 0.00072442, 0.00118776, -0.00000116, 0.00000000],
+        [-6.27055132, -0.00118112, 0.00072415, 0.00118731, -0.00000116, 0.00000000],
+        [-6.27055557, -0.00118067, 0.00072387, 0.00118686, -0.00000116, 0.00000000],
+        [-6.27055981, -0.00118022, 0.00072360, 0.00118641, -0.00000116, 0.00000000],
+        [-6.27056403, -0.00117977, 0.00072332, 0.00118596, -0.00000116, 0.00000000],
+        [-6.27056825, -0.00117932, 0.00072305, 0.00118550, -0.00000116, 0.00000000],
+        [-6.27057244, -0.00117887, 0.00072277, 0.00118505, -0.00000116, 0.00000000],
+        [-6.27057663, -0.00117842, 0.00072250, 0.00118460, -0.00000116, 0.00000000],
+        [-6.27058080, -0.00117798, 0.00072222, 0.00118415, -0.00000116, 0.00000000],
+        [-6.27058496, -0.00117753, 0.00072195, 0.00118370, -0.00000116, 0.00000000],
+        [-6.27058910, -0.00117708, 0.00072167, 0.00118325, -0.00000116, 0.00000000],
+        [-6.27059324, -0.00117663, 0.00072140, 0.00118280, -0.00000116, 0.00000000],
+        [-6.27059736, -0.00117619, 0.00072113, 0.00118236, -0.00000116, 0.00000000],
+        [-6.27060146, -0.00117574, 0.00072085, 0.00118191, -0.00000116, 0.00000000],
+        [-6.27060556, -0.00117530, 0.00072058, 0.00118146, -0.00000116, 0.00000000],
+        [-6.27060964, -0.00117485, 0.00072031, 0.00118101, -0.00000116, 0.00000000],
+        [-6.27061371, -0.00117441, 0.00072004, 0.00118056, -0.00000116, 0.00000000],
+        [-6.27061776, -0.00117396, 0.00071976, 0.00118012, -0.00000116, 0.00000000],
+        [-6.27062180, -0.00117352, 0.00071949, 0.00117967, -0.00000116, 0.00000000],
+        [-6.27062583, -0.00117307, 0.00071922, 0.00117922, -0.00000116, 0.00000000],
+        [-6.27062985, -0.00117263, 0.00071895, 0.00117878, -0.00000116, 0.00000000],
+        [-6.27063386, -0.00117219, 0.00071867, 0.00117833, -0.00000116, 0.00000000],
+        [-6.27063785, -0.00117174, 0.00071840, 0.00117789, -0.00000116, 0.00000000],
+        [-6.27064183, -0.00117130, 0.00071813, 0.00117744, -0.00000116, 0.00000000],
+        [-6.27064580, -0.00117086, 0.00071786, 0.00117700, -0.00000116, 0.00000000],
+        [-6.27064976, -0.00117042, 0.00071759, 0.00117655, -0.00000116, 0.00000000],
+        [-6.27065370, -0.00116997, 0.00071732, 0.00117611, -0.00000116, 0.00000000],
+        [-6.27065763, -0.00116953, 0.00071705, 0.00117566, -0.00000116, 0.00000000],
+        [-6.27066155, -0.00116909, 0.00071678, 0.00117522, -0.00000116, 0.00000000],
+        [-6.27066546, -0.00116865, 0.00071651, 0.00117478, -0.00000116, 0.00000000],
+        [-6.27066935, -0.00116821, 0.00071624, 0.00117433, -0.00000116, 0.00000000],
+        [-6.27067323, -0.00116777, 0.00071597, 0.00117389, -0.00000116, 0.00000000],
+        [-6.27067711, -0.00116733, 0.00071570, 0.00117345, -0.00000116, 0.00000000],
+        [-6.27068096, -0.00116689, 0.00071543, 0.00117301, -0.00000116, 0.00000000],
+        [-6.27068481, -0.00116645, 0.00071516, 0.00117257, -0.00000116, 0.00000000],
+        [-6.27068865, -0.00116601, 0.00071489, 0.00117212, -0.00000116, 0.00000000],
+        [-6.27069247, -0.00116558, 0.00071462, 0.00117168, -0.00000116, 0.00000000],
+        [-6.27069628, -0.00116514, 0.00071435, 0.00117124, -0.00000116, 0.00000000],
+        [-6.27070008, -0.00116470, 0.00071409, 0.00117080, -0.00000116, 0.00000000],
+        [-6.27070387, -0.00116426, 0.00071382, 0.00117036, -0.00000116, 0.00000000],
+        [-6.27070765, -0.00116383, 0.00071355, 0.00116992, -0.00000116, 0.00000000],
+        [-6.27071141, -0.00116339, 0.00071328, 0.00116948, -0.00000116, 0.00000000],
+        [-6.27071516, -0.00116295, 0.00071301, 0.00116905, -0.00000116, 0.00000000],
+        [-6.27071891, -0.00116252, 0.00071275, 0.00116861, -0.00000116, 0.00000000],
+        [-6.27072264, -0.00116208, 0.00071248, 0.00116817, -0.00000116, 0.00000000],
+        [-6.27072636, -0.00116165, 0.00071221, 0.00116773, -0.00000116, 0.00000000],
+        [-6.27073006, -0.00116121, 0.00071195, 0.00116729, -0.00000116, 0.00000000],
+        [-6.27073376, -0.00116078, 0.00071168, 0.00116686, -0.00000116, 0.00000000],
+        [-6.27073744, -0.00116034, 0.00071141, 0.00116642, -0.00000116, 0.00000000],
+        [-6.27074112, -0.00115991, 0.00071115, 0.00116598, -0.00000116, 0.00000000],
+        [-6.27074478, -0.00115947, 0.00071088, 0.00116555, -0.00000116, 0.00000000],
+        [-6.27074843, -0.00115904, 0.00071062, 0.00116511, -0.00000116, 0.00000000],
+        [-6.27075207, -0.00115861, 0.00071035, 0.00116468, -0.00000116, 0.00000000],
+        [-6.27075570, -0.00115817, 0.00071008, 0.00116424, -0.00000116, 0.00000000],
+        [-6.27075932, -0.00115774, 0.00070982, 0.00116381, -0.00000116, 0.00000000],
+        [-6.27076293, -0.00115731, 0.00070955, 0.00116337, -0.00000116, 0.00000000],
+        [-6.27076652, -0.00115688, 0.00070929, 0.00116294, -0.00000116, 0.00000000],
+        [-6.27077011, -0.00115644, 0.00070902, 0.00116250, -0.00000116, 0.00000000],
+        [-6.27077368, -0.00115601, 0.00070876, 0.00116207, -0.00000116, 0.00000000],
+        [-6.27077724, -0.00115558, 0.00070850, 0.00116164, -0.00000116, 0.00000000],
+        [-6.27078080, -0.00115515, 0.00070823, 0.00116120, -0.00000116, 0.00000000],
+        [-6.27078434, -0.00115472, 0.00070797, 0.00116077, -0.00000116, 0.00000000],
+        [-6.27078787, -0.00115429, 0.00070770, 0.00116034, -0.00000116, 0.00000000],
+        [-6.27079139, -0.00115386, 0.00070744, 0.00115991, -0.00000116, 0.00000000],
+        [-6.27079490, -0.00115343, 0.00070718, 0.00115947, -0.00000116, 0.00000000],
+        [-6.27079840, -0.00115300, 0.00070692, 0.00115904, -0.00000116, 0.00000000],
+        [-6.27080189, -0.00115257, 0.00070665, 0.00115861, -0.00000116, 0.00000000],
+        [-6.27080537, -0.00115215, 0.00070639, 0.00115818, -0.00000116, 0.00000000],
+        [-6.27080883, -0.00115172, 0.00070613, 0.00115775, -0.00000116, 0.00000000],
+        [-6.27081229, -0.00115129, 0.00070586, 0.00115732, -0.00000116, 0.00000000],
+        [-6.27081574, -0.00115086, 0.00070560, 0.00115689, -0.00000116, 0.00000000],
+        [-6.27081917, -0.00115044, 0.00070534, 0.00115646, -0.00000116, 0.00000000],
+        [-6.27082260, -0.00115001, 0.00070508, 0.00115603, -0.00000116, 0.00000000],
+        [-6.27082601, -0.00114958, 0.00070482, 0.00115560, -0.00000116, 0.00000000],
+        [-6.27082942, -0.00114916, 0.00070456, 0.00115517, -0.00000116, 0.00000000],
+        [-6.27083281, -0.00114873, 0.00070430, 0.00115475, -0.00000116, 0.00000000],
+        [-6.27083620, -0.00114830, 0.00070403, 0.00115432, -0.00000116, 0.00000000],
+        [-6.27083957, -0.00114788, 0.00070377, 0.00115389, -0.00000116, 0.00000000],
+        [-6.27084294, -0.00114745, 0.00070351, 0.00115346, -0.00000116, 0.00000000],
+        [-6.27084629, -0.00114703, 0.00070325, 0.00115304, -0.00000116, 0.00000000],
+        [-6.27084964, -0.00114661, 0.00070299, 0.00115261, -0.00000116, 0.00000000],
+        [-6.27085297, -0.00114618, 0.00070273, 0.00115218, -0.00000116, 0.00000000],
+        [-6.27085630, -0.00114576, 0.00070247, 0.00115176, -0.00000116, 0.00000000],
+        [-6.27085961, -0.00114533, 0.00070221, 0.00115133, -0.00000116, 0.00000000],
+        [-6.27086292, -0.00114491, 0.00070195, 0.00115091, -0.00000116, 0.00000000],
+        [-6.27086621, -0.00114449, 0.00070169, 0.00115048, -0.00000116, 0.00000000],
+        [-6.27086950, -0.00114407, 0.00070144, 0.00115006, -0.00000116, 0.00000000],
+        [-6.27087277, -0.00114364, 0.00070118, 0.00114963, -0.00000116, 0.00000000],
+        [-6.27087604, -0.00114322, 0.00070092, 0.00114921, -0.00000116, 0.00000000],
+        [-6.27087929, -0.00114280, 0.00070066, 0.00114878, -0.00000116, 0.00000000],
+        [-6.27088254, -0.00114238, 0.00070040, 0.00114836, -0.00000116, 0.00000000],
+        [-6.27088577, -0.00114196, 0.00070014, 0.00114794, -0.00000116, 0.00000000],
+        [-6.27088900, -0.00114154, 0.00069989, 0.00114751, -0.00000116, 0.00000000],
+        [-6.27089222, -0.00114112, 0.00069963, 0.00114709, -0.00000116, 0.00000000],
+        [-6.27089543, -0.00114070, 0.00069937, 0.00114667, -0.00000116, 0.00000000],
+        [-6.27089862, -0.00114028, 0.00069911, 0.00114625, -0.00000116, 0.00000000],
+        [-6.27090181, -0.00113986, 0.00069886, 0.00114582, -0.00000116, 0.00000000],
+        [-6.27090499, -0.00113944, 0.00069860, 0.00114540, -0.00000116, 0.00000000],
+        [-6.27090816, -0.00113902, 0.00069834, 0.00114498, -0.00000116, 0.00000000],
+        [-6.27091132, -0.00113860, 0.00069809, 0.00114456, -0.00000116, 0.00000000],
+        [-6.27091447, -0.00113818, 0.00069783, 0.00114414, -0.00000116, 0.00000000],
+        [-6.27091762, -0.00113777, 0.00069757, 0.00114372, -0.00000116, 0.00000000],
+        [-6.27092075, -0.00113735, 0.00069732, 0.00114330, -0.00000116, 0.00000000],
+        [-6.27092387, -0.00113693, 0.00069706, 0.00114288, -0.00000116, 0.00000000],
+        [-6.27092699, -0.00113651, 0.00069681, 0.00114246, -0.00000116, 0.00000000],
+        [-6.27093009, -0.00113610, 0.00069655, 0.00114204, -0.00000116, 0.00000000],
+        [-6.27093319, -0.00113568, 0.00069629, 0.00114162, -0.00000116, 0.00000000],
+        [-6.27093627, -0.00113527, 0.00069604, 0.00114121, -0.00000116, 0.00000000],
+        [-6.27093935, -0.00113485, 0.00069578, 0.00114079, -0.00000116, 0.00000000],
+        [-6.27094242, -0.00113443, 0.00069553, 0.00114037, -0.00000116, 0.00000000],
+        [-6.27094548, -0.00113402, 0.00069528, 0.00113995, -0.00000116, 0.00000000],
+        [-6.27094853, -0.00113360, 0.00069502, 0.00113954, -0.00000116, 0.00000000],
+        [-6.27095157, -0.00113319, 0.00069477, 0.00113912, -0.00000116, 0.00000000],
+        [-6.27095461, -0.00113278, 0.00069451, 0.00113870, -0.00000116, 0.00000000],
+        [-6.27095763, -0.00113236, 0.00069426, 0.00113829, -0.00000116, 0.00000000],
+        [-6.27096065, -0.00113195, 0.00069401, 0.00113787, -0.00000116, 0.00000000],
+        [-6.27096365, -0.00113154, 0.00069375, 0.00113745, -0.00000116, 0.00000000],
+        [-6.27096665, -0.00113112, 0.00069350, 0.00113704, -0.00000116, 0.00000000],
+        [-6.27096964, -0.00113071, 0.00069325, 0.00113662, -0.00000116, 0.00000000],
+        [-6.27097262, -0.00113030, 0.00069299, 0.00113621, -0.00000116, 0.00000000],
+        [-6.27097559, -0.00112989, 0.00069274, 0.00113580, -0.00000116, 0.00000000],
+        [-6.27097856, -0.00112947, 0.00069249, 0.00113538, -0.00000116, 0.00000000],
+        [-6.27098151, -0.00112906, 0.00069224, 0.00113497, -0.00000116, 0.00000000],
+        [-6.27098446, -0.00112865, 0.00069198, 0.00113455, -0.00000116, 0.00000000],
+        [-6.27098739, -0.00112824, 0.00069173, 0.00113414, -0.00000116, 0.00000000],
+        [-6.27099032, -0.00112783, 0.00069148, 0.00113373, -0.00000116, 0.00000000],
+        [-6.27099324, -0.00112742, 0.00069123, 0.00113332, -0.00000116, 0.00000000],
+        [-6.27099616, -0.00112701, 0.00069098, 0.00113290, -0.00000116, 0.00000000],
+        [-6.27099906, -0.00112660, 0.00069072, 0.00113249, -0.00000116, 0.00000000],
+        [-6.27100196, -0.00112619, 0.00069047, 0.00113208, -0.00000116, 0.00000000],
+        [-6.27100484, -0.00112578, 0.00069022, 0.00113167, -0.00000116, 0.00000000],
+        [-6.27100772, -0.00112537, 0.00068997, 0.00113126, -0.00000116, 0.00000000],
+        [-6.27101059, -0.00112496, 0.00068972, 0.00113085, -0.00000116, 0.00000000],
+        [-6.27101345, -0.00112455, 0.00068947, 0.00113044, -0.00000116, 0.00000000],
+        [-6.27101631, -0.00112415, 0.00068922, 0.00113003, -0.00000116, 0.00000000],
+        [-6.27101915, -0.00112374, 0.00068897, 0.00112962, -0.00000116, 0.00000000],
+        [-6.27102199, -0.00112333, 0.00068872, 0.00112921, -0.00000116, 0.00000000],
+        [-6.27102482, -0.00112292, 0.00068847, 0.00112880, -0.00000116, 0.00000000],
+        [-6.27102764, -0.00112252, 0.00068822, 0.00112839, -0.00000116, 0.00000000],
+        [-6.27103045, -0.00112211, 0.00068797, 0.00112798, -0.00000116, 0.00000000],
+        [-6.27103326, -0.00112171, 0.00068772, 0.00112757, -0.00000116, 0.00000000],
+        [-6.27103606, -0.00112130, 0.00068747, 0.00112716, -0.00000116, 0.00000000],
+        [-6.27103885, -0.00112089, 0.00068723, 0.00112675, -0.00000116, 0.00000000],
+        [-6.27104163, -0.00112049, 0.00068698, 0.00112635, -0.00000116, 0.00000000],
+        [-6.27104440, -0.00112008, 0.00068673, 0.00112594, -0.00000116, 0.00000000],
+        [-6.27104717, -0.00111968, 0.00068648, 0.00112553, -0.00000116, 0.00000000],
+        [-6.27104992, -0.00111927, 0.00068623, 0.00112513, -0.00000116, 0.00000000],
+        [-6.27105267, -0.00111887, 0.00068599, 0.00112472, -0.00000116, 0.00000000],
+        [-6.27105541, -0.00111847, 0.00068574, 0.00112431, -0.00000116, 0.00000000],
+        [-6.27105815, -0.00111806, 0.00068549, 0.00112391, -0.00000116, 0.00000000],
+        [-6.27106088, -0.00111766, 0.00068524, 0.00112350, -0.00000116, 0.00000000],
+        [-6.27106359, -0.00111726, 0.00068500, 0.00112310, -0.00000116, 0.00000000],
+        [-6.27106630, -0.00111685, 0.00068475, 0.00112269, -0.00000116, 0.00000000],
+        [-6.27106901, -0.00111645, 0.00068450, 0.00112229, -0.00000116, 0.00000000],
+        [-6.27107170, -0.00111605, 0.00068426, 0.00112188, -0.00000116, 0.00000000],
+        [-6.27107439, -0.00111565, 0.00068401, 0.00112148, -0.00000116, 0.00000000],
+        [-6.27107707, -0.00111525, 0.00068376, 0.00112107, -0.00000116, 0.00000000],
+        [-6.27107974, -0.00111484, 0.00068352, 0.00112067, -0.00000116, 0.00000000],
+        [-6.27108241, -0.00111444, 0.00068327, 0.00112027, -0.00000116, 0.00000000],
+        [-6.27108507, -0.00111404, 0.00068302, 0.00111987, -0.00000116, 0.00000000],
+        [-6.27108772, -0.00111364, 0.00068278, 0.00111946, -0.00000116, 0.00000000],
+        [-6.27109036, -0.00111324, 0.00068253, 0.00111906, -0.00000116, 0.00000000],
+        [-6.27109300, -0.00111284, 0.00068229, 0.00111866, -0.00000116, 0.00000000],
+        [-6.27109562, -0.00111244, 0.00068204, 0.00111826, -0.00000116, 0.00000000],
+        [-6.27109825, -0.00111204, 0.00068180, 0.00111786, -0.00000116, 0.00000000],
+        [-6.27110086, -0.00111164, 0.00068155, 0.00111745, -0.00000116, 0.00000000],
+        [-6.27110347, -0.00111125, 0.00068131, 0.00111705, -0.00000116, 0.00000000],
+        [-6.27110606, -0.00111085, 0.00068106, 0.00111665, -0.00000116, 0.00000000],
+        [-6.27110866, -0.00111045, 0.00068082, 0.00111625, -0.00000116, 0.00000000],
+        [-6.27111124, -0.00111005, 0.00068058, 0.00111585, -0.00000116, 0.00000000],
+        [-6.27111382, -0.00110965, 0.00068033, 0.00111545, -0.00000116, 0.00000000],
+        [-6.27111639, -0.00110926, 0.00068009, 0.00111505, -0.00000116, 0.00000000],
+        [-6.27111895, -0.00110886, 0.00067985, 0.00111465, -0.00000116, 0.00000000],
+        [-6.27112151, -0.00110846, 0.00067960, 0.00111425, -0.00000116, 0.00000000],
+        [-6.27112405, -0.00110807, 0.00067936, 0.00111386, -0.00000116, 0.00000000],
+        [-6.27112660, -0.00110767, 0.00067912, 0.00111346, -0.00000116, 0.00000000],
+        [-6.27112913, -0.00110728, 0.00067887, 0.00111306, -0.00000116, 0.00000000],
+        [-6.27113166, -0.00110688, 0.00067863, 0.00111266, -0.00000116, 0.00000000],
+        [-6.27113418, -0.00110648, 0.00067839, 0.00111226, -0.00000116, 0.00000000],
+        [-6.27113669, -0.00110609, 0.00067815, 0.00111187, -0.00000116, 0.00000000],
+        [-6.27113920, -0.00110569, 0.00067790, 0.00111147, -0.00000116, 0.00000000],
+        [-6.27114170, -0.00110530, 0.00067766, 0.00111107, -0.00000116, 0.00000000],
+        [-6.27114419, -0.00110491, 0.00067742, 0.00111068, -0.00000116, 0.00000000],
+        [-6.27114668, -0.00110451, 0.00067718, 0.00111028, -0.00000116, 0.00000000],
+        [-6.27114915, -0.00110412, 0.00067694, 0.00110989, -0.00000116, 0.00000000],
+        [-6.27115163, -0.00110372, 0.00067670, 0.00110949, -0.00000116, 0.00000000],
+        [-6.27115409, -0.00110333, 0.00067646, 0.00110910, -0.00000116, 0.00000000],
+        [-6.27115655, -0.00110294, 0.00067621, 0.00110870, -0.00000116, 0.00000000],
+        [-6.27115900, -0.00110255, 0.00067597, 0.00110831, -0.00000116, 0.00000000],
+        [-6.27116145, -0.00110215, 0.00067573, 0.00110791, -0.00000116, 0.00000000],
+        [-6.27116389, -0.00110176, 0.00067549, 0.00110752, -0.00000116, 0.00000000],
+        [-6.27116632, -0.00110137, 0.00067525, 0.00110712, -0.00000116, 0.00000000],
+        [-6.27116874, -0.00110098, 0.00067501, 0.00110673, -0.00000116, 0.00000000],
+        [-6.27117116, -0.00110059, 0.00067477, 0.00110634, -0.00000115, 0.00000000],
+        [-6.27117357, -0.00110020, 0.00067453, 0.00110594, -0.00000115, 0.00000000],
+        [-6.27117598, -0.00109981, 0.00067429, 0.00110555, -0.00000115, 0.00000000],
+        [-6.27117838, -0.00109942, 0.00067405, 0.00110516, -0.00000115, 0.00000000],
+        [-6.27118077, -0.00109903, 0.00067381, 0.00110477, -0.00000115, 0.00000000],
+        [-6.27118315, -0.00109864, 0.00067358, 0.00110437, -0.00000115, 0.00000000],
+        [-6.27118553, -0.00109825, 0.00067334, 0.00110398, -0.00000115, 0.00000000],
+        [-6.27118791, -0.00109786, 0.00067310, 0.00110359, -0.00000115, 0.00000000],
+        [-6.27119027, -0.00109747, 0.00067286, 0.00110320, -0.00000115, 0.00000000],
+        [-6.27119263, -0.00109708, 0.00067262, 0.00110281, -0.00000115, 0.00000000],
+        [-6.27119499, -0.00109669, 0.00067238, 0.00110242, -0.00000115, 0.00000000],
+        [-6.27119733, -0.00109630, 0.00067214, 0.00110203, -0.00000115, 0.00000000],
+        [-6.27119968, -0.00109592, 0.00067191, 0.00110164, -0.00000115, 0.00000000],
+        [-6.27120201, -0.00109553, 0.00067167, 0.00110125, -0.00000115, 0.00000000],
+        [-6.27120434, -0.00109514, 0.00067143, 0.00110086, -0.00000115, 0.00000000],
+        [-6.27120666, -0.00109475, 0.00067119, 0.00110047, -0.00000115, 0.00000000],
+        [-6.27120898, -0.00109437, 0.00067096, 0.00110008, -0.00000115, 0.00000000],
+        [-6.27121129, -0.00109398, 0.00067072, 0.00109969, -0.00000115, 0.00000000],
+        [-6.27121359, -0.00109360, 0.00067048, 0.00109930, -0.00000115, 0.00000000],
+        [-6.27121589, -0.00109321, 0.00067025, 0.00109892, -0.00000115, 0.00000000],
+        [-6.27121818, -0.00109282, 0.00067001, 0.00109853, -0.00000115, 0.00000000],
+        [-6.27122046, -0.00109244, 0.00066977, 0.00109814, -0.00000115, 0.00000000],
+        [-6.27122274, -0.00109205, 0.00066954, 0.00109775, -0.00000115, 0.00000000],
+        [-6.27122501, -0.00109167, 0.00066930, 0.00109737, -0.00000115, 0.00000000],
+        [-6.27122728, -0.00109128, 0.00066907, 0.00109698, -0.00000115, 0.00000000],
+        [-6.27122954, -0.00109090, 0.00066883, 0.00109659, -0.00000115, 0.00000000],
+        [-6.27123179, -0.00109052, 0.00066859, 0.00109621, -0.00000115, 0.00000000],
+        [-6.27123404, -0.00109013, 0.00066836, 0.00109582, -0.00000115, 0.00000000],
+        [-6.27123629, -0.00108975, 0.00066812, 0.00109544, -0.00000115, 0.00000000],
+        [-6.27123852, -0.00108937, 0.00066789, 0.00109505, -0.00000115, 0.00000000],
+        [-6.27124075, -0.00108898, 0.00066765, 0.00109467, -0.00000115, 0.00000000],
+        [-6.27124298, -0.00108860, 0.00066742, 0.00109428, -0.00000115, 0.00000000],
+        [-6.27124520, -0.00108822, 0.00066718, 0.00109390, -0.00000115, 0.00000000],
+        [-6.27124741, -0.00108784, 0.00066695, 0.00109351, -0.00000115, 0.00000000],
+        [-6.27124962, -0.00108745, 0.00066672, 0.00109313, -0.00000115, 0.00000000],
+        [-6.27125182, -0.00108707, 0.00066648, 0.00109275, -0.00000115, 0.00000000],
+        [-6.27125401, -0.00108669, 0.00066625, 0.00109236, -0.00000115, 0.00000000],
+        [-6.27125620, -0.00108631, 0.00066601, 0.00109198, -0.00000115, 0.00000000],
+        [-6.27125839, -0.00108593, 0.00066578, 0.00109160, -0.00000115, 0.00000000],
+        [-6.27126057, -0.00108555, 0.00066555, 0.00109121, -0.00000115, 0.00000000],
+        [-6.27126274, -0.00108517, 0.00066531, 0.00109083, -0.00000115, 0.00000000],
+        [-6.27126490, -0.00108479, 0.00066508, 0.00109045, -0.00000115, 0.00000000],
+        [-6.27126707, -0.00108441, 0.00066485, 0.00109007, -0.00000115, 0.00000000],
+        [-6.27126922, -0.00108403, 0.00066461, 0.00108969, -0.00000115, 0.00000000],
+        [-6.27127137, -0.00108365, 0.00066438, 0.00108930, -0.00000115, 0.00000000],
+        [-6.27127351, -0.00108327, 0.00066415, 0.00108892, -0.00000115, 0.00000000],
+        [-6.27127565, -0.00108289, 0.00066392, 0.00108854, -0.00000115, 0.00000000],
+        [-6.27127779, -0.00108251, 0.00066369, 0.00108816, -0.00000115, 0.00000000],
+        [-6.27127991, -0.00108214, 0.00066345, 0.00108778, -0.00000115, 0.00000000],
+        [-6.27128204, -0.00108176, 0.00066322, 0.00108740, -0.00000115, 0.00000000],
+        [-6.27128415, -0.00108138, 0.00066299, 0.00108702, -0.00000115, 0.00000000],
+        [-6.27128626, -0.00108100, 0.00066276, 0.00108664, -0.00000115, 0.00000000],
+        [-6.27128837, -0.00108063, 0.00066253, 0.00108626, -0.00000115, 0.00000000],
+        [-6.27129047, -0.00108025, 0.00066230, 0.00108588, -0.00000115, 0.00000000],
+        [-6.27129256, -0.00107987, 0.00066206, 0.00108551, -0.00000115, 0.00000000],
+        [-6.27129465, -0.00107950, 0.00066183, 0.00108513, -0.00000115, 0.00000000],
+        [-6.27129674, -0.00107912, 0.00066160, 0.00108475, -0.00000115, 0.00000000],
+        [-6.27129881, -0.00107874, 0.00066137, 0.00108437, -0.00000115, 0.00000000],
+        [-6.27130089, -0.00107837, 0.00066114, 0.00108399, -0.00000115, 0.00000000],
+        [-6.27130295, -0.00107799, 0.00066091, 0.00108362, -0.00000115, 0.00000000],
+        [-6.27130502, -0.00107762, 0.00066068, 0.00108324, -0.00000115, 0.00000000],
+        [-6.27130707, -0.00107724, 0.00066045, 0.00108286, -0.00000115, 0.00000000],
+        [-6.27130913, -0.00107687, 0.00066022, 0.00108249, -0.00000115, 0.00000000],
+        [-6.27131117, -0.00107649, 0.00065999, 0.00108211, -0.00000115, 0.00000000],
+        [-6.27131321, -0.00107612, 0.00065976, 0.00108173, -0.00000115, 0.00000000],
+        [-6.27131525, -0.00107575, 0.00065953, 0.00108136, -0.00000115, 0.00000000],
+        [-6.27131728, -0.00107537, 0.00065931, 0.00108098, -0.00000115, 0.00000000],
+        [-6.27131930, -0.00107500, 0.00065908, 0.00108061, -0.00000115, 0.00000000],
+        [-6.27132133, -0.00107463, 0.00065885, 0.00108023, -0.00000115, 0.00000000],
+        [-6.27132334, -0.00107425, 0.00065862, 0.00107986, -0.00000115, 0.00000000],
+        [-6.27132535, -0.00107388, 0.00065839, 0.00107948, -0.00000115, 0.00000000],
+        [-6.27132736, -0.00107351, 0.00065816, 0.00107911, -0.00000115, 0.00000000],
+        [-6.27132936, -0.00107314, 0.00065793, 0.00107873, -0.00000115, 0.00000000],
+        [-6.27133135, -0.00107277, 0.00065771, 0.00107836, -0.00000115, 0.00000000],
+        [-6.27133334, -0.00107239, 0.00065748, 0.00107799, -0.00000115, 0.00000000],
+        [-6.27133532, -0.00107202, 0.00065725, 0.00107761, -0.00000115, 0.00000000],
+        [-6.27133730, -0.00107165, 0.00065702, 0.00107724, -0.00000115, 0.00000000],
+        [-6.27133928, -0.00107128, 0.00065680, 0.00107687, -0.00000115, 0.00000000],
+        [-6.27134125, -0.00107091, 0.00065657, 0.00107650, -0.00000115, 0.00000000],
+        [-6.27134321, -0.00107054, 0.00065634, 0.00107612, -0.00000115, 0.00000000],
+        [-6.27134517, -0.00107017, 0.00065611, 0.00107575, -0.00000115, 0.00000000],
+        [-6.27134713, -0.00106980, 0.00065589, 0.00107538, -0.00000115, 0.00000000],
+        [-6.27134908, -0.00106943, 0.00065566, 0.00107501, -0.00000115, 0.00000000],
+        [-6.27135102, -0.00106906, 0.00065543, 0.00107464, -0.00000115, 0.00000000],
+        [-6.27135296, -0.00106870, 0.00065521, 0.00107427, -0.00000115, 0.00000000],
+        [-6.27135490, -0.00106833, 0.00065498, 0.00107390, -0.00000115, 0.00000000],
+        [-6.27135683, -0.00106796, 0.00065476, 0.00107353, -0.00000115, 0.00000000],
+        [-6.27135875, -0.00106759, 0.00065453, 0.00107316, -0.00000115, 0.00000000],
+        [-6.27136067, -0.00106722, 0.00065430, 0.00107279, -0.00000115, 0.00000000],
+        [-6.27136259, -0.00106685, 0.00065408, 0.00107242, -0.00000115, 0.00000000],
+        [-6.27136450, -0.00106649, 0.00065385, 0.00107205, -0.00000115, 0.00000000],
+        [-6.27136641, -0.00106612, 0.00065363, 0.00107168, -0.00000115, 0.00000000],
+        [-6.27136831, -0.00106575, 0.00065340, 0.00107131, -0.00000115, 0.00000000],
+        [-6.27137021, -0.00106539, 0.00065318, 0.00107094, -0.00000115, 0.00000000],
+        [-6.27137210, -0.00106502, 0.00065295, 0.00107057, -0.00000115, 0.00000000],
+        [-6.27137399, -0.00106465, 0.00065273, 0.00107020, -0.00000115, 0.00000000],
+        [-6.27137587, -0.00106429, 0.00065250, 0.00106984, -0.00000115, 0.00000000],
+        [-6.27137775, -0.00106392, 0.00065228, 0.00106947, -0.00000115, 0.00000000],
+        [-6.27137962, -0.00106356, 0.00065206, 0.00106910, -0.00000115, 0.00000000],
+        [-6.27138149, -0.00106319, 0.00065183, 0.00106873, -0.00000115, 0.00000000],
+        [-6.27138335, -0.00106283, 0.00065161, 0.00106837, -0.00000115, 0.00000000],
+        [-6.27138521, -0.00106246, 0.00065139, 0.00106800, -0.00000115, 0.00000000],
+        [-6.27138707, -0.00106210, 0.00065116, 0.00106763, -0.00000115, 0.00000000],
+        [-6.27138892, -0.00106173, 0.00065094, 0.00106727, -0.00000115, 0.00000000],
+        [-6.27139077, -0.00106137, 0.00065072, 0.00106690, -0.00000115, 0.00000000],
+        [-6.27139261, -0.00106101, 0.00065049, 0.00106654, -0.00000115, 0.00000000],
+        [-6.27139445, -0.00106064, 0.00065027, 0.00106617, -0.00000115, 0.00000000],
+        [-6.27139628, -0.00106028, 0.00065005, 0.00106581, -0.00000115, 0.00000000],
+        [-6.27139811, -0.00105992, 0.00064982, 0.00106544, -0.00000115, 0.00000000],
+        [-6.27139993, -0.00105956, 0.00064960, 0.00106508, -0.00000115, 0.00000000],
+        [-6.27140175, -0.00105919, 0.00064938, 0.00106471, -0.00000115, 0.00000000],
+        [-6.27140356, -0.00105883, 0.00064916, 0.00106435, -0.00000115, 0.00000000],
+        [-6.27140537, -0.00105847, 0.00064893, 0.00106399, -0.00000115, 0.00000000],
+        [-6.27140718, -0.00105811, 0.00064871, 0.00106362, -0.00000115, 0.00000000],
+        [-6.27140898, -0.00105775, 0.00064849, 0.00106326, -0.00000115, 0.00000000],
+        [-6.27141078, -0.00105739, 0.00064827, 0.00106290, -0.00000115, 0.00000000],
+        [-6.27141257, -0.00105702, 0.00064805, 0.00106253, -0.00000115, 0.00000000],
+        [-6.27141436, -0.00105666, 0.00064783, 0.00106217, -0.00000115, 0.00000000],
+        [-6.27141614, -0.00105630, 0.00064761, 0.00106181, -0.00000115, 0.00000000],
+        [-6.27141792, -0.00105594, 0.00064739, 0.00106145, -0.00000115, 0.00000000],
+        [-6.27141970, -0.00105558, 0.00064716, 0.00106108, -0.00000115, 0.00000000],
+        [-6.27142147, -0.00105522, 0.00064694, 0.00106072, -0.00000115, 0.00000000],
+        [-6.27142324, -0.00105486, 0.00064672, 0.00106036, -0.00000115, 0.00000000],
+        [-6.27142500, -0.00105451, 0.00064650, 0.00106000, -0.00000115, 0.00000000],
+        [-6.27142676, -0.00105415, 0.00064628, 0.00105964, -0.00000115, 0.00000000],
+        [-6.27142851, -0.00105379, 0.00064606, 0.00105928, -0.00000115, 0.00000000],
+        [-6.27143026, -0.00105343, 0.00064584, 0.00105892, -0.00000115, 0.00000000],
+        [-6.27143201, -0.00105307, 0.00064562, 0.00105856, -0.00000115, 0.00000000],
+        [-6.27143375, -0.00105271, 0.00064540, 0.00105820, -0.00000115, 0.00000000],
+        [-6.27143549, -0.00105236, 0.00064518, 0.00105784, -0.00000115, 0.00000000],
+        [-6.27143722, -0.00105200, 0.00064496, 0.00105748, -0.00000115, 0.00000000],
+        [-6.27143895, -0.00105164, 0.00064475, 0.00105712, -0.00000115, 0.00000000],
+        [-6.27144068, -0.00105128, 0.00064453, 0.00105676, -0.00000115, 0.00000000],
+        [-6.27144240, -0.00105093, 0.00064431, 0.00105640, -0.00000115, 0.00000000],
+        [-6.27144412, -0.00105057, 0.00064409, 0.00105604, -0.00000115, 0.00000000],
+        [-6.27144583, -0.00105021, 0.00064387, 0.00105569, -0.00000115, 0.00000000],
+        [-6.27144754, -0.00104986, 0.00064365, 0.00105533, -0.00000115, 0.00000000],
+        [-6.27144924, -0.00104950, 0.00064343, 0.00105497, -0.00000115, 0.00000000],
+        [-6.27145094, -0.00104915, 0.00064322, 0.00105461, -0.00000115, 0.00000000],
+        [-6.27145264, -0.00104879, 0.00064300, 0.00105425, -0.00000115, 0.00000000],
+        [-6.27145433, -0.00104844, 0.00064278, 0.00105390, -0.00000115, 0.00000000],
+        [-6.27145602, -0.00104808, 0.00064256, 0.00105354, -0.00000115, 0.00000000],
+        [-6.27145771, -0.00104773, 0.00064234, 0.00105318, -0.00000115, 0.00000000],
+        [-6.27145939, -0.00104737, 0.00064213, 0.00105283, -0.00000115, 0.00000000],
+        [-6.27146107, -0.00104702, 0.00064191, 0.00105247, -0.00000115, 0.00000000],
+        [-6.27146274, -0.00104667, 0.00064169, 0.00105212, -0.00000115, 0.00000000],
+        [-6.27146441, -0.00104631, 0.00064148, 0.00105176, -0.00000115, 0.00000000],
+        [-6.27146607, -0.00104596, 0.00064126, 0.00105141, -0.00000115, 0.00000000],
+        [-6.27146774, -0.00104561, 0.00064104, 0.00105105, -0.00000115, 0.00000000],
+        [-6.27146939, -0.00104525, 0.00064083, 0.00105070, -0.00000115, 0.00000000],
+        [-6.27147105, -0.00104490, 0.00064061, 0.00105034, -0.00000115, 0.00000000],
+        [-6.27147270, -0.00104455, 0.00064039, 0.00104999, -0.00000115, 0.00000000],
+        [-6.27147434, -0.00104420, 0.00064018, 0.00104963, -0.00000115, 0.00000000],
+        [-6.27147599, -0.00104384, 0.00063996, 0.00104928, -0.00000115, 0.00000000],
+        [-6.27147762, -0.00104349, 0.00063975, 0.00104893, -0.00000115, 0.00000000],
+        [-6.27147926, -0.00104314, 0.00063953, 0.00104857, -0.00000115, 0.00000000],
+        [-6.27148089, -0.00104279, 0.00063931, 0.00104822, -0.00000115, 0.00000000],
+        [-6.27148252, -0.00104244, 0.00063910, 0.00104787, -0.00000115, 0.00000000],
+        [-6.27148414, -0.00104209, 0.00063888, 0.00104751, -0.00000115, 0.00000000],
+        [-6.27148576, -0.00104174, 0.00063867, 0.00104716, -0.00000115, 0.00000000],
+        [-6.27148738, -0.00104139, 0.00063845, 0.00104681, -0.00000115, 0.00000000],
+        [-6.27148899, -0.00104104, 0.00063824, 0.00104646, -0.00000115, 0.00000000],
+        [-6.27149060, -0.00104069, 0.00063802, 0.00104610, -0.00000115, 0.00000000],
+        [-6.27149220, -0.00104034, 0.00063781, 0.00104575, -0.00000115, 0.00000000],
+        [-6.27149380, -0.00103999, 0.00063760, 0.00104540, -0.00000115, 0.00000000],
+        [-6.27149540, -0.00103964, 0.00063738, 0.00104505, -0.00000115, 0.00000000],
+        [-6.27149699, -0.00103929, 0.00063717, 0.00104470, -0.00000115, 0.00000000],
+        [-6.27149859, -0.00103894, 0.00063695, 0.00104435, -0.00000115, 0.00000000],
+        [-6.27150017, -0.00103859, 0.00063674, 0.00104400, -0.00000115, 0.00000000],
+        [-6.27150175, -0.00103824, 0.00063653, 0.00104365, -0.00000115, 0.00000000],
+        [-6.27150333, -0.00103790, 0.00063631, 0.00104330, -0.00000115, 0.00000000],
+        [-6.27150491, -0.00103755, 0.00063610, 0.00104295, -0.00000115, 0.00000000],
+        [-6.27150648, -0.00103720, 0.00063589, 0.00104260, -0.00000115, 0.00000000],
+        [-6.27150805, -0.00103685, 0.00063567, 0.00104225, -0.00000115, 0.00000000],
+        [-6.27150962, -0.00103651, 0.00063546, 0.00104190, -0.00000115, 0.00000000],
+        [-6.27151118, -0.00103616, 0.00063525, 0.00104155, -0.00000115, 0.00000000],
+        [-6.27151274, -0.00103581, 0.00063503, 0.00104120, -0.00000115, 0.00000000],
+        [-6.27151429, -0.00103547, 0.00063482, 0.00104086, -0.00000115, 0.00000000],
+        [-6.27151584, -0.00103512, 0.00063461, 0.00104051, -0.00000115, 0.00000000],
+        [-6.27151739, -0.00103478, 0.00063440, 0.00104016, -0.00000115, 0.00000000],
+        [-6.27151893, -0.00103443, 0.00063419, 0.00103981, -0.00000115, 0.00000000],
+        [-6.27152048, -0.00103408, 0.00063397, 0.00103947, -0.00000115, 0.00000000],
+        [-6.27152201, -0.00103374, 0.00063376, 0.00103912, -0.00000115, 0.00000000],
+        [-6.27152355, -0.00103339, 0.00063355, 0.00103877, -0.00000115, 0.00000000],
+        [-6.27152508, -0.00103305, 0.00063334, 0.00103843, -0.00000115, 0.00000000],
+        [-6.27152660, -0.00103270, 0.00063313, 0.00103808, -0.00000115, 0.00000000],
+        [-6.27152813, -0.00103236, 0.00063292, 0.00103773, -0.00000115, 0.00000000],
+        [-6.27152965, -0.00103202, 0.00063271, 0.00103739, -0.00000115, 0.00000000],
+        [-6.27153117, -0.00103167, 0.00063249, 0.00103704, -0.00000115, 0.00000000],
+        [-6.27153268, -0.00103133, 0.00063228, 0.00103670, -0.00000115, 0.00000000],
+        [-6.27153419, -0.00103099, 0.00063207, 0.00103635, -0.00000115, 0.00000000],
+        [-6.27153570, -0.00103064, 0.00063186, 0.00103601, -0.00000115, 0.00000000],
+        [-6.27153720, -0.00103030, 0.00063165, 0.00103566, -0.00000115, 0.00000000],
+        [-6.27153870, -0.00102996, 0.00063144, 0.00103532, -0.00000115, 0.00000000],
+        [-6.27154020, -0.00102961, 0.00063123, 0.00103497, -0.00000115, 0.00000000],
+        [-6.27154169, -0.00102927, 0.00063102, 0.00103463, -0.00000115, 0.00000000],
+        [-6.27154318, -0.00102893, 0.00063081, 0.00103428, -0.00000115, 0.00000000],
+        [-6.27154467, -0.00102859, 0.00063060, 0.00103394, -0.00000115, 0.00000000],
+        [-6.27154615, -0.00102825, 0.00063039, 0.00103360, -0.00000115, 0.00000000],
+        [-6.27154763, -0.00102791, 0.00063018, 0.00103325, -0.00000115, 0.00000000],
+        [-6.27154911, -0.00102756, 0.00062997, 0.00103291, -0.00000115, 0.00000000],
+        [-6.27155059, -0.00102722, 0.00062976, 0.00103257, -0.00000115, 0.00000000],
+        [-6.27155206, -0.00102688, 0.00062956, 0.00103223, -0.00000115, 0.00000000],
+        [-6.27155352, -0.00102654, 0.00062935, 0.00103188, -0.00000115, 0.00000000],
+        [-6.27155499, -0.00102620, 0.00062914, 0.00103154, -0.00000115, 0.00000000],
+        [-6.27155645, -0.00102586, 0.00062893, 0.00103120, -0.00000115, 0.00000000],
+        [-6.27155791, -0.00102552, 0.00062872, 0.00103086, -0.00000115, 0.00000000],
+        [-6.27155936, -0.00102518, 0.00062851, 0.00103052, -0.00000115, 0.00000000],
+        [-6.27156082, -0.00102484, 0.00062830, 0.00103018, -0.00000115, 0.00000000],
+        [-6.27156226, -0.00102451, 0.00062810, 0.00102983, -0.00000115, 0.00000000],
+        [-6.27156371, -0.00102417, 0.00062789, 0.00102949, -0.00000115, 0.00000000],
+        [-6.27156515, -0.00102383, 0.00062768, 0.00102915, -0.00000115, 0.00000000],
+        [-6.27156659, -0.00102349, 0.00062747, 0.00102881, -0.00000115, 0.00000000],
+        [-6.27156803, -0.00102315, 0.00062727, 0.00102847, -0.00000115, 0.00000000],
+        [-6.27156946, -0.00102281, 0.00062706, 0.00102813, -0.00000115, 0.00000000],
+        [-6.27157089, -0.00102248, 0.00062685, 0.00102779, -0.00000115, 0.00000000],
+        [-6.27157232, -0.00102214, 0.00062664, 0.00102745, -0.00000115, 0.00000000],
+        [-6.27157374, -0.00102180, 0.00062644, 0.00102712, -0.00000115, 0.00000000],
+        [-6.27157517, -0.00102146, 0.00062623, 0.00102678, -0.00000115, 0.00000000],
+        [-6.27157658, -0.00102113, 0.00062602, 0.00102644, -0.00000115, 0.00000000],
+        [-6.27157800, -0.00102079, 0.00062582, 0.00102610, -0.00000115, 0.00000000],
+        [-6.27157941, -0.00102045, 0.00062561, 0.00102576, -0.00000115, 0.00000000],
+        [-6.27158082, -0.00102012, 0.00062540, 0.00102542, -0.00000115, 0.00000000],
+        [-6.27158223, -0.00101978, 0.00062520, 0.00102509, -0.00000115, 0.00000000],
+        [-6.27158363, -0.00101945, 0.00062499, 0.00102475, -0.00000115, 0.00000000],
+        [-6.27158503, -0.00101911, 0.00062479, 0.00102441, -0.00000115, 0.00000000],
+        [-6.27158643, -0.00101878, 0.00062458, 0.00102407, -0.00000115, 0.00000000],
+        [-6.27158782, -0.00101844, 0.00062438, 0.00102374, -0.00000115, 0.00000000],
+        [-6.27158921, -0.00101811, 0.00062417, 0.00102340, -0.00000115, 0.00000000],
+        [-6.27159060, -0.00101777, 0.00062396, 0.00102306, -0.00000115, 0.00000000],
+        [-6.27159199, -0.00101744, 0.00062376, 0.00102273, -0.00000115, 0.00000000],
+        [-6.27159337, -0.00101710, 0.00062355, 0.00102239, -0.00000115, 0.00000000],
+        [-6.27159475, -0.00101677, 0.00062335, 0.00102206, -0.00000115, 0.00000000],
+        [-6.27159613, -0.00101644, 0.00062314, 0.00102172, -0.00000115, 0.00000000],
+        [-6.27159750, -0.00101610, 0.00062294, 0.00102138, -0.00000115, 0.00000000],
+        [-6.27159887, -0.00101577, 0.00062274, 0.00102105, -0.00000115, 0.00000000],
+        [-6.27160024, -0.00101544, 0.00062253, 0.00102071, -0.00000115, 0.00000000],
+        [-6.27160160, -0.00101510, 0.00062233, 0.00102038, -0.00000115, 0.00000000],
+        [-6.27160297, -0.00101477, 0.00062212, 0.00102005, -0.00000115, 0.00000000],
+        [-6.27160433, -0.00101444, 0.00062192, 0.00101971, -0.00000115, 0.00000000],
+        [-6.27160568, -0.00101410, 0.00062171, 0.00101938, -0.00000115, 0.00000000],
+        [-6.27160704, -0.00101377, 0.00062151, 0.00101904, -0.00000115, 0.00000000],
+        [-6.27160839, -0.00101344, 0.00062131, 0.00101871, -0.00000115, 0.00000000],
+        [-6.27160974, -0.00101311, 0.00062110, 0.00101838, -0.00000115, 0.00000000],
+        [-6.27161108, -0.00101278, 0.00062090, 0.00101804, -0.00000115, 0.00000000],
+        [-6.27161243, -0.00101245, 0.00062070, 0.00101771, -0.00000115, 0.00000000],
+        [-6.27161377, -0.00101212, 0.00062049, 0.00101738, -0.00000115, 0.00000000],
+        [-6.27161511, -0.00101179, 0.00062029, 0.00101705, -0.00000115, 0.00000000],
+        [-6.27161644, -0.00101146, 0.00062009, 0.00101671, -0.00000115, 0.00000000],
+        [-6.27161777, -0.00101112, 0.00061989, 0.00101638, -0.00000115, 0.00000000],
+        [-6.27161910, -0.00101079, 0.00061968, 0.00101605, -0.00000115, 0.00000000],
+        [-6.27162043, -0.00101046, 0.00061948, 0.00101572, -0.00000115, 0.00000000],
+        [-6.27162175, -0.00101014, 0.00061928, 0.00101539, -0.00000115, 0.00000000],
+        [-6.27162307, -0.00100981, 0.00061908, 0.00101505, -0.00000115, 0.00000000],
+        [-6.27162439, -0.00100948, 0.00061887, 0.00101472, -0.00000115, 0.00000000],
+        [-6.27162571, -0.00100915, 0.00061867, 0.00101439, -0.00000115, 0.00000000],
+        [-6.27162702, -0.00100882, 0.00061847, 0.00101406, -0.00000115, 0.00000000],
+        [-6.27162833, -0.00100849, 0.00061827, 0.00101373, -0.00000115, 0.00000000],
+        [-6.27162964, -0.00100816, 0.00061807, 0.00101340, -0.00000115, 0.00000000],
+        [-6.27163095, -0.00100783, 0.00061787, 0.00101307, -0.00000115, 0.00000000],
+        [-6.27163225, -0.00100751, 0.00061767, 0.00101274, -0.00000115, 0.00000000],
+        [-6.27163355, -0.00100718, 0.00061746, 0.00101241, -0.00000115, 0.00000000],
+        [-6.27163485, -0.00100685, 0.00061726, 0.00101208, -0.00000115, 0.00000000],
+        [-6.27163614, -0.00100652, 0.00061706, 0.00101175, -0.00000115, 0.00000000],
+        [-6.27163743, -0.00100620, 0.00061686, 0.00101143, -0.00000115, 0.00000000],
+        [-6.27163872, -0.00100587, 0.00061666, 0.00101110, -0.00000115, 0.00000000],
+        [-6.27164001, -0.00100554, 0.00061646, 0.00101077, -0.00000115, 0.00000000],
+        [-6.27164130, -0.00100522, 0.00061626, 0.00101044, -0.00000115, 0.00000000],
+        [-6.27164258, -0.00100489, 0.00061606, 0.00101011, -0.00000115, 0.00000000],
+        [-6.27164386, -0.00100456, 0.00061586, 0.00100978, -0.00000115, 0.00000000],
+        [-6.27164513, -0.00100424, 0.00061566, 0.00100946, -0.00000115, 0.00000000],
+        [-6.27164641, -0.00100391, 0.00061546, 0.00100913, -0.00000114, 0.00000000],
+        [-6.27164768, -0.00100359, 0.00061526, 0.00100880, -0.00000114, 0.00000000],
+        [-6.27164895, -0.00100326, 0.00061506, 0.00100848, -0.00000114, 0.00000000],
+        [-6.27165022, -0.00100294, 0.00061486, 0.00100815, -0.00000114, 0.00000000],
+        [-6.27165148, -0.00100261, 0.00061466, 0.00100782, -0.00000114, 0.00000000],
+        [-6.27165274, -0.00100229, 0.00061446, 0.00100750, -0.00000114, 0.00000000],
+        [-6.27165400, -0.00100196, 0.00061427, 0.00100717, -0.00000114, 0.00000000],
+        [-6.27165526, -0.00100164, 0.00061407, 0.00100684, -0.00000114, 0.00000000],
+        [-6.27165651, -0.00100132, 0.00061387, 0.00100652, -0.00000114, 0.00000000],
+        [-6.27165777, -0.00100099, 0.00061367, 0.00100619, -0.00000114, 0.00000000],
+        [-6.27165902, -0.00100067, 0.00061347, 0.00100587, -0.00000114, 0.00000000],
+        [-6.27166026, -0.00100035, 0.00061327, 0.00100554, -0.00000114, 0.00000000],
+        [-6.27166151, -0.00100002, 0.00061307, 0.00100522, -0.00000114, 0.00000000],
+        [-6.27166275, -0.00099970, 0.00061288, 0.00100489, -0.00000114, 0.00000000],
+        [-6.27166399, -0.00099938, 0.00061268, 0.00100457, -0.00000114, 0.00000000],
+        [-6.27166523, -0.00099905, 0.00061248, 0.00100424, -0.00000114, 0.00000000],
+        [-6.27166646, -0.00099873, 0.00061228, 0.00100392, -0.00000114, 0.00000000],
+        [-6.27166770, -0.00099841, 0.00061208, 0.00100360, -0.00000114, 0.00000000],
+        [-6.27166893, -0.00099809, 0.00061189, 0.00100327, -0.00000114, 0.00000000],
+        [-6.27167015, -0.00099777, 0.00061169, 0.00100295, -0.00000114, 0.00000000],
+        [-6.27167138, -0.00099745, 0.00061149, 0.00100263, -0.00000114, 0.00000000],
+        [-6.27167260, -0.00099712, 0.00061130, 0.00100230, -0.00000114, 0.00000000],
+        [-6.27167382, -0.00099680, 0.00061110, 0.00100198, -0.00000114, 0.00000000],
+        [-6.27167504, -0.00099648, 0.00061090, 0.00100166, -0.00000114, 0.00000000],
+        [-6.27167626, -0.00099616, 0.00061070, 0.00100134, -0.00000114, 0.00000000],
+        [-6.27167747, -0.00099584, 0.00061051, 0.00100101, -0.00000114, 0.00000000],
+        [-6.27167868, -0.00099552, 0.00061031, 0.00100069, -0.00000114, 0.00000000],
+        [-6.27167989, -0.00099520, 0.00061012, 0.00100037, -0.00000114, 0.00000000],
+        [-6.27168110, -0.00099488, 0.00060992, 0.00100005, -0.00000114, 0.00000000],
+        [-6.27168231, -0.00099456, 0.00060972, 0.00099973, -0.00000114, 0.00000000],
+        [-6.27168351, -0.00099424, 0.00060953, 0.00099941, -0.00000114, 0.00000000],
+        [-6.27168471, -0.00099392, 0.00060933, 0.00099909, -0.00000114, 0.00000000],
+        [-6.27168591, -0.00099360, 0.00060914, 0.00099877, -0.00000114, 0.00000000],
+        [-6.27168710, -0.00099329, 0.00060894, 0.00099844, -0.00000114, 0.00000000],
+        [-6.27168829, -0.00099297, 0.00060874, 0.00099812, -0.00000114, 0.00000000],
+        [-6.27168949, -0.00099265, 0.00060855, 0.00099780, -0.00000114, 0.00000000],
+        [-6.27169067, -0.00099233, 0.00060835, 0.00099748, -0.00000114, 0.00000000],
+        [-6.27169186, -0.00099201, 0.00060816, 0.00099716, -0.00000114, 0.00000000],
+        [-6.27169305, -0.00099170, 0.00060796, 0.00099685, -0.00000114, 0.00000000],
+        [-6.27169423, -0.00099138, 0.00060777, 0.00099653, -0.00000114, 0.00000000],
+        [-6.27169541, -0.00099106, 0.00060757, 0.00099621, -0.00000114, 0.00000000],
+        [-6.27169659, -0.00099074, 0.00060738, 0.00099589, -0.00000114, 0.00000000],
+        [-6.27169776, -0.00099043, 0.00060719, 0.00099557, -0.00000114, 0.00000000],
+        [-6.27169893, -0.00099011, 0.00060699, 0.00099525, -0.00000114, 0.00000000],
+        [-6.27170011, -0.00098979, 0.00060680, 0.00099493, -0.00000114, 0.00000000],
+        [-6.27170128, -0.00098948, 0.00060660, 0.00099461, -0.00000114, 0.00000000],
+        [-6.27170244, -0.00098916, 0.00060641, 0.00099430, -0.00000114, 0.00000000],
+        [-6.27170361, -0.00098884, 0.00060622, 0.00099398, -0.00000114, 0.00000000],
+        [-6.27170477, -0.00098853, 0.00060602, 0.00099366, -0.00000114, 0.00000000],
+        [-6.27170593, -0.00098821, 0.00060583, 0.00099334, -0.00000114, 0.00000000],
+        [-6.27170709, -0.00098790, 0.00060563, 0.00099303, -0.00000114, 0.00000000],
+        [-6.27170825, -0.00098758, 0.00060544, 0.00099271, -0.00000114, 0.00000000],
+        [-6.27170940, -0.00098727, 0.00060525, 0.00099239, -0.00000114, 0.00000000],
+        [-6.27171055, -0.00098695, 0.00060505, 0.00099208, -0.00000114, 0.00000000],
+        [-6.27171170, -0.00098664, 0.00060486, 0.00099176, -0.00000114, 0.00000000],
+        [-6.27171285, -0.00098633, 0.00060467, 0.00099145, -0.00000114, 0.00000000],
+        [-6.27171399, -0.00098601, 0.00060448, 0.00099113, -0.00000114, 0.00000000],
+        [-6.27171514, -0.00098570, 0.00060428, 0.00099081, -0.00000114, 0.00000000],
+        [-6.27171628, -0.00098538, 0.00060409, 0.00099050, -0.00000114, 0.00000000],
+        [-6.27171742, -0.00098507, 0.00060390, 0.00099018, -0.00000114, 0.00000000],
+        [-6.27171856, -0.00098476, 0.00060371, 0.00098987, -0.00000114, 0.00000000],
+        [-6.27171969, -0.00098444, 0.00060351, 0.00098955, -0.00000114, 0.00000000],
+        [-6.27172082, -0.00098413, 0.00060332, 0.00098924, -0.00000114, 0.00000000],
+        [-6.27172196, -0.00098382, 0.00060313, 0.00098893, -0.00000114, 0.00000000],
+        [-6.27172309, -0.00098351, 0.00060294, 0.00098861, -0.00000114, 0.00000000],
+        [-6.27172421, -0.00098319, 0.00060275, 0.00098830, -0.00000114, 0.00000000],
+        [-6.27172534, -0.00098288, 0.00060256, 0.00098798, -0.00000114, 0.00000000],
+        [-6.27172646, -0.00098257, 0.00060236, 0.00098767, -0.00000114, 0.00000000],
+        [-6.27172758, -0.00098226, 0.00060217, 0.00098736, -0.00000114, 0.00000000],
+        [-6.27172870, -0.00098195, 0.00060198, 0.00098704, -0.00000114, 0.00000000],
+        [-6.27172982, -0.00098163, 0.00060179, 0.00098673, -0.00000114, 0.00000000],
+        [-6.27173093, -0.00098132, 0.00060160, 0.00098642, -0.00000114, 0.00000000],
+        [-6.27173205, -0.00098101, 0.00060141, 0.00098610, -0.00000114, 0.00000000],
+        [-6.27173316, -0.00098070, 0.00060122, 0.00098579, -0.00000114, 0.00000000],
+        [-6.27173427, -0.00098039, 0.00060103, 0.00098548, -0.00000114, 0.00000000],
+        [-6.27173537, -0.00098008, 0.00060084, 0.00098517, -0.00000114, 0.00000000],
+        [-6.27173648, -0.00097977, 0.00060065, 0.00098486, -0.00000114, 0.00000000],
+        [-6.27173758, -0.00097946, 0.00060046, 0.00098454, -0.00000114, 0.00000000],
+        [-6.27173868, -0.00097915, 0.00060027, 0.00098423, -0.00000114, 0.00000000],
+        [-6.27173978, -0.00097884, 0.00060008, 0.00098392, -0.00000114, 0.00000000],
+        [-6.27174088, -0.00097853, 0.00059989, 0.00098361, -0.00000114, 0.00000000],
+        [-6.27174198, -0.00097822, 0.00059970, 0.00098330, -0.00000114, 0.00000000],
+        [-6.27174307, -0.00097791, 0.00059951, 0.00098299, -0.00000114, 0.00000000],
+        [-6.27174416, -0.00097761, 0.00059932, 0.00098268, -0.00000114, 0.00000000],
+        [-6.27174525, -0.00097730, 0.00059913, 0.00098237, -0.00000114, 0.00000000],
+        [-6.27174634, -0.00097699, 0.00059894, 0.00098206, -0.00000114, 0.00000000],
+        [-6.27174743, -0.00097668, 0.00059875, 0.00098175, -0.00000114, 0.00000000],
+        [-6.27174851, -0.00097637, 0.00059856, 0.00098144, -0.00000114, 0.00000000],
+        [-6.27174959, -0.00097606, 0.00059837, 0.00098113, -0.00000114, 0.00000000],
+        [-6.27175067, -0.00097576, 0.00059818, 0.00098082, -0.00000114, 0.00000000],
+        [-6.27175175, -0.00097545, 0.00059800, 0.00098051, -0.00000114, 0.00000000],
+        [-6.27175283, -0.00097514, 0.00059781, 0.00098020, -0.00000114, 0.00000000],
+        [-6.27175390, -0.00097484, 0.00059762, 0.00097989, -0.00000114, 0.00000000],
+        [-6.27175497, -0.00097453, 0.00059743, 0.00097958, -0.00000114, 0.00000000],
+        [-6.27175605, -0.00097422, 0.00059724, 0.00097928, -0.00000114, 0.00000000],
+        [-6.27175712, -0.00097392, 0.00059705, 0.00097897, -0.00000114, 0.00000000],
+        [-6.27175818, -0.00097361, 0.00059687, 0.00097866, -0.00000114, 0.00000000],
+        [-6.27175925, -0.00097330, 0.00059668, 0.00097835, -0.00000114, 0.00000000],
+        [-6.27176031, -0.00097300, 0.00059649, 0.00097805, -0.00000114, 0.00000000],
+        [-6.27176137, -0.00097269, 0.00059630, 0.00097774, -0.00000114, 0.00000000],
+        [-6.27176243, -0.00097239, 0.00059612, 0.00097743, -0.00000114, 0.00000000],
+        [-6.27176349, -0.00097208, 0.00059593, 0.00097712, -0.00000114, 0.00000000],
+        [-6.27176455, -0.00097178, 0.00059574, 0.00097682, -0.00000114, 0.00000000],
+        [-6.27176560, -0.00097147, 0.00059555, 0.00097651, -0.00000114, 0.00000000],
+        [-6.27176666, -0.00097117, 0.00059537, 0.00097620, -0.00000114, 0.00000000],
+        [-6.27176771, -0.00097086, 0.00059518, 0.00097590, -0.00000114, 0.00000000],
+        [-6.27176876, -0.00097056, 0.00059499, 0.00097559, -0.00000114, 0.00000000],
+        [-6.27176980, -0.00097025, 0.00059481, 0.00097529, -0.00000114, 0.00000000],
+        [-6.27177085, -0.00096995, 0.00059462, 0.00097498, -0.00000114, 0.00000000],
+        [-6.27177189, -0.00096965, 0.00059443, 0.00097468, -0.00000114, 0.00000000],
+        [-6.27177294, -0.00096934, 0.00059425, 0.00097437, -0.00000114, 0.00000000],
+        [-6.27177398, -0.00096904, 0.00059406, 0.00097407, -0.00000114, 0.00000000],
+        [-6.27177502, -0.00096874, 0.00059388, 0.00097376, -0.00000114, 0.00000000],
+        [-6.27177605, -0.00096843, 0.00059369, 0.00097346, -0.00000114, 0.00000000],
+        [-6.27177709, -0.00096813, 0.00059350, 0.00097315, -0.00000114, 0.00000000],
+        [-6.27177812, -0.00096783, 0.00059332, 0.00097285, -0.00000114, 0.00000000],
+        [-6.27177915, -0.00096752, 0.00059313, 0.00097254, -0.00000114, 0.00000000],
+        [-6.27178018, -0.00096722, 0.00059295, 0.00097224, -0.00000114, 0.00000000],
+        [-6.27178121, -0.00096692, 0.00059276, 0.00097194, -0.00000114, 0.00000000],
+        [-6.27178224, -0.00096662, 0.00059258, 0.00097163, -0.00000114, 0.00000000],
+        [-6.27178326, -0.00096632, 0.00059239, 0.00097133, -0.00000114, 0.00000000],
+        [-6.27178429, -0.00096602, 0.00059221, 0.00097103, -0.00000114, 0.00000000],
+        [-6.27178531, -0.00096571, 0.00059202, 0.00097072, -0.00000114, 0.00000000],
+        [-6.27178633, -0.00096541, 0.00059184, 0.00097042, -0.00000114, 0.00000000],
+        [-6.27178735, -0.00096511, 0.00059165, 0.00097012, -0.00000114, 0.00000000],
+        [-6.27178836, -0.00096481, 0.00059147, 0.00096981, -0.00000114, 0.00000000],
+        [-6.27178938, -0.00096451, 0.00059128, 0.00096951, -0.00000114, 0.00000000],
+        [-6.27179039, -0.00096421, 0.00059110, 0.00096921, -0.00000114, 0.00000000],
+        [-6.27179140, -0.00096391, 0.00059091, 0.00096891, -0.00000114, 0.00000000],
+        [-6.27179242, -0.00096361, 0.00059073, 0.00096861, -0.00000114, 0.00000000],
+        [-6.27179342, -0.00096331, 0.00059055, 0.00096831, -0.00000114, 0.00000000],
+        [-6.27179443, -0.00096301, 0.00059036, 0.00096800, -0.00000114, 0.00000000],
+        [-6.27179544, -0.00096271, 0.00059018, 0.00096770, -0.00000114, 0.00000000],
+        [-6.27179644, -0.00096241, 0.00058999, 0.00096740, -0.00000114, 0.00000000],
+        [-6.27179744, -0.00096211, 0.00058981, 0.00096710, -0.00000114, 0.00000000],
+        [-6.27179844, -0.00096181, 0.00058963, 0.00096680, -0.00000114, 0.00000000],
+        [-6.27179944, -0.00096152, 0.00058944, 0.00096650, -0.00000114, 0.00000000],
+        [-6.27180044, -0.00096122, 0.00058926, 0.00096620, -0.00000114, 0.00000000],
+        [-6.27180143, -0.00096092, 0.00058908, 0.00096590, -0.00000114, 0.00000000],
+        [-6.27180243, -0.00096062, 0.00058890, 0.00096560, -0.00000114, 0.00000000],
+        [-6.27180342, -0.00096032, 0.00058871, 0.00096530, -0.00000114, 0.00000000],
+        [-6.27180441, -0.00096002, 0.00058853, 0.00096500, -0.00000114, 0.00000000],
+        [-6.27180540, -0.00095973, 0.00058835, 0.00096470, -0.00000114, 0.00000000],
+        [-6.27180639, -0.00095943, 0.00058816, 0.00096440, -0.00000114, 0.00000000],
+        [-6.27180737, -0.00095913, 0.00058798, 0.00096410, -0.00000114, 0.00000000],
+        [-6.27180836, -0.00095884, 0.00058780, 0.00096381, -0.00000114, 0.00000000],
+        [-6.27180934, -0.00095854, 0.00058762, 0.00096351, -0.00000114, 0.00000000],
+        [-6.27181032, -0.00095824, 0.00058744, 0.00096321, -0.00000114, 0.00000000],
+        [-6.27181130, -0.00095795, 0.00058725, 0.00096291, -0.00000114, 0.00000000],
+        [-6.27181228, -0.00095765, 0.00058707, 0.00096261, -0.00000114, 0.00000000],
+        [-6.27181325, -0.00095735, 0.00058689, 0.00096232, -0.00000114, 0.00000000],
+        [-6.27181423, -0.00095706, 0.00058671, 0.00096202, -0.00000114, 0.00000000],
+        [-6.27181520, -0.00095676, 0.00058653, 0.00096172, -0.00000114, 0.00000000],
+        [-6.27181618, -0.00095647, 0.00058635, 0.00096142, -0.00000114, 0.00000000],
+        [-6.27181715, -0.00095617, 0.00058616, 0.00096113, -0.00000114, 0.00000000],
+        [-6.27181811, -0.00095588, 0.00058598, 0.00096083, -0.00000114, 0.00000000],
+        [-6.27181908, -0.00095558, 0.00058580, 0.00096053, -0.00000114, 0.00000000],
+        [-6.27182005, -0.00095529, 0.00058562, 0.00096024, -0.00000114, 0.00000000],
+        [-6.27182101, -0.00095499, 0.00058544, 0.00095994, -0.00000114, 0.00000000],
+        [-6.27182198, -0.00095470, 0.00058526, 0.00095964, -0.00000114, 0.00000000],
+        [-6.27182294, -0.00095440, 0.00058508, 0.00095935, -0.00000114, 0.00000000],
+        [-6.27182390, -0.00095411, 0.00058490, 0.00095905, -0.00000114, 0.00000000],
+        [-6.27182486, -0.00095381, 0.00058472, 0.00095876, -0.00000114, 0.00000000],
+        [-6.27182581, -0.00095352, 0.00058454, 0.00095846, -0.00000114, 0.00000000],
+        [-6.27182677, -0.00095323, 0.00058436, 0.00095817, -0.00000114, 0.00000000],
+        [-6.27182772, -0.00095293, 0.00058418, 0.00095787, -0.00000114, 0.00000000],
+        [-6.27182867, -0.00095264, 0.00058400, 0.00095758, -0.00000114, 0.00000000],
+        [-6.27182963, -0.00095235, 0.00058382, 0.00095728, -0.00000114, 0.00000000],
+        [-6.27183058, -0.00095205, 0.00058364, 0.00095699, -0.00000114, 0.00000000],
+        [-6.27183152, -0.00095176, 0.00058346, 0.00095669, -0.00000114, 0.00000000],
+        [-6.27183247, -0.00095147, 0.00058328, 0.00095640, -0.00000114, 0.00000000],
+        [-6.27183342, -0.00095118, 0.00058310, 0.00095611, -0.00000114, 0.00000000],
+        [-6.27183436, -0.00095088, 0.00058292, 0.00095581, -0.00000114, 0.00000000],
+        [-6.27183530, -0.00095059, 0.00058274, 0.00095552, -0.00000114, 0.00000000],
+        [-6.27183624, -0.00095030, 0.00058256, 0.00095523, -0.00000114, 0.00000000],
+        [-6.27183718, -0.00095001, 0.00058238, 0.00095493, -0.00000114, 0.00000000],
+        [-6.27183812, -0.00094972, 0.00058221, 0.00095464, -0.00000114, 0.00000000],
+        [-6.27183906, -0.00094943, 0.00058203, 0.00095435, -0.00000114, 0.00000000],
+        [-6.27183999, -0.00094914, 0.00058185, 0.00095405, -0.00000114, 0.00000000],
+        [-6.27184093, -0.00094884, 0.00058167, 0.00095376, -0.00000114, 0.00000000],
+        [-6.27184186, -0.00094855, 0.00058149, 0.00095347, -0.00000114, 0.00000000],
+        [-6.27184279, -0.00094826, 0.00058131, 0.00095318, -0.00000114, 0.00000000],
+        [-6.27184372, -0.00094797, 0.00058113, 0.00095288, -0.00000114, 0.00000000],
+        [-6.27184465, -0.00094768, 0.00058096, 0.00095259, -0.00000114, 0.00000000],
+        [-6.27184558, -0.00094739, 0.00058078, 0.00095230, -0.00000114, 0.00000000],
+        [-6.27184650, -0.00094710, 0.00058060, 0.00095201, -0.00000114, 0.00000000],
+        [-6.27184743, -0.00094681, 0.00058042, 0.00095172, -0.00000114, 0.00000000],
+        [-6.27184835, -0.00094652, 0.00058025, 0.00095143, -0.00000114, 0.00000000],
+        [-6.27184927, -0.00094623, 0.00058007, 0.00095114, -0.00000114, 0.00000000],
+        [-6.27185019, -0.00094595, 0.00057989, 0.00095085, -0.00000114, 0.00000000],
+        [-6.27185111, -0.00094566, 0.00057971, 0.00095056, -0.00000114, 0.00000000],
+        [-6.27185203, -0.00094537, 0.00057954, 0.00095027, -0.00000114, 0.00000000],
+        [-6.27185294, -0.00094508, 0.00057936, 0.00094998, -0.00000114, 0.00000000],
+        [-6.27185386, -0.00094479, 0.00057918, 0.00094969, -0.00000114, 0.00000000],
+        [-6.27185477, -0.00094450, 0.00057901, 0.00094940, -0.00000114, 0.00000000],
+        [-6.27185568, -0.00094421, 0.00057883, 0.00094911, -0.00000114, 0.00000000],
+        [-6.27185659, -0.00094393, 0.00057865, 0.00094882, -0.00000114, 0.00000000],
+        [-6.27185750, -0.00094364, 0.00057848, 0.00094853, -0.00000114, 0.00000000],
+        [-6.27185841, -0.00094335, 0.00057830, 0.00094824, -0.00000114, 0.00000000],
+        [-6.27185932, -0.00094306, 0.00057812, 0.00094795, -0.00000114, 0.00000000],
+        [-6.27186022, -0.00094278, 0.00057795, 0.00094766, -0.00000114, 0.00000000],
+        [-6.27186113, -0.00094249, 0.00057777, 0.00094737, -0.00000114, 0.00000000],
+        [-6.27186203, -0.00094220, 0.00057759, 0.00094708, -0.00000114, 0.00000000],
+        [-6.27186293, -0.00094192, 0.00057742, 0.00094680, -0.00000114, 0.00000000],
+        [-6.27186383, -0.00094163, 0.00057724, 0.00094651, -0.00000114, 0.00000000],
+        [-6.27186473, -0.00094134, 0.00057707, 0.00094622, -0.00000114, 0.00000000],
+        [-6.27186563, -0.00094106, 0.00057689, 0.00094593, -0.00000114, 0.00000000],
+        [-6.27186652, -0.00094077, 0.00057672, 0.00094564, -0.00000114, 0.00000000],
+        [-6.27186742, -0.00094049, 0.00057654, 0.00094536, -0.00000114, 0.00000000],
+        [-6.27186831, -0.00094020, 0.00057636, 0.00094507, -0.00000114, 0.00000000],
+        [-6.27186920, -0.00093991, 0.00057619, 0.00094478, -0.00000114, 0.00000000],
+        [-6.27187010, -0.00093963, 0.00057601, 0.00094450, -0.00000114, 0.00000000],
+        [-6.27187098, -0.00093934, 0.00057584, 0.00094421, -0.00000114, 0.00000000],
+        [-6.27187187, -0.00093906, 0.00057567, 0.00094392, -0.00000114, 0.00000000],
+        [-6.27187276, -0.00093877, 0.00057549, 0.00094364, -0.00000114, 0.00000000],
+        [-6.27187365, -0.00093849, 0.00057532, 0.00094335, -0.00000114, 0.00000000],
+        [-6.27187453, -0.00093821, 0.00057514, 0.00094306, -0.00000114, 0.00000000],
+        [-6.27187541, -0.00093792, 0.00057497, 0.00094278, -0.00000114, 0.00000000],
+        [-6.27187630, -0.00093764, 0.00057479, 0.00094249, -0.00000114, 0.00000000],
+        [-6.27187718, -0.00093735, 0.00057462, 0.00094221, -0.00000114, 0.00000000],
+        [-6.27187806, -0.00093707, 0.00057444, 0.00094192, -0.00000114, 0.00000000],
+        [-6.27187894, -0.00093679, 0.00057427, 0.00094164, -0.00000114, 0.00000000],
+        [-6.27187981, -0.00093650, 0.00057410, 0.00094135, -0.00000114, 0.00000000],
+        [-6.27188069, -0.00093622, 0.00057392, 0.00094107, -0.00000114, 0.00000000],
+        [-6.27188156, -0.00093594, 0.00057375, 0.00094078, -0.00000114, 0.00000000],
+        [-6.27188244, -0.00093565, 0.00057358, 0.00094050, -0.00000114, 0.00000000],
+        [-6.27188331, -0.00093537, 0.00057340, 0.00094021, -0.00000114, 0.00000000],
+        [-6.27188418, -0.00093509, 0.00057323, 0.00093993, -0.00000114, 0.00000000],
+        [-6.27188505, -0.00093481, 0.00057306, 0.00093965, -0.00000114, 0.00000000],
+        [-6.27188592, -0.00093452, 0.00057288, 0.00093936, -0.00000114, 0.00000000],
+        [-6.27188679, -0.00093424, 0.00057271, 0.00093908, -0.00000114, 0.00000000],
+        [-6.27188765, -0.00093396, 0.00057254, 0.00093880, -0.00000114, 0.00000000],
+        [-6.27188852, -0.00093368, 0.00057236, 0.00093851, -0.00000114, 0.00000000],
+        [-6.27188938, -0.00093340, 0.00057219, 0.00093823, -0.00000114, 0.00000000],
+        [-6.27189025, -0.00093312, 0.00057202, 0.00093795, -0.00000114, 0.00000000],
+        [-6.27189111, -0.00093283, 0.00057185, 0.00093766, -0.00000114, 0.00000000],
+        [-6.27189197, -0.00093255, 0.00057167, 0.00093738, -0.00000114, 0.00000000],
+        [-6.27189283, -0.00093227, 0.00057150, 0.00093710, -0.00000114, 0.00000000],
+        [-6.27189369, -0.00093199, 0.00057133, 0.00093682, -0.00000114, 0.00000000],
+        [-6.27189454, -0.00093171, 0.00057116, 0.00093654, -0.00000114, 0.00000000],
+        [-6.27189540, -0.00093143, 0.00057098, 0.00093625, -0.00000114, 0.00000000],
+        [-6.27189625, -0.00093115, 0.00057081, 0.00093597, -0.00000114, 0.00000000],
+        [-6.27189711, -0.00093087, 0.00057064, 0.00093569, -0.00000114, 0.00000000],
+        [-6.27189796, -0.00093059, 0.00057047, 0.00093541, -0.00000114, 0.00000000],
+        [-6.27189881, -0.00093031, 0.00057030, 0.00093513, -0.00000114, 0.00000000],
+        [-6.27189966, -0.00093003, 0.00057013, 0.00093485, -0.00000114, 0.00000000],
+        [-6.27190051, -0.00092975, 0.00056995, 0.00093457, -0.00000114, 0.00000000],
+        [-6.27190136, -0.00092947, 0.00056978, 0.00093429, -0.00000114, 0.00000000],
+        [-6.27190220, -0.00092919, 0.00056961, 0.00093401, -0.00000114, 0.00000000],
+        [-6.27190305, -0.00092892, 0.00056944, 0.00093372, -0.00000114, 0.00000000],
+        [-6.27190389, -0.00092864, 0.00056927, 0.00093344, -0.00000114, 0.00000000],
+        [-6.27190474, -0.00092836, 0.00056910, 0.00093316, -0.00000114, 0.00000000],
+        [-6.27190558, -0.00092808, 0.00056893, 0.00093288, -0.00000114, 0.00000000],
+        [-6.27190642, -0.00092780, 0.00056876, 0.00093261, -0.00000114, 0.00000000],
+        [-6.27190726, -0.00092752, 0.00056859, 0.00093233, -0.00000114, 0.00000000],
+        [-6.27190810, -0.00092725, 0.00056842, 0.00093205, -0.00000114, 0.00000000],
+        [-6.27190893, -0.00092697, 0.00056825, 0.00093177, -0.00000114, 0.00000000],
+        [-6.27190977, -0.00092669, 0.00056808, 0.00093149, -0.00000114, 0.00000000],
+        [-6.27191061, -0.00092641, 0.00056791, 0.00093121, -0.00000114, 0.00000000],
+        [-6.27191144, -0.00092614, 0.00056774, 0.00093093, -0.00000114, 0.00000000],
+        [-6.27191227, -0.00092586, 0.00056757, 0.00093065, -0.00000114, 0.00000000],
+        [-6.27191311, -0.00092558, 0.00056740, 0.00093037, -0.00000114, 0.00000000],
+        [-6.27191394, -0.00092531, 0.00056723, 0.00093010, -0.00000114, 0.00000000],
+        [-6.27191477, -0.00092503, 0.00056706, 0.00092982, -0.00000114, 0.00000000],
+        [-6.27191559, -0.00092475, 0.00056689, 0.00092954, -0.00000114, 0.00000000],
+        [-6.27191642, -0.00092448, 0.00056672, 0.00092926, -0.00000114, 0.00000000],
+        [-6.27191725, -0.00092420, 0.00056655, 0.00092899, -0.00000114, 0.00000000],
+        [-6.27191807, -0.00092393, 0.00056638, 0.00092871, -0.00000114, 0.00000000],
+        [-6.27191890, -0.00092365, 0.00056621, 0.00092843, -0.00000114, 0.00000000],
+        [-6.27191972, -0.00092338, 0.00056604, 0.00092815, -0.00000114, 0.00000000],
+        [-6.27192054, -0.00092310, 0.00056587, 0.00092788, -0.00000114, 0.00000000],
+        [-6.27192136, -0.00092282, 0.00056570, 0.00092760, -0.00000114, 0.00000000],
+        [-6.27192218, -0.00092255, 0.00056553, 0.00092732, -0.00000114, 0.00000000],
+        [-6.27192300, -0.00092227, 0.00056537, 0.00092705, -0.00000114, 0.00000000],
+        [-6.27192382, -0.00092200, 0.00056520, 0.00092677, -0.00000114, 0.00000000],
+        [-6.27192464, -0.00092173, 0.00056503, 0.00092650, -0.00000114, 0.00000000],
+        [-6.27192545, -0.00092145, 0.00056486, 0.00092622, -0.00000114, 0.00000000],
+        [-6.27192627, -0.00092118, 0.00056469, 0.00092594, -0.00000114, 0.00000000],
+        [-6.27192708, -0.00092090, 0.00056452, 0.00092567, -0.00000114, 0.00000000],
+        [-6.27192790, -0.00092063, 0.00056436, 0.00092539, -0.00000114, 0.00000000],
+        [-6.27192871, -0.00092036, 0.00056419, 0.00092512, -0.00000114, 0.00000000],
+        [-6.27192952, -0.00092008, 0.00056402, 0.00092484, -0.00000114, 0.00000000],
+        [-6.27193033, -0.00091981, 0.00056385, 0.00092457, -0.00000114, 0.00000000],
+        [-6.27193114, -0.00091954, 0.00056368, 0.00092429, -0.00000114, 0.00000000],
+        [-6.27193194, -0.00091926, 0.00056352, 0.00092402, -0.00000114, 0.00000000],
+        [-6.27193275, -0.00091899, 0.00056335, 0.00092374, -0.00000114, 0.00000000],
+        [-6.27193356, -0.00091872, 0.00056318, 0.00092347, -0.00000114, 0.00000000],
+        [-6.27193436, -0.00091844, 0.00056301, 0.00092320, -0.00000114, 0.00000000],
+        [-6.27193516, -0.00091817, 0.00056285, 0.00092292, -0.00000114, 0.00000000],
+        [-6.27193597, -0.00091790, 0.00056268, 0.00092265, -0.00000114, 0.00000000],
+        [-6.27193677, -0.00091763, 0.00056251, 0.00092238, -0.00000114, 0.00000000],
+        [-6.27193757, -0.00091736, 0.00056235, 0.00092210, -0.00000114, 0.00000000],
+        [-6.27193837, -0.00091708, 0.00056218, 0.00092183, -0.00000114, 0.00000000],
+        [-6.27193917, -0.00091681, 0.00056201, 0.00092156, -0.00000114, 0.00000000],
+        [-6.27193996, -0.00091654, 0.00056185, 0.00092128, -0.00000114, 0.00000000],
+        [-6.27194076, -0.00091627, 0.00056168, 0.00092101, -0.00000114, 0.00000000],
+        [-6.27194155, -0.00091600, 0.00056151, 0.00092074, -0.00000114, 0.00000000],
+        [-6.27194235, -0.00091573, 0.00056135, 0.00092046, -0.00000114, 0.00000000],
+        [-6.27194314, -0.00091546, 0.00056118, 0.00092019, -0.00000114, 0.00000000],
+        [-6.27194394, -0.00091519, 0.00056102, 0.00091992, -0.00000114, 0.00000000],
+        [-6.27194473, -0.00091492, 0.00056085, 0.00091965, -0.00000114, 0.00000000],
+        [-6.27194552, -0.00091465, 0.00056068, 0.00091938, -0.00000114, 0.00000000],
+        [-6.27194631, -0.00091438, 0.00056052, 0.00091911, -0.00000114, 0.00000000],
+        [-6.27194710, -0.00091411, 0.00056035, 0.00091883, -0.00000114, 0.00000000],
+        [-6.27194788, -0.00091384, 0.00056019, 0.00091856, -0.00000114, 0.00000000],
+        [-6.27194867, -0.00091357, 0.00056002, 0.00091829, -0.00000114, 0.00000000],
+        [-6.27194946, -0.00091330, 0.00055986, 0.00091802, -0.00000114, 0.00000000],
+        [-6.27195024, -0.00091303, 0.00055969, 0.00091775, -0.00000114, 0.00000000],
+        [-6.27195102, -0.00091276, 0.00055953, 0.00091748, -0.00000114, 0.00000000],
+        [-6.27195181, -0.00091249, 0.00055936, 0.00091721, -0.00000114, 0.00000000],
+        [-6.27195259, -0.00091222, 0.00055920, 0.00091694, -0.00000114, 0.00000000],
+        [-6.27195337, -0.00091195, 0.00055903, 0.00091667, -0.00000114, 0.00000000],
+        [-6.27195415, -0.00091168, 0.00055887, 0.00091640, -0.00000114, 0.00000000],
+        [-6.27195493, -0.00091141, 0.00055870, 0.00091613, -0.00000114, 0.00000000],
+        [-6.27195571, -0.00091115, 0.00055854, 0.00091586, -0.00000114, 0.00000000],
+        [-6.27195648, -0.00091088, 0.00055837, 0.00091559, -0.00000114, 0.00000000],
+        [-6.27195726, -0.00091061, 0.00055821, 0.00091532, -0.00000114, 0.00000000],
+        [-6.27195803, -0.00091034, 0.00055804, 0.00091505, -0.00000114, 0.00000000],
+        [-6.27195881, -0.00091007, 0.00055788, 0.00091478, -0.00000114, 0.00000000],
+        [-6.27195958, -0.00090981, 0.00055771, 0.00091451, -0.00000114, 0.00000000],
+        [-6.27196035, -0.00090954, 0.00055755, 0.00091424, -0.00000114, 0.00000000],
+        [-6.27196113, -0.00090927, 0.00055739, 0.00091397, -0.00000114, 0.00000000],
+        [-6.27196190, -0.00090901, 0.00055722, 0.00091371, -0.00000114, 0.00000000],
+        [-6.27196267, -0.00090874, 0.00055706, 0.00091344, -0.00000114, 0.00000000],
+        [-6.27196344, -0.00090847, 0.00055690, 0.00091317, -0.00000114, 0.00000000],
+        [-6.27196420, -0.00090821, 0.00055673, 0.00091290, -0.00000114, 0.00000000],
+        [-6.27196497, -0.00090794, 0.00055657, 0.00091263, -0.00000114, 0.00000000],
+        [-6.27196574, -0.00090767, 0.00055641, 0.00091237, -0.00000114, 0.00000000],
+        [-6.27196650, -0.00090741, 0.00055624, 0.00091210, -0.00000114, 0.00000000],
+        [-6.27196726, -0.00090714, 0.00055608, 0.00091183, -0.00000114, 0.00000000],
+        [-6.27196803, -0.00090688, 0.00055592, 0.00091156, -0.00000114, 0.00000000],
+        [-6.27196879, -0.00090661, 0.00055575, 0.00091130, -0.00000114, 0.00000000],
+        [-6.27196955, -0.00090634, 0.00055559, 0.00091103, -0.00000114, 0.00000000],
+        [-6.27197031, -0.00090608, 0.00055543, 0.00091076, -0.00000114, 0.00000000],
+        [-6.27197107, -0.00090581, 0.00055526, 0.00091050, -0.00000114, 0.00000000],
+        [-6.27197183, -0.00090555, 0.00055510, 0.00091023, -0.00000114, 0.00000000],
+        [-6.27197259, -0.00090528, 0.00055494, 0.00090997, -0.00000114, 0.00000000],
+        [-6.27197335, -0.00090502, 0.00055478, 0.00090970, -0.00000114, 0.00000000],
+        [-6.27197410, -0.00090476, 0.00055461, 0.00090943, -0.00000114, 0.00000000],
+        [-6.27197486, -0.00090449, 0.00055445, 0.00090917, -0.00000114, 0.00000000],
+        [-6.27197561, -0.00090423, 0.00055429, 0.00090890, -0.00000114, 0.00000000],
+        [-6.27197637, -0.00090396, 0.00055413, 0.00090864, -0.00000114, 0.00000000],
+        [-6.27197712, -0.00090370, 0.00055397, 0.00090837, -0.00000114, 0.00000000],
+        [-6.27197787, -0.00090344, 0.00055380, 0.00090811, -0.00000114, 0.00000000],
+        [-6.27197862, -0.00090317, 0.00055364, 0.00090784, -0.00000114, 0.00000000],
+        [-6.27197937, -0.00090291, 0.00055348, 0.00090758, -0.00000114, 0.00000000],
+        [-6.27198012, -0.00090264, 0.00055332, 0.00090731, -0.00000114, 0.00000000],
+        [-6.27198087, -0.00090238, 0.00055316, 0.00090705, -0.00000114, 0.00000000],
+        [-6.27198162, -0.00090212, 0.00055300, 0.00090678, -0.00000114, 0.00000000],
+        [-6.27198236, -0.00090186, 0.00055284, 0.00090652, -0.00000114, 0.00000000],
+        [-6.27198311, -0.00090159, 0.00055267, 0.00090625, -0.00000114, 0.00000000],
+        [-6.27198385, -0.00090133, 0.00055251, 0.00090599, -0.00000113, 0.00000000],
+        [-6.27198460, -0.00090107, 0.00055235, 0.00090573, -0.00000113, 0.00000000],
+        [-6.27198534, -0.00090081, 0.00055219, 0.00090546, -0.00000113, 0.00000000],
+        [-6.27198608, -0.00090054, 0.00055203, 0.00090520, -0.00000113, 0.00000000],
+        [-6.27198682, -0.00090028, 0.00055187, 0.00090494, -0.00000113, 0.00000000],
+        [-6.27198756, -0.00090002, 0.00055171, 0.00090467, -0.00000113, 0.00000000],
+        [-6.27198830, -0.00089976, 0.00055155, 0.00090441, -0.00000113, 0.00000000],
+        [-6.27198904, -0.00089950, 0.00055139, 0.00090415, -0.00000113, 0.00000000],
+        [-6.27198978, -0.00089924, 0.00055123, 0.00090388, -0.00000113, 0.00000000],
+        [-6.27199052, -0.00089898, 0.00055107, 0.00090362, -0.00000113, 0.00000000],
+        [-6.27199126, -0.00089871, 0.00055091, 0.00090336, -0.00000113, 0.00000000],
+        [-6.27199199, -0.00089845, 0.00055075, 0.00090310, -0.00000113, 0.00000000],
+        [-6.27199273, -0.00089819, 0.00055059, 0.00090284, -0.00000113, 0.00000000],
+        [-6.27199346, -0.00089793, 0.00055043, 0.00090257, -0.00000113, 0.00000000],
+        [-6.27199419, -0.00089767, 0.00055027, 0.00090231, -0.00000113, 0.00000000],
+        [-6.27199493, -0.00089741, 0.00055011, 0.00090205, -0.00000113, 0.00000000],
+        [-6.27199566, -0.00089715, 0.00054995, 0.00090179, -0.00000113, 0.00000000],
+        [-6.27199639, -0.00089689, 0.00054979, 0.00090153, -0.00000113, 0.00000000],
+        [-6.27199712, -0.00089663, 0.00054963, 0.00090127, -0.00000113, 0.00000000],
+        [-6.27199785, -0.00089637, 0.00054947, 0.00090100, -0.00000113, 0.00000000],
+        [-6.27199857, -0.00089611, 0.00054931, 0.00090074, -0.00000113, 0.00000000],
+        [-6.27199930, -0.00089585, 0.00054915, 0.00090048, -0.00000113, 0.00000000],
+        [-6.27200003, -0.00089559, 0.00054899, 0.00090022, -0.00000113, 0.00000000],
+        [-6.27200076, -0.00089534, 0.00054883, 0.00089996, -0.00000113, 0.00000000],
+        [-6.27200148, -0.00089508, 0.00054868, 0.00089970, -0.00000113, 0.00000000],
+        [-6.27200220, -0.00089482, 0.00054852, 0.00089944, -0.00000113, 0.00000000],
+        [-6.27200293, -0.00089456, 0.00054836, 0.00089918, -0.00000113, 0.00000000],
+        [-6.27200365, -0.00089430, 0.00054820, 0.00089892, -0.00000113, 0.00000000],
+        [-6.27200437, -0.00089404, 0.00054804, 0.00089866, -0.00000113, 0.00000000],
+        [-6.27200509, -0.00089378, 0.00054788, 0.00089840, -0.00000113, 0.00000000],
+        [-6.27200581, -0.00089353, 0.00054772, 0.00089814, -0.00000113, 0.00000000],
+        [-6.27200653, -0.00089327, 0.00054757, 0.00089788, -0.00000113, 0.00000000],
+        [-6.27200725, -0.00089301, 0.00054741, 0.00089763, -0.00000113, 0.00000000],
+        [-6.27200797, -0.00089275, 0.00054725, 0.00089737, -0.00000113, 0.00000000],
+        [-6.27200869, -0.00089250, 0.00054709, 0.00089711, -0.00000113, 0.00000000],
+        [-6.27200940, -0.00089224, 0.00054693, 0.00089685, -0.00000113, 0.00000000],
+        [-6.27201012, -0.00089198, 0.00054678, 0.00089659, -0.00000113, 0.00000000],
+        [-6.27201083, -0.00089172, 0.00054662, 0.00089633, -0.00000113, 0.00000000],
+        [-6.27201155, -0.00089147, 0.00054646, 0.00089607, -0.00000113, 0.00000000],
+        [-6.27201226, -0.00089121, 0.00054630, 0.00089582, -0.00000113, 0.00000000],
+        [-6.27201297, -0.00089095, 0.00054615, 0.00089556, -0.00000113, 0.00000000],
+        [-6.27201369, -0.00089070, 0.00054599, 0.00089530, -0.00000113, 0.00000000],
+        [-6.27201440, -0.00089044, 0.00054583, 0.00089504, -0.00000113, 0.00000000],
+        [-6.27201511, -0.00089019, 0.00054568, 0.00089479, -0.00000113, 0.00000000],
+        [-6.27201582, -0.00088993, 0.00054552, 0.00089453, -0.00000113, 0.00000000],
+        [-6.27201653, -0.00088967, 0.00054536, 0.00089427, -0.00000113, 0.00000000],
+        [-6.27201723, -0.00088942, 0.00054520, 0.00089401, -0.00000113, 0.00000000],
+        [-6.27201794, -0.00088916, 0.00054505, 0.00089376, -0.00000113, 0.00000000],
+        [-6.27201865, -0.00088891, 0.00054489, 0.00089350, -0.00000113, 0.00000000],
+        [-6.27201935, -0.00088865, 0.00054473, 0.00089324, -0.00000113, 0.00000000],
+        [-6.27202006, -0.00088840, 0.00054458, 0.00089299, -0.00000113, 0.00000000],
+        [-6.27202076, -0.00088814, 0.00054442, 0.00089273, -0.00000113, 0.00000000],
+        [-6.27202147, -0.00088789, 0.00054427, 0.00089248, -0.00000113, 0.00000000],
+        [-6.27202217, -0.00088763, 0.00054411, 0.00089222, -0.00000113, 0.00000000],
+        [-6.27202287, -0.00088738, 0.00054395, 0.00089196, -0.00000113, 0.00000000],
+        [-6.27202357, -0.00088713, 0.00054380, 0.00089171, -0.00000113, 0.00000000],
+        [-6.27202427, -0.00088687, 0.00054364, 0.00089145, -0.00000113, 0.00000000],
+        [-6.27202497, -0.00088662, 0.00054349, 0.00089120, -0.00000113, 0.00000000],
+        [-6.27202567, -0.00088636, 0.00054333, 0.00089094, -0.00000113, 0.00000000],
+        [-6.27202637, -0.00088611, 0.00054317, 0.00089069, -0.00000113, 0.00000000],
+        [-6.27202707, -0.00088586, 0.00054302, 0.00089043, -0.00000113, 0.00000000],
+        [-6.27202777, -0.00088560, 0.00054286, 0.00089018, -0.00000113, 0.00000000],
+        [-6.27202846, -0.00088535, 0.00054271, 0.00088992, -0.00000113, 0.00000000],
+        [-6.27202916, -0.00088510, 0.00054255, 0.00088967, -0.00000113, 0.00000000],
+        [-6.27202985, -0.00088484, 0.00054240, 0.00088941, -0.00000113, 0.00000000],
+        [-6.27203055, -0.00088459, 0.00054224, 0.00088916, -0.00000113, 0.00000000],
+        [-6.27203124, -0.00088434, 0.00054209, 0.00088891, -0.00000113, 0.00000000],
+        [-6.27203193, -0.00088409, 0.00054193, 0.00088865, -0.00000113, 0.00000000],
+        [-6.27203262, -0.00088383, 0.00054178, 0.00088840, -0.00000113, 0.00000000],
+        [-6.27203332, -0.00088358, 0.00054162, 0.00088814, -0.00000113, 0.00000000],
+        [-6.27203401, -0.00088333, 0.00054147, 0.00088789, -0.00000113, 0.00000000],
+        [-6.27203470, -0.00088308, 0.00054131, 0.00088764, -0.00000113, 0.00000000],
+        [-6.27203539, -0.00088282, 0.00054116, 0.00088738, -0.00000113, 0.00000000],
+        [-6.27203607, -0.00088257, 0.00054100, 0.00088713, -0.00000113, 0.00000000],
+        [-6.27203676, -0.00088232, 0.00054085, 0.00088688, -0.00000113, 0.00000000],
+        [-6.27203745, -0.00088207, 0.00054069, 0.00088663, -0.00000113, 0.00000000],
+        [-6.27203813, -0.00088182, 0.00054054, 0.00088637, -0.00000113, 0.00000000],
+        [-6.27203882, -0.00088157, 0.00054039, 0.00088612, -0.00000113, 0.00000000],
+        [-6.27203950, -0.00088132, 0.00054023, 0.00088587, -0.00000113, 0.00000000],
+        [-6.27204019, -0.00088107, 0.00054008, 0.00088562, -0.00000113, 0.00000000],
+        [-6.27204087, -0.00088082, 0.00053992, 0.00088536, -0.00000113, 0.00000000],
+        [-6.27204156, -0.00088056, 0.00053977, 0.00088511, -0.00000113, 0.00000000],
+        [-6.27204224, -0.00088031, 0.00053962, 0.00088486, -0.00000113, 0.00000000],
+        [-6.27204292, -0.00088006, 0.00053946, 0.00088461, -0.00000113, 0.00000000],
+        [-6.27204360, -0.00087981, 0.00053931, 0.00088436, -0.00000113, 0.00000000],
+        [-6.27204428, -0.00087956, 0.00053916, 0.00088411, -0.00000113, 0.00000000],
+        [-6.27204496, -0.00087931, 0.00053900, 0.00088385, -0.00000113, 0.00000000],
+        [-6.27204564, -0.00087906, 0.00053885, 0.00088360, -0.00000113, 0.00000000],
+        [-6.27204632, -0.00087881, 0.00053870, 0.00088335, -0.00000113, 0.00000000],
+        [-6.27204699, -0.00087857, 0.00053854, 0.00088310, -0.00000113, 0.00000000],
+        [-6.27204767, -0.00087832, 0.00053839, 0.00088285, -0.00000113, 0.00000000],
+        [-6.27204835, -0.00087807, 0.00053824, 0.00088260, -0.00000113, 0.00000000],
+        [-6.27204902, -0.00087782, 0.00053809, 0.00088235, -0.00000113, 0.00000000],
+        [-6.27204970, -0.00087757, 0.00053793, 0.00088210, -0.00000113, 0.00000000],
+        [-6.27205037, -0.00087732, 0.00053778, 0.00088185, -0.00000113, 0.00000000],
+        [-6.27205104, -0.00087707, 0.00053763, 0.00088160, -0.00000113, 0.00000000],
+        [-6.27205172, -0.00087682, 0.00053748, 0.00088135, -0.00000113, 0.00000000],
+        [-6.27205239, -0.00087658, 0.00053732, 0.00088110, -0.00000113, 0.00000000],
+        [-6.27205306, -0.00087633, 0.00053717, 0.00088085, -0.00000113, 0.00000000],
+        [-6.27205373, -0.00087608, 0.00053702, 0.00088060, -0.00000113, 0.00000000],
+        [-6.27205440, -0.00087583, 0.00053687, 0.00088035, -0.00000113, 0.00000000],
+        [-6.27205507, -0.00087558, 0.00053671, 0.00088010, -0.00000113, 0.00000000],
+        [-6.27205574, -0.00087534, 0.00053656, 0.00087985, -0.00000113, 0.00000000],
+        [-6.27205641, -0.00087509, 0.00053641, 0.00087961, -0.00000113, 0.00000000],
+        [-6.27205707, -0.00087484, 0.00053626, 0.00087936, -0.00000113, 0.00000000],
+        [-6.27205774, -0.00087459, 0.00053611, 0.00087911, -0.00000113, 0.00000000],
+        [-6.27205841, -0.00087435, 0.00053596, 0.00087886, -0.00000113, 0.00000000],
+        [-6.27205907, -0.00087410, 0.00053580, 0.00087861, -0.00000113, 0.00000000],
+        [-6.27205974, -0.00087385, 0.00053565, 0.00087836, -0.00000113, 0.00000000],
+        [-6.27206040, -0.00087361, 0.00053550, 0.00087812, -0.00000113, 0.00000000],
+        [-6.27206106, -0.00087336, 0.00053535, 0.00087787, -0.00000113, 0.00000000],
+        [-6.27206173, -0.00087311, 0.00053520, 0.00087762, -0.00000113, 0.00000000],
+        [-6.27206239, -0.00087287, 0.00053505, 0.00087737, -0.00000113, 0.00000000],
+        [-6.27206305, -0.00087262, 0.00053490, 0.00087713, -0.00000113, 0.00000000],
+        [-6.27206371, -0.00087238, 0.00053475, 0.00087688, -0.00000113, 0.00000000],
+        [-6.27206437, -0.00087213, 0.00053460, 0.00087663, -0.00000113, 0.00000000],
+        [-6.27206503, -0.00087188, 0.00053445, 0.00087638, -0.00000113, 0.00000000],
+        [-6.27206569, -0.00087164, 0.00053429, 0.00087614, -0.00000113, 0.00000000],
+        [-6.27206635, -0.00087139, 0.00053414, 0.00087589, -0.00000113, 0.00000000],
+        [-6.27206701, -0.00087115, 0.00053399, 0.00087564, -0.00000113, 0.00000000],
+        [-6.27206767, -0.00087090, 0.00053384, 0.00087540, -0.00000113, 0.00000000],
+        [-6.27206832, -0.00087066, 0.00053369, 0.00087515, -0.00000113, 0.00000000],
+        [-6.27206898, -0.00087041, 0.00053354, 0.00087491, -0.00000113, 0.00000000],
+        [-6.27206963, -0.00087017, 0.00053339, 0.00087466, -0.00000113, 0.00000000],
+        [-6.27207029, -0.00086992, 0.00053324, 0.00087441, -0.00000113, 0.00000000],
+        [-6.27207094, -0.00086968, 0.00053309, 0.00087417, -0.00000113, 0.00000000],
+        [-6.27207160, -0.00086944, 0.00053294, 0.00087392, -0.00000113, 0.00000000],
+        [-6.27207225, -0.00086919, 0.00053279, 0.00087368, -0.00000113, 0.00000000],
+        [-6.27207290, -0.00086895, 0.00053264, 0.00087343, -0.00000113, 0.00000000],
+        [-6.27207355, -0.00086870, 0.00053249, 0.00087319, -0.00000113, 0.00000000],
+        [-6.27207420, -0.00086846, 0.00053234, 0.00087294, -0.00000113, 0.00000000],
+        [-6.27207485, -0.00086822, 0.00053219, 0.00087270, -0.00000113, 0.00000000],
+        [-6.27207550, -0.00086797, 0.00053205, 0.00087245, -0.00000113, 0.00000000],
+        [-6.27207615, -0.00086773, 0.00053190, 0.00087221, -0.00000113, 0.00000000],
+        [-6.27207680, -0.00086749, 0.00053175, 0.00087196, -0.00000113, 0.00000000],
+        [-6.27207745, -0.00086724, 0.00053160, 0.00087172, -0.00000113, 0.00000000],
+        [-6.27207810, -0.00086700, 0.00053145, 0.00087147, -0.00000113, 0.00000000],
+        [-6.27207874, -0.00086676, 0.00053130, 0.00087123, -0.00000113, 0.00000000],
+        [-6.27207939, -0.00086652, 0.00053115, 0.00087099, -0.00000113, 0.00000000],
+        [-6.27208004, -0.00086627, 0.00053100, 0.00087074, -0.00000113, 0.00000000],
+        [-6.27208068, -0.00086603, 0.00053085, 0.00087050, -0.00000113, 0.00000000],
+        [-6.27208132, -0.00086579, 0.00053070, 0.00087026, -0.00000113, 0.00000000],
+        [-6.27208197, -0.00086555, 0.00053056, 0.00087001, -0.00000113, 0.00000000],
+        [-6.27208261, -0.00086530, 0.00053041, 0.00086977, -0.00000113, 0.00000000],
+        [-6.27208325, -0.00086506, 0.00053026, 0.00086953, -0.00000113, 0.00000000],
+        [-6.27208390, -0.00086482, 0.00053011, 0.00086928, -0.00000113, 0.00000000],
+        [-6.27208454, -0.00086458, 0.00052996, 0.00086904, -0.00000113, 0.00000000],
+        [-6.27208518, -0.00086434, 0.00052981, 0.00086880, -0.00000113, 0.00000000],
+        [-6.27208582, -0.00086410, 0.00052967, 0.00086856, -0.00000113, 0.00000000],
+        [-6.27208646, -0.00086386, 0.00052952, 0.00086831, -0.00000113, 0.00000000],
+        [-6.27208710, -0.00086361, 0.00052937, 0.00086807, -0.00000113, 0.00000000],
+        [-6.27208774, -0.00086337, 0.00052922, 0.00086783, -0.00000113, 0.00000000],
+        [-6.27208837, -0.00086313, 0.00052908, 0.00086759, -0.00000113, 0.00000000],
+        [-6.27208901, -0.00086289, 0.00052893, 0.00086734, -0.00000113, 0.00000000],
+        [-6.27208965, -0.00086265, 0.00052878, 0.00086710, -0.00000113, 0.00000000],
+        [-6.27209028, -0.00086241, 0.00052863, 0.00086686, -0.00000113, 0.00000000],
+        [-6.27209092, -0.00086217, 0.00052849, 0.00086662, -0.00000113, 0.00000000],
+        [-6.27209155, -0.00086193, 0.00052834, 0.00086638, -0.00000113, 0.00000000],
+        [-6.27209219, -0.00086169, 0.00052819, 0.00086614, -0.00000113, 0.00000000],
+        [-6.27209282, -0.00086145, 0.00052804, 0.00086590, -0.00000113, 0.00000000],
+        [-6.27209346, -0.00086121, 0.00052790, 0.00086565, -0.00000113, 0.00000000],
+        [-6.27209409, -0.00086097, 0.00052775, 0.00086541, -0.00000113, 0.00000000],
+        [-6.27209472, -0.00086073, 0.00052760, 0.00086517, -0.00000113, 0.00000000],
+        [-6.27209535, -0.00086049, 0.00052746, 0.00086493, -0.00000113, 0.00000000],
+        [-6.27209598, -0.00086025, 0.00052731, 0.00086469, -0.00000113, 0.00000000],
+        [-6.27209661, -0.00086002, 0.00052716, 0.00086445, -0.00000113, 0.00000000],
+        [-6.27209724, -0.00085978, 0.00052702, 0.00086421, -0.00000113, 0.00000000],
+        [-6.27209787, -0.00085954, 0.00052687, 0.00086397, -0.00000113, 0.00000000],
+        [-6.27209850, -0.00085930, 0.00052672, 0.00086373, -0.00000113, 0.00000000],
+        [-6.27209913, -0.00085906, 0.00052658, 0.00086349, -0.00000113, 0.00000000],
+        [-6.27209976, -0.00085882, 0.00052643, 0.00086325, -0.00000113, 0.00000000],
+        [-6.27210038, -0.00085858, 0.00052628, 0.00086301, -0.00000113, 0.00000000],
+        [-6.27210101, -0.00085835, 0.00052614, 0.00086277, -0.00000113, 0.00000000],
+        [-6.27210164, -0.00085811, 0.00052599, 0.00086253, -0.00000113, 0.00000000],
+        [-6.27210226, -0.00085787, 0.00052585, 0.00086230, -0.00000113, 0.00000000],
+        [-6.27210289, -0.00085763, 0.00052570, 0.00086206, -0.00000113, 0.00000000],
+        [-6.27210351, -0.00085740, 0.00052555, 0.00086182, -0.00000113, 0.00000000],
+        [-6.27210414, -0.00085716, 0.00052541, 0.00086158, -0.00000113, 0.00000000],
+        [-6.27210476, -0.00085692, 0.00052526, 0.00086134, -0.00000113, 0.00000000],
+        [-6.27210538, -0.00085668, 0.00052512, 0.00086110, -0.00000113, 0.00000000],
+        [-6.27210600, -0.00085645, 0.00052497, 0.00086086, -0.00000113, 0.00000000],
+        [-6.27210663, -0.00085621, 0.00052483, 0.00086063, -0.00000113, 0.00000000],
+        [-6.27210725, -0.00085597, 0.00052468, 0.00086039, -0.00000113, 0.00000000],
+        [-6.27210787, -0.00085574, 0.00052454, 0.00086015, -0.00000113, 0.00000000],
+        [-6.27210849, -0.00085550, 0.00052439, 0.00085991, -0.00000113, 0.00000000],
+        [-6.27210911, -0.00085526, 0.00052425, 0.00085967, -0.00000113, 0.00000000],
+        [-6.27210973, -0.00085503, 0.00052410, 0.00085944, -0.00000113, 0.00000000],
+        [-6.27211034, -0.00085479, 0.00052396, 0.00085920, -0.00000113, 0.00000000],
+        [-6.27211096, -0.00085456, 0.00052381, 0.00085896, -0.00000113, 0.00000000],
+        [-6.27211158, -0.00085432, 0.00052367, 0.00085873, -0.00000113, 0.00000000],
+        [-6.27211220, -0.00085408, 0.00052352, 0.00085849, -0.00000113, 0.00000000],
+        [-6.27211281, -0.00085385, 0.00052338, 0.00085825, -0.00000113, 0.00000000],
+        [-6.27211343, -0.00085361, 0.00052323, 0.00085801, -0.00000113, 0.00000000],
+        [-6.27211404, -0.00085338, 0.00052309, 0.00085778, -0.00000113, 0.00000000],
+        [-6.27211466, -0.00085314, 0.00052295, 0.00085754, -0.00000113, 0.00000000],
+        [-6.27211527, -0.00085291, 0.00052280, 0.00085731, -0.00000113, 0.00000000],
+        [-6.27211589, -0.00085267, 0.00052266, 0.00085707, -0.00000113, 0.00000000],
+        [-6.27211650, -0.00085244, 0.00052251, 0.00085683, -0.00000113, 0.00000000],
+        [-6.27211711, -0.00085220, 0.00052237, 0.00085660, -0.00000113, 0.00000000],
+        [-6.27211772, -0.00085197, 0.00052222, 0.00085636, -0.00000113, 0.00000000],
+        [-6.27211833, -0.00085173, 0.00052208, 0.00085613, -0.00000113, 0.00000000],
+        [-6.27211895, -0.00085150, 0.00052194, 0.00085589, -0.00000113, 0.00000000],
+        [-6.27211956, -0.00085127, 0.00052179, 0.00085565, -0.00000113, 0.00000000],
+        [-6.27212017, -0.00085103, 0.00052165, 0.00085542, -0.00000113, 0.00000000],
+        [-6.27212078, -0.00085080, 0.00052151, 0.00085518, -0.00000113, 0.00000000],
+        [-6.27212138, -0.00085056, 0.00052136, 0.00085495, -0.00000113, 0.00000000],
+        [-6.27212199, -0.00085033, 0.00052122, 0.00085471, -0.00000113, 0.00000000],
+        [-6.27212260, -0.00085010, 0.00052108, 0.00085448, -0.00000113, 0.00000000],
+        [-6.27212321, -0.00084986, 0.00052093, 0.00085425, -0.00000113, 0.00000000],
+        [-6.27212381, -0.00084963, 0.00052079, 0.00085401, -0.00000113, 0.00000000],
+        [-6.27212442, -0.00084940, 0.00052065, 0.00085378, -0.00000113, 0.00000000],
+        [-6.27212503, -0.00084916, 0.00052050, 0.00085354, -0.00000113, 0.00000000],
+        [-6.27212563, -0.00084893, 0.00052036, 0.00085331, -0.00000113, 0.00000000],
+        [-6.27212624, -0.00084870, 0.00052022, 0.00085307, -0.00000113, 0.00000000],
+        [-6.27212684, -0.00084847, 0.00052008, 0.00085284, -0.00000113, 0.00000000],
+        [-6.27212744, -0.00084823, 0.00051993, 0.00085261, -0.00000113, 0.00000000],
+        [-6.27212805, -0.00084800, 0.00051979, 0.00085237, -0.00000113, 0.00000000],
+        [-6.27212865, -0.00084777, 0.00051965, 0.00085214, -0.00000113, 0.00000000],
+        [-6.27212925, -0.00084754, 0.00051951, 0.00085191, -0.00000113, 0.00000000],
+        [-6.27212986, -0.00084730, 0.00051936, 0.00085167, -0.00000113, 0.00000000],
+        [-6.27213046, -0.00084707, 0.00051922, 0.00085144, -0.00000113, 0.00000000],
+        [-6.27213106, -0.00084684, 0.00051908, 0.00085121, -0.00000113, 0.00000000],
+        [-6.27213166, -0.00084661, 0.00051894, 0.00085097, -0.00000113, 0.00000000],
+        [-6.27213226, -0.00084638, 0.00051879, 0.00085074, -0.00000113, 0.00000000],
+        [-6.27213286, -0.00084615, 0.00051865, 0.00085051, -0.00000113, 0.00000000],
+        [-6.27213345, -0.00084592, 0.00051851, 0.00085028, -0.00000113, 0.00000000],
+        [-6.27213405, -0.00084568, 0.00051837, 0.00085004, -0.00000113, 0.00000000],
+        [-6.27213465, -0.00084545, 0.00051823, 0.00084981, -0.00000113, 0.00000000],
+        [-6.27213525, -0.00084522, 0.00051809, 0.00084958, -0.00000113, 0.00000000],
+        [-6.27213585, -0.00084499, 0.00051794, 0.00084935, -0.00000113, 0.00000000],
+        [-6.27213644, -0.00084476, 0.00051780, 0.00084912, -0.00000113, 0.00000000],
+        [-6.27213704, -0.00084453, 0.00051766, 0.00084888, -0.00000113, 0.00000000],
+        [-6.27213763, -0.00084430, 0.00051752, 0.00084865, -0.00000113, 0.00000000],
+        [-6.27213823, -0.00084407, 0.00051738, 0.00084842, -0.00000113, 0.00000000],
+        [-6.27213882, -0.00084384, 0.00051724, 0.00084819, -0.00000113, 0.00000000],
+        [-6.27213942, -0.00084361, 0.00051710, 0.00084796, -0.00000113, 0.00000000],
+        [-6.27214001, -0.00084338, 0.00051696, 0.00084773, -0.00000113, 0.00000000],
+        [-6.27214060, -0.00084315, 0.00051681, 0.00084750, -0.00000113, 0.00000000],
+        [-6.27214120, -0.00084292, 0.00051667, 0.00084727, -0.00000113, 0.00000000],
+        [-6.27214179, -0.00084269, 0.00051653, 0.00084703, -0.00000113, 0.00000000],
+        [-6.27214238, -0.00084246, 0.00051639, 0.00084680, -0.00000113, 0.00000000],
+        [-6.27214297, -0.00084223, 0.00051625, 0.00084657, -0.00000113, 0.00000000],
+        [-6.27214356, -0.00084200, 0.00051611, 0.00084634, -0.00000113, 0.00000000],
+        [-6.27214415, -0.00084178, 0.00051597, 0.00084611, -0.00000113, 0.00000000],
+        [-6.27214474, -0.00084155, 0.00051583, 0.00084588, -0.00000113, 0.00000000],
+        [-6.27214533, -0.00084132, 0.00051569, 0.00084565, -0.00000113, 0.00000000],
+        [-6.27214592, -0.00084109, 0.00051555, 0.00084542, -0.00000113, 0.00000000],
+        [-6.27214651, -0.00084086, 0.00051541, 0.00084519, -0.00000113, 0.00000000],
+        [-6.27214709, -0.00084063, 0.00051527, 0.00084496, -0.00000113, 0.00000000],
+        [-6.27214768, -0.00084040, 0.00051513, 0.00084473, -0.00000113, 0.00000000],
+        [-6.27214827, -0.00084018, 0.00051499, 0.00084451, -0.00000113, 0.00000000],
+        [-6.27214885, -0.00083995, 0.00051485, 0.00084428, -0.00000113, 0.00000000],
+        [-6.27214944, -0.00083972, 0.00051471, 0.00084405, -0.00000113, 0.00000000],
+        [-6.27215002, -0.00083949, 0.00051457, 0.00084382, -0.00000113, 0.00000000],
+        [-6.27215061, -0.00083926, 0.00051443, 0.00084359, -0.00000113, 0.00000000],
+        [-6.27215119, -0.00083904, 0.00051429, 0.00084336, -0.00000113, 0.00000000],
+        [-6.27215178, -0.00083881, 0.00051415, 0.00084313, -0.00000113, 0.00000000],
+        [-6.27215236, -0.00083858, 0.00051401, 0.00084290, -0.00000113, 0.00000000],
+        [-6.27215294, -0.00083836, 0.00051387, 0.00084268, -0.00000113, 0.00000000],
+        [-6.27215353, -0.00083813, 0.00051373, 0.00084245, -0.00000113, 0.00000000],
+        [-6.27215411, -0.00083790, 0.00051359, 0.00084222, -0.00000113, 0.00000000],
+        [-6.27215469, -0.00083768, 0.00051345, 0.00084199, -0.00000113, 0.00000000],
+        [-6.27215527, -0.00083745, 0.00051332, 0.00084176, -0.00000113, 0.00000000],
+        [-6.27215585, -0.00083722, 0.00051318, 0.00084154, -0.00000113, 0.00000000],
+        [-6.27215643, -0.00083700, 0.00051304, 0.00084131, -0.00000113, 0.00000000],
+        [-6.27215701, -0.00083677, 0.00051290, 0.00084108, -0.00000113, 0.00000000],
+        [-6.27215759, -0.00083654, 0.00051276, 0.00084085, -0.00000113, 0.00000000],
+        [-6.27215817, -0.00083632, 0.00051262, 0.00084063, -0.00000113, 0.00000000],
+        [-6.27215875, -0.00083609, 0.00051248, 0.00084040, -0.00000113, 0.00000000],
+        [-6.27215933, -0.00083587, 0.00051234, 0.00084017, -0.00000113, 0.00000000],
+        [-6.27215990, -0.00083564, 0.00051221, 0.00083995, -0.00000113, 0.00000000],
+        [-6.27216048, -0.00083541, 0.00051207, 0.00083972, -0.00000113, 0.00000000],
+        [-6.27216106, -0.00083519, 0.00051193, 0.00083949, -0.00000113, 0.00000000],
+        [-6.27216164, -0.00083496, 0.00051179, 0.00083927, -0.00000113, 0.00000000],
+        [-6.27216221, -0.00083474, 0.00051165, 0.00083904, -0.00000113, 0.00000000],
+        [-6.27216279, -0.00083451, 0.00051151, 0.00083881, -0.00000113, 0.00000000],
+        [-6.27216336, -0.00083429, 0.00051138, 0.00083859, -0.00000113, 0.00000000],
+        [-6.27216394, -0.00083406, 0.00051124, 0.00083836, -0.00000113, 0.00000000],
+        [-6.27216451, -0.00083384, 0.00051110, 0.00083813, -0.00000113, 0.00000000],
+        [-6.27216508, -0.00083361, 0.00051096, 0.00083791, -0.00000113, 0.00000000],
+        [-6.27216566, -0.00083339, 0.00051083, 0.00083768, -0.00000113, 0.00000000],
+        [-6.27216623, -0.00083317, 0.00051069, 0.00083746, -0.00000113, 0.00000000],
+        [-6.27216680, -0.00083294, 0.00051055, 0.00083723, -0.00000113, 0.00000000],
+        [-6.27216737, -0.00083272, 0.00051041, 0.00083701, -0.00000113, 0.00000000],
+        [-6.27216794, -0.00083249, 0.00051028, 0.00083678, -0.00000113, 0.00000000],
+        [-6.27216851, -0.00083227, 0.00051014, 0.00083656, -0.00000113, 0.00000000],
+        [-6.27216909, -0.00083205, 0.00051000, 0.00083633, -0.00000113, 0.00000000],
+        [-6.27216966, -0.00083182, 0.00050986, 0.00083611, -0.00000113, 0.00000000],
+        [-6.27217022, -0.00083160, 0.00050973, 0.00083588, -0.00000113, 0.00000000],
+        [-6.27217079, -0.00083138, 0.00050959, 0.00083566, -0.00000113, 0.00000000],
+        [-6.27217136, -0.00083115, 0.00050945, 0.00083543, -0.00000113, 0.00000000],
+        [-6.27217193, -0.00083093, 0.00050932, 0.00083521, -0.00000113, 0.00000000],
+        [-6.27217250, -0.00083071, 0.00050918, 0.00083499, -0.00000113, 0.00000000],
+        [-6.27217307, -0.00083048, 0.00050904, 0.00083476, -0.00000113, 0.00000000],
+        [-6.27217363, -0.00083026, 0.00050891, 0.00083454, -0.00000113, 0.00000000],
+        [-6.27217420, -0.00083004, 0.00050877, 0.00083431, -0.00000113, 0.00000000],
+        [-6.27217477, -0.00082982, 0.00050863, 0.00083409, -0.00000113, 0.00000000],
+        [-6.27217533, -0.00082959, 0.00050850, 0.00083387, -0.00000113, 0.00000000],
+        [-6.27217590, -0.00082937, 0.00050836, 0.00083364, -0.00000113, 0.00000000],
+        [-6.27217646, -0.00082915, 0.00050822, 0.00083342, -0.00000113, 0.00000000],
+        [-6.27217703, -0.00082893, 0.00050809, 0.00083320, -0.00000113, 0.00000000],
+        [-6.27217759, -0.00082871, 0.00050795, 0.00083297, -0.00000113, 0.00000000],
+        [-6.27217815, -0.00082848, 0.00050782, 0.00083275, -0.00000113, 0.00000000],
+        [-6.27217872, -0.00082826, 0.00050768, 0.00083253, -0.00000113, 0.00000000],
+        [-6.27217928, -0.00082804, 0.00050754, 0.00083230, -0.00000113, 0.00000000],
+        [-6.27217984, -0.00082782, 0.00050741, 0.00083208, -0.00000113, 0.00000000],
+        [-6.27218040, -0.00082760, 0.00050727, 0.00083186, -0.00000113, 0.00000000],
+        [-6.27218097, -0.00082738, 0.00050714, 0.00083164, -0.00000113, 0.00000000],
+        [-6.27218153, -0.00082716, 0.00050700, 0.00083141, -0.00000113, 0.00000000],
+        [-6.27218209, -0.00082693, 0.00050686, 0.00083119, -0.00000113, 0.00000000],
+        [-6.27218265, -0.00082671, 0.00050673, 0.00083097, -0.00000113, 0.00000000],
+        [-6.27218321, -0.00082649, 0.00050659, 0.00083075, -0.00000113, 0.00000000],
+        [-6.27218377, -0.00082627, 0.00050646, 0.00083053, -0.00000113, 0.00000000],
+        [-6.27218433, -0.00082605, 0.00050632, 0.00083031, -0.00000113, 0.00000000],
+        [-6.27218488, -0.00082583, 0.00050619, 0.00083008, -0.00000113, 0.00000000],
+        [-6.27218544, -0.00082561, 0.00050605, 0.00082986, -0.00000113, 0.00000000],
+        [-6.27218600, -0.00082539, 0.00050592, 0.00082964, -0.00000113, 0.00000000],
+        [-6.27218656, -0.00082517, 0.00050578, 0.00082942, -0.00000113, 0.00000000],
+        [-6.27218711, -0.00082495, 0.00050565, 0.00082920, -0.00000113, 0.00000000],
+        [-6.27218767, -0.00082473, 0.00050551, 0.00082898, -0.00000113, 0.00000000],
+        [-6.27218823, -0.00082451, 0.00050538, 0.00082876, -0.00000113, 0.00000000],
+        [-6.27218878, -0.00082429, 0.00050524, 0.00082854, -0.00000113, 0.00000000],
+        [-6.27218934, -0.00082407, 0.00050511, 0.00082832, -0.00000113, 0.00000000],
+        [-6.27218989, -0.00082385, 0.00050497, 0.00082810, -0.00000113, 0.00000000],
+        [-6.27219045, -0.00082363, 0.00050484, 0.00082787, -0.00000113, 0.00000000],
+        [-6.27219100, -0.00082341, 0.00050471, 0.00082765, -0.00000113, 0.00000000],
+        [-6.27219155, -0.00082320, 0.00050457, 0.00082743, -0.00000113, 0.00000000],
+        [-6.27219211, -0.00082298, 0.00050444, 0.00082721, -0.00000113, 0.00000000],
+        [-6.27219266, -0.00082276, 0.00050430, 0.00082699, -0.00000113, 0.00000000],
+        [-6.27219321, -0.00082254, 0.00050417, 0.00082677, -0.00000113, 0.00000000],
+        [-6.27219376, -0.00082232, 0.00050403, 0.00082656, -0.00000113, 0.00000000],
+        [-6.27219432, -0.00082210, 0.00050390, 0.00082634, -0.00000113, 0.00000000],
+        [-6.27219487, -0.00082188, 0.00050377, 0.00082612, -0.00000113, 0.00000000],
+        [-6.27219542, -0.00082167, 0.00050363, 0.00082590, -0.00000113, 0.00000000],
+        [-6.27219597, -0.00082145, 0.00050350, 0.00082568, -0.00000113, 0.00000000],
+        [-6.27219652, -0.00082123, 0.00050337, 0.00082546, -0.00000113, 0.00000000],
+        [-6.27219707, -0.00082101, 0.00050323, 0.00082524, -0.00000113, 0.00000000],
+        [-6.27219762, -0.00082080, 0.00050310, 0.00082502, -0.00000113, 0.00000000],
+        [-6.27219817, -0.00082058, 0.00050296, 0.00082480, -0.00000113, 0.00000000],
+        [-6.27219872, -0.00082036, 0.00050283, 0.00082458, -0.00000113, 0.00000000],
+        [-6.27219926, -0.00082014, 0.00050270, 0.00082436, -0.00000113, 0.00000000],
+        [-6.27219981, -0.00081993, 0.00050256, 0.00082415, -0.00000113, 0.00000000],
+        [-6.27220036, -0.00081971, 0.00050243, 0.00082393, -0.00000113, 0.00000000],
+        [-6.27220091, -0.00081949, 0.00050230, 0.00082371, -0.00000113, 0.00000000],
+        [-6.27220145, -0.00081927, 0.00050216, 0.00082349, -0.00000113, 0.00000000],
+        [-6.27220200, -0.00081906, 0.00050203, 0.00082327, -0.00000113, 0.00000000],
+        [-6.27220254, -0.00081884, 0.00050190, 0.00082306, -0.00000113, 0.00000000],
+        [-6.27220309, -0.00081862, 0.00050177, 0.00082284, -0.00000113, 0.00000000],
+        [-6.27220363, -0.00081841, 0.00050163, 0.00082262, -0.00000113, 0.00000000],
+        [-6.27220418, -0.00081819, 0.00050150, 0.00082240, -0.00000113, 0.00000000],
+        [-6.27220472, -0.00081798, 0.00050137, 0.00082219, -0.00000113, 0.00000000],
+        [-6.27220527, -0.00081776, 0.00050124, 0.00082197, -0.00000113, 0.00000000],
+        [-6.27220581, -0.00081754, 0.00050110, 0.00082175, -0.00000113, 0.00000000],
+        [-6.27220635, -0.00081733, 0.00050097, 0.00082153, -0.00000113, 0.00000000],
+        [-6.27220690, -0.00081711, 0.00050084, 0.00082132, -0.00000113, 0.00000000],
+        [-6.27220744, -0.00081690, 0.00050071, 0.00082110, -0.00000113, 0.00000000],
+        [-6.27220798, -0.00081668, 0.00050057, 0.00082088, -0.00000113, 0.00000000],
+        [-6.27220852, -0.00081647, 0.00050044, 0.00082067, -0.00000113, 0.00000000],
+        [-6.27220906, -0.00081625, 0.00050031, 0.00082045, -0.00000113, 0.00000000],
+        [-6.27220960, -0.00081604, 0.00050018, 0.00082024, -0.00000113, 0.00000000],
+        [-6.27221014, -0.00081582, 0.00050005, 0.00082002, -0.00000113, 0.00000000],
+        [-6.27221068, -0.00081561, 0.00049991, 0.00081980, -0.00000113, 0.00000000],
+        [-6.27221122, -0.00081539, 0.00049978, 0.00081959, -0.00000113, 0.00000000],
+        [-6.27221176, -0.00081518, 0.00049965, 0.00081937, -0.00000113, 0.00000000],
+        [-6.27221230, -0.00081496, 0.00049952, 0.00081916, -0.00000113, 0.00000000],
+        [-6.27221284, -0.00081475, 0.00049939, 0.00081894, -0.00000113, 0.00000000],
+        [-6.27221338, -0.00081453, 0.00049926, 0.00081872, -0.00000113, 0.00000000],
+        [-6.27221391, -0.00081432, 0.00049912, 0.00081851, -0.00000113, 0.00000000],
+        [-6.27221445, -0.00081410, 0.00049899, 0.00081829, -0.00000113, 0.00000000],
+        [-6.27221499, -0.00081389, 0.00049886, 0.00081808, -0.00000113, 0.00000000],
+        [-6.27221552, -0.00081368, 0.00049873, 0.00081786, -0.00000113, 0.00000000],
+        [-6.27221606, -0.00081346, 0.00049860, 0.00081765, -0.00000113, 0.00000000],
+        [-6.27221660, -0.00081325, 0.00049847, 0.00081743, -0.00000113, 0.00000000],
+        [-6.27221713, -0.00081303, 0.00049834, 0.00081722, -0.00000113, 0.00000000],
+        [-6.27221767, -0.00081282, 0.00049821, 0.00081700, -0.00000113, 0.00000000],
+        [-6.27221820, -0.00081261, 0.00049807, 0.00081679, -0.00000113, 0.00000000],
+        [-6.27221874, -0.00081239, 0.00049794, 0.00081657, -0.00000113, 0.00000000],
+        [-6.27221927, -0.00081218, 0.00049781, 0.00081636, -0.00000113, 0.00000000],
+        [-6.27221980, -0.00081197, 0.00049768, 0.00081615, -0.00000113, 0.00000000],
+        [-6.27222034, -0.00081176, 0.00049755, 0.00081593, -0.00000113, 0.00000000],
+        [-6.27222087, -0.00081154, 0.00049742, 0.00081572, -0.00000113, 0.00000000],
+        [-6.27222140, -0.00081133, 0.00049729, 0.00081550, -0.00000113, 0.00000000],
+        [-6.27222193, -0.00081112, 0.00049716, 0.00081529, -0.00000113, 0.00000000],
+        [-6.27222247, -0.00081090, 0.00049703, 0.00081508, -0.00000113, 0.00000000],
+        [-6.27222300, -0.00081069, 0.00049690, 0.00081486, -0.00000113, 0.00000000],
+        [-6.27222353, -0.00081048, 0.00049677, 0.00081465, -0.00000113, 0.00000000],
+        [-6.27222406, -0.00081027, 0.00049664, 0.00081444, -0.00000113, 0.00000000],
+        [-6.27222459, -0.00081006, 0.00049651, 0.00081422, -0.00000113, 0.00000000],
+        [-6.27222512, -0.00080984, 0.00049638, 0.00081401, -0.00000113, 0.00000000],
+        [-6.27222565, -0.00080963, 0.00049625, 0.00081380, -0.00000113, 0.00000000],
+        [-6.27222618, -0.00080942, 0.00049612, 0.00081359, -0.00000113, 0.00000000],
+        [-6.27222671, -0.00080921, 0.00049599, 0.00081337, -0.00000113, 0.00000000],
+        [-6.27222723, -0.00080900, 0.00049586, 0.00081316, -0.00000113, 0.00000000],
+        [-6.27222776, -0.00080879, 0.00049573, 0.00081295, -0.00000113, 0.00000000],
+        [-6.27222829, -0.00080857, 0.00049560, 0.00081273, -0.00000113, 0.00000000],
+        [-6.27222882, -0.00080836, 0.00049547, 0.00081252, -0.00000113, 0.00000000],
+        [-6.27222934, -0.00080815, 0.00049534, 0.00081231, -0.00000113, 0.00000000],
+        [-6.27222987, -0.00080794, 0.00049521, 0.00081210, -0.00000113, 0.00000000],
+        [-6.27223040, -0.00080773, 0.00049508, 0.00081189, -0.00000113, 0.00000000],
+        [-6.27223092, -0.00080752, 0.00049495, 0.00081167, -0.00000113, 0.00000000],
+        [-6.27223145, -0.00080731, 0.00049482, 0.00081146, -0.00000113, 0.00000000],
+        [-6.27223197, -0.00080710, 0.00049469, 0.00081125, -0.00000113, 0.00000000],
+        [-6.27223250, -0.00080689, 0.00049457, 0.00081104, -0.00000113, 0.00000000],
+        [-6.27223302, -0.00080668, 0.00049444, 0.00081083, -0.00000113, 0.00000000],
+        [-6.27223355, -0.00080647, 0.00049431, 0.00081062, -0.00000113, 0.00000000],
+        [-6.27223407, -0.00080626, 0.00049418, 0.00081041, -0.00000113, 0.00000000],
+        [-6.27223460, -0.00080605, 0.00049405, 0.00081019, -0.00000113, 0.00000000],
+        [-6.27223512, -0.00080584, 0.00049392, 0.00080998, -0.00000113, 0.00000000],
+        [-6.27223564, -0.00080563, 0.00049379, 0.00080977, -0.00000113, 0.00000000],
+        [-6.27223616, -0.00080542, 0.00049366, 0.00080956, -0.00000113, 0.00000000],
+        [-6.27223669, -0.00080521, 0.00049354, 0.00080935, -0.00000113, 0.00000000],
+        [-6.27223721, -0.00080500, 0.00049341, 0.00080914, -0.00000113, 0.00000000],
+        [-6.27223773, -0.00080479, 0.00049328, 0.00080893, -0.00000113, 0.00000000],
+        [-6.27223825, -0.00080458, 0.00049315, 0.00080872, -0.00000113, 0.00000000],
+        [-6.27223877, -0.00080437, 0.00049302, 0.00080851, -0.00000113, 0.00000000],
+        [-6.27223929, -0.00080416, 0.00049289, 0.00080830, -0.00000113, 0.00000000],
+        [-6.27223981, -0.00080395, 0.00049277, 0.00080809, -0.00000113, 0.00000000],
+        [-6.27224033, -0.00080375, 0.00049264, 0.00080788, -0.00000113, 0.00000000],
+        [-6.27224085, -0.00080354, 0.00049251, 0.00080767, -0.00000113, 0.00000000],
+        [-6.27224137, -0.00080333, 0.00049238, 0.00080746, -0.00000113, 0.00000000],
+        [-6.27224189, -0.00080312, 0.00049225, 0.00080725, -0.00000113, 0.00000000],
+        [-6.27224241, -0.00080291, 0.00049213, 0.00080704, -0.00000113, 0.00000000],
+        [-6.27224292, -0.00080270, 0.00049200, 0.00080683, -0.00000113, 0.00000000],
+        [-6.27224344, -0.00080250, 0.00049187, 0.00080662, -0.00000113, 0.00000000],
+        [-6.27224396, -0.00080229, 0.00049174, 0.00080641, -0.00000113, 0.00000000],
+        [-6.27224447, -0.00080208, 0.00049162, 0.00080621, -0.00000113, 0.00000000],
+        [-6.27224499, -0.00080187, 0.00049149, 0.00080600, -0.00000113, 0.00000000],
+        [-6.27224551, -0.00080166, 0.00049136, 0.00080579, -0.00000113, 0.00000000],
+        [-6.27224602, -0.00080146, 0.00049123, 0.00080558, -0.00000113, 0.00000000],
+        [-6.27224654, -0.00080125, 0.00049111, 0.00080537, -0.00000113, 0.00000000],
+        [-6.27224705, -0.00080104, 0.00049098, 0.00080516, -0.00000113, 0.00000000],
+        [-6.27224757, -0.00080084, 0.00049085, 0.00080495, -0.00000113, 0.00000000],
+        [-6.27224808, -0.00080063, 0.00049072, 0.00080475, -0.00000113, 0.00000000],
+        [-6.27224860, -0.00080042, 0.00049060, 0.00080454, -0.00000113, 0.00000000],
+        [-6.27224911, -0.00080021, 0.00049047, 0.00080433, -0.00000113, 0.00000000],
+        [-6.27224962, -0.00080001, 0.00049034, 0.00080412, -0.00000113, 0.00000000],
+        [-6.27225014, -0.00079980, 0.00049022, 0.00080391, -0.00000113, 0.00000000],
+        [-6.27225065, -0.00079959, 0.00049009, 0.00080371, -0.00000113, 0.00000000],
+        [-6.27225116, -0.00079939, 0.00048996, 0.00080350, -0.00000113, 0.00000000],
+        [-6.27225168, -0.00079918, 0.00048984, 0.00080329, -0.00000113, 0.00000000],
+        [-6.27225219, -0.00079897, 0.00048971, 0.00080308, -0.00000113, 0.00000000],
+        [-6.27225270, -0.00079877, 0.00048958, 0.00080288, -0.00000113, 0.00000000],
+        [-6.27225321, -0.00079856, 0.00048946, 0.00080267, -0.00000113, 0.00000000],
+        [-6.27225372, -0.00079836, 0.00048933, 0.00080246, -0.00000113, 0.00000000],
+        [-6.27225423, -0.00079815, 0.00048921, 0.00080226, -0.00000113, 0.00000000],
+        [-6.27225474, -0.00079795, 0.00048908, 0.00080205, -0.00000113, 0.00000000],
+        [-6.27225525, -0.00079774, 0.00048895, 0.00080184, -0.00000113, 0.00000000],
+        [-6.27225576, -0.00079753, 0.00048883, 0.00080164, -0.00000113, 0.00000000],
+        [-6.27225627, -0.00079733, 0.00048870, 0.00080143, -0.00000113, 0.00000000],
+        [-6.27225678, -0.00079712, 0.00048857, 0.00080122, -0.00000113, 0.00000000],
+        [-6.27225729, -0.00079692, 0.00048845, 0.00080102, -0.00000113, 0.00000000],
+        [-6.27225780, -0.00079671, 0.00048832, 0.00080081, -0.00000113, 0.00000000],
+        [-6.27225830, -0.00079651, 0.00048820, 0.00080060, -0.00000113, 0.00000000],
+        [-6.27225881, -0.00079630, 0.00048807, 0.00080040, -0.00000113, 0.00000000],
+        [-6.27225932, -0.00079610, 0.00048795, 0.00080019, -0.00000113, 0.00000000],
+        [-6.27225983, -0.00079589, 0.00048782, 0.00079999, -0.00000113, 0.00000000],
+        [-6.27226033, -0.00079569, 0.00048769, 0.00079978, -0.00000113, 0.00000000],
+        [-6.27226084, -0.00079548, 0.00048757, 0.00079957, -0.00000113, 0.00000000],
+        [-6.27226134, -0.00079528, 0.00048744, 0.00079937, -0.00000113, 0.00000000],
+        [-6.27226185, -0.00079508, 0.00048732, 0.00079916, -0.00000113, 0.00000000],
+        [-6.27226235, -0.00079487, 0.00048719, 0.00079896, -0.00000113, 0.00000000],
+        [-6.27226286, -0.00079467, 0.00048707, 0.00079875, -0.00000113, 0.00000000],
+        [-6.27226336, -0.00079446, 0.00048694, 0.00079855, -0.00000113, 0.00000000],
+        [-6.27226387, -0.00079426, 0.00048682, 0.00079834, -0.00000113, 0.00000000],
+        [-6.27226437, -0.00079406, 0.00048669, 0.00079814, -0.00000113, 0.00000000],
+        [-6.27226488, -0.00079385, 0.00048657, 0.00079793, -0.00000113, 0.00000000],
+        [-6.27226538, -0.00079365, 0.00048644, 0.00079773, -0.00000113, 0.00000000],
+        [-6.27226588, -0.00079345, 0.00048632, 0.00079752, -0.00000113, 0.00000000],
+        [-6.27226639, -0.00079324, 0.00048619, 0.00079732, -0.00000113, 0.00000000],
+        [-6.27226689, -0.00079304, 0.00048607, 0.00079712, -0.00000113, 0.00000000],
+        [-6.27226739, -0.00079284, 0.00048594, 0.00079691, -0.00000113, 0.00000000],
+        [-6.27226789, -0.00079263, 0.00048582, 0.00079671, -0.00000113, 0.00000000],
+        [-6.27226839, -0.00079243, 0.00048570, 0.00079650, -0.00000113, 0.00000000],
+        [-6.27226889, -0.00079223, 0.00048557, 0.00079630, -0.00000113, 0.00000000],
+        [-6.27226939, -0.00079202, 0.00048545, 0.00079610, -0.00000113, 0.00000000],
+        [-6.27226990, -0.00079182, 0.00048532, 0.00079589, -0.00000113, 0.00000000],
+        [-6.27227040, -0.00079162, 0.00048520, 0.00079569, -0.00000113, 0.00000000],
+        [-6.27227090, -0.00079142, 0.00048507, 0.00079549, -0.00000113, 0.00000000],
+        [-6.27227139, -0.00079121, 0.00048495, 0.00079528, -0.00000113, 0.00000000],
+        [-6.27227189, -0.00079101, 0.00048483, 0.00079508, -0.00000113, 0.00000000],
+        [-6.27227239, -0.00079081, 0.00048470, 0.00079488, -0.00000113, 0.00000000],
+        [-6.27227289, -0.00079061, 0.00048458, 0.00079467, -0.00000113, 0.00000000],
+        [-6.27227339, -0.00079041, 0.00048445, 0.00079447, -0.00000113, 0.00000000],
+        [-6.27227389, -0.00079020, 0.00048433, 0.00079427, -0.00000113, 0.00000000],
+        [-6.27227439, -0.00079000, 0.00048421, 0.00079406, -0.00000113, 0.00000000],
+        [-6.27227488, -0.00078980, 0.00048408, 0.00079386, -0.00000113, 0.00000000],
+        [-6.27227538, -0.00078960, 0.00048396, 0.00079366, -0.00000113, 0.00000000],
+        [-6.27227588, -0.00078940, 0.00048384, 0.00079346, -0.00000113, 0.00000000],
+        [-6.27227637, -0.00078920, 0.00048371, 0.00079325, -0.00000113, 0.00000000],
+        [-6.27227687, -0.00078900, 0.00048359, 0.00079305, -0.00000113, 0.00000000],
+        [-6.27227736, -0.00078880, 0.00048347, 0.00079285, -0.00000113, 0.00000000],
+        [-6.27227786, -0.00078859, 0.00048334, 0.00079265, -0.00000113, 0.00000000],
+        [-6.27227836, -0.00078839, 0.00048322, 0.00079245, -0.00000113, 0.00000000],
+        [-6.27227885, -0.00078819, 0.00048310, 0.00079224, -0.00000113, 0.00000000],
+        [-6.27227934, -0.00078799, 0.00048297, 0.00079204, -0.00000113, 0.00000000],
+        [-6.27227984, -0.00078779, 0.00048285, 0.00079184, -0.00000113, 0.00000000],
+        [-6.27228033, -0.00078759, 0.00048273, 0.00079164, -0.00000113, 0.00000000],
+        [-6.27228083, -0.00078739, 0.00048260, 0.00079144, -0.00000113, 0.00000000],
+        [-6.27228132, -0.00078719, 0.00048248, 0.00079124, -0.00000113, 0.00000000],
+        [-6.27228181, -0.00078699, 0.00048236, 0.00079104, -0.00000113, 0.00000000],
+        [-6.27228231, -0.00078679, 0.00048224, 0.00079083, -0.00000113, 0.00000000],
+        [-6.27228280, -0.00078659, 0.00048211, 0.00079063, -0.00000113, 0.00000000],
+        [-6.27228329, -0.00078639, 0.00048199, 0.00079043, -0.00000113, 0.00000000],
+        [-6.27228378, -0.00078619, 0.00048187, 0.00079023, -0.00000113, 0.00000000],
+        [-6.27228427, -0.00078599, 0.00048175, 0.00079003, -0.00000113, 0.00000000],
+        [-6.27228476, -0.00078579, 0.00048162, 0.00078983, -0.00000113, 0.00000000],
+        [-6.27228526, -0.00078559, 0.00048150, 0.00078963, -0.00000113, 0.00000000],
+        [-6.27228575, -0.00078539, 0.00048138, 0.00078943, -0.00000113, 0.00000000],
+        [-6.27228624, -0.00078519, 0.00048126, 0.00078923, -0.00000113, 0.00000000],
+        [-6.27228673, -0.00078500, 0.00048113, 0.00078903, -0.00000113, 0.00000000],
+        [-6.27228722, -0.00078480, 0.00048101, 0.00078883, -0.00000113, 0.00000000],
+        [-6.27228771, -0.00078460, 0.00048089, 0.00078863, -0.00000113, 0.00000000],
+        [-6.27228819, -0.00078440, 0.00048077, 0.00078843, -0.00000113, 0.00000000],
+        [-6.27228868, -0.00078420, 0.00048065, 0.00078823, -0.00000113, 0.00000000],
+        [-6.27228917, -0.00078400, 0.00048052, 0.00078803, -0.00000113, 0.00000000],
+        [-6.27228966, -0.00078380, 0.00048040, 0.00078783, -0.00000113, 0.00000000],
+        [-6.27229015, -0.00078360, 0.00048028, 0.00078763, -0.00000113, 0.00000000],
+        [-6.27229064, -0.00078341, 0.00048016, 0.00078743, -0.00000113, 0.00000000],
+        [-6.27229112, -0.00078321, 0.00048004, 0.00078723, -0.00000113, 0.00000000],
+        [-6.27229161, -0.00078301, 0.00047992, 0.00078703, -0.00000113, 0.00000000],
+        [-6.27229210, -0.00078281, 0.00047979, 0.00078683, -0.00000113, 0.00000000],
+        [-6.27229258, -0.00078261, 0.00047967, 0.00078663, -0.00000113, 0.00000000],
+        [-6.27229307, -0.00078242, 0.00047955, 0.00078644, -0.00000113, 0.00000000],
+        [-6.27229356, -0.00078222, 0.00047943, 0.00078624, -0.00000113, 0.00000000],
+        [-6.27229404, -0.00078202, 0.00047931, 0.00078604, -0.00000113, 0.00000000],
+        [-6.27229453, -0.00078182, 0.00047919, 0.00078584, -0.00000113, 0.00000000],
+        [-6.27229501, -0.00078163, 0.00047907, 0.00078564, -0.00000113, 0.00000000],
+        [-6.27229550, -0.00078143, 0.00047895, 0.00078544, -0.00000113, 0.00000000],
+        [-6.27229598, -0.00078123, 0.00047882, 0.00078524, -0.00000113, 0.00000000],
+        [-6.27229646, -0.00078103, 0.00047870, 0.00078505, -0.00000113, 0.00000000],
+        [-6.27229695, -0.00078084, 0.00047858, 0.00078485, -0.00000113, 0.00000000],
+        [-6.27229743, -0.00078064, 0.00047846, 0.00078465, -0.00000113, 0.00000000],
+        [-6.27229791, -0.00078044, 0.00047834, 0.00078445, -0.00000113, 0.00000000],
+        [-6.27229840, -0.00078025, 0.00047822, 0.00078426, -0.00000113, 0.00000000],
+        [-6.27229888, -0.00078005, 0.00047810, 0.00078406, -0.00000113, 0.00000000],
+        [-6.27229936, -0.00077985, 0.00047798, 0.00078386, -0.00000113, 0.00000000],
+        [-6.27229984, -0.00077966, 0.00047786, 0.00078366, -0.00000113, 0.00000000],
+        [-6.27230033, -0.00077946, 0.00047774, 0.00078346, -0.00000113, 0.00000000],
+        [-6.27230081, -0.00077926, 0.00047762, 0.00078327, -0.00000113, 0.00000000],
+        [-6.27230129, -0.00077907, 0.00047750, 0.00078307, -0.00000113, 0.00000000],
+        [-6.27230177, -0.00077887, 0.00047738, 0.00078287, -0.00000113, 0.00000000],
+        [-6.27230225, -0.00077868, 0.00047726, 0.00078268, -0.00000113, 0.00000000],
+        [-6.27230273, -0.00077848, 0.00047714, 0.00078248, -0.00000113, 0.00000000],
+        [-6.27230321, -0.00077828, 0.00047702, 0.00078228, -0.00000113, 0.00000000],
+        [-6.27230369, -0.00077809, 0.00047690, 0.00078209, -0.00000113, 0.00000000],
+        [-6.27230417, -0.00077789, 0.00047678, 0.00078189, -0.00000113, 0.00000000],
+        [-6.27230465, -0.00077770, 0.00047666, 0.00078169, -0.00000113, 0.00000000],
+        [-6.27230513, -0.00077750, 0.00047654, 0.00078150, -0.00000113, 0.00000000],
+        [-6.27230561, -0.00077731, 0.00047642, 0.00078130, -0.00000113, 0.00000000],
+        [-6.27230609, -0.00077711, 0.00047630, 0.00078110, -0.00000113, 0.00000000],
+        [-6.27230656, -0.00077692, 0.00047618, 0.00078091, -0.00000113, 0.00000000],
+        [-6.27230704, -0.00077672, 0.00047606, 0.00078071, -0.00000113, 0.00000000],
+        [-6.27230752, -0.00077653, 0.00047594, 0.00078052, -0.00000113, 0.00000000],
+        [-6.27230800, -0.00077633, 0.00047582, 0.00078032, -0.00000113, 0.00000000],
+        [-6.27230847, -0.00077614, 0.00047570, 0.00078012, -0.00000113, 0.00000000],
+        [-6.27230895, -0.00077594, 0.00047558, 0.00077993, -0.00000113, 0.00000000],
+        [-6.27230943, -0.00077575, 0.00047546, 0.00077973, -0.00000113, 0.00000000],
+        [-6.27230990, -0.00077556, 0.00047534, 0.00077954, -0.00000113, 0.00000000],
+        [-6.27231038, -0.00077536, 0.00047522, 0.00077934, -0.00000113, 0.00000000],
+        [-6.27231085, -0.00077517, 0.00047510, 0.00077915, -0.00000113, 0.00000000],
+        [-6.27231133, -0.00077497, 0.00047498, 0.00077895, -0.00000113, 0.00000000],
+        [-6.27231180, -0.00077478, 0.00047487, 0.00077876, -0.00000113, 0.00000000],
+        [-6.27231228, -0.00077458, 0.00047475, 0.00077856, -0.00000113, 0.00000000],
+        [-6.27231275, -0.00077439, 0.00047463, 0.00077837, -0.00000113, 0.00000000],
+        [-6.27231323, -0.00077420, 0.00047451, 0.00077817, -0.00000113, 0.00000000],
+        [-6.27231370, -0.00077400, 0.00047439, 0.00077798, -0.00000113, 0.00000000],
+        [-6.27231417, -0.00077381, 0.00047427, 0.00077778, -0.00000113, 0.00000000],
+        [-6.27231465, -0.00077362, 0.00047415, 0.00077759, -0.00000113, 0.00000000],
+        [-6.27231512, -0.00077342, 0.00047403, 0.00077740, -0.00000113, 0.00000000],
+        [-6.27231559, -0.00077323, 0.00047392, 0.00077720, -0.00000113, 0.00000000],
+        [-6.27231607, -0.00077304, 0.00047380, 0.00077701, -0.00000113, 0.00000000],
+        [-6.27231654, -0.00077284, 0.00047368, 0.00077681, -0.00000113, 0.00000000],
+        [-6.27231701, -0.00077265, 0.00047356, 0.00077662, -0.00000113, 0.00000000],
+        [-6.27231748, -0.00077246, 0.00047344, 0.00077643, -0.00000113, 0.00000000],
+        [-6.27231795, -0.00077227, 0.00047332, 0.00077623, -0.00000113, 0.00000000],
+        [-6.27231842, -0.00077207, 0.00047321, 0.00077604, -0.00000113, 0.00000000],
+        [-6.27231889, -0.00077188, 0.00047309, 0.00077584, -0.00000113, 0.00000000],
+        [-6.27231936, -0.00077169, 0.00047297, 0.00077565, -0.00000113, 0.00000000],
+        [-6.27231984, -0.00077150, 0.00047285, 0.00077546, -0.00000113, 0.00000000],
+        [-6.27232031, -0.00077130, 0.00047273, 0.00077526, -0.00000113, 0.00000000],
+        [-6.27232077, -0.00077111, 0.00047262, 0.00077507, -0.00000113, 0.00000000],
+        [-6.27232124, -0.00077092, 0.00047250, 0.00077488, -0.00000113, 0.00000000],
+        [-6.27232171, -0.00077073, 0.00047238, 0.00077469, -0.00000113, 0.00000000],
+        [-6.27232218, -0.00077054, 0.00047226, 0.00077449, -0.00000113, 0.00000000],
+        [-6.27232265, -0.00077034, 0.00047215, 0.00077430, -0.00000113, 0.00000000],
+        [-6.27232312, -0.00077015, 0.00047203, 0.00077411, -0.00000113, 0.00000000],
+        [-6.27232359, -0.00076996, 0.00047191, 0.00077391, -0.00000113, 0.00000000],
+        [-6.27232406, -0.00076977, 0.00047179, 0.00077372, -0.00000113, 0.00000000],
+        [-6.27232452, -0.00076958, 0.00047168, 0.00077353, -0.00000113, 0.00000000],
+        [-6.27232499, -0.00076939, 0.00047156, 0.00077334, -0.00000113, 0.00000000],
+        [-6.27232546, -0.00076920, 0.00047144, 0.00077315, -0.00000113, 0.00000000],
+        [-6.27232592, -0.00076900, 0.00047132, 0.00077295, -0.00000113, 0.00000000],
+        [-6.27232639, -0.00076881, 0.00047121, 0.00077276, -0.00000113, 0.00000000],
+        [-6.27232686, -0.00076862, 0.00047109, 0.00077257, -0.00000113, 0.00000000],
+        [-6.27232732, -0.00076843, 0.00047097, 0.00077238, -0.00000113, 0.00000000],
+        [-6.27232779, -0.00076824, 0.00047086, 0.00077219, -0.00000113, 0.00000000],
+        [-6.27232825, -0.00076805, 0.00047074, 0.00077199, -0.00000113, 0.00000000],
+        [-6.27232872, -0.00076786, 0.00047062, 0.00077180, -0.00000113, 0.00000000],
+        [-6.27232918, -0.00076767, 0.00047050, 0.00077161, -0.00000113, 0.00000000],
+        [-6.27232965, -0.00076748, 0.00047039, 0.00077142, -0.00000113, 0.00000000],
+        [-6.27233011, -0.00076729, 0.00047027, 0.00077123, -0.00000113, 0.00000000],
+        [-6.27233058, -0.00076710, 0.00047015, 0.00077104, -0.00000113, 0.00000000],
+        [-6.27233104, -0.00076691, 0.00047004, 0.00077085, -0.00000113, 0.00000000],
+        [-6.27233150, -0.00076672, 0.00046992, 0.00077066, -0.00000113, 0.00000000],
+        [-6.27233197, -0.00076653, 0.00046981, 0.00077046, -0.00000113, 0.00000000],
+        [-6.27233243, -0.00076634, 0.00046969, 0.00077027, -0.00000113, 0.00000000],
+        [-6.27233289, -0.00076615, 0.00046957, 0.00077008, -0.00000113, 0.00000000],
+        [-6.27233336, -0.00076596, 0.00046946, 0.00076989, -0.00000113, 0.00000000],
+        [-6.27233382, -0.00076577, 0.00046934, 0.00076970, -0.00000113, 0.00000000],
+        [-6.27233428, -0.00076558, 0.00046922, 0.00076951, -0.00000113, 0.00000000],
+        [-6.27233474, -0.00076539, 0.00046911, 0.00076932, -0.00000113, 0.00000000],
+        [-6.27233520, -0.00076520, 0.00046899, 0.00076913, -0.00000113, 0.00000000],
+        [-6.27233566, -0.00076501, 0.00046888, 0.00076894, -0.00000113, 0.00000000],
+        [-6.27233612, -0.00076482, 0.00046876, 0.00076875, -0.00000113, 0.00000000],
+        [-6.27233658, -0.00076464, 0.00046864, 0.00076856, -0.00000113, 0.00000000],
+        [-6.27233705, -0.00076445, 0.00046853, 0.00076837, -0.00000113, 0.00000000],
+        [-6.27233751, -0.00076426, 0.00046841, 0.00076818, -0.00000113, 0.00000000],
+        [-6.27233797, -0.00076407, 0.00046830, 0.00076799, -0.00000113, 0.00000000],
+        [-6.27233843, -0.00076388, 0.00046818, 0.00076780, -0.00000113, 0.00000000],
+        [-6.27233888, -0.00076369, 0.00046806, 0.00076761, -0.00000113, 0.00000000],
+        [-6.27233934, -0.00076350, 0.00046795, 0.00076742, -0.00000113, 0.00000000],
+        [-6.27233980, -0.00076332, 0.00046783, 0.00076723, -0.00000113, 0.00000000],
+        [-6.27234026, -0.00076313, 0.00046772, 0.00076704, -0.00000113, 0.00000000],
+        [-6.27234072, -0.00076294, 0.00046760, 0.00076686, -0.00000113, 0.00000000],
+        [-6.27234118, -0.00076275, 0.00046749, 0.00076667, -0.00000113, 0.00000000],
+        [-6.27234163, -0.00076256, 0.00046737, 0.00076648, -0.00000113, 0.00000000],
+        [-6.27234209, -0.00076238, 0.00046726, 0.00076629, -0.00000113, 0.00000000],
+        [-6.27234255, -0.00076219, 0.00046714, 0.00076610, -0.00000113, 0.00000000],
+        [-6.27234301, -0.00076200, 0.00046703, 0.00076591, -0.00000113, 0.00000000],
+        [-6.27234346, -0.00076181, 0.00046691, 0.00076572, -0.00000113, 0.00000000],
+        [-6.27234392, -0.00076163, 0.00046680, 0.00076553, -0.00000113, 0.00000000],
+        [-6.27234438, -0.00076144, 0.00046668, 0.00076535, -0.00000113, 0.00000000],
+        [-6.27234483, -0.00076125, 0.00046657, 0.00076516, -0.00000113, 0.00000000],
+        [-6.27234529, -0.00076106, 0.00046645, 0.00076497, -0.00000113, 0.00000000],
+        [-6.27234574, -0.00076088, 0.00046634, 0.00076478, -0.00000113, 0.00000000],
+        [-6.27234620, -0.00076069, 0.00046622, 0.00076459, -0.00000113, 0.00000000],
+        [-6.27234665, -0.00076050, 0.00046611, 0.00076441, -0.00000113, 0.00000000],
+        [-6.27234711, -0.00076032, 0.00046599, 0.00076422, -0.00000113, 0.00000000],
+        [-6.27234756, -0.00076013, 0.00046588, 0.00076403, -0.00000113, 0.00000000],
+        [-6.27234802, -0.00075994, 0.00046576, 0.00076384, -0.00000113, 0.00000000],
+        [-6.27234847, -0.00075976, 0.00046565, 0.00076366, -0.00000113, 0.00000000],
+        [-6.27234892, -0.00075957, 0.00046554, 0.00076347, -0.00000113, 0.00000000],
+        [-6.27234938, -0.00075938, 0.00046542, 0.00076328, -0.00000113, 0.00000000],
+        [-6.27234983, -0.00075920, 0.00046531, 0.00076309, -0.00000113, 0.00000000],
+        [-6.27235028, -0.00075901, 0.00046519, 0.00076291, -0.00000113, 0.00000000],
+        [-6.27235074, -0.00075882, 0.00046508, 0.00076272, -0.00000113, 0.00000000],
+        [-6.27235119, -0.00075864, 0.00046496, 0.00076253, -0.00000113, 0.00000000],
+        [-6.27235164, -0.00075845, 0.00046485, 0.00076235, -0.00000113, 0.00000000],
+        [-6.27235209, -0.00075827, 0.00046474, 0.00076216, -0.00000113, 0.00000000],
+        [-6.27235255, -0.00075808, 0.00046462, 0.00076197, -0.00000113, 0.00000000],
+        [-6.27235300, -0.00075790, 0.00046451, 0.00076179, -0.00000113, 0.00000000],
+        [-6.27235345, -0.00075771, 0.00046440, 0.00076160, -0.00000113, 0.00000000],
+        [-6.27235390, -0.00075753, 0.00046428, 0.00076141, -0.00000113, 0.00000000],
+        [-6.27235435, -0.00075734, 0.00046417, 0.00076123, -0.00000113, 0.00000000],
+        [-6.27235480, -0.00075715, 0.00046405, 0.00076104, -0.00000113, 0.00000000],
+        [-6.27235525, -0.00075697, 0.00046394, 0.00076085, -0.00000113, 0.00000000],
+        [-6.27235570, -0.00075678, 0.00046383, 0.00076067, -0.00000113, 0.00000000],
+        [-6.27235615, -0.00075660, 0.00046371, 0.00076048, -0.00000113, 0.00000000],
+        [-6.27235660, -0.00075641, 0.00046360, 0.00076030, -0.00000113, 0.00000000],
+        [-6.27235705, -0.00075623, 0.00046349, 0.00076011, -0.00000113, 0.00000000],
+        [-6.27235750, -0.00075605, 0.00046337, 0.00075992, -0.00000113, 0.00000000],
+        [-6.27235795, -0.00075586, 0.00046326, 0.00075974, -0.00000113, 0.00000000],
+        [-6.27235840, -0.00075568, 0.00046315, 0.00075955, -0.00000113, 0.00000000],
+        [-6.27235884, -0.00075549, 0.00046303, 0.00075937, -0.00000113, 0.00000000],
+        [-6.27235929, -0.00075531, 0.00046292, 0.00075918, -0.00000113, 0.00000000],
+        [-6.27235974, -0.00075512, 0.00046281, 0.00075900, -0.00000113, 0.00000000],
+        [-6.27236019, -0.00075494, 0.00046269, 0.00075881, -0.00000113, 0.00000000],
+        [-6.27236063, -0.00075475, 0.00046258, 0.00075863, -0.00000113, 0.00000000],
+        [-6.27236108, -0.00075457, 0.00046247, 0.00075844, -0.00000113, 0.00000000],
+        [-6.27236153, -0.00075439, 0.00046236, 0.00075826, -0.00000113, 0.00000000],
+        [-6.27236197, -0.00075420, 0.00046224, 0.00075807, -0.00000113, 0.00000000],
+        [-6.27236242, -0.00075402, 0.00046213, 0.00075789, -0.00000113, 0.00000000],
+        [-6.27236287, -0.00075384, 0.00046202, 0.00075770, -0.00000113, 0.00000000],
+        [-6.27236331, -0.00075365, 0.00046191, 0.00075752, -0.00000113, 0.00000000],
+        [-6.27236376, -0.00075347, 0.00046179, 0.00075733, -0.00000113, 0.00000000],
+        [-6.27236420, -0.00075329, 0.00046168, 0.00075715, -0.00000113, 0.00000000],
+        [-6.27236465, -0.00075310, 0.00046157, 0.00075697, -0.00000113, 0.00000000],
+        [-6.27236509, -0.00075292, 0.00046146, 0.00075678, -0.00000113, 0.00000000],
+        [-6.27236554, -0.00075274, 0.00046134, 0.00075660, -0.00000113, 0.00000000],
+        [-6.27236598, -0.00075255, 0.00046123, 0.00075641, -0.00000113, 0.00000000],
+        [-6.27236643, -0.00075237, 0.00046112, 0.00075623, -0.00000113, 0.00000000],
+        [-6.27236687, -0.00075219, 0.00046101, 0.00075605, -0.00000113, 0.00000000],
+        [-6.27236731, -0.00075200, 0.00046089, 0.00075586, -0.00000113, 0.00000000],
+        [-6.27236776, -0.00075182, 0.00046078, 0.00075568, -0.00000113, 0.00000000],
+        [-6.27236820, -0.00075164, 0.00046067, 0.00075550, -0.00000113, 0.00000000],
+        [-6.27236864, -0.00075146, 0.00046056, 0.00075531, -0.00000113, 0.00000000],
+        [-6.27236909, -0.00075127, 0.00046045, 0.00075513, -0.00000113, 0.00000000],
+        [-6.27236953, -0.00075109, 0.00046034, 0.00075495, -0.00000113, 0.00000000],
+        [-6.27236997, -0.00075091, 0.00046022, 0.00075476, -0.00000113, 0.00000000],
+        [-6.27237041, -0.00075073, 0.00046011, 0.00075458, -0.00000113, 0.00000000],
+        [-6.27237085, -0.00075055, 0.00046000, 0.00075440, -0.00000113, 0.00000000],
+        [-6.27237130, -0.00075036, 0.00045989, 0.00075421, -0.00000113, 0.00000000],
+        [-6.27237174, -0.00075018, 0.00045978, 0.00075403, -0.00000113, 0.00000000],
+        [-6.27237218, -0.00075000, 0.00045967, 0.00075385, -0.00000113, 0.00000000],
+        [-6.27237262, -0.00074982, 0.00045955, 0.00075366, -0.00000113, 0.00000000],
+        [-6.27237306, -0.00074964, 0.00045944, 0.00075348, -0.00000113, 0.00000000],
+        [-6.27237350, -0.00074946, 0.00045933, 0.00075330, -0.00000113, 0.00000000],
+        [-6.27237394, -0.00074927, 0.00045922, 0.00075312, -0.00000113, 0.00000000],
+        [-6.27237438, -0.00074909, 0.00045911, 0.00075294, -0.00000113, 0.00000000],
+        [-6.27237482, -0.00074891, 0.00045900, 0.00075275, -0.00000113, 0.00000000],
+        [-6.27237526, -0.00074873, 0.00045889, 0.00075257, -0.00000113, 0.00000000],
+        [-6.27237570, -0.00074855, 0.00045878, 0.00075239, -0.00000113, 0.00000000],
+        [-6.27237614, -0.00074837, 0.00045866, 0.00075221, -0.00000113, 0.00000000],
+        [-6.27237657, -0.00074819, 0.00045855, 0.00075203, -0.00000113, 0.00000000],
+        [-6.27237701, -0.00074801, 0.00045844, 0.00075184, -0.00000113, 0.00000000],
+        [-6.27237745, -0.00074783, 0.00045833, 0.00075166, -0.00000113, 0.00000000],
+        [-6.27237789, -0.00074765, 0.00045822, 0.00075148, -0.00000113, 0.00000000],
+        [-6.27237833, -0.00074747, 0.00045811, 0.00075130, -0.00000113, 0.00000000],
+        [-6.27237876, -0.00074728, 0.00045800, 0.00075112, -0.00000113, 0.00000000],
+        [-6.27237920, -0.00074710, 0.00045789, 0.00075094, -0.00000113, 0.00000000],
+        [-6.27237964, -0.00074692, 0.00045778, 0.00075075, -0.00000113, 0.00000000],
+        [-6.27238007, -0.00074674, 0.00045767, 0.00075057, -0.00000113, 0.00000000],
+        [-6.27238051, -0.00074656, 0.00045756, 0.00075039, -0.00000113, 0.00000000],
+        [-6.27238095, -0.00074638, 0.00045745, 0.00075021, -0.00000113, 0.00000000],
+        [-6.27238138, -0.00074620, 0.00045734, 0.00075003, -0.00000113, 0.00000000],
+        [-6.27238182, -0.00074602, 0.00045723, 0.00074985, -0.00000113, 0.00000000],
+        [-6.27238225, -0.00074584, 0.00045712, 0.00074967, -0.00000113, 0.00000000],
+        [-6.27238269, -0.00074566, 0.00045701, 0.00074949, -0.00000113, 0.00000000],
+        [-6.27238312, -0.00074548, 0.00045690, 0.00074931, -0.00000113, 0.00000000],
+        [-6.27238356, -0.00074531, 0.00045679, 0.00074913, -0.00000113, 0.00000000],
+        [-6.27238399, -0.00074513, 0.00045668, 0.00074895, -0.00000113, 0.00000000],
+        [-6.27238443, -0.00074495, 0.00045657, 0.00074877, -0.00000113, 0.00000000],
+        [-6.27238486, -0.00074477, 0.00045646, 0.00074859, -0.00000113, 0.00000000],
+        [-6.27238530, -0.00074459, 0.00045635, 0.00074841, -0.00000113, 0.00000000],
+        [-6.27238573, -0.00074441, 0.00045624, 0.00074823, -0.00000113, 0.00000000],
+        [-6.27238616, -0.00074423, 0.00045613, 0.00074805, -0.00000113, 0.00000000],
+        [-6.27238660, -0.00074405, 0.00045602, 0.00074787, -0.00000113, 0.00000000],
+        [-6.27238703, -0.00074387, 0.00045591, 0.00074769, -0.00000113, 0.00000000],
+        [-6.27238746, -0.00074369, 0.00045580, 0.00074751, -0.00000113, 0.00000000],
+        [-6.27238790, -0.00074352, 0.00045569, 0.00074733, -0.00000113, 0.00000000],
+        [-6.27238833, -0.00074334, 0.00045558, 0.00074715, -0.00000113, 0.00000000],
+        [-6.27238876, -0.00074316, 0.00045547, 0.00074697, -0.00000113, 0.00000000],
+        [-6.27238919, -0.00074298, 0.00045536, 0.00074679, -0.00000113, 0.00000000],
+        [-6.27238962, -0.00074280, 0.00045525, 0.00074661, -0.00000113, 0.00000000],
+        [-6.27239006, -0.00074262, 0.00045514, 0.00074643, -0.00000113, 0.00000000],
+        [-6.27239049, -0.00074245, 0.00045503, 0.00074625, -0.00000113, 0.00000000],
+        [-6.27239092, -0.00074227, 0.00045492, 0.00074607, -0.00000113, 0.00000000],
+        [-6.27239135, -0.00074209, 0.00045481, 0.00074589, -0.00000113, 0.00000000],
+        [-6.27239178, -0.00074191, 0.00045470, 0.00074572, -0.00000113, 0.00000000],
+        [-6.27239221, -0.00074173, 0.00045459, 0.00074554, -0.00000113, 0.00000000],
+        [-6.27239264, -0.00074156, 0.00045449, 0.00074536, -0.00000113, 0.00000000],
+        [-6.27239307, -0.00074138, 0.00045438, 0.00074518, -0.00000113, 0.00000000],
+        [-6.27239350, -0.00074120, 0.00045427, 0.00074500, -0.00000113, 0.00000000],
+        [-6.27239393, -0.00074102, 0.00045416, 0.00074482, -0.00000113, 0.00000000],
+        [-6.27239436, -0.00074085, 0.00045405, 0.00074464, -0.00000113, 0.00000000],
+        [-6.27239479, -0.00074067, 0.00045394, 0.00074447, -0.00000113, 0.00000000],
+        [-6.27239522, -0.00074049, 0.00045383, 0.00074429, -0.00000113, 0.00000000],
+        [-6.27239564, -0.00074031, 0.00045372, 0.00074411, -0.00000113, 0.00000000],
+        [-6.27239607, -0.00074014, 0.00045362, 0.00074393, -0.00000113, 0.00000000],
+        [-6.27239650, -0.00073996, 0.00045351, 0.00074375, -0.00000113, 0.00000000],
+        [-6.27239693, -0.00073978, 0.00045340, 0.00074358, -0.00000112, 0.00000000],
+        [-6.27239736, -0.00073961, 0.00045329, 0.00074340, -0.00000112, 0.00000000],
+        [-6.27239778, -0.00073943, 0.00045318, 0.00074322, -0.00000112, 0.00000000],
+        [-6.27239821, -0.00073925, 0.00045307, 0.00074304, -0.00000112, 0.00000000],
+        [-6.27239864, -0.00073908, 0.00045296, 0.00074287, -0.00000112, 0.00000000],
+        [-6.27239906, -0.00073890, 0.00045286, 0.00074269, -0.00000112, 0.00000000],
+        [-6.27239949, -0.00073872, 0.00045275, 0.00074251, -0.00000112, 0.00000000],
+        [-6.27239992, -0.00073855, 0.00045264, 0.00074233, -0.00000112, 0.00000000],
+        [-6.27240034, -0.00073837, 0.00045253, 0.00074216, -0.00000112, 0.00000000],
+        [-6.27240077, -0.00073820, 0.00045242, 0.00074198, -0.00000112, 0.00000000],
+        [-6.27240119, -0.00073802, 0.00045232, 0.00074180, -0.00000112, 0.00000000],
+        [-6.27240162, -0.00073784, 0.00045221, 0.00074163, -0.00000112, 0.00000000],
+        [-6.27240205, -0.00073767, 0.00045210, 0.00074145, -0.00000112, 0.00000000],
+        [-6.27240247, -0.00073749, 0.00045199, 0.00074127, -0.00000112, 0.00000000],
+        [-6.27240289, -0.00073732, 0.00045188, 0.00074110, -0.00000112, 0.00000000],
+        [-6.27240332, -0.00073714, 0.00045178, 0.00074092, -0.00000112, 0.00000000],
+        [-6.27240374, -0.00073697, 0.00045167, 0.00074074, -0.00000112, 0.00000000],
+        [-6.27240417, -0.00073679, 0.00045156, 0.00074057, -0.00000112, 0.00000000],
+        [-6.27240459, -0.00073662, 0.00045145, 0.00074039, -0.00000112, 0.00000000],
+        [-6.27240502, -0.00073644, 0.00045135, 0.00074022, -0.00000112, 0.00000000],
+        [-6.27240544, -0.00073626, 0.00045124, 0.00074004, -0.00000112, 0.00000000],
+        [-6.27240586, -0.00073609, 0.00045113, 0.00073986, -0.00000112, 0.00000000],
+        [-6.27240628, -0.00073591, 0.00045102, 0.00073969, -0.00000112, 0.00000000],
+        [-6.27240671, -0.00073574, 0.00045092, 0.00073951, -0.00000112, 0.00000000],
+        [-6.27240713, -0.00073556, 0.00045081, 0.00073934, -0.00000112, 0.00000000],
+        [-6.27240755, -0.00073539, 0.00045070, 0.00073916, -0.00000112, 0.00000000],
+        [-6.27240797, -0.00073522, 0.00045060, 0.00073898, -0.00000112, 0.00000000],
+        [-6.27240840, -0.00073504, 0.00045049, 0.00073881, -0.00000112, 0.00000000],
+        [-6.27240882, -0.00073487, 0.00045038, 0.00073863, -0.00000112, 0.00000000],
+        [-6.27240924, -0.00073469, 0.00045027, 0.00073846, -0.00000112, 0.00000000],
+        [-6.27240966, -0.00073452, 0.00045017, 0.00073828, -0.00000112, 0.00000000],
+        [-6.27241008, -0.00073434, 0.00045006, 0.00073811, -0.00000112, 0.00000000],
+        [-6.27241050, -0.00073417, 0.00044995, 0.00073793, -0.00000112, 0.00000000],
+        [-6.27241092, -0.00073400, 0.00044985, 0.00073776, -0.00000112, 0.00000000],
+        [-6.27241134, -0.00073382, 0.00044974, 0.00073758, -0.00000112, 0.00000000],
+        [-6.27241176, -0.00073365, 0.00044963, 0.00073741, -0.00000112, 0.00000000],
+        [-6.27241218, -0.00073347, 0.00044953, 0.00073723, -0.00000112, 0.00000000],
+        [-6.27241260, -0.00073330, 0.00044942, 0.00073706, -0.00000112, 0.00000000],
+        [-6.27241302, -0.00073313, 0.00044931, 0.00073688, -0.00000112, 0.00000000],
+        [-6.27241344, -0.00073295, 0.00044921, 0.00073671, -0.00000112, 0.00000000],
+        [-6.27241386, -0.00073278, 0.00044910, 0.00073653, -0.00000112, 0.00000000],
+        [-6.27241428, -0.00073261, 0.00044899, 0.00073636, -0.00000112, 0.00000000],
+        [-6.27241470, -0.00073243, 0.00044889, 0.00073619, -0.00000112, 0.00000000],
+        [-6.27241512, -0.00073226, 0.00044878, 0.00073601, -0.00000112, 0.00000000],
+        [-6.27241554, -0.00073209, 0.00044868, 0.00073584, -0.00000112, 0.00000000],
+        [-6.27241595, -0.00073191, 0.00044857, 0.00073566, -0.00000112, 0.00000000],
+        [-6.27241637, -0.00073174, 0.00044846, 0.00073549, -0.00000112, 0.00000000],
+        [-6.27241679, -0.00073157, 0.00044836, 0.00073532, -0.00000112, 0.00000000],
+        [-6.27241721, -0.00073139, 0.00044825, 0.00073514, -0.00000112, 0.00000000],
+        [-6.27241762, -0.00073122, 0.00044815, 0.00073497, -0.00000112, 0.00000000],
+        [-6.27241804, -0.00073105, 0.00044804, 0.00073479, -0.00000112, 0.00000000],
+        [-6.27241846, -0.00073088, 0.00044793, 0.00073462, -0.00000112, 0.00000000],
+        [-6.27241887, -0.00073070, 0.00044783, 0.00073445, -0.00000112, 0.00000000],
+        [-6.27241929, -0.00073053, 0.00044772, 0.00073427, -0.00000112, 0.00000000],
+        [-6.27241971, -0.00073036, 0.00044762, 0.00073410, -0.00000112, 0.00000000],
+        [-6.27242012, -0.00073019, 0.00044751, 0.00073393, -0.00000112, 0.00000000],
+        [-6.27242054, -0.00073001, 0.00044741, 0.00073376, -0.00000112, 0.00000000],
+        [-6.27242095, -0.00072984, 0.00044730, 0.00073358, -0.00000112, 0.00000000],
+        [-6.27242137, -0.00072967, 0.00044719, 0.00073341, -0.00000112, 0.00000000],
+        [-6.27242178, -0.00072950, 0.00044709, 0.00073324, -0.00000112, 0.00000000],
+        [-6.27242220, -0.00072933, 0.00044698, 0.00073306, -0.00000112, 0.00000000],
+        [-6.27242261, -0.00072915, 0.00044688, 0.00073289, -0.00000112, 0.00000000],
+        [-6.27242303, -0.00072898, 0.00044677, 0.00073272, -0.00000112, 0.00000000],
+        [-6.27242344, -0.00072881, 0.00044667, 0.00073255, -0.00000112, 0.00000000],
+        [-6.27242386, -0.00072864, 0.00044656, 0.00073237, -0.00000112, 0.00000000],
+        [-6.27242427, -0.00072847, 0.00044646, 0.00073220, -0.00000112, 0.00000000],
+        [-6.27242468, -0.00072830, 0.00044635, 0.00073203, -0.00000112, 0.00000000],
+        [-6.27242510, -0.00072813, 0.00044625, 0.00073186, -0.00000112, 0.00000000],
+        [-6.27242551, -0.00072795, 0.00044614, 0.00073168, -0.00000112, 0.00000000],
+        [-6.27242592, -0.00072778, 0.00044604, 0.00073151, -0.00000112, 0.00000000],
+        [-6.27242634, -0.00072761, 0.00044593, 0.00073134, -0.00000112, 0.00000000],
+        [-6.27242675, -0.00072744, 0.00044583, 0.00073117, -0.00000112, 0.00000000],
+        [-6.27242716, -0.00072727, 0.00044572, 0.00073100, -0.00000112, 0.00000000],
+        [-6.27242757, -0.00072710, 0.00044562, 0.00073082, -0.00000112, 0.00000000],
+        [-6.27242798, -0.00072693, 0.00044551, 0.00073065, -0.00000112, 0.00000000],
+        [-6.27242840, -0.00072676, 0.00044541, 0.00073048, -0.00000112, 0.00000000],
+        [-6.27242881, -0.00072659, 0.00044530, 0.00073031, -0.00000112, 0.00000000],
+        [-6.27242922, -0.00072642, 0.00044520, 0.00073014, -0.00000112, 0.00000000],
+        [-6.27242963, -0.00072625, 0.00044509, 0.00072997, -0.00000112, 0.00000000],
+        [-6.27243004, -0.00072608, 0.00044499, 0.00072980, -0.00000112, 0.00000000],
+        [-6.27243045, -0.00072591, 0.00044488, 0.00072962, -0.00000112, 0.00000000],
+        [-6.27243086, -0.00072574, 0.00044478, 0.00072945, -0.00000112, 0.00000000],
+        [-6.27243127, -0.00072557, 0.00044468, 0.00072928, -0.00000112, 0.00000000],
+        [-6.27243168, -0.00072540, 0.00044457, 0.00072911, -0.00000112, 0.00000000],
+        [-6.27243209, -0.00072523, 0.00044447, 0.00072894, -0.00000112, 0.00000000],
+        [-6.27243250, -0.00072506, 0.00044436, 0.00072877, -0.00000112, 0.00000000],
+        [-6.27243291, -0.00072489, 0.00044426, 0.00072860, -0.00000112, 0.00000000],
+        [-6.27243332, -0.00072472, 0.00044416, 0.00072843, -0.00000112, 0.00000000],
+        [-6.27243373, -0.00072455, 0.00044405, 0.00072826, -0.00000112, 0.00000000],
+        [-6.27243414, -0.00072438, 0.00044395, 0.00072809, -0.00000112, 0.00000000],
+        [-6.27243455, -0.00072421, 0.00044384, 0.00072792, -0.00000112, 0.00000000],
+        [-6.27243496, -0.00072404, 0.00044374, 0.00072775, -0.00000112, 0.00000000],
+        [-6.27243536, -0.00072387, 0.00044364, 0.00072758, -0.00000112, 0.00000000],
+        [-6.27243577, -0.00072370, 0.00044353, 0.00072741, -0.00000112, 0.00000000],
+        [-6.27243618, -0.00072353, 0.00044343, 0.00072724, -0.00000112, 0.00000000],
+        [-6.27243659, -0.00072336, 0.00044332, 0.00072707, -0.00000112, 0.00000000],
+        [-6.27243700, -0.00072319, 0.00044322, 0.00072690, -0.00000112, 0.00000000],
+        [-6.27243740, -0.00072302, 0.00044312, 0.00072673, -0.00000112, 0.00000000],
+        [-6.27243781, -0.00072285, 0.00044301, 0.00072656, -0.00000112, 0.00000000],
+        [-6.27243822, -0.00072269, 0.00044291, 0.00072639, -0.00000112, 0.00000000],
+        [-6.27243862, -0.00072252, 0.00044281, 0.00072622, -0.00000112, 0.00000000],
+        [-6.27243903, -0.00072235, 0.00044270, 0.00072605, -0.00000112, 0.00000000],
+        [-6.27243944, -0.00072218, 0.00044260, 0.00072588, -0.00000112, 0.00000000],
+        [-6.27243984, -0.00072201, 0.00044250, 0.00072571, -0.00000112, 0.00000000],
+        [-6.27244025, -0.00072184, 0.00044239, 0.00072554, -0.00000112, 0.00000000],
+        [-6.27244065, -0.00072167, 0.00044229, 0.00072537, -0.00000112, 0.00000000],
+        [-6.27244106, -0.00072151, 0.00044219, 0.00072520, -0.00000112, 0.00000000],
+        [-6.27244146, -0.00072134, 0.00044208, 0.00072503, -0.00000112, 0.00000000],
+        [-6.27244187, -0.00072117, 0.00044198, 0.00072486, -0.00000112, 0.00000000],
+        [-6.27244227, -0.00072100, 0.00044188, 0.00072470, -0.00000112, 0.00000000],
+        [-6.27244268, -0.00072083, 0.00044177, 0.00072453, -0.00000112, 0.00000000],
+        [-6.27244308, -0.00072067, 0.00044167, 0.00072436, -0.00000112, 0.00000000],
+        [-6.27244349, -0.00072050, 0.00044157, 0.00072419, -0.00000112, 0.00000000],
+        [-6.27244389, -0.00072033, 0.00044147, 0.00072402, -0.00000112, 0.00000000],
+        [-6.27244429, -0.00072016, 0.00044136, 0.00072385, -0.00000112, 0.00000000],
+        [-6.27244470, -0.00072000, 0.00044126, 0.00072368, -0.00000112, 0.00000000],
+        [-6.27244510, -0.00071983, 0.00044116, 0.00072352, -0.00000112, 0.00000000],
+        [-6.27244550, -0.00071966, 0.00044105, 0.00072335, -0.00000112, 0.00000000],
+        [-6.27244591, -0.00071949, 0.00044095, 0.00072318, -0.00000112, 0.00000000],
+        [-6.27244631, -0.00071933, 0.00044085, 0.00072301, -0.00000112, 0.00000000],
+        [-6.27244671, -0.00071916, 0.00044075, 0.00072284, -0.00000112, 0.00000000],
+        [-6.27244712, -0.00071899, 0.00044064, 0.00072268, -0.00000112, 0.00000000],
+        [-6.27244752, -0.00071883, 0.00044054, 0.00072251, -0.00000112, 0.00000000],
+        [-6.27244792, -0.00071866, 0.00044044, 0.00072234, -0.00000112, 0.00000000],
+        [-6.27244832, -0.00071849, 0.00044034, 0.00072217, -0.00000112, 0.00000000],
+        [-6.27244872, -0.00071833, 0.00044024, 0.00072200, -0.00000112, 0.00000000],
+        [-6.27244912, -0.00071816, 0.00044013, 0.00072184, -0.00000112, 0.00000000],
+        [-6.27244953, -0.00071799, 0.00044003, 0.00072167, -0.00000112, 0.00000000],
+        [-6.27244993, -0.00071783, 0.00043993, 0.00072150, -0.00000112, 0.00000000],
+        [-6.27245033, -0.00071766, 0.00043983, 0.00072133, -0.00000112, 0.00000000],
+        [-6.27245073, -0.00071749, 0.00043972, 0.00072117, -0.00000112, 0.00000000],
+        [-6.27245113, -0.00071733, 0.00043962, 0.00072100, -0.00000112, 0.00000000],
+        [-6.27245153, -0.00071716, 0.00043952, 0.00072083, -0.00000112, 0.00000000],
+        [-6.27245193, -0.00071699, 0.00043942, 0.00072067, -0.00000112, 0.00000000],
+        [-6.27245233, -0.00071683, 0.00043932, 0.00072050, -0.00000112, 0.00000000],
+        [-6.27245273, -0.00071666, 0.00043922, 0.00072033, -0.00000112, 0.00000000],
+        [-6.27245313, -0.00071650, 0.00043911, 0.00072017, -0.00000112, 0.00000000],
+        [-6.27245353, -0.00071633, 0.00043901, 0.00072000, -0.00000112, 0.00000000],
+        [-6.27245393, -0.00071617, 0.00043891, 0.00071983, -0.00000112, 0.00000000],
+        [-6.27245432, -0.00071600, 0.00043881, 0.00071967, -0.00000112, 0.00000000],
+        [-6.27245472, -0.00071583, 0.00043871, 0.00071950, -0.00000112, 0.00000000],
+        [-6.27245512, -0.00071567, 0.00043861, 0.00071933, -0.00000112, 0.00000000],
+        [-6.27245552, -0.00071550, 0.00043850, 0.00071917, -0.00000112, 0.00000000],
+        [-6.27245592, -0.00071534, 0.00043840, 0.00071900, -0.00000112, 0.00000000],
+        [-6.27245632, -0.00071517, 0.00043830, 0.00071883, -0.00000112, 0.00000000],
+        [-6.27245671, -0.00071501, 0.00043820, 0.00071867, -0.00000112, 0.00000000],
+        [-6.27245711, -0.00071484, 0.00043810, 0.00071850, -0.00000112, 0.00000000],
+        [-6.27245751, -0.00071468, 0.00043800, 0.00071834, -0.00000112, 0.00000000],
+        [-6.27245791, -0.00071451, 0.00043790, 0.00071817, -0.00000112, 0.00000000],
+        [-6.27245830, -0.00071435, 0.00043779, 0.00071800, -0.00000112, 0.00000000],
+        [-6.27245870, -0.00071418, 0.00043769, 0.00071784, -0.00000112, 0.00000000],
+        [-6.27245910, -0.00071402, 0.00043759, 0.00071767, -0.00000112, 0.00000000],
+        [-6.27245949, -0.00071385, 0.00043749, 0.00071751, -0.00000112, 0.00000000],
+        [-6.27245989, -0.00071369, 0.00043739, 0.00071734, -0.00000112, 0.00000000],
+        [-6.27246028, -0.00071352, 0.00043729, 0.00071718, -0.00000112, 0.00000000],
+        [-6.27246068, -0.00071336, 0.00043719, 0.00071701, -0.00000112, 0.00000000],
+        [-6.27246108, -0.00071320, 0.00043709, 0.00071685, -0.00000112, 0.00000000],
+        [-6.27246147, -0.00071303, 0.00043699, 0.00071668, -0.00000112, 0.00000000],
+        [-6.27246187, -0.00071287, 0.00043689, 0.00071652, -0.00000112, 0.00000000],
+        [-6.27246226, -0.00071270, 0.00043679, 0.00071635, -0.00000112, 0.00000000],
+        [-6.27246266, -0.00071254, 0.00043669, 0.00071619, -0.00000112, 0.00000000],
+        [-6.27246305, -0.00071237, 0.00043658, 0.00071602, -0.00000112, 0.00000000],
+        [-6.27246345, -0.00071221, 0.00043648, 0.00071586, -0.00000112, 0.00000000],
+        [-6.27246384, -0.00071205, 0.00043638, 0.00071569, -0.00000112, 0.00000000],
+        [-6.27246423, -0.00071188, 0.00043628, 0.00071553, -0.00000112, 0.00000000],
+        [-6.27246463, -0.00071172, 0.00043618, 0.00071536, -0.00000112, 0.00000000],
+        [-6.27246502, -0.00071156, 0.00043608, 0.00071520, -0.00000112, 0.00000000],
+        [-6.27246541, -0.00071139, 0.00043598, 0.00071503, -0.00000112, 0.00000000],
+        [-6.27246581, -0.00071123, 0.00043588, 0.00071487, -0.00000112, 0.00000000],
+        [-6.27246620, -0.00071107, 0.00043578, 0.00071471, -0.00000112, 0.00000000],
+        [-6.27246659, -0.00071090, 0.00043568, 0.00071454, -0.00000112, 0.00000000],
+        [-6.27246699, -0.00071074, 0.00043558, 0.00071438, -0.00000112, 0.00000000],
+        [-6.27246738, -0.00071058, 0.00043548, 0.00071421, -0.00000112, 0.00000000],
+        [-6.27246777, -0.00071041, 0.00043538, 0.00071405, -0.00000112, 0.00000000],
+        [-6.27246816, -0.00071025, 0.00043528, 0.00071389, -0.00000112, 0.00000000],
+        [-6.27246856, -0.00071009, 0.00043518, 0.00071372, -0.00000112, 0.00000000],
+        [-6.27246895, -0.00070992, 0.00043508, 0.00071356, -0.00000112, 0.00000000],
+        [-6.27246934, -0.00070976, 0.00043498, 0.00071339, -0.00000112, 0.00000000],
+        [-6.27246973, -0.00070960, 0.00043488, 0.00071323, -0.00000112, 0.00000000],
+        [-6.27247012, -0.00070944, 0.00043478, 0.00071307, -0.00000112, 0.00000000],
+        [-6.27247051, -0.00070927, 0.00043468, 0.00071290, -0.00000112, 0.00000000],
+        [-6.27247090, -0.00070911, 0.00043458, 0.00071274, -0.00000112, 0.00000000],
+        [-6.27247129, -0.00070895, 0.00043448, 0.00071258, -0.00000112, 0.00000000],
+        [-6.27247168, -0.00070879, 0.00043438, 0.00071241, -0.00000112, 0.00000000],
+        [-6.27247207, -0.00070862, 0.00043428, 0.00071225, -0.00000112, 0.00000000],
+        [-6.27247246, -0.00070846, 0.00043418, 0.00071209, -0.00000112, 0.00000000],
+        [-6.27247285, -0.00070830, 0.00043409, 0.00071193, -0.00000112, 0.00000000],
+        [-6.27247324, -0.00070814, 0.00043399, 0.00071176, -0.00000112, 0.00000000],
+        [-6.27247363, -0.00070798, 0.00043389, 0.00071160, -0.00000112, 0.00000000],
+        [-6.27247402, -0.00070781, 0.00043379, 0.00071144, -0.00000112, 0.00000000],
+        [-6.27247441, -0.00070765, 0.00043369, 0.00071127, -0.00000112, 0.00000000],
+        [-6.27247480, -0.00070749, 0.00043359, 0.00071111, -0.00000112, 0.00000000],
+        [-6.27247519, -0.00070733, 0.00043349, 0.00071095, -0.00000112, 0.00000000],
+        [-6.27247558, -0.00070717, 0.00043339, 0.00071079, -0.00000112, 0.00000000],
+        [-6.27247597, -0.00070701, 0.00043329, 0.00071062, -0.00000112, 0.00000000],
+        [-6.27247636, -0.00070684, 0.00043319, 0.00071046, -0.00000112, 0.00000000],
+        [-6.27247674, -0.00070668, 0.00043309, 0.00071030, -0.00000112, 0.00000000],
+        [-6.27247713, -0.00070652, 0.00043299, 0.00071014, -0.00000112, 0.00000000],
+        [-6.27247752, -0.00070636, 0.00043290, 0.00070998, -0.00000112, 0.00000000],
+        [-6.27247791, -0.00070620, 0.00043280, 0.00070981, -0.00000112, 0.00000000],
+        [-6.27247829, -0.00070604, 0.00043270, 0.00070965, -0.00000112, 0.00000000],
+        [-6.27247868, -0.00070588, 0.00043260, 0.00070949, -0.00000112, 0.00000000],
+        [-6.27247907, -0.00070572, 0.00043250, 0.00070933, -0.00000112, 0.00000000],
+        [-6.27247945, -0.00070556, 0.00043240, 0.00070917, -0.00000112, 0.00000000],
+        [-6.27247984, -0.00070539, 0.00043230, 0.00070900, -0.00000112, 0.00000000],
+        [-6.27248023, -0.00070523, 0.00043220, 0.00070884, -0.00000112, 0.00000000],
+        [-6.27248061, -0.00070507, 0.00043211, 0.00070868, -0.00000112, 0.00000000],
+        [-6.27248100, -0.00070491, 0.00043201, 0.00070852, -0.00000112, 0.00000000],
+        [-6.27248139, -0.00070475, 0.00043191, 0.00070836, -0.00000112, 0.00000000],
+        [-6.27248177, -0.00070459, 0.00043181, 0.00070820, -0.00000112, 0.00000000],
+        [-6.27248216, -0.00070443, 0.00043171, 0.00070804, -0.00000112, 0.00000000],
+        [-6.27248254, -0.00070427, 0.00043161, 0.00070788, -0.00000112, 0.00000000],
+        [-6.27248293, -0.00070411, 0.00043152, 0.00070771, -0.00000112, 0.00000000],
+        [-6.27248331, -0.00070395, 0.00043142, 0.00070755, -0.00000112, 0.00000000],
+        [-6.27248370, -0.00070379, 0.00043132, 0.00070739, -0.00000112, 0.00000000],
+        [-6.27248408, -0.00070363, 0.00043122, 0.00070723, -0.00000112, 0.00000000],
+        [-6.27248447, -0.00070347, 0.00043112, 0.00070707, -0.00000112, 0.00000000],
+        [-6.27248485, -0.00070331, 0.00043103, 0.00070691, -0.00000112, 0.00000000],
+        [-6.27248523, -0.00070315, 0.00043093, 0.00070675, -0.00000112, 0.00000000],
+        [-6.27248562, -0.00070299, 0.00043083, 0.00070659, -0.00000112, 0.00000000],
+        [-6.27248600, -0.00070283, 0.00043073, 0.00070643, -0.00000112, 0.00000000],
+        [-6.27248638, -0.00070267, 0.00043063, 0.00070627, -0.00000112, 0.00000000],
+        [-6.27248677, -0.00070251, 0.00043054, 0.00070611, -0.00000112, 0.00000000],
+        [-6.27248715, -0.00070235, 0.00043044, 0.00070595, -0.00000112, 0.00000000],
+        [-6.27248753, -0.00070219, 0.00043034, 0.00070579, -0.00000112, 0.00000000],
+        [-6.27248792, -0.00070203, 0.00043024, 0.00070563, -0.00000112, 0.00000000],
+        [-6.27248830, -0.00070188, 0.00043014, 0.00070547, -0.00000112, 0.00000000],
+        [-6.27248868, -0.00070172, 0.00043005, 0.00070531, -0.00000112, 0.00000000],
+        [-6.27248906, -0.00070156, 0.00042995, 0.00070515, -0.00000112, 0.00000000],
+        [-6.27248945, -0.00070140, 0.00042985, 0.00070499, -0.00000112, 0.00000000],
+        [-6.27248983, -0.00070124, 0.00042975, 0.00070483, -0.00000112, 0.00000000],
+        [-6.27249021, -0.00070108, 0.00042966, 0.00070467, -0.00000112, 0.00000000],
+        [-6.27249059, -0.00070092, 0.00042956, 0.00070451, -0.00000112, 0.00000000],
+        [-6.27249097, -0.00070076, 0.00042946, 0.00070435, -0.00000112, 0.00000000],
+        [-6.27249135, -0.00070060, 0.00042937, 0.00070419, -0.00000112, 0.00000000],
+        [-6.27249173, -0.00070045, 0.00042927, 0.00070403, -0.00000112, 0.00000000],
+        [-6.27249211, -0.00070029, 0.00042917, 0.00070387, -0.00000112, 0.00000000],
+        [-6.27249250, -0.00070013, 0.00042907, 0.00070371, -0.00000112, 0.00000000],
+        [-6.27249288, -0.00069997, 0.00042898, 0.00070355, -0.00000112, 0.00000000],
+        [-6.27249326, -0.00069981, 0.00042888, 0.00070339, -0.00000112, 0.00000000],
+        [-6.27249364, -0.00069965, 0.00042878, 0.00070323, -0.00000112, 0.00000000],
+        [-6.27249402, -0.00069950, 0.00042869, 0.00070308, -0.00000112, 0.00000000],
+        [-6.27249440, -0.00069934, 0.00042859, 0.00070292, -0.00000112, 0.00000000],
+        [-6.27249477, -0.00069918, 0.00042849, 0.00070276, -0.00000112, 0.00000000],
+        [-6.27249515, -0.00069902, 0.00042840, 0.00070260, -0.00000112, 0.00000000],
+        [-6.27249553, -0.00069887, 0.00042830, 0.00070244, -0.00000112, 0.00000000],
+        [-6.27249591, -0.00069871, 0.00042820, 0.00070228, -0.00000112, 0.00000000],
+        [-6.27249629, -0.00069855, 0.00042810, 0.00070212, -0.00000112, 0.00000000],
+        [-6.27249667, -0.00069839, 0.00042801, 0.00070197, -0.00000112, 0.00000000],
+        [-6.27249705, -0.00069823, 0.00042791, 0.00070181, -0.00000112, 0.00000000],
+        [-6.27249743, -0.00069808, 0.00042781, 0.00070165, -0.00000112, 0.00000000],
+        [-6.27249780, -0.00069792, 0.00042772, 0.00070149, -0.00000112, 0.00000000],
+        [-6.27249818, -0.00069776, 0.00042762, 0.00070133, -0.00000112, 0.00000000],
+        [-6.27249856, -0.00069761, 0.00042753, 0.00070117, -0.00000112, 0.00000000],
+        [-6.27249894, -0.00069745, 0.00042743, 0.00070102, -0.00000112, 0.00000000],
+        [-6.27249931, -0.00069729, 0.00042733, 0.00070086, -0.00000112, 0.00000000],
+        [-6.27249969, -0.00069713, 0.00042724, 0.00070070, -0.00000112, 0.00000000],
+        [-6.27250007, -0.00069698, 0.00042714, 0.00070054, -0.00000112, 0.00000000],
+        [-6.27250045, -0.00069682, 0.00042704, 0.00070038, -0.00000112, 0.00000000],
+        [-6.27250082, -0.00069666, 0.00042695, 0.00070023, -0.00000112, 0.00000000],
+        [-6.27250120, -0.00069651, 0.00042685, 0.00070007, -0.00000112, 0.00000000],
+        [-6.27250158, -0.00069635, 0.00042676, 0.00069991, -0.00000112, 0.00000000],
+        [-6.27250195, -0.00069619, 0.00042666, 0.00069975, -0.00000112, 0.00000000],
+        [-6.27250233, -0.00069604, 0.00042656, 0.00069960, -0.00000112, 0.00000000],
+        [-6.27250270, -0.00069588, 0.00042647, 0.00069944, -0.00000112, 0.00000000],
+        [-6.27250308, -0.00069572, 0.00042637, 0.00069928, -0.00000112, 0.00000000],
+        [-6.27250345, -0.00069557, 0.00042628, 0.00069913, -0.00000112, 0.00000000],
+        [-6.27250383, -0.00069541, 0.00042618, 0.00069897, -0.00000112, 0.00000000],
+        [-6.27250420, -0.00069525, 0.00042608, 0.00069881, -0.00000112, 0.00000000],
+        [-6.27250458, -0.00069510, 0.00042599, 0.00069865, -0.00000112, 0.00000000],
+        [-6.27250495, -0.00069494, 0.00042589, 0.00069850, -0.00000112, 0.00000000],
+        [-6.27250533, -0.00069479, 0.00042580, 0.00069834, -0.00000112, 0.00000000],
+        [-6.27250570, -0.00069463, 0.00042570, 0.00069818, -0.00000112, 0.00000000],
+        [-6.27250608, -0.00069447, 0.00042561, 0.00069803, -0.00000112, 0.00000000],
+        [-6.27250645, -0.00069432, 0.00042551, 0.00069787, -0.00000112, 0.00000000],
+        [-6.27250683, -0.00069416, 0.00042541, 0.00069771, -0.00000112, 0.00000000],
+        [-6.27250720, -0.00069401, 0.00042532, 0.00069756, -0.00000112, 0.00000000],
+        [-6.27250757, -0.00069385, 0.00042522, 0.00069740, -0.00000112, 0.00000000],
+        [-6.27250795, -0.00069370, 0.00042513, 0.00069725, -0.00000112, 0.00000000],
+        [-6.27250832, -0.00069354, 0.00042503, 0.00069709, -0.00000112, 0.00000000],
+        [-6.27250869, -0.00069339, 0.00042494, 0.00069693, -0.00000112, 0.00000000],
+        [-6.27250906, -0.00069323, 0.00042484, 0.00069678, -0.00000112, 0.00000000],
+        [-6.27250944, -0.00069308, 0.00042475, 0.00069662, -0.00000112, 0.00000000],
+        [-6.27250981, -0.00069292, 0.00042465, 0.00069646, -0.00000112, 0.00000000],
+        [-6.27251018, -0.00069277, 0.00042456, 0.00069631, -0.00000112, 0.00000000],
+        [-6.27251055, -0.00069261, 0.00042446, 0.00069615, -0.00000112, 0.00000000],
+        [-6.27251093, -0.00069246, 0.00042437, 0.00069600, -0.00000112, 0.00000000],
+        [-6.27251130, -0.00069230, 0.00042427, 0.00069584, -0.00000112, 0.00000000],
+        [-6.27251167, -0.00069215, 0.00042418, 0.00069569, -0.00000112, 0.00000000],
+        [-6.27251204, -0.00069199, 0.00042408, 0.00069553, -0.00000112, 0.00000000],
+        [-6.27251241, -0.00069184, 0.00042399, 0.00069537, -0.00000112, 0.00000000],
+        [-6.27251278, -0.00069168, 0.00042389, 0.00069522, -0.00000112, 0.00000000],
+        [-6.27251315, -0.00069153, 0.00042380, 0.00069506, -0.00000112, 0.00000000],
+        [-6.27251353, -0.00069137, 0.00042370, 0.00069491, -0.00000112, 0.00000000],
+        [-6.27251390, -0.00069122, 0.00042361, 0.00069475, -0.00000112, 0.00000000],
+        [-6.27251427, -0.00069106, 0.00042351, 0.00069460, -0.00000112, 0.00000000],
+        [-6.27251464, -0.00069091, 0.00042342, 0.00069444, -0.00000112, 0.00000000],
+        [-6.27251501, -0.00069076, 0.00042332, 0.00069429, -0.00000112, 0.00000000],
+        [-6.27251538, -0.00069060, 0.00042323, 0.00069413, -0.00000112, 0.00000000],
+        [-6.27251575, -0.00069045, 0.00042314, 0.00069398, -0.00000112, 0.00000000],
+        [-6.27251612, -0.00069029, 0.00042304, 0.00069382, -0.00000112, 0.00000000],
+        [-6.27251649, -0.00069014, 0.00042295, 0.00069367, -0.00000112, 0.00000000],
+        [-6.27251685, -0.00068999, 0.00042285, 0.00069351, -0.00000112, 0.00000000],
+        [-6.27251722, -0.00068983, 0.00042276, 0.00069336, -0.00000112, 0.00000000],
+        [-6.27251759, -0.00068968, 0.00042266, 0.00069321, -0.00000112, 0.00000000],
+        [-6.27251796, -0.00068952, 0.00042257, 0.00069305, -0.00000112, 0.00000000],
+        [-6.27251833, -0.00068937, 0.00042248, 0.00069290, -0.00000112, 0.00000000],
+        [-6.27251870, -0.00068922, 0.00042238, 0.00069274, -0.00000112, 0.00000000],
+        [-6.27251907, -0.00068906, 0.00042229, 0.00069259, -0.00000112, 0.00000000],
+        [-6.27251943, -0.00068891, 0.00042219, 0.00069243, -0.00000112, 0.00000000],
+        [-6.27251980, -0.00068876, 0.00042210, 0.00069228, -0.00000112, 0.00000000],
+        [-6.27252017, -0.00068860, 0.00042200, 0.00069213, -0.00000112, 0.00000000],
+        [-6.27252054, -0.00068845, 0.00042191, 0.00069197, -0.00000112, 0.00000000],
+        [-6.27252091, -0.00068830, 0.00042182, 0.00069182, -0.00000112, 0.00000000],
+        [-6.27252127, -0.00068815, 0.00042172, 0.00069166, -0.00000112, 0.00000000],
+        [-6.27252164, -0.00068799, 0.00042163, 0.00069151, -0.00000112, 0.00000000],
+        [-6.27252201, -0.00068784, 0.00042154, 0.00069136, -0.00000112, 0.00000000],
+        [-6.27252237, -0.00068769, 0.00042144, 0.00069120, -0.00000112, 0.00000000],
+        [-6.27252274, -0.00068753, 0.00042135, 0.00069105, -0.00000112, 0.00000000],
+        [-6.27252311, -0.00068738, 0.00042125, 0.00069090, -0.00000112, 0.00000000],
+        [-6.27252347, -0.00068723, 0.00042116, 0.00069074, -0.00000112, 0.00000000],
+        [-6.27252384, -0.00068708, 0.00042107, 0.00069059, -0.00000112, 0.00000000],
+        [-6.27252420, -0.00068692, 0.00042097, 0.00069044, -0.00000112, 0.00000000],
+        [-6.27252457, -0.00068677, 0.00042088, 0.00069028, -0.00000112, 0.00000000],
+        [-6.27252494, -0.00068662, 0.00042079, 0.00069013, -0.00000112, 0.00000000],
+        [-6.27252530, -0.00068647, 0.00042069, 0.00068998, -0.00000112, 0.00000000],
+        [-6.27252567, -0.00068631, 0.00042060, 0.00068982, -0.00000112, 0.00000000],
+        [-6.27252603, -0.00068616, 0.00042051, 0.00068967, -0.00000112, 0.00000000],
+        [-6.27252640, -0.00068601, 0.00042041, 0.00068952, -0.00000112, 0.00000000],
+        [-6.27252676, -0.00068586, 0.00042032, 0.00068937, -0.00000112, 0.00000000],
+        [-6.27252712, -0.00068571, 0.00042023, 0.00068921, -0.00000112, 0.00000000],
+        [-6.27252749, -0.00068555, 0.00042013, 0.00068906, -0.00000112, 0.00000000],
+        [-6.27252785, -0.00068540, 0.00042004, 0.00068891, -0.00000112, 0.00000000],
+        [-6.27252822, -0.00068525, 0.00041995, 0.00068875, -0.00000112, 0.00000000],
+        [-6.27252858, -0.00068510, 0.00041985, 0.00068860, -0.00000112, 0.00000000],
+        [-6.27252895, -0.00068495, 0.00041976, 0.00068845, -0.00000112, 0.00000000],
+        [-6.27252931, -0.00068480, 0.00041967, 0.00068830, -0.00000112, 0.00000000],
+        [-6.27252967, -0.00068464, 0.00041958, 0.00068815, -0.00000112, 0.00000000],
+        [-6.27253004, -0.00068449, 0.00041948, 0.00068799, -0.00000112, 0.00000000],
+        [-6.27253040, -0.00068434, 0.00041939, 0.00068784, -0.00000112, 0.00000000],
+        [-6.27253076, -0.00068419, 0.00041930, 0.00068769, -0.00000112, 0.00000000],
+        [-6.27253112, -0.00068404, 0.00041920, 0.00068754, -0.00000112, 0.00000000],
+        [-6.27253149, -0.00068389, 0.00041911, 0.00068738, -0.00000112, 0.00000000],
+        [-6.27253185, -0.00068374, 0.00041902, 0.00068723, -0.00000112, 0.00000000],
+        [-6.27253221, -0.00068359, 0.00041893, 0.00068708, -0.00000112, 0.00000000],
+        [-6.27253257, -0.00068344, 0.00041883, 0.00068693, -0.00000112, 0.00000000],
+        [-6.27253293, -0.00068328, 0.00041874, 0.00068678, -0.00000112, 0.00000000],
+        [-6.27253330, -0.00068313, 0.00041865, 0.00068663, -0.00000112, 0.00000000],
+        [-6.27253366, -0.00068298, 0.00041856, 0.00068647, -0.00000112, 0.00000000],
+        [-6.27253402, -0.00068283, 0.00041846, 0.00068632, -0.00000112, 0.00000000],
+        [-6.27253438, -0.00068268, 0.00041837, 0.00068617, -0.00000112, 0.00000000],
+        [-6.27253474, -0.00068253, 0.00041828, 0.00068602, -0.00000112, 0.00000000],
+        [-6.27253510, -0.00068238, 0.00041819, 0.00068587, -0.00000112, 0.00000000],
+        [-6.27253546, -0.00068223, 0.00041810, 0.00068572, -0.00000112, 0.00000000],
+        [-6.27253582, -0.00068208, 0.00041800, 0.00068557, -0.00000112, 0.00000000],
+        [-6.27253618, -0.00068193, 0.00041791, 0.00068542, -0.00000112, 0.00000000],
+        [-6.27253654, -0.00068178, 0.00041782, 0.00068526, -0.00000112, 0.00000000],
+        [-6.27253690, -0.00068163, 0.00041773, 0.00068511, -0.00000112, 0.00000000],
+        [-6.27253726, -0.00068148, 0.00041763, 0.00068496, -0.00000112, 0.00000000],
+        [-6.27253762, -0.00068133, 0.00041754, 0.00068481, -0.00000112, 0.00000000],
+        [-6.27253798, -0.00068118, 0.00041745, 0.00068466, -0.00000112, 0.00000000],
+        [-6.27253834, -0.00068103, 0.00041736, 0.00068451, -0.00000112, 0.00000000],
+        [-6.27253870, -0.00068088, 0.00041727, 0.00068436, -0.00000112, 0.00000000],
+        [-6.27253906, -0.00068073, 0.00041718, 0.00068421, -0.00000112, 0.00000000],
+        [-6.27253942, -0.00068058, 0.00041708, 0.00068406, -0.00000112, 0.00000000],
+        [-6.27253978, -0.00068043, 0.00041699, 0.00068391, -0.00000112, 0.00000000],
+        [-6.27254014, -0.00068028, 0.00041690, 0.00068376, -0.00000112, 0.00000000],
+        [-6.27254050, -0.00068013, 0.00041681, 0.00068361, -0.00000112, 0.00000000],
+        [-6.27254086, -0.00067998, 0.00041672, 0.00068346, -0.00000112, 0.00000000],
+        [-6.27254121, -0.00067983, 0.00041662, 0.00068331, -0.00000112, 0.00000000],
+        [-6.27254157, -0.00067968, 0.00041653, 0.00068316, -0.00000112, 0.00000000],
+        [-6.27254193, -0.00067953, 0.00041644, 0.00068301, -0.00000112, 0.00000000],
+        [-6.27254229, -0.00067939, 0.00041635, 0.00068286, -0.00000112, 0.00000000],
+        [-6.27254264, -0.00067924, 0.00041626, 0.00068271, -0.00000112, 0.00000000],
+        [-6.27254300, -0.00067909, 0.00041617, 0.00068256, -0.00000112, 0.00000000],
+        [-6.27254336, -0.00067894, 0.00041608, 0.00068241, -0.00000112, 0.00000000],
+        [-6.27254372, -0.00067879, 0.00041598, 0.00068226, -0.00000112, 0.00000000],
+        [-6.27254407, -0.00067864, 0.00041589, 0.00068211, -0.00000112, 0.00000000],
+        [-6.27254443, -0.00067849, 0.00041580, 0.00068196, -0.00000112, 0.00000000],
+        [-6.27254479, -0.00067834, 0.00041571, 0.00068181, -0.00000112, 0.00000000],
+        [-6.27254514, -0.00067819, 0.00041562, 0.00068166, -0.00000112, 0.00000000],
+        [-6.27254550, -0.00067805, 0.00041553, 0.00068151, -0.00000112, 0.00000000],
+        [-6.27254585, -0.00067790, 0.00041544, 0.00068136, -0.00000112, 0.00000000],
+        [-6.27254621, -0.00067775, 0.00041535, 0.00068121, -0.00000112, 0.00000000],
+        [-6.27254657, -0.00067760, 0.00041526, 0.00068106, -0.00000112, 0.00000000],
+        [-6.27254692, -0.00067745, 0.00041516, 0.00068092, -0.00000112, 0.00000000],
+        [-6.27254728, -0.00067730, 0.00041507, 0.00068077, -0.00000112, 0.00000000],
+        [-6.27254763, -0.00067716, 0.00041498, 0.00068062, -0.00000112, 0.00000000],
+        [-6.27254799, -0.00067701, 0.00041489, 0.00068047, -0.00000112, 0.00000000],
+        [-6.27254834, -0.00067686, 0.00041480, 0.00068032, -0.00000112, 0.00000000],
+        [-6.27254870, -0.00067671, 0.00041471, 0.00068017, -0.00000112, 0.00000000],
+        [-6.27254905, -0.00067656, 0.00041462, 0.00068002, -0.00000112, 0.00000000],
+        [-6.27254941, -0.00067642, 0.00041453, 0.00067987, -0.00000112, 0.00000000],
+        [-6.27254976, -0.00067627, 0.00041444, 0.00067972, -0.00000112, 0.00000000],
+        [-6.27255012, -0.00067612, 0.00041435, 0.00067958, -0.00000112, 0.00000000],
+        [-6.27255047, -0.00067597, 0.00041426, 0.00067943, -0.00000112, 0.00000000],
+        [-6.27255082, -0.00067583, 0.00041417, 0.00067928, -0.00000112, 0.00000000],
+        [-6.27255118, -0.00067568, 0.00041408, 0.00067913, -0.00000112, 0.00000000],
+        [-6.27255153, -0.00067553, 0.00041399, 0.00067898, -0.00000112, 0.00000000],
+        [-6.27255188, -0.00067538, 0.00041390, 0.00067883, -0.00000112, 0.00000000],
+        [-6.27255224, -0.00067524, 0.00041381, 0.00067869, -0.00000112, 0.00000000],
+        [-6.27255259, -0.00067509, 0.00041372, 0.00067854, -0.00000112, 0.00000000],
+        [-6.27255294, -0.00067494, 0.00041362, 0.00067839, -0.00000112, 0.00000000],
+        [-6.27255330, -0.00067479, 0.00041353, 0.00067824, -0.00000112, 0.00000000],
+        [-6.27255365, -0.00067465, 0.00041344, 0.00067810, -0.00000112, 0.00000000],
+        [-6.27255400, -0.00067450, 0.00041335, 0.00067795, -0.00000112, 0.00000000],
+        [-6.27255435, -0.00067435, 0.00041326, 0.00067780, -0.00000112, 0.00000000],
+        [-6.27255470, -0.00067421, 0.00041317, 0.00067765, -0.00000112, 0.00000000],
+        [-6.27255506, -0.00067406, 0.00041308, 0.00067750, -0.00000112, 0.00000000],
+        [-6.27255541, -0.00067391, 0.00041299, 0.00067736, -0.00000112, 0.00000000],
+        [-6.27255576, -0.00067377, 0.00041290, 0.00067721, -0.00000112, 0.00000000],
+        [-6.27255611, -0.00067362, 0.00041281, 0.00067706, -0.00000112, 0.00000000],
+        [-6.27255646, -0.00067347, 0.00041272, 0.00067691, -0.00000112, 0.00000000],
+        [-6.27255681, -0.00067333, 0.00041263, 0.00067677, -0.00000112, 0.00000000],
+        [-6.27255717, -0.00067318, 0.00041254, 0.00067662, -0.00000112, 0.00000000],
+        [-6.27255752, -0.00067303, 0.00041245, 0.00067647, -0.00000112, 0.00000000],
+        [-6.27255787, -0.00067289, 0.00041236, 0.00067633, -0.00000112, 0.00000000],
+        [-6.27255822, -0.00067274, 0.00041228, 0.00067618, -0.00000112, 0.00000000],
+        [-6.27255857, -0.00067260, 0.00041219, 0.00067603, -0.00000112, 0.00000000],
+        [-6.27255892, -0.00067245, 0.00041210, 0.00067589, -0.00000112, 0.00000000],
+        [-6.27255927, -0.00067230, 0.00041201, 0.00067574, -0.00000112, 0.00000000],
+        [-6.27255962, -0.00067216, 0.00041192, 0.00067559, -0.00000112, 0.00000000],
+        [-6.27255997, -0.00067201, 0.00041183, 0.00067544, -0.00000112, 0.00000000],
+        [-6.27256032, -0.00067187, 0.00041174, 0.00067530, -0.00000112, 0.00000000],
+        [-6.27256067, -0.00067172, 0.00041165, 0.00067515, -0.00000112, 0.00000000],
+        [-6.27256102, -0.00067157, 0.00041156, 0.00067501, -0.00000112, 0.00000000],
+        [-6.27256137, -0.00067143, 0.00041147, 0.00067486, -0.00000112, 0.00000000],
+        [-6.27256171, -0.00067128, 0.00041138, 0.00067471, -0.00000112, 0.00000000],
+        [-6.27256206, -0.00067114, 0.00041129, 0.00067457, -0.00000112, 0.00000000],
+        [-6.27256241, -0.00067099, 0.00041120, 0.00067442, -0.00000112, 0.00000000],
+        [-6.27256276, -0.00067085, 0.00041111, 0.00067427, -0.00000112, 0.00000000],
+        [-6.27256311, -0.00067070, 0.00041102, 0.00067413, -0.00000112, 0.00000000],
+        [-6.27256346, -0.00067056, 0.00041093, 0.00067398, -0.00000112, 0.00000000],
+        [-6.27256381, -0.00067041, 0.00041085, 0.00067384, -0.00000112, 0.00000000],
+        [-6.27256415, -0.00067027, 0.00041076, 0.00067369, -0.00000112, 0.00000000],
+        [-6.27256450, -0.00067012, 0.00041067, 0.00067354, -0.00000112, 0.00000000],
+        [-6.27256485, -0.00066998, 0.00041058, 0.00067340, -0.00000112, 0.00000000],
+        [-6.27256520, -0.00066983, 0.00041049, 0.00067325, -0.00000112, 0.00000000],
+        [-6.27256554, -0.00066969, 0.00041040, 0.00067311, -0.00000112, 0.00000000],
+        [-6.27256589, -0.00066954, 0.00041031, 0.00067296, -0.00000112, 0.00000000],
+        [-6.27256624, -0.00066940, 0.00041022, 0.00067282, -0.00000112, 0.00000000],
+        [-6.27256658, -0.00066925, 0.00041013, 0.00067267, -0.00000112, 0.00000000],
+        [-6.27256693, -0.00066911, 0.00041005, 0.00067252, -0.00000112, 0.00000000],
+        [-6.27256728, -0.00066896, 0.00040996, 0.00067238, -0.00000112, 0.00000000],
+        [-6.27256762, -0.00066882, 0.00040987, 0.00067223, -0.00000112, 0.00000000],
+        [-6.27256797, -0.00066867, 0.00040978, 0.00067209, -0.00000112, 0.00000000],
+        [-6.27256832, -0.00066853, 0.00040969, 0.00067194, -0.00000112, 0.00000000],
+        [-6.27256866, -0.00066838, 0.00040960, 0.00067180, -0.00000112, 0.00000000],
+        [-6.27256901, -0.00066824, 0.00040951, 0.00067165, -0.00000112, 0.00000000],
+        [-6.27256935, -0.00066810, 0.00040943, 0.00067151, -0.00000112, 0.00000000],
+        [-6.27256970, -0.00066795, 0.00040934, 0.00067136, -0.00000112, 0.00000000],
+        [-6.27257004, -0.00066781, 0.00040925, 0.00067122, -0.00000112, 0.00000000],
+        [-6.27257039, -0.00066766, 0.00040916, 0.00067107, -0.00000112, 0.00000000],
+        [-6.27257073, -0.00066752, 0.00040907, 0.00067093, -0.00000112, 0.00000000],
+        [-6.27257108, -0.00066738, 0.00040898, 0.00067078, -0.00000112, 0.00000000],
+        [-6.27257142, -0.00066723, 0.00040890, 0.00067064, -0.00000112, 0.00000000],
+        [-6.27257177, -0.00066709, 0.00040881, 0.00067050, -0.00000112, 0.00000000],
+        [-6.27257211, -0.00066694, 0.00040872, 0.00067035, -0.00000112, 0.00000000],
+        [-6.27257246, -0.00066680, 0.00040863, 0.00067021, -0.00000112, 0.00000000],
+        [-6.27257280, -0.00066666, 0.00040854, 0.00067006, -0.00000112, 0.00000000],
+        [-6.27257315, -0.00066651, 0.00040846, 0.00066992, -0.00000112, 0.00000000],
+        [-6.27257349, -0.00066637, 0.00040837, 0.00066977, -0.00000112, 0.00000000],
+        [-6.27257383, -0.00066623, 0.00040828, 0.00066963, -0.00000112, 0.00000000],
+        [-6.27257418, -0.00066608, 0.00040819, 0.00066949, -0.00000112, 0.00000000],
+        [-6.27257452, -0.00066594, 0.00040810, 0.00066934, -0.00000112, 0.00000000],
+        [-6.27257486, -0.00066580, 0.00040802, 0.00066920, -0.00000112, 0.00000000],
+        [-6.27257521, -0.00066565, 0.00040793, 0.00066905, -0.00000112, 0.00000000],
+        [-6.27257555, -0.00066551, 0.00040784, 0.00066891, -0.00000112, 0.00000000],
+        [-6.27257589, -0.00066537, 0.00040775, 0.00066877, -0.00000112, 0.00000000],
+        [-6.27257623, -0.00066522, 0.00040766, 0.00066862, -0.00000112, 0.00000000],
+        [-6.27257658, -0.00066508, 0.00040758, 0.00066848, -0.00000112, 0.00000000],
+        [-6.27257692, -0.00066494, 0.00040749, 0.00066833, -0.00000112, 0.00000000],
+        [-6.27257726, -0.00066480, 0.00040740, 0.00066819, -0.00000112, 0.00000000],
+        [-6.27257760, -0.00066465, 0.00040731, 0.00066805, -0.00000112, 0.00000000],
+        [-6.27257795, -0.00066451, 0.00040723, 0.00066790, -0.00000112, 0.00000000],
+        [-6.27257829, -0.00066437, 0.00040714, 0.00066776, -0.00000112, 0.00000000],
+        [-6.27257863, -0.00066422, 0.00040705, 0.00066762, -0.00000112, 0.00000000],
+        [-6.27257897, -0.00066408, 0.00040696, 0.00066747, -0.00000112, 0.00000000],
+        [-6.27257931, -0.00066394, 0.00040688, 0.00066733, -0.00000112, 0.00000000],
+        [-6.27257965, -0.00066380, 0.00040679, 0.00066719, -0.00000112, 0.00000000],
+        [-6.27257999, -0.00066366, 0.00040670, 0.00066704, -0.00000112, 0.00000000],
+        [-6.27258033, -0.00066351, 0.00040662, 0.00066690, -0.00000112, 0.00000000],
+        [-6.27258068, -0.00066337, 0.00040653, 0.00066676, -0.00000112, 0.00000000],
+        [-6.27258102, -0.00066323, 0.00040644, 0.00066662, -0.00000112, 0.00000000],
+        [-6.27258136, -0.00066309, 0.00040635, 0.00066647, -0.00000112, 0.00000000],
+        [-6.27258170, -0.00066294, 0.00040627, 0.00066633, -0.00000112, 0.00000000],
+        [-6.27258204, -0.00066280, 0.00040618, 0.00066619, -0.00000112, 0.00000000],
+        [-6.27258238, -0.00066266, 0.00040609, 0.00066604, -0.00000112, 0.00000000],
+        [-6.27258272, -0.00066252, 0.00040601, 0.00066590, -0.00000112, 0.00000000],
+        [-6.27258306, -0.00066238, 0.00040592, 0.00066576, -0.00000112, 0.00000000],
+        [-6.27258340, -0.00066224, 0.00040583, 0.00066562, -0.00000112, 0.00000000],
+        [-6.27258373, -0.00066209, 0.00040574, 0.00066547, -0.00000112, 0.00000000],
+        [-6.27258407, -0.00066195, 0.00040566, 0.00066533, -0.00000112, 0.00000000],
+        [-6.27258441, -0.00066181, 0.00040557, 0.00066519, -0.00000112, 0.00000000],
+        [-6.27258475, -0.00066167, 0.00040548, 0.00066505, -0.00000112, 0.00000000],
+        [-6.27258509, -0.00066153, 0.00040540, 0.00066491, -0.00000112, 0.00000000],
+        [-6.27258543, -0.00066139, 0.00040531, 0.00066476, -0.00000112, 0.00000000],
+        [-6.27258577, -0.00066125, 0.00040522, 0.00066462, -0.00000112, 0.00000000],
+        [-6.27258611, -0.00066110, 0.00040514, 0.00066448, -0.00000112, 0.00000000],
+        [-6.27258644, -0.00066096, 0.00040505, 0.00066434, -0.00000112, 0.00000000],
+        [-6.27258678, -0.00066082, 0.00040496, 0.00066420, -0.00000112, 0.00000000],
+        [-6.27258712, -0.00066068, 0.00040488, 0.00066405, -0.00000112, 0.00000000],
+        [-6.27258746, -0.00066054, 0.00040479, 0.00066391, -0.00000112, 0.00000000],
+        [-6.27258780, -0.00066040, 0.00040471, 0.00066377, -0.00000112, 0.00000000],
+        [-6.27258813, -0.00066026, 0.00040462, 0.00066363, -0.00000112, 0.00000000],
+        [-6.27258847, -0.00066012, 0.00040453, 0.00066349, -0.00000112, 0.00000000],
+        [-6.27258881, -0.00065998, 0.00040445, 0.00066335, -0.00000112, 0.00000000],
+        [-6.27258914, -0.00065984, 0.00040436, 0.00066320, -0.00000112, 0.00000000],
+        [-6.27258948, -0.00065970, 0.00040427, 0.00066306, -0.00000112, 0.00000000],
+        [-6.27258982, -0.00065955, 0.00040419, 0.00066292, -0.00000112, 0.00000000],
+        [-6.27259015, -0.00065941, 0.00040410, 0.00066278, -0.00000112, 0.00000000],
+        [-6.27259049, -0.00065927, 0.00040401, 0.00066264, -0.00000112, 0.00000000],
+        [-6.27259083, -0.00065913, 0.00040393, 0.00066250, -0.00000112, 0.00000000],
+        [-6.27259116, -0.00065899, 0.00040384, 0.00066236, -0.00000112, 0.00000000],
+        [-6.27259150, -0.00065885, 0.00040376, 0.00066222, -0.00000112, 0.00000000],
+        [-6.27259184, -0.00065871, 0.00040367, 0.00066208, -0.00000112, 0.00000000],
+        [-6.27259217, -0.00065857, 0.00040358, 0.00066193, -0.00000112, 0.00000000],
+        [-6.27259251, -0.00065843, 0.00040350, 0.00066179, -0.00000112, 0.00000000],
+        [-6.27259284, -0.00065829, 0.00040341, 0.00066165, -0.00000112, 0.00000000],
+        [-6.27259318, -0.00065815, 0.00040333, 0.00066151, -0.00000112, 0.00000000],
+        [-6.27259351, -0.00065801, 0.00040324, 0.00066137, -0.00000112, 0.00000000],
+        [-6.27259385, -0.00065787, 0.00040316, 0.00066123, -0.00000112, 0.00000000],
+        [-6.27259418, -0.00065773, 0.00040307, 0.00066109, -0.00000112, 0.00000000],
+        [-6.27259452, -0.00065759, 0.00040298, 0.00066095, -0.00000112, 0.00000000],
+        [-6.27259485, -0.00065745, 0.00040290, 0.00066081, -0.00000112, 0.00000000],
+        [-6.27259519, -0.00065731, 0.00040281, 0.00066067, -0.00000112, 0.00000000],
+        [-6.27259552, -0.00065717, 0.00040273, 0.00066053, -0.00000112, 0.00000000],
+        [-6.27259585, -0.00065703, 0.00040264, 0.00066039, -0.00000112, 0.00000000],
+        [-6.27259619, -0.00065690, 0.00040256, 0.00066025, -0.00000112, 0.00000000],
+        [-6.27259652, -0.00065676, 0.00040247, 0.00066011, -0.00000112, 0.00000000],
+        [-6.27259686, -0.00065662, 0.00040239, 0.00065997, -0.00000112, 0.00000000],
+        [-6.27259719, -0.00065648, 0.00040230, 0.00065983, -0.00000112, 0.00000000],
+        [-6.27259752, -0.00065634, 0.00040221, 0.00065969, -0.00000112, 0.00000000],
+        [-6.27259786, -0.00065620, 0.00040213, 0.00065955, -0.00000112, 0.00000000],
+        [-6.27259819, -0.00065606, 0.00040204, 0.00065941, -0.00000112, 0.00000000],
+        [-6.27259852, -0.00065592, 0.00040196, 0.00065927, -0.00000112, 0.00000000],
+        [-6.27259885, -0.00065578, 0.00040187, 0.00065913, -0.00000112, 0.00000000],
+        [-6.27259919, -0.00065564, 0.00040179, 0.00065899, -0.00000112, 0.00000000],
+        [-6.27259952, -0.00065550, 0.00040170, 0.00065885, -0.00000112, 0.00000000],
+        [-6.27259985, -0.00065537, 0.00040162, 0.00065871, -0.00000112, 0.00000000],
+        [-6.27260018, -0.00065523, 0.00040153, 0.00065857, -0.00000112, 0.00000000],
+        [-6.27260052, -0.00065509, 0.00040145, 0.00065843, -0.00000112, 0.00000000],
+        [-6.27260085, -0.00065495, 0.00040136, 0.00065829, -0.00000112, 0.00000000],
+        [-6.27260118, -0.00065481, 0.00040128, 0.00065815, -0.00000112, 0.00000000],
+        [-6.27260151, -0.00065467, 0.00040119, 0.00065801, -0.00000112, 0.00000000],
+        [-6.27260184, -0.00065453, 0.00040111, 0.00065788, -0.00000112, 0.00000000],
+        [-6.27260217, -0.00065440, 0.00040102, 0.00065774, -0.00000112, 0.00000000],
+        [-6.27260251, -0.00065426, 0.00040094, 0.00065760, -0.00000112, 0.00000000],
+        [-6.27260284, -0.00065412, 0.00040085, 0.00065746, -0.00000112, 0.00000000],
+        [-6.27260317, -0.00065398, 0.00040077, 0.00065732, -0.00000112, 0.00000000],
+        [-6.27260350, -0.00065384, 0.00040068, 0.00065718, -0.00000112, 0.00000000],
+        [-6.27260383, -0.00065370, 0.00040060, 0.00065704, -0.00000112, 0.00000000],
+        [-6.27260416, -0.00065357, 0.00040051, 0.00065690, -0.00000112, 0.00000000],
+        [-6.27260449, -0.00065343, 0.00040043, 0.00065676, -0.00000112, 0.00000000],
+        [-6.27260482, -0.00065329, 0.00040035, 0.00065663, -0.00000112, 0.00000000],
+        [-6.27260515, -0.00065315, 0.00040026, 0.00065649, -0.00000112, 0.00000000],
+        [-6.27260548, -0.00065302, 0.00040018, 0.00065635, -0.00000112, 0.00000000],
+        [-6.27260581, -0.00065288, 0.00040009, 0.00065621, -0.00000112, 0.00000000],
+        [-6.27260614, -0.00065274, 0.00040001, 0.00065607, -0.00000112, 0.00000000],
+        [-6.27260647, -0.00065260, 0.00039992, 0.00065593, -0.00000112, 0.00000000],
+        [-6.27260680, -0.00065246, 0.00039984, 0.00065580, -0.00000112, 0.00000000],
+        [-6.27260713, -0.00065233, 0.00039975, 0.00065566, -0.00000112, 0.00000000],
+        [-6.27260746, -0.00065219, 0.00039967, 0.00065552, -0.00000112, 0.00000000],
+        [-6.27260779, -0.00065205, 0.00039959, 0.00065538, -0.00000112, 0.00000000],
+        [-6.27260812, -0.00065192, 0.00039950, 0.00065524, -0.00000112, 0.00000000],
+        [-6.27260844, -0.00065178, 0.00039942, 0.00065510, -0.00000112, 0.00000000],
+        [-6.27260877, -0.00065164, 0.00039933, 0.00065497, -0.00000112, 0.00000000],
+        [-6.27260910, -0.00065150, 0.00039925, 0.00065483, -0.00000112, 0.00000000],
+        [-6.27260943, -0.00065137, 0.00039917, 0.00065469, -0.00000112, 0.00000000],
+        [-6.27260976, -0.00065123, 0.00039908, 0.00065455, -0.00000112, 0.00000000],
+        [-6.27261009, -0.00065109, 0.00039900, 0.00065442, -0.00000112, 0.00000000],
+        [-6.27261041, -0.00065096, 0.00039891, 0.00065428, -0.00000112, 0.00000000],
+        [-6.27261074, -0.00065082, 0.00039883, 0.00065414, -0.00000112, 0.00000000],
+        [-6.27261107, -0.00065068, 0.00039875, 0.00065400, -0.00000112, 0.00000000],
+        [-6.27261140, -0.00065055, 0.00039866, 0.00065387, -0.00000112, 0.00000000],
+        [-6.27261172, -0.00065041, 0.00039858, 0.00065373, -0.00000112, 0.00000000],
+        [-6.27261205, -0.00065027, 0.00039849, 0.00065359, -0.00000112, 0.00000000],
+        [-6.27261238, -0.00065014, 0.00039841, 0.00065345, -0.00000112, 0.00000000],
+        [-6.27261271, -0.00065000, 0.00039833, 0.00065332, -0.00000112, 0.00000000],
+        [-6.27261303, -0.00064986, 0.00039824, 0.00065318, -0.00000112, 0.00000000],
+        [-6.27261336, -0.00064973, 0.00039816, 0.00065304, -0.00000112, 0.00000000],
+        [-6.27261369, -0.00064959, 0.00039808, 0.00065290, -0.00000112, 0.00000000],
+        [-6.27261401, -0.00064945, 0.00039799, 0.00065277, -0.00000112, 0.00000000],
+        [-6.27261434, -0.00064932, 0.00039791, 0.00065263, -0.00000112, 0.00000000],
+        [-6.27261466, -0.00064918, 0.00039782, 0.00065249, -0.00000112, 0.00000000],
+        [-6.27261499, -0.00064904, 0.00039774, 0.00065236, -0.00000112, 0.00000000],
+        [-6.27261532, -0.00064891, 0.00039766, 0.00065222, -0.00000112, 0.00000000],
+        [-6.27261564, -0.00064877, 0.00039757, 0.00065208, -0.00000112, 0.00000000],
+        [-6.27261597, -0.00064864, 0.00039749, 0.00065195, -0.00000112, 0.00000000],
+        [-6.27261629, -0.00064850, 0.00039741, 0.00065181, -0.00000112, 0.00000000],
+        [-6.27261662, -0.00064836, 0.00039732, 0.00065167, -0.00000112, 0.00000000],
+        [-6.27261694, -0.00064823, 0.00039724, 0.00065154, -0.00000112, 0.00000000],
+        [-6.27261727, -0.00064809, 0.00039716, 0.00065140, -0.00000112, 0.00000000],
+        [-6.27261759, -0.00064796, 0.00039707, 0.00065126, -0.00000112, 0.00000000],
+        [-6.27261792, -0.00064782, 0.00039699, 0.00065113, -0.00000112, 0.00000000],
+        [-6.27261824, -0.00064769, 0.00039691, 0.00065099, -0.00000112, 0.00000000],
+        [-6.27261857, -0.00064755, 0.00039683, 0.00065086, -0.00000112, 0.00000000],
+        [-6.27261889, -0.00064742, 0.00039674, 0.00065072, -0.00000112, 0.00000000],
+        [-6.27261921, -0.00064728, 0.00039666, 0.00065058, -0.00000112, 0.00000000],
+        [-6.27261954, -0.00064715, 0.00039658, 0.00065045, -0.00000112, 0.00000000],
+        [-6.27261986, -0.00064701, 0.00039649, 0.00065031, -0.00000112, 0.00000000],
+        [-6.27262019, -0.00064687, 0.00039641, 0.00065018, -0.00000112, 0.00000000],
+        [-6.27262051, -0.00064674, 0.00039633, 0.00065004, -0.00000112, 0.00000000],
+        [-6.27262083, -0.00064660, 0.00039624, 0.00064990, -0.00000112, 0.00000000],
+        [-6.27262116, -0.00064647, 0.00039616, 0.00064977, -0.00000112, 0.00000000],
+        [-6.27262148, -0.00064633, 0.00039608, 0.00064963, -0.00000112, 0.00000000],
+        [-6.27262180, -0.00064620, 0.00039600, 0.00064950, -0.00000112, 0.00000000],
+        [-6.27262213, -0.00064606, 0.00039591, 0.00064936, -0.00000112, 0.00000000],
+        [-6.27262245, -0.00064593, 0.00039583, 0.00064923, -0.00000112, 0.00000000],
+        [-6.27262277, -0.00064579, 0.00039575, 0.00064909, -0.00000112, 0.00000000],
+        [-6.27262309, -0.00064566, 0.00039567, 0.00064895, -0.00000112, 0.00000000],
+        [-6.27262342, -0.00064553, 0.00039558, 0.00064882, -0.00000112, 0.00000000],
+        [-6.27262374, -0.00064539, 0.00039550, 0.00064868, -0.00000112, 0.00000000],
+        [-6.27262406, -0.00064526, 0.00039542, 0.00064855, -0.00000112, 0.00000000],
+        [-6.27262438, -0.00064512, 0.00039534, 0.00064841, -0.00000112, 0.00000000],
+        [-6.27262470, -0.00064499, 0.00039525, 0.00064828, -0.00000112, 0.00000000],
+        [-6.27262503, -0.00064485, 0.00039517, 0.00064814, -0.00000112, 0.00000000],
+        [-6.27262535, -0.00064472, 0.00039509, 0.00064801, -0.00000112, 0.00000000],
+        [-6.27262567, -0.00064458, 0.00039501, 0.00064787, -0.00000112, 0.00000000],
+        [-6.27262599, -0.00064445, 0.00039492, 0.00064774, -0.00000112, 0.00000000],
+        [-6.27262631, -0.00064432, 0.00039484, 0.00064760, -0.00000112, 0.00000000],
+        [-6.27262663, -0.00064418, 0.00039476, 0.00064747, -0.00000112, 0.00000000],
+        [-6.27262695, -0.00064405, 0.00039468, 0.00064733, -0.00000112, 0.00000000],
+        [-6.27262727, -0.00064391, 0.00039460, 0.00064720, -0.00000112, 0.00000000],
+        [-6.27262759, -0.00064378, 0.00039451, 0.00064706, -0.00000112, 0.00000000],
+        [-6.27262792, -0.00064365, 0.00039443, 0.00064693, -0.00000112, 0.00000000],
+        [-6.27262824, -0.00064351, 0.00039435, 0.00064680, -0.00000112, 0.00000000],
+        [-6.27262856, -0.00064338, 0.00039427, 0.00064666, -0.00000112, 0.00000000],
+        [-6.27262888, -0.00064325, 0.00039418, 0.00064653, -0.00000112, 0.00000000],
+        [-6.27262920, -0.00064311, 0.00039410, 0.00064639, -0.00000112, 0.00000000],
+        [-6.27262952, -0.00064298, 0.00039402, 0.00064626, -0.00000112, 0.00000000],
+        [-6.27262984, -0.00064284, 0.00039394, 0.00064612, -0.00000112, 0.00000000],
+        [-6.27263015, -0.00064271, 0.00039386, 0.00064599, -0.00000112, 0.00000000],
+        [-6.27263047, -0.00064258, 0.00039378, 0.00064586, -0.00000112, 0.00000000],
+        [-6.27263079, -0.00064244, 0.00039369, 0.00064572, -0.00000112, 0.00000000],
+        [-6.27263111, -0.00064231, 0.00039361, 0.00064559, -0.00000112, 0.00000000],
+        [-6.27263143, -0.00064218, 0.00039353, 0.00064545, -0.00000112, 0.00000000],
+        [-6.27263175, -0.00064204, 0.00039345, 0.00064532, -0.00000112, 0.00000000],
+        [-6.27263207, -0.00064191, 0.00039337, 0.00064519, -0.00000112, 0.00000000],
+        [-6.27263239, -0.00064178, 0.00039329, 0.00064505, -0.00000112, 0.00000000],
+        [-6.27263271, -0.00064165, 0.00039320, 0.00064492, -0.00000112, 0.00000000],
+        [-6.27263302, -0.00064151, 0.00039312, 0.00064478, -0.00000112, 0.00000000],
+        [-6.27263334, -0.00064138, 0.00039304, 0.00064465, -0.00000112, 0.00000000],
+        [-6.27263366, -0.00064125, 0.00039296, 0.00064452, -0.00000112, 0.00000000],
+        [-6.27263398, -0.00064111, 0.00039288, 0.00064438, -0.00000112, 0.00000000],
+        [-6.27263430, -0.00064098, 0.00039280, 0.00064425, -0.00000112, 0.00000000],
+        [-6.27263461, -0.00064085, 0.00039271, 0.00064412, -0.00000112, 0.00000000],
+        [-6.27263493, -0.00064072, 0.00039263, 0.00064398, -0.00000112, 0.00000000],
+        [-6.27263525, -0.00064058, 0.00039255, 0.00064385, -0.00000112, 0.00000000],
+        [-6.27263557, -0.00064045, 0.00039247, 0.00064372, -0.00000112, 0.00000000],
+        [-6.27263588, -0.00064032, 0.00039239, 0.00064358, -0.00000112, 0.00000000],
+        [-6.27263620, -0.00064019, 0.00039231, 0.00064345, -0.00000112, 0.00000000],
+        [-6.27263652, -0.00064005, 0.00039223, 0.00064332, -0.00000112, 0.00000000],
+        [-6.27263683, -0.00063992, 0.00039215, 0.00064319, -0.00000112, 0.00000000],
+        [-6.27263715, -0.00063979, 0.00039206, 0.00064305, -0.00000112, 0.00000000],
+        [-6.27263747, -0.00063966, 0.00039198, 0.00064292, -0.00000112, 0.00000000],
+        [-6.27263778, -0.00063952, 0.00039190, 0.00064279, -0.00000112, 0.00000000],
+        [-6.27263810, -0.00063939, 0.00039182, 0.00064265, -0.00000112, 0.00000000],
+        [-6.27263842, -0.00063926, 0.00039174, 0.00064252, -0.00000112, 0.00000000],
+        [-6.27263873, -0.00063913, 0.00039166, 0.00064239, -0.00000112, 0.00000000],
+        [-6.27263905, -0.00063900, 0.00039158, 0.00064226, -0.00000112, 0.00000000],
+        [-6.27263936, -0.00063886, 0.00039150, 0.00064212, -0.00000112, 0.00000000],
+        [-6.27263968, -0.00063873, 0.00039142, 0.00064199, -0.00000112, 0.00000000],
+        [-6.27263999, -0.00063860, 0.00039134, 0.00064186, -0.00000112, 0.00000000],
+        [-6.27264031, -0.00063847, 0.00039126, 0.00064173, -0.00000112, 0.00000000],
+        [-6.27264063, -0.00063834, 0.00039117, 0.00064159, -0.00000112, 0.00000000],
+        [-6.27264094, -0.00063821, 0.00039109, 0.00064146, -0.00000112, 0.00000000],
+        [-6.27264126, -0.00063807, 0.00039101, 0.00064133, -0.00000112, 0.00000000],
+        [-6.27264157, -0.00063794, 0.00039093, 0.00064120, -0.00000112, 0.00000000],
+        [-6.27264188, -0.00063781, 0.00039085, 0.00064106, -0.00000112, 0.00000000],
+        [-6.27264220, -0.00063768, 0.00039077, 0.00064093, -0.00000112, 0.00000000],
+        [-6.27264251, -0.00063755, 0.00039069, 0.00064080, -0.00000113, 0.00000000],
+        [-6.27264283, -0.00063742, 0.00039061, 0.00064067, -0.00000113, 0.00000000],
+        [-6.27264314, -0.00063729, 0.00039053, 0.00064054, -0.00000113, 0.00000000],
+        [-6.27264346, -0.00063716, 0.00039045, 0.00064040, -0.00000113, 0.00000000],
+        [-6.27264377, -0.00063702, 0.00039037, 0.00064027, -0.00000113, 0.00000000],
+        [-6.27264408, -0.00063689, 0.00039029, 0.00064014, -0.00000113, 0.00000000],
+        [-6.27264440, -0.00063676, 0.00039021, 0.00064001, -0.00000113, 0.00000000],
+        [-6.27264471, -0.00063663, 0.00039013, 0.00063988, -0.00000113, 0.00000000],
+        [-6.27264502, -0.00063650, 0.00039005, 0.00063975, -0.00000113, 0.00000000],
+        [-6.27264534, -0.00063637, 0.00038997, 0.00063961, -0.00000113, 0.00000000],
+        [-6.27264565, -0.00063624, 0.00038989, 0.00063948, -0.00000113, 0.00000000],
+        [-6.27264596, -0.00063611, 0.00038981, 0.00063935, -0.00000113, 0.00000000],
+        [-6.27264628, -0.00063598, 0.00038973, 0.00063922, -0.00000113, 0.00000000],
+        [-6.27264659, -0.00063585, 0.00038965, 0.00063909, -0.00000113, 0.00000000],
+        [-6.27264690, -0.00063572, 0.00038957, 0.00063896, -0.00000113, 0.00000000],
+        [-6.27264721, -0.00063559, 0.00038949, 0.00063883, -0.00000113, 0.00000000],
+        [-6.27264753, -0.00063545, 0.00038941, 0.00063870, -0.00000113, 0.00000000],
+        [-6.27264784, -0.00063532, 0.00038933, 0.00063856, -0.00000113, 0.00000000],
+        [-6.27264815, -0.00063519, 0.00038925, 0.00063843, -0.00000113, 0.00000000],
+        [-6.27264846, -0.00063506, 0.00038917, 0.00063830, -0.00000113, 0.00000000],
+        [-6.27264877, -0.00063493, 0.00038909, 0.00063817, -0.00000113, 0.00000000],
+        [-6.27264909, -0.00063480, 0.00038901, 0.00063804, -0.00000113, 0.00000000],
+        [-6.27264940, -0.00063467, 0.00038893, 0.00063791, -0.00000113, 0.00000000],
+        [-6.27264971, -0.00063454, 0.00038885, 0.00063778, -0.00000113, 0.00000000],
+        [-6.27265002, -0.00063441, 0.00038877, 0.00063765, -0.00000113, 0.00000000],
+        [-6.27265033, -0.00063428, 0.00038869, 0.00063752, -0.00000113, 0.00000000],
+        [-6.27265064, -0.00063415, 0.00038861, 0.00063739, -0.00000113, 0.00000000],
+        [-6.27265095, -0.00063402, 0.00038853, 0.00063726, -0.00000113, 0.00000000],
+        [-6.27265126, -0.00063389, 0.00038845, 0.00063713, -0.00000113, 0.00000000],
+        [-6.27265157, -0.00063376, 0.00038837, 0.00063700, -0.00000113, 0.00000000],
+        [-6.27265189, -0.00063363, 0.00038829, 0.00063686, -0.00000113, 0.00000000],
+        [-6.27265220, -0.00063350, 0.00038821, 0.00063673, -0.00000113, 0.00000000],
+        [-6.27265251, -0.00063337, 0.00038813, 0.00063660, -0.00000113, 0.00000000],
+        [-6.27265282, -0.00063324, 0.00038805, 0.00063647, -0.00000113, 0.00000000],
+        [-6.27265313, -0.00063312, 0.00038797, 0.00063634, -0.00000113, 0.00000000],
+        [-6.27265344, -0.00063299, 0.00038789, 0.00063621, -0.00000113, 0.00000000],
+        [-6.27265375, -0.00063286, 0.00038781, 0.00063608, -0.00000113, 0.00000000],
+        [-6.27265406, -0.00063273, 0.00038773, 0.00063595, -0.00000113, 0.00000000],
+        [-6.27265436, -0.00063260, 0.00038765, 0.00063582, -0.00000113, 0.00000000],
+        [-6.27265467, -0.00063247, 0.00038758, 0.00063569, -0.00000113, 0.00000000],
+        [-6.27265498, -0.00063234, 0.00038750, 0.00063556, -0.00000113, 0.00000000],
+        [-6.27265529, -0.00063221, 0.00038742, 0.00063543, -0.00000113, 0.00000000],
+        [-6.27265560, -0.00063208, 0.00038734, 0.00063530, -0.00000113, 0.00000000],
+        [-6.27265591, -0.00063195, 0.00038726, 0.00063517, -0.00000113, 0.00000000],
+        [-6.27265622, -0.00063182, 0.00038718, 0.00063504, -0.00000113, 0.00000000],
+        [-6.27265653, -0.00063169, 0.00038710, 0.00063492, -0.00000113, 0.00000000],
+        [-6.27265684, -0.00063157, 0.00038702, 0.00063479, -0.00000113, 0.00000000],
+        [-6.27265714, -0.00063144, 0.00038694, 0.00063466, -0.00000113, 0.00000000],
+        [-6.27265745, -0.00063131, 0.00038686, 0.00063453, -0.00000113, 0.00000000],
+        [-6.27265776, -0.00063118, 0.00038678, 0.00063440, -0.00000113, 0.00000000],
+        [-6.27265807, -0.00063105, 0.00038671, 0.00063427, -0.00000113, 0.00000000],
+        [-6.27265838, -0.00063092, 0.00038663, 0.00063414, -0.00000113, 0.00000000],
+        [-6.27265868, -0.00063079, 0.00038655, 0.00063401, -0.00000113, 0.00000000],
+        [-6.27265899, -0.00063066, 0.00038647, 0.00063388, -0.00000113, 0.00000000],
+        [-6.27265930, -0.00063054, 0.00038639, 0.00063375, -0.00000113, 0.00000000],
+        [-6.27265961, -0.00063041, 0.00038631, 0.00063362, -0.00000113, 0.00000000],
+        [-6.27265991, -0.00063028, 0.00038623, 0.00063349, -0.00000113, 0.00000000],
+        [-6.27266022, -0.00063015, 0.00038615, 0.00063336, -0.00000113, 0.00000000],
+        [-6.27266053, -0.00063002, 0.00038608, 0.00063323, -0.00000113, 0.00000000],
+        [-6.27266083, -0.00062989, 0.00038600, 0.00063311, -0.00000113, 0.00000000],
+        [-6.27266114, -0.00062977, 0.00038592, 0.00063298, -0.00000113, 0.00000000],
+        [-6.27266145, -0.00062964, 0.00038584, 0.00063285, -0.00000113, 0.00000000],
+        [-6.27266175, -0.00062951, 0.00038576, 0.00063272, -0.00000113, 0.00000000],
+        [-6.27266206, -0.00062938, 0.00038568, 0.00063259, -0.00000113, 0.00000000],
+        [-6.27266237, -0.00062925, 0.00038560, 0.00063246, -0.00000113, 0.00000000],
+        [-6.27266267, -0.00062913, 0.00038553, 0.00063233, -0.00000113, 0.00000000],
+        [-6.27266298, -0.00062900, 0.00038545, 0.00063221, -0.00000113, 0.00000000],
+        [-6.27266329, -0.00062887, 0.00038537, 0.00063208, -0.00000113, 0.00000000],
+        [-6.27266359, -0.00062874, 0.00038529, 0.00063195, -0.00000113, 0.00000000],
+        [-6.27266390, -0.00062862, 0.00038521, 0.00063182, -0.00000113, 0.00000000],
+        [-6.27266420, -0.00062849, 0.00038513, 0.00063169, -0.00000113, 0.00000000],
+        [-6.27266451, -0.00062836, 0.00038506, 0.00063156, -0.00000113, 0.00000000],
+        [-6.27266481, -0.00062823, 0.00038498, 0.00063144, -0.00000113, 0.00000000],
+        [-6.27266512, -0.00062811, 0.00038490, 0.00063131, -0.00000113, 0.00000000],
+        [-6.27266542, -0.00062798, 0.00038482, 0.00063118, -0.00000113, 0.00000000],
+        [-6.27266573, -0.00062785, 0.00038474, 0.00063105, -0.00000113, 0.00000000],
+        [-6.27266603, -0.00062772, 0.00038467, 0.00063092, -0.00000113, 0.00000000],
+        [-6.27266634, -0.00062760, 0.00038459, 0.00063080, -0.00000113, 0.00000000],
+        [-6.27266664, -0.00062747, 0.00038451, 0.00063067, -0.00000113, 0.00000000],
+        [-6.27266695, -0.00062734, 0.00038443, 0.00063054, -0.00000113, 0.00000000],
+        [-6.27266725, -0.00062721, 0.00038435, 0.00063041, -0.00000113, 0.00000000],
+        [-6.27266755, -0.00062709, 0.00038428, 0.00063028, -0.00000113, 0.00000000],
+        [-6.27266786, -0.00062696, 0.00038420, 0.00063016, -0.00000113, 0.00000000],
+        [-6.27266816, -0.00062683, 0.00038412, 0.00063003, -0.00000113, 0.00000000],
+        [-6.27266847, -0.00062671, 0.00038404, 0.00062990, -0.00000113, 0.00000000],
+        [-6.27266877, -0.00062658, 0.00038396, 0.00062977, -0.00000113, 0.00000000],
+        [-6.27266907, -0.00062645, 0.00038389, 0.00062965, -0.00000113, 0.00000000],
+        [-6.27266938, -0.00062633, 0.00038381, 0.00062952, -0.00000113, 0.00000000],
+        [-6.27266968, -0.00062620, 0.00038373, 0.00062939, -0.00000113, 0.00000000],
+        [-6.27266998, -0.00062607, 0.00038365, 0.00062926, -0.00000113, 0.00000000],
+        [-6.27267028, -0.00062595, 0.00038358, 0.00062914, -0.00000113, 0.00000000],
+        [-6.27267059, -0.00062582, 0.00038350, 0.00062901, -0.00000113, 0.00000000],
+        [-6.27267089, -0.00062569, 0.00038342, 0.00062888, -0.00000113, 0.00000000],
+        [-6.27267119, -0.00062557, 0.00038334, 0.00062876, -0.00000113, 0.00000000],
+        [-6.27267150, -0.00062544, 0.00038327, 0.00062863, -0.00000113, 0.00000000],
+        [-6.27267180, -0.00062531, 0.00038319, 0.00062850, -0.00000113, 0.00000000],
+        [-6.27267210, -0.00062519, 0.00038311, 0.00062837, -0.00000113, 0.00000000],
+        [-6.27267240, -0.00062506, 0.00038303, 0.00062825, -0.00000113, 0.00000000],
+        [-6.27267270, -0.00062494, 0.00038296, 0.00062812, -0.00000113, 0.00000000],
+        [-6.27267301, -0.00062481, 0.00038288, 0.00062799, -0.00000113, 0.00000000],
+        [-6.27267331, -0.00062468, 0.00038280, 0.00062787, -0.00000113, 0.00000000],
+        [-6.27267361, -0.00062456, 0.00038272, 0.00062774, -0.00000113, 0.00000000],
+        [-6.27267391, -0.00062443, 0.00038265, 0.00062761, -0.00000113, 0.00000000],
+        [-6.27267421, -0.00062431, 0.00038257, 0.00062749, -0.00000113, 0.00000000],
+        [-6.27267451, -0.00062418, 0.00038249, 0.00062736, -0.00000113, 0.00000000],
+        [-6.27267481, -0.00062405, 0.00038241, 0.00062723, -0.00000113, 0.00000000],
+        [-6.27267512, -0.00062393, 0.00038234, 0.00062711, -0.00000113, 0.00000000],
+        [-6.27267542, -0.00062380, 0.00038226, 0.00062698, -0.00000113, 0.00000000],
+        [-6.27267572, -0.00062368, 0.00038218, 0.00062685, -0.00000113, 0.00000000],
+        [-6.27267602, -0.00062355, 0.00038211, 0.00062673, -0.00000113, 0.00000000],
+        [-6.27267632, -0.00062342, 0.00038203, 0.00062660, -0.00000113, 0.00000000],
+        [-6.27267662, -0.00062330, 0.00038195, 0.00062648, -0.00000113, 0.00000000],
+        [-6.27267692, -0.00062317, 0.00038188, 0.00062635, -0.00000113, 0.00000000],
+        [-6.27267722, -0.00062305, 0.00038180, 0.00062622, -0.00000113, 0.00000000],
+        [-6.27267752, -0.00062292, 0.00038172, 0.00062610, -0.00000113, 0.00000000],
+        [-6.27267782, -0.00062280, 0.00038164, 0.00062597, -0.00000113, 0.00000000],
+        [-6.27267812, -0.00062267, 0.00038157, 0.00062585, -0.00000113, 0.00000000],
+        [-6.27267842, -0.00062255, 0.00038149, 0.00062572, -0.00000113, 0.00000000],
+        [-6.27267872, -0.00062242, 0.00038141, 0.00062559, -0.00000113, 0.00000000],
+        [-6.27267902, -0.00062230, 0.00038134, 0.00062547, -0.00000113, 0.00000000],
+        [-6.27267932, -0.00062217, 0.00038126, 0.00062534, -0.00000113, 0.00000000],
+        [-6.27267962, -0.00062205, 0.00038118, 0.00062522, -0.00000113, 0.00000000],
+        [-6.27267992, -0.00062192, 0.00038111, 0.00062509, -0.00000113, 0.00000000],
+        [-6.27268021, -0.00062180, 0.00038103, 0.00062497, -0.00000113, 0.00000000],
+        [-6.27268051, -0.00062167, 0.00038095, 0.00062484, -0.00000113, 0.00000000],
+        [-6.27268081, -0.00062155, 0.00038088, 0.00062471, -0.00000113, 0.00000000],
+        [-6.27268111, -0.00062142, 0.00038080, 0.00062459, -0.00000113, 0.00000000],
+        [-6.27268141, -0.00062130, 0.00038072, 0.00062446, -0.00000113, 0.00000000],
+        [-6.27268171, -0.00062117, 0.00038065, 0.00062434, -0.00000113, 0.00000000],
+        [-6.27268201, -0.00062105, 0.00038057, 0.00062421, -0.00000113, 0.00000000],
+        [-6.27268230, -0.00062092, 0.00038050, 0.00062409, -0.00000113, 0.00000000],
+        [-6.27268260, -0.00062080, 0.00038042, 0.00062396, -0.00000113, 0.00000000],
+        [-6.27268290, -0.00062067, 0.00038034, 0.00062384, -0.00000113, 0.00000000],
+        [-6.27268320, -0.00062055, 0.00038027, 0.00062371, -0.00000113, 0.00000000],
+        [-6.27268350, -0.00062043, 0.00038019, 0.00062359, -0.00000113, 0.00000000],
+        [-6.27268379, -0.00062030, 0.00038011, 0.00062346, -0.00000113, 0.00000000],
+        [-6.27268409, -0.00062018, 0.00038004, 0.00062334, -0.00000113, 0.00000000],
+        [-6.27268439, -0.00062005, 0.00037996, 0.00062321, -0.00000113, 0.00000000],
+        [-6.27268468, -0.00061993, 0.00037989, 0.00062309, -0.00000113, 0.00000000],
+        [-6.27268498, -0.00061980, 0.00037981, 0.00062296, -0.00000113, 0.00000000],
+        [-6.27268528, -0.00061968, 0.00037973, 0.00062284, -0.00000113, 0.00000000],
+        [-6.27268558, -0.00061956, 0.00037966, 0.00062271, -0.00000113, 0.00000000],
+        [-6.27268587, -0.00061943, 0.00037958, 0.00062259, -0.00000113, 0.00000000],
+        [-6.27268617, -0.00061931, 0.00037951, 0.00062246, -0.00000113, 0.00000000],
+        [-6.27268647, -0.00061919, 0.00037943, 0.00062234, -0.00000113, 0.00000000],
+        [-6.27268676, -0.00061906, 0.00037935, 0.00062222, -0.00000113, 0.00000000],
+        [-6.27268706, -0.00061894, 0.00037928, 0.00062209, -0.00000113, 0.00000000],
+        [-6.27268735, -0.00061881, 0.00037920, 0.00062197, -0.00000113, 0.00000000],
+        [-6.27268765, -0.00061869, 0.00037913, 0.00062184, -0.00000113, 0.00000000],
+        [-6.27268795, -0.00061857, 0.00037905, 0.00062172, -0.00000113, 0.00000000],
+        [-6.27268824, -0.00061844, 0.00037897, 0.00062159, -0.00000113, 0.00000000],
+        [-6.27268854, -0.00061832, 0.00037890, 0.00062147, -0.00000113, 0.00000000],
+        [-6.27268883, -0.00061820, 0.00037882, 0.00062135, -0.00000113, 0.00000000],
+        [-6.27268913, -0.00061807, 0.00037875, 0.00062122, -0.00000113, 0.00000000],
+        [-6.27268942, -0.00061795, 0.00037867, 0.00062110, -0.00000113, 0.00000000],
+        [-6.27268972, -0.00061783, 0.00037860, 0.00062097, -0.00000113, 0.00000000],
+        [-6.27269001, -0.00061770, 0.00037852, 0.00062085, -0.00000113, 0.00000000],
+        [-6.27269031, -0.00061758, 0.00037844, 0.00062073, -0.00000113, 0.00000000],
+        [-6.27269060, -0.00061746, 0.00037837, 0.00062060, -0.00000113, 0.00000000],
+        [-6.27269090, -0.00061733, 0.00037829, 0.00062048, -0.00000113, 0.00000000],
+        [-6.27269119, -0.00061721, 0.00037822, 0.00062035, -0.00000113, 0.00000000],
+        [-6.27269149, -0.00061709, 0.00037814, 0.00062023, -0.00000113, 0.00000000],
+        [-6.27269178, -0.00061696, 0.00037807, 0.00062011, -0.00000113, 0.00000000],
+        [-6.27269208, -0.00061684, 0.00037799, 0.00061998, -0.00000113, 0.00000000],
+        [-6.27269237, -0.00061672, 0.00037792, 0.00061986, -0.00000113, 0.00000000],
+        [-6.27269266, -0.00061660, 0.00037784, 0.00061974, -0.00000113, 0.00000000],
+        [-6.27269296, -0.00061647, 0.00037777, 0.00061961, -0.00000113, 0.00000000],
+        [-6.27269325, -0.00061635, 0.00037769, 0.00061949, -0.00000113, 0.00000000],
+        [-6.27269354, -0.00061623, 0.00037762, 0.00061937, -0.00000113, 0.00000000],
+        [-6.27269384, -0.00061610, 0.00037754, 0.00061924, -0.00000113, 0.00000000],
+        [-6.27269413, -0.00061598, 0.00037746, 0.00061912, -0.00000113, 0.00000000],
+        [-6.27269442, -0.00061586, 0.00037739, 0.00061900, -0.00000113, 0.00000000],
+        [-6.27269472, -0.00061574, 0.00037731, 0.00061887, -0.00000113, 0.00000000],
+        [-6.27269501, -0.00061561, 0.00037724, 0.00061875, -0.00000113, 0.00000000],
+        [-6.27269530, -0.00061549, 0.00037716, 0.00061863, -0.00000113, 0.00000000],
+        [-6.27269560, -0.00061537, 0.00037709, 0.00061850, -0.00000113, 0.00000000],
+        [-6.27269589, -0.00061525, 0.00037701, 0.00061838, -0.00000113, 0.00000000],
+        [-6.27269618, -0.00061512, 0.00037694, 0.00061826, -0.00000113, 0.00000000],
+        [-6.27269647, -0.00061500, 0.00037686, 0.00061814, -0.00000113, 0.00000000],
+        [-6.27269677, -0.00061488, 0.00037679, 0.00061801, -0.00000113, 0.00000000],
+        [-6.27269706, -0.00061476, 0.00037671, 0.00061789, -0.00000113, 0.00000000],
+        [-6.27269735, -0.00061464, 0.00037664, 0.00061777, -0.00000113, 0.00000000],
+        [-6.27269764, -0.00061451, 0.00037656, 0.00061764, -0.00000113, 0.00000000],
+        [-6.27269793, -0.00061439, 0.00037649, 0.00061752, -0.00000113, 0.00000000],
+        [-6.27269823, -0.00061427, 0.00037642, 0.00061740, -0.00000113, 0.00000000],
+        [-6.27269852, -0.00061415, 0.00037634, 0.00061728, -0.00000113, 0.00000000],
+        [-6.27269881, -0.00061403, 0.00037627, 0.00061715, -0.00000113, 0.00000000],
+        [-6.27269910, -0.00061390, 0.00037619, 0.00061703, -0.00000113, 0.00000000],
+        [-6.27269939, -0.00061378, 0.00037612, 0.00061691, -0.00000113, 0.00000000],
+        [-6.27269968, -0.00061366, 0.00037604, 0.00061679, -0.00000113, 0.00000000],
+        [-6.27269997, -0.00061354, 0.00037597, 0.00061667, -0.00000113, 0.00000000],
+        [-6.27270027, -0.00061342, 0.00037589, 0.00061654, -0.00000113, 0.00000000],
+        [-6.27270056, -0.00061330, 0.00037582, 0.00061642, -0.00000113, 0.00000000],
+        [-6.27270085, -0.00061318, 0.00037574, 0.00061630, -0.00000113, 0.00000000],
+        [-6.27270114, -0.00061305, 0.00037567, 0.00061618, -0.00000113, 0.00000000],
+        [-6.27270143, -0.00061293, 0.00037559, 0.00061605, -0.00000113, 0.00000000],
+        [-6.27270172, -0.00061281, 0.00037552, 0.00061593, -0.00000113, 0.00000000],
+        [-6.27270201, -0.00061269, 0.00037545, 0.00061581, -0.00000113, 0.00000000],
+        [-6.27270230, -0.00061257, 0.00037537, 0.00061569, -0.00000113, 0.00000000],
+        [-6.27270259, -0.00061245, 0.00037530, 0.00061557, -0.00000113, 0.00000000],
+        [-6.27270288, -0.00061233, 0.00037522, 0.00061545, -0.00000113, 0.00000000],
+        [-6.27270317, -0.00061221, 0.00037515, 0.00061532, -0.00000113, 0.00000000],
+        [-6.27270346, -0.00061208, 0.00037507, 0.00061520, -0.00000113, 0.00000000],
+        [-6.27270375, -0.00061196, 0.00037500, 0.00061508, -0.00000113, 0.00000000],
+        [-6.27270404, -0.00061184, 0.00037493, 0.00061496, -0.00000113, 0.00000000],
+        [-6.27270433, -0.00061172, 0.00037485, 0.00061484, -0.00000113, 0.00000000],
+        [-6.27270462, -0.00061160, 0.00037478, 0.00061472, -0.00000113, 0.00000000],
+        [-6.27270490, -0.00061148, 0.00037470, 0.00061459, -0.00000113, 0.00000000],
+        [-6.27270519, -0.00061136, 0.00037463, 0.00061447, -0.00000113, 0.00000000],
+        [-6.27270548, -0.00061124, 0.00037456, 0.00061435, -0.00000113, 0.00000000],
+        [-6.27270577, -0.00061112, 0.00037448, 0.00061423, -0.00000113, 0.00000000],
+        [-6.27270606, -0.00061100, 0.00037441, 0.00061411, -0.00000113, 0.00000000],
+        [-6.27270635, -0.00061088, 0.00037433, 0.00061399, -0.00000113, 0.00000000],
+        [-6.27270664, -0.00061076, 0.00037426, 0.00061387, -0.00000113, 0.00000000],
+        [-6.27270692, -0.00061064, 0.00037419, 0.00061375, -0.00000113, 0.00000000],
+        [-6.27270721, -0.00061051, 0.00037411, 0.00061362, -0.00000113, 0.00000000],
+        [-6.27270750, -0.00061039, 0.00037404, 0.00061350, -0.00000113, 0.00000000],
+        [-6.27270779, -0.00061027, 0.00037396, 0.00061338, -0.00000113, 0.00000000],
+        [-6.27270808, -0.00061015, 0.00037389, 0.00061326, -0.00000113, 0.00000000],
+        [-6.27270836, -0.00061003, 0.00037382, 0.00061314, -0.00000113, 0.00000000],
+        [-6.27270865, -0.00060991, 0.00037374, 0.00061302, -0.00000113, 0.00000000],
+        [-6.27270894, -0.00060979, 0.00037367, 0.00061290, -0.00000113, 0.00000000],
+        [-6.27270923, -0.00060967, 0.00037360, 0.00061278, -0.00000113, 0.00000000],
+        [-6.27270951, -0.00060955, 0.00037352, 0.00061266, -0.00000113, 0.00000000],
+        [-6.27270980, -0.00060943, 0.00037345, 0.00061254, -0.00000113, 0.00000000],
+        [-6.27271009, -0.00060931, 0.00037338, 0.00061242, -0.00000113, 0.00000000],
+        [-6.27271038, -0.00060919, 0.00037330, 0.00061230, -0.00000113, 0.00000000],
+        [-6.27271066, -0.00060907, 0.00037323, 0.00061218, -0.00000113, 0.00000000],
+        [-6.27271095, -0.00060895, 0.00037315, 0.00061205, -0.00000113, 0.00000000],
+        [-6.27271124, -0.00060883, 0.00037308, 0.00061193, -0.00000113, 0.00000000],
+        [-6.27271152, -0.00060871, 0.00037301, 0.00061181, -0.00000113, 0.00000000],
+        [-6.27271181, -0.00060859, 0.00037293, 0.00061169, -0.00000113, 0.00000000],
+        [-6.27271209, -0.00060847, 0.00037286, 0.00061157, -0.00000113, 0.00000000],
+        [-6.27271238, -0.00060836, 0.00037279, 0.00061145, -0.00000113, 0.00000000],
+        [-6.27271267, -0.00060824, 0.00037271, 0.00061133, -0.00000113, 0.00000000],
+        [-6.27271295, -0.00060812, 0.00037264, 0.00061121, -0.00000113, 0.00000000],
+        [-6.27271324, -0.00060800, 0.00037257, 0.00061109, -0.00000113, 0.00000000],
+        [-6.27271352, -0.00060788, 0.00037249, 0.00061097, -0.00000113, 0.00000000],
+        [-6.27271381, -0.00060776, 0.00037242, 0.00061085, -0.00000113, 0.00000000],
+        [-6.27271410, -0.00060764, 0.00037235, 0.00061073, -0.00000113, 0.00000000],
+        [-6.27271438, -0.00060752, 0.00037228, 0.00061061, -0.00000113, 0.00000000],
+        [-6.27271467, -0.00060740, 0.00037220, 0.00061049, -0.00000113, 0.00000000],
+        [-6.27271495, -0.00060728, 0.00037213, 0.00061037, -0.00000113, 0.00000000],
+        [-6.27271524, -0.00060716, 0.00037206, 0.00061025, -0.00000113, 0.00000000],
+        [-6.27271552, -0.00060704, 0.00037198, 0.00061013, -0.00000113, 0.00000000],
+        [-6.27271581, -0.00060692, 0.00037191, 0.00061001, -0.00000113, 0.00000000],
+        [-6.27271609, -0.00060680, 0.00037184, 0.00060989, -0.00000113, 0.00000000],
+        [-6.27271637, -0.00060669, 0.00037176, 0.00060978, -0.00000113, 0.00000000],
+        [-6.27271666, -0.00060657, 0.00037169, 0.00060966, -0.00000113, 0.00000000],
+        [-6.27271694, -0.00060645, 0.00037162, 0.00060954, -0.00000113, 0.00000000],
+        [-6.27271723, -0.00060633, 0.00037155, 0.00060942, -0.00000113, 0.00000000],
+        [-6.27271751, -0.00060621, 0.00037147, 0.00060930, -0.00000113, 0.00000000],
+        [-6.27271780, -0.00060609, 0.00037140, 0.00060918, -0.00000113, 0.00000000],
+        [-6.27271808, -0.00060597, 0.00037133, 0.00060906, -0.00000113, 0.00000000],
+        [-6.27271836, -0.00060585, 0.00037125, 0.00060894, -0.00000113, 0.00000000],
+        [-6.27271865, -0.00060574, 0.00037118, 0.00060882, -0.00000113, 0.00000000],
+        [-6.27271893, -0.00060562, 0.00037111, 0.00060870, -0.00000113, 0.00000000],
+        [-6.27271921, -0.00060550, 0.00037104, 0.00060858, -0.00000113, 0.00000000],
+        [-6.27271950, -0.00060538, 0.00037096, 0.00060846, -0.00000113, 0.00000000],
+        [-6.27271978, -0.00060526, 0.00037089, 0.00060834, -0.00000113, 0.00000000],
+        [-6.27272006, -0.00060514, 0.00037082, 0.00060823, -0.00000113, 0.00000000],
+        [-6.27272035, -0.00060503, 0.00037075, 0.00060811, -0.00000113, 0.00000000],
+        [-6.27272063, -0.00060491, 0.00037067, 0.00060799, -0.00000113, 0.00000000],
+        [-6.27272091, -0.00060479, 0.00037060, 0.00060787, -0.00000113, 0.00000000],
+        [-6.27272120, -0.00060467, 0.00037053, 0.00060775, -0.00000113, 0.00000000],
+        [-6.27272148, -0.00060455, 0.00037046, 0.00060763, -0.00000113, 0.00000000],
+        [-6.27272176, -0.00060444, 0.00037038, 0.00060751, -0.00000113, 0.00000000],
+        [-6.27272204, -0.00060432, 0.00037031, 0.00060739, -0.00000113, 0.00000000],
+        [-6.27272232, -0.00060420, 0.00037024, 0.00060728, -0.00000113, 0.00000000],
+        [-6.27272261, -0.00060408, 0.00037017, 0.00060716, -0.00000113, 0.00000000],
+        [-6.27272289, -0.00060396, 0.00037009, 0.00060704, -0.00000113, 0.00000000],
+        [-6.27272317, -0.00060385, 0.00037002, 0.00060692, -0.00000113, 0.00000000],
+        [-6.27272345, -0.00060373, 0.00036995, 0.00060680, -0.00000113, 0.00000000],
+        [-6.27272373, -0.00060361, 0.00036988, 0.00060668, -0.00000113, 0.00000000],
+        [-6.27272402, -0.00060349, 0.00036981, 0.00060657, -0.00000113, 0.00000000],
+        [-6.27272430, -0.00060337, 0.00036973, 0.00060645, -0.00000113, 0.00000000],
+        [-6.27272458, -0.00060326, 0.00036966, 0.00060633, -0.00000113, 0.00000000],
+        [-6.27272486, -0.00060314, 0.00036959, 0.00060621, -0.00000113, 0.00000000],
+        [-6.27272514, -0.00060302, 0.00036952, 0.00060609, -0.00000113, 0.00000000],
+        [-6.27272542, -0.00060290, 0.00036945, 0.00060597, -0.00000113, 0.00000000],
+        [-6.27272570, -0.00060279, 0.00036937, 0.00060586, -0.00000113, 0.00000000],
+        [-6.27272598, -0.00060267, 0.00036930, 0.00060574, -0.00000113, 0.00000000],
+        [-6.27272626, -0.00060255, 0.00036923, 0.00060562, -0.00000113, 0.00000000],
+        [-6.27272654, -0.00060244, 0.00036916, 0.00060550, -0.00000113, 0.00000000],
+        [-6.27272683, -0.00060232, 0.00036909, 0.00060538, -0.00000113, 0.00000000],
+        [-6.27272711, -0.00060220, 0.00036901, 0.00060527, -0.00000113, 0.00000000],
+        [-6.27272739, -0.00060208, 0.00036894, 0.00060515, -0.00000113, 0.00000000],
+        [-6.27272767, -0.00060197, 0.00036887, 0.00060503, -0.00000113, 0.00000000],
+        [-6.27272795, -0.00060185, 0.00036880, 0.00060491, -0.00000113, 0.00000000],
+        [-6.27272823, -0.00060173, 0.00036873, 0.00060480, -0.00000113, 0.00000000],
+        [-6.27272851, -0.00060162, 0.00036865, 0.00060468, -0.00000113, 0.00000000],
+        [-6.27272879, -0.00060150, 0.00036858, 0.00060456, -0.00000113, 0.00000000],
+        [-6.27272907, -0.00060138, 0.00036851, 0.00060444, -0.00000113, 0.00000000],
+        [-6.27272934, -0.00060127, 0.00036844, 0.00060433, -0.00000113, 0.00000000],
+        [-6.27272962, -0.00060115, 0.00036837, 0.00060421, -0.00000113, 0.00000000],
+        [-6.27272990, -0.00060103, 0.00036830, 0.00060409, -0.00000113, 0.00000000],
+        [-6.27273018, -0.00060092, 0.00036823, 0.00060397, -0.00000113, 0.00000000],
+        [-6.27273046, -0.00060080, 0.00036815, 0.00060386, -0.00000113, 0.00000000],
+        [-6.27273074, -0.00060068, 0.00036808, 0.00060374, -0.00000113, 0.00000000],
+        [-6.27273102, -0.00060057, 0.00036801, 0.00060362, -0.00000113, 0.00000000],
+        [-6.27273130, -0.00060045, 0.00036794, 0.00060351, -0.00000113, 0.00000000],
+        [-6.27273158, -0.00060033, 0.00036787, 0.00060339, -0.00000113, 0.00000000],
+        [-6.27273186, -0.00060022, 0.00036780, 0.00060327, -0.00000113, 0.00000000],
+        [-6.27273213, -0.00060010, 0.00036773, 0.00060315, -0.00000113, 0.00000000],
+        [-6.27273241, -0.00059998, 0.00036765, 0.00060304, -0.00000113, 0.00000000],
+        [-6.27273269, -0.00059987, 0.00036758, 0.00060292, -0.00000113, 0.00000000],
+        [-6.27273297, -0.00059975, 0.00036751, 0.00060280, -0.00000113, 0.00000000],
+        [-6.27273325, -0.00059963, 0.00036744, 0.00060269, -0.00000113, 0.00000000],
+        [-6.27273352, -0.00059952, 0.00036737, 0.00060257, -0.00000113, 0.00000000],
+        [-6.27273380, -0.00059940, 0.00036730, 0.00060245, -0.00000113, 0.00000000],
+        [-6.27273408, -0.00059929, 0.00036723, 0.00060234, -0.00000113, 0.00000000],
+        [-6.27273436, -0.00059917, 0.00036716, 0.00060222, -0.00000113, 0.00000000],
+        [-6.27273463, -0.00059905, 0.00036708, 0.00060210, -0.00000113, 0.00000000],
+        [-6.27273491, -0.00059894, 0.00036701, 0.00060199, -0.00000113, 0.00000000],
+        [-6.27273519, -0.00059882, 0.00036694, 0.00060187, -0.00000113, 0.00000000],
+        [-6.27273547, -0.00059871, 0.00036687, 0.00060175, -0.00000113, 0.00000000],
+        [-6.27273574, -0.00059859, 0.00036680, 0.00060164, -0.00000113, 0.00000000],
+        [-6.27273602, -0.00059848, 0.00036673, 0.00060152, -0.00000113, 0.00000000],
+        [-6.27273630, -0.00059836, 0.00036666, 0.00060141, -0.00000113, 0.00000000],
+        [-6.27273657, -0.00059824, 0.00036659, 0.00060129, -0.00000113, 0.00000000],
+        [-6.27273685, -0.00059813, 0.00036652, 0.00060117, -0.00000113, 0.00000000],
+        [-6.27273713, -0.00059801, 0.00036645, 0.00060106, -0.00000113, 0.00000000],
+        [-6.27273740, -0.00059790, 0.00036637, 0.00060094, -0.00000113, 0.00000000],
+        [-6.27273768, -0.00059778, 0.00036630, 0.00060082, -0.00000113, 0.00000000],
+        [-6.27273796, -0.00059767, 0.00036623, 0.00060071, -0.00000113, 0.00000000],
+        [-6.27273823, -0.00059755, 0.00036616, 0.00060059, -0.00000113, 0.00000000],
+        [-6.27273851, -0.00059744, 0.00036609, 0.00060048, -0.00000113, 0.00000000],
+        [-6.27273878, -0.00059732, 0.00036602, 0.00060036, -0.00000113, 0.00000000],
+        [-6.27273906, -0.00059721, 0.00036595, 0.00060025, -0.00000113, 0.00000000],
+        [-6.27273933, -0.00059709, 0.00036588, 0.00060013, -0.00000113, 0.00000000],
+        [-6.27273961, -0.00059698, 0.00036581, 0.00060001, -0.00000113, 0.00000000],
+        [-6.27273989, -0.00059686, 0.00036574, 0.00059990, -0.00000113, 0.00000000],
+        [-6.27274016, -0.00059674, 0.00036567, 0.00059978, -0.00000113, 0.00000000],
+        [-6.27274044, -0.00059663, 0.00036560, 0.00059967, -0.00000113, 0.00000000],
+        [-6.27274071, -0.00059651, 0.00036553, 0.00059955, -0.00000113, 0.00000000],
+        [-6.27274099, -0.00059640, 0.00036546, 0.00059944, -0.00000113, 0.00000000],
+        [-6.27274126, -0.00059629, 0.00036539, 0.00059932, -0.00000113, 0.00000000],
+        [-6.27274154, -0.00059617, 0.00036532, 0.00059920, -0.00000113, 0.00000000],
+        [-6.27274181, -0.00059606, 0.00036525, 0.00059909, -0.00000113, 0.00000000],
+        [-6.27274208, -0.00059594, 0.00036517, 0.00059897, -0.00000113, 0.00000000],
+        [-6.27274236, -0.00059583, 0.00036510, 0.00059886, -0.00000113, 0.00000000],
+        [-6.27274263, -0.00059571, 0.00036503, 0.00059874, -0.00000113, 0.00000000],
+        [-6.27274291, -0.00059560, 0.00036496, 0.00059863, -0.00000113, 0.00000000],
+        [-6.27274318, -0.00059548, 0.00036489, 0.00059851, -0.00000113, 0.00000000],
+        [-6.27274346, -0.00059537, 0.00036482, 0.00059840, -0.00000113, 0.00000000],
+        [-6.27274373, -0.00059525, 0.00036475, 0.00059828, -0.00000113, 0.00000000],
+        [-6.27274400, -0.00059514, 0.00036468, 0.00059817, -0.00000113, 0.00000000],
+        [-6.27274428, -0.00059502, 0.00036461, 0.00059805, -0.00000113, 0.00000000],
+        [-6.27274455, -0.00059491, 0.00036454, 0.00059794, -0.00000113, 0.00000000],
+        [-6.27274482, -0.00059480, 0.00036447, 0.00059782, -0.00000113, 0.00000000],
+        [-6.27274510, -0.00059468, 0.00036440, 0.00059771, -0.00000113, 0.00000000],
+        [-6.27274537, -0.00059457, 0.00036433, 0.00059759, -0.00000113, 0.00000000],
+        [-6.27274564, -0.00059445, 0.00036426, 0.00059748, -0.00000113, 0.00000000],
+        [-6.27274592, -0.00059434, 0.00036419, 0.00059736, -0.00000113, 0.00000000],
+        [-6.27274619, -0.00059422, 0.00036412, 0.00059725, -0.00000113, 0.00000000],
+        [-6.27274646, -0.00059411, 0.00036405, 0.00059713, -0.00000113, 0.00000000],
+        [-6.27274674, -0.00059400, 0.00036398, 0.00059702, -0.00000113, 0.00000000],
+        [-6.27274701, -0.00059388, 0.00036391, 0.00059690, -0.00000113, 0.00000000],
+        [-6.27274728, -0.00059377, 0.00036384, 0.00059679, -0.00000113, 0.00000000],
+        [-6.27274755, -0.00059365, 0.00036377, 0.00059668, -0.00000113, 0.00000000],
+        [-6.27274783, -0.00059354, 0.00036370, 0.00059656, -0.00000113, 0.00000000],
+        [-6.27274810, -0.00059343, 0.00036363, 0.00059645, -0.00000113, 0.00000000],
+        [-6.27274837, -0.00059331, 0.00036356, 0.00059633, -0.00000113, 0.00000000],
+        [-6.27274864, -0.00059320, 0.00036349, 0.00059622, -0.00000113, 0.00000000],
+        [-6.27274891, -0.00059309, 0.00036342, 0.00059610, -0.00000113, 0.00000000],
+        [-6.27274919, -0.00059297, 0.00036335, 0.00059599, -0.00000113, 0.00000000],
+        [-6.27274946, -0.00059286, 0.00036329, 0.00059588, -0.00000113, 0.00000000],
+        [-6.27274973, -0.00059275, 0.00036322, 0.00059576, -0.00000113, 0.00000000],
+        [-6.27275000, -0.00059263, 0.00036315, 0.00059565, -0.00000113, 0.00000000],
+        [-6.27275027, -0.00059252, 0.00036308, 0.00059553, -0.00000113, 0.00000000],
+        [-6.27275054, -0.00059241, 0.00036301, 0.00059542, -0.00000113, 0.00000000],
+        [-6.27275081, -0.00059229, 0.00036294, 0.00059531, -0.00000113, 0.00000000],
+        [-6.27275109, -0.00059218, 0.00036287, 0.00059519, -0.00000113, 0.00000000],
+        [-6.27275136, -0.00059207, 0.00036280, 0.00059508, -0.00000113, 0.00000000],
+        [-6.27275163, -0.00059195, 0.00036273, 0.00059496, -0.00000113, 0.00000000],
+        [-6.27275190, -0.00059184, 0.00036266, 0.00059485, -0.00000113, 0.00000000],
+        [-6.27275217, -0.00059173, 0.00036259, 0.00059474, -0.00000113, 0.00000000],
+        [-6.27275244, -0.00059161, 0.00036252, 0.00059462, -0.00000113, 0.00000000],
+        [-6.27275271, -0.00059150, 0.00036245, 0.00059451, -0.00000113, 0.00000000],
+        [-6.27275298, -0.00059139, 0.00036238, 0.00059440, -0.00000113, 0.00000000],
+        [-6.27275325, -0.00059127, 0.00036231, 0.00059428, -0.00000113, 0.00000000],
+        [-6.27275352, -0.00059116, 0.00036224, 0.00059417, -0.00000113, 0.00000000],
+        [-6.27275379, -0.00059105, 0.00036217, 0.00059406, -0.00000113, 0.00000000],
+        [-6.27275406, -0.00059094, 0.00036211, 0.00059394, -0.00000113, 0.00000000],
+        [-6.27275433, -0.00059082, 0.00036204, 0.00059383, -0.00000113, 0.00000000],
+        [-6.27275460, -0.00059071, 0.00036197, 0.00059372, -0.00000113, 0.00000000],
+        [-6.27275487, -0.00059060, 0.00036190, 0.00059360, -0.00000113, 0.00000000],
+        [-6.27275514, -0.00059048, 0.00036183, 0.00059349, -0.00000113, 0.00000000],
+        [-6.27275541, -0.00059037, 0.00036176, 0.00059338, -0.00000113, 0.00000000],
+        [-6.27275568, -0.00059026, 0.00036169, 0.00059326, -0.00000113, 0.00000000],
+        [-6.27275595, -0.00059015, 0.00036162, 0.00059315, -0.00000113, 0.00000000],
+        [-6.27275622, -0.00059003, 0.00036155, 0.00059304, -0.00000113, 0.00000000],
+        [-6.27275649, -0.00058992, 0.00036148, 0.00059292, -0.00000113, 0.00000000],
+        [-6.27275675, -0.00058981, 0.00036141, 0.00059281, -0.00000113, 0.00000000],
+        [-6.27275702, -0.00058970, 0.00036135, 0.00059270, -0.00000113, 0.00000000],
+        [-6.27275729, -0.00058958, 0.00036128, 0.00059258, -0.00000113, 0.00000000],
+        [-6.27275756, -0.00058947, 0.00036121, 0.00059247, -0.00000113, 0.00000000],
+        [-6.27275783, -0.00058936, 0.00036114, 0.00059236, -0.00000113, 0.00000000],
+        [-6.27275810, -0.00058925, 0.00036107, 0.00059225, -0.00000113, 0.00000000],
+        [-6.27275837, -0.00058914, 0.00036100, 0.00059213, -0.00000113, 0.00000000],
+        [-6.27275863, -0.00058902, 0.00036093, 0.00059202, -0.00000113, 0.00000000],
+        [-6.27275890, -0.00058891, 0.00036086, 0.00059191, -0.00000113, 0.00000000],
+        [-6.27275917, -0.00058880, 0.00036080, 0.00059180, -0.00000113, 0.00000000],
+        [-6.27275944, -0.00058869, 0.00036073, 0.00059168, -0.00000113, 0.00000000],
+        [-6.27275971, -0.00058858, 0.00036066, 0.00059157, -0.00000113, 0.00000000],
+        [-6.27275997, -0.00058846, 0.00036059, 0.00059146, -0.00000113, 0.00000000],
+        [-6.27276024, -0.00058835, 0.00036052, 0.00059135, -0.00000113, 0.00000000],
+        [-6.27276051, -0.00058824, 0.00036045, 0.00059123, -0.00000113, 0.00000000],
+        [-6.27276078, -0.00058813, 0.00036038, 0.00059112, -0.00000113, 0.00000000],
+        [-6.27276104, -0.00058802, 0.00036032, 0.00059101, -0.00000113, 0.00000000],
+        [-6.27276131, -0.00058790, 0.00036025, 0.00059090, -0.00000113, 0.00000000],
+        [-6.27276158, -0.00058779, 0.00036018, 0.00059078, -0.00000113, 0.00000000],
+        [-6.27276184, -0.00058768, 0.00036011, 0.00059067, -0.00000113, 0.00000000],
+        [-6.27276211, -0.00058757, 0.00036004, 0.00059056, -0.00000113, 0.00000000],
+        [-6.27276238, -0.00058746, 0.00035997, 0.00059045, -0.00000113, 0.00000000],
+        [-6.27276265, -0.00058735, 0.00035991, 0.00059034, -0.00000113, 0.00000000],
+        [-6.27276291, -0.00058724, 0.00035984, 0.00059022, -0.00000113, 0.00000000],
+        [-6.27276318, -0.00058712, 0.00035977, 0.00059011, -0.00000113, 0.00000000],
+        [-6.27276344, -0.00058701, 0.00035970, 0.00059000, -0.00000113, 0.00000000],
+        [-6.27276371, -0.00058690, 0.00035963, 0.00058989, -0.00000113, 0.00000000],
+        [-6.27276398, -0.00058679, 0.00035956, 0.00058978, -0.00000113, 0.00000000],
+        [-6.27276424, -0.00058668, 0.00035950, 0.00058966, -0.00000113, 0.00000000],
+        [-6.27276451, -0.00058657, 0.00035943, 0.00058955, -0.00000113, 0.00000000],
+        [-6.27276478, -0.00058646, 0.00035936, 0.00058944, -0.00000113, 0.00000000],
+        [-6.27276504, -0.00058635, 0.00035929, 0.00058933, -0.00000113, 0.00000000],
+        [-6.27276531, -0.00058623, 0.00035922, 0.00058922, -0.00000113, 0.00000000],
+        [-6.27276557, -0.00058612, 0.00035916, 0.00058911, -0.00000113, 0.00000000],
+        [-6.27276584, -0.00058601, 0.00035909, 0.00058899, -0.00000113, 0.00000000],
+        [-6.27276610, -0.00058590, 0.00035902, 0.00058888, -0.00000113, 0.00000000],
+        [-6.27276637, -0.00058579, 0.00035895, 0.00058877, -0.00000113, 0.00000000],
+        [-6.27276663, -0.00058568, 0.00035888, 0.00058866, -0.00000113, 0.00000000],
+        [-6.27276690, -0.00058557, 0.00035882, 0.00058855, -0.00000113, 0.00000000],
+        [-6.27276716, -0.00058546, 0.00035875, 0.00058844, -0.00000113, 0.00000000],
+        [-6.27276743, -0.00058535, 0.00035868, 0.00058833, -0.00000113, 0.00000000],
+        [-6.27276769, -0.00058524, 0.00035861, 0.00058821, -0.00000113, 0.00000000],
+        [-6.27276796, -0.00058513, 0.00035854, 0.00058810, -0.00000113, 0.00000000],
+        [-6.27276822, -0.00058502, 0.00035848, 0.00058799, -0.00000113, 0.00000000],
+        [-6.27276849, -0.00058491, 0.00035841, 0.00058788, -0.00000113, 0.00000000],
+        [-6.27276875, -0.00058480, 0.00035834, 0.00058777, -0.00000113, 0.00000000],
+        [-6.27276902, -0.00058468, 0.00035827, 0.00058766, -0.00000113, 0.00000000],
+        [-6.27276928, -0.00058457, 0.00035820, 0.00058755, -0.00000113, 0.00000000],
+        [-6.27276954, -0.00058446, 0.00035814, 0.00058744, -0.00000113, 0.00000000],
+        [-6.27276981, -0.00058435, 0.00035807, 0.00058733, -0.00000113, 0.00000000],
+        [-6.27277007, -0.00058424, 0.00035800, 0.00058721, -0.00000113, 0.00000000],
+        [-6.27277034, -0.00058413, 0.00035793, 0.00058710, -0.00000113, 0.00000000],
+        [-6.27277060, -0.00058402, 0.00035787, 0.00058699, -0.00000113, 0.00000000],
+        [-6.27277086, -0.00058391, 0.00035780, 0.00058688, -0.00000113, 0.00000000],
+        [-6.27277113, -0.00058380, 0.00035773, 0.00058677, -0.00000113, 0.00000000],
+        [-6.27277139, -0.00058369, 0.00035766, 0.00058666, -0.00000113, 0.00000000],
+        [-6.27277165, -0.00058358, 0.00035760, 0.00058655, -0.00000113, 0.00000000],
+        [-6.27277192, -0.00058347, 0.00035753, 0.00058644, -0.00000113, 0.00000000],
+        [-6.27277218, -0.00058336, 0.00035746, 0.00058633, -0.00000113, 0.00000000],
+        [-6.27277244, -0.00058325, 0.00035739, 0.00058622, -0.00000113, 0.00000000],
+        [-6.27277270, -0.00058314, 0.00035733, 0.00058611, -0.00000113, 0.00000000],
+        [-6.27277297, -0.00058303, 0.00035726, 0.00058600, -0.00000113, 0.00000000],
+        [-6.27277323, -0.00058292, 0.00035719, 0.00058589, -0.00000113, 0.00000000],
+        [-6.27277349, -0.00058281, 0.00035712, 0.00058578, -0.00000113, 0.00000000],
+        [-6.27277376, -0.00058270, 0.00035706, 0.00058567, -0.00000113, 0.00000000],
+        [-6.27277402, -0.00058259, 0.00035699, 0.00058556, -0.00000113, 0.00000000],
+        [-6.27277428, -0.00058248, 0.00035692, 0.00058545, -0.00000113, 0.00000000],
+        [-6.27277454, -0.00058237, 0.00035686, 0.00058534, -0.00000113, 0.00000000],
+        [-6.27277480, -0.00058227, 0.00035679, 0.00058523, -0.00000113, 0.00000000],
+        [-6.27277507, -0.00058216, 0.00035672, 0.00058512, -0.00000113, 0.00000000],
+        [-6.27277533, -0.00058205, 0.00035665, 0.00058501, -0.00000113, 0.00000000],
+        [-6.27277559, -0.00058194, 0.00035659, 0.00058490, -0.00000113, 0.00000000],
+        [-6.27277585, -0.00058183, 0.00035652, 0.00058479, -0.00000113, 0.00000000],
+        [-6.27277611, -0.00058172, 0.00035645, 0.00058468, -0.00000113, 0.00000000],
+        [-6.27277637, -0.00058161, 0.00035639, 0.00058457, -0.00000113, 0.00000000],
+        [-6.27277664, -0.00058150, 0.00035632, 0.00058446, -0.00000113, 0.00000000],
+        [-6.27277690, -0.00058139, 0.00035625, 0.00058435, -0.00000113, 0.00000000],
+        [-6.27277716, -0.00058128, 0.00035619, 0.00058424, -0.00000113, 0.00000000],
+        [-6.27277742, -0.00058117, 0.00035612, 0.00058413, -0.00000113, 0.00000000],
+        [-6.27277768, -0.00058106, 0.00035605, 0.00058402, -0.00000113, 0.00000000],
+        [-6.27277794, -0.00058095, 0.00035598, 0.00058391, -0.00000113, 0.00000000],
+        [-6.27277820, -0.00058084, 0.00035592, 0.00058380, -0.00000113, 0.00000000],
+        [-6.27277846, -0.00058074, 0.00035585, 0.00058369, -0.00000113, 0.00000000],
+        [-6.27277872, -0.00058063, 0.00035578, 0.00058358, -0.00000113, 0.00000000],
+        [-6.27277898, -0.00058052, 0.00035572, 0.00058347, -0.00000113, 0.00000000],
+        [-6.27277924, -0.00058041, 0.00035565, 0.00058336, -0.00000113, 0.00000000],
+        [-6.27277950, -0.00058030, 0.00035558, 0.00058325, -0.00000113, 0.00000000],
+        [-6.27277977, -0.00058019, 0.00035552, 0.00058314, -0.00000113, 0.00000000],
+        [-6.27278003, -0.00058008, 0.00035545, 0.00058303, -0.00000113, 0.00000000],
+        [-6.27278029, -0.00057997, 0.00035538, 0.00058292, -0.00000113, 0.00000000],
+        [-6.27278055, -0.00057987, 0.00035532, 0.00058281, -0.00000113, 0.00000000],
+        [-6.27278080, -0.00057976, 0.00035525, 0.00058271, -0.00000113, 0.00000000],
+        [-6.27278106, -0.00057965, 0.00035518, 0.00058260, -0.00000113, 0.00000000],
+        [-6.27278132, -0.00057954, 0.00035512, 0.00058249, -0.00000113, 0.00000000],
+        [-6.27278158, -0.00057943, 0.00035505, 0.00058238, -0.00000113, 0.00000000],
+        [-6.27278184, -0.00057932, 0.00035498, 0.00058227, -0.00000113, 0.00000000],
+        [-6.27278210, -0.00057921, 0.00035492, 0.00058216, -0.00000113, 0.00000000],
+        [-6.27278236, -0.00057911, 0.00035485, 0.00058205, -0.00000113, 0.00000000],
+        [-6.27278262, -0.00057900, 0.00035479, 0.00058194, -0.00000113, 0.00000000],
+        [-6.27278288, -0.00057889, 0.00035472, 0.00058183, -0.00000113, 0.00000000],
+        [-6.27278314, -0.00057878, 0.00035465, 0.00058172, -0.00000113, 0.00000000],
+        [-6.27278340, -0.00057867, 0.00035459, 0.00058162, -0.00000113, 0.00000000],
+        [-6.27278366, -0.00057857, 0.00035452, 0.00058151, -0.00000113, 0.00000000],
+        [-6.27278392, -0.00057846, 0.00035445, 0.00058140, -0.00000113, 0.00000000],
+        [-6.27278417, -0.00057835, 0.00035439, 0.00058129, -0.00000113, 0.00000000],
+        [-6.27278443, -0.00057824, 0.00035432, 0.00058118, -0.00000113, 0.00000000],
+        [-6.27278469, -0.00057813, 0.00035425, 0.00058107, -0.00000113, 0.00000000],
+        [-6.27278495, -0.00057802, 0.00035419, 0.00058096, -0.00000113, 0.00000000],
+        [-6.27278521, -0.00057792, 0.00035412, 0.00058086, -0.00000113, 0.00000000],
+        [-6.27278547, -0.00057781, 0.00035406, 0.00058075, -0.00000113, 0.00000000],
+        [-6.27278572, -0.00057770, 0.00035399, 0.00058064, -0.00000113, 0.00000000],
+        [-6.27278598, -0.00057759, 0.00035392, 0.00058053, -0.00000113, 0.00000000],
+        [-6.27278624, -0.00057749, 0.00035386, 0.00058042, -0.00000113, 0.00000000],
+        [-6.27278650, -0.00057738, 0.00035379, 0.00058031, -0.00000113, 0.00000000],
+        [-6.27278675, -0.00057727, 0.00035373, 0.00058021, -0.00000113, 0.00000000],
+        [-6.27278701, -0.00057716, 0.00035366, 0.00058010, -0.00000113, 0.00000000],
+        [-6.27278727, -0.00057706, 0.00035359, 0.00057999, -0.00000113, 0.00000000],
+        [-6.27278753, -0.00057695, 0.00035353, 0.00057988, -0.00000113, 0.00000000],
+        [-6.27278778, -0.00057684, 0.00035346, 0.00057977, -0.00000113, 0.00000000],
+        [-6.27278804, -0.00057673, 0.00035340, 0.00057966, -0.00000113, 0.00000000],
+        [-6.27278830, -0.00057663, 0.00035333, 0.00057956, -0.00000113, 0.00000000],
+        [-6.27278855, -0.00057652, 0.00035326, 0.00057945, -0.00000113, 0.00000000],
+        [-6.27278881, -0.00057641, 0.00035320, 0.00057934, -0.00000113, 0.00000000],
+        [-6.27278907, -0.00057630, 0.00035313, 0.00057923, -0.00000113, 0.00000000],
+        [-6.27278933, -0.00057620, 0.00035307, 0.00057913, -0.00000113, 0.00000000],
+        [-6.27278958, -0.00057609, 0.00035300, 0.00057902, -0.00000113, 0.00000000],
+        [-6.27278984, -0.00057598, 0.00035294, 0.00057891, -0.00000113, 0.00000000],
+        [-6.27279009, -0.00057587, 0.00035287, 0.00057880, -0.00000113, 0.00000000],
+        [-6.27279035, -0.00057577, 0.00035280, 0.00057869, -0.00000113, 0.00000000],
+        [-6.27279061, -0.00057566, 0.00035274, 0.00057859, -0.00000113, 0.00000000],
+        [-6.27279086, -0.00057555, 0.00035267, 0.00057848, -0.00000113, 0.00000000],
+        [-6.27279112, -0.00057545, 0.00035261, 0.00057837, -0.00000113, 0.00000000],
+        [-6.27279137, -0.00057534, 0.00035254, 0.00057826, -0.00000113, 0.00000000],
+        [-6.27279163, -0.00057523, 0.00035248, 0.00057816, -0.00000113, 0.00000000],
+        [-6.27279189, -0.00057513, 0.00035241, 0.00057805, -0.00000113, 0.00000000],
+        [-6.27279214, -0.00057502, 0.00035235, 0.00057794, -0.00000113, 0.00000000],
+        [-6.27279240, -0.00057491, 0.00035228, 0.00057783, -0.00000113, 0.00000000],
+        [-6.27279265, -0.00057480, 0.00035221, 0.00057773, -0.00000113, 0.00000000],
+        [-6.27279291, -0.00057470, 0.00035215, 0.00057762, -0.00000113, 0.00000000],
+        [-6.27279316, -0.00057459, 0.00035208, 0.00057751, -0.00000113, 0.00000000],
+        [-6.27279342, -0.00057448, 0.00035202, 0.00057741, -0.00000113, 0.00000000],
+        [-6.27279367, -0.00057438, 0.00035195, 0.00057730, -0.00000113, 0.00000000],
+        [-6.27279393, -0.00057427, 0.00035189, 0.00057719, -0.00000113, 0.00000000],
+        [-6.27279418, -0.00057417, 0.00035182, 0.00057708, -0.00000113, 0.00000000],
+        [-6.27279444, -0.00057406, 0.00035176, 0.00057698, -0.00000113, 0.00000000],
+        [-6.27279469, -0.00057395, 0.00035169, 0.00057687, -0.00000113, 0.00000000],
+        [-6.27279495, -0.00057385, 0.00035163, 0.00057676, -0.00000113, 0.00000000],
+        [-6.27279520, -0.00057374, 0.00035156, 0.00057666, -0.00000113, 0.00000000],
+        [-6.27279546, -0.00057363, 0.00035150, 0.00057655, -0.00000113, 0.00000000],
+        [-6.27279571, -0.00057353, 0.00035143, 0.00057644, -0.00000113, 0.00000000],
+        [-6.27279596, -0.00057342, 0.00035137, 0.00057634, -0.00000113, 0.00000000],
+        [-6.27279622, -0.00057331, 0.00035130, 0.00057623, -0.00000113, 0.00000000],
+        [-6.27279647, -0.00057321, 0.00035124, 0.00057612, -0.00000113, 0.00000000],
+        [-6.27279673, -0.00057310, 0.00035117, 0.00057602, -0.00000113, 0.00000000],
+        [-6.27279698, -0.00057300, 0.00035111, 0.00057591, -0.00000113, 0.00000000],
+        [-6.27279723, -0.00057289, 0.00035104, 0.00057580, -0.00000113, 0.00000000],
+        [-6.27279749, -0.00057278, 0.00035098, 0.00057570, -0.00000113, 0.00000000],
+        [-6.27279774, -0.00057268, 0.00035091, 0.00057559, -0.00000113, 0.00000000],
+        [-6.27279799, -0.00057257, 0.00035085, 0.00057548, -0.00000113, 0.00000000],
+        [-6.27279825, -0.00057247, 0.00035078, 0.00057538, -0.00000113, 0.00000000],
+        [-6.27279850, -0.00057236, 0.00035072, 0.00057527, -0.00000113, 0.00000000],
+        [-6.27279875, -0.00057225, 0.00035065, 0.00057516, -0.00000113, 0.00000000],
+        [-6.27279901, -0.00057215, 0.00035059, 0.00057506, -0.00000113, 0.00000000],
+        [-6.27279926, -0.00057204, 0.00035052, 0.00057495, -0.00000113, 0.00000000],
+        [-6.27279951, -0.00057194, 0.00035046, 0.00057484, -0.00000113, 0.00000000],
+        [-6.27279977, -0.00057183, 0.00035039, 0.00057474, -0.00000113, 0.00000000],
+        [-6.27280002, -0.00057173, 0.00035033, 0.00057463, -0.00000113, 0.00000000],
+        [-6.27280027, -0.00057162, 0.00035026, 0.00057453, -0.00000113, 0.00000000],
+        [-6.27280052, -0.00057152, 0.00035020, 0.00057442, -0.00000113, 0.00000000],
+        [-6.27280078, -0.00057141, 0.00035013, 0.00057431, -0.00000113, 0.00000000],
+        [-6.27280103, -0.00057130, 0.00035007, 0.00057421, -0.00000113, 0.00000000],
+        [-6.27280128, -0.00057120, 0.00035000, 0.00057410, -0.00000113, 0.00000000],
+        [-6.27280153, -0.00057109, 0.00034994, 0.00057400, -0.00000113, 0.00000000],
+        [-6.27280178, -0.00057099, 0.00034987, 0.00057389, -0.00000113, 0.00000000],
+        [-6.27280204, -0.00057088, 0.00034981, 0.00057378, -0.00000113, 0.00000000],
+        [-6.27280229, -0.00057078, 0.00034974, 0.00057368, -0.00000113, 0.00000000],
+        [-6.27280254, -0.00057067, 0.00034968, 0.00057357, -0.00000113, 0.00000000],
+        [-6.27280279, -0.00057057, 0.00034962, 0.00057347, -0.00000113, 0.00000000],
+        [-6.27280304, -0.00057046, 0.00034955, 0.00057336, -0.00000113, 0.00000000],
+        [-6.27280329, -0.00057036, 0.00034949, 0.00057326, -0.00000113, 0.00000000],
+        [-6.27280355, -0.00057025, 0.00034942, 0.00057315, -0.00000113, 0.00000000],
+        [-6.27280380, -0.00057015, 0.00034936, 0.00057304, -0.00000113, 0.00000000],
+        [-6.27280405, -0.00057004, 0.00034929, 0.00057294, -0.00000113, 0.00000000],
+        [-6.27280430, -0.00056994, 0.00034923, 0.00057283, -0.00000113, 0.00000000],
+        [-6.27280455, -0.00056983, 0.00034916, 0.00057273, -0.00000113, 0.00000000],
+        [-6.27280480, -0.00056973, 0.00034910, 0.00057262, -0.00000113, 0.00000000],
+        [-6.27280505, -0.00056962, 0.00034904, 0.00057252, -0.00000113, 0.00000000],
+        [-6.27280530, -0.00056952, 0.00034897, 0.00057241, -0.00000113, 0.00000000],
+        [-6.27280555, -0.00056941, 0.00034891, 0.00057231, -0.00000113, 0.00000000],
+        [-6.27280580, -0.00056931, 0.00034884, 0.00057220, -0.00000113, 0.00000000],
+        [-6.27280606, -0.00056920, 0.00034878, 0.00057210, -0.00000113, 0.00000000],
+        [-6.27280631, -0.00056910, 0.00034872, 0.00057199, -0.00000113, 0.00000000],
+        [-6.27280656, -0.00056899, 0.00034865, 0.00057189, -0.00000113, 0.00000000],
+        [-6.27280681, -0.00056889, 0.00034859, 0.00057178, -0.00000113, 0.00000000],
+        [-6.27280706, -0.00056878, 0.00034852, 0.00057168, -0.00000113, 0.00000000],
+        [-6.27280731, -0.00056868, 0.00034846, 0.00057157, -0.00000113, 0.00000000],
+        [-6.27280756, -0.00056858, 0.00034839, 0.00057147, -0.00000113, 0.00000000],
+        [-6.27280781, -0.00056847, 0.00034833, 0.00057136, -0.00000113, 0.00000000],
+        [-6.27280806, -0.00056837, 0.00034827, 0.00057126, -0.00000113, 0.00000000],
+        [-6.27280830, -0.00056826, 0.00034820, 0.00057115, -0.00000113, 0.00000000],
+        [-6.27280855, -0.00056816, 0.00034814, 0.00057105, -0.00000113, 0.00000000],
+        [-6.27280880, -0.00056805, 0.00034807, 0.00057094, -0.00000113, 0.00000000],
+        [-6.27280905, -0.00056795, 0.00034801, 0.00057084, -0.00000113, 0.00000000],
+        [-6.27280930, -0.00056785, 0.00034795, 0.00057073, -0.00000113, 0.00000000],
+        [-6.27280955, -0.00056774, 0.00034788, 0.00057063, -0.00000113, 0.00000000],
+        [-6.27280980, -0.00056764, 0.00034782, 0.00057052, -0.00000113, 0.00000000],
+        [-6.27281005, -0.00056753, 0.00034776, 0.00057042, -0.00000113, 0.00000000],
+        [-6.27281030, -0.00056743, 0.00034769, 0.00057031, -0.00000113, 0.00000000],
+        [-6.27281055, -0.00056733, 0.00034763, 0.00057021, -0.00000113, 0.00000000],
+        [-6.27281080, -0.00056722, 0.00034756, 0.00057010, -0.00000113, 0.00000000],
+        [-6.27281104, -0.00056712, 0.00034750, 0.00057000, -0.00000113, 0.00000000],
+        [-6.27281129, -0.00056701, 0.00034744, 0.00056990, -0.00000113, 0.00000000],
+        [-6.27281154, -0.00056691, 0.00034737, 0.00056979, -0.00000113, 0.00000000],
+        [-6.27281179, -0.00056681, 0.00034731, 0.00056969, -0.00000113, 0.00000000],
+        [-6.27281204, -0.00056670, 0.00034725, 0.00056958, -0.00000113, 0.00000000],
+        [-6.27281229, -0.00056660, 0.00034718, 0.00056948, -0.00000113, 0.00000000],
+        [-6.27281253, -0.00056649, 0.00034712, 0.00056937, -0.00000113, 0.00000000],
+        [-6.27281278, -0.00056639, 0.00034706, 0.00056927, -0.00000113, 0.00000000],
+        [-6.27281303, -0.00056629, 0.00034699, 0.00056917, -0.00000113, 0.00000000],
+        [-6.27281328, -0.00056618, 0.00034693, 0.00056906, -0.00000113, 0.00000000],
+        [-6.27281353, -0.00056608, 0.00034686, 0.00056896, -0.00000113, 0.00000000],
+        [-6.27281377, -0.00056598, 0.00034680, 0.00056885, -0.00000113, 0.00000000],
+        [-6.27281402, -0.00056587, 0.00034674, 0.00056875, -0.00000113, 0.00000000],
+        [-6.27281427, -0.00056577, 0.00034667, 0.00056865, -0.00000113, 0.00000000],
+        [-6.27281452, -0.00056567, 0.00034661, 0.00056854, -0.00000113, 0.00000000],
+        [-6.27281476, -0.00056556, 0.00034655, 0.00056844, -0.00000113, 0.00000000],
+        [-6.27281501, -0.00056546, 0.00034648, 0.00056833, -0.00000113, 0.00000000],
+        [-6.27281526, -0.00056536, 0.00034642, 0.00056823, -0.00000113, 0.00000000],
+        [-6.27281550, -0.00056525, 0.00034636, 0.00056813, -0.00000113, 0.00000000],
+        [-6.27281575, -0.00056515, 0.00034629, 0.00056802, -0.00000113, 0.00000000],
+        [-6.27281600, -0.00056505, 0.00034623, 0.00056792, -0.00000113, 0.00000000],
+        [-6.27281624, -0.00056494, 0.00034617, 0.00056781, -0.00000113, 0.00000000],
+        [-6.27281649, -0.00056484, 0.00034610, 0.00056771, -0.00000113, 0.00000000],
+        [-6.27281674, -0.00056474, 0.00034604, 0.00056761, -0.00000113, 0.00000000],
+        [-6.27281698, -0.00056463, 0.00034598, 0.00056750, -0.00000113, 0.00000000],
+        [-6.27281723, -0.00056453, 0.00034592, 0.00056740, -0.00000113, 0.00000000],
+        [-6.27281748, -0.00056443, 0.00034585, 0.00056730, -0.00000113, 0.00000000],
+        [-6.27281772, -0.00056433, 0.00034579, 0.00056719, -0.00000113, 0.00000000],
+        [-6.27281797, -0.00056422, 0.00034573, 0.00056709, -0.00000113, 0.00000000],
+        [-6.27281822, -0.00056412, 0.00034566, 0.00056699, -0.00000113, 0.00000000],
+        [-6.27281846, -0.00056402, 0.00034560, 0.00056688, -0.00000113, 0.00000000],
+        [-6.27281871, -0.00056391, 0.00034554, 0.00056678, -0.00000113, 0.00000000],
+        [-6.27281895, -0.00056381, 0.00034547, 0.00056668, -0.00000113, 0.00000000],
+        [-6.27281920, -0.00056371, 0.00034541, 0.00056657, -0.00000113, 0.00000000],
+        [-6.27281944, -0.00056361, 0.00034535, 0.00056647, -0.00000113, 0.00000000],
+        [-6.27281969, -0.00056350, 0.00034528, 0.00056637, -0.00000113, 0.00000000],
+        [-6.27281993, -0.00056340, 0.00034522, 0.00056626, -0.00000113, 0.00000000],
+        [-6.27282018, -0.00056330, 0.00034516, 0.00056616, -0.00000113, 0.00000000],
+        [-6.27282043, -0.00056320, 0.00034510, 0.00056606, -0.00000113, 0.00000000],
+        [-6.27282067, -0.00056309, 0.00034503, 0.00056596, -0.00000113, 0.00000000],
+        [-6.27282092, -0.00056299, 0.00034497, 0.00056585, -0.00000113, 0.00000000],
+        [-6.27282116, -0.00056289, 0.00034491, 0.00056575, -0.00000113, 0.00000000],
+        [-6.27282141, -0.00056279, 0.00034485, 0.00056565, -0.00000113, 0.00000000],
+        [-6.27282165, -0.00056268, 0.00034478, 0.00056554, -0.00000113, 0.00000000],
+        [-6.27282189, -0.00056258, 0.00034472, 0.00056544, -0.00000113, 0.00000000],
+        [-6.27282214, -0.00056248, 0.00034466, 0.00056534, -0.00000113, 0.00000000],
+        [-6.27282238, -0.00056238, 0.00034459, 0.00056524, -0.00000113, 0.00000000],
+        [-6.27282263, -0.00056228, 0.00034453, 0.00056513, -0.00000113, 0.00000000],
+        [-6.27282287, -0.00056217, 0.00034447, 0.00056503, -0.00000113, 0.00000000],
+        [-6.27282312, -0.00056207, 0.00034441, 0.00056493, -0.00000113, 0.00000000],
+        [-6.27282336, -0.00056197, 0.00034434, 0.00056483, -0.00000113, 0.00000000],
+        [-6.27282360, -0.00056187, 0.00034428, 0.00056472, -0.00000113, 0.00000000],
+        [-6.27282385, -0.00056177, 0.00034422, 0.00056462, -0.00000113, 0.00000000],
+        [-6.27282409, -0.00056166, 0.00034416, 0.00056452, -0.00000113, 0.00000000],
+        [-6.27282434, -0.00056156, 0.00034409, 0.00056442, -0.00000113, 0.00000000],
+        [-6.27282458, -0.00056146, 0.00034403, 0.00056431, -0.00000113, 0.00000000],
+        [-6.27282482, -0.00056136, 0.00034397, 0.00056421, -0.00000113, 0.00000000],
+        [-6.27282507, -0.00056126, 0.00034391, 0.00056411, -0.00000113, 0.00000000],
+        [-6.27282531, -0.00056115, 0.00034384, 0.00056401, -0.00000113, 0.00000000],
+        [-6.27282555, -0.00056105, 0.00034378, 0.00056390, -0.00000113, 0.00000000],
+        [-6.27282580, -0.00056095, 0.00034372, 0.00056380, -0.00000113, 0.00000000],
+        [-6.27282604, -0.00056085, 0.00034366, 0.00056370, -0.00000113, 0.00000000],
+        [-6.27282628, -0.00056075, 0.00034360, 0.00056360, -0.00000113, 0.00000000],
+        [-6.27282653, -0.00056065, 0.00034353, 0.00056349, -0.00000113, 0.00000000],
+        [-6.27282677, -0.00056055, 0.00034347, 0.00056339, -0.00000113, 0.00000000],
+        [-6.27282701, -0.00056044, 0.00034341, 0.00056329, -0.00000113, 0.00000000],
+        [-6.27282725, -0.00056034, 0.00034335, 0.00056319, -0.00000113, 0.00000000],
+        [-6.27282750, -0.00056024, 0.00034328, 0.00056309, -0.00000113, 0.00000000],
+        [-6.27282774, -0.00056014, 0.00034322, 0.00056299, -0.00000113, 0.00000000],
+        [-6.27282798, -0.00056004, 0.00034316, 0.00056288, -0.00000113, 0.00000000],
+        [-6.27282822, -0.00055994, 0.00034310, 0.00056278, -0.00000113, 0.00000000],
+        [-6.27282847, -0.00055984, 0.00034304, 0.00056268, -0.00000113, 0.00000000],
+        [-6.27282871, -0.00055973, 0.00034297, 0.00056258, -0.00000113, 0.00000000],
+        [-6.27282895, -0.00055963, 0.00034291, 0.00056248, -0.00000113, 0.00000000],
+        [-6.27282919, -0.00055953, 0.00034285, 0.00056237, -0.00000113, 0.00000000],
+        [-6.27282944, -0.00055943, 0.00034279, 0.00056227, -0.00000113, 0.00000000],
+        [-6.27282968, -0.00055933, 0.00034273, 0.00056217, -0.00000113, 0.00000000],
+        [-6.27282992, -0.00055923, 0.00034266, 0.00056207, -0.00000113, 0.00000000],
+        [-6.27283016, -0.00055913, 0.00034260, 0.00056197, -0.00000113, 0.00000000],
+        [-6.27283040, -0.00055903, 0.00034254, 0.00056187, -0.00000113, 0.00000000],
+        [-6.27283064, -0.00055893, 0.00034248, 0.00056177, -0.00000113, 0.00000000],
+        [-6.27283089, -0.00055882, 0.00034242, 0.00056166, -0.00000113, 0.00000000],
+        [-6.27283113, -0.00055872, 0.00034235, 0.00056156, -0.00000113, 0.00000000],
+        [-6.27283137, -0.00055862, 0.00034229, 0.00056146, -0.00000113, 0.00000000],
+        [-6.27283161, -0.00055852, 0.00034223, 0.00056136, -0.00000113, 0.00000000],
+        [-6.27283185, -0.00055842, 0.00034217, 0.00056126, -0.00000113, 0.00000000],
+        [-6.27283209, -0.00055832, 0.00034211, 0.00056116, -0.00000113, 0.00000000],
+        [-6.27283233, -0.00055822, 0.00034204, 0.00056106, -0.00000113, 0.00000000],
+        [-6.27283257, -0.00055812, 0.00034198, 0.00056095, -0.00000113, 0.00000000],
+        [-6.27283281, -0.00055802, 0.00034192, 0.00056085, -0.00000113, 0.00000000],
+        [-6.27283305, -0.00055792, 0.00034186, 0.00056075, -0.00000113, 0.00000000],
+        [-6.27283329, -0.00055782, 0.00034180, 0.00056065, -0.00000113, 0.00000000],
+        [-6.27283353, -0.00055772, 0.00034174, 0.00056055, -0.00000113, 0.00000000],
+        [-6.27283378, -0.00055762, 0.00034168, 0.00056045, -0.00000113, 0.00000000],
+        [-6.27283402, -0.00055752, 0.00034161, 0.00056035, -0.00000113, 0.00000000],
+        [-6.27283426, -0.00055742, 0.00034155, 0.00056025, -0.00000113, 0.00000000],
+        [-6.27283450, -0.00055732, 0.00034149, 0.00056015, -0.00000113, 0.00000000],
+        [-6.27283474, -0.00055722, 0.00034143, 0.00056005, -0.00000113, 0.00000000],
+        [-6.27283498, -0.00055712, 0.00034137, 0.00055994, -0.00000113, 0.00000000],
+        [-6.27283522, -0.00055701, 0.00034131, 0.00055984, -0.00000113, 0.00000000],
+        [-6.27283546, -0.00055691, 0.00034124, 0.00055974, -0.00000113, 0.00000000],
+        [-6.27283570, -0.00055681, 0.00034118, 0.00055964, -0.00000113, 0.00000000],
+        [-6.27283593, -0.00055671, 0.00034112, 0.00055954, -0.00000113, 0.00000000],
+        [-6.27283617, -0.00055661, 0.00034106, 0.00055944, -0.00000113, 0.00000000],
+        [-6.27283641, -0.00055651, 0.00034100, 0.00055934, -0.00000113, 0.00000000],
+        [-6.27283665, -0.00055641, 0.00034094, 0.00055924, -0.00000113, 0.00000000],
+        [-6.27283689, -0.00055631, 0.00034088, 0.00055914, -0.00000113, 0.00000000],
+        [-6.27283713, -0.00055621, 0.00034081, 0.00055904, -0.00000113, 0.00000000],
+        [-6.27283737, -0.00055611, 0.00034075, 0.00055894, -0.00000113, 0.00000000],
+        [-6.27283761, -0.00055601, 0.00034069, 0.00055884, -0.00000113, 0.00000000],
+        [-6.27283785, -0.00055591, 0.00034063, 0.00055874, -0.00000113, 0.00000000],
+        [-6.27283809, -0.00055581, 0.00034057, 0.00055864, -0.00000113, 0.00000000],
+        [-6.27283833, -0.00055571, 0.00034051, 0.00055854, -0.00000113, 0.00000000],
+        [-6.27283856, -0.00055562, 0.00034045, 0.00055844, -0.00000113, 0.00000000],
+        [-6.27283880, -0.00055552, 0.00034039, 0.00055834, -0.00000113, 0.00000000],
+        [-6.27283904, -0.00055542, 0.00034033, 0.00055824, -0.00000113, 0.00000000],
+        [-6.27283928, -0.00055532, 0.00034026, 0.00055814, -0.00000113, 0.00000000],
+        [-6.27283952, -0.00055522, 0.00034020, 0.00055804, -0.00000113, 0.00000000],
+        [-6.27283976, -0.00055512, 0.00034014, 0.00055794, -0.00000113, 0.00000000],
+        [-6.27283999, -0.00055502, 0.00034008, 0.00055784, -0.00000113, 0.00000000],
+        [-6.27284023, -0.00055492, 0.00034002, 0.00055774, -0.00000113, 0.00000000],
+        [-6.27284047, -0.00055482, 0.00033996, 0.00055764, -0.00000113, 0.00000000],
+        [-6.27284071, -0.00055472, 0.00033990, 0.00055754, -0.00000113, 0.00000000],
+        [-6.27284095, -0.00055462, 0.00033984, 0.00055744, -0.00000113, 0.00000000],
+        [-6.27284118, -0.00055452, 0.00033978, 0.00055734, -0.00000113, 0.00000000],
+        [-6.27284142, -0.00055442, 0.00033972, 0.00055724, -0.00000113, 0.00000000],
+        [-6.27284166, -0.00055432, 0.00033965, 0.00055714, -0.00000113, 0.00000000],
+        [-6.27284190, -0.00055422, 0.00033959, 0.00055704, -0.00000113, 0.00000000],
+        [-6.27284213, -0.00055412, 0.00033953, 0.00055694, -0.00000113, 0.00000000],
+        [-6.27284237, -0.00055402, 0.00033947, 0.00055684, -0.00000113, 0.00000000],
+        [-6.27284261, -0.00055393, 0.00033941, 0.00055674, -0.00000113, 0.00000000],
+        [-6.27284285, -0.00055383, 0.00033935, 0.00055664, -0.00000113, 0.00000000],
+        [-6.27284308, -0.00055373, 0.00033929, 0.00055654, -0.00000113, 0.00000000],
+        [-6.27284332, -0.00055363, 0.00033923, 0.00055644, -0.00000113, 0.00000000],
+        [-6.27284356, -0.00055353, 0.00033917, 0.00055634, -0.00000113, 0.00000000],
+        [-6.27284379, -0.00055343, 0.00033911, 0.00055624, -0.00000113, 0.00000000],
+        [-6.27284403, -0.00055333, 0.00033905, 0.00055614, -0.00000113, 0.00000000],
+        [-6.27284427, -0.00055323, 0.00033899, 0.00055604, -0.00000113, 0.00000000],
+        [-6.27284450, -0.00055313, 0.00033893, 0.00055594, -0.00000113, 0.00000000],
+        [-6.27284474, -0.00055303, 0.00033887, 0.00055584, -0.00000113, 0.00000000],
+        [-6.27284498, -0.00055294, 0.00033880, 0.00055574, -0.00000113, 0.00000000],
+        [-6.27284521, -0.00055284, 0.00033874, 0.00055564, -0.00000113, 0.00000000],
+        [-6.27284545, -0.00055274, 0.00033868, 0.00055555, -0.00000113, 0.00000000],
+        [-6.27284568, -0.00055264, 0.00033862, 0.00055545, -0.00000113, 0.00000000],
+        [-6.27284592, -0.00055254, 0.00033856, 0.00055535, -0.00000113, 0.00000000],
+        [-6.27284616, -0.00055244, 0.00033850, 0.00055525, -0.00000113, 0.00000000],
+        [-6.27284639, -0.00055234, 0.00033844, 0.00055515, -0.00000113, 0.00000000],
+        [-6.27284663, -0.00055225, 0.00033838, 0.00055505, -0.00000113, 0.00000000],
+        [-6.27284686, -0.00055215, 0.00033832, 0.00055495, -0.00000113, 0.00000000],
+        [-6.27284710, -0.00055205, 0.00033826, 0.00055485, -0.00000113, 0.00000000],
+        [-6.27284733, -0.00055195, 0.00033820, 0.00055475, -0.00000113, 0.00000000],
+        [-6.27284757, -0.00055185, 0.00033814, 0.00055465, -0.00000113, 0.00000000],
+        [-6.27284781, -0.00055175, 0.00033808, 0.00055455, -0.00000113, 0.00000000],
+        [-6.27284804, -0.00055165, 0.00033802, 0.00055446, -0.00000113, 0.00000000],
+        [-6.27284828, -0.00055156, 0.00033796, 0.00055436, -0.00000113, 0.00000000],
+        [-6.27284851, -0.00055146, 0.00033790, 0.00055426, -0.00000113, 0.00000000],
+        [-6.27284875, -0.00055136, 0.00033784, 0.00055416, -0.00000113, 0.00000000],
+        [-6.27284898, -0.00055126, 0.00033778, 0.00055406, -0.00000113, 0.00000000],
+        [-6.27284922, -0.00055116, 0.00033772, 0.00055396, -0.00000113, 0.00000000],
+        [-6.27284945, -0.00055107, 0.00033766, 0.00055386, -0.00000113, 0.00000000],
+        [-6.27284968, -0.00055097, 0.00033760, 0.00055377, -0.00000113, 0.00000000],
+        [-6.27284992, -0.00055087, 0.00033754, 0.00055367, -0.00000113, 0.00000000],
+        [-6.27285015, -0.00055077, 0.00033748, 0.00055357, -0.00000113, 0.00000000],
+        [-6.27285039, -0.00055067, 0.00033742, 0.00055347, -0.00000113, 0.00000000],
+        [-6.27285062, -0.00055058, 0.00033736, 0.00055337, -0.00000113, 0.00000000],
+        [-6.27285086, -0.00055048, 0.00033730, 0.00055327, -0.00000113, 0.00000000],
+        [-6.27285109, -0.00055038, 0.00033724, 0.00055317, -0.00000113, 0.00000000],
+        [-6.27285133, -0.00055028, 0.00033718, 0.00055308, -0.00000113, 0.00000000],
+        [-6.27285156, -0.00055018, 0.00033712, 0.00055298, -0.00000113, 0.00000000],
+        [-6.27285179, -0.00055009, 0.00033706, 0.00055288, -0.00000113, 0.00000000],
+        [-6.27285203, -0.00054999, 0.00033700, 0.00055278, -0.00000113, 0.00000000],
+        [-6.27285226, -0.00054989, 0.00033694, 0.00055268, -0.00000113, 0.00000000],
+        [-6.27285249, -0.00054979, 0.00033688, 0.00055258, -0.00000113, 0.00000000],
+        [-6.27285273, -0.00054970, 0.00033682, 0.00055249, -0.00000113, 0.00000000],
+        [-6.27285296, -0.00054960, 0.00033676, 0.00055239, -0.00000113, 0.00000000],
+        [-6.27285319, -0.00054950, 0.00033670, 0.00055229, -0.00000113, 0.00000000],
+        [-6.27285343, -0.00054940, 0.00033664, 0.00055219, -0.00000113, 0.00000000],
+        [-6.27285366, -0.00054931, 0.00033658, 0.00055209, -0.00000113, 0.00000000],
+        [-6.27285389, -0.00054921, 0.00033652, 0.00055200, -0.00000113, 0.00000000],
+        [-6.27285413, -0.00054911, 0.00033646, 0.00055190, -0.00000113, 0.00000000],
+        [-6.27285436, -0.00054901, 0.00033640, 0.00055180, -0.00000113, 0.00000000],
+        [-6.27285459, -0.00054892, 0.00033634, 0.00055170, -0.00000113, 0.00000000],
+        [-6.27285483, -0.00054882, 0.00033628, 0.00055160, -0.00000113, 0.00000000],
+        [-6.27285506, -0.00054872, 0.00033622, 0.00055151, -0.00000113, 0.00000000],
+        [-6.27285529, -0.00054862, 0.00033616, 0.00055141, -0.00000113, 0.00000000],
+        [-6.27285552, -0.00054853, 0.00033610, 0.00055131, -0.00000113, 0.00000000],
+        [-6.27285576, -0.00054843, 0.00033604, 0.00055121, -0.00000113, 0.00000000],
+        [-6.27285599, -0.00054833, 0.00033598, 0.00055112, -0.00000113, 0.00000000],
+        [-6.27285622, -0.00054824, 0.00033592, 0.00055102, -0.00000113, 0.00000000],
+        [-6.27285645, -0.00054814, 0.00033586, 0.00055092, -0.00000113, 0.00000000],
+        [-6.27285669, -0.00054804, 0.00033580, 0.00055082, -0.00000113, 0.00000000],
+        [-6.27285692, -0.00054794, 0.00033574, 0.00055073, -0.00000113, 0.00000000],
+        [-6.27285715, -0.00054785, 0.00033568, 0.00055063, -0.00000113, 0.00000000],
+        [-6.27285738, -0.00054775, 0.00033563, 0.00055053, -0.00000113, 0.00000000],
+        [-6.27285761, -0.00054765, 0.00033557, 0.00055043, -0.00000113, 0.00000000],
+        [-6.27285785, -0.00054756, 0.00033551, 0.00055034, -0.00000113, 0.00000000],
+        [-6.27285808, -0.00054746, 0.00033545, 0.00055024, -0.00000113, 0.00000000],
+        [-6.27285831, -0.00054736, 0.00033539, 0.00055014, -0.00000113, 0.00000000],
+        [-6.27285854, -0.00054727, 0.00033533, 0.00055004, -0.00000113, 0.00000000],
+        [-6.27285877, -0.00054717, 0.00033527, 0.00054995, -0.00000113, 0.00000000],
+        [-6.27285900, -0.00054707, 0.00033521, 0.00054985, -0.00000113, 0.00000000],
+        [-6.27285923, -0.00054698, 0.00033515, 0.00054975, -0.00000113, 0.00000000],
+        [-6.27285947, -0.00054688, 0.00033509, 0.00054966, -0.00000113, 0.00000000],
+        [-6.27285970, -0.00054678, 0.00033503, 0.00054956, -0.00000113, 0.00000000],
+        [-6.27285993, -0.00054669, 0.00033497, 0.00054946, -0.00000113, 0.00000000],
+        [-6.27286016, -0.00054659, 0.00033491, 0.00054936, -0.00000113, 0.00000000],
+        [-6.27286039, -0.00054649, 0.00033485, 0.00054927, -0.00000113, 0.00000000],
+        [-6.27286062, -0.00054640, 0.00033480, 0.00054917, -0.00000113, 0.00000000],
+        [-6.27286085, -0.00054630, 0.00033474, 0.00054907, -0.00000113, 0.00000000],
+        [-6.27286108, -0.00054620, 0.00033468, 0.00054898, -0.00000113, 0.00000000],
+        [-6.27286131, -0.00054611, 0.00033462, 0.00054888, -0.00000113, 0.00000000],
+        [-6.27286154, -0.00054601, 0.00033456, 0.00054878, -0.00000113, 0.00000000],
+        [-6.27286177, -0.00054591, 0.00033450, 0.00054869, -0.00000113, 0.00000000],
+        [-6.27286200, -0.00054582, 0.00033444, 0.00054859, -0.00000113, 0.00000000],
+        [-6.27286223, -0.00054572, 0.00033438, 0.00054849, -0.00000113, 0.00000000],
+        [-6.27286246, -0.00054563, 0.00033432, 0.00054840, -0.00000113, 0.00000000],
+        [-6.27286269, -0.00054553, 0.00033426, 0.00054830, -0.00000113, 0.00000000],
+        [-6.27286292, -0.00054543, 0.00033420, 0.00054820, -0.00000113, 0.00000000],
+        [-6.27286315, -0.00054534, 0.00033415, 0.00054811, -0.00000113, 0.00000000],
+        [-6.27286338, -0.00054524, 0.00033409, 0.00054801, -0.00000113, 0.00000000],
+        [-6.27286361, -0.00054515, 0.00033403, 0.00054791, -0.00000113, 0.00000000],
+        [-6.27286384, -0.00054505, 0.00033397, 0.00054782, -0.00000113, 0.00000000],
+        [-6.27286407, -0.00054495, 0.00033391, 0.00054772, -0.00000113, 0.00000000],
+        [-6.27286430, -0.00054486, 0.00033385, 0.00054762, -0.00000113, 0.00000000],
+        [-6.27286453, -0.00054476, 0.00033379, 0.00054753, -0.00000113, 0.00000000],
+        [-6.27286476, -0.00054467, 0.00033373, 0.00054743, -0.00000113, 0.00000000],
+        [-6.27286499, -0.00054457, 0.00033368, 0.00054733, -0.00000113, 0.00000000],
+        [-6.27286522, -0.00054447, 0.00033362, 0.00054724, -0.00000113, 0.00000000],
+        [-6.27286545, -0.00054438, 0.00033356, 0.00054714, -0.00000113, 0.00000000],
+        [-6.27286568, -0.00054428, 0.00033350, 0.00054705, -0.00000113, 0.00000000],
+        [-6.27286591, -0.00054419, 0.00033344, 0.00054695, -0.00000113, 0.00000000],
+        [-6.27286614, -0.00054409, 0.00033338, 0.00054685, -0.00000113, 0.00000000],
+        [-6.27286636, -0.00054400, 0.00033332, 0.00054676, -0.00000113, 0.00000000],
+        [-6.27286659, -0.00054390, 0.00033326, 0.00054666, -0.00000113, 0.00000000],
+        [-6.27286682, -0.00054380, 0.00033321, 0.00054657, -0.00000113, 0.00000000],
+        [-6.27286705, -0.00054371, 0.00033315, 0.00054647, -0.00000113, 0.00000000],
+        [-6.27286728, -0.00054361, 0.00033309, 0.00054637, -0.00000113, 0.00000000],
+        [-6.27286751, -0.00054352, 0.00033303, 0.00054628, -0.00000113, 0.00000000],
+        [-6.27286774, -0.00054342, 0.00033297, 0.00054618, -0.00000113, 0.00000000],
+        [-6.27286796, -0.00054333, 0.00033291, 0.00054609, -0.00000113, 0.00000000],
+        [-6.27286819, -0.00054323, 0.00033286, 0.00054599, -0.00000113, 0.00000000],
+        [-6.27286842, -0.00054314, 0.00033280, 0.00054589, -0.00000113, 0.00000000],
+        [-6.27286865, -0.00054304, 0.00033274, 0.00054580, -0.00000113, 0.00000000],
+        [-6.27286888, -0.00054295, 0.00033268, 0.00054570, -0.00000113, 0.00000000],
+        [-6.27286910, -0.00054285, 0.00033262, 0.00054561, -0.00000113, 0.00000000],
+        [-6.27286933, -0.00054276, 0.00033256, 0.00054551, -0.00000113, 0.00000000],
+        [-6.27286956, -0.00054266, 0.00033250, 0.00054542, -0.00000113, 0.00000000],
+        [-6.27286979, -0.00054257, 0.00033245, 0.00054532, -0.00000113, 0.00000000],
+        [-6.27287001, -0.00054247, 0.00033239, 0.00054522, -0.00000113, 0.00000000],
+        [-6.27287024, -0.00054238, 0.00033233, 0.00054513, -0.00000113, 0.00000000],
+        [-6.27287047, -0.00054228, 0.00033227, 0.00054503, -0.00000113, 0.00000000],
+        [-6.27287070, -0.00054219, 0.00033221, 0.00054494, -0.00000113, 0.00000000],
+        [-6.27287092, -0.00054209, 0.00033216, 0.00054484, -0.00000113, 0.00000000],
+        [-6.27287115, -0.00054200, 0.00033210, 0.00054475, -0.00000113, 0.00000000],
+        [-6.27287138, -0.00054190, 0.00033204, 0.00054465, -0.00000113, 0.00000000],
+        [-6.27287160, -0.00054181, 0.00033198, 0.00054456, -0.00000113, 0.00000000],
+        [-6.27287183, -0.00054171, 0.00033192, 0.00054446, -0.00000113, 0.00000000],
+        [-6.27287206, -0.00054162, 0.00033186, 0.00054437, -0.00000113, 0.00000000],
+        [-6.27287228, -0.00054152, 0.00033181, 0.00054427, -0.00000113, 0.00000000],
+        [-6.27287251, -0.00054143, 0.00033175, 0.00054417, -0.00000113, 0.00000000],
+        [-6.27287274, -0.00054133, 0.00033169, 0.00054408, -0.00000113, 0.00000000],
+        [-6.27287296, -0.00054124, 0.00033163, 0.00054398, -0.00000113, 0.00000000],
+        [-6.27287319, -0.00054114, 0.00033157, 0.00054389, -0.00000113, 0.00000000],
+        [-6.27287342, -0.00054105, 0.00033152, 0.00054379, -0.00000113, 0.00000000],
+        [-6.27287364, -0.00054095, 0.00033146, 0.00054370, -0.00000113, 0.00000000],
+        [-6.27287387, -0.00054086, 0.00033140, 0.00054360, -0.00000113, 0.00000000],
+        [-6.27287409, -0.00054076, 0.00033134, 0.00054351, -0.00000113, 0.00000000],
+        [-6.27287432, -0.00054067, 0.00033128, 0.00054341, -0.00000113, 0.00000000],
+        [-6.27287455, -0.00054058, 0.00033123, 0.00054332, -0.00000113, 0.00000000],
+        [-6.27287477, -0.00054048, 0.00033117, 0.00054322, -0.00000113, 0.00000000],
+        [-6.27287500, -0.00054039, 0.00033111, 0.00054313, -0.00000113, 0.00000000],
+        [-6.27287522, -0.00054029, 0.00033105, 0.00054304, -0.00000113, 0.00000000],
+        [-6.27287545, -0.00054020, 0.00033100, 0.00054294, -0.00000113, 0.00000000],
+        [-6.27287568, -0.00054010, 0.00033094, 0.00054285, -0.00000113, 0.00000000],
+        [-6.27287590, -0.00054001, 0.00033088, 0.00054275, -0.00000113, 0.00000000],
+        [-6.27287613, -0.00053992, 0.00033082, 0.00054266, -0.00000113, 0.00000000],
+        [-6.27287635, -0.00053982, 0.00033076, 0.00054256, -0.00000113, 0.00000000],
+        [-6.27287658, -0.00053973, 0.00033071, 0.00054247, -0.00000113, 0.00000000],
+        [-6.27287680, -0.00053963, 0.00033065, 0.00054237, -0.00000113, 0.00000000],
+        [-6.27287703, -0.00053954, 0.00033059, 0.00054228, -0.00000113, 0.00000000],
+        [-6.27287725, -0.00053945, 0.00033053, 0.00054218, -0.00000113, 0.00000000],
+        [-6.27287748, -0.00053935, 0.00033048, 0.00054209, -0.00000113, 0.00000000],
+        [-6.27287770, -0.00053926, 0.00033042, 0.00054199, -0.00000113, 0.00000000],
+        [-6.27287793, -0.00053916, 0.00033036, 0.00054190, -0.00000113, 0.00000000],
+        [-6.27287815, -0.00053907, 0.00033030, 0.00054181, -0.00000113, 0.00000000],
+        [-6.27287838, -0.00053898, 0.00033025, 0.00054171, -0.00000113, 0.00000000],
+        [-6.27287860, -0.00053888, 0.00033019, 0.00054162, -0.00000113, 0.00000000],
+        [-6.27287882, -0.00053879, 0.00033013, 0.00054152, -0.00000113, 0.00000000],
+        [-6.27287905, -0.00053869, 0.00033007, 0.00054143, -0.00000113, 0.00000000],
+        [-6.27287927, -0.00053860, 0.00033002, 0.00054133, -0.00000113, 0.00000000],
+        [-6.27287950, -0.00053851, 0.00032996, 0.00054124, -0.00000113, 0.00000000],
+        [-6.27287972, -0.00053841, 0.00032990, 0.00054115, -0.00000113, 0.00000000],
+        [-6.27287994, -0.00053832, 0.00032984, 0.00054105, -0.00000113, 0.00000000],
+        [-6.27288017, -0.00053823, 0.00032979, 0.00054096, -0.00000113, 0.00000000],
+        [-6.27288039, -0.00053813, 0.00032973, 0.00054086, -0.00000113, 0.00000000],
+        [-6.27288062, -0.00053804, 0.00032967, 0.00054077, -0.00000113, 0.00000000],
+        [-6.27288084, -0.00053795, 0.00032961, 0.00054068, -0.00000113, 0.00000000],
+        [-6.27288106, -0.00053785, 0.00032956, 0.00054058, -0.00000113, 0.00000000],
+        [-6.27288129, -0.00053776, 0.00032950, 0.00054049, -0.00000113, 0.00000000],
+        [-6.27288151, -0.00053767, 0.00032944, 0.00054039, -0.00000113, 0.00000000],
+        [-6.27288173, -0.00053757, 0.00032938, 0.00054030, -0.00000113, 0.00000000],
+        [-6.27288196, -0.00053748, 0.00032933, 0.00054021, -0.00000113, 0.00000000],
+        [-6.27288218, -0.00053739, 0.00032927, 0.00054011, -0.00000113, 0.00000000],
+        [-6.27288240, -0.00053729, 0.00032921, 0.00054002, -0.00000113, 0.00000000],
+        [-6.27288263, -0.00053720, 0.00032916, 0.00053992, -0.00000113, 0.00000000],
+        [-6.27288285, -0.00053711, 0.00032910, 0.00053983, -0.00000113, 0.00000000],
+        [-6.27288307, -0.00053701, 0.00032904, 0.00053974, -0.00000113, 0.00000000],
+        [-6.27288330, -0.00053692, 0.00032898, 0.00053964, -0.00000113, 0.00000000],
+        [-6.27288352, -0.00053683, 0.00032893, 0.00053955, -0.00000113, 0.00000000],
+        [-6.27288374, -0.00053673, 0.00032887, 0.00053946, -0.00000113, 0.00000000],
+        [-6.27288396, -0.00053664, 0.00032881, 0.00053936, -0.00000113, 0.00000000],
+        [-6.27288419, -0.00053655, 0.00032876, 0.00053927, -0.00000113, 0.00000000],
+        [-6.27288441, -0.00053645, 0.00032870, 0.00053918, -0.00000113, 0.00000000],
+        [-6.27288463, -0.00053636, 0.00032864, 0.00053908, -0.00000113, 0.00000000],
+        [-6.27288485, -0.00053627, 0.00032859, 0.00053899, -0.00000113, 0.00000000],
+        [-6.27288508, -0.00053618, 0.00032853, 0.00053890, -0.00000113, 0.00000000],
+        [-6.27288530, -0.00053608, 0.00032847, 0.00053880, -0.00000113, 0.00000000],
+        [-6.27288552, -0.00053599, 0.00032841, 0.00053871, -0.00000113, 0.00000000],
+        [-6.27288574, -0.00053590, 0.00032836, 0.00053862, -0.00000113, 0.00000000],
+        [-6.27288596, -0.00053580, 0.00032830, 0.00053852, -0.00000113, 0.00000000],
+        [-6.27288619, -0.00053571, 0.00032824, 0.00053843, -0.00000113, 0.00000000],
+        [-6.27288641, -0.00053562, 0.00032819, 0.00053834, -0.00000113, 0.00000000],
+        [-6.27288663, -0.00053553, 0.00032813, 0.00053824, -0.00000113, 0.00000000],
+        [-6.27288685, -0.00053543, 0.00032807, 0.00053815, -0.00000113, 0.00000000],
+        [-6.27288707, -0.00053534, 0.00032802, 0.00053806, -0.00000113, 0.00000000],
+        [-6.27288729, -0.00053525, 0.00032796, 0.00053796, -0.00000113, 0.00000000],
+        [-6.27288752, -0.00053516, 0.00032790, 0.00053787, -0.00000113, 0.00000000],
+        [-6.27288774, -0.00053506, 0.00032785, 0.00053778, -0.00000113, 0.00000000],
+        [-6.27288796, -0.00053497, 0.00032779, 0.00053769, -0.00000113, 0.00000000],
+        [-6.27288818, -0.00053488, 0.00032773, 0.00053759, -0.00000113, 0.00000000],
+        [-6.27288840, -0.00053479, 0.00032768, 0.00053750, -0.00000113, 0.00000000],
+        [-6.27288862, -0.00053469, 0.00032762, 0.00053741, -0.00000113, 0.00000000],
+        [-6.27288884, -0.00053460, 0.00032756, 0.00053731, -0.00000113, 0.00000000],
+        [-6.27288906, -0.00053451, 0.00032751, 0.00053722, -0.00000113, 0.00000000],
+        [-6.27288928, -0.00053442, 0.00032745, 0.00053713, -0.00000113, 0.00000000],
+        [-6.27288950, -0.00053432, 0.00032739, 0.00053704, -0.00000113, 0.00000000],
+        [-6.27288973, -0.00053423, 0.00032734, 0.00053694, -0.00000113, 0.00000000],
+        [-6.27288995, -0.00053414, 0.00032728, 0.00053685, -0.00000113, 0.00000000],
+        [-6.27289017, -0.00053405, 0.00032722, 0.00053676, -0.00000113, 0.00000000],
+        [-6.27289039, -0.00053396, 0.00032717, 0.00053666, -0.00000113, 0.00000000],
+        [-6.27289061, -0.00053386, 0.00032711, 0.00053657, -0.00000113, 0.00000000],
+        [-6.27289083, -0.00053377, 0.00032705, 0.00053648, -0.00000113, 0.00000000],
+        [-6.27289105, -0.00053368, 0.00032700, 0.00053639, -0.00000113, 0.00000000],
+        [-6.27289127, -0.00053359, 0.00032694, 0.00053629, -0.00000113, 0.00000000],
+        [-6.27289149, -0.00053350, 0.00032689, 0.00053620, -0.00000113, 0.00000000],
+        [-6.27289171, -0.00053340, 0.00032683, 0.00053611, -0.00000113, 0.00000000],
+        [-6.27289193, -0.00053331, 0.00032677, 0.00053602, -0.00000113, 0.00000000],
+        [-6.27289215, -0.00053322, 0.00032672, 0.00053593, -0.00000113, 0.00000000],
+        [-6.27289237, -0.00053313, 0.00032666, 0.00053583, -0.00000113, 0.00000000],
+        [-6.27289259, -0.00053304, 0.00032660, 0.00053574, -0.00000113, 0.00000000],
+        [-6.27289281, -0.00053294, 0.00032655, 0.00053565, -0.00000113, 0.00000000],
+        [-6.27289303, -0.00053285, 0.00032649, 0.00053556, -0.00000113, 0.00000000],
+        [-6.27289325, -0.00053276, 0.00032643, 0.00053546, -0.00000113, 0.00000000],
+        [-6.27289346, -0.00053267, 0.00032638, 0.00053537, -0.00000113, 0.00000000],
+        [-6.27289368, -0.00053258, 0.00032632, 0.00053528, -0.00000113, 0.00000000],
+        [-6.27289390, -0.00053249, 0.00032627, 0.00053519, -0.00000113, 0.00000000],
+        [-6.27289412, -0.00053239, 0.00032621, 0.00053510, -0.00000113, 0.00000000],
+        [-6.27289434, -0.00053230, 0.00032615, 0.00053500, -0.00000113, 0.00000000],
+        [-6.27289456, -0.00053221, 0.00032610, 0.00053491, -0.00000113, 0.00000000],
+        [-6.27289478, -0.00053212, 0.00032604, 0.00053482, -0.00000113, 0.00000000],
+        [-6.27289500, -0.00053203, 0.00032599, 0.00053473, -0.00000113, 0.00000000],
+        [-6.27289522, -0.00053194, 0.00032593, 0.00053464, -0.00000113, 0.00000000],
+        [-6.27289544, -0.00053185, 0.00032587, 0.00053454, -0.00000113, 0.00000000],
+        [-6.27289565, -0.00053175, 0.00032582, 0.00053445, -0.00000113, 0.00000000],
+        [-6.27289587, -0.00053166, 0.00032576, 0.00053436, -0.00000113, 0.00000000],
+        [-6.27289609, -0.00053157, 0.00032571, 0.00053427, -0.00000113, 0.00000000],
+        [-6.27289631, -0.00053148, 0.00032565, 0.00053418, -0.00000113, 0.00000000],
+        [-6.27289653, -0.00053139, 0.00032559, 0.00053408, -0.00000113, 0.00000000],
+        [-6.27289675, -0.00053130, 0.00032554, 0.00053399, -0.00000113, 0.00000000],
+        [-6.27289696, -0.00053121, 0.00032548, 0.00053390, -0.00000113, 0.00000000],
+        [-6.27289718, -0.00053112, 0.00032543, 0.00053381, -0.00000113, 0.00000000],
+        [-6.27289740, -0.00053102, 0.00032537, 0.00053372, -0.00000113, 0.00000000],
+        [-6.27289762, -0.00053093, 0.00032531, 0.00053363, -0.00000113, 0.00000000],
+        [-6.27289784, -0.00053084, 0.00032526, 0.00053354, -0.00000113, 0.00000000],
+        [-6.27289805, -0.00053075, 0.00032520, 0.00053344, -0.00000113, 0.00000000],
+        [-6.27289827, -0.00053066, 0.00032515, 0.00053335, -0.00000113, 0.00000000],
+        [-6.27289849, -0.00053057, 0.00032509, 0.00053326, -0.00000113, 0.00000000],
+        [-6.27289871, -0.00053048, 0.00032504, 0.00053317, -0.00000113, 0.00000000],
+        [-6.27289892, -0.00053039, 0.00032498, 0.00053308, -0.00000113, 0.00000000],
+        [-6.27289914, -0.00053030, 0.00032492, 0.00053299, -0.00000113, 0.00000000],
+        [-6.27289936, -0.00053021, 0.00032487, 0.00053290, -0.00000113, 0.00000000],
+        [-6.27289958, -0.00053012, 0.00032481, 0.00053280, -0.00000113, 0.00000000],
+        [-6.27289979, -0.00053002, 0.00032476, 0.00053271, -0.00000113, 0.00000000],
+        [-6.27290001, -0.00052993, 0.00032470, 0.00053262, -0.00000113, 0.00000000],
+        [-6.27290023, -0.00052984, 0.00032465, 0.00053253, -0.00000113, 0.00000000],
+        [-6.27290044, -0.00052975, 0.00032459, 0.00053244, -0.00000113, 0.00000000],
+        [-6.27290066, -0.00052966, 0.00032453, 0.00053235, -0.00000113, 0.00000000],
+        [-6.27290088, -0.00052957, 0.00032448, 0.00053226, -0.00000113, 0.00000000],
+        [-6.27290109, -0.00052948, 0.00032442, 0.00053217, -0.00000113, 0.00000000],
+        [-6.27290131, -0.00052939, 0.00032437, 0.00053208, -0.00000113, 0.00000000],
+        [-6.27290153, -0.00052930, 0.00032431, 0.00053198, -0.00000113, 0.00000000],
+        [-6.27290174, -0.00052921, 0.00032426, 0.00053189, -0.00000113, 0.00000000],
+        [-6.27290196, -0.00052912, 0.00032420, 0.00053180, -0.00000113, 0.00000000],
+        [-6.27290218, -0.00052903, 0.00032415, 0.00053171, -0.00000113, 0.00000000],
+        [-6.27290239, -0.00052894, 0.00032409, 0.00053162, -0.00000113, 0.00000000],
+        [-6.27290261, -0.00052885, 0.00032404, 0.00053153, -0.00000113, 0.00000000],
+        [-6.27290283, -0.00052876, 0.00032398, 0.00053144, -0.00000113, 0.00000000],
+        [-6.27290304, -0.00052867, 0.00032392, 0.00053135, -0.00000113, 0.00000000],
+        [-6.27290326, -0.00052858, 0.00032387, 0.00053126, -0.00000113, 0.00000000],
+        [-6.27290347, -0.00052849, 0.00032381, 0.00053117, -0.00000113, 0.00000000],
+        [-6.27290369, -0.00052840, 0.00032376, 0.00053108, -0.00000113, 0.00000000],
+        [-6.27290391, -0.00052831, 0.00032370, 0.00053099, -0.00000113, 0.00000000],
+        [-6.27290412, -0.00052822, 0.00032365, 0.00053089, -0.00000113, 0.00000000],
+        [-6.27290434, -0.00052813, 0.00032359, 0.00053080, -0.00000113, 0.00000000],
+        [-6.27290455, -0.00052804, 0.00032354, 0.00053071, -0.00000113, 0.00000000],
+        [-6.27290477, -0.00052795, 0.00032348, 0.00053062, -0.00000113, 0.00000000],
+        [-6.27290498, -0.00052786, 0.00032343, 0.00053053, -0.00000113, 0.00000000],
+        [-6.27290520, -0.00052777, 0.00032337, 0.00053044, -0.00000113, 0.00000000],
+        [-6.27290541, -0.00052768, 0.00032332, 0.00053035, -0.00000113, 0.00000000],
+        [-6.27290563, -0.00052759, 0.00032326, 0.00053026, -0.00000113, 0.00000000],
+        [-6.27290584, -0.00052750, 0.00032321, 0.00053017, -0.00000113, 0.00000000],
+        [-6.27290606, -0.00052741, 0.00032315, 0.00053008, -0.00000113, 0.00000000],
+        [-6.27290627, -0.00052732, 0.00032310, 0.00052999, -0.00000113, 0.00000000],
+        [-6.27290649, -0.00052723, 0.00032304, 0.00052990, -0.00000113, 0.00000000],
+        [-6.27290670, -0.00052714, 0.00032299, 0.00052981, -0.00000113, 0.00000000],
+        [-6.27290692, -0.00052705, 0.00032293, 0.00052972, -0.00000113, 0.00000000],
+        [-6.27290713, -0.00052696, 0.00032288, 0.00052963, -0.00000113, 0.00000000],
+        [-6.27290735, -0.00052687, 0.00032282, 0.00052954, -0.00000113, 0.00000000],
+        [-6.27290756, -0.00052678, 0.00032277, 0.00052945, -0.00000113, 0.00000000],
+        [-6.27290778, -0.00052669, 0.00032271, 0.00052936, -0.00000113, 0.00000000],
+        [-6.27290799, -0.00052660, 0.00032266, 0.00052927, -0.00000113, 0.00000000],
+        [-6.27290821, -0.00052651, 0.00032260, 0.00052918, -0.00000113, 0.00000000],
+        [-6.27290842, -0.00052642, 0.00032255, 0.00052909, -0.00000113, 0.00000000],
+        [-6.27290863, -0.00052633, 0.00032249, 0.00052900, -0.00000113, 0.00000000],
+        [-6.27290885, -0.00052624, 0.00032244, 0.00052891, -0.00000113, 0.00000000],
+        [-6.27290906, -0.00052615, 0.00032238, 0.00052882, -0.00000113, 0.00000000],
+        [-6.27290928, -0.00052606, 0.00032233, 0.00052873, -0.00000113, 0.00000000],
+        [-6.27290949, -0.00052597, 0.00032227, 0.00052864, -0.00000113, 0.00000000],
+        [-6.27290970, -0.00052588, 0.00032222, 0.00052855, -0.00000113, 0.00000000],
+        [-6.27290992, -0.00052579, 0.00032216, 0.00052846, -0.00000113, 0.00000000],
+        [-6.27291013, -0.00052570, 0.00032211, 0.00052837, -0.00000113, 0.00000000],
+        [-6.27291034, -0.00052561, 0.00032205, 0.00052828, -0.00000113, 0.00000000],
+        [-6.27291056, -0.00052553, 0.00032200, 0.00052819, -0.00000113, 0.00000000],
+        [-6.27291077, -0.00052544, 0.00032194, 0.00052810, -0.00000113, 0.00000000],
+        [-6.27291098, -0.00052535, 0.00032189, 0.00052801, -0.00000113, 0.00000000],
+        [-6.27291120, -0.00052526, 0.00032183, 0.00052792, -0.00000113, 0.00000000],
+        [-6.27291141, -0.00052517, 0.00032178, 0.00052783, -0.00000113, 0.00000000],
+        [-6.27291162, -0.00052508, 0.00032173, 0.00052774, -0.00000113, 0.00000000],
+        [-6.27291184, -0.00052499, 0.00032167, 0.00052765, -0.00000113, 0.00000000],
+        [-6.27291205, -0.00052490, 0.00032162, 0.00052756, -0.00000113, 0.00000000],
+        [-6.27291226, -0.00052481, 0.00032156, 0.00052747, -0.00000113, 0.00000000],
+        [-6.27291248, -0.00052472, 0.00032151, 0.00052738, -0.00000113, 0.00000000],
+        [-6.27291269, -0.00052463, 0.00032145, 0.00052730, -0.00000113, 0.00000000],
+        [-6.27291290, -0.00052455, 0.00032140, 0.00052721, -0.00000113, 0.00000000],
+        [-6.27291311, -0.00052446, 0.00032134, 0.00052712, -0.00000113, 0.00000000],
+        [-6.27291333, -0.00052437, 0.00032129, 0.00052703, -0.00000113, 0.00000000],
+        [-6.27291354, -0.00052428, 0.00032123, 0.00052694, -0.00000113, 0.00000000],
+        [-6.27291375, -0.00052419, 0.00032118, 0.00052685, -0.00000113, 0.00000000],
+        [-6.27291396, -0.00052410, 0.00032113, 0.00052676, -0.00000113, 0.00000000],
+        [-6.27291418, -0.00052401, 0.00032107, 0.00052667, -0.00000113, 0.00000000],
+        [-6.27291439, -0.00052392, 0.00032102, 0.00052658, -0.00000113, 0.00000000],
+        [-6.27291460, -0.00052384, 0.00032096, 0.00052649, -0.00000113, 0.00000000],
+        [-6.27291481, -0.00052375, 0.00032091, 0.00052640, -0.00000113, 0.00000000],
+        [-6.27291503, -0.00052366, 0.00032085, 0.00052631, -0.00000113, 0.00000000],
+        [-6.27291524, -0.00052357, 0.00032080, 0.00052622, -0.00000113, 0.00000000],
+        [-6.27291545, -0.00052348, 0.00032075, 0.00052614, -0.00000113, 0.00000000],
+        [-6.27291566, -0.00052339, 0.00032069, 0.00052605, -0.00000113, 0.00000000],
+        [-6.27291587, -0.00052330, 0.00032064, 0.00052596, -0.00000113, 0.00000000],
+        [-6.27291608, -0.00052322, 0.00032058, 0.00052587, -0.00000113, 0.00000000],
+        [-6.27291630, -0.00052313, 0.00032053, 0.00052578, -0.00000113, 0.00000000],
+        [-6.27291651, -0.00052304, 0.00032047, 0.00052569, -0.00000113, 0.00000000],
+        [-6.27291672, -0.00052295, 0.00032042, 0.00052560, -0.00000113, 0.00000000],
+        [-6.27291693, -0.00052286, 0.00032037, 0.00052551, -0.00000113, 0.00000000],
+        [-6.27291714, -0.00052277, 0.00032031, 0.00052542, -0.00000113, 0.00000000],
+        [-6.27291735, -0.00052269, 0.00032026, 0.00052534, -0.00000113, 0.00000000],
+        [-6.27291756, -0.00052260, 0.00032020, 0.00052525, -0.00000113, 0.00000000],
+        [-6.27291777, -0.00052251, 0.00032015, 0.00052516, -0.00000113, 0.00000000],
+        [-6.27291799, -0.00052242, 0.00032010, 0.00052507, -0.00000113, 0.00000000],
+        [-6.27291820, -0.00052233, 0.00032004, 0.00052498, -0.00000113, 0.00000000],
+        [-6.27291841, -0.00052225, 0.00031999, 0.00052489, -0.00000113, 0.00000000],
+        [-6.27291862, -0.00052216, 0.00031993, 0.00052480, -0.00000113, 0.00000000],
+        [-6.27291883, -0.00052207, 0.00031988, 0.00052472, -0.00000113, 0.00000000],
+        [-6.27291904, -0.00052198, 0.00031983, 0.00052463, -0.00000113, 0.00000000],
+        [-6.27291925, -0.00052189, 0.00031977, 0.00052454, -0.00000113, 0.00000000],
+        [-6.27291946, -0.00052180, 0.00031972, 0.00052445, -0.00000113, 0.00000000],
+        [-6.27291967, -0.00052172, 0.00031966, 0.00052436, -0.00000113, 0.00000000],
+        [-6.27291988, -0.00052163, 0.00031961, 0.00052427, -0.00000113, 0.00000000],
+        [-6.27292009, -0.00052154, 0.00031956, 0.00052419, -0.00000113, 0.00000000],
+        [-6.27292030, -0.00052145, 0.00031950, 0.00052410, -0.00000113, 0.00000000],
+        [-6.27292051, -0.00052137, 0.00031945, 0.00052401, -0.00000113, 0.00000000],
+        [-6.27292072, -0.00052128, 0.00031939, 0.00052392, -0.00000113, 0.00000000],
+        [-6.27292093, -0.00052119, 0.00031934, 0.00052383, -0.00000113, 0.00000000],
+        [-6.27292114, -0.00052110, 0.00031929, 0.00052374, -0.00000113, 0.00000000],
+        [-6.27292135, -0.00052101, 0.00031923, 0.00052366, -0.00000113, 0.00000000],
+        [-6.27292156, -0.00052093, 0.00031918, 0.00052357, -0.00000113, 0.00000000],
+        [-6.27292177, -0.00052084, 0.00031913, 0.00052348, -0.00000113, 0.00000000],
+        [-6.27292198, -0.00052075, 0.00031907, 0.00052339, -0.00000113, 0.00000000],
+        [-6.27292219, -0.00052066, 0.00031902, 0.00052330, -0.00000113, 0.00000000],
+        [-6.27292240, -0.00052058, 0.00031896, 0.00052322, -0.00000113, 0.00000000],
+        [-6.27292261, -0.00052049, 0.00031891, 0.00052313, -0.00000113, 0.00000000],
+        [-6.27292282, -0.00052040, 0.00031886, 0.00052304, -0.00000113, 0.00000000],
+        [-6.27292303, -0.00052031, 0.00031880, 0.00052295, -0.00000113, 0.00000000],
+        [-6.27292324, -0.00052023, 0.00031875, 0.00052286, -0.00000113, 0.00000000],
+        [-6.27292345, -0.00052014, 0.00031870, 0.00052278, -0.00000113, 0.00000000],
+        [-6.27292366, -0.00052005, 0.00031864, 0.00052269, -0.00000113, 0.00000000],
+        [-6.27292386, -0.00051996, 0.00031859, 0.00052260, -0.00000113, 0.00000000],
+        [-6.27292407, -0.00051988, 0.00031854, 0.00052251, -0.00000113, 0.00000000],
+        [-6.27292428, -0.00051979, 0.00031848, 0.00052242, -0.00000113, 0.00000000],
+        [-6.27292449, -0.00051970, 0.00031843, 0.00052234, -0.00000113, 0.00000000],
+        [-6.27292470, -0.00051962, 0.00031837, 0.00052225, -0.00000113, 0.00000000],
+        [-6.27292491, -0.00051953, 0.00031832, 0.00052216, -0.00000113, 0.00000000],
+        [-6.27292512, -0.00051944, 0.00031827, 0.00052207, -0.00000113, 0.00000000],
+        [-6.27292533, -0.00051935, 0.00031821, 0.00052199, -0.00000113, 0.00000000],
+        [-6.27292553, -0.00051927, 0.00031816, 0.00052190, -0.00000113, 0.00000000],
+        [-6.27292574, -0.00051918, 0.00031811, 0.00052181, -0.00000113, 0.00000000],
+        [-6.27292595, -0.00051909, 0.00031805, 0.00052172, -0.00000113, 0.00000000],
+        [-6.27292616, -0.00051901, 0.00031800, 0.00052164, -0.00000113, 0.00000000],
+        [-6.27292637, -0.00051892, 0.00031795, 0.00052155, -0.00000113, 0.00000000],
+        [-6.27292658, -0.00051883, 0.00031789, 0.00052146, -0.00000113, 0.00000000],
+        [-6.27292678, -0.00051874, 0.00031784, 0.00052137, -0.00000113, 0.00000000],
+        [-6.27292699, -0.00051866, 0.00031779, 0.00052129, -0.00000113, 0.00000000],
+        [-6.27292720, -0.00051857, 0.00031773, 0.00052120, -0.00000113, 0.00000000],
+        [-6.27292741, -0.00051848, 0.00031768, 0.00052111, -0.00000113, 0.00000000],
+        [-6.27292762, -0.00051840, 0.00031763, 0.00052102, -0.00000113, 0.00000000],
+        [-6.27292782, -0.00051831, 0.00031757, 0.00052094, -0.00000113, 0.00000000],
+        [-6.27292803, -0.00051822, 0.00031752, 0.00052085, -0.00000113, 0.00000000],
+        [-6.27292824, -0.00051814, 0.00031747, 0.00052076, -0.00000113, 0.00000000],
+        [-6.27292845, -0.00051805, 0.00031742, 0.00052068, -0.00000113, 0.00000000],
+        [-6.27292865, -0.00051796, 0.00031736, 0.00052059, -0.00000113, 0.00000000],
+        [-6.27292886, -0.00051788, 0.00031731, 0.00052050, -0.00000113, 0.00000000],
+        [-6.27292907, -0.00051779, 0.00031726, 0.00052041, -0.00000113, 0.00000000],
+        [-6.27292927, -0.00051770, 0.00031720, 0.00052033, -0.00000113, 0.00000000],
+        [-6.27292948, -0.00051762, 0.00031715, 0.00052024, -0.00000113, 0.00000000],
+        [-6.27292969, -0.00051753, 0.00031710, 0.00052015, -0.00000113, 0.00000000],
+        [-6.27292990, -0.00051744, 0.00031704, 0.00052007, -0.00000113, 0.00000000],
+        [-6.27293010, -0.00051736, 0.00031699, 0.00051998, -0.00000113, 0.00000000],
+        [-6.27293031, -0.00051727, 0.00031694, 0.00051989, -0.00000113, 0.00000000],
+        [-6.27293052, -0.00051718, 0.00031688, 0.00051981, -0.00000113, 0.00000000],
+        [-6.27293072, -0.00051710, 0.00031683, 0.00051972, -0.00000113, 0.00000000],
+        [-6.27293093, -0.00051701, 0.00031678, 0.00051963, -0.00000113, 0.00000000],
+        [-6.27293114, -0.00051693, 0.00031673, 0.00051955, -0.00000113, 0.00000000],
+        [-6.27293134, -0.00051684, 0.00031667, 0.00051946, -0.00000113, 0.00000000],
+        [-6.27293155, -0.00051675, 0.00031662, 0.00051937, -0.00000113, 0.00000000],
+        [-6.27293176, -0.00051667, 0.00031657, 0.00051929, -0.00000113, 0.00000000],
+        [-6.27293196, -0.00051658, 0.00031651, 0.00051920, -0.00000113, 0.00000000],
+        [-6.27293217, -0.00051649, 0.00031646, 0.00051911, -0.00000113, 0.00000000],
+        [-6.27293237, -0.00051641, 0.00031641, 0.00051903, -0.00000113, 0.00000000],
+        [-6.27293258, -0.00051632, 0.00031636, 0.00051894, -0.00000113, 0.00000000],
+        [-6.27293279, -0.00051624, 0.00031630, 0.00051885, -0.00000113, 0.00000000],
+        [-6.27293299, -0.00051615, 0.00031625, 0.00051877, -0.00000113, 0.00000000],
+        [-6.27293320, -0.00051606, 0.00031620, 0.00051868, -0.00000113, 0.00000000],
+        [-6.27293340, -0.00051598, 0.00031614, 0.00051859, -0.00000113, 0.00000000],
+        [-6.27293361, -0.00051589, 0.00031609, 0.00051851, -0.00000113, 0.00000000],
+        [-6.27293382, -0.00051581, 0.00031604, 0.00051842, -0.00000113, 0.00000000],
+        [-6.27293402, -0.00051572, 0.00031599, 0.00051833, -0.00000113, 0.00000000],
+        [-6.27293423, -0.00051563, 0.00031593, 0.00051825, -0.00000113, 0.00000000],
+        [-6.27293443, -0.00051555, 0.00031588, 0.00051816, -0.00000113, 0.00000000],
+        [-6.27293464, -0.00051546, 0.00031583, 0.00051807, -0.00000113, 0.00000000],
+        [-6.27293484, -0.00051538, 0.00031578, 0.00051799, -0.00000113, 0.00000000],
+        [-6.27293505, -0.00051529, 0.00031572, 0.00051790, -0.00000113, 0.00000000],
+        [-6.27293525, -0.00051520, 0.00031567, 0.00051782, -0.00000113, 0.00000000],
+        [-6.27293546, -0.00051512, 0.00031562, 0.00051773, -0.00000113, 0.00000000],
+        [-6.27293566, -0.00051503, 0.00031557, 0.00051764, -0.00000113, 0.00000000],
+        [-6.27293587, -0.00051495, 0.00031551, 0.00051756, -0.00000113, 0.00000000],
+        [-6.27293607, -0.00051486, 0.00031546, 0.00051747, -0.00000113, 0.00000000],
+        [-6.27293628, -0.00051478, 0.00031541, 0.00051739, -0.00000113, 0.00000000],
+        [-6.27293648, -0.00051469, 0.00031536, 0.00051730, -0.00000113, 0.00000000],
+        [-6.27293669, -0.00051461, 0.00031530, 0.00051721, -0.00000113, 0.00000000],
+        [-6.27293689, -0.00051452, 0.00031525, 0.00051713, -0.00000113, 0.00000000],
+        [-6.27293710, -0.00051443, 0.00031520, 0.00051704, -0.00000113, 0.00000000],
+        [-6.27293730, -0.00051435, 0.00031515, 0.00051696, -0.00000113, 0.00000000],
+        [-6.27293751, -0.00051426, 0.00031509, 0.00051687, -0.00000113, 0.00000000],
+        [-6.27293771, -0.00051418, 0.00031504, 0.00051678, -0.00000113, 0.00000000],
+        [-6.27293792, -0.00051409, 0.00031499, 0.00051670, -0.00000113, 0.00000000],
+        [-6.27293812, -0.00051401, 0.00031494, 0.00051661, -0.00000113, 0.00000000],
+        [-6.27293832, -0.00051392, 0.00031488, 0.00051653, -0.00000113, 0.00000000],
+        [-6.27293853, -0.00051384, 0.00031483, 0.00051644, -0.00000113, 0.00000000],
+        [-6.27293873, -0.00051375, 0.00031478, 0.00051635, -0.00000113, 0.00000000],
+        [-6.27293894, -0.00051367, 0.00031473, 0.00051627, -0.00000113, 0.00000000],
+        [-6.27293914, -0.00051358, 0.00031467, 0.00051618, -0.00000113, 0.00000000],
+        [-6.27293934, -0.00051350, 0.00031462, 0.00051610, -0.00000113, 0.00000000],
+        [-6.27293955, -0.00051341, 0.00031457, 0.00051601, -0.00000113, 0.00000000],
+        [-6.27293975, -0.00051333, 0.00031452, 0.00051593, -0.00000113, 0.00000000],
+        [-6.27293995, -0.00051324, 0.00031447, 0.00051584, -0.00000113, 0.00000000],
+        [-6.27294016, -0.00051315, 0.00031441, 0.00051576, -0.00000113, 0.00000000],
+        [-6.27294036, -0.00051307, 0.00031436, 0.00051567, -0.00000113, 0.00000000],
+        [-6.27294057, -0.00051298, 0.00031431, 0.00051558, -0.00000113, 0.00000000],
+        [-6.27294077, -0.00051290, 0.00031426, 0.00051550, -0.00000113, 0.00000000],
+        [-6.27294097, -0.00051281, 0.00031421, 0.00051541, -0.00000113, 0.00000000],
+        [-6.27294118, -0.00051273, 0.00031415, 0.00051533, -0.00000113, 0.00000000],
+        [-6.27294138, -0.00051265, 0.00031410, 0.00051524, -0.00000113, 0.00000000],
+        [-6.27294158, -0.00051256, 0.00031405, 0.00051516, -0.00000113, 0.00000000],
+        [-6.27294178, -0.00051248, 0.00031400, 0.00051507, -0.00000113, 0.00000000],
+        [-6.27294199, -0.00051239, 0.00031395, 0.00051499, -0.00000113, 0.00000000],
+        [-6.27294219, -0.00051231, 0.00031389, 0.00051490, -0.00000113, 0.00000000],
+        [-6.27294239, -0.00051222, 0.00031384, 0.00051482, -0.00000113, 0.00000000],
+        [-6.27294260, -0.00051214, 0.00031379, 0.00051473, -0.00000113, 0.00000000],
+        [-6.27294280, -0.00051205, 0.00031374, 0.00051465, -0.00000113, 0.00000000],
+        [-6.27294300, -0.00051197, 0.00031369, 0.00051456, -0.00000113, 0.00000000],
+        [-6.27294320, -0.00051188, 0.00031363, 0.00051448, -0.00000113, 0.00000000],
+        [-6.27294341, -0.00051180, 0.00031358, 0.00051439, -0.00000113, 0.00000000],
+        [-6.27294361, -0.00051171, 0.00031353, 0.00051431, -0.00000113, 0.00000000],
+        [-6.27294381, -0.00051163, 0.00031348, 0.00051422, -0.00000113, 0.00000000],
+        [-6.27294401, -0.00051154, 0.00031343, 0.00051414, -0.00000113, 0.00000000],
+        [-6.27294422, -0.00051146, 0.00031337, 0.00051405, -0.00000113, 0.00000000],
+        [-6.27294442, -0.00051137, 0.00031332, 0.00051397, -0.00000113, 0.00000000],
+        [-6.27294462, -0.00051129, 0.00031327, 0.00051388, -0.00000113, 0.00000000],
+        [-6.27294482, -0.00051121, 0.00031322, 0.00051380, -0.00000113, 0.00000000],
+        [-6.27294502, -0.00051112, 0.00031317, 0.00051371, -0.00000113, 0.00000000],
+        [-6.27294523, -0.00051104, 0.00031312, 0.00051363, -0.00000113, 0.00000000],
+        [-6.27294543, -0.00051095, 0.00031306, 0.00051354, -0.00000113, 0.00000000],
+        [-6.27294563, -0.00051087, 0.00031301, 0.00051346, -0.00000113, 0.00000000],
+        [-6.27294583, -0.00051078, 0.00031296, 0.00051337, -0.00000113, 0.00000000],
+        [-6.27294603, -0.00051070, 0.00031291, 0.00051329, -0.00000113, 0.00000000],
+        [-6.27294623, -0.00051062, 0.00031286, 0.00051320, -0.00000113, 0.00000000],
+        [-6.27294644, -0.00051053, 0.00031281, 0.00051312, -0.00000113, 0.00000000],
+        [-6.27294664, -0.00051045, 0.00031275, 0.00051303, -0.00000113, 0.00000000],
+        [-6.27294684, -0.00051036, 0.00031270, 0.00051295, -0.00000113, 0.00000000],
+        [-6.27294704, -0.00051028, 0.00031265, 0.00051286, -0.00000113, 0.00000000],
+        [-6.27294724, -0.00051019, 0.00031260, 0.00051278, -0.00000113, 0.00000000],
+        [-6.27294744, -0.00051011, 0.00031255, 0.00051270, -0.00000113, 0.00000000],
+        [-6.27294764, -0.00051003, 0.00031250, 0.00051261, -0.00000113, 0.00000000],
+        [-6.27294784, -0.00050994, 0.00031244, 0.00051253, -0.00000113, 0.00000000],
+        [-6.27294805, -0.00050986, 0.00031239, 0.00051244, -0.00000113, 0.00000000],
+        [-6.27294825, -0.00050977, 0.00031234, 0.00051236, -0.00000113, 0.00000000],
+        [-6.27294845, -0.00050969, 0.00031229, 0.00051227, -0.00000113, 0.00000000],
+        [-6.27294865, -0.00050961, 0.00031224, 0.00051219, -0.00000113, 0.00000000],
+        [-6.27294885, -0.00050952, 0.00031219, 0.00051210, -0.00000113, 0.00000000],
+        [-6.27294905, -0.00050944, 0.00031214, 0.00051202, -0.00000113, 0.00000000],
+        [-6.27294925, -0.00050936, 0.00031208, 0.00051194, -0.00000113, 0.00000000],
+        [-6.27294945, -0.00050927, 0.00031203, 0.00051185, -0.00000113, 0.00000000],
+        [-6.27294965, -0.00050919, 0.00031198, 0.00051177, -0.00000113, 0.00000000],
+        [-6.27294985, -0.00050910, 0.00031193, 0.00051168, -0.00000113, 0.00000000],
+        [-6.27295005, -0.00050902, 0.00031188, 0.00051160, -0.00000113, 0.00000000],
+        [-6.27295025, -0.00050894, 0.00031183, 0.00051152, -0.00000113, 0.00000000],
+        [-6.27295045, -0.00050885, 0.00031178, 0.00051143, -0.00000113, 0.00000000],
+        [-6.27295065, -0.00050877, 0.00031173, 0.00051135, -0.00000113, 0.00000000],
+        [-6.27295085, -0.00050869, 0.00031167, 0.00051126, -0.00000113, 0.00000000],
+        [-6.27295105, -0.00050860, 0.00031162, 0.00051118, -0.00000113, 0.00000000],
+        [-6.27295125, -0.00050852, 0.00031157, 0.00051109, -0.00000113, 0.00000000],
+        [-6.27295145, -0.00050844, 0.00031152, 0.00051101, -0.00000113, 0.00000000],
+        [-6.27295165, -0.00050835, 0.00031147, 0.00051093, -0.00000113, 0.00000000],
+        [-6.27295185, -0.00050827, 0.00031142, 0.00051084, -0.00000113, 0.00000000],
+        [-6.27295205, -0.00050818, 0.00031137, 0.00051076, -0.00000113, 0.00000000],
+        [-6.27295225, -0.00050810, 0.00031132, 0.00051068, -0.00000113, 0.00000000],
+        [-6.27295245, -0.00050802, 0.00031126, 0.00051059, -0.00000113, 0.00000000],
+        [-6.27295265, -0.00050793, 0.00031121, 0.00051051, -0.00000113, 0.00000000],
+        [-6.27295285, -0.00050785, 0.00031116, 0.00051042, -0.00000113, 0.00000000],
+        [-6.27295305, -0.00050777, 0.00031111, 0.00051034, -0.00000113, 0.00000000],
+        [-6.27295325, -0.00050768, 0.00031106, 0.00051026, -0.00000113, 0.00000000],
+        [-6.27295345, -0.00050760, 0.00031101, 0.00051017, -0.00000113, 0.00000000],
+        [-6.27295365, -0.00050752, 0.00031096, 0.00051009, -0.00000113, 0.00000000],
+        [-6.27295385, -0.00050743, 0.00031091, 0.00051001, -0.00000113, 0.00000000],
+        [-6.27295404, -0.00050735, 0.00031086, 0.00050992, -0.00000113, 0.00000000],
+        [-6.27295424, -0.00050727, 0.00031081, 0.00050984, -0.00000113, 0.00000000],
+        [-6.27295444, -0.00050719, 0.00031075, 0.00050975, -0.00000113, 0.00000000],
+        [-6.27295464, -0.00050710, 0.00031070, 0.00050967, -0.00000113, 0.00000000],
+        [-6.27295484, -0.00050702, 0.00031065, 0.00050959, -0.00000113, 0.00000000],
+        [-6.27295504, -0.00050694, 0.00031060, 0.00050950, -0.00000113, 0.00000000],
+        [-6.27295524, -0.00050685, 0.00031055, 0.00050942, -0.00000113, 0.00000000],
+        [-6.27295544, -0.00050677, 0.00031050, 0.00050934, -0.00000113, 0.00000000],
+        [-6.27295563, -0.00050669, 0.00031045, 0.00050925, -0.00000113, 0.00000000],
+        [-6.27295583, -0.00050660, 0.00031040, 0.00050917, -0.00000113, 0.00000000],
+        [-6.27295603, -0.00050652, 0.00031035, 0.00050909, -0.00000113, 0.00000000],
+        [-6.27295623, -0.00050644, 0.00031030, 0.00050900, -0.00000113, 0.00000000],
+        [-6.27295643, -0.00050636, 0.00031025, 0.00050892, -0.00000113, 0.00000000],
+        [-6.27295663, -0.00050627, 0.00031019, 0.00050884, -0.00000113, 0.00000000],
+        [-6.27295682, -0.00050619, 0.00031014, 0.00050875, -0.00000113, 0.00000000],
+        [-6.27295702, -0.00050611, 0.00031009, 0.00050867, -0.00000113, 0.00000000],
+        [-6.27295722, -0.00050602, 0.00031004, 0.00050859, -0.00000113, 0.00000000],
+        [-6.27295742, -0.00050594, 0.00030999, 0.00050851, -0.00000113, 0.00000000],
+        [-6.27295762, -0.00050586, 0.00030994, 0.00050842, -0.00000113, 0.00000000],
+        [-6.27295781, -0.00050578, 0.00030989, 0.00050834, -0.00000113, 0.00000000],
+        [-6.27295801, -0.00050569, 0.00030984, 0.00050826, -0.00000113, 0.00000000],
+        [-6.27295821, -0.00050561, 0.00030979, 0.00050817, -0.00000113, 0.00000000],
+        [-6.27295841, -0.00050553, 0.00030974, 0.00050809, -0.00000113, 0.00000000],
+        [-6.27295860, -0.00050545, 0.00030969, 0.00050801, -0.00000113, 0.00000000],
+        [-6.27295880, -0.00050536, 0.00030964, 0.00050792, -0.00000113, 0.00000000],
+        [-6.27295900, -0.00050528, 0.00030959, 0.00050784, -0.00000113, 0.00000000],
+        [-6.27295920, -0.00050520, 0.00030954, 0.00050776, -0.00000113, 0.00000000],
+        [-6.27295939, -0.00050512, 0.00030949, 0.00050768, -0.00000113, 0.00000000],
+        [-6.27295959, -0.00050503, 0.00030944, 0.00050759, -0.00000113, 0.00000000],
+        [-6.27295979, -0.00050495, 0.00030938, 0.00050751, -0.00000113, 0.00000000],
+        [-6.27295998, -0.00050487, 0.00030933, 0.00050743, -0.00000113, 0.00000000],
+        [-6.27296018, -0.00050479, 0.00030928, 0.00050734, -0.00000113, 0.00000000],
+        [-6.27296038, -0.00050470, 0.00030923, 0.00050726, -0.00000113, 0.00000000],
+        [-6.27296058, -0.00050462, 0.00030918, 0.00050718, -0.00000113, 0.00000000],
+        [-6.27296077, -0.00050454, 0.00030913, 0.00050710, -0.00000113, 0.00000000],
+        [-6.27296097, -0.00050446, 0.00030908, 0.00050701, -0.00000113, 0.00000000],
+        [-6.27296117, -0.00050438, 0.00030903, 0.00050693, -0.00000113, 0.00000000],
+        [-6.27296136, -0.00050429, 0.00030898, 0.00050685, -0.00000113, 0.00000000],
+        [-6.27296156, -0.00050421, 0.00030893, 0.00050677, -0.00000113, 0.00000000],
+        [-6.27296176, -0.00050413, 0.00030888, 0.00050668, -0.00000113, 0.00000000],
+        [-6.27296195, -0.00050405, 0.00030883, 0.00050660, -0.00000113, 0.00000000],
+        [-6.27296215, -0.00050397, 0.00030878, 0.00050652, -0.00000113, 0.00000000],
+        [-6.27296234, -0.00050388, 0.00030873, 0.00050644, -0.00000113, 0.00000000],
+        [-6.27296254, -0.00050380, 0.00030868, 0.00050635, -0.00000113, 0.00000000],
+        [-6.27296274, -0.00050372, 0.00030863, 0.00050627, -0.00000113, 0.00000000],
+        [-6.27296293, -0.00050364, 0.00030858, 0.00050619, -0.00000113, 0.00000000],
+        [-6.27296313, -0.00050356, 0.00030853, 0.00050611, -0.00000113, 0.00000000],
+        [-6.27296332, -0.00050347, 0.00030848, 0.00050602, -0.00000113, 0.00000000],
+        [-6.27296352, -0.00050339, 0.00030843, 0.00050594, -0.00000113, 0.00000000],
+        [-6.27296372, -0.00050331, 0.00030838, 0.00050586, -0.00000113, 0.00000000],
+        [-6.27296391, -0.00050323, 0.00030833, 0.00050578, -0.00000113, 0.00000000],
+        [-6.27296411, -0.00050315, 0.00030828, 0.00050569, -0.00000113, 0.00000000],
+        [-6.27296430, -0.00050306, 0.00030823, 0.00050561, -0.00000113, 0.00000000],
+        [-6.27296450, -0.00050298, 0.00030818, 0.00050553, -0.00000113, 0.00000000],
+        [-6.27296469, -0.00050290, 0.00030813, 0.00050545, -0.00000113, 0.00000000],
+        [-6.27296489, -0.00050282, 0.00030808, 0.00050537, -0.00000113, 0.00000000],
+        [-6.27296509, -0.00050274, 0.00030803, 0.00050528, -0.00000113, 0.00000000],
+        [-6.27296528, -0.00050266, 0.00030798, 0.00050520, -0.00000113, 0.00000000],
+        [-6.27296548, -0.00050257, 0.00030793, 0.00050512, -0.00000113, 0.00000000],
+        [-6.27296567, -0.00050249, 0.00030788, 0.00050504, -0.00000113, 0.00000000],
+        [-6.27296587, -0.00050241, 0.00030783, 0.00050496, -0.00000113, 0.00000000],
+        [-6.27296606, -0.00050233, 0.00030778, 0.00050487, -0.00000113, 0.00000000],
+        [-6.27296626, -0.00050225, 0.00030773, 0.00050479, -0.00000113, 0.00000000],
+        [-6.27296645, -0.00050217, 0.00030768, 0.00050471, -0.00000113, 0.00000000],
+        [-6.27296665, -0.00050209, 0.00030763, 0.00050463, -0.00000113, 0.00000000],
+        [-6.27296684, -0.00050200, 0.00030758, 0.00050455, -0.00000113, 0.00000000],
+        [-6.27296704, -0.00050192, 0.00030753, 0.00050446, -0.00000113, 0.00000000],
+        [-6.27296723, -0.00050184, 0.00030748, 0.00050438, -0.00000113, 0.00000000],
+        [-6.27296743, -0.00050176, 0.00030743, 0.00050430, -0.00000113, 0.00000000],
+        [-6.27296762, -0.00050168, 0.00030738, 0.00050422, -0.00000113, 0.00000000],
+        [-6.27296781, -0.00050160, 0.00030733, 0.00050414, -0.00000113, 0.00000000],
+        [-6.27296801, -0.00050152, 0.00030728, 0.00050406, -0.00000113, 0.00000000],
+        [-6.27296820, -0.00050143, 0.00030723, 0.00050397, -0.00000113, 0.00000000],
+        [-6.27296840, -0.00050135, 0.00030718, 0.00050389, -0.00000113, 0.00000000],
+        [-6.27296859, -0.00050127, 0.00030713, 0.00050381, -0.00000113, 0.00000000],
+        [-6.27296879, -0.00050119, 0.00030708, 0.00050373, -0.00000113, 0.00000000],
+        [-6.27296898, -0.00050111, 0.00030703, 0.00050365, -0.00000113, 0.00000000],
+        [-6.27296917, -0.00050103, 0.00030698, 0.00050357, -0.00000113, 0.00000000],
+        [-6.27296937, -0.00050095, 0.00030693, 0.00050348, -0.00000113, 0.00000000],
+        [-6.27296956, -0.00050087, 0.00030688, 0.00050340, -0.00000113, 0.00000000],
+        [-6.27296976, -0.00050079, 0.00030683, 0.00050332, -0.00000113, 0.00000000],
+        [-6.27296995, -0.00050070, 0.00030678, 0.00050324, -0.00000113, 0.00000000],
+        [-6.27297014, -0.00050062, 0.00030673, 0.00050316, -0.00000113, 0.00000000],
+        [-6.27297034, -0.00050054, 0.00030668, 0.00050308, -0.00000113, 0.00000000],
+        [-6.27297053, -0.00050046, 0.00030663, 0.00050300, -0.00000113, 0.00000000],
+        [-6.27297073, -0.00050038, 0.00030658, 0.00050291, -0.00000113, 0.00000000],
+        [-6.27297092, -0.00050030, 0.00030653, 0.00050283, -0.00000113, 0.00000000],
+        [-6.27297111, -0.00050022, 0.00030648, 0.00050275, -0.00000113, 0.00000000],
+        [-6.27297131, -0.00050014, 0.00030643, 0.00050267, -0.00000113, 0.00000000],
+        [-6.27297150, -0.00050006, 0.00030638, 0.00050259, -0.00000113, 0.00000000],
+        [-6.27297169, -0.00049998, 0.00030633, 0.00050251, -0.00000113, 0.00000000],
+        [-6.27297189, -0.00049990, 0.00030629, 0.00050243, -0.00000113, 0.00000000],
+        [-6.27297208, -0.00049982, 0.00030624, 0.00050235, -0.00000113, 0.00000000],
+        [-6.27297227, -0.00049973, 0.00030619, 0.00050227, -0.00000113, 0.00000000],
+        [-6.27297246, -0.00049965, 0.00030614, 0.00050218, -0.00000113, 0.00000000],
+        [-6.27297266, -0.00049957, 0.00030609, 0.00050210, -0.00000113, 0.00000000],
+        [-6.27297285, -0.00049949, 0.00030604, 0.00050202, -0.00000113, 0.00000000],
+        [-6.27297304, -0.00049941, 0.00030599, 0.00050194, -0.00000113, 0.00000000],
+        [-6.27297324, -0.00049933, 0.00030594, 0.00050186, -0.00000113, 0.00000000],
+        [-6.27297343, -0.00049925, 0.00030589, 0.00050178, -0.00000113, 0.00000000],
+        [-6.27297362, -0.00049917, 0.00030584, 0.00050170, -0.00000113, 0.00000000],
+        [-6.27297381, -0.00049909, 0.00030579, 0.00050162, -0.00000113, 0.00000000],
+        [-6.27297401, -0.00049901, 0.00030574, 0.00050154, -0.00000113, 0.00000000],
+        [-6.27297420, -0.00049893, 0.00030569, 0.00050146, -0.00000113, 0.00000000],
+        [-6.27297439, -0.00049885, 0.00030564, 0.00050137, -0.00000113, 0.00000000],
+        [-6.27297458, -0.00049877, 0.00030559, 0.00050129, -0.00000113, 0.00000000],
+        [-6.27297478, -0.00049869, 0.00030554, 0.00050121, -0.00000113, 0.00000000],
+        [-6.27297497, -0.00049861, 0.00030550, 0.00050113, -0.00000113, 0.00000000],
+        [-6.27297516, -0.00049853, 0.00030545, 0.00050105, -0.00000113, 0.00000000],
+        [-6.27297535, -0.00049845, 0.00030540, 0.00050097, -0.00000113, 0.00000000],
+        [-6.27297554, -0.00049837, 0.00030535, 0.00050089, -0.00000113, 0.00000000],
+        [-6.27297574, -0.00049829, 0.00030530, 0.00050081, -0.00000113, 0.00000000],
+        [-6.27297593, -0.00049821, 0.00030525, 0.00050073, -0.00000113, 0.00000000],
+        [-6.27297612, -0.00049813, 0.00030520, 0.00050065, -0.00000113, 0.00000000],
+        [-6.27297631, -0.00049805, 0.00030515, 0.00050057, -0.00000113, 0.00000000],
+        [-6.27297650, -0.00049797, 0.00030510, 0.00050049, -0.00000113, 0.00000000],
+        [-6.27297670, -0.00049789, 0.00030505, 0.00050041, -0.00000113, 0.00000000],
+        [-6.27297689, -0.00049781, 0.00030500, 0.00050033, -0.00000113, 0.00000000],
+        [-6.27297708, -0.00049773, 0.00030495, 0.00050025, -0.00000113, 0.00000000],
+        [-6.27297727, -0.00049765, 0.00030491, 0.00050017, -0.00000113, 0.00000000],
+        [-6.27297746, -0.00049757, 0.00030486, 0.00050009, -0.00000113, 0.00000000],
+        [-6.27297765, -0.00049749, 0.00030481, 0.00050000, -0.00000113, 0.00000000],
+        [-6.27297784, -0.00049741, 0.00030476, 0.00049992, -0.00000113, 0.00000000],
+        [-6.27297804, -0.00049733, 0.00030471, 0.00049984, -0.00000113, 0.00000000],
+        [-6.27297823, -0.00049725, 0.00030466, 0.00049976, -0.00000113, 0.00000000],
+        [-6.27297842, -0.00049717, 0.00030461, 0.00049968, -0.00000113, 0.00000000],
+        [-6.27297861, -0.00049709, 0.00030456, 0.00049960, -0.00000113, 0.00000000],
+        [-6.27297880, -0.00049701, 0.00030451, 0.00049952, -0.00000113, 0.00000000],
+        [-6.27297899, -0.00049693, 0.00030446, 0.00049944, -0.00000113, 0.00000000],
+        [-6.27297918, -0.00049685, 0.00030442, 0.00049936, -0.00000113, 0.00000000],
+        [-6.27297937, -0.00049677, 0.00030437, 0.00049928, -0.00000113, 0.00000000],
+        [-6.27297956, -0.00049669, 0.00030432, 0.00049920, -0.00000113, 0.00000000],
+        [-6.27297975, -0.00049661, 0.00030427, 0.00049912, -0.00000113, 0.00000000],
+        [-6.27297994, -0.00049653, 0.00030422, 0.00049904, -0.00000113, 0.00000000],
+        [-6.27298013, -0.00049645, 0.00030417, 0.00049896, -0.00000113, 0.00000000],
+        [-6.27298033, -0.00049637, 0.00030412, 0.00049888, -0.00000114, 0.00000000],
+        [-6.27298052, -0.00049629, 0.00030407, 0.00049880, -0.00000114, 0.00000000],
+        [-6.27298071, -0.00049621, 0.00030403, 0.00049872, -0.00000114, 0.00000000],
+        [-6.27298090, -0.00049613, 0.00030398, 0.00049864, -0.00000114, 0.00000000],
+        [-6.27298109, -0.00049605, 0.00030393, 0.00049856, -0.00000114, 0.00000000],
+        [-6.27298128, -0.00049597, 0.00030388, 0.00049848, -0.00000114, 0.00000000],
+        [-6.27298147, -0.00049589, 0.00030383, 0.00049840, -0.00000114, 0.00000000],
+        [-6.27298166, -0.00049581, 0.00030378, 0.00049832, -0.00000114, 0.00000000],
+        [-6.27298185, -0.00049573, 0.00030373, 0.00049824, -0.00000114, 0.00000000],
+        [-6.27298204, -0.00049565, 0.00030368, 0.00049816, -0.00000114, 0.00000000],
+        [-6.27298223, -0.00049557, 0.00030364, 0.00049808, -0.00000114, 0.00000000],
+        [-6.27298242, -0.00049550, 0.00030359, 0.00049800, -0.00000114, 0.00000000],
+        [-6.27298261, -0.00049542, 0.00030354, 0.00049792, -0.00000114, 0.00000000],
+        [-6.27298280, -0.00049534, 0.00030349, 0.00049784, -0.00000114, 0.00000000],
+        [-6.27298299, -0.00049526, 0.00030344, 0.00049776, -0.00000114, 0.00000000],
+        [-6.27298318, -0.00049518, 0.00030339, 0.00049769, -0.00000114, 0.00000000],
+        [-6.27298336, -0.00049510, 0.00030334, 0.00049761, -0.00000114, 0.00000000],
+        [-6.27298355, -0.00049502, 0.00030330, 0.00049753, -0.00000114, 0.00000000],
+        [-6.27298374, -0.00049494, 0.00030325, 0.00049745, -0.00000114, 0.00000000],
+        [-6.27298393, -0.00049486, 0.00030320, 0.00049737, -0.00000114, 0.00000000],
+        [-6.27298412, -0.00049478, 0.00030315, 0.00049729, -0.00000114, 0.00000000],
+        [-6.27298431, -0.00049470, 0.00030310, 0.00049721, -0.00000114, 0.00000000],
+        [-6.27298450, -0.00049462, 0.00030305, 0.00049713, -0.00000114, 0.00000000],
+        [-6.27298469, -0.00049455, 0.00030300, 0.00049705, -0.00000114, 0.00000000],
+        [-6.27298488, -0.00049447, 0.00030296, 0.00049697, -0.00000114, 0.00000000],
+        [-6.27298507, -0.00049439, 0.00030291, 0.00049689, -0.00000114, 0.00000000],
+        [-6.27298526, -0.00049431, 0.00030286, 0.00049681, -0.00000114, 0.00000000],
+        [-6.27298545, -0.00049423, 0.00030281, 0.00049673, -0.00000114, 0.00000000],
+        [-6.27298563, -0.00049415, 0.00030276, 0.00049665, -0.00000114, 0.00000000],
+        [-6.27298582, -0.00049407, 0.00030271, 0.00049657, -0.00000114, 0.00000000],
+        [-6.27298601, -0.00049399, 0.00030267, 0.00049649, -0.00000114, 0.00000000],
+        [-6.27298620, -0.00049391, 0.00030262, 0.00049641, -0.00000114, 0.00000000],
+        [-6.27298639, -0.00049384, 0.00030257, 0.00049634, -0.00000114, 0.00000000],
+        [-6.27298658, -0.00049376, 0.00030252, 0.00049626, -0.00000114, 0.00000000],
+        [-6.27298677, -0.00049368, 0.00030247, 0.00049618, -0.00000114, 0.00000000],
+        [-6.27298695, -0.00049360, 0.00030242, 0.00049610, -0.00000114, 0.00000000],
+        [-6.27298714, -0.00049352, 0.00030238, 0.00049602, -0.00000114, 0.00000000],
+        [-6.27298733, -0.00049344, 0.00030233, 0.00049594, -0.00000114, 0.00000000],
+        [-6.27298752, -0.00049336, 0.00030228, 0.00049586, -0.00000114, 0.00000000],
+        [-6.27298771, -0.00049328, 0.00030223, 0.00049578, -0.00000114, 0.00000000],
+        [-6.27298790, -0.00049321, 0.00030218, 0.00049570, -0.00000114, 0.00000000],
+        [-6.27298808, -0.00049313, 0.00030214, 0.00049562, -0.00000114, 0.00000000],
+        [-6.27298827, -0.00049305, 0.00030209, 0.00049554, -0.00000114, 0.00000000],
+        [-6.27298846, -0.00049297, 0.00030204, 0.00049547, -0.00000114, 0.00000000],
+        [-6.27298865, -0.00049289, 0.00030199, 0.00049539, -0.00000114, 0.00000000],
+        [-6.27298883, -0.00049281, 0.00030194, 0.00049531, -0.00000114, 0.00000000],
+        [-6.27298902, -0.00049273, 0.00030189, 0.00049523, -0.00000114, 0.00000000],
+        [-6.27298921, -0.00049266, 0.00030185, 0.00049515, -0.00000114, 0.00000000],
+        [-6.27298940, -0.00049258, 0.00030180, 0.00049507, -0.00000114, 0.00000000],
+        [-6.27298959, -0.00049250, 0.00030175, 0.00049499, -0.00000114, 0.00000000],
+        [-6.27298977, -0.00049242, 0.00030170, 0.00049491, -0.00000114, 0.00000000],
+        [-6.27298996, -0.00049234, 0.00030165, 0.00049484, -0.00000114, 0.00000000],
+        [-6.27299015, -0.00049226, 0.00030161, 0.00049476, -0.00000114, 0.00000000],
+        [-6.27299033, -0.00049219, 0.00030156, 0.00049468, -0.00000114, 0.00000000],
+        [-6.27299052, -0.00049211, 0.00030151, 0.00049460, -0.00000114, 0.00000000],
+        [-6.27299071, -0.00049203, 0.00030146, 0.00049452, -0.00000114, 0.00000000],
+        [-6.27299090, -0.00049195, 0.00030141, 0.00049444, -0.00000114, 0.00000000],
+        [-6.27299108, -0.00049187, 0.00030137, 0.00049436, -0.00000114, 0.00000000],
+        [-6.27299127, -0.00049180, 0.00030132, 0.00049428, -0.00000114, 0.00000000],
+        [-6.27299146, -0.00049172, 0.00030127, 0.00049421, -0.00000114, 0.00000000],
+        [-6.27299164, -0.00049164, 0.00030122, 0.00049413, -0.00000114, 0.00000000],
+        [-6.27299183, -0.00049156, 0.00030118, 0.00049405, -0.00000114, 0.00000000],
+        [-6.27299202, -0.00049148, 0.00030113, 0.00049397, -0.00000114, 0.00000000],
+        [-6.27299220, -0.00049140, 0.00030108, 0.00049389, -0.00000114, 0.00000000],
+        [-6.27299239, -0.00049133, 0.00030103, 0.00049381, -0.00000114, 0.00000000],
+        [-6.27299258, -0.00049125, 0.00030098, 0.00049374, -0.00000114, 0.00000000],
+        [-6.27299276, -0.00049117, 0.00030094, 0.00049366, -0.00000114, 0.00000000],
+        [-6.27299295, -0.00049109, 0.00030089, 0.00049358, -0.00000114, 0.00000000],
+        [-6.27299314, -0.00049102, 0.00030084, 0.00049350, -0.00000114, 0.00000000],
+        [-6.27299332, -0.00049094, 0.00030079, 0.00049342, -0.00000114, 0.00000000],
+        [-6.27299351, -0.00049086, 0.00030075, 0.00049334, -0.00000114, 0.00000000],
+        [-6.27299370, -0.00049078, 0.00030070, 0.00049327, -0.00000114, 0.00000000],
+        [-6.27299388, -0.00049070, 0.00030065, 0.00049319, -0.00000114, 0.00000000],
+        [-6.27299407, -0.00049063, 0.00030060, 0.00049311, -0.00000114, 0.00000000],
+        [-6.27299425, -0.00049055, 0.00030055, 0.00049303, -0.00000114, 0.00000000],
+        [-6.27299444, -0.00049047, 0.00030051, 0.00049295, -0.00000114, 0.00000000],
+        [-6.27299463, -0.00049039, 0.00030046, 0.00049288, -0.00000114, 0.00000000],
+        [-6.27299481, -0.00049032, 0.00030041, 0.00049280, -0.00000114, 0.00000000],
+        [-6.27299500, -0.00049024, 0.00030036, 0.00049272, -0.00000114, 0.00000000],
+        [-6.27299518, -0.00049016, 0.00030032, 0.00049264, -0.00000114, 0.00000000],
+        [-6.27299537, -0.00049008, 0.00030027, 0.00049256, -0.00000114, 0.00000000],
+        [-6.27299556, -0.00049000, 0.00030022, 0.00049249, -0.00000114, 0.00000000],
+        [-6.27299574, -0.00048993, 0.00030017, 0.00049241, -0.00000114, 0.00000000],
+        [-6.27299593, -0.00048985, 0.00030013, 0.00049233, -0.00000114, 0.00000000],
+        [-6.27299611, -0.00048977, 0.00030008, 0.00049225, -0.00000114, 0.00000000],
+        [-6.27299630, -0.00048969, 0.00030003, 0.00049217, -0.00000114, 0.00000000],
+        [-6.27299648, -0.00048962, 0.00029998, 0.00049210, -0.00000114, 0.00000000],
+        [-6.27299667, -0.00048954, 0.00029994, 0.00049202, -0.00000114, 0.00000000],
+        [-6.27299685, -0.00048946, 0.00029989, 0.00049194, -0.00000114, 0.00000000],
+        [-6.27299704, -0.00048938, 0.00029984, 0.00049186, -0.00000114, 0.00000000],
+        [-6.27299722, -0.00048931, 0.00029979, 0.00049178, -0.00000114, 0.00000000],
+        [-6.27299741, -0.00048923, 0.00029975, 0.00049171, -0.00000114, 0.00000000],
+        [-6.27299759, -0.00048915, 0.00029970, 0.00049163, -0.00000114, 0.00000000],
+        [-6.27299778, -0.00048908, 0.00029965, 0.00049155, -0.00000114, 0.00000000],
+        [-6.27299796, -0.00048900, 0.00029960, 0.00049147, -0.00000114, 0.00000000],
+        [-6.27299815, -0.00048892, 0.00029956, 0.00049140, -0.00000114, 0.00000000],
+        [-6.27299833, -0.00048884, 0.00029951, 0.00049132, -0.00000114, 0.00000000],
+        [-6.27299852, -0.00048877, 0.00029946, 0.00049124, -0.00000114, 0.00000000],
+        [-6.27299870, -0.00048869, 0.00029941, 0.00049116, -0.00000114, 0.00000000],
+        [-6.27299889, -0.00048861, 0.00029937, 0.00049109, -0.00000114, 0.00000000],
+        [-6.27299907, -0.00048854, 0.00029932, 0.00049101, -0.00000114, 0.00000000],
+        [-6.27299926, -0.00048846, 0.00029927, 0.00049093, -0.00000114, 0.00000000],
+        [-6.27299944, -0.00048838, 0.00029923, 0.00049085, -0.00000114, 0.00000000],
+        [-6.27299962, -0.00048830, 0.00029918, 0.00049078, -0.00000114, 0.00000000],
+        [-6.27299981, -0.00048823, 0.00029913, 0.00049070, -0.00000114, 0.00000000],
+        [-6.27299999, -0.00048815, 0.00029908, 0.00049062, -0.00000114, 0.00000000],
+        [-6.27300018, -0.00048807, 0.00029904, 0.00049054, -0.00000114, 0.00000000],
+        [-6.27300036, -0.00048800, 0.00029899, 0.00049047, -0.00000114, 0.00000000],
+        [-6.27300055, -0.00048792, 0.00029894, 0.00049039, -0.00000114, 0.00000000],
+        [-6.27300073, -0.00048784, 0.00029890, 0.00049031, -0.00000114, 0.00000000],
+        [-6.27300091, -0.00048777, 0.00029885, 0.00049023, -0.00000114, 0.00000000],
+        [-6.27300110, -0.00048769, 0.00029880, 0.00049016, -0.00000114, 0.00000000],
+        [-6.27300128, -0.00048761, 0.00029875, 0.00049008, -0.00000114, 0.00000000],
+        [-6.27300146, -0.00048754, 0.00029871, 0.00049000, -0.00000114, 0.00000000],
+        [-6.27300165, -0.00048746, 0.00029866, 0.00048993, -0.00000114, 0.00000000],
+        [-6.27300183, -0.00048738, 0.00029861, 0.00048985, -0.00000114, 0.00000000],
+        [-6.27300202, -0.00048730, 0.00029857, 0.00048977, -0.00000114, 0.00000000],
+        [-6.27300220, -0.00048723, 0.00029852, 0.00048969, -0.00000114, 0.00000000],
+        [-6.27300238, -0.00048715, 0.00029847, 0.00048962, -0.00000114, 0.00000000],
+        [-6.27300257, -0.00048707, 0.00029842, 0.00048954, -0.00000114, 0.00000000],
+        [-6.27300275, -0.00048700, 0.00029838, 0.00048946, -0.00000114, 0.00000000],
+        [-6.27300293, -0.00048692, 0.00029833, 0.00048939, -0.00000114, 0.00000000],
+        [-6.27300312, -0.00048685, 0.00029828, 0.00048931, -0.00000114, 0.00000000],
+        [-6.27300330, -0.00048677, 0.00029824, 0.00048923, -0.00000114, 0.00000000],
+        [-6.27300348, -0.00048669, 0.00029819, 0.00048916, -0.00000114, 0.00000000],
+        [-6.27300367, -0.00048662, 0.00029814, 0.00048908, -0.00000114, 0.00000000],
+        [-6.27300385, -0.00048654, 0.00029810, 0.00048900, -0.00000114, 0.00000000],
+        [-6.27300403, -0.00048646, 0.00029805, 0.00048892, -0.00000114, 0.00000000],
+        [-6.27300421, -0.00048639, 0.00029800, 0.00048885, -0.00000114, 0.00000000],
+        [-6.27300440, -0.00048631, 0.00029796, 0.00048877, -0.00000114, 0.00000000],
+        [-6.27300458, -0.00048623, 0.00029791, 0.00048869, -0.00000114, 0.00000000],
+        [-6.27300476, -0.00048616, 0.00029786, 0.00048862, -0.00000114, 0.00000000],
+        [-6.27300495, -0.00048608, 0.00029782, 0.00048854, -0.00000114, 0.00000000],
+        [-6.27300513, -0.00048600, 0.00029777, 0.00048846, -0.00000114, 0.00000000],
+        [-6.27300531, -0.00048593, 0.00029772, 0.00048839, -0.00000114, 0.00000000],
+        [-6.27300549, -0.00048585, 0.00029768, 0.00048831, -0.00000114, 0.00000000],
+        [-6.27300568, -0.00048578, 0.00029763, 0.00048823, -0.00000114, 0.00000000],
+        [-6.27300586, -0.00048570, 0.00029758, 0.00048816, -0.00000114, 0.00000000],
+        [-6.27300604, -0.00048562, 0.00029753, 0.00048808, -0.00000114, 0.00000000],
+        [-6.27300622, -0.00048555, 0.00029749, 0.00048800, -0.00000114, 0.00000000],
+        [-6.27300640, -0.00048547, 0.00029744, 0.00048793, -0.00000114, 0.00000000],
+        [-6.27300659, -0.00048539, 0.00029739, 0.00048785, -0.00000114, 0.00000000],
+        [-6.27300677, -0.00048532, 0.00029735, 0.00048777, -0.00000114, 0.00000000],
+        [-6.27300695, -0.00048524, 0.00029730, 0.00048770, -0.00000114, 0.00000000],
+        [-6.27300713, -0.00048517, 0.00029725, 0.00048762, -0.00000114, 0.00000000],
+        [-6.27300732, -0.00048509, 0.00029721, 0.00048755, -0.00000114, 0.00000000],
+        [-6.27300750, -0.00048501, 0.00029716, 0.00048747, -0.00000114, 0.00000000],
+        [-6.27300768, -0.00048494, 0.00029712, 0.00048739, -0.00000114, 0.00000000],
+        [-6.27300786, -0.00048486, 0.00029707, 0.00048732, -0.00000114, 0.00000000],
+        [-6.27300804, -0.00048479, 0.00029702, 0.00048724, -0.00000114, 0.00000000],
+        [-6.27300822, -0.00048471, 0.00029698, 0.00048716, -0.00000114, 0.00000000],
+        [-6.27300841, -0.00048463, 0.00029693, 0.00048709, -0.00000114, 0.00000000],
+        [-6.27300859, -0.00048456, 0.00029688, 0.00048701, -0.00000114, 0.00000000],
+        [-6.27300877, -0.00048448, 0.00029684, 0.00048693, -0.00000114, 0.00000000],
+        [-6.27300895, -0.00048441, 0.00029679, 0.00048686, -0.00000114, 0.00000000],
+        [-6.27300913, -0.00048433, 0.00029674, 0.00048678, -0.00000114, 0.00000000],
+        [-6.27300931, -0.00048426, 0.00029670, 0.00048671, -0.00000114, 0.00000000],
+        [-6.27300949, -0.00048418, 0.00029665, 0.00048663, -0.00000114, 0.00000000],
+        [-6.27300968, -0.00048410, 0.00029660, 0.00048655, -0.00000114, 0.00000000],
+        [-6.27300986, -0.00048403, 0.00029656, 0.00048648, -0.00000114, 0.00000000],
+        [-6.27301004, -0.00048395, 0.00029651, 0.00048640, -0.00000114, 0.00000000],
+        [-6.27301022, -0.00048388, 0.00029646, 0.00048633, -0.00000114, 0.00000000],
+        [-6.27301040, -0.00048380, 0.00029642, 0.00048625, -0.00000114, 0.00000000],
+        [-6.27301058, -0.00048373, 0.00029637, 0.00048617, -0.00000114, 0.00000000],
+        [-6.27301076, -0.00048365, 0.00029633, 0.00048610, -0.00000114, 0.00000000],
+        [-6.27301094, -0.00048357, 0.00029628, 0.00048602, -0.00000114, 0.00000000],
+        [-6.27301112, -0.00048350, 0.00029623, 0.00048595, -0.00000114, 0.00000000],
+        [-6.27301130, -0.00048342, 0.00029619, 0.00048587, -0.00000114, 0.00000000],
+        [-6.27301148, -0.00048335, 0.00029614, 0.00048579, -0.00000114, 0.00000000],
+        [-6.27301166, -0.00048327, 0.00029609, 0.00048572, -0.00000114, 0.00000000],
+        [-6.27301185, -0.00048320, 0.00029605, 0.00048564, -0.00000114, 0.00000000],
+        [-6.27301203, -0.00048312, 0.00029600, 0.00048557, -0.00000114, 0.00000000],
+        [-6.27301221, -0.00048305, 0.00029596, 0.00048549, -0.00000114, 0.00000000],
+        [-6.27301239, -0.00048297, 0.00029591, 0.00048542, -0.00000114, 0.00000000],
+        [-6.27301257, -0.00048290, 0.00029586, 0.00048534, -0.00000114, 0.00000000],
+        [-6.27301275, -0.00048282, 0.00029582, 0.00048526, -0.00000114, 0.00000000],
+        [-6.27301293, -0.00048275, 0.00029577, 0.00048519, -0.00000114, 0.00000000],
+        [-6.27301311, -0.00048267, 0.00029572, 0.00048511, -0.00000114, 0.00000000],
+        [-6.27301329, -0.00048259, 0.00029568, 0.00048504, -0.00000114, 0.00000000],
+        [-6.27301347, -0.00048252, 0.00029563, 0.00048496, -0.00000114, 0.00000000],
+        [-6.27301365, -0.00048244, 0.00029559, 0.00048489, -0.00000114, 0.00000000],
+        [-6.27301383, -0.00048237, 0.00029554, 0.00048481, -0.00000114, 0.00000000],
+        [-6.27301401, -0.00048229, 0.00029549, 0.00048473, -0.00000114, 0.00000000],
+        [-6.27301419, -0.00048222, 0.00029545, 0.00048466, -0.00000114, 0.00000000],
+        [-6.27301437, -0.00048214, 0.00029540, 0.00048458, -0.00000114, 0.00000000],
+        [-6.27301455, -0.00048207, 0.00029536, 0.00048451, -0.00000114, 0.00000000],
+        [-6.27301473, -0.00048199, 0.00029531, 0.00048443, -0.00000114, 0.00000000],
+        [-6.27301491, -0.00048192, 0.00029526, 0.00048436, -0.00000114, 0.00000000],
+        [-6.27301509, -0.00048184, 0.00029522, 0.00048428, -0.00000114, 0.00000000],
+        [-6.27301526, -0.00048177, 0.00029517, 0.00048421, -0.00000114, 0.00000000],
+        [-6.27301544, -0.00048169, 0.00029513, 0.00048413, -0.00000114, 0.00000000],
+        [-6.27301562, -0.00048162, 0.00029508, 0.00048406, -0.00000114, 0.00000000],
+        [-6.27301580, -0.00048154, 0.00029503, 0.00048398, -0.00000114, 0.00000000],
+        [-6.27301598, -0.00048147, 0.00029499, 0.00048390, -0.00000114, 0.00000000],
+        [-6.27301616, -0.00048139, 0.00029494, 0.00048383, -0.00000114, 0.00000000],
+        [-6.27301634, -0.00048132, 0.00029490, 0.00048375, -0.00000114, 0.00000000],
+        [-6.27301652, -0.00048124, 0.00029485, 0.00048368, -0.00000114, 0.00000000],
+        [-6.27301670, -0.00048117, 0.00029480, 0.00048360, -0.00000114, 0.00000000],
+        [-6.27301688, -0.00048109, 0.00029476, 0.00048353, -0.00000114, 0.00000000],
+        [-6.27301706, -0.00048102, 0.00029471, 0.00048345, -0.00000114, 0.00000000],
+        [-6.27301724, -0.00048095, 0.00029467, 0.00048338, -0.00000114, 0.00000000],
+        [-6.27301741, -0.00048087, 0.00029462, 0.00048330, -0.00000114, 0.00000000],
+        [-6.27301759, -0.00048080, 0.00029458, 0.00048323, -0.00000114, 0.00000000],
+        [-6.27301777, -0.00048072, 0.00029453, 0.00048315, -0.00000114, 0.00000000],
+        [-6.27301795, -0.00048065, 0.00029448, 0.00048308, -0.00000114, 0.00000000],
+        [-6.27301813, -0.00048057, 0.00029444, 0.00048300, -0.00000114, 0.00000000],
+        [-6.27301831, -0.00048050, 0.00029439, 0.00048293, -0.00000114, 0.00000000],
+        [-6.27301849, -0.00048042, 0.00029435, 0.00048285, -0.00000114, 0.00000000],
+        [-6.27301866, -0.00048035, 0.00029430, 0.00048278, -0.00000114, 0.00000000],
+        [-6.27301884, -0.00048027, 0.00029426, 0.00048270, -0.00000114, 0.00000000],
+        [-6.27301902, -0.00048020, 0.00029421, 0.00048263, -0.00000114, 0.00000000],
+        [-6.27301920, -0.00048012, 0.00029416, 0.00048255, -0.00000114, 0.00000000],
+        [-6.27301938, -0.00048005, 0.00029412, 0.00048248, -0.00000114, 0.00000000],
+        [-6.27301956, -0.00047998, 0.00029407, 0.00048240, -0.00000114, 0.00000000],
+        [-6.27301973, -0.00047990, 0.00029403, 0.00048233, -0.00000114, 0.00000000],
+        [-6.27301991, -0.00047983, 0.00029398, 0.00048225, -0.00000114, 0.00000000],
+        [-6.27302009, -0.00047975, 0.00029394, 0.00048218, -0.00000114, 0.00000000],
+        [-6.27302027, -0.00047968, 0.00029389, 0.00048211, -0.00000114, 0.00000000],
+        [-6.27302044, -0.00047960, 0.00029384, 0.00048203, -0.00000114, 0.00000000],
+        [-6.27302062, -0.00047953, 0.00029380, 0.00048196, -0.00000114, 0.00000000],
+        [-6.27302080, -0.00047946, 0.00029375, 0.00048188, -0.00000114, 0.00000000],
+        [-6.27302098, -0.00047938, 0.00029371, 0.00048181, -0.00000114, 0.00000000],
+        [-6.27302116, -0.00047931, 0.00029366, 0.00048173, -0.00000114, 0.00000000],
+        [-6.27302133, -0.00047923, 0.00029362, 0.00048166, -0.00000114, 0.00000000],
+        [-6.27302151, -0.00047916, 0.00029357, 0.00048158, -0.00000114, 0.00000000],
+        [-6.27302169, -0.00047908, 0.00029353, 0.00048151, -0.00000114, 0.00000000],
+        [-6.27302187, -0.00047901, 0.00029348, 0.00048143, -0.00000114, 0.00000000],
+        [-6.27302204, -0.00047894, 0.00029344, 0.00048136, -0.00000114, 0.00000000],
+        [-6.27302222, -0.00047886, 0.00029339, 0.00048128, -0.00000114, 0.00000000],
+        [-6.27302240, -0.00047879, 0.00029334, 0.00048121, -0.00000114, 0.00000000],
+        [-6.27302257, -0.00047871, 0.00029330, 0.00048114, -0.00000114, 0.00000000],
+        [-6.27302275, -0.00047864, 0.00029325, 0.00048106, -0.00000114, 0.00000000],
+        [-6.27302293, -0.00047857, 0.00029321, 0.00048099, -0.00000114, 0.00000000],
+        [-6.27302311, -0.00047849, 0.00029316, 0.00048091, -0.00000114, 0.00000000],
+        [-6.27302328, -0.00047842, 0.00029312, 0.00048084, -0.00000114, 0.00000000],
+        [-6.27302346, -0.00047834, 0.00029307, 0.00048076, -0.00000114, 0.00000000],
+        [-6.27302364, -0.00047827, 0.00029303, 0.00048069, -0.00000114, 0.00000000],
+        [-6.27302381, -0.00047820, 0.00029298, 0.00048062, -0.00000114, 0.00000000],
+        [-6.27302399, -0.00047812, 0.00029294, 0.00048054, -0.00000114, 0.00000000],
+        [-6.27302417, -0.00047805, 0.00029289, 0.00048047, -0.00000114, 0.00000000],
+        [-6.27302434, -0.00047797, 0.00029285, 0.00048039, -0.00000114, 0.00000000],
+        [-6.27302452, -0.00047790, 0.00029280, 0.00048032, -0.00000114, 0.00000000],
+        [-6.27302470, -0.00047783, 0.00029276, 0.00048024, -0.00000114, 0.00000000],
+        [-6.27302487, -0.00047775, 0.00029271, 0.00048017, -0.00000114, 0.00000000],
+        [-6.27302505, -0.00047768, 0.00029267, 0.00048010, -0.00000114, 0.00000000],
+        [-6.27302523, -0.00047761, 0.00029262, 0.00048002, -0.00000114, 0.00000000],
+        [-6.27302540, -0.00047753, 0.00029257, 0.00047995, -0.00000114, 0.00000000],
+        [-6.27302558, -0.00047746, 0.00029253, 0.00047987, -0.00000114, 0.00000000],
+        [-6.27302575, -0.00047739, 0.00029248, 0.00047980, -0.00000114, 0.00000000],
+        [-6.27302593, -0.00047731, 0.00029244, 0.00047973, -0.00000114, 0.00000000],
+        [-6.27302611, -0.00047724, 0.00029239, 0.00047965, -0.00000114, 0.00000000],
+        [-6.27302628, -0.00047716, 0.00029235, 0.00047958, -0.00000114, 0.00000000],
+        [-6.27302646, -0.00047709, 0.00029230, 0.00047950, -0.00000114, 0.00000000],
+        [-6.27302664, -0.00047702, 0.00029226, 0.00047943, -0.00000114, 0.00000000],
+        [-6.27302681, -0.00047694, 0.00029221, 0.00047936, -0.00000114, 0.00000000],
+        [-6.27302699, -0.00047687, 0.00029217, 0.00047928, -0.00000114, 0.00000000],
+        [-6.27302716, -0.00047680, 0.00029212, 0.00047921, -0.00000114, 0.00000000],
+        [-6.27302734, -0.00047672, 0.00029208, 0.00047913, -0.00000114, 0.00000000],
+        [-6.27302751, -0.00047665, 0.00029203, 0.00047906, -0.00000114, 0.00000000],
+        [-6.27302769, -0.00047658, 0.00029199, 0.00047899, -0.00000114, 0.00000000],
+        [-6.27302787, -0.00047650, 0.00029194, 0.00047891, -0.00000114, 0.00000000],
+        [-6.27302804, -0.00047643, 0.00029190, 0.00047884, -0.00000114, 0.00000000],
+        [-6.27302822, -0.00047636, 0.00029185, 0.00047877, -0.00000114, 0.00000000],
+        [-6.27302839, -0.00047628, 0.00029181, 0.00047869, -0.00000114, 0.00000000],
+        [-6.27302857, -0.00047621, 0.00029176, 0.00047862, -0.00000114, 0.00000000],
+        [-6.27302874, -0.00047614, 0.00029172, 0.00047855, -0.00000114, 0.00000000],
+        [-6.27302892, -0.00047606, 0.00029167, 0.00047847, -0.00000114, 0.00000000],
+        [-6.27302909, -0.00047599, 0.00029163, 0.00047840, -0.00000114, 0.00000000],
+        [-6.27302927, -0.00047592, 0.00029158, 0.00047832, -0.00000114, 0.00000000],
+        [-6.27302944, -0.00047584, 0.00029154, 0.00047825, -0.00000114, 0.00000000],
+        [-6.27302962, -0.00047577, 0.00029150, 0.00047818, -0.00000114, 0.00000000],
+        [-6.27302979, -0.00047570, 0.00029145, 0.00047810, -0.00000114, 0.00000000],
+        [-6.27302997, -0.00047562, 0.00029141, 0.00047803, -0.00000114, 0.00000000],
+        [-6.27303014, -0.00047555, 0.00029136, 0.00047796, -0.00000114, 0.00000000],
+        [-6.27303032, -0.00047548, 0.00029132, 0.00047788, -0.00000114, 0.00000000],
+        [-6.27303049, -0.00047541, 0.00029127, 0.00047781, -0.00000114, 0.00000000],
+        [-6.27303067, -0.00047533, 0.00029123, 0.00047774, -0.00000114, 0.00000000],
+        [-6.27303084, -0.00047526, 0.00029118, 0.00047766, -0.00000114, 0.00000000],
+        [-6.27303102, -0.00047519, 0.00029114, 0.00047759, -0.00000114, 0.00000000],
+        [-6.27303119, -0.00047511, 0.00029109, 0.00047752, -0.00000114, 0.00000000],
+        [-6.27303137, -0.00047504, 0.00029105, 0.00047744, -0.00000114, 0.00000000],
+        [-6.27303154, -0.00047497, 0.00029100, 0.00047737, -0.00000114, 0.00000000],
+        [-6.27303171, -0.00047490, 0.00029096, 0.00047730, -0.00000114, 0.00000000],
+        [-6.27303189, -0.00047482, 0.00029091, 0.00047722, -0.00000114, 0.00000000],
+        [-6.27303206, -0.00047475, 0.00029087, 0.00047715, -0.00000114, 0.00000000],
+        [-6.27303224, -0.00047468, 0.00029082, 0.00047708, -0.00000114, 0.00000000],
+        [-6.27303241, -0.00047460, 0.00029078, 0.00047700, -0.00000114, 0.00000000],
+        [-6.27303259, -0.00047453, 0.00029073, 0.00047693, -0.00000114, 0.00000000],
+        [-6.27303276, -0.00047446, 0.00029069, 0.00047686, -0.00000114, 0.00000000],
+        [-6.27303293, -0.00047439, 0.00029065, 0.00047678, -0.00000114, 0.00000000],
+        [-6.27303311, -0.00047431, 0.00029060, 0.00047671, -0.00000114, 0.00000000],
+        [-6.27303328, -0.00047424, 0.00029056, 0.00047664, -0.00000114, 0.00000000],
+        [-6.27303345, -0.00047417, 0.00029051, 0.00047657, -0.00000114, 0.00000000],
+        [-6.27303363, -0.00047410, 0.00029047, 0.00047649, -0.00000114, 0.00000000],
+        [-6.27303380, -0.00047402, 0.00029042, 0.00047642, -0.00000114, 0.00000000],
+        [-6.27303398, -0.00047395, 0.00029038, 0.00047635, -0.00000114, 0.00000000],
+        [-6.27303415, -0.00047388, 0.00029033, 0.00047627, -0.00000114, 0.00000000],
+        [-6.27303432, -0.00047380, 0.00029029, 0.00047620, -0.00000114, 0.00000000],
+        [-6.27303450, -0.00047373, 0.00029025, 0.00047613, -0.00000114, 0.00000000],
+        [-6.27303467, -0.00047366, 0.00029020, 0.00047606, -0.00000114, 0.00000000],
+        [-6.27303484, -0.00047359, 0.00029016, 0.00047598, -0.00000114, 0.00000000],
+        [-6.27303502, -0.00047351, 0.00029011, 0.00047591, -0.00000114, 0.00000000],
+        [-6.27303519, -0.00047344, 0.00029007, 0.00047584, -0.00000114, 0.00000000],
+        [-6.27303536, -0.00047337, 0.00029002, 0.00047576, -0.00000114, 0.00000000],
+        [-6.27303554, -0.00047330, 0.00028998, 0.00047569, -0.00000114, 0.00000000],
+        [-6.27303571, -0.00047323, 0.00028993, 0.00047562, -0.00000114, 0.00000000],
+        [-6.27303588, -0.00047315, 0.00028989, 0.00047555, -0.00000114, 0.00000000],
+        [-6.27303606, -0.00047308, 0.00028985, 0.00047547, -0.00000114, 0.00000000],
+        [-6.27303623, -0.00047301, 0.00028980, 0.00047540, -0.00000114, 0.00000000],
+        [-6.27303640, -0.00047294, 0.00028976, 0.00047533, -0.00000114, 0.00000000],
+        [-6.27303658, -0.00047286, 0.00028971, 0.00047526, -0.00000114, 0.00000000],
+        [-6.27303675, -0.00047279, 0.00028967, 0.00047518, -0.00000114, 0.00000000],
+        [-6.27303692, -0.00047272, 0.00028962, 0.00047511, -0.00000114, 0.00000000],
+        [-6.27303709, -0.00047265, 0.00028958, 0.00047504, -0.00000114, 0.00000000],
+        [-6.27303727, -0.00047258, 0.00028954, 0.00047497, -0.00000114, 0.00000000],
+        [-6.27303744, -0.00047250, 0.00028949, 0.00047489, -0.00000114, 0.00000000],
+        [-6.27303761, -0.00047243, 0.00028945, 0.00047482, -0.00000114, 0.00000000],
+        [-6.27303778, -0.00047236, 0.00028940, 0.00047475, -0.00000114, 0.00000000],
+        [-6.27303796, -0.00047229, 0.00028936, 0.00047468, -0.00000114, 0.00000000],
+        [-6.27303813, -0.00047221, 0.00028931, 0.00047460, -0.00000114, 0.00000000],
+        [-6.27303830, -0.00047214, 0.00028927, 0.00047453, -0.00000114, 0.00000000],
+        [-6.27303847, -0.00047207, 0.00028923, 0.00047446, -0.00000114, 0.00000000],
+        [-6.27303865, -0.00047200, 0.00028918, 0.00047439, -0.00000114, 0.00000000],
+        [-6.27303882, -0.00047193, 0.00028914, 0.00047431, -0.00000114, 0.00000000],
+        [-6.27303899, -0.00047185, 0.00028909, 0.00047424, -0.00000114, 0.00000000],
+        [-6.27303916, -0.00047178, 0.00028905, 0.00047417, -0.00000114, 0.00000000],
+        [-6.27303933, -0.00047171, 0.00028901, 0.00047410, -0.00000114, 0.00000000],
+        [-6.27303951, -0.00047164, 0.00028896, 0.00047402, -0.00000114, 0.00000000],
+        [-6.27303968, -0.00047157, 0.00028892, 0.00047395, -0.00000114, 0.00000000],
+        [-6.27303985, -0.00047150, 0.00028887, 0.00047388, -0.00000114, 0.00000000],
+        [-6.27304002, -0.00047142, 0.00028883, 0.00047381, -0.00000114, 0.00000000],
+        [-6.27304019, -0.00047135, 0.00028879, 0.00047374, -0.00000114, 0.00000000],
+        [-6.27304037, -0.00047128, 0.00028874, 0.00047366, -0.00000114, 0.00000000],
+        [-6.27304054, -0.00047121, 0.00028870, 0.00047359, -0.00000114, 0.00000000],
+        [-6.27304071, -0.00047114, 0.00028865, 0.00047352, -0.00000114, 0.00000000],
+        [-6.27304088, -0.00047106, 0.00028861, 0.00047345, -0.00000114, 0.00000000],
+        [-6.27304105, -0.00047099, 0.00028857, 0.00047337, -0.00000114, 0.00000000],
+        [-6.27304122, -0.00047092, 0.00028852, 0.00047330, -0.00000114, 0.00000000],
+        [-6.27304139, -0.00047085, 0.00028848, 0.00047323, -0.00000114, 0.00000000],
+        [-6.27304157, -0.00047078, 0.00028843, 0.00047316, -0.00000114, 0.00000000],
+        [-6.27304174, -0.00047071, 0.00028839, 0.00047309, -0.00000114, 0.00000000],
+        [-6.27304191, -0.00047064, 0.00028835, 0.00047302, -0.00000114, 0.00000000],
+        [-6.27304208, -0.00047056, 0.00028830, 0.00047294, -0.00000114, 0.00000000],
+        [-6.27304225, -0.00047049, 0.00028826, 0.00047287, -0.00000114, 0.00000000],
+        [-6.27304242, -0.00047042, 0.00028822, 0.00047280, -0.00000114, 0.00000000],
+        [-6.27304259, -0.00047035, 0.00028817, 0.00047273, -0.00000114, 0.00000000],
+        [-6.27304276, -0.00047028, 0.00028813, 0.00047266, -0.00000114, 0.00000000],
+        [-6.27304294, -0.00047021, 0.00028808, 0.00047258, -0.00000114, 0.00000000],
+        [-6.27304311, -0.00047013, 0.00028804, 0.00047251, -0.00000114, 0.00000000],
+        [-6.27304328, -0.00047006, 0.00028800, 0.00047244, -0.00000114, 0.00000000],
+        [-6.27304345, -0.00046999, 0.00028795, 0.00047237, -0.00000114, 0.00000000],
+        [-6.27304362, -0.00046992, 0.00028791, 0.00047230, -0.00000114, 0.00000000],
+        [-6.27304379, -0.00046985, 0.00028787, 0.00047223, -0.00000114, 0.00000000],
+        [-6.27304396, -0.00046978, 0.00028782, 0.00047215, -0.00000114, 0.00000000],
+        [-6.27304413, -0.00046971, 0.00028778, 0.00047208, -0.00000114, 0.00000000],
+        [-6.27304430, -0.00046964, 0.00028773, 0.00047201, -0.00000114, 0.00000000],
+        [-6.27304447, -0.00046956, 0.00028769, 0.00047194, -0.00000114, 0.00000000],
+        [-6.27304464, -0.00046949, 0.00028765, 0.00047187, -0.00000114, 0.00000000],
+        [-6.27304481, -0.00046942, 0.00028760, 0.00047180, -0.00000114, 0.00000000],
+        [-6.27304498, -0.00046935, 0.00028756, 0.00047172, -0.00000114, 0.00000000],
+        [-6.27304515, -0.00046928, 0.00028752, 0.00047165, -0.00000114, 0.00000000],
+        [-6.27304532, -0.00046921, 0.00028747, 0.00047158, -0.00000114, 0.00000000],
+        [-6.27304549, -0.00046914, 0.00028743, 0.00047151, -0.00000114, 0.00000000],
+        [-6.27304566, -0.00046907, 0.00028738, 0.00047144, -0.00000114, 0.00000000],
+        [-6.27304583, -0.00046900, 0.00028734, 0.00047137, -0.00000114, 0.00000000],
+        [-6.27304600, -0.00046892, 0.00028730, 0.00047130, -0.00000114, 0.00000000],
+        [-6.27304617, -0.00046885, 0.00028725, 0.00047122, -0.00000114, 0.00000000],
+        [-6.27304634, -0.00046878, 0.00028721, 0.00047115, -0.00000114, 0.00000000],
+        [-6.27304651, -0.00046871, 0.00028717, 0.00047108, -0.00000114, 0.00000000],
+        [-6.27304668, -0.00046864, 0.00028712, 0.00047101, -0.00000114, 0.00000000],
+        [-6.27304685, -0.00046857, 0.00028708, 0.00047094, -0.00000114, 0.00000000],
+        [-6.27304702, -0.00046850, 0.00028704, 0.00047087, -0.00000114, 0.00000000],
+        [-6.27304719, -0.00046843, 0.00028699, 0.00047080, -0.00000114, 0.00000000],
+        [-6.27304736, -0.00046836, 0.00028695, 0.00047072, -0.00000114, 0.00000000],
+        [-6.27304753, -0.00046829, 0.00028691, 0.00047065, -0.00000114, 0.00000000],
+        [-6.27304770, -0.00046821, 0.00028686, 0.00047058, -0.00000114, 0.00000000],
+        [-6.27304787, -0.00046814, 0.00028682, 0.00047051, -0.00000114, 0.00000000],
+        [-6.27304804, -0.00046807, 0.00028678, 0.00047044, -0.00000114, 0.00000000],
+        [-6.27304821, -0.00046800, 0.00028673, 0.00047037, -0.00000114, 0.00000000],
+        [-6.27304838, -0.00046793, 0.00028669, 0.00047030, -0.00000114, 0.00000000],
+        [-6.27304855, -0.00046786, 0.00028665, 0.00047023, -0.00000114, 0.00000000],
+        [-6.27304872, -0.00046779, 0.00028660, 0.00047016, -0.00000114, 0.00000000],
+        [-6.27304889, -0.00046772, 0.00028656, 0.00047008, -0.00000114, 0.00000000],
+        [-6.27304906, -0.00046765, 0.00028652, 0.00047001, -0.00000114, 0.00000000],
+        [-6.27304922, -0.00046758, 0.00028647, 0.00046994, -0.00000114, 0.00000000],
+        [-6.27304939, -0.00046751, 0.00028643, 0.00046987, -0.00000114, 0.00000000],
+        [-6.27304956, -0.00046744, 0.00028639, 0.00046980, -0.00000114, 0.00000000],
+        [-6.27304973, -0.00046737, 0.00028634, 0.00046973, -0.00000114, 0.00000000],
+        [-6.27304990, -0.00046730, 0.00028630, 0.00046966, -0.00000114, 0.00000000],
+        [-6.27305007, -0.00046723, 0.00028626, 0.00046959, -0.00000114, 0.00000000],
+        [-6.27305024, -0.00046715, 0.00028621, 0.00046952, -0.00000114, 0.00000000],
+        [-6.27305041, -0.00046708, 0.00028617, 0.00046945, -0.00000114, 0.00000000],
+        [-6.27305057, -0.00046701, 0.00028613, 0.00046938, -0.00000114, 0.00000000],
+        [-6.27305074, -0.00046694, 0.00028608, 0.00046930, -0.00000114, 0.00000000],
+        [-6.27305091, -0.00046687, 0.00028604, 0.00046923, -0.00000114, 0.00000000],
+        [-6.27305108, -0.00046680, 0.00028600, 0.00046916, -0.00000114, 0.00000000],
+        [-6.27305125, -0.00046673, 0.00028595, 0.00046909, -0.00000114, 0.00000000],
+        [-6.27305142, -0.00046666, 0.00028591, 0.00046902, -0.00000114, 0.00000000],
+        [-6.27305159, -0.00046659, 0.00028587, 0.00046895, -0.00000114, 0.00000000],
+        [-6.27305175, -0.00046652, 0.00028582, 0.00046888, -0.00000114, 0.00000000],
+        [-6.27305192, -0.00046645, 0.00028578, 0.00046881, -0.00000114, 0.00000000],
+        [-6.27305209, -0.00046638, 0.00028574, 0.00046874, -0.00000114, 0.00000000],
+        [-6.27305226, -0.00046631, 0.00028570, 0.00046867, -0.00000114, 0.00000000],
+        [-6.27305243, -0.00046624, 0.00028565, 0.00046860, -0.00000114, 0.00000000],
+        [-6.27305259, -0.00046617, 0.00028561, 0.00046853, -0.00000114, 0.00000000],
+        [-6.27305276, -0.00046610, 0.00028557, 0.00046846, -0.00000114, 0.00000000],
+        [-6.27305293, -0.00046603, 0.00028552, 0.00046839, -0.00000114, 0.00000000],
+        [-6.27305310, -0.00046596, 0.00028548, 0.00046832, -0.00000114, 0.00000000],
+        [-6.27305327, -0.00046589, 0.00028544, 0.00046824, -0.00000114, 0.00000000],
+        [-6.27305343, -0.00046582, 0.00028539, 0.00046817, -0.00000114, 0.00000000],
+        [-6.27305360, -0.00046575, 0.00028535, 0.00046810, -0.00000114, 0.00000000],
+        [-6.27305377, -0.00046568, 0.00028531, 0.00046803, -0.00000114, 0.00000000],
+        [-6.27305394, -0.00046561, 0.00028527, 0.00046796, -0.00000114, 0.00000000],
+        [-6.27305410, -0.00046554, 0.00028522, 0.00046789, -0.00000114, 0.00000000],
+        [-6.27305427, -0.00046547, 0.00028518, 0.00046782, -0.00000114, 0.00000000],
+        [-6.27305444, -0.00046540, 0.00028514, 0.00046775, -0.00000114, 0.00000000],
+        [-6.27305461, -0.00046533, 0.00028509, 0.00046768, -0.00000114, 0.00000000],
+        [-6.27305477, -0.00046526, 0.00028505, 0.00046761, -0.00000114, 0.00000000],
+        [-6.27305494, -0.00046519, 0.00028501, 0.00046754, -0.00000114, 0.00000000],
+        [-6.27305511, -0.00046512, 0.00028497, 0.00046747, -0.00000114, 0.00000000],
+        [-6.27305528, -0.00046505, 0.00028492, 0.00046740, -0.00000114, 0.00000000],
+        [-6.27305544, -0.00046498, 0.00028488, 0.00046733, -0.00000114, 0.00000000],
+        [-6.27305561, -0.00046491, 0.00028484, 0.00046726, -0.00000114, 0.00000000],
+        [-6.27305578, -0.00046484, 0.00028479, 0.00046719, -0.00000114, 0.00000000],
+        [-6.27305594, -0.00046477, 0.00028475, 0.00046712, -0.00000114, 0.00000000],
+        [-6.27305611, -0.00046470, 0.00028471, 0.00046705, -0.00000114, 0.00000000],
+        [-6.27305628, -0.00046463, 0.00028467, 0.00046698, -0.00000114, 0.00000000],
+        [-6.27305645, -0.00046456, 0.00028462, 0.00046691, -0.00000114, 0.00000000],
+        [-6.27305661, -0.00046449, 0.00028458, 0.00046684, -0.00000114, 0.00000000],
+        [-6.27305678, -0.00046442, 0.00028454, 0.00046677, -0.00000114, 0.00000000],
+        [-6.27305695, -0.00046435, 0.00028449, 0.00046670, -0.00000114, 0.00000000],
+        [-6.27305711, -0.00046428, 0.00028445, 0.00046663, -0.00000114, 0.00000000],
+        [-6.27305728, -0.00046421, 0.00028441, 0.00046656, -0.00000114, 0.00000000],
+        [-6.27305745, -0.00046414, 0.00028437, 0.00046649, -0.00000114, 0.00000000],
+        [-6.27305761, -0.00046407, 0.00028432, 0.00046642, -0.00000114, 0.00000000],
+        [-6.27305778, -0.00046400, 0.00028428, 0.00046635, -0.00000114, 0.00000000],
+        [-6.27305795, -0.00046393, 0.00028424, 0.00046628, -0.00000114, 0.00000000],
+        [-6.27305811, -0.00046386, 0.00028420, 0.00046621, -0.00000114, 0.00000000],
+        [-6.27305828, -0.00046380, 0.00028415, 0.00046614, -0.00000114, 0.00000000],
+        [-6.27305844, -0.00046373, 0.00028411, 0.00046607, -0.00000114, 0.00000000],
+        [-6.27305861, -0.00046366, 0.00028407, 0.00046600, -0.00000114, 0.00000000],
+        [-6.27305878, -0.00046359, 0.00028403, 0.00046593, -0.00000114, 0.00000000],
+        [-6.27305894, -0.00046352, 0.00028398, 0.00046586, -0.00000114, 0.00000000],
+        [-6.27305911, -0.00046345, 0.00028394, 0.00046579, -0.00000114, 0.00000000],
+        [-6.27305927, -0.00046338, 0.00028390, 0.00046572, -0.00000114, 0.00000000],
+        [-6.27305944, -0.00046331, 0.00028386, 0.00046565, -0.00000114, 0.00000000],
+        [-6.27305961, -0.00046324, 0.00028381, 0.00046558, -0.00000114, 0.00000000],
+        [-6.27305977, -0.00046317, 0.00028377, 0.00046551, -0.00000114, 0.00000000],
+        [-6.27305994, -0.00046310, 0.00028373, 0.00046544, -0.00000114, 0.00000000],
+        [-6.27306010, -0.00046303, 0.00028369, 0.00046537, -0.00000114, 0.00000000],
+        [-6.27306027, -0.00046296, 0.00028364, 0.00046530, -0.00000114, 0.00000000],
+        [-6.27306044, -0.00046289, 0.00028360, 0.00046523, -0.00000114, 0.00000000],
+        [-6.27306060, -0.00046282, 0.00028356, 0.00046516, -0.00000114, 0.00000000],
+        [-6.27306077, -0.00046276, 0.00028352, 0.00046509, -0.00000114, 0.00000000],
+        [-6.27306093, -0.00046269, 0.00028347, 0.00046502, -0.00000114, 0.00000000],
+        [-6.27306110, -0.00046262, 0.00028343, 0.00046496, -0.00000114, 0.00000000],
+        [-6.27306126, -0.00046255, 0.00028339, 0.00046489, -0.00000114, 0.00000000],
+        [-6.27306143, -0.00046248, 0.00028335, 0.00046482, -0.00000114, 0.00000000],
+        [-6.27306159, -0.00046241, 0.00028330, 0.00046475, -0.00000114, 0.00000000],
+        [-6.27306176, -0.00046234, 0.00028326, 0.00046468, -0.00000114, 0.00000000],
+        [-6.27306192, -0.00046227, 0.00028322, 0.00046461, -0.00000114, 0.00000000],
+        [-6.27306209, -0.00046220, 0.00028318, 0.00046454, -0.00000114, 0.00000000],
+        [-6.27306225, -0.00046213, 0.00028314, 0.00046447, -0.00000114, 0.00000000],
+        [-6.27306242, -0.00046206, 0.00028309, 0.00046440, -0.00000114, 0.00000000],
+        [-6.27306259, -0.00046200, 0.00028305, 0.00046433, -0.00000114, 0.00000000],
+        [-6.27306275, -0.00046193, 0.00028301, 0.00046426, -0.00000114, 0.00000000],
+        [-6.27306292, -0.00046186, 0.00028297, 0.00046419, -0.00000114, 0.00000000],
+        [-6.27306308, -0.00046179, 0.00028292, 0.00046412, -0.00000114, 0.00000000],
+        [-6.27306324, -0.00046172, 0.00028288, 0.00046405, -0.00000114, 0.00000000],
+        [-6.27306341, -0.00046165, 0.00028284, 0.00046398, -0.00000114, 0.00000000],
+        [-6.27306357, -0.00046158, 0.00028280, 0.00046392, -0.00000114, 0.00000000],
+        [-6.27306374, -0.00046151, 0.00028275, 0.00046385, -0.00000114, 0.00000000],
+        [-6.27306390, -0.00046144, 0.00028271, 0.00046378, -0.00000114, 0.00000000],
+        [-6.27306407, -0.00046138, 0.00028267, 0.00046371, -0.00000114, 0.00000000],
+        [-6.27306423, -0.00046131, 0.00028263, 0.00046364, -0.00000114, 0.00000000],
+        [-6.27306440, -0.00046124, 0.00028259, 0.00046357, -0.00000114, 0.00000000],
+        [-6.27306456, -0.00046117, 0.00028254, 0.00046350, -0.00000114, 0.00000000],
+        [-6.27306473, -0.00046110, 0.00028250, 0.00046343, -0.00000114, 0.00000000],
+        [-6.27306489, -0.00046103, 0.00028246, 0.00046336, -0.00000114, 0.00000000],
+        [-6.27306505, -0.00046096, 0.00028242, 0.00046329, -0.00000114, 0.00000000],
+        [-6.27306522, -0.00046090, 0.00028238, 0.00046322, -0.00000114, 0.00000000],
+        [-6.27306538, -0.00046083, 0.00028233, 0.00046316, -0.00000114, 0.00000000],
+        [-6.27306555, -0.00046076, 0.00028229, 0.00046309, -0.00000114, 0.00000000],
+        [-6.27306571, -0.00046069, 0.00028225, 0.00046302, -0.00000114, 0.00000000],
+        [-6.27306588, -0.00046062, 0.00028221, 0.00046295, -0.00000114, 0.00000000],
+        [-6.27306604, -0.00046055, 0.00028217, 0.00046288, -0.00000114, 0.00000000],
+        [-6.27306620, -0.00046048, 0.00028212, 0.00046281, -0.00000114, 0.00000000],
+        [-6.27306637, -0.00046042, 0.00028208, 0.00046274, -0.00000114, 0.00000000],
+        [-6.27306653, -0.00046035, 0.00028204, 0.00046267, -0.00000114, 0.00000000],
+        [-6.27306670, -0.00046028, 0.00028200, 0.00046260, -0.00000114, 0.00000000],
+        [-6.27306686, -0.00046021, 0.00028196, 0.00046254, -0.00000114, 0.00000000],
+        [-6.27306702, -0.00046014, 0.00028191, 0.00046247, -0.00000114, 0.00000000],
+        [-6.27306719, -0.00046007, 0.00028187, 0.00046240, -0.00000114, 0.00000000],
+        [-6.27306735, -0.00046000, 0.00028183, 0.00046233, -0.00000114, 0.00000000],
+        [-6.27306751, -0.00045994, 0.00028179, 0.00046226, -0.00000114, 0.00000000],
+        [-6.27306768, -0.00045987, 0.00028175, 0.00046219, -0.00000114, 0.00000000],
+        [-6.27306784, -0.00045980, 0.00028170, 0.00046212, -0.00000114, 0.00000000],
+        [-6.27306800, -0.00045973, 0.00028166, 0.00046205, -0.00000114, 0.00000000],
+        [-6.27306817, -0.00045966, 0.00028162, 0.00046199, -0.00000114, 0.00000000],
+        [-6.27306833, -0.00045959, 0.00028158, 0.00046192, -0.00000114, 0.00000000],
+        [-6.27306849, -0.00045953, 0.00028154, 0.00046185, -0.00000114, 0.00000000],
+        [-6.27306866, -0.00045946, 0.00028150, 0.00046178, -0.00000114, 0.00000000],
+        [-6.27306882, -0.00045939, 0.00028145, 0.00046171, -0.00000114, 0.00000000],
+        [-6.27306898, -0.00045932, 0.00028141, 0.00046164, -0.00000114, 0.00000000],
+        [-6.27306915, -0.00045925, 0.00028137, 0.00046158, -0.00000114, 0.00000000],
+        [-6.27306931, -0.00045919, 0.00028133, 0.00046151, -0.00000114, 0.00000000],
+        [-6.27306947, -0.00045912, 0.00028129, 0.00046144, -0.00000114, 0.00000000],
+        [-6.27306964, -0.00045905, 0.00028124, 0.00046137, -0.00000114, 0.00000000],
+        [-6.27306980, -0.00045898, 0.00028120, 0.00046130, -0.00000114, 0.00000000],
+        [-6.27306996, -0.00045891, 0.00028116, 0.00046123, -0.00000114, 0.00000000],
+        [-6.27307012, -0.00045885, 0.00028112, 0.00046116, -0.00000114, 0.00000000],
+        [-6.27307029, -0.00045878, 0.00028108, 0.00046110, -0.00000114, 0.00000000],
+        [-6.27307045, -0.00045871, 0.00028104, 0.00046103, -0.00000114, 0.00000000],
+        [-6.27307061, -0.00045864, 0.00028099, 0.00046096, -0.00000114, 0.00000000],
+        [-6.27307078, -0.00045857, 0.00028095, 0.00046089, -0.00000114, 0.00000000],
+        [-6.27307094, -0.00045851, 0.00028091, 0.00046082, -0.00000114, 0.00000000],
+        [-6.27307110, -0.00045844, 0.00028087, 0.00046075, -0.00000114, 0.00000000],
+        [-6.27307126, -0.00045837, 0.00028083, 0.00046069, -0.00000114, 0.00000000],
+        [-6.27307142, -0.00045830, 0.00028079, 0.00046062, -0.00000114, 0.00000000],
+        [-6.27307159, -0.00045823, 0.00028074, 0.00046055, -0.00000114, 0.00000000],
+        [-6.27307175, -0.00045817, 0.00028070, 0.00046048, -0.00000114, 0.00000000],
+        [-6.27307191, -0.00045810, 0.00028066, 0.00046041, -0.00000114, 0.00000000],
+        [-6.27307207, -0.00045803, 0.00028062, 0.00046035, -0.00000114, 0.00000000],
+        [-6.27307224, -0.00045796, 0.00028058, 0.00046028, -0.00000114, 0.00000000],
+        [-6.27307240, -0.00045790, 0.00028054, 0.00046021, -0.00000114, 0.00000000],
+        [-6.27307256, -0.00045783, 0.00028050, 0.00046014, -0.00000114, 0.00000000],
+        [-6.27307272, -0.00045776, 0.00028045, 0.00046007, -0.00000114, 0.00000000],
+        [-6.27307288, -0.00045769, 0.00028041, 0.00046001, -0.00000114, 0.00000000],
+        [-6.27307305, -0.00045762, 0.00028037, 0.00045994, -0.00000114, 0.00000000],
+        [-6.27307321, -0.00045756, 0.00028033, 0.00045987, -0.00000114, 0.00000000],
+        [-6.27307337, -0.00045749, 0.00028029, 0.00045980, -0.00000114, 0.00000000],
+        [-6.27307353, -0.00045742, 0.00028025, 0.00045973, -0.00000114, 0.00000000],
+        [-6.27307369, -0.00045735, 0.00028021, 0.00045967, -0.00000114, 0.00000000],
+        [-6.27307386, -0.00045729, 0.00028016, 0.00045960, -0.00000114, 0.00000000],
+        [-6.27307402, -0.00045722, 0.00028012, 0.00045953, -0.00000114, 0.00000000],
+        [-6.27307418, -0.00045715, 0.00028008, 0.00045946, -0.00000114, 0.00000000],
+        [-6.27307434, -0.00045708, 0.00028004, 0.00045939, -0.00000114, 0.00000000],
+        [-6.27307450, -0.00045702, 0.00028000, 0.00045933, -0.00000114, 0.00000000],
+        [-6.27307466, -0.00045695, 0.00027996, 0.00045926, -0.00000114, 0.00000000],
+        [-6.27307482, -0.00045688, 0.00027992, 0.00045919, -0.00000114, 0.00000000],
+        [-6.27307499, -0.00045681, 0.00027987, 0.00045912, -0.00000114, 0.00000000],
+        [-6.27307515, -0.00045675, 0.00027983, 0.00045905, -0.00000114, 0.00000000],
+        [-6.27307531, -0.00045668, 0.00027979, 0.00045899, -0.00000114, 0.00000000],
+        [-6.27307547, -0.00045661, 0.00027975, 0.00045892, -0.00000114, 0.00000000],
+        [-6.27307563, -0.00045654, 0.00027971, 0.00045885, -0.00000114, 0.00000000],
+        [-6.27307579, -0.00045648, 0.00027967, 0.00045878, -0.00000114, 0.00000000],
+        [-6.27307595, -0.00045641, 0.00027963, 0.00045872, -0.00000114, 0.00000000],
+        [-6.27307611, -0.00045634, 0.00027959, 0.00045865, -0.00000114, 0.00000000],
+        [-6.27307628, -0.00045628, 0.00027954, 0.00045858, -0.00000114, 0.00000000],
+        [-6.27307644, -0.00045621, 0.00027950, 0.00045851, -0.00000114, 0.00000000],
+        [-6.27307660, -0.00045614, 0.00027946, 0.00045845, -0.00000114, 0.00000000],
+        [-6.27307676, -0.00045607, 0.00027942, 0.00045838, -0.00000114, 0.00000000],
+        [-6.27307692, -0.00045601, 0.00027938, 0.00045831, -0.00000114, 0.00000000],
+        [-6.27307708, -0.00045594, 0.00027934, 0.00045824, -0.00000114, 0.00000000],
+        [-6.27307724, -0.00045587, 0.00027930, 0.00045818, -0.00000114, 0.00000000],
+        [-6.27307740, -0.00045581, 0.00027926, 0.00045811, -0.00000114, 0.00000000],
+        [-6.27307756, -0.00045574, 0.00027921, 0.00045804, -0.00000114, 0.00000000],
+        [-6.27307772, -0.00045567, 0.00027917, 0.00045797, -0.00000114, 0.00000000],
+        [-6.27307788, -0.00045560, 0.00027913, 0.00045791, -0.00000114, 0.00000000],
+        [-6.27307804, -0.00045554, 0.00027909, 0.00045784, -0.00000114, 0.00000000],
+        [-6.27307820, -0.00045547, 0.00027905, 0.00045777, -0.00000114, 0.00000000],
+        [-6.27307836, -0.00045540, 0.00027901, 0.00045770, -0.00000114, 0.00000000],
+        [-6.27307852, -0.00045534, 0.00027897, 0.00045764, -0.00000114, 0.00000000],
+        [-6.27307868, -0.00045527, 0.00027893, 0.00045757, -0.00000114, 0.00000000],
+        [-6.27307884, -0.00045520, 0.00027889, 0.00045750, -0.00000114, 0.00000000],
+        [-6.27307900, -0.00045514, 0.00027884, 0.00045743, -0.00000114, 0.00000000],
+        [-6.27307916, -0.00045507, 0.00027880, 0.00045737, -0.00000114, 0.00000000],
+        [-6.27307932, -0.00045500, 0.00027876, 0.00045730, -0.00000114, 0.00000000],
+        [-6.27307949, -0.00045493, 0.00027872, 0.00045723, -0.00000114, 0.00000000],
+        [-6.27307964, -0.00045487, 0.00027868, 0.00045717, -0.00000114, 0.00000000],
+        [-6.27307980, -0.00045480, 0.00027864, 0.00045710, -0.00000114, 0.00000000],
+        [-6.27307996, -0.00045473, 0.00027860, 0.00045703, -0.00000114, 0.00000000],
+        [-6.27308012, -0.00045467, 0.00027856, 0.00045696, -0.00000114, 0.00000000],
+        [-6.27308028, -0.00045460, 0.00027852, 0.00045690, -0.00000114, 0.00000000],
+        [-6.27308044, -0.00045453, 0.00027848, 0.00045683, -0.00000114, 0.00000000],
+        [-6.27308060, -0.00045447, 0.00027844, 0.00045676, -0.00000114, 0.00000000],
+        [-6.27308076, -0.00045440, 0.00027839, 0.00045670, -0.00000114, 0.00000000],
+        [-6.27308092, -0.00045433, 0.00027835, 0.00045663, -0.00000114, 0.00000000],
+        [-6.27308108, -0.00045427, 0.00027831, 0.00045656, -0.00000114, 0.00000000],
+        [-6.27308124, -0.00045420, 0.00027827, 0.00045650, -0.00000114, 0.00000000],
+        [-6.27308140, -0.00045413, 0.00027823, 0.00045643, -0.00000114, 0.00000000],
+        [-6.27308156, -0.00045407, 0.00027819, 0.00045636, -0.00000114, 0.00000000],
+        [-6.27308172, -0.00045400, 0.00027815, 0.00045629, -0.00000114, 0.00000000],
+        [-6.27308188, -0.00045393, 0.00027811, 0.00045623, -0.00000114, 0.00000000],
+        [-6.27308204, -0.00045387, 0.00027807, 0.00045616, -0.00000114, 0.00000000],
+        [-6.27308220, -0.00045380, 0.00027803, 0.00045609, -0.00000114, 0.00000000],
+        [-6.27308236, -0.00045373, 0.00027799, 0.00045603, -0.00000114, 0.00000000],
+        [-6.27308252, -0.00045367, 0.00027795, 0.00045596, -0.00000114, 0.00000000],
+        [-6.27308268, -0.00045360, 0.00027790, 0.00045589, -0.00000114, 0.00000000],
+        [-6.27308284, -0.00045353, 0.00027786, 0.00045583, -0.00000114, 0.00000000],
+        [-6.27308299, -0.00045347, 0.00027782, 0.00045576, -0.00000114, 0.00000000],
+        [-6.27308315, -0.00045340, 0.00027778, 0.00045569, -0.00000114, 0.00000000],
+        [-6.27308331, -0.00045334, 0.00027774, 0.00045563, -0.00000114, 0.00000000],
+        [-6.27308347, -0.00045327, 0.00027770, 0.00045556, -0.00000114, 0.00000000],
+        [-6.27308363, -0.00045320, 0.00027766, 0.00045549, -0.00000114, 0.00000000],
+        [-6.27308379, -0.00045314, 0.00027762, 0.00045543, -0.00000114, 0.00000000],
+        [-6.27308395, -0.00045307, 0.00027758, 0.00045536, -0.00000114, 0.00000000],
+        [-6.27308411, -0.00045300, 0.00027754, 0.00045529, -0.00000114, 0.00000000],
+        [-6.27308426, -0.00045294, 0.00027750, 0.00045523, -0.00000114, 0.00000000],
+        [-6.27308442, -0.00045287, 0.00027746, 0.00045516, -0.00000114, 0.00000000],
+        [-6.27308458, -0.00045281, 0.00027742, 0.00045509, -0.00000114, 0.00000000],
+        [-6.27308474, -0.00045274, 0.00027738, 0.00045503, -0.00000114, 0.00000000],
+        [-6.27308490, -0.00045267, 0.00027734, 0.00045496, -0.00000114, 0.00000000],
+        [-6.27308506, -0.00045261, 0.00027729, 0.00045489, -0.00000114, 0.00000000],
+        [-6.27308522, -0.00045254, 0.00027725, 0.00045483, -0.00000114, 0.00000000],
+        [-6.27308537, -0.00045247, 0.00027721, 0.00045476, -0.00000114, 0.00000000],
+        [-6.27308553, -0.00045241, 0.00027717, 0.00045469, -0.00000114, 0.00000000],
+        [-6.27308569, -0.00045234, 0.00027713, 0.00045463, -0.00000114, 0.00000000],
+        [-6.27308585, -0.00045228, 0.00027709, 0.00045456, -0.00000114, 0.00000000],
+        [-6.27308601, -0.00045221, 0.00027705, 0.00045449, -0.00000114, 0.00000000],
+        [-6.27308616, -0.00045214, 0.00027701, 0.00045443, -0.00000114, 0.00000000],
+        [-6.27308632, -0.00045208, 0.00027697, 0.00045436, -0.00000114, 0.00000000],
+        [-6.27308648, -0.00045201, 0.00027693, 0.00045430, -0.00000114, 0.00000000],
+        [-6.27308664, -0.00045195, 0.00027689, 0.00045423, -0.00000114, 0.00000000],
+        [-6.27308680, -0.00045188, 0.00027685, 0.00045416, -0.00000114, 0.00000000],
+        [-6.27308695, -0.00045181, 0.00027681, 0.00045410, -0.00000114, 0.00000000],
+        [-6.27308711, -0.00045175, 0.00027677, 0.00045403, -0.00000114, 0.00000000],
+        [-6.27308727, -0.00045168, 0.00027673, 0.00045396, -0.00000114, 0.00000000],
+        [-6.27308743, -0.00045162, 0.00027669, 0.00045390, -0.00000114, 0.00000000],
+        [-6.27308759, -0.00045155, 0.00027665, 0.00045383, -0.00000114, 0.00000000],
+        [-6.27308774, -0.00045148, 0.00027661, 0.00045376, -0.00000114, 0.00000000],
+        [-6.27308790, -0.00045142, 0.00027657, 0.00045370, -0.00000114, 0.00000000],
+        [-6.27308806, -0.00045135, 0.00027653, 0.00045363, -0.00000114, 0.00000000],
+        [-6.27308822, -0.00045129, 0.00027649, 0.00045357, -0.00000114, 0.00000000],
+        [-6.27308837, -0.00045122, 0.00027645, 0.00045350, -0.00000114, 0.00000000],
+        [-6.27308853, -0.00045116, 0.00027641, 0.00045343, -0.00000114, 0.00000000],
+        [-6.27308869, -0.00045109, 0.00027636, 0.00045337, -0.00000114, 0.00000000],
+        [-6.27308884, -0.00045102, 0.00027632, 0.00045330, -0.00000114, 0.00000000],
+        [-6.27308900, -0.00045096, 0.00027628, 0.00045324, -0.00000114, 0.00000000],
+        [-6.27308916, -0.00045089, 0.00027624, 0.00045317, -0.00000114, 0.00000000],
+        [-6.27308932, -0.00045083, 0.00027620, 0.00045310, -0.00000114, 0.00000000],
+        [-6.27308947, -0.00045076, 0.00027616, 0.00045304, -0.00000114, 0.00000000],
+        [-6.27308963, -0.00045070, 0.00027612, 0.00045297, -0.00000114, 0.00000000],
+        [-6.27308979, -0.00045063, 0.00027608, 0.00045291, -0.00000114, 0.00000000],
+        [-6.27308994, -0.00045056, 0.00027604, 0.00045284, -0.00000114, 0.00000000],
+        [-6.27309010, -0.00045050, 0.00027600, 0.00045277, -0.00000114, 0.00000000],
+        [-6.27309026, -0.00045043, 0.00027596, 0.00045271, -0.00000114, 0.00000000],
+        [-6.27309042, -0.00045037, 0.00027592, 0.00045264, -0.00000114, 0.00000000],
+        [-6.27309057, -0.00045030, 0.00027588, 0.00045258, -0.00000114, 0.00000000],
+        [-6.27309073, -0.00045024, 0.00027584, 0.00045251, -0.00000114, 0.00000000],
+        [-6.27309089, -0.00045017, 0.00027580, 0.00045245, -0.00000114, 0.00000000],
+        [-6.27309104, -0.00045011, 0.00027576, 0.00045238, -0.00000114, 0.00000000],
+        [-6.27309120, -0.00045004, 0.00027572, 0.00045231, -0.00000114, 0.00000000],
+        [-6.27309136, -0.00044997, 0.00027568, 0.00045225, -0.00000114, 0.00000000],
+        [-6.27309151, -0.00044991, 0.00027564, 0.00045218, -0.00000114, 0.00000000],
+        [-6.27309167, -0.00044984, 0.00027560, 0.00045212, -0.00000114, 0.00000000],
+        [-6.27309183, -0.00044978, 0.00027556, 0.00045205, -0.00000114, 0.00000000],
+        [-6.27309198, -0.00044971, 0.00027552, 0.00045198, -0.00000114, 0.00000000],
+        [-6.27309214, -0.00044965, 0.00027548, 0.00045192, -0.00000114, 0.00000000],
+        [-6.27309229, -0.00044958, 0.00027544, 0.00045185, -0.00000114, 0.00000000],
+        [-6.27309245, -0.00044952, 0.00027540, 0.00045179, -0.00000114, 0.00000000],
+        [-6.27309261, -0.00044945, 0.00027536, 0.00045172, -0.00000114, 0.00000000],
+        [-6.27309276, -0.00044939, 0.00027532, 0.00045166, -0.00000114, 0.00000000],
+        [-6.27309292, -0.00044932, 0.00027528, 0.00045159, -0.00000114, 0.00000000],
+        [-6.27309307, -0.00044926, 0.00027524, 0.00045153, -0.00000114, 0.00000000],
+        [-6.27309323, -0.00044919, 0.00027520, 0.00045146, -0.00000114, 0.00000000],
+        [-6.27309339, -0.00044913, 0.00027516, 0.00045139, -0.00000114, 0.00000000],
+        [-6.27309354, -0.00044906, 0.00027512, 0.00045133, -0.00000114, 0.00000000],
+        [-6.27309370, -0.00044900, 0.00027508, 0.00045126, -0.00000114, 0.00000000],
+        [-6.27309385, -0.00044893, 0.00027504, 0.00045120, -0.00000114, 0.00000000],
+        [-6.27309401, -0.00044887, 0.00027500, 0.00045113, -0.00000114, 0.00000000],
+        [-6.27309417, -0.00044880, 0.00027496, 0.00045107, -0.00000114, 0.00000000],
+        [-6.27309432, -0.00044874, 0.00027492, 0.00045100, -0.00000114, 0.00000000],
+        [-6.27309448, -0.00044867, 0.00027488, 0.00045094, -0.00000114, 0.00000000],
+        [-6.27309463, -0.00044861, 0.00027484, 0.00045087, -0.00000114, 0.00000000],
+        [-6.27309479, -0.00044854, 0.00027480, 0.00045081, -0.00000114, 0.00000000],
+        [-6.27309494, -0.00044848, 0.00027476, 0.00045074, -0.00000114, 0.00000000],
+        [-6.27309510, -0.00044841, 0.00027472, 0.00045068, -0.00000114, 0.00000000],
+        [-6.27309526, -0.00044835, 0.00027468, 0.00045061, -0.00000114, 0.00000000],
+        [-6.27309541, -0.00044828, 0.00027464, 0.00045054, -0.00000114, 0.00000000],
+        [-6.27309557, -0.00044822, 0.00027460, 0.00045048, -0.00000114, 0.00000000],
+        [-6.27309572, -0.00044815, 0.00027456, 0.00045041, -0.00000114, 0.00000000],
+        [-6.27309588, -0.00044809, 0.00027452, 0.00045035, -0.00000114, 0.00000000],
+        [-6.27309603, -0.00044802, 0.00027448, 0.00045028, -0.00000114, 0.00000000],
+        [-6.27309619, -0.00044796, 0.00027444, 0.00045022, -0.00000114, 0.00000000],
+        [-6.27309634, -0.00044789, 0.00027440, 0.00045015, -0.00000114, 0.00000000],
+        [-6.27309650, -0.00044783, 0.00027436, 0.00045009, -0.00000114, 0.00000000],
+        [-6.27309665, -0.00044776, 0.00027432, 0.00045002, -0.00000114, 0.00000000],
+        [-6.27309681, -0.00044770, 0.00027429, 0.00044996, -0.00000114, 0.00000000],
+        [-6.27309696, -0.00044763, 0.00027425, 0.00044989, -0.00000114, 0.00000000],
+        [-6.27309712, -0.00044757, 0.00027421, 0.00044983, -0.00000114, 0.00000000],
+        [-6.27309727, -0.00044750, 0.00027417, 0.00044976, -0.00000114, 0.00000000],
+        [-6.27309743, -0.00044744, 0.00027413, 0.00044970, -0.00000114, 0.00000000],
+        [-6.27309758, -0.00044737, 0.00027409, 0.00044963, -0.00000114, 0.00000000],
+        [-6.27309774, -0.00044731, 0.00027405, 0.00044957, -0.00000114, 0.00000000],
+        [-6.27309789, -0.00044724, 0.00027401, 0.00044950, -0.00000114, 0.00000000],
+        [-6.27309805, -0.00044718, 0.00027397, 0.00044944, -0.00000114, 0.00000000],
+        [-6.27309820, -0.00044712, 0.00027393, 0.00044937, -0.00000114, 0.00000000],
+        [-6.27309835, -0.00044705, 0.00027389, 0.00044931, -0.00000114, 0.00000000],
+        [-6.27309851, -0.00044699, 0.00027385, 0.00044924, -0.00000114, 0.00000000],
+        [-6.27309866, -0.00044692, 0.00027381, 0.00044918, -0.00000114, 0.00000000],
+        [-6.27309882, -0.00044686, 0.00027377, 0.00044911, -0.00000114, 0.00000000],
+        [-6.27309897, -0.00044679, 0.00027373, 0.00044905, -0.00000114, 0.00000000],
+        [-6.27309913, -0.00044673, 0.00027369, 0.00044898, -0.00000114, 0.00000000],
+        [-6.27309928, -0.00044666, 0.00027365, 0.00044892, -0.00000114, 0.00000000],
+        [-6.27309944, -0.00044660, 0.00027361, 0.00044885, -0.00000114, 0.00000000],
+        [-6.27309959, -0.00044653, 0.00027357, 0.00044879, -0.00000114, 0.00000000],
+        [-6.27309974, -0.00044647, 0.00027353, 0.00044873, -0.00000114, 0.00000000],
+        [-6.27309990, -0.00044641, 0.00027349, 0.00044866, -0.00000114, 0.00000000],
+        [-6.27310005, -0.00044634, 0.00027345, 0.00044860, -0.00000114, 0.00000000],
+        [-6.27310021, -0.00044628, 0.00027341, 0.00044853, -0.00000114, 0.00000000],
+        [-6.27310036, -0.00044621, 0.00027338, 0.00044847, -0.00000114, 0.00000000],
+        [-6.27310051, -0.00044615, 0.00027334, 0.00044840, -0.00000114, 0.00000000],
+        [-6.27310067, -0.00044608, 0.00027330, 0.00044834, -0.00000114, 0.00000000],
+        [-6.27310082, -0.00044602, 0.00027326, 0.00044827, -0.00000114, 0.00000000],
+        [-6.27310097, -0.00044596, 0.00027322, 0.00044821, -0.00000114, 0.00000000],
+        [-6.27310113, -0.00044589, 0.00027318, 0.00044814, -0.00000114, 0.00000000],
+        [-6.27310128, -0.00044583, 0.00027314, 0.00044808, -0.00000114, 0.00000000],
+        [-6.27310144, -0.00044576, 0.00027310, 0.00044801, -0.00000114, 0.00000000],
+        [-6.27310159, -0.00044570, 0.00027306, 0.00044795, -0.00000114, 0.00000000],
+        [-6.27310174, -0.00044563, 0.00027302, 0.00044789, -0.00000114, 0.00000000],
+        [-6.27310190, -0.00044557, 0.00027298, 0.00044782, -0.00000114, 0.00000000],
+        [-6.27310205, -0.00044551, 0.00027294, 0.00044776, -0.00000114, 0.00000000],
+        [-6.27310220, -0.00044544, 0.00027290, 0.00044769, -0.00000114, 0.00000000],
+        [-6.27310236, -0.00044538, 0.00027286, 0.00044763, -0.00000114, 0.00000000],
+        [-6.27310251, -0.00044531, 0.00027282, 0.00044756, -0.00000114, 0.00000000],
+        [-6.27310266, -0.00044525, 0.00027279, 0.00044750, -0.00000114, 0.00000000],
+        [-6.27310282, -0.00044519, 0.00027275, 0.00044743, -0.00000114, 0.00000000],
+        [-6.27310297, -0.00044512, 0.00027271, 0.00044737, -0.00000114, 0.00000000],
+        [-6.27310312, -0.00044506, 0.00027267, 0.00044731, -0.00000114, 0.00000000],
+        [-6.27310328, -0.00044499, 0.00027263, 0.00044724, -0.00000114, 0.00000000],
+        [-6.27310343, -0.00044493, 0.00027259, 0.00044718, -0.00000114, 0.00000000],
+        [-6.27310358, -0.00044487, 0.00027255, 0.00044711, -0.00000114, 0.00000000],
+        [-6.27310374, -0.00044480, 0.00027251, 0.00044705, -0.00000114, 0.00000000],
+        [-6.27310389, -0.00044474, 0.00027247, 0.00044698, -0.00000114, 0.00000000],
+        [-6.27310404, -0.00044467, 0.00027243, 0.00044692, -0.00000114, 0.00000000],
+        [-6.27310419, -0.00044461, 0.00027239, 0.00044686, -0.00000114, 0.00000000],
+        [-6.27310435, -0.00044455, 0.00027235, 0.00044679, -0.00000114, 0.00000000],
+        [-6.27310450, -0.00044448, 0.00027231, 0.00044673, -0.00000114, 0.00000000],
+        [-6.27310465, -0.00044442, 0.00027228, 0.00044666, -0.00000114, 0.00000000],
+        [-6.27310481, -0.00044436, 0.00027224, 0.00044660, -0.00000114, 0.00000000],
+        [-6.27310496, -0.00044429, 0.00027220, 0.00044654, -0.00000114, 0.00000000],
+        [-6.27310511, -0.00044423, 0.00027216, 0.00044647, -0.00000114, 0.00000000],
+        [-6.27310526, -0.00044416, 0.00027212, 0.00044641, -0.00000114, 0.00000000],
+        [-6.27310542, -0.00044410, 0.00027208, 0.00044634, -0.00000114, 0.00000000],
+        [-6.27310557, -0.00044404, 0.00027204, 0.00044628, -0.00000114, 0.00000000],
+        [-6.27310572, -0.00044397, 0.00027200, 0.00044621, -0.00000114, 0.00000000],
+        [-6.27310587, -0.00044391, 0.00027196, 0.00044615, -0.00000114, 0.00000000],
+        [-6.27310603, -0.00044385, 0.00027192, 0.00044609, -0.00000114, 0.00000000],
+        [-6.27310618, -0.00044378, 0.00027189, 0.00044602, -0.00000114, 0.00000000],
+        [-6.27310633, -0.00044372, 0.00027185, 0.00044596, -0.00000114, 0.00000000],
+        [-6.27310648, -0.00044365, 0.00027181, 0.00044590, -0.00000114, 0.00000000],
+        [-6.27310663, -0.00044359, 0.00027177, 0.00044583, -0.00000114, 0.00000000],
+        [-6.27310679, -0.00044353, 0.00027173, 0.00044577, -0.00000114, 0.00000000],
+        [-6.27310694, -0.00044346, 0.00027169, 0.00044570, -0.00000114, 0.00000000],
+        [-6.27310709, -0.00044340, 0.00027165, 0.00044564, -0.00000114, 0.00000000],
+        [-6.27310724, -0.00044334, 0.00027161, 0.00044558, -0.00000114, 0.00000000],
+        [-6.27310739, -0.00044327, 0.00027157, 0.00044551, -0.00000114, 0.00000000],
+        [-6.27310755, -0.00044321, 0.00027153, 0.00044545, -0.00000114, 0.00000000],
+        [-6.27310770, -0.00044315, 0.00027150, 0.00044538, -0.00000114, 0.00000000],
+        [-6.27310785, -0.00044308, 0.00027146, 0.00044532, -0.00000114, 0.00000000],
+        [-6.27310800, -0.00044302, 0.00027142, 0.00044526, -0.00000114, 0.00000000],
+        [-6.27310815, -0.00044296, 0.00027138, 0.00044519, -0.00000114, 0.00000000],
+        [-6.27310831, -0.00044289, 0.00027134, 0.00044513, -0.00000114, 0.00000000],
+        [-6.27310846, -0.00044283, 0.00027130, 0.00044507, -0.00000114, 0.00000000],
+        [-6.27310861, -0.00044277, 0.00027126, 0.00044500, -0.00000114, 0.00000000],
+        [-6.27310876, -0.00044270, 0.00027122, 0.00044494, -0.00000114, 0.00000000],
+        [-6.27310891, -0.00044264, 0.00027119, 0.00044487, -0.00000114, 0.00000000],
+        [-6.27310906, -0.00044258, 0.00027115, 0.00044481, -0.00000114, 0.00000000],
+        [-6.27310921, -0.00044251, 0.00027111, 0.00044475, -0.00000114, 0.00000000],
+        [-6.27310937, -0.00044245, 0.00027107, 0.00044468, -0.00000114, 0.00000000],
+        [-6.27310952, -0.00044239, 0.00027103, 0.00044462, -0.00000114, 0.00000000],
+        [-6.27310967, -0.00044232, 0.00027099, 0.00044456, -0.00000114, 0.00000000],
+        [-6.27310982, -0.00044226, 0.00027095, 0.00044449, -0.00000114, 0.00000000],
+        [-6.27310997, -0.00044220, 0.00027091, 0.00044443, -0.00000114, 0.00000000],
+        [-6.27311012, -0.00044213, 0.00027088, 0.00044437, -0.00000114, 0.00000000],
+        [-6.27311027, -0.00044207, 0.00027084, 0.00044430, -0.00000114, 0.00000000],
+        [-6.27311042, -0.00044201, 0.00027080, 0.00044424, -0.00000114, 0.00000000],
+        [-6.27311058, -0.00044194, 0.00027076, 0.00044418, -0.00000114, 0.00000000],
+        [-6.27311073, -0.00044188, 0.00027072, 0.00044411, -0.00000114, 0.00000000],
+        [-6.27311088, -0.00044182, 0.00027068, 0.00044405, -0.00000114, 0.00000000],
+        [-6.27311103, -0.00044176, 0.00027064, 0.00044399, -0.00000114, 0.00000000],
+        [-6.27311118, -0.00044169, 0.00027060, 0.00044392, -0.00000114, 0.00000000],
+        [-6.27311133, -0.00044163, 0.00027057, 0.00044386, -0.00000114, 0.00000000],
+        [-6.27311148, -0.00044157, 0.00027053, 0.00044380, -0.00000114, 0.00000000],
+        [-6.27311163, -0.00044150, 0.00027049, 0.00044373, -0.00000114, 0.00000000],
+        [-6.27311178, -0.00044144, 0.00027045, 0.00044367, -0.00000114, 0.00000000],
+        [-6.27311193, -0.00044138, 0.00027041, 0.00044361, -0.00000114, 0.00000000],
+        [-6.27311208, -0.00044131, 0.00027037, 0.00044354, -0.00000114, 0.00000000],
+        [-6.27311223, -0.00044125, 0.00027033, 0.00044348, -0.00000114, 0.00000000],
+        [-6.27311238, -0.00044119, 0.00027030, 0.00044342, -0.00000114, 0.00000000],
+        [-6.27311253, -0.00044113, 0.00027026, 0.00044335, -0.00000114, 0.00000000],
+        [-6.27311269, -0.00044106, 0.00027022, 0.00044329, -0.00000114, 0.00000000],
+        [-6.27311284, -0.00044100, 0.00027018, 0.00044323, -0.00000114, 0.00000000],
+        [-6.27311299, -0.00044094, 0.00027014, 0.00044316, -0.00000114, 0.00000000],
+        [-6.27311314, -0.00044087, 0.00027010, 0.00044310, -0.00000114, 0.00000000],
+        [-6.27311329, -0.00044081, 0.00027006, 0.00044304, -0.00000114, 0.00000000],
+        [-6.27311344, -0.00044075, 0.00027003, 0.00044297, -0.00000114, 0.00000000],
+        [-6.27311359, -0.00044069, 0.00026999, 0.00044291, -0.00000114, 0.00000000],
+        [-6.27311374, -0.00044062, 0.00026995, 0.00044285, -0.00000114, 0.00000000],
+        [-6.27311389, -0.00044056, 0.00026991, 0.00044279, -0.00000114, 0.00000000],
+        [-6.27311404, -0.00044050, 0.00026987, 0.00044272, -0.00000114, 0.00000000],
+        [-6.27311419, -0.00044044, 0.00026983, 0.00044266, -0.00000114, 0.00000000],
+        [-6.27311434, -0.00044037, 0.00026980, 0.00044260, -0.00000114, 0.00000000],
+        [-6.27311449, -0.00044031, 0.00026976, 0.00044253, -0.00000114, 0.00000000],
+        [-6.27311464, -0.00044025, 0.00026972, 0.00044247, -0.00000114, 0.00000000],
+        [-6.27311479, -0.00044018, 0.00026968, 0.00044241, -0.00000114, 0.00000000],
+        [-6.27311494, -0.00044012, 0.00026964, 0.00044234, -0.00000114, 0.00000000],
+        [-6.27311509, -0.00044006, 0.00026960, 0.00044228, -0.00000114, 0.00000000],
+        [-6.27311524, -0.00044000, 0.00026957, 0.00044222, -0.00000114, 0.00000000],
+        [-6.27311539, -0.00043993, 0.00026953, 0.00044216, -0.00000114, 0.00000000],
+        [-6.27311554, -0.00043987, 0.00026949, 0.00044209, -0.00000114, 0.00000000],
+        [-6.27311569, -0.00043981, 0.00026945, 0.00044203, -0.00000114, 0.00000000],
+        [-6.27311583, -0.00043975, 0.00026941, 0.00044197, -0.00000114, 0.00000000],
+        [-6.27311598, -0.00043968, 0.00026937, 0.00044190, -0.00000114, 0.00000000],
+        [-6.27311613, -0.00043962, 0.00026934, 0.00044184, -0.00000114, 0.00000000],
+        [-6.27311628, -0.00043956, 0.00026930, 0.00044178, -0.00000114, 0.00000000],
+        [-6.27311643, -0.00043950, 0.00026926, 0.00044172, -0.00000114, 0.00000000],
+        [-6.27311658, -0.00043944, 0.00026922, 0.00044165, -0.00000114, 0.00000000],
+        [-6.27311673, -0.00043937, 0.00026918, 0.00044159, -0.00000114, 0.00000000],
+        [-6.27311688, -0.00043931, 0.00026914, 0.00044153, -0.00000114, 0.00000000],
+        [-6.27311703, -0.00043925, 0.00026911, 0.00044147, -0.00000114, 0.00000000],
+        [-6.27311718, -0.00043919, 0.00026907, 0.00044140, -0.00000114, 0.00000000],
+        [-6.27311733, -0.00043912, 0.00026903, 0.00044134, -0.00000114, 0.00000000],
+        [-6.27311748, -0.00043906, 0.00026899, 0.00044128, -0.00000114, 0.00000000],
+        [-6.27311763, -0.00043900, 0.00026895, 0.00044122, -0.00000114, 0.00000000],
+        [-6.27311777, -0.00043894, 0.00026892, 0.00044115, -0.00000114, 0.00000000],
+        [-6.27311792, -0.00043887, 0.00026888, 0.00044109, -0.00000114, 0.00000000],
+        [-6.27311807, -0.00043881, 0.00026884, 0.00044103, -0.00000114, 0.00000000],
+        [-6.27311822, -0.00043875, 0.00026880, 0.00044096, -0.00000114, 0.00000000],
+        [-6.27311837, -0.00043869, 0.00026876, 0.00044090, -0.00000114, 0.00000000],
+        [-6.27311852, -0.00043863, 0.00026872, 0.00044084, -0.00000114, 0.00000000],
+        [-6.27311867, -0.00043856, 0.00026869, 0.00044078, -0.00000114, 0.00000000],
+        [-6.27311882, -0.00043850, 0.00026865, 0.00044072, -0.00000114, 0.00000000],
+        [-6.27311897, -0.00043844, 0.00026861, 0.00044065, -0.00000114, 0.00000000],
+        [-6.27311911, -0.00043838, 0.00026857, 0.00044059, -0.00000114, 0.00000000],
+        [-6.27311926, -0.00043832, 0.00026853, 0.00044053, -0.00000114, 0.00000000],
+        [-6.27311941, -0.00043825, 0.00026850, 0.00044047, -0.00000114, 0.00000000],
+        [-6.27311956, -0.00043819, 0.00026846, 0.00044040, -0.00000114, 0.00000000],
+        [-6.27311971, -0.00043813, 0.00026842, 0.00044034, -0.00000114, 0.00000000],
+        [-6.27311986, -0.00043807, 0.00026838, 0.00044028, -0.00000114, 0.00000000],
+        [-6.27312000, -0.00043800, 0.00026834, 0.00044022, -0.00000114, 0.00000000],
+        [-6.27312015, -0.00043794, 0.00026831, 0.00044015, -0.00000114, 0.00000000],
+        [-6.27312030, -0.00043788, 0.00026827, 0.00044009, -0.00000114, 0.00000000],
+        [-6.27312045, -0.00043782, 0.00026823, 0.00044003, -0.00000114, 0.00000000],
+        [-6.27312060, -0.00043776, 0.00026819, 0.00043997, -0.00000114, 0.00000000],
+        [-6.27312075, -0.00043770, 0.00026815, 0.00043990, -0.00000114, 0.00000000],
+        [-6.27312089, -0.00043763, 0.00026812, 0.00043984, -0.00000114, 0.00000000],
+        [-6.27312104, -0.00043757, 0.00026808, 0.00043978, -0.00000114, 0.00000000],
+        [-6.27312119, -0.00043751, 0.00026804, 0.00043972, -0.00000114, 0.00000000],
+        [-6.27312134, -0.00043745, 0.00026800, 0.00043966, -0.00000114, 0.00000000],
+        [-6.27312149, -0.00043739, 0.00026796, 0.00043959, -0.00000114, 0.00000000],
+        [-6.27312163, -0.00043732, 0.00026793, 0.00043953, -0.00000114, 0.00000000],
+        [-6.27312178, -0.00043726, 0.00026789, 0.00043947, -0.00000114, 0.00000000],
+        [-6.27312193, -0.00043720, 0.00026785, 0.00043941, -0.00000114, 0.00000000],
+        [-6.27312208, -0.00043714, 0.00026781, 0.00043935, -0.00000114, 0.00000000],
+        [-6.27312223, -0.00043708, 0.00026778, 0.00043928, -0.00000114, 0.00000000],
+        [-6.27312237, -0.00043702, 0.00026774, 0.00043922, -0.00000114, 0.00000000],
+        [-6.27312252, -0.00043695, 0.00026770, 0.00043916, -0.00000114, 0.00000000],
+        [-6.27312267, -0.00043689, 0.00026766, 0.00043910, -0.00000114, 0.00000000],
+        [-6.27312282, -0.00043683, 0.00026762, 0.00043904, -0.00000114, 0.00000000],
+        [-6.27312296, -0.00043677, 0.00026759, 0.00043897, -0.00000114, 0.00000000],
+        [-6.27312311, -0.00043671, 0.00026755, 0.00043891, -0.00000114, 0.00000000],
+        [-6.27312326, -0.00043665, 0.00026751, 0.00043885, -0.00000114, 0.00000000],
+        [-6.27312341, -0.00043658, 0.00026747, 0.00043879, -0.00000114, 0.00000000],
+        [-6.27312355, -0.00043652, 0.00026744, 0.00043873, -0.00000114, 0.00000000],
+        [-6.27312370, -0.00043646, 0.00026740, 0.00043866, -0.00000114, 0.00000000],
+        [-6.27312385, -0.00043640, 0.00026736, 0.00043860, -0.00000114, 0.00000000],
+        [-6.27312399, -0.00043634, 0.00026732, 0.00043854, -0.00000114, 0.00000000],
+        [-6.27312414, -0.00043628, 0.00026728, 0.00043848, -0.00000114, 0.00000000],
+        [-6.27312429, -0.00043622, 0.00026725, 0.00043842, -0.00000114, 0.00000000],
+        [-6.27312444, -0.00043615, 0.00026721, 0.00043836, -0.00000114, 0.00000000],
+        [-6.27312458, -0.00043609, 0.00026717, 0.00043829, -0.00000114, 0.00000000],
+        [-6.27312473, -0.00043603, 0.00026713, 0.00043823, -0.00000114, 0.00000000],
+        [-6.27312488, -0.00043597, 0.00026710, 0.00043817, -0.00000114, 0.00000000],
+        [-6.27312502, -0.00043591, 0.00026706, 0.00043811, -0.00000114, 0.00000000],
+        [-6.27312517, -0.00043585, 0.00026702, 0.00043805, -0.00000114, 0.00000000],
+        [-6.27312532, -0.00043579, 0.00026698, 0.00043798, -0.00000114, 0.00000000],
+        [-6.27312546, -0.00043572, 0.00026695, 0.00043792, -0.00000114, 0.00000000],
+        [-6.27312561, -0.00043566, 0.00026691, 0.00043786, -0.00000114, 0.00000000],
+        [-6.27312576, -0.00043560, 0.00026687, 0.00043780, -0.00000114, 0.00000000],
+        [-6.27312590, -0.00043554, 0.00026683, 0.00043774, -0.00000114, 0.00000000],
+        [-6.27312605, -0.00043548, 0.00026680, 0.00043768, -0.00000114, 0.00000000],
+        [-6.27312620, -0.00043542, 0.00026676, 0.00043762, -0.00000114, 0.00000000],
+        [-6.27312634, -0.00043536, 0.00026672, 0.00043755, -0.00000114, 0.00000000],
+        [-6.27312649, -0.00043529, 0.00026668, 0.00043749, -0.00000114, 0.00000000],
+        [-6.27312664, -0.00043523, 0.00026665, 0.00043743, -0.00000114, 0.00000000],
+        [-6.27312678, -0.00043517, 0.00026661, 0.00043737, -0.00000114, 0.00000000],
+        [-6.27312693, -0.00043511, 0.00026657, 0.00043731, -0.00000114, 0.00000000],
+        [-6.27312708, -0.00043505, 0.00026653, 0.00043725, -0.00000114, 0.00000000],
+        [-6.27312722, -0.00043499, 0.00026650, 0.00043718, -0.00000114, 0.00000000],
+        [-6.27312737, -0.00043493, 0.00026646, 0.00043712, -0.00000114, 0.00000000],
+        [-6.27312752, -0.00043487, 0.00026642, 0.00043706, -0.00000114, 0.00000000],
+        [-6.27312766, -0.00043481, 0.00026638, 0.00043700, -0.00000114, 0.00000000],
+        [-6.27312781, -0.00043474, 0.00026635, 0.00043694, -0.00000114, 0.00000000],
+        [-6.27312795, -0.00043468, 0.00026631, 0.00043688, -0.00000114, 0.00000000],
+        [-6.27312810, -0.00043462, 0.00026627, 0.00043682, -0.00000114, 0.00000000],
+        [-6.27312825, -0.00043456, 0.00026623, 0.00043676, -0.00000114, 0.00000000],
+        [-6.27312839, -0.00043450, 0.00026620, 0.00043669, -0.00000114, 0.00000000],
+        [-6.27312854, -0.00043444, 0.00026616, 0.00043663, -0.00000114, 0.00000000],
+        [-6.27312868, -0.00043438, 0.00026612, 0.00043657, -0.00000114, 0.00000000],
+        [-6.27312883, -0.00043432, 0.00026608, 0.00043651, -0.00000114, 0.00000000],
+        [-6.27312898, -0.00043426, 0.00026605, 0.00043645, -0.00000114, 0.00000000],
+        [-6.27312912, -0.00043420, 0.00026601, 0.00043639, -0.00000114, 0.00000000],
+        [-6.27312927, -0.00043413, 0.00026597, 0.00043633, -0.00000114, 0.00000000],
+        [-6.27312941, -0.00043407, 0.00026593, 0.00043626, -0.00000114, 0.00000000],
+        [-6.27312956, -0.00043401, 0.00026590, 0.00043620, -0.00000114, 0.00000000],
+        [-6.27312970, -0.00043395, 0.00026586, 0.00043614, -0.00000114, 0.00000000],
+        [-6.27312985, -0.00043389, 0.00026582, 0.00043608, -0.00000114, 0.00000000],
+        [-6.27313000, -0.00043383, 0.00026579, 0.00043602, -0.00000114, 0.00000000],
+        [-6.27313014, -0.00043377, 0.00026575, 0.00043596, -0.00000114, 0.00000000],
+        [-6.27313029, -0.00043371, 0.00026571, 0.00043590, -0.00000114, 0.00000000],
+        [-6.27313043, -0.00043365, 0.00026567, 0.00043584, -0.00000114, 0.00000000],
+        [-6.27313058, -0.00043359, 0.00026564, 0.00043578, -0.00000114, 0.00000000],
+        [-6.27313072, -0.00043353, 0.00026560, 0.00043572, -0.00000114, 0.00000000],
+        [-6.27313087, -0.00043347, 0.00026556, 0.00043565, -0.00000114, 0.00000000],
+        [-6.27313101, -0.00043341, 0.00026552, 0.00043559, -0.00000114, 0.00000000],
+        [-6.27313116, -0.00043335, 0.00026549, 0.00043553, -0.00000114, 0.00000000],
+        [-6.27313130, -0.00043328, 0.00026545, 0.00043547, -0.00000114, 0.00000000],
+        [-6.27313145, -0.00043322, 0.00026541, 0.00043541, -0.00000114, 0.00000000],
+        [-6.27313159, -0.00043316, 0.00026538, 0.00043535, -0.00000114, 0.00000000],
+        [-6.27313174, -0.00043310, 0.00026534, 0.00043529, -0.00000114, 0.00000000],
+        [-6.27313188, -0.00043304, 0.00026530, 0.00043523, -0.00000114, 0.00000000],
+        [-6.27313203, -0.00043298, 0.00026526, 0.00043517, -0.00000114, 0.00000000],
+        [-6.27313217, -0.00043292, 0.00026523, 0.00043511, -0.00000114, 0.00000000],
+        [-6.27313232, -0.00043286, 0.00026519, 0.00043504, -0.00000114, 0.00000000],
+        [-6.27313246, -0.00043280, 0.00026515, 0.00043498, -0.00000114, 0.00000000],
+        [-6.27313261, -0.00043274, 0.00026512, 0.00043492, -0.00000114, 0.00000000],
+        [-6.27313275, -0.00043268, 0.00026508, 0.00043486, -0.00000114, 0.00000000],
+        [-6.27313290, -0.00043262, 0.00026504, 0.00043480, -0.00000114, 0.00000000],
+        [-6.27313304, -0.00043256, 0.00026501, 0.00043474, -0.00000114, 0.00000000],
+        [-6.27313319, -0.00043250, 0.00026497, 0.00043468, -0.00000114, 0.00000000],
+        [-6.27313333, -0.00043244, 0.00026493, 0.00043462, -0.00000114, 0.00000000],
+        [-6.27313348, -0.00043238, 0.00026489, 0.00043456, -0.00000114, 0.00000000],
+        [-6.27313362, -0.00043232, 0.00026486, 0.00043450, -0.00000114, 0.00000000],
+        [-6.27313377, -0.00043226, 0.00026482, 0.00043444, -0.00000114, 0.00000000],
+        [-6.27313391, -0.00043220, 0.00026478, 0.00043438, -0.00000114, 0.00000000],
+        [-6.27313405, -0.00043214, 0.00026475, 0.00043432, -0.00000114, 0.00000000],
+        [-6.27313420, -0.00043207, 0.00026471, 0.00043426, -0.00000114, 0.00000000],
+        [-6.27313434, -0.00043201, 0.00026467, 0.00043419, -0.00000114, 0.00000000],
+        [-6.27313449, -0.00043195, 0.00026464, 0.00043413, -0.00000114, 0.00000000],
+        [-6.27313463, -0.00043189, 0.00026460, 0.00043407, -0.00000114, 0.00000000],
+        [-6.27313478, -0.00043183, 0.00026456, 0.00043401, -0.00000114, 0.00000000],
+        [-6.27313492, -0.00043177, 0.00026452, 0.00043395, -0.00000114, 0.00000000],
+        [-6.27313506, -0.00043171, 0.00026449, 0.00043389, -0.00000114, 0.00000000],
+        [-6.27313521, -0.00043165, 0.00026445, 0.00043383, -0.00000114, 0.00000000],
+        [-6.27313535, -0.00043159, 0.00026441, 0.00043377, -0.00000114, 0.00000000],
+        [-6.27313550, -0.00043153, 0.00026438, 0.00043371, -0.00000114, 0.00000000],
+        [-6.27313564, -0.00043147, 0.00026434, 0.00043365, -0.00000114, 0.00000000],
+        [-6.27313578, -0.00043141, 0.00026430, 0.00043359, -0.00000114, 0.00000000],
+        [-6.27313593, -0.00043135, 0.00026427, 0.00043353, -0.00000114, 0.00000000],
+        [-6.27313607, -0.00043129, 0.00026423, 0.00043347, -0.00000114, 0.00000000],
+        [-6.27313622, -0.00043123, 0.00026419, 0.00043341, -0.00000114, 0.00000000],
+        [-6.27313636, -0.00043117, 0.00026416, 0.00043335, -0.00000114, 0.00000000],
+        [-6.27313650, -0.00043111, 0.00026412, 0.00043329, -0.00000114, 0.00000000],
+        [-6.27313665, -0.00043105, 0.00026408, 0.00043323, -0.00000114, 0.00000000],
+        [-6.27313679, -0.00043099, 0.00026405, 0.00043317, -0.00000114, 0.00000000],
+        [-6.27313693, -0.00043093, 0.00026401, 0.00043311, -0.00000114, 0.00000000],
+        [-6.27313708, -0.00043087, 0.00026397, 0.00043305, -0.00000114, 0.00000000],
+        [-6.27313722, -0.00043081, 0.00026394, 0.00043299, -0.00000114, 0.00000000],
+        [-6.27313737, -0.00043075, 0.00026390, 0.00043293, -0.00000114, 0.00000000],
+        [-6.27313751, -0.00043069, 0.00026386, 0.00043287, -0.00000114, 0.00000000],
+        [-6.27313765, -0.00043063, 0.00026382, 0.00043281, -0.00000114, 0.00000000],
+        [-6.27313780, -0.00043057, 0.00026379, 0.00043275, -0.00000114, 0.00000000],
+        [-6.27313794, -0.00043051, 0.00026375, 0.00043268, -0.00000114, 0.00000000],
+        [-6.27313808, -0.00043045, 0.00026371, 0.00043262, -0.00000114, 0.00000000],
+        [-6.27313823, -0.00043039, 0.00026368, 0.00043256, -0.00000114, 0.00000000],
+        [-6.27313837, -0.00043033, 0.00026364, 0.00043250, -0.00000114, 0.00000000],
+        [-6.27313851, -0.00043027, 0.00026360, 0.00043244, -0.00000114, 0.00000000],
+        [-6.27313865, -0.00043021, 0.00026357, 0.00043238, -0.00000114, 0.00000000],
+        [-6.27313880, -0.00043015, 0.00026353, 0.00043232, -0.00000114, 0.00000000],
+        [-6.27313894, -0.00043009, 0.00026349, 0.00043226, -0.00000114, 0.00000000],
+        [-6.27313908, -0.00043003, 0.00026346, 0.00043220, -0.00000114, 0.00000000],
+        [-6.27313923, -0.00042997, 0.00026342, 0.00043214, -0.00000114, 0.00000000],
+        [-6.27313937, -0.00042991, 0.00026338, 0.00043208, -0.00000114, 0.00000000],
+        [-6.27313951, -0.00042985, 0.00026335, 0.00043202, -0.00000114, 0.00000000],
+        [-6.27313966, -0.00042980, 0.00026331, 0.00043196, -0.00000114, 0.00000000],
+        [-6.27313980, -0.00042974, 0.00026328, 0.00043190, -0.00000114, 0.00000000],
+        [-6.27313994, -0.00042968, 0.00026324, 0.00043184, -0.00000114, 0.00000000],
+        [-6.27314008, -0.00042962, 0.00026320, 0.00043178, -0.00000114, 0.00000000],
+        [-6.27314023, -0.00042956, 0.00026317, 0.00043172, -0.00000114, 0.00000000],
+        [-6.27314037, -0.00042950, 0.00026313, 0.00043166, -0.00000114, 0.00000000],
+        [-6.27314051, -0.00042944, 0.00026309, 0.00043160, -0.00000114, 0.00000000],
+        [-6.27314065, -0.00042938, 0.00026306, 0.00043154, -0.00000114, 0.00000000],
+        [-6.27314080, -0.00042932, 0.00026302, 0.00043148, -0.00000114, 0.00000000],
+        [-6.27314094, -0.00042926, 0.00026298, 0.00043142, -0.00000114, 0.00000000],
+        [-6.27314108, -0.00042920, 0.00026295, 0.00043136, -0.00000114, 0.00000000],
+        [-6.27314122, -0.00042914, 0.00026291, 0.00043131, -0.00000114, 0.00000000],
+        [-6.27314137, -0.00042908, 0.00026287, 0.00043125, -0.00000114, 0.00000000],
+        [-6.27314151, -0.00042902, 0.00026284, 0.00043119, -0.00000114, 0.00000000],
+        [-6.27314165, -0.00042896, 0.00026280, 0.00043113, -0.00000114, 0.00000000],
+        [-6.27314179, -0.00042890, 0.00026276, 0.00043107, -0.00000114, 0.00000000],
+        [-6.27314194, -0.00042884, 0.00026273, 0.00043101, -0.00000114, 0.00000000],
+        [-6.27314208, -0.00042878, 0.00026269, 0.00043095, -0.00000114, 0.00000000],
+        [-6.27314222, -0.00042872, 0.00026265, 0.00043089, -0.00000114, 0.00000000],
+        [-6.27314236, -0.00042866, 0.00026262, 0.00043083, -0.00000114, 0.00000000],
+        [-6.27314250, -0.00042861, 0.00026258, 0.00043077, -0.00000114, 0.00000000],
+        [-6.27314265, -0.00042855, 0.00026255, 0.00043071, -0.00000114, 0.00000000],
+        [-6.27314279, -0.00042849, 0.00026251, 0.00043065, -0.00000114, 0.00000000],
+        [-6.27314293, -0.00042843, 0.00026247, 0.00043059, -0.00000114, 0.00000000],
+        [-6.27314307, -0.00042837, 0.00026244, 0.00043053, -0.00000114, 0.00000000],
+        [-6.27314321, -0.00042831, 0.00026240, 0.00043047, -0.00000114, 0.00000000],
+        [-6.27314336, -0.00042825, 0.00026236, 0.00043041, -0.00000114, 0.00000000],
+        [-6.27314350, -0.00042819, 0.00026233, 0.00043035, -0.00000114, 0.00000000],
+        [-6.27314364, -0.00042813, 0.00026229, 0.00043029, -0.00000114, 0.00000000],
+        [-6.27314378, -0.00042807, 0.00026226, 0.00043023, -0.00000114, 0.00000000],
+        [-6.27314392, -0.00042801, 0.00026222, 0.00043017, -0.00000114, 0.00000000],
+        [-6.27314406, -0.00042795, 0.00026218, 0.00043011, -0.00000114, 0.00000000],
+        [-6.27314421, -0.00042789, 0.00026215, 0.00043005, -0.00000114, 0.00000000],
+        [-6.27314435, -0.00042783, 0.00026211, 0.00042999, -0.00000114, 0.00000000],
+        [-6.27314449, -0.00042778, 0.00026207, 0.00042993, -0.00000114, 0.00000000],
+        [-6.27314463, -0.00042772, 0.00026204, 0.00042987, -0.00000114, 0.00000000],
+        [-6.27314477, -0.00042766, 0.00026200, 0.00042982, -0.00000114, 0.00000000],
+        [-6.27314491, -0.00042760, 0.00026197, 0.00042976, -0.00000114, 0.00000000],
+        [-6.27314505, -0.00042754, 0.00026193, 0.00042970, -0.00000114, 0.00000000],
+        [-6.27314520, -0.00042748, 0.00026189, 0.00042964, -0.00000114, 0.00000000],
+        [-6.27314534, -0.00042742, 0.00026186, 0.00042958, -0.00000114, 0.00000000],
+        [-6.27314548, -0.00042736, 0.00026182, 0.00042952, -0.00000114, 0.00000000],
+        [-6.27314562, -0.00042730, 0.00026178, 0.00042946, -0.00000114, 0.00000000],
+        [-6.27314576, -0.00042724, 0.00026175, 0.00042940, -0.00000114, 0.00000000],
+        [-6.27314590, -0.00042719, 0.00026171, 0.00042934, -0.00000114, 0.00000000],
+        [-6.27314604, -0.00042713, 0.00026168, 0.00042928, -0.00000114, 0.00000000],
+        [-6.27314618, -0.00042707, 0.00026164, 0.00042922, -0.00000114, 0.00000000],
+        [-6.27314633, -0.00042701, 0.00026160, 0.00042916, -0.00000114, 0.00000000],
+        [-6.27314647, -0.00042695, 0.00026157, 0.00042910, -0.00000114, 0.00000000],
+        [-6.27314661, -0.00042689, 0.00026153, 0.00042904, -0.00000114, 0.00000000],
+        [-6.27314675, -0.00042683, 0.00026150, 0.00042899, -0.00000114, 0.00000000],
+        [-6.27314689, -0.00042677, 0.00026146, 0.00042893, -0.00000114, 0.00000000],
+        [-6.27314703, -0.00042671, 0.00026142, 0.00042887, -0.00000114, 0.00000000],
+        [-6.27314717, -0.00042666, 0.00026139, 0.00042881, -0.00000114, 0.00000000],
+        [-6.27314731, -0.00042660, 0.00026135, 0.00042875, -0.00000114, 0.00000000],
+        [-6.27314745, -0.00042654, 0.00026132, 0.00042869, -0.00000114, 0.00000000],
+        [-6.27314759, -0.00042648, 0.00026128, 0.00042863, -0.00000114, 0.00000000],
+        [-6.27314773, -0.00042642, 0.00026124, 0.00042857, -0.00000114, 0.00000000],
+        [-6.27314787, -0.00042636, 0.00026121, 0.00042851, -0.00000114, 0.00000000],
+        [-6.27314801, -0.00042630, 0.00026117, 0.00042845, -0.00000114, 0.00000000],
+        [-6.27314815, -0.00042624, 0.00026114, 0.00042839, -0.00000114, 0.00000000],
+        [-6.27314830, -0.00042619, 0.00026110, 0.00042834, -0.00000114, 0.00000000],
+        [-6.27314844, -0.00042613, 0.00026106, 0.00042828, -0.00000114, 0.00000000],
+        [-6.27314858, -0.00042607, 0.00026103, 0.00042822, -0.00000114, 0.00000000],
+        [-6.27314872, -0.00042601, 0.00026099, 0.00042816, -0.00000114, 0.00000000],
+        [-6.27314886, -0.00042595, 0.00026096, 0.00042810, -0.00000114, 0.00000000],
+        [-6.27314900, -0.00042589, 0.00026092, 0.00042804, -0.00000114, 0.00000000],
+        [-6.27314914, -0.00042583, 0.00026088, 0.00042798, -0.00000114, 0.00000000],
+        [-6.27314928, -0.00042578, 0.00026085, 0.00042792, -0.00000114, 0.00000000],
+        [-6.27314942, -0.00042572, 0.00026081, 0.00042786, -0.00000114, 0.00000000],
+        [-6.27314956, -0.00042566, 0.00026078, 0.00042781, -0.00000114, 0.00000000],
+        [-6.27314970, -0.00042560, 0.00026074, 0.00042775, -0.00000114, 0.00000000],
+        [-6.27314984, -0.00042554, 0.00026070, 0.00042769, -0.00000114, 0.00000000],
+        [-6.27314998, -0.00042548, 0.00026067, 0.00042763, -0.00000114, 0.00000000],
+        [-6.27315012, -0.00042542, 0.00026063, 0.00042757, -0.00000114, 0.00000000],
+        [-6.27315026, -0.00042537, 0.00026060, 0.00042751, -0.00000114, 0.00000000],
+        [-6.27315040, -0.00042531, 0.00026056, 0.00042745, -0.00000114, 0.00000000],
+        [-6.27315054, -0.00042525, 0.00026052, 0.00042739, -0.00000114, 0.00000000],
+        [-6.27315068, -0.00042519, 0.00026049, 0.00042734, -0.00000114, 0.00000000],
+        [-6.27315082, -0.00042513, 0.00026045, 0.00042728, -0.00000114, 0.00000000],
+        [-6.27315096, -0.00042507, 0.00026042, 0.00042722, -0.00000114, 0.00000000],
+        [-6.27315110, -0.00042502, 0.00026038, 0.00042716, -0.00000114, 0.00000000],
+        [-6.27315124, -0.00042496, 0.00026035, 0.00042710, -0.00000114, 0.00000000],
+        [-6.27315138, -0.00042490, 0.00026031, 0.00042704, -0.00000114, 0.00000000],
+        [-6.27315152, -0.00042484, 0.00026027, 0.00042698, -0.00000114, 0.00000000],
+        [-6.27315165, -0.00042478, 0.00026024, 0.00042692, -0.00000114, 0.00000000],
+        [-6.27315179, -0.00042472, 0.00026020, 0.00042687, -0.00000114, 0.00000000],
+        [-6.27315193, -0.00042467, 0.00026017, 0.00042681, -0.00000114, 0.00000000],
+        [-6.27315207, -0.00042461, 0.00026013, 0.00042675, -0.00000114, 0.00000000],
+        [-6.27315221, -0.00042455, 0.00026010, 0.00042669, -0.00000114, 0.00000000],
+        [-6.27315235, -0.00042449, 0.00026006, 0.00042663, -0.00000114, 0.00000000],
+        [-6.27315249, -0.00042443, 0.00026002, 0.00042657, -0.00000114, 0.00000000],
+        [-6.27315263, -0.00042437, 0.00025999, 0.00042652, -0.00000114, 0.00000000],
+        [-6.27315277, -0.00042432, 0.00025995, 0.00042646, -0.00000114, 0.00000000],
+        [-6.27315291, -0.00042426, 0.00025992, 0.00042640, -0.00000114, 0.00000000],
+        [-6.27315305, -0.00042420, 0.00025988, 0.00042634, -0.00000114, 0.00000000],
+        [-6.27315319, -0.00042414, 0.00025985, 0.00042628, -0.00000114, 0.00000000],
+        [-6.27315333, -0.00042408, 0.00025981, 0.00042622, -0.00000114, 0.00000000],
+        [-6.27315347, -0.00042403, 0.00025978, 0.00042616, -0.00000114, 0.00000000],
+        [-6.27315360, -0.00042397, 0.00025974, 0.00042611, -0.00000114, 0.00000000],
+        [-6.27315374, -0.00042391, 0.00025970, 0.00042605, -0.00000114, 0.00000000],
+        [-6.27315388, -0.00042385, 0.00025967, 0.00042599, -0.00000114, 0.00000000],
+        [-6.27315402, -0.00042379, 0.00025963, 0.00042593, -0.00000114, 0.00000000],
+        [-6.27315416, -0.00042374, 0.00025960, 0.00042587, -0.00000114, 0.00000000],
+        [-6.27315430, -0.00042368, 0.00025956, 0.00042581, -0.00000114, 0.00000000],
+        [-6.27315444, -0.00042362, 0.00025953, 0.00042576, -0.00000114, 0.00000000],
+        [-6.27315458, -0.00042356, 0.00025949, 0.00042570, -0.00000114, 0.00000000],
+        [-6.27315472, -0.00042350, 0.00025946, 0.00042564, -0.00000114, 0.00000000],
+        [-6.27315485, -0.00042345, 0.00025942, 0.00042558, -0.00000114, 0.00000000],
+        [-6.27315499, -0.00042339, 0.00025938, 0.00042552, -0.00000114, 0.00000000],
+        [-6.27315513, -0.00042333, 0.00025935, 0.00042547, -0.00000114, 0.00000000],
+        [-6.27315527, -0.00042327, 0.00025931, 0.00042541, -0.00000114, 0.00000000],
+        [-6.27315541, -0.00042321, 0.00025928, 0.00042535, -0.00000114, 0.00000000],
+        [-6.27315555, -0.00042316, 0.00025924, 0.00042529, -0.00000114, 0.00000000],
+        [-6.27315569, -0.00042310, 0.00025921, 0.00042523, -0.00000114, 0.00000000],
+        [-6.27315582, -0.00042304, 0.00025917, 0.00042517, -0.00000114, 0.00000000],
+        [-6.27315596, -0.00042298, 0.00025914, 0.00042512, -0.00000114, 0.00000000],
+        [-6.27315610, -0.00042292, 0.00025910, 0.00042506, -0.00000114, 0.00000000],
+        [-6.27315624, -0.00042287, 0.00025907, 0.00042500, -0.00000114, 0.00000000],
+        [-6.27315638, -0.00042281, 0.00025903, 0.00042494, -0.00000114, 0.00000000],
+        [-6.27315652, -0.00042275, 0.00025899, 0.00042488, -0.00000114, 0.00000000],
+        [-6.27315665, -0.00042269, 0.00025896, 0.00042483, -0.00000114, 0.00000000],
+        [-6.27315679, -0.00042264, 0.00025892, 0.00042477, -0.00000114, 0.00000000],
+        [-6.27315693, -0.00042258, 0.00025889, 0.00042471, -0.00000114, 0.00000000],
+        [-6.27315707, -0.00042252, 0.00025885, 0.00042465, -0.00000114, 0.00000000],
+        [-6.27315721, -0.00042246, 0.00025882, 0.00042459, -0.00000114, 0.00000000],
+        [-6.27315734, -0.00042241, 0.00025878, 0.00042454, -0.00000114, 0.00000000],
+        [-6.27315748, -0.00042235, 0.00025875, 0.00042448, -0.00000114, 0.00000000],
+        [-6.27315762, -0.00042229, 0.00025871, 0.00042442, -0.00000114, 0.00000000],
+        [-6.27315776, -0.00042223, 0.00025868, 0.00042436, -0.00000114, 0.00000000],
+        [-6.27315790, -0.00042218, 0.00025864, 0.00042430, -0.00000114, 0.00000000],
+        [-6.27315803, -0.00042212, 0.00025861, 0.00042425, -0.00000114, 0.00000000],
+        [-6.27315817, -0.00042206, 0.00025857, 0.00042419, -0.00000114, 0.00000000],
+        [-6.27315831, -0.00042200, 0.00025854, 0.00042413, -0.00000114, 0.00000000],
+        [-6.27315845, -0.00042194, 0.00025850, 0.00042407, -0.00000114, 0.00000000],
+        [-6.27315858, -0.00042189, 0.00025846, 0.00042402, -0.00000114, 0.00000000],
+        [-6.27315872, -0.00042183, 0.00025843, 0.00042396, -0.00000114, 0.00000000],
+        [-6.27315886, -0.00042177, 0.00025839, 0.00042390, -0.00000114, 0.00000000],
+        [-6.27315900, -0.00042171, 0.00025836, 0.00042384, -0.00000114, 0.00000000],
+        [-6.27315913, -0.00042166, 0.00025832, 0.00042378, -0.00000114, 0.00000000],
+        [-6.27315927, -0.00042160, 0.00025829, 0.00042373, -0.00000114, 0.00000000],
+        [-6.27315941, -0.00042154, 0.00025825, 0.00042367, -0.00000114, 0.00000000],
+        [-6.27315955, -0.00042149, 0.00025822, 0.00042361, -0.00000114, 0.00000000],
+        [-6.27315968, -0.00042143, 0.00025818, 0.00042355, -0.00000114, 0.00000000],
+        [-6.27315982, -0.00042137, 0.00025815, 0.00042350, -0.00000114, 0.00000000],
+        [-6.27315996, -0.00042131, 0.00025811, 0.00042344, -0.00000114, 0.00000000],
+        [-6.27316010, -0.00042126, 0.00025808, 0.00042338, -0.00000114, 0.00000000],
+        [-6.27316023, -0.00042120, 0.00025804, 0.00042332, -0.00000114, 0.00000000],
+        [-6.27316037, -0.00042114, 0.00025801, 0.00042327, -0.00000114, 0.00000000],
+        [-6.27316051, -0.00042108, 0.00025797, 0.00042321, -0.00000114, 0.00000000],
+        [-6.27316064, -0.00042103, 0.00025794, 0.00042315, -0.00000114, 0.00000000],
+        [-6.27316078, -0.00042097, 0.00025790, 0.00042309, -0.00000114, 0.00000000],
+        [-6.27316092, -0.00042091, 0.00025787, 0.00042304, -0.00000114, 0.00000000],
+        [-6.27316105, -0.00042085, 0.00025783, 0.00042298, -0.00000114, 0.00000000],
+        [-6.27316119, -0.00042080, 0.00025780, 0.00042292, -0.00000114, 0.00000000],
+        [-6.27316133, -0.00042074, 0.00025776, 0.00042286, -0.00000114, 0.00000000],
+        [-6.27316147, -0.00042068, 0.00025773, 0.00042281, -0.00000114, 0.00000000],
+        [-6.27316160, -0.00042063, 0.00025769, 0.00042275, -0.00000114, 0.00000000],
+        [-6.27316174, -0.00042057, 0.00025766, 0.00042269, -0.00000114, 0.00000000],
+        [-6.27316188, -0.00042051, 0.00025762, 0.00042263, -0.00000114, 0.00000000],
+        [-6.27316201, -0.00042045, 0.00025759, 0.00042258, -0.00000114, 0.00000000],
+        [-6.27316215, -0.00042040, 0.00025755, 0.00042252, -0.00000114, 0.00000000],
+        [-6.27316229, -0.00042034, 0.00025752, 0.00042246, -0.00000114, 0.00000000],
+        [-6.27316242, -0.00042028, 0.00025748, 0.00042240, -0.00000114, 0.00000000],
+        [-6.27316256, -0.00042023, 0.00025745, 0.00042235, -0.00000114, 0.00000000],
+        [-6.27316270, -0.00042017, 0.00025741, 0.00042229, -0.00000114, 0.00000000],
+        [-6.27316283, -0.00042011, 0.00025738, 0.00042223, -0.00000114, 0.00000000],
+        [-6.27316297, -0.00042006, 0.00025734, 0.00042217, -0.00000114, 0.00000000],
+        [-6.27316311, -0.00042000, 0.00025731, 0.00042212, -0.00000114, 0.00000000],
+        [-6.27316324, -0.00041994, 0.00025727, 0.00042206, -0.00000114, 0.00000000],
+        [-6.27316338, -0.00041988, 0.00025724, 0.00042200, -0.00000114, 0.00000000],
+        [-6.27316351, -0.00041983, 0.00025720, 0.00042194, -0.00000114, 0.00000000],
+        [-6.27316365, -0.00041977, 0.00025717, 0.00042189, -0.00000114, 0.00000000],
+        [-6.27316379, -0.00041971, 0.00025713, 0.00042183, -0.00000114, 0.00000000],
+        [-6.27316392, -0.00041966, 0.00025710, 0.00042177, -0.00000114, 0.00000000],
+        [-6.27316406, -0.00041960, 0.00025706, 0.00042172, -0.00000114, 0.00000000],
+        [-6.27316420, -0.00041954, 0.00025703, 0.00042166, -0.00000114, 0.00000000],
+        [-6.27316433, -0.00041949, 0.00025699, 0.00042160, -0.00000114, 0.00000000],
+        [-6.27316447, -0.00041943, 0.00025696, 0.00042154, -0.00000114, 0.00000000],
+        [-6.27316460, -0.00041937, 0.00025692, 0.00042149, -0.00000114, 0.00000000],
+        [-6.27316474, -0.00041932, 0.00025689, 0.00042143, -0.00000114, 0.00000000],
+        [-6.27316488, -0.00041926, 0.00025685, 0.00042137, -0.00000114, 0.00000000],
+        [-6.27316501, -0.00041920, 0.00025682, 0.00042132, -0.00000114, 0.00000000],
+        [-6.27316515, -0.00041915, 0.00025678, 0.00042126, -0.00000114, 0.00000000],
+        [-6.27316528, -0.00041909, 0.00025675, 0.00042120, -0.00000114, 0.00000000],
+        [-6.27316542, -0.00041903, 0.00025671, 0.00042115, -0.00000114, 0.00000000],
+        [-6.27316555, -0.00041898, 0.00025668, 0.00042109, -0.00000114, 0.00000000],
+        [-6.27316569, -0.00041892, 0.00025664, 0.00042103, -0.00000114, 0.00000000],
+        [-6.27316583, -0.00041886, 0.00025661, 0.00042097, -0.00000114, 0.00000000],
+        [-6.27316596, -0.00041881, 0.00025658, 0.00042092, -0.00000114, 0.00000000],
+        [-6.27316610, -0.00041875, 0.00025654, 0.00042086, -0.00000114, 0.00000000],
+        [-6.27316623, -0.00041869, 0.00025651, 0.00042080, -0.00000114, 0.00000000],
+        [-6.27316637, -0.00041864, 0.00025647, 0.00042075, -0.00000114, 0.00000000],
+        [-6.27316650, -0.00041858, 0.00025644, 0.00042069, -0.00000114, 0.00000000],
+        [-6.27316664, -0.00041852, 0.00025640, 0.00042063, -0.00000114, 0.00000000],
+        [-6.27316677, -0.00041847, 0.00025637, 0.00042058, -0.00000114, 0.00000000],
+        [-6.27316691, -0.00041841, 0.00025633, 0.00042052, -0.00000114, 0.00000000],
+        [-6.27316705, -0.00041835, 0.00025630, 0.00042046, -0.00000114, 0.00000000],
+        [-6.27316718, -0.00041830, 0.00025626, 0.00042041, -0.00000114, 0.00000000],
+        [-6.27316732, -0.00041824, 0.00025623, 0.00042035, -0.00000114, 0.00000000],
+        [-6.27316745, -0.00041818, 0.00025619, 0.00042029, -0.00000114, 0.00000000],
+        [-6.27316759, -0.00041813, 0.00025616, 0.00042023, -0.00000114, 0.00000000],
+        [-6.27316772, -0.00041807, 0.00025612, 0.00042018, -0.00000114, 0.00000000],
+        [-6.27316786, -0.00041801, 0.00025609, 0.00042012, -0.00000114, 0.00000000],
+        [-6.27316799, -0.00041796, 0.00025606, 0.00042006, -0.00000114, 0.00000000],
+        [-6.27316813, -0.00041790, 0.00025602, 0.00042001, -0.00000114, 0.00000000],
+        [-6.27316826, -0.00041784, 0.00025599, 0.00041995, -0.00000114, 0.00000000],
+        [-6.27316840, -0.00041779, 0.00025595, 0.00041989, -0.00000114, 0.00000000],
+        [-6.27316853, -0.00041773, 0.00025592, 0.00041984, -0.00000114, 0.00000000],
+        [-6.27316867, -0.00041768, 0.00025588, 0.00041978, -0.00000114, 0.00000000],
+        [-6.27316880, -0.00041762, 0.00025585, 0.00041972, -0.00000114, 0.00000000],
+        [-6.27316894, -0.00041756, 0.00025581, 0.00041967, -0.00000114, 0.00000000],
+        [-6.27316907, -0.00041751, 0.00025578, 0.00041961, -0.00000114, 0.00000000],
+        [-6.27316921, -0.00041745, 0.00025574, 0.00041955, -0.00000114, 0.00000000],
+        [-6.27316934, -0.00041739, 0.00025571, 0.00041950, -0.00000114, 0.00000000],
+        [-6.27316948, -0.00041734, 0.00025568, 0.00041944, -0.00000114, 0.00000000],
+        [-6.27316961, -0.00041728, 0.00025564, 0.00041939, -0.00000114, 0.00000000],
+        [-6.27316974, -0.00041722, 0.00025561, 0.00041933, -0.00000114, 0.00000000],
+        [-6.27316988, -0.00041717, 0.00025557, 0.00041927, -0.00000114, 0.00000000],
+        [-6.27317001, -0.00041711, 0.00025554, 0.00041922, -0.00000114, 0.00000000],
+        [-6.27317015, -0.00041706, 0.00025550, 0.00041916, -0.00000114, 0.00000000],
+        [-6.27317028, -0.00041700, 0.00025547, 0.00041910, -0.00000114, 0.00000000],
+        [-6.27317042, -0.00041694, 0.00025543, 0.00041905, -0.00000114, 0.00000000],
+        [-6.27317055, -0.00041689, 0.00025540, 0.00041899, -0.00000114, 0.00000000],
+        [-6.27317069, -0.00041683, 0.00025537, 0.00041893, -0.00000114, 0.00000000],
+        [-6.27317082, -0.00041678, 0.00025533, 0.00041888, -0.00000114, 0.00000000],
+        [-6.27317095, -0.00041672, 0.00025530, 0.00041882, -0.00000114, 0.00000000],
+        [-6.27317109, -0.00041666, 0.00025526, 0.00041876, -0.00000114, 0.00000000],
+        [-6.27317122, -0.00041661, 0.00025523, 0.00041871, -0.00000114, 0.00000000],
+        [-6.27317136, -0.00041655, 0.00025519, 0.00041865, -0.00000114, 0.00000000],
+        [-6.27317149, -0.00041649, 0.00025516, 0.00041860, -0.00000114, 0.00000000],
+        [-6.27317163, -0.00041644, 0.00025512, 0.00041854, -0.00000114, 0.00000000],
+        [-6.27317176, -0.00041638, 0.00025509, 0.00041848, -0.00000114, 0.00000000],
+        [-6.27317189, -0.00041633, 0.00025506, 0.00041843, -0.00000114, 0.00000000],
+        [-6.27317203, -0.00041627, 0.00025502, 0.00041837, -0.00000114, 0.00000000],
+        [-6.27317216, -0.00041621, 0.00025499, 0.00041831, -0.00000114, 0.00000000],
+        [-6.27317230, -0.00041616, 0.00025495, 0.00041826, -0.00000114, 0.00000000],
+        [-6.27317243, -0.00041610, 0.00025492, 0.00041820, -0.00000114, 0.00000000],
+        [-6.27317256, -0.00041605, 0.00025488, 0.00041814, -0.00000114, 0.00000000],
+        [-6.27317270, -0.00041599, 0.00025485, 0.00041809, -0.00000114, 0.00000000],
+        [-6.27317283, -0.00041594, 0.00025482, 0.00041803, -0.00000114, 0.00000000],
+        [-6.27317297, -0.00041588, 0.00025478, 0.00041798, -0.00000114, 0.00000000],
+        [-6.27317310, -0.00041582, 0.00025475, 0.00041792, -0.00000115, 0.00000000],
+        [-6.27317323, -0.00041577, 0.00025471, 0.00041786, -0.00000115, 0.00000000],
+        [-6.27317337, -0.00041571, 0.00025468, 0.00041781, -0.00000115, 0.00000000],
+        [-6.27317350, -0.00041566, 0.00025465, 0.00041775, -0.00000115, 0.00000000],
+        [-6.27317363, -0.00041560, 0.00025461, 0.00041770, -0.00000115, 0.00000000],
+        [-6.27317377, -0.00041554, 0.00025458, 0.00041764, -0.00000115, 0.00000000],
+        [-6.27317390, -0.00041549, 0.00025454, 0.00041758, -0.00000115, 0.00000000],
+        [-6.27317403, -0.00041543, 0.00025451, 0.00041753, -0.00000115, 0.00000000],
+        [-6.27317417, -0.00041538, 0.00025447, 0.00041747, -0.00000115, 0.00000000],
+        [-6.27317430, -0.00041532, 0.00025444, 0.00041742, -0.00000115, 0.00000000],
+        [-6.27317443, -0.00041527, 0.00025441, 0.00041736, -0.00000115, 0.00000000],
+        [-6.27317457, -0.00041521, 0.00025437, 0.00041730, -0.00000115, 0.00000000],
+        [-6.27317470, -0.00041515, 0.00025434, 0.00041725, -0.00000115, 0.00000000],
+        [-6.27317483, -0.00041510, 0.00025430, 0.00041719, -0.00000115, 0.00000000],
+        [-6.27317497, -0.00041504, 0.00025427, 0.00041714, -0.00000115, 0.00000000],
+        [-6.27317510, -0.00041499, 0.00025424, 0.00041708, -0.00000115, 0.00000000],
+        [-6.27317523, -0.00041493, 0.00025420, 0.00041702, -0.00000115, 0.00000000],
+        [-6.27317537, -0.00041488, 0.00025417, 0.00041697, -0.00000115, 0.00000000],
+        [-6.27317550, -0.00041482, 0.00025413, 0.00041691, -0.00000115, 0.00000000],
+        [-6.27317563, -0.00041476, 0.00025410, 0.00041686, -0.00000115, 0.00000000],
+        [-6.27317577, -0.00041471, 0.00025406, 0.00041680, -0.00000115, 0.00000000],
+        [-6.27317590, -0.00041465, 0.00025403, 0.00041674, -0.00000115, 0.00000000],
+        [-6.27317603, -0.00041460, 0.00025400, 0.00041669, -0.00000115, 0.00000000],
+        [-6.27317616, -0.00041454, 0.00025396, 0.00041663, -0.00000115, 0.00000000],
+        [-6.27317630, -0.00041449, 0.00025393, 0.00041658, -0.00000115, 0.00000000],
+        [-6.27317643, -0.00041443, 0.00025389, 0.00041652, -0.00000115, 0.00000000],
+        [-6.27317656, -0.00041438, 0.00025386, 0.00041647, -0.00000115, 0.00000000],
+        [-6.27317670, -0.00041432, 0.00025383, 0.00041641, -0.00000115, 0.00000000],
+        [-6.27317683, -0.00041427, 0.00025379, 0.00041635, -0.00000115, 0.00000000],
+        [-6.27317696, -0.00041421, 0.00025376, 0.00041630, -0.00000115, 0.00000000],
+        [-6.27317709, -0.00041415, 0.00025372, 0.00041624, -0.00000115, 0.00000000],
+        [-6.27317723, -0.00041410, 0.00025369, 0.00041619, -0.00000115, 0.00000000],
+        [-6.27317736, -0.00041404, 0.00025366, 0.00041613, -0.00000115, 0.00000000],
+        [-6.27317749, -0.00041399, 0.00025362, 0.00041608, -0.00000115, 0.00000000],
+        [-6.27317762, -0.00041393, 0.00025359, 0.00041602, -0.00000115, 0.00000000],
+        [-6.27317776, -0.00041388, 0.00025355, 0.00041596, -0.00000115, 0.00000000],
+        [-6.27317789, -0.00041382, 0.00025352, 0.00041591, -0.00000115, 0.00000000],
+        [-6.27317802, -0.00041377, 0.00025349, 0.00041585, -0.00000115, 0.00000000],
+        [-6.27317815, -0.00041371, 0.00025345, 0.00041580, -0.00000115, 0.00000000],
+        [-6.27317829, -0.00041366, 0.00025342, 0.00041574, -0.00000115, 0.00000000],
+        [-6.27317842, -0.00041360, 0.00025339, 0.00041569, -0.00000115, 0.00000000],
+        [-6.27317855, -0.00041355, 0.00025335, 0.00041563, -0.00000115, 0.00000000],
+        [-6.27317868, -0.00041349, 0.00025332, 0.00041558, -0.00000115, 0.00000000],
+        [-6.27317882, -0.00041344, 0.00025328, 0.00041552, -0.00000115, 0.00000000],
+        [-6.27317895, -0.00041338, 0.00025325, 0.00041546, -0.00000115, 0.00000000],
+        [-6.27317908, -0.00041333, 0.00025322, 0.00041541, -0.00000115, 0.00000000],
+        [-6.27317921, -0.00041327, 0.00025318, 0.00041535, -0.00000115, 0.00000000],
+        [-6.27317934, -0.00041321, 0.00025315, 0.00041530, -0.00000115, 0.00000000],
+        [-6.27317948, -0.00041316, 0.00025311, 0.00041524, -0.00000115, 0.00000000],
+        [-6.27317961, -0.00041310, 0.00025308, 0.00041519, -0.00000115, 0.00000000],
+        [-6.27317974, -0.00041305, 0.00025305, 0.00041513, -0.00000115, 0.00000000],
+        [-6.27317987, -0.00041299, 0.00025301, 0.00041508, -0.00000115, 0.00000000],
+        [-6.27318000, -0.00041294, 0.00025298, 0.00041502, -0.00000115, 0.00000000],
+        [-6.27318014, -0.00041288, 0.00025295, 0.00041497, -0.00000115, 0.00000000],
+        [-6.27318027, -0.00041283, 0.00025291, 0.00041491, -0.00000115, 0.00000000],
+        [-6.27318040, -0.00041277, 0.00025288, 0.00041485, -0.00000115, 0.00000000],
+        [-6.27318053, -0.00041272, 0.00025284, 0.00041480, -0.00000115, 0.00000000],
+        [-6.27318066, -0.00041266, 0.00025281, 0.00041474, -0.00000115, 0.00000000],
+        [-6.27318079, -0.00041261, 0.00025278, 0.00041469, -0.00000115, 0.00000000],
+        [-6.27318093, -0.00041255, 0.00025274, 0.00041463, -0.00000115, 0.00000000],
+        [-6.27318106, -0.00041250, 0.00025271, 0.00041458, -0.00000115, 0.00000000],
+        [-6.27318119, -0.00041244, 0.00025268, 0.00041452, -0.00000115, 0.00000000],
+        [-6.27318132, -0.00041239, 0.00025264, 0.00041447, -0.00000115, 0.00000000],
+        [-6.27318145, -0.00041233, 0.00025261, 0.00041441, -0.00000115, 0.00000000],
+        [-6.27318158, -0.00041228, 0.00025258, 0.00041436, -0.00000115, 0.00000000],
+        [-6.27318171, -0.00041222, 0.00025254, 0.00041430, -0.00000115, 0.00000000],
+        [-6.27318185, -0.00041217, 0.00025251, 0.00041425, -0.00000115, 0.00000000],
+        [-6.27318198, -0.00041211, 0.00025247, 0.00041419, -0.00000115, 0.00000000],
+        [-6.27318211, -0.00041206, 0.00025244, 0.00041414, -0.00000115, 0.00000000],
+        [-6.27318224, -0.00041200, 0.00025241, 0.00041408, -0.00000115, 0.00000000],
+        [-6.27318237, -0.00041195, 0.00025237, 0.00041403, -0.00000115, 0.00000000],
+        [-6.27318250, -0.00041190, 0.00025234, 0.00041397, -0.00000115, 0.00000000],
+        [-6.27318263, -0.00041184, 0.00025231, 0.00041392, -0.00000115, 0.00000000],
+        [-6.27318276, -0.00041179, 0.00025227, 0.00041386, -0.00000115, 0.00000000],
+        [-6.27318290, -0.00041173, 0.00025224, 0.00041381, -0.00000115, 0.00000000],
+        [-6.27318303, -0.00041168, 0.00025221, 0.00041375, -0.00000115, 0.00000000],
+        [-6.27318316, -0.00041162, 0.00025217, 0.00041370, -0.00000115, 0.00000000],
+        [-6.27318329, -0.00041157, 0.00025214, 0.00041364, -0.00000115, 0.00000000],
+        [-6.27318342, -0.00041151, 0.00025210, 0.00041359, -0.00000115, 0.00000000],
+        [-6.27318355, -0.00041146, 0.00025207, 0.00041353, -0.00000115, 0.00000000],
+        [-6.27318368, -0.00041140, 0.00025204, 0.00041348, -0.00000115, 0.00000000],
+        [-6.27318381, -0.00041135, 0.00025200, 0.00041342, -0.00000115, 0.00000000],
+        [-6.27318394, -0.00041129, 0.00025197, 0.00041337, -0.00000115, 0.00000000],
+        [-6.27318407, -0.00041124, 0.00025194, 0.00041331, -0.00000115, 0.00000000],
+        [-6.27318420, -0.00041118, 0.00025190, 0.00041326, -0.00000115, 0.00000000],
+        [-6.27318434, -0.00041113, 0.00025187, 0.00041320, -0.00000115, 0.00000000],
+        [-6.27318447, -0.00041107, 0.00025184, 0.00041315, -0.00000115, 0.00000000],
+        [-6.27318460, -0.00041102, 0.00025180, 0.00041309, -0.00000115, 0.00000000],
+        [-6.27318473, -0.00041097, 0.00025177, 0.00041304, -0.00000115, 0.00000000],
+        [-6.27318486, -0.00041091, 0.00025174, 0.00041298, -0.00000115, 0.00000000],
+        [-6.27318499, -0.00041086, 0.00025170, 0.00041293, -0.00000115, 0.00000000],
+        [-6.27318512, -0.00041080, 0.00025167, 0.00041287, -0.00000115, 0.00000000],
+        [-6.27318525, -0.00041075, 0.00025164, 0.00041282, -0.00000115, 0.00000000],
+        [-6.27318538, -0.00041069, 0.00025160, 0.00041276, -0.00000115, 0.00000000],
+        [-6.27318551, -0.00041064, 0.00025157, 0.00041271, -0.00000115, 0.00000000],
+        [-6.27318564, -0.00041058, 0.00025154, 0.00041265, -0.00000115, 0.00000000],
+        [-6.27318577, -0.00041053, 0.00025150, 0.00041260, -0.00000115, 0.00000000],
+        [-6.27318590, -0.00041048, 0.00025147, 0.00041254, -0.00000115, 0.00000000],
+        [-6.27318603, -0.00041042, 0.00025144, 0.00041249, -0.00000115, 0.00000000],
+        [-6.27318616, -0.00041037, 0.00025140, 0.00041243, -0.00000115, 0.00000000],
+        [-6.27318629, -0.00041031, 0.00025137, 0.00041238, -0.00000115, 0.00000000],
+        [-6.27318642, -0.00041026, 0.00025134, 0.00041233, -0.00000115, 0.00000000],
+        [-6.27318655, -0.00041020, 0.00025130, 0.00041227, -0.00000115, 0.00000000],
+        [-6.27318668, -0.00041015, 0.00025127, 0.00041222, -0.00000115, 0.00000000],
+        [-6.27318681, -0.00041009, 0.00025124, 0.00041216, -0.00000115, 0.00000000],
+        [-6.27318694, -0.00041004, 0.00025120, 0.00041211, -0.00000115, 0.00000000],
+        [-6.27318707, -0.00040999, 0.00025117, 0.00041205, -0.00000115, 0.00000000],
+        [-6.27318720, -0.00040993, 0.00025114, 0.00041200, -0.00000115, 0.00000000],
+        [-6.27318733, -0.00040988, 0.00025110, 0.00041194, -0.00000115, 0.00000000],
+        [-6.27318746, -0.00040982, 0.00025107, 0.00041189, -0.00000115, 0.00000000],
+        [-6.27318759, -0.00040977, 0.00025104, 0.00041183, -0.00000115, 0.00000000],
+        [-6.27318772, -0.00040971, 0.00025100, 0.00041178, -0.00000115, 0.00000000],
+        [-6.27318785, -0.00040966, 0.00025097, 0.00041173, -0.00000115, 0.00000000],
+        [-6.27318798, -0.00040961, 0.00025094, 0.00041167, -0.00000115, 0.00000000],
+        [-6.27318811, -0.00040955, 0.00025090, 0.00041162, -0.00000115, 0.00000000],
+        [-6.27318824, -0.00040950, 0.00025087, 0.00041156, -0.00000115, 0.00000000],
+        [-6.27318837, -0.00040944, 0.00025084, 0.00041151, -0.00000115, 0.00000000],
+        [-6.27318850, -0.00040939, 0.00025080, 0.00041145, -0.00000115, 0.00000000],
+        [-6.27318863, -0.00040934, 0.00025077, 0.00041140, -0.00000115, 0.00000000],
+        [-6.27318876, -0.00040928, 0.00025074, 0.00041134, -0.00000115, 0.00000000],
+        [-6.27318889, -0.00040923, 0.00025070, 0.00041129, -0.00000115, 0.00000000],
+        [-6.27318902, -0.00040917, 0.00025067, 0.00041124, -0.00000115, 0.00000000],
+        [-6.27318915, -0.00040912, 0.00025064, 0.00041118, -0.00000115, 0.00000000],
+        [-6.27318928, -0.00040906, 0.00025060, 0.00041113, -0.00000115, 0.00000000],
+        [-6.27318941, -0.00040901, 0.00025057, 0.00041107, -0.00000115, 0.00000000],
+        [-6.27318954, -0.00040896, 0.00025054, 0.00041102, -0.00000115, 0.00000000],
+        [-6.27318967, -0.00040890, 0.00025051, 0.00041096, -0.00000115, 0.00000000],
+        [-6.27318979, -0.00040885, 0.00025047, 0.00041091, -0.00000115, 0.00000000],
+        [-6.27318992, -0.00040879, 0.00025044, 0.00041086, -0.00000115, 0.00000000],
+        [-6.27319005, -0.00040874, 0.00025041, 0.00041080, -0.00000115, 0.00000000],
+        [-6.27319018, -0.00040869, 0.00025037, 0.00041075, -0.00000115, 0.00000000],
+        [-6.27319031, -0.00040863, 0.00025034, 0.00041069, -0.00000115, 0.00000000],
+        [-6.27319044, -0.00040858, 0.00025031, 0.00041064, -0.00000115, 0.00000000],
+        [-6.27319057, -0.00040852, 0.00025027, 0.00041058, -0.00000115, 0.00000000],
+        [-6.27319070, -0.00040847, 0.00025024, 0.00041053, -0.00000115, 0.00000000],
+        [-6.27319083, -0.00040842, 0.00025021, 0.00041048, -0.00000115, 0.00000000],
+        [-6.27319096, -0.00040836, 0.00025017, 0.00041042, -0.00000115, 0.00000000],
+        [-6.27319109, -0.00040831, 0.00025014, 0.00041037, -0.00000115, 0.00000000],
+        [-6.27319121, -0.00040826, 0.00025011, 0.00041031, -0.00000115, 0.00000000],
+        [-6.27319134, -0.00040820, 0.00025008, 0.00041026, -0.00000115, 0.00000000],
+        [-6.27319147, -0.00040815, 0.00025004, 0.00041021, -0.00000115, 0.00000000],
+        [-6.27319160, -0.00040809, 0.00025001, 0.00041015, -0.00000115, 0.00000000],
+        [-6.27319173, -0.00040804, 0.00024998, 0.00041010, -0.00000115, 0.00000000],
+        [-6.27319186, -0.00040799, 0.00024994, 0.00041004, -0.00000115, 0.00000000],
+        [-6.27319199, -0.00040793, 0.00024991, 0.00040999, -0.00000115, 0.00000000],
+        [-6.27319212, -0.00040788, 0.00024988, 0.00040993, -0.00000115, 0.00000000],
+        [-6.27319224, -0.00040783, 0.00024985, 0.00040988, -0.00000115, 0.00000000],
+        [-6.27319237, -0.00040777, 0.00024981, 0.00040983, -0.00000115, 0.00000000],
+        [-6.27319250, -0.00040772, 0.00024978, 0.00040977, -0.00000115, 0.00000000],
+        [-6.27319263, -0.00040766, 0.00024975, 0.00040972, -0.00000115, 0.00000000],
+        [-6.27319276, -0.00040761, 0.00024971, 0.00040966, -0.00000115, 0.00000000],
+        [-6.27319289, -0.00040756, 0.00024968, 0.00040961, -0.00000115, 0.00000000],
+        [-6.27319302, -0.00040750, 0.00024965, 0.00040956, -0.00000115, 0.00000000],
+        [-6.27319314, -0.00040745, 0.00024961, 0.00040950, -0.00000115, 0.00000000],
+        [-6.27319327, -0.00040740, 0.00024958, 0.00040945, -0.00000115, 0.00000000],
+        [-6.27319340, -0.00040734, 0.00024955, 0.00040940, -0.00000115, 0.00000000],
+        [-6.27319353, -0.00040729, 0.00024952, 0.00040934, -0.00000115, 0.00000000],
+        [-6.27319366, -0.00040724, 0.00024948, 0.00040929, -0.00000115, 0.00000000],
+        [-6.27319379, -0.00040718, 0.00024945, 0.00040923, -0.00000115, 0.00000000],
+        [-6.27319391, -0.00040713, 0.00024942, 0.00040918, -0.00000115, 0.00000000],
+        [-6.27319404, -0.00040707, 0.00024938, 0.00040913, -0.00000115, 0.00000000],
+        [-6.27319417, -0.00040702, 0.00024935, 0.00040907, -0.00000115, 0.00000000],
+        [-6.27319430, -0.00040697, 0.00024932, 0.00040902, -0.00000115, 0.00000000],
+        [-6.27319443, -0.00040691, 0.00024929, 0.00040896, -0.00000115, 0.00000000],
+        [-6.27319455, -0.00040686, 0.00024925, 0.00040891, -0.00000115, 0.00000000],
+        [-6.27319468, -0.00040681, 0.00024922, 0.00040886, -0.00000115, 0.00000000],
+        [-6.27319481, -0.00040675, 0.00024919, 0.00040880, -0.00000115, 0.00000000],
+        [-6.27319494, -0.00040670, 0.00024916, 0.00040875, -0.00000115, 0.00000000],
+        [-6.27319507, -0.00040665, 0.00024912, 0.00040870, -0.00000115, 0.00000000],
+        [-6.27319519, -0.00040659, 0.00024909, 0.00040864, -0.00000115, 0.00000000],
+        [-6.27319532, -0.00040654, 0.00024906, 0.00040859, -0.00000115, 0.00000000],
+        [-6.27319545, -0.00040649, 0.00024902, 0.00040854, -0.00000115, 0.00000000],
+        [-6.27319558, -0.00040643, 0.00024899, 0.00040848, -0.00000115, 0.00000000],
+        [-6.27319571, -0.00040638, 0.00024896, 0.00040843, -0.00000115, 0.00000000],
+        [-6.27319583, -0.00040633, 0.00024893, 0.00040837, -0.00000115, 0.00000000],
+        [-6.27319596, -0.00040627, 0.00024889, 0.00040832, -0.00000115, 0.00000000],
+        [-6.27319609, -0.00040622, 0.00024886, 0.00040827, -0.00000115, 0.00000000],
+        [-6.27319622, -0.00040617, 0.00024883, 0.00040821, -0.00000115, 0.00000000],
+        [-6.27319634, -0.00040611, 0.00024880, 0.00040816, -0.00000115, 0.00000000],
+        [-6.27319647, -0.00040606, 0.00024876, 0.00040811, -0.00000115, 0.00000000],
+        [-6.27319660, -0.00040601, 0.00024873, 0.00040805, -0.00000115, 0.00000000],
+        [-6.27319673, -0.00040595, 0.00024870, 0.00040800, -0.00000115, 0.00000000],
+        [-6.27319685, -0.00040590, 0.00024867, 0.00040795, -0.00000115, 0.00000000],
+        [-6.27319698, -0.00040585, 0.00024863, 0.00040789, -0.00000115, 0.00000000],
+        [-6.27319711, -0.00040579, 0.00024860, 0.00040784, -0.00000115, 0.00000000],
+        [-6.27319724, -0.00040574, 0.00024857, 0.00040779, -0.00000115, 0.00000000],
+        [-6.27319736, -0.00040569, 0.00024853, 0.00040773, -0.00000115, 0.00000000],
+        [-6.27319749, -0.00040563, 0.00024850, 0.00040768, -0.00000115, 0.00000000],
+        [-6.27319762, -0.00040558, 0.00024847, 0.00040763, -0.00000115, 0.00000000],
+        [-6.27319774, -0.00040553, 0.00024844, 0.00040757, -0.00000115, 0.00000000],
+        [-6.27319787, -0.00040547, 0.00024840, 0.00040752, -0.00000115, 0.00000000],
+        [-6.27319800, -0.00040542, 0.00024837, 0.00040746, -0.00000115, 0.00000000],
+        [-6.27319813, -0.00040537, 0.00024834, 0.00040741, -0.00000115, 0.00000000],
+        [-6.27319825, -0.00040532, 0.00024831, 0.00040736, -0.00000115, 0.00000000],
+        [-6.27319838, -0.00040526, 0.00024827, 0.00040730, -0.00000115, 0.00000000],
+        [-6.27319851, -0.00040521, 0.00024824, 0.00040725, -0.00000115, 0.00000000],
+        [-6.27319863, -0.00040516, 0.00024821, 0.00040720, -0.00000115, 0.00000000],
+        [-6.27319876, -0.00040510, 0.00024818, 0.00040714, -0.00000115, 0.00000000],
+        [-6.27319889, -0.00040505, 0.00024814, 0.00040709, -0.00000115, 0.00000000],
+        [-6.27319901, -0.00040500, 0.00024811, 0.00040704, -0.00000115, 0.00000000],
+        [-6.27319914, -0.00040494, 0.00024808, 0.00040699, -0.00000115, 0.00000000],
+        [-6.27319927, -0.00040489, 0.00024805, 0.00040693, -0.00000115, 0.00000000],
+        [-6.27319939, -0.00040484, 0.00024801, 0.00040688, -0.00000115, 0.00000000],
+        [-6.27319952, -0.00040479, 0.00024798, 0.00040683, -0.00000115, 0.00000000],
+        [-6.27319965, -0.00040473, 0.00024795, 0.00040677, -0.00000115, 0.00000000],
+        [-6.27319977, -0.00040468, 0.00024792, 0.00040672, -0.00000115, 0.00000000],
+        [-6.27319990, -0.00040463, 0.00024788, 0.00040667, -0.00000115, 0.00000000],
+        [-6.27320003, -0.00040457, 0.00024785, 0.00040661, -0.00000115, 0.00000000],
+        [-6.27320015, -0.00040452, 0.00024782, 0.00040656, -0.00000115, 0.00000000],
+        [-6.27320028, -0.00040447, 0.00024779, 0.00040651, -0.00000115, 0.00000000],
+        [-6.27320041, -0.00040442, 0.00024776, 0.00040645, -0.00000115, 0.00000000],
+        [-6.27320053, -0.00040436, 0.00024772, 0.00040640, -0.00000115, 0.00000000],
+        [-6.27320066, -0.00040431, 0.00024769, 0.00040635, -0.00000115, 0.00000000],
+        [-6.27320079, -0.00040426, 0.00024766, 0.00040629, -0.00000115, 0.00000000],
+        [-6.27320091, -0.00040420, 0.00024763, 0.00040624, -0.00000115, 0.00000000],
+        [-6.27320104, -0.00040415, 0.00024759, 0.00040619, -0.00000115, 0.00000000],
+        [-6.27320117, -0.00040410, 0.00024756, 0.00040613, -0.00000115, 0.00000000],
+        [-6.27320129, -0.00040405, 0.00024753, 0.00040608, -0.00000115, 0.00000000],
+        [-6.27320142, -0.00040399, 0.00024750, 0.00040603, -0.00000115, 0.00000000],
+        [-6.27320154, -0.00040394, 0.00024746, 0.00040598, -0.00000115, 0.00000000],
+        [-6.27320167, -0.00040389, 0.00024743, 0.00040592, -0.00000115, 0.00000000],
+        [-6.27320180, -0.00040383, 0.00024740, 0.00040587, -0.00000115, 0.00000000],
+        [-6.27320192, -0.00040378, 0.00024737, 0.00040582, -0.00000115, 0.00000000],
+        [-6.27320205, -0.00040373, 0.00024733, 0.00040576, -0.00000115, 0.00000000],
+        [-6.27320217, -0.00040368, 0.00024730, 0.00040571, -0.00000115, 0.00000000],
+        [-6.27320230, -0.00040362, 0.00024727, 0.00040566, -0.00000115, 0.00000000],
+        [-6.27320243, -0.00040357, 0.00024724, 0.00040561, -0.00000115, 0.00000000],
+        [-6.27320255, -0.00040352, 0.00024721, 0.00040555, -0.00000115, 0.00000000],
+        [-6.27320268, -0.00040347, 0.00024717, 0.00040550, -0.00000115, 0.00000000],
+        [-6.27320280, -0.00040341, 0.00024714, 0.00040545, -0.00000115, 0.00000000],
+        [-6.27320293, -0.00040336, 0.00024711, 0.00040539, -0.00000115, 0.00000000],
+        [-6.27320306, -0.00040331, 0.00024708, 0.00040534, -0.00000115, 0.00000000],
+        [-6.27320318, -0.00040326, 0.00024704, 0.00040529, -0.00000115, 0.00000000],
+        [-6.27320331, -0.00040320, 0.00024701, 0.00040524, -0.00000115, 0.00000000],
+        [-6.27320343, -0.00040315, 0.00024698, 0.00040518, -0.00000115, 0.00000000],
+        [-6.27320356, -0.00040310, 0.00024695, 0.00040513, -0.00000115, 0.00000000],
+        [-6.27320368, -0.00040305, 0.00024692, 0.00040508, -0.00000115, 0.00000000],
+        [-6.27320381, -0.00040299, 0.00024688, 0.00040502, -0.00000115, 0.00000000],
+        [-6.27320394, -0.00040294, 0.00024685, 0.00040497, -0.00000115, 0.00000000],
+        [-6.27320406, -0.00040289, 0.00024682, 0.00040492, -0.00000115, 0.00000000],
+        [-6.27320419, -0.00040284, 0.00024679, 0.00040487, -0.00000115, 0.00000000],
+        [-6.27320431, -0.00040278, 0.00024676, 0.00040481, -0.00000115, 0.00000000],
+        [-6.27320444, -0.00040273, 0.00024672, 0.00040476, -0.00000115, 0.00000000],
+        [-6.27320456, -0.00040268, 0.00024669, 0.00040471, -0.00000115, 0.00000000],
+        [-6.27320469, -0.00040263, 0.00024666, 0.00040466, -0.00000115, 0.00000000],
+        [-6.27320481, -0.00040257, 0.00024663, 0.00040460, -0.00000115, 0.00000000],
+        [-6.27320494, -0.00040252, 0.00024659, 0.00040455, -0.00000115, 0.00000000],
+        [-6.27320506, -0.00040247, 0.00024656, 0.00040450, -0.00000115, 0.00000000],
+        [-6.27320519, -0.00040242, 0.00024653, 0.00040445, -0.00000115, 0.00000000],
+        [-6.27320532, -0.00040237, 0.00024650, 0.00040439, -0.00000115, 0.00000000],
+        [-6.27320544, -0.00040231, 0.00024647, 0.00040434, -0.00000115, 0.00000000],
+        [-6.27320557, -0.00040226, 0.00024643, 0.00040429, -0.00000115, 0.00000000],
+        [-6.27320569, -0.00040221, 0.00024640, 0.00040424, -0.00000115, 0.00000000],
+        [-6.27320582, -0.00040216, 0.00024637, 0.00040418, -0.00000115, 0.00000000],
+        [-6.27320594, -0.00040210, 0.00024634, 0.00040413, -0.00000115, 0.00000000],
+        [-6.27320607, -0.00040205, 0.00024631, 0.00040408, -0.00000115, 0.00000000],
+        [-6.27320619, -0.00040200, 0.00024627, 0.00040403, -0.00000115, 0.00000000],
+        [-6.27320632, -0.00040195, 0.00024624, 0.00040397, -0.00000115, 0.00000000],
+        [-6.27320644, -0.00040190, 0.00024621, 0.00040392, -0.00000115, 0.00000000],
+        [-6.27320657, -0.00040184, 0.00024618, 0.00040387, -0.00000115, 0.00000000],
+        [-6.27320669, -0.00040179, 0.00024615, 0.00040382, -0.00000115, 0.00000000],
+        [-6.27320682, -0.00040174, 0.00024611, 0.00040376, -0.00000115, 0.00000000],
+        [-6.27320694, -0.00040169, 0.00024608, 0.00040371, -0.00000115, 0.00000000],
+        [-6.27320706, -0.00040163, 0.00024605, 0.00040366, -0.00000115, 0.00000000],
+        [-6.27320719, -0.00040158, 0.00024602, 0.00040361, -0.00000115, 0.00000000],
+        [-6.27320731, -0.00040153, 0.00024599, 0.00040355, -0.00000115, 0.00000000],
+        [-6.27320744, -0.00040148, 0.00024595, 0.00040350, -0.00000115, 0.00000000],
+        [-6.27320756, -0.00040143, 0.00024592, 0.00040345, -0.00000115, 0.00000000],
+        [-6.27320769, -0.00040137, 0.00024589, 0.00040340, -0.00000115, 0.00000000],
+        [-6.27320781, -0.00040132, 0.00024586, 0.00040334, -0.00000115, 0.00000000],
+        [-6.27320794, -0.00040127, 0.00024583, 0.00040329, -0.00000115, 0.00000000],
+        [-6.27320806, -0.00040122, 0.00024580, 0.00040324, -0.00000115, 0.00000000],
+        [-6.27320819, -0.00040117, 0.00024576, 0.00040319, -0.00000115, 0.00000000],
+        [-6.27320831, -0.00040111, 0.00024573, 0.00040313, -0.00000115, 0.00000000],
+        [-6.27320843, -0.00040106, 0.00024570, 0.00040308, -0.00000115, 0.00000000],
+        [-6.27320856, -0.00040101, 0.00024567, 0.00040303, -0.00000115, 0.00000000],
+        [-6.27320868, -0.00040096, 0.00024564, 0.00040298, -0.00000115, 0.00000000],
+        [-6.27320881, -0.00040091, 0.00024560, 0.00040293, -0.00000115, 0.00000000],
+        [-6.27320893, -0.00040085, 0.00024557, 0.00040287, -0.00000115, 0.00000000],
+        [-6.27320906, -0.00040080, 0.00024554, 0.00040282, -0.00000115, 0.00000000],
+        [-6.27320918, -0.00040075, 0.00024551, 0.00040277, -0.00000115, 0.00000000],
+        [-6.27320930, -0.00040070, 0.00024548, 0.00040272, -0.00000115, 0.00000000],
+        [-6.27320943, -0.00040065, 0.00024545, 0.00040267, -0.00000115, 0.00000000],
+        [-6.27320955, -0.00040059, 0.00024541, 0.00040261, -0.00000115, 0.00000000],
+        [-6.27320968, -0.00040054, 0.00024538, 0.00040256, -0.00000115, 0.00000000],
+        [-6.27320980, -0.00040049, 0.00024535, 0.00040251, -0.00000115, 0.00000000],
+        [-6.27320993, -0.00040044, 0.00024532, 0.00040246, -0.00000115, 0.00000000],
+        [-6.27321005, -0.00040039, 0.00024529, 0.00040240, -0.00000115, 0.00000000],
+        [-6.27321017, -0.00040034, 0.00024525, 0.00040235, -0.00000115, 0.00000000],
+        [-6.27321030, -0.00040028, 0.00024522, 0.00040230, -0.00000115, 0.00000000],
+        [-6.27321042, -0.00040023, 0.00024519, 0.00040225, -0.00000115, 0.00000000],
+        [-6.27321054, -0.00040018, 0.00024516, 0.00040220, -0.00000115, 0.00000000],
+        [-6.27321067, -0.00040013, 0.00024513, 0.00040214, -0.00000115, 0.00000000],
+        [-6.27321079, -0.00040008, 0.00024510, 0.00040209, -0.00000115, 0.00000000],
+        [-6.27321092, -0.00040003, 0.00024506, 0.00040204, -0.00000115, 0.00000000],
+        [-6.27321104, -0.00039997, 0.00024503, 0.00040199, -0.00000115, 0.00000000],
+        [-6.27321116, -0.00039992, 0.00024500, 0.00040194, -0.00000115, 0.00000000],
+        [-6.27321129, -0.00039987, 0.00024497, 0.00040189, -0.00000115, 0.00000000],
+        [-6.27321141, -0.00039982, 0.00024494, 0.00040183, -0.00000115, 0.00000000],
+        [-6.27321153, -0.00039977, 0.00024491, 0.00040178, -0.00000115, 0.00000000],
+        [-6.27321166, -0.00039972, 0.00024487, 0.00040173, -0.00000115, 0.00000000],
+        [-6.27321178, -0.00039966, 0.00024484, 0.00040168, -0.00000115, 0.00000000],
+        [-6.27321191, -0.00039961, 0.00024481, 0.00040163, -0.00000115, 0.00000000],
+        [-6.27321203, -0.00039956, 0.00024478, 0.00040157, -0.00000115, 0.00000000],
+        [-6.27321215, -0.00039951, 0.00024475, 0.00040152, -0.00000115, 0.00000000],
+        [-6.27321228, -0.00039946, 0.00024472, 0.00040147, -0.00000115, 0.00000000],
+        [-6.27321240, -0.00039941, 0.00024468, 0.00040142, -0.00000115, 0.00000000],
+        [-6.27321252, -0.00039935, 0.00024465, 0.00040137, -0.00000115, 0.00000000],
+        [-6.27321265, -0.00039930, 0.00024462, 0.00040131, -0.00000115, 0.00000000],
+        [-6.27321277, -0.00039925, 0.00024459, 0.00040126, -0.00000115, 0.00000000],
+        [-6.27321289, -0.00039920, 0.00024456, 0.00040121, -0.00000115, 0.00000000],
+        [-6.27321302, -0.00039915, 0.00024453, 0.00040116, -0.00000115, 0.00000000],
+        [-6.27321314, -0.00039910, 0.00024450, 0.00040111, -0.00000115, 0.00000000],
+        [-6.27321326, -0.00039905, 0.00024446, 0.00040106, -0.00000115, 0.00000000],
+        [-6.27321338, -0.00039899, 0.00024443, 0.00040100, -0.00000115, 0.00000000],
+        [-6.27321351, -0.00039894, 0.00024440, 0.00040095, -0.00000115, 0.00000000],
+        [-6.27321363, -0.00039889, 0.00024437, 0.00040090, -0.00000115, 0.00000000],
+        [-6.27321375, -0.00039884, 0.00024434, 0.00040085, -0.00000115, 0.00000000],
+        [-6.27321388, -0.00039879, 0.00024431, 0.00040080, -0.00000115, 0.00000000],
+        [-6.27321400, -0.00039874, 0.00024427, 0.00040075, -0.00000115, 0.00000000],
+        [-6.27321412, -0.00039869, 0.00024424, 0.00040069, -0.00000115, 0.00000000],
+        [-6.27321425, -0.00039863, 0.00024421, 0.00040064, -0.00000115, 0.00000000],
+        [-6.27321437, -0.00039858, 0.00024418, 0.00040059, -0.00000115, 0.00000000],
+        [-6.27321449, -0.00039853, 0.00024415, 0.00040054, -0.00000115, 0.00000000],
+        [-6.27321461, -0.00039848, 0.00024412, 0.00040049, -0.00000115, 0.00000000],
+        [-6.27321474, -0.00039843, 0.00024409, 0.00040044, -0.00000115, 0.00000000],
+        [-6.27321486, -0.00039838, 0.00024405, 0.00040039, -0.00000115, 0.00000000],
+        [-6.27321498, -0.00039833, 0.00024402, 0.00040033, -0.00000115, 0.00000000],
+        [-6.27321511, -0.00039828, 0.00024399, 0.00040028, -0.00000115, 0.00000000],
+        [-6.27321523, -0.00039822, 0.00024396, 0.00040023, -0.00000115, 0.00000000],
+        [-6.27321535, -0.00039817, 0.00024393, 0.00040018, -0.00000115, 0.00000000],
+        [-6.27321547, -0.00039812, 0.00024390, 0.00040013, -0.00000115, 0.00000000],
+        [-6.27321560, -0.00039807, 0.00024387, 0.00040008, -0.00000115, 0.00000000],
+        [-6.27321572, -0.00039802, 0.00024383, 0.00040002, -0.00000115, 0.00000000],
+        [-6.27321584, -0.00039797, 0.00024380, 0.00039997, -0.00000115, 0.00000000],
+        [-6.27321596, -0.00039792, 0.00024377, 0.00039992, -0.00000115, 0.00000000],
+        [-6.27321609, -0.00039787, 0.00024374, 0.00039987, -0.00000115, 0.00000000],
+        [-6.27321621, -0.00039781, 0.00024371, 0.00039982, -0.00000115, 0.00000000],
+        [-6.27321633, -0.00039776, 0.00024368, 0.00039977, -0.00000115, 0.00000000],
+        [-6.27321645, -0.00039771, 0.00024365, 0.00039972, -0.00000115, 0.00000000],
+        [-6.27321658, -0.00039766, 0.00024362, 0.00039966, -0.00000115, 0.00000000],
+        [-6.27321670, -0.00039761, 0.00024358, 0.00039961, -0.00000115, 0.00000000],
+        [-6.27321682, -0.00039756, 0.00024355, 0.00039956, -0.00000115, 0.00000000],
+        [-6.27321694, -0.00039751, 0.00024352, 0.00039951, -0.00000115, 0.00000000],
+        [-6.27321706, -0.00039746, 0.00024349, 0.00039946, -0.00000115, 0.00000000],
+        [-6.27321719, -0.00039741, 0.00024346, 0.00039941, -0.00000115, 0.00000000],
+        [-6.27321731, -0.00039736, 0.00024343, 0.00039936, -0.00000115, 0.00000000],
+        [-6.27321743, -0.00039730, 0.00024340, 0.00039931, -0.00000115, 0.00000000],
+        [-6.27321755, -0.00039725, 0.00024337, 0.00039925, -0.00000115, 0.00000000],
+        [-6.27321767, -0.00039720, 0.00024333, 0.00039920, -0.00000115, 0.00000000],
+        [-6.27321780, -0.00039715, 0.00024330, 0.00039915, -0.00000115, 0.00000000],
+        [-6.27321792, -0.00039710, 0.00024327, 0.00039910, -0.00000115, 0.00000000],
+        [-6.27321804, -0.00039705, 0.00024324, 0.00039905, -0.00000115, 0.00000000],
+        [-6.27321816, -0.00039700, 0.00024321, 0.00039900, -0.00000115, 0.00000000],
+        [-6.27321828, -0.00039695, 0.00024318, 0.00039895, -0.00000115, 0.00000000],
+        [-6.27321841, -0.00039690, 0.00024315, 0.00039890, -0.00000115, 0.00000000],
+        [-6.27321853, -0.00039685, 0.00024312, 0.00039884, -0.00000115, 0.00000000],
+        [-6.27321865, -0.00039680, 0.00024308, 0.00039879, -0.00000115, 0.00000000],
+        [-6.27321877, -0.00039674, 0.00024305, 0.00039874, -0.00000115, 0.00000000],
+        [-6.27321889, -0.00039669, 0.00024302, 0.00039869, -0.00000115, 0.00000000],
+        [-6.27321901, -0.00039664, 0.00024299, 0.00039864, -0.00000115, 0.00000000],
+        [-6.27321914, -0.00039659, 0.00024296, 0.00039859, -0.00000115, 0.00000000],
+        [-6.27321926, -0.00039654, 0.00024293, 0.00039854, -0.00000115, 0.00000000],
+        [-6.27321938, -0.00039649, 0.00024290, 0.00039849, -0.00000115, 0.00000000],
+        [-6.27321950, -0.00039644, 0.00024287, 0.00039844, -0.00000115, 0.00000000],
+        [-6.27321962, -0.00039639, 0.00024284, 0.00039839, -0.00000115, 0.00000000],
+        [-6.27321974, -0.00039634, 0.00024280, 0.00039833, -0.00000115, 0.00000000],
+        [-6.27321987, -0.00039629, 0.00024277, 0.00039828, -0.00000115, 0.00000000],
+        [-6.27321999, -0.00039624, 0.00024274, 0.00039823, -0.00000115, 0.00000000],
+        [-6.27322011, -0.00039619, 0.00024271, 0.00039818, -0.00000115, 0.00000000],
+        [-6.27322023, -0.00039613, 0.00024268, 0.00039813, -0.00000115, 0.00000000],
+        [-6.27322035, -0.00039608, 0.00024265, 0.00039808, -0.00000115, 0.00000000],
+        [-6.27322047, -0.00039603, 0.00024262, 0.00039803, -0.00000115, 0.00000000],
+        [-6.27322059, -0.00039598, 0.00024259, 0.00039798, -0.00000115, 0.00000000],
+        [-6.27322071, -0.00039593, 0.00024256, 0.00039793, -0.00000115, 0.00000000],
+        [-6.27322084, -0.00039588, 0.00024252, 0.00039788, -0.00000115, 0.00000000],
+        [-6.27322096, -0.00039583, 0.00024249, 0.00039782, -0.00000115, 0.00000000],
+        [-6.27322108, -0.00039578, 0.00024246, 0.00039777, -0.00000115, 0.00000000],
+        [-6.27322120, -0.00039573, 0.00024243, 0.00039772, -0.00000115, 0.00000000],
+        [-6.27322132, -0.00039568, 0.00024240, 0.00039767, -0.00000115, 0.00000000],
+        [-6.27322144, -0.00039563, 0.00024237, 0.00039762, -0.00000115, 0.00000000],
+        [-6.27322156, -0.00039558, 0.00024234, 0.00039757, -0.00000115, 0.00000000],
+        [-6.27322168, -0.00039553, 0.00024231, 0.00039752, -0.00000115, 0.00000000],
+        [-6.27322180, -0.00039548, 0.00024228, 0.00039747, -0.00000115, 0.00000000],
+        [-6.27322193, -0.00039543, 0.00024225, 0.00039742, -0.00000115, 0.00000000],
+        [-6.27322205, -0.00039538, 0.00024221, 0.00039737, -0.00000115, 0.00000000],
+        [-6.27322217, -0.00039533, 0.00024218, 0.00039732, -0.00000115, 0.00000000],
+        [-6.27322229, -0.00039528, 0.00024215, 0.00039727, -0.00000115, 0.00000000],
+        [-6.27322241, -0.00039522, 0.00024212, 0.00039722, -0.00000115, 0.00000000],
+        [-6.27322253, -0.00039517, 0.00024209, 0.00039716, -0.00000115, 0.00000000],
+        [-6.27322265, -0.00039512, 0.00024206, 0.00039711, -0.00000115, 0.00000000],
+        [-6.27322277, -0.00039507, 0.00024203, 0.00039706, -0.00000115, 0.00000000],
+        [-6.27322289, -0.00039502, 0.00024200, 0.00039701, -0.00000115, 0.00000000],
+        [-6.27322301, -0.00039497, 0.00024197, 0.00039696, -0.00000115, 0.00000000],
+        [-6.27322313, -0.00039492, 0.00024194, 0.00039691, -0.00000115, 0.00000000],
+        [-6.27322325, -0.00039487, 0.00024191, 0.00039686, -0.00000115, 0.00000000],
+        [-6.27322337, -0.00039482, 0.00024187, 0.00039681, -0.00000115, 0.00000000],
+        [-6.27322349, -0.00039477, 0.00024184, 0.00039676, -0.00000115, 0.00000000],
+        [-6.27322362, -0.00039472, 0.00024181, 0.00039671, -0.00000115, 0.00000000],
+        [-6.27322374, -0.00039467, 0.00024178, 0.00039666, -0.00000115, 0.00000000],
+        [-6.27322386, -0.00039462, 0.00024175, 0.00039661, -0.00000115, 0.00000000],
+        [-6.27322398, -0.00039457, 0.00024172, 0.00039656, -0.00000115, 0.00000000],
+        [-6.27322410, -0.00039452, 0.00024169, 0.00039651, -0.00000115, 0.00000000],
+        [-6.27322422, -0.00039447, 0.00024166, 0.00039646, -0.00000115, 0.00000000],
+        [-6.27322434, -0.00039442, 0.00024163, 0.00039641, -0.00000115, 0.00000000],
+        [-6.27322446, -0.00039437, 0.00024160, 0.00039635, -0.00000115, 0.00000000],
+        [-6.27322458, -0.00039432, 0.00024157, 0.00039630, -0.00000115, 0.00000000],
+        [-6.27322470, -0.00039427, 0.00024154, 0.00039625, -0.00000115, 0.00000000],
+        [-6.27322482, -0.00039422, 0.00024150, 0.00039620, -0.00000115, 0.00000000],
+        [-6.27322494, -0.00039417, 0.00024147, 0.00039615, -0.00000115, 0.00000000],
+        [-6.27322506, -0.00039412, 0.00024144, 0.00039610, -0.00000115, 0.00000000],
+        [-6.27322518, -0.00039407, 0.00024141, 0.00039605, -0.00000115, 0.00000000],
+        [-6.27322530, -0.00039402, 0.00024138, 0.00039600, -0.00000115, 0.00000000],
+        [-6.27322542, -0.00039397, 0.00024135, 0.00039595, -0.00000115, 0.00000000],
+        [-6.27322554, -0.00039392, 0.00024132, 0.00039590, -0.00000115, 0.00000000],
+        [-6.27322566, -0.00039387, 0.00024129, 0.00039585, -0.00000115, 0.00000000],
+        [-6.27322578, -0.00039382, 0.00024126, 0.00039580, -0.00000115, 0.00000000],
+        [-6.27322590, -0.00039377, 0.00024123, 0.00039575, -0.00000115, 0.00000000],
+        [-6.27322602, -0.00039372, 0.00024120, 0.00039570, -0.00000115, 0.00000000],
+        [-6.27322614, -0.00039367, 0.00024117, 0.00039565, -0.00000115, 0.00000000],
+        [-6.27322626, -0.00039362, 0.00024114, 0.00039560, -0.00000115, 0.00000000],
+        [-6.27322638, -0.00039357, 0.00024111, 0.00039555, -0.00000115, 0.00000000],
+        [-6.27322650, -0.00039352, 0.00024107, 0.00039550, -0.00000115, 0.00000000],
+        [-6.27322662, -0.00039347, 0.00024104, 0.00039545, -0.00000115, 0.00000000],
+        [-6.27322674, -0.00039342, 0.00024101, 0.00039540, -0.00000115, 0.00000000],
+        [-6.27322686, -0.00039337, 0.00024098, 0.00039535, -0.00000115, 0.00000000],
+        [-6.27322698, -0.00039332, 0.00024095, 0.00039530, -0.00000115, 0.00000000],
+        [-6.27322710, -0.00039327, 0.00024092, 0.00039525, -0.00000115, 0.00000000],
+        [-6.27322722, -0.00039322, 0.00024089, 0.00039520, -0.00000115, 0.00000000],
+        [-6.27322734, -0.00039317, 0.00024086, 0.00039515, -0.00000115, 0.00000000],
+        [-6.27322746, -0.00039312, 0.00024083, 0.00039510, -0.00000115, 0.00000000],
+        [-6.27322757, -0.00039307, 0.00024080, 0.00039505, -0.00000115, 0.00000000],
+        [-6.27322769, -0.00039302, 0.00024077, 0.00039500, -0.00000115, 0.00000000],
+        [-6.27322781, -0.00039297, 0.00024074, 0.00039495, -0.00000115, 0.00000000],
+        [-6.27322793, -0.00039292, 0.00024071, 0.00039490, -0.00000115, 0.00000000],
+        [-6.27322805, -0.00039287, 0.00024068, 0.00039485, -0.00000115, 0.00000000],
+        [-6.27322817, -0.00039282, 0.00024065, 0.00039480, -0.00000115, 0.00000000],
+        [-6.27322829, -0.00039277, 0.00024062, 0.00039475, -0.00000115, 0.00000000],
+        [-6.27322841, -0.00039272, 0.00024059, 0.00039470, -0.00000115, 0.00000000],
+        [-6.27322853, -0.00039267, 0.00024055, 0.00039465, -0.00000115, 0.00000000],
+        [-6.27322865, -0.00039262, 0.00024052, 0.00039460, -0.00000115, 0.00000000],
+        [-6.27322877, -0.00039257, 0.00024049, 0.00039455, -0.00000115, 0.00000000],
+        [-6.27322889, -0.00039252, 0.00024046, 0.00039450, -0.00000115, 0.00000000],
+        [-6.27322901, -0.00039247, 0.00024043, 0.00039445, -0.00000115, 0.00000000],
+        [-6.27322913, -0.00039242, 0.00024040, 0.00039440, -0.00000115, 0.00000000],
+        [-6.27322924, -0.00039237, 0.00024037, 0.00039435, -0.00000115, 0.00000000],
+        [-6.27322936, -0.00039232, 0.00024034, 0.00039430, -0.00000115, 0.00000000],
+        [-6.27322948, -0.00039227, 0.00024031, 0.00039425, -0.00000115, 0.00000000],
+        [-6.27322960, -0.00039222, 0.00024028, 0.00039420, -0.00000115, 0.00000000],
+        [-6.27322972, -0.00039217, 0.00024025, 0.00039415, -0.00000115, 0.00000000],
+        [-6.27322984, -0.00039212, 0.00024022, 0.00039410, -0.00000115, 0.00000000],
+        [-6.27322996, -0.00039207, 0.00024019, 0.00039405, -0.00000115, 0.00000000],
+        [-6.27323008, -0.00039202, 0.00024016, 0.00039400, -0.00000115, 0.00000000],
+        [-6.27323020, -0.00039197, 0.00024013, 0.00039395, -0.00000115, 0.00000000],
+        [-6.27323032, -0.00039192, 0.00024010, 0.00039390, -0.00000115, 0.00000000],
+        [-6.27323043, -0.00039187, 0.00024007, 0.00039385, -0.00000115, 0.00000000],
+        [-6.27323055, -0.00039182, 0.00024004, 0.00039380, -0.00000115, 0.00000000],
+        [-6.27323067, -0.00039177, 0.00024001, 0.00039375, -0.00000115, 0.00000000],
+        [-6.27323079, -0.00039172, 0.00023998, 0.00039370, -0.00000115, 0.00000000],
+        [-6.27323091, -0.00039167, 0.00023995, 0.00039365, -0.00000115, 0.00000000],
+        [-6.27323103, -0.00039162, 0.00023992, 0.00039360, -0.00000115, 0.00000000],
+        [-6.27323115, -0.00039158, 0.00023989, 0.00039355, -0.00000115, 0.00000000],
+        [-6.27323126, -0.00039153, 0.00023985, 0.00039350, -0.00000115, 0.00000000],
+        [-6.27323138, -0.00039148, 0.00023982, 0.00039345, -0.00000115, 0.00000000],
+        [-6.27323150, -0.00039143, 0.00023979, 0.00039340, -0.00000115, 0.00000000],
+        [-6.27323162, -0.00039138, 0.00023976, 0.00039335, -0.00000115, 0.00000000],
+        [-6.27323174, -0.00039133, 0.00023973, 0.00039330, -0.00000115, 0.00000000],
+        [-6.27323186, -0.00039128, 0.00023970, 0.00039325, -0.00000115, 0.00000000],
+        [-6.27323198, -0.00039123, 0.00023967, 0.00039320, -0.00000115, 0.00000000],
+        [-6.27323209, -0.00039118, 0.00023964, 0.00039315, -0.00000115, 0.00000000],
+        [-6.27323221, -0.00039113, 0.00023961, 0.00039310, -0.00000115, 0.00000000],
+        [-6.27323233, -0.00039108, 0.00023958, 0.00039305, -0.00000115, 0.00000000],
+        [-6.27323245, -0.00039103, 0.00023955, 0.00039300, -0.00000115, 0.00000000],
+        [-6.27323257, -0.00039098, 0.00023952, 0.00039295, -0.00000115, 0.00000000],
+        [-6.27323268, -0.00039093, 0.00023949, 0.00039290, -0.00000115, 0.00000000],
+        [-6.27323280, -0.00039088, 0.00023946, 0.00039285, -0.00000115, 0.00000000],
+        [-6.27323292, -0.00039083, 0.00023943, 0.00039280, -0.00000115, 0.00000000],
+        [-6.27323304, -0.00039078, 0.00023940, 0.00039275, -0.00000115, 0.00000000],
+        [-6.27323316, -0.00039073, 0.00023937, 0.00039270, -0.00000115, 0.00000000],
+        [-6.27323328, -0.00039069, 0.00023934, 0.00039265, -0.00000115, 0.00000000],
+        [-6.27323339, -0.00039064, 0.00023931, 0.00039260, -0.00000115, 0.00000000],
+        [-6.27323351, -0.00039059, 0.00023928, 0.00039255, -0.00000115, 0.00000000],
+        [-6.27323363, -0.00039054, 0.00023925, 0.00039250, -0.00000115, 0.00000000],
+        [-6.27323375, -0.00039049, 0.00023922, 0.00039245, -0.00000115, 0.00000000],
+        [-6.27323387, -0.00039044, 0.00023919, 0.00039241, -0.00000115, 0.00000000],
+        [-6.27323398, -0.00039039, 0.00023916, 0.00039236, -0.00000115, 0.00000000],
+        [-6.27323410, -0.00039034, 0.00023913, 0.00039231, -0.00000115, 0.00000000],
+        [-6.27323422, -0.00039029, 0.00023910, 0.00039226, -0.00000115, 0.00000000],
+        [-6.27323434, -0.00039024, 0.00023907, 0.00039221, -0.00000115, 0.00000000],
+        [-6.27323445, -0.00039019, 0.00023904, 0.00039216, -0.00000115, 0.00000000],
+        [-6.27323457, -0.00039014, 0.00023901, 0.00039211, -0.00000115, 0.00000000],
+        [-6.27323469, -0.00039009, 0.00023898, 0.00039206, -0.00000115, 0.00000000],
+        [-6.27323481, -0.00039005, 0.00023895, 0.00039201, -0.00000115, 0.00000000],
+        [-6.27323493, -0.00039000, 0.00023892, 0.00039196, -0.00000115, 0.00000000],
+        [-6.27323504, -0.00038995, 0.00023889, 0.00039191, -0.00000115, 0.00000000],
+        [-6.27323516, -0.00038990, 0.00023886, 0.00039186, -0.00000115, 0.00000000],
+        [-6.27323528, -0.00038985, 0.00023883, 0.00039181, -0.00000115, 0.00000000],
+        [-6.27323540, -0.00038980, 0.00023880, 0.00039176, -0.00000115, 0.00000000],
+        [-6.27323551, -0.00038975, 0.00023877, 0.00039171, -0.00000115, 0.00000000],
+        [-6.27323563, -0.00038970, 0.00023874, 0.00039166, -0.00000115, 0.00000000],
+        [-6.27323575, -0.00038965, 0.00023871, 0.00039161, -0.00000115, 0.00000000],
+        [-6.27323587, -0.00038960, 0.00023868, 0.00039157, -0.00000115, 0.00000000],
+        [-6.27323598, -0.00038955, 0.00023865, 0.00039152, -0.00000115, 0.00000000],
+        [-6.27323610, -0.00038951, 0.00023862, 0.00039147, -0.00000115, 0.00000000],
+        [-6.27323622, -0.00038946, 0.00023859, 0.00039142, -0.00000115, 0.00000000],
+        [-6.27323633, -0.00038941, 0.00023856, 0.00039137, -0.00000115, 0.00000000],
+        [-6.27323645, -0.00038936, 0.00023853, 0.00039132, -0.00000115, 0.00000000],
+        [-6.27323657, -0.00038931, 0.00023850, 0.00039127, -0.00000115, 0.00000000],
+        [-6.27323669, -0.00038926, 0.00023847, 0.00039122, -0.00000115, 0.00000000],
+        [-6.27323680, -0.00038921, 0.00023844, 0.00039117, -0.00000115, 0.00000000],
+        [-6.27323692, -0.00038916, 0.00023841, 0.00039112, -0.00000115, 0.00000000],
+        [-6.27323704, -0.00038911, 0.00023838, 0.00039107, -0.00000115, 0.00000000],
+        [-6.27323715, -0.00038907, 0.00023835, 0.00039102, -0.00000115, 0.00000000],
+        [-6.27323727, -0.00038902, 0.00023832, 0.00039097, -0.00000115, 0.00000000],
+        [-6.27323739, -0.00038897, 0.00023829, 0.00039093, -0.00000115, 0.00000000],
+        [-6.27323751, -0.00038892, 0.00023826, 0.00039088, -0.00000115, 0.00000000],
+        [-6.27323762, -0.00038887, 0.00023823, 0.00039083, -0.00000115, 0.00000000],
+        [-6.27323774, -0.00038882, 0.00023820, 0.00039078, -0.00000115, 0.00000000],
+        [-6.27323786, -0.00038877, 0.00023817, 0.00039073, -0.00000115, 0.00000000],
+        [-6.27323797, -0.00038872, 0.00023814, 0.00039068, -0.00000115, 0.00000000],
+        [-6.27323809, -0.00038867, 0.00023811, 0.00039063, -0.00000115, 0.00000000],
+        [-6.27323821, -0.00038863, 0.00023808, 0.00039058, -0.00000115, 0.00000000],
+        [-6.27323832, -0.00038858, 0.00023805, 0.00039053, -0.00000115, 0.00000000],
+        [-6.27323844, -0.00038853, 0.00023802, 0.00039048, -0.00000115, 0.00000000],
+        [-6.27323856, -0.00038848, 0.00023799, 0.00039044, -0.00000115, 0.00000000],
+        [-6.27323867, -0.00038843, 0.00023796, 0.00039039, -0.00000115, 0.00000000],
+        [-6.27323879, -0.00038838, 0.00023793, 0.00039034, -0.00000115, 0.00000000],
+        [-6.27323891, -0.00038833, 0.00023790, 0.00039029, -0.00000115, 0.00000000],
+        [-6.27323902, -0.00038828, 0.00023787, 0.00039024, -0.00000115, 0.00000000],
+        [-6.27323914, -0.00038824, 0.00023784, 0.00039019, -0.00000115, 0.00000000],
+        [-6.27323926, -0.00038819, 0.00023781, 0.00039014, -0.00000115, 0.00000000],
+        [-6.27323937, -0.00038814, 0.00023778, 0.00039009, -0.00000115, 0.00000000],
+        [-6.27323949, -0.00038809, 0.00023775, 0.00039004, -0.00000115, 0.00000000],
+        [-6.27323961, -0.00038804, 0.00023772, 0.00038999, -0.00000115, 0.00000000],
+        [-6.27323972, -0.00038799, 0.00023769, 0.00038995, -0.00000115, 0.00000000],
+        [-6.27323984, -0.00038794, 0.00023766, 0.00038990, -0.00000115, 0.00000000],
+        [-6.27323996, -0.00038789, 0.00023763, 0.00038985, -0.00000115, 0.00000000],
+        [-6.27324007, -0.00038785, 0.00023760, 0.00038980, -0.00000115, 0.00000000],
+        [-6.27324019, -0.00038780, 0.00023757, 0.00038975, -0.00000115, 0.00000000],
+        [-6.27324030, -0.00038775, 0.00023754, 0.00038970, -0.00000115, 0.00000000],
+        [-6.27324042, -0.00038770, 0.00023751, 0.00038965, -0.00000115, 0.00000000],
+        [-6.27324054, -0.00038765, 0.00023748, 0.00038960, -0.00000115, 0.00000000],
+        [-6.27324065, -0.00038760, 0.00023745, 0.00038956, -0.00000115, 0.00000000],
+        [-6.27324077, -0.00038755, 0.00023742, 0.00038951, -0.00000115, 0.00000000],
+        [-6.27324089, -0.00038751, 0.00023739, 0.00038946, -0.00000115, 0.00000000],
+        [-6.27324100, -0.00038746, 0.00023736, 0.00038941, -0.00000115, 0.00000000],
+        [-6.27324112, -0.00038741, 0.00023733, 0.00038936, -0.00000115, 0.00000000],
+        [-6.27324123, -0.00038736, 0.00023730, 0.00038931, -0.00000115, 0.00000000],
+        [-6.27324135, -0.00038731, 0.00023727, 0.00038926, -0.00000115, 0.00000000],
+        [-6.27324147, -0.00038726, 0.00023724, 0.00038921, -0.00000115, 0.00000000],
+        [-6.27324158, -0.00038722, 0.00023721, 0.00038917, -0.00000115, 0.00000000],
+        [-6.27324170, -0.00038717, 0.00023718, 0.00038912, -0.00000115, 0.00000000],
+        [-6.27324181, -0.00038712, 0.00023715, 0.00038907, -0.00000115, 0.00000000],
+        [-6.27324193, -0.00038707, 0.00023712, 0.00038902, -0.00000115, 0.00000000],
+        [-6.27324205, -0.00038702, 0.00023709, 0.00038897, -0.00000115, 0.00000000],
+        [-6.27324216, -0.00038697, 0.00023706, 0.00038892, -0.00000115, 0.00000000],
+        [-6.27324228, -0.00038693, 0.00023704, 0.00038887, -0.00000115, 0.00000000],
+        [-6.27324239, -0.00038688, 0.00023701, 0.00038882, -0.00000115, 0.00000000],
+        [-6.27324251, -0.00038683, 0.00023698, 0.00038878, -0.00000115, 0.00000000],
+        [-6.27324262, -0.00038678, 0.00023695, 0.00038873, -0.00000115, 0.00000000],
+        [-6.27324274, -0.00038673, 0.00023692, 0.00038868, -0.00000115, 0.00000000],
+        [-6.27324286, -0.00038668, 0.00023689, 0.00038863, -0.00000115, 0.00000000],
+        [-6.27324297, -0.00038664, 0.00023686, 0.00038858, -0.00000115, 0.00000000],
+        [-6.27324309, -0.00038659, 0.00023683, 0.00038853, -0.00000115, 0.00000000],
+        [-6.27324320, -0.00038654, 0.00023680, 0.00038848, -0.00000115, 0.00000000],
+        [-6.27324332, -0.00038649, 0.00023677, 0.00038844, -0.00000115, 0.00000000],
+        [-6.27324343, -0.00038644, 0.00023674, 0.00038839, -0.00000115, 0.00000000],
+        [-6.27324355, -0.00038639, 0.00023671, 0.00038834, -0.00000115, 0.00000000],
+        [-6.27324366, -0.00038635, 0.00023668, 0.00038829, -0.00000115, 0.00000000],
+        [-6.27324378, -0.00038630, 0.00023665, 0.00038824, -0.00000115, 0.00000000],
+        [-6.27324390, -0.00038625, 0.00023662, 0.00038819, -0.00000115, 0.00000000],
+        [-6.27324401, -0.00038620, 0.00023659, 0.00038815, -0.00000115, 0.00000000],
+        [-6.27324413, -0.00038615, 0.00023656, 0.00038810, -0.00000115, 0.00000000],
+        [-6.27324424, -0.00038610, 0.00023653, 0.00038805, -0.00000115, 0.00000000],
+        [-6.27324436, -0.00038606, 0.00023650, 0.00038800, -0.00000115, 0.00000000],
+        [-6.27324447, -0.00038601, 0.00023647, 0.00038795, -0.00000115, 0.00000000],
+        [-6.27324459, -0.00038596, 0.00023644, 0.00038790, -0.00000115, 0.00000000],
+        [-6.27324470, -0.00038591, 0.00023641, 0.00038786, -0.00000115, 0.00000000],
+        [-6.27324482, -0.00038586, 0.00023638, 0.00038781, -0.00000115, 0.00000000],
+        [-6.27324493, -0.00038582, 0.00023636, 0.00038776, -0.00000115, 0.00000000],
+        [-6.27324505, -0.00038577, 0.00023633, 0.00038771, -0.00000115, 0.00000000],
+        [-6.27324516, -0.00038572, 0.00023630, 0.00038766, -0.00000115, 0.00000000],
+        [-6.27324528, -0.00038567, 0.00023627, 0.00038761, -0.00000115, 0.00000000],
+        [-6.27324539, -0.00038562, 0.00023624, 0.00038757, -0.00000115, 0.00000000],
+        [-6.27324551, -0.00038558, 0.00023621, 0.00038752, -0.00000115, 0.00000000],
+        [-6.27324562, -0.00038553, 0.00023618, 0.00038747, -0.00000115, 0.00000000],
+        [-6.27324574, -0.00038548, 0.00023615, 0.00038742, -0.00000115, 0.00000000],
+        [-6.27324585, -0.00038543, 0.00023612, 0.00038737, -0.00000115, 0.00000000],
+        [-6.27324597, -0.00038538, 0.00023609, 0.00038732, -0.00000115, 0.00000000],
+        [-6.27324608, -0.00038534, 0.00023606, 0.00038728, -0.00000115, 0.00000000],
+        [-6.27324620, -0.00038529, 0.00023603, 0.00038723, -0.00000115, 0.00000000],
+        [-6.27324631, -0.00038524, 0.00023600, 0.00038718, -0.00000115, 0.00000000],
+        [-6.27324643, -0.00038519, 0.00023597, 0.00038713, -0.00000115, 0.00000000],
+        [-6.27324654, -0.00038514, 0.00023594, 0.00038708, -0.00000115, 0.00000000],
+        [-6.27324666, -0.00038510, 0.00023591, 0.00038703, -0.00000115, 0.00000000],
+        [-6.27324677, -0.00038505, 0.00023588, 0.00038699, -0.00000115, 0.00000000],
+        [-6.27324689, -0.00038500, 0.00023586, 0.00038694, -0.00000115, 0.00000000],
+        [-6.27324700, -0.00038495, 0.00023583, 0.00038689, -0.00000115, 0.00000000],
+        [-6.27324711, -0.00038490, 0.00023580, 0.00038684, -0.00000115, 0.00000000],
+        [-6.27324723, -0.00038486, 0.00023577, 0.00038679, -0.00000115, 0.00000000],
+        [-6.27324734, -0.00038481, 0.00023574, 0.00038675, -0.00000115, 0.00000000],
+        [-6.27324746, -0.00038476, 0.00023571, 0.00038670, -0.00000115, 0.00000000],
+        [-6.27324757, -0.00038471, 0.00023568, 0.00038665, -0.00000115, 0.00000000],
+        [-6.27324769, -0.00038467, 0.00023565, 0.00038660, -0.00000115, 0.00000000],
+        [-6.27324780, -0.00038462, 0.00023562, 0.00038655, -0.00000115, 0.00000000],
+        [-6.27324792, -0.00038457, 0.00023559, 0.00038651, -0.00000115, 0.00000000],
+        [-6.27324803, -0.00038452, 0.00023556, 0.00038646, -0.00000115, 0.00000000],
+        [-6.27324814, -0.00038447, 0.00023553, 0.00038641, -0.00000115, 0.00000000],
+        [-6.27324826, -0.00038443, 0.00023550, 0.00038636, -0.00000115, 0.00000000],
+        [-6.27324837, -0.00038438, 0.00023547, 0.00038631, -0.00000115, 0.00000000],
+        [-6.27324849, -0.00038433, 0.00023545, 0.00038627, -0.00000115, 0.00000000],
+        [-6.27324860, -0.00038428, 0.00023542, 0.00038622, -0.00000115, 0.00000000],
+        [-6.27324872, -0.00038424, 0.00023539, 0.00038617, -0.00000115, 0.00000000],
+        [-6.27324883, -0.00038419, 0.00023536, 0.00038612, -0.00000115, 0.00000000],
+        [-6.27324894, -0.00038414, 0.00023533, 0.00038607, -0.00000115, 0.00000000],
+        [-6.27324906, -0.00038409, 0.00023530, 0.00038603, -0.00000115, 0.00000000],
+        [-6.27324917, -0.00038405, 0.00023527, 0.00038598, -0.00000115, 0.00000000],
+        [-6.27324929, -0.00038400, 0.00023524, 0.00038593, -0.00000115, 0.00000000],
+        [-6.27324940, -0.00038395, 0.00023521, 0.00038588, -0.00000115, 0.00000000],
+        [-6.27324951, -0.00038390, 0.00023518, 0.00038583, -0.00000115, 0.00000000],
+        [-6.27324963, -0.00038385, 0.00023515, 0.00038579, -0.00000115, 0.00000000],
+        [-6.27324974, -0.00038381, 0.00023512, 0.00038574, -0.00000115, 0.00000000],
+        [-6.27324986, -0.00038376, 0.00023509, 0.00038569, -0.00000115, 0.00000000],
+        [-6.27324997, -0.00038371, 0.00023507, 0.00038564, -0.00000115, 0.00000000],
+        [-6.27325008, -0.00038366, 0.00023504, 0.00038560, -0.00000115, 0.00000000],
+        [-6.27325020, -0.00038362, 0.00023501, 0.00038555, -0.00000115, 0.00000000],
+        [-6.27325031, -0.00038357, 0.00023498, 0.00038550, -0.00000115, 0.00000000],
+        [-6.27325043, -0.00038352, 0.00023495, 0.00038545, -0.00000115, 0.00000000],
+        [-6.27325054, -0.00038347, 0.00023492, 0.00038540, -0.00000115, 0.00000000],
+        [-6.27325065, -0.00038343, 0.00023489, 0.00038536, -0.00000115, 0.00000000],
+        [-6.27325077, -0.00038338, 0.00023486, 0.00038531, -0.00000115, 0.00000000],
+        [-6.27325088, -0.00038333, 0.00023483, 0.00038526, -0.00000115, 0.00000000],
+        [-6.27325099, -0.00038328, 0.00023480, 0.00038521, -0.00000115, 0.00000000],
+        [-6.27325111, -0.00038324, 0.00023477, 0.00038517, -0.00000115, 0.00000000],
+        [-6.27325122, -0.00038319, 0.00023475, 0.00038512, -0.00000115, 0.00000000],
+        [-6.27325133, -0.00038314, 0.00023472, 0.00038507, -0.00000115, 0.00000000],
+        [-6.27325145, -0.00038309, 0.00023469, 0.00038502, -0.00000115, 0.00000000],
+        [-6.27325156, -0.00038305, 0.00023466, 0.00038498, -0.00000115, 0.00000000],
+        [-6.27325168, -0.00038300, 0.00023463, 0.00038493, -0.00000115, 0.00000000],
+        [-6.27325179, -0.00038295, 0.00023460, 0.00038488, -0.00000115, 0.00000000],
+        [-6.27325190, -0.00038291, 0.00023457, 0.00038483, -0.00000115, 0.00000000],
+        [-6.27325202, -0.00038286, 0.00023454, 0.00038478, -0.00000115, 0.00000000],
+        [-6.27325213, -0.00038281, 0.00023451, 0.00038474, -0.00000115, 0.00000000],
+        [-6.27325224, -0.00038276, 0.00023448, 0.00038469, -0.00000115, 0.00000000],
+        [-6.27325236, -0.00038272, 0.00023446, 0.00038464, -0.00000115, 0.00000000],
+        [-6.27325247, -0.00038267, 0.00023443, 0.00038459, -0.00000115, 0.00000000],
+        [-6.27325258, -0.00038262, 0.00023440, 0.00038455, -0.00000115, 0.00000000],
+        [-6.27325269, -0.00038257, 0.00023437, 0.00038450, -0.00000115, 0.00000000],
+        [-6.27325281, -0.00038253, 0.00023434, 0.00038445, -0.00000115, 0.00000000],
+        [-6.27325292, -0.00038248, 0.00023431, 0.00038440, -0.00000115, 0.00000000],
+        [-6.27325303, -0.00038243, 0.00023428, 0.00038436, -0.00000115, 0.00000000],
+        [-6.27325315, -0.00038238, 0.00023425, 0.00038431, -0.00000115, 0.00000000],
+        [-6.27325326, -0.00038234, 0.00023422, 0.00038426, -0.00000115, 0.00000000],
+        [-6.27325337, -0.00038229, 0.00023419, 0.00038421, -0.00000115, 0.00000000],
+        [-6.27325349, -0.00038224, 0.00023417, 0.00038417, -0.00000115, 0.00000000],
+        [-6.27325360, -0.00038220, 0.00023414, 0.00038412, -0.00000115, 0.00000000],
+        [-6.27325371, -0.00038215, 0.00023411, 0.00038407, -0.00000115, 0.00000000],
+        [-6.27325383, -0.00038210, 0.00023408, 0.00038402, -0.00000115, 0.00000000],
+        [-6.27325394, -0.00038205, 0.00023405, 0.00038398, -0.00000115, 0.00000000],
+        [-6.27325405, -0.00038201, 0.00023402, 0.00038393, -0.00000115, 0.00000000],
+        [-6.27325416, -0.00038196, 0.00023399, 0.00038388, -0.00000115, 0.00000000],
+        [-6.27325428, -0.00038191, 0.00023396, 0.00038384, -0.00000115, 0.00000000],
+        [-6.27325439, -0.00038187, 0.00023393, 0.00038379, -0.00000115, 0.00000000],
+        [-6.27325450, -0.00038182, 0.00023391, 0.00038374, -0.00000115, 0.00000000],
+        [-6.27325462, -0.00038177, 0.00023388, 0.00038369, -0.00000115, 0.00000000],
+        [-6.27325473, -0.00038172, 0.00023385, 0.00038365, -0.00000115, 0.00000000],
+        [-6.27325484, -0.00038168, 0.00023382, 0.00038360, -0.00000115, 0.00000000],
+        [-6.27325495, -0.00038163, 0.00023379, 0.00038355, -0.00000115, 0.00000000],
+        [-6.27325507, -0.00038158, 0.00023376, 0.00038350, -0.00000115, 0.00000000],
+        [-6.27325518, -0.00038154, 0.00023373, 0.00038346, -0.00000115, 0.00000000],
+        [-6.27325529, -0.00038149, 0.00023370, 0.00038341, -0.00000115, 0.00000000],
+        [-6.27325540, -0.00038144, 0.00023367, 0.00038336, -0.00000115, 0.00000000],
+        [-6.27325552, -0.00038140, 0.00023365, 0.00038332, -0.00000115, 0.00000000],
+        [-6.27325563, -0.00038135, 0.00023362, 0.00038327, -0.00000115, 0.00000000],
+        [-6.27325574, -0.00038130, 0.00023359, 0.00038322, -0.00000115, 0.00000000],
+        [-6.27325585, -0.00038125, 0.00023356, 0.00038317, -0.00000115, 0.00000000],
+        [-6.27325597, -0.00038121, 0.00023353, 0.00038313, -0.00000115, 0.00000000],
+        [-6.27325608, -0.00038116, 0.00023350, 0.00038308, -0.00000115, 0.00000000],
+        [-6.27325619, -0.00038111, 0.00023347, 0.00038303, -0.00000115, 0.00000000],
+        [-6.27325630, -0.00038107, 0.00023344, 0.00038298, -0.00000115, 0.00000000],
+        [-6.27325642, -0.00038102, 0.00023342, 0.00038294, -0.00000115, 0.00000000],
+        [-6.27325653, -0.00038097, 0.00023339, 0.00038289, -0.00000115, 0.00000000],
+        [-6.27325664, -0.00038093, 0.00023336, 0.00038284, -0.00000115, 0.00000000],
+        [-6.27325675, -0.00038088, 0.00023333, 0.00038280, -0.00000115, 0.00000000],
+        [-6.27325686, -0.00038083, 0.00023330, 0.00038275, -0.00000115, 0.00000000],
+        [-6.27325698, -0.00038079, 0.00023327, 0.00038270, -0.00000115, 0.00000000],
+        [-6.27325709, -0.00038074, 0.00023324, 0.00038265, -0.00000115, 0.00000000],
+        [-6.27325720, -0.00038069, 0.00023321, 0.00038261, -0.00000115, 0.00000000],
+        [-6.27325731, -0.00038065, 0.00023319, 0.00038256, -0.00000115, 0.00000000],
+        [-6.27325742, -0.00038060, 0.00023316, 0.00038251, -0.00000115, 0.00000000],
+        [-6.27325754, -0.00038055, 0.00023313, 0.00038247, -0.00000115, 0.00000000],
+        [-6.27325765, -0.00038050, 0.00023310, 0.00038242, -0.00000115, 0.00000000],
+        [-6.27325776, -0.00038046, 0.00023307, 0.00038237, -0.00000115, 0.00000000],
+        [-6.27325787, -0.00038041, 0.00023304, 0.00038233, -0.00000115, 0.00000000],
+        [-6.27325798, -0.00038036, 0.00023301, 0.00038228, -0.00000115, 0.00000000],
+        [-6.27325810, -0.00038032, 0.00023299, 0.00038223, -0.00000115, 0.00000000],
+        [-6.27325821, -0.00038027, 0.00023296, 0.00038218, -0.00000115, 0.00000000],
+        [-6.27325832, -0.00038022, 0.00023293, 0.00038214, -0.00000115, 0.00000000],
+        [-6.27325843, -0.00038018, 0.00023290, 0.00038209, -0.00000115, 0.00000000],
+        [-6.27325854, -0.00038013, 0.00023287, 0.00038204, -0.00000115, 0.00000000],
+        [-6.27325866, -0.00038008, 0.00023284, 0.00038200, -0.00000115, 0.00000000],
+        [-6.27325877, -0.00038004, 0.00023281, 0.00038195, -0.00000115, 0.00000000],
+        [-6.27325888, -0.00037999, 0.00023279, 0.00038190, -0.00000115, 0.00000000],
+        [-6.27325899, -0.00037994, 0.00023276, 0.00038186, -0.00000115, 0.00000000],
+        [-6.27325910, -0.00037990, 0.00023273, 0.00038181, -0.00000115, 0.00000000],
+        [-6.27325921, -0.00037985, 0.00023270, 0.00038176, -0.00000115, 0.00000000],
+        [-6.27325932, -0.00037980, 0.00023267, 0.00038172, -0.00000115, 0.00000000],
+        [-6.27325944, -0.00037976, 0.00023264, 0.00038167, -0.00000115, 0.00000000],
+        [-6.27325955, -0.00037971, 0.00023261, 0.00038162, -0.00000115, 0.00000000],
+        [-6.27325966, -0.00037966, 0.00023259, 0.00038158, -0.00000115, 0.00000000],
+        [-6.27325977, -0.00037962, 0.00023256, 0.00038153, -0.00000115, 0.00000000],
+        [-6.27325988, -0.00037957, 0.00023253, 0.00038148, -0.00000115, 0.00000000],
+        [-6.27325999, -0.00037953, 0.00023250, 0.00038144, -0.00000115, 0.00000000],
+        [-6.27326011, -0.00037948, 0.00023247, 0.00038139, -0.00000115, 0.00000000],
+        [-6.27326022, -0.00037943, 0.00023244, 0.00038134, -0.00000115, 0.00000000],
+        [-6.27326033, -0.00037939, 0.00023241, 0.00038129, -0.00000115, 0.00000000],
+        [-6.27326044, -0.00037934, 0.00023239, 0.00038125, -0.00000115, 0.00000000],
+        [-6.27326055, -0.00037929, 0.00023236, 0.00038120, -0.00000115, 0.00000000],
+        [-6.27326066, -0.00037925, 0.00023233, 0.00038115, -0.00000115, 0.00000000],
+        [-6.27326077, -0.00037920, 0.00023230, 0.00038111, -0.00000115, 0.00000000],
+        [-6.27326088, -0.00037915, 0.00023227, 0.00038106, -0.00000115, 0.00000000],
+        [-6.27326100, -0.00037911, 0.00023224, 0.00038101, -0.00000115, 0.00000000],
+        [-6.27326111, -0.00037906, 0.00023221, 0.00038097, -0.00000115, 0.00000000],
+        [-6.27326122, -0.00037901, 0.00023219, 0.00038092, -0.00000115, 0.00000000],
+        [-6.27326133, -0.00037897, 0.00023216, 0.00038087, -0.00000115, 0.00000000],
+        [-6.27326144, -0.00037892, 0.00023213, 0.00038083, -0.00000115, 0.00000000],
+        [-6.27326155, -0.00037887, 0.00023210, 0.00038078, -0.00000115, 0.00000000],
+        [-6.27326166, -0.00037883, 0.00023207, 0.00038073, -0.00000115, 0.00000000],
+        [-6.27326177, -0.00037878, 0.00023204, 0.00038069, -0.00000115, 0.00000000],
+        [-6.27326188, -0.00037874, 0.00023202, 0.00038064, -0.00000115, 0.00000000],
+        [-6.27326199, -0.00037869, 0.00023199, 0.00038060, -0.00000115, 0.00000000],
+        [-6.27326211, -0.00037864, 0.00023196, 0.00038055, -0.00000115, 0.00000000],
+        [-6.27326222, -0.00037860, 0.00023193, 0.00038050, -0.00000115, 0.00000000],
+        [-6.27326233, -0.00037855, 0.00023190, 0.00038046, -0.00000115, 0.00000000],
+        [-6.27326244, -0.00037850, 0.00023187, 0.00038041, -0.00000115, 0.00000000],
+        [-6.27326255, -0.00037846, 0.00023185, 0.00038036, -0.00000115, 0.00000000],
+        [-6.27326266, -0.00037841, 0.00023182, 0.00038032, -0.00000115, 0.00000000],
+        [-6.27326277, -0.00037837, 0.00023179, 0.00038027, -0.00000115, 0.00000000],
+        [-6.27326288, -0.00037832, 0.00023176, 0.00038022, -0.00000115, 0.00000000],
+        [-6.27326299, -0.00037827, 0.00023173, 0.00038018, -0.00000115, 0.00000000],
+        [-6.27326310, -0.00037823, 0.00023170, 0.00038013, -0.00000115, 0.00000000],
+        [-6.27326321, -0.00037818, 0.00023168, 0.00038008, -0.00000115, 0.00000000],
+        [-6.27326332, -0.00037813, 0.00023165, 0.00038004, -0.00000115, 0.00000000],
+        [-6.27326343, -0.00037809, 0.00023162, 0.00037999, -0.00000115, 0.00000000],
+        [-6.27326354, -0.00037804, 0.00023159, 0.00037994, -0.00000115, 0.00000000],
+        [-6.27326366, -0.00037800, 0.00023156, 0.00037990, -0.00000115, 0.00000000],
+        [-6.27326377, -0.00037795, 0.00023153, 0.00037985, -0.00000115, 0.00000000],
+        [-6.27326388, -0.00037790, 0.00023151, 0.00037981, -0.00000115, 0.00000000],
+        [-6.27326399, -0.00037786, 0.00023148, 0.00037976, -0.00000115, 0.00000000],
+        [-6.27326410, -0.00037781, 0.00023145, 0.00037971, -0.00000115, 0.00000000],
+        [-6.27326421, -0.00037777, 0.00023142, 0.00037967, -0.00000115, 0.00000000],
+        [-6.27326432, -0.00037772, 0.00023139, 0.00037962, -0.00000115, 0.00000000],
+        [-6.27326443, -0.00037767, 0.00023136, 0.00037957, -0.00000115, 0.00000000],
+        [-6.27326454, -0.00037763, 0.00023134, 0.00037953, -0.00000115, 0.00000000],
+        [-6.27326465, -0.00037758, 0.00023131, 0.00037948, -0.00000115, 0.00000000],
+        [-6.27326476, -0.00037753, 0.00023128, 0.00037943, -0.00000115, 0.00000000],
+        [-6.27326487, -0.00037749, 0.00023125, 0.00037939, -0.00000115, 0.00000000],
+        [-6.27326498, -0.00037744, 0.00023122, 0.00037934, -0.00000115, 0.00000000],
+        [-6.27326509, -0.00037740, 0.00023120, 0.00037930, -0.00000115, 0.00000000],
+        [-6.27326520, -0.00037735, 0.00023117, 0.00037925, -0.00000115, 0.00000000],
+        [-6.27326531, -0.00037730, 0.00023114, 0.00037920, -0.00000115, 0.00000000],
+        [-6.27326542, -0.00037726, 0.00023111, 0.00037916, -0.00000115, 0.00000000],
+        [-6.27326553, -0.00037721, 0.00023108, 0.00037911, -0.00000115, 0.00000000],
+        [-6.27326564, -0.00037717, 0.00023105, 0.00037906, -0.00000115, 0.00000000],
+        [-6.27326575, -0.00037712, 0.00023103, 0.00037902, -0.00000115, 0.00000000],
+        [-6.27326586, -0.00037707, 0.00023100, 0.00037897, -0.00000115, 0.00000000],
+        [-6.27326597, -0.00037703, 0.00023097, 0.00037893, -0.00000115, 0.00000000],
+        [-6.27326608, -0.00037698, 0.00023094, 0.00037888, -0.00000115, 0.00000000],
+        [-6.27326619, -0.00037694, 0.00023091, 0.00037883, -0.00000115, 0.00000000],
+        [-6.27326630, -0.00037689, 0.00023089, 0.00037879, -0.00000115, 0.00000000],
+        [-6.27326641, -0.00037685, 0.00023086, 0.00037874, -0.00000115, 0.00000000],
+        [-6.27326652, -0.00037680, 0.00023083, 0.00037870, -0.00000115, 0.00000000],
+        [-6.27326663, -0.00037675, 0.00023080, 0.00037865, -0.00000115, 0.00000000],
+        [-6.27326674, -0.00037671, 0.00023077, 0.00037860, -0.00000115, 0.00000000],
+        [-6.27326685, -0.00037666, 0.00023074, 0.00037856, -0.00000115, 0.00000000],
+        [-6.27326696, -0.00037662, 0.00023072, 0.00037851, -0.00000115, 0.00000000],
+        [-6.27326707, -0.00037657, 0.00023069, 0.00037847, -0.00000115, 0.00000000],
+        [-6.27326718, -0.00037652, 0.00023066, 0.00037842, -0.00000115, 0.00000000],
+        [-6.27326729, -0.00037648, 0.00023063, 0.00037837, -0.00000115, 0.00000000],
+        [-6.27326740, -0.00037643, 0.00023060, 0.00037833, -0.00000115, 0.00000000],
+        [-6.27326751, -0.00037639, 0.00023058, 0.00037828, -0.00000115, 0.00000000],
+        [-6.27326762, -0.00037634, 0.00023055, 0.00037823, -0.00000115, 0.00000000],
+        [-6.27326773, -0.00037630, 0.00023052, 0.00037819, -0.00000115, 0.00000000],
+        [-6.27326783, -0.00037625, 0.00023049, 0.00037814, -0.00000115, 0.00000000],
+        [-6.27326794, -0.00037620, 0.00023046, 0.00037810, -0.00000115, 0.00000000],
+        [-6.27326805, -0.00037616, 0.00023044, 0.00037805, -0.00000115, 0.00000000],
+        [-6.27326816, -0.00037611, 0.00023041, 0.00037801, -0.00000115, 0.00000000],
+        [-6.27326827, -0.00037607, 0.00023038, 0.00037796, -0.00000115, 0.00000000],
+        [-6.27326838, -0.00037602, 0.00023035, 0.00037791, -0.00000115, 0.00000000],
+        [-6.27326849, -0.00037598, 0.00023032, 0.00037787, -0.00000115, 0.00000000],
+        [-6.27326860, -0.00037593, 0.00023030, 0.00037782, -0.00000115, 0.00000000],
+        [-6.27326871, -0.00037588, 0.00023027, 0.00037778, -0.00000115, 0.00000000],
+        [-6.27326882, -0.00037584, 0.00023024, 0.00037773, -0.00000115, 0.00000000],
+        [-6.27326893, -0.00037579, 0.00023021, 0.00037768, -0.00000115, 0.00000000],
+        [-6.27326904, -0.00037575, 0.00023018, 0.00037764, -0.00000115, 0.00000000],
+        [-6.27326915, -0.00037570, 0.00023016, 0.00037759, -0.00000115, 0.00000000],
+        [-6.27326926, -0.00037566, 0.00023013, 0.00037755, -0.00000115, 0.00000000],
+        [-6.27326937, -0.00037561, 0.00023010, 0.00037750, -0.00000115, 0.00000000],
+        [-6.27326947, -0.00037557, 0.00023007, 0.00037745, -0.00000115, 0.00000000],
+        [-6.27326958, -0.00037552, 0.00023004, 0.00037741, -0.00000115, 0.00000000],
+        [-6.27326969, -0.00037547, 0.00023002, 0.00037736, -0.00000115, 0.00000000],
+        [-6.27326980, -0.00037543, 0.00022999, 0.00037732, -0.00000115, 0.00000000],
+        [-6.27326991, -0.00037538, 0.00022996, 0.00037727, -0.00000115, 0.00000000],
+        [-6.27327002, -0.00037534, 0.00022993, 0.00037723, -0.00000115, 0.00000000],
+        [-6.27327013, -0.00037529, 0.00022991, 0.00037718, -0.00000115, 0.00000000],
+        [-6.27327024, -0.00037525, 0.00022988, 0.00037713, -0.00000115, 0.00000000],
+        [-6.27327035, -0.00037520, 0.00022985, 0.00037709, -0.00000115, 0.00000000],
+        [-6.27327045, -0.00037516, 0.00022982, 0.00037704, -0.00000115, 0.00000000],
+        [-6.27327056, -0.00037511, 0.00022979, 0.00037700, -0.00000115, 0.00000000],
+        [-6.27327067, -0.00037506, 0.00022977, 0.00037695, -0.00000115, 0.00000000],
+        [-6.27327078, -0.00037502, 0.00022974, 0.00037691, -0.00000115, 0.00000000],
+        [-6.27327089, -0.00037497, 0.00022971, 0.00037686, -0.00000115, 0.00000000],
+        [-6.27327100, -0.00037493, 0.00022968, 0.00037681, -0.00000115, 0.00000000],
+        [-6.27327111, -0.00037488, 0.00022965, 0.00037677, -0.00000115, 0.00000000],
+        [-6.27327122, -0.00037484, 0.00022963, 0.00037672, -0.00000115, 0.00000000],
+        [-6.27327132, -0.00037479, 0.00022960, 0.00037668, -0.00000115, 0.00000000],
+        [-6.27327143, -0.00037475, 0.00022957, 0.00037663, -0.00000115, 0.00000000],
+        [-6.27327154, -0.00037470, 0.00022954, 0.00037659, -0.00000115, 0.00000000],
+        [-6.27327165, -0.00037466, 0.00022952, 0.00037654, -0.00000115, 0.00000000],
+        [-6.27327176, -0.00037461, 0.00022949, 0.00037650, -0.00000115, 0.00000000],
+        [-6.27327187, -0.00037457, 0.00022946, 0.00037645, -0.00000115, 0.00000000],
+        [-6.27327198, -0.00037452, 0.00022943, 0.00037640, -0.00000115, 0.00000000],
+        [-6.27327208, -0.00037447, 0.00022940, 0.00037636, -0.00000115, 0.00000000],
+        [-6.27327219, -0.00037443, 0.00022938, 0.00037631, -0.00000115, 0.00000000],
+        [-6.27327230, -0.00037438, 0.00022935, 0.00037627, -0.00000115, 0.00000000],
+        [-6.27327241, -0.00037434, 0.00022932, 0.00037622, -0.00000115, 0.00000000],
+        [-6.27327252, -0.00037429, 0.00022929, 0.00037618, -0.00000115, 0.00000000],
+        [-6.27327263, -0.00037425, 0.00022927, 0.00037613, -0.00000115, 0.00000000],
+        [-6.27327273, -0.00037420, 0.00022924, 0.00037609, -0.00000115, 0.00000000],
+        [-6.27327284, -0.00037416, 0.00022921, 0.00037604, -0.00000115, 0.00000000],
+        [-6.27327295, -0.00037411, 0.00022918, 0.00037599, -0.00000115, 0.00000000],
+        [-6.27327306, -0.00037407, 0.00022915, 0.00037595, -0.00000115, 0.00000000],
+        [-6.27327317, -0.00037402, 0.00022913, 0.00037590, -0.00000115, 0.00000000],
+        [-6.27327328, -0.00037398, 0.00022910, 0.00037586, -0.00000115, 0.00000000],
+        [-6.27327338, -0.00037393, 0.00022907, 0.00037581, -0.00000115, 0.00000000],
+        [-6.27327349, -0.00037389, 0.00022904, 0.00037577, -0.00000115, 0.00000000],
+        [-6.27327360, -0.00037384, 0.00022902, 0.00037572, -0.00000115, 0.00000000],
+        [-6.27327371, -0.00037380, 0.00022899, 0.00037568, -0.00000115, 0.00000000],
+        [-6.27327382, -0.00037375, 0.00022896, 0.00037563, -0.00000115, 0.00000000],
+        [-6.27327392, -0.00037371, 0.00022893, 0.00037559, -0.00000115, 0.00000000],
+        [-6.27327403, -0.00037366, 0.00022891, 0.00037554, -0.00000115, 0.00000000],
+        [-6.27327414, -0.00037362, 0.00022888, 0.00037550, -0.00000115, 0.00000000],
+        [-6.27327425, -0.00037357, 0.00022885, 0.00037545, -0.00000115, 0.00000000],
+        [-6.27327436, -0.00037353, 0.00022882, 0.00037541, -0.00000115, 0.00000000],
+        [-6.27327446, -0.00037348, 0.00022880, 0.00037536, -0.00000115, 0.00000000],
+        [-6.27327457, -0.00037344, 0.00022877, 0.00037531, -0.00000115, 0.00000000],
+        [-6.27327468, -0.00037339, 0.00022874, 0.00037527, -0.00000115, 0.00000000],
+        [-6.27327479, -0.00037335, 0.00022871, 0.00037522, -0.00000115, 0.00000000],
+        [-6.27327490, -0.00037330, 0.00022868, 0.00037518, -0.00000115, 0.00000000],
+        [-6.27327500, -0.00037326, 0.00022866, 0.00037513, -0.00000115, 0.00000000],
+        [-6.27327511, -0.00037321, 0.00022863, 0.00037509, -0.00000115, 0.00000000],
+        [-6.27327522, -0.00037317, 0.00022860, 0.00037504, -0.00000115, 0.00000000],
+        [-6.27327533, -0.00037312, 0.00022857, 0.00037500, -0.00000115, 0.00000000],
+        [-6.27327543, -0.00037308, 0.00022855, 0.00037495, -0.00000115, 0.00000000],
+        [-6.27327554, -0.00037303, 0.00022852, 0.00037491, -0.00000115, 0.00000000],
+        [-6.27327565, -0.00037299, 0.00022849, 0.00037486, -0.00000115, 0.00000000],
+        [-6.27327576, -0.00037294, 0.00022846, 0.00037482, -0.00000115, 0.00000000],
+        [-6.27327586, -0.00037290, 0.00022844, 0.00037477, -0.00000115, 0.00000000],
+        [-6.27327597, -0.00037285, 0.00022841, 0.00037473, -0.00000115, 0.00000000],
+        [-6.27327608, -0.00037281, 0.00022838, 0.00037468, -0.00000115, 0.00000000],
+        [-6.27327619, -0.00037276, 0.00022835, 0.00037464, -0.00000115, 0.00000000],
+        [-6.27327629, -0.00037272, 0.00022833, 0.00037459, -0.00000115, 0.00000000],
+        [-6.27327640, -0.00037267, 0.00022830, 0.00037455, -0.00000115, 0.00000000],
+        [-6.27327651, -0.00037263, 0.00022827, 0.00037450, -0.00000115, 0.00000000],
+        [-6.27327662, -0.00037258, 0.00022824, 0.00037446, -0.00000115, 0.00000000],
+        [-6.27327672, -0.00037254, 0.00022822, 0.00037441, -0.00000115, 0.00000000],
+        [-6.27327683, -0.00037249, 0.00022819, 0.00037437, -0.00000115, 0.00000000],
+        [-6.27327694, -0.00037245, 0.00022816, 0.00037432, -0.00000115, 0.00000000],
+        [-6.27327705, -0.00037240, 0.00022813, 0.00037428, -0.00000115, 0.00000000],
+        [-6.27327715, -0.00037236, 0.00022811, 0.00037423, -0.00000115, 0.00000000],
+        [-6.27327726, -0.00037231, 0.00022808, 0.00037419, -0.00000115, 0.00000000],
+        [-6.27327737, -0.00037227, 0.00022805, 0.00037414, -0.00000115, 0.00000000],
+        [-6.27327747, -0.00037222, 0.00022802, 0.00037410, -0.00000115, 0.00000000],
+        [-6.27327758, -0.00037218, 0.00022800, 0.00037405, -0.00000115, 0.00000000],
+        [-6.27327769, -0.00037213, 0.00022797, 0.00037401, -0.00000115, 0.00000000],
+        [-6.27327780, -0.00037209, 0.00022794, 0.00037396, -0.00000115, 0.00000000],
+        [-6.27327790, -0.00037204, 0.00022791, 0.00037392, -0.00000115, 0.00000000],
+        [-6.27327801, -0.00037200, 0.00022789, 0.00037387, -0.00000115, 0.00000000],
+        [-6.27327812, -0.00037195, 0.00022786, 0.00037383, -0.00000115, 0.00000000],
+        [-6.27327822, -0.00037191, 0.00022783, 0.00037378, -0.00000115, 0.00000000],
+        [-6.27327833, -0.00037187, 0.00022781, 0.00037374, -0.00000115, 0.00000000],
+        [-6.27327844, -0.00037182, 0.00022778, 0.00037369, -0.00000115, 0.00000000],
+        [-6.27327855, -0.00037178, 0.00022775, 0.00037365, -0.00000115, 0.00000000],
+        [-6.27327865, -0.00037173, 0.00022772, 0.00037360, -0.00000115, 0.00000000],
+        [-6.27327876, -0.00037169, 0.00022770, 0.00037356, -0.00000115, 0.00000000],
+        [-6.27327887, -0.00037164, 0.00022767, 0.00037351, -0.00000115, 0.00000000],
+        [-6.27327897, -0.00037160, 0.00022764, 0.00037347, -0.00000115, 0.00000000],
+        [-6.27327908, -0.00037155, 0.00022761, 0.00037342, -0.00000115, 0.00000000],
+        [-6.27327919, -0.00037151, 0.00022759, 0.00037338, -0.00000115, 0.00000000],
+        [-6.27327929, -0.00037146, 0.00022756, 0.00037333, -0.00000115, 0.00000000],
+        [-6.27327940, -0.00037142, 0.00022753, 0.00037329, -0.00000115, 0.00000000],
+        [-6.27327951, -0.00037137, 0.00022750, 0.00037324, -0.00000115, 0.00000000],
+        [-6.27327961, -0.00037133, 0.00022748, 0.00037320, -0.00000115, 0.00000000],
+        [-6.27327972, -0.00037129, 0.00022745, 0.00037315, -0.00000115, 0.00000000],
+        [-6.27327983, -0.00037124, 0.00022742, 0.00037311, -0.00000115, 0.00000000],
+        [-6.27327993, -0.00037120, 0.00022740, 0.00037306, -0.00000115, 0.00000000],
+        [-6.27328004, -0.00037115, 0.00022737, 0.00037302, -0.00000115, 0.00000000],
+        [-6.27328015, -0.00037111, 0.00022734, 0.00037297, -0.00000115, 0.00000000],
+        [-6.27328025, -0.00037106, 0.00022731, 0.00037293, -0.00000115, 0.00000000],
+        [-6.27328036, -0.00037102, 0.00022729, 0.00037289, -0.00000115, 0.00000000],
+        [-6.27328047, -0.00037097, 0.00022726, 0.00037284, -0.00000115, 0.00000000],
+        [-6.27328057, -0.00037093, 0.00022723, 0.00037280, -0.00000115, 0.00000000],
+        [-6.27328068, -0.00037089, 0.00022720, 0.00037275, -0.00000115, 0.00000000],
+        [-6.27328078, -0.00037084, 0.00022718, 0.00037271, -0.00000115, 0.00000000],
+        [-6.27328089, -0.00037080, 0.00022715, 0.00037266, -0.00000115, 0.00000000],
+        [-6.27328100, -0.00037075, 0.00022712, 0.00037262, -0.00000115, 0.00000000],
+        [-6.27328110, -0.00037071, 0.00022710, 0.00037257, -0.00000115, 0.00000000],
+        [-6.27328121, -0.00037066, 0.00022707, 0.00037253, -0.00000115, 0.00000000],
+        [-6.27328132, -0.00037062, 0.00022704, 0.00037248, -0.00000115, 0.00000000],
+        [-6.27328142, -0.00037057, 0.00022701, 0.00037244, -0.00000115, 0.00000000],
+        [-6.27328153, -0.00037053, 0.00022699, 0.00037239, -0.00000115, 0.00000000],
+        [-6.27328163, -0.00037049, 0.00022696, 0.00037235, -0.00000115, 0.00000000],
+        [-6.27328174, -0.00037044, 0.00022693, 0.00037230, -0.00000115, 0.00000000],
+        [-6.27328185, -0.00037040, 0.00022691, 0.00037226, -0.00000115, 0.00000000],
+        [-6.27328195, -0.00037035, 0.00022688, 0.00037222, -0.00000115, 0.00000000],
+        [-6.27328206, -0.00037031, 0.00022685, 0.00037217, -0.00000115, 0.00000000],
+        [-6.27328217, -0.00037026, 0.00022682, 0.00037213, -0.00000115, 0.00000000],
+        [-6.27328227, -0.00037022, 0.00022680, 0.00037208, -0.00000115, 0.00000000],
+        [-6.27328238, -0.00037018, 0.00022677, 0.00037204, -0.00000115, 0.00000000],
+        [-6.27328248, -0.00037013, 0.00022674, 0.00037199, -0.00000115, 0.00000000],
+        [-6.27328259, -0.00037009, 0.00022672, 0.00037195, -0.00000115, 0.00000000],
+        [-6.27328269, -0.00037004, 0.00022669, 0.00037190, -0.00000115, 0.00000000],
+        [-6.27328280, -0.00037000, 0.00022666, 0.00037186, -0.00000115, 0.00000000],
+        [-6.27328291, -0.00036995, 0.00022663, 0.00037182, -0.00000115, 0.00000000],
+        [-6.27328301, -0.00036991, 0.00022661, 0.00037177, -0.00000115, 0.00000000],
+        [-6.27328312, -0.00036987, 0.00022658, 0.00037173, -0.00000115, 0.00000000],
+        [-6.27328322, -0.00036982, 0.00022655, 0.00037168, -0.00000115, 0.00000000],
+        [-6.27328333, -0.00036978, 0.00022653, 0.00037164, -0.00000115, 0.00000000],
+        [-6.27328344, -0.00036973, 0.00022650, 0.00037159, -0.00000115, 0.00000000],
+        [-6.27328354, -0.00036969, 0.00022647, 0.00037155, -0.00000115, 0.00000000],
+        [-6.27328365, -0.00036965, 0.00022644, 0.00037150, -0.00000115, 0.00000000],
+        [-6.27328375, -0.00036960, 0.00022642, 0.00037146, -0.00000115, 0.00000000],
+        [-6.27328386, -0.00036956, 0.00022639, 0.00037142, -0.00000115, 0.00000000],
+        [-6.27328396, -0.00036951, 0.00022636, 0.00037137, -0.00000115, 0.00000000],
+        [-6.27328407, -0.00036947, 0.00022634, 0.00037133, -0.00000115, 0.00000000],
+        [-6.27328418, -0.00036942, 0.00022631, 0.00037128, -0.00000115, 0.00000000],
+        [-6.27328428, -0.00036938, 0.00022628, 0.00037124, -0.00000115, 0.00000000],
+        [-6.27328439, -0.00036934, 0.00022626, 0.00037119, -0.00000115, 0.00000000],
+        [-6.27328449, -0.00036929, 0.00022623, 0.00037115, -0.00000115, 0.00000000],
+        [-6.27328460, -0.00036925, 0.00022620, 0.00037111, -0.00000115, 0.00000000],
+        [-6.27328470, -0.00036920, 0.00022617, 0.00037106, -0.00000115, 0.00000000],
+        [-6.27328481, -0.00036916, 0.00022615, 0.00037102, -0.00000115, 0.00000000],
+        [-6.27328491, -0.00036912, 0.00022612, 0.00037097, -0.00000115, 0.00000000],
+        [-6.27328502, -0.00036907, 0.00022609, 0.00037093, -0.00000115, 0.00000000],
+        [-6.27328512, -0.00036903, 0.00022607, 0.00037088, -0.00000115, 0.00000000],
+        [-6.27328523, -0.00036898, 0.00022604, 0.00037084, -0.00000115, 0.00000000],
+        [-6.27328533, -0.00036894, 0.00022601, 0.00037080, -0.00000115, 0.00000000],
+        [-6.27328544, -0.00036890, 0.00022599, 0.00037075, -0.00000115, 0.00000000],
+        [-6.27328555, -0.00036885, 0.00022596, 0.00037071, -0.00000115, 0.00000000],
+        [-6.27328565, -0.00036881, 0.00022593, 0.00037066, -0.00000115, 0.00000000],
+        [-6.27328576, -0.00036876, 0.00022590, 0.00037062, -0.00000115, 0.00000000],
+        [-6.27328586, -0.00036872, 0.00022588, 0.00037058, -0.00000115, 0.00000000],
+        [-6.27328597, -0.00036868, 0.00022585, 0.00037053, -0.00000115, 0.00000000],
+        [-6.27328607, -0.00036863, 0.00022582, 0.00037049, -0.00000115, 0.00000000],
+        [-6.27328618, -0.00036859, 0.00022580, 0.00037044, -0.00000115, 0.00000000],
+        [-6.27328628, -0.00036855, 0.00022577, 0.00037040, -0.00000115, 0.00000000],
+        [-6.27328639, -0.00036850, 0.00022574, 0.00037035, -0.00000115, 0.00000000],
+        [-6.27328649, -0.00036846, 0.00022572, 0.00037031, -0.00000115, 0.00000000],
+        [-6.27328660, -0.00036841, 0.00022569, 0.00037027, -0.00000115, 0.00000000],
+        [-6.27328670, -0.00036837, 0.00022566, 0.00037022, -0.00000115, 0.00000000],
+        [-6.27328681, -0.00036833, 0.00022564, 0.00037018, -0.00000115, 0.00000000],
+        [-6.27328691, -0.00036828, 0.00022561, 0.00037013, -0.00000115, 0.00000000],
+        [-6.27328702, -0.00036824, 0.00022558, 0.00037009, -0.00000115, 0.00000000],
+        [-6.27328712, -0.00036819, 0.00022556, 0.00037005, -0.00000115, 0.00000000],
+        [-6.27328723, -0.00036815, 0.00022553, 0.00037000, -0.00000115, 0.00000000],
+        [-6.27328733, -0.00036811, 0.00022550, 0.00036996, -0.00000115, 0.00000000],
+        [-6.27328744, -0.00036806, 0.00022547, 0.00036991, -0.00000115, 0.00000000],
+        [-6.27328754, -0.00036802, 0.00022545, 0.00036987, -0.00000115, 0.00000000],
+        [-6.27328764, -0.00036798, 0.00022542, 0.00036983, -0.00000115, 0.00000000],
+        [-6.27328775, -0.00036793, 0.00022539, 0.00036978, -0.00000115, 0.00000000],
+        [-6.27328785, -0.00036789, 0.00022537, 0.00036974, -0.00000115, 0.00000000],
+        [-6.27328796, -0.00036784, 0.00022534, 0.00036969, -0.00000115, 0.00000000],
+        [-6.27328806, -0.00036780, 0.00022531, 0.00036965, -0.00000115, 0.00000000],
+        [-6.27328817, -0.00036776, 0.00022529, 0.00036961, -0.00000115, 0.00000000],
+        [-6.27328827, -0.00036771, 0.00022526, 0.00036956, -0.00000115, 0.00000000],
+        [-6.27328838, -0.00036767, 0.00022523, 0.00036952, -0.00000115, 0.00000000],
+        [-6.27328848, -0.00036763, 0.00022521, 0.00036947, -0.00000115, 0.00000000],
+        [-6.27328859, -0.00036758, 0.00022518, 0.00036943, -0.00000115, 0.00000000],
+        [-6.27328869, -0.00036754, 0.00022515, 0.00036939, -0.00000115, 0.00000000],
+        [-6.27328880, -0.00036749, 0.00022513, 0.00036934, -0.00000115, 0.00000000],
+        [-6.27328890, -0.00036745, 0.00022510, 0.00036930, -0.00000115, 0.00000000],
+        [-6.27328900, -0.00036741, 0.00022507, 0.00036926, -0.00000115, 0.00000000],
+        [-6.27328911, -0.00036736, 0.00022505, 0.00036921, -0.00000115, 0.00000000],
+        [-6.27328921, -0.00036732, 0.00022502, 0.00036917, -0.00000115, 0.00000000],
+        [-6.27328932, -0.00036728, 0.00022499, 0.00036912, -0.00000115, 0.00000000],
+        [-6.27328942, -0.00036723, 0.00022497, 0.00036908, -0.00000115, 0.00000000],
+        [-6.27328953, -0.00036719, 0.00022494, 0.00036904, -0.00000115, 0.00000000],
+        [-6.27328963, -0.00036715, 0.00022491, 0.00036899, -0.00000115, 0.00000000],
+        [-6.27328973, -0.00036710, 0.00022489, 0.00036895, -0.00000115, 0.00000000],
+        [-6.27328984, -0.00036706, 0.00022486, 0.00036891, -0.00000115, 0.00000000],
+        [-6.27328994, -0.00036702, 0.00022483, 0.00036886, -0.00000115, 0.00000000],
+        [-6.27329005, -0.00036697, 0.00022481, 0.00036882, -0.00000115, 0.00000000],
+        [-6.27329015, -0.00036693, 0.00022478, 0.00036877, -0.00000115, 0.00000000],
+        [-6.27329025, -0.00036689, 0.00022475, 0.00036873, -0.00000115, 0.00000000],
+        [-6.27329036, -0.00036684, 0.00022473, 0.00036869, -0.00000115, 0.00000000],
+        [-6.27329046, -0.00036680, 0.00022470, 0.00036864, -0.00000115, 0.00000000],
+        [-6.27329057, -0.00036675, 0.00022467, 0.00036860, -0.00000115, 0.00000000],
+        [-6.27329067, -0.00036671, 0.00022465, 0.00036856, -0.00000115, 0.00000000],
+        [-6.27329078, -0.00036667, 0.00022462, 0.00036851, -0.00000115, 0.00000000],
+        [-6.27329088, -0.00036662, 0.00022459, 0.00036847, -0.00000115, 0.00000000],
+        [-6.27329098, -0.00036658, 0.00022457, 0.00036842, -0.00000115, 0.00000000],
+        [-6.27329109, -0.00036654, 0.00022454, 0.00036838, -0.00000115, 0.00000000],
+        [-6.27329119, -0.00036649, 0.00022451, 0.00036834, -0.00000115, 0.00000000],
+        [-6.27329129, -0.00036645, 0.00022449, 0.00036829, -0.00000115, 0.00000000],
+        [-6.27329140, -0.00036641, 0.00022446, 0.00036825, -0.00000115, 0.00000000],
+        [-6.27329150, -0.00036636, 0.00022443, 0.00036821, -0.00000115, 0.00000000],
+        [-6.27329161, -0.00036632, 0.00022441, 0.00036816, -0.00000115, 0.00000000],
+        [-6.27329171, -0.00036628, 0.00022438, 0.00036812, -0.00000115, 0.00000000],
+        [-6.27329181, -0.00036623, 0.00022435, 0.00036808, -0.00000115, 0.00000000],
+        [-6.27329192, -0.00036619, 0.00022433, 0.00036803, -0.00000115, 0.00000000],
+        [-6.27329202, -0.00036615, 0.00022430, 0.00036799, -0.00000115, 0.00000000],
+        [-6.27329212, -0.00036610, 0.00022427, 0.00036795, -0.00000115, 0.00000000],
+        [-6.27329223, -0.00036606, 0.00022425, 0.00036790, -0.00000115, 0.00000000],
+        [-6.27329233, -0.00036602, 0.00022422, 0.00036786, -0.00000115, 0.00000000],
+        [-6.27329244, -0.00036597, 0.00022419, 0.00036781, -0.00000115, 0.00000000],
+        [-6.27329254, -0.00036593, 0.00022417, 0.00036777, -0.00000115, 0.00000000],
+        [-6.27329264, -0.00036589, 0.00022414, 0.00036773, -0.00000115, 0.00000000],
+        [-6.27329275, -0.00036584, 0.00022412, 0.00036768, -0.00000115, 0.00000000],
+        [-6.27329285, -0.00036580, 0.00022409, 0.00036764, -0.00000115, 0.00000000],
+        [-6.27329295, -0.00036576, 0.00022406, 0.00036760, -0.00000115, 0.00000000],
+        [-6.27329306, -0.00036571, 0.00022404, 0.00036755, -0.00000115, 0.00000000],
+        [-6.27329316, -0.00036567, 0.00022401, 0.00036751, -0.00000115, 0.00000000],
+        [-6.27329326, -0.00036563, 0.00022398, 0.00036747, -0.00000115, 0.00000000],
+        [-6.27329337, -0.00036559, 0.00022396, 0.00036742, -0.00000115, 0.00000000],
+        [-6.27329347, -0.00036554, 0.00022393, 0.00036738, -0.00000115, 0.00000000],
+        [-6.27329357, -0.00036550, 0.00022390, 0.00036734, -0.00000115, 0.00000000],
+        [-6.27329368, -0.00036546, 0.00022388, 0.00036729, -0.00000115, 0.00000000],
+        [-6.27329378, -0.00036541, 0.00022385, 0.00036725, -0.00000115, 0.00000000],
+        [-6.27329388, -0.00036537, 0.00022382, 0.00036721, -0.00000115, 0.00000000],
+        [-6.27329399, -0.00036533, 0.00022380, 0.00036716, -0.00000115, 0.00000000],
+        [-6.27329409, -0.00036528, 0.00022377, 0.00036712, -0.00000115, 0.00000000],
+        [-6.27329419, -0.00036524, 0.00022374, 0.00036708, -0.00000115, 0.00000000],
+        [-6.27329430, -0.00036520, 0.00022372, 0.00036703, -0.00000115, 0.00000000],
+        [-6.27329440, -0.00036515, 0.00022369, 0.00036699, -0.00000115, 0.00000000],
+        [-6.27329450, -0.00036511, 0.00022367, 0.00036695, -0.00000115, 0.00000000],
+        [-6.27329461, -0.00036507, 0.00022364, 0.00036690, -0.00000115, 0.00000000],
+        [-6.27329471, -0.00036502, 0.00022361, 0.00036686, -0.00000115, 0.00000000],
+        [-6.27329481, -0.00036498, 0.00022359, 0.00036682, -0.00000115, 0.00000000],
+        [-6.27329491, -0.00036494, 0.00022356, 0.00036677, -0.00000115, 0.00000000],
+        [-6.27329502, -0.00036490, 0.00022353, 0.00036673, -0.00000115, 0.00000000],
+        [-6.27329512, -0.00036485, 0.00022351, 0.00036669, -0.00000115, 0.00000000],
+        [-6.27329522, -0.00036481, 0.00022348, 0.00036664, -0.00000115, 0.00000000],
+        [-6.27329533, -0.00036477, 0.00022345, 0.00036660, -0.00000115, 0.00000000],
+        [-6.27329543, -0.00036472, 0.00022343, 0.00036656, -0.00000115, 0.00000000],
+        [-6.27329553, -0.00036468, 0.00022340, 0.00036651, -0.00000115, 0.00000000],
+        [-6.27329564, -0.00036464, 0.00022338, 0.00036647, -0.00000115, 0.00000000],
+        [-6.27329574, -0.00036460, 0.00022335, 0.00036643, -0.00000115, 0.00000000],
+        [-6.27329584, -0.00036455, 0.00022332, 0.00036639, -0.00000115, 0.00000000],
+        [-6.27329594, -0.00036451, 0.00022330, 0.00036634, -0.00000115, 0.00000000],
+        [-6.27329605, -0.00036447, 0.00022327, 0.00036630, -0.00000115, 0.00000000],
+        [-6.27329615, -0.00036442, 0.00022324, 0.00036626, -0.00000115, 0.00000000],
+        [-6.27329625, -0.00036438, 0.00022322, 0.00036621, -0.00000115, 0.00000000],
+        [-6.27329635, -0.00036434, 0.00022319, 0.00036617, -0.00000115, 0.00000000],
+        [-6.27329646, -0.00036429, 0.00022317, 0.00036613, -0.00000115, 0.00000000],
+        [-6.27329656, -0.00036425, 0.00022314, 0.00036608, -0.00000115, 0.00000000],
+        [-6.27329666, -0.00036421, 0.00022311, 0.00036604, -0.00000115, 0.00000000],
+        [-6.27329677, -0.00036417, 0.00022309, 0.00036600, -0.00000115, 0.00000000],
+        [-6.27329687, -0.00036412, 0.00022306, 0.00036595, -0.00000115, 0.00000000],
+        [-6.27329697, -0.00036408, 0.00022303, 0.00036591, -0.00000115, 0.00000000],
+        [-6.27329707, -0.00036404, 0.00022301, 0.00036587, -0.00000115, 0.00000000],
+        [-6.27329718, -0.00036399, 0.00022298, 0.00036583, -0.00000115, 0.00000000],
+        [-6.27329728, -0.00036395, 0.00022296, 0.00036578, -0.00000115, 0.00000000],
+        [-6.27329738, -0.00036391, 0.00022293, 0.00036574, -0.00000115, 0.00000000],
+        [-6.27329748, -0.00036387, 0.00022290, 0.00036570, -0.00000115, 0.00000000],
+        [-6.27329758, -0.00036382, 0.00022288, 0.00036565, -0.00000115, 0.00000000],
+        [-6.27329769, -0.00036378, 0.00022285, 0.00036561, -0.00000115, 0.00000000],
+        [-6.27329779, -0.00036374, 0.00022282, 0.00036557, -0.00000115, 0.00000000],
+        [-6.27329789, -0.00036370, 0.00022280, 0.00036552, -0.00000115, 0.00000000],
+        [-6.27329799, -0.00036365, 0.00022277, 0.00036548, -0.00000115, 0.00000000],
+        [-6.27329810, -0.00036361, 0.00022275, 0.00036544, -0.00000115, 0.00000000],
+        [-6.27329820, -0.00036357, 0.00022272, 0.00036540, -0.00000115, 0.00000000],
+        [-6.27329830, -0.00036352, 0.00022269, 0.00036535, -0.00000115, 0.00000000],
+        [-6.27329840, -0.00036348, 0.00022267, 0.00036531, -0.00000115, 0.00000000],
+        [-6.27329851, -0.00036344, 0.00022264, 0.00036527, -0.00000115, 0.00000000],
+        [-6.27329861, -0.00036340, 0.00022261, 0.00036522, -0.00000115, 0.00000000],
+        [-6.27329871, -0.00036335, 0.00022259, 0.00036518, -0.00000115, 0.00000000],
+        [-6.27329881, -0.00036331, 0.00022256, 0.00036514, -0.00000115, 0.00000000],
+        [-6.27329891, -0.00036327, 0.00022254, 0.00036510, -0.00000115, 0.00000000],
+        [-6.27329902, -0.00036323, 0.00022251, 0.00036505, -0.00000115, 0.00000000],
+        [-6.27329912, -0.00036318, 0.00022248, 0.00036501, -0.00000115, 0.00000000],
+        [-6.27329922, -0.00036314, 0.00022246, 0.00036497, -0.00000115, 0.00000000],
+        [-6.27329932, -0.00036310, 0.00022243, 0.00036492, -0.00000115, 0.00000000],
+        [-6.27329942, -0.00036306, 0.00022241, 0.00036488, -0.00000115, 0.00000000],
+        [-6.27329953, -0.00036301, 0.00022238, 0.00036484, -0.00000115, 0.00000000],
+        [-6.27329963, -0.00036297, 0.00022235, 0.00036480, -0.00000115, 0.00000000],
+        [-6.27329973, -0.00036293, 0.00022233, 0.00036475, -0.00000115, 0.00000000],
+        [-6.27329983, -0.00036289, 0.00022230, 0.00036471, -0.00000115, 0.00000000],
+        [-6.27329993, -0.00036284, 0.00022228, 0.00036467, -0.00000115, 0.00000000],
+        [-6.27330004, -0.00036280, 0.00022225, 0.00036462, -0.00000115, 0.00000000],
+        [-6.27330014, -0.00036276, 0.00022222, 0.00036458, -0.00000115, 0.00000000],
+        [-6.27330024, -0.00036272, 0.00022220, 0.00036454, -0.00000115, 0.00000000],
+        [-6.27330034, -0.00036267, 0.00022217, 0.00036450, -0.00000115, 0.00000000],
+        [-6.27330044, -0.00036263, 0.00022215, 0.00036445, -0.00000115, 0.00000000],
+        [-6.27330054, -0.00036259, 0.00022212, 0.00036441, -0.00000115, 0.00000000],
+        [-6.27330065, -0.00036255, 0.00022209, 0.00036437, -0.00000115, 0.00000000],
+        [-6.27330075, -0.00036250, 0.00022207, 0.00036433, -0.00000115, 0.00000000],
+        [-6.27330085, -0.00036246, 0.00022204, 0.00036428, -0.00000115, 0.00000000],
+        [-6.27330095, -0.00036242, 0.00022202, 0.00036424, -0.00000115, 0.00000000],
+        [-6.27330105, -0.00036238, 0.00022199, 0.00036420, -0.00000115, 0.00000000],
+        [-6.27330115, -0.00036233, 0.00022196, 0.00036416, -0.00000115, 0.00000000],
+        [-6.27330126, -0.00036229, 0.00022194, 0.00036411, -0.00000115, 0.00000000],
+        [-6.27330136, -0.00036225, 0.00022191, 0.00036407, -0.00000115, 0.00000000],
+        [-6.27330146, -0.00036221, 0.00022189, 0.00036403, -0.00000115, 0.00000000],
+        [-6.27330156, -0.00036216, 0.00022186, 0.00036398, -0.00000115, 0.00000000],
+        [-6.27330166, -0.00036212, 0.00022183, 0.00036394, -0.00000115, 0.00000000],
+        [-6.27330176, -0.00036208, 0.00022181, 0.00036390, -0.00000115, 0.00000000],
+        [-6.27330186, -0.00036204, 0.00022178, 0.00036386, -0.00000115, 0.00000000],
+        [-6.27330197, -0.00036199, 0.00022176, 0.00036381, -0.00000115, 0.00000000],
+        [-6.27330207, -0.00036195, 0.00022173, 0.00036377, -0.00000115, 0.00000000],
+        [-6.27330217, -0.00036191, 0.00022170, 0.00036373, -0.00000115, 0.00000000],
+        [-6.27330227, -0.00036187, 0.00022168, 0.00036369, -0.00000115, 0.00000000],
+        [-6.27330237, -0.00036182, 0.00022165, 0.00036364, -0.00000115, 0.00000000],
+        [-6.27330247, -0.00036178, 0.00022163, 0.00036360, -0.00000115, 0.00000000],
+        [-6.27330257, -0.00036174, 0.00022160, 0.00036356, -0.00000115, 0.00000000],
+        [-6.27330267, -0.00036170, 0.00022157, 0.00036352, -0.00000115, 0.00000000],
+        [-6.27330278, -0.00036166, 0.00022155, 0.00036347, -0.00000115, 0.00000000],
+        [-6.27330288, -0.00036161, 0.00022152, 0.00036343, -0.00000115, 0.00000000],
+        [-6.27330298, -0.00036157, 0.00022150, 0.00036339, -0.00000115, 0.00000000],
+        [-6.27330308, -0.00036153, 0.00022147, 0.00036335, -0.00000115, 0.00000000],
+        [-6.27330318, -0.00036149, 0.00022144, 0.00036330, -0.00000115, 0.00000000],
+        [-6.27330328, -0.00036144, 0.00022142, 0.00036326, -0.00000115, 0.00000000],
+        [-6.27330338, -0.00036140, 0.00022139, 0.00036322, -0.00000115, 0.00000000],
+        [-6.27330348, -0.00036136, 0.00022137, 0.00036318, -0.00000115, 0.00000000],
+        [-6.27330358, -0.00036132, 0.00022134, 0.00036313, -0.00000115, 0.00000000],
+        [-6.27330368, -0.00036128, 0.00022132, 0.00036309, -0.00000115, 0.00000000],
+        [-6.27330379, -0.00036123, 0.00022129, 0.00036305, -0.00000115, 0.00000000],
+        [-6.27330389, -0.00036119, 0.00022126, 0.00036301, -0.00000115, 0.00000000],
+        [-6.27330399, -0.00036115, 0.00022124, 0.00036297, -0.00000115, 0.00000000],
+        [-6.27330409, -0.00036111, 0.00022121, 0.00036292, -0.00000115, 0.00000000],
+        [-6.27330419, -0.00036107, 0.00022119, 0.00036288, -0.00000115, 0.00000000],
+        [-6.27330429, -0.00036102, 0.00022116, 0.00036284, -0.00000115, 0.00000000],
+        [-6.27330439, -0.00036098, 0.00022113, 0.00036280, -0.00000115, 0.00000000],
+        [-6.27330449, -0.00036094, 0.00022111, 0.00036275, -0.00000115, 0.00000000],
+        [-6.27330459, -0.00036090, 0.00022108, 0.00036271, -0.00000115, 0.00000000],
+        [-6.27330469, -0.00036085, 0.00022106, 0.00036267, -0.00000115, 0.00000000],
+        [-6.27330479, -0.00036081, 0.00022103, 0.00036263, -0.00000115, 0.00000000],
+        [-6.27330489, -0.00036077, 0.00022101, 0.00036258, -0.00000115, 0.00000000],
+        [-6.27330499, -0.00036073, 0.00022098, 0.00036254, -0.00000115, 0.00000000],
+        [-6.27330510, -0.00036069, 0.00022095, 0.00036250, -0.00000115, 0.00000000],
+        [-6.27330520, -0.00036064, 0.00022093, 0.00036246, -0.00000115, 0.00000000],
+        [-6.27330530, -0.00036060, 0.00022090, 0.00036242, -0.00000115, 0.00000000],
+        [-6.27330540, -0.00036056, 0.00022088, 0.00036237, -0.00000115, 0.00000000],
+        [-6.27330550, -0.00036052, 0.00022085, 0.00036233, -0.00000115, 0.00000000],
+        [-6.27330560, -0.00036048, 0.00022083, 0.00036229, -0.00000115, 0.00000000],
+        [-6.27330570, -0.00036043, 0.00022080, 0.00036225, -0.00000115, 0.00000000],
+        [-6.27330580, -0.00036039, 0.00022077, 0.00036220, -0.00000115, 0.00000000],
+        [-6.27330590, -0.00036035, 0.00022075, 0.00036216, -0.00000115, 0.00000000],
+        [-6.27330600, -0.00036031, 0.00022072, 0.00036212, -0.00000115, 0.00000000],
+        [-6.27330610, -0.00036027, 0.00022070, 0.00036208, -0.00000115, 0.00000000],
+        [-6.27330620, -0.00036023, 0.00022067, 0.00036204, -0.00000115, 0.00000000],
+        [-6.27330630, -0.00036018, 0.00022065, 0.00036199, -0.00000115, 0.00000000],
+        [-6.27330640, -0.00036014, 0.00022062, 0.00036195, -0.00000115, 0.00000000],
+        [-6.27330650, -0.00036010, 0.00022059, 0.00036191, -0.00000115, 0.00000000],
+        [-6.27330660, -0.00036006, 0.00022057, 0.00036187, -0.00000115, 0.00000000],
+        [-6.27330670, -0.00036002, 0.00022054, 0.00036183, -0.00000115, 0.00000000],
+        [-6.27330680, -0.00035997, 0.00022052, 0.00036178, -0.00000115, 0.00000000],
+        [-6.27330690, -0.00035993, 0.00022049, 0.00036174, -0.00000115, 0.00000000],
+        [-6.27330700, -0.00035989, 0.00022047, 0.00036170, -0.00000115, 0.00000000],
+        [-6.27330710, -0.00035985, 0.00022044, 0.00036166, -0.00000115, 0.00000000],
+        [-6.27330720, -0.00035981, 0.00022041, 0.00036162, -0.00000115, 0.00000000],
+        [-6.27330730, -0.00035976, 0.00022039, 0.00036157, -0.00000115, 0.00000000],
+        [-6.27330740, -0.00035972, 0.00022036, 0.00036153, -0.00000115, 0.00000000],
+        [-6.27330750, -0.00035968, 0.00022034, 0.00036149, -0.00000115, 0.00000000],
+        [-6.27330760, -0.00035964, 0.00022031, 0.00036145, -0.00000115, 0.00000000],
+        [-6.27330770, -0.00035960, 0.00022029, 0.00036141, -0.00000115, 0.00000000],
+        [-6.27330780, -0.00035956, 0.00022026, 0.00036136, -0.00000115, 0.00000000],
+        [-6.27330790, -0.00035951, 0.00022024, 0.00036132, -0.00000115, 0.00000000],
+        [-6.27330800, -0.00035947, 0.00022021, 0.00036128, -0.00000115, 0.00000000],
+        [-6.27330810, -0.00035943, 0.00022018, 0.00036124, -0.00000115, 0.00000000],
+        [-6.27330820, -0.00035939, 0.00022016, 0.00036120, -0.00000115, 0.00000000],
+        [-6.27330830, -0.00035935, 0.00022013, 0.00036115, -0.00000115, 0.00000000],
+        [-6.27330840, -0.00035931, 0.00022011, 0.00036111, -0.00000115, 0.00000000],
+        [-6.27330850, -0.00035926, 0.00022008, 0.00036107, -0.00000115, 0.00000000],
+        [-6.27330860, -0.00035922, 0.00022006, 0.00036103, -0.00000115, 0.00000000],
+        [-6.27330870, -0.00035918, 0.00022003, 0.00036099, -0.00000115, 0.00000000],
+        [-6.27330880, -0.00035914, 0.00022001, 0.00036094, -0.00000115, 0.00000000],
+        [-6.27330890, -0.00035910, 0.00021998, 0.00036090, -0.00000115, 0.00000000],
+        [-6.27330900, -0.00035906, 0.00021995, 0.00036086, -0.00000115, 0.00000000],
+        [-6.27330910, -0.00035901, 0.00021993, 0.00036082, -0.00000115, 0.00000000],
+        [-6.27330920, -0.00035897, 0.00021990, 0.00036078, -0.00000115, 0.00000000],
+        [-6.27330930, -0.00035893, 0.00021988, 0.00036073, -0.00000115, 0.00000000],
+        [-6.27330940, -0.00035889, 0.00021985, 0.00036069, -0.00000115, 0.00000000],
+        [-6.27330950, -0.00035885, 0.00021983, 0.00036065, -0.00000115, 0.00000000],
+        [-6.27330960, -0.00035881, 0.00021980, 0.00036061, -0.00000115, 0.00000000],
+        [-6.27330970, -0.00035876, 0.00021978, 0.00036057, -0.00000115, 0.00000000],
+        [-6.27330980, -0.00035872, 0.00021975, 0.00036053, -0.00000115, 0.00000000],
+        [-6.27330990, -0.00035868, 0.00021972, 0.00036048, -0.00000115, 0.00000000],
+        [-6.27331000, -0.00035864, 0.00021970, 0.00036044, -0.00000115, 0.00000000],
+        [-6.27331010, -0.00035860, 0.00021967, 0.00036040, -0.00000115, 0.00000000],
+        [-6.27331020, -0.00035856, 0.00021965, 0.00036036, -0.00000115, 0.00000000],
+        [-6.27331030, -0.00035851, 0.00021962, 0.00036032, -0.00000115, 0.00000000],
+        [-6.27331040, -0.00035847, 0.00021960, 0.00036028, -0.00000115, 0.00000000],
+        [-6.27331050, -0.00035843, 0.00021957, 0.00036023, -0.00000115, 0.00000000],
+        [-6.27331059, -0.00035839, 0.00021955, 0.00036019, -0.00000115, 0.00000000],
+        [-6.27331069, -0.00035835, 0.00021952, 0.00036015, -0.00000115, 0.00000000],
+        [-6.27331079, -0.00035831, 0.00021950, 0.00036011, -0.00000115, 0.00000000],
+        [-6.27331089, -0.00035827, 0.00021947, 0.00036007, -0.00000115, 0.00000000],
+        [-6.27331099, -0.00035822, 0.00021944, 0.00036002, -0.00000115, 0.00000000],
+        [-6.27331109, -0.00035818, 0.00021942, 0.00035998, -0.00000115, 0.00000000],
+        [-6.27331119, -0.00035814, 0.00021939, 0.00035994, -0.00000115, 0.00000000],
+        [-6.27331129, -0.00035810, 0.00021937, 0.00035990, -0.00000115, 0.00000000],
+        [-6.27331139, -0.00035806, 0.00021934, 0.00035986, -0.00000115, 0.00000000],
+        [-6.27331149, -0.00035802, 0.00021932, 0.00035982, -0.00000115, 0.00000000],
+        [-6.27331159, -0.00035798, 0.00021929, 0.00035978, -0.00000115, 0.00000000],
+        [-6.27331169, -0.00035793, 0.00021927, 0.00035973, -0.00000115, 0.00000000],
+        [-6.27331179, -0.00035789, 0.00021924, 0.00035969, -0.00000115, 0.00000000],
+        [-6.27331188, -0.00035785, 0.00021922, 0.00035965, -0.00000115, 0.00000000],
+        [-6.27331198, -0.00035781, 0.00021919, 0.00035961, -0.00000115, 0.00000000],
+        [-6.27331208, -0.00035777, 0.00021917, 0.00035957, -0.00000115, 0.00000000],
+        [-6.27331218, -0.00035773, 0.00021914, 0.00035953, -0.00000115, 0.00000000],
+        [-6.27331228, -0.00035769, 0.00021911, 0.00035948, -0.00000115, 0.00000000],
+        [-6.27331238, -0.00035764, 0.00021909, 0.00035944, -0.00000115, 0.00000000],
+        [-6.27331248, -0.00035760, 0.00021906, 0.00035940, -0.00000115, 0.00000000],
+        [-6.27331258, -0.00035756, 0.00021904, 0.00035936, -0.00000115, 0.00000000],
+        [-6.27331268, -0.00035752, 0.00021901, 0.00035932, -0.00000115, 0.00000000],
+        [-6.27331277, -0.00035748, 0.00021899, 0.00035928, -0.00000115, 0.00000000],
+        [-6.27331287, -0.00035744, 0.00021896, 0.00035923, -0.00000115, 0.00000000],
+        [-6.27331297, -0.00035740, 0.00021894, 0.00035919, -0.00000115, 0.00000000],
+        [-6.27331307, -0.00035736, 0.00021891, 0.00035915, -0.00000115, 0.00000000],
+        [-6.27331317, -0.00035731, 0.00021889, 0.00035911, -0.00000115, 0.00000000],
+        [-6.27331327, -0.00035727, 0.00021886, 0.00035907, -0.00000115, 0.00000000],
+        [-6.27331337, -0.00035723, 0.00021884, 0.00035903, -0.00000115, 0.00000000],
+        [-6.27331347, -0.00035719, 0.00021881, 0.00035899, -0.00000115, 0.00000000],
+        [-6.27331356, -0.00035715, 0.00021879, 0.00035894, -0.00000115, 0.00000000],
+        [-6.27331366, -0.00035711, 0.00021876, 0.00035890, -0.00000115, 0.00000000],
+        [-6.27331376, -0.00035707, 0.00021874, 0.00035886, -0.00000115, 0.00000000],
+        [-6.27331386, -0.00035703, 0.00021871, 0.00035882, -0.00000115, 0.00000000],
+        [-6.27331396, -0.00035698, 0.00021869, 0.00035878, -0.00000115, 0.00000000],
+        [-6.27331406, -0.00035694, 0.00021866, 0.00035874, -0.00000115, 0.00000000],
+        [-6.27331416, -0.00035690, 0.00021863, 0.00035870, -0.00000115, 0.00000000],
+        [-6.27331425, -0.00035686, 0.00021861, 0.00035866, -0.00000115, 0.00000000],
+        [-6.27331435, -0.00035682, 0.00021858, 0.00035861, -0.00000115, 0.00000000],
+        [-6.27331445, -0.00035678, 0.00021856, 0.00035857, -0.00000115, 0.00000000],
+        [-6.27331455, -0.00035674, 0.00021853, 0.00035853, -0.00000115, 0.00000000],
+        [-6.27331465, -0.00035670, 0.00021851, 0.00035849, -0.00000115, 0.00000000],
+        [-6.27331475, -0.00035666, 0.00021848, 0.00035845, -0.00000115, 0.00000000],
+        [-6.27331485, -0.00035661, 0.00021846, 0.00035841, -0.00000115, 0.00000000],
+        [-6.27331494, -0.00035657, 0.00021843, 0.00035837, -0.00000115, 0.00000000],
+        [-6.27331504, -0.00035653, 0.00021841, 0.00035832, -0.00000115, 0.00000000],
+        [-6.27331514, -0.00035649, 0.00021838, 0.00035828, -0.00000115, 0.00000000],
+        [-6.27331524, -0.00035645, 0.00021836, 0.00035824, -0.00000115, 0.00000000],
+        [-6.27331534, -0.00035641, 0.00021833, 0.00035820, -0.00000115, 0.00000000],
+        [-6.27331543, -0.00035637, 0.00021831, 0.00035816, -0.00000115, 0.00000000],
+        [-6.27331553, -0.00035633, 0.00021828, 0.00035812, -0.00000115, 0.00000000],
+        [-6.27331563, -0.00035629, 0.00021826, 0.00035808, -0.00000115, 0.00000000],
+        [-6.27331573, -0.00035625, 0.00021823, 0.00035804, -0.00000115, 0.00000000],
+        [-6.27331583, -0.00035620, 0.00021821, 0.00035799, -0.00000115, 0.00000000],
+        [-6.27331593, -0.00035616, 0.00021818, 0.00035795, -0.00000115, 0.00000000],
+        [-6.27331602, -0.00035612, 0.00021816, 0.00035791, -0.00000115, 0.00000000],
+        [-6.27331612, -0.00035608, 0.00021813, 0.00035787, -0.00000115, 0.00000000],
+        [-6.27331622, -0.00035604, 0.00021811, 0.00035783, -0.00000115, 0.00000000],
+        [-6.27331632, -0.00035600, 0.00021808, 0.00035779, -0.00000115, 0.00000000],
+        [-6.27331642, -0.00035596, 0.00021806, 0.00035775, -0.00000115, 0.00000000],
+        [-6.27331651, -0.00035592, 0.00021803, 0.00035771, -0.00000115, 0.00000000],
+        [-6.27331661, -0.00035588, 0.00021801, 0.00035767, -0.00000115, 0.00000000],
+        [-6.27331671, -0.00035584, 0.00021798, 0.00035762, -0.00000115, 0.00000000],
+        [-6.27331681, -0.00035579, 0.00021796, 0.00035758, -0.00000115, 0.00000000],
+        [-6.27331691, -0.00035575, 0.00021793, 0.00035754, -0.00000115, 0.00000000],
+        [-6.27331700, -0.00035571, 0.00021791, 0.00035750, -0.00000115, 0.00000000],
+        [-6.27331710, -0.00035567, 0.00021788, 0.00035746, -0.00000115, 0.00000000],
+        [-6.27331720, -0.00035563, 0.00021786, 0.00035742, -0.00000115, 0.00000000],
+        [-6.27331730, -0.00035559, 0.00021783, 0.00035738, -0.00000115, 0.00000000],
+        [-6.27331740, -0.00035555, 0.00021781, 0.00035734, -0.00000115, 0.00000000],
+        [-6.27331749, -0.00035551, 0.00021778, 0.00035730, -0.00000115, 0.00000000],
+        [-6.27331759, -0.00035547, 0.00021776, 0.00035725, -0.00000115, 0.00000000],
+        [-6.27331769, -0.00035543, 0.00021773, 0.00035721, -0.00000115, 0.00000000],
+        [-6.27331779, -0.00035539, 0.00021771, 0.00035717, -0.00000115, 0.00000000],
+        [-6.27331788, -0.00035535, 0.00021768, 0.00035713, -0.00000115, 0.00000000],
+        [-6.27331798, -0.00035530, 0.00021766, 0.00035709, -0.00000115, 0.00000000],
+        [-6.27331808, -0.00035526, 0.00021763, 0.00035705, -0.00000115, 0.00000000],
+        [-6.27331818, -0.00035522, 0.00021761, 0.00035701, -0.00000115, 0.00000000],
+        [-6.27331827, -0.00035518, 0.00021758, 0.00035697, -0.00000115, 0.00000000],
+        [-6.27331837, -0.00035514, 0.00021756, 0.00035693, -0.00000115, 0.00000000],
+        [-6.27331847, -0.00035510, 0.00021753, 0.00035689, -0.00000115, 0.00000000],
+        [-6.27331857, -0.00035506, 0.00021751, 0.00035684, -0.00000115, 0.00000000],
+        [-6.27331866, -0.00035502, 0.00021748, 0.00035680, -0.00000115, 0.00000000],
+        [-6.27331876, -0.00035498, 0.00021746, 0.00035676, -0.00000115, 0.00000000],
+        [-6.27331886, -0.00035494, 0.00021743, 0.00035672, -0.00000115, 0.00000000],
+        [-6.27331896, -0.00035490, 0.00021741, 0.00035668, -0.00000115, 0.00000000],
+        [-6.27331905, -0.00035486, 0.00021738, 0.00035664, -0.00000115, 0.00000000],
+        [-6.27331915, -0.00035482, 0.00021736, 0.00035660, -0.00000115, 0.00000000],
+        [-6.27331925, -0.00035478, 0.00021733, 0.00035656, -0.00000115, 0.00000000],
+        [-6.27331935, -0.00035473, 0.00021731, 0.00035652, -0.00000115, 0.00000000],
+        [-6.27331944, -0.00035469, 0.00021728, 0.00035648, -0.00000115, 0.00000000],
+        [-6.27331954, -0.00035465, 0.00021726, 0.00035644, -0.00000115, 0.00000000],
+        [-6.27331964, -0.00035461, 0.00021723, 0.00035640, -0.00000115, 0.00000000],
+        [-6.27331974, -0.00035457, 0.00021721, 0.00035635, -0.00000115, 0.00000000],
+        [-6.27331983, -0.00035453, 0.00021718, 0.00035631, -0.00000115, 0.00000000],
+        [-6.27331993, -0.00035449, 0.00021716, 0.00035627, -0.00000115, 0.00000000],
+        [-6.27332003, -0.00035445, 0.00021713, 0.00035623, -0.00000115, 0.00000000],
+        [-6.27332012, -0.00035441, 0.00021711, 0.00035619, -0.00000115, 0.00000000],
+        [-6.27332022, -0.00035437, 0.00021708, 0.00035615, -0.00000115, 0.00000000],
+        [-6.27332032, -0.00035433, 0.00021706, 0.00035611, -0.00000115, 0.00000000],
+        [-6.27332042, -0.00035429, 0.00021703, 0.00035607, -0.00000115, 0.00000000],
+        [-6.27332051, -0.00035425, 0.00021701, 0.00035603, -0.00000115, 0.00000000],
+        [-6.27332061, -0.00035421, 0.00021698, 0.00035599, -0.00000115, 0.00000000],
+        [-6.27332071, -0.00035417, 0.00021696, 0.00035595, -0.00000115, 0.00000000],
+        [-6.27332080, -0.00035413, 0.00021693, 0.00035591, -0.00000115, 0.00000000],
+        [-6.27332090, -0.00035409, 0.00021691, 0.00035587, -0.00000115, 0.00000000],
+        [-6.27332100, -0.00035405, 0.00021688, 0.00035582, -0.00000115, 0.00000000],
+        [-6.27332109, -0.00035400, 0.00021686, 0.00035578, -0.00000115, 0.00000000],
+        [-6.27332119, -0.00035396, 0.00021683, 0.00035574, -0.00000115, 0.00000000],
+        [-6.27332129, -0.00035392, 0.00021681, 0.00035570, -0.00000115, 0.00000000],
+        [-6.27332139, -0.00035388, 0.00021678, 0.00035566, -0.00000115, 0.00000000],
+        [-6.27332148, -0.00035384, 0.00021676, 0.00035562, -0.00000115, 0.00000000],
+        [-6.27332158, -0.00035380, 0.00021673, 0.00035558, -0.00000115, 0.00000000],
+        [-6.27332168, -0.00035376, 0.00021671, 0.00035554, -0.00000115, 0.00000000],
+        [-6.27332177, -0.00035372, 0.00021669, 0.00035550, -0.00000115, 0.00000000],
+        [-6.27332187, -0.00035368, 0.00021666, 0.00035546, -0.00000115, 0.00000000],
+        [-6.27332197, -0.00035364, 0.00021664, 0.00035542, -0.00000115, 0.00000000],
+        [-6.27332206, -0.00035360, 0.00021661, 0.00035538, -0.00000115, 0.00000000],
+        [-6.27332216, -0.00035356, 0.00021659, 0.00035534, -0.00000115, 0.00000000],
+        [-6.27332226, -0.00035352, 0.00021656, 0.00035530, -0.00000115, 0.00000000],
+        [-6.27332235, -0.00035348, 0.00021654, 0.00035526, -0.00000115, 0.00000000],
+        [-6.27332245, -0.00035344, 0.00021651, 0.00035522, -0.00000115, 0.00000000],
+        [-6.27332255, -0.00035340, 0.00021649, 0.00035517, -0.00000115, 0.00000000],
+        [-6.27332264, -0.00035336, 0.00021646, 0.00035513, -0.00000115, 0.00000000],
+        [-6.27332274, -0.00035332, 0.00021644, 0.00035509, -0.00000115, 0.00000000],
+        [-6.27332284, -0.00035328, 0.00021641, 0.00035505, -0.00000115, 0.00000000],
+        [-6.27332293, -0.00035324, 0.00021639, 0.00035501, -0.00000115, 0.00000000],
+        [-6.27332303, -0.00035320, 0.00021636, 0.00035497, -0.00000115, 0.00000000],
+        [-6.27332313, -0.00035316, 0.00021634, 0.00035493, -0.00000115, 0.00000000],
+        [-6.27332322, -0.00035312, 0.00021631, 0.00035489, -0.00000115, 0.00000000],
+        [-6.27332332, -0.00035308, 0.00021629, 0.00035485, -0.00000115, 0.00000000],
+        [-6.27332341, -0.00035304, 0.00021626, 0.00035481, -0.00000115, 0.00000000],
+        [-6.27332351, -0.00035300, 0.00021624, 0.00035477, -0.00000115, 0.00000000],
+        [-6.27332361, -0.00035296, 0.00021622, 0.00035473, -0.00000115, 0.00000000],
+        [-6.27332370, -0.00035291, 0.00021619, 0.00035469, -0.00000115, 0.00000000],
+        [-6.27332380, -0.00035287, 0.00021617, 0.00035465, -0.00000115, 0.00000000],
+        [-6.27332390, -0.00035283, 0.00021614, 0.00035461, -0.00000115, 0.00000000],
+        [-6.27332399, -0.00035279, 0.00021612, 0.00035457, -0.00000115, 0.00000000],
+        [-6.27332409, -0.00035275, 0.00021609, 0.00035453, -0.00000115, 0.00000000],
+        [-6.27332418, -0.00035271, 0.00021607, 0.00035449, -0.00000115, 0.00000000],
+        [-6.27332428, -0.00035267, 0.00021604, 0.00035445, -0.00000115, 0.00000000],
+        [-6.27332438, -0.00035263, 0.00021602, 0.00035441, -0.00000115, 0.00000000],
+        [-6.27332447, -0.00035259, 0.00021599, 0.00035437, -0.00000115, 0.00000000],
+        [-6.27332457, -0.00035255, 0.00021597, 0.00035432, -0.00000115, 0.00000000],
+        [-6.27332467, -0.00035251, 0.00021594, 0.00035428, -0.00000115, 0.00000000],
+        [-6.27332476, -0.00035247, 0.00021592, 0.00035424, -0.00000115, 0.00000000],
+        [-6.27332486, -0.00035243, 0.00021590, 0.00035420, -0.00000115, 0.00000000],
+        [-6.27332495, -0.00035239, 0.00021587, 0.00035416, -0.00000115, 0.00000000],
+        [-6.27332505, -0.00035235, 0.00021585, 0.00035412, -0.00000115, 0.00000000],
+        [-6.27332515, -0.00035231, 0.00021582, 0.00035408, -0.00000115, 0.00000000],
+        [-6.27332524, -0.00035227, 0.00021580, 0.00035404, -0.00000115, 0.00000000],
+        [-6.27332534, -0.00035223, 0.00021577, 0.00035400, -0.00000115, 0.00000000],
+        [-6.27332543, -0.00035219, 0.00021575, 0.00035396, -0.00000115, 0.00000000],
+        [-6.27332553, -0.00035215, 0.00021572, 0.00035392, -0.00000115, 0.00000000],
+        [-6.27332563, -0.00035211, 0.00021570, 0.00035388, -0.00000115, 0.00000000],
+        [-6.27332572, -0.00035207, 0.00021567, 0.00035384, -0.00000115, 0.00000000],
+        [-6.27332582, -0.00035203, 0.00021565, 0.00035380, -0.00000115, 0.00000000],
+        [-6.27332591, -0.00035199, 0.00021563, 0.00035376, -0.00000115, 0.00000000],
+        [-6.27332601, -0.00035195, 0.00021560, 0.00035372, -0.00000115, 0.00000000],
+        [-6.27332611, -0.00035191, 0.00021558, 0.00035368, -0.00000115, 0.00000000],
+        [-6.27332620, -0.00035187, 0.00021555, 0.00035364, -0.00000115, 0.00000000],
+        [-6.27332630, -0.00035183, 0.00021553, 0.00035360, -0.00000115, 0.00000000],
+        [-6.27332639, -0.00035179, 0.00021550, 0.00035356, -0.00000115, 0.00000000],
+        [-6.27332649, -0.00035175, 0.00021548, 0.00035352, -0.00000115, 0.00000000],
+        [-6.27332658, -0.00035171, 0.00021545, 0.00035348, -0.00000115, 0.00000000],
+        [-6.27332668, -0.00035167, 0.00021543, 0.00035344, -0.00000115, 0.00000000],
+        [-6.27332678, -0.00035163, 0.00021540, 0.00035340, -0.00000115, 0.00000000],
+        [-6.27332687, -0.00035159, 0.00021538, 0.00035336, -0.00000115, 0.00000000],
+        [-6.27332697, -0.00035155, 0.00021536, 0.00035332, -0.00000115, 0.00000000],
+        [-6.27332706, -0.00035151, 0.00021533, 0.00035328, -0.00000115, 0.00000000],
+        [-6.27332716, -0.00035147, 0.00021531, 0.00035324, -0.00000115, 0.00000000],
+        [-6.27332725, -0.00035143, 0.00021528, 0.00035320, -0.00000115, 0.00000000],
+        [-6.27332735, -0.00035139, 0.00021526, 0.00035316, -0.00000115, 0.00000000],
+        [-6.27332744, -0.00035135, 0.00021523, 0.00035312, -0.00000115, 0.00000000],
+        [-6.27332754, -0.00035131, 0.00021521, 0.00035308, -0.00000115, 0.00000000],
+        [-6.27332763, -0.00035127, 0.00021518, 0.00035304, -0.00000115, 0.00000000],
+        [-6.27332773, -0.00035123, 0.00021516, 0.00035300, -0.00000115, 0.00000000],
+        [-6.27332783, -0.00035119, 0.00021514, 0.00035296, -0.00000115, 0.00000000],
+        [-6.27332792, -0.00035115, 0.00021511, 0.00035292, -0.00000115, 0.00000000],
+        [-6.27332802, -0.00035111, 0.00021509, 0.00035288, -0.00000115, 0.00000000],
+        [-6.27332811, -0.00035107, 0.00021506, 0.00035284, -0.00000115, 0.00000000],
+        [-6.27332821, -0.00035103, 0.00021504, 0.00035280, -0.00000115, 0.00000000],
+        [-6.27332830, -0.00035099, 0.00021501, 0.00035276, -0.00000115, 0.00000000],
+        [-6.27332840, -0.00035095, 0.00021499, 0.00035272, -0.00000115, 0.00000000],
+        [-6.27332849, -0.00035091, 0.00021496, 0.00035268, -0.00000115, 0.00000000],
+        [-6.27332859, -0.00035087, 0.00021494, 0.00035264, -0.00000115, 0.00000000],
+        [-6.27332868, -0.00035084, 0.00021492, 0.00035260, -0.00000115, 0.00000000],
+        [-6.27332878, -0.00035080, 0.00021489, 0.00035256, -0.00000115, 0.00000000],
+        [-6.27332887, -0.00035076, 0.00021487, 0.00035252, -0.00000115, 0.00000000],
+        [-6.27332897, -0.00035072, 0.00021484, 0.00035248, -0.00000115, 0.00000000],
+        [-6.27332906, -0.00035068, 0.00021482, 0.00035244, -0.00000115, 0.00000000],
+        [-6.27332916, -0.00035064, 0.00021479, 0.00035240, -0.00000115, 0.00000000],
+        [-6.27332925, -0.00035060, 0.00021477, 0.00035236, -0.00000115, 0.00000000],
+        [-6.27332935, -0.00035056, 0.00021475, 0.00035232, -0.00000115, 0.00000000],
+        [-6.27332944, -0.00035052, 0.00021472, 0.00035228, -0.00000115, 0.00000000],
+        [-6.27332954, -0.00035048, 0.00021470, 0.00035224, -0.00000115, 0.00000000],
+        [-6.27332963, -0.00035044, 0.00021467, 0.00035220, -0.00000115, 0.00000000],
+        [-6.27332973, -0.00035040, 0.00021465, 0.00035216, -0.00000115, 0.00000000],
+        [-6.27332982, -0.00035036, 0.00021462, 0.00035212, -0.00000115, 0.00000000],
+        [-6.27332992, -0.00035032, 0.00021460, 0.00035208, -0.00000115, 0.00000000],
+        [-6.27333001, -0.00035028, 0.00021458, 0.00035204, -0.00000115, 0.00000000],
+        [-6.27333011, -0.00035024, 0.00021455, 0.00035200, -0.00000115, 0.00000000],
+        [-6.27333020, -0.00035020, 0.00021453, 0.00035196, -0.00000115, 0.00000000],
+        [-6.27333030, -0.00035016, 0.00021450, 0.00035192, -0.00000115, 0.00000000],
+        [-6.27333039, -0.00035012, 0.00021448, 0.00035188, -0.00000115, 0.00000000],
+        [-6.27333049, -0.00035008, 0.00021445, 0.00035184, -0.00000115, 0.00000000],
+        [-6.27333058, -0.00035004, 0.00021443, 0.00035180, -0.00000115, 0.00000000],
+        [-6.27333068, -0.00035000, 0.00021441, 0.00035176, -0.00000115, 0.00000000],
+        [-6.27333077, -0.00034996, 0.00021438, 0.00035172, -0.00000115, 0.00000000],
+        [-6.27333087, -0.00034992, 0.00021436, 0.00035168, -0.00000115, 0.00000000],
+        [-6.27333096, -0.00034988, 0.00021433, 0.00035164, -0.00000115, 0.00000000],
+        [-6.27333106, -0.00034984, 0.00021431, 0.00035160, -0.00000115, 0.00000000],
+        [-6.27333115, -0.00034980, 0.00021428, 0.00035156, -0.00000115, 0.00000000],
+        [-6.27333125, -0.00034976, 0.00021426, 0.00035152, -0.00000115, 0.00000000],
+        [-6.27333134, -0.00034973, 0.00021424, 0.00035148, -0.00000115, 0.00000000],
+        [-6.27333144, -0.00034969, 0.00021421, 0.00035144, -0.00000115, 0.00000000],
+        [-6.27333153, -0.00034965, 0.00021419, 0.00035140, -0.00000115, 0.00000000],
+        [-6.27333162, -0.00034961, 0.00021416, 0.00035136, -0.00000115, 0.00000000],
+        [-6.27333172, -0.00034957, 0.00021414, 0.00035132, -0.00000115, 0.00000000],
+        [-6.27333181, -0.00034953, 0.00021412, 0.00035128, -0.00000115, 0.00000000],
+        [-6.27333191, -0.00034949, 0.00021409, 0.00035124, -0.00000115, 0.00000000],
+        [-6.27333200, -0.00034945, 0.00021407, 0.00035120, -0.00000115, 0.00000000],
+        [-6.27333210, -0.00034941, 0.00021404, 0.00035117, -0.00000115, 0.00000000],
+        [-6.27333219, -0.00034937, 0.00021402, 0.00035113, -0.00000115, 0.00000000],
+        [-6.27333229, -0.00034933, 0.00021399, 0.00035109, -0.00000115, 0.00000000],
+        [-6.27333238, -0.00034929, 0.00021397, 0.00035105, -0.00000115, 0.00000000],
+        [-6.27333247, -0.00034925, 0.00021395, 0.00035101, -0.00000115, 0.00000000],
+        [-6.27333257, -0.00034921, 0.00021392, 0.00035097, -0.00000115, 0.00000000],
+        [-6.27333266, -0.00034917, 0.00021390, 0.00035093, -0.00000115, 0.00000000],
+        [-6.27333276, -0.00034913, 0.00021387, 0.00035089, -0.00000115, 0.00000000],
+        [-6.27333285, -0.00034909, 0.00021385, 0.00035085, -0.00000115, 0.00000000],
+        [-6.27333295, -0.00034905, 0.00021383, 0.00035081, -0.00000115, 0.00000000],
+        [-6.27333304, -0.00034902, 0.00021380, 0.00035077, -0.00000115, 0.00000000],
+        [-6.27333313, -0.00034898, 0.00021378, 0.00035073, -0.00000115, 0.00000000],
+        [-6.27333323, -0.00034894, 0.00021375, 0.00035069, -0.00000115, 0.00000000],
+        [-6.27333332, -0.00034890, 0.00021373, 0.00035065, -0.00000115, 0.00000000],
+        [-6.27333342, -0.00034886, 0.00021370, 0.00035061, -0.00000115, 0.00000000],
+        [-6.27333351, -0.00034882, 0.00021368, 0.00035057, -0.00000115, 0.00000000],
+        [-6.27333360, -0.00034878, 0.00021366, 0.00035053, -0.00000115, 0.00000000],
+        [-6.27333370, -0.00034874, 0.00021363, 0.00035049, -0.00000115, 0.00000000],
+        [-6.27333379, -0.00034870, 0.00021361, 0.00035045, -0.00000115, 0.00000000],
+        [-6.27333389, -0.00034866, 0.00021358, 0.00035041, -0.00000115, 0.00000000],
+        [-6.27333398, -0.00034862, 0.00021356, 0.00035037, -0.00000115, 0.00000000],
+        [-6.27333408, -0.00034858, 0.00021354, 0.00035033, -0.00000115, 0.00000000],
+        [-6.27333417, -0.00034854, 0.00021351, 0.00035030, -0.00000115, 0.00000000],
+        [-6.27333426, -0.00034850, 0.00021349, 0.00035026, -0.00000115, 0.00000000],
+        [-6.27333436, -0.00034847, 0.00021346, 0.00035022, -0.00000115, 0.00000000],
+        [-6.27333445, -0.00034843, 0.00021344, 0.00035018, -0.00000115, 0.00000000],
+        [-6.27333454, -0.00034839, 0.00021342, 0.00035014, -0.00000115, 0.00000000],
+        [-6.27333464, -0.00034835, 0.00021339, 0.00035010, -0.00000115, 0.00000000],
+        [-6.27333473, -0.00034831, 0.00021337, 0.00035006, -0.00000115, 0.00000000],
+        [-6.27333483, -0.00034827, 0.00021334, 0.00035002, -0.00000115, 0.00000000],
+        [-6.27333492, -0.00034823, 0.00021332, 0.00034998, -0.00000115, 0.00000000],
+        [-6.27333501, -0.00034819, 0.00021330, 0.00034994, -0.00000115, 0.00000000],
+        [-6.27333511, -0.00034815, 0.00021327, 0.00034990, -0.00000115, 0.00000000],
+        [-6.27333520, -0.00034811, 0.00021325, 0.00034986, -0.00000115, 0.00000000],
+        [-6.27333530, -0.00034807, 0.00021322, 0.00034982, -0.00000115, 0.00000000],
+        [-6.27333539, -0.00034803, 0.00021320, 0.00034978, -0.00000115, 0.00000000],
+        [-6.27333548, -0.00034800, 0.00021318, 0.00034974, -0.00000115, 0.00000000],
+        [-6.27333558, -0.00034796, 0.00021315, 0.00034970, -0.00000115, 0.00000000],
+        [-6.27333567, -0.00034792, 0.00021313, 0.00034967, -0.00000115, 0.00000000],
+        [-6.27333576, -0.00034788, 0.00021310, 0.00034963, -0.00000115, 0.00000000],
+        [-6.27333586, -0.00034784, 0.00021308, 0.00034959, -0.00000115, 0.00000000],
+        [-6.27333595, -0.00034780, 0.00021306, 0.00034955, -0.00000115, 0.00000000],
+        [-6.27333604, -0.00034776, 0.00021303, 0.00034951, -0.00000115, 0.00000000],
+        [-6.27333614, -0.00034772, 0.00021301, 0.00034947, -0.00000115, 0.00000000],
+        [-6.27333623, -0.00034768, 0.00021298, 0.00034943, -0.00000115, 0.00000000],
+        [-6.27333632, -0.00034764, 0.00021296, 0.00034939, -0.00000115, 0.00000000],
+        [-6.27333642, -0.00034760, 0.00021294, 0.00034935, -0.00000115, 0.00000000],
+        [-6.27333651, -0.00034757, 0.00021291, 0.00034931, -0.00000115, 0.00000000],
+        [-6.27333661, -0.00034753, 0.00021289, 0.00034927, -0.00000115, 0.00000000],
+        [-6.27333670, -0.00034749, 0.00021286, 0.00034923, -0.00000115, 0.00000000],
+        [-6.27333679, -0.00034745, 0.00021284, 0.00034919, -0.00000115, 0.00000000],
+        [-6.27333689, -0.00034741, 0.00021282, 0.00034915, -0.00000115, 0.00000000],
+        [-6.27333698, -0.00034737, 0.00021279, 0.00034912, -0.00000115, 0.00000000],
+        [-6.27333707, -0.00034733, 0.00021277, 0.00034908, -0.00000115, 0.00000000],
+        [-6.27333717, -0.00034729, 0.00021275, 0.00034904, -0.00000115, 0.00000000],
+        [-6.27333726, -0.00034725, 0.00021272, 0.00034900, -0.00000115, 0.00000000],
+        [-6.27333735, -0.00034721, 0.00021270, 0.00034896, -0.00000115, 0.00000000],
+        [-6.27333745, -0.00034718, 0.00021267, 0.00034892, -0.00000115, 0.00000000],
+        [-6.27333754, -0.00034714, 0.00021265, 0.00034888, -0.00000115, 0.00000000],
+        [-6.27333763, -0.00034710, 0.00021263, 0.00034884, -0.00000115, 0.00000000],
+        [-6.27333772, -0.00034706, 0.00021260, 0.00034880, -0.00000115, 0.00000000],
+        [-6.27333782, -0.00034702, 0.00021258, 0.00034876, -0.00000115, 0.00000000],
+        [-6.27333791, -0.00034698, 0.00021255, 0.00034872, -0.00000115, 0.00000000],
+        [-6.27333800, -0.00034694, 0.00021253, 0.00034869, -0.00000115, 0.00000000],
+        [-6.27333810, -0.00034690, 0.00021251, 0.00034865, -0.00000115, 0.00000000],
+        [-6.27333819, -0.00034686, 0.00021248, 0.00034861, -0.00000115, 0.00000000],
+        [-6.27333828, -0.00034683, 0.00021246, 0.00034857, -0.00000115, 0.00000000],
+        [-6.27333838, -0.00034679, 0.00021244, 0.00034853, -0.00000115, 0.00000000],
+        [-6.27333847, -0.00034675, 0.00021241, 0.00034849, -0.00000115, 0.00000000],
+        [-6.27333856, -0.00034671, 0.00021239, 0.00034845, -0.00000115, 0.00000000],
+        [-6.27333866, -0.00034667, 0.00021236, 0.00034841, -0.00000115, 0.00000000],
+        [-6.27333875, -0.00034663, 0.00021234, 0.00034837, -0.00000115, 0.00000000],
+        [-6.27333884, -0.00034659, 0.00021232, 0.00034833, -0.00000115, 0.00000000],
+        [-6.27333893, -0.00034655, 0.00021229, 0.00034829, -0.00000115, 0.00000000],
+        [-6.27333903, -0.00034652, 0.00021227, 0.00034826, -0.00000115, 0.00000000],
+        [-6.27333912, -0.00034648, 0.00021225, 0.00034822, -0.00000115, 0.00000000],
+        [-6.27333921, -0.00034644, 0.00021222, 0.00034818, -0.00000115, 0.00000000],
+        [-6.27333931, -0.00034640, 0.00021220, 0.00034814, -0.00000115, 0.00000000],
+        [-6.27333940, -0.00034636, 0.00021217, 0.00034810, -0.00000115, 0.00000000],
+        [-6.27333949, -0.00034632, 0.00021215, 0.00034806, -0.00000115, 0.00000000],
+        [-6.27333958, -0.00034628, 0.00021213, 0.00034802, -0.00000115, 0.00000000],
+        [-6.27333968, -0.00034624, 0.00021210, 0.00034798, -0.00000115, 0.00000000],
+        [-6.27333977, -0.00034620, 0.00021208, 0.00034794, -0.00000115, 0.00000000],
+        [-6.27333986, -0.00034617, 0.00021206, 0.00034791, -0.00000115, 0.00000000],
+        [-6.27333995, -0.00034613, 0.00021203, 0.00034787, -0.00000115, 0.00000000],
+        [-6.27334005, -0.00034609, 0.00021201, 0.00034783, -0.00000115, 0.00000000],
+        [-6.27334014, -0.00034605, 0.00021198, 0.00034779, -0.00000115, 0.00000000],
+        [-6.27334023, -0.00034601, 0.00021196, 0.00034775, -0.00000115, 0.00000000],
+        [-6.27334033, -0.00034597, 0.00021194, 0.00034771, -0.00000115, 0.00000000],
+        [-6.27334042, -0.00034593, 0.00021191, 0.00034767, -0.00000115, 0.00000000],
+        [-6.27334051, -0.00034590, 0.00021189, 0.00034763, -0.00000115, 0.00000000],
+        [-6.27334060, -0.00034586, 0.00021187, 0.00034759, -0.00000115, 0.00000000],
+        [-6.27334070, -0.00034582, 0.00021184, 0.00034756, -0.00000115, 0.00000000],
+        [-6.27334079, -0.00034578, 0.00021182, 0.00034752, -0.00000115, 0.00000000],
+        [-6.27334088, -0.00034574, 0.00021179, 0.00034748, -0.00000115, 0.00000000],
+        [-6.27334097, -0.00034570, 0.00021177, 0.00034744, -0.00000115, 0.00000000],
+        [-6.27334107, -0.00034566, 0.00021175, 0.00034740, -0.00000115, 0.00000000],
+        [-6.27334116, -0.00034563, 0.00021172, 0.00034736, -0.00000115, 0.00000000],
+        [-6.27334125, -0.00034559, 0.00021170, 0.00034732, -0.00000115, 0.00000000],
+        [-6.27334134, -0.00034555, 0.00021168, 0.00034728, -0.00000115, 0.00000000],
+        [-6.27334143, -0.00034551, 0.00021165, 0.00034725, -0.00000115, 0.00000000],
+        [-6.27334153, -0.00034547, 0.00021163, 0.00034721, -0.00000115, 0.00000000],
+        [-6.27334162, -0.00034543, 0.00021161, 0.00034717, -0.00000115, 0.00000000],
+        [-6.27334171, -0.00034539, 0.00021158, 0.00034713, -0.00000115, 0.00000000],
+        [-6.27334180, -0.00034536, 0.00021156, 0.00034709, -0.00000115, 0.00000000],
+        [-6.27334190, -0.00034532, 0.00021153, 0.00034705, -0.00000115, 0.00000000],
+        [-6.27334199, -0.00034528, 0.00021151, 0.00034701, -0.00000115, 0.00000000],
+        [-6.27334208, -0.00034524, 0.00021149, 0.00034697, -0.00000115, 0.00000000],
+        [-6.27334217, -0.00034520, 0.00021146, 0.00034694, -0.00000115, 0.00000000],
+        [-6.27334226, -0.00034516, 0.00021144, 0.00034690, -0.00000115, 0.00000000],
+        [-6.27334236, -0.00034512, 0.00021142, 0.00034686, -0.00000115, 0.00000000],
+        [-6.27334245, -0.00034509, 0.00021139, 0.00034682, -0.00000115, 0.00000000],
+        [-6.27334254, -0.00034505, 0.00021137, 0.00034678, -0.00000115, 0.00000000],
+        [-6.27334263, -0.00034501, 0.00021135, 0.00034674, -0.00000115, 0.00000000],
+        [-6.27334273, -0.00034497, 0.00021132, 0.00034670, -0.00000115, 0.00000000],
+        [-6.27334282, -0.00034493, 0.00021130, 0.00034666, -0.00000115, 0.00000000],
+        [-6.27334291, -0.00034489, 0.00021128, 0.00034663, -0.00000115, 0.00000000],
+        [-6.27334300, -0.00034486, 0.00021125, 0.00034659, -0.00000115, 0.00000000],
+        [-6.27334309, -0.00034482, 0.00021123, 0.00034655, -0.00000115, 0.00000000],
+        [-6.27334319, -0.00034478, 0.00021120, 0.00034651, -0.00000115, 0.00000000],
+        [-6.27334328, -0.00034474, 0.00021118, 0.00034647, -0.00000115, 0.00000000],
+        [-6.27334337, -0.00034470, 0.00021116, 0.00034643, -0.00000115, 0.00000000],
+        [-6.27334346, -0.00034466, 0.00021113, 0.00034639, -0.00000115, 0.00000000],
+        [-6.27334355, -0.00034462, 0.00021111, 0.00034636, -0.00000115, 0.00000000],
+        [-6.27334364, -0.00034459, 0.00021109, 0.00034632, -0.00000115, 0.00000000],
+        [-6.27334374, -0.00034455, 0.00021106, 0.00034628, -0.00000115, 0.00000000],
+        [-6.27334383, -0.00034451, 0.00021104, 0.00034624, -0.00000115, 0.00000000],
+        [-6.27334392, -0.00034447, 0.00021102, 0.00034620, -0.00000115, 0.00000000],
+        [-6.27334401, -0.00034443, 0.00021099, 0.00034616, -0.00000115, 0.00000000],
+        [-6.27334410, -0.00034439, 0.00021097, 0.00034612, -0.00000115, 0.00000000],
+        [-6.27334420, -0.00034436, 0.00021095, 0.00034609, -0.00000115, 0.00000000],
+        [-6.27334429, -0.00034432, 0.00021092, 0.00034605, -0.00000115, 0.00000000],
+        [-6.27334438, -0.00034428, 0.00021090, 0.00034601, -0.00000115, 0.00000000],
+        [-6.27334447, -0.00034424, 0.00021088, 0.00034597, -0.00000115, 0.00000000],
+        [-6.27334456, -0.00034420, 0.00021085, 0.00034593, -0.00000115, 0.00000000],
+        [-6.27334465, -0.00034417, 0.00021083, 0.00034589, -0.00000115, 0.00000000],
+        [-6.27334475, -0.00034413, 0.00021081, 0.00034586, -0.00000115, 0.00000000],
+        [-6.27334484, -0.00034409, 0.00021078, 0.00034582, -0.00000115, 0.00000000],
+        [-6.27334493, -0.00034405, 0.00021076, 0.00034578, -0.00000115, 0.00000000],
+        [-6.27334502, -0.00034401, 0.00021073, 0.00034574, -0.00000115, 0.00000000],
+        [-6.27334511, -0.00034397, 0.00021071, 0.00034570, -0.00000115, 0.00000000],
+        [-6.27334520, -0.00034394, 0.00021069, 0.00034566, -0.00000115, 0.00000000],
+        [-6.27334529, -0.00034390, 0.00021066, 0.00034562, -0.00000115, 0.00000000],
+        [-6.27334539, -0.00034386, 0.00021064, 0.00034559, -0.00000115, 0.00000000],
+        [-6.27334548, -0.00034382, 0.00021062, 0.00034555, -0.00000115, 0.00000000],
+        [-6.27334557, -0.00034378, 0.00021059, 0.00034551, -0.00000115, 0.00000000],
+        [-6.27334566, -0.00034374, 0.00021057, 0.00034547, -0.00000115, 0.00000000],
+        [-6.27334575, -0.00034371, 0.00021055, 0.00034543, -0.00000116, 0.00000000],
+        [-6.27334584, -0.00034367, 0.00021052, 0.00034539, -0.00000116, 0.00000000],
+        [-6.27334593, -0.00034363, 0.00021050, 0.00034536, -0.00000116, 0.00000000],
+        [-6.27334603, -0.00034359, 0.00021048, 0.00034532, -0.00000116, 0.00000000],
+        [-6.27334612, -0.00034355, 0.00021045, 0.00034528, -0.00000116, 0.00000000],
+        [-6.27334621, -0.00034352, 0.00021043, 0.00034524, -0.00000116, 0.00000000],
+        [-6.27334630, -0.00034348, 0.00021041, 0.00034520, -0.00000116, 0.00000000],
+        [-6.27334639, -0.00034344, 0.00021038, 0.00034516, -0.00000116, 0.00000000],
+        [-6.27334648, -0.00034340, 0.00021036, 0.00034513, -0.00000116, 0.00000000],
+        [-6.27334657, -0.00034336, 0.00021034, 0.00034509, -0.00000116, 0.00000000],
+        [-6.27334666, -0.00034333, 0.00021031, 0.00034505, -0.00000116, 0.00000000],
+        [-6.27334676, -0.00034329, 0.00021029, 0.00034501, -0.00000116, 0.00000000],
+        [-6.27334685, -0.00034325, 0.00021027, 0.00034497, -0.00000116, 0.00000000],
+        [-6.27334694, -0.00034321, 0.00021024, 0.00034494, -0.00000116, 0.00000000],
+        [-6.27334703, -0.00034317, 0.00021022, 0.00034490, -0.00000116, 0.00000000],
+        [-6.27334712, -0.00034313, 0.00021020, 0.00034486, -0.00000116, 0.00000000],
+        [-6.27334721, -0.00034310, 0.00021017, 0.00034482, -0.00000116, 0.00000000],
+        [-6.27334730, -0.00034306, 0.00021015, 0.00034478, -0.00000116, 0.00000000],
+        [-6.27334739, -0.00034302, 0.00021013, 0.00034474, -0.00000116, 0.00000000],
+        [-6.27334748, -0.00034298, 0.00021010, 0.00034471, -0.00000116, 0.00000000],
+        [-6.27334758, -0.00034294, 0.00021008, 0.00034467, -0.00000116, 0.00000000],
+        [-6.27334767, -0.00034291, 0.00021006, 0.00034463, -0.00000116, 0.00000000],
+        [-6.27334776, -0.00034287, 0.00021003, 0.00034459, -0.00000116, 0.00000000],
+        [-6.27334785, -0.00034283, 0.00021001, 0.00034455, -0.00000116, 0.00000000],
+        [-6.27334794, -0.00034279, 0.00020999, 0.00034451, -0.00000116, 0.00000000],
+        [-6.27334803, -0.00034276, 0.00020996, 0.00034448, -0.00000116, 0.00000000],
+        [-6.27334812, -0.00034272, 0.00020994, 0.00034444, -0.00000116, 0.00000000],
+        [-6.27334821, -0.00034268, 0.00020992, 0.00034440, -0.00000116, 0.00000000],
+        [-6.27334830, -0.00034264, 0.00020989, 0.00034436, -0.00000116, 0.00000000],
+        [-6.27334839, -0.00034260, 0.00020987, 0.00034432, -0.00000116, 0.00000000],
+        [-6.27334848, -0.00034257, 0.00020985, 0.00034429, -0.00000116, 0.00000000],
+        [-6.27334857, -0.00034253, 0.00020983, 0.00034425, -0.00000116, 0.00000000],
+        [-6.27334867, -0.00034249, 0.00020980, 0.00034421, -0.00000116, 0.00000000],
+        [-6.27334876, -0.00034245, 0.00020978, 0.00034417, -0.00000116, 0.00000000],
+        [-6.27334885, -0.00034241, 0.00020976, 0.00034413, -0.00000116, 0.00000000],
+        [-6.27334894, -0.00034238, 0.00020973, 0.00034410, -0.00000116, 0.00000000],
+        [-6.27334903, -0.00034234, 0.00020971, 0.00034406, -0.00000116, 0.00000000],
+        [-6.27334912, -0.00034230, 0.00020969, 0.00034402, -0.00000116, 0.00000000],
+        [-6.27334921, -0.00034226, 0.00020966, 0.00034398, -0.00000116, 0.00000000],
+        [-6.27334930, -0.00034222, 0.00020964, 0.00034394, -0.00000116, 0.00000000],
+        [-6.27334939, -0.00034219, 0.00020962, 0.00034391, -0.00000116, 0.00000000],
+        [-6.27334948, -0.00034215, 0.00020959, 0.00034387, -0.00000116, 0.00000000],
+        [-6.27334957, -0.00034211, 0.00020957, 0.00034383, -0.00000116, 0.00000000],
+        [-6.27334966, -0.00034207, 0.00020955, 0.00034379, -0.00000116, 0.00000000],
+        [-6.27334975, -0.00034204, 0.00020952, 0.00034375, -0.00000116, 0.00000000],
+        [-6.27334984, -0.00034200, 0.00020950, 0.00034372, -0.00000116, 0.00000000],
+        [-6.27334993, -0.00034196, 0.00020948, 0.00034368, -0.00000116, 0.00000000],
+        [-6.27335002, -0.00034192, 0.00020945, 0.00034364, -0.00000116, 0.00000000],
+        [-6.27335011, -0.00034188, 0.00020943, 0.00034360, -0.00000116, 0.00000000],
+        [-6.27335021, -0.00034185, 0.00020941, 0.00034356, -0.00000116, 0.00000000],
+        [-6.27335030, -0.00034181, 0.00020938, 0.00034353, -0.00000116, 0.00000000],
+        [-6.27335039, -0.00034177, 0.00020936, 0.00034349, -0.00000116, 0.00000000],
+        [-6.27335048, -0.00034173, 0.00020934, 0.00034345, -0.00000116, 0.00000000],
+        [-6.27335057, -0.00034170, 0.00020932, 0.00034341, -0.00000116, 0.00000000],
+        [-6.27335066, -0.00034166, 0.00020929, 0.00034337, -0.00000116, 0.00000000],
+        [-6.27335075, -0.00034162, 0.00020927, 0.00034334, -0.00000116, 0.00000000],
+        [-6.27335084, -0.00034158, 0.00020925, 0.00034330, -0.00000116, 0.00000000],
+        [-6.27335093, -0.00034154, 0.00020922, 0.00034326, -0.00000116, 0.00000000],
+        [-6.27335102, -0.00034151, 0.00020920, 0.00034322, -0.00000116, 0.00000000],
+        [-6.27335111, -0.00034147, 0.00020918, 0.00034318, -0.00000116, 0.00000000],
+        [-6.27335120, -0.00034143, 0.00020915, 0.00034315, -0.00000116, 0.00000000],
+        [-6.27335129, -0.00034139, 0.00020913, 0.00034311, -0.00000116, 0.00000000],
+        [-6.27335138, -0.00034136, 0.00020911, 0.00034307, -0.00000116, 0.00000000],
+        [-6.27335147, -0.00034132, 0.00020908, 0.00034303, -0.00000116, 0.00000000],
+        [-6.27335156, -0.00034128, 0.00020906, 0.00034300, -0.00000116, 0.00000000],
+        [-6.27335165, -0.00034124, 0.00020904, 0.00034296, -0.00000116, 0.00000000],
+        [-6.27335174, -0.00034121, 0.00020902, 0.00034292, -0.00000116, 0.00000000],
+        [-6.27335183, -0.00034117, 0.00020899, 0.00034288, -0.00000116, 0.00000000],
+        [-6.27335192, -0.00034113, 0.00020897, 0.00034284, -0.00000116, 0.00000000],
+        [-6.27335201, -0.00034109, 0.00020895, 0.00034281, -0.00000116, 0.00000000],
+        [-6.27335210, -0.00034106, 0.00020892, 0.00034277, -0.00000116, 0.00000000],
+        [-6.27335219, -0.00034102, 0.00020890, 0.00034273, -0.00000116, 0.00000000],
+        [-6.27335228, -0.00034098, 0.00020888, 0.00034269, -0.00000116, 0.00000000],
+        [-6.27335237, -0.00034094, 0.00020885, 0.00034266, -0.00000116, 0.00000000],
+        [-6.27335246, -0.00034091, 0.00020883, 0.00034262, -0.00000116, 0.00000000],
+        [-6.27335255, -0.00034087, 0.00020881, 0.00034258, -0.00000116, 0.00000000],
+        [-6.27335264, -0.00034083, 0.00020878, 0.00034254, -0.00000116, 0.00000000],
+        [-6.27335273, -0.00034079, 0.00020876, 0.00034250, -0.00000116, 0.00000000],
+        [-6.27335282, -0.00034076, 0.00020874, 0.00034247, -0.00000116, 0.00000000],
+        [-6.27335291, -0.00034072, 0.00020872, 0.00034243, -0.00000116, 0.00000000],
+        [-6.27335300, -0.00034068, 0.00020869, 0.00034239, -0.00000116, 0.00000000],
+        [-6.27335309, -0.00034064, 0.00020867, 0.00034235, -0.00000116, 0.00000000],
+        [-6.27335318, -0.00034061, 0.00020865, 0.00034232, -0.00000116, 0.00000000],
+        [-6.27335327, -0.00034057, 0.00020862, 0.00034228, -0.00000116, 0.00000000],
+        [-6.27335336, -0.00034053, 0.00020860, 0.00034224, -0.00000116, 0.00000000],
+        [-6.27335345, -0.00034049, 0.00020858, 0.00034220, -0.00000116, 0.00000000],
+        [-6.27335354, -0.00034046, 0.00020856, 0.00034217, -0.00000116, 0.00000000],
+        [-6.27335363, -0.00034042, 0.00020853, 0.00034213, -0.00000116, 0.00000000],
+        [-6.27335372, -0.00034038, 0.00020851, 0.00034209, -0.00000116, 0.00000000],
+        [-6.27335380, -0.00034034, 0.00020849, 0.00034205, -0.00000116, 0.00000000],
+        [-6.27335389, -0.00034031, 0.00020846, 0.00034201, -0.00000116, 0.00000000],
+        [-6.27335398, -0.00034027, 0.00020844, 0.00034198, -0.00000116, 0.00000000],
+        [-6.27335407, -0.00034023, 0.00020842, 0.00034194, -0.00000116, 0.00000000],
+        [-6.27335416, -0.00034019, 0.00020839, 0.00034190, -0.00000116, 0.00000000],
+        [-6.27335425, -0.00034016, 0.00020837, 0.00034186, -0.00000116, 0.00000000],
+        [-6.27335434, -0.00034012, 0.00020835, 0.00034183, -0.00000116, 0.00000000],
+        [-6.27335443, -0.00034008, 0.00020833, 0.00034179, -0.00000116, 0.00000000],
+        [-6.27335452, -0.00034004, 0.00020830, 0.00034175, -0.00000116, 0.00000000],
+        [-6.27335461, -0.00034001, 0.00020828, 0.00034171, -0.00000116, 0.00000000],
+        [-6.27335470, -0.00033997, 0.00020826, 0.00034168, -0.00000116, 0.00000000],
+        [-6.27335479, -0.00033993, 0.00020823, 0.00034164, -0.00000116, 0.00000000],
+        [-6.27335488, -0.00033989, 0.00020821, 0.00034160, -0.00000116, 0.00000000],
+        [-6.27335497, -0.00033986, 0.00020819, 0.00034156, -0.00000116, 0.00000000],
+        [-6.27335506, -0.00033982, 0.00020817, 0.00034153, -0.00000116, 0.00000000],
+        [-6.27335515, -0.00033978, 0.00020814, 0.00034149, -0.00000116, 0.00000000],
+        [-6.27335524, -0.00033975, 0.00020812, 0.00034145, -0.00000116, 0.00000000],
+        [-6.27335533, -0.00033971, 0.00020810, 0.00034141, -0.00000116, 0.00000000],
+        [-6.27335541, -0.00033967, 0.00020807, 0.00034138, -0.00000116, 0.00000000],
+        [-6.27335550, -0.00033963, 0.00020805, 0.00034134, -0.00000116, 0.00000000],
+        [-6.27335559, -0.00033960, 0.00020803, 0.00034130, -0.00000116, 0.00000000],
+        [-6.27335568, -0.00033956, 0.00020801, 0.00034126, -0.00000116, 0.00000000],
+        [-6.27335577, -0.00033952, 0.00020798, 0.00034123, -0.00000116, 0.00000000],
+        [-6.27335586, -0.00033948, 0.00020796, 0.00034119, -0.00000116, 0.00000000],
+        [-6.27335595, -0.00033945, 0.00020794, 0.00034115, -0.00000116, 0.00000000],
+        [-6.27335604, -0.00033941, 0.00020791, 0.00034111, -0.00000116, 0.00000000],
+        [-6.27335613, -0.00033937, 0.00020789, 0.00034108, -0.00000116, 0.00000000],
+        [-6.27335622, -0.00033934, 0.00020787, 0.00034104, -0.00000116, 0.00000000],
+        [-6.27335631, -0.00033930, 0.00020785, 0.00034100, -0.00000116, 0.00000000],
+        [-6.27335639, -0.00033926, 0.00020782, 0.00034097, -0.00000116, 0.00000000],
+        [-6.27335648, -0.00033922, 0.00020780, 0.00034093, -0.00000116, 0.00000000],
+        [-6.27335657, -0.00033919, 0.00020778, 0.00034089, -0.00000116, 0.00000000],
+        [-6.27335666, -0.00033915, 0.00020776, 0.00034085, -0.00000116, 0.00000000],
+        [-6.27335675, -0.00033911, 0.00020773, 0.00034082, -0.00000116, 0.00000000],
+        [-6.27335684, -0.00033908, 0.00020771, 0.00034078, -0.00000116, 0.00000000],
+        [-6.27335693, -0.00033904, 0.00020769, 0.00034074, -0.00000116, 0.00000000],
+        [-6.27335702, -0.00033900, 0.00020766, 0.00034070, -0.00000116, 0.00000000],
+        [-6.27335711, -0.00033896, 0.00020764, 0.00034067, -0.00000116, 0.00000000],
+        [-6.27335720, -0.00033893, 0.00020762, 0.00034063, -0.00000116, 0.00000000],
+        [-6.27335728, -0.00033889, 0.00020760, 0.00034059, -0.00000116, 0.00000000],
+        [-6.27335737, -0.00033885, 0.00020757, 0.00034055, -0.00000116, 0.00000000],
+        [-6.27335746, -0.00033882, 0.00020755, 0.00034052, -0.00000116, 0.00000000],
+        [-6.27335755, -0.00033878, 0.00020753, 0.00034048, -0.00000116, 0.00000000],
+        [-6.27335764, -0.00033874, 0.00020751, 0.00034044, -0.00000116, 0.00000000],
+        [-6.27335773, -0.00033870, 0.00020748, 0.00034041, -0.00000116, 0.00000000],
+        [-6.27335782, -0.00033867, 0.00020746, 0.00034037, -0.00000116, 0.00000000],
+        [-6.27335791, -0.00033863, 0.00020744, 0.00034033, -0.00000116, 0.00000000],
+        [-6.27335799, -0.00033859, 0.00020741, 0.00034029, -0.00000116, 0.00000000],
+        [-6.27335808, -0.00033856, 0.00020739, 0.00034026, -0.00000116, 0.00000000],
+        [-6.27335817, -0.00033852, 0.00020737, 0.00034022, -0.00000116, 0.00000000],
+        [-6.27335826, -0.00033848, 0.00020735, 0.00034018, -0.00000116, 0.00000000],
+        [-6.27335835, -0.00033845, 0.00020732, 0.00034015, -0.00000116, 0.00000000],
+        [-6.27335844, -0.00033841, 0.00020730, 0.00034011, -0.00000116, 0.00000000],
+        [-6.27335853, -0.00033837, 0.00020728, 0.00034007, -0.00000116, 0.00000000],
+        [-6.27335861, -0.00033833, 0.00020726, 0.00034003, -0.00000116, 0.00000000],
+        [-6.27335870, -0.00033830, 0.00020723, 0.00034000, -0.00000116, 0.00000000],
+        [-6.27335879, -0.00033826, 0.00020721, 0.00033996, -0.00000116, 0.00000000],
+        [-6.27335888, -0.00033822, 0.00020719, 0.00033992, -0.00000116, 0.00000000],
+        [-6.27335897, -0.00033819, 0.00020716, 0.00033988, -0.00000116, 0.00000000],
+        [-6.27335906, -0.00033815, 0.00020714, 0.00033985, -0.00000116, 0.00000000],
+        [-6.27335915, -0.00033811, 0.00020712, 0.00033981, -0.00000116, 0.00000000],
+        [-6.27335923, -0.00033808, 0.00020710, 0.00033977, -0.00000116, 0.00000000],
+        [-6.27335932, -0.00033804, 0.00020707, 0.00033974, -0.00000116, 0.00000000],
+        [-6.27335941, -0.00033800, 0.00020705, 0.00033970, -0.00000116, 0.00000000],
+        [-6.27335950, -0.00033797, 0.00020703, 0.00033966, -0.00000116, 0.00000000],
+        [-6.27335959, -0.00033793, 0.00020701, 0.00033963, -0.00000116, 0.00000000],
+        [-6.27335968, -0.00033789, 0.00020698, 0.00033959, -0.00000116, 0.00000000],
+        [-6.27335976, -0.00033785, 0.00020696, 0.00033955, -0.00000116, 0.00000000],
+        [-6.27335985, -0.00033782, 0.00020694, 0.00033951, -0.00000116, 0.00000000],
+        [-6.27335994, -0.00033778, 0.00020692, 0.00033948, -0.00000116, 0.00000000],
+        [-6.27336003, -0.00033774, 0.00020689, 0.00033944, -0.00000116, 0.00000000],
+        [-6.27336012, -0.00033771, 0.00020687, 0.00033940, -0.00000116, 0.00000000],
+        [-6.27336021, -0.00033767, 0.00020685, 0.00033937, -0.00000116, 0.00000000],
+        [-6.27336029, -0.00033763, 0.00020683, 0.00033933, -0.00000116, 0.00000000],
+        [-6.27336038, -0.00033760, 0.00020680, 0.00033929, -0.00000116, 0.00000000],
+        [-6.27336047, -0.00033756, 0.00020678, 0.00033925, -0.00000116, 0.00000000],
+        [-6.27336056, -0.00033752, 0.00020676, 0.00033922, -0.00000116, 0.00000000],
+        [-6.27336065, -0.00033749, 0.00020674, 0.00033918, -0.00000116, 0.00000000],
+        [-6.27336073, -0.00033745, 0.00020671, 0.00033914, -0.00000116, 0.00000000],
+        [-6.27336082, -0.00033741, 0.00020669, 0.00033911, -0.00000116, 0.00000000],
+        [-6.27336091, -0.00033738, 0.00020667, 0.00033907, -0.00000116, 0.00000000],
+        [-6.27336100, -0.00033734, 0.00020665, 0.00033903, -0.00000116, 0.00000000],
+        [-6.27336109, -0.00033730, 0.00020662, 0.00033900, -0.00000116, 0.00000000],
+        [-6.27336117, -0.00033727, 0.00020660, 0.00033896, -0.00000116, 0.00000000],
+        [-6.27336126, -0.00033723, 0.00020658, 0.00033892, -0.00000116, 0.00000000],
+        [-6.27336135, -0.00033719, 0.00020656, 0.00033889, -0.00000116, 0.00000000],
+        [-6.27336144, -0.00033716, 0.00020653, 0.00033885, -0.00000116, 0.00000000],
+        [-6.27336153, -0.00033712, 0.00020651, 0.00033881, -0.00000116, 0.00000000],
+        [-6.27336161, -0.00033708, 0.00020649, 0.00033877, -0.00000116, 0.00000000],
+        [-6.27336170, -0.00033705, 0.00020647, 0.00033874, -0.00000116, 0.00000000],
+        [-6.27336179, -0.00033701, 0.00020644, 0.00033870, -0.00000116, 0.00000000],
+        [-6.27336188, -0.00033697, 0.00020642, 0.00033866, -0.00000116, 0.00000000],
+        [-6.27336197, -0.00033694, 0.00020640, 0.00033863, -0.00000116, 0.00000000],
+        [-6.27336205, -0.00033690, 0.00020638, 0.00033859, -0.00000116, 0.00000000],
+        [-6.27336214, -0.00033686, 0.00020635, 0.00033855, -0.00000116, 0.00000000],
+        [-6.27336223, -0.00033683, 0.00020633, 0.00033852, -0.00000116, 0.00000000],
+        [-6.27336232, -0.00033679, 0.00020631, 0.00033848, -0.00000116, 0.00000000],
+        [-6.27336240, -0.00033675, 0.00020629, 0.00033844, -0.00000116, 0.00000000],
+        [-6.27336249, -0.00033672, 0.00020626, 0.00033841, -0.00000116, 0.00000000],
+        [-6.27336258, -0.00033668, 0.00020624, 0.00033837, -0.00000116, 0.00000000],
+        [-6.27336267, -0.00033664, 0.00020622, 0.00033833, -0.00000116, 0.00000000],
+        [-6.27336275, -0.00033661, 0.00020620, 0.00033830, -0.00000116, 0.00000000],
+        [-6.27336284, -0.00033657, 0.00020617, 0.00033826, -0.00000116, 0.00000000],
+        [-6.27336293, -0.00033653, 0.00020615, 0.00033822, -0.00000116, 0.00000000],
+        [-6.27336302, -0.00033650, 0.00020613, 0.00033819, -0.00000116, 0.00000000],
+        [-6.27336311, -0.00033646, 0.00020611, 0.00033815, -0.00000116, 0.00000000],
+        [-6.27336319, -0.00033642, 0.00020608, 0.00033811, -0.00000116, 0.00000000],
+        [-6.27336328, -0.00033639, 0.00020606, 0.00033808, -0.00000116, 0.00000000],
+        [-6.27336337, -0.00033635, 0.00020604, 0.00033804, -0.00000116, 0.00000000],
+        [-6.27336346, -0.00033631, 0.00020602, 0.00033800, -0.00000116, 0.00000000],
+        [-6.27336354, -0.00033628, 0.00020599, 0.00033796, -0.00000116, 0.00000000],
+        [-6.27336363, -0.00033624, 0.00020597, 0.00033793, -0.00000116, 0.00000000],
+        [-6.27336372, -0.00033620, 0.00020595, 0.00033789, -0.00000116, 0.00000000],
+        [-6.27336381, -0.00033617, 0.00020593, 0.00033785, -0.00000116, 0.00000000],
+        [-6.27336389, -0.00033613, 0.00020590, 0.00033782, -0.00000116, 0.00000000],
+        [-6.27336398, -0.00033609, 0.00020588, 0.00033778, -0.00000116, 0.00000000],
+        [-6.27336407, -0.00033606, 0.00020586, 0.00033774, -0.00000116, 0.00000000],
+        [-6.27336415, -0.00033602, 0.00020584, 0.00033771, -0.00000116, 0.00000000],
+        [-6.27336424, -0.00033598, 0.00020582, 0.00033767, -0.00000116, 0.00000000],
+        [-6.27336433, -0.00033595, 0.00020579, 0.00033763, -0.00000116, 0.00000000],
+        [-6.27336442, -0.00033591, 0.00020577, 0.00033760, -0.00000116, 0.00000000],
+        [-6.27336450, -0.00033587, 0.00020575, 0.00033756, -0.00000116, 0.00000000],
+        [-6.27336459, -0.00033584, 0.00020573, 0.00033752, -0.00000116, 0.00000000],
+        [-6.27336468, -0.00033580, 0.00020570, 0.00033749, -0.00000116, 0.00000000],
+        [-6.27336477, -0.00033577, 0.00020568, 0.00033745, -0.00000116, 0.00000000],
+        [-6.27336485, -0.00033573, 0.00020566, 0.00033742, -0.00000116, 0.00000000],
+        [-6.27336494, -0.00033569, 0.00020564, 0.00033738, -0.00000116, 0.00000000],
+        [-6.27336503, -0.00033566, 0.00020561, 0.00033734, -0.00000116, 0.00000000],
+        [-6.27336511, -0.00033562, 0.00020559, 0.00033731, -0.00000116, 0.00000000],
+        [-6.27336520, -0.00033558, 0.00020557, 0.00033727, -0.00000116, 0.00000000],
+        [-6.27336529, -0.00033555, 0.00020555, 0.00033723, -0.00000116, 0.00000000],
+        [-6.27336538, -0.00033551, 0.00020553, 0.00033720, -0.00000116, 0.00000000],
+        [-6.27336546, -0.00033547, 0.00020550, 0.00033716, -0.00000116, 0.00000000],
+        [-6.27336555, -0.00033544, 0.00020548, 0.00033712, -0.00000116, 0.00000000],
+        [-6.27336564, -0.00033540, 0.00020546, 0.00033709, -0.00000116, 0.00000000],
+        [-6.27336572, -0.00033537, 0.00020544, 0.00033705, -0.00000116, 0.00000000],
+        [-6.27336581, -0.00033533, 0.00020541, 0.00033701, -0.00000116, 0.00000000],
+        [-6.27336590, -0.00033529, 0.00020539, 0.00033698, -0.00000116, 0.00000000],
+        [-6.27336598, -0.00033526, 0.00020537, 0.00033694, -0.00000116, 0.00000000],
+        [-6.27336607, -0.00033522, 0.00020535, 0.00033690, -0.00000116, 0.00000000],
+        [-6.27336616, -0.00033518, 0.00020532, 0.00033687, -0.00000116, 0.00000000],
+        [-6.27336625, -0.00033515, 0.00020530, 0.00033683, -0.00000116, 0.00000000],
+        [-6.27336633, -0.00033511, 0.00020528, 0.00033679, -0.00000116, 0.00000000],
+        [-6.27336642, -0.00033508, 0.00020526, 0.00033676, -0.00000116, 0.00000000],
+        [-6.27336651, -0.00033504, 0.00020524, 0.00033672, -0.00000116, 0.00000000],
+        [-6.27336659, -0.00033500, 0.00020521, 0.00033668, -0.00000116, 0.00000000],
+        [-6.27336668, -0.00033497, 0.00020519, 0.00033665, -0.00000116, 0.00000000],
+        [-6.27336677, -0.00033493, 0.00020517, 0.00033661, -0.00000116, 0.00000000],
+        [-6.27336685, -0.00033489, 0.00020515, 0.00033658, -0.00000116, 0.00000000],
+        [-6.27336694, -0.00033486, 0.00020512, 0.00033654, -0.00000116, 0.00000000],
+        [-6.27336703, -0.00033482, 0.00020510, 0.00033650, -0.00000116, 0.00000000],
+        [-6.27336711, -0.00033479, 0.00020508, 0.00033647, -0.00000116, 0.00000000],
+        [-6.27336720, -0.00033475, 0.00020506, 0.00033643, -0.00000116, 0.00000000],
+        [-6.27336729, -0.00033471, 0.00020504, 0.00033639, -0.00000116, 0.00000000],
+        [-6.27336737, -0.00033468, 0.00020501, 0.00033636, -0.00000116, 0.00000000],
+        [-6.27336746, -0.00033464, 0.00020499, 0.00033632, -0.00000116, 0.00000000],
+        [-6.27336755, -0.00033460, 0.00020497, 0.00033628, -0.00000116, 0.00000000],
+        [-6.27336763, -0.00033457, 0.00020495, 0.00033625, -0.00000116, 0.00000000],
+        [-6.27336772, -0.00033453, 0.00020493, 0.00033621, -0.00000116, 0.00000000],
+        [-6.27336781, -0.00033450, 0.00020490, 0.00033618, -0.00000116, 0.00000000],
+        [-6.27336789, -0.00033446, 0.00020488, 0.00033614, -0.00000116, 0.00000000],
+        [-6.27336798, -0.00033442, 0.00020486, 0.00033610, -0.00000116, 0.00000000],
+        [-6.27336807, -0.00033439, 0.00020484, 0.00033607, -0.00000116, 0.00000000],
+        [-6.27336815, -0.00033435, 0.00020481, 0.00033603, -0.00000116, 0.00000000],
+        [-6.27336824, -0.00033432, 0.00020479, 0.00033599, -0.00000116, 0.00000000],
+        [-6.27336833, -0.00033428, 0.00020477, 0.00033596, -0.00000116, 0.00000000],
+        [-6.27336841, -0.00033424, 0.00020475, 0.00033592, -0.00000116, 0.00000000],
+        [-6.27336850, -0.00033421, 0.00020473, 0.00033588, -0.00000116, 0.00000000],
+        [-6.27336858, -0.00033417, 0.00020470, 0.00033585, -0.00000116, 0.00000000],
+        [-6.27336867, -0.00033413, 0.00020468, 0.00033581, -0.00000116, 0.00000000],
+        [-6.27336876, -0.00033410, 0.00020466, 0.00033578, -0.00000116, 0.00000000],
+        [-6.27336884, -0.00033406, 0.00020464, 0.00033574, -0.00000116, 0.00000000],
+        [-6.27336893, -0.00033403, 0.00020462, 0.00033570, -0.00000116, 0.00000000],
+        [-6.27336902, -0.00033399, 0.00020459, 0.00033567, -0.00000116, 0.00000000],
+        [-6.27336910, -0.00033395, 0.00020457, 0.00033563, -0.00000116, 0.00000000],
+        [-6.27336919, -0.00033392, 0.00020455, 0.00033559, -0.00000116, 0.00000000],
+        [-6.27336927, -0.00033388, 0.00020453, 0.00033556, -0.00000116, 0.00000000],
+        [-6.27336936, -0.00033385, 0.00020451, 0.00033552, -0.00000116, 0.00000000],
+        [-6.27336945, -0.00033381, 0.00020448, 0.00033549, -0.00000116, 0.00000000],
+        [-6.27336953, -0.00033377, 0.00020446, 0.00033545, -0.00000116, 0.00000000],
+        [-6.27336962, -0.00033374, 0.00020444, 0.00033541, -0.00000116, 0.00000000],
+        [-6.27336971, -0.00033370, 0.00020442, 0.00033538, -0.00000116, 0.00000000],
+        [-6.27336979, -0.00033367, 0.00020439, 0.00033534, -0.00000116, 0.00000000],
+        [-6.27336988, -0.00033363, 0.00020437, 0.00033531, -0.00000116, 0.00000000],
+        [-6.27336996, -0.00033359, 0.00020435, 0.00033527, -0.00000116, 0.00000000],
+        [-6.27337005, -0.00033356, 0.00020433, 0.00033523, -0.00000116, 0.00000000],
+        [-6.27337014, -0.00033352, 0.00020431, 0.00033520, -0.00000116, 0.00000000],
+        [-6.27337022, -0.00033349, 0.00020428, 0.00033516, -0.00000116, 0.00000000],
+        [-6.27337031, -0.00033345, 0.00020426, 0.00033513, -0.00000116, 0.00000000],
+        [-6.27337039, -0.00033342, 0.00020424, 0.00033509, -0.00000116, 0.00000000],
+        [-6.27337048, -0.00033338, 0.00020422, 0.00033505, -0.00000116, 0.00000000],
+        [-6.27337057, -0.00033334, 0.00020420, 0.00033502, -0.00000116, 0.00000000],
+        [-6.27337065, -0.00033331, 0.00020417, 0.00033498, -0.00000116, 0.00000000],
+        [-6.27337074, -0.00033327, 0.00020415, 0.00033494, -0.00000116, 0.00000000],
+        [-6.27337082, -0.00033324, 0.00020413, 0.00033491, -0.00000116, 0.00000000],
+        [-6.27337091, -0.00033320, 0.00020411, 0.00033487, -0.00000116, 0.00000000],
+        [-6.27337100, -0.00033316, 0.00020409, 0.00033484, -0.00000116, 0.00000000],
+        [-6.27337108, -0.00033313, 0.00020406, 0.00033480, -0.00000116, 0.00000000],
+        [-6.27337117, -0.00033309, 0.00020404, 0.00033476, -0.00000116, 0.00000000],
+        [-6.27337125, -0.00033306, 0.00020402, 0.00033473, -0.00000116, 0.00000000],
+        [-6.27337134, -0.00033302, 0.00020400, 0.00033469, -0.00000116, 0.00000000],
+        [-6.27337142, -0.00033298, 0.00020398, 0.00033466, -0.00000116, 0.00000000],
+        [-6.27337151, -0.00033295, 0.00020395, 0.00033462, -0.00000116, 0.00000000],
+        [-6.27337160, -0.00033291, 0.00020393, 0.00033458, -0.00000116, 0.00000000],
+        [-6.27337168, -0.00033288, 0.00020391, 0.00033455, -0.00000116, 0.00000000],
+        [-6.27337177, -0.00033284, 0.00020389, 0.00033451, -0.00000116, 0.00000000],
+        [-6.27337185, -0.00033281, 0.00020387, 0.00033448, -0.00000116, 0.00000000],
+        [-6.27337194, -0.00033277, 0.00020385, 0.00033444, -0.00000116, 0.00000000],
+        [-6.27337202, -0.00033273, 0.00020382, 0.00033440, -0.00000116, 0.00000000],
+        [-6.27337211, -0.00033270, 0.00020380, 0.00033437, -0.00000116, 0.00000000],
+        [-6.27337220, -0.00033266, 0.00020378, 0.00033433, -0.00000116, 0.00000000],
+        [-6.27337228, -0.00033263, 0.00020376, 0.00033430, -0.00000116, 0.00000000],
+        [-6.27337237, -0.00033259, 0.00020374, 0.00033426, -0.00000116, 0.00000000],
+        [-6.27337245, -0.00033256, 0.00020371, 0.00033422, -0.00000116, 0.00000000],
+        [-6.27337254, -0.00033252, 0.00020369, 0.00033419, -0.00000116, 0.00000000],
+        [-6.27337262, -0.00033248, 0.00020367, 0.00033415, -0.00000116, 0.00000000],
+        [-6.27337271, -0.00033245, 0.00020365, 0.00033412, -0.00000116, 0.00000000],
+        [-6.27337279, -0.00033241, 0.00020363, 0.00033408, -0.00000116, 0.00000000],
+        [-6.27337288, -0.00033238, 0.00020360, 0.00033405, -0.00000116, 0.00000000],
+        [-6.27337297, -0.00033234, 0.00020358, 0.00033401, -0.00000116, 0.00000000],
+        [-6.27337305, -0.00033231, 0.00020356, 0.00033397, -0.00000116, 0.00000000],
+        [-6.27337314, -0.00033227, 0.00020354, 0.00033394, -0.00000116, 0.00000000],
+        [-6.27337322, -0.00033223, 0.00020352, 0.00033390, -0.00000116, 0.00000000],
+        [-6.27337331, -0.00033220, 0.00020350, 0.00033387, -0.00000116, 0.00000000],
+        [-6.27337339, -0.00033216, 0.00020347, 0.00033383, -0.00000116, 0.00000000],
+        [-6.27337348, -0.00033213, 0.00020345, 0.00033379, -0.00000116, 0.00000000],
+        [-6.27337356, -0.00033209, 0.00020343, 0.00033376, -0.00000116, 0.00000000],
+        [-6.27337365, -0.00033206, 0.00020341, 0.00033372, -0.00000116, 0.00000000],
+        [-6.27337373, -0.00033202, 0.00020339, 0.00033369, -0.00000116, 0.00000000],
+        [-6.27337382, -0.00033198, 0.00020336, 0.00033365, -0.00000116, 0.00000000],
+        [-6.27337390, -0.00033195, 0.00020334, 0.00033362, -0.00000116, 0.00000000],
+        [-6.27337399, -0.00033191, 0.00020332, 0.00033358, -0.00000116, 0.00000000],
+        [-6.27337407, -0.00033188, 0.00020330, 0.00033354, -0.00000116, 0.00000000],
+        [-6.27337416, -0.00033184, 0.00020328, 0.00033351, -0.00000116, 0.00000000],
+        [-6.27337425, -0.00033181, 0.00020326, 0.00033347, -0.00000116, 0.00000000],
+        [-6.27337433, -0.00033177, 0.00020323, 0.00033344, -0.00000116, 0.00000000],
+        [-6.27337442, -0.00033174, 0.00020321, 0.00033340, -0.00000116, 0.00000000],
+        [-6.27337450, -0.00033170, 0.00020319, 0.00033337, -0.00000116, 0.00000000],
+        [-6.27337459, -0.00033166, 0.00020317, 0.00033333, -0.00000116, 0.00000000],
+        [-6.27337467, -0.00033163, 0.00020315, 0.00033329, -0.00000116, 0.00000000],
+        [-6.27337476, -0.00033159, 0.00020312, 0.00033326, -0.00000116, 0.00000000],
+        [-6.27337484, -0.00033156, 0.00020310, 0.00033322, -0.00000116, 0.00000000],
+        [-6.27337493, -0.00033152, 0.00020308, 0.00033319, -0.00000116, 0.00000000],
+        [-6.27337501, -0.00033149, 0.00020306, 0.00033315, -0.00000116, 0.00000000],
+        [-6.27337510, -0.00033145, 0.00020304, 0.00033312, -0.00000116, 0.00000000],
+        [-6.27337518, -0.00033142, 0.00020302, 0.00033308, -0.00000116, 0.00000000],
+        [-6.27337527, -0.00033138, 0.00020299, 0.00033304, -0.00000116, 0.00000000],
+        [-6.27337535, -0.00033135, 0.00020297, 0.00033301, -0.00000116, 0.00000000],
+        [-6.27337544, -0.00033131, 0.00020295, 0.00033297, -0.00000116, 0.00000000],
+        [-6.27337552, -0.00033127, 0.00020293, 0.00033294, -0.00000116, 0.00000000],
+        [-6.27337561, -0.00033124, 0.00020291, 0.00033290, -0.00000116, 0.00000000],
+        [-6.27337569, -0.00033120, 0.00020289, 0.00033287, -0.00000116, 0.00000000],
+        [-6.27337578, -0.00033117, 0.00020286, 0.00033283, -0.00000116, 0.00000000],
+        [-6.27337586, -0.00033113, 0.00020284, 0.00033279, -0.00000116, 0.00000000],
+        [-6.27337594, -0.00033110, 0.00020282, 0.00033276, -0.00000116, 0.00000000],
+        [-6.27337603, -0.00033106, 0.00020280, 0.00033272, -0.00000116, 0.00000000],
+        [-6.27337611, -0.00033103, 0.00020278, 0.00033269, -0.00000116, 0.00000000],
+        [-6.27337620, -0.00033099, 0.00020275, 0.00033265, -0.00000116, 0.00000000],
+        [-6.27337628, -0.00033096, 0.00020273, 0.00033262, -0.00000116, 0.00000000],
+        [-6.27337637, -0.00033092, 0.00020271, 0.00033258, -0.00000116, 0.00000000],
+        [-6.27337645, -0.00033088, 0.00020269, 0.00033255, -0.00000116, 0.00000000],
+        [-6.27337654, -0.00033085, 0.00020267, 0.00033251, -0.00000116, 0.00000000],
+        [-6.27337662, -0.00033081, 0.00020265, 0.00033247, -0.00000116, 0.00000000],
+        [-6.27337671, -0.00033078, 0.00020262, 0.00033244, -0.00000116, 0.00000000],
+        [-6.27337679, -0.00033074, 0.00020260, 0.00033240, -0.00000116, 0.00000000],
+        [-6.27337688, -0.00033071, 0.00020258, 0.00033237, -0.00000116, 0.00000000],
+        [-6.27337696, -0.00033067, 0.00020256, 0.00033233, -0.00000116, 0.00000000],
+        [-6.27337705, -0.00033064, 0.00020254, 0.00033230, -0.00000116, 0.00000000],
+        [-6.27337713, -0.00033060, 0.00020252, 0.00033226, -0.00000116, 0.00000000],
+        [-6.27337721, -0.00033057, 0.00020250, 0.00033223, -0.00000116, 0.00000000],
+        [-6.27337730, -0.00033053, 0.00020247, 0.00033219, -0.00000116, 0.00000000],
+        [-6.27337738, -0.00033050, 0.00020245, 0.00033216, -0.00000116, 0.00000000],
+        [-6.27337747, -0.00033046, 0.00020243, 0.00033212, -0.00000116, 0.00000000],
+        [-6.27337755, -0.00033043, 0.00020241, 0.00033208, -0.00000116, 0.00000000],
+        [-6.27337764, -0.00033039, 0.00020239, 0.00033205, -0.00000116, 0.00000000],
+        [-6.27337772, -0.00033035, 0.00020237, 0.00033201, -0.00000116, 0.00000000],
+        [-6.27337781, -0.00033032, 0.00020234, 0.00033198, -0.00000116, 0.00000000],
+        [-6.27337789, -0.00033028, 0.00020232, 0.00033194, -0.00000116, 0.00000000],
+        [-6.27337797, -0.00033025, 0.00020230, 0.00033191, -0.00000116, 0.00000000],
+        [-6.27337806, -0.00033021, 0.00020228, 0.00033187, -0.00000116, 0.00000000],
+        [-6.27337814, -0.00033018, 0.00020226, 0.00033184, -0.00000116, 0.00000000],
+        [-6.27337823, -0.00033014, 0.00020224, 0.00033180, -0.00000116, 0.00000000],
+        [-6.27337831, -0.00033011, 0.00020221, 0.00033177, -0.00000116, 0.00000000],
+        [-6.27337840, -0.00033007, 0.00020219, 0.00033173, -0.00000116, 0.00000000],
+        [-6.27337848, -0.00033004, 0.00020217, 0.00033169, -0.00000116, 0.00000000],
+        [-6.27337856, -0.00033000, 0.00020215, 0.00033166, -0.00000116, 0.00000000],
+        [-6.27337865, -0.00032997, 0.00020213, 0.00033162, -0.00000116, 0.00000000],
+        [-6.27337873, -0.00032993, 0.00020211, 0.00033159, -0.00000116, 0.00000000],
+        [-6.27337882, -0.00032990, 0.00020208, 0.00033155, -0.00000116, 0.00000000],
+        [-6.27337890, -0.00032986, 0.00020206, 0.00033152, -0.00000116, 0.00000000],
+        [-6.27337899, -0.00032983, 0.00020204, 0.00033148, -0.00000116, 0.00000000],
+        [-6.27337907, -0.00032979, 0.00020202, 0.00033145, -0.00000116, 0.00000000],
+        [-6.27337915, -0.00032976, 0.00020200, 0.00033141, -0.00000116, 0.00000000],
+        [-6.27337924, -0.00032972, 0.00020198, 0.00033138, -0.00000116, 0.00000000],
+        [-6.27337932, -0.00032969, 0.00020196, 0.00033134, -0.00000116, 0.00000000],
+        [-6.27337941, -0.00032965, 0.00020193, 0.00033131, -0.00000116, 0.00000000],
+        [-6.27337949, -0.00032962, 0.00020191, 0.00033127, -0.00000116, 0.00000000],
+        [-6.27337957, -0.00032958, 0.00020189, 0.00033124, -0.00000116, 0.00000000],
+        [-6.27337966, -0.00032955, 0.00020187, 0.00033120, -0.00000116, 0.00000000],
+        [-6.27337974, -0.00032951, 0.00020185, 0.00033116, -0.00000116, 0.00000000],
+        [-6.27337983, -0.00032948, 0.00020183, 0.00033113, -0.00000116, 0.00000000],
+        [-6.27337991, -0.00032944, 0.00020181, 0.00033109, -0.00000116, 0.00000000],
+        [-6.27337999, -0.00032941, 0.00020178, 0.00033106, -0.00000116, 0.00000000],
+        [-6.27338008, -0.00032937, 0.00020176, 0.00033102, -0.00000116, 0.00000000],
+        [-6.27338016, -0.00032934, 0.00020174, 0.00033099, -0.00000116, 0.00000000],
+        [-6.27338025, -0.00032930, 0.00020172, 0.00033095, -0.00000116, 0.00000000],
+        [-6.27338033, -0.00032927, 0.00020170, 0.00033092, -0.00000116, 0.00000000],
+        [-6.27338041, -0.00032923, 0.00020168, 0.00033088, -0.00000116, 0.00000000],
+        [-6.27338050, -0.00032920, 0.00020165, 0.00033085, -0.00000116, 0.00000000],
+        [-6.27338058, -0.00032916, 0.00020163, 0.00033081, -0.00000116, 0.00000000],
+        [-6.27338067, -0.00032913, 0.00020161, 0.00033078, -0.00000116, 0.00000000],
+        [-6.27338075, -0.00032909, 0.00020159, 0.00033074, -0.00000116, 0.00000000],
+        [-6.27338083, -0.00032906, 0.00020157, 0.00033071, -0.00000116, 0.00000000],
+        [-6.27338092, -0.00032902, 0.00020155, 0.00033067, -0.00000116, 0.00000000],
+        [-6.27338100, -0.00032899, 0.00020153, 0.00033064, -0.00000116, 0.00000000],
+        [-6.27338108, -0.00032895, 0.00020150, 0.00033060, -0.00000116, 0.00000000],
+        [-6.27338117, -0.00032892, 0.00020148, 0.00033057, -0.00000116, 0.00000000],
+        [-6.27338125, -0.00032888, 0.00020146, 0.00033053, -0.00000116, 0.00000000],
+        [-6.27338134, -0.00032885, 0.00020144, 0.00033050, -0.00000116, 0.00000000],
+        [-6.27338142, -0.00032881, 0.00020142, 0.00033046, -0.00000116, 0.00000000],
+        [-6.27338150, -0.00032878, 0.00020140, 0.00033043, -0.00000116, 0.00000000],
+        [-6.27338159, -0.00032874, 0.00020138, 0.00033039, -0.00000116, 0.00000000],
+        [-6.27338167, -0.00032871, 0.00020135, 0.00033036, -0.00000116, 0.00000000],
+        [-6.27338175, -0.00032867, 0.00020133, 0.00033032, -0.00000116, 0.00000000],
+        [-6.27338184, -0.00032864, 0.00020131, 0.00033029, -0.00000116, 0.00000000],
+        [-6.27338192, -0.00032860, 0.00020129, 0.00033025, -0.00000116, 0.00000000],
+        [-6.27338200, -0.00032857, 0.00020127, 0.00033022, -0.00000116, 0.00000000],
+        [-6.27338209, -0.00032853, 0.00020125, 0.00033018, -0.00000116, 0.00000000],
+        [-6.27338217, -0.00032850, 0.00020123, 0.00033015, -0.00000116, 0.00000000],
+        [-6.27338225, -0.00032846, 0.00020121, 0.00033011, -0.00000116, 0.00000000],
+        [-6.27338234, -0.00032843, 0.00020118, 0.00033008, -0.00000116, 0.00000000],
+        [-6.27338242, -0.00032839, 0.00020116, 0.00033004, -0.00000116, 0.00000000],
+        [-6.27338250, -0.00032836, 0.00020114, 0.00033001, -0.00000116, 0.00000000],
+        [-6.27338259, -0.00032832, 0.00020112, 0.00032997, -0.00000116, 0.00000000],
+        [-6.27338267, -0.00032829, 0.00020110, 0.00032994, -0.00000116, 0.00000000],
+        [-6.27338275, -0.00032825, 0.00020108, 0.00032990, -0.00000116, 0.00000000],
+        [-6.27338284, -0.00032822, 0.00020106, 0.00032987, -0.00000116, 0.00000000],
+        [-6.27338292, -0.00032818, 0.00020103, 0.00032983, -0.00000116, 0.00000000],
+        [-6.27338300, -0.00032815, 0.00020101, 0.00032980, -0.00000116, 0.00000000],
+        [-6.27338309, -0.00032811, 0.00020099, 0.00032976, -0.00000116, 0.00000000],
+        [-6.27338317, -0.00032808, 0.00020097, 0.00032973, -0.00000116, 0.00000000],
+        [-6.27338325, -0.00032804, 0.00020095, 0.00032969, -0.00000116, 0.00000000],
+        [-6.27338334, -0.00032801, 0.00020093, 0.00032966, -0.00000116, 0.00000000],
+        [-6.27338342, -0.00032797, 0.00020091, 0.00032962, -0.00000116, 0.00000000],
+        [-6.27338350, -0.00032794, 0.00020089, 0.00032959, -0.00000116, 0.00000000],
+        [-6.27338359, -0.00032791, 0.00020086, 0.00032955, -0.00000116, 0.00000000],
+        [-6.27338367, -0.00032787, 0.00020084, 0.00032952, -0.00000116, 0.00000000],
+        [-6.27338375, -0.00032784, 0.00020082, 0.00032948, -0.00000116, 0.00000000],
+        [-6.27338384, -0.00032780, 0.00020080, 0.00032945, -0.00000116, 0.00000000],
+        [-6.27338392, -0.00032777, 0.00020078, 0.00032941, -0.00000116, 0.00000000],
+        [-6.27338400, -0.00032773, 0.00020076, 0.00032938, -0.00000116, 0.00000000],
+        [-6.27338409, -0.00032770, 0.00020074, 0.00032934, -0.00000116, 0.00000000],
+        [-6.27338417, -0.00032766, 0.00020072, 0.00032931, -0.00000116, 0.00000000],
+        [-6.27338425, -0.00032763, 0.00020069, 0.00032927, -0.00000116, 0.00000000],
+        [-6.27338433, -0.00032759, 0.00020067, 0.00032924, -0.00000116, 0.00000000],
+        [-6.27338442, -0.00032756, 0.00020065, 0.00032920, -0.00000116, 0.00000000],
+        [-6.27338450, -0.00032752, 0.00020063, 0.00032917, -0.00000116, 0.00000000],
+        [-6.27338458, -0.00032749, 0.00020061, 0.00032913, -0.00000116, 0.00000000],
+        [-6.27338467, -0.00032745, 0.00020059, 0.00032910, -0.00000116, 0.00000000],
+        [-6.27338475, -0.00032742, 0.00020057, 0.00032906, -0.00000116, 0.00000000],
+        [-6.27338483, -0.00032739, 0.00020055, 0.00032903, -0.00000116, 0.00000000],
+        [-6.27338492, -0.00032735, 0.00020052, 0.00032899, -0.00000116, 0.00000000],
+        [-6.27338500, -0.00032732, 0.00020050, 0.00032896, -0.00000116, 0.00000000],
+        [-6.27338508, -0.00032728, 0.00020048, 0.00032892, -0.00000116, 0.00000000],
+        [-6.27338516, -0.00032725, 0.00020046, 0.00032889, -0.00000116, 0.00000000],
+        [-6.27338525, -0.00032721, 0.00020044, 0.00032885, -0.00000116, 0.00000000],
+        [-6.27338533, -0.00032718, 0.00020042, 0.00032882, -0.00000116, 0.00000000],
+        [-6.27338541, -0.00032714, 0.00020040, 0.00032878, -0.00000116, 0.00000000],
+        [-6.27338550, -0.00032711, 0.00020038, 0.00032875, -0.00000116, 0.00000000],
+        [-6.27338558, -0.00032707, 0.00020035, 0.00032872, -0.00000116, 0.00000000],
+        [-6.27338566, -0.00032704, 0.00020033, 0.00032868, -0.00000116, 0.00000000],
+        [-6.27338574, -0.00032700, 0.00020031, 0.00032865, -0.00000116, 0.00000000],
+        [-6.27338583, -0.00032697, 0.00020029, 0.00032861, -0.00000116, 0.00000000],
+        [-6.27338591, -0.00032694, 0.00020027, 0.00032858, -0.00000116, 0.00000000],
+        [-6.27338599, -0.00032690, 0.00020025, 0.00032854, -0.00000116, 0.00000000],
+        [-6.27338607, -0.00032687, 0.00020023, 0.00032851, -0.00000116, 0.00000000],
+        [-6.27338616, -0.00032683, 0.00020021, 0.00032847, -0.00000116, 0.00000000],
+        [-6.27338624, -0.00032680, 0.00020019, 0.00032844, -0.00000116, 0.00000000],
+        [-6.27338632, -0.00032676, 0.00020016, 0.00032840, -0.00000116, 0.00000000],
+        [-6.27338640, -0.00032673, 0.00020014, 0.00032837, -0.00000116, 0.00000000],
+        [-6.27338649, -0.00032669, 0.00020012, 0.00032833, -0.00000116, 0.00000000],
+        [-6.27338657, -0.00032666, 0.00020010, 0.00032830, -0.00000116, 0.00000000],
+        [-6.27338665, -0.00032663, 0.00020008, 0.00032826, -0.00000116, 0.00000000],
+        [-6.27338674, -0.00032659, 0.00020006, 0.00032823, -0.00000116, 0.00000000],
+        [-6.27338682, -0.00032656, 0.00020004, 0.00032820, -0.00000116, 0.00000000],
+        [-6.27338690, -0.00032652, 0.00020002, 0.00032816, -0.00000116, 0.00000000],
+        [-6.27338698, -0.00032649, 0.00020000, 0.00032813, -0.00000116, 0.00000000],
+        [-6.27338706, -0.00032645, 0.00019997, 0.00032809, -0.00000116, 0.00000000],
+        [-6.27338715, -0.00032642, 0.00019995, 0.00032806, -0.00000116, 0.00000000],
+        [-6.27338723, -0.00032638, 0.00019993, 0.00032802, -0.00000116, 0.00000000],
+        [-6.27338731, -0.00032635, 0.00019991, 0.00032799, -0.00000116, 0.00000000],
+        [-6.27338739, -0.00032632, 0.00019989, 0.00032795, -0.00000116, 0.00000000],
+        [-6.27338748, -0.00032628, 0.00019987, 0.00032792, -0.00000116, 0.00000000],
+        [-6.27338756, -0.00032625, 0.00019985, 0.00032788, -0.00000116, 0.00000000],
+        [-6.27338764, -0.00032621, 0.00019983, 0.00032785, -0.00000116, 0.00000000],
+        [-6.27338772, -0.00032618, 0.00019981, 0.00032781, -0.00000116, 0.00000000],
+        [-6.27338781, -0.00032614, 0.00019978, 0.00032778, -0.00000116, 0.00000000],
+        [-6.27338789, -0.00032611, 0.00019976, 0.00032775, -0.00000116, 0.00000000],
+        [-6.27338797, -0.00032607, 0.00019974, 0.00032771, -0.00000116, 0.00000000],
+        [-6.27338805, -0.00032604, 0.00019972, 0.00032768, -0.00000116, 0.00000000],
+        [-6.27338814, -0.00032601, 0.00019970, 0.00032764, -0.00000116, 0.00000000],
+        [-6.27338822, -0.00032597, 0.00019968, 0.00032761, -0.00000116, 0.00000000],
+        [-6.27338830, -0.00032594, 0.00019966, 0.00032757, -0.00000116, 0.00000000],
+        [-6.27338838, -0.00032590, 0.00019964, 0.00032754, -0.00000116, 0.00000000],
+        [-6.27338846, -0.00032587, 0.00019962, 0.00032750, -0.00000116, 0.00000000],
+        [-6.27338855, -0.00032583, 0.00019960, 0.00032747, -0.00000116, 0.00000000],
+        [-6.27338863, -0.00032580, 0.00019957, 0.00032744, -0.00000116, 0.00000000],
+        [-6.27338871, -0.00032577, 0.00019955, 0.00032740, -0.00000116, 0.00000000],
+        [-6.27338879, -0.00032573, 0.00019953, 0.00032737, -0.00000116, 0.00000000],
+        [-6.27338887, -0.00032570, 0.00019951, 0.00032733, -0.00000116, 0.00000000],
+        [-6.27338896, -0.00032566, 0.00019949, 0.00032730, -0.00000116, 0.00000000],
+        [-6.27338904, -0.00032563, 0.00019947, 0.00032726, -0.00000116, 0.00000000],
+        [-6.27338912, -0.00032559, 0.00019945, 0.00032723, -0.00000116, 0.00000000],
+        [-6.27338920, -0.00032556, 0.00019943, 0.00032719, -0.00000116, 0.00000000],
+        [-6.27338928, -0.00032553, 0.00019941, 0.00032716, -0.00000116, 0.00000000],
+        [-6.27338937, -0.00032549, 0.00019939, 0.00032713, -0.00000116, 0.00000000],
+        [-6.27338945, -0.00032546, 0.00019936, 0.00032709, -0.00000116, 0.00000000],
+        [-6.27338953, -0.00032542, 0.00019934, 0.00032706, -0.00000116, 0.00000000],
+        [-6.27338961, -0.00032539, 0.00019932, 0.00032702, -0.00000116, 0.00000000],
+        [-6.27338969, -0.00032536, 0.00019930, 0.00032699, -0.00000116, 0.00000000],
+        [-6.27338978, -0.00032532, 0.00019928, 0.00032695, -0.00000116, 0.00000000],
+        [-6.27338986, -0.00032529, 0.00019926, 0.00032692, -0.00000116, 0.00000000],
+        [-6.27338994, -0.00032525, 0.00019924, 0.00032688, -0.00000116, 0.00000000],
+        [-6.27339002, -0.00032522, 0.00019922, 0.00032685, -0.00000116, 0.00000000],
+        [-6.27339010, -0.00032518, 0.00019920, 0.00032682, -0.00000116, 0.00000000],
+        [-6.27339019, -0.00032515, 0.00019918, 0.00032678, -0.00000116, 0.00000000],
+        [-6.27339027, -0.00032512, 0.00019915, 0.00032675, -0.00000116, 0.00000000],
+        [-6.27339035, -0.00032508, 0.00019913, 0.00032671, -0.00000116, 0.00000000],
+        [-6.27339043, -0.00032505, 0.00019911, 0.00032668, -0.00000116, 0.00000000],
+        [-6.27339051, -0.00032501, 0.00019909, 0.00032664, -0.00000116, 0.00000000],
+        [-6.27339059, -0.00032498, 0.00019907, 0.00032661, -0.00000116, 0.00000000],
+        [-6.27339068, -0.00032495, 0.00019905, 0.00032658, -0.00000116, 0.00000000],
+        [-6.27339076, -0.00032491, 0.00019903, 0.00032654, -0.00000116, 0.00000000],
+        [-6.27339084, -0.00032488, 0.00019901, 0.00032651, -0.00000116, 0.00000000],
+        [-6.27339092, -0.00032484, 0.00019899, 0.00032647, -0.00000116, 0.00000000],
+        [-6.27339100, -0.00032481, 0.00019897, 0.00032644, -0.00000116, 0.00000000],
+        [-6.27339108, -0.00032477, 0.00019895, 0.00032640, -0.00000116, 0.00000000],
+        [-6.27339117, -0.00032474, 0.00019892, 0.00032637, -0.00000116, 0.00000000],
+        [-6.27339125, -0.00032471, 0.00019890, 0.00032634, -0.00000116, 0.00000000],
+        [-6.27339133, -0.00032467, 0.00019888, 0.00032630, -0.00000116, 0.00000000],
+        [-6.27339141, -0.00032464, 0.00019886, 0.00032627, -0.00000116, 0.00000000],
+        [-6.27339149, -0.00032460, 0.00019884, 0.00032623, -0.00000116, 0.00000000],
+        [-6.27339157, -0.00032457, 0.00019882, 0.00032620, -0.00000116, 0.00000000],
+        [-6.27339165, -0.00032454, 0.00019880, 0.00032617, -0.00000116, 0.00000000],
+        [-6.27339174, -0.00032450, 0.00019878, 0.00032613, -0.00000116, 0.00000000],
+        [-6.27339182, -0.00032447, 0.00019876, 0.00032610, -0.00000116, 0.00000000],
+        [-6.27339190, -0.00032443, 0.00019874, 0.00032606, -0.00000116, 0.00000000],
+        [-6.27339198, -0.00032440, 0.00019872, 0.00032603, -0.00000116, 0.00000000],
+        [-6.27339206, -0.00032437, 0.00019870, 0.00032599, -0.00000116, 0.00000000],
+        [-6.27339214, -0.00032433, 0.00019867, 0.00032596, -0.00000116, 0.00000000],
+        [-6.27339222, -0.00032430, 0.00019865, 0.00032593, -0.00000116, 0.00000000],
+        [-6.27339231, -0.00032426, 0.00019863, 0.00032589, -0.00000116, 0.00000000],
+        [-6.27339239, -0.00032423, 0.00019861, 0.00032586, -0.00000116, 0.00000000],
+        [-6.27339247, -0.00032420, 0.00019859, 0.00032582, -0.00000116, 0.00000000],
+        [-6.27339255, -0.00032416, 0.00019857, 0.00032579, -0.00000116, 0.00000000],
+        [-6.27339263, -0.00032413, 0.00019855, 0.00032576, -0.00000116, 0.00000000],
+        [-6.27339271, -0.00032409, 0.00019853, 0.00032572, -0.00000116, 0.00000000],
+        [-6.27339279, -0.00032406, 0.00019851, 0.00032569, -0.00000116, 0.00000000],
+        [-6.27339287, -0.00032403, 0.00019849, 0.00032565, -0.00000116, 0.00000000],
+        [-6.27339296, -0.00032399, 0.00019847, 0.00032562, -0.00000116, 0.00000000],
+        [-6.27339304, -0.00032396, 0.00019845, 0.00032558, -0.00000116, 0.00000000],
+        [-6.27339312, -0.00032393, 0.00019843, 0.00032555, -0.00000116, 0.00000000],
+        [-6.27339320, -0.00032389, 0.00019840, 0.00032552, -0.00000116, 0.00000000],
+        [-6.27339328, -0.00032386, 0.00019838, 0.00032548, -0.00000116, 0.00000000],
+        [-6.27339336, -0.00032382, 0.00019836, 0.00032545, -0.00000116, 0.00000000],
+        [-6.27339344, -0.00032379, 0.00019834, 0.00032541, -0.00000116, 0.00000000],
+        [-6.27339352, -0.00032376, 0.00019832, 0.00032538, -0.00000116, 0.00000000],
+        [-6.27339360, -0.00032372, 0.00019830, 0.00032535, -0.00000116, 0.00000000],
+        [-6.27339369, -0.00032369, 0.00019828, 0.00032531, -0.00000116, 0.00000000],
+        [-6.27339377, -0.00032365, 0.00019826, 0.00032528, -0.00000116, 0.00000000],
+        [-6.27339385, -0.00032362, 0.00019824, 0.00032524, -0.00000116, 0.00000000],
+        [-6.27339393, -0.00032359, 0.00019822, 0.00032521, -0.00000116, 0.00000000],
+        [-6.27339401, -0.00032355, 0.00019820, 0.00032518, -0.00000116, 0.00000000],
+        [-6.27339409, -0.00032352, 0.00019818, 0.00032514, -0.00000116, 0.00000000],
+        [-6.27339417, -0.00032349, 0.00019816, 0.00032511, -0.00000116, 0.00000000],
+        [-6.27339425, -0.00032345, 0.00019813, 0.00032507, -0.00000116, 0.00000000],
+        [-6.27339433, -0.00032342, 0.00019811, 0.00032504, -0.00000116, 0.00000000],
+        [-6.27339441, -0.00032338, 0.00019809, 0.00032501, -0.00000116, 0.00000000],
+        [-6.27339450, -0.00032335, 0.00019807, 0.00032497, -0.00000116, 0.00000000],
+        [-6.27339458, -0.00032332, 0.00019805, 0.00032494, -0.00000116, 0.00000000],
+        [-6.27339466, -0.00032328, 0.00019803, 0.00032490, -0.00000116, 0.00000000],
+        [-6.27339474, -0.00032325, 0.00019801, 0.00032487, -0.00000116, 0.00000000],
+        [-6.27339482, -0.00032321, 0.00019799, 0.00032484, -0.00000116, 0.00000000],
+        [-6.27339490, -0.00032318, 0.00019797, 0.00032480, -0.00000116, 0.00000000],
+        [-6.27339498, -0.00032315, 0.00019795, 0.00032477, -0.00000116, 0.00000000],
+        [-6.27339506, -0.00032311, 0.00019793, 0.00032473, -0.00000116, 0.00000000],
+        [-6.27339514, -0.00032308, 0.00019791, 0.00032470, -0.00000116, 0.00000000],
+        [-6.27339522, -0.00032305, 0.00019789, 0.00032467, -0.00000116, 0.00000000],
+        [-6.27339530, -0.00032301, 0.00019787, 0.00032463, -0.00000116, 0.00000000],
+        [-6.27339538, -0.00032298, 0.00019785, 0.00032460, -0.00000116, 0.00000000],
+        [-6.27339546, -0.00032295, 0.00019782, 0.00032457, -0.00000116, 0.00000000],
+        [-6.27339555, -0.00032291, 0.00019780, 0.00032453, -0.00000116, 0.00000000],
+        [-6.27339563, -0.00032288, 0.00019778, 0.00032450, -0.00000116, 0.00000000],
+        [-6.27339571, -0.00032284, 0.00019776, 0.00032446, -0.00000116, 0.00000000],
+        [-6.27339579, -0.00032281, 0.00019774, 0.00032443, -0.00000116, 0.00000000],
+        [-6.27339587, -0.00032278, 0.00019772, 0.00032440, -0.00000116, 0.00000000],
+        [-6.27339595, -0.00032274, 0.00019770, 0.00032436, -0.00000116, 0.00000000],
+        [-6.27339603, -0.00032271, 0.00019768, 0.00032433, -0.00000116, 0.00000000],
+        [-6.27339611, -0.00032268, 0.00019766, 0.00032429, -0.00000116, 0.00000000],
+        [-6.27339619, -0.00032264, 0.00019764, 0.00032426, -0.00000116, 0.00000000],
+        [-6.27339627, -0.00032261, 0.00019762, 0.00032423, -0.00000116, 0.00000000],
+        [-6.27339635, -0.00032258, 0.00019760, 0.00032419, -0.00000116, 0.00000000],
+        [-6.27339643, -0.00032254, 0.00019758, 0.00032416, -0.00000116, 0.00000000],
+        [-6.27339651, -0.00032251, 0.00019756, 0.00032413, -0.00000116, 0.00000000],
+        [-6.27339659, -0.00032247, 0.00019754, 0.00032409, -0.00000116, 0.00000000],
+        [-6.27339667, -0.00032244, 0.00019752, 0.00032406, -0.00000116, 0.00000000],
+        [-6.27339675, -0.00032241, 0.00019749, 0.00032402, -0.00000116, 0.00000000],
+        [-6.27339683, -0.00032237, 0.00019747, 0.00032399, -0.00000116, 0.00000000],
+        [-6.27339691, -0.00032234, 0.00019745, 0.00032396, -0.00000116, 0.00000000],
+        [-6.27339699, -0.00032231, 0.00019743, 0.00032392, -0.00000116, 0.00000000],
+        [-6.27339708, -0.00032227, 0.00019741, 0.00032389, -0.00000116, 0.00000000],
+        [-6.27339716, -0.00032224, 0.00019739, 0.00032386, -0.00000116, 0.00000000],
+        [-6.27339724, -0.00032221, 0.00019737, 0.00032382, -0.00000116, 0.00000000],
+        [-6.27339732, -0.00032217, 0.00019735, 0.00032379, -0.00000116, 0.00000000],
+        [-6.27339740, -0.00032214, 0.00019733, 0.00032375, -0.00000116, 0.00000000],
+        [-6.27339748, -0.00032210, 0.00019731, 0.00032372, -0.00000116, 0.00000000],
+        [-6.27339756, -0.00032207, 0.00019729, 0.00032369, -0.00000116, 0.00000000],
+        [-6.27339764, -0.00032204, 0.00019727, 0.00032365, -0.00000116, 0.00000000],
+        [-6.27339772, -0.00032200, 0.00019725, 0.00032362, -0.00000116, 0.00000000],
+        [-6.27339780, -0.00032197, 0.00019723, 0.00032359, -0.00000116, 0.00000000],
+        [-6.27339788, -0.00032194, 0.00019721, 0.00032355, -0.00000116, 0.00000000],
+        [-6.27339796, -0.00032190, 0.00019719, 0.00032352, -0.00000116, 0.00000000],
+        [-6.27339804, -0.00032187, 0.00019717, 0.00032349, -0.00000116, 0.00000000],
+        [-6.27339812, -0.00032184, 0.00019715, 0.00032345, -0.00000116, 0.00000000],
+        [-6.27339820, -0.00032180, 0.00019713, 0.00032342, -0.00000116, 0.00000000],
+        [-6.27339828, -0.00032177, 0.00019710, 0.00032338, -0.00000116, 0.00000000],
+        [-6.27339836, -0.00032174, 0.00019708, 0.00032335, -0.00000116, 0.00000000],
+        [-6.27339844, -0.00032170, 0.00019706, 0.00032332, -0.00000116, 0.00000000],
+        [-6.27339852, -0.00032167, 0.00019704, 0.00032328, -0.00000116, 0.00000000],
+        [-6.27339860, -0.00032164, 0.00019702, 0.00032325, -0.00000116, 0.00000000],
+        [-6.27339868, -0.00032160, 0.00019700, 0.00032322, -0.00000116, 0.00000000],
+        [-6.27339876, -0.00032157, 0.00019698, 0.00032318, -0.00000116, 0.00000000],
+        [-6.27339884, -0.00032154, 0.00019696, 0.00032315, -0.00000116, 0.00000000],
+        [-6.27339892, -0.00032150, 0.00019694, 0.00032312, -0.00000116, 0.00000000],
+        [-6.27339900, -0.00032147, 0.00019692, 0.00032308, -0.00000116, 0.00000000],
+        [-6.27339908, -0.00032144, 0.00019690, 0.00032305, -0.00000116, 0.00000000],
+        [-6.27339916, -0.00032140, 0.00019688, 0.00032302, -0.00000116, 0.00000000],
+        [-6.27339924, -0.00032137, 0.00019686, 0.00032298, -0.00000116, 0.00000000],
+        [-6.27339932, -0.00032134, 0.00019684, 0.00032295, -0.00000116, 0.00000000],
+        [-6.27339940, -0.00032130, 0.00019682, 0.00032291, -0.00000116, 0.00000000],
+        [-6.27339948, -0.00032127, 0.00019680, 0.00032288, -0.00000116, 0.00000000],
+        [-6.27339956, -0.00032124, 0.00019678, 0.00032285, -0.00000116, 0.00000000],
+        [-6.27339964, -0.00032120, 0.00019676, 0.00032281, -0.00000116, 0.00000000],
+        [-6.27339972, -0.00032117, 0.00019674, 0.00032278, -0.00000116, 0.00000000],
+        [-6.27339980, -0.00032114, 0.00019672, 0.00032275, -0.00000116, 0.00000000],
+        [-6.27339988, -0.00032110, 0.00019670, 0.00032271, -0.00000116, 0.00000000],
+        [-6.27339996, -0.00032107, 0.00019668, 0.00032268, -0.00000116, 0.00000000],
+        [-6.27340004, -0.00032104, 0.00019665, 0.00032265, -0.00000116, 0.00000000],
+        [-6.27340012, -0.00032100, 0.00019663, 0.00032261, -0.00000116, 0.00000000],
+        [-6.27340020, -0.00032097, 0.00019661, 0.00032258, -0.00000116, 0.00000000],
+        [-6.27340028, -0.00032094, 0.00019659, 0.00032255, -0.00000116, 0.00000000],
+        [-6.27340036, -0.00032090, 0.00019657, 0.00032251, -0.00000116, 0.00000000],
+        [-6.27340043, -0.00032087, 0.00019655, 0.00032248, -0.00000116, 0.00000000],
+        [-6.27340051, -0.00032084, 0.00019653, 0.00032245, -0.00000116, 0.00000000],
+        [-6.27340059, -0.00032080, 0.00019651, 0.00032241, -0.00000116, 0.00000000],
+        [-6.27340067, -0.00032077, 0.00019649, 0.00032238, -0.00000116, 0.00000000],
+        [-6.27340075, -0.00032074, 0.00019647, 0.00032235, -0.00000116, 0.00000000],
+        [-6.27340083, -0.00032070, 0.00019645, 0.00032231, -0.00000116, 0.00000000],
+        [-6.27340091, -0.00032067, 0.00019643, 0.00032228, -0.00000116, 0.00000000],
+        [-6.27340099, -0.00032064, 0.00019641, 0.00032225, -0.00000116, 0.00000000],
+        [-6.27340107, -0.00032060, 0.00019639, 0.00032221, -0.00000116, 0.00000000],
+        [-6.27340115, -0.00032057, 0.00019637, 0.00032218, -0.00000116, 0.00000000],
+        [-6.27340123, -0.00032054, 0.00019635, 0.00032215, -0.00000116, 0.00000000],
+        [-6.27340131, -0.00032050, 0.00019633, 0.00032211, -0.00000116, 0.00000000],
+        [-6.27340139, -0.00032047, 0.00019631, 0.00032208, -0.00000116, 0.00000000],
+        [-6.27340147, -0.00032044, 0.00019629, 0.00032205, -0.00000116, 0.00000000],
+        [-6.27340155, -0.00032040, 0.00019627, 0.00032201, -0.00000116, 0.00000000],
+        [-6.27340163, -0.00032037, 0.00019625, 0.00032198, -0.00000116, 0.00000000],
+        [-6.27340171, -0.00032034, 0.00019623, 0.00032195, -0.00000116, 0.00000000],
+        [-6.27340179, -0.00032031, 0.00019621, 0.00032191, -0.00000116, 0.00000000],
+        [-6.27340187, -0.00032027, 0.00019619, 0.00032188, -0.00000116, 0.00000000],
+        [-6.27340194, -0.00032024, 0.00019617, 0.00032185, -0.00000116, 0.00000000],
+        [-6.27340202, -0.00032021, 0.00019615, 0.00032181, -0.00000116, 0.00000000],
+        [-6.27340210, -0.00032017, 0.00019613, 0.00032178, -0.00000116, 0.00000000],
+        [-6.27340218, -0.00032014, 0.00019611, 0.00032175, -0.00000116, 0.00000000],
+        [-6.27340226, -0.00032011, 0.00019608, 0.00032171, -0.00000116, 0.00000000],
+        [-6.27340234, -0.00032007, 0.00019606, 0.00032168, -0.00000116, 0.00000000],
+        [-6.27340242, -0.00032004, 0.00019604, 0.00032165, -0.00000116, 0.00000000],
+        [-6.27340250, -0.00032001, 0.00019602, 0.00032161, -0.00000116, 0.00000000],
+        [-6.27340258, -0.00031997, 0.00019600, 0.00032158, -0.00000116, 0.00000000],
+        [-6.27340266, -0.00031994, 0.00019598, 0.00032155, -0.00000116, 0.00000000],
+        [-6.27340274, -0.00031991, 0.00019596, 0.00032151, -0.00000116, 0.00000000],
+        [-6.27340282, -0.00031987, 0.00019594, 0.00032148, -0.00000116, 0.00000000],
+        [-6.27340290, -0.00031984, 0.00019592, 0.00032145, -0.00000116, 0.00000000],
+        [-6.27340297, -0.00031981, 0.00019590, 0.00032141, -0.00000116, 0.00000000],
+        [-6.27340305, -0.00031978, 0.00019588, 0.00032138, -0.00000116, 0.00000000],
+        [-6.27340313, -0.00031974, 0.00019586, 0.00032135, -0.00000116, 0.00000000],
+        [-6.27340321, -0.00031971, 0.00019584, 0.00032131, -0.00000116, 0.00000000],
+        [-6.27340329, -0.00031968, 0.00019582, 0.00032128, -0.00000116, 0.00000000],
+        [-6.27340337, -0.00031964, 0.00019580, 0.00032125, -0.00000116, 0.00000000],
+        [-6.27340345, -0.00031961, 0.00019578, 0.00032121, -0.00000116, 0.00000000],
+        [-6.27340353, -0.00031958, 0.00019576, 0.00032118, -0.00000116, 0.00000000],
+        [-6.27340361, -0.00031954, 0.00019574, 0.00032115, -0.00000116, 0.00000000],
+        [-6.27340369, -0.00031951, 0.00019572, 0.00032111, -0.00000116, 0.00000000],
+        [-6.27340377, -0.00031948, 0.00019570, 0.00032108, -0.00000116, 0.00000000],
+        [-6.27340384, -0.00031945, 0.00019568, 0.00032105, -0.00000116, 0.00000000],
+        [-6.27340392, -0.00031941, 0.00019566, 0.00032102, -0.00000116, 0.00000000],
+        [-6.27340400, -0.00031938, 0.00019564, 0.00032098, -0.00000116, 0.00000000],
+        [-6.27340408, -0.00031935, 0.00019562, 0.00032095, -0.00000116, 0.00000000],
+        [-6.27340416, -0.00031931, 0.00019560, 0.00032092, -0.00000116, 0.00000000],
+        [-6.27340424, -0.00031928, 0.00019558, 0.00032088, -0.00000116, 0.00000000],
+        [-6.27340432, -0.00031925, 0.00019556, 0.00032085, -0.00000116, 0.00000000],
+        [-6.27340440, -0.00031922, 0.00019554, 0.00032082, -0.00000116, 0.00000000],
+        [-6.27340448, -0.00031918, 0.00019552, 0.00032078, -0.00000116, 0.00000000],
+        [-6.27340455, -0.00031915, 0.00019550, 0.00032075, -0.00000116, 0.00000000],
+        [-6.27340463, -0.00031912, 0.00019548, 0.00032072, -0.00000116, 0.00000000],
+        [-6.27340471, -0.00031908, 0.00019546, 0.00032068, -0.00000116, 0.00000000],
+        [-6.27340479, -0.00031905, 0.00019544, 0.00032065, -0.00000116, 0.00000000],
+        [-6.27340487, -0.00031902, 0.00019542, 0.00032062, -0.00000116, 0.00000000],
+        [-6.27340495, -0.00031899, 0.00019540, 0.00032059, -0.00000116, 0.00000000],
+        [-6.27340503, -0.00031895, 0.00019538, 0.00032055, -0.00000116, 0.00000000],
+        [-6.27340511, -0.00031892, 0.00019536, 0.00032052, -0.00000116, 0.00000000],
+        [-6.27340518, -0.00031889, 0.00019534, 0.00032049, -0.00000116, 0.00000000],
+        [-6.27340526, -0.00031885, 0.00019532, 0.00032045, -0.00000116, 0.00000000],
+        [-6.27340534, -0.00031882, 0.00019530, 0.00032042, -0.00000116, 0.00000000],
+        [-6.27340542, -0.00031879, 0.00019528, 0.00032039, -0.00000116, 0.00000000],
+        [-6.27340550, -0.00031876, 0.00019526, 0.00032035, -0.00000116, 0.00000000],
+        [-6.27340558, -0.00031872, 0.00019524, 0.00032032, -0.00000116, 0.00000000],
+        [-6.27340566, -0.00031869, 0.00019522, 0.00032029, -0.00000116, 0.00000000],
+        [-6.27340573, -0.00031866, 0.00019520, 0.00032026, -0.00000116, 0.00000000],
+        [-6.27340581, -0.00031862, 0.00019518, 0.00032022, -0.00000116, 0.00000000],
+        [-6.27340589, -0.00031859, 0.00019516, 0.00032019, -0.00000116, 0.00000000],
+        [-6.27340597, -0.00031856, 0.00019514, 0.00032016, -0.00000116, 0.00000000],
+        [-6.27340605, -0.00031853, 0.00019512, 0.00032012, -0.00000116, 0.00000000],
+        [-6.27340613, -0.00031849, 0.00019510, 0.00032009, -0.00000116, 0.00000000],
+        [-6.27340621, -0.00031846, 0.00019508, 0.00032006, -0.00000116, 0.00000000],
+        [-6.27340628, -0.00031843, 0.00019506, 0.00032002, -0.00000116, 0.00000000],
+        [-6.27340636, -0.00031839, 0.00019504, 0.00031999, -0.00000116, 0.00000000],
+        [-6.27340644, -0.00031836, 0.00019502, 0.00031996, -0.00000116, 0.00000000],
+        [-6.27340652, -0.00031833, 0.00019500, 0.00031993, -0.00000116, 0.00000000],
+        [-6.27340660, -0.00031830, 0.00019498, 0.00031989, -0.00000116, 0.00000000],
+        [-6.27340668, -0.00031826, 0.00019496, 0.00031986, -0.00000116, 0.00000000],
+        [-6.27340675, -0.00031823, 0.00019494, 0.00031983, -0.00000116, 0.00000000],
+        [-6.27340683, -0.00031820, 0.00019492, 0.00031979, -0.00000116, 0.00000000],
+        [-6.27340691, -0.00031817, 0.00019490, 0.00031976, -0.00000116, 0.00000000],
+        [-6.27340699, -0.00031813, 0.00019488, 0.00031973, -0.00000116, 0.00000000],
+        [-6.27340707, -0.00031810, 0.00019486, 0.00031970, -0.00000116, 0.00000000],
+        [-6.27340715, -0.00031807, 0.00019484, 0.00031966, -0.00000116, 0.00000000],
+        [-6.27340722, -0.00031803, 0.00019482, 0.00031963, -0.00000116, 0.00000000],
+        [-6.27340730, -0.00031800, 0.00019480, 0.00031960, -0.00000116, 0.00000000],
+        [-6.27340738, -0.00031797, 0.00019478, 0.00031956, -0.00000116, 0.00000000],
+        [-6.27340746, -0.00031794, 0.00019476, 0.00031953, -0.00000116, 0.00000000],
+        [-6.27340754, -0.00031790, 0.00019474, 0.00031950, -0.00000116, 0.00000000],
+        [-6.27340761, -0.00031787, 0.00019472, 0.00031947, -0.00000116, 0.00000000],
+        [-6.27340769, -0.00031784, 0.00019470, 0.00031943, -0.00000116, 0.00000000],
+        [-6.27340777, -0.00031781, 0.00019468, 0.00031940, -0.00000116, 0.00000000],
+        [-6.27340785, -0.00031777, 0.00019466, 0.00031937, -0.00000116, 0.00000000],
+        [-6.27340793, -0.00031774, 0.00019464, 0.00031933, -0.00000116, 0.00000000],
+        [-6.27340801, -0.00031771, 0.00019462, 0.00031930, -0.00000116, 0.00000000],
+        [-6.27340808, -0.00031768, 0.00019460, 0.00031927, -0.00000116, 0.00000000],
+        [-6.27340816, -0.00031764, 0.00019458, 0.00031924, -0.00000116, 0.00000000],
+        [-6.27340824, -0.00031761, 0.00019456, 0.00031920, -0.00000116, 0.00000000],
+        [-6.27340832, -0.00031758, 0.00019454, 0.00031917, -0.00000116, 0.00000000],
+        [-6.27340840, -0.00031755, 0.00019452, 0.00031914, -0.00000116, 0.00000000],
+        [-6.27340847, -0.00031751, 0.00019450, 0.00031911, -0.00000116, 0.00000000],
+        [-6.27340855, -0.00031748, 0.00019448, 0.00031907, -0.00000116, 0.00000000],
+        [-6.27340863, -0.00031745, 0.00019446, 0.00031904, -0.00000116, 0.00000000],
+        [-6.27340871, -0.00031742, 0.00019444, 0.00031901, -0.00000116, 0.00000000],
+        [-6.27340879, -0.00031738, 0.00019442, 0.00031897, -0.00000116, 0.00000000],
+        [-6.27340886, -0.00031735, 0.00019440, 0.00031894, -0.00000116, 0.00000000],
+        [-6.27340894, -0.00031732, 0.00019438, 0.00031891, -0.00000116, 0.00000000],
+        [-6.27340902, -0.00031728, 0.00019436, 0.00031888, -0.00000116, 0.00000000],
+        [-6.27340910, -0.00031725, 0.00019434, 0.00031884, -0.00000116, 0.00000000],
+        [-6.27340917, -0.00031722, 0.00019432, 0.00031881, -0.00000116, 0.00000000],
+        [-6.27340925, -0.00031719, 0.00019430, 0.00031878, -0.00000116, 0.00000000],
+        [-6.27340933, -0.00031715, 0.00019428, 0.00031875, -0.00000116, 0.00000000],
+        [-6.27340941, -0.00031712, 0.00019426, 0.00031871, -0.00000116, 0.00000000],
+        [-6.27340949, -0.00031709, 0.00019424, 0.00031868, -0.00000116, 0.00000000],
+        [-6.27340956, -0.00031706, 0.00019422, 0.00031865, -0.00000116, 0.00000000],
+        [-6.27340964, -0.00031702, 0.00019420, 0.00031862, -0.00000116, 0.00000000],
+        [-6.27340972, -0.00031699, 0.00019418, 0.00031858, -0.00000116, 0.00000000],
+        [-6.27340980, -0.00031696, 0.00019416, 0.00031855, -0.00000116, 0.00000000],
+        [-6.27340987, -0.00031693, 0.00019414, 0.00031852, -0.00000116, 0.00000000],
+        [-6.27340995, -0.00031690, 0.00019412, 0.00031848, -0.00000116, 0.00000000],
+        [-6.27341003, -0.00031686, 0.00019410, 0.00031845, -0.00000116, 0.00000000],
+        [-6.27341011, -0.00031683, 0.00019408, 0.00031842, -0.00000116, 0.00000000],
+        [-6.27341019, -0.00031680, 0.00019406, 0.00031839, -0.00000116, 0.00000000],
+        [-6.27341026, -0.00031677, 0.00019404, 0.00031835, -0.00000116, 0.00000000],
+        [-6.27341034, -0.00031673, 0.00019402, 0.00031832, -0.00000116, 0.00000000],
+        [-6.27341042, -0.00031670, 0.00019400, 0.00031829, -0.00000116, 0.00000000],
+        [-6.27341050, -0.00031667, 0.00019398, 0.00031826, -0.00000116, 0.00000000],
+        [-6.27341057, -0.00031664, 0.00019396, 0.00031822, -0.00000116, 0.00000000],
+        [-6.27341065, -0.00031660, 0.00019394, 0.00031819, -0.00000116, 0.00000000],
+        [-6.27341073, -0.00031657, 0.00019392, 0.00031816, -0.00000116, 0.00000000],
+        [-6.27341081, -0.00031654, 0.00019390, 0.00031813, -0.00000116, 0.00000000],
+        [-6.27341088, -0.00031651, 0.00019388, 0.00031809, -0.00000116, 0.00000000],
+        [-6.27341096, -0.00031647, 0.00019386, 0.00031806, -0.00000116, 0.00000000],
+        [-6.27341104, -0.00031644, 0.00019384, 0.00031803, -0.00000116, 0.00000000],
+        [-6.27341112, -0.00031641, 0.00019382, 0.00031800, -0.00000116, 0.00000000],
+        [-6.27341119, -0.00031638, 0.00019380, 0.00031796, -0.00000116, 0.00000000],
+        [-6.27341127, -0.00031634, 0.00019378, 0.00031793, -0.00000116, 0.00000000],
+        [-6.27341135, -0.00031631, 0.00019376, 0.00031790, -0.00000116, 0.00000000],
+        [-6.27341143, -0.00031628, 0.00019374, 0.00031787, -0.00000116, 0.00000000],
+        [-6.27341150, -0.00031625, 0.00019372, 0.00031783, -0.00000116, 0.00000000],
+        [-6.27341158, -0.00031622, 0.00019370, 0.00031780, -0.00000116, 0.00000000],
+        [-6.27341166, -0.00031618, 0.00019368, 0.00031777, -0.00000116, 0.00000000],
+        [-6.27341173, -0.00031615, 0.00019366, 0.00031774, -0.00000116, 0.00000000],
+        [-6.27341181, -0.00031612, 0.00019364, 0.00031770, -0.00000116, 0.00000000],
+        [-6.27341189, -0.00031609, 0.00019362, 0.00031767, -0.00000116, 0.00000000],
+        [-6.27341197, -0.00031605, 0.00019360, 0.00031764, -0.00000116, 0.00000000],
+        [-6.27341204, -0.00031602, 0.00019358, 0.00031761, -0.00000116, 0.00000000],
+        [-6.27341212, -0.00031599, 0.00019356, 0.00031757, -0.00000116, 0.00000000],
+        [-6.27341220, -0.00031596, 0.00019354, 0.00031754, -0.00000116, 0.00000000],
+        [-6.27341228, -0.00031592, 0.00019352, 0.00031751, -0.00000116, 0.00000000],
+        [-6.27341235, -0.00031589, 0.00019350, 0.00031748, -0.00000116, 0.00000000],
+        [-6.27341243, -0.00031586, 0.00019348, 0.00031744, -0.00000116, 0.00000000],
+        [-6.27341251, -0.00031583, 0.00019346, 0.00031741, -0.00000116, 0.00000000],
+        [-6.27341258, -0.00031580, 0.00019344, 0.00031738, -0.00000116, 0.00000000],
+        [-6.27341266, -0.00031576, 0.00019342, 0.00031735, -0.00000116, 0.00000000],
+        [-6.27341274, -0.00031573, 0.00019340, 0.00031732, -0.00000116, 0.00000000],
+        [-6.27341282, -0.00031570, 0.00019338, 0.00031728, -0.00000116, 0.00000000],
+        [-6.27341289, -0.00031567, 0.00019336, 0.00031725, -0.00000116, 0.00000000],
+        [-6.27341297, -0.00031563, 0.00019334, 0.00031722, -0.00000116, 0.00000000],
+        [-6.27341305, -0.00031560, 0.00019333, 0.00031719, -0.00000116, 0.00000000],
+        [-6.27341312, -0.00031557, 0.00019331, 0.00031715, -0.00000116, 0.00000000],
+        [-6.27341320, -0.00031554, 0.00019329, 0.00031712, -0.00000116, 0.00000000],
+        [-6.27341328, -0.00031551, 0.00019327, 0.00031709, -0.00000116, 0.00000000],
+        [-6.27341336, -0.00031547, 0.00019325, 0.00031706, -0.00000116, 0.00000000],
+        [-6.27341343, -0.00031544, 0.00019323, 0.00031702, -0.00000116, 0.00000000],
+        [-6.27341351, -0.00031541, 0.00019321, 0.00031699, -0.00000116, 0.00000000],
+        [-6.27341359, -0.00031538, 0.00019319, 0.00031696, -0.00000116, 0.00000000],
+        [-6.27341366, -0.00031535, 0.00019317, 0.00031693, -0.00000116, 0.00000000],
+        [-6.27341374, -0.00031531, 0.00019315, 0.00031689, -0.00000116, 0.00000000],
+        [-6.27341382, -0.00031528, 0.00019313, 0.00031686, -0.00000116, 0.00000000],
+        [-6.27341389, -0.00031525, 0.00019311, 0.00031683, -0.00000116, 0.00000000],
+        [-6.27341397, -0.00031522, 0.00019309, 0.00031680, -0.00000116, 0.00000000],
+        [-6.27341405, -0.00031519, 0.00019307, 0.00031677, -0.00000116, 0.00000000],
+        [-6.27341412, -0.00031515, 0.00019305, 0.00031673, -0.00000116, 0.00000000],
+        [-6.27341420, -0.00031512, 0.00019303, 0.00031670, -0.00000116, 0.00000000],
+        [-6.27341428, -0.00031509, 0.00019301, 0.00031667, -0.00000116, 0.00000000],
+        [-6.27341435, -0.00031506, 0.00019299, 0.00031664, -0.00000116, 0.00000000],
+        [-6.27341443, -0.00031502, 0.00019297, 0.00031660, -0.00000116, 0.00000000],
+        [-6.27341451, -0.00031499, 0.00019295, 0.00031657, -0.00000116, 0.00000000],
+        [-6.27341459, -0.00031496, 0.00019293, 0.00031654, -0.00000116, 0.00000000],
+        [-6.27341466, -0.00031493, 0.00019291, 0.00031651, -0.00000116, 0.00000000],
+        [-6.27341474, -0.00031490, 0.00019289, 0.00031648, -0.00000116, 0.00000000],
+        [-6.27341482, -0.00031486, 0.00019287, 0.00031644, -0.00000116, 0.00000000],
+        [-6.27341489, -0.00031483, 0.00019285, 0.00031641, -0.00000116, 0.00000000],
+        [-6.27341497, -0.00031480, 0.00019283, 0.00031638, -0.00000116, 0.00000000],
+        [-6.27341505, -0.00031477, 0.00019281, 0.00031635, -0.00000116, 0.00000000],
+        [-6.27341512, -0.00031474, 0.00019279, 0.00031631, -0.00000116, 0.00000000],
+        [-6.27341520, -0.00031470, 0.00019277, 0.00031628, -0.00000116, 0.00000000],
+        [-6.27341528, -0.00031467, 0.00019275, 0.00031625, -0.00000116, 0.00000000],
+        [-6.27341535, -0.00031464, 0.00019274, 0.00031622, -0.00000116, 0.00000000],
+        [-6.27341543, -0.00031461, 0.00019272, 0.00031619, -0.00000116, 0.00000000],
+        [-6.27341550, -0.00031458, 0.00019270, 0.00031615, -0.00000116, 0.00000000],
+        [-6.27341558, -0.00031454, 0.00019268, 0.00031612, -0.00000116, 0.00000000],
+        [-6.27341566, -0.00031451, 0.00019266, 0.00031609, -0.00000116, 0.00000000],
+        [-6.27341573, -0.00031448, 0.00019264, 0.00031606, -0.00000116, 0.00000000],
+        [-6.27341581, -0.00031445, 0.00019262, 0.00031603, -0.00000116, 0.00000000],
+        [-6.27341589, -0.00031442, 0.00019260, 0.00031599, -0.00000116, 0.00000000],
+        [-6.27341596, -0.00031438, 0.00019258, 0.00031596, -0.00000116, 0.00000000],
+        [-6.27341604, -0.00031435, 0.00019256, 0.00031593, -0.00000116, 0.00000000],
+        [-6.27341612, -0.00031432, 0.00019254, 0.00031590, -0.00000116, 0.00000000],
+        [-6.27341619, -0.00031429, 0.00019252, 0.00031587, -0.00000116, 0.00000000],
+        [-6.27341627, -0.00031426, 0.00019250, 0.00031583, -0.00000116, 0.00000000],
+        [-6.27341635, -0.00031423, 0.00019248, 0.00031580, -0.00000116, 0.00000000],
+        [-6.27341642, -0.00031419, 0.00019246, 0.00031577, -0.00000116, 0.00000000],
+        [-6.27341650, -0.00031416, 0.00019244, 0.00031574, -0.00000116, 0.00000000],
+        [-6.27341658, -0.00031413, 0.00019242, 0.00031571, -0.00000116, 0.00000000],
+        [-6.27341665, -0.00031410, 0.00019240, 0.00031567, -0.00000116, 0.00000000],
+        [-6.27341673, -0.00031407, 0.00019238, 0.00031564, -0.00000116, 0.00000000],
+        [-6.27341680, -0.00031403, 0.00019236, 0.00031561, -0.00000116, 0.00000000],
+        [-6.27341688, -0.00031400, 0.00019234, 0.00031558, -0.00000116, 0.00000000],
+        [-6.27341696, -0.00031397, 0.00019232, 0.00031554, -0.00000116, 0.00000000],
+        [-6.27341703, -0.00031394, 0.00019231, 0.00031551, -0.00000116, 0.00000000],
+        [-6.27341711, -0.00031391, 0.00019229, 0.00031548, -0.00000116, 0.00000000],
+        [-6.27341719, -0.00031387, 0.00019227, 0.00031545, -0.00000116, 0.00000000],
+        [-6.27341726, -0.00031384, 0.00019225, 0.00031542, -0.00000116, 0.00000000],
+        [-6.27341734, -0.00031381, 0.00019223, 0.00031538, -0.00000116, 0.00000000],
+        [-6.27341741, -0.00031378, 0.00019221, 0.00031535, -0.00000116, 0.00000000],
+        [-6.27341749, -0.00031375, 0.00019219, 0.00031532, -0.00000116, 0.00000000],
+        [-6.27341757, -0.00031372, 0.00019217, 0.00031529, -0.00000116, 0.00000000],
+        [-6.27341764, -0.00031368, 0.00019215, 0.00031526, -0.00000116, 0.00000000],
+        [-6.27341772, -0.00031365, 0.00019213, 0.00031523, -0.00000116, 0.00000000],
+        [-6.27341779, -0.00031362, 0.00019211, 0.00031519, -0.00000116, 0.00000000],
+        [-6.27341787, -0.00031359, 0.00019209, 0.00031516, -0.00000116, 0.00000000],
+        [-6.27341795, -0.00031356, 0.00019207, 0.00031513, -0.00000116, 0.00000000],
+        [-6.27341802, -0.00031353, 0.00019205, 0.00031510, -0.00000116, 0.00000000],
+        [-6.27341810, -0.00031349, 0.00019203, 0.00031507, -0.00000116, 0.00000000],
+        [-6.27341817, -0.00031346, 0.00019201, 0.00031503, -0.00000116, 0.00000000],
+        [-6.27341825, -0.00031343, 0.00019199, 0.00031500, -0.00000116, 0.00000000],
+        [-6.27341833, -0.00031340, 0.00019197, 0.00031497, -0.00000116, 0.00000000],
+        [-6.27341840, -0.00031337, 0.00019195, 0.00031494, -0.00000116, 0.00000000],
+        [-6.27341848, -0.00031333, 0.00019194, 0.00031491, -0.00000116, 0.00000000],
+        [-6.27341855, -0.00031330, 0.00019192, 0.00031487, -0.00000116, 0.00000000],
+        [-6.27341863, -0.00031327, 0.00019190, 0.00031484, -0.00000116, 0.00000000],
+        [-6.27341871, -0.00031324, 0.00019188, 0.00031481, -0.00000116, 0.00000000],
+        [-6.27341878, -0.00031321, 0.00019186, 0.00031478, -0.00000116, 0.00000000],
+        [-6.27341886, -0.00031318, 0.00019184, 0.00031475, -0.00000116, 0.00000000],
+        [-6.27341893, -0.00031314, 0.00019182, 0.00031471, -0.00000116, 0.00000000],
+        [-6.27341901, -0.00031311, 0.00019180, 0.00031468, -0.00000116, 0.00000000],
+        [-6.27341909, -0.00031308, 0.00019178, 0.00031465, -0.00000116, 0.00000000],
+        [-6.27341916, -0.00031305, 0.00019176, 0.00031462, -0.00000116, 0.00000000],
+        [-6.27341924, -0.00031302, 0.00019174, 0.00031459, -0.00000116, 0.00000000],
+        [-6.27341931, -0.00031299, 0.00019172, 0.00031456, -0.00000116, 0.00000000],
+        [-6.27341939, -0.00031295, 0.00019170, 0.00031452, -0.00000116, 0.00000000],
+        [-6.27341946, -0.00031292, 0.00019168, 0.00031449, -0.00000116, 0.00000000],
+        [-6.27341954, -0.00031289, 0.00019166, 0.00031446, -0.00000116, 0.00000000],
+        [-6.27341962, -0.00031286, 0.00019164, 0.00031443, -0.00000116, 0.00000000],
+        [-6.27341969, -0.00031283, 0.00019162, 0.00031440, -0.00000116, 0.00000000],
+        [-6.27341977, -0.00031280, 0.00019161, 0.00031437, -0.00000116, 0.00000000],
+        [-6.27341984, -0.00031276, 0.00019159, 0.00031433, -0.00000116, 0.00000000],
+        [-6.27341992, -0.00031273, 0.00019157, 0.00031430, -0.00000116, 0.00000000],
+        [-6.27341999, -0.00031270, 0.00019155, 0.00031427, -0.00000116, 0.00000000],
+        [-6.27342007, -0.00031267, 0.00019153, 0.00031424, -0.00000116, 0.00000000],
+        [-6.27342015, -0.00031264, 0.00019151, 0.00031421, -0.00000116, 0.00000000],
+        [-6.27342022, -0.00031261, 0.00019149, 0.00031417, -0.00000116, 0.00000000],
+        [-6.27342030, -0.00031258, 0.00019147, 0.00031414, -0.00000116, 0.00000000],
+        [-6.27342037, -0.00031254, 0.00019145, 0.00031411, -0.00000116, 0.00000000],
+        [-6.27342045, -0.00031251, 0.00019143, 0.00031408, -0.00000116, 0.00000000],
+        [-6.27342052, -0.00031248, 0.00019141, 0.00031405, -0.00000116, 0.00000000],
+        [-6.27342060, -0.00031245, 0.00019139, 0.00031402, -0.00000116, 0.00000000],
+        [-6.27342067, -0.00031242, 0.00019137, 0.00031398, -0.00000116, 0.00000000],
+        [-6.27342075, -0.00031239, 0.00019135, 0.00031395, -0.00000116, 0.00000000],
+        [-6.27342083, -0.00031235, 0.00019133, 0.00031392, -0.00000116, 0.00000000],
+        [-6.27342090, -0.00031232, 0.00019132, 0.00031389, -0.00000116, 0.00000000],
+        [-6.27342098, -0.00031229, 0.00019130, 0.00031386, -0.00000116, 0.00000000],
+        [-6.27342105, -0.00031226, 0.00019128, 0.00031383, -0.00000116, 0.00000000],
+        [-6.27342113, -0.00031223, 0.00019126, 0.00031379, -0.00000116, 0.00000000],
+        [-6.27342120, -0.00031220, 0.00019124, 0.00031376, -0.00000116, 0.00000000],
+        [-6.27342128, -0.00031217, 0.00019122, 0.00031373, -0.00000116, 0.00000000],
+        [-6.27342135, -0.00031213, 0.00019120, 0.00031370, -0.00000116, 0.00000000],
+        [-6.27342143, -0.00031210, 0.00019118, 0.00031367, -0.00000116, 0.00000000],
+        [-6.27342150, -0.00031207, 0.00019116, 0.00031364, -0.00000116, 0.00000000],
+        [-6.27342158, -0.00031204, 0.00019114, 0.00031360, -0.00000116, 0.00000000],
+        [-6.27342166, -0.00031201, 0.00019112, 0.00031357, -0.00000116, 0.00000000],
+        [-6.27342173, -0.00031198, 0.00019110, 0.00031354, -0.00000116, 0.00000000],
+        [-6.27342181, -0.00031195, 0.00019108, 0.00031351, -0.00000116, 0.00000000],
+        [-6.27342188, -0.00031191, 0.00019106, 0.00031348, -0.00000116, 0.00000000],
+        [-6.27342196, -0.00031188, 0.00019105, 0.00031345, -0.00000116, 0.00000000],
+        [-6.27342203, -0.00031185, 0.00019103, 0.00031341, -0.00000116, 0.00000000],
+        [-6.27342211, -0.00031182, 0.00019101, 0.00031338, -0.00000116, 0.00000000],
+        [-6.27342218, -0.00031179, 0.00019099, 0.00031335, -0.00000116, 0.00000000],
+        [-6.27342226, -0.00031176, 0.00019097, 0.00031332, -0.00000116, 0.00000000],
+        [-6.27342233, -0.00031173, 0.00019095, 0.00031329, -0.00000116, 0.00000000],
+        [-6.27342241, -0.00031169, 0.00019093, 0.00031326, -0.00000116, 0.00000000],
+        [-6.27342248, -0.00031166, 0.00019091, 0.00031323, -0.00000116, 0.00000000],
+        [-6.27342256, -0.00031163, 0.00019089, 0.00031319, -0.00000116, 0.00000000],
+        [-6.27342263, -0.00031160, 0.00019087, 0.00031316, -0.00000116, 0.00000000],
+        [-6.27342271, -0.00031157, 0.00019085, 0.00031313, -0.00000116, 0.00000000],
+        [-6.27342278, -0.00031154, 0.00019083, 0.00031310, -0.00000116, 0.00000000],
+        [-6.27342286, -0.00031151, 0.00019081, 0.00031307, -0.00000116, 0.00000000],
+        [-6.27342293, -0.00031147, 0.00019080, 0.00031304, -0.00000116, 0.00000000],
+        [-6.27342301, -0.00031144, 0.00019078, 0.00031300, -0.00000116, 0.00000000],
+        [-6.27342308, -0.00031141, 0.00019076, 0.00031297, -0.00000116, 0.00000000],
+        [-6.27342316, -0.00031138, 0.00019074, 0.00031294, -0.00000116, 0.00000000],
+        [-6.27342323, -0.00031135, 0.00019072, 0.00031291, -0.00000116, 0.00000000],
+        [-6.27342331, -0.00031132, 0.00019070, 0.00031288, -0.00000116, 0.00000000],
+        [-6.27342338, -0.00031129, 0.00019068, 0.00031285, -0.00000116, 0.00000000],
+        [-6.27342346, -0.00031126, 0.00019066, 0.00031282, -0.00000116, 0.00000000],
+        [-6.27342353, -0.00031122, 0.00019064, 0.00031278, -0.00000116, 0.00000000],
+        [-6.27342361, -0.00031119, 0.00019062, 0.00031275, -0.00000116, 0.00000000],
+        [-6.27342368, -0.00031116, 0.00019060, 0.00031272, -0.00000116, 0.00000000],
+        [-6.27342376, -0.00031113, 0.00019058, 0.00031269, -0.00000116, 0.00000000],
+        [-6.27342383, -0.00031110, 0.00019057, 0.00031266, -0.00000116, 0.00000000],
+        [-6.27342391, -0.00031107, 0.00019055, 0.00031263, -0.00000116, 0.00000000],
+        [-6.27342398, -0.00031104, 0.00019053, 0.00031260, -0.00000116, 0.00000000],
+        [-6.27342406, -0.00031101, 0.00019051, 0.00031256, -0.00000116, 0.00000000],
+        [-6.27342413, -0.00031097, 0.00019049, 0.00031253, -0.00000116, 0.00000000],
+        [-6.27342421, -0.00031094, 0.00019047, 0.00031250, -0.00000116, 0.00000000],
+        [-6.27342428, -0.00031091, 0.00019045, 0.00031247, -0.00000116, 0.00000000],
+        [-6.27342436, -0.00031088, 0.00019043, 0.00031244, -0.00000116, 0.00000000],
+        [-6.27342443, -0.00031085, 0.00019041, 0.00031241, -0.00000116, 0.00000000],
+        [-6.27342451, -0.00031082, 0.00019039, 0.00031238, -0.00000116, 0.00000000],
+        [-6.27342458, -0.00031079, 0.00019037, 0.00031235, -0.00000116, 0.00000000],
+        [-6.27342466, -0.00031076, 0.00019035, 0.00031231, -0.00000116, 0.00000000],
+        [-6.27342473, -0.00031072, 0.00019034, 0.00031228, -0.00000116, 0.00000000],
+        [-6.27342480, -0.00031069, 0.00019032, 0.00031225, -0.00000116, 0.00000000],
+        [-6.27342488, -0.00031066, 0.00019030, 0.00031222, -0.00000116, 0.00000000],
+        [-6.27342495, -0.00031063, 0.00019028, 0.00031219, -0.00000116, 0.00000000],
+        [-6.27342503, -0.00031060, 0.00019026, 0.00031216, -0.00000116, 0.00000000],
+        [-6.27342510, -0.00031057, 0.00019024, 0.00031213, -0.00000116, 0.00000000],
+        [-6.27342518, -0.00031054, 0.00019022, 0.00031209, -0.00000116, 0.00000000],
+        [-6.27342525, -0.00031051, 0.00019020, 0.00031206, -0.00000116, 0.00000000],
+        [-6.27342533, -0.00031047, 0.00019018, 0.00031203, -0.00000116, 0.00000000],
+        [-6.27342540, -0.00031044, 0.00019016, 0.00031200, -0.00000116, 0.00000000],
+        [-6.27342548, -0.00031041, 0.00019014, 0.00031197, -0.00000116, 0.00000000],
+        [-6.27342555, -0.00031038, 0.00019013, 0.00031194, -0.00000116, 0.00000000],
+        [-6.27342563, -0.00031035, 0.00019011, 0.00031191, -0.00000116, 0.00000000],
+        [-6.27342570, -0.00031032, 0.00019009, 0.00031188, -0.00000116, 0.00000000],
+        [-6.27342577, -0.00031029, 0.00019007, 0.00031184, -0.00000116, 0.00000000],
+        [-6.27342585, -0.00031026, 0.00019005, 0.00031181, -0.00000116, 0.00000000],
+        [-6.27342592, -0.00031023, 0.00019003, 0.00031178, -0.00000116, 0.00000000],
+        [-6.27342600, -0.00031019, 0.00019001, 0.00031175, -0.00000116, 0.00000000],
+        [-6.27342607, -0.00031016, 0.00018999, 0.00031172, -0.00000116, 0.00000000],
+        [-6.27342615, -0.00031013, 0.00018997, 0.00031169, -0.00000116, 0.00000000],
+        [-6.27342622, -0.00031010, 0.00018995, 0.00031166, -0.00000116, 0.00000000],
+        [-6.27342630, -0.00031007, 0.00018993, 0.00031163, -0.00000116, 0.00000000],
+        [-6.27342637, -0.00031004, 0.00018992, 0.00031159, -0.00000116, 0.00000000],
+        [-6.27342644, -0.00031001, 0.00018990, 0.00031156, -0.00000116, 0.00000000],
+        [-6.27342652, -0.00030998, 0.00018988, 0.00031153, -0.00000116, 0.00000000],
+        [-6.27342659, -0.00030995, 0.00018986, 0.00031150, -0.00000116, 0.00000000],
+        [-6.27342667, -0.00030992, 0.00018984, 0.00031147, -0.00000116, 0.00000000],
+        [-6.27342674, -0.00030988, 0.00018982, 0.00031144, -0.00000116, 0.00000000],
+        [-6.27342682, -0.00030985, 0.00018980, 0.00031141, -0.00000116, 0.00000000],
+        [-6.27342689, -0.00030982, 0.00018978, 0.00031138, -0.00000116, 0.00000000],
+        [-6.27342696, -0.00030979, 0.00018976, 0.00031134, -0.00000116, 0.00000000],
+        [-6.27342704, -0.00030976, 0.00018974, 0.00031131, -0.00000116, 0.00000000],
+        [-6.27342711, -0.00030973, 0.00018973, 0.00031128, -0.00000116, 0.00000000],
+        [-6.27342719, -0.00030970, 0.00018971, 0.00031125, -0.00000116, 0.00000000],
+        [-6.27342726, -0.00030967, 0.00018969, 0.00031122, -0.00000116, 0.00000000],
+        [-6.27342733, -0.00030964, 0.00018967, 0.00031119, -0.00000116, 0.00000000],
+        [-6.27342741, -0.00030961, 0.00018965, 0.00031116, -0.00000116, 0.00000000],
+        [-6.27342748, -0.00030957, 0.00018963, 0.00031113, -0.00000116, 0.00000000],
+        [-6.27342756, -0.00030954, 0.00018961, 0.00031110, -0.00000116, 0.00000000],
+        [-6.27342763, -0.00030951, 0.00018959, 0.00031106, -0.00000116, 0.00000000],
+        [-6.27342771, -0.00030948, 0.00018957, 0.00031103, -0.00000116, 0.00000000],
+        [-6.27342778, -0.00030945, 0.00018956, 0.00031100, -0.00000116, 0.00000000]
+    ])
+
+    # Cut off series at maxdeg
+    love_numbers = np.delete(love_numbers, range(maxdeg + 1, len(love_numbers)), axis=0)
+
+    # Retrieve right type
+    if type == 'loadingverticaldisplacement':
+        series = love_numbers[:, 0]
+    elif type == 'loadinggravitationalpotential':
+        series = love_numbers[:, 1]
+    elif type == 'loadinghorizontaldisplacement':
+        series = love_numbers[:, 2]
+    elif type == 'tidalverticaldisplacement':
+        series = love_numbers[:, 3]
+    elif type == 'tidalgravitationalpotential':
+        series = love_numbers[:, 4]
+    elif type == 'tidalhorizontaldisplacement':
+        series = love_numbers[:, 5]
+    else:
+        raise Exception('love_numbers error message: unknown type: {}'.format(type))
+
+    #choose degree 1 term for CF reference system
+    if frame == 'CM':
+        pass
+    elif frame == 'CF': #from Blewitt, 2003, JGR
+        if type == 'loadingverticaldisplacement':
+            series[1] = -0.269
+        elif type == 'loadinggravitationalpotential':
+            series[1] = 0.021
+        elif type == 'loadinghorizontaldisplacement':
+            series[1] = 0.134
+    else:
+        raise Exception('love_numbers error message: unknown reference frame: {}'.format(frame))
+
+    return series
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/love_numbers.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/love_numbers.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/love_numbers.m	(revision 27955)
@@ -0,0 +1,10076 @@
+function series=love_numbers(varargin)
+%LOVE_NUMBERS: provide love numbers 
+%	retrieved from: http://www.srosat.com/iag-jsg/loveNb.php 
+%	in a chosen reference frame 
+%  
+%	Usage: 
+%	series = love_numbers('type','loadingverticaldisplacement','referenceframe','CM','maxdeg',1001) 
+% 
+%	- type = one of 'loadingverticaldisplacement', 'loadinggravitationalpotential', 'loadinghorizontaldisplacement',  ...
+%                    'tidalverticaldisplacement', 'tidalgravitationalpotential', 'tidalhorizontaldisplacement'
+%	- reference_frame = one of 'CM' (default) and 'CF'.
+%   - maxdeg = default 1001
+%
+%	Example:  
+%	h=love_number('type','loadingverticaldisplacement','referenceframe','CM','maxdeg',maxdeg);
+%	k=love_number('type','loadinggravitationalpotential','referenceframe','CM','maxdeg',maxdeg);
+%	l=love_number('type','loadinghorizontaldisplacement','referenceframe','CM','maxdeg',maxdeg);
+%	th=love_number('type','tidalverticaldisplacement','referenceframe','CM','maxdeg',maxdeg);
+%	tk=love_number('type','tidalgravitationalpotential','referenceframe','CM','maxdeg',maxdeg);
+%	tl=love_number('type','tidalhorizontaldisplacement','referenceframe','CM','maxdeg',maxdeg);
+
+%recover options: 
+options=pairoptions(varargin{:});
+type=getfieldvalue(options,'type');
+frame=getfieldvalue(options,'referenceframe','CM');
+maxdeg=getfieldvalue(options,'maxdeg',1000);
+
+if(maxdeg>10000),
+	error('PREM love numbers computed only for deg < 10,000. Request lower maxdeg' );
+end
+
+if ~( strcmpi(type,'loadingverticaldisplacement') | strcmpi(type,'loadinggravitationalpotential') | strcmpi(type,'loadinghorizontaldisplacement') ...
+		| strcmpi(type,'tidalverticaldisplacement') | strcmpi(type,'tidalgravitationalpotential') | strcmpi(type,'tidalhorizontaldisplacement')), 
+	error('type should be one of ''loadingverticaldisplacement'', ''loadinggravitationalpotential'', ''loadinghorizontaldisplacement'',''tidalverticaldisplacement'', ''tidalgravitationalpotential'', ''tidalhorizontaldisplacement''');
+end
+
+	love_numbers=[...
+     0           0          0          0          0          0          0 
+	-1.28740059	-1.00000000	-0.89858519 1.28740059 0.42519882 0.89858519 0.00000000
+	-1.00025365 -0.30922675 0.02060926 1.69102690 0.46358648 0.67016399 0.61829668;
+	-1.06243501 -0.19927948 0.06801636 1.86315553 0.55741597 0.73270416 0.56270589;
+	-1.06779588 -0.13649834 0.05667027 1.93129754 0.63672498 0.80683140 0.51132745;
+	-1.10365923 -0.10736896 0.04401221 1.99629027 0.68737906 0.84861883 0.48642259;
+	-1.16440348 -0.09295485 0.03638747 2.07144863 0.72031283 0.87065768 0.47898268;
+	-1.23634156 -0.08469861 0.03202759 2.15164295 0.74355796 0.88327380 0.47955214;
+	-1.31140380 -0.07921412 0.02937593 2.23218968 0.76126493 0.89140995 0.48323250;
+	-1.38582399 -0.07513541 0.02762338 2.31068858 0.77552290 0.89724121 0.48795424;
+	-1.45807465 -0.07187005 0.02638627 2.38620460 0.78744212 0.90174369 0.49291061;
+	-1.52763314 -0.06913154 0.02547640 2.45850160 0.79766475 0.90539206 0.49779422;
+	-1.59437866 -0.06676258 0.02479080 2.52761607 0.80659635 0.90844662 0.50248477;
+	-1.65833071 -0.06466619 0.02426511 2.59366452 0.81451271 0.91106870 0.50693175;
+	-1.71954820 -0.06277732 0.02385464 2.65677088 0.82161167 0.91336804 0.51111243;
+	-1.77809640 -0.06105001 0.02352654 2.71704639 0.82804049 0.91542346 0.51501712;
+	-1.83403970 -0.05945081 0.02325609 2.77458889 0.83391153 0.91729309 0.51864363;
+	-1.88744242 -0.05795502 0.02302469 2.82948740 0.83931209 0.91902029 0.52199490;
+	-1.93837115 -0.05654418 0.02281843 2.88182697 0.84431095 0.92063739 0.52507761;
+	-1.98689666 -0.05520447 0.02262706 2.93169219 0.84896295 0.92216847 0.52790108;
+	-2.03309477 -0.05392545 0.02244322 2.97916932 0.85331225 0.92363132 0.53047654;
+	-2.07704643 -0.05269926 0.02226173 3.02434717 0.85739480 0.92503902 0.53281639;
+	-2.11883714 -0.05151988 0.02207909 3.06731726 0.86124014 0.92640103 0.53493369;
+	-2.15855611 -0.05038274 0.02189307 3.10817337 0.86487276 0.92772419 0.53684176;
+	-2.19629514 -0.04928430 0.02170238 3.14701084 0.86831322 0.92901331 0.53855386;
+	-2.23214747 -0.04822179 0.02150643 3.18392568 0.87157886 0.93027178 0.54008294;
+	-2.26620674 -0.04719301 0.02130509 3.21901373 0.87468453 0.93150190 0.54144148;
+	-2.29856595 -0.04619619 0.02109858 3.25236976 0.87764301 0.93270523 0.54264140;
+	-2.32931659 -0.04522983 0.02088735 3.28408675 0.88046543 0.93388282 0.54369397;
+	-2.35854794 -0.04429270 0.02067197 3.31425524 0.88316156 0.93503533 0.54460979;
+	-2.38634650 -0.04338368 0.02045310 3.34296281 0.88574004 0.93616321 0.54539877;
+	-2.41279547 -0.04250179 0.02023142 3.37029367 0.88820859 0.93726678 0.54607015;
+	-2.43797451 -0.04164613 0.02000761 3.39632839 0.89057416 0.93834626 0.54663248;
+	-2.46195951 -0.04081583 0.01978231 3.42114367 0.89284301 0.93940185 0.54709369;
+	-2.48482241 -0.04001011 0.01955614 3.44481230 0.89502085 0.94043375 0.54746112;
+	-2.50663126 -0.03922817 0.01932966 3.46740309 0.89711291 0.94144217 0.54774153;
+	-2.52745016 -0.03846928 0.01910337 3.48898088 0.89912397 0.94242735 0.54794114;
+	-2.54733938 -0.03773269 0.01887774 3.50960670 0.90105847 0.94338957 0.54806571;
+	-2.56635547 -0.03701769 0.01865317 3.52933779 0.90292050 0.94432915 0.54812051;
+	-2.58455138 -0.03632358 0.01843000 3.54822780 0.90471386 0.94524642 0.54811044;
+	-2.60197665 -0.03564968 0.01820854 3.56632697 0.90644209 0.94614178 0.54803997;
+	-2.61867756 -0.03499532 0.01798905 3.58368224 0.90810850 0.94701563 0.54791326;
+	-2.63469733 -0.03435985 0.01777176 3.60033748 0.90971616 0.94786840 0.54773413;
+	-2.65007629 -0.03374263 0.01755683 3.61633367 0.91126798 0.94870054 0.54750610;
+	-2.66485208 -0.03314303 0.01734443 3.63170905 0.91276665 0.94951253 0.54723245;
+	-2.67905981 -0.03256047 0.01713468 3.64649934 0.91421471 0.95030485 0.54691620;
+	-2.69273222 -0.03199435 0.01692767 3.66073787 0.91561457 0.95107798 0.54656015;
+	-2.70589990 -0.03144411 0.01672347 3.67445580 0.91696845 0.95183242 0.54616691;
+	-2.71859139 -0.03090919 0.01652215 3.68768220 0.91827849 0.95256866 0.54573889;
+	-2.73083334 -0.03038907 0.01632374 3.70044427 0.91954667 0.95328719 0.54527835;
+	-2.74265068 -0.02988323 0.01612826 3.71276745 0.92077487 0.95398851 0.54478739;
+	-2.75406669 -0.02939118 0.01593573 3.72467551 0.92196486 0.95467309 0.54426797;
+	-2.76510320 -0.02891245 0.01574615 3.73619076 0.92311833 0.95534141 0.54372191;
+	-2.77578063 -0.02844656 0.01555950 3.74733406 0.92423685 0.95599393 0.54315095;
+	-2.78611812 -0.02799309 0.01537578 3.75812503 0.92532192 0.95663113 0.54255669;
+	-2.79613364 -0.02755161 0.01519496 3.76858203 0.92637496 0.95725343 0.54194065;
+	-2.80584405 -0.02712170 0.01501701 3.77872235 0.92739730 0.95786128 0.54130424;
+	-2.81526521 -0.02670298 0.01484191 3.78856223 0.92839022 0.95845511 0.54064880;
+	-2.82441204 -0.02629506 0.01466961 3.79811697 0.92935491 0.95903532 0.53997561;
+	-2.83329857 -0.02589759 0.01450009 3.80740098 0.93029251 0.95960232 0.53928586;
+	-2.84193804 -0.02551021 0.01433329 3.81642782 0.93120412 0.96015649 0.53858067;
+	-2.85034293 -0.02513260 0.01416919 3.82521033 0.93209074 0.96069821 0.53786112;
+	-2.85852503 -0.02476443 0.01400773 3.83376061 0.93295337 0.96122784 0.53712821;
+	-2.86649548 -0.02440538 0.01384888 3.84209010 0.93379291 0.96174574 0.53638291;
+	-2.87426481 -0.02405518 0.01369258 3.85020963 0.93461026 0.96225224 0.53562612;
+	-2.88184299 -0.02371352 0.01353880 3.85812947 0.93540625 0.96274768 0.53485873;
+	-2.88923945 -0.02338014 0.01338749 3.86585931 0.93618168 0.96323236 0.53408154;
+	-2.89646316 -0.02305478 0.01323861 3.87340838 0.93693730 0.96370661 0.53329534;
+	-2.90352261 -0.02273718 0.01309211 3.88078542 0.93767383 0.96417071 0.53250089;
+	-2.91042585 -0.02242710 0.01294795 3.88799874 0.93839197 0.96462494 0.53169888;
+	-2.91718054 -0.02212431 0.01280609 3.89505623 0.93909236 0.96506960 0.53089002;
+	-2.92379397 -0.02182859 0.01266648 3.90196538 0.93977564 0.96550493 0.53007493;
+	-2.93027306 -0.02153971 0.01252908 3.90873334 0.94044240 0.96593120 0.52925424;
+	-2.93662439 -0.02125748 0.01239386 3.91536691 0.94109322 0.96634866 0.52842854;
+	-2.94285425 -0.02098169 0.01226077 3.92187256 0.94172863 0.96675754 0.52759839;
+	-2.94896860 -0.02071215 0.01212977 3.92825645 0.94234915 0.96715808 0.52676434;
+	-2.95497314 -0.02044868 0.01200082 3.93452446 0.94295529 0.96755050 0.52592690;
+	-2.96087331 -0.02019110 0.01187388 3.94068220 0.94354752 0.96793501 0.52508656;
+	-2.96667427 -0.01993924 0.01174893 3.94673503 0.94412630 0.96831183 0.52424380;
+	-2.97238097 -0.01969293 0.01162591 3.95268804 0.94469206 0.96868116 0.52339906;
+	-2.97799813 -0.01945201 0.01150481 3.95854612 0.94524521 0.96904318 0.52255277;
+	-2.98353025 -0.01921634 0.01138557 3.96431391 0.94578617 0.96939809 0.52170535;
+	-2.98898162 -0.01898576 0.01126817 3.96999586 0.94631531 0.96974607 0.52085719;
+	-2.99435636 -0.01876014 0.01115257 3.97559622 0.94683300 0.97008729 0.52000868;
+	-2.99965838 -0.01853932 0.01103875 3.98111905 0.94733959 0.97042193 0.51916016;
+	-3.00489143 -0.01832319 0.01092666 3.98656824 0.94783543 0.97075015 0.51831198;
+	-3.01005909 -0.01811161 0.01081628 3.99194748 0.94832084 0.97107211 0.51746448;
+	-3.01516479 -0.01790446 0.01070757 3.99726033 0.94879613 0.97138796 0.51661796;
+	-3.02021180 -0.01770162 0.01060052 4.00251017 0.94926160 0.97169786 0.51577273;
+	-3.02520323 -0.01750298 0.01049508 4.00770025 0.94971755 0.97200194 0.51492908;
+	-3.03014209 -0.01730842 0.01039123 4.01283367 0.95016424 0.97230035 0.51408727;
+	-3.03503122 -0.01711783 0.01028894 4.01791339 0.95060195 0.97259323 0.51324758;
+	-3.03987336 -0.01693111 0.01018819 4.02294225 0.95103094 0.97288070 0.51241024;
+	-3.04467112 -0.01674816 0.01008894 4.02792295 0.95145145 0.97316290 0.51157550;
+	-3.04942699 -0.01656889 0.00999117 4.03285810 0.95186373 0.97343995 0.51074358;
+	-3.05414335 -0.01639319 0.00989485 4.03775017 0.95226799 0.97371196 0.50991471;
+	-3.05882250 -0.01622097 0.00979997 4.04260153 0.95266447 0.97397906 0.50908908;
+	-3.06346660 -0.01605215 0.00970649 4.04741445 0.95305338 0.97424136 0.50826689;
+	-3.06807773 -0.01588664 0.00961439 4.05219109 0.95343492 0.97449897 0.50744832;
+	-3.07265789 -0.01572436 0.00952364 4.05693353 0.95380929 0.97475200 0.50663356;
+	-3.07720897 -0.01556522 0.00943423 4.06164375 0.95417670 0.97500055 0.50582277;
+	-3.08173279 -0.01540916 0.00934613 4.06632364 0.95453731 0.97524472 0.50501611;
+	-3.08623109 -0.01525608 0.00925931 4.07097501 0.95489131 0.97548461 0.50421372;
+	-3.09070551 -0.01510592 0.00917376 4.07559959 0.95523888 0.97572032 0.50341576;
+	-3.09515765 -0.01495861 0.00908946 4.08019904 0.95558018 0.97595193 0.50262236;
+	-3.09958899 -0.01481408 0.00900637 4.08477492 0.95591537 0.97617955 0.50183364;
+	-3.10400100 -0.01467225 0.00892449 4.08932875 0.95624461 0.97640325 0.50104973;
+	-3.10839504 -0.01453308 0.00884379 4.09386196 0.95656806 0.97662313 0.50027073;
+	-3.11277241 -0.01439648 0.00876425 4.09837593 0.95688585 0.97683927 0.49949676;
+	-3.11713438 -0.01426240 0.00868586 4.10287198 0.95719812 0.97705174 0.49872791;
+	-3.12148213 -0.01413079 0.00860858 4.10735134 0.95750503 0.97726063 0.49796429;
+	-3.12581680 -0.01400157 0.00853241 4.11181522 0.95780669 0.97746601 0.49720597;
+	-3.13013947 -0.01387471 0.00845733 4.11626476 0.95810324 0.97766796 0.49645304;
+	-3.13445117 -0.01375013 0.00838331 4.12070104 0.95839480 0.97786656 0.49570558;
+	-3.13875289 -0.01362779 0.00831034 4.12512510 0.95868150 0.97806186 0.49496366;
+	-3.14304556 -0.01350764 0.00823841 4.12953792 0.95896344 0.97825395 0.49422734;
+	-3.14733008 -0.01338963 0.00816748 4.13394045 0.95924075 0.97844289 0.49349669;
+	-3.15160728 -0.01327370 0.00809756 4.13833358 0.95951352 0.97862874 0.49277177;
+	-3.15587797 -0.01315981 0.00802862 4.14271816 0.95978188 0.97881157 0.49205262;
+	-3.16014293 -0.01304792 0.00796064 4.14709501 0.96004592 0.97899144 0.49133930;
+	-3.16440288 -0.01293797 0.00789361 4.15146491 0.96030574 0.97916842 0.49063185;
+	-3.16865852 -0.01282993 0.00782751 4.15582858 0.96056144 0.97934256 0.48993030;
+	-3.17291049 -0.01272375 0.00776233 4.16018673 0.96081312 0.97951392 0.48923471;
+	-3.17715942 -0.01261940 0.00769805 4.16454003 0.96106086 0.97968255 0.48854509;
+	-3.18140591 -0.01251682 0.00763466 4.16888910 0.96130476 0.97984852 0.48786148;
+	-3.18565052 -0.01241598 0.00757215 4.17323454 0.96154490 0.98001187 0.48718390;
+	-3.18989378 -0.01231685 0.00751049 4.17757693 0.96178137 0.98017266 0.48651237;
+	-3.19413619 -0.01221938 0.00744968 4.18191681 0.96201424 0.98033094 0.48584692;
+	-3.19837823 -0.01212354 0.00738970 4.18625469 0.96224360 0.98048676 0.48518756;
+	-3.20262035 -0.01202930 0.00733053 4.19059105 0.96246952 0.98064017 0.48453431;
+	-3.20686298 -0.01193661 0.00727217 4.19492637 0.96269208 0.98079121 0.48388717;
+	-3.21110653 -0.01184546 0.00721461 4.19926107 0.96291135 0.98093994 0.48324615;
+	-3.21535137 -0.01175579 0.00715782 4.20359557 0.96312741 0.98108639 0.48261126;
+	-3.21959786 -0.01166759 0.00710179 4.20793027 0.96334031 0.98123062 0.48198250;
+	-3.22384634 -0.01158082 0.00704652 4.21226552 0.96355014 0.98137266 0.48135988;
+	-3.22809714 -0.01149545 0.00699199 4.21660169 0.96375694 0.98151256 0.48074338;
+	-3.23235055 -0.01141146 0.00693819 4.22093909 0.96396080 0.98165035 0.48013301;
+	-3.23660685 -0.01132880 0.00688511 4.22527805 0.96416176 0.98178609 0.47952876;
+	-3.24086631 -0.01124746 0.00683273 4.22961885 0.96435989 0.98191980 0.47893063;
+	-3.24512918 -0.01116741 0.00678105 4.23396177 0.96455525 0.98205153 0.47833860;
+	-3.24939569 -0.01108862 0.00673005 4.23830707 0.96474789 0.98218132 0.47775267;
+	-3.25366606 -0.01101107 0.00667973 4.24265499 0.96493787 0.98230920 0.47717282;
+	-3.25794050 -0.01093473 0.00663007 4.24700577 0.96512525 0.98243520 0.47659903;
+	-3.26221918 -0.01085957 0.00658106 4.25135961 0.96531007 0.98255937 0.47603130;
+	-3.26650230 -0.01078557 0.00653269 4.25571672 0.96549239 0.98268174 0.47546960;
+	-3.27079000 -0.01071272 0.00648495 4.26007729 0.96567225 0.98280233 0.47491391;
+	-3.27508246 -0.01064097 0.00643784 4.26444149 0.96584971 0.98292119 0.47436422;
+	-3.27937980 -0.01057032 0.00639134 4.26880948 0.96602482 0.98303834 0.47382051;
+	-3.28368216 -0.01050074 0.00634544 4.27318141 0.96619761 0.98315382 0.47328275;
+	-3.28798965 -0.01043222 0.00630013 4.27755743 0.96636814 0.98326765 0.47275091;
+	-3.29230239 -0.01036472 0.00625541 4.28193767 0.96653645 0.98337988 0.47222499;
+	-3.29662047 -0.01029823 0.00621126 4.28632224 0.96670258 0.98349051 0.47170494;
+	-3.30094399 -0.01023273 0.00616768 4.29071126 0.96686657 0.98359960 0.47119074;
+	-3.30527303 -0.01016819 0.00612465 4.29510483 0.96702847 0.98370715 0.47068237;
+	-3.30960766 -0.01010461 0.00608218 4.29950304 0.96718831 0.98381321 0.47017979;
+	-3.31394795 -0.01004197 0.00604024 4.30390598 0.96734614 0.98391779 0.46968299;
+	-3.31829395 -0.00998024 0.00599883 4.30831372 0.96750198 0.98402093 0.46919192;
+	-3.32264573 -0.00991940 0.00595795 4.31272633 0.96765588 0.98412265 0.46870656;
+	-3.32700331 -0.00985945 0.00591759 4.31714387 0.96780788 0.98422297 0.46822687;
+	-3.33136675 -0.00980035 0.00587773 4.32156640 0.96795801 0.98432191 0.46775284;
+	-3.33573607 -0.00974211 0.00583838 4.32599396 0.96810630 0.98441951 0.46728441;
+	-3.34011130 -0.00968470 0.00579951 4.33042660 0.96825278 0.98451579 0.46682157;
+	-3.34449246 -0.00962810 0.00576113 4.33486436 0.96839750 0.98461077 0.46636427;
+	-3.34887956 -0.00957230 0.00572323 4.33930726 0.96854048 0.98470447 0.46591248;
+	-3.35327261 -0.00951729 0.00568581 4.34375533 0.96868175 0.98479691 0.46546617;
+	-3.35767163 -0.00946304 0.00564884 4.34820858 0.96882135 0.98488812 0.46502531;
+	-3.36207660 -0.00940956 0.00561233 4.35266704 0.96895930 0.98497811 0.46458986;
+	-3.36648753 -0.00935681 0.00557627 4.35713071 0.96909563 0.98506691 0.46415977;
+	-3.37090440 -0.00930480 0.00554066 4.36159960 0.96923037 0.98515454 0.46373503;
+	-3.37532721 -0.00925350 0.00550548 4.36607371 0.96936355 0.98524102 0.46331559;
+	-3.37975593 -0.00920290 0.00547073 4.37055303 0.96949520 0.98532636 0.46290141;
+	-3.38419056 -0.00915300 0.00543641 4.37503756 0.96962535 0.98541059 0.46249246;
+	-3.38863105 -0.00910377 0.00540251 4.37952729 0.96975401 0.98549373 0.46208870;
+	-3.39307740 -0.00905520 0.00536901 4.38402220 0.96988122 0.98557578 0.46169009;
+	-3.39752956 -0.00900729 0.00533593 4.38852227 0.97000699 0.98565678 0.46129660;
+	-3.40198751 -0.00896002 0.00530324 4.39302749 0.97013137 0.98573674 0.46090819;
+	-3.40645121 -0.00891338 0.00527095 4.39753783 0.97025435 0.98581567 0.46052482;
+	-3.41092063 -0.00886736 0.00523904 4.40205326 0.97037598 0.98589360 0.46014645;
+	-3.41539571 -0.00882195 0.00520752 4.40657376 0.97049628 0.98597053 0.45977305;
+	-3.41987643 -0.00877713 0.00517637 4.41109929 0.97061526 0.98604649 0.45940458;
+	-3.42436272 -0.00873290 0.00514560 4.41562982 0.97073295 0.98612149 0.45904100;
+	-3.42885456 -0.00868925 0.00511520 4.42016531 0.97084936 0.98619555 0.45868227;
+	-3.43335188 -0.00864617 0.00508515 4.42470571 0.97096453 0.98626868 0.45832835;
+	-3.43785464 -0.00860364 0.00505546 4.42925100 0.97107847 0.98634090 0.45797921;
+	-3.44236278 -0.00856166 0.00502613 4.43380112 0.97119120 0.98641222 0.45763480;
+	-3.44687625 -0.00852021 0.00499714 4.43835604 0.97130274 0.98648265 0.45729509;
+	-3.45139500 -0.00847930 0.00496849 4.44291570 0.97141311 0.98655221 0.45696005;
+	-3.45591895 -0.00843890 0.00494017 4.44748005 0.97152233 0.98662092 0.45662962;
+	-3.46044807 -0.00839902 0.00491219 4.45204905 0.97163042 0.98668879 0.45630378;
+	-3.46498227 -0.00835964 0.00488454 4.45662264 0.97173739 0.98675583 0.45598249;
+	-3.46952151 -0.00832075 0.00485721 4.46120077 0.97184326 0.98682205 0.45566570;
+	-3.47406572 -0.00828234 0.00483019 4.46578338 0.97194805 0.98688746 0.45535338;
+	-3.47861484 -0.00824442 0.00480349 4.47037042 0.97205179 0.98695209 0.45504550;
+	-3.48316880 -0.00820696 0.00477710 4.47496184 0.97215447 0.98701594 0.45474201;
+	-3.48772753 -0.00816996 0.00475102 4.47955756 0.97225612 0.98707902 0.45444287;
+	-3.49229097 -0.00813342 0.00472523 4.48415755 0.97235676 0.98714134 0.45414806;
+	-3.49685904 -0.00809733 0.00469975 4.48876172 0.97245640 0.98720293 0.45385753;
+	-3.50143169 -0.00806167 0.00467455 4.49337002 0.97255506 0.98726378 0.45357123;
+	-3.50600884 -0.00802644 0.00464964 4.49798240 0.97265275 0.98732391 0.45328915;
+	-3.51059042 -0.00799164 0.00462502 4.50259878 0.97274949 0.98738333 0.45301123;
+	-3.51517637 -0.00795726 0.00460068 4.50721911 0.97284528 0.98744206 0.45273745;
+	-3.51976660 -0.00792329 0.00457662 4.51184331 0.97294015 0.98750009 0.45246776;
+	-3.52436105 -0.00788972 0.00455283 4.51647133 0.97303411 0.98755745 0.45220214;
+	-3.52895964 -0.00785655 0.00452930 4.52110309 0.97312718 0.98761414 0.45194053;
+	-3.53356231 -0.00782377 0.00450605 4.52573854 0.97321936 0.98767018 0.45168291;
+	-3.53816898 -0.00779138 0.00448306 4.53037760 0.97331067 0.98772556 0.45142923;
+	-3.54277957 -0.00775937 0.00446032 4.53502021 0.97340111 0.98778031 0.45117947;
+	-3.54739402 -0.00772773 0.00443784 4.53966629 0.97349072 0.98783443 0.45093359;
+	-3.55201224 -0.00769645 0.00441562 4.54431579 0.97357949 0.98788793 0.45069155;
+	-3.55663417 -0.00766554 0.00439364 4.54896864 0.97366744 0.98794082 0.45045331;
+	-3.56125973 -0.00763498 0.00437190 4.55362475 0.97375458 0.98799311 0.45021885;
+	-3.56588885 -0.00760478 0.00435041 4.55828407 0.97384092 0.98804481 0.44998812;
+	-3.57052145 -0.00757491 0.00432916 4.56294653 0.97392648 0.98809593 0.44976109;
+	-3.57515745 -0.00754539 0.00430814 4.56761206 0.97401126 0.98814646 0.44953772;
+	-3.57979678 -0.00751620 0.00428736 4.57228058 0.97409528 0.98819644 0.44931799;
+	-3.58443937 -0.00748734 0.00426681 4.57695203 0.97417854 0.98824585 0.44910185;
+	-3.58908514 -0.00745880 0.00424648 4.58162633 0.97426107 0.98829472 0.44888928;
+	-3.59373401 -0.00743059 0.00422637 4.58630343 0.97434286 0.98834304 0.44868023;
+	-3.59838592 -0.00740268 0.00420649 4.59098323 0.97442393 0.98839083 0.44847468;
+	-3.60304078 -0.00737509 0.00418682 4.59566569 0.97450428 0.98843809 0.44827259;
+	-3.60769852 -0.00734780 0.00416737 4.60035072 0.97458394 0.98848483 0.44807392;
+	-3.61235907 -0.00732081 0.00414813 4.60503826 0.97466290 0.98853106 0.44787865;
+	-3.61702235 -0.00729411 0.00412910 4.60972823 0.97474118 0.98857678 0.44768674;
+	-3.62168828 -0.00726771 0.00411028 4.61442057 0.97481879 0.98862201 0.44749816;
+	-3.62635680 -0.00724159 0.00409166 4.61911521 0.97489573 0.98866675 0.44731288;
+	-3.63102782 -0.00721575 0.00407325 4.62381207 0.97497202 0.98871100 0.44713086;
+	-3.63570128 -0.00719020 0.00405503 4.62851108 0.97504766 0.98875478 0.44695207;
+	-3.64037709 -0.00716491 0.00403700 4.63321218 0.97512267 0.98879808 0.44677649;
+	-3.64505519 -0.00713990 0.00401918 4.63791530 0.97519704 0.98884093 0.44660407;
+	-3.64973550 -0.00711515 0.00400154 4.64262036 0.97527080 0.98888331 0.44643478;
+	-3.65441795 -0.00709066 0.00398409 4.64732729 0.97534394 0.98892525 0.44626861;
+	-3.65910247 -0.00706643 0.00396683 4.65203604 0.97541648 0.98896674 0.44610551;
+	-3.66378898 -0.00704246 0.00394975 4.65674652 0.97548842 0.98900779 0.44594545;
+	-3.66847740 -0.00701873 0.00393286 4.66145867 0.97555978 0.98904841 0.44578841;
+	-3.67316767 -0.00699526 0.00391614 4.66617242 0.97563055 0.98908860 0.44563435;
+	-3.67785972 -0.00697202 0.00389960 4.67088770 0.97570076 0.98912838 0.44548324;
+	-3.68255347 -0.00694903 0.00388324 4.67560444 0.97577039 0.98916773 0.44533506;
+	-3.68724885 -0.00692627 0.00386705 4.68032258 0.97583947 0.98920668 0.44518977;
+	-3.69194579 -0.00690374 0.00385103 4.68504204 0.97590800 0.98924523 0.44504735;
+	-3.69664421 -0.00688145 0.00383518 4.68976277 0.97597598 0.98928338 0.44490776;
+	-3.70134406 -0.00685938 0.00381949 4.69448468 0.97604342 0.98932113 0.44477099;
+	-3.70604525 -0.00683753 0.00380397 4.69920772 0.97611034 0.98935850 0.44463698;
+	-3.71074772 -0.00681590 0.00378861 4.70393182 0.97617673 0.98939548 0.44450573;
+	-3.71545140 -0.00679449 0.00377342 4.70865691 0.97624261 0.98943209 0.44437720;
+	-3.72015622 -0.00677330 0.00375838 4.71338292 0.97630797 0.98946833 0.44425137;
+	-3.72486211 -0.00675231 0.00374349 4.71810980 0.97637283 0.98950420 0.44412820;
+	-3.72956899 -0.00673153 0.00372877 4.72283746 0.97643720 0.98953970 0.44400767;
+	-3.73427682 -0.00671096 0.00371419 4.72756585 0.97650107 0.98957485 0.44388975;
+	-3.73898550 -0.00669059 0.00369976 4.73229491 0.97656446 0.98960965 0.44377441;
+	-3.74369498 -0.00667042 0.00368549 4.73702457 0.97662737 0.98964409 0.44366163;
+	-3.74840519 -0.00665044 0.00367136 4.74175475 0.97668980 0.98967820 0.44355139;
+	-3.75311607 -0.00663066 0.00365738 4.74648541 0.97675177 0.98971196 0.44344364;
+	-3.75782754 -0.00661107 0.00364354 4.75121648 0.97681327 0.98974540 0.44333838;
+	-3.76253955 -0.00659167 0.00362984 4.75594788 0.97687432 0.98977850 0.44323557;
+	-3.76725202 -0.00657245 0.00361628 4.76067957 0.97693492 0.98981127 0.44313518;
+	-3.77196489 -0.00655341 0.00360286 4.76541147 0.97699508 0.98984372 0.44303720;
+	-3.77667809 -0.00653456 0.00358958 4.77014353 0.97705479 0.98987586 0.44294159;
+	-3.78139156 -0.00651589 0.00357643 4.77487568 0.97711407 0.98990768 0.44284833;
+	-3.78610525 -0.00649739 0.00356342 4.77960786 0.97717292 0.98993920 0.44275740;
+	-3.79081907 -0.00647906 0.00355053 4.78434001 0.97723134 0.98997040 0.44266877;
+	-3.79553298 -0.00646091 0.00353778 4.78907207 0.97728935 0.99000131 0.44258241;
+	-3.80024690 -0.00644292 0.00352516 4.79380398 0.97734694 0.99003192 0.44249831;
+	-3.80496078 -0.00642510 0.00351266 4.79853567 0.97740413 0.99006223 0.44241644;
+	-3.80967455 -0.00640745 0.00350029 4.80326710 0.97746090 0.99009226 0.44233677;
+	-3.81438815 -0.00638996 0.00348804 4.80799819 0.97751728 0.99012200 0.44225928;
+	-3.81910152 -0.00637262 0.00347592 4.81272889 0.97757326 0.99015145 0.44218395;
+	-3.82381460 -0.00635545 0.00346392 4.81745915 0.97762886 0.99018063 0.44211076;
+	-3.82852732 -0.00633843 0.00345204 4.82218889 0.97768406 0.99020953 0.44203968;
+	-3.83323964 -0.00632157 0.00344027 4.82691808 0.97773889 0.99023816 0.44197068;
+	-3.83795149 -0.00630485 0.00342863 4.83164664 0.97779333 0.99026652 0.44190376;
+	-3.84266280 -0.00628829 0.00341709 4.83637452 0.97784741 0.99029462 0.44183887;
+	-3.84737353 -0.00627187 0.00340568 4.84110166 0.97790111 0.99032245 0.44177601;
+	-3.85208361 -0.00625560 0.00339437 4.84582801 0.97795446 0.99035003 0.44171515;
+	-3.85679299 -0.00623948 0.00338318 4.85055351 0.97800744 0.99037735 0.44165627;
+	-3.86150160 -0.00622349 0.00337210 4.85527811 0.97806006 0.99040441 0.44159934;
+	-3.86620939 -0.00620765 0.00336112 4.86000175 0.97811233 0.99043123 0.44154435;
+	-3.87091631 -0.00619194 0.00335026 4.86472437 0.97816426 0.99045780 0.44149127;
+	-3.87562229 -0.00617637 0.00333950 4.86944592 0.97821584 0.99048413 0.44144009;
+	-3.88032729 -0.00616094 0.00332885 4.87416635 0.97826708 0.99051022 0.44139078;
+	-3.88503124 -0.00614564 0.00331830 4.87888561 0.97831798 0.99053607 0.44134332;
+	-3.88973410 -0.00613047 0.00330785 4.88360363 0.97836855 0.99056168 0.44129769;
+	-3.89443580 -0.00611543 0.00329750 4.88832037 0.97841879 0.99058707 0.44125387;
+	-3.89913629 -0.00610051 0.00328726 4.89303577 0.97846870 0.99061223 0.44121185;
+	-3.90383552 -0.00608573 0.00327711 4.89774979 0.97851829 0.99063716 0.44117159;
+	-3.90853343 -0.00607107 0.00326707 4.90246236 0.97856756 0.99066187 0.44113309;
+	-3.91322998 -0.00605653 0.00325712 4.90717345 0.97861652 0.99068635 0.44109632;
+	-3.91792511 -0.00604212 0.00324726 4.91188299 0.97866516 0.99071062 0.44106126;
+	-3.92261876 -0.00602782 0.00323750 4.91659094 0.97871350 0.99073468 0.44102790;
+	-3.92731089 -0.00601364 0.00322784 4.92129724 0.97876153 0.99075852 0.44099621;
+	-3.93200144 -0.00599958 0.00321826 4.92600186 0.97880926 0.99078215 0.44096618;
+	-3.93669036 -0.00598564 0.00320878 4.93070472 0.97885669 0.99080558 0.44093779;
+	-3.94137761 -0.00597181 0.00319939 4.93540580 0.97890383 0.99082880 0.44091101;
+	-3.94606313 -0.00595809 0.00319009 4.94010504 0.97895067 0.99085182 0.44088584;
+	-3.95074687 -0.00594449 0.00318088 4.94480238 0.97899722 0.99087463 0.44086225;
+	-3.95542878 -0.00593099 0.00317175 4.94949779 0.97904349 0.99089725 0.44084022;
+	-3.96010882 -0.00591761 0.00316271 4.95419121 0.97908947 0.99091968 0.44081975;
+	-3.96478693 -0.00590433 0.00315376 4.95888260 0.97913517 0.99094191 0.44080080;
+	-3.96946306 -0.00589116 0.00314489 4.96357191 0.97918060 0.99096395 0.44078336;
+	-3.97413718 -0.00587809 0.00313611 4.96825909 0.97922575 0.99098581 0.44076742;
+	-3.97880922 -0.00586512 0.00312740 4.97294410 0.97927063 0.99100747 0.44075296;
+	-3.98347915 -0.00585226 0.00311878 4.97762689 0.97931524 0.99102895 0.44073996;
+	-3.98814692 -0.00583950 0.00311024 4.98230742 0.97935959 0.99105026 0.44072841;
+	-3.99281247 -0.00582684 0.00310178 4.98698564 0.97940367 0.99107138 0.44071828;
+	-3.99747577 -0.00581428 0.00309340 4.99166150 0.97944749 0.99109232 0.44070956;
+	-4.00213677 -0.00580181 0.00308510 4.99633496 0.97949105 0.99111309 0.44070224;
+	-4.00679542 -0.00578944 0.00307688 5.00100598 0.97953436 0.99113368 0.44069630;
+	-4.01145168 -0.00577717 0.00306873 5.00567451 0.97957741 0.99115410 0.44069173;
+	-4.01610551 -0.00576499 0.00306065 5.01034052 0.97962021 0.99117436 0.44068850;
+	-4.02075685 -0.00575290 0.00305266 5.01500395 0.97966277 0.99119444 0.44068660;
+	-4.02540567 -0.00574091 0.00304473 5.01966476 0.97970508 0.99121436 0.44068602;
+	-4.03005191 -0.00572900 0.00303688 5.02432291 0.97974715 0.99123412 0.44068674;
+	-4.03469555 -0.00571719 0.00302910 5.02897837 0.97978897 0.99125371 0.44068875;
+	-4.03933654 -0.00570546 0.00302139 5.03363108 0.97983056 0.99127315 0.44069203;
+	-4.04397482 -0.00569382 0.00301375 5.03828100 0.97987192 0.99129242 0.44069657;
+	-4.04861037 -0.00568227 0.00300619 5.04292810 0.97991304 0.99131154 0.44070234;
+	-4.05324314 -0.00567080 0.00299869 5.04757234 0.97995393 0.99133051 0.44070935;
+	-4.05787308 -0.00565942 0.00299126 5.05221367 0.97999459 0.99134932 0.44071756;
+	-4.06250017 -0.00564812 0.00298390 5.05685205 0.98003502 0.99136799 0.44072698;
+	-4.06712435 -0.00563690 0.00297660 5.06148744 0.98007523 0.99138650 0.44073757;
+	-4.07174558 -0.00562577 0.00296937 5.06611981 0.98011522 0.99140486 0.44074934;
+	-4.07636383 -0.00561471 0.00296221 5.07074912 0.98015498 0.99142308 0.44076227;
+	-4.08097906 -0.00560374 0.00295511 5.07537532 0.98019453 0.99144116 0.44077633;
+	-4.08559122 -0.00559284 0.00294807 5.07999838 0.98023386 0.99145909 0.44079153;
+	-4.09020028 -0.00558202 0.00294110 5.08461826 0.98027298 0.99147688 0.44080784;
+	-4.09480620 -0.00557128 0.00293419 5.08923492 0.98031189 0.99149453 0.44082525;
+	-4.09940894 -0.00556061 0.00292734 5.09384833 0.98035059 0.99151204 0.44084375;
+	-4.10400846 -0.00555002 0.00292056 5.09845844 0.98038908 0.99152942 0.44086333;
+	-4.10860473 -0.00553950 0.00291383 5.10306522 0.98042736 0.99154666 0.44088396;
+	-4.11319770 -0.00552906 0.00290717 5.10766864 0.98046544 0.99156377 0.44090565;
+	-4.11778734 -0.00551869 0.00290056 5.11226865 0.98050332 0.99158075 0.44092838;
+	-4.12237362 -0.00550839 0.00289401 5.11686523 0.98054100 0.99159760 0.44095213;
+	-4.12695649 -0.00549816 0.00288752 5.12145833 0.98057848 0.99161431 0.44097689;
+	-4.13153592 -0.00548801 0.00288109 5.12604792 0.98061577 0.99163090 0.44100265;
+	-4.13611188 -0.00547792 0.00287471 5.13063396 0.98065286 0.99164737 0.44102940;
+	-4.14068433 -0.00546790 0.00286839 5.13521643 0.98068975 0.99166371 0.44105712;
+	-4.14525323 -0.00545795 0.00286213 5.13979528 0.98072646 0.99167992 0.44108581;
+	-4.14981854 -0.00544806 0.00285592 5.14437048 0.98076298 0.99169602 0.44111544;
+	-4.15438025 -0.00543824 0.00284976 5.14894200 0.98079931 0.99171199 0.44114602;
+	-4.15893830 -0.00542849 0.00284366 5.15350981 0.98083545 0.99172785 0.44117753;
+	-4.16349267 -0.00541880 0.00283761 5.15807386 0.98087141 0.99174358 0.44120995;
+	-4.16804332 -0.00540918 0.00283162 5.16263414 0.98090719 0.99175920 0.44124328;
+	-4.17259021 -0.00539962 0.00282567 5.16719060 0.98094278 0.99177471 0.44127750;
+	-4.17713333 -0.00539012 0.00281978 5.17174321 0.98097820 0.99179010 0.44131260;
+	-4.18167262 -0.00538069 0.00281394 5.17629194 0.98101344 0.99180537 0.44134857;
+	-4.18620807 -0.00537131 0.00280815 5.18083676 0.98104851 0.99182054 0.44138541;
+	-4.19073963 -0.00536200 0.00280241 5.18537763 0.98108340 0.99183560 0.44142309;
+	-4.19526728 -0.00535274 0.00279671 5.18991453 0.98111811 0.99185054 0.44146162;
+	-4.19979098 -0.00534355 0.00279107 5.19444743 0.98115266 0.99186538 0.44150097;
+	-4.20431070 -0.00533441 0.00278548 5.19897629 0.98118704 0.99188011 0.44154114;
+	-4.20882641 -0.00532534 0.00277993 5.20350108 0.98122125 0.99189474 0.44158211;
+	-4.21333809 -0.00531632 0.00277443 5.20802177 0.98125529 0.99190926 0.44162389;
+	-4.21784569 -0.00530735 0.00276897 5.21253834 0.98128916 0.99192367 0.44166645;
+	-4.22234919 -0.00529845 0.00276357 5.21705075 0.98132288 0.99193799 0.44170979;
+	-4.22684856 -0.00528959 0.00275820 5.22155897 0.98135643 0.99195220 0.44175389;
+	-4.23134377 -0.00528080 0.00275289 5.22606297 0.98138982 0.99196631 0.44179875;
+	-4.23583479 -0.00527206 0.00274762 5.23056273 0.98142305 0.99198033 0.44184436;
+	-4.24032159 -0.00526337 0.00274239 5.23505822 0.98145612 0.99199424 0.44189070;
+	-4.24480413 -0.00525473 0.00273720 5.23954940 0.98148904 0.99200806 0.44193777;
+	-4.24928241 -0.00524615 0.00273206 5.24403626 0.98152180 0.99202179 0.44198557;
+	-4.25375637 -0.00523762 0.00272697 5.24851875 0.98155440 0.99203541 0.44203406;
+	-4.25822600 -0.00522914 0.00272191 5.25299686 0.98158685 0.99204895 0.44208326;
+	-4.26269127 -0.00522071 0.00271690 5.25747055 0.98161916 0.99206239 0.44213315;
+	-4.26715214 -0.00521233 0.00271193 5.26193981 0.98165131 0.99207574 0.44218372;
+	-4.27160860 -0.00520401 0.00270700 5.26640459 0.98168331 0.99208900 0.44223496;
+	-4.27606061 -0.00519573 0.00270211 5.27086489 0.98171516 0.99210217 0.44228686;
+	-4.28050816 -0.00518750 0.00269726 5.27532066 0.98174687 0.99211524 0.44233942;
+	-4.28495120 -0.00517932 0.00269245 5.27977188 0.98177844 0.99212824 0.44239262;
+	-4.28938971 -0.00517119 0.00268767 5.28421853 0.98180986 0.99214114 0.44244646;
+	-4.29382368 -0.00516310 0.00268294 5.28866058 0.98184113 0.99215396 0.44250093;
+	-4.29825306 -0.00515506 0.00267825 5.29309800 0.98187227 0.99216669 0.44255601;
+	-4.30267785 -0.00514707 0.00267359 5.29753078 0.98190326 0.99217934 0.44261171;
+	-4.30709800 -0.00513912 0.00266898 5.30195888 0.98193412 0.99219190 0.44266801;
+	-4.31151350 -0.00513122 0.00266440 5.30638227 0.98196483 0.99220438 0.44272490;
+	-4.31592431 -0.00512337 0.00265985 5.31080095 0.98199542 0.99221678 0.44278238;
+	-4.32033043 -0.00511555 0.00265535 5.31521487 0.98202586 0.99222910 0.44284044;
+	-4.32473181 -0.00510779 0.00265088 5.31962403 0.98205617 0.99224134 0.44289907;
+	-4.32912844 -0.00510006 0.00264644 5.32402838 0.98208635 0.99225350 0.44295825;
+	-4.33352030 -0.00509238 0.00264204 5.32842792 0.98211639 0.99226558 0.44301800;
+	-4.33790735 -0.00508474 0.00263768 5.33282261 0.98214630 0.99227758 0.44307829;
+	-4.34228957 -0.00507715 0.00263335 5.33721243 0.98217609 0.99228950 0.44313911;
+	-4.34666695 -0.00506959 0.00262906 5.34159736 0.98220574 0.99230135 0.44320047;
+	-4.35103946 -0.00506208 0.00262479 5.34597738 0.98223526 0.99231313 0.44326235;
+	-4.35540706 -0.00505461 0.00262057 5.35035246 0.98226466 0.99232483 0.44332475;
+	-4.35976976 -0.00504718 0.00261637 5.35472258 0.98229393 0.99233645 0.44338766;
+	-4.36412751 -0.00503978 0.00261221 5.35908772 0.98232308 0.99234800 0.44345107;
+	-4.36848029 -0.00503243 0.00260808 5.36344786 0.98235210 0.99235949 0.44351497;
+	-4.37282810 -0.00502512 0.00260399 5.36780298 0.98238100 0.99237089 0.44357936;
+	-4.37717089 -0.00501785 0.00259992 5.37215304 0.98240977 0.99238223 0.44364422;
+	-4.38150866 -0.00501061 0.00259589 5.37649804 0.98243843 0.99239350 0.44370956;
+	-4.38584137 -0.00500341 0.00259189 5.38083796 0.98246696 0.99240470 0.44377537;
+	-4.39016901 -0.00499626 0.00258792 5.38517276 0.98249538 0.99241583 0.44384163;
+	-4.39449156 -0.00498913 0.00258397 5.38950243 0.98252368 0.99242689 0.44390835;
+	-4.39880900 -0.00498205 0.00258006 5.39382695 0.98255186 0.99243789 0.44397551;
+	-4.40312130 -0.00497500 0.00257618 5.39814630 0.98257992 0.99244881 0.44404311;
+	-4.40742845 -0.00496799 0.00257233 5.40246046 0.98260787 0.99245968 0.44411114;
+	-4.41173042 -0.00496101 0.00256851 5.40676940 0.98263570 0.99247047 0.44417960;
+	-4.41602719 -0.00495407 0.00256472 5.41107312 0.98266342 0.99248121 0.44424847;
+	-4.42031875 -0.00494717 0.00256096 5.41537158 0.98269102 0.99249187 0.44431776;
+	-4.42460508 -0.00494030 0.00255722 5.41966478 0.98271852 0.99250248 0.44438745;
+	-4.42888615 -0.00493346 0.00255351 5.42395268 0.98274590 0.99251302 0.44445755;
+	-4.43316194 -0.00492666 0.00254984 5.42823528 0.98277317 0.99252350 0.44452803;
+	-4.43743244 -0.00491989 0.00254618 5.43251255 0.98280033 0.99253392 0.44459891;
+	-4.44169763 -0.00491316 0.00254256 5.43678447 0.98282738 0.99254428 0.44467016;
+	-4.44595749 -0.00490646 0.00253896 5.44105103 0.98285433 0.99255458 0.44474179;
+	-4.45021200 -0.00489979 0.00253539 5.44531221 0.98288117 0.99256482 0.44481379;
+	-4.45446115 -0.00489316 0.00253185 5.44956799 0.98290790 0.99257500 0.44488616;
+	-4.45870490 -0.00488655 0.00252833 5.45381835 0.98293452 0.99258512 0.44495888;
+	-4.46294326 -0.00487998 0.00252484 5.45806327 0.98296105 0.99259518 0.44503195;
+	-4.46717619 -0.00487344 0.00252137 5.46230275 0.98298746 0.99260519 0.44510537;
+	-4.47140368 -0.00486693 0.00251793 5.46653675 0.98301378 0.99261514 0.44517912;
+	-4.47562571 -0.00486046 0.00251451 5.47076526 0.98303999 0.99262503 0.44525322;
+	-4.47984227 -0.00485401 0.00251112 5.47498827 0.98306610 0.99263487 0.44532764;
+	-4.48405334 -0.00484759 0.00250775 5.47920575 0.98309211 0.99264465 0.44540238;
+	-4.48825891 -0.00484121 0.00250441 5.48341770 0.98311802 0.99265438 0.44547744;
+	-4.49245894 -0.00483485 0.00250109 5.48762409 0.98314383 0.99266406 0.44555282;
+	-4.49665344 -0.00482852 0.00249780 5.49182492 0.98316954 0.99267368 0.44562850;
+	-4.50084238 -0.00482223 0.00249453 5.49602015 0.98319515 0.99268325 0.44570449;
+	-4.50502575 -0.00481596 0.00249128 5.50020979 0.98322067 0.99269277 0.44578077;
+	-4.50920352 -0.00480972 0.00248805 5.50439380 0.98324609 0.99270223 0.44585734;
+	-4.51337569 -0.00480350 0.00248485 5.50857219 0.98327141 0.99271164 0.44593420;
+	-4.51754224 -0.00479732 0.00248167 5.51274492 0.98329664 0.99272101 0.44601134;
+	-4.52170315 -0.00479117 0.00247851 5.51691199 0.98332177 0.99273032 0.44608876;
+	-4.52585842 -0.00478504 0.00247538 5.52107338 0.98334681 0.99273958 0.44616645;
+	-4.53000801 -0.00477894 0.00247227 5.52522907 0.98337176 0.99274880 0.44624440;
+	-4.53415192 -0.00477286 0.00246917 5.52937906 0.98339661 0.99275796 0.44632262;
+	-4.53829014 -0.00476682 0.00246610 5.53352332 0.98342137 0.99276708 0.44640109;
+	-4.54242264 -0.00476080 0.00246306 5.53766184 0.98344605 0.99277615 0.44647982;
+	-4.54654942 -0.00475480 0.00246003 5.54179461 0.98347063 0.99278517 0.44655879;
+	-4.55067046 -0.00474884 0.00245702 5.54592162 0.98349512 0.99279414 0.44663801;
+	-4.55478574 -0.00474290 0.00245404 5.55004285 0.98351952 0.99280307 0.44671746;
+	-4.55889526 -0.00473698 0.00245107 5.55415828 0.98354383 0.99281195 0.44679715;
+	-4.56299899 -0.00473109 0.00244812 5.55826790 0.98356806 0.99282079 0.44687706;
+	-4.56709693 -0.00472522 0.00244520 5.56237170 0.98359219 0.99282958 0.44695720;
+	-4.57118906 -0.00471938 0.00244229 5.56646967 0.98361625 0.99283832 0.44703756;
+	-4.57527536 -0.00471357 0.00243940 5.57056179 0.98364021 0.99284703 0.44711814;
+	-4.57935583 -0.00470778 0.00243654 5.57464806 0.98366409 0.99285569 0.44719893;
+	-4.58343045 -0.00470201 0.00243369 5.57872844 0.98368788 0.99286430 0.44727992;
+	-4.58749921 -0.00469627 0.00243086 5.58280295 0.98371159 0.99287287 0.44736112;
+	-4.59156210 -0.00469055 0.00242805 5.58687155 0.98373522 0.99288140 0.44744252;
+	-4.59561910 -0.00468485 0.00242526 5.59093424 0.98375876 0.99288989 0.44752411;
+	-4.59967020 -0.00467918 0.00242248 5.59499102 0.98378222 0.99289833 0.44760589;
+	-4.60371538 -0.00467353 0.00241973 5.59904185 0.98380560 0.99290674 0.44768785;
+	-4.60775465 -0.00466791 0.00241699 5.60308674 0.98382890 0.99291510 0.44777000;
+	-4.61178797 -0.00466230 0.00241427 5.60712567 0.98385211 0.99292343 0.44785233;
+	-4.61581536 -0.00465672 0.00241157 5.61115863 0.98387525 0.99293171 0.44793483;
+	-4.61983678 -0.00465116 0.00240889 5.61518561 0.98389830 0.99293995 0.44801750;
+	-4.62385223 -0.00464563 0.00240622 5.61920660 0.98392128 0.99294815 0.44810034;
+	-4.62786170 -0.00464011 0.00240357 5.62322158 0.98394418 0.99295632 0.44818334;
+	-4.63186517 -0.00463462 0.00240093 5.62723055 0.98396700 0.99296444 0.44826650;
+	-4.63586264 -0.00462915 0.00239832 5.63123349 0.98398974 0.99297253 0.44834982;
+	-4.63985410 -0.00462370 0.00239572 5.63523040 0.98401240 0.99298058 0.44843328;
+	-4.64383953 -0.00461827 0.00239313 5.63922126 0.98403499 0.99298859 0.44851690;
+	-4.64781892 -0.00461286 0.00239057 5.64320606 0.98405750 0.99299657 0.44860066;
+	-4.65179227 -0.00460748 0.00238802 5.64718479 0.98407993 0.99300451 0.44868455;
+	-4.65575956 -0.00460211 0.00238548 5.65115744 0.98410229 0.99301241 0.44876859;
+	-4.65972078 -0.00459677 0.00238296 5.65512401 0.98412458 0.99302027 0.44885276;
+	-4.66367592 -0.00459144 0.00238046 5.65908448 0.98414679 0.99302810 0.44893706;
+	-4.66762497 -0.00458614 0.00237797 5.66303884 0.98416893 0.99303590 0.44902148;
+	-4.67156793 -0.00458085 0.00237549 5.66698708 0.98419099 0.99304366 0.44910603;
+	-4.67550478 -0.00457558 0.00237303 5.67092920 0.98421298 0.99305138 0.44919070;
+	-4.67943552 -0.00457034 0.00237059 5.67486518 0.98423490 0.99305907 0.44927549;
+	-4.68336012 -0.00456511 0.00236816 5.67879501 0.98425675 0.99306673 0.44936038;
+	-4.68727860 -0.00455990 0.00236575 5.68271869 0.98427852 0.99307435 0.44944539;
+	-4.69119092 -0.00455472 0.00236335 5.68663621 0.98430023 0.99308194 0.44953051;
+	-4.69509710 -0.00454955 0.00236096 5.69054755 0.98432186 0.99308949 0.44961572;
+	-4.69899711 -0.00454440 0.00235859 5.69445271 0.98434343 0.99309701 0.44970104;
+	-4.70289095 -0.00453926 0.00235623 5.69835168 0.98436492 0.99310450 0.44978646;
+	-4.70677861 -0.00453415 0.00235389 5.70224446 0.98438635 0.99311196 0.44987197;
+	-4.71066008 -0.00452905 0.00235156 5.70613103 0.98440771 0.99311939 0.44995757;
+	-4.71453535 -0.00452398 0.00234924 5.71001138 0.98442899 0.99312678 0.45004326;
+	-4.71840442 -0.00451892 0.00234694 5.71388551 0.98445021 0.99313414 0.45012903;
+	-4.72226728 -0.00451387 0.00234465 5.71775341 0.98447137 0.99314147 0.45021488;
+	-4.72612392 -0.00450885 0.00234237 5.72161507 0.98449245 0.99314877 0.45030082;
+	-4.72997433 -0.00450384 0.00234011 5.72547048 0.98451347 0.99315604 0.45038683;
+	-4.73381850 -0.00449885 0.00233786 5.72931964 0.98453443 0.99316328 0.45047291;
+	-4.73765643 -0.00449388 0.00233562 5.73316254 0.98455532 0.99317049 0.45055907;
+	-4.74148810 -0.00448893 0.00233340 5.73699917 0.98457614 0.99317767 0.45064529;
+	-4.74531352 -0.00448399 0.00233119 5.74082953 0.98459690 0.99318483 0.45073158;
+	-4.74913267 -0.00447907 0.00232899 5.74465360 0.98461759 0.99319195 0.45081792;
+	-4.75294555 -0.00447416 0.00232680 5.74847138 0.98463822 0.99319904 0.45090433;
+	-4.75675214 -0.00446927 0.00232462 5.75228287 0.98465878 0.99320610 0.45099080;
+	-4.76055246 -0.00446440 0.00232246 5.75608805 0.98467929 0.99321314 0.45107732;
+	-4.76434647 -0.00445955 0.00232031 5.75988693 0.98469973 0.99322015 0.45116389;
+	-4.76813419 -0.00445471 0.00231816 5.76367948 0.98472010 0.99322713 0.45125051;
+	-4.77191560 -0.00444988 0.00231604 5.76746572 0.98474042 0.99323408 0.45133717;
+	-4.77569070 -0.00444507 0.00231392 5.77124562 0.98476067 0.99324101 0.45142388;
+	-4.77945947 -0.00444028 0.00231181 5.77501919 0.98478086 0.99324791 0.45151063;
+	-4.78322192 -0.00443550 0.00230972 5.77878642 0.98480099 0.99325478 0.45159742;
+	-4.78697804 -0.00443074 0.00230763 5.78254730 0.98482106 0.99326162 0.45168425;
+	-4.79072783 -0.00442600 0.00230556 5.78630183 0.98484107 0.99326844 0.45177111;
+	-4.79447127 -0.00442127 0.00230350 5.79005000 0.98486102 0.99327523 0.45185800;
+	-4.79820836 -0.00441655 0.00230145 5.79379181 0.98488091 0.99328200 0.45194492;
+	-4.80193909 -0.00441185 0.00229941 5.79752724 0.98490074 0.99328874 0.45203187;
+	-4.80566347 -0.00440716 0.00229738 5.80125630 0.98492051 0.99329546 0.45211884;
+	-4.80938148 -0.00440249 0.00229536 5.80497899 0.98494022 0.99330215 0.45220583;
+	-4.81309312 -0.00439783 0.00229335 5.80869528 0.98495988 0.99330881 0.45229285;
+	-4.81679838 -0.00439319 0.00229135 5.81240519 0.98497947 0.99331546 0.45237988;
+	-4.82049726 -0.00438856 0.00228937 5.81610870 0.98499901 0.99332207 0.45246692;
+	-4.82418976 -0.00438395 0.00228739 5.81980581 0.98501850 0.99332866 0.45255398;
+	-4.82787587 -0.00437935 0.00228542 5.82349652 0.98503792 0.99333523 0.45264105;
+	-4.83155558 -0.00437476 0.00228346 5.82718082 0.98505729 0.99334178 0.45272813;
+	-4.83522889 -0.00437019 0.00228151 5.83085870 0.98507660 0.99334830 0.45281521;
+	-4.83889580 -0.00436563 0.00227957 5.83453017 0.98509586 0.99335480 0.45290231;
+	-4.84255630 -0.00436109 0.00227764 5.83819521 0.98511506 0.99336127 0.45298940;
+	-4.84621038 -0.00435656 0.00227572 5.84185383 0.98513421 0.99336772 0.45307649;
+	-4.84985805 -0.00435204 0.00227381 5.84550601 0.98515330 0.99337415 0.45316358;
+	-4.85349930 -0.00434753 0.00227191 5.84915177 0.98517233 0.99338056 0.45325067;
+	-4.85713412 -0.00434304 0.00227002 5.85279108 0.98519132 0.99338694 0.45333775;
+	-4.86076252 -0.00433856 0.00226813 5.85642396 0.98521024 0.99339330 0.45342482;
+	-4.86438448 -0.00433410 0.00226626 5.86005038 0.98522912 0.99339964 0.45351189;
+	-4.86800001 -0.00432965 0.00226439 5.86367036 0.98524794 0.99340596 0.45359894;
+	-4.87160909 -0.00432521 0.00226253 5.86728389 0.98526671 0.99341226 0.45368598;
+	-4.87521174 -0.00432078 0.00226069 5.87089096 0.98528542 0.99341853 0.45377301;
+	-4.87880793 -0.00431637 0.00225885 5.87449157 0.98530409 0.99342479 0.45386001;
+	-4.88239768 -0.00431196 0.00225701 5.87808572 0.98532270 0.99343102 0.45394700;
+	-4.88598098 -0.00430758 0.00225519 5.88167340 0.98534126 0.99343723 0.45403397;
+	-4.88955781 -0.00430320 0.00225338 5.88525462 0.98535976 0.99344342 0.45412092;
+	-4.89312819 -0.00429883 0.00225157 5.88882936 0.98537822 0.99344960 0.45420784;
+	-4.89669211 -0.00429448 0.00224977 5.89239763 0.98539662 0.99345575 0.45429473;
+	-4.90024957 -0.00429014 0.00224798 5.89595942 0.98541498 0.99346188 0.45438160;
+	-4.90380055 -0.00428581 0.00224620 5.89951474 0.98543328 0.99346799 0.45446844;
+	-4.90734507 -0.00428150 0.00224442 5.90306357 0.98545154 0.99347408 0.45455524;
+	-4.91088312 -0.00427719 0.00224266 5.90660592 0.98546974 0.99348015 0.45464201;
+	-4.91441469 -0.00427290 0.00224090 5.91014179 0.98548790 0.99348620 0.45472875;
+	-4.91793978 -0.00426862 0.00223915 5.91367116 0.98550600 0.99349224 0.45481546;
+	-4.92145840 -0.00426435 0.00223740 5.91719405 0.98552406 0.99349825 0.45490212;
+	-4.92497053 -0.00426009 0.00223566 5.92071044 0.98554206 0.99350425 0.45498875;
+	-4.92847618 -0.00425584 0.00223394 5.92422034 0.98556002 0.99351022 0.45507533;
+	-4.93197535 -0.00425160 0.00223221 5.92772375 0.98557793 0.99351618 0.45516187;
+	-4.93546803 -0.00424738 0.00223050 5.93122065 0.98559579 0.99352212 0.45524837;
+	-4.93895423 -0.00424317 0.00222879 5.93471106 0.98561361 0.99352804 0.45533482;
+	-4.94243393 -0.00423896 0.00222709 5.93819497 0.98563138 0.99353395 0.45542123;
+	-4.94590714 -0.00423477 0.00222540 5.94167237 0.98564910 0.99353983 0.45550758;
+	-4.94937386 -0.00423059 0.00222371 5.94514327 0.98566677 0.99354570 0.45559389;
+	-4.95283409 -0.00422642 0.00222203 5.94860767 0.98568439 0.99355155 0.45568014;
+	-4.95628782 -0.00422226 0.00222036 5.95206556 0.98570197 0.99355738 0.45576634;
+	-4.95973505 -0.00421811 0.00221869 5.95551694 0.98571951 0.99356320 0.45585249;
+	-4.96317579 -0.00421397 0.00221703 5.95896181 0.98573699 0.99356900 0.45593858;
+	-4.96661002 -0.00420984 0.00221538 5.96240018 0.98575444 0.99357478 0.45602462;
+	-4.97003776 -0.00420573 0.00221373 5.96583204 0.98577183 0.99358054 0.45611059;
+	-4.97345900 -0.00420162 0.00221209 5.96925738 0.98578918 0.99358629 0.45619651;
+	-4.97687374 -0.00419752 0.00221046 5.97267622 0.98580649 0.99359202 0.45628236;
+	-4.98028197 -0.00419344 0.00220883 5.97608854 0.98582375 0.99359774 0.45636816;
+	-4.98368371 -0.00418936 0.00220721 5.97949435 0.98584096 0.99360343 0.45645388;
+	-4.98707894 -0.00418529 0.00220559 5.98289365 0.98585814 0.99360912 0.45653955;
+	-4.99046767 -0.00418123 0.00220398 5.98628643 0.98587526 0.99361478 0.45662514;
+	-4.99384989 -0.00417719 0.00220238 5.98967270 0.98589235 0.99362043 0.45671067;
+	-4.99722561 -0.00417315 0.00220078 5.99305246 0.98590939 0.99362607 0.45679613;
+	-5.00059483 -0.00416912 0.00219919 5.99642571 0.98592638 0.99363169 0.45688152;
+	-5.00395754 -0.00416511 0.00219761 5.99979244 0.98594334 0.99363729 0.45696684;
+	-5.00731375 -0.00416110 0.00219603 6.00315266 0.98596025 0.99364288 0.45705209;
+	-5.01066346 -0.00415710 0.00219445 6.00650636 0.98597712 0.99364845 0.45713726;
+	-5.01400667 -0.00415311 0.00219288 6.00985356 0.98599394 0.99365401 0.45722236;
+	-5.01734337 -0.00414913 0.00219132 6.01319424 0.98601072 0.99365955 0.45730738;
+	-5.02067356 -0.00414516 0.00218976 6.01652841 0.98602746 0.99366508 0.45739233;
+	-5.02399726 -0.00414120 0.00218821 6.01985606 0.98604416 0.99367059 0.45747719;
+	-5.02731445 -0.00413724 0.00218666 6.02317721 0.98606082 0.99367609 0.45756198;
+	-5.03062515 -0.00413330 0.00218512 6.02649184 0.98607744 0.99368157 0.45764669;
+	-5.03392934 -0.00412937 0.00218359 6.02979997 0.98609401 0.99368704 0.45773131;
+	-5.03722703 -0.00412544 0.00218206 6.03310159 0.98611054 0.99369250 0.45781585;
+	-5.04051822 -0.00412153 0.00218053 6.03639670 0.98612704 0.99369794 0.45790031;
+	-5.04380292 -0.00411762 0.00217901 6.03968530 0.98614349 0.99370337 0.45798469;
+	-5.04708112 -0.00411372 0.00217750 6.04296739 0.98615990 0.99370878 0.45806897;
+	-5.05035282 -0.00410983 0.00217599 6.04624299 0.98617627 0.99371418 0.45815318;
+	-5.05361802 -0.00410595 0.00217448 6.04951207 0.98619260 0.99371957 0.45823729;
+	-5.05687674 -0.00410208 0.00217298 6.05277466 0.98620889 0.99372494 0.45832131;
+	-5.06012896 -0.00409821 0.00217148 6.05603074 0.98622514 0.99373030 0.45840525;
+	-5.06337469 -0.00409436 0.00216999 6.05928033 0.98624135 0.99373565 0.45848909;
+	-5.06661393 -0.00409051 0.00216851 6.06252341 0.98625753 0.99374098 0.45857285;
+	-5.06984668 -0.00408668 0.00216703 6.06576000 0.98627366 0.99374630 0.45865651;
+	-5.07307294 -0.00408285 0.00216555 6.06899010 0.98628975 0.99375161 0.45874007;
+	-5.07629272 -0.00407902 0.00216408 6.07221370 0.98630581 0.99375690 0.45882355;
+	-5.07950602 -0.00407521 0.00216261 6.07543081 0.98632182 0.99376218 0.45890693;
+	-5.08271283 -0.00407141 0.00216115 6.07864143 0.98633780 0.99376745 0.45899021;
+	-5.08591317 -0.00406761 0.00215969 6.08184556 0.98635374 0.99377270 0.45907339;
+	-5.08910703 -0.00406382 0.00215823 6.08504321 0.98636965 0.99377795 0.45915648;
+	-5.09229441 -0.00406004 0.00215678 6.08823437 0.98638551 0.99378318 0.45923947;
+	-5.09547532 -0.00405627 0.00215534 6.09141905 0.98640134 0.99378840 0.45932235;
+	-5.09864975 -0.00405250 0.00215390 6.09459725 0.98641713 0.99379360 0.45940514;
+	-5.10181772 -0.00404874 0.00215246 6.09776897 0.98643288 0.99379880 0.45948783;
+	-5.10497922 -0.00404500 0.00215102 6.10093422 0.98644859 0.99380398 0.45957041;
+	-5.10813425 -0.00404125 0.00214960 6.10409300 0.98646427 0.99380915 0.45965289;
+	-5.11128282 -0.00403752 0.00214817 6.10724530 0.98647991 0.99381431 0.45973527;
+	-5.11442494 -0.00403379 0.00214675 6.11039114 0.98649552 0.99381946 0.45981755;
+	-5.11756059 -0.00403008 0.00214533 6.11353051 0.98651108 0.99382459 0.45989972;
+	-5.12068979 -0.00402637 0.00214392 6.11666343 0.98652662 0.99382971 0.45998178;
+	-5.12381254 -0.00402266 0.00214251 6.11978988 0.98654211 0.99383483 0.46006373;
+	-5.12692884 -0.00401897 0.00214110 6.12290987 0.98655757 0.99383993 0.46014558;
+	-5.13003869 -0.00401528 0.00213970 6.12602341 0.98657300 0.99384502 0.46022732;
+	-5.13314210 -0.00401160 0.00213831 6.12913050 0.98658838 0.99385010 0.46030896;
+	-5.13623906 -0.00400792 0.00213691 6.13223114 0.98660374 0.99385516 0.46039048;
+	-5.13932959 -0.00400426 0.00213552 6.13532533 0.98661906 0.99386022 0.46047189;
+	-5.14241368 -0.00400060 0.00213413 6.13841308 0.98663434 0.99386527 0.46055319;
+	-5.14549135 -0.00399695 0.00213275 6.14149440 0.98664959 0.99387030 0.46063438;
+	-5.14856258 -0.00399330 0.00213137 6.14456928 0.98666480 0.99387532 0.46071546;
+	-5.15162739 -0.00398967 0.00213000 6.14763772 0.98667998 0.99388034 0.46079643;
+	-5.15468577 -0.00398604 0.00212862 6.15069974 0.98669512 0.99388534 0.46087728;
+	-5.15773774 -0.00398241 0.00212725 6.15375533 0.98671023 0.99389033 0.46095802;
+	-5.16078329 -0.00397880 0.00212589 6.15680449 0.98672531 0.99389532 0.46103864;
+	-5.16382243 -0.00397519 0.00212453 6.15984724 0.98674035 0.99390029 0.46111915;
+	-5.16685516 -0.00397159 0.00212317 6.16288358 0.98675535 0.99390525 0.46119954;
+	-5.16988149 -0.00396799 0.00212181 6.16591350 0.98677033 0.99391020 0.46127982;
+	-5.17290141 -0.00396440 0.00212046 6.16893701 0.98678527 0.99391514 0.46135997;
+	-5.17591494 -0.00396082 0.00211911 6.17195412 0.98680017 0.99392007 0.46144001;
+	-5.17892208 -0.00395724 0.00211776 6.17496483 0.98681505 0.99392499 0.46151994;
+	-5.18192282 -0.00395368 0.00211642 6.17796914 0.98682989 0.99392990 0.46159974;
+	-5.18491718 -0.00395011 0.00211508 6.18096706 0.98684470 0.99393481 0.46167943;
+	-5.18790516 -0.00394656 0.00211374 6.18395860 0.98685947 0.99393970 0.46175899;
+	-5.19088675 -0.00394301 0.00211241 6.18694374 0.98687421 0.99394458 0.46183843;
+	-5.19386198 -0.00393947 0.00211108 6.18992251 0.98688892 0.99394945 0.46191776;
+	-5.19683083 -0.00393593 0.00210975 6.19289490 0.98690360 0.99395432 0.46199696;
+	-5.19979332 -0.00393241 0.00210843 6.19586092 0.98691824 0.99395917 0.46207604;
+	-5.20274945 -0.00392888 0.00210710 6.19882057 0.98693285 0.99396401 0.46215500;
+	-5.20569922 -0.00392537 0.00210578 6.20177385 0.98694743 0.99396885 0.46223383;
+	-5.20864264 -0.00392186 0.00210447 6.20472078 0.98696198 0.99397367 0.46231254;
+	-5.21157971 -0.00391835 0.00210315 6.20766135 0.98697650 0.99397849 0.46239113;
+	-5.21451043 -0.00391486 0.00210184 6.21059558 0.98699098 0.99398330 0.46246959;
+	-5.21743482 -0.00391137 0.00210054 6.21352345 0.98700544 0.99398810 0.46254793;
+	-5.22035287 -0.00390788 0.00209923 6.21644499 0.98701986 0.99399289 0.46262614;
+	-5.22326459 -0.00390440 0.00209793 6.21936019 0.98703425 0.99399767 0.46270423;
+	-5.22616999 -0.00390093 0.00209663 6.22226905 0.98704861 0.99400244 0.46278219;
+	-5.22906906 -0.00389747 0.00209533 6.22517159 0.98706294 0.99400720 0.46286003;
+	-5.23196182 -0.00389401 0.00209404 6.22806781 0.98707724 0.99401196 0.46293774;
+	-5.23484826 -0.00389055 0.00209274 6.23095771 0.98709151 0.99401670 0.46301532;
+	-5.23772840 -0.00388711 0.00209145 6.23384129 0.98710574 0.99402144 0.46309277;
+	-5.24060224 -0.00388366 0.00209017 6.23671857 0.98711995 0.99402617 0.46317009;
+	-5.24346978 -0.00388023 0.00208888 6.23958955 0.98713413 0.99403089 0.46324729;
+	-5.24633103 -0.00387680 0.00208760 6.24245423 0.98714827 0.99403560 0.46332436;
+	-5.24918599 -0.00387338 0.00208632 6.24531261 0.98716239 0.99404030 0.46340129;
+	-5.25203467 -0.00386996 0.00208504 6.24816471 0.98717648 0.99404500 0.46347810;
+	-5.25487707 -0.00386655 0.00208377 6.25101053 0.98719053 0.99404969 0.46355478;
+	-5.25771320 -0.00386314 0.00208250 6.25385007 0.98720456 0.99405436 0.46363133;
+	-5.26054307 -0.00385974 0.00208123 6.25668333 0.98721856 0.99405904 0.46370775;
+	-5.26336668 -0.00385634 0.00207996 6.25951033 0.98723253 0.99406370 0.46378403;
+	-5.26618402 -0.00385295 0.00207869 6.26233107 0.98724646 0.99406835 0.46386019;
+	-5.26899512 -0.00384957 0.00207743 6.26514555 0.98726037 0.99407300 0.46393621;
+	-5.27179998 -0.00384619 0.00207617 6.26795379 0.98727425 0.99407764 0.46401210;
+	-5.27459860 -0.00384282 0.00207491 6.27075577 0.98728810 0.99408227 0.46408786;
+	-5.27739098 -0.00383945 0.00207365 6.27355152 0.98730193 0.99408689 0.46416348;
+	-5.28017713 -0.00383609 0.00207240 6.27634104 0.98731572 0.99409151 0.46423898;
+	-5.28295706 -0.00383274 0.00207115 6.27912432 0.98732949 0.99409612 0.46431433;
+	-5.28573078 -0.00382939 0.00206989 6.28190139 0.98734322 0.99410072 0.46438956;
+	-5.28849828 -0.00382604 0.00206865 6.28467224 0.98735693 0.99410531 0.46446465;
+	-5.29125958 -0.00382271 0.00206740 6.28743687 0.98737061 0.99410989 0.46453961;
+	-5.29401468 -0.00381937 0.00206616 6.29019530 0.98738426 0.99411447 0.46461443;
+	-5.29676358 -0.00381604 0.00206491 6.29294754 0.98739789 0.99411904 0.46468912;
+	-5.29950630 -0.00381272 0.00206367 6.29569358 0.98741148 0.99412361 0.46476368;
+	-5.30224283 -0.00380940 0.00206243 6.29843343 0.98742505 0.99412816 0.46483809;
+	-5.30497319 -0.00380609 0.00206120 6.30116710 0.98743859 0.99413271 0.46491238;
+	-5.30769738 -0.00380279 0.00205996 6.30389459 0.98745210 0.99413725 0.46498652;
+	-5.31041540 -0.00379948 0.00205873 6.30661592 0.98746559 0.99414179 0.46506054;
+	-5.31312727 -0.00379619 0.00205750 6.30933108 0.98747905 0.99414631 0.46513441;
+	-5.31583299 -0.00379290 0.00205627 6.31204009 0.98749248 0.99415083 0.46520815;
+	-5.31853255 -0.00378961 0.00205504 6.31474294 0.98750588 0.99415535 0.46528175;
+	-5.32122598 -0.00378633 0.00205382 6.31743965 0.98751926 0.99415985 0.46535522;
+	-5.32391328 -0.00378306 0.00205259 6.32013023 0.98753261 0.99416435 0.46542855;
+	-5.32659445 -0.00377979 0.00205137 6.32281466 0.98754593 0.99416884 0.46550174;
+	-5.32926950 -0.00377652 0.00205015 6.32549298 0.98755923 0.99417333 0.46557479;
+	-5.33193843 -0.00377326 0.00204893 6.32816517 0.98757249 0.99417781 0.46564771;
+	-5.33460126 -0.00377000 0.00204772 6.33083125 0.98758574 0.99418228 0.46572049;
+	-5.33725798 -0.00376675 0.00204650 6.33349123 0.98759895 0.99418674 0.46579313;
+	-5.33990861 -0.00376351 0.00204529 6.33614511 0.98761214 0.99419120 0.46586563;
+	-5.34255316 -0.00376027 0.00204408 6.33879289 0.98762531 0.99419565 0.46593799;
+	-5.34519162 -0.00375703 0.00204287 6.34143458 0.98763844 0.99420010 0.46601022;
+	-5.34782400 -0.00375380 0.00204166 6.34407020 0.98765155 0.99420454 0.46608230;
+	-5.35045032 -0.00375058 0.00204045 6.34669974 0.98766464 0.99420897 0.46615425;
+	-5.35307057 -0.00374736 0.00203925 6.34932321 0.98767770 0.99421340 0.46622606;
+	-5.35568477 -0.00374414 0.00203804 6.35194063 0.98769073 0.99421781 0.46629773;
+	-5.35829292 -0.00374093 0.00203684 6.35455199 0.98770374 0.99422223 0.46636926;
+	-5.36089503 -0.00373773 0.00203564 6.35715730 0.98771672 0.99422663 0.46644065;
+	-5.36349110 -0.00373453 0.00203444 6.35975657 0.98772968 0.99423103 0.46651190;
+	-5.36608114 -0.00373133 0.00203324 6.36234981 0.98774261 0.99423543 0.46658301;
+	-5.36866517 -0.00372814 0.00203205 6.36493703 0.98775552 0.99423982 0.46665398;
+	-5.37124318 -0.00372495 0.00203085 6.36751823 0.98776840 0.99424420 0.46672482;
+	-5.37381518 -0.00372177 0.00202966 6.37009341 0.98778125 0.99424857 0.46679551;
+	-5.37638118 -0.00371859 0.00202847 6.37266259 0.98779408 0.99425294 0.46686606;
+	-5.37894119 -0.00371542 0.00202728 6.37522577 0.98780689 0.99425730 0.46693647;
+	-5.38149521 -0.00371225 0.00202609 6.37778296 0.98781967 0.99426166 0.46700674;
+	-5.38404325 -0.00370909 0.00202490 6.38033416 0.98783243 0.99426601 0.46707687;
+	-5.38658532 -0.00370593 0.00202371 6.38287939 0.98784516 0.99427036 0.46714686;
+	-5.38912142 -0.00370278 0.00202253 6.38541865 0.98785786 0.99427470 0.46721671;
+	-5.39165157 -0.00369963 0.00202134 6.38795194 0.98787055 0.99427903 0.46728642;
+	-5.39417576 -0.00369648 0.00202016 6.39047928 0.98788320 0.99428336 0.46735598;
+	-5.39669401 -0.00369334 0.00201898 6.39300067 0.98789584 0.99428768 0.46742541;
+	-5.39920633 -0.00369021 0.00201780 6.39551612 0.98790845 0.99429200 0.46749470;
+	-5.40171272 -0.00368707 0.00201662 6.39802564 0.98792103 0.99429631 0.46756384;
+	-5.40421318 -0.00368395 0.00201544 6.40052923 0.98793359 0.99430061 0.46763284;
+	-5.40670773 -0.00368082 0.00201427 6.40302690 0.98794613 0.99430491 0.46770170;
+	-5.40919637 -0.00367771 0.00201309 6.40551867 0.98795864 0.99430920 0.46777042;
+	-5.41167912 -0.00367459 0.00201192 6.40800452 0.98797113 0.99431349 0.46783900;
+	-5.41415597 -0.00367148 0.00201075 6.41048448 0.98798360 0.99431777 0.46790744;
+	-5.41662693 -0.00366838 0.00200957 6.41295855 0.98799604 0.99432205 0.46797574;
+	-5.41909202 -0.00366528 0.00200840 6.41542674 0.98800846 0.99432632 0.46804389;
+	-5.42155124 -0.00366218 0.00200724 6.41788906 0.98802085 0.99433058 0.46811190;
+	-5.42400460 -0.00365909 0.00200607 6.42034551 0.98803323 0.99433484 0.46817978;
+	-5.42645210 -0.00365600 0.00200490 6.42279610 0.98804557 0.99433910 0.46824751;
+	-5.42889376 -0.00365292 0.00200374 6.42524084 0.98805790 0.99434334 0.46831509;
+	-5.43132958 -0.00364984 0.00200257 6.42767973 0.98807020 0.99434759 0.46838254;
+	-5.43375956 -0.00364677 0.00200141 6.43011279 0.98808248 0.99435183 0.46844985;
+	-5.43618372 -0.00364370 0.00200024 6.43254002 0.98809474 0.99435606 0.46851701;
+	-5.43860207 -0.00364063 0.00199908 6.43496143 0.98810697 0.99436029 0.46858403;
+	-5.44101460 -0.00363757 0.00199792 6.43737703 0.98811918 0.99436451 0.46865091;
+	-5.44342134 -0.00363451 0.00199676 6.43978683 0.98813137 0.99436872 0.46871765;
+	-5.44582228 -0.00363146 0.00199561 6.44219082 0.98814353 0.99437294 0.46878424;
+	-5.44821744 -0.00362841 0.00199445 6.44458903 0.98815567 0.99437714 0.46885070;
+	-5.45060682 -0.00362536 0.00199329 6.44698145 0.98816779 0.99438134 0.46891701;
+	-5.45299043 -0.00362232 0.00199214 6.44936811 0.98817989 0.99438554 0.46898318;
+	-5.45536828 -0.00361929 0.00199098 6.45174899 0.98819196 0.99438973 0.46904921;
+	-5.45774037 -0.00361625 0.00198983 6.45412412 0.98820402 0.99439392 0.46911510;
+	-5.46010672 -0.00361323 0.00198868 6.45649350 0.98821605 0.99439810 0.46918084;
+	-5.46246734 -0.00361020 0.00198753 6.45885714 0.98822805 0.99440227 0.46924645;
+	-5.46482222 -0.00360718 0.00198638 6.46121504 0.98824004 0.99440644 0.46931191;
+	-5.46717138 -0.00360417 0.00198523 6.46356722 0.98825200 0.99441061 0.46937723;
+	-5.46951483 -0.00360115 0.00198408 6.46591367 0.98826395 0.99441477 0.46944241;
+	-5.47185257 -0.00359814 0.00198293 6.46825442 0.98827587 0.99441892 0.46950744;
+	-5.47418461 -0.00359514 0.00198178 6.47058947 0.98828776 0.99442308 0.46957234;
+	-5.47651097 -0.00359214 0.00198064 6.47291883 0.98829964 0.99442722 0.46963709;
+	-5.47883164 -0.00358914 0.00197949 6.47524250 0.98831150 0.99443136 0.46970170;
+	-5.48114664 -0.00358615 0.00197835 6.47756049 0.98832333 0.99443550 0.46976617;
+	-5.48345598 -0.00358316 0.00197721 6.47987281 0.98833514 0.99443963 0.46983050;
+	-5.48575966 -0.00358018 0.00197606 6.48217948 0.98834693 0.99444376 0.46989469;
+	-5.48805769 -0.00357720 0.00197492 6.48448049 0.98835870 0.99444788 0.46995873;
+	-5.49035007 -0.00357422 0.00197378 6.48677585 0.98837045 0.99445200 0.47002264;
+	-5.49263683 -0.00357125 0.00197264 6.48906558 0.98838217 0.99445611 0.47008640;
+	-5.49491797 -0.00356828 0.00197150 6.49134968 0.98839388 0.99446022 0.47015002;
+	-5.49719348 -0.00356532 0.00197036 6.49362817 0.98840556 0.99446432 0.47021350;
+	-5.49946339 -0.00356236 0.00196923 6.49590104 0.98841723 0.99446842 0.47027684;
+	-5.50172771 -0.00355940 0.00196809 6.49816831 0.98842887 0.99447251 0.47034004;
+	-5.50398643 -0.00355645 0.00196695 6.50042998 0.98844049 0.99447660 0.47040310;
+	-5.50623957 -0.00355350 0.00196582 6.50268607 0.98845209 0.99448068 0.47046602;
+	-5.50848713 -0.00355055 0.00196468 6.50493658 0.98846367 0.99448476 0.47052879;
+	-5.51072913 -0.00354761 0.00196355 6.50718152 0.98847523 0.99448884 0.47059143;
+	-5.51296557 -0.00354467 0.00196242 6.50942090 0.98848677 0.99449291 0.47065392;
+	-5.51519647 -0.00354174 0.00196129 6.51165473 0.98849828 0.99449698 0.47071627;
+	-5.51742182 -0.00353881 0.00196016 6.51388301 0.98850978 0.99450104 0.47077849;
+	-5.51964164 -0.00353588 0.00195902 6.51610576 0.98852126 0.99450510 0.47084056;
+	-5.52185594 -0.00353296 0.00195789 6.51832298 0.98853271 0.99450915 0.47090249;
+	-5.52406473 -0.00353004 0.00195677 6.52053469 0.98854415 0.99451320 0.47096428;
+	-5.52626800 -0.00352712 0.00195564 6.52274088 0.98855556 0.99451724 0.47102593;
+	-5.52846578 -0.00352421 0.00195451 6.52494157 0.98856696 0.99452128 0.47108744;
+	-5.53065808 -0.00352130 0.00195338 6.52713677 0.98857834 0.99452532 0.47114881;
+	-5.53284489 -0.00351840 0.00195226 6.52932649 0.98858969 0.99452935 0.47121004;
+	-5.53502623 -0.00351550 0.00195113 6.53151073 0.98860103 0.99453337 0.47127113;
+	-5.53720210 -0.00351260 0.00195001 6.53368950 0.98861234 0.99453740 0.47133208;
+	-5.53937252 -0.00350971 0.00194888 6.53586282 0.98862364 0.99454141 0.47139289;
+	-5.54153750 -0.00350682 0.00194776 6.53803068 0.98863491 0.99454543 0.47145356;
+	-5.54369704 -0.00350393 0.00194663 6.54019311 0.98864617 0.99454944 0.47151409;
+	-5.54585115 -0.00350105 0.00194551 6.54235010 0.98865740 0.99455344 0.47157449;
+	-5.54799984 -0.00349817 0.00194439 6.54450167 0.98866862 0.99455744 0.47163474;
+	-5.55014311 -0.00349529 0.00194327 6.54664782 0.98867982 0.99456144 0.47169485;
+	-5.55228099 -0.00349242 0.00194215 6.54878857 0.98869099 0.99456543 0.47175483;
+	-5.55441347 -0.00348955 0.00194103 6.55092392 0.98870215 0.99456942 0.47181466;
+	-5.55654057 -0.00348669 0.00193991 6.55305388 0.98871329 0.99457340 0.47187436;
+	-5.55866229 -0.00348383 0.00193879 6.55517846 0.98872441 0.99457738 0.47193391;
+	-5.56077864 -0.00348097 0.00193767 6.55729767 0.98873551 0.99458136 0.47199333;
+	-5.56288964 -0.00347811 0.00193655 6.55941152 0.98874659 0.99458533 0.47205261;
+	-5.56499528 -0.00347526 0.00193544 6.56152002 0.98875765 0.99458930 0.47211176;
+	-5.56709558 -0.00347242 0.00193432 6.56362317 0.98876869 0.99459326 0.47217076;
+	-5.56919055 -0.00346957 0.00193321 6.56572098 0.98877972 0.99459722 0.47222962;
+	-5.57128020 -0.00346673 0.00193209 6.56781347 0.98879072 0.99460118 0.47228835;
+	-5.57336453 -0.00346390 0.00193098 6.56990064 0.98880171 0.99460513 0.47234694;
+	-5.57544356 -0.00346106 0.00192986 6.57198250 0.98881267 0.99460907 0.47240539;
+	-5.57751729 -0.00345823 0.00192875 6.57405906 0.98882362 0.99461302 0.47246371;
+	-5.57958573 -0.00345541 0.00192764 6.57613032 0.98883455 0.99461696 0.47252188;
+	-5.58164889 -0.00345259 0.00192652 6.57819631 0.98884546 0.99462089 0.47257992;
+	-5.58370679 -0.00344977 0.00192541 6.58025702 0.98885635 0.99462482 0.47263782;
+	-5.58575942 -0.00344695 0.00192430 6.58231247 0.98886722 0.99462875 0.47269559;
+	-5.58780679 -0.00344414 0.00192319 6.58436266 0.98887808 0.99463267 0.47275321;
+	-5.58984893 -0.00344133 0.00192208 6.58640760 0.98888891 0.99463659 0.47281070;
+	-5.59188583 -0.00343852 0.00192097 6.58844731 0.98889973 0.99464051 0.47286806;
+	-5.59391750 -0.00343572 0.00191986 6.59048178 0.98891053 0.99464442 0.47292528;
+	-5.59594396 -0.00343292 0.00191875 6.59251104 0.98892131 0.99464833 0.47298236;
+	-5.59796521 -0.00343013 0.00191764 6.59453508 0.98893207 0.99465223 0.47303930;
+	-5.59998126 -0.00342733 0.00191653 6.59655393 0.98894281 0.99465613 0.47309611;
+	-5.60199212 -0.00342455 0.00191543 6.59856758 0.98895354 0.99466003 0.47315278;
+	-5.60399781 -0.00342176 0.00191432 6.60057605 0.98896425 0.99466392 0.47320932;
+	-5.60599831 -0.00341898 0.00191321 6.60257934 0.98897493 0.99466781 0.47326572;
+	-5.60799366 -0.00341620 0.00191211 6.60457746 0.98898561 0.99467169 0.47332198;
+	-5.60998385 -0.00341342 0.00191100 6.60657043 0.98899626 0.99467557 0.47337811;
+	-5.61196890 -0.00341065 0.00190990 6.60855825 0.98900689 0.99467945 0.47343411;
+	-5.61394881 -0.00340788 0.00190879 6.61054093 0.98901751 0.99468332 0.47348997;
+	-5.61592360 -0.00340512 0.00190769 6.61251848 0.98902811 0.99468719 0.47354569;
+	-5.61789327 -0.00340235 0.00190659 6.61449091 0.98903869 0.99469106 0.47360128;
+	-5.61985783 -0.00339960 0.00190548 6.61645823 0.98904926 0.99469492 0.47365674;
+	-5.62181729 -0.00339684 0.00190438 6.61842045 0.98905980 0.99469878 0.47371206;
+	-5.62377166 -0.00339409 0.00190328 6.62037757 0.98907033 0.99470263 0.47376724;
+	-5.62572095 -0.00339134 0.00190218 6.62232961 0.98908084 0.99470648 0.47382230;
+	-5.62766517 -0.00338859 0.00190108 6.62427658 0.98909133 0.99471033 0.47387721;
+	-5.62960432 -0.00338585 0.00189998 6.62621847 0.98910181 0.99471417 0.47393200;
+	-5.63153842 -0.00338311 0.00189888 6.62815531 0.98911227 0.99471801 0.47398665;
+	-5.63346748 -0.00338037 0.00189778 6.63008711 0.98912271 0.99472185 0.47404117;
+	-5.63539150 -0.00337764 0.00189668 6.63201386 0.98913313 0.99472568 0.47409555;
+	-5.63731050 -0.00337491 0.00189558 6.63393558 0.98914354 0.99472951 0.47414980;
+	-5.63922447 -0.00337218 0.00189448 6.63585229 0.98915393 0.99473333 0.47420392;
+	-5.64113344 -0.00336946 0.00189338 6.63776398 0.98916430 0.99473716 0.47425791;
+	-5.64303741 -0.00336674 0.00189229 6.63967067 0.98917466 0.99474097 0.47431176;
+	-5.64493639 -0.00336402 0.00189119 6.64157237 0.98918499 0.99474479 0.47436548;
+	-5.64683039 -0.00336131 0.00189009 6.64346908 0.98919531 0.99474860 0.47441907;
+	-5.64871942 -0.00335860 0.00188899 6.64536082 0.98920562 0.99475241 0.47447252;
+	-5.65060348 -0.00335589 0.00188790 6.64724759 0.98921590 0.99475621 0.47452585;
+	-5.65248259 -0.00335319 0.00188680 6.64912941 0.98922617 0.99476001 0.47457904;
+	-5.65435676 -0.00335049 0.00188571 6.65100628 0.98923642 0.99476381 0.47463210;
+	-5.65622600 -0.00334779 0.00188461 6.65287821 0.98924666 0.99476760 0.47468503;
+	-5.65809030 -0.00334509 0.00188352 6.65474521 0.98925688 0.99477139 0.47473783;
+	-5.65994970 -0.00334240 0.00188243 6.65660729 0.98926708 0.99477517 0.47479050;
+	-5.66180418 -0.00333971 0.00188133 6.65846447 0.98927727 0.99477896 0.47484303;
+	-5.66365377 -0.00333703 0.00188024 6.66031674 0.98928744 0.99478273 0.47489544;
+	-5.66549846 -0.00333434 0.00187915 6.66216412 0.98929759 0.99478651 0.47494772;
+	-5.66733828 -0.00333166 0.00187805 6.66400662 0.98930772 0.99479028 0.47499986;
+	-5.66917323 -0.00332899 0.00187696 6.66584424 0.98931784 0.99479405 0.47505187;
+	-5.67100331 -0.00332631 0.00187587 6.66767700 0.98932794 0.99479781 0.47510376;
+	-5.67282855 -0.00332364 0.00187478 6.66950490 0.98933803 0.99480158 0.47515552;
+	-5.67464894 -0.00332098 0.00187369 6.67132796 0.98934810 0.99480533 0.47520714;
+	-5.67646450 -0.00331831 0.00187260 6.67314618 0.98935815 0.99480909 0.47525864;
+	-5.67827523 -0.00331565 0.00187151 6.67495958 0.98936819 0.99481284 0.47531001;
+	-5.68008115 -0.00331299 0.00187042 6.67676816 0.98937821 0.99481659 0.47536125;
+	-5.68188226 -0.00331034 0.00186933 6.67857192 0.98938821 0.99482033 0.47541236;
+	-5.68367858 -0.00330769 0.00186824 6.68037089 0.98939820 0.99482407 0.47546334;
+	-5.68547011 -0.00330504 0.00186715 6.68216507 0.98940817 0.99482781 0.47551419;
+	-5.68725686 -0.00330239 0.00186606 6.68395447 0.98941813 0.99483154 0.47556492;
+	-5.68903884 -0.00329975 0.00186498 6.68573909 0.98942807 0.99483527 0.47561551;
+	-5.69081606 -0.00329711 0.00186389 6.68751895 0.98943799 0.99483900 0.47566598;
+	-5.69258853 -0.00329447 0.00186280 6.68929406 0.98944790 0.99484272 0.47571632;
+	-5.69435627 -0.00329184 0.00186172 6.69106443 0.98945779 0.99484644 0.47576654;
+	-5.69611926 -0.00328921 0.00186063 6.69283005 0.98946767 0.99485016 0.47581663;
+	-5.69787754 -0.00328658 0.00185954 6.69459096 0.98947753 0.99485388 0.47586659;
+	-5.69963110 -0.00328396 0.00185846 6.69634715 0.98948737 0.99485759 0.47591642;
+	-5.70137996 -0.00328133 0.00185737 6.69809863 0.98949720 0.99486129 0.47596613;
+	-5.70312413 -0.00327872 0.00185629 6.69984541 0.98950701 0.99486500 0.47601571;
+	-5.70486360 -0.00327610 0.00185520 6.70158750 0.98951681 0.99486870 0.47606516;
+	-5.70659840 -0.00327349 0.00185412 6.70332492 0.98952659 0.99487239 0.47611449;
+	-5.70832854 -0.00327088 0.00185304 6.70505766 0.98953636 0.99487609 0.47616370;
+	-5.71005402 -0.00326827 0.00185195 6.70678575 0.98954611 0.99487978 0.47621277;
+	-5.71177484 -0.00326567 0.00185087 6.70850918 0.98955584 0.99488347 0.47626172;
+	-5.71349103 -0.00326306 0.00184979 6.71022797 0.98956556 0.99488715 0.47631055;
+	-5.71520259 -0.00326047 0.00184870 6.71194212 0.98957526 0.99489083 0.47635925;
+	-5.71690953 -0.00325787 0.00184762 6.71365166 0.98958495 0.99489451 0.47640783;
+	-5.71861185 -0.00325528 0.00184654 6.71535658 0.98959462 0.99489818 0.47645628;
+	-5.72030958 -0.00325269 0.00184546 6.71705689 0.98960428 0.99490185 0.47650461;
+	-5.72200271 -0.00325010 0.00184438 6.71875261 0.98961392 0.99490552 0.47655282;
+	-5.72369126 -0.00324752 0.00184330 6.72044374 0.98962355 0.99490918 0.47660090;
+	-5.72537523 -0.00324494 0.00184222 6.72213029 0.98963316 0.99491284 0.47664886;
+	-5.72705463 -0.00324236 0.00184114 6.72381227 0.98964276 0.99491650 0.47669669;
+	-5.72872948 -0.00323979 0.00184006 6.72548970 0.98965234 0.99492016 0.47674440;
+	-5.73039979 -0.00323721 0.00183898 6.72716257 0.98966190 0.99492381 0.47679198;
+	-5.73206555 -0.00323464 0.00183790 6.72883091 0.98967145 0.99492746 0.47683945;
+	-5.73372679 -0.00323208 0.00183682 6.73049471 0.98968099 0.99493110 0.47688679;
+	-5.73538351 -0.00322952 0.00183574 6.73215399 0.98969051 0.99493474 0.47693401;
+	-5.73703572 -0.00322695 0.00183466 6.73380876 0.98970002 0.99493838 0.47698111;
+	-5.73868343 -0.00322440 0.00183359 6.73545903 0.98970951 0.99494202 0.47702808;
+	-5.74032664 -0.00322184 0.00183251 6.73710480 0.98971898 0.99494565 0.47707494;
+	-5.74196538 -0.00321929 0.00183143 6.73874609 0.98972844 0.99494928 0.47712167;
+	-5.74359964 -0.00321674 0.00183036 6.74038290 0.98973789 0.99495290 0.47716828;
+	-5.74522943 -0.00321419 0.00182928 6.74201524 0.98974732 0.99495653 0.47721477;
+	-5.74685478 -0.00321165 0.00182820 6.74364312 0.98975674 0.99496014 0.47726113;
+	-5.74847567 -0.00320911 0.00182713 6.74526656 0.98976614 0.99496376 0.47730738;
+	-5.75009213 -0.00320657 0.00182605 6.74688556 0.98977552 0.99496737 0.47735351;
+	-5.75170417 -0.00320404 0.00182498 6.74850013 0.98978490 0.99497098 0.47739952;
+	-5.75331179 -0.00320151 0.00182390 6.75011028 0.98979425 0.99497459 0.47744540;
+	-5.75491499 -0.00319898 0.00182283 6.75171602 0.98980360 0.99497819 0.47749117;
+	-5.75651380 -0.00319645 0.00182176 6.75331735 0.98981293 0.99498179 0.47753682;
+	-5.75810822 -0.00319393 0.00182068 6.75491429 0.98982224 0.99498539 0.47758234;
+	-5.75969826 -0.00319141 0.00181961 6.75650685 0.98983154 0.99498899 0.47762775;
+	-5.76128392 -0.00318889 0.00181854 6.75809504 0.98984082 0.99499258 0.47767304;
+	-5.76286523 -0.00318637 0.00181746 6.75967886 0.98985009 0.99499616 0.47771821;
+	-5.76444218 -0.00318386 0.00181639 6.76125832 0.98985935 0.99499975 0.47776327;
+	-5.76601479 -0.00318135 0.00181532 6.76283343 0.98986859 0.99500333 0.47780820;
+	-5.76758306 -0.00317884 0.00181425 6.76440421 0.98987782 0.99500691 0.47785302;
+	-5.76914700 -0.00317634 0.00181318 6.76597066 0.98988703 0.99501049 0.47789772;
+	-5.77070663 -0.00317384 0.00181210 6.76753279 0.98989623 0.99501406 0.47794230;
+	-5.77226195 -0.00317134 0.00181103 6.76909061 0.98990542 0.99501763 0.47798676;
+	-5.77381298 -0.00316884 0.00180996 6.77064413 0.98991459 0.99502119 0.47803110;
+	-5.77535971 -0.00316635 0.00180889 6.77219336 0.98992374 0.99502476 0.47807533;
+	-5.77690216 -0.00316386 0.00180782 6.77373830 0.98993289 0.99502832 0.47811945;
+	-5.77844035 -0.00316137 0.00180675 6.77527898 0.98994201 0.99503187 0.47816344;
+	-5.77997427 -0.00315889 0.00180569 6.77681538 0.98995113 0.99503543 0.47820732;
+	-5.78150394 -0.00315640 0.00180462 6.77834753 0.98996023 0.99503898 0.47825108;
+	-5.78302936 -0.00315393 0.00180355 6.77987544 0.98996931 0.99504253 0.47829473;
+	-5.78455056 -0.00315145 0.00180248 6.78139911 0.98997839 0.99504607 0.47833826;
+	-5.78606752 -0.00314897 0.00180141 6.78291855 0.98998744 0.99504961 0.47838168;
+	-5.78758027 -0.00314650 0.00180035 6.78443377 0.98999649 0.99505315 0.47842498;
+	-5.78908882 -0.00314403 0.00179928 6.78594478 0.99000552 0.99505669 0.47846816;
+	-5.79059316 -0.00314157 0.00179821 6.78745159 0.99001453 0.99506022 0.47851123;
+	-5.79209332 -0.00313911 0.00179715 6.78895421 0.99002354 0.99506375 0.47855419;
+	-5.79358930 -0.00313665 0.00179608 6.79045265 0.99003253 0.99506727 0.47859703;
+	-5.79508110 -0.00313419 0.00179501 6.79194692 0.99004150 0.99507080 0.47863976;
+	-5.79656875 -0.00313173 0.00179395 6.79343702 0.99005046 0.99507432 0.47868238;
+	-5.79805224 -0.00312928 0.00179288 6.79492296 0.99005941 0.99507784 0.47872487;
+	-5.79953159 -0.00312683 0.00179182 6.79640476 0.99006834 0.99508135 0.47876726;
+	-5.80100681 -0.00312438 0.00179075 6.79788243 0.99007726 0.99508486 0.47880954;
+	-5.80247790 -0.00312194 0.00178969 6.79935596 0.99008617 0.99508837 0.47885170;
+	-5.80394487 -0.00311950 0.00178863 6.80082538 0.99009506 0.99509187 0.47889374;
+	-5.80540774 -0.00311706 0.00178756 6.80229068 0.99010394 0.99509538 0.47893568;
+	-5.80686651 -0.00311462 0.00178650 6.80375189 0.99011281 0.99509888 0.47897750;
+	-5.80832119 -0.00311219 0.00178544 6.80520900 0.99012166 0.99510237 0.47901921;
+	-5.80977179 -0.00310976 0.00178438 6.80666204 0.99013050 0.99510587 0.47906081;
+	-5.81121832 -0.00310733 0.00178331 6.80811099 0.99013933 0.99510936 0.47910230;
+	-5.81266079 -0.00310490 0.00178225 6.80955589 0.99014814 0.99511284 0.47914367;
+	-5.81409921 -0.00310248 0.00178119 6.81099673 0.99015694 0.99511633 0.47918494;
+	-5.81553358 -0.00310006 0.00178013 6.81243352 0.99016573 0.99511981 0.47922609;
+	-5.81696392 -0.00309764 0.00177907 6.81386627 0.99017450 0.99512329 0.47926714;
+	-5.81839023 -0.00309523 0.00177801 6.81529500 0.99018326 0.99512676 0.47930807;
+	-5.81981252 -0.00309282 0.00177695 6.81671970 0.99019200 0.99513024 0.47934889;
+	-5.82123081 -0.00309041 0.00177589 6.81814040 0.99020074 0.99513370 0.47938960;
+	-5.82264509 -0.00308800 0.00177483 6.81955709 0.99020946 0.99513717 0.47943020;
+	-5.82405539 -0.00308560 0.00177377 6.82096980 0.99021816 0.99514063 0.47947070;
+	-5.82546171 -0.00308319 0.00177271 6.82237851 0.99022686 0.99514410 0.47951108;
+	-5.82686405 -0.00308079 0.00177165 6.82378326 0.99023554 0.99514755 0.47955135;
+	-5.82826243 -0.00307840 0.00177059 6.82518403 0.99024421 0.99515101 0.47959152;
+	-5.82965686 -0.00307600 0.00176954 6.82658086 0.99025286 0.99515446 0.47963157;
+	-5.83104734 -0.00307361 0.00176848 6.82797373 0.99026150 0.99515791 0.47967152;
+	-5.83243389 -0.00307122 0.00176742 6.82936266 0.99027013 0.99516135 0.47971136;
+	-5.83381650 -0.00306884 0.00176637 6.83074767 0.99027875 0.99516480 0.47975109;
+	-5.83519520 -0.00306645 0.00176531 6.83212875 0.99028735 0.99516824 0.47979072;
+	-5.83656999 -0.00306407 0.00176425 6.83350592 0.99029594 0.99517167 0.47983023;
+	-5.83794088 -0.00306169 0.00176320 6.83487918 0.99030451 0.99517511 0.47986964;
+	-5.83930788 -0.00305932 0.00176214 6.83624856 0.99031308 0.99517854 0.47990894;
+	-5.84067099 -0.00305695 0.00176109 6.83761404 0.99032163 0.99518197 0.47994814;
+	-5.84203023 -0.00305458 0.00176003 6.83897565 0.99033017 0.99518539 0.47998722;
+	-5.84338560 -0.00305221 0.00175898 6.84033340 0.99033869 0.99518881 0.48002620;
+	-5.84473712 -0.00304984 0.00175793 6.84168728 0.99034721 0.99519223 0.48006508;
+	-5.84608479 -0.00304748 0.00175687 6.84303731 0.99035571 0.99519565 0.48010385;
+	-5.84742862 -0.00304512 0.00175582 6.84438350 0.99036419 0.99519906 0.48014251;
+	-5.84876862 -0.00304276 0.00175477 6.84572586 0.99037267 0.99520247 0.48018107;
+	-5.85010480 -0.00304041 0.00175371 6.84706439 0.99038113 0.99520588 0.48021952;
+	-5.85143717 -0.00303805 0.00175266 6.84839911 0.99038958 0.99520929 0.48025787;
+	-5.85276573 -0.00303570 0.00175161 6.84973003 0.99039802 0.99521269 0.48029611;
+	-5.85409050 -0.00303336 0.00175056 6.85105714 0.99040644 0.99521609 0.48033425;
+	-5.85541148 -0.00303101 0.00174951 6.85238047 0.99041485 0.99521948 0.48037228;
+	-5.85672868 -0.00302867 0.00174846 6.85370002 0.99042325 0.99522288 0.48041021;
+	-5.85804212 -0.00302633 0.00174741 6.85501579 0.99043164 0.99522627 0.48044803;
+	-5.85935180 -0.00302399 0.00174636 6.85632781 0.99044002 0.99522965 0.48048575;
+	-5.86065772 -0.00302166 0.00174531 6.85763607 0.99044838 0.99523304 0.48052337;
+	-5.86195991 -0.00301932 0.00174426 6.85894058 0.99045673 0.99523642 0.48056088;
+	-5.86325835 -0.00301699 0.00174321 6.86024136 0.99046507 0.99523980 0.48059829;
+	-5.86455308 -0.00301467 0.00174216 6.86153841 0.99047339 0.99524317 0.48063560;
+	-5.86584409 -0.00301234 0.00174111 6.86283174 0.99048171 0.99524655 0.48067281;
+	-5.86713139 -0.00301002 0.00174006 6.86412137 0.99049001 0.99524992 0.48070991;
+	-5.86841499 -0.00300770 0.00173902 6.86540729 0.99049829 0.99525328 0.48074691;
+	-5.86969490 -0.00300538 0.00173797 6.86668952 0.99050657 0.99525665 0.48078381;
+	-5.87097113 -0.00300307 0.00173692 6.86796806 0.99051483 0.99526001 0.48082060;
+	-5.87224368 -0.00300076 0.00173588 6.86924293 0.99052309 0.99526337 0.48085730;
+	-5.87351257 -0.00299845 0.00173483 6.87051413 0.99053133 0.99526672 0.48089389;
+	-5.87477781 -0.00299614 0.00173378 6.87178167 0.99053955 0.99527008 0.48093038;
+	-5.87603940 -0.00299383 0.00173274 6.87304557 0.99054777 0.99527343 0.48096678;
+	-5.87729735 -0.00299153 0.00173169 6.87430582 0.99055597 0.99527677 0.48100307;
+	-5.87855167 -0.00298923 0.00173065 6.87556244 0.99056416 0.99528012 0.48103926;
+	-5.87980237 -0.00298694 0.00172961 6.87681543 0.99057234 0.99528346 0.48107535;
+	-5.88104946 -0.00298464 0.00172856 6.87806482 0.99058051 0.99528680 0.48111134;
+	-5.88229294 -0.00298235 0.00172752 6.87931059 0.99058867 0.99529013 0.48114723;
+	-5.88353283 -0.00298006 0.00172648 6.88055277 0.99059681 0.99529347 0.48118302;
+	-5.88476913 -0.00297777 0.00172543 6.88179135 0.99060494 0.99529680 0.48121871;
+	-5.88600185 -0.00297549 0.00172439 6.88302636 0.99061306 0.99530012 0.48125430;
+	-5.88723100 -0.00297320 0.00172335 6.88425779 0.99062117 0.99530345 0.48128980;
+	-5.88845659 -0.00297093 0.00172231 6.88548566 0.99062927 0.99530677 0.48132519;
+	-5.88967862 -0.00296865 0.00172127 6.88670998 0.99063735 0.99531009 0.48136049;
+	-5.89089712 -0.00296637 0.00172022 6.88793074 0.99064542 0.99531340 0.48139569;
+	-5.89211207 -0.00296410 0.00171918 6.88914797 0.99065348 0.99531671 0.48143079;
+	-5.89332350 -0.00296183 0.00171814 6.89036167 0.99066153 0.99532002 0.48146579;
+	-5.89453141 -0.00295956 0.00171710 6.89157185 0.99066957 0.99532333 0.48150069;
+	-5.89573581 -0.00295730 0.00171607 6.89277851 0.99067760 0.99532664 0.48153550;
+	-5.89693670 -0.00295504 0.00171503 6.89398167 0.99068561 0.99532994 0.48157021;
+	-5.89813411 -0.00295278 0.00171399 6.89518133 0.99069361 0.99533324 0.48160482;
+	-5.89932802 -0.00295052 0.00171295 6.89637751 0.99070160 0.99533653 0.48163934;
+	-5.90051846 -0.00294826 0.00171191 6.89757020 0.99070958 0.99533983 0.48167376;
+	-5.90170544 -0.00294601 0.00171088 6.89875943 0.99071755 0.99534312 0.48170809;
+	-5.90288895 -0.00294376 0.00170984 6.89994519 0.99072550 0.99534640 0.48174231;
+	-5.90406901 -0.00294151 0.00170880 6.90112750 0.99073345 0.99534969 0.48177645;
+	-5.90524562 -0.00293927 0.00170777 6.90230636 0.99074138 0.99535297 0.48181048;
+	-5.90641881 -0.00293702 0.00170673 6.90348178 0.99074930 0.99535625 0.48184443;
+	-5.90758856 -0.00293478 0.00170569 6.90465378 0.99075721 0.99535952 0.48187827;
+	-5.90875490 -0.00293254 0.00170466 6.90582235 0.99076511 0.99536280 0.48191202;
+	-5.90991782 -0.00293031 0.00170363 6.90698751 0.99077300 0.99536607 0.48194568;
+	-5.91107735 -0.00292807 0.00170259 6.90814927 0.99078087 0.99536933 0.48197924;
+	-5.91223348 -0.00292584 0.00170156 6.90930763 0.99078874 0.99537260 0.48201271;
+	-5.91338622 -0.00292362 0.00170052 6.91046261 0.99079659 0.99537586 0.48204608;
+	-5.91453559 -0.00292139 0.00169949 6.91161420 0.99080443 0.99537912 0.48207936;
+	-5.91568159 -0.00291917 0.00169846 6.91276243 0.99081226 0.99538238 0.48211255;
+	-5.91682423 -0.00291694 0.00169743 6.91390729 0.99082008 0.99538563 0.48214564;
+	-5.91796352 -0.00291472 0.00169639 6.91504879 0.99082789 0.99538888 0.48217864;
+	-5.91909946 -0.00291251 0.00169536 6.91618695 0.99083569 0.99539213 0.48221155;
+	-5.92023207 -0.00291029 0.00169433 6.91732177 0.99084347 0.99539537 0.48224436;
+	-5.92136135 -0.00290808 0.00169330 6.91845327 0.99085124 0.99539862 0.48227709;
+	-5.92248731 -0.00290587 0.00169227 6.91958144 0.99085901 0.99540186 0.48230971;
+	-5.92360996 -0.00290367 0.00169124 6.92070629 0.99086676 0.99540509 0.48234225;
+	-5.92472930 -0.00290146 0.00169021 6.92182784 0.99087450 0.99540833 0.48237470;
+	-5.92584536 -0.00289926 0.00168918 6.92294610 0.99088223 0.99541156 0.48240705;
+	-5.92695812 -0.00289706 0.00168816 6.92406106 0.99088995 0.99541479 0.48243931;
+	-5.92806761 -0.00289486 0.00168713 6.92517274 0.99089766 0.99541801 0.48247148;
+	-5.92917382 -0.00289267 0.00168610 6.92628115 0.99090535 0.99542123 0.48250356;
+	-5.93027677 -0.00289047 0.00168507 6.92738630 0.99091304 0.99542445 0.48253555;
+	-5.93137647 -0.00288828 0.00168405 6.92848819 0.99092071 0.99542767 0.48256745;
+	-5.93247293 -0.00288610 0.00168302 6.92958683 0.99092837 0.99543089 0.48259926;
+	-5.93356614 -0.00288391 0.00168199 6.93068223 0.99093603 0.99543410 0.48263098;
+	-5.93465613 -0.00288173 0.00168097 6.93177440 0.99094367 0.99543731 0.48266260;
+	-5.93574289 -0.00287955 0.00167994 6.93286334 0.99095130 0.99544051 0.48269414;
+	-5.93682644 -0.00287737 0.00167892 6.93394907 0.99095892 0.99544371 0.48272559;
+	-5.93790678 -0.00287519 0.00167789 6.93503159 0.99096653 0.99544692 0.48275695;
+	-5.93898392 -0.00287302 0.00167687 6.93611091 0.99097412 0.99545011 0.48278822;
+	-5.94005788 -0.00287085 0.00167585 6.93718703 0.99098171 0.99545331 0.48281940;
+	-5.94112865 -0.00286868 0.00167482 6.93825997 0.99098929 0.99545650 0.48285049;
+	-5.94219625 -0.00286651 0.00167380 6.93932974 0.99099685 0.99545969 0.48288150;
+	-5.94326068 -0.00286435 0.00167278 6.94039634 0.99100441 0.99546288 0.48291241;
+	-5.94432196 -0.00286218 0.00167176 6.94145977 0.99101195 0.99546606 0.48294324;
+	-5.94538008 -0.00286002 0.00167074 6.94252006 0.99101949 0.99546924 0.48297398;
+	-5.94643506 -0.00285787 0.00166971 6.94357720 0.99102701 0.99547242 0.48300463;
+	-5.94748691 -0.00285571 0.00166869 6.94463120 0.99103452 0.99547559 0.48303520;
+	-5.94853563 -0.00285356 0.00166767 6.94568207 0.99104202 0.99547877 0.48306568;
+	-5.94958124 -0.00285141 0.00166666 6.94672983 0.99104951 0.99548194 0.48309607;
+	-5.95062373 -0.00284926 0.00166564 6.94777447 0.99105699 0.99548510 0.48312637;
+	-5.95166312 -0.00284711 0.00166462 6.94881600 0.99106446 0.99548827 0.48315659;
+	-5.95269941 -0.00284497 0.00166360 6.94985444 0.99107192 0.99549143 0.48318672;
+	-5.95373262 -0.00284283 0.00166258 6.95088979 0.99107937 0.99549459 0.48321676;
+	-5.95476275 -0.00284069 0.00166156 6.95192206 0.99108681 0.99549775 0.48324672;
+	-5.95578980 -0.00283855 0.00166055 6.95295125 0.99109423 0.99550090 0.48327660;
+	-5.95681380 -0.00283642 0.00165953 6.95397738 0.99110165 0.99550405 0.48330638;
+	-5.95783474 -0.00283429 0.00165852 6.95500045 0.99110906 0.99550720 0.48333609;
+	-5.95885262 -0.00283216 0.00165750 6.95602047 0.99111645 0.99551034 0.48336571;
+	-5.95986747 -0.00283003 0.00165648 6.95703744 0.99112384 0.99551348 0.48339524;
+	-5.96087929 -0.00282791 0.00165547 6.95805138 0.99113121 0.99551662 0.48342469;
+	-5.96188808 -0.00282578 0.00165446 6.95906230 0.99113858 0.99551976 0.48345405;
+	-5.96289385 -0.00282366 0.00165344 6.96007019 0.99114593 0.99552290 0.48348333;
+	-5.96389662 -0.00282154 0.00165243 6.96107507 0.99115327 0.99552603 0.48351252;
+	-5.96489638 -0.00281943 0.00165142 6.96207695 0.99116061 0.99552916 0.48354163;
+	-5.96589315 -0.00281732 0.00165040 6.96307584 0.99116793 0.99553228 0.48357066;
+	-5.96688693 -0.00281520 0.00164939 6.96407173 0.99117524 0.99553540 0.48359961;
+	-5.96787774 -0.00281310 0.00164838 6.96506464 0.99118255 0.99553852 0.48362846;
+	-5.96886557 -0.00281099 0.00164737 6.96605458 0.99118984 0.99554164 0.48365724;
+	-5.96985044 -0.00280888 0.00164636 6.96704156 0.99119712 0.99554476 0.48368594;
+	-5.97083235 -0.00280678 0.00164535 6.96802557 0.99120439 0.99554787 0.48371455;
+	-5.97181132 -0.00280468 0.00164434 6.96900664 0.99121165 0.99555098 0.48374308;
+	-5.97278734 -0.00280258 0.00164333 6.96998476 0.99121891 0.99555409 0.48377153;
+	-5.97376044 -0.00280049 0.00164232 6.97095995 0.99122615 0.99555719 0.48379989;
+	-5.97473060 -0.00279840 0.00164131 6.97193221 0.99123338 0.99556029 0.48382818;
+	-5.97569785 -0.00279631 0.00164031 6.97290155 0.99124060 0.99556339 0.48385638;
+	-5.97666219 -0.00279422 0.00163930 6.97386797 0.99124781 0.99556648 0.48388450;
+	-5.97762362 -0.00279213 0.00163829 6.97483149 0.99125501 0.99556958 0.48391254;
+	-5.97858216 -0.00279005 0.00163729 6.97579212 0.99126220 0.99557267 0.48394050;
+	-5.97953782 -0.00278796 0.00163628 6.97674985 0.99126938 0.99557576 0.48396837;
+	-5.98049059 -0.00278589 0.00163527 6.97770470 0.99127655 0.99557884 0.48399617;
+	-5.98144049 -0.00278381 0.00163427 6.97865668 0.99128371 0.99558192 0.48402389;
+	-5.98238752 -0.00278173 0.00163326 6.97960579 0.99129087 0.99558500 0.48405152;
+	-5.98333170 -0.00277966 0.00163226 6.98055204 0.99129801 0.99558808 0.48407908;
+	-5.98427302 -0.00277759 0.00163126 6.98149543 0.99130514 0.99559115 0.48410655;
+	-5.98521150 -0.00277552 0.00163025 6.98243598 0.99131226 0.99559422 0.48413395;
+	-5.98614715 -0.00277346 0.00162925 6.98337369 0.99131937 0.99559729 0.48416127;
+	-5.98707997 -0.00277139 0.00162825 6.98430858 0.99132647 0.99560036 0.48418851;
+	-5.98800996 -0.00276933 0.00162725 6.98524063 0.99133356 0.99560342 0.48421567;
+	-5.98893715 -0.00276727 0.00162625 6.98616988 0.99134064 0.99560648 0.48424275;
+	-5.98986153 -0.00276521 0.00162525 6.98709631 0.99134771 0.99560954 0.48426975;
+	-5.99078310 -0.00276316 0.00162425 6.98801995 0.99135477 0.99561259 0.48429667;
+	-5.99170189 -0.00276111 0.00162325 6.98894079 0.99136183 0.99561565 0.48432352;
+	-5.99261789 -0.00275906 0.00162225 6.98985884 0.99136887 0.99561870 0.48435028;
+	-5.99353112 -0.00275701 0.00162125 6.99077411 0.99137590 0.99562174 0.48437697;
+	-5.99444158 -0.00275496 0.00162025 6.99168662 0.99138292 0.99562479 0.48440358;
+	-5.99534927 -0.00275292 0.00161925 6.99259635 0.99138994 0.99562783 0.48443012;
+	-5.99625421 -0.00275088 0.00161826 6.99350334 0.99139694 0.99563087 0.48445657;
+	-5.99715640 -0.00274884 0.00161726 6.99440757 0.99140393 0.99563390 0.48448295;
+	-5.99805585 -0.00274680 0.00161626 6.99530906 0.99141092 0.99563694 0.48450926;
+	-5.99895257 -0.00274476 0.00161527 6.99620781 0.99141789 0.99563997 0.48453548;
+	-5.99984656 -0.00274273 0.00161427 6.99710383 0.99142485 0.99564299 0.48456163;
+	-6.00073784 -0.00274070 0.00161328 6.99799714 0.99143181 0.99564602 0.48458771;
+	-6.00162640 -0.00273867 0.00161228 6.99888773 0.99143875 0.99564904 0.48461370;
+	-6.00251225 -0.00273665 0.00161129 6.99977561 0.99144569 0.99565206 0.48463962;
+	-6.00339541 -0.00273462 0.00161030 7.00066079 0.99145261 0.99565508 0.48466547;
+	-6.00427588 -0.00273260 0.00160931 7.00154328 0.99145953 0.99565809 0.48469124;
+	-6.00515367 -0.00273058 0.00160831 7.00242309 0.99146644 0.99566111 0.48471693;
+	-6.00602878 -0.00272856 0.00160732 7.00330021 0.99147334 0.99566411 0.48474255;
+	-6.00690122 -0.00272655 0.00160633 7.00417467 0.99148022 0.99566712 0.48476810;
+	-6.00777100 -0.00272454 0.00160534 7.00504646 0.99148710 0.99567012 0.48479357;
+	-6.00863812 -0.00272252 0.00160435 7.00591560 0.99149397 0.99567313 0.48481896;
+	-6.00950260 -0.00272052 0.00160336 7.00678208 0.99150083 0.99567612 0.48484429;
+	-6.01036444 -0.00271851 0.00160237 7.00764593 0.99150768 0.99567912 0.48486953;
+	-6.01122364 -0.00271651 0.00160138 7.00850713 0.99151452 0.99568211 0.48489471;
+	-6.01208022 -0.00271450 0.00160039 7.00936571 0.99152135 0.99568510 0.48491980;
+	-6.01293417 -0.00271250 0.00159941 7.01022167 0.99152817 0.99568809 0.48494483;
+	-6.01378552 -0.00271051 0.00159842 7.01107501 0.99153498 0.99569107 0.48496978;
+	-6.01463426 -0.00270851 0.00159743 7.01192575 0.99154179 0.99569406 0.48499466;
+	-6.01548040 -0.00270652 0.00159645 7.01277388 0.99154858 0.99569704 0.48501947;
+	-6.01632394 -0.00270453 0.00159546 7.01361942 0.99155537 0.99570001 0.48504420;
+	-6.01716491 -0.00270254 0.00159448 7.01446237 0.99156214 0.99570299 0.48506886;
+	-6.01800329 -0.00270055 0.00159349 7.01530274 0.99156891 0.99570596 0.48509345;
+	-6.01883911 -0.00269856 0.00159251 7.01614055 0.99157566 0.99570893 0.48511797;
+	-6.01967236 -0.00269658 0.00159153 7.01697578 0.99158241 0.99571189 0.48514241;
+	-6.02050306 -0.00269460 0.00159054 7.01780845 0.99158915 0.99571486 0.48516678;
+	-6.02133120 -0.00269262 0.00158956 7.01863858 0.99159588 0.99571782 0.48519108;
+	-6.02215680 -0.00269065 0.00158858 7.01946615 0.99160260 0.99572077 0.48521531;
+	-6.02297987 -0.00268867 0.00158760 7.02029119 0.99160931 0.99572373 0.48523947;
+	-6.02380040 -0.00268670 0.00158662 7.02111370 0.99161601 0.99572668 0.48526355;
+	-6.02461841 -0.00268473 0.00158564 7.02193368 0.99162270 0.99572963 0.48528757;
+	-6.02543391 -0.00268276 0.00158466 7.02275115 0.99162938 0.99573258 0.48531151;
+	-6.02624690 -0.00268080 0.00158368 7.02356610 0.99163606 0.99573552 0.48533539;
+	-6.02705738 -0.00267883 0.00158270 7.02437855 0.99164272 0.99573847 0.48535919;
+	-6.02786537 -0.00267687 0.00158172 7.02518850 0.99164938 0.99574141 0.48538292;
+	-6.02867087 -0.00267491 0.00158074 7.02599596 0.99165602 0.99574434 0.48540659;
+	-6.02947389 -0.00267296 0.00157977 7.02680093 0.99166266 0.99574728 0.48543018;
+	-6.03027443 -0.00267100 0.00157879 7.02760343 0.99166929 0.99575021 0.48545370;
+	-6.03107251 -0.00266905 0.00157781 7.02840346 0.99167591 0.99575314 0.48547716;
+	-6.03186812 -0.00266710 0.00157684 7.02920102 0.99168252 0.99575606 0.48550054;
+	-6.03266127 -0.00266515 0.00157586 7.02999612 0.99168912 0.99575899 0.48552386;
+	-6.03345198 -0.00266320 0.00157489 7.03078878 0.99169571 0.99576191 0.48554710;
+	-6.03424025 -0.00266126 0.00157391 7.03157899 0.99170230 0.99576483 0.48557028;
+	-6.03502608 -0.00265932 0.00157294 7.03236676 0.99170887 0.99576774 0.48559339;
+	-6.03580948 -0.00265738 0.00157197 7.03315210 0.99171544 0.99577065 0.48561643;
+	-6.03659046 -0.00265544 0.00157100 7.03393502 0.99172199 0.99577356 0.48563940;
+	-6.03736903 -0.00265350 0.00157002 7.03471552 0.99172854 0.99577647 0.48566231;
+	-6.03814518 -0.00265157 0.00156905 7.03549361 0.99173508 0.99577938 0.48568514;
+	-6.03891894 -0.00264964 0.00156808 7.03626930 0.99174161 0.99578228 0.48570791;
+	-6.03969029 -0.00264771 0.00156711 7.03704258 0.99174813 0.99578518 0.48573061;
+	-6.04045926 -0.00264578 0.00156614 7.03781348 0.99175464 0.99578807 0.48575324;
+	-6.04122585 -0.00264386 0.00156517 7.03858199 0.99176115 0.99579097 0.48577581;
+	-6.04199006 -0.00264193 0.00156421 7.03934813 0.99176764 0.99579386 0.48579831;
+	-6.04275190 -0.00264001 0.00156324 7.04011189 0.99177413 0.99579675 0.48582075;
+	-6.04351138 -0.00263809 0.00156227 7.04087328 0.99178061 0.99579964 0.48584311;
+	-6.04426850 -0.00263618 0.00156130 7.04163232 0.99178707 0.99580252 0.48586541;
+	-6.04502327 -0.00263426 0.00156034 7.04238901 0.99179353 0.99580540 0.48588765;
+	-6.04577570 -0.00263235 0.00155937 7.04314335 0.99179998 0.99580828 0.48590981;
+	-6.04652579 -0.00263044 0.00155841 7.04389535 0.99180643 0.99581115 0.48593191;
+	-6.04727354 -0.00262853 0.00155744 7.04464502 0.99181286 0.99581403 0.48595395;
+	-6.04801898 -0.00262662 0.00155648 7.04539236 0.99181929 0.99581690 0.48597592;
+	-6.04876210 -0.00262472 0.00155552 7.04613738 0.99182570 0.99581977 0.48599782;
+	-6.04950290 -0.00262282 0.00155455 7.04688009 0.99183211 0.99582263 0.48601966;
+	-6.05024140 -0.00262092 0.00155359 7.04762049 0.99183851 0.99582549 0.48604144;
+	-6.05097760 -0.00261902 0.00155263 7.04835858 0.99184490 0.99582835 0.48606315;
+	-6.05171151 -0.00261712 0.00155167 7.04909439 0.99185128 0.99583121 0.48608479;
+	-6.05244313 -0.00261523 0.00155071 7.04982791 0.99185765 0.99583407 0.48610637;
+	-6.05317248 -0.00261334 0.00154975 7.05055914 0.99186402 0.99583692 0.48612789;
+	-6.05389955 -0.00261145 0.00154879 7.05128810 0.99187037 0.99583977 0.48614934;
+	-6.05462435 -0.00260956 0.00154783 7.05201479 0.99187672 0.99584261 0.48617073;
+	-6.05534689 -0.00260767 0.00154687 7.05273922 0.99188306 0.99584546 0.48619205;
+	-6.05606718 -0.00260579 0.00154591 7.05346139 0.99188939 0.99584830 0.48621331;
+	-6.05678521 -0.00260391 0.00154495 7.05418131 0.99189571 0.99585114 0.48623450;
+	-6.05750101 -0.00260203 0.00154400 7.05489898 0.99190203 0.99585398 0.48625564;
+	-6.05821457 -0.00260015 0.00154304 7.05561442 0.99190833 0.99585681 0.48627671;
+	-6.05892590 -0.00259827 0.00154209 7.05632763 0.99191463 0.99585964 0.48629772;
+	-6.05963501 -0.00259640 0.00154113 7.05703861 0.99192092 0.99586247 0.48631866;
+	-6.06034190 -0.00259453 0.00154018 7.05774737 0.99192720 0.99586529 0.48633954;
+	-6.06104657 -0.00259266 0.00153922 7.05845392 0.99193347 0.99586812 0.48636036;
+	-6.06174905 -0.00259079 0.00153827 7.05915826 0.99193973 0.99587094 0.48638112;
+	-6.06244932 -0.00258893 0.00153732 7.05986040 0.99194598 0.99587376 0.48640181;
+	-6.06314740 -0.00258706 0.00153637 7.06056034 0.99195223 0.99587657 0.48642244;
+	-6.06384330 -0.00258520 0.00153541 7.06125810 0.99195847 0.99587938 0.48644301;
+	-6.06453701 -0.00258334 0.00153446 7.06195367 0.99196470 0.99588220 0.48646352;
+	-6.06522855 -0.00258148 0.00153351 7.06264707 0.99197092 0.99588500 0.48648397;
+	-6.06591793 -0.00257963 0.00153256 7.06333830 0.99197713 0.99588781 0.48650436;
+	-6.06660514 -0.00257778 0.00153161 7.06402736 0.99198334 0.99589061 0.48652468;
+	-6.06729019 -0.00257592 0.00153067 7.06471427 0.99198953 0.99589341 0.48654494;
+	-6.06797309 -0.00257408 0.00152972 7.06539902 0.99199572 0.99589621 0.48656515;
+	-6.06865385 -0.00257223 0.00152877 7.06608163 0.99200190 0.99589900 0.48658529;
+	-6.06933248 -0.00257038 0.00152782 7.06676209 0.99200807 0.99590179 0.48660537;
+	-6.07000896 -0.00256854 0.00152688 7.06744043 0.99201424 0.99590458 0.48662539;
+	-6.07068333 -0.00256670 0.00152593 7.06811663 0.99202039 0.99590737 0.48664535;
+	-6.07135557 -0.00256486 0.00152499 7.06879071 0.99202654 0.99591015 0.48666525;
+	-6.07202570 -0.00256302 0.00152404 7.06946268 0.99203268 0.99591294 0.48668509;
+	-6.07269372 -0.00256119 0.00152310 7.07013254 0.99203881 0.99591572 0.48670487;
+	-6.07335964 -0.00255935 0.00152215 7.07080029 0.99204493 0.99591849 0.48672460;
+	-6.07402346 -0.00255752 0.00152121 7.07146594 0.99205104 0.99592127 0.48674426;
+	-6.07468520 -0.00255569 0.00152027 7.07212950 0.99205715 0.99592404 0.48676386;
+	-6.07534484 -0.00255387 0.00151933 7.07279098 0.99206325 0.99592681 0.48678341;
+	-6.07600241 -0.00255204 0.00151839 7.07345037 0.99206934 0.99592957 0.48680289;
+	-6.07665791 -0.00255022 0.00151745 7.07410769 0.99207542 0.99593234 0.48682232;
+	-6.07731134 -0.00254840 0.00151651 7.07476294 0.99208149 0.99593510 0.48684169;
+	-6.07796271 -0.00254658 0.00151557 7.07541613 0.99208756 0.99593786 0.48686100;
+	-6.07861202 -0.00254476 0.00151463 7.07606726 0.99209362 0.99594061 0.48688025;
+	-6.07925928 -0.00254294 0.00151369 7.07671634 0.99209967 0.99594336 0.48689944;
+	-6.07990450 -0.00254113 0.00151275 7.07736337 0.99210571 0.99594612 0.48691858;
+	-6.08054769 -0.00253932 0.00151182 7.07800837 0.99211174 0.99594886 0.48693766;
+	-6.08118884 -0.00253751 0.00151088 7.07865133 0.99211777 0.99595161 0.48695668;
+	-6.08182796 -0.00253570 0.00150994 7.07929226 0.99212379 0.99595435 0.48697564;
+	-6.08246507 -0.00253390 0.00150901 7.07993117 0.99212980 0.99595709 0.48699454;
+	-6.08310016 -0.00253210 0.00150807 7.08056806 0.99213580 0.99595983 0.48701339;
+	-6.08373324 -0.00253029 0.00150714 7.08120294 0.99214179 0.99596257 0.48703218;
+	-6.08436431 -0.00252849 0.00150621 7.08183582 0.99214778 0.99596530 0.48705092;
+	-6.08499339 -0.00252670 0.00150527 7.08246669 0.99215376 0.99596803 0.48706960;
+	-6.08562048 -0.00252490 0.00150434 7.08309558 0.99215973 0.99597076 0.48708821;
+	-6.08624558 -0.00252311 0.00150341 7.08372247 0.99216569 0.99597348 0.48710678;
+	-6.08686870 -0.00252132 0.00150248 7.08434738 0.99217164 0.99597620 0.48712529;
+	-6.08748985 -0.00251953 0.00150155 7.08497032 0.99217759 0.99597892 0.48714374;
+	-6.08810902 -0.00251774 0.00150062 7.08559128 0.99218353 0.99598164 0.48716214;
+	-6.08872624 -0.00251595 0.00149969 7.08621028 0.99218946 0.99598436 0.48718048;
+	-6.08934149 -0.00251417 0.00149876 7.08682732 0.99219538 0.99598707 0.48719876;
+	-6.08995479 -0.00251239 0.00149784 7.08744241 0.99220130 0.99598978 0.48721699;
+	-6.09056615 -0.00251061 0.00149691 7.08805554 0.99220721 0.99599248 0.48723517;
+	-6.09117556 -0.00250883 0.00149598 7.08866673 0.99221310 0.99599519 0.48725329;
+	-6.09178304 -0.00250705 0.00149506 7.08927599 0.99221900 0.99599789 0.48727135;
+	-6.09238859 -0.00250528 0.00149413 7.08988331 0.99222488 0.99600059 0.48728936;
+	-6.09299221 -0.00250351 0.00149320 7.09048871 0.99223076 0.99600329 0.48730732;
+	-6.09359392 -0.00250174 0.00149228 7.09109218 0.99223663 0.99600598 0.48732522;
+	-6.09419371 -0.00249997 0.00149136 7.09169374 0.99224249 0.99600867 0.48734306;
+	-6.09479159 -0.00249820 0.00149043 7.09229339 0.99224834 0.99601136 0.48736085;
+	-6.09538757 -0.00249644 0.00148951 7.09289113 0.99225419 0.99601405 0.48737859;
+	-6.09598165 -0.00249468 0.00148859 7.09348698 0.99226003 0.99601673 0.48739628;
+	-6.09657385 -0.00249292 0.00148767 7.09408093 0.99226586 0.99601942 0.48741390;
+	-6.09716415 -0.00249116 0.00148675 7.09467299 0.99227168 0.99602210 0.48743148;
+	-6.09775257 -0.00248940 0.00148583 7.09526317 0.99227749 0.99602477 0.48744900;
+	-6.09833912 -0.00248765 0.00148491 7.09585148 0.99228330 0.99602745 0.48746647;
+	-6.09892380 -0.00248589 0.00148399 7.09643791 0.99228910 0.99603012 0.48748389;
+	-6.09950662 -0.00248414 0.00148307 7.09702248 0.99229489 0.99603279 0.48750125;
+	-6.10008757 -0.00248239 0.00148215 7.09760518 0.99230068 0.99603545 0.48751856;
+	-6.10066667 -0.00248065 0.00148124 7.09818603 0.99230646 0.99603812 0.48753582;
+	-6.10124393 -0.00247890 0.00148032 7.09876503 0.99231223 0.99604078 0.48755302;
+	-6.10181934 -0.00247716 0.00147941 7.09934218 0.99231799 0.99604344 0.48757018;
+	-6.10239291 -0.00247542 0.00147849 7.09991749 0.99232374 0.99604609 0.48758728;
+	-6.10296465 -0.00247368 0.00147758 7.10049097 0.99232949 0.99604875 0.48760432;
+	-6.10353456 -0.00247194 0.00147666 7.10106262 0.99233523 0.99605140 0.48762132;
+	-6.10410265 -0.00247020 0.00147575 7.10163245 0.99234096 0.99605405 0.48763826;
+	-6.10466892 -0.00246847 0.00147484 7.10220045 0.99234669 0.99605669 0.48765516;
+	-6.10523338 -0.00246674 0.00147393 7.10276665 0.99235240 0.99605934 0.48767200;
+	-6.10579604 -0.00246501 0.00147301 7.10333103 0.99235811 0.99606198 0.48768879;
+	-6.10635689 -0.00246328 0.00147210 7.10389362 0.99236382 0.99606462 0.48770552;
+	-6.10691595 -0.00246155 0.00147119 7.10445440 0.99236951 0.99606725 0.48772221;
+	-6.10747322 -0.00245983 0.00147028 7.10501339 0.99237520 0.99606989 0.48773885;
+	-6.10802871 -0.00245811 0.00146937 7.10557060 0.99238088 0.99607252 0.48775543;
+	-6.10858241 -0.00245639 0.00146847 7.10612603 0.99238655 0.99607515 0.48777197;
+	-6.10913434 -0.00245467 0.00146756 7.10667967 0.99239222 0.99607777 0.48778845;
+	-6.10968450 -0.00245295 0.00146665 7.10723155 0.99239787 0.99608040 0.48780488;
+	-6.11023289 -0.00245123 0.00146575 7.10778166 0.99240353 0.99608302 0.48782127;
+	-6.11077953 -0.00244952 0.00146484 7.10833001 0.99240917 0.99608564 0.48783760;
+	-6.11132441 -0.00244781 0.00146393 7.10887660 0.99241480 0.99608825 0.48785388;
+	-6.11186754 -0.00244610 0.00146303 7.10942144 0.99242043 0.99609087 0.48787012;
+	-6.11240893 -0.00244439 0.00146213 7.10996454 0.99242605 0.99609348 0.48788630;
+	-6.11294858 -0.00244269 0.00146122 7.11050589 0.99243167 0.99609609 0.48790243;
+	-6.11348649 -0.00244098 0.00146032 7.11104551 0.99243728 0.99609869 0.48791852;
+	-6.11402268 -0.00243928 0.00145942 7.11158340 0.99244288 0.99610130 0.48793455;
+	-6.11455714 -0.00243758 0.00145852 7.11211956 0.99244847 0.99610390 0.48795053;
+	-6.11508989 -0.00243588 0.00145762 7.11265400 0.99245405 0.99610650 0.48796647;
+	-6.11562092 -0.00243419 0.00145672 7.11318673 0.99245963 0.99610909 0.48798236;
+	-6.11615024 -0.00243249 0.00145582 7.11371775 0.99246520 0.99611169 0.48799820;
+	-6.11667786 -0.00243080 0.00145492 7.11424706 0.99247077 0.99611428 0.48801399;
+	-6.11720378 -0.00242911 0.00145402 7.11477467 0.99247632 0.99611687 0.48802973;
+	-6.11772800 -0.00242742 0.00145312 7.11530058 0.99248187 0.99611945 0.48804543;
+	-6.11825054 -0.00242574 0.00145223 7.11582481 0.99248741 0.99612204 0.48806107;
+	-6.11877140 -0.00242405 0.00145133 7.11634735 0.99249295 0.99612462 0.48807667;
+	-6.11929057 -0.00242237 0.00145043 7.11686820 0.99249847 0.99612720 0.48809222;
+	-6.11980807 -0.00242069 0.00144954 7.11738739 0.99250400 0.99612978 0.48810772;
+	-6.12032390 -0.00241901 0.00144864 7.11790490 0.99250951 0.99613235 0.48812317;
+	-6.12083807 -0.00241733 0.00144775 7.11842074 0.99251501 0.99613492 0.48813858;
+	-6.12135058 -0.00241565 0.00144686 7.11893493 0.99252051 0.99613749 0.48815394;
+	-6.12186144 -0.00241398 0.00144597 7.11944746 0.99252601 0.99614006 0.48816925;
+	-6.12237064 -0.00241231 0.00144507 7.11995834 0.99253149 0.99614262 0.48818451;
+	-6.12287820 -0.00241064 0.00144418 7.12046757 0.99253697 0.99614518 0.48819973;
+	-6.12338412 -0.00240897 0.00144329 7.12097516 0.99254244 0.99614774 0.48821490;
+	-6.12388841 -0.00240730 0.00144240 7.12148111 0.99254790 0.99615030 0.48823002;
+	-6.12439107 -0.00240563 0.00144151 7.12198543 0.99255336 0.99615285 0.48824510;
+	-6.12489210 -0.00240397 0.00144062 7.12248813 0.99255881 0.99615540 0.48826013;
+	-6.12539151 -0.00240231 0.00143974 7.12298920 0.99256425 0.99615795 0.48827512;
+	-6.12588931 -0.00240065 0.00143885 7.12348866 0.99256969 0.99616050 0.48829005;
+	-6.12638549 -0.00239899 0.00143796 7.12398650 0.99257512 0.99616304 0.48830495;
+	-6.12688007 -0.00239734 0.00143708 7.12448273 0.99258054 0.99616559 0.48831979;
+	-6.12737305 -0.00239568 0.00143619 7.12497736 0.99258596 0.99616813 0.48833460;
+	-6.12786443 -0.00239403 0.00143531 7.12547040 0.99259136 0.99617066 0.48834935;
+	-6.12835422 -0.00239238 0.00143442 7.12596184 0.99259676 0.99617320 0.48836406;
+	-6.12884242 -0.00239073 0.00143354 7.12645169 0.99260216 0.99617573 0.48837872;
+	-6.12932904 -0.00238908 0.00143266 7.12693996 0.99260755 0.99617826 0.48839334;
+	-6.12981408 -0.00238744 0.00143177 7.12742664 0.99261293 0.99618079 0.48840792;
+	-6.13029755 -0.00238580 0.00143089 7.12791176 0.99261830 0.99618331 0.48842244;
+	-6.13077945 -0.00238416 0.00143001 7.12839530 0.99262367 0.99618583 0.48843693;
+	-6.13125979 -0.00238252 0.00142913 7.12887728 0.99262903 0.99618835 0.48845136;
+	-6.13173857 -0.00238088 0.00142825 7.12935769 0.99263438 0.99619087 0.48846576;
+	-6.13221579 -0.00237924 0.00142737 7.12983655 0.99263972 0.99619339 0.48848011;
+	-6.13269147 -0.00237761 0.00142649 7.13031386 0.99264506 0.99619590 0.48849441;
+	-6.13316560 -0.00237598 0.00142562 7.13078962 0.99265040 0.99619841 0.48850867;
+	-6.13363819 -0.00237434 0.00142474 7.13126384 0.99265572 0.99620092 0.48852289;
+	-6.13410924 -0.00237272 0.00142386 7.13173652 0.99266104 0.99620342 0.48853706;
+	-6.13457876 -0.00237109 0.00142299 7.13220767 0.99266635 0.99620593 0.48855119;
+	-6.13504676 -0.00236946 0.00142211 7.13267729 0.99267166 0.99620843 0.48856528;
+	-6.13551323 -0.00236784 0.00142124 7.13314539 0.99267696 0.99621092 0.48857932;
+	-6.13597818 -0.00236622 0.00142036 7.13361197 0.99268225 0.99621342 0.48859332;
+	-6.13644163 -0.00236460 0.00141949 7.13407703 0.99268753 0.99621591 0.48860727;
+	-6.13690356 -0.00236298 0.00141862 7.13454058 0.99269281 0.99621840 0.48862118;
+	-6.13736399 -0.00236136 0.00141774 7.13500263 0.99269808 0.99622089 0.48863505;
+	-6.13782292 -0.00235975 0.00141687 7.13546317 0.99270335 0.99622338 0.48864888;
+	-6.13828035 -0.00235814 0.00141600 7.13592222 0.99270861 0.99622586 0.48866266;
+	-6.13873630 -0.00235652 0.00141513 7.13637977 0.99271386 0.99622834 0.48867640;
+	-6.13919076 -0.00235492 0.00141426 7.13683584 0.99271910 0.99623082 0.48869010;
+	-6.13964373 -0.00235331 0.00141339 7.13729042 0.99272434 0.99623330 0.48870375;
+	-6.14009523 -0.00235170 0.00141253 7.13774353 0.99272957 0.99623577 0.48871736;
+	-6.14054526 -0.00235010 0.00141166 7.13819516 0.99273480 0.99623824 0.48873093;
+	-6.14099381 -0.00234850 0.00141079 7.13864532 0.99274001 0.99624071 0.48874446;
+	-6.14144091 -0.00234689 0.00140993 7.13909401 0.99274523 0.99624318 0.48875794;
+	-6.14188654 -0.00234530 0.00140906 7.13954125 0.99275043 0.99624564 0.48877139;
+	-6.14233072 -0.00234370 0.00140820 7.13998702 0.99275563 0.99624811 0.48878479;
+	-6.14277345 -0.00234210 0.00140733 7.14043134 0.99276082 0.99625057 0.48879815;
+	-6.14321473 -0.00234051 0.00140647 7.14087422 0.99276601 0.99625302 0.48881147;
+	-6.14365457 -0.00233892 0.00140561 7.14131565 0.99277118 0.99625548 0.48882475;
+	-6.14409297 -0.00233733 0.00140474 7.14175564 0.99277636 0.99625793 0.48883798;
+	-6.14452994 -0.00233574 0.00140388 7.14219420 0.99278152 0.99626038 0.48885118;
+	-6.14496548 -0.00233415 0.00140302 7.14263132 0.99278668 0.99626283 0.48886433;
+	-6.14539959 -0.00233257 0.00140216 7.14306702 0.99279183 0.99626527 0.48887745;
+	-6.14583228 -0.00233098 0.00140130 7.14350130 0.99279698 0.99626772 0.48889052;
+	-6.14626356 -0.00232940 0.00140044 7.14393416 0.99280212 0.99627016 0.48890355;
+	-6.14669342 -0.00232782 0.00139958 7.14436560 0.99280725 0.99627259 0.48891654;
+	-6.14712188 -0.00232625 0.00139873 7.14479564 0.99281238 0.99627503 0.48892949;
+	-6.14754894 -0.00232467 0.00139787 7.14522427 0.99281750 0.99627746 0.48894240;
+	-6.14797459 -0.00232309 0.00139701 7.14565150 0.99282261 0.99627989 0.48895527;
+	-6.14839885 -0.00232152 0.00139616 7.14607733 0.99282772 0.99628232 0.48896810;
+	-6.14882172 -0.00231995 0.00139530 7.14650177 0.99283282 0.99628475 0.48898089;
+	-6.14924320 -0.00231838 0.00139445 7.14692482 0.99283791 0.99628717 0.48899364;
+	-6.14966330 -0.00231681 0.00139359 7.14734649 0.99284300 0.99628959 0.48900634;
+	-6.15008202 -0.00231525 0.00139274 7.14776677 0.99284808 0.99629201 0.48901902;
+	-6.15049937 -0.00231368 0.00139189 7.14818569 0.99285316 0.99629443 0.48903165;
+	-6.15091535 -0.00231212 0.00139104 7.14860323 0.99285823 0.99629684 0.48904424;
+	-6.15132996 -0.00231056 0.00139018 7.14901940 0.99286329 0.99629926 0.48905679;
+	-6.15174321 -0.00230900 0.00138933 7.14943421 0.99286834 0.99630166 0.48906930;
+	-6.15215510 -0.00230744 0.00138848 7.14984766 0.99287339 0.99630407 0.48908178;
+	-6.15256564 -0.00230589 0.00138763 7.15025975 0.99287844 0.99630648 0.48909421;
+	-6.15297483 -0.00230433 0.00138679 7.15067050 0.99288347 0.99630888 0.48910661;
+	-6.15338268 -0.00230278 0.00138594 7.15107989 0.99288850 0.99631128 0.48911897;
+	-6.15378918 -0.00230123 0.00138509 7.15148795 0.99289353 0.99631368 0.48913128;
+	-6.15419435 -0.00229968 0.00138424 7.15189467 0.99289855 0.99631607 0.48914356;
+	-6.15459818 -0.00229814 0.00138340 7.15230005 0.99290356 0.99631847 0.48915581;
+	-6.15500069 -0.00229659 0.00138255 7.15270410 0.99290856 0.99632086 0.48916801;
+	-6.15540187 -0.00229505 0.00138171 7.15310682 0.99291356 0.99632324 0.48918017;
+	-6.15580173 -0.00229350 0.00138087 7.15350822 0.99291855 0.99632563 0.48919230;
+	-6.15620027 -0.00229196 0.00138002 7.15390831 0.99292354 0.99632801 0.48920439;
+	-6.15659750 -0.00229042 0.00137918 7.15430708 0.99292852 0.99633040 0.48921644;
+	-6.15699342 -0.00228889 0.00137834 7.15470454 0.99293349 0.99633278 0.48922846;
+	-6.15738804 -0.00228735 0.00137750 7.15510069 0.99293846 0.99633515 0.48924043;
+	-6.15778136 -0.00228582 0.00137666 7.15549554 0.99294342 0.99633753 0.48925237;
+	-6.15817338 -0.00228429 0.00137582 7.15588909 0.99294838 0.99633990 0.48926427;
+	-6.15856410 -0.00228276 0.00137498 7.15628135 0.99295333 0.99634227 0.48927613;
+	-6.15895354 -0.00228123 0.00137414 7.15667231 0.99295827 0.99634464 0.48928796;
+	-6.15934170 -0.00227970 0.00137330 7.15706199 0.99296321 0.99634700 0.48929975;
+	-6.15972857 -0.00227818 0.00137246 7.15745039 0.99296814 0.99634936 0.48931151;
+	-6.16011416 -0.00227665 0.00137162 7.15783751 0.99297306 0.99635172 0.48932322;
+	-6.16049848 -0.00227513 0.00137079 7.15822335 0.99297798 0.99635408 0.48933490;
+	-6.16088154 -0.00227361 0.00136995 7.15860793 0.99298289 0.99635644 0.48934654;
+	-6.16126332 -0.00227209 0.00136912 7.15899123 0.99298780 0.99635879 0.48935815;
+	-6.16164385 -0.00227057 0.00136828 7.15937328 0.99299270 0.99636114 0.48936972;
+	-6.16202312 -0.00226906 0.00136745 7.15975406 0.99299759 0.99636349 0.48938125;
+	-6.16240113 -0.00226754 0.00136662 7.16013359 0.99300248 0.99636584 0.48939275;
+	-6.16277790 -0.00226603 0.00136579 7.16051186 0.99300736 0.99636818 0.48940421;
+	-6.16315341 -0.00226452 0.00136495 7.16088889 0.99301224 0.99637052 0.48941563;
+	-6.16352769 -0.00226301 0.00136412 7.16126468 0.99301711 0.99637286 0.48942702;
+	-6.16390073 -0.00226151 0.00136329 7.16163922 0.99302197 0.99637520 0.48943837;
+	-6.16427253 -0.00226000 0.00136246 7.16201253 0.99302683 0.99637753 0.48944969;
+	-6.16464310 -0.00225850 0.00136164 7.16238461 0.99303168 0.99637987 0.48946098;
+	-6.16501245 -0.00225700 0.00136081 7.16275545 0.99303653 0.99638220 0.48947222;
+	-6.16538057 -0.00225549 0.00135998 7.16312507 0.99304136 0.99638453 0.48948343;
+	-6.16574747 -0.00225400 0.00135915 7.16349348 0.99304620 0.99638685 0.48949461;
+	-6.16611316 -0.00225250 0.00135833 7.16386066 0.99305103 0.99638918 0.48950575;
+	-6.16647763 -0.00225100 0.00135750 7.16422663 0.99305585 0.99639150 0.48951685;
+	-6.16684090 -0.00224951 0.00135668 7.16459139 0.99306066 0.99639382 0.48952792;
+	-6.16720296 -0.00224802 0.00135585 7.16495494 0.99306547 0.99639613 0.48953896;
+	-6.16756382 -0.00224653 0.00135503 7.16531729 0.99307027 0.99639845 0.48954996;
+	-6.16792348 -0.00224504 0.00135421 7.16567845 0.99307507 0.99640076 0.48956093;
+	-6.16828195 -0.00224355 0.00135338 7.16603840 0.99307986 0.99640307 0.48957186;
+	-6.16863923 -0.00224206 0.00135256 7.16639717 0.99308465 0.99640538 0.48958276;
+	-6.16899533 -0.00224058 0.00135174 7.16675475 0.99308943 0.99640768 0.48959363;
+	-6.16935024 -0.00223910 0.00135092 7.16711114 0.99309420 0.99640998 0.48960445;
+	-6.16970397 -0.00223762 0.00135010 7.16746636 0.99309897 0.99641228 0.48961525;
+	-6.17005653 -0.00223614 0.00134928 7.16782039 0.99310373 0.99641458 0.48962601;
+	-6.17040791 -0.00223466 0.00134846 7.16817326 0.99310849 0.99641688 0.48963673;
+	-6.17075813 -0.00223318 0.00134765 7.16852495 0.99311324 0.99641917 0.48964743;
+	-6.17110719 -0.00223171 0.00134683 7.16887548 0.99311798 0.99642146 0.48965809;
+	-6.17145508 -0.00223024 0.00134601 7.16922484 0.99312272 0.99642375 0.48966871;
+	-6.17180182 -0.00222876 0.00134520 7.16957305 0.99312745 0.99642604 0.48967931;
+	-6.17214740 -0.00222729 0.00134438 7.16992010 0.99313218 0.99642832 0.48968987;
+	-6.17249183 -0.00222583 0.00134357 7.17026601 0.99313690 0.99643061 0.48970039;
+	-6.17283512 -0.00222436 0.00134275 7.17061076 0.99314162 0.99643289 0.48971088;
+	-6.17317726 -0.00222289 0.00134194 7.17095437 0.99314633 0.99643517 0.48972134;
+	-6.17351827 -0.00222143 0.00134113 7.17129683 0.99315103 0.99643744 0.48973177;
+	-6.17385813 -0.00221997 0.00134032 7.17163816 0.99315573 0.99643971 0.48974217;
+	-6.17419687 -0.00221851 0.00133950 7.17197836 0.99316042 0.99644199 0.48975252;
+	-6.17453448 -0.00221705 0.00133869 7.17231743 0.99316511 0.99644425 0.48976285;
+	-6.17487096 -0.00221559 0.00133788 7.17265537 0.99316979 0.99644652 0.48977314;
+	-6.17520632 -0.00221414 0.00133708 7.17299218 0.99317446 0.99644879 0.48978341;
+	-6.17554056 -0.00221269 0.00133627 7.17332788 0.99317913 0.99645105 0.48979364;
+	-6.17587369 -0.00221123 0.00133546 7.17366246 0.99318379 0.99645331 0.48980384;
+	-6.17620571 -0.00220978 0.00133465 7.17399593 0.99318845 0.99645557 0.48981400;
+	-6.17653662 -0.00220833 0.00133385 7.17432829 0.99319310 0.99645782 0.48982414;
+	-6.17686642 -0.00220689 0.00133304 7.17465954 0.99319775 0.99646007 0.48983424;
+	-6.17719513 -0.00220544 0.00133223 7.17498969 0.99320239 0.99646233 0.48984431;
+	-6.17752273 -0.00220400 0.00133143 7.17531874 0.99320702 0.99646457 0.48985434;
+	-6.17784925 -0.00220255 0.00133063 7.17564669 0.99321165 0.99646682 0.48986435;
+	-6.17817467 -0.00220111 0.00132982 7.17597356 0.99321628 0.99646906 0.48987432;
+	-6.17849900 -0.00219967 0.00132902 7.17629933 0.99322089 0.99647131 0.48988427;
+	-6.17882225 -0.00219823 0.00132822 7.17662402 0.99322551 0.99647355 0.48989418;
+	-6.17914442 -0.00219680 0.00132742 7.17694762 0.99323011 0.99647578 0.48990406;
+	-6.17946552 -0.00219536 0.00132662 7.17727015 0.99323471 0.99647802 0.48991391;
+	-6.17978554 -0.00219393 0.00132582 7.17759161 0.99323931 0.99648025 0.48992373;
+	-6.18010448 -0.00219250 0.00132502 7.17791199 0.99324390 0.99648248 0.48993351;
+	-6.18042237 -0.00219107 0.00132422 7.17823130 0.99324848 0.99648471 0.48994327;
+	-6.18073919 -0.00218964 0.00132342 7.17854955 0.99325306 0.99648694 0.48995299;
+	-6.18105494 -0.00218821 0.00132262 7.17886673 0.99325763 0.99648916 0.48996269;
+	-6.18136964 -0.00218679 0.00132183 7.17918286 0.99326220 0.99649139 0.48997235;
+	-6.18168329 -0.00218536 0.00132103 7.17949793 0.99326676 0.99649361 0.48998198;
+	-6.18199589 -0.00218394 0.00132024 7.17981195 0.99327132 0.99649582 0.48999158;
+	-6.18230744 -0.00218252 0.00131944 7.18012492 0.99327587 0.99649804 0.49000115;
+	-6.18261795 -0.00218110 0.00131865 7.18043684 0.99328041 0.99650025 0.49001070;
+	-6.18292741 -0.00217968 0.00131785 7.18074773 0.99328495 0.99650246 0.49002020;
+	-6.18323584 -0.00217827 0.00131706 7.18105757 0.99328949 0.99650467 0.49002969;
+	-6.18354323 -0.00217685 0.00131627 7.18136638 0.99329401 0.99650688 0.49003913;
+	-6.18384960 -0.00217544 0.00131548 7.18167416 0.99329854 0.99650908 0.49004855;
+	-6.18415493 -0.00217403 0.00131469 7.18198091 0.99330305 0.99651129 0.49005794;
+	-6.18445924 -0.00217262 0.00131390 7.18228663 0.99330757 0.99651349 0.49006730;
+	-6.18476253 -0.00217121 0.00131311 7.18259133 0.99331207 0.99651568 0.49007664;
+	-6.18506481 -0.00216980 0.00131232 7.18289501 0.99331657 0.99651788 0.49008594;
+	-6.18536606 -0.00216840 0.00131153 7.18319767 0.99332107 0.99652007 0.49009521;
+	-6.18566631 -0.00216699 0.00131074 7.18349932 0.99332556 0.99652226 0.49010445;
+	-6.18596555 -0.00216559 0.00130996 7.18379996 0.99333004 0.99652445 0.49011367;
+	-6.18626378 -0.00216419 0.00130917 7.18409959 0.99333452 0.99652664 0.49012285;
+	-6.18656101 -0.00216279 0.00130839 7.18439822 0.99333900 0.99652882 0.49013200;
+	-6.18685724 -0.00216139 0.00130760 7.18469585 0.99334346 0.99653101 0.49014113;
+	-6.18715248 -0.00216000 0.00130682 7.18499249 0.99334793 0.99653319 0.49015022;
+	-6.18744673 -0.00215860 0.00130603 7.18528812 0.99335238 0.99653537 0.49015929;
+	-6.18773998 -0.00215721 0.00130525 7.18558277 0.99335684 0.99653754 0.49016833;
+	-6.18803225 -0.00215582 0.00130447 7.18587643 0.99336128 0.99653972 0.49017734;
+	-6.18832353 -0.00215443 0.00130369 7.18616911 0.99336572 0.99654189 0.49018632;
+	-6.18861384 -0.00215304 0.00130291 7.18646080 0.99337016 0.99654406 0.49019527;
+	-6.18890316 -0.00215165 0.00130213 7.18675152 0.99337459 0.99654622 0.49020420;
+	-6.18919152 -0.00215026 0.00130135 7.18704125 0.99337901 0.99654839 0.49021309;
+	-6.18947890 -0.00214888 0.00130057 7.18733002 0.99338343 0.99655055 0.49022196;
+	-6.18976532 -0.00214750 0.00129979 7.18761782 0.99338785 0.99655271 0.49023080;
+	-6.19005077 -0.00214612 0.00129901 7.18790465 0.99339226 0.99655487 0.49023961;
+	-6.19033526 -0.00214474 0.00129823 7.18819052 0.99339666 0.99655703 0.49024839;
+	-6.19061879 -0.00214336 0.00129746 7.18847543 0.99340106 0.99655918 0.49025714;
+	-6.19090136 -0.00214198 0.00129668 7.18875938 0.99340545 0.99656134 0.49026588;
+	-6.19118298 -0.00214061 0.00129591 7.18904238 0.99340984 0.99656349 0.49027457;
+	-6.19146366 -0.00213923 0.00129513 7.18932442 0.99341422 0.99656563 0.49028324;
+	-6.19174338 -0.00213786 0.00129436 7.18960552 0.99341860 0.99656778 0.49029189;
+	-6.19202217 -0.00213649 0.00129359 7.18988568 0.99342297 0.99656992 0.49030051;
+	-6.19230001 -0.00213512 0.00129281 7.19016489 0.99342734 0.99657207 0.49030909;
+	-6.19257691 -0.00213375 0.00129204 7.19044316 0.99343170 0.99657421 0.49031766;
+	-6.19285288 -0.00213239 0.00129127 7.19072050 0.99343606 0.99657634 0.49032619;
+	-6.19312792 -0.00213102 0.00129050 7.19099690 0.99344041 0.99657848 0.49033470;
+	-6.19340203 -0.00212966 0.00128973 7.19127237 0.99344475 0.99658061 0.49034317;
+	-6.19367521 -0.00212830 0.00128896 7.19154692 0.99344909 0.99658274 0.49035163;
+	-6.19394748 -0.00212694 0.00128819 7.19182054 0.99345343 0.99658487 0.49036006;
+	-6.19421882 -0.00212558 0.00128743 7.19209324 0.99345776 0.99658700 0.49036845;
+	-6.19448924 -0.00212422 0.00128666 7.19236502 0.99346208 0.99658912 0.49037683;
+	-6.19475875 -0.00212286 0.00128589 7.19263589 0.99346640 0.99659124 0.49038517;
+	-6.19502735 -0.00212151 0.00128513 7.19290584 0.99347072 0.99659336 0.49039349;
+	-6.19529504 -0.00212016 0.00128436 7.19317489 0.99347503 0.99659548 0.49040178;
+	-6.19556183 -0.00211880 0.00128360 7.19344302 0.99347933 0.99659760 0.49041005;
+	-6.19582771 -0.00211745 0.00128283 7.19371026 0.99348363 0.99659971 0.49041829;
+	-6.19609270 -0.00211611 0.00128207 7.19397659 0.99348792 0.99660182 0.49042650;
+	-6.19635678 -0.00211476 0.00128131 7.19424203 0.99349221 0.99660393 0.49043469;
+	-6.19661998 -0.00211341 0.00128054 7.19450656 0.99349650 0.99660604 0.49044285;
+	-6.19688228 -0.00211207 0.00127978 7.19477021 0.99350077 0.99660815 0.49045099;
+	-6.19714369 -0.00211073 0.00127902 7.19503297 0.99350505 0.99661025 0.49045909;
+	-6.19740422 -0.00210938 0.00127826 7.19529484 0.99350932 0.99661235 0.49046717;
+	-6.19766387 -0.00210804 0.00127750 7.19555583 0.99351358 0.99661445 0.49047523;
+	-6.19792264 -0.00210671 0.00127674 7.19581593 0.99351784 0.99661655 0.49048326;
+	-6.19818053 -0.00210537 0.00127599 7.19607516 0.99352209 0.99661864 0.49049127;
+	-6.19843754 -0.00210403 0.00127523 7.19633351 0.99352634 0.99662074 0.49049925;
+	-6.19869369 -0.00210270 0.00127447 7.19659099 0.99353058 0.99662283 0.49050720;
+	-6.19894896 -0.00210137 0.00127372 7.19684760 0.99353482 0.99662492 0.49051513;
+	-6.19920337 -0.00210004 0.00127296 7.19710334 0.99353905 0.99662700 0.49052303;
+	-6.19945692 -0.00209871 0.00127221 7.19735822 0.99354328 0.99662909 0.49053091;
+	-6.19970961 -0.00209738 0.00127145 7.19761223 0.99354750 0.99663117 0.49053876;
+	-6.19996144 -0.00209605 0.00127070 7.19786539 0.99355172 0.99663325 0.49054659;
+	-6.20021242 -0.00209473 0.00126995 7.19811769 0.99355593 0.99663533 0.49055439;
+	-6.20046254 -0.00209340 0.00126919 7.19836914 0.99356014 0.99663741 0.49056217;
+	-6.20071181 -0.00209208 0.00126844 7.19861973 0.99356434 0.99663948 0.49056992;
+	-6.20096024 -0.00209076 0.00126769 7.19886948 0.99356854 0.99664155 0.49057765;
+	-6.20120782 -0.00208944 0.00126694 7.19911839 0.99357273 0.99664362 0.49058536;
+	-6.20145457 -0.00208812 0.00126619 7.19936645 0.99357692 0.99664569 0.49059304;
+	-6.20170047 -0.00208680 0.00126544 7.19961367 0.99358110 0.99664776 0.49060069;
+	-6.20194554 -0.00208549 0.00126469 7.19986005 0.99358528 0.99664982 0.49060832;
+	-6.20218978 -0.00208417 0.00126395 7.20010560 0.99358945 0.99665188 0.49061593;
+	-6.20243318 -0.00208286 0.00126320 7.20035032 0.99359362 0.99665394 0.49062351;
+	-6.20267576 -0.00208155 0.00126245 7.20059421 0.99359778 0.99665600 0.49063106;
+	-6.20291751 -0.00208024 0.00126171 7.20083727 0.99360194 0.99665805 0.49063859;
+	-6.20315844 -0.00207893 0.00126096 7.20107951 0.99360609 0.99666011 0.49064611;
+	-6.20339855 -0.00207762 0.00126022 7.20132093 0.99361024 0.99666216 0.49065358;
+	-6.20363785 -0.00207632 0.00125947 7.20156153 0.99361438 0.99666421 0.49066104;
+	-6.20387633 -0.00207501 0.00125873 7.20180131 0.99361852 0.99666626 0.49066848;
+	-6.20411399 -0.00207371 0.00125799 7.20204028 0.99362265 0.99666830 0.49067589;
+	-6.20435085 -0.00207241 0.00125725 7.20227844 0.99362678 0.99667034 0.49068328;
+	-6.20458690 -0.00207111 0.00125650 7.20251579 0.99363090 0.99667238 0.49069064;
+	-6.20482215 -0.00206981 0.00125576 7.20275234 0.99363502 0.99667442 0.49069799;
+	-6.20505660 -0.00206852 0.00125502 7.20298808 0.99363914 0.99667646 0.49070530;
+	-6.20529024 -0.00206722 0.00125428 7.20322302 0.99364325 0.99667850 0.49071260;
+	-6.20552310 -0.00206593 0.00125355 7.20345717 0.99364735 0.99668053 0.49071987;
+	-6.20575515 -0.00206463 0.00125281 7.20369052 0.99365145 0.99668256 0.49072711;
+	-6.20598642 -0.00206334 0.00125207 7.20392308 0.99365554 0.99668459 0.49073434;
+	-6.20621690 -0.00206205 0.00125133 7.20415485 0.99365963 0.99668662 0.49074154;
+	-6.20644659 -0.00206076 0.00125060 7.20438583 0.99366372 0.99668864 0.49074872;
+	-6.20667550 -0.00205947 0.00124986 7.20461602 0.99366780 0.99669066 0.49075587;
+	-6.20690362 -0.00205819 0.00124913 7.20484543 0.99367187 0.99669268 0.49076300;
+	-6.20713097 -0.00205690 0.00124839 7.20507407 0.99367594 0.99669470 0.49077011;
+	-6.20735754 -0.00205562 0.00124766 7.20530192 0.99368001 0.99669672 0.49077720;
+	-6.20758334 -0.00205434 0.00124693 7.20552900 0.99368407 0.99669873 0.49078426;
+	-6.20780837 -0.00205306 0.00124619 7.20575531 0.99368812 0.99670075 0.49079130;
+	-6.20803263 -0.00205178 0.00124546 7.20598085 0.99369217 0.99670276 0.49079832;
+	-6.20825612 -0.00205050 0.00124473 7.20620562 0.99369622 0.99670477 0.49080531;
+	-6.20847885 -0.00204923 0.00124400 7.20642963 0.99370026 0.99670677 0.49081228;
+	-6.20870082 -0.00204795 0.00124327 7.20665287 0.99370430 0.99670878 0.49081924;
+	-6.20892203 -0.00204668 0.00124254 7.20687536 0.99370833 0.99671078 0.49082617;
+	-6.20914249 -0.00204540 0.00124181 7.20709708 0.99371236 0.99671278 0.49083307;
+	-6.20936219 -0.00204413 0.00124109 7.20731805 0.99371638 0.99671478 0.49083996;
+	-6.20958114 -0.00204286 0.00124036 7.20753827 0.99372040 0.99671678 0.49084681;
+	-6.20979934 -0.00204160 0.00123963 7.20775774 0.99372441 0.99671877 0.49085365;
+	-6.21001679 -0.00204033 0.00123891 7.20797646 0.99372842 0.99672076 0.49086047;
+	-6.21023350 -0.00203906 0.00123818 7.20819444 0.99373242 0.99672275 0.49086727;
+	-6.21044947 -0.00203780 0.00123746 7.20841167 0.99373642 0.99672474 0.49087404;
+	-6.21066470 -0.00203654 0.00123673 7.20862816 0.99374042 0.99672673 0.49088079;
+	-6.21087920 -0.00203528 0.00123601 7.20884392 0.99374441 0.99672871 0.49088752;
+	-6.21109295 -0.00203402 0.00123529 7.20905894 0.99374839 0.99673070 0.49089423;
+	-6.21130598 -0.00203276 0.00123456 7.20927322 0.99375237 0.99673268 0.49090092;
+	-6.21151828 -0.00203150 0.00123384 7.20948678 0.99375635 0.99673466 0.49090759;
+	-6.21172985 -0.00203024 0.00123312 7.20969960 0.99376032 0.99673663 0.49091423;
+	-6.21194069 -0.00202899 0.00123240 7.20991170 0.99376428 0.99673861 0.49092085;
+	-6.21215082 -0.00202774 0.00123168 7.21012308 0.99376825 0.99674058 0.49092745;
+	-6.21236022 -0.00202648 0.00123096 7.21033373 0.99377220 0.99674255 0.49093403;
+	-6.21256890 -0.00202523 0.00123025 7.21054367 0.99377616 0.99674452 0.49094059;
+	-6.21277687 -0.00202398 0.00122953 7.21075289 0.99378010 0.99674649 0.49094712;
+	-6.21298413 -0.00202274 0.00122881 7.21096139 0.99378405 0.99674845 0.49095364;
+	-6.21319067 -0.00202149 0.00122809 7.21116918 0.99378798 0.99675042 0.49096013;
+	-6.21339651 -0.00202025 0.00122738 7.21137627 0.99379192 0.99675238 0.49096661;
+	-6.21360164 -0.00201900 0.00122666 7.21158264 0.99379585 0.99675434 0.49097306;
+	-6.21380607 -0.00201776 0.00122595 7.21178831 0.99379977 0.99675629 0.49097950;
+	-6.21400979 -0.00201652 0.00122523 7.21199328 0.99380369 0.99675825 0.49098591;
+	-6.21421282 -0.00201528 0.00122452 7.21219754 0.99380761 0.99676020 0.49099230;
+	-6.21441515 -0.00201404 0.00122381 7.21240111 0.99381152 0.99676215 0.49099867;
+	-6.21461678 -0.00201280 0.00122310 7.21260398 0.99381543 0.99676410 0.49100502;
+	-6.21481773 -0.00201157 0.00122239 7.21280616 0.99381933 0.99676605 0.49101135;
+	-6.21501798 -0.00201033 0.00122167 7.21300765 0.99382323 0.99676799 0.49101767;
+	-6.21521754 -0.00200910 0.00122096 7.21320844 0.99382712 0.99676994 0.49102395;
+	-6.21541642 -0.00200787 0.00122026 7.21340855 0.99383101 0.99677188 0.49103022;
+	-6.21561461 -0.00200664 0.00121955 7.21360798 0.99383489 0.99677382 0.49103647;
+	-6.21581213 -0.00200541 0.00121884 7.21380672 0.99383877 0.99677575 0.49104269;
+	-6.21600896 -0.00200418 0.00121813 7.21400478 0.99384265 0.99677769 0.49104891;
+	-6.21620512 -0.00200295 0.00121742 7.21420217 0.99384652 0.99677962 0.49105509;
+	-6.21640060 -0.00200173 0.00121672 7.21439887 0.99385038 0.99678156 0.49106126;
+	-6.21659541 -0.00200050 0.00121601 7.21459491 0.99385424 0.99678349 0.49106741;
+	-6.21678955 -0.00199928 0.00121531 7.21479027 0.99385810 0.99678541 0.49107353;
+	-6.21698302 -0.00199806 0.00121460 7.21498497 0.99386195 0.99678734 0.49107964;
+	-6.21717583 -0.00199684 0.00121390 7.21517899 0.99386580 0.99678926 0.49108574;
+	-6.21736797 -0.00199562 0.00121320 7.21537235 0.99386965 0.99679119 0.49109180;
+	-6.21755945 -0.00199440 0.00121249 7.21556505 0.99387349 0.99679311 0.49109786;
+	-6.21775028 -0.00199319 0.00121179 7.21575709 0.99387732 0.99679502 0.49110388;
+	-6.21794044 -0.00199197 0.00121109 7.21594847 0.99388115 0.99679694 0.49110989;
+	-6.21812995 -0.00199076 0.00121039 7.21613919 0.99388498 0.99679885 0.49111588;
+	-6.21831881 -0.00198955 0.00120969 7.21632926 0.99388880 0.99680077 0.49112186;
+	-6.21850702 -0.00198833 0.00120899 7.21651868 0.99389261 0.99680268 0.49112781;
+	-6.21869457 -0.00198712 0.00120829 7.21670745 0.99389643 0.99680459 0.49113374;
+	-6.21888149 -0.00198592 0.00120759 7.21689557 0.99390024 0.99680649 0.49113965;
+	-6.21906775 -0.00198471 0.00120689 7.21708304 0.99390404 0.99680840 0.49114555;
+	-6.21925338 -0.00198350 0.00120620 7.21726987 0.99390784 0.99681030 0.49115142;
+	-6.21943836 -0.00198230 0.00120550 7.21745606 0.99391163 0.99681220 0.49115728;
+	-6.21962271 -0.00198110 0.00120481 7.21764161 0.99391542 0.99681410 0.49116312;
+	-6.21980642 -0.00197989 0.00120411 7.21782653 0.99391921 0.99681600 0.49116895;
+	-6.21998950 -0.00197869 0.00120342 7.21801081 0.99392299 0.99681789 0.49117474;
+	-6.22017194 -0.00197749 0.00120272 7.21819445 0.99392677 0.99681979 0.49118052;
+	-6.22035376 -0.00197630 0.00120203 7.21837746 0.99393054 0.99682168 0.49118629;
+	-6.22053495 -0.00197510 0.00120134 7.21855985 0.99393431 0.99682357 0.49119203;
+	-6.22071551 -0.00197390 0.00120064 7.21874161 0.99393808 0.99682545 0.49119776;
+	-6.22089545 -0.00197271 0.00119995 7.21892274 0.99394184 0.99682734 0.49120347;
+	-6.22107477 -0.00197152 0.00119926 7.21910325 0.99394559 0.99682922 0.49120916;
+	-6.22125347 -0.00197032 0.00119857 7.21928314 0.99394935 0.99683111 0.49121482;
+	-6.22143155 -0.00196913 0.00119788 7.21946242 0.99395309 0.99683299 0.49122047;
+	-6.22160902 -0.00196794 0.00119719 7.21964107 0.99395684 0.99683486 0.49122611;
+	-6.22178587 -0.00196676 0.00119650 7.21981911 0.99396058 0.99683674 0.49123173;
+	-6.22196211 -0.00196557 0.00119582 7.21999654 0.99396431 0.99683861 0.49123732;
+	-6.22213774 -0.00196438 0.00119513 7.22017336 0.99396804 0.99684049 0.49124290;
+	-6.22231277 -0.00196320 0.00119444 7.22034957 0.99397177 0.99684236 0.49124846;
+	-6.22248719 -0.00196202 0.00119376 7.22052517 0.99397549 0.99684423 0.49125400;
+	-6.22266101 -0.00196083 0.00119307 7.22070017 0.99397920 0.99684609 0.49125953;
+	-6.22283422 -0.00195965 0.00119239 7.22087457 0.99398292 0.99684796 0.49126504;
+	-6.22300684 -0.00195848 0.00119170 7.22104836 0.99398663 0.99684982 0.49127053;
+	-6.22317886 -0.00195730 0.00119102 7.22122156 0.99399033 0.99685168 0.49127600;
+	-6.22335028 -0.00195612 0.00119034 7.22139416 0.99399403 0.99685354 0.49128145;
+	-6.22352111 -0.00195495 0.00118965 7.22156617 0.99399773 0.99685540 0.49128689;
+	-6.22369135 -0.00195377 0.00118897 7.22173758 0.99400142 0.99685726 0.49129231;
+	-6.22386100 -0.00195260 0.00118829 7.22190841 0.99400511 0.99685911 0.49129771;
+	-6.22403007 -0.00195143 0.00118761 7.22207864 0.99400879 0.99686096 0.49130310;
+	-6.22419854 -0.00195026 0.00118693 7.22224829 0.99401247 0.99686281 0.49130846;
+	-6.22436644 -0.00194909 0.00118625 7.22241735 0.99401615 0.99686466 0.49131381;
+	-6.22453375 -0.00194792 0.00118557 7.22258583 0.99401982 0.99686651 0.49131914;
+	-6.22470048 -0.00194675 0.00118490 7.22275373 0.99402348 0.99686835 0.49132446;
+	-6.22486664 -0.00194559 0.00118422 7.22292105 0.99402715 0.99687019 0.49132975;
+	-6.22503222 -0.00194442 0.00118354 7.22308780 0.99403081 0.99687204 0.49133503;
+	-6.22519722 -0.00194326 0.00118287 7.22325396 0.99403446 0.99687387 0.49134030;
+	-6.22536166 -0.00194210 0.00118219 7.22341956 0.99403811 0.99687571 0.49134554;
+	-6.22552552 -0.00194094 0.00118152 7.22358458 0.99404176 0.99687755 0.49135077;
+	-6.22568881 -0.00193978 0.00118084 7.22374904 0.99404540 0.99687938 0.49135598;
+	-6.22585154 -0.00193862 0.00118017 7.22391292 0.99404904 0.99688121 0.49136117;
+	-6.22601370 -0.00193746 0.00117950 7.22407624 0.99405267 0.99688304 0.49136635;
+	-6.22617531 -0.00193631 0.00117882 7.22423900 0.99405630 0.99688487 0.49137152;
+	-6.22633635 -0.00193515 0.00117815 7.22440119 0.99405992 0.99688670 0.49137666;
+	-6.22649683 -0.00193400 0.00117748 7.22456283 0.99406354 0.99688852 0.49138179;
+	-6.22665675 -0.00193285 0.00117681 7.22472390 0.99406716 0.99689034 0.49138690;
+	-6.22681612 -0.00193170 0.00117614 7.22488442 0.99407077 0.99689216 0.49139199;
+	-6.22697494 -0.00193055 0.00117547 7.22504439 0.99407438 0.99689398 0.49139707;
+	-6.22713320 -0.00192940 0.00117480 7.22520380 0.99407799 0.99689580 0.49140214;
+	-6.22729092 -0.00192825 0.00117413 7.22536266 0.99408159 0.99689762 0.49140718;
+	-6.22744808 -0.00192711 0.00117346 7.22552098 0.99408519 0.99689943 0.49141221;
+	-6.22760470 -0.00192596 0.00117280 7.22567874 0.99408878 0.99690124 0.49141723;
+	-6.22776078 -0.00192482 0.00117213 7.22583596 0.99409237 0.99690305 0.49142222;
+	-6.22791631 -0.00192368 0.00117147 7.22599264 0.99409595 0.99690486 0.49142719;
+	-6.22807131 -0.00192253 0.00117080 7.22614877 0.99409953 0.99690667 0.49143216;
+	-6.22822576 -0.00192139 0.00117014 7.22630437 0.99410311 0.99690847 0.49143711;
+	-6.22837968 -0.00192026 0.00116947 7.22645942 0.99410668 0.99691027 0.49144204;
+	-6.22853306 -0.00191912 0.00116881 7.22661394 0.99411025 0.99691207 0.49144696;
+	-6.22868591 -0.00191798 0.00116815 7.22676793 0.99411381 0.99691387 0.49145186;
+	-6.22883823 -0.00191685 0.00116748 7.22692138 0.99411737 0.99691567 0.49145674;
+	-6.22899002 -0.00191571 0.00116682 7.22707430 0.99412093 0.99691747 0.49146161;
+	-6.22914128 -0.00191458 0.00116616 7.22722670 0.99412448 0.99691926 0.49146647;
+	-6.22929201 -0.00191345 0.00116550 7.22737856 0.99412803 0.99692105 0.49147130;
+	-6.22944222 -0.00191232 0.00116484 7.22752990 0.99413157 0.99692284 0.49147613;
+	-6.22959190 -0.00191119 0.00116418 7.22768071 0.99413511 0.99692463 0.49148093;
+	-6.22974107 -0.00191006 0.00116352 7.22783101 0.99413865 0.99692642 0.49148571;
+	-6.22988971 -0.00190893 0.00116286 7.22798078 0.99414218 0.99692820 0.49149049;
+	-6.23003784 -0.00190781 0.00116221 7.22813003 0.99414571 0.99692998 0.49149525;
+	-6.23018545 -0.00190669 0.00116155 7.22827877 0.99414924 0.99693176 0.49149999;
+	-6.23033255 -0.00190556 0.00116089 7.22842699 0.99415276 0.99693354 0.49150472;
+	-6.23047913 -0.00190444 0.00116024 7.22857469 0.99415627 0.99693532 0.49150944;
+	-6.23062521 -0.00190332 0.00115958 7.22872189 0.99415978 0.99693710 0.49151413;
+	-6.23077077 -0.00190220 0.00115893 7.22886857 0.99416329 0.99693887 0.49151881;
+	-6.23091583 -0.00190108 0.00115828 7.22901475 0.99416680 0.99694064 0.49152348;
+	-6.23106038 -0.00189996 0.00115762 7.22916042 0.99417030 0.99694241 0.49152813;
+	-6.23120443 -0.00189885 0.00115697 7.22930558 0.99417379 0.99694418 0.49153277;
+	-6.23134798 -0.00189773 0.00115632 7.22945024 0.99417729 0.99694595 0.49153739;
+	-6.23149102 -0.00189662 0.00115567 7.22959440 0.99418078 0.99694772 0.49154200;
+	-6.23163357 -0.00189551 0.00115501 7.22973806 0.99418426 0.99694948 0.49154659;
+	-6.23177562 -0.00189439 0.00115436 7.22988122 0.99418774 0.99695124 0.49155116;
+	-6.23191717 -0.00189328 0.00115371 7.23002389 0.99419122 0.99695300 0.49155572;
+	-6.23205823 -0.00189218 0.00115307 7.23016606 0.99419469 0.99695476 0.49156028;
+	-6.23219880 -0.00189107 0.00115242 7.23030773 0.99419816 0.99695652 0.49156481;
+	-6.23233888 -0.00188996 0.00115177 7.23044891 0.99420163 0.99695827 0.49156932;
+	-6.23247846 -0.00188886 0.00115112 7.23058961 0.99420509 0.99696002 0.49157383;
+	-6.23261756 -0.00188775 0.00115047 7.23072981 0.99420855 0.99696177 0.49157832;
+	-6.23275618 -0.00188665 0.00114983 7.23086953 0.99421200 0.99696352 0.49158279;
+	-6.23289431 -0.00188555 0.00114918 7.23100876 0.99421545 0.99696527 0.49158725;
+	-6.23303196 -0.00188444 0.00114854 7.23114751 0.99421890 0.99696702 0.49159170;
+	-6.23316912 -0.00188334 0.00114789 7.23128578 0.99422234 0.99696876 0.49159612;
+	-6.23330581 -0.00188225 0.00114725 7.23142357 0.99422578 0.99697050 0.49160053;
+	-6.23344202 -0.00188115 0.00114661 7.23156087 0.99422921 0.99697225 0.49160494;
+	-6.23357776 -0.00188005 0.00114596 7.23169771 0.99423264 0.99697398 0.49160932;
+	-6.23371302 -0.00187896 0.00114532 7.23183406 0.99423607 0.99697572 0.49161370;
+	-6.23384781 -0.00187786 0.00114468 7.23196994 0.99423949 0.99697746 0.49161806;
+	-6.23398212 -0.00187677 0.00114404 7.23210535 0.99424291 0.99697919 0.49162241;
+	-6.23411597 -0.00187568 0.00114340 7.23224029 0.99424633 0.99698092 0.49162674;
+	-6.23424935 -0.00187459 0.00114276 7.23237476 0.99424974 0.99698265 0.49163105;
+	-6.23438226 -0.00187350 0.00114212 7.23250876 0.99425315 0.99698438 0.49163535;
+	-6.23451471 -0.00187241 0.00114148 7.23264230 0.99425655 0.99698611 0.49163964;
+	-6.23464669 -0.00187132 0.00114084 7.23277537 0.99425995 0.99698783 0.49164392;
+	-6.23477821 -0.00187024 0.00114021 7.23290797 0.99426335 0.99698956 0.49164818;
+	-6.23490927 -0.00186915 0.00113957 7.23304012 0.99426674 0.99699128 0.49165242;
+	-6.23503988 -0.00186807 0.00113893 7.23317181 0.99427013 0.99699300 0.49165666;
+	-6.23517002 -0.00186698 0.00113830 7.23330304 0.99427352 0.99699472 0.49166087;
+	-6.23529971 -0.00186590 0.00113766 7.23343381 0.99427690 0.99699644 0.49166508;
+	-6.23542895 -0.00186482 0.00113703 7.23356413 0.99428028 0.99699815 0.49166927;
+	-6.23555773 -0.00186374 0.00113639 7.23369399 0.99428365 0.99699986 0.49167345;
+	-6.23568606 -0.00186267 0.00113576 7.23382340 0.99428702 0.99700157 0.49167762;
+	-6.23581395 -0.00186159 0.00113513 7.23395236 0.99429039 0.99700328 0.49168176;
+	-6.23594138 -0.00186051 0.00113449 7.23408087 0.99429375 0.99700499 0.49168591;
+	-6.23606837 -0.00185944 0.00113386 7.23420893 0.99429711 0.99700670 0.49169003;
+	-6.23619491 -0.00185836 0.00113323 7.23433655 0.99430047 0.99700840 0.49169415;
+	-6.23632102 -0.00185729 0.00113260 7.23446372 0.99430382 0.99701011 0.49169823;
+	-6.23644667 -0.00185622 0.00113197 7.23459045 0.99430717 0.99701181 0.49170232;
+	-6.23657189 -0.00185515 0.00113134 7.23471674 0.99431051 0.99701351 0.49170640;
+	-6.23669667 -0.00185408 0.00113071 7.23484259 0.99431385 0.99701521 0.49171044;
+	-6.23682101 -0.00185301 0.00113009 7.23496800 0.99431719 0.99701690 0.49171449;
+	-6.23694492 -0.00185195 0.00112946 7.23509297 0.99432052 0.99701860 0.49171853;
+	-6.23706839 -0.00185088 0.00112883 7.23521751 0.99432385 0.99702029 0.49172254;
+	-6.23719143 -0.00184981 0.00112820 7.23534161 0.99432718 0.99702198 0.49172655;
+	-6.23731403 -0.00184875 0.00112758 7.23546528 0.99433050 0.99702367 0.49173054;
+	-6.23743621 -0.00184769 0.00112695 7.23558852 0.99433382 0.99702536 0.49173452;
+	-6.23755795 -0.00184663 0.00112633 7.23571133 0.99433713 0.99702705 0.49173848;
+	-6.23767927 -0.00184557 0.00112570 7.23583371 0.99434044 0.99702873 0.49174243;
+	-6.23780017 -0.00184451 0.00112508 7.23595566 0.99434375 0.99703041 0.49174639;
+	-6.23792064 -0.00184345 0.00112446 7.23607719 0.99434706 0.99703209 0.49175031;
+	-6.23804068 -0.00184239 0.00112383 7.23619829 0.99435036 0.99703377 0.49175422;
+	-6.23816031 -0.00184134 0.00112321 7.23631897 0.99435365 0.99703545 0.49175813;
+	-6.23827952 -0.00184028 0.00112259 7.23643923 0.99435695 0.99703713 0.49176201;
+	-6.23839830 -0.00183923 0.00112197 7.23655907 0.99436024 0.99703880 0.49176589;
+	-6.23851667 -0.00183817 0.00112135 7.23667850 0.99436352 0.99704048 0.49176975;
+	-6.23863462 -0.00183712 0.00112073 7.23679750 0.99436680 0.99704215 0.49177361;
+	-6.23875216 -0.00183607 0.00112011 7.23691609 0.99437008 0.99704382 0.49177744;
+	-6.23886929 -0.00183502 0.00111949 7.23703427 0.99437336 0.99704548 0.49178127;
+	-6.23898600 -0.00183398 0.00111887 7.23715203 0.99437663 0.99704715 0.49178508;
+	-6.23910231 -0.00183293 0.00111826 7.23726938 0.99437990 0.99704881 0.49178889;
+	-6.23921820 -0.00183188 0.00111764 7.23738632 0.99438316 0.99705048 0.49179268;
+	-6.23933369 -0.00183084 0.00111702 7.23750286 0.99438642 0.99705214 0.49179645;
+	-6.23944877 -0.00182979 0.00111641 7.23761898 0.99438968 0.99705380 0.49180022;
+	-6.23956345 -0.00182875 0.00111579 7.23773470 0.99439293 0.99705546 0.49180397;
+	-6.23967773 -0.00182771 0.00111518 7.23785002 0.99439618 0.99705711 0.49180771;
+	-6.23979160 -0.00182667 0.00111456 7.23796493 0.99439943 0.99705877 0.49181144;
+	-6.23990507 -0.00182563 0.00111395 7.23807944 0.99440267 0.99706042 0.49181516;
+	-6.24001814 -0.00182459 0.00111334 7.23819355 0.99440591 0.99706207 0.49181886;
+	-6.24013082 -0.00182355 0.00111273 7.23830726 0.99440915 0.99706372 0.49182255;
+	-6.24024309 -0.00182251 0.00111211 7.23842058 0.99441238 0.99706537 0.49182623;
+	-6.24035498 -0.00182148 0.00111150 7.23853350 0.99441561 0.99706702 0.49182990;
+	-6.24046647 -0.00182045 0.00111089 7.23864602 0.99441884 0.99706866 0.49183355;
+	-6.24057756 -0.00181941 0.00111028 7.23875815 0.99442206 0.99707031 0.49183719;
+	-6.24068827 -0.00181838 0.00110967 7.23886989 0.99442528 0.99707195 0.49184083;
+	-6.24079858 -0.00181735 0.00110906 7.23898123 0.99442849 0.99707359 0.49184446;
+	-6.24090851 -0.00181632 0.00110846 7.23909219 0.99443170 0.99707523 0.49184806;
+	-6.24101805 -0.00181529 0.00110785 7.23920276 0.99443491 0.99707686 0.49185165;
+	-6.24112720 -0.00181426 0.00110724 7.23931294 0.99443812 0.99707850 0.49185524;
+	-6.24123597 -0.00181324 0.00110663 7.23942274 0.99444132 0.99708013 0.49185881;
+	-6.24134436 -0.00181221 0.00110603 7.23953215 0.99444451 0.99708176 0.49186237;
+	-6.24145237 -0.00181118 0.00110542 7.23964118 0.99444771 0.99708339 0.49186593;
+	-6.24155999 -0.00181016 0.00110482 7.23974983 0.99445090 0.99708502 0.49186947;
+	-6.24166723 -0.00180914 0.00110421 7.23985810 0.99445408 0.99708665 0.49187299;
+	-6.24177410 -0.00180812 0.00110361 7.23996598 0.99445727 0.99708828 0.49187651;
+	-6.24188059 -0.00180710 0.00110300 7.24007349 0.99446045 0.99708990 0.49188001;
+	-6.24198671 -0.00180608 0.00110240 7.24018063 0.99446363 0.99709152 0.49188351;
+	-6.24209245 -0.00180506 0.00110180 7.24028739 0.99446680 0.99709314 0.49188699;
+	-6.24219781 -0.00180404 0.00110120 7.24039377 0.99446997 0.99709476 0.49189046;
+	-6.24230281 -0.00180302 0.00110060 7.24049978 0.99447313 0.99709638 0.49189392;
+	-6.24240743 -0.00180201 0.00110000 7.24060543 0.99447630 0.99709800 0.49189737;
+	-6.24251169 -0.00180100 0.00109940 7.24071070 0.99447946 0.99709961 0.49190081;
+	-6.24261558 -0.00179998 0.00109880 7.24081560 0.99448261 0.99710122 0.49190424;
+	-6.24271910 -0.00179897 0.00109820 7.24092013 0.99448577 0.99710283 0.49190765;
+	-6.24282226 -0.00179796 0.00109760 7.24102430 0.99448891 0.99710444 0.49191105;
+	-6.24292505 -0.00179695 0.00109700 7.24112810 0.99449206 0.99710605 0.49191444;
+	-6.24302748 -0.00179594 0.00109640 7.24123154 0.99449520 0.99710766 0.49191782;
+	-6.24312955 -0.00179493 0.00109581 7.24133462 0.99449834 0.99710926 0.49192119;
+	-6.24323126 -0.00179392 0.00109521 7.24143733 0.99450148 0.99711087 0.49192455;
+	-6.24333261 -0.00179292 0.00109461 7.24153969 0.99450461 0.99711247 0.49192789;
+	-6.24343360 -0.00179191 0.00109402 7.24164168 0.99450774 0.99711407 0.49193123;
+	-6.24353423 -0.00179091 0.00109342 7.24174332 0.99451086 0.99711567 0.49193456;
+	-6.24363451 -0.00178991 0.00109283 7.24184460 0.99451399 0.99711726 0.49193787;
+	-6.24373444 -0.00178891 0.00109224 7.24194553 0.99451711 0.99711886 0.49194119;
+	-6.24383401 -0.00178790 0.00109164 7.24204610 0.99452022 0.99712045 0.49194448;
+	-6.24393323 -0.00178690 0.00109105 7.24214632 0.99452333 0.99712204 0.49194776;
+	-6.24403210 -0.00178591 0.00109046 7.24224619 0.99452644 0.99712364 0.49195103;
+	-6.24413062 -0.00178491 0.00108987 7.24234571 0.99452955 0.99712522 0.49195429;
+	-6.24422879 -0.00178391 0.00108928 7.24244488 0.99453265 0.99712681 0.49195755;
+	-6.24432661 -0.00178292 0.00108869 7.24254370 0.99453575 0.99712840 0.49196079;
+	-6.24442409 -0.00178192 0.00108810 7.24264217 0.99453884 0.99712998 0.49196402;
+	-6.24452123 -0.00178093 0.00108751 7.24274030 0.99454194 0.99713157 0.49196723;
+	-6.24461802 -0.00177993 0.00108692 7.24283808 0.99454502 0.99713315 0.49197045;
+	-6.24471446 -0.00177894 0.00108633 7.24293552 0.99454811 0.99713473 0.49197365;
+	-6.24481057 -0.00177795 0.00108574 7.24303262 0.99455119 0.99713630 0.49197684;
+	-6.24490634 -0.00177696 0.00108516 7.24312938 0.99455427 0.99713788 0.49198002;
+	-6.24500177 -0.00177597 0.00108457 7.24322579 0.99455735 0.99713946 0.49198318;
+	-6.24509686 -0.00177499 0.00108398 7.24332187 0.99456042 0.99714103 0.49198634;
+	-6.24519161 -0.00177400 0.00108340 7.24341761 0.99456349 0.99714260 0.49198949;
+	-6.24528603 -0.00177301 0.00108281 7.24351302 0.99456655 0.99714417 0.49199263;
+	-6.24538012 -0.00177203 0.00108223 7.24360809 0.99456961 0.99714574 0.49199575;
+	-6.24547387 -0.00177105 0.00108164 7.24370283 0.99457267 0.99714731 0.49199887;
+	-6.24556729 -0.00177006 0.00108106 7.24379723 0.99457573 0.99714887 0.49200198;
+	-6.24566038 -0.00176908 0.00108048 7.24389130 0.99457878 0.99715044 0.49200507;
+	-6.24575314 -0.00176810 0.00107990 7.24398504 0.99458183 0.99715200 0.49200817;
+	-6.24584557 -0.00176712 0.00107931 7.24407845 0.99458488 0.99715356 0.49201123;
+	-6.24593768 -0.00176614 0.00107873 7.24417153 0.99458792 0.99715512 0.49201431;
+	-6.24602946 -0.00176517 0.00107815 7.24426429 0.99459096 0.99715668 0.49201737;
+	-6.24612091 -0.00176419 0.00107757 7.24435672 0.99459400 0.99715824 0.49202041;
+	-6.24621204 -0.00176321 0.00107699 7.24444883 0.99459703 0.99715979 0.49202344;
+	-6.24630285 -0.00176224 0.00107641 7.24454061 0.99460006 0.99716135 0.49202647;
+	-6.24639333 -0.00176127 0.00107584 7.24463206 0.99460309 0.99716290 0.49202949;
+	-6.24648350 -0.00176029 0.00107526 7.24472320 0.99460611 0.99716445 0.49203250;
+	-6.24657334 -0.00175932 0.00107468 7.24481402 0.99460913 0.99716600 0.49203550;
+	-6.24666287 -0.00175835 0.00107410 7.24490451 0.99461215 0.99716755 0.49203848;
+	-6.24675208 -0.00175738 0.00107353 7.24499469 0.99461516 0.99716909 0.49204146;
+	-6.24684097 -0.00175641 0.00107295 7.24508455 0.99461817 0.99717064 0.49204443;
+	-6.24692955 -0.00175545 0.00107238 7.24517410 0.99462118 0.99717218 0.49204739;
+	-6.24701781 -0.00175448 0.00107180 7.24526333 0.99462418 0.99717372 0.49205033;
+	-6.24710576 -0.00175351 0.00107123 7.24535225 0.99462718 0.99717526 0.49205328;
+	-6.24719340 -0.00175255 0.00107065 7.24544085 0.99463018 0.99717680 0.49205621;
+	-6.24728073 -0.00175158 0.00107008 7.24552914 0.99463317 0.99717834 0.49205913;
+	-6.24736775 -0.00175062 0.00106951 7.24561712 0.99463617 0.99717987 0.49206204;
+	-6.24745446 -0.00174966 0.00106893 7.24570479 0.99463915 0.99718141 0.49206494;
+	-6.24754086 -0.00174870 0.00106836 7.24579216 0.99464214 0.99718294 0.49206783;
+	-6.24762695 -0.00174774 0.00106779 7.24587921 0.99464512 0.99718447 0.49207072;
+	-6.24771274 -0.00174678 0.00106722 7.24596596 0.99464810 0.99718600 0.49207359;
+	-6.24779823 -0.00174582 0.00106665 7.24605241 0.99465108 0.99718753 0.49207645;
+	-6.24788341 -0.00174487 0.00106608 7.24613854 0.99465405 0.99718905 0.49207931;
+	-6.24796829 -0.00174391 0.00106551 7.24622438 0.99465702 0.99719058 0.49208216;
+	-6.24805287 -0.00174296 0.00106494 7.24630991 0.99465998 0.99719210 0.49208499;
+	-6.24813715 -0.00174200 0.00106438 7.24639515 0.99466295 0.99719362 0.49208783;
+	-6.24822113 -0.00174105 0.00106381 7.24648008 0.99466591 0.99719514 0.49209064;
+	-6.24830481 -0.00174010 0.00106324 7.24656471 0.99466886 0.99719666 0.49209345;
+	-6.24838819 -0.00173915 0.00106267 7.24664905 0.99467182 0.99719818 0.49209625;
+	-6.24847128 -0.00173819 0.00106211 7.24673309 0.99467477 0.99719970 0.49209904;
+	-6.24855407 -0.00173725 0.00106154 7.24681683 0.99467771 0.99720121 0.49210182;
+	-6.24863657 -0.00173630 0.00106098 7.24690027 0.99468066 0.99720272 0.49210459;
+	-6.24871878 -0.00173535 0.00106041 7.24698343 0.99468360 0.99720424 0.49210735;
+	-6.24880069 -0.00173440 0.00105985 7.24706629 0.99468654 0.99720575 0.49211010;
+	-6.24888231 -0.00173346 0.00105929 7.24714886 0.99468947 0.99720725 0.49211286;
+	-6.24896365 -0.00173251 0.00105872 7.24723113 0.99469240 0.99720876 0.49211559;
+	-6.24904469 -0.00173157 0.00105816 7.24731312 0.99469533 0.99721027 0.49211832;
+	-6.24912545 -0.00173063 0.00105760 7.24739482 0.99469826 0.99721177 0.49212104;
+	-6.24920591 -0.00172969 0.00105704 7.24747623 0.99470118 0.99721327 0.49212375;
+	-6.24928610 -0.00172875 0.00105648 7.24755735 0.99470410 0.99721478 0.49212645;
+	-6.24936599 -0.00172781 0.00105592 7.24763819 0.99470702 0.99721628 0.49212915;
+	-6.24944561 -0.00172687 0.00105536 7.24771874 0.99470993 0.99721777 0.49213183;
+	-6.24952494 -0.00172593 0.00105480 7.24779901 0.99471284 0.99721927 0.49213451;
+	-6.24960399 -0.00172499 0.00105424 7.24787899 0.99471575 0.99722077 0.49213717;
+	-6.24968275 -0.00172406 0.00105368 7.24795870 0.99471865 0.99722226 0.49213983;
+	-6.24976124 -0.00172312 0.00105312 7.24803812 0.99472155 0.99722375 0.49214248;
+	-6.24983945 -0.00172219 0.00105257 7.24811726 0.99472445 0.99722524 0.49214512;
+	-6.24991738 -0.00172126 0.00105201 7.24819612 0.99472735 0.99722673 0.49214776;
+	-6.24999503 -0.00172032 0.00105145 7.24827471 0.99473024 0.99722822 0.49215038;
+	-6.25007241 -0.00171939 0.00105090 7.24835302 0.99473313 0.99722971 0.49215299;
+	-6.25014951 -0.00171846 0.00105034 7.24843105 0.99473601 0.99723119 0.49215561;
+	-6.25022634 -0.00171753 0.00104979 7.24850880 0.99473890 0.99723268 0.49215820;
+	-6.25030289 -0.00171660 0.00104923 7.24858628 0.99474178 0.99723416 0.49216079;
+	-6.25037917 -0.00171568 0.00104868 7.24866349 0.99474465 0.99723564 0.49216338;
+	-6.25045518 -0.00171475 0.00104813 7.24874043 0.99474753 0.99723712 0.49216595;
+	-6.25053092 -0.00171382 0.00104758 7.24881709 0.99475040 0.99723860 0.49216851;
+	-6.25060639 -0.00171290 0.00104702 7.24889349 0.99475327 0.99724008 0.49217106;
+	-6.25068159 -0.00171198 0.00104647 7.24896961 0.99475613 0.99724155 0.49217362;
+	-6.25075652 -0.00171105 0.00104592 7.24904547 0.99475899 0.99724303 0.49217616;
+	-6.25083119 -0.00171013 0.00104537 7.24912106 0.99476185 0.99724450 0.49217869;
+	-6.25090559 -0.00170921 0.00104482 7.24919638 0.99476471 0.99724597 0.49218121;
+	-6.25097972 -0.00170829 0.00104427 7.24927143 0.99476756 0.99724744 0.49218373;
+	-6.25105359 -0.00170737 0.00104372 7.24934622 0.99477041 0.99724891 0.49218624;
+	-6.25112720 -0.00170645 0.00104317 7.24942075 0.99477326 0.99725037 0.49218873;
+	-6.25120055 -0.00170554 0.00104262 7.24949501 0.99477610 0.99725184 0.49219122;
+	-6.25127363 -0.00170462 0.00104208 7.24956901 0.99477894 0.99725330 0.49219371;
+	-6.25134646 -0.00170370 0.00104153 7.24964275 0.99478178 0.99725477 0.49219618;
+	-6.25141902 -0.00170279 0.00104098 7.24971623 0.99478462 0.99725623 0.49219865;
+	-6.25149133 -0.00170188 0.00104044 7.24978945 0.99478745 0.99725769 0.49220112;
+	-6.25156338 -0.00170096 0.00103989 7.24986241 0.99479028 0.99725915 0.49220356;
+	-6.25163517 -0.00170005 0.00103935 7.24993512 0.99479311 0.99726060 0.49220600;
+	-6.25170670 -0.00169914 0.00103880 7.25000756 0.99479593 0.99726206 0.49220844;
+	-6.25177798 -0.00169823 0.00103826 7.25007975 0.99479875 0.99726351 0.49221087;
+	-6.25184901 -0.00169732 0.00103771 7.25015169 0.99480157 0.99726496 0.49221329;
+	-6.25191978 -0.00169641 0.00103717 7.25022337 0.99480438 0.99726642 0.49221570;
+	-6.25199031 -0.00169551 0.00103663 7.25029480 0.99480719 0.99726787 0.49221811;
+	-6.25206057 -0.00169460 0.00103609 7.25036598 0.99481000 0.99726931 0.49222050;
+	-6.25213059 -0.00169369 0.00103555 7.25043690 0.99481281 0.99727076 0.49222289;
+	-6.25220036 -0.00169279 0.00103500 7.25050757 0.99481561 0.99727221 0.49222527;
+	-6.25226988 -0.00169189 0.00103446 7.25057800 0.99481841 0.99727365 0.49222765;
+	-6.25233916 -0.00169098 0.00103392 7.25064817 0.99482121 0.99727509 0.49223001;
+	-6.25240818 -0.00169008 0.00103338 7.25071810 0.99482400 0.99727653 0.49223237;
+	-6.25247696 -0.00168918 0.00103285 7.25078778 0.99482680 0.99727797 0.49223472;
+	-6.25254550 -0.00168828 0.00103231 7.25085722 0.99482958 0.99727941 0.49223706;
+	-6.25261379 -0.00168738 0.00103177 7.25092640 0.99483237 0.99728085 0.49223939;
+	-6.25268183 -0.00168648 0.00103123 7.25099535 0.99483515 0.99728229 0.49224172;
+	-6.25274963 -0.00168559 0.00103069 7.25106405 0.99483793 0.99728372 0.49224404;
+	-6.25281720 -0.00168469 0.00103016 7.25113251 0.99484071 0.99728515 0.49224636;
+	-6.25288452 -0.00168379 0.00102962 7.25120072 0.99484348 0.99728659 0.49224866;
+	-6.25295160 -0.00168290 0.00102909 7.25126870 0.99484626 0.99728802 0.49225097;
+	-6.25301844 -0.00168200 0.00102855 7.25133643 0.99484902 0.99728945 0.49225325;
+	-6.25308504 -0.00168111 0.00102802 7.25140393 0.99485179 0.99729087 0.49225553;
+	-6.25315140 -0.00168022 0.00102748 7.25147118 0.99485455 0.99729230 0.49225780;
+	-6.25321753 -0.00167933 0.00102695 7.25153820 0.99485731 0.99729372 0.49226008;
+	-6.25328342 -0.00167844 0.00102641 7.25160498 0.99486007 0.99729515 0.49226233;
+	-6.25334907 -0.00167755 0.00102588 7.25167153 0.99486282 0.99729657 0.49226459;
+	-6.25341450 -0.00167666 0.00102535 7.25173784 0.99486558 0.99729799 0.49226684;
+	-6.25347968 -0.00167577 0.00102482 7.25180391 0.99486832 0.99729941 0.49226907;
+	-6.25354464 -0.00167489 0.00102429 7.25186975 0.99487107 0.99730083 0.49227131;
+	-6.25360936 -0.00167400 0.00102376 7.25193536 0.99487381 0.99730224 0.49227354;
+	-6.25367385 -0.00167312 0.00102323 7.25200074 0.99487655 0.99730366 0.49227575;
+	-6.25373811 -0.00167223 0.00102270 7.25206588 0.99487929 0.99730507 0.49227796;
+	-6.25380215 -0.00167135 0.00102217 7.25213080 0.99488202 0.99730649 0.49228016;
+	-6.25386595 -0.00167047 0.00102164 7.25219548 0.99488476 0.99730790 0.49228236;
+	-6.25392952 -0.00166958 0.00102111 7.25225994 0.99488749 0.99730931 0.49228455;
+	-6.25399287 -0.00166870 0.00102058 7.25232417 0.99489021 0.99731072 0.49228673;
+	-6.25405599 -0.00166782 0.00102005 7.25238817 0.99489294 0.99731212 0.49228892;
+	-6.25411889 -0.00166694 0.00101953 7.25245194 0.99489566 0.99731353 0.49229108;
+	-6.25418156 -0.00166607 0.00101900 7.25251549 0.99489837 0.99731493 0.49229324;
+	-6.25424401 -0.00166519 0.00101847 7.25257882 0.99490109 0.99731634 0.49229539;
+	-6.25430623 -0.00166431 0.00101795 7.25264192 0.99490380 0.99731774 0.49229754;
+	-6.25436823 -0.00166344 0.00101742 7.25270479 0.99490651 0.99731914 0.49229968;
+	-6.25443001 -0.00166256 0.00101690 7.25276745 0.99490922 0.99732054 0.49230182;
+	-6.25449157 -0.00166169 0.00101638 7.25282988 0.99491192 0.99732194 0.49230394;
+	-6.25455291 -0.00166082 0.00101585 7.25289209 0.99491462 0.99732333 0.49230606;
+	-6.25461403 -0.00165994 0.00101533 7.25295408 0.99491732 0.99732473 0.49230817;
+	-6.25467493 -0.00165907 0.00101481 7.25301586 0.99492002 0.99732612 0.49231027;
+	-6.25473561 -0.00165820 0.00101428 7.25307741 0.99492271 0.99732751 0.49231238;
+	-6.25479608 -0.00165733 0.00101376 7.25313874 0.99492540 0.99732890 0.49231446;
+	-6.25485633 -0.00165647 0.00101324 7.25319986 0.99492809 0.99733029 0.49231656;
+	-6.25491636 -0.00165560 0.00101272 7.25326076 0.99493077 0.99733168 0.49231863;
+	-6.25497618 -0.00165473 0.00101220 7.25332145 0.99493345 0.99733307 0.49232070;
+	-6.25503579 -0.00165386 0.00101168 7.25338192 0.99493613 0.99733445 0.49232277;
+	-6.25509518 -0.00165300 0.00101116 7.25344218 0.99493881 0.99733584 0.49232483;
+	-6.25515436 -0.00165214 0.00101064 7.25350222 0.99494148 0.99733722 0.49232688;
+	-6.25521333 -0.00165127 0.00101012 7.25356206 0.99494415 0.99733860 0.49232894;
+	-6.25527209 -0.00165041 0.00100961 7.25362168 0.99494682 0.99733998 0.49233097;
+	-6.25533063 -0.00164955 0.00100909 7.25368108 0.99494949 0.99734136 0.49233301;
+	-6.25538897 -0.00164869 0.00100857 7.25374028 0.99495215 0.99734274 0.49233504;
+	-6.25544710 -0.00164783 0.00100806 7.25379927 0.99495481 0.99734412 0.49233704;
+	-6.25550502 -0.00164697 0.00100754 7.25385805 0.99495747 0.99734549 0.49233906;
+	-6.25556273 -0.00164611 0.00100702 7.25391662 0.99496012 0.99734687 0.49234107;
+	-6.25562024 -0.00164525 0.00100651 7.25397499 0.99496278 0.99734824 0.49234308;
+	-6.25567754 -0.00164440 0.00100599 7.25403314 0.99496543 0.99734961 0.49234506;
+	-6.25573464 -0.00164354 0.00100548 7.25409110 0.99496807 0.99735098 0.49234706;
+	-6.25579153 -0.00164268 0.00100497 7.25414884 0.99497072 0.99735235 0.49234904;
+	-6.25584821 -0.00164183 0.00100445 7.25420638 0.99497336 0.99735372 0.49235101;
+	-6.25590470 -0.00164098 0.00100394 7.25426372 0.99497600 0.99735508 0.49235297;
+	-6.25596098 -0.00164012 0.00100343 7.25432086 0.99497863 0.99735645 0.49235495;
+	-6.25601706 -0.00163927 0.00100292 7.25437779 0.99498127 0.99735781 0.49235690;
+	-6.25607294 -0.00163842 0.00100241 7.25443452 0.99498390 0.99735917 0.49235884;
+	-6.25612862 -0.00163757 0.00100189 7.25449105 0.99498652 0.99736053 0.49236079;
+	-6.25618410 -0.00163672 0.00100138 7.25454738 0.99498915 0.99736189 0.49236272;
+	-6.25623938 -0.00163587 0.00100087 7.25460351 0.99499177 0.99736325 0.49236466;
+	-6.25629447 -0.00163503 0.00100036 7.25465944 0.99499439 0.99736461 0.49236658;
+	-6.25634936 -0.00163418 0.00099986 7.25471518 0.99499701 0.99736596 0.49236850;
+	-6.25640405 -0.00163333 0.00099935 7.25477071 0.99499963 0.99736732 0.49237042;
+	-6.25645854 -0.00163249 0.00099884 7.25482605 0.99500224 0.99736867 0.49237232;
+	-6.25651284 -0.00163164 0.00099833 7.25488119 0.99500485 0.99737002 0.49237422;
+	-6.25656694 -0.00163080 0.00099782 7.25493614 0.99500745 0.99737137 0.49237612;
+	-6.25662085 -0.00162996 0.00099732 7.25499089 0.99501006 0.99737272 0.49237800;
+	-6.25667457 -0.00162912 0.00099681 7.25504545 0.99501266 0.99737407 0.49237989;
+	-6.25672809 -0.00162828 0.00099631 7.25509982 0.99501526 0.99737542 0.49238176;
+	-6.25678143 -0.00162744 0.00099580 7.25515399 0.99501786 0.99737676 0.49238364;
+	-6.25683457 -0.00162660 0.00099530 7.25520797 0.99502045 0.99737811 0.49238550;
+	-6.25688752 -0.00162576 0.00099479 7.25526176 0.99502304 0.99737945 0.49238736;
+	-6.25694028 -0.00162492 0.00099429 7.25531536 0.99502563 0.99738079 0.49238921;
+	-6.25699285 -0.00162408 0.00099378 7.25536877 0.99502822 0.99738213 0.49239105;
+	-6.25704524 -0.00162325 0.00099328 7.25542199 0.99503080 0.99738347 0.49239289;
+	-6.25709743 -0.00162241 0.00099278 7.25547502 0.99503338 0.99738481 0.49239473;
+	-6.25714944 -0.00162158 0.00099228 7.25552786 0.99503596 0.99738615 0.49239656;
+	-6.25720127 -0.00162074 0.00099177 7.25558052 0.99503853 0.99738748 0.49239838;
+	-6.25725290 -0.00161991 0.00099127 7.25563299 0.99504111 0.99738881 0.49240020;
+	-6.25730435 -0.00161908 0.00099077 7.25568527 0.99504368 0.99739015 0.49240201;
+	-6.25735562 -0.00161825 0.00099027 7.25573737 0.99504625 0.99739148 0.49240381;
+	-6.25740670 -0.00161742 0.00098977 7.25578929 0.99504881 0.99739281 0.49240561;
+	-6.25745761 -0.00161659 0.00098927 7.25584102 0.99505137 0.99739414 0.49240741;
+	-6.25750832 -0.00161576 0.00098877 7.25589256 0.99505393 0.99739547 0.49240919;
+	-6.25755886 -0.00161493 0.00098828 7.25594393 0.99505649 0.99739679 0.49241098;
+	-6.25760921 -0.00161411 0.00098778 7.25599511 0.99505905 0.99739812 0.49241276;
+	-6.25765939 -0.00161328 0.00098728 7.25604611 0.99506160 0.99739944 0.49241453;
+	-6.25770938 -0.00161245 0.00098678 7.25609693 0.99506415 0.99740076 0.49241630;
+	-6.25775920 -0.00161163 0.00098629 7.25614757 0.99506670 0.99740209 0.49241806;
+	-6.25780883 -0.00161080 0.00098579 7.25619803 0.99506924 0.99740341 0.49241981;
+	-6.25785829 -0.00160998 0.00098529 7.25624831 0.99507179 0.99740472 0.49242156;
+	-6.25790757 -0.00160916 0.00098480 7.25629841 0.99507433 0.99740604 0.49242330;
+	-6.25795667 -0.00160834 0.00098430 7.25634834 0.99507686 0.99740736 0.49242504;
+	-6.25800560 -0.00160752 0.00098381 7.25639808 0.99507940 0.99740867 0.49242678;
+	-6.25805435 -0.00160670 0.00098332 7.25644766 0.99508193 0.99740999 0.49242849;
+	-6.25810293 -0.00160588 0.00098282 7.25649705 0.99508446 0.99741130 0.49243022;
+	-6.25815133 -0.00160506 0.00098233 7.25654627 0.99508699 0.99741261 0.49243193;
+	-6.25819956 -0.00160424 0.00098184 7.25659532 0.99508951 0.99741392 0.49243365;
+	-6.25824762 -0.00160342 0.00098134 7.25664419 0.99509203 0.99741523 0.49243535;
+	-6.25829550 -0.00160261 0.00098085 7.25669289 0.99509455 0.99741654 0.49243704;
+	-6.25834321 -0.00160179 0.00098036 7.25674142 0.99509707 0.99741784 0.49243875;
+	-6.25839075 -0.00160098 0.00097987 7.25678978 0.99509959 0.99741915 0.49244043;
+	-6.25843812 -0.00160017 0.00097938 7.25683796 0.99510210 0.99742045 0.49244213;
+	-6.25848532 -0.00159935 0.00097889 7.25688597 0.99510461 0.99742176 0.49244379;
+	-6.25853235 -0.00159854 0.00097840 7.25693381 0.99510712 0.99742306 0.49244547;
+	-6.25857922 -0.00159773 0.00097791 7.25698149 0.99510962 0.99742436 0.49244714;
+	-6.25862591 -0.00159692 0.00097742 7.25702899 0.99511212 0.99742566 0.49244880;
+	-6.25867244 -0.00159611 0.00097693 7.25707633 0.99511462 0.99742696 0.49245046;
+	-6.25871879 -0.00159530 0.00097645 7.25712350 0.99511712 0.99742825 0.49245210;
+	-6.25876499 -0.00159449 0.00097596 7.25717050 0.99511962 0.99742955 0.49245376;
+	-6.25881101 -0.00159368 0.00097547 7.25721733 0.99512211 0.99743084 0.49245539;
+	-6.25885688 -0.00159288 0.00097499 7.25726400 0.99512460 0.99743214 0.49245702;
+	-6.25890257 -0.00159207 0.00097450 7.25731050 0.99512709 0.99743343 0.49245866;
+	-6.25894810 -0.00159127 0.00097402 7.25735684 0.99512957 0.99743472 0.49246028;
+	-6.25899347 -0.00159046 0.00097353 7.25740301 0.99513205 0.99743601 0.49246190;
+	-6.25903868 -0.00158966 0.00097305 7.25744902 0.99513453 0.99743730 0.49246352;
+	-6.25908372 -0.00158886 0.00097256 7.25749487 0.99513701 0.99743858 0.49246513;
+	-6.25912861 -0.00158805 0.00097208 7.25754055 0.99513949 0.99743987 0.49246673;
+	-6.25917333 -0.00158725 0.00097159 7.25758607 0.99514196 0.99744115 0.49246833;
+	-6.25921789 -0.00158645 0.00097111 7.25763144 0.99514443 0.99744244 0.49246993;
+	-6.25926229 -0.00158565 0.00097063 7.25767664 0.99514690 0.99744372 0.49247152;
+	-6.25930653 -0.00158485 0.00097015 7.25772168 0.99514936 0.99744500 0.49247309;
+	-6.25935061 -0.00158406 0.00096966 7.25776656 0.99515183 0.99744628 0.49247468;
+	-6.25939453 -0.00158326 0.00096918 7.25781128 0.99515429 0.99744756 0.49247625;
+	-6.25943830 -0.00158246 0.00096870 7.25785584 0.99515675 0.99744884 0.49247782;
+	-6.25948191 -0.00158167 0.00096822 7.25790024 0.99515920 0.99745011 0.49247939;
+	-6.25952536 -0.00158087 0.00096774 7.25794449 0.99516165 0.99745139 0.49248095;
+	-6.25956866 -0.00158008 0.00096726 7.25798858 0.99516411 0.99745266 0.49248251;
+	-6.25961180 -0.00157928 0.00096678 7.25803252 0.99516655 0.99745393 0.49248405;
+	-6.25965478 -0.00157849 0.00096631 7.25807629 0.99516900 0.99745521 0.49248560;
+	-6.25969761 -0.00157770 0.00096583 7.25811992 0.99517144 0.99745648 0.49248715;
+	-6.25974029 -0.00157691 0.00096535 7.25816339 0.99517389 0.99745774 0.49248867;
+	-6.25978282 -0.00157612 0.00096487 7.25820670 0.99517633 0.99745901 0.49249021;
+	-6.25982519 -0.00157533 0.00096440 7.25824986 0.99517876 0.99746028 0.49249174;
+	-6.25986741 -0.00157454 0.00096392 7.25829287 0.99518120 0.99746154 0.49249325;
+	-6.25990947 -0.00157375 0.00096344 7.25833572 0.99518363 0.99746281 0.49249477;
+	-6.25995139 -0.00157296 0.00096297 7.25837843 0.99518606 0.99746407 0.49249628;
+	-6.25999315 -0.00157217 0.00096249 7.25842098 0.99518848 0.99746533 0.49249779;
+	-6.26003477 -0.00157139 0.00096202 7.25846338 0.99519091 0.99746659 0.49249929;
+	-6.26007624 -0.00157060 0.00096154 7.25850563 0.99519333 0.99746785 0.49250079;
+	-6.26011755 -0.00156982 0.00096107 7.25854773 0.99519575 0.99746911 0.49250228;
+	-6.26015872 -0.00156903 0.00096060 7.25858969 0.99519817 0.99747037 0.49250377;
+	-6.26019974 -0.00156825 0.00096012 7.25863149 0.99520058 0.99747163 0.49250524;
+	-6.26024061 -0.00156747 0.00095965 7.25867315 0.99520300 0.99747288 0.49250672;
+	-6.26028134 -0.00156669 0.00095918 7.25871465 0.99520541 0.99747414 0.49250819;
+	-6.26032192 -0.00156591 0.00095871 7.25875601 0.99520782 0.99747539 0.49250967;
+	-6.26036235 -0.00156513 0.00095823 7.25879723 0.99521022 0.99747664 0.49251114;
+	-6.26040264 -0.00156435 0.00095776 7.25883830 0.99521263 0.99747789 0.49251259;
+	-6.26044279 -0.00156357 0.00095729 7.25887922 0.99521503 0.99747914 0.49251404;
+	-6.26048279 -0.00156279 0.00095682 7.25892000 0.99521743 0.99748039 0.49251549;
+	-6.26052264 -0.00156201 0.00095635 7.25896063 0.99521982 0.99748163 0.49251694;
+	-6.26056235 -0.00156124 0.00095588 7.25900112 0.99522222 0.99748288 0.49251838;
+	-6.26060192 -0.00156046 0.00095542 7.25904146 0.99522461 0.99748412 0.49251982;
+	-6.26064135 -0.00155969 0.00095495 7.25908167 0.99522700 0.99748537 0.49252125;
+	-6.26068064 -0.00155891 0.00095448 7.25912173 0.99522939 0.99748661 0.49252269;
+	-6.26071978 -0.00155814 0.00095401 7.25916164 0.99523177 0.99748785 0.49252410;
+	-6.26075879 -0.00155737 0.00095354 7.25920142 0.99523415 0.99748909 0.49252552;
+	-6.26079765 -0.00155659 0.00095308 7.25924106 0.99523653 0.99749033 0.49252694;
+	-6.26083637 -0.00155582 0.00095261 7.25928055 0.99523891 0.99749157 0.49252834;
+	-6.26087496 -0.00155505 0.00095215 7.25931991 0.99524129 0.99749280 0.49252975;
+	-6.26091341 -0.00155428 0.00095168 7.25935912 0.99524366 0.99749404 0.49253116;
+	-6.26095171 -0.00155351 0.00095122 7.25939820 0.99524603 0.99749527 0.49253255;
+	-6.26098988 -0.00155274 0.00095075 7.25943714 0.99524840 0.99749651 0.49253394;
+	-6.26102792 -0.00155198 0.00095029 7.25947594 0.99525077 0.99749774 0.49253533;
+	-6.26106581 -0.00155121 0.00094982 7.25951460 0.99525313 0.99749897 0.49253672;
+	-6.26110357 -0.00155044 0.00094936 7.25955313 0.99525549 0.99750020 0.49253810;
+	-6.26114120 -0.00154968 0.00094890 7.25959152 0.99525785 0.99750143 0.49253947;
+	-6.26117869 -0.00154891 0.00094843 7.25962977 0.99526021 0.99750265 0.49254085;
+	-6.26121604 -0.00154815 0.00094797 7.25966789 0.99526256 0.99750388 0.49254220;
+	-6.26125326 -0.00154739 0.00094751 7.25970587 0.99526492 0.99750510 0.49254357;
+	-6.26129035 -0.00154662 0.00094705 7.25974372 0.99526727 0.99750633 0.49254493;
+	-6.26132730 -0.00154586 0.00094659 7.25978144 0.99526962 0.99750755 0.49254628;
+	-6.26136412 -0.00154510 0.00094613 7.25981902 0.99527196 0.99750877 0.49254763;
+	-6.26140081 -0.00154434 0.00094567 7.25985647 0.99527431 0.99750999 0.49254897;
+	-6.26143736 -0.00154358 0.00094521 7.25989378 0.99527665 0.99751121 0.49255032;
+	-6.26147379 -0.00154282 0.00094475 7.25993097 0.99527899 0.99751243 0.49255166;
+	-6.26151008 -0.00154206 0.00094429 7.25996802 0.99528132 0.99751365 0.49255299;
+	-6.26154624 -0.00154131 0.00094383 7.26000494 0.99528366 0.99751486 0.49255432;
+	-6.26158228 -0.00154055 0.00094337 7.26004173 0.99528599 0.99751608 0.49255564;
+	-6.26161818 -0.00153979 0.00094292 7.26007839 0.99528832 0.99751729 0.49255696;
+	-6.26165395 -0.00153904 0.00094246 7.26011492 0.99529065 0.99751851 0.49255828;
+	-6.26168960 -0.00153828 0.00094200 7.26015132 0.99529297 0.99751972 0.49255958;
+	-6.26172512 -0.00153753 0.00094155 7.26018759 0.99529530 0.99752093 0.49256090;
+	-6.26176051 -0.00153677 0.00094109 7.26022373 0.99529762 0.99752214 0.49256219;
+	-6.26179577 -0.00153602 0.00094063 7.26025975 0.99529994 0.99752334 0.49256349;
+	-6.26183090 -0.00153527 0.00094018 7.26029563 0.99530226 0.99752455 0.49256478;
+	-6.26186591 -0.00153452 0.00093972 7.26033139 0.99530457 0.99752576 0.49256609;
+	-6.26190080 -0.00153377 0.00093927 7.26036703 0.99530688 0.99752696 0.49256738;
+	-6.26193555 -0.00153302 0.00093882 7.26040254 0.99530919 0.99752817 0.49256866;
+	-6.26197019 -0.00153227 0.00093836 7.26043792 0.99531150 0.99752937 0.49256993;
+	-6.26200470 -0.00153152 0.00093791 7.26047317 0.99531381 0.99753057 0.49257121;
+	-6.26203908 -0.00153077 0.00093746 7.26050831 0.99531611 0.99753177 0.49257249;
+	-6.26207334 -0.00153003 0.00093700 7.26054331 0.99531841 0.99753297 0.49257375;
+	-6.26210748 -0.00152928 0.00093655 7.26057820 0.99532071 0.99753417 0.49257501;
+	-6.26214149 -0.00152853 0.00093610 7.26061296 0.99532301 0.99753537 0.49257629;
+	-6.26217539 -0.00152779 0.00093565 7.26064760 0.99532530 0.99753656 0.49257754;
+	-6.26220916 -0.00152705 0.00093520 7.26068211 0.99532759 0.99753776 0.49257879;
+	-6.26224280 -0.00152630 0.00093475 7.26071650 0.99532988 0.99753895 0.49258003;
+	-6.26227633 -0.00152556 0.00093430 7.26075077 0.99533217 0.99754014 0.49258128;
+	-6.26230974 -0.00152482 0.00093385 7.26078492 0.99533446 0.99754133 0.49258252;
+	-6.26234303 -0.00152408 0.00093340 7.26081895 0.99533674 0.99754253 0.49258376;
+	-6.26237620 -0.00152333 0.00093295 7.26085286 0.99533902 0.99754372 0.49258498;
+	-6.26240924 -0.00152259 0.00093250 7.26088665 0.99534130 0.99754490 0.49258622;
+	-6.26244217 -0.00152186 0.00093205 7.26092032 0.99534358 0.99754609 0.49258745;
+	-6.26247499 -0.00152112 0.00093161 7.26095387 0.99534586 0.99754728 0.49258868;
+	-6.26250768 -0.00152038 0.00093116 7.26098730 0.99534813 0.99754846 0.49258989;
+	-6.26254025 -0.00151964 0.00093071 7.26102061 0.99535040 0.99754965 0.49259110;
+	-6.26257271 -0.00151890 0.00093027 7.26105381 0.99535267 0.99755083 0.49259230;
+	-6.26260505 -0.00151817 0.00092982 7.26108689 0.99535493 0.99755201 0.49259351;
+	-6.26263728 -0.00151743 0.00092937 7.26111985 0.99535720 0.99755319 0.49259471;
+	-6.26266939 -0.00151670 0.00092893 7.26115269 0.99535946 0.99755437 0.49259592;
+	-6.26270138 -0.00151596 0.00092848 7.26118542 0.99536172 0.99755555 0.49259711;
+	-6.26273326 -0.00151523 0.00092804 7.26121803 0.99536398 0.99755673 0.49259829;
+	-6.26276503 -0.00151450 0.00092760 7.26125053 0.99536623 0.99755790 0.49259950;
+	-6.26279668 -0.00151377 0.00092715 7.26128291 0.99536849 0.99755908 0.49260067;
+	-6.26282822 -0.00151304 0.00092671 7.26131518 0.99537074 0.99756025 0.49260186;
+	-6.26285964 -0.00151231 0.00092627 7.26134733 0.99537299 0.99756143 0.49260303;
+	-6.26289095 -0.00151158 0.00092582 7.26137937 0.99537524 0.99756260 0.49260421;
+	-6.26292215 -0.00151085 0.00092538 7.26141130 0.99537748 0.99756377 0.49260538;
+	-6.26295323 -0.00151012 0.00092494 7.26144311 0.99537972 0.99756494 0.49260653;
+	-6.26298421 -0.00150939 0.00092450 7.26147481 0.99538196 0.99756611 0.49260770;
+	-6.26301507 -0.00150866 0.00092406 7.26150640 0.99538420 0.99756728 0.49260887;
+	-6.26304582 -0.00150794 0.00092362 7.26153788 0.99538644 0.99756844 0.49261002;
+	-6.26307646 -0.00150721 0.00092318 7.26156925 0.99538867 0.99756961 0.49261117;
+	-6.26310699 -0.00150649 0.00092274 7.26160050 0.99539091 0.99757078 0.49261231;
+	-6.26313741 -0.00150576 0.00092230 7.26163165 0.99539314 0.99757194 0.49261347;
+	-6.26316772 -0.00150504 0.00092186 7.26166269 0.99539536 0.99757310 0.49261461;
+	-6.26319793 -0.00150431 0.00092142 7.26169361 0.99539759 0.99757426 0.49261575;
+	-6.26322802 -0.00150359 0.00092098 7.26172443 0.99539981 0.99757542 0.49261688;
+	-6.26325801 -0.00150287 0.00092055 7.26175513 0.99540204 0.99757658 0.49261801;
+	-6.26328788 -0.00150215 0.00092011 7.26178573 0.99540426 0.99757774 0.49261913;
+	-6.26331765 -0.00150143 0.00091967 7.26181623 0.99540647 0.99757890 0.49262025;
+	-6.26334732 -0.00150071 0.00091924 7.26184661 0.99540869 0.99758006 0.49262138;
+	-6.26337687 -0.00149999 0.00091880 7.26187688 0.99541090 0.99758121 0.49262250;
+	-6.26340633 -0.00149927 0.00091836 7.26190705 0.99541311 0.99758236 0.49262361;
+	-6.26343567 -0.00149855 0.00091793 7.26193712 0.99541532 0.99758352 0.49262472;
+	-6.26346491 -0.00149784 0.00091749 7.26196707 0.99541753 0.99758467 0.49262583;
+	-6.26349404 -0.00149712 0.00091706 7.26199692 0.99541974 0.99758582 0.49262693;
+	-6.26352307 -0.00149640 0.00091662 7.26202667 0.99542194 0.99758697 0.49262803;
+	-6.26355200 -0.00149569 0.00091619 7.26205631 0.99542414 0.99758812 0.49262913;
+	-6.26358082 -0.00149498 0.00091576 7.26208585 0.99542634 0.99758927 0.49263021;
+	-6.26360954 -0.00149426 0.00091532 7.26211528 0.99542854 0.99759042 0.49263131;
+	-6.26363815 -0.00149355 0.00091489 7.26214460 0.99543073 0.99759156 0.49263239;
+	-6.26366666 -0.00149284 0.00091446 7.26217383 0.99543292 0.99759271 0.49263348;
+	-6.26369507 -0.00149212 0.00091403 7.26220295 0.99543511 0.99759385 0.49263456;
+	-6.26372338 -0.00149141 0.00091359 7.26223197 0.99543730 0.99759499 0.49263563;
+	-6.26375159 -0.00149070 0.00091316 7.26226088 0.99543949 0.99759613 0.49263671;
+	-6.26377969 -0.00148999 0.00091273 7.26228970 0.99544167 0.99759728 0.49263778;
+	-6.26380769 -0.00148928 0.00091230 7.26231841 0.99544386 0.99759841 0.49263884;
+	-6.26383560 -0.00148857 0.00091187 7.26234702 0.99544604 0.99759955 0.49263991;
+	-6.26386340 -0.00148787 0.00091144 7.26237553 0.99544821 0.99760069 0.49264097;
+	-6.26389110 -0.00148716 0.00091101 7.26240394 0.99545039 0.99760183 0.49264203;
+	-6.26391870 -0.00148645 0.00091058 7.26243225 0.99545257 0.99760296 0.49264308;
+	-6.26394621 -0.00148575 0.00091016 7.26246046 0.99545474 0.99760410 0.49264413;
+	-6.26397361 -0.00148504 0.00090973 7.26248857 0.99545691 0.99760523 0.49264518;
+	-6.26400092 -0.00148434 0.00090930 7.26251658 0.99545908 0.99760636 0.49264622;
+	-6.26402813 -0.00148363 0.00090887 7.26254449 0.99546124 0.99760750 0.49264726;
+	-6.26405524 -0.00148293 0.00090844 7.26257231 0.99546341 0.99760863 0.49264830;
+	-6.26408225 -0.00148223 0.00090802 7.26260002 0.99546557 0.99760976 0.49264934;
+	-6.26410916 -0.00148152 0.00090759 7.26262764 0.99546773 0.99761088 0.49265036;
+	-6.26413598 -0.00148082 0.00090717 7.26265516 0.99546989 0.99761201 0.49265140;
+	-6.26416271 -0.00148012 0.00090674 7.26268258 0.99547204 0.99761314 0.49265242;
+	-6.26418933 -0.00147942 0.00090631 7.26270991 0.99547420 0.99761426 0.49265345;
+	-6.26421586 -0.00147872 0.00090589 7.26273714 0.99547635 0.99761539 0.49265447;
+	-6.26424230 -0.00147802 0.00090547 7.26276428 0.99547850 0.99761651 0.49265547;
+	-6.26426864 -0.00147733 0.00090504 7.26279132 0.99548065 0.99761763 0.49265649;
+	-6.26429489 -0.00147663 0.00090462 7.26281826 0.99548279 0.99761875 0.49265751;
+	-6.26432104 -0.00147593 0.00090419 7.26284511 0.99548494 0.99761987 0.49265851;
+	-6.26434710 -0.00147523 0.00090377 7.26287186 0.99548708 0.99762099 0.49265951;
+	-6.26437306 -0.00147454 0.00090335 7.26289852 0.99548922 0.99762211 0.49266051;
+	-6.26439893 -0.00147384 0.00090293 7.26292509 0.99549136 0.99762323 0.49266151;
+	-6.26442471 -0.00147315 0.00090250 7.26295156 0.99549349 0.99762435 0.49266249;
+	-6.26445040 -0.00147246 0.00090208 7.26297794 0.99549563 0.99762546 0.49266350;
+	-6.26447599 -0.00147176 0.00090166 7.26300423 0.99549776 0.99762658 0.49266448;
+	-6.26450150 -0.00147107 0.00090124 7.26303043 0.99549989 0.99762769 0.49266547;
+	-6.26452691 -0.00147038 0.00090082 7.26305653 0.99550202 0.99762880 0.49266646;
+	-6.26455222 -0.00146969 0.00090040 7.26308254 0.99550415 0.99762991 0.49266744;
+	-6.26457745 -0.00146900 0.00089998 7.26310846 0.99550627 0.99763102 0.49266841;
+	-6.26460259 -0.00146831 0.00089956 7.26313428 0.99550839 0.99763213 0.49266939;
+	-6.26462764 -0.00146762 0.00089914 7.26316002 0.99551051 0.99763324 0.49267035;
+	-6.26465259 -0.00146693 0.00089872 7.26318567 0.99551263 0.99763435 0.49267132;
+	-6.26467746 -0.00146624 0.00089831 7.26321122 0.99551475 0.99763545 0.49267230;
+	-6.26470224 -0.00146555 0.00089789 7.26323669 0.99551686 0.99763656 0.49267325;
+	-6.26472693 -0.00146486 0.00089747 7.26326207 0.99551898 0.99763766 0.49267421;
+	-6.26475153 -0.00146418 0.00089705 7.26328735 0.99552109 0.99763877 0.49267517;
+	-6.26477604 -0.00146349 0.00089664 7.26331255 0.99552319 0.99763987 0.49267611;
+	-6.26480047 -0.00146281 0.00089622 7.26333766 0.99552530 0.99764097 0.49267707;
+	-6.26482481 -0.00146212 0.00089580 7.26336268 0.99552741 0.99764207 0.49267802;
+	-6.26484906 -0.00146144 0.00089539 7.26338762 0.99552951 0.99764317 0.49267897;
+	-6.26487322 -0.00146076 0.00089497 7.26341246 0.99553161 0.99764427 0.49267991;
+	-6.26489730 -0.00146007 0.00089456 7.26343722 0.99553371 0.99764537 0.49268085;
+	-6.26492129 -0.00145939 0.00089414 7.26346189 0.99553581 0.99764646 0.49268179;
+	-6.26494519 -0.00145871 0.00089373 7.26348648 0.99553790 0.99764756 0.49268272;
+	-6.26496901 -0.00145803 0.00089332 7.26351098 0.99553999 0.99764865 0.49268365;
+	-6.26499274 -0.00145735 0.00089290 7.26353539 0.99554209 0.99764975 0.49268458;
+	-6.26501639 -0.00145667 0.00089249 7.26355972 0.99554417 0.99765084 0.49268549;
+	-6.26503995 -0.00145599 0.00089208 7.26358396 0.99554626 0.99765193 0.49268643;
+	-6.26506343 -0.00145531 0.00089166 7.26360811 0.99554835 0.99765302 0.49268735;
+	-6.26508682 -0.00145463 0.00089125 7.26363219 0.99555043 0.99765411 0.49268826;
+	-6.26511013 -0.00145396 0.00089084 7.26365617 0.99555251 0.99765520 0.49268918;
+	-6.26513336 -0.00145328 0.00089043 7.26368008 0.99555459 0.99765629 0.49269008;
+	-6.26515650 -0.00145261 0.00089002 7.26370389 0.99555667 0.99765738 0.49269099;
+	-6.26517956 -0.00145193 0.00088961 7.26372763 0.99555875 0.99765846 0.49269190;
+	-6.26520254 -0.00145126 0.00088920 7.26375128 0.99556082 0.99765955 0.49269281;
+	-6.26522543 -0.00145058 0.00088879 7.26377485 0.99556289 0.99766063 0.49269370;
+	-6.26524824 -0.00144991 0.00088838 7.26379834 0.99556496 0.99766171 0.49269460;
+	-6.26527098 -0.00144924 0.00088797 7.26382174 0.99556703 0.99766280 0.49269550;
+	-6.26529363 -0.00144856 0.00088756 7.26384506 0.99556910 0.99766388 0.49269640;
+	-6.26531619 -0.00144789 0.00088715 7.26386830 0.99557116 0.99766496 0.49269728;
+	-6.26533868 -0.00144722 0.00088674 7.26389146 0.99557323 0.99766604 0.49269817;
+	-6.26536109 -0.00144655 0.00088634 7.26391454 0.99557529 0.99766711 0.49269905;
+	-6.26538341 -0.00144588 0.00088593 7.26393753 0.99557735 0.99766819 0.49269994;
+	-6.26540566 -0.00144521 0.00088552 7.26396045 0.99557940 0.99766927 0.49270083;
+	-6.26542783 -0.00144454 0.00088511 7.26398329 0.99558146 0.99767034 0.49270168;
+	-6.26544992 -0.00144387 0.00088471 7.26400604 0.99558351 0.99767142 0.49270256;
+	-6.26547192 -0.00144321 0.00088430 7.26402872 0.99558556 0.99767249 0.49270344;
+	-6.26549385 -0.00144254 0.00088390 7.26405131 0.99558761 0.99767356 0.49270431;
+	-6.26551570 -0.00144187 0.00088349 7.26407383 0.99558966 0.99767463 0.49270518;
+	-6.26553748 -0.00144121 0.00088309 7.26409627 0.99559171 0.99767571 0.49270604;
+	-6.26555917 -0.00144054 0.00088268 7.26411863 0.99559375 0.99767678 0.49270690;
+	-6.26558079 -0.00143988 0.00088228 7.26414091 0.99559579 0.99767784 0.49270776;
+	-6.26560233 -0.00143922 0.00088187 7.26416311 0.99559783 0.99767891 0.49270862;
+	-6.26562379 -0.00143855 0.00088147 7.26418524 0.99559987 0.99767998 0.49270947;
+	-6.26564518 -0.00143789 0.00088107 7.26420729 0.99560191 0.99768104 0.49271032;
+	-6.26566648 -0.00143723 0.00088066 7.26422926 0.99560394 0.99768211 0.49271118;
+	-6.26568772 -0.00143657 0.00088026 7.26425115 0.99560598 0.99768317 0.49271202;
+	-6.26570887 -0.00143590 0.00087986 7.26427297 0.99560801 0.99768424 0.49271286;
+	-6.26572995 -0.00143524 0.00087946 7.26429471 0.99561004 0.99768530 0.49271371;
+	-6.26575096 -0.00143458 0.00087906 7.26431637 0.99561206 0.99768636 0.49271455;
+	-6.26577189 -0.00143393 0.00087865 7.26433796 0.99561409 0.99768742 0.49271537;
+	-6.26579274 -0.00143327 0.00087825 7.26435948 0.99561611 0.99768848 0.49271621;
+	-6.26581352 -0.00143261 0.00087785 7.26438092 0.99561813 0.99768954 0.49271704;
+	-6.26583423 -0.00143195 0.00087745 7.26440228 0.99562015 0.99769059 0.49271787;
+	-6.26585486 -0.00143130 0.00087705 7.26442357 0.99562217 0.99769165 0.49271871;
+	-6.26587542 -0.00143064 0.00087665 7.26444478 0.99562419 0.99769271 0.49271954;
+	-6.26589591 -0.00142998 0.00087626 7.26446592 0.99562620 0.99769376 0.49272035;
+	-6.26591632 -0.00142933 0.00087586 7.26448699 0.99562822 0.99769482 0.49272117;
+	-6.26593666 -0.00142867 0.00087546 7.26450798 0.99563023 0.99769587 0.49272198;
+	-6.26595692 -0.00142802 0.00087506 7.26452890 0.99563224 0.99769692 0.49272279;
+	-6.26597711 -0.00142737 0.00087466 7.26454975 0.99563424 0.99769797 0.49272362;
+	-6.26599724 -0.00142671 0.00087426 7.26457052 0.99563625 0.99769902 0.49272441;
+	-6.26601728 -0.00142606 0.00087387 7.26459122 0.99563825 0.99770007 0.49272522;
+	-6.26603726 -0.00142541 0.00087347 7.26461185 0.99564025 0.99770112 0.49272604;
+	-6.26605717 -0.00142476 0.00087307 7.26463241 0.99564225 0.99770217 0.49272683;
+	-6.26607700 -0.00142411 0.00087268 7.26465289 0.99564425 0.99770321 0.49272764;
+	-6.26609676 -0.00142346 0.00087228 7.26467331 0.99564625 0.99770426 0.49272843;
+	-6.26611646 -0.00142281 0.00087189 7.26469365 0.99564824 0.99770530 0.49272921;
+	-6.26613608 -0.00142216 0.00087149 7.26471392 0.99565024 0.99770635 0.49273003;
+	-6.26615563 -0.00142151 0.00087110 7.26473412 0.99565223 0.99770739 0.49273081;
+	-6.26617512 -0.00142087 0.00087070 7.26475425 0.99565422 0.99770843 0.49273160;
+	-6.26619453 -0.00142022 0.00087031 7.26477431 0.99565620 0.99770947 0.49273238;
+	-6.26621387 -0.00141957 0.00086992 7.26479430 0.99565819 0.99771051 0.49273317;
+	-6.26623315 -0.00141893 0.00086952 7.26481422 0.99566017 0.99771155 0.49273396;
+	-6.26625235 -0.00141828 0.00086913 7.26483407 0.99566216 0.99771259 0.49273473;
+	-6.26627149 -0.00141764 0.00086874 7.26485385 0.99566414 0.99771362 0.49273551;
+	-6.26629056 -0.00141699 0.00086835 7.26487356 0.99566612 0.99771466 0.49273628;
+	-6.26630956 -0.00141635 0.00086795 7.26489321 0.99566809 0.99771570 0.49273706;
+	-6.26632849 -0.00141571 0.00086756 7.26491278 0.99567007 0.99771673 0.49273783;
+	-6.26634735 -0.00141506 0.00086717 7.26493229 0.99567204 0.99771776 0.49273859;
+	-6.26636615 -0.00141442 0.00086678 7.26495173 0.99567401 0.99771880 0.49273935;
+	-6.26638488 -0.00141378 0.00086639 7.26497110 0.99567598 0.99771983 0.49274013;
+	-6.26640355 -0.00141314 0.00086600 7.26499041 0.99567795 0.99772086 0.49274089;
+	-6.26642214 -0.00141250 0.00086561 7.26500964 0.99567992 0.99772189 0.49274164;
+	-6.26644067 -0.00141186 0.00086522 7.26502881 0.99568188 0.99772292 0.49274241;
+	-6.26645914 -0.00141122 0.00086483 7.26504792 0.99568384 0.99772395 0.49274316;
+	-6.26647754 -0.00141058 0.00086444 7.26506695 0.99568580 0.99772497 0.49274392;
+	-6.26649587 -0.00140995 0.00086405 7.26508592 0.99568776 0.99772600 0.49274466;
+	-6.26651414 -0.00140931 0.00086366 7.26510483 0.99568972 0.99772703 0.49274542;
+	-6.26653234 -0.00140867 0.00086328 7.26512367 0.99569168 0.99772805 0.49274618;
+	-6.26655048 -0.00140804 0.00086289 7.26514244 0.99569363 0.99772908 0.49274690;
+	-6.26656855 -0.00140740 0.00086250 7.26516115 0.99569558 0.99773010 0.49274765;
+	-6.26658656 -0.00140677 0.00086211 7.26517979 0.99569753 0.99773112 0.49274839;
+	-6.26660450 -0.00140613 0.00086173 7.26519837 0.99569948 0.99773214 0.49274912;
+	-6.26662238 -0.00140550 0.00086134 7.26521688 0.99570143 0.99773316 0.49274986;
+	-6.26664020 -0.00140486 0.00086096 7.26523533 0.99570337 0.99773418 0.49275059;
+	-6.26665795 -0.00140423 0.00086057 7.26525372 0.99570532 0.99773520 0.49275132;
+	-6.26667564 -0.00140360 0.00086018 7.26527204 0.99570726 0.99773622 0.49275206;
+	-6.26669326 -0.00140297 0.00085980 7.26529030 0.99570920 0.99773723 0.49275276;
+	-6.26671083 -0.00140234 0.00085942 7.26530849 0.99571114 0.99773825 0.49275350;
+	-6.26672833 -0.00140171 0.00085903 7.26532662 0.99571307 0.99773926 0.49275423;
+	-6.26674577 -0.00140108 0.00085865 7.26534469 0.99571501 0.99774028 0.49275495;
+	-6.26676314 -0.00140045 0.00085826 7.26536270 0.99571694 0.99774129 0.49275567;
+	-6.26678046 -0.00139982 0.00085788 7.26538064 0.99571887 0.99774230 0.49275639;
+	-6.26679771 -0.00139919 0.00085750 7.26539852 0.99572080 0.99774331 0.49275711;
+	-6.26681490 -0.00139856 0.00085711 7.26541634 0.99572273 0.99774433 0.49275782;
+	-6.26683203 -0.00139793 0.00085673 7.26543410 0.99572466 0.99774533 0.49275852;
+	-6.26684910 -0.00139731 0.00085635 7.26545179 0.99572658 0.99774634 0.49275924;
+	-6.26686611 -0.00139668 0.00085597 7.26546943 0.99572851 0.99774735 0.49275995;
+	-6.26688306 -0.00139605 0.00085559 7.26548700 0.99573043 0.99774836 0.49276065;
+	-6.26689994 -0.00139543 0.00085521 7.26550451 0.99573235 0.99774936 0.49276134;
+	-6.26691677 -0.00139481 0.00085482 7.26552196 0.99573426 0.99775037 0.49276204;
+	-6.26693354 -0.00139418 0.00085444 7.26553936 0.99573618 0.99775137 0.49276274;
+	-6.26695024 -0.00139356 0.00085406 7.26555669 0.99573809 0.99775238 0.49276344;
+	-6.26696689 -0.00139293 0.00085368 7.26557396 0.99574001 0.99775338 0.49276413;
+	-6.26698348 -0.00139231 0.00085331 7.26559117 0.99574192 0.99775438 0.49276484;
+	-6.26700001 -0.00139169 0.00085293 7.26560832 0.99574383 0.99775538 0.49276553;
+	-6.26701648 -0.00139107 0.00085255 7.26562541 0.99574574 0.99775638 0.49276621;
+	-6.26703289 -0.00139045 0.00085217 7.26564245 0.99574764 0.99775738 0.49276691;
+	-6.26704925 -0.00138983 0.00085179 7.26565942 0.99574955 0.99775838 0.49276759;
+	-6.26706554 -0.00138921 0.00085141 7.26567633 0.99575145 0.99775938 0.49276826;
+	-6.26708178 -0.00138859 0.00085104 7.26569319 0.99575335 0.99776038 0.49276895;
+	-6.26709796 -0.00138797 0.00085066 7.26570999 0.99575525 0.99776137 0.49276963;
+	-6.26711408 -0.00138735 0.00085028 7.26572673 0.99575715 0.99776237 0.49277030;
+	-6.26713015 -0.00138674 0.00084990 7.26574341 0.99575904 0.99776336 0.49277097;
+	-6.26714616 -0.00138612 0.00084953 7.26576004 0.99576094 0.99776435 0.49277165;
+	-6.26716211 -0.00138550 0.00084915 7.26577661 0.99576283 0.99776535 0.49277232;
+	-6.26717800 -0.00138489 0.00084878 7.26579312 0.99576472 0.99776634 0.49277298;
+	-6.26719384 -0.00138427 0.00084840 7.26580957 0.99576661 0.99776733 0.49277366;
+	-6.26720962 -0.00138366 0.00084803 7.26582597 0.99576850 0.99776832 0.49277432;
+	-6.26722535 -0.00138304 0.00084765 7.26584231 0.99577038 0.99776931 0.49277499;
+	-6.26724102 -0.00138243 0.00084728 7.26585859 0.99577227 0.99777029 0.49277565;
+	-6.26725663 -0.00138181 0.00084690 7.26587482 0.99577415 0.99777128 0.49277630;
+	-6.26727219 -0.00138120 0.00084653 7.26589099 0.99577603 0.99777227 0.49277698;
+	-6.26728769 -0.00138059 0.00084616 7.26590710 0.99577791 0.99777325 0.49277763;
+	-6.26730314 -0.00137998 0.00084578 7.26592316 0.99577979 0.99777424 0.49277828;
+	-6.26731854 -0.00137937 0.00084541 7.26593917 0.99578166 0.99777522 0.49277893;
+	-6.26733388 -0.00137876 0.00084504 7.26595512 0.99578354 0.99777621 0.49277959;
+	-6.26734916 -0.00137815 0.00084467 7.26597101 0.99578541 0.99777719 0.49278024;
+	-6.26736439 -0.00137754 0.00084429 7.26598685 0.99578728 0.99777817 0.49278088;
+	-6.26737957 -0.00137693 0.00084392 7.26600264 0.99578915 0.99777915 0.49278153;
+	-6.26739469 -0.00137632 0.00084355 7.26601837 0.99579102 0.99778013 0.49278219;
+	-6.26740976 -0.00137571 0.00084318 7.26603405 0.99579289 0.99778111 0.49278281;
+	-6.26742477 -0.00137510 0.00084281 7.26604967 0.99579475 0.99778209 0.49278347;
+	-6.26743974 -0.00137450 0.00084244 7.26606524 0.99579661 0.99778306 0.49278410;
+	-6.26745464 -0.00137389 0.00084207 7.26608075 0.99579847 0.99778404 0.49278472;
+	-6.26746950 -0.00137328 0.00084170 7.26609622 0.99580033 0.99778502 0.49278536;
+	-6.26748430 -0.00137268 0.00084133 7.26611162 0.99580219 0.99778599 0.49278600;
+	-6.26749906 -0.00137207 0.00084096 7.26612698 0.99580405 0.99778696 0.49278663;
+	-6.26751375 -0.00137147 0.00084059 7.26614228 0.99580590 0.99778794 0.49278724;
+	-6.26752840 -0.00137087 0.00084022 7.26615753 0.99580776 0.99778891 0.49278789;
+	-6.26754300 -0.00137026 0.00083986 7.26617273 0.99580961 0.99778988 0.49278852;
+	-6.26755754 -0.00136966 0.00083949 7.26618788 0.99581146 0.99779085 0.49278914;
+	-6.26757203 -0.00136906 0.00083912 7.26620297 0.99581331 0.99779182 0.49278975;
+	-6.26758647 -0.00136846 0.00083875 7.26621801 0.99581515 0.99779279 0.49279037;
+	-6.26760086 -0.00136786 0.00083839 7.26623300 0.99581700 0.99779376 0.49279099;
+	-6.26761520 -0.00136725 0.00083802 7.26624794 0.99581884 0.99779472 0.49279161;
+	-6.26762949 -0.00136665 0.00083765 7.26626283 0.99582068 0.99779569 0.49279223;
+	-6.26764372 -0.00136605 0.00083729 7.26627767 0.99582252 0.99779666 0.49279284;
+	-6.26765791 -0.00136546 0.00083692 7.26629245 0.99582436 0.99779762 0.49279345;
+	-6.26767205 -0.00136486 0.00083656 7.26630719 0.99582620 0.99779859 0.49279407;
+	-6.26768613 -0.00136426 0.00083619 7.26632187 0.99582804 0.99779955 0.49279468;
+	-6.26770017 -0.00136366 0.00083583 7.26633651 0.99582987 0.99780051 0.49279528;
+	-6.26771416 -0.00136306 0.00083546 7.26635109 0.99583170 0.99780147 0.49279588;
+	-6.26772809 -0.00136247 0.00083510 7.26636562 0.99583353 0.99780243 0.49279649;
+	-6.26774198 -0.00136187 0.00083474 7.26638011 0.99583536 0.99780339 0.49279710;
+	-6.26775582 -0.00136128 0.00083437 7.26639454 0.99583719 0.99780435 0.49279770;
+	-6.26776961 -0.00136068 0.00083401 7.26640893 0.99583902 0.99780531 0.49279829;
+	-6.26778335 -0.00136009 0.00083365 7.26642326 0.99584084 0.99780627 0.49279888;
+	-6.26779704 -0.00135949 0.00083328 7.26643755 0.99584266 0.99780722 0.49279946;
+	-6.26781069 -0.00135890 0.00083292 7.26645179 0.99584449 0.99780818 0.49280008;
+	-6.26782428 -0.00135831 0.00083256 7.26646598 0.99584631 0.99780913 0.49280067;
+	-6.26783783 -0.00135771 0.00083220 7.26648012 0.99584812 0.99781009 0.49280125;
+	-6.26785133 -0.00135712 0.00083184 7.26649421 0.99584994 0.99781104 0.49280185;
+	-6.26786479 -0.00135653 0.00083148 7.26650826 0.99585175 0.99781199 0.49280244;
+	-6.26787819 -0.00135594 0.00083111 7.26652225 0.99585357 0.99781295 0.49280301;
+	-6.26789155 -0.00135535 0.00083075 7.26653620 0.99585538 0.99781390 0.49280360;
+	-6.26790486 -0.00135476 0.00083039 7.26655010 0.99585719 0.99781485 0.49280419;
+	-6.26791812 -0.00135417 0.00083003 7.26656395 0.99585900 0.99781580 0.49280476;
+	-6.26793134 -0.00135358 0.00082967 7.26657776 0.99586081 0.99781675 0.49280534;
+	-6.26794451 -0.00135299 0.00082931 7.26659152 0.99586261 0.99781769 0.49280594;
+	-6.26795764 -0.00135240 0.00082896 7.26660523 0.99586442 0.99781864 0.49280650;
+	-6.26797071 -0.00135182 0.00082860 7.26661890 0.99586622 0.99781959 0.49280708;
+	-6.26798374 -0.00135123 0.00082824 7.26663252 0.99586802 0.99782053 0.49280764;
+	-6.26799673 -0.00135064 0.00082788 7.26664609 0.99586982 0.99782148 0.49280822;
+	-6.26800967 -0.00135006 0.00082752 7.26665961 0.99587162 0.99782242 0.49280878;
+	-6.26802256 -0.00134947 0.00082717 7.26667309 0.99587341 0.99782336 0.49280935;
+	-6.26803541 -0.00134889 0.00082681 7.26668653 0.99587521 0.99782431 0.49280992;
+	-6.26804822 -0.00134830 0.00082645 7.26669991 0.99587700 0.99782525 0.49281048;
+	-6.26806098 -0.00134772 0.00082609 7.26671326 0.99587879 0.99782619 0.49281107;
+	-6.26807369 -0.00134713 0.00082574 7.26672655 0.99588058 0.99782713 0.49281162;
+	-6.26808636 -0.00134655 0.00082538 7.26673981 0.99588237 0.99782807 0.49281218;
+	-6.26809898 -0.00134597 0.00082503 7.26675301 0.99588416 0.99782900 0.49281274;
+	-6.26811156 -0.00134539 0.00082467 7.26676617 0.99588595 0.99782994 0.49281329;
+	-6.26812410 -0.00134481 0.00082432 7.26677929 0.99588773 0.99783088 0.49281384;
+	-6.26813659 -0.00134422 0.00082396 7.26679236 0.99588951 0.99783181 0.49281439;
+	-6.26814904 -0.00134364 0.00082361 7.26680539 0.99589129 0.99783275 0.49281496;
+	-6.26816144 -0.00134306 0.00082325 7.26681838 0.99589307 0.99783368 0.49281552;
+	-6.26817380 -0.00134248 0.00082290 7.26683132 0.99589485 0.99783462 0.49281605;
+	-6.26818612 -0.00134191 0.00082255 7.26684421 0.99589663 0.99783555 0.49281661;
+	-6.26819839 -0.00134133 0.00082219 7.26685706 0.99589840 0.99783648 0.49281716;
+	-6.26821062 -0.00134075 0.00082184 7.26686987 0.99590018 0.99783741 0.49281769;
+	-6.26822281 -0.00134017 0.00082149 7.26688264 0.99590195 0.99783834 0.49281824;
+	-6.26823495 -0.00133959 0.00082113 7.26689536 0.99590372 0.99783927 0.49281878;
+	-6.26824705 -0.00133902 0.00082078 7.26690804 0.99590549 0.99784020 0.49281933;
+	-6.26825911 -0.00133844 0.00082043 7.26692067 0.99590725 0.99784113 0.49281987;
+	-6.26827113 -0.00133787 0.00082008 7.26693326 0.99590902 0.99784206 0.49282040;
+	-6.26828310 -0.00133729 0.00081973 7.26694581 0.99591078 0.99784298 0.49282094;
+	-6.26829504 -0.00133672 0.00081938 7.26695832 0.99591255 0.99784391 0.49282147;
+	-6.26830693 -0.00133614 0.00081902 7.26697079 0.99591431 0.99784483 0.49282201;
+	-6.26831878 -0.00133557 0.00081867 7.26698321 0.99591607 0.99784576 0.49282254;
+	-6.26833058 -0.00133499 0.00081832 7.26699559 0.99591783 0.99784668 0.49282308;
+	-6.26834235 -0.00133442 0.00081797 7.26700793 0.99591958 0.99784760 0.49282360;
+	-6.26835407 -0.00133385 0.00081762 7.26702023 0.99592134 0.99784853 0.49282414;
+	-6.26836576 -0.00133328 0.00081728 7.26703248 0.99592309 0.99784945 0.49282465;
+	-6.26837740 -0.00133271 0.00081693 7.26704469 0.99592485 0.99785037 0.49282520;
+	-6.26838900 -0.00133214 0.00081658 7.26705687 0.99592660 0.99785129 0.49282572;
+	-6.26840056 -0.00133157 0.00081623 7.26706900 0.99592835 0.99785221 0.49282624;
+	-6.26841209 -0.00133100 0.00081588 7.26708109 0.99593009 0.99785312 0.49282676;
+	-6.26842357 -0.00133043 0.00081553 7.26709314 0.99593184 0.99785404 0.49282728;
+	-6.26843501 -0.00132986 0.00081519 7.26710515 0.99593359 0.99785496 0.49282780;
+	-6.26844641 -0.00132929 0.00081484 7.26711712 0.99593533 0.99785587 0.49282829;
+	-6.26845777 -0.00132872 0.00081449 7.26712905 0.99593707 0.99785679 0.49282883;
+	-6.26846909 -0.00132815 0.00081414 7.26714093 0.99593881 0.99785770 0.49282934;
+	-6.26848037 -0.00132759 0.00081380 7.26715278 0.99594055 0.99785862 0.49282986;
+	-6.26849161 -0.00132702 0.00081345 7.26716459 0.99594229 0.99785953 0.49283037;
+	-6.26850281 -0.00132645 0.00081311 7.26717636 0.99594402 0.99786044 0.49283087;
+	-6.26851397 -0.00132589 0.00081276 7.26718809 0.99594576 0.99786135 0.49283138;
+	-6.26852510 -0.00132532 0.00081242 7.26719977 0.99594749 0.99786226 0.49283189;
+	-6.26853618 -0.00132476 0.00081207 7.26721142 0.99594922 0.99786317 0.49283239;
+	-6.26854723 -0.00132419 0.00081173 7.26722303 0.99595095 0.99786408 0.49283291;
+	-6.26855824 -0.00132363 0.00081138 7.26723461 0.99595268 0.99786499 0.49283341;
+	-6.26856921 -0.00132307 0.00081104 7.26724614 0.99595441 0.99786590 0.49283391;
+	-6.26858014 -0.00132251 0.00081069 7.26725763 0.99595614 0.99786680 0.49283441;
+	-6.26859103 -0.00132194 0.00081035 7.26726909 0.99595786 0.99786771 0.49283490;
+	-6.26860188 -0.00132138 0.00081001 7.26728050 0.99595958 0.99786861 0.49283543;
+	-6.26861270 -0.00132082 0.00080966 7.26729188 0.99596131 0.99786952 0.49283590;
+	-6.26862348 -0.00132026 0.00080932 7.26730322 0.99596303 0.99787042 0.49283641;
+	-6.26863422 -0.00131970 0.00080898 7.26731452 0.99596474 0.99787132 0.49283690;
+	-6.26864493 -0.00131914 0.00080864 7.26732579 0.99596646 0.99787223 0.49283740;
+	-6.26865559 -0.00131858 0.00080829 7.26733701 0.99596818 0.99787313 0.49283789;
+	-6.26866622 -0.00131802 0.00080795 7.26734820 0.99596989 0.99787403 0.49283838;
+	-6.26867681 -0.00131746 0.00080761 7.26735935 0.99597160 0.99787493 0.49283886;
+	-6.26868737 -0.00131690 0.00080727 7.26737047 0.99597332 0.99787583 0.49283935;
+	-6.26869789 -0.00131635 0.00080693 7.26738154 0.99597503 0.99787673 0.49283983;
+	-6.26870837 -0.00131579 0.00080659 7.26739258 0.99597673 0.99787762 0.49284032;
+	-6.26871882 -0.00131523 0.00080625 7.26740358 0.99597844 0.99787852 0.49284083;
+	-6.26872923 -0.00131468 0.00080591 7.26741455 0.99598015 0.99787942 0.49284129;
+	-6.26873960 -0.00131412 0.00080557 7.26742548 0.99598185 0.99788031 0.49284178;
+	-6.26874993 -0.00131357 0.00080523 7.26743637 0.99598355 0.99788121 0.49284226;
+	-6.26876024 -0.00131301 0.00080489 7.26744723 0.99598526 0.99788210 0.49284273;
+	-6.26877050 -0.00131246 0.00080455 7.26745804 0.99598696 0.99788299 0.49284320;
+	-6.26878073 -0.00131190 0.00080421 7.26746883 0.99598865 0.99788389 0.49284369;
+	-6.26879092 -0.00131135 0.00080387 7.26747958 0.99599035 0.99788478 0.49284417;
+	-6.26880108 -0.00131080 0.00080354 7.26749029 0.99599205 0.99788567 0.49284465;
+	-6.26881120 -0.00131024 0.00080320 7.26750096 0.99599374 0.99788656 0.49284510;
+	-6.26882129 -0.00130969 0.00080286 7.26751160 0.99599543 0.99788745 0.49284559;
+	-6.26883135 -0.00130914 0.00080252 7.26752221 0.99599713 0.99788834 0.49284606;
+	-6.26884136 -0.00130859 0.00080219 7.26753278 0.99599882 0.99788923 0.49284653;
+	-6.26885135 -0.00130804 0.00080185 7.26754331 0.99600050 0.99789011 0.49284699;
+	-6.26886129 -0.00130749 0.00080151 7.26755381 0.99600219 0.99789100 0.49284746;
+	-6.26887121 -0.00130694 0.00080118 7.26756427 0.99600388 0.99789189 0.49284793;
+	-6.26888109 -0.00130639 0.00080084 7.26757470 0.99600556 0.99789277 0.49284838;
+	-6.26889093 -0.00130584 0.00080051 7.26758509 0.99600724 0.99789365 0.49284885;
+	-6.26890074 -0.00130529 0.00080017 7.26759545 0.99600893 0.99789454 0.49284932;
+	-6.26891052 -0.00130474 0.00079984 7.26760578 0.99601061 0.99789542 0.49284977;
+	-6.26892026 -0.00130420 0.00079950 7.26761607 0.99601228 0.99789630 0.49285024;
+	-6.26892997 -0.00130365 0.00079917 7.26762633 0.99601396 0.99789719 0.49285069;
+	-6.26893965 -0.00130310 0.00079883 7.26763655 0.99601564 0.99789807 0.49285114;
+	-6.26894929 -0.00130256 0.00079850 7.26764674 0.99601731 0.99789895 0.49285162;
+	-6.26895890 -0.00130201 0.00079816 7.26765689 0.99601899 0.99789983 0.49285206;
+	-6.26896848 -0.00130146 0.00079783 7.26766701 0.99602066 0.99790070 0.49285251;
+	-6.26897802 -0.00130092 0.00079750 7.26767710 0.99602233 0.99790158 0.49285297;
+	-6.26898753 -0.00130038 0.00079717 7.26768715 0.99602400 0.99790246 0.49285344;
+	-6.26899700 -0.00129983 0.00079683 7.26769717 0.99602566 0.99790334 0.49285388;
+	-6.26900645 -0.00129929 0.00079650 7.26770716 0.99602733 0.99790421 0.49285432;
+	-6.26901586 -0.00129875 0.00079617 7.26771711 0.99602900 0.99790509 0.49285477;
+	-6.26902524 -0.00129820 0.00079584 7.26772703 0.99603066 0.99790596 0.49285523;
+	-6.26903458 -0.00129766 0.00079550 7.26773692 0.99603232 0.99790683 0.49285566;
+	-6.26904390 -0.00129712 0.00079517 7.26774678 0.99603398 0.99790771 0.49285611;
+	-6.26905318 -0.00129658 0.00079484 7.26775660 0.99603564 0.99790858 0.49285655;
+	-6.26906243 -0.00129604 0.00079451 7.26776639 0.99603730 0.99790945 0.49285701;
+	-6.26907164 -0.00129550 0.00079418 7.26777615 0.99603896 0.99791032 0.49285743;
+	-6.26908083 -0.00129496 0.00079385 7.26778587 0.99604061 0.99791119 0.49285787;
+	-6.26908998 -0.00129442 0.00079352 7.26779557 0.99604227 0.99791206 0.49285833;
+	-6.26909911 -0.00129388 0.00079319 7.26780523 0.99604392 0.99791293 0.49285876;
+	-6.26910820 -0.00129334 0.00079286 7.26781486 0.99604557 0.99791380 0.49285921;
+	-6.26911726 -0.00129280 0.00079253 7.26782446 0.99604722 0.99791467 0.49285963;
+	-6.26912629 -0.00129226 0.00079220 7.26783402 0.99604887 0.99791553 0.49286007;
+	-6.26913528 -0.00129173 0.00079188 7.26784356 0.99605051 0.99791640 0.49286049;
+	-6.26914425 -0.00129119 0.00079155 7.26785306 0.99605216 0.99791726 0.49286093;
+	-6.26915318 -0.00129065 0.00079122 7.26786253 0.99605380 0.99791813 0.49286138;
+	-6.26916209 -0.00129012 0.00079089 7.26787197 0.99605545 0.99791899 0.49286178;
+	-6.26917096 -0.00128958 0.00079056 7.26788138 0.99605709 0.99791985 0.49286223;
+	-6.26917981 -0.00128905 0.00079024 7.26789076 0.99605873 0.99792072 0.49286266;
+	-6.26918862 -0.00128851 0.00078991 7.26790011 0.99606037 0.99792158 0.49286308;
+	-6.26919740 -0.00128798 0.00078958 7.26790942 0.99606201 0.99792244 0.49286350;
+	-6.26920615 -0.00128744 0.00078926 7.26791871 0.99606364 0.99792330 0.49286392;
+	-6.26921488 -0.00128691 0.00078893 7.26792797 0.99606528 0.99792416 0.49286436;
+	-6.26922357 -0.00128638 0.00078860 7.26793719 0.99606691 0.99792502 0.49286478;
+	-6.26923223 -0.00128585 0.00078828 7.26794639 0.99606854 0.99792588 0.49286521;
+	-6.26924086 -0.00128531 0.00078795 7.26795555 0.99607017 0.99792673 0.49286564;
+	-6.26924947 -0.00128478 0.00078763 7.26796468 0.99607180 0.99792759 0.49286605;
+	-6.26925804 -0.00128425 0.00078730 7.26797379 0.99607343 0.99792845 0.49286646;
+	-6.26926658 -0.00128372 0.00078698 7.26798286 0.99607506 0.99792930 0.49286689;
+	-6.26927510 -0.00128319 0.00078665 7.26799191 0.99607668 0.99793016 0.49286730;
+	-6.26928358 -0.00128266 0.00078633 7.26800092 0.99607831 0.99793101 0.49286770;
+	-6.26929204 -0.00128213 0.00078601 7.26800991 0.99607993 0.99793186 0.49286812;
+	-6.26930047 -0.00128160 0.00078568 7.26801887 0.99608155 0.99793272 0.49286854;
+	-6.26930887 -0.00128107 0.00078536 7.26802779 0.99608317 0.99793357 0.49286895;
+	-6.26931724 -0.00128054 0.00078504 7.26803669 0.99608479 0.99793442 0.49286937;
+	-6.26932558 -0.00128002 0.00078471 7.26804556 0.99608641 0.99793527 0.49286977;
+	-6.26933389 -0.00127949 0.00078439 7.26805440 0.99608802 0.99793612 0.49287019;
+	-6.26934217 -0.00127896 0.00078407 7.26806321 0.99608964 0.99793697 0.49287058;
+	-6.26935043 -0.00127844 0.00078375 7.26807199 0.99609125 0.99793782 0.49287100;
+	-6.26935866 -0.00127791 0.00078342 7.26808075 0.99609287 0.99793867 0.49287142;
+	-6.26936686 -0.00127738 0.00078310 7.26808947 0.99609448 0.99793951 0.49287182;
+	-6.26937503 -0.00127686 0.00078278 7.26809817 0.99609609 0.99794036 0.49287224;
+	-6.26938317 -0.00127634 0.00078246 7.26810683 0.99609769 0.99794120 0.49287263;
+	-6.26939129 -0.00127581 0.00078214 7.26811547 0.99609930 0.99794205 0.49287302;
+	-6.26939937 -0.00127529 0.00078182 7.26812409 0.99610091 0.99794289 0.49287345;
+	-6.26940743 -0.00127476 0.00078150 7.26813267 0.99610251 0.99794374 0.49287384;
+	-6.26941547 -0.00127424 0.00078118 7.26814123 0.99610411 0.99794458 0.49287423;
+	-6.26942347 -0.00127372 0.00078086 7.26814975 0.99610572 0.99794542 0.49287464;
+	-6.26943145 -0.00127320 0.00078054 7.26815825 0.99610732 0.99794626 0.49287504;
+	-6.26943940 -0.00127267 0.00078022 7.26816673 0.99610892 0.99794711 0.49287543;
+	-6.26944732 -0.00127215 0.00077990 7.26817517 0.99611051 0.99794795 0.49287581;
+	-6.26945522 -0.00127163 0.00077958 7.26818359 0.99611211 0.99794879 0.49287621;
+	-6.26946309 -0.00127111 0.00077926 7.26819198 0.99611370 0.99794962 0.49287661;
+	-6.26947093 -0.00127059 0.00077895 7.26820034 0.99611530 0.99795046 0.49287701;
+	-6.26947875 -0.00127007 0.00077863 7.26820868 0.99611689 0.99795130 0.49287739;
+	-6.26948654 -0.00126955 0.00077831 7.26821698 0.99611848 0.99795214 0.49287779;
+	-6.26949430 -0.00126903 0.00077799 7.26822527 0.99612007 0.99795297 0.49287817;
+	-6.26950204 -0.00126852 0.00077768 7.26823352 0.99612166 0.99795381 0.49287857;
+	-6.26950975 -0.00126800 0.00077736 7.26824175 0.99612325 0.99795464 0.49287896;
+	-6.26951743 -0.00126748 0.00077704 7.26824995 0.99612484 0.99795548 0.49287934;
+	-6.26952509 -0.00126696 0.00077673 7.26825813 0.99612642 0.99795631 0.49287973;
+	-6.26953272 -0.00126645 0.00077641 7.26826627 0.99612800 0.99795714 0.49288012;
+	-6.26954033 -0.00126593 0.00077609 7.26827440 0.99612959 0.99795798 0.49288050;
+	-6.26954791 -0.00126541 0.00077578 7.26828249 0.99613117 0.99795881 0.49288087;
+	-6.26955546 -0.00126490 0.00077546 7.26829056 0.99613275 0.99795964 0.49288126;
+	-6.26956299 -0.00126438 0.00077515 7.26829860 0.99613433 0.99796047 0.49288164;
+	-6.26957049 -0.00126387 0.00077483 7.26830662 0.99613590 0.99796130 0.49288203;
+	-6.26957797 -0.00126335 0.00077452 7.26831461 0.99613748 0.99796213 0.49288240;
+	-6.26958542 -0.00126284 0.00077420 7.26832258 0.99613905 0.99796296 0.49288278;
+	-6.26959285 -0.00126233 0.00077389 7.26833052 0.99614063 0.99796378 0.49288317;
+	-6.26960025 -0.00126181 0.00077357 7.26833844 0.99614220 0.99796461 0.49288354;
+	-6.26960763 -0.00126130 0.00077326 7.26834632 0.99614377 0.99796544 0.49288392;
+	-6.26961498 -0.00126079 0.00077295 7.26835419 0.99614534 0.99796626 0.49288432;
+	-6.26962230 -0.00126028 0.00077263 7.26836203 0.99614691 0.99796709 0.49288467;
+	-6.26962961 -0.00125977 0.00077232 7.26836984 0.99614847 0.99796791 0.49288504;
+	-6.26963688 -0.00125926 0.00077201 7.26837763 0.99615004 0.99796874 0.49288540;
+	-6.26964414 -0.00125874 0.00077170 7.26838539 0.99615160 0.99796956 0.49288580;
+	-6.26965137 -0.00125823 0.00077138 7.26839313 0.99615317 0.99797038 0.49288618;
+	-6.26965857 -0.00125772 0.00077107 7.26840084 0.99615473 0.99797120 0.49288651;
+	-6.26966575 -0.00125722 0.00077076 7.26840853 0.99615629 0.99797202 0.49288691;
+	-6.26967290 -0.00125671 0.00077045 7.26841620 0.99615785 0.99797284 0.49288729;
+	-6.26968003 -0.00125620 0.00077014 7.26842384 0.99615941 0.99797366 0.49288765;
+	-6.26968714 -0.00125569 0.00076983 7.26843145 0.99616097 0.99797448 0.49288801;
+	-6.26969422 -0.00125518 0.00076952 7.26843904 0.99616252 0.99797530 0.49288835;
+	-6.26970128 -0.00125468 0.00076920 7.26844661 0.99616408 0.99797612 0.49288872;
+	-6.26970832 -0.00125417 0.00076889 7.26845415 0.99616563 0.99797694 0.49288910;
+	-6.26971533 -0.00125366 0.00076858 7.26846167 0.99616718 0.99797775 0.49288946;
+	-6.26972232 -0.00125316 0.00076827 7.26846916 0.99616873 0.99797857 0.49288983;
+	-6.26972928 -0.00125265 0.00076797 7.26847663 0.99617028 0.99797938 0.49289019;
+	-6.26973622 -0.00125214 0.00076766 7.26848408 0.99617183 0.99798020 0.49289056;
+	-6.26974314 -0.00125164 0.00076735 7.26849150 0.99617338 0.99798101 0.49289092;
+	-6.26975003 -0.00125114 0.00076704 7.26849890 0.99617492 0.99798183 0.49289126;
+	-6.26975691 -0.00125063 0.00076673 7.26850627 0.99617647 0.99798264 0.49289162;
+	-6.26976375 -0.00125013 0.00076642 7.26851363 0.99617801 0.99798345 0.49289199;
+	-6.26977058 -0.00124962 0.00076611 7.26852095 0.99617955 0.99798426 0.49289234;
+	-6.26977738 -0.00124912 0.00076581 7.26852826 0.99618109 0.99798507 0.49289269;
+	-6.26978416 -0.00124862 0.00076550 7.26853554 0.99618263 0.99798588 0.49289304;
+	-6.26979092 -0.00124812 0.00076519 7.26854280 0.99618417 0.99798669 0.49289341;
+	-6.26979765 -0.00124762 0.00076488 7.26855003 0.99618571 0.99798750 0.49289376;
+	-6.26980436 -0.00124711 0.00076458 7.26855725 0.99618724 0.99798831 0.49289409;
+	-6.26981105 -0.00124661 0.00076427 7.26856444 0.99618878 0.99798912 0.49289444;
+	-6.26981772 -0.00124611 0.00076396 7.26857160 0.99619031 0.99798992 0.49289482;
+	-6.26982436 -0.00124561 0.00076366 7.26857875 0.99619184 0.99799073 0.49289516;
+	-6.26983098 -0.00124511 0.00076335 7.26858587 0.99619337 0.99799154 0.49289554;
+	-6.26983758 -0.00124461 0.00076305 7.26859297 0.99619490 0.99799234 0.49289586;
+	-6.26984416 -0.00124412 0.00076274 7.26860004 0.99619643 0.99799314 0.49289620;
+	-6.26985071 -0.00124362 0.00076244 7.26860710 0.99619796 0.99799395 0.49289657;
+	-6.26985725 -0.00124312 0.00076213 7.26861413 0.99619949 0.99799475 0.49289690;
+	-6.26986376 -0.00124262 0.00076183 7.26862114 0.99620101 0.99799555 0.49289724;
+	-6.26987025 -0.00124212 0.00076152 7.26862812 0.99620253 0.99799636 0.49289757;
+	-6.26987672 -0.00124163 0.00076122 7.26863509 0.99620406 0.99799716 0.49289792;
+	-6.26988316 -0.00124113 0.00076091 7.26864203 0.99620558 0.99799796 0.49289828;
+	-6.26988959 -0.00124063 0.00076061 7.26864895 0.99620710 0.99799876 0.49289862;
+	-6.26989599 -0.00124014 0.00076031 7.26865585 0.99620862 0.99799956 0.49289895;
+	-6.26990237 -0.00123964 0.00076000 7.26866273 0.99621013 0.99800035 0.49289931;
+	-6.26990873 -0.00123915 0.00075970 7.26866958 0.99621165 0.99800115 0.49289965;
+	-6.26991507 -0.00123865 0.00075940 7.26867642 0.99621317 0.99800195 0.49289998;
+	-6.26992139 -0.00123816 0.00075909 7.26868323 0.99621468 0.99800275 0.49290032;
+	-6.26992769 -0.00123767 0.00075879 7.26869002 0.99621619 0.99800354 0.49290066;
+	-6.26993396 -0.00123717 0.00075849 7.26869679 0.99621770 0.99800434 0.49290100;
+	-6.26994022 -0.00123668 0.00075819 7.26870354 0.99621921 0.99800513 0.49290132;
+	-6.26994645 -0.00123619 0.00075789 7.26871027 0.99622072 0.99800593 0.49290166;
+	-6.26995267 -0.00123569 0.00075758 7.26871697 0.99622223 0.99800672 0.49290199;
+	-6.26995886 -0.00123520 0.00075728 7.26872366 0.99622374 0.99800751 0.49290231;
+	-6.26996503 -0.00123471 0.00075698 7.26873032 0.99622524 0.99800831 0.49290268;
+	-6.26997119 -0.00123422 0.00075668 7.26873697 0.99622675 0.99800910 0.49290298;
+	-6.26997732 -0.00123373 0.00075638 7.26874359 0.99622825 0.99800989 0.49290333;
+	-6.26998343 -0.00123324 0.00075608 7.26875019 0.99622975 0.99801068 0.49290366;
+	-6.26998952 -0.00123275 0.00075578 7.26875677 0.99623126 0.99801147 0.49290397;
+	-6.26999559 -0.00123226 0.00075548 7.26876333 0.99623275 0.99801226 0.49290432;
+	-6.27000164 -0.00123177 0.00075518 7.26876987 0.99623425 0.99801305 0.49290464;
+	-6.27000767 -0.00123128 0.00075488 7.26877639 0.99623575 0.99801384 0.49290499;
+	-6.27001368 -0.00123079 0.00075458 7.26878289 0.99623725 0.99801462 0.49290530;
+	-6.27001968 -0.00123031 0.00075428 7.26878937 0.99623874 0.99801541 0.49290562;
+	-6.27002565 -0.00122982 0.00075399 7.26879583 0.99624024 0.99801620 0.49290596;
+	-6.27003160 -0.00122933 0.00075369 7.26880227 0.99624173 0.99801698 0.49290628;
+	-6.27003753 -0.00122884 0.00075339 7.26880869 0.99624322 0.99801777 0.49290660;
+	-6.27004344 -0.00122836 0.00075309 7.26881508 0.99624471 0.99801855 0.49290693;
+	-6.27004933 -0.00122787 0.00075279 7.26882146 0.99624620 0.99801934 0.49290725;
+	-6.27005521 -0.00122739 0.00075250 7.26882782 0.99624769 0.99802012 0.49290756;
+	-6.27006106 -0.00122690 0.00075220 7.26883416 0.99624917 0.99802090 0.49290790;
+	-6.27006690 -0.00122642 0.00075190 7.26884048 0.99625066 0.99802168 0.49290821;
+	-6.27007271 -0.00122593 0.00075160 7.26884678 0.99625214 0.99802246 0.49290851;
+	-6.27007851 -0.00122545 0.00075131 7.26885306 0.99625363 0.99802324 0.49290885;
+	-6.27008428 -0.00122496 0.00075101 7.26885932 0.99625511 0.99802402 0.49290916;
+	-6.27009004 -0.00122448 0.00075072 7.26886556 0.99625659 0.99802480 0.49290948;
+	-6.27009578 -0.00122400 0.00075042 7.26887178 0.99625807 0.99802558 0.49290980;
+	-6.27010150 -0.00122351 0.00075012 7.26887799 0.99625955 0.99802636 0.49291012;
+	-6.27010720 -0.00122303 0.00074983 7.26888417 0.99626102 0.99802714 0.49291045;
+	-6.27011288 -0.00122255 0.00074953 7.26889033 0.99626250 0.99802792 0.49291075;
+	-6.27011855 -0.00122207 0.00074924 7.26889648 0.99626398 0.99802869 0.49291108;
+	-6.27012419 -0.00122159 0.00074894 7.26890260 0.99626545 0.99802947 0.49291137;
+	-6.27012982 -0.00122111 0.00074865 7.26890871 0.99626692 0.99803024 0.49291169;
+	-6.27013543 -0.00122063 0.00074836 7.26891480 0.99626839 0.99803102 0.49291199;
+	-6.27014102 -0.00122015 0.00074806 7.26892087 0.99626986 0.99803179 0.49291232;
+	-6.27014659 -0.00121967 0.00074777 7.26892692 0.99627133 0.99803257 0.49291262;
+	-6.27015214 -0.00121919 0.00074747 7.26893295 0.99627280 0.99803334 0.49291295;
+	-6.27015767 -0.00121871 0.00074718 7.26893897 0.99627427 0.99803411 0.49291325;
+	-6.27016319 -0.00121823 0.00074689 7.26894496 0.99627574 0.99803488 0.49291356;
+	-6.27016869 -0.00121775 0.00074659 7.26895094 0.99627720 0.99803565 0.49291386;
+	-6.27017417 -0.00121727 0.00074630 7.26895690 0.99627866 0.99803642 0.49291418;
+	-6.27017963 -0.00121680 0.00074601 7.26896284 0.99628013 0.99803719 0.49291448;
+	-6.27018508 -0.00121632 0.00074572 7.26896876 0.99628159 0.99803796 0.49291478;
+	-6.27019050 -0.00121584 0.00074543 7.26897466 0.99628305 0.99803873 0.49291509;
+	-6.27019591 -0.00121537 0.00074513 7.26898055 0.99628451 0.99803950 0.49291539;
+	-6.27020130 -0.00121489 0.00074484 7.26898641 0.99628596 0.99804027 0.49291571;
+	-6.27020668 -0.00121441 0.00074455 7.26899226 0.99628742 0.99804103 0.49291599;
+	-6.27021203 -0.00121394 0.00074426 7.26899810 0.99628888 0.99804180 0.49291629;
+	-6.27021737 -0.00121346 0.00074397 7.26900391 0.99629033 0.99804257 0.49291660;
+	-6.27022270 -0.00121299 0.00074368 7.26900971 0.99629178 0.99804333 0.49291688;
+	-6.27022800 -0.00121252 0.00074339 7.26901548 0.99629324 0.99804410 0.49291722;
+	-6.27023329 -0.00121204 0.00074310 7.26902124 0.99629469 0.99804486 0.49291750;
+	-6.27023856 -0.00121157 0.00074281 7.26902699 0.99629614 0.99804562 0.49291781;
+	-6.27024381 -0.00121110 0.00074252 7.26903271 0.99629759 0.99804639 0.49291812;
+	-6.27024904 -0.00121062 0.00074223 7.26903842 0.99629903 0.99804715 0.49291840;
+	-6.27025426 -0.00121015 0.00074194 7.26904411 0.99630048 0.99804791 0.49291870;
+	-6.27025946 -0.00120968 0.00074165 7.26904979 0.99630193 0.99804867 0.49291902;
+	-6.27026465 -0.00120921 0.00074136 7.26905544 0.99630337 0.99804943 0.49291932;
+	-6.27026982 -0.00120874 0.00074107 7.26906108 0.99630481 0.99805019 0.49291960;
+	-6.27027497 -0.00120827 0.00074078 7.26906670 0.99630626 0.99805095 0.49291988;
+	-6.27028010 -0.00120780 0.00074050 7.26907231 0.99630770 0.99805171 0.49292018;
+	-6.27028522 -0.00120732 0.00074021 7.26907789 0.99630914 0.99805247 0.49292047;
+	-6.27029032 -0.00120686 0.00073992 7.26908347 0.99631057 0.99805322 0.49292077;
+	-6.27029541 -0.00120639 0.00073963 7.26908902 0.99631201 0.99805398 0.49292106;
+	-6.27030047 -0.00120592 0.00073934 7.26909456 0.99631345 0.99805474 0.49292137;
+	-6.27030552 -0.00120545 0.00073906 7.26910008 0.99631488 0.99805549 0.49292164;
+	-6.27031056 -0.00120498 0.00073877 7.26910558 0.99631632 0.99805625 0.49292193;
+	-6.27031558 -0.00120451 0.00073848 7.26911107 0.99631775 0.99805700 0.49292223;
+	-6.27032058 -0.00120404 0.00073820 7.26911654 0.99631918 0.99805776 0.49292252;
+	-6.27032557 -0.00120358 0.00073791 7.26912199 0.99632061 0.99805851 0.49292278;
+	-6.27033054 -0.00120311 0.00073763 7.26912743 0.99632204 0.99805926 0.49292312;
+	-6.27033549 -0.00120264 0.00073734 7.26913285 0.99632347 0.99806002 0.49292338;
+	-6.27034043 -0.00120218 0.00073705 7.26913825 0.99632490 0.99806077 0.49292367;
+	-6.27034536 -0.00120171 0.00073677 7.26914364 0.99632633 0.99806152 0.49292394;
+	-6.27035026 -0.00120125 0.00073648 7.26914902 0.99632775 0.99806227 0.49292425;
+	-6.27035515 -0.00120078 0.00073620 7.26915437 0.99632918 0.99806302 0.49292452;
+	-6.27036003 -0.00120032 0.00073591 7.26915971 0.99633060 0.99806377 0.49292480;
+	-6.27036489 -0.00119985 0.00073563 7.26916504 0.99633202 0.99806452 0.49292511;
+	-6.27036973 -0.00119939 0.00073535 7.26917034 0.99633344 0.99806527 0.49292536;
+	-6.27037456 -0.00119892 0.00073506 7.26917564 0.99633486 0.99806601 0.49292567;
+	-6.27037937 -0.00119846 0.00073478 7.26918091 0.99633628 0.99806676 0.49292595;
+	-6.27038417 -0.00119800 0.00073449 7.26918617 0.99633770 0.99806751 0.49292622;
+	-6.27038895 -0.00119754 0.00073421 7.26919142 0.99633912 0.99806825 0.49292651;
+	-6.27039372 -0.00119707 0.00073393 7.26919664 0.99634053 0.99806900 0.49292678;
+	-6.27039847 -0.00119661 0.00073364 7.26920186 0.99634195 0.99806974 0.49292707;
+	-6.27040321 -0.00119615 0.00073336 7.26920706 0.99634336 0.99807049 0.49292736;
+	-6.27040793 -0.00119569 0.00073308 7.26921224 0.99634477 0.99807123 0.49292762;
+	-6.27041263 -0.00119523 0.00073280 7.26921740 0.99634618 0.99807198 0.49292790;
+	-6.27041732 -0.00119477 0.00073251 7.26922256 0.99634759 0.99807272 0.49292816;
+	-6.27042200 -0.00119431 0.00073223 7.26922769 0.99634900 0.99807346 0.49292845;
+	-6.27042666 -0.00119385 0.00073195 7.26923281 0.99635041 0.99807420 0.49292873;
+	-6.27043131 -0.00119339 0.00073167 7.26923792 0.99635182 0.99807494 0.49292902;
+	-6.27043594 -0.00119293 0.00073139 7.26924301 0.99635322 0.99807568 0.49292929;
+	-6.27044055 -0.00119247 0.00073111 7.26924808 0.99635463 0.99807642 0.49292955;
+	-6.27044516 -0.00119201 0.00073083 7.26925314 0.99635603 0.99807716 0.49292983;
+	-6.27044974 -0.00119155 0.00073054 7.26925819 0.99635743 0.99807790 0.49293011;
+	-6.27045432 -0.00119110 0.00073026 7.26926322 0.99635884 0.99807864 0.49293037;
+	-6.27045887 -0.00119064 0.00072998 7.26926823 0.99636024 0.99807938 0.49293066;
+	-6.27046342 -0.00119018 0.00072970 7.26927323 0.99636164 0.99808011 0.49293095;
+	-6.27046795 -0.00118973 0.00072942 7.26927822 0.99636303 0.99808085 0.49293118;
+	-6.27047246 -0.00118927 0.00072914 7.26928319 0.99636443 0.99808158 0.49293146;
+	-6.27047696 -0.00118881 0.00072887 7.26928815 0.99636583 0.99808232 0.49293175;
+	-6.27048145 -0.00118836 0.00072859 7.26929309 0.99636722 0.99808305 0.49293201;
+	-6.27048592 -0.00118790 0.00072831 7.26929802 0.99636862 0.99808379 0.49293228;
+	-6.27049038 -0.00118745 0.00072803 7.26930293 0.99637001 0.99808452 0.49293255;
+	-6.27049482 -0.00118699 0.00072775 7.26930783 0.99637140 0.99808526 0.49293281;
+	-6.27049925 -0.00118654 0.00072747 7.26931271 0.99637279 0.99808599 0.49293309;
+	-6.27050366 -0.00118609 0.00072719 7.26931758 0.99637418 0.99808672 0.49293334;
+	-6.27050807 -0.00118563 0.00072692 7.26932243 0.99637557 0.99808745 0.49293360;
+	-6.27051245 -0.00118518 0.00072664 7.26932727 0.99637696 0.99808818 0.49293390;
+	-6.27051683 -0.00118473 0.00072636 7.26933210 0.99637835 0.99808891 0.49293415;
+	-6.27052119 -0.00118427 0.00072608 7.26933691 0.99637973 0.99808964 0.49293444;
+	-6.27052553 -0.00118382 0.00072581 7.26934171 0.99638112 0.99809037 0.49293467;
+	-6.27052986 -0.00118337 0.00072553 7.26934649 0.99638250 0.99809110 0.49293494;
+	-6.27053418 -0.00118292 0.00072525 7.26935126 0.99638388 0.99809183 0.49293521;
+	-6.27053849 -0.00118247 0.00072498 7.26935602 0.99638526 0.99809256 0.49293547;
+	-6.27054278 -0.00118202 0.00072470 7.26936076 0.99638664 0.99809328 0.49293575;
+	-6.27054706 -0.00118157 0.00072442 7.26936549 0.99638802 0.99809401 0.49293600;
+	-6.27055132 -0.00118112 0.00072415 7.26937020 0.99638940 0.99809474 0.49293625;
+	-6.27055557 -0.00118067 0.00072387 7.26937491 0.99639078 0.99809546 0.49293651;
+	-6.27055981 -0.00118022 0.00072360 7.26937959 0.99639215 0.99809619 0.49293677;
+	-6.27056403 -0.00117977 0.00072332 7.26938427 0.99639353 0.99809691 0.49293703;
+	-6.27056825 -0.00117932 0.00072305 7.26938893 0.99639490 0.99809763 0.49293729;
+	-6.27057244 -0.00117887 0.00072277 7.26939357 0.99639628 0.99809836 0.49293754;
+	-6.27057663 -0.00117842 0.00072250 7.26939820 0.99639765 0.99809908 0.49293783;
+	-6.27058080 -0.00117798 0.00072222 7.26940282 0.99639902 0.99809980 0.49293807;
+	-6.27058496 -0.00117753 0.00072195 7.26940743 0.99640039 0.99810052 0.49293833;
+	-6.27058910 -0.00117708 0.00072167 7.26941202 0.99640176 0.99810124 0.49293858;
+	-6.27059324 -0.00117663 0.00072140 7.26941660 0.99640312 0.99810196 0.49293885;
+	-6.27059736 -0.00117619 0.00072113 7.26942117 0.99640449 0.99810268 0.49293910;
+	-6.27060146 -0.00117574 0.00072085 7.26942572 0.99640586 0.99810340 0.49293936;
+	-6.27060556 -0.00117530 0.00072058 7.26943026 0.99640722 0.99810412 0.49293961;
+	-6.27060964 -0.00117485 0.00072031 7.26943479 0.99640859 0.99810484 0.49293988;
+	-6.27061371 -0.00117441 0.00072004 7.26943930 0.99640995 0.99810556 0.49294014;
+	-6.27061776 -0.00117396 0.00071976 7.26944380 0.99641131 0.99810628 0.49294037;
+	-6.27062180 -0.00117352 0.00071949 7.26944829 0.99641267 0.99810699 0.49294061;
+	-6.27062583 -0.00117307 0.00071922 7.26945276 0.99641403 0.99810771 0.49294091;
+	-6.27062985 -0.00117263 0.00071895 7.26945722 0.99641539 0.99810842 0.49294113;
+	-6.27063386 -0.00117219 0.00071867 7.26946167 0.99641675 0.99810914 0.49294137;
+	-6.27063785 -0.00117174 0.00071840 7.26946611 0.99641810 0.99810985 0.49294161;
+	-6.27064183 -0.00117130 0.00071813 7.26947053 0.99641946 0.99811057 0.49294187;
+	-6.27064580 -0.00117086 0.00071786 7.26947494 0.99642081 0.99811128 0.49294216;
+	-6.27064976 -0.00117042 0.00071759 7.26947934 0.99642217 0.99811199 0.49294239;
+	-6.27065370 -0.00116997 0.00071732 7.26948372 0.99642352 0.99811271 0.49294263;
+	-6.27065763 -0.00116953 0.00071705 7.26948810 0.99642487 0.99811342 0.49294289;
+	-6.27066155 -0.00116909 0.00071678 7.26949246 0.99642622 0.99811413 0.49294314;
+	-6.27066546 -0.00116865 0.00071651 7.26949680 0.99642757 0.99811484 0.49294338;
+	-6.27066935 -0.00116821 0.00071624 7.26950114 0.99642892 0.99811555 0.49294362;
+	-6.27067323 -0.00116777 0.00071597 7.26950546 0.99643026 0.99811626 0.49294387;
+	-6.27067711 -0.00116733 0.00071570 7.26950977 0.99643161 0.99811697 0.49294414;
+	-6.27068096 -0.00116689 0.00071543 7.26951407 0.99643296 0.99811768 0.49294435;
+	-6.27068481 -0.00116645 0.00071516 7.26951836 0.99643430 0.99811839 0.49294462;
+	-6.27068865 -0.00116601 0.00071489 7.26952263 0.99643564 0.99811909 0.49294486;
+	-6.27069247 -0.00116558 0.00071462 7.26952689 0.99643699 0.99811980 0.49294512;
+	-6.27069628 -0.00116514 0.00071435 7.26953114 0.99643833 0.99812051 0.49294533;
+	-6.27070008 -0.00116470 0.00071409 7.26953538 0.99643967 0.99812121 0.49294559;
+	-6.27070387 -0.00116426 0.00071382 7.26953961 0.99644101 0.99812192 0.49294582;
+	-6.27070765 -0.00116383 0.00071355 7.26954382 0.99644235 0.99812262 0.49294607;
+	-6.27071141 -0.00116339 0.00071328 7.26954802 0.99644368 0.99812333 0.49294633;
+	-6.27071516 -0.00116295 0.00071301 7.26955221 0.99644502 0.99812403 0.49294657;
+	-6.27071891 -0.00116252 0.00071275 7.26955639 0.99644635 0.99812474 0.49294678;
+	-6.27072264 -0.00116208 0.00071248 7.26956056 0.99644769 0.99812544 0.49294701;
+	-6.27072636 -0.00116165 0.00071221 7.26956471 0.99644902 0.99812614 0.49294726;
+	-6.27073006 -0.00116121 0.00071195 7.26956885 0.99645035 0.99812684 0.49294753;
+	-6.27073376 -0.00116078 0.00071168 7.26957298 0.99645169 0.99812755 0.49294774;
+	-6.27073744 -0.00116034 0.00071141 7.26957710 0.99645302 0.99812825 0.49294799;
+	-6.27074112 -0.00115991 0.00071115 7.26958121 0.99645434 0.99812895 0.49294824;
+	-6.27074478 -0.00115947 0.00071088 7.26958531 0.99645567 0.99812965 0.49294849;
+	-6.27074843 -0.00115904 0.00071062 7.26958939 0.99645700 0.99813035 0.49294867;
+	-6.27075207 -0.00115861 0.00071035 7.26959347 0.99645833 0.99813104 0.49294894;
+	-6.27075570 -0.00115817 0.00071008 7.26959753 0.99645965 0.99813174 0.49294918;
+	-6.27075932 -0.00115774 0.00070982 7.26960158 0.99646098 0.99813244 0.49294940;
+	-6.27076293 -0.00115731 0.00070955 7.26960562 0.99646230 0.99813314 0.49294966;
+	-6.27076652 -0.00115688 0.00070929 7.26960965 0.99646362 0.99813383 0.49294988;
+	-6.27077011 -0.00115644 0.00070902 7.26961366 0.99646494 0.99813453 0.49295014;
+	-6.27077368 -0.00115601 0.00070876 7.26961767 0.99646626 0.99813523 0.49295035;
+	-6.27077724 -0.00115558 0.00070850 7.26962166 0.99646758 0.99813592 0.49295058;
+	-6.27078080 -0.00115515 0.00070823 7.26962565 0.99646890 0.99813662 0.49295081;
+	-6.27078434 -0.00115472 0.00070797 7.26962962 0.99647022 0.99813731 0.49295107;
+	-6.27078787 -0.00115429 0.00070770 7.26963358 0.99647154 0.99813800 0.49295129;
+	-6.27079139 -0.00115386 0.00070744 7.26963753 0.99647285 0.99813870 0.49295151;
+	-6.27079490 -0.00115343 0.00070718 7.26964147 0.99647417 0.99813939 0.49295175;
+	-6.27079840 -0.00115300 0.00070692 7.26964540 0.99647548 0.99814008 0.49295200;
+	-6.27080189 -0.00115257 0.00070665 7.26964931 0.99647679 0.99814077 0.49295221;
+	-6.27080537 -0.00115215 0.00070639 7.26965322 0.99647810 0.99814146 0.49295246;
+	-6.27080883 -0.00115172 0.00070613 7.26965711 0.99647941 0.99814215 0.49295267;
+	-6.27081229 -0.00115129 0.00070586 7.26966100 0.99648072 0.99814284 0.49295289;
+	-6.27081574 -0.00115086 0.00070560 7.26966487 0.99648203 0.99814353 0.49295314;
+	-6.27081917 -0.00115044 0.00070534 7.26966874 0.99648334 0.99814422 0.49295337;
+	-6.27082260 -0.00115001 0.00070508 7.26967259 0.99648465 0.99814491 0.49295357;
+	-6.27082601 -0.00114958 0.00070482 7.26967643 0.99648595 0.99814560 0.49295381;
+	-6.27082942 -0.00114916 0.00070456 7.26968026 0.99648726 0.99814629 0.49295404;
+	-6.27083281 -0.00114873 0.00070430 7.26968408 0.99648856 0.99814697 0.49295428;
+	-6.27083620 -0.00114830 0.00070403 7.26968789 0.99648986 0.99814766 0.49295451;
+	-6.27083957 -0.00114788 0.00070377 7.26969169 0.99649117 0.99814835 0.49295473;
+	-6.27084294 -0.00114745 0.00070351 7.26969548 0.99649247 0.99814903 0.49295497;
+	-6.27084629 -0.00114703 0.00070325 7.26969926 0.99649377 0.99814972 0.49295518;
+	-6.27084964 -0.00114661 0.00070299 7.26970303 0.99649507 0.99815040 0.49295540;
+	-6.27085297 -0.00114618 0.00070273 7.26970679 0.99649636 0.99815109 0.49295563;
+	-6.27085630 -0.00114576 0.00070247 7.26971054 0.99649766 0.99815177 0.49295584;
+	-6.27085961 -0.00114533 0.00070221 7.26971428 0.99649896 0.99815245 0.49295609;
+	-6.27086292 -0.00114491 0.00070195 7.26971800 0.99650025 0.99815313 0.49295629;
+	-6.27086621 -0.00114449 0.00070169 7.26972172 0.99650155 0.99815382 0.49295653;
+	-6.27086950 -0.00114407 0.00070144 7.26972543 0.99650284 0.99815450 0.49295673;
+	-6.27087277 -0.00114364 0.00070118 7.26972913 0.99650413 0.99815518 0.49295696;
+	-6.27087604 -0.00114322 0.00070092 7.26973281 0.99650542 0.99815586 0.49295720;
+	-6.27087929 -0.00114280 0.00070066 7.26973649 0.99650671 0.99815654 0.49295739;
+	-6.27088254 -0.00114238 0.00070040 7.26974016 0.99650800 0.99815722 0.49295764;
+	-6.27088577 -0.00114196 0.00070014 7.26974382 0.99650929 0.99815790 0.49295785;
+	-6.27088900 -0.00114154 0.00069989 7.26974746 0.99651058 0.99815858 0.49295811;
+	-6.27089222 -0.00114112 0.00069963 7.26975110 0.99651187 0.99815925 0.49295829;
+	-6.27089543 -0.00114070 0.00069937 7.26975473 0.99651315 0.99815993 0.49295850;
+	-6.27089862 -0.00114028 0.00069911 7.26975835 0.99651444 0.99816061 0.49295875;
+	-6.27090181 -0.00113986 0.00069886 7.26976195 0.99651572 0.99816129 0.49295895;
+	-6.27090499 -0.00113944 0.00069860 7.26976555 0.99651700 0.99816196 0.49295918;
+	-6.27090816 -0.00113902 0.00069834 7.26976914 0.99651829 0.99816264 0.49295938;
+	-6.27091132 -0.00113860 0.00069809 7.26977272 0.99651957 0.99816331 0.49295963;
+	-6.27091447 -0.00113818 0.00069783 7.26977629 0.99652085 0.99816399 0.49295982;
+	-6.27091762 -0.00113777 0.00069757 7.26977985 0.99652213 0.99816466 0.49296003;
+	-6.27092075 -0.00113735 0.00069732 7.26978340 0.99652340 0.99816533 0.49296028;
+	-6.27092387 -0.00113693 0.00069706 7.26978694 0.99652468 0.99816601 0.49296049;
+	-6.27092699 -0.00113651 0.00069681 7.26979047 0.99652596 0.99816668 0.49296071;
+	-6.27093009 -0.00113610 0.00069655 7.26979399 0.99652723 0.99816735 0.49296091;
+	-6.27093319 -0.00113568 0.00069629 7.26979751 0.99652851 0.99816802 0.49296112;
+	-6.27093627 -0.00113527 0.00069604 7.26980101 0.99652978 0.99816869 0.49296137;
+	-6.27093935 -0.00113485 0.00069578 7.26980450 0.99653105 0.99816937 0.49296155;
+	-6.27094242 -0.00113443 0.00069553 7.26980799 0.99653232 0.99817004 0.49296176;
+	-6.27094548 -0.00113402 0.00069528 7.26981146 0.99653360 0.99817070 0.49296198;
+	-6.27094853 -0.00113360 0.00069502 7.26981493 0.99653487 0.99817137 0.49296221;
+	-6.27095157 -0.00113319 0.00069477 7.26981838 0.99653613 0.99817204 0.49296241;
+	-6.27095461 -0.00113278 0.00069451 7.26982183 0.99653740 0.99817271 0.49296261;
+	-6.27095763 -0.00113236 0.00069426 7.26982527 0.99653867 0.99817338 0.49296284;
+	-6.27096065 -0.00113195 0.00069401 7.26982870 0.99653994 0.99817405 0.49296306;
+	-6.27096365 -0.00113154 0.00069375 7.26983212 0.99654120 0.99817471 0.49296324;
+	-6.27096665 -0.00113112 0.00069350 7.26983553 0.99654246 0.99817538 0.49296349;
+	-6.27096964 -0.00113071 0.00069325 7.26983893 0.99654373 0.99817604 0.49296367;
+	-6.27097262 -0.00113030 0.00069299 7.26984232 0.99654499 0.99817671 0.49296390;
+	-6.27097559 -0.00112989 0.00069274 7.26984571 0.99654625 0.99817737 0.49296411;
+	-6.27097856 -0.00112947 0.00069249 7.26984908 0.99654751 0.99817804 0.49296432;
+	-6.27098151 -0.00112906 0.00069224 7.26985245 0.99654877 0.99817870 0.49296451;
+	-6.27098446 -0.00112865 0.00069198 7.26985581 0.99655003 0.99817937 0.49296475;
+	-6.27098739 -0.00112824 0.00069173 7.26985915 0.99655129 0.99818003 0.49296493;
+	-6.27099032 -0.00112783 0.00069148 7.26986249 0.99655255 0.99818069 0.49296516;
+	-6.27099324 -0.00112742 0.00069123 7.26986583 0.99655380 0.99818135 0.49296535;
+	-6.27099616 -0.00112701 0.00069098 7.26986915 0.99655506 0.99818202 0.49296556;
+	-6.27099906 -0.00112660 0.00069072 7.26987246 0.99655631 0.99818268 0.49296577;
+	-6.27100196 -0.00112619 0.00069047 7.26987577 0.99655756 0.99818334 0.49296597;
+	-6.27100484 -0.00112578 0.00069022 7.26987906 0.99655882 0.99818400 0.49296619;
+	-6.27100772 -0.00112537 0.00068997 7.26988235 0.99656007 0.99818466 0.49296639;
+	-6.27101059 -0.00112496 0.00068972 7.26988563 0.99656132 0.99818532 0.49296663;
+	-6.27101345 -0.00112455 0.00068947 7.26988890 0.99656257 0.99818597 0.49296681;
+	-6.27101631 -0.00112415 0.00068922 7.26989216 0.99656382 0.99818663 0.49296699;
+	-6.27101915 -0.00112374 0.00068897 7.26989541 0.99656506 0.99818729 0.49296722;
+	-6.27102199 -0.00112333 0.00068872 7.26989866 0.99656631 0.99818795 0.49296743;
+	-6.27102482 -0.00112292 0.00068847 7.26990189 0.99656756 0.99818860 0.49296764;
+	-6.27102764 -0.00112252 0.00068822 7.26990512 0.99656880 0.99818926 0.49296783;
+	-6.27103045 -0.00112211 0.00068797 7.26990834 0.99657005 0.99818992 0.49296802;
+	-6.27103326 -0.00112171 0.00068772 7.26991155 0.99657129 0.99819057 0.49296822;
+	-6.27103606 -0.00112130 0.00068747 7.26991476 0.99657253 0.99819123 0.49296843;
+	-6.27103885 -0.00112089 0.00068723 7.26991795 0.99657377 0.99819188 0.49296863;
+	-6.27104163 -0.00112049 0.00068698 7.26992114 0.99657501 0.99819253 0.49296882;
+	-6.27104440 -0.00112008 0.00068673 7.26992432 0.99657625 0.99819319 0.49296903;
+	-6.27104717 -0.00111968 0.00068648 7.26992749 0.99657749 0.99819384 0.49296925;
+	-6.27104992 -0.00111927 0.00068623 7.26993065 0.99657873 0.99819449 0.49296948;
+	-6.27105267 -0.00111887 0.00068599 7.26993380 0.99657997 0.99819514 0.49296966;
+	-6.27105541 -0.00111847 0.00068574 7.26993695 0.99658120 0.99819580 0.49296986;
+	-6.27105815 -0.00111806 0.00068549 7.26994009 0.99658244 0.99819645 0.49297006;
+	-6.27106088 -0.00111766 0.00068524 7.26994322 0.99658367 0.99819710 0.49297025;
+	-6.27106359 -0.00111726 0.00068500 7.26994634 0.99658491 0.99819775 0.49297043;
+	-6.27106630 -0.00111685 0.00068475 7.26994945 0.99658614 0.99819840 0.49297064;
+	-6.27106901 -0.00111645 0.00068450 7.26995256 0.99658737 0.99819905 0.49297085;
+	-6.27107170 -0.00111605 0.00068426 7.26995565 0.99658860 0.99819970 0.49297106;
+	-6.27107439 -0.00111565 0.00068401 7.26995874 0.99658983 0.99820034 0.49297123;
+	-6.27107707 -0.00111525 0.00068376 7.26996183 0.99659106 0.99820099 0.49297145;
+	-6.27107974 -0.00111484 0.00068352 7.26996490 0.99659229 0.99820164 0.49297165;
+	-6.27108241 -0.00111444 0.00068327 7.26996797 0.99659352 0.99820229 0.49297182;
+	-6.27108507 -0.00111404 0.00068302 7.26997103 0.99659474 0.99820293 0.49297202;
+	-6.27108772 -0.00111364 0.00068278 7.26997408 0.99659597 0.99820358 0.49297222;
+	-6.27109036 -0.00111324 0.00068253 7.26997712 0.99659719 0.99820422 0.49297241;
+	-6.27109300 -0.00111284 0.00068229 7.26998015 0.99659842 0.99820487 0.49297262;
+	-6.27109562 -0.00111244 0.00068204 7.26998318 0.99659964 0.99820551 0.49297281;
+	-6.27109825 -0.00111204 0.00068180 7.26998620 0.99660086 0.99820616 0.49297301;
+	-6.27110086 -0.00111164 0.00068155 7.26998921 0.99660208 0.99820680 0.49297320;
+	-6.27110347 -0.00111125 0.00068131 7.26999222 0.99660330 0.99820744 0.49297339;
+	-6.27110606 -0.00111085 0.00068106 7.26999522 0.99660452 0.99820809 0.49297359;
+	-6.27110866 -0.00111045 0.00068082 7.26999821 0.99660574 0.99820873 0.49297380;
+	-6.27111124 -0.00111005 0.00068058 7.27000119 0.99660696 0.99820937 0.49297397;
+	-6.27111382 -0.00110965 0.00068033 7.27000416 0.99660818 0.99821001 0.49297417;
+	-6.27111639 -0.00110926 0.00068009 7.27000713 0.99660939 0.99821065 0.49297437;
+	-6.27111895 -0.00110886 0.00067985 7.27001009 0.99661061 0.99821129 0.49297456;
+	-6.27112151 -0.00110846 0.00067960 7.27001304 0.99661182 0.99821193 0.49297477;
+	-6.27112405 -0.00110807 0.00067936 7.27001599 0.99661303 0.99821257 0.49297493;
+	-6.27112660 -0.00110767 0.00067912 7.27001892 0.99661425 0.99821321 0.49297516;
+	-6.27112913 -0.00110728 0.00067887 7.27002185 0.99661546 0.99821385 0.49297533;
+	-6.27113166 -0.00110688 0.00067863 7.27002478 0.99661667 0.99821449 0.49297550;
+	-6.27113418 -0.00110648 0.00067839 7.27002769 0.99661788 0.99821513 0.49297572;
+	-6.27113669 -0.00110609 0.00067815 7.27003060 0.99661909 0.99821576 0.49297589;
+	-6.27113920 -0.00110569 0.00067790 7.27003350 0.99662030 0.99821640 0.49297607;
+	-6.27114170 -0.00110530 0.00067766 7.27003640 0.99662150 0.99821704 0.49297628;
+	-6.27114419 -0.00110491 0.00067742 7.27003928 0.99662271 0.99821767 0.49297646;
+	-6.27114668 -0.00110451 0.00067718 7.27004216 0.99662392 0.99821831 0.49297664;
+	-6.27114915 -0.00110412 0.00067694 7.27004504 0.99662512 0.99821894 0.49297684;
+	-6.27115163 -0.00110372 0.00067670 7.27004790 0.99662632 0.99821958 0.49297702;
+	-6.27115409 -0.00110333 0.00067646 7.27005076 0.99662753 0.99822021 0.49297723;
+	-6.27115655 -0.00110294 0.00067621 7.27005361 0.99662873 0.99822085 0.49297742;
+	-6.27115900 -0.00110255 0.00067597 7.27005646 0.99662993 0.99822148 0.49297759;
+	-6.27116145 -0.00110215 0.00067573 7.27005929 0.99663113 0.99822211 0.49297781;
+	-6.27116389 -0.00110176 0.00067549 7.27006212 0.99663233 0.99822274 0.49297799;
+	-6.27116632 -0.00110137 0.00067525 7.27006495 0.99663353 0.99822338 0.49297818;
+	-6.27116874 -0.00110098 0.00067501 7.27006776 0.99663473 0.99822401 0.49297837;
+	-6.27117116 -0.00110059 0.00067477 7.27007057 0.99663592 0.99822464 0.49297853;
+	-6.27117357 -0.00110020 0.00067453 7.27007338 0.99663712 0.99822527 0.49297873;
+	-6.27117598 -0.00109981 0.00067429 7.27007617 0.99663832 0.99822590 0.49297890;
+	-6.27117838 -0.00109942 0.00067405 7.27007896 0.99663951 0.99822653 0.49297910;
+	-6.27118077 -0.00109903 0.00067381 7.27008174 0.99664070 0.99822716 0.49297929;
+	-6.27118315 -0.00109864 0.00067358 7.27008452 0.99664190 0.99822779 0.49297945;
+	-6.27118553 -0.00109825 0.00067334 7.27008729 0.99664309 0.99822842 0.49297965;
+	-6.27118791 -0.00109786 0.00067310 7.27009005 0.99664428 0.99822904 0.49297987;
+	-6.27119027 -0.00109747 0.00067286 7.27009280 0.99664547 0.99822967 0.49298005;
+	-6.27119263 -0.00109708 0.00067262 7.27009555 0.99664666 0.99823030 0.49298023;
+	-6.27119499 -0.00109669 0.00067238 7.27009829 0.99664785 0.99823092 0.49298041;
+	-6.27119733 -0.00109630 0.00067214 7.27010103 0.99664904 0.99823155 0.49298056;
+	-6.27119968 -0.00109592 0.00067191 7.27010376 0.99665022 0.99823218 0.49298074;
+	-6.27120201 -0.00109553 0.00067167 7.27010648 0.99665141 0.99823280 0.49298095;
+	-6.27120434 -0.00109514 0.00067143 7.27010920 0.99665259 0.99823343 0.49298115;
+	-6.27120666 -0.00109475 0.00067119 7.27011190 0.99665378 0.99823405 0.49298131;
+	-6.27120898 -0.00109437 0.00067096 7.27011461 0.99665496 0.99823467 0.49298149;
+	-6.27121129 -0.00109398 0.00067072 7.27011730 0.99665614 0.99823530 0.49298166;
+	-6.27121359 -0.00109360 0.00067048 7.27011999 0.99665733 0.99823592 0.49298185;
+	-6.27121589 -0.00109321 0.00067025 7.27012268 0.99665851 0.99823654 0.49298202;
+	-6.27121818 -0.00109282 0.00067001 7.27012535 0.99665969 0.99823717 0.49298224;
+	-6.27122046 -0.00109244 0.00066977 7.27012802 0.99666087 0.99823779 0.49298236;
+	-6.27122274 -0.00109205 0.00066954 7.27013069 0.99666205 0.99823841 0.49298260;
+	-6.27122501 -0.00109167 0.00066930 7.27013334 0.99666322 0.99823903 0.49298275;
+	-6.27122728 -0.00109128 0.00066907 7.27013600 0.99666440 0.99823965 0.49298294;
+	-6.27122954 -0.00109090 0.00066883 7.27013864 0.99666558 0.99824027 0.49298313;
+	-6.27123179 -0.00109052 0.00066859 7.27014128 0.99666675 0.99824089 0.49298330;
+	-6.27123404 -0.00109013 0.00066836 7.27014391 0.99666793 0.99824151 0.49298351;
+	-6.27123629 -0.00108975 0.00066812 7.27014654 0.99666910 0.99824213 0.49298363;
+	-6.27123852 -0.00108937 0.00066789 7.27014916 0.99667027 0.99824275 0.49298382;
+	-6.27124075 -0.00108898 0.00066765 7.27015177 0.99667144 0.99824336 0.49298401;
+	-6.27124298 -0.00108860 0.00066742 7.27015438 0.99667261 0.99824398 0.49298420;
+	-6.27124520 -0.00108822 0.00066718 7.27015698 0.99667379 0.99824460 0.49298438;
+	-6.27124741 -0.00108784 0.00066695 7.27015957 0.99667495 0.99824521 0.49298453;
+	-6.27124962 -0.00108745 0.00066672 7.27016216 0.99667612 0.99824583 0.49298471;
+	-6.27125182 -0.00108707 0.00066648 7.27016475 0.99667729 0.99824645 0.49298491;
+	-6.27125401 -0.00108669 0.00066625 7.27016732 0.99667846 0.99824706 0.49298510;
+	-6.27125620 -0.00108631 0.00066601 7.27016989 0.99667962 0.99824768 0.49298524;
+	-6.27125839 -0.00108593 0.00066578 7.27017246 0.99668079 0.99824829 0.49298544;
+	-6.27126057 -0.00108555 0.00066555 7.27017502 0.99668195 0.99824890 0.49298562;
+	-6.27126274 -0.00108517 0.00066531 7.27017757 0.99668312 0.99824952 0.49298575;
+	-6.27126490 -0.00108479 0.00066508 7.27018012 0.99668428 0.99825013 0.49298596;
+	-6.27126707 -0.00108441 0.00066485 7.27018266 0.99668544 0.99825074 0.49298614;
+	-6.27126922 -0.00108403 0.00066461 7.27018519 0.99668660 0.99825136 0.49298629;
+	-6.27127137 -0.00108365 0.00066438 7.27018772 0.99668776 0.99825197 0.49298647;
+	-6.27127351 -0.00108327 0.00066415 7.27019024 0.99668892 0.99825258 0.49298665;
+	-6.27127565 -0.00108289 0.00066392 7.27019276 0.99669008 0.99825319 0.49298685;
+	-6.27127779 -0.00108251 0.00066369 7.27019527 0.99669124 0.99825380 0.49298701;
+	-6.27127991 -0.00108214 0.00066345 7.27019778 0.99669240 0.99825441 0.49298719;
+	-6.27128204 -0.00108176 0.00066322 7.27020028 0.99669356 0.99825502 0.49298735;
+	-6.27128415 -0.00108138 0.00066299 7.27020277 0.99669471 0.99825563 0.49298754;
+	-6.27128626 -0.00108100 0.00066276 7.27020526 0.99669587 0.99825624 0.49298772;
+	-6.27128837 -0.00108063 0.00066253 7.27020774 0.99669702 0.99825685 0.49298787;
+	-6.27129047 -0.00108025 0.00066230 7.27021022 0.99669817 0.99825746 0.49298806;
+	-6.27129256 -0.00107987 0.00066206 7.27021269 0.99669933 0.99825806 0.49298822;
+	-6.27129465 -0.00107950 0.00066183 7.27021516 0.99670048 0.99825867 0.49298838;
+	-6.27129674 -0.00107912 0.00066160 7.27021762 0.99670163 0.99825928 0.49298857;
+	-6.27129881 -0.00107874 0.00066137 7.27022007 0.99670278 0.99825988 0.49298872;
+	-6.27130089 -0.00107837 0.00066114 7.27022252 0.99670393 0.99826049 0.49298890;
+	-6.27130295 -0.00107799 0.00066091 7.27022496 0.99670508 0.99826109 0.49298906;
+	-6.27130502 -0.00107762 0.00066068 7.27022740 0.99670622 0.99826170 0.49298921;
+	-6.27130707 -0.00107724 0.00066045 7.27022983 0.99670737 0.99826230 0.49298942;
+	-6.27130913 -0.00107687 0.00066022 7.27023226 0.99670852 0.99826291 0.49298958;
+	-6.27131117 -0.00107649 0.00065999 7.27023468 0.99670966 0.99826351 0.49298977;
+	-6.27131321 -0.00107612 0.00065976 7.27023709 0.99671081 0.99826412 0.49298992;
+	-6.27131525 -0.00107575 0.00065953 7.27023950 0.99671195 0.99826472 0.49299011;
+	-6.27131728 -0.00107537 0.00065931 7.27024191 0.99671309 0.99826532 0.49299028;
+	-6.27131930 -0.00107500 0.00065908 7.27024430 0.99671423 0.99826592 0.49299042;
+	-6.27132133 -0.00107463 0.00065885 7.27024670 0.99671538 0.99826653 0.49299058;
+	-6.27132334 -0.00107425 0.00065862 7.27024909 0.99671652 0.99826713 0.49299077;
+	-6.27132535 -0.00107388 0.00065839 7.27025147 0.99671766 0.99826773 0.49299096;
+	-6.27132736 -0.00107351 0.00065816 7.27025385 0.99671879 0.99826833 0.49299111;
+	-6.27132936 -0.00107314 0.00065793 7.27025622 0.99671993 0.99826893 0.49299126;
+	-6.27133135 -0.00107277 0.00065771 7.27025858 0.99672107 0.99826953 0.49299144;
+	-6.27133334 -0.00107239 0.00065748 7.27026094 0.99672221 0.99827013 0.49299160;
+	-6.27133532 -0.00107202 0.00065725 7.27026330 0.99672334 0.99827073 0.49299180;
+	-6.27133730 -0.00107165 0.00065702 7.27026565 0.99672448 0.99827132 0.49299193;
+	-6.27133928 -0.00107128 0.00065680 7.27026800 0.99672561 0.99827192 0.49299212;
+	-6.27134125 -0.00107091 0.00065657 7.27027034 0.99672674 0.99827252 0.49299227;
+	-6.27134321 -0.00107054 0.00065634 7.27027267 0.99672788 0.99827312 0.49299243;
+	-6.27134517 -0.00107017 0.00065611 7.27027500 0.99672901 0.99827371 0.49299259;
+	-6.27134713 -0.00106980 0.00065589 7.27027733 0.99673014 0.99827431 0.49299280;
+	-6.27134908 -0.00106943 0.00065566 7.27027964 0.99673127 0.99827491 0.49299296;
+	-6.27135102 -0.00106906 0.00065543 7.27028196 0.99673240 0.99827550 0.49299309;
+	-6.27135296 -0.00106870 0.00065521 7.27028427 0.99673353 0.99827610 0.49299327;
+	-6.27135490 -0.00106833 0.00065498 7.27028657 0.99673466 0.99827669 0.49299344;
+	-6.27135683 -0.00106796 0.00065476 7.27028887 0.99673578 0.99827729 0.49299361;
+	-6.27135875 -0.00106759 0.00065453 7.27029116 0.99673691 0.99827788 0.49299378;
+	-6.27136067 -0.00106722 0.00065430 7.27029345 0.99673804 0.99827847 0.49299395;
+	-6.27136259 -0.00106685 0.00065408 7.27029574 0.99673916 0.99827907 0.49299413;
+	-6.27136450 -0.00106649 0.00065385 7.27029801 0.99674028 0.99827966 0.49299427;
+	-6.27136641 -0.00106612 0.00065363 7.27030029 0.99674141 0.99828025 0.49299442;
+	-6.27136831 -0.00106575 0.00065340 7.27030256 0.99674253 0.99828084 0.49299460;
+	-6.27137021 -0.00106539 0.00065318 7.27030482 0.99674365 0.99828143 0.49299474;
+	-6.27137210 -0.00106502 0.00065295 7.27030708 0.99674477 0.99828203 0.49299490;
+	-6.27137399 -0.00106465 0.00065273 7.27030933 0.99674589 0.99828262 0.49299509;
+	-6.27137587 -0.00106429 0.00065250 7.27031158 0.99674701 0.99828321 0.49299525;
+	-6.27137775 -0.00106392 0.00065228 7.27031382 0.99674813 0.99828380 0.49299541;
+	-6.27137962 -0.00106356 0.00065206 7.27031606 0.99674925 0.99828439 0.49299561;
+	-6.27138149 -0.00106319 0.00065183 7.27031830 0.99675037 0.99828497 0.49299573;
+	-6.27138335 -0.00106283 0.00065161 7.27032053 0.99675148 0.99828556 0.49299589;
+	-6.27138521 -0.00106246 0.00065139 7.27032275 0.99675260 0.99828615 0.49299603;
+	-6.27138707 -0.00106210 0.00065116 7.27032497 0.99675371 0.99828674 0.49299621;
+	-6.27138892 -0.00106173 0.00065094 7.27032719 0.99675483 0.99828733 0.49299635;
+	-6.27139077 -0.00106137 0.00065072 7.27032940 0.99675594 0.99828791 0.49299653;
+	-6.27139261 -0.00106101 0.00065049 7.27033160 0.99675705 0.99828850 0.49299670;
+	-6.27139445 -0.00106064 0.00065027 7.27033380 0.99675816 0.99828909 0.49299687;
+	-6.27139628 -0.00106028 0.00065005 7.27033600 0.99675928 0.99828967 0.49299705;
+	-6.27139811 -0.00105992 0.00064982 7.27033819 0.99676039 0.99829026 0.49299718;
+	-6.27139993 -0.00105956 0.00064960 7.27034037 0.99676150 0.99829084 0.49299736;
+	-6.27140175 -0.00105919 0.00064938 7.27034256 0.99676260 0.99829143 0.49299751;
+	-6.27140356 -0.00105883 0.00064916 7.27034473 0.99676371 0.99829201 0.49299765;
+	-6.27140537 -0.00105847 0.00064893 7.27034690 0.99676482 0.99829260 0.49299782;
+	-6.27140718 -0.00105811 0.00064871 7.27034907 0.99676593 0.99829318 0.49299800;
+	-6.27140898 -0.00105775 0.00064849 7.27035123 0.99676703 0.99829376 0.49299816;
+	-6.27141078 -0.00105739 0.00064827 7.27035339 0.99676814 0.99829434 0.49299833;
+	-6.27141257 -0.00105702 0.00064805 7.27035555 0.99676924 0.99829493 0.49299845;
+	-6.27141436 -0.00105666 0.00064783 7.27035770 0.99677034 0.99829551 0.49299862;
+	-6.27141614 -0.00105630 0.00064761 7.27035984 0.99677145 0.99829609 0.49299878;
+	-6.27141792 -0.00105594 0.00064739 7.27036198 0.99677255 0.99829667 0.49299891;
+	-6.27141970 -0.00105558 0.00064716 7.27036412 0.99677365 0.99829725 0.49299912;
+	-6.27142147 -0.00105522 0.00064694 7.27036625 0.99677475 0.99829783 0.49299926;
+	-6.27142324 -0.00105486 0.00064672 7.27036837 0.99677585 0.99829841 0.49299943;
+	-6.27142500 -0.00105451 0.00064650 7.27037050 0.99677695 0.99829899 0.49299955;
+	-6.27142676 -0.00105415 0.00064628 7.27037261 0.99677805 0.99829957 0.49299971;
+	-6.27142851 -0.00105379 0.00064606 7.27037473 0.99677914 0.99830015 0.49299984;
+	-6.27143026 -0.00105343 0.00064584 7.27037683 0.99678024 0.99830073 0.49300001;
+	-6.27143201 -0.00105307 0.00064562 7.27037894 0.99678134 0.99830131 0.49300017;
+	-6.27143375 -0.00105271 0.00064540 7.27038104 0.99678243 0.99830188 0.49300033;
+	-6.27143549 -0.00105236 0.00064518 7.27038313 0.99678353 0.99830246 0.49300050;
+	-6.27143722 -0.00105200 0.00064496 7.27038522 0.99678462 0.99830304 0.49300065;
+	-6.27143895 -0.00105164 0.00064475 7.27038731 0.99678571 0.99830361 0.49300081;
+	-6.27144068 -0.00105128 0.00064453 7.27038939 0.99678681 0.99830419 0.49300096;
+	-6.27144240 -0.00105093 0.00064431 7.27039147 0.99678790 0.99830477 0.49300112;
+	-6.27144412 -0.00105057 0.00064409 7.27039355 0.99678899 0.99830534 0.49300126;
+	-6.27144583 -0.00105021 0.00064387 7.27039561 0.99679008 0.99830592 0.49300141;
+	-6.27144754 -0.00104986 0.00064365 7.27039768 0.99679117 0.99830649 0.49300158;
+	-6.27144924 -0.00104950 0.00064343 7.27039974 0.99679226 0.99830706 0.49300174;
+	-6.27145094 -0.00104915 0.00064322 7.27040180 0.99679334 0.99830764 0.49300191;
+	-6.27145264 -0.00104879 0.00064300 7.27040385 0.99679443 0.99830821 0.49300203;
+	-6.27145433 -0.00104844 0.00064278 7.27040590 0.99679552 0.99830878 0.49300220;
+	-6.27145602 -0.00104808 0.00064256 7.27040794 0.99679660 0.99830936 0.49300234;
+	-6.27145771 -0.00104773 0.00064234 7.27040998 0.99679769 0.99830993 0.49300248;
+	-6.27145939 -0.00104737 0.00064213 7.27041202 0.99679877 0.99831050 0.49300264;
+	-6.27146107 -0.00104702 0.00064191 7.27041405 0.99679986 0.99831107 0.49300280;
+	-6.27146274 -0.00104667 0.00064169 7.27041607 0.99680094 0.99831164 0.49300294;
+	-6.27146441 -0.00104631 0.00064148 7.27041810 0.99680202 0.99831221 0.49300310;
+	-6.27146607 -0.00104596 0.00064126 7.27042012 0.99680310 0.99831278 0.49300325;
+	-6.27146774 -0.00104561 0.00064104 7.27042213 0.99680418 0.99831335 0.49300340;
+	-6.27146939 -0.00104525 0.00064083 7.27042414 0.99680526 0.99831392 0.49300357;
+	-6.27147105 -0.00104490 0.00064061 7.27042615 0.99680634 0.99831449 0.49300370;
+	-6.27147270 -0.00104455 0.00064039 7.27042815 0.99680742 0.99831506 0.49300390;
+	-6.27147434 -0.00104420 0.00064018 7.27043015 0.99680850 0.99831563 0.49300402;
+	-6.27147599 -0.00104384 0.00063996 7.27043214 0.99680957 0.99831620 0.49300417;
+	-6.27147762 -0.00104349 0.00063975 7.27043413 0.99681065 0.99831676 0.49300431;
+	-6.27147926 -0.00104314 0.00063953 7.27043612 0.99681172 0.99831733 0.49300449;
+	-6.27148089 -0.00104279 0.00063931 7.27043810 0.99681280 0.99831790 0.49300460;
+	-6.27148252 -0.00104244 0.00063910 7.27044008 0.99681387 0.99831846 0.49300478;
+	-6.27148414 -0.00104209 0.00063888 7.27044205 0.99681495 0.99831903 0.49300494;
+	-6.27148576 -0.00104174 0.00063867 7.27044402 0.99681602 0.99831959 0.49300507;
+	-6.27148738 -0.00104139 0.00063845 7.27044599 0.99681709 0.99832016 0.49300523;
+	-6.27148899 -0.00104104 0.00063824 7.27044795 0.99681816 0.99832072 0.49300537;
+	-6.27149060 -0.00104069 0.00063802 7.27044991 0.99681923 0.99832129 0.49300552;
+	-6.27149220 -0.00104034 0.00063781 7.27045186 0.99682030 0.99832185 0.49300567;
+	-6.27149380 -0.00103999 0.00063760 7.27045382 0.99682137 0.99832242 0.49300583;
+	-6.27149540 -0.00103964 0.00063738 7.27045576 0.99682244 0.99832298 0.49300595;
+	-6.27149699 -0.00103929 0.00063717 7.27045771 0.99682351 0.99832354 0.49300609;
+	-6.27149859 -0.00103894 0.00063695 7.27045964 0.99682457 0.99832411 0.49300627;
+	-6.27150017 -0.00103859 0.00063674 7.27046158 0.99682564 0.99832467 0.49300642;
+	-6.27150175 -0.00103824 0.00063653 7.27046351 0.99682670 0.99832523 0.49300653;
+	-6.27150333 -0.00103790 0.00063631 7.27046544 0.99682777 0.99832579 0.49300671;
+	-6.27150491 -0.00103755 0.00063610 7.27046736 0.99682883 0.99832635 0.49300686;
+	-6.27150648 -0.00103720 0.00063589 7.27046928 0.99682990 0.99832691 0.49300700;
+	-6.27150805 -0.00103685 0.00063567 7.27047120 0.99683096 0.99832747 0.49300717;
+	-6.27150962 -0.00103651 0.00063546 7.27047311 0.99683202 0.99832803 0.49300731;
+	-6.27151118 -0.00103616 0.00063525 7.27047502 0.99683308 0.99832859 0.49300742;
+	-6.27151274 -0.00103581 0.00063503 7.27047692 0.99683414 0.99832915 0.49300759;
+	-6.27151429 -0.00103547 0.00063482 7.27047882 0.99683520 0.99832971 0.49300775;
+	-6.27151584 -0.00103512 0.00063461 7.27048072 0.99683626 0.99833027 0.49300787;
+	-6.27151739 -0.00103478 0.00063440 7.27048262 0.99683732 0.99833083 0.49300803;
+	-6.27151893 -0.00103443 0.00063419 7.27048451 0.99683838 0.99833138 0.49300818;
+	-6.27152048 -0.00103408 0.00063397 7.27048639 0.99683943 0.99833194 0.49300831;
+	-6.27152201 -0.00103374 0.00063376 7.27048827 0.99684049 0.99833250 0.49300846;
+	-6.27152355 -0.00103339 0.00063355 7.27049015 0.99684154 0.99833306 0.49300863;
+	-6.27152508 -0.00103305 0.00063334 7.27049203 0.99684260 0.99833361 0.49300877;
+	-6.27152660 -0.00103270 0.00063313 7.27049390 0.99684365 0.99833417 0.49300891;
+	-6.27152813 -0.00103236 0.00063292 7.27049577 0.99684471 0.99833472 0.49300907;
+	-6.27152965 -0.00103202 0.00063271 7.27049763 0.99684576 0.99833528 0.49300922;
+	-6.27153117 -0.00103167 0.00063249 7.27049949 0.99684681 0.99833583 0.49300935;
+	-6.27153268 -0.00103133 0.00063228 7.27050135 0.99684786 0.99833639 0.49300949;
+	-6.27153419 -0.00103099 0.00063207 7.27050320 0.99684891 0.99833694 0.49300966;
+	-6.27153570 -0.00103064 0.00063186 7.27050505 0.99684996 0.99833749 0.49300980;
+	-6.27153720 -0.00103030 0.00063165 7.27050690 0.99685101 0.99833805 0.49300992;
+	-6.27153870 -0.00102996 0.00063144 7.27050874 0.99685206 0.99833860 0.49301003;
+	-6.27154020 -0.00102961 0.00063123 7.27051058 0.99685311 0.99833915 0.49301024;
+	-6.27154169 -0.00102927 0.00063102 7.27051242 0.99685415 0.99833971 0.49301036;
+	-6.27154318 -0.00102893 0.00063081 7.27051425 0.99685520 0.99834026 0.49301051;
+	-6.27154467 -0.00102859 0.00063060 7.27051608 0.99685625 0.99834081 0.49301064;
+	-6.27154615 -0.00102825 0.00063039 7.27051791 0.99685729 0.99834136 0.49301076;
+	-6.27154763 -0.00102791 0.00063018 7.27051973 0.99685834 0.99834191 0.49301089;
+	-6.27154911 -0.00102756 0.00062997 7.27052155 0.99685938 0.99834246 0.49301105;
+	-6.27155059 -0.00102722 0.00062976 7.27052336 0.99686042 0.99834301 0.49301119;
+	-6.27155206 -0.00102688 0.00062956 7.27052517 0.99686146 0.99834356 0.49301134;
+	-6.27155352 -0.00102654 0.00062935 7.27052698 0.99686251 0.99834411 0.49301148;
+	-6.27155499 -0.00102620 0.00062914 7.27052879 0.99686355 0.99834466 0.49301163;
+	-6.27155645 -0.00102586 0.00062893 7.27053059 0.99686459 0.99834521 0.49301176;
+	-6.27155791 -0.00102552 0.00062872 7.27053239 0.99686563 0.99834576 0.49301188;
+	-6.27155936 -0.00102518 0.00062851 7.27053418 0.99686666 0.99834630 0.49301206;
+	-6.27156082 -0.00102484 0.00062830 7.27053597 0.99686770 0.99834685 0.49301220;
+	-6.27156226 -0.00102451 0.00062810 7.27053776 0.99686874 0.99834740 0.49301233;
+	-6.27156371 -0.00102417 0.00062789 7.27053954 0.99686978 0.99834794 0.49301246;
+	-6.27156515 -0.00102383 0.00062768 7.27054132 0.99687081 0.99834849 0.49301262;
+	-6.27156659 -0.00102349 0.00062747 7.27054310 0.99687185 0.99834904 0.49301280;
+	-6.27156803 -0.00102315 0.00062727 7.27054488 0.99687288 0.99834958 0.49301294;
+	-6.27156946 -0.00102281 0.00062706 7.27054665 0.99687392 0.99835013 0.49301309;
+	-6.27157089 -0.00102248 0.00062685 7.27054842 0.99687495 0.99835067 0.49301319;
+	-6.27157232 -0.00102214 0.00062664 7.27055018 0.99687598 0.99835122 0.49301335;
+	-6.27157374 -0.00102180 0.00062644 7.27055194 0.99687701 0.99835176 0.49301345;
+	-6.27157517 -0.00102146 0.00062623 7.27055370 0.99687805 0.99835231 0.49301362;
+	-6.27157658 -0.00102113 0.00062602 7.27055546 0.99687908 0.99835285 0.49301372;
+	-6.27157800 -0.00102079 0.00062582 7.27055721 0.99688011 0.99835339 0.49301383;
+	-6.27157941 -0.00102045 0.00062561 7.27055896 0.99688113 0.99835393 0.49301405;
+	-6.27158082 -0.00102012 0.00062540 7.27056070 0.99688216 0.99835448 0.49301418;
+	-6.27158223 -0.00101978 0.00062520 7.27056244 0.99688319 0.99835502 0.49301433;
+	-6.27158363 -0.00101945 0.00062499 7.27056418 0.99688422 0.99835556 0.49301444;
+	-6.27158503 -0.00101911 0.00062479 7.27056592 0.99688524 0.99835610 0.49301454;
+	-6.27158643 -0.00101878 0.00062458 7.27056765 0.99688627 0.99835664 0.49301468;
+	-6.27158782 -0.00101844 0.00062438 7.27056938 0.99688730 0.99835718 0.49301483;
+	-6.27158921 -0.00101811 0.00062417 7.27057111 0.99688832 0.99835772 0.49301499;
+	-6.27159060 -0.00101777 0.00062396 7.27057283 0.99688934 0.99835826 0.49301513;
+	-6.27159199 -0.00101744 0.00062376 7.27057455 0.99689037 0.99835880 0.49301528;
+	-6.27159337 -0.00101710 0.00062355 7.27057627 0.99689139 0.99835934 0.49301541;
+	-6.27159475 -0.00101677 0.00062335 7.27057798 0.99689241 0.99835988 0.49301553;
+	-6.27159613 -0.00101644 0.00062314 7.27057969 0.99689343 0.99836042 0.49301569;
+	-6.27159750 -0.00101610 0.00062294 7.27058140 0.99689445 0.99836096 0.49301584;
+	-6.27159887 -0.00101577 0.00062274 7.27058310 0.99689547 0.99836150 0.49301593;
+	-6.27160024 -0.00101544 0.00062253 7.27058480 0.99689649 0.99836203 0.49301608;
+	-6.27160160 -0.00101510 0.00062233 7.27058650 0.99689751 0.99836257 0.49301621;
+	-6.27160297 -0.00101477 0.00062212 7.27058820 0.99689853 0.99836311 0.49301634;
+	-6.27160433 -0.00101444 0.00062192 7.27058989 0.99689954 0.99836364 0.49301647;
+	-6.27160568 -0.00101410 0.00062171 7.27059158 0.99690056 0.99836418 0.49301663;
+	-6.27160704 -0.00101377 0.00062151 7.27059327 0.99690158 0.99836472 0.49301679;
+	-6.27160839 -0.00101344 0.00062131 7.27059495 0.99690259 0.99836525 0.49301693;
+	-6.27160974 -0.00101311 0.00062110 7.27059663 0.99690361 0.99836579 0.49301706;
+	-6.27161108 -0.00101278 0.00062090 7.27059831 0.99690462 0.99836632 0.49301722;
+	-6.27161243 -0.00101245 0.00062070 7.27059998 0.99690563 0.99836686 0.49301730;
+	-6.27161377 -0.00101212 0.00062049 7.27060165 0.99690664 0.99836739 0.49301748;
+	-6.27161511 -0.00101179 0.00062029 7.27060332 0.99690766 0.99836792 0.49301757;
+	-6.27161644 -0.00101146 0.00062009 7.27060499 0.99690867 0.99836846 0.49301772;
+	-6.27161777 -0.00101112 0.00061989 7.27060665 0.99690968 0.99836899 0.49301787;
+	-6.27161910 -0.00101079 0.00061968 7.27060831 0.99691069 0.99836952 0.49301798;
+	-6.27162043 -0.00101046 0.00061948 7.27060996 0.99691170 0.99837005 0.49301811;
+	-6.27162175 -0.00101014 0.00061928 7.27061162 0.99691271 0.99837059 0.49301825;
+	-6.27162307 -0.00100981 0.00061908 7.27061327 0.99691371 0.99837112 0.49301840;
+	-6.27162439 -0.00100948 0.00061887 7.27061492 0.99691472 0.99837165 0.49301855;
+	-6.27162571 -0.00100915 0.00061867 7.27061656 0.99691573 0.99837218 0.49301866;
+	-6.27162702 -0.00100882 0.00061847 7.27061820 0.99691673 0.99837271 0.49301881;
+	-6.27162833 -0.00100849 0.00061827 7.27061984 0.99691774 0.99837324 0.49301892;
+	-6.27162964 -0.00100816 0.00061807 7.27062148 0.99691874 0.99837377 0.49301906;
+	-6.27163095 -0.00100783 0.00061787 7.27062311 0.99691975 0.99837430 0.49301923;
+	-6.27163225 -0.00100751 0.00061767 7.27062474 0.99692075 0.99837483 0.49301935;
+	-6.27163355 -0.00100718 0.00061746 7.27062637 0.99692175 0.99837536 0.49301944;
+	-6.27163485 -0.00100685 0.00061726 7.27062800 0.99692275 0.99837589 0.49301961;
+	-6.27163614 -0.00100652 0.00061706 7.27062962 0.99692375 0.99837641 0.49301974;
+	-6.27163743 -0.00100620 0.00061686 7.27063124 0.99692476 0.99837694 0.49301990;
+	-6.27163872 -0.00100587 0.00061666 7.27063285 0.99692576 0.99837747 0.49301996;
+	-6.27164001 -0.00100554 0.00061646 7.27063447 0.99692675 0.99837800 0.49302013;
+	-6.27164130 -0.00100522 0.00061626 7.27063608 0.99692775 0.99837852 0.49302024;
+	-6.27164258 -0.00100489 0.00061606 7.27063769 0.99692875 0.99837905 0.49302039;
+	-6.27164386 -0.00100456 0.00061586 7.27063929 0.99692975 0.99837957 0.49302050;
+	-6.27164513 -0.00100424 0.00061566 7.27064090 0.99693075 0.99838010 0.49302064;
+	-6.27164641 -0.00100391 0.00061546 7.27064250 0.99693174 0.99838063 0.49302080;
+	-6.27164768 -0.00100359 0.00061526 7.27064409 0.99693274 0.99838115 0.49302092;
+	-6.27164895 -0.00100326 0.00061506 7.27064569 0.99693373 0.99838168 0.49302106;
+	-6.27165022 -0.00100294 0.00061486 7.27064728 0.99693473 0.99838220 0.49302117;
+	-6.27165148 -0.00100261 0.00061466 7.27064887 0.99693572 0.99838272 0.49302135;
+	-6.27165274 -0.00100229 0.00061446 7.27065045 0.99693671 0.99838325 0.49302147;
+	-6.27165400 -0.00100196 0.00061427 7.27065204 0.99693770 0.99838377 0.49302161;
+	-6.27165526 -0.00100164 0.00061407 7.27065362 0.99693870 0.99838429 0.49302174;
+	-6.27165651 -0.00100132 0.00061387 7.27065520 0.99693969 0.99838482 0.49302182;
+	-6.27165777 -0.00100099 0.00061367 7.27065677 0.99694068 0.99838534 0.49302200;
+	-6.27165902 -0.00100067 0.00061347 7.27065835 0.99694167 0.99838586 0.49302214;
+	-6.27166026 -0.00100035 0.00061327 7.27065992 0.99694266 0.99838638 0.49302227;
+	-6.27166151 -0.00100002 0.00061307 7.27066149 0.99694364 0.99838690 0.49302237;
+	-6.27166275 -0.00099970 0.00061288 7.27066305 0.99694463 0.99838742 0.49302253;
+	-6.27166399 -0.00099938 0.00061268 7.27066461 0.99694562 0.99838795 0.49302264;
+	-6.27166523 -0.00099905 0.00061248 7.27066617 0.99694660 0.99838847 0.49302277;
+	-6.27166646 -0.00099873 0.00061228 7.27066773 0.99694759 0.99838899 0.49302290;
+	-6.27166770 -0.00099841 0.00061208 7.27066928 0.99694858 0.99838951 0.49302301;
+	-6.27166893 -0.00099809 0.00061189 7.27067084 0.99694956 0.99839002 0.49302315;
+	-6.27167015 -0.00099777 0.00061169 7.27067239 0.99695054 0.99839054 0.49302331;
+	-6.27167138 -0.00099745 0.00061149 7.27067393 0.99695153 0.99839106 0.49302343;
+	-6.27167260 -0.00099712 0.00061130 7.27067548 0.99695251 0.99839158 0.49302354;
+	-6.27167382 -0.00099680 0.00061110 7.27067702 0.99695349 0.99839210 0.49302367;
+	-6.27167504 -0.00099648 0.00061090 7.27067856 0.99695447 0.99839262 0.49302378;
+	-6.27167626 -0.00099616 0.00061070 7.27068010 0.99695545 0.99839313 0.49302391;
+	-6.27167747 -0.00099584 0.00061051 7.27068163 0.99695643 0.99839365 0.49302405;
+	-6.27167868 -0.00099552 0.00061031 7.27068316 0.99695741 0.99839417 0.49302418;
+	-6.27167989 -0.00099520 0.00061012 7.27068469 0.99695839 0.99839468 0.49302428;
+	-6.27168110 -0.00099488 0.00060992 7.27068622 0.99695937 0.99839520 0.49302442;
+	-6.27168231 -0.00099456 0.00060972 7.27068774 0.99696035 0.99839571 0.49302457;
+	-6.27168351 -0.00099424 0.00060953 7.27068927 0.99696133 0.99839623 0.49302469;
+	-6.27168471 -0.00099392 0.00060933 7.27069078 0.99696230 0.99839674 0.49302483;
+	-6.27168591 -0.00099360 0.00060914 7.27069230 0.99696328 0.99839726 0.49302493;
+	-6.27168710 -0.00099329 0.00060894 7.27069382 0.99696425 0.99839777 0.49302510;
+	-6.27168829 -0.00099297 0.00060874 7.27069533 0.99696523 0.99839829 0.49302519;
+	-6.27168949 -0.00099265 0.00060855 7.27069684 0.99696620 0.99839880 0.49302531;
+	-6.27169067 -0.00099233 0.00060835 7.27069834 0.99696717 0.99839931 0.49302546;
+	-6.27169186 -0.00099201 0.00060816 7.27069985 0.99696815 0.99839983 0.49302559;
+	-6.27169305 -0.00099170 0.00060796 7.27070135 0.99696912 0.99840034 0.49302572;
+	-6.27169423 -0.00099138 0.00060777 7.27070285 0.99697009 0.99840085 0.49302581;
+	-6.27169541 -0.00099106 0.00060757 7.27070435 0.99697106 0.99840137 0.49302594;
+	-6.27169659 -0.00099074 0.00060738 7.27070584 0.99697203 0.99840188 0.49302606;
+	-6.27169776 -0.00099043 0.00060719 7.27070734 0.99697300 0.99840239 0.49302620;
+	-6.27169893 -0.00099011 0.00060699 7.27070883 0.99697397 0.99840290 0.49302635;
+	-6.27170011 -0.00098979 0.00060680 7.27071031 0.99697494 0.99840341 0.49302644;
+	-6.27170128 -0.00098948 0.00060660 7.27071180 0.99697590 0.99840392 0.49302662;
+	-6.27170244 -0.00098916 0.00060641 7.27071328 0.99697687 0.99840443 0.49302676;
+	-6.27170361 -0.00098884 0.00060622 7.27071476 0.99697784 0.99840494 0.49302682;
+	-6.27170477 -0.00098853 0.00060602 7.27071624 0.99697880 0.99840545 0.49302696;
+	-6.27170593 -0.00098821 0.00060583 7.27071772 0.99697977 0.99840596 0.49302711;
+	-6.27170709 -0.00098790 0.00060563 7.27071919 0.99698073 0.99840647 0.49302721;
+	-6.27170825 -0.00098758 0.00060544 7.27072066 0.99698170 0.99840698 0.49302733;
+	-6.27170940 -0.00098727 0.00060525 7.27072213 0.99698266 0.99840748 0.49302748;
+	-6.27171055 -0.00098695 0.00060505 7.27072360 0.99698362 0.99840799 0.49302765;
+	-6.27171170 -0.00098664 0.00060486 7.27072506 0.99698459 0.99840850 0.49302773;
+	-6.27171285 -0.00098633 0.00060467 7.27072652 0.99698555 0.99840901 0.49302786;
+	-6.27171399 -0.00098601 0.00060448 7.27072798 0.99698651 0.99840951 0.49302797;
+	-6.27171514 -0.00098570 0.00060428 7.27072944 0.99698747 0.99841002 0.49302811;
+	-6.27171628 -0.00098538 0.00060409 7.27073090 0.99698843 0.99841053 0.49302824;
+	-6.27171742 -0.00098507 0.00060390 7.27073235 0.99698939 0.99841103 0.49302835;
+	-6.27171856 -0.00098476 0.00060371 7.27073380 0.99699035 0.99841154 0.49302848;
+	-6.27171969 -0.00098444 0.00060351 7.27073525 0.99699130 0.99841204 0.49302858;
+	-6.27172082 -0.00098413 0.00060332 7.27073669 0.99699226 0.99841255 0.49302871;
+	-6.27172196 -0.00098382 0.00060313 7.27073814 0.99699322 0.99841305 0.49302887;
+	-6.27172309 -0.00098351 0.00060294 7.27073958 0.99699417 0.99841356 0.49302895;
+	-6.27172421 -0.00098319 0.00060275 7.27074102 0.99699513 0.99841406 0.49302912;
+	-6.27172534 -0.00098288 0.00060256 7.27074246 0.99699608 0.99841456 0.49302925;
+	-6.27172646 -0.00098257 0.00060236 7.27074389 0.99699704 0.99841507 0.49302935;
+	-6.27172758 -0.00098226 0.00060217 7.27074532 0.99699799 0.99841557 0.49302945;
+	-6.27172870 -0.00098195 0.00060198 7.27074676 0.99699894 0.99841607 0.49302959;
+	-6.27172982 -0.00098163 0.00060179 7.27074818 0.99699990 0.99841657 0.49302970;
+	-6.27173093 -0.00098132 0.00060160 7.27074961 0.99700085 0.99841708 0.49302981;
+	-6.27173205 -0.00098101 0.00060141 7.27075103 0.99700180 0.99841758 0.49302992;
+	-6.27173316 -0.00098070 0.00060122 7.27075246 0.99700275 0.99841808 0.49303009;
+	-6.27173427 -0.00098039 0.00060103 7.27075388 0.99700370 0.99841858 0.49303019;
+	-6.27173537 -0.00098008 0.00060084 7.27075529 0.99700465 0.99841908 0.49303031;
+	-6.27173648 -0.00097977 0.00060065 7.27075671 0.99700560 0.99841958 0.49303044;
+	-6.27173758 -0.00097946 0.00060046 7.27075812 0.99700655 0.99842008 0.49303056;
+	-6.27173868 -0.00097915 0.00060027 7.27075953 0.99700749 0.99842058 0.49303069;
+	-6.27173978 -0.00097884 0.00060008 7.27076094 0.99700844 0.99842108 0.49303080;
+	-6.27174088 -0.00097853 0.00059989 7.27076235 0.99700939 0.99842158 0.49303094;
+	-6.27174198 -0.00097822 0.00059970 7.27076375 0.99701033 0.99842208 0.49303107;
+	-6.27174307 -0.00097791 0.00059951 7.27076516 0.99701128 0.99842258 0.49303120;
+	-6.27174416 -0.00097761 0.00059932 7.27076656 0.99701222 0.99842308 0.49303132;
+	-6.27174525 -0.00097730 0.00059913 7.27076795 0.99701317 0.99842357 0.49303142;
+	-6.27174634 -0.00097699 0.00059894 7.27076935 0.99701411 0.99842407 0.49303154;
+	-6.27174743 -0.00097668 0.00059875 7.27077075 0.99701505 0.99842457 0.49303168;
+	-6.27174851 -0.00097637 0.00059856 7.27077214 0.99701599 0.99842507 0.49303176;
+	-6.27174959 -0.00097606 0.00059837 7.27077353 0.99701693 0.99842556 0.49303192;
+	-6.27175067 -0.00097576 0.00059818 7.27077491 0.99701788 0.99842606 0.49303205;
+	-6.27175175 -0.00097545 0.00059800 7.27077630 0.99701882 0.99842656 0.49303212;
+	-6.27175283 -0.00097514 0.00059781 7.27077769 0.99701976 0.99842705 0.49303223;
+	-6.27175390 -0.00097484 0.00059762 7.27077907 0.99702070 0.99842755 0.49303239;
+	-6.27175497 -0.00097453 0.00059743 7.27078045 0.99702163 0.99842804 0.49303247;
+	-6.27175605 -0.00097422 0.00059724 7.27078182 0.99702257 0.99842854 0.49303263;
+	-6.27175712 -0.00097392 0.00059705 7.27078320 0.99702351 0.99842903 0.49303277;
+	-6.27175818 -0.00097361 0.00059687 7.27078457 0.99702445 0.99842952 0.49303287;
+	-6.27175925 -0.00097330 0.00059668 7.27078595 0.99702538 0.99843002 0.49303298;
+	-6.27176031 -0.00097300 0.00059649 7.27078731 0.99702632 0.99843051 0.49303309;
+	-6.27176137 -0.00097269 0.00059630 7.27078868 0.99702725 0.99843101 0.49303324;
+	-6.27176243 -0.00097239 0.00059612 7.27079005 0.99702819 0.99843150 0.49303337;
+	-6.27176349 -0.00097208 0.00059593 7.27079141 0.99702912 0.99843199 0.49303342;
+	-6.27176455 -0.00097178 0.00059574 7.27079277 0.99703005 0.99843248 0.49303355;
+	-6.27176560 -0.00097147 0.00059555 7.27079413 0.99703099 0.99843298 0.49303367;
+	-6.27176666 -0.00097117 0.00059537 7.27079549 0.99703192 0.99843347 0.49303384;
+	-6.27176771 -0.00097086 0.00059518 7.27079685 0.99703285 0.99843396 0.49303391;
+	-6.27176876 -0.00097056 0.00059499 7.27079820 0.99703378 0.99843445 0.49303404;
+	-6.27176980 -0.00097025 0.00059481 7.27079955 0.99703471 0.99843494 0.49303417;
+	-6.27177085 -0.00096995 0.00059462 7.27080090 0.99703564 0.99843543 0.49303426;
+	-6.27177189 -0.00096965 0.00059443 7.27080225 0.99703657 0.99843592 0.49303442;
+	-6.27177294 -0.00096934 0.00059425 7.27080359 0.99703750 0.99843641 0.49303454;
+	-6.27177398 -0.00096904 0.00059406 7.27080494 0.99703843 0.99843690 0.49303464;
+	-6.27177502 -0.00096874 0.00059388 7.27080628 0.99703936 0.99843739 0.49303476;
+	-6.27177605 -0.00096843 0.00059369 7.27080762 0.99704028 0.99843788 0.49303487;
+	-6.27177709 -0.00096813 0.00059350 7.27080896 0.99704121 0.99843837 0.49303501;
+	-6.27177812 -0.00096783 0.00059332 7.27081030 0.99704213 0.99843886 0.49303512;
+	-6.27177915 -0.00096752 0.00059313 7.27081163 0.99704306 0.99843934 0.49303521;
+	-6.27178018 -0.00096722 0.00059295 7.27081296 0.99704398 0.99843983 0.49303537;
+	-6.27178121 -0.00096692 0.00059276 7.27081429 0.99704491 0.99844032 0.49303546;
+	-6.27178224 -0.00096662 0.00059258 7.27081562 0.99704583 0.99844081 0.49303558;
+	-6.27178326 -0.00096632 0.00059239 7.27081695 0.99704675 0.99844129 0.49303575;
+	-6.27178429 -0.00096602 0.00059221 7.27081827 0.99704768 0.99844178 0.49303581;
+	-6.27178531 -0.00096571 0.00059202 7.27081960 0.99704860 0.99844227 0.49303591;
+	-6.27178633 -0.00096541 0.00059184 7.27082092 0.99704952 0.99844275 0.49303609;
+	-6.27178735 -0.00096511 0.00059165 7.27082224 0.99705044 0.99844324 0.49303618;
+	-6.27178836 -0.00096481 0.00059147 7.27082355 0.99705136 0.99844372 0.49303628;
+	-6.27178938 -0.00096451 0.00059128 7.27082487 0.99705228 0.99844421 0.49303641;
+	-6.27179039 -0.00096421 0.00059110 7.27082618 0.99705320 0.99844469 0.49303652;
+	-6.27179140 -0.00096391 0.00059091 7.27082749 0.99705412 0.99844518 0.49303666;
+	-6.27179242 -0.00096361 0.00059073 7.27082881 0.99705503 0.99844566 0.49303673;
+	-6.27179342 -0.00096331 0.00059055 7.27083011 0.99705595 0.99844614 0.49303690;
+	-6.27179443 -0.00096301 0.00059036 7.27083142 0.99705687 0.99844663 0.49303700;
+	-6.27179544 -0.00096271 0.00059018 7.27083272 0.99705778 0.99844711 0.49303712;
+	-6.27179644 -0.00096241 0.00058999 7.27083403 0.99705870 0.99844759 0.49303722;
+	-6.27179744 -0.00096211 0.00058981 7.27083533 0.99705961 0.99844808 0.49303732;
+	-6.27179844 -0.00096181 0.00058963 7.27083663 0.99706053 0.99844856 0.49303745;
+	-6.27179944 -0.00096152 0.00058944 7.27083792 0.99706144 0.99844904 0.49303757;
+	-6.27180044 -0.00096122 0.00058926 7.27083922 0.99706235 0.99844952 0.49303771;
+	-6.27180143 -0.00096092 0.00058908 7.27084051 0.99706327 0.99845000 0.49303777;
+	-6.27180243 -0.00096062 0.00058890 7.27084181 0.99706418 0.99845048 0.49303795;
+	-6.27180342 -0.00096032 0.00058871 7.27084310 0.99706509 0.99845097 0.49303802;
+	-6.27180441 -0.00096002 0.00058853 7.27084438 0.99706600 0.99845145 0.49303815;
+	-6.27180540 -0.00095973 0.00058835 7.27084567 0.99706691 0.99845193 0.49303827;
+	-6.27180639 -0.00095943 0.00058816 7.27084696 0.99706782 0.99845241 0.49303836;
+	-6.27180737 -0.00095913 0.00058798 7.27084824 0.99706873 0.99845289 0.49303844;
+	-6.27180836 -0.00095884 0.00058780 7.27084952 0.99706964 0.99845336 0.49303861;
+	-6.27180934 -0.00095854 0.00058762 7.27085080 0.99707055 0.99845384 0.49303868;
+	-6.27181032 -0.00095824 0.00058744 7.27085208 0.99707145 0.99845432 0.49303884;
+	-6.27181130 -0.00095795 0.00058725 7.27085335 0.99707236 0.99845480 0.49303895;
+	-6.27181228 -0.00095765 0.00058707 7.27085463 0.99707327 0.99845528 0.49303908;
+	-6.27181325 -0.00095735 0.00058689 7.27085590 0.99707417 0.99845576 0.49303915;
+	-6.27181423 -0.00095706 0.00058671 7.27085717 0.99707508 0.99845623 0.49303928;
+	-6.27181520 -0.00095676 0.00058653 7.27085844 0.99707598 0.99845671 0.49303940;
+	-6.27181618 -0.00095647 0.00058635 7.27085971 0.99707689 0.99845719 0.49303950;
+	-6.27181715 -0.00095617 0.00058616 7.27086098 0.99707779 0.99845766 0.49303965;
+	-6.27181811 -0.00095588 0.00058598 7.27086224 0.99707869 0.99845814 0.49303979;
+	-6.27181908 -0.00095558 0.00058580 7.27086350 0.99707960 0.99845862 0.49303989;
+	-6.27182005 -0.00095529 0.00058562 7.27086476 0.99708050 0.99845909 0.49303994;
+	-6.27182101 -0.00095499 0.00058544 7.27086602 0.99708140 0.99845957 0.49304006;
+	-6.27182198 -0.00095470 0.00058526 7.27086728 0.99708230 0.99846004 0.49304023;
+	-6.27182294 -0.00095440 0.00058508 7.27086854 0.99708320 0.99846052 0.49304031;
+	-6.27182390 -0.00095411 0.00058490 7.27086979 0.99708410 0.99846099 0.49304040;
+	-6.27182486 -0.00095381 0.00058472 7.27087104 0.99708500 0.99846147 0.49304052;
+	-6.27182581 -0.00095352 0.00058454 7.27087229 0.99708590 0.99846194 0.49304066;
+	-6.27182677 -0.00095323 0.00058436 7.27087354 0.99708680 0.99846242 0.49304078;
+	-6.27182772 -0.00095293 0.00058418 7.27087479 0.99708769 0.99846289 0.49304090;
+	-6.27182867 -0.00095264 0.00058400 7.27087603 0.99708859 0.99846336 0.49304102;
+	-6.27182963 -0.00095235 0.00058382 7.27087728 0.99708949 0.99846383 0.49304112;
+	-6.27183058 -0.00095205 0.00058364 7.27087852 0.99709038 0.99846431 0.49304120;
+	-6.27183152 -0.00095176 0.00058346 7.27087976 0.99709128 0.99846478 0.49304129;
+	-6.27183247 -0.00095147 0.00058328 7.27088100 0.99709217 0.99846525 0.49304145;
+	-6.27183342 -0.00095118 0.00058310 7.27088224 0.99709307 0.99846572 0.49304157;
+	-6.27183436 -0.00095088 0.00058292 7.27088348 0.99709396 0.99846619 0.49304165;
+	-6.27183530 -0.00095059 0.00058274 7.27088471 0.99709485 0.99846667 0.49304175;
+	-6.27183624 -0.00095030 0.00058256 7.27088594 0.99709575 0.99846714 0.49304190;
+	-6.27183718 -0.00095001 0.00058238 7.27088717 0.99709664 0.99846761 0.49304204;
+	-6.27183812 -0.00094972 0.00058221 7.27088840 0.99709753 0.99846808 0.49304212;
+	-6.27183906 -0.00094943 0.00058203 7.27088963 0.99709842 0.99846855 0.49304222;
+	-6.27183999 -0.00094914 0.00058185 7.27089086 0.99709931 0.99846902 0.49304233;
+	-6.27184093 -0.00094884 0.00058167 7.27089208 0.99710020 0.99846949 0.49304245;
+	-6.27184186 -0.00094855 0.00058149 7.27089331 0.99710109 0.99846996 0.49304255;
+	-6.27184279 -0.00094826 0.00058131 7.27089453 0.99710198 0.99847042 0.49304263;
+	-6.27184372 -0.00094797 0.00058113 7.27089575 0.99710287 0.99847089 0.49304277;
+	-6.27184465 -0.00094768 0.00058096 7.27089697 0.99710375 0.99847136 0.49304288;
+	-6.27184558 -0.00094739 0.00058078 7.27089818 0.99710464 0.99847183 0.49304302;
+	-6.27184650 -0.00094710 0.00058060 7.27089940 0.99710553 0.99847230 0.49304309;
+	-6.27184743 -0.00094681 0.00058042 7.27090061 0.99710641 0.99847276 0.49304322;
+	-6.27184835 -0.00094652 0.00058025 7.27090182 0.99710730 0.99847323 0.49304332;
+	-6.27184927 -0.00094623 0.00058007 7.27090304 0.99710818 0.99847370 0.49304348;
+	-6.27185019 -0.00094595 0.00057989 7.27090424 0.99710907 0.99847416 0.49304351;
+	-6.27185111 -0.00094566 0.00057971 7.27090545 0.99710995 0.99847463 0.49304363;
+	-6.27185203 -0.00094537 0.00057954 7.27090666 0.99711083 0.99847510 0.49304378;
+	-6.27185294 -0.00094508 0.00057936 7.27090786 0.99711172 0.99847556 0.49304390;
+	-6.27185386 -0.00094479 0.00057918 7.27090907 0.99711260 0.99847603 0.49304399;
+	-6.27185477 -0.00094450 0.00057901 7.27091027 0.99711348 0.99847649 0.49304412;
+	-6.27185568 -0.00094421 0.00057883 7.27091147 0.99711436 0.99847696 0.49304419;
+	-6.27185659 -0.00094393 0.00057865 7.27091267 0.99711524 0.99847742 0.49304433;
+	-6.27185750 -0.00094364 0.00057848 7.27091386 0.99711612 0.99847789 0.49304445;
+	-6.27185841 -0.00094335 0.00057830 7.27091506 0.99711700 0.99847835 0.49304453;
+	-6.27185932 -0.00094306 0.00057812 7.27091625 0.99711788 0.99847881 0.49304463;
+	-6.27186022 -0.00094278 0.00057795 7.27091745 0.99711876 0.99847928 0.49304471;
+	-6.27186113 -0.00094249 0.00057777 7.27091864 0.99711964 0.99847974 0.49304488;
+	-6.27186203 -0.00094220 0.00057759 7.27091983 0.99712051 0.99848020 0.49304496;
+	-6.27186293 -0.00094192 0.00057742 7.27092101 0.99712139 0.99848067 0.49304509;
+	-6.27186383 -0.00094163 0.00057724 7.27092220 0.99712227 0.99848113 0.49304521;
+	-6.27186473 -0.00094134 0.00057707 7.27092339 0.99712314 0.99848159 0.49304528;
+	-6.27186563 -0.00094106 0.00057689 7.27092457 0.99712402 0.99848205 0.49304542;
+	-6.27186652 -0.00094077 0.00057672 7.27092575 0.99712489 0.99848251 0.49304552;
+	-6.27186742 -0.00094049 0.00057654 7.27092693 0.99712577 0.99848297 0.49304562;
+	-6.27186831 -0.00094020 0.00057636 7.27092811 0.99712664 0.99848344 0.49304571;
+	-6.27186920 -0.00093991 0.00057619 7.27092929 0.99712751 0.99848390 0.49304585;
+	-6.27187010 -0.00093963 0.00057601 7.27093047 0.99712839 0.99848436 0.49304595;
+	-6.27187098 -0.00093934 0.00057584 7.27093164 0.99712926 0.99848482 0.49304606;
+	-6.27187187 -0.00093906 0.00057567 7.27093281 0.99713013 0.99848528 0.49304619;
+	-6.27187276 -0.00093877 0.00057549 7.27093399 0.99713100 0.99848574 0.49304625;
+	-6.27187365 -0.00093849 0.00057532 7.27093516 0.99713187 0.99848619 0.49304638;
+	-6.27187453 -0.00093821 0.00057514 7.27093633 0.99713274 0.99848665 0.49304650;
+	-6.27187541 -0.00093792 0.00057497 7.27093749 0.99713361 0.99848711 0.49304662;
+	-6.27187630 -0.00093764 0.00057479 7.27093866 0.99713448 0.99848757 0.49304675;
+	-6.27187718 -0.00093735 0.00057462 7.27093983 0.99713535 0.99848803 0.49304680;
+	-6.27187806 -0.00093707 0.00057444 7.27094099 0.99713622 0.99848849 0.49304696;
+	-6.27187894 -0.00093679 0.00057427 7.27094215 0.99713708 0.99848894 0.49304701;
+	-6.27187981 -0.00093650 0.00057410 7.27094331 0.99713795 0.99848940 0.49304717;
+	-6.27188069 -0.00093622 0.00057392 7.27094447 0.99713882 0.99848986 0.49304726;
+	-6.27188156 -0.00093594 0.00057375 7.27094563 0.99713968 0.99849031 0.49304734;
+	-6.27188244 -0.00093565 0.00057358 7.27094678 0.99714055 0.99849077 0.49304749;
+	-6.27188331 -0.00093537 0.00057340 7.27094794 0.99714141 0.99849123 0.49304756;
+	-6.27188418 -0.00093509 0.00057323 7.27094909 0.99714228 0.99849168 0.49304769;
+	-6.27188505 -0.00093481 0.00057306 7.27095025 0.99714314 0.99849214 0.49304781;
+	-6.27188592 -0.00093452 0.00057288 7.27095140 0.99714400 0.99849259 0.49304789;
+	-6.27188679 -0.00093424 0.00057271 7.27095255 0.99714486 0.99849305 0.49304797;
+	-6.27188765 -0.00093396 0.00057254 7.27095369 0.99714573 0.99849350 0.49304811;
+	-6.27188852 -0.00093368 0.00057236 7.27095484 0.99714659 0.99849396 0.49304819;
+	-6.27188938 -0.00093340 0.00057219 7.27095599 0.99714745 0.99849441 0.49304832;
+	-6.27189025 -0.00093312 0.00057202 7.27095713 0.99714831 0.99849487 0.49304841;
+	-6.27189111 -0.00093283 0.00057185 7.27095827 0.99714917 0.99849532 0.49304852;
+	-6.27189197 -0.00093255 0.00057167 7.27095942 0.99715003 0.99849577 0.49304861;
+	-6.27189283 -0.00093227 0.00057150 7.27096056 0.99715089 0.99849623 0.49304875;
+	-6.27189369 -0.00093199 0.00057133 7.27096169 0.99715175 0.99849668 0.49304884;
+	-6.27189454 -0.00093171 0.00057116 7.27096283 0.99715260 0.99849713 0.49304894;
+	-6.27189540 -0.00093143 0.00057098 7.27096397 0.99715346 0.99849758 0.49304909;
+	-6.27189625 -0.00093115 0.00057081 7.27096510 0.99715432 0.99849804 0.49304918;
+	-6.27189711 -0.00093087 0.00057064 7.27096624 0.99715517 0.99849849 0.49304926;
+	-6.27189796 -0.00093059 0.00057047 7.27096737 0.99715603 0.99849894 0.49304941;
+	-6.27189881 -0.00093031 0.00057030 7.27096850 0.99715689 0.99849939 0.49304950;
+	-6.27189966 -0.00093003 0.00057013 7.27096963 0.99715774 0.99849984 0.49304958;
+	-6.27190051 -0.00092975 0.00056995 7.27097076 0.99715860 0.99850029 0.49304964;
+	-6.27190136 -0.00092947 0.00056978 7.27097188 0.99715945 0.99850074 0.49304982;
+	-6.27190220 -0.00092919 0.00056961 7.27097301 0.99716030 0.99850119 0.49304989;
+	-6.27190305 -0.00092892 0.00056944 7.27097413 0.99716115 0.99850164 0.49305004;
+	-6.27190389 -0.00092864 0.00056927 7.27097525 0.99716201 0.99850209 0.49305011;
+	-6.27190474 -0.00092836 0.00056910 7.27097638 0.99716286 0.99850254 0.49305025;
+	-6.27190558 -0.00092808 0.00056893 7.27097750 0.99716371 0.99850299 0.49305033;
+	-6.27190642 -0.00092780 0.00056876 7.27097862 0.99716456 0.99850344 0.49305045;
+	-6.27190726 -0.00092752 0.00056859 7.27097973 0.99716541 0.99850389 0.49305056;
+	-6.27190810 -0.00092725 0.00056842 7.27098085 0.99716626 0.99850434 0.49305065;
+	-6.27190893 -0.00092697 0.00056825 7.27098197 0.99716711 0.99850478 0.49305076;
+	-6.27190977 -0.00092669 0.00056808 7.27098308 0.99716796 0.99850523 0.49305085;
+	-6.27191061 -0.00092641 0.00056791 7.27098419 0.99716881 0.99850568 0.49305094;
+	-6.27191144 -0.00092614 0.00056774 7.27098530 0.99716965 0.99850613 0.49305108;
+	-6.27191227 -0.00092586 0.00056757 7.27098641 0.99717050 0.99850657 0.49305115;
+	-6.27191311 -0.00092558 0.00056740 7.27098752 0.99717135 0.99850702 0.49305125;
+	-6.27191394 -0.00092531 0.00056723 7.27098863 0.99717219 0.99850747 0.49305139;
+	-6.27191477 -0.00092503 0.00056706 7.27098974 0.99717304 0.99850791 0.49305148;
+	-6.27191559 -0.00092475 0.00056689 7.27099084 0.99717389 0.99850836 0.49305158;
+	-6.27191642 -0.00092448 0.00056672 7.27099194 0.99717473 0.99850880 0.49305167;
+	-6.27191725 -0.00092420 0.00056655 7.27099305 0.99717557 0.99850925 0.49305181;
+	-6.27191807 -0.00092393 0.00056638 7.27099415 0.99717642 0.99850969 0.49305190;
+	-6.27191890 -0.00092365 0.00056621 7.27099525 0.99717726 0.99851014 0.49305201;
+	-6.27191972 -0.00092338 0.00056604 7.27099635 0.99717810 0.99851058 0.49305208;
+	-6.27192054 -0.00092310 0.00056587 7.27099744 0.99717895 0.99851103 0.49305223;
+	-6.27192136 -0.00092282 0.00056570 7.27099854 0.99717979 0.99851147 0.49305232;
+	-6.27192218 -0.00092255 0.00056553 7.27099964 0.99718063 0.99851192 0.49305243;
+	-6.27192300 -0.00092227 0.00056537 7.27100073 0.99718147 0.99851236 0.49305250;
+	-6.27192382 -0.00092200 0.00056520 7.27100182 0.99718231 0.99851280 0.49305258;
+	-6.27192464 -0.00092173 0.00056503 7.27100291 0.99718315 0.99851325 0.49305275;
+	-6.27192545 -0.00092145 0.00056486 7.27100400 0.99718399 0.99851369 0.49305278;
+	-6.27192627 -0.00092118 0.00056469 7.27100509 0.99718483 0.99851413 0.49305295;
+	-6.27192708 -0.00092090 0.00056452 7.27100618 0.99718566 0.99851457 0.49305299;
+	-6.27192790 -0.00092063 0.00056436 7.27100727 0.99718650 0.99851502 0.49305314;
+	-6.27192871 -0.00092036 0.00056419 7.27100835 0.99718734 0.99851546 0.49305323;
+	-6.27192952 -0.00092008 0.00056402 7.27100944 0.99718818 0.99851590 0.49305333;
+	-6.27193033 -0.00091981 0.00056385 7.27101052 0.99718901 0.99851634 0.49305345;
+	-6.27193114 -0.00091954 0.00056368 7.27101160 0.99718985 0.99851678 0.49305349;
+	-6.27193194 -0.00091926 0.00056352 7.27101268 0.99719068 0.99851722 0.49305365;
+	-6.27193275 -0.00091899 0.00056335 7.27101376 0.99719152 0.99851766 0.49305371;
+	-6.27193356 -0.00091872 0.00056318 7.27101484 0.99719235 0.99851810 0.49305382;
+	-6.27193436 -0.00091844 0.00056301 7.27101592 0.99719318 0.99851854 0.49305392;
+	-6.27193516 -0.00091817 0.00056285 7.27101699 0.99719402 0.99851898 0.49305400;
+	-6.27193597 -0.00091790 0.00056268 7.27101807 0.99719485 0.99851942 0.49305415;
+	-6.27193677 -0.00091763 0.00056251 7.27101914 0.99719568 0.99851986 0.49305427;
+	-6.27193757 -0.00091736 0.00056235 7.27102021 0.99719651 0.99852030 0.49305437;
+	-6.27193837 -0.00091708 0.00056218 7.27102128 0.99719735 0.99852074 0.49305443;
+	-6.27193917 -0.00091681 0.00056201 7.27102235 0.99719818 0.99852117 0.49305458;
+	-6.27193996 -0.00091654 0.00056185 7.27102342 0.99719901 0.99852161 0.49305464;
+	-6.27194076 -0.00091627 0.00056168 7.27102449 0.99719984 0.99852205 0.49305472;
+	-6.27194155 -0.00091600 0.00056151 7.27102556 0.99720066 0.99852249 0.49305485;
+	-6.27194235 -0.00091573 0.00056135 7.27102662 0.99720149 0.99852292 0.49305488;
+	-6.27194314 -0.00091546 0.00056118 7.27102769 0.99720232 0.99852336 0.49305501;
+	-6.27194394 -0.00091519 0.00056102 7.27102875 0.99720315 0.99852380 0.49305520;
+	-6.27194473 -0.00091492 0.00056085 7.27102981 0.99720398 0.99852423 0.49305527;
+	-6.27194552 -0.00091465 0.00056068 7.27103087 0.99720480 0.99852467 0.49305537;
+	-6.27194631 -0.00091438 0.00056052 7.27103193 0.99720563 0.99852511 0.49305541;
+	-6.27194710 -0.00091411 0.00056035 7.27103299 0.99720646 0.99852554 0.49305558;
+	-6.27194788 -0.00091384 0.00056019 7.27103405 0.99720728 0.99852598 0.49305568;
+	-6.27194867 -0.00091357 0.00056002 7.27103510 0.99720811 0.99852641 0.49305582;
+	-6.27194946 -0.00091330 0.00055986 7.27103616 0.99720893 0.99852685 0.49305585;
+	-6.27195024 -0.00091303 0.00055969 7.27103721 0.99720975 0.99852728 0.49305599;
+	-6.27195102 -0.00091276 0.00055953 7.27103827 0.99721058 0.99852772 0.49305606;
+	-6.27195181 -0.00091249 0.00055936 7.27103932 0.99721140 0.99852815 0.49305614;
+	-6.27195259 -0.00091222 0.00055920 7.27104037 0.99721222 0.99852858 0.49305629;
+	-6.27195337 -0.00091195 0.00055903 7.27104142 0.99721304 0.99852902 0.49305636;
+	-6.27195415 -0.00091168 0.00055887 7.27104247 0.99721387 0.99852945 0.49305643;
+	-6.27195493 -0.00091141 0.00055870 7.27104351 0.99721469 0.99852988 0.49305655;
+	-6.27195571 -0.00091115 0.00055854 7.27104456 0.99721551 0.99853032 0.49305663;
+	-6.27195648 -0.00091088 0.00055837 7.27104561 0.99721633 0.99853075 0.49305679;
+	-6.27195726 -0.00091061 0.00055821 7.27104665 0.99721715 0.99853118 0.49305682;
+	-6.27195803 -0.00091034 0.00055804 7.27104769 0.99721796 0.99853161 0.49305696;
+	-6.27195881 -0.00091007 0.00055788 7.27104873 0.99721878 0.99853205 0.49305711;
+	-6.27195958 -0.00090981 0.00055771 7.27104978 0.99721960 0.99853248 0.49305719;
+	-6.27196035 -0.00090954 0.00055755 7.27105081 0.99722042 0.99853291 0.49305721;
+	-6.27196113 -0.00090927 0.00055739 7.27105185 0.99722124 0.99853334 0.49305736;
+	-6.27196190 -0.00090901 0.00055722 7.27105289 0.99722205 0.99853377 0.49305741;
+	-6.27196267 -0.00090874 0.00055706 7.27105393 0.99722287 0.99853420 0.49305756;
+	-6.27196344 -0.00090847 0.00055690 7.27105496 0.99722368 0.99853463 0.49305766;
+	-6.27196420 -0.00090821 0.00055673 7.27105600 0.99722450 0.99853506 0.49305779;
+	-6.27196497 -0.00090794 0.00055657 7.27105703 0.99722531 0.99853549 0.49305788;
+	-6.27196574 -0.00090767 0.00055641 7.27105806 0.99722613 0.99853592 0.49305797;
+	-6.27196650 -0.00090741 0.00055624 7.27105909 0.99722694 0.99853635 0.49305806;
+	-6.27196726 -0.00090714 0.00055608 7.27106012 0.99722776 0.99853678 0.49305817;
+	-6.27196803 -0.00090688 0.00055592 7.27106115 0.99722857 0.99853721 0.49305825;
+	-6.27196879 -0.00090661 0.00055575 7.27106218 0.99722938 0.99853764 0.49305840;
+	-6.27196955 -0.00090634 0.00055559 7.27106321 0.99723019 0.99853807 0.49305847;
+	-6.27197031 -0.00090608 0.00055543 7.27106423 0.99723100 0.99853849 0.49305859;
+	-6.27197107 -0.00090581 0.00055526 7.27106526 0.99723181 0.99853892 0.49305865;
+	-6.27197183 -0.00090555 0.00055510 7.27106628 0.99723262 0.99853935 0.49305875;
+	-6.27197259 -0.00090528 0.00055494 7.27106730 0.99723343 0.99853978 0.49305889;
+	-6.27197335 -0.00090502 0.00055478 7.27106833 0.99723424 0.99854020 0.49305896;
+	-6.27197410 -0.00090476 0.00055461 7.27106935 0.99723505 0.99854063 0.49305906;
+	-6.27197486 -0.00090449 0.00055445 7.27107037 0.99723586 0.99854106 0.49305911;
+	-6.27197561 -0.00090423 0.00055429 7.27107138 0.99723667 0.99854148 0.49305929;
+	-6.27197637 -0.00090396 0.00055413 7.27107240 0.99723748 0.99854191 0.49305933;
+	-6.27197712 -0.00090370 0.00055397 7.27107342 0.99723828 0.99854233 0.49305943;
+	-6.27197787 -0.00090344 0.00055380 7.27107443 0.99723909 0.99854276 0.49305954;
+	-6.27197862 -0.00090317 0.00055364 7.27107545 0.99723990 0.99854319 0.49305965;
+	-6.27197937 -0.00090291 0.00055348 7.27107646 0.99724070 0.99854361 0.49305972;
+	-6.27198012 -0.00090264 0.00055332 7.27107748 0.99724151 0.99854404 0.49305986;
+	-6.27198087 -0.00090238 0.00055316 7.27107849 0.99724231 0.99854446 0.49305996;
+	-6.27198162 -0.00090212 0.00055300 7.27107950 0.99724312 0.99854488 0.49306003;
+	-6.27198236 -0.00090186 0.00055284 7.27108051 0.99724392 0.99854531 0.49306014;
+	-6.27198311 -0.00090159 0.00055267 7.27108151 0.99724472 0.99854573 0.49306027;
+	-6.27198385 -0.00090133 0.00055251 7.27108252 0.99724553 0.99854616 0.49306036;
+	-6.27198460 -0.00090107 0.00055235 7.27108353 0.99724633 0.99854658 0.49306043;
+	-6.27198534 -0.00090081 0.00055219 7.27108453 0.99724713 0.99854700 0.49306047;
+	-6.27198608 -0.00090054 0.00055203 7.27108554 0.99724793 0.99854742 0.49306066;
+	-6.27198682 -0.00090028 0.00055187 7.27108654 0.99724873 0.99854785 0.49306072;
+	-6.27198756 -0.00090002 0.00055171 7.27108754 0.99724953 0.99854827 0.49306079;
+	-6.27198830 -0.00089976 0.00055155 7.27108855 0.99725033 0.99854869 0.49306090;
+	-6.27198904 -0.00089950 0.00055139 7.27108955 0.99725113 0.99854911 0.49306100;
+	-6.27198978 -0.00089924 0.00055123 7.27109054 0.99725193 0.99854954 0.49306107;
+	-6.27199052 -0.00089898 0.00055107 7.27109154 0.99725273 0.99854996 0.49306122;
+	-6.27199126 -0.00089871 0.00055091 7.27109254 0.99725353 0.99855038 0.49306129;
+	-6.27199199 -0.00089845 0.00055075 7.27109354 0.99725433 0.99855080 0.49306135;
+	-6.27199273 -0.00089819 0.00055059 7.27109453 0.99725512 0.99855122 0.49306146;
+	-6.27199346 -0.00089793 0.00055043 7.27109553 0.99725592 0.99855164 0.49306163;
+	-6.27199419 -0.00089767 0.00055027 7.27109652 0.99725672 0.99855206 0.49306163;
+	-6.27199493 -0.00089741 0.00055011 7.27109751 0.99725751 0.99855248 0.49306178;
+	-6.27199566 -0.00089715 0.00054995 7.27109851 0.99725831 0.99855290 0.49306188;
+	-6.27199639 -0.00089689 0.00054979 7.27109950 0.99725910 0.99855332 0.49306196;
+	-6.27199712 -0.00089663 0.00054963 7.27110049 0.99725990 0.99855374 0.49306206;
+	-6.27199785 -0.00089637 0.00054947 7.27110147 0.99726069 0.99855416 0.49306218;
+	-6.27199857 -0.00089611 0.00054931 7.27110246 0.99726149 0.99855458 0.49306227;
+	-6.27199930 -0.00089585 0.00054915 7.27110345 0.99726228 0.99855499 0.49306238;
+	-6.27200003 -0.00089559 0.00054899 7.27110443 0.99726307 0.99855541 0.49306244;
+	-6.27200076 -0.00089534 0.00054883 7.27110542 0.99726386 0.99855583 0.49306254;
+	-6.27200148 -0.00089508 0.00054868 7.27110640 0.99726465 0.99855625 0.49306260;
+	-6.27200220 -0.00089482 0.00054852 7.27110739 0.99726545 0.99855667 0.49306270;
+	-6.27200293 -0.00089456 0.00054836 7.27110837 0.99726624 0.99855708 0.49306284;
+	-6.27200365 -0.00089430 0.00054820 7.27110935 0.99726703 0.99855750 0.49306289;
+	-6.27200437 -0.00089404 0.00054804 7.27111033 0.99726782 0.99855792 0.49306299;
+	-6.27200509 -0.00089378 0.00054788 7.27111131 0.99726861 0.99855833 0.49306315;
+	-6.27200581 -0.00089353 0.00054772 7.27111229 0.99726940 0.99855875 0.49306325;
+	-6.27200653 -0.00089327 0.00054757 7.27111326 0.99727018 0.99855916 0.49306334;
+	-6.27200725 -0.00089301 0.00054741 7.27111424 0.99727097 0.99855958 0.49306342;
+	-6.27200797 -0.00089275 0.00054725 7.27111522 0.99727176 0.99856000 0.49306348;
+	-6.27200869 -0.00089250 0.00054709 7.27111619 0.99727255 0.99856041 0.49306360;
+	-6.27200940 -0.00089224 0.00054693 7.27111717 0.99727333 0.99856083 0.49306368;
+	-6.27201012 -0.00089198 0.00054678 7.27111814 0.99727412 0.99856124 0.49306382;
+	-6.27201083 -0.00089172 0.00054662 7.27111911 0.99727491 0.99856166 0.49306389;
+	-6.27201155 -0.00089147 0.00054646 7.27112008 0.99727569 0.99856207 0.49306395;
+	-6.27201226 -0.00089121 0.00054630 7.27112105 0.99727648 0.99856248 0.49306405;
+	-6.27201297 -0.00089095 0.00054615 7.27112202 0.99727726 0.99856290 0.49306415;
+	-6.27201369 -0.00089070 0.00054599 7.27112299 0.99727804 0.99856331 0.49306425;
+	-6.27201440 -0.00089044 0.00054583 7.27112395 0.99727883 0.99856373 0.49306438;
+	-6.27201511 -0.00089019 0.00054568 7.27112492 0.99727961 0.99856414 0.49306445;
+	-6.27201582 -0.00088993 0.00054552 7.27112589 0.99728039 0.99856455 0.49306454;
+	-6.27201653 -0.00088967 0.00054536 7.27112685 0.99728118 0.99856496 0.49306460;
+	-6.27201723 -0.00088942 0.00054520 7.27112782 0.99728196 0.99856538 0.49306473;
+	-6.27201794 -0.00088916 0.00054505 7.27112878 0.99728274 0.99856579 0.49306481;
+	-6.27201865 -0.00088891 0.00054489 7.27112974 0.99728352 0.99856620 0.49306490;
+	-6.27201935 -0.00088865 0.00054473 7.27113070 0.99728430 0.99856661 0.49306499;
+	-6.27202006 -0.00088840 0.00054458 7.27113166 0.99728508 0.99856702 0.49306507;
+	-6.27202076 -0.00088814 0.00054442 7.27113262 0.99728586 0.99856744 0.49306519;
+	-6.27202147 -0.00088789 0.00054427 7.27113358 0.99728664 0.99856785 0.49306522;
+	-6.27202217 -0.00088763 0.00054411 7.27113454 0.99728742 0.99856826 0.49306541;
+	-6.27202287 -0.00088738 0.00054395 7.27113549 0.99728820 0.99856867 0.49306548;
+	-6.27202357 -0.00088713 0.00054380 7.27113645 0.99728897 0.99856908 0.49306558;
+	-6.27202427 -0.00088687 0.00054364 7.27113740 0.99728975 0.99856949 0.49306563;
+	-6.27202497 -0.00088662 0.00054349 7.27113836 0.99729053 0.99856990 0.49306575;
+	-6.27202567 -0.00088636 0.00054333 7.27113931 0.99729130 0.99857031 0.49306582;
+	-6.27202637 -0.00088611 0.00054317 7.27114026 0.99729208 0.99857072 0.49306593;
+	-6.27202707 -0.00088586 0.00054302 7.27114121 0.99729285 0.99857113 0.49306602;
+	-6.27202777 -0.00088560 0.00054286 7.27114216 0.99729363 0.99857153 0.49306615;
+	-6.27202846 -0.00088535 0.00054271 7.27114311 0.99729440 0.99857194 0.49306620;
+	-6.27202916 -0.00088510 0.00054255 7.27114406 0.99729518 0.99857235 0.49306631;
+	-6.27202985 -0.00088484 0.00054240 7.27114501 0.99729595 0.99857276 0.49306638;
+	-6.27203055 -0.00088459 0.00054224 7.27114596 0.99729673 0.99857317 0.49306650;
+	-6.27203124 -0.00088434 0.00054209 7.27114690 0.99729750 0.99857358 0.49306661;
+	-6.27203193 -0.00088409 0.00054193 7.27114785 0.99729827 0.99857398 0.49306664;
+	-6.27203262 -0.00088383 0.00054178 7.27114879 0.99729904 0.99857439 0.49306674;
+	-6.27203332 -0.00088358 0.00054162 7.27114973 0.99729981 0.99857480 0.49306687;
+	-6.27203401 -0.00088333 0.00054147 7.27115068 0.99730059 0.99857520 0.49306699;
+	-6.27203470 -0.00088308 0.00054131 7.27115162 0.99730136 0.99857561 0.49306701;
+	-6.27203539 -0.00088282 0.00054116 7.27115256 0.99730213 0.99857602 0.49306713;
+	-6.27203607 -0.00088257 0.00054100 7.27115350 0.99730290 0.99857642 0.49306721;
+	-6.27203676 -0.00088232 0.00054085 7.27115444 0.99730366 0.99857683 0.49306728;
+	-6.27203745 -0.00088207 0.00054069 7.27115538 0.99730443 0.99857724 0.49306742;
+	-6.27203813 -0.00088182 0.00054054 7.27115632 0.99730520 0.99857764 0.49306753;
+	-6.27203882 -0.00088157 0.00054039 7.27115725 0.99730597 0.99857805 0.49306761;
+	-6.27203950 -0.00088132 0.00054023 7.27115819 0.99730674 0.99857845 0.49306769;
+	-6.27204019 -0.00088107 0.00054008 7.27115912 0.99730750 0.99857886 0.49306776;
+	-6.27204087 -0.00088082 0.00053992 7.27116006 0.99730827 0.99857926 0.49306785;
+	-6.27204156 -0.00088056 0.00053977 7.27116099 0.99730904 0.99857966 0.49306801;
+	-6.27204224 -0.00088031 0.00053962 7.27116192 0.99730980 0.99858007 0.49306813;
+	-6.27204292 -0.00088006 0.00053946 7.27116286 0.99731057 0.99858047 0.49306816;
+	-6.27204360 -0.00087981 0.00053931 7.27116379 0.99731133 0.99858088 0.49306827;
+	-6.27204428 -0.00087956 0.00053916 7.27116472 0.99731210 0.99858128 0.49306833;
+	-6.27204496 -0.00087931 0.00053900 7.27116565 0.99731286 0.99858168 0.49306842;
+	-6.27204564 -0.00087906 0.00053885 7.27116657 0.99731363 0.99858209 0.49306852;
+	-6.27204632 -0.00087881 0.00053870 7.27116750 0.99731439 0.99858249 0.49306865;
+	-6.27204699 -0.00087857 0.00053854 7.27116843 0.99731515 0.99858289 0.49306872;
+	-6.27204767 -0.00087832 0.00053839 7.27116935 0.99731591 0.99858329 0.49306875;
+	-6.27204835 -0.00087807 0.00053824 7.27117028 0.99731668 0.99858369 0.49306889;
+	-6.27204902 -0.00087782 0.00053809 7.27117120 0.99731744 0.99858410 0.49306899;
+	-6.27204970 -0.00087757 0.00053793 7.27117213 0.99731820 0.99858450 0.49306909;
+	-6.27205037 -0.00087732 0.00053778 7.27117305 0.99731896 0.99858490 0.49306915;
+	-6.27205104 -0.00087707 0.00053763 7.27117397 0.99731972 0.99858530 0.49306931;
+	-6.27205172 -0.00087682 0.00053748 7.27117489 0.99732048 0.99858570 0.49306931;
+	-6.27205239 -0.00087658 0.00053732 7.27117581 0.99732124 0.99858610 0.49306947;
+	-6.27205306 -0.00087633 0.00053717 7.27117673 0.99732200 0.99858650 0.49306949;
+	-6.27205373 -0.00087608 0.00053702 7.27117765 0.99732276 0.99858690 0.49306961;
+	-6.27205440 -0.00087583 0.00053687 7.27117857 0.99732351 0.99858730 0.49306974;
+	-6.27205507 -0.00087558 0.00053671 7.27117949 0.99732427 0.99858770 0.49306982;
+	-6.27205574 -0.00087534 0.00053656 7.27118040 0.99732503 0.99858810 0.49306986;
+	-6.27205641 -0.00087509 0.00053641 7.27118132 0.99732579 0.99858850 0.49306997;
+	-6.27205707 -0.00087484 0.00053626 7.27118223 0.99732654 0.99858890 0.49307002;
+	-6.27205774 -0.00087459 0.00053611 7.27118315 0.99732730 0.99858930 0.49307020;
+	-6.27205841 -0.00087435 0.00053596 7.27118406 0.99732805 0.99858970 0.49307021;
+	-6.27205907 -0.00087410 0.00053580 7.27118497 0.99732881 0.99859010 0.49307035;
+	-6.27205974 -0.00087385 0.00053565 7.27118588 0.99732956 0.99859049 0.49307047;
+	-6.27206040 -0.00087361 0.00053550 7.27118679 0.99733032 0.99859089 0.49307051;
+	-6.27206106 -0.00087336 0.00053535 7.27118770 0.99733107 0.99859129 0.49307062;
+	-6.27206173 -0.00087311 0.00053520 7.27118861 0.99733182 0.99859169 0.49307069;
+	-6.27206239 -0.00087287 0.00053505 7.27118952 0.99733258 0.99859208 0.49307080;
+	-6.27206305 -0.00087262 0.00053490 7.27119043 0.99733333 0.99859248 0.49307089;
+	-6.27206371 -0.00087238 0.00053475 7.27119134 0.99733408 0.99859288 0.49307096;
+	-6.27206437 -0.00087213 0.00053460 7.27119224 0.99733483 0.99859327 0.49307103;
+	-6.27206503 -0.00087188 0.00053445 7.27119315 0.99733558 0.99859367 0.49307121;
+	-6.27206569 -0.00087164 0.00053429 7.27119405 0.99733633 0.99859407 0.49307121;
+	-6.27206635 -0.00087139 0.00053414 7.27119496 0.99733709 0.99859446 0.49307131;
+	-6.27206701 -0.00087115 0.00053399 7.27119586 0.99733783 0.99859486 0.49307143;
+	-6.27206767 -0.00087090 0.00053384 7.27119676 0.99733858 0.99859525 0.49307152;
+	-6.27206832 -0.00087066 0.00053369 7.27119766 0.99733933 0.99859565 0.49307163;
+	-6.27206898 -0.00087041 0.00053354 7.27119856 0.99734008 0.99859604 0.49307170;
+	-6.27206963 -0.00087017 0.00053339 7.27119946 0.99734083 0.99859644 0.49307178;
+	-6.27207029 -0.00086992 0.00053324 7.27120036 0.99734158 0.99859683 0.49307182;
+	-6.27207094 -0.00086968 0.00053309 7.27120126 0.99734233 0.99859723 0.49307196;
+	-6.27207160 -0.00086944 0.00053294 7.27120216 0.99734307 0.99859762 0.49307197;
+	-6.27207225 -0.00086919 0.00053279 7.27120306 0.99734382 0.99859802 0.49307220;
+	-6.27207290 -0.00086895 0.00053264 7.27120395 0.99734457 0.99859841 0.49307226;
+	-6.27207355 -0.00086870 0.00053249 7.27120485 0.99734531 0.99859880 0.49307233;
+	-6.27207420 -0.00086846 0.00053234 7.27120574 0.99734606 0.99859920 0.49307241;
+	-6.27207485 -0.00086822 0.00053219 7.27120664 0.99734680 0.99859959 0.49307252;
+	-6.27207550 -0.00086797 0.00053205 7.27120753 0.99734755 0.99859998 0.49307258;
+	-6.27207615 -0.00086773 0.00053190 7.27120842 0.99734829 0.99860037 0.49307271;
+	-6.27207680 -0.00086749 0.00053175 7.27120931 0.99734903 0.99860077 0.49307274;
+	-6.27207745 -0.00086724 0.00053160 7.27121021 0.99734978 0.99860116 0.49307287;
+	-6.27207810 -0.00086700 0.00053145 7.27121110 0.99735052 0.99860155 0.49307293;
+	-6.27207874 -0.00086676 0.00053130 7.27121199 0.99735126 0.99860194 0.49307303;
+	-6.27207939 -0.00086652 0.00053115 7.27121287 0.99735200 0.99860233 0.49307313;
+	-6.27208004 -0.00086627 0.00053100 7.27121376 0.99735275 0.99860273 0.49307325;
+	-6.27208068 -0.00086603 0.00053085 7.27121465 0.99735349 0.99860312 0.49307329;
+	-6.27208132 -0.00086579 0.00053070 7.27121554 0.99735423 0.99860351 0.49307333;
+	-6.27208197 -0.00086555 0.00053056 7.27121642 0.99735497 0.99860390 0.49307349;
+	-6.27208261 -0.00086530 0.00053041 7.27121731 0.99735571 0.99860429 0.49307355;
+	-6.27208325 -0.00086506 0.00053026 7.27121819 0.99735645 0.99860468 0.49307366;
+	-6.27208390 -0.00086482 0.00053011 7.27121907 0.99735719 0.99860507 0.49307376;
+	-6.27208454 -0.00086458 0.00052996 7.27121996 0.99735792 0.99860546 0.49307384;
+	-6.27208518 -0.00086434 0.00052981 7.27122084 0.99735866 0.99860585 0.49307389;
+	-6.27208582 -0.00086410 0.00052967 7.27122172 0.99735940 0.99860624 0.49307398;
+	-6.27208646 -0.00086386 0.00052952 7.27122260 0.99736014 0.99860663 0.49307410;
+	-6.27208710 -0.00086361 0.00052937 7.27122348 0.99736088 0.99860701 0.49307418;
+	-6.27208774 -0.00086337 0.00052922 7.27122436 0.99736161 0.99860740 0.49307431;
+	-6.27208837 -0.00086313 0.00052908 7.27122524 0.99736235 0.99860779 0.49307430;
+	-6.27208901 -0.00086289 0.00052893 7.27122612 0.99736308 0.99860818 0.49307450;
+	-6.27208965 -0.00086265 0.00052878 7.27122700 0.99736382 0.99860857 0.49307452;
+	-6.27209028 -0.00086241 0.00052863 7.27122787 0.99736455 0.99860896 0.49307461;
+	-6.27209092 -0.00086217 0.00052849 7.27122875 0.99736529 0.99860934 0.49307473;
+	-6.27209155 -0.00086193 0.00052834 7.27122962 0.99736602 0.99860973 0.49307476;
+	-6.27209219 -0.00086169 0.00052819 7.27123050 0.99736676 0.99861012 0.49307493;
+	-6.27209282 -0.00086145 0.00052804 7.27123137 0.99736749 0.99861050 0.49307491;
+	-6.27209346 -0.00086121 0.00052790 7.27123224 0.99736822 0.99861089 0.49307506;
+	-6.27209409 -0.00086097 0.00052775 7.27123312 0.99736896 0.99861128 0.49307515;
+	-6.27209472 -0.00086073 0.00052760 7.27123399 0.99736969 0.99861166 0.49307527;
+	-6.27209535 -0.00086049 0.00052746 7.27123486 0.99737042 0.99861205 0.49307528;
+	-6.27209598 -0.00086025 0.00052731 7.27123573 0.99737115 0.99861244 0.49307544;
+	-6.27209661 -0.00086002 0.00052716 7.27123660 0.99737188 0.99861282 0.49307551;
+	-6.27209724 -0.00085978 0.00052702 7.27123747 0.99737261 0.99861321 0.49307555;
+	-6.27209787 -0.00085954 0.00052687 7.27123833 0.99737334 0.99861359 0.49307566;
+	-6.27209850 -0.00085930 0.00052672 7.27123920 0.99737407 0.99861398 0.49307570;
+	-6.27209913 -0.00085906 0.00052658 7.27124007 0.99737480 0.99861436 0.49307581;
+	-6.27209976 -0.00085882 0.00052643 7.27124094 0.99737553 0.99861475 0.49307599;
+	-6.27210038 -0.00085858 0.00052628 7.27124180 0.99737626 0.99861513 0.49307598;
+	-6.27210101 -0.00085835 0.00052614 7.27124266 0.99737699 0.99861551 0.49307614;
+	-6.27210164 -0.00085811 0.00052599 7.27124353 0.99737771 0.99861590 0.49307614;
+	-6.27210226 -0.00085787 0.00052585 7.27124439 0.99737844 0.99861628 0.49307625;
+	-6.27210289 -0.00085763 0.00052570 7.27124525 0.99737917 0.99861667 0.49307637;
+	-6.27210351 -0.00085740 0.00052555 7.27124612 0.99737989 0.99861705 0.49307645;
+	-6.27210414 -0.00085716 0.00052541 7.27124698 0.99738062 0.99861743 0.49307653;
+	-6.27210476 -0.00085692 0.00052526 7.27124784 0.99738135 0.99861782 0.49307663;
+	-6.27210538 -0.00085668 0.00052512 7.27124870 0.99738207 0.99861820 0.49307669;
+	-6.27210600 -0.00085645 0.00052497 7.27124956 0.99738280 0.99861858 0.49307677;
+	-6.27210663 -0.00085621 0.00052483 7.27125042 0.99738352 0.99861896 0.49307688;
+	-6.27210725 -0.00085597 0.00052468 7.27125127 0.99738424 0.99861934 0.49307699;
+	-6.27210787 -0.00085574 0.00052454 7.27125213 0.99738497 0.99861973 0.49307706;
+	-6.27210849 -0.00085550 0.00052439 7.27125299 0.99738569 0.99862011 0.49307704;
+	-6.27210911 -0.00085526 0.00052425 7.27125384 0.99738641 0.99862049 0.49307723;
+	-6.27210973 -0.00085503 0.00052410 7.27125470 0.99738714 0.99862087 0.49307731;
+	-6.27211034 -0.00085479 0.00052396 7.27125555 0.99738786 0.99862125 0.49307742;
+	-6.27211096 -0.00085456 0.00052381 7.27125641 0.99738858 0.99862163 0.49307753;
+	-6.27211158 -0.00085432 0.00052367 7.27125726 0.99738930 0.99862201 0.49307753;
+	-6.27211220 -0.00085408 0.00052352 7.27125811 0.99739002 0.99862239 0.49307764;
+	-6.27211281 -0.00085385 0.00052338 7.27125896 0.99739074 0.99862277 0.49307770;
+	-6.27211343 -0.00085361 0.00052323 7.27125981 0.99739146 0.99862315 0.49307780;
+	-6.27211404 -0.00085338 0.00052309 7.27126067 0.99739218 0.99862353 0.49307792;
+	-6.27211466 -0.00085314 0.00052295 7.27126152 0.99739290 0.99862391 0.49307794;
+	-6.27211527 -0.00085291 0.00052280 7.27126236 0.99739362 0.99862429 0.49307803;
+	-6.27211589 -0.00085267 0.00052266 7.27126321 0.99739434 0.99862467 0.49307820;
+	-6.27211650 -0.00085244 0.00052251 7.27126406 0.99739506 0.99862505 0.49307827;
+	-6.27211711 -0.00085220 0.00052237 7.27126491 0.99739577 0.99862543 0.49307830;
+	-6.27211772 -0.00085197 0.00052222 7.27126575 0.99739649 0.99862581 0.49307839;
+	-6.27211833 -0.00085173 0.00052208 7.27126660 0.99739721 0.99862618 0.49307851;
+	-6.27211895 -0.00085150 0.00052194 7.27126745 0.99739792 0.99862656 0.49307861;
+	-6.27211956 -0.00085127 0.00052179 7.27126829 0.99739864 0.99862694 0.49307868;
+	-6.27212017 -0.00085103 0.00052165 7.27126913 0.99739936 0.99862732 0.49307878;
+	-6.27212078 -0.00085080 0.00052151 7.27126998 0.99740007 0.99862770 0.49307884;
+	-6.27212138 -0.00085056 0.00052136 7.27127082 0.99740079 0.99862807 0.49307888;
+	-6.27212199 -0.00085033 0.00052122 7.27127166 0.99740150 0.99862845 0.49307902;
+	-6.27212260 -0.00085010 0.00052108 7.27127250 0.99740221 0.99862883 0.49307911;
+	-6.27212321 -0.00084986 0.00052093 7.27127334 0.99740293 0.99862920 0.49307920;
+	-6.27212381 -0.00084963 0.00052079 7.27127418 0.99740364 0.99862958 0.49307926;
+	-6.27212442 -0.00084940 0.00052065 7.27127502 0.99740435 0.99862996 0.49307935;
+	-6.27212503 -0.00084916 0.00052050 7.27127586 0.99740507 0.99863033 0.49307944;
+	-6.27212563 -0.00084893 0.00052036 7.27127670 0.99740578 0.99863071 0.49307944;
+	-6.27212624 -0.00084870 0.00052022 7.27127754 0.99740649 0.99863108 0.49307954;
+	-6.27212684 -0.00084847 0.00052008 7.27127837 0.99740720 0.99863146 0.49307961;
+	-6.27212744 -0.00084823 0.00051993 7.27127921 0.99740791 0.99863183 0.49307978;
+	-6.27212805 -0.00084800 0.00051979 7.27128005 0.99740862 0.99863221 0.49307983;
+	-6.27212865 -0.00084777 0.00051965 7.27128088 0.99740933 0.99863258 0.49307996;
+	-6.27212925 -0.00084754 0.00051951 7.27128172 0.99741004 0.99863296 0.49308005;
+	-6.27212986 -0.00084730 0.00051936 7.27128255 0.99741075 0.99863333 0.49308014;
+	-6.27213046 -0.00084707 0.00051922 7.27128338 0.99741146 0.99863371 0.49308018;
+	-6.27213106 -0.00084684 0.00051908 7.27128422 0.99741217 0.99863408 0.49308030;
+	-6.27213166 -0.00084661 0.00051894 7.27128505 0.99741288 0.99863445 0.49308040;
+	-6.27213226 -0.00084638 0.00051879 7.27128588 0.99741359 0.99863483 0.49308040;
+	-6.27213286 -0.00084615 0.00051865 7.27128671 0.99741429 0.99863520 0.49308050;
+	-6.27213345 -0.00084592 0.00051851 7.27128754 0.99741500 0.99863557 0.49308061;
+	-6.27213405 -0.00084568 0.00051837 7.27128837 0.99741571 0.99863595 0.49308064;
+	-6.27213465 -0.00084545 0.00051823 7.27128920 0.99741641 0.99863632 0.49308083;
+	-6.27213525 -0.00084522 0.00051809 7.27129003 0.99741712 0.99863669 0.49308089;
+	-6.27213585 -0.00084499 0.00051794 7.27129085 0.99741783 0.99863706 0.49308103;
+	-6.27213644 -0.00084476 0.00051780 7.27129168 0.99741853 0.99863744 0.49308104;
+	-6.27213704 -0.00084453 0.00051766 7.27129251 0.99741924 0.99863781 0.49308114;
+	-6.27213763 -0.00084430 0.00051752 7.27129333 0.99741994 0.99863818 0.49308122;
+	-6.27213823 -0.00084407 0.00051738 7.27129416 0.99742064 0.99863855 0.49308125;
+	-6.27213882 -0.00084384 0.00051724 7.27129498 0.99742135 0.99863892 0.49308128;
+	-6.27213942 -0.00084361 0.00051710 7.27129581 0.99742205 0.99863929 0.49308149;
+	-6.27214001 -0.00084338 0.00051696 7.27129663 0.99742275 0.99863966 0.49308153;
+	-6.27214060 -0.00084315 0.00051681 7.27129745 0.99742346 0.99864003 0.49308160;
+	-6.27214120 -0.00084292 0.00051667 7.27129827 0.99742416 0.99864041 0.49308174;
+	-6.27214179 -0.00084269 0.00051653 7.27129910 0.99742486 0.99864078 0.49308171;
+	-6.27214238 -0.00084246 0.00051639 7.27129992 0.99742556 0.99864115 0.49308189;
+	-6.27214297 -0.00084223 0.00051625 7.27130074 0.99742626 0.99864152 0.49308189;
+	-6.27214356 -0.00084200 0.00051611 7.27130156 0.99742696 0.99864188 0.49308208;
+	-6.27214415 -0.00084178 0.00051597 7.27130237 0.99742766 0.99864225 0.49308218;
+	-6.27214474 -0.00084155 0.00051583 7.27130319 0.99742836 0.99864262 0.49308217;
+	-6.27214533 -0.00084132 0.00051569 7.27130401 0.99742906 0.99864299 0.49308225;
+	-6.27214592 -0.00084109 0.00051555 7.27130483 0.99742976 0.99864336 0.49308239;
+	-6.27214651 -0.00084086 0.00051541 7.27130564 0.99743046 0.99864373 0.49308247;
+	-6.27214709 -0.00084063 0.00051527 7.27130646 0.99743116 0.99864410 0.49308255;
+	-6.27214768 -0.00084040 0.00051513 7.27130728 0.99743186 0.99864447 0.49308258;
+	-6.27214827 -0.00084018 0.00051499 7.27130809 0.99743255 0.99864483 0.49308266;
+	-6.27214885 -0.00083995 0.00051485 7.27130891 0.99743325 0.99864520 0.49308274;
+	-6.27214944 -0.00083972 0.00051471 7.27130972 0.99743395 0.99864557 0.49308290;
+	-6.27215002 -0.00083949 0.00051457 7.27131053 0.99743464 0.99864594 0.49308290;
+	-6.27215061 -0.00083926 0.00051443 7.27131134 0.99743534 0.99864631 0.49308300;
+	-6.27215119 -0.00083904 0.00051429 7.27131216 0.99743604 0.99864667 0.49308315;
+	-6.27215178 -0.00083881 0.00051415 7.27131297 0.99743673 0.99864704 0.49308314;
+	-6.27215236 -0.00083858 0.00051401 7.27131378 0.99743743 0.99864741 0.49308324;
+	-6.27215294 -0.00083836 0.00051387 7.27131459 0.99743812 0.99864777 0.49308338;
+	-6.27215353 -0.00083813 0.00051373 7.27131540 0.99743881 0.99864814 0.49308338;
+	-6.27215411 -0.00083790 0.00051359 7.27131621 0.99743951 0.99864850 0.49308350;
+	-6.27215469 -0.00083768 0.00051345 7.27131702 0.99744020 0.99864887 0.49308357;
+	-6.27215527 -0.00083745 0.00051332 7.27131782 0.99744089 0.99864924 0.49308374;
+	-6.27215585 -0.00083722 0.00051318 7.27131863 0.99744159 0.99864960 0.49308379;
+	-6.27215643 -0.00083700 0.00051304 7.27131944 0.99744228 0.99864997 0.49308384;
+	-6.27215701 -0.00083677 0.00051290 7.27132024 0.99744297 0.99865033 0.49308393;
+	-6.27215759 -0.00083654 0.00051276 7.27132105 0.99744366 0.99865070 0.49308399;
+	-6.27215817 -0.00083632 0.00051262 7.27132185 0.99744435 0.99865106 0.49308412;
+	-6.27215875 -0.00083609 0.00051248 7.27132266 0.99744504 0.99865143 0.49308421;
+	-6.27215933 -0.00083587 0.00051234 7.27132346 0.99744574 0.99865179 0.49308425;
+	-6.27215990 -0.00083564 0.00051221 7.27132426 0.99744643 0.99865215 0.49308434;
+	-6.27216048 -0.00083541 0.00051207 7.27132507 0.99744711 0.99865252 0.49308442;
+	-6.27216106 -0.00083519 0.00051193 7.27132587 0.99744780 0.99865288 0.49308450;
+	-6.27216164 -0.00083496 0.00051179 7.27132667 0.99744849 0.99865324 0.49308461;
+	-6.27216221 -0.00083474 0.00051165 7.27132747 0.99744918 0.99865361 0.49308467;
+	-6.27216279 -0.00083451 0.00051151 7.27132827 0.99744987 0.99865397 0.49308473;
+	-6.27216336 -0.00083429 0.00051138 7.27132907 0.99745056 0.99865433 0.49308483;
+	-6.27216394 -0.00083406 0.00051124 7.27132987 0.99745124 0.99865470 0.49308489;
+	-6.27216451 -0.00083384 0.00051110 7.27133067 0.99745193 0.99865506 0.49308501;
+	-6.27216508 -0.00083361 0.00051096 7.27133147 0.99745262 0.99865542 0.49308509;
+	-6.27216566 -0.00083339 0.00051083 7.27133227 0.99745330 0.99865578 0.49308519;
+	-6.27216623 -0.00083317 0.00051069 7.27133306 0.99745399 0.99865615 0.49308520;
+	-6.27216680 -0.00083294 0.00051055 7.27133386 0.99745468 0.99865651 0.49308532;
+	-6.27216737 -0.00083272 0.00051041 7.27133465 0.99745536 0.99865687 0.49308537;
+	-6.27216794 -0.00083249 0.00051028 7.27133545 0.99745605 0.99865723 0.49308548;
+	-6.27216851 -0.00083227 0.00051014 7.27133624 0.99745673 0.99865759 0.49308555;
+	-6.27216909 -0.00083205 0.00051000 7.27133704 0.99745741 0.99865795 0.49308568;
+	-6.27216966 -0.00083182 0.00050986 7.27133783 0.99745810 0.99865831 0.49308575;
+	-6.27217022 -0.00083160 0.00050973 7.27133863 0.99745878 0.99865867 0.49308580;
+	-6.27217079 -0.00083138 0.00050959 7.27133942 0.99745946 0.99865903 0.49308589;
+	-6.27217136 -0.00083115 0.00050945 7.27134021 0.99746015 0.99865939 0.49308593;
+	-6.27217193 -0.00083093 0.00050932 7.27134100 0.99746083 0.99865975 0.49308603;
+	-6.27217250 -0.00083071 0.00050918 7.27134179 0.99746151 0.99866011 0.49308603;
+	-6.27217307 -0.00083048 0.00050904 7.27134258 0.99746219 0.99866047 0.49308626;
+	-6.27217363 -0.00083026 0.00050891 7.27134337 0.99746287 0.99866083 0.49308628;
+	-6.27217420 -0.00083004 0.00050877 7.27134416 0.99746355 0.99866119 0.49308633;
+	-6.27217477 -0.00082982 0.00050863 7.27134495 0.99746424 0.99866155 0.49308648;
+	-6.27217533 -0.00082959 0.00050850 7.27134574 0.99746492 0.99866191 0.49308650;
+	-6.27217590 -0.00082937 0.00050836 7.27134653 0.99746559 0.99866227 0.49308659;
+	-6.27217646 -0.00082915 0.00050822 7.27134731 0.99746627 0.99866263 0.49308664;
+	-6.27217703 -0.00082893 0.00050809 7.27134810 0.99746695 0.99866299 0.49308674;
+	-6.27217759 -0.00082871 0.00050795 7.27134888 0.99746763 0.99866334 0.49308688;
+	-6.27217815 -0.00082848 0.00050782 7.27134967 0.99746831 0.99866370 0.49308691;
+	-6.27217872 -0.00082826 0.00050768 7.27135045 0.99746899 0.99866406 0.49308700;
+	-6.27217928 -0.00082804 0.00050754 7.27135124 0.99746967 0.99866442 0.49308706;
+	-6.27217984 -0.00082782 0.00050741 7.27135202 0.99747034 0.99866477 0.49308711;
+	-6.27218040 -0.00082760 0.00050727 7.27135281 0.99747102 0.99866513 0.49308731;
+	-6.27218097 -0.00082738 0.00050714 7.27135359 0.99747170 0.99866549 0.49308733;
+	-6.27218153 -0.00082716 0.00050700 7.27135437 0.99747237 0.99866584 0.49308746;
+	-6.27218209 -0.00082693 0.00050686 7.27135515 0.99747305 0.99866620 0.49308753;
+	-6.27218265 -0.00082671 0.00050673 7.27135593 0.99747372 0.99866656 0.49308759;
+	-6.27218321 -0.00082649 0.00050659 7.27135671 0.99747440 0.99866691 0.49308757;
+	-6.27218377 -0.00082627 0.00050646 7.27135749 0.99747507 0.99866727 0.49308770;
+	-6.27218433 -0.00082605 0.00050632 7.27135827 0.99747575 0.99866763 0.49308772;
+	-6.27218488 -0.00082583 0.00050619 7.27135905 0.99747642 0.99866798 0.49308784;
+	-6.27218544 -0.00082561 0.00050605 7.27135983 0.99747709 0.99866834 0.49308794;
+	-6.27218600 -0.00082539 0.00050592 7.27136061 0.99747777 0.99866869 0.49308810;
+	-6.27218656 -0.00082517 0.00050578 7.27136139 0.99747844 0.99866905 0.49308812;
+	-6.27218711 -0.00082495 0.00050565 7.27136216 0.99747911 0.99866940 0.49308821;
+	-6.27218767 -0.00082473 0.00050551 7.27136294 0.99747978 0.99866976 0.49308825;
+	-6.27218823 -0.00082451 0.00050538 7.27136371 0.99748046 0.99867011 0.49308833;
+	-6.27218878 -0.00082429 0.00050524 7.27136449 0.99748113 0.99867046 0.49308847;
+	-6.27218934 -0.00082407 0.00050511 7.27136526 0.99748180 0.99867082 0.49308860;
+	-6.27218989 -0.00082385 0.00050497 7.27136604 0.99748247 0.99867117 0.49308859;
+	-6.27219045 -0.00082363 0.00050484 7.27136681 0.99748314 0.99867153 0.49308869;
+	-6.27219100 -0.00082341 0.00050471 7.27136759 0.99748381 0.99867188 0.49308873;
+	-6.27219155 -0.00082320 0.00050457 7.27136836 0.99748448 0.99867223 0.49308878;
+	-6.27219211 -0.00082298 0.00050444 7.27136913 0.99748515 0.99867259 0.49308888;
+	-6.27219266 -0.00082276 0.00050430 7.27136990 0.99748582 0.99867294 0.49308897;
+	-6.27219321 -0.00082254 0.00050417 7.27137067 0.99748649 0.99867329 0.49308901;
+	-6.27219376 -0.00082232 0.00050403 7.27137144 0.99748715 0.99867364 0.49308913;
+	-6.27219432 -0.00082210 0.00050390 7.27137221 0.99748782 0.99867400 0.49308916;
+	-6.27219487 -0.00082188 0.00050377 7.27137298 0.99748849 0.99867435 0.49308935;
+	-6.27219542 -0.00082167 0.00050363 7.27137375 0.99748916 0.99867470 0.49308938;
+	-6.27219597 -0.00082145 0.00050350 7.27137452 0.99748982 0.99867505 0.49308944;
+	-6.27219652 -0.00082123 0.00050337 7.27137529 0.99749049 0.99867540 0.49308959;
+	-6.27219707 -0.00082101 0.00050323 7.27137606 0.99749116 0.99867576 0.49308961;
+	-6.27219762 -0.00082080 0.00050310 7.27137682 0.99749182 0.99867611 0.49308966;
+	-6.27219817 -0.00082058 0.00050296 7.27137759 0.99749249 0.99867646 0.49308979;
+	-6.27219872 -0.00082036 0.00050283 7.27137836 0.99749315 0.99867681 0.49308985;
+	-6.27219926 -0.00082014 0.00050270 7.27137912 0.99749382 0.99867716 0.49308989;
+	-6.27219981 -0.00081993 0.00050256 7.27137989 0.99749448 0.99867751 0.49309002;
+	-6.27220036 -0.00081971 0.00050243 7.27138065 0.99749514 0.99867786 0.49309006;
+	-6.27220091 -0.00081949 0.00050230 7.27138141 0.99749581 0.99867821 0.49309016;
+	-6.27220145 -0.00081927 0.00050216 7.27138218 0.99749647 0.99867856 0.49309022;
+	-6.27220200 -0.00081906 0.00050203 7.27138294 0.99749713 0.99867891 0.49309028;
+	-6.27220254 -0.00081884 0.00050190 7.27138370 0.99749780 0.99867926 0.49309037;
+	-6.27220309 -0.00081862 0.00050177 7.27138446 0.99749846 0.99867961 0.49309053;
+	-6.27220363 -0.00081841 0.00050163 7.27138523 0.99749912 0.99867996 0.49309055;
+	-6.27220418 -0.00081819 0.00050150 7.27138599 0.99749978 0.99868031 0.49309069;
+	-6.27220472 -0.00081798 0.00050137 7.27138675 0.99750044 0.99868066 0.49309070;
+	-6.27220527 -0.00081776 0.00050124 7.27138751 0.99750110 0.99868100 0.49309083;
+	-6.27220581 -0.00081754 0.00050110 7.27138827 0.99750176 0.99868135 0.49309090;
+	-6.27220635 -0.00081733 0.00050097 7.27138902 0.99750242 0.99868170 0.49309098;
+	-6.27220690 -0.00081711 0.00050084 7.27138978 0.99750308 0.99868205 0.49309101;
+	-6.27220744 -0.00081690 0.00050071 7.27139054 0.99750374 0.99868240 0.49309113;
+	-6.27220798 -0.00081668 0.00050057 7.27139130 0.99750440 0.99868275 0.49309116;
+	-6.27220852 -0.00081647 0.00050044 7.27139205 0.99750506 0.99868309 0.49309123;
+	-6.27220906 -0.00081625 0.00050031 7.27139281 0.99750572 0.99868344 0.49309142;
+	-6.27220960 -0.00081604 0.00050018 7.27139357 0.99750638 0.99868379 0.49309142;
+	-6.27221014 -0.00081582 0.00050005 7.27139432 0.99750703 0.99868413 0.49309146;
+	-6.27221068 -0.00081561 0.00049991 7.27139508 0.99750769 0.99868448 0.49309158;
+	-6.27221122 -0.00081539 0.00049978 7.27139583 0.99750835 0.99868483 0.49309166;
+	-6.27221176 -0.00081518 0.00049965 7.27139659 0.99750901 0.99868517 0.49309171;
+	-6.27221230 -0.00081496 0.00049952 7.27139734 0.99750966 0.99868552 0.49309183;
+	-6.27221284 -0.00081475 0.00049939 7.27139809 0.99751032 0.99868587 0.49309186;
+	-6.27221338 -0.00081453 0.00049926 7.27139884 0.99751097 0.99868621 0.49309196;
+	-6.27221391 -0.00081432 0.00049912 7.27139960 0.99751163 0.99868656 0.49309197;
+	-6.27221445 -0.00081410 0.00049899 7.27140035 0.99751228 0.99868690 0.49309212;
+	-6.27221499 -0.00081389 0.00049886 7.27140110 0.99751294 0.99868725 0.49309226;
+	-6.27221552 -0.00081368 0.00049873 7.27140185 0.99751359 0.99868759 0.49309233;
+	-6.27221606 -0.00081346 0.00049860 7.27140260 0.99751425 0.99868794 0.49309240;
+	-6.27221660 -0.00081325 0.00049847 7.27140335 0.99751490 0.99868828 0.49309241;
+	-6.27221713 -0.00081303 0.00049834 7.27140410 0.99751555 0.99868863 0.49309250;
+	-6.27221767 -0.00081282 0.00049821 7.27140485 0.99751621 0.99868897 0.49309252;
+	-6.27221820 -0.00081261 0.00049807 7.27140559 0.99751686 0.99868932 0.49309262;
+	-6.27221874 -0.00081239 0.00049794 7.27140634 0.99751751 0.99868966 0.49309274;
+	-6.27221927 -0.00081218 0.00049781 7.27140709 0.99751816 0.99869001 0.49309277;
+	-6.27221980 -0.00081197 0.00049768 7.27140784 0.99751881 0.99869035 0.49309287;
+	-6.27222034 -0.00081176 0.00049755 7.27140858 0.99751946 0.99869069 0.49309295;
+	-6.27222087 -0.00081154 0.00049742 7.27140933 0.99752012 0.99869104 0.49309305;
+	-6.27222140 -0.00081133 0.00049729 7.27141007 0.99752077 0.99869138 0.49309311;
+	-6.27222193 -0.00081112 0.00049716 7.27141082 0.99752142 0.99869172 0.49309317;
+	-6.27222247 -0.00081090 0.00049703 7.27141156 0.99752207 0.99869207 0.49309328;
+	-6.27222300 -0.00081069 0.00049690 7.27141230 0.99752271 0.99869241 0.49309332;
+	-6.27222353 -0.00081048 0.00049677 7.27141305 0.99752336 0.99869275 0.49309344;
+	-6.27222406 -0.00081027 0.00049664 7.27141379 0.99752401 0.99869309 0.49309341;
+	-6.27222459 -0.00081006 0.00049651 7.27141453 0.99752466 0.99869344 0.49309354;
+	-6.27222512 -0.00080984 0.00049638 7.27141527 0.99752531 0.99869378 0.49309361;
+	-6.27222565 -0.00080963 0.00049625 7.27141602 0.99752596 0.99869412 0.49309375;
+	-6.27222618 -0.00080942 0.00049612 7.27141676 0.99752660 0.99869446 0.49309380;
+	-6.27222671 -0.00080921 0.00049599 7.27141750 0.99752725 0.99869480 0.49309382;
+	-6.27222723 -0.00080900 0.00049586 7.27141824 0.99752790 0.99869514 0.49309395;
+	-6.27222776 -0.00080879 0.00049573 7.27141898 0.99752854 0.99869548 0.49309403;
+	-6.27222829 -0.00080857 0.00049560 7.27141972 0.99752919 0.99869582 0.49309409;
+	-6.27222882 -0.00080836 0.00049547 7.27142045 0.99752984 0.99869617 0.49309410;
+	-6.27222934 -0.00080815 0.00049534 7.27142119 0.99753048 0.99869651 0.49309425;
+	-6.27222987 -0.00080794 0.00049521 7.27142193 0.99753113 0.99869685 0.49309434;
+	-6.27223040 -0.00080773 0.00049508 7.27142267 0.99753177 0.99869719 0.49309443;
+	-6.27223092 -0.00080752 0.00049495 7.27142340 0.99753241 0.99869753 0.49309447;
+	-6.27223145 -0.00080731 0.00049482 7.27142414 0.99753306 0.99869787 0.49309457;
+	-6.27223197 -0.00080710 0.00049469 7.27142488 0.99753370 0.99869821 0.49309459;
+	-6.27223250 -0.00080689 0.00049457 7.27142561 0.99753435 0.99869855 0.49309463;
+	-6.27223302 -0.00080668 0.00049444 7.27142635 0.99753499 0.99869888 0.49309473;
+	-6.27223355 -0.00080647 0.00049431 7.27142708 0.99753563 0.99869922 0.49309486;
+	-6.27223407 -0.00080626 0.00049418 7.27142781 0.99753627 0.99869956 0.49309496;
+	-6.27223460 -0.00080605 0.00049405 7.27142855 0.99753692 0.99869990 0.49309501;
+	-6.27223512 -0.00080584 0.00049392 7.27142928 0.99753756 0.99870024 0.49309506;
+	-6.27223564 -0.00080563 0.00049379 7.27143001 0.99753820 0.99870058 0.49309510;
+	-6.27223616 -0.00080542 0.00049366 7.27143074 0.99753884 0.99870092 0.49309524;
+	-6.27223669 -0.00080521 0.00049354 7.27143148 0.99753948 0.99870125 0.49309538;
+	-6.27223721 -0.00080500 0.00049341 7.27143221 0.99754012 0.99870159 0.49309541;
+	-6.27223773 -0.00080479 0.00049328 7.27143294 0.99754076 0.99870193 0.49309547;
+	-6.27223825 -0.00080458 0.00049315 7.27143367 0.99754140 0.99870227 0.49309552;
+	-6.27223877 -0.00080437 0.00049302 7.27143440 0.99754204 0.99870260 0.49309562;
+	-6.27223929 -0.00080416 0.00049289 7.27143513 0.99754268 0.99870294 0.49309564;
+	-6.27223981 -0.00080395 0.00049277 7.27143586 0.99754332 0.99870328 0.49309575;
+	-6.27224033 -0.00080375 0.00049264 7.27143658 0.99754395 0.99870362 0.49309585;
+	-6.27224085 -0.00080354 0.00049251 7.27143731 0.99754459 0.99870395 0.49309591;
+	-6.27224137 -0.00080333 0.00049238 7.27143804 0.99754523 0.99870429 0.49309595;
+	-6.27224189 -0.00080312 0.00049225 7.27143877 0.99754587 0.99870463 0.49309610;
+	-6.27224241 -0.00080291 0.00049213 7.27143949 0.99754650 0.99870496 0.49309609;
+	-6.27224292 -0.00080270 0.00049200 7.27144022 0.99754714 0.99870530 0.49309625;
+	-6.27224344 -0.00080250 0.00049187 7.27144094 0.99754778 0.99870563 0.49309625;
+	-6.27224396 -0.00080229 0.00049174 7.27144167 0.99754841 0.99870597 0.49309632;
+	-6.27224447 -0.00080208 0.00049162 7.27144239 0.99754905 0.99870630 0.49309639;
+	-6.27224499 -0.00080187 0.00049149 7.27144312 0.99754968 0.99870664 0.49309648;
+	-6.27224551 -0.00080166 0.00049136 7.27144384 0.99755032 0.99870697 0.49309655;
+	-6.27224602 -0.00080146 0.00049123 7.27144457 0.99755095 0.99870731 0.49309667;
+	-6.27224654 -0.00080125 0.00049111 7.27144529 0.99755159 0.99870764 0.49309666;
+	-6.27224705 -0.00080104 0.00049098 7.27144601 0.99755222 0.99870798 0.49309679;
+	-6.27224757 -0.00080084 0.00049085 7.27144673 0.99755286 0.99870831 0.49309687;
+	-6.27224808 -0.00080063 0.00049072 7.27144746 0.99755349 0.99870865 0.49309695;
+	-6.27224860 -0.00080042 0.00049060 7.27144818 0.99755412 0.99870898 0.49309704;
+	-6.27224911 -0.00080021 0.00049047 7.27144890 0.99755476 0.99870932 0.49309706;
+	-6.27224962 -0.00080001 0.00049034 7.27144962 0.99755539 0.99870965 0.49309713;
+	-6.27225014 -0.00079980 0.00049022 7.27145034 0.99755602 0.99870998 0.49309722;
+	-6.27225065 -0.00079959 0.00049009 7.27145106 0.99755665 0.99871032 0.49309728;
+	-6.27225116 -0.00079939 0.00048996 7.27145178 0.99755728 0.99871065 0.49309738;
+	-6.27225168 -0.00079918 0.00048984 7.27145249 0.99755791 0.99871098 0.49309747;
+	-6.27225219 -0.00079897 0.00048971 7.27145321 0.99755854 0.99871131 0.49309753;
+	-6.27225270 -0.00079877 0.00048958 7.27145393 0.99755918 0.99871165 0.49309771;
+	-6.27225321 -0.00079856 0.00048946 7.27145465 0.99755981 0.99871198 0.49309765;
+	-6.27225372 -0.00079836 0.00048933 7.27145536 0.99756044 0.99871231 0.49309782;
+	-6.27225423 -0.00079815 0.00048921 7.27145608 0.99756106 0.99871264 0.49309784;
+	-6.27225474 -0.00079795 0.00048908 7.27145680 0.99756169 0.99871298 0.49309793;
+	-6.27225525 -0.00079774 0.00048895 7.27145751 0.99756232 0.99871331 0.49309799;
+	-6.27225576 -0.00079753 0.00048883 7.27145823 0.99756295 0.99871364 0.49309812;
+	-6.27225627 -0.00079733 0.00048870 7.27145894 0.99756358 0.99871397 0.49309805;
+	-6.27225678 -0.00079712 0.00048857 7.27145966 0.99756421 0.99871430 0.49309821;
+	-6.27225729 -0.00079692 0.00048845 7.27146037 0.99756483 0.99871463 0.49309831;
+	-6.27225780 -0.00079671 0.00048832 7.27146108 0.99756546 0.99871496 0.49309836;
+	-6.27225830 -0.00079651 0.00048820 7.27146180 0.99756609 0.99871529 0.49309842;
+	-6.27225881 -0.00079630 0.00048807 7.27146251 0.99756671 0.99871563 0.49309856;
+	-6.27225932 -0.00079610 0.00048795 7.27146322 0.99756734 0.99871596 0.49309861;
+	-6.27225983 -0.00079589 0.00048782 7.27146393 0.99756797 0.99871629 0.49309861;
+	-6.27226033 -0.00079569 0.00048769 7.27146464 0.99756859 0.99871662 0.49309873;
+	-6.27226084 -0.00079548 0.00048757 7.27146535 0.99756922 0.99871695 0.49309877;
+	-6.27226134 -0.00079528 0.00048744 7.27146606 0.99756984 0.99871728 0.49309886;
+	-6.27226185 -0.00079508 0.00048732 7.27146677 0.99757047 0.99871761 0.49309893;
+	-6.27226235 -0.00079487 0.00048719 7.27146748 0.99757109 0.99871793 0.49309902;
+	-6.27226286 -0.00079467 0.00048707 7.27146819 0.99757172 0.99871826 0.49309912;
+	-6.27226336 -0.00079446 0.00048694 7.27146890 0.99757234 0.99871859 0.49309921;
+	-6.27226387 -0.00079426 0.00048682 7.27146961 0.99757296 0.99871892 0.49309921;
+	-6.27226437 -0.00079406 0.00048669 7.27147032 0.99757359 0.99871925 0.49309928;
+	-6.27226488 -0.00079385 0.00048657 7.27147102 0.99757421 0.99871958 0.49309939;
+	-6.27226538 -0.00079365 0.00048644 7.27147173 0.99757483 0.99871991 0.49309945;
+	-6.27226588 -0.00079345 0.00048632 7.27147244 0.99757545 0.99872024 0.49309958;
+	-6.27226639 -0.00079324 0.00048619 7.27147314 0.99757607 0.99872056 0.49309958;
+	-6.27226689 -0.00079304 0.00048607 7.27147385 0.99757670 0.99872089 0.49309961;
+	-6.27226739 -0.00079284 0.00048594 7.27147455 0.99757732 0.99872122 0.49309967;
+	-6.27226789 -0.00079263 0.00048582 7.27147526 0.99757794 0.99872155 0.49309986;
+	-6.27226839 -0.00079243 0.00048570 7.27147596 0.99757856 0.99872187 0.49309996;
+	-6.27226889 -0.00079223 0.00048557 7.27147667 0.99757918 0.99872220 0.49309999;
+	-6.27226939 -0.00079202 0.00048545 7.27147737 0.99757980 0.99872253 0.49310010;
+	-6.27226990 -0.00079182 0.00048532 7.27147807 0.99758042 0.99872286 0.49310015;
+	-6.27227040 -0.00079162 0.00048520 7.27147878 0.99758104 0.99872318 0.49310022;
+	-6.27227090 -0.00079142 0.00048507 7.27147948 0.99758166 0.99872351 0.49310023;
+	-6.27227139 -0.00079121 0.00048495 7.27148018 0.99758227 0.99872384 0.49310029;
+	-6.27227189 -0.00079101 0.00048483 7.27148088 0.99758289 0.99872416 0.49310038;
+	-6.27227239 -0.00079081 0.00048470 7.27148158 0.99758351 0.99872449 0.49310046;
+	-6.27227289 -0.00079061 0.00048458 7.27148228 0.99758413 0.99872481 0.49310052;
+	-6.27227339 -0.00079041 0.00048445 7.27148298 0.99758474 0.99872514 0.49310058;
+	-6.27227389 -0.00079020 0.00048433 7.27148368 0.99758536 0.99872546 0.49310064;
+	-6.27227439 -0.00079000 0.00048421 7.27148438 0.99758598 0.99872579 0.49310077;
+	-6.27227488 -0.00078980 0.00048408 7.27148508 0.99758659 0.99872612 0.49310085;
+	-6.27227538 -0.00078960 0.00048396 7.27148578 0.99758721 0.99872644 0.49310092;
+	-6.27227588 -0.00078940 0.00048384 7.27148648 0.99758783 0.99872677 0.49310100;
+	-6.27227637 -0.00078920 0.00048371 7.27148717 0.99758844 0.99872709 0.49310112;
+	-6.27227687 -0.00078900 0.00048359 7.27148787 0.99758906 0.99872741 0.49310113;
+	-6.27227736 -0.00078880 0.00048347 7.27148857 0.99758967 0.99872774 0.49310122;
+	-6.27227786 -0.00078859 0.00048334 7.27148927 0.99759029 0.99872806 0.49310127;
+	-6.27227836 -0.00078839 0.00048322 7.27148996 0.99759090 0.99872839 0.49310130;
+	-6.27227885 -0.00078819 0.00048310 7.27149066 0.99759151 0.99872871 0.49310141;
+	-6.27227934 -0.00078799 0.00048297 7.27149135 0.99759213 0.99872903 0.49310152;
+	-6.27227984 -0.00078779 0.00048285 7.27149205 0.99759274 0.99872936 0.49310152;
+	-6.27228033 -0.00078759 0.00048273 7.27149274 0.99759335 0.99872968 0.49310163;
+	-6.27228083 -0.00078739 0.00048260 7.27149344 0.99759397 0.99873001 0.49310168;
+	-6.27228132 -0.00078719 0.00048248 7.27149413 0.99759458 0.99873033 0.49310178;
+	-6.27228181 -0.00078699 0.00048236 7.27149482 0.99759519 0.99873065 0.49310189;
+	-6.27228231 -0.00078679 0.00048224 7.27149552 0.99759580 0.99873097 0.49310191;
+	-6.27228280 -0.00078659 0.00048211 7.27149621 0.99759641 0.99873130 0.49310203;
+	-6.27228329 -0.00078639 0.00048199 7.27149690 0.99759702 0.99873162 0.49310202;
+	-6.27228378 -0.00078619 0.00048187 7.27149759 0.99759763 0.99873194 0.49310216;
+	-6.27228427 -0.00078599 0.00048175 7.27149828 0.99759825 0.99873226 0.49310220;
+	-6.27228476 -0.00078579 0.00048162 7.27149897 0.99759886 0.99873259 0.49310228;
+	-6.27228526 -0.00078559 0.00048150 7.27149966 0.99759946 0.99873291 0.49310231;
+	-6.27228575 -0.00078539 0.00048138 7.27150035 0.99760007 0.99873323 0.49310245;
+	-6.27228624 -0.00078519 0.00048126 7.27150104 0.99760068 0.99873355 0.49310250;
+	-6.27228673 -0.00078500 0.00048113 7.27150173 0.99760129 0.99873387 0.49310256;
+	-6.27228722 -0.00078480 0.00048101 7.27150242 0.99760190 0.99873419 0.49310269;
+	-6.27228771 -0.00078460 0.00048089 7.27150311 0.99760251 0.99873451 0.49310278;
+	-6.27228819 -0.00078440 0.00048077 7.27150380 0.99760312 0.99873483 0.49310277;
+	-6.27228868 -0.00078420 0.00048065 7.27150448 0.99760372 0.99873515 0.49310291;
+	-6.27228917 -0.00078400 0.00048052 7.27150517 0.99760433 0.99873548 0.49310291;
+	-6.27228966 -0.00078380 0.00048040 7.27150586 0.99760494 0.99873580 0.49310301;
+	-6.27229015 -0.00078360 0.00048028 7.27150654 0.99760555 0.99873612 0.49310307;
+	-6.27229064 -0.00078341 0.00048016 7.27150723 0.99760615 0.99873644 0.49310321;
+	-6.27229112 -0.00078321 0.00048004 7.27150792 0.99760676 0.99873676 0.49310322;
+	-6.27229161 -0.00078301 0.00047992 7.27150860 0.99760736 0.99873707 0.49310330;
+	-6.27229210 -0.00078281 0.00047979 7.27150929 0.99760797 0.99873739 0.49310330;
+	-6.27229258 -0.00078261 0.00047967 7.27150997 0.99760857 0.99873771 0.49310340;
+	-6.27229307 -0.00078242 0.00047955 7.27151065 0.99760918 0.99873803 0.49310344;
+	-6.27229356 -0.00078222 0.00047943 7.27151134 0.99760978 0.99873835 0.49310362;
+	-6.27229404 -0.00078202 0.00047931 7.27151202 0.99761039 0.99873867 0.49310362;
+	-6.27229453 -0.00078182 0.00047919 7.27151270 0.99761099 0.99873899 0.49310369;
+	-6.27229501 -0.00078163 0.00047907 7.27151339 0.99761160 0.99873931 0.49310382;
+	-6.27229550 -0.00078143 0.00047895 7.27151407 0.99761220 0.99873963 0.49310378;
+	-6.27229598 -0.00078123 0.00047882 7.27151475 0.99761280 0.99873994 0.49310395;
+	-6.27229646 -0.00078103 0.00047870 7.27151543 0.99761340 0.99874026 0.49310398;
+	-6.27229695 -0.00078084 0.00047858 7.27151611 0.99761401 0.99874058 0.49310409;
+	-6.27229743 -0.00078064 0.00047846 7.27151679 0.99761461 0.99874090 0.49310410;
+	-6.27229791 -0.00078044 0.00047834 7.27151747 0.99761521 0.99874122 0.49310419;
+	-6.27229840 -0.00078025 0.00047822 7.27151815 0.99761581 0.99874153 0.49310426;
+	-6.27229888 -0.00078005 0.00047810 7.27151883 0.99761641 0.99874185 0.49310431;
+	-6.27229936 -0.00077985 0.00047798 7.27151951 0.99761701 0.99874217 0.49310439;
+	-6.27229984 -0.00077966 0.00047786 7.27152019 0.99761762 0.99874248 0.49310456;
+	-6.27230033 -0.00077946 0.00047774 7.27152087 0.99761822 0.99874280 0.49310453;
+	-6.27230081 -0.00077926 0.00047762 7.27152154 0.99761882 0.99874312 0.49310456;
+	-6.27230129 -0.00077907 0.00047750 7.27152222 0.99761942 0.99874343 0.49310472;
+	-6.27230177 -0.00077887 0.00047738 7.27152290 0.99762001 0.99874375 0.49310478;
+	-6.27230225 -0.00077868 0.00047726 7.27152357 0.99762061 0.99874407 0.49310482;
+	-6.27230273 -0.00077848 0.00047714 7.27152425 0.99762121 0.99874438 0.49310485;
+	-6.27230321 -0.00077828 0.00047702 7.27152493 0.99762181 0.99874470 0.49310496;
+	-6.27230369 -0.00077809 0.00047690 7.27152560 0.99762241 0.99874501 0.49310508;
+	-6.27230417 -0.00077789 0.00047678 7.27152628 0.99762301 0.99874533 0.49310514;
+	-6.27230465 -0.00077770 0.00047666 7.27152695 0.99762360 0.99874564 0.49310512;
+	-6.27230513 -0.00077750 0.00047654 7.27152763 0.99762420 0.99874596 0.49310522;
+	-6.27230561 -0.00077731 0.00047642 7.27152830 0.99762480 0.99874627 0.49310530;
+	-6.27230609 -0.00077711 0.00047630 7.27152897 0.99762540 0.99874659 0.49310543;
+	-6.27230656 -0.00077692 0.00047618 7.27152965 0.99762599 0.99874690 0.49310543;
+	-6.27230704 -0.00077672 0.00047606 7.27153032 0.99762659 0.99874722 0.49310556;
+	-6.27230752 -0.00077653 0.00047594 7.27153099 0.99762718 0.99874753 0.49310555;
+	-6.27230800 -0.00077633 0.00047582 7.27153166 0.99762778 0.99874785 0.49310570;
+	-6.27230847 -0.00077614 0.00047570 7.27153233 0.99762837 0.99874816 0.49310570;
+	-6.27230895 -0.00077594 0.00047558 7.27153301 0.99762897 0.99874848 0.49310582;
+	-6.27230943 -0.00077575 0.00047546 7.27153368 0.99762956 0.99874879 0.49310585;
+	-6.27230990 -0.00077556 0.00047534 7.27153435 0.99763016 0.99874910 0.49310599;
+	-6.27231038 -0.00077536 0.00047522 7.27153502 0.99763075 0.99874942 0.49310605;
+	-6.27231085 -0.00077517 0.00047510 7.27153569 0.99763135 0.99874973 0.49310608;
+	-6.27231133 -0.00077497 0.00047498 7.27153636 0.99763194 0.99875004 0.49310612;
+	-6.27231180 -0.00077478 0.00047487 7.27153702 0.99763253 0.99875036 0.49310624;
+	-6.27231228 -0.00077458 0.00047475 7.27153769 0.99763312 0.99875067 0.49310622;
+	-6.27231275 -0.00077439 0.00047463 7.27153836 0.99763372 0.99875098 0.49310639;
+	-6.27231323 -0.00077420 0.00047451 7.27153903 0.99763431 0.99875129 0.49310643;
+	-6.27231370 -0.00077400 0.00047439 7.27153970 0.99763490 0.99875161 0.49310644;
+	-6.27231417 -0.00077381 0.00047427 7.27154036 0.99763549 0.99875192 0.49310654;
+	-6.27231465 -0.00077362 0.00047415 7.27154103 0.99763608 0.99875223 0.49310665;
+	-6.27231512 -0.00077342 0.00047403 7.27154170 0.99763668 0.99875254 0.49310674;
+	-6.27231559 -0.00077323 0.00047392 7.27154236 0.99763727 0.99875285 0.49310670;
+	-6.27231607 -0.00077304 0.00047380 7.27154303 0.99763786 0.99875317 0.49310684;
+	-6.27231654 -0.00077284 0.00047368 7.27154369 0.99763845 0.99875348 0.49310692;
+	-6.27231701 -0.00077265 0.00047356 7.27154436 0.99763904 0.99875379 0.49310699;
+	-6.27231748 -0.00077246 0.00047344 7.27154502 0.99763963 0.99875410 0.49310700;
+	-6.27231795 -0.00077227 0.00047332 7.27154569 0.99764021 0.99875441 0.49310703;
+	-6.27231842 -0.00077207 0.00047321 7.27154635 0.99764080 0.99875472 0.49310722;
+	-6.27231889 -0.00077188 0.00047309 7.27154701 0.99764139 0.99875503 0.49310725;
+	-6.27231936 -0.00077169 0.00047297 7.27154768 0.99764198 0.99875534 0.49310729;
+	-6.27231984 -0.00077150 0.00047285 7.27154834 0.99764257 0.99875565 0.49310745;
+	-6.27232031 -0.00077130 0.00047273 7.27154900 0.99764316 0.99875596 0.49310751;
+	-6.27232077 -0.00077111 0.00047262 7.27154966 0.99764374 0.99875627 0.49310749;
+	-6.27232124 -0.00077092 0.00047250 7.27155032 0.99764433 0.99875658 0.49310765;
+	-6.27232171 -0.00077073 0.00047238 7.27155099 0.99764492 0.99875689 0.49310767;
+	-6.27232218 -0.00077054 0.00047226 7.27155165 0.99764550 0.99875720 0.49310775;
+	-6.27232265 -0.00077034 0.00047215 7.27155231 0.99764609 0.99875751 0.49310781;
+	-6.27232312 -0.00077015 0.00047203 7.27155297 0.99764668 0.99875782 0.49310787;
+	-6.27232359 -0.00076996 0.00047191 7.27155363 0.99764726 0.99875813 0.49310796;
+	-6.27232406 -0.00076977 0.00047179 7.27155429 0.99764785 0.99875844 0.49310787;
+	-6.27232452 -0.00076958 0.00047168 7.27155494 0.99764843 0.99875875 0.49310807;
+	-6.27232499 -0.00076939 0.00047156 7.27155560 0.99764902 0.99875906 0.49310819;
+	-6.27232546 -0.00076920 0.00047144 7.27155626 0.99764960 0.99875936 0.49310824;
+	-6.27232592 -0.00076900 0.00047132 7.27155692 0.99765019 0.99875967 0.49310831;
+	-6.27232639 -0.00076881 0.00047121 7.27155758 0.99765077 0.99875998 0.49310826;
+	-6.27232686 -0.00076862 0.00047109 7.27155823 0.99765135 0.99876029 0.49310841;
+	-6.27232732 -0.00076843 0.00047097 7.27155889 0.99765194 0.99876060 0.49310851;
+	-6.27232779 -0.00076824 0.00047086 7.27155955 0.99765252 0.99876090 0.49310855;
+	-6.27232825 -0.00076805 0.00047074 7.27156020 0.99765310 0.99876121 0.49310862;
+	-6.27232872 -0.00076786 0.00047062 7.27156086 0.99765369 0.99876152 0.49310868;
+	-6.27232918 -0.00076767 0.00047050 7.27156151 0.99765427 0.99876183 0.49310870;
+	-6.27232965 -0.00076748 0.00047039 7.27156217 0.99765485 0.99876213 0.49310885;
+	-6.27233011 -0.00076729 0.00047027 7.27156282 0.99765543 0.99876244 0.49310881;
+	-6.27233058 -0.00076710 0.00047015 7.27156348 0.99765601 0.99876275 0.49310901;
+	-6.27233104 -0.00076691 0.00047004 7.27156413 0.99765660 0.99876305 0.49310905;
+	-6.27233150 -0.00076672 0.00046992 7.27156478 0.99765718 0.99876336 0.49310906;
+	-6.27233197 -0.00076653 0.00046981 7.27156544 0.99765776 0.99876367 0.49310915;
+	-6.27233243 -0.00076634 0.00046969 7.27156609 0.99765834 0.99876397 0.49310926;
+	-6.27233289 -0.00076615 0.00046957 7.27156674 0.99765892 0.99876428 0.49310922;
+	-6.27233336 -0.00076596 0.00046946 7.27156740 0.99765950 0.99876458 0.49310945;
+	-6.27233382 -0.00076577 0.00046934 7.27156805 0.99766008 0.99876489 0.49310949;
+	-6.27233428 -0.00076558 0.00046922 7.27156870 0.99766065 0.99876520 0.49310955;
+	-6.27233474 -0.00076539 0.00046911 7.27156935 0.99766123 0.99876550 0.49310960;
+	-6.27233520 -0.00076520 0.00046899 7.27157000 0.99766181 0.99876581 0.49310966;
+	-6.27233566 -0.00076501 0.00046888 7.27157065 0.99766239 0.99876611 0.49310976;
+	-6.27233612 -0.00076482 0.00046876 7.27157130 0.99766297 0.99876642 0.49310982;
+	-6.27233658 -0.00076464 0.00046864 7.27157195 0.99766355 0.99876672 0.49310988;
+	-6.27233705 -0.00076445 0.00046853 7.27157260 0.99766412 0.99876703 0.49310995;
+	-6.27233751 -0.00076426 0.00046841 7.27157325 0.99766470 0.99876733 0.49310998;
+	-6.27233797 -0.00076407 0.00046830 7.27157390 0.99766528 0.99876763 0.49311004;
+	-6.27233843 -0.00076388 0.00046818 7.27157454 0.99766585 0.99876794 0.49311017;
+	-6.27233888 -0.00076369 0.00046806 7.27157519 0.99766643 0.99876824 0.49311019;
+	-6.27233934 -0.00076350 0.00046795 7.27157584 0.99766701 0.99876855 0.49311023;
+	-6.27233980 -0.00076332 0.00046783 7.27157649 0.99766758 0.99876885 0.49311028;
+	-6.27234026 -0.00076313 0.00046772 7.27157713 0.99766816 0.99876915 0.49311042;
+	-6.27234072 -0.00076294 0.00046760 7.27157778 0.99766873 0.99876946 0.49311047;
+	-6.27234118 -0.00076275 0.00046749 7.27157843 0.99766931 0.99876976 0.49311045;
+	-6.27234163 -0.00076256 0.00046737 7.27157907 0.99766988 0.99877006 0.49311061;
+	-6.27234209 -0.00076238 0.00046726 7.27157972 0.99767046 0.99877037 0.49311059;
+	-6.27234255 -0.00076219 0.00046714 7.27158036 0.99767103 0.99877067 0.49311072;
+	-6.27234301 -0.00076200 0.00046703 7.27158101 0.99767160 0.99877097 0.49311081;
+	-6.27234346 -0.00076181 0.00046691 7.27158165 0.99767218 0.99877128 0.49311088;
+	-6.27234392 -0.00076163 0.00046680 7.27158229 0.99767275 0.99877158 0.49311099;
+	-6.27234438 -0.00076144 0.00046668 7.27158294 0.99767332 0.99877188 0.49311100;
+	-6.27234483 -0.00076125 0.00046657 7.27158358 0.99767389 0.99877218 0.49311108;
+	-6.27234529 -0.00076106 0.00046645 7.27158422 0.99767447 0.99877248 0.49311114;
+	-6.27234574 -0.00076088 0.00046634 7.27158487 0.99767504 0.99877279 0.49311126;
+	-6.27234620 -0.00076069 0.00046622 7.27158551 0.99767561 0.99877309 0.49311118;
+	-6.27234665 -0.00076050 0.00046611 7.27158615 0.99767618 0.99877339 0.49311132;
+	-6.27234711 -0.00076032 0.00046599 7.27158679 0.99767675 0.99877369 0.49311134;
+	-6.27234756 -0.00076013 0.00046588 7.27158743 0.99767732 0.99877399 0.49311138;
+	-6.27234802 -0.00075994 0.00046576 7.27158807 0.99767789 0.99877429 0.49311158;
+	-6.27234847 -0.00075976 0.00046565 7.27158872 0.99767846 0.99877459 0.49311152;
+	-6.27234892 -0.00075957 0.00046554 7.27158935 0.99767903 0.99877489 0.49311170;
+	-6.27234938 -0.00075938 0.00046542 7.27158999 0.99767960 0.99877519 0.49311176;
+	-6.27234983 -0.00075920 0.00046531 7.27159063 0.99768017 0.99877550 0.49311184;
+	-6.27235028 -0.00075901 0.00046519 7.27159127 0.99768074 0.99877580 0.49311180;
+	-6.27235074 -0.00075882 0.00046508 7.27159191 0.99768131 0.99877610 0.49311187;
+	-6.27235119 -0.00075864 0.00046496 7.27159255 0.99768188 0.99877640 0.49311206;
+	-6.27235164 -0.00075845 0.00046485 7.27159319 0.99768245 0.99877670 0.49311212;
+	-6.27235209 -0.00075827 0.00046474 7.27159383 0.99768302 0.99877700 0.49311212;
+	-6.27235255 -0.00075808 0.00046462 7.27159446 0.99768358 0.99877730 0.49311214;
+	-6.27235300 -0.00075790 0.00046451 7.27159510 0.99768415 0.99877759 0.49311223;
+	-6.27235345 -0.00075771 0.00046440 7.27159574 0.99768472 0.99877789 0.49311231;
+	-6.27235390 -0.00075753 0.00046428 7.27159637 0.99768529 0.99877819 0.49311242;
+	-6.27235435 -0.00075734 0.00046417 7.27159701 0.99768585 0.99877849 0.49311242;
+	-6.27235480 -0.00075715 0.00046405 7.27159765 0.99768642 0.99877879 0.49311257;
+	-6.27235525 -0.00075697 0.00046394 7.27159828 0.99768699 0.99877909 0.49311263;
+	-6.27235570 -0.00075678 0.00046383 7.27159892 0.99768755 0.99877939 0.49311265;
+	-6.27235615 -0.00075660 0.00046371 7.27159955 0.99768812 0.99877969 0.49311271;
+	-6.27235660 -0.00075641 0.00046360 7.27160019 0.99768868 0.99877999 0.49311273;
+	-6.27235705 -0.00075623 0.00046349 7.27160082 0.99768925 0.99878028 0.49311292;
+	-6.27235750 -0.00075605 0.00046337 7.27160145 0.99768981 0.99878058 0.49311290;
+	-6.27235795 -0.00075586 0.00046326 7.27160209 0.99769038 0.99878088 0.49311294;
+	-6.27235840 -0.00075568 0.00046315 7.27160272 0.99769094 0.99878118 0.49311305;
+	-6.27235884 -0.00075549 0.00046303 7.27160335 0.99769150 0.99878147 0.49311309;
+	-6.27235929 -0.00075531 0.00046292 7.27160398 0.99769207 0.99878177 0.49311327;
+	-6.27235974 -0.00075512 0.00046281 7.27160462 0.99769263 0.99878207 0.49311324;
+	-6.27236019 -0.00075494 0.00046269 7.27160525 0.99769319 0.99878237 0.49311327;
+	-6.27236063 -0.00075475 0.00046258 7.27160588 0.99769376 0.99878266 0.49311333;
+	-6.27236108 -0.00075457 0.00046247 7.27160651 0.99769432 0.99878296 0.49311348;
+	-6.27236153 -0.00075439 0.00046236 7.27160714 0.99769488 0.99878326 0.49311361;
+	-6.27236197 -0.00075420 0.00046224 7.27160777 0.99769544 0.99878355 0.49311357;
+	-6.27236242 -0.00075402 0.00046213 7.27160840 0.99769601 0.99878385 0.49311362;
+	-6.27236287 -0.00075384 0.00046202 7.27160903 0.99769657 0.99878415 0.49311367;
+	-6.27236331 -0.00075365 0.00046191 7.27160966 0.99769713 0.99878444 0.49311366;
+	-6.27236376 -0.00075347 0.00046179 7.27161029 0.99769769 0.99878474 0.49311384;
+	-6.27236420 -0.00075329 0.00046168 7.27161092 0.99769825 0.99878503 0.49311393;
+	-6.27236465 -0.00075310 0.00046157 7.27161155 0.99769881 0.99878533 0.49311405;
+	-6.27236509 -0.00075292 0.00046146 7.27161217 0.99769937 0.99878563 0.49311410;
+	-6.27236554 -0.00075274 0.00046134 7.27161280 0.99769993 0.99878592 0.49311401;
+	-6.27236598 -0.00075255 0.00046123 7.27161343 0.99770049 0.99878622 0.49311424;
+	-6.27236643 -0.00075237 0.00046112 7.27161406 0.99770105 0.99878651 0.49311425;
+	-6.27236687 -0.00075219 0.00046101 7.27161468 0.99770161 0.99878681 0.49311423;
+	-6.27236731 -0.00075200 0.00046089 7.27161531 0.99770217 0.99878710 0.49311442;
+	-6.27236776 -0.00075182 0.00046078 7.27161594 0.99770272 0.99878740 0.49311431;
+	-6.27236820 -0.00075164 0.00046067 7.27161656 0.99770328 0.99878769 0.49311449;
+	-6.27236864 -0.00075146 0.00046056 7.27161719 0.99770384 0.99878798 0.49311451;
+	-6.27236909 -0.00075127 0.00046045 7.27161781 0.99770440 0.99878828 0.49311462;
+	-6.27236953 -0.00075109 0.00046034 7.27161844 0.99770496 0.99878857 0.49311465;
+	-6.27236997 -0.00075091 0.00046022 7.27161906 0.99770551 0.99878887 0.49311479;
+	-6.27237041 -0.00075073 0.00046011 7.27161968 0.99770607 0.99878916 0.49311488;
+	-6.27237085 -0.00075055 0.00046000 7.27162031 0.99770663 0.99878945 0.49311489;
+	-6.27237130 -0.00075036 0.00045989 7.27162093 0.99770718 0.99878975 0.49311496;
+	-6.27237174 -0.00075018 0.00045978 7.27162155 0.99770774 0.99879004 0.49311494;
+	-6.27237218 -0.00075000 0.00045967 7.27162218 0.99770829 0.99879033 0.49311510;
+	-6.27237262 -0.00074982 0.00045955 7.27162280 0.99770885 0.99879063 0.49311504;
+	-6.27237306 -0.00074964 0.00045944 7.27162342 0.99770941 0.99879092 0.49311523;
+	-6.27237350 -0.00074946 0.00045933 7.27162404 0.99770996 0.99879121 0.49311526;
+	-6.27237394 -0.00074927 0.00045922 7.27162466 0.99771051 0.99879151 0.49311531;
+	-6.27237438 -0.00074909 0.00045911 7.27162529 0.99771107 0.99879180 0.49311549;
+	-6.27237482 -0.00074891 0.00045900 7.27162591 0.99771162 0.99879209 0.49311546;
+	-6.27237526 -0.00074873 0.00045889 7.27162653 0.99771218 0.99879238 0.49311554;
+	-6.27237570 -0.00074855 0.00045878 7.27162715 0.99771273 0.99879268 0.49311557;
+	-6.27237614 -0.00074837 0.00045866 7.27162777 0.99771328 0.99879297 0.49311573;
+	-6.27237657 -0.00074819 0.00045855 7.27162839 0.99771384 0.99879326 0.49311571;
+	-6.27237701 -0.00074801 0.00045844 7.27162901 0.99771439 0.99879355 0.49311580;
+	-6.27237745 -0.00074783 0.00045833 7.27162962 0.99771494 0.99879384 0.49311585;
+	-6.27237789 -0.00074765 0.00045822 7.27163024 0.99771549 0.99879413 0.49311592;
+	-6.27237833 -0.00074747 0.00045811 7.27163086 0.99771605 0.99879442 0.49311607;
+	-6.27237876 -0.00074728 0.00045800 7.27163148 0.99771660 0.99879472 0.49311608;
+	-6.27237920 -0.00074710 0.00045789 7.27163210 0.99771715 0.99879501 0.49311612;
+	-6.27237964 -0.00074692 0.00045778 7.27163271 0.99771770 0.99879530 0.49311622;
+	-6.27238007 -0.00074674 0.00045767 7.27163333 0.99771825 0.99879559 0.49311623;
+	-6.27238051 -0.00074656 0.00045756 7.27163395 0.99771880 0.99879588 0.49311629;
+	-6.27238095 -0.00074638 0.00045745 7.27163456 0.99771935 0.99879617 0.49311629;
+	-6.27238138 -0.00074620 0.00045734 7.27163518 0.99771990 0.99879646 0.49311644;
+	-6.27238182 -0.00074602 0.00045723 7.27163580 0.99772045 0.99879675 0.49311641;
+	-6.27238225 -0.00074584 0.00045712 7.27163641 0.99772100 0.99879704 0.49311653;
+	-6.27238269 -0.00074566 0.00045701 7.27163703 0.99772155 0.99879733 0.49311671;
+	-6.27238312 -0.00074548 0.00045690 7.27163764 0.99772210 0.99879762 0.49311673;
+	-6.27238356 -0.00074531 0.00045679 7.27163825 0.99772265 0.99879791 0.49311683;
+	-6.27238399 -0.00074513 0.00045668 7.27163887 0.99772320 0.99879820 0.49311676;
+	-6.27238443 -0.00074495 0.00045657 7.27163948 0.99772375 0.99879849 0.49311684;
+	-6.27238486 -0.00074477 0.00045646 7.27164010 0.99772429 0.99879878 0.49311690;
+	-6.27238530 -0.00074459 0.00045635 7.27164071 0.99772484 0.99879907 0.49311703;
+	-6.27238573 -0.00074441 0.00045624 7.27164132 0.99772539 0.99879936 0.49311710;
+	-6.27238616 -0.00074423 0.00045613 7.27164193 0.99772594 0.99879964 0.49311708;
+	-6.27238660 -0.00074405 0.00045602 7.27164255 0.99772648 0.99879993 0.49311725;
+	-6.27238703 -0.00074387 0.00045591 7.27164316 0.99772703 0.99880022 0.49311732;
+	-6.27238746 -0.00074369 0.00045580 7.27164377 0.99772758 0.99880051 0.49311738;
+	-6.27238790 -0.00074352 0.00045569 7.27164438 0.99772812 0.99880080 0.49311739;
+	-6.27238833 -0.00074334 0.00045558 7.27164499 0.99772867 0.99880109 0.49311746;
+	-6.27238876 -0.00074316 0.00045547 7.27164560 0.99772921 0.99880137 0.49311752;
+	-6.27238919 -0.00074298 0.00045536 7.27164621 0.99772976 0.99880166 0.49311758;
+	-6.27238962 -0.00074280 0.00045525 7.27164682 0.99773030 0.99880195 0.49311766;
+	-6.27239006 -0.00074262 0.00045514 7.27164743 0.99773085 0.99880224 0.49311772;
+	-6.27239049 -0.00074245 0.00045503 7.27164804 0.99773139 0.99880252 0.49311777;
+	-6.27239092 -0.00074227 0.00045492 7.27164865 0.99773194 0.99880281 0.49311785;
+	-6.27239135 -0.00074209 0.00045481 7.27164926 0.99773248 0.99880310 0.49311791;
+	-6.27239178 -0.00074191 0.00045470 7.27164987 0.99773303 0.99880339 0.49311797;
+	-6.27239221 -0.00074173 0.00045459 7.27165048 0.99773357 0.99880367 0.49311806;
+	-6.27239264 -0.00074156 0.00045449 7.27165108 0.99773411 0.99880396 0.49311809;
+	-6.27239307 -0.00074138 0.00045438 7.27165169 0.99773466 0.99880425 0.49311816;
+	-6.27239350 -0.00074120 0.00045427 7.27165230 0.99773520 0.99880453 0.49311824;
+	-6.27239393 -0.00074102 0.00045416 7.27165291 0.99773574 0.99880482 0.49311829;
+	-6.27239436 -0.00074085 0.00045405 7.27165351 0.99773628 0.99880510 0.49311835;
+	-6.27239479 -0.00074067 0.00045394 7.27165412 0.99773683 0.99880539 0.49311839;
+	-6.27239522 -0.00074049 0.00045383 7.27165472 0.99773737 0.99880568 0.49311849;
+	-6.27239564 -0.00074031 0.00045372 7.27165533 0.99773791 0.99880596 0.49311853;
+	-6.27239607 -0.00074014 0.00045362 7.27165593 0.99773845 0.99880625 0.49311862;
+	-6.27239650 -0.00073996 0.00045351 7.27165654 0.99773899 0.99880653 0.49311867;
+	-6.27239693 -0.00073978 0.00045340 7.27165714 0.99773953 0.99880682 0.49311873;
+	-6.27239736 -0.00073961 0.00045329 7.27165775 0.99774007 0.99880710 0.49311878;
+	-6.27239778 -0.00073943 0.00045318 7.27165835 0.99774061 0.99880739 0.49311885;
+	-6.27239821 -0.00073925 0.00045307 7.27165896 0.99774115 0.99880767 0.49311891;
+	-6.27239864 -0.00073908 0.00045296 7.27165956 0.99774169 0.99880796 0.49311897;
+	-6.27239906 -0.00073890 0.00045286 7.27166016 0.99774223 0.99880824 0.49311905;
+	-6.27239949 -0.00073872 0.00045275 7.27166077 0.99774277 0.99880853 0.49311912;
+	-6.27239992 -0.00073855 0.00045264 7.27166137 0.99774331 0.99880881 0.49311918;
+	-6.27240034 -0.00073837 0.00045253 7.27166197 0.99774385 0.99880910 0.49311924;
+	-6.27240077 -0.00073820 0.00045242 7.27166257 0.99774439 0.99880938 0.49311929;
+	-6.27240119 -0.00073802 0.00045232 7.27166317 0.99774492 0.99880966 0.49311935;
+	-6.27240162 -0.00073784 0.00045221 7.27166378 0.99774546 0.99880995 0.49311941;
+	-6.27240205 -0.00073767 0.00045210 7.27166438 0.99774600 0.99881023 0.49311949;
+	-6.27240247 -0.00073749 0.00045199 7.27166498 0.99774654 0.99881051 0.49311956;
+	-6.27240289 -0.00073732 0.00045188 7.27166558 0.99774707 0.99881080 0.49311961;
+	-6.27240332 -0.00073714 0.00045178 7.27166618 0.99774761 0.99881108 0.49311968;
+	-6.27240374 -0.00073697 0.00045167 7.27166678 0.99774815 0.99881136 0.49311975;
+	-6.27240417 -0.00073679 0.00045156 7.27166738 0.99774868 0.99881165 0.49311980;
+	-6.27240459 -0.00073662 0.00045145 7.27166798 0.99774922 0.99881193 0.49311987;
+	-6.27240502 -0.00073644 0.00045135 7.27166858 0.99774976 0.99881221 0.49311992;
+	-6.27240544 -0.00073626 0.00045124 7.27166917 0.99775029 0.99881250 0.49312000;
+	-6.27240586 -0.00073609 0.00045113 7.27166977 0.99775083 0.99881278 0.49312006;
+	-6.27240628 -0.00073591 0.00045102 7.27167037 0.99775136 0.99881306 0.49312011;
+	-6.27240671 -0.00073574 0.00045092 7.27167097 0.99775190 0.99881334 0.49312017;
+	-6.27240713 -0.00073556 0.00045081 7.27167157 0.99775243 0.99881362 0.49312022;
+	-6.27240755 -0.00073539 0.00045070 7.27167216 0.99775297 0.99881391 0.49312031;
+	-6.27240797 -0.00073522 0.00045060 7.27167276 0.99775350 0.99881419 0.49312033;
+	-6.27240840 -0.00073504 0.00045049 7.27167336 0.99775403 0.99881447 0.49312043;
+	-6.27240882 -0.00073487 0.00045038 7.27167395 0.99775457 0.99881475 0.49312049;
+	-6.27240924 -0.00073469 0.00045027 7.27167455 0.99775510 0.99881503 0.49312054;
+	-6.27240966 -0.00073452 0.00045017 7.27167514 0.99775563 0.99881531 0.49312061;
+	-6.27241008 -0.00073434 0.00045006 7.27167574 0.99775617 0.99881560 0.49312068;
+	-6.27241050 -0.00073417 0.00044995 7.27167633 0.99775670 0.99881588 0.49312074;
+	-6.27241092 -0.00073400 0.00044985 7.27167693 0.99775723 0.99881616 0.49312080;
+	-6.27241134 -0.00073382 0.00044974 7.27167752 0.99775776 0.99881644 0.49312087;
+	-6.27241176 -0.00073365 0.00044963 7.27167812 0.99775829 0.99881672 0.49312093;
+	-6.27241218 -0.00073347 0.00044953 7.27167871 0.99775883 0.99881700 0.49312099;
+	-6.27241260 -0.00073330 0.00044942 7.27167930 0.99775936 0.99881728 0.49312106;
+	-6.27241302 -0.00073313 0.00044931 7.27167990 0.99775989 0.99881756 0.49312110;
+	-6.27241344 -0.00073295 0.00044921 7.27168049 0.99776042 0.99881784 0.49312117;
+	-6.27241386 -0.00073278 0.00044910 7.27168108 0.99776095 0.99881812 0.49312124;
+	-6.27241428 -0.00073261 0.00044899 7.27168167 0.99776148 0.99881840 0.49312129;
+	-6.27241470 -0.00073243 0.00044889 7.27168227 0.99776201 0.99881868 0.49312137;
+	-6.27241512 -0.00073226 0.00044878 7.27168286 0.99776254 0.99881896 0.49312141;
+	-6.27241554 -0.00073209 0.00044868 7.27168345 0.99776307 0.99881924 0.49312147;
+	-6.27241595 -0.00073191 0.00044857 7.27168404 0.99776360 0.99881952 0.49312156;
+	-6.27241637 -0.00073174 0.00044846 7.27168463 0.99776413 0.99881980 0.49312161;
+	-6.27241679 -0.00073157 0.00044836 7.27168522 0.99776466 0.99882008 0.49312166;
+	-6.27241721 -0.00073139 0.00044825 7.27168581 0.99776518 0.99882035 0.49312172;
+	-6.27241762 -0.00073122 0.00044815 7.27168640 0.99776571 0.99882063 0.49312178;
+	-6.27241804 -0.00073105 0.00044804 7.27168699 0.99776624 0.99882091 0.49312185;
+	-6.27241846 -0.00073088 0.00044793 7.27168758 0.99776677 0.99882119 0.49312193;
+	-6.27241887 -0.00073070 0.00044783 7.27168817 0.99776730 0.99882147 0.49312197;
+	-6.27241929 -0.00073053 0.00044772 7.27168876 0.99776782 0.99882175 0.49312203;
+	-6.27241971 -0.00073036 0.00044762 7.27168935 0.99776835 0.99882202 0.49312211;
+	-6.27242012 -0.00073019 0.00044751 7.27168994 0.99776888 0.99882230 0.49312215;
+	-6.27242054 -0.00073001 0.00044741 7.27169052 0.99776940 0.99882258 0.49312222;
+	-6.27242095 -0.00072984 0.00044730 7.27169111 0.99776993 0.99882286 0.49312230;
+	-6.27242137 -0.00072967 0.00044719 7.27169170 0.99777045 0.99882314 0.49312233;
+	-6.27242178 -0.00072950 0.00044709 7.27169229 0.99777098 0.99882341 0.49312241;
+	-6.27242220 -0.00072933 0.00044698 7.27169287 0.99777151 0.99882369 0.49312246;
+	-6.27242261 -0.00072915 0.00044688 7.27169346 0.99777203 0.99882397 0.49312253;
+	-6.27242303 -0.00072898 0.00044677 7.27169405 0.99777256 0.99882424 0.49312260;
+	-6.27242344 -0.00072881 0.00044667 7.27169463 0.99777308 0.99882452 0.49312265;
+	-6.27242386 -0.00072864 0.00044656 7.27169522 0.99777361 0.99882480 0.49312272;
+	-6.27242427 -0.00072847 0.00044646 7.27169580 0.99777413 0.99882508 0.49312276;
+	-6.27242468 -0.00072830 0.00044635 7.27169639 0.99777465 0.99882535 0.49312285;
+	-6.27242510 -0.00072813 0.00044625 7.27169697 0.99777518 0.99882563 0.49312291;
+	-6.27242551 -0.00072795 0.00044614 7.27169756 0.99777570 0.99882590 0.49312295;
+	-6.27242592 -0.00072778 0.00044604 7.27169814 0.99777622 0.99882618 0.49312303;
+	-6.27242634 -0.00072761 0.00044593 7.27169872 0.99777675 0.99882646 0.49312307;
+	-6.27242675 -0.00072744 0.00044583 7.27169931 0.99777727 0.99882673 0.49312312;
+	-6.27242716 -0.00072727 0.00044572 7.27169989 0.99777779 0.99882701 0.49312319;
+	-6.27242757 -0.00072710 0.00044562 7.27170047 0.99777831 0.99882728 0.49312326;
+	-6.27242798 -0.00072693 0.00044551 7.27170106 0.99777884 0.99882756 0.49312335;
+	-6.27242840 -0.00072676 0.00044541 7.27170164 0.99777936 0.99882783 0.49312338;
+	-6.27242881 -0.00072659 0.00044530 7.27170222 0.99777988 0.99882811 0.49312345;
+	-6.27242922 -0.00072642 0.00044520 7.27170280 0.99778040 0.99882838 0.49312349;
+	-6.27242963 -0.00072625 0.00044509 7.27170338 0.99778092 0.99882866 0.49312358;
+	-6.27243004 -0.00072608 0.00044499 7.27170397 0.99778144 0.99882893 0.49312364;
+	-6.27243045 -0.00072591 0.00044488 7.27170455 0.99778196 0.99882921 0.49312368;
+	-6.27243086 -0.00072574 0.00044478 7.27170513 0.99778248 0.99882948 0.49312376;
+	-6.27243127 -0.00072557 0.00044468 7.27170571 0.99778300 0.99882976 0.49312381;
+	-6.27243168 -0.00072540 0.00044457 7.27170629 0.99778352 0.99883003 0.49312388;
+	-6.27243209 -0.00072523 0.00044447 7.27170687 0.99778404 0.99883031 0.49312394;
+	-6.27243250 -0.00072506 0.00044436 7.27170745 0.99778456 0.99883058 0.49312397;
+	-6.27243291 -0.00072489 0.00044426 7.27170803 0.99778508 0.99883086 0.49312405;
+	-6.27243332 -0.00072472 0.00044416 7.27170860 0.99778560 0.99883113 0.49312410;
+	-6.27243373 -0.00072455 0.00044405 7.27170918 0.99778612 0.99883140 0.49312419;
+	-6.27243414 -0.00072438 0.00044395 7.27170976 0.99778664 0.99883168 0.49312424;
+	-6.27243455 -0.00072421 0.00044384 7.27171034 0.99778716 0.99883195 0.49312429;
+	-6.27243496 -0.00072404 0.00044374 7.27171092 0.99778767 0.99883222 0.49312436;
+	-6.27243536 -0.00072387 0.00044364 7.27171150 0.99778819 0.99883250 0.49312441;
+	-6.27243577 -0.00072370 0.00044353 7.27171207 0.99778871 0.99883277 0.49312447;
+	-6.27243618 -0.00072353 0.00044343 7.27171265 0.99778923 0.99883304 0.49312454;
+	-6.27243659 -0.00072336 0.00044332 7.27171323 0.99778974 0.99883331 0.49312460;
+	-6.27243700 -0.00072319 0.00044322 7.27171380 0.99779026 0.99883359 0.49312464;
+	-6.27243740 -0.00072302 0.00044312 7.27171438 0.99779078 0.99883386 0.49312471;
+	-6.27243781 -0.00072285 0.00044301 7.27171495 0.99779129 0.99883413 0.49312476;
+	-6.27243822 -0.00072269 0.00044291 7.27171553 0.99779181 0.99883440 0.49312483;
+	-6.27243862 -0.00072252 0.00044281 7.27171611 0.99779232 0.99883468 0.49312489;
+	-6.27243903 -0.00072235 0.00044270 7.27171668 0.99779284 0.99883495 0.49312495;
+	-6.27243944 -0.00072218 0.00044260 7.27171726 0.99779336 0.99883522 0.49312500;
+	-6.27243984 -0.00072201 0.00044250 7.27171783 0.99779387 0.99883549 0.49312508;
+	-6.27244025 -0.00072184 0.00044239 7.27171840 0.99779438 0.99883576 0.49312514;
+	-6.27244065 -0.00072167 0.00044229 7.27171898 0.99779490 0.99883604 0.49312518;
+	-6.27244106 -0.00072151 0.00044219 7.27171955 0.99779541 0.99883631 0.49312525;
+	-6.27244146 -0.00072134 0.00044208 7.27172012 0.99779593 0.99883658 0.49312531;
+	-6.27244187 -0.00072117 0.00044198 7.27172070 0.99779644 0.99883685 0.49312537;
+	-6.27244227 -0.00072100 0.00044188 7.27172127 0.99779696 0.99883712 0.49312544;
+	-6.27244268 -0.00072083 0.00044177 7.27172184 0.99779747 0.99883739 0.49312550;
+	-6.27244308 -0.00072067 0.00044167 7.27172242 0.99779798 0.99883766 0.49312555;
+	-6.27244349 -0.00072050 0.00044157 7.27172299 0.99779849 0.99883793 0.49312563;
+	-6.27244389 -0.00072033 0.00044147 7.27172356 0.99779901 0.99883820 0.49312567;
+	-6.27244429 -0.00072016 0.00044136 7.27172413 0.99779952 0.99883847 0.49312573;
+	-6.27244470 -0.00072000 0.00044126 7.27172470 0.99780003 0.99883874 0.49312578;
+	-6.27244510 -0.00071983 0.00044116 7.27172527 0.99780054 0.99883901 0.49312585;
+	-6.27244550 -0.00071966 0.00044105 7.27172584 0.99780105 0.99883928 0.49312592;
+	-6.27244591 -0.00071949 0.00044095 7.27172641 0.99780157 0.99883955 0.49312598;
+	-6.27244631 -0.00071933 0.00044085 7.27172698 0.99780208 0.99883982 0.49312604;
+	-6.27244671 -0.00071916 0.00044075 7.27172755 0.99780259 0.99884009 0.49312608;
+	-6.27244712 -0.00071899 0.00044064 7.27172812 0.99780310 0.99884036 0.49312614;
+	-6.27244752 -0.00071883 0.00044054 7.27172869 0.99780361 0.99884063 0.49312622;
+	-6.27244792 -0.00071866 0.00044044 7.27172926 0.99780412 0.99884090 0.49312626;
+	-6.27244832 -0.00071849 0.00044034 7.27172983 0.99780463 0.99884117 0.49312632;
+	-6.27244872 -0.00071833 0.00044024 7.27173040 0.99780514 0.99884144 0.49312638;
+	-6.27244912 -0.00071816 0.00044013 7.27173097 0.99780565 0.99884171 0.49312645;
+	-6.27244953 -0.00071799 0.00044003 7.27173153 0.99780616 0.99884198 0.49312649;
+	-6.27244993 -0.00071783 0.00043993 7.27173210 0.99780667 0.99884225 0.49312657;
+	-6.27245033 -0.00071766 0.00043983 7.27173267 0.99780718 0.99884251 0.49312664;
+	-6.27245073 -0.00071749 0.00043972 7.27173323 0.99780768 0.99884278 0.49312669;
+	-6.27245113 -0.00071733 0.00043962 7.27173380 0.99780819 0.99884305 0.49312674;
+	-6.27245153 -0.00071716 0.00043952 7.27173437 0.99780870 0.99884332 0.49312680;
+	-6.27245193 -0.00071699 0.00043942 7.27173493 0.99780921 0.99884359 0.49312685;
+	-6.27245233 -0.00071683 0.00043932 7.27173550 0.99780972 0.99884385 0.49312691;
+	-6.27245273 -0.00071666 0.00043922 7.27173607 0.99781022 0.99884412 0.49312701;
+	-6.27245313 -0.00071650 0.00043911 7.27173663 0.99781073 0.99884439 0.49312703;
+	-6.27245353 -0.00071633 0.00043901 7.27173720 0.99781124 0.99884466 0.49312710;
+	-6.27245393 -0.00071617 0.00043891 7.27173776 0.99781174 0.99884492 0.49312716;
+	-6.27245432 -0.00071600 0.00043881 7.27173833 0.99781225 0.99884519 0.49312722;
+	-6.27245472 -0.00071583 0.00043871 7.27173889 0.99781276 0.99884546 0.49312728;
+	-6.27245512 -0.00071567 0.00043861 7.27173945 0.99781326 0.99884573 0.49312736;
+	-6.27245552 -0.00071550 0.00043850 7.27174002 0.99781377 0.99884599 0.49312741;
+	-6.27245592 -0.00071534 0.00043840 7.27174058 0.99781427 0.99884626 0.49312745;
+	-6.27245632 -0.00071517 0.00043830 7.27174114 0.99781478 0.99884653 0.49312752;
+	-6.27245671 -0.00071501 0.00043820 7.27174171 0.99781528 0.99884679 0.49312756;
+	-6.27245711 -0.00071484 0.00043810 7.27174227 0.99781579 0.99884706 0.49312763;
+	-6.27245751 -0.00071468 0.00043800 7.27174283 0.99781629 0.99884733 0.49312770;
+	-6.27245791 -0.00071451 0.00043790 7.27174339 0.99781680 0.99884759 0.49312773;
+	-6.27245830 -0.00071435 0.00043779 7.27174396 0.99781730 0.99884786 0.49312781;
+	-6.27245870 -0.00071418 0.00043769 7.27174452 0.99781781 0.99884812 0.49312788;
+	-6.27245910 -0.00071402 0.00043759 7.27174508 0.99781831 0.99884839 0.49312794;
+	-6.27245949 -0.00071385 0.00043749 7.27174564 0.99781881 0.99884866 0.49312798;
+	-6.27245989 -0.00071369 0.00043739 7.27174620 0.99781932 0.99884892 0.49312802;
+	-6.27246028 -0.00071352 0.00043729 7.27174676 0.99781982 0.99884919 0.49312810;
+	-6.27246068 -0.00071336 0.00043719 7.27174732 0.99782032 0.99884945 0.49312816;
+	-6.27246108 -0.00071320 0.00043709 7.27174788 0.99782083 0.99884972 0.49312820;
+	-6.27246147 -0.00071303 0.00043699 7.27174844 0.99782133 0.99884998 0.49312828;
+	-6.27246187 -0.00071287 0.00043689 7.27174900 0.99782183 0.99885025 0.49312834;
+	-6.27246226 -0.00071270 0.00043679 7.27174956 0.99782233 0.99885051 0.49312839;
+	-6.27246266 -0.00071254 0.00043669 7.27175012 0.99782283 0.99885078 0.49312847;
+	-6.27246305 -0.00071237 0.00043658 7.27175068 0.99782333 0.99885104 0.49312849;
+	-6.27246345 -0.00071221 0.00043648 7.27175123 0.99782384 0.99885131 0.49312857;
+	-6.27246384 -0.00071205 0.00043638 7.27175179 0.99782434 0.99885157 0.49312862;
+	-6.27246423 -0.00071188 0.00043628 7.27175235 0.99782484 0.99885183 0.49312870;
+	-6.27246463 -0.00071172 0.00043618 7.27175291 0.99782534 0.99885210 0.49312875;
+	-6.27246502 -0.00071156 0.00043608 7.27175347 0.99782584 0.99885236 0.49312878;
+	-6.27246541 -0.00071139 0.00043598 7.27175402 0.99782634 0.99885263 0.49312886;
+	-6.27246581 -0.00071123 0.00043588 7.27175458 0.99782684 0.99885289 0.49312892;
+	-6.27246620 -0.00071107 0.00043578 7.27175514 0.99782734 0.99885315 0.49312899;
+	-6.27246659 -0.00071090 0.00043568 7.27175569 0.99782784 0.99885342 0.49312906;
+	-6.27246699 -0.00071074 0.00043558 7.27175625 0.99782833 0.99885368 0.49312908;
+	-6.27246738 -0.00071058 0.00043548 7.27175680 0.99782883 0.99885394 0.49312914;
+	-6.27246777 -0.00071041 0.00043538 7.27175736 0.99782933 0.99885421 0.49312922;
+	-6.27246816 -0.00071025 0.00043528 7.27175791 0.99782983 0.99885447 0.49312926;
+	-6.27246856 -0.00071009 0.00043518 7.27175847 0.99783033 0.99885473 0.49312934;
+	-6.27246895 -0.00070992 0.00043508 7.27175902 0.99783083 0.99885499 0.49312938;
+	-6.27246934 -0.00070976 0.00043498 7.27175958 0.99783132 0.99885526 0.49312944;
+	-6.27246973 -0.00070960 0.00043488 7.27176013 0.99783182 0.99885552 0.49312948;
+	-6.27247012 -0.00070944 0.00043478 7.27176069 0.99783232 0.99885578 0.49312957;
+	-6.27247051 -0.00070927 0.00043468 7.27176124 0.99783282 0.99885604 0.49312962;
+	-6.27247090 -0.00070911 0.00043458 7.27176179 0.99783331 0.99885631 0.49312968;
+	-6.27247129 -0.00070895 0.00043448 7.27176235 0.99783381 0.99885657 0.49312972;
+	-6.27247168 -0.00070879 0.00043438 7.27176290 0.99783431 0.99885683 0.49312980;
+	-6.27247207 -0.00070862 0.00043428 7.27176345 0.99783480 0.99885709 0.49312985;
+	-6.27247246 -0.00070846 0.00043418 7.27176400 0.99783530 0.99885735 0.49312992;
+	-6.27247285 -0.00070830 0.00043409 7.27176456 0.99783579 0.99885762 0.49312999;
+	-6.27247324 -0.00070814 0.00043399 7.27176511 0.99783629 0.99885788 0.49313003;
+	-6.27247363 -0.00070798 0.00043389 7.27176566 0.99783678 0.99885814 0.49313009;
+	-6.27247402 -0.00070781 0.00043379 7.27176621 0.99783728 0.99885840 0.49313014;
+	-6.27247441 -0.00070765 0.00043369 7.27176676 0.99783777 0.99885866 0.49313021;
+	-6.27247480 -0.00070749 0.00043359 7.27176731 0.99783827 0.99885892 0.49313025;
+	-6.27247519 -0.00070733 0.00043349 7.27176786 0.99783876 0.99885918 0.49313031;
+	-6.27247558 -0.00070717 0.00043339 7.27176841 0.99783926 0.99885944 0.49313036;
+	-6.27247597 -0.00070701 0.00043329 7.27176896 0.99783975 0.99885970 0.49313043;
+	-6.27247636 -0.00070684 0.00043319 7.27176951 0.99784024 0.99885996 0.49313047;
+	-6.27247674 -0.00070668 0.00043309 7.27177006 0.99784074 0.99886022 0.49313056;
+	-6.27247713 -0.00070652 0.00043299 7.27177061 0.99784123 0.99886048 0.49313062;
+	-6.27247752 -0.00070636 0.00043290 7.27177116 0.99784172 0.99886074 0.49313067;
+	-6.27247791 -0.00070620 0.00043280 7.27177171 0.99784222 0.99886100 0.49313072;
+	-6.27247829 -0.00070604 0.00043270 7.27177226 0.99784271 0.99886126 0.49313077;
+	-6.27247868 -0.00070588 0.00043260 7.27177280 0.99784320 0.99886152 0.49313084;
+	-6.27247907 -0.00070572 0.00043250 7.27177335 0.99784369 0.99886178 0.49313089;
+	-6.27247945 -0.00070556 0.00043240 7.27177390 0.99784418 0.99886204 0.49313094;
+	-6.27247984 -0.00070539 0.00043230 7.27177445 0.99784468 0.99886230 0.49313101;
+	-6.27248023 -0.00070523 0.00043220 7.27177499 0.99784517 0.99886256 0.49313105;
+	-6.27248061 -0.00070507 0.00043211 7.27177554 0.99784566 0.99886282 0.49313111;
+	-6.27248100 -0.00070491 0.00043201 7.27177609 0.99784615 0.99886308 0.49313117;
+	-6.27248139 -0.00070475 0.00043191 7.27177663 0.99784664 0.99886334 0.49313123;
+	-6.27248177 -0.00070459 0.00043181 7.27177718 0.99784713 0.99886360 0.49313129;
+	-6.27248216 -0.00070443 0.00043171 7.27177773 0.99784762 0.99886386 0.49313133;
+	-6.27248254 -0.00070427 0.00043161 7.27177827 0.99784811 0.99886411 0.49313142;
+	-6.27248293 -0.00070411 0.00043152 7.27177882 0.99784860 0.99886437 0.49313147;
+	-6.27248331 -0.00070395 0.00043142 7.27177936 0.99784909 0.99886463 0.49313152;
+	-6.27248370 -0.00070379 0.00043132 7.27177991 0.99784958 0.99886489 0.49313157;
+	-6.27248408 -0.00070363 0.00043122 7.27178045 0.99785007 0.99886515 0.49313161;
+	-6.27248447 -0.00070347 0.00043112 7.27178099 0.99785056 0.99886541 0.49313168;
+	-6.27248485 -0.00070331 0.00043103 7.27178154 0.99785104 0.99886566 0.49313174;
+	-6.27248523 -0.00070315 0.00043093 7.27178208 0.99785153 0.99886592 0.49313183;
+	-6.27248562 -0.00070299 0.00043083 7.27178263 0.99785202 0.99886618 0.49313186;
+	-6.27248600 -0.00070283 0.00043073 7.27178317 0.99785251 0.99886644 0.49313191;
+	-6.27248638 -0.00070267 0.00043063 7.27178371 0.99785300 0.99886669 0.49313198;
+	-6.27248677 -0.00070251 0.00043054 7.27178425 0.99785348 0.99886695 0.49313204;
+	-6.27248715 -0.00070235 0.00043044 7.27178480 0.99785397 0.99886721 0.49313208;
+	-6.27248753 -0.00070219 0.00043034 7.27178534 0.99785446 0.99886747 0.49313214;
+	-6.27248792 -0.00070203 0.00043024 7.27178588 0.99785495 0.99886772 0.49313220;
+	-6.27248830 -0.00070188 0.00043014 7.27178642 0.99785543 0.99886798 0.49313224;
+	-6.27248868 -0.00070172 0.00043005 7.27178696 0.99785592 0.99886824 0.49313233;
+	-6.27248906 -0.00070156 0.00042995 7.27178751 0.99785641 0.99886849 0.49313235;
+	-6.27248945 -0.00070140 0.00042985 7.27178805 0.99785689 0.99886875 0.49313243;
+	-6.27248983 -0.00070124 0.00042975 7.27178859 0.99785738 0.99886901 0.49313250;
+	-6.27249021 -0.00070108 0.00042966 7.27178913 0.99785786 0.99886926 0.49313254;
+	-6.27249059 -0.00070092 0.00042956 7.27178967 0.99785835 0.99886952 0.49313259;
+	-6.27249097 -0.00070076 0.00042946 7.27179021 0.99785883 0.99886977 0.49313265;
+	-6.27249135 -0.00070060 0.00042937 7.27179075 0.99785932 0.99887003 0.49313270;
+	-6.27249173 -0.00070045 0.00042927 7.27179129 0.99785980 0.99887029 0.49313277;
+	-6.27249211 -0.00070029 0.00042917 7.27179183 0.99786029 0.99887054 0.49313282;
+	-6.27249250 -0.00070013 0.00042907 7.27179237 0.99786077 0.99887080 0.49313289;
+	-6.27249288 -0.00069997 0.00042898 7.27179290 0.99786126 0.99887105 0.49313291;
+	-6.27249326 -0.00069981 0.00042888 7.27179344 0.99786174 0.99887131 0.49313301;
+	-6.27249364 -0.00069965 0.00042878 7.27179398 0.99786222 0.99887156 0.49313305;
+	-6.27249402 -0.00069950 0.00042869 7.27179452 0.99786271 0.99887182 0.49313311;
+	-6.27249440 -0.00069934 0.00042859 7.27179506 0.99786319 0.99887207 0.49313316;
+	-6.27249477 -0.00069918 0.00042849 7.27179559 0.99786367 0.99887233 0.49313322;
+	-6.27249515 -0.00069902 0.00042840 7.27179613 0.99786415 0.99887258 0.49313329;
+	-6.27249553 -0.00069887 0.00042830 7.27179667 0.99786464 0.99887284 0.49313333;
+	-6.27249591 -0.00069871 0.00042820 7.27179720 0.99786512 0.99887309 0.49313340;
+	-6.27249629 -0.00069855 0.00042810 7.27179774 0.99786560 0.99887335 0.49313343;
+	-6.27249667 -0.00069839 0.00042801 7.27179828 0.99786608 0.99887360 0.49313349;
+	-6.27249705 -0.00069823 0.00042791 7.27179881 0.99786656 0.99887385 0.49313355;
+	-6.27249743 -0.00069808 0.00042781 7.27179935 0.99786705 0.99887411 0.49313361;
+	-6.27249780 -0.00069792 0.00042772 7.27179988 0.99786753 0.99887436 0.49313365;
+	-6.27249818 -0.00069776 0.00042762 7.27180042 0.99786801 0.99887462 0.49313373;
+	-6.27249856 -0.00069761 0.00042753 7.27180095 0.99786849 0.99887487 0.49313378;
+	-6.27249894 -0.00069745 0.00042743 7.27180149 0.99786897 0.99887512 0.49313382;
+	-6.27249931 -0.00069729 0.00042733 7.27180202 0.99786945 0.99887538 0.49313387;
+	-6.27249969 -0.00069713 0.00042724 7.27180256 0.99786993 0.99887563 0.49313395;
+	-6.27250007 -0.00069698 0.00042714 7.27180309 0.99787041 0.99887588 0.49313401;
+	-6.27250045 -0.00069682 0.00042704 7.27180363 0.99787089 0.99887614 0.49313405;
+	-6.27250082 -0.00069666 0.00042695 7.27180416 0.99787137 0.99887639 0.49313411;
+	-6.27250120 -0.00069651 0.00042685 7.27180469 0.99787185 0.99887664 0.49313417;
+	-6.27250158 -0.00069635 0.00042676 7.27180523 0.99787233 0.99887689 0.49313425;
+	-6.27250195 -0.00069619 0.00042666 7.27180576 0.99787281 0.99887715 0.49313428;
+	-6.27250233 -0.00069604 0.00042656 7.27180629 0.99787328 0.99887740 0.49313433;
+	-6.27250270 -0.00069588 0.00042647 7.27180682 0.99787376 0.99887765 0.49313436;
+	-6.27250308 -0.00069572 0.00042637 7.27180736 0.99787424 0.99887790 0.49313447;
+	-6.27250345 -0.00069557 0.00042628 7.27180789 0.99787472 0.99887816 0.49313453;
+	-6.27250383 -0.00069541 0.00042618 7.27180842 0.99787520 0.99887841 0.49313456;
+	-6.27250420 -0.00069525 0.00042608 7.27180895 0.99787567 0.99887866 0.49313463;
+	-6.27250458 -0.00069510 0.00042599 7.27180948 0.99787615 0.99887891 0.49313466;
+	-6.27250495 -0.00069494 0.00042589 7.27181001 0.99787663 0.99887916 0.49313471;
+	-6.27250533 -0.00069479 0.00042580 7.27181054 0.99787711 0.99887942 0.49313478;
+	-6.27250570 -0.00069463 0.00042570 7.27181107 0.99787758 0.99887967 0.49313484;
+	-6.27250608 -0.00069447 0.00042561 7.27181160 0.99787806 0.99887992 0.49313489;
+	-6.27250645 -0.00069432 0.00042551 7.27181213 0.99787854 0.99888017 0.49313499;
+	-6.27250683 -0.00069416 0.00042541 7.27181266 0.99787901 0.99888042 0.49313500;
+	-6.27250720 -0.00069401 0.00042532 7.27181319 0.99787949 0.99888067 0.49313506;
+	-6.27250757 -0.00069385 0.00042522 7.27181372 0.99787996 0.99888092 0.49313510;
+	-6.27250795 -0.00069370 0.00042513 7.27181425 0.99788044 0.99888117 0.49313518;
+	-6.27250832 -0.00069354 0.00042503 7.27181478 0.99788091 0.99888143 0.49313523;
+	-6.27250869 -0.00069339 0.00042494 7.27181531 0.99788139 0.99888168 0.49313528;
+	-6.27250906 -0.00069323 0.00042484 7.27181583 0.99788186 0.99888193 0.49313532;
+	-6.27250944 -0.00069308 0.00042475 7.27181636 0.99788234 0.99888218 0.49313537;
+	-6.27250981 -0.00069292 0.00042465 7.27181689 0.99788281 0.99888243 0.49313545;
+	-6.27251018 -0.00069277 0.00042456 7.27181742 0.99788329 0.99888268 0.49313551;
+	-6.27251055 -0.00069261 0.00042446 7.27181794 0.99788376 0.99888293 0.49313557;
+	-6.27251093 -0.00069246 0.00042437 7.27181847 0.99788423 0.99888318 0.49313560;
+	-6.27251130 -0.00069230 0.00042427 7.27181900 0.99788471 0.99888343 0.49313566;
+	-6.27251167 -0.00069215 0.00042418 7.27181952 0.99788518 0.99888368 0.49313574;
+	-6.27251204 -0.00069199 0.00042408 7.27182005 0.99788565 0.99888393 0.49313579;
+	-6.27251241 -0.00069184 0.00042399 7.27182058 0.99788613 0.99888418 0.49313583;
+	-6.27251278 -0.00069168 0.00042389 7.27182110 0.99788660 0.99888443 0.49313587;
+	-6.27251315 -0.00069153 0.00042380 7.27182163 0.99788707 0.99888468 0.49313593;
+	-6.27251353 -0.00069137 0.00042370 7.27182215 0.99788754 0.99888492 0.49313600;
+	-6.27251390 -0.00069122 0.00042361 7.27182268 0.99788801 0.99888517 0.49313604;
+	-6.27251427 -0.00069106 0.00042351 7.27182320 0.99788849 0.99888542 0.49313613;
+	-6.27251464 -0.00069091 0.00042342 7.27182373 0.99788896 0.99888567 0.49313616;
+	-6.27251501 -0.00069076 0.00042332 7.27182425 0.99788943 0.99888592 0.49313621;
+	-6.27251538 -0.00069060 0.00042323 7.27182478 0.99788990 0.99888617 0.49313628;
+	-6.27251575 -0.00069045 0.00042314 7.27182530 0.99789037 0.99888642 0.49313634;
+	-6.27251612 -0.00069029 0.00042304 7.27182582 0.99789084 0.99888667 0.49313637;
+	-6.27251649 -0.00069014 0.00042295 7.27182635 0.99789131 0.99888691 0.49313644;
+	-6.27251685 -0.00068999 0.00042285 7.27182687 0.99789178 0.99888716 0.49313651;
+	-6.27251722 -0.00068983 0.00042276 7.27182739 0.99789225 0.99888741 0.49313656;
+	-6.27251759 -0.00068968 0.00042266 7.27182791 0.99789272 0.99888766 0.49313664;
+	-6.27251796 -0.00068952 0.00042257 7.27182844 0.99789319 0.99888791 0.49313666;
+	-6.27251833 -0.00068937 0.00042248 7.27182896 0.99789366 0.99888815 0.49313670;
+	-6.27251870 -0.00068922 0.00042238 7.27182948 0.99789413 0.99888840 0.49313677;
+	-6.27251907 -0.00068906 0.00042229 7.27183000 0.99789460 0.99888865 0.49313683;
+	-6.27251943 -0.00068891 0.00042219 7.27183052 0.99789507 0.99888890 0.49313687;
+	-6.27251980 -0.00068876 0.00042210 7.27183104 0.99789554 0.99888914 0.49313691;
+	-6.27252017 -0.00068860 0.00042200 7.27183157 0.99789601 0.99888939 0.49313700;
+	-6.27252054 -0.00068845 0.00042191 7.27183209 0.99789647 0.99888964 0.49313706;
+	-6.27252091 -0.00068830 0.00042182 7.27183261 0.99789694 0.99888988 0.49313707;
+	-6.27252127 -0.00068815 0.00042172 7.27183313 0.99789741 0.99889013 0.49313711;
+	-6.27252164 -0.00068799 0.00042163 7.27183365 0.99789788 0.99889038 0.49313720;
+	-6.27252201 -0.00068784 0.00042154 7.27183417 0.99789835 0.99889062 0.49313727;
+	-6.27252237 -0.00068769 0.00042144 7.27183469 0.99789881 0.99889087 0.49313733;
+	-6.27252274 -0.00068753 0.00042135 7.27183521 0.99789928 0.99889112 0.49313737;
+	-6.27252311 -0.00068738 0.00042125 7.27183572 0.99789975 0.99889136 0.49313744;
+	-6.27252347 -0.00068723 0.00042116 7.27183624 0.99790021 0.99889161 0.49313749;
+	-6.27252384 -0.00068708 0.00042107 7.27183676 0.99790068 0.99889186 0.49313754;
+	-6.27252420 -0.00068692 0.00042097 7.27183728 0.99790115 0.99889210 0.49313760;
+	-6.27252457 -0.00068677 0.00042088 7.27183780 0.99790161 0.99889235 0.49313767;
+	-6.27252494 -0.00068662 0.00042079 7.27183832 0.99790208 0.99889259 0.49313771;
+	-6.27252530 -0.00068647 0.00042069 7.27183883 0.99790254 0.99889284 0.49313775;
+	-6.27252567 -0.00068631 0.00042060 7.27183935 0.99790301 0.99889309 0.49313782;
+	-6.27252603 -0.00068616 0.00042051 7.27183987 0.99790347 0.99889333 0.49313786;
+	-6.27252640 -0.00068601 0.00042041 7.27184039 0.99790394 0.99889358 0.49313791;
+	-6.27252676 -0.00068586 0.00042032 7.27184090 0.99790440 0.99889382 0.49313797;
+	-6.27252712 -0.00068571 0.00042023 7.27184142 0.99790487 0.99889407 0.49313801;
+	-6.27252749 -0.00068555 0.00042013 7.27184193 0.99790533 0.99889431 0.49313810;
+	-6.27252785 -0.00068540 0.00042004 7.27184245 0.99790579 0.99889456 0.49313815;
+	-6.27252822 -0.00068525 0.00041995 7.27184297 0.99790626 0.99889480 0.49313818;
+	-6.27252858 -0.00068510 0.00041985 7.27184348 0.99790672 0.99889505 0.49313824;
+	-6.27252895 -0.00068495 0.00041976 7.27184400 0.99790719 0.99889529 0.49313828;
+	-6.27252931 -0.00068480 0.00041967 7.27184451 0.99790765 0.99889553 0.49313835;
+	-6.27252967 -0.00068464 0.00041958 7.27184503 0.99790811 0.99889578 0.49313842;
+	-6.27253004 -0.00068449 0.00041948 7.27184554 0.99790857 0.99889602 0.49313845;
+	-6.27253040 -0.00068434 0.00041939 7.27184606 0.99790904 0.99889627 0.49313853;
+	-6.27253076 -0.00068419 0.00041930 7.27184657 0.99790950 0.99889651 0.49313854;
+	-6.27253112 -0.00068404 0.00041920 7.27184708 0.99790996 0.99889676 0.49313861;
+	-6.27253149 -0.00068389 0.00041911 7.27184760 0.99791042 0.99889700 0.49313867;
+	-6.27253185 -0.00068374 0.00041902 7.27184811 0.99791089 0.99889724 0.49313874;
+	-6.27253221 -0.00068359 0.00041893 7.27184862 0.99791135 0.99889749 0.49313876;
+	-6.27253257 -0.00068344 0.00041883 7.27184914 0.99791181 0.99889773 0.49313881;
+	-6.27253293 -0.00068328 0.00041874 7.27184965 0.99791227 0.99889797 0.49313886;
+	-6.27253330 -0.00068313 0.00041865 7.27185016 0.99791273 0.99889822 0.49313893;
+	-6.27253366 -0.00068298 0.00041856 7.27185068 0.99791319 0.99889846 0.49313897;
+	-6.27253402 -0.00068283 0.00041846 7.27185119 0.99791365 0.99889870 0.49313904;
+	-6.27253438 -0.00068268 0.00041837 7.27185170 0.99791411 0.99889895 0.49313909;
+	-6.27253474 -0.00068253 0.00041828 7.27185221 0.99791457 0.99889919 0.49313915;
+	-6.27253510 -0.00068238 0.00041819 7.27185272 0.99791503 0.99889943 0.49313920;
+	-6.27253546 -0.00068223 0.00041810 7.27185323 0.99791549 0.99889967 0.49313924;
+	-6.27253582 -0.00068208 0.00041800 7.27185374 0.99791595 0.99889992 0.49313932;
+	-6.27253618 -0.00068193 0.00041791 7.27185425 0.99791641 0.99890016 0.49313937;
+	-6.27253654 -0.00068178 0.00041782 7.27185477 0.99791687 0.99890040 0.49313944;
+	-6.27253690 -0.00068163 0.00041773 7.27185528 0.99791733 0.99890064 0.49313947;
+	-6.27253726 -0.00068148 0.00041763 7.27185579 0.99791779 0.99890089 0.49313953;
+	-6.27253762 -0.00068133 0.00041754 7.27185630 0.99791825 0.99890113 0.49313960;
+	-6.27253798 -0.00068118 0.00041745 7.27185680 0.99791871 0.99890137 0.49313964;
+	-6.27253834 -0.00068103 0.00041736 7.27185731 0.99791916 0.99890161 0.49313969;
+	-6.27253870 -0.00068088 0.00041727 7.27185782 0.99791962 0.99890185 0.49313973;
+	-6.27253906 -0.00068073 0.00041718 7.27185833 0.99792008 0.99890209 0.49313978;
+	-6.27253942 -0.00068058 0.00041708 7.27185884 0.99792054 0.99890234 0.49313983;
+	-6.27253978 -0.00068043 0.00041699 7.27185935 0.99792099 0.99890258 0.49313991;
+	-6.27254014 -0.00068028 0.00041690 7.27185986 0.99792145 0.99890282 0.49313998;
+	-6.27254050 -0.00068013 0.00041681 7.27186036 0.99792191 0.99890306 0.49314002;
+	-6.27254086 -0.00067998 0.00041672 7.27186087 0.99792237 0.99890330 0.49314008;
+	-6.27254121 -0.00067983 0.00041662 7.27186138 0.99792282 0.99890354 0.49314012;
+	-6.27254157 -0.00067968 0.00041653 7.27186189 0.99792328 0.99890378 0.49314018;
+	-6.27254193 -0.00067953 0.00041644 7.27186239 0.99792373 0.99890402 0.49314019;
+	-6.27254229 -0.00067939 0.00041635 7.27186290 0.99792419 0.99890426 0.49314025;
+	-6.27254264 -0.00067924 0.00041626 7.27186341 0.99792465 0.99890450 0.49314034;
+	-6.27254300 -0.00067909 0.00041617 7.27186391 0.99792510 0.99890474 0.49314040;
+	-6.27254336 -0.00067894 0.00041608 7.27186442 0.99792556 0.99890499 0.49314044;
+	-6.27254372 -0.00067879 0.00041598 7.27186493 0.99792601 0.99890523 0.49314049;
+	-6.27254407 -0.00067864 0.00041589 7.27186543 0.99792647 0.99890547 0.49314054;
+	-6.27254443 -0.00067849 0.00041580 7.27186594 0.99792692 0.99890571 0.49314058;
+	-6.27254479 -0.00067834 0.00041571 7.27186644 0.99792738 0.99890595 0.49314062;
+	-6.27254514 -0.00067819 0.00041562 7.27186695 0.99792783 0.99890618 0.49314070;
+	-6.27254550 -0.00067805 0.00041553 7.27186745 0.99792828 0.99890642 0.49314075;
+	-6.27254585 -0.00067790 0.00041544 7.27186796 0.99792874 0.99890666 0.49314079;
+	-6.27254621 -0.00067775 0.00041535 7.27186846 0.99792919 0.99890690 0.49314085;
+	-6.27254657 -0.00067760 0.00041526 7.27186897 0.99792965 0.99890714 0.49314090;
+	-6.27254692 -0.00067745 0.00041516 7.27186947 0.99793010 0.99890738 0.49314094;
+	-6.27254728 -0.00067730 0.00041507 7.27186997 0.99793055 0.99890762 0.49314100;
+	-6.27254763 -0.00067716 0.00041498 7.27187048 0.99793101 0.99890786 0.49314106;
+	-6.27254799 -0.00067701 0.00041489 7.27187098 0.99793146 0.99890810 0.49314111;
+	-6.27254834 -0.00067686 0.00041480 7.27187148 0.99793191 0.99890834 0.49314118;
+	-6.27254870 -0.00067671 0.00041471 7.27187199 0.99793236 0.99890858 0.49314123;
+	-6.27254905 -0.00067656 0.00041462 7.27187249 0.99793282 0.99890882 0.49314127;
+	-6.27254941 -0.00067642 0.00041453 7.27187299 0.99793327 0.99890905 0.49314132;
+	-6.27254976 -0.00067627 0.00041444 7.27187349 0.99793372 0.99890929 0.49314138;
+	-6.27255012 -0.00067612 0.00041435 7.27187399 0.99793417 0.99890953 0.49314144;
+	-6.27255047 -0.00067597 0.00041426 7.27187450 0.99793462 0.99890977 0.49314149;
+	-6.27255082 -0.00067583 0.00041417 7.27187500 0.99793507 0.99891001 0.49314155;
+	-6.27255118 -0.00067568 0.00041408 7.27187550 0.99793552 0.99891025 0.49314159;
+	-6.27255153 -0.00067553 0.00041399 7.27187600 0.99793597 0.99891048 0.49314164;
+	-6.27255188 -0.00067538 0.00041390 7.27187650 0.99793643 0.99891072 0.49314169;
+	-6.27255224 -0.00067524 0.00041381 7.27187700 0.99793688 0.99891096 0.49314176;
+	-6.27255259 -0.00067509 0.00041372 7.27187750 0.99793733 0.99891120 0.49314181;
+	-6.27255294 -0.00067494 0.00041362 7.27187800 0.99793778 0.99891143 0.49314185;
+	-6.27255330 -0.00067479 0.00041353 7.27187850 0.99793823 0.99891167 0.49314190;
+	-6.27255365 -0.00067465 0.00041344 7.27187900 0.99793868 0.99891191 0.49314197;
+	-6.27255400 -0.00067450 0.00041335 7.27187950 0.99793912 0.99891215 0.49314200;
+	-6.27255435 -0.00067435 0.00041326 7.27188000 0.99793957 0.99891238 0.49314208;
+	-6.27255470 -0.00067421 0.00041317 7.27188050 0.99794002 0.99891262 0.49314213;
+	-6.27255506 -0.00067406 0.00041308 7.27188100 0.99794047 0.99891286 0.49314217;
+	-6.27255541 -0.00067391 0.00041299 7.27188150 0.99794092 0.99891309 0.49314220;
+	-6.27255576 -0.00067377 0.00041290 7.27188199 0.99794137 0.99891333 0.49314225;
+	-6.27255611 -0.00067362 0.00041281 7.27188249 0.99794182 0.99891357 0.49314232;
+	-6.27255646 -0.00067347 0.00041272 7.27188299 0.99794227 0.99891380 0.49314238;
+	-6.27255681 -0.00067333 0.00041263 7.27188349 0.99794271 0.99891404 0.49314241;
+	-6.27255717 -0.00067318 0.00041254 7.27188398 0.99794316 0.99891428 0.49314247;
+	-6.27255752 -0.00067303 0.00041245 7.27188448 0.99794361 0.99891451 0.49314253;
+	-6.27255787 -0.00067289 0.00041236 7.27188498 0.99794406 0.99891475 0.49314258;
+	-6.27255822 -0.00067274 0.00041228 7.27188548 0.99794450 0.99891498 0.49314263;
+	-6.27255857 -0.00067260 0.00041219 7.27188597 0.99794495 0.99891522 0.49314268;
+	-6.27255892 -0.00067245 0.00041210 7.27188647 0.99794540 0.99891545 0.49314274;
+	-6.27255927 -0.00067230 0.00041201 7.27188696 0.99794584 0.99891569 0.49314280;
+	-6.27255962 -0.00067216 0.00041192 7.27188746 0.99794629 0.99891593 0.49314284;
+	-6.27255997 -0.00067201 0.00041183 7.27188796 0.99794673 0.99891616 0.49314287;
+	-6.27256032 -0.00067187 0.00041174 7.27188845 0.99794718 0.99891640 0.49314297;
+	-6.27256067 -0.00067172 0.00041165 7.27188895 0.99794763 0.99891663 0.49314303;
+	-6.27256102 -0.00067157 0.00041156 7.27188944 0.99794807 0.99891687 0.49314307;
+	-6.27256137 -0.00067143 0.00041147 7.27188994 0.99794852 0.99891710 0.49314312;
+	-6.27256171 -0.00067128 0.00041138 7.27189043 0.99794896 0.99891734 0.49314315;
+	-6.27256206 -0.00067114 0.00041129 7.27189093 0.99794941 0.99891757 0.49314322;
+	-6.27256241 -0.00067099 0.00041120 7.27189142 0.99794985 0.99891781 0.49314325;
+	-6.27256276 -0.00067085 0.00041111 7.27189191 0.99795030 0.99891804 0.49314333;
+	-6.27256311 -0.00067070 0.00041102 7.27189241 0.99795074 0.99891828 0.49314337;
+	-6.27256346 -0.00067056 0.00041093 7.27189290 0.99795119 0.99891851 0.49314340;
+	-6.27256381 -0.00067041 0.00041085 7.27189339 0.99795163 0.99891874 0.49314348;
+	-6.27256415 -0.00067027 0.00041076 7.27189389 0.99795207 0.99891898 0.49314353;
+	-6.27256450 -0.00067012 0.00041067 7.27189438 0.99795252 0.99891921 0.49314358;
+	-6.27256485 -0.00066998 0.00041058 7.27189487 0.99795296 0.99891945 0.49314365;
+	-6.27256520 -0.00066983 0.00041049 7.27189537 0.99795340 0.99891968 0.49314368;
+	-6.27256554 -0.00066969 0.00041040 7.27189586 0.99795385 0.99891991 0.49314376;
+	-6.27256589 -0.00066954 0.00041031 7.27189635 0.99795429 0.99892015 0.49314379;
+	-6.27256624 -0.00066940 0.00041022 7.27189684 0.99795473 0.99892038 0.49314383;
+	-6.27256658 -0.00066925 0.00041013 7.27189733 0.99795517 0.99892061 0.49314389;
+	-6.27256693 -0.00066911 0.00041005 7.27189782 0.99795562 0.99892085 0.49314395;
+	-6.27256728 -0.00066896 0.00040996 7.27189832 0.99795606 0.99892108 0.49314398;
+	-6.27256762 -0.00066882 0.00040987 7.27189881 0.99795650 0.99892131 0.49314403;
+	-6.27256797 -0.00066867 0.00040978 7.27189930 0.99795694 0.99892155 0.49314409;
+	-6.27256832 -0.00066853 0.00040969 7.27189979 0.99795738 0.99892178 0.49314415;
+	-6.27256866 -0.00066838 0.00040960 7.27190028 0.99795782 0.99892201 0.49314419;
+	-6.27256901 -0.00066824 0.00040951 7.27190077 0.99795827 0.99892225 0.49314425;
+	-6.27256935 -0.00066810 0.00040943 7.27190126 0.99795871 0.99892248 0.49314428;
+	-6.27256970 -0.00066795 0.00040934 7.27190175 0.99795915 0.99892271 0.49314436;
+	-6.27257004 -0.00066781 0.00040925 7.27190224 0.99795959 0.99892294 0.49314439;
+	-6.27257039 -0.00066766 0.00040916 7.27190273 0.99796003 0.99892318 0.49314446;
+	-6.27257073 -0.00066752 0.00040907 7.27190322 0.99796047 0.99892341 0.49314452;
+	-6.27257108 -0.00066738 0.00040898 7.27190370 0.99796091 0.99892364 0.49314453;
+	-6.27257142 -0.00066723 0.00040890 7.27190419 0.99796135 0.99892387 0.49314460;
+	-6.27257177 -0.00066709 0.00040881 7.27190468 0.99796179 0.99892410 0.49314466;
+	-6.27257211 -0.00066694 0.00040872 7.27190517 0.99796223 0.99892434 0.49314470;
+	-6.27257246 -0.00066680 0.00040863 7.27190566 0.99796267 0.99892457 0.49314476;
+	-6.27257280 -0.00066666 0.00040854 7.27190615 0.99796311 0.99892480 0.49314482;
+	-6.27257315 -0.00066651 0.00040846 7.27190663 0.99796354 0.99892503 0.49314486;
+	-6.27257349 -0.00066637 0.00040837 7.27190712 0.99796398 0.99892526 0.49314490;
+	-6.27257383 -0.00066623 0.00040828 7.27190761 0.99796442 0.99892549 0.49314498;
+	-6.27257418 -0.00066608 0.00040819 7.27190809 0.99796486 0.99892573 0.49314501;
+	-6.27257452 -0.00066594 0.00040810 7.27190858 0.99796530 0.99892596 0.49314505;
+	-6.27257486 -0.00066580 0.00040802 7.27190907 0.99796574 0.99892619 0.49314512;
+	-6.27257521 -0.00066565 0.00040793 7.27190955 0.99796617 0.99892642 0.49314515;
+	-6.27257555 -0.00066551 0.00040784 7.27191004 0.99796661 0.99892665 0.49314521;
+	-6.27257589 -0.00066537 0.00040775 7.27191053 0.99796705 0.99892688 0.49314528;
+	-6.27257623 -0.00066522 0.00040766 7.27191101 0.99796748 0.99892711 0.49314532;
+	-6.27257658 -0.00066508 0.00040758 7.27191150 0.99796792 0.99892734 0.49314537;
+	-6.27257692 -0.00066494 0.00040749 7.27191198 0.99796836 0.99892757 0.49314541;
+	-6.27257726 -0.00066480 0.00040740 7.27191247 0.99796880 0.99892780 0.49314547;
+	-6.27257760 -0.00066465 0.00040731 7.27191295 0.99796923 0.99892803 0.49314555;
+	-6.27257795 -0.00066451 0.00040723 7.27191344 0.99796967 0.99892826 0.49314558;
+	-6.27257829 -0.00066437 0.00040714 7.27191392 0.99797010 0.99892849 0.49314564;
+	-6.27257863 -0.00066422 0.00040705 7.27191440 0.99797054 0.99892872 0.49314568;
+	-6.27257897 -0.00066408 0.00040696 7.27191489 0.99797098 0.99892895 0.49314573;
+	-6.27257931 -0.00066394 0.00040688 7.27191537 0.99797141 0.99892918 0.49314579;
+	-6.27257965 -0.00066380 0.00040679 7.27191586 0.99797185 0.99892941 0.49314582;
+	-6.27257999 -0.00066366 0.00040670 7.27191634 0.99797228 0.99892964 0.49314588;
+	-6.27258033 -0.00066351 0.00040662 7.27191682 0.99797272 0.99892987 0.49314593;
+	-6.27258068 -0.00066337 0.00040653 7.27191730 0.99797315 0.99893010 0.49314598;
+	-6.27258102 -0.00066323 0.00040644 7.27191779 0.99797358 0.99893033 0.49314603;
+	-6.27258136 -0.00066309 0.00040635 7.27191827 0.99797402 0.99893056 0.49314608;
+	-6.27258170 -0.00066294 0.00040627 7.27191875 0.99797445 0.99893079 0.49314611;
+	-6.27258204 -0.00066280 0.00040618 7.27191923 0.99797489 0.99893102 0.49314621;
+	-6.27258238 -0.00066266 0.00040609 7.27191972 0.99797532 0.99893125 0.49314623;
+	-6.27258272 -0.00066252 0.00040601 7.27192020 0.99797575 0.99893148 0.49314626;
+	-6.27258306 -0.00066238 0.00040592 7.27192068 0.99797619 0.99893170 0.49314635;
+	-6.27258340 -0.00066224 0.00040583 7.27192116 0.99797662 0.99893193 0.49314639;
+	-6.27258373 -0.00066209 0.00040574 7.27192164 0.99797705 0.99893216 0.49314644;
+	-6.27258407 -0.00066195 0.00040566 7.27192212 0.99797749 0.99893239 0.49314649;
+	-6.27258441 -0.00066181 0.00040557 7.27192260 0.99797792 0.99893262 0.49314651;
+	-6.27258475 -0.00066167 0.00040548 7.27192308 0.99797835 0.99893285 0.49314660;
+	-6.27258509 -0.00066153 0.00040540 7.27192356 0.99797878 0.99893307 0.49314663;
+	-6.27258543 -0.00066139 0.00040531 7.27192404 0.99797922 0.99893330 0.49314669;
+	-6.27258577 -0.00066125 0.00040522 7.27192452 0.99797965 0.99893353 0.49314673;
+	-6.27258611 -0.00066110 0.00040514 7.27192500 0.99798008 0.99893376 0.49314679;
+	-6.27258644 -0.00066096 0.00040505 7.27192548 0.99798051 0.99893399 0.49314686;
+	-6.27258678 -0.00066082 0.00040496 7.27192596 0.99798094 0.99893421 0.49314689;
+	-6.27258712 -0.00066068 0.00040488 7.27192644 0.99798137 0.99893444 0.49314694;
+	-6.27258746 -0.00066054 0.00040479 7.27192692 0.99798181 0.99893467 0.49314700;
+	-6.27258780 -0.00066040 0.00040471 7.27192740 0.99798224 0.99893490 0.49314705;
+	-6.27258813 -0.00066026 0.00040462 7.27192788 0.99798267 0.99893512 0.49314708;
+	-6.27258847 -0.00066012 0.00040453 7.27192835 0.99798310 0.99893535 0.49314712;
+	-6.27258881 -0.00065998 0.00040445 7.27192883 0.99798353 0.99893558 0.49314719;
+	-6.27258914 -0.00065984 0.00040436 7.27192931 0.99798396 0.99893580 0.49314727;
+	-6.27258948 -0.00065970 0.00040427 7.27192979 0.99798439 0.99893603 0.49314727;
+	-6.27258982 -0.00065955 0.00040419 7.27193026 0.99798482 0.99893626 0.49314731;
+	-6.27259015 -0.00065941 0.00040410 7.27193074 0.99798525 0.99893648 0.49314740;
+	-6.27259049 -0.00065927 0.00040401 7.27193122 0.99798568 0.99893671 0.49314745;
+	-6.27259083 -0.00065913 0.00040393 7.27193169 0.99798610 0.99893694 0.49314746;
+	-6.27259116 -0.00065899 0.00040384 7.27193217 0.99798653 0.99893716 0.49314754;
+	-6.27259150 -0.00065885 0.00040376 7.27193265 0.99798696 0.99893739 0.49314761;
+	-6.27259184 -0.00065871 0.00040367 7.27193312 0.99798739 0.99893762 0.49314766;
+	-6.27259217 -0.00065857 0.00040358 7.27193360 0.99798782 0.99893784 0.49314769;
+	-6.27259251 -0.00065843 0.00040350 7.27193407 0.99798825 0.99893807 0.49314775;
+	-6.27259284 -0.00065829 0.00040341 7.27193455 0.99798868 0.99893829 0.49314778;
+	-6.27259318 -0.00065815 0.00040333 7.27193502 0.99798910 0.99893852 0.49314784;
+	-6.27259351 -0.00065801 0.00040324 7.27193550 0.99798953 0.99893875 0.49314788;
+	-6.27259385 -0.00065787 0.00040316 7.27193597 0.99798996 0.99893897 0.49314794;
+	-6.27259418 -0.00065773 0.00040307 7.27193645 0.99799039 0.99893920 0.49314799;
+	-6.27259452 -0.00065759 0.00040298 7.27193692 0.99799081 0.99893942 0.49314805;
+	-6.27259485 -0.00065745 0.00040290 7.27193740 0.99799124 0.99893965 0.49314807;
+	-6.27259519 -0.00065731 0.00040281 7.27193787 0.99799167 0.99893987 0.49314813;
+	-6.27259552 -0.00065717 0.00040273 7.27193835 0.99799209 0.99894010 0.49314822;
+	-6.27259585 -0.00065703 0.00040264 7.27193882 0.99799252 0.99894032 0.49314825;
+	-6.27259619 -0.00065690 0.00040256 7.27193929 0.99799295 0.99894055 0.49314830;
+	-6.27259652 -0.00065676 0.00040247 7.27193977 0.99799337 0.99894077 0.49314836;
+	-6.27259686 -0.00065662 0.00040239 7.27194024 0.99799380 0.99894100 0.49314839;
+	-6.27259719 -0.00065648 0.00040230 7.27194071 0.99799422 0.99894122 0.49314844;
+	-6.27259752 -0.00065634 0.00040221 7.27194118 0.99799465 0.99894145 0.49314848;
+	-6.27259786 -0.00065620 0.00040213 7.27194166 0.99799507 0.99894167 0.49314852;
+	-6.27259819 -0.00065606 0.00040204 7.27194213 0.99799550 0.99894190 0.49314858;
+	-6.27259852 -0.00065592 0.00040196 7.27194260 0.99799593 0.99894212 0.49314864;
+	-6.27259885 -0.00065578 0.00040187 7.27194307 0.99799635 0.99894234 0.49314867;
+	-6.27259919 -0.00065564 0.00040179 7.27194354 0.99799677 0.99894257 0.49314872;
+	-6.27259952 -0.00065550 0.00040170 7.27194402 0.99799720 0.99894279 0.49314880;
+	-6.27259985 -0.00065537 0.00040162 7.27194449 0.99799762 0.99894302 0.49314880;
+	-6.27260018 -0.00065523 0.00040153 7.27194496 0.99799805 0.99894324 0.49314888;
+	-6.27260052 -0.00065509 0.00040145 7.27194543 0.99799847 0.99894346 0.49314897;
+	-6.27260085 -0.00065495 0.00040136 7.27194590 0.99799889 0.99894369 0.49314899;
+	-6.27260118 -0.00065481 0.00040128 7.27194637 0.99799932 0.99894391 0.49314902;
+	-6.27260151 -0.00065467 0.00040119 7.27194684 0.99799974 0.99894413 0.49314908;
+	-6.27260184 -0.00065453 0.00040111 7.27194731 0.99800016 0.99894436 0.49314911;
+	-6.27260217 -0.00065440 0.00040102 7.27194778 0.99800059 0.99894458 0.49314920;
+	-6.27260251 -0.00065426 0.00040094 7.27194825 0.99800101 0.99894480 0.49314922;
+	-6.27260284 -0.00065412 0.00040085 7.27194872 0.99800143 0.99894503 0.49314928;
+	-6.27260317 -0.00065398 0.00040077 7.27194919 0.99800186 0.99894525 0.49314931;
+	-6.27260350 -0.00065384 0.00040068 7.27194966 0.99800228 0.99894547 0.49314937;
+	-6.27260383 -0.00065370 0.00040060 7.27195013 0.99800270 0.99894570 0.49314942;
+	-6.27260416 -0.00065357 0.00040051 7.27195059 0.99800312 0.99894592 0.49314947;
+	-6.27260449 -0.00065343 0.00040043 7.27195106 0.99800354 0.99894614 0.49314952;
+	-6.27260482 -0.00065329 0.00040035 7.27195153 0.99800397 0.99894636 0.49314960;
+	-6.27260515 -0.00065315 0.00040026 7.27195200 0.99800439 0.99894659 0.49314963;
+	-6.27260548 -0.00065302 0.00040018 7.27195247 0.99800481 0.99894681 0.49314965;
+	-6.27260581 -0.00065288 0.00040009 7.27195293 0.99800523 0.99894703 0.49314972;
+	-6.27260614 -0.00065274 0.00040001 7.27195340 0.99800565 0.99894725 0.49314975;
+	-6.27260647 -0.00065260 0.00039992 7.27195387 0.99800607 0.99894747 0.49314983;
+	-6.27260680 -0.00065246 0.00039984 7.27195434 0.99800649 0.99894770 0.49314987;
+	-6.27260713 -0.00065233 0.00039975 7.27195480 0.99800691 0.99894792 0.49314994;
+	-6.27260746 -0.00065219 0.00039967 7.27195527 0.99800733 0.99894814 0.49314996;
+	-6.27260779 -0.00065205 0.00039959 7.27195573 0.99800775 0.99894836 0.49314998;
+	-6.27260812 -0.00065192 0.00039950 7.27195620 0.99800817 0.99894858 0.49315004;
+	-6.27260844 -0.00065178 0.00039942 7.27195667 0.99800859 0.99894880 0.49315011;
+	-6.27260877 -0.00065164 0.00039933 7.27195713 0.99800901 0.99894903 0.49315016;
+	-6.27260910 -0.00065150 0.00039925 7.27195760 0.99800943 0.99894925 0.49315020;
+	-6.27260943 -0.00065137 0.00039917 7.27195806 0.99800985 0.99894947 0.49315028;
+	-6.27260976 -0.00065123 0.00039908 7.27195853 0.99801027 0.99894969 0.49315027;
+	-6.27261009 -0.00065109 0.00039900 7.27195899 0.99801069 0.99894991 0.49315035;
+	-6.27261041 -0.00065096 0.00039891 7.27195946 0.99801110 0.99895013 0.49315041;
+	-6.27261074 -0.00065082 0.00039883 7.27195992 0.99801152 0.99895035 0.49315047;
+	-6.27261107 -0.00065068 0.00039875 7.27196039 0.99801194 0.99895057 0.49315053;
+	-6.27261140 -0.00065055 0.00039866 7.27196085 0.99801236 0.99895079 0.49315055;
+	-6.27261172 -0.00065041 0.00039858 7.27196132 0.99801278 0.99895101 0.49315059;
+	-6.27261205 -0.00065027 0.00039849 7.27196178 0.99801320 0.99895123 0.49315063;
+	-6.27261238 -0.00065014 0.00039841 7.27196224 0.99801361 0.99895145 0.49315070;
+	-6.27261271 -0.00065000 0.00039833 7.27196271 0.99801403 0.99895167 0.49315074;
+	-6.27261303 -0.00064986 0.00039824 7.27196317 0.99801445 0.99895189 0.49315081;
+	-6.27261336 -0.00064973 0.00039816 7.27196363 0.99801486 0.99895212 0.49315083;
+	-6.27261369 -0.00064959 0.00039808 7.27196410 0.99801528 0.99895233 0.49315088;
+	-6.27261401 -0.00064945 0.00039799 7.27196456 0.99801570 0.99895255 0.49315095;
+	-6.27261434 -0.00064932 0.00039791 7.27196502 0.99801611 0.99895277 0.49315102;
+	-6.27261466 -0.00064918 0.00039782 7.27196548 0.99801653 0.99895299 0.49315101;
+	-6.27261499 -0.00064904 0.00039774 7.27196595 0.99801695 0.99895321 0.49315109;
+	-6.27261532 -0.00064891 0.00039766 7.27196641 0.99801736 0.99895343 0.49315112;
+	-6.27261564 -0.00064877 0.00039757 7.27196687 0.99801778 0.99895365 0.49315120;
+	-6.27261597 -0.00064864 0.00039749 7.27196733 0.99801819 0.99895387 0.49315122;
+	-6.27261629 -0.00064850 0.00039741 7.27196779 0.99801861 0.99895409 0.49315129;
+	-6.27261662 -0.00064836 0.00039732 7.27196825 0.99801902 0.99895431 0.49315134;
+	-6.27261694 -0.00064823 0.00039724 7.27196871 0.99801944 0.99895453 0.49315136;
+	-6.27261727 -0.00064809 0.00039716 7.27196917 0.99801985 0.99895475 0.49315141;
+	-6.27261759 -0.00064796 0.00039707 7.27196963 0.99802027 0.99895497 0.49315149;
+	-6.27261792 -0.00064782 0.00039699 7.27197009 0.99802068 0.99895519 0.49315153;
+	-6.27261824 -0.00064769 0.00039691 7.27197056 0.99802110 0.99895540 0.49315156;
+	-6.27261857 -0.00064755 0.00039683 7.27197101 0.99802151 0.99895562 0.49315162;
+	-6.27261889 -0.00064742 0.00039674 7.27197147 0.99802193 0.99895584 0.49315167;
+	-6.27261921 -0.00064728 0.00039666 7.27197193 0.99802234 0.99895606 0.49315173;
+	-6.27261954 -0.00064715 0.00039658 7.27197239 0.99802275 0.99895628 0.49315176;
+	-6.27261986 -0.00064701 0.00039649 7.27197285 0.99802317 0.99895650 0.49315180;
+	-6.27262019 -0.00064687 0.00039641 7.27197331 0.99802358 0.99895671 0.49315186;
+	-6.27262051 -0.00064674 0.00039633 7.27197377 0.99802399 0.99895693 0.49315191;
+	-6.27262083 -0.00064660 0.00039624 7.27197423 0.99802441 0.99895715 0.49315198;
+	-6.27262116 -0.00064647 0.00039616 7.27197469 0.99802482 0.99895737 0.49315200;
+	-6.27262148 -0.00064633 0.00039608 7.27197515 0.99802523 0.99895759 0.49315204;
+	-6.27262180 -0.00064620 0.00039600 7.27197560 0.99802564 0.99895780 0.49315211;
+	-6.27262213 -0.00064606 0.00039591 7.27197606 0.99802606 0.99895802 0.49315216;
+	-6.27262245 -0.00064593 0.00039583 7.27197652 0.99802647 0.99895824 0.49315219;
+	-6.27262277 -0.00064579 0.00039575 7.27197698 0.99802688 0.99895846 0.49315225;
+	-6.27262309 -0.00064566 0.00039567 7.27197743 0.99802729 0.99895867 0.49315226;
+	-6.27262342 -0.00064553 0.00039558 7.27197789 0.99802770 0.99895889 0.49315233;
+	-6.27262374 -0.00064539 0.00039550 7.27197835 0.99802812 0.99895911 0.49315238;
+	-6.27262406 -0.00064526 0.00039542 7.27197880 0.99802853 0.99895933 0.49315244;
+	-6.27262438 -0.00064512 0.00039534 7.27197926 0.99802894 0.99895954 0.49315248;
+	-6.27262470 -0.00064499 0.00039525 7.27197972 0.99802935 0.99895976 0.49315254;
+	-6.27262503 -0.00064485 0.00039517 7.27198017 0.99802976 0.99895998 0.49315255;
+	-6.27262535 -0.00064472 0.00039509 7.27198063 0.99803017 0.99896019 0.49315260;
+	-6.27262567 -0.00064458 0.00039501 7.27198108 0.99803058 0.99896041 0.49315266;
+	-6.27262599 -0.00064445 0.00039492 7.27198154 0.99803099 0.99896063 0.49315272;
+	-6.27262631 -0.00064432 0.00039484 7.27198199 0.99803140 0.99896084 0.49315276;
+	-6.27262663 -0.00064418 0.00039476 7.27198245 0.99803181 0.99896106 0.49315283;
+	-6.27262695 -0.00064405 0.00039468 7.27198290 0.99803222 0.99896127 0.49315287;
+	-6.27262727 -0.00064391 0.00039460 7.27198336 0.99803263 0.99896149 0.49315291;
+	-6.27262759 -0.00064378 0.00039451 7.27198381 0.99803304 0.99896171 0.49315298;
+	-6.27262792 -0.00064365 0.00039443 7.27198427 0.99803345 0.99896192 0.49315301;
+	-6.27262824 -0.00064351 0.00039435 7.27198472 0.99803386 0.99896214 0.49315305;
+	-6.27262856 -0.00064338 0.00039427 7.27198518 0.99803427 0.99896235 0.49315310;
+	-6.27262888 -0.00064325 0.00039418 7.27198563 0.99803468 0.99896257 0.49315315;
+	-6.27262920 -0.00064311 0.00039410 7.27198608 0.99803508 0.99896279 0.49315320;
+	-6.27262952 -0.00064298 0.00039402 7.27198654 0.99803549 0.99896300 0.49315324;
+	-6.27262984 -0.00064284 0.00039394 7.27198699 0.99803590 0.99896322 0.49315329;
+	-6.27263015 -0.00064271 0.00039386 7.27198744 0.99803631 0.99896343 0.49315335;
+	-6.27263047 -0.00064258 0.00039378 7.27198790 0.99803672 0.99896365 0.49315341;
+	-6.27263079 -0.00064244 0.00039369 7.27198835 0.99803712 0.99896386 0.49315341;
+	-6.27263111 -0.00064231 0.00039361 7.27198880 0.99803753 0.99896408 0.49315348;
+	-6.27263143 -0.00064218 0.00039353 7.27198925 0.99803794 0.99896429 0.49315355;
+	-6.27263175 -0.00064204 0.00039345 7.27198971 0.99803835 0.99896451 0.49315360;
+	-6.27263207 -0.00064191 0.00039337 7.27199016 0.99803875 0.99896472 0.49315362;
+	-6.27263239 -0.00064178 0.00039329 7.27199061 0.99803916 0.99896494 0.49315366;
+	-6.27263271 -0.00064165 0.00039320 7.27199106 0.99803957 0.99896515 0.49315370;
+	-6.27263302 -0.00064151 0.00039312 7.27199151 0.99803997 0.99896537 0.49315378;
+	-6.27263334 -0.00064138 0.00039304 7.27199196 0.99804038 0.99896558 0.49315382;
+	-6.27263366 -0.00064125 0.00039296 7.27199241 0.99804079 0.99896579 0.49315384;
+	-6.27263398 -0.00064111 0.00039288 7.27199287 0.99804119 0.99896601 0.49315390;
+	-6.27263430 -0.00064098 0.00039280 7.27199332 0.99804160 0.99896622 0.49315398;
+	-6.27263461 -0.00064085 0.00039271 7.27199377 0.99804200 0.99896644 0.49315398;
+	-6.27263493 -0.00064072 0.00039263 7.27199422 0.99804241 0.99896665 0.49315402;
+	-6.27263525 -0.00064058 0.00039255 7.27199467 0.99804281 0.99896686 0.49315410;
+	-6.27263557 -0.00064045 0.00039247 7.27199512 0.99804322 0.99896708 0.49315415;
+	-6.27263588 -0.00064032 0.00039239 7.27199557 0.99804362 0.99896729 0.49315420;
+	-6.27263620 -0.00064019 0.00039231 7.27199602 0.99804403 0.99896751 0.49315423;
+	-6.27263652 -0.00064005 0.00039223 7.27199646 0.99804443 0.99896772 0.49315429;
+	-6.27263683 -0.00063992 0.00039215 7.27199691 0.99804484 0.99896793 0.49315433;
+	-6.27263715 -0.00063979 0.00039206 7.27199736 0.99804524 0.99896815 0.49315438;
+	-6.27263747 -0.00063966 0.00039198 7.27199781 0.99804565 0.99896836 0.49315441;
+	-6.27263778 -0.00063952 0.00039190 7.27199826 0.99804605 0.99896857 0.49315445;
+	-6.27263810 -0.00063939 0.00039182 7.27199871 0.99804645 0.99896879 0.49315452;
+	-6.27263842 -0.00063926 0.00039174 7.27199916 0.99804686 0.99896900 0.49315453;
+	-6.27263873 -0.00063913 0.00039166 7.27199960 0.99804726 0.99896921 0.49315461;
+	-6.27263905 -0.00063900 0.00039158 7.27200005 0.99804766 0.99896942 0.49315465;
+	-6.27263936 -0.00063886 0.00039150 7.27200050 0.99804807 0.99896964 0.49315471;
+	-6.27263968 -0.00063873 0.00039142 7.27200095 0.99804847 0.99896985 0.49315476;
+	-6.27263999 -0.00063860 0.00039134 7.27200139 0.99804887 0.99897006 0.49315480;
+	-6.27264031 -0.00063847 0.00039126 7.27200184 0.99804928 0.99897028 0.49315486;
+	-6.27264063 -0.00063834 0.00039117 7.27200229 0.99804968 0.99897049 0.49315489;
+	-6.27264094 -0.00063821 0.00039109 7.27200273 0.99805008 0.99897070 0.49315491;
+	-6.27264126 -0.00063807 0.00039101 7.27200318 0.99805048 0.99897091 0.49315503;
+	-6.27264157 -0.00063794 0.00039093 7.27200363 0.99805088 0.99897112 0.49315504;
+	-6.27264188 -0.00063781 0.00039085 7.27200407 0.99805129 0.99897134 0.49315507;
+	-6.27264220 -0.00063768 0.00039077 7.27200452 0.99805169 0.99897155 0.49315512;
+	-6.27264251 -0.00063755 0.00039069 7.27200496 0.99805209 0.99897176 0.49315517;
+	-6.27264283 -0.00063742 0.00039061 7.27200541 0.99805249 0.99897197 0.49315521;
+	-6.27264314 -0.00063729 0.00039053 7.27200586 0.99805289 0.99897218 0.49315529;
+	-6.27264346 -0.00063716 0.00039045 7.27200630 0.99805329 0.99897240 0.49315533;
+	-6.27264377 -0.00063702 0.00039037 7.27200675 0.99805369 0.99897261 0.49315538;
+	-6.27264408 -0.00063689 0.00039029 7.27200719 0.99805409 0.99897282 0.49315540;
+	-6.27264440 -0.00063676 0.00039021 7.27200764 0.99805450 0.99897303 0.49315545;
+	-6.27264471 -0.00063663 0.00039013 7.27200808 0.99805490 0.99897324 0.49315550;
+	-6.27264502 -0.00063650 0.00039005 7.27200852 0.99805530 0.99897345 0.49315556;
+	-6.27264534 -0.00063637 0.00038997 7.27200897 0.99805570 0.99897366 0.49315563;
+	-6.27264565 -0.00063624 0.00038989 7.27200941 0.99805610 0.99897387 0.49315563;
+	-6.27264596 -0.00063611 0.00038981 7.27200986 0.99805649 0.99897409 0.49315568;
+	-6.27264628 -0.00063598 0.00038973 7.27201030 0.99805689 0.99897430 0.49315572;
+	-6.27264659 -0.00063585 0.00038965 7.27201074 0.99805729 0.99897451 0.49315579;
+	-6.27264690 -0.00063572 0.00038957 7.27201119 0.99805769 0.99897472 0.49315582;
+	-6.27264721 -0.00063559 0.00038949 7.27201163 0.99805809 0.99897493 0.49315589;
+	-6.27264753 -0.00063545 0.00038941 7.27201207 0.99805849 0.99897514 0.49315595;
+	-6.27264784 -0.00063532 0.00038933 7.27201251 0.99805889 0.99897535 0.49315600;
+	-6.27264815 -0.00063519 0.00038925 7.27201296 0.99805929 0.99897556 0.49315603;
+	-6.27264846 -0.00063506 0.00038917 7.27201340 0.99805969 0.99897577 0.49315606;
+	-6.27264877 -0.00063493 0.00038909 7.27201384 0.99806008 0.99897598 0.49315609;
+	-6.27264909 -0.00063480 0.00038901 7.27201428 0.99806048 0.99897619 0.49315614;
+	-6.27264940 -0.00063467 0.00038893 7.27201472 0.99806088 0.99897640 0.49315621;
+	-6.27264971 -0.00063454 0.00038885 7.27201517 0.99806128 0.99897661 0.49315622;
+	-6.27265002 -0.00063441 0.00038877 7.27201561 0.99806168 0.99897682 0.49315632;
+	-6.27265033 -0.00063428 0.00038869 7.27201605 0.99806207 0.99897703 0.49315636;
+	-6.27265064 -0.00063415 0.00038861 7.27201649 0.99806247 0.99897724 0.49315639;
+	-6.27265095 -0.00063402 0.00038853 7.27201693 0.99806287 0.99897745 0.49315644;
+	-6.27265126 -0.00063389 0.00038845 7.27201737 0.99806326 0.99897766 0.49315648;
+	-6.27265157 -0.00063376 0.00038837 7.27201781 0.99806366 0.99897787 0.49315654;
+	-6.27265189 -0.00063363 0.00038829 7.27201825 0.99806406 0.99897808 0.49315656;
+	-6.27265220 -0.00063350 0.00038821 7.27201869 0.99806445 0.99897829 0.49315663;
+	-6.27265251 -0.00063337 0.00038813 7.27201913 0.99806485 0.99897849 0.49315664;
+	-6.27265282 -0.00063324 0.00038805 7.27201957 0.99806525 0.99897870 0.49315672;
+	-6.27265313 -0.00063312 0.00038797 7.27202001 0.99806564 0.99897891 0.49315678;
+	-6.27265344 -0.00063299 0.00038789 7.27202045 0.99806604 0.99897912 0.49315679;
+	-6.27265375 -0.00063286 0.00038781 7.27202089 0.99806643 0.99897933 0.49315682;
+	-6.27265406 -0.00063273 0.00038773 7.27202133 0.99806683 0.99897954 0.49315688;
+	-6.27265436 -0.00063260 0.00038765 7.27202177 0.99806722 0.99897975 0.49315697;
+	-6.27265467 -0.00063247 0.00038758 7.27202221 0.99806762 0.99897996 0.49315698;
+	-6.27265498 -0.00063234 0.00038750 7.27202264 0.99806801 0.99898016 0.49315705;
+	-6.27265529 -0.00063221 0.00038742 7.27202308 0.99806841 0.99898037 0.49315710;
+	-6.27265560 -0.00063208 0.00038734 7.27202352 0.99806880 0.99898058 0.49315714;
+	-6.27265591 -0.00063195 0.00038726 7.27202396 0.99806920 0.99898079 0.49315716;
+	-6.27265622 -0.00063182 0.00038718 7.27202440 0.99806959 0.99898100 0.49315722;
+	-6.27265653 -0.00063169 0.00038710 7.27202483 0.99806999 0.99898121 0.49315726;
+	-6.27265684 -0.00063157 0.00038702 7.27202527 0.99807038 0.99898141 0.49315731;
+	-6.27265714 -0.00063144 0.00038694 7.27202571 0.99807077 0.99898162 0.49315737;
+	-6.27265745 -0.00063131 0.00038686 7.27202614 0.99807117 0.99898183 0.49315740;
+	-6.27265776 -0.00063118 0.00038678 7.27202658 0.99807156 0.99898204 0.49315744;
+	-6.27265807 -0.00063105 0.00038671 7.27202702 0.99807195 0.99898224 0.49315747;
+	-6.27265838 -0.00063092 0.00038663 7.27202745 0.99807235 0.99898245 0.49315751;
+	-6.27265868 -0.00063079 0.00038655 7.27202789 0.99807274 0.99898266 0.49315758;
+	-6.27265899 -0.00063066 0.00038647 7.27202833 0.99807313 0.99898287 0.49315760;
+	-6.27265930 -0.00063054 0.00038639 7.27202876 0.99807353 0.99898307 0.49315770;
+	-6.27265961 -0.00063041 0.00038631 7.27202920 0.99807392 0.99898328 0.49315771;
+	-6.27265991 -0.00063028 0.00038623 7.27202963 0.99807431 0.99898349 0.49315780;
+	-6.27266022 -0.00063015 0.00038615 7.27203007 0.99807470 0.99898369 0.49315780;
+	-6.27266053 -0.00063002 0.00038608 7.27203051 0.99807510 0.99898390 0.49315786;
+	-6.27266083 -0.00062989 0.00038600 7.27203094 0.99807549 0.99898411 0.49315792;
+	-6.27266114 -0.00062977 0.00038592 7.27203138 0.99807588 0.99898432 0.49315794;
+	-6.27266145 -0.00062964 0.00038584 7.27203181 0.99807627 0.99898452 0.49315802;
+	-6.27266175 -0.00062951 0.00038576 7.27203224 0.99807666 0.99898473 0.49315805;
+	-6.27266206 -0.00062938 0.00038568 7.27203268 0.99807705 0.99898493 0.49315808;
+	-6.27266237 -0.00062925 0.00038560 7.27203311 0.99807744 0.99898514 0.49315812;
+	-6.27266267 -0.00062913 0.00038553 7.27203355 0.99807784 0.99898535 0.49315818;
+	-6.27266298 -0.00062900 0.00038545 7.27203398 0.99807823 0.99898555 0.49315821;
+	-6.27266329 -0.00062887 0.00038537 7.27203441 0.99807862 0.99898576 0.49315828;
+	-6.27266359 -0.00062874 0.00038529 7.27203485 0.99807901 0.99898597 0.49315830;
+	-6.27266390 -0.00062862 0.00038521 7.27203528 0.99807940 0.99898617 0.49315836;
+	-6.27266420 -0.00062849 0.00038513 7.27203571 0.99807979 0.99898638 0.49315841;
+	-6.27266451 -0.00062836 0.00038506 7.27203615 0.99808018 0.99898658 0.49315847;
+	-6.27266481 -0.00062823 0.00038498 7.27203658 0.99808057 0.99898679 0.49315850;
+	-6.27266512 -0.00062811 0.00038490 7.27203701 0.99808096 0.99898700 0.49315856;
+	-6.27266542 -0.00062798 0.00038482 7.27203744 0.99808135 0.99898720 0.49315859;
+	-6.27266573 -0.00062785 0.00038474 7.27203788 0.99808174 0.99898741 0.49315862;
+	-6.27266603 -0.00062772 0.00038467 7.27203831 0.99808213 0.99898761 0.49315867;
+	-6.27266634 -0.00062760 0.00038459 7.27203874 0.99808251 0.99898782 0.49315875;
+	-6.27266664 -0.00062747 0.00038451 7.27203917 0.99808290 0.99898802 0.49315880;
+	-6.27266695 -0.00062734 0.00038443 7.27203960 0.99808329 0.99898823 0.49315883;
+	-6.27266725 -0.00062721 0.00038435 7.27204004 0.99808368 0.99898843 0.49315887;
+	-6.27266755 -0.00062709 0.00038428 7.27204047 0.99808407 0.99898864 0.49315892;
+	-6.27266786 -0.00062696 0.00038420 7.27204090 0.99808446 0.99898884 0.49315895;
+	-6.27266816 -0.00062683 0.00038412 7.27204133 0.99808485 0.99898905 0.49315899;
+	-6.27266847 -0.00062671 0.00038404 7.27204176 0.99808523 0.99898925 0.49315906;
+	-6.27266877 -0.00062658 0.00038396 7.27204219 0.99808562 0.99898946 0.49315910;
+	-6.27266907 -0.00062645 0.00038389 7.27204262 0.99808601 0.99898966 0.49315911;
+	-6.27266938 -0.00062633 0.00038381 7.27204305 0.99808640 0.99898987 0.49315917;
+	-6.27266968 -0.00062620 0.00038373 7.27204348 0.99808678 0.99899007 0.49315922;
+	-6.27266998 -0.00062607 0.00038365 7.27204391 0.99808717 0.99899027 0.49315926;
+	-6.27267028 -0.00062595 0.00038358 7.27204434 0.99808756 0.99899048 0.49315930;
+	-6.27267059 -0.00062582 0.00038350 7.27204477 0.99808794 0.99899068 0.49315934;
+	-6.27267089 -0.00062569 0.00038342 7.27204520 0.99808833 0.99899089 0.49315940;
+	-6.27267119 -0.00062557 0.00038334 7.27204563 0.99808872 0.99899109 0.49315945;
+	-6.27267150 -0.00062544 0.00038327 7.27204606 0.99808910 0.99899129 0.49315950;
+	-6.27267180 -0.00062531 0.00038319 7.27204648 0.99808949 0.99899150 0.49315953;
+	-6.27267210 -0.00062519 0.00038311 7.27204691 0.99808988 0.99899170 0.49315956;
+	-6.27267240 -0.00062506 0.00038303 7.27204734 0.99809026 0.99899191 0.49315961;
+	-6.27267270 -0.00062494 0.00038296 7.27204777 0.99809065 0.99899211 0.49315968;
+	-6.27267301 -0.00062481 0.00038288 7.27204820 0.99809103 0.99899231 0.49315973;
+	-6.27267331 -0.00062468 0.00038280 7.27204863 0.99809142 0.99899252 0.49315977;
+	-6.27267361 -0.00062456 0.00038272 7.27204905 0.99809180 0.99899272 0.49315980;
+	-6.27267391 -0.00062443 0.00038265 7.27204948 0.99809219 0.99899292 0.49315984;
+	-6.27267421 -0.00062431 0.00038257 7.27204991 0.99809257 0.99899313 0.49315989;
+	-6.27267451 -0.00062418 0.00038249 7.27205033 0.99809296 0.99899333 0.49315993;
+	-6.27267481 -0.00062405 0.00038241 7.27205076 0.99809334 0.99899353 0.49315999;
+	-6.27267512 -0.00062393 0.00038234 7.27205119 0.99809373 0.99899373 0.49316004;
+	-6.27267542 -0.00062380 0.00038226 7.27205162 0.99809411 0.99899394 0.49316007;
+	-6.27267572 -0.00062368 0.00038218 7.27205204 0.99809450 0.99899414 0.49316011;
+	-6.27267602 -0.00062355 0.00038211 7.27205247 0.99809488 0.99899434 0.49316016;
+	-6.27267632 -0.00062342 0.00038203 7.27205289 0.99809527 0.99899455 0.49316020;
+	-6.27267662 -0.00062330 0.00038195 7.27205332 0.99809565 0.99899475 0.49316023;
+	-6.27267692 -0.00062317 0.00038188 7.27205375 0.99809603 0.99899495 0.49316033;
+	-6.27267722 -0.00062305 0.00038180 7.27205417 0.99809642 0.99899515 0.49316032;
+	-6.27267752 -0.00062292 0.00038172 7.27205460 0.99809680 0.99899536 0.49316037;
+	-6.27267782 -0.00062280 0.00038164 7.27205502 0.99809718 0.99899556 0.49316043;
+	-6.27267812 -0.00062267 0.00038157 7.27205545 0.99809757 0.99899576 0.49316049;
+	-6.27267842 -0.00062255 0.00038149 7.27205587 0.99809795 0.99899596 0.49316053;
+	-6.27267872 -0.00062242 0.00038141 7.27205630 0.99809833 0.99899616 0.49316060;
+	-6.27267902 -0.00062230 0.00038134 7.27205672 0.99809871 0.99899637 0.49316061;
+	-6.27267932 -0.00062217 0.00038126 7.27205715 0.99809910 0.99899657 0.49316068;
+	-6.27267962 -0.00062205 0.00038118 7.27205757 0.99809948 0.99899677 0.49316072;
+	-6.27267992 -0.00062192 0.00038111 7.27205799 0.99809986 0.99899697 0.49316074;
+	-6.27268021 -0.00062180 0.00038103 7.27205842 0.99810024 0.99899717 0.49316079;
+	-6.27268051 -0.00062167 0.00038095 7.27205884 0.99810062 0.99899737 0.49316083;
+	-6.27268081 -0.00062155 0.00038088 7.27205927 0.99810100 0.99899757 0.49316088;
+	-6.27268111 -0.00062142 0.00038080 7.27205969 0.99810139 0.99899778 0.49316090;
+	-6.27268141 -0.00062130 0.00038072 7.27206011 0.99810177 0.99899798 0.49316099;
+	-6.27268171 -0.00062117 0.00038065 7.27206053 0.99810215 0.99899818 0.49316102;
+	-6.27268201 -0.00062105 0.00038057 7.27206096 0.99810253 0.99899838 0.49316107;
+	-6.27268230 -0.00062092 0.00038050 7.27206138 0.99810291 0.99899858 0.49316107;
+	-6.27268260 -0.00062080 0.00038042 7.27206180 0.99810329 0.99899878 0.49316112;
+	-6.27268290 -0.00062067 0.00038034 7.27206223 0.99810367 0.99899898 0.49316121;
+	-6.27268320 -0.00062055 0.00038027 7.27206265 0.99810405 0.99899918 0.49316122;
+	-6.27268350 -0.00062043 0.00038019 7.27206307 0.99810443 0.99899938 0.49316127;
+	-6.27268379 -0.00062030 0.00038011 7.27206349 0.99810481 0.99899958 0.49316133;
+	-6.27268409 -0.00062018 0.00038004 7.27206391 0.99810519 0.99899978 0.49316137;
+	-6.27268439 -0.00062005 0.00037996 7.27206433 0.99810557 0.99899999 0.49316141;
+	-6.27268468 -0.00061993 0.00037989 7.27206476 0.99810595 0.99900019 0.49316145;
+	-6.27268498 -0.00061980 0.00037981 7.27206518 0.99810633 0.99900039 0.49316150;
+	-6.27268528 -0.00061968 0.00037973 7.27206560 0.99810671 0.99900059 0.49316152;
+	-6.27268558 -0.00061956 0.00037966 7.27206602 0.99810709 0.99900079 0.49316158;
+	-6.27268587 -0.00061943 0.00037958 7.27206644 0.99810747 0.99900099 0.49316160;
+	-6.27268617 -0.00061931 0.00037951 7.27206686 0.99810785 0.99900119 0.49316174;
+	-6.27268647 -0.00061919 0.00037943 7.27206728 0.99810823 0.99900139 0.49316174;
+	-6.27268676 -0.00061906 0.00037935 7.27206770 0.99810860 0.99900159 0.49316173;
+	-6.27268706 -0.00061894 0.00037928 7.27206812 0.99810898 0.99900179 0.49316182;
+	-6.27268735 -0.00061881 0.00037920 7.27206854 0.99810936 0.99900198 0.49316185;
+	-6.27268765 -0.00061869 0.00037913 7.27206896 0.99810974 0.99900218 0.49316190;
+	-6.27268795 -0.00061857 0.00037905 7.27206938 0.99811012 0.99900238 0.49316194;
+	-6.27268824 -0.00061844 0.00037897 7.27206980 0.99811049 0.99900258 0.49316199;
+	-6.27268854 -0.00061832 0.00037890 7.27207022 0.99811087 0.99900278 0.49316201;
+	-6.27268883 -0.00061820 0.00037882 7.27207064 0.99811125 0.99900298 0.49316207;
+	-6.27268913 -0.00061807 0.00037875 7.27207106 0.99811163 0.99900318 0.49316215;
+	-6.27268942 -0.00061795 0.00037867 7.27207147 0.99811200 0.99900338 0.49316215;
+	-6.27268972 -0.00061783 0.00037860 7.27207189 0.99811238 0.99900358 0.49316222;
+	-6.27269001 -0.00061770 0.00037852 7.27207231 0.99811276 0.99900378 0.49316225;
+	-6.27269031 -0.00061758 0.00037844 7.27207273 0.99811313 0.99900398 0.49316226;
+	-6.27269060 -0.00061746 0.00037837 7.27207315 0.99811351 0.99900418 0.49316232;
+	-6.27269090 -0.00061733 0.00037829 7.27207356 0.99811389 0.99900437 0.49316241;
+	-6.27269119 -0.00061721 0.00037822 7.27207398 0.99811426 0.99900457 0.49316240;
+	-6.27269149 -0.00061709 0.00037814 7.27207440 0.99811464 0.99900477 0.49316244;
+	-6.27269178 -0.00061696 0.00037807 7.27207482 0.99811502 0.99900497 0.49316250;
+	-6.27269208 -0.00061684 0.00037799 7.27207523 0.99811539 0.99900517 0.49316255;
+	-6.27269237 -0.00061672 0.00037792 7.27207565 0.99811577 0.99900537 0.49316260;
+	-6.27269266 -0.00061660 0.00037784 7.27207607 0.99811614 0.99900556 0.49316268;
+	-6.27269296 -0.00061647 0.00037777 7.27207648 0.99811652 0.99900576 0.49316264;
+	-6.27269325 -0.00061635 0.00037769 7.27207690 0.99811689 0.99900596 0.49316274;
+	-6.27269354 -0.00061623 0.00037762 7.27207732 0.99811727 0.99900616 0.49316275;
+	-6.27269384 -0.00061610 0.00037754 7.27207773 0.99811764 0.99900636 0.49316280;
+	-6.27269413 -0.00061598 0.00037746 7.27207815 0.99811802 0.99900655 0.49316280;
+	-6.27269442 -0.00061586 0.00037739 7.27207857 0.99811839 0.99900675 0.49316288;
+	-6.27269472 -0.00061574 0.00037731 7.27207898 0.99811877 0.99900695 0.49316293;
+	-6.27269501 -0.00061561 0.00037724 7.27207940 0.99811914 0.99900715 0.49316299;
+	-6.27269530 -0.00061549 0.00037716 7.27207981 0.99811952 0.99900734 0.49316305;
+	-6.27269560 -0.00061537 0.00037709 7.27208023 0.99811989 0.99900754 0.49316305;
+	-6.27269589 -0.00061525 0.00037701 7.27208064 0.99812026 0.99900774 0.49316309;
+	-6.27269618 -0.00061512 0.00037694 7.27208106 0.99812064 0.99900794 0.49316319;
+	-6.27269647 -0.00061500 0.00037686 7.27208147 0.99812101 0.99900813 0.49316320;
+	-6.27269677 -0.00061488 0.00037679 7.27208189 0.99812138 0.99900833 0.49316326;
+	-6.27269706 -0.00061476 0.00037671 7.27208230 0.99812176 0.99900853 0.49316331;
+	-6.27269735 -0.00061464 0.00037664 7.27208271 0.99812213 0.99900872 0.49316334;
+	-6.27269764 -0.00061451 0.00037656 7.27208313 0.99812250 0.99900892 0.49316337;
+	-6.27269793 -0.00061439 0.00037649 7.27208354 0.99812288 0.99900912 0.49316343;
+	-6.27269823 -0.00061427 0.00037642 7.27208396 0.99812325 0.99900931 0.49316350;
+	-6.27269852 -0.00061415 0.00037634 7.27208437 0.99812362 0.99900951 0.49316348;
+	-6.27269881 -0.00061403 0.00037627 7.27208478 0.99812399 0.99900971 0.49316356;
+	-6.27269910 -0.00061390 0.00037619 7.27208520 0.99812437 0.99900990 0.49316359;
+	-6.27269939 -0.00061378 0.00037612 7.27208561 0.99812474 0.99901010 0.49316364;
+	-6.27269968 -0.00061366 0.00037604 7.27208602 0.99812511 0.99901030 0.49316368;
+	-6.27269997 -0.00061354 0.00037597 7.27208643 0.99812548 0.99901049 0.49316372;
+	-6.27270027 -0.00061342 0.00037589 7.27208685 0.99812585 0.99901069 0.49316379;
+	-6.27270056 -0.00061330 0.00037582 7.27208726 0.99812623 0.99901089 0.49316380;
+	-6.27270085 -0.00061318 0.00037574 7.27208767 0.99812660 0.99901108 0.49316383;
+	-6.27270114 -0.00061305 0.00037567 7.27208808 0.99812697 0.99901128 0.49316392;
+	-6.27270143 -0.00061293 0.00037559 7.27208850 0.99812734 0.99901147 0.49316393;
+	-6.27270172 -0.00061281 0.00037552 7.27208891 0.99812771 0.99901167 0.49316398;
+	-6.27270201 -0.00061269 0.00037545 7.27208932 0.99812808 0.99901186 0.49316403;
+	-6.27270230 -0.00061257 0.00037537 7.27208973 0.99812845 0.99901206 0.49316407;
+	-6.27270259 -0.00061245 0.00037530 7.27209014 0.99812882 0.99901226 0.49316411;
+	-6.27270288 -0.00061233 0.00037522 7.27209055 0.99812919 0.99901245 0.49316419;
+	-6.27270317 -0.00061221 0.00037515 7.27209096 0.99812956 0.99901265 0.49316420;
+	-6.27270346 -0.00061208 0.00037507 7.27209137 0.99812993 0.99901284 0.49316424;
+	-6.27270375 -0.00061196 0.00037500 7.27209178 0.99813030 0.99901304 0.49316431;
+	-6.27270404 -0.00061184 0.00037493 7.27209219 0.99813067 0.99901323 0.49316432;
+	-6.27270433 -0.00061172 0.00037485 7.27209260 0.99813104 0.99901343 0.49316435;
+	-6.27270462 -0.00061160 0.00037478 7.27209301 0.99813141 0.99901362 0.49316437;
+	-6.27270490 -0.00061148 0.00037470 7.27209342 0.99813178 0.99901382 0.49316447;
+	-6.27270519 -0.00061136 0.00037463 7.27209383 0.99813215 0.99901401 0.49316452;
+	-6.27270548 -0.00061124 0.00037456 7.27209424 0.99813252 0.99901421 0.49316453;
+	-6.27270577 -0.00061112 0.00037448 7.27209465 0.99813289 0.99901440 0.49316460;
+	-6.27270606 -0.00061100 0.00037441 7.27209506 0.99813326 0.99901460 0.49316462;
+	-6.27270635 -0.00061088 0.00037433 7.27209547 0.99813362 0.99901479 0.49316468;
+	-6.27270664 -0.00061076 0.00037426 7.27209588 0.99813399 0.99901498 0.49316472;
+	-6.27270692 -0.00061064 0.00037419 7.27209629 0.99813436 0.99901518 0.49316476;
+	-6.27270721 -0.00061051 0.00037411 7.27209670 0.99813473 0.99901537 0.49316483;
+	-6.27270750 -0.00061039 0.00037404 7.27209711 0.99813510 0.99901557 0.49316482;
+	-6.27270779 -0.00061027 0.00037396 7.27209751 0.99813547 0.99901576 0.49316493;
+	-6.27270808 -0.00061015 0.00037389 7.27209792 0.99813583 0.99901596 0.49316495;
+	-6.27270836 -0.00061003 0.00037382 7.27209833 0.99813620 0.99901615 0.49316498;
+	-6.27270865 -0.00060991 0.00037374 7.27209874 0.99813657 0.99901634 0.49316501;
+	-6.27270894 -0.00060979 0.00037367 7.27209915 0.99813694 0.99901654 0.49316504;
+	-6.27270923 -0.00060967 0.00037360 7.27209955 0.99813730 0.99901673 0.49316509;
+	-6.27270951 -0.00060955 0.00037352 7.27209996 0.99813767 0.99901692 0.49316516;
+	-6.27270980 -0.00060943 0.00037345 7.27210037 0.99813804 0.99901712 0.49316521;
+	-6.27271009 -0.00060931 0.00037338 7.27210078 0.99813840 0.99901731 0.49316522;
+	-6.27271038 -0.00060919 0.00037330 7.27210118 0.99813877 0.99901751 0.49316529;
+	-6.27271066 -0.00060907 0.00037323 7.27210159 0.99813914 0.99901770 0.49316533;
+	-6.27271095 -0.00060895 0.00037315 7.27210200 0.99813950 0.99901789 0.49316538;
+	-6.27271124 -0.00060883 0.00037308 7.27210240 0.99813987 0.99901808 0.49316545;
+	-6.27271152 -0.00060871 0.00037301 7.27210281 0.99814023 0.99901828 0.49316550;
+	-6.27271181 -0.00060859 0.00037293 7.27210321 0.99814060 0.99901847 0.49316550;
+	-6.27271209 -0.00060847 0.00037286 7.27210362 0.99814097 0.99901866 0.49316554;
+	-6.27271238 -0.00060836 0.00037279 7.27210403 0.99814133 0.99901886 0.49316555;
+	-6.27271267 -0.00060824 0.00037271 7.27210443 0.99814170 0.99901905 0.49316564;
+	-6.27271295 -0.00060812 0.00037264 7.27210484 0.99814206 0.99901924 0.49316569;
+	-6.27271324 -0.00060800 0.00037257 7.27210524 0.99814243 0.99901944 0.49316569;
+	-6.27271352 -0.00060788 0.00037249 7.27210565 0.99814279 0.99901963 0.49316572;
+	-6.27271381 -0.00060776 0.00037242 7.27210605 0.99814316 0.99901982 0.49316582;
+	-6.27271410 -0.00060764 0.00037235 7.27210646 0.99814352 0.99902001 0.49316585;
+	-6.27271438 -0.00060752 0.00037228 7.27210686 0.99814389 0.99902021 0.49316587;
+	-6.27271467 -0.00060740 0.00037220 7.27210727 0.99814425 0.99902040 0.49316592;
+	-6.27271495 -0.00060728 0.00037213 7.27210767 0.99814461 0.99902059 0.49316598;
+	-6.27271524 -0.00060716 0.00037206 7.27210807 0.99814498 0.99902078 0.49316599;
+	-6.27271552 -0.00060704 0.00037198 7.27210848 0.99814534 0.99902097 0.49316604;
+	-6.27271581 -0.00060692 0.00037191 7.27210888 0.99814571 0.99902117 0.49316608;
+	-6.27271609 -0.00060680 0.00037184 7.27210929 0.99814607 0.99902136 0.49316611;
+	-6.27271637 -0.00060669 0.00037176 7.27210969 0.99814643 0.99902155 0.49316616;
+	-6.27271666 -0.00060657 0.00037169 7.27211009 0.99814680 0.99902174 0.49316618;
+	-6.27271694 -0.00060645 0.00037162 7.27211050 0.99814716 0.99902193 0.49316624;
+	-6.27271723 -0.00060633 0.00037155 7.27211090 0.99814752 0.99902213 0.49316630;
+	-6.27271751 -0.00060621 0.00037147 7.27211130 0.99814789 0.99902232 0.49316633;
+	-6.27271780 -0.00060609 0.00037140 7.27211170 0.99814825 0.99902251 0.49316640;
+	-6.27271808 -0.00060597 0.00037133 7.27211211 0.99814861 0.99902270 0.49316642;
+	-6.27271836 -0.00060585 0.00037125 7.27211251 0.99814897 0.99902289 0.49316649;
+	-6.27271865 -0.00060574 0.00037118 7.27211291 0.99814934 0.99902308 0.49316653;
+	-6.27271893 -0.00060562 0.00037111 7.27211331 0.99814970 0.99902327 0.49316657;
+	-6.27271921 -0.00060550 0.00037104 7.27211371 0.99815006 0.99902346 0.49316659;
+	-6.27271950 -0.00060538 0.00037096 7.27211412 0.99815042 0.99902366 0.49316664;
+	-6.27271978 -0.00060526 0.00037089 7.27211452 0.99815079 0.99902385 0.49316670;
+	-6.27272006 -0.00060514 0.00037082 7.27211492 0.99815115 0.99902404 0.49316670;
+	-6.27272035 -0.00060503 0.00037075 7.27211532 0.99815151 0.99902423 0.49316673;
+	-6.27272063 -0.00060491 0.00037067 7.27211572 0.99815187 0.99902442 0.49316679;
+	-6.27272091 -0.00060479 0.00037060 7.27211612 0.99815223 0.99902461 0.49316685;
+	-6.27272120 -0.00060467 0.00037053 7.27211652 0.99815259 0.99902480 0.49316688;
+	-6.27272148 -0.00060455 0.00037046 7.27211692 0.99815295 0.99902499 0.49316692;
+	-6.27272176 -0.00060444 0.00037038 7.27211732 0.99815331 0.99902518 0.49316699;
+	-6.27272204 -0.00060432 0.00037031 7.27211773 0.99815367 0.99902537 0.49316698;
+	-6.27272232 -0.00060420 0.00037024 7.27211813 0.99815404 0.99902556 0.49316707;
+	-6.27272261 -0.00060408 0.00037017 7.27211853 0.99815440 0.99902575 0.49316710;
+	-6.27272289 -0.00060396 0.00037009 7.27211893 0.99815476 0.99902594 0.49316715;
+	-6.27272317 -0.00060385 0.00037002 7.27211933 0.99815512 0.99902613 0.49316718;
+	-6.27272345 -0.00060373 0.00036995 7.27211972 0.99815548 0.99902632 0.49316722;
+	-6.27272373 -0.00060361 0.00036988 7.27212012 0.99815584 0.99902651 0.49316726;
+	-6.27272402 -0.00060349 0.00036981 7.27212052 0.99815620 0.99902670 0.49316729;
+	-6.27272430 -0.00060337 0.00036973 7.27212092 0.99815656 0.99902689 0.49316735;
+	-6.27272458 -0.00060326 0.00036966 7.27212132 0.99815691 0.99902708 0.49316741;
+	-6.27272486 -0.00060314 0.00036959 7.27212172 0.99815727 0.99902727 0.49316741;
+	-6.27272514 -0.00060302 0.00036952 7.27212212 0.99815763 0.99902746 0.49316748;
+	-6.27272542 -0.00060290 0.00036945 7.27212252 0.99815799 0.99902765 0.49316753;
+	-6.27272570 -0.00060279 0.00036937 7.27212292 0.99815835 0.99902784 0.49316756;
+	-6.27272598 -0.00060267 0.00036930 7.27212331 0.99815871 0.99902803 0.49316761;
+	-6.27272626 -0.00060255 0.00036923 7.27212371 0.99815907 0.99902822 0.49316767;
+	-6.27272654 -0.00060244 0.00036916 7.27212411 0.99815943 0.99902841 0.49316768;
+	-6.27272683 -0.00060232 0.00036909 7.27212451 0.99815978 0.99902860 0.49316772;
+	-6.27272711 -0.00060220 0.00036901 7.27212490 0.99816014 0.99902879 0.49316778;
+	-6.27272739 -0.00060208 0.00036894 7.27212530 0.99816050 0.99902897 0.49316778;
+	-6.27272767 -0.00060197 0.00036887 7.27212570 0.99816086 0.99902916 0.49316783;
+	-6.27272795 -0.00060185 0.00036880 7.27212610 0.99816122 0.99902935 0.49316788;
+	-6.27272823 -0.00060173 0.00036873 7.27212649 0.99816157 0.99902954 0.49316787;
+	-6.27272851 -0.00060162 0.00036865 7.27212689 0.99816193 0.99902973 0.49316799;
+	-6.27272879 -0.00060150 0.00036858 7.27212729 0.99816229 0.99902992 0.49316801;
+	-6.27272907 -0.00060138 0.00036851 7.27212768 0.99816265 0.99903011 0.49316805;
+	-6.27272934 -0.00060127 0.00036844 7.27212808 0.99816300 0.99903029 0.49316810;
+	-6.27272962 -0.00060115 0.00036837 7.27212848 0.99816336 0.99903048 0.49316812;
+	-6.27272990 -0.00060103 0.00036830 7.27212887 0.99816372 0.99903067 0.49316815;
+	-6.27273018 -0.00060092 0.00036823 7.27212927 0.99816407 0.99903086 0.49316824;
+	-6.27273046 -0.00060080 0.00036815 7.27212966 0.99816443 0.99903105 0.49316825;
+	-6.27273074 -0.00060068 0.00036808 7.27213006 0.99816479 0.99903124 0.49316832;
+	-6.27273102 -0.00060057 0.00036801 7.27213045 0.99816514 0.99903142 0.49316835;
+	-6.27273130 -0.00060045 0.00036794 7.27213085 0.99816550 0.99903161 0.49316839;
+	-6.27273158 -0.00060033 0.00036787 7.27213124 0.99816585 0.99903180 0.49316844;
+	-6.27273186 -0.00060022 0.00036780 7.27213164 0.99816621 0.99903199 0.49316848;
+	-6.27273213 -0.00060010 0.00036773 7.27213203 0.99816657 0.99903218 0.49316850;
+	-6.27273241 -0.00059998 0.00036765 7.27213243 0.99816692 0.99903236 0.49316856;
+	-6.27273269 -0.00059987 0.00036758 7.27213282 0.99816728 0.99903255 0.49316861;
+	-6.27273297 -0.00059975 0.00036751 7.27213322 0.99816763 0.99903274 0.49316864;
+	-6.27273325 -0.00059963 0.00036744 7.27213361 0.99816799 0.99903293 0.49316869;
+	-6.27273352 -0.00059952 0.00036737 7.27213401 0.99816834 0.99903311 0.49316872;
+	-6.27273380 -0.00059940 0.00036730 7.27213440 0.99816870 0.99903330 0.49316876;
+	-6.27273408 -0.00059929 0.00036723 7.27213479 0.99816905 0.99903349 0.49316877;
+	-6.27273436 -0.00059917 0.00036716 7.27213519 0.99816941 0.99903367 0.49316887;
+	-6.27273463 -0.00059905 0.00036708 7.27213558 0.99816976 0.99903386 0.49316888;
+	-6.27273491 -0.00059894 0.00036701 7.27213597 0.99817012 0.99903405 0.49316895;
+	-6.27273519 -0.00059882 0.00036694 7.27213637 0.99817047 0.99903424 0.49316897;
+	-6.27273547 -0.00059871 0.00036687 7.27213676 0.99817082 0.99903442 0.49316901;
+	-6.27273574 -0.00059859 0.00036680 7.27213715 0.99817118 0.99903461 0.49316906;
+	-6.27273602 -0.00059848 0.00036673 7.27213754 0.99817153 0.99903480 0.49316911;
+	-6.27273630 -0.00059836 0.00036666 7.27213794 0.99817189 0.99903498 0.49316913;
+	-6.27273657 -0.00059824 0.00036659 7.27213833 0.99817224 0.99903517 0.49316914;
+	-6.27273685 -0.00059813 0.00036652 7.27213872 0.99817259 0.99903535 0.49316924;
+	-6.27273713 -0.00059801 0.00036645 7.27213911 0.99817295 0.99903554 0.49316926;
+	-6.27273740 -0.00059790 0.00036637 7.27213951 0.99817330 0.99903573 0.49316930;
+	-6.27273768 -0.00059778 0.00036630 7.27213990 0.99817365 0.99903591 0.49316938;
+	-6.27273796 -0.00059767 0.00036623 7.27214029 0.99817400 0.99903610 0.49316938;
+	-6.27273823 -0.00059755 0.00036616 7.27214068 0.99817436 0.99903629 0.49316938;
+	-6.27273851 -0.00059744 0.00036609 7.27214107 0.99817471 0.99903647 0.49316946;
+	-6.27273878 -0.00059732 0.00036602 7.27214146 0.99817506 0.99903666 0.49316948;
+	-6.27273906 -0.00059721 0.00036595 7.27214185 0.99817541 0.99903684 0.49316954;
+	-6.27273933 -0.00059709 0.00036588 7.27214224 0.99817577 0.99903703 0.49316961;
+	-6.27273961 -0.00059698 0.00036581 7.27214263 0.99817612 0.99903722 0.49316964;
+	-6.27273989 -0.00059686 0.00036574 7.27214303 0.99817647 0.99903740 0.49316966;
+	-6.27274016 -0.00059674 0.00036567 7.27214342 0.99817682 0.99903759 0.49316973;
+	-6.27274044 -0.00059663 0.00036560 7.27214381 0.99817717 0.99903777 0.49316976;
+	-6.27274071 -0.00059651 0.00036553 7.27214420 0.99817752 0.99903796 0.49316978;
+	-6.27274099 -0.00059640 0.00036546 7.27214459 0.99817788 0.99903814 0.49316985;
+	-6.27274126 -0.00059629 0.00036539 7.27214498 0.99817823 0.99903833 0.49316985;
+	-6.27274154 -0.00059617 0.00036532 7.27214537 0.99817858 0.99903851 0.49316990;
+	-6.27274181 -0.00059606 0.00036525 7.27214575 0.99817893 0.99903870 0.49316996;
+	-6.27274208 -0.00059594 0.00036517 7.27214614 0.99817928 0.99903888 0.49317001;
+	-6.27274236 -0.00059583 0.00036510 7.27214653 0.99817963 0.99903907 0.49317000;
+	-6.27274263 -0.00059571 0.00036503 7.27214692 0.99817998 0.99903925 0.49317004;
+	-6.27274291 -0.00059560 0.00036496 7.27214731 0.99818033 0.99903944 0.49317008;
+	-6.27274318 -0.00059548 0.00036489 7.27214770 0.99818068 0.99903962 0.49317014;
+	-6.27274346 -0.00059537 0.00036482 7.27214809 0.99818103 0.99903981 0.49317022;
+	-6.27274373 -0.00059525 0.00036475 7.27214848 0.99818138 0.99903999 0.49317024;
+	-6.27274400 -0.00059514 0.00036468 7.27214886 0.99818173 0.99904018 0.49317029;
+	-6.27274428 -0.00059502 0.00036461 7.27214925 0.99818208 0.99904036 0.49317032;
+	-6.27274455 -0.00059491 0.00036454 7.27214964 0.99818243 0.99904055 0.49317037;
+	-6.27274482 -0.00059480 0.00036447 7.27215003 0.99818278 0.99904073 0.49317042;
+	-6.27274510 -0.00059468 0.00036440 7.27215042 0.99818313 0.99904092 0.49317048;
+	-6.27274537 -0.00059457 0.00036433 7.27215080 0.99818348 0.99904110 0.49317047;
+	-6.27274564 -0.00059445 0.00036426 7.27215119 0.99818383 0.99904128 0.49317056;
+	-6.27274592 -0.00059434 0.00036419 7.27215158 0.99818418 0.99904147 0.49317055;
+	-6.27274619 -0.00059422 0.00036412 7.27215197 0.99818452 0.99904165 0.49317062;
+	-6.27274646 -0.00059411 0.00036405 7.27215235 0.99818487 0.99904184 0.49317064;
+	-6.27274674 -0.00059400 0.00036398 7.27215274 0.99818522 0.99904202 0.49317066;
+	-6.27274701 -0.00059388 0.00036391 7.27215313 0.99818557 0.99904220 0.49317073;
+	-6.27274728 -0.00059377 0.00036384 7.27215351 0.99818592 0.99904239 0.49317076;
+	-6.27274755 -0.00059365 0.00036377 7.27215390 0.99818627 0.99904257 0.49317082;
+	-6.27274783 -0.00059354 0.00036370 7.27215428 0.99818661 0.99904276 0.49317086;
+	-6.27274810 -0.00059343 0.00036363 7.27215467 0.99818696 0.99904294 0.49317091;
+	-6.27274837 -0.00059331 0.00036356 7.27215506 0.99818731 0.99904312 0.49317096;
+	-6.27274864 -0.00059320 0.00036349 7.27215544 0.99818766 0.99904331 0.49317092;
+	-6.27274891 -0.00059309 0.00036342 7.27215583 0.99818800 0.99904349 0.49317097;
+	-6.27274919 -0.00059297 0.00036335 7.27215621 0.99818835 0.99904367 0.49317108;
+	-6.27274946 -0.00059286 0.00036329 7.27215660 0.99818870 0.99904386 0.49317108;
+	-6.27274973 -0.00059275 0.00036322 7.27215698 0.99818905 0.99904404 0.49317113;
+	-6.27275000 -0.00059263 0.00036315 7.27215737 0.99818939 0.99904422 0.49317119;
+	-6.27275027 -0.00059252 0.00036308 7.27215775 0.99818974 0.99904440 0.49317125;
+	-6.27275054 -0.00059241 0.00036301 7.27215814 0.99819009 0.99904459 0.49317124;
+	-6.27275081 -0.00059229 0.00036294 7.27215852 0.99819043 0.99904477 0.49317130;
+	-6.27275109 -0.00059218 0.00036287 7.27215891 0.99819078 0.99904495 0.49317131;
+	-6.27275136 -0.00059207 0.00036280 7.27215929 0.99819113 0.99904514 0.49317136;
+	-6.27275163 -0.00059195 0.00036273 7.27215968 0.99819147 0.99904532 0.49317137;
+	-6.27275190 -0.00059184 0.00036266 7.27216006 0.99819182 0.99904550 0.49317148;
+	-6.27275217 -0.00059173 0.00036259 7.27216044 0.99819216 0.99904568 0.49317152;
+	-6.27275244 -0.00059161 0.00036252 7.27216083 0.99819251 0.99904587 0.49317157;
+	-6.27275271 -0.00059150 0.00036245 7.27216121 0.99819285 0.99904605 0.49317157;
+	-6.27275298 -0.00059139 0.00036238 7.27216159 0.99819320 0.99904623 0.49317163;
+	-6.27275325 -0.00059127 0.00036231 7.27216198 0.99819355 0.99904641 0.49317168;
+	-6.27275352 -0.00059116 0.00036224 7.27216236 0.99819389 0.99904660 0.49317166;
+	-6.27275379 -0.00059105 0.00036217 7.27216274 0.99819424 0.99904678 0.49317177;
+	-6.27275406 -0.00059094 0.00036211 7.27216313 0.99819458 0.99904696 0.49317179;
+	-6.27275433 -0.00059082 0.00036204 7.27216351 0.99819493 0.99904714 0.49317185;
+	-6.27275460 -0.00059071 0.00036197 7.27216389 0.99819527 0.99904732 0.49317189;
+	-6.27275487 -0.00059060 0.00036190 7.27216427 0.99819561 0.99904751 0.49317188;
+	-6.27275514 -0.00059048 0.00036183 7.27216466 0.99819596 0.99904769 0.49317197;
+	-6.27275541 -0.00059037 0.00036176 7.27216504 0.99819630 0.99904787 0.49317199;
+	-6.27275568 -0.00059026 0.00036169 7.27216542 0.99819665 0.99904805 0.49317206;
+	-6.27275595 -0.00059015 0.00036162 7.27216580 0.99819699 0.99904823 0.49317206;
+	-6.27275622 -0.00059003 0.00036155 7.27216618 0.99819733 0.99904841 0.49317210;
+	-6.27275649 -0.00058992 0.00036148 7.27216656 0.99819768 0.99904859 0.49317215;
+	-6.27275675 -0.00058981 0.00036141 7.27216695 0.99819802 0.99904878 0.49317218;
+	-6.27275702 -0.00058970 0.00036135 7.27216733 0.99819837 0.99904896 0.49317220;
+	-6.27275729 -0.00058958 0.00036128 7.27216771 0.99819871 0.99904914 0.49317224;
+	-6.27275756 -0.00058947 0.00036121 7.27216809 0.99819905 0.99904932 0.49317231;
+	-6.27275783 -0.00058936 0.00036114 7.27216847 0.99819939 0.99904950 0.49317228;
+	-6.27275810 -0.00058925 0.00036107 7.27216885 0.99819974 0.99904968 0.49317238;
+	-6.27275837 -0.00058914 0.00036100 7.27216923 0.99820008 0.99904986 0.49317241;
+	-6.27275863 -0.00058902 0.00036093 7.27216961 0.99820042 0.99905004 0.49317245;
+	-6.27275890 -0.00058891 0.00036086 7.27216999 0.99820077 0.99905022 0.49317253;
+	-6.27275917 -0.00058880 0.00036080 7.27217037 0.99820111 0.99905040 0.49317256;
+	-6.27275944 -0.00058869 0.00036073 7.27217075 0.99820145 0.99905059 0.49317260;
+	-6.27275971 -0.00058858 0.00036066 7.27217113 0.99820179 0.99905077 0.49317263;
+	-6.27275997 -0.00058846 0.00036059 7.27217151 0.99820213 0.99905095 0.49317270;
+	-6.27276024 -0.00058835 0.00036052 7.27217189 0.99820248 0.99905113 0.49317272;
+	-6.27276051 -0.00058824 0.00036045 7.27217227 0.99820282 0.99905131 0.49317275;
+	-6.27276078 -0.00058813 0.00036038 7.27217265 0.99820316 0.99905149 0.49317277;
+	-6.27276104 -0.00058802 0.00036032 7.27217303 0.99820350 0.99905167 0.49317281;
+	-6.27276131 -0.00058790 0.00036025 7.27217341 0.99820384 0.99905185 0.49317287;
+	-6.27276158 -0.00058779 0.00036018 7.27217378 0.99820418 0.99905203 0.49317289;
+	-6.27276184 -0.00058768 0.00036011 7.27217416 0.99820453 0.99905221 0.49317299;
+	-6.27276211 -0.00058757 0.00036004 7.27217454 0.99820487 0.99905239 0.49317296;
+	-6.27276238 -0.00058746 0.00035997 7.27217492 0.99820521 0.99905257 0.49317302;
+	-6.27276265 -0.00058735 0.00035991 7.27217530 0.99820555 0.99905275 0.49317307;
+	-6.27276291 -0.00058724 0.00035984 7.27217568 0.99820589 0.99905293 0.49317310;
+	-6.27276318 -0.00058712 0.00035977 7.27217605 0.99820623 0.99905311 0.49317316;
+	-6.27276344 -0.00058701 0.00035970 7.27217643 0.99820657 0.99905329 0.49317319;
+	-6.27276371 -0.00058690 0.00035963 7.27217681 0.99820691 0.99905347 0.49317321;
+	-6.27276398 -0.00058679 0.00035956 7.27217719 0.99820725 0.99905365 0.49317328;
+	-6.27276424 -0.00058668 0.00035950 7.27217756 0.99820759 0.99905383 0.49317329;
+	-6.27276451 -0.00058657 0.00035943 7.27217794 0.99820793 0.99905400 0.49317335;
+	-6.27276478 -0.00058646 0.00035936 7.27217832 0.99820827 0.99905418 0.49317337;
+	-6.27276504 -0.00058635 0.00035929 7.27217870 0.99820861 0.99905436 0.49317339;
+	-6.27276531 -0.00058623 0.00035922 7.27217907 0.99820895 0.99905454 0.49317346;
+	-6.27276557 -0.00058612 0.00035916 7.27217945 0.99820929 0.99905472 0.49317350;
+	-6.27276584 -0.00058601 0.00035909 7.27217982 0.99820963 0.99905490 0.49317354;
+	-6.27276610 -0.00058590 0.00035902 7.27218020 0.99820997 0.99905508 0.49317358;
+	-6.27276637 -0.00058579 0.00035895 7.27218058 0.99821030 0.99905526 0.49317361;
+	-6.27276663 -0.00058568 0.00035888 7.27218095 0.99821064 0.99905544 0.49317361;
+	-6.27276690 -0.00058557 0.00035882 7.27218133 0.99821098 0.99905562 0.49317370;
+	-6.27276716 -0.00058546 0.00035875 7.27218170 0.99821132 0.99905579 0.49317372;
+	-6.27276743 -0.00058535 0.00035868 7.27218208 0.99821166 0.99905597 0.49317378;
+	-6.27276769 -0.00058524 0.00035861 7.27218246 0.99821200 0.99905615 0.49317376;
+	-6.27276796 -0.00058513 0.00035854 7.27218283 0.99821233 0.99905633 0.49317387;
+	-6.27276822 -0.00058502 0.00035848 7.27218321 0.99821267 0.99905651 0.49317387;
+	-6.27276849 -0.00058491 0.00035841 7.27218358 0.99821301 0.99905669 0.49317394;
+	-6.27276875 -0.00058480 0.00035834 7.27218396 0.99821335 0.99905686 0.49317397;
+	-6.27276902 -0.00058468 0.00035827 7.27218433 0.99821369 0.99905704 0.49317398;
+	-6.27276928 -0.00058457 0.00035820 7.27218471 0.99821402 0.99905722 0.49317402;
+	-6.27276954 -0.00058446 0.00035814 7.27218508 0.99821436 0.99905740 0.49317408;
+	-6.27276981 -0.00058435 0.00035807 7.27218545 0.99821470 0.99905758 0.49317410;
+	-6.27277007 -0.00058424 0.00035800 7.27218583 0.99821504 0.99905775 0.49317417;
+	-6.27277034 -0.00058413 0.00035793 7.27218620 0.99821537 0.99905793 0.49317422;
+	-6.27277060 -0.00058402 0.00035787 7.27218658 0.99821571 0.99905811 0.49317425;
+	-6.27277086 -0.00058391 0.00035780 7.27218695 0.99821605 0.99905829 0.49317429;
+	-6.27277113 -0.00058380 0.00035773 7.27218732 0.99821638 0.99905847 0.49317428;
+	-6.27277139 -0.00058369 0.00035766 7.27218770 0.99821672 0.99905864 0.49317437;
+	-6.27277165 -0.00058358 0.00035760 7.27218807 0.99821706 0.99905882 0.49317446;
+	-6.27277192 -0.00058347 0.00035753 7.27218844 0.99821739 0.99905900 0.49317445;
+	-6.27277218 -0.00058336 0.00035746 7.27218882 0.99821773 0.99905918 0.49317449;
+	-6.27277244 -0.00058325 0.00035739 7.27218919 0.99821806 0.99905935 0.49317453;
+	-6.27277270 -0.00058314 0.00035733 7.27218956 0.99821840 0.99905953 0.49317457;
+	-6.27277297 -0.00058303 0.00035726 7.27218993 0.99821874 0.99905971 0.49317458;
+	-6.27277323 -0.00058292 0.00035719 7.27219031 0.99821907 0.99905988 0.49317467;
+	-6.27277349 -0.00058281 0.00035712 7.27219068 0.99821941 0.99906006 0.49317464;
+	-6.27277376 -0.00058270 0.00035706 7.27219105 0.99821974 0.99906024 0.49317472;
+	-6.27277402 -0.00058259 0.00035699 7.27219142 0.99822008 0.99906042 0.49317476;
+	-6.27277428 -0.00058248 0.00035692 7.27219180 0.99822041 0.99906059 0.49317478;
+	-6.27277454 -0.00058237 0.00035686 7.27219217 0.99822075 0.99906077 0.49317481;
+	-6.27277480 -0.00058227 0.00035679 7.27219254 0.99822108 0.99906095 0.49317486;
+	-6.27277507 -0.00058216 0.00035672 7.27219291 0.99822142 0.99906112 0.49317492;
+	-6.27277533 -0.00058205 0.00035665 7.27219328 0.99822175 0.99906130 0.49317497;
+	-6.27277559 -0.00058194 0.00035659 7.27219365 0.99822209 0.99906148 0.49317500;
+	-6.27277585 -0.00058183 0.00035652 7.27219402 0.99822242 0.99906165 0.49317504;
+	-6.27277611 -0.00058172 0.00035645 7.27219440 0.99822275 0.99906183 0.49317502;
+	-6.27277637 -0.00058161 0.00035639 7.27219477 0.99822309 0.99906200 0.49317510;
+	-6.27277664 -0.00058150 0.00035632 7.27219514 0.99822342 0.99906218 0.49317515;
+	-6.27277690 -0.00058139 0.00035625 7.27219551 0.99822376 0.99906236 0.49317515;
+	-6.27277716 -0.00058128 0.00035619 7.27219588 0.99822409 0.99906253 0.49317527;
+	-6.27277742 -0.00058117 0.00035612 7.27219625 0.99822442 0.99906271 0.49317521;
+	-6.27277768 -0.00058106 0.00035605 7.27219662 0.99822476 0.99906289 0.49317533;
+	-6.27277794 -0.00058095 0.00035598 7.27219699 0.99822509 0.99906306 0.49317536;
+	-6.27277820 -0.00058084 0.00035592 7.27219736 0.99822542 0.99906324 0.49317532;
+	-6.27277846 -0.00058074 0.00035585 7.27219773 0.99822576 0.99906341 0.49317542;
+	-6.27277872 -0.00058063 0.00035578 7.27219810 0.99822609 0.99906359 0.49317544;
+	-6.27277898 -0.00058052 0.00035572 7.27219847 0.99822642 0.99906376 0.49317549;
+	-6.27277924 -0.00058041 0.00035565 7.27219884 0.99822675 0.99906394 0.49317552;
+	-6.27277950 -0.00058030 0.00035558 7.27219920 0.99822709 0.99906412 0.49317558;
+	-6.27277977 -0.00058019 0.00035552 7.27219957 0.99822742 0.99906429 0.49317562;
+	-6.27278003 -0.00058008 0.00035545 7.27219994 0.99822775 0.99906447 0.49317566;
+	-6.27278029 -0.00057997 0.00035538 7.27220031 0.99822808 0.99906464 0.49317568;
+	-6.27278055 -0.00057987 0.00035532 7.27220068 0.99822842 0.99906482 0.49317573;
+	-6.27278080 -0.00057976 0.00035525 7.27220105 0.99822875 0.99906499 0.49317574;
+	-6.27278106 -0.00057965 0.00035518 7.27220142 0.99822908 0.99906517 0.49317581;
+	-6.27278132 -0.00057954 0.00035512 7.27220178 0.99822941 0.99906534 0.49317584;
+	-6.27278158 -0.00057943 0.00035505 7.27220215 0.99822974 0.99906552 0.49317591;
+	-6.27278184 -0.00057932 0.00035498 7.27220252 0.99823008 0.99906569 0.49317591;
+	-6.27278210 -0.00057921 0.00035492 7.27220289 0.99823041 0.99906587 0.49317595;
+	-6.27278236 -0.00057911 0.00035485 7.27220326 0.99823074 0.99906604 0.49317597;
+	-6.27278262 -0.00057900 0.00035479 7.27220362 0.99823107 0.99906622 0.49317601;
+	-6.27278288 -0.00057889 0.00035472 7.27220399 0.99823140 0.99906639 0.49317609;
+	-6.27278314 -0.00057878 0.00035465 7.27220436 0.99823173 0.99906657 0.49317610;
+	-6.27278340 -0.00057867 0.00035459 7.27220472 0.99823206 0.99906674 0.49317615;
+	-6.27278366 -0.00057857 0.00035452 7.27220509 0.99823239 0.99906691 0.49317621;
+	-6.27278392 -0.00057846 0.00035445 7.27220546 0.99823272 0.99906709 0.49317622;
+	-6.27278417 -0.00057835 0.00035439 7.27220582 0.99823305 0.99906726 0.49317632;
+	-6.27278443 -0.00057824 0.00035432 7.27220619 0.99823338 0.99906744 0.49317629;
+	-6.27278469 -0.00057813 0.00035425 7.27220656 0.99823371 0.99906761 0.49317636;
+	-6.27278495 -0.00057802 0.00035419 7.27220692 0.99823404 0.99906779 0.49317638;
+	-6.27278521 -0.00057792 0.00035412 7.27220729 0.99823437 0.99906796 0.49317641;
+	-6.27278547 -0.00057781 0.00035406 7.27220766 0.99823470 0.99906813 0.49317644;
+	-6.27278572 -0.00057770 0.00035399 7.27220802 0.99823503 0.99906831 0.49317646;
+	-6.27278598 -0.00057759 0.00035392 7.27220839 0.99823536 0.99906848 0.49317651;
+	-6.27278624 -0.00057749 0.00035386 7.27220875 0.99823569 0.99906866 0.49317654;
+	-6.27278650 -0.00057738 0.00035379 7.27220912 0.99823602 0.99906883 0.49317660;
+	-6.27278675 -0.00057727 0.00035373 7.27220948 0.99823635 0.99906900 0.49317666;
+	-6.27278701 -0.00057716 0.00035366 7.27220985 0.99823668 0.99906918 0.49317668;
+	-6.27278727 -0.00057706 0.00035359 7.27221021 0.99823701 0.99906935 0.49317676;
+	-6.27278753 -0.00057695 0.00035353 7.27221058 0.99823734 0.99906952 0.49317676;
+	-6.27278778 -0.00057684 0.00035346 7.27221094 0.99823766 0.99906970 0.49317678;
+	-6.27278804 -0.00057673 0.00035340 7.27221131 0.99823799 0.99906987 0.49317683;
+	-6.27278830 -0.00057663 0.00035333 7.27221167 0.99823832 0.99907004 0.49317687;
+	-6.27278855 -0.00057652 0.00035326 7.27221204 0.99823865 0.99907022 0.49317691;
+	-6.27278881 -0.00057641 0.00035320 7.27221240 0.99823898 0.99907039 0.49317697;
+	-6.27278907 -0.00057630 0.00035313 7.27221277 0.99823931 0.99907056 0.49317699;
+	-6.27278933 -0.00057620 0.00035307 7.27221313 0.99823963 0.99907074 0.49317702;
+	-6.27278958 -0.00057609 0.00035300 7.27221349 0.99823996 0.99907091 0.49317708;
+	-6.27278984 -0.00057598 0.00035294 7.27221386 0.99824029 0.99907108 0.49317710;
+	-6.27279009 -0.00057587 0.00035287 7.27221422 0.99824062 0.99907126 0.49317717;
+	-6.27279035 -0.00057577 0.00035280 7.27221458 0.99824094 0.99907143 0.49317720;
+	-6.27279061 -0.00057566 0.00035274 7.27221495 0.99824127 0.99907160 0.49317720;
+	-6.27279086 -0.00057555 0.00035267 7.27221531 0.99824160 0.99907177 0.49317727;
+	-6.27279112 -0.00057545 0.00035261 7.27221567 0.99824193 0.99907195 0.49317735;
+	-6.27279137 -0.00057534 0.00035254 7.27221604 0.99824225 0.99907212 0.49317732;
+	-6.27279163 -0.00057523 0.00035248 7.27221640 0.99824258 0.99907229 0.49317739;
+	-6.27279189 -0.00057513 0.00035241 7.27221676 0.99824291 0.99907246 0.49317738;
+	-6.27279214 -0.00057502 0.00035235 7.27221712 0.99824323 0.99907264 0.49317745;
+	-6.27279240 -0.00057491 0.00035228 7.27221749 0.99824356 0.99907281 0.49317748;
+	-6.27279265 -0.00057480 0.00035221 7.27221785 0.99824389 0.99907298 0.49317752;
+	-6.27279291 -0.00057470 0.00035215 7.27221821 0.99824421 0.99907315 0.49317757;
+	-6.27279316 -0.00057459 0.00035208 7.27221857 0.99824454 0.99907332 0.49317760;
+	-6.27279342 -0.00057448 0.00035202 7.27221893 0.99824486 0.99907350 0.49317764;
+	-6.27279367 -0.00057438 0.00035195 7.27221930 0.99824519 0.99907367 0.49317766;
+	-6.27279393 -0.00057427 0.00035189 7.27221966 0.99824551 0.99907384 0.49317770;
+	-6.27279418 -0.00057417 0.00035182 7.27222002 0.99824584 0.99907401 0.49317777;
+	-6.27279444 -0.00057406 0.00035176 7.27222038 0.99824617 0.99907418 0.49317774;
+	-6.27279469 -0.00057395 0.00035169 7.27222074 0.99824649 0.99907436 0.49317781;
+	-6.27279495 -0.00057385 0.00035163 7.27222110 0.99824682 0.99907453 0.49317792;
+	-6.27279520 -0.00057374 0.00035156 7.27222146 0.99824714 0.99907470 0.49317788;
+	-6.27279546 -0.00057363 0.00035150 7.27222182 0.99824747 0.99907487 0.49317793;
+	-6.27279571 -0.00057353 0.00035143 7.27222218 0.99824779 0.99907504 0.49317800;
+	-6.27279596 -0.00057342 0.00035137 7.27222254 0.99824812 0.99907521 0.49317798;
+	-6.27279622 -0.00057331 0.00035130 7.27222290 0.99824844 0.99907538 0.49317810;
+	-6.27279647 -0.00057321 0.00035124 7.27222326 0.99824877 0.99907556 0.49317811;
+	-6.27279673 -0.00057310 0.00035117 7.27222362 0.99824909 0.99907573 0.49317808;
+	-6.27279698 -0.00057300 0.00035111 7.27222398 0.99824941 0.99907590 0.49317818;
+	-6.27279723 -0.00057289 0.00035104 7.27222434 0.99824974 0.99907607 0.49317820;
+	-6.27279749 -0.00057278 0.00035098 7.27222470 0.99825006 0.99907624 0.49317824;
+	-6.27279774 -0.00057268 0.00035091 7.27222506 0.99825039 0.99907641 0.49317828;
+	-6.27279799 -0.00057257 0.00035085 7.27222542 0.99825071 0.99907658 0.49317828;
+	-6.27279825 -0.00057247 0.00035078 7.27222578 0.99825103 0.99907675 0.49317836;
+	-6.27279850 -0.00057236 0.00035072 7.27222614 0.99825136 0.99907692 0.49317841;
+	-6.27279875 -0.00057225 0.00035065 7.27222650 0.99825168 0.99907709 0.49317844;
+	-6.27279901 -0.00057215 0.00035059 7.27222686 0.99825200 0.99907727 0.49317846;
+	-6.27279926 -0.00057204 0.00035052 7.27222722 0.99825233 0.99907744 0.49317853;
+	-6.27279951 -0.00057194 0.00035046 7.27222758 0.99825265 0.99907761 0.49317855;
+	-6.27279977 -0.00057183 0.00035039 7.27222793 0.99825297 0.99907778 0.49317862;
+	-6.27280002 -0.00057173 0.00035033 7.27222829 0.99825330 0.99907795 0.49317862;
+	-6.27280027 -0.00057162 0.00035026 7.27222865 0.99825362 0.99907812 0.49317865;
+	-6.27280052 -0.00057152 0.00035020 7.27222901 0.99825394 0.99907829 0.49317872;
+	-6.27280078 -0.00057141 0.00035013 7.27222937 0.99825426 0.99907846 0.49317874;
+	-6.27280103 -0.00057130 0.00035007 7.27222972 0.99825459 0.99907863 0.49317875;
+	-6.27280128 -0.00057120 0.00035000 7.27223008 0.99825491 0.99907880 0.49317879;
+	-6.27280153 -0.00057109 0.00034994 7.27223044 0.99825523 0.99907897 0.49317885;
+	-6.27280178 -0.00057099 0.00034987 7.27223080 0.99825555 0.99907914 0.49317886;
+	-6.27280204 -0.00057088 0.00034981 7.27223115 0.99825587 0.99907931 0.49317891;
+	-6.27280229 -0.00057078 0.00034974 7.27223151 0.99825620 0.99907948 0.49317896;
+	-6.27280254 -0.00057067 0.00034968 7.27223187 0.99825652 0.99907965 0.49317901;
+	-6.27280279 -0.00057057 0.00034962 7.27223222 0.99825684 0.99907982 0.49317904;
+	-6.27280304 -0.00057046 0.00034955 7.27223258 0.99825716 0.99907999 0.49317904;
+	-6.27280329 -0.00057036 0.00034949 7.27223294 0.99825748 0.99908016 0.49317910;
+	-6.27280355 -0.00057025 0.00034942 7.27223329 0.99825780 0.99908033 0.49317919;
+	-6.27280380 -0.00057015 0.00034936 7.27223365 0.99825812 0.99908050 0.49317919;
+	-6.27280405 -0.00057004 0.00034929 7.27223401 0.99825844 0.99908066 0.49317919;
+	-6.27280430 -0.00056994 0.00034923 7.27223436 0.99825877 0.99908083 0.49317929;
+	-6.27280455 -0.00056983 0.00034916 7.27223472 0.99825909 0.99908100 0.49317932;
+	-6.27280480 -0.00056973 0.00034910 7.27223507 0.99825941 0.99908117 0.49317933;
+	-6.27280505 -0.00056962 0.00034904 7.27223543 0.99825973 0.99908134 0.49317936;
+	-6.27280530 -0.00056952 0.00034897 7.27223579 0.99826005 0.99908151 0.49317942;
+	-6.27280555 -0.00056941 0.00034891 7.27223614 0.99826037 0.99908168 0.49317941;
+	-6.27280580 -0.00056931 0.00034884 7.27223650 0.99826069 0.99908185 0.49317944;
+	-6.27280606 -0.00056920 0.00034878 7.27223685 0.99826101 0.99908202 0.49317951;
+	-6.27280631 -0.00056910 0.00034872 7.27223721 0.99826133 0.99908219 0.49317958;
+	-6.27280656 -0.00056899 0.00034865 7.27223756 0.99826165 0.99908235 0.49317962;
+	-6.27280681 -0.00056889 0.00034859 7.27223792 0.99826197 0.99908252 0.49317961;
+	-6.27280706 -0.00056878 0.00034852 7.27223827 0.99826229 0.99908269 0.49317963;
+	-6.27280731 -0.00056868 0.00034846 7.27223863 0.99826261 0.99908286 0.49317970;
+	-6.27280756 -0.00056858 0.00034839 7.27223898 0.99826293 0.99908303 0.49317974;
+	-6.27280781 -0.00056847 0.00034833 7.27223933 0.99826324 0.99908320 0.49317978;
+	-6.27280806 -0.00056837 0.00034827 7.27223969 0.99826356 0.99908337 0.49317977;
+	-6.27280830 -0.00056826 0.00034820 7.27224004 0.99826388 0.99908353 0.49317984;
+	-6.27280855 -0.00056816 0.00034814 7.27224040 0.99826420 0.99908370 0.49317991;
+	-6.27280880 -0.00056805 0.00034807 7.27224075 0.99826452 0.99908387 0.49317993;
+	-6.27280905 -0.00056795 0.00034801 7.27224110 0.99826484 0.99908404 0.49317997;
+	-6.27280930 -0.00056785 0.00034795 7.27224146 0.99826516 0.99908421 0.49317999;
+	-6.27280955 -0.00056774 0.00034788 7.27224181 0.99826547 0.99908438 0.49318004;
+	-6.27280980 -0.00056764 0.00034782 7.27224216 0.99826579 0.99908454 0.49318009;
+	-6.27281005 -0.00056753 0.00034776 7.27224252 0.99826611 0.99908471 0.49318013;
+	-6.27281030 -0.00056743 0.00034769 7.27224287 0.99826643 0.99908488 0.49318014;
+	-6.27281055 -0.00056733 0.00034763 7.27224322 0.99826675 0.99908505 0.49318020;
+	-6.27281080 -0.00056722 0.00034756 7.27224357 0.99826706 0.99908521 0.49318023;
+	-6.27281104 -0.00056712 0.00034750 7.27224393 0.99826738 0.99908538 0.49318021;
+	-6.27281129 -0.00056701 0.00034744 7.27224428 0.99826770 0.99908555 0.49318033;
+	-6.27281154 -0.00056691 0.00034737 7.27224463 0.99826802 0.99908572 0.49318033;
+	-6.27281179 -0.00056681 0.00034731 7.27224498 0.99826833 0.99908588 0.49318036;
+	-6.27281204 -0.00056670 0.00034725 7.27224534 0.99826865 0.99908605 0.49318042;
+	-6.27281229 -0.00056660 0.00034718 7.27224569 0.99826897 0.99908622 0.49318046;
+	-6.27281253 -0.00056649 0.00034712 7.27224604 0.99826929 0.99908639 0.49318048;
+	-6.27281278 -0.00056639 0.00034706 7.27224639 0.99826960 0.99908655 0.49318053;
+	-6.27281303 -0.00056629 0.00034699 7.27224674 0.99826992 0.99908672 0.49318056;
+	-6.27281328 -0.00056618 0.00034693 7.27224709 0.99827024 0.99908689 0.49318059;
+	-6.27281353 -0.00056608 0.00034686 7.27224745 0.99827055 0.99908705 0.49318066;
+	-6.27281377 -0.00056598 0.00034680 7.27224780 0.99827087 0.99908722 0.49318067;
+	-6.27281402 -0.00056587 0.00034674 7.27224815 0.99827119 0.99908739 0.49318073;
+	-6.27281427 -0.00056577 0.00034667 7.27224850 0.99827150 0.99908756 0.49318072;
+	-6.27281452 -0.00056567 0.00034661 7.27224885 0.99827182 0.99908772 0.49318077;
+	-6.27281476 -0.00056556 0.00034655 7.27224920 0.99827213 0.99908789 0.49318079;
+	-6.27281501 -0.00056546 0.00034648 7.27224955 0.99827245 0.99908806 0.49318086;
+	-6.27281526 -0.00056536 0.00034642 7.27224990 0.99827276 0.99908822 0.49318086;
+	-6.27281550 -0.00056525 0.00034636 7.27225025 0.99827308 0.99908839 0.49318091;
+	-6.27281575 -0.00056515 0.00034629 7.27225060 0.99827340 0.99908856 0.49318093;
+	-6.27281600 -0.00056505 0.00034623 7.27225095 0.99827371 0.99908872 0.49318097;
+	-6.27281624 -0.00056494 0.00034617 7.27225130 0.99827403 0.99908889 0.49318102;
+	-6.27281649 -0.00056484 0.00034610 7.27225165 0.99827434 0.99908905 0.49318109;
+	-6.27281674 -0.00056474 0.00034604 7.27225200 0.99827466 0.99908922 0.49318111;
+	-6.27281698 -0.00056463 0.00034598 7.27225235 0.99827497 0.99908939 0.49318114;
+	-6.27281723 -0.00056453 0.00034592 7.27225270 0.99827529 0.99908955 0.49318118;
+	-6.27281748 -0.00056443 0.00034585 7.27225305 0.99827560 0.99908972 0.49318122;
+	-6.27281772 -0.00056433 0.00034579 7.27225340 0.99827591 0.99908988 0.49318124;
+	-6.27281797 -0.00056422 0.00034573 7.27225375 0.99827623 0.99909005 0.49318128;
+	-6.27281822 -0.00056412 0.00034566 7.27225409 0.99827654 0.99909022 0.49318131;
+	-6.27281846 -0.00056402 0.00034560 7.27225444 0.99827686 0.99909038 0.49318135;
+	-6.27281871 -0.00056391 0.00034554 7.27225479 0.99827717 0.99909055 0.49318140;
+	-6.27281895 -0.00056381 0.00034547 7.27225514 0.99827749 0.99909071 0.49318139;
+	-6.27281920 -0.00056371 0.00034541 7.27225549 0.99827780 0.99909088 0.49318148;
+	-6.27281944 -0.00056361 0.00034535 7.27225584 0.99827811 0.99909105 0.49318152;
+	-6.27281969 -0.00056350 0.00034528 7.27225619 0.99827843 0.99909121 0.49318156;
+	-6.27281993 -0.00056340 0.00034522 7.27225653 0.99827874 0.99909138 0.49318159;
+	-6.27282018 -0.00056330 0.00034516 7.27225688 0.99827905 0.99909154 0.49318163;
+	-6.27282043 -0.00056320 0.00034510 7.27225723 0.99827937 0.99909171 0.49318166;
+	-6.27282067 -0.00056309 0.00034503 7.27225758 0.99827968 0.99909187 0.49318168;
+	-6.27282092 -0.00056299 0.00034497 7.27225792 0.99827999 0.99909204 0.49318179;
+	-6.27282116 -0.00056289 0.00034491 7.27225827 0.99828031 0.99909220 0.49318171;
+	-6.27282141 -0.00056279 0.00034485 7.27225862 0.99828062 0.99909237 0.49318177;
+	-6.27282165 -0.00056268 0.00034478 7.27225897 0.99828093 0.99909253 0.49318188;
+	-6.27282189 -0.00056258 0.00034472 7.27225931 0.99828124 0.99909270 0.49318185;
+	-6.27282214 -0.00056248 0.00034466 7.27225966 0.99828156 0.99909286 0.49318190;
+	-6.27282238 -0.00056238 0.00034459 7.27226001 0.99828187 0.99909303 0.49318196;
+	-6.27282263 -0.00056228 0.00034453 7.27226035 0.99828218 0.99909319 0.49318197;
+	-6.27282287 -0.00056217 0.00034447 7.27226070 0.99828249 0.99909336 0.49318203;
+	-6.27282312 -0.00056207 0.00034441 7.27226104 0.99828281 0.99909352 0.49318204;
+	-6.27282336 -0.00056197 0.00034434 7.27226139 0.99828312 0.99909369 0.49318210;
+	-6.27282360 -0.00056187 0.00034428 7.27226174 0.99828343 0.99909385 0.49318213;
+	-6.27282385 -0.00056177 0.00034422 7.27226208 0.99828374 0.99909402 0.49318217;
+	-6.27282409 -0.00056166 0.00034416 7.27226243 0.99828405 0.99909418 0.49318219;
+	-6.27282434 -0.00056156 0.00034409 7.27226277 0.99828436 0.99909434 0.49318217;
+	-6.27282458 -0.00056146 0.00034403 7.27226312 0.99828467 0.99909451 0.49318229;
+	-6.27282482 -0.00056136 0.00034397 7.27226347 0.99828499 0.99909467 0.49318235;
+	-6.27282507 -0.00056126 0.00034391 7.27226381 0.99828530 0.99909484 0.49318234;
+	-6.27282531 -0.00056115 0.00034384 7.27226416 0.99828561 0.99909500 0.49318238;
+	-6.27282555 -0.00056105 0.00034378 7.27226450 0.99828592 0.99909516 0.49318244;
+	-6.27282580 -0.00056095 0.00034372 7.27226485 0.99828623 0.99909533 0.49318245;
+	-6.27282604 -0.00056085 0.00034366 7.27226519 0.99828654 0.99909549 0.49318251;
+	-6.27282628 -0.00056075 0.00034360 7.27226554 0.99828685 0.99909566 0.49318249;
+	-6.27282653 -0.00056065 0.00034353 7.27226588 0.99828716 0.99909582 0.49318260;
+	-6.27282677 -0.00056055 0.00034347 7.27226622 0.99828747 0.99909598 0.49318256;
+	-6.27282701 -0.00056044 0.00034341 7.27226657 0.99828778 0.99909615 0.49318268;
+	-6.27282725 -0.00056034 0.00034335 7.27226691 0.99828809 0.99909631 0.49318269;
+	-6.27282750 -0.00056024 0.00034328 7.27226726 0.99828840 0.99909648 0.49318273;
+	-6.27282774 -0.00056014 0.00034322 7.27226760 0.99828871 0.99909664 0.49318276;
+	-6.27282798 -0.00056004 0.00034316 7.27226794 0.99828902 0.99909680 0.49318278;
+	-6.27282822 -0.00055994 0.00034310 7.27226829 0.99828933 0.99909697 0.49318281;
+	-6.27282847 -0.00055984 0.00034304 7.27226863 0.99828964 0.99909713 0.49318285;
+	-6.27282871 -0.00055973 0.00034297 7.27226898 0.99828995 0.99909729 0.49318289;
+	-6.27282895 -0.00055963 0.00034291 7.27226932 0.99829026 0.99909746 0.49318294;
+	-6.27282919 -0.00055953 0.00034285 7.27226966 0.99829057 0.99909762 0.49318296;
+	-6.27282944 -0.00055943 0.00034279 7.27227000 0.99829088 0.99909778 0.49318295;
+	-6.27282968 -0.00055933 0.00034273 7.27227035 0.99829119 0.99909794 0.49318302;
+	-6.27282992 -0.00055923 0.00034266 7.27227069 0.99829150 0.99909811 0.49318310;
+	-6.27283016 -0.00055913 0.00034260 7.27227103 0.99829180 0.99909827 0.49318311;
+	-6.27283040 -0.00055903 0.00034254 7.27227138 0.99829211 0.99909843 0.49318314;
+	-6.27283064 -0.00055893 0.00034248 7.27227172 0.99829242 0.99909860 0.49318318;
+	-6.27283089 -0.00055882 0.00034242 7.27227206 0.99829273 0.99909876 0.49318320;
+	-6.27283113 -0.00055872 0.00034235 7.27227240 0.99829304 0.99909892 0.49318320;
+	-6.27283137 -0.00055862 0.00034229 7.27227274 0.99829335 0.99909908 0.49318327;
+	-6.27283161 -0.00055852 0.00034223 7.27227309 0.99829365 0.99909925 0.49318333;
+	-6.27283185 -0.00055842 0.00034217 7.27227343 0.99829396 0.99909941 0.49318333;
+	-6.27283209 -0.00055832 0.00034211 7.27227377 0.99829427 0.99909957 0.49318336;
+	-6.27283233 -0.00055822 0.00034204 7.27227411 0.99829458 0.99909973 0.49318343;
+	-6.27283257 -0.00055812 0.00034198 7.27227445 0.99829489 0.99909990 0.49318344;
+	-6.27283281 -0.00055802 0.00034192 7.27227479 0.99829519 0.99910006 0.49318351;
+	-6.27283305 -0.00055792 0.00034186 7.27227514 0.99829550 0.99910022 0.49318353;
+	-6.27283329 -0.00055782 0.00034180 7.27227548 0.99829581 0.99910038 0.49318358;
+	-6.27283353 -0.00055772 0.00034174 7.27227582 0.99829611 0.99910055 0.49318362;
+	-6.27283378 -0.00055762 0.00034168 7.27227616 0.99829642 0.99910071 0.49318360;
+	-6.27283402 -0.00055752 0.00034161 7.27227650 0.99829673 0.99910087 0.49318367;
+	-6.27283426 -0.00055742 0.00034155 7.27227684 0.99829704 0.99910103 0.49318371;
+	-6.27283450 -0.00055732 0.00034149 7.27227718 0.99829734 0.99910119 0.49318374;
+	-6.27283474 -0.00055722 0.00034143 7.27227752 0.99829765 0.99910136 0.49318380;
+	-6.27283498 -0.00055712 0.00034137 7.27227786 0.99829796 0.99910152 0.49318376;
+	-6.27283522 -0.00055701 0.00034131 7.27227820 0.99829826 0.99910168 0.49318386;
+	-6.27283546 -0.00055691 0.00034124 7.27227854 0.99829857 0.99910184 0.49318389;
+	-6.27283570 -0.00055681 0.00034118 7.27227888 0.99829887 0.99910200 0.49318390;
+	-6.27283593 -0.00055671 0.00034112 7.27227922 0.99829918 0.99910216 0.49318396;
+	-6.27283617 -0.00055661 0.00034106 7.27227956 0.99829949 0.99910233 0.49318401;
+	-6.27283641 -0.00055651 0.00034100 7.27227990 0.99829979 0.99910249 0.49318410;
+	-6.27283665 -0.00055641 0.00034094 7.27228024 0.99830010 0.99910265 0.49318407;
+	-6.27283689 -0.00055631 0.00034088 7.27228058 0.99830040 0.99910281 0.49318407;
+	-6.27283713 -0.00055621 0.00034081 7.27228092 0.99830071 0.99910297 0.49318414;
+	-6.27283737 -0.00055611 0.00034075 7.27228126 0.99830101 0.99910313 0.49318415;
+	-6.27283761 -0.00055601 0.00034069 7.27228159 0.99830132 0.99910329 0.49318423;
+	-6.27283785 -0.00055591 0.00034063 7.27228193 0.99830163 0.99910345 0.49318423;
+	-6.27283809 -0.00055581 0.00034057 7.27228227 0.99830193 0.99910362 0.49318427;
+	-6.27283833 -0.00055571 0.00034051 7.27228261 0.99830224 0.99910378 0.49318428;
+	-6.27283856 -0.00055562 0.00034045 7.27228295 0.99830254 0.99910394 0.49318433;
+	-6.27283880 -0.00055552 0.00034039 7.27228329 0.99830285 0.99910410 0.49318443;
+	-6.27283904 -0.00055542 0.00034033 7.27228363 0.99830315 0.99910426 0.49318443;
+	-6.27283928 -0.00055532 0.00034026 7.27228396 0.99830345 0.99910442 0.49318449;
+	-6.27283952 -0.00055522 0.00034020 7.27228430 0.99830376 0.99910458 0.49318449;
+	-6.27283976 -0.00055512 0.00034014 7.27228464 0.99830406 0.99910474 0.49318454;
+	-6.27283999 -0.00055502 0.00034008 7.27228498 0.99830437 0.99910490 0.49318457;
+	-6.27284023 -0.00055492 0.00034002 7.27228531 0.99830467 0.99910506 0.49318459;
+	-6.27284047 -0.00055482 0.00033996 7.27228565 0.99830498 0.99910522 0.49318460;
+	-6.27284071 -0.00055472 0.00033990 7.27228599 0.99830528 0.99910538 0.49318465;
+	-6.27284095 -0.00055462 0.00033984 7.27228633 0.99830558 0.99910554 0.49318472;
+	-6.27284118 -0.00055452 0.00033978 7.27228666 0.99830589 0.99910570 0.49318477;
+	-6.27284142 -0.00055442 0.00033972 7.27228700 0.99830619 0.99910586 0.49318479;
+	-6.27284166 -0.00055432 0.00033965 7.27228734 0.99830649 0.99910602 0.49318483;
+	-6.27284190 -0.00055422 0.00033959 7.27228767 0.99830680 0.99910618 0.49318487;
+	-6.27284213 -0.00055412 0.00033953 7.27228801 0.99830710 0.99910634 0.49318489;
+	-6.27284237 -0.00055402 0.00033947 7.27228835 0.99830740 0.99910650 0.49318490;
+	-6.27284261 -0.00055393 0.00033941 7.27228868 0.99830771 0.99910666 0.49318496;
+	-6.27284285 -0.00055383 0.00033935 7.27228902 0.99830801 0.99910682 0.49318499;
+	-6.27284308 -0.00055373 0.00033929 7.27228936 0.99830831 0.99910698 0.49318499;
+	-6.27284332 -0.00055363 0.00033923 7.27228969 0.99830861 0.99910714 0.49318509;
+	-6.27284356 -0.00055353 0.00033917 7.27229003 0.99830892 0.99910730 0.49318511;
+	-6.27284379 -0.00055343 0.00033911 7.27229036 0.99830922 0.99910746 0.49318515;
+	-6.27284403 -0.00055333 0.00033905 7.27229070 0.99830952 0.99910762 0.49318516;
+	-6.27284427 -0.00055323 0.00033899 7.27229103 0.99830982 0.99910778 0.49318524;
+	-6.27284450 -0.00055313 0.00033893 7.27229137 0.99831013 0.99910794 0.49318524;
+	-6.27284474 -0.00055303 0.00033887 7.27229170 0.99831043 0.99910810 0.49318528;
+	-6.27284498 -0.00055294 0.00033880 7.27229204 0.99831073 0.99910826 0.49318529;
+	-6.27284521 -0.00055284 0.00033874 7.27229237 0.99831103 0.99910842 0.49318533;
+	-6.27284545 -0.00055274 0.00033868 7.27229271 0.99831133 0.99910858 0.49318539;
+	-6.27284568 -0.00055264 0.00033862 7.27229304 0.99831164 0.99910874 0.49318542;
+	-6.27284592 -0.00055254 0.00033856 7.27229338 0.99831194 0.99910890 0.49318543;
+	-6.27284616 -0.00055244 0.00033850 7.27229371 0.99831224 0.99910906 0.49318547;
+	-6.27284639 -0.00055234 0.00033844 7.27229405 0.99831254 0.99910921 0.49318555;
+	-6.27284663 -0.00055225 0.00033838 7.27229438 0.99831284 0.99910937 0.49318557;
+	-6.27284686 -0.00055215 0.00033832 7.27229472 0.99831314 0.99910953 0.49318561;
+	-6.27284710 -0.00055205 0.00033826 7.27229505 0.99831344 0.99910969 0.49318565;
+	-6.27284733 -0.00055195 0.00033820 7.27229538 0.99831374 0.99910985 0.49318570;
+	-6.27284757 -0.00055185 0.00033814 7.27229572 0.99831404 0.99911001 0.49318569;
+	-6.27284781 -0.00055175 0.00033808 7.27229605 0.99831435 0.99911017 0.49318574;
+	-6.27284804 -0.00055165 0.00033802 7.27229639 0.99831465 0.99911033 0.49318575;
+	-6.27284828 -0.00055156 0.00033796 7.27229672 0.99831495 0.99911048 0.49318581;
+	-6.27284851 -0.00055146 0.00033790 7.27229705 0.99831525 0.99911064 0.49318582;
+	-6.27284875 -0.00055136 0.00033784 7.27229739 0.99831555 0.99911080 0.49318586;
+	-6.27284898 -0.00055126 0.00033778 7.27229772 0.99831585 0.99911096 0.49318588;
+	-6.27284922 -0.00055116 0.00033772 7.27229805 0.99831615 0.99911112 0.49318595;
+	-6.27284945 -0.00055107 0.00033766 7.27229838 0.99831645 0.99911128 0.49318599;
+	-6.27284968 -0.00055097 0.00033760 7.27229872 0.99831675 0.99911143 0.49318604;
+	-6.27284992 -0.00055087 0.00033754 7.27229905 0.99831705 0.99911159 0.49318604;
+	-6.27285015 -0.00055077 0.00033748 7.27229938 0.99831735 0.99911175 0.49318612;
+	-6.27285039 -0.00055067 0.00033742 7.27229971 0.99831765 0.99911191 0.49318613;
+	-6.27285062 -0.00055058 0.00033736 7.27230005 0.99831794 0.99911207 0.49318622;
+	-6.27285086 -0.00055048 0.00033730 7.27230038 0.99831824 0.99911223 0.49318623;
+	-6.27285109 -0.00055038 0.00033724 7.27230071 0.99831854 0.99911238 0.49318626;
+	-6.27285133 -0.00055028 0.00033718 7.27230104 0.99831884 0.99911254 0.49318626;
+	-6.27285156 -0.00055018 0.00033712 7.27230138 0.99831914 0.99911270 0.49318628;
+	-6.27285179 -0.00055009 0.00033706 7.27230171 0.99831944 0.99911286 0.49318633;
+	-6.27285203 -0.00054999 0.00033700 7.27230204 0.99831974 0.99911301 0.49318637;
+	-6.27285226 -0.00054989 0.00033694 7.27230237 0.99832004 0.99911317 0.49318637;
+	-6.27285249 -0.00054979 0.00033688 7.27230270 0.99832034 0.99911333 0.49318644;
+	-6.27285273 -0.00054970 0.00033682 7.27230303 0.99832063 0.99911349 0.49318645;
+	-6.27285296 -0.00054960 0.00033676 7.27230336 0.99832093 0.99911364 0.49318646;
+	-6.27285319 -0.00054950 0.00033670 7.27230369 0.99832123 0.99911380 0.49318651;
+	-6.27285343 -0.00054940 0.00033664 7.27230403 0.99832153 0.99911396 0.49318650;
+	-6.27285366 -0.00054931 0.00033658 7.27230436 0.99832183 0.99911412 0.49318659;
+	-6.27285389 -0.00054921 0.00033652 7.27230469 0.99832212 0.99911427 0.49318666;
+	-6.27285413 -0.00054911 0.00033646 7.27230502 0.99832242 0.99911443 0.49318665;
+	-6.27285436 -0.00054901 0.00033640 7.27230535 0.99832272 0.99911459 0.49318670;
+	-6.27285459 -0.00054892 0.00033634 7.27230568 0.99832302 0.99911474 0.49318673;
+	-6.27285483 -0.00054882 0.00033628 7.27230601 0.99832332 0.99911490 0.49318677;
+	-6.27285506 -0.00054872 0.00033622 7.27230634 0.99832361 0.99911506 0.49318685;
+	-6.27285529 -0.00054862 0.00033616 7.27230667 0.99832391 0.99911522 0.49318683;
+	-6.27285552 -0.00054853 0.00033610 7.27230700 0.99832421 0.99911537 0.49318692;
+	-6.27285576 -0.00054843 0.00033604 7.27230733 0.99832450 0.99911553 0.49318690;
+	-6.27285599 -0.00054833 0.00033598 7.27230766 0.99832480 0.99911569 0.49318694;
+	-6.27285622 -0.00054824 0.00033592 7.27230799 0.99832510 0.99911584 0.49318700;
+	-6.27285645 -0.00054814 0.00033586 7.27230832 0.99832539 0.99911600 0.49318701;
+	-6.27285669 -0.00054804 0.00033580 7.27230865 0.99832569 0.99911616 0.49318705;
+	-6.27285692 -0.00054794 0.00033574 7.27230897 0.99832599 0.99911631 0.49318711;
+	-6.27285715 -0.00054785 0.00033568 7.27230930 0.99832628 0.99911647 0.49318708;
+	-6.27285738 -0.00054775 0.00033563 7.27230963 0.99832658 0.99911662 0.49318719;
+	-6.27285761 -0.00054765 0.00033557 7.27230996 0.99832688 0.99911678 0.49318717;
+	-6.27285785 -0.00054756 0.00033551 7.27231029 0.99832717 0.99911694 0.49318724;
+	-6.27285808 -0.00054746 0.00033545 7.27231062 0.99832747 0.99911709 0.49318723;
+	-6.27285831 -0.00054736 0.00033539 7.27231095 0.99832776 0.99911725 0.49318729;
+	-6.27285854 -0.00054727 0.00033533 7.27231127 0.99832806 0.99911741 0.49318737;
+	-6.27285877 -0.00054717 0.00033527 7.27231160 0.99832836 0.99911756 0.49318736;
+	-6.27285900 -0.00054707 0.00033521 7.27231193 0.99832865 0.99911772 0.49318737;
+	-6.27285923 -0.00054698 0.00033515 7.27231226 0.99832895 0.99911787 0.49318744;
+	-6.27285947 -0.00054688 0.00033509 7.27231259 0.99832924 0.99911803 0.49318747;
+	-6.27285970 -0.00054678 0.00033503 7.27231291 0.99832954 0.99911819 0.49318750;
+	-6.27285993 -0.00054669 0.00033497 7.27231324 0.99832983 0.99911834 0.49318752;
+	-6.27286016 -0.00054659 0.00033491 7.27231357 0.99833013 0.99911850 0.49318756;
+	-6.27286039 -0.00054649 0.00033485 7.27231390 0.99833042 0.99911865 0.49318760;
+	-6.27286062 -0.00054640 0.00033480 7.27231422 0.99833072 0.99911881 0.49318765;
+	-6.27286085 -0.00054630 0.00033474 7.27231455 0.99833101 0.99911896 0.49318766;
+	-6.27286108 -0.00054620 0.00033468 7.27231488 0.99833131 0.99911912 0.49318767;
+	-6.27286131 -0.00054611 0.00033462 7.27231521 0.99833160 0.99911927 0.49318769;
+	-6.27286154 -0.00054601 0.00033456 7.27231553 0.99833190 0.99911943 0.49318777;
+	-6.27286177 -0.00054591 0.00033450 7.27231586 0.99833219 0.99911959 0.49318778;
+	-6.27286200 -0.00054582 0.00033444 7.27231619 0.99833248 0.99911974 0.49318783;
+	-6.27286223 -0.00054572 0.00033438 7.27231651 0.99833278 0.99911990 0.49318785;
+	-6.27286246 -0.00054563 0.00033432 7.27231684 0.99833307 0.99912005 0.49318790;
+	-6.27286269 -0.00054553 0.00033426 7.27231716 0.99833337 0.99912021 0.49318796;
+	-6.27286292 -0.00054543 0.00033420 7.27231749 0.99833366 0.99912036 0.49318798;
+	-6.27286315 -0.00054534 0.00033415 7.27231782 0.99833395 0.99912052 0.49318802;
+	-6.27286338 -0.00054524 0.00033409 7.27231814 0.99833425 0.99912067 0.49318801;
+	-6.27286361 -0.00054515 0.00033403 7.27231847 0.99833454 0.99912083 0.49318810;
+	-6.27286384 -0.00054505 0.00033397 7.27231879 0.99833483 0.99912098 0.49318815;
+	-6.27286407 -0.00054495 0.00033391 7.27231912 0.99833513 0.99912114 0.49318815;
+	-6.27286430 -0.00054486 0.00033385 7.27231944 0.99833542 0.99912129 0.49318821;
+	-6.27286453 -0.00054476 0.00033379 7.27231977 0.99833571 0.99912145 0.49318820;
+	-6.27286476 -0.00054467 0.00033373 7.27232010 0.99833601 0.99912160 0.49318828;
+	-6.27286499 -0.00054457 0.00033368 7.27232042 0.99833630 0.99912175 0.49318827;
+	-6.27286522 -0.00054447 0.00033362 7.27232075 0.99833659 0.99912191 0.49318830;
+	-6.27286545 -0.00054438 0.00033356 7.27232107 0.99833689 0.99912206 0.49318834;
+	-6.27286568 -0.00054428 0.00033350 7.27232139 0.99833718 0.99912222 0.49318840;
+	-6.27286591 -0.00054419 0.00033344 7.27232172 0.99833747 0.99912237 0.49318849;
+	-6.27286614 -0.00054409 0.00033338 7.27232204 0.99833776 0.99912253 0.49318845;
+	-6.27286636 -0.00054400 0.00033332 7.27232237 0.99833805 0.99912268 0.49318852;
+	-6.27286659 -0.00054390 0.00033326 7.27232269 0.99833835 0.99912283 0.49318851;
+	-6.27286682 -0.00054380 0.00033321 7.27232302 0.99833864 0.99912299 0.49318855;
+	-6.27286705 -0.00054371 0.00033315 7.27232334 0.99833893 0.99912314 0.49318857;
+	-6.27286728 -0.00054361 0.00033309 7.27232366 0.99833922 0.99912330 0.49318863;
+	-6.27286751 -0.00054352 0.00033303 7.27232399 0.99833951 0.99912345 0.49318865;
+	-6.27286774 -0.00054342 0.00033297 7.27232431 0.99833981 0.99912360 0.49318871;
+	-6.27286796 -0.00054333 0.00033291 7.27232464 0.99834010 0.99912376 0.49318871;
+	-6.27286819 -0.00054323 0.00033286 7.27232496 0.99834039 0.99912391 0.49318882;
+	-6.27286842 -0.00054314 0.00033280 7.27232528 0.99834068 0.99912407 0.49318885;
+	-6.27286865 -0.00054304 0.00033274 7.27232561 0.99834097 0.99912422 0.49318882;
+	-6.27286888 -0.00054295 0.00033268 7.27232593 0.99834126 0.99912437 0.49318888;
+	-6.27286910 -0.00054285 0.00033262 7.27232625 0.99834155 0.99912453 0.49318890;
+	-6.27286933 -0.00054276 0.00033256 7.27232657 0.99834184 0.99912468 0.49318892;
+	-6.27286956 -0.00054266 0.00033250 7.27232690 0.99834214 0.99912483 0.49318896;
+	-6.27286979 -0.00054257 0.00033245 7.27232722 0.99834243 0.99912499 0.49318900;
+	-6.27287001 -0.00054247 0.00033239 7.27232754 0.99834272 0.99912514 0.49318899;
+	-6.27287024 -0.00054238 0.00033233 7.27232787 0.99834301 0.99912529 0.49318908;
+	-6.27287047 -0.00054228 0.00033227 7.27232819 0.99834330 0.99912545 0.49318910;
+	-6.27287070 -0.00054219 0.00033221 7.27232851 0.99834359 0.99912560 0.49318913;
+	-6.27287092 -0.00054209 0.00033216 7.27232883 0.99834388 0.99912575 0.49318913;
+	-6.27287115 -0.00054200 0.00033210 7.27232915 0.99834417 0.99912591 0.49318919;
+	-6.27287138 -0.00054190 0.00033204 7.27232948 0.99834446 0.99912606 0.49318918;
+	-6.27287160 -0.00054181 0.00033198 7.27232980 0.99834475 0.99912621 0.49318924;
+	-6.27287183 -0.00054171 0.00033192 7.27233012 0.99834504 0.99912637 0.49318928;
+	-6.27287206 -0.00054162 0.00033186 7.27233044 0.99834533 0.99912652 0.49318937;
+	-6.27287228 -0.00054152 0.00033181 7.27233076 0.99834562 0.99912667 0.49318939;
+	-6.27287251 -0.00054143 0.00033175 7.27233108 0.99834591 0.99912682 0.49318942;
+	-6.27287274 -0.00054133 0.00033169 7.27233140 0.99834620 0.99912698 0.49318944;
+	-6.27287296 -0.00054124 0.00033163 7.27233173 0.99834649 0.99912713 0.49318945;
+	-6.27287319 -0.00054114 0.00033157 7.27233205 0.99834677 0.99912728 0.49318948;
+	-6.27287342 -0.00054105 0.00033152 7.27233237 0.99834706 0.99912744 0.49318948;
+	-6.27287364 -0.00054095 0.00033146 7.27233269 0.99834735 0.99912759 0.49318960;
+	-6.27287387 -0.00054086 0.00033140 7.27233301 0.99834764 0.99912774 0.49318965;
+	-6.27287409 -0.00054076 0.00033134 7.27233333 0.99834793 0.99912789 0.49318963;
+	-6.27287432 -0.00054067 0.00033128 7.27233365 0.99834822 0.99912805 0.49318967;
+	-6.27287455 -0.00054058 0.00033123 7.27233397 0.99834851 0.99912820 0.49318974;
+	-6.27287477 -0.00054048 0.00033117 7.27233429 0.99834880 0.99912835 0.49318975;
+	-6.27287500 -0.00054039 0.00033111 7.27233461 0.99834908 0.99912850 0.49318982;
+	-6.27287522 -0.00054029 0.00033105 7.27233493 0.99834937 0.99912865 0.49318976;
+	-6.27287545 -0.00054020 0.00033100 7.27233525 0.99834966 0.99912881 0.49318982;
+	-6.27287568 -0.00054010 0.00033094 7.27233557 0.99834995 0.99912896 0.49318990;
+	-6.27287590 -0.00054001 0.00033088 7.27233589 0.99835024 0.99912911 0.49318991;
+	-6.27287613 -0.00053992 0.00033082 7.27233621 0.99835052 0.99912926 0.49318988;
+	-6.27287635 -0.00053982 0.00033076 7.27233653 0.99835081 0.99912941 0.49319001;
+	-6.27287658 -0.00053973 0.00033071 7.27233685 0.99835110 0.99912957 0.49318998;
+	-6.27287680 -0.00053963 0.00033065 7.27233717 0.99835139 0.99912972 0.49319007;
+	-6.27287703 -0.00053954 0.00033059 7.27233749 0.99835168 0.99912987 0.49319009;
+	-6.27287725 -0.00053945 0.00033053 7.27233781 0.99835196 0.99913002 0.49319013;
+	-6.27287748 -0.00053935 0.00033048 7.27233812 0.99835225 0.99913017 0.49319012;
+	-6.27287770 -0.00053926 0.00033042 7.27233844 0.99835254 0.99913032 0.49319022;
+	-6.27287793 -0.00053916 0.00033036 7.27233876 0.99835282 0.99913048 0.49319019;
+	-6.27287815 -0.00053907 0.00033030 7.27233908 0.99835311 0.99913063 0.49319021;
+	-6.27287838 -0.00053898 0.00033025 7.27233940 0.99835340 0.99913078 0.49319029;
+	-6.27287860 -0.00053888 0.00033019 7.27233972 0.99835368 0.99913093 0.49319029;
+	-6.27287882 -0.00053879 0.00033013 7.27234004 0.99835397 0.99913108 0.49319033;
+	-6.27287905 -0.00053869 0.00033007 7.27234035 0.99835426 0.99913123 0.49319038;
+	-6.27287927 -0.00053860 0.00033002 7.27234067 0.99835454 0.99913138 0.49319044;
+	-6.27287950 -0.00053851 0.00032996 7.27234099 0.99835483 0.99913153 0.49319044;
+	-6.27287972 -0.00053841 0.00032990 7.27234131 0.99835512 0.99913169 0.49319052;
+	-6.27287994 -0.00053832 0.00032984 7.27234162 0.99835540 0.99913184 0.49319053;
+	-6.27288017 -0.00053823 0.00032979 7.27234194 0.99835569 0.99913199 0.49319055;
+	-6.27288039 -0.00053813 0.00032973 7.27234226 0.99835598 0.99913214 0.49319059;
+	-6.27288062 -0.00053804 0.00032967 7.27234258 0.99835626 0.99913229 0.49319064;
+	-6.27288084 -0.00053795 0.00032961 7.27234289 0.99835655 0.99913244 0.49319065;
+	-6.27288106 -0.00053785 0.00032956 7.27234321 0.99835683 0.99913259 0.49319063;
+	-6.27288129 -0.00053776 0.00032950 7.27234353 0.99835712 0.99913274 0.49319073;
+	-6.27288151 -0.00053767 0.00032944 7.27234385 0.99835740 0.99913289 0.49319071;
+	-6.27288173 -0.00053757 0.00032938 7.27234416 0.99835769 0.99913304 0.49319080;
+	-6.27288196 -0.00053748 0.00032933 7.27234448 0.99835797 0.99913319 0.49319079;
+	-6.27288218 -0.00053739 0.00032927 7.27234480 0.99835826 0.99913334 0.49319084;
+	-6.27288240 -0.00053729 0.00032921 7.27234511 0.99835854 0.99913349 0.49319094;
+	-6.27288263 -0.00053720 0.00032916 7.27234543 0.99835883 0.99913365 0.49319090;
+	-6.27288285 -0.00053711 0.00032910 7.27234574 0.99835911 0.99913380 0.49319093;
+	-6.27288307 -0.00053701 0.00032904 7.27234606 0.99835940 0.99913395 0.49319095;
+	-6.27288330 -0.00053692 0.00032898 7.27234638 0.99835968 0.99913410 0.49319102;
+	-6.27288352 -0.00053683 0.00032893 7.27234669 0.99835997 0.99913425 0.49319110;
+	-6.27288374 -0.00053673 0.00032887 7.27234701 0.99836025 0.99913440 0.49319107;
+	-6.27288396 -0.00053664 0.00032881 7.27234732 0.99836054 0.99913455 0.49319115;
+	-6.27288419 -0.00053655 0.00032876 7.27234764 0.99836082 0.99913470 0.49319113;
+	-6.27288441 -0.00053645 0.00032870 7.27234795 0.99836111 0.99913485 0.49319119;
+	-6.27288463 -0.00053636 0.00032864 7.27234827 0.99836139 0.99913500 0.49319119;
+	-6.27288485 -0.00053627 0.00032859 7.27234859 0.99836167 0.99913515 0.49319124;
+	-6.27288508 -0.00053618 0.00032853 7.27234890 0.99836196 0.99913530 0.49319131;
+	-6.27288530 -0.00053608 0.00032847 7.27234922 0.99836224 0.99913545 0.49319132;
+	-6.27288552 -0.00053599 0.00032841 7.27234953 0.99836253 0.99913560 0.49319134;
+	-6.27288574 -0.00053590 0.00032836 7.27234985 0.99836281 0.99913575 0.49319141;
+	-6.27288596 -0.00053580 0.00032830 7.27235016 0.99836309 0.99913590 0.49319142;
+	-6.27288619 -0.00053571 0.00032824 7.27235047 0.99836338 0.99913604 0.49319138;
+	-6.27288641 -0.00053562 0.00032819 7.27235079 0.99836366 0.99913619 0.49319145;
+	-6.27288663 -0.00053553 0.00032813 7.27235110 0.99836394 0.99913634 0.49319149;
+	-6.27288685 -0.00053543 0.00032807 7.27235142 0.99836423 0.99913649 0.49319155;
+	-6.27288707 -0.00053534 0.00032802 7.27235173 0.99836451 0.99913664 0.49319156;
+	-6.27288729 -0.00053525 0.00032796 7.27235205 0.99836479 0.99913679 0.49319156;
+	-6.27288752 -0.00053516 0.00032790 7.27235236 0.99836507 0.99913694 0.49319162;
+	-6.27288774 -0.00053506 0.00032785 7.27235267 0.99836536 0.99913709 0.49319169;
+	-6.27288796 -0.00053497 0.00032779 7.27235299 0.99836564 0.99913724 0.49319169;
+	-6.27288818 -0.00053488 0.00032773 7.27235330 0.99836592 0.99913739 0.49319176;
+	-6.27288840 -0.00053479 0.00032768 7.27235361 0.99836620 0.99913754 0.49319177;
+	-6.27288862 -0.00053469 0.00032762 7.27235393 0.99836649 0.99913769 0.49319182;
+	-6.27288884 -0.00053460 0.00032756 7.27235424 0.99836677 0.99913784 0.49319183;
+	-6.27288906 -0.00053451 0.00032751 7.27235455 0.99836705 0.99913798 0.49319186;
+	-6.27288928 -0.00053442 0.00032745 7.27235487 0.99836733 0.99913813 0.49319195;
+	-6.27288950 -0.00053432 0.00032739 7.27235518 0.99836762 0.99913828 0.49319191;
+	-6.27288973 -0.00053423 0.00032734 7.27235549 0.99836790 0.99913843 0.49319195;
+	-6.27288995 -0.00053414 0.00032728 7.27235581 0.99836818 0.99913858 0.49319198;
+	-6.27289017 -0.00053405 0.00032722 7.27235612 0.99836846 0.99913873 0.49319204;
+	-6.27289039 -0.00053396 0.00032717 7.27235643 0.99836874 0.99913888 0.49319208;
+	-6.27289061 -0.00053386 0.00032711 7.27235674 0.99836902 0.99913903 0.49319213;
+	-6.27289083 -0.00053377 0.00032705 7.27235706 0.99836931 0.99913917 0.49319212;
+	-6.27289105 -0.00053368 0.00032700 7.27235737 0.99836959 0.99913932 0.49319218;
+	-6.27289127 -0.00053359 0.00032694 7.27235768 0.99836987 0.99913947 0.49319222;
+	-6.27289149 -0.00053350 0.00032689 7.27235799 0.99837015 0.99913962 0.49319223;
+	-6.27289171 -0.00053340 0.00032683 7.27235830 0.99837043 0.99913977 0.49319229;
+	-6.27289193 -0.00053331 0.00032677 7.27235862 0.99837071 0.99913992 0.49319228;
+	-6.27289215 -0.00053322 0.00032672 7.27235893 0.99837099 0.99914006 0.49319230;
+	-6.27289237 -0.00053313 0.00032666 7.27235924 0.99837127 0.99914021 0.49319236;
+	-6.27289259 -0.00053304 0.00032660 7.27235955 0.99837155 0.99914036 0.49319240;
+	-6.27289281 -0.00053294 0.00032655 7.27235986 0.99837183 0.99914051 0.49319244;
+	-6.27289303 -0.00053285 0.00032649 7.27236017 0.99837211 0.99914066 0.49319243;
+	-6.27289325 -0.00053276 0.00032643 7.27236048 0.99837239 0.99914080 0.49319249;
+	-6.27289346 -0.00053267 0.00032638 7.27236080 0.99837267 0.99914095 0.49319257;
+	-6.27289368 -0.00053258 0.00032632 7.27236111 0.99837295 0.99914110 0.49319253;
+	-6.27289390 -0.00053249 0.00032627 7.27236142 0.99837323 0.99914125 0.49319261;
+	-6.27289412 -0.00053239 0.00032621 7.27236173 0.99837351 0.99914140 0.49319263;
+	-6.27289434 -0.00053230 0.00032615 7.27236204 0.99837379 0.99914154 0.49319267;
+	-6.27289456 -0.00053221 0.00032610 7.27236235 0.99837407 0.99914169 0.49319271;
+	-6.27289478 -0.00053212 0.00032604 7.27236266 0.99837435 0.99914184 0.49319271;
+	-6.27289500 -0.00053203 0.00032599 7.27236297 0.99837463 0.99914199 0.49319270;
+	-6.27289522 -0.00053194 0.00032593 7.27236328 0.99837491 0.99914213 0.49319278;
+	-6.27289544 -0.00053185 0.00032587 7.27236359 0.99837519 0.99914228 0.49319281;
+	-6.27289565 -0.00053175 0.00032582 7.27236390 0.99837547 0.99914243 0.49319284;
+	-6.27289587 -0.00053166 0.00032576 7.27236421 0.99837575 0.99914258 0.49319286;
+	-6.27289609 -0.00053157 0.00032571 7.27236452 0.99837603 0.99914272 0.49319287;
+	-6.27289631 -0.00053148 0.00032565 7.27236483 0.99837631 0.99914287 0.49319297;
+	-6.27289653 -0.00053139 0.00032559 7.27236514 0.99837659 0.99914302 0.49319300;
+	-6.27289675 -0.00053130 0.00032554 7.27236545 0.99837687 0.99914316 0.49319302;
+	-6.27289696 -0.00053121 0.00032548 7.27236576 0.99837714 0.99914331 0.49319305;
+	-6.27289718 -0.00053112 0.00032543 7.27236607 0.99837742 0.99914346 0.49319306;
+	-6.27289740 -0.00053102 0.00032537 7.27236638 0.99837770 0.99914361 0.49319318;
+	-6.27289762 -0.00053093 0.00032531 7.27236668 0.99837798 0.99914375 0.49319313;
+	-6.27289784 -0.00053084 0.00032526 7.27236699 0.99837826 0.99914390 0.49319318;
+	-6.27289805 -0.00053075 0.00032520 7.27236730 0.99837854 0.99914405 0.49319320;
+	-6.27289827 -0.00053066 0.00032515 7.27236761 0.99837881 0.99914419 0.49319315;
+	-6.27289849 -0.00053057 0.00032509 7.27236792 0.99837909 0.99914434 0.49319329;
+	-6.27289871 -0.00053048 0.00032504 7.27236823 0.99837937 0.99914449 0.49319329;
+	-6.27289892 -0.00053039 0.00032498 7.27236854 0.99837965 0.99914463 0.49319336;
+	-6.27289914 -0.00053030 0.00032492 7.27236884 0.99837993 0.99914478 0.49319338;
+	-6.27289936 -0.00053021 0.00032487 7.27236915 0.99838020 0.99914493 0.49319340;
+	-6.27289958 -0.00053012 0.00032481 7.27236946 0.99838048 0.99914507 0.49319339;
+	-6.27289979 -0.00053002 0.00032476 7.27236977 0.99838076 0.99914522 0.49319350;
+	-6.27290001 -0.00052993 0.00032470 7.27237008 0.99838104 0.99914536 0.49319352;
+	-6.27290023 -0.00052984 0.00032465 7.27237038 0.99838131 0.99914551 0.49319359;
+	-6.27290044 -0.00052975 0.00032459 7.27237069 0.99838159 0.99914566 0.49319354;
+	-6.27290066 -0.00052966 0.00032453 7.27237100 0.99838187 0.99914580 0.49319355;
+	-6.27290088 -0.00052957 0.00032448 7.27237131 0.99838214 0.99914595 0.49319365;
+	-6.27290109 -0.00052948 0.00032442 7.27237161 0.99838242 0.99914610 0.49319372;
+	-6.27290131 -0.00052939 0.00032437 7.27237192 0.99838270 0.99914624 0.49319371;
+	-6.27290153 -0.00052930 0.00032431 7.27237223 0.99838297 0.99914639 0.49319369;
+	-6.27290174 -0.00052921 0.00032426 7.27237254 0.99838325 0.99914653 0.49319379;
+	-6.27290196 -0.00052912 0.00032420 7.27237284 0.99838353 0.99914668 0.49319379;
+	-6.27290218 -0.00052903 0.00032415 7.27237315 0.99838380 0.99914683 0.49319387;
+	-6.27290239 -0.00052894 0.00032409 7.27237346 0.99838408 0.99914697 0.49319384;
+	-6.27290261 -0.00052885 0.00032404 7.27237376 0.99838436 0.99914712 0.49319390;
+	-6.27290283 -0.00052876 0.00032398 7.27237407 0.99838463 0.99914726 0.49319391;
+	-6.27290304 -0.00052867 0.00032392 7.27237438 0.99838491 0.99914741 0.49319397;
+	-6.27290326 -0.00052858 0.00032387 7.27237468 0.99838518 0.99914755 0.49319399;
+	-6.27290347 -0.00052849 0.00032381 7.27237499 0.99838546 0.99914770 0.49319399;
+	-6.27290369 -0.00052840 0.00032376 7.27237529 0.99838574 0.99914785 0.49319402;
+	-6.27290391 -0.00052831 0.00032370 7.27237560 0.99838601 0.99914799 0.49319410;
+	-6.27290412 -0.00052822 0.00032365 7.27237591 0.99838629 0.99914814 0.49319411;
+	-6.27290434 -0.00052813 0.00032359 7.27237621 0.99838656 0.99914828 0.49319417;
+	-6.27290455 -0.00052804 0.00032354 7.27237652 0.99838684 0.99914843 0.49319421;
+	-6.27290477 -0.00052795 0.00032348 7.27237682 0.99838711 0.99914857 0.49319423;
+	-6.27290498 -0.00052786 0.00032343 7.27237713 0.99838739 0.99914872 0.49319424;
+	-6.27290520 -0.00052777 0.00032337 7.27237743 0.99838766 0.99914886 0.49319429;
+	-6.27290541 -0.00052768 0.00032332 7.27237774 0.99838794 0.99914901 0.49319426;
+	-6.27290563 -0.00052759 0.00032326 7.27237804 0.99838821 0.99914915 0.49319434;
+	-6.27290584 -0.00052750 0.00032321 7.27237835 0.99838849 0.99914930 0.49319436;
+	-6.27290606 -0.00052741 0.00032315 7.27237865 0.99838876 0.99914944 0.49319441;
+	-6.27290627 -0.00052732 0.00032310 7.27237896 0.99838904 0.99914959 0.49319443;
+	-6.27290649 -0.00052723 0.00032304 7.27237926 0.99838931 0.99914973 0.49319450;
+	-6.27290670 -0.00052714 0.00032299 7.27237957 0.99838959 0.99914988 0.49319447;
+	-6.27290692 -0.00052705 0.00032293 7.27237987 0.99838986 0.99915002 0.49319454;
+	-6.27290713 -0.00052696 0.00032288 7.27238018 0.99839013 0.99915017 0.49319453;
+	-6.27290735 -0.00052687 0.00032282 7.27238048 0.99839041 0.99915031 0.49319457;
+	-6.27290756 -0.00052678 0.00032277 7.27238078 0.99839068 0.99915046 0.49319463;
+	-6.27290778 -0.00052669 0.00032271 7.27238109 0.99839096 0.99915060 0.49319468;
+	-6.27290799 -0.00052660 0.00032266 7.27238139 0.99839123 0.99915075 0.49319471;
+	-6.27290821 -0.00052651 0.00032260 7.27238170 0.99839150 0.99915089 0.49319472;
+	-6.27290842 -0.00052642 0.00032255 7.27238200 0.99839178 0.99915103 0.49319477;
+	-6.27290863 -0.00052633 0.00032249 7.27238230 0.99839205 0.99915118 0.49319479;
+	-6.27290885 -0.00052624 0.00032244 7.27238261 0.99839232 0.99915132 0.49319479;
+	-6.27290906 -0.00052615 0.00032238 7.27238291 0.99839260 0.99915147 0.49319486;
+	-6.27290928 -0.00052606 0.00032233 7.27238321 0.99839287 0.99915161 0.49319496;
+	-6.27290949 -0.00052597 0.00032227 7.27238352 0.99839314 0.99915176 0.49319494;
+	-6.27290970 -0.00052588 0.00032222 7.27238382 0.99839342 0.99915190 0.49319490;
+	-6.27290992 -0.00052579 0.00032216 7.27238412 0.99839369 0.99915204 0.49319495;
+	-6.27291013 -0.00052570 0.00032211 7.27238443 0.99839396 0.99915219 0.49319503;
+	-6.27291034 -0.00052561 0.00032205 7.27238473 0.99839424 0.99915233 0.49319499;
+	-6.27291056 -0.00052553 0.00032200 7.27238503 0.99839451 0.99915248 0.49319506;
+	-6.27291077 -0.00052544 0.00032194 7.27238534 0.99839478 0.99915262 0.49319516;
+	-6.27291098 -0.00052535 0.00032189 7.27238564 0.99839505 0.99915276 0.49319515;
+	-6.27291120 -0.00052526 0.00032183 7.27238594 0.99839533 0.99915291 0.49319519;
+	-6.27291141 -0.00052517 0.00032178 7.27238624 0.99839560 0.99915305 0.49319519;
+	-6.27291162 -0.00052508 0.00032173 7.27238654 0.99839587 0.99915320 0.49319522;
+	-6.27291184 -0.00052499 0.00032167 7.27238685 0.99839614 0.99915334 0.49319528;
+	-6.27291205 -0.00052490 0.00032162 7.27238715 0.99839642 0.99915348 0.49319533;
+	-6.27291226 -0.00052481 0.00032156 7.27238745 0.99839669 0.99915363 0.49319536;
+	-6.27291248 -0.00052472 0.00032151 7.27238775 0.99839696 0.99915377 0.49319537;
+	-6.27291269 -0.00052463 0.00032145 7.27238805 0.99839723 0.99915391 0.49319544;
+	-6.27291290 -0.00052455 0.00032140 7.27238836 0.99839750 0.99915406 0.49319545;
+	-6.27291311 -0.00052446 0.00032134 7.27238866 0.99839777 0.99915420 0.49319547;
+	-6.27291333 -0.00052437 0.00032129 7.27238896 0.99839805 0.99915434 0.49319547;
+	-6.27291354 -0.00052428 0.00032123 7.27238926 0.99839832 0.99915449 0.49319552;
+	-6.27291375 -0.00052419 0.00032118 7.27238956 0.99839859 0.99915463 0.49319555;
+	-6.27291396 -0.00052410 0.00032113 7.27238986 0.99839886 0.99915477 0.49319555;
+	-6.27291418 -0.00052401 0.00032107 7.27239016 0.99839913 0.99915492 0.49319565;
+	-6.27291439 -0.00052392 0.00032102 7.27239046 0.99839940 0.99915506 0.49319563;
+	-6.27291460 -0.00052384 0.00032096 7.27239077 0.99839967 0.99915520 0.49319565;
+	-6.27291481 -0.00052375 0.00032091 7.27239107 0.99839994 0.99915534 0.49319571;
+	-6.27291503 -0.00052366 0.00032085 7.27239137 0.99840021 0.99915549 0.49319576;
+	-6.27291524 -0.00052357 0.00032080 7.27239167 0.99840049 0.99915563 0.49319577;
+	-6.27291545 -0.00052348 0.00032075 7.27239197 0.99840076 0.99915577 0.49319579;
+	-6.27291566 -0.00052339 0.00032069 7.27239227 0.99840103 0.99915592 0.49319582;
+	-6.27291587 -0.00052330 0.00032064 7.27239257 0.99840130 0.99915606 0.49319587;
+	-6.27291608 -0.00052322 0.00032058 7.27239287 0.99840157 0.99915620 0.49319592;
+	-6.27291630 -0.00052313 0.00032053 7.27239317 0.99840184 0.99915634 0.49319593;
+	-6.27291651 -0.00052304 0.00032047 7.27239347 0.99840211 0.99915649 0.49319594;
+	-6.27291672 -0.00052295 0.00032042 7.27239377 0.99840238 0.99915663 0.49319596;
+	-6.27291693 -0.00052286 0.00032037 7.27239407 0.99840265 0.99915677 0.49319602;
+	-6.27291714 -0.00052277 0.00032031 7.27239437 0.99840292 0.99915691 0.49319607;
+	-6.27291735 -0.00052269 0.00032026 7.27239467 0.99840319 0.99915706 0.49319609;
+	-6.27291756 -0.00052260 0.00032020 7.27239497 0.99840346 0.99915720 0.49319609;
+	-6.27291777 -0.00052251 0.00032015 7.27239526 0.99840373 0.99915734 0.49319619;
+	-6.27291799 -0.00052242 0.00032010 7.27239556 0.99840400 0.99915748 0.49319624;
+	-6.27291820 -0.00052233 0.00032004 7.27239586 0.99840427 0.99915763 0.49319616;
+	-6.27291841 -0.00052225 0.00031999 7.27239616 0.99840453 0.99915777 0.49319625;
+	-6.27291862 -0.00052216 0.00031993 7.27239646 0.99840480 0.99915791 0.49319632;
+	-6.27291883 -0.00052207 0.00031988 7.27239676 0.99840507 0.99915805 0.49319625;
+	-6.27291904 -0.00052198 0.00031983 7.27239706 0.99840534 0.99915819 0.49319634;
+	-6.27291925 -0.00052189 0.00031977 7.27239736 0.99840561 0.99915834 0.49319638;
+	-6.27291946 -0.00052180 0.00031972 7.27239766 0.99840588 0.99915848 0.49319640;
+	-6.27291967 -0.00052172 0.00031966 7.27239795 0.99840615 0.99915862 0.49319643;
+	-6.27291988 -0.00052163 0.00031961 7.27239825 0.99840642 0.99915876 0.49319646;
+	-6.27292009 -0.00052154 0.00031956 7.27239855 0.99840669 0.99915890 0.49319643;
+	-6.27292030 -0.00052145 0.00031950 7.27239885 0.99840695 0.99915904 0.49319651;
+	-6.27292051 -0.00052137 0.00031945 7.27239915 0.99840722 0.99915919 0.49319652;
+	-6.27292072 -0.00052128 0.00031939 7.27239944 0.99840749 0.99915933 0.49319657;
+	-6.27292093 -0.00052119 0.00031934 7.27239974 0.99840776 0.99915947 0.49319663;
+	-6.27292114 -0.00052110 0.00031929 7.27240004 0.99840803 0.99915961 0.49319665;
+	-6.27292135 -0.00052101 0.00031923 7.27240034 0.99840830 0.99915975 0.49319671;
+	-6.27292156 -0.00052093 0.00031918 7.27240063 0.99840856 0.99915989 0.49319676;
+	-6.27292177 -0.00052084 0.00031913 7.27240093 0.99840883 0.99916004 0.49319677;
+	-6.27292198 -0.00052075 0.00031907 7.27240123 0.99840910 0.99916018 0.49319672;
+	-6.27292219 -0.00052066 0.00031902 7.27240153 0.99840937 0.99916032 0.49319676;
+	-6.27292240 -0.00052058 0.00031896 7.27240182 0.99840964 0.99916046 0.49319684;
+	-6.27292261 -0.00052049 0.00031891 7.27240212 0.99840990 0.99916060 0.49319683;
+	-6.27292282 -0.00052040 0.00031886 7.27240242 0.99841017 0.99916074 0.49319688;
+	-6.27292303 -0.00052031 0.00031880 7.27240271 0.99841044 0.99916088 0.49319696;
+	-6.27292324 -0.00052023 0.00031875 7.27240301 0.99841070 0.99916102 0.49319696;
+	-6.27292345 -0.00052014 0.00031870 7.27240331 0.99841097 0.99916117 0.49319698;
+	-6.27292366 -0.00052005 0.00031864 7.27240360 0.99841124 0.99916131 0.49319702;
+	-6.27292386 -0.00051996 0.00031859 7.27240390 0.99841151 0.99916145 0.49319705;
+	-6.27292407 -0.00051988 0.00031854 7.27240420 0.99841177 0.99916159 0.49319708;
+	-6.27292428 -0.00051979 0.00031848 7.27240449 0.99841204 0.99916173 0.49319705;
+	-6.27292449 -0.00051970 0.00031843 7.27240479 0.99841231 0.99916187 0.49319715;
+	-6.27292470 -0.00051962 0.00031837 7.27240508 0.99841257 0.99916201 0.49319716;
+	-6.27292491 -0.00051953 0.00031832 7.27240538 0.99841284 0.99916215 0.49319722;
+	-6.27292512 -0.00051944 0.00031827 7.27240568 0.99841311 0.99916229 0.49319725;
+	-6.27292533 -0.00051935 0.00031821 7.27240597 0.99841337 0.99916243 0.49319725;
+	-6.27292553 -0.00051927 0.00031816 7.27240627 0.99841364 0.99916257 0.49319734;
+	-6.27292574 -0.00051918 0.00031811 7.27240656 0.99841390 0.99916271 0.49319744;
+	-6.27292595 -0.00051909 0.00031805 7.27240686 0.99841417 0.99916285 0.49319739;
+	-6.27292616 -0.00051901 0.00031800 7.27240715 0.99841444 0.99916299 0.49319736;
+	-6.27292637 -0.00051892 0.00031795 7.27240745 0.99841470 0.99916313 0.49319748;
+	-6.27292658 -0.00051883 0.00031789 7.27240774 0.99841497 0.99916327 0.49319747;
+	-6.27292678 -0.00051874 0.00031784 7.27240804 0.99841523 0.99916341 0.49319748;
+	-6.27292699 -0.00051866 0.00031779 7.27240833 0.99841550 0.99916355 0.49319753;
+	-6.27292720 -0.00051857 0.00031773 7.27240863 0.99841577 0.99916369 0.49319759;
+	-6.27292741 -0.00051848 0.00031768 7.27240892 0.99841603 0.99916384 0.49319759;
+	-6.27292762 -0.00051840 0.00031763 7.27240922 0.99841630 0.99916398 0.49319759;
+	-6.27292782 -0.00051831 0.00031757 7.27240951 0.99841656 0.99916412 0.49319764;
+	-6.27292803 -0.00051822 0.00031752 7.27240981 0.99841683 0.99916426 0.49319769;
+	-6.27292824 -0.00051814 0.00031747 7.27241010 0.99841709 0.99916440 0.49319768;
+	-6.27292845 -0.00051805 0.00031742 7.27241040 0.99841736 0.99916453 0.49319773;
+	-6.27292865 -0.00051796 0.00031736 7.27241069 0.99841762 0.99916467 0.49319777;
+	-6.27292886 -0.00051788 0.00031731 7.27241098 0.99841789 0.99916481 0.49319789;
+	-6.27292907 -0.00051779 0.00031726 7.27241128 0.99841815 0.99916495 0.49319781;
+	-6.27292927 -0.00051770 0.00031720 7.27241157 0.99841842 0.99916509 0.49319785;
+	-6.27292948 -0.00051762 0.00031715 7.27241186 0.99841868 0.99916523 0.49319784;
+	-6.27292969 -0.00051753 0.00031710 7.27241216 0.99841895 0.99916537 0.49319795;
+	-6.27292990 -0.00051744 0.00031704 7.27241245 0.99841921 0.99916551 0.49319794;
+	-6.27293010 -0.00051736 0.00031699 7.27241275 0.99841947 0.99916565 0.49319797;
+	-6.27293031 -0.00051727 0.00031694 7.27241304 0.99841974 0.99916579 0.49319807;
+	-6.27293052 -0.00051718 0.00031688 7.27241333 0.99842000 0.99916593 0.49319800;
+	-6.27293072 -0.00051710 0.00031683 7.27241363 0.99842027 0.99916607 0.49319809;
+	-6.27293093 -0.00051701 0.00031678 7.27241392 0.99842053 0.99916621 0.49319811;
+	-6.27293114 -0.00051693 0.00031673 7.27241421 0.99842079 0.99916635 0.49319811;
+	-6.27293134 -0.00051684 0.00031667 7.27241450 0.99842106 0.99916649 0.49319817;
+	-6.27293155 -0.00051675 0.00031662 7.27241480 0.99842132 0.99916663 0.49319820;
+	-6.27293176 -0.00051667 0.00031657 7.27241509 0.99842159 0.99916677 0.49319821;
+	-6.27293196 -0.00051658 0.00031651 7.27241538 0.99842185 0.99916691 0.49319833;
+	-6.27293217 -0.00051649 0.00031646 7.27241567 0.99842211 0.99916704 0.49319829;
+	-6.27293237 -0.00051641 0.00031641 7.27241597 0.99842238 0.99916718 0.49319831;
+	-6.27293258 -0.00051632 0.00031636 7.27241626 0.99842264 0.99916732 0.49319838;
+	-6.27293279 -0.00051624 0.00031630 7.27241655 0.99842290 0.99916746 0.49319843;
+	-6.27293299 -0.00051615 0.00031625 7.27241684 0.99842316 0.99916760 0.49319840;
+	-6.27293320 -0.00051606 0.00031620 7.27241713 0.99842343 0.99916774 0.49319841;
+	-6.27293340 -0.00051598 0.00031614 7.27241743 0.99842369 0.99916788 0.49319849;
+	-6.27293361 -0.00051589 0.00031609 7.27241772 0.99842395 0.99916802 0.49319850;
+	-6.27293382 -0.00051581 0.00031604 7.27241801 0.99842422 0.99916816 0.49319856;
+	-6.27293402 -0.00051572 0.00031599 7.27241830 0.99842448 0.99916829 0.49319860;
+	-6.27293423 -0.00051563 0.00031593 7.27241859 0.99842474 0.99916843 0.49319855;
+	-6.27293443 -0.00051555 0.00031588 7.27241888 0.99842500 0.99916857 0.49319861;
+	-6.27293464 -0.00051546 0.00031583 7.27241918 0.99842527 0.99916871 0.49319870;
+	-6.27293484 -0.00051538 0.00031578 7.27241947 0.99842553 0.99916885 0.49319866;
+	-6.27293505 -0.00051529 0.00031572 7.27241976 0.99842579 0.99916899 0.49319873;
+	-6.27293525 -0.00051520 0.00031567 7.27242005 0.99842605 0.99916912 0.49319872;
+	-6.27293546 -0.00051512 0.00031562 7.27242034 0.99842632 0.99916926 0.49319875;
+	-6.27293566 -0.00051503 0.00031557 7.27242063 0.99842658 0.99916940 0.49319885;
+	-6.27293587 -0.00051495 0.00031551 7.27242092 0.99842684 0.99916954 0.49319881;
+	-6.27293607 -0.00051486 0.00031546 7.27242121 0.99842710 0.99916968 0.49319885;
+	-6.27293628 -0.00051478 0.00031541 7.27242150 0.99842736 0.99916982 0.49319897;
+	-6.27293648 -0.00051469 0.00031536 7.27242179 0.99842762 0.99916995 0.49319898;
+	-6.27293669 -0.00051461 0.00031530 7.27242208 0.99842789 0.99917009 0.49319895;
+	-6.27293689 -0.00051452 0.00031525 7.27242237 0.99842815 0.99917023 0.49319902;
+	-6.27293710 -0.00051443 0.00031520 7.27242266 0.99842841 0.99917037 0.49319899;
+	-6.27293730 -0.00051435 0.00031515 7.27242295 0.99842867 0.99917051 0.49319907;
+	-6.27293751 -0.00051426 0.00031509 7.27242324 0.99842893 0.99917064 0.49319910;
+	-6.27293771 -0.00051418 0.00031504 7.27242353 0.99842919 0.99917078 0.49319911;
+	-6.27293792 -0.00051409 0.00031499 7.27242382 0.99842945 0.99917092 0.49319911;
+	-6.27293812 -0.00051401 0.00031494 7.27242411 0.99842971 0.99917106 0.49319918;
+	-6.27293832 -0.00051392 0.00031488 7.27242440 0.99842997 0.99917119 0.49319923;
+	-6.27293853 -0.00051384 0.00031483 7.27242469 0.99843024 0.99917133 0.49319919;
+	-6.27293873 -0.00051375 0.00031478 7.27242498 0.99843050 0.99917147 0.49319924;
+	-6.27293894 -0.00051367 0.00031473 7.27242527 0.99843076 0.99917161 0.49319925;
+	-6.27293914 -0.00051358 0.00031467 7.27242556 0.99843102 0.99917174 0.49319934;
+	-6.27293934 -0.00051350 0.00031462 7.27242585 0.99843128 0.99917188 0.49319932;
+	-6.27293955 -0.00051341 0.00031457 7.27242614 0.99843154 0.99917202 0.49319938;
+	-6.27293975 -0.00051333 0.00031452 7.27242643 0.99843180 0.99917216 0.49319942;
+	-6.27293995 -0.00051324 0.00031447 7.27242671 0.99843206 0.99917229 0.49319947;
+	-6.27294016 -0.00051315 0.00031441 7.27242700 0.99843232 0.99917243 0.49319948;
+	-6.27294036 -0.00051307 0.00031436 7.27242729 0.99843258 0.99917257 0.49319954;
+	-6.27294057 -0.00051298 0.00031431 7.27242758 0.99843284 0.99917271 0.49319956;
+	-6.27294077 -0.00051290 0.00031426 7.27242787 0.99843310 0.99917284 0.49319957;
+	-6.27294097 -0.00051281 0.00031421 7.27242816 0.99843336 0.99917298 0.49319962;
+	-6.27294118 -0.00051273 0.00031415 7.27242845 0.99843362 0.99917312 0.49319969;
+	-6.27294138 -0.00051265 0.00031410 7.27242873 0.99843388 0.99917325 0.49319972;
+	-6.27294158 -0.00051256 0.00031405 7.27242902 0.99843414 0.99917339 0.49319967;
+	-6.27294178 -0.00051248 0.00031400 7.27242931 0.99843439 0.99917353 0.49319971;
+	-6.27294199 -0.00051239 0.00031395 7.27242960 0.99843465 0.99917366 0.49319975;
+	-6.27294219 -0.00051231 0.00031389 7.27242988 0.99843491 0.99917380 0.49319976;
+	-6.27294239 -0.00051222 0.00031384 7.27243017 0.99843517 0.99917394 0.49319985;
+	-6.27294260 -0.00051214 0.00031379 7.27243046 0.99843543 0.99917407 0.49319980;
+	-6.27294280 -0.00051205 0.00031374 7.27243075 0.99843569 0.99917421 0.49319987;
+	-6.27294300 -0.00051197 0.00031369 7.27243103 0.99843595 0.99917435 0.49319991;
+	-6.27294320 -0.00051188 0.00031363 7.27243132 0.99843621 0.99917448 0.49319996;
+	-6.27294341 -0.00051180 0.00031358 7.27243161 0.99843647 0.99917462 0.49320001;
+	-6.27294361 -0.00051171 0.00031353 7.27243190 0.99843673 0.99917476 0.49319998;
+	-6.27294381 -0.00051163 0.00031348 7.27243218 0.99843698 0.99917489 0.49320000;
+	-6.27294401 -0.00051154 0.00031343 7.27243247 0.99843724 0.99917503 0.49320003;
+	-6.27294422 -0.00051146 0.00031337 7.27243276 0.99843750 0.99917517 0.49320007;
+	-6.27294442 -0.00051137 0.00031332 7.27243304 0.99843776 0.99917530 0.49320006;
+	-6.27294462 -0.00051129 0.00031327 7.27243333 0.99843802 0.99917544 0.49320012;
+	-6.27294482 -0.00051121 0.00031322 7.27243362 0.99843827 0.99917558 0.49320018;
+	-6.27294502 -0.00051112 0.00031317 7.27243390 0.99843853 0.99917571 0.49320018;
+	-6.27294523 -0.00051104 0.00031312 7.27243419 0.99843879 0.99917585 0.49320017;
+	-6.27294543 -0.00051095 0.00031306 7.27243448 0.99843905 0.99917598 0.49320022;
+	-6.27294563 -0.00051087 0.00031301 7.27243476 0.99843931 0.99917612 0.49320033;
+	-6.27294583 -0.00051078 0.00031296 7.27243505 0.99843956 0.99917626 0.49320035;
+	-6.27294603 -0.00051070 0.00031291 7.27243533 0.99843982 0.99917639 0.49320035;
+	-6.27294623 -0.00051062 0.00031286 7.27243562 0.99844008 0.99917653 0.49320037;
+	-6.27294644 -0.00051053 0.00031281 7.27243590 0.99844034 0.99917666 0.49320040;
+	-6.27294664 -0.00051045 0.00031275 7.27243619 0.99844059 0.99917680 0.49320046;
+	-6.27294684 -0.00051036 0.00031270 7.27243648 0.99844085 0.99917693 0.49320050;
+	-6.27294704 -0.00051028 0.00031265 7.27243676 0.99844111 0.99917707 0.49320049;
+	-6.27294724 -0.00051019 0.00031260 7.27243705 0.99844136 0.99917721 0.49320054;
+	-6.27294744 -0.00051011 0.00031255 7.27243733 0.99844162 0.99917734 0.49320055;
+	-6.27294764 -0.00051003 0.00031250 7.27243762 0.99844188 0.99917748 0.49320064;
+	-6.27294784 -0.00050994 0.00031244 7.27243790 0.99844214 0.99917761 0.49320065;
+	-6.27294805 -0.00050986 0.00031239 7.27243819 0.99844239 0.99917775 0.49320067;
+	-6.27294825 -0.00050977 0.00031234 7.27243847 0.99844265 0.99917788 0.49320073;
+	-6.27294845 -0.00050969 0.00031229 7.27243876 0.99844291 0.99917802 0.49320072;
+	-6.27294865 -0.00050961 0.00031224 7.27243904 0.99844316 0.99917815 0.49320076;
+	-6.27294885 -0.00050952 0.00031219 7.27243933 0.99844342 0.99917829 0.49320077;
+	-6.27294905 -0.00050944 0.00031214 7.27243961 0.99844367 0.99917843 0.49320076;
+	-6.27294925 -0.00050936 0.00031208 7.27243989 0.99844393 0.99917856 0.49320084;
+	-6.27294945 -0.00050927 0.00031203 7.27244018 0.99844419 0.99917870 0.49320087;
+	-6.27294965 -0.00050919 0.00031198 7.27244046 0.99844444 0.99917883 0.49320088;
+	-6.27294985 -0.00050910 0.00031193 7.27244075 0.99844470 0.99917897 0.49320097;
+	-6.27295005 -0.00050902 0.00031188 7.27244103 0.99844495 0.99917910 0.49320091;
+	-6.27295025 -0.00050894 0.00031183 7.27244132 0.99844521 0.99917924 0.49320097;
+	-6.27295045 -0.00050885 0.00031178 7.27244160 0.99844547 0.99917937 0.49320101;
+	-6.27295065 -0.00050877 0.00031173 7.27244188 0.99844572 0.99917951 0.49320102;
+	-6.27295085 -0.00050869 0.00031167 7.27244217 0.99844598 0.99917964 0.49320101;
+	-6.27295105 -0.00050860 0.00031162 7.27244245 0.99844623 0.99917978 0.49320112;
+	-6.27295125 -0.00050852 0.00031157 7.27244273 0.99844649 0.99917991 0.49320117;
+	-6.27295145 -0.00050844 0.00031152 7.27244302 0.99844674 0.99918004 0.49320117;
+	-6.27295165 -0.00050835 0.00031147 7.27244330 0.99844700 0.99918018 0.49320119;
+	-6.27295185 -0.00050827 0.00031142 7.27244358 0.99844725 0.99918031 0.49320122;
+	-6.27295205 -0.00050818 0.00031137 7.27244387 0.99844751 0.99918045 0.49320128;
+	-6.27295225 -0.00050810 0.00031132 7.27244415 0.99844776 0.99918058 0.49320130;
+	-6.27295245 -0.00050802 0.00031126 7.27244443 0.99844802 0.99918072 0.49320132;
+	-6.27295265 -0.00050793 0.00031121 7.27244472 0.99844827 0.99918085 0.49320130;
+	-6.27295285 -0.00050785 0.00031116 7.27244500 0.99844853 0.99918099 0.49320137;
+	-6.27295305 -0.00050777 0.00031111 7.27244528 0.99844878 0.99918112 0.49320141;
+	-6.27295325 -0.00050768 0.00031106 7.27244556 0.99844904 0.99918126 0.49320145;
+	-6.27295345 -0.00050760 0.00031101 7.27244585 0.99844929 0.99918139 0.49320144;
+	-6.27295365 -0.00050752 0.00031096 7.27244613 0.99844955 0.99918152 0.49320149;
+	-6.27295385 -0.00050743 0.00031091 7.27244641 0.99844980 0.99918166 0.49320154;
+	-6.27295404 -0.00050735 0.00031086 7.27244669 0.99845005 0.99918179 0.49320156;
+	-6.27295424 -0.00050727 0.00031081 7.27244697 0.99845031 0.99918193 0.49320161;
+	-6.27295444 -0.00050719 0.00031075 7.27244726 0.99845056 0.99918206 0.49320163;
+	-6.27295464 -0.00050710 0.00031070 7.27244754 0.99845082 0.99918219 0.49320168;
+	-6.27295484 -0.00050702 0.00031065 7.27244782 0.99845107 0.99918233 0.49320163;
+	-6.27295504 -0.00050694 0.00031060 7.27244810 0.99845132 0.99918246 0.49320171;
+	-6.27295524 -0.00050685 0.00031055 7.27244838 0.99845158 0.99918260 0.49320174;
+	-6.27295544 -0.00050677 0.00031050 7.27244867 0.99845183 0.99918273 0.49320177;
+	-6.27295563 -0.00050669 0.00031045 7.27244895 0.99845208 0.99918286 0.49320176;
+	-6.27295583 -0.00050660 0.00031040 7.27244923 0.99845234 0.99918300 0.49320182;
+	-6.27295603 -0.00050652 0.00031035 7.27244951 0.99845259 0.99918313 0.49320186;
+	-6.27295623 -0.00050644 0.00031030 7.27244979 0.99845284 0.99918327 0.49320185;
+	-6.27295643 -0.00050636 0.00031025 7.27245007 0.99845310 0.99918340 0.49320186;
+	-6.27295663 -0.00050627 0.00031019 7.27245035 0.99845335 0.99918353 0.49320197;
+	-6.27295682 -0.00050619 0.00031014 7.27245063 0.99845360 0.99918367 0.49320197;
+	-6.27295702 -0.00050611 0.00031009 7.27245091 0.99845386 0.99918380 0.49320194;
+	-6.27295722 -0.00050602 0.00031004 7.27245120 0.99845411 0.99918393 0.49320202;
+	-6.27295742 -0.00050594 0.00030999 7.27245148 0.99845436 0.99918407 0.49320205;
+	-6.27295762 -0.00050586 0.00030994 7.27245176 0.99845462 0.99918420 0.49320207;
+	-6.27295781 -0.00050578 0.00030989 7.27245204 0.99845487 0.99918433 0.49320207;
+	-6.27295801 -0.00050569 0.00030984 7.27245232 0.99845512 0.99918447 0.49320217;
+	-6.27295821 -0.00050561 0.00030979 7.27245260 0.99845537 0.99918460 0.49320221;
+	-6.27295841 -0.00050553 0.00030974 7.27245288 0.99845563 0.99918473 0.49320219;
+	-6.27295860 -0.00050545 0.00030969 7.27245316 0.99845588 0.99918487 0.49320222;
+	-6.27295880 -0.00050536 0.00030964 7.27245344 0.99845613 0.99918500 0.49320228;
+	-6.27295900 -0.00050528 0.00030959 7.27245372 0.99845638 0.99918513 0.49320230;
+	-6.27295920 -0.00050520 0.00030954 7.27245400 0.99845663 0.99918526 0.49320235;
+	-6.27295939 -0.00050512 0.00030949 7.27245428 0.99845689 0.99918540 0.49320231;
+	-6.27295959 -0.00050503 0.00030944 7.27245456 0.99845714 0.99918553 0.49320239;
+	-6.27295979 -0.00050495 0.00030938 7.27245484 0.99845739 0.99918566 0.49320239;
+	-6.27295998 -0.00050487 0.00030933 7.27245512 0.99845764 0.99918580 0.49320243;
+	-6.27296018 -0.00050479 0.00030928 7.27245539 0.99845789 0.99918593 0.49320240;
+	-6.27296038 -0.00050470 0.00030923 7.27245567 0.99845814 0.99918606 0.49320248;
+	-6.27296058 -0.00050462 0.00030918 7.27245595 0.99845840 0.99918619 0.49320254;
+	-6.27296077 -0.00050454 0.00030913 7.27245623 0.99845865 0.99918633 0.49320254;
+	-6.27296097 -0.00050446 0.00030908 7.27245651 0.99845890 0.99918646 0.49320257;
+	-6.27296117 -0.00050438 0.00030903 7.27245679 0.99845915 0.99918659 0.49320260;
+	-6.27296136 -0.00050429 0.00030898 7.27245707 0.99845940 0.99918673 0.49320260;
+	-6.27296156 -0.00050421 0.00030893 7.27245735 0.99845965 0.99918686 0.49320264;
+	-6.27296176 -0.00050413 0.00030888 7.27245763 0.99845990 0.99918699 0.49320270;
+	-6.27296195 -0.00050405 0.00030883 7.27245790 0.99846015 0.99918712 0.49320271;
+	-6.27296215 -0.00050397 0.00030878 7.27245818 0.99846040 0.99918726 0.49320271;
+	-6.27296234 -0.00050388 0.00030873 7.27245846 0.99846066 0.99918739 0.49320279;
+	-6.27296254 -0.00050380 0.00030868 7.27245874 0.99846091 0.99918752 0.49320285;
+	-6.27296274 -0.00050372 0.00030863 7.27245902 0.99846116 0.99918765 0.49320278;
+	-6.27296293 -0.00050364 0.00030858 7.27245930 0.99846141 0.99918778 0.49320286;
+	-6.27296313 -0.00050356 0.00030853 7.27245957 0.99846166 0.99918792 0.49320284;
+	-6.27296332 -0.00050347 0.00030848 7.27245985 0.99846191 0.99918805 0.49320294;
+	-6.27296352 -0.00050339 0.00030843 7.27246013 0.99846216 0.99918818 0.49320297;
+	-6.27296372 -0.00050331 0.00030838 7.27246041 0.99846241 0.99918831 0.49320295;
+	-6.27296391 -0.00050323 0.00030833 7.27246068 0.99846266 0.99918844 0.49320301;
+	-6.27296411 -0.00050315 0.00030828 7.27246096 0.99846291 0.99918858 0.49320303;
+	-6.27296430 -0.00050306 0.00030823 7.27246124 0.99846316 0.99918871 0.49320305;
+	-6.27296450 -0.00050298 0.00030818 7.27246152 0.99846341 0.99918884 0.49320310;
+	-6.27296469 -0.00050290 0.00030813 7.27246179 0.99846366 0.99918897 0.49320314;
+	-6.27296489 -0.00050282 0.00030808 7.27246207 0.99846391 0.99918910 0.49320318;
+	-6.27296509 -0.00050274 0.00030803 7.27246235 0.99846416 0.99918924 0.49320319;
+	-6.27296528 -0.00050266 0.00030798 7.27246263 0.99846441 0.99918937 0.49320326;
+	-6.27296548 -0.00050257 0.00030793 7.27246290 0.99846466 0.99918950 0.49320325;
+	-6.27296567 -0.00050249 0.00030788 7.27246318 0.99846490 0.99918963 0.49320329;
+	-6.27296587 -0.00050241 0.00030783 7.27246346 0.99846515 0.99918976 0.49320330;
+	-6.27296606 -0.00050233 0.00030778 7.27246373 0.99846540 0.99918989 0.49320333;
+	-6.27296626 -0.00050225 0.00030773 7.27246401 0.99846565 0.99919002 0.49320339;
+	-6.27296645 -0.00050217 0.00030768 7.27246429 0.99846590 0.99919016 0.49320339;
+	-6.27296665 -0.00050209 0.00030763 7.27246456 0.99846615 0.99919029 0.49320338;
+	-6.27296684 -0.00050200 0.00030758 7.27246484 0.99846640 0.99919042 0.49320344;
+	-6.27296704 -0.00050192 0.00030753 7.27246511 0.99846665 0.99919055 0.49320353;
+	-6.27296723 -0.00050184 0.00030748 7.27246539 0.99846690 0.99919068 0.49320349;
+	-6.27296743 -0.00050176 0.00030743 7.27246567 0.99846715 0.99919081 0.49320357;
+	-6.27296762 -0.00050168 0.00030738 7.27246594 0.99846739 0.99919094 0.49320354;
+	-6.27296781 -0.00050160 0.00030733 7.27246622 0.99846764 0.99919108 0.49320360;
+	-6.27296801 -0.00050152 0.00030728 7.27246649 0.99846789 0.99919121 0.49320366;
+	-6.27296820 -0.00050143 0.00030723 7.27246677 0.99846814 0.99919134 0.49320363;
+	-6.27296840 -0.00050135 0.00030718 7.27246704 0.99846839 0.99919147 0.49320369;
+	-6.27296859 -0.00050127 0.00030713 7.27246732 0.99846864 0.99919160 0.49320376;
+	-6.27296879 -0.00050119 0.00030708 7.27246760 0.99846888 0.99919173 0.49320377;
+	-6.27296898 -0.00050111 0.00030703 7.27246787 0.99846913 0.99919186 0.49320381;
+	-6.27296917 -0.00050103 0.00030698 7.27246815 0.99846938 0.99919199 0.49320377;
+	-6.27296937 -0.00050095 0.00030693 7.27246842 0.99846963 0.99919212 0.49320384;
+	-6.27296956 -0.00050087 0.00030688 7.27246870 0.99846987 0.99919225 0.49320380;
+	-6.27296976 -0.00050079 0.00030683 7.27246897 0.99847012 0.99919238 0.49320387;
+	-6.27296995 -0.00050070 0.00030678 7.27246925 0.99847037 0.99919251 0.49320387;
+	-6.27297014 -0.00050062 0.00030673 7.27246952 0.99847062 0.99919265 0.49320397;
+	-6.27297034 -0.00050054 0.00030668 7.27246980 0.99847086 0.99919278 0.49320397;
+	-6.27297053 -0.00050046 0.00030663 7.27247007 0.99847111 0.99919291 0.49320399;
+	-6.27297073 -0.00050038 0.00030658 7.27247034 0.99847136 0.99919304 0.49320405;
+	-6.27297092 -0.00050030 0.00030653 7.27247062 0.99847161 0.99919317 0.49320409;
+	-6.27297111 -0.00050022 0.00030648 7.27247089 0.99847185 0.99919330 0.49320412;
+	-6.27297131 -0.00050014 0.00030643 7.27247117 0.99847210 0.99919343 0.49320414;
+	-6.27297150 -0.00050006 0.00030638 7.27247144 0.99847235 0.99919356 0.49320414;
+	-6.27297169 -0.00049998 0.00030633 7.27247172 0.99847259 0.99919369 0.49320417;
+	-6.27297189 -0.00049990 0.00030629 7.27247199 0.99847284 0.99919382 0.49320418;
+	-6.27297208 -0.00049982 0.00030624 7.27247226 0.99847309 0.99919395 0.49320420;
+	-6.27297227 -0.00049973 0.00030619 7.27247254 0.99847333 0.99919408 0.49320426;
+	-6.27297246 -0.00049965 0.00030614 7.27247281 0.99847358 0.99919421 0.49320420;
+	-6.27297266 -0.00049957 0.00030609 7.27247308 0.99847383 0.99919434 0.49320435;
+	-6.27297285 -0.00049949 0.00030604 7.27247336 0.99847407 0.99919447 0.49320431;
+	-6.27297304 -0.00049941 0.00030599 7.27247363 0.99847432 0.99919460 0.49320437;
+	-6.27297324 -0.00049933 0.00030594 7.27247390 0.99847457 0.99919473 0.49320437;
+	-6.27297343 -0.00049925 0.00030589 7.27247418 0.99847481 0.99919486 0.49320443;
+	-6.27297362 -0.00049917 0.00030584 7.27247445 0.99847506 0.99919499 0.49320448;
+	-6.27297381 -0.00049909 0.00030579 7.27247472 0.99847530 0.99919512 0.49320448;
+	-6.27297401 -0.00049901 0.00030574 7.27247500 0.99847555 0.99919525 0.49320449;
+	-6.27297420 -0.00049893 0.00030569 7.27247527 0.99847580 0.99919538 0.49320451;
+	-6.27297439 -0.00049885 0.00030564 7.27247554 0.99847604 0.99919551 0.49320453;
+	-6.27297458 -0.00049877 0.00030559 7.27247582 0.99847629 0.99919564 0.49320461;
+	-6.27297478 -0.00049869 0.00030554 7.27247609 0.99847653 0.99919577 0.49320461;
+	-6.27297497 -0.00049861 0.00030550 7.27247636 0.99847678 0.99919590 0.49320465;
+	-6.27297516 -0.00049853 0.00030545 7.27247663 0.99847702 0.99919603 0.49320475;
+	-6.27297535 -0.00049845 0.00030540 7.27247691 0.99847727 0.99919616 0.49320473;
+	-6.27297554 -0.00049837 0.00030535 7.27247718 0.99847751 0.99919629 0.49320474;
+	-6.27297574 -0.00049829 0.00030530 7.27247745 0.99847776 0.99919641 0.49320475;
+	-6.27297593 -0.00049821 0.00030525 7.27247772 0.99847800 0.99919654 0.49320486;
+	-6.27297612 -0.00049813 0.00030520 7.27247799 0.99847825 0.99919667 0.49320483;
+	-6.27297631 -0.00049805 0.00030515 7.27247827 0.99847849 0.99919680 0.49320494;
+	-6.27297650 -0.00049797 0.00030510 7.27247854 0.99847874 0.99919693 0.49320494;
+	-6.27297670 -0.00049789 0.00030505 7.27247881 0.99847898 0.99919706 0.49320488;
+	-6.27297689 -0.00049781 0.00030500 7.27247908 0.99847923 0.99919719 0.49320497;
+	-6.27297708 -0.00049773 0.00030495 7.27247935 0.99847947 0.99919732 0.49320498;
+	-6.27297727 -0.00049765 0.00030491 7.27247962 0.99847972 0.99919745 0.49320504;
+	-6.27297746 -0.00049757 0.00030486 7.27247990 0.99847996 0.99919758 0.49320498;
+	-6.27297765 -0.00049749 0.00030481 7.27248017 0.99848021 0.99919771 0.49320508;
+	-6.27297784 -0.00049741 0.00030476 7.27248044 0.99848045 0.99919784 0.49320506;
+	-6.27297804 -0.00049733 0.00030471 7.27248071 0.99848070 0.99919796 0.49320512;
+	-6.27297823 -0.00049725 0.00030466 7.27248098 0.99848094 0.99919809 0.49320520;
+	-6.27297842 -0.00049717 0.00030461 7.27248125 0.99848118 0.99919822 0.49320518;
+	-6.27297861 -0.00049709 0.00030456 7.27248152 0.99848143 0.99919835 0.49320519;
+	-6.27297880 -0.00049701 0.00030451 7.27248179 0.99848167 0.99919848 0.49320524;
+	-6.27297899 -0.00049693 0.00030446 7.27248206 0.99848192 0.99919861 0.49320527;
+	-6.27297918 -0.00049685 0.00030442 7.27248233 0.99848216 0.99919874 0.49320529;
+	-6.27297937 -0.00049677 0.00030437 7.27248260 0.99848240 0.99919887 0.49320530;
+	-6.27297956 -0.00049669 0.00030432 7.27248288 0.99848265 0.99919899 0.49320533;
+	-6.27297975 -0.00049661 0.00030427 7.27248315 0.99848289 0.99919912 0.49320533;
+	-6.27297994 -0.00049653 0.00030422 7.27248342 0.99848313 0.99919925 0.49320545;
+	-6.27298013 -0.00049645 0.00030417 7.27248369 0.99848338 0.99919938 0.49320550;
+	-6.27298033 -0.00049637 0.00030412 7.27248396 0.99848362 0.99919951 0.49320544;
+	-6.27298052 -0.00049629 0.00030407 7.27248423 0.99848386 0.99919964 0.49320542;
+	-6.27298071 -0.00049621 0.00030403 7.27248450 0.99848411 0.99919976 0.49320549;
+	-6.27298090 -0.00049613 0.00030398 7.27248477 0.99848435 0.99919989 0.49320553;
+	-6.27298109 -0.00049605 0.00030393 7.27248504 0.99848459 0.99920002 0.49320549;
+	-6.27298128 -0.00049597 0.00030388 7.27248531 0.99848484 0.99920015 0.49320559;
+	-6.27298147 -0.00049589 0.00030383 7.27248557 0.99848508 0.99920028 0.49320560;
+	-6.27298166 -0.00049581 0.00030378 7.27248584 0.99848532 0.99920041 0.49320562;
+	-6.27298185 -0.00049573 0.00030373 7.27248611 0.99848556 0.99920053 0.49320572;
+	-6.27298204 -0.00049565 0.00030368 7.27248638 0.99848581 0.99920066 0.49320570;
+	-6.27298223 -0.00049557 0.00030364 7.27248665 0.99848605 0.99920079 0.49320571;
+	-6.27298242 -0.00049550 0.00030359 7.27248692 0.99848629 0.99920092 0.49320573;
+	-6.27298261 -0.00049542 0.00030354 7.27248719 0.99848653 0.99920105 0.49320576;
+	-6.27298280 -0.00049534 0.00030349 7.27248746 0.99848678 0.99920117 0.49320585;
+	-6.27298299 -0.00049526 0.00030344 7.27248773 0.99848702 0.99920130 0.49320584;
+	-6.27298318 -0.00049518 0.00030339 7.27248800 0.99848726 0.99920143 0.49320590;
+	-6.27298336 -0.00049510 0.00030334 7.27248827 0.99848750 0.99920156 0.49320592;
+	-6.27298355 -0.00049502 0.00030330 7.27248853 0.99848774 0.99920168 0.49320594;
+	-6.27298374 -0.00049494 0.00030325 7.27248880 0.99848799 0.99920181 0.49320595;
+	-6.27298393 -0.00049486 0.00030320 7.27248907 0.99848823 0.99920194 0.49320597;
+	-6.27298412 -0.00049478 0.00030315 7.27248934 0.99848847 0.99920207 0.49320596;
+	-6.27298431 -0.00049470 0.00030310 7.27248961 0.99848871 0.99920220 0.49320603;
+	-6.27298450 -0.00049462 0.00030305 7.27248988 0.99848895 0.99920232 0.49320613;
+	-6.27298469 -0.00049455 0.00030300 7.27249014 0.99848919 0.99920245 0.49320607;
+	-6.27298488 -0.00049447 0.00030296 7.27249041 0.99848944 0.99920258 0.49320616;
+	-6.27298507 -0.00049439 0.00030291 7.27249068 0.99848968 0.99920270 0.49320618;
+	-6.27298526 -0.00049431 0.00030286 7.27249095 0.99848992 0.99920283 0.49320613;
+	-6.27298545 -0.00049423 0.00030281 7.27249122 0.99849016 0.99920296 0.49320620;
+	-6.27298563 -0.00049415 0.00030276 7.27249148 0.99849040 0.99920309 0.49320622;
+	-6.27298582 -0.00049407 0.00030271 7.27249175 0.99849064 0.99920321 0.49320626;
+	-6.27298601 -0.00049399 0.00030267 7.27249202 0.99849088 0.99920334 0.49320625;
+	-6.27298620 -0.00049391 0.00030262 7.27249229 0.99849112 0.99920347 0.49320640;
+	-6.27298639 -0.00049384 0.00030257 7.27249255 0.99849136 0.99920360 0.49320640;
+	-6.27298658 -0.00049376 0.00030252 7.27249282 0.99849161 0.99920372 0.49320636;
+	-6.27298677 -0.00049368 0.00030247 7.27249309 0.99849185 0.99920385 0.49320641;
+	-6.27298695 -0.00049360 0.00030242 7.27249336 0.99849209 0.99920398 0.49320644;
+	-6.27298714 -0.00049352 0.00030238 7.27249362 0.99849233 0.99920410 0.49320643;
+	-6.27298733 -0.00049344 0.00030233 7.27249389 0.99849257 0.99920423 0.49320647;
+	-6.27298752 -0.00049336 0.00030228 7.27249416 0.99849281 0.99920436 0.49320649;
+	-6.27298771 -0.00049328 0.00030223 7.27249442 0.99849305 0.99920448 0.49320659;
+	-6.27298790 -0.00049321 0.00030218 7.27249469 0.99849329 0.99920461 0.49320657;
+	-6.27298808 -0.00049313 0.00030214 7.27249496 0.99849353 0.99920474 0.49320661;
+	-6.27298827 -0.00049305 0.00030209 7.27249522 0.99849377 0.99920486 0.49320660;
+	-6.27298846 -0.00049297 0.00030204 7.27249549 0.99849401 0.99920499 0.49320663;
+	-6.27298865 -0.00049289 0.00030199 7.27249576 0.99849425 0.99920512 0.49320673;
+	-6.27298883 -0.00049281 0.00030194 7.27249602 0.99849449 0.99920524 0.49320673;
+	-6.27298902 -0.00049273 0.00030189 7.27249629 0.99849473 0.99920537 0.49320669;
+	-6.27298921 -0.00049266 0.00030185 7.27249655 0.99849497 0.99920550 0.49320677;
+	-6.27298940 -0.00049258 0.00030180 7.27249682 0.99849521 0.99920562 0.49320680;
+	-6.27298959 -0.00049250 0.00030175 7.27249709 0.99849545 0.99920575 0.49320687;
+	-6.27298977 -0.00049242 0.00030170 7.27249735 0.99849569 0.99920588 0.49320693;
+	-6.27298996 -0.00049234 0.00030165 7.27249762 0.99849593 0.99920600 0.49320681;
+	-6.27299015 -0.00049226 0.00030161 7.27249788 0.99849616 0.99920613 0.49320699;
+	-6.27299033 -0.00049219 0.00030156 7.27249815 0.99849640 0.99920626 0.49320687;
+	-6.27299052 -0.00049211 0.00030151 7.27249841 0.99849664 0.99920638 0.49320699;
+	-6.27299071 -0.00049203 0.00030146 7.27249868 0.99849688 0.99920651 0.49320705;
+	-6.27299090 -0.00049195 0.00030141 7.27249894 0.99849712 0.99920663 0.49320709;
+	-6.27299108 -0.00049187 0.00030137 7.27249921 0.99849736 0.99920676 0.49320704;
+	-6.27299127 -0.00049180 0.00030132 7.27249948 0.99849760 0.99920689 0.49320700;
+	-6.27299146 -0.00049172 0.00030127 7.27249974 0.99849784 0.99920701 0.49320709;
+	-6.27299164 -0.00049164 0.00030122 7.27250001 0.99849808 0.99920714 0.49320722;
+	-6.27299183 -0.00049156 0.00030118 7.27250027 0.99849831 0.99920726 0.49320713;
+	-6.27299202 -0.00049148 0.00030113 7.27250053 0.99849855 0.99920739 0.49320717;
+	-6.27299220 -0.00049140 0.00030108 7.27250080 0.99849879 0.99920752 0.49320720;
+	-6.27299239 -0.00049133 0.00030103 7.27250106 0.99849903 0.99920764 0.49320724;
+	-6.27299258 -0.00049125 0.00030098 7.27250133 0.99849927 0.99920777 0.49320731;
+	-6.27299276 -0.00049117 0.00030094 7.27250159 0.99849951 0.99920789 0.49320733;
+	-6.27299295 -0.00049109 0.00030089 7.27250186 0.99849974 0.99920802 0.49320736;
+	-6.27299314 -0.00049102 0.00030084 7.27250212 0.99849998 0.99920814 0.49320742;
+	-6.27299332 -0.00049094 0.00030079 7.27250239 0.99850022 0.99920827 0.49320737;
+	-6.27299351 -0.00049086 0.00030075 7.27250265 0.99850046 0.99920840 0.49320741;
+	-6.27299370 -0.00049078 0.00030070 7.27250291 0.99850070 0.99920852 0.49320747;
+	-6.27299388 -0.00049070 0.00030065 7.27250318 0.99850093 0.99920865 0.49320746;
+	-6.27299407 -0.00049063 0.00030060 7.27250344 0.99850117 0.99920877 0.49320747;
+	-6.27299425 -0.00049055 0.00030055 7.27250371 0.99850141 0.99920890 0.49320753;
+	-6.27299444 -0.00049047 0.00030051 7.27250397 0.99850165 0.99920902 0.49320754;
+	-6.27299463 -0.00049039 0.00030046 7.27250423 0.99850188 0.99920915 0.49320761;
+	-6.27299481 -0.00049032 0.00030041 7.27250450 0.99850212 0.99920927 0.49320761;
+	-6.27299500 -0.00049024 0.00030036 7.27250476 0.99850236 0.99920940 0.49320763;
+	-6.27299518 -0.00049016 0.00030032 7.27250502 0.99850260 0.99920952 0.49320763;
+	-6.27299537 -0.00049008 0.00030027 7.27250529 0.99850283 0.99920965 0.49320764;
+	-6.27299556 -0.00049000 0.00030022 7.27250555 0.99850307 0.99920977 0.49320768;
+	-6.27299574 -0.00048993 0.00030017 7.27250581 0.99850331 0.99920990 0.49320774;
+	-6.27299593 -0.00048985 0.00030013 7.27250608 0.99850354 0.99921002 0.49320770;
+	-6.27299611 -0.00048977 0.00030008 7.27250634 0.99850378 0.99921015 0.49320782;
+	-6.27299630 -0.00048969 0.00030003 7.27250660 0.99850402 0.99921027 0.49320781;
+	-6.27299648 -0.00048962 0.00029998 7.27250687 0.99850426 0.99921040 0.49320784;
+	-6.27299667 -0.00048954 0.00029994 7.27250713 0.99850449 0.99921052 0.49320787;
+	-6.27299685 -0.00048946 0.00029989 7.27250739 0.99850473 0.99921065 0.49320791;
+	-6.27299704 -0.00048938 0.00029984 7.27250765 0.99850496 0.99921077 0.49320794;
+	-6.27299722 -0.00048931 0.00029979 7.27250792 0.99850520 0.99921090 0.49320795;
+	-6.27299741 -0.00048923 0.00029975 7.27250818 0.99850544 0.99921102 0.49320801;
+	-6.27299759 -0.00048915 0.00029970 7.27250844 0.99850567 0.99921115 0.49320802;
+	-6.27299778 -0.00048908 0.00029965 7.27250870 0.99850591 0.99921127 0.49320805;
+	-6.27299796 -0.00048900 0.00029960 7.27250896 0.99850615 0.99921140 0.49320810;
+	-6.27299815 -0.00048892 0.00029956 7.27250923 0.99850638 0.99921152 0.49320806;
+	-6.27299833 -0.00048884 0.00029951 7.27250949 0.99850662 0.99921165 0.49320815;
+	-6.27299852 -0.00048877 0.00029946 7.27250975 0.99850685 0.99921177 0.49320816;
+	-6.27299870 -0.00048869 0.00029941 7.27251001 0.99850709 0.99921190 0.49320817;
+	-6.27299889 -0.00048861 0.00029937 7.27251027 0.99850733 0.99921202 0.49320820;
+	-6.27299907 -0.00048854 0.00029932 7.27251054 0.99850756 0.99921214 0.49320826;
+	-6.27299926 -0.00048846 0.00029927 7.27251080 0.99850780 0.99921227 0.49320827;
+	-6.27299944 -0.00048838 0.00029923 7.27251106 0.99850803 0.99921239 0.49320823;
+	-6.27299962 -0.00048830 0.00029918 7.27251132 0.99850827 0.99921252 0.49320833;
+	-6.27299981 -0.00048823 0.00029913 7.27251158 0.99850850 0.99921264 0.49320833;
+	-6.27299999 -0.00048815 0.00029908 7.27251184 0.99850874 0.99921277 0.49320839;
+	-6.27300018 -0.00048807 0.00029904 7.27251210 0.99850897 0.99921289 0.49320841;
+	-6.27300036 -0.00048800 0.00029899 7.27251236 0.99850921 0.99921301 0.49320850;
+	-6.27300055 -0.00048792 0.00029894 7.27251263 0.99850944 0.99921314 0.49320846;
+	-6.27300073 -0.00048784 0.00029890 7.27251289 0.99850968 0.99921326 0.49320848;
+	-6.27300091 -0.00048777 0.00029885 7.27251315 0.99850991 0.99921339 0.49320847;
+	-6.27300110 -0.00048769 0.00029880 7.27251341 0.99851015 0.99921351 0.49320858;
+	-6.27300128 -0.00048761 0.00029875 7.27251367 0.99851038 0.99921363 0.49320864;
+	-6.27300146 -0.00048754 0.00029871 7.27251393 0.99851062 0.99921376 0.49320855;
+	-6.27300165 -0.00048746 0.00029866 7.27251419 0.99851085 0.99921388 0.49320856;
+	-6.27300183 -0.00048738 0.00029861 7.27251445 0.99851109 0.99921401 0.49320863;
+	-6.27300202 -0.00048730 0.00029857 7.27251471 0.99851132 0.99921413 0.49320867;
+	-6.27300220 -0.00048723 0.00029852 7.27251497 0.99851156 0.99921425 0.49320861;
+	-6.27300238 -0.00048715 0.00029847 7.27251523 0.99851179 0.99921438 0.49320874;
+	-6.27300257 -0.00048707 0.00029842 7.27251549 0.99851202 0.99921450 0.49320874;
+	-6.27300275 -0.00048700 0.00029838 7.27251575 0.99851226 0.99921462 0.49320881;
+	-6.27300293 -0.00048692 0.00029833 7.27251601 0.99851249 0.99921475 0.49320880;
+	-6.27300312 -0.00048685 0.00029828 7.27251627 0.99851273 0.99921487 0.49320887;
+	-6.27300330 -0.00048677 0.00029824 7.27251653 0.99851296 0.99921499 0.49320886;
+	-6.27300348 -0.00048669 0.00029819 7.27251679 0.99851320 0.99921512 0.49320893;
+	-6.27300367 -0.00048662 0.00029814 7.27251705 0.99851343 0.99921524 0.49320893;
+	-6.27300385 -0.00048654 0.00029810 7.27251731 0.99851366 0.99921536 0.49320895;
+	-6.27300403 -0.00048646 0.00029805 7.27251757 0.99851390 0.99921549 0.49320892;
+	-6.27300421 -0.00048639 0.00029800 7.27251783 0.99851413 0.99921561 0.49320898;
+	-6.27300440 -0.00048631 0.00029796 7.27251809 0.99851436 0.99921573 0.49320901;
+	-6.27300458 -0.00048623 0.00029791 7.27251835 0.99851460 0.99921586 0.49320901;
+	-6.27300476 -0.00048616 0.00029786 7.27251861 0.99851483 0.99921598 0.49320912;
+	-6.27300495 -0.00048608 0.00029782 7.27251886 0.99851506 0.99921610 0.49320910;
+	-6.27300513 -0.00048600 0.00029777 7.27251912 0.99851530 0.99921623 0.49320913;
+	-6.27300531 -0.00048593 0.00029772 7.27251938 0.99851553 0.99921635 0.49320917;
+	-6.27300549 -0.00048585 0.00029768 7.27251964 0.99851576 0.99921647 0.49320916;
+	-6.27300568 -0.00048578 0.00029763 7.27251990 0.99851600 0.99921660 0.49320920;
+	-6.27300586 -0.00048570 0.00029758 7.27252016 0.99851623 0.99921672 0.49320924;
+	-6.27300604 -0.00048562 0.00029753 7.27252042 0.99851646 0.99921684 0.49320926;
+	-6.27300622 -0.00048555 0.00029749 7.27252068 0.99851669 0.99921696 0.49320930;
+	-6.27300640 -0.00048547 0.00029744 7.27252093 0.99851693 0.99921709 0.49320931;
+	-6.27300659 -0.00048539 0.00029739 7.27252119 0.99851716 0.99921721 0.49320938;
+	-6.27300677 -0.00048532 0.00029735 7.27252145 0.99851739 0.99921733 0.49320939;
+	-6.27300695 -0.00048524 0.00029730 7.27252171 0.99851763 0.99921746 0.49320948;
+	-6.27300713 -0.00048517 0.00029725 7.27252197 0.99851786 0.99921758 0.49320954;
+	-6.27300732 -0.00048509 0.00029721 7.27252222 0.99851809 0.99921770 0.49320950;
+	-6.27300750 -0.00048501 0.00029716 7.27252248 0.99851832 0.99921782 0.49320952;
+	-6.27300768 -0.00048494 0.00029712 7.27252274 0.99851855 0.99921795 0.49320954;
+	-6.27300786 -0.00048486 0.00029707 7.27252300 0.99851879 0.99921807 0.49320960;
+	-6.27300804 -0.00048479 0.00029702 7.27252326 0.99851902 0.99921819 0.49320959;
+	-6.27300822 -0.00048471 0.00029698 7.27252351 0.99851925 0.99921831 0.49320958;
+	-6.27300841 -0.00048463 0.00029693 7.27252377 0.99851948 0.99921844 0.49320965;
+	-6.27300859 -0.00048456 0.00029688 7.27252403 0.99851971 0.99921856 0.49320967;
+	-6.27300877 -0.00048448 0.00029684 7.27252429 0.99851995 0.99921868 0.49320972;
+	-6.27300895 -0.00048441 0.00029679 7.27252454 0.99852018 0.99921880 0.49320973;
+	-6.27300913 -0.00048433 0.00029674 7.27252480 0.99852041 0.99921893 0.49320972;
+	-6.27300931 -0.00048426 0.00029670 7.27252506 0.99852064 0.99921905 0.49320980;
+	-6.27300949 -0.00048418 0.00029665 7.27252531 0.99852087 0.99921917 0.49320981;
+	-6.27300968 -0.00048410 0.00029660 7.27252557 0.99852110 0.99921929 0.49320974;
+	-6.27300986 -0.00048403 0.00029656 7.27252583 0.99852134 0.99921941 0.49320985;
+	-6.27301004 -0.00048395 0.00029651 7.27252608 0.99852157 0.99921954 0.49320992;
+	-6.27301022 -0.00048388 0.00029646 7.27252634 0.99852180 0.99921966 0.49320992;
+	-6.27301040 -0.00048380 0.00029642 7.27252660 0.99852203 0.99921978 0.49320993;
+	-6.27301058 -0.00048373 0.00029637 7.27252685 0.99852226 0.99921990 0.49320993;
+	-6.27301076 -0.00048365 0.00029633 7.27252711 0.99852249 0.99922002 0.49321001;
+	-6.27301094 -0.00048357 0.00029628 7.27252737 0.99852272 0.99922015 0.49321003;
+	-6.27301112 -0.00048350 0.00029623 7.27252762 0.99852295 0.99922027 0.49321005;
+	-6.27301130 -0.00048342 0.00029619 7.27252788 0.99852318 0.99922039 0.49321008;
+	-6.27301148 -0.00048335 0.00029614 7.27252814 0.99852341 0.99922051 0.49321008;
+	-6.27301166 -0.00048327 0.00029609 7.27252839 0.99852364 0.99922063 0.49321010;
+	-6.27301185 -0.00048320 0.00029605 7.27252865 0.99852388 0.99922075 0.49321017;
+	-6.27301203 -0.00048312 0.00029600 7.27252890 0.99852411 0.99922088 0.49321023;
+	-6.27301221 -0.00048305 0.00029596 7.27252916 0.99852434 0.99922100 0.49321020;
+	-6.27301239 -0.00048297 0.00029591 7.27252942 0.99852457 0.99922112 0.49321023;
+	-6.27301257 -0.00048290 0.00029586 7.27252967 0.99852480 0.99922124 0.49321024;
+	-6.27301275 -0.00048282 0.00029582 7.27252993 0.99852503 0.99922136 0.49321030;
+	-6.27301293 -0.00048275 0.00029577 7.27253018 0.99852526 0.99922148 0.49321031;
+	-6.27301311 -0.00048267 0.00029572 7.27253044 0.99852549 0.99922161 0.49321030;
+	-6.27301329 -0.00048259 0.00029568 7.27253069 0.99852572 0.99922173 0.49321030;
+	-6.27301347 -0.00048252 0.00029563 7.27253095 0.99852595 0.99922185 0.49321039;
+	-6.27301365 -0.00048244 0.00029559 7.27253120 0.99852618 0.99922197 0.49321037;
+	-6.27301383 -0.00048237 0.00029554 7.27253146 0.99852641 0.99922209 0.49321046;
+	-6.27301401 -0.00048229 0.00029549 7.27253171 0.99852664 0.99922221 0.49321048;
+	-6.27301419 -0.00048222 0.00029545 7.27253197 0.99852687 0.99922233 0.49321049;
+	-6.27301437 -0.00048214 0.00029540 7.27253222 0.99852710 0.99922245 0.49321046;
+	-6.27301455 -0.00048207 0.00029536 7.27253248 0.99852732 0.99922258 0.49321053;
+	-6.27301473 -0.00048199 0.00029531 7.27253273 0.99852755 0.99922270 0.49321060;
+	-6.27301491 -0.00048192 0.00029526 7.27253299 0.99852778 0.99922282 0.49321066;
+	-6.27301509 -0.00048184 0.00029522 7.27253324 0.99852801 0.99922294 0.49321062;
+	-6.27301526 -0.00048177 0.00029517 7.27253350 0.99852824 0.99922306 0.49321065;
+	-6.27301544 -0.00048169 0.00029513 7.27253375 0.99852847 0.99922318 0.49321069;
+	-6.27301562 -0.00048162 0.00029508 7.27253400 0.99852870 0.99922330 0.49321066;
+	-6.27301580 -0.00048154 0.00029503 7.27253426 0.99852893 0.99922342 0.49321075;
+	-6.27301598 -0.00048147 0.00029499 7.27253451 0.99852916 0.99922354 0.49321074;
+	-6.27301616 -0.00048139 0.00029494 7.27253477 0.99852939 0.99922366 0.49321082;
+	-6.27301634 -0.00048132 0.00029490 7.27253502 0.99852962 0.99922378 0.49321081;
+	-6.27301652 -0.00048124 0.00029485 7.27253528 0.99852984 0.99922391 0.49321083;
+	-6.27301670 -0.00048117 0.00029480 7.27253553 0.99853007 0.99922403 0.49321094;
+	-6.27301688 -0.00048109 0.00029476 7.27253578 0.99853030 0.99922415 0.49321096;
+	-6.27301706 -0.00048102 0.00029471 7.27253604 0.99853053 0.99922427 0.49321093;
+	-6.27301724 -0.00048095 0.00029467 7.27253629 0.99853076 0.99922439 0.49321094;
+	-6.27301741 -0.00048087 0.00029462 7.27253654 0.99853099 0.99922451 0.49321098;
+	-6.27301759 -0.00048080 0.00029458 7.27253680 0.99853121 0.99922463 0.49321102;
+	-6.27301777 -0.00048072 0.00029453 7.27253705 0.99853144 0.99922475 0.49321101;
+	-6.27301795 -0.00048065 0.00029448 7.27253730 0.99853167 0.99922487 0.49321109;
+	-6.27301813 -0.00048057 0.00029444 7.27253756 0.99853190 0.99922499 0.49321107;
+	-6.27301831 -0.00048050 0.00029439 7.27253781 0.99853213 0.99922511 0.49321107;
+	-6.27301849 -0.00048042 0.00029435 7.27253806 0.99853235 0.99922523 0.49321110;
+	-6.27301866 -0.00048035 0.00029430 7.27253832 0.99853258 0.99922535 0.49321118;
+	-6.27301884 -0.00048027 0.00029426 7.27253857 0.99853281 0.99922547 0.49321119;
+	-6.27301902 -0.00048020 0.00029421 7.27253882 0.99853304 0.99922559 0.49321116;
+	-6.27301920 -0.00048012 0.00029416 7.27253907 0.99853327 0.99922571 0.49321127;
+	-6.27301938 -0.00048005 0.00029412 7.27253933 0.99853349 0.99922583 0.49321123;
+	-6.27301956 -0.00047998 0.00029407 7.27253958 0.99853372 0.99922595 0.49321129;
+	-6.27301973 -0.00047990 0.00029403 7.27253983 0.99853395 0.99922607 0.49321135;
+	-6.27301991 -0.00047983 0.00029398 7.27254008 0.99853418 0.99922619 0.49321135;
+	-6.27302009 -0.00047975 0.00029394 7.27254034 0.99853440 0.99922631 0.49321139;
+	-6.27302027 -0.00047968 0.00029389 7.27254059 0.99853463 0.99922643 0.49321146;
+	-6.27302044 -0.00047960 0.00029384 7.27254084 0.99853486 0.99922655 0.49321142;
+	-6.27302062 -0.00047953 0.00029380 7.27254109 0.99853508 0.99922667 0.49321144;
+	-6.27302080 -0.00047946 0.00029375 7.27254135 0.99853531 0.99922679 0.49321144;
+	-6.27302098 -0.00047938 0.00029371 7.27254160 0.99853554 0.99922691 0.49321157;
+	-6.27302116 -0.00047931 0.00029366 7.27254185 0.99853577 0.99922703 0.49321152;
+	-6.27302133 -0.00047923 0.00029362 7.27254210 0.99853599 0.99922715 0.49321153;
+	-6.27302151 -0.00047916 0.00029357 7.27254235 0.99853622 0.99922727 0.49321157;
+	-6.27302169 -0.00047908 0.00029353 7.27254260 0.99853645 0.99922739 0.49321160;
+	-6.27302187 -0.00047901 0.00029348 7.27254286 0.99853667 0.99922751 0.49321170;
+	-6.27302204 -0.00047894 0.00029344 7.27254311 0.99853690 0.99922763 0.49321172;
+	-6.27302222 -0.00047886 0.00029339 7.27254336 0.99853712 0.99922775 0.49321163;
+	-6.27302240 -0.00047879 0.00029334 7.27254361 0.99853735 0.99922787 0.49321166;
+	-6.27302257 -0.00047871 0.00029330 7.27254386 0.99853758 0.99922799 0.49321175;
+	-6.27302275 -0.00047864 0.00029325 7.27254411 0.99853780 0.99922811 0.49321177;
+	-6.27302293 -0.00047857 0.00029321 7.27254436 0.99853803 0.99922823 0.49321185;
+	-6.27302311 -0.00047849 0.00029316 7.27254461 0.99853826 0.99922834 0.49321182;
+	-6.27302328 -0.00047842 0.00029312 7.27254486 0.99853848 0.99922846 0.49321190;
+	-6.27302346 -0.00047834 0.00029307 7.27254512 0.99853871 0.99922858 0.49321191;
+	-6.27302364 -0.00047827 0.00029303 7.27254537 0.99853893 0.99922870 0.49321187;
+	-6.27302381 -0.00047820 0.00029298 7.27254562 0.99853916 0.99922882 0.49321186;
+	-6.27302399 -0.00047812 0.00029294 7.27254587 0.99853939 0.99922894 0.49321193;
+	-6.27302417 -0.00047805 0.00029289 7.27254612 0.99853961 0.99922906 0.49321201;
+	-6.27302434 -0.00047797 0.00029285 7.27254637 0.99853984 0.99922918 0.49321205;
+	-6.27302452 -0.00047790 0.00029280 7.27254662 0.99854006 0.99922930 0.49321210;
+	-6.27302470 -0.00047783 0.00029276 7.27254687 0.99854029 0.99922942 0.49321211;
+	-6.27302487 -0.00047775 0.00029271 7.27254712 0.99854051 0.99922954 0.49321206;
+	-6.27302505 -0.00047768 0.00029267 7.27254737 0.99854074 0.99922965 0.49321212;
+	-6.27302523 -0.00047761 0.00029262 7.27254762 0.99854096 0.99922977 0.49321212;
+	-6.27302540 -0.00047753 0.00029257 7.27254787 0.99854119 0.99922989 0.49321221;
+	-6.27302558 -0.00047746 0.00029253 7.27254812 0.99854141 0.99923001 0.49321218;
+	-6.27302575 -0.00047739 0.00029248 7.27254837 0.99854164 0.99923013 0.49321223;
+	-6.27302593 -0.00047731 0.00029244 7.27254862 0.99854186 0.99923025 0.49321227;
+	-6.27302611 -0.00047724 0.00029239 7.27254887 0.99854209 0.99923037 0.49321227;
+	-6.27302628 -0.00047716 0.00029235 7.27254912 0.99854231 0.99923049 0.49321226;
+	-6.27302646 -0.00047709 0.00029230 7.27254937 0.99854254 0.99923060 0.49321229;
+	-6.27302664 -0.00047702 0.00029226 7.27254962 0.99854276 0.99923072 0.49321232;
+	-6.27302681 -0.00047694 0.00029221 7.27254987 0.99854299 0.99923084 0.49321239;
+	-6.27302699 -0.00047687 0.00029217 7.27255012 0.99854321 0.99923096 0.49321240;
+	-6.27302716 -0.00047680 0.00029212 7.27255037 0.99854344 0.99923108 0.49321246;
+	-6.27302734 -0.00047672 0.00029208 7.27255061 0.99854366 0.99923120 0.49321244;
+	-6.27302751 -0.00047665 0.00029203 7.27255086 0.99854388 0.99923132 0.49321242;
+	-6.27302769 -0.00047658 0.00029199 7.27255111 0.99854411 0.99923143 0.49321242;
+	-6.27302787 -0.00047650 0.00029194 7.27255136 0.99854433 0.99923155 0.49321258;
+	-6.27302804 -0.00047643 0.00029190 7.27255161 0.99854456 0.99923167 0.49321251;
+	-6.27302822 -0.00047636 0.00029185 7.27255186 0.99854478 0.99923179 0.49321261;
+	-6.27302839 -0.00047628 0.00029181 7.27255211 0.99854501 0.99923191 0.49321264;
+	-6.27302857 -0.00047621 0.00029176 7.27255236 0.99854523 0.99923203 0.49321265;
+	-6.27302874 -0.00047614 0.00029172 7.27255261 0.99854545 0.99923214 0.49321268;
+	-6.27302892 -0.00047606 0.00029167 7.27255285 0.99854568 0.99923226 0.49321269;
+	-6.27302909 -0.00047599 0.00029163 7.27255310 0.99854590 0.99923238 0.49321277;
+	-6.27302927 -0.00047592 0.00029158 7.27255335 0.99854612 0.99923250 0.49321272;
+	-6.27302944 -0.00047584 0.00029154 7.27255360 0.99854635 0.99923262 0.49321278;
+	-6.27302962 -0.00047577 0.00029150 7.27255385 0.99854657 0.99923273 0.49321287;
+	-6.27302979 -0.00047570 0.00029145 7.27255410 0.99854679 0.99923285 0.49321280;
+	-6.27302997 -0.00047562 0.00029141 7.27255434 0.99854702 0.99923297 0.49321291;
+	-6.27303014 -0.00047555 0.00029136 7.27255459 0.99854724 0.99923309 0.49321279;
+	-6.27303032 -0.00047548 0.00029132 7.27255484 0.99854746 0.99923321 0.49321284;
+	-6.27303049 -0.00047541 0.00029127 7.27255509 0.99854769 0.99923332 0.49321288;
+	-6.27303067 -0.00047533 0.00029123 7.27255533 0.99854791 0.99923344 0.49321294;
+	-6.27303084 -0.00047526 0.00029118 7.27255558 0.99854813 0.99923356 0.49321292;
+	-6.27303102 -0.00047519 0.00029114 7.27255583 0.99854836 0.99923368 0.49321300;
+	-6.27303119 -0.00047511 0.00029109 7.27255608 0.99854858 0.99923379 0.49321302;
+	-6.27303137 -0.00047504 0.00029105 7.27255632 0.99854880 0.99923391 0.49321303;
+	-6.27303154 -0.00047497 0.00029100 7.27255657 0.99854903 0.99923403 0.49321311;
+	-6.27303171 -0.00047490 0.00029096 7.27255682 0.99854925 0.99923415 0.49321311;
+	-6.27303189 -0.00047482 0.00029091 7.27255707 0.99854947 0.99923426 0.49321315;
+	-6.27303206 -0.00047475 0.00029087 7.27255731 0.99854969 0.99923438 0.49321319;
+	-6.27303224 -0.00047468 0.00029082 7.27255756 0.99854992 0.99923450 0.49321317;
+	-6.27303241 -0.00047460 0.00029078 7.27255781 0.99855014 0.99923462 0.49321321;
+	-6.27303259 -0.00047453 0.00029073 7.27255805 0.99855036 0.99923473 0.49321326;
+	-6.27303276 -0.00047446 0.00029069 7.27255830 0.99855058 0.99923485 0.49321318;
+	-6.27303293 -0.00047439 0.00029065 7.27255855 0.99855081 0.99923497 0.49321326;
+	-6.27303311 -0.00047431 0.00029060 7.27255879 0.99855103 0.99923509 0.49321333;
+	-6.27303328 -0.00047424 0.00029056 7.27255904 0.99855125 0.99923520 0.49321333;
+	-6.27303345 -0.00047417 0.00029051 7.27255929 0.99855147 0.99923532 0.49321344;
+	-6.27303363 -0.00047410 0.00029047 7.27255953 0.99855169 0.99923544 0.49321337;
+	-6.27303380 -0.00047402 0.00029042 7.27255978 0.99855192 0.99923555 0.49321345;
+	-6.27303398 -0.00047395 0.00029038 7.27256003 0.99855214 0.99923567 0.49321337;
+	-6.27303415 -0.00047388 0.00029033 7.27256027 0.99855236 0.99923579 0.49321344;
+	-6.27303432 -0.00047380 0.00029029 7.27256052 0.99855258 0.99923591 0.49321346;
+	-6.27303450 -0.00047373 0.00029025 7.27256076 0.99855280 0.99923602 0.49321354;
+	-6.27303467 -0.00047366 0.00029020 7.27256101 0.99855302 0.99923614 0.49321353;
+	-6.27303484 -0.00047359 0.00029016 7.27256126 0.99855325 0.99923626 0.49321361;
+	-6.27303502 -0.00047351 0.00029011 7.27256150 0.99855347 0.99923637 0.49321358;
+	-6.27303519 -0.00047344 0.00029007 7.27256175 0.99855369 0.99923649 0.49321363;
+	-6.27303536 -0.00047337 0.00029002 7.27256199 0.99855391 0.99923661 0.49321367;
+	-6.27303554 -0.00047330 0.00028998 7.27256224 0.99855413 0.99923672 0.49321364;
+	-6.27303571 -0.00047323 0.00028993 7.27256248 0.99855435 0.99923684 0.49321377;
+	-6.27303588 -0.00047315 0.00028989 7.27256273 0.99855457 0.99923696 0.49321375;
+	-6.27303606 -0.00047308 0.00028985 7.27256298 0.99855479 0.99923707 0.49321379;
+	-6.27303623 -0.00047301 0.00028980 7.27256322 0.99855501 0.99923719 0.49321377;
+	-6.27303640 -0.00047294 0.00028976 7.27256347 0.99855524 0.99923731 0.49321372;
+	-6.27303658 -0.00047286 0.00028971 7.27256371 0.99855546 0.99923742 0.49321383;
+	-6.27303675 -0.00047279 0.00028967 7.27256396 0.99855568 0.99923754 0.49321384;
+	-6.27303692 -0.00047272 0.00028962 7.27256420 0.99855590 0.99923766 0.49321394;
+	-6.27303709 -0.00047265 0.00028958 7.27256445 0.99855612 0.99923777 0.49321386;
+	-6.27303727 -0.00047258 0.00028954 7.27256469 0.99855634 0.99923789 0.49321390;
+	-6.27303744 -0.00047250 0.00028949 7.27256494 0.99855656 0.99923801 0.49321401;
+	-6.27303761 -0.00047243 0.00028945 7.27256518 0.99855678 0.99923812 0.49321394;
+	-6.27303778 -0.00047236 0.00028940 7.27256543 0.99855700 0.99923824 0.49321395;
+	-6.27303796 -0.00047229 0.00028936 7.27256567 0.99855722 0.99923835 0.49321400;
+	-6.27303813 -0.00047221 0.00028931 7.27256591 0.99855744 0.99923847 0.49321392;
+	-6.27303830 -0.00047214 0.00028927 7.27256616 0.99855766 0.99923859 0.49321409;
+	-6.27303847 -0.00047207 0.00028923 7.27256640 0.99855788 0.99923870 0.49321404;
+	-6.27303865 -0.00047200 0.00028918 7.27256665 0.99855810 0.99923882 0.49321416;
+	-6.27303882 -0.00047193 0.00028914 7.27256689 0.99855832 0.99923893 0.49321409;
+	-6.27303899 -0.00047185 0.00028909 7.27256714 0.99855854 0.99923905 0.49321418;
+	-6.27303916 -0.00047178 0.00028905 7.27256738 0.99855876 0.99923917 0.49321418;
+	-6.27303933 -0.00047171 0.00028901 7.27256762 0.99855898 0.99923928 0.49321424;
+	-6.27303951 -0.00047164 0.00028896 7.27256787 0.99855920 0.99923940 0.49321434;
+	-6.27303968 -0.00047157 0.00028892 7.27256811 0.99855942 0.99923951 0.49321431;
+	-6.27303985 -0.00047150 0.00028887 7.27256835 0.99855964 0.99923963 0.49321429;
+	-6.27304002 -0.00047142 0.00028883 7.27256860 0.99855986 0.99923975 0.49321428;
+	-6.27304019 -0.00047135 0.00028879 7.27256884 0.99856008 0.99923986 0.49321434;
+	-6.27304037 -0.00047128 0.00028874 7.27256909 0.99856030 0.99923998 0.49321435;
+	-6.27304054 -0.00047121 0.00028870 7.27256933 0.99856052 0.99924009 0.49321437;
+	-6.27304071 -0.00047114 0.00028865 7.27256957 0.99856073 0.99924021 0.49321446;
+	-6.27304088 -0.00047106 0.00028861 7.27256982 0.99856095 0.99924032 0.49321442;
+	-6.27304105 -0.00047099 0.00028857 7.27257006 0.99856117 0.99924044 0.49321442;
+	-6.27304122 -0.00047092 0.00028852 7.27257030 0.99856139 0.99924056 0.49321451;
+	-6.27304139 -0.00047085 0.00028848 7.27257054 0.99856161 0.99924067 0.49321455;
+	-6.27304157 -0.00047078 0.00028843 7.27257079 0.99856183 0.99924079 0.49321455;
+	-6.27304174 -0.00047071 0.00028839 7.27257103 0.99856205 0.99924090 0.49321459;
+	-6.27304191 -0.00047064 0.00028835 7.27257127 0.99856227 0.99924102 0.49321464;
+	-6.27304208 -0.00047056 0.00028830 7.27257152 0.99856249 0.99924113 0.49321460;
+	-6.27304225 -0.00047049 0.00028826 7.27257176 0.99856270 0.99924125 0.49321463;
+	-6.27304242 -0.00047042 0.00028822 7.27257200 0.99856292 0.99924136 0.49321476;
+	-6.27304259 -0.00047035 0.00028817 7.27257224 0.99856314 0.99924148 0.49321475;
+	-6.27304276 -0.00047028 0.00028813 7.27257249 0.99856336 0.99924159 0.49321471;
+	-6.27304294 -0.00047021 0.00028808 7.27257273 0.99856358 0.99924171 0.49321475;
+	-6.27304311 -0.00047013 0.00028804 7.27257297 0.99856380 0.99924183 0.49321476;
+	-6.27304328 -0.00047006 0.00028800 7.27257321 0.99856401 0.99924194 0.49321484;
+	-6.27304345 -0.00046999 0.00028795 7.27257346 0.99856423 0.99924206 0.49321477;
+	-6.27304362 -0.00046992 0.00028791 7.27257370 0.99856445 0.99924217 0.49321483;
+	-6.27304379 -0.00046985 0.00028787 7.27257394 0.99856467 0.99924229 0.49321495;
+	-6.27304396 -0.00046978 0.00028782 7.27257418 0.99856489 0.99924240 0.49321491;
+	-6.27304413 -0.00046971 0.00028778 7.27257442 0.99856510 0.99924252 0.49321493;
+	-6.27304430 -0.00046964 0.00028773 7.27257467 0.99856532 0.99924263 0.49321498;
+	-6.27304447 -0.00046956 0.00028769 7.27257491 0.99856554 0.99924275 0.49321496;
+	-6.27304464 -0.00046949 0.00028765 7.27257515 0.99856576 0.99924286 0.49321502;
+	-6.27304481 -0.00046942 0.00028760 7.27257539 0.99856597 0.99924298 0.49321503;
+	-6.27304498 -0.00046935 0.00028756 7.27257563 0.99856619 0.99924309 0.49321507;
+	-6.27304515 -0.00046928 0.00028752 7.27257587 0.99856641 0.99924320 0.49321515;
+	-6.27304532 -0.00046921 0.00028747 7.27257611 0.99856663 0.99924332 0.49321508;
+	-6.27304549 -0.00046914 0.00028743 7.27257636 0.99856684 0.99924343 0.49321514;
+	-6.27304566 -0.00046907 0.00028738 7.27257660 0.99856706 0.99924355 0.49321526;
+	-6.27304583 -0.00046900 0.00028734 7.27257684 0.99856728 0.99924366 0.49321521;
+	-6.27304600 -0.00046892 0.00028730 7.27257708 0.99856750 0.99924378 0.49321521;
+	-6.27304617 -0.00046885 0.00028725 7.27257732 0.99856771 0.99924389 0.49321523;
+	-6.27304634 -0.00046878 0.00028721 7.27257756 0.99856793 0.99924401 0.49321526;
+	-6.27304651 -0.00046871 0.00028717 7.27257780 0.99856815 0.99924412 0.49321530;
+	-6.27304668 -0.00046864 0.00028712 7.27257804 0.99856836 0.99924424 0.49321535;
+	-6.27304685 -0.00046857 0.00028708 7.27257828 0.99856858 0.99924435 0.49321541;
+	-6.27304702 -0.00046850 0.00028704 7.27257852 0.99856880 0.99924446 0.49321529;
+	-6.27304719 -0.00046843 0.00028699 7.27257876 0.99856901 0.99924458 0.49321541;
+	-6.27304736 -0.00046836 0.00028695 7.27257901 0.99856923 0.99924469 0.49321535;
+	-6.27304753 -0.00046829 0.00028691 7.27257925 0.99856945 0.99924481 0.49321543;
+	-6.27304770 -0.00046821 0.00028686 7.27257949 0.99856966 0.99924492 0.49321548;
+	-6.27304787 -0.00046814 0.00028682 7.27257973 0.99856988 0.99924504 0.49321551;
+	-6.27304804 -0.00046807 0.00028678 7.27257997 0.99857010 0.99924515 0.49321545;
+	-6.27304821 -0.00046800 0.00028673 7.27258021 0.99857031 0.99924526 0.49321554;
+	-6.27304838 -0.00046793 0.00028669 7.27258045 0.99857053 0.99924538 0.49321557;
+	-6.27304855 -0.00046786 0.00028665 7.27258069 0.99857074 0.99924549 0.49321561;
+	-6.27304872 -0.00046779 0.00028660 7.27258093 0.99857096 0.99924561 0.49321567;
+	-6.27304889 -0.00046772 0.00028656 7.27258117 0.99857118 0.99924572 0.49321567;
+	-6.27304906 -0.00046765 0.00028652 7.27258141 0.99857139 0.99924583 0.49321571;
+	-6.27304922 -0.00046758 0.00028647 7.27258165 0.99857161 0.99924595 0.49321566;
+	-6.27304939 -0.00046751 0.00028643 7.27258189 0.99857182 0.99924606 0.49321576;
+	-6.27304956 -0.00046744 0.00028639 7.27258213 0.99857204 0.99924618 0.49321567;
+	-6.27304973 -0.00046737 0.00028634 7.27258236 0.99857226 0.99924629 0.49321585;
+	-6.27304990 -0.00046730 0.00028630 7.27258260 0.99857247 0.99924640 0.49321576;
+	-6.27305007 -0.00046723 0.00028626 7.27258284 0.99857269 0.99924652 0.49321581;
+	-6.27305024 -0.00046715 0.00028621 7.27258308 0.99857290 0.99924663 0.49321580;
+	-6.27305041 -0.00046708 0.00028617 7.27258332 0.99857312 0.99924675 0.49321590;
+	-6.27305057 -0.00046701 0.00028613 7.27258356 0.99857333 0.99924686 0.49321582;
+	-6.27305074 -0.00046694 0.00028608 7.27258380 0.99857355 0.99924697 0.49321587;
+	-6.27305091 -0.00046687 0.00028604 7.27258404 0.99857376 0.99924709 0.49321595;
+	-6.27305108 -0.00046680 0.00028600 7.27258428 0.99857398 0.99924720 0.49321595;
+	-6.27305125 -0.00046673 0.00028595 7.27258452 0.99857419 0.99924731 0.49321600;
+	-6.27305142 -0.00046666 0.00028591 7.27258476 0.99857441 0.99924743 0.49321598;
+	-6.27305159 -0.00046659 0.00028587 7.27258499 0.99857462 0.99924754 0.49321613;
+	-6.27305175 -0.00046652 0.00028582 7.27258523 0.99857484 0.99924765 0.49321611;
+	-6.27305192 -0.00046645 0.00028578 7.27258547 0.99857505 0.99924777 0.49321600;
+	-6.27305209 -0.00046638 0.00028574 7.27258571 0.99857527 0.99924788 0.49321621;
+	-6.27305226 -0.00046631 0.00028570 7.27258595 0.99857548 0.99924799 0.49321615;
+	-6.27305243 -0.00046624 0.00028565 7.27258619 0.99857570 0.99924811 0.49321620;
+	-6.27305259 -0.00046617 0.00028561 7.27258642 0.99857591 0.99924822 0.49321625;
+	-6.27305276 -0.00046610 0.00028557 7.27258666 0.99857613 0.99924833 0.49321621;
+	-6.27305293 -0.00046603 0.00028552 7.27258690 0.99857634 0.99924845 0.49321630;
+	-6.27305310 -0.00046596 0.00028548 7.27258714 0.99857656 0.99924856 0.49321623;
+	-6.27305327 -0.00046589 0.00028544 7.27258738 0.99857677 0.99924867 0.49321633;
+	-6.27305343 -0.00046582 0.00028539 7.27258761 0.99857698 0.99924879 0.49321637;
+	-6.27305360 -0.00046575 0.00028535 7.27258785 0.99857720 0.99924890 0.49321640;
+	-6.27305377 -0.00046568 0.00028531 7.27258809 0.99857741 0.99924901 0.49321641;
+	-6.27305394 -0.00046561 0.00028527 7.27258833 0.99857763 0.99924913 0.49321644;
+	-6.27305410 -0.00046554 0.00028522 7.27258857 0.99857784 0.99924924 0.49321640;
+	-6.27305427 -0.00046547 0.00028518 7.27258880 0.99857805 0.99924935 0.49321644;
+	-6.27305444 -0.00046540 0.00028514 7.27258904 0.99857827 0.99924946 0.49321647;
+	-6.27305461 -0.00046533 0.00028509 7.27258928 0.99857848 0.99924958 0.49321655;
+	-6.27305477 -0.00046526 0.00028505 7.27258952 0.99857870 0.99924969 0.49321652;
+	-6.27305494 -0.00046519 0.00028501 7.27258975 0.99857891 0.99924980 0.49321651;
+	-6.27305511 -0.00046512 0.00028497 7.27258999 0.99857912 0.99924992 0.49321656;
+	-6.27305528 -0.00046505 0.00028492 7.27259023 0.99857934 0.99925003 0.49321656;
+	-6.27305544 -0.00046498 0.00028488 7.27259046 0.99857955 0.99925014 0.49321665;
+	-6.27305561 -0.00046491 0.00028484 7.27259070 0.99857976 0.99925025 0.49321668;
+	-6.27305578 -0.00046484 0.00028479 7.27259094 0.99857998 0.99925037 0.49321665;
+	-6.27305594 -0.00046477 0.00028475 7.27259117 0.99858019 0.99925048 0.49321672;
+	-6.27305611 -0.00046470 0.00028471 7.27259141 0.99858040 0.99925059 0.49321675;
+	-6.27305628 -0.00046463 0.00028467 7.27259165 0.99858062 0.99925070 0.49321677;
+	-6.27305645 -0.00046456 0.00028462 7.27259188 0.99858083 0.99925082 0.49321675;
+	-6.27305661 -0.00046449 0.00028458 7.27259212 0.99858104 0.99925093 0.49321677;
+	-6.27305678 -0.00046442 0.00028454 7.27259236 0.99858126 0.99925104 0.49321687;
+	-6.27305695 -0.00046435 0.00028449 7.27259259 0.99858147 0.99925115 0.49321692;
+	-6.27305711 -0.00046428 0.00028445 7.27259283 0.99858168 0.99925127 0.49321690;
+	-6.27305728 -0.00046421 0.00028441 7.27259307 0.99858189 0.99925138 0.49321690;
+	-6.27305745 -0.00046414 0.00028437 7.27259330 0.99858211 0.99925149 0.49321703;
+	-6.27305761 -0.00046407 0.00028432 7.27259354 0.99858232 0.99925160 0.49321695;
+	-6.27305778 -0.00046400 0.00028428 7.27259377 0.99858253 0.99925171 0.49321702;
+	-6.27305795 -0.00046393 0.00028424 7.27259401 0.99858275 0.99925183 0.49321702;
+	-6.27305811 -0.00046386 0.00028420 7.27259425 0.99858296 0.99925194 0.49321707;
+	-6.27305828 -0.00046380 0.00028415 7.27259448 0.99858317 0.99925205 0.49321711;
+	-6.27305844 -0.00046373 0.00028411 7.27259472 0.99858338 0.99925216 0.49321702;
+	-6.27305861 -0.00046366 0.00028407 7.27259495 0.99858359 0.99925227 0.49321714;
+	-6.27305878 -0.00046359 0.00028403 7.27259519 0.99858381 0.99925239 0.49321714;
+	-6.27305894 -0.00046352 0.00028398 7.27259543 0.99858402 0.99925250 0.49321712;
+	-6.27305911 -0.00046345 0.00028394 7.27259566 0.99858423 0.99925261 0.49321724;
+	-6.27305927 -0.00046338 0.00028390 7.27259590 0.99858444 0.99925272 0.49321723;
+	-6.27305944 -0.00046331 0.00028386 7.27259613 0.99858465 0.99925283 0.49321718;
+	-6.27305961 -0.00046324 0.00028381 7.27259637 0.99858487 0.99925295 0.49321725;
+	-6.27305977 -0.00046317 0.00028377 7.27259660 0.99858508 0.99925306 0.49321729;
+	-6.27305994 -0.00046310 0.00028373 7.27259684 0.99858529 0.99925317 0.49321728;
+	-6.27306010 -0.00046303 0.00028369 7.27259707 0.99858550 0.99925328 0.49321728;
+	-6.27306027 -0.00046296 0.00028364 7.27259731 0.99858571 0.99925339 0.49321738;
+	-6.27306044 -0.00046289 0.00028360 7.27259754 0.99858593 0.99925351 0.49321730;
+	-6.27306060 -0.00046282 0.00028356 7.27259778 0.99858614 0.99925362 0.49321736;
+	-6.27306077 -0.00046276 0.00028352 7.27259801 0.99858635 0.99925373 0.49321743;
+	-6.27306093 -0.00046269 0.00028347 7.27259825 0.99858656 0.99925384 0.49321740;
+	-6.27306110 -0.00046262 0.00028343 7.27259848 0.99858677 0.99925395 0.49321757;
+	-6.27306126 -0.00046255 0.00028339 7.27259872 0.99858698 0.99925406 0.49321754;
+	-6.27306143 -0.00046248 0.00028335 7.27259895 0.99858719 0.99925417 0.49321760;
+	-6.27306159 -0.00046241 0.00028330 7.27259918 0.99858740 0.99925429 0.49321757;
+	-6.27306176 -0.00046234 0.00028326 7.27259942 0.99858762 0.99925440 0.49321761;
+	-6.27306192 -0.00046227 0.00028322 7.27259965 0.99858783 0.99925451 0.49321757;
+	-6.27306209 -0.00046220 0.00028318 7.27259989 0.99858804 0.99925462 0.49321764;
+	-6.27306225 -0.00046213 0.00028314 7.27260012 0.99858825 0.99925473 0.49321769;
+	-6.27306242 -0.00046206 0.00028309 7.27260036 0.99858846 0.99925484 0.49321767;
+	-6.27306259 -0.00046200 0.00028305 7.27260059 0.99858867 0.99925495 0.49321773;
+	-6.27306275 -0.00046193 0.00028301 7.27260082 0.99858888 0.99925506 0.49321772;
+	-6.27306292 -0.00046186 0.00028297 7.27260106 0.99858909 0.99925518 0.49321771;
+	-6.27306308 -0.00046179 0.00028292 7.27260129 0.99858930 0.99925529 0.49321779;
+	-6.27306324 -0.00046172 0.00028288 7.27260152 0.99858951 0.99925540 0.49321779;
+	-6.27306341 -0.00046165 0.00028284 7.27260176 0.99858972 0.99925551 0.49321780;
+	-6.27306357 -0.00046158 0.00028280 7.27260199 0.99858993 0.99925562 0.49321791;
+	-6.27306374 -0.00046151 0.00028275 7.27260223 0.99859014 0.99925573 0.49321791;
+	-6.27306390 -0.00046144 0.00028271 7.27260246 0.99859035 0.99925584 0.49321788;
+	-6.27306407 -0.00046138 0.00028267 7.27260269 0.99859056 0.99925595 0.49321791;
+	-6.27306423 -0.00046131 0.00028263 7.27260293 0.99859077 0.99925606 0.49321799;
+	-6.27306440 -0.00046124 0.00028259 7.27260316 0.99859098 0.99925618 0.49321795;
+	-6.27306456 -0.00046117 0.00028254 7.27260339 0.99859119 0.99925629 0.49321797;
+	-6.27306473 -0.00046110 0.00028250 7.27260363 0.99859140 0.99925640 0.49321800;
+	-6.27306489 -0.00046103 0.00028246 7.27260386 0.99859161 0.99925651 0.49321804;
+	-6.27306505 -0.00046096 0.00028242 7.27260409 0.99859182 0.99925662 0.49321800;
+	-6.27306522 -0.00046090 0.00028238 7.27260432 0.99859203 0.99925673 0.49321804;
+	-6.27306538 -0.00046083 0.00028233 7.27260456 0.99859224 0.99925684 0.49321806;
+	-6.27306555 -0.00046076 0.00028229 7.27260479 0.99859245 0.99925695 0.49321814;
+	-6.27306571 -0.00046069 0.00028225 7.27260502 0.99859266 0.99925706 0.49321818;
+	-6.27306588 -0.00046062 0.00028221 7.27260525 0.99859287 0.99925717 0.49321811;
+	-6.27306604 -0.00046055 0.00028217 7.27260549 0.99859308 0.99925728 0.49321821;
+	-6.27306620 -0.00046048 0.00028212 7.27260572 0.99859329 0.99925739 0.49321828;
+	-6.27306637 -0.00046042 0.00028208 7.27260595 0.99859350 0.99925750 0.49321829;
+	-6.27306653 -0.00046035 0.00028204 7.27260618 0.99859371 0.99925761 0.49321826;
+	-6.27306670 -0.00046028 0.00028200 7.27260642 0.99859392 0.99925772 0.49321833;
+	-6.27306686 -0.00046021 0.00028196 7.27260665 0.99859413 0.99925783 0.49321833;
+	-6.27306702 -0.00046014 0.00028191 7.27260688 0.99859434 0.99925794 0.49321830;
+	-6.27306719 -0.00046007 0.00028187 7.27260711 0.99859455 0.99925805 0.49321842;
+	-6.27306735 -0.00046000 0.00028183 7.27260735 0.99859475 0.99925817 0.49321838;
+	-6.27306751 -0.00045994 0.00028179 7.27260758 0.99859496 0.99925828 0.49321849;
+	-6.27306768 -0.00045987 0.00028175 7.27260781 0.99859517 0.99925839 0.49321848;
+	-6.27306784 -0.00045980 0.00028170 7.27260804 0.99859538 0.99925850 0.49321848;
+	-6.27306800 -0.00045973 0.00028166 7.27260827 0.99859559 0.99925861 0.49321852;
+	-6.27306817 -0.00045966 0.00028162 7.27260850 0.99859580 0.99925872 0.49321855;
+	-6.27306833 -0.00045959 0.00028158 7.27260874 0.99859601 0.99925883 0.49321849;
+	-6.27306849 -0.00045953 0.00028154 7.27260897 0.99859622 0.99925894 0.49321861;
+	-6.27306866 -0.00045946 0.00028150 7.27260920 0.99859642 0.99925905 0.49321858;
+	-6.27306882 -0.00045939 0.00028145 7.27260943 0.99859663 0.99925916 0.49321869;
+	-6.27306898 -0.00045932 0.00028141 7.27260966 0.99859684 0.99925927 0.49321873;
+	-6.27306915 -0.00045925 0.00028137 7.27260989 0.99859705 0.99925938 0.49321868;
+	-6.27306931 -0.00045919 0.00028133 7.27261012 0.99859726 0.99925949 0.49321872;
+	-6.27306947 -0.00045912 0.00028129 7.27261035 0.99859746 0.99925960 0.49321879;
+	-6.27306964 -0.00045905 0.00028124 7.27261059 0.99859767 0.99925971 0.49321873;
+	-6.27306980 -0.00045898 0.00028120 7.27261082 0.99859788 0.99925982 0.49321881;
+	-6.27306996 -0.00045891 0.00028116 7.27261105 0.99859809 0.99925993 0.49321869;
+	-6.27307012 -0.00045885 0.00028112 7.27261128 0.99859830 0.99926003 0.49321889;
+	-6.27307029 -0.00045878 0.00028108 7.27261151 0.99859850 0.99926014 0.49321883;
+	-6.27307045 -0.00045871 0.00028104 7.27261174 0.99859871 0.99926025 0.49321889;
+	-6.27307061 -0.00045864 0.00028099 7.27261197 0.99859892 0.99926036 0.49321886;
+	-6.27307078 -0.00045857 0.00028095 7.27261220 0.99859913 0.99926047 0.49321894;
+	-6.27307094 -0.00045851 0.00028091 7.27261243 0.99859934 0.99926058 0.49321894;
+	-6.27307110 -0.00045844 0.00028087 7.27261266 0.99859954 0.99926069 0.49321891;
+	-6.27307126 -0.00045837 0.00028083 7.27261289 0.99859975 0.99926080 0.49321907;
+	-6.27307142 -0.00045830 0.00028079 7.27261312 0.99859996 0.99926091 0.49321892;
+	-6.27307159 -0.00045823 0.00028074 7.27261335 0.99860016 0.99926102 0.49321904;
+	-6.27307175 -0.00045817 0.00028070 7.27261358 0.99860037 0.99926113 0.49321907;
+	-6.27307191 -0.00045810 0.00028066 7.27261381 0.99860058 0.99926124 0.49321903;
+	-6.27307207 -0.00045803 0.00028062 7.27261404 0.99860079 0.99926135 0.49321912;
+	-6.27307224 -0.00045796 0.00028058 7.27261427 0.99860099 0.99926146 0.49321912;
+	-6.27307240 -0.00045790 0.00028054 7.27261450 0.99860120 0.99926157 0.49321912;
+	-6.27307256 -0.00045783 0.00028050 7.27261473 0.99860141 0.99926168 0.49321924;
+	-6.27307272 -0.00045776 0.00028045 7.27261496 0.99860161 0.99926179 0.49321924;
+	-6.27307288 -0.00045769 0.00028041 7.27261519 0.99860182 0.99926190 0.49321921;
+	-6.27307305 -0.00045762 0.00028037 7.27261542 0.99860203 0.99926200 0.49321927;
+	-6.27307321 -0.00045756 0.00028033 7.27261565 0.99860223 0.99926211 0.49321925;
+	-6.27307337 -0.00045749 0.00028029 7.27261588 0.99860244 0.99926222 0.49321926;
+	-6.27307353 -0.00045742 0.00028025 7.27261611 0.99860265 0.99926233 0.49321932;
+	-6.27307369 -0.00045735 0.00028021 7.27261634 0.99860285 0.99926244 0.49321935;
+	-6.27307386 -0.00045729 0.00028016 7.27261657 0.99860306 0.99926255 0.49321931;
+	-6.27307402 -0.00045722 0.00028012 7.27261680 0.99860327 0.99926266 0.49321940;
+	-6.27307418 -0.00045715 0.00028008 7.27261703 0.99860347 0.99926277 0.49321940;
+	-6.27307434 -0.00045708 0.00028004 7.27261726 0.99860368 0.99926288 0.49321938;
+	-6.27307450 -0.00045702 0.00028000 7.27261749 0.99860389 0.99926299 0.49321955;
+	-6.27307466 -0.00045695 0.00027996 7.27261771 0.99860409 0.99926309 0.49321946;
+	-6.27307482 -0.00045688 0.00027992 7.27261794 0.99860430 0.99926320 0.49321952;
+	-6.27307499 -0.00045681 0.00027987 7.27261817 0.99860450 0.99926331 0.49321956;
+	-6.27307515 -0.00045675 0.00027983 7.27261840 0.99860471 0.99926342 0.49321950;
+	-6.27307531 -0.00045668 0.00027979 7.27261863 0.99860492 0.99926353 0.49321959;
+	-6.27307547 -0.00045661 0.00027975 7.27261886 0.99860512 0.99926364 0.49321954;
+	-6.27307563 -0.00045654 0.00027971 7.27261909 0.99860533 0.99926375 0.49321964;
+	-6.27307579 -0.00045648 0.00027967 7.27261931 0.99860553 0.99926385 0.49321960;
+	-6.27307595 -0.00045641 0.00027963 7.27261954 0.99860574 0.99926396 0.49321972;
+	-6.27307611 -0.00045634 0.00027959 7.27261977 0.99860595 0.99926407 0.49321973;
+	-6.27307628 -0.00045628 0.00027954 7.27262000 0.99860615 0.99926418 0.49321968;
+	-6.27307644 -0.00045621 0.00027950 7.27262023 0.99860636 0.99926429 0.49321967;
+	-6.27307660 -0.00045614 0.00027946 7.27262046 0.99860656 0.99926440 0.49321972;
+	-6.27307676 -0.00045607 0.00027942 7.27262068 0.99860677 0.99926451 0.49321981;
+	-6.27307692 -0.00045601 0.00027938 7.27262091 0.99860697 0.99926461 0.49321979;
+	-6.27307708 -0.00045594 0.00027934 7.27262114 0.99860718 0.99926472 0.49321986;
+	-6.27307724 -0.00045587 0.00027930 7.27262137 0.99860738 0.99926483 0.49321988;
+	-6.27307740 -0.00045581 0.00027926 7.27262160 0.99860759 0.99926494 0.49321990;
+	-6.27307756 -0.00045574 0.00027921 7.27262182 0.99860779 0.99926505 0.49321998;
+	-6.27307772 -0.00045567 0.00027917 7.27262205 0.99860800 0.99926516 0.49322003;
+	-6.27307788 -0.00045560 0.00027913 7.27262228 0.99860820 0.99926526 0.49321994;
+	-6.27307804 -0.00045554 0.00027909 7.27262251 0.99860841 0.99926537 0.49322002;
+	-6.27307820 -0.00045547 0.00027905 7.27262273 0.99860861 0.99926548 0.49321999;
+	-6.27307836 -0.00045540 0.00027901 7.27262296 0.99860882 0.99926559 0.49322005;
+	-6.27307852 -0.00045534 0.00027897 7.27262319 0.99860902 0.99926570 0.49322007;
+	-6.27307868 -0.00045527 0.00027893 7.27262342 0.99860923 0.99926580 0.49322002;
+	-6.27307884 -0.00045520 0.00027889 7.27262364 0.99860943 0.99926591 0.49322013;
+	-6.27307900 -0.00045514 0.00027884 7.27262387 0.99860964 0.99926602 0.49322009;
+	-6.27307916 -0.00045507 0.00027880 7.27262410 0.99860984 0.99926613 0.49322010;
+	-6.27307932 -0.00045500 0.00027876 7.27262432 0.99861004 0.99926624 0.49322020;
+	-6.27307949 -0.00045493 0.00027872 7.27262455 0.99861025 0.99926634 0.49322020;
+	-6.27307964 -0.00045487 0.00027868 7.27262478 0.99861045 0.99926645 0.49322021;
+	-6.27307980 -0.00045480 0.00027864 7.27262500 0.99861066 0.99926656 0.49322031;
+	-6.27307996 -0.00045473 0.00027860 7.27262523 0.99861086 0.99926667 0.49322031;
+	-6.27308012 -0.00045467 0.00027856 7.27262546 0.99861107 0.99926677 0.49322033;
+	-6.27308028 -0.00045460 0.00027852 7.27262568 0.99861127 0.99926688 0.49322029;
+	-6.27308044 -0.00045453 0.00027848 7.27262591 0.99861147 0.99926699 0.49322034;
+	-6.27308060 -0.00045447 0.00027844 7.27262614 0.99861168 0.99926710 0.49322033;
+	-6.27308076 -0.00045440 0.00027839 7.27262636 0.99861188 0.99926721 0.49322036;
+	-6.27308092 -0.00045433 0.00027835 7.27262659 0.99861209 0.99926731 0.49322047;
+	-6.27308108 -0.00045427 0.00027831 7.27262682 0.99861229 0.99926742 0.49322045;
+	-6.27308124 -0.00045420 0.00027827 7.27262704 0.99861249 0.99926753 0.49322049;
+	-6.27308140 -0.00045413 0.00027823 7.27262727 0.99861270 0.99926764 0.49322055;
+	-6.27308156 -0.00045407 0.00027819 7.27262749 0.99861290 0.99926774 0.49322054;
+	-6.27308172 -0.00045400 0.00027815 7.27262772 0.99861310 0.99926785 0.49322056;
+	-6.27308188 -0.00045393 0.00027811 7.27262795 0.99861331 0.99926796 0.49322059;
+	-6.27308204 -0.00045387 0.00027807 7.27262817 0.99861351 0.99926807 0.49322050;
+	-6.27308220 -0.00045380 0.00027803 7.27262840 0.99861371 0.99926817 0.49322063;
+	-6.27308236 -0.00045373 0.00027799 7.27262862 0.99861392 0.99926828 0.49322066;
+	-6.27308252 -0.00045367 0.00027795 7.27262885 0.99861412 0.99926839 0.49322063;
+	-6.27308268 -0.00045360 0.00027790 7.27262907 0.99861432 0.99926849 0.49322070;
+	-6.27308284 -0.00045353 0.00027786 7.27262930 0.99861453 0.99926860 0.49322066;
+	-6.27308299 -0.00045347 0.00027782 7.27262953 0.99861473 0.99926871 0.49322073;
+	-6.27308315 -0.00045340 0.00027778 7.27262975 0.99861493 0.99926882 0.49322074;
+	-6.27308331 -0.00045334 0.00027774 7.27262998 0.99861514 0.99926892 0.49322073;
+	-6.27308347 -0.00045327 0.00027770 7.27263020 0.99861534 0.99926903 0.49322080;
+	-6.27308363 -0.00045320 0.00027766 7.27263043 0.99861554 0.99926914 0.49322087;
+	-6.27308379 -0.00045314 0.00027762 7.27263065 0.99861574 0.99926924 0.49322079;
+	-6.27308395 -0.00045307 0.00027758 7.27263088 0.99861595 0.99926935 0.49322088;
+	-6.27308411 -0.00045300 0.00027754 7.27263110 0.99861615 0.99926946 0.49322089;
+	-6.27308426 -0.00045294 0.00027750 7.27263133 0.99861635 0.99926956 0.49322091;
+	-6.27308442 -0.00045287 0.00027746 7.27263155 0.99861655 0.99926967 0.49322099;
+	-6.27308458 -0.00045281 0.00027742 7.27263178 0.99861676 0.99926978 0.49322093;
+	-6.27308474 -0.00045274 0.00027738 7.27263200 0.99861696 0.99926989 0.49322094;
+	-6.27308490 -0.00045267 0.00027734 7.27263223 0.99861716 0.99926999 0.49322104;
+	-6.27308506 -0.00045261 0.00027729 7.27263245 0.99861736 0.99927010 0.49322101;
+	-6.27308522 -0.00045254 0.00027725 7.27263268 0.99861757 0.99927021 0.49322100;
+	-6.27308537 -0.00045247 0.00027721 7.27263290 0.99861777 0.99927031 0.49322109;
+	-6.27308553 -0.00045241 0.00027717 7.27263312 0.99861797 0.99927042 0.49322112;
+	-6.27308569 -0.00045234 0.00027713 7.27263335 0.99861817 0.99927053 0.49322118;
+	-6.27308585 -0.00045228 0.00027709 7.27263357 0.99861837 0.99927063 0.49322108;
+	-6.27308601 -0.00045221 0.00027705 7.27263380 0.99861858 0.99927074 0.49322119;
+	-6.27308616 -0.00045214 0.00027701 7.27263402 0.99861878 0.99927085 0.49322124;
+	-6.27308632 -0.00045208 0.00027697 7.27263424 0.99861898 0.99927095 0.49322120;
+	-6.27308648 -0.00045201 0.00027693 7.27263447 0.99861918 0.99927106 0.49322125;
+	-6.27308664 -0.00045195 0.00027689 7.27263469 0.99861938 0.99927116 0.49322131;
+	-6.27308680 -0.00045188 0.00027685 7.27263492 0.99861959 0.99927127 0.49322139;
+	-6.27308695 -0.00045181 0.00027681 7.27263514 0.99861979 0.99927138 0.49322128;
+	-6.27308711 -0.00045175 0.00027677 7.27263536 0.99861999 0.99927148 0.49322133;
+	-6.27308727 -0.00045168 0.00027673 7.27263559 0.99862019 0.99927159 0.49322134;
+	-6.27308743 -0.00045162 0.00027669 7.27263581 0.99862039 0.99927170 0.49322141;
+	-6.27308759 -0.00045155 0.00027665 7.27263604 0.99862059 0.99927180 0.49322137;
+	-6.27308774 -0.00045148 0.00027661 7.27263626 0.99862079 0.99927191 0.49322148;
+	-6.27308790 -0.00045142 0.00027657 7.27263648 0.99862099 0.99927202 0.49322145;
+	-6.27308806 -0.00045135 0.00027653 7.27263671 0.99862120 0.99927212 0.49322138;
+	-6.27308822 -0.00045129 0.00027649 7.27263693 0.99862140 0.99927223 0.49322155;
+	-6.27308837 -0.00045122 0.00027645 7.27263715 0.99862160 0.99927233 0.49322147;
+	-6.27308853 -0.00045116 0.00027641 7.27263737 0.99862180 0.99927244 0.49322164;
+	-6.27308869 -0.00045109 0.00027636 7.27263760 0.99862200 0.99927255 0.49322155;
+	-6.27308884 -0.00045102 0.00027632 7.27263782 0.99862220 0.99927265 0.49322156;
+	-6.27308900 -0.00045096 0.00027628 7.27263804 0.99862240 0.99927276 0.49322154;
+	-6.27308916 -0.00045089 0.00027624 7.27263827 0.99862260 0.99927286 0.49322167;
+	-6.27308932 -0.00045083 0.00027620 7.27263849 0.99862280 0.99927297 0.49322165;
+	-6.27308947 -0.00045076 0.00027616 7.27263871 0.99862300 0.99927308 0.49322177;
+	-6.27308963 -0.00045070 0.00027612 7.27263894 0.99862320 0.99927318 0.49322172;
+	-6.27308979 -0.00045063 0.00027608 7.27263916 0.99862340 0.99927329 0.49322177;
+	-6.27308994 -0.00045056 0.00027604 7.27263938 0.99862360 0.99927339 0.49322171;
+	-6.27309010 -0.00045050 0.00027600 7.27263960 0.99862381 0.99927350 0.49322172;
+	-6.27309026 -0.00045043 0.00027596 7.27263983 0.99862401 0.99927360 0.49322182;
+	-6.27309042 -0.00045037 0.00027592 7.27264005 0.99862421 0.99927371 0.49322183;
+	-6.27309057 -0.00045030 0.00027588 7.27264027 0.99862441 0.99927382 0.49322187;
+	-6.27309073 -0.00045024 0.00027584 7.27264049 0.99862461 0.99927392 0.49322184;
+	-6.27309089 -0.00045017 0.00027580 7.27264071 0.99862481 0.99927403 0.49322189;
+	-6.27309104 -0.00045011 0.00027576 7.27264094 0.99862501 0.99927413 0.49322190;
+	-6.27309120 -0.00045004 0.00027572 7.27264116 0.99862521 0.99927424 0.49322188;
+	-6.27309136 -0.00044997 0.00027568 7.27264138 0.99862541 0.99927434 0.49322197;
+	-6.27309151 -0.00044991 0.00027564 7.27264160 0.99862561 0.99927445 0.49322195;
+	-6.27309167 -0.00044984 0.00027560 7.27264182 0.99862581 0.99927455 0.49322198;
+	-6.27309183 -0.00044978 0.00027556 7.27264205 0.99862601 0.99927466 0.49322195;
+	-6.27309198 -0.00044971 0.00027552 7.27264227 0.99862621 0.99927477 0.49322211;
+	-6.27309214 -0.00044965 0.00027548 7.27264249 0.99862641 0.99927487 0.49322215;
+	-6.27309229 -0.00044958 0.00027544 7.27264271 0.99862660 0.99927498 0.49322209;
+	-6.27309245 -0.00044952 0.00027540 7.27264293 0.99862680 0.99927508 0.49322211;
+	-6.27309261 -0.00044945 0.00027536 7.27264315 0.99862700 0.99927519 0.49322213;
+	-6.27309276 -0.00044939 0.00027532 7.27264338 0.99862720 0.99927529 0.49322220;
+	-6.27309292 -0.00044932 0.00027528 7.27264360 0.99862740 0.99927540 0.49322206;
+	-6.27309307 -0.00044926 0.00027524 7.27264382 0.99862760 0.99927550 0.49322222;
+	-6.27309323 -0.00044919 0.00027520 7.27264404 0.99862780 0.99927561 0.49322230;
+	-6.27309339 -0.00044913 0.00027516 7.27264426 0.99862800 0.99927571 0.49322233;
+	-6.27309354 -0.00044906 0.00027512 7.27264448 0.99862820 0.99927582 0.49322226;
+	-6.27309370 -0.00044900 0.00027508 7.27264470 0.99862840 0.99927592 0.49322237;
+	-6.27309385 -0.00044893 0.00027504 7.27264492 0.99862860 0.99927603 0.49322238;
+	-6.27309401 -0.00044887 0.00027500 7.27264514 0.99862880 0.99927613 0.49322229;
+	-6.27309417 -0.00044880 0.00027496 7.27264537 0.99862899 0.99927624 0.49322245;
+	-6.27309432 -0.00044874 0.00027492 7.27264559 0.99862919 0.99927634 0.49322245;
+	-6.27309448 -0.00044867 0.00027488 7.27264581 0.99862939 0.99927645 0.49322246;
+	-6.27309463 -0.00044861 0.00027484 7.27264603 0.99862959 0.99927655 0.49322247;
+	-6.27309479 -0.00044854 0.00027480 7.27264625 0.99862979 0.99927666 0.49322254;
+	-6.27309494 -0.00044848 0.00027476 7.27264647 0.99862999 0.99927676 0.49322253;
+	-6.27309510 -0.00044841 0.00027472 7.27264669 0.99863019 0.99927687 0.49322258;
+	-6.27309526 -0.00044835 0.00027468 7.27264691 0.99863039 0.99927697 0.49322250;
+	-6.27309541 -0.00044828 0.00027464 7.27264713 0.99863058 0.99927708 0.49322253;
+	-6.27309557 -0.00044822 0.00027460 7.27264735 0.99863078 0.99927718 0.49322260;
+	-6.27309572 -0.00044815 0.00027456 7.27264757 0.99863098 0.99927729 0.49322265;
+	-6.27309588 -0.00044809 0.00027452 7.27264779 0.99863118 0.99927739 0.49322261;
+	-6.27309603 -0.00044802 0.00027448 7.27264801 0.99863138 0.99927750 0.49322265;
+	-6.27309619 -0.00044796 0.00027444 7.27264823 0.99863158 0.99927760 0.49322274;
+	-6.27309634 -0.00044789 0.00027440 7.27264845 0.99863177 0.99927770 0.49322271;
+	-6.27309650 -0.00044783 0.00027436 7.27264867 0.99863197 0.99927781 0.49322271;
+	-6.27309665 -0.00044776 0.00027432 7.27264889 0.99863217 0.99927791 0.49322277;
+	-6.27309681 -0.00044770 0.00027429 7.27264911 0.99863237 0.99927802 0.49322282;
+	-6.27309696 -0.00044763 0.00027425 7.27264933 0.99863256 0.99927812 0.49322277;
+	-6.27309712 -0.00044757 0.00027421 7.27264955 0.99863276 0.99927823 0.49322279;
+	-6.27309727 -0.00044750 0.00027417 7.27264977 0.99863296 0.99927833 0.49322290;
+	-6.27309743 -0.00044744 0.00027413 7.27264999 0.99863316 0.99927844 0.49322286;
+	-6.27309758 -0.00044737 0.00027409 7.27265021 0.99863336 0.99927854 0.49322289;
+	-6.27309774 -0.00044731 0.00027405 7.27265043 0.99863355 0.99927864 0.49322292;
+	-6.27309789 -0.00044724 0.00027401 7.27265065 0.99863375 0.99927875 0.49322303;
+	-6.27309805 -0.00044718 0.00027397 7.27265087 0.99863395 0.99927885 0.49322297;
+	-6.27309820 -0.00044712 0.00027393 7.27265108 0.99863415 0.99927896 0.49322299;
+	-6.27309835 -0.00044705 0.00027389 7.27265130 0.99863434 0.99927906 0.49322300;
+	-6.27309851 -0.00044699 0.00027385 7.27265152 0.99863454 0.99927916 0.49322302;
+	-6.27309866 -0.00044692 0.00027381 7.27265174 0.99863474 0.99927927 0.49322302;
+	-6.27309882 -0.00044686 0.00027377 7.27265196 0.99863493 0.99927937 0.49322309;
+	-6.27309897 -0.00044679 0.00027373 7.27265218 0.99863513 0.99927948 0.49322304;
+	-6.27309913 -0.00044673 0.00027369 7.27265240 0.99863533 0.99927958 0.49322317;
+	-6.27309928 -0.00044666 0.00027365 7.27265262 0.99863553 0.99927968 0.49322317;
+	-6.27309944 -0.00044660 0.00027361 7.27265284 0.99863572 0.99927979 0.49322320;
+	-6.27309959 -0.00044653 0.00027357 7.27265305 0.99863592 0.99927989 0.49322325;
+	-6.27309974 -0.00044647 0.00027353 7.27265327 0.99863612 0.99928000 0.49322322;
+	-6.27309990 -0.00044641 0.00027349 7.27265349 0.99863631 0.99928010 0.49322331;
+	-6.27310005 -0.00044634 0.00027345 7.27265371 0.99863651 0.99928020 0.49322327;
+	-6.27310021 -0.00044628 0.00027341 7.27265393 0.99863671 0.99928031 0.49322319;
+	-6.27310036 -0.00044621 0.00027338 7.27265415 0.99863690 0.99928041 0.49322336;
+	-6.27310051 -0.00044615 0.00027334 7.27265436 0.99863710 0.99928052 0.49322341;
+	-6.27310067 -0.00044608 0.00027330 7.27265458 0.99863730 0.99928062 0.49322335;
+	-6.27310082 -0.00044602 0.00027326 7.27265480 0.99863749 0.99928072 0.49322336;
+	-6.27310097 -0.00044596 0.00027322 7.27265502 0.99863769 0.99928083 0.49322343;
+	-6.27310113 -0.00044589 0.00027318 7.27265524 0.99863789 0.99928093 0.49322345;
+	-6.27310128 -0.00044583 0.00027314 7.27265546 0.99863808 0.99928103 0.49322341;
+	-6.27310144 -0.00044576 0.00027310 7.27265567 0.99863828 0.99928114 0.49322343;
+	-6.27310159 -0.00044570 0.00027306 7.27265589 0.99863847 0.99928124 0.49322353;
+	-6.27310174 -0.00044563 0.00027302 7.27265611 0.99863867 0.99928134 0.49322355;
+	-6.27310190 -0.00044557 0.00027298 7.27265633 0.99863887 0.99928145 0.49322359;
+	-6.27310205 -0.00044551 0.00027294 7.27265654 0.99863906 0.99928155 0.49322357;
+	-6.27310220 -0.00044544 0.00027290 7.27265676 0.99863926 0.99928165 0.49322365;
+	-6.27310236 -0.00044538 0.00027286 7.27265698 0.99863945 0.99928176 0.49322365;
+	-6.27310251 -0.00044531 0.00027282 7.27265720 0.99863965 0.99928186 0.49322366;
+	-6.27310266 -0.00044525 0.00027279 7.27265741 0.99863984 0.99928196 0.49322350;
+	-6.27310282 -0.00044519 0.00027275 7.27265763 0.99864004 0.99928207 0.49322363;
+	-6.27310297 -0.00044512 0.00027271 7.27265785 0.99864024 0.99928217 0.49322376;
+	-6.27310312 -0.00044506 0.00027267 7.27265807 0.99864043 0.99928227 0.49322376;
+	-6.27310328 -0.00044499 0.00027263 7.27265828 0.99864063 0.99928238 0.49322386;
+	-6.27310343 -0.00044493 0.00027259 7.27265850 0.99864082 0.99928248 0.49322387;
+	-6.27310358 -0.00044487 0.00027255 7.27265872 0.99864102 0.99928258 0.49322377;
+	-6.27310374 -0.00044480 0.00027251 7.27265893 0.99864121 0.99928269 0.49322371;
+	-6.27310389 -0.00044474 0.00027247 7.27265915 0.99864141 0.99928279 0.49322385;
+	-6.27310404 -0.00044467 0.00027243 7.27265937 0.99864160 0.99928289 0.49322391;
+	-6.27310419 -0.00044461 0.00027239 7.27265958 0.99864180 0.99928300 0.49322388;
+	-6.27310435 -0.00044455 0.00027235 7.27265980 0.99864199 0.99928310 0.49322387;
+	-6.27310450 -0.00044448 0.00027231 7.27266002 0.99864219 0.99928320 0.49322394;
+	-6.27310465 -0.00044442 0.00027228 7.27266023 0.99864238 0.99928330 0.49322403;
+	-6.27310481 -0.00044436 0.00027224 7.27266045 0.99864258 0.99928341 0.49322393;
+	-6.27310496 -0.00044429 0.00027220 7.27266067 0.99864277 0.99928351 0.49322396;
+	-6.27310511 -0.00044423 0.00027216 7.27266088 0.99864297 0.99928361 0.49322397;
+	-6.27310526 -0.00044416 0.00027212 7.27266110 0.99864316 0.99928372 0.49322408;
+	-6.27310542 -0.00044410 0.00027208 7.27266132 0.99864336 0.99928382 0.49322399;
+	-6.27310557 -0.00044404 0.00027204 7.27266153 0.99864355 0.99928392 0.49322405;
+	-6.27310572 -0.00044397 0.00027200 7.27266175 0.99864375 0.99928402 0.49322411;
+	-6.27310587 -0.00044391 0.00027196 7.27266196 0.99864394 0.99928413 0.49322415;
+	-6.27310603 -0.00044385 0.00027192 7.27266218 0.99864414 0.99928423 0.49322414;
+	-6.27310618 -0.00044378 0.00027189 7.27266240 0.99864433 0.99928433 0.49322429;
+	-6.27310633 -0.00044372 0.00027185 7.27266261 0.99864453 0.99928444 0.49322422;
+	-6.27310648 -0.00044365 0.00027181 7.27266283 0.99864472 0.99928454 0.49322422;
+	-6.27310663 -0.00044359 0.00027177 7.27266304 0.99864491 0.99928464 0.49322418;
+	-6.27310679 -0.00044353 0.00027173 7.27266326 0.99864511 0.99928474 0.49322426;
+	-6.27310694 -0.00044346 0.00027169 7.27266347 0.99864530 0.99928485 0.49322432;
+	-6.27310709 -0.00044340 0.00027165 7.27266369 0.99864550 0.99928495 0.49322429;
+	-6.27310724 -0.00044334 0.00027161 7.27266391 0.99864569 0.99928505 0.49322440;
+	-6.27310739 -0.00044327 0.00027157 7.27266412 0.99864589 0.99928515 0.49322431;
+	-6.27310755 -0.00044321 0.00027153 7.27266434 0.99864608 0.99928526 0.49322435;
+	-6.27310770 -0.00044315 0.00027150 7.27266455 0.99864627 0.99928536 0.49322446;
+	-6.27310785 -0.00044308 0.00027146 7.27266477 0.99864647 0.99928546 0.49322440;
+	-6.27310800 -0.00044302 0.00027142 7.27266498 0.99864666 0.99928556 0.49322441;
+	-6.27310815 -0.00044296 0.00027138 7.27266520 0.99864685 0.99928566 0.49322447;
+	-6.27310831 -0.00044289 0.00027134 7.27266541 0.99864705 0.99928577 0.49322449;
+	-6.27310846 -0.00044283 0.00027130 7.27266563 0.99864724 0.99928587 0.49322455;
+	-6.27310861 -0.00044277 0.00027126 7.27266584 0.99864744 0.99928597 0.49322455;
+	-6.27310876 -0.00044270 0.00027122 7.27266606 0.99864763 0.99928607 0.49322448;
+	-6.27310891 -0.00044264 0.00027119 7.27266627 0.99864782 0.99928618 0.49322460;
+	-6.27310906 -0.00044258 0.00027115 7.27266649 0.99864802 0.99928628 0.49322463;
+	-6.27310921 -0.00044251 0.00027111 7.27266670 0.99864821 0.99928638 0.49322466;
+	-6.27310937 -0.00044245 0.00027107 7.27266692 0.99864840 0.99928648 0.49322476;
+	-6.27310952 -0.00044239 0.00027103 7.27266713 0.99864860 0.99928658 0.49322465;
+	-6.27310967 -0.00044232 0.00027099 7.27266735 0.99864879 0.99928669 0.49322471;
+	-6.27310982 -0.00044226 0.00027095 7.27266756 0.99864898 0.99928679 0.49322475;
+	-6.27310997 -0.00044220 0.00027091 7.27266777 0.99864917 0.99928689 0.49322474;
+	-6.27311012 -0.00044213 0.00027088 7.27266799 0.99864937 0.99928699 0.49322474;
+	-6.27311027 -0.00044207 0.00027084 7.27266820 0.99864956 0.99928709 0.49322480;
+	-6.27311042 -0.00044201 0.00027080 7.27266842 0.99864975 0.99928719 0.49322485;
+	-6.27311058 -0.00044194 0.00027076 7.27266863 0.99864995 0.99928730 0.49322481;
+	-6.27311073 -0.00044188 0.00027072 7.27266884 0.99865014 0.99928740 0.49322488;
+	-6.27311088 -0.00044182 0.00027068 7.27266906 0.99865033 0.99928750 0.49322485;
+	-6.27311103 -0.00044176 0.00027064 7.27266927 0.99865052 0.99928760 0.49322488;
+	-6.27311118 -0.00044169 0.00027060 7.27266949 0.99865072 0.99928770 0.49322494;
+	-6.27311133 -0.00044163 0.00027057 7.27266970 0.99865091 0.99928780 0.49322492;
+	-6.27311148 -0.00044157 0.00027053 7.27266991 0.99865110 0.99928791 0.49322499;
+	-6.27311163 -0.00044150 0.00027049 7.27267013 0.99865129 0.99928801 0.49322490;
+	-6.27311178 -0.00044144 0.00027045 7.27267034 0.99865149 0.99928811 0.49322494;
+	-6.27311193 -0.00044138 0.00027041 7.27267056 0.99865168 0.99928821 0.49322503;
+	-6.27311208 -0.00044131 0.00027037 7.27267077 0.99865187 0.99928831 0.49322507;
+	-6.27311223 -0.00044125 0.00027033 7.27267098 0.99865206 0.99928841 0.49322506;
+	-6.27311238 -0.00044119 0.00027030 7.27267120 0.99865226 0.99928852 0.49322507;
+	-6.27311253 -0.00044113 0.00027026 7.27267141 0.99865245 0.99928862 0.49322511;
+	-6.27311269 -0.00044106 0.00027022 7.27267162 0.99865264 0.99928872 0.49322515;
+	-6.27311284 -0.00044100 0.00027018 7.27267184 0.99865283 0.99928882 0.49322525;
+	-6.27311299 -0.00044094 0.00027014 7.27267205 0.99865302 0.99928892 0.49322511;
+	-6.27311314 -0.00044087 0.00027010 7.27267226 0.99865322 0.99928902 0.49322518;
+	-6.27311329 -0.00044081 0.00027006 7.27267247 0.99865341 0.99928912 0.49322526;
+	-6.27311344 -0.00044075 0.00027003 7.27267269 0.99865360 0.99928922 0.49322521;
+	-6.27311359 -0.00044069 0.00026999 7.27267290 0.99865379 0.99928933 0.49322528;
+	-6.27311374 -0.00044062 0.00026995 7.27267311 0.99865398 0.99928943 0.49322529;
+	-6.27311389 -0.00044056 0.00026991 7.27267333 0.99865418 0.99928953 0.49322527;
+	-6.27311404 -0.00044050 0.00026987 7.27267354 0.99865437 0.99928963 0.49322539;
+	-6.27311419 -0.00044044 0.00026983 7.27267375 0.99865456 0.99928973 0.49322538;
+	-6.27311434 -0.00044037 0.00026980 7.27267396 0.99865475 0.99928983 0.49322547;
+	-6.27311449 -0.00044031 0.00026976 7.27267418 0.99865494 0.99928993 0.49322544;
+	-6.27311464 -0.00044025 0.00026972 7.27267439 0.99865513 0.99929003 0.49322545;
+	-6.27311479 -0.00044018 0.00026968 7.27267460 0.99865532 0.99929013 0.49322545;
+	-6.27311494 -0.00044012 0.00026964 7.27267481 0.99865551 0.99929024 0.49322537;
+	-6.27311509 -0.00044006 0.00026960 7.27267503 0.99865571 0.99929034 0.49322549;
+	-6.27311524 -0.00044000 0.00026957 7.27267524 0.99865590 0.99929044 0.49322552;
+	-6.27311539 -0.00043993 0.00026953 7.27267545 0.99865609 0.99929054 0.49322561;
+	-6.27311554 -0.00043987 0.00026949 7.27267566 0.99865628 0.99929064 0.49322551;
+	-6.27311569 -0.00043981 0.00026945 7.27267588 0.99865647 0.99929074 0.49322559;
+	-6.27311583 -0.00043975 0.00026941 7.27267609 0.99865666 0.99929084 0.49322564;
+	-6.27311598 -0.00043968 0.00026937 7.27267630 0.99865685 0.99929094 0.49322558;
+	-6.27311613 -0.00043962 0.00026934 7.27267651 0.99865704 0.99929104 0.49322567;
+	-6.27311628 -0.00043956 0.00026930 7.27267672 0.99865723 0.99929114 0.49322564;
+	-6.27311643 -0.00043950 0.00026926 7.27267693 0.99865742 0.99929124 0.49322573;
+	-6.27311658 -0.00043944 0.00026922 7.27267715 0.99865762 0.99929134 0.49322571;
+	-6.27311673 -0.00043937 0.00026918 7.27267736 0.99865781 0.99929144 0.49322569;
+	-6.27311688 -0.00043931 0.00026914 7.27267757 0.99865800 0.99929155 0.49322578;
+	-6.27311703 -0.00043925 0.00026911 7.27267778 0.99865819 0.99929165 0.49322578;
+	-6.27311718 -0.00043919 0.00026907 7.27267799 0.99865838 0.99929175 0.49322584;
+	-6.27311733 -0.00043912 0.00026903 7.27267820 0.99865857 0.99929185 0.49322586;
+	-6.27311748 -0.00043906 0.00026899 7.27267842 0.99865876 0.99929195 0.49322590;
+	-6.27311763 -0.00043900 0.00026895 7.27267863 0.99865895 0.99929205 0.49322588;
+	-6.27311777 -0.00043894 0.00026892 7.27267884 0.99865914 0.99929215 0.49322594;
+	-6.27311792 -0.00043887 0.00026888 7.27267905 0.99865933 0.99929225 0.49322584;
+	-6.27311807 -0.00043881 0.00026884 7.27267926 0.99865952 0.99929235 0.49322593;
+	-6.27311822 -0.00043875 0.00026880 7.27267947 0.99865971 0.99929245 0.49322593;
+	-6.27311837 -0.00043869 0.00026876 7.27267968 0.99865990 0.99929255 0.49322599;
+	-6.27311852 -0.00043863 0.00026872 7.27267989 0.99866009 0.99929265 0.49322601;
+	-6.27311867 -0.00043856 0.00026869 7.27268010 0.99866028 0.99929275 0.49322609;
+	-6.27311882 -0.00043850 0.00026865 7.27268032 0.99866047 0.99929285 0.49322605;
+	-6.27311897 -0.00043844 0.00026861 7.27268053 0.99866066 0.99929295 0.49322609;
+	-6.27311911 -0.00043838 0.00026857 7.27268074 0.99866085 0.99929305 0.49322609;
+	-6.27311926 -0.00043832 0.00026853 7.27268095 0.99866104 0.99929315 0.49322617;
+	-6.27311941 -0.00043825 0.00026850 7.27268116 0.99866123 0.99929325 0.49322622;
+	-6.27311956 -0.00043819 0.00026846 7.27268137 0.99866142 0.99929335 0.49322614;
+	-6.27311971 -0.00043813 0.00026842 7.27268158 0.99866161 0.99929345 0.49322631;
+	-6.27311986 -0.00043807 0.00026838 7.27268179 0.99866180 0.99929355 0.49322620;
+	-6.27312000 -0.00043800 0.00026834 7.27268200 0.99866199 0.99929365 0.49322616;
+	-6.27312015 -0.00043794 0.00026831 7.27268221 0.99866217 0.99929375 0.49322624;
+	-6.27312030 -0.00043788 0.00026827 7.27268242 0.99866236 0.99929385 0.49322623;
+	-6.27312045 -0.00043782 0.00026823 7.27268263 0.99866255 0.99929395 0.49322635;
+	-6.27312060 -0.00043776 0.00026819 7.27268284 0.99866274 0.99929405 0.49322632;
+	-6.27312075 -0.00043770 0.00026815 7.27268305 0.99866293 0.99929415 0.49322635;
+	-6.27312089 -0.00043763 0.00026812 7.27268326 0.99866312 0.99929425 0.49322639;
+	-6.27312104 -0.00043757 0.00026808 7.27268347 0.99866331 0.99929435 0.49322639;
+	-6.27312119 -0.00043751 0.00026804 7.27268368 0.99866350 0.99929445 0.49322638;
+	-6.27312134 -0.00043745 0.00026800 7.27268389 0.99866369 0.99929455 0.49322647;
+	-6.27312149 -0.00043739 0.00026796 7.27268410 0.99866388 0.99929465 0.49322642;
+	-6.27312163 -0.00043732 0.00026793 7.27268431 0.99866407 0.99929475 0.49322644;
+	-6.27312178 -0.00043726 0.00026789 7.27268452 0.99866425 0.99929485 0.49322646;
+	-6.27312193 -0.00043720 0.00026785 7.27268473 0.99866444 0.99929495 0.49322653;
+	-6.27312208 -0.00043714 0.00026781 7.27268494 0.99866463 0.99929505 0.49322663;
+	-6.27312223 -0.00043708 0.00026778 7.27268515 0.99866482 0.99929515 0.49322655;
+	-6.27312237 -0.00043702 0.00026774 7.27268536 0.99866501 0.99929525 0.49322658;
+	-6.27312252 -0.00043695 0.00026770 7.27268557 0.99866520 0.99929535 0.49322660;
+	-6.27312267 -0.00043689 0.00026766 7.27268578 0.99866539 0.99929545 0.49322666;
+	-6.27312282 -0.00043683 0.00026762 7.27268599 0.99866557 0.99929555 0.49322663;
+	-6.27312296 -0.00043677 0.00026759 7.27268619 0.99866576 0.99929564 0.49322672;
+	-6.27312311 -0.00043671 0.00026755 7.27268640 0.99866595 0.99929574 0.49322669;
+	-6.27312326 -0.00043665 0.00026751 7.27268661 0.99866614 0.99929584 0.49322667;
+	-6.27312341 -0.00043658 0.00026747 7.27268682 0.99866633 0.99929594 0.49322665;
+	-6.27312355 -0.00043652 0.00026744 7.27268703 0.99866652 0.99929604 0.49322678;
+	-6.27312370 -0.00043646 0.00026740 7.27268724 0.99866670 0.99929614 0.49322680;
+	-6.27312385 -0.00043640 0.00026736 7.27268745 0.99866689 0.99929624 0.49322677;
+	-6.27312399 -0.00043634 0.00026732 7.27268766 0.99866708 0.99929634 0.49322687;
+	-6.27312414 -0.00043628 0.00026728 7.27268787 0.99866727 0.99929644 0.49322695;
+	-6.27312429 -0.00043622 0.00026725 7.27268807 0.99866746 0.99929654 0.49322684;
+	-6.27312444 -0.00043615 0.00026721 7.27268828 0.99866764 0.99929664 0.49322695;
+	-6.27312458 -0.00043609 0.00026717 7.27268849 0.99866783 0.99929674 0.49322694;
+	-6.27312473 -0.00043603 0.00026713 7.27268870 0.99866802 0.99929684 0.49322694;
+	-6.27312488 -0.00043597 0.00026710 7.27268891 0.99866821 0.99929693 0.49322692;
+	-6.27312502 -0.00043591 0.00026706 7.27268912 0.99866839 0.99929703 0.49322694;
+	-6.27312517 -0.00043585 0.00026702 7.27268932 0.99866858 0.99929713 0.49322699;
+	-6.27312532 -0.00043579 0.00026698 7.27268953 0.99866877 0.99929723 0.49322697;
+	-6.27312546 -0.00043572 0.00026695 7.27268974 0.99866896 0.99929733 0.49322709;
+	-6.27312561 -0.00043566 0.00026691 7.27268995 0.99866914 0.99929743 0.49322698;
+	-6.27312576 -0.00043560 0.00026687 7.27269016 0.99866933 0.99929753 0.49322713;
+	-6.27312590 -0.00043554 0.00026683 7.27269037 0.99866952 0.99929763 0.49322708;
+	-6.27312605 -0.00043548 0.00026680 7.27269057 0.99866971 0.99929773 0.49322723;
+	-6.27312620 -0.00043542 0.00026676 7.27269078 0.99866989 0.99929782 0.49322717;
+	-6.27312634 -0.00043536 0.00026672 7.27269099 0.99867008 0.99929792 0.49322722;
+	-6.27312649 -0.00043529 0.00026668 7.27269120 0.99867027 0.99929802 0.49322714;
+	-6.27312664 -0.00043523 0.00026665 7.27269140 0.99867045 0.99929812 0.49322725;
+	-6.27312678 -0.00043517 0.00026661 7.27269161 0.99867064 0.99929822 0.49322739;
+	-6.27312693 -0.00043511 0.00026657 7.27269182 0.99867083 0.99929832 0.49322721;
+	-6.27312708 -0.00043505 0.00026653 7.27269203 0.99867101 0.99929842 0.49322728;
+	-6.27312722 -0.00043499 0.00026650 7.27269223 0.99867120 0.99929852 0.49322731;
+	-6.27312737 -0.00043493 0.00026646 7.27269244 0.99867139 0.99929861 0.49322735;
+	-6.27312752 -0.00043487 0.00026642 7.27269265 0.99867158 0.99929871 0.49322737;
+	-6.27312766 -0.00043481 0.00026638 7.27269286 0.99867176 0.99929881 0.49322735;
+	-6.27312781 -0.00043474 0.00026635 7.27269306 0.99867195 0.99929891 0.49322744;
+	-6.27312795 -0.00043468 0.00026631 7.27269327 0.99867214 0.99929901 0.49322745;
+	-6.27312810 -0.00043462 0.00026627 7.27269348 0.99867232 0.99929911 0.49322747;
+	-6.27312825 -0.00043456 0.00026623 7.27269368 0.99867251 0.99929920 0.49322750;
+	-6.27312839 -0.00043450 0.00026620 7.27269389 0.99867269 0.99929930 0.49322745;
+	-6.27312854 -0.00043444 0.00026616 7.27269410 0.99867288 0.99929940 0.49322761;
+	-6.27312868 -0.00043438 0.00026612 7.27269431 0.99867307 0.99929950 0.49322746;
+	-6.27312883 -0.00043432 0.00026608 7.27269451 0.99867325 0.99929960 0.49322757;
+	-6.27312898 -0.00043426 0.00026605 7.27269472 0.99867344 0.99929970 0.49322765;
+	-6.27312912 -0.00043420 0.00026601 7.27269493 0.99867363 0.99929979 0.49322763;
+	-6.27312927 -0.00043413 0.00026597 7.27269513 0.99867381 0.99929989 0.49322751;
+	-6.27312941 -0.00043407 0.00026593 7.27269534 0.99867400 0.99929999 0.49322758;
+	-6.27312956 -0.00043401 0.00026590 7.27269555 0.99867418 0.99930009 0.49322771;
+	-6.27312970 -0.00043395 0.00026586 7.27269575 0.99867437 0.99930019 0.49322770;
+	-6.27312985 -0.00043389 0.00026582 7.27269596 0.99867456 0.99930029 0.49322772;
+	-6.27313000 -0.00043383 0.00026579 7.27269616 0.99867474 0.99930038 0.49322775;
+	-6.27313014 -0.00043377 0.00026575 7.27269637 0.99867493 0.99930048 0.49322776;
+	-6.27313029 -0.00043371 0.00026571 7.27269658 0.99867511 0.99930058 0.49322779;
+	-6.27313043 -0.00043365 0.00026567 7.27269678 0.99867530 0.99930068 0.49322775;
+	-6.27313058 -0.00043359 0.00026564 7.27269699 0.99867548 0.99930078 0.49322782;
+	-6.27313072 -0.00043353 0.00026560 7.27269720 0.99867567 0.99930087 0.49322777;
+	-6.27313087 -0.00043347 0.00026556 7.27269740 0.99867586 0.99930097 0.49322785;
+	-6.27313101 -0.00043341 0.00026552 7.27269761 0.99867604 0.99930107 0.49322785;
+	-6.27313116 -0.00043335 0.00026549 7.27269781 0.99867623 0.99930117 0.49322792;
+	-6.27313130 -0.00043328 0.00026545 7.27269802 0.99867641 0.99930127 0.49322802;
+	-6.27313145 -0.00043322 0.00026541 7.27269823 0.99867660 0.99930136 0.49322800;
+	-6.27313159 -0.00043316 0.00026538 7.27269843 0.99867678 0.99930146 0.49322801;
+	-6.27313174 -0.00043310 0.00026534 7.27269864 0.99867697 0.99930156 0.49322793;
+	-6.27313188 -0.00043304 0.00026530 7.27269884 0.99867715 0.99930166 0.49322797;
+	-6.27313203 -0.00043298 0.00026526 7.27269905 0.99867734 0.99930175 0.49322808;
+	-6.27313217 -0.00043292 0.00026523 7.27269925 0.99867752 0.99930185 0.49322805;
+	-6.27313232 -0.00043286 0.00026519 7.27269946 0.99867771 0.99930195 0.49322811;
+	-6.27313246 -0.00043280 0.00026515 7.27269966 0.99867789 0.99930205 0.49322809;
+	-6.27313261 -0.00043274 0.00026512 7.27269987 0.99867808 0.99930214 0.49322806;
+	-6.27313275 -0.00043268 0.00026508 7.27270007 0.99867826 0.99930224 0.49322819;
+	-6.27313290 -0.00043262 0.00026504 7.27270028 0.99867845 0.99930234 0.49322820;
+	-6.27313304 -0.00043256 0.00026501 7.27270049 0.99867863 0.99930244 0.49322821;
+	-6.27313319 -0.00043250 0.00026497 7.27270069 0.99867882 0.99930253 0.49322826;
+	-6.27313333 -0.00043244 0.00026493 7.27270090 0.99867900 0.99930263 0.49322825;
+	-6.27313348 -0.00043238 0.00026489 7.27270110 0.99867919 0.99930273 0.49322828;
+	-6.27313362 -0.00043232 0.00026486 7.27270131 0.99867937 0.99930283 0.49322824;
+	-6.27313377 -0.00043226 0.00026482 7.27270151 0.99867955 0.99930292 0.49322829;
+	-6.27313391 -0.00043220 0.00026478 7.27270171 0.99867974 0.99930302 0.49322833;
+	-6.27313405 -0.00043214 0.00026475 7.27270192 0.99867992 0.99930312 0.49322832;
+	-6.27313420 -0.00043207 0.00026471 7.27270212 0.99868011 0.99930322 0.49322832;
+	-6.27313434 -0.00043201 0.00026467 7.27270233 0.99868029 0.99930331 0.49322841;
+	-6.27313449 -0.00043195 0.00026464 7.27270253 0.99868048 0.99930341 0.49322842;
+	-6.27313463 -0.00043189 0.00026460 7.27270274 0.99868066 0.99930351 0.49322850;
+	-6.27313478 -0.00043183 0.00026456 7.27270294 0.99868084 0.99930360 0.49322849;
+	-6.27313492 -0.00043177 0.00026452 7.27270315 0.99868103 0.99930370 0.49322832;
+	-6.27313506 -0.00043171 0.00026449 7.27270335 0.99868121 0.99930380 0.49322850;
+	-6.27313521 -0.00043165 0.00026445 7.27270356 0.99868140 0.99930390 0.49322849;
+	-6.27313535 -0.00043159 0.00026441 7.27270376 0.99868158 0.99930399 0.49322851;
+	-6.27313550 -0.00043153 0.00026438 7.27270396 0.99868176 0.99930409 0.49322842;
+	-6.27313564 -0.00043147 0.00026434 7.27270417 0.99868195 0.99930419 0.49322856;
+	-6.27313578 -0.00043141 0.00026430 7.27270437 0.99868213 0.99930428 0.49322852;
+	-6.27313593 -0.00043135 0.00026427 7.27270458 0.99868232 0.99930438 0.49322857;
+	-6.27313607 -0.00043129 0.00026423 7.27270478 0.99868250 0.99930448 0.49322857;
+	-6.27313622 -0.00043123 0.00026419 7.27270498 0.99868268 0.99930458 0.49322862;
+	-6.27313636 -0.00043117 0.00026416 7.27270519 0.99868287 0.99930467 0.49322867;
+	-6.27313650 -0.00043111 0.00026412 7.27270539 0.99868305 0.99930477 0.49322876;
+	-6.27313665 -0.00043105 0.00026408 7.27270560 0.99868323 0.99930487 0.49322877;
+	-6.27313679 -0.00043099 0.00026405 7.27270580 0.99868342 0.99930496 0.49322873;
+	-6.27313693 -0.00043093 0.00026401 7.27270600 0.99868360 0.99930506 0.49322870;
+	-6.27313708 -0.00043087 0.00026397 7.27270621 0.99868378 0.99930516 0.49322877;
+	-6.27313722 -0.00043081 0.00026394 7.27270641 0.99868397 0.99930525 0.49322879;
+	-6.27313737 -0.00043075 0.00026390 7.27270661 0.99868415 0.99930535 0.49322891;
+	-6.27313751 -0.00043069 0.00026386 7.27270682 0.99868433 0.99930545 0.49322887;
+	-6.27313765 -0.00043063 0.00026382 7.27270702 0.99868452 0.99930554 0.49322881;
+	-6.27313780 -0.00043057 0.00026379 7.27270722 0.99868470 0.99930564 0.49322892;
+	-6.27313794 -0.00043051 0.00026375 7.27270743 0.99868488 0.99930574 0.49322891;
+	-6.27313808 -0.00043045 0.00026371 7.27270763 0.99868507 0.99930583 0.49322891;
+	-6.27313823 -0.00043039 0.00026368 7.27270783 0.99868525 0.99930593 0.49322893;
+	-6.27313837 -0.00043033 0.00026364 7.27270804 0.99868543 0.99930603 0.49322886;
+	-6.27313851 -0.00043027 0.00026360 7.27270824 0.99868561 0.99930612 0.49322902;
+	-6.27313865 -0.00043021 0.00026357 7.27270844 0.99868580 0.99930622 0.49322900;
+	-6.27313880 -0.00043015 0.00026353 7.27270864 0.99868598 0.99930632 0.49322904;
+	-6.27313894 -0.00043009 0.00026349 7.27270885 0.99868616 0.99930641 0.49322903;
+	-6.27313908 -0.00043003 0.00026346 7.27270905 0.99868634 0.99930651 0.49322900;
+	-6.27313923 -0.00042997 0.00026342 7.27270925 0.99868653 0.99930660 0.49322904;
+	-6.27313937 -0.00042991 0.00026338 7.27270946 0.99868671 0.99930670 0.49322912;
+	-6.27313951 -0.00042985 0.00026335 7.27270966 0.99868689 0.99930680 0.49322917;
+	-6.27313966 -0.00042980 0.00026331 7.27270986 0.99868707 0.99930689 0.49322903;
+	-6.27313980 -0.00042974 0.00026328 7.27271006 0.99868726 0.99930699 0.49322919;
+	-6.27313994 -0.00042968 0.00026324 7.27271027 0.99868744 0.99930709 0.49322915;
+	-6.27314008 -0.00042962 0.00026320 7.27271047 0.99868762 0.99930718 0.49322921;
+	-6.27314023 -0.00042956 0.00026317 7.27271067 0.99868780 0.99930728 0.49322918;
+	-6.27314037 -0.00042950 0.00026313 7.27271087 0.99868799 0.99930737 0.49322930;
+	-6.27314051 -0.00042944 0.00026309 7.27271107 0.99868817 0.99930747 0.49322927;
+	-6.27314065 -0.00042938 0.00026306 7.27271128 0.99868835 0.99930757 0.49322931;
+	-6.27314080 -0.00042932 0.00026302 7.27271148 0.99868853 0.99930766 0.49322934;
+	-6.27314094 -0.00042926 0.00026298 7.27271168 0.99868871 0.99930776 0.49322928;
+	-6.27314108 -0.00042920 0.00026295 7.27271188 0.99868890 0.99930785 0.49322942;
+	-6.27314122 -0.00042914 0.00026291 7.27271208 0.99868908 0.99930795 0.49322942;
+	-6.27314137 -0.00042908 0.00026287 7.27271229 0.99868926 0.99930805 0.49322944;
+	-6.27314151 -0.00042902 0.00026284 7.27271249 0.99868944 0.99930814 0.49322951;
+	-6.27314165 -0.00042896 0.00026280 7.27271269 0.99868962 0.99930824 0.49322944;
+	-6.27314179 -0.00042890 0.00026276 7.27271289 0.99868980 0.99930833 0.49322951;
+	-6.27314194 -0.00042884 0.00026273 7.27271309 0.99868999 0.99930843 0.49322954;
+	-6.27314208 -0.00042878 0.00026269 7.27271329 0.99869017 0.99930853 0.49322961;
+	-6.27314222 -0.00042872 0.00026265 7.27271350 0.99869035 0.99930862 0.49322958;
+	-6.27314236 -0.00042866 0.00026262 7.27271370 0.99869053 0.99930872 0.49322958;
+	-6.27314250 -0.00042861 0.00026258 7.27271390 0.99869071 0.99930881 0.49322960;
+	-6.27314265 -0.00042855 0.00026255 7.27271410 0.99869089 0.99930891 0.49322954;
+	-6.27314279 -0.00042849 0.00026251 7.27271430 0.99869107 0.99930900 0.49322960;
+	-6.27314293 -0.00042843 0.00026247 7.27271450 0.99869125 0.99930910 0.49322964;
+	-6.27314307 -0.00042837 0.00026244 7.27271470 0.99869144 0.99930920 0.49322967;
+	-6.27314321 -0.00042831 0.00026240 7.27271491 0.99869162 0.99930929 0.49322963;
+	-6.27314336 -0.00042825 0.00026236 7.27271511 0.99869180 0.99930939 0.49322972;
+	-6.27314350 -0.00042819 0.00026233 7.27271531 0.99869198 0.99930948 0.49322962;
+	-6.27314364 -0.00042813 0.00026229 7.27271551 0.99869216 0.99930958 0.49322977;
+	-6.27314378 -0.00042807 0.00026226 7.27271571 0.99869234 0.99930967 0.49322982;
+	-6.27314392 -0.00042801 0.00026222 7.27271591 0.99869252 0.99930977 0.49322974;
+	-6.27314406 -0.00042795 0.00026218 7.27271611 0.99869270 0.99930986 0.49322983;
+	-6.27314421 -0.00042789 0.00026215 7.27271631 0.99869288 0.99930996 0.49322981;
+	-6.27314435 -0.00042783 0.00026211 7.27271651 0.99869306 0.99931005 0.49322987;
+	-6.27314449 -0.00042778 0.00026207 7.27271671 0.99869325 0.99931015 0.49322991;
+	-6.27314463 -0.00042772 0.00026204 7.27271691 0.99869343 0.99931025 0.49322985;
+	-6.27314477 -0.00042766 0.00026200 7.27271711 0.99869361 0.99931034 0.49322989;
+	-6.27314491 -0.00042760 0.00026197 7.27271731 0.99869379 0.99931044 0.49322995;
+	-6.27314505 -0.00042754 0.00026193 7.27271752 0.99869397 0.99931053 0.49322998;
+	-6.27314520 -0.00042748 0.00026189 7.27271772 0.99869415 0.99931063 0.49322992;
+	-6.27314534 -0.00042742 0.00026186 7.27271792 0.99869433 0.99931072 0.49322999;
+	-6.27314548 -0.00042736 0.00026182 7.27271812 0.99869451 0.99931082 0.49323014;
+	-6.27314562 -0.00042730 0.00026178 7.27271832 0.99869469 0.99931091 0.49323001;
+	-6.27314576 -0.00042724 0.00026175 7.27271852 0.99869487 0.99931101 0.49323007;
+	-6.27314590 -0.00042719 0.00026171 7.27271872 0.99869505 0.99931110 0.49323010;
+	-6.27314604 -0.00042713 0.00026168 7.27271892 0.99869523 0.99931120 0.49323018;
+	-6.27314618 -0.00042707 0.00026164 7.27271912 0.99869541 0.99931129 0.49323018;
+	-6.27314633 -0.00042701 0.00026160 7.27271932 0.99869559 0.99931139 0.49323016;
+	-6.27314647 -0.00042695 0.00026157 7.27271952 0.99869577 0.99931148 0.49323007;
+	-6.27314661 -0.00042689 0.00026153 7.27271972 0.99869595 0.99931158 0.49323022;
+	-6.27314675 -0.00042683 0.00026150 7.27271992 0.99869613 0.99931167 0.49323025;
+	-6.27314689 -0.00042677 0.00026146 7.27272012 0.99869631 0.99931177 0.49323030;
+	-6.27314703 -0.00042671 0.00026142 7.27272032 0.99869649 0.99931186 0.49323027;
+	-6.27314717 -0.00042666 0.00026139 7.27272051 0.99869667 0.99931196 0.49323031;
+	-6.27314731 -0.00042660 0.00026135 7.27272071 0.99869685 0.99931205 0.49323029;
+	-6.27314745 -0.00042654 0.00026132 7.27272091 0.99869703 0.99931215 0.49323033;
+	-6.27314759 -0.00042648 0.00026128 7.27272111 0.99869721 0.99931224 0.49323043;
+	-6.27314773 -0.00042642 0.00026124 7.27272131 0.99869739 0.99931234 0.49323035;
+	-6.27314787 -0.00042636 0.00026121 7.27272151 0.99869757 0.99931243 0.49323032;
+	-6.27314801 -0.00042630 0.00026117 7.27272171 0.99869775 0.99931253 0.49323043;
+	-6.27314815 -0.00042624 0.00026114 7.27272191 0.99869792 0.99931262 0.49323038;
+	-6.27314830 -0.00042619 0.00026110 7.27272211 0.99869810 0.99931272 0.49323055;
+	-6.27314844 -0.00042613 0.00026106 7.27272231 0.99869828 0.99931281 0.49323047;
+	-6.27314858 -0.00042607 0.00026103 7.27272251 0.99869846 0.99931290 0.49323039;
+	-6.27314872 -0.00042601 0.00026099 7.27272271 0.99869864 0.99931300 0.49323039;
+	-6.27314886 -0.00042595 0.00026096 7.27272291 0.99869882 0.99931309 0.49323057;
+	-6.27314900 -0.00042589 0.00026092 7.27272310 0.99869900 0.99931319 0.49323051;
+	-6.27314914 -0.00042583 0.00026088 7.27272330 0.99869918 0.99931328 0.49323056;
+	-6.27314928 -0.00042578 0.00026085 7.27272350 0.99869936 0.99931338 0.49323064;
+	-6.27314942 -0.00042572 0.00026081 7.27272370 0.99869954 0.99931347 0.49323065;
+	-6.27314956 -0.00042566 0.00026078 7.27272390 0.99869972 0.99931357 0.49323065;
+	-6.27314970 -0.00042560 0.00026074 7.27272410 0.99869989 0.99931366 0.49323070;
+	-6.27314984 -0.00042554 0.00026070 7.27272430 0.99870007 0.99931375 0.49323062;
+	-6.27314998 -0.00042548 0.00026067 7.27272450 0.99870025 0.99931385 0.49323063;
+	-6.27315012 -0.00042542 0.00026063 7.27272469 0.99870043 0.99931394 0.49323075;
+	-6.27315026 -0.00042537 0.00026060 7.27272489 0.99870061 0.99931404 0.49323074;
+	-6.27315040 -0.00042531 0.00026056 7.27272509 0.99870079 0.99931413 0.49323081;
+	-6.27315054 -0.00042525 0.00026052 7.27272529 0.99870097 0.99931423 0.49323082;
+	-6.27315068 -0.00042519 0.00026049 7.27272549 0.99870115 0.99931432 0.49323079;
+	-6.27315082 -0.00042513 0.00026045 7.27272569 0.99870132 0.99931441 0.49323072;
+	-6.27315096 -0.00042507 0.00026042 7.27272588 0.99870150 0.99931451 0.49323088;
+	-6.27315110 -0.00042502 0.00026038 7.27272608 0.99870168 0.99931460 0.49323096;
+	-6.27315124 -0.00042496 0.00026035 7.27272628 0.99870186 0.99931470 0.49323088;
+	-6.27315138 -0.00042490 0.00026031 7.27272648 0.99870204 0.99931479 0.49323085;
+	-6.27315152 -0.00042484 0.00026027 7.27272668 0.99870222 0.99931489 0.49323089;
+	-6.27315165 -0.00042478 0.00026024 7.27272687 0.99870239 0.99931498 0.49323085;
+	-6.27315179 -0.00042472 0.00026020 7.27272707 0.99870257 0.99931507 0.49323101;
+	-6.27315193 -0.00042467 0.00026017 7.27272727 0.99870275 0.99931517 0.49323094;
+	-6.27315207 -0.00042461 0.00026013 7.27272747 0.99870293 0.99931526 0.49323104;
+	-6.27315221 -0.00042455 0.00026010 7.27272766 0.99870311 0.99931535 0.49323100;
+	-6.27315235 -0.00042449 0.00026006 7.27272786 0.99870328 0.99931545 0.49323105;
+	-6.27315249 -0.00042443 0.00026002 7.27272806 0.99870346 0.99931554 0.49323112;
+	-6.27315263 -0.00042437 0.00025999 7.27272826 0.99870364 0.99931564 0.49323100;
+	-6.27315277 -0.00042432 0.00025995 7.27272845 0.99870382 0.99931573 0.49323104;
+	-6.27315291 -0.00042426 0.00025992 7.27272865 0.99870399 0.99931582 0.49323113;
+	-6.27315305 -0.00042420 0.00025988 7.27272885 0.99870417 0.99931592 0.49323100;
+	-6.27315319 -0.00042414 0.00025985 7.27272905 0.99870435 0.99931601 0.49323118;
+	-6.27315333 -0.00042408 0.00025981 7.27272924 0.99870453 0.99931611 0.49323122;
+	-6.27315347 -0.00042403 0.00025978 7.27272944 0.99870470 0.99931620 0.49323123;
+	-6.27315360 -0.00042397 0.00025974 7.27272964 0.99870488 0.99931629 0.49323124;
+	-6.27315374 -0.00042391 0.00025970 7.27272983 0.99870506 0.99931639 0.49323127;
+	-6.27315388 -0.00042385 0.00025967 7.27273003 0.99870524 0.99931648 0.49323133;
+	-6.27315402 -0.00042379 0.00025963 7.27273023 0.99870541 0.99931657 0.49323140;
+	-6.27315416 -0.00042374 0.00025960 7.27273042 0.99870559 0.99931667 0.49323133;
+	-6.27315430 -0.00042368 0.00025956 7.27273062 0.99870577 0.99931676 0.49323138;
+	-6.27315444 -0.00042362 0.00025953 7.27273082 0.99870595 0.99931685 0.49323140;
+	-6.27315458 -0.00042356 0.00025949 7.27273101 0.99870612 0.99931695 0.49323145;
+	-6.27315472 -0.00042350 0.00025946 7.27273121 0.99870630 0.99931704 0.49323139;
+	-6.27315485 -0.00042345 0.00025942 7.27273141 0.99870648 0.99931713 0.49323136;
+	-6.27315499 -0.00042339 0.00025938 7.27273160 0.99870665 0.99931723 0.49323144;
+	-6.27315513 -0.00042333 0.00025935 7.27273180 0.99870683 0.99931732 0.49323141;
+	-6.27315527 -0.00042327 0.00025931 7.27273200 0.99870701 0.99931741 0.49323140;
+	-6.27315541 -0.00042321 0.00025928 7.27273219 0.99870719 0.99931751 0.49323155;
+	-6.27315555 -0.00042316 0.00025924 7.27273239 0.99870736 0.99931760 0.49323157;
+	-6.27315569 -0.00042310 0.00025921 7.27273259 0.99870754 0.99931769 0.49323161;
+	-6.27315582 -0.00042304 0.00025917 7.27273278 0.99870772 0.99931779 0.49323157;
+	-6.27315596 -0.00042298 0.00025914 7.27273298 0.99870789 0.99931788 0.49323162;
+	-6.27315610 -0.00042292 0.00025910 7.27273318 0.99870807 0.99931797 0.49323164;
+	-6.27315624 -0.00042287 0.00025907 7.27273337 0.99870825 0.99931807 0.49323172;
+	-6.27315638 -0.00042281 0.00025903 7.27273357 0.99870842 0.99931816 0.49323163;
+	-6.27315652 -0.00042275 0.00025899 7.27273376 0.99870860 0.99931825 0.49323158;
+	-6.27315665 -0.00042269 0.00025896 7.27273396 0.99870877 0.99931835 0.49323168;
+	-6.27315679 -0.00042264 0.00025892 7.27273416 0.99870895 0.99931844 0.49323175;
+	-6.27315693 -0.00042258 0.00025889 7.27273435 0.99870913 0.99931853 0.49323172;
+	-6.27315707 -0.00042252 0.00025885 7.27273455 0.99870930 0.99931863 0.49323175;
+	-6.27315721 -0.00042246 0.00025882 7.27273474 0.99870948 0.99931872 0.49323179;
+	-6.27315734 -0.00042241 0.00025878 7.27273494 0.99870966 0.99931881 0.49323178;
+	-6.27315748 -0.00042235 0.00025875 7.27273513 0.99870983 0.99931891 0.49323183;
+	-6.27315762 -0.00042229 0.00025871 7.27273533 0.99871001 0.99931900 0.49323180;
+	-6.27315776 -0.00042223 0.00025868 7.27273552 0.99871018 0.99931909 0.49323181;
+	-6.27315790 -0.00042218 0.00025864 7.27273572 0.99871036 0.99931918 0.49323188;
+	-6.27315803 -0.00042212 0.00025861 7.27273592 0.99871054 0.99931928 0.49323197;
+	-6.27315817 -0.00042206 0.00025857 7.27273611 0.99871071 0.99931937 0.49323190;
+	-6.27315831 -0.00042200 0.00025854 7.27273631 0.99871089 0.99931946 0.49323185;
+	-6.27315845 -0.00042194 0.00025850 7.27273650 0.99871106 0.99931956 0.49323199;
+	-6.27315858 -0.00042189 0.00025846 7.27273670 0.99871124 0.99931965 0.49323204;
+	-6.27315872 -0.00042183 0.00025843 7.27273689 0.99871141 0.99931974 0.49323191;
+	-6.27315886 -0.00042177 0.00025839 7.27273709 0.99871159 0.99931983 0.49323202;
+	-6.27315900 -0.00042171 0.00025836 7.27273728 0.99871177 0.99931993 0.49323199;
+	-6.27315913 -0.00042166 0.00025832 7.27273748 0.99871194 0.99932002 0.49323200;
+	-6.27315927 -0.00042160 0.00025829 7.27273767 0.99871212 0.99932011 0.49323212;
+	-6.27315941 -0.00042154 0.00025825 7.27273787 0.99871229 0.99932020 0.49323215;
+	-6.27315955 -0.00042149 0.00025822 7.27273806 0.99871247 0.99932030 0.49323211;
+	-6.27315968 -0.00042143 0.00025818 7.27273826 0.99871264 0.99932039 0.49323217;
+	-6.27315982 -0.00042137 0.00025815 7.27273845 0.99871282 0.99932048 0.49323219;
+	-6.27315996 -0.00042131 0.00025811 7.27273864 0.99871299 0.99932057 0.49323223;
+	-6.27316010 -0.00042126 0.00025808 7.27273884 0.99871317 0.99932067 0.49323224;
+	-6.27316023 -0.00042120 0.00025804 7.27273903 0.99871334 0.99932076 0.49323221;
+	-6.27316037 -0.00042114 0.00025801 7.27273923 0.99871352 0.99932085 0.49323224;
+	-6.27316051 -0.00042108 0.00025797 7.27273942 0.99871369 0.99932094 0.49323220;
+	-6.27316064 -0.00042103 0.00025794 7.27273962 0.99871387 0.99932104 0.49323229;
+	-6.27316078 -0.00042097 0.00025790 7.27273981 0.99871404 0.99932113 0.49323228;
+	-6.27316092 -0.00042091 0.00025787 7.27274001 0.99871422 0.99932122 0.49323228;
+	-6.27316105 -0.00042085 0.00025783 7.27274020 0.99871439 0.99932131 0.49323234;
+	-6.27316119 -0.00042080 0.00025780 7.27274039 0.99871457 0.99932141 0.49323243;
+	-6.27316133 -0.00042074 0.00025776 7.27274059 0.99871474 0.99932150 0.49323241;
+	-6.27316147 -0.00042068 0.00025773 7.27274078 0.99871492 0.99932159 0.49323242;
+	-6.27316160 -0.00042063 0.00025769 7.27274098 0.99871509 0.99932168 0.49323234;
+	-6.27316174 -0.00042057 0.00025766 7.27274117 0.99871527 0.99932177 0.49323243;
+	-6.27316188 -0.00042051 0.00025762 7.27274136 0.99871544 0.99932187 0.49323249;
+	-6.27316201 -0.00042045 0.00025759 7.27274156 0.99871562 0.99932196 0.49323249;
+	-6.27316215 -0.00042040 0.00025755 7.27274175 0.99871579 0.99932205 0.49323255;
+	-6.27316229 -0.00042034 0.00025752 7.27274195 0.99871597 0.99932214 0.49323261;
+	-6.27316242 -0.00042028 0.00025748 7.27274214 0.99871614 0.99932223 0.49323266;
+	-6.27316256 -0.00042023 0.00025745 7.27274233 0.99871631 0.99932233 0.49323261;
+	-6.27316270 -0.00042017 0.00025741 7.27274253 0.99871649 0.99932242 0.49323265;
+	-6.27316283 -0.00042011 0.00025738 7.27274272 0.99871666 0.99932251 0.49323261;
+	-6.27316297 -0.00042006 0.00025734 7.27274291 0.99871684 0.99932260 0.49323268;
+	-6.27316311 -0.00042000 0.00025731 7.27274311 0.99871701 0.99932269 0.49323261;
+	-6.27316324 -0.00041994 0.00025727 7.27274330 0.99871719 0.99932279 0.49323277;
+	-6.27316338 -0.00041988 0.00025724 7.27274349 0.99871736 0.99932288 0.49323278;
+	-6.27316351 -0.00041983 0.00025720 7.27274369 0.99871753 0.99932297 0.49323270;
+	-6.27316365 -0.00041977 0.00025717 7.27274388 0.99871771 0.99932306 0.49323262;
+	-6.27316379 -0.00041971 0.00025713 7.27274407 0.99871788 0.99932315 0.49323267;
+	-6.27316392 -0.00041966 0.00025710 7.27274427 0.99871806 0.99932325 0.49323282;
+	-6.27316406 -0.00041960 0.00025706 7.27274446 0.99871823 0.99932334 0.49323274;
+	-6.27316420 -0.00041954 0.00025703 7.27274465 0.99871840 0.99932343 0.49323276;
+	-6.27316433 -0.00041949 0.00025699 7.27274485 0.99871858 0.99932352 0.49323279;
+	-6.27316447 -0.00041943 0.00025696 7.27274504 0.99871875 0.99932361 0.49323285;
+	-6.27316460 -0.00041937 0.00025692 7.27274523 0.99871892 0.99932370 0.49323286;
+	-6.27316474 -0.00041932 0.00025689 7.27274542 0.99871910 0.99932380 0.49323296;
+	-6.27316488 -0.00041926 0.00025685 7.27274562 0.99871927 0.99932389 0.49323294;
+	-6.27316501 -0.00041920 0.00025682 7.27274581 0.99871944 0.99932398 0.49323292;
+	-6.27316515 -0.00041915 0.00025678 7.27274600 0.99871962 0.99932407 0.49323285;
+	-6.27316528 -0.00041909 0.00025675 7.27274619 0.99871979 0.99932416 0.49323292;
+	-6.27316542 -0.00041903 0.00025671 7.27274639 0.99871996 0.99932425 0.49323303;
+	-6.27316555 -0.00041898 0.00025668 7.27274658 0.99872014 0.99932435 0.49323312;
+	-6.27316569 -0.00041892 0.00025664 7.27274677 0.99872031 0.99932444 0.49323326;
+	-6.27316583 -0.00041886 0.00025661 7.27274696 0.99872048 0.99932453 0.49323308;
+	-6.27316596 -0.00041881 0.00025658 7.27274716 0.99872066 0.99932462 0.49323307;
+	-6.27316610 -0.00041875 0.00025654 7.27274735 0.99872083 0.99932471 0.49323314;
+	-6.27316623 -0.00041869 0.00025651 7.27274754 0.99872100 0.99932480 0.49323312;
+	-6.27316637 -0.00041864 0.00025647 7.27274773 0.99872118 0.99932489 0.49323320;
+	-6.27316650 -0.00041858 0.00025644 7.27274793 0.99872135 0.99932498 0.49323311;
+	-6.27316664 -0.00041852 0.00025640 7.27274812 0.99872152 0.99932508 0.49323311;
+	-6.27316677 -0.00041847 0.00025637 7.27274831 0.99872170 0.99932517 0.49323317;
+	-6.27316691 -0.00041841 0.00025633 7.27274850 0.99872187 0.99932526 0.49323323;
+	-6.27316705 -0.00041835 0.00025630 7.27274869 0.99872204 0.99932535 0.49323325;
+	-6.27316718 -0.00041830 0.00025626 7.27274888 0.99872221 0.99932544 0.49323334;
+	-6.27316732 -0.00041824 0.00025623 7.27274908 0.99872239 0.99932553 0.49323332;
+	-6.27316745 -0.00041818 0.00025619 7.27274927 0.99872256 0.99932562 0.49323331;
+	-6.27316759 -0.00041813 0.00025616 7.27274946 0.99872273 0.99932571 0.49323331;
+	-6.27316772 -0.00041807 0.00025612 7.27274965 0.99872290 0.99932581 0.49323346;
+	-6.27316786 -0.00041801 0.00025609 7.27274984 0.99872308 0.99932590 0.49323331;
+	-6.27316799 -0.00041796 0.00025606 7.27275003 0.99872325 0.99932599 0.49323339;
+	-6.27316813 -0.00041790 0.00025602 7.27275023 0.99872342 0.99932608 0.49323343;
+	-6.27316826 -0.00041784 0.00025599 7.27275042 0.99872359 0.99932617 0.49323337;
+	-6.27316840 -0.00041779 0.00025595 7.27275061 0.99872377 0.99932626 0.49323342;
+	-6.27316853 -0.00041773 0.00025592 7.27275080 0.99872394 0.99932635 0.49323347;
+	-6.27316867 -0.00041768 0.00025588 7.27275099 0.99872411 0.99932644 0.49323353;
+	-6.27316880 -0.00041762 0.00025585 7.27275118 0.99872428 0.99932653 0.49323349;
+	-6.27316894 -0.00041756 0.00025581 7.27275137 0.99872446 0.99932662 0.49323358;
+	-6.27316907 -0.00041751 0.00025578 7.27275157 0.99872463 0.99932671 0.49323354;
+	-6.27316921 -0.00041745 0.00025574 7.27275176 0.99872480 0.99932681 0.49323350;
+	-6.27316934 -0.00041739 0.00025571 7.27275195 0.99872497 0.99932690 0.49323356;
+	-6.27316948 -0.00041734 0.00025568 7.27275214 0.99872514 0.99932699 0.49323355;
+	-6.27316961 -0.00041728 0.00025564 7.27275233 0.99872532 0.99932708 0.49323359;
+	-6.27316974 -0.00041722 0.00025561 7.27275252 0.99872549 0.99932717 0.49323360;
+	-6.27316988 -0.00041717 0.00025557 7.27275271 0.99872566 0.99932726 0.49323362;
+	-6.27317001 -0.00041711 0.00025554 7.27275290 0.99872583 0.99932735 0.49323369;
+	-6.27317015 -0.00041706 0.00025550 7.27275309 0.99872600 0.99932744 0.49323369;
+	-6.27317028 -0.00041700 0.00025547 7.27275328 0.99872617 0.99932753 0.49323368;
+	-6.27317042 -0.00041694 0.00025543 7.27275347 0.99872635 0.99932762 0.49323375;
+	-6.27317055 -0.00041689 0.00025540 7.27275366 0.99872652 0.99932771 0.49323378;
+	-6.27317069 -0.00041683 0.00025537 7.27275385 0.99872669 0.99932780 0.49323373;
+	-6.27317082 -0.00041678 0.00025533 7.27275405 0.99872686 0.99932789 0.49323370;
+	-6.27317095 -0.00041672 0.00025530 7.27275424 0.99872703 0.99932798 0.49323379;
+	-6.27317109 -0.00041666 0.00025526 7.27275443 0.99872720 0.99932807 0.49323375;
+	-6.27317122 -0.00041661 0.00025523 7.27275462 0.99872738 0.99932816 0.49323392;
+	-6.27317136 -0.00041655 0.00025519 7.27275481 0.99872755 0.99932826 0.49323391;
+	-6.27317149 -0.00041649 0.00025516 7.27275500 0.99872772 0.99932835 0.49323391;
+	-6.27317163 -0.00041644 0.00025512 7.27275519 0.99872789 0.99932844 0.49323388;
+	-6.27317176 -0.00041638 0.00025509 7.27275538 0.99872806 0.99932853 0.49323395;
+	-6.27317189 -0.00041633 0.00025506 7.27275557 0.99872823 0.99932862 0.49323385;
+	-6.27317203 -0.00041627 0.00025502 7.27275576 0.99872840 0.99932871 0.49323392;
+	-6.27317216 -0.00041621 0.00025499 7.27275595 0.99872857 0.99932880 0.49323402;
+	-6.27317230 -0.00041616 0.00025495 7.27275614 0.99872874 0.99932889 0.49323405;
+	-6.27317243 -0.00041610 0.00025492 7.27275633 0.99872892 0.99932898 0.49323405;
+	-6.27317256 -0.00041605 0.00025488 7.27275652 0.99872909 0.99932907 0.49323408;
+	-6.27317270 -0.00041599 0.00025485 7.27275671 0.99872926 0.99932916 0.49323410;
+	-6.27317283 -0.00041594 0.00025482 7.27275690 0.99872943 0.99932925 0.49323410;
+	-6.27317297 -0.00041588 0.00025478 7.27275709 0.99872960 0.99932934 0.49323416;
+	-6.27317310 -0.00041582 0.00025475 7.27275728 0.99872977 0.99932943 0.49323413;
+	-6.27317323 -0.00041577 0.00025471 7.27275746 0.99872994 0.99932952 0.49323409;
+	-6.27317337 -0.00041571 0.00025468 7.27275765 0.99873011 0.99932961 0.49323425;
+	-6.27317350 -0.00041566 0.00025465 7.27275784 0.99873028 0.99932970 0.49323426;
+	-6.27317363 -0.00041560 0.00025461 7.27275803 0.99873045 0.99932979 0.49323421;
+	-6.27317377 -0.00041554 0.00025458 7.27275822 0.99873062 0.99932988 0.49323430;
+	-6.27317390 -0.00041549 0.00025454 7.27275841 0.99873079 0.99932997 0.49323422;
+	-6.27317403 -0.00041543 0.00025451 7.27275860 0.99873096 0.99933006 0.49323429;
+	-6.27317417 -0.00041538 0.00025447 7.27275879 0.99873113 0.99933015 0.49323420;
+	-6.27317430 -0.00041532 0.00025444 7.27275898 0.99873130 0.99933024 0.49323427;
+	-6.27317443 -0.00041527 0.00025441 7.27275917 0.99873147 0.99933033 0.49323431;
+	-6.27317457 -0.00041521 0.00025437 7.27275936 0.99873164 0.99933042 0.49323443;
+	-6.27317470 -0.00041515 0.00025434 7.27275955 0.99873181 0.99933051 0.49323428;
+	-6.27317483 -0.00041510 0.00025430 7.27275974 0.99873198 0.99933060 0.49323443;
+	-6.27317497 -0.00041504 0.00025427 7.27275992 0.99873215 0.99933069 0.49323437;
+	-6.27317510 -0.00041499 0.00025424 7.27276011 0.99873232 0.99933078 0.49323454;
+	-6.27317523 -0.00041493 0.00025420 7.27276030 0.99873249 0.99933087 0.49323446;
+	-6.27317537 -0.00041488 0.00025417 7.27276049 0.99873266 0.99933096 0.49323436;
+	-6.27317550 -0.00041482 0.00025413 7.27276068 0.99873283 0.99933105 0.49323455;
+	-6.27317563 -0.00041476 0.00025410 7.27276087 0.99873300 0.99933114 0.49323443;
+	-6.27317577 -0.00041471 0.00025406 7.27276106 0.99873317 0.99933123 0.49323444;
+	-6.27317590 -0.00041465 0.00025403 7.27276124 0.99873334 0.99933132 0.49323452;
+	-6.27317603 -0.00041460 0.00025400 7.27276143 0.99873351 0.99933140 0.49323465;
+	-6.27317616 -0.00041454 0.00025396 7.27276162 0.99873368 0.99933149 0.49323452;
+	-6.27317630 -0.00041449 0.00025393 7.27276181 0.99873385 0.99933158 0.49323459;
+	-6.27317643 -0.00041443 0.00025389 7.27276200 0.99873402 0.99933167 0.49323462;
+	-6.27317656 -0.00041438 0.00025386 7.27276219 0.99873419 0.99933176 0.49323457;
+	-6.27317670 -0.00041432 0.00025383 7.27276237 0.99873436 0.99933185 0.49323468;
+	-6.27317683 -0.00041427 0.00025379 7.27276256 0.99873453 0.99933194 0.49323479;
+	-6.27317696 -0.00041421 0.00025376 7.27276275 0.99873470 0.99933203 0.49323481;
+	-6.27317709 -0.00041415 0.00025372 7.27276294 0.99873487 0.99933212 0.49323465;
+	-6.27317723 -0.00041410 0.00025369 7.27276313 0.99873504 0.99933221 0.49323467;
+	-6.27317736 -0.00041404 0.00025366 7.27276332 0.99873521 0.99933230 0.49323474;
+	-6.27317749 -0.00041399 0.00025362 7.27276350 0.99873538 0.99933239 0.49323475;
+	-6.27317762 -0.00041393 0.00025359 7.27276369 0.99873555 0.99933248 0.49323489;
+	-6.27317776 -0.00041388 0.00025355 7.27276388 0.99873572 0.99933257 0.49323478;
+	-6.27317789 -0.00041382 0.00025352 7.27276407 0.99873588 0.99933266 0.49323490;
+	-6.27317802 -0.00041377 0.00025349 7.27276425 0.99873605 0.99933275 0.49323500;
+	-6.27317815 -0.00041371 0.00025345 7.27276444 0.99873622 0.99933283 0.49323486;
+	-6.27317829 -0.00041366 0.00025342 7.27276463 0.99873639 0.99933292 0.49323491;
+	-6.27317842 -0.00041360 0.00025339 7.27276482 0.99873656 0.99933301 0.49323473;
+	-6.27317855 -0.00041355 0.00025335 7.27276500 0.99873673 0.99933310 0.49323495;
+	-6.27317868 -0.00041349 0.00025332 7.27276519 0.99873690 0.99933319 0.49323495;
+	-6.27317882 -0.00041344 0.00025328 7.27276538 0.99873707 0.99933328 0.49323487;
+	-6.27317895 -0.00041338 0.00025325 7.27276557 0.99873724 0.99933337 0.49323500;
+	-6.27317908 -0.00041333 0.00025322 7.27276575 0.99873740 0.99933346 0.49323493;
+	-6.27317921 -0.00041327 0.00025318 7.27276594 0.99873757 0.99933355 0.49323497;
+	-6.27317934 -0.00041321 0.00025315 7.27276613 0.99873774 0.99933364 0.49323507;
+	-6.27317948 -0.00041316 0.00025311 7.27276632 0.99873791 0.99933373 0.49323512;
+	-6.27317961 -0.00041310 0.00025308 7.27276650 0.99873808 0.99933381 0.49323500;
+	-6.27317974 -0.00041305 0.00025305 7.27276669 0.99873825 0.99933390 0.49323510;
+	-6.27317987 -0.00041299 0.00025301 7.27276688 0.99873842 0.99933399 0.49323520;
+	-6.27318000 -0.00041294 0.00025298 7.27276706 0.99873858 0.99933408 0.49323515;
+	-6.27318014 -0.00041288 0.00025295 7.27276725 0.99873875 0.99933417 0.49323523;
+	-6.27318027 -0.00041283 0.00025291 7.27276744 0.99873892 0.99933426 0.49323516;
+	-6.27318040 -0.00041277 0.00025288 7.27276762 0.99873909 0.99933435 0.49323517;
+	-6.27318053 -0.00041272 0.00025284 7.27276781 0.99873926 0.99933444 0.49323519;
+	-6.27318066 -0.00041266 0.00025281 7.27276800 0.99873942 0.99933453 0.49323515;
+	-6.27318079 -0.00041261 0.00025278 7.27276818 0.99873959 0.99933461 0.49323538;
+	-6.27318093 -0.00041255 0.00025274 7.27276837 0.99873976 0.99933470 0.49323529;
+	-6.27318106 -0.00041250 0.00025271 7.27276856 0.99873993 0.99933479 0.49323537;
+	-6.27318119 -0.00041244 0.00025268 7.27276874 0.99874010 0.99933488 0.49323534;
+	-6.27318132 -0.00041239 0.00025264 7.27276893 0.99874026 0.99933497 0.49323537;
+	-6.27318145 -0.00041233 0.00025261 7.27276912 0.99874043 0.99933506 0.49323540;
+	-6.27318158 -0.00041228 0.00025258 7.27276930 0.99874060 0.99933515 0.49323539;
+	-6.27318171 -0.00041222 0.00025254 7.27276949 0.99874077 0.99933523 0.49323536;
+	-6.27318185 -0.00041217 0.00025251 7.27276968 0.99874094 0.99933532 0.49323541;
+	-6.27318198 -0.00041211 0.00025247 7.27276986 0.99874110 0.99933541 0.49323529;
+	-6.27318211 -0.00041206 0.00025244 7.27277005 0.99874127 0.99933550 0.49323554;
+	-6.27318224 -0.00041200 0.00025241 7.27277023 0.99874144 0.99933559 0.49323556;
+	-6.27318237 -0.00041195 0.00025237 7.27277042 0.99874161 0.99933568 0.49323548;
+	-6.27318250 -0.00041190 0.00025234 7.27277061 0.99874177 0.99933577 0.49323555;
+	-6.27318263 -0.00041184 0.00025231 7.27277079 0.99874194 0.99933585 0.49323555;
+	-6.27318276 -0.00041179 0.00025227 7.27277098 0.99874211 0.99933594 0.49323566;
+	-6.27318290 -0.00041173 0.00025224 7.27277117 0.99874228 0.99933603 0.49323552;
+	-6.27318303 -0.00041168 0.00025221 7.27277135 0.99874244 0.99933612 0.49323561;
+	-6.27318316 -0.00041162 0.00025217 7.27277154 0.99874261 0.99933621 0.49323566;
+	-6.27318329 -0.00041157 0.00025214 7.27277172 0.99874278 0.99933630 0.49323555;
+	-6.27318342 -0.00041151 0.00025210 7.27277191 0.99874294 0.99933638 0.49323560;
+	-6.27318355 -0.00041146 0.00025207 7.27277209 0.99874311 0.99933647 0.49323570;
+	-6.27318368 -0.00041140 0.00025204 7.27277228 0.99874328 0.99933656 0.49323566;
+	-6.27318381 -0.00041135 0.00025200 7.27277246 0.99874345 0.99933665 0.49323580;
+	-6.27318394 -0.00041129 0.00025197 7.27277265 0.99874361 0.99933674 0.49323573;
+	-6.27318407 -0.00041124 0.00025194 7.27277284 0.99874378 0.99933682 0.49323588;
+	-6.27318420 -0.00041118 0.00025190 7.27277302 0.99874395 0.99933691 0.49323574;
+	-6.27318434 -0.00041113 0.00025187 7.27277321 0.99874411 0.99933700 0.49323584;
+	-6.27318447 -0.00041107 0.00025184 7.27277339 0.99874428 0.99933709 0.49323574;
+	-6.27318460 -0.00041102 0.00025180 7.27277358 0.99874445 0.99933718 0.49323586;
+	-6.27318473 -0.00041097 0.00025177 7.27277376 0.99874461 0.99933726 0.49323593;
+	-6.27318486 -0.00041091 0.00025174 7.27277395 0.99874478 0.99933735 0.49323592;
+	-6.27318499 -0.00041086 0.00025170 7.27277413 0.99874495 0.99933744 0.49323598;
+	-6.27318512 -0.00041080 0.00025167 7.27277432 0.99874511 0.99933753 0.49323589;
+	-6.27318525 -0.00041075 0.00025164 7.27277450 0.99874528 0.99933762 0.49323587;
+	-6.27318538 -0.00041069 0.00025160 7.27277469 0.99874545 0.99933770 0.49323605;
+	-6.27318551 -0.00041064 0.00025157 7.27277487 0.99874561 0.99933779 0.49323594;
+	-6.27318564 -0.00041058 0.00025154 7.27277506 0.99874578 0.99933788 0.49323599;
+	-6.27318577 -0.00041053 0.00025150 7.27277524 0.99874595 0.99933797 0.49323604;
+	-6.27318590 -0.00041048 0.00025147 7.27277543 0.99874611 0.99933806 0.49323602;
+	-6.27318603 -0.00041042 0.00025144 7.27277561 0.99874628 0.99933814 0.49323601;
+	-6.27318616 -0.00041037 0.00025140 7.27277580 0.99874645 0.99933823 0.49323601;
+	-6.27318629 -0.00041031 0.00025137 7.27277598 0.99874661 0.99933832 0.49323608;
+	-6.27318642 -0.00041026 0.00025134 7.27277616 0.99874678 0.99933841 0.49323616;
+	-6.27318655 -0.00041020 0.00025130 7.27277635 0.99874694 0.99933849 0.49323617;
+	-6.27318668 -0.00041015 0.00025127 7.27277653 0.99874711 0.99933858 0.49323615;
+	-6.27318681 -0.00041009 0.00025124 7.27277672 0.99874728 0.99933867 0.49323614;
+	-6.27318694 -0.00041004 0.00025120 7.27277690 0.99874744 0.99933876 0.49323615;
+	-6.27318707 -0.00040999 0.00025117 7.27277709 0.99874761 0.99933884 0.49323610;
+	-6.27318720 -0.00040993 0.00025114 7.27277727 0.99874777 0.99933893 0.49323628;
+	-6.27318733 -0.00040988 0.00025110 7.27277746 0.99874794 0.99933902 0.49323634;
+	-6.27318746 -0.00040982 0.00025107 7.27277764 0.99874811 0.99933911 0.49323627;
+	-6.27318759 -0.00040977 0.00025104 7.27277782 0.99874827 0.99933919 0.49323622;
+	-6.27318772 -0.00040971 0.00025100 7.27277801 0.99874844 0.99933928 0.49323631;
+	-6.27318785 -0.00040966 0.00025097 7.27277819 0.99874860 0.99933937 0.49323628;
+	-6.27318798 -0.00040961 0.00025094 7.27277838 0.99874877 0.99933946 0.49323627;
+	-6.27318811 -0.00040955 0.00025090 7.27277856 0.99874893 0.99933954 0.49323637;
+	-6.27318824 -0.00040950 0.00025087 7.27277874 0.99874910 0.99933963 0.49323632;
+	-6.27318837 -0.00040944 0.00025084 7.27277893 0.99874927 0.99933972 0.49323640;
+	-6.27318850 -0.00040939 0.00025080 7.27277911 0.99874943 0.99933981 0.49323651;
+	-6.27318863 -0.00040934 0.00025077 7.27277929 0.99874960 0.99933989 0.49323644;
+	-6.27318876 -0.00040928 0.00025074 7.27277948 0.99874976 0.99933998 0.49323637;
+	-6.27318889 -0.00040923 0.00025070 7.27277966 0.99874993 0.99934007 0.49323647;
+	-6.27318902 -0.00040917 0.00025067 7.27277985 0.99875009 0.99934016 0.49323644;
+	-6.27318915 -0.00040912 0.00025064 7.27278003 0.99875026 0.99934024 0.49323643;
+	-6.27318928 -0.00040906 0.00025060 7.27278021 0.99875042 0.99934033 0.49323648;
+	-6.27318941 -0.00040901 0.00025057 7.27278040 0.99875059 0.99934042 0.49323655;
+	-6.27318954 -0.00040896 0.00025054 7.27278058 0.99875075 0.99934050 0.49323657;
+	-6.27318967 -0.00040890 0.00025051 7.27278076 0.99875092 0.99934059 0.49323664;
+	-6.27318979 -0.00040885 0.00025047 7.27278095 0.99875108 0.99934068 0.49323657;
+	-6.27318992 -0.00040879 0.00025044 7.27278113 0.99875125 0.99934077 0.49323666;
+	-6.27319005 -0.00040874 0.00025041 7.27278131 0.99875141 0.99934085 0.49323663;
+	-6.27319018 -0.00040869 0.00025037 7.27278150 0.99875158 0.99934094 0.49323672;
+	-6.27319031 -0.00040863 0.00025034 7.27278168 0.99875174 0.99934103 0.49323665;
+	-6.27319044 -0.00040858 0.00025031 7.27278186 0.99875191 0.99934111 0.49323670;
+	-6.27319057 -0.00040852 0.00025027 7.27278204 0.99875207 0.99934120 0.49323671;
+	-6.27319070 -0.00040847 0.00025024 7.27278223 0.99875224 0.99934129 0.49323673;
+	-6.27319083 -0.00040842 0.00025021 7.27278241 0.99875240 0.99934137 0.49323684;
+	-6.27319096 -0.00040836 0.00025017 7.27278259 0.99875257 0.99934146 0.49323687;
+	-6.27319109 -0.00040831 0.00025014 7.27278278 0.99875273 0.99934155 0.49323685;
+	-6.27319121 -0.00040826 0.00025011 7.27278296 0.99875290 0.99934164 0.49323688;
+	-6.27319134 -0.00040820 0.00025008 7.27278314 0.99875306 0.99934172 0.49323675;
+	-6.27319147 -0.00040815 0.00025004 7.27278332 0.99875322 0.99934181 0.49323678;
+	-6.27319160 -0.00040809 0.00025001 7.27278351 0.99875339 0.99934190 0.49323687;
+	-6.27319173 -0.00040804 0.00024998 7.27278369 0.99875355 0.99934198 0.49323686;
+	-6.27319186 -0.00040799 0.00024994 7.27278387 0.99875372 0.99934207 0.49323698;
+	-6.27319199 -0.00040793 0.00024991 7.27278405 0.99875388 0.99934216 0.49323692;
+	-6.27319212 -0.00040788 0.00024988 7.27278424 0.99875405 0.99934224 0.49323708;
+	-6.27319224 -0.00040783 0.00024985 7.27278442 0.99875421 0.99934233 0.49323704;
+	-6.27319237 -0.00040777 0.00024981 7.27278460 0.99875437 0.99934242 0.49323700;
+	-6.27319250 -0.00040772 0.00024978 7.27278478 0.99875454 0.99934250 0.49323693;
+	-6.27319263 -0.00040766 0.00024975 7.27278497 0.99875470 0.99934259 0.49323702;
+	-6.27319276 -0.00040761 0.00024971 7.27278515 0.99875487 0.99934268 0.49323716;
+	-6.27319289 -0.00040756 0.00024968 7.27278533 0.99875503 0.99934276 0.49323703;
+	-6.27319302 -0.00040750 0.00024965 7.27278551 0.99875519 0.99934285 0.49323706;
+	-6.27319314 -0.00040745 0.00024961 7.27278569 0.99875536 0.99934294 0.49323706;
+	-6.27319327 -0.00040740 0.00024958 7.27278588 0.99875552 0.99934302 0.49323714;
+	-6.27319340 -0.00040734 0.00024955 7.27278606 0.99875569 0.99934311 0.49323706;
+	-6.27319353 -0.00040729 0.00024952 7.27278624 0.99875585 0.99934320 0.49323708;
+	-6.27319366 -0.00040724 0.00024948 7.27278642 0.99875601 0.99934328 0.49323729;
+	-6.27319379 -0.00040718 0.00024945 7.27278660 0.99875618 0.99934337 0.49323724;
+	-6.27319391 -0.00040713 0.00024942 7.27278679 0.99875634 0.99934345 0.49323721;
+	-6.27319404 -0.00040707 0.00024938 7.27278697 0.99875650 0.99934354 0.49323728;
+	-6.27319417 -0.00040702 0.00024935 7.27278715 0.99875667 0.99934363 0.49323732;
+	-6.27319430 -0.00040697 0.00024932 7.27278733 0.99875683 0.99934371 0.49323735;
+	-6.27319443 -0.00040691 0.00024929 7.27278751 0.99875700 0.99934380 0.49323736;
+	-6.27319455 -0.00040686 0.00024925 7.27278769 0.99875716 0.99934389 0.49323725;
+	-6.27319468 -0.00040681 0.00024922 7.27278788 0.99875732 0.99934397 0.49323738;
+	-6.27319481 -0.00040675 0.00024919 7.27278806 0.99875749 0.99934406 0.49323735;
+	-6.27319494 -0.00040670 0.00024916 7.27278824 0.99875765 0.99934414 0.49323731;
+	-6.27319507 -0.00040665 0.00024912 7.27278842 0.99875781 0.99934423 0.49323743;
+	-6.27319519 -0.00040659 0.00024909 7.27278860 0.99875798 0.99934432 0.49323750;
+	-6.27319532 -0.00040654 0.00024906 7.27278878 0.99875814 0.99934440 0.49323738;
+	-6.27319545 -0.00040649 0.00024902 7.27278896 0.99875830 0.99934449 0.49323751;
+	-6.27319558 -0.00040643 0.00024899 7.27278914 0.99875846 0.99934457 0.49323752;
+	-6.27319571 -0.00040638 0.00024896 7.27278933 0.99875863 0.99934466 0.49323741;
+	-6.27319583 -0.00040633 0.00024893 7.27278951 0.99875879 0.99934475 0.49323749;
+	-6.27319596 -0.00040627 0.00024889 7.27278969 0.99875895 0.99934483 0.49323755;
+	-6.27319609 -0.00040622 0.00024886 7.27278987 0.99875912 0.99934492 0.49323762;
+	-6.27319622 -0.00040617 0.00024883 7.27279005 0.99875928 0.99934501 0.49323759;
+	-6.27319634 -0.00040611 0.00024880 7.27279023 0.99875944 0.99934509 0.49323760;
+	-6.27319647 -0.00040606 0.00024876 7.27279041 0.99875960 0.99934518 0.49323757;
+	-6.27319660 -0.00040601 0.00024873 7.27279059 0.99875977 0.99934526 0.49323761;
+	-6.27319673 -0.00040595 0.00024870 7.27279077 0.99875993 0.99934535 0.49323762;
+	-6.27319685 -0.00040590 0.00024867 7.27279095 0.99876009 0.99934543 0.49323771;
+	-6.27319698 -0.00040585 0.00024863 7.27279113 0.99876026 0.99934552 0.49323775;
+	-6.27319711 -0.00040579 0.00024860 7.27279131 0.99876042 0.99934561 0.49323777;
+	-6.27319724 -0.00040574 0.00024857 7.27279149 0.99876058 0.99934569 0.49323761;
+	-6.27319736 -0.00040569 0.00024853 7.27279168 0.99876074 0.99934578 0.49323772;
+	-6.27319749 -0.00040563 0.00024850 7.27279186 0.99876091 0.99934586 0.49323767;
+	-6.27319762 -0.00040558 0.00024847 7.27279204 0.99876107 0.99934595 0.49323779;
+	-6.27319774 -0.00040553 0.00024844 7.27279222 0.99876123 0.99934603 0.49323782;
+	-6.27319787 -0.00040547 0.00024840 7.27279240 0.99876139 0.99934612 0.49323776;
+	-6.27319800 -0.00040542 0.00024837 7.27279258 0.99876156 0.99934621 0.49323782;
+	-6.27319813 -0.00040537 0.00024834 7.27279276 0.99876172 0.99934629 0.49323787;
+	-6.27319825 -0.00040532 0.00024831 7.27279294 0.99876188 0.99934638 0.49323783;
+	-6.27319838 -0.00040526 0.00024827 7.27279312 0.99876204 0.99934646 0.49323795;
+	-6.27319851 -0.00040521 0.00024824 7.27279330 0.99876220 0.99934655 0.49323788;
+	-6.27319863 -0.00040516 0.00024821 7.27279348 0.99876237 0.99934663 0.49323798;
+	-6.27319876 -0.00040510 0.00024818 7.27279366 0.99876253 0.99934672 0.49323799;
+	-6.27319889 -0.00040505 0.00024814 7.27279384 0.99876269 0.99934681 0.49323794;
+	-6.27319901 -0.00040500 0.00024811 7.27279402 0.99876285 0.99934689 0.49323812;
+	-6.27319914 -0.00040494 0.00024808 7.27279420 0.99876301 0.99934698 0.49323800;
+	-6.27319927 -0.00040489 0.00024805 7.27279438 0.99876318 0.99934706 0.49323799;
+	-6.27319939 -0.00040484 0.00024801 7.27279456 0.99876334 0.99934715 0.49323807;
+	-6.27319952 -0.00040479 0.00024798 7.27279474 0.99876350 0.99934723 0.49323804;
+	-6.27319965 -0.00040473 0.00024795 7.27279492 0.99876366 0.99934732 0.49323807;
+	-6.27319977 -0.00040468 0.00024792 7.27279510 0.99876382 0.99934740 0.49323796;
+	-6.27319990 -0.00040463 0.00024788 7.27279527 0.99876398 0.99934749 0.49323820;
+	-6.27320003 -0.00040457 0.00024785 7.27279545 0.99876415 0.99934757 0.49323815;
+	-6.27320015 -0.00040452 0.00024782 7.27279563 0.99876431 0.99934766 0.49323813;
+	-6.27320028 -0.00040447 0.00024779 7.27279581 0.99876447 0.99934774 0.49323819;
+	-6.27320041 -0.00040442 0.00024776 7.27279599 0.99876463 0.99934783 0.49323817;
+	-6.27320053 -0.00040436 0.00024772 7.27279617 0.99876479 0.99934791 0.49323809;
+	-6.27320066 -0.00040431 0.00024769 7.27279635 0.99876495 0.99934800 0.49323823;
+	-6.27320079 -0.00040426 0.00024766 7.27279653 0.99876511 0.99934809 0.49323818;
+	-6.27320091 -0.00040420 0.00024763 7.27279671 0.99876528 0.99934817 0.49323822;
+	-6.27320104 -0.00040415 0.00024759 7.27279689 0.99876544 0.99934826 0.49323828;
+	-6.27320117 -0.00040410 0.00024756 7.27279707 0.99876560 0.99934834 0.49323852;
+	-6.27320129 -0.00040405 0.00024753 7.27279725 0.99876576 0.99934843 0.49323826;
+	-6.27320142 -0.00040399 0.00024750 7.27279743 0.99876592 0.99934851 0.49323833;
+	-6.27320154 -0.00040394 0.00024746 7.27279760 0.99876608 0.99934860 0.49323832;
+	-6.27320167 -0.00040389 0.00024743 7.27279778 0.99876624 0.99934868 0.49323839;
+	-6.27320180 -0.00040383 0.00024740 7.27279796 0.99876640 0.99934877 0.49323831;
+	-6.27320192 -0.00040378 0.00024737 7.27279814 0.99876656 0.99934885 0.49323847;
+	-6.27320205 -0.00040373 0.00024733 7.27279832 0.99876673 0.99934894 0.49323846;
+	-6.27320217 -0.00040368 0.00024730 7.27279850 0.99876689 0.99934902 0.49323853;
+	-6.27320230 -0.00040362 0.00024727 7.27279868 0.99876705 0.99934911 0.49323849;
+	-6.27320243 -0.00040357 0.00024724 7.27279886 0.99876721 0.99934919 0.49323847;
+	-6.27320255 -0.00040352 0.00024721 7.27279903 0.99876737 0.99934928 0.49323843;
+	-6.27320268 -0.00040347 0.00024717 7.27279921 0.99876753 0.99934936 0.49323854;
+	-6.27320280 -0.00040341 0.00024714 7.27279939 0.99876769 0.99934944 0.49323862;
+	-6.27320293 -0.00040336 0.00024711 7.27279957 0.99876785 0.99934953 0.49323861;
+	-6.27320306 -0.00040331 0.00024708 7.27279975 0.99876801 0.99934961 0.49323862;
+	-6.27320318 -0.00040326 0.00024704 7.27279993 0.99876817 0.99934970 0.49323859;
+	-6.27320331 -0.00040320 0.00024701 7.27280010 0.99876833 0.99934978 0.49323864;
+	-6.27320343 -0.00040315 0.00024698 7.27280028 0.99876849 0.99934987 0.49323872;
+	-6.27320356 -0.00040310 0.00024695 7.27280046 0.99876865 0.99934995 0.49323853;
+	-6.27320368 -0.00040305 0.00024692 7.27280064 0.99876881 0.99935004 0.49323874;
+	-6.27320381 -0.00040299 0.00024688 7.27280082 0.99876897 0.99935012 0.49323866;
+	-6.27320394 -0.00040294 0.00024685 7.27280099 0.99876913 0.99935021 0.49323878;
+	-6.27320406 -0.00040289 0.00024682 7.27280117 0.99876929 0.99935029 0.49323872;
+	-6.27320419 -0.00040284 0.00024679 7.27280135 0.99876945 0.99935038 0.49323872;
+	-6.27320431 -0.00040278 0.00024676 7.27280153 0.99876961 0.99935046 0.49323876;
+	-6.27320444 -0.00040273 0.00024672 7.27280171 0.99876978 0.99935055 0.49323884;
+	-6.27320456 -0.00040268 0.00024669 7.27280188 0.99876994 0.99935063 0.49323875;
+	-6.27320469 -0.00040263 0.00024666 7.27280206 0.99877010 0.99935071 0.49323881;
+	-6.27320481 -0.00040257 0.00024663 7.27280224 0.99877026 0.99935080 0.49323883;
+	-6.27320494 -0.00040252 0.00024659 7.27280242 0.99877042 0.99935088 0.49323893;
+	-6.27320506 -0.00040247 0.00024656 7.27280259 0.99877058 0.99935097 0.49323897;
+	-6.27320519 -0.00040242 0.00024653 7.27280277 0.99877073 0.99935105 0.49323888;
+	-6.27320532 -0.00040237 0.00024650 7.27280295 0.99877089 0.99935114 0.49323894;
+	-6.27320544 -0.00040231 0.00024647 7.27280313 0.99877105 0.99935122 0.49323891;
+	-6.27320557 -0.00040226 0.00024643 7.27280330 0.99877121 0.99935130 0.49323883;
+	-6.27320569 -0.00040221 0.00024640 7.27280348 0.99877137 0.99935139 0.49323900;
+	-6.27320582 -0.00040216 0.00024637 7.27280366 0.99877153 0.99935147 0.49323894;
+	-6.27320594 -0.00040210 0.00024634 7.27280384 0.99877169 0.99935156 0.49323913;
+	-6.27320607 -0.00040205 0.00024631 7.27280401 0.99877185 0.99935164 0.49323892;
+	-6.27320619 -0.00040200 0.00024627 7.27280419 0.99877201 0.99935173 0.49323905;
+	-6.27320632 -0.00040195 0.00024624 7.27280437 0.99877217 0.99935181 0.49323908;
+	-6.27320644 -0.00040190 0.00024621 7.27280455 0.99877233 0.99935189 0.49323912;
+	-6.27320657 -0.00040184 0.00024618 7.27280472 0.99877249 0.99935198 0.49323907;
+	-6.27320669 -0.00040179 0.00024615 7.27280490 0.99877265 0.99935206 0.49323901;
+	-6.27320682 -0.00040174 0.00024611 7.27280508 0.99877281 0.99935215 0.49323923;
+	-6.27320694 -0.00040169 0.00024608 7.27280525 0.99877297 0.99935223 0.49323914;
+	-6.27320706 -0.00040163 0.00024605 7.27280543 0.99877313 0.99935231 0.49323921;
+	-6.27320719 -0.00040158 0.00024602 7.27280561 0.99877329 0.99935240 0.49323926;
+	-6.27320731 -0.00040153 0.00024599 7.27280578 0.99877345 0.99935248 0.49323926;
+	-6.27320744 -0.00040148 0.00024595 7.27280596 0.99877361 0.99935257 0.49323918;
+	-6.27320756 -0.00040143 0.00024592 7.27280614 0.99877376 0.99935265 0.49323936;
+	-6.27320769 -0.00040137 0.00024589 7.27280631 0.99877392 0.99935273 0.49323929;
+	-6.27320781 -0.00040132 0.00024586 7.27280649 0.99877408 0.99935282 0.49323934;
+	-6.27320794 -0.00040127 0.00024583 7.27280667 0.99877424 0.99935290 0.49323932;
+	-6.27320806 -0.00040122 0.00024580 7.27280684 0.99877440 0.99935299 0.49323931;
+	-6.27320819 -0.00040117 0.00024576 7.27280702 0.99877456 0.99935307 0.49323926;
+	-6.27320831 -0.00040111 0.00024573 7.27280720 0.99877472 0.99935315 0.49323938;
+	-6.27320843 -0.00040106 0.00024570 7.27280737 0.99877488 0.99935324 0.49323939;
+	-6.27320856 -0.00040101 0.00024567 7.27280755 0.99877504 0.99935332 0.49323934;
+	-6.27320868 -0.00040096 0.00024564 7.27280773 0.99877519 0.99935341 0.49323939;
+	-6.27320881 -0.00040091 0.00024560 7.27280790 0.99877535 0.99935349 0.49323943;
+	-6.27320893 -0.00040085 0.00024557 7.27280808 0.99877551 0.99935357 0.49323942;
+	-6.27320906 -0.00040080 0.00024554 7.27280825 0.99877567 0.99935366 0.49323947;
+	-6.27320918 -0.00040075 0.00024551 7.27280843 0.99877583 0.99935374 0.49323951;
+	-6.27320930 -0.00040070 0.00024548 7.27280861 0.99877599 0.99935382 0.49323953;
+	-6.27320943 -0.00040065 0.00024545 7.27280878 0.99877615 0.99935391 0.49323955;
+	-6.27320955 -0.00040059 0.00024541 7.27280896 0.99877630 0.99935399 0.49323962;
+	-6.27320968 -0.00040054 0.00024538 7.27280913 0.99877646 0.99935408 0.49323956;
+	-6.27320980 -0.00040049 0.00024535 7.27280931 0.99877662 0.99935416 0.49323962;
+	-6.27320993 -0.00040044 0.00024532 7.27280949 0.99877678 0.99935424 0.49323958;
+	-6.27321005 -0.00040039 0.00024529 7.27280966 0.99877694 0.99935433 0.49323965;
+	-6.27321017 -0.00040034 0.00024525 7.27280984 0.99877710 0.99935441 0.49323969;
+	-6.27321030 -0.00040028 0.00024522 7.27281001 0.99877725 0.99935449 0.49323976;
+	-6.27321042 -0.00040023 0.00024519 7.27281019 0.99877741 0.99935458 0.49323970;
+	-6.27321054 -0.00040018 0.00024516 7.27281036 0.99877757 0.99935466 0.49323974;
+	-6.27321067 -0.00040013 0.00024513 7.27281054 0.99877773 0.99935474 0.49323974;
+	-6.27321079 -0.00040008 0.00024510 7.27281072 0.99877789 0.99935483 0.49323966;
+	-6.27321092 -0.00040003 0.00024506 7.27281089 0.99877804 0.99935491 0.49323980;
+	-6.27321104 -0.00039997 0.00024503 7.27281107 0.99877820 0.99935499 0.49323982;
+	-6.27321116 -0.00039992 0.00024500 7.27281124 0.99877836 0.99935508 0.49323984;
+	-6.27321129 -0.00039987 0.00024497 7.27281142 0.99877852 0.99935516 0.49323979;
+	-6.27321141 -0.00039982 0.00024494 7.27281159 0.99877868 0.99935524 0.49323984;
+	-6.27321153 -0.00039977 0.00024491 7.27281177 0.99877883 0.99935533 0.49323987;
+	-6.27321166 -0.00039972 0.00024487 7.27281194 0.99877899 0.99935541 0.49323994;
+	-6.27321178 -0.00039966 0.00024484 7.27281212 0.99877915 0.99935549 0.49323989;
+	-6.27321191 -0.00039961 0.00024481 7.27281229 0.99877931 0.99935558 0.49323986;
+	-6.27321203 -0.00039956 0.00024478 7.27281247 0.99877946 0.99935566 0.49323995;
+	-6.27321215 -0.00039951 0.00024475 7.27281264 0.99877962 0.99935574 0.49323997;
+	-6.27321228 -0.00039946 0.00024472 7.27281282 0.99877978 0.99935583 0.49323996;
+	-6.27321240 -0.00039941 0.00024468 7.27281299 0.99877994 0.99935591 0.49323998;
+	-6.27321252 -0.00039935 0.00024465 7.27281317 0.99878009 0.99935599 0.49323996;
+	-6.27321265 -0.00039930 0.00024462 7.27281334 0.99878025 0.99935608 0.49324002;
+	-6.27321277 -0.00039925 0.00024459 7.27281352 0.99878041 0.99935616 0.49323998;
+	-6.27321289 -0.00039920 0.00024456 7.27281369 0.99878057 0.99935624 0.49324001;
+	-6.27321302 -0.00039915 0.00024453 7.27281387 0.99878072 0.99935632 0.49324014;
+	-6.27321314 -0.00039910 0.00024450 7.27281404 0.99878088 0.99935641 0.49324019;
+	-6.27321326 -0.00039905 0.00024446 7.27281422 0.99878104 0.99935649 0.49324012;
+	-6.27321338 -0.00039899 0.00024443 7.27281439 0.99878120 0.99935657 0.49324003;
+	-6.27321351 -0.00039894 0.00024440 7.27281457 0.99878135 0.99935666 0.49324013;
+	-6.27321363 -0.00039889 0.00024437 7.27281474 0.99878151 0.99935674 0.49324013;
+	-6.27321375 -0.00039884 0.00024434 7.27281491 0.99878167 0.99935682 0.49324017;
+	-6.27321388 -0.00039879 0.00024431 7.27281509 0.99878182 0.99935690 0.49324022;
+	-6.27321400 -0.00039874 0.00024427 7.27281526 0.99878198 0.99935699 0.49324015;
+	-6.27321412 -0.00039869 0.00024424 7.27281544 0.99878214 0.99935707 0.49324036;
+	-6.27321425 -0.00039863 0.00024421 7.27281561 0.99878229 0.99935715 0.49324026;
+	-6.27321437 -0.00039858 0.00024418 7.27281579 0.99878245 0.99935724 0.49324022;
+	-6.27321449 -0.00039853 0.00024415 7.27281596 0.99878261 0.99935732 0.49324031;
+	-6.27321461 -0.00039848 0.00024412 7.27281613 0.99878277 0.99935740 0.49324028;
+	-6.27321474 -0.00039843 0.00024409 7.27281631 0.99878292 0.99935748 0.49324030;
+	-6.27321486 -0.00039838 0.00024405 7.27281648 0.99878308 0.99935757 0.49324023;
+	-6.27321498 -0.00039833 0.00024402 7.27281666 0.99878324 0.99935765 0.49324037;
+	-6.27321511 -0.00039828 0.00024399 7.27281683 0.99878339 0.99935773 0.49324036;
+	-6.27321523 -0.00039822 0.00024396 7.27281700 0.99878355 0.99935782 0.49324044;
+	-6.27321535 -0.00039817 0.00024393 7.27281718 0.99878370 0.99935790 0.49324039;
+	-6.27321547 -0.00039812 0.00024390 7.27281735 0.99878386 0.99935798 0.49324042;
+	-6.27321560 -0.00039807 0.00024387 7.27281752 0.99878402 0.99935806 0.49324055;
+	-6.27321572 -0.00039802 0.00024383 7.27281770 0.99878417 0.99935815 0.49324042;
+	-6.27321584 -0.00039797 0.00024380 7.27281787 0.99878433 0.99935823 0.49324044;
+	-6.27321596 -0.00039792 0.00024377 7.27281805 0.99878449 0.99935831 0.49324041;
+	-6.27321609 -0.00039787 0.00024374 7.27281822 0.99878464 0.99935839 0.49324060;
+	-6.27321621 -0.00039781 0.00024371 7.27281839 0.99878480 0.99935848 0.49324044;
+	-6.27321633 -0.00039776 0.00024368 7.27281857 0.99878496 0.99935856 0.49324054;
+	-6.27321645 -0.00039771 0.00024365 7.27281874 0.99878511 0.99935864 0.49324046;
+	-6.27321658 -0.00039766 0.00024362 7.27281891 0.99878527 0.99935872 0.49324052;
+	-6.27321670 -0.00039761 0.00024358 7.27281909 0.99878542 0.99935881 0.49324063;
+	-6.27321682 -0.00039756 0.00024355 7.27281926 0.99878558 0.99935889 0.49324081;
+	-6.27321694 -0.00039751 0.00024352 7.27281943 0.99878574 0.99935897 0.49324067;
+	-6.27321706 -0.00039746 0.00024349 7.27281961 0.99878589 0.99935905 0.49324080;
+	-6.27321719 -0.00039741 0.00024346 7.27281978 0.99878605 0.99935913 0.49324070;
+	-6.27321731 -0.00039736 0.00024343 7.27281995 0.99878620 0.99935922 0.49324061;
+	-6.27321743 -0.00039730 0.00024340 7.27282013 0.99878636 0.99935930 0.49324072;
+	-6.27321755 -0.00039725 0.00024337 7.27282030 0.99878652 0.99935938 0.49324071;
+	-6.27321767 -0.00039720 0.00024333 7.27282047 0.99878667 0.99935946 0.49324076;
+	-6.27321780 -0.00039715 0.00024330 7.27282064 0.99878683 0.99935955 0.49324084;
+	-6.27321792 -0.00039710 0.00024327 7.27282082 0.99878698 0.99935963 0.49324086;
+	-6.27321804 -0.00039705 0.00024324 7.27282099 0.99878714 0.99935971 0.49324068;
+	-6.27321816 -0.00039700 0.00024321 7.27282116 0.99878729 0.99935979 0.49324078;
+	-6.27321828 -0.00039695 0.00024318 7.27282134 0.99878745 0.99935987 0.49324088;
+	-6.27321841 -0.00039690 0.00024315 7.27282151 0.99878760 0.99935996 0.49324077;
+	-6.27321853 -0.00039685 0.00024312 7.27282168 0.99878776 0.99936004 0.49324091;
+	-6.27321865 -0.00039680 0.00024308 7.27282185 0.99878792 0.99936012 0.49324089;
+	-6.27321877 -0.00039674 0.00024305 7.27282203 0.99878807 0.99936020 0.49324098;
+	-6.27321889 -0.00039669 0.00024302 7.27282220 0.99878823 0.99936028 0.49324089;
+	-6.27321901 -0.00039664 0.00024299 7.27282237 0.99878838 0.99936037 0.49324096;
+	-6.27321914 -0.00039659 0.00024296 7.27282254 0.99878854 0.99936045 0.49324110;
+	-6.27321926 -0.00039654 0.00024293 7.27282272 0.99878869 0.99936053 0.49324104;
+	-6.27321938 -0.00039649 0.00024290 7.27282289 0.99878885 0.99936061 0.49324115;
+	-6.27321950 -0.00039644 0.00024287 7.27282306 0.99878900 0.99936069 0.49324105;
+	-6.27321962 -0.00039639 0.00024284 7.27282323 0.99878916 0.99936078 0.49324108;
+	-6.27321974 -0.00039634 0.00024280 7.27282341 0.99878931 0.99936086 0.49324101;
+	-6.27321987 -0.00039629 0.00024277 7.27282358 0.99878947 0.99936094 0.49324102;
+	-6.27321999 -0.00039624 0.00024274 7.27282375 0.99878962 0.99936102 0.49324113;
+	-6.27322011 -0.00039619 0.00024271 7.27282392 0.99878978 0.99936110 0.49324108;
+	-6.27322023 -0.00039613 0.00024268 7.27282409 0.99878993 0.99936119 0.49324117;
+	-6.27322035 -0.00039608 0.00024265 7.27282427 0.99879009 0.99936127 0.49324125;
+	-6.27322047 -0.00039603 0.00024262 7.27282444 0.99879024 0.99936135 0.49324106;
+	-6.27322059 -0.00039598 0.00024259 7.27282461 0.99879040 0.99936143 0.49324119;
+	-6.27322071 -0.00039593 0.00024256 7.27282478 0.99879055 0.99936151 0.49324110;
+	-6.27322084 -0.00039588 0.00024252 7.27282495 0.99879071 0.99936159 0.49324126;
+	-6.27322096 -0.00039583 0.00024249 7.27282513 0.99879086 0.99936168 0.49324122;
+	-6.27322108 -0.00039578 0.00024246 7.27282530 0.99879102 0.99936176 0.49324129;
+	-6.27322120 -0.00039573 0.00024243 7.27282547 0.99879117 0.99936184 0.49324129;
+	-6.27322132 -0.00039568 0.00024240 7.27282564 0.99879133 0.99936192 0.49324124;
+	-6.27322144 -0.00039563 0.00024237 7.27282581 0.99879148 0.99936200 0.49324135;
+	-6.27322156 -0.00039558 0.00024234 7.27282598 0.99879163 0.99936208 0.49324138;
+	-6.27322168 -0.00039553 0.00024231 7.27282616 0.99879179 0.99936216 0.49324133;
+	-6.27322180 -0.00039548 0.00024228 7.27282633 0.99879194 0.99936225 0.49324140;
+	-6.27322193 -0.00039543 0.00024225 7.27282650 0.99879210 0.99936233 0.49324130;
+	-6.27322205 -0.00039538 0.00024221 7.27282667 0.99879225 0.99936241 0.49324149;
+	-6.27322217 -0.00039533 0.00024218 7.27282684 0.99879241 0.99936249 0.49324143;
+	-6.27322229 -0.00039528 0.00024215 7.27282701 0.99879256 0.99936257 0.49324140;
+	-6.27322241 -0.00039522 0.00024212 7.27282718 0.99879271 0.99936265 0.49324158;
+	-6.27322253 -0.00039517 0.00024209 7.27282736 0.99879287 0.99936273 0.49324147;
+	-6.27322265 -0.00039512 0.00024206 7.27282753 0.99879302 0.99936282 0.49324156;
+	-6.27322277 -0.00039507 0.00024203 7.27282770 0.99879318 0.99936290 0.49324153;
+	-6.27322289 -0.00039502 0.00024200 7.27282787 0.99879333 0.99936298 0.49324143;
+	-6.27322301 -0.00039497 0.00024197 7.27282804 0.99879349 0.99936306 0.49324134;
+	-6.27322313 -0.00039492 0.00024194 7.27282821 0.99879364 0.99936314 0.49324161;
+	-6.27322325 -0.00039487 0.00024191 7.27282838 0.99879379 0.99936322 0.49324161;
+	-6.27322337 -0.00039482 0.00024187 7.27282855 0.99879395 0.99936330 0.49324164;
+	-6.27322349 -0.00039477 0.00024184 7.27282872 0.99879410 0.99936339 0.49324176;
+	-6.27322362 -0.00039472 0.00024181 7.27282889 0.99879425 0.99936347 0.49324160;
+	-6.27322374 -0.00039467 0.00024178 7.27282907 0.99879441 0.99936355 0.49324157;
+	-6.27322386 -0.00039462 0.00024175 7.27282924 0.99879456 0.99936363 0.49324158;
+	-6.27322398 -0.00039457 0.00024172 7.27282941 0.99879472 0.99936371 0.49324166;
+	-6.27322410 -0.00039452 0.00024169 7.27282958 0.99879487 0.99936379 0.49324172;
+	-6.27322422 -0.00039447 0.00024166 7.27282975 0.99879502 0.99936387 0.49324177;
+	-6.27322434 -0.00039442 0.00024163 7.27282992 0.99879518 0.99936395 0.49324175;
+	-6.27322446 -0.00039437 0.00024160 7.27283009 0.99879533 0.99936403 0.49324173;
+	-6.27322458 -0.00039432 0.00024157 7.27283026 0.99879548 0.99936412 0.49324183;
+	-6.27322470 -0.00039427 0.00024154 7.27283043 0.99879564 0.99936420 0.49324189;
+	-6.27322482 -0.00039422 0.00024150 7.27283060 0.99879579 0.99936428 0.49324183;
+	-6.27322494 -0.00039417 0.00024147 7.27283077 0.99879594 0.99936436 0.49324176;
+	-6.27322506 -0.00039412 0.00024144 7.27283094 0.99879610 0.99936444 0.49324183;
+	-6.27322518 -0.00039407 0.00024141 7.27283111 0.99879625 0.99936452 0.49324186;
+	-6.27322530 -0.00039402 0.00024138 7.27283128 0.99879640 0.99936460 0.49324198;
+	-6.27322542 -0.00039397 0.00024135 7.27283145 0.99879656 0.99936468 0.49324210;
+	-6.27322554 -0.00039392 0.00024132 7.27283162 0.99879671 0.99936476 0.49324198;
+	-6.27322566 -0.00039387 0.00024129 7.27283179 0.99879686 0.99936484 0.49324205;
+	-6.27322578 -0.00039382 0.00024126 7.27283196 0.99879702 0.99936492 0.49324207;
+	-6.27322590 -0.00039377 0.00024123 7.27283213 0.99879717 0.99936501 0.49324191;
+	-6.27322602 -0.00039372 0.00024120 7.27283230 0.99879732 0.99936509 0.49324201;
+	-6.27322614 -0.00039367 0.00024117 7.27283247 0.99879748 0.99936517 0.49324194;
+	-6.27322626 -0.00039362 0.00024114 7.27283264 0.99879763 0.99936525 0.49324211;
+	-6.27322638 -0.00039357 0.00024111 7.27283281 0.99879778 0.99936533 0.49324210;
+	-6.27322650 -0.00039352 0.00024107 7.27283298 0.99879793 0.99936541 0.49324195;
+	-6.27322662 -0.00039347 0.00024104 7.27283315 0.99879809 0.99936549 0.49324205;
+	-6.27322674 -0.00039342 0.00024101 7.27283332 0.99879824 0.99936557 0.49324210;
+	-6.27322686 -0.00039337 0.00024098 7.27283349 0.99879839 0.99936565 0.49324214;
+	-6.27322698 -0.00039332 0.00024095 7.27283366 0.99879855 0.99936573 0.49324202;
+	-6.27322710 -0.00039327 0.00024092 7.27283383 0.99879870 0.99936581 0.49324209;
+	-6.27322722 -0.00039322 0.00024089 7.27283400 0.99879885 0.99936589 0.49324208;
+	-6.27322734 -0.00039317 0.00024086 7.27283417 0.99879900 0.99936597 0.49324207;
+	-6.27322746 -0.00039312 0.00024083 7.27283434 0.99879916 0.99936605 0.49324215;
+	-6.27322757 -0.00039307 0.00024080 7.27283451 0.99879931 0.99936613 0.49324220;
+	-6.27322769 -0.00039302 0.00024077 7.27283468 0.99879946 0.99936621 0.49324229;
+	-6.27322781 -0.00039297 0.00024074 7.27283485 0.99879961 0.99936630 0.49324226;
+	-6.27322793 -0.00039292 0.00024071 7.27283502 0.99879977 0.99936638 0.49324230;
+	-6.27322805 -0.00039287 0.00024068 7.27283519 0.99879992 0.99936646 0.49324236;
+	-6.27322817 -0.00039282 0.00024065 7.27283535 0.99880007 0.99936654 0.49324229;
+	-6.27322829 -0.00039277 0.00024062 7.27283552 0.99880022 0.99936662 0.49324245;
+	-6.27322841 -0.00039272 0.00024059 7.27283569 0.99880038 0.99936670 0.49324230;
+	-6.27322853 -0.00039267 0.00024055 7.27283586 0.99880053 0.99936678 0.49324241;
+	-6.27322865 -0.00039262 0.00024052 7.27283603 0.99880068 0.99936686 0.49324234;
+	-6.27322877 -0.00039257 0.00024049 7.27283620 0.99880083 0.99936694 0.49324231;
+	-6.27322889 -0.00039252 0.00024046 7.27283637 0.99880098 0.99936702 0.49324244;
+	-6.27322901 -0.00039247 0.00024043 7.27283654 0.99880114 0.99936710 0.49324243;
+	-6.27322913 -0.00039242 0.00024040 7.27283671 0.99880129 0.99936718 0.49324251;
+	-6.27322924 -0.00039237 0.00024037 7.27283688 0.99880144 0.99936726 0.49324242;
+	-6.27322936 -0.00039232 0.00024034 7.27283704 0.99880159 0.99936734 0.49324245;
+	-6.27322948 -0.00039227 0.00024031 7.27283721 0.99880174 0.99936742 0.49324248;
+	-6.27322960 -0.00039222 0.00024028 7.27283738 0.99880190 0.99936750 0.49324240;
+	-6.27322972 -0.00039217 0.00024025 7.27283755 0.99880205 0.99936758 0.49324256;
+	-6.27322984 -0.00039212 0.00024022 7.27283772 0.99880220 0.99936766 0.49324270;
+	-6.27322996 -0.00039207 0.00024019 7.27283789 0.99880235 0.99936774 0.49324265;
+	-6.27323008 -0.00039202 0.00024016 7.27283806 0.99880250 0.99936782 0.49324254;
+	-6.27323020 -0.00039197 0.00024013 7.27283822 0.99880265 0.99936790 0.49324268;
+	-6.27323032 -0.00039192 0.00024010 7.27283839 0.99880281 0.99936798 0.49324263;
+	-6.27323043 -0.00039187 0.00024007 7.27283856 0.99880296 0.99936806 0.49324257;
+	-6.27323055 -0.00039182 0.00024004 7.27283873 0.99880311 0.99936814 0.49324271;
+	-6.27323067 -0.00039177 0.00024001 7.27283890 0.99880326 0.99936822 0.49324263;
+	-6.27323079 -0.00039172 0.00023998 7.27283907 0.99880341 0.99936830 0.49324259;
+	-6.27323091 -0.00039167 0.00023995 7.27283923 0.99880356 0.99936838 0.49324272;
+	-6.27323103 -0.00039162 0.00023992 7.27283940 0.99880372 0.99936846 0.49324266;
+	-6.27323115 -0.00039158 0.00023989 7.27283957 0.99880387 0.99936854 0.49324277;
+	-6.27323126 -0.00039153 0.00023985 7.27283974 0.99880402 0.99936862 0.49324283;
+	-6.27323138 -0.00039148 0.00023982 7.27283991 0.99880417 0.99936870 0.49324288;
+	-6.27323150 -0.00039143 0.00023979 7.27284008 0.99880432 0.99936878 0.49324274;
+	-6.27323162 -0.00039138 0.00023976 7.27284024 0.99880447 0.99936886 0.49324289;
+	-6.27323174 -0.00039133 0.00023973 7.27284041 0.99880462 0.99936894 0.49324287;
+	-6.27323186 -0.00039128 0.00023970 7.27284058 0.99880477 0.99936902 0.49324285;
+	-6.27323198 -0.00039123 0.00023967 7.27284075 0.99880493 0.99936910 0.49324283;
+	-6.27323209 -0.00039118 0.00023964 7.27284091 0.99880508 0.99936918 0.49324290;
+	-6.27323221 -0.00039113 0.00023961 7.27284108 0.99880523 0.99936926 0.49324280;
+	-6.27323233 -0.00039108 0.00023958 7.27284125 0.99880538 0.99936934 0.49324296;
+	-6.27323245 -0.00039103 0.00023955 7.27284142 0.99880553 0.99936942 0.49324284;
+	-6.27323257 -0.00039098 0.00023952 7.27284159 0.99880568 0.99936950 0.49324285;
+	-6.27323268 -0.00039093 0.00023949 7.27284175 0.99880583 0.99936958 0.49324302;
+	-6.27323280 -0.00039088 0.00023946 7.27284192 0.99880598 0.99936966 0.49324295;
+	-6.27323292 -0.00039083 0.00023943 7.27284209 0.99880613 0.99936974 0.49324320;
+	-6.27323304 -0.00039078 0.00023940 7.27284226 0.99880628 0.99936982 0.49324315;
+	-6.27323316 -0.00039073 0.00023937 7.27284242 0.99880643 0.99936990 0.49324296;
+	-6.27323328 -0.00039069 0.00023934 7.27284259 0.99880658 0.99936997 0.49324298;
+	-6.27323339 -0.00039064 0.00023931 7.27284276 0.99880674 0.99937005 0.49324310;
+	-6.27323351 -0.00039059 0.00023928 7.27284292 0.99880689 0.99937013 0.49324316;
+	-6.27323363 -0.00039054 0.00023925 7.27284309 0.99880704 0.99937021 0.49324305;
+	-6.27323375 -0.00039049 0.00023922 7.27284326 0.99880719 0.99937029 0.49324317;
+	-6.27323387 -0.00039044 0.00023919 7.27284343 0.99880734 0.99937037 0.49324316;
+	-6.27323398 -0.00039039 0.00023916 7.27284359 0.99880749 0.99937045 0.49324322;
+	-6.27323410 -0.00039034 0.00023913 7.27284376 0.99880764 0.99937053 0.49324310;
+	-6.27323422 -0.00039029 0.00023910 7.27284393 0.99880779 0.99937061 0.49324325;
+	-6.27323434 -0.00039024 0.00023907 7.27284409 0.99880794 0.99937069 0.49324319;
+	-6.27323445 -0.00039019 0.00023904 7.27284426 0.99880809 0.99937077 0.49324326;
+	-6.27323457 -0.00039014 0.00023901 7.27284443 0.99880824 0.99937085 0.49324329;
+	-6.27323469 -0.00039009 0.00023898 7.27284460 0.99880839 0.99937093 0.49324333;
+	-6.27323481 -0.00039005 0.00023895 7.27284476 0.99880854 0.99937101 0.49324318;
+	-6.27323493 -0.00039000 0.00023892 7.27284493 0.99880869 0.99937109 0.49324318;
+	-6.27323504 -0.00038995 0.00023889 7.27284510 0.99880884 0.99937117 0.49324337;
+	-6.27323516 -0.00038990 0.00023886 7.27284526 0.99880899 0.99937124 0.49324337;
+	-6.27323528 -0.00038985 0.00023883 7.27284543 0.99880914 0.99937132 0.49324350;
+	-6.27323540 -0.00038980 0.00023880 7.27284560 0.99880929 0.99937140 0.49324334;
+	-6.27323551 -0.00038975 0.00023877 7.27284576 0.99880944 0.99937148 0.49324341;
+	-6.27323563 -0.00038970 0.00023874 7.27284593 0.99880959 0.99937156 0.49324338;
+	-6.27323575 -0.00038965 0.00023871 7.27284609 0.99880974 0.99937164 0.49324344;
+	-6.27323587 -0.00038960 0.00023868 7.27284626 0.99880989 0.99937172 0.49324362;
+	-6.27323598 -0.00038955 0.00023865 7.27284643 0.99881004 0.99937180 0.49324347;
+	-6.27323610 -0.00038951 0.00023862 7.27284659 0.99881019 0.99937188 0.49324345;
+	-6.27323622 -0.00038946 0.00023859 7.27284676 0.99881034 0.99937196 0.49324353;
+	-6.27323633 -0.00038941 0.00023856 7.27284693 0.99881049 0.99937204 0.49324361;
+	-6.27323645 -0.00038936 0.00023853 7.27284709 0.99881064 0.99937211 0.49324364;
+	-6.27323657 -0.00038931 0.00023850 7.27284726 0.99881079 0.99937219 0.49324360;
+	-6.27323669 -0.00038926 0.00023847 7.27284743 0.99881094 0.99937227 0.49324354;
+	-6.27323680 -0.00038921 0.00023844 7.27284759 0.99881109 0.99937235 0.49324359;
+	-6.27323692 -0.00038916 0.00023841 7.27284776 0.99881124 0.99937243 0.49324355;
+	-6.27323704 -0.00038911 0.00023838 7.27284792 0.99881139 0.99937251 0.49324369;
+	-6.27323715 -0.00038907 0.00023835 7.27284809 0.99881154 0.99937259 0.49324366;
+	-6.27323727 -0.00038902 0.00023832 7.27284826 0.99881169 0.99937267 0.49324363;
+	-6.27323739 -0.00038897 0.00023829 7.27284842 0.99881184 0.99937275 0.49324368;
+	-6.27323751 -0.00038892 0.00023826 7.27284859 0.99881198 0.99937282 0.49324385;
+	-6.27323762 -0.00038887 0.00023823 7.27284875 0.99881213 0.99937290 0.49324375;
+	-6.27323774 -0.00038882 0.00023820 7.27284892 0.99881228 0.99937298 0.49324381;
+	-6.27323786 -0.00038877 0.00023817 7.27284908 0.99881243 0.99937306 0.49324383;
+	-6.27323797 -0.00038872 0.00023814 7.27284925 0.99881258 0.99937314 0.49324389;
+	-6.27323809 -0.00038867 0.00023811 7.27284942 0.99881273 0.99937322 0.49324387;
+	-6.27323821 -0.00038863 0.00023808 7.27284958 0.99881288 0.99937330 0.49324385;
+	-6.27323832 -0.00038858 0.00023805 7.27284975 0.99881303 0.99937338 0.49324378;
+	-6.27323844 -0.00038853 0.00023802 7.27284991 0.99881318 0.99937345 0.49324377;
+	-6.27323856 -0.00038848 0.00023799 7.27285008 0.99881333 0.99937353 0.49324388;
+	-6.27323867 -0.00038843 0.00023796 7.27285024 0.99881348 0.99937361 0.49324392;
+	-6.27323879 -0.00038838 0.00023793 7.27285041 0.99881362 0.99937369 0.49324396;
+	-6.27323891 -0.00038833 0.00023790 7.27285057 0.99881377 0.99937377 0.49324387;
+	-6.27323902 -0.00038828 0.00023787 7.27285074 0.99881392 0.99937385 0.49324395;
+	-6.27323914 -0.00038824 0.00023784 7.27285090 0.99881407 0.99937393 0.49324401;
+	-6.27323926 -0.00038819 0.00023781 7.27285107 0.99881422 0.99937400 0.49324397;
+	-6.27323937 -0.00038814 0.00023778 7.27285124 0.99881437 0.99937408 0.49324409;
+	-6.27323949 -0.00038809 0.00023775 7.27285140 0.99881452 0.99937416 0.49324390;
+	-6.27323961 -0.00038804 0.00023772 7.27285157 0.99881467 0.99937424 0.49324412;
+	-6.27323972 -0.00038799 0.00023769 7.27285173 0.99881481 0.99937432 0.49324405;
+	-6.27323984 -0.00038794 0.00023766 7.27285190 0.99881496 0.99937440 0.49324413;
+	-6.27323996 -0.00038789 0.00023763 7.27285206 0.99881511 0.99937448 0.49324398;
+	-6.27324007 -0.00038785 0.00023760 7.27285223 0.99881526 0.99937455 0.49324408;
+	-6.27324019 -0.00038780 0.00023757 7.27285239 0.99881541 0.99937463 0.49324411;
+	-6.27324030 -0.00038775 0.00023754 7.27285256 0.99881556 0.99937471 0.49324404;
+	-6.27324042 -0.00038770 0.00023751 7.27285272 0.99881571 0.99937479 0.49324417;
+	-6.27324054 -0.00038765 0.00023748 7.27285289 0.99881585 0.99937487 0.49324417;
+	-6.27324065 -0.00038760 0.00023745 7.27285305 0.99881600 0.99937495 0.49324417;
+	-6.27324077 -0.00038755 0.00023742 7.27285321 0.99881615 0.99937502 0.49324410;
+	-6.27324089 -0.00038751 0.00023739 7.27285338 0.99881630 0.99937510 0.49324415;
+	-6.27324100 -0.00038746 0.00023736 7.27285354 0.99881645 0.99937518 0.49324415;
+	-6.27324112 -0.00038741 0.00023733 7.27285371 0.99881660 0.99937526 0.49324428;
+	-6.27324123 -0.00038736 0.00023730 7.27285387 0.99881674 0.99937534 0.49324427;
+	-6.27324135 -0.00038731 0.00023727 7.27285404 0.99881689 0.99937541 0.49324429;
+	-6.27324147 -0.00038726 0.00023724 7.27285420 0.99881704 0.99937549 0.49324429;
+	-6.27324158 -0.00038722 0.00023721 7.27285437 0.99881719 0.99937557 0.49324431;
+	-6.27324170 -0.00038717 0.00023718 7.27285453 0.99881734 0.99937565 0.49324418;
+	-6.27324181 -0.00038712 0.00023715 7.27285469 0.99881748 0.99937573 0.49324436;
+	-6.27324193 -0.00038707 0.00023712 7.27285486 0.99881763 0.99937581 0.49324427;
+	-6.27324205 -0.00038702 0.00023709 7.27285502 0.99881778 0.99937588 0.49324438;
+	-6.27324216 -0.00038697 0.00023706 7.27285519 0.99881793 0.99937596 0.49324441;
+	-6.27324228 -0.00038693 0.00023704 7.27285535 0.99881807 0.99937604 0.49324425;
+	-6.27324239 -0.00038688 0.00023701 7.27285552 0.99881822 0.99937612 0.49324444;
+	-6.27324251 -0.00038683 0.00023698 7.27285568 0.99881837 0.99937620 0.49324437;
+	-6.27324262 -0.00038678 0.00023695 7.27285584 0.99881852 0.99937627 0.49324451;
+	-6.27324274 -0.00038673 0.00023692 7.27285601 0.99881867 0.99937635 0.49324443;
+	-6.27324286 -0.00038668 0.00023689 7.27285617 0.99881881 0.99937643 0.49324463;
+	-6.27324297 -0.00038664 0.00023686 7.27285634 0.99881896 0.99937651 0.49324464;
+	-6.27324309 -0.00038659 0.00023683 7.27285650 0.99881911 0.99937659 0.49324460;
+	-6.27324320 -0.00038654 0.00023680 7.27285666 0.99881926 0.99937666 0.49324474;
+	-6.27324332 -0.00038649 0.00023677 7.27285683 0.99881940 0.99937674 0.49324457;
+	-6.27324343 -0.00038644 0.00023674 7.27285699 0.99881955 0.99937682 0.49324464;
+	-6.27324355 -0.00038639 0.00023671 7.27285716 0.99881970 0.99937690 0.49324452;
+	-6.27324366 -0.00038635 0.00023668 7.27285732 0.99881985 0.99937697 0.49324451;
+	-6.27324378 -0.00038630 0.00023665 7.27285748 0.99881999 0.99937705 0.49324463;
+	-6.27324390 -0.00038625 0.00023662 7.27285765 0.99882014 0.99937713 0.49324460;
+	-6.27324401 -0.00038620 0.00023659 7.27285781 0.99882029 0.99937721 0.49324461;
+	-6.27324413 -0.00038615 0.00023656 7.27285797 0.99882043 0.99937729 0.49324473;
+	-6.27324424 -0.00038610 0.00023653 7.27285814 0.99882058 0.99937736 0.49324474;
+	-6.27324436 -0.00038606 0.00023650 7.27285830 0.99882073 0.99937744 0.49324465;
+	-6.27324447 -0.00038601 0.00023647 7.27285846 0.99882088 0.99937752 0.49324475;
+	-6.27324459 -0.00038596 0.00023644 7.27285863 0.99882102 0.99937760 0.49324482;
+	-6.27324470 -0.00038591 0.00023641 7.27285879 0.99882117 0.99937767 0.49324468;
+	-6.27324482 -0.00038586 0.00023638 7.27285895 0.99882132 0.99937775 0.49324472;
+	-6.27324493 -0.00038582 0.00023636 7.27285912 0.99882146 0.99937783 0.49324478;
+	-6.27324505 -0.00038577 0.00023633 7.27285928 0.99882161 0.99937791 0.49324486;
+	-6.27324516 -0.00038572 0.00023630 7.27285944 0.99882176 0.99937798 0.49324500;
+	-6.27324528 -0.00038567 0.00023627 7.27285961 0.99882190 0.99937806 0.49324482;
+	-6.27324539 -0.00038562 0.00023624 7.27285977 0.99882205 0.99937814 0.49324496;
+	-6.27324551 -0.00038558 0.00023621 7.27285993 0.99882220 0.99937822 0.49324495;
+	-6.27324562 -0.00038553 0.00023618 7.27286009 0.99882234 0.99937829 0.49324492;
+	-6.27324574 -0.00038548 0.00023615 7.27286026 0.99882249 0.99937837 0.49324476;
+	-6.27324585 -0.00038543 0.00023612 7.27286042 0.99882264 0.99937845 0.49324499;
+	-6.27324597 -0.00038538 0.00023609 7.27286058 0.99882278 0.99937853 0.49324495;
+	-6.27324608 -0.00038534 0.00023606 7.27286075 0.99882293 0.99937860 0.49324497;
+	-6.27324620 -0.00038529 0.00023603 7.27286091 0.99882308 0.99937868 0.49324499;
+	-6.27324631 -0.00038524 0.00023600 7.27286107 0.99882322 0.99937876 0.49324496;
+	-6.27324643 -0.00038519 0.00023597 7.27286123 0.99882337 0.99937884 0.49324507;
+	-6.27324654 -0.00038514 0.00023594 7.27286140 0.99882352 0.99937891 0.49324506;
+	-6.27324666 -0.00038510 0.00023591 7.27286156 0.99882366 0.99937899 0.49324519;
+	-6.27324677 -0.00038505 0.00023588 7.27286172 0.99882381 0.99937907 0.49324510;
+	-6.27324689 -0.00038500 0.00023586 7.27286188 0.99882396 0.99937914 0.49324509;
+	-6.27324700 -0.00038495 0.00023583 7.27286205 0.99882410 0.99937922 0.49324510;
+	-6.27324711 -0.00038490 0.00023580 7.27286221 0.99882425 0.99937930 0.49324517;
+	-6.27324723 -0.00038486 0.00023577 7.27286237 0.99882440 0.99937938 0.49324527;
+	-6.27324734 -0.00038481 0.00023574 7.27286253 0.99882454 0.99937945 0.49324519;
+	-6.27324746 -0.00038476 0.00023571 7.27286270 0.99882469 0.99937953 0.49324516;
+	-6.27324757 -0.00038471 0.00023568 7.27286286 0.99882483 0.99937961 0.49324513;
+	-6.27324769 -0.00038467 0.00023565 7.27286302 0.99882498 0.99937968 0.49324519;
+	-6.27324780 -0.00038462 0.00023562 7.27286318 0.99882513 0.99937976 0.49324509;
+	-6.27324792 -0.00038457 0.00023559 7.27286335 0.99882527 0.99937984 0.49324532;
+	-6.27324803 -0.00038452 0.00023556 7.27286351 0.99882542 0.99937992 0.49324518;
+	-6.27324814 -0.00038447 0.00023553 7.27286367 0.99882556 0.99937999 0.49324537;
+	-6.27324826 -0.00038443 0.00023550 7.27286383 0.99882571 0.99938007 0.49324536;
+	-6.27324837 -0.00038438 0.00023547 7.27286399 0.99882586 0.99938015 0.49324540;
+	-6.27324849 -0.00038433 0.00023545 7.27286416 0.99882600 0.99938022 0.49324531;
+	-6.27324860 -0.00038428 0.00023542 7.27286432 0.99882615 0.99938030 0.49324544;
+	-6.27324872 -0.00038424 0.00023539 7.27286448 0.99882629 0.99938038 0.49324534;
+	-6.27324883 -0.00038419 0.00023536 7.27286464 0.99882644 0.99938045 0.49324551;
+	-6.27324894 -0.00038414 0.00023533 7.27286480 0.99882658 0.99938053 0.49324541;
+	-6.27324906 -0.00038409 0.00023530 7.27286497 0.99882673 0.99938061 0.49324551;
+	-6.27324917 -0.00038405 0.00023527 7.27286513 0.99882688 0.99938068 0.49324541;
+	-6.27324929 -0.00038400 0.00023524 7.27286529 0.99882702 0.99938076 0.49324543;
+	-6.27324940 -0.00038395 0.00023521 7.27286545 0.99882717 0.99938084 0.49324548;
+	-6.27324951 -0.00038390 0.00023518 7.27286561 0.99882731 0.99938092 0.49324547;
+	-6.27324963 -0.00038385 0.00023515 7.27286577 0.99882746 0.99938099 0.49324552;
+	-6.27324974 -0.00038381 0.00023512 7.27286594 0.99882760 0.99938107 0.49324561;
+	-6.27324986 -0.00038376 0.00023509 7.27286610 0.99882775 0.99938115 0.49324575;
+	-6.27324997 -0.00038371 0.00023507 7.27286626 0.99882789 0.99938122 0.49324555;
+	-6.27325008 -0.00038366 0.00023504 7.27286642 0.99882804 0.99938130 0.49324561;
+	-6.27325020 -0.00038362 0.00023501 7.27286658 0.99882818 0.99938138 0.49324560;
+	-6.27325031 -0.00038357 0.00023498 7.27286674 0.99882833 0.99938145 0.49324567;
+	-6.27325043 -0.00038352 0.00023495 7.27286690 0.99882847 0.99938153 0.49324557;
+	-6.27325054 -0.00038347 0.00023492 7.27286706 0.99882862 0.99938161 0.49324572;
+	-6.27325065 -0.00038343 0.00023489 7.27286723 0.99882877 0.99938168 0.49324570;
+	-6.27325077 -0.00038338 0.00023486 7.27286739 0.99882891 0.99938176 0.49324576;
+	-6.27325088 -0.00038333 0.00023483 7.27286755 0.99882906 0.99938184 0.49324591;
+	-6.27325099 -0.00038328 0.00023480 7.27286771 0.99882920 0.99938191 0.49324569;
+	-6.27325111 -0.00038324 0.00023477 7.27286787 0.99882935 0.99938199 0.49324559;
+	-6.27325122 -0.00038319 0.00023475 7.27286803 0.99882949 0.99938207 0.49324564;
+	-6.27325133 -0.00038314 0.00023472 7.27286819 0.99882964 0.99938214 0.49324576;
+	-6.27325145 -0.00038309 0.00023469 7.27286835 0.99882978 0.99938222 0.49324581;
+	-6.27325156 -0.00038305 0.00023466 7.27286851 0.99882993 0.99938229 0.49324590;
+	-6.27325168 -0.00038300 0.00023463 7.27286868 0.99883007 0.99938237 0.49324573;
+	-6.27325179 -0.00038295 0.00023460 7.27286884 0.99883021 0.99938245 0.49324578;
+	-6.27325190 -0.00038291 0.00023457 7.27286900 0.99883036 0.99938252 0.49324585;
+	-6.27325202 -0.00038286 0.00023454 7.27286916 0.99883050 0.99938260 0.49324579;
+	-6.27325213 -0.00038281 0.00023451 7.27286932 0.99883065 0.99938268 0.49324589;
+	-6.27325224 -0.00038276 0.00023448 7.27286948 0.99883079 0.99938275 0.49324588;
+	-6.27325236 -0.00038272 0.00023446 7.27286964 0.99883094 0.99938283 0.49324586;
+	-6.27325247 -0.00038267 0.00023443 7.27286980 0.99883108 0.99938291 0.49324588;
+	-6.27325258 -0.00038262 0.00023440 7.27286996 0.99883123 0.99938298 0.49324600;
+	-6.27325269 -0.00038257 0.00023437 7.27287012 0.99883137 0.99938306 0.49324602;
+	-6.27325281 -0.00038253 0.00023434 7.27287028 0.99883152 0.99938313 0.49324593;
+	-6.27325292 -0.00038248 0.00023431 7.27287044 0.99883166 0.99938321 0.49324600;
+	-6.27325303 -0.00038243 0.00023428 7.27287060 0.99883180 0.99938329 0.49324594;
+	-6.27325315 -0.00038238 0.00023425 7.27287076 0.99883195 0.99938336 0.49324594;
+	-6.27325326 -0.00038234 0.00023422 7.27287092 0.99883209 0.99938344 0.49324616;
+	-6.27325337 -0.00038229 0.00023419 7.27287108 0.99883224 0.99938352 0.49324609;
+	-6.27325349 -0.00038224 0.00023417 7.27287124 0.99883238 0.99938359 0.49324615;
+	-6.27325360 -0.00038220 0.00023414 7.27287140 0.99883253 0.99938367 0.49324616;
+	-6.27325371 -0.00038215 0.00023411 7.27287156 0.99883267 0.99938374 0.49324616;
+	-6.27325383 -0.00038210 0.00023408 7.27287172 0.99883281 0.99938382 0.49324603;
+	-6.27325394 -0.00038205 0.00023405 7.27287188 0.99883296 0.99938390 0.49324614;
+	-6.27325405 -0.00038201 0.00023402 7.27287204 0.99883310 0.99938397 0.49324629;
+	-6.27325416 -0.00038196 0.00023399 7.27287220 0.99883325 0.99938405 0.49324628;
+	-6.27325428 -0.00038191 0.00023396 7.27287236 0.99883339 0.99938412 0.49324634;
+	-6.27325439 -0.00038187 0.00023393 7.27287252 0.99883353 0.99938420 0.49324618;
+	-6.27325450 -0.00038182 0.00023391 7.27287268 0.99883368 0.99938428 0.49324620;
+	-6.27325462 -0.00038177 0.00023388 7.27287284 0.99883382 0.99938435 0.49324621;
+	-6.27325473 -0.00038172 0.00023385 7.27287300 0.99883397 0.99938443 0.49324620;
+	-6.27325484 -0.00038168 0.00023382 7.27287316 0.99883411 0.99938450 0.49324631;
+	-6.27325495 -0.00038163 0.00023379 7.27287332 0.99883425 0.99938458 0.49324616;
+	-6.27325507 -0.00038158 0.00023376 7.27287348 0.99883440 0.99938466 0.49324629;
+	-6.27325518 -0.00038154 0.00023373 7.27287364 0.99883454 0.99938473 0.49324635;
+	-6.27325529 -0.00038149 0.00023370 7.27287380 0.99883469 0.99938481 0.49324648;
+	-6.27325540 -0.00038144 0.00023367 7.27287396 0.99883483 0.99938488 0.49324638;
+	-6.27325552 -0.00038140 0.00023365 7.27287412 0.99883497 0.99938496 0.49324637;
+	-6.27325563 -0.00038135 0.00023362 7.27287428 0.99883512 0.99938503 0.49324641;
+	-6.27325574 -0.00038130 0.00023359 7.27287444 0.99883526 0.99938511 0.49324645;
+	-6.27325585 -0.00038125 0.00023356 7.27287460 0.99883540 0.99938519 0.49324647;
+	-6.27325597 -0.00038121 0.00023353 7.27287476 0.99883555 0.99938526 0.49324642;
+	-6.27325608 -0.00038116 0.00023350 7.27287492 0.99883569 0.99938534 0.49324651;
+	-6.27325619 -0.00038111 0.00023347 7.27287508 0.99883583 0.99938541 0.49324649;
+	-6.27325630 -0.00038107 0.00023344 7.27287524 0.99883598 0.99938549 0.49324647;
+	-6.27325642 -0.00038102 0.00023342 7.27287540 0.99883612 0.99938556 0.49324658;
+	-6.27325653 -0.00038097 0.00023339 7.27287555 0.99883626 0.99938564 0.49324664;
+	-6.27325664 -0.00038093 0.00023336 7.27287571 0.99883641 0.99938572 0.49324649;
+	-6.27325675 -0.00038088 0.00023333 7.27287587 0.99883655 0.99938579 0.49324658;
+	-6.27325686 -0.00038083 0.00023330 7.27287603 0.99883669 0.99938587 0.49324653;
+	-6.27325698 -0.00038079 0.00023327 7.27287619 0.99883684 0.99938594 0.49324658;
+	-6.27325709 -0.00038074 0.00023324 7.27287635 0.99883698 0.99938602 0.49324649;
+	-6.27325720 -0.00038069 0.00023321 7.27287651 0.99883712 0.99938609 0.49324663;
+	-6.27325731 -0.00038065 0.00023319 7.27287667 0.99883727 0.99938617 0.49324670;
+	-6.27325742 -0.00038060 0.00023316 7.27287683 0.99883741 0.99938624 0.49324665;
+	-6.27325754 -0.00038055 0.00023313 7.27287699 0.99883755 0.99938632 0.49324681;
+	-6.27325765 -0.00038050 0.00023310 7.27287714 0.99883769 0.99938640 0.49324678;
+	-6.27325776 -0.00038046 0.00023307 7.27287730 0.99883784 0.99938647 0.49324668;
+	-6.27325787 -0.00038041 0.00023304 7.27287746 0.99883798 0.99938655 0.49324676;
+	-6.27325798 -0.00038036 0.00023301 7.27287762 0.99883812 0.99938662 0.49324679;
+	-6.27325810 -0.00038032 0.00023299 7.27287778 0.99883827 0.99938670 0.49324680;
+	-6.27325821 -0.00038027 0.00023296 7.27287794 0.99883841 0.99938677 0.49324686;
+	-6.27325832 -0.00038022 0.00023293 7.27287810 0.99883855 0.99938685 0.49324703;
+	-6.27325843 -0.00038018 0.00023290 7.27287825 0.99883869 0.99938692 0.49324683;
+	-6.27325854 -0.00038013 0.00023287 7.27287841 0.99883884 0.99938700 0.49324688;
+	-6.27325866 -0.00038008 0.00023284 7.27287857 0.99883898 0.99938707 0.49324687;
+	-6.27325877 -0.00038004 0.00023281 7.27287873 0.99883912 0.99938715 0.49324692;
+	-6.27325888 -0.00037999 0.00023279 7.27287889 0.99883926 0.99938722 0.49324678;
+	-6.27325899 -0.00037994 0.00023276 7.27287905 0.99883941 0.99938730 0.49324693;
+	-6.27325910 -0.00037990 0.00023273 7.27287920 0.99883955 0.99938737 0.49324693;
+	-6.27325921 -0.00037985 0.00023270 7.27287936 0.99883969 0.99938745 0.49324695;
+	-6.27325932 -0.00037980 0.00023267 7.27287952 0.99883983 0.99938752 0.49324704;
+	-6.27325944 -0.00037976 0.00023264 7.27287968 0.99883998 0.99938760 0.49324699;
+	-6.27325955 -0.00037971 0.00023261 7.27287984 0.99884012 0.99938768 0.49324702;
+	-6.27325966 -0.00037966 0.00023259 7.27287999 0.99884026 0.99938775 0.49324694;
+	-6.27325977 -0.00037962 0.00023256 7.27288015 0.99884040 0.99938783 0.49324708;
+	-6.27325988 -0.00037957 0.00023253 7.27288031 0.99884055 0.99938790 0.49324716;
+	-6.27325999 -0.00037953 0.00023250 7.27288047 0.99884069 0.99938798 0.49324712;
+	-6.27326011 -0.00037948 0.00023247 7.27288063 0.99884083 0.99938805 0.49324715;
+	-6.27326022 -0.00037943 0.00023244 7.27288078 0.99884097 0.99938813 0.49324707;
+	-6.27326033 -0.00037939 0.00023241 7.27288094 0.99884111 0.99938820 0.49324704;
+	-6.27326044 -0.00037934 0.00023239 7.27288110 0.99884126 0.99938828 0.49324718;
+	-6.27326055 -0.00037929 0.00023236 7.27288126 0.99884140 0.99938835 0.49324714;
+	-6.27326066 -0.00037925 0.00023233 7.27288142 0.99884154 0.99938843 0.49324726;
+	-6.27326077 -0.00037920 0.00023230 7.27288157 0.99884168 0.99938850 0.49324702;
+	-6.27326088 -0.00037915 0.00023227 7.27288173 0.99884182 0.99938858 0.49324721;
+	-6.27326100 -0.00037911 0.00023224 7.27288189 0.99884197 0.99938865 0.49324723;
+	-6.27326111 -0.00037906 0.00023221 7.27288205 0.99884211 0.99938873 0.49324718;
+	-6.27326122 -0.00037901 0.00023219 7.27288220 0.99884225 0.99938880 0.49324712;
+	-6.27326133 -0.00037897 0.00023216 7.27288236 0.99884239 0.99938887 0.49324742;
+	-6.27326144 -0.00037892 0.00023213 7.27288252 0.99884253 0.99938895 0.49324731;
+	-6.27326155 -0.00037887 0.00023210 7.27288268 0.99884267 0.99938902 0.49324731;
+	-6.27326166 -0.00037883 0.00023207 7.27288283 0.99884282 0.99938910 0.49324735;
+	-6.27326177 -0.00037878 0.00023204 7.27288299 0.99884296 0.99938917 0.49324724;
+	-6.27326188 -0.00037874 0.00023202 7.27288315 0.99884310 0.99938925 0.49324733;
+	-6.27326199 -0.00037869 0.00023199 7.27288331 0.99884324 0.99938932 0.49324726;
+	-6.27326211 -0.00037864 0.00023196 7.27288346 0.99884338 0.99938940 0.49324734;
+	-6.27326222 -0.00037860 0.00023193 7.27288362 0.99884352 0.99938947 0.49324737;
+	-6.27326233 -0.00037855 0.00023190 7.27288378 0.99884367 0.99938955 0.49324746;
+	-6.27326244 -0.00037850 0.00023187 7.27288393 0.99884381 0.99938962 0.49324742;
+	-6.27326255 -0.00037846 0.00023185 7.27288409 0.99884395 0.99938970 0.49324750;
+	-6.27326266 -0.00037841 0.00023182 7.27288425 0.99884409 0.99938977 0.49324754;
+	-6.27326277 -0.00037837 0.00023179 7.27288441 0.99884423 0.99938985 0.49324741;
+	-6.27326288 -0.00037832 0.00023176 7.27288456 0.99884437 0.99938992 0.49324760;
+	-6.27326299 -0.00037827 0.00023173 7.27288472 0.99884451 0.99939000 0.49324751;
+	-6.27326310 -0.00037823 0.00023170 7.27288488 0.99884466 0.99939007 0.49324747;
+	-6.27326321 -0.00037818 0.00023168 7.27288503 0.99884480 0.99939014 0.49324756;
+	-6.27326332 -0.00037813 0.00023165 7.27288519 0.99884494 0.99939022 0.49324744;
+	-6.27326343 -0.00037809 0.00023162 7.27288535 0.99884508 0.99939029 0.49324765;
+	-6.27326354 -0.00037804 0.00023159 7.27288550 0.99884522 0.99939037 0.49324755;
+	-6.27326366 -0.00037800 0.00023156 7.27288566 0.99884536 0.99939044 0.49324760;
+	-6.27326377 -0.00037795 0.00023153 7.27288582 0.99884550 0.99939052 0.49324764;
+	-6.27326388 -0.00037790 0.00023151 7.27288597 0.99884564 0.99939059 0.49324764;
+	-6.27326399 -0.00037786 0.00023148 7.27288613 0.99884578 0.99939067 0.49324768;
+	-6.27326410 -0.00037781 0.00023145 7.27288629 0.99884592 0.99939074 0.49324772;
+	-6.27326421 -0.00037777 0.00023142 7.27288644 0.99884607 0.99939081 0.49324775;
+	-6.27326432 -0.00037772 0.00023139 7.27288660 0.99884621 0.99939089 0.49324763;
+	-6.27326443 -0.00037767 0.00023136 7.27288676 0.99884635 0.99939096 0.49324773;
+	-6.27326454 -0.00037763 0.00023134 7.27288691 0.99884649 0.99939104 0.49324770;
+	-6.27326465 -0.00037758 0.00023131 7.27288707 0.99884663 0.99939111 0.49324772;
+	-6.27326476 -0.00037753 0.00023128 7.27288722 0.99884677 0.99939119 0.49324778;
+	-6.27326487 -0.00037749 0.00023125 7.27288738 0.99884691 0.99939126 0.49324783;
+	-6.27326498 -0.00037744 0.00023122 7.27288754 0.99884705 0.99939133 0.49324780;
+	-6.27326509 -0.00037740 0.00023120 7.27288769 0.99884719 0.99939141 0.49324776;
+	-6.27326520 -0.00037735 0.00023117 7.27288785 0.99884733 0.99939148 0.49324786;
+	-6.27326531 -0.00037730 0.00023114 7.27288801 0.99884747 0.99939156 0.49324788;
+	-6.27326542 -0.00037726 0.00023111 7.27288816 0.99884761 0.99939163 0.49324776;
+	-6.27326553 -0.00037721 0.00023108 7.27288832 0.99884775 0.99939171 0.49324788;
+	-6.27326564 -0.00037717 0.00023105 7.27288847 0.99884789 0.99939178 0.49324801;
+	-6.27326575 -0.00037712 0.00023103 7.27288863 0.99884803 0.99939185 0.49324790;
+	-6.27326586 -0.00037707 0.00023100 7.27288879 0.99884817 0.99939193 0.49324783;
+	-6.27326597 -0.00037703 0.00023097 7.27288894 0.99884831 0.99939200 0.49324795;
+	-6.27326608 -0.00037698 0.00023094 7.27288910 0.99884846 0.99939208 0.49324808;
+	-6.27326619 -0.00037694 0.00023091 7.27288925 0.99884860 0.99939215 0.49324796;
+	-6.27326630 -0.00037689 0.00023089 7.27288941 0.99884874 0.99939222 0.49324802;
+	-6.27326641 -0.00037685 0.00023086 7.27288956 0.99884888 0.99939230 0.49324786;
+	-6.27326652 -0.00037680 0.00023083 7.27288972 0.99884902 0.99939237 0.49324795;
+	-6.27326663 -0.00037675 0.00023080 7.27288988 0.99884916 0.99939245 0.49324822;
+	-6.27326674 -0.00037671 0.00023077 7.27289003 0.99884930 0.99939252 0.49324803;
+	-6.27326685 -0.00037666 0.00023074 7.27289019 0.99884944 0.99939259 0.49324799;
+	-6.27326696 -0.00037662 0.00023072 7.27289034 0.99884958 0.99939267 0.49324798;
+	-6.27326707 -0.00037657 0.00023069 7.27289050 0.99884972 0.99939274 0.49324802;
+	-6.27326718 -0.00037652 0.00023066 7.27289065 0.99884986 0.99939282 0.49324803;
+	-6.27326729 -0.00037648 0.00023063 7.27289081 0.99885000 0.99939289 0.49324811;
+	-6.27326740 -0.00037643 0.00023060 7.27289096 0.99885014 0.99939296 0.49324817;
+	-6.27326751 -0.00037639 0.00023058 7.27289112 0.99885028 0.99939304 0.49324821;
+	-6.27326762 -0.00037634 0.00023055 7.27289127 0.99885042 0.99939311 0.49324821;
+	-6.27326773 -0.00037630 0.00023052 7.27289143 0.99885056 0.99939318 0.49324827;
+	-6.27326783 -0.00037625 0.00023049 7.27289159 0.99885070 0.99939326 0.49324820;
+	-6.27326794 -0.00037620 0.00023046 7.27289174 0.99885084 0.99939333 0.49324832;
+	-6.27326805 -0.00037616 0.00023044 7.27289190 0.99885097 0.99939341 0.49324834;
+	-6.27326816 -0.00037611 0.00023041 7.27289205 0.99885111 0.99939348 0.49324841;
+	-6.27326827 -0.00037607 0.00023038 7.27289221 0.99885125 0.99939355 0.49324834;
+	-6.27326838 -0.00037602 0.00023035 7.27289236 0.99885139 0.99939363 0.49324834;
+	-6.27326849 -0.00037598 0.00023032 7.27289252 0.99885153 0.99939370 0.49324836;
+	-6.27326860 -0.00037593 0.00023030 7.27289267 0.99885167 0.99939377 0.49324838;
+	-6.27326871 -0.00037588 0.00023027 7.27289283 0.99885181 0.99939385 0.49324843;
+	-6.27326882 -0.00037584 0.00023024 7.27289298 0.99885195 0.99939392 0.49324818;
+	-6.27326893 -0.00037579 0.00023021 7.27289314 0.99885209 0.99939399 0.49324852;
+	-6.27326904 -0.00037575 0.00023018 7.27289329 0.99885223 0.99939407 0.49324850;
+	-6.27326915 -0.00037570 0.00023016 7.27289345 0.99885237 0.99939414 0.49324851;
+	-6.27326926 -0.00037566 0.00023013 7.27289360 0.99885251 0.99939422 0.49324838;
+	-6.27326937 -0.00037561 0.00023010 7.27289375 0.99885265 0.99939429 0.49324847;
+	-6.27326947 -0.00037557 0.00023007 7.27289391 0.99885279 0.99939436 0.49324849;
+	-6.27326958 -0.00037552 0.00023004 7.27289406 0.99885293 0.99939444 0.49324851;
+	-6.27326969 -0.00037547 0.00023002 7.27289422 0.99885307 0.99939451 0.49324844;
+	-6.27326980 -0.00037543 0.00022999 7.27289437 0.99885321 0.99939458 0.49324862;
+	-6.27326991 -0.00037538 0.00022996 7.27289453 0.99885334 0.99939466 0.49324845;
+	-6.27327002 -0.00037534 0.00022993 7.27289468 0.99885348 0.99939473 0.49324866;
+	-6.27327013 -0.00037529 0.00022991 7.27289484 0.99885362 0.99939480 0.49324850;
+	-6.27327024 -0.00037525 0.00022988 7.27289499 0.99885376 0.99939488 0.49324874;
+	-6.27327035 -0.00037520 0.00022985 7.27289514 0.99885390 0.99939495 0.49324863;
+	-6.27327045 -0.00037516 0.00022982 7.27289530 0.99885404 0.99939502 0.49324861;
+	-6.27327056 -0.00037511 0.00022979 7.27289545 0.99885418 0.99939510 0.49324863;
+	-6.27327067 -0.00037506 0.00022977 7.27289561 0.99885432 0.99939517 0.49324878;
+	-6.27327078 -0.00037502 0.00022974 7.27289576 0.99885446 0.99939524 0.49324852;
+	-6.27327089 -0.00037497 0.00022971 7.27289592 0.99885459 0.99939532 0.49324868;
+	-6.27327100 -0.00037493 0.00022968 7.27289607 0.99885473 0.99939539 0.49324870;
+	-6.27327111 -0.00037488 0.00022965 7.27289622 0.99885487 0.99939546 0.49324867;
+	-6.27327122 -0.00037484 0.00022963 7.27289638 0.99885501 0.99939554 0.49324861;
+	-6.27327132 -0.00037479 0.00022960 7.27289653 0.99885515 0.99939561 0.49324879;
+	-6.27327143 -0.00037475 0.00022957 7.27289669 0.99885529 0.99939568 0.49324878;
+	-6.27327154 -0.00037470 0.00022954 7.27289684 0.99885543 0.99939576 0.49324873;
+	-6.27327165 -0.00037466 0.00022952 7.27289699 0.99885557 0.99939583 0.49324877;
+	-6.27327176 -0.00037461 0.00022949 7.27289715 0.99885570 0.99939590 0.49324893;
+	-6.27327187 -0.00037457 0.00022946 7.27289730 0.99885584 0.99939597 0.49324876;
+	-6.27327198 -0.00037452 0.00022943 7.27289746 0.99885598 0.99939605 0.49324876;
+	-6.27327208 -0.00037447 0.00022940 7.27289761 0.99885612 0.99939612 0.49324883;
+	-6.27327219 -0.00037443 0.00022938 7.27289776 0.99885626 0.99939619 0.49324897;
+	-6.27327230 -0.00037438 0.00022935 7.27289792 0.99885640 0.99939627 0.49324903;
+	-6.27327241 -0.00037434 0.00022932 7.27289807 0.99885653 0.99939634 0.49324897;
+	-6.27327252 -0.00037429 0.00022929 7.27289822 0.99885667 0.99939641 0.49324915;
+	-6.27327263 -0.00037425 0.00022927 7.27289838 0.99885681 0.99939649 0.49324899;
+	-6.27327273 -0.00037420 0.00022924 7.27289853 0.99885695 0.99939656 0.49324895;
+	-6.27327284 -0.00037416 0.00022921 7.27289869 0.99885709 0.99939663 0.49324901;
+	-6.27327295 -0.00037411 0.00022918 7.27289884 0.99885723 0.99939671 0.49324899;
+	-6.27327306 -0.00037407 0.00022915 7.27289899 0.99885736 0.99939678 0.49324910;
+	-6.27327317 -0.00037402 0.00022913 7.27289915 0.99885750 0.99939685 0.49324893;
+	-6.27327328 -0.00037398 0.00022910 7.27289930 0.99885764 0.99939692 0.49324897;
+	-6.27327338 -0.00037393 0.00022907 7.27289945 0.99885778 0.99939700 0.49324903;
+	-6.27327349 -0.00037389 0.00022904 7.27289961 0.99885792 0.99939707 0.49324907;
+	-6.27327360 -0.00037384 0.00022902 7.27289976 0.99885805 0.99939714 0.49324912;
+	-6.27327371 -0.00037380 0.00022899 7.27289991 0.99885819 0.99939722 0.49324911;
+	-6.27327382 -0.00037375 0.00022896 7.27290007 0.99885833 0.99939729 0.49324918;
+	-6.27327392 -0.00037371 0.00022893 7.27290022 0.99885847 0.99939736 0.49324911;
+	-6.27327403 -0.00037366 0.00022891 7.27290037 0.99885861 0.99939743 0.49324922;
+	-6.27327414 -0.00037362 0.00022888 7.27290052 0.99885874 0.99939751 0.49324912;
+	-6.27327425 -0.00037357 0.00022885 7.27290068 0.99885888 0.99939758 0.49324914;
+	-6.27327436 -0.00037353 0.00022882 7.27290083 0.99885902 0.99939765 0.49324919;
+	-6.27327446 -0.00037348 0.00022880 7.27290098 0.99885916 0.99939772 0.49324915;
+	-6.27327457 -0.00037344 0.00022877 7.27290114 0.99885929 0.99939780 0.49324920;
+	-6.27327468 -0.00037339 0.00022874 7.27290129 0.99885943 0.99939787 0.49324914;
+	-6.27327479 -0.00037335 0.00022871 7.27290144 0.99885957 0.99939794 0.49324927;
+	-6.27327490 -0.00037330 0.00022868 7.27290160 0.99885971 0.99939801 0.49324924;
+	-6.27327500 -0.00037326 0.00022866 7.27290175 0.99885984 0.99939809 0.49324926;
+	-6.27327511 -0.00037321 0.00022863 7.27290190 0.99885998 0.99939816 0.49324920;
+	-6.27327522 -0.00037317 0.00022860 7.27290205 0.99886012 0.99939823 0.49324932;
+	-6.27327533 -0.00037312 0.00022857 7.27290221 0.99886026 0.99939831 0.49324939;
+	-6.27327543 -0.00037308 0.00022855 7.27290236 0.99886039 0.99939838 0.49324946;
+	-6.27327554 -0.00037303 0.00022852 7.27290251 0.99886053 0.99939845 0.49324935;
+	-6.27327565 -0.00037299 0.00022849 7.27290266 0.99886067 0.99939852 0.49324930;
+	-6.27327576 -0.00037294 0.00022846 7.27290282 0.99886081 0.99939860 0.49324950;
+	-6.27327586 -0.00037290 0.00022844 7.27290297 0.99886094 0.99939867 0.49324938;
+	-6.27327597 -0.00037285 0.00022841 7.27290312 0.99886108 0.99939874 0.49324942;
+	-6.27327608 -0.00037281 0.00022838 7.27290327 0.99886122 0.99939881 0.49324944;
+	-6.27327619 -0.00037276 0.00022835 7.27290343 0.99886136 0.99939888 0.49324942;
+	-6.27327629 -0.00037272 0.00022833 7.27290358 0.99886149 0.99939896 0.49324940;
+	-6.27327640 -0.00037267 0.00022830 7.27290373 0.99886163 0.99939903 0.49324954;
+	-6.27327651 -0.00037263 0.00022827 7.27290388 0.99886177 0.99939910 0.49324936;
+	-6.27327662 -0.00037258 0.00022824 7.27290404 0.99886190 0.99939917 0.49324945;
+	-6.27327672 -0.00037254 0.00022822 7.27290419 0.99886204 0.99939925 0.49324953;
+	-6.27327683 -0.00037249 0.00022819 7.27290434 0.99886218 0.99939932 0.49324957;
+	-6.27327694 -0.00037245 0.00022816 7.27290449 0.99886231 0.99939939 0.49324952;
+	-6.27327705 -0.00037240 0.00022813 7.27290464 0.99886245 0.99939946 0.49324959;
+	-6.27327715 -0.00037236 0.00022811 7.27290480 0.99886259 0.99939954 0.49324957;
+	-6.27327726 -0.00037231 0.00022808 7.27290495 0.99886273 0.99939961 0.49324964;
+	-6.27327737 -0.00037227 0.00022805 7.27290510 0.99886286 0.99939968 0.49324963;
+	-6.27327747 -0.00037222 0.00022802 7.27290525 0.99886300 0.99939975 0.49324974;
+	-6.27327758 -0.00037218 0.00022800 7.27290540 0.99886314 0.99939982 0.49324966;
+	-6.27327769 -0.00037213 0.00022797 7.27290556 0.99886327 0.99939990 0.49324952;
+	-6.27327780 -0.00037209 0.00022794 7.27290571 0.99886341 0.99939997 0.49324969;
+	-6.27327790 -0.00037204 0.00022791 7.27290586 0.99886355 0.99940004 0.49324970;
+	-6.27327801 -0.00037200 0.00022789 7.27290601 0.99886368 0.99940011 0.49324976;
+	-6.27327812 -0.00037195 0.00022786 7.27290616 0.99886382 0.99940019 0.49324984;
+	-6.27327822 -0.00037191 0.00022783 7.27290631 0.99886396 0.99940026 0.49324963;
+	-6.27327833 -0.00037187 0.00022781 7.27290647 0.99886409 0.99940033 0.49324968;
+	-6.27327844 -0.00037182 0.00022778 7.27290662 0.99886423 0.99940040 0.49324978;
+	-6.27327855 -0.00037178 0.00022775 7.27290677 0.99886436 0.99940047 0.49324985;
+	-6.27327865 -0.00037173 0.00022772 7.27290692 0.99886450 0.99940055 0.49325000;
+	-6.27327876 -0.00037169 0.00022770 7.27290707 0.99886464 0.99940062 0.49324984;
+	-6.27327887 -0.00037164 0.00022767 7.27290722 0.99886477 0.99940069 0.49324982;
+	-6.27327897 -0.00037160 0.00022764 7.27290737 0.99886491 0.99940076 0.49324988;
+	-6.27327908 -0.00037155 0.00022761 7.27290753 0.99886505 0.99940083 0.49325015;
+	-6.27327919 -0.00037151 0.00022759 7.27290768 0.99886518 0.99940091 0.49324977;
+	-6.27327929 -0.00037146 0.00022756 7.27290783 0.99886532 0.99940098 0.49324993;
+	-6.27327940 -0.00037142 0.00022753 7.27290798 0.99886546 0.99940105 0.49325002;
+	-6.27327951 -0.00037137 0.00022750 7.27290813 0.99886559 0.99940112 0.49324999;
+	-6.27327961 -0.00037133 0.00022748 7.27290828 0.99886573 0.99940119 0.49325000;
+	-6.27327972 -0.00037129 0.00022745 7.27290843 0.99886586 0.99940126 0.49325006;
+	-6.27327983 -0.00037124 0.00022742 7.27290858 0.99886600 0.99940134 0.49324994;
+	-6.27327993 -0.00037120 0.00022740 7.27290874 0.99886614 0.99940141 0.49324986;
+	-6.27328004 -0.00037115 0.00022737 7.27290889 0.99886627 0.99940148 0.49325009;
+	-6.27328015 -0.00037111 0.00022734 7.27290904 0.99886641 0.99940155 0.49325012;
+	-6.27328025 -0.00037106 0.00022731 7.27290919 0.99886654 0.99940162 0.49325015;
+	-6.27328036 -0.00037102 0.00022729 7.27290934 0.99886668 0.99940170 0.49325010;
+	-6.27328047 -0.00037097 0.00022726 7.27290949 0.99886682 0.99940177 0.49325020;
+	-6.27328057 -0.00037093 0.00022723 7.27290964 0.99886695 0.99940184 0.49325004;
+	-6.27328068 -0.00037089 0.00022720 7.27290979 0.99886709 0.99940191 0.49325014;
+	-6.27328078 -0.00037084 0.00022718 7.27290994 0.99886722 0.99940198 0.49325025;
+	-6.27328089 -0.00037080 0.00022715 7.27291009 0.99886736 0.99940205 0.49325008;
+	-6.27328100 -0.00037075 0.00022712 7.27291024 0.99886749 0.99940213 0.49325032;
+	-6.27328110 -0.00037071 0.00022710 7.27291040 0.99886763 0.99940220 0.49325016;
+	-6.27328121 -0.00037066 0.00022707 7.27291055 0.99886777 0.99940227 0.49325010;
+	-6.27328132 -0.00037062 0.00022704 7.27291070 0.99886790 0.99940234 0.49325006;
+	-6.27328142 -0.00037057 0.00022701 7.27291085 0.99886804 0.99940241 0.49325022;
+	-6.27328153 -0.00037053 0.00022699 7.27291100 0.99886817 0.99940248 0.49325031;
+	-6.27328163 -0.00037049 0.00022696 7.27291115 0.99886831 0.99940255 0.49325037;
+	-6.27328174 -0.00037044 0.00022693 7.27291130 0.99886844 0.99940263 0.49325027;
+	-6.27328185 -0.00037040 0.00022691 7.27291145 0.99886858 0.99940270 0.49325034;
+	-6.27328195 -0.00037035 0.00022688 7.27291160 0.99886871 0.99940277 0.49325020;
+	-6.27328206 -0.00037031 0.00022685 7.27291175 0.99886885 0.99940284 0.49325035;
+	-6.27328217 -0.00037026 0.00022682 7.27291190 0.99886898 0.99940291 0.49325022;
+	-6.27328227 -0.00037022 0.00022680 7.27291205 0.99886912 0.99940298 0.49325038;
+	-6.27328238 -0.00037018 0.00022677 7.27291220 0.99886926 0.99940305 0.49325045;
+	-6.27328248 -0.00037013 0.00022674 7.27291235 0.99886939 0.99940313 0.49325055;
+	-6.27328259 -0.00037009 0.00022672 7.27291250 0.99886953 0.99940320 0.49325042;
+	-6.27328269 -0.00037004 0.00022669 7.27291265 0.99886966 0.99940327 0.49325036;
+	-6.27328280 -0.00037000 0.00022666 7.27291280 0.99886980 0.99940334 0.49325057;
+	-6.27328291 -0.00036995 0.00022663 7.27291295 0.99886993 0.99940341 0.49325047;
+	-6.27328301 -0.00036991 0.00022661 7.27291310 0.99887007 0.99940348 0.49325050;
+	-6.27328312 -0.00036987 0.00022658 7.27291325 0.99887020 0.99940355 0.49325044;
+	-6.27328322 -0.00036982 0.00022655 7.27291340 0.99887034 0.99940363 0.49325060;
+	-6.27328333 -0.00036978 0.00022653 7.27291355 0.99887047 0.99940370 0.49325046;
+	-6.27328344 -0.00036973 0.00022650 7.27291370 0.99887061 0.99940377 0.49325049;
+	-6.27328354 -0.00036969 0.00022647 7.27291385 0.99887074 0.99940384 0.49325054;
+	-6.27328365 -0.00036965 0.00022644 7.27291400 0.99887088 0.99940391 0.49325051;
+	-6.27328375 -0.00036960 0.00022642 7.27291415 0.99887101 0.99940398 0.49325068;
+	-6.27328386 -0.00036956 0.00022639 7.27291430 0.99887115 0.99940405 0.49325059;
+	-6.27328396 -0.00036951 0.00022636 7.27291445 0.99887128 0.99940412 0.49325082;
+	-6.27328407 -0.00036947 0.00022634 7.27291460 0.99887142 0.99940419 0.49325077;
+	-6.27328418 -0.00036942 0.00022631 7.27291475 0.99887155 0.99940427 0.49325076;
+	-6.27328428 -0.00036938 0.00022628 7.27291490 0.99887168 0.99940434 0.49325073;
+	-6.27328439 -0.00036934 0.00022626 7.27291505 0.99887182 0.99940441 0.49325073;
+	-6.27328449 -0.00036929 0.00022623 7.27291520 0.99887195 0.99940448 0.49325059;
+	-6.27328460 -0.00036925 0.00022620 7.27291535 0.99887209 0.99940455 0.49325071;
+	-6.27328470 -0.00036920 0.00022617 7.27291550 0.99887222 0.99940462 0.49325075;
+	-6.27328481 -0.00036916 0.00022615 7.27291565 0.99887236 0.99940469 0.49325074;
+	-6.27328491 -0.00036912 0.00022612 7.27291580 0.99887249 0.99940476 0.49325076;
+	-6.27328502 -0.00036907 0.00022609 7.27291595 0.99887263 0.99940483 0.49325069;
+	-6.27328512 -0.00036903 0.00022607 7.27291610 0.99887276 0.99940491 0.49325089;
+	-6.27328523 -0.00036898 0.00022604 7.27291624 0.99887290 0.99940498 0.49325087;
+	-6.27328533 -0.00036894 0.00022601 7.27291639 0.99887303 0.99940505 0.49325089;
+	-6.27328544 -0.00036890 0.00022599 7.27291654 0.99887316 0.99940512 0.49325087;
+	-6.27328555 -0.00036885 0.00022596 7.27291669 0.99887330 0.99940519 0.49325085;
+	-6.27328565 -0.00036881 0.00022593 7.27291684 0.99887343 0.99940526 0.49325080;
+	-6.27328576 -0.00036876 0.00022590 7.27291699 0.99887357 0.99940533 0.49325071;
+	-6.27328586 -0.00036872 0.00022588 7.27291714 0.99887370 0.99940540 0.49325095;
+	-6.27328597 -0.00036868 0.00022585 7.27291729 0.99887384 0.99940547 0.49325080;
+	-6.27328607 -0.00036863 0.00022582 7.27291744 0.99887397 0.99940554 0.49325088;
+	-6.27328618 -0.00036859 0.00022580 7.27291759 0.99887410 0.99940561 0.49325100;
+	-6.27328628 -0.00036855 0.00022577 7.27291774 0.99887424 0.99940568 0.49325106;
+	-6.27328639 -0.00036850 0.00022574 7.27291789 0.99887437 0.99940576 0.49325085;
+	-6.27328649 -0.00036846 0.00022572 7.27291803 0.99887451 0.99940583 0.49325087;
+	-6.27328660 -0.00036841 0.00022569 7.27291818 0.99887464 0.99940590 0.49325084;
+	-6.27328670 -0.00036837 0.00022566 7.27291833 0.99887477 0.99940597 0.49325118;
+	-6.27328681 -0.00036833 0.00022564 7.27291848 0.99887491 0.99940604 0.49325112;
+	-6.27328691 -0.00036828 0.00022561 7.27291863 0.99887504 0.99940611 0.49325104;
+	-6.27328702 -0.00036824 0.00022558 7.27291878 0.99887518 0.99940618 0.49325104;
+	-6.27328712 -0.00036819 0.00022556 7.27291893 0.99887531 0.99940625 0.49325116;
+	-6.27328723 -0.00036815 0.00022553 7.27291907 0.99887544 0.99940632 0.49325111;
+	-6.27328733 -0.00036811 0.00022550 7.27291922 0.99887558 0.99940639 0.49325116;
+	-6.27328744 -0.00036806 0.00022547 7.27291937 0.99887571 0.99940646 0.49325108;
+	-6.27328754 -0.00036802 0.00022545 7.27291952 0.99887584 0.99940653 0.49325111;
+	-6.27328764 -0.00036798 0.00022542 7.27291967 0.99887598 0.99940660 0.49325113;
+	-6.27328775 -0.00036793 0.00022539 7.27291982 0.99887611 0.99940667 0.49325130;
+	-6.27328785 -0.00036789 0.00022537 7.27291997 0.99887625 0.99940674 0.49325114;
+	-6.27328796 -0.00036784 0.00022534 7.27292011 0.99887638 0.99940681 0.49325125;
+	-6.27328806 -0.00036780 0.00022531 7.27292026 0.99887651 0.99940689 0.49325120;
+	-6.27328817 -0.00036776 0.00022529 7.27292041 0.99887665 0.99940696 0.49325118;
+	-6.27328827 -0.00036771 0.00022526 7.27292056 0.99887678 0.99940703 0.49325120;
+	-6.27328838 -0.00036767 0.00022523 7.27292071 0.99887691 0.99940710 0.49325135;
+	-6.27328848 -0.00036763 0.00022521 7.27292086 0.99887705 0.99940717 0.49325134;
+	-6.27328859 -0.00036758 0.00022518 7.27292100 0.99887718 0.99940724 0.49325139;
+	-6.27328869 -0.00036754 0.00022515 7.27292115 0.99887731 0.99940731 0.49325135;
+	-6.27328880 -0.00036749 0.00022513 7.27292130 0.99887745 0.99940738 0.49325126;
+	-6.27328890 -0.00036745 0.00022510 7.27292145 0.99887758 0.99940745 0.49325131;
+	-6.27328900 -0.00036741 0.00022507 7.27292160 0.99887771 0.99940752 0.49325136;
+	-6.27328911 -0.00036736 0.00022505 7.27292174 0.99887785 0.99940759 0.49325152;
+	-6.27328921 -0.00036732 0.00022502 7.27292189 0.99887798 0.99940766 0.49325159;
+	-6.27328932 -0.00036728 0.00022499 7.27292204 0.99887811 0.99940773 0.49325140;
+	-6.27328942 -0.00036723 0.00022497 7.27292219 0.99887825 0.99940780 0.49325141;
+	-6.27328953 -0.00036719 0.00022494 7.27292234 0.99887838 0.99940787 0.49325131;
+	-6.27328963 -0.00036715 0.00022491 7.27292248 0.99887851 0.99940794 0.49325145;
+	-6.27328973 -0.00036710 0.00022489 7.27292263 0.99887864 0.99940801 0.49325145;
+	-6.27328984 -0.00036706 0.00022486 7.27292278 0.99887878 0.99940808 0.49325157;
+	-6.27328994 -0.00036702 0.00022483 7.27292293 0.99887891 0.99940815 0.49325149;
+	-6.27329005 -0.00036697 0.00022481 7.27292307 0.99887904 0.99940822 0.49325164;
+	-6.27329015 -0.00036693 0.00022478 7.27292322 0.99887918 0.99940829 0.49325155;
+	-6.27329025 -0.00036689 0.00022475 7.27292337 0.99887931 0.99940836 0.49325164;
+	-6.27329036 -0.00036684 0.00022473 7.27292352 0.99887944 0.99940843 0.49325151;
+	-6.27329046 -0.00036680 0.00022470 7.27292366 0.99887958 0.99940850 0.49325168;
+	-6.27329057 -0.00036675 0.00022467 7.27292381 0.99887971 0.99940857 0.49325138;
+	-6.27329067 -0.00036671 0.00022465 7.27292396 0.99887984 0.99940864 0.49325171;
+	-6.27329078 -0.00036667 0.00022462 7.27292411 0.99887997 0.99940871 0.49325159;
+	-6.27329088 -0.00036662 0.00022459 7.27292425 0.99888011 0.99940878 0.49325160;
+	-6.27329098 -0.00036658 0.00022457 7.27292440 0.99888024 0.99940885 0.49325177;
+	-6.27329109 -0.00036654 0.00022454 7.27292455 0.99888037 0.99940892 0.49325177;
+	-6.27329119 -0.00036649 0.00022451 7.27292470 0.99888050 0.99940899 0.49325164;
+	-6.27329129 -0.00036645 0.00022449 7.27292484 0.99888064 0.99940906 0.49325172;
+	-6.27329140 -0.00036641 0.00022446 7.27292499 0.99888077 0.99940913 0.49325179;
+	-6.27329150 -0.00036636 0.00022443 7.27292514 0.99888090 0.99940920 0.49325181;
+	-6.27329161 -0.00036632 0.00022441 7.27292529 0.99888103 0.99940927 0.49325178;
+	-6.27329171 -0.00036628 0.00022438 7.27292543 0.99888117 0.99940934 0.49325178;
+	-6.27329181 -0.00036623 0.00022435 7.27292558 0.99888130 0.99940941 0.49325183;
+	-6.27329192 -0.00036619 0.00022433 7.27292573 0.99888143 0.99940948 0.49325179;
+	-6.27329202 -0.00036615 0.00022430 7.27292587 0.99888156 0.99940955 0.49325183;
+	-6.27329212 -0.00036610 0.00022427 7.27292602 0.99888170 0.99940962 0.49325178;
+	-6.27329223 -0.00036606 0.00022425 7.27292617 0.99888183 0.99940969 0.49325167;
+	-6.27329233 -0.00036602 0.00022422 7.27292631 0.99888196 0.99940976 0.49325180;
+	-6.27329244 -0.00036597 0.00022419 7.27292646 0.99888209 0.99940983 0.49325201;
+	-6.27329254 -0.00036593 0.00022417 7.27292661 0.99888222 0.99940990 0.49325190;
+	-6.27329264 -0.00036589 0.00022414 7.27292675 0.99888236 0.99940997 0.49325201;
+	-6.27329275 -0.00036584 0.00022412 7.27292690 0.99888249 0.99941004 0.49325203;
+	-6.27329285 -0.00036580 0.00022409 7.27292705 0.99888262 0.99941011 0.49325195;
+	-6.27329295 -0.00036576 0.00022406 7.27292720 0.99888275 0.99941018 0.49325194;
+	-6.27329306 -0.00036571 0.00022404 7.27292734 0.99888289 0.99941025 0.49325187;
+	-6.27329316 -0.00036567 0.00022401 7.27292749 0.99888302 0.99941032 0.49325203;
+	-6.27329326 -0.00036563 0.00022398 7.27292764 0.99888315 0.99941039 0.49325193;
+	-6.27329337 -0.00036559 0.00022396 7.27292778 0.99888328 0.99941046 0.49325192;
+	-6.27329347 -0.00036554 0.00022393 7.27292793 0.99888341 0.99941053 0.49325212;
+	-6.27329357 -0.00036550 0.00022390 7.27292807 0.99888355 0.99941060 0.49325192;
+	-6.27329368 -0.00036546 0.00022388 7.27292822 0.99888368 0.99941067 0.49325204;
+	-6.27329378 -0.00036541 0.00022385 7.27292837 0.99888381 0.99941074 0.49325210;
+	-6.27329388 -0.00036537 0.00022382 7.27292851 0.99888394 0.99941081 0.49325200;
+	-6.27329399 -0.00036533 0.00022380 7.27292866 0.99888407 0.99941088 0.49325216;
+	-6.27329409 -0.00036528 0.00022377 7.27292881 0.99888420 0.99941095 0.49325212;
+	-6.27329419 -0.00036524 0.00022374 7.27292895 0.99888434 0.99941102 0.49325214;
+	-6.27329430 -0.00036520 0.00022372 7.27292910 0.99888447 0.99941108 0.49325208;
+	-6.27329440 -0.00036515 0.00022369 7.27292925 0.99888460 0.99941115 0.49325230;
+	-6.27329450 -0.00036511 0.00022367 7.27292939 0.99888473 0.99941122 0.49325225;
+	-6.27329461 -0.00036507 0.00022364 7.27292954 0.99888486 0.99941129 0.49325212;
+	-6.27329471 -0.00036502 0.00022361 7.27292968 0.99888499 0.99941136 0.49325221;
+	-6.27329481 -0.00036498 0.00022359 7.27292983 0.99888513 0.99941143 0.49325215;
+	-6.27329491 -0.00036494 0.00022356 7.27292998 0.99888526 0.99941150 0.49325228;
+	-6.27329502 -0.00036490 0.00022353 7.27293012 0.99888539 0.99941157 0.49325236;
+	-6.27329512 -0.00036485 0.00022351 7.27293027 0.99888552 0.99941164 0.49325238;
+	-6.27329522 -0.00036481 0.00022348 7.27293041 0.99888565 0.99941171 0.49325230;
+	-6.27329533 -0.00036477 0.00022345 7.27293056 0.99888578 0.99941178 0.49325233;
+	-6.27329543 -0.00036472 0.00022343 7.27293071 0.99888591 0.99941185 0.49325243;
+	-6.27329553 -0.00036468 0.00022340 7.27293085 0.99888605 0.99941192 0.49325248;
+	-6.27329564 -0.00036464 0.00022338 7.27293100 0.99888618 0.99941199 0.49325226;
+	-6.27329574 -0.00036460 0.00022335 7.27293114 0.99888631 0.99941206 0.49325247;
+	-6.27329584 -0.00036455 0.00022332 7.27293129 0.99888644 0.99941213 0.49325235;
+	-6.27329594 -0.00036451 0.00022330 7.27293143 0.99888657 0.99941219 0.49325238;
+	-6.27329605 -0.00036447 0.00022327 7.27293158 0.99888670 0.99941226 0.49325236;
+	-6.27329615 -0.00036442 0.00022324 7.27293173 0.99888683 0.99941233 0.49325251;
+	-6.27329625 -0.00036438 0.00022322 7.27293187 0.99888696 0.99941240 0.49325244;
+	-6.27329635 -0.00036434 0.00022319 7.27293202 0.99888709 0.99941247 0.49325243;
+	-6.27329646 -0.00036429 0.00022317 7.27293216 0.99888723 0.99941254 0.49325235;
+	-6.27329656 -0.00036425 0.00022314 7.27293231 0.99888736 0.99941261 0.49325265;
+	-6.27329666 -0.00036421 0.00022311 7.27293245 0.99888749 0.99941268 0.49325266;
+	-6.27329677 -0.00036417 0.00022309 7.27293260 0.99888762 0.99941275 0.49325241;
+	-6.27329687 -0.00036412 0.00022306 7.27293274 0.99888775 0.99941282 0.49325251;
+	-6.27329697 -0.00036408 0.00022303 7.27293289 0.99888788 0.99941289 0.49325244;
+	-6.27329707 -0.00036404 0.00022301 7.27293304 0.99888801 0.99941295 0.49325256;
+	-6.27329718 -0.00036399 0.00022298 7.27293318 0.99888814 0.99941302 0.49325261;
+	-6.27329728 -0.00036395 0.00022296 7.27293333 0.99888827 0.99941309 0.49325262;
+	-6.27329738 -0.00036391 0.00022293 7.27293347 0.99888840 0.99941316 0.49325272;
+	-6.27329748 -0.00036387 0.00022290 7.27293362 0.99888853 0.99941323 0.49325264;
+	-6.27329758 -0.00036382 0.00022288 7.27293376 0.99888866 0.99941330 0.49325271;
+	-6.27329769 -0.00036378 0.00022285 7.27293391 0.99888879 0.99941337 0.49325250;
+	-6.27329779 -0.00036374 0.00022282 7.27293405 0.99888893 0.99941344 0.49325276;
+	-6.27329789 -0.00036370 0.00022280 7.27293420 0.99888906 0.99941351 0.49325279;
+	-6.27329799 -0.00036365 0.00022277 7.27293434 0.99888919 0.99941358 0.49325256;
+	-6.27329810 -0.00036361 0.00022275 7.27293449 0.99888932 0.99941364 0.49325269;
+	-6.27329820 -0.00036357 0.00022272 7.27293463 0.99888945 0.99941371 0.49325274;
+	-6.27329830 -0.00036352 0.00022269 7.27293478 0.99888958 0.99941378 0.49325276;
+	-6.27329840 -0.00036348 0.00022267 7.27293492 0.99888971 0.99941385 0.49325275;
+	-6.27329851 -0.00036344 0.00022264 7.27293507 0.99888984 0.99941392 0.49325266;
+	-6.27329861 -0.00036340 0.00022261 7.27293521 0.99888997 0.99941399 0.49325274;
+	-6.27329871 -0.00036335 0.00022259 7.27293536 0.99889010 0.99941406 0.49325275;
+	-6.27329881 -0.00036331 0.00022256 7.27293550 0.99889023 0.99941413 0.49325279;
+	-6.27329891 -0.00036327 0.00022254 7.27293565 0.99889036 0.99941420 0.49325277;
+	-6.27329902 -0.00036323 0.00022251 7.27293579 0.99889049 0.99941426 0.49325299;
+	-6.27329912 -0.00036318 0.00022248 7.27293593 0.99889062 0.99941433 0.49325298;
+	-6.27329922 -0.00036314 0.00022246 7.27293608 0.99889075 0.99941440 0.49325274;
+	-6.27329932 -0.00036310 0.00022243 7.27293622 0.99889088 0.99941447 0.49325294;
+	-6.27329942 -0.00036306 0.00022241 7.27293637 0.99889101 0.99941454 0.49325297;
+	-6.27329953 -0.00036301 0.00022238 7.27293651 0.99889114 0.99941461 0.49325278;
+	-6.27329963 -0.00036297 0.00022235 7.27293666 0.99889127 0.99941468 0.49325281;
+	-6.27329973 -0.00036293 0.00022233 7.27293680 0.99889140 0.99941474 0.49325304;
+	-6.27329983 -0.00036289 0.00022230 7.27293695 0.99889153 0.99941481 0.49325295;
+	-6.27329993 -0.00036284 0.00022228 7.27293709 0.99889166 0.99941488 0.49325311;
+	-6.27330004 -0.00036280 0.00022225 7.27293723 0.99889179 0.99941495 0.49325291;
+	-6.27330014 -0.00036276 0.00022222 7.27293738 0.99889192 0.99941502 0.49325317;
+	-6.27330024 -0.00036272 0.00022220 7.27293752 0.99889205 0.99941509 0.49325298;
+	-6.27330034 -0.00036267 0.00022217 7.27293767 0.99889218 0.99941516 0.49325316;
+	-6.27330044 -0.00036263 0.00022215 7.27293781 0.99889231 0.99941522 0.49325310;
+	-6.27330054 -0.00036259 0.00022212 7.27293796 0.99889244 0.99941529 0.49325314;
+	-6.27330065 -0.00036255 0.00022209 7.27293810 0.99889257 0.99941536 0.49325310;
+	-6.27330075 -0.00036250 0.00022207 7.27293824 0.99889270 0.99941543 0.49325300;
+	-6.27330085 -0.00036246 0.00022204 7.27293839 0.99889283 0.99941550 0.49325323;
+	-6.27330095 -0.00036242 0.00022202 7.27293853 0.99889296 0.99941557 0.49325313;
+	-6.27330105 -0.00036238 0.00022199 7.27293868 0.99889309 0.99941564 0.49325318;
+	-6.27330115 -0.00036233 0.00022196 7.27293882 0.99889322 0.99941570 0.49325325;
+	-6.27330126 -0.00036229 0.00022194 7.27293896 0.99889335 0.99941577 0.49325315;
+	-6.27330136 -0.00036225 0.00022191 7.27293911 0.99889348 0.99941584 0.49325312;
+	-6.27330146 -0.00036221 0.00022189 7.27293925 0.99889361 0.99941591 0.49325327;
+	-6.27330156 -0.00036216 0.00022186 7.27293940 0.99889374 0.99941598 0.49325334;
+	-6.27330166 -0.00036212 0.00022183 7.27293954 0.99889387 0.99941605 0.49325318;
+	-6.27330176 -0.00036208 0.00022181 7.27293968 0.99889400 0.99941611 0.49325339;
+	-6.27330186 -0.00036204 0.00022178 7.27293983 0.99889412 0.99941618 0.49325320;
+	-6.27330197 -0.00036199 0.00022176 7.27293997 0.99889425 0.99941625 0.49325327;
+	-6.27330207 -0.00036195 0.00022173 7.27294011 0.99889438 0.99941632 0.49325329;
+	-6.27330217 -0.00036191 0.00022170 7.27294026 0.99889451 0.99941639 0.49325333;
+	-6.27330227 -0.00036187 0.00022168 7.27294040 0.99889464 0.99941646 0.49325330;
+	-6.27330237 -0.00036182 0.00022165 7.27294055 0.99889477 0.99941652 0.49325321;
+	-6.27330247 -0.00036178 0.00022163 7.27294069 0.99889490 0.99941659 0.49325343;
+	-6.27330257 -0.00036174 0.00022160 7.27294083 0.99889503 0.99941666 0.49325334;
+	-6.27330267 -0.00036170 0.00022157 7.27294098 0.99889516 0.99941673 0.49325333;
+	-6.27330278 -0.00036166 0.00022155 7.27294112 0.99889529 0.99941680 0.49325328;
+	-6.27330288 -0.00036161 0.00022152 7.27294126 0.99889542 0.99941686 0.49325344;
+	-6.27330298 -0.00036157 0.00022150 7.27294141 0.99889555 0.99941693 0.49325340;
+	-6.27330308 -0.00036153 0.00022147 7.27294155 0.99889568 0.99941700 0.49325337;
+	-6.27330318 -0.00036149 0.00022144 7.27294169 0.99889580 0.99941707 0.49325346;
+	-6.27330328 -0.00036144 0.00022142 7.27294184 0.99889593 0.99941714 0.49325350;
+	-6.27330338 -0.00036140 0.00022139 7.27294198 0.99889606 0.99941720 0.49325355;
+	-6.27330348 -0.00036136 0.00022137 7.27294212 0.99889619 0.99941727 0.49325362;
+	-6.27330358 -0.00036132 0.00022134 7.27294227 0.99889632 0.99941734 0.49325356;
+	-6.27330368 -0.00036128 0.00022132 7.27294241 0.99889645 0.99941741 0.49325360;
+	-6.27330379 -0.00036123 0.00022129 7.27294255 0.99889658 0.99941748 0.49325348;
+	-6.27330389 -0.00036119 0.00022126 7.27294269 0.99889671 0.99941754 0.49325378;
+	-6.27330399 -0.00036115 0.00022124 7.27294284 0.99889684 0.99941761 0.49325364;
+	-6.27330409 -0.00036111 0.00022121 7.27294298 0.99889696 0.99941768 0.49325361;
+	-6.27330419 -0.00036107 0.00022119 7.27294312 0.99889709 0.99941775 0.49325386;
+	-6.27330429 -0.00036102 0.00022116 7.27294327 0.99889722 0.99941782 0.49325359;
+	-6.27330439 -0.00036098 0.00022113 7.27294341 0.99889735 0.99941788 0.49325371;
+	-6.27330449 -0.00036094 0.00022111 7.27294355 0.99889748 0.99941795 0.49325375;
+	-6.27330459 -0.00036090 0.00022108 7.27294370 0.99889761 0.99941802 0.49325371;
+	-6.27330469 -0.00036085 0.00022106 7.27294384 0.99889774 0.99941809 0.49325378;
+	-6.27330479 -0.00036081 0.00022103 7.27294398 0.99889786 0.99941816 0.49325370;
+	-6.27330489 -0.00036077 0.00022101 7.27294412 0.99889799 0.99941822 0.49325364;
+	-6.27330499 -0.00036073 0.00022098 7.27294427 0.99889812 0.99941829 0.49325373;
+	-6.27330510 -0.00036069 0.00022095 7.27294441 0.99889825 0.99941836 0.49325372;
+	-6.27330520 -0.00036064 0.00022093 7.27294455 0.99889838 0.99941843 0.49325391;
+	-6.27330530 -0.00036060 0.00022090 7.27294469 0.99889851 0.99941849 0.49325378;
+	-6.27330540 -0.00036056 0.00022088 7.27294484 0.99889863 0.99941856 0.49325387;
+	-6.27330550 -0.00036052 0.00022085 7.27294498 0.99889876 0.99941863 0.49325370;
+	-6.27330560 -0.00036048 0.00022083 7.27294512 0.99889889 0.99941870 0.49325386;
+	-6.27330570 -0.00036043 0.00022080 7.27294526 0.99889902 0.99941877 0.49325387;
+	-6.27330580 -0.00036039 0.00022077 7.27294541 0.99889915 0.99941883 0.49325384;
+	-6.27330590 -0.00036035 0.00022075 7.27294555 0.99889928 0.99941890 0.49325392;
+	-6.27330600 -0.00036031 0.00022072 7.27294569 0.99889940 0.99941897 0.49325387;
+	-6.27330610 -0.00036027 0.00022070 7.27294583 0.99889953 0.99941904 0.49325390;
+	-6.27330620 -0.00036023 0.00022067 7.27294598 0.99889966 0.99941910 0.49325400;
+	-6.27330630 -0.00036018 0.00022065 7.27294612 0.99889979 0.99941917 0.49325409;
+	-6.27330640 -0.00036014 0.00022062 7.27294626 0.99889992 0.99941924 0.49325386;
+	-6.27330650 -0.00036010 0.00022059 7.27294640 0.99890004 0.99941931 0.49325408;
+	-6.27330660 -0.00036006 0.00022057 7.27294654 0.99890017 0.99941937 0.49325391;
+	-6.27330670 -0.00036002 0.00022054 7.27294669 0.99890030 0.99941944 0.49325389;
+	-6.27330680 -0.00035997 0.00022052 7.27294683 0.99890043 0.99941951 0.49325379;
+	-6.27330690 -0.00035993 0.00022049 7.27294697 0.99890056 0.99941958 0.49325409;
+	-6.27330700 -0.00035989 0.00022047 7.27294711 0.99890068 0.99941964 0.49325388;
+	-6.27330710 -0.00035985 0.00022044 7.27294726 0.99890081 0.99941971 0.49325402;
+	-6.27330720 -0.00035981 0.00022041 7.27294740 0.99890094 0.99941978 0.49325423;
+	-6.27330730 -0.00035976 0.00022039 7.27294754 0.99890107 0.99941985 0.49325405;
+	-6.27330740 -0.00035972 0.00022036 7.27294768 0.99890119 0.99941991 0.49325402;
+	-6.27330750 -0.00035968 0.00022034 7.27294782 0.99890132 0.99941998 0.49325409;
+	-6.27330760 -0.00035964 0.00022031 7.27294796 0.99890145 0.99942005 0.49325408;
+	-6.27330770 -0.00035960 0.00022029 7.27294811 0.99890158 0.99942012 0.49325430;
+	-6.27330780 -0.00035956 0.00022026 7.27294825 0.99890171 0.99942018 0.49325412;
+	-6.27330790 -0.00035951 0.00022024 7.27294839 0.99890183 0.99942025 0.49325410;
+	-6.27330800 -0.00035947 0.00022021 7.27294853 0.99890196 0.99942032 0.49325444;
+	-6.27330810 -0.00035943 0.00022018 7.27294867 0.99890209 0.99942039 0.49325431;
+	-6.27330820 -0.00035939 0.00022016 7.27294882 0.99890222 0.99942045 0.49325422;
+	-6.27330830 -0.00035935 0.00022013 7.27294896 0.99890234 0.99942052 0.49325435;
+	-6.27330840 -0.00035931 0.00022011 7.27294910 0.99890247 0.99942059 0.49325426;
+	-6.27330850 -0.00035926 0.00022008 7.27294924 0.99890260 0.99942065 0.49325433;
+	-6.27330860 -0.00035922 0.00022006 7.27294938 0.99890273 0.99942072 0.49325432;
+	-6.27330870 -0.00035918 0.00022003 7.27294952 0.99890285 0.99942079 0.49325444;
+	-6.27330880 -0.00035914 0.00022001 7.27294966 0.99890298 0.99942086 0.49325435;
+	-6.27330890 -0.00035910 0.00021998 7.27294981 0.99890311 0.99942092 0.49325422;
+	-6.27330900 -0.00035906 0.00021995 7.27294995 0.99890323 0.99942099 0.49325439;
+	-6.27330910 -0.00035901 0.00021993 7.27295009 0.99890336 0.99942106 0.49325438;
+	-6.27330920 -0.00035897 0.00021990 7.27295023 0.99890349 0.99942113 0.49325454;
+	-6.27330930 -0.00035893 0.00021988 7.27295037 0.99890362 0.99942119 0.49325448;
+	-6.27330940 -0.00035889 0.00021985 7.27295051 0.99890374 0.99942126 0.49325441;
+	-6.27330950 -0.00035885 0.00021983 7.27295065 0.99890387 0.99942133 0.49325438;
+	-6.27330960 -0.00035881 0.00021980 7.27295079 0.99890400 0.99942139 0.49325444;
+	-6.27330970 -0.00035876 0.00021978 7.27295094 0.99890412 0.99942146 0.49325455;
+	-6.27330980 -0.00035872 0.00021975 7.27295108 0.99890425 0.99942153 0.49325435;
+	-6.27330990 -0.00035868 0.00021972 7.27295122 0.99890438 0.99942159 0.49325446;
+	-6.27331000 -0.00035864 0.00021970 7.27295136 0.99890451 0.99942166 0.49325463;
+	-6.27331010 -0.00035860 0.00021967 7.27295150 0.99890463 0.99942173 0.49325459;
+	-6.27331020 -0.00035856 0.00021965 7.27295164 0.99890476 0.99942180 0.49325444;
+	-6.27331030 -0.00035851 0.00021962 7.27295178 0.99890489 0.99942186 0.49325446;
+	-6.27331040 -0.00035847 0.00021960 7.27295192 0.99890501 0.99942193 0.49325470;
+	-6.27331050 -0.00035843 0.00021957 7.27295206 0.99890514 0.99942200 0.49325447;
+	-6.27331059 -0.00035839 0.00021955 7.27295220 0.99890527 0.99942206 0.49325451;
+	-6.27331069 -0.00035835 0.00021952 7.27295235 0.99890539 0.99942213 0.49325471;
+	-6.27331079 -0.00035831 0.00021950 7.27295249 0.99890552 0.99942220 0.49325479;
+	-6.27331089 -0.00035827 0.00021947 7.27295263 0.99890565 0.99942226 0.49325465;
+	-6.27331099 -0.00035822 0.00021944 7.27295277 0.99890577 0.99942233 0.49325460;
+	-6.27331109 -0.00035818 0.00021942 7.27295291 0.99890590 0.99942240 0.49325463;
+	-6.27331119 -0.00035814 0.00021939 7.27295305 0.99890603 0.99942246 0.49325475;
+	-6.27331129 -0.00035810 0.00021937 7.27295319 0.99890615 0.99942253 0.49325484;
+	-6.27331139 -0.00035806 0.00021934 7.27295333 0.99890628 0.99942260 0.49325478;
+	-6.27331149 -0.00035802 0.00021932 7.27295347 0.99890641 0.99942267 0.49325476;
+	-6.27331159 -0.00035798 0.00021929 7.27295361 0.99890653 0.99942273 0.49325474;
+	-6.27331169 -0.00035793 0.00021927 7.27295375 0.99890666 0.99942280 0.49325471;
+	-6.27331179 -0.00035789 0.00021924 7.27295389 0.99890679 0.99942287 0.49325479;
+	-6.27331188 -0.00035785 0.00021922 7.27295403 0.99890691 0.99942293 0.49325475;
+	-6.27331198 -0.00035781 0.00021919 7.27295417 0.99890704 0.99942300 0.49325483;
+	-6.27331208 -0.00035777 0.00021917 7.27295431 0.99890717 0.99942307 0.49325488;
+	-6.27331218 -0.00035773 0.00021914 7.27295445 0.99890729 0.99942313 0.49325468;
+	-6.27331228 -0.00035769 0.00021911 7.27295459 0.99890742 0.99942320 0.49325487;
+	-6.27331238 -0.00035764 0.00021909 7.27295473 0.99890754 0.99942327 0.49325491;
+	-6.27331248 -0.00035760 0.00021906 7.27295487 0.99890767 0.99942333 0.49325485;
+	-6.27331258 -0.00035756 0.00021904 7.27295501 0.99890780 0.99942340 0.49325494;
+	-6.27331268 -0.00035752 0.00021901 7.27295515 0.99890792 0.99942347 0.49325489;
+	-6.27331277 -0.00035748 0.00021899 7.27295529 0.99890805 0.99942353 0.49325507;
+	-6.27331287 -0.00035744 0.00021896 7.27295544 0.99890818 0.99942360 0.49325487;
+	-6.27331297 -0.00035740 0.00021894 7.27295558 0.99890830 0.99942367 0.49325485;
+	-6.27331307 -0.00035736 0.00021891 7.27295572 0.99890843 0.99942373 0.49325494;
+	-6.27331317 -0.00035731 0.00021889 7.27295586 0.99890855 0.99942380 0.49325502;
+	-6.27331327 -0.00035727 0.00021886 7.27295600 0.99890868 0.99942386 0.49325506;
+	-6.27331337 -0.00035723 0.00021884 7.27295614 0.99890881 0.99942393 0.49325501;
+	-6.27331347 -0.00035719 0.00021881 7.27295628 0.99890893 0.99942400 0.49325503;
+	-6.27331356 -0.00035715 0.00021879 7.27295642 0.99890906 0.99942406 0.49325490;
+	-6.27331366 -0.00035711 0.00021876 7.27295655 0.99890918 0.99942413 0.49325500;
+	-6.27331376 -0.00035707 0.00021874 7.27295669 0.99890931 0.99942420 0.49325510;
+	-6.27331386 -0.00035703 0.00021871 7.27295683 0.99890943 0.99942426 0.49325499;
+	-6.27331396 -0.00035698 0.00021869 7.27295697 0.99890956 0.99942433 0.49325505;
+	-6.27331406 -0.00035694 0.00021866 7.27295711 0.99890969 0.99942440 0.49325506;
+	-6.27331416 -0.00035690 0.00021863 7.27295725 0.99890981 0.99942446 0.49325523;
+	-6.27331425 -0.00035686 0.00021861 7.27295739 0.99890994 0.99942453 0.49325511;
+	-6.27331435 -0.00035682 0.00021858 7.27295753 0.99891006 0.99942460 0.49325502;
+	-6.27331445 -0.00035678 0.00021856 7.27295767 0.99891019 0.99942466 0.49325512;
+	-6.27331455 -0.00035674 0.00021853 7.27295781 0.99891032 0.99942473 0.49325535;
+	-6.27331465 -0.00035670 0.00021851 7.27295795 0.99891044 0.99942479 0.49325526;
+	-6.27331475 -0.00035666 0.00021848 7.27295809 0.99891057 0.99942486 0.49325504;
+	-6.27331485 -0.00035661 0.00021846 7.27295823 0.99891069 0.99942493 0.49325512;
+	-6.27331494 -0.00035657 0.00021843 7.27295837 0.99891082 0.99942499 0.49325533;
+	-6.27331504 -0.00035653 0.00021841 7.27295851 0.99891094 0.99942506 0.49325523;
+	-6.27331514 -0.00035649 0.00021838 7.27295865 0.99891107 0.99942513 0.49325528;
+	-6.27331524 -0.00035645 0.00021836 7.27295879 0.99891119 0.99942519 0.49325526;
+	-6.27331534 -0.00035641 0.00021833 7.27295893 0.99891132 0.99942526 0.49325527;
+	-6.27331543 -0.00035637 0.00021831 7.27295907 0.99891144 0.99942532 0.49325541;
+	-6.27331553 -0.00035633 0.00021828 7.27295921 0.99891157 0.99942539 0.49325526;
+	-6.27331563 -0.00035629 0.00021826 7.27295935 0.99891169 0.99942546 0.49325518;
+	-6.27331573 -0.00035625 0.00021823 7.27295948 0.99891182 0.99942552 0.49325527;
+	-6.27331583 -0.00035620 0.00021821 7.27295962 0.99891195 0.99942559 0.49325543;
+	-6.27331593 -0.00035616 0.00021818 7.27295976 0.99891207 0.99942566 0.49325535;
+	-6.27331602 -0.00035612 0.00021816 7.27295990 0.99891220 0.99942572 0.49325531;
+	-6.27331612 -0.00035608 0.00021813 7.27296004 0.99891232 0.99942579 0.49325537;
+	-6.27331622 -0.00035604 0.00021811 7.27296018 0.99891245 0.99942585 0.49325536;
+	-6.27331632 -0.00035600 0.00021808 7.27296032 0.99891257 0.99942592 0.49325546;
+	-6.27331642 -0.00035596 0.00021806 7.27296046 0.99891270 0.99942599 0.49325549;
+	-6.27331651 -0.00035592 0.00021803 7.27296060 0.99891282 0.99942605 0.49325546;
+	-6.27331661 -0.00035588 0.00021801 7.27296074 0.99891295 0.99942612 0.49325542;
+	-6.27331671 -0.00035584 0.00021798 7.27296087 0.99891307 0.99942618 0.49325537;
+	-6.27331681 -0.00035579 0.00021796 7.27296101 0.99891320 0.99942625 0.49325535;
+	-6.27331691 -0.00035575 0.00021793 7.27296115 0.99891332 0.99942632 0.49325540;
+	-6.27331700 -0.00035571 0.00021791 7.27296129 0.99891345 0.99942638 0.49325546;
+	-6.27331710 -0.00035567 0.00021788 7.27296143 0.99891357 0.99942645 0.49325545;
+	-6.27331720 -0.00035563 0.00021786 7.27296157 0.99891370 0.99942651 0.49325569;
+	-6.27331730 -0.00035559 0.00021783 7.27296171 0.99891382 0.99942658 0.49325550;
+	-6.27331740 -0.00035555 0.00021781 7.27296185 0.99891395 0.99942664 0.49325563;
+	-6.27331749 -0.00035551 0.00021778 7.27296198 0.99891407 0.99942671 0.49325568;
+	-6.27331759 -0.00035547 0.00021776 7.27296212 0.99891420 0.99942678 0.49325547;
+	-6.27331769 -0.00035543 0.00021773 7.27296226 0.99891432 0.99942684 0.49325550;
+	-6.27331779 -0.00035539 0.00021771 7.27296240 0.99891444 0.99942691 0.49325571;
+	-6.27331788 -0.00035535 0.00021768 7.27296254 0.99891457 0.99942697 0.49325568;
+	-6.27331798 -0.00035530 0.00021766 7.27296268 0.99891469 0.99942704 0.49325562;
+	-6.27331808 -0.00035526 0.00021763 7.27296281 0.99891482 0.99942711 0.49325569;
+	-6.27331818 -0.00035522 0.00021761 7.27296295 0.99891494 0.99942717 0.49325576;
+	-6.27331827 -0.00035518 0.00021758 7.27296309 0.99891507 0.99942724 0.49325584;
+	-6.27331837 -0.00035514 0.00021756 7.27296323 0.99891519 0.99942730 0.49325572;
+	-6.27331847 -0.00035510 0.00021753 7.27296337 0.99891532 0.99942737 0.49325557;
+	-6.27331857 -0.00035506 0.00021751 7.27296351 0.99891544 0.99942743 0.49325555;
+	-6.27331866 -0.00035502 0.00021748 7.27296364 0.99891557 0.99942750 0.49325590;
+	-6.27331876 -0.00035498 0.00021746 7.27296378 0.99891569 0.99942757 0.49325582;
+	-6.27331886 -0.00035494 0.00021743 7.27296392 0.99891581 0.99942763 0.49325599;
+	-6.27331896 -0.00035490 0.00021741 7.27296406 0.99891594 0.99942770 0.49325596;
+	-6.27331905 -0.00035486 0.00021738 7.27296420 0.99891606 0.99942776 0.49325600;
+	-6.27331915 -0.00035482 0.00021736 7.27296434 0.99891619 0.99942783 0.49325578;
+	-6.27331925 -0.00035478 0.00021733 7.27296447 0.99891631 0.99942789 0.49325597;
+	-6.27331935 -0.00035473 0.00021731 7.27296461 0.99891644 0.99942796 0.49325578;
+	-6.27331944 -0.00035469 0.00021728 7.27296475 0.99891656 0.99942802 0.49325601;
+	-6.27331954 -0.00035465 0.00021726 7.27296489 0.99891668 0.99942809 0.49325574;
+	-6.27331964 -0.00035461 0.00021723 7.27296503 0.99891681 0.99942816 0.49325598;
+	-6.27331974 -0.00035457 0.00021721 7.27296516 0.99891693 0.99942822 0.49325602;
+	-6.27331983 -0.00035453 0.00021718 7.27296530 0.99891706 0.99942829 0.49325595;
+	-6.27331993 -0.00035449 0.00021716 7.27296544 0.99891718 0.99942835 0.49325608;
+	-6.27332003 -0.00035445 0.00021713 7.27296558 0.99891730 0.99942842 0.49325597;
+	-6.27332012 -0.00035441 0.00021711 7.27296571 0.99891743 0.99942848 0.49325598;
+	-6.27332022 -0.00035437 0.00021708 7.27296585 0.99891755 0.99942855 0.49325613;
+	-6.27332032 -0.00035433 0.00021706 7.27296599 0.99891768 0.99942861 0.49325588;
+	-6.27332042 -0.00035429 0.00021703 7.27296613 0.99891780 0.99942868 0.49325598;
+	-6.27332051 -0.00035425 0.00021701 7.27296626 0.99891792 0.99942874 0.49325592;
+	-6.27332061 -0.00035421 0.00021698 7.27296640 0.99891805 0.99942881 0.49325612;
+	-6.27332071 -0.00035417 0.00021696 7.27296654 0.99891817 0.99942888 0.49325620;
+	-6.27332080 -0.00035413 0.00021693 7.27296668 0.99891830 0.99942894 0.49325610;
+	-6.27332090 -0.00035409 0.00021691 7.27296681 0.99891842 0.99942901 0.49325614;
+	-6.27332100 -0.00035405 0.00021688 7.27296695 0.99891854 0.99942907 0.49325612;
+	-6.27332109 -0.00035400 0.00021686 7.27296709 0.99891867 0.99942914 0.49325613;
+	-6.27332119 -0.00035396 0.00021683 7.27296723 0.99891879 0.99942920 0.49325604;
+	-6.27332129 -0.00035392 0.00021681 7.27296736 0.99891891 0.99942927 0.49325626;
+	-6.27332139 -0.00035388 0.00021678 7.27296750 0.99891904 0.99942933 0.49325625;
+	-6.27332148 -0.00035384 0.00021676 7.27296764 0.99891916 0.99942940 0.49325605;
+	-6.27332158 -0.00035380 0.00021673 7.27296778 0.99891928 0.99942946 0.49325626;
+	-6.27332168 -0.00035376 0.00021671 7.27296791 0.99891941 0.99942953 0.49325629;
+	-6.27332177 -0.00035372 0.00021669 7.27296805 0.99891953 0.99942959 0.49325630;
+	-6.27332187 -0.00035368 0.00021666 7.27296819 0.99891966 0.99942966 0.49325628;
+	-6.27332197 -0.00035364 0.00021664 7.27296833 0.99891978 0.99942972 0.49325635;
+	-6.27332206 -0.00035360 0.00021661 7.27296846 0.99891990 0.99942979 0.49325625;
+	-6.27332216 -0.00035356 0.00021659 7.27296860 0.99892003 0.99942985 0.49325617;
+	-6.27332226 -0.00035352 0.00021656 7.27296874 0.99892015 0.99942992 0.49325641;
+	-6.27332235 -0.00035348 0.00021654 7.27296887 0.99892027 0.99942998 0.49325636;
+	-6.27332245 -0.00035344 0.00021651 7.27296901 0.99892040 0.99943005 0.49325630;
+	-6.27332255 -0.00035340 0.00021649 7.27296915 0.99892052 0.99943011 0.49325637;
+	-6.27332264 -0.00035336 0.00021646 7.27296928 0.99892064 0.99943018 0.49325631;
+	-6.27332274 -0.00035332 0.00021644 7.27296942 0.99892077 0.99943024 0.49325656;
+	-6.27332284 -0.00035328 0.00021641 7.27296956 0.99892089 0.99943031 0.49325631;
+	-6.27332293 -0.00035324 0.00021639 7.27296970 0.99892101 0.99943037 0.49325638;
+	-6.27332303 -0.00035320 0.00021636 7.27296983 0.99892114 0.99943044 0.49325647;
+	-6.27332313 -0.00035316 0.00021634 7.27296997 0.99892126 0.99943050 0.49325639;
+	-6.27332322 -0.00035312 0.00021631 7.27297011 0.99892138 0.99943057 0.49325638;
+	-6.27332332 -0.00035308 0.00021629 7.27297024 0.99892150 0.99943063 0.49325638;
+	-6.27332341 -0.00035304 0.00021626 7.27297038 0.99892163 0.99943070 0.49325643;
+	-6.27332351 -0.00035300 0.00021624 7.27297052 0.99892175 0.99943076 0.49325659;
+	-6.27332361 -0.00035296 0.00021622 7.27297065 0.99892187 0.99943083 0.49325672;
+	-6.27332370 -0.00035291 0.00021619 7.27297079 0.99892200 0.99943089 0.49325654;
+	-6.27332380 -0.00035287 0.00021617 7.27297093 0.99892212 0.99943096 0.49325642;
+	-6.27332390 -0.00035283 0.00021614 7.27297106 0.99892224 0.99943102 0.49325660;
+	-6.27332399 -0.00035279 0.00021612 7.27297120 0.99892237 0.99943109 0.49325667;
+	-6.27332409 -0.00035275 0.00021609 7.27297133 0.99892249 0.99943115 0.49325649;
+	-6.27332418 -0.00035271 0.00021607 7.27297147 0.99892261 0.99943122 0.49325655;
+	-6.27332428 -0.00035267 0.00021604 7.27297161 0.99892273 0.99943128 0.49325662;
+	-6.27332438 -0.00035263 0.00021602 7.27297174 0.99892286 0.99943135 0.49325664;
+	-6.27332447 -0.00035259 0.00021599 7.27297188 0.99892298 0.99943141 0.49325657;
+	-6.27332457 -0.00035255 0.00021597 7.27297202 0.99892310 0.99943148 0.49325670;
+	-6.27332467 -0.00035251 0.00021594 7.27297215 0.99892322 0.99943154 0.49325664;
+	-6.27332476 -0.00035247 0.00021592 7.27297229 0.99892335 0.99943161 0.49325680;
+	-6.27332486 -0.00035243 0.00021590 7.27297243 0.99892347 0.99943167 0.49325677;
+	-6.27332495 -0.00035239 0.00021587 7.27297256 0.99892359 0.99943174 0.49325674;
+	-6.27332505 -0.00035235 0.00021585 7.27297270 0.99892371 0.99943180 0.49325673;
+	-6.27332515 -0.00035231 0.00021582 7.27297283 0.99892384 0.99943187 0.49325687;
+	-6.27332524 -0.00035227 0.00021580 7.27297297 0.99892396 0.99943193 0.49325676;
+	-6.27332534 -0.00035223 0.00021577 7.27297311 0.99892408 0.99943200 0.49325694;
+	-6.27332543 -0.00035219 0.00021575 7.27297324 0.99892420 0.99943206 0.49325684;
+	-6.27332553 -0.00035215 0.00021572 7.27297338 0.99892433 0.99943212 0.49325673;
+	-6.27332563 -0.00035211 0.00021570 7.27297351 0.99892445 0.99943219 0.49325679;
+	-6.27332572 -0.00035207 0.00021567 7.27297365 0.99892457 0.99943225 0.49325687;
+	-6.27332582 -0.00035203 0.00021565 7.27297379 0.99892469 0.99943232 0.49325682;
+	-6.27332591 -0.00035199 0.00021563 7.27297392 0.99892482 0.99943238 0.49325693;
+	-6.27332601 -0.00035195 0.00021560 7.27297406 0.99892494 0.99943245 0.49325706;
+	-6.27332611 -0.00035191 0.00021558 7.27297419 0.99892506 0.99943251 0.49325679;
+	-6.27332620 -0.00035187 0.00021555 7.27297433 0.99892518 0.99943258 0.49325693;
+	-6.27332630 -0.00035183 0.00021553 7.27297446 0.99892531 0.99943264 0.49325690;
+	-6.27332639 -0.00035179 0.00021550 7.27297460 0.99892543 0.99943271 0.49325679;
+	-6.27332649 -0.00035175 0.00021548 7.27297474 0.99892555 0.99943277 0.49325703;
+	-6.27332658 -0.00035171 0.00021545 7.27297487 0.99892567 0.99943283 0.49325709;
+	-6.27332668 -0.00035167 0.00021543 7.27297501 0.99892579 0.99943290 0.49325716;
+	-6.27332678 -0.00035163 0.00021540 7.27297514 0.99892592 0.99943296 0.49325688;
+	-6.27332687 -0.00035159 0.00021538 7.27297528 0.99892604 0.99943303 0.49325701;
+	-6.27332697 -0.00035155 0.00021536 7.27297541 0.99892616 0.99943309 0.49325699;
+	-6.27332706 -0.00035151 0.00021533 7.27297555 0.99892628 0.99943316 0.49325716;
+	-6.27332716 -0.00035147 0.00021531 7.27297569 0.99892640 0.99943322 0.49325705;
+	-6.27332725 -0.00035143 0.00021528 7.27297582 0.99892653 0.99943329 0.49325714;
+	-6.27332735 -0.00035139 0.00021526 7.27297596 0.99892665 0.99943335 0.49325697;
+	-6.27332744 -0.00035135 0.00021523 7.27297609 0.99892677 0.99943341 0.49325706;
+	-6.27332754 -0.00035131 0.00021521 7.27297623 0.99892689 0.99943348 0.49325710;
+	-6.27332763 -0.00035127 0.00021518 7.27297636 0.99892701 0.99943354 0.49325718;
+	-6.27332773 -0.00035123 0.00021516 7.27297650 0.99892714 0.99943361 0.49325714;
+	-6.27332783 -0.00035119 0.00021514 7.27297663 0.99892726 0.99943367 0.49325704;
+	-6.27332792 -0.00035115 0.00021511 7.27297677 0.99892738 0.99943374 0.49325724;
+	-6.27332802 -0.00035111 0.00021509 7.27297690 0.99892750 0.99943380 0.49325727;
+	-6.27332811 -0.00035107 0.00021506 7.27297704 0.99892762 0.99943386 0.49325718;
+	-6.27332821 -0.00035103 0.00021504 7.27297717 0.99892774 0.99943393 0.49325715;
+	-6.27332830 -0.00035099 0.00021501 7.27297731 0.99892787 0.99943399 0.49325736;
+	-6.27332840 -0.00035095 0.00021499 7.27297744 0.99892799 0.99943406 0.49325725;
+	-6.27332849 -0.00035091 0.00021496 7.27297758 0.99892811 0.99943412 0.49325737;
+	-6.27332859 -0.00035087 0.00021494 7.27297771 0.99892823 0.99943418 0.49325733;
+	-6.27332868 -0.00035084 0.00021492 7.27297785 0.99892835 0.99943425 0.49325727;
+	-6.27332878 -0.00035080 0.00021489 7.27297798 0.99892847 0.99943431 0.49325722;
+	-6.27332887 -0.00035076 0.00021487 7.27297812 0.99892859 0.99943438 0.49325726;
+	-6.27332897 -0.00035072 0.00021484 7.27297825 0.99892872 0.99943444 0.49325746;
+	-6.27332906 -0.00035068 0.00021482 7.27297839 0.99892884 0.99943451 0.49325735;
+	-6.27332916 -0.00035064 0.00021479 7.27297852 0.99892896 0.99943457 0.49325729;
+	-6.27332925 -0.00035060 0.00021477 7.27297866 0.99892908 0.99943463 0.49325733;
+	-6.27332935 -0.00035056 0.00021475 7.27297879 0.99892920 0.99943470 0.49325743;
+	-6.27332944 -0.00035052 0.00021472 7.27297893 0.99892932 0.99943476 0.49325745;
+	-6.27332954 -0.00035048 0.00021470 7.27297906 0.99892944 0.99943483 0.49325763;
+	-6.27332963 -0.00035044 0.00021467 7.27297920 0.99892956 0.99943489 0.49325734;
+	-6.27332973 -0.00035040 0.00021465 7.27297933 0.99892969 0.99943495 0.49325743;
+	-6.27332982 -0.00035036 0.00021462 7.27297947 0.99892981 0.99943502 0.49325746;
+	-6.27332992 -0.00035032 0.00021460 7.27297960 0.99892993 0.99943508 0.49325750;
+	-6.27333001 -0.00035028 0.00021458 7.27297973 0.99893005 0.99943515 0.49325754;
+	-6.27333011 -0.00035024 0.00021455 7.27297987 0.99893017 0.99943521 0.49325751;
+	-6.27333020 -0.00035020 0.00021453 7.27298000 0.99893029 0.99943527 0.49325761;
+	-6.27333030 -0.00035016 0.00021450 7.27298014 0.99893041 0.99943534 0.49325752;
+	-6.27333039 -0.00035012 0.00021448 7.27298027 0.99893053 0.99943540 0.49325748;
+	-6.27333049 -0.00035008 0.00021445 7.27298041 0.99893065 0.99943546 0.49325770;
+	-6.27333058 -0.00035004 0.00021443 7.27298054 0.99893078 0.99943553 0.49325749;
+	-6.27333068 -0.00035000 0.00021441 7.27298068 0.99893090 0.99943559 0.49325754;
+	-6.27333077 -0.00034996 0.00021438 7.27298081 0.99893102 0.99943566 0.49325757;
+	-6.27333087 -0.00034992 0.00021436 7.27298094 0.99893114 0.99943572 0.49325772;
+	-6.27333096 -0.00034988 0.00021433 7.27298108 0.99893126 0.99943578 0.49325749;
+	-6.27333106 -0.00034984 0.00021431 7.27298121 0.99893138 0.99943585 0.49325746;
+	-6.27333115 -0.00034980 0.00021428 7.27298135 0.99893150 0.99943591 0.49325763;
+	-6.27333125 -0.00034976 0.00021426 7.27298148 0.99893162 0.99943597 0.49325780;
+	-6.27333134 -0.00034973 0.00021424 7.27298162 0.99893174 0.99943604 0.49325773;
+	-6.27333144 -0.00034969 0.00021421 7.27298175 0.99893186 0.99943610 0.49325774;
+	-6.27333153 -0.00034965 0.00021419 7.27298188 0.99893198 0.99943617 0.49325768;
+	-6.27333162 -0.00034961 0.00021416 7.27298202 0.99893210 0.99943623 0.49325772;
+	-6.27333172 -0.00034957 0.00021414 7.27298215 0.99893223 0.99943629 0.49325780;
+	-6.27333181 -0.00034953 0.00021412 7.27298229 0.99893235 0.99943636 0.49325790;
+	-6.27333191 -0.00034949 0.00021409 7.27298242 0.99893247 0.99943642 0.49325769;
+	-6.27333200 -0.00034945 0.00021407 7.27298255 0.99893259 0.99943648 0.49325784;
+	-6.27333210 -0.00034941 0.00021404 7.27298269 0.99893271 0.99943655 0.49325781;
+	-6.27333219 -0.00034937 0.00021402 7.27298282 0.99893283 0.99943661 0.49325781;
+	-6.27333229 -0.00034933 0.00021399 7.27298296 0.99893295 0.99943668 0.49325775;
+	-6.27333238 -0.00034929 0.00021397 7.27298309 0.99893307 0.99943674 0.49325777;
+	-6.27333247 -0.00034925 0.00021395 7.27298322 0.99893319 0.99943680 0.49325794;
+	-6.27333257 -0.00034921 0.00021392 7.27298336 0.99893331 0.99943687 0.49325786;
+	-6.27333266 -0.00034917 0.00021390 7.27298349 0.99893343 0.99943693 0.49325783;
+	-6.27333276 -0.00034913 0.00021387 7.27298362 0.99893355 0.99943699 0.49325777;
+	-6.27333285 -0.00034909 0.00021385 7.27298376 0.99893367 0.99943706 0.49325800;
+	-6.27333295 -0.00034905 0.00021383 7.27298389 0.99893379 0.99943712 0.49325788;
+	-6.27333304 -0.00034902 0.00021380 7.27298402 0.99893391 0.99943718 0.49325796;
+	-6.27333313 -0.00034898 0.00021378 7.27298416 0.99893403 0.99943725 0.49325777;
+	-6.27333323 -0.00034894 0.00021375 7.27298429 0.99893415 0.99943731 0.49325803;
+	-6.27333332 -0.00034890 0.00021373 7.27298443 0.99893427 0.99943737 0.49325799;
+	-6.27333342 -0.00034886 0.00021370 7.27298456 0.99893439 0.99943744 0.49325815;
+	-6.27333351 -0.00034882 0.00021368 7.27298469 0.99893451 0.99943750 0.49325810;
+	-6.27333360 -0.00034878 0.00021366 7.27298483 0.99893463 0.99943756 0.49325805;
+	-6.27333370 -0.00034874 0.00021363 7.27298496 0.99893475 0.99943763 0.49325805;
+	-6.27333379 -0.00034870 0.00021361 7.27298509 0.99893487 0.99943769 0.49325810;
+	-6.27333389 -0.00034866 0.00021358 7.27298523 0.99893499 0.99943775 0.49325812;
+	-6.27333398 -0.00034862 0.00021356 7.27298536 0.99893511 0.99943782 0.49325800;
+	-6.27333408 -0.00034858 0.00021354 7.27298549 0.99893523 0.99943788 0.49325798;
+	-6.27333417 -0.00034854 0.00021351 7.27298563 0.99893535 0.99943794 0.49325819;
+	-6.27333426 -0.00034850 0.00021349 7.27298576 0.99893547 0.99943801 0.49325809;
+	-6.27333436 -0.00034847 0.00021346 7.27298589 0.99893559 0.99943807 0.49325811;
+	-6.27333445 -0.00034843 0.00021344 7.27298602 0.99893571 0.99943813 0.49325804;
+	-6.27333454 -0.00034839 0.00021342 7.27298616 0.99893583 0.99943820 0.49325814;
+	-6.27333464 -0.00034835 0.00021339 7.27298629 0.99893595 0.99943826 0.49325817;
+	-6.27333473 -0.00034831 0.00021337 7.27298642 0.99893607 0.99943832 0.49325810;
+	-6.27333483 -0.00034827 0.00021334 7.27298656 0.99893619 0.99943839 0.49325810;
+	-6.27333492 -0.00034823 0.00021332 7.27298669 0.99893631 0.99943845 0.49325813;
+	-6.27333501 -0.00034819 0.00021330 7.27298682 0.99893643 0.99943851 0.49325821;
+	-6.27333511 -0.00034815 0.00021327 7.27298696 0.99893655 0.99943858 0.49325825;
+	-6.27333520 -0.00034811 0.00021325 7.27298709 0.99893667 0.99943864 0.49325802;
+	-6.27333530 -0.00034807 0.00021322 7.27298722 0.99893679 0.99943870 0.49325839;
+	-6.27333539 -0.00034803 0.00021320 7.27298735 0.99893691 0.99943877 0.49325824;
+	-6.27333548 -0.00034800 0.00021318 7.27298749 0.99893703 0.99943883 0.49325827;
+	-6.27333558 -0.00034796 0.00021315 7.27298762 0.99893715 0.99943889 0.49325830;
+	-6.27333567 -0.00034792 0.00021313 7.27298775 0.99893727 0.99943895 0.49325817;
+	-6.27333576 -0.00034788 0.00021310 7.27298789 0.99893739 0.99943902 0.49325841;
+	-6.27333586 -0.00034784 0.00021308 7.27298802 0.99893751 0.99943908 0.49325836;
+	-6.27333595 -0.00034780 0.00021306 7.27298815 0.99893763 0.99943914 0.49325836;
+	-6.27333604 -0.00034776 0.00021303 7.27298828 0.99893774 0.99943921 0.49325838;
+	-6.27333614 -0.00034772 0.00021301 7.27298842 0.99893786 0.99943927 0.49325845;
+	-6.27333623 -0.00034768 0.00021298 7.27298855 0.99893798 0.99943933 0.49325848;
+	-6.27333632 -0.00034764 0.00021296 7.27298868 0.99893810 0.99943940 0.49325833;
+	-6.27333642 -0.00034760 0.00021294 7.27298881 0.99893822 0.99943946 0.49325843;
+	-6.27333651 -0.00034757 0.00021291 7.27298895 0.99893834 0.99943952 0.49325849;
+	-6.27333661 -0.00034753 0.00021289 7.27298908 0.99893846 0.99943958 0.49325841;
+	-6.27333670 -0.00034749 0.00021286 7.27298921 0.99893858 0.99943965 0.49325856;
+	-6.27333679 -0.00034745 0.00021284 7.27298934 0.99893870 0.99943971 0.49325841;
+	-6.27333689 -0.00034741 0.00021282 7.27298948 0.99893882 0.99943977 0.49325845;
+	-6.27333698 -0.00034737 0.00021279 7.27298961 0.99893894 0.99943984 0.49325852;
+	-6.27333707 -0.00034733 0.00021277 7.27298974 0.99893906 0.99943990 0.49325863;
+	-6.27333717 -0.00034729 0.00021275 7.27298987 0.99893918 0.99943996 0.49325866;
+	-6.27333726 -0.00034725 0.00021272 7.27299000 0.99893929 0.99944002 0.49325856;
+	-6.27333735 -0.00034721 0.00021270 7.27299014 0.99893941 0.99944009 0.49325854;
+	-6.27333745 -0.00034718 0.00021267 7.27299027 0.99893953 0.99944015 0.49325858;
+	-6.27333754 -0.00034714 0.00021265 7.27299040 0.99893965 0.99944021 0.49325856;
+	-6.27333763 -0.00034710 0.00021263 7.27299053 0.99893977 0.99944028 0.49325873;
+	-6.27333772 -0.00034706 0.00021260 7.27299067 0.99893989 0.99944034 0.49325877;
+	-6.27333782 -0.00034702 0.00021258 7.27299080 0.99894001 0.99944040 0.49325864;
+	-6.27333791 -0.00034698 0.00021255 7.27299093 0.99894013 0.99944046 0.49325857;
+	-6.27333800 -0.00034694 0.00021253 7.27299106 0.99894025 0.99944053 0.49325852;
+	-6.27333810 -0.00034690 0.00021251 7.27299119 0.99894036 0.99944059 0.49325872;
+	-6.27333819 -0.00034686 0.00021248 7.27299133 0.99894048 0.99944065 0.49325865;
+	-6.27333828 -0.00034683 0.00021246 7.27299146 0.99894060 0.99944072 0.49325884;
+	-6.27333838 -0.00034679 0.00021244 7.27299159 0.99894072 0.99944078 0.49325864;
+	-6.27333847 -0.00034675 0.00021241 7.27299172 0.99894084 0.99944084 0.49325865;
+	-6.27333856 -0.00034671 0.00021239 7.27299185 0.99894096 0.99944090 0.49325871;
+	-6.27333866 -0.00034667 0.00021236 7.27299199 0.99894108 0.99944097 0.49325862;
+	-6.27333875 -0.00034663 0.00021234 7.27299212 0.99894120 0.99944103 0.49325892;
+	-6.27333884 -0.00034659 0.00021232 7.27299225 0.99894131 0.99944109 0.49325886;
+	-6.27333893 -0.00034655 0.00021229 7.27299238 0.99894143 0.99944115 0.49325892;
+	-6.27333903 -0.00034652 0.00021227 7.27299251 0.99894155 0.99944122 0.49325878;
+	-6.27333912 -0.00034648 0.00021225 7.27299264 0.99894167 0.99944128 0.49325893;
+	-6.27333921 -0.00034644 0.00021222 7.27299278 0.99894179 0.99944134 0.49325882;
+	-6.27333931 -0.00034640 0.00021220 7.27299291 0.99894191 0.99944140 0.49325880;
+	-6.27333940 -0.00034636 0.00021217 7.27299304 0.99894202 0.99944147 0.49325884;
+	-6.27333949 -0.00034632 0.00021215 7.27299317 0.99894214 0.99944153 0.49325871;
+	-6.27333958 -0.00034628 0.00021213 7.27299330 0.99894226 0.99944159 0.49325888;
+	-6.27333968 -0.00034624 0.00021210 7.27299343 0.99894238 0.99944165 0.49325907;
+	-6.27333977 -0.00034620 0.00021208 7.27299356 0.99894250 0.99944172 0.49325884;
+	-6.27333986 -0.00034617 0.00021206 7.27299370 0.99894262 0.99944178 0.49325906;
+	-6.27333995 -0.00034613 0.00021203 7.27299383 0.99894273 0.99944184 0.49325903;
+	-6.27334005 -0.00034609 0.00021201 7.27299396 0.99894285 0.99944190 0.49325895;
+	-6.27334014 -0.00034605 0.00021198 7.27299409 0.99894297 0.99944197 0.49325883;
+	-6.27334023 -0.00034601 0.00021196 7.27299422 0.99894309 0.99944203 0.49325893;
+	-6.27334033 -0.00034597 0.00021194 7.27299435 0.99894321 0.99944209 0.49325903;
+	-6.27334042 -0.00034593 0.00021191 7.27299448 0.99894333 0.99944215 0.49325919;
+	-6.27334051 -0.00034590 0.00021189 7.27299461 0.99894344 0.99944222 0.49325911;
+	-6.27334060 -0.00034586 0.00021187 7.27299475 0.99894356 0.99944228 0.49325916;
+	-6.27334070 -0.00034582 0.00021184 7.27299488 0.99894368 0.99944234 0.49325910;
+	-6.27334079 -0.00034578 0.00021182 7.27299501 0.99894380 0.99944240 0.49325905;
+	-6.27334088 -0.00034574 0.00021179 7.27299514 0.99894392 0.99944246 0.49325907;
+	-6.27334097 -0.00034570 0.00021177 7.27299527 0.99894403 0.99944253 0.49325918;
+	-6.27334107 -0.00034566 0.00021175 7.27299540 0.99894415 0.99944259 0.49325910;
+	-6.27334116 -0.00034563 0.00021172 7.27299553 0.99894427 0.99944265 0.49325909;
+	-6.27334125 -0.00034559 0.00021170 7.27299566 0.99894439 0.99944271 0.49325903;
+	-6.27334134 -0.00034555 0.00021168 7.27299579 0.99894451 0.99944278 0.49325934;
+	-6.27334143 -0.00034551 0.00021165 7.27299593 0.99894462 0.99944284 0.49325921;
+	-6.27334153 -0.00034547 0.00021163 7.27299606 0.99894474 0.99944290 0.49325916;
+	-6.27334162 -0.00034543 0.00021161 7.27299619 0.99894486 0.99944296 0.49325905;
+	-6.27334171 -0.00034539 0.00021158 7.27299632 0.99894498 0.99944302 0.49325932;
+	-6.27334180 -0.00034536 0.00021156 7.27299645 0.99894509 0.99944309 0.49325918;
+	-6.27334190 -0.00034532 0.00021153 7.27299658 0.99894521 0.99944315 0.49325928;
+	-6.27334199 -0.00034528 0.00021151 7.27299671 0.99894533 0.99944321 0.49325927;
+	-6.27334208 -0.00034524 0.00021149 7.27299684 0.99894545 0.99944327 0.49325910;
+	-6.27334217 -0.00034520 0.00021146 7.27299697 0.99894557 0.99944334 0.49325933;
+	-6.27334226 -0.00034516 0.00021144 7.27299710 0.99894568 0.99944340 0.49325931;
+	-6.27334236 -0.00034512 0.00021142 7.27299723 0.99894580 0.99944346 0.49325913;
+	-6.27334245 -0.00034509 0.00021139 7.27299736 0.99894592 0.99944352 0.49325935;
+	-6.27334254 -0.00034505 0.00021137 7.27299749 0.99894604 0.99944358 0.49325926;
+	-6.27334263 -0.00034501 0.00021135 7.27299762 0.99894615 0.99944365 0.49325931;
+	-6.27334273 -0.00034497 0.00021132 7.27299776 0.99894627 0.99944371 0.49325923;
+	-6.27334282 -0.00034493 0.00021130 7.27299789 0.99894639 0.99944377 0.49325932;
+	-6.27334291 -0.00034489 0.00021128 7.27299802 0.99894651 0.99944383 0.49325937;
+	-6.27334300 -0.00034486 0.00021125 7.27299815 0.99894662 0.99944389 0.49325925;
+	-6.27334309 -0.00034482 0.00021123 7.27299828 0.99894674 0.99944396 0.49325938;
+	-6.27334319 -0.00034478 0.00021120 7.27299841 0.99894686 0.99944402 0.49325937;
+	-6.27334328 -0.00034474 0.00021118 7.27299854 0.99894697 0.99944408 0.49325933;
+	-6.27334337 -0.00034470 0.00021116 7.27299867 0.99894709 0.99944414 0.49325964;
+	-6.27334346 -0.00034466 0.00021113 7.27299880 0.99894721 0.99944420 0.49325932;
+	-6.27334355 -0.00034462 0.00021111 7.27299893 0.99894733 0.99944426 0.49325939;
+	-6.27334364 -0.00034459 0.00021109 7.27299906 0.99894744 0.99944433 0.49325953;
+	-6.27334374 -0.00034455 0.00021106 7.27299919 0.99894756 0.99944439 0.49325955;
+	-6.27334383 -0.00034451 0.00021104 7.27299932 0.99894768 0.99944445 0.49325952;
+	-6.27334392 -0.00034447 0.00021102 7.27299945 0.99894780 0.99944451 0.49325957;
+	-6.27334401 -0.00034443 0.00021099 7.27299958 0.99894791 0.99944457 0.49325952;
+	-6.27334410 -0.00034439 0.00021097 7.27299971 0.99894803 0.99944464 0.49325948;
+	-6.27334420 -0.00034436 0.00021095 7.27299984 0.99894815 0.99944470 0.49325953;
+	-6.27334429 -0.00034432 0.00021092 7.27299997 0.99894826 0.99944476 0.49325969;
+	-6.27334438 -0.00034428 0.00021090 7.27300010 0.99894838 0.99944482 0.49325951;
+	-6.27334447 -0.00034424 0.00021088 7.27300023 0.99894850 0.99944488 0.49325964;
+	-6.27334456 -0.00034420 0.00021085 7.27300036 0.99894861 0.99944494 0.49325959;
+	-6.27334465 -0.00034417 0.00021083 7.27300049 0.99894873 0.99944501 0.49325984;
+	-6.27334475 -0.00034413 0.00021081 7.27300062 0.99894885 0.99944507 0.49325961;
+	-6.27334484 -0.00034409 0.00021078 7.27300075 0.99894897 0.99944513 0.49325970;
+	-6.27334493 -0.00034405 0.00021076 7.27300088 0.99894908 0.99944519 0.49325973;
+	-6.27334502 -0.00034401 0.00021073 7.27300101 0.99894920 0.99944525 0.49325965;
+	-6.27334511 -0.00034397 0.00021071 7.27300114 0.99894932 0.99944531 0.49325961;
+	-6.27334520 -0.00034394 0.00021069 7.27300127 0.99894943 0.99944538 0.49325970;
+	-6.27334529 -0.00034390 0.00021066 7.27300140 0.99894955 0.99944544 0.49325947;
+	-6.27334539 -0.00034386 0.00021064 7.27300153 0.99894967 0.99944550 0.49325970;
+	-6.27334548 -0.00034382 0.00021062 7.27300166 0.99894978 0.99944556 0.49325986;
+	-6.27334557 -0.00034378 0.00021059 7.27300179 0.99894990 0.99944562 0.49325975;
+	-6.27334566 -0.00034374 0.00021057 7.27300192 0.99895002 0.99944568 0.49325973;
+	-6.27334575 -0.00034371 0.00021055 7.27300205 0.99895013 0.99944575 0.49325990;
+	-6.27334584 -0.00034367 0.00021052 7.27300217 0.99895025 0.99944581 0.49325987;
+	-6.27334593 -0.00034363 0.00021050 7.27300230 0.99895037 0.99944587 0.49325975;
+	-6.27334603 -0.00034359 0.00021048 7.27300243 0.99895048 0.99944593 0.49325986;
+	-6.27334612 -0.00034355 0.00021045 7.27300256 0.99895060 0.99944599 0.49325980;
+	-6.27334621 -0.00034352 0.00021043 7.27300269 0.99895072 0.99944605 0.49325999;
+	-6.27334630 -0.00034348 0.00021041 7.27300282 0.99895083 0.99944611 0.49326005;
+	-6.27334639 -0.00034344 0.00021038 7.27300295 0.99895095 0.99944618 0.49325989;
+	-6.27334648 -0.00034340 0.00021036 7.27300308 0.99895106 0.99944624 0.49325982;
+	-6.27334657 -0.00034336 0.00021034 7.27300321 0.99895118 0.99944630 0.49326004;
+	-6.27334666 -0.00034333 0.00021031 7.27300334 0.99895130 0.99944636 0.49325987;
+	-6.27334676 -0.00034329 0.00021029 7.27300347 0.99895141 0.99944642 0.49326003;
+	-6.27334685 -0.00034325 0.00021027 7.27300360 0.99895153 0.99944648 0.49325986;
+	-6.27334694 -0.00034321 0.00021024 7.27300373 0.99895165 0.99944654 0.49326013;
+	-6.27334703 -0.00034317 0.00021022 7.27300386 0.99895176 0.99944661 0.49326001;
+	-6.27334712 -0.00034313 0.00021020 7.27300399 0.99895188 0.99944667 0.49325997;
+	-6.27334721 -0.00034310 0.00021017 7.27300411 0.99895199 0.99944673 0.49325982;
+	-6.27334730 -0.00034306 0.00021015 7.27300424 0.99895211 0.99944679 0.49326004;
+	-6.27334739 -0.00034302 0.00021013 7.27300437 0.99895223 0.99944685 0.49326000;
+	-6.27334748 -0.00034298 0.00021010 7.27300450 0.99895234 0.99944691 0.49326002;
+	-6.27334758 -0.00034294 0.00021008 7.27300463 0.99895246 0.99944697 0.49326019;
+	-6.27334767 -0.00034291 0.00021006 7.27300476 0.99895258 0.99944704 0.49326022;
+	-6.27334776 -0.00034287 0.00021003 7.27300489 0.99895269 0.99944710 0.49325991;
+	-6.27334785 -0.00034283 0.00021001 7.27300502 0.99895281 0.99944716 0.49326017;
+	-6.27334794 -0.00034279 0.00020999 7.27300515 0.99895292 0.99944722 0.49326012;
+	-6.27334803 -0.00034276 0.00020996 7.27300527 0.99895304 0.99944728 0.49326022;
+	-6.27334812 -0.00034272 0.00020994 7.27300540 0.99895316 0.99944734 0.49326001;
+	-6.27334821 -0.00034268 0.00020992 7.27300553 0.99895327 0.99944740 0.49326024;
+	-6.27334830 -0.00034264 0.00020989 7.27300566 0.99895339 0.99944746 0.49326021;
+	-6.27334839 -0.00034260 0.00020987 7.27300579 0.99895350 0.99944753 0.49326029;
+	-6.27334848 -0.00034257 0.00020985 7.27300592 0.99895362 0.99944759 0.49326016;
+	-6.27334857 -0.00034253 0.00020983 7.27300605 0.99895373 0.99944765 0.49326016;
+	-6.27334867 -0.00034249 0.00020980 7.27300618 0.99895385 0.99944771 0.49326045;
+	-6.27334876 -0.00034245 0.00020978 7.27300630 0.99895397 0.99944777 0.49326011;
+	-6.27334885 -0.00034241 0.00020976 7.27300643 0.99895408 0.99944783 0.49326023;
+	-6.27334894 -0.00034238 0.00020973 7.27300656 0.99895420 0.99944789 0.49326007;
+	-6.27334903 -0.00034234 0.00020971 7.27300669 0.99895431 0.99944795 0.49326021;
+	-6.27334912 -0.00034230 0.00020969 7.27300682 0.99895443 0.99944801 0.49326027;
+	-6.27334921 -0.00034226 0.00020966 7.27300695 0.99895454 0.99944807 0.49326040;
+	-6.27334930 -0.00034222 0.00020964 7.27300708 0.99895466 0.99944814 0.49326032;
+	-6.27334939 -0.00034219 0.00020962 7.27300720 0.99895478 0.99944820 0.49326028;
+	-6.27334948 -0.00034215 0.00020959 7.27300733 0.99895489 0.99944826 0.49326022;
+	-6.27334957 -0.00034211 0.00020957 7.27300746 0.99895501 0.99944832 0.49326044;
+	-6.27334966 -0.00034207 0.00020955 7.27300759 0.99895512 0.99944838 0.49326036;
+	-6.27334975 -0.00034204 0.00020952 7.27300772 0.99895524 0.99944844 0.49326052;
+	-6.27334984 -0.00034200 0.00020950 7.27300785 0.99895535 0.99944850 0.49326050;
+	-6.27334993 -0.00034196 0.00020948 7.27300797 0.99895547 0.99944856 0.49326047;
+	-6.27335002 -0.00034192 0.00020945 7.27300810 0.99895558 0.99944862 0.49326049;
+	-6.27335011 -0.00034188 0.00020943 7.27300823 0.99895570 0.99944868 0.49326038;
+	-6.27335021 -0.00034185 0.00020941 7.27300836 0.99895582 0.99944875 0.49326054;
+	-6.27335030 -0.00034181 0.00020938 7.27300849 0.99895593 0.99944881 0.49326041;
+	-6.27335039 -0.00034177 0.00020936 7.27300861 0.99895605 0.99944887 0.49326059;
+	-6.27335048 -0.00034173 0.00020934 7.27300874 0.99895616 0.99944893 0.49326058;
+	-6.27335057 -0.00034170 0.00020932 7.27300887 0.99895628 0.99944899 0.49326043;
+	-6.27335066 -0.00034166 0.00020929 7.27300900 0.99895639 0.99944905 0.49326062;
+	-6.27335075 -0.00034162 0.00020927 7.27300913 0.99895651 0.99944911 0.49326067;
+	-6.27335084 -0.00034158 0.00020925 7.27300925 0.99895662 0.99944917 0.49326078;
+	-6.27335093 -0.00034154 0.00020922 7.27300938 0.99895674 0.99944923 0.49326065;
+	-6.27335102 -0.00034151 0.00020920 7.27300951 0.99895685 0.99944929 0.49326059;
+	-6.27335111 -0.00034147 0.00020918 7.27300964 0.99895697 0.99944935 0.49326055;
+	-6.27335120 -0.00034143 0.00020915 7.27300977 0.99895708 0.99944941 0.49326066;
+	-6.27335129 -0.00034139 0.00020913 7.27300989 0.99895720 0.99944948 0.49326077;
+	-6.27335138 -0.00034136 0.00020911 7.27301002 0.99895731 0.99944954 0.49326066;
+	-6.27335147 -0.00034132 0.00020908 7.27301015 0.99895743 0.99944960 0.49326075;
+	-6.27335156 -0.00034128 0.00020906 7.27301028 0.99895754 0.99944966 0.49326055;
+	-6.27335165 -0.00034124 0.00020904 7.27301040 0.99895766 0.99944972 0.49326086;
+	-6.27335174 -0.00034121 0.00020902 7.27301053 0.99895777 0.99944978 0.49326055;
+	-6.27335183 -0.00034117 0.00020899 7.27301066 0.99895789 0.99944984 0.49326069;
+	-6.27335192 -0.00034113 0.00020897 7.27301079 0.99895800 0.99944990 0.49326076;
+	-6.27335201 -0.00034109 0.00020895 7.27301092 0.99895812 0.99944996 0.49326064;
+	-6.27335210 -0.00034106 0.00020892 7.27301104 0.99895823 0.99945002 0.49326064;
+	-6.27335219 -0.00034102 0.00020890 7.27301117 0.99895835 0.99945008 0.49326079;
+	-6.27335228 -0.00034098 0.00020888 7.27301130 0.99895846 0.99945014 0.49326094;
+	-6.27335237 -0.00034094 0.00020885 7.27301143 0.99895858 0.99945020 0.49326073;
+	-6.27335246 -0.00034091 0.00020883 7.27301155 0.99895869 0.99945026 0.49326067;
+	-6.27335255 -0.00034087 0.00020881 7.27301168 0.99895881 0.99945032 0.49326096;
+	-6.27335264 -0.00034083 0.00020878 7.27301181 0.99895892 0.99945038 0.49326074;
+	-6.27335273 -0.00034079 0.00020876 7.27301194 0.99895903 0.99945045 0.49326072;
+	-6.27335282 -0.00034076 0.00020874 7.27301206 0.99895915 0.99945051 0.49326097;
+	-6.27335291 -0.00034072 0.00020872 7.27301219 0.99895926 0.99945057 0.49326095;
+	-6.27335300 -0.00034068 0.00020869 7.27301232 0.99895938 0.99945063 0.49326083;
+	-6.27335309 -0.00034064 0.00020867 7.27301244 0.99895949 0.99945069 0.49326094;
+	-6.27335318 -0.00034061 0.00020865 7.27301257 0.99895961 0.99945075 0.49326071;
+	-6.27335327 -0.00034057 0.00020862 7.27301270 0.99895972 0.99945081 0.49326094;
+	-6.27335336 -0.00034053 0.00020860 7.27301283 0.99895984 0.99945087 0.49326119;
+	-6.27335345 -0.00034049 0.00020858 7.27301295 0.99895995 0.99945093 0.49326102;
+	-6.27335354 -0.00034046 0.00020856 7.27301308 0.99896007 0.99945099 0.49326095;
+	-6.27335363 -0.00034042 0.00020853 7.27301321 0.99896018 0.99945105 0.49326111;
+	-6.27335372 -0.00034038 0.00020851 7.27301333 0.99896029 0.99945111 0.49326093;
+	-6.27335380 -0.00034034 0.00020849 7.27301346 0.99896041 0.99945117 0.49326092;
+	-6.27335389 -0.00034031 0.00020846 7.27301359 0.99896052 0.99945123 0.49326086;
+	-6.27335398 -0.00034027 0.00020844 7.27301372 0.99896064 0.99945129 0.49326111;
+	-6.27335407 -0.00034023 0.00020842 7.27301384 0.99896075 0.99945135 0.49326085;
+	-6.27335416 -0.00034019 0.00020839 7.27301397 0.99896087 0.99945141 0.49326107;
+	-6.27335425 -0.00034016 0.00020837 7.27301410 0.99896098 0.99945147 0.49326138;
+	-6.27335434 -0.00034012 0.00020835 7.27301422 0.99896109 0.99945153 0.49326107;
+	-6.27335443 -0.00034008 0.00020833 7.27301435 0.99896121 0.99945159 0.49326110;
+	-6.27335452 -0.00034004 0.00020830 7.27301448 0.99896132 0.99945165 0.49326107;
+	-6.27335461 -0.00034001 0.00020828 7.27301460 0.99896144 0.99945171 0.49326111;
+	-6.27335470 -0.00033997 0.00020826 7.27301473 0.99896155 0.99945177 0.49326094;
+	-6.27335479 -0.00033993 0.00020823 7.27301486 0.99896166 0.99945183 0.49326116;
+	-6.27335488 -0.00033989 0.00020821 7.27301498 0.99896178 0.99945189 0.49326119;
+	-6.27335497 -0.00033986 0.00020819 7.27301511 0.99896189 0.99945195 0.49326130;
+	-6.27335506 -0.00033982 0.00020817 7.27301524 0.99896201 0.99945201 0.49326119;
+	-6.27335515 -0.00033978 0.00020814 7.27301536 0.99896212 0.99945207 0.49326105;
+	-6.27335524 -0.00033975 0.00020812 7.27301549 0.99896223 0.99945213 0.49326119;
+	-6.27335533 -0.00033971 0.00020810 7.27301562 0.99896235 0.99945219 0.49326118;
+	-6.27335541 -0.00033967 0.00020807 7.27301574 0.99896246 0.99945225 0.49326126;
+	-6.27335550 -0.00033963 0.00020805 7.27301587 0.99896258 0.99945231 0.49326104;
+	-6.27335559 -0.00033960 0.00020803 7.27301600 0.99896269 0.99945237 0.49326124;
+	-6.27335568 -0.00033956 0.00020801 7.27301612 0.99896280 0.99945243 0.49326121;
+	-6.27335577 -0.00033952 0.00020798 7.27301625 0.99896292 0.99945249 0.49326126;
+	-6.27335586 -0.00033948 0.00020796 7.27301638 0.99896303 0.99945255 0.49326146;
+	-6.27335595 -0.00033945 0.00020794 7.27301650 0.99896315 0.99945261 0.49326123;
+	-6.27335604 -0.00033941 0.00020791 7.27301663 0.99896326 0.99945267 0.49326137;
+	-6.27335613 -0.00033937 0.00020789 7.27301675 0.99896337 0.99945274 0.49326124;
+	-6.27335622 -0.00033934 0.00020787 7.27301688 0.99896349 0.99945279 0.49326144;
+	-6.27335631 -0.00033930 0.00020785 7.27301701 0.99896360 0.99945286 0.49326118;
+	-6.27335639 -0.00033926 0.00020782 7.27301713 0.99896371 0.99945291 0.49326131;
+	-6.27335648 -0.00033922 0.00020780 7.27301726 0.99896383 0.99945297 0.49326131;
+	-6.27335657 -0.00033919 0.00020778 7.27301739 0.99896394 0.99945303 0.49326137;
+	-6.27335666 -0.00033915 0.00020776 7.27301751 0.99896405 0.99945309 0.49326160;
+	-6.27335675 -0.00033911 0.00020773 7.27301764 0.99896417 0.99945315 0.49326160;
+	-6.27335684 -0.00033908 0.00020771 7.27301776 0.99896428 0.99945321 0.49326123;
+	-6.27335693 -0.00033904 0.00020769 7.27301789 0.99896439 0.99945327 0.49326161;
+	-6.27335702 -0.00033900 0.00020766 7.27301802 0.99896451 0.99945333 0.49326152;
+	-6.27335711 -0.00033896 0.00020764 7.27301814 0.99896462 0.99945339 0.49326143;
+	-6.27335720 -0.00033893 0.00020762 7.27301827 0.99896473 0.99945345 0.49326145;
+	-6.27335728 -0.00033889 0.00020760 7.27301839 0.99896485 0.99945351 0.49326173;
+	-6.27335737 -0.00033885 0.00020757 7.27301852 0.99896496 0.99945357 0.49326144;
+	-6.27335746 -0.00033882 0.00020755 7.27301865 0.99896507 0.99945363 0.49326151;
+	-6.27335755 -0.00033878 0.00020753 7.27301877 0.99896519 0.99945369 0.49326137;
+	-6.27335764 -0.00033874 0.00020751 7.27301890 0.99896530 0.99945375 0.49326159;
+	-6.27335773 -0.00033870 0.00020748 7.27301902 0.99896541 0.99945381 0.49326170;
+	-6.27335782 -0.00033867 0.00020746 7.27301915 0.99896553 0.99945387 0.49326167;
+	-6.27335791 -0.00033863 0.00020744 7.27301927 0.99896564 0.99945393 0.49326166;
+	-6.27335799 -0.00033859 0.00020741 7.27301940 0.99896575 0.99945399 0.49326169;
+	-6.27335808 -0.00033856 0.00020739 7.27301953 0.99896587 0.99945405 0.49326162;
+	-6.27335817 -0.00033852 0.00020737 7.27301965 0.99896598 0.99945411 0.49326183;
+	-6.27335826 -0.00033848 0.00020735 7.27301978 0.99896609 0.99945417 0.49326173;
+	-6.27335835 -0.00033845 0.00020732 7.27301990 0.99896621 0.99945423 0.49326171;
+	-6.27335844 -0.00033841 0.00020730 7.27302003 0.99896632 0.99945429 0.49326166;
+	-6.27335853 -0.00033837 0.00020728 7.27302015 0.99896643 0.99945435 0.49326165;
+	-6.27335861 -0.00033833 0.00020726 7.27302028 0.99896655 0.99945441 0.49326181;
+	-6.27335870 -0.00033830 0.00020723 7.27302041 0.99896666 0.99945447 0.49326156;
+	-6.27335879 -0.00033826 0.00020721 7.27302053 0.99896677 0.99945453 0.49326193;
+	-6.27335888 -0.00033822 0.00020719 7.27302066 0.99896688 0.99945459 0.49326181;
+	-6.27335897 -0.00033819 0.00020716 7.27302078 0.99896700 0.99945465 0.49326163;
+	-6.27335906 -0.00033815 0.00020714 7.27302091 0.99896711 0.99945471 0.49326173;
+	-6.27335915 -0.00033811 0.00020712 7.27302103 0.99896722 0.99945477 0.49326188;
+	-6.27335923 -0.00033808 0.00020710 7.27302116 0.99896734 0.99945483 0.49326193;
+	-6.27335932 -0.00033804 0.00020707 7.27302128 0.99896745 0.99945489 0.49326203;
+	-6.27335941 -0.00033800 0.00020705 7.27302141 0.99896756 0.99945495 0.49326181;
+	-6.27335950 -0.00033797 0.00020703 7.27302153 0.99896767 0.99945501 0.49326178;
+	-6.27335959 -0.00033793 0.00020701 7.27302166 0.99896779 0.99945507 0.49326183;
+	-6.27335968 -0.00033789 0.00020698 7.27302178 0.99896790 0.99945512 0.49326183;
+	-6.27335976 -0.00033785 0.00020696 7.27302191 0.99896801 0.99945518 0.49326190;
+	-6.27335985 -0.00033782 0.00020694 7.27302203 0.99896813 0.99945524 0.49326204;
+	-6.27335994 -0.00033778 0.00020692 7.27302216 0.99896824 0.99945530 0.49326197;
+	-6.27336003 -0.00033774 0.00020689 7.27302228 0.99896835 0.99945536 0.49326200;
+	-6.27336012 -0.00033771 0.00020687 7.27302241 0.99896846 0.99945542 0.49326187;
+	-6.27336021 -0.00033767 0.00020685 7.27302253 0.99896858 0.99945548 0.49326214;
+	-6.27336029 -0.00033763 0.00020683 7.27302266 0.99896869 0.99945554 0.49326210;
+	-6.27336038 -0.00033760 0.00020680 7.27302278 0.99896880 0.99945560 0.49326210;
+	-6.27336047 -0.00033756 0.00020678 7.27302291 0.99896891 0.99945566 0.49326201;
+	-6.27336056 -0.00033752 0.00020676 7.27302303 0.99896903 0.99945572 0.49326223;
+	-6.27336065 -0.00033749 0.00020674 7.27302316 0.99896914 0.99945578 0.49326214;
+	-6.27336073 -0.00033745 0.00020671 7.27302328 0.99896925 0.99945584 0.49326184;
+	-6.27336082 -0.00033741 0.00020669 7.27302341 0.99896936 0.99945590 0.49326190;
+	-6.27336091 -0.00033738 0.00020667 7.27302353 0.99896948 0.99945596 0.49326192;
+	-6.27336100 -0.00033734 0.00020665 7.27302366 0.99896959 0.99945602 0.49326215;
+	-6.27336109 -0.00033730 0.00020662 7.27302378 0.99896970 0.99945607 0.49326198;
+	-6.27336117 -0.00033727 0.00020660 7.27302391 0.99896981 0.99945613 0.49326211;
+	-6.27336126 -0.00033723 0.00020658 7.27302403 0.99896992 0.99945619 0.49326202;
+	-6.27336135 -0.00033719 0.00020656 7.27302416 0.99897004 0.99945625 0.49326208;
+	-6.27336144 -0.00033716 0.00020653 7.27302428 0.99897015 0.99945631 0.49326216;
+	-6.27336153 -0.00033712 0.00020651 7.27302441 0.99897026 0.99945637 0.49326199;
+	-6.27336161 -0.00033708 0.00020649 7.27302453 0.99897037 0.99945643 0.49326218;
+	-6.27336170 -0.00033705 0.00020647 7.27302466 0.99897049 0.99945649 0.49326214;
+	-6.27336179 -0.00033701 0.00020644 7.27302478 0.99897060 0.99945655 0.49326240;
+	-6.27336188 -0.00033697 0.00020642 7.27302491 0.99897071 0.99945661 0.49326199;
+	-6.27336197 -0.00033694 0.00020640 7.27302503 0.99897082 0.99945667 0.49326203;
+	-6.27336205 -0.00033690 0.00020638 7.27302515 0.99897093 0.99945673 0.49326224;
+	-6.27336214 -0.00033686 0.00020635 7.27302528 0.99897105 0.99945679 0.49326220;
+	-6.27336223 -0.00033683 0.00020633 7.27302540 0.99897116 0.99945684 0.49326222;
+	-6.27336232 -0.00033679 0.00020631 7.27302553 0.99897127 0.99945690 0.49326242;
+	-6.27336240 -0.00033675 0.00020629 7.27302565 0.99897138 0.99945696 0.49326213;
+	-6.27336249 -0.00033672 0.00020626 7.27302578 0.99897149 0.99945702 0.49326219;
+	-6.27336258 -0.00033668 0.00020624 7.27302590 0.99897161 0.99945708 0.49326219;
+	-6.27336267 -0.00033664 0.00020622 7.27302603 0.99897172 0.99945714 0.49326250;
+	-6.27336275 -0.00033661 0.00020620 7.27302615 0.99897183 0.99945720 0.49326244;
+	-6.27336284 -0.00033657 0.00020617 7.27302627 0.99897194 0.99945726 0.49326221;
+	-6.27336293 -0.00033653 0.00020615 7.27302640 0.99897205 0.99945732 0.49326264;
+	-6.27336302 -0.00033650 0.00020613 7.27302652 0.99897216 0.99945738 0.49326232;
+	-6.27336311 -0.00033646 0.00020611 7.27302665 0.99897228 0.99945743 0.49326230;
+	-6.27336319 -0.00033642 0.00020608 7.27302677 0.99897239 0.99945749 0.49326227;
+	-6.27336328 -0.00033639 0.00020606 7.27302689 0.99897250 0.99945755 0.49326245;
+	-6.27336337 -0.00033635 0.00020604 7.27302702 0.99897261 0.99945761 0.49326242;
+	-6.27336346 -0.00033631 0.00020602 7.27302714 0.99897272 0.99945767 0.49326246;
+	-6.27336354 -0.00033628 0.00020599 7.27302727 0.99897283 0.99945773 0.49326241;
+	-6.27336363 -0.00033624 0.00020597 7.27302739 0.99897295 0.99945779 0.49326240;
+	-6.27336372 -0.00033620 0.00020595 7.27302751 0.99897306 0.99945785 0.49326249;
+	-6.27336381 -0.00033617 0.00020593 7.27302764 0.99897317 0.99945791 0.49326270;
+	-6.27336389 -0.00033613 0.00020590 7.27302776 0.99897328 0.99945797 0.49326235;
+	-6.27336398 -0.00033609 0.00020588 7.27302789 0.99897339 0.99945802 0.49326239;
+	-6.27336407 -0.00033606 0.00020586 7.27302801 0.99897350 0.99945808 0.49326248;
+	-6.27336415 -0.00033602 0.00020584 7.27302813 0.99897362 0.99945814 0.49326264;
+	-6.27336424 -0.00033598 0.00020582 7.27302826 0.99897373 0.99945820 0.49326263;
+	-6.27336433 -0.00033595 0.00020579 7.27302838 0.99897384 0.99945826 0.49326243;
+	-6.27336442 -0.00033591 0.00020577 7.27302851 0.99897395 0.99945832 0.49326267;
+	-6.27336450 -0.00033587 0.00020575 7.27302863 0.99897406 0.99945838 0.49326234;
+	-6.27336459 -0.00033584 0.00020573 7.27302875 0.99897417 0.99945844 0.49326251;
+	-6.27336468 -0.00033580 0.00020570 7.27302888 0.99897428 0.99945849 0.49326259;
+	-6.27336477 -0.00033577 0.00020568 7.27302900 0.99897439 0.99945855 0.49326266;
+	-6.27336485 -0.00033573 0.00020566 7.27302912 0.99897451 0.99945861 0.49326257;
+	-6.27336494 -0.00033569 0.00020564 7.27302925 0.99897462 0.99945867 0.49326257;
+	-6.27336503 -0.00033566 0.00020561 7.27302937 0.99897473 0.99945873 0.49326264;
+	-6.27336511 -0.00033562 0.00020559 7.27302949 0.99897484 0.99945879 0.49326274;
+	-6.27336520 -0.00033558 0.00020557 7.27302962 0.99897495 0.99945885 0.49326286;
+	-6.27336529 -0.00033555 0.00020555 7.27302974 0.99897506 0.99945891 0.49326289;
+	-6.27336538 -0.00033551 0.00020553 7.27302986 0.99897517 0.99945896 0.49326274;
+	-6.27336546 -0.00033547 0.00020550 7.27302999 0.99897528 0.99945902 0.49326267;
+	-6.27336555 -0.00033544 0.00020548 7.27303011 0.99897540 0.99945908 0.49326282;
+	-6.27336564 -0.00033540 0.00020546 7.27303023 0.99897551 0.99945914 0.49326268;
+	-6.27336572 -0.00033537 0.00020544 7.27303036 0.99897562 0.99945920 0.49326305;
+	-6.27336581 -0.00033533 0.00020541 7.27303048 0.99897573 0.99945926 0.49326276;
+	-6.27336590 -0.00033529 0.00020539 7.27303060 0.99897584 0.99945932 0.49326281;
+	-6.27336598 -0.00033526 0.00020537 7.27303073 0.99897595 0.99945937 0.49326294;
+	-6.27336607 -0.00033522 0.00020535 7.27303085 0.99897606 0.99945943 0.49326286;
+	-6.27336616 -0.00033518 0.00020532 7.27303097 0.99897617 0.99945949 0.49326281;
+	-6.27336625 -0.00033515 0.00020530 7.27303110 0.99897628 0.99945955 0.49326286;
+	-6.27336633 -0.00033511 0.00020528 7.27303122 0.99897639 0.99945961 0.49326297;
+	-6.27336642 -0.00033508 0.00020526 7.27303134 0.99897650 0.99945967 0.49326279;
+	-6.27336651 -0.00033504 0.00020524 7.27303147 0.99897662 0.99945973 0.49326311;
+	-6.27336659 -0.00033500 0.00020521 7.27303159 0.99897673 0.99945978 0.49326289;
+	-6.27336668 -0.00033497 0.00020519 7.27303171 0.99897684 0.99945984 0.49326305;
+	-6.27336677 -0.00033493 0.00020517 7.27303184 0.99897695 0.99945990 0.49326297;
+	-6.27336685 -0.00033489 0.00020515 7.27303196 0.99897706 0.99945996 0.49326277;
+	-6.27336694 -0.00033486 0.00020512 7.27303208 0.99897717 0.99946002 0.49326308;
+	-6.27336703 -0.00033482 0.00020510 7.27303221 0.99897728 0.99946008 0.49326289;
+	-6.27336711 -0.00033479 0.00020508 7.27303233 0.99897739 0.99946013 0.49326298;
+	-6.27336720 -0.00033475 0.00020506 7.27303245 0.99897750 0.99946019 0.49326300;
+	-6.27336729 -0.00033471 0.00020504 7.27303257 0.99897761 0.99946025 0.49326304;
+	-6.27336737 -0.00033468 0.00020501 7.27303270 0.99897772 0.99946031 0.49326311;
+	-6.27336746 -0.00033464 0.00020499 7.27303282 0.99897783 0.99946037 0.49326309;
+	-6.27336755 -0.00033460 0.00020497 7.27303294 0.99897794 0.99946043 0.49326303;
+	-6.27336763 -0.00033457 0.00020495 7.27303306 0.99897805 0.99946048 0.49326308;
+	-6.27336772 -0.00033453 0.00020493 7.27303319 0.99897816 0.99946054 0.49326287;
+	-6.27336781 -0.00033450 0.00020490 7.27303331 0.99897827 0.99946060 0.49326314;
+	-6.27336789 -0.00033446 0.00020488 7.27303343 0.99897839 0.99946066 0.49326307;
+	-6.27336798 -0.00033442 0.00020486 7.27303356 0.99897850 0.99946072 0.49326307;
+	-6.27336807 -0.00033439 0.00020484 7.27303368 0.99897861 0.99946078 0.49326322;
+	-6.27336815 -0.00033435 0.00020481 7.27303380 0.99897872 0.99946083 0.49326311;
+	-6.27336824 -0.00033432 0.00020479 7.27303392 0.99897883 0.99946089 0.49326322;
+	-6.27336833 -0.00033428 0.00020477 7.27303405 0.99897894 0.99946095 0.49326339;
+	-6.27336841 -0.00033424 0.00020475 7.27303417 0.99897905 0.99946101 0.49326319;
+	-6.27336850 -0.00033421 0.00020473 7.27303429 0.99897916 0.99946107 0.49326315;
+	-6.27336858 -0.00033417 0.00020470 7.27303441 0.99897927 0.99946113 0.49326326;
+	-6.27336867 -0.00033413 0.00020468 7.27303454 0.99897938 0.99946118 0.49326320;
+	-6.27336876 -0.00033410 0.00020466 7.27303466 0.99897949 0.99946124 0.49326335;
+	-6.27336884 -0.00033406 0.00020464 7.27303478 0.99897960 0.99946130 0.49326321;
+	-6.27336893 -0.00033403 0.00020462 7.27303490 0.99897971 0.99946136 0.49326341;
+	-6.27336902 -0.00033399 0.00020459 7.27303503 0.99897982 0.99946142 0.49326319;
+	-6.27336910 -0.00033395 0.00020457 7.27303515 0.99897993 0.99946147 0.49326349;
+	-6.27336919 -0.00033392 0.00020455 7.27303527 0.99898004 0.99946153 0.49326330;
+	-6.27336927 -0.00033388 0.00020453 7.27303539 0.99898015 0.99946159 0.49326316;
+	-6.27336936 -0.00033385 0.00020451 7.27303551 0.99898026 0.99946165 0.49326319;
+	-6.27336945 -0.00033381 0.00020448 7.27303564 0.99898037 0.99946171 0.49326337;
+	-6.27336953 -0.00033377 0.00020446 7.27303576 0.99898048 0.99946176 0.49326350;
+	-6.27336962 -0.00033374 0.00020444 7.27303588 0.99898059 0.99946182 0.49326333;
+	-6.27336971 -0.00033370 0.00020442 7.27303600 0.99898070 0.99946188 0.49326343;
+	-6.27336979 -0.00033367 0.00020439 7.27303613 0.99898081 0.99946194 0.49326342;
+	-6.27336988 -0.00033363 0.00020437 7.27303625 0.99898092 0.99946200 0.49326348;
+	-6.27336996 -0.00033359 0.00020435 7.27303637 0.99898103 0.99946205 0.49326358;
+	-6.27337005 -0.00033356 0.00020433 7.27303649 0.99898114 0.99946211 0.49326344;
+	-6.27337014 -0.00033352 0.00020431 7.27303661 0.99898125 0.99946217 0.49326333;
+	-6.27337022 -0.00033349 0.00020428 7.27303674 0.99898136 0.99946223 0.49326344;
+	-6.27337031 -0.00033345 0.00020426 7.27303686 0.99898147 0.99946229 0.49326346;
+	-6.27337039 -0.00033342 0.00020424 7.27303698 0.99898158 0.99946234 0.49326354;
+	-6.27337048 -0.00033338 0.00020422 7.27303710 0.99898169 0.99946240 0.49326336;
+	-6.27337057 -0.00033334 0.00020420 7.27303722 0.99898180 0.99946246 0.49326349;
+	-6.27337065 -0.00033331 0.00020417 7.27303734 0.99898191 0.99946252 0.49326348;
+	-6.27337074 -0.00033327 0.00020415 7.27303747 0.99898202 0.99946258 0.49326342;
+	-6.27337082 -0.00033324 0.00020413 7.27303759 0.99898213 0.99946263 0.49326343;
+	-6.27337091 -0.00033320 0.00020411 7.27303771 0.99898224 0.99946269 0.49326362;
+	-6.27337100 -0.00033316 0.00020409 7.27303783 0.99898234 0.99946275 0.49326356;
+	-6.27337108 -0.00033313 0.00020406 7.27303795 0.99898245 0.99946281 0.49326362;
+	-6.27337117 -0.00033309 0.00020404 7.27303808 0.99898256 0.99946287 0.49326353;
+	-6.27337125 -0.00033306 0.00020402 7.27303820 0.99898267 0.99946292 0.49326384;
+	-6.27337134 -0.00033302 0.00020400 7.27303832 0.99898278 0.99946298 0.49326355;
+	-6.27337142 -0.00033298 0.00020398 7.27303844 0.99898289 0.99946304 0.49326361;
+	-6.27337151 -0.00033295 0.00020395 7.27303856 0.99898300 0.99946310 0.49326362;
+	-6.27337160 -0.00033291 0.00020393 7.27303868 0.99898311 0.99946315 0.49326349;
+	-6.27337168 -0.00033288 0.00020391 7.27303880 0.99898322 0.99946321 0.49326369;
+	-6.27337177 -0.00033284 0.00020389 7.27303893 0.99898333 0.99946327 0.49326369;
+	-6.27337185 -0.00033281 0.00020387 7.27303905 0.99898344 0.99946333 0.49326369;
+	-6.27337194 -0.00033277 0.00020385 7.27303917 0.99898355 0.99946338 0.49326367;
+	-6.27337202 -0.00033273 0.00020382 7.27303929 0.99898366 0.99946344 0.49326359;
+	-6.27337211 -0.00033270 0.00020380 7.27303941 0.99898377 0.99946350 0.49326376;
+	-6.27337220 -0.00033266 0.00020378 7.27303953 0.99898388 0.99946356 0.49326382;
+	-6.27337228 -0.00033263 0.00020376 7.27303965 0.99898399 0.99946362 0.49326384;
+	-6.27337237 -0.00033259 0.00020374 7.27303978 0.99898409 0.99946367 0.49326379;
+	-6.27337245 -0.00033256 0.00020371 7.27303990 0.99898420 0.99946373 0.49326389;
+	-6.27337254 -0.00033252 0.00020369 7.27304002 0.99898431 0.99946379 0.49326390;
+	-6.27337262 -0.00033248 0.00020367 7.27304014 0.99898442 0.99946385 0.49326379;
+	-6.27337271 -0.00033245 0.00020365 7.27304026 0.99898453 0.99946390 0.49326384;
+	-6.27337279 -0.00033241 0.00020363 7.27304038 0.99898464 0.99946396 0.49326381;
+	-6.27337288 -0.00033238 0.00020360 7.27304050 0.99898475 0.99946402 0.49326372;
+	-6.27337297 -0.00033234 0.00020358 7.27304062 0.99898486 0.99946408 0.49326377;
+	-6.27337305 -0.00033231 0.00020356 7.27304075 0.99898497 0.99946413 0.49326406;
+	-6.27337314 -0.00033227 0.00020354 7.27304087 0.99898508 0.99946419 0.49326380;
+	-6.27337322 -0.00033223 0.00020352 7.27304099 0.99898519 0.99946425 0.49326407;
+	-6.27337331 -0.00033220 0.00020350 7.27304111 0.99898529 0.99946431 0.49326377;
+	-6.27337339 -0.00033216 0.00020347 7.27304123 0.99898540 0.99946436 0.49326399;
+	-6.27337348 -0.00033213 0.00020345 7.27304135 0.99898551 0.99946442 0.49326392;
+	-6.27337356 -0.00033209 0.00020343 7.27304147 0.99898562 0.99946448 0.49326402;
+	-6.27337365 -0.00033206 0.00020341 7.27304159 0.99898573 0.99946454 0.49326407;
+	-6.27337373 -0.00033202 0.00020339 7.27304171 0.99898584 0.99946459 0.49326397;
+	-6.27337382 -0.00033198 0.00020336 7.27304183 0.99898595 0.99946465 0.49326388;
+	-6.27337390 -0.00033195 0.00020334 7.27304196 0.99898606 0.99946471 0.49326400;
+	-6.27337399 -0.00033191 0.00020332 7.27304208 0.99898616 0.99946477 0.49326405;
+	-6.27337407 -0.00033188 0.00020330 7.27304220 0.99898627 0.99946482 0.49326405;
+	-6.27337416 -0.00033184 0.00020328 7.27304232 0.99898638 0.99946488 0.49326395;
+	-6.27337425 -0.00033181 0.00020326 7.27304244 0.99898649 0.99946494 0.49326406;
+	-6.27337433 -0.00033177 0.00020323 7.27304256 0.99898660 0.99946500 0.49326412;
+	-6.27337442 -0.00033174 0.00020321 7.27304268 0.99898671 0.99946505 0.49326418;
+	-6.27337450 -0.00033170 0.00020319 7.27304280 0.99898682 0.99946511 0.49326405;
+	-6.27337459 -0.00033166 0.00020317 7.27304292 0.99898693 0.99946517 0.49326394;
+	-6.27337467 -0.00033163 0.00020315 7.27304304 0.99898703 0.99946522 0.49326407;
+	-6.27337476 -0.00033159 0.00020312 7.27304316 0.99898714 0.99946528 0.49326381;
+	-6.27337484 -0.00033156 0.00020310 7.27304328 0.99898725 0.99946534 0.49326400;
+	-6.27337493 -0.00033152 0.00020308 7.27304340 0.99898736 0.99946540 0.49326414;
+	-6.27337501 -0.00033149 0.00020306 7.27304352 0.99898747 0.99946545 0.49326426;
+	-6.27337510 -0.00033145 0.00020304 7.27304364 0.99898758 0.99946551 0.49326422;
+	-6.27337518 -0.00033142 0.00020302 7.27304376 0.99898768 0.99946557 0.49326412;
+	-6.27337527 -0.00033138 0.00020299 7.27304389 0.99898779 0.99946563 0.49326410;
+	-6.27337535 -0.00033135 0.00020297 7.27304401 0.99898790 0.99946568 0.49326415;
+	-6.27337544 -0.00033131 0.00020295 7.27304413 0.99898801 0.99946574 0.49326422;
+	-6.27337552 -0.00033127 0.00020293 7.27304425 0.99898812 0.99946580 0.49326416;
+	-6.27337561 -0.00033124 0.00020291 7.27304437 0.99898823 0.99946585 0.49326449;
+	-6.27337569 -0.00033120 0.00020289 7.27304449 0.99898833 0.99946591 0.49326425;
+	-6.27337578 -0.00033117 0.00020286 7.27304461 0.99898844 0.99946597 0.49326435;
+	-6.27337586 -0.00033113 0.00020284 7.27304473 0.99898855 0.99946603 0.49326445;
+	-6.27337594 -0.00033110 0.00020282 7.27304485 0.99898866 0.99946608 0.49326455;
+	-6.27337603 -0.00033106 0.00020280 7.27304497 0.99898877 0.99946614 0.49326433;
+	-6.27337611 -0.00033103 0.00020278 7.27304509 0.99898888 0.99946620 0.49326418;
+	-6.27337620 -0.00033099 0.00020275 7.27304521 0.99898898 0.99946625 0.49326429;
+	-6.27337628 -0.00033096 0.00020273 7.27304533 0.99898909 0.99946631 0.49326433;
+	-6.27337637 -0.00033092 0.00020271 7.27304545 0.99898920 0.99946637 0.49326438;
+	-6.27337645 -0.00033088 0.00020269 7.27304557 0.99898931 0.99946643 0.49326440;
+	-6.27337654 -0.00033085 0.00020267 7.27304569 0.99898942 0.99946648 0.49326448;
+	-6.27337662 -0.00033081 0.00020265 7.27304581 0.99898952 0.99946654 0.49326440;
+	-6.27337671 -0.00033078 0.00020262 7.27304593 0.99898963 0.99946660 0.49326441;
+	-6.27337679 -0.00033074 0.00020260 7.27304605 0.99898974 0.99946665 0.49326439;
+	-6.27337688 -0.00033071 0.00020258 7.27304617 0.99898985 0.99946671 0.49326444;
+	-6.27337696 -0.00033067 0.00020256 7.27304629 0.99898996 0.99946677 0.49326437;
+	-6.27337705 -0.00033064 0.00020254 7.27304641 0.99899006 0.99946682 0.49326463;
+	-6.27337713 -0.00033060 0.00020252 7.27304653 0.99899017 0.99946688 0.49326433;
+	-6.27337721 -0.00033057 0.00020250 7.27304665 0.99899028 0.99946694 0.49326452;
+	-6.27337730 -0.00033053 0.00020247 7.27304677 0.99899039 0.99946700 0.49326464;
+	-6.27337738 -0.00033050 0.00020245 7.27304689 0.99899050 0.99946705 0.49326462;
+	-6.27337747 -0.00033046 0.00020243 7.27304701 0.99899060 0.99946711 0.49326446;
+	-6.27337755 -0.00033043 0.00020241 7.27304713 0.99899071 0.99946717 0.49326448;
+	-6.27337764 -0.00033039 0.00020239 7.27304725 0.99899082 0.99946722 0.49326479;
+	-6.27337772 -0.00033035 0.00020237 7.27304737 0.99899093 0.99946728 0.49326445;
+	-6.27337781 -0.00033032 0.00020234 7.27304749 0.99899103 0.99946734 0.49326446;
+	-6.27337789 -0.00033028 0.00020232 7.27304761 0.99899114 0.99946739 0.49326446;
+	-6.27337797 -0.00033025 0.00020230 7.27304773 0.99899125 0.99946745 0.49326456;
+	-6.27337806 -0.00033021 0.00020228 7.27304785 0.99899136 0.99946751 0.49326462;
+	-6.27337814 -0.00033018 0.00020226 7.27304796 0.99899146 0.99946756 0.49326466;
+	-6.27337823 -0.00033014 0.00020224 7.27304808 0.99899157 0.99946762 0.49326469;
+	-6.27337831 -0.00033011 0.00020221 7.27304820 0.99899168 0.99946768 0.49326455;
+	-6.27337840 -0.00033007 0.00020219 7.27304832 0.99899179 0.99946773 0.49326445;
+	-6.27337848 -0.00033004 0.00020217 7.27304844 0.99899190 0.99946779 0.49326466;
+	-6.27337856 -0.00033000 0.00020215 7.27304856 0.99899200 0.99946785 0.49326467;
+	-6.27337865 -0.00032997 0.00020213 7.27304868 0.99899211 0.99946790 0.49326472;
+	-6.27337873 -0.00032993 0.00020211 7.27304880 0.99899222 0.99946796 0.49326465;
+	-6.27337882 -0.00032990 0.00020208 7.27304892 0.99899233 0.99946802 0.49326487;
+	-6.27337890 -0.00032986 0.00020206 7.27304904 0.99899243 0.99946807 0.49326453;
+	-6.27337899 -0.00032983 0.00020204 7.27304916 0.99899254 0.99946813 0.49326462;
+	-6.27337907 -0.00032979 0.00020202 7.27304928 0.99899265 0.99946819 0.49326466;
+	-6.27337915 -0.00032976 0.00020200 7.27304940 0.99899275 0.99946824 0.49326470;
+	-6.27337924 -0.00032972 0.00020198 7.27304952 0.99899286 0.99946830 0.49326485;
+	-6.27337932 -0.00032969 0.00020196 7.27304964 0.99899297 0.99946836 0.49326493;
+	-6.27337941 -0.00032965 0.00020193 7.27304976 0.99899308 0.99946841 0.49326472;
+	-6.27337949 -0.00032962 0.00020191 7.27304987 0.99899318 0.99946847 0.49326466;
+	-6.27337957 -0.00032958 0.00020189 7.27304999 0.99899329 0.99946853 0.49326475;
+	-6.27337966 -0.00032955 0.00020187 7.27305011 0.99899340 0.99946858 0.49326474;
+	-6.27337974 -0.00032951 0.00020185 7.27305023 0.99899351 0.99946864 0.49326494;
+	-6.27337983 -0.00032948 0.00020183 7.27305035 0.99899361 0.99946870 0.49326475;
+	-6.27337991 -0.00032944 0.00020181 7.27305047 0.99899372 0.99946875 0.49326504;
+	-6.27337999 -0.00032941 0.00020178 7.27305059 0.99899383 0.99946881 0.49326510;
+	-6.27338008 -0.00032937 0.00020176 7.27305071 0.99899393 0.99946887 0.49326506;
+	-6.27338016 -0.00032934 0.00020174 7.27305083 0.99899404 0.99946892 0.49326491;
+	-6.27338025 -0.00032930 0.00020172 7.27305095 0.99899415 0.99946898 0.49326495;
+	-6.27338033 -0.00032927 0.00020170 7.27305106 0.99899425 0.99946904 0.49326488;
+	-6.27338041 -0.00032923 0.00020168 7.27305118 0.99899436 0.99946909 0.49326492;
+	-6.27338050 -0.00032920 0.00020165 7.27305130 0.99899447 0.99946915 0.49326492;
+	-6.27338058 -0.00032916 0.00020163 7.27305142 0.99899458 0.99946921 0.49326493;
+	-6.27338067 -0.00032913 0.00020161 7.27305154 0.99899468 0.99946926 0.49326498;
+	-6.27338075 -0.00032909 0.00020159 7.27305166 0.99899479 0.99946932 0.49326509;
+	-6.27338083 -0.00032906 0.00020157 7.27305178 0.99899490 0.99946938 0.49326511;
+	-6.27338092 -0.00032902 0.00020155 7.27305190 0.99899500 0.99946943 0.49326491;
+	-6.27338100 -0.00032899 0.00020153 7.27305201 0.99899511 0.99946949 0.49326497;
+	-6.27338108 -0.00032895 0.00020150 7.27305213 0.99899522 0.99946954 0.49326517;
+	-6.27338117 -0.00032892 0.00020148 7.27305225 0.99899532 0.99946960 0.49326501;
+	-6.27338125 -0.00032888 0.00020146 7.27305237 0.99899543 0.99946966 0.49326506;
+	-6.27338134 -0.00032885 0.00020144 7.27305249 0.99899554 0.99946971 0.49326507;
+	-6.27338142 -0.00032881 0.00020142 7.27305261 0.99899564 0.99946977 0.49326497;
+	-6.27338150 -0.00032878 0.00020140 7.27305273 0.99899575 0.99946983 0.49326508;
+	-6.27338159 -0.00032874 0.00020138 7.27305284 0.99899586 0.99946988 0.49326522;
+	-6.27338167 -0.00032871 0.00020135 7.27305296 0.99899596 0.99946994 0.49326525;
+	-6.27338175 -0.00032867 0.00020133 7.27305308 0.99899607 0.99946999 0.49326527;
+	-6.27338184 -0.00032864 0.00020131 7.27305320 0.99899618 0.99947005 0.49326512;
+	-6.27338192 -0.00032860 0.00020129 7.27305332 0.99899628 0.99947011 0.49326544;
+	-6.27338200 -0.00032857 0.00020127 7.27305344 0.99899639 0.99947016 0.49326511;
+	-6.27338209 -0.00032853 0.00020125 7.27305356 0.99899650 0.99947022 0.49326525;
+	-6.27338217 -0.00032850 0.00020123 7.27305367 0.99899660 0.99947028 0.49326517;
+	-6.27338225 -0.00032846 0.00020121 7.27305379 0.99899671 0.99947033 0.49326515;
+	-6.27338234 -0.00032843 0.00020118 7.27305391 0.99899682 0.99947039 0.49326512;
+	-6.27338242 -0.00032839 0.00020116 7.27305403 0.99899692 0.99947045 0.49326510;
+	-6.27338250 -0.00032836 0.00020114 7.27305415 0.99899703 0.99947050 0.49326538;
+	-6.27338259 -0.00032832 0.00020112 7.27305427 0.99899714 0.99947056 0.49326526;
+	-6.27338267 -0.00032829 0.00020110 7.27305438 0.99899724 0.99947061 0.49326555;
+	-6.27338275 -0.00032825 0.00020108 7.27305450 0.99899735 0.99947067 0.49326559;
+	-6.27338284 -0.00032822 0.00020106 7.27305462 0.99899745 0.99947073 0.49326528;
+	-6.27338292 -0.00032818 0.00020103 7.27305474 0.99899756 0.99947078 0.49326542;
+	-6.27338300 -0.00032815 0.00020101 7.27305486 0.99899767 0.99947084 0.49326519;
+	-6.27338309 -0.00032811 0.00020099 7.27305497 0.99899777 0.99947089 0.49326536;
+	-6.27338317 -0.00032808 0.00020097 7.27305509 0.99899788 0.99947095 0.49326533;
+	-6.27338325 -0.00032804 0.00020095 7.27305521 0.99899799 0.99947101 0.49326540;
+	-6.27338334 -0.00032801 0.00020093 7.27305533 0.99899809 0.99947106 0.49326552;
+	-6.27338342 -0.00032797 0.00020091 7.27305545 0.99899820 0.99947112 0.49326543;
+	-6.27338350 -0.00032794 0.00020089 7.27305556 0.99899830 0.99947117 0.49326548;
+	-6.27338359 -0.00032791 0.00020086 7.27305568 0.99899841 0.99947123 0.49326555;
+	-6.27338367 -0.00032787 0.00020084 7.27305580 0.99899852 0.99947129 0.49326550;
+	-6.27338375 -0.00032784 0.00020082 7.27305592 0.99899862 0.99947134 0.49326539;
+	-6.27338384 -0.00032780 0.00020080 7.27305604 0.99899873 0.99947140 0.49326537;
+	-6.27338392 -0.00032777 0.00020078 7.27305615 0.99899884 0.99947145 0.49326540;
+	-6.27338400 -0.00032773 0.00020076 7.27305627 0.99899894 0.99947151 0.49326552;
+	-6.27338409 -0.00032770 0.00020074 7.27305639 0.99899905 0.99947157 0.49326544;
+	-6.27338417 -0.00032766 0.00020072 7.27305651 0.99899915 0.99947162 0.49326541;
+	-6.27338425 -0.00032763 0.00020069 7.27305662 0.99899926 0.99947168 0.49326544;
+	-6.27338433 -0.00032759 0.00020067 7.27305674 0.99899937 0.99947173 0.49326555;
+	-6.27338442 -0.00032756 0.00020065 7.27305686 0.99899947 0.99947179 0.49326592;
+	-6.27338450 -0.00032752 0.00020063 7.27305698 0.99899958 0.99947185 0.49326555;
+	-6.27338458 -0.00032749 0.00020061 7.27305709 0.99899968 0.99947190 0.49326556;
+	-6.27338467 -0.00032745 0.00020059 7.27305721 0.99899979 0.99947196 0.49326577;
+	-6.27338475 -0.00032742 0.00020057 7.27305733 0.99899989 0.99947201 0.49326572;
+	-6.27338483 -0.00032739 0.00020055 7.27305745 0.99900000 0.99947207 0.49326564;
+	-6.27338492 -0.00032735 0.00020052 7.27305756 0.99900011 0.99947213 0.49326574;
+	-6.27338500 -0.00032732 0.00020050 7.27305768 0.99900021 0.99947218 0.49326570;
+	-6.27338508 -0.00032728 0.00020048 7.27305780 0.99900032 0.99947224 0.49326585;
+	-6.27338516 -0.00032725 0.00020046 7.27305792 0.99900042 0.99947229 0.49326561;
+	-6.27338525 -0.00032721 0.00020044 7.27305804 0.99900053 0.99947235 0.49326554;
+	-6.27338533 -0.00032718 0.00020042 7.27305815 0.99900063 0.99947240 0.49326565;
+	-6.27338541 -0.00032714 0.00020040 7.27305827 0.99900074 0.99947246 0.49326560;
+	-6.27338550 -0.00032711 0.00020038 7.27305839 0.99900085 0.99947252 0.49326561;
+	-6.27338558 -0.00032707 0.00020035 7.27305850 0.99900095 0.99947257 0.49326588;
+	-6.27338566 -0.00032704 0.00020033 7.27305862 0.99900106 0.99947263 0.49326567;
+	-6.27338574 -0.00032700 0.00020031 7.27305874 0.99900116 0.99947268 0.49326573;
+	-6.27338583 -0.00032697 0.00020029 7.27305886 0.99900127 0.99947274 0.49326588;
+	-6.27338591 -0.00032694 0.00020027 7.27305897 0.99900137 0.99947279 0.49326587;
+	-6.27338599 -0.00032690 0.00020025 7.27305909 0.99900148 0.99947285 0.49326591;
+	-6.27338607 -0.00032687 0.00020023 7.27305921 0.99900158 0.99947291 0.49326568;
+	-6.27338616 -0.00032683 0.00020021 7.27305932 0.99900169 0.99947296 0.49326586;
+	-6.27338624 -0.00032680 0.00020019 7.27305944 0.99900180 0.99947302 0.49326595;
+	-6.27338632 -0.00032676 0.00020016 7.27305956 0.99900190 0.99947307 0.49326594;
+	-6.27338640 -0.00032673 0.00020014 7.27305968 0.99900201 0.99947313 0.49326576;
+	-6.27338649 -0.00032669 0.00020012 7.27305979 0.99900211 0.99947318 0.49326600;
+	-6.27338657 -0.00032666 0.00020010 7.27305991 0.99900222 0.99947324 0.49326567;
+	-6.27338665 -0.00032663 0.00020008 7.27306003 0.99900232 0.99947330 0.49326591;
+	-6.27338674 -0.00032659 0.00020006 7.27306014 0.99900243 0.99947335 0.49326584;
+	-6.27338682 -0.00032656 0.00020004 7.27306026 0.99900253 0.99947341 0.49326591;
+	-6.27338690 -0.00032652 0.00020002 7.27306038 0.99900264 0.99947346 0.49326598;
+	-6.27338698 -0.00032649 0.00020000 7.27306050 0.99900274 0.99947352 0.49326605;
+	-6.27338706 -0.00032645 0.00019997 7.27306061 0.99900285 0.99947357 0.49326584;
+	-6.27338715 -0.00032642 0.00019995 7.27306073 0.99900295 0.99947363 0.49326610;
+	-6.27338723 -0.00032638 0.00019993 7.27306085 0.99900306 0.99947368 0.49326584;
+	-6.27338731 -0.00032635 0.00019991 7.27306096 0.99900316 0.99947374 0.49326595;
+	-6.27338739 -0.00032632 0.00019989 7.27306108 0.99900327 0.99947379 0.49326574;
+	-6.27338748 -0.00032628 0.00019987 7.27306120 0.99900337 0.99947385 0.49326593;
+	-6.27338756 -0.00032625 0.00019985 7.27306131 0.99900348 0.99947391 0.49326617;
+	-6.27338764 -0.00032621 0.00019983 7.27306143 0.99900358 0.99947396 0.49326608;
+	-6.27338772 -0.00032618 0.00019981 7.27306155 0.99900369 0.99947402 0.49326601;
+	-6.27338781 -0.00032614 0.00019978 7.27306166 0.99900379 0.99947407 0.49326595;
+	-6.27338789 -0.00032611 0.00019976 7.27306178 0.99900390 0.99947413 0.49326615;
+	-6.27338797 -0.00032607 0.00019974 7.27306190 0.99900400 0.99947418 0.49326594;
+	-6.27338805 -0.00032604 0.00019972 7.27306201 0.99900411 0.99947424 0.49326623;
+	-6.27338814 -0.00032601 0.00019970 7.27306213 0.99900421 0.99947429 0.49326628;
+	-6.27338822 -0.00032597 0.00019968 7.27306225 0.99900432 0.99947435 0.49326618;
+	-6.27338830 -0.00032594 0.00019966 7.27306236 0.99900442 0.99947440 0.49326621;
+	-6.27338838 -0.00032590 0.00019964 7.27306248 0.99900453 0.99947446 0.49326598;
+	-6.27338846 -0.00032587 0.00019962 7.27306260 0.99900463 0.99947452 0.49326615;
+	-6.27338855 -0.00032583 0.00019960 7.27306271 0.99900474 0.99947457 0.49326647;
+	-6.27338863 -0.00032580 0.00019957 7.27306283 0.99900484 0.99947463 0.49326621;
+	-6.27338871 -0.00032577 0.00019955 7.27306294 0.99900495 0.99947468 0.49326643;
+	-6.27338879 -0.00032573 0.00019953 7.27306306 0.99900505 0.99947474 0.49326629;
+	-6.27338887 -0.00032570 0.00019951 7.27306318 0.99900516 0.99947479 0.49326635;
+	-6.27338896 -0.00032566 0.00019949 7.27306329 0.99900526 0.99947485 0.49326632;
+	-6.27338904 -0.00032563 0.00019947 7.27306341 0.99900537 0.99947490 0.49326626;
+	-6.27338912 -0.00032559 0.00019945 7.27306353 0.99900547 0.99947496 0.49326639;
+	-6.27338920 -0.00032556 0.00019943 7.27306364 0.99900558 0.99947501 0.49326627;
+	-6.27338928 -0.00032553 0.00019941 7.27306376 0.99900568 0.99947507 0.49326645;
+	-6.27338937 -0.00032549 0.00019939 7.27306387 0.99900578 0.99947512 0.49326623;
+	-6.27338945 -0.00032546 0.00019936 7.27306399 0.99900589 0.99947518 0.49326607;
+	-6.27338953 -0.00032542 0.00019934 7.27306411 0.99900599 0.99947523 0.49326641;
+	-6.27338961 -0.00032539 0.00019932 7.27306422 0.99900610 0.99947529 0.49326644;
+	-6.27338969 -0.00032536 0.00019930 7.27306434 0.99900620 0.99947534 0.49326635;
+	-6.27338978 -0.00032532 0.00019928 7.27306446 0.99900631 0.99947540 0.49326617;
+	-6.27338986 -0.00032529 0.00019926 7.27306457 0.99900641 0.99947545 0.49326647;
+	-6.27338994 -0.00032525 0.00019924 7.27306469 0.99900652 0.99947551 0.49326638;
+	-6.27339002 -0.00032522 0.00019922 7.27306480 0.99900662 0.99947556 0.49326625;
+	-6.27339010 -0.00032518 0.00019920 7.27306492 0.99900673 0.99947562 0.49326654;
+	-6.27339019 -0.00032515 0.00019918 7.27306504 0.99900683 0.99947567 0.49326643;
+	-6.27339027 -0.00032512 0.00019915 7.27306515 0.99900693 0.99947573 0.49326639;
+	-6.27339035 -0.00032508 0.00019913 7.27306527 0.99900704 0.99947578 0.49326643;
+	-6.27339043 -0.00032505 0.00019911 7.27306538 0.99900714 0.99947584 0.49326613;
+	-6.27339051 -0.00032501 0.00019909 7.27306550 0.99900725 0.99947589 0.49326635;
+	-6.27339059 -0.00032498 0.00019907 7.27306561 0.99900735 0.99947595 0.49326654;
+	-6.27339068 -0.00032495 0.00019905 7.27306573 0.99900746 0.99947600 0.49326649;
+	-6.27339076 -0.00032491 0.00019903 7.27306585 0.99900756 0.99947606 0.49326645;
+	-6.27339084 -0.00032488 0.00019901 7.27306596 0.99900766 0.99947611 0.49326635;
+	-6.27339092 -0.00032484 0.00019899 7.27306608 0.99900777 0.99947617 0.49326646;
+	-6.27339100 -0.00032481 0.00019897 7.27306619 0.99900787 0.99947622 0.49326660;
+	-6.27339108 -0.00032477 0.00019895 7.27306631 0.99900798 0.99947628 0.49326653;
+	-6.27339117 -0.00032474 0.00019892 7.27306642 0.99900808 0.99947633 0.49326655;
+	-6.27339125 -0.00032471 0.00019890 7.27306654 0.99900818 0.99947639 0.49326642;
+	-6.27339133 -0.00032467 0.00019888 7.27306666 0.99900829 0.99947644 0.49326648;
+	-6.27339141 -0.00032464 0.00019886 7.27306677 0.99900839 0.99947650 0.49326679;
+	-6.27339149 -0.00032460 0.00019884 7.27306689 0.99900850 0.99947655 0.49326686;
+	-6.27339157 -0.00032457 0.00019882 7.27306700 0.99900860 0.99947661 0.49326656;
+	-6.27339165 -0.00032454 0.00019880 7.27306712 0.99900870 0.99947666 0.49326662;
+	-6.27339174 -0.00032450 0.00019878 7.27306723 0.99900881 0.99947672 0.49326679;
+	-6.27339182 -0.00032447 0.00019876 7.27306735 0.99900891 0.99947677 0.49326673;
+	-6.27339190 -0.00032443 0.00019874 7.27306746 0.99900902 0.99947683 0.49326675;
+	-6.27339198 -0.00032440 0.00019872 7.27306758 0.99900912 0.99947688 0.49326682;
+	-6.27339206 -0.00032437 0.00019870 7.27306770 0.99900922 0.99947694 0.49326647;
+	-6.27339214 -0.00032433 0.00019867 7.27306781 0.99900933 0.99947699 0.49326653;
+	-6.27339222 -0.00032430 0.00019865 7.27306793 0.99900943 0.99947705 0.49326669;
+	-6.27339231 -0.00032426 0.00019863 7.27306804 0.99900954 0.99947710 0.49326657;
+	-6.27339239 -0.00032423 0.00019861 7.27306816 0.99900964 0.99947716 0.49326679;
+	-6.27339247 -0.00032420 0.00019859 7.27306827 0.99900974 0.99947721 0.49326690;
+	-6.27339255 -0.00032416 0.00019857 7.27306839 0.99900985 0.99947727 0.49326680;
+	-6.27339263 -0.00032413 0.00019855 7.27306850 0.99900995 0.99947732 0.49326670;
+	-6.27339271 -0.00032409 0.00019853 7.27306862 0.99901005 0.99947738 0.49326690;
+	-6.27339279 -0.00032406 0.00019851 7.27306873 0.99901016 0.99947743 0.49326682;
+	-6.27339287 -0.00032403 0.00019849 7.27306885 0.99901026 0.99947749 0.49326670;
+	-6.27339296 -0.00032399 0.00019847 7.27306896 0.99901036 0.99947754 0.49326689;
+	-6.27339304 -0.00032396 0.00019845 7.27306908 0.99901047 0.99947760 0.49326683;
+	-6.27339312 -0.00032393 0.00019843 7.27306919 0.99901057 0.99947765 0.49326682;
+	-6.27339320 -0.00032389 0.00019840 7.27306931 0.99901068 0.99947770 0.49326694;
+	-6.27339328 -0.00032386 0.00019838 7.27306942 0.99901078 0.99947776 0.49326682;
+	-6.27339336 -0.00032382 0.00019836 7.27306954 0.99901088 0.99947781 0.49326696;
+	-6.27339344 -0.00032379 0.00019834 7.27306965 0.99901099 0.99947787 0.49326703;
+	-6.27339352 -0.00032376 0.00019832 7.27306977 0.99901109 0.99947792 0.49326705;
+	-6.27339360 -0.00032372 0.00019830 7.27306988 0.99901119 0.99947798 0.49326683;
+	-6.27339369 -0.00032369 0.00019828 7.27307000 0.99901130 0.99947803 0.49326692;
+	-6.27339377 -0.00032365 0.00019826 7.27307011 0.99901140 0.99947809 0.49326694;
+	-6.27339385 -0.00032362 0.00019824 7.27307023 0.99901150 0.99947814 0.49326688;
+	-6.27339393 -0.00032359 0.00019822 7.27307034 0.99901161 0.99947820 0.49326687;
+	-6.27339401 -0.00032355 0.00019820 7.27307046 0.99901171 0.99947825 0.49326697;
+	-6.27339409 -0.00032352 0.00019818 7.27307057 0.99901181 0.99947830 0.49326717;
+	-6.27339417 -0.00032349 0.00019816 7.27307069 0.99901192 0.99947836 0.49326712;
+	-6.27339425 -0.00032345 0.00019813 7.27307080 0.99901202 0.99947841 0.49326703;
+	-6.27339433 -0.00032342 0.00019811 7.27307092 0.99901212 0.99947847 0.49326706;
+	-6.27339441 -0.00032338 0.00019809 7.27307103 0.99901223 0.99947852 0.49326716;
+	-6.27339450 -0.00032335 0.00019807 7.27307115 0.99901233 0.99947858 0.49326689;
+	-6.27339458 -0.00032332 0.00019805 7.27307126 0.99901243 0.99947863 0.49326699;
+	-6.27339466 -0.00032328 0.00019803 7.27307137 0.99901254 0.99947869 0.49326696;
+	-6.27339474 -0.00032325 0.00019801 7.27307149 0.99901264 0.99947874 0.49326718;
+	-6.27339482 -0.00032321 0.00019799 7.27307160 0.99901274 0.99947880 0.49326717;
+	-6.27339490 -0.00032318 0.00019797 7.27307172 0.99901285 0.99947885 0.49326705;
+	-6.27339498 -0.00032315 0.00019795 7.27307183 0.99901295 0.99947890 0.49326716;
+	-6.27339506 -0.00032311 0.00019793 7.27307195 0.99901305 0.99947896 0.49326730;
+	-6.27339514 -0.00032308 0.00019791 7.27307206 0.99901315 0.99947901 0.49326718;
+	-6.27339522 -0.00032305 0.00019789 7.27307218 0.99901326 0.99947907 0.49326722;
+	-6.27339530 -0.00032301 0.00019787 7.27307229 0.99901336 0.99947912 0.49326715;
+	-6.27339538 -0.00032298 0.00019785 7.27307241 0.99901346 0.99947918 0.49326728;
+	-6.27339546 -0.00032295 0.00019782 7.27307252 0.99901357 0.99947923 0.49326724;
+	-6.27339555 -0.00032291 0.00019780 7.27307263 0.99901367 0.99947928 0.49326701;
+	-6.27339563 -0.00032288 0.00019778 7.27307275 0.99901377 0.99947934 0.49326708;
+	-6.27339571 -0.00032284 0.00019776 7.27307286 0.99901388 0.99947939 0.49326726;
+	-6.27339579 -0.00032281 0.00019774 7.27307298 0.99901398 0.99947945 0.49326720;
+	-6.27339587 -0.00032278 0.00019772 7.27307309 0.99901408 0.99947950 0.49326714;
+	-6.27339595 -0.00032274 0.00019770 7.27307321 0.99901418 0.99947956 0.49326729;
+	-6.27339603 -0.00032271 0.00019768 7.27307332 0.99901429 0.99947961 0.49326744;
+	-6.27339611 -0.00032268 0.00019766 7.27307343 0.99901439 0.99947966 0.49326726;
+	-6.27339619 -0.00032264 0.00019764 7.27307355 0.99901449 0.99947972 0.49326746;
+	-6.27339627 -0.00032261 0.00019762 7.27307366 0.99901459 0.99947977 0.49326747;
+	-6.27339635 -0.00032258 0.00019760 7.27307378 0.99901470 0.99947983 0.49326746;
+	-6.27339643 -0.00032254 0.00019758 7.27307389 0.99901480 0.99947988 0.49326737;
+	-6.27339651 -0.00032251 0.00019756 7.27307400 0.99901490 0.99947994 0.49326725;
+	-6.27339659 -0.00032247 0.00019754 7.27307412 0.99901501 0.99947999 0.49326744;
+	-6.27339667 -0.00032244 0.00019752 7.27307423 0.99901511 0.99948004 0.49326734;
+	-6.27339675 -0.00032241 0.00019749 7.27307435 0.99901521 0.99948010 0.49326748;
+	-6.27339683 -0.00032237 0.00019747 7.27307446 0.99901531 0.99948015 0.49326735;
+	-6.27339691 -0.00032234 0.00019745 7.27307457 0.99901542 0.99948021 0.49326718;
+	-6.27339699 -0.00032231 0.00019743 7.27307469 0.99901552 0.99948026 0.49326726;
+	-6.27339708 -0.00032227 0.00019741 7.27307480 0.99901562 0.99948031 0.49326739;
+	-6.27339716 -0.00032224 0.00019739 7.27307492 0.99901572 0.99948037 0.49326736;
+	-6.27339724 -0.00032221 0.00019737 7.27307503 0.99901583 0.99948042 0.49326751;
+	-6.27339732 -0.00032217 0.00019735 7.27307514 0.99901593 0.99948048 0.49326746;
+	-6.27339740 -0.00032214 0.00019733 7.27307526 0.99901603 0.99948053 0.49326750;
+	-6.27339748 -0.00032210 0.00019731 7.27307537 0.99901613 0.99948059 0.49326720;
+	-6.27339756 -0.00032207 0.00019729 7.27307549 0.99901624 0.99948064 0.49326742;
+	-6.27339764 -0.00032204 0.00019727 7.27307560 0.99901634 0.99948069 0.49326770;
+	-6.27339772 -0.00032200 0.00019725 7.27307571 0.99901644 0.99948075 0.49326757;
+	-6.27339780 -0.00032197 0.00019723 7.27307583 0.99901654 0.99948080 0.49326750;
+	-6.27339788 -0.00032194 0.00019721 7.27307594 0.99901664 0.99948086 0.49326781;
+	-6.27339796 -0.00032190 0.00019719 7.27307605 0.99901675 0.99948091 0.49326776;
+	-6.27339804 -0.00032187 0.00019717 7.27307617 0.99901685 0.99948096 0.49326747;
+	-6.27339812 -0.00032184 0.00019715 7.27307628 0.99901695 0.99948102 0.49326778;
+	-6.27339820 -0.00032180 0.00019713 7.27307639 0.99901705 0.99948107 0.49326749;
+	-6.27339828 -0.00032177 0.00019710 7.27307651 0.99901716 0.99948113 0.49326751;
+	-6.27339836 -0.00032174 0.00019708 7.27307662 0.99901726 0.99948118 0.49326780;
+	-6.27339844 -0.00032170 0.00019706 7.27307674 0.99901736 0.99948123 0.49326747;
+	-6.27339852 -0.00032167 0.00019704 7.27307685 0.99901746 0.99948129 0.49326772;
+	-6.27339860 -0.00032164 0.00019702 7.27307696 0.99901756 0.99948134 0.49326768;
+	-6.27339868 -0.00032160 0.00019700 7.27307708 0.99901767 0.99948139 0.49326756;
+	-6.27339876 -0.00032157 0.00019698 7.27307719 0.99901777 0.99948145 0.49326753;
+	-6.27339884 -0.00032154 0.00019696 7.27307730 0.99901787 0.99948150 0.49326754;
+	-6.27339892 -0.00032150 0.00019694 7.27307742 0.99901797 0.99948156 0.49326763;
+	-6.27339900 -0.00032147 0.00019692 7.27307753 0.99901807 0.99948161 0.49326773;
+	-6.27339908 -0.00032144 0.00019690 7.27307764 0.99901818 0.99948166 0.49326760;
+	-6.27339916 -0.00032140 0.00019688 7.27307776 0.99901828 0.99948172 0.49326795;
+	-6.27339924 -0.00032137 0.00019686 7.27307787 0.99901838 0.99948177 0.49326781;
+	-6.27339932 -0.00032134 0.00019684 7.27307798 0.99901848 0.99948183 0.49326791;
+	-6.27339940 -0.00032130 0.00019682 7.27307810 0.99901858 0.99948188 0.49326782;
+	-6.27339948 -0.00032127 0.00019680 7.27307821 0.99901869 0.99948193 0.49326774;
+	-6.27339956 -0.00032124 0.00019678 7.27307832 0.99901879 0.99948199 0.49326801;
+	-6.27339964 -0.00032120 0.00019676 7.27307843 0.99901889 0.99948204 0.49326796;
+	-6.27339972 -0.00032117 0.00019674 7.27307855 0.99901899 0.99948209 0.49326796;
+	-6.27339980 -0.00032114 0.00019672 7.27307866 0.99901909 0.99948215 0.49326764;
+	-6.27339988 -0.00032110 0.00019670 7.27307877 0.99901920 0.99948220 0.49326786;
+	-6.27339996 -0.00032107 0.00019668 7.27307889 0.99901930 0.99948226 0.49326797;
+	-6.27340004 -0.00032104 0.00019665 7.27307900 0.99901940 0.99948231 0.49326772;
+	-6.27340012 -0.00032100 0.00019663 7.27307911 0.99901950 0.99948236 0.49326808;
+	-6.27340020 -0.00032097 0.00019661 7.27307923 0.99901960 0.99948242 0.49326793;
+	-6.27340028 -0.00032094 0.00019659 7.27307934 0.99901970 0.99948247 0.49326800;
+	-6.27340036 -0.00032090 0.00019657 7.27307945 0.99901981 0.99948252 0.49326818;
+	-6.27340043 -0.00032087 0.00019655 7.27307956 0.99901991 0.99948258 0.49326800;
+	-6.27340051 -0.00032084 0.00019653 7.27307968 0.99902001 0.99948263 0.49326833;
+	-6.27340059 -0.00032080 0.00019651 7.27307979 0.99902011 0.99948268 0.49326799;
+	-6.27340067 -0.00032077 0.00019649 7.27307990 0.99902021 0.99948274 0.49326805;
+	-6.27340075 -0.00032074 0.00019647 7.27308002 0.99902031 0.99948279 0.49326790;
+	-6.27340083 -0.00032070 0.00019645 7.27308013 0.99902042 0.99948285 0.49326822;
+	-6.27340091 -0.00032067 0.00019643 7.27308024 0.99902052 0.99948290 0.49326817;
+	-6.27340099 -0.00032064 0.00019641 7.27308035 0.99902062 0.99948295 0.49326820;
+	-6.27340107 -0.00032060 0.00019639 7.27308047 0.99902072 0.99948301 0.49326814;
+	-6.27340115 -0.00032057 0.00019637 7.27308058 0.99902082 0.99948306 0.49326794;
+	-6.27340123 -0.00032054 0.00019635 7.27308069 0.99902092 0.99948311 0.49326788;
+	-6.27340131 -0.00032050 0.00019633 7.27308081 0.99902102 0.99948317 0.49326824;
+	-6.27340139 -0.00032047 0.00019631 7.27308092 0.99902113 0.99948322 0.49326821;
+	-6.27340147 -0.00032044 0.00019629 7.27308103 0.99902123 0.99948327 0.49326804;
+	-6.27340155 -0.00032040 0.00019627 7.27308114 0.99902133 0.99948333 0.49326826;
+	-6.27340163 -0.00032037 0.00019625 7.27308126 0.99902143 0.99948338 0.49326837;
+	-6.27340171 -0.00032034 0.00019623 7.27308137 0.99902153 0.99948343 0.49326808;
+	-6.27340179 -0.00032031 0.00019621 7.27308148 0.99902163 0.99948349 0.49326814;
+	-6.27340187 -0.00032027 0.00019619 7.27308159 0.99902173 0.99948354 0.49326823;
+	-6.27340194 -0.00032024 0.00019617 7.27308171 0.99902183 0.99948359 0.49326820;
+	-6.27340202 -0.00032021 0.00019615 7.27308182 0.99902194 0.99948365 0.49326819;
+	-6.27340210 -0.00032017 0.00019613 7.27308193 0.99902204 0.99948370 0.49326828;
+	-6.27340218 -0.00032014 0.00019611 7.27308204 0.99902214 0.99948376 0.49326815;
+	-6.27340226 -0.00032011 0.00019608 7.27308216 0.99902224 0.99948381 0.49326833;
+	-6.27340234 -0.00032007 0.00019606 7.27308227 0.99902234 0.99948386 0.49326820;
+	-6.27340242 -0.00032004 0.00019604 7.27308238 0.99902244 0.99948392 0.49326839;
+	-6.27340250 -0.00032001 0.00019602 7.27308249 0.99902254 0.99948397 0.49326825;
+	-6.27340258 -0.00031997 0.00019600 7.27308261 0.99902264 0.99948402 0.49326820;
+	-6.27340266 -0.00031994 0.00019598 7.27308272 0.99902274 0.99948408 0.49326829;
+	-6.27340274 -0.00031991 0.00019596 7.27308283 0.99902285 0.99948413 0.49326838;
+	-6.27340282 -0.00031987 0.00019594 7.27308294 0.99902295 0.99948418 0.49326829;
+	-6.27340290 -0.00031984 0.00019592 7.27308305 0.99902305 0.99948424 0.49326812;
+	-6.27340297 -0.00031981 0.00019590 7.27308317 0.99902315 0.99948429 0.49326825;
+	-6.27340305 -0.00031978 0.00019588 7.27308328 0.99902325 0.99948434 0.49326844;
+	-6.27340313 -0.00031974 0.00019586 7.27308339 0.99902335 0.99948440 0.49326822;
+	-6.27340321 -0.00031971 0.00019584 7.27308350 0.99902345 0.99948445 0.49326848;
+	-6.27340329 -0.00031968 0.00019582 7.27308361 0.99902355 0.99948450 0.49326823;
+	-6.27340337 -0.00031964 0.00019580 7.27308373 0.99902365 0.99948455 0.49326831;
+	-6.27340345 -0.00031961 0.00019578 7.27308384 0.99902375 0.99948461 0.49326842;
+	-6.27340353 -0.00031958 0.00019576 7.27308395 0.99902385 0.99948466 0.49326833;
+	-6.27340361 -0.00031954 0.00019574 7.27308406 0.99902396 0.99948471 0.49326844;
+	-6.27340369 -0.00031951 0.00019572 7.27308417 0.99902406 0.99948477 0.49326841;
+	-6.27340377 -0.00031948 0.00019570 7.27308429 0.99902416 0.99948482 0.49326813;
+	-6.27340384 -0.00031945 0.00019568 7.27308440 0.99902426 0.99948487 0.49326861;
+	-6.27340392 -0.00031941 0.00019566 7.27308451 0.99902436 0.99948493 0.49326836;
+	-6.27340400 -0.00031938 0.00019564 7.27308462 0.99902446 0.99948498 0.49326869;
+	-6.27340408 -0.00031935 0.00019562 7.27308473 0.99902456 0.99948503 0.49326883;
+	-6.27340416 -0.00031931 0.00019560 7.27308485 0.99902466 0.99948509 0.49326857;
+	-6.27340424 -0.00031928 0.00019558 7.27308496 0.99902476 0.99948514 0.49326861;
+	-6.27340432 -0.00031925 0.00019556 7.27308507 0.99902486 0.99948519 0.49326841;
+	-6.27340440 -0.00031922 0.00019554 7.27308518 0.99902496 0.99948525 0.49326856;
+	-6.27340448 -0.00031918 0.00019552 7.27308529 0.99902506 0.99948530 0.49326867;
+	-6.27340455 -0.00031915 0.00019550 7.27308540 0.99902516 0.99948535 0.49326859;
+	-6.27340463 -0.00031912 0.00019548 7.27308552 0.99902526 0.99948541 0.49326854;
+	-6.27340471 -0.00031908 0.00019546 7.27308563 0.99902536 0.99948546 0.49326869;
+	-6.27340479 -0.00031905 0.00019544 7.27308574 0.99902546 0.99948551 0.49326853;
+	-6.27340487 -0.00031902 0.00019542 7.27308585 0.99902557 0.99948556 0.49326880;
+	-6.27340495 -0.00031899 0.00019540 7.27308596 0.99902567 0.99948562 0.49326872;
+	-6.27340503 -0.00031895 0.00019538 7.27308607 0.99902577 0.99948567 0.49326861;
+	-6.27340511 -0.00031892 0.00019536 7.27308619 0.99902587 0.99948572 0.49326878;
+	-6.27340518 -0.00031889 0.00019534 7.27308630 0.99902597 0.99948578 0.49326876;
+	-6.27340526 -0.00031885 0.00019532 7.27308641 0.99902607 0.99948583 0.49326873;
+	-6.27340534 -0.00031882 0.00019530 7.27308652 0.99902617 0.99948588 0.49326869;
+	-6.27340542 -0.00031879 0.00019528 7.27308663 0.99902627 0.99948594 0.49326868;
+	-6.27340550 -0.00031876 0.00019526 7.27308674 0.99902637 0.99948599 0.49326886;
+	-6.27340558 -0.00031872 0.00019524 7.27308685 0.99902647 0.99948604 0.49326868;
+	-6.27340566 -0.00031869 0.00019522 7.27308697 0.99902657 0.99948609 0.49326883;
+	-6.27340573 -0.00031866 0.00019520 7.27308708 0.99902667 0.99948615 0.49326876;
+	-6.27340581 -0.00031862 0.00019518 7.27308719 0.99902677 0.99948620 0.49326874;
+	-6.27340589 -0.00031859 0.00019516 7.27308730 0.99902687 0.99948625 0.49326882;
+	-6.27340597 -0.00031856 0.00019514 7.27308741 0.99902697 0.99948631 0.49326866;
+	-6.27340605 -0.00031853 0.00019512 7.27308752 0.99902707 0.99948636 0.49326860;
+	-6.27340613 -0.00031849 0.00019510 7.27308763 0.99902717 0.99948641 0.49326865;
+	-6.27340621 -0.00031846 0.00019508 7.27308775 0.99902727 0.99948646 0.49326872;
+	-6.27340628 -0.00031843 0.00019506 7.27308786 0.99902737 0.99948652 0.49326863;
+	-6.27340636 -0.00031839 0.00019504 7.27308797 0.99902747 0.99948657 0.49326869;
+	-6.27340644 -0.00031836 0.00019502 7.27308808 0.99902757 0.99948662 0.49326888;
+	-6.27340652 -0.00031833 0.00019500 7.27308819 0.99902767 0.99948668 0.49326895;
+	-6.27340660 -0.00031830 0.00019498 7.27308830 0.99902777 0.99948673 0.49326876;
+	-6.27340668 -0.00031826 0.00019496 7.27308841 0.99902787 0.99948678 0.49326889;
+	-6.27340675 -0.00031823 0.00019494 7.27308852 0.99902797 0.99948683 0.49326878;
+	-6.27340683 -0.00031820 0.00019492 7.27308863 0.99902807 0.99948689 0.49326887;
+	-6.27340691 -0.00031817 0.00019490 7.27308875 0.99902817 0.99948694 0.49326916;
+	-6.27340699 -0.00031813 0.00019488 7.27308886 0.99902827 0.99948699 0.49326908;
+	-6.27340707 -0.00031810 0.00019486 7.27308897 0.99902837 0.99948704 0.49326893;
+	-6.27340715 -0.00031807 0.00019484 7.27308908 0.99902847 0.99948710 0.49326890;
+	-6.27340722 -0.00031803 0.00019482 7.27308919 0.99902857 0.99948715 0.49326887;
+	-6.27340730 -0.00031800 0.00019480 7.27308930 0.99902867 0.99948720 0.49326878;
+	-6.27340738 -0.00031797 0.00019478 7.27308941 0.99902877 0.99948726 0.49326894;
+	-6.27340746 -0.00031794 0.00019476 7.27308952 0.99902887 0.99948731 0.49326894;
+	-6.27340754 -0.00031790 0.00019474 7.27308963 0.99902897 0.99948736 0.49326908;
+	-6.27340761 -0.00031787 0.00019472 7.27308974 0.99902907 0.99948741 0.49326876;
+	-6.27340769 -0.00031784 0.00019470 7.27308985 0.99902917 0.99948747 0.49326912;
+	-6.27340777 -0.00031781 0.00019468 7.27308996 0.99902927 0.99948752 0.49326904;
+	-6.27340785 -0.00031777 0.00019466 7.27309008 0.99902937 0.99948757 0.49326901;
+	-6.27340793 -0.00031774 0.00019464 7.27309019 0.99902947 0.99948762 0.49326930;
+	-6.27340801 -0.00031771 0.00019462 7.27309030 0.99902957 0.99948768 0.49326907;
+	-6.27340808 -0.00031768 0.00019460 7.27309041 0.99902967 0.99948773 0.49326924;
+	-6.27340816 -0.00031764 0.00019458 7.27309052 0.99902977 0.99948778 0.49326904;
+	-6.27340824 -0.00031761 0.00019456 7.27309063 0.99902987 0.99948783 0.49326893;
+	-6.27340832 -0.00031758 0.00019454 7.27309074 0.99902997 0.99948789 0.49326909;
+	-6.27340840 -0.00031755 0.00019452 7.27309085 0.99903006 0.99948794 0.49326930;
+	-6.27340847 -0.00031751 0.00019450 7.27309096 0.99903016 0.99948799 0.49326922;
+	-6.27340855 -0.00031748 0.00019448 7.27309107 0.99903026 0.99948804 0.49326913;
+	-6.27340863 -0.00031745 0.00019446 7.27309118 0.99903036 0.99948810 0.49326905;
+	-6.27340871 -0.00031742 0.00019444 7.27309129 0.99903046 0.99948815 0.49326923;
+	-6.27340879 -0.00031738 0.00019442 7.27309140 0.99903056 0.99948820 0.49326938;
+	-6.27340886 -0.00031735 0.00019440 7.27309151 0.99903066 0.99948825 0.49326909;
+	-6.27340894 -0.00031732 0.00019438 7.27309162 0.99903076 0.99948831 0.49326912;
+	-6.27340902 -0.00031728 0.00019436 7.27309173 0.99903086 0.99948836 0.49326920;
+	-6.27340910 -0.00031725 0.00019434 7.27309184 0.99903096 0.99948841 0.49326917;
+	-6.27340917 -0.00031722 0.00019432 7.27309196 0.99903106 0.99948846 0.49326921;
+	-6.27340925 -0.00031719 0.00019430 7.27309207 0.99903116 0.99948852 0.49326919;
+	-6.27340933 -0.00031715 0.00019428 7.27309218 0.99903126 0.99948857 0.49326928;
+	-6.27340941 -0.00031712 0.00019426 7.27309229 0.99903136 0.99948862 0.49326918;
+	-6.27340949 -0.00031709 0.00019424 7.27309240 0.99903146 0.99948867 0.49326958;
+	-6.27340956 -0.00031706 0.00019422 7.27309251 0.99903156 0.99948873 0.49326936;
+	-6.27340964 -0.00031702 0.00019420 7.27309262 0.99903165 0.99948878 0.49326927;
+	-6.27340972 -0.00031699 0.00019418 7.27309273 0.99903175 0.99948883 0.49326942;
+	-6.27340980 -0.00031696 0.00019416 7.27309284 0.99903185 0.99948888 0.49326912;
+	-6.27340987 -0.00031693 0.00019414 7.27309295 0.99903195 0.99948894 0.49326924;
+	-6.27340995 -0.00031690 0.00019412 7.27309306 0.99903205 0.99948899 0.49326951;
+	-6.27341003 -0.00031686 0.00019410 7.27309317 0.99903215 0.99948904 0.49326942;
+	-6.27341011 -0.00031683 0.00019408 7.27309328 0.99903225 0.99948909 0.49326925;
+	-6.27341019 -0.00031680 0.00019406 7.27309339 0.99903235 0.99948914 0.49326927;
+	-6.27341026 -0.00031677 0.00019404 7.27309350 0.99903245 0.99948920 0.49326936;
+	-6.27341034 -0.00031673 0.00019402 7.27309361 0.99903255 0.99948925 0.49326944;
+	-6.27341042 -0.00031670 0.00019400 7.27309372 0.99903265 0.99948930 0.49326949;
+	-6.27341050 -0.00031667 0.00019398 7.27309383 0.99903274 0.99948935 0.49326915;
+	-6.27341057 -0.00031664 0.00019396 7.27309394 0.99903284 0.99948941 0.49326929;
+	-6.27341065 -0.00031660 0.00019394 7.27309405 0.99903294 0.99948946 0.49326955;
+	-6.27341073 -0.00031657 0.00019392 7.27309416 0.99903304 0.99948951 0.49326921;
+	-6.27341081 -0.00031654 0.00019390 7.27309427 0.99903314 0.99948956 0.49326941;
+	-6.27341088 -0.00031651 0.00019388 7.27309438 0.99903324 0.99948961 0.49326954;
+	-6.27341096 -0.00031647 0.00019386 7.27309449 0.99903334 0.99948967 0.49326935;
+	-6.27341104 -0.00031644 0.00019384 7.27309460 0.99903344 0.99948972 0.49326969;
+	-6.27341112 -0.00031641 0.00019382 7.27309471 0.99903354 0.99948977 0.49326971;
+	-6.27341119 -0.00031638 0.00019380 7.27309482 0.99903363 0.99948982 0.49326945;
+	-6.27341127 -0.00031634 0.00019378 7.27309493 0.99903373 0.99948988 0.49326964;
+	-6.27341135 -0.00031631 0.00019376 7.27309504 0.99903383 0.99948993 0.49326955;
+	-6.27341143 -0.00031628 0.00019374 7.27309515 0.99903393 0.99948998 0.49326931;
+	-6.27341150 -0.00031625 0.00019372 7.27309526 0.99903403 0.99949003 0.49326939;
+	-6.27341158 -0.00031622 0.00019370 7.27309537 0.99903413 0.99949008 0.49326953;
+	-6.27341166 -0.00031618 0.00019368 7.27309547 0.99903423 0.99949014 0.49326974;
+	-6.27341173 -0.00031615 0.00019366 7.27309558 0.99903433 0.99949019 0.49326980;
+	-6.27341181 -0.00031612 0.00019364 7.27309569 0.99903442 0.99949024 0.49326965;
+	-6.27341189 -0.00031609 0.00019362 7.27309580 0.99903452 0.99949029 0.49326969;
+	-6.27341197 -0.00031605 0.00019360 7.27309591 0.99903462 0.99949034 0.49326954;
+	-6.27341204 -0.00031602 0.00019358 7.27309602 0.99903472 0.99949040 0.49326953;
+	-6.27341212 -0.00031599 0.00019356 7.27309613 0.99903482 0.99949045 0.49326986;
+	-6.27341220 -0.00031596 0.00019354 7.27309624 0.99903492 0.99949050 0.49326990;
+	-6.27341228 -0.00031592 0.00019352 7.27309635 0.99903502 0.99949055 0.49326950;
+	-6.27341235 -0.00031589 0.00019350 7.27309646 0.99903511 0.99949060 0.49326968;
+	-6.27341243 -0.00031586 0.00019348 7.27309657 0.99903521 0.99949066 0.49326946;
+	-6.27341251 -0.00031583 0.00019346 7.27309668 0.99903531 0.99949071 0.49326958;
+	-6.27341258 -0.00031580 0.00019344 7.27309679 0.99903541 0.99949076 0.49326990;
+	-6.27341266 -0.00031576 0.00019342 7.27309690 0.99903551 0.99949081 0.49326972;
+	-6.27341274 -0.00031573 0.00019340 7.27309701 0.99903561 0.99949086 0.49326980;
+	-6.27341282 -0.00031570 0.00019338 7.27309712 0.99903570 0.99949092 0.49327001;
+	-6.27341289 -0.00031567 0.00019336 7.27309723 0.99903580 0.99949097 0.49326985;
+	-6.27341297 -0.00031563 0.00019334 7.27309734 0.99903590 0.99949102 0.49326983;
+	-6.27341305 -0.00031560 0.00019333 7.27309744 0.99903600 0.99949107 0.49326985;
+	-6.27341312 -0.00031557 0.00019331 7.27309755 0.99903610 0.99949112 0.49327005;
+	-6.27341320 -0.00031554 0.00019329 7.27309766 0.99903620 0.99949118 0.49326985;
+	-6.27341328 -0.00031551 0.00019327 7.27309777 0.99903629 0.99949123 0.49326980;
+	-6.27341336 -0.00031547 0.00019325 7.27309788 0.99903639 0.99949128 0.49326990;
+	-6.27341343 -0.00031544 0.00019323 7.27309799 0.99903649 0.99949133 0.49326985;
+	-6.27341351 -0.00031541 0.00019321 7.27309810 0.99903659 0.99949138 0.49326999;
+	-6.27341359 -0.00031538 0.00019319 7.27309821 0.99903669 0.99949144 0.49326989;
+	-6.27341366 -0.00031535 0.00019317 7.27309832 0.99903679 0.99949149 0.49326987;
+	-6.27341374 -0.00031531 0.00019315 7.27309843 0.99903688 0.99949154 0.49327012;
+	-6.27341382 -0.00031528 0.00019313 7.27309854 0.99903698 0.99949159 0.49326994;
+	-6.27341389 -0.00031525 0.00019311 7.27309864 0.99903708 0.99949164 0.49327001;
+	-6.27341397 -0.00031522 0.00019309 7.27309875 0.99903718 0.99949169 0.49327008;
+	-6.27341405 -0.00031519 0.00019307 7.27309886 0.99903728 0.99949175 0.49327008;
+	-6.27341412 -0.00031515 0.00019305 7.27309897 0.99903737 0.99949180 0.49326970;
+	-6.27341420 -0.00031512 0.00019303 7.27309908 0.99903747 0.99949185 0.49326989;
+	-6.27341428 -0.00031509 0.00019301 7.27309919 0.99903757 0.99949190 0.49326992;
+	-6.27341435 -0.00031506 0.00019299 7.27309930 0.99903767 0.99949195 0.49327000;
+	-6.27341443 -0.00031502 0.00019297 7.27309941 0.99903777 0.99949200 0.49327006;
+	-6.27341451 -0.00031499 0.00019295 7.27309952 0.99903786 0.99949206 0.49327023;
+	-6.27341459 -0.00031496 0.00019293 7.27309962 0.99903796 0.99949211 0.49327002;
+	-6.27341466 -0.00031493 0.00019291 7.27309973 0.99903806 0.99949216 0.49327004;
+	-6.27341474 -0.00031490 0.00019289 7.27309984 0.99903816 0.99949221 0.49327010;
+	-6.27341482 -0.00031486 0.00019287 7.27309995 0.99903826 0.99949226 0.49327000;
+	-6.27341489 -0.00031483 0.00019285 7.27310006 0.99903835 0.99949231 0.49326994;
+	-6.27341497 -0.00031480 0.00019283 7.27310017 0.99903845 0.99949237 0.49327008;
+	-6.27341505 -0.00031477 0.00019281 7.27310028 0.99903855 0.99949242 0.49327002;
+	-6.27341512 -0.00031474 0.00019279 7.27310039 0.99903865 0.99949247 0.49327015;
+	-6.27341520 -0.00031470 0.00019277 7.27310049 0.99903874 0.99949252 0.49326998;
+	-6.27341528 -0.00031467 0.00019275 7.27310060 0.99903884 0.99949257 0.49327030;
+	-6.27341535 -0.00031464 0.00019274 7.27310071 0.99903894 0.99949262 0.49326995;
+	-6.27341543 -0.00031461 0.00019272 7.27310082 0.99903904 0.99949268 0.49327013;
+	-6.27341550 -0.00031458 0.00019270 7.27310093 0.99903914 0.99949273 0.49327030;
+	-6.27341558 -0.00031454 0.00019268 7.27310104 0.99903923 0.99949278 0.49327016;
+	-6.27341566 -0.00031451 0.00019266 7.27310115 0.99903933 0.99949283 0.49327003;
+	-6.27341573 -0.00031448 0.00019264 7.27310125 0.99903943 0.99949288 0.49327020;
+	-6.27341581 -0.00031445 0.00019262 7.27310136 0.99903953 0.99949293 0.49327016;
+	-6.27341589 -0.00031442 0.00019260 7.27310147 0.99903962 0.99949298 0.49327038;
+	-6.27341596 -0.00031438 0.00019258 7.27310158 0.99903972 0.99949304 0.49327020;
+	-6.27341604 -0.00031435 0.00019256 7.27310169 0.99903982 0.99949309 0.49326989;
+	-6.27341612 -0.00031432 0.00019254 7.27310180 0.99903992 0.99949314 0.49327033;
+	-6.27341619 -0.00031429 0.00019252 7.27310190 0.99904001 0.99949319 0.49327021;
+	-6.27341627 -0.00031426 0.00019250 7.27310201 0.99904011 0.99949324 0.49327047;
+	-6.27341635 -0.00031423 0.00019248 7.27310212 0.99904021 0.99949329 0.49327024;
+	-6.27341642 -0.00031419 0.00019246 7.27310223 0.99904031 0.99949335 0.49327034;
+	-6.27341650 -0.00031416 0.00019244 7.27310234 0.99904040 0.99949340 0.49327024;
+	-6.27341658 -0.00031413 0.00019242 7.27310245 0.99904050 0.99949345 0.49327049;
+	-6.27341665 -0.00031410 0.00019240 7.27310255 0.99904060 0.99949350 0.49327029;
+	-6.27341673 -0.00031407 0.00019238 7.27310266 0.99904070 0.99949355 0.49327027;
+	-6.27341680 -0.00031403 0.00019236 7.27310277 0.99904079 0.99949360 0.49327052;
+	-6.27341688 -0.00031400 0.00019234 7.27310288 0.99904089 0.99949365 0.49327062;
+	-6.27341696 -0.00031397 0.00019232 7.27310299 0.99904099 0.99949370 0.49327051;
+	-6.27341703 -0.00031394 0.00019231 7.27310309 0.99904108 0.99949376 0.49327035;
+	-6.27341711 -0.00031391 0.00019229 7.27310320 0.99904118 0.99949381 0.49327029;
+	-6.27341719 -0.00031387 0.00019227 7.27310331 0.99904128 0.99949386 0.49327040;
+	-6.27341726 -0.00031384 0.00019225 7.27310342 0.99904138 0.99949391 0.49327054;
+	-6.27341734 -0.00031381 0.00019223 7.27310353 0.99904147 0.99949396 0.49327057;
+	-6.27341741 -0.00031378 0.00019221 7.27310363 0.99904157 0.99949401 0.49327065;
+	-6.27341749 -0.00031375 0.00019219 7.27310374 0.99904167 0.99949406 0.49327055;
+	-6.27341757 -0.00031372 0.00019217 7.27310385 0.99904177 0.99949412 0.49327044;
+	-6.27341764 -0.00031368 0.00019215 7.27310396 0.99904186 0.99949417 0.49327060;
+	-6.27341772 -0.00031365 0.00019213 7.27310407 0.99904196 0.99949422 0.49327062;
+	-6.27341779 -0.00031362 0.00019211 7.27310417 0.99904206 0.99949427 0.49327057;
+	-6.27341787 -0.00031359 0.00019209 7.27310428 0.99904215 0.99949432 0.49327068;
+	-6.27341795 -0.00031356 0.00019207 7.27310439 0.99904225 0.99949437 0.49327087;
+	-6.27341802 -0.00031353 0.00019205 7.27310450 0.99904235 0.99949442 0.49327065;
+	-6.27341810 -0.00031349 0.00019203 7.27310461 0.99904244 0.99949447 0.49327040;
+	-6.27341817 -0.00031346 0.00019201 7.27310471 0.99904254 0.99949453 0.49327056;
+	-6.27341825 -0.00031343 0.00019199 7.27310482 0.99904264 0.99949458 0.49327057;
+	-6.27341833 -0.00031340 0.00019197 7.27310493 0.99904274 0.99949463 0.49327059;
+	-6.27341840 -0.00031337 0.00019195 7.27310504 0.99904283 0.99949468 0.49327075;
+	-6.27341848 -0.00031333 0.00019194 7.27310514 0.99904293 0.99949473 0.49327058;
+	-6.27341855 -0.00031330 0.00019192 7.27310525 0.99904303 0.99949478 0.49327073;
+	-6.27341863 -0.00031327 0.00019190 7.27310536 0.99904312 0.99949483 0.49327054;
+	-6.27341871 -0.00031324 0.00019188 7.27310547 0.99904322 0.99949488 0.49327048;
+	-6.27341878 -0.00031321 0.00019186 7.27310557 0.99904332 0.99949493 0.49327086;
+	-6.27341886 -0.00031318 0.00019184 7.27310568 0.99904341 0.99949499 0.49327056;
+	-6.27341893 -0.00031314 0.00019182 7.27310579 0.99904351 0.99949504 0.49327071;
+	-6.27341901 -0.00031311 0.00019180 7.27310590 0.99904361 0.99949509 0.49327045;
+	-6.27341909 -0.00031308 0.00019178 7.27310600 0.99904370 0.99949514 0.49327067;
+	-6.27341916 -0.00031305 0.00019176 7.27310611 0.99904380 0.99949519 0.49327067;
+	-6.27341924 -0.00031302 0.00019174 7.27310622 0.99904390 0.99949524 0.49327074;
+	-6.27341931 -0.00031299 0.00019172 7.27310633 0.99904399 0.99949529 0.49327107;
+	-6.27341939 -0.00031295 0.00019170 7.27310643 0.99904409 0.99949534 0.49327064;
+	-6.27341946 -0.00031292 0.00019168 7.27310654 0.99904419 0.99949539 0.49327063;
+	-6.27341954 -0.00031289 0.00019166 7.27310665 0.99904428 0.99949545 0.49327050;
+	-6.27341962 -0.00031286 0.00019164 7.27310676 0.99904438 0.99949550 0.49327069;
+	-6.27341969 -0.00031283 0.00019162 7.27310686 0.99904448 0.99949555 0.49327081;
+	-6.27341977 -0.00031280 0.00019161 7.27310697 0.99904457 0.99949560 0.49327077;
+	-6.27341984 -0.00031276 0.00019159 7.27310708 0.99904467 0.99949565 0.49327081;
+	-6.27341992 -0.00031273 0.00019157 7.27310719 0.99904477 0.99949570 0.49327088;
+	-6.27341999 -0.00031270 0.00019155 7.27310729 0.99904486 0.99949575 0.49327082;
+	-6.27342007 -0.00031267 0.00019153 7.27310740 0.99904496 0.99949580 0.49327067;
+	-6.27342015 -0.00031264 0.00019151 7.27310751 0.99904506 0.99949585 0.49327061;
+	-6.27342022 -0.00031261 0.00019149 7.27310761 0.99904515 0.99949590 0.49327079;
+	-6.27342030 -0.00031258 0.00019147 7.27310772 0.99904525 0.99949595 0.49327103;
+	-6.27342037 -0.00031254 0.00019145 7.27310783 0.99904535 0.99949601 0.49327107;
+	-6.27342045 -0.00031251 0.00019143 7.27310794 0.99904544 0.99949606 0.49327084;
+	-6.27342052 -0.00031248 0.00019141 7.27310804 0.99904554 0.99949611 0.49327096;
+	-6.27342060 -0.00031245 0.00019139 7.27310815 0.99904563 0.99949616 0.49327062;
+	-6.27342067 -0.00031242 0.00019137 7.27310826 0.99904573 0.99949621 0.49327088;
+	-6.27342075 -0.00031239 0.00019135 7.27310836 0.99904583 0.99949626 0.49327094;
+	-6.27342083 -0.00031235 0.00019133 7.27310847 0.99904592 0.99949631 0.49327095;
+	-6.27342090 -0.00031232 0.00019132 7.27310858 0.99904602 0.99949636 0.49327111;
+	-6.27342098 -0.00031229 0.00019130 7.27310869 0.99904612 0.99949641 0.49327066;
+	-6.27342105 -0.00031226 0.00019128 7.27310879 0.99904621 0.99949646 0.49327112;
+	-6.27342113 -0.00031223 0.00019126 7.27310890 0.99904631 0.99949651 0.49327094;
+	-6.27342120 -0.00031220 0.00019124 7.27310901 0.99904641 0.99949656 0.49327097;
+	-6.27342128 -0.00031217 0.00019122 7.27310911 0.99904650 0.99949662 0.49327094;
+	-6.27342135 -0.00031213 0.00019120 7.27310922 0.99904660 0.99949667 0.49327120;
+	-6.27342143 -0.00031210 0.00019118 7.27310933 0.99904669 0.99949672 0.49327123;
+	-6.27342150 -0.00031207 0.00019116 7.27310943 0.99904679 0.99949677 0.49327124;
+	-6.27342158 -0.00031204 0.00019114 7.27310954 0.99904689 0.99949682 0.49327089;
+	-6.27342166 -0.00031201 0.00019112 7.27310965 0.99904698 0.99949687 0.49327096;
+	-6.27342173 -0.00031198 0.00019110 7.27310975 0.99904708 0.99949692 0.49327093;
+	-6.27342181 -0.00031195 0.00019108 7.27310986 0.99904717 0.99949697 0.49327128;
+	-6.27342188 -0.00031191 0.00019106 7.27310997 0.99904727 0.99949702 0.49327122;
+	-6.27342196 -0.00031188 0.00019105 7.27311007 0.99904737 0.99949707 0.49327128;
+	-6.27342203 -0.00031185 0.00019103 7.27311018 0.99904746 0.99949712 0.49327113;
+	-6.27342211 -0.00031182 0.00019101 7.27311029 0.99904756 0.99949717 0.49327121;
+	-6.27342218 -0.00031179 0.00019099 7.27311039 0.99904765 0.99949722 0.49327115;
+	-6.27342226 -0.00031176 0.00019097 7.27311050 0.99904775 0.99949727 0.49327114;
+	-6.27342233 -0.00031173 0.00019095 7.27311061 0.99904785 0.99949733 0.49327102;
+	-6.27342241 -0.00031169 0.00019093 7.27311071 0.99904794 0.99949738 0.49327120;
+	-6.27342248 -0.00031166 0.00019091 7.27311082 0.99904804 0.99949743 0.49327130;
+	-6.27342256 -0.00031163 0.00019089 7.27311093 0.99904813 0.99949748 0.49327109;
+	-6.27342263 -0.00031160 0.00019087 7.27311103 0.99904823 0.99949753 0.49327132;
+	-6.27342271 -0.00031157 0.00019085 7.27311114 0.99904833 0.99949758 0.49327146;
+	-6.27342278 -0.00031154 0.00019083 7.27311125 0.99904842 0.99949763 0.49327090;
+	-6.27342286 -0.00031151 0.00019081 7.27311135 0.99904852 0.99949768 0.49327123;
+	-6.27342293 -0.00031147 0.00019080 7.27311146 0.99904861 0.99949773 0.49327134;
+	-6.27342301 -0.00031144 0.00019078 7.27311156 0.99904871 0.99949778 0.49327133;
+	-6.27342308 -0.00031141 0.00019076 7.27311167 0.99904880 0.99949783 0.49327117;
+	-6.27342316 -0.00031138 0.00019074 7.27311178 0.99904890 0.99949788 0.49327124;
+	-6.27342323 -0.00031135 0.00019072 7.27311188 0.99904900 0.99949793 0.49327116;
+	-6.27342331 -0.00031132 0.00019070 7.27311199 0.99904909 0.99949798 0.49327125;
+	-6.27342338 -0.00031129 0.00019068 7.27311210 0.99904919 0.99949803 0.49327132;
+	-6.27342346 -0.00031126 0.00019066 7.27311220 0.99904928 0.99949808 0.49327161;
+	-6.27342353 -0.00031122 0.00019064 7.27311231 0.99904938 0.99949813 0.49327137;
+	-6.27342361 -0.00031119 0.00019062 7.27311242 0.99904947 0.99949818 0.49327141;
+	-6.27342368 -0.00031116 0.00019060 7.27311252 0.99904957 0.99949824 0.49327151;
+	-6.27342376 -0.00031113 0.00019058 7.27311263 0.99904966 0.99949829 0.49327147;
+	-6.27342383 -0.00031110 0.00019057 7.27311273 0.99904976 0.99949834 0.49327157;
+	-6.27342391 -0.00031107 0.00019055 7.27311284 0.99904986 0.99949839 0.49327158;
+	-6.27342398 -0.00031104 0.00019053 7.27311295 0.99904995 0.99949844 0.49327140;
+	-6.27342406 -0.00031101 0.00019051 7.27311305 0.99905005 0.99949849 0.49327149;
+	-6.27342413 -0.00031097 0.00019049 7.27311316 0.99905014 0.99949854 0.49327130;
+	-6.27342421 -0.00031094 0.00019047 7.27311326 0.99905024 0.99949859 0.49327138;
+	-6.27342428 -0.00031091 0.00019045 7.27311337 0.99905033 0.99949864 0.49327154;
+	-6.27342436 -0.00031088 0.00019043 7.27311348 0.99905043 0.99949869 0.49327144;
+	-6.27342443 -0.00031085 0.00019041 7.27311358 0.99905052 0.99949874 0.49327149;
+	-6.27342451 -0.00031082 0.00019039 7.27311369 0.99905062 0.99949879 0.49327160;
+	-6.27342458 -0.00031079 0.00019037 7.27311379 0.99905071 0.99949884 0.49327162;
+	-6.27342466 -0.00031076 0.00019035 7.27311390 0.99905081 0.99949889 0.49327146;
+	-6.27342473 -0.00031072 0.00019034 7.27311401 0.99905091 0.99949894 0.49327178;
+	-6.27342480 -0.00031069 0.00019032 7.27311411 0.99905100 0.99949899 0.49327156;
+	-6.27342488 -0.00031066 0.00019030 7.27311422 0.99905110 0.99949904 0.49327151;
+	-6.27342495 -0.00031063 0.00019028 7.27311432 0.99905119 0.99949909 0.49327157;
+	-6.27342503 -0.00031060 0.00019026 7.27311443 0.99905129 0.99949914 0.49327162;
+	-6.27342510 -0.00031057 0.00019024 7.27311453 0.99905138 0.99949919 0.49327180;
+	-6.27342518 -0.00031054 0.00019022 7.27311464 0.99905148 0.99949924 0.49327153;
+	-6.27342525 -0.00031051 0.00019020 7.27311475 0.99905157 0.99949929 0.49327170;
+	-6.27342533 -0.00031047 0.00019018 7.27311485 0.99905167 0.99949934 0.49327164;
+	-6.27342540 -0.00031044 0.00019016 7.27311496 0.99905176 0.99949939 0.49327177;
+	-6.27342548 -0.00031041 0.00019014 7.27311506 0.99905186 0.99949944 0.49327171;
+	-6.27342555 -0.00031038 0.00019013 7.27311517 0.99905195 0.99949949 0.49327163;
+	-6.27342563 -0.00031035 0.00019011 7.27311527 0.99905205 0.99949954 0.49327148;
+	-6.27342570 -0.00031032 0.00019009 7.27311538 0.99905214 0.99949959 0.49327177;
+	-6.27342577 -0.00031029 0.00019007 7.27311549 0.99905224 0.99949964 0.49327190;
+	-6.27342585 -0.00031026 0.00019005 7.27311559 0.99905233 0.99949969 0.49327174;
+	-6.27342592 -0.00031023 0.00019003 7.27311570 0.99905243 0.99949974 0.49327179;
+	-6.27342600 -0.00031019 0.00019001 7.27311580 0.99905252 0.99949979 0.49327165;
+	-6.27342607 -0.00031016 0.00018999 7.27311591 0.99905262 0.99949984 0.49327180;
+	-6.27342615 -0.00031013 0.00018997 7.27311601 0.99905271 0.99949989 0.49327176;
+	-6.27342622 -0.00031010 0.00018995 7.27311612 0.99905281 0.99949994 0.49327155;
+	-6.27342630 -0.00031007 0.00018993 7.27311622 0.99905290 0.99949999 0.49327169;
+	-6.27342637 -0.00031004 0.00018992 7.27311633 0.99905300 0.99950004 0.49327184;
+	-6.27342644 -0.00031001 0.00018990 7.27311644 0.99905309 0.99950009 0.49327184;
+	-6.27342652 -0.00030998 0.00018988 7.27311654 0.99905319 0.99950014 0.49327176;
+	-6.27342659 -0.00030995 0.00018986 7.27311665 0.99905328 0.99950019 0.49327184;
+	-6.27342667 -0.00030992 0.00018984 7.27311675 0.99905338 0.99950024 0.49327166;
+	-6.27342674 -0.00030988 0.00018982 7.27311686 0.99905347 0.99950029 0.49327222;
+	-6.27342682 -0.00030985 0.00018980 7.27311696 0.99905357 0.99950034 0.49327211;
+	-6.27342689 -0.00030982 0.00018978 7.27311707 0.99905366 0.99950039 0.49327202;
+	-6.27342696 -0.00030979 0.00018976 7.27311717 0.99905376 0.99950044 0.49327179;
+	-6.27342704 -0.00030976 0.00018974 7.27311728 0.99905385 0.99950049 0.49327176;
+	-6.27342711 -0.00030973 0.00018973 7.27311738 0.99905394 0.99950054 0.49327202;
+	-6.27342719 -0.00030970 0.00018971 7.27311749 0.99905404 0.99950059 0.49327184;
+	-6.27342726 -0.00030967 0.00018969 7.27311759 0.99905413 0.99950064 0.49327198;
+	-6.27342733 -0.00030964 0.00018967 7.27311770 0.99905423 0.99950069 0.49327205;
+	-6.27342741 -0.00030961 0.00018965 7.27311780 0.99905432 0.99950074 0.49327200;
+	-6.27342748 -0.00030957 0.00018963 7.27311791 0.99905442 0.99950079 0.49327197;
+	-6.27342756 -0.00030954 0.00018961 7.27311801 0.99905451 0.99950084 0.49327183;
+	-6.27342763 -0.00030951 0.00018959 7.27311812 0.99905461 0.99950089 0.49327208;
+	-6.27342771 -0.00030948 0.00018957 7.27311822 0.99905470 0.99950094 0.49327205;
+	-6.27342778 -0.00030945 0.00018956 7.27311833 0.99905480 0.99950099 0.49327194];
+
+	%cut off series at maxdeg: 
+	love_numbers(maxdeg+2:end,:)=[];
+
+	%retrive right type: 
+	if strcmpi(type,'loadingverticaldisplacement'),
+		series=love_numbers(:,1);
+	elseif strcmpi(type,'loadinggravitationalpotential'),
+		series=love_numbers(:,2);
+	elseif strcmpi(type,'loadinghorizontaldisplacement'),
+		series=love_numbers(:,3);
+	elseif strcmpi(type,'tidalverticaldisplacement'),
+		series=love_numbers(:,4);
+	elseif strcmpi(type,'tidalgravitationalpotential'),
+		series=love_numbers(:,5);
+	elseif strcmpi(type,'tidalhorizontaldisplacement'),
+		series=love_numbers(:,6);
+	else 
+		error(['love_numbers error message: unknow type:' type]);
+	end
+
+	% choose degree 1 term for CF reference system 
+	if strcmpi(frame,'CM'), 
+		return; 
+	elseif strcmpi(frame,'CF'), % from Blewitt, 2003, JGR 
+		if strcmpi(type,'loadingverticaldisplacement'),
+			series(2,1) = -0.269; 
+		elseif strcmpi(type,'loadinggravitationalpotential'),
+			series(2,1) = 0.021;  
+		elseif strcmpi(type,'loadinghorizontaldisplacement'),
+			series(2,1) = 0.134; 
+		end
+	else 
+		error(['love_numbers error message: unknow reference frame:' frame]);
+	end
+
+
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/love_numbers.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/love_numbers.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/boundaryconditions/love_numbers.py	(revision 27955)
@@ -0,0 +1,10062 @@
+import numpy as np
+
+
+def love_numbers(value, *varargin):
+    '''LOVE_NUMBERS: provide love numbers (value 'h', 'k', 'l', 'gamma' and 'lambda'
+             retrieved from: http://www.srosat.com/iag-jsg/loveNb.php
+    Usage:   series = love_numbers(value)
+           series = love_numbers(value, reference_frame)
+
+           where value is one of 'h', 'k', 'l', 'gamma' and 'lambda'.
+        reference_frame = one of 'CM' (default) and 'CF'.
+
+    Example:
+        love_k = love_numbers('k')
+        love_k = love_numbers('k', 'CF')
+
+    '''
+
+    # some checks:
+    if len(varargin) == 0:
+        frame = 'CM'
+        print('Info: computation is done in Center of Mass (CM) reference frame by default')
+    elif len(varargin) == 1:
+        reference_frame = varargin[0]
+        if (reference_frame in ['CF', 'CM']):
+            frame = reference_frame
+        else:
+            raise RuntimeError('reference_frame should be one of ''CM'' or ''CF''')
+    else:
+        raise RuntimeError('love_numbers error message: bad usage')
+
+    if value not in ['h', 'k', 'l', 'gamma', 'lambda']:
+        raise RuntimeError('value should be one of ''h'', ''k'', ''l'', ''gamma'' and ''lambda''')
+
+    if len(varargin) > 1:
+        raise RuntimeError('love_numbers error message: wrong usage')
+
+    love_numbers = np.array([[0, 0, 0, 0, 0, 0, 0],
+                             [- 1.28740059, -1.00000000, -0.89858519, 1.28740059, 0.42519882, 0.89858519, 0.00000000],
+                             [- 1.00025365, -0.30922675, 0.02060926, 1.69102690, 0.46358648, 0.67016399, 0.61829668],
+                             [- 1.06243501, -0.19927948, 0.06801636, 1.86315553, 0.55741597, 0.73270416, 0.56270589],
+                             [- 1.06779588, -0.13649834, 0.05667027, 1.93129754, 0.63672498, 0.80683140, 0.51132745],
+                             [- 1.10365923, -0.10736896, 0.04401221, 1.99629027, 0.68737906, 0.84861883, 0.48642259],
+                             [- 1.16440348, -0.09295485, 0.03638747, 2.07144863, 0.72031283, 0.87065768, 0.47898268],
+                             [- 1.23634156, -0.08469861, 0.03202759, 2.15164295, 0.74355796, 0.88327380, 0.47955214],
+                             [- 1.31140380, -0.07921412, 0.02937593, 2.23218968, 0.76126493, 0.89140995, 0.48323250],
+                             [- 1.38582399, -0.07513541, 0.02762338, 2.31068858, 0.77552290, 0.89724121, 0.48795424],
+                             [- 1.45807465, -0.07187005, 0.02638627, 2.38620460, 0.78744212, 0.90174369, 0.49291061],
+                             [- 1.52763314, -0.06913154, 0.02547640, 2.45850160, 0.79766475, 0.90539206, 0.49779422],
+                             [- 1.59437866, -0.06676258, 0.02479080, 2.52761607, 0.80659635, 0.90844662, 0.50248477],
+                             [- 1.65833071, -0.06466619, 0.02426511, 2.59366452, 0.81451271, 0.91106870, 0.50693175],
+                             [- 1.71954820, -0.06277732, 0.02385464, 2.65677088, 0.82161167, 0.91336804, 0.51111243],
+                             [- 1.77809640, -0.06105001, 0.02352654, 2.71704639, 0.82804049, 0.91542346, 0.51501712],
+                             [- 1.83403970, -0.05945081, 0.02325609, 2.77458889, 0.83391153, 0.91729309, 0.51864363],
+                             [- 1.88744242, -0.05795502, 0.02302469, 2.82948740, 0.83931209, 0.91902029, 0.52199490],
+                             [- 1.93837115, -0.05654418, 0.02281843, 2.88182697, 0.84431095, 0.92063739, 0.52507761],
+                             [- 1.98689666, -0.05520447, 0.02262706, 2.93169219, 0.84896295, 0.92216847, 0.52790108],
+                             [- 2.03309477, -0.05392545, 0.02244322, 2.97916932, 0.85331225, 0.92363132, 0.53047654],
+                             [- 2.07704643, -0.05269926, 0.02226173, 3.02434717, 0.85739480, 0.92503902, 0.53281639],
+                             [- 2.11883714, -0.05151988, 0.02207909, 3.06731726, 0.86124014, 0.92640103, 0.53493369],
+                             [- 2.15855611, -0.05038274, 0.02189307, 3.10817337, 0.86487276, 0.92772419, 0.53684176],
+                             [- 2.19629514, -0.04928430, 0.02170238, 3.14701084, 0.86831322, 0.92901331, 0.53855386],
+                             [- 2.23214747, -0.04822179, 0.02150643, 3.18392568, 0.87157886, 0.93027178, 0.54008294],
+                             [- 2.26620674, -0.04719301, 0.02130509, 3.21901373, 0.87468453, 0.93150190, 0.54144148],
+                             [- 2.29856595, -0.04619619, 0.02109858, 3.25236976, 0.87764301, 0.93270523, 0.54264140],
+                             [- 2.32931659, -0.04522983, 0.02088735, 3.28408675, 0.88046543, 0.93388282, 0.54369397],
+                             [- 2.35854794, -0.04429270, 0.02067197, 3.31425524, 0.88316156, 0.93503533, 0.54460979],
+                             [- 2.38634650, -0.04338368, 0.02045310, 3.34296281, 0.88574004, 0.93616321, 0.54539877],
+                             [- 2.41279547, -0.04250179, 0.02023142, 3.37029367, 0.88820859, 0.93726678, 0.54607015],
+                             [- 2.43797451, -0.04164613, 0.02000761, 3.39632839, 0.89057416, 0.93834626, 0.54663248],
+                             [- 2.46195951, -0.04081583, 0.01978231, 3.42114367, 0.89284301, 0.93940185, 0.54709369],
+                             [- 2.48482241, -0.04001011, 0.01955614, 3.44481230, 0.89502085, 0.94043375, 0.54746112],
+                             [- 2.50663126, -0.03922817, 0.01932966, 3.46740309, 0.89711291, 0.94144217, 0.54774153],
+                             [- 2.52745016, -0.03846928, 0.01910337, 3.48898088, 0.89912397, 0.94242735, 0.54794114],
+                             [- 2.54733938, -0.03773269, 0.01887774, 3.50960670, 0.90105847, 0.94338957, 0.54806571],
+                             [- 2.56635547, -0.03701769, 0.01865317, 3.52933779, 0.90292050, 0.94432915, 0.54812051],
+                             [- 2.58455138, -0.03632358, 0.01843000, 3.54822780, 0.90471386, 0.94524642, 0.54811044],
+                             [- 2.60197665, -0.03564968, 0.01820854, 3.56632697, 0.90644209, 0.94614178, 0.54803997],
+                             [- 2.61867756, -0.03499532, 0.01798905, 3.58368224, 0.90810850, 0.94701563, 0.54791326],
+                             [- 2.63469733, -0.03435985, 0.01777176, 3.60033748, 0.90971616, 0.94786840, 0.54773413],
+                             [- 2.65007629, -0.03374263, 0.01755683, 3.61633367, 0.91126798, 0.94870054, 0.54750610],
+                             [- 2.66485208, -0.03314303, 0.01734443, 3.63170905, 0.91276665, 0.94951253, 0.54723245],
+                             [- 2.67905981, -0.03256047, 0.01713468, 3.64649934, 0.91421471, 0.95030485, 0.54691620],
+                             [- 2.69273222, -0.03199435, 0.01692767, 3.66073787, 0.91561457, 0.95107798, 0.54656015],
+                             [- 2.70589990, -0.03144411, 0.01672347, 3.67445580, 0.91696845, 0.95183242, 0.54616691],
+                             [- 2.71859139, -0.03090919, 0.01652215, 3.68768220, 0.91827849, 0.95256866, 0.54573889],
+                             [- 2.73083334, -0.03038907, 0.01632374, 3.70044427, 0.91954667, 0.95328719, 0.54527835],
+                             [- 2.74265068, -0.02988323, 0.01612826, 3.71276745, 0.92077487, 0.95398851, 0.54478739],
+                             [- 2.75406669, -0.02939118, 0.01593573, 3.72467551, 0.92196486, 0.95467309, 0.54426797],
+                             [- 2.76510320, -0.02891245, 0.01574615, 3.73619076, 0.92311833, 0.95534141, 0.54372191],
+                             [- 2.77578063, -0.02844656, 0.01555950, 3.74733406, 0.92423685, 0.95599393, 0.54315095],
+                             [- 2.78611812, -0.02799309, 0.01537578, 3.75812503, 0.92532192, 0.95663113, 0.54255669],
+                             [- 2.79613364, -0.02755161, 0.01519496, 3.76858203, 0.92637496, 0.95725343, 0.54194065],
+                             [- 2.80584405, -0.02712170, 0.01501701, 3.77872235, 0.92739730, 0.95786128, 0.54130424],
+                             [- 2.81526521, -0.02670298, 0.01484191, 3.78856223, 0.92839022, 0.95845511, 0.54064880],
+                             [- 2.82441204, -0.02629506, 0.01466961, 3.79811697, 0.92935491, 0.95903532, 0.53997561],
+                             [- 2.83329857, -0.02589759, 0.01450009, 3.80740098, 0.93029251, 0.95960232, 0.53928586],
+                             [- 2.84193804, -0.02551021, 0.01433329, 3.81642782, 0.93120412, 0.96015649, 0.53858067],
+                             [- 2.85034293, -0.02513260, 0.01416919, 3.82521033, 0.93209074, 0.96069821, 0.53786112],
+                             [- 2.85852503, -0.02476443, 0.01400773, 3.83376061, 0.93295337, 0.96122784, 0.53712821],
+                             [- 2.86649548, -0.02440538, 0.01384888, 3.84209010, 0.93379291, 0.96174574, 0.53638291],
+                             [- 2.87426481, -0.02405518, 0.01369258, 3.85020963, 0.93461026, 0.96225224, 0.53562612],
+                             [- 2.88184299, -0.02371352, 0.01353880, 3.85812947, 0.93540625, 0.96274768, 0.53485873],
+                             [- 2.88923945, -0.02338014, 0.01338749, 3.86585931, 0.93618168, 0.96323236, 0.53408154],
+                             [- 2.89646316, -0.02305478, 0.01323861, 3.87340838, 0.93693730, 0.96370661, 0.53329534],
+                             [- 2.90352261, -0.02273718, 0.01309211, 3.88078542, 0.93767383, 0.96417071, 0.53250089],
+                             [- 2.91042585, -0.02242710, 0.01294795, 3.88799874, 0.93839197, 0.96462494, 0.53169888],
+                             [- 2.91718054, -0.02212431, 0.01280609, 3.89505623, 0.93909236, 0.96506960, 0.53089002],
+                             [- 2.92379397, -0.02182859, 0.01266648, 3.90196538, 0.93977564, 0.96550493, 0.53007493],
+                             [- 2.93027306, -0.02153971, 0.01252908, 3.90873334, 0.94044240, 0.96593120, 0.52925424],
+                             [- 2.93662439, -0.02125748, 0.01239386, 3.91536691, 0.94109322, 0.96634866, 0.52842854],
+                             [- 2.94285425, -0.02098169, 0.01226077, 3.92187256, 0.94172863, 0.96675754, 0.52759839],
+                             [- 2.94896860, -0.02071215, 0.01212977, 3.92825645, 0.94234915, 0.96715808, 0.52676434],
+                             [- 2.95497314, -0.02044868, 0.01200082, 3.93452446, 0.94295529, 0.96755050, 0.52592690],
+                             [- 2.96087331, -0.02019110, 0.01187388, 3.94068220, 0.94354752, 0.96793501, 0.52508656],
+                             [- 2.96667427, -0.01993924, 0.01174893, 3.94673503, 0.94412630, 0.96831183, 0.52424380],
+                             [- 2.97238097, -0.01969293, 0.01162591, 3.95268804, 0.94469206, 0.96868116, 0.52339906],
+                             [- 2.97799813, -0.01945201, 0.01150481, 3.95854612, 0.94524521, 0.96904318, 0.52255277],
+                             [- 2.98353025, -0.01921634, 0.01138557, 3.96431391, 0.94578617, 0.96939809, 0.52170535],
+                             [- 2.98898162, -0.01898576, 0.01126817, 3.96999586, 0.94631531, 0.96974607, 0.52085719],
+                             [- 2.99435636, -0.01876014, 0.01115257, 3.97559622, 0.94683300, 0.97008729, 0.52000868],
+                             [- 2.99965838, -0.01853932, 0.01103875, 3.98111905, 0.94733959, 0.97042193, 0.51916016],
+                             [- 3.00489143, -0.01832319, 0.01092666, 3.98656824, 0.94783543, 0.97075015, 0.51831198],
+                             [- 3.01005909, -0.01811161, 0.01081628, 3.99194748, 0.94832084, 0.97107211, 0.51746448],
+                             [- 3.01516479, -0.01790446, 0.01070757, 3.99726033, 0.94879613, 0.97138796, 0.51661796],
+                             [- 3.02021180, -0.01770162, 0.01060052, 4.00251017, 0.94926160, 0.97169786, 0.51577273],
+                             [- 3.02520323, -0.01750298, 0.01049508, 4.00770025, 0.94971755, 0.97200194, 0.51492908],
+                             [- 3.03014209, -0.01730842, 0.01039123, 4.01283367, 0.95016424, 0.97230035, 0.51408727],
+                             [- 3.03503122, -0.01711783, 0.01028894, 4.01791339, 0.95060195, 0.97259323, 0.51324758],
+                             [- 3.03987336, -0.01693111, 0.01018819, 4.02294225, 0.95103094, 0.97288070, 0.51241024],
+                             [- 3.04467112, -0.01674816, 0.01008894, 4.02792295, 0.95145145, 0.97316290, 0.51157550],
+                             [- 3.04942699, -0.01656889, 0.00999117, 4.03285810, 0.95186373, 0.97343995, 0.51074358],
+                             [- 3.05414335, -0.01639319, 0.00989485, 4.03775017, 0.95226799, 0.97371196, 0.50991471],
+                             [- 3.05882250, -0.01622097, 0.00979997, 4.04260153, 0.95266447, 0.97397906, 0.50908908],
+                             [- 3.06346660, -0.01605215, 0.00970649, 4.04741445, 0.95305338, 0.97424136, 0.50826689],
+                             [- 3.06807773, -0.01588664, 0.00961439, 4.05219109, 0.95343492, 0.97449897, 0.50744832],
+                             [- 3.07265789, -0.01572436, 0.00952364, 4.05693353, 0.95380929, 0.97475200, 0.50663356],
+                             [- 3.07720897, -0.01556522, 0.00943423, 4.06164375, 0.95417670, 0.97500055, 0.50582277],
+                             [- 3.08173279, -0.01540916, 0.00934613, 4.06632364, 0.95453731, 0.97524472, 0.50501611],
+                             [- 3.08623109, -0.01525608, 0.00925931, 4.07097501, 0.95489131, 0.97548461, 0.50421372],
+                             [- 3.09070551, -0.01510592, 0.00917376, 4.07559959, 0.95523888, 0.97572032, 0.50341576],
+                             [- 3.09515765, -0.01495861, 0.00908946, 4.08019904, 0.95558018, 0.97595193, 0.50262236],
+                             [- 3.09958899, -0.01481408, 0.00900637, 4.08477492, 0.95591537, 0.97617955, 0.50183364],
+                             [- 3.10400100, -0.01467225, 0.00892449, 4.08932875, 0.95624461, 0.97640325, 0.50104973],
+                             [- 3.10839504, -0.01453308, 0.00884379, 4.09386196, 0.95656806, 0.97662313, 0.50027073],
+                             [- 3.11277241, -0.01439648, 0.00876425, 4.09837593, 0.95688585, 0.97683927, 0.49949676],
+                             [- 3.11713438, -0.01426240, 0.00868586, 4.10287198, 0.95719812, 0.97705174, 0.49872791],
+                             [- 3.12148213, -0.01413079, 0.00860858, 4.10735134, 0.95750503, 0.97726063, 0.49796429],
+                             [- 3.12581680, -0.01400157, 0.00853241, 4.11181522, 0.95780669, 0.97746601, 0.49720597],
+                             [- 3.13013947, -0.01387471, 0.00845733, 4.11626476, 0.95810324, 0.97766796, 0.49645304],
+                             [- 3.13445117, -0.01375013, 0.00838331, 4.12070104, 0.95839480, 0.97786656, 0.49570558],
+                             [- 3.13875289, -0.01362779, 0.00831034, 4.12512510, 0.95868150, 0.97806186, 0.49496366],
+                             [- 3.14304556, -0.01350764, 0.00823841, 4.12953792, 0.95896344, 0.97825395, 0.49422734],
+                             [- 3.14733008, -0.01338963, 0.00816748, 4.13394045, 0.95924075, 0.97844289, 0.49349669],
+                             [- 3.15160728, -0.01327370, 0.00809756, 4.13833358, 0.95951352, 0.97862874, 0.49277177],
+                             [- 3.15587797, -0.01315981, 0.00802862, 4.14271816, 0.95978188, 0.97881157, 0.49205262],
+                             [- 3.16014293, -0.01304792, 0.00796064, 4.14709501, 0.96004592, 0.97899144, 0.49133930],
+                             [- 3.16440288, -0.01293797, 0.00789361, 4.15146491, 0.96030574, 0.97916842, 0.49063185],
+                             [- 3.16865852, -0.01282993, 0.00782751, 4.15582858, 0.96056144, 0.97934256, 0.48993030],
+                             [- 3.17291049, -0.01272375, 0.00776233, 4.16018673, 0.96081312, 0.97951392, 0.48923471],
+                             [- 3.17715942, -0.01261940, 0.00769805, 4.16454003, 0.96106086, 0.97968255, 0.48854509],
+                             [- 3.18140591, -0.01251682, 0.00763466, 4.16888910, 0.96130476, 0.97984852, 0.48786148],
+                             [- 3.18565052, -0.01241598, 0.00757215, 4.17323454, 0.96154490, 0.98001187, 0.48718390],
+                             [- 3.18989378, -0.01231685, 0.00751049, 4.17757693, 0.96178137, 0.98017266, 0.48651237],
+                             [- 3.19413619, -0.01221938, 0.00744968, 4.18191681, 0.96201424, 0.98033094, 0.48584692],
+                             [- 3.19837823, -0.01212354, 0.00738970, 4.18625469, 0.96224360, 0.98048676, 0.48518756],
+                             [- 3.20262035, -0.01202930, 0.00733053, 4.19059105, 0.96246952, 0.98064017, 0.48453431],
+                             [- 3.20686298, -0.01193661, 0.00727217, 4.19492637, 0.96269208, 0.98079121, 0.48388717],
+                             [- 3.21110653, -0.01184546, 0.00721461, 4.19926107, 0.96291135, 0.98093994, 0.48324615],
+                             [- 3.21535137, -0.01175579, 0.00715782, 4.20359557, 0.96312741, 0.98108639, 0.48261126],
+                             [- 3.21959786, -0.01166759, 0.00710179, 4.20793027, 0.96334031, 0.98123062, 0.48198250],
+                             [- 3.22384634, -0.01158082, 0.00704652, 4.21226552, 0.96355014, 0.98137266, 0.48135988],
+                             [- 3.22809714, -0.01149545, 0.00699199, 4.21660169, 0.96375694, 0.98151256, 0.48074338],
+                             [- 3.23235055, -0.01141146, 0.00693819, 4.22093909, 0.96396080, 0.98165035, 0.48013301],
+                             [- 3.23660685, -0.01132880, 0.00688511, 4.22527805, 0.96416176, 0.98178609, 0.47952876],
+                             [- 3.24086631, -0.01124746, 0.00683273, 4.22961885, 0.96435989, 0.98191980, 0.47893063],
+                             [- 3.24512918, -0.01116741, 0.00678105, 4.23396177, 0.96455525, 0.98205153, 0.47833860],
+                             [- 3.24939569, -0.01108862, 0.00673005, 4.23830707, 0.96474789, 0.98218132, 0.47775267],
+                             [- 3.25366606, -0.01101107, 0.00667973, 4.24265499, 0.96493787, 0.98230920, 0.47717282],
+                             [- 3.25794050, -0.01093473, 0.00663007, 4.24700577, 0.96512525, 0.98243520, 0.47659903],
+                             [- 3.26221918, -0.01085957, 0.00658106, 4.25135961, 0.96531007, 0.98255937, 0.47603130],
+                             [- 3.26650230, -0.01078557, 0.00653269, 4.25571672, 0.96549239, 0.98268174, 0.47546960],
+                             [- 3.27079000, -0.01071272, 0.00648495, 4.26007729, 0.96567225, 0.98280233, 0.47491391],
+                             [- 3.27508246, -0.01064097, 0.00643784, 4.26444149, 0.96584971, 0.98292119, 0.47436422],
+                             [- 3.27937980, -0.01057032, 0.00639134, 4.26880948, 0.96602482, 0.98303834, 0.47382051],
+                             [- 3.28368216, -0.01050074, 0.00634544, 4.27318141, 0.96619761, 0.98315382, 0.47328275],
+                             [- 3.28798965, -0.01043222, 0.00630013, 4.27755743, 0.96636814, 0.98326765, 0.47275091],
+                             [- 3.29230239, -0.01036472, 0.00625541, 4.28193767, 0.96653645, 0.98337988, 0.47222499],
+                             [- 3.29662047, -0.01029823, 0.00621126, 4.28632224, 0.96670258, 0.98349051, 0.47170494],
+                             [- 3.30094399, -0.01023273, 0.00616768, 4.29071126, 0.96686657, 0.98359960, 0.47119074],
+                             [- 3.30527303, -0.01016819, 0.00612465, 4.29510483, 0.96702847, 0.98370715, 0.47068237],
+                             [- 3.30960766, -0.01010461, 0.00608218, 4.29950304, 0.96718831, 0.98381321, 0.47017979],
+                             [- 3.31394795, -0.01004197, 0.00604024, 4.30390598, 0.96734614, 0.98391779, 0.46968299],
+                             [- 3.31829395, -0.00998024, 0.00599883, 4.30831372, 0.96750198, 0.98402093, 0.46919192],
+                             [- 3.32264573, -0.00991940, 0.00595795, 4.31272633, 0.96765588, 0.98412265, 0.46870656],
+                             [- 3.32700331, -0.00985945, 0.00591759, 4.31714387, 0.96780788, 0.98422297, 0.46822687],
+                             [- 3.33136675, -0.00980035, 0.00587773, 4.32156640, 0.96795801, 0.98432191, 0.46775284],
+                             [- 3.33573607, -0.00974211, 0.00583838, 4.32599396, 0.96810630, 0.98441951, 0.46728441],
+                             [- 3.34011130, -0.00968470, 0.00579951, 4.33042660, 0.96825278, 0.98451579, 0.46682157],
+                             [- 3.34449246, -0.00962810, 0.00576113, 4.33486436, 0.96839750, 0.98461077, 0.46636427],
+                             [- 3.34887956, -0.00957230, 0.00572323, 4.33930726, 0.96854048, 0.98470447, 0.46591248],
+                             [- 3.35327261, -0.00951729, 0.00568581, 4.34375533, 0.96868175, 0.98479691, 0.46546617],
+                             [- 3.35767163, -0.00946304, 0.00564884, 4.34820858, 0.96882135, 0.98488812, 0.46502531],
+                             [- 3.36207660, -0.00940956, 0.00561233, 4.35266704, 0.96895930, 0.98497811, 0.46458986],
+                             [- 3.36648753, -0.00935681, 0.00557627, 4.35713071, 0.96909563, 0.98506691, 0.46415977],
+                             [- 3.37090440, -0.00930480, 0.00554066, 4.36159960, 0.96923037, 0.98515454, 0.46373503],
+                             [- 3.37532721, -0.00925350, 0.00550548, 4.36607371, 0.96936355, 0.98524102, 0.46331559],
+                             [- 3.37975593, -0.00920290, 0.00547073, 4.37055303, 0.96949520, 0.98532636, 0.46290141],
+                             [- 3.38419056, -0.00915300, 0.00543641, 4.37503756, 0.96962535, 0.98541059, 0.46249246],
+                             [- 3.38863105, -0.00910377, 0.00540251, 4.37952729, 0.96975401, 0.98549373, 0.46208870],
+                             [- 3.39307740, -0.00905520, 0.00536901, 4.38402220, 0.96988122, 0.98557578, 0.46169009],
+                             [- 3.39752956, -0.00900729, 0.00533593, 4.38852227, 0.97000699, 0.98565678, 0.46129660],
+                             [- 3.40198751, -0.00896002, 0.00530324, 4.39302749, 0.97013137, 0.98573674, 0.46090819],
+                             [- 3.40645121, -0.00891338, 0.00527095, 4.39753783, 0.97025435, 0.98581567, 0.46052482],
+                             [- 3.41092063, -0.00886736, 0.00523904, 4.40205326, 0.97037598, 0.98589360, 0.46014645],
+                             [- 3.41539571, -0.00882195, 0.00520752, 4.40657376, 0.97049628, 0.98597053, 0.45977305],
+                             [- 3.41987643, -0.00877713, 0.00517637, 4.41109929, 0.97061526, 0.98604649, 0.45940458],
+                             [- 3.42436272, -0.00873290, 0.00514560, 4.41562982, 0.97073295, 0.98612149, 0.45904100],
+                             [- 3.42885456, -0.00868925, 0.00511520, 4.42016531, 0.97084936, 0.98619555, 0.45868227],
+                             [- 3.43335188, -0.00864617, 0.00508515, 4.42470571, 0.97096453, 0.98626868, 0.45832835],
+                             [- 3.43785464, -0.00860364, 0.00505546, 4.42925100, 0.97107847, 0.98634090, 0.45797921],
+                             [- 3.44236278, -0.00856166, 0.00502613, 4.43380112, 0.97119120, 0.98641222, 0.45763480],
+                             [- 3.44687625, -0.00852021, 0.00499714, 4.43835604, 0.97130274, 0.98648265, 0.45729509],
+                             [- 3.45139500, -0.00847930, 0.00496849, 4.44291570, 0.97141311, 0.98655221, 0.45696005],
+                             [- 3.45591895, -0.00843890, 0.00494017, 4.44748005, 0.97152233, 0.98662092, 0.45662962],
+                             [- 3.46044807, -0.00839902, 0.00491219, 4.45204905, 0.97163042, 0.98668879, 0.45630378],
+                             [- 3.46498227, -0.00835964, 0.00488454, 4.45662264, 0.97173739, 0.98675583, 0.45598249],
+                             [- 3.46952151, -0.00832075, 0.00485721, 4.46120077, 0.97184326, 0.98682205, 0.45566570],
+                             [- 3.47406572, -0.00828234, 0.00483019, 4.46578338, 0.97194805, 0.98688746, 0.45535338],
+                             [- 3.47861484, -0.00824442, 0.00480349, 4.47037042, 0.97205179, 0.98695209, 0.45504550],
+                             [- 3.48316880, -0.00820696, 0.00477710, 4.47496184, 0.97215447, 0.98701594, 0.45474201],
+                             [- 3.48772753, -0.00816996, 0.00475102, 4.47955756, 0.97225612, 0.98707902, 0.45444287],
+                             [- 3.49229097, -0.00813342, 0.00472523, 4.48415755, 0.97235676, 0.98714134, 0.45414806],
+                             [- 3.49685904, -0.00809733, 0.00469975, 4.48876172, 0.97245640, 0.98720293, 0.45385753],
+                             [- 3.50143169, -0.00806167, 0.00467455, 4.49337002, 0.97255506, 0.98726378, 0.45357123],
+                             [- 3.50600884, -0.00802644, 0.00464964, 4.49798240, 0.97265275, 0.98732391, 0.45328915],
+                             [- 3.51059042, -0.00799164, 0.00462502, 4.50259878, 0.97274949, 0.98738333, 0.45301123],
+                             [- 3.51517637, -0.00795726, 0.00460068, 4.50721911, 0.97284528, 0.98744206, 0.45273745],
+                             [- 3.51976660, -0.00792329, 0.00457662, 4.51184331, 0.97294015, 0.98750009, 0.45246776],
+                             [- 3.52436105, -0.00788972, 0.00455283, 4.51647133, 0.97303411, 0.98755745, 0.45220214],
+                             [- 3.52895964, -0.00785655, 0.00452930, 4.52110309, 0.97312718, 0.98761414, 0.45194053],
+                             [- 3.53356231, -0.00782377, 0.00450605, 4.52573854, 0.97321936, 0.98767018, 0.45168291],
+                             [- 3.53816898, -0.00779138, 0.00448306, 4.53037760, 0.97331067, 0.98772556, 0.45142923],
+                             [- 3.54277957, -0.00775937, 0.00446032, 4.53502021, 0.97340111, 0.98778031, 0.45117947],
+                             [- 3.54739402, -0.00772773, 0.00443784, 4.53966629, 0.97349072, 0.98783443, 0.45093359],
+                             [- 3.55201224, -0.00769645, 0.00441562, 4.54431579, 0.97357949, 0.98788793, 0.45069155],
+                             [- 3.55663417, -0.00766554, 0.00439364, 4.54896864, 0.97366744, 0.98794082, 0.45045331],
+                             [- 3.56125973, -0.00763498, 0.00437190, 4.55362475, 0.97375458, 0.98799311, 0.45021885],
+                             [- 3.56588885, -0.00760478, 0.00435041, 4.55828407, 0.97384092, 0.98804481, 0.44998812],
+                             [- 3.57052145, -0.00757491, 0.00432916, 4.56294653, 0.97392648, 0.98809593, 0.44976109],
+                             [- 3.57515745, -0.00754539, 0.00430814, 4.56761206, 0.97401126, 0.98814646, 0.44953772],
+                             [- 3.57979678, -0.00751620, 0.00428736, 4.57228058, 0.97409528, 0.98819644, 0.44931799],
+                             [- 3.58443937, -0.00748734, 0.00426681, 4.57695203, 0.97417854, 0.98824585, 0.44910185],
+                             [- 3.58908514, -0.00745880, 0.00424648, 4.58162633, 0.97426107, 0.98829472, 0.44888928],
+                             [- 3.59373401, -0.00743059, 0.00422637, 4.58630343, 0.97434286, 0.98834304, 0.44868023],
+                             [- 3.59838592, -0.00740268, 0.00420649, 4.59098323, 0.97442393, 0.98839083, 0.44847468],
+                             [- 3.60304078, -0.00737509, 0.00418682, 4.59566569, 0.97450428, 0.98843809, 0.44827259],
+                             [- 3.60769852, -0.00734780, 0.00416737, 4.60035072, 0.97458394, 0.98848483, 0.44807392],
+                             [- 3.61235907, -0.00732081, 0.00414813, 4.60503826, 0.97466290, 0.98853106, 0.44787865],
+                             [- 3.61702235, -0.00729411, 0.00412910, 4.60972823, 0.97474118, 0.98857678, 0.44768674],
+                             [- 3.62168828, -0.00726771, 0.00411028, 4.61442057, 0.97481879, 0.98862201, 0.44749816],
+                             [- 3.62635680, -0.00724159, 0.00409166, 4.61911521, 0.97489573, 0.98866675, 0.44731288],
+                             [- 3.63102782, -0.00721575, 0.00407325, 4.62381207, 0.97497202, 0.98871100, 0.44713086],
+                             [- 3.63570128, -0.00719020, 0.00405503, 4.62851108, 0.97504766, 0.98875478, 0.44695207],
+                             [- 3.64037709, -0.00716491, 0.00403700, 4.63321218, 0.97512267, 0.98879808, 0.44677649],
+                             [- 3.64505519, -0.00713990, 0.00401918, 4.63791530, 0.97519704, 0.98884093, 0.44660407],
+                             [- 3.64973550, -0.00711515, 0.00400154, 4.64262036, 0.97527080, 0.98888331, 0.44643478],
+                             [- 3.65441795, -0.00709066, 0.00398409, 4.64732729, 0.97534394, 0.98892525, 0.44626861],
+                             [- 3.65910247, -0.00706643, 0.00396683, 4.65203604, 0.97541648, 0.98896674, 0.44610551],
+                             [- 3.66378898, -0.00704246, 0.00394975, 4.65674652, 0.97548842, 0.98900779, 0.44594545],
+                             [- 3.66847740, -0.00701873, 0.00393286, 4.66145867, 0.97555978, 0.98904841, 0.44578841],
+                             [- 3.67316767, -0.00699526, 0.00391614, 4.66617242, 0.97563055, 0.98908860, 0.44563435],
+                             [- 3.67785972, -0.00697202, 0.00389960, 4.67088770, 0.97570076, 0.98912838, 0.44548324],
+                             [- 3.68255347, -0.00694903, 0.00388324, 4.67560444, 0.97577039, 0.98916773, 0.44533506],
+                             [- 3.68724885, -0.00692627, 0.00386705, 4.68032258, 0.97583947, 0.98920668, 0.44518977],
+                             [- 3.69194579, -0.00690374, 0.00385103, 4.68504204, 0.97590800, 0.98924523, 0.44504735],
+                             [- 3.69664421, -0.00688145, 0.00383518, 4.68976277, 0.97597598, 0.98928338, 0.44490776],
+                             [- 3.70134406, -0.00685938, 0.00381949, 4.69448468, 0.97604342, 0.98932113, 0.44477099],
+                             [- 3.70604525, -0.00683753, 0.00380397, 4.69920772, 0.97611034, 0.98935850, 0.44463698],
+                             [- 3.71074772, -0.00681590, 0.00378861, 4.70393182, 0.97617673, 0.98939548, 0.44450573],
+                             [- 3.71545140, -0.00679449, 0.00377342, 4.70865691, 0.97624261, 0.98943209, 0.44437720],
+                             [- 3.72015622, -0.00677330, 0.00375838, 4.71338292, 0.97630797, 0.98946833, 0.44425137],
+                             [- 3.72486211, -0.00675231, 0.00374349, 4.71810980, 0.97637283, 0.98950420, 0.44412820],
+                             [- 3.72956899, -0.00673153, 0.00372877, 4.72283746, 0.97643720, 0.98953970, 0.44400767],
+                             [- 3.73427682, -0.00671096, 0.00371419, 4.72756585, 0.97650107, 0.98957485, 0.44388975],
+                             [- 3.73898550, -0.00669059, 0.00369976, 4.73229491, 0.97656446, 0.98960965, 0.44377441],
+                             [- 3.74369498, -0.00667042, 0.00368549, 4.73702457, 0.97662737, 0.98964409, 0.44366163],
+                             [- 3.74840519, -0.00665044, 0.00367136, 4.74175475, 0.97668980, 0.98967820, 0.44355139],
+                             [- 3.75311607, -0.00663066, 0.00365738, 4.74648541, 0.97675177, 0.98971196, 0.44344364],
+                             [- 3.75782754, -0.00661107, 0.00364354, 4.75121648, 0.97681327, 0.98974540, 0.44333838],
+                             [- 3.76253955, -0.00659167, 0.00362984, 4.75594788, 0.97687432, 0.98977850, 0.44323557],
+                             [- 3.76725202, -0.00657245, 0.00361628, 4.76067957, 0.97693492, 0.98981127, 0.44313518],
+                             [- 3.77196489, -0.00655341, 0.00360286, 4.76541147, 0.97699508, 0.98984372, 0.44303720],
+                             [- 3.77667809, -0.00653456, 0.00358958, 4.77014353, 0.97705479, 0.98987586, 0.44294159],
+                             [- 3.78139156, -0.00651589, 0.00357643, 4.77487568, 0.97711407, 0.98990768, 0.44284833],
+                             [- 3.78610525, -0.00649739, 0.00356342, 4.77960786, 0.97717292, 0.98993920, 0.44275740],
+                             [- 3.79081907, -0.00647906, 0.00355053, 4.78434001, 0.97723134, 0.98997040, 0.44266877],
+                             [- 3.79553298, -0.00646091, 0.00353778, 4.78907207, 0.97728935, 0.99000131, 0.44258241],
+                             [- 3.80024690, -0.00644292, 0.00352516, 4.79380398, 0.97734694, 0.99003192, 0.44249831],
+                             [- 3.80496078, -0.00642510, 0.00351266, 4.79853567, 0.97740413, 0.99006223, 0.44241644],
+                             [- 3.80967455, -0.00640745, 0.00350029, 4.80326710, 0.97746090, 0.99009226, 0.44233677],
+                             [- 3.81438815, -0.00638996, 0.00348804, 4.80799819, 0.97751728, 0.99012200, 0.44225928],
+                             [- 3.81910152, -0.00637262, 0.00347592, 4.81272889, 0.97757326, 0.99015145, 0.44218395],
+                             [- 3.82381460, -0.00635545, 0.00346392, 4.81745915, 0.97762886, 0.99018063, 0.44211076],
+                             [- 3.82852732, -0.00633843, 0.00345204, 4.82218889, 0.97768406, 0.99020953, 0.44203968],
+                             [- 3.83323964, -0.00632157, 0.00344027, 4.82691808, 0.97773889, 0.99023816, 0.44197068],
+                             [- 3.83795149, -0.00630485, 0.00342863, 4.83164664, 0.97779333, 0.99026652, 0.44190376],
+                             [- 3.84266280, -0.00628829, 0.00341709, 4.83637452, 0.97784741, 0.99029462, 0.44183887],
+                             [- 3.84737353, -0.00627187, 0.00340568, 4.84110166, 0.97790111, 0.99032245, 0.44177601],
+                             [- 3.85208361, -0.00625560, 0.00339437, 4.84582801, 0.97795446, 0.99035003, 0.44171515],
+                             [- 3.85679299, -0.00623948, 0.00338318, 4.85055351, 0.97800744, 0.99037735, 0.44165627],
+                             [- 3.86150160, -0.00622349, 0.00337210, 4.85527811, 0.97806006, 0.99040441, 0.44159934],
+                             [- 3.86620939, -0.00620765, 0.00336112, 4.86000175, 0.97811233, 0.99043123, 0.44154435],
+                             [- 3.87091631, -0.00619194, 0.00335026, 4.86472437, 0.97816426, 0.99045780, 0.44149127],
+                             [- 3.87562229, -0.00617637, 0.00333950, 4.86944592, 0.97821584, 0.99048413, 0.44144009],
+                             [- 3.88032729, -0.00616094, 0.00332885, 4.87416635, 0.97826708, 0.99051022, 0.44139078],
+                             [- 3.88503124, -0.00614564, 0.00331830, 4.87888561, 0.97831798, 0.99053607, 0.44134332],
+                             [- 3.88973410, -0.00613047, 0.00330785, 4.88360363, 0.97836855, 0.99056168, 0.44129769],
+                             [- 3.89443580, -0.00611543, 0.00329750, 4.88832037, 0.97841879, 0.99058707, 0.44125387],
+                             [- 3.89913629, -0.00610051, 0.00328726, 4.89303577, 0.97846870, 0.99061223, 0.44121185],
+                             [- 3.90383552, -0.00608573, 0.00327711, 4.89774979, 0.97851829, 0.99063716, 0.44117159],
+                             [- 3.90853343, -0.00607107, 0.00326707, 4.90246236, 0.97856756, 0.99066187, 0.44113309],
+                             [- 3.91322998, -0.00605653, 0.00325712, 4.90717345, 0.97861652, 0.99068635, 0.44109632],
+                             [- 3.91792511, -0.00604212, 0.00324726, 4.91188299, 0.97866516, 0.99071062, 0.44106126],
+                             [- 3.92261876, -0.00602782, 0.00323750, 4.91659094, 0.97871350, 0.99073468, 0.44102790],
+                             [- 3.92731089, -0.00601364, 0.00322784, 4.92129724, 0.97876153, 0.99075852, 0.44099621],
+                             [- 3.93200144, -0.00599958, 0.00321826, 4.92600186, 0.97880926, 0.99078215, 0.44096618],
+                             [- 3.93669036, -0.00598564, 0.00320878, 4.93070472, 0.97885669, 0.99080558, 0.44093779],
+                             [- 3.94137761, -0.00597181, 0.00319939, 4.93540580, 0.97890383, 0.99082880, 0.44091101],
+                             [- 3.94606313, -0.00595809, 0.00319009, 4.94010504, 0.97895067, 0.99085182, 0.44088584],
+                             [- 3.95074687, -0.00594449, 0.00318088, 4.94480238, 0.97899722, 0.99087463, 0.44086225],
+                             [- 3.95542878, -0.00593099, 0.00317175, 4.94949779, 0.97904349, 0.99089725, 0.44084022],
+                             [- 3.96010882, -0.00591761, 0.00316271, 4.95419121, 0.97908947, 0.99091968, 0.44081975],
+                             [- 3.96478693, -0.00590433, 0.00315376, 4.95888260, 0.97913517, 0.99094191, 0.44080080],
+                             [- 3.96946306, -0.00589116, 0.00314489, 4.96357191, 0.97918060, 0.99096395, 0.44078336],
+                             [- 3.97413718, -0.00587809, 0.00313611, 4.96825909, 0.97922575, 0.99098581, 0.44076742],
+                             [- 3.97880922, -0.00586512, 0.00312740, 4.97294410, 0.97927063, 0.99100747, 0.44075296],
+                             [- 3.98347915, -0.00585226, 0.00311878, 4.97762689, 0.97931524, 0.99102895, 0.44073996],
+                             [- 3.98814692, -0.00583950, 0.00311024, 4.98230742, 0.97935959, 0.99105026, 0.44072841],
+                             [- 3.99281247, -0.00582684, 0.00310178, 4.98698564, 0.97940367, 0.99107138, 0.44071828],
+                             [- 3.99747577, -0.00581428, 0.00309340, 4.99166150, 0.97944749, 0.99109232, 0.44070956],
+                             [- 4.00213677, -0.00580181, 0.00308510, 4.99633496, 0.97949105, 0.99111309, 0.44070224],
+                             [- 4.00679542, -0.00578944, 0.00307688, 5.00100598, 0.97953436, 0.99113368, 0.44069630],
+                             [- 4.01145168, -0.00577717, 0.00306873, 5.00567451, 0.97957741, 0.99115410, 0.44069173],
+                             [- 4.01610551, -0.00576499, 0.00306065, 5.01034052, 0.97962021, 0.99117436, 0.44068850],
+                             [- 4.02075685, -0.00575290, 0.00305266, 5.01500395, 0.97966277, 0.99119444, 0.44068660],
+                             [- 4.02540567, -0.00574091, 0.00304473, 5.01966476, 0.97970508, 0.99121436, 0.44068602],
+                             [- 4.03005191, -0.00572900, 0.00303688, 5.02432291, 0.97974715, 0.99123412, 0.44068674],
+                             [- 4.03469555, -0.00571719, 0.00302910, 5.02897837, 0.97978897, 0.99125371, 0.44068875],
+                             [- 4.03933654, -0.00570546, 0.00302139, 5.03363108, 0.97983056, 0.99127315, 0.44069203],
+                             [- 4.04397482, -0.00569382, 0.00301375, 5.03828100, 0.97987192, 0.99129242, 0.44069657],
+                             [- 4.04861037, -0.00568227, 0.00300619, 5.04292810, 0.97991304, 0.99131154, 0.44070234],
+                             [- 4.05324314, -0.00567080, 0.00299869, 5.04757234, 0.97995393, 0.99133051, 0.44070935],
+                             [- 4.05787308, -0.00565942, 0.00299126, 5.05221367, 0.97999459, 0.99134932, 0.44071756],
+                             [- 4.06250017, -0.00564812, 0.00298390, 5.05685205, 0.98003502, 0.99136799, 0.44072698],
+                             [- 4.06712435, -0.00563690, 0.00297660, 5.06148744, 0.98007523, 0.99138650, 0.44073757],
+                             [- 4.07174558, -0.00562577, 0.00296937, 5.06611981, 0.98011522, 0.99140486, 0.44074934],
+                             [- 4.07636383, -0.00561471, 0.00296221, 5.07074912, 0.98015498, 0.99142308, 0.44076227],
+                             [- 4.08097906, -0.00560374, 0.00295511, 5.07537532, 0.98019453, 0.99144116, 0.44077633],
+                             [- 4.08559122, -0.00559284, 0.00294807, 5.07999838, 0.98023386, 0.99145909, 0.44079153],
+                             [- 4.09020028, -0.00558202, 0.00294110, 5.08461826, 0.98027298, 0.99147688, 0.44080784],
+                             [- 4.09480620, -0.00557128, 0.00293419, 5.08923492, 0.98031189, 0.99149453, 0.44082525],
+                             [- 4.09940894, -0.00556061, 0.00292734, 5.09384833, 0.98035059, 0.99151204, 0.44084375],
+                             [- 4.10400846, -0.00555002, 0.00292056, 5.09845844, 0.98038908, 0.99152942, 0.44086333],
+                             [- 4.10860473, -0.00553950, 0.00291383, 5.10306522, 0.98042736, 0.99154666, 0.44088396],
+                             [- 4.11319770, -0.00552906, 0.00290717, 5.10766864, 0.98046544, 0.99156377, 0.44090565],
+                             [- 4.11778734, -0.00551869, 0.00290056, 5.11226865, 0.98050332, 0.99158075, 0.44092838],
+                             [- 4.12237362, -0.00550839, 0.00289401, 5.11686523, 0.98054100, 0.99159760, 0.44095213],
+                             [- 4.12695649, -0.00549816, 0.00288752, 5.12145833, 0.98057848, 0.99161431, 0.44097689],
+                             [- 4.13153592, -0.00548801, 0.00288109, 5.12604792, 0.98061577, 0.99163090, 0.44100265],
+                             [- 4.13611188, -0.00547792, 0.00287471, 5.13063396, 0.98065286, 0.99164737, 0.44102940],
+                             [- 4.14068433, -0.00546790, 0.00286839, 5.13521643, 0.98068975, 0.99166371, 0.44105712],
+                             [- 4.14525323, -0.00545795, 0.00286213, 5.13979528, 0.98072646, 0.99167992, 0.44108581],
+                             [- 4.14981854, -0.00544806, 0.00285592, 5.14437048, 0.98076298, 0.99169602, 0.44111544],
+                             [- 4.15438025, -0.00543824, 0.00284976, 5.14894200, 0.98079931, 0.99171199, 0.44114602],
+                             [- 4.15893830, -0.00542849, 0.00284366, 5.15350981, 0.98083545, 0.99172785, 0.44117753],
+                             [- 4.16349267, -0.00541880, 0.00283761, 5.15807386, 0.98087141, 0.99174358, 0.44120995],
+                             [- 4.16804332, -0.00540918, 0.00283162, 5.16263414, 0.98090719, 0.99175920, 0.44124328],
+                             [- 4.17259021, -0.00539962, 0.00282567, 5.16719060, 0.98094278, 0.99177471, 0.44127750],
+                             [- 4.17713333, -0.00539012, 0.00281978, 5.17174321, 0.98097820, 0.99179010, 0.44131260],
+                             [- 4.18167262, -0.00538069, 0.00281394, 5.17629194, 0.98101344, 0.99180537, 0.44134857],
+                             [- 4.18620807, -0.00537131, 0.00280815, 5.18083676, 0.98104851, 0.99182054, 0.44138541],
+                             [- 4.19073963, -0.00536200, 0.00280241, 5.18537763, 0.98108340, 0.99183560, 0.44142309],
+                             [- 4.19526728, -0.00535274, 0.00279671, 5.18991453, 0.98111811, 0.99185054, 0.44146162],
+                             [- 4.19979098, -0.00534355, 0.00279107, 5.19444743, 0.98115266, 0.99186538, 0.44150097],
+                             [- 4.20431070, -0.00533441, 0.00278548, 5.19897629, 0.98118704, 0.99188011, 0.44154114],
+                             [- 4.20882641, -0.00532534, 0.00277993, 5.20350108, 0.98122125, 0.99189474, 0.44158211],
+                             [- 4.21333809, -0.00531632, 0.00277443, 5.20802177, 0.98125529, 0.99190926, 0.44162389],
+                             [- 4.21784569, -0.00530735, 0.00276897, 5.21253834, 0.98128916, 0.99192367, 0.44166645],
+                             [- 4.22234919, -0.00529845, 0.00276357, 5.21705075, 0.98132288, 0.99193799, 0.44170979],
+                             [- 4.22684856, -0.00528959, 0.00275820, 5.22155897, 0.98135643, 0.99195220, 0.44175389],
+                             [- 4.23134377, -0.00528080, 0.00275289, 5.22606297, 0.98138982, 0.99196631, 0.44179875],
+                             [- 4.23583479, -0.00527206, 0.00274762, 5.23056273, 0.98142305, 0.99198033, 0.44184436],
+                             [- 4.24032159, -0.00526337, 0.00274239, 5.23505822, 0.98145612, 0.99199424, 0.44189070],
+                             [- 4.24480413, -0.00525473, 0.00273720, 5.23954940, 0.98148904, 0.99200806, 0.44193777],
+                             [- 4.24928241, -0.00524615, 0.00273206, 5.24403626, 0.98152180, 0.99202179, 0.44198557],
+                             [- 4.25375637, -0.00523762, 0.00272697, 5.24851875, 0.98155440, 0.99203541, 0.44203406],
+                             [- 4.25822600, -0.00522914, 0.00272191, 5.25299686, 0.98158685, 0.99204895, 0.44208326],
+                             [- 4.26269127, -0.00522071, 0.00271690, 5.25747055, 0.98161916, 0.99206239, 0.44213315],
+                             [- 4.26715214, -0.00521233, 0.00271193, 5.26193981, 0.98165131, 0.99207574, 0.44218372],
+                             [- 4.27160860, -0.00520401, 0.00270700, 5.26640459, 0.98168331, 0.99208900, 0.44223496],
+                             [- 4.27606061, -0.00519573, 0.00270211, 5.27086489, 0.98171516, 0.99210217, 0.44228686],
+                             [- 4.28050816, -0.00518750, 0.00269726, 5.27532066, 0.98174687, 0.99211524, 0.44233942],
+                             [- 4.28495120, -0.00517932, 0.00269245, 5.27977188, 0.98177844, 0.99212824, 0.44239262],
+                             [- 4.28938971, -0.00517119, 0.00268767, 5.28421853, 0.98180986, 0.99214114, 0.44244646],
+                             [- 4.29382368, -0.00516310, 0.00268294, 5.28866058, 0.98184113, 0.99215396, 0.44250093],
+                             [- 4.29825306, -0.00515506, 0.00267825, 5.29309800, 0.98187227, 0.99216669, 0.44255601],
+                             [- 4.30267785, -0.00514707, 0.00267359, 5.29753078, 0.98190326, 0.99217934, 0.44261171],
+                             [- 4.30709800, -0.00513912, 0.00266898, 5.30195888, 0.98193412, 0.99219190, 0.44266801],
+                             [- 4.31151350, -0.00513122, 0.00266440, 5.30638227, 0.98196483, 0.99220438, 0.44272490],
+                             [- 4.31592431, -0.00512337, 0.00265985, 5.31080095, 0.98199542, 0.99221678, 0.44278238],
+                             [- 4.32033043, -0.00511555, 0.00265535, 5.31521487, 0.98202586, 0.99222910, 0.44284044],
+                             [- 4.32473181, -0.00510779, 0.00265088, 5.31962403, 0.98205617, 0.99224134, 0.44289907],
+                             [- 4.32912844, -0.00510006, 0.00264644, 5.32402838, 0.98208635, 0.99225350, 0.44295825],
+                             [- 4.33352030, -0.00509238, 0.00264204, 5.32842792, 0.98211639, 0.99226558, 0.44301800],
+                             [- 4.33790735, -0.00508474, 0.00263768, 5.33282261, 0.98214630, 0.99227758, 0.44307829],
+                             [- 4.34228957, -0.00507715, 0.00263335, 5.33721243, 0.98217609, 0.99228950, 0.44313911],
+                             [- 4.34666695, -0.00506959, 0.00262906, 5.34159736, 0.98220574, 0.99230135, 0.44320047],
+                             [- 4.35103946, -0.00506208, 0.00262479, 5.34597738, 0.98223526, 0.99231313, 0.44326235],
+                             [- 4.35540706, -0.00505461, 0.00262057, 5.35035246, 0.98226466, 0.99232483, 0.44332475],
+                             [- 4.35976976, -0.00504718, 0.00261637, 5.35472258, 0.98229393, 0.99233645, 0.44338766],
+                             [- 4.36412751, -0.00503978, 0.00261221, 5.35908772, 0.98232308, 0.99234800, 0.44345107],
+                             [- 4.36848029, -0.00503243, 0.00260808, 5.36344786, 0.98235210, 0.99235949, 0.44351497],
+                             [- 4.37282810, -0.00502512, 0.00260399, 5.36780298, 0.98238100, 0.99237089, 0.44357936],
+                             [- 4.37717089, -0.00501785, 0.00259992, 5.37215304, 0.98240977, 0.99238223, 0.44364422],
+                             [- 4.38150866, -0.00501061, 0.00259589, 5.37649804, 0.98243843, 0.99239350, 0.44370956],
+                             [- 4.38584137, -0.00500341, 0.00259189, 5.38083796, 0.98246696, 0.99240470, 0.44377537],
+                             [- 4.39016901, -0.00499626, 0.00258792, 5.38517276, 0.98249538, 0.99241583, 0.44384163],
+                             [- 4.39449156, -0.00498913, 0.00258397, 5.38950243, 0.98252368, 0.99242689, 0.44390835],
+                             [- 4.39880900, -0.00498205, 0.00258006, 5.39382695, 0.98255186, 0.99243789, 0.44397551],
+                             [- 4.40312130, -0.00497500, 0.00257618, 5.39814630, 0.98257992, 0.99244881, 0.44404311],
+                             [- 4.40742845, -0.00496799, 0.00257233, 5.40246046, 0.98260787, 0.99245968, 0.44411114],
+                             [- 4.41173042, -0.00496101, 0.00256851, 5.40676940, 0.98263570, 0.99247047, 0.44417960],
+                             [- 4.41602719, -0.00495407, 0.00256472, 5.41107312, 0.98266342, 0.99248121, 0.44424847],
+                             [- 4.42031875, -0.00494717, 0.00256096, 5.41537158, 0.98269102, 0.99249187, 0.44431776],
+                             [- 4.42460508, -0.00494030, 0.00255722, 5.41966478, 0.98271852, 0.99250248, 0.44438745],
+                             [- 4.42888615, -0.00493346, 0.00255351, 5.42395268, 0.98274590, 0.99251302, 0.44445755],
+                             [- 4.43316194, -0.00492666, 0.00254984, 5.42823528, 0.98277317, 0.99252350, 0.44452803],
+                             [- 4.43743244, -0.00491989, 0.00254618, 5.43251255, 0.98280033, 0.99253392, 0.44459891],
+                             [- 4.44169763, -0.00491316, 0.00254256, 5.43678447, 0.98282738, 0.99254428, 0.44467016],
+                             [- 4.44595749, -0.00490646, 0.00253896, 5.44105103, 0.98285433, 0.99255458, 0.44474179],
+                             [- 4.45021200, -0.00489979, 0.00253539, 5.44531221, 0.98288117, 0.99256482, 0.44481379],
+                             [- 4.45446115, -0.00489316, 0.00253185, 5.44956799, 0.98290790, 0.99257500, 0.44488616],
+                             [- 4.45870490, -0.00488655, 0.00252833, 5.45381835, 0.98293452, 0.99258512, 0.44495888],
+                             [- 4.46294326, -0.00487998, 0.00252484, 5.45806327, 0.98296105, 0.99259518, 0.44503195],
+                             [- 4.46717619, -0.00487344, 0.00252137, 5.46230275, 0.98298746, 0.99260519, 0.44510537],
+                             [- 4.47140368, -0.00486693, 0.00251793, 5.46653675, 0.98301378, 0.99261514, 0.44517912],
+                             [- 4.47562571, -0.00486046, 0.00251451, 5.47076526, 0.98303999, 0.99262503, 0.44525322],
+                             [- 4.47984227, -0.00485401, 0.00251112, 5.47498827, 0.98306610, 0.99263487, 0.44532764],
+                             [- 4.48405334, -0.00484759, 0.00250775, 5.47920575, 0.98309211, 0.99264465, 0.44540238],
+                             [- 4.48825891, -0.00484121, 0.00250441, 5.48341770, 0.98311802, 0.99265438, 0.44547744],
+                             [- 4.49245894, -0.00483485, 0.00250109, 5.48762409, 0.98314383, 0.99266406, 0.44555282],
+                             [- 4.49665344, -0.00482852, 0.00249780, 5.49182492, 0.98316954, 0.99267368, 0.44562850],
+                             [- 4.50084238, -0.00482223, 0.00249453, 5.49602015, 0.98319515, 0.99268325, 0.44570449],
+                             [- 4.50502575, -0.00481596, 0.00249128, 5.50020979, 0.98322067, 0.99269277, 0.44578077],
+                             [- 4.50920352, -0.00480972, 0.00248805, 5.50439380, 0.98324609, 0.99270223, 0.44585734],
+                             [- 4.51337569, -0.00480350, 0.00248485, 5.50857219, 0.98327141, 0.99271164, 0.44593420],
+                             [- 4.51754224, -0.00479732, 0.00248167, 5.51274492, 0.98329664, 0.99272101, 0.44601134],
+                             [- 4.52170315, -0.00479117, 0.00247851, 5.51691199, 0.98332177, 0.99273032, 0.44608876],
+                             [- 4.52585842, -0.00478504, 0.00247538, 5.52107338, 0.98334681, 0.99273958, 0.44616645],
+                             [- 4.53000801, -0.00477894, 0.00247227, 5.52522907, 0.98337176, 0.99274880, 0.44624440],
+                             [- 4.53415192, -0.00477286, 0.00246917, 5.52937906, 0.98339661, 0.99275796, 0.44632262],
+                             [- 4.53829014, -0.00476682, 0.00246610, 5.53352332, 0.98342137, 0.99276708, 0.44640109],
+                             [- 4.54242264, -0.00476080, 0.00246306, 5.53766184, 0.98344605, 0.99277615, 0.44647982],
+                             [- 4.54654942, -0.00475480, 0.00246003, 5.54179461, 0.98347063, 0.99278517, 0.44655879],
+                             [- 4.55067046, -0.00474884, 0.00245702, 5.54592162, 0.98349512, 0.99279414, 0.44663801],
+                             [- 4.55478574, -0.00474290, 0.00245404, 5.55004285, 0.98351952, 0.99280307, 0.44671746],
+                             [- 4.55889526, -0.00473698, 0.00245107, 5.55415828, 0.98354383, 0.99281195, 0.44679715],
+                             [- 4.56299899, -0.00473109, 0.00244812, 5.55826790, 0.98356806, 0.99282079, 0.44687706],
+                             [- 4.56709693, -0.00472522, 0.00244520, 5.56237170, 0.98359219, 0.99282958, 0.44695720],
+                             [- 4.57118906, -0.00471938, 0.00244229, 5.56646967, 0.98361625, 0.99283832, 0.44703756],
+                             [- 4.57527536, -0.00471357, 0.00243940, 5.57056179, 0.98364021, 0.99284703, 0.44711814],
+                             [- 4.57935583, -0.00470778, 0.00243654, 5.57464806, 0.98366409, 0.99285569, 0.44719893],
+                             [- 4.58343045, -0.00470201, 0.00243369, 5.57872844, 0.98368788, 0.99286430, 0.44727992],
+                             [- 4.58749921, -0.00469627, 0.00243086, 5.58280295, 0.98371159, 0.99287287, 0.44736112],
+                             [- 4.59156210, -0.00469055, 0.00242805, 5.58687155, 0.98373522, 0.99288140, 0.44744252],
+                             [- 4.59561910, -0.00468485, 0.00242526, 5.59093424, 0.98375876, 0.99288989, 0.44752411],
+                             [- 4.59967020, -0.00467918, 0.00242248, 5.59499102, 0.98378222, 0.99289833, 0.44760589],
+                             [- 4.60371538, -0.00467353, 0.00241973, 5.59904185, 0.98380560, 0.99290674, 0.44768785],
+                             [- 4.60775465, -0.00466791, 0.00241699, 5.60308674, 0.98382890, 0.99291510, 0.44777000],
+                             [- 4.61178797, -0.00466230, 0.00241427, 5.60712567, 0.98385211, 0.99292343, 0.44785233],
+                             [- 4.61581536, -0.00465672, 0.00241157, 5.61115863, 0.98387525, 0.99293171, 0.44793483],
+                             [- 4.61983678, -0.00465116, 0.00240889, 5.61518561, 0.98389830, 0.99293995, 0.44801750],
+                             [- 4.62385223, -0.00464563, 0.00240622, 5.61920660, 0.98392128, 0.99294815, 0.44810034],
+                             [- 4.62786170, -0.00464011, 0.00240357, 5.62322158, 0.98394418, 0.99295632, 0.44818334],
+                             [- 4.63186517, -0.00463462, 0.00240093, 5.62723055, 0.98396700, 0.99296444, 0.44826650],
+                             [- 4.63586264, -0.00462915, 0.00239832, 5.63123349, 0.98398974, 0.99297253, 0.44834982],
+                             [- 4.63985410, -0.00462370, 0.00239572, 5.63523040, 0.98401240, 0.99298058, 0.44843328],
+                             [- 4.64383953, -0.00461827, 0.00239313, 5.63922126, 0.98403499, 0.99298859, 0.44851690],
+                             [- 4.64781892, -0.00461286, 0.00239057, 5.64320606, 0.98405750, 0.99299657, 0.44860066],
+                             [- 4.65179227, -0.00460748, 0.00238802, 5.64718479, 0.98407993, 0.99300451, 0.44868455],
+                             [- 4.65575956, -0.00460211, 0.00238548, 5.65115744, 0.98410229, 0.99301241, 0.44876859],
+                             [- 4.65972078, -0.00459677, 0.00238296, 5.65512401, 0.98412458, 0.99302027, 0.44885276],
+                             [- 4.66367592, -0.00459144, 0.00238046, 5.65908448, 0.98414679, 0.99302810, 0.44893706],
+                             [- 4.66762497, -0.00458614, 0.00237797, 5.66303884, 0.98416893, 0.99303590, 0.44902148],
+                             [- 4.67156793, -0.00458085, 0.00237549, 5.66698708, 0.98419099, 0.99304366, 0.44910603],
+                             [- 4.67550478, -0.00457558, 0.00237303, 5.67092920, 0.98421298, 0.99305138, 0.44919070],
+                             [- 4.67943552, -0.00457034, 0.00237059, 5.67486518, 0.98423490, 0.99305907, 0.44927549],
+                             [- 4.68336012, -0.00456511, 0.00236816, 5.67879501, 0.98425675, 0.99306673, 0.44936038],
+                             [- 4.68727860, -0.00455990, 0.00236575, 5.68271869, 0.98427852, 0.99307435, 0.44944539],
+                             [- 4.69119092, -0.00455472, 0.00236335, 5.68663621, 0.98430023, 0.99308194, 0.44953051],
+                             [- 4.69509710, -0.00454955, 0.00236096, 5.69054755, 0.98432186, 0.99308949, 0.44961572],
+                             [- 4.69899711, -0.00454440, 0.00235859, 5.69445271, 0.98434343, 0.99309701, 0.44970104],
+                             [- 4.70289095, -0.00453926, 0.00235623, 5.69835168, 0.98436492, 0.99310450, 0.44978646],
+                             [- 4.70677861, -0.00453415, 0.00235389, 5.70224446, 0.98438635, 0.99311196, 0.44987197],
+                             [- 4.71066008, -0.00452905, 0.00235156, 5.70613103, 0.98440771, 0.99311939, 0.44995757],
+                             [- 4.71453535, -0.00452398, 0.00234924, 5.71001138, 0.98442899, 0.99312678, 0.45004326],
+                             [- 4.71840442, -0.00451892, 0.00234694, 5.71388551, 0.98445021, 0.99313414, 0.45012903],
+                             [- 4.72226728, -0.00451387, 0.00234465, 5.71775341, 0.98447137, 0.99314147, 0.45021488],
+                             [- 4.72612392, -0.00450885, 0.00234237, 5.72161507, 0.98449245, 0.99314877, 0.45030082],
+                             [- 4.72997433, -0.00450384, 0.00234011, 5.72547048, 0.98451347, 0.99315604, 0.45038683],
+                             [- 4.73381850, -0.00449885, 0.00233786, 5.72931964, 0.98453443, 0.99316328, 0.45047291],
+                             [- 4.73765643, -0.00449388, 0.00233562, 5.73316254, 0.98455532, 0.99317049, 0.45055907],
+                             [- 4.74148810, -0.00448893, 0.00233340, 5.73699917, 0.98457614, 0.99317767, 0.45064529],
+                             [- 4.74531352, -0.00448399, 0.00233119, 5.74082953, 0.98459690, 0.99318483, 0.45073158],
+                             [- 4.74913267, -0.00447907, 0.00232899, 5.74465360, 0.98461759, 0.99319195, 0.45081792],
+                             [- 4.75294555, -0.00447416, 0.00232680, 5.74847138, 0.98463822, 0.99319904, 0.45090433],
+                             [- 4.75675214, -0.00446927, 0.00232462, 5.75228287, 0.98465878, 0.99320610, 0.45099080],
+                             [- 4.76055246, -0.00446440, 0.00232246, 5.75608805, 0.98467929, 0.99321314, 0.45107732],
+                             [- 4.76434647, -0.00445955, 0.00232031, 5.75988693, 0.98469973, 0.99322015, 0.45116389],
+                             [- 4.76813419, -0.00445471, 0.00231816, 5.76367948, 0.98472010, 0.99322713, 0.45125051],
+                             [- 4.77191560, -0.00444988, 0.00231604, 5.76746572, 0.98474042, 0.99323408, 0.45133717],
+                             [- 4.77569070, -0.00444507, 0.00231392, 5.77124562, 0.98476067, 0.99324101, 0.45142388],
+                             [- 4.77945947, -0.00444028, 0.00231181, 5.77501919, 0.98478086, 0.99324791, 0.45151063],
+                             [- 4.78322192, -0.00443550, 0.00230972, 5.77878642, 0.98480099, 0.99325478, 0.45159742],
+                             [- 4.78697804, -0.00443074, 0.00230763, 5.78254730, 0.98482106, 0.99326162, 0.45168425],
+                             [- 4.79072783, -0.00442600, 0.00230556, 5.78630183, 0.98484107, 0.99326844, 0.45177111],
+                             [- 4.79447127, -0.00442127, 0.00230350, 5.79005000, 0.98486102, 0.99327523, 0.45185800],
+                             [- 4.79820836, -0.00441655, 0.00230145, 5.79379181, 0.98488091, 0.99328200, 0.45194492],
+                             [- 4.80193909, -0.00441185, 0.00229941, 5.79752724, 0.98490074, 0.99328874, 0.45203187],
+                             [- 4.80566347, -0.00440716, 0.00229738, 5.80125630, 0.98492051, 0.99329546, 0.45211884],
+                             [- 4.80938148, -0.00440249, 0.00229536, 5.80497899, 0.98494022, 0.99330215, 0.45220583],
+                             [- 4.81309312, -0.00439783, 0.00229335, 5.80869528, 0.98495988, 0.99330881, 0.45229285],
+                             [- 4.81679838, -0.00439319, 0.00229135, 5.81240519, 0.98497947, 0.99331546, 0.45237988],
+                             [- 4.82049726, -0.00438856, 0.00228937, 5.81610870, 0.98499901, 0.99332207, 0.45246692],
+                             [- 4.82418976, -0.00438395, 0.00228739, 5.81980581, 0.98501850, 0.99332866, 0.45255398],
+                             [- 4.82787587, -0.00437935, 0.00228542, 5.82349652, 0.98503792, 0.99333523, 0.45264105],
+                             [- 4.83155558, -0.00437476, 0.00228346, 5.82718082, 0.98505729, 0.99334178, 0.45272813],
+                             [- 4.83522889, -0.00437019, 0.00228151, 5.83085870, 0.98507660, 0.99334830, 0.45281521],
+                             [- 4.83889580, -0.00436563, 0.00227957, 5.83453017, 0.98509586, 0.99335480, 0.45290231],
+                             [- 4.84255630, -0.00436109, 0.00227764, 5.83819521, 0.98511506, 0.99336127, 0.45298940],
+                             [- 4.84621038, -0.00435656, 0.00227572, 5.84185383, 0.98513421, 0.99336772, 0.45307649],
+                             [- 4.84985805, -0.00435204, 0.00227381, 5.84550601, 0.98515330, 0.99337415, 0.45316358],
+                             [- 4.85349930, -0.00434753, 0.00227191, 5.84915177, 0.98517233, 0.99338056, 0.45325067],
+                             [- 4.85713412, -0.00434304, 0.00227002, 5.85279108, 0.98519132, 0.99338694, 0.45333775],
+                             [- 4.86076252, -0.00433856, 0.00226813, 5.85642396, 0.98521024, 0.99339330, 0.45342482],
+                             [- 4.86438448, -0.00433410, 0.00226626, 5.86005038, 0.98522912, 0.99339964, 0.45351189],
+                             [- 4.86800001, -0.00432965, 0.00226439, 5.86367036, 0.98524794, 0.99340596, 0.45359894],
+                             [- 4.87160909, -0.00432521, 0.00226253, 5.86728389, 0.98526671, 0.99341226, 0.45368598],
+                             [- 4.87521174, -0.00432078, 0.00226069, 5.87089096, 0.98528542, 0.99341853, 0.45377301],
+                             [- 4.87880793, -0.00431637, 0.00225885, 5.87449157, 0.98530409, 0.99342479, 0.45386001],
+                             [- 4.88239768, -0.00431196, 0.00225701, 5.87808572, 0.98532270, 0.99343102, 0.45394700],
+                             [- 4.88598098, -0.00430758, 0.00225519, 5.88167340, 0.98534126, 0.99343723, 0.45403397],
+                             [- 4.88955781, -0.00430320, 0.00225338, 5.88525462, 0.98535976, 0.99344342, 0.45412092],
+                             [- 4.89312819, -0.00429883, 0.00225157, 5.88882936, 0.98537822, 0.99344960, 0.45420784],
+                             [- 4.89669211, -0.00429448, 0.00224977, 5.89239763, 0.98539662, 0.99345575, 0.45429473],
+                             [- 4.90024957, -0.00429014, 0.00224798, 5.89595942, 0.98541498, 0.99346188, 0.45438160],
+                             [- 4.90380055, -0.00428581, 0.00224620, 5.89951474, 0.98543328, 0.99346799, 0.45446844],
+                             [- 4.90734507, -0.00428150, 0.00224442, 5.90306357, 0.98545154, 0.99347408, 0.45455524],
+                             [- 4.91088312, -0.00427719, 0.00224266, 5.90660592, 0.98546974, 0.99348015, 0.45464201],
+                             [- 4.91441469, -0.00427290, 0.00224090, 5.91014179, 0.98548790, 0.99348620, 0.45472875],
+                             [- 4.91793978, -0.00426862, 0.00223915, 5.91367116, 0.98550600, 0.99349224, 0.45481546],
+                             [- 4.92145840, -0.00426435, 0.00223740, 5.91719405, 0.98552406, 0.99349825, 0.45490212],
+                             [- 4.92497053, -0.00426009, 0.00223566, 5.92071044, 0.98554206, 0.99350425, 0.45498875],
+                             [- 4.92847618, -0.00425584, 0.00223394, 5.92422034, 0.98556002, 0.99351022, 0.45507533],
+                             [- 4.93197535, -0.00425160, 0.00223221, 5.92772375, 0.98557793, 0.99351618, 0.45516187],
+                             [- 4.93546803, -0.00424738, 0.00223050, 5.93122065, 0.98559579, 0.99352212, 0.45524837],
+                             [- 4.93895423, -0.00424317, 0.00222879, 5.93471106, 0.98561361, 0.99352804, 0.45533482],
+                             [- 4.94243393, -0.00423896, 0.00222709, 5.93819497, 0.98563138, 0.99353395, 0.45542123],
+                             [- 4.94590714, -0.00423477, 0.00222540, 5.94167237, 0.98564910, 0.99353983, 0.45550758],
+                             [- 4.94937386, -0.00423059, 0.00222371, 5.94514327, 0.98566677, 0.99354570, 0.45559389],
+                             [- 4.95283409, -0.00422642, 0.00222203, 5.94860767, 0.98568439, 0.99355155, 0.45568014],
+                             [- 4.95628782, -0.00422226, 0.00222036, 5.95206556, 0.98570197, 0.99355738, 0.45576634],
+                             [- 4.95973505, -0.00421811, 0.00221869, 5.95551694, 0.98571951, 0.99356320, 0.45585249],
+                             [- 4.96317579, -0.00421397, 0.00221703, 5.95896181, 0.98573699, 0.99356900, 0.45593858],
+                             [- 4.96661002, -0.00420984, 0.00221538, 5.96240018, 0.98575444, 0.99357478, 0.45602462],
+                             [- 4.97003776, -0.00420573, 0.00221373, 5.96583204, 0.98577183, 0.99358054, 0.45611059],
+                             [- 4.97345900, -0.00420162, 0.00221209, 5.96925738, 0.98578918, 0.99358629, 0.45619651],
+                             [- 4.97687374, -0.00419752, 0.00221046, 5.97267622, 0.98580649, 0.99359202, 0.45628236],
+                             [- 4.98028197, -0.00419344, 0.00220883, 5.97608854, 0.98582375, 0.99359774, 0.45636816],
+                             [- 4.98368371, -0.00418936, 0.00220721, 5.97949435, 0.98584096, 0.99360343, 0.45645388],
+                             [- 4.98707894, -0.00418529, 0.00220559, 5.98289365, 0.98585814, 0.99360912, 0.45653955],
+                             [- 4.99046767, -0.00418123, 0.00220398, 5.98628643, 0.98587526, 0.99361478, 0.45662514],
+                             [- 4.99384989, -0.00417719, 0.00220238, 5.98967270, 0.98589235, 0.99362043, 0.45671067],
+                             [- 4.99722561, -0.00417315, 0.00220078, 5.99305246, 0.98590939, 0.99362607, 0.45679613],
+                             [- 5.00059483, -0.00416912, 0.00219919, 5.99642571, 0.98592638, 0.99363169, 0.45688152],
+                             [- 5.00395754, -0.00416511, 0.00219761, 5.99979244, 0.98594334, 0.99363729, 0.45696684],
+                             [- 5.00731375, -0.00416110, 0.00219603, 6.00315266, 0.98596025, 0.99364288, 0.45705209],
+                             [- 5.01066346, -0.00415710, 0.00219445, 6.00650636, 0.98597712, 0.99364845, 0.45713726],
+                             [- 5.01400667, -0.00415311, 0.00219288, 6.00985356, 0.98599394, 0.99365401, 0.45722236],
+                             [- 5.01734337, -0.00414913, 0.00219132, 6.01319424, 0.98601072, 0.99365955, 0.45730738],
+                             [- 5.02067356, -0.00414516, 0.00218976, 6.01652841, 0.98602746, 0.99366508, 0.45739233],
+                             [- 5.02399726, -0.00414120, 0.00218821, 6.01985606, 0.98604416, 0.99367059, 0.45747719],
+                             [- 5.02731445, -0.00413724, 0.00218666, 6.02317721, 0.98606082, 0.99367609, 0.45756198],
+                             [- 5.03062515, -0.00413330, 0.00218512, 6.02649184, 0.98607744, 0.99368157, 0.45764669],
+                             [- 5.03392934, -0.00412937, 0.00218359, 6.02979997, 0.98609401, 0.99368704, 0.45773131],
+                             [- 5.03722703, -0.00412544, 0.00218206, 6.03310159, 0.98611054, 0.99369250, 0.45781585],
+                             [- 5.04051822, -0.00412153, 0.00218053, 6.03639670, 0.98612704, 0.99369794, 0.45790031],
+                             [- 5.04380292, -0.00411762, 0.00217901, 6.03968530, 0.98614349, 0.99370337, 0.45798469],
+                             [- 5.04708112, -0.00411372, 0.00217750, 6.04296739, 0.98615990, 0.99370878, 0.45806897],
+                             [- 5.05035282, -0.00410983, 0.00217599, 6.04624299, 0.98617627, 0.99371418, 0.45815318],
+                             [- 5.05361802, -0.00410595, 0.00217448, 6.04951207, 0.98619260, 0.99371957, 0.45823729],
+                             [- 5.05687674, -0.00410208, 0.00217298, 6.05277466, 0.98620889, 0.99372494, 0.45832131],
+                             [- 5.06012896, -0.00409821, 0.00217148, 6.05603074, 0.98622514, 0.99373030, 0.45840525],
+                             [- 5.06337469, -0.00409436, 0.00216999, 6.05928033, 0.98624135, 0.99373565, 0.45848909],
+                             [- 5.06661393, -0.00409051, 0.00216851, 6.06252341, 0.98625753, 0.99374098, 0.45857285],
+                             [- 5.06984668, -0.00408668, 0.00216703, 6.06576000, 0.98627366, 0.99374630, 0.45865651],
+                             [- 5.07307294, -0.00408285, 0.00216555, 6.06899010, 0.98628975, 0.99375161, 0.45874007],
+                             [- 5.07629272, -0.00407902, 0.00216408, 6.07221370, 0.98630581, 0.99375690, 0.45882355],
+                             [- 5.07950602, -0.00407521, 0.00216261, 6.07543081, 0.98632182, 0.99376218, 0.45890693],
+                             [- 5.08271283, -0.00407141, 0.00216115, 6.07864143, 0.98633780, 0.99376745, 0.45899021],
+                             [- 5.08591317, -0.00406761, 0.00215969, 6.08184556, 0.98635374, 0.99377270, 0.45907339],
+                             [- 5.08910703, -0.00406382, 0.00215823, 6.08504321, 0.98636965, 0.99377795, 0.45915648],
+                             [- 5.09229441, -0.00406004, 0.00215678, 6.08823437, 0.98638551, 0.99378318, 0.45923947],
+                             [- 5.09547532, -0.00405627, 0.00215534, 6.09141905, 0.98640134, 0.99378840, 0.45932235],
+                             [- 5.09864975, -0.00405250, 0.00215390, 6.09459725, 0.98641713, 0.99379360, 0.45940514],
+                             [- 5.10181772, -0.00404874, 0.00215246, 6.09776897, 0.98643288, 0.99379880, 0.45948783],
+                             [- 5.10497922, -0.00404500, 0.00215102, 6.10093422, 0.98644859, 0.99380398, 0.45957041],
+                             [- 5.10813425, -0.00404125, 0.00214960, 6.10409300, 0.98646427, 0.99380915, 0.45965289],
+                             [- 5.11128282, -0.00403752, 0.00214817, 6.10724530, 0.98647991, 0.99381431, 0.45973527],
+                             [- 5.11442494, -0.00403379, 0.00214675, 6.11039114, 0.98649552, 0.99381946, 0.45981755],
+                             [- 5.11756059, -0.00403008, 0.00214533, 6.11353051, 0.98651108, 0.99382459, 0.45989972],
+                             [- 5.12068979, -0.00402637, 0.00214392, 6.11666343, 0.98652662, 0.99382971, 0.45998178],
+                             [- 5.12381254, -0.00402266, 0.00214251, 6.11978988, 0.98654211, 0.99383483, 0.46006373],
+                             [- 5.12692884, -0.00401897, 0.00214110, 6.12290987, 0.98655757, 0.99383993, 0.46014558],
+                             [- 5.13003869, -0.00401528, 0.00213970, 6.12602341, 0.98657300, 0.99384502, 0.46022732],
+                             [- 5.13314210, -0.00401160, 0.00213831, 6.12913050, 0.98658838, 0.99385010, 0.46030896],
+                             [- 5.13623906, -0.00400792, 0.00213691, 6.13223114, 0.98660374, 0.99385516, 0.46039048],
+                             [- 5.13932959, -0.00400426, 0.00213552, 6.13532533, 0.98661906, 0.99386022, 0.46047189],
+                             [- 5.14241368, -0.00400060, 0.00213413, 6.13841308, 0.98663434, 0.99386527, 0.46055319],
+                             [- 5.14549135, -0.00399695, 0.00213275, 6.14149440, 0.98664959, 0.99387030, 0.46063438],
+                             [- 5.14856258, -0.00399330, 0.00213137, 6.14456928, 0.98666480, 0.99387532, 0.46071546],
+                             [- 5.15162739, -0.00398967, 0.00213000, 6.14763772, 0.98667998, 0.99388034, 0.46079643],
+                             [- 5.15468577, -0.00398604, 0.00212862, 6.15069974, 0.98669512, 0.99388534, 0.46087728],
+                             [- 5.15773774, -0.00398241, 0.00212725, 6.15375533, 0.98671023, 0.99389033, 0.46095802],
+                             [- 5.16078329, -0.00397880, 0.00212589, 6.15680449, 0.98672531, 0.99389532, 0.46103864],
+                             [- 5.16382243, -0.00397519, 0.00212453, 6.15984724, 0.98674035, 0.99390029, 0.46111915],
+                             [- 5.16685516, -0.00397159, 0.00212317, 6.16288358, 0.98675535, 0.99390525, 0.46119954],
+                             [- 5.16988149, -0.00396799, 0.00212181, 6.16591350, 0.98677033, 0.99391020, 0.46127982],
+                             [- 5.17290141, -0.00396440, 0.00212046, 6.16893701, 0.98678527, 0.99391514, 0.46135997],
+                             [- 5.17591494, -0.00396082, 0.00211911, 6.17195412, 0.98680017, 0.99392007, 0.46144001],
+                             [- 5.17892208, -0.00395724, 0.00211776, 6.17496483, 0.98681505, 0.99392499, 0.46151994],
+                             [- 5.18192282, -0.00395368, 0.00211642, 6.17796914, 0.98682989, 0.99392990, 0.46159974],
+                             [- 5.18491718, -0.00395011, 0.00211508, 6.18096706, 0.98684470, 0.99393481, 0.46167943],
+                             [- 5.18790516, -0.00394656, 0.00211374, 6.18395860, 0.98685947, 0.99393970, 0.46175899],
+                             [- 5.19088675, -0.00394301, 0.00211241, 6.18694374, 0.98687421, 0.99394458, 0.46183843],
+                             [- 5.19386198, -0.00393947, 0.00211108, 6.18992251, 0.98688892, 0.99394945, 0.46191776],
+                             [- 5.19683083, -0.00393593, 0.00210975, 6.19289490, 0.98690360, 0.99395432, 0.46199696],
+                             [- 5.19979332, -0.00393241, 0.00210843, 6.19586092, 0.98691824, 0.99395917, 0.46207604],
+                             [- 5.20274945, -0.00392888, 0.00210710, 6.19882057, 0.98693285, 0.99396401, 0.46215500],
+                             [- 5.20569922, -0.00392537, 0.00210578, 6.20177385, 0.98694743, 0.99396885, 0.46223383],
+                             [- 5.20864264, -0.00392186, 0.00210447, 6.20472078, 0.98696198, 0.99397367, 0.46231254],
+                             [- 5.21157971, -0.00391835, 0.00210315, 6.20766135, 0.98697650, 0.99397849, 0.46239113],
+                             [- 5.21451043, -0.00391486, 0.00210184, 6.21059558, 0.98699098, 0.99398330, 0.46246959],
+                             [- 5.21743482, -0.00391137, 0.00210054, 6.21352345, 0.98700544, 0.99398810, 0.46254793],
+                             [- 5.22035287, -0.00390788, 0.00209923, 6.21644499, 0.98701986, 0.99399289, 0.46262614],
+                             [- 5.22326459, -0.00390440, 0.00209793, 6.21936019, 0.98703425, 0.99399767, 0.46270423],
+                             [- 5.22616999, -0.00390093, 0.00209663, 6.22226905, 0.98704861, 0.99400244, 0.46278219],
+                             [- 5.22906906, -0.00389747, 0.00209533, 6.22517159, 0.98706294, 0.99400720, 0.46286003],
+                             [- 5.23196182, -0.00389401, 0.00209404, 6.22806781, 0.98707724, 0.99401196, 0.46293774],
+                             [- 5.23484826, -0.00389055, 0.00209274, 6.23095771, 0.98709151, 0.99401670, 0.46301532],
+                             [- 5.23772840, -0.00388711, 0.00209145, 6.23384129, 0.98710574, 0.99402144, 0.46309277],
+                             [- 5.24060224, -0.00388366, 0.00209017, 6.23671857, 0.98711995, 0.99402617, 0.46317009],
+                             [- 5.24346978, -0.00388023, 0.00208888, 6.23958955, 0.98713413, 0.99403089, 0.46324729],
+                             [- 5.24633103, -0.00387680, 0.00208760, 6.24245423, 0.98714827, 0.99403560, 0.46332436],
+                             [- 5.24918599, -0.00387338, 0.00208632, 6.24531261, 0.98716239, 0.99404030, 0.46340129],
+                             [- 5.25203467, -0.00386996, 0.00208504, 6.24816471, 0.98717648, 0.99404500, 0.46347810],
+                             [- 5.25487707, -0.00386655, 0.00208377, 6.25101053, 0.98719053, 0.99404969, 0.46355478],
+                             [- 5.25771320, -0.00386314, 0.00208250, 6.25385007, 0.98720456, 0.99405436, 0.46363133],
+                             [- 5.26054307, -0.00385974, 0.00208123, 6.25668333, 0.98721856, 0.99405904, 0.46370775],
+                             [- 5.26336668, -0.00385634, 0.00207996, 6.25951033, 0.98723253, 0.99406370, 0.46378403],
+                             [- 5.26618402, -0.00385295, 0.00207869, 6.26233107, 0.98724646, 0.99406835, 0.46386019],
+                             [- 5.26899512, -0.00384957, 0.00207743, 6.26514555, 0.98726037, 0.99407300, 0.46393621],
+                             [- 5.27179998, -0.00384619, 0.00207617, 6.26795379, 0.98727425, 0.99407764, 0.46401210],
+                             [- 5.27459860, -0.00384282, 0.00207491, 6.27075577, 0.98728810, 0.99408227, 0.46408786],
+                             [- 5.27739098, -0.00383945, 0.00207365, 6.27355152, 0.98730193, 0.99408689, 0.46416348],
+                             [- 5.28017713, -0.00383609, 0.00207240, 6.27634104, 0.98731572, 0.99409151, 0.46423898],
+                             [- 5.28295706, -0.00383274, 0.00207115, 6.27912432, 0.98732949, 0.99409612, 0.46431433],
+                             [- 5.28573078, -0.00382939, 0.00206989, 6.28190139, 0.98734322, 0.99410072, 0.46438956],
+                             [- 5.28849828, -0.00382604, 0.00206865, 6.28467224, 0.98735693, 0.99410531, 0.46446465],
+                             [- 5.29125958, -0.00382271, 0.00206740, 6.28743687, 0.98737061, 0.99410989, 0.46453961],
+                             [- 5.29401468, -0.00381937, 0.00206616, 6.29019530, 0.98738426, 0.99411447, 0.46461443],
+                             [- 5.29676358, -0.00381604, 0.00206491, 6.29294754, 0.98739789, 0.99411904, 0.46468912],
+                             [- 5.29950630, -0.00381272, 0.00206367, 6.29569358, 0.98741148, 0.99412361, 0.46476368],
+                             [- 5.30224283, -0.00380940, 0.00206243, 6.29843343, 0.98742505, 0.99412816, 0.46483809],
+                             [- 5.30497319, -0.00380609, 0.00206120, 6.30116710, 0.98743859, 0.99413271, 0.46491238],
+                             [- 5.30769738, -0.00380279, 0.00205996, 6.30389459, 0.98745210, 0.99413725, 0.46498652],
+                             [- 5.31041540, -0.00379948, 0.00205873, 6.30661592, 0.98746559, 0.99414179, 0.46506054],
+                             [- 5.31312727, -0.00379619, 0.00205750, 6.30933108, 0.98747905, 0.99414631, 0.46513441],
+                             [- 5.31583299, -0.00379290, 0.00205627, 6.31204009, 0.98749248, 0.99415083, 0.46520815],
+                             [- 5.31853255, -0.00378961, 0.00205504, 6.31474294, 0.98750588, 0.99415535, 0.46528175],
+                             [- 5.32122598, -0.00378633, 0.00205382, 6.31743965, 0.98751926, 0.99415985, 0.46535522],
+                             [- 5.32391328, -0.00378306, 0.00205259, 6.32013023, 0.98753261, 0.99416435, 0.46542855],
+                             [- 5.32659445, -0.00377979, 0.00205137, 6.32281466, 0.98754593, 0.99416884, 0.46550174],
+                             [- 5.32926950, -0.00377652, 0.00205015, 6.32549298, 0.98755923, 0.99417333, 0.46557479],
+                             [- 5.33193843, -0.00377326, 0.00204893, 6.32816517, 0.98757249, 0.99417781, 0.46564771],
+                             [- 5.33460126, -0.00377000, 0.00204772, 6.33083125, 0.98758574, 0.99418228, 0.46572049],
+                             [- 5.33725798, -0.00376675, 0.00204650, 6.33349123, 0.98759895, 0.99418674, 0.46579313],
+                             [- 5.33990861, -0.00376351, 0.00204529, 6.33614511, 0.98761214, 0.99419120, 0.46586563],
+                             [- 5.34255316, -0.00376027, 0.00204408, 6.33879289, 0.98762531, 0.99419565, 0.46593799],
+                             [- 5.34519162, -0.00375703, 0.00204287, 6.34143458, 0.98763844, 0.99420010, 0.46601022],
+                             [- 5.34782400, -0.00375380, 0.00204166, 6.34407020, 0.98765155, 0.99420454, 0.46608230],
+                             [- 5.35045032, -0.00375058, 0.00204045, 6.34669974, 0.98766464, 0.99420897, 0.46615425],
+                             [- 5.35307057, -0.00374736, 0.00203925, 6.34932321, 0.98767770, 0.99421340, 0.46622606],
+                             [- 5.35568477, -0.00374414, 0.00203804, 6.35194063, 0.98769073, 0.99421781, 0.46629773],
+                             [- 5.35829292, -0.00374093, 0.00203684, 6.35455199, 0.98770374, 0.99422223, 0.46636926],
+                             [- 5.36089503, -0.00373773, 0.00203564, 6.35715730, 0.98771672, 0.99422663, 0.46644065],
+                             [- 5.36349110, -0.00373453, 0.00203444, 6.35975657, 0.98772968, 0.99423103, 0.46651190],
+                             [- 5.36608114, -0.00373133, 0.00203324, 6.36234981, 0.98774261, 0.99423543, 0.46658301],
+                             [- 5.36866517, -0.00372814, 0.00203205, 6.36493703, 0.98775552, 0.99423982, 0.46665398],
+                             [- 5.37124318, -0.00372495, 0.00203085, 6.36751823, 0.98776840, 0.99424420, 0.46672482],
+                             [- 5.37381518, -0.00372177, 0.00202966, 6.37009341, 0.98778125, 0.99424857, 0.46679551],
+                             [- 5.37638118, -0.00371859, 0.00202847, 6.37266259, 0.98779408, 0.99425294, 0.46686606],
+                             [- 5.37894119, -0.00371542, 0.00202728, 6.37522577, 0.98780689, 0.99425730, 0.46693647],
+                             [- 5.38149521, -0.00371225, 0.00202609, 6.37778296, 0.98781967, 0.99426166, 0.46700674],
+                             [- 5.38404325, -0.00370909, 0.00202490, 6.38033416, 0.98783243, 0.99426601, 0.46707687],
+                             [- 5.38658532, -0.00370593, 0.00202371, 6.38287939, 0.98784516, 0.99427036, 0.46714686],
+                             [- 5.38912142, -0.00370278, 0.00202253, 6.38541865, 0.98785786, 0.99427470, 0.46721671],
+                             [- 5.39165157, -0.00369963, 0.00202134, 6.38795194, 0.98787055, 0.99427903, 0.46728642],
+                             [- 5.39417576, -0.00369648, 0.00202016, 6.39047928, 0.98788320, 0.99428336, 0.46735598],
+                             [- 5.39669401, -0.00369334, 0.00201898, 6.39300067, 0.98789584, 0.99428768, 0.46742541],
+                             [- 5.39920633, -0.00369021, 0.00201780, 6.39551612, 0.98790845, 0.99429200, 0.46749470],
+                             [- 5.40171272, -0.00368707, 0.00201662, 6.39802564, 0.98792103, 0.99429631, 0.46756384],
+                             [- 5.40421318, -0.00368395, 0.00201544, 6.40052923, 0.98793359, 0.99430061, 0.46763284],
+                             [- 5.40670773, -0.00368082, 0.00201427, 6.40302690, 0.98794613, 0.99430491, 0.46770170],
+                             [- 5.40919637, -0.00367771, 0.00201309, 6.40551867, 0.98795864, 0.99430920, 0.46777042],
+                             [- 5.41167912, -0.00367459, 0.00201192, 6.40800452, 0.98797113, 0.99431349, 0.46783900],
+                             [- 5.41415597, -0.00367148, 0.00201075, 6.41048448, 0.98798360, 0.99431777, 0.46790744],
+                             [- 5.41662693, -0.00366838, 0.00200957, 6.41295855, 0.98799604, 0.99432205, 0.46797574],
+                             [- 5.41909202, -0.00366528, 0.00200840, 6.41542674, 0.98800846, 0.99432632, 0.46804389],
+                             [- 5.42155124, -0.00366218, 0.00200724, 6.41788906, 0.98802085, 0.99433058, 0.46811190],
+                             [- 5.42400460, -0.00365909, 0.00200607, 6.42034551, 0.98803323, 0.99433484, 0.46817978],
+                             [- 5.42645210, -0.00365600, 0.00200490, 6.42279610, 0.98804557, 0.99433910, 0.46824751],
+                             [- 5.42889376, -0.00365292, 0.00200374, 6.42524084, 0.98805790, 0.99434334, 0.46831509],
+                             [- 5.43132958, -0.00364984, 0.00200257, 6.42767973, 0.98807020, 0.99434759, 0.46838254],
+                             [- 5.43375956, -0.00364677, 0.00200141, 6.43011279, 0.98808248, 0.99435183, 0.46844985],
+                             [- 5.43618372, -0.00364370, 0.00200024, 6.43254002, 0.98809474, 0.99435606, 0.46851701],
+                             [- 5.43860207, -0.00364063, 0.00199908, 6.43496143, 0.98810697, 0.99436029, 0.46858403],
+                             [- 5.44101460, -0.00363757, 0.00199792, 6.43737703, 0.98811918, 0.99436451, 0.46865091],
+                             [- 5.44342134, -0.00363451, 0.00199676, 6.43978683, 0.98813137, 0.99436872, 0.46871765],
+                             [- 5.44582228, -0.00363146, 0.00199561, 6.44219082, 0.98814353, 0.99437294, 0.46878424],
+                             [- 5.44821744, -0.00362841, 0.00199445, 6.44458903, 0.98815567, 0.99437714, 0.46885070],
+                             [- 5.45060682, -0.00362536, 0.00199329, 6.44698145, 0.98816779, 0.99438134, 0.46891701],
+                             [- 5.45299043, -0.00362232, 0.00199214, 6.44936811, 0.98817989, 0.99438554, 0.46898318],
+                             [- 5.45536828, -0.00361929, 0.00199098, 6.45174899, 0.98819196, 0.99438973, 0.46904921],
+                             [- 5.45774037, -0.00361625, 0.00198983, 6.45412412, 0.98820402, 0.99439392, 0.46911510],
+                             [- 5.46010672, -0.00361323, 0.00198868, 6.45649350, 0.98821605, 0.99439810, 0.46918084],
+                             [- 5.46246734, -0.00361020, 0.00198753, 6.45885714, 0.98822805, 0.99440227, 0.46924645],
+                             [- 5.46482222, -0.00360718, 0.00198638, 6.46121504, 0.98824004, 0.99440644, 0.46931191],
+                             [- 5.46717138, -0.00360417, 0.00198523, 6.46356722, 0.98825200, 0.99441061, 0.46937723],
+                             [- 5.46951483, -0.00360115, 0.00198408, 6.46591367, 0.98826395, 0.99441477, 0.46944241],
+                             [- 5.47185257, -0.00359814, 0.00198293, 6.46825442, 0.98827587, 0.99441892, 0.46950744],
+                             [- 5.47418461, -0.00359514, 0.00198178, 6.47058947, 0.98828776, 0.99442308, 0.46957234],
+                             [- 5.47651097, -0.00359214, 0.00198064, 6.47291883, 0.98829964, 0.99442722, 0.46963709],
+                             [- 5.47883164, -0.00358914, 0.00197949, 6.47524250, 0.98831150, 0.99443136, 0.46970170],
+                             [- 5.48114664, -0.00358615, 0.00197835, 6.47756049, 0.98832333, 0.99443550, 0.46976617],
+                             [- 5.48345598, -0.00358316, 0.00197721, 6.47987281, 0.98833514, 0.99443963, 0.46983050],
+                             [- 5.48575966, -0.00358018, 0.00197606, 6.48217948, 0.98834693, 0.99444376, 0.46989469],
+                             [- 5.48805769, -0.00357720, 0.00197492, 6.48448049, 0.98835870, 0.99444788, 0.46995873],
+                             [- 5.49035007, -0.00357422, 0.00197378, 6.48677585, 0.98837045, 0.99445200, 0.47002264],
+                             [- 5.49263683, -0.00357125, 0.00197264, 6.48906558, 0.98838217, 0.99445611, 0.47008640],
+                             [- 5.49491797, -0.00356828, 0.00197150, 6.49134968, 0.98839388, 0.99446022, 0.47015002],
+                             [- 5.49719348, -0.00356532, 0.00197036, 6.49362817, 0.98840556, 0.99446432, 0.47021350],
+                             [- 5.49946339, -0.00356236, 0.00196923, 6.49590104, 0.98841723, 0.99446842, 0.47027684],
+                             [- 5.50172771, -0.00355940, 0.00196809, 6.49816831, 0.98842887, 0.99447251, 0.47034004],
+                             [- 5.50398643, -0.00355645, 0.00196695, 6.50042998, 0.98844049, 0.99447660, 0.47040310],
+                             [- 5.50623957, -0.00355350, 0.00196582, 6.50268607, 0.98845209, 0.99448068, 0.47046602],
+                             [- 5.50848713, -0.00355055, 0.00196468, 6.50493658, 0.98846367, 0.99448476, 0.47052879],
+                             [- 5.51072913, -0.00354761, 0.00196355, 6.50718152, 0.98847523, 0.99448884, 0.47059143],
+                             [- 5.51296557, -0.00354467, 0.00196242, 6.50942090, 0.98848677, 0.99449291, 0.47065392],
+                             [- 5.51519647, -0.00354174, 0.00196129, 6.51165473, 0.98849828, 0.99449698, 0.47071627],
+                             [- 5.51742182, -0.00353881, 0.00196016, 6.51388301, 0.98850978, 0.99450104, 0.47077849],
+                             [- 5.51964164, -0.00353588, 0.00195902, 6.51610576, 0.98852126, 0.99450510, 0.47084056],
+                             [- 5.52185594, -0.00353296, 0.00195789, 6.51832298, 0.98853271, 0.99450915, 0.47090249],
+                             [- 5.52406473, -0.00353004, 0.00195677, 6.52053469, 0.98854415, 0.99451320, 0.47096428],
+                             [- 5.52626800, -0.00352712, 0.00195564, 6.52274088, 0.98855556, 0.99451724, 0.47102593],
+                             [- 5.52846578, -0.00352421, 0.00195451, 6.52494157, 0.98856696, 0.99452128, 0.47108744],
+                             [- 5.53065808, -0.00352130, 0.00195338, 6.52713677, 0.98857834, 0.99452532, 0.47114881],
+                             [- 5.53284489, -0.00351840, 0.00195226, 6.52932649, 0.98858969, 0.99452935, 0.47121004],
+                             [- 5.53502623, -0.00351550, 0.00195113, 6.53151073, 0.98860103, 0.99453337, 0.47127113],
+                             [- 5.53720210, -0.00351260, 0.00195001, 6.53368950, 0.98861234, 0.99453740, 0.47133208],
+                             [- 5.53937252, -0.00350971, 0.00194888, 6.53586282, 0.98862364, 0.99454141, 0.47139289],
+                             [- 5.54153750, -0.00350682, 0.00194776, 6.53803068, 0.98863491, 0.99454543, 0.47145356],
+                             [- 5.54369704, -0.00350393, 0.00194663, 6.54019311, 0.98864617, 0.99454944, 0.47151409],
+                             [- 5.54585115, -0.00350105, 0.00194551, 6.54235010, 0.98865740, 0.99455344, 0.47157449],
+                             [- 5.54799984, -0.00349817, 0.00194439, 6.54450167, 0.98866862, 0.99455744, 0.47163474],
+                             [- 5.55014311, -0.00349529, 0.00194327, 6.54664782, 0.98867982, 0.99456144, 0.47169485],
+                             [- 5.55228099, -0.00349242, 0.00194215, 6.54878857, 0.98869099, 0.99456543, 0.47175483],
+                             [- 5.55441347, -0.00348955, 0.00194103, 6.55092392, 0.98870215, 0.99456942, 0.47181466],
+                             [- 5.55654057, -0.00348669, 0.00193991, 6.55305388, 0.98871329, 0.99457340, 0.47187436],
+                             [- 5.55866229, -0.00348383, 0.00193879, 6.55517846, 0.98872441, 0.99457738, 0.47193391],
+                             [- 5.56077864, -0.00348097, 0.00193767, 6.55729767, 0.98873551, 0.99458136, 0.47199333],
+                             [- 5.56288964, -0.00347811, 0.00193655, 6.55941152, 0.98874659, 0.99458533, 0.47205261],
+                             [- 5.56499528, -0.00347526, 0.00193544, 6.56152002, 0.98875765, 0.99458930, 0.47211176],
+                             [- 5.56709558, -0.00347242, 0.00193432, 6.56362317, 0.98876869, 0.99459326, 0.47217076],
+                             [- 5.56919055, -0.00346957, 0.00193321, 6.56572098, 0.98877972, 0.99459722, 0.47222962],
+                             [- 5.57128020, -0.00346673, 0.00193209, 6.56781347, 0.98879072, 0.99460118, 0.47228835],
+                             [- 5.57336453, -0.00346390, 0.00193098, 6.56990064, 0.98880171, 0.99460513, 0.47234694],
+                             [- 5.57544356, -0.00346106, 0.00192986, 6.57198250, 0.98881267, 0.99460907, 0.47240539],
+                             [- 5.57751729, -0.00345823, 0.00192875, 6.57405906, 0.98882362, 0.99461302, 0.47246371],
+                             [- 5.57958573, -0.00345541, 0.00192764, 6.57613032, 0.98883455, 0.99461696, 0.47252188],
+                             [- 5.58164889, -0.00345259, 0.00192652, 6.57819631, 0.98884546, 0.99462089, 0.47257992],
+                             [- 5.58370679, -0.00344977, 0.00192541, 6.58025702, 0.98885635, 0.99462482, 0.47263782],
+                             [- 5.58575942, -0.00344695, 0.00192430, 6.58231247, 0.98886722, 0.99462875, 0.47269559],
+                             [- 5.58780679, -0.00344414, 0.00192319, 6.58436266, 0.98887808, 0.99463267, 0.47275321],
+                             [- 5.58984893, -0.00344133, 0.00192208, 6.58640760, 0.98888891, 0.99463659, 0.47281070],
+                             [- 5.59188583, -0.00343852, 0.00192097, 6.58844731, 0.98889973, 0.99464051, 0.47286806],
+                             [- 5.59391750, -0.00343572, 0.00191986, 6.59048178, 0.98891053, 0.99464442, 0.47292528],
+                             [- 5.59594396, -0.00343292, 0.00191875, 6.59251104, 0.98892131, 0.99464833, 0.47298236],
+                             [- 5.59796521, -0.00343013, 0.00191764, 6.59453508, 0.98893207, 0.99465223, 0.47303930],
+                             [- 5.59998126, -0.00342733, 0.00191653, 6.59655393, 0.98894281, 0.99465613, 0.47309611],
+                             [- 5.60199212, -0.00342455, 0.00191543, 6.59856758, 0.98895354, 0.99466003, 0.47315278],
+                             [- 5.60399781, -0.00342176, 0.00191432, 6.60057605, 0.98896425, 0.99466392, 0.47320932],
+                             [- 5.60599831, -0.00341898, 0.00191321, 6.60257934, 0.98897493, 0.99466781, 0.47326572],
+                             [- 5.60799366, -0.00341620, 0.00191211, 6.60457746, 0.98898561, 0.99467169, 0.47332198],
+                             [- 5.60998385, -0.00341342, 0.00191100, 6.60657043, 0.98899626, 0.99467557, 0.47337811],
+                             [- 5.61196890, -0.00341065, 0.00190990, 6.60855825, 0.98900689, 0.99467945, 0.47343411],
+                             [- 5.61394881, -0.00340788, 0.00190879, 6.61054093, 0.98901751, 0.99468332, 0.47348997],
+                             [- 5.61592360, -0.00340512, 0.00190769, 6.61251848, 0.98902811, 0.99468719, 0.47354569],
+                             [- 5.61789327, -0.00340235, 0.00190659, 6.61449091, 0.98903869, 0.99469106, 0.47360128],
+                             [- 5.61985783, -0.00339960, 0.00190548, 6.61645823, 0.98904926, 0.99469492, 0.47365674],
+                             [- 5.62181729, -0.00339684, 0.00190438, 6.61842045, 0.98905980, 0.99469878, 0.47371206],
+                             [- 5.62377166, -0.00339409, 0.00190328, 6.62037757, 0.98907033, 0.99470263, 0.47376724],
+                             [- 5.62572095, -0.00339134, 0.00190218, 6.62232961, 0.98908084, 0.99470648, 0.47382230],
+                             [- 5.62766517, -0.00338859, 0.00190108, 6.62427658, 0.98909133, 0.99471033, 0.47387721],
+                             [- 5.62960432, -0.00338585, 0.00189998, 6.62621847, 0.98910181, 0.99471417, 0.47393200],
+                             [- 5.63153842, -0.00338311, 0.00189888, 6.62815531, 0.98911227, 0.99471801, 0.47398665],
+                             [- 5.63346748, -0.00338037, 0.00189778, 6.63008711, 0.98912271, 0.99472185, 0.47404117],
+                             [- 5.63539150, -0.00337764, 0.00189668, 6.63201386, 0.98913313, 0.99472568, 0.47409555],
+                             [- 5.63731050, -0.00337491, 0.00189558, 6.63393558, 0.98914354, 0.99472951, 0.47414980],
+                             [- 5.63922447, -0.00337218, 0.00189448, 6.63585229, 0.98915393, 0.99473333, 0.47420392],
+                             [- 5.64113344, -0.00336946, 0.00189338, 6.63776398, 0.98916430, 0.99473716, 0.47425791],
+                             [- 5.64303741, -0.00336674, 0.00189229, 6.63967067, 0.98917466, 0.99474097, 0.47431176],
+                             [- 5.64493639, -0.00336402, 0.00189119, 6.64157237, 0.98918499, 0.99474479, 0.47436548],
+                             [- 5.64683039, -0.00336131, 0.00189009, 6.64346908, 0.98919531, 0.99474860, 0.47441907],
+                             [- 5.64871942, -0.00335860, 0.00188899, 6.64536082, 0.98920562, 0.99475241, 0.47447252],
+                             [- 5.65060348, -0.00335589, 0.00188790, 6.64724759, 0.98921590, 0.99475621, 0.47452585],
+                             [- 5.65248259, -0.00335319, 0.00188680, 6.64912941, 0.98922617, 0.99476001, 0.47457904],
+                             [- 5.65435676, -0.00335049, 0.00188571, 6.65100628, 0.98923642, 0.99476381, 0.47463210],
+                             [- 5.65622600, -0.00334779, 0.00188461, 6.65287821, 0.98924666, 0.99476760, 0.47468503],
+                             [- 5.65809030, -0.00334509, 0.00188352, 6.65474521, 0.98925688, 0.99477139, 0.47473783],
+                             [- 5.65994970, -0.00334240, 0.00188243, 6.65660729, 0.98926708, 0.99477517, 0.47479050],
+                             [- 5.66180418, -0.00333971, 0.00188133, 6.65846447, 0.98927727, 0.99477896, 0.47484303],
+                             [- 5.66365377, -0.00333703, 0.00188024, 6.66031674, 0.98928744, 0.99478273, 0.47489544],
+                             [- 5.66549846, -0.00333434, 0.00187915, 6.66216412, 0.98929759, 0.99478651, 0.47494772],
+                             [- 5.66733828, -0.00333166, 0.00187805, 6.66400662, 0.98930772, 0.99479028, 0.47499986],
+                             [- 5.66917323, -0.00332899, 0.00187696, 6.66584424, 0.98931784, 0.99479405, 0.47505187],
+                             [- 5.67100331, -0.00332631, 0.00187587, 6.66767700, 0.98932794, 0.99479781, 0.47510376],
+                             [- 5.67282855, -0.00332364, 0.00187478, 6.66950490, 0.98933803, 0.99480158, 0.47515552],
+                             [- 5.67464894, -0.00332098, 0.00187369, 6.67132796, 0.98934810, 0.99480533, 0.47520714],
+                             [- 5.67646450, -0.00331831, 0.00187260, 6.67314618, 0.98935815, 0.99480909, 0.47525864],
+                             [- 5.67827523, -0.00331565, 0.00187151, 6.67495958, 0.98936819, 0.99481284, 0.47531001],
+                             [- 5.68008115, -0.00331299, 0.00187042, 6.67676816, 0.98937821, 0.99481659, 0.47536125],
+                             [- 5.68188226, -0.00331034, 0.00186933, 6.67857192, 0.98938821, 0.99482033, 0.47541236],
+                             [- 5.68367858, -0.00330769, 0.00186824, 6.68037089, 0.98939820, 0.99482407, 0.47546334],
+                             [- 5.68547011, -0.00330504, 0.00186715, 6.68216507, 0.98940817, 0.99482781, 0.47551419],
+                             [- 5.68725686, -0.00330239, 0.00186606, 6.68395447, 0.98941813, 0.99483154, 0.47556492],
+                             [- 5.68903884, -0.00329975, 0.00186498, 6.68573909, 0.98942807, 0.99483527, 0.47561551],
+                             [- 5.69081606, -0.00329711, 0.00186389, 6.68751895, 0.98943799, 0.99483900, 0.47566598],
+                             [- 5.69258853, -0.00329447, 0.00186280, 6.68929406, 0.98944790, 0.99484272, 0.47571632],
+                             [- 5.69435627, -0.00329184, 0.00186172, 6.69106443, 0.98945779, 0.99484644, 0.47576654],
+                             [- 5.69611926, -0.00328921, 0.00186063, 6.69283005, 0.98946767, 0.99485016, 0.47581663],
+                             [- 5.69787754, -0.00328658, 0.00185954, 6.69459096, 0.98947753, 0.99485388, 0.47586659],
+                             [- 5.69963110, -0.00328396, 0.00185846, 6.69634715, 0.98948737, 0.99485759, 0.47591642],
+                             [- 5.70137996, -0.00328133, 0.00185737, 6.69809863, 0.98949720, 0.99486129, 0.47596613],
+                             [- 5.70312413, -0.00327872, 0.00185629, 6.69984541, 0.98950701, 0.99486500, 0.47601571],
+                             [- 5.70486360, -0.00327610, 0.00185520, 6.70158750, 0.98951681, 0.99486870, 0.47606516],
+                             [- 5.70659840, -0.00327349, 0.00185412, 6.70332492, 0.98952659, 0.99487239, 0.47611449],
+                             [- 5.70832854, -0.00327088, 0.00185304, 6.70505766, 0.98953636, 0.99487609, 0.47616370],
+                             [- 5.71005402, -0.00326827, 0.00185195, 6.70678575, 0.98954611, 0.99487978, 0.47621277],
+                             [- 5.71177484, -0.00326567, 0.00185087, 6.70850918, 0.98955584, 0.99488347, 0.47626172],
+                             [- 5.71349103, -0.00326306, 0.00184979, 6.71022797, 0.98956556, 0.99488715, 0.47631055],
+                             [- 5.71520259, -0.00326047, 0.00184870, 6.71194212, 0.98957526, 0.99489083, 0.47635925],
+                             [- 5.71690953, -0.00325787, 0.00184762, 6.71365166, 0.98958495, 0.99489451, 0.47640783],
+                             [- 5.71861185, -0.00325528, 0.00184654, 6.71535658, 0.98959462, 0.99489818, 0.47645628],
+                             [- 5.72030958, -0.00325269, 0.00184546, 6.71705689, 0.98960428, 0.99490185, 0.47650461],
+                             [- 5.72200271, -0.00325010, 0.00184438, 6.71875261, 0.98961392, 0.99490552, 0.47655282],
+                             [- 5.72369126, -0.00324752, 0.00184330, 6.72044374, 0.98962355, 0.99490918, 0.47660090],
+                             [- 5.72537523, -0.00324494, 0.00184222, 6.72213029, 0.98963316, 0.99491284, 0.47664886],
+                             [- 5.72705463, -0.00324236, 0.00184114, 6.72381227, 0.98964276, 0.99491650, 0.47669669],
+                             [- 5.72872948, -0.00323979, 0.00184006, 6.72548970, 0.98965234, 0.99492016, 0.47674440],
+                             [- 5.73039979, -0.00323721, 0.00183898, 6.72716257, 0.98966190, 0.99492381, 0.47679198],
+                             [- 5.73206555, -0.00323464, 0.00183790, 6.72883091, 0.98967145, 0.99492746, 0.47683945],
+                             [- 5.73372679, -0.00323208, 0.00183682, 6.73049471, 0.98968099, 0.99493110, 0.47688679],
+                             [- 5.73538351, -0.00322952, 0.00183574, 6.73215399, 0.98969051, 0.99493474, 0.47693401],
+                             [- 5.73703572, -0.00322695, 0.00183466, 6.73380876, 0.98970002, 0.99493838, 0.47698111],
+                             [- 5.73868343, -0.00322440, 0.00183359, 6.73545903, 0.98970951, 0.99494202, 0.47702808],
+                             [- 5.74032664, -0.00322184, 0.00183251, 6.73710480, 0.98971898, 0.99494565, 0.47707494],
+                             [- 5.74196538, -0.00321929, 0.00183143, 6.73874609, 0.98972844, 0.99494928, 0.47712167],
+                             [- 5.74359964, -0.00321674, 0.00183036, 6.74038290, 0.98973789, 0.99495290, 0.47716828],
+                             [- 5.74522943, -0.00321419, 0.00182928, 6.74201524, 0.98974732, 0.99495653, 0.47721477],
+                             [- 5.74685478, -0.00321165, 0.00182820, 6.74364312, 0.98975674, 0.99496014, 0.47726113],
+                             [- 5.74847567, -0.00320911, 0.00182713, 6.74526656, 0.98976614, 0.99496376, 0.47730738],
+                             [- 5.75009213, -0.00320657, 0.00182605, 6.74688556, 0.98977552, 0.99496737, 0.47735351],
+                             [- 5.75170417, -0.00320404, 0.00182498, 6.74850013, 0.98978490, 0.99497098, 0.47739952],
+                             [- 5.75331179, -0.00320151, 0.00182390, 6.75011028, 0.98979425, 0.99497459, 0.47744540],
+                             [- 5.75491499, -0.00319898, 0.00182283, 6.75171602, 0.98980360, 0.99497819, 0.47749117],
+                             [- 5.75651380, -0.00319645, 0.00182176, 6.75331735, 0.98981293, 0.99498179, 0.47753682],
+                             [- 5.75810822, -0.00319393, 0.00182068, 6.75491429, 0.98982224, 0.99498539, 0.47758234],
+                             [- 5.75969826, -0.00319141, 0.00181961, 6.75650685, 0.98983154, 0.99498899, 0.47762775],
+                             [- 5.76128392, -0.00318889, 0.00181854, 6.75809504, 0.98984082, 0.99499258, 0.47767304],
+                             [- 5.76286523, -0.00318637, 0.00181746, 6.75967886, 0.98985009, 0.99499616, 0.47771821],
+                             [- 5.76444218, -0.00318386, 0.00181639, 6.76125832, 0.98985935, 0.99499975, 0.47776327],
+                             [- 5.76601479, -0.00318135, 0.00181532, 6.76283343, 0.98986859, 0.99500333, 0.47780820],
+                             [- 5.76758306, -0.00317884, 0.00181425, 6.76440421, 0.98987782, 0.99500691, 0.47785302],
+                             [- 5.76914700, -0.00317634, 0.00181318, 6.76597066, 0.98988703, 0.99501049, 0.47789772],
+                             [- 5.77070663, -0.00317384, 0.00181210, 6.76753279, 0.98989623, 0.99501406, 0.47794230],
+                             [- 5.77226195, -0.00317134, 0.00181103, 6.76909061, 0.98990542, 0.99501763, 0.47798676],
+                             [- 5.77381298, -0.00316884, 0.00180996, 6.77064413, 0.98991459, 0.99502119, 0.47803110],
+                             [- 5.77535971, -0.00316635, 0.00180889, 6.77219336, 0.98992374, 0.99502476, 0.47807533],
+                             [- 5.77690216, -0.00316386, 0.00180782, 6.77373830, 0.98993289, 0.99502832, 0.47811945],
+                             [- 5.77844035, -0.00316137, 0.00180675, 6.77527898, 0.98994201, 0.99503187, 0.47816344],
+                             [- 5.77997427, -0.00315889, 0.00180569, 6.77681538, 0.98995113, 0.99503543, 0.47820732],
+                             [- 5.78150394, -0.00315640, 0.00180462, 6.77834753, 0.98996023, 0.99503898, 0.47825108],
+                             [- 5.78302936, -0.00315393, 0.00180355, 6.77987544, 0.98996931, 0.99504253, 0.47829473],
+                             [- 5.78455056, -0.00315145, 0.00180248, 6.78139911, 0.98997839, 0.99504607, 0.47833826],
+                             [- 5.78606752, -0.00314897, 0.00180141, 6.78291855, 0.98998744, 0.99504961, 0.47838168],
+                             [- 5.78758027, -0.00314650, 0.00180035, 6.78443377, 0.98999649, 0.99505315, 0.47842498],
+                             [- 5.78908882, -0.00314403, 0.00179928, 6.78594478, 0.99000552, 0.99505669, 0.47846816],
+                             [- 5.79059316, -0.00314157, 0.00179821, 6.78745159, 0.99001453, 0.99506022, 0.47851123],
+                             [- 5.79209332, -0.00313911, 0.00179715, 6.78895421, 0.99002354, 0.99506375, 0.47855419],
+                             [- 5.79358930, -0.00313665, 0.00179608, 6.79045265, 0.99003253, 0.99506727, 0.47859703],
+                             [- 5.79508110, -0.00313419, 0.00179501, 6.79194692, 0.99004150, 0.99507080, 0.47863976],
+                             [- 5.79656875, -0.00313173, 0.00179395, 6.79343702, 0.99005046, 0.99507432, 0.47868238],
+                             [- 5.79805224, -0.00312928, 0.00179288, 6.79492296, 0.99005941, 0.99507784, 0.47872487],
+                             [- 5.79953159, -0.00312683, 0.00179182, 6.79640476, 0.99006834, 0.99508135, 0.47876726],
+                             [- 5.80100681, -0.00312438, 0.00179075, 6.79788243, 0.99007726, 0.99508486, 0.47880954],
+                             [- 5.80247790, -0.00312194, 0.00178969, 6.79935596, 0.99008617, 0.99508837, 0.47885170],
+                             [- 5.80394487, -0.00311950, 0.00178863, 6.80082538, 0.99009506, 0.99509187, 0.47889374],
+                             [- 5.80540774, -0.00311706, 0.00178756, 6.80229068, 0.99010394, 0.99509538, 0.47893568],
+                             [- 5.80686651, -0.00311462, 0.00178650, 6.80375189, 0.99011281, 0.99509888, 0.47897750],
+                             [- 5.80832119, -0.00311219, 0.00178544, 6.80520900, 0.99012166, 0.99510237, 0.47901921],
+                             [- 5.80977179, -0.00310976, 0.00178438, 6.80666204, 0.99013050, 0.99510587, 0.47906081],
+                             [- 5.81121832, -0.00310733, 0.00178331, 6.80811099, 0.99013933, 0.99510936, 0.47910230],
+                             [- 5.81266079, -0.00310490, 0.00178225, 6.80955589, 0.99014814, 0.99511284, 0.47914367],
+                             [- 5.81409921, -0.00310248, 0.00178119, 6.81099673, 0.99015694, 0.99511633, 0.47918494],
+                             [- 5.81553358, -0.00310006, 0.00178013, 6.81243352, 0.99016573, 0.99511981, 0.47922609],
+                             [- 5.81696392, -0.00309764, 0.00177907, 6.81386627, 0.99017450, 0.99512329, 0.47926714],
+                             [- 5.81839023, -0.00309523, 0.00177801, 6.81529500, 0.99018326, 0.99512676, 0.47930807],
+                             [- 5.81981252, -0.00309282, 0.00177695, 6.81671970, 0.99019200, 0.99513024, 0.47934889],
+                             [- 5.82123081, -0.00309041, 0.00177589, 6.81814040, 0.99020074, 0.99513370, 0.47938960],
+                             [- 5.82264509, -0.00308800, 0.00177483, 6.81955709, 0.99020946, 0.99513717, 0.47943020],
+                             [- 5.82405539, -0.00308560, 0.00177377, 6.82096980, 0.99021816, 0.99514063, 0.47947070],
+                             [- 5.82546171, -0.00308319, 0.00177271, 6.82237851, 0.99022686, 0.99514410, 0.47951108],
+                             [- 5.82686405, -0.00308079, 0.00177165, 6.82378326, 0.99023554, 0.99514755, 0.47955135],
+                             [- 5.82826243, -0.00307840, 0.00177059, 6.82518403, 0.99024421, 0.99515101, 0.47959152],
+                             [- 5.82965686, -0.00307600, 0.00176954, 6.82658086, 0.99025286, 0.99515446, 0.47963157],
+                             [- 5.83104734, -0.00307361, 0.00176848, 6.82797373, 0.99026150, 0.99515791, 0.47967152],
+                             [- 5.83243389, -0.00307122, 0.00176742, 6.82936266, 0.99027013, 0.99516135, 0.47971136],
+                             [- 5.83381650, -0.00306884, 0.00176637, 6.83074767, 0.99027875, 0.99516480, 0.47975109],
+                             [- 5.83519520, -0.00306645, 0.00176531, 6.83212875, 0.99028735, 0.99516824, 0.47979072],
+                             [- 5.83656999, -0.00306407, 0.00176425, 6.83350592, 0.99029594, 0.99517167, 0.47983023],
+                             [- 5.83794088, -0.00306169, 0.00176320, 6.83487918, 0.99030451, 0.99517511, 0.47986964],
+                             [- 5.83930788, -0.00305932, 0.00176214, 6.83624856, 0.99031308, 0.99517854, 0.47990894],
+                             [- 5.84067099, -0.00305695, 0.00176109, 6.83761404, 0.99032163, 0.99518197, 0.47994814],
+                             [- 5.84203023, -0.00305458, 0.00176003, 6.83897565, 0.99033017, 0.99518539, 0.47998722],
+                             [- 5.84338560, -0.00305221, 0.00175898, 6.84033340, 0.99033869, 0.99518881, 0.48002620],
+                             [- 5.84473712, -0.00304984, 0.00175793, 6.84168728, 0.99034721, 0.99519223, 0.48006508],
+                             [- 5.84608479, -0.00304748, 0.00175687, 6.84303731, 0.99035571, 0.99519565, 0.48010385],
+                             [- 5.84742862, -0.00304512, 0.00175582, 6.84438350, 0.99036419, 0.99519906, 0.48014251],
+                             [- 5.84876862, -0.00304276, 0.00175477, 6.84572586, 0.99037267, 0.99520247, 0.48018107],
+                             [- 5.85010480, -0.00304041, 0.00175371, 6.84706439, 0.99038113, 0.99520588, 0.48021952],
+                             [- 5.85143717, -0.00303805, 0.00175266, 6.84839911, 0.99038958, 0.99520929, 0.48025787],
+                             [- 5.85276573, -0.00303570, 0.00175161, 6.84973003, 0.99039802, 0.99521269, 0.48029611],
+                             [- 5.85409050, -0.00303336, 0.00175056, 6.85105714, 0.99040644, 0.99521609, 0.48033425],
+                             [- 5.85541148, -0.00303101, 0.00174951, 6.85238047, 0.99041485, 0.99521948, 0.48037228],
+                             [- 5.85672868, -0.00302867, 0.00174846, 6.85370002, 0.99042325, 0.99522288, 0.48041021],
+                             [- 5.85804212, -0.00302633, 0.00174741, 6.85501579, 0.99043164, 0.99522627, 0.48044803],
+                             [- 5.85935180, -0.00302399, 0.00174636, 6.85632781, 0.99044002, 0.99522965, 0.48048575],
+                             [- 5.86065772, -0.00302166, 0.00174531, 6.85763607, 0.99044838, 0.99523304, 0.48052337],
+                             [- 5.86195991, -0.00301932, 0.00174426, 6.85894058, 0.99045673, 0.99523642, 0.48056088],
+                             [- 5.86325835, -0.00301699, 0.00174321, 6.86024136, 0.99046507, 0.99523980, 0.48059829],
+                             [- 5.86455308, -0.00301467, 0.00174216, 6.86153841, 0.99047339, 0.99524317, 0.48063560],
+                             [- 5.86584409, -0.00301234, 0.00174111, 6.86283174, 0.99048171, 0.99524655, 0.48067281],
+                             [- 5.86713139, -0.00301002, 0.00174006, 6.86412137, 0.99049001, 0.99524992, 0.48070991],
+                             [- 5.86841499, -0.00300770, 0.00173902, 6.86540729, 0.99049829, 0.99525328, 0.48074691],
+                             [- 5.86969490, -0.00300538, 0.00173797, 6.86668952, 0.99050657, 0.99525665, 0.48078381],
+                             [- 5.87097113, -0.00300307, 0.00173692, 6.86796806, 0.99051483, 0.99526001, 0.48082060],
+                             [- 5.87224368, -0.00300076, 0.00173588, 6.86924293, 0.99052309, 0.99526337, 0.48085730],
+                             [- 5.87351257, -0.00299845, 0.00173483, 6.87051413, 0.99053133, 0.99526672, 0.48089389],
+                             [- 5.87477781, -0.00299614, 0.00173378, 6.87178167, 0.99053955, 0.99527008, 0.48093038],
+                             [- 5.87603940, -0.00299383, 0.00173274, 6.87304557, 0.99054777, 0.99527343, 0.48096678],
+                             [- 5.87729735, -0.00299153, 0.00173169, 6.87430582, 0.99055597, 0.99527677, 0.48100307],
+                             [- 5.87855167, -0.00298923, 0.00173065, 6.87556244, 0.99056416, 0.99528012, 0.48103926],
+                             [- 5.87980237, -0.00298694, 0.00172961, 6.87681543, 0.99057234, 0.99528346, 0.48107535],
+                             [- 5.88104946, -0.00298464, 0.00172856, 6.87806482, 0.99058051, 0.99528680, 0.48111134],
+                             [- 5.88229294, -0.00298235, 0.00172752, 6.87931059, 0.99058867, 0.99529013, 0.48114723],
+                             [- 5.88353283, -0.00298006, 0.00172648, 6.88055277, 0.99059681, 0.99529347, 0.48118302],
+                             [- 5.88476913, -0.00297777, 0.00172543, 6.88179135, 0.99060494, 0.99529680, 0.48121871],
+                             [- 5.88600185, -0.00297549, 0.00172439, 6.88302636, 0.99061306, 0.99530012, 0.48125430],
+                             [- 5.88723100, -0.00297320, 0.00172335, 6.88425779, 0.99062117, 0.99530345, 0.48128980],
+                             [- 5.88845659, -0.00297093, 0.00172231, 6.88548566, 0.99062927, 0.99530677, 0.48132519],
+                             [- 5.88967862, -0.00296865, 0.00172127, 6.88670998, 0.99063735, 0.99531009, 0.48136049],
+                             [- 5.89089712, -0.00296637, 0.00172022, 6.88793074, 0.99064542, 0.99531340, 0.48139569],
+                             [- 5.89211207, -0.00296410, 0.00171918, 6.88914797, 0.99065348, 0.99531671, 0.48143079],
+                             [- 5.89332350, -0.00296183, 0.00171814, 6.89036167, 0.99066153, 0.99532002, 0.48146579],
+                             [- 5.89453141, -0.00295956, 0.00171710, 6.89157185, 0.99066957, 0.99532333, 0.48150069],
+                             [- 5.89573581, -0.00295730, 0.00171607, 6.89277851, 0.99067760, 0.99532664, 0.48153550],
+                             [- 5.89693670, -0.00295504, 0.00171503, 6.89398167, 0.99068561, 0.99532994, 0.48157021],
+                             [- 5.89813411, -0.00295278, 0.00171399, 6.89518133, 0.99069361, 0.99533324, 0.48160482],
+                             [- 5.89932802, -0.00295052, 0.00171295, 6.89637751, 0.99070160, 0.99533653, 0.48163934],
+                             [- 5.90051846, -0.00294826, 0.00171191, 6.89757020, 0.99070958, 0.99533983, 0.48167376],
+                             [- 5.90170544, -0.00294601, 0.00171088, 6.89875943, 0.99071755, 0.99534312, 0.48170809],
+                             [- 5.90288895, -0.00294376, 0.00170984, 6.89994519, 0.99072550, 0.99534640, 0.48174231],
+                             [- 5.90406901, -0.00294151, 0.00170880, 6.90112750, 0.99073345, 0.99534969, 0.48177645],
+                             [- 5.90524562, -0.00293927, 0.00170777, 6.90230636, 0.99074138, 0.99535297, 0.48181048],
+                             [- 5.90641881, -0.00293702, 0.00170673, 6.90348178, 0.99074930, 0.99535625, 0.48184443],
+                             [- 5.90758856, -0.00293478, 0.00170569, 6.90465378, 0.99075721, 0.99535952, 0.48187827],
+                             [- 5.90875490, -0.00293254, 0.00170466, 6.90582235, 0.99076511, 0.99536280, 0.48191202],
+                             [- 5.90991782, -0.00293031, 0.00170363, 6.90698751, 0.99077300, 0.99536607, 0.48194568],
+                             [- 5.91107735, -0.00292807, 0.00170259, 6.90814927, 0.99078087, 0.99536933, 0.48197924],
+                             [- 5.91223348, -0.00292584, 0.00170156, 6.90930763, 0.99078874, 0.99537260, 0.48201271],
+                             [- 5.91338622, -0.00292362, 0.00170052, 6.91046261, 0.99079659, 0.99537586, 0.48204608],
+                             [- 5.91453559, -0.00292139, 0.00169949, 6.91161420, 0.99080443, 0.99537912, 0.48207936],
+                             [- 5.91568159, -0.00291917, 0.00169846, 6.91276243, 0.99081226, 0.99538238, 0.48211255],
+                             [- 5.91682423, -0.00291694, 0.00169743, 6.91390729, 0.99082008, 0.99538563, 0.48214564],
+                             [- 5.91796352, -0.00291472, 0.00169639, 6.91504879, 0.99082789, 0.99538888, 0.48217864],
+                             [- 5.91909946, -0.00291251, 0.00169536, 6.91618695, 0.99083569, 0.99539213, 0.48221155],
+                             [- 5.92023207, -0.00291029, 0.00169433, 6.91732177, 0.99084347, 0.99539537, 0.48224436],
+                             [- 5.92136135, -0.00290808, 0.00169330, 6.91845327, 0.99085124, 0.99539862, 0.48227709],
+                             [- 5.92248731, -0.00290587, 0.00169227, 6.91958144, 0.99085901, 0.99540186, 0.48230971],
+                             [- 5.92360996, -0.00290367, 0.00169124, 6.92070629, 0.99086676, 0.99540509, 0.48234225],
+                             [- 5.92472930, -0.00290146, 0.00169021, 6.92182784, 0.99087450, 0.99540833, 0.48237470],
+                             [- 5.92584536, -0.00289926, 0.00168918, 6.92294610, 0.99088223, 0.99541156, 0.48240705],
+                             [- 5.92695812, -0.00289706, 0.00168816, 6.92406106, 0.99088995, 0.99541479, 0.48243931],
+                             [- 5.92806761, -0.00289486, 0.00168713, 6.92517274, 0.99089766, 0.99541801, 0.48247148],
+                             [- 5.92917382, -0.00289267, 0.00168610, 6.92628115, 0.99090535, 0.99542123, 0.48250356],
+                             [- 5.93027677, -0.00289047, 0.00168507, 6.92738630, 0.99091304, 0.99542445, 0.48253555],
+                             [- 5.93137647, -0.00288828, 0.00168405, 6.92848819, 0.99092071, 0.99542767, 0.48256745],
+                             [- 5.93247293, -0.00288610, 0.00168302, 6.92958683, 0.99092837, 0.99543089, 0.48259926],
+                             [- 5.93356614, -0.00288391, 0.00168199, 6.93068223, 0.99093603, 0.99543410, 0.48263098],
+                             [- 5.93465613, -0.00288173, 0.00168097, 6.93177440, 0.99094367, 0.99543731, 0.48266260],
+                             [- 5.93574289, -0.00287955, 0.00167994, 6.93286334, 0.99095130, 0.99544051, 0.48269414],
+                             [- 5.93682644, -0.00287737, 0.00167892, 6.93394907, 0.99095892, 0.99544371, 0.48272559],
+                             [- 5.93790678, -0.00287519, 0.00167789, 6.93503159, 0.99096653, 0.99544692, 0.48275695],
+                             [- 5.93898392, -0.00287302, 0.00167687, 6.93611091, 0.99097412, 0.99545011, 0.48278822],
+                             [- 5.94005788, -0.00287085, 0.00167585, 6.93718703, 0.99098171, 0.99545331, 0.48281940],
+                             [- 5.94112865, -0.00286868, 0.00167482, 6.93825997, 0.99098929, 0.99545650, 0.48285049],
+                             [- 5.94219625, -0.00286651, 0.00167380, 6.93932974, 0.99099685, 0.99545969, 0.48288150],
+                             [- 5.94326068, -0.00286435, 0.00167278, 6.94039634, 0.99100441, 0.99546288, 0.48291241],
+                             [- 5.94432196, -0.00286218, 0.00167176, 6.94145977, 0.99101195, 0.99546606, 0.48294324],
+                             [- 5.94538008, -0.00286002, 0.00167074, 6.94252006, 0.99101949, 0.99546924, 0.48297398],
+                             [- 5.94643506, -0.00285787, 0.00166971, 6.94357720, 0.99102701, 0.99547242, 0.48300463],
+                             [- 5.94748691, -0.00285571, 0.00166869, 6.94463120, 0.99103452, 0.99547559, 0.48303520],
+                             [- 5.94853563, -0.00285356, 0.00166767, 6.94568207, 0.99104202, 0.99547877, 0.48306568],
+                             [- 5.94958124, -0.00285141, 0.00166666, 6.94672983, 0.99104951, 0.99548194, 0.48309607],
+                             [- 5.95062373, -0.00284926, 0.00166564, 6.94777447, 0.99105699, 0.99548510, 0.48312637],
+                             [- 5.95166312, -0.00284711, 0.00166462, 6.94881600, 0.99106446, 0.99548827, 0.48315659],
+                             [- 5.95269941, -0.00284497, 0.00166360, 6.94985444, 0.99107192, 0.99549143, 0.48318672],
+                             [- 5.95373262, -0.00284283, 0.00166258, 6.95088979, 0.99107937, 0.99549459, 0.48321676],
+                             [- 5.95476275, -0.00284069, 0.00166156, 6.95192206, 0.99108681, 0.99549775, 0.48324672],
+                             [- 5.95578980, -0.00283855, 0.00166055, 6.95295125, 0.99109423, 0.99550090, 0.48327660],
+                             [- 5.95681380, -0.00283642, 0.00165953, 6.95397738, 0.99110165, 0.99550405, 0.48330638],
+                             [- 5.95783474, -0.00283429, 0.00165852, 6.95500045, 0.99110906, 0.99550720, 0.48333609],
+                             [- 5.95885262, -0.00283216, 0.00165750, 6.95602047, 0.99111645, 0.99551034, 0.48336571],
+                             [- 5.95986747, -0.00283003, 0.00165648, 6.95703744, 0.99112384, 0.99551348, 0.48339524],
+                             [- 5.96087929, -0.00282791, 0.00165547, 6.95805138, 0.99113121, 0.99551662, 0.48342469],
+                             [- 5.96188808, -0.00282578, 0.00165446, 6.95906230, 0.99113858, 0.99551976, 0.48345405],
+                             [- 5.96289385, -0.00282366, 0.00165344, 6.96007019, 0.99114593, 0.99552290, 0.48348333],
+                             [- 5.96389662, -0.00282154, 0.00165243, 6.96107507, 0.99115327, 0.99552603, 0.48351252],
+                             [- 5.96489638, -0.00281943, 0.00165142, 6.96207695, 0.99116061, 0.99552916, 0.48354163],
+                             [- 5.96589315, -0.00281732, 0.00165040, 6.96307584, 0.99116793, 0.99553228, 0.48357066],
+                             [- 5.96688693, -0.00281520, 0.00164939, 6.96407173, 0.99117524, 0.99553540, 0.48359961],
+                             [- 5.96787774, -0.00281310, 0.00164838, 6.96506464, 0.99118255, 0.99553852, 0.48362846],
+                             [- 5.96886557, -0.00281099, 0.00164737, 6.96605458, 0.99118984, 0.99554164, 0.48365724],
+                             [- 5.96985044, -0.00280888, 0.00164636, 6.96704156, 0.99119712, 0.99554476, 0.48368594],
+                             [- 5.97083235, -0.00280678, 0.00164535, 6.96802557, 0.99120439, 0.99554787, 0.48371455],
+                             [- 5.97181132, -0.00280468, 0.00164434, 6.96900664, 0.99121165, 0.99555098, 0.48374308],
+                             [- 5.97278734, -0.00280258, 0.00164333, 6.96998476, 0.99121891, 0.99555409, 0.48377153],
+                             [- 5.97376044, -0.00280049, 0.00164232, 6.97095995, 0.99122615, 0.99555719, 0.48379989],
+                             [- 5.97473060, -0.00279840, 0.00164131, 6.97193221, 0.99123338, 0.99556029, 0.48382818],
+                             [- 5.97569785, -0.00279631, 0.00164031, 6.97290155, 0.99124060, 0.99556339, 0.48385638],
+                             [- 5.97666219, -0.00279422, 0.00163930, 6.97386797, 0.99124781, 0.99556648, 0.48388450],
+                             [- 5.97762362, -0.00279213, 0.00163829, 6.97483149, 0.99125501, 0.99556958, 0.48391254],
+                             [- 5.97858216, -0.00279005, 0.00163729, 6.97579212, 0.99126220, 0.99557267, 0.48394050],
+                             [- 5.97953782, -0.00278796, 0.00163628, 6.97674985, 0.99126938, 0.99557576, 0.48396837],
+                             [- 5.98049059, -0.00278589, 0.00163527, 6.97770470, 0.99127655, 0.99557884, 0.48399617],
+                             [- 5.98144049, -0.00278381, 0.00163427, 6.97865668, 0.99128371, 0.99558192, 0.48402389],
+                             [- 5.98238752, -0.00278173, 0.00163326, 6.97960579, 0.99129087, 0.99558500, 0.48405152],
+                             [- 5.98333170, -0.00277966, 0.00163226, 6.98055204, 0.99129801, 0.99558808, 0.48407908],
+                             [- 5.98427302, -0.00277759, 0.00163126, 6.98149543, 0.99130514, 0.99559115, 0.48410655],
+                             [- 5.98521150, -0.00277552, 0.00163025, 6.98243598, 0.99131226, 0.99559422, 0.48413395],
+                             [- 5.98614715, -0.00277346, 0.00162925, 6.98337369, 0.99131937, 0.99559729, 0.48416127],
+                             [- 5.98707997, -0.00277139, 0.00162825, 6.98430858, 0.99132647, 0.99560036, 0.48418851],
+                             [- 5.98800996, -0.00276933, 0.00162725, 6.98524063, 0.99133356, 0.99560342, 0.48421567],
+                             [- 5.98893715, -0.00276727, 0.00162625, 6.98616988, 0.99134064, 0.99560648, 0.48424275],
+                             [- 5.98986153, -0.00276521, 0.00162525, 6.98709631, 0.99134771, 0.99560954, 0.48426975],
+                             [- 5.99078310, -0.00276316, 0.00162425, 6.98801995, 0.99135477, 0.99561259, 0.48429667],
+                             [- 5.99170189, -0.00276111, 0.00162325, 6.98894079, 0.99136183, 0.99561565, 0.48432352],
+                             [- 5.99261789, -0.00275906, 0.00162225, 6.98985884, 0.99136887, 0.99561870, 0.48435028],
+                             [- 5.99353112, -0.00275701, 0.00162125, 6.99077411, 0.99137590, 0.99562174, 0.48437697],
+                             [- 5.99444158, -0.00275496, 0.00162025, 6.99168662, 0.99138292, 0.99562479, 0.48440358],
+                             [- 5.99534927, -0.00275292, 0.00161925, 6.99259635, 0.99138994, 0.99562783, 0.48443012],
+                             [- 5.99625421, -0.00275088, 0.00161826, 6.99350334, 0.99139694, 0.99563087, 0.48445657],
+                             [- 5.99715640, -0.00274884, 0.00161726, 6.99440757, 0.99140393, 0.99563390, 0.48448295],
+                             [- 5.99805585, -0.00274680, 0.00161626, 6.99530906, 0.99141092, 0.99563694, 0.48450926],
+                             [- 5.99895257, -0.00274476, 0.00161527, 6.99620781, 0.99141789, 0.99563997, 0.48453548],
+                             [- 5.99984656, -0.00274273, 0.00161427, 6.99710383, 0.99142485, 0.99564299, 0.48456163],
+                             [- 6.00073784, -0.00274070, 0.00161328, 6.99799714, 0.99143181, 0.99564602, 0.48458771],
+                             [- 6.00162640, -0.00273867, 0.00161228, 6.99888773, 0.99143875, 0.99564904, 0.48461370],
+                             [- 6.00251225, -0.00273665, 0.00161129, 6.99977561, 0.99144569, 0.99565206, 0.48463962],
+                             [- 6.00339541, -0.00273462, 0.00161030, 7.00066079, 0.99145261, 0.99565508, 0.48466547],
+                             [- 6.00427588, -0.00273260, 0.00160931, 7.00154328, 0.99145953, 0.99565809, 0.48469124],
+                             [- 6.00515367, -0.00273058, 0.00160831, 7.00242309, 0.99146644, 0.99566111, 0.48471693],
+                             [- 6.00602878, -0.00272856, 0.00160732, 7.00330021, 0.99147334, 0.99566411, 0.48474255],
+                             [- 6.00690122, -0.00272655, 0.00160633, 7.00417467, 0.99148022, 0.99566712, 0.48476810],
+                             [- 6.00777100, -0.00272454, 0.00160534, 7.00504646, 0.99148710, 0.99567012, 0.48479357],
+                             [- 6.00863812, -0.00272252, 0.00160435, 7.00591560, 0.99149397, 0.99567313, 0.48481896],
+                             [- 6.00950260, -0.00272052, 0.00160336, 7.00678208, 0.99150083, 0.99567612, 0.48484429],
+                             [- 6.01036444, -0.00271851, 0.00160237, 7.00764593, 0.99150768, 0.99567912, 0.48486953],
+                             [- 6.01122364, -0.00271651, 0.00160138, 7.00850713, 0.99151452, 0.99568211, 0.48489471],
+                             [- 6.01208022, -0.00271450, 0.00160039, 7.00936571, 0.99152135, 0.99568510, 0.48491980],
+                             [- 6.01293417, -0.00271250, 0.00159941, 7.01022167, 0.99152817, 0.99568809, 0.48494483],
+                             [- 6.01378552, -0.00271051, 0.00159842, 7.01107501, 0.99153498, 0.99569107, 0.48496978],
+                             [- 6.01463426, -0.00270851, 0.00159743, 7.01192575, 0.99154179, 0.99569406, 0.48499466],
+                             [- 6.01548040, -0.00270652, 0.00159645, 7.01277388, 0.99154858, 0.99569704, 0.48501947],
+                             [- 6.01632394, -0.00270453, 0.00159546, 7.01361942, 0.99155537, 0.99570001, 0.48504420],
+                             [- 6.01716491, -0.00270254, 0.00159448, 7.01446237, 0.99156214, 0.99570299, 0.48506886],
+                             [- 6.01800329, -0.00270055, 0.00159349, 7.01530274, 0.99156891, 0.99570596, 0.48509345],
+                             [- 6.01883911, -0.00269856, 0.00159251, 7.01614055, 0.99157566, 0.99570893, 0.48511797],
+                             [- 6.01967236, -0.00269658, 0.00159153, 7.01697578, 0.99158241, 0.99571189, 0.48514241],
+                             [- 6.02050306, -0.00269460, 0.00159054, 7.01780845, 0.99158915, 0.99571486, 0.48516678],
+                             [- 6.02133120, -0.00269262, 0.00158956, 7.01863858, 0.99159588, 0.99571782, 0.48519108],
+                             [- 6.02215680, -0.00269065, 0.00158858, 7.01946615, 0.99160260, 0.99572077, 0.48521531],
+                             [- 6.02297987, -0.00268867, 0.00158760, 7.02029119, 0.99160931, 0.99572373, 0.48523947],
+                             [- 6.02380040, -0.00268670, 0.00158662, 7.02111370, 0.99161601, 0.99572668, 0.48526355],
+                             [- 6.02461841, -0.00268473, 0.00158564, 7.02193368, 0.99162270, 0.99572963, 0.48528757],
+                             [- 6.02543391, -0.00268276, 0.00158466, 7.02275115, 0.99162938, 0.99573258, 0.48531151],
+                             [- 6.02624690, -0.00268080, 0.00158368, 7.02356610, 0.99163606, 0.99573552, 0.48533539],
+                             [- 6.02705738, -0.00267883, 0.00158270, 7.02437855, 0.99164272, 0.99573847, 0.48535919],
+                             [- 6.02786537, -0.00267687, 0.00158172, 7.02518850, 0.99164938, 0.99574141, 0.48538292],
+                             [- 6.02867087, -0.00267491, 0.00158074, 7.02599596, 0.99165602, 0.99574434, 0.48540659],
+                             [- 6.02947389, -0.00267296, 0.00157977, 7.02680093, 0.99166266, 0.99574728, 0.48543018],
+                             [- 6.03027443, -0.00267100, 0.00157879, 7.02760343, 0.99166929, 0.99575021, 0.48545370],
+                             [- 6.03107251, -0.00266905, 0.00157781, 7.02840346, 0.99167591, 0.99575314, 0.48547716],
+                             [- 6.03186812, -0.00266710, 0.00157684, 7.02920102, 0.99168252, 0.99575606, 0.48550054],
+                             [- 6.03266127, -0.00266515, 0.00157586, 7.02999612, 0.99168912, 0.99575899, 0.48552386],
+                             [- 6.03345198, -0.00266320, 0.00157489, 7.03078878, 0.99169571, 0.99576191, 0.48554710],
+                             [- 6.03424025, -0.00266126, 0.00157391, 7.03157899, 0.99170230, 0.99576483, 0.48557028],
+                             [- 6.03502608, -0.00265932, 0.00157294, 7.03236676, 0.99170887, 0.99576774, 0.48559339],
+                             [- 6.03580948, -0.00265738, 0.00157197, 7.03315210, 0.99171544, 0.99577065, 0.48561643],
+                             [- 6.03659046, -0.00265544, 0.00157100, 7.03393502, 0.99172199, 0.99577356, 0.48563940],
+                             [- 6.03736903, -0.00265350, 0.00157002, 7.03471552, 0.99172854, 0.99577647, 0.48566231],
+                             [- 6.03814518, -0.00265157, 0.00156905, 7.03549361, 0.99173508, 0.99577938, 0.48568514],
+                             [- 6.03891894, -0.00264964, 0.00156808, 7.03626930, 0.99174161, 0.99578228, 0.48570791],
+                             [- 6.03969029, -0.00264771, 0.00156711, 7.03704258, 0.99174813, 0.99578518, 0.48573061],
+                             [- 6.04045926, -0.00264578, 0.00156614, 7.03781348, 0.99175464, 0.99578807, 0.48575324],
+                             [- 6.04122585, -0.00264386, 0.00156517, 7.03858199, 0.99176115, 0.99579097, 0.48577581],
+                             [- 6.04199006, -0.00264193, 0.00156421, 7.03934813, 0.99176764, 0.99579386, 0.48579831],
+                             [- 6.04275190, -0.00264001, 0.00156324, 7.04011189, 0.99177413, 0.99579675, 0.48582075],
+                             [- 6.04351138, -0.00263809, 0.00156227, 7.04087328, 0.99178061, 0.99579964, 0.48584311],
+                             [- 6.04426850, -0.00263618, 0.00156130, 7.04163232, 0.99178707, 0.99580252, 0.48586541],
+                             [- 6.04502327, -0.00263426, 0.00156034, 7.04238901, 0.99179353, 0.99580540, 0.48588765],
+                             [- 6.04577570, -0.00263235, 0.00155937, 7.04314335, 0.99179998, 0.99580828, 0.48590981],
+                             [- 6.04652579, -0.00263044, 0.00155841, 7.04389535, 0.99180643, 0.99581115, 0.48593191],
+                             [- 6.04727354, -0.00262853, 0.00155744, 7.04464502, 0.99181286, 0.99581403, 0.48595395],
+                             [- 6.04801898, -0.00262662, 0.00155648, 7.04539236, 0.99181929, 0.99581690, 0.48597592],
+                             [- 6.04876210, -0.00262472, 0.00155552, 7.04613738, 0.99182570, 0.99581977, 0.48599782],
+                             [- 6.04950290, -0.00262282, 0.00155455, 7.04688009, 0.99183211, 0.99582263, 0.48601966],
+                             [- 6.05024140, -0.00262092, 0.00155359, 7.04762049, 0.99183851, 0.99582549, 0.48604144],
+                             [- 6.05097760, -0.00261902, 0.00155263, 7.04835858, 0.99184490, 0.99582835, 0.48606315],
+                             [- 6.05171151, -0.00261712, 0.00155167, 7.04909439, 0.99185128, 0.99583121, 0.48608479],
+                             [- 6.05244313, -0.00261523, 0.00155071, 7.04982791, 0.99185765, 0.99583407, 0.48610637],
+                             [- 6.05317248, -0.00261334, 0.00154975, 7.05055914, 0.99186402, 0.99583692, 0.48612789],
+                             [- 6.05389955, -0.00261145, 0.00154879, 7.05128810, 0.99187037, 0.99583977, 0.48614934],
+                             [- 6.05462435, -0.00260956, 0.00154783, 7.05201479, 0.99187672, 0.99584261, 0.48617073],
+                             [- 6.05534689, -0.00260767, 0.00154687, 7.05273922, 0.99188306, 0.99584546, 0.48619205],
+                             [- 6.05606718, -0.00260579, 0.00154591, 7.05346139, 0.99188939, 0.99584830, 0.48621331],
+                             [- 6.05678521, -0.00260391, 0.00154495, 7.05418131, 0.99189571, 0.99585114, 0.48623450],
+                             [- 6.05750101, -0.00260203, 0.00154400, 7.05489898, 0.99190203, 0.99585398, 0.48625564],
+                             [- 6.05821457, -0.00260015, 0.00154304, 7.05561442, 0.99190833, 0.99585681, 0.48627671],
+                             [- 6.05892590, -0.00259827, 0.00154209, 7.05632763, 0.99191463, 0.99585964, 0.48629772],
+                             [- 6.05963501, -0.00259640, 0.00154113, 7.05703861, 0.99192092, 0.99586247, 0.48631866],
+                             [- 6.06034190, -0.00259453, 0.00154018, 7.05774737, 0.99192720, 0.99586529, 0.48633954],
+                             [- 6.06104657, -0.00259266, 0.00153922, 7.05845392, 0.99193347, 0.99586812, 0.48636036],
+                             [- 6.06174905, -0.00259079, 0.00153827, 7.05915826, 0.99193973, 0.99587094, 0.48638112],
+                             [- 6.06244932, -0.00258893, 0.00153732, 7.05986040, 0.99194598, 0.99587376, 0.48640181],
+                             [- 6.06314740, -0.00258706, 0.00153637, 7.06056034, 0.99195223, 0.99587657, 0.48642244],
+                             [- 6.06384330, -0.00258520, 0.00153541, 7.06125810, 0.99195847, 0.99587938, 0.48644301],
+                             [- 6.06453701, -0.00258334, 0.00153446, 7.06195367, 0.99196470, 0.99588220, 0.48646352],
+                             [- 6.06522855, -0.00258148, 0.00153351, 7.06264707, 0.99197092, 0.99588500, 0.48648397],
+                             [- 6.06591793, -0.00257963, 0.00153256, 7.06333830, 0.99197713, 0.99588781, 0.48650436],
+                             [- 6.06660514, -0.00257778, 0.00153161, 7.06402736, 0.99198334, 0.99589061, 0.48652468],
+                             [- 6.06729019, -0.00257592, 0.00153067, 7.06471427, 0.99198953, 0.99589341, 0.48654494],
+                             [- 6.06797309, -0.00257408, 0.00152972, 7.06539902, 0.99199572, 0.99589621, 0.48656515],
+                             [- 6.06865385, -0.00257223, 0.00152877, 7.06608163, 0.99200190, 0.99589900, 0.48658529],
+                             [- 6.06933248, -0.00257038, 0.00152782, 7.06676209, 0.99200807, 0.99590179, 0.48660537],
+                             [- 6.07000896, -0.00256854, 0.00152688, 7.06744043, 0.99201424, 0.99590458, 0.48662539],
+                             [- 6.07068333, -0.00256670, 0.00152593, 7.06811663, 0.99202039, 0.99590737, 0.48664535],
+                             [- 6.07135557, -0.00256486, 0.00152499, 7.06879071, 0.99202654, 0.99591015, 0.48666525],
+                             [- 6.07202570, -0.00256302, 0.00152404, 7.06946268, 0.99203268, 0.99591294, 0.48668509],
+                             [- 6.07269372, -0.00256119, 0.00152310, 7.07013254, 0.99203881, 0.99591572, 0.48670487],
+                             [- 6.07335964, -0.00255935, 0.00152215, 7.07080029, 0.99204493, 0.99591849, 0.48672460],
+                             [- 6.07402346, -0.00255752, 0.00152121, 7.07146594, 0.99205104, 0.99592127, 0.48674426],
+                             [- 6.07468520, -0.00255569, 0.00152027, 7.07212950, 0.99205715, 0.99592404, 0.48676386],
+                             [- 6.07534484, -0.00255387, 0.00151933, 7.07279098, 0.99206325, 0.99592681, 0.48678341],
+                             [- 6.07600241, -0.00255204, 0.00151839, 7.07345037, 0.99206934, 0.99592957, 0.48680289],
+                             [- 6.07665791, -0.00255022, 0.00151745, 7.07410769, 0.99207542, 0.99593234, 0.48682232],
+                             [- 6.07731134, -0.00254840, 0.00151651, 7.07476294, 0.99208149, 0.99593510, 0.48684169],
+                             [- 6.07796271, -0.00254658, 0.00151557, 7.07541613, 0.99208756, 0.99593786, 0.48686100],
+                             [- 6.07861202, -0.00254476, 0.00151463, 7.07606726, 0.99209362, 0.99594061, 0.48688025],
+                             [- 6.07925928, -0.00254294, 0.00151369, 7.07671634, 0.99209967, 0.99594336, 0.48689944],
+                             [- 6.07990450, -0.00254113, 0.00151275, 7.07736337, 0.99210571, 0.99594612, 0.48691858],
+                             [- 6.08054769, -0.00253932, 0.00151182, 7.07800837, 0.99211174, 0.99594886, 0.48693766],
+                             [- 6.08118884, -0.00253751, 0.00151088, 7.07865133, 0.99211777, 0.99595161, 0.48695668],
+                             [- 6.08182796, -0.00253570, 0.00150994, 7.07929226, 0.99212379, 0.99595435, 0.48697564],
+                             [- 6.08246507, -0.00253390, 0.00150901, 7.07993117, 0.99212980, 0.99595709, 0.48699454],
+                             [- 6.08310016, -0.00253210, 0.00150807, 7.08056806, 0.99213580, 0.99595983, 0.48701339],
+                             [- 6.08373324, -0.00253029, 0.00150714, 7.08120294, 0.99214179, 0.99596257, 0.48703218],
+                             [- 6.08436431, -0.00252849, 0.00150621, 7.08183582, 0.99214778, 0.99596530, 0.48705092],
+                             [- 6.08499339, -0.00252670, 0.00150527, 7.08246669, 0.99215376, 0.99596803, 0.48706960],
+                             [- 6.08562048, -0.00252490, 0.00150434, 7.08309558, 0.99215973, 0.99597076, 0.48708821],
+                             [- 6.08624558, -0.00252311, 0.00150341, 7.08372247, 0.99216569, 0.99597348, 0.48710678],
+                             [- 6.08686870, -0.00252132, 0.00150248, 7.08434738, 0.99217164, 0.99597620, 0.48712529],
+                             [- 6.08748985, -0.00251953, 0.00150155, 7.08497032, 0.99217759, 0.99597892, 0.48714374],
+                             [- 6.08810902, -0.00251774, 0.00150062, 7.08559128, 0.99218353, 0.99598164, 0.48716214],
+                             [- 6.08872624, -0.00251595, 0.00149969, 7.08621028, 0.99218946, 0.99598436, 0.48718048],
+                             [- 6.08934149, -0.00251417, 0.00149876, 7.08682732, 0.99219538, 0.99598707, 0.48719876],
+                             [- 6.08995479, -0.00251239, 0.00149784, 7.08744241, 0.99220130, 0.99598978, 0.48721699],
+                             [- 6.09056615, -0.00251061, 0.00149691, 7.08805554, 0.99220721, 0.99599248, 0.48723517],
+                             [- 6.09117556, -0.00250883, 0.00149598, 7.08866673, 0.99221310, 0.99599519, 0.48725329],
+                             [- 6.09178304, -0.00250705, 0.00149506, 7.08927599, 0.99221900, 0.99599789, 0.48727135],
+                             [- 6.09238859, -0.00250528, 0.00149413, 7.08988331, 0.99222488, 0.99600059, 0.48728936],
+                             [- 6.09299221, -0.00250351, 0.00149320, 7.09048871, 0.99223076, 0.99600329, 0.48730732],
+                             [- 6.09359392, -0.00250174, 0.00149228, 7.09109218, 0.99223663, 0.99600598, 0.48732522],
+                             [- 6.09419371, -0.00249997, 0.00149136, 7.09169374, 0.99224249, 0.99600867, 0.48734306],
+                             [- 6.09479159, -0.00249820, 0.00149043, 7.09229339, 0.99224834, 0.99601136, 0.48736085],
+                             [- 6.09538757, -0.00249644, 0.00148951, 7.09289113, 0.99225419, 0.99601405, 0.48737859],
+                             [- 6.09598165, -0.00249468, 0.00148859, 7.09348698, 0.99226003, 0.99601673, 0.48739628],
+                             [- 6.09657385, -0.00249292, 0.00148767, 7.09408093, 0.99226586, 0.99601942, 0.48741390],
+                             [- 6.09716415, -0.00249116, 0.00148675, 7.09467299, 0.99227168, 0.99602210, 0.48743148],
+                             [- 6.09775257, -0.00248940, 0.00148583, 7.09526317, 0.99227749, 0.99602477, 0.48744900],
+                             [- 6.09833912, -0.00248765, 0.00148491, 7.09585148, 0.99228330, 0.99602745, 0.48746647],
+                             [- 6.09892380, -0.00248589, 0.00148399, 7.09643791, 0.99228910, 0.99603012, 0.48748389],
+                             [- 6.09950662, -0.00248414, 0.00148307, 7.09702248, 0.99229489, 0.99603279, 0.48750125],
+                             [- 6.10008757, -0.00248239, 0.00148215, 7.09760518, 0.99230068, 0.99603545, 0.48751856],
+                             [- 6.10066667, -0.00248065, 0.00148124, 7.09818603, 0.99230646, 0.99603812, 0.48753582],
+                             [- 6.10124393, -0.00247890, 0.00148032, 7.09876503, 0.99231223, 0.99604078, 0.48755302],
+                             [- 6.10181934, -0.00247716, 0.00147941, 7.09934218, 0.99231799, 0.99604344, 0.48757018],
+                             [- 6.10239291, -0.00247542, 0.00147849, 7.09991749, 0.99232374, 0.99604609, 0.48758728],
+                             [- 6.10296465, -0.00247368, 0.00147758, 7.10049097, 0.99232949, 0.99604875, 0.48760432],
+                             [- 6.10353456, -0.00247194, 0.00147666, 7.10106262, 0.99233523, 0.99605140, 0.48762132],
+                             [- 6.10410265, -0.00247020, 0.00147575, 7.10163245, 0.99234096, 0.99605405, 0.48763826],
+                             [- 6.10466892, -0.00246847, 0.00147484, 7.10220045, 0.99234669, 0.99605669, 0.48765516],
+                             [- 6.10523338, -0.00246674, 0.00147393, 7.10276665, 0.99235240, 0.99605934, 0.48767200],
+                             [- 6.10579604, -0.00246501, 0.00147301, 7.10333103, 0.99235811, 0.99606198, 0.48768879],
+                             [- 6.10635689, -0.00246328, 0.00147210, 7.10389362, 0.99236382, 0.99606462, 0.48770552],
+                             [- 6.10691595, -0.00246155, 0.00147119, 7.10445440, 0.99236951, 0.99606725, 0.48772221],
+                             [- 6.10747322, -0.00245983, 0.00147028, 7.10501339, 0.99237520, 0.99606989, 0.48773885],
+                             [- 6.10802871, -0.00245811, 0.00146937, 7.10557060, 0.99238088, 0.99607252, 0.48775543],
+                             [- 6.10858241, -0.00245639, 0.00146847, 7.10612603, 0.99238655, 0.99607515, 0.48777197],
+                             [- 6.10913434, -0.00245467, 0.00146756, 7.10667967, 0.99239222, 0.99607777, 0.48778845],
+                             [- 6.10968450, -0.00245295, 0.00146665, 7.10723155, 0.99239787, 0.99608040, 0.48780488],
+                             [- 6.11023289, -0.00245123, 0.00146575, 7.10778166, 0.99240353, 0.99608302, 0.48782127],
+                             [- 6.11077953, -0.00244952, 0.00146484, 7.10833001, 0.99240917, 0.99608564, 0.48783760],
+                             [- 6.11132441, -0.00244781, 0.00146393, 7.10887660, 0.99241480, 0.99608825, 0.48785388],
+                             [- 6.11186754, -0.00244610, 0.00146303, 7.10942144, 0.99242043, 0.99609087, 0.48787012],
+                             [- 6.11240893, -0.00244439, 0.00146213, 7.10996454, 0.99242605, 0.99609348, 0.48788630],
+                             [- 6.11294858, -0.00244269, 0.00146122, 7.11050589, 0.99243167, 0.99609609, 0.48790243],
+                             [- 6.11348649, -0.00244098, 0.00146032, 7.11104551, 0.99243728, 0.99609869, 0.48791852],
+                             [- 6.11402268, -0.00243928, 0.00145942, 7.11158340, 0.99244288, 0.99610130, 0.48793455],
+                             [- 6.11455714, -0.00243758, 0.00145852, 7.11211956, 0.99244847, 0.99610390, 0.48795053],
+                             [- 6.11508989, -0.00243588, 0.00145762, 7.11265400, 0.99245405, 0.99610650, 0.48796647],
+                             [- 6.11562092, -0.00243419, 0.00145672, 7.11318673, 0.99245963, 0.99610909, 0.48798236],
+                             [- 6.11615024, -0.00243249, 0.00145582, 7.11371775, 0.99246520, 0.99611169, 0.48799820],
+                             [- 6.11667786, -0.00243080, 0.00145492, 7.11424706, 0.99247077, 0.99611428, 0.48801399],
+                             [- 6.11720378, -0.00242911, 0.00145402, 7.11477467, 0.99247632, 0.99611687, 0.48802973],
+                             [- 6.11772800, -0.00242742, 0.00145312, 7.11530058, 0.99248187, 0.99611945, 0.48804543],
+                             [- 6.11825054, -0.00242574, 0.00145223, 7.11582481, 0.99248741, 0.99612204, 0.48806107],
+                             [- 6.11877140, -0.00242405, 0.00145133, 7.11634735, 0.99249295, 0.99612462, 0.48807667],
+                             [- 6.11929057, -0.00242237, 0.00145043, 7.11686820, 0.99249847, 0.99612720, 0.48809222],
+                             [- 6.11980807, -0.00242069, 0.00144954, 7.11738739, 0.99250400, 0.99612978, 0.48810772],
+                             [- 6.12032390, -0.00241901, 0.00144864, 7.11790490, 0.99250951, 0.99613235, 0.48812317],
+                             [- 6.12083807, -0.00241733, 0.00144775, 7.11842074, 0.99251501, 0.99613492, 0.48813858],
+                             [- 6.12135058, -0.00241565, 0.00144686, 7.11893493, 0.99252051, 0.99613749, 0.48815394],
+                             [- 6.12186144, -0.00241398, 0.00144597, 7.11944746, 0.99252601, 0.99614006, 0.48816925],
+                             [- 6.12237064, -0.00241231, 0.00144507, 7.11995834, 0.99253149, 0.99614262, 0.48818451],
+                             [- 6.12287820, -0.00241064, 0.00144418, 7.12046757, 0.99253697, 0.99614518, 0.48819973],
+                             [- 6.12338412, -0.00240897, 0.00144329, 7.12097516, 0.99254244, 0.99614774, 0.48821490],
+                             [- 6.12388841, -0.00240730, 0.00144240, 7.12148111, 0.99254790, 0.99615030, 0.48823002],
+                             [- 6.12439107, -0.00240563, 0.00144151, 7.12198543, 0.99255336, 0.99615285, 0.48824510],
+                             [- 6.12489210, -0.00240397, 0.00144062, 7.12248813, 0.99255881, 0.99615540, 0.48826013],
+                             [- 6.12539151, -0.00240231, 0.00143974, 7.12298920, 0.99256425, 0.99615795, 0.48827512],
+                             [- 6.12588931, -0.00240065, 0.00143885, 7.12348866, 0.99256969, 0.99616050, 0.48829005],
+                             [- 6.12638549, -0.00239899, 0.00143796, 7.12398650, 0.99257512, 0.99616304, 0.48830495],
+                             [- 6.12688007, -0.00239734, 0.00143708, 7.12448273, 0.99258054, 0.99616559, 0.48831979],
+                             [- 6.12737305, -0.00239568, 0.00143619, 7.12497736, 0.99258596, 0.99616813, 0.48833460],
+                             [- 6.12786443, -0.00239403, 0.00143531, 7.12547040, 0.99259136, 0.99617066, 0.48834935],
+                             [- 6.12835422, -0.00239238, 0.00143442, 7.12596184, 0.99259676, 0.99617320, 0.48836406],
+                             [- 6.12884242, -0.00239073, 0.00143354, 7.12645169, 0.99260216, 0.99617573, 0.48837872],
+                             [- 6.12932904, -0.00238908, 0.00143266, 7.12693996, 0.99260755, 0.99617826, 0.48839334],
+                             [- 6.12981408, -0.00238744, 0.00143177, 7.12742664, 0.99261293, 0.99618079, 0.48840792],
+                             [- 6.13029755, -0.00238580, 0.00143089, 7.12791176, 0.99261830, 0.99618331, 0.48842244],
+                             [- 6.13077945, -0.00238416, 0.00143001, 7.12839530, 0.99262367, 0.99618583, 0.48843693],
+                             [- 6.13125979, -0.00238252, 0.00142913, 7.12887728, 0.99262903, 0.99618835, 0.48845136],
+                             [- 6.13173857, -0.00238088, 0.00142825, 7.12935769, 0.99263438, 0.99619087, 0.48846576],
+                             [- 6.13221579, -0.00237924, 0.00142737, 7.12983655, 0.99263972, 0.99619339, 0.48848011],
+                             [- 6.13269147, -0.00237761, 0.00142649, 7.13031386, 0.99264506, 0.99619590, 0.48849441],
+                             [- 6.13316560, -0.00237598, 0.00142562, 7.13078962, 0.99265040, 0.99619841, 0.48850867],
+                             [- 6.13363819, -0.00237434, 0.00142474, 7.13126384, 0.99265572, 0.99620092, 0.48852289],
+                             [- 6.13410924, -0.00237272, 0.00142386, 7.13173652, 0.99266104, 0.99620342, 0.48853706],
+                             [- 6.13457876, -0.00237109, 0.00142299, 7.13220767, 0.99266635, 0.99620593, 0.48855119],
+                             [- 6.13504676, -0.00236946, 0.00142211, 7.13267729, 0.99267166, 0.99620843, 0.48856528],
+                             [- 6.13551323, -0.00236784, 0.00142124, 7.13314539, 0.99267696, 0.99621092, 0.48857932],
+                             [- 6.13597818, -0.00236622, 0.00142036, 7.13361197, 0.99268225, 0.99621342, 0.48859332],
+                             [- 6.13644163, -0.00236460, 0.00141949, 7.13407703, 0.99268753, 0.99621591, 0.48860727],
+                             [- 6.13690356, -0.00236298, 0.00141862, 7.13454058, 0.99269281, 0.99621840, 0.48862118],
+                             [- 6.13736399, -0.00236136, 0.00141774, 7.13500263, 0.99269808, 0.99622089, 0.48863505],
+                             [- 6.13782292, -0.00235975, 0.00141687, 7.13546317, 0.99270335, 0.99622338, 0.48864888],
+                             [- 6.13828035, -0.00235814, 0.00141600, 7.13592222, 0.99270861, 0.99622586, 0.48866266],
+                             [- 6.13873630, -0.00235652, 0.00141513, 7.13637977, 0.99271386, 0.99622834, 0.48867640],
+                             [- 6.13919076, -0.00235492, 0.00141426, 7.13683584, 0.99271910, 0.99623082, 0.48869010],
+                             [- 6.13964373, -0.00235331, 0.00141339, 7.13729042, 0.99272434, 0.99623330, 0.48870375],
+                             [- 6.14009523, -0.00235170, 0.00141253, 7.13774353, 0.99272957, 0.99623577, 0.48871736],
+                             [- 6.14054526, -0.00235010, 0.00141166, 7.13819516, 0.99273480, 0.99623824, 0.48873093],
+                             [- 6.14099381, -0.00234850, 0.00141079, 7.13864532, 0.99274001, 0.99624071, 0.48874446],
+                             [- 6.14144091, -0.00234689, 0.00140993, 7.13909401, 0.99274523, 0.99624318, 0.48875794],
+                             [- 6.14188654, -0.00234530, 0.00140906, 7.13954125, 0.99275043, 0.99624564, 0.48877139],
+                             [- 6.14233072, -0.00234370, 0.00140820, 7.13998702, 0.99275563, 0.99624811, 0.48878479],
+                             [- 6.14277345, -0.00234210, 0.00140733, 7.14043134, 0.99276082, 0.99625057, 0.48879815],
+                             [- 6.14321473, -0.00234051, 0.00140647, 7.14087422, 0.99276601, 0.99625302, 0.48881147],
+                             [- 6.14365457, -0.00233892, 0.00140561, 7.14131565, 0.99277118, 0.99625548, 0.48882475],
+                             [- 6.14409297, -0.00233733, 0.00140474, 7.14175564, 0.99277636, 0.99625793, 0.48883798],
+                             [- 6.14452994, -0.00233574, 0.00140388, 7.14219420, 0.99278152, 0.99626038, 0.48885118],
+                             [- 6.14496548, -0.00233415, 0.00140302, 7.14263132, 0.99278668, 0.99626283, 0.48886433],
+                             [- 6.14539959, -0.00233257, 0.00140216, 7.14306702, 0.99279183, 0.99626527, 0.48887745],
+                             [- 6.14583228, -0.00233098, 0.00140130, 7.14350130, 0.99279698, 0.99626772, 0.48889052],
+                             [- 6.14626356, -0.00232940, 0.00140044, 7.14393416, 0.99280212, 0.99627016, 0.48890355],
+                             [- 6.14669342, -0.00232782, 0.00139958, 7.14436560, 0.99280725, 0.99627259, 0.48891654],
+                             [- 6.14712188, -0.00232625, 0.00139873, 7.14479564, 0.99281238, 0.99627503, 0.48892949],
+                             [- 6.14754894, -0.00232467, 0.00139787, 7.14522427, 0.99281750, 0.99627746, 0.48894240],
+                             [- 6.14797459, -0.00232309, 0.00139701, 7.14565150, 0.99282261, 0.99627989, 0.48895527],
+                             [- 6.14839885, -0.00232152, 0.00139616, 7.14607733, 0.99282772, 0.99628232, 0.48896810],
+                             [- 6.14882172, -0.00231995, 0.00139530, 7.14650177, 0.99283282, 0.99628475, 0.48898089],
+                             [- 6.14924320, -0.00231838, 0.00139445, 7.14692482, 0.99283791, 0.99628717, 0.48899364],
+                             [- 6.14966330, -0.00231681, 0.00139359, 7.14734649, 0.99284300, 0.99628959, 0.48900634],
+                             [- 6.15008202, -0.00231525, 0.00139274, 7.14776677, 0.99284808, 0.99629201, 0.48901902],
+                             [- 6.15049937, -0.00231368, 0.00139189, 7.14818569, 0.99285316, 0.99629443, 0.48903165],
+                             [- 6.15091535, -0.00231212, 0.00139104, 7.14860323, 0.99285823, 0.99629684, 0.48904424],
+                             [- 6.15132996, -0.00231056, 0.00139018, 7.14901940, 0.99286329, 0.99629926, 0.48905679],
+                             [- 6.15174321, -0.00230900, 0.00138933, 7.14943421, 0.99286834, 0.99630166, 0.48906930],
+                             [- 6.15215510, -0.00230744, 0.00138848, 7.14984766, 0.99287339, 0.99630407, 0.48908178],
+                             [- 6.15256564, -0.00230589, 0.00138763, 7.15025975, 0.99287844, 0.99630648, 0.48909421],
+                             [- 6.15297483, -0.00230433, 0.00138679, 7.15067050, 0.99288347, 0.99630888, 0.48910661],
+                             [- 6.15338268, -0.00230278, 0.00138594, 7.15107989, 0.99288850, 0.99631128, 0.48911897],
+                             [- 6.15378918, -0.00230123, 0.00138509, 7.15148795, 0.99289353, 0.99631368, 0.48913128],
+                             [- 6.15419435, -0.00229968, 0.00138424, 7.15189467, 0.99289855, 0.99631607, 0.48914356],
+                             [- 6.15459818, -0.00229814, 0.00138340, 7.15230005, 0.99290356, 0.99631847, 0.48915581],
+                             [- 6.15500069, -0.00229659, 0.00138255, 7.15270410, 0.99290856, 0.99632086, 0.48916801],
+                             [- 6.15540187, -0.00229505, 0.00138171, 7.15310682, 0.99291356, 0.99632324, 0.48918017],
+                             [- 6.15580173, -0.00229350, 0.00138087, 7.15350822, 0.99291855, 0.99632563, 0.48919230],
+                             [- 6.15620027, -0.00229196, 0.00138002, 7.15390831, 0.99292354, 0.99632801, 0.48920439],
+                             [- 6.15659750, -0.00229042, 0.00137918, 7.15430708, 0.99292852, 0.99633040, 0.48921644],
+                             [- 6.15699342, -0.00228889, 0.00137834, 7.15470454, 0.99293349, 0.99633278, 0.48922846],
+                             [- 6.15738804, -0.00228735, 0.00137750, 7.15510069, 0.99293846, 0.99633515, 0.48924043],
+                             [- 6.15778136, -0.00228582, 0.00137666, 7.15549554, 0.99294342, 0.99633753, 0.48925237],
+                             [- 6.15817338, -0.00228429, 0.00137582, 7.15588909, 0.99294838, 0.99633990, 0.48926427],
+                             [- 6.15856410, -0.00228276, 0.00137498, 7.15628135, 0.99295333, 0.99634227, 0.48927613],
+                             [- 6.15895354, -0.00228123, 0.00137414, 7.15667231, 0.99295827, 0.99634464, 0.48928796],
+                             [- 6.15934170, -0.00227970, 0.00137330, 7.15706199, 0.99296321, 0.99634700, 0.48929975],
+                             [- 6.15972857, -0.00227818, 0.00137246, 7.15745039, 0.99296814, 0.99634936, 0.48931151],
+                             [- 6.16011416, -0.00227665, 0.00137162, 7.15783751, 0.99297306, 0.99635172, 0.48932322],
+                             [- 6.16049848, -0.00227513, 0.00137079, 7.15822335, 0.99297798, 0.99635408, 0.48933490],
+                             [- 6.16088154, -0.00227361, 0.00136995, 7.15860793, 0.99298289, 0.99635644, 0.48934654],
+                             [- 6.16126332, -0.00227209, 0.00136912, 7.15899123, 0.99298780, 0.99635879, 0.48935815],
+                             [- 6.16164385, -0.00227057, 0.00136828, 7.15937328, 0.99299270, 0.99636114, 0.48936972],
+                             [- 6.16202312, -0.00226906, 0.00136745, 7.15975406, 0.99299759, 0.99636349, 0.48938125],
+                             [- 6.16240113, -0.00226754, 0.00136662, 7.16013359, 0.99300248, 0.99636584, 0.48939275],
+                             [- 6.16277790, -0.00226603, 0.00136579, 7.16051186, 0.99300736, 0.99636818, 0.48940421],
+                             [- 6.16315341, -0.00226452, 0.00136495, 7.16088889, 0.99301224, 0.99637052, 0.48941563],
+                             [- 6.16352769, -0.00226301, 0.00136412, 7.16126468, 0.99301711, 0.99637286, 0.48942702],
+                             [- 6.16390073, -0.00226151, 0.00136329, 7.16163922, 0.99302197, 0.99637520, 0.48943837],
+                             [- 6.16427253, -0.00226000, 0.00136246, 7.16201253, 0.99302683, 0.99637753, 0.48944969],
+                             [- 6.16464310, -0.00225850, 0.00136164, 7.16238461, 0.99303168, 0.99637987, 0.48946098],
+                             [- 6.16501245, -0.00225700, 0.00136081, 7.16275545, 0.99303653, 0.99638220, 0.48947222],
+                             [- 6.16538057, -0.00225549, 0.00135998, 7.16312507, 0.99304136, 0.99638453, 0.48948343],
+                             [- 6.16574747, -0.00225400, 0.00135915, 7.16349348, 0.99304620, 0.99638685, 0.48949461],
+                             [- 6.16611316, -0.00225250, 0.00135833, 7.16386066, 0.99305103, 0.99638918, 0.48950575],
+                             [- 6.16647763, -0.00225100, 0.00135750, 7.16422663, 0.99305585, 0.99639150, 0.48951685],
+                             [- 6.16684090, -0.00224951, 0.00135668, 7.16459139, 0.99306066, 0.99639382, 0.48952792],
+                             [- 6.16720296, -0.00224802, 0.00135585, 7.16495494, 0.99306547, 0.99639613, 0.48953896],
+                             [- 6.16756382, -0.00224653, 0.00135503, 7.16531729, 0.99307027, 0.99639845, 0.48954996],
+                             [- 6.16792348, -0.00224504, 0.00135421, 7.16567845, 0.99307507, 0.99640076, 0.48956093],
+                             [- 6.16828195, -0.00224355, 0.00135338, 7.16603840, 0.99307986, 0.99640307, 0.48957186],
+                             [- 6.16863923, -0.00224206, 0.00135256, 7.16639717, 0.99308465, 0.99640538, 0.48958276],
+                             [- 6.16899533, -0.00224058, 0.00135174, 7.16675475, 0.99308943, 0.99640768, 0.48959363],
+                             [- 6.16935024, -0.00223910, 0.00135092, 7.16711114, 0.99309420, 0.99640998, 0.48960445],
+                             [- 6.16970397, -0.00223762, 0.00135010, 7.16746636, 0.99309897, 0.99641228, 0.48961525],
+                             [- 6.17005653, -0.00223614, 0.00134928, 7.16782039, 0.99310373, 0.99641458, 0.48962601],
+                             [- 6.17040791, -0.00223466, 0.00134846, 7.16817326, 0.99310849, 0.99641688, 0.48963673],
+                             [- 6.17075813, -0.00223318, 0.00134765, 7.16852495, 0.99311324, 0.99641917, 0.48964743],
+                             [- 6.17110719, -0.00223171, 0.00134683, 7.16887548, 0.99311798, 0.99642146, 0.48965809],
+                             [- 6.17145508, -0.00223024, 0.00134601, 7.16922484, 0.99312272, 0.99642375, 0.48966871],
+                             [- 6.17180182, -0.00222876, 0.00134520, 7.16957305, 0.99312745, 0.99642604, 0.48967931],
+                             [- 6.17214740, -0.00222729, 0.00134438, 7.16992010, 0.99313218, 0.99642832, 0.48968987],
+                             [- 6.17249183, -0.00222583, 0.00134357, 7.17026601, 0.99313690, 0.99643061, 0.48970039],
+                             [- 6.17283512, -0.00222436, 0.00134275, 7.17061076, 0.99314162, 0.99643289, 0.48971088],
+                             [- 6.17317726, -0.00222289, 0.00134194, 7.17095437, 0.99314633, 0.99643517, 0.48972134],
+                             [- 6.17351827, -0.00222143, 0.00134113, 7.17129683, 0.99315103, 0.99643744, 0.48973177],
+                             [- 6.17385813, -0.00221997, 0.00134032, 7.17163816, 0.99315573, 0.99643971, 0.48974217],
+                             [- 6.17419687, -0.00221851, 0.00133950, 7.17197836, 0.99316042, 0.99644199, 0.48975252],
+                             [- 6.17453448, -0.00221705, 0.00133869, 7.17231743, 0.99316511, 0.99644425, 0.48976285],
+                             [- 6.17487096, -0.00221559, 0.00133788, 7.17265537, 0.99316979, 0.99644652, 0.48977314],
+                             [- 6.17520632, -0.00221414, 0.00133708, 7.17299218, 0.99317446, 0.99644879, 0.48978341],
+                             [- 6.17554056, -0.00221269, 0.00133627, 7.17332788, 0.99317913, 0.99645105, 0.48979364],
+                             [- 6.17587369, -0.00221123, 0.00133546, 7.17366246, 0.99318379, 0.99645331, 0.48980384],
+                             [- 6.17620571, -0.00220978, 0.00133465, 7.17399593, 0.99318845, 0.99645557, 0.48981400],
+                             [- 6.17653662, -0.00220833, 0.00133385, 7.17432829, 0.99319310, 0.99645782, 0.48982414],
+                             [- 6.17686642, -0.00220689, 0.00133304, 7.17465954, 0.99319775, 0.99646007, 0.48983424],
+                             [- 6.17719513, -0.00220544, 0.00133223, 7.17498969, 0.99320239, 0.99646233, 0.48984431],
+                             [- 6.17752273, -0.00220400, 0.00133143, 7.17531874, 0.99320702, 0.99646457, 0.48985434],
+                             [- 6.17784925, -0.00220255, 0.00133063, 7.17564669, 0.99321165, 0.99646682, 0.48986435],
+                             [- 6.17817467, -0.00220111, 0.00132982, 7.17597356, 0.99321628, 0.99646906, 0.48987432],
+                             [- 6.17849900, -0.00219967, 0.00132902, 7.17629933, 0.99322089, 0.99647131, 0.48988427],
+                             [- 6.17882225, -0.00219823, 0.00132822, 7.17662402, 0.99322551, 0.99647355, 0.48989418],
+                             [- 6.17914442, -0.00219680, 0.00132742, 7.17694762, 0.99323011, 0.99647578, 0.48990406],
+                             [- 6.17946552, -0.00219536, 0.00132662, 7.17727015, 0.99323471, 0.99647802, 0.48991391],
+                             [- 6.17978554, -0.00219393, 0.00132582, 7.17759161, 0.99323931, 0.99648025, 0.48992373],
+                             [- 6.18010448, -0.00219250, 0.00132502, 7.17791199, 0.99324390, 0.99648248, 0.48993351],
+                             [- 6.18042237, -0.00219107, 0.00132422, 7.17823130, 0.99324848, 0.99648471, 0.48994327],
+                             [- 6.18073919, -0.00218964, 0.00132342, 7.17854955, 0.99325306, 0.99648694, 0.48995299],
+                             [- 6.18105494, -0.00218821, 0.00132262, 7.17886673, 0.99325763, 0.99648916, 0.48996269],
+                             [- 6.18136964, -0.00218679, 0.00132183, 7.17918286, 0.99326220, 0.99649139, 0.48997235],
+                             [- 6.18168329, -0.00218536, 0.00132103, 7.17949793, 0.99326676, 0.99649361, 0.48998198],
+                             [- 6.18199589, -0.00218394, 0.00132024, 7.17981195, 0.99327132, 0.99649582, 0.48999158],
+                             [- 6.18230744, -0.00218252, 0.00131944, 7.18012492, 0.99327587, 0.99649804, 0.49000115],
+                             [- 6.18261795, -0.00218110, 0.00131865, 7.18043684, 0.99328041, 0.99650025, 0.49001070],
+                             [- 6.18292741, -0.00217968, 0.00131785, 7.18074773, 0.99328495, 0.99650246, 0.49002020],
+                             [- 6.18323584, -0.00217827, 0.00131706, 7.18105757, 0.99328949, 0.99650467, 0.49002969],
+                             [- 6.18354323, -0.00217685, 0.00131627, 7.18136638, 0.99329401, 0.99650688, 0.49003913],
+                             [- 6.18384960, -0.00217544, 0.00131548, 7.18167416, 0.99329854, 0.99650908, 0.49004855],
+                             [- 6.18415493, -0.00217403, 0.00131469, 7.18198091, 0.99330305, 0.99651129, 0.49005794],
+                             [- 6.18445924, -0.00217262, 0.00131390, 7.18228663, 0.99330757, 0.99651349, 0.49006730],
+                             [- 6.18476253, -0.00217121, 0.00131311, 7.18259133, 0.99331207, 0.99651568, 0.49007664],
+                             [- 6.18506481, -0.00216980, 0.00131232, 7.18289501, 0.99331657, 0.99651788, 0.49008594],
+                             [- 6.18536606, -0.00216840, 0.00131153, 7.18319767, 0.99332107, 0.99652007, 0.49009521],
+                             [- 6.18566631, -0.00216699, 0.00131074, 7.18349932, 0.99332556, 0.99652226, 0.49010445],
+                             [- 6.18596555, -0.00216559, 0.00130996, 7.18379996, 0.99333004, 0.99652445, 0.49011367],
+                             [- 6.18626378, -0.00216419, 0.00130917, 7.18409959, 0.99333452, 0.99652664, 0.49012285],
+                             [- 6.18656101, -0.00216279, 0.00130839, 7.18439822, 0.99333900, 0.99652882, 0.49013200],
+                             [- 6.18685724, -0.00216139, 0.00130760, 7.18469585, 0.99334346, 0.99653101, 0.49014113],
+                             [- 6.18715248, -0.00216000, 0.00130682, 7.18499249, 0.99334793, 0.99653319, 0.49015022],
+                             [- 6.18744673, -0.00215860, 0.00130603, 7.18528812, 0.99335238, 0.99653537, 0.49015929],
+                             [- 6.18773998, -0.00215721, 0.00130525, 7.18558277, 0.99335684, 0.99653754, 0.49016833],
+                             [- 6.18803225, -0.00215582, 0.00130447, 7.18587643, 0.99336128, 0.99653972, 0.49017734],
+                             [- 6.18832353, -0.00215443, 0.00130369, 7.18616911, 0.99336572, 0.99654189, 0.49018632],
+                             [- 6.18861384, -0.00215304, 0.00130291, 7.18646080, 0.99337016, 0.99654406, 0.49019527],
+                             [- 6.18890316, -0.00215165, 0.00130213, 7.18675152, 0.99337459, 0.99654622, 0.49020420],
+                             [- 6.18919152, -0.00215026, 0.00130135, 7.18704125, 0.99337901, 0.99654839, 0.49021309],
+                             [- 6.18947890, -0.00214888, 0.00130057, 7.18733002, 0.99338343, 0.99655055, 0.49022196],
+                             [- 6.18976532, -0.00214750, 0.00129979, 7.18761782, 0.99338785, 0.99655271, 0.49023080],
+                             [- 6.19005077, -0.00214612, 0.00129901, 7.18790465, 0.99339226, 0.99655487, 0.49023961],
+                             [- 6.19033526, -0.00214474, 0.00129823, 7.18819052, 0.99339666, 0.99655703, 0.49024839],
+                             [- 6.19061879, -0.00214336, 0.00129746, 7.18847543, 0.99340106, 0.99655918, 0.49025714],
+                             [- 6.19090136, -0.00214198, 0.00129668, 7.18875938, 0.99340545, 0.99656134, 0.49026588],
+                             [- 6.19118298, -0.00214061, 0.00129591, 7.18904238, 0.99340984, 0.99656349, 0.49027457],
+                             [- 6.19146366, -0.00213923, 0.00129513, 7.18932442, 0.99341422, 0.99656563, 0.49028324],
+                             [- 6.19174338, -0.00213786, 0.00129436, 7.18960552, 0.99341860, 0.99656778, 0.49029189],
+                             [- 6.19202217, -0.00213649, 0.00129359, 7.18988568, 0.99342297, 0.99656992, 0.49030051],
+                             [- 6.19230001, -0.00213512, 0.00129281, 7.19016489, 0.99342734, 0.99657207, 0.49030909],
+                             [- 6.19257691, -0.00213375, 0.00129204, 7.19044316, 0.99343170, 0.99657421, 0.49031766],
+                             [- 6.19285288, -0.00213239, 0.00129127, 7.19072050, 0.99343606, 0.99657634, 0.49032619],
+                             [- 6.19312792, -0.00213102, 0.00129050, 7.19099690, 0.99344041, 0.99657848, 0.49033470],
+                             [- 6.19340203, -0.00212966, 0.00128973, 7.19127237, 0.99344475, 0.99658061, 0.49034317],
+                             [- 6.19367521, -0.00212830, 0.00128896, 7.19154692, 0.99344909, 0.99658274, 0.49035163],
+                             [- 6.19394748, -0.00212694, 0.00128819, 7.19182054, 0.99345343, 0.99658487, 0.49036006],
+                             [- 6.19421882, -0.00212558, 0.00128743, 7.19209324, 0.99345776, 0.99658700, 0.49036845],
+                             [- 6.19448924, -0.00212422, 0.00128666, 7.19236502, 0.99346208, 0.99658912, 0.49037683],
+                             [- 6.19475875, -0.00212286, 0.00128589, 7.19263589, 0.99346640, 0.99659124, 0.49038517],
+                             [- 6.19502735, -0.00212151, 0.00128513, 7.19290584, 0.99347072, 0.99659336, 0.49039349],
+                             [- 6.19529504, -0.00212016, 0.00128436, 7.19317489, 0.99347503, 0.99659548, 0.49040178],
+                             [- 6.19556183, -0.00211880, 0.00128360, 7.19344302, 0.99347933, 0.99659760, 0.49041005],
+                             [- 6.19582771, -0.00211745, 0.00128283, 7.19371026, 0.99348363, 0.99659971, 0.49041829],
+                             [- 6.19609270, -0.00211611, 0.00128207, 7.19397659, 0.99348792, 0.99660182, 0.49042650],
+                             [- 6.19635678, -0.00211476, 0.00128131, 7.19424203, 0.99349221, 0.99660393, 0.49043469],
+                             [- 6.19661998, -0.00211341, 0.00128054, 7.19450656, 0.99349650, 0.99660604, 0.49044285],
+                             [- 6.19688228, -0.00211207, 0.00127978, 7.19477021, 0.99350077, 0.99660815, 0.49045099],
+                             [- 6.19714369, -0.00211073, 0.00127902, 7.19503297, 0.99350505, 0.99661025, 0.49045909],
+                             [- 6.19740422, -0.00210938, 0.00127826, 7.19529484, 0.99350932, 0.99661235, 0.49046717],
+                             [- 6.19766387, -0.00210804, 0.00127750, 7.19555583, 0.99351358, 0.99661445, 0.49047523],
+                             [- 6.19792264, -0.00210671, 0.00127674, 7.19581593, 0.99351784, 0.99661655, 0.49048326],
+                             [- 6.19818053, -0.00210537, 0.00127599, 7.19607516, 0.99352209, 0.99661864, 0.49049127],
+                             [- 6.19843754, -0.00210403, 0.00127523, 7.19633351, 0.99352634, 0.99662074, 0.49049925],
+                             [- 6.19869369, -0.00210270, 0.00127447, 7.19659099, 0.99353058, 0.99662283, 0.49050720],
+                             [- 6.19894896, -0.00210137, 0.00127372, 7.19684760, 0.99353482, 0.99662492, 0.49051513],
+                             [- 6.19920337, -0.00210004, 0.00127296, 7.19710334, 0.99353905, 0.99662700, 0.49052303],
+                             [- 6.19945692, -0.00209871, 0.00127221, 7.19735822, 0.99354328, 0.99662909, 0.49053091],
+                             [- 6.19970961, -0.00209738, 0.00127145, 7.19761223, 0.99354750, 0.99663117, 0.49053876],
+                             [- 6.19996144, -0.00209605, 0.00127070, 7.19786539, 0.99355172, 0.99663325, 0.49054659],
+                             [- 6.20021242, -0.00209473, 0.00126995, 7.19811769, 0.99355593, 0.99663533, 0.49055439],
+                             [- 6.20046254, -0.00209340, 0.00126919, 7.19836914, 0.99356014, 0.99663741, 0.49056217],
+                             [- 6.20071181, -0.00209208, 0.00126844, 7.19861973, 0.99356434, 0.99663948, 0.49056992],
+                             [- 6.20096024, -0.00209076, 0.00126769, 7.19886948, 0.99356854, 0.99664155, 0.49057765],
+                             [- 6.20120782, -0.00208944, 0.00126694, 7.19911839, 0.99357273, 0.99664362, 0.49058536],
+                             [- 6.20145457, -0.00208812, 0.00126619, 7.19936645, 0.99357692, 0.99664569, 0.49059304],
+                             [- 6.20170047, -0.00208680, 0.00126544, 7.19961367, 0.99358110, 0.99664776, 0.49060069],
+                             [- 6.20194554, -0.00208549, 0.00126469, 7.19986005, 0.99358528, 0.99664982, 0.49060832],
+                             [- 6.20218978, -0.00208417, 0.00126395, 7.20010560, 0.99358945, 0.99665188, 0.49061593],
+                             [- 6.20243318, -0.00208286, 0.00126320, 7.20035032, 0.99359362, 0.99665394, 0.49062351],
+                             [- 6.20267576, -0.00208155, 0.00126245, 7.20059421, 0.99359778, 0.99665600, 0.49063106],
+                             [- 6.20291751, -0.00208024, 0.00126171, 7.20083727, 0.99360194, 0.99665805, 0.49063859],
+                             [- 6.20315844, -0.00207893, 0.00126096, 7.20107951, 0.99360609, 0.99666011, 0.49064611],
+                             [- 6.20339855, -0.00207762, 0.00126022, 7.20132093, 0.99361024, 0.99666216, 0.49065358],
+                             [- 6.20363785, -0.00207632, 0.00125947, 7.20156153, 0.99361438, 0.99666421, 0.49066104],
+                             [- 6.20387633, -0.00207501, 0.00125873, 7.20180131, 0.99361852, 0.99666626, 0.49066848],
+                             [- 6.20411399, -0.00207371, 0.00125799, 7.20204028, 0.99362265, 0.99666830, 0.49067589],
+                             [- 6.20435085, -0.00207241, 0.00125725, 7.20227844, 0.99362678, 0.99667034, 0.49068328],
+                             [- 6.20458690, -0.00207111, 0.00125650, 7.20251579, 0.99363090, 0.99667238, 0.49069064],
+                             [- 6.20482215, -0.00206981, 0.00125576, 7.20275234, 0.99363502, 0.99667442, 0.49069799],
+                             [- 6.20505660, -0.00206852, 0.00125502, 7.20298808, 0.99363914, 0.99667646, 0.49070530],
+                             [- 6.20529024, -0.00206722, 0.00125428, 7.20322302, 0.99364325, 0.99667850, 0.49071260],
+                             [- 6.20552310, -0.00206593, 0.00125355, 7.20345717, 0.99364735, 0.99668053, 0.49071987],
+                             [- 6.20575515, -0.00206463, 0.00125281, 7.20369052, 0.99365145, 0.99668256, 0.49072711],
+                             [- 6.20598642, -0.00206334, 0.00125207, 7.20392308, 0.99365554, 0.99668459, 0.49073434],
+                             [- 6.20621690, -0.00206205, 0.00125133, 7.20415485, 0.99365963, 0.99668662, 0.49074154],
+                             [- 6.20644659, -0.00206076, 0.00125060, 7.20438583, 0.99366372, 0.99668864, 0.49074872],
+                             [- 6.20667550, -0.00205947, 0.00124986, 7.20461602, 0.99366780, 0.99669066, 0.49075587],
+                             [- 6.20690362, -0.00205819, 0.00124913, 7.20484543, 0.99367187, 0.99669268, 0.49076300],
+                             [- 6.20713097, -0.00205690, 0.00124839, 7.20507407, 0.99367594, 0.99669470, 0.49077011],
+                             [- 6.20735754, -0.00205562, 0.00124766, 7.20530192, 0.99368001, 0.99669672, 0.49077720],
+                             [- 6.20758334, -0.00205434, 0.00124693, 7.20552900, 0.99368407, 0.99669873, 0.49078426],
+                             [- 6.20780837, -0.00205306, 0.00124619, 7.20575531, 0.99368812, 0.99670075, 0.49079130],
+                             [- 6.20803263, -0.00205178, 0.00124546, 7.20598085, 0.99369217, 0.99670276, 0.49079832],
+                             [- 6.20825612, -0.00205050, 0.00124473, 7.20620562, 0.99369622, 0.99670477, 0.49080531],
+                             [- 6.20847885, -0.00204923, 0.00124400, 7.20642963, 0.99370026, 0.99670677, 0.49081228],
+                             [- 6.20870082, -0.00204795, 0.00124327, 7.20665287, 0.99370430, 0.99670878, 0.49081924],
+                             [- 6.20892203, -0.00204668, 0.00124254, 7.20687536, 0.99370833, 0.99671078, 0.49082617],
+                             [- 6.20914249, -0.00204540, 0.00124181, 7.20709708, 0.99371236, 0.99671278, 0.49083307],
+                             [- 6.20936219, -0.00204413, 0.00124109, 7.20731805, 0.99371638, 0.99671478, 0.49083996],
+                             [- 6.20958114, -0.00204286, 0.00124036, 7.20753827, 0.99372040, 0.99671678, 0.49084681],
+                             [- 6.20979934, -0.00204160, 0.00123963, 7.20775774, 0.99372441, 0.99671877, 0.49085365],
+                             [- 6.21001679, -0.00204033, 0.00123891, 7.20797646, 0.99372842, 0.99672076, 0.49086047],
+                             [- 6.21023350, -0.00203906, 0.00123818, 7.20819444, 0.99373242, 0.99672275, 0.49086727],
+                             [- 6.21044947, -0.00203780, 0.00123746, 7.20841167, 0.99373642, 0.99672474, 0.49087404],
+                             [- 6.21066470, -0.00203654, 0.00123673, 7.20862816, 0.99374042, 0.99672673, 0.49088079],
+                             [- 6.21087920, -0.00203528, 0.00123601, 7.20884392, 0.99374441, 0.99672871, 0.49088752],
+                             [- 6.21109295, -0.00203402, 0.00123529, 7.20905894, 0.99374839, 0.99673070, 0.49089423],
+                             [- 6.21130598, -0.00203276, 0.00123456, 7.20927322, 0.99375237, 0.99673268, 0.49090092],
+                             [- 6.21151828, -0.00203150, 0.00123384, 7.20948678, 0.99375635, 0.99673466, 0.49090759],
+                             [- 6.21172985, -0.00203024, 0.00123312, 7.20969960, 0.99376032, 0.99673663, 0.49091423],
+                             [- 6.21194069, -0.00202899, 0.00123240, 7.20991170, 0.99376428, 0.99673861, 0.49092085],
+                             [- 6.21215082, -0.00202774, 0.00123168, 7.21012308, 0.99376825, 0.99674058, 0.49092745],
+                             [- 6.21236022, -0.00202648, 0.00123096, 7.21033373, 0.99377220, 0.99674255, 0.49093403],
+                             [- 6.21256890, -0.00202523, 0.00123025, 7.21054367, 0.99377616, 0.99674452, 0.49094059],
+                             [- 6.21277687, -0.00202398, 0.00122953, 7.21075289, 0.99378010, 0.99674649, 0.49094712],
+                             [- 6.21298413, -0.00202274, 0.00122881, 7.21096139, 0.99378405, 0.99674845, 0.49095364],
+                             [- 6.21319067, -0.00202149, 0.00122809, 7.21116918, 0.99378798, 0.99675042, 0.49096013],
+                             [- 6.21339651, -0.00202025, 0.00122738, 7.21137627, 0.99379192, 0.99675238, 0.49096661],
+                             [- 6.21360164, -0.00201900, 0.00122666, 7.21158264, 0.99379585, 0.99675434, 0.49097306],
+                             [- 6.21380607, -0.00201776, 0.00122595, 7.21178831, 0.99379977, 0.99675629, 0.49097950],
+                             [- 6.21400979, -0.00201652, 0.00122523, 7.21199328, 0.99380369, 0.99675825, 0.49098591],
+                             [- 6.21421282, -0.00201528, 0.00122452, 7.21219754, 0.99380761, 0.99676020, 0.49099230],
+                             [- 6.21441515, -0.00201404, 0.00122381, 7.21240111, 0.99381152, 0.99676215, 0.49099867],
+                             [- 6.21461678, -0.00201280, 0.00122310, 7.21260398, 0.99381543, 0.99676410, 0.49100502],
+                             [- 6.21481773, -0.00201157, 0.00122239, 7.21280616, 0.99381933, 0.99676605, 0.49101135],
+                             [- 6.21501798, -0.00201033, 0.00122167, 7.21300765, 0.99382323, 0.99676799, 0.49101767],
+                             [- 6.21521754, -0.00200910, 0.00122096, 7.21320844, 0.99382712, 0.99676994, 0.49102395],
+                             [- 6.21541642, -0.00200787, 0.00122026, 7.21340855, 0.99383101, 0.99677188, 0.49103022],
+                             [- 6.21561461, -0.00200664, 0.00121955, 7.21360798, 0.99383489, 0.99677382, 0.49103647],
+                             [- 6.21581213, -0.00200541, 0.00121884, 7.21380672, 0.99383877, 0.99677575, 0.49104269],
+                             [- 6.21600896, -0.00200418, 0.00121813, 7.21400478, 0.99384265, 0.99677769, 0.49104891],
+                             [- 6.21620512, -0.00200295, 0.00121742, 7.21420217, 0.99384652, 0.99677962, 0.49105509],
+                             [- 6.21640060, -0.00200173, 0.00121672, 7.21439887, 0.99385038, 0.99678156, 0.49106126],
+                             [- 6.21659541, -0.00200050, 0.00121601, 7.21459491, 0.99385424, 0.99678349, 0.49106741],
+                             [- 6.21678955, -0.00199928, 0.00121531, 7.21479027, 0.99385810, 0.99678541, 0.49107353],
+                             [- 6.21698302, -0.00199806, 0.00121460, 7.21498497, 0.99386195, 0.99678734, 0.49107964],
+                             [- 6.21717583, -0.00199684, 0.00121390, 7.21517899, 0.99386580, 0.99678926, 0.49108574],
+                             [- 6.21736797, -0.00199562, 0.00121320, 7.21537235, 0.99386965, 0.99679119, 0.49109180],
+                             [- 6.21755945, -0.00199440, 0.00121249, 7.21556505, 0.99387349, 0.99679311, 0.49109786],
+                             [- 6.21775028, -0.00199319, 0.00121179, 7.21575709, 0.99387732, 0.99679502, 0.49110388],
+                             [- 6.21794044, -0.00199197, 0.00121109, 7.21594847, 0.99388115, 0.99679694, 0.49110989],
+                             [- 6.21812995, -0.00199076, 0.00121039, 7.21613919, 0.99388498, 0.99679885, 0.49111588],
+                             [- 6.21831881, -0.00198955, 0.00120969, 7.21632926, 0.99388880, 0.99680077, 0.49112186],
+                             [- 6.21850702, -0.00198833, 0.00120899, 7.21651868, 0.99389261, 0.99680268, 0.49112781],
+                             [- 6.21869457, -0.00198712, 0.00120829, 7.21670745, 0.99389643, 0.99680459, 0.49113374],
+                             [- 6.21888149, -0.00198592, 0.00120759, 7.21689557, 0.99390024, 0.99680649, 0.49113965],
+                             [- 6.21906775, -0.00198471, 0.00120689, 7.21708304, 0.99390404, 0.99680840, 0.49114555],
+                             [- 6.21925338, -0.00198350, 0.00120620, 7.21726987, 0.99390784, 0.99681030, 0.49115142],
+                             [- 6.21943836, -0.00198230, 0.00120550, 7.21745606, 0.99391163, 0.99681220, 0.49115728],
+                             [- 6.21962271, -0.00198110, 0.00120481, 7.21764161, 0.99391542, 0.99681410, 0.49116312],
+                             [- 6.21980642, -0.00197989, 0.00120411, 7.21782653, 0.99391921, 0.99681600, 0.49116895],
+                             [- 6.21998950, -0.00197869, 0.00120342, 7.21801081, 0.99392299, 0.99681789, 0.49117474],
+                             [- 6.22017194, -0.00197749, 0.00120272, 7.21819445, 0.99392677, 0.99681979, 0.49118052],
+                             [- 6.22035376, -0.00197630, 0.00120203, 7.21837746, 0.99393054, 0.99682168, 0.49118629],
+                             [- 6.22053495, -0.00197510, 0.00120134, 7.21855985, 0.99393431, 0.99682357, 0.49119203],
+                             [- 6.22071551, -0.00197390, 0.00120064, 7.21874161, 0.99393808, 0.99682545, 0.49119776],
+                             [- 6.22089545, -0.00197271, 0.00119995, 7.21892274, 0.99394184, 0.99682734, 0.49120347],
+                             [- 6.22107477, -0.00197152, 0.00119926, 7.21910325, 0.99394559, 0.99682922, 0.49120916],
+                             [- 6.22125347, -0.00197032, 0.00119857, 7.21928314, 0.99394935, 0.99683111, 0.49121482],
+                             [- 6.22143155, -0.00196913, 0.00119788, 7.21946242, 0.99395309, 0.99683299, 0.49122047],
+                             [- 6.22160902, -0.00196794, 0.00119719, 7.21964107, 0.99395684, 0.99683486, 0.49122611],
+                             [- 6.22178587, -0.00196676, 0.00119650, 7.21981911, 0.99396058, 0.99683674, 0.49123173],
+                             [- 6.22196211, -0.00196557, 0.00119582, 7.21999654, 0.99396431, 0.99683861, 0.49123732],
+                             [- 6.22213774, -0.00196438, 0.00119513, 7.22017336, 0.99396804, 0.99684049, 0.49124290],
+                             [- 6.22231277, -0.00196320, 0.00119444, 7.22034957, 0.99397177, 0.99684236, 0.49124846],
+                             [- 6.22248719, -0.00196202, 0.00119376, 7.22052517, 0.99397549, 0.99684423, 0.49125400],
+                             [- 6.22266101, -0.00196083, 0.00119307, 7.22070017, 0.99397920, 0.99684609, 0.49125953],
+                             [- 6.22283422, -0.00195965, 0.00119239, 7.22087457, 0.99398292, 0.99684796, 0.49126504],
+                             [- 6.22300684, -0.00195848, 0.00119170, 7.22104836, 0.99398663, 0.99684982, 0.49127053],
+                             [- 6.22317886, -0.00195730, 0.00119102, 7.22122156, 0.99399033, 0.99685168, 0.49127600],
+                             [- 6.22335028, -0.00195612, 0.00119034, 7.22139416, 0.99399403, 0.99685354, 0.49128145],
+                             [- 6.22352111, -0.00195495, 0.00118965, 7.22156617, 0.99399773, 0.99685540, 0.49128689],
+                             [- 6.22369135, -0.00195377, 0.00118897, 7.22173758, 0.99400142, 0.99685726, 0.49129231],
+                             [- 6.22386100, -0.00195260, 0.00118829, 7.22190841, 0.99400511, 0.99685911, 0.49129771],
+                             [- 6.22403007, -0.00195143, 0.00118761, 7.22207864, 0.99400879, 0.99686096, 0.49130310],
+                             [- 6.22419854, -0.00195026, 0.00118693, 7.22224829, 0.99401247, 0.99686281, 0.49130846],
+                             [- 6.22436644, -0.00194909, 0.00118625, 7.22241735, 0.99401615, 0.99686466, 0.49131381],
+                             [- 6.22453375, -0.00194792, 0.00118557, 7.22258583, 0.99401982, 0.99686651, 0.49131914],
+                             [- 6.22470048, -0.00194675, 0.00118490, 7.22275373, 0.99402348, 0.99686835, 0.49132446],
+                             [- 6.22486664, -0.00194559, 0.00118422, 7.22292105, 0.99402715, 0.99687019, 0.49132975],
+                             [- 6.22503222, -0.00194442, 0.00118354, 7.22308780, 0.99403081, 0.99687204, 0.49133503],
+                             [- 6.22519722, -0.00194326, 0.00118287, 7.22325396, 0.99403446, 0.99687387, 0.49134030],
+                             [- 6.22536166, -0.00194210, 0.00118219, 7.22341956, 0.99403811, 0.99687571, 0.49134554],
+                             [- 6.22552552, -0.00194094, 0.00118152, 7.22358458, 0.99404176, 0.99687755, 0.49135077],
+                             [- 6.22568881, -0.00193978, 0.00118084, 7.22374904, 0.99404540, 0.99687938, 0.49135598],
+                             [- 6.22585154, -0.00193862, 0.00118017, 7.22391292, 0.99404904, 0.99688121, 0.49136117],
+                             [- 6.22601370, -0.00193746, 0.00117950, 7.22407624, 0.99405267, 0.99688304, 0.49136635],
+                             [- 6.22617531, -0.00193631, 0.00117882, 7.22423900, 0.99405630, 0.99688487, 0.49137152],
+                             [- 6.22633635, -0.00193515, 0.00117815, 7.22440119, 0.99405992, 0.99688670, 0.49137666],
+                             [- 6.22649683, -0.00193400, 0.00117748, 7.22456283, 0.99406354, 0.99688852, 0.49138179],
+                             [- 6.22665675, -0.00193285, 0.00117681, 7.22472390, 0.99406716, 0.99689034, 0.49138690],
+                             [- 6.22681612, -0.00193170, 0.00117614, 7.22488442, 0.99407077, 0.99689216, 0.49139199],
+                             [- 6.22697494, -0.00193055, 0.00117547, 7.22504439, 0.99407438, 0.99689398, 0.49139707],
+                             [- 6.22713320, -0.00192940, 0.00117480, 7.22520380, 0.99407799, 0.99689580, 0.49140214],
+                             [- 6.22729092, -0.00192825, 0.00117413, 7.22536266, 0.99408159, 0.99689762, 0.49140718],
+                             [- 6.22744808, -0.00192711, 0.00117346, 7.22552098, 0.99408519, 0.99689943, 0.49141221],
+                             [- 6.22760470, -0.00192596, 0.00117280, 7.22567874, 0.99408878, 0.99690124, 0.49141723],
+                             [- 6.22776078, -0.00192482, 0.00117213, 7.22583596, 0.99409237, 0.99690305, 0.49142222],
+                             [- 6.22791631, -0.00192368, 0.00117147, 7.22599264, 0.99409595, 0.99690486, 0.49142719],
+                             [- 6.22807131, -0.00192253, 0.00117080, 7.22614877, 0.99409953, 0.99690667, 0.49143216],
+                             [- 6.22822576, -0.00192139, 0.00117014, 7.22630437, 0.99410311, 0.99690847, 0.49143711],
+                             [- 6.22837968, -0.00192026, 0.00116947, 7.22645942, 0.99410668, 0.99691027, 0.49144204],
+                             [- 6.22853306, -0.00191912, 0.00116881, 7.22661394, 0.99411025, 0.99691207, 0.49144696],
+                             [- 6.22868591, -0.00191798, 0.00116815, 7.22676793, 0.99411381, 0.99691387, 0.49145186],
+                             [- 6.22883823, -0.00191685, 0.00116748, 7.22692138, 0.99411737, 0.99691567, 0.49145674],
+                             [- 6.22899002, -0.00191571, 0.00116682, 7.22707430, 0.99412093, 0.99691747, 0.49146161],
+                             [- 6.22914128, -0.00191458, 0.00116616, 7.22722670, 0.99412448, 0.99691926, 0.49146647],
+                             [- 6.22929201, -0.00191345, 0.00116550, 7.22737856, 0.99412803, 0.99692105, 0.49147130],
+                             [- 6.22944222, -0.00191232, 0.00116484, 7.22752990, 0.99413157, 0.99692284, 0.49147613],
+                             [- 6.22959190, -0.00191119, 0.00116418, 7.22768071, 0.99413511, 0.99692463, 0.49148093],
+                             [- 6.22974107, -0.00191006, 0.00116352, 7.22783101, 0.99413865, 0.99692642, 0.49148571],
+                             [- 6.22988971, -0.00190893, 0.00116286, 7.22798078, 0.99414218, 0.99692820, 0.49149049],
+                             [- 6.23003784, -0.00190781, 0.00116221, 7.22813003, 0.99414571, 0.99692998, 0.49149525],
+                             [- 6.23018545, -0.00190669, 0.00116155, 7.22827877, 0.99414924, 0.99693176, 0.49149999],
+                             [- 6.23033255, -0.00190556, 0.00116089, 7.22842699, 0.99415276, 0.99693354, 0.49150472],
+                             [- 6.23047913, -0.00190444, 0.00116024, 7.22857469, 0.99415627, 0.99693532, 0.49150944],
+                             [- 6.23062521, -0.00190332, 0.00115958, 7.22872189, 0.99415978, 0.99693710, 0.49151413],
+                             [- 6.23077077, -0.00190220, 0.00115893, 7.22886857, 0.99416329, 0.99693887, 0.49151881],
+                             [- 6.23091583, -0.00190108, 0.00115828, 7.22901475, 0.99416680, 0.99694064, 0.49152348],
+                             [- 6.23106038, -0.00189996, 0.00115762, 7.22916042, 0.99417030, 0.99694241, 0.49152813],
+                             [- 6.23120443, -0.00189885, 0.00115697, 7.22930558, 0.99417379, 0.99694418, 0.49153277],
+                             [- 6.23134798, -0.00189773, 0.00115632, 7.22945024, 0.99417729, 0.99694595, 0.49153739],
+                             [- 6.23149102, -0.00189662, 0.00115567, 7.22959440, 0.99418078, 0.99694772, 0.49154200],
+                             [- 6.23163357, -0.00189551, 0.00115501, 7.22973806, 0.99418426, 0.99694948, 0.49154659],
+                             [- 6.23177562, -0.00189439, 0.00115436, 7.22988122, 0.99418774, 0.99695124, 0.49155116],
+                             [- 6.23191717, -0.00189328, 0.00115371, 7.23002389, 0.99419122, 0.99695300, 0.49155572],
+                             [- 6.23205823, -0.00189218, 0.00115307, 7.23016606, 0.99419469, 0.99695476, 0.49156028],
+                             [- 6.23219880, -0.00189107, 0.00115242, 7.23030773, 0.99419816, 0.99695652, 0.49156481],
+                             [- 6.23233888, -0.00188996, 0.00115177, 7.23044891, 0.99420163, 0.99695827, 0.49156932],
+                             [- 6.23247846, -0.00188886, 0.00115112, 7.23058961, 0.99420509, 0.99696002, 0.49157383],
+                             [- 6.23261756, -0.00188775, 0.00115047, 7.23072981, 0.99420855, 0.99696177, 0.49157832],
+                             [- 6.23275618, -0.00188665, 0.00114983, 7.23086953, 0.99421200, 0.99696352, 0.49158279],
+                             [- 6.23289431, -0.00188555, 0.00114918, 7.23100876, 0.99421545, 0.99696527, 0.49158725],
+                             [- 6.23303196, -0.00188444, 0.00114854, 7.23114751, 0.99421890, 0.99696702, 0.49159170],
+                             [- 6.23316912, -0.00188334, 0.00114789, 7.23128578, 0.99422234, 0.99696876, 0.49159612],
+                             [- 6.23330581, -0.00188225, 0.00114725, 7.23142357, 0.99422578, 0.99697050, 0.49160053],
+                             [- 6.23344202, -0.00188115, 0.00114661, 7.23156087, 0.99422921, 0.99697225, 0.49160494],
+                             [- 6.23357776, -0.00188005, 0.00114596, 7.23169771, 0.99423264, 0.99697398, 0.49160932],
+                             [- 6.23371302, -0.00187896, 0.00114532, 7.23183406, 0.99423607, 0.99697572, 0.49161370],
+                             [- 6.23384781, -0.00187786, 0.00114468, 7.23196994, 0.99423949, 0.99697746, 0.49161806],
+                             [- 6.23398212, -0.00187677, 0.00114404, 7.23210535, 0.99424291, 0.99697919, 0.49162241],
+                             [- 6.23411597, -0.00187568, 0.00114340, 7.23224029, 0.99424633, 0.99698092, 0.49162674],
+                             [- 6.23424935, -0.00187459, 0.00114276, 7.23237476, 0.99424974, 0.99698265, 0.49163105],
+                             [- 6.23438226, -0.00187350, 0.00114212, 7.23250876, 0.99425315, 0.99698438, 0.49163535],
+                             [- 6.23451471, -0.00187241, 0.00114148, 7.23264230, 0.99425655, 0.99698611, 0.49163964],
+                             [- 6.23464669, -0.00187132, 0.00114084, 7.23277537, 0.99425995, 0.99698783, 0.49164392],
+                             [- 6.23477821, -0.00187024, 0.00114021, 7.23290797, 0.99426335, 0.99698956, 0.49164818],
+                             [- 6.23490927, -0.00186915, 0.00113957, 7.23304012, 0.99426674, 0.99699128, 0.49165242],
+                             [- 6.23503988, -0.00186807, 0.00113893, 7.23317181, 0.99427013, 0.99699300, 0.49165666],
+                             [- 6.23517002, -0.00186698, 0.00113830, 7.23330304, 0.99427352, 0.99699472, 0.49166087],
+                             [- 6.23529971, -0.00186590, 0.00113766, 7.23343381, 0.99427690, 0.99699644, 0.49166508],
+                             [- 6.23542895, -0.00186482, 0.00113703, 7.23356413, 0.99428028, 0.99699815, 0.49166927],
+                             [- 6.23555773, -0.00186374, 0.00113639, 7.23369399, 0.99428365, 0.99699986, 0.49167345],
+                             [- 6.23568606, -0.00186267, 0.00113576, 7.23382340, 0.99428702, 0.99700157, 0.49167762],
+                             [- 6.23581395, -0.00186159, 0.00113513, 7.23395236, 0.99429039, 0.99700328, 0.49168176],
+                             [- 6.23594138, -0.00186051, 0.00113449, 7.23408087, 0.99429375, 0.99700499, 0.49168591],
+                             [- 6.23606837, -0.00185944, 0.00113386, 7.23420893, 0.99429711, 0.99700670, 0.49169003],
+                             [- 6.23619491, -0.00185836, 0.00113323, 7.23433655, 0.99430047, 0.99700840, 0.49169415],
+                             [- 6.23632102, -0.00185729, 0.00113260, 7.23446372, 0.99430382, 0.99701011, 0.49169823],
+                             [- 6.23644667, -0.00185622, 0.00113197, 7.23459045, 0.99430717, 0.99701181, 0.49170232],
+                             [- 6.23657189, -0.00185515, 0.00113134, 7.23471674, 0.99431051, 0.99701351, 0.49170640],
+                             [- 6.23669667, -0.00185408, 0.00113071, 7.23484259, 0.99431385, 0.99701521, 0.49171044],
+                             [- 6.23682101, -0.00185301, 0.00113009, 7.23496800, 0.99431719, 0.99701690, 0.49171449],
+                             [- 6.23694492, -0.00185195, 0.00112946, 7.23509297, 0.99432052, 0.99701860, 0.49171853],
+                             [- 6.23706839, -0.00185088, 0.00112883, 7.23521751, 0.99432385, 0.99702029, 0.49172254],
+                             [- 6.23719143, -0.00184981, 0.00112820, 7.23534161, 0.99432718, 0.99702198, 0.49172655],
+                             [- 6.23731403, -0.00184875, 0.00112758, 7.23546528, 0.99433050, 0.99702367, 0.49173054],
+                             [- 6.23743621, -0.00184769, 0.00112695, 7.23558852, 0.99433382, 0.99702536, 0.49173452],
+                             [- 6.23755795, -0.00184663, 0.00112633, 7.23571133, 0.99433713, 0.99702705, 0.49173848],
+                             [- 6.23767927, -0.00184557, 0.00112570, 7.23583371, 0.99434044, 0.99702873, 0.49174243],
+                             [- 6.23780017, -0.00184451, 0.00112508, 7.23595566, 0.99434375, 0.99703041, 0.49174639],
+                             [- 6.23792064, -0.00184345, 0.00112446, 7.23607719, 0.99434706, 0.99703209, 0.49175031],
+                             [- 6.23804068, -0.00184239, 0.00112383, 7.23619829, 0.99435036, 0.99703377, 0.49175422],
+                             [- 6.23816031, -0.00184134, 0.00112321, 7.23631897, 0.99435365, 0.99703545, 0.49175813],
+                             [- 6.23827952, -0.00184028, 0.00112259, 7.23643923, 0.99435695, 0.99703713, 0.49176201],
+                             [- 6.23839830, -0.00183923, 0.00112197, 7.23655907, 0.99436024, 0.99703880, 0.49176589],
+                             [- 6.23851667, -0.00183817, 0.00112135, 7.23667850, 0.99436352, 0.99704048, 0.49176975],
+                             [- 6.23863462, -0.00183712, 0.00112073, 7.23679750, 0.99436680, 0.99704215, 0.49177361],
+                             [- 6.23875216, -0.00183607, 0.00112011, 7.23691609, 0.99437008, 0.99704382, 0.49177744],
+                             [- 6.23886929, -0.00183502, 0.00111949, 7.23703427, 0.99437336, 0.99704548, 0.49178127],
+                             [- 6.23898600, -0.00183398, 0.00111887, 7.23715203, 0.99437663, 0.99704715, 0.49178508],
+                             [- 6.23910231, -0.00183293, 0.00111826, 7.23726938, 0.99437990, 0.99704881, 0.49178889],
+                             [- 6.23921820, -0.00183188, 0.00111764, 7.23738632, 0.99438316, 0.99705048, 0.49179268],
+                             [- 6.23933369, -0.00183084, 0.00111702, 7.23750286, 0.99438642, 0.99705214, 0.49179645],
+                             [- 6.23944877, -0.00182979, 0.00111641, 7.23761898, 0.99438968, 0.99705380, 0.49180022],
+                             [- 6.23956345, -0.00182875, 0.00111579, 7.23773470, 0.99439293, 0.99705546, 0.49180397],
+                             [- 6.23967773, -0.00182771, 0.00111518, 7.23785002, 0.99439618, 0.99705711, 0.49180771],
+                             [- 6.23979160, -0.00182667, 0.00111456, 7.23796493, 0.99439943, 0.99705877, 0.49181144],
+                             [- 6.23990507, -0.00182563, 0.00111395, 7.23807944, 0.99440267, 0.99706042, 0.49181516],
+                             [- 6.24001814, -0.00182459, 0.00111334, 7.23819355, 0.99440591, 0.99706207, 0.49181886],
+                             [- 6.24013082, -0.00182355, 0.00111273, 7.23830726, 0.99440915, 0.99706372, 0.49182255],
+                             [- 6.24024309, -0.00182251, 0.00111211, 7.23842058, 0.99441238, 0.99706537, 0.49182623],
+                             [- 6.24035498, -0.00182148, 0.00111150, 7.23853350, 0.99441561, 0.99706702, 0.49182990],
+                             [- 6.24046647, -0.00182045, 0.00111089, 7.23864602, 0.99441884, 0.99706866, 0.49183355],
+                             [- 6.24057756, -0.00181941, 0.00111028, 7.23875815, 0.99442206, 0.99707031, 0.49183719],
+                             [- 6.24068827, -0.00181838, 0.00110967, 7.23886989, 0.99442528, 0.99707195, 0.49184083],
+                             [- 6.24079858, -0.00181735, 0.00110906, 7.23898123, 0.99442849, 0.99707359, 0.49184446],
+                             [- 6.24090851, -0.00181632, 0.00110846, 7.23909219, 0.99443170, 0.99707523, 0.49184806],
+                             [- 6.24101805, -0.00181529, 0.00110785, 7.23920276, 0.99443491, 0.99707686, 0.49185165],
+                             [- 6.24112720, -0.00181426, 0.00110724, 7.23931294, 0.99443812, 0.99707850, 0.49185524],
+                             [- 6.24123597, -0.00181324, 0.00110663, 7.23942274, 0.99444132, 0.99708013, 0.49185881],
+                             [- 6.24134436, -0.00181221, 0.00110603, 7.23953215, 0.99444451, 0.99708176, 0.49186237],
+                             [- 6.24145237, -0.00181118, 0.00110542, 7.23964118, 0.99444771, 0.99708339, 0.49186593],
+                             [- 6.24155999, -0.00181016, 0.00110482, 7.23974983, 0.99445090, 0.99708502, 0.49186947],
+                             [- 6.24166723, -0.00180914, 0.00110421, 7.23985810, 0.99445408, 0.99708665, 0.49187299],
+                             [- 6.24177410, -0.00180812, 0.00110361, 7.23996598, 0.99445727, 0.99708828, 0.49187651],
+                             [- 6.24188059, -0.00180710, 0.00110300, 7.24007349, 0.99446045, 0.99708990, 0.49188001],
+                             [- 6.24198671, -0.00180608, 0.00110240, 7.24018063, 0.99446363, 0.99709152, 0.49188351],
+                             [- 6.24209245, -0.00180506, 0.00110180, 7.24028739, 0.99446680, 0.99709314, 0.49188699],
+                             [- 6.24219781, -0.00180404, 0.00110120, 7.24039377, 0.99446997, 0.99709476, 0.49189046],
+                             [- 6.24230281, -0.00180302, 0.00110060, 7.24049978, 0.99447313, 0.99709638, 0.49189392],
+                             [- 6.24240743, -0.00180201, 0.00110000, 7.24060543, 0.99447630, 0.99709800, 0.49189737],
+                             [- 6.24251169, -0.00180100, 0.00109940, 7.24071070, 0.99447946, 0.99709961, 0.49190081],
+                             [- 6.24261558, -0.00179998, 0.00109880, 7.24081560, 0.99448261, 0.99710122, 0.49190424],
+                             [- 6.24271910, -0.00179897, 0.00109820, 7.24092013, 0.99448577, 0.99710283, 0.49190765],
+                             [- 6.24282226, -0.00179796, 0.00109760, 7.24102430, 0.99448891, 0.99710444, 0.49191105],
+                             [- 6.24292505, -0.00179695, 0.00109700, 7.24112810, 0.99449206, 0.99710605, 0.49191444],
+                             [- 6.24302748, -0.00179594, 0.00109640, 7.24123154, 0.99449520, 0.99710766, 0.49191782],
+                             [- 6.24312955, -0.00179493, 0.00109581, 7.24133462, 0.99449834, 0.99710926, 0.49192119],
+                             [- 6.24323126, -0.00179392, 0.00109521, 7.24143733, 0.99450148, 0.99711087, 0.49192455],
+                             [- 6.24333261, -0.00179292, 0.00109461, 7.24153969, 0.99450461, 0.99711247, 0.49192789],
+                             [- 6.24343360, -0.00179191, 0.00109402, 7.24164168, 0.99450774, 0.99711407, 0.49193123],
+                             [- 6.24353423, -0.00179091, 0.00109342, 7.24174332, 0.99451086, 0.99711567, 0.49193456],
+                             [- 6.24363451, -0.00178991, 0.00109283, 7.24184460, 0.99451399, 0.99711726, 0.49193787],
+                             [- 6.24373444, -0.00178891, 0.00109224, 7.24194553, 0.99451711, 0.99711886, 0.49194119],
+                             [- 6.24383401, -0.00178790, 0.00109164, 7.24204610, 0.99452022, 0.99712045, 0.49194448],
+                             [- 6.24393323, -0.00178690, 0.00109105, 7.24214632, 0.99452333, 0.99712204, 0.49194776],
+                             [- 6.24403210, -0.00178591, 0.00109046, 7.24224619, 0.99452644, 0.99712364, 0.49195103],
+                             [- 6.24413062, -0.00178491, 0.00108987, 7.24234571, 0.99452955, 0.99712522, 0.49195429],
+                             [- 6.24422879, -0.00178391, 0.00108928, 7.24244488, 0.99453265, 0.99712681, 0.49195755],
+                             [- 6.24432661, -0.00178292, 0.00108869, 7.24254370, 0.99453575, 0.99712840, 0.49196079],
+                             [- 6.24442409, -0.00178192, 0.00108810, 7.24264217, 0.99453884, 0.99712998, 0.49196402],
+                             [- 6.24452123, -0.00178093, 0.00108751, 7.24274030, 0.99454194, 0.99713157, 0.49196723],
+                             [- 6.24461802, -0.00177993, 0.00108692, 7.24283808, 0.99454502, 0.99713315, 0.49197045],
+                             [- 6.24471446, -0.00177894, 0.00108633, 7.24293552, 0.99454811, 0.99713473, 0.49197365],
+                             [- 6.24481057, -0.00177795, 0.00108574, 7.24303262, 0.99455119, 0.99713630, 0.49197684],
+                             [- 6.24490634, -0.00177696, 0.00108516, 7.24312938, 0.99455427, 0.99713788, 0.49198002],
+                             [- 6.24500177, -0.00177597, 0.00108457, 7.24322579, 0.99455735, 0.99713946, 0.49198318],
+                             [- 6.24509686, -0.00177499, 0.00108398, 7.24332187, 0.99456042, 0.99714103, 0.49198634],
+                             [- 6.24519161, -0.00177400, 0.00108340, 7.24341761, 0.99456349, 0.99714260, 0.49198949],
+                             [- 6.24528603, -0.00177301, 0.00108281, 7.24351302, 0.99456655, 0.99714417, 0.49199263],
+                             [- 6.24538012, -0.00177203, 0.00108223, 7.24360809, 0.99456961, 0.99714574, 0.49199575],
+                             [- 6.24547387, -0.00177105, 0.00108164, 7.24370283, 0.99457267, 0.99714731, 0.49199887],
+                             [- 6.24556729, -0.00177006, 0.00108106, 7.24379723, 0.99457573, 0.99714887, 0.49200198],
+                             [- 6.24566038, -0.00176908, 0.00108048, 7.24389130, 0.99457878, 0.99715044, 0.49200507],
+                             [- 6.24575314, -0.00176810, 0.00107990, 7.24398504, 0.99458183, 0.99715200, 0.49200817],
+                             [- 6.24584557, -0.00176712, 0.00107931, 7.24407845, 0.99458488, 0.99715356, 0.49201123],
+                             [- 6.24593768, -0.00176614, 0.00107873, 7.24417153, 0.99458792, 0.99715512, 0.49201431],
+                             [- 6.24602946, -0.00176517, 0.00107815, 7.24426429, 0.99459096, 0.99715668, 0.49201737],
+                             [- 6.24612091, -0.00176419, 0.00107757, 7.24435672, 0.99459400, 0.99715824, 0.49202041],
+                             [- 6.24621204, -0.00176321, 0.00107699, 7.24444883, 0.99459703, 0.99715979, 0.49202344],
+                             [- 6.24630285, -0.00176224, 0.00107641, 7.24454061, 0.99460006, 0.99716135, 0.49202647],
+                             [- 6.24639333, -0.00176127, 0.00107584, 7.24463206, 0.99460309, 0.99716290, 0.49202949],
+                             [- 6.24648350, -0.00176029, 0.00107526, 7.24472320, 0.99460611, 0.99716445, 0.49203250],
+                             [- 6.24657334, -0.00175932, 0.00107468, 7.24481402, 0.99460913, 0.99716600, 0.49203550],
+                             [- 6.24666287, -0.00175835, 0.00107410, 7.24490451, 0.99461215, 0.99716755, 0.49203848],
+                             [- 6.24675208, -0.00175738, 0.00107353, 7.24499469, 0.99461516, 0.99716909, 0.49204146],
+                             [- 6.24684097, -0.00175641, 0.00107295, 7.24508455, 0.99461817, 0.99717064, 0.49204443],
+                             [- 6.24692955, -0.00175545, 0.00107238, 7.24517410, 0.99462118, 0.99717218, 0.49204739],
+                             [- 6.24701781, -0.00175448, 0.00107180, 7.24526333, 0.99462418, 0.99717372, 0.49205033],
+                             [- 6.24710576, -0.00175351, 0.00107123, 7.24535225, 0.99462718, 0.99717526, 0.49205328],
+                             [- 6.24719340, -0.00175255, 0.00107065, 7.24544085, 0.99463018, 0.99717680, 0.49205621],
+                             [- 6.24728073, -0.00175158, 0.00107008, 7.24552914, 0.99463317, 0.99717834, 0.49205913],
+                             [- 6.24736775, -0.00175062, 0.00106951, 7.24561712, 0.99463617, 0.99717987, 0.49206204],
+                             [- 6.24745446, -0.00174966, 0.00106893, 7.24570479, 0.99463915, 0.99718141, 0.49206494],
+                             [- 6.24754086, -0.00174870, 0.00106836, 7.24579216, 0.99464214, 0.99718294, 0.49206783],
+                             [- 6.24762695, -0.00174774, 0.00106779, 7.24587921, 0.99464512, 0.99718447, 0.49207072],
+                             [- 6.24771274, -0.00174678, 0.00106722, 7.24596596, 0.99464810, 0.99718600, 0.49207359],
+                             [- 6.24779823, -0.00174582, 0.00106665, 7.24605241, 0.99465108, 0.99718753, 0.49207645],
+                             [- 6.24788341, -0.00174487, 0.00106608, 7.24613854, 0.99465405, 0.99718905, 0.49207931],
+                             [- 6.24796829, -0.00174391, 0.00106551, 7.24622438, 0.99465702, 0.99719058, 0.49208216],
+                             [- 6.24805287, -0.00174296, 0.00106494, 7.24630991, 0.99465998, 0.99719210, 0.49208499],
+                             [- 6.24813715, -0.00174200, 0.00106438, 7.24639515, 0.99466295, 0.99719362, 0.49208783],
+                             [- 6.24822113, -0.00174105, 0.00106381, 7.24648008, 0.99466591, 0.99719514, 0.49209064],
+                             [- 6.24830481, -0.00174010, 0.00106324, 7.24656471, 0.99466886, 0.99719666, 0.49209345],
+                             [- 6.24838819, -0.00173915, 0.00106267, 7.24664905, 0.99467182, 0.99719818, 0.49209625],
+                             [- 6.24847128, -0.00173819, 0.00106211, 7.24673309, 0.99467477, 0.99719970, 0.49209904],
+                             [- 6.24855407, -0.00173725, 0.00106154, 7.24681683, 0.99467771, 0.99720121, 0.49210182],
+                             [- 6.24863657, -0.00173630, 0.00106098, 7.24690027, 0.99468066, 0.99720272, 0.49210459],
+                             [- 6.24871878, -0.00173535, 0.00106041, 7.24698343, 0.99468360, 0.99720424, 0.49210735],
+                             [- 6.24880069, -0.00173440, 0.00105985, 7.24706629, 0.99468654, 0.99720575, 0.49211010],
+                             [- 6.24888231, -0.00173346, 0.00105929, 7.24714886, 0.99468947, 0.99720725, 0.49211286],
+                             [- 6.24896365, -0.00173251, 0.00105872, 7.24723113, 0.99469240, 0.99720876, 0.49211559],
+                             [- 6.24904469, -0.00173157, 0.00105816, 7.24731312, 0.99469533, 0.99721027, 0.49211832],
+                             [- 6.24912545, -0.00173063, 0.00105760, 7.24739482, 0.99469826, 0.99721177, 0.49212104],
+                             [- 6.24920591, -0.00172969, 0.00105704, 7.24747623, 0.99470118, 0.99721327, 0.49212375],
+                             [- 6.24928610, -0.00172875, 0.00105648, 7.24755735, 0.99470410, 0.99721478, 0.49212645],
+                             [- 6.24936599, -0.00172781, 0.00105592, 7.24763819, 0.99470702, 0.99721628, 0.49212915],
+                             [- 6.24944561, -0.00172687, 0.00105536, 7.24771874, 0.99470993, 0.99721777, 0.49213183],
+                             [- 6.24952494, -0.00172593, 0.00105480, 7.24779901, 0.99471284, 0.99721927, 0.49213451],
+                             [- 6.24960399, -0.00172499, 0.00105424, 7.24787899, 0.99471575, 0.99722077, 0.49213717],
+                             [- 6.24968275, -0.00172406, 0.00105368, 7.24795870, 0.99471865, 0.99722226, 0.49213983],
+                             [- 6.24976124, -0.00172312, 0.00105312, 7.24803812, 0.99472155, 0.99722375, 0.49214248],
+                             [- 6.24983945, -0.00172219, 0.00105257, 7.24811726, 0.99472445, 0.99722524, 0.49214512],
+                             [- 6.24991738, -0.00172126, 0.00105201, 7.24819612, 0.99472735, 0.99722673, 0.49214776],
+                             [- 6.24999503, -0.00172032, 0.00105145, 7.24827471, 0.99473024, 0.99722822, 0.49215038],
+                             [- 6.25007241, -0.00171939, 0.00105090, 7.24835302, 0.99473313, 0.99722971, 0.49215299],
+                             [- 6.25014951, -0.00171846, 0.00105034, 7.24843105, 0.99473601, 0.99723119, 0.49215561],
+                             [- 6.25022634, -0.00171753, 0.00104979, 7.24850880, 0.99473890, 0.99723268, 0.49215820],
+                             [- 6.25030289, -0.00171660, 0.00104923, 7.24858628, 0.99474178, 0.99723416, 0.49216079],
+                             [- 6.25037917, -0.00171568, 0.00104868, 7.24866349, 0.99474465, 0.99723564, 0.49216338],
+                             [- 6.25045518, -0.00171475, 0.00104813, 7.24874043, 0.99474753, 0.99723712, 0.49216595],
+                             [- 6.25053092, -0.00171382, 0.00104758, 7.24881709, 0.99475040, 0.99723860, 0.49216851],
+                             [- 6.25060639, -0.00171290, 0.00104702, 7.24889349, 0.99475327, 0.99724008, 0.49217106],
+                             [- 6.25068159, -0.00171198, 0.00104647, 7.24896961, 0.99475613, 0.99724155, 0.49217362],
+                             [- 6.25075652, -0.00171105, 0.00104592, 7.24904547, 0.99475899, 0.99724303, 0.49217616],
+                             [- 6.25083119, -0.00171013, 0.00104537, 7.24912106, 0.99476185, 0.99724450, 0.49217869],
+                             [- 6.25090559, -0.00170921, 0.00104482, 7.24919638, 0.99476471, 0.99724597, 0.49218121],
+                             [- 6.25097972, -0.00170829, 0.00104427, 7.24927143, 0.99476756, 0.99724744, 0.49218373],
+                             [- 6.25105359, -0.00170737, 0.00104372, 7.24934622, 0.99477041, 0.99724891, 0.49218624],
+                             [- 6.25112720, -0.00170645, 0.00104317, 7.24942075, 0.99477326, 0.99725037, 0.49218873],
+                             [- 6.25120055, -0.00170554, 0.00104262, 7.24949501, 0.99477610, 0.99725184, 0.49219122],
+                             [- 6.25127363, -0.00170462, 0.00104208, 7.24956901, 0.99477894, 0.99725330, 0.49219371],
+                             [- 6.25134646, -0.00170370, 0.00104153, 7.24964275, 0.99478178, 0.99725477, 0.49219618],
+                             [- 6.25141902, -0.00170279, 0.00104098, 7.24971623, 0.99478462, 0.99725623, 0.49219865],
+                             [- 6.25149133, -0.00170188, 0.00104044, 7.24978945, 0.99478745, 0.99725769, 0.49220112],
+                             [- 6.25156338, -0.00170096, 0.00103989, 7.24986241, 0.99479028, 0.99725915, 0.49220356],
+                             [- 6.25163517, -0.00170005, 0.00103935, 7.24993512, 0.99479311, 0.99726060, 0.49220600],
+                             [- 6.25170670, -0.00169914, 0.00103880, 7.25000756, 0.99479593, 0.99726206, 0.49220844],
+                             [- 6.25177798, -0.00169823, 0.00103826, 7.25007975, 0.99479875, 0.99726351, 0.49221087],
+                             [- 6.25184901, -0.00169732, 0.00103771, 7.25015169, 0.99480157, 0.99726496, 0.49221329],
+                             [- 6.25191978, -0.00169641, 0.00103717, 7.25022337, 0.99480438, 0.99726642, 0.49221570],
+                             [- 6.25199031, -0.00169551, 0.00103663, 7.25029480, 0.99480719, 0.99726787, 0.49221811],
+                             [- 6.25206057, -0.00169460, 0.00103609, 7.25036598, 0.99481000, 0.99726931, 0.49222050],
+                             [- 6.25213059, -0.00169369, 0.00103555, 7.25043690, 0.99481281, 0.99727076, 0.49222289],
+                             [- 6.25220036, -0.00169279, 0.00103500, 7.25050757, 0.99481561, 0.99727221, 0.49222527],
+                             [- 6.25226988, -0.00169189, 0.00103446, 7.25057800, 0.99481841, 0.99727365, 0.49222765],
+                             [- 6.25233916, -0.00169098, 0.00103392, 7.25064817, 0.99482121, 0.99727509, 0.49223001],
+                             [- 6.25240818, -0.00169008, 0.00103338, 7.25071810, 0.99482400, 0.99727653, 0.49223237],
+                             [- 6.25247696, -0.00168918, 0.00103285, 7.25078778, 0.99482680, 0.99727797, 0.49223472],
+                             [- 6.25254550, -0.00168828, 0.00103231, 7.25085722, 0.99482958, 0.99727941, 0.49223706],
+                             [- 6.25261379, -0.00168738, 0.00103177, 7.25092640, 0.99483237, 0.99728085, 0.49223939],
+                             [- 6.25268183, -0.00168648, 0.00103123, 7.25099535, 0.99483515, 0.99728229, 0.49224172],
+                             [- 6.25274963, -0.00168559, 0.00103069, 7.25106405, 0.99483793, 0.99728372, 0.49224404],
+                             [- 6.25281720, -0.00168469, 0.00103016, 7.25113251, 0.99484071, 0.99728515, 0.49224636],
+                             [- 6.25288452, -0.00168379, 0.00102962, 7.25120072, 0.99484348, 0.99728659, 0.49224866],
+                             [- 6.25295160, -0.00168290, 0.00102909, 7.25126870, 0.99484626, 0.99728802, 0.49225097],
+                             [- 6.25301844, -0.00168200, 0.00102855, 7.25133643, 0.99484902, 0.99728945, 0.49225325],
+                             [- 6.25308504, -0.00168111, 0.00102802, 7.25140393, 0.99485179, 0.99729087, 0.49225553],
+                             [- 6.25315140, -0.00168022, 0.00102748, 7.25147118, 0.99485455, 0.99729230, 0.49225780],
+                             [- 6.25321753, -0.00167933, 0.00102695, 7.25153820, 0.99485731, 0.99729372, 0.49226008],
+                             [- 6.25328342, -0.00167844, 0.00102641, 7.25160498, 0.99486007, 0.99729515, 0.49226233],
+                             [- 6.25334907, -0.00167755, 0.00102588, 7.25167153, 0.99486282, 0.99729657, 0.49226459],
+                             [- 6.25341450, -0.00167666, 0.00102535, 7.25173784, 0.99486558, 0.99729799, 0.49226684],
+                             [- 6.25347968, -0.00167577, 0.00102482, 7.25180391, 0.99486832, 0.99729941, 0.49226907],
+                             [- 6.25354464, -0.00167489, 0.00102429, 7.25186975, 0.99487107, 0.99730083, 0.49227131],
+                             [- 6.25360936, -0.00167400, 0.00102376, 7.25193536, 0.99487381, 0.99730224, 0.49227354],
+                             [- 6.25367385, -0.00167312, 0.00102323, 7.25200074, 0.99487655, 0.99730366, 0.49227575],
+                             [- 6.25373811, -0.00167223, 0.00102270, 7.25206588, 0.99487929, 0.99730507, 0.49227796],
+                             [- 6.25380215, -0.00167135, 0.00102217, 7.25213080, 0.99488202, 0.99730649, 0.49228016],
+                             [- 6.25386595, -0.00167047, 0.00102164, 7.25219548, 0.99488476, 0.99730790, 0.49228236],
+                             [- 6.25392952, -0.00166958, 0.00102111, 7.25225994, 0.99488749, 0.99730931, 0.49228455],
+                             [- 6.25399287, -0.00166870, 0.00102058, 7.25232417, 0.99489021, 0.99731072, 0.49228673],
+                             [- 6.25405599, -0.00166782, 0.00102005, 7.25238817, 0.99489294, 0.99731212, 0.49228892],
+                             [- 6.25411889, -0.00166694, 0.00101953, 7.25245194, 0.99489566, 0.99731353, 0.49229108],
+                             [- 6.25418156, -0.00166607, 0.00101900, 7.25251549, 0.99489837, 0.99731493, 0.49229324],
+                             [- 6.25424401, -0.00166519, 0.00101847, 7.25257882, 0.99490109, 0.99731634, 0.49229539],
+                             [- 6.25430623, -0.00166431, 0.00101795, 7.25264192, 0.99490380, 0.99731774, 0.49229754],
+                             [- 6.25436823, -0.00166344, 0.00101742, 7.25270479, 0.99490651, 0.99731914, 0.49229968],
+                             [- 6.25443001, -0.00166256, 0.00101690, 7.25276745, 0.99490922, 0.99732054, 0.49230182],
+                             [- 6.25449157, -0.00166169, 0.00101638, 7.25282988, 0.99491192, 0.99732194, 0.49230394],
+                             [- 6.25455291, -0.00166082, 0.00101585, 7.25289209, 0.99491462, 0.99732333, 0.49230606],
+                             [- 6.25461403, -0.00165994, 0.00101533, 7.25295408, 0.99491732, 0.99732473, 0.49230817],
+                             [- 6.25467493, -0.00165907, 0.00101481, 7.25301586, 0.99492002, 0.99732612, 0.49231027],
+                             [- 6.25473561, -0.00165820, 0.00101428, 7.25307741, 0.99492271, 0.99732751, 0.49231238],
+                             [- 6.25479608, -0.00165733, 0.00101376, 7.25313874, 0.99492540, 0.99732890, 0.49231446],
+                             [- 6.25485633, -0.00165647, 0.00101324, 7.25319986, 0.99492809, 0.99733029, 0.49231656],
+                             [- 6.25491636, -0.00165560, 0.00101272, 7.25326076, 0.99493077, 0.99733168, 0.49231863],
+                             [- 6.25497618, -0.00165473, 0.00101220, 7.25332145, 0.99493345, 0.99733307, 0.49232070],
+                             [- 6.25503579, -0.00165386, 0.00101168, 7.25338192, 0.99493613, 0.99733445, 0.49232277],
+                             [- 6.25509518, -0.00165300, 0.00101116, 7.25344218, 0.99493881, 0.99733584, 0.49232483],
+                             [- 6.25515436, -0.00165214, 0.00101064, 7.25350222, 0.99494148, 0.99733722, 0.49232688],
+                             [- 6.25521333, -0.00165127, 0.00101012, 7.25356206, 0.99494415, 0.99733860, 0.49232894],
+                             [- 6.25527209, -0.00165041, 0.00100961, 7.25362168, 0.99494682, 0.99733998, 0.49233097],
+                             [- 6.25533063, -0.00164955, 0.00100909, 7.25368108, 0.99494949, 0.99734136, 0.49233301],
+                             [- 6.25538897, -0.00164869, 0.00100857, 7.25374028, 0.99495215, 0.99734274, 0.49233504],
+                             [- 6.25544710, -0.00164783, 0.00100806, 7.25379927, 0.99495481, 0.99734412, 0.49233704],
+                             [- 6.25550502, -0.00164697, 0.00100754, 7.25385805, 0.99495747, 0.99734549, 0.49233906],
+                             [- 6.25556273, -0.00164611, 0.00100702, 7.25391662, 0.99496012, 0.99734687, 0.49234107],
+                             [- 6.25562024, -0.00164525, 0.00100651, 7.25397499, 0.99496278, 0.99734824, 0.49234308],
+                             [- 6.25567754, -0.00164440, 0.00100599, 7.25403314, 0.99496543, 0.99734961, 0.49234506],
+                             [- 6.25573464, -0.00164354, 0.00100548, 7.25409110, 0.99496807, 0.99735098, 0.49234706],
+                             [- 6.25579153, -0.00164268, 0.00100497, 7.25414884, 0.99497072, 0.99735235, 0.49234904],
+                             [- 6.25584821, -0.00164183, 0.00100445, 7.25420638, 0.99497336, 0.99735372, 0.49235101],
+                             [- 6.25590470, -0.00164098, 0.00100394, 7.25426372, 0.99497600, 0.99735508, 0.49235297],
+                             [- 6.25596098, -0.00164012, 0.00100343, 7.25432086, 0.99497863, 0.99735645, 0.49235495],
+                             [- 6.25601706, -0.00163927, 0.00100292, 7.25437779, 0.99498127, 0.99735781, 0.49235690],
+                             [- 6.25607294, -0.00163842, 0.00100241, 7.25443452, 0.99498390, 0.99735917, 0.49235884],
+                             [- 6.25612862, -0.00163757, 0.00100189, 7.25449105, 0.99498652, 0.99736053, 0.49236079],
+                             [- 6.25618410, -0.00163672, 0.00100138, 7.25454738, 0.99498915, 0.99736189, 0.49236272],
+                             [- 6.25623938, -0.00163587, 0.00100087, 7.25460351, 0.99499177, 0.99736325, 0.49236466],
+                             [- 6.25629447, -0.00163503, 0.00100036, 7.25465944, 0.99499439, 0.99736461, 0.49236658],
+                             [- 6.25634936, -0.00163418, 0.00099986, 7.25471518, 0.99499701, 0.99736596, 0.49236850],
+                             [- 6.25640405, -0.00163333, 0.00099935, 7.25477071, 0.99499963, 0.99736732, 0.49237042],
+                             [- 6.25645854, -0.00163249, 0.00099884, 7.25482605, 0.99500224, 0.99736867, 0.49237232],
+                             [- 6.25651284, -0.00163164, 0.00099833, 7.25488119, 0.99500485, 0.99737002, 0.49237422],
+                             [- 6.25656694, -0.00163080, 0.00099782, 7.25493614, 0.99500745, 0.99737137, 0.49237612],
+                             [- 6.25662085, -0.00162996, 0.00099732, 7.25499089, 0.99501006, 0.99737272, 0.49237800],
+                             [- 6.25667457, -0.00162912, 0.00099681, 7.25504545, 0.99501266, 0.99737407, 0.49237989],
+                             [- 6.25672809, -0.00162828, 0.00099631, 7.25509982, 0.99501526, 0.99737542, 0.49238176],
+                             [- 6.25678143, -0.00162744, 0.00099580, 7.25515399, 0.99501786, 0.99737676, 0.49238364],
+                             [- 6.25683457, -0.00162660, 0.00099530, 7.25520797, 0.99502045, 0.99737811, 0.49238550],
+                             [- 6.25688752, -0.00162576, 0.00099479, 7.25526176, 0.99502304, 0.99737945, 0.49238736],
+                             [- 6.25694028, -0.00162492, 0.00099429, 7.25531536, 0.99502563, 0.99738079, 0.49238921],
+                             [- 6.25699285, -0.00162408, 0.00099378, 7.25536877, 0.99502822, 0.99738213, 0.49239105],
+                             [- 6.25704524, -0.00162325, 0.00099328, 7.25542199, 0.99503080, 0.99738347, 0.49239289],
+                             [- 6.25709743, -0.00162241, 0.00099278, 7.25547502, 0.99503338, 0.99738481, 0.49239473],
+                             [- 6.25714944, -0.00162158, 0.00099228, 7.25552786, 0.99503596, 0.99738615, 0.49239656],
+                             [- 6.25720127, -0.00162074, 0.00099177, 7.25558052, 0.99503853, 0.99738748, 0.49239838],
+                             [- 6.25725290, -0.00161991, 0.00099127, 7.25563299, 0.99504111, 0.99738881, 0.49240020],
+                             [- 6.25730435, -0.00161908, 0.00099077, 7.25568527, 0.99504368, 0.99739015, 0.49240201],
+                             [- 6.25735562, -0.00161825, 0.00099027, 7.25573737, 0.99504625, 0.99739148, 0.49240381],
+                             [- 6.25740670, -0.00161742, 0.00098977, 7.25578929, 0.99504881, 0.99739281, 0.49240561],
+                             [- 6.25745761, -0.00161659, 0.00098927, 7.25584102, 0.99505137, 0.99739414, 0.49240741],
+                             [- 6.25750832, -0.00161576, 0.00098877, 7.25589256, 0.99505393, 0.99739547, 0.49240919],
+                             [- 6.25755886, -0.00161493, 0.00098828, 7.25594393, 0.99505649, 0.99739679, 0.49241098],
+                             [- 6.25760921, -0.00161411, 0.00098778, 7.25599511, 0.99505905, 0.99739812, 0.49241276],
+                             [- 6.25765939, -0.00161328, 0.00098728, 7.25604611, 0.99506160, 0.99739944, 0.49241453],
+                             [- 6.25770938, -0.00161245, 0.00098678, 7.25609693, 0.99506415, 0.99740076, 0.49241630],
+                             [- 6.25775920, -0.00161163, 0.00098629, 7.25614757, 0.99506670, 0.99740209, 0.49241806],
+                             [- 6.25780883, -0.00161080, 0.00098579, 7.25619803, 0.99506924, 0.99740341, 0.49241981],
+                             [- 6.25785829, -0.00160998, 0.00098529, 7.25624831, 0.99507179, 0.99740472, 0.49242156],
+                             [- 6.25790757, -0.00160916, 0.00098480, 7.25629841, 0.99507433, 0.99740604, 0.49242330],
+                             [- 6.25795667, -0.00160834, 0.00098430, 7.25634834, 0.99507686, 0.99740736, 0.49242504],
+                             [- 6.25800560, -0.00160752, 0.00098381, 7.25639808, 0.99507940, 0.99740867, 0.49242678],
+                             [- 6.25805435, -0.00160670, 0.00098332, 7.25644766, 0.99508193, 0.99740999, 0.49242849],
+                             [- 6.25810293, -0.00160588, 0.00098282, 7.25649705, 0.99508446, 0.99741130, 0.49243022],
+                             [- 6.25815133, -0.00160506, 0.00098233, 7.25654627, 0.99508699, 0.99741261, 0.49243193],
+                             [- 6.25819956, -0.00160424, 0.00098184, 7.25659532, 0.99508951, 0.99741392, 0.49243365],
+                             [- 6.25824762, -0.00160342, 0.00098134, 7.25664419, 0.99509203, 0.99741523, 0.49243535],
+                             [- 6.25829550, -0.00160261, 0.00098085, 7.25669289, 0.99509455, 0.99741654, 0.49243704],
+                             [- 6.25834321, -0.00160179, 0.00098036, 7.25674142, 0.99509707, 0.99741784, 0.49243875],
+                             [- 6.25839075, -0.00160098, 0.00097987, 7.25678978, 0.99509959, 0.99741915, 0.49244043],
+                             [- 6.25843812, -0.00160017, 0.00097938, 7.25683796, 0.99510210, 0.99742045, 0.49244213],
+                             [- 6.25848532, -0.00159935, 0.00097889, 7.25688597, 0.99510461, 0.99742176, 0.49244379],
+                             [- 6.25853235, -0.00159854, 0.00097840, 7.25693381, 0.99510712, 0.99742306, 0.49244547],
+                             [- 6.25857922, -0.00159773, 0.00097791, 7.25698149, 0.99510962, 0.99742436, 0.49244714],
+                             [- 6.25862591, -0.00159692, 0.00097742, 7.25702899, 0.99511212, 0.99742566, 0.49244880],
+                             [- 6.25867244, -0.00159611, 0.00097693, 7.25707633, 0.99511462, 0.99742696, 0.49245046],
+                             [- 6.25871879, -0.00159530, 0.00097645, 7.25712350, 0.99511712, 0.99742825, 0.49245210],
+                             [- 6.25876499, -0.00159449, 0.00097596, 7.25717050, 0.99511962, 0.99742955, 0.49245376],
+                             [- 6.25881101, -0.00159368, 0.00097547, 7.25721733, 0.99512211, 0.99743084, 0.49245539],
+                             [- 6.25885688, -0.00159288, 0.00097499, 7.25726400, 0.99512460, 0.99743214, 0.49245702],
+                             [- 6.25890257, -0.00159207, 0.00097450, 7.25731050, 0.99512709, 0.99743343, 0.49245866],
+                             [- 6.25894810, -0.00159127, 0.00097402, 7.25735684, 0.99512957, 0.99743472, 0.49246028],
+                             [- 6.25899347, -0.00159046, 0.00097353, 7.25740301, 0.99513205, 0.99743601, 0.49246190],
+                             [- 6.25903868, -0.00158966, 0.00097305, 7.25744902, 0.99513453, 0.99743730, 0.49246352],
+                             [- 6.25908372, -0.00158886, 0.00097256, 7.25749487, 0.99513701, 0.99743858, 0.49246513],
+                             [- 6.25912861, -0.00158805, 0.00097208, 7.25754055, 0.99513949, 0.99743987, 0.49246673],
+                             [- 6.25917333, -0.00158725, 0.00097159, 7.25758607, 0.99514196, 0.99744115, 0.49246833],
+                             [- 6.25921789, -0.00158645, 0.00097111, 7.25763144, 0.99514443, 0.99744244, 0.49246993],
+                             [- 6.25926229, -0.00158565, 0.00097063, 7.25767664, 0.99514690, 0.99744372, 0.49247152],
+                             [- 6.25930653, -0.00158485, 0.00097015, 7.25772168, 0.99514936, 0.99744500, 0.49247309],
+                             [- 6.25935061, -0.00158406, 0.00096966, 7.25776656, 0.99515183, 0.99744628, 0.49247468],
+                             [- 6.25939453, -0.00158326, 0.00096918, 7.25781128, 0.99515429, 0.99744756, 0.49247625],
+                             [- 6.25943830, -0.00158246, 0.00096870, 7.25785584, 0.99515675, 0.99744884, 0.49247782],
+                             [- 6.25948191, -0.00158167, 0.00096822, 7.25790024, 0.99515920, 0.99745011, 0.49247939],
+                             [- 6.25952536, -0.00158087, 0.00096774, 7.25794449, 0.99516165, 0.99745139, 0.49248095],
+                             [- 6.25956866, -0.00158008, 0.00096726, 7.25798858, 0.99516411, 0.99745266, 0.49248251],
+                             [- 6.25961180, -0.00157928, 0.00096678, 7.25803252, 0.99516655, 0.99745393, 0.49248405],
+                             [- 6.25965478, -0.00157849, 0.00096631, 7.25807629, 0.99516900, 0.99745521, 0.49248560],
+                             [- 6.25969761, -0.00157770, 0.00096583, 7.25811992, 0.99517144, 0.99745648, 0.49248715],
+                             [- 6.25974029, -0.00157691, 0.00096535, 7.25816339, 0.99517389, 0.99745774, 0.49248867],
+                             [- 6.25978282, -0.00157612, 0.00096487, 7.25820670, 0.99517633, 0.99745901, 0.49249021],
+                             [- 6.25982519, -0.00157533, 0.00096440, 7.25824986, 0.99517876, 0.99746028, 0.49249174],
+                             [- 6.25986741, -0.00157454, 0.00096392, 7.25829287, 0.99518120, 0.99746154, 0.49249325],
+                             [- 6.25990947, -0.00157375, 0.00096344, 7.25833572, 0.99518363, 0.99746281, 0.49249477],
+                             [- 6.25995139, -0.00157296, 0.00096297, 7.25837843, 0.99518606, 0.99746407, 0.49249628],
+                             [- 6.25999315, -0.00157217, 0.00096249, 7.25842098, 0.99518848, 0.99746533, 0.49249779],
+                             [- 6.26003477, -0.00157139, 0.00096202, 7.25846338, 0.99519091, 0.99746659, 0.49249929],
+                             [- 6.26007624, -0.00157060, 0.00096154, 7.25850563, 0.99519333, 0.99746785, 0.49250079],
+                             [- 6.26011755, -0.00156982, 0.00096107, 7.25854773, 0.99519575, 0.99746911, 0.49250228],
+                             [- 6.26015872, -0.00156903, 0.00096060, 7.25858969, 0.99519817, 0.99747037, 0.49250377],
+                             [- 6.26019974, -0.00156825, 0.00096012, 7.25863149, 0.99520058, 0.99747163, 0.49250524],
+                             [- 6.26024061, -0.00156747, 0.00095965, 7.25867315, 0.99520300, 0.99747288, 0.49250672],
+                             [- 6.26028134, -0.00156669, 0.00095918, 7.25871465, 0.99520541, 0.99747414, 0.49250819],
+                             [- 6.26032192, -0.00156591, 0.00095871, 7.25875601, 0.99520782, 0.99747539, 0.49250967],
+                             [- 6.26036235, -0.00156513, 0.00095823, 7.25879723, 0.99521022, 0.99747664, 0.49251114],
+                             [- 6.26040264, -0.00156435, 0.00095776, 7.25883830, 0.99521263, 0.99747789, 0.49251259],
+                             [- 6.26044279, -0.00156357, 0.00095729, 7.25887922, 0.99521503, 0.99747914, 0.49251404],
+                             [- 6.26048279, -0.00156279, 0.00095682, 7.25892000, 0.99521743, 0.99748039, 0.49251549],
+                             [- 6.26052264, -0.00156201, 0.00095635, 7.25896063, 0.99521982, 0.99748163, 0.49251694],
+                             [- 6.26056235, -0.00156124, 0.00095588, 7.25900112, 0.99522222, 0.99748288, 0.49251838],
+                             [- 6.26060192, -0.00156046, 0.00095542, 7.25904146, 0.99522461, 0.99748412, 0.49251982],
+                             [- 6.26064135, -0.00155969, 0.00095495, 7.25908167, 0.99522700, 0.99748537, 0.49252125],
+                             [- 6.26068064, -0.00155891, 0.00095448, 7.25912173, 0.99522939, 0.99748661, 0.49252269],
+                             [- 6.26071978, -0.00155814, 0.00095401, 7.25916164, 0.99523177, 0.99748785, 0.49252410],
+                             [- 6.26075879, -0.00155737, 0.00095354, 7.25920142, 0.99523415, 0.99748909, 0.49252552],
+                             [- 6.26079765, -0.00155659, 0.00095308, 7.25924106, 0.99523653, 0.99749033, 0.49252694],
+                             [- 6.26083637, -0.00155582, 0.00095261, 7.25928055, 0.99523891, 0.99749157, 0.49252834],
+                             [- 6.26087496, -0.00155505, 0.00095215, 7.25931991, 0.99524129, 0.99749280, 0.49252975],
+                             [- 6.26091341, -0.00155428, 0.00095168, 7.25935912, 0.99524366, 0.99749404, 0.49253116],
+                             [- 6.26095171, -0.00155351, 0.00095122, 7.25939820, 0.99524603, 0.99749527, 0.49253255],
+                             [- 6.26098988, -0.00155274, 0.00095075, 7.25943714, 0.99524840, 0.99749651, 0.49253394],
+                             [- 6.26102792, -0.00155198, 0.00095029, 7.25947594, 0.99525077, 0.99749774, 0.49253533],
+                             [- 6.26106581, -0.00155121, 0.00094982, 7.25951460, 0.99525313, 0.99749897, 0.49253672],
+                             [- 6.26110357, -0.00155044, 0.00094936, 7.25955313, 0.99525549, 0.99750020, 0.49253810],
+                             [- 6.26114120, -0.00154968, 0.00094890, 7.25959152, 0.99525785, 0.99750143, 0.49253947],
+                             [- 6.26117869, -0.00154891, 0.00094843, 7.25962977, 0.99526021, 0.99750265, 0.49254085],
+                             [- 6.26121604, -0.00154815, 0.00094797, 7.25966789, 0.99526256, 0.99750388, 0.49254220],
+                             [- 6.26125326, -0.00154739, 0.00094751, 7.25970587, 0.99526492, 0.99750510, 0.49254357],
+                             [- 6.26129035, -0.00154662, 0.00094705, 7.25974372, 0.99526727, 0.99750633, 0.49254493],
+                             [- 6.26132730, -0.00154586, 0.00094659, 7.25978144, 0.99526962, 0.99750755, 0.49254628],
+                             [- 6.26136412, -0.00154510, 0.00094613, 7.25981902, 0.99527196, 0.99750877, 0.49254763],
+                             [- 6.26140081, -0.00154434, 0.00094567, 7.25985647, 0.99527431, 0.99750999, 0.49254897],
+                             [- 6.26143736, -0.00154358, 0.00094521, 7.25989378, 0.99527665, 0.99751121, 0.49255032],
+                             [- 6.26147379, -0.00154282, 0.00094475, 7.25993097, 0.99527899, 0.99751243, 0.49255166],
+                             [- 6.26151008, -0.00154206, 0.00094429, 7.25996802, 0.99528132, 0.99751365, 0.49255299],
+                             [- 6.26154624, -0.00154131, 0.00094383, 7.26000494, 0.99528366, 0.99751486, 0.49255432],
+                             [- 6.26158228, -0.00154055, 0.00094337, 7.26004173, 0.99528599, 0.99751608, 0.49255564],
+                             [- 6.26161818, -0.00153979, 0.00094292, 7.26007839, 0.99528832, 0.99751729, 0.49255696],
+                             [- 6.26165395, -0.00153904, 0.00094246, 7.26011492, 0.99529065, 0.99751851, 0.49255828],
+                             [- 6.26168960, -0.00153828, 0.00094200, 7.26015132, 0.99529297, 0.99751972, 0.49255958],
+                             [- 6.26172512, -0.00153753, 0.00094155, 7.26018759, 0.99529530, 0.99752093, 0.49256090],
+                             [- 6.26176051, -0.00153677, 0.00094109, 7.26022373, 0.99529762, 0.99752214, 0.49256219],
+                             [- 6.26179577, -0.00153602, 0.00094063, 7.26025975, 0.99529994, 0.99752334, 0.49256349],
+                             [- 6.26183090, -0.00153527, 0.00094018, 7.26029563, 0.99530226, 0.99752455, 0.49256478],
+                             [- 6.26186591, -0.00153452, 0.00093972, 7.26033139, 0.99530457, 0.99752576, 0.49256609],
+                             [- 6.26190080, -0.00153377, 0.00093927, 7.26036703, 0.99530688, 0.99752696, 0.49256738],
+                             [- 6.26193555, -0.00153302, 0.00093882, 7.26040254, 0.99530919, 0.99752817, 0.49256866],
+                             [- 6.26197019, -0.00153227, 0.00093836, 7.26043792, 0.99531150, 0.99752937, 0.49256993],
+                             [- 6.26200470, -0.00153152, 0.00093791, 7.26047317, 0.99531381, 0.99753057, 0.49257121],
+                             [- 6.26203908, -0.00153077, 0.00093746, 7.26050831, 0.99531611, 0.99753177, 0.49257249],
+                             [- 6.26207334, -0.00153003, 0.00093700, 7.26054331, 0.99531841, 0.99753297, 0.49257375],
+                             [- 6.26210748, -0.00152928, 0.00093655, 7.26057820, 0.99532071, 0.99753417, 0.49257501],
+                             [- 6.26214149, -0.00152853, 0.00093610, 7.26061296, 0.99532301, 0.99753537, 0.49257629],
+                             [- 6.26217539, -0.00152779, 0.00093565, 7.26064760, 0.99532530, 0.99753656, 0.49257754],
+                             [- 6.26220916, -0.00152705, 0.00093520, 7.26068211, 0.99532759, 0.99753776, 0.49257879],
+                             [- 6.26224280, -0.00152630, 0.00093475, 7.26071650, 0.99532988, 0.99753895, 0.49258003],
+                             [- 6.26227633, -0.00152556, 0.00093430, 7.26075077, 0.99533217, 0.99754014, 0.49258128],
+                             [- 6.26230974, -0.00152482, 0.00093385, 7.26078492, 0.99533446, 0.99754133, 0.49258252],
+                             [- 6.26234303, -0.00152408, 0.00093340, 7.26081895, 0.99533674, 0.99754253, 0.49258376],
+                             [- 6.26237620, -0.00152333, 0.00093295, 7.26085286, 0.99533902, 0.99754372, 0.49258498],
+                             [- 6.26240924, -0.00152259, 0.00093250, 7.26088665, 0.99534130, 0.99754490, 0.49258622],
+                             [- 6.26244217, -0.00152186, 0.00093205, 7.26092032, 0.99534358, 0.99754609, 0.49258745],
+                             [- 6.26247499, -0.00152112, 0.00093161, 7.26095387, 0.99534586, 0.99754728, 0.49258868],
+                             [- 6.26250768, -0.00152038, 0.00093116, 7.26098730, 0.99534813, 0.99754846, 0.49258989],
+                             [- 6.26254025, -0.00151964, 0.00093071, 7.26102061, 0.99535040, 0.99754965, 0.49259110],
+                             [- 6.26257271, -0.00151890, 0.00093027, 7.26105381, 0.99535267, 0.99755083, 0.49259230],
+                             [- 6.26260505, -0.00151817, 0.00092982, 7.26108689, 0.99535493, 0.99755201, 0.49259351],
+                             [- 6.26263728, -0.00151743, 0.00092937, 7.26111985, 0.99535720, 0.99755319, 0.49259471],
+                             [- 6.26266939, -0.00151670, 0.00092893, 7.26115269, 0.99535946, 0.99755437, 0.49259592],
+                             [- 6.26270138, -0.00151596, 0.00092848, 7.26118542, 0.99536172, 0.99755555, 0.49259711],
+                             [- 6.26273326, -0.00151523, 0.00092804, 7.26121803, 0.99536398, 0.99755673, 0.49259829],
+                             [- 6.26276503, -0.00151450, 0.00092760, 7.26125053, 0.99536623, 0.99755790, 0.49259950],
+                             [- 6.26279668, -0.00151377, 0.00092715, 7.26128291, 0.99536849, 0.99755908, 0.49260067],
+                             [- 6.26282822, -0.00151304, 0.00092671, 7.26131518, 0.99537074, 0.99756025, 0.49260186],
+                             [- 6.26285964, -0.00151231, 0.00092627, 7.26134733, 0.99537299, 0.99756143, 0.49260303],
+                             [- 6.26289095, -0.00151158, 0.00092582, 7.26137937, 0.99537524, 0.99756260, 0.49260421],
+                             [- 6.26292215, -0.00151085, 0.00092538, 7.26141130, 0.99537748, 0.99756377, 0.49260538],
+                             [- 6.26295323, -0.00151012, 0.00092494, 7.26144311, 0.99537972, 0.99756494, 0.49260653],
+                             [- 6.26298421, -0.00150939, 0.00092450, 7.26147481, 0.99538196, 0.99756611, 0.49260770],
+                             [- 6.26301507, -0.00150866, 0.00092406, 7.26150640, 0.99538420, 0.99756728, 0.49260887],
+                             [- 6.26304582, -0.00150794, 0.00092362, 7.26153788, 0.99538644, 0.99756844, 0.49261002],
+                             [- 6.26307646, -0.00150721, 0.00092318, 7.26156925, 0.99538867, 0.99756961, 0.49261117],
+                             [- 6.26310699, -0.00150649, 0.00092274, 7.26160050, 0.99539091, 0.99757078, 0.49261231],
+                             [- 6.26313741, -0.00150576, 0.00092230, 7.26163165, 0.99539314, 0.99757194, 0.49261347],
+                             [- 6.26316772, -0.00150504, 0.00092186, 7.26166269, 0.99539536, 0.99757310, 0.49261461],
+                             [- 6.26319793, -0.00150431, 0.00092142, 7.26169361, 0.99539759, 0.99757426, 0.49261575],
+                             [- 6.26322802, -0.00150359, 0.00092098, 7.26172443, 0.99539981, 0.99757542, 0.49261688],
+                             [- 6.26325801, -0.00150287, 0.00092055, 7.26175513, 0.99540204, 0.99757658, 0.49261801],
+                             [- 6.26328788, -0.00150215, 0.00092011, 7.26178573, 0.99540426, 0.99757774, 0.49261913],
+                             [- 6.26331765, -0.00150143, 0.00091967, 7.26181623, 0.99540647, 0.99757890, 0.49262025],
+                             [- 6.26334732, -0.00150071, 0.00091924, 7.26184661, 0.99540869, 0.99758006, 0.49262138],
+                             [- 6.26337687, -0.00149999, 0.00091880, 7.26187688, 0.99541090, 0.99758121, 0.49262250],
+                             [- 6.26340633, -0.00149927, 0.00091836, 7.26190705, 0.99541311, 0.99758236, 0.49262361],
+                             [- 6.26343567, -0.00149855, 0.00091793, 7.26193712, 0.99541532, 0.99758352, 0.49262472],
+                             [- 6.26346491, -0.00149784, 0.00091749, 7.26196707, 0.99541753, 0.99758467, 0.49262583],
+                             [- 6.26349404, -0.00149712, 0.00091706, 7.26199692, 0.99541974, 0.99758582, 0.49262693],
+                             [- 6.26352307, -0.00149640, 0.00091662, 7.26202667, 0.99542194, 0.99758697, 0.49262803],
+                             [- 6.26355200, -0.00149569, 0.00091619, 7.26205631, 0.99542414, 0.99758812, 0.49262913],
+                             [- 6.26358082, -0.00149498, 0.00091576, 7.26208585, 0.99542634, 0.99758927, 0.49263021],
+                             [- 6.26360954, -0.00149426, 0.00091532, 7.26211528, 0.99542854, 0.99759042, 0.49263131],
+                             [- 6.26363815, -0.00149355, 0.00091489, 7.26214460, 0.99543073, 0.99759156, 0.49263239],
+                             [- 6.26366666, -0.00149284, 0.00091446, 7.26217383, 0.99543292, 0.99759271, 0.49263348],
+                             [- 6.26369507, -0.00149212, 0.00091403, 7.26220295, 0.99543511, 0.99759385, 0.49263456],
+                             [- 6.26372338, -0.00149141, 0.00091359, 7.26223197, 0.99543730, 0.99759499, 0.49263563],
+                             [- 6.26375159, -0.00149070, 0.00091316, 7.26226088, 0.99543949, 0.99759613, 0.49263671],
+                             [- 6.26377969, -0.00148999, 0.00091273, 7.26228970, 0.99544167, 0.99759728, 0.49263778],
+                             [- 6.26380769, -0.00148928, 0.00091230, 7.26231841, 0.99544386, 0.99759841, 0.49263884],
+                             [- 6.26383560, -0.00148857, 0.00091187, 7.26234702, 0.99544604, 0.99759955, 0.49263991],
+                             [- 6.26386340, -0.00148787, 0.00091144, 7.26237553, 0.99544821, 0.99760069, 0.49264097],
+                             [- 6.26389110, -0.00148716, 0.00091101, 7.26240394, 0.99545039, 0.99760183, 0.49264203],
+                             [- 6.26391870, -0.00148645, 0.00091058, 7.26243225, 0.99545257, 0.99760296, 0.49264308],
+                             [- 6.26394621, -0.00148575, 0.00091016, 7.26246046, 0.99545474, 0.99760410, 0.49264413],
+                             [- 6.26397361, -0.00148504, 0.00090973, 7.26248857, 0.99545691, 0.99760523, 0.49264518],
+                             [- 6.26400092, -0.00148434, 0.00090930, 7.26251658, 0.99545908, 0.99760636, 0.49264622],
+                             [- 6.26402813, -0.00148363, 0.00090887, 7.26254449, 0.99546124, 0.99760750, 0.49264726],
+                             [- 6.26405524, -0.00148293, 0.00090844, 7.26257231, 0.99546341, 0.99760863, 0.49264830],
+                             [- 6.26408225, -0.00148223, 0.00090802, 7.26260002, 0.99546557, 0.99760976, 0.49264934],
+                             [- 6.26410916, -0.00148152, 0.00090759, 7.26262764, 0.99546773, 0.99761088, 0.49265036],
+                             [- 6.26413598, -0.00148082, 0.00090717, 7.26265516, 0.99546989, 0.99761201, 0.49265140],
+                             [- 6.26416271, -0.00148012, 0.00090674, 7.26268258, 0.99547204, 0.99761314, 0.49265242],
+                             [- 6.26418933, -0.00147942, 0.00090631, 7.26270991, 0.99547420, 0.99761426, 0.49265345],
+                             [- 6.26421586, -0.00147872, 0.00090589, 7.26273714, 0.99547635, 0.99761539, 0.49265447],
+                             [- 6.26424230, -0.00147802, 0.00090547, 7.26276428, 0.99547850, 0.99761651, 0.49265547],
+                             [- 6.26426864, -0.00147733, 0.00090504, 7.26279132, 0.99548065, 0.99761763, 0.49265649],
+                             [- 6.26429489, -0.00147663, 0.00090462, 7.26281826, 0.99548279, 0.99761875, 0.49265751],
+                             [- 6.26432104, -0.00147593, 0.00090419, 7.26284511, 0.99548494, 0.99761987, 0.49265851],
+                             [- 6.26434710, -0.00147523, 0.00090377, 7.26287186, 0.99548708, 0.99762099, 0.49265951],
+                             [- 6.26437306, -0.00147454, 0.00090335, 7.26289852, 0.99548922, 0.99762211, 0.49266051],
+                             [- 6.26439893, -0.00147384, 0.00090293, 7.26292509, 0.99549136, 0.99762323, 0.49266151],
+                             [- 6.26442471, -0.00147315, 0.00090250, 7.26295156, 0.99549349, 0.99762435, 0.49266249],
+                             [- 6.26445040, -0.00147246, 0.00090208, 7.26297794, 0.99549563, 0.99762546, 0.49266350],
+                             [- 6.26447599, -0.00147176, 0.00090166, 7.26300423, 0.99549776, 0.99762658, 0.49266448],
+                             [- 6.26450150, -0.00147107, 0.00090124, 7.26303043, 0.99549989, 0.99762769, 0.49266547],
+                             [- 6.26452691, -0.00147038, 0.00090082, 7.26305653, 0.99550202, 0.99762880, 0.49266646],
+                             [- 6.26455222, -0.00146969, 0.00090040, 7.26308254, 0.99550415, 0.99762991, 0.49266744],
+                             [- 6.26457745, -0.00146900, 0.00089998, 7.26310846, 0.99550627, 0.99763102, 0.49266841],
+                             [- 6.26460259, -0.00146831, 0.00089956, 7.26313428, 0.99550839, 0.99763213, 0.49266939],
+                             [- 6.26462764, -0.00146762, 0.00089914, 7.26316002, 0.99551051, 0.99763324, 0.49267035],
+                             [- 6.26465259, -0.00146693, 0.00089872, 7.26318567, 0.99551263, 0.99763435, 0.49267132],
+                             [- 6.26467746, -0.00146624, 0.00089831, 7.26321122, 0.99551475, 0.99763545, 0.49267230],
+                             [- 6.26470224, -0.00146555, 0.00089789, 7.26323669, 0.99551686, 0.99763656, 0.49267325],
+                             [- 6.26472693, -0.00146486, 0.00089747, 7.26326207, 0.99551898, 0.99763766, 0.49267421],
+                             [- 6.26475153, -0.00146418, 0.00089705, 7.26328735, 0.99552109, 0.99763877, 0.49267517],
+                             [- 6.26477604, -0.00146349, 0.00089664, 7.26331255, 0.99552319, 0.99763987, 0.49267611],
+                             [- 6.26480047, -0.00146281, 0.00089622, 7.26333766, 0.99552530, 0.99764097, 0.49267707],
+                             [- 6.26482481, -0.00146212, 0.00089580, 7.26336268, 0.99552741, 0.99764207, 0.49267802],
+                             [- 6.26484906, -0.00146144, 0.00089539, 7.26338762, 0.99552951, 0.99764317, 0.49267897],
+                             [- 6.26487322, -0.00146076, 0.00089497, 7.26341246, 0.99553161, 0.99764427, 0.49267991],
+                             [- 6.26489730, -0.00146007, 0.00089456, 7.26343722, 0.99553371, 0.99764537, 0.49268085],
+                             [- 6.26492129, -0.00145939, 0.00089414, 7.26346189, 0.99553581, 0.99764646, 0.49268179],
+                             [- 6.26494519, -0.00145871, 0.00089373, 7.26348648, 0.99553790, 0.99764756, 0.49268272],
+                             [- 6.26496901, -0.00145803, 0.00089332, 7.26351098, 0.99553999, 0.99764865, 0.49268365],
+                             [- 6.26499274, -0.00145735, 0.00089290, 7.26353539, 0.99554209, 0.99764975, 0.49268458],
+                             [- 6.26501639, -0.00145667, 0.00089249, 7.26355972, 0.99554417, 0.99765084, 0.49268549],
+                             [- 6.26503995, -0.00145599, 0.00089208, 7.26358396, 0.99554626, 0.99765193, 0.49268643],
+                             [- 6.26506343, -0.00145531, 0.00089166, 7.26360811, 0.99554835, 0.99765302, 0.49268735],
+                             [- 6.26508682, -0.00145463, 0.00089125, 7.26363219, 0.99555043, 0.99765411, 0.49268826],
+                             [- 6.26511013, -0.00145396, 0.00089084, 7.26365617, 0.99555251, 0.99765520, 0.49268918],
+                             [- 6.26513336, -0.00145328, 0.00089043, 7.26368008, 0.99555459, 0.99765629, 0.49269008],
+                             [- 6.26515650, -0.00145261, 0.00089002, 7.26370389, 0.99555667, 0.99765738, 0.49269099],
+                             [- 6.26517956, -0.00145193, 0.00088961, 7.26372763, 0.99555875, 0.99765846, 0.49269190],
+                             [- 6.26520254, -0.00145126, 0.00088920, 7.26375128, 0.99556082, 0.99765955, 0.49269281],
+                             [- 6.26522543, -0.00145058, 0.00088879, 7.26377485, 0.99556289, 0.99766063, 0.49269370],
+                             [- 6.26524824, -0.00144991, 0.00088838, 7.26379834, 0.99556496, 0.99766171, 0.49269460],
+                             [- 6.26527098, -0.00144924, 0.00088797, 7.26382174, 0.99556703, 0.99766280, 0.49269550],
+                             [- 6.26529363, -0.00144856, 0.00088756, 7.26384506, 0.99556910, 0.99766388, 0.49269640],
+                             [- 6.26531619, -0.00144789, 0.00088715, 7.26386830, 0.99557116, 0.99766496, 0.49269728],
+                             [- 6.26533868, -0.00144722, 0.00088674, 7.26389146, 0.99557323, 0.99766604, 0.49269817],
+                             [- 6.26536109, -0.00144655, 0.00088634, 7.26391454, 0.99557529, 0.99766711, 0.49269905],
+                             [- 6.26538341, -0.00144588, 0.00088593, 7.26393753, 0.99557735, 0.99766819, 0.49269994],
+                             [- 6.26540566, -0.00144521, 0.00088552, 7.26396045, 0.99557940, 0.99766927, 0.49270083],
+                             [- 6.26542783, -0.00144454, 0.00088511, 7.26398329, 0.99558146, 0.99767034, 0.49270168],
+                             [- 6.26544992, -0.00144387, 0.00088471, 7.26400604, 0.99558351, 0.99767142, 0.49270256],
+                             [- 6.26547192, -0.00144321, 0.00088430, 7.26402872, 0.99558556, 0.99767249, 0.49270344],
+                             [- 6.26549385, -0.00144254, 0.00088390, 7.26405131, 0.99558761, 0.99767356, 0.49270431],
+                             [- 6.26551570, -0.00144187, 0.00088349, 7.26407383, 0.99558966, 0.99767463, 0.49270518],
+                             [- 6.26553748, -0.00144121, 0.00088309, 7.26409627, 0.99559171, 0.99767571, 0.49270604],
+                             [- 6.26555917, -0.00144054, 0.00088268, 7.26411863, 0.99559375, 0.99767678, 0.49270690],
+                             [- 6.26558079, -0.00143988, 0.00088228, 7.26414091, 0.99559579, 0.99767784, 0.49270776],
+                             [- 6.26560233, -0.00143922, 0.00088187, 7.26416311, 0.99559783, 0.99767891, 0.49270862],
+                             [- 6.26562379, -0.00143855, 0.00088147, 7.26418524, 0.99559987, 0.99767998, 0.49270947],
+                             [- 6.26564518, -0.00143789, 0.00088107, 7.26420729, 0.99560191, 0.99768104, 0.49271032],
+                             [- 6.26566648, -0.00143723, 0.00088066, 7.26422926, 0.99560394, 0.99768211, 0.49271118],
+                             [- 6.26568772, -0.00143657, 0.00088026, 7.26425115, 0.99560598, 0.99768317, 0.49271202],
+                             [- 6.26570887, -0.00143590, 0.00087986, 7.26427297, 0.99560801, 0.99768424, 0.49271286],
+                             [- 6.26572995, -0.00143524, 0.00087946, 7.26429471, 0.99561004, 0.99768530, 0.49271371],
+                             [- 6.26575096, -0.00143458, 0.00087906, 7.26431637, 0.99561206, 0.99768636, 0.49271455],
+                             [- 6.26577189, -0.00143393, 0.00087865, 7.26433796, 0.99561409, 0.99768742, 0.49271537],
+                             [- 6.26579274, -0.00143327, 0.00087825, 7.26435948, 0.99561611, 0.99768848, 0.49271621],
+                             [- 6.26581352, -0.00143261, 0.00087785, 7.26438092, 0.99561813, 0.99768954, 0.49271704],
+                             [- 6.26583423, -0.00143195, 0.00087745, 7.26440228, 0.99562015, 0.99769059, 0.49271787],
+                             [- 6.26585486, -0.00143130, 0.00087705, 7.26442357, 0.99562217, 0.99769165, 0.49271871],
+                             [- 6.26587542, -0.00143064, 0.00087665, 7.26444478, 0.99562419, 0.99769271, 0.49271954],
+                             [- 6.26589591, -0.00142998, 0.00087626, 7.26446592, 0.99562620, 0.99769376, 0.49272035],
+                             [- 6.26591632, -0.00142933, 0.00087586, 7.26448699, 0.99562822, 0.99769482, 0.49272117],
+                             [- 6.26593666, -0.00142867, 0.00087546, 7.26450798, 0.99563023, 0.99769587, 0.49272198],
+                             [- 6.26595692, -0.00142802, 0.00087506, 7.26452890, 0.99563224, 0.99769692, 0.49272279],
+                             [- 6.26597711, -0.00142737, 0.00087466, 7.26454975, 0.99563424, 0.99769797, 0.49272362],
+                             [- 6.26599724, -0.00142671, 0.00087426, 7.26457052, 0.99563625, 0.99769902, 0.49272441],
+                             [- 6.26601728, -0.00142606, 0.00087387, 7.26459122, 0.99563825, 0.99770007, 0.49272522],
+                             [- 6.26603726, -0.00142541, 0.00087347, 7.26461185, 0.99564025, 0.99770112, 0.49272604],
+                             [- 6.26605717, -0.00142476, 0.00087307, 7.26463241, 0.99564225, 0.99770217, 0.49272683],
+                             [- 6.26607700, -0.00142411, 0.00087268, 7.26465289, 0.99564425, 0.99770321, 0.49272764],
+                             [- 6.26609676, -0.00142346, 0.00087228, 7.26467331, 0.99564625, 0.99770426, 0.49272843],
+                             [- 6.26611646, -0.00142281, 0.00087189, 7.26469365, 0.99564824, 0.99770530, 0.49272921],
+                             [- 6.26613608, -0.00142216, 0.00087149, 7.26471392, 0.99565024, 0.99770635, 0.49273003],
+                             [- 6.26615563, -0.00142151, 0.00087110, 7.26473412, 0.99565223, 0.99770739, 0.49273081],
+                             [- 6.26617512, -0.00142087, 0.00087070, 7.26475425, 0.99565422, 0.99770843, 0.49273160],
+                             [- 6.26619453, -0.00142022, 0.00087031, 7.26477431, 0.99565620, 0.99770947, 0.49273238],
+                             [- 6.26621387, -0.00141957, 0.00086992, 7.26479430, 0.99565819, 0.99771051, 0.49273317],
+                             [- 6.26623315, -0.00141893, 0.00086952, 7.26481422, 0.99566017, 0.99771155, 0.49273396],
+                             [- 6.26625235, -0.00141828, 0.00086913, 7.26483407, 0.99566216, 0.99771259, 0.49273473],
+                             [- 6.26627149, -0.00141764, 0.00086874, 7.26485385, 0.99566414, 0.99771362, 0.49273551],
+                             [- 6.26629056, -0.00141699, 0.00086835, 7.26487356, 0.99566612, 0.99771466, 0.49273628],
+                             [- 6.26630956, -0.00141635, 0.00086795, 7.26489321, 0.99566809, 0.99771570, 0.49273706],
+                             [- 6.26632849, -0.00141571, 0.00086756, 7.26491278, 0.99567007, 0.99771673, 0.49273783],
+                             [- 6.26634735, -0.00141506, 0.00086717, 7.26493229, 0.99567204, 0.99771776, 0.49273859],
+                             [- 6.26636615, -0.00141442, 0.00086678, 7.26495173, 0.99567401, 0.99771880, 0.49273935],
+                             [- 6.26638488, -0.00141378, 0.00086639, 7.26497110, 0.99567598, 0.99771983, 0.49274013],
+                             [- 6.26640355, -0.00141314, 0.00086600, 7.26499041, 0.99567795, 0.99772086, 0.49274089],
+                             [- 6.26642214, -0.00141250, 0.00086561, 7.26500964, 0.99567992, 0.99772189, 0.49274164],
+                             [- 6.26644067, -0.00141186, 0.00086522, 7.26502881, 0.99568188, 0.99772292, 0.49274241],
+                             [- 6.26645914, -0.00141122, 0.00086483, 7.26504792, 0.99568384, 0.99772395, 0.49274316],
+                             [- 6.26647754, -0.00141058, 0.00086444, 7.26506695, 0.99568580, 0.99772497, 0.49274392],
+                             [- 6.26649587, -0.00140995, 0.00086405, 7.26508592, 0.99568776, 0.99772600, 0.49274466],
+                             [- 6.26651414, -0.00140931, 0.00086366, 7.26510483, 0.99568972, 0.99772703, 0.49274542],
+                             [- 6.26653234, -0.00140867, 0.00086328, 7.26512367, 0.99569168, 0.99772805, 0.49274618],
+                             [- 6.26655048, -0.00140804, 0.00086289, 7.26514244, 0.99569363, 0.99772908, 0.49274690],
+                             [- 6.26656855, -0.00140740, 0.00086250, 7.26516115, 0.99569558, 0.99773010, 0.49274765],
+                             [- 6.26658656, -0.00140677, 0.00086211, 7.26517979, 0.99569753, 0.99773112, 0.49274839],
+                             [- 6.26660450, -0.00140613, 0.00086173, 7.26519837, 0.99569948, 0.99773214, 0.49274912],
+                             [- 6.26662238, -0.00140550, 0.00086134, 7.26521688, 0.99570143, 0.99773316, 0.49274986],
+                             [- 6.26664020, -0.00140486, 0.00086096, 7.26523533, 0.99570337, 0.99773418, 0.49275059],
+                             [- 6.26665795, -0.00140423, 0.00086057, 7.26525372, 0.99570532, 0.99773520, 0.49275132],
+                             [- 6.26667564, -0.00140360, 0.00086018, 7.26527204, 0.99570726, 0.99773622, 0.49275206],
+                             [- 6.26669326, -0.00140297, 0.00085980, 7.26529030, 0.99570920, 0.99773723, 0.49275276],
+                             [- 6.26671083, -0.00140234, 0.00085942, 7.26530849, 0.99571114, 0.99773825, 0.49275350],
+                             [- 6.26672833, -0.00140171, 0.00085903, 7.26532662, 0.99571307, 0.99773926, 0.49275423],
+                             [- 6.26674577, -0.00140108, 0.00085865, 7.26534469, 0.99571501, 0.99774028, 0.49275495],
+                             [- 6.26676314, -0.00140045, 0.00085826, 7.26536270, 0.99571694, 0.99774129, 0.49275567],
+                             [- 6.26678046, -0.00139982, 0.00085788, 7.26538064, 0.99571887, 0.99774230, 0.49275639],
+                             [- 6.26679771, -0.00139919, 0.00085750, 7.26539852, 0.99572080, 0.99774331, 0.49275711],
+                             [- 6.26681490, -0.00139856, 0.00085711, 7.26541634, 0.99572273, 0.99774433, 0.49275782],
+                             [- 6.26683203, -0.00139793, 0.00085673, 7.26543410, 0.99572466, 0.99774533, 0.49275852],
+                             [- 6.26684910, -0.00139731, 0.00085635, 7.26545179, 0.99572658, 0.99774634, 0.49275924],
+                             [- 6.26686611, -0.00139668, 0.00085597, 7.26546943, 0.99572851, 0.99774735, 0.49275995],
+                             [- 6.26688306, -0.00139605, 0.00085559, 7.26548700, 0.99573043, 0.99774836, 0.49276065],
+                             [- 6.26689994, -0.00139543, 0.00085521, 7.26550451, 0.99573235, 0.99774936, 0.49276134],
+                             [- 6.26691677, -0.00139481, 0.00085482, 7.26552196, 0.99573426, 0.99775037, 0.49276204],
+                             [- 6.26693354, -0.00139418, 0.00085444, 7.26553936, 0.99573618, 0.99775137, 0.49276274],
+                             [- 6.26695024, -0.00139356, 0.00085406, 7.26555669, 0.99573809, 0.99775238, 0.49276344],
+                             [- 6.26696689, -0.00139293, 0.00085368, 7.26557396, 0.99574001, 0.99775338, 0.49276413],
+                             [- 6.26698348, -0.00139231, 0.00085331, 7.26559117, 0.99574192, 0.99775438, 0.49276484],
+                             [- 6.26700001, -0.00139169, 0.00085293, 7.26560832, 0.99574383, 0.99775538, 0.49276553],
+                             [- 6.26701648, -0.00139107, 0.00085255, 7.26562541, 0.99574574, 0.99775638, 0.49276621],
+                             [- 6.26703289, -0.00139045, 0.00085217, 7.26564245, 0.99574764, 0.99775738, 0.49276691],
+                             [- 6.26704925, -0.00138983, 0.00085179, 7.26565942, 0.99574955, 0.99775838, 0.49276759],
+                             [- 6.26706554, -0.00138921, 0.00085141, 7.26567633, 0.99575145, 0.99775938, 0.49276826],
+                             [- 6.26708178, -0.00138859, 0.00085104, 7.26569319, 0.99575335, 0.99776038, 0.49276895],
+                             [- 6.26709796, -0.00138797, 0.00085066, 7.26570999, 0.99575525, 0.99776137, 0.49276963],
+                             [- 6.26711408, -0.00138735, 0.00085028, 7.26572673, 0.99575715, 0.99776237, 0.49277030],
+                             [- 6.26713015, -0.00138674, 0.00084990, 7.26574341, 0.99575904, 0.99776336, 0.49277097],
+                             [- 6.26714616, -0.00138612, 0.00084953, 7.26576004, 0.99576094, 0.99776435, 0.49277165],
+                             [- 6.26716211, -0.00138550, 0.00084915, 7.26577661, 0.99576283, 0.99776535, 0.49277232],
+                             [- 6.26717800, -0.00138489, 0.00084878, 7.26579312, 0.99576472, 0.99776634, 0.49277298],
+                             [- 6.26719384, -0.00138427, 0.00084840, 7.26580957, 0.99576661, 0.99776733, 0.49277366],
+                             [- 6.26720962, -0.00138366, 0.00084803, 7.26582597, 0.99576850, 0.99776832, 0.49277432],
+                             [- 6.26722535, -0.00138304, 0.00084765, 7.26584231, 0.99577038, 0.99776931, 0.49277499],
+                             [- 6.26724102, -0.00138243, 0.00084728, 7.26585859, 0.99577227, 0.99777029, 0.49277565],
+                             [- 6.26725663, -0.00138181, 0.00084690, 7.26587482, 0.99577415, 0.99777128, 0.49277630],
+                             [- 6.26727219, -0.00138120, 0.00084653, 7.26589099, 0.99577603, 0.99777227, 0.49277698],
+                             [- 6.26728769, -0.00138059, 0.00084616, 7.26590710, 0.99577791, 0.99777325, 0.49277763],
+                             [- 6.26730314, -0.00137998, 0.00084578, 7.26592316, 0.99577979, 0.99777424, 0.49277828],
+                             [- 6.26731854, -0.00137937, 0.00084541, 7.26593917, 0.99578166, 0.99777522, 0.49277893],
+                             [- 6.26733388, -0.00137876, 0.00084504, 7.26595512, 0.99578354, 0.99777621, 0.49277959],
+                             [- 6.26734916, -0.00137815, 0.00084467, 7.26597101, 0.99578541, 0.99777719, 0.49278024],
+                             [- 6.26736439, -0.00137754, 0.00084429, 7.26598685, 0.99578728, 0.99777817, 0.49278088],
+                             [- 6.26737957, -0.00137693, 0.00084392, 7.26600264, 0.99578915, 0.99777915, 0.49278153],
+                             [- 6.26739469, -0.00137632, 0.00084355, 7.26601837, 0.99579102, 0.99778013, 0.49278219],
+                             [- 6.26740976, -0.00137571, 0.00084318, 7.26603405, 0.99579289, 0.99778111, 0.49278281],
+                             [- 6.26742477, -0.00137510, 0.00084281, 7.26604967, 0.99579475, 0.99778209, 0.49278347],
+                             [- 6.26743974, -0.00137450, 0.00084244, 7.26606524, 0.99579661, 0.99778306, 0.49278410],
+                             [- 6.26745464, -0.00137389, 0.00084207, 7.26608075, 0.99579847, 0.99778404, 0.49278472],
+                             [- 6.26746950, -0.00137328, 0.00084170, 7.26609622, 0.99580033, 0.99778502, 0.49278536],
+                             [- 6.26748430, -0.00137268, 0.00084133, 7.26611162, 0.99580219, 0.99778599, 0.49278600],
+                             [- 6.26749906, -0.00137207, 0.00084096, 7.26612698, 0.99580405, 0.99778696, 0.49278663],
+                             [- 6.26751375, -0.00137147, 0.00084059, 7.26614228, 0.99580590, 0.99778794, 0.49278724],
+                             [- 6.26752840, -0.00137087, 0.00084022, 7.26615753, 0.99580776, 0.99778891, 0.49278789],
+                             [- 6.26754300, -0.00137026, 0.00083986, 7.26617273, 0.99580961, 0.99778988, 0.49278852],
+                             [- 6.26755754, -0.00136966, 0.00083949, 7.26618788, 0.99581146, 0.99779085, 0.49278914],
+                             [- 6.26757203, -0.00136906, 0.00083912, 7.26620297, 0.99581331, 0.99779182, 0.49278975],
+                             [- 6.26758647, -0.00136846, 0.00083875, 7.26621801, 0.99581515, 0.99779279, 0.49279037],
+                             [- 6.26760086, -0.00136786, 0.00083839, 7.26623300, 0.99581700, 0.99779376, 0.49279099],
+                             [- 6.26761520, -0.00136725, 0.00083802, 7.26624794, 0.99581884, 0.99779472, 0.49279161],
+                             [- 6.26762949, -0.00136665, 0.00083765, 7.26626283, 0.99582068, 0.99779569, 0.49279223],
+                             [- 6.26764372, -0.00136605, 0.00083729, 7.26627767, 0.99582252, 0.99779666, 0.49279284],
+                             [- 6.26765791, -0.00136546, 0.00083692, 7.26629245, 0.99582436, 0.99779762, 0.49279345],
+                             [- 6.26767205, -0.00136486, 0.00083656, 7.26630719, 0.99582620, 0.99779859, 0.49279407],
+                             [- 6.26768613, -0.00136426, 0.00083619, 7.26632187, 0.99582804, 0.99779955, 0.49279468],
+                             [- 6.26770017, -0.00136366, 0.00083583, 7.26633651, 0.99582987, 0.99780051, 0.49279528],
+                             [- 6.26771416, -0.00136306, 0.00083546, 7.26635109, 0.99583170, 0.99780147, 0.49279588],
+                             [- 6.26772809, -0.00136247, 0.00083510, 7.26636562, 0.99583353, 0.99780243, 0.49279649],
+                             [- 6.26774198, -0.00136187, 0.00083474, 7.26638011, 0.99583536, 0.99780339, 0.49279710],
+                             [- 6.26775582, -0.00136128, 0.00083437, 7.26639454, 0.99583719, 0.99780435, 0.49279770],
+                             [- 6.26776961, -0.00136068, 0.00083401, 7.26640893, 0.99583902, 0.99780531, 0.49279829],
+                             [- 6.26778335, -0.00136009, 0.00083365, 7.26642326, 0.99584084, 0.99780627, 0.49279888],
+                             [- 6.26779704, -0.00135949, 0.00083328, 7.26643755, 0.99584266, 0.99780722, 0.49279946],
+                             [- 6.26781069, -0.00135890, 0.00083292, 7.26645179, 0.99584449, 0.99780818, 0.49280008],
+                             [- 6.26782428, -0.00135831, 0.00083256, 7.26646598, 0.99584631, 0.99780913, 0.49280067],
+                             [- 6.26783783, -0.00135771, 0.00083220, 7.26648012, 0.99584812, 0.99781009, 0.49280125],
+                             [- 6.26785133, -0.00135712, 0.00083184, 7.26649421, 0.99584994, 0.99781104, 0.49280185],
+                             [- 6.26786479, -0.00135653, 0.00083148, 7.26650826, 0.99585175, 0.99781199, 0.49280244],
+                             [- 6.26787819, -0.00135594, 0.00083111, 7.26652225, 0.99585357, 0.99781295, 0.49280301],
+                             [- 6.26789155, -0.00135535, 0.00083075, 7.26653620, 0.99585538, 0.99781390, 0.49280360],
+                             [- 6.26790486, -0.00135476, 0.00083039, 7.26655010, 0.99585719, 0.99781485, 0.49280419],
+                             [- 6.26791812, -0.00135417, 0.00083003, 7.26656395, 0.99585900, 0.99781580, 0.49280476],
+                             [- 6.26793134, -0.00135358, 0.00082967, 7.26657776, 0.99586081, 0.99781675, 0.49280534],
+                             [- 6.26794451, -0.00135299, 0.00082931, 7.26659152, 0.99586261, 0.99781769, 0.49280594],
+                             [- 6.26795764, -0.00135240, 0.00082896, 7.26660523, 0.99586442, 0.99781864, 0.49280650],
+                             [- 6.26797071, -0.00135182, 0.00082860, 7.26661890, 0.99586622, 0.99781959, 0.49280708],
+                             [- 6.26798374, -0.00135123, 0.00082824, 7.26663252, 0.99586802, 0.99782053, 0.49280764],
+                             [- 6.26799673, -0.00135064, 0.00082788, 7.26664609, 0.99586982, 0.99782148, 0.49280822],
+                             [- 6.26800967, -0.00135006, 0.00082752, 7.26665961, 0.99587162, 0.99782242, 0.49280878],
+                             [- 6.26802256, -0.00134947, 0.00082717, 7.26667309, 0.99587341, 0.99782336, 0.49280935],
+                             [- 6.26803541, -0.00134889, 0.00082681, 7.26668653, 0.99587521, 0.99782431, 0.49280992],
+                             [- 6.26804822, -0.00134830, 0.00082645, 7.26669991, 0.99587700, 0.99782525, 0.49281048],
+                             [- 6.26806098, -0.00134772, 0.00082609, 7.26671326, 0.99587879, 0.99782619, 0.49281107],
+                             [- 6.26807369, -0.00134713, 0.00082574, 7.26672655, 0.99588058, 0.99782713, 0.49281162],
+                             [- 6.26808636, -0.00134655, 0.00082538, 7.26673981, 0.99588237, 0.99782807, 0.49281218],
+                             [- 6.26809898, -0.00134597, 0.00082503, 7.26675301, 0.99588416, 0.99782900, 0.49281274],
+                             [- 6.26811156, -0.00134539, 0.00082467, 7.26676617, 0.99588595, 0.99782994, 0.49281329],
+                             [- 6.26812410, -0.00134481, 0.00082432, 7.26677929, 0.99588773, 0.99783088, 0.49281384],
+                             [- 6.26813659, -0.00134422, 0.00082396, 7.26679236, 0.99588951, 0.99783181, 0.49281439],
+                             [- 6.26814904, -0.00134364, 0.00082361, 7.26680539, 0.99589129, 0.99783275, 0.49281496],
+                             [- 6.26816144, -0.00134306, 0.00082325, 7.26681838, 0.99589307, 0.99783368, 0.49281552],
+                             [- 6.26817380, -0.00134248, 0.00082290, 7.26683132, 0.99589485, 0.99783462, 0.49281605],
+                             [- 6.26818612, -0.00134191, 0.00082255, 7.26684421, 0.99589663, 0.99783555, 0.49281661],
+                             [- 6.26819839, -0.00134133, 0.00082219, 7.26685706, 0.99589840, 0.99783648, 0.49281716],
+                             [- 6.26821062, -0.00134075, 0.00082184, 7.26686987, 0.99590018, 0.99783741, 0.49281769],
+                             [- 6.26822281, -0.00134017, 0.00082149, 7.26688264, 0.99590195, 0.99783834, 0.49281824],
+                             [- 6.26823495, -0.00133959, 0.00082113, 7.26689536, 0.99590372, 0.99783927, 0.49281878],
+                             [- 6.26824705, -0.00133902, 0.00082078, 7.26690804, 0.99590549, 0.99784020, 0.49281933],
+                             [- 6.26825911, -0.00133844, 0.00082043, 7.26692067, 0.99590725, 0.99784113, 0.49281987],
+                             [- 6.26827113, -0.00133787, 0.00082008, 7.26693326, 0.99590902, 0.99784206, 0.49282040],
+                             [- 6.26828310, -0.00133729, 0.00081973, 7.26694581, 0.99591078, 0.99784298, 0.49282094],
+                             [- 6.26829504, -0.00133672, 0.00081938, 7.26695832, 0.99591255, 0.99784391, 0.49282147],
+                             [- 6.26830693, -0.00133614, 0.00081902, 7.26697079, 0.99591431, 0.99784483, 0.49282201],
+                             [- 6.26831878, -0.00133557, 0.00081867, 7.26698321, 0.99591607, 0.99784576, 0.49282254],
+                             [- 6.26833058, -0.00133499, 0.00081832, 7.26699559, 0.99591783, 0.99784668, 0.49282308],
+                             [- 6.26834235, -0.00133442, 0.00081797, 7.26700793, 0.99591958, 0.99784760, 0.49282360],
+                             [- 6.26835407, -0.00133385, 0.00081762, 7.26702023, 0.99592134, 0.99784853, 0.49282414],
+                             [- 6.26836576, -0.00133328, 0.00081728, 7.26703248, 0.99592309, 0.99784945, 0.49282465],
+                             [- 6.26837740, -0.00133271, 0.00081693, 7.26704469, 0.99592485, 0.99785037, 0.49282520],
+                             [- 6.26838900, -0.00133214, 0.00081658, 7.26705687, 0.99592660, 0.99785129, 0.49282572],
+                             [- 6.26840056, -0.00133157, 0.00081623, 7.26706900, 0.99592835, 0.99785221, 0.49282624],
+                             [- 6.26841209, -0.00133100, 0.00081588, 7.26708109, 0.99593009, 0.99785312, 0.49282676],
+                             [- 6.26842357, -0.00133043, 0.00081553, 7.26709314, 0.99593184, 0.99785404, 0.49282728],
+                             [- 6.26843501, -0.00132986, 0.00081519, 7.26710515, 0.99593359, 0.99785496, 0.49282780],
+                             [- 6.26844641, -0.00132929, 0.00081484, 7.26711712, 0.99593533, 0.99785587, 0.49282829],
+                             [- 6.26845777, -0.00132872, 0.00081449, 7.26712905, 0.99593707, 0.99785679, 0.49282883],
+                             [- 6.26846909, -0.00132815, 0.00081414, 7.26714093, 0.99593881, 0.99785770, 0.49282934],
+                             [- 6.26848037, -0.00132759, 0.00081380, 7.26715278, 0.99594055, 0.99785862, 0.49282986],
+                             [- 6.26849161, -0.00132702, 0.00081345, 7.26716459, 0.99594229, 0.99785953, 0.49283037],
+                             [- 6.26850281, -0.00132645, 0.00081311, 7.26717636, 0.99594402, 0.99786044, 0.49283087],
+                             [- 6.26851397, -0.00132589, 0.00081276, 7.26718809, 0.99594576, 0.99786135, 0.49283138],
+                             [- 6.26852510, -0.00132532, 0.00081242, 7.26719977, 0.99594749, 0.99786226, 0.49283189],
+                             [- 6.26853618, -0.00132476, 0.00081207, 7.26721142, 0.99594922, 0.99786317, 0.49283239],
+                             [- 6.26854723, -0.00132419, 0.00081173, 7.26722303, 0.99595095, 0.99786408, 0.49283291],
+                             [- 6.26855824, -0.00132363, 0.00081138, 7.26723461, 0.99595268, 0.99786499, 0.49283341],
+                             [- 6.26856921, -0.00132307, 0.00081104, 7.26724614, 0.99595441, 0.99786590, 0.49283391],
+                             [- 6.26858014, -0.00132251, 0.00081069, 7.26725763, 0.99595614, 0.99786680, 0.49283441],
+                             [- 6.26859103, -0.00132194, 0.00081035, 7.26726909, 0.99595786, 0.99786771, 0.49283490],
+                             [- 6.26860188, -0.00132138, 0.00081001, 7.26728050, 0.99595958, 0.99786861, 0.49283543],
+                             [- 6.26861270, -0.00132082, 0.00080966, 7.26729188, 0.99596131, 0.99786952, 0.49283590],
+                             [- 6.26862348, -0.00132026, 0.00080932, 7.26730322, 0.99596303, 0.99787042, 0.49283641],
+                             [- 6.26863422, -0.00131970, 0.00080898, 7.26731452, 0.99596474, 0.99787132, 0.49283690],
+                             [- 6.26864493, -0.00131914, 0.00080864, 7.26732579, 0.99596646, 0.99787223, 0.49283740],
+                             [- 6.26865559, -0.00131858, 0.00080829, 7.26733701, 0.99596818, 0.99787313, 0.49283789],
+                             [- 6.26866622, -0.00131802, 0.00080795, 7.26734820, 0.99596989, 0.99787403, 0.49283838],
+                             [- 6.26867681, -0.00131746, 0.00080761, 7.26735935, 0.99597160, 0.99787493, 0.49283886],
+                             [- 6.26868737, -0.00131690, 0.00080727, 7.26737047, 0.99597332, 0.99787583, 0.49283935],
+                             [- 6.26869789, -0.00131635, 0.00080693, 7.26738154, 0.99597503, 0.99787673, 0.49283983],
+                             [- 6.26870837, -0.00131579, 0.00080659, 7.26739258, 0.99597673, 0.99787762, 0.49284032],
+                             [- 6.26871882, -0.00131523, 0.00080625, 7.26740358, 0.99597844, 0.99787852, 0.49284083],
+                             [- 6.26872923, -0.00131468, 0.00080591, 7.26741455, 0.99598015, 0.99787942, 0.49284129],
+                             [- 6.26873960, -0.00131412, 0.00080557, 7.26742548, 0.99598185, 0.99788031, 0.49284178],
+                             [- 6.26874993, -0.00131357, 0.00080523, 7.26743637, 0.99598355, 0.99788121, 0.49284226],
+                             [- 6.26876024, -0.00131301, 0.00080489, 7.26744723, 0.99598526, 0.99788210, 0.49284273],
+                             [- 6.26877050, -0.00131246, 0.00080455, 7.26745804, 0.99598696, 0.99788299, 0.49284320],
+                             [- 6.26878073, -0.00131190, 0.00080421, 7.26746883, 0.99598865, 0.99788389, 0.49284369],
+                             [- 6.26879092, -0.00131135, 0.00080387, 7.26747958, 0.99599035, 0.99788478, 0.49284417],
+                             [- 6.26880108, -0.00131080, 0.00080354, 7.26749029, 0.99599205, 0.99788567, 0.49284465],
+                             [- 6.26881120, -0.00131024, 0.00080320, 7.26750096, 0.99599374, 0.99788656, 0.49284510],
+                             [- 6.26882129, -0.00130969, 0.00080286, 7.26751160, 0.99599543, 0.99788745, 0.49284559],
+                             [- 6.26883135, -0.00130914, 0.00080252, 7.26752221, 0.99599713, 0.99788834, 0.49284606],
+                             [- 6.26884136, -0.00130859, 0.00080219, 7.26753278, 0.99599882, 0.99788923, 0.49284653],
+                             [- 6.26885135, -0.00130804, 0.00080185, 7.26754331, 0.99600050, 0.99789011, 0.49284699],
+                             [- 6.26886129, -0.00130749, 0.00080151, 7.26755381, 0.99600219, 0.99789100, 0.49284746],
+                             [- 6.26887121, -0.00130694, 0.00080118, 7.26756427, 0.99600388, 0.99789189, 0.49284793],
+                             [- 6.26888109, -0.00130639, 0.00080084, 7.26757470, 0.99600556, 0.99789277, 0.49284838],
+                             [- 6.26889093, -0.00130584, 0.00080051, 7.26758509, 0.99600724, 0.99789365, 0.49284885],
+                             [- 6.26890074, -0.00130529, 0.00080017, 7.26759545, 0.99600893, 0.99789454, 0.49284932],
+                             [- 6.26891052, -0.00130474, 0.00079984, 7.26760578, 0.99601061, 0.99789542, 0.49284977],
+                             [- 6.26892026, -0.00130420, 0.00079950, 7.26761607, 0.99601228, 0.99789630, 0.49285024],
+                             [- 6.26892997, -0.00130365, 0.00079917, 7.26762633, 0.99601396, 0.99789719, 0.49285069],
+                             [- 6.26893965, -0.00130310, 0.00079883, 7.26763655, 0.99601564, 0.99789807, 0.49285114],
+                             [- 6.26894929, -0.00130256, 0.00079850, 7.26764674, 0.99601731, 0.99789895, 0.49285162],
+                             [- 6.26895890, -0.00130201, 0.00079816, 7.26765689, 0.99601899, 0.99789983, 0.49285206],
+                             [- 6.26896848, -0.00130146, 0.00079783, 7.26766701, 0.99602066, 0.99790070, 0.49285251],
+                             [- 6.26897802, -0.00130092, 0.00079750, 7.26767710, 0.99602233, 0.99790158, 0.49285297],
+                             [- 6.26898753, -0.00130038, 0.00079717, 7.26768715, 0.99602400, 0.99790246, 0.49285344],
+                             [- 6.26899700, -0.00129983, 0.00079683, 7.26769717, 0.99602566, 0.99790334, 0.49285388],
+                             [- 6.26900645, -0.00129929, 0.00079650, 7.26770716, 0.99602733, 0.99790421, 0.49285432],
+                             [- 6.26901586, -0.00129875, 0.00079617, 7.26771711, 0.99602900, 0.99790509, 0.49285477],
+                             [- 6.26902524, -0.00129820, 0.00079584, 7.26772703, 0.99603066, 0.99790596, 0.49285523],
+                             [- 6.26903458, -0.00129766, 0.00079550, 7.26773692, 0.99603232, 0.99790683, 0.49285566],
+                             [- 6.26904390, -0.00129712, 0.00079517, 7.26774678, 0.99603398, 0.99790771, 0.49285611],
+                             [- 6.26905318, -0.00129658, 0.00079484, 7.26775660, 0.99603564, 0.99790858, 0.49285655],
+                             [- 6.26906243, -0.00129604, 0.00079451, 7.26776639, 0.99603730, 0.99790945, 0.49285701],
+                             [- 6.26907164, -0.00129550, 0.00079418, 7.26777615, 0.99603896, 0.99791032, 0.49285743],
+                             [- 6.26908083, -0.00129496, 0.00079385, 7.26778587, 0.99604061, 0.99791119, 0.49285787],
+                             [- 6.26908998, -0.00129442, 0.00079352, 7.26779557, 0.99604227, 0.99791206, 0.49285833],
+                             [- 6.26909911, -0.00129388, 0.00079319, 7.26780523, 0.99604392, 0.99791293, 0.49285876],
+                             [- 6.26910820, -0.00129334, 0.00079286, 7.26781486, 0.99604557, 0.99791380, 0.49285921],
+                             [- 6.26911726, -0.00129280, 0.00079253, 7.26782446, 0.99604722, 0.99791467, 0.49285963],
+                             [- 6.26912629, -0.00129226, 0.00079220, 7.26783402, 0.99604887, 0.99791553, 0.49286007],
+                             [- 6.26913528, -0.00129173, 0.00079188, 7.26784356, 0.99605051, 0.99791640, 0.49286049],
+                             [- 6.26914425, -0.00129119, 0.00079155, 7.26785306, 0.99605216, 0.99791726, 0.49286093],
+                             [- 6.26915318, -0.00129065, 0.00079122, 7.26786253, 0.99605380, 0.99791813, 0.49286138],
+                             [- 6.26916209, -0.00129012, 0.00079089, 7.26787197, 0.99605545, 0.99791899, 0.49286178],
+                             [- 6.26917096, -0.00128958, 0.00079056, 7.26788138, 0.99605709, 0.99791985, 0.49286223],
+                             [- 6.26917981, -0.00128905, 0.00079024, 7.26789076, 0.99605873, 0.99792072, 0.49286266],
+                             [- 6.26918862, -0.00128851, 0.00078991, 7.26790011, 0.99606037, 0.99792158, 0.49286308],
+                             [- 6.26919740, -0.00128798, 0.00078958, 7.26790942, 0.99606201, 0.99792244, 0.49286350],
+                             [- 6.26920615, -0.00128744, 0.00078926, 7.26791871, 0.99606364, 0.99792330, 0.49286392],
+                             [- 6.26921488, -0.00128691, 0.00078893, 7.26792797, 0.99606528, 0.99792416, 0.49286436],
+                             [- 6.26922357, -0.00128638, 0.00078860, 7.26793719, 0.99606691, 0.99792502, 0.49286478],
+                             [- 6.26923223, -0.00128585, 0.00078828, 7.26794639, 0.99606854, 0.99792588, 0.49286521],
+                             [- 6.26924086, -0.00128531, 0.00078795, 7.26795555, 0.99607017, 0.99792673, 0.49286564],
+                             [- 6.26924947, -0.00128478, 0.00078763, 7.26796468, 0.99607180, 0.99792759, 0.49286605],
+                             [- 6.26925804, -0.00128425, 0.00078730, 7.26797379, 0.99607343, 0.99792845, 0.49286646],
+                             [- 6.26926658, -0.00128372, 0.00078698, 7.26798286, 0.99607506, 0.99792930, 0.49286689],
+                             [- 6.26927510, -0.00128319, 0.00078665, 7.26799191, 0.99607668, 0.99793016, 0.49286730],
+                             [- 6.26928358, -0.00128266, 0.00078633, 7.26800092, 0.99607831, 0.99793101, 0.49286770],
+                             [- 6.26929204, -0.00128213, 0.00078601, 7.26800991, 0.99607993, 0.99793186, 0.49286812],
+                             [- 6.26930047, -0.00128160, 0.00078568, 7.26801887, 0.99608155, 0.99793272, 0.49286854],
+                             [- 6.26930887, -0.00128107, 0.00078536, 7.26802779, 0.99608317, 0.99793357, 0.49286895],
+                             [- 6.26931724, -0.00128054, 0.00078504, 7.26803669, 0.99608479, 0.99793442, 0.49286937],
+                             [- 6.26932558, -0.00128002, 0.00078471, 7.26804556, 0.99608641, 0.99793527, 0.49286977],
+                             [- 6.26933389, -0.00127949, 0.00078439, 7.26805440, 0.99608802, 0.99793612, 0.49287019],
+                             [- 6.26934217, -0.00127896, 0.00078407, 7.26806321, 0.99608964, 0.99793697, 0.49287058],
+                             [- 6.26935043, -0.00127844, 0.00078375, 7.26807199, 0.99609125, 0.99793782, 0.49287100],
+                             [- 6.26935866, -0.00127791, 0.00078342, 7.26808075, 0.99609287, 0.99793867, 0.49287142],
+                             [- 6.26936686, -0.00127738, 0.00078310, 7.26808947, 0.99609448, 0.99793951, 0.49287182],
+                             [- 6.26937503, -0.00127686, 0.00078278, 7.26809817, 0.99609609, 0.99794036, 0.49287224],
+                             [- 6.26938317, -0.00127634, 0.00078246, 7.26810683, 0.99609769, 0.99794120, 0.49287263],
+                             [- 6.26939129, -0.00127581, 0.00078214, 7.26811547, 0.99609930, 0.99794205, 0.49287302],
+                             [- 6.26939937, -0.00127529, 0.00078182, 7.26812409, 0.99610091, 0.99794289, 0.49287345],
+                             [- 6.26940743, -0.00127476, 0.00078150, 7.26813267, 0.99610251, 0.99794374, 0.49287384],
+                             [- 6.26941547, -0.00127424, 0.00078118, 7.26814123, 0.99610411, 0.99794458, 0.49287423],
+                             [- 6.26942347, -0.00127372, 0.00078086, 7.26814975, 0.99610572, 0.99794542, 0.49287464],
+                             [- 6.26943145, -0.00127320, 0.00078054, 7.26815825, 0.99610732, 0.99794626, 0.49287504],
+                             [- 6.26943940, -0.00127267, 0.00078022, 7.26816673, 0.99610892, 0.99794711, 0.49287543],
+                             [- 6.26944732, -0.00127215, 0.00077990, 7.26817517, 0.99611051, 0.99794795, 0.49287581],
+                             [- 6.26945522, -0.00127163, 0.00077958, 7.26818359, 0.99611211, 0.99794879, 0.49287621],
+                             [- 6.26946309, -0.00127111, 0.00077926, 7.26819198, 0.99611370, 0.99794962, 0.49287661],
+                             [- 6.26947093, -0.00127059, 0.00077895, 7.26820034, 0.99611530, 0.99795046, 0.49287701],
+                             [- 6.26947875, -0.00127007, 0.00077863, 7.26820868, 0.99611689, 0.99795130, 0.49287739],
+                             [- 6.26948654, -0.00126955, 0.00077831, 7.26821698, 0.99611848, 0.99795214, 0.49287779],
+                             [- 6.26949430, -0.00126903, 0.00077799, 7.26822527, 0.99612007, 0.99795297, 0.49287817],
+                             [- 6.26950204, -0.00126852, 0.00077768, 7.26823352, 0.99612166, 0.99795381, 0.49287857],
+                             [- 6.26950975, -0.00126800, 0.00077736, 7.26824175, 0.99612325, 0.99795464, 0.49287896],
+                             [- 6.26951743, -0.00126748, 0.00077704, 7.26824995, 0.99612484, 0.99795548, 0.49287934],
+                             [- 6.26952509, -0.00126696, 0.00077673, 7.26825813, 0.99612642, 0.99795631, 0.49287973],
+                             [- 6.26953272, -0.00126645, 0.00077641, 7.26826627, 0.99612800, 0.99795714, 0.49288012],
+                             [- 6.26954033, -0.00126593, 0.00077609, 7.26827440, 0.99612959, 0.99795798, 0.49288050],
+                             [- 6.26954791, -0.00126541, 0.00077578, 7.26828249, 0.99613117, 0.99795881, 0.49288087],
+                             [- 6.26955546, -0.00126490, 0.00077546, 7.26829056, 0.99613275, 0.99795964, 0.49288126],
+                             [- 6.26956299, -0.00126438, 0.00077515, 7.26829860, 0.99613433, 0.99796047, 0.49288164],
+                             [- 6.26957049, -0.00126387, 0.00077483, 7.26830662, 0.99613590, 0.99796130, 0.49288203],
+                             [- 6.26957797, -0.00126335, 0.00077452, 7.26831461, 0.99613748, 0.99796213, 0.49288240],
+                             [- 6.26958542, -0.00126284, 0.00077420, 7.26832258, 0.99613905, 0.99796296, 0.49288278],
+                             [- 6.26959285, -0.00126233, 0.00077389, 7.26833052, 0.99614063, 0.99796378, 0.49288317],
+                             [- 6.26960025, -0.00126181, 0.00077357, 7.26833844, 0.99614220, 0.99796461, 0.49288354],
+                             [- 6.26960763, -0.00126130, 0.00077326, 7.26834632, 0.99614377, 0.99796544, 0.49288392],
+                             [- 6.26961498, -0.00126079, 0.00077295, 7.26835419, 0.99614534, 0.99796626, 0.49288432],
+                             [- 6.26962230, -0.00126028, 0.00077263, 7.26836203, 0.99614691, 0.99796709, 0.49288467],
+                             [- 6.26962961, -0.00125977, 0.00077232, 7.26836984, 0.99614847, 0.99796791, 0.49288504],
+                             [- 6.26963688, -0.00125926, 0.00077201, 7.26837763, 0.99615004, 0.99796874, 0.49288540],
+                             [- 6.26964414, -0.00125874, 0.00077170, 7.26838539, 0.99615160, 0.99796956, 0.49288580],
+                             [- 6.26965137, -0.00125823, 0.00077138, 7.26839313, 0.99615317, 0.99797038, 0.49288618],
+                             [- 6.26965857, -0.00125772, 0.00077107, 7.26840084, 0.99615473, 0.99797120, 0.49288651],
+                             [- 6.26966575, -0.00125722, 0.00077076, 7.26840853, 0.99615629, 0.99797202, 0.49288691],
+                             [- 6.26967290, -0.00125671, 0.00077045, 7.26841620, 0.99615785, 0.99797284, 0.49288729],
+                             [- 6.26968003, -0.00125620, 0.00077014, 7.26842384, 0.99615941, 0.99797366, 0.49288765],
+                             [- 6.26968714, -0.00125569, 0.00076983, 7.26843145, 0.99616097, 0.99797448, 0.49288801],
+                             [- 6.26969422, -0.00125518, 0.00076952, 7.26843904, 0.99616252, 0.99797530, 0.49288835],
+                             [- 6.26970128, -0.00125468, 0.00076920, 7.26844661, 0.99616408, 0.99797612, 0.49288872],
+                             [- 6.26970832, -0.00125417, 0.00076889, 7.26845415, 0.99616563, 0.99797694, 0.49288910],
+                             [- 6.26971533, -0.00125366, 0.00076858, 7.26846167, 0.99616718, 0.99797775, 0.49288946],
+                             [- 6.26972232, -0.00125316, 0.00076827, 7.26846916, 0.99616873, 0.99797857, 0.49288983],
+                             [- 6.26972928, -0.00125265, 0.00076797, 7.26847663, 0.99617028, 0.99797938, 0.49289019],
+                             [- 6.26973622, -0.00125214, 0.00076766, 7.26848408, 0.99617183, 0.99798020, 0.49289056],
+                             [- 6.26974314, -0.00125164, 0.00076735, 7.26849150, 0.99617338, 0.99798101, 0.49289092],
+                             [- 6.26975003, -0.00125114, 0.00076704, 7.26849890, 0.99617492, 0.99798183, 0.49289126],
+                             [- 6.26975691, -0.00125063, 0.00076673, 7.26850627, 0.99617647, 0.99798264, 0.49289162],
+                             [- 6.26976375, -0.00125013, 0.00076642, 7.26851363, 0.99617801, 0.99798345, 0.49289199],
+                             [- 6.26977058, -0.00124962, 0.00076611, 7.26852095, 0.99617955, 0.99798426, 0.49289234],
+                             [- 6.26977738, -0.00124912, 0.00076581, 7.26852826, 0.99618109, 0.99798507, 0.49289269],
+                             [- 6.26978416, -0.00124862, 0.00076550, 7.26853554, 0.99618263, 0.99798588, 0.49289304],
+                             [- 6.26979092, -0.00124812, 0.00076519, 7.26854280, 0.99618417, 0.99798669, 0.49289341],
+                             [- 6.26979765, -0.00124762, 0.00076488, 7.26855003, 0.99618571, 0.99798750, 0.49289376],
+                             [- 6.26980436, -0.00124711, 0.00076458, 7.26855725, 0.99618724, 0.99798831, 0.49289409],
+                             [- 6.26981105, -0.00124661, 0.00076427, 7.26856444, 0.99618878, 0.99798912, 0.49289444],
+                             [- 6.26981772, -0.00124611, 0.00076396, 7.26857160, 0.99619031, 0.99798992, 0.49289482],
+                             [- 6.26982436, -0.00124561, 0.00076366, 7.26857875, 0.99619184, 0.99799073, 0.49289516],
+                             [- 6.26983098, -0.00124511, 0.00076335, 7.26858587, 0.99619337, 0.99799154, 0.49289554],
+                             [- 6.26983758, -0.00124461, 0.00076305, 7.26859297, 0.99619490, 0.99799234, 0.49289586],
+                             [- 6.26984416, -0.00124412, 0.00076274, 7.26860004, 0.99619643, 0.99799314, 0.49289620],
+                             [- 6.26985071, -0.00124362, 0.00076244, 7.26860710, 0.99619796, 0.99799395, 0.49289657],
+                             [- 6.26985725, -0.00124312, 0.00076213, 7.26861413, 0.99619949, 0.99799475, 0.49289690],
+                             [- 6.26986376, -0.00124262, 0.00076183, 7.26862114, 0.99620101, 0.99799555, 0.49289724],
+                             [- 6.26987025, -0.00124212, 0.00076152, 7.26862812, 0.99620253, 0.99799636, 0.49289757],
+                             [- 6.26987672, -0.00124163, 0.00076122, 7.26863509, 0.99620406, 0.99799716, 0.49289792],
+                             [- 6.26988316, -0.00124113, 0.00076091, 7.26864203, 0.99620558, 0.99799796, 0.49289828],
+                             [- 6.26988959, -0.00124063, 0.00076061, 7.26864895, 0.99620710, 0.99799876, 0.49289862],
+                             [- 6.26989599, -0.00124014, 0.00076031, 7.26865585, 0.99620862, 0.99799956, 0.49289895],
+                             [- 6.26990237, -0.00123964, 0.00076000, 7.26866273, 0.99621013, 0.99800035, 0.49289931],
+                             [- 6.26990873, -0.00123915, 0.00075970, 7.26866958, 0.99621165, 0.99800115, 0.49289965],
+                             [- 6.26991507, -0.00123865, 0.00075940, 7.26867642, 0.99621317, 0.99800195, 0.49289998],
+                             [- 6.26992139, -0.00123816, 0.00075909, 7.26868323, 0.99621468, 0.99800275, 0.49290032],
+                             [- 6.26992769, -0.00123767, 0.00075879, 7.26869002, 0.99621619, 0.99800354, 0.49290066],
+                             [- 6.26993396, -0.00123717, 0.00075849, 7.26869679, 0.99621770, 0.99800434, 0.49290100],
+                             [- 6.26994022, -0.00123668, 0.00075819, 7.26870354, 0.99621921, 0.99800513, 0.49290132],
+                             [- 6.26994645, -0.00123619, 0.00075789, 7.26871027, 0.99622072, 0.99800593, 0.49290166],
+                             [- 6.26995267, -0.00123569, 0.00075758, 7.26871697, 0.99622223, 0.99800672, 0.49290199],
+                             [- 6.26995886, -0.00123520, 0.00075728, 7.26872366, 0.99622374, 0.99800751, 0.49290231],
+                             [- 6.26996503, -0.00123471, 0.00075698, 7.26873032, 0.99622524, 0.99800831, 0.49290268],
+                             [- 6.26997119, -0.00123422, 0.00075668, 7.26873697, 0.99622675, 0.99800910, 0.49290298],
+                             [- 6.26997732, -0.00123373, 0.00075638, 7.26874359, 0.99622825, 0.99800989, 0.49290333],
+                             [- 6.26998343, -0.00123324, 0.00075608, 7.26875019, 0.99622975, 0.99801068, 0.49290366],
+                             [- 6.26998952, -0.00123275, 0.00075578, 7.26875677, 0.99623126, 0.99801147, 0.49290397],
+                             [- 6.26999559, -0.00123226, 0.00075548, 7.26876333, 0.99623275, 0.99801226, 0.49290432],
+                             [- 6.27000164, -0.00123177, 0.00075518, 7.26876987, 0.99623425, 0.99801305, 0.49290464],
+                             [- 6.27000767, -0.00123128, 0.00075488, 7.26877639, 0.99623575, 0.99801384, 0.49290499],
+                             [- 6.27001368, -0.00123079, 0.00075458, 7.26878289, 0.99623725, 0.99801462, 0.49290530],
+                             [- 6.27001968, -0.00123031, 0.00075428, 7.26878937, 0.99623874, 0.99801541, 0.49290562],
+                             [- 6.27002565, -0.00122982, 0.00075399, 7.26879583, 0.99624024, 0.99801620, 0.49290596],
+                             [- 6.27003160, -0.00122933, 0.00075369, 7.26880227, 0.99624173, 0.99801698, 0.49290628],
+                             [- 6.27003753, -0.00122884, 0.00075339, 7.26880869, 0.99624322, 0.99801777, 0.49290660],
+                             [- 6.27004344, -0.00122836, 0.00075309, 7.26881508, 0.99624471, 0.99801855, 0.49290693],
+                             [- 6.27004933, -0.00122787, 0.00075279, 7.26882146, 0.99624620, 0.99801934, 0.49290725],
+                             [- 6.27005521, -0.00122739, 0.00075250, 7.26882782, 0.99624769, 0.99802012, 0.49290756],
+                             [- 6.27006106, -0.00122690, 0.00075220, 7.26883416, 0.99624917, 0.99802090, 0.49290790],
+                             [- 6.27006690, -0.00122642, 0.00075190, 7.26884048, 0.99625066, 0.99802168, 0.49290821],
+                             [- 6.27007271, -0.00122593, 0.00075160, 7.26884678, 0.99625214, 0.99802246, 0.49290851],
+                             [- 6.27007851, -0.00122545, 0.00075131, 7.26885306, 0.99625363, 0.99802324, 0.49290885],
+                             [- 6.27008428, -0.00122496, 0.00075101, 7.26885932, 0.99625511, 0.99802402, 0.49290916],
+                             [- 6.27009004, -0.00122448, 0.00075072, 7.26886556, 0.99625659, 0.99802480, 0.49290948],
+                             [- 6.27009578, -0.00122400, 0.00075042, 7.26887178, 0.99625807, 0.99802558, 0.49290980],
+                             [- 6.27010150, -0.00122351, 0.00075012, 7.26887799, 0.99625955, 0.99802636, 0.49291012],
+                             [- 6.27010720, -0.00122303, 0.00074983, 7.26888417, 0.99626102, 0.99802714, 0.49291045],
+                             [- 6.27011288, -0.00122255, 0.00074953, 7.26889033, 0.99626250, 0.99802792, 0.49291075],
+                             [- 6.27011855, -0.00122207, 0.00074924, 7.26889648, 0.99626398, 0.99802869, 0.49291108],
+                             [- 6.27012419, -0.00122159, 0.00074894, 7.26890260, 0.99626545, 0.99802947, 0.49291137],
+                             [- 6.27012982, -0.00122111, 0.00074865, 7.26890871, 0.99626692, 0.99803024, 0.49291169],
+                             [- 6.27013543, -0.00122063, 0.00074836, 7.26891480, 0.99626839, 0.99803102, 0.49291199],
+                             [- 6.27014102, -0.00122015, 0.00074806, 7.26892087, 0.99626986, 0.99803179, 0.49291232],
+                             [- 6.27014659, -0.00121967, 0.00074777, 7.26892692, 0.99627133, 0.99803257, 0.49291262],
+                             [- 6.27015214, -0.00121919, 0.00074747, 7.26893295, 0.99627280, 0.99803334, 0.49291295],
+                             [- 6.27015767, -0.00121871, 0.00074718, 7.26893897, 0.99627427, 0.99803411, 0.49291325],
+                             [- 6.27016319, -0.00121823, 0.00074689, 7.26894496, 0.99627574, 0.99803488, 0.49291356],
+                             [- 6.27016869, -0.00121775, 0.00074659, 7.26895094, 0.99627720, 0.99803565, 0.49291386],
+                             [- 6.27017417, -0.00121727, 0.00074630, 7.26895690, 0.99627866, 0.99803642, 0.49291418],
+                             [- 6.27017963, -0.00121680, 0.00074601, 7.26896284, 0.99628013, 0.99803719, 0.49291448],
+                             [- 6.27018508, -0.00121632, 0.00074572, 7.26896876, 0.99628159, 0.99803796, 0.49291478],
+                             [- 6.27019050, -0.00121584, 0.00074543, 7.26897466, 0.99628305, 0.99803873, 0.49291509],
+                             [- 6.27019591, -0.00121537, 0.00074513, 7.26898055, 0.99628451, 0.99803950, 0.49291539],
+                             [- 6.27020130, -0.00121489, 0.00074484, 7.26898641, 0.99628596, 0.99804027, 0.49291571],
+                             [- 6.27020668, -0.00121441, 0.00074455, 7.26899226, 0.99628742, 0.99804103, 0.49291599],
+                             [- 6.27021203, -0.00121394, 0.00074426, 7.26899810, 0.99628888, 0.99804180, 0.49291629],
+                             [- 6.27021737, -0.00121346, 0.00074397, 7.26900391, 0.99629033, 0.99804257, 0.49291660],
+                             [- 6.27022270, -0.00121299, 0.00074368, 7.26900971, 0.99629178, 0.99804333, 0.49291688],
+                             [- 6.27022800, -0.00121252, 0.00074339, 7.26901548, 0.99629324, 0.99804410, 0.49291722],
+                             [- 6.27023329, -0.00121204, 0.00074310, 7.26902124, 0.99629469, 0.99804486, 0.49291750],
+                             [- 6.27023856, -0.00121157, 0.00074281, 7.26902699, 0.99629614, 0.99804562, 0.49291781],
+                             [- 6.27024381, -0.00121110, 0.00074252, 7.26903271, 0.99629759, 0.99804639, 0.49291812],
+                             [- 6.27024904, -0.00121062, 0.00074223, 7.26903842, 0.99629903, 0.99804715, 0.49291840],
+                             [- 6.27025426, -0.00121015, 0.00074194, 7.26904411, 0.99630048, 0.99804791, 0.49291870],
+                             [- 6.27025946, -0.00120968, 0.00074165, 7.26904979, 0.99630193, 0.99804867, 0.49291902],
+                             [- 6.27026465, -0.00120921, 0.00074136, 7.26905544, 0.99630337, 0.99804943, 0.49291932],
+                             [- 6.27026982, -0.00120874, 0.00074107, 7.26906108, 0.99630481, 0.99805019, 0.49291960],
+                             [- 6.27027497, -0.00120827, 0.00074078, 7.26906670, 0.99630626, 0.99805095, 0.49291988],
+                             [- 6.27028010, -0.00120780, 0.00074050, 7.26907231, 0.99630770, 0.99805171, 0.49292018],
+                             [- 6.27028522, -0.00120732, 0.00074021, 7.26907789, 0.99630914, 0.99805247, 0.49292047],
+                             [- 6.27029032, -0.00120686, 0.00073992, 7.26908347, 0.99631057, 0.99805322, 0.49292077],
+                             [- 6.27029541, -0.00120639, 0.00073963, 7.26908902, 0.99631201, 0.99805398, 0.49292106],
+                             [- 6.27030047, -0.00120592, 0.00073934, 7.26909456, 0.99631345, 0.99805474, 0.49292137],
+                             [- 6.27030552, -0.00120545, 0.00073906, 7.26910008, 0.99631488, 0.99805549, 0.49292164],
+                             [- 6.27031056, -0.00120498, 0.00073877, 7.26910558, 0.99631632, 0.99805625, 0.49292193],
+                             [- 6.27031558, -0.00120451, 0.00073848, 7.26911107, 0.99631775, 0.99805700, 0.49292223],
+                             [- 6.27032058, -0.00120404, 0.00073820, 7.26911654, 0.99631918, 0.99805776, 0.49292252],
+                             [- 6.27032557, -0.00120358, 0.00073791, 7.26912199, 0.99632061, 0.99805851, 0.49292278],
+                             [- 6.27033054, -0.00120311, 0.00073763, 7.26912743, 0.99632204, 0.99805926, 0.49292312],
+                             [- 6.27033549, -0.00120264, 0.00073734, 7.26913285, 0.99632347, 0.99806002, 0.49292338],
+                             [- 6.27034043, -0.00120218, 0.00073705, 7.26913825, 0.99632490, 0.99806077, 0.49292367],
+                             [- 6.27034536, -0.00120171, 0.00073677, 7.26914364, 0.99632633, 0.99806152, 0.49292394],
+                             [- 6.27035026, -0.00120125, 0.00073648, 7.26914902, 0.99632775, 0.99806227, 0.49292425],
+                             [- 6.27035515, -0.00120078, 0.00073620, 7.26915437, 0.99632918, 0.99806302, 0.49292452],
+                             [- 6.27036003, -0.00120032, 0.00073591, 7.26915971, 0.99633060, 0.99806377, 0.49292480],
+                             [- 6.27036489, -0.00119985, 0.00073563, 7.26916504, 0.99633202, 0.99806452, 0.49292511],
+                             [- 6.27036973, -0.00119939, 0.00073535, 7.26917034, 0.99633344, 0.99806527, 0.49292536],
+                             [- 6.27037456, -0.00119892, 0.00073506, 7.26917564, 0.99633486, 0.99806601, 0.49292567],
+                             [- 6.27037937, -0.00119846, 0.00073478, 7.26918091, 0.99633628, 0.99806676, 0.49292595],
+                             [- 6.27038417, -0.00119800, 0.00073449, 7.26918617, 0.99633770, 0.99806751, 0.49292622],
+                             [- 6.27038895, -0.00119754, 0.00073421, 7.26919142, 0.99633912, 0.99806825, 0.49292651],
+                             [- 6.27039372, -0.00119707, 0.00073393, 7.26919664, 0.99634053, 0.99806900, 0.49292678],
+                             [- 6.27039847, -0.00119661, 0.00073364, 7.26920186, 0.99634195, 0.99806974, 0.49292707],
+                             [- 6.27040321, -0.00119615, 0.00073336, 7.26920706, 0.99634336, 0.99807049, 0.49292736],
+                             [- 6.27040793, -0.00119569, 0.00073308, 7.26921224, 0.99634477, 0.99807123, 0.49292762],
+                             [- 6.27041263, -0.00119523, 0.00073280, 7.26921740, 0.99634618, 0.99807198, 0.49292790],
+                             [- 6.27041732, -0.00119477, 0.00073251, 7.26922256, 0.99634759, 0.99807272, 0.49292816],
+                             [- 6.27042200, -0.00119431, 0.00073223, 7.26922769, 0.99634900, 0.99807346, 0.49292845],
+                             [- 6.27042666, -0.00119385, 0.00073195, 7.26923281, 0.99635041, 0.99807420, 0.49292873],
+                             [- 6.27043131, -0.00119339, 0.00073167, 7.26923792, 0.99635182, 0.99807494, 0.49292902],
+                             [- 6.27043594, -0.00119293, 0.00073139, 7.26924301, 0.99635322, 0.99807568, 0.49292929],
+                             [- 6.27044055, -0.00119247, 0.00073111, 7.26924808, 0.99635463, 0.99807642, 0.49292955],
+                             [- 6.27044516, -0.00119201, 0.00073083, 7.26925314, 0.99635603, 0.99807716, 0.49292983],
+                             [- 6.27044974, -0.00119155, 0.00073054, 7.26925819, 0.99635743, 0.99807790, 0.49293011],
+                             [- 6.27045432, -0.00119110, 0.00073026, 7.26926322, 0.99635884, 0.99807864, 0.49293037],
+                             [- 6.27045887, -0.00119064, 0.00072998, 7.26926823, 0.99636024, 0.99807938, 0.49293066],
+                             [- 6.27046342, -0.00119018, 0.00072970, 7.26927323, 0.99636164, 0.99808011, 0.49293095],
+                             [- 6.27046795, -0.00118973, 0.00072942, 7.26927822, 0.99636303, 0.99808085, 0.49293118],
+                             [- 6.27047246, -0.00118927, 0.00072914, 7.26928319, 0.99636443, 0.99808158, 0.49293146],
+                             [- 6.27047696, -0.00118881, 0.00072887, 7.26928815, 0.99636583, 0.99808232, 0.49293175],
+                             [- 6.27048145, -0.00118836, 0.00072859, 7.26929309, 0.99636722, 0.99808305, 0.49293201],
+                             [- 6.27048592, -0.00118790, 0.00072831, 7.26929802, 0.99636862, 0.99808379, 0.49293228],
+                             [- 6.27049038, -0.00118745, 0.00072803, 7.26930293, 0.99637001, 0.99808452, 0.49293255],
+                             [- 6.27049482, -0.00118699, 0.00072775, 7.26930783, 0.99637140, 0.99808526, 0.49293281],
+                             [- 6.27049925, -0.00118654, 0.00072747, 7.26931271, 0.99637279, 0.99808599, 0.49293309],
+                             [- 6.27050366, -0.00118609, 0.00072719, 7.26931758, 0.99637418, 0.99808672, 0.49293334],
+                             [- 6.27050807, -0.00118563, 0.00072692, 7.26932243, 0.99637557, 0.99808745, 0.49293360],
+                             [- 6.27051245, -0.00118518, 0.00072664, 7.26932727, 0.99637696, 0.99808818, 0.49293390],
+                             [- 6.27051683, -0.00118473, 0.00072636, 7.26933210, 0.99637835, 0.99808891, 0.49293415],
+                             [- 6.27052119, -0.00118427, 0.00072608, 7.26933691, 0.99637973, 0.99808964, 0.49293444],
+                             [- 6.27052553, -0.00118382, 0.00072581, 7.26934171, 0.99638112, 0.99809037, 0.49293467],
+                             [- 6.27052986, -0.00118337, 0.00072553, 7.26934649, 0.99638250, 0.99809110, 0.49293494],
+                             [- 6.27053418, -0.00118292, 0.00072525, 7.26935126, 0.99638388, 0.99809183, 0.49293521],
+                             [- 6.27053849, -0.00118247, 0.00072498, 7.26935602, 0.99638526, 0.99809256, 0.49293547],
+                             [- 6.27054278, -0.00118202, 0.00072470, 7.26936076, 0.99638664, 0.99809328, 0.49293575],
+                             [- 6.27054706, -0.00118157, 0.00072442, 7.26936549, 0.99638802, 0.99809401, 0.49293600],
+                             [- 6.27055132, -0.00118112, 0.00072415, 7.26937020, 0.99638940, 0.99809474, 0.49293625],
+                             [- 6.27055557, -0.00118067, 0.00072387, 7.26937491, 0.99639078, 0.99809546, 0.49293651],
+                             [- 6.27055981, -0.00118022, 0.00072360, 7.26937959, 0.99639215, 0.99809619, 0.49293677],
+                             [- 6.27056403, -0.00117977, 0.00072332, 7.26938427, 0.99639353, 0.99809691, 0.49293703],
+                             [- 6.27056825, -0.00117932, 0.00072305, 7.26938893, 0.99639490, 0.99809763, 0.49293729],
+                             [- 6.27057244, -0.00117887, 0.00072277, 7.26939357, 0.99639628, 0.99809836, 0.49293754],
+                             [- 6.27057663, -0.00117842, 0.00072250, 7.26939820, 0.99639765, 0.99809908, 0.49293783],
+                             [- 6.27058080, -0.00117798, 0.00072222, 7.26940282, 0.99639902, 0.99809980, 0.49293807],
+                             [- 6.27058496, -0.00117753, 0.00072195, 7.26940743, 0.99640039, 0.99810052, 0.49293833],
+                             [- 6.27058910, -0.00117708, 0.00072167, 7.26941202, 0.99640176, 0.99810124, 0.49293858],
+                             [- 6.27059324, -0.00117663, 0.00072140, 7.26941660, 0.99640312, 0.99810196, 0.49293885],
+                             [- 6.27059736, -0.00117619, 0.00072113, 7.26942117, 0.99640449, 0.99810268, 0.49293910],
+                             [- 6.27060146, -0.00117574, 0.00072085, 7.26942572, 0.99640586, 0.99810340, 0.49293936],
+                             [- 6.27060556, -0.00117530, 0.00072058, 7.26943026, 0.99640722, 0.99810412, 0.49293961],
+                             [- 6.27060964, -0.00117485, 0.00072031, 7.26943479, 0.99640859, 0.99810484, 0.49293988],
+                             [- 6.27061371, -0.00117441, 0.00072004, 7.26943930, 0.99640995, 0.99810556, 0.49294014],
+                             [- 6.27061776, -0.00117396, 0.00071976, 7.26944380, 0.99641131, 0.99810628, 0.49294037],
+                             [- 6.27062180, -0.00117352, 0.00071949, 7.26944829, 0.99641267, 0.99810699, 0.49294061],
+                             [- 6.27062583, -0.00117307, 0.00071922, 7.26945276, 0.99641403, 0.99810771, 0.49294091],
+                             [- 6.27062985, -0.00117263, 0.00071895, 7.26945722, 0.99641539, 0.99810842, 0.49294113],
+                             [- 6.27063386, -0.00117219, 0.00071867, 7.26946167, 0.99641675, 0.99810914, 0.49294137],
+                             [- 6.27063785, -0.00117174, 0.00071840, 7.26946611, 0.99641810, 0.99810985, 0.49294161],
+                             [- 6.27064183, -0.00117130, 0.00071813, 7.26947053, 0.99641946, 0.99811057, 0.49294187],
+                             [- 6.27064580, -0.00117086, 0.00071786, 7.26947494, 0.99642081, 0.99811128, 0.49294216],
+                             [- 6.27064976, -0.00117042, 0.00071759, 7.26947934, 0.99642217, 0.99811199, 0.49294239],
+                             [- 6.27065370, -0.00116997, 0.00071732, 7.26948372, 0.99642352, 0.99811271, 0.49294263],
+                             [- 6.27065763, -0.00116953, 0.00071705, 7.26948810, 0.99642487, 0.99811342, 0.49294289],
+                             [- 6.27066155, -0.00116909, 0.00071678, 7.26949246, 0.99642622, 0.99811413, 0.49294314],
+                             [- 6.27066546, -0.00116865, 0.00071651, 7.26949680, 0.99642757, 0.99811484, 0.49294338],
+                             [- 6.27066935, -0.00116821, 0.00071624, 7.26950114, 0.99642892, 0.99811555, 0.49294362],
+                             [- 6.27067323, -0.00116777, 0.00071597, 7.26950546, 0.99643026, 0.99811626, 0.49294387],
+                             [- 6.27067711, -0.00116733, 0.00071570, 7.26950977, 0.99643161, 0.99811697, 0.49294414],
+                             [- 6.27068096, -0.00116689, 0.00071543, 7.26951407, 0.99643296, 0.99811768, 0.49294435],
+                             [- 6.27068481, -0.00116645, 0.00071516, 7.26951836, 0.99643430, 0.99811839, 0.49294462],
+                             [- 6.27068865, -0.00116601, 0.00071489, 7.26952263, 0.99643564, 0.99811909, 0.49294486],
+                             [- 6.27069247, -0.00116558, 0.00071462, 7.26952689, 0.99643699, 0.99811980, 0.49294512],
+                             [- 6.27069628, -0.00116514, 0.00071435, 7.26953114, 0.99643833, 0.99812051, 0.49294533],
+                             [- 6.27070008, -0.00116470, 0.00071409, 7.26953538, 0.99643967, 0.99812121, 0.49294559],
+                             [- 6.27070387, -0.00116426, 0.00071382, 7.26953961, 0.99644101, 0.99812192, 0.49294582],
+                             [- 6.27070765, -0.00116383, 0.00071355, 7.26954382, 0.99644235, 0.99812262, 0.49294607],
+                             [- 6.27071141, -0.00116339, 0.00071328, 7.26954802, 0.99644368, 0.99812333, 0.49294633],
+                             [- 6.27071516, -0.00116295, 0.00071301, 7.26955221, 0.99644502, 0.99812403, 0.49294657],
+                             [- 6.27071891, -0.00116252, 0.00071275, 7.26955639, 0.99644635, 0.99812474, 0.49294678],
+                             [- 6.27072264, -0.00116208, 0.00071248, 7.26956056, 0.99644769, 0.99812544, 0.49294701],
+                             [- 6.27072636, -0.00116165, 0.00071221, 7.26956471, 0.99644902, 0.99812614, 0.49294726],
+                             [- 6.27073006, -0.00116121, 0.00071195, 7.26956885, 0.99645035, 0.99812684, 0.49294753],
+                             [- 6.27073376, -0.00116078, 0.00071168, 7.26957298, 0.99645169, 0.99812755, 0.49294774],
+                             [- 6.27073744, -0.00116034, 0.00071141, 7.26957710, 0.99645302, 0.99812825, 0.49294799],
+                             [- 6.27074112, -0.00115991, 0.00071115, 7.26958121, 0.99645434, 0.99812895, 0.49294824],
+                             [- 6.27074478, -0.00115947, 0.00071088, 7.26958531, 0.99645567, 0.99812965, 0.49294849],
+                             [- 6.27074843, -0.00115904, 0.00071062, 7.26958939, 0.99645700, 0.99813035, 0.49294867],
+                             [- 6.27075207, -0.00115861, 0.00071035, 7.26959347, 0.99645833, 0.99813104, 0.49294894],
+                             [- 6.27075570, -0.00115817, 0.00071008, 7.26959753, 0.99645965, 0.99813174, 0.49294918],
+                             [- 6.27075932, -0.00115774, 0.00070982, 7.26960158, 0.99646098, 0.99813244, 0.49294940],
+                             [- 6.27076293, -0.00115731, 0.00070955, 7.26960562, 0.99646230, 0.99813314, 0.49294966],
+                             [- 6.27076652, -0.00115688, 0.00070929, 7.26960965, 0.99646362, 0.99813383, 0.49294988],
+                             [- 6.27077011, -0.00115644, 0.00070902, 7.26961366, 0.99646494, 0.99813453, 0.49295014],
+                             [- 6.27077368, -0.00115601, 0.00070876, 7.26961767, 0.99646626, 0.99813523, 0.49295035],
+                             [- 6.27077724, -0.00115558, 0.00070850, 7.26962166, 0.99646758, 0.99813592, 0.49295058],
+                             [- 6.27078080, -0.00115515, 0.00070823, 7.26962565, 0.99646890, 0.99813662, 0.49295081],
+                             [- 6.27078434, -0.00115472, 0.00070797, 7.26962962, 0.99647022, 0.99813731, 0.49295107],
+                             [- 6.27078787, -0.00115429, 0.00070770, 7.26963358, 0.99647154, 0.99813800, 0.49295129],
+                             [- 6.27079139, -0.00115386, 0.00070744, 7.26963753, 0.99647285, 0.99813870, 0.49295151],
+                             [- 6.27079490, -0.00115343, 0.00070718, 7.26964147, 0.99647417, 0.99813939, 0.49295175],
+                             [- 6.27079840, -0.00115300, 0.00070692, 7.26964540, 0.99647548, 0.99814008, 0.49295200],
+                             [- 6.27080189, -0.00115257, 0.00070665, 7.26964931, 0.99647679, 0.99814077, 0.49295221],
+                             [- 6.27080537, -0.00115215, 0.00070639, 7.26965322, 0.99647810, 0.99814146, 0.49295246],
+                             [- 6.27080883, -0.00115172, 0.00070613, 7.26965711, 0.99647941, 0.99814215, 0.49295267],
+                             [- 6.27081229, -0.00115129, 0.00070586, 7.26966100, 0.99648072, 0.99814284, 0.49295289],
+                             [- 6.27081574, -0.00115086, 0.00070560, 7.26966487, 0.99648203, 0.99814353, 0.49295314],
+                             [- 6.27081917, -0.00115044, 0.00070534, 7.26966874, 0.99648334, 0.99814422, 0.49295337],
+                             [- 6.27082260, -0.00115001, 0.00070508, 7.26967259, 0.99648465, 0.99814491, 0.49295357],
+                             [- 6.27082601, -0.00114958, 0.00070482, 7.26967643, 0.99648595, 0.99814560, 0.49295381],
+                             [- 6.27082942, -0.00114916, 0.00070456, 7.26968026, 0.99648726, 0.99814629, 0.49295404],
+                             [- 6.27083281, -0.00114873, 0.00070430, 7.26968408, 0.99648856, 0.99814697, 0.49295428],
+                             [- 6.27083620, -0.00114830, 0.00070403, 7.26968789, 0.99648986, 0.99814766, 0.49295451],
+                             [- 6.27083957, -0.00114788, 0.00070377, 7.26969169, 0.99649117, 0.99814835, 0.49295473],
+                             [- 6.27084294, -0.00114745, 0.00070351, 7.26969548, 0.99649247, 0.99814903, 0.49295497],
+                             [- 6.27084629, -0.00114703, 0.00070325, 7.26969926, 0.99649377, 0.99814972, 0.49295518],
+                             [- 6.27084964, -0.00114661, 0.00070299, 7.26970303, 0.99649507, 0.99815040, 0.49295540],
+                             [- 6.27085297, -0.00114618, 0.00070273, 7.26970679, 0.99649636, 0.99815109, 0.49295563],
+                             [- 6.27085630, -0.00114576, 0.00070247, 7.26971054, 0.99649766, 0.99815177, 0.49295584],
+                             [- 6.27085961, -0.00114533, 0.00070221, 7.26971428, 0.99649896, 0.99815245, 0.49295609],
+                             [- 6.27086292, -0.00114491, 0.00070195, 7.26971800, 0.99650025, 0.99815313, 0.49295629],
+                             [- 6.27086621, -0.00114449, 0.00070169, 7.26972172, 0.99650155, 0.99815382, 0.49295653],
+                             [- 6.27086950, -0.00114407, 0.00070144, 7.26972543, 0.99650284, 0.99815450, 0.49295673],
+                             [- 6.27087277, -0.00114364, 0.00070118, 7.26972913, 0.99650413, 0.99815518, 0.49295696],
+                             [- 6.27087604, -0.00114322, 0.00070092, 7.26973281, 0.99650542, 0.99815586, 0.49295720],
+                             [- 6.27087929, -0.00114280, 0.00070066, 7.26973649, 0.99650671, 0.99815654, 0.49295739],
+                             [- 6.27088254, -0.00114238, 0.00070040, 7.26974016, 0.99650800, 0.99815722, 0.49295764],
+                             [- 6.27088577, -0.00114196, 0.00070014, 7.26974382, 0.99650929, 0.99815790, 0.49295785],
+                             [- 6.27088900, -0.00114154, 0.00069989, 7.26974746, 0.99651058, 0.99815858, 0.49295811],
+                             [- 6.27089222, -0.00114112, 0.00069963, 7.26975110, 0.99651187, 0.99815925, 0.49295829],
+                             [- 6.27089543, -0.00114070, 0.00069937, 7.26975473, 0.99651315, 0.99815993, 0.49295850],
+                             [- 6.27089862, -0.00114028, 0.00069911, 7.26975835, 0.99651444, 0.99816061, 0.49295875],
+                             [- 6.27090181, -0.00113986, 0.00069886, 7.26976195, 0.99651572, 0.99816129, 0.49295895],
+                             [- 6.27090499, -0.00113944, 0.00069860, 7.26976555, 0.99651700, 0.99816196, 0.49295918],
+                             [- 6.27090816, -0.00113902, 0.00069834, 7.26976914, 0.99651829, 0.99816264, 0.49295938],
+                             [- 6.27091132, -0.00113860, 0.00069809, 7.26977272, 0.99651957, 0.99816331, 0.49295963],
+                             [- 6.27091447, -0.00113818, 0.00069783, 7.26977629, 0.99652085, 0.99816399, 0.49295982],
+                             [- 6.27091762, -0.00113777, 0.00069757, 7.26977985, 0.99652213, 0.99816466, 0.49296003],
+                             [- 6.27092075, -0.00113735, 0.00069732, 7.26978340, 0.99652340, 0.99816533, 0.49296028],
+                             [- 6.27092387, -0.00113693, 0.00069706, 7.26978694, 0.99652468, 0.99816601, 0.49296049],
+                             [- 6.27092699, -0.00113651, 0.00069681, 7.26979047, 0.99652596, 0.99816668, 0.49296071],
+                             [- 6.27093009, -0.00113610, 0.00069655, 7.26979399, 0.99652723, 0.99816735, 0.49296091],
+                             [- 6.27093319, -0.00113568, 0.00069629, 7.26979751, 0.99652851, 0.99816802, 0.49296112],
+                             [- 6.27093627, -0.00113527, 0.00069604, 7.26980101, 0.99652978, 0.99816869, 0.49296137],
+                             [- 6.27093935, -0.00113485, 0.00069578, 7.26980450, 0.99653105, 0.99816937, 0.49296155],
+                             [- 6.27094242, -0.00113443, 0.00069553, 7.26980799, 0.99653232, 0.99817004, 0.49296176],
+                             [- 6.27094548, -0.00113402, 0.00069528, 7.26981146, 0.99653360, 0.99817070, 0.49296198],
+                             [- 6.27094853, -0.00113360, 0.00069502, 7.26981493, 0.99653487, 0.99817137, 0.49296221],
+                             [- 6.27095157, -0.00113319, 0.00069477, 7.26981838, 0.99653613, 0.99817204, 0.49296241],
+                             [- 6.27095461, -0.00113278, 0.00069451, 7.26982183, 0.99653740, 0.99817271, 0.49296261],
+                             [- 6.27095763, -0.00113236, 0.00069426, 7.26982527, 0.99653867, 0.99817338, 0.49296284],
+                             [- 6.27096065, -0.00113195, 0.00069401, 7.26982870, 0.99653994, 0.99817405, 0.49296306],
+                             [- 6.27096365, -0.00113154, 0.00069375, 7.26983212, 0.99654120, 0.99817471, 0.49296324],
+                             [- 6.27096665, -0.00113112, 0.00069350, 7.26983553, 0.99654246, 0.99817538, 0.49296349],
+                             [- 6.27096964, -0.00113071, 0.00069325, 7.26983893, 0.99654373, 0.99817604, 0.49296367],
+                             [- 6.27097262, -0.00113030, 0.00069299, 7.26984232, 0.99654499, 0.99817671, 0.49296390],
+                             [- 6.27097559, -0.00112989, 0.00069274, 7.26984571, 0.99654625, 0.99817737, 0.49296411],
+                             [- 6.27097856, -0.00112947, 0.00069249, 7.26984908, 0.99654751, 0.99817804, 0.49296432],
+                             [- 6.27098151, -0.00112906, 0.00069224, 7.26985245, 0.99654877, 0.99817870, 0.49296451],
+                             [- 6.27098446, -0.00112865, 0.00069198, 7.26985581, 0.99655003, 0.99817937, 0.49296475],
+                             [- 6.27098739, -0.00112824, 0.00069173, 7.26985915, 0.99655129, 0.99818003, 0.49296493],
+                             [- 6.27099032, -0.00112783, 0.00069148, 7.26986249, 0.99655255, 0.99818069, 0.49296516],
+                             [- 6.27099324, -0.00112742, 0.00069123, 7.26986583, 0.99655380, 0.99818135, 0.49296535],
+                             [- 6.27099616, -0.00112701, 0.00069098, 7.26986915, 0.99655506, 0.99818202, 0.49296556],
+                             [- 6.27099906, -0.00112660, 0.00069072, 7.26987246, 0.99655631, 0.99818268, 0.49296577],
+                             [- 6.27100196, -0.00112619, 0.00069047, 7.26987577, 0.99655756, 0.99818334, 0.49296597],
+                             [- 6.27100484, -0.00112578, 0.00069022, 7.26987906, 0.99655882, 0.99818400, 0.49296619],
+                             [- 6.27100772, -0.00112537, 0.00068997, 7.26988235, 0.99656007, 0.99818466, 0.49296639],
+                             [- 6.27101059, -0.00112496, 0.00068972, 7.26988563, 0.99656132, 0.99818532, 0.49296663],
+                             [- 6.27101345, -0.00112455, 0.00068947, 7.26988890, 0.99656257, 0.99818597, 0.49296681],
+                             [- 6.27101631, -0.00112415, 0.00068922, 7.26989216, 0.99656382, 0.99818663, 0.49296699],
+                             [- 6.27101915, -0.00112374, 0.00068897, 7.26989541, 0.99656506, 0.99818729, 0.49296722],
+                             [- 6.27102199, -0.00112333, 0.00068872, 7.26989866, 0.99656631, 0.99818795, 0.49296743],
+                             [- 6.27102482, -0.00112292, 0.00068847, 7.26990189, 0.99656756, 0.99818860, 0.49296764],
+                             [- 6.27102764, -0.00112252, 0.00068822, 7.26990512, 0.99656880, 0.99818926, 0.49296783],
+                             [- 6.27103045, -0.00112211, 0.00068797, 7.26990834, 0.99657005, 0.99818992, 0.49296802],
+                             [- 6.27103326, -0.00112171, 0.00068772, 7.26991155, 0.99657129, 0.99819057, 0.49296822],
+                             [- 6.27103606, -0.00112130, 0.00068747, 7.26991476, 0.99657253, 0.99819123, 0.49296843],
+                             [- 6.27103885, -0.00112089, 0.00068723, 7.26991795, 0.99657377, 0.99819188, 0.49296863],
+                             [- 6.27104163, -0.00112049, 0.00068698, 7.26992114, 0.99657501, 0.99819253, 0.49296882],
+                             [- 6.27104440, -0.00112008, 0.00068673, 7.26992432, 0.99657625, 0.99819319, 0.49296903],
+                             [- 6.27104717, -0.00111968, 0.00068648, 7.26992749, 0.99657749, 0.99819384, 0.49296925],
+                             [- 6.27104992, -0.00111927, 0.00068623, 7.26993065, 0.99657873, 0.99819449, 0.49296948],
+                             [- 6.27105267, -0.00111887, 0.00068599, 7.26993380, 0.99657997, 0.99819514, 0.49296966],
+                             [- 6.27105541, -0.00111847, 0.00068574, 7.26993695, 0.99658120, 0.99819580, 0.49296986],
+                             [- 6.27105815, -0.00111806, 0.00068549, 7.26994009, 0.99658244, 0.99819645, 0.49297006],
+                             [- 6.27106088, -0.00111766, 0.00068524, 7.26994322, 0.99658367, 0.99819710, 0.49297025],
+                             [- 6.27106359, -0.00111726, 0.00068500, 7.26994634, 0.99658491, 0.99819775, 0.49297043],
+                             [- 6.27106630, -0.00111685, 0.00068475, 7.26994945, 0.99658614, 0.99819840, 0.49297064],
+                             [- 6.27106901, -0.00111645, 0.00068450, 7.26995256, 0.99658737, 0.99819905, 0.49297085],
+                             [- 6.27107170, -0.00111605, 0.00068426, 7.26995565, 0.99658860, 0.99819970, 0.49297106],
+                             [- 6.27107439, -0.00111565, 0.00068401, 7.26995874, 0.99658983, 0.99820034, 0.49297123],
+                             [- 6.27107707, -0.00111525, 0.00068376, 7.26996183, 0.99659106, 0.99820099, 0.49297145],
+                             [- 6.27107974, -0.00111484, 0.00068352, 7.26996490, 0.99659229, 0.99820164, 0.49297165],
+                             [- 6.27108241, -0.00111444, 0.00068327, 7.26996797, 0.99659352, 0.99820229, 0.49297182],
+                             [- 6.27108507, -0.00111404, 0.00068302, 7.26997103, 0.99659474, 0.99820293, 0.49297202],
+                             [- 6.27108772, -0.00111364, 0.00068278, 7.26997408, 0.99659597, 0.99820358, 0.49297222],
+                             [- 6.27109036, -0.00111324, 0.00068253, 7.26997712, 0.99659719, 0.99820422, 0.49297241],
+                             [- 6.27109300, -0.00111284, 0.00068229, 7.26998015, 0.99659842, 0.99820487, 0.49297262],
+                             [- 6.27109562, -0.00111244, 0.00068204, 7.26998318, 0.99659964, 0.99820551, 0.49297281],
+                             [- 6.27109825, -0.00111204, 0.00068180, 7.26998620, 0.99660086, 0.99820616, 0.49297301],
+                             [- 6.27110086, -0.00111164, 0.00068155, 7.26998921, 0.99660208, 0.99820680, 0.49297320],
+                             [- 6.27110347, -0.00111125, 0.00068131, 7.26999222, 0.99660330, 0.99820744, 0.49297339],
+                             [- 6.27110606, -0.00111085, 0.00068106, 7.26999522, 0.99660452, 0.99820809, 0.49297359],
+                             [- 6.27110866, -0.00111045, 0.00068082, 7.26999821, 0.99660574, 0.99820873, 0.49297380],
+                             [- 6.27111124, -0.00111005, 0.00068058, 7.27000119, 0.99660696, 0.99820937, 0.49297397],
+                             [- 6.27111382, -0.00110965, 0.00068033, 7.27000416, 0.99660818, 0.99821001, 0.49297417],
+                             [- 6.27111639, -0.00110926, 0.00068009, 7.27000713, 0.99660939, 0.99821065, 0.49297437],
+                             [- 6.27111895, -0.00110886, 0.00067985, 7.27001009, 0.99661061, 0.99821129, 0.49297456],
+                             [- 6.27112151, -0.00110846, 0.00067960, 7.27001304, 0.99661182, 0.99821193, 0.49297477],
+                             [- 6.27112405, -0.00110807, 0.00067936, 7.27001599, 0.99661303, 0.99821257, 0.49297493],
+                             [- 6.27112660, -0.00110767, 0.00067912, 7.27001892, 0.99661425, 0.99821321, 0.49297516],
+                             [- 6.27112913, -0.00110728, 0.00067887, 7.27002185, 0.99661546, 0.99821385, 0.49297533],
+                             [- 6.27113166, -0.00110688, 0.00067863, 7.27002478, 0.99661667, 0.99821449, 0.49297550],
+                             [- 6.27113418, -0.00110648, 0.00067839, 7.27002769, 0.99661788, 0.99821513, 0.49297572],
+                             [- 6.27113669, -0.00110609, 0.00067815, 7.27003060, 0.99661909, 0.99821576, 0.49297589],
+                             [- 6.27113920, -0.00110569, 0.00067790, 7.27003350, 0.99662030, 0.99821640, 0.49297607],
+                             [- 6.27114170, -0.00110530, 0.00067766, 7.27003640, 0.99662150, 0.99821704, 0.49297628],
+                             [- 6.27114419, -0.00110491, 0.00067742, 7.27003928, 0.99662271, 0.99821767, 0.49297646],
+                             [- 6.27114668, -0.00110451, 0.00067718, 7.27004216, 0.99662392, 0.99821831, 0.49297664],
+                             [- 6.27114915, -0.00110412, 0.00067694, 7.27004504, 0.99662512, 0.99821894, 0.49297684],
+                             [- 6.27115163, -0.00110372, 0.00067670, 7.27004790, 0.99662632, 0.99821958, 0.49297702],
+                             [- 6.27115409, -0.00110333, 0.00067646, 7.27005076, 0.99662753, 0.99822021, 0.49297723],
+                             [- 6.27115655, -0.00110294, 0.00067621, 7.27005361, 0.99662873, 0.99822085, 0.49297742],
+                             [- 6.27115900, -0.00110255, 0.00067597, 7.27005646, 0.99662993, 0.99822148, 0.49297759],
+                             [- 6.27116145, -0.00110215, 0.00067573, 7.27005929, 0.99663113, 0.99822211, 0.49297781],
+                             [- 6.27116389, -0.00110176, 0.00067549, 7.27006212, 0.99663233, 0.99822274, 0.49297799],
+                             [- 6.27116632, -0.00110137, 0.00067525, 7.27006495, 0.99663353, 0.99822338, 0.49297818],
+                             [- 6.27116874, -0.00110098, 0.00067501, 7.27006776, 0.99663473, 0.99822401, 0.49297837],
+                             [- 6.27117116, -0.00110059, 0.00067477, 7.27007057, 0.99663592, 0.99822464, 0.49297853],
+                             [- 6.27117357, -0.00110020, 0.00067453, 7.27007338, 0.99663712, 0.99822527, 0.49297873],
+                             [- 6.27117598, -0.00109981, 0.00067429, 7.27007617, 0.99663832, 0.99822590, 0.49297890],
+                             [- 6.27117838, -0.00109942, 0.00067405, 7.27007896, 0.99663951, 0.99822653, 0.49297910],
+                             [- 6.27118077, -0.00109903, 0.00067381, 7.27008174, 0.99664070, 0.99822716, 0.49297929],
+                             [- 6.27118315, -0.00109864, 0.00067358, 7.27008452, 0.99664190, 0.99822779, 0.49297945],
+                             [- 6.27118553, -0.00109825, 0.00067334, 7.27008729, 0.99664309, 0.99822842, 0.49297965],
+                             [- 6.27118791, -0.00109786, 0.00067310, 7.27009005, 0.99664428, 0.99822904, 0.49297987],
+                             [- 6.27119027, -0.00109747, 0.00067286, 7.27009280, 0.99664547, 0.99822967, 0.49298005],
+                             [- 6.27119263, -0.00109708, 0.00067262, 7.27009555, 0.99664666, 0.99823030, 0.49298023],
+                             [- 6.27119499, -0.00109669, 0.00067238, 7.27009829, 0.99664785, 0.99823092, 0.49298041],
+                             [- 6.27119733, -0.00109630, 0.00067214, 7.27010103, 0.99664904, 0.99823155, 0.49298056],
+                             [- 6.27119968, -0.00109592, 0.00067191, 7.27010376, 0.99665022, 0.99823218, 0.49298074],
+                             [- 6.27120201, -0.00109553, 0.00067167, 7.27010648, 0.99665141, 0.99823280, 0.49298095],
+                             [- 6.27120434, -0.00109514, 0.00067143, 7.27010920, 0.99665259, 0.99823343, 0.49298115],
+                             [- 6.27120666, -0.00109475, 0.00067119, 7.27011190, 0.99665378, 0.99823405, 0.49298131],
+                             [- 6.27120898, -0.00109437, 0.00067096, 7.27011461, 0.99665496, 0.99823467, 0.49298149],
+                             [- 6.27121129, -0.00109398, 0.00067072, 7.27011730, 0.99665614, 0.99823530, 0.49298166],
+                             [- 6.27121359, -0.00109360, 0.00067048, 7.27011999, 0.99665733, 0.99823592, 0.49298185],
+                             [- 6.27121589, -0.00109321, 0.00067025, 7.27012268, 0.99665851, 0.99823654, 0.49298202],
+                             [- 6.27121818, -0.00109282, 0.00067001, 7.27012535, 0.99665969, 0.99823717, 0.49298224],
+                             [- 6.27122046, -0.00109244, 0.00066977, 7.27012802, 0.99666087, 0.99823779, 0.49298236],
+                             [- 6.27122274, -0.00109205, 0.00066954, 7.27013069, 0.99666205, 0.99823841, 0.49298260],
+                             [- 6.27122501, -0.00109167, 0.00066930, 7.27013334, 0.99666322, 0.99823903, 0.49298275],
+                             [- 6.27122728, -0.00109128, 0.00066907, 7.27013600, 0.99666440, 0.99823965, 0.49298294],
+                             [- 6.27122954, -0.00109090, 0.00066883, 7.27013864, 0.99666558, 0.99824027, 0.49298313],
+                             [- 6.27123179, -0.00109052, 0.00066859, 7.27014128, 0.99666675, 0.99824089, 0.49298330],
+                             [- 6.27123404, -0.00109013, 0.00066836, 7.27014391, 0.99666793, 0.99824151, 0.49298351],
+                             [- 6.27123629, -0.00108975, 0.00066812, 7.27014654, 0.99666910, 0.99824213, 0.49298363],
+                             [- 6.27123852, -0.00108937, 0.00066789, 7.27014916, 0.99667027, 0.99824275, 0.49298382],
+                             [- 6.27124075, -0.00108898, 0.00066765, 7.27015177, 0.99667144, 0.99824336, 0.49298401],
+                             [- 6.27124298, -0.00108860, 0.00066742, 7.27015438, 0.99667261, 0.99824398, 0.49298420],
+                             [- 6.27124520, -0.00108822, 0.00066718, 7.27015698, 0.99667379, 0.99824460, 0.49298438],
+                             [- 6.27124741, -0.00108784, 0.00066695, 7.27015957, 0.99667495, 0.99824521, 0.49298453],
+                             [- 6.27124962, -0.00108745, 0.00066672, 7.27016216, 0.99667612, 0.99824583, 0.49298471],
+                             [- 6.27125182, -0.00108707, 0.00066648, 7.27016475, 0.99667729, 0.99824645, 0.49298491],
+                             [- 6.27125401, -0.00108669, 0.00066625, 7.27016732, 0.99667846, 0.99824706, 0.49298510],
+                             [- 6.27125620, -0.00108631, 0.00066601, 7.27016989, 0.99667962, 0.99824768, 0.49298524],
+                             [- 6.27125839, -0.00108593, 0.00066578, 7.27017246, 0.99668079, 0.99824829, 0.49298544],
+                             [- 6.27126057, -0.00108555, 0.00066555, 7.27017502, 0.99668195, 0.99824890, 0.49298562],
+                             [- 6.27126274, -0.00108517, 0.00066531, 7.27017757, 0.99668312, 0.99824952, 0.49298575],
+                             [- 6.27126490, -0.00108479, 0.00066508, 7.27018012, 0.99668428, 0.99825013, 0.49298596],
+                             [- 6.27126707, -0.00108441, 0.00066485, 7.27018266, 0.99668544, 0.99825074, 0.49298614],
+                             [- 6.27126922, -0.00108403, 0.00066461, 7.27018519, 0.99668660, 0.99825136, 0.49298629],
+                             [- 6.27127137, -0.00108365, 0.00066438, 7.27018772, 0.99668776, 0.99825197, 0.49298647],
+                             [- 6.27127351, -0.00108327, 0.00066415, 7.27019024, 0.99668892, 0.99825258, 0.49298665],
+                             [- 6.27127565, -0.00108289, 0.00066392, 7.27019276, 0.99669008, 0.99825319, 0.49298685],
+                             [- 6.27127779, -0.00108251, 0.00066369, 7.27019527, 0.99669124, 0.99825380, 0.49298701],
+                             [- 6.27127991, -0.00108214, 0.00066345, 7.27019778, 0.99669240, 0.99825441, 0.49298719],
+                             [- 6.27128204, -0.00108176, 0.00066322, 7.27020028, 0.99669356, 0.99825502, 0.49298735],
+                             [- 6.27128415, -0.00108138, 0.00066299, 7.27020277, 0.99669471, 0.99825563, 0.49298754],
+                             [- 6.27128626, -0.00108100, 0.00066276, 7.27020526, 0.99669587, 0.99825624, 0.49298772],
+                             [- 6.27128837, -0.00108063, 0.00066253, 7.27020774, 0.99669702, 0.99825685, 0.49298787],
+                             [- 6.27129047, -0.00108025, 0.00066230, 7.27021022, 0.99669817, 0.99825746, 0.49298806],
+                             [- 6.27129256, -0.00107987, 0.00066206, 7.27021269, 0.99669933, 0.99825806, 0.49298822],
+                             [- 6.27129465, -0.00107950, 0.00066183, 7.27021516, 0.99670048, 0.99825867, 0.49298838],
+                             [- 6.27129674, -0.00107912, 0.00066160, 7.27021762, 0.99670163, 0.99825928, 0.49298857],
+                             [- 6.27129881, -0.00107874, 0.00066137, 7.27022007, 0.99670278, 0.99825988, 0.49298872],
+                             [- 6.27130089, -0.00107837, 0.00066114, 7.27022252, 0.99670393, 0.99826049, 0.49298890],
+                             [- 6.27130295, -0.00107799, 0.00066091, 7.27022496, 0.99670508, 0.99826109, 0.49298906],
+                             [- 6.27130502, -0.00107762, 0.00066068, 7.27022740, 0.99670622, 0.99826170, 0.49298921],
+                             [- 6.27130707, -0.00107724, 0.00066045, 7.27022983, 0.99670737, 0.99826230, 0.49298942],
+                             [- 6.27130913, -0.00107687, 0.00066022, 7.27023226, 0.99670852, 0.99826291, 0.49298958],
+                             [- 6.27131117, -0.00107649, 0.00065999, 7.27023468, 0.99670966, 0.99826351, 0.49298977],
+                             [- 6.27131321, -0.00107612, 0.00065976, 7.27023709, 0.99671081, 0.99826412, 0.49298992],
+                             [- 6.27131525, -0.00107575, 0.00065953, 7.27023950, 0.99671195, 0.99826472, 0.49299011],
+                             [- 6.27131728, -0.00107537, 0.00065931, 7.27024191, 0.99671309, 0.99826532, 0.49299028],
+                             [- 6.27131930, -0.00107500, 0.00065908, 7.27024430, 0.99671423, 0.99826592, 0.49299042],
+                             [- 6.27132133, -0.00107463, 0.00065885, 7.27024670, 0.99671538, 0.99826653, 0.49299058],
+                             [- 6.27132334, -0.00107425, 0.00065862, 7.27024909, 0.99671652, 0.99826713, 0.49299077],
+                             [- 6.27132535, -0.00107388, 0.00065839, 7.27025147, 0.99671766, 0.99826773, 0.49299096],
+                             [- 6.27132736, -0.00107351, 0.00065816, 7.27025385, 0.99671879, 0.99826833, 0.49299111],
+                             [- 6.27132936, -0.00107314, 0.00065793, 7.27025622, 0.99671993, 0.99826893, 0.49299126],
+                             [- 6.27133135, -0.00107277, 0.00065771, 7.27025858, 0.99672107, 0.99826953, 0.49299144],
+                             [- 6.27133334, -0.00107239, 0.00065748, 7.27026094, 0.99672221, 0.99827013, 0.49299160],
+                             [- 6.27133532, -0.00107202, 0.00065725, 7.27026330, 0.99672334, 0.99827073, 0.49299180],
+                             [- 6.27133730, -0.00107165, 0.00065702, 7.27026565, 0.99672448, 0.99827132, 0.49299193],
+                             [- 6.27133928, -0.00107128, 0.00065680, 7.27026800, 0.99672561, 0.99827192, 0.49299212],
+                             [- 6.27134125, -0.00107091, 0.00065657, 7.27027034, 0.99672674, 0.99827252, 0.49299227],
+                             [- 6.27134321, -0.00107054, 0.00065634, 7.27027267, 0.99672788, 0.99827312, 0.49299243],
+                             [- 6.27134517, -0.00107017, 0.00065611, 7.27027500, 0.99672901, 0.99827371, 0.49299259],
+                             [- 6.27134713, -0.00106980, 0.00065589, 7.27027733, 0.99673014, 0.99827431, 0.49299280],
+                             [- 6.27134908, -0.00106943, 0.00065566, 7.27027964, 0.99673127, 0.99827491, 0.49299296],
+                             [- 6.27135102, -0.00106906, 0.00065543, 7.27028196, 0.99673240, 0.99827550, 0.49299309],
+                             [- 6.27135296, -0.00106870, 0.00065521, 7.27028427, 0.99673353, 0.99827610, 0.49299327],
+                             [- 6.27135490, -0.00106833, 0.00065498, 7.27028657, 0.99673466, 0.99827669, 0.49299344],
+                             [- 6.27135683, -0.00106796, 0.00065476, 7.27028887, 0.99673578, 0.99827729, 0.49299361],
+                             [- 6.27135875, -0.00106759, 0.00065453, 7.27029116, 0.99673691, 0.99827788, 0.49299378],
+                             [- 6.27136067, -0.00106722, 0.00065430, 7.27029345, 0.99673804, 0.99827847, 0.49299395],
+                             [- 6.27136259, -0.00106685, 0.00065408, 7.27029574, 0.99673916, 0.99827907, 0.49299413],
+                             [- 6.27136450, -0.00106649, 0.00065385, 7.27029801, 0.99674028, 0.99827966, 0.49299427],
+                             [- 6.27136641, -0.00106612, 0.00065363, 7.27030029, 0.99674141, 0.99828025, 0.49299442],
+                             [- 6.27136831, -0.00106575, 0.00065340, 7.27030256, 0.99674253, 0.99828084, 0.49299460],
+                             [- 6.27137021, -0.00106539, 0.00065318, 7.27030482, 0.99674365, 0.99828143, 0.49299474],
+                             [- 6.27137210, -0.00106502, 0.00065295, 7.27030708, 0.99674477, 0.99828203, 0.49299490],
+                             [- 6.27137399, -0.00106465, 0.00065273, 7.27030933, 0.99674589, 0.99828262, 0.49299509],
+                             [- 6.27137587, -0.00106429, 0.00065250, 7.27031158, 0.99674701, 0.99828321, 0.49299525],
+                             [- 6.27137775, -0.00106392, 0.00065228, 7.27031382, 0.99674813, 0.99828380, 0.49299541],
+                             [- 6.27137962, -0.00106356, 0.00065206, 7.27031606, 0.99674925, 0.99828439, 0.49299561],
+                             [- 6.27138149, -0.00106319, 0.00065183, 7.27031830, 0.99675037, 0.99828497, 0.49299573],
+                             [- 6.27138335, -0.00106283, 0.00065161, 7.27032053, 0.99675148, 0.99828556, 0.49299589],
+                             [- 6.27138521, -0.00106246, 0.00065139, 7.27032275, 0.99675260, 0.99828615, 0.49299603],
+                             [- 6.27138707, -0.00106210, 0.00065116, 7.27032497, 0.99675371, 0.99828674, 0.49299621],
+                             [- 6.27138892, -0.00106173, 0.00065094, 7.27032719, 0.99675483, 0.99828733, 0.49299635],
+                             [- 6.27139077, -0.00106137, 0.00065072, 7.27032940, 0.99675594, 0.99828791, 0.49299653],
+                             [- 6.27139261, -0.00106101, 0.00065049, 7.27033160, 0.99675705, 0.99828850, 0.49299670],
+                             [- 6.27139445, -0.00106064, 0.00065027, 7.27033380, 0.99675816, 0.99828909, 0.49299687],
+                             [- 6.27139628, -0.00106028, 0.00065005, 7.27033600, 0.99675928, 0.99828967, 0.49299705],
+                             [- 6.27139811, -0.00105992, 0.00064982, 7.27033819, 0.99676039, 0.99829026, 0.49299718],
+                             [- 6.27139993, -0.00105956, 0.00064960, 7.27034037, 0.99676150, 0.99829084, 0.49299736],
+                             [- 6.27140175, -0.00105919, 0.00064938, 7.27034256, 0.99676260, 0.99829143, 0.49299751],
+                             [- 6.27140356, -0.00105883, 0.00064916, 7.27034473, 0.99676371, 0.99829201, 0.49299765],
+                             [- 6.27140537, -0.00105847, 0.00064893, 7.27034690, 0.99676482, 0.99829260, 0.49299782],
+                             [- 6.27140718, -0.00105811, 0.00064871, 7.27034907, 0.99676593, 0.99829318, 0.49299800],
+                             [- 6.27140898, -0.00105775, 0.00064849, 7.27035123, 0.99676703, 0.99829376, 0.49299816],
+                             [- 6.27141078, -0.00105739, 0.00064827, 7.27035339, 0.99676814, 0.99829434, 0.49299833],
+                             [- 6.27141257, -0.00105702, 0.00064805, 7.27035555, 0.99676924, 0.99829493, 0.49299845],
+                             [- 6.27141436, -0.00105666, 0.00064783, 7.27035770, 0.99677034, 0.99829551, 0.49299862],
+                             [- 6.27141614, -0.00105630, 0.00064761, 7.27035984, 0.99677145, 0.99829609, 0.49299878],
+                             [- 6.27141792, -0.00105594, 0.00064739, 7.27036198, 0.99677255, 0.99829667, 0.49299891],
+                             [- 6.27141970, -0.00105558, 0.00064716, 7.27036412, 0.99677365, 0.99829725, 0.49299912],
+                             [- 6.27142147, -0.00105522, 0.00064694, 7.27036625, 0.99677475, 0.99829783, 0.49299926],
+                             [- 6.27142324, -0.00105486, 0.00064672, 7.27036837, 0.99677585, 0.99829841, 0.49299943],
+                             [- 6.27142500, -0.00105451, 0.00064650, 7.27037050, 0.99677695, 0.99829899, 0.49299955],
+                             [- 6.27142676, -0.00105415, 0.00064628, 7.27037261, 0.99677805, 0.99829957, 0.49299971],
+                             [- 6.27142851, -0.00105379, 0.00064606, 7.27037473, 0.99677914, 0.99830015, 0.49299984],
+                             [- 6.27143026, -0.00105343, 0.00064584, 7.27037683, 0.99678024, 0.99830073, 0.49300001],
+                             [- 6.27143201, -0.00105307, 0.00064562, 7.27037894, 0.99678134, 0.99830131, 0.49300017],
+                             [- 6.27143375, -0.00105271, 0.00064540, 7.27038104, 0.99678243, 0.99830188, 0.49300033],
+                             [- 6.27143549, -0.00105236, 0.00064518, 7.27038313, 0.99678353, 0.99830246, 0.49300050],
+                             [- 6.27143722, -0.00105200, 0.00064496, 7.27038522, 0.99678462, 0.99830304, 0.49300065],
+                             [- 6.27143895, -0.00105164, 0.00064475, 7.27038731, 0.99678571, 0.99830361, 0.49300081],
+                             [- 6.27144068, -0.00105128, 0.00064453, 7.27038939, 0.99678681, 0.99830419, 0.49300096],
+                             [- 6.27144240, -0.00105093, 0.00064431, 7.27039147, 0.99678790, 0.99830477, 0.49300112],
+                             [- 6.27144412, -0.00105057, 0.00064409, 7.27039355, 0.99678899, 0.99830534, 0.49300126],
+                             [- 6.27144583, -0.00105021, 0.00064387, 7.27039561, 0.99679008, 0.99830592, 0.49300141],
+                             [- 6.27144754, -0.00104986, 0.00064365, 7.27039768, 0.99679117, 0.99830649, 0.49300158],
+                             [- 6.27144924, -0.00104950, 0.00064343, 7.27039974, 0.99679226, 0.99830706, 0.49300174],
+                             [- 6.27145094, -0.00104915, 0.00064322, 7.27040180, 0.99679334, 0.99830764, 0.49300191],
+                             [- 6.27145264, -0.00104879, 0.00064300, 7.27040385, 0.99679443, 0.99830821, 0.49300203],
+                             [- 6.27145433, -0.00104844, 0.00064278, 7.27040590, 0.99679552, 0.99830878, 0.49300220],
+                             [- 6.27145602, -0.00104808, 0.00064256, 7.27040794, 0.99679660, 0.99830936, 0.49300234],
+                             [- 6.27145771, -0.00104773, 0.00064234, 7.27040998, 0.99679769, 0.99830993, 0.49300248],
+                             [- 6.27145939, -0.00104737, 0.00064213, 7.27041202, 0.99679877, 0.99831050, 0.49300264],
+                             [- 6.27146107, -0.00104702, 0.00064191, 7.27041405, 0.99679986, 0.99831107, 0.49300280],
+                             [- 6.27146274, -0.00104667, 0.00064169, 7.27041607, 0.99680094, 0.99831164, 0.49300294],
+                             [- 6.27146441, -0.00104631, 0.00064148, 7.27041810, 0.99680202, 0.99831221, 0.49300310],
+                             [- 6.27146607, -0.00104596, 0.00064126, 7.27042012, 0.99680310, 0.99831278, 0.49300325],
+                             [- 6.27146774, -0.00104561, 0.00064104, 7.27042213, 0.99680418, 0.99831335, 0.49300340],
+                             [- 6.27146939, -0.00104525, 0.00064083, 7.27042414, 0.99680526, 0.99831392, 0.49300357],
+                             [- 6.27147105, -0.00104490, 0.00064061, 7.27042615, 0.99680634, 0.99831449, 0.49300370],
+                             [- 6.27147270, -0.00104455, 0.00064039, 7.27042815, 0.99680742, 0.99831506, 0.49300390],
+                             [- 6.27147434, -0.00104420, 0.00064018, 7.27043015, 0.99680850, 0.99831563, 0.49300402],
+                             [- 6.27147599, -0.00104384, 0.00063996, 7.27043214, 0.99680957, 0.99831620, 0.49300417],
+                             [- 6.27147762, -0.00104349, 0.00063975, 7.27043413, 0.99681065, 0.99831676, 0.49300431],
+                             [- 6.27147926, -0.00104314, 0.00063953, 7.27043612, 0.99681172, 0.99831733, 0.49300449],
+                             [- 6.27148089, -0.00104279, 0.00063931, 7.27043810, 0.99681280, 0.99831790, 0.49300460],
+                             [- 6.27148252, -0.00104244, 0.00063910, 7.27044008, 0.99681387, 0.99831846, 0.49300478],
+                             [- 6.27148414, -0.00104209, 0.00063888, 7.27044205, 0.99681495, 0.99831903, 0.49300494],
+                             [- 6.27148576, -0.00104174, 0.00063867, 7.27044402, 0.99681602, 0.99831959, 0.49300507],
+                             [- 6.27148738, -0.00104139, 0.00063845, 7.27044599, 0.99681709, 0.99832016, 0.49300523],
+                             [- 6.27148899, -0.00104104, 0.00063824, 7.27044795, 0.99681816, 0.99832072, 0.49300537],
+                             [- 6.27149060, -0.00104069, 0.00063802, 7.27044991, 0.99681923, 0.99832129, 0.49300552],
+                             [- 6.27149220, -0.00104034, 0.00063781, 7.27045186, 0.99682030, 0.99832185, 0.49300567],
+                             [- 6.27149380, -0.00103999, 0.00063760, 7.27045382, 0.99682137, 0.99832242, 0.49300583],
+                             [- 6.27149540, -0.00103964, 0.00063738, 7.27045576, 0.99682244, 0.99832298, 0.49300595],
+                             [- 6.27149699, -0.00103929, 0.00063717, 7.27045771, 0.99682351, 0.99832354, 0.49300609],
+                             [- 6.27149859, -0.00103894, 0.00063695, 7.27045964, 0.99682457, 0.99832411, 0.49300627],
+                             [- 6.27150017, -0.00103859, 0.00063674, 7.27046158, 0.99682564, 0.99832467, 0.49300642],
+                             [- 6.27150175, -0.00103824, 0.00063653, 7.27046351, 0.99682670, 0.99832523, 0.49300653],
+                             [- 6.27150333, -0.00103790, 0.00063631, 7.27046544, 0.99682777, 0.99832579, 0.49300671],
+                             [- 6.27150491, -0.00103755, 0.00063610, 7.27046736, 0.99682883, 0.99832635, 0.49300686],
+                             [- 6.27150648, -0.00103720, 0.00063589, 7.27046928, 0.99682990, 0.99832691, 0.49300700],
+                             [- 6.27150805, -0.00103685, 0.00063567, 7.27047120, 0.99683096, 0.99832747, 0.49300717],
+                             [- 6.27150962, -0.00103651, 0.00063546, 7.27047311, 0.99683202, 0.99832803, 0.49300731],
+                             [- 6.27151118, -0.00103616, 0.00063525, 7.27047502, 0.99683308, 0.99832859, 0.49300742],
+                             [- 6.27151274, -0.00103581, 0.00063503, 7.27047692, 0.99683414, 0.99832915, 0.49300759],
+                             [- 6.27151429, -0.00103547, 0.00063482, 7.27047882, 0.99683520, 0.99832971, 0.49300775],
+                             [- 6.27151584, -0.00103512, 0.00063461, 7.27048072, 0.99683626, 0.99833027, 0.49300787],
+                             [- 6.27151739, -0.00103478, 0.00063440, 7.27048262, 0.99683732, 0.99833083, 0.49300803],
+                             [- 6.27151893, -0.00103443, 0.00063419, 7.27048451, 0.99683838, 0.99833138, 0.49300818],
+                             [- 6.27152048, -0.00103408, 0.00063397, 7.27048639, 0.99683943, 0.99833194, 0.49300831],
+                             [- 6.27152201, -0.00103374, 0.00063376, 7.27048827, 0.99684049, 0.99833250, 0.49300846],
+                             [- 6.27152355, -0.00103339, 0.00063355, 7.27049015, 0.99684154, 0.99833306, 0.49300863],
+                             [- 6.27152508, -0.00103305, 0.00063334, 7.27049203, 0.99684260, 0.99833361, 0.49300877],
+                             [- 6.27152660, -0.00103270, 0.00063313, 7.27049390, 0.99684365, 0.99833417, 0.49300891],
+                             [- 6.27152813, -0.00103236, 0.00063292, 7.27049577, 0.99684471, 0.99833472, 0.49300907],
+                             [- 6.27152965, -0.00103202, 0.00063271, 7.27049763, 0.99684576, 0.99833528, 0.49300922],
+                             [- 6.27153117, -0.00103167, 0.00063249, 7.27049949, 0.99684681, 0.99833583, 0.49300935],
+                             [- 6.27153268, -0.00103133, 0.00063228, 7.27050135, 0.99684786, 0.99833639, 0.49300949],
+                             [- 6.27153419, -0.00103099, 0.00063207, 7.27050320, 0.99684891, 0.99833694, 0.49300966],
+                             [- 6.27153570, -0.00103064, 0.00063186, 7.27050505, 0.99684996, 0.99833749, 0.49300980],
+                             [- 6.27153720, -0.00103030, 0.00063165, 7.27050690, 0.99685101, 0.99833805, 0.49300992],
+                             [- 6.27153870, -0.00102996, 0.00063144, 7.27050874, 0.99685206, 0.99833860, 0.49301003],
+                             [- 6.27154020, -0.00102961, 0.00063123, 7.27051058, 0.99685311, 0.99833915, 0.49301024],
+                             [- 6.27154169, -0.00102927, 0.00063102, 7.27051242, 0.99685415, 0.99833971, 0.49301036],
+                             [- 6.27154318, -0.00102893, 0.00063081, 7.27051425, 0.99685520, 0.99834026, 0.49301051],
+                             [- 6.27154467, -0.00102859, 0.00063060, 7.27051608, 0.99685625, 0.99834081, 0.49301064],
+                             [- 6.27154615, -0.00102825, 0.00063039, 7.27051791, 0.99685729, 0.99834136, 0.49301076],
+                             [- 6.27154763, -0.00102791, 0.00063018, 7.27051973, 0.99685834, 0.99834191, 0.49301089],
+                             [- 6.27154911, -0.00102756, 0.00062997, 7.27052155, 0.99685938, 0.99834246, 0.49301105],
+                             [- 6.27155059, -0.00102722, 0.00062976, 7.27052336, 0.99686042, 0.99834301, 0.49301119],
+                             [- 6.27155206, -0.00102688, 0.00062956, 7.27052517, 0.99686146, 0.99834356, 0.49301134],
+                             [- 6.27155352, -0.00102654, 0.00062935, 7.27052698, 0.99686251, 0.99834411, 0.49301148],
+                             [- 6.27155499, -0.00102620, 0.00062914, 7.27052879, 0.99686355, 0.99834466, 0.49301163],
+                             [- 6.27155645, -0.00102586, 0.00062893, 7.27053059, 0.99686459, 0.99834521, 0.49301176],
+                             [- 6.27155791, -0.00102552, 0.00062872, 7.27053239, 0.99686563, 0.99834576, 0.49301188],
+                             [- 6.27155936, -0.00102518, 0.00062851, 7.27053418, 0.99686666, 0.99834630, 0.49301206],
+                             [- 6.27156082, -0.00102484, 0.00062830, 7.27053597, 0.99686770, 0.99834685, 0.49301220],
+                             [- 6.27156226, -0.00102451, 0.00062810, 7.27053776, 0.99686874, 0.99834740, 0.49301233],
+                             [- 6.27156371, -0.00102417, 0.00062789, 7.27053954, 0.99686978, 0.99834794, 0.49301246],
+                             [- 6.27156515, -0.00102383, 0.00062768, 7.27054132, 0.99687081, 0.99834849, 0.49301262],
+                             [- 6.27156659, -0.00102349, 0.00062747, 7.27054310, 0.99687185, 0.99834904, 0.49301280],
+                             [- 6.27156803, -0.00102315, 0.00062727, 7.27054488, 0.99687288, 0.99834958, 0.49301294],
+                             [- 6.27156946, -0.00102281, 0.00062706, 7.27054665, 0.99687392, 0.99835013, 0.49301309],
+                             [- 6.27157089, -0.00102248, 0.00062685, 7.27054842, 0.99687495, 0.99835067, 0.49301319],
+                             [- 6.27157232, -0.00102214, 0.00062664, 7.27055018, 0.99687598, 0.99835122, 0.49301335],
+                             [- 6.27157374, -0.00102180, 0.00062644, 7.27055194, 0.99687701, 0.99835176, 0.49301345],
+                             [- 6.27157517, -0.00102146, 0.00062623, 7.27055370, 0.99687805, 0.99835231, 0.49301362],
+                             [- 6.27157658, -0.00102113, 0.00062602, 7.27055546, 0.99687908, 0.99835285, 0.49301372],
+                             [- 6.27157800, -0.00102079, 0.00062582, 7.27055721, 0.99688011, 0.99835339, 0.49301383],
+                             [- 6.27157941, -0.00102045, 0.00062561, 7.27055896, 0.99688113, 0.99835393, 0.49301405],
+                             [- 6.27158082, -0.00102012, 0.00062540, 7.27056070, 0.99688216, 0.99835448, 0.49301418],
+                             [- 6.27158223, -0.00101978, 0.00062520, 7.27056244, 0.99688319, 0.99835502, 0.49301433],
+                             [- 6.27158363, -0.00101945, 0.00062499, 7.27056418, 0.99688422, 0.99835556, 0.49301444],
+                             [- 6.27158503, -0.00101911, 0.00062479, 7.27056592, 0.99688524, 0.99835610, 0.49301454],
+                             [- 6.27158643, -0.00101878, 0.00062458, 7.27056765, 0.99688627, 0.99835664, 0.49301468],
+                             [- 6.27158782, -0.00101844, 0.00062438, 7.27056938, 0.99688730, 0.99835718, 0.49301483],
+                             [- 6.27158921, -0.00101811, 0.00062417, 7.27057111, 0.99688832, 0.99835772, 0.49301499],
+                             [- 6.27159060, -0.00101777, 0.00062396, 7.27057283, 0.99688934, 0.99835826, 0.49301513],
+                             [- 6.27159199, -0.00101744, 0.00062376, 7.27057455, 0.99689037, 0.99835880, 0.49301528],
+                             [- 6.27159337, -0.00101710, 0.00062355, 7.27057627, 0.99689139, 0.99835934, 0.49301541],
+                             [- 6.27159475, -0.00101677, 0.00062335, 7.27057798, 0.99689241, 0.99835988, 0.49301553],
+                             [- 6.27159613, -0.00101644, 0.00062314, 7.27057969, 0.99689343, 0.99836042, 0.49301569],
+                             [- 6.27159750, -0.00101610, 0.00062294, 7.27058140, 0.99689445, 0.99836096, 0.49301584],
+                             [- 6.27159887, -0.00101577, 0.00062274, 7.27058310, 0.99689547, 0.99836150, 0.49301593],
+                             [- 6.27160024, -0.00101544, 0.00062253, 7.27058480, 0.99689649, 0.99836203, 0.49301608],
+                             [- 6.27160160, -0.00101510, 0.00062233, 7.27058650, 0.99689751, 0.99836257, 0.49301621],
+                             [- 6.27160297, -0.00101477, 0.00062212, 7.27058820, 0.99689853, 0.99836311, 0.49301634],
+                             [- 6.27160433, -0.00101444, 0.00062192, 7.27058989, 0.99689954, 0.99836364, 0.49301647],
+                             [- 6.27160568, -0.00101410, 0.00062171, 7.27059158, 0.99690056, 0.99836418, 0.49301663],
+                             [- 6.27160704, -0.00101377, 0.00062151, 7.27059327, 0.99690158, 0.99836472, 0.49301679],
+                             [- 6.27160839, -0.00101344, 0.00062131, 7.27059495, 0.99690259, 0.99836525, 0.49301693],
+                             [- 6.27160974, -0.00101311, 0.00062110, 7.27059663, 0.99690361, 0.99836579, 0.49301706],
+                             [- 6.27161108, -0.00101278, 0.00062090, 7.27059831, 0.99690462, 0.99836632, 0.49301722],
+                             [- 6.27161243, -0.00101245, 0.00062070, 7.27059998, 0.99690563, 0.99836686, 0.49301730],
+                             [- 6.27161377, -0.00101212, 0.00062049, 7.27060165, 0.99690664, 0.99836739, 0.49301748],
+                             [- 6.27161511, -0.00101179, 0.00062029, 7.27060332, 0.99690766, 0.99836792, 0.49301757],
+                             [- 6.27161644, -0.00101146, 0.00062009, 7.27060499, 0.99690867, 0.99836846, 0.49301772],
+                             [- 6.27161777, -0.00101112, 0.00061989, 7.27060665, 0.99690968, 0.99836899, 0.49301787],
+                             [- 6.27161910, -0.00101079, 0.00061968, 7.27060831, 0.99691069, 0.99836952, 0.49301798],
+                             [- 6.27162043, -0.00101046, 0.00061948, 7.27060996, 0.99691170, 0.99837005, 0.49301811],
+                             [- 6.27162175, -0.00101014, 0.00061928, 7.27061162, 0.99691271, 0.99837059, 0.49301825],
+                             [- 6.27162307, -0.00100981, 0.00061908, 7.27061327, 0.99691371, 0.99837112, 0.49301840],
+                             [- 6.27162439, -0.00100948, 0.00061887, 7.27061492, 0.99691472, 0.99837165, 0.49301855],
+                             [- 6.27162571, -0.00100915, 0.00061867, 7.27061656, 0.99691573, 0.99837218, 0.49301866],
+                             [- 6.27162702, -0.00100882, 0.00061847, 7.27061820, 0.99691673, 0.99837271, 0.49301881],
+                             [- 6.27162833, -0.00100849, 0.00061827, 7.27061984, 0.99691774, 0.99837324, 0.49301892],
+                             [- 6.27162964, -0.00100816, 0.00061807, 7.27062148, 0.99691874, 0.99837377, 0.49301906],
+                             [- 6.27163095, -0.00100783, 0.00061787, 7.27062311, 0.99691975, 0.99837430, 0.49301923],
+                             [- 6.27163225, -0.00100751, 0.00061767, 7.27062474, 0.99692075, 0.99837483, 0.49301935],
+                             [- 6.27163355, -0.00100718, 0.00061746, 7.27062637, 0.99692175, 0.99837536, 0.49301944],
+                             [- 6.27163485, -0.00100685, 0.00061726, 7.27062800, 0.99692275, 0.99837589, 0.49301961],
+                             [- 6.27163614, -0.00100652, 0.00061706, 7.27062962, 0.99692375, 0.99837641, 0.49301974],
+                             [- 6.27163743, -0.00100620, 0.00061686, 7.27063124, 0.99692476, 0.99837694, 0.49301990],
+                             [- 6.27163872, -0.00100587, 0.00061666, 7.27063285, 0.99692576, 0.99837747, 0.49301996],
+                             [- 6.27164001, -0.00100554, 0.00061646, 7.27063447, 0.99692675, 0.99837800, 0.49302013],
+                             [- 6.27164130, -0.00100522, 0.00061626, 7.27063608, 0.99692775, 0.99837852, 0.49302024],
+                             [- 6.27164258, -0.00100489, 0.00061606, 7.27063769, 0.99692875, 0.99837905, 0.49302039],
+                             [- 6.27164386, -0.00100456, 0.00061586, 7.27063929, 0.99692975, 0.99837957, 0.49302050],
+                             [- 6.27164513, -0.00100424, 0.00061566, 7.27064090, 0.99693075, 0.99838010, 0.49302064],
+                             [- 6.27164641, -0.00100391, 0.00061546, 7.27064250, 0.99693174, 0.99838063, 0.49302080],
+                             [- 6.27164768, -0.00100359, 0.00061526, 7.27064409, 0.99693274, 0.99838115, 0.49302092],
+                             [- 6.27164895, -0.00100326, 0.00061506, 7.27064569, 0.99693373, 0.99838168, 0.49302106],
+                             [- 6.27165022, -0.00100294, 0.00061486, 7.27064728, 0.99693473, 0.99838220, 0.49302117],
+                             [- 6.27165148, -0.00100261, 0.00061466, 7.27064887, 0.99693572, 0.99838272, 0.49302135],
+                             [- 6.27165274, -0.00100229, 0.00061446, 7.27065045, 0.99693671, 0.99838325, 0.49302147],
+                             [- 6.27165400, -0.00100196, 0.00061427, 7.27065204, 0.99693770, 0.99838377, 0.49302161],
+                             [- 6.27165526, -0.00100164, 0.00061407, 7.27065362, 0.99693870, 0.99838429, 0.49302174],
+                             [- 6.27165651, -0.00100132, 0.00061387, 7.27065520, 0.99693969, 0.99838482, 0.49302182],
+                             [- 6.27165777, -0.00100099, 0.00061367, 7.27065677, 0.99694068, 0.99838534, 0.49302200],
+                             [- 6.27165902, -0.00100067, 0.00061347, 7.27065835, 0.99694167, 0.99838586, 0.49302214],
+                             [- 6.27166026, -0.00100035, 0.00061327, 7.27065992, 0.99694266, 0.99838638, 0.49302227],
+                             [- 6.27166151, -0.00100002, 0.00061307, 7.27066149, 0.99694364, 0.99838690, 0.49302237],
+                             [- 6.27166275, -0.00099970, 0.00061288, 7.27066305, 0.99694463, 0.99838742, 0.49302253],
+                             [- 6.27166399, -0.00099938, 0.00061268, 7.27066461, 0.99694562, 0.99838795, 0.49302264],
+                             [- 6.27166523, -0.00099905, 0.00061248, 7.27066617, 0.99694660, 0.99838847, 0.49302277],
+                             [- 6.27166646, -0.00099873, 0.00061228, 7.27066773, 0.99694759, 0.99838899, 0.49302290],
+                             [- 6.27166770, -0.00099841, 0.00061208, 7.27066928, 0.99694858, 0.99838951, 0.49302301],
+                             [- 6.27166893, -0.00099809, 0.00061189, 7.27067084, 0.99694956, 0.99839002, 0.49302315],
+                             [- 6.27167015, -0.00099777, 0.00061169, 7.27067239, 0.99695054, 0.99839054, 0.49302331],
+                             [- 6.27167138, -0.00099745, 0.00061149, 7.27067393, 0.99695153, 0.99839106, 0.49302343],
+                             [- 6.27167260, -0.00099712, 0.00061130, 7.27067548, 0.99695251, 0.99839158, 0.49302354],
+                             [- 6.27167382, -0.00099680, 0.00061110, 7.27067702, 0.99695349, 0.99839210, 0.49302367],
+                             [- 6.27167504, -0.00099648, 0.00061090, 7.27067856, 0.99695447, 0.99839262, 0.49302378],
+                             [- 6.27167626, -0.00099616, 0.00061070, 7.27068010, 0.99695545, 0.99839313, 0.49302391],
+                             [- 6.27167747, -0.00099584, 0.00061051, 7.27068163, 0.99695643, 0.99839365, 0.49302405],
+                             [- 6.27167868, -0.00099552, 0.00061031, 7.27068316, 0.99695741, 0.99839417, 0.49302418],
+                             [- 6.27167989, -0.00099520, 0.00061012, 7.27068469, 0.99695839, 0.99839468, 0.49302428],
+                             [- 6.27168110, -0.00099488, 0.00060992, 7.27068622, 0.99695937, 0.99839520, 0.49302442],
+                             [- 6.27168231, -0.00099456, 0.00060972, 7.27068774, 0.99696035, 0.99839571, 0.49302457],
+                             [- 6.27168351, -0.00099424, 0.00060953, 7.27068927, 0.99696133, 0.99839623, 0.49302469],
+                             [- 6.27168471, -0.00099392, 0.00060933, 7.27069078, 0.99696230, 0.99839674, 0.49302483],
+                             [- 6.27168591, -0.00099360, 0.00060914, 7.27069230, 0.99696328, 0.99839726, 0.49302493],
+                             [- 6.27168710, -0.00099329, 0.00060894, 7.27069382, 0.99696425, 0.99839777, 0.49302510],
+                             [- 6.27168829, -0.00099297, 0.00060874, 7.27069533, 0.99696523, 0.99839829, 0.49302519],
+                             [- 6.27168949, -0.00099265, 0.00060855, 7.27069684, 0.99696620, 0.99839880, 0.49302531],
+                             [- 6.27169067, -0.00099233, 0.00060835, 7.27069834, 0.99696717, 0.99839931, 0.49302546],
+                             [- 6.27169186, -0.00099201, 0.00060816, 7.27069985, 0.99696815, 0.99839983, 0.49302559],
+                             [- 6.27169305, -0.00099170, 0.00060796, 7.27070135, 0.99696912, 0.99840034, 0.49302572],
+                             [- 6.27169423, -0.00099138, 0.00060777, 7.27070285, 0.99697009, 0.99840085, 0.49302581],
+                             [- 6.27169541, -0.00099106, 0.00060757, 7.27070435, 0.99697106, 0.99840137, 0.49302594],
+                             [- 6.27169659, -0.00099074, 0.00060738, 7.27070584, 0.99697203, 0.99840188, 0.49302606],
+                             [- 6.27169776, -0.00099043, 0.00060719, 7.27070734, 0.99697300, 0.99840239, 0.49302620],
+                             [- 6.27169893, -0.00099011, 0.00060699, 7.27070883, 0.99697397, 0.99840290, 0.49302635],
+                             [- 6.27170011, -0.00098979, 0.00060680, 7.27071031, 0.99697494, 0.99840341, 0.49302644],
+                             [- 6.27170128, -0.00098948, 0.00060660, 7.27071180, 0.99697590, 0.99840392, 0.49302662],
+                             [- 6.27170244, -0.00098916, 0.00060641, 7.27071328, 0.99697687, 0.99840443, 0.49302676],
+                             [- 6.27170361, -0.00098884, 0.00060622, 7.27071476, 0.99697784, 0.99840494, 0.49302682],
+                             [- 6.27170477, -0.00098853, 0.00060602, 7.27071624, 0.99697880, 0.99840545, 0.49302696],
+                             [- 6.27170593, -0.00098821, 0.00060583, 7.27071772, 0.99697977, 0.99840596, 0.49302711],
+                             [- 6.27170709, -0.00098790, 0.00060563, 7.27071919, 0.99698073, 0.99840647, 0.49302721],
+                             [- 6.27170825, -0.00098758, 0.00060544, 7.27072066, 0.99698170, 0.99840698, 0.49302733],
+                             [- 6.27170940, -0.00098727, 0.00060525, 7.27072213, 0.99698266, 0.99840748, 0.49302748],
+                             [- 6.27171055, -0.00098695, 0.00060505, 7.27072360, 0.99698362, 0.99840799, 0.49302765],
+                             [- 6.27171170, -0.00098664, 0.00060486, 7.27072506, 0.99698459, 0.99840850, 0.49302773],
+                             [- 6.27171285, -0.00098633, 0.00060467, 7.27072652, 0.99698555, 0.99840901, 0.49302786],
+                             [- 6.27171399, -0.00098601, 0.00060448, 7.27072798, 0.99698651, 0.99840951, 0.49302797],
+                             [- 6.27171514, -0.00098570, 0.00060428, 7.27072944, 0.99698747, 0.99841002, 0.49302811],
+                             [- 6.27171628, -0.00098538, 0.00060409, 7.27073090, 0.99698843, 0.99841053, 0.49302824],
+                             [- 6.27171742, -0.00098507, 0.00060390, 7.27073235, 0.99698939, 0.99841103, 0.49302835],
+                             [- 6.27171856, -0.00098476, 0.00060371, 7.27073380, 0.99699035, 0.99841154, 0.49302848],
+                             [- 6.27171969, -0.00098444, 0.00060351, 7.27073525, 0.99699130, 0.99841204, 0.49302858],
+                             [- 6.27172082, -0.00098413, 0.00060332, 7.27073669, 0.99699226, 0.99841255, 0.49302871],
+                             [- 6.27172196, -0.00098382, 0.00060313, 7.27073814, 0.99699322, 0.99841305, 0.49302887],
+                             [- 6.27172309, -0.00098351, 0.00060294, 7.27073958, 0.99699417, 0.99841356, 0.49302895],
+                             [- 6.27172421, -0.00098319, 0.00060275, 7.27074102, 0.99699513, 0.99841406, 0.49302912],
+                             [- 6.27172534, -0.00098288, 0.00060256, 7.27074246, 0.99699608, 0.99841456, 0.49302925],
+                             [- 6.27172646, -0.00098257, 0.00060236, 7.27074389, 0.99699704, 0.99841507, 0.49302935],
+                             [- 6.27172758, -0.00098226, 0.00060217, 7.27074532, 0.99699799, 0.99841557, 0.49302945],
+                             [- 6.27172870, -0.00098195, 0.00060198, 7.27074676, 0.99699894, 0.99841607, 0.49302959],
+                             [- 6.27172982, -0.00098163, 0.00060179, 7.27074818, 0.99699990, 0.99841657, 0.49302970],
+                             [- 6.27173093, -0.00098132, 0.00060160, 7.27074961, 0.99700085, 0.99841708, 0.49302981],
+                             [- 6.27173205, -0.00098101, 0.00060141, 7.27075103, 0.99700180, 0.99841758, 0.49302992],
+                             [- 6.27173316, -0.00098070, 0.00060122, 7.27075246, 0.99700275, 0.99841808, 0.49303009],
+                             [- 6.27173427, -0.00098039, 0.00060103, 7.27075388, 0.99700370, 0.99841858, 0.49303019],
+                             [- 6.27173537, -0.00098008, 0.00060084, 7.27075529, 0.99700465, 0.99841908, 0.49303031],
+                             [- 6.27173648, -0.00097977, 0.00060065, 7.27075671, 0.99700560, 0.99841958, 0.49303044],
+                             [- 6.27173758, -0.00097946, 0.00060046, 7.27075812, 0.99700655, 0.99842008, 0.49303056],
+                             [- 6.27173868, -0.00097915, 0.00060027, 7.27075953, 0.99700749, 0.99842058, 0.49303069],
+                             [- 6.27173978, -0.00097884, 0.00060008, 7.27076094, 0.99700844, 0.99842108, 0.49303080],
+                             [- 6.27174088, -0.00097853, 0.00059989, 7.27076235, 0.99700939, 0.99842158, 0.49303094],
+                             [- 6.27174198, -0.00097822, 0.00059970, 7.27076375, 0.99701033, 0.99842208, 0.49303107],
+                             [- 6.27174307, -0.00097791, 0.00059951, 7.27076516, 0.99701128, 0.99842258, 0.49303120],
+                             [- 6.27174416, -0.00097761, 0.00059932, 7.27076656, 0.99701222, 0.99842308, 0.49303132],
+                             [- 6.27174525, -0.00097730, 0.00059913, 7.27076795, 0.99701317, 0.99842357, 0.49303142],
+                             [- 6.27174634, -0.00097699, 0.00059894, 7.27076935, 0.99701411, 0.99842407, 0.49303154],
+                             [- 6.27174743, -0.00097668, 0.00059875, 7.27077075, 0.99701505, 0.99842457, 0.49303168],
+                             [- 6.27174851, -0.00097637, 0.00059856, 7.27077214, 0.99701599, 0.99842507, 0.49303176],
+                             [- 6.27174959, -0.00097606, 0.00059837, 7.27077353, 0.99701693, 0.99842556, 0.49303192],
+                             [- 6.27175067, -0.00097576, 0.00059818, 7.27077491, 0.99701788, 0.99842606, 0.49303205],
+                             [- 6.27175175, -0.00097545, 0.00059800, 7.27077630, 0.99701882, 0.99842656, 0.49303212],
+                             [- 6.27175283, -0.00097514, 0.00059781, 7.27077769, 0.99701976, 0.99842705, 0.49303223],
+                             [- 6.27175390, -0.00097484, 0.00059762, 7.27077907, 0.99702070, 0.99842755, 0.49303239],
+                             [- 6.27175497, -0.00097453, 0.00059743, 7.27078045, 0.99702163, 0.99842804, 0.49303247],
+                             [- 6.27175605, -0.00097422, 0.00059724, 7.27078182, 0.99702257, 0.99842854, 0.49303263],
+                             [- 6.27175712, -0.00097392, 0.00059705, 7.27078320, 0.99702351, 0.99842903, 0.49303277],
+                             [- 6.27175818, -0.00097361, 0.00059687, 7.27078457, 0.99702445, 0.99842952, 0.49303287],
+                             [- 6.27175925, -0.00097330, 0.00059668, 7.27078595, 0.99702538, 0.99843002, 0.49303298],
+                             [- 6.27176031, -0.00097300, 0.00059649, 7.27078731, 0.99702632, 0.99843051, 0.49303309],
+                             [- 6.27176137, -0.00097269, 0.00059630, 7.27078868, 0.99702725, 0.99843101, 0.49303324],
+                             [- 6.27176243, -0.00097239, 0.00059612, 7.27079005, 0.99702819, 0.99843150, 0.49303337],
+                             [- 6.27176349, -0.00097208, 0.00059593, 7.27079141, 0.99702912, 0.99843199, 0.49303342],
+                             [- 6.27176455, -0.00097178, 0.00059574, 7.27079277, 0.99703005, 0.99843248, 0.49303355],
+                             [- 6.27176560, -0.00097147, 0.00059555, 7.27079413, 0.99703099, 0.99843298, 0.49303367],
+                             [- 6.27176666, -0.00097117, 0.00059537, 7.27079549, 0.99703192, 0.99843347, 0.49303384],
+                             [- 6.27176771, -0.00097086, 0.00059518, 7.27079685, 0.99703285, 0.99843396, 0.49303391],
+                             [- 6.27176876, -0.00097056, 0.00059499, 7.27079820, 0.99703378, 0.99843445, 0.49303404],
+                             [- 6.27176980, -0.00097025, 0.00059481, 7.27079955, 0.99703471, 0.99843494, 0.49303417],
+                             [- 6.27177085, -0.00096995, 0.00059462, 7.27080090, 0.99703564, 0.99843543, 0.49303426],
+                             [- 6.27177189, -0.00096965, 0.00059443, 7.27080225, 0.99703657, 0.99843592, 0.49303442],
+                             [- 6.27177294, -0.00096934, 0.00059425, 7.27080359, 0.99703750, 0.99843641, 0.49303454],
+                             [- 6.27177398, -0.00096904, 0.00059406, 7.27080494, 0.99703843, 0.99843690, 0.49303464],
+                             [- 6.27177502, -0.00096874, 0.00059388, 7.27080628, 0.99703936, 0.99843739, 0.49303476],
+                             [- 6.27177605, -0.00096843, 0.00059369, 7.27080762, 0.99704028, 0.99843788, 0.49303487],
+                             [- 6.27177709, -0.00096813, 0.00059350, 7.27080896, 0.99704121, 0.99843837, 0.49303501],
+                             [- 6.27177812, -0.00096783, 0.00059332, 7.27081030, 0.99704213, 0.99843886, 0.49303512],
+                             [- 6.27177915, -0.00096752, 0.00059313, 7.27081163, 0.99704306, 0.99843934, 0.49303521],
+                             [- 6.27178018, -0.00096722, 0.00059295, 7.27081296, 0.99704398, 0.99843983, 0.49303537],
+                             [- 6.27178121, -0.00096692, 0.00059276, 7.27081429, 0.99704491, 0.99844032, 0.49303546],
+                             [- 6.27178224, -0.00096662, 0.00059258, 7.27081562, 0.99704583, 0.99844081, 0.49303558],
+                             [- 6.27178326, -0.00096632, 0.00059239, 7.27081695, 0.99704675, 0.99844129, 0.49303575],
+                             [- 6.27178429, -0.00096602, 0.00059221, 7.27081827, 0.99704768, 0.99844178, 0.49303581],
+                             [- 6.27178531, -0.00096571, 0.00059202, 7.27081960, 0.99704860, 0.99844227, 0.49303591],
+                             [- 6.27178633, -0.00096541, 0.00059184, 7.27082092, 0.99704952, 0.99844275, 0.49303609],
+                             [- 6.27178735, -0.00096511, 0.00059165, 7.27082224, 0.99705044, 0.99844324, 0.49303618],
+                             [- 6.27178836, -0.00096481, 0.00059147, 7.27082355, 0.99705136, 0.99844372, 0.49303628],
+                             [- 6.27178938, -0.00096451, 0.00059128, 7.27082487, 0.99705228, 0.99844421, 0.49303641],
+                             [- 6.27179039, -0.00096421, 0.00059110, 7.27082618, 0.99705320, 0.99844469, 0.49303652],
+                             [- 6.27179140, -0.00096391, 0.00059091, 7.27082749, 0.99705412, 0.99844518, 0.49303666],
+                             [- 6.27179242, -0.00096361, 0.00059073, 7.27082881, 0.99705503, 0.99844566, 0.49303673],
+                             [- 6.27179342, -0.00096331, 0.00059055, 7.27083011, 0.99705595, 0.99844614, 0.49303690],
+                             [- 6.27179443, -0.00096301, 0.00059036, 7.27083142, 0.99705687, 0.99844663, 0.49303700],
+                             [- 6.27179544, -0.00096271, 0.00059018, 7.27083272, 0.99705778, 0.99844711, 0.49303712],
+                             [- 6.27179644, -0.00096241, 0.00058999, 7.27083403, 0.99705870, 0.99844759, 0.49303722],
+                             [- 6.27179744, -0.00096211, 0.00058981, 7.27083533, 0.99705961, 0.99844808, 0.49303732],
+                             [- 6.27179844, -0.00096181, 0.00058963, 7.27083663, 0.99706053, 0.99844856, 0.49303745],
+                             [- 6.27179944, -0.00096152, 0.00058944, 7.27083792, 0.99706144, 0.99844904, 0.49303757],
+                             [- 6.27180044, -0.00096122, 0.00058926, 7.27083922, 0.99706235, 0.99844952, 0.49303771],
+                             [- 6.27180143, -0.00096092, 0.00058908, 7.27084051, 0.99706327, 0.99845000, 0.49303777],
+                             [- 6.27180243, -0.00096062, 0.00058890, 7.27084181, 0.99706418, 0.99845048, 0.49303795],
+                             [- 6.27180342, -0.00096032, 0.00058871, 7.27084310, 0.99706509, 0.99845097, 0.49303802],
+                             [- 6.27180441, -0.00096002, 0.00058853, 7.27084438, 0.99706600, 0.99845145, 0.49303815],
+                             [- 6.27180540, -0.00095973, 0.00058835, 7.27084567, 0.99706691, 0.99845193, 0.49303827],
+                             [- 6.27180639, -0.00095943, 0.00058816, 7.27084696, 0.99706782, 0.99845241, 0.49303836],
+                             [- 6.27180737, -0.00095913, 0.00058798, 7.27084824, 0.99706873, 0.99845289, 0.49303844],
+                             [- 6.27180836, -0.00095884, 0.00058780, 7.27084952, 0.99706964, 0.99845336, 0.49303861],
+                             [- 6.27180934, -0.00095854, 0.00058762, 7.27085080, 0.99707055, 0.99845384, 0.49303868],
+                             [- 6.27181032, -0.00095824, 0.00058744, 7.27085208, 0.99707145, 0.99845432, 0.49303884],
+                             [- 6.27181130, -0.00095795, 0.00058725, 7.27085335, 0.99707236, 0.99845480, 0.49303895],
+                             [- 6.27181228, -0.00095765, 0.00058707, 7.27085463, 0.99707327, 0.99845528, 0.49303908],
+                             [- 6.27181325, -0.00095735, 0.00058689, 7.27085590, 0.99707417, 0.99845576, 0.49303915],
+                             [- 6.27181423, -0.00095706, 0.00058671, 7.27085717, 0.99707508, 0.99845623, 0.49303928],
+                             [- 6.27181520, -0.00095676, 0.00058653, 7.27085844, 0.99707598, 0.99845671, 0.49303940],
+                             [- 6.27181618, -0.00095647, 0.00058635, 7.27085971, 0.99707689, 0.99845719, 0.49303950],
+                             [- 6.27181715, -0.00095617, 0.00058616, 7.27086098, 0.99707779, 0.99845766, 0.49303965],
+                             [- 6.27181811, -0.00095588, 0.00058598, 7.27086224, 0.99707869, 0.99845814, 0.49303979],
+                             [- 6.27181908, -0.00095558, 0.00058580, 7.27086350, 0.99707960, 0.99845862, 0.49303989],
+                             [- 6.27182005, -0.00095529, 0.00058562, 7.27086476, 0.99708050, 0.99845909, 0.49303994],
+                             [- 6.27182101, -0.00095499, 0.00058544, 7.27086602, 0.99708140, 0.99845957, 0.49304006],
+                             [- 6.27182198, -0.00095470, 0.00058526, 7.27086728, 0.99708230, 0.99846004, 0.49304023],
+                             [- 6.27182294, -0.00095440, 0.00058508, 7.27086854, 0.99708320, 0.99846052, 0.49304031],
+                             [- 6.27182390, -0.00095411, 0.00058490, 7.27086979, 0.99708410, 0.99846099, 0.49304040],
+                             [- 6.27182486, -0.00095381, 0.00058472, 7.27087104, 0.99708500, 0.99846147, 0.49304052],
+                             [- 6.27182581, -0.00095352, 0.00058454, 7.27087229, 0.99708590, 0.99846194, 0.49304066],
+                             [- 6.27182677, -0.00095323, 0.00058436, 7.27087354, 0.99708680, 0.99846242, 0.49304078],
+                             [- 6.27182772, -0.00095293, 0.00058418, 7.27087479, 0.99708769, 0.99846289, 0.49304090],
+                             [- 6.27182867, -0.00095264, 0.00058400, 7.27087603, 0.99708859, 0.99846336, 0.49304102],
+                             [- 6.27182963, -0.00095235, 0.00058382, 7.27087728, 0.99708949, 0.99846383, 0.49304112],
+                             [- 6.27183058, -0.00095205, 0.00058364, 7.27087852, 0.99709038, 0.99846431, 0.49304120],
+                             [- 6.27183152, -0.00095176, 0.00058346, 7.27087976, 0.99709128, 0.99846478, 0.49304129],
+                             [- 6.27183247, -0.00095147, 0.00058328, 7.27088100, 0.99709217, 0.99846525, 0.49304145],
+                             [- 6.27183342, -0.00095118, 0.00058310, 7.27088224, 0.99709307, 0.99846572, 0.49304157],
+                             [- 6.27183436, -0.00095088, 0.00058292, 7.27088348, 0.99709396, 0.99846619, 0.49304165],
+                             [- 6.27183530, -0.00095059, 0.00058274, 7.27088471, 0.99709485, 0.99846667, 0.49304175],
+                             [- 6.27183624, -0.00095030, 0.00058256, 7.27088594, 0.99709575, 0.99846714, 0.49304190],
+                             [- 6.27183718, -0.00095001, 0.00058238, 7.27088717, 0.99709664, 0.99846761, 0.49304204],
+                             [- 6.27183812, -0.00094972, 0.00058221, 7.27088840, 0.99709753, 0.99846808, 0.49304212],
+                             [- 6.27183906, -0.00094943, 0.00058203, 7.27088963, 0.99709842, 0.99846855, 0.49304222],
+                             [- 6.27183999, -0.00094914, 0.00058185, 7.27089086, 0.99709931, 0.99846902, 0.49304233],
+                             [- 6.27184093, -0.00094884, 0.00058167, 7.27089208, 0.99710020, 0.99846949, 0.49304245],
+                             [- 6.27184186, -0.00094855, 0.00058149, 7.27089331, 0.99710109, 0.99846996, 0.49304255],
+                             [- 6.27184279, -0.00094826, 0.00058131, 7.27089453, 0.99710198, 0.99847042, 0.49304263],
+                             [- 6.27184372, -0.00094797, 0.00058113, 7.27089575, 0.99710287, 0.99847089, 0.49304277],
+                             [- 6.27184465, -0.00094768, 0.00058096, 7.27089697, 0.99710375, 0.99847136, 0.49304288],
+                             [- 6.27184558, -0.00094739, 0.00058078, 7.27089818, 0.99710464, 0.99847183, 0.49304302],
+                             [- 6.27184650, -0.00094710, 0.00058060, 7.27089940, 0.99710553, 0.99847230, 0.49304309],
+                             [- 6.27184743, -0.00094681, 0.00058042, 7.27090061, 0.99710641, 0.99847276, 0.49304322],
+                             [- 6.27184835, -0.00094652, 0.00058025, 7.27090182, 0.99710730, 0.99847323, 0.49304332],
+                             [- 6.27184927, -0.00094623, 0.00058007, 7.27090304, 0.99710818, 0.99847370, 0.49304348],
+                             [- 6.27185019, -0.00094595, 0.00057989, 7.27090424, 0.99710907, 0.99847416, 0.49304351],
+                             [- 6.27185111, -0.00094566, 0.00057971, 7.27090545, 0.99710995, 0.99847463, 0.49304363],
+                             [- 6.27185203, -0.00094537, 0.00057954, 7.27090666, 0.99711083, 0.99847510, 0.49304378],
+                             [- 6.27185294, -0.00094508, 0.00057936, 7.27090786, 0.99711172, 0.99847556, 0.49304390],
+                             [- 6.27185386, -0.00094479, 0.00057918, 7.27090907, 0.99711260, 0.99847603, 0.49304399],
+                             [- 6.27185477, -0.00094450, 0.00057901, 7.27091027, 0.99711348, 0.99847649, 0.49304412],
+                             [- 6.27185568, -0.00094421, 0.00057883, 7.27091147, 0.99711436, 0.99847696, 0.49304419],
+                             [- 6.27185659, -0.00094393, 0.00057865, 7.27091267, 0.99711524, 0.99847742, 0.49304433],
+                             [- 6.27185750, -0.00094364, 0.00057848, 7.27091386, 0.99711612, 0.99847789, 0.49304445],
+                             [- 6.27185841, -0.00094335, 0.00057830, 7.27091506, 0.99711700, 0.99847835, 0.49304453],
+                             [- 6.27185932, -0.00094306, 0.00057812, 7.27091625, 0.99711788, 0.99847881, 0.49304463],
+                             [- 6.27186022, -0.00094278, 0.00057795, 7.27091745, 0.99711876, 0.99847928, 0.49304471],
+                             [- 6.27186113, -0.00094249, 0.00057777, 7.27091864, 0.99711964, 0.99847974, 0.49304488],
+                             [- 6.27186203, -0.00094220, 0.00057759, 7.27091983, 0.99712051, 0.99848020, 0.49304496],
+                             [- 6.27186293, -0.00094192, 0.00057742, 7.27092101, 0.99712139, 0.99848067, 0.49304509],
+                             [- 6.27186383, -0.00094163, 0.00057724, 7.27092220, 0.99712227, 0.99848113, 0.49304521],
+                             [- 6.27186473, -0.00094134, 0.00057707, 7.27092339, 0.99712314, 0.99848159, 0.49304528],
+                             [- 6.27186563, -0.00094106, 0.00057689, 7.27092457, 0.99712402, 0.99848205, 0.49304542],
+                             [- 6.27186652, -0.00094077, 0.00057672, 7.27092575, 0.99712489, 0.99848251, 0.49304552],
+                             [- 6.27186742, -0.00094049, 0.00057654, 7.27092693, 0.99712577, 0.99848297, 0.49304562],
+                             [- 6.27186831, -0.00094020, 0.00057636, 7.27092811, 0.99712664, 0.99848344, 0.49304571],
+                             [- 6.27186920, -0.00093991, 0.00057619, 7.27092929, 0.99712751, 0.99848390, 0.49304585],
+                             [- 6.27187010, -0.00093963, 0.00057601, 7.27093047, 0.99712839, 0.99848436, 0.49304595],
+                             [- 6.27187098, -0.00093934, 0.00057584, 7.27093164, 0.99712926, 0.99848482, 0.49304606],
+                             [- 6.27187187, -0.00093906, 0.00057567, 7.27093281, 0.99713013, 0.99848528, 0.49304619],
+                             [- 6.27187276, -0.00093877, 0.00057549, 7.27093399, 0.99713100, 0.99848574, 0.49304625],
+                             [- 6.27187365, -0.00093849, 0.00057532, 7.27093516, 0.99713187, 0.99848619, 0.49304638],
+                             [- 6.27187453, -0.00093821, 0.00057514, 7.27093633, 0.99713274, 0.99848665, 0.49304650],
+                             [- 6.27187541, -0.00093792, 0.00057497, 7.27093749, 0.99713361, 0.99848711, 0.49304662],
+                             [- 6.27187630, -0.00093764, 0.00057479, 7.27093866, 0.99713448, 0.99848757, 0.49304675],
+                             [- 6.27187718, -0.00093735, 0.00057462, 7.27093983, 0.99713535, 0.99848803, 0.49304680],
+                             [- 6.27187806, -0.00093707, 0.00057444, 7.27094099, 0.99713622, 0.99848849, 0.49304696],
+                             [- 6.27187894, -0.00093679, 0.00057427, 7.27094215, 0.99713708, 0.99848894, 0.49304701],
+                             [- 6.27187981, -0.00093650, 0.00057410, 7.27094331, 0.99713795, 0.99848940, 0.49304717],
+                             [- 6.27188069, -0.00093622, 0.00057392, 7.27094447, 0.99713882, 0.99848986, 0.49304726],
+                             [- 6.27188156, -0.00093594, 0.00057375, 7.27094563, 0.99713968, 0.99849031, 0.49304734],
+                             [- 6.27188244, -0.00093565, 0.00057358, 7.27094678, 0.99714055, 0.99849077, 0.49304749],
+                             [- 6.27188331, -0.00093537, 0.00057340, 7.27094794, 0.99714141, 0.99849123, 0.49304756],
+                             [- 6.27188418, -0.00093509, 0.00057323, 7.27094909, 0.99714228, 0.99849168, 0.49304769],
+                             [- 6.27188505, -0.00093481, 0.00057306, 7.27095025, 0.99714314, 0.99849214, 0.49304781],
+                             [- 6.27188592, -0.00093452, 0.00057288, 7.27095140, 0.99714400, 0.99849259, 0.49304789],
+                             [- 6.27188679, -0.00093424, 0.00057271, 7.27095255, 0.99714486, 0.99849305, 0.49304797],
+                             [- 6.27188765, -0.00093396, 0.00057254, 7.27095369, 0.99714573, 0.99849350, 0.49304811],
+                             [- 6.27188852, -0.00093368, 0.00057236, 7.27095484, 0.99714659, 0.99849396, 0.49304819],
+                             [- 6.27188938, -0.00093340, 0.00057219, 7.27095599, 0.99714745, 0.99849441, 0.49304832],
+                             [- 6.27189025, -0.00093312, 0.00057202, 7.27095713, 0.99714831, 0.99849487, 0.49304841],
+                             [- 6.27189111, -0.00093283, 0.00057185, 7.27095827, 0.99714917, 0.99849532, 0.49304852],
+                             [- 6.27189197, -0.00093255, 0.00057167, 7.27095942, 0.99715003, 0.99849577, 0.49304861],
+                             [- 6.27189283, -0.00093227, 0.00057150, 7.27096056, 0.99715089, 0.99849623, 0.49304875],
+                             [- 6.27189369, -0.00093199, 0.00057133, 7.27096169, 0.99715175, 0.99849668, 0.49304884],
+                             [- 6.27189454, -0.00093171, 0.00057116, 7.27096283, 0.99715260, 0.99849713, 0.49304894],
+                             [- 6.27189540, -0.00093143, 0.00057098, 7.27096397, 0.99715346, 0.99849758, 0.49304909],
+                             [- 6.27189625, -0.00093115, 0.00057081, 7.27096510, 0.99715432, 0.99849804, 0.49304918],
+                             [- 6.27189711, -0.00093087, 0.00057064, 7.27096624, 0.99715517, 0.99849849, 0.49304926],
+                             [- 6.27189796, -0.00093059, 0.00057047, 7.27096737, 0.99715603, 0.99849894, 0.49304941],
+                             [- 6.27189881, -0.00093031, 0.00057030, 7.27096850, 0.99715689, 0.99849939, 0.49304950],
+                             [- 6.27189966, -0.00093003, 0.00057013, 7.27096963, 0.99715774, 0.99849984, 0.49304958],
+                             [- 6.27190051, -0.00092975, 0.00056995, 7.27097076, 0.99715860, 0.99850029, 0.49304964],
+                             [- 6.27190136, -0.00092947, 0.00056978, 7.27097188, 0.99715945, 0.99850074, 0.49304982],
+                             [- 6.27190220, -0.00092919, 0.00056961, 7.27097301, 0.99716030, 0.99850119, 0.49304989],
+                             [- 6.27190305, -0.00092892, 0.00056944, 7.27097413, 0.99716115, 0.99850164, 0.49305004],
+                             [- 6.27190389, -0.00092864, 0.00056927, 7.27097525, 0.99716201, 0.99850209, 0.49305011],
+                             [- 6.27190474, -0.00092836, 0.00056910, 7.27097638, 0.99716286, 0.99850254, 0.49305025],
+                             [- 6.27190558, -0.00092808, 0.00056893, 7.27097750, 0.99716371, 0.99850299, 0.49305033],
+                             [- 6.27190642, -0.00092780, 0.00056876, 7.27097862, 0.99716456, 0.99850344, 0.49305045],
+                             [- 6.27190726, -0.00092752, 0.00056859, 7.27097973, 0.99716541, 0.99850389, 0.49305056],
+                             [- 6.27190810, -0.00092725, 0.00056842, 7.27098085, 0.99716626, 0.99850434, 0.49305065],
+                             [- 6.27190893, -0.00092697, 0.00056825, 7.27098197, 0.99716711, 0.99850478, 0.49305076],
+                             [- 6.27190977, -0.00092669, 0.00056808, 7.27098308, 0.99716796, 0.99850523, 0.49305085],
+                             [- 6.27191061, -0.00092641, 0.00056791, 7.27098419, 0.99716881, 0.99850568, 0.49305094],
+                             [- 6.27191144, -0.00092614, 0.00056774, 7.27098530, 0.99716965, 0.99850613, 0.49305108],
+                             [- 6.27191227, -0.00092586, 0.00056757, 7.27098641, 0.99717050, 0.99850657, 0.49305115],
+                             [- 6.27191311, -0.00092558, 0.00056740, 7.27098752, 0.99717135, 0.99850702, 0.49305125],
+                             [- 6.27191394, -0.00092531, 0.00056723, 7.27098863, 0.99717219, 0.99850747, 0.49305139],
+                             [- 6.27191477, -0.00092503, 0.00056706, 7.27098974, 0.99717304, 0.99850791, 0.49305148],
+                             [- 6.27191559, -0.00092475, 0.00056689, 7.27099084, 0.99717389, 0.99850836, 0.49305158],
+                             [- 6.27191642, -0.00092448, 0.00056672, 7.27099194, 0.99717473, 0.99850880, 0.49305167],
+                             [- 6.27191725, -0.00092420, 0.00056655, 7.27099305, 0.99717557, 0.99850925, 0.49305181],
+                             [- 6.27191807, -0.00092393, 0.00056638, 7.27099415, 0.99717642, 0.99850969, 0.49305190],
+                             [- 6.27191890, -0.00092365, 0.00056621, 7.27099525, 0.99717726, 0.99851014, 0.49305201],
+                             [- 6.27191972, -0.00092338, 0.00056604, 7.27099635, 0.99717810, 0.99851058, 0.49305208],
+                             [- 6.27192054, -0.00092310, 0.00056587, 7.27099744, 0.99717895, 0.99851103, 0.49305223],
+                             [- 6.27192136, -0.00092282, 0.00056570, 7.27099854, 0.99717979, 0.99851147, 0.49305232],
+                             [- 6.27192218, -0.00092255, 0.00056553, 7.27099964, 0.99718063, 0.99851192, 0.49305243],
+                             [- 6.27192300, -0.00092227, 0.00056537, 7.27100073, 0.99718147, 0.99851236, 0.49305250],
+                             [- 6.27192382, -0.00092200, 0.00056520, 7.27100182, 0.99718231, 0.99851280, 0.49305258],
+                             [- 6.27192464, -0.00092173, 0.00056503, 7.27100291, 0.99718315, 0.99851325, 0.49305275],
+                             [- 6.27192545, -0.00092145, 0.00056486, 7.27100400, 0.99718399, 0.99851369, 0.49305278],
+                             [- 6.27192627, -0.00092118, 0.00056469, 7.27100509, 0.99718483, 0.99851413, 0.49305295],
+                             [- 6.27192708, -0.00092090, 0.00056452, 7.27100618, 0.99718566, 0.99851457, 0.49305299],
+                             [- 6.27192790, -0.00092063, 0.00056436, 7.27100727, 0.99718650, 0.99851502, 0.49305314],
+                             [- 6.27192871, -0.00092036, 0.00056419, 7.27100835, 0.99718734, 0.99851546, 0.49305323],
+                             [- 6.27192952, -0.00092008, 0.00056402, 7.27100944, 0.99718818, 0.99851590, 0.49305333],
+                             [- 6.27193033, -0.00091981, 0.00056385, 7.27101052, 0.99718901, 0.99851634, 0.49305345],
+                             [- 6.27193114, -0.00091954, 0.00056368, 7.27101160, 0.99718985, 0.99851678, 0.49305349],
+                             [- 6.27193194, -0.00091926, 0.00056352, 7.27101268, 0.99719068, 0.99851722, 0.49305365],
+                             [- 6.27193275, -0.00091899, 0.00056335, 7.27101376, 0.99719152, 0.99851766, 0.49305371],
+                             [- 6.27193356, -0.00091872, 0.00056318, 7.27101484, 0.99719235, 0.99851810, 0.49305382],
+                             [- 6.27193436, -0.00091844, 0.00056301, 7.27101592, 0.99719318, 0.99851854, 0.49305392],
+                             [- 6.27193516, -0.00091817, 0.00056285, 7.27101699, 0.99719402, 0.99851898, 0.49305400],
+                             [- 6.27193597, -0.00091790, 0.00056268, 7.27101807, 0.99719485, 0.99851942, 0.49305415],
+                             [- 6.27193677, -0.00091763, 0.00056251, 7.27101914, 0.99719568, 0.99851986, 0.49305427],
+                             [- 6.27193757, -0.00091736, 0.00056235, 7.27102021, 0.99719651, 0.99852030, 0.49305437],
+                             [- 6.27193837, -0.00091708, 0.00056218, 7.27102128, 0.99719735, 0.99852074, 0.49305443],
+                             [- 6.27193917, -0.00091681, 0.00056201, 7.27102235, 0.99719818, 0.99852117, 0.49305458],
+                             [- 6.27193996, -0.00091654, 0.00056185, 7.27102342, 0.99719901, 0.99852161, 0.49305464],
+                             [- 6.27194076, -0.00091627, 0.00056168, 7.27102449, 0.99719984, 0.99852205, 0.49305472],
+                             [- 6.27194155, -0.00091600, 0.00056151, 7.27102556, 0.99720066, 0.99852249, 0.49305485],
+                             [- 6.27194235, -0.00091573, 0.00056135, 7.27102662, 0.99720149, 0.99852292, 0.49305488],
+                             [- 6.27194314, -0.00091546, 0.00056118, 7.27102769, 0.99720232, 0.99852336, 0.49305501],
+                             [- 6.27194394, -0.00091519, 0.00056102, 7.27102875, 0.99720315, 0.99852380, 0.49305520],
+                             [- 6.27194473, -0.00091492, 0.00056085, 7.27102981, 0.99720398, 0.99852423, 0.49305527],
+                             [- 6.27194552, -0.00091465, 0.00056068, 7.27103087, 0.99720480, 0.99852467, 0.49305537],
+                             [- 6.27194631, -0.00091438, 0.00056052, 7.27103193, 0.99720563, 0.99852511, 0.49305541],
+                             [- 6.27194710, -0.00091411, 0.00056035, 7.27103299, 0.99720646, 0.99852554, 0.49305558],
+                             [- 6.27194788, -0.00091384, 0.00056019, 7.27103405, 0.99720728, 0.99852598, 0.49305568],
+                             [- 6.27194867, -0.00091357, 0.00056002, 7.27103510, 0.99720811, 0.99852641, 0.49305582],
+                             [- 6.27194946, -0.00091330, 0.00055986, 7.27103616, 0.99720893, 0.99852685, 0.49305585],
+                             [- 6.27195024, -0.00091303, 0.00055969, 7.27103721, 0.99720975, 0.99852728, 0.49305599],
+                             [- 6.27195102, -0.00091276, 0.00055953, 7.27103827, 0.99721058, 0.99852772, 0.49305606],
+                             [- 6.27195181, -0.00091249, 0.00055936, 7.27103932, 0.99721140, 0.99852815, 0.49305614],
+                             [- 6.27195259, -0.00091222, 0.00055920, 7.27104037, 0.99721222, 0.99852858, 0.49305629],
+                             [- 6.27195337, -0.00091195, 0.00055903, 7.27104142, 0.99721304, 0.99852902, 0.49305636],
+                             [- 6.27195415, -0.00091168, 0.00055887, 7.27104247, 0.99721387, 0.99852945, 0.49305643],
+                             [- 6.27195493, -0.00091141, 0.00055870, 7.27104351, 0.99721469, 0.99852988, 0.49305655],
+                             [- 6.27195571, -0.00091115, 0.00055854, 7.27104456, 0.99721551, 0.99853032, 0.49305663],
+                             [- 6.27195648, -0.00091088, 0.00055837, 7.27104561, 0.99721633, 0.99853075, 0.49305679],
+                             [- 6.27195726, -0.00091061, 0.00055821, 7.27104665, 0.99721715, 0.99853118, 0.49305682],
+                             [- 6.27195803, -0.00091034, 0.00055804, 7.27104769, 0.99721796, 0.99853161, 0.49305696],
+                             [- 6.27195881, -0.00091007, 0.00055788, 7.27104873, 0.99721878, 0.99853205, 0.49305711],
+                             [- 6.27195958, -0.00090981, 0.00055771, 7.27104978, 0.99721960, 0.99853248, 0.49305719],
+                             [- 6.27196035, -0.00090954, 0.00055755, 7.27105081, 0.99722042, 0.99853291, 0.49305721],
+                             [- 6.27196113, -0.00090927, 0.00055739, 7.27105185, 0.99722124, 0.99853334, 0.49305736],
+                             [- 6.27196190, -0.00090901, 0.00055722, 7.27105289, 0.99722205, 0.99853377, 0.49305741],
+                             [- 6.27196267, -0.00090874, 0.00055706, 7.27105393, 0.99722287, 0.99853420, 0.49305756],
+                             [- 6.27196344, -0.00090847, 0.00055690, 7.27105496, 0.99722368, 0.99853463, 0.49305766],
+                             [- 6.27196420, -0.00090821, 0.00055673, 7.27105600, 0.99722450, 0.99853506, 0.49305779],
+                             [- 6.27196497, -0.00090794, 0.00055657, 7.27105703, 0.99722531, 0.99853549, 0.49305788],
+                             [- 6.27196574, -0.00090767, 0.00055641, 7.27105806, 0.99722613, 0.99853592, 0.49305797],
+                             [- 6.27196650, -0.00090741, 0.00055624, 7.27105909, 0.99722694, 0.99853635, 0.49305806],
+                             [- 6.27196726, -0.00090714, 0.00055608, 7.27106012, 0.99722776, 0.99853678, 0.49305817],
+                             [- 6.27196803, -0.00090688, 0.00055592, 7.27106115, 0.99722857, 0.99853721, 0.49305825],
+                             [- 6.27196879, -0.00090661, 0.00055575, 7.27106218, 0.99722938, 0.99853764, 0.49305840],
+                             [- 6.27196955, -0.00090634, 0.00055559, 7.27106321, 0.99723019, 0.99853807, 0.49305847],
+                             [- 6.27197031, -0.00090608, 0.00055543, 7.27106423, 0.99723100, 0.99853849, 0.49305859],
+                             [- 6.27197107, -0.00090581, 0.00055526, 7.27106526, 0.99723181, 0.99853892, 0.49305865],
+                             [- 6.27197183, -0.00090555, 0.00055510, 7.27106628, 0.99723262, 0.99853935, 0.49305875],
+                             [- 6.27197259, -0.00090528, 0.00055494, 7.27106730, 0.99723343, 0.99853978, 0.49305889],
+                             [- 6.27197335, -0.00090502, 0.00055478, 7.27106833, 0.99723424, 0.99854020, 0.49305896],
+                             [- 6.27197410, -0.00090476, 0.00055461, 7.27106935, 0.99723505, 0.99854063, 0.49305906],
+                             [- 6.27197486, -0.00090449, 0.00055445, 7.27107037, 0.99723586, 0.99854106, 0.49305911],
+                             [- 6.27197561, -0.00090423, 0.00055429, 7.27107138, 0.99723667, 0.99854148, 0.49305929],
+                             [- 6.27197637, -0.00090396, 0.00055413, 7.27107240, 0.99723748, 0.99854191, 0.49305933],
+                             [- 6.27197712, -0.00090370, 0.00055397, 7.27107342, 0.99723828, 0.99854233, 0.49305943],
+                             [- 6.27197787, -0.00090344, 0.00055380, 7.27107443, 0.99723909, 0.99854276, 0.49305954],
+                             [- 6.27197862, -0.00090317, 0.00055364, 7.27107545, 0.99723990, 0.99854319, 0.49305965],
+                             [- 6.27197937, -0.00090291, 0.00055348, 7.27107646, 0.99724070, 0.99854361, 0.49305972],
+                             [- 6.27198012, -0.00090264, 0.00055332, 7.27107748, 0.99724151, 0.99854404, 0.49305986],
+                             [- 6.27198087, -0.00090238, 0.00055316, 7.27107849, 0.99724231, 0.99854446, 0.49305996],
+                             [- 6.27198162, -0.00090212, 0.00055300, 7.27107950, 0.99724312, 0.99854488, 0.49306003],
+                             [- 6.27198236, -0.00090186, 0.00055284, 7.27108051, 0.99724392, 0.99854531, 0.49306014],
+                             [- 6.27198311, -0.00090159, 0.00055267, 7.27108151, 0.99724472, 0.99854573, 0.49306027],
+                             [- 6.27198385, -0.00090133, 0.00055251, 7.27108252, 0.99724553, 0.99854616, 0.49306036],
+                             [- 6.27198460, -0.00090107, 0.00055235, 7.27108353, 0.99724633, 0.99854658, 0.49306043],
+                             [- 6.27198534, -0.00090081, 0.00055219, 7.27108453, 0.99724713, 0.99854700, 0.49306047],
+                             [- 6.27198608, -0.00090054, 0.00055203, 7.27108554, 0.99724793, 0.99854742, 0.49306066],
+                             [- 6.27198682, -0.00090028, 0.00055187, 7.27108654, 0.99724873, 0.99854785, 0.49306072],
+                             [- 6.27198756, -0.00090002, 0.00055171, 7.27108754, 0.99724953, 0.99854827, 0.49306079],
+                             [- 6.27198830, -0.00089976, 0.00055155, 7.27108855, 0.99725033, 0.99854869, 0.49306090],
+                             [- 6.27198904, -0.00089950, 0.00055139, 7.27108955, 0.99725113, 0.99854911, 0.49306100],
+                             [- 6.27198978, -0.00089924, 0.00055123, 7.27109054, 0.99725193, 0.99854954, 0.49306107],
+                             [- 6.27199052, -0.00089898, 0.00055107, 7.27109154, 0.99725273, 0.99854996, 0.49306122],
+                             [- 6.27199126, -0.00089871, 0.00055091, 7.27109254, 0.99725353, 0.99855038, 0.49306129],
+                             [- 6.27199199, -0.00089845, 0.00055075, 7.27109354, 0.99725433, 0.99855080, 0.49306135],
+                             [- 6.27199273, -0.00089819, 0.00055059, 7.27109453, 0.99725512, 0.99855122, 0.49306146],
+                             [- 6.27199346, -0.00089793, 0.00055043, 7.27109553, 0.99725592, 0.99855164, 0.49306163],
+                             [- 6.27199419, -0.00089767, 0.00055027, 7.27109652, 0.99725672, 0.99855206, 0.49306163],
+                             [- 6.27199493, -0.00089741, 0.00055011, 7.27109751, 0.99725751, 0.99855248, 0.49306178],
+                             [- 6.27199566, -0.00089715, 0.00054995, 7.27109851, 0.99725831, 0.99855290, 0.49306188],
+                             [- 6.27199639, -0.00089689, 0.00054979, 7.27109950, 0.99725910, 0.99855332, 0.49306196],
+                             [- 6.27199712, -0.00089663, 0.00054963, 7.27110049, 0.99725990, 0.99855374, 0.49306206],
+                             [- 6.27199785, -0.00089637, 0.00054947, 7.27110147, 0.99726069, 0.99855416, 0.49306218],
+                             [- 6.27199857, -0.00089611, 0.00054931, 7.27110246, 0.99726149, 0.99855458, 0.49306227],
+                             [- 6.27199930, -0.00089585, 0.00054915, 7.27110345, 0.99726228, 0.99855499, 0.49306238],
+                             [- 6.27200003, -0.00089559, 0.00054899, 7.27110443, 0.99726307, 0.99855541, 0.49306244],
+                             [- 6.27200076, -0.00089534, 0.00054883, 7.27110542, 0.99726386, 0.99855583, 0.49306254],
+                             [- 6.27200148, -0.00089508, 0.00054868, 7.27110640, 0.99726465, 0.99855625, 0.49306260],
+                             [- 6.27200220, -0.00089482, 0.00054852, 7.27110739, 0.99726545, 0.99855667, 0.49306270],
+                             [- 6.27200293, -0.00089456, 0.00054836, 7.27110837, 0.99726624, 0.99855708, 0.49306284],
+                             [- 6.27200365, -0.00089430, 0.00054820, 7.27110935, 0.99726703, 0.99855750, 0.49306289],
+                             [- 6.27200437, -0.00089404, 0.00054804, 7.27111033, 0.99726782, 0.99855792, 0.49306299],
+                             [- 6.27200509, -0.00089378, 0.00054788, 7.27111131, 0.99726861, 0.99855833, 0.49306315],
+                             [- 6.27200581, -0.00089353, 0.00054772, 7.27111229, 0.99726940, 0.99855875, 0.49306325],
+                             [- 6.27200653, -0.00089327, 0.00054757, 7.27111326, 0.99727018, 0.99855916, 0.49306334],
+                             [- 6.27200725, -0.00089301, 0.00054741, 7.27111424, 0.99727097, 0.99855958, 0.49306342],
+                             [- 6.27200797, -0.00089275, 0.00054725, 7.27111522, 0.99727176, 0.99856000, 0.49306348],
+                             [- 6.27200869, -0.00089250, 0.00054709, 7.27111619, 0.99727255, 0.99856041, 0.49306360],
+                             [- 6.27200940, -0.00089224, 0.00054693, 7.27111717, 0.99727333, 0.99856083, 0.49306368],
+                             [- 6.27201012, -0.00089198, 0.00054678, 7.27111814, 0.99727412, 0.99856124, 0.49306382],
+                             [- 6.27201083, -0.00089172, 0.00054662, 7.27111911, 0.99727491, 0.99856166, 0.49306389],
+                             [- 6.27201155, -0.00089147, 0.00054646, 7.27112008, 0.99727569, 0.99856207, 0.49306395],
+                             [- 6.27201226, -0.00089121, 0.00054630, 7.27112105, 0.99727648, 0.99856248, 0.49306405],
+                             [- 6.27201297, -0.00089095, 0.00054615, 7.27112202, 0.99727726, 0.99856290, 0.49306415],
+                             [- 6.27201369, -0.00089070, 0.00054599, 7.27112299, 0.99727804, 0.99856331, 0.49306425],
+                             [- 6.27201440, -0.00089044, 0.00054583, 7.27112395, 0.99727883, 0.99856373, 0.49306438],
+                             [- 6.27201511, -0.00089019, 0.00054568, 7.27112492, 0.99727961, 0.99856414, 0.49306445],
+                             [- 6.27201582, -0.00088993, 0.00054552, 7.27112589, 0.99728039, 0.99856455, 0.49306454],
+                             [- 6.27201653, -0.00088967, 0.00054536, 7.27112685, 0.99728118, 0.99856496, 0.49306460],
+                             [- 6.27201723, -0.00088942, 0.00054520, 7.27112782, 0.99728196, 0.99856538, 0.49306473],
+                             [- 6.27201794, -0.00088916, 0.00054505, 7.27112878, 0.99728274, 0.99856579, 0.49306481],
+                             [- 6.27201865, -0.00088891, 0.00054489, 7.27112974, 0.99728352, 0.99856620, 0.49306490],
+                             [- 6.27201935, -0.00088865, 0.00054473, 7.27113070, 0.99728430, 0.99856661, 0.49306499],
+                             [- 6.27202006, -0.00088840, 0.00054458, 7.27113166, 0.99728508, 0.99856702, 0.49306507],
+                             [- 6.27202076, -0.00088814, 0.00054442, 7.27113262, 0.99728586, 0.99856744, 0.49306519],
+                             [- 6.27202147, -0.00088789, 0.00054427, 7.27113358, 0.99728664, 0.99856785, 0.49306522],
+                             [- 6.27202217, -0.00088763, 0.00054411, 7.27113454, 0.99728742, 0.99856826, 0.49306541],
+                             [- 6.27202287, -0.00088738, 0.00054395, 7.27113549, 0.99728820, 0.99856867, 0.49306548],
+                             [- 6.27202357, -0.00088713, 0.00054380, 7.27113645, 0.99728897, 0.99856908, 0.49306558],
+                             [- 6.27202427, -0.00088687, 0.00054364, 7.27113740, 0.99728975, 0.99856949, 0.49306563],
+                             [- 6.27202497, -0.00088662, 0.00054349, 7.27113836, 0.99729053, 0.99856990, 0.49306575],
+                             [- 6.27202567, -0.00088636, 0.00054333, 7.27113931, 0.99729130, 0.99857031, 0.49306582],
+                             [- 6.27202637, -0.00088611, 0.00054317, 7.27114026, 0.99729208, 0.99857072, 0.49306593],
+                             [- 6.27202707, -0.00088586, 0.00054302, 7.27114121, 0.99729285, 0.99857113, 0.49306602],
+                             [- 6.27202777, -0.00088560, 0.00054286, 7.27114216, 0.99729363, 0.99857153, 0.49306615],
+                             [- 6.27202846, -0.00088535, 0.00054271, 7.27114311, 0.99729440, 0.99857194, 0.49306620],
+                             [- 6.27202916, -0.00088510, 0.00054255, 7.27114406, 0.99729518, 0.99857235, 0.49306631],
+                             [- 6.27202985, -0.00088484, 0.00054240, 7.27114501, 0.99729595, 0.99857276, 0.49306638],
+                             [- 6.27203055, -0.00088459, 0.00054224, 7.27114596, 0.99729673, 0.99857317, 0.49306650],
+                             [- 6.27203124, -0.00088434, 0.00054209, 7.27114690, 0.99729750, 0.99857358, 0.49306661],
+                             [- 6.27203193, -0.00088409, 0.00054193, 7.27114785, 0.99729827, 0.99857398, 0.49306664],
+                             [- 6.27203262, -0.00088383, 0.00054178, 7.27114879, 0.99729904, 0.99857439, 0.49306674],
+                             [- 6.27203332, -0.00088358, 0.00054162, 7.27114973, 0.99729981, 0.99857480, 0.49306687],
+                             [- 6.27203401, -0.00088333, 0.00054147, 7.27115068, 0.99730059, 0.99857520, 0.49306699],
+                             [- 6.27203470, -0.00088308, 0.00054131, 7.27115162, 0.99730136, 0.99857561, 0.49306701],
+                             [- 6.27203539, -0.00088282, 0.00054116, 7.27115256, 0.99730213, 0.99857602, 0.49306713],
+                             [- 6.27203607, -0.00088257, 0.00054100, 7.27115350, 0.99730290, 0.99857642, 0.49306721],
+                             [- 6.27203676, -0.00088232, 0.00054085, 7.27115444, 0.99730366, 0.99857683, 0.49306728],
+                             [- 6.27203745, -0.00088207, 0.00054069, 7.27115538, 0.99730443, 0.99857724, 0.49306742],
+                             [- 6.27203813, -0.00088182, 0.00054054, 7.27115632, 0.99730520, 0.99857764, 0.49306753],
+                             [- 6.27203882, -0.00088157, 0.00054039, 7.27115725, 0.99730597, 0.99857805, 0.49306761],
+                             [- 6.27203950, -0.00088132, 0.00054023, 7.27115819, 0.99730674, 0.99857845, 0.49306769],
+                             [- 6.27204019, -0.00088107, 0.00054008, 7.27115912, 0.99730750, 0.99857886, 0.49306776],
+                             [- 6.27204087, -0.00088082, 0.00053992, 7.27116006, 0.99730827, 0.99857926, 0.49306785],
+                             [- 6.27204156, -0.00088056, 0.00053977, 7.27116099, 0.99730904, 0.99857966, 0.49306801],
+                             [- 6.27204224, -0.00088031, 0.00053962, 7.27116192, 0.99730980, 0.99858007, 0.49306813],
+                             [- 6.27204292, -0.00088006, 0.00053946, 7.27116286, 0.99731057, 0.99858047, 0.49306816],
+                             [- 6.27204360, -0.00087981, 0.00053931, 7.27116379, 0.99731133, 0.99858088, 0.49306827],
+                             [- 6.27204428, -0.00087956, 0.00053916, 7.27116472, 0.99731210, 0.99858128, 0.49306833],
+                             [- 6.27204496, -0.00087931, 0.00053900, 7.27116565, 0.99731286, 0.99858168, 0.49306842],
+                             [- 6.27204564, -0.00087906, 0.00053885, 7.27116657, 0.99731363, 0.99858209, 0.49306852],
+                             [- 6.27204632, -0.00087881, 0.00053870, 7.27116750, 0.99731439, 0.99858249, 0.49306865],
+                             [- 6.27204699, -0.00087857, 0.00053854, 7.27116843, 0.99731515, 0.99858289, 0.49306872],
+                             [- 6.27204767, -0.00087832, 0.00053839, 7.27116935, 0.99731591, 0.99858329, 0.49306875],
+                             [- 6.27204835, -0.00087807, 0.00053824, 7.27117028, 0.99731668, 0.99858369, 0.49306889],
+                             [- 6.27204902, -0.00087782, 0.00053809, 7.27117120, 0.99731744, 0.99858410, 0.49306899],
+                             [- 6.27204970, -0.00087757, 0.00053793, 7.27117213, 0.99731820, 0.99858450, 0.49306909],
+                             [- 6.27205037, -0.00087732, 0.00053778, 7.27117305, 0.99731896, 0.99858490, 0.49306915],
+                             [- 6.27205104, -0.00087707, 0.00053763, 7.27117397, 0.99731972, 0.99858530, 0.49306931],
+                             [- 6.27205172, -0.00087682, 0.00053748, 7.27117489, 0.99732048, 0.99858570, 0.49306931],
+                             [- 6.27205239, -0.00087658, 0.00053732, 7.27117581, 0.99732124, 0.99858610, 0.49306947],
+                             [- 6.27205306, -0.00087633, 0.00053717, 7.27117673, 0.99732200, 0.99858650, 0.49306949],
+                             [- 6.27205373, -0.00087608, 0.00053702, 7.27117765, 0.99732276, 0.99858690, 0.49306961],
+                             [- 6.27205440, -0.00087583, 0.00053687, 7.27117857, 0.99732351, 0.99858730, 0.49306974],
+                             [- 6.27205507, -0.00087558, 0.00053671, 7.27117949, 0.99732427, 0.99858770, 0.49306982],
+                             [- 6.27205574, -0.00087534, 0.00053656, 7.27118040, 0.99732503, 0.99858810, 0.49306986],
+                             [- 6.27205641, -0.00087509, 0.00053641, 7.27118132, 0.99732579, 0.99858850, 0.49306997],
+                             [- 6.27205707, -0.00087484, 0.00053626, 7.27118223, 0.99732654, 0.99858890, 0.49307002],
+                             [- 6.27205774, -0.00087459, 0.00053611, 7.27118315, 0.99732730, 0.99858930, 0.49307020],
+                             [- 6.27205841, -0.00087435, 0.00053596, 7.27118406, 0.99732805, 0.99858970, 0.49307021],
+                             [- 6.27205907, -0.00087410, 0.00053580, 7.27118497, 0.99732881, 0.99859010, 0.49307035],
+                             [- 6.27205974, -0.00087385, 0.00053565, 7.27118588, 0.99732956, 0.99859049, 0.49307047],
+                             [- 6.27206040, -0.00087361, 0.00053550, 7.27118679, 0.99733032, 0.99859089, 0.49307051],
+                             [- 6.27206106, -0.00087336, 0.00053535, 7.27118770, 0.99733107, 0.99859129, 0.49307062],
+                             [- 6.27206173, -0.00087311, 0.00053520, 7.27118861, 0.99733182, 0.99859169, 0.49307069],
+                             [- 6.27206239, -0.00087287, 0.00053505, 7.27118952, 0.99733258, 0.99859208, 0.49307080],
+                             [- 6.27206305, -0.00087262, 0.00053490, 7.27119043, 0.99733333, 0.99859248, 0.49307089],
+                             [- 6.27206371, -0.00087238, 0.00053475, 7.27119134, 0.99733408, 0.99859288, 0.49307096],
+                             [- 6.27206437, -0.00087213, 0.00053460, 7.27119224, 0.99733483, 0.99859327, 0.49307103],
+                             [- 6.27206503, -0.00087188, 0.00053445, 7.27119315, 0.99733558, 0.99859367, 0.49307121],
+                             [- 6.27206569, -0.00087164, 0.00053429, 7.27119405, 0.99733633, 0.99859407, 0.49307121],
+                             [- 6.27206635, -0.00087139, 0.00053414, 7.27119496, 0.99733709, 0.99859446, 0.49307131],
+                             [- 6.27206701, -0.00087115, 0.00053399, 7.27119586, 0.99733783, 0.99859486, 0.49307143],
+                             [- 6.27206767, -0.00087090, 0.00053384, 7.27119676, 0.99733858, 0.99859525, 0.49307152],
+                             [- 6.27206832, -0.00087066, 0.00053369, 7.27119766, 0.99733933, 0.99859565, 0.49307163],
+                             [- 6.27206898, -0.00087041, 0.00053354, 7.27119856, 0.99734008, 0.99859604, 0.49307170],
+                             [- 6.27206963, -0.00087017, 0.00053339, 7.27119946, 0.99734083, 0.99859644, 0.49307178],
+                             [- 6.27207029, -0.00086992, 0.00053324, 7.27120036, 0.99734158, 0.99859683, 0.49307182],
+                             [- 6.27207094, -0.00086968, 0.00053309, 7.27120126, 0.99734233, 0.99859723, 0.49307196],
+                             [- 6.27207160, -0.00086944, 0.00053294, 7.27120216, 0.99734307, 0.99859762, 0.49307197],
+                             [- 6.27207225, -0.00086919, 0.00053279, 7.27120306, 0.99734382, 0.99859802, 0.49307220],
+                             [- 6.27207290, -0.00086895, 0.00053264, 7.27120395, 0.99734457, 0.99859841, 0.49307226],
+                             [- 6.27207355, -0.00086870, 0.00053249, 7.27120485, 0.99734531, 0.99859880, 0.49307233],
+                             [- 6.27207420, -0.00086846, 0.00053234, 7.27120574, 0.99734606, 0.99859920, 0.49307241],
+                             [- 6.27207485, -0.00086822, 0.00053219, 7.27120664, 0.99734680, 0.99859959, 0.49307252],
+                             [- 6.27207550, -0.00086797, 0.00053205, 7.27120753, 0.99734755, 0.99859998, 0.49307258],
+                             [- 6.27207615, -0.00086773, 0.00053190, 7.27120842, 0.99734829, 0.99860037, 0.49307271],
+                             [- 6.27207680, -0.00086749, 0.00053175, 7.27120931, 0.99734903, 0.99860077, 0.49307274],
+                             [- 6.27207745, -0.00086724, 0.00053160, 7.27121021, 0.99734978, 0.99860116, 0.49307287],
+                             [- 6.27207810, -0.00086700, 0.00053145, 7.27121110, 0.99735052, 0.99860155, 0.49307293],
+                             [- 6.27207874, -0.00086676, 0.00053130, 7.27121199, 0.99735126, 0.99860194, 0.49307303],
+                             [- 6.27207939, -0.00086652, 0.00053115, 7.27121287, 0.99735200, 0.99860233, 0.49307313],
+                             [- 6.27208004, -0.00086627, 0.00053100, 7.27121376, 0.99735275, 0.99860273, 0.49307325],
+                             [- 6.27208068, -0.00086603, 0.00053085, 7.27121465, 0.99735349, 0.99860312, 0.49307329],
+                             [- 6.27208132, -0.00086579, 0.00053070, 7.27121554, 0.99735423, 0.99860351, 0.49307333],
+                             [- 6.27208197, -0.00086555, 0.00053056, 7.27121642, 0.99735497, 0.99860390, 0.49307349],
+                             [- 6.27208261, -0.00086530, 0.00053041, 7.27121731, 0.99735571, 0.99860429, 0.49307355],
+                             [- 6.27208325, -0.00086506, 0.00053026, 7.27121819, 0.99735645, 0.99860468, 0.49307366],
+                             [- 6.27208390, -0.00086482, 0.00053011, 7.27121907, 0.99735719, 0.99860507, 0.49307376],
+                             [- 6.27208454, -0.00086458, 0.00052996, 7.27121996, 0.99735792, 0.99860546, 0.49307384],
+                             [- 6.27208518, -0.00086434, 0.00052981, 7.27122084, 0.99735866, 0.99860585, 0.49307389],
+                             [- 6.27208582, -0.00086410, 0.00052967, 7.27122172, 0.99735940, 0.99860624, 0.49307398],
+                             [- 6.27208646, -0.00086386, 0.00052952, 7.27122260, 0.99736014, 0.99860663, 0.49307410],
+                             [- 6.27208710, -0.00086361, 0.00052937, 7.27122348, 0.99736088, 0.99860701, 0.49307418],
+                             [- 6.27208774, -0.00086337, 0.00052922, 7.27122436, 0.99736161, 0.99860740, 0.49307431],
+                             [- 6.27208837, -0.00086313, 0.00052908, 7.27122524, 0.99736235, 0.99860779, 0.49307430],
+                             [- 6.27208901, -0.00086289, 0.00052893, 7.27122612, 0.99736308, 0.99860818, 0.49307450],
+                             [- 6.27208965, -0.00086265, 0.00052878, 7.27122700, 0.99736382, 0.99860857, 0.49307452],
+                             [- 6.27209028, -0.00086241, 0.00052863, 7.27122787, 0.99736455, 0.99860896, 0.49307461],
+                             [- 6.27209092, -0.00086217, 0.00052849, 7.27122875, 0.99736529, 0.99860934, 0.49307473],
+                             [- 6.27209155, -0.00086193, 0.00052834, 7.27122962, 0.99736602, 0.99860973, 0.49307476],
+                             [- 6.27209219, -0.00086169, 0.00052819, 7.27123050, 0.99736676, 0.99861012, 0.49307493],
+                             [- 6.27209282, -0.00086145, 0.00052804, 7.27123137, 0.99736749, 0.99861050, 0.49307491],
+                             [- 6.27209346, -0.00086121, 0.00052790, 7.27123224, 0.99736822, 0.99861089, 0.49307506],
+                             [- 6.27209409, -0.00086097, 0.00052775, 7.27123312, 0.99736896, 0.99861128, 0.49307515],
+                             [- 6.27209472, -0.00086073, 0.00052760, 7.27123399, 0.99736969, 0.99861166, 0.49307527],
+                             [- 6.27209535, -0.00086049, 0.00052746, 7.27123486, 0.99737042, 0.99861205, 0.49307528],
+                             [- 6.27209598, -0.00086025, 0.00052731, 7.27123573, 0.99737115, 0.99861244, 0.49307544],
+                             [- 6.27209661, -0.00086002, 0.00052716, 7.27123660, 0.99737188, 0.99861282, 0.49307551],
+                             [- 6.27209724, -0.00085978, 0.00052702, 7.27123747, 0.99737261, 0.99861321, 0.49307555],
+                             [- 6.27209787, -0.00085954, 0.00052687, 7.27123833, 0.99737334, 0.99861359, 0.49307566],
+                             [- 6.27209850, -0.00085930, 0.00052672, 7.27123920, 0.99737407, 0.99861398, 0.49307570],
+                             [- 6.27209913, -0.00085906, 0.00052658, 7.27124007, 0.99737480, 0.99861436, 0.49307581],
+                             [- 6.27209976, -0.00085882, 0.00052643, 7.27124094, 0.99737553, 0.99861475, 0.49307599],
+                             [- 6.27210038, -0.00085858, 0.00052628, 7.27124180, 0.99737626, 0.99861513, 0.49307598],
+                             [- 6.27210101, -0.00085835, 0.00052614, 7.27124266, 0.99737699, 0.99861551, 0.49307614],
+                             [- 6.27210164, -0.00085811, 0.00052599, 7.27124353, 0.99737771, 0.99861590, 0.49307614],
+                             [- 6.27210226, -0.00085787, 0.00052585, 7.27124439, 0.99737844, 0.99861628, 0.49307625],
+                             [- 6.27210289, -0.00085763, 0.00052570, 7.27124525, 0.99737917, 0.99861667, 0.49307637],
+                             [- 6.27210351, -0.00085740, 0.00052555, 7.27124612, 0.99737989, 0.99861705, 0.49307645],
+                             [- 6.27210414, -0.00085716, 0.00052541, 7.27124698, 0.99738062, 0.99861743, 0.49307653],
+                             [- 6.27210476, -0.00085692, 0.00052526, 7.27124784, 0.99738135, 0.99861782, 0.49307663],
+                             [- 6.27210538, -0.00085668, 0.00052512, 7.27124870, 0.99738207, 0.99861820, 0.49307669],
+                             [- 6.27210600, -0.00085645, 0.00052497, 7.27124956, 0.99738280, 0.99861858, 0.49307677],
+                             [- 6.27210663, -0.00085621, 0.00052483, 7.27125042, 0.99738352, 0.99861896, 0.49307688],
+                             [- 6.27210725, -0.00085597, 0.00052468, 7.27125127, 0.99738424, 0.99861934, 0.49307699],
+                             [- 6.27210787, -0.00085574, 0.00052454, 7.27125213, 0.99738497, 0.99861973, 0.49307706],
+                             [- 6.27210849, -0.00085550, 0.00052439, 7.27125299, 0.99738569, 0.99862011, 0.49307704],
+                             [- 6.27210911, -0.00085526, 0.00052425, 7.27125384, 0.99738641, 0.99862049, 0.49307723],
+                             [- 6.27210973, -0.00085503, 0.00052410, 7.27125470, 0.99738714, 0.99862087, 0.49307731],
+                             [- 6.27211034, -0.00085479, 0.00052396, 7.27125555, 0.99738786, 0.99862125, 0.49307742],
+                             [- 6.27211096, -0.00085456, 0.00052381, 7.27125641, 0.99738858, 0.99862163, 0.49307753],
+                             [- 6.27211158, -0.00085432, 0.00052367, 7.27125726, 0.99738930, 0.99862201, 0.49307753],
+                             [- 6.27211220, -0.00085408, 0.00052352, 7.27125811, 0.99739002, 0.99862239, 0.49307764],
+                             [- 6.27211281, -0.00085385, 0.00052338, 7.27125896, 0.99739074, 0.99862277, 0.49307770],
+                             [- 6.27211343, -0.00085361, 0.00052323, 7.27125981, 0.99739146, 0.99862315, 0.49307780],
+                             [- 6.27211404, -0.00085338, 0.00052309, 7.27126067, 0.99739218, 0.99862353, 0.49307792],
+                             [- 6.27211466, -0.00085314, 0.00052295, 7.27126152, 0.99739290, 0.99862391, 0.49307794],
+                             [- 6.27211527, -0.00085291, 0.00052280, 7.27126236, 0.99739362, 0.99862429, 0.49307803],
+                             [- 6.27211589, -0.00085267, 0.00052266, 7.27126321, 0.99739434, 0.99862467, 0.49307820],
+                             [- 6.27211650, -0.00085244, 0.00052251, 7.27126406, 0.99739506, 0.99862505, 0.49307827],
+                             [- 6.27211711, -0.00085220, 0.00052237, 7.27126491, 0.99739577, 0.99862543, 0.49307830],
+                             [- 6.27211772, -0.00085197, 0.00052222, 7.27126575, 0.99739649, 0.99862581, 0.49307839],
+                             [- 6.27211833, -0.00085173, 0.00052208, 7.27126660, 0.99739721, 0.99862618, 0.49307851],
+                             [- 6.27211895, -0.00085150, 0.00052194, 7.27126745, 0.99739792, 0.99862656, 0.49307861],
+                             [- 6.27211956, -0.00085127, 0.00052179, 7.27126829, 0.99739864, 0.99862694, 0.49307868],
+                             [- 6.27212017, -0.00085103, 0.00052165, 7.27126913, 0.99739936, 0.99862732, 0.49307878],
+                             [- 6.27212078, -0.00085080, 0.00052151, 7.27126998, 0.99740007, 0.99862770, 0.49307884],
+                             [- 6.27212138, -0.00085056, 0.00052136, 7.27127082, 0.99740079, 0.99862807, 0.49307888],
+                             [- 6.27212199, -0.00085033, 0.00052122, 7.27127166, 0.99740150, 0.99862845, 0.49307902],
+                             [- 6.27212260, -0.00085010, 0.00052108, 7.27127250, 0.99740221, 0.99862883, 0.49307911],
+                             [- 6.27212321, -0.00084986, 0.00052093, 7.27127334, 0.99740293, 0.99862920, 0.49307920],
+                             [- 6.27212381, -0.00084963, 0.00052079, 7.27127418, 0.99740364, 0.99862958, 0.49307926],
+                             [- 6.27212442, -0.00084940, 0.00052065, 7.27127502, 0.99740435, 0.99862996, 0.49307935],
+                             [- 6.27212503, -0.00084916, 0.00052050, 7.27127586, 0.99740507, 0.99863033, 0.49307944],
+                             [- 6.27212563, -0.00084893, 0.00052036, 7.27127670, 0.99740578, 0.99863071, 0.49307944],
+                             [- 6.27212624, -0.00084870, 0.00052022, 7.27127754, 0.99740649, 0.99863108, 0.49307954],
+                             [- 6.27212684, -0.00084847, 0.00052008, 7.27127837, 0.99740720, 0.99863146, 0.49307961],
+                             [- 6.27212744, -0.00084823, 0.00051993, 7.27127921, 0.99740791, 0.99863183, 0.49307978],
+                             [- 6.27212805, -0.00084800, 0.00051979, 7.27128005, 0.99740862, 0.99863221, 0.49307983],
+                             [- 6.27212865, -0.00084777, 0.00051965, 7.27128088, 0.99740933, 0.99863258, 0.49307996],
+                             [- 6.27212925, -0.00084754, 0.00051951, 7.27128172, 0.99741004, 0.99863296, 0.49308005],
+                             [- 6.27212986, -0.00084730, 0.00051936, 7.27128255, 0.99741075, 0.99863333, 0.49308014],
+                             [- 6.27213046, -0.00084707, 0.00051922, 7.27128338, 0.99741146, 0.99863371, 0.49308018],
+                             [- 6.27213106, -0.00084684, 0.00051908, 7.27128422, 0.99741217, 0.99863408, 0.49308030],
+                             [- 6.27213166, -0.00084661, 0.00051894, 7.27128505, 0.99741288, 0.99863445, 0.49308040],
+                             [- 6.27213226, -0.00084638, 0.00051879, 7.27128588, 0.99741359, 0.99863483, 0.49308040],
+                             [- 6.27213286, -0.00084615, 0.00051865, 7.27128671, 0.99741429, 0.99863520, 0.49308050],
+                             [- 6.27213345, -0.00084592, 0.00051851, 7.27128754, 0.99741500, 0.99863557, 0.49308061],
+                             [- 6.27213405, -0.00084568, 0.00051837, 7.27128837, 0.99741571, 0.99863595, 0.49308064],
+                             [- 6.27213465, -0.00084545, 0.00051823, 7.27128920, 0.99741641, 0.99863632, 0.49308083],
+                             [- 6.27213525, -0.00084522, 0.00051809, 7.27129003, 0.99741712, 0.99863669, 0.49308089],
+                             [- 6.27213585, -0.00084499, 0.00051794, 7.27129085, 0.99741783, 0.99863706, 0.49308103],
+                             [- 6.27213644, -0.00084476, 0.00051780, 7.27129168, 0.99741853, 0.99863744, 0.49308104],
+                             [- 6.27213704, -0.00084453, 0.00051766, 7.27129251, 0.99741924, 0.99863781, 0.49308114],
+                             [- 6.27213763, -0.00084430, 0.00051752, 7.27129333, 0.99741994, 0.99863818, 0.49308122],
+                             [- 6.27213823, -0.00084407, 0.00051738, 7.27129416, 0.99742064, 0.99863855, 0.49308125],
+                             [- 6.27213882, -0.00084384, 0.00051724, 7.27129498, 0.99742135, 0.99863892, 0.49308128],
+                             [- 6.27213942, -0.00084361, 0.00051710, 7.27129581, 0.99742205, 0.99863929, 0.49308149],
+                             [- 6.27214001, -0.00084338, 0.00051696, 7.27129663, 0.99742275, 0.99863966, 0.49308153],
+                             [- 6.27214060, -0.00084315, 0.00051681, 7.27129745, 0.99742346, 0.99864003, 0.49308160],
+                             [- 6.27214120, -0.00084292, 0.00051667, 7.27129827, 0.99742416, 0.99864041, 0.49308174],
+                             [- 6.27214179, -0.00084269, 0.00051653, 7.27129910, 0.99742486, 0.99864078, 0.49308171],
+                             [- 6.27214238, -0.00084246, 0.00051639, 7.27129992, 0.99742556, 0.99864115, 0.49308189],
+                             [- 6.27214297, -0.00084223, 0.00051625, 7.27130074, 0.99742626, 0.99864152, 0.49308189],
+                             [- 6.27214356, -0.00084200, 0.00051611, 7.27130156, 0.99742696, 0.99864188, 0.49308208],
+                             [- 6.27214415, -0.00084178, 0.00051597, 7.27130237, 0.99742766, 0.99864225, 0.49308218],
+                             [- 6.27214474, -0.00084155, 0.00051583, 7.27130319, 0.99742836, 0.99864262, 0.49308217],
+                             [- 6.27214533, -0.00084132, 0.00051569, 7.27130401, 0.99742906, 0.99864299, 0.49308225],
+                             [- 6.27214592, -0.00084109, 0.00051555, 7.27130483, 0.99742976, 0.99864336, 0.49308239],
+                             [- 6.27214651, -0.00084086, 0.00051541, 7.27130564, 0.99743046, 0.99864373, 0.49308247],
+                             [- 6.27214709, -0.00084063, 0.00051527, 7.27130646, 0.99743116, 0.99864410, 0.49308255],
+                             [- 6.27214768, -0.00084040, 0.00051513, 7.27130728, 0.99743186, 0.99864447, 0.49308258],
+                             [- 6.27214827, -0.00084018, 0.00051499, 7.27130809, 0.99743255, 0.99864483, 0.49308266],
+                             [- 6.27214885, -0.00083995, 0.00051485, 7.27130891, 0.99743325, 0.99864520, 0.49308274],
+                             [- 6.27214944, -0.00083972, 0.00051471, 7.27130972, 0.99743395, 0.99864557, 0.49308290],
+                             [- 6.27215002, -0.00083949, 0.00051457, 7.27131053, 0.99743464, 0.99864594, 0.49308290],
+                             [- 6.27215061, -0.00083926, 0.00051443, 7.27131134, 0.99743534, 0.99864631, 0.49308300],
+                             [- 6.27215119, -0.00083904, 0.00051429, 7.27131216, 0.99743604, 0.99864667, 0.49308315],
+                             [- 6.27215178, -0.00083881, 0.00051415, 7.27131297, 0.99743673, 0.99864704, 0.49308314],
+                             [- 6.27215236, -0.00083858, 0.00051401, 7.27131378, 0.99743743, 0.99864741, 0.49308324],
+                             [- 6.27215294, -0.00083836, 0.00051387, 7.27131459, 0.99743812, 0.99864777, 0.49308338],
+                             [- 6.27215353, -0.00083813, 0.00051373, 7.27131540, 0.99743881, 0.99864814, 0.49308338],
+                             [- 6.27215411, -0.00083790, 0.00051359, 7.27131621, 0.99743951, 0.99864850, 0.49308350],
+                             [- 6.27215469, -0.00083768, 0.00051345, 7.27131702, 0.99744020, 0.99864887, 0.49308357],
+                             [- 6.27215527, -0.00083745, 0.00051332, 7.27131782, 0.99744089, 0.99864924, 0.49308374],
+                             [- 6.27215585, -0.00083722, 0.00051318, 7.27131863, 0.99744159, 0.99864960, 0.49308379],
+                             [- 6.27215643, -0.00083700, 0.00051304, 7.27131944, 0.99744228, 0.99864997, 0.49308384],
+                             [- 6.27215701, -0.00083677, 0.00051290, 7.27132024, 0.99744297, 0.99865033, 0.49308393],
+                             [- 6.27215759, -0.00083654, 0.00051276, 7.27132105, 0.99744366, 0.99865070, 0.49308399],
+                             [- 6.27215817, -0.00083632, 0.00051262, 7.27132185, 0.99744435, 0.99865106, 0.49308412],
+                             [- 6.27215875, -0.00083609, 0.00051248, 7.27132266, 0.99744504, 0.99865143, 0.49308421],
+                             [- 6.27215933, -0.00083587, 0.00051234, 7.27132346, 0.99744574, 0.99865179, 0.49308425],
+                             [- 6.27215990, -0.00083564, 0.00051221, 7.27132426, 0.99744643, 0.99865215, 0.49308434],
+                             [- 6.27216048, -0.00083541, 0.00051207, 7.27132507, 0.99744711, 0.99865252, 0.49308442],
+                             [- 6.27216106, -0.00083519, 0.00051193, 7.27132587, 0.99744780, 0.99865288, 0.49308450],
+                             [- 6.27216164, -0.00083496, 0.00051179, 7.27132667, 0.99744849, 0.99865324, 0.49308461],
+                             [- 6.27216221, -0.00083474, 0.00051165, 7.27132747, 0.99744918, 0.99865361, 0.49308467],
+                             [- 6.27216279, -0.00083451, 0.00051151, 7.27132827, 0.99744987, 0.99865397, 0.49308473],
+                             [- 6.27216336, -0.00083429, 0.00051138, 7.27132907, 0.99745056, 0.99865433, 0.49308483],
+                             [- 6.27216394, -0.00083406, 0.00051124, 7.27132987, 0.99745124, 0.99865470, 0.49308489],
+                             [- 6.27216451, -0.00083384, 0.00051110, 7.27133067, 0.99745193, 0.99865506, 0.49308501],
+                             [- 6.27216508, -0.00083361, 0.00051096, 7.27133147, 0.99745262, 0.99865542, 0.49308509],
+                             [- 6.27216566, -0.00083339, 0.00051083, 7.27133227, 0.99745330, 0.99865578, 0.49308519],
+                             [- 6.27216623, -0.00083317, 0.00051069, 7.27133306, 0.99745399, 0.99865615, 0.49308520],
+                             [- 6.27216680, -0.00083294, 0.00051055, 7.27133386, 0.99745468, 0.99865651, 0.49308532],
+                             [- 6.27216737, -0.00083272, 0.00051041, 7.27133465, 0.99745536, 0.99865687, 0.49308537],
+                             [- 6.27216794, -0.00083249, 0.00051028, 7.27133545, 0.99745605, 0.99865723, 0.49308548],
+                             [- 6.27216851, -0.00083227, 0.00051014, 7.27133624, 0.99745673, 0.99865759, 0.49308555],
+                             [- 6.27216909, -0.00083205, 0.00051000, 7.27133704, 0.99745741, 0.99865795, 0.49308568],
+                             [- 6.27216966, -0.00083182, 0.00050986, 7.27133783, 0.99745810, 0.99865831, 0.49308575],
+                             [- 6.27217022, -0.00083160, 0.00050973, 7.27133863, 0.99745878, 0.99865867, 0.49308580],
+                             [- 6.27217079, -0.00083138, 0.00050959, 7.27133942, 0.99745946, 0.99865903, 0.49308589],
+                             [- 6.27217136, -0.00083115, 0.00050945, 7.27134021, 0.99746015, 0.99865939, 0.49308593],
+                             [- 6.27217193, -0.00083093, 0.00050932, 7.27134100, 0.99746083, 0.99865975, 0.49308603],
+                             [- 6.27217250, -0.00083071, 0.00050918, 7.27134179, 0.99746151, 0.99866011, 0.49308603],
+                             [- 6.27217307, -0.00083048, 0.00050904, 7.27134258, 0.99746219, 0.99866047, 0.49308626],
+                             [- 6.27217363, -0.00083026, 0.00050891, 7.27134337, 0.99746287, 0.99866083, 0.49308628],
+                             [- 6.27217420, -0.00083004, 0.00050877, 7.27134416, 0.99746355, 0.99866119, 0.49308633],
+                             [- 6.27217477, -0.00082982, 0.00050863, 7.27134495, 0.99746424, 0.99866155, 0.49308648],
+                             [- 6.27217533, -0.00082959, 0.00050850, 7.27134574, 0.99746492, 0.99866191, 0.49308650],
+                             [- 6.27217590, -0.00082937, 0.00050836, 7.27134653, 0.99746559, 0.99866227, 0.49308659],
+                             [- 6.27217646, -0.00082915, 0.00050822, 7.27134731, 0.99746627, 0.99866263, 0.49308664],
+                             [- 6.27217703, -0.00082893, 0.00050809, 7.27134810, 0.99746695, 0.99866299, 0.49308674],
+                             [- 6.27217759, -0.00082871, 0.00050795, 7.27134888, 0.99746763, 0.99866334, 0.49308688],
+                             [- 6.27217815, -0.00082848, 0.00050782, 7.27134967, 0.99746831, 0.99866370, 0.49308691],
+                             [- 6.27217872, -0.00082826, 0.00050768, 7.27135045, 0.99746899, 0.99866406, 0.49308700],
+                             [- 6.27217928, -0.00082804, 0.00050754, 7.27135124, 0.99746967, 0.99866442, 0.49308706],
+                             [- 6.27217984, -0.00082782, 0.00050741, 7.27135202, 0.99747034, 0.99866477, 0.49308711],
+                             [- 6.27218040, -0.00082760, 0.00050727, 7.27135281, 0.99747102, 0.99866513, 0.49308731],
+                             [- 6.27218097, -0.00082738, 0.00050714, 7.27135359, 0.99747170, 0.99866549, 0.49308733],
+                             [- 6.27218153, -0.00082716, 0.00050700, 7.27135437, 0.99747237, 0.99866584, 0.49308746],
+                             [- 6.27218209, -0.00082693, 0.00050686, 7.27135515, 0.99747305, 0.99866620, 0.49308753],
+                             [- 6.27218265, -0.00082671, 0.00050673, 7.27135593, 0.99747372, 0.99866656, 0.49308759],
+                             [- 6.27218321, -0.00082649, 0.00050659, 7.27135671, 0.99747440, 0.99866691, 0.49308757],
+                             [- 6.27218377, -0.00082627, 0.00050646, 7.27135749, 0.99747507, 0.99866727, 0.49308770],
+                             [- 6.27218433, -0.00082605, 0.00050632, 7.27135827, 0.99747575, 0.99866763, 0.49308772],
+                             [- 6.27218488, -0.00082583, 0.00050619, 7.27135905, 0.99747642, 0.99866798, 0.49308784],
+                             [- 6.27218544, -0.00082561, 0.00050605, 7.27135983, 0.99747709, 0.99866834, 0.49308794],
+                             [- 6.27218600, -0.00082539, 0.00050592, 7.27136061, 0.99747777, 0.99866869, 0.49308810],
+                             [- 6.27218656, -0.00082517, 0.00050578, 7.27136139, 0.99747844, 0.99866905, 0.49308812],
+                             [- 6.27218711, -0.00082495, 0.00050565, 7.27136216, 0.99747911, 0.99866940, 0.49308821],
+                             [- 6.27218767, -0.00082473, 0.00050551, 7.27136294, 0.99747978, 0.99866976, 0.49308825],
+                             [- 6.27218823, -0.00082451, 0.00050538, 7.27136371, 0.99748046, 0.99867011, 0.49308833],
+                             [- 6.27218878, -0.00082429, 0.00050524, 7.27136449, 0.99748113, 0.99867046, 0.49308847],
+                             [- 6.27218934, -0.00082407, 0.00050511, 7.27136526, 0.99748180, 0.99867082, 0.49308860],
+                             [- 6.27218989, -0.00082385, 0.00050497, 7.27136604, 0.99748247, 0.99867117, 0.49308859],
+                             [- 6.27219045, -0.00082363, 0.00050484, 7.27136681, 0.99748314, 0.99867153, 0.49308869],
+                             [- 6.27219100, -0.00082341, 0.00050471, 7.27136759, 0.99748381, 0.99867188, 0.49308873],
+                             [- 6.27219155, -0.00082320, 0.00050457, 7.27136836, 0.99748448, 0.99867223, 0.49308878],
+                             [- 6.27219211, -0.00082298, 0.00050444, 7.27136913, 0.99748515, 0.99867259, 0.49308888],
+                             [- 6.27219266, -0.00082276, 0.00050430, 7.27136990, 0.99748582, 0.99867294, 0.49308897],
+                             [- 6.27219321, -0.00082254, 0.00050417, 7.27137067, 0.99748649, 0.99867329, 0.49308901],
+                             [- 6.27219376, -0.00082232, 0.00050403, 7.27137144, 0.99748715, 0.99867364, 0.49308913],
+                             [- 6.27219432, -0.00082210, 0.00050390, 7.27137221, 0.99748782, 0.99867400, 0.49308916],
+                             [- 6.27219487, -0.00082188, 0.00050377, 7.27137298, 0.99748849, 0.99867435, 0.49308935],
+                             [- 6.27219542, -0.00082167, 0.00050363, 7.27137375, 0.99748916, 0.99867470, 0.49308938],
+                             [- 6.27219597, -0.00082145, 0.00050350, 7.27137452, 0.99748982, 0.99867505, 0.49308944],
+                             [- 6.27219652, -0.00082123, 0.00050337, 7.27137529, 0.99749049, 0.99867540, 0.49308959],
+                             [- 6.27219707, -0.00082101, 0.00050323, 7.27137606, 0.99749116, 0.99867576, 0.49308961],
+                             [- 6.27219762, -0.00082080, 0.00050310, 7.27137682, 0.99749182, 0.99867611, 0.49308966],
+                             [- 6.27219817, -0.00082058, 0.00050296, 7.27137759, 0.99749249, 0.99867646, 0.49308979],
+                             [- 6.27219872, -0.00082036, 0.00050283, 7.27137836, 0.99749315, 0.99867681, 0.49308985],
+                             [- 6.27219926, -0.00082014, 0.00050270, 7.27137912, 0.99749382, 0.99867716, 0.49308989],
+                             [- 6.27219981, -0.00081993, 0.00050256, 7.27137989, 0.99749448, 0.99867751, 0.49309002],
+                             [- 6.27220036, -0.00081971, 0.00050243, 7.27138065, 0.99749514, 0.99867786, 0.49309006],
+                             [- 6.27220091, -0.00081949, 0.00050230, 7.27138141, 0.99749581, 0.99867821, 0.49309016],
+                             [- 6.27220145, -0.00081927, 0.00050216, 7.27138218, 0.99749647, 0.99867856, 0.49309022],
+                             [- 6.27220200, -0.00081906, 0.00050203, 7.27138294, 0.99749713, 0.99867891, 0.49309028],
+                             [- 6.27220254, -0.00081884, 0.00050190, 7.27138370, 0.99749780, 0.99867926, 0.49309037],
+                             [- 6.27220309, -0.00081862, 0.00050177, 7.27138446, 0.99749846, 0.99867961, 0.49309053],
+                             [- 6.27220363, -0.00081841, 0.00050163, 7.27138523, 0.99749912, 0.99867996, 0.49309055],
+                             [- 6.27220418, -0.00081819, 0.00050150, 7.27138599, 0.99749978, 0.99868031, 0.49309069],
+                             [- 6.27220472, -0.00081798, 0.00050137, 7.27138675, 0.99750044, 0.99868066, 0.49309070],
+                             [- 6.27220527, -0.00081776, 0.00050124, 7.27138751, 0.99750110, 0.99868100, 0.49309083],
+                             [- 6.27220581, -0.00081754, 0.00050110, 7.27138827, 0.99750176, 0.99868135, 0.49309090],
+                             [- 6.27220635, -0.00081733, 0.00050097, 7.27138902, 0.99750242, 0.99868170, 0.49309098],
+                             [- 6.27220690, -0.00081711, 0.00050084, 7.27138978, 0.99750308, 0.99868205, 0.49309101],
+                             [- 6.27220744, -0.00081690, 0.00050071, 7.27139054, 0.99750374, 0.99868240, 0.49309113],
+                             [- 6.27220798, -0.00081668, 0.00050057, 7.27139130, 0.99750440, 0.99868275, 0.49309116],
+                             [- 6.27220852, -0.00081647, 0.00050044, 7.27139205, 0.99750506, 0.99868309, 0.49309123],
+                             [- 6.27220906, -0.00081625, 0.00050031, 7.27139281, 0.99750572, 0.99868344, 0.49309142],
+                             [- 6.27220960, -0.00081604, 0.00050018, 7.27139357, 0.99750638, 0.99868379, 0.49309142],
+                             [- 6.27221014, -0.00081582, 0.00050005, 7.27139432, 0.99750703, 0.99868413, 0.49309146],
+                             [- 6.27221068, -0.00081561, 0.00049991, 7.27139508, 0.99750769, 0.99868448, 0.49309158],
+                             [- 6.27221122, -0.00081539, 0.00049978, 7.27139583, 0.99750835, 0.99868483, 0.49309166],
+                             [- 6.27221176, -0.00081518, 0.00049965, 7.27139659, 0.99750901, 0.99868517, 0.49309171],
+                             [- 6.27221230, -0.00081496, 0.00049952, 7.27139734, 0.99750966, 0.99868552, 0.49309183],
+                             [- 6.27221284, -0.00081475, 0.00049939, 7.27139809, 0.99751032, 0.99868587, 0.49309186],
+                             [- 6.27221338, -0.00081453, 0.00049926, 7.27139884, 0.99751097, 0.99868621, 0.49309196],
+                             [- 6.27221391, -0.00081432, 0.00049912, 7.27139960, 0.99751163, 0.99868656, 0.49309197],
+                             [- 6.27221445, -0.00081410, 0.00049899, 7.27140035, 0.99751228, 0.99868690, 0.49309212],
+                             [- 6.27221499, -0.00081389, 0.00049886, 7.27140110, 0.99751294, 0.99868725, 0.49309226],
+                             [- 6.27221552, -0.00081368, 0.00049873, 7.27140185, 0.99751359, 0.99868759, 0.49309233],
+                             [- 6.27221606, -0.00081346, 0.00049860, 7.27140260, 0.99751425, 0.99868794, 0.49309240],
+                             [- 6.27221660, -0.00081325, 0.00049847, 7.27140335, 0.99751490, 0.99868828, 0.49309241],
+                             [- 6.27221713, -0.00081303, 0.00049834, 7.27140410, 0.99751555, 0.99868863, 0.49309250],
+                             [- 6.27221767, -0.00081282, 0.00049821, 7.27140485, 0.99751621, 0.99868897, 0.49309252],
+                             [- 6.27221820, -0.00081261, 0.00049807, 7.27140559, 0.99751686, 0.99868932, 0.49309262],
+                             [- 6.27221874, -0.00081239, 0.00049794, 7.27140634, 0.99751751, 0.99868966, 0.49309274],
+                             [- 6.27221927, -0.00081218, 0.00049781, 7.27140709, 0.99751816, 0.99869001, 0.49309277],
+                             [- 6.27221980, -0.00081197, 0.00049768, 7.27140784, 0.99751881, 0.99869035, 0.49309287],
+                             [- 6.27222034, -0.00081176, 0.00049755, 7.27140858, 0.99751946, 0.99869069, 0.49309295],
+                             [- 6.27222087, -0.00081154, 0.00049742, 7.27140933, 0.99752012, 0.99869104, 0.49309305],
+                             [- 6.27222140, -0.00081133, 0.00049729, 7.27141007, 0.99752077, 0.99869138, 0.49309311],
+                             [- 6.27222193, -0.00081112, 0.00049716, 7.27141082, 0.99752142, 0.99869172, 0.49309317],
+                             [- 6.27222247, -0.00081090, 0.00049703, 7.27141156, 0.99752207, 0.99869207, 0.49309328],
+                             [- 6.27222300, -0.00081069, 0.00049690, 7.27141230, 0.99752271, 0.99869241, 0.49309332],
+                             [- 6.27222353, -0.00081048, 0.00049677, 7.27141305, 0.99752336, 0.99869275, 0.49309344],
+                             [- 6.27222406, -0.00081027, 0.00049664, 7.27141379, 0.99752401, 0.99869309, 0.49309341],
+                             [- 6.27222459, -0.00081006, 0.00049651, 7.27141453, 0.99752466, 0.99869344, 0.49309354],
+                             [- 6.27222512, -0.00080984, 0.00049638, 7.27141527, 0.99752531, 0.99869378, 0.49309361],
+                             [- 6.27222565, -0.00080963, 0.00049625, 7.27141602, 0.99752596, 0.99869412, 0.49309375],
+                             [- 6.27222618, -0.00080942, 0.00049612, 7.27141676, 0.99752660, 0.99869446, 0.49309380],
+                             [- 6.27222671, -0.00080921, 0.00049599, 7.27141750, 0.99752725, 0.99869480, 0.49309382],
+                             [- 6.27222723, -0.00080900, 0.00049586, 7.27141824, 0.99752790, 0.99869514, 0.49309395],
+                             [- 6.27222776, -0.00080879, 0.00049573, 7.27141898, 0.99752854, 0.99869548, 0.49309403],
+                             [- 6.27222829, -0.00080857, 0.00049560, 7.27141972, 0.99752919, 0.99869582, 0.49309409],
+                             [- 6.27222882, -0.00080836, 0.00049547, 7.27142045, 0.99752984, 0.99869617, 0.49309410],
+                             [- 6.27222934, -0.00080815, 0.00049534, 7.27142119, 0.99753048, 0.99869651, 0.49309425],
+                             [- 6.27222987, -0.00080794, 0.00049521, 7.27142193, 0.99753113, 0.99869685, 0.49309434],
+                             [- 6.27223040, -0.00080773, 0.00049508, 7.27142267, 0.99753177, 0.99869719, 0.49309443],
+                             [- 6.27223092, -0.00080752, 0.00049495, 7.27142340, 0.99753241, 0.99869753, 0.49309447],
+                             [- 6.27223145, -0.00080731, 0.00049482, 7.27142414, 0.99753306, 0.99869787, 0.49309457],
+                             [- 6.27223197, -0.00080710, 0.00049469, 7.27142488, 0.99753370, 0.99869821, 0.49309459],
+                             [- 6.27223250, -0.00080689, 0.00049457, 7.27142561, 0.99753435, 0.99869855, 0.49309463],
+                             [- 6.27223302, -0.00080668, 0.00049444, 7.27142635, 0.99753499, 0.99869888, 0.49309473],
+                             [- 6.27223355, -0.00080647, 0.00049431, 7.27142708, 0.99753563, 0.99869922, 0.49309486],
+                             [- 6.27223407, -0.00080626, 0.00049418, 7.27142781, 0.99753627, 0.99869956, 0.49309496],
+                             [- 6.27223460, -0.00080605, 0.00049405, 7.27142855, 0.99753692, 0.99869990, 0.49309501],
+                             [- 6.27223512, -0.00080584, 0.00049392, 7.27142928, 0.99753756, 0.99870024, 0.49309506],
+                             [- 6.27223564, -0.00080563, 0.00049379, 7.27143001, 0.99753820, 0.99870058, 0.49309510],
+                             [- 6.27223616, -0.00080542, 0.00049366, 7.27143074, 0.99753884, 0.99870092, 0.49309524],
+                             [- 6.27223669, -0.00080521, 0.00049354, 7.27143148, 0.99753948, 0.99870125, 0.49309538],
+                             [- 6.27223721, -0.00080500, 0.00049341, 7.27143221, 0.99754012, 0.99870159, 0.49309541],
+                             [- 6.27223773, -0.00080479, 0.00049328, 7.27143294, 0.99754076, 0.99870193, 0.49309547],
+                             [- 6.27223825, -0.00080458, 0.00049315, 7.27143367, 0.99754140, 0.99870227, 0.49309552],
+                             [- 6.27223877, -0.00080437, 0.00049302, 7.27143440, 0.99754204, 0.99870260, 0.49309562],
+                             [- 6.27223929, -0.00080416, 0.00049289, 7.27143513, 0.99754268, 0.99870294, 0.49309564],
+                             [- 6.27223981, -0.00080395, 0.00049277, 7.27143586, 0.99754332, 0.99870328, 0.49309575],
+                             [- 6.27224033, -0.00080375, 0.00049264, 7.27143658, 0.99754395, 0.99870362, 0.49309585],
+                             [- 6.27224085, -0.00080354, 0.00049251, 7.27143731, 0.99754459, 0.99870395, 0.49309591],
+                             [- 6.27224137, -0.00080333, 0.00049238, 7.27143804, 0.99754523, 0.99870429, 0.49309595],
+                             [- 6.27224189, -0.00080312, 0.00049225, 7.27143877, 0.99754587, 0.99870463, 0.49309610],
+                             [- 6.27224241, -0.00080291, 0.00049213, 7.27143949, 0.99754650, 0.99870496, 0.49309609],
+                             [- 6.27224292, -0.00080270, 0.00049200, 7.27144022, 0.99754714, 0.99870530, 0.49309625],
+                             [- 6.27224344, -0.00080250, 0.00049187, 7.27144094, 0.99754778, 0.99870563, 0.49309625],
+                             [- 6.27224396, -0.00080229, 0.00049174, 7.27144167, 0.99754841, 0.99870597, 0.49309632],
+                             [- 6.27224447, -0.00080208, 0.00049162, 7.27144239, 0.99754905, 0.99870630, 0.49309639],
+                             [- 6.27224499, -0.00080187, 0.00049149, 7.27144312, 0.99754968, 0.99870664, 0.49309648],
+                             [- 6.27224551, -0.00080166, 0.00049136, 7.27144384, 0.99755032, 0.99870697, 0.49309655],
+                             [- 6.27224602, -0.00080146, 0.00049123, 7.27144457, 0.99755095, 0.99870731, 0.49309667],
+                             [- 6.27224654, -0.00080125, 0.00049111, 7.27144529, 0.99755159, 0.99870764, 0.49309666],
+                             [- 6.27224705, -0.00080104, 0.00049098, 7.27144601, 0.99755222, 0.99870798, 0.49309679],
+                             [- 6.27224757, -0.00080084, 0.00049085, 7.27144673, 0.99755286, 0.99870831, 0.49309687],
+                             [- 6.27224808, -0.00080063, 0.00049072, 7.27144746, 0.99755349, 0.99870865, 0.49309695],
+                             [- 6.27224860, -0.00080042, 0.00049060, 7.27144818, 0.99755412, 0.99870898, 0.49309704],
+                             [- 6.27224911, -0.00080021, 0.00049047, 7.27144890, 0.99755476, 0.99870932, 0.49309706],
+                             [- 6.27224962, -0.00080001, 0.00049034, 7.27144962, 0.99755539, 0.99870965, 0.49309713],
+                             [- 6.27225014, -0.00079980, 0.00049022, 7.27145034, 0.99755602, 0.99870998, 0.49309722],
+                             [- 6.27225065, -0.00079959, 0.00049009, 7.27145106, 0.99755665, 0.99871032, 0.49309728],
+                             [- 6.27225116, -0.00079939, 0.00048996, 7.27145178, 0.99755728, 0.99871065, 0.49309738],
+                             [- 6.27225168, -0.00079918, 0.00048984, 7.27145249, 0.99755791, 0.99871098, 0.49309747],
+                             [- 6.27225219, -0.00079897, 0.00048971, 7.27145321, 0.99755854, 0.99871131, 0.49309753],
+                             [- 6.27225270, -0.00079877, 0.00048958, 7.27145393, 0.99755918, 0.99871165, 0.49309771],
+                             [- 6.27225321, -0.00079856, 0.00048946, 7.27145465, 0.99755981, 0.99871198, 0.49309765],
+                             [- 6.27225372, -0.00079836, 0.00048933, 7.27145536, 0.99756044, 0.99871231, 0.49309782],
+                             [- 6.27225423, -0.00079815, 0.00048921, 7.27145608, 0.99756106, 0.99871264, 0.49309784],
+                             [- 6.27225474, -0.00079795, 0.00048908, 7.27145680, 0.99756169, 0.99871298, 0.49309793],
+                             [- 6.27225525, -0.00079774, 0.00048895, 7.27145751, 0.99756232, 0.99871331, 0.49309799],
+                             [- 6.27225576, -0.00079753, 0.00048883, 7.27145823, 0.99756295, 0.99871364, 0.49309812],
+                             [- 6.27225627, -0.00079733, 0.00048870, 7.27145894, 0.99756358, 0.99871397, 0.49309805],
+                             [- 6.27225678, -0.00079712, 0.00048857, 7.27145966, 0.99756421, 0.99871430, 0.49309821],
+                             [- 6.27225729, -0.00079692, 0.00048845, 7.27146037, 0.99756483, 0.99871463, 0.49309831],
+                             [- 6.27225780, -0.00079671, 0.00048832, 7.27146108, 0.99756546, 0.99871496, 0.49309836],
+                             [- 6.27225830, -0.00079651, 0.00048820, 7.27146180, 0.99756609, 0.99871529, 0.49309842],
+                             [- 6.27225881, -0.00079630, 0.00048807, 7.27146251, 0.99756671, 0.99871563, 0.49309856],
+                             [- 6.27225932, -0.00079610, 0.00048795, 7.27146322, 0.99756734, 0.99871596, 0.49309861],
+                             [- 6.27225983, -0.00079589, 0.00048782, 7.27146393, 0.99756797, 0.99871629, 0.49309861],
+                             [- 6.27226033, -0.00079569, 0.00048769, 7.27146464, 0.99756859, 0.99871662, 0.49309873],
+                             [- 6.27226084, -0.00079548, 0.00048757, 7.27146535, 0.99756922, 0.99871695, 0.49309877],
+                             [- 6.27226134, -0.00079528, 0.00048744, 7.27146606, 0.99756984, 0.99871728, 0.49309886],
+                             [- 6.27226185, -0.00079508, 0.00048732, 7.27146677, 0.99757047, 0.99871761, 0.49309893],
+                             [- 6.27226235, -0.00079487, 0.00048719, 7.27146748, 0.99757109, 0.99871793, 0.49309902],
+                             [- 6.27226286, -0.00079467, 0.00048707, 7.27146819, 0.99757172, 0.99871826, 0.49309912],
+                             [- 6.27226336, -0.00079446, 0.00048694, 7.27146890, 0.99757234, 0.99871859, 0.49309921],
+                             [- 6.27226387, -0.00079426, 0.00048682, 7.27146961, 0.99757296, 0.99871892, 0.49309921],
+                             [- 6.27226437, -0.00079406, 0.00048669, 7.27147032, 0.99757359, 0.99871925, 0.49309928],
+                             [- 6.27226488, -0.00079385, 0.00048657, 7.27147102, 0.99757421, 0.99871958, 0.49309939],
+                             [- 6.27226538, -0.00079365, 0.00048644, 7.27147173, 0.99757483, 0.99871991, 0.49309945],
+                             [- 6.27226588, -0.00079345, 0.00048632, 7.27147244, 0.99757545, 0.99872024, 0.49309958],
+                             [- 6.27226639, -0.00079324, 0.00048619, 7.27147314, 0.99757607, 0.99872056, 0.49309958],
+                             [- 6.27226689, -0.00079304, 0.00048607, 7.27147385, 0.99757670, 0.99872089, 0.49309961],
+                             [- 6.27226739, -0.00079284, 0.00048594, 7.27147455, 0.99757732, 0.99872122, 0.49309967],
+                             [- 6.27226789, -0.00079263, 0.00048582, 7.27147526, 0.99757794, 0.99872155, 0.49309986],
+                             [- 6.27226839, -0.00079243, 0.00048570, 7.27147596, 0.99757856, 0.99872187, 0.49309996],
+                             [- 6.27226889, -0.00079223, 0.00048557, 7.27147667, 0.99757918, 0.99872220, 0.49309999],
+                             [- 6.27226939, -0.00079202, 0.00048545, 7.27147737, 0.99757980, 0.99872253, 0.49310010],
+                             [- 6.27226990, -0.00079182, 0.00048532, 7.27147807, 0.99758042, 0.99872286, 0.49310015],
+                             [- 6.27227040, -0.00079162, 0.00048520, 7.27147878, 0.99758104, 0.99872318, 0.49310022],
+                             [- 6.27227090, -0.00079142, 0.00048507, 7.27147948, 0.99758166, 0.99872351, 0.49310023],
+                             [- 6.27227139, -0.00079121, 0.00048495, 7.27148018, 0.99758227, 0.99872384, 0.49310029],
+                             [- 6.27227189, -0.00079101, 0.00048483, 7.27148088, 0.99758289, 0.99872416, 0.49310038],
+                             [- 6.27227239, -0.00079081, 0.00048470, 7.27148158, 0.99758351, 0.99872449, 0.49310046],
+                             [- 6.27227289, -0.00079061, 0.00048458, 7.27148228, 0.99758413, 0.99872481, 0.49310052],
+                             [- 6.27227339, -0.00079041, 0.00048445, 7.27148298, 0.99758474, 0.99872514, 0.49310058],
+                             [- 6.27227389, -0.00079020, 0.00048433, 7.27148368, 0.99758536, 0.99872546, 0.49310064],
+                             [- 6.27227439, -0.00079000, 0.00048421, 7.27148438, 0.99758598, 0.99872579, 0.49310077],
+                             [- 6.27227488, -0.00078980, 0.00048408, 7.27148508, 0.99758659, 0.99872612, 0.49310085],
+                             [- 6.27227538, -0.00078960, 0.00048396, 7.27148578, 0.99758721, 0.99872644, 0.49310092],
+                             [- 6.27227588, -0.00078940, 0.00048384, 7.27148648, 0.99758783, 0.99872677, 0.49310100],
+                             [- 6.27227637, -0.00078920, 0.00048371, 7.27148717, 0.99758844, 0.99872709, 0.49310112],
+                             [- 6.27227687, -0.00078900, 0.00048359, 7.27148787, 0.99758906, 0.99872741, 0.49310113],
+                             [- 6.27227736, -0.00078880, 0.00048347, 7.27148857, 0.99758967, 0.99872774, 0.49310122],
+                             [- 6.27227786, -0.00078859, 0.00048334, 7.27148927, 0.99759029, 0.99872806, 0.49310127],
+                             [- 6.27227836, -0.00078839, 0.00048322, 7.27148996, 0.99759090, 0.99872839, 0.49310130],
+                             [- 6.27227885, -0.00078819, 0.00048310, 7.27149066, 0.99759151, 0.99872871, 0.49310141],
+                             [- 6.27227934, -0.00078799, 0.00048297, 7.27149135, 0.99759213, 0.99872903, 0.49310152],
+                             [- 6.27227984, -0.00078779, 0.00048285, 7.27149205, 0.99759274, 0.99872936, 0.49310152],
+                             [- 6.27228033, -0.00078759, 0.00048273, 7.27149274, 0.99759335, 0.99872968, 0.49310163],
+                             [- 6.27228083, -0.00078739, 0.00048260, 7.27149344, 0.99759397, 0.99873001, 0.49310168],
+                             [- 6.27228132, -0.00078719, 0.00048248, 7.27149413, 0.99759458, 0.99873033, 0.49310178],
+                             [- 6.27228181, -0.00078699, 0.00048236, 7.27149482, 0.99759519, 0.99873065, 0.49310189],
+                             [- 6.27228231, -0.00078679, 0.00048224, 7.27149552, 0.99759580, 0.99873097, 0.49310191],
+                             [- 6.27228280, -0.00078659, 0.00048211, 7.27149621, 0.99759641, 0.99873130, 0.49310203],
+                             [- 6.27228329, -0.00078639, 0.00048199, 7.27149690, 0.99759702, 0.99873162, 0.49310202],
+                             [- 6.27228378, -0.00078619, 0.00048187, 7.27149759, 0.99759763, 0.99873194, 0.49310216],
+                             [- 6.27228427, -0.00078599, 0.00048175, 7.27149828, 0.99759825, 0.99873226, 0.49310220],
+                             [- 6.27228476, -0.00078579, 0.00048162, 7.27149897, 0.99759886, 0.99873259, 0.49310228],
+                             [- 6.27228526, -0.00078559, 0.00048150, 7.27149966, 0.99759946, 0.99873291, 0.49310231],
+                             [- 6.27228575, -0.00078539, 0.00048138, 7.27150035, 0.99760007, 0.99873323, 0.49310245],
+                             [- 6.27228624, -0.00078519, 0.00048126, 7.27150104, 0.99760068, 0.99873355, 0.49310250],
+                             [- 6.27228673, -0.00078500, 0.00048113, 7.27150173, 0.99760129, 0.99873387, 0.49310256],
+                             [- 6.27228722, -0.00078480, 0.00048101, 7.27150242, 0.99760190, 0.99873419, 0.49310269],
+                             [- 6.27228771, -0.00078460, 0.00048089, 7.27150311, 0.99760251, 0.99873451, 0.49310278],
+                             [- 6.27228819, -0.00078440, 0.00048077, 7.27150380, 0.99760312, 0.99873483, 0.49310277],
+                             [- 6.27228868, -0.00078420, 0.00048065, 7.27150448, 0.99760372, 0.99873515, 0.49310291],
+                             [- 6.27228917, -0.00078400, 0.00048052, 7.27150517, 0.99760433, 0.99873548, 0.49310291],
+                             [- 6.27228966, -0.00078380, 0.00048040, 7.27150586, 0.99760494, 0.99873580, 0.49310301],
+                             [- 6.27229015, -0.00078360, 0.00048028, 7.27150654, 0.99760555, 0.99873612, 0.49310307],
+                             [- 6.27229064, -0.00078341, 0.00048016, 7.27150723, 0.99760615, 0.99873644, 0.49310321],
+                             [- 6.27229112, -0.00078321, 0.00048004, 7.27150792, 0.99760676, 0.99873676, 0.49310322],
+                             [- 6.27229161, -0.00078301, 0.00047992, 7.27150860, 0.99760736, 0.99873707, 0.49310330],
+                             [- 6.27229210, -0.00078281, 0.00047979, 7.27150929, 0.99760797, 0.99873739, 0.49310330],
+                             [- 6.27229258, -0.00078261, 0.00047967, 7.27150997, 0.99760857, 0.99873771, 0.49310340],
+                             [- 6.27229307, -0.00078242, 0.00047955, 7.27151065, 0.99760918, 0.99873803, 0.49310344],
+                             [- 6.27229356, -0.00078222, 0.00047943, 7.27151134, 0.99760978, 0.99873835, 0.49310362],
+                             [- 6.27229404, -0.00078202, 0.00047931, 7.27151202, 0.99761039, 0.99873867, 0.49310362],
+                             [- 6.27229453, -0.00078182, 0.00047919, 7.27151270, 0.99761099, 0.99873899, 0.49310369],
+                             [- 6.27229501, -0.00078163, 0.00047907, 7.27151339, 0.99761160, 0.99873931, 0.49310382],
+                             [- 6.27229550, -0.00078143, 0.00047895, 7.27151407, 0.99761220, 0.99873963, 0.49310378],
+                             [- 6.27229598, -0.00078123, 0.00047882, 7.27151475, 0.99761280, 0.99873994, 0.49310395],
+                             [- 6.27229646, -0.00078103, 0.00047870, 7.27151543, 0.99761340, 0.99874026, 0.49310398],
+                             [- 6.27229695, -0.00078084, 0.00047858, 7.27151611, 0.99761401, 0.99874058, 0.49310409],
+                             [- 6.27229743, -0.00078064, 0.00047846, 7.27151679, 0.99761461, 0.99874090, 0.49310410],
+                             [- 6.27229791, -0.00078044, 0.00047834, 7.27151747, 0.99761521, 0.99874122, 0.49310419],
+                             [- 6.27229840, -0.00078025, 0.00047822, 7.27151815, 0.99761581, 0.99874153, 0.49310426],
+                             [- 6.27229888, -0.00078005, 0.00047810, 7.27151883, 0.99761641, 0.99874185, 0.49310431],
+                             [- 6.27229936, -0.00077985, 0.00047798, 7.27151951, 0.99761701, 0.99874217, 0.49310439],
+                             [- 6.27229984, -0.00077966, 0.00047786, 7.27152019, 0.99761762, 0.99874248, 0.49310456],
+                             [- 6.27230033, -0.00077946, 0.00047774, 7.27152087, 0.99761822, 0.99874280, 0.49310453],
+                             [- 6.27230081, -0.00077926, 0.00047762, 7.27152154, 0.99761882, 0.99874312, 0.49310456],
+                             [- 6.27230129, -0.00077907, 0.00047750, 7.27152222, 0.99761942, 0.99874343, 0.49310472],
+                             [- 6.27230177, -0.00077887, 0.00047738, 7.27152290, 0.99762001, 0.99874375, 0.49310478],
+                             [- 6.27230225, -0.00077868, 0.00047726, 7.27152357, 0.99762061, 0.99874407, 0.49310482],
+                             [- 6.27230273, -0.00077848, 0.00047714, 7.27152425, 0.99762121, 0.99874438, 0.49310485],
+                             [- 6.27230321, -0.00077828, 0.00047702, 7.27152493, 0.99762181, 0.99874470, 0.49310496],
+                             [- 6.27230369, -0.00077809, 0.00047690, 7.27152560, 0.99762241, 0.99874501, 0.49310508],
+                             [- 6.27230417, -0.00077789, 0.00047678, 7.27152628, 0.99762301, 0.99874533, 0.49310514],
+                             [- 6.27230465, -0.00077770, 0.00047666, 7.27152695, 0.99762360, 0.99874564, 0.49310512],
+                             [- 6.27230513, -0.00077750, 0.00047654, 7.27152763, 0.99762420, 0.99874596, 0.49310522],
+                             [- 6.27230561, -0.00077731, 0.00047642, 7.27152830, 0.99762480, 0.99874627, 0.49310530],
+                             [- 6.27230609, -0.00077711, 0.00047630, 7.27152897, 0.99762540, 0.99874659, 0.49310543],
+                             [- 6.27230656, -0.00077692, 0.00047618, 7.27152965, 0.99762599, 0.99874690, 0.49310543],
+                             [- 6.27230704, -0.00077672, 0.00047606, 7.27153032, 0.99762659, 0.99874722, 0.49310556],
+                             [- 6.27230752, -0.00077653, 0.00047594, 7.27153099, 0.99762718, 0.99874753, 0.49310555],
+                             [- 6.27230800, -0.00077633, 0.00047582, 7.27153166, 0.99762778, 0.99874785, 0.49310570],
+                             [- 6.27230847, -0.00077614, 0.00047570, 7.27153233, 0.99762837, 0.99874816, 0.49310570],
+                             [- 6.27230895, -0.00077594, 0.00047558, 7.27153301, 0.99762897, 0.99874848, 0.49310582],
+                             [- 6.27230943, -0.00077575, 0.00047546, 7.27153368, 0.99762956, 0.99874879, 0.49310585],
+                             [- 6.27230990, -0.00077556, 0.00047534, 7.27153435, 0.99763016, 0.99874910, 0.49310599],
+                             [- 6.27231038, -0.00077536, 0.00047522, 7.27153502, 0.99763075, 0.99874942, 0.49310605],
+                             [- 6.27231085, -0.00077517, 0.00047510, 7.27153569, 0.99763135, 0.99874973, 0.49310608],
+                             [- 6.27231133, -0.00077497, 0.00047498, 7.27153636, 0.99763194, 0.99875004, 0.49310612],
+                             [- 6.27231180, -0.00077478, 0.00047487, 7.27153702, 0.99763253, 0.99875036, 0.49310624],
+                             [- 6.27231228, -0.00077458, 0.00047475, 7.27153769, 0.99763312, 0.99875067, 0.49310622],
+                             [- 6.27231275, -0.00077439, 0.00047463, 7.27153836, 0.99763372, 0.99875098, 0.49310639],
+                             [- 6.27231323, -0.00077420, 0.00047451, 7.27153903, 0.99763431, 0.99875129, 0.49310643],
+                             [- 6.27231370, -0.00077400, 0.00047439, 7.27153970, 0.99763490, 0.99875161, 0.49310644],
+                             [- 6.27231417, -0.00077381, 0.00047427, 7.27154036, 0.99763549, 0.99875192, 0.49310654],
+                             [- 6.27231465, -0.00077362, 0.00047415, 7.27154103, 0.99763608, 0.99875223, 0.49310665],
+                             [- 6.27231512, -0.00077342, 0.00047403, 7.27154170, 0.99763668, 0.99875254, 0.49310674],
+                             [- 6.27231559, -0.00077323, 0.00047392, 7.27154236, 0.99763727, 0.99875285, 0.49310670],
+                             [- 6.27231607, -0.00077304, 0.00047380, 7.27154303, 0.99763786, 0.99875317, 0.49310684],
+                             [- 6.27231654, -0.00077284, 0.00047368, 7.27154369, 0.99763845, 0.99875348, 0.49310692],
+                             [- 6.27231701, -0.00077265, 0.00047356, 7.27154436, 0.99763904, 0.99875379, 0.49310699],
+                             [- 6.27231748, -0.00077246, 0.00047344, 7.27154502, 0.99763963, 0.99875410, 0.49310700],
+                             [- 6.27231795, -0.00077227, 0.00047332, 7.27154569, 0.99764021, 0.99875441, 0.49310703],
+                             [- 6.27231842, -0.00077207, 0.00047321, 7.27154635, 0.99764080, 0.99875472, 0.49310722],
+                             [- 6.27231889, -0.00077188, 0.00047309, 7.27154701, 0.99764139, 0.99875503, 0.49310725],
+                             [- 6.27231936, -0.00077169, 0.00047297, 7.27154768, 0.99764198, 0.99875534, 0.49310729],
+                             [- 6.27231984, -0.00077150, 0.00047285, 7.27154834, 0.99764257, 0.99875565, 0.49310745],
+                             [- 6.27232031, -0.00077130, 0.00047273, 7.27154900, 0.99764316, 0.99875596, 0.49310751],
+                             [- 6.27232077, -0.00077111, 0.00047262, 7.27154966, 0.99764374, 0.99875627, 0.49310749],
+                             [- 6.27232124, -0.00077092, 0.00047250, 7.27155032, 0.99764433, 0.99875658, 0.49310765],
+                             [- 6.27232171, -0.00077073, 0.00047238, 7.27155099, 0.99764492, 0.99875689, 0.49310767],
+                             [- 6.27232218, -0.00077054, 0.00047226, 7.27155165, 0.99764550, 0.99875720, 0.49310775],
+                             [- 6.27232265, -0.00077034, 0.00047215, 7.27155231, 0.99764609, 0.99875751, 0.49310781],
+                             [- 6.27232312, -0.00077015, 0.00047203, 7.27155297, 0.99764668, 0.99875782, 0.49310787],
+                             [- 6.27232359, -0.00076996, 0.00047191, 7.27155363, 0.99764726, 0.99875813, 0.49310796],
+                             [- 6.27232406, -0.00076977, 0.00047179, 7.27155429, 0.99764785, 0.99875844, 0.49310787],
+                             [- 6.27232452, -0.00076958, 0.00047168, 7.27155494, 0.99764843, 0.99875875, 0.49310807],
+                             [- 6.27232499, -0.00076939, 0.00047156, 7.27155560, 0.99764902, 0.99875906, 0.49310819],
+                             [- 6.27232546, -0.00076920, 0.00047144, 7.27155626, 0.99764960, 0.99875936, 0.49310824],
+                             [- 6.27232592, -0.00076900, 0.00047132, 7.27155692, 0.99765019, 0.99875967, 0.49310831],
+                             [- 6.27232639, -0.00076881, 0.00047121, 7.27155758, 0.99765077, 0.99875998, 0.49310826],
+                             [- 6.27232686, -0.00076862, 0.00047109, 7.27155823, 0.99765135, 0.99876029, 0.49310841],
+                             [- 6.27232732, -0.00076843, 0.00047097, 7.27155889, 0.99765194, 0.99876060, 0.49310851],
+                             [- 6.27232779, -0.00076824, 0.00047086, 7.27155955, 0.99765252, 0.99876090, 0.49310855],
+                             [- 6.27232825, -0.00076805, 0.00047074, 7.27156020, 0.99765310, 0.99876121, 0.49310862],
+                             [- 6.27232872, -0.00076786, 0.00047062, 7.27156086, 0.99765369, 0.99876152, 0.49310868],
+                             [- 6.27232918, -0.00076767, 0.00047050, 7.27156151, 0.99765427, 0.99876183, 0.49310870],
+                             [- 6.27232965, -0.00076748, 0.00047039, 7.27156217, 0.99765485, 0.99876213, 0.49310885],
+                             [- 6.27233011, -0.00076729, 0.00047027, 7.27156282, 0.99765543, 0.99876244, 0.49310881],
+                             [- 6.27233058, -0.00076710, 0.00047015, 7.27156348, 0.99765601, 0.99876275, 0.49310901],
+                             [- 6.27233104, -0.00076691, 0.00047004, 7.27156413, 0.99765660, 0.99876305, 0.49310905],
+                             [- 6.27233150, -0.00076672, 0.00046992, 7.27156478, 0.99765718, 0.99876336, 0.49310906],
+                             [- 6.27233197, -0.00076653, 0.00046981, 7.27156544, 0.99765776, 0.99876367, 0.49310915],
+                             [- 6.27233243, -0.00076634, 0.00046969, 7.27156609, 0.99765834, 0.99876397, 0.49310926],
+                             [- 6.27233289, -0.00076615, 0.00046957, 7.27156674, 0.99765892, 0.99876428, 0.49310922],
+                             [- 6.27233336, -0.00076596, 0.00046946, 7.27156740, 0.99765950, 0.99876458, 0.49310945],
+                             [- 6.27233382, -0.00076577, 0.00046934, 7.27156805, 0.99766008, 0.99876489, 0.49310949],
+                             [- 6.27233428, -0.00076558, 0.00046922, 7.27156870, 0.99766065, 0.99876520, 0.49310955],
+                             [- 6.27233474, -0.00076539, 0.00046911, 7.27156935, 0.99766123, 0.99876550, 0.49310960],
+                             [- 6.27233520, -0.00076520, 0.00046899, 7.27157000, 0.99766181, 0.99876581, 0.49310966],
+                             [- 6.27233566, -0.00076501, 0.00046888, 7.27157065, 0.99766239, 0.99876611, 0.49310976],
+                             [- 6.27233612, -0.00076482, 0.00046876, 7.27157130, 0.99766297, 0.99876642, 0.49310982],
+                             [- 6.27233658, -0.00076464, 0.00046864, 7.27157195, 0.99766355, 0.99876672, 0.49310988],
+                             [- 6.27233705, -0.00076445, 0.00046853, 7.27157260, 0.99766412, 0.99876703, 0.49310995],
+                             [- 6.27233751, -0.00076426, 0.00046841, 7.27157325, 0.99766470, 0.99876733, 0.49310998],
+                             [- 6.27233797, -0.00076407, 0.00046830, 7.27157390, 0.99766528, 0.99876763, 0.49311004],
+                             [- 6.27233843, -0.00076388, 0.00046818, 7.27157454, 0.99766585, 0.99876794, 0.49311017],
+                             [- 6.27233888, -0.00076369, 0.00046806, 7.27157519, 0.99766643, 0.99876824, 0.49311019],
+                             [- 6.27233934, -0.00076350, 0.00046795, 7.27157584, 0.99766701, 0.99876855, 0.49311023],
+                             [- 6.27233980, -0.00076332, 0.00046783, 7.27157649, 0.99766758, 0.99876885, 0.49311028],
+                             [- 6.27234026, -0.00076313, 0.00046772, 7.27157713, 0.99766816, 0.99876915, 0.49311042],
+                             [- 6.27234072, -0.00076294, 0.00046760, 7.27157778, 0.99766873, 0.99876946, 0.49311047],
+                             [- 6.27234118, -0.00076275, 0.00046749, 7.27157843, 0.99766931, 0.99876976, 0.49311045],
+                             [- 6.27234163, -0.00076256, 0.00046737, 7.27157907, 0.99766988, 0.99877006, 0.49311061],
+                             [- 6.27234209, -0.00076238, 0.00046726, 7.27157972, 0.99767046, 0.99877037, 0.49311059],
+                             [- 6.27234255, -0.00076219, 0.00046714, 7.27158036, 0.99767103, 0.99877067, 0.49311072],
+                             [- 6.27234301, -0.00076200, 0.00046703, 7.27158101, 0.99767160, 0.99877097, 0.49311081],
+                             [- 6.27234346, -0.00076181, 0.00046691, 7.27158165, 0.99767218, 0.99877128, 0.49311088],
+                             [- 6.27234392, -0.00076163, 0.00046680, 7.27158229, 0.99767275, 0.99877158, 0.49311099],
+                             [- 6.27234438, -0.00076144, 0.00046668, 7.27158294, 0.99767332, 0.99877188, 0.49311100],
+                             [- 6.27234483, -0.00076125, 0.00046657, 7.27158358, 0.99767389, 0.99877218, 0.49311108],
+                             [- 6.27234529, -0.00076106, 0.00046645, 7.27158422, 0.99767447, 0.99877248, 0.49311114],
+                             [- 6.27234574, -0.00076088, 0.00046634, 7.27158487, 0.99767504, 0.99877279, 0.49311126],
+                             [- 6.27234620, -0.00076069, 0.00046622, 7.27158551, 0.99767561, 0.99877309, 0.49311118],
+                             [- 6.27234665, -0.00076050, 0.00046611, 7.27158615, 0.99767618, 0.99877339, 0.49311132],
+                             [- 6.27234711, -0.00076032, 0.00046599, 7.27158679, 0.99767675, 0.99877369, 0.49311134],
+                             [- 6.27234756, -0.00076013, 0.00046588, 7.27158743, 0.99767732, 0.99877399, 0.49311138],
+                             [- 6.27234802, -0.00075994, 0.00046576, 7.27158807, 0.99767789, 0.99877429, 0.49311158],
+                             [- 6.27234847, -0.00075976, 0.00046565, 7.27158872, 0.99767846, 0.99877459, 0.49311152],
+                             [- 6.27234892, -0.00075957, 0.00046554, 7.27158935, 0.99767903, 0.99877489, 0.49311170],
+                             [- 6.27234938, -0.00075938, 0.00046542, 7.27158999, 0.99767960, 0.99877519, 0.49311176],
+                             [- 6.27234983, -0.00075920, 0.00046531, 7.27159063, 0.99768017, 0.99877550, 0.49311184],
+                             [- 6.27235028, -0.00075901, 0.00046519, 7.27159127, 0.99768074, 0.99877580, 0.49311180],
+                             [- 6.27235074, -0.00075882, 0.00046508, 7.27159191, 0.99768131, 0.99877610, 0.49311187],
+                             [- 6.27235119, -0.00075864, 0.00046496, 7.27159255, 0.99768188, 0.99877640, 0.49311206],
+                             [- 6.27235164, -0.00075845, 0.00046485, 7.27159319, 0.99768245, 0.99877670, 0.49311212],
+                             [- 6.27235209, -0.00075827, 0.00046474, 7.27159383, 0.99768302, 0.99877700, 0.49311212],
+                             [- 6.27235255, -0.00075808, 0.00046462, 7.27159446, 0.99768358, 0.99877730, 0.49311214],
+                             [- 6.27235300, -0.00075790, 0.00046451, 7.27159510, 0.99768415, 0.99877759, 0.49311223],
+                             [- 6.27235345, -0.00075771, 0.00046440, 7.27159574, 0.99768472, 0.99877789, 0.49311231],
+                             [- 6.27235390, -0.00075753, 0.00046428, 7.27159637, 0.99768529, 0.99877819, 0.49311242],
+                             [- 6.27235435, -0.00075734, 0.00046417, 7.27159701, 0.99768585, 0.99877849, 0.49311242],
+                             [- 6.27235480, -0.00075715, 0.00046405, 7.27159765, 0.99768642, 0.99877879, 0.49311257],
+                             [- 6.27235525, -0.00075697, 0.00046394, 7.27159828, 0.99768699, 0.99877909, 0.49311263],
+                             [- 6.27235570, -0.00075678, 0.00046383, 7.27159892, 0.99768755, 0.99877939, 0.49311265],
+                             [- 6.27235615, -0.00075660, 0.00046371, 7.27159955, 0.99768812, 0.99877969, 0.49311271],
+                             [- 6.27235660, -0.00075641, 0.00046360, 7.27160019, 0.99768868, 0.99877999, 0.49311273],
+                             [- 6.27235705, -0.00075623, 0.00046349, 7.27160082, 0.99768925, 0.99878028, 0.49311292],
+                             [- 6.27235750, -0.00075605, 0.00046337, 7.27160145, 0.99768981, 0.99878058, 0.49311290],
+                             [- 6.27235795, -0.00075586, 0.00046326, 7.27160209, 0.99769038, 0.99878088, 0.49311294],
+                             [- 6.27235840, -0.00075568, 0.00046315, 7.27160272, 0.99769094, 0.99878118, 0.49311305],
+                             [- 6.27235884, -0.00075549, 0.00046303, 7.27160335, 0.99769150, 0.99878147, 0.49311309],
+                             [- 6.27235929, -0.00075531, 0.00046292, 7.27160398, 0.99769207, 0.99878177, 0.49311327],
+                             [- 6.27235974, -0.00075512, 0.00046281, 7.27160462, 0.99769263, 0.99878207, 0.49311324],
+                             [- 6.27236019, -0.00075494, 0.00046269, 7.27160525, 0.99769319, 0.99878237, 0.49311327],
+                             [- 6.27236063, -0.00075475, 0.00046258, 7.27160588, 0.99769376, 0.99878266, 0.49311333],
+                             [- 6.27236108, -0.00075457, 0.00046247, 7.27160651, 0.99769432, 0.99878296, 0.49311348],
+                             [- 6.27236153, -0.00075439, 0.00046236, 7.27160714, 0.99769488, 0.99878326, 0.49311361],
+                             [- 6.27236197, -0.00075420, 0.00046224, 7.27160777, 0.99769544, 0.99878355, 0.49311357],
+                             [- 6.27236242, -0.00075402, 0.00046213, 7.27160840, 0.99769601, 0.99878385, 0.49311362],
+                             [- 6.27236287, -0.00075384, 0.00046202, 7.27160903, 0.99769657, 0.99878415, 0.49311367],
+                             [- 6.27236331, -0.00075365, 0.00046191, 7.27160966, 0.99769713, 0.99878444, 0.49311366],
+                             [- 6.27236376, -0.00075347, 0.00046179, 7.27161029, 0.99769769, 0.99878474, 0.49311384],
+                             [- 6.27236420, -0.00075329, 0.00046168, 7.27161092, 0.99769825, 0.99878503, 0.49311393],
+                             [- 6.27236465, -0.00075310, 0.00046157, 7.27161155, 0.99769881, 0.99878533, 0.49311405],
+                             [- 6.27236509, -0.00075292, 0.00046146, 7.27161217, 0.99769937, 0.99878563, 0.49311410],
+                             [- 6.27236554, -0.00075274, 0.00046134, 7.27161280, 0.99769993, 0.99878592, 0.49311401],
+                             [- 6.27236598, -0.00075255, 0.00046123, 7.27161343, 0.99770049, 0.99878622, 0.49311424],
+                             [- 6.27236643, -0.00075237, 0.00046112, 7.27161406, 0.99770105, 0.99878651, 0.49311425],
+                             [- 6.27236687, -0.00075219, 0.00046101, 7.27161468, 0.99770161, 0.99878681, 0.49311423],
+                             [- 6.27236731, -0.00075200, 0.00046089, 7.27161531, 0.99770217, 0.99878710, 0.49311442],
+                             [- 6.27236776, -0.00075182, 0.00046078, 7.27161594, 0.99770272, 0.99878740, 0.49311431],
+                             [- 6.27236820, -0.00075164, 0.00046067, 7.27161656, 0.99770328, 0.99878769, 0.49311449],
+                             [- 6.27236864, -0.00075146, 0.00046056, 7.27161719, 0.99770384, 0.99878798, 0.49311451],
+                             [- 6.27236909, -0.00075127, 0.00046045, 7.27161781, 0.99770440, 0.99878828, 0.49311462],
+                             [- 6.27236953, -0.00075109, 0.00046034, 7.27161844, 0.99770496, 0.99878857, 0.49311465],
+                             [- 6.27236997, -0.00075091, 0.00046022, 7.27161906, 0.99770551, 0.99878887, 0.49311479],
+                             [- 6.27237041, -0.00075073, 0.00046011, 7.27161968, 0.99770607, 0.99878916, 0.49311488],
+                             [- 6.27237085, -0.00075055, 0.00046000, 7.27162031, 0.99770663, 0.99878945, 0.49311489],
+                             [- 6.27237130, -0.00075036, 0.00045989, 7.27162093, 0.99770718, 0.99878975, 0.49311496],
+                             [- 6.27237174, -0.00075018, 0.00045978, 7.27162155, 0.99770774, 0.99879004, 0.49311494],
+                             [- 6.27237218, -0.00075000, 0.00045967, 7.27162218, 0.99770829, 0.99879033, 0.49311510],
+                             [- 6.27237262, -0.00074982, 0.00045955, 7.27162280, 0.99770885, 0.99879063, 0.49311504],
+                             [- 6.27237306, -0.00074964, 0.00045944, 7.27162342, 0.99770941, 0.99879092, 0.49311523],
+                             [- 6.27237350, -0.00074946, 0.00045933, 7.27162404, 0.99770996, 0.99879121, 0.49311526],
+                             [- 6.27237394, -0.00074927, 0.00045922, 7.27162466, 0.99771051, 0.99879151, 0.49311531],
+                             [- 6.27237438, -0.00074909, 0.00045911, 7.27162529, 0.99771107, 0.99879180, 0.49311549],
+                             [- 6.27237482, -0.00074891, 0.00045900, 7.27162591, 0.99771162, 0.99879209, 0.49311546],
+                             [- 6.27237526, -0.00074873, 0.00045889, 7.27162653, 0.99771218, 0.99879238, 0.49311554],
+                             [- 6.27237570, -0.00074855, 0.00045878, 7.27162715, 0.99771273, 0.99879268, 0.49311557],
+                             [- 6.27237614, -0.00074837, 0.00045866, 7.27162777, 0.99771328, 0.99879297, 0.49311573],
+                             [- 6.27237657, -0.00074819, 0.00045855, 7.27162839, 0.99771384, 0.99879326, 0.49311571],
+                             [- 6.27237701, -0.00074801, 0.00045844, 7.27162901, 0.99771439, 0.99879355, 0.49311580],
+                             [- 6.27237745, -0.00074783, 0.00045833, 7.27162962, 0.99771494, 0.99879384, 0.49311585],
+                             [- 6.27237789, -0.00074765, 0.00045822, 7.27163024, 0.99771549, 0.99879413, 0.49311592],
+                             [- 6.27237833, -0.00074747, 0.00045811, 7.27163086, 0.99771605, 0.99879442, 0.49311607],
+                             [- 6.27237876, -0.00074728, 0.00045800, 7.27163148, 0.99771660, 0.99879472, 0.49311608],
+                             [- 6.27237920, -0.00074710, 0.00045789, 7.27163210, 0.99771715, 0.99879501, 0.49311612],
+                             [- 6.27237964, -0.00074692, 0.00045778, 7.27163271, 0.99771770, 0.99879530, 0.49311622],
+                             [- 6.27238007, -0.00074674, 0.00045767, 7.27163333, 0.99771825, 0.99879559, 0.49311623],
+                             [- 6.27238051, -0.00074656, 0.00045756, 7.27163395, 0.99771880, 0.99879588, 0.49311629],
+                             [- 6.27238095, -0.00074638, 0.00045745, 7.27163456, 0.99771935, 0.99879617, 0.49311629],
+                             [- 6.27238138, -0.00074620, 0.00045734, 7.27163518, 0.99771990, 0.99879646, 0.49311644],
+                             [- 6.27238182, -0.00074602, 0.00045723, 7.27163580, 0.99772045, 0.99879675, 0.49311641],
+                             [- 6.27238225, -0.00074584, 0.00045712, 7.27163641, 0.99772100, 0.99879704, 0.49311653],
+                             [- 6.27238269, -0.00074566, 0.00045701, 7.27163703, 0.99772155, 0.99879733, 0.49311671],
+                             [- 6.27238312, -0.00074548, 0.00045690, 7.27163764, 0.99772210, 0.99879762, 0.49311673],
+                             [- 6.27238356, -0.00074531, 0.00045679, 7.27163825, 0.99772265, 0.99879791, 0.49311683],
+                             [- 6.27238399, -0.00074513, 0.00045668, 7.27163887, 0.99772320, 0.99879820, 0.49311676],
+                             [- 6.27238443, -0.00074495, 0.00045657, 7.27163948, 0.99772375, 0.99879849, 0.49311684],
+                             [- 6.27238486, -0.00074477, 0.00045646, 7.27164010, 0.99772429, 0.99879878, 0.49311690],
+                             [- 6.27238530, -0.00074459, 0.00045635, 7.27164071, 0.99772484, 0.99879907, 0.49311703],
+                             [- 6.27238573, -0.00074441, 0.00045624, 7.27164132, 0.99772539, 0.99879936, 0.49311710],
+                             [- 6.27238616, -0.00074423, 0.00045613, 7.27164193, 0.99772594, 0.99879964, 0.49311708],
+                             [- 6.27238660, -0.00074405, 0.00045602, 7.27164255, 0.99772648, 0.99879993, 0.49311725],
+                             [- 6.27238703, -0.00074387, 0.00045591, 7.27164316, 0.99772703, 0.99880022, 0.49311732],
+                             [- 6.27238746, -0.00074369, 0.00045580, 7.27164377, 0.99772758, 0.99880051, 0.49311738],
+                             [- 6.27238790, -0.00074352, 0.00045569, 7.27164438, 0.99772812, 0.99880080, 0.49311739],
+                             [- 6.27238833, -0.00074334, 0.00045558, 7.27164499, 0.99772867, 0.99880109, 0.49311746],
+                             [- 6.27238876, -0.00074316, 0.00045547, 7.27164560, 0.99772921, 0.99880137, 0.49311752],
+                             [- 6.27238919, -0.00074298, 0.00045536, 7.27164621, 0.99772976, 0.99880166, 0.49311758],
+                             [- 6.27238962, -0.00074280, 0.00045525, 7.27164682, 0.99773030, 0.99880195, 0.49311766],
+                             [- 6.27239006, -0.00074262, 0.00045514, 7.27164743, 0.99773085, 0.99880224, 0.49311772],
+                             [- 6.27239049, -0.00074245, 0.00045503, 7.27164804, 0.99773139, 0.99880252, 0.49311777],
+                             [- 6.27239092, -0.00074227, 0.00045492, 7.27164865, 0.99773194, 0.99880281, 0.49311785],
+                             [- 6.27239135, -0.00074209, 0.00045481, 7.27164926, 0.99773248, 0.99880310, 0.49311791],
+                             [- 6.27239178, -0.00074191, 0.00045470, 7.27164987, 0.99773303, 0.99880339, 0.49311797],
+                             [- 6.27239221, -0.00074173, 0.00045459, 7.27165048, 0.99773357, 0.99880367, 0.49311806],
+                             [- 6.27239264, -0.00074156, 0.00045449, 7.27165108, 0.99773411, 0.99880396, 0.49311809],
+                             [- 6.27239307, -0.00074138, 0.00045438, 7.27165169, 0.99773466, 0.99880425, 0.49311816],
+                             [- 6.27239350, -0.00074120, 0.00045427, 7.27165230, 0.99773520, 0.99880453, 0.49311824],
+                             [- 6.27239393, -0.00074102, 0.00045416, 7.27165291, 0.99773574, 0.99880482, 0.49311829],
+                             [- 6.27239436, -0.00074085, 0.00045405, 7.27165351, 0.99773628, 0.99880510, 0.49311835],
+                             [- 6.27239479, -0.00074067, 0.00045394, 7.27165412, 0.99773683, 0.99880539, 0.49311839],
+                             [- 6.27239522, -0.00074049, 0.00045383, 7.27165472, 0.99773737, 0.99880568, 0.49311849],
+                             [- 6.27239564, -0.00074031, 0.00045372, 7.27165533, 0.99773791, 0.99880596, 0.49311853],
+                             [- 6.27239607, -0.00074014, 0.00045362, 7.27165593, 0.99773845, 0.99880625, 0.49311862],
+                             [- 6.27239650, -0.00073996, 0.00045351, 7.27165654, 0.99773899, 0.99880653, 0.49311867],
+                             [- 6.27239693, -0.00073978, 0.00045340, 7.27165714, 0.99773953, 0.99880682, 0.49311873],
+                             [- 6.27239736, -0.00073961, 0.00045329, 7.27165775, 0.99774007, 0.99880710, 0.49311878],
+                             [- 6.27239778, -0.00073943, 0.00045318, 7.27165835, 0.99774061, 0.99880739, 0.49311885],
+                             [- 6.27239821, -0.00073925, 0.00045307, 7.27165896, 0.99774115, 0.99880767, 0.49311891],
+                             [- 6.27239864, -0.00073908, 0.00045296, 7.27165956, 0.99774169, 0.99880796, 0.49311897],
+                             [- 6.27239906, -0.00073890, 0.00045286, 7.27166016, 0.99774223, 0.99880824, 0.49311905],
+                             [- 6.27239949, -0.00073872, 0.00045275, 7.27166077, 0.99774277, 0.99880853, 0.49311912],
+                             [- 6.27239992, -0.00073855, 0.00045264, 7.27166137, 0.99774331, 0.99880881, 0.49311918],
+                             [- 6.27240034, -0.00073837, 0.00045253, 7.27166197, 0.99774385, 0.99880910, 0.49311924],
+                             [- 6.27240077, -0.00073820, 0.00045242, 7.27166257, 0.99774439, 0.99880938, 0.49311929],
+                             [- 6.27240119, -0.00073802, 0.00045232, 7.27166317, 0.99774492, 0.99880966, 0.49311935],
+                             [- 6.27240162, -0.00073784, 0.00045221, 7.27166378, 0.99774546, 0.99880995, 0.49311941],
+                             [- 6.27240205, -0.00073767, 0.00045210, 7.27166438, 0.99774600, 0.99881023, 0.49311949],
+                             [- 6.27240247, -0.00073749, 0.00045199, 7.27166498, 0.99774654, 0.99881051, 0.49311956],
+                             [- 6.27240289, -0.00073732, 0.00045188, 7.27166558, 0.99774707, 0.99881080, 0.49311961],
+                             [- 6.27240332, -0.00073714, 0.00045178, 7.27166618, 0.99774761, 0.99881108, 0.49311968],
+                             [- 6.27240374, -0.00073697, 0.00045167, 7.27166678, 0.99774815, 0.99881136, 0.49311975],
+                             [- 6.27240417, -0.00073679, 0.00045156, 7.27166738, 0.99774868, 0.99881165, 0.49311980],
+                             [- 6.27240459, -0.00073662, 0.00045145, 7.27166798, 0.99774922, 0.99881193, 0.49311987],
+                             [- 6.27240502, -0.00073644, 0.00045135, 7.27166858, 0.99774976, 0.99881221, 0.49311992],
+                             [- 6.27240544, -0.00073626, 0.00045124, 7.27166917, 0.99775029, 0.99881250, 0.49312000],
+                             [- 6.27240586, -0.00073609, 0.00045113, 7.27166977, 0.99775083, 0.99881278, 0.49312006],
+                             [- 6.27240628, -0.00073591, 0.00045102, 7.27167037, 0.99775136, 0.99881306, 0.49312011],
+                             [- 6.27240671, -0.00073574, 0.00045092, 7.27167097, 0.99775190, 0.99881334, 0.49312017],
+                             [- 6.27240713, -0.00073556, 0.00045081, 7.27167157, 0.99775243, 0.99881362, 0.49312022],
+                             [- 6.27240755, -0.00073539, 0.00045070, 7.27167216, 0.99775297, 0.99881391, 0.49312031],
+                             [- 6.27240797, -0.00073522, 0.00045060, 7.27167276, 0.99775350, 0.99881419, 0.49312033],
+                             [- 6.27240840, -0.00073504, 0.00045049, 7.27167336, 0.99775403, 0.99881447, 0.49312043],
+                             [- 6.27240882, -0.00073487, 0.00045038, 7.27167395, 0.99775457, 0.99881475, 0.49312049],
+                             [- 6.27240924, -0.00073469, 0.00045027, 7.27167455, 0.99775510, 0.99881503, 0.49312054],
+                             [- 6.27240966, -0.00073452, 0.00045017, 7.27167514, 0.99775563, 0.99881531, 0.49312061],
+                             [- 6.27241008, -0.00073434, 0.00045006, 7.27167574, 0.99775617, 0.99881560, 0.49312068],
+                             [- 6.27241050, -0.00073417, 0.00044995, 7.27167633, 0.99775670, 0.99881588, 0.49312074],
+                             [- 6.27241092, -0.00073400, 0.00044985, 7.27167693, 0.99775723, 0.99881616, 0.49312080],
+                             [- 6.27241134, -0.00073382, 0.00044974, 7.27167752, 0.99775776, 0.99881644, 0.49312087],
+                             [- 6.27241176, -0.00073365, 0.00044963, 7.27167812, 0.99775829, 0.99881672, 0.49312093],
+                             [- 6.27241218, -0.00073347, 0.00044953, 7.27167871, 0.99775883, 0.99881700, 0.49312099],
+                             [- 6.27241260, -0.00073330, 0.00044942, 7.27167930, 0.99775936, 0.99881728, 0.49312106],
+                             [- 6.27241302, -0.00073313, 0.00044931, 7.27167990, 0.99775989, 0.99881756, 0.49312110],
+                             [- 6.27241344, -0.00073295, 0.00044921, 7.27168049, 0.99776042, 0.99881784, 0.49312117],
+                             [- 6.27241386, -0.00073278, 0.00044910, 7.27168108, 0.99776095, 0.99881812, 0.49312124],
+                             [- 6.27241428, -0.00073261, 0.00044899, 7.27168167, 0.99776148, 0.99881840, 0.49312129],
+                             [- 6.27241470, -0.00073243, 0.00044889, 7.27168227, 0.99776201, 0.99881868, 0.49312137],
+                             [- 6.27241512, -0.00073226, 0.00044878, 7.27168286, 0.99776254, 0.99881896, 0.49312141],
+                             [- 6.27241554, -0.00073209, 0.00044868, 7.27168345, 0.99776307, 0.99881924, 0.49312147],
+                             [- 6.27241595, -0.00073191, 0.00044857, 7.27168404, 0.99776360, 0.99881952, 0.49312156],
+                             [- 6.27241637, -0.00073174, 0.00044846, 7.27168463, 0.99776413, 0.99881980, 0.49312161],
+                             [- 6.27241679, -0.00073157, 0.00044836, 7.27168522, 0.99776466, 0.99882008, 0.49312166],
+                             [- 6.27241721, -0.00073139, 0.00044825, 7.27168581, 0.99776518, 0.99882035, 0.49312172],
+                             [- 6.27241762, -0.00073122, 0.00044815, 7.27168640, 0.99776571, 0.99882063, 0.49312178],
+                             [- 6.27241804, -0.00073105, 0.00044804, 7.27168699, 0.99776624, 0.99882091, 0.49312185],
+                             [- 6.27241846, -0.00073088, 0.00044793, 7.27168758, 0.99776677, 0.99882119, 0.49312193],
+                             [- 6.27241887, -0.00073070, 0.00044783, 7.27168817, 0.99776730, 0.99882147, 0.49312197],
+                             [- 6.27241929, -0.00073053, 0.00044772, 7.27168876, 0.99776782, 0.99882175, 0.49312203],
+                             [- 6.27241971, -0.00073036, 0.00044762, 7.27168935, 0.99776835, 0.99882202, 0.49312211],
+                             [- 6.27242012, -0.00073019, 0.00044751, 7.27168994, 0.99776888, 0.99882230, 0.49312215],
+                             [- 6.27242054, -0.00073001, 0.00044741, 7.27169052, 0.99776940, 0.99882258, 0.49312222],
+                             [- 6.27242095, -0.00072984, 0.00044730, 7.27169111, 0.99776993, 0.99882286, 0.49312230],
+                             [- 6.27242137, -0.00072967, 0.00044719, 7.27169170, 0.99777045, 0.99882314, 0.49312233],
+                             [- 6.27242178, -0.00072950, 0.00044709, 7.27169229, 0.99777098, 0.99882341, 0.49312241],
+                             [- 6.27242220, -0.00072933, 0.00044698, 7.27169287, 0.99777151, 0.99882369, 0.49312246],
+                             [- 6.27242261, -0.00072915, 0.00044688, 7.27169346, 0.99777203, 0.99882397, 0.49312253],
+                             [- 6.27242303, -0.00072898, 0.00044677, 7.27169405, 0.99777256, 0.99882424, 0.49312260],
+                             [- 6.27242344, -0.00072881, 0.00044667, 7.27169463, 0.99777308, 0.99882452, 0.49312265],
+                             [- 6.27242386, -0.00072864, 0.00044656, 7.27169522, 0.99777361, 0.99882480, 0.49312272],
+                             [- 6.27242427, -0.00072847, 0.00044646, 7.27169580, 0.99777413, 0.99882508, 0.49312276],
+                             [- 6.27242468, -0.00072830, 0.00044635, 7.27169639, 0.99777465, 0.99882535, 0.49312285],
+                             [- 6.27242510, -0.00072813, 0.00044625, 7.27169697, 0.99777518, 0.99882563, 0.49312291],
+                             [- 6.27242551, -0.00072795, 0.00044614, 7.27169756, 0.99777570, 0.99882590, 0.49312295],
+                             [- 6.27242592, -0.00072778, 0.00044604, 7.27169814, 0.99777622, 0.99882618, 0.49312303],
+                             [- 6.27242634, -0.00072761, 0.00044593, 7.27169872, 0.99777675, 0.99882646, 0.49312307],
+                             [- 6.27242675, -0.00072744, 0.00044583, 7.27169931, 0.99777727, 0.99882673, 0.49312312],
+                             [- 6.27242716, -0.00072727, 0.00044572, 7.27169989, 0.99777779, 0.99882701, 0.49312319],
+                             [- 6.27242757, -0.00072710, 0.00044562, 7.27170047, 0.99777831, 0.99882728, 0.49312326],
+                             [- 6.27242798, -0.00072693, 0.00044551, 7.27170106, 0.99777884, 0.99882756, 0.49312335],
+                             [- 6.27242840, -0.00072676, 0.00044541, 7.27170164, 0.99777936, 0.99882783, 0.49312338],
+                             [- 6.27242881, -0.00072659, 0.00044530, 7.27170222, 0.99777988, 0.99882811, 0.49312345],
+                             [- 6.27242922, -0.00072642, 0.00044520, 7.27170280, 0.99778040, 0.99882838, 0.49312349],
+                             [- 6.27242963, -0.00072625, 0.00044509, 7.27170338, 0.99778092, 0.99882866, 0.49312358],
+                             [- 6.27243004, -0.00072608, 0.00044499, 7.27170397, 0.99778144, 0.99882893, 0.49312364],
+                             [- 6.27243045, -0.00072591, 0.00044488, 7.27170455, 0.99778196, 0.99882921, 0.49312368],
+                             [- 6.27243086, -0.00072574, 0.00044478, 7.27170513, 0.99778248, 0.99882948, 0.49312376],
+                             [- 6.27243127, -0.00072557, 0.00044468, 7.27170571, 0.99778300, 0.99882976, 0.49312381],
+                             [- 6.27243168, -0.00072540, 0.00044457, 7.27170629, 0.99778352, 0.99883003, 0.49312388],
+                             [- 6.27243209, -0.00072523, 0.00044447, 7.27170687, 0.99778404, 0.99883031, 0.49312394],
+                             [- 6.27243250, -0.00072506, 0.00044436, 7.27170745, 0.99778456, 0.99883058, 0.49312397],
+                             [- 6.27243291, -0.00072489, 0.00044426, 7.27170803, 0.99778508, 0.99883086, 0.49312405],
+                             [- 6.27243332, -0.00072472, 0.00044416, 7.27170860, 0.99778560, 0.99883113, 0.49312410],
+                             [- 6.27243373, -0.00072455, 0.00044405, 7.27170918, 0.99778612, 0.99883140, 0.49312419],
+                             [- 6.27243414, -0.00072438, 0.00044395, 7.27170976, 0.99778664, 0.99883168, 0.49312424],
+                             [- 6.27243455, -0.00072421, 0.00044384, 7.27171034, 0.99778716, 0.99883195, 0.49312429],
+                             [- 6.27243496, -0.00072404, 0.00044374, 7.27171092, 0.99778767, 0.99883222, 0.49312436],
+                             [- 6.27243536, -0.00072387, 0.00044364, 7.27171150, 0.99778819, 0.99883250, 0.49312441],
+                             [- 6.27243577, -0.00072370, 0.00044353, 7.27171207, 0.99778871, 0.99883277, 0.49312447],
+                             [- 6.27243618, -0.00072353, 0.00044343, 7.27171265, 0.99778923, 0.99883304, 0.49312454],
+                             [- 6.27243659, -0.00072336, 0.00044332, 7.27171323, 0.99778974, 0.99883331, 0.49312460],
+                             [- 6.27243700, -0.00072319, 0.00044322, 7.27171380, 0.99779026, 0.99883359, 0.49312464],
+                             [- 6.27243740, -0.00072302, 0.00044312, 7.27171438, 0.99779078, 0.99883386, 0.49312471],
+                             [- 6.27243781, -0.00072285, 0.00044301, 7.27171495, 0.99779129, 0.99883413, 0.49312476],
+                             [- 6.27243822, -0.00072269, 0.00044291, 7.27171553, 0.99779181, 0.99883440, 0.49312483],
+                             [- 6.27243862, -0.00072252, 0.00044281, 7.27171611, 0.99779232, 0.99883468, 0.49312489],
+                             [- 6.27243903, -0.00072235, 0.00044270, 7.27171668, 0.99779284, 0.99883495, 0.49312495],
+                             [- 6.27243944, -0.00072218, 0.00044260, 7.27171726, 0.99779336, 0.99883522, 0.49312500],
+                             [- 6.27243984, -0.00072201, 0.00044250, 7.27171783, 0.99779387, 0.99883549, 0.49312508],
+                             [- 6.27244025, -0.00072184, 0.00044239, 7.27171840, 0.99779438, 0.99883576, 0.49312514],
+                             [- 6.27244065, -0.00072167, 0.00044229, 7.27171898, 0.99779490, 0.99883604, 0.49312518],
+                             [- 6.27244106, -0.00072151, 0.00044219, 7.27171955, 0.99779541, 0.99883631, 0.49312525],
+                             [- 6.27244146, -0.00072134, 0.00044208, 7.27172012, 0.99779593, 0.99883658, 0.49312531],
+                             [- 6.27244187, -0.00072117, 0.00044198, 7.27172070, 0.99779644, 0.99883685, 0.49312537],
+                             [- 6.27244227, -0.00072100, 0.00044188, 7.27172127, 0.99779696, 0.99883712, 0.49312544],
+                             [- 6.27244268, -0.00072083, 0.00044177, 7.27172184, 0.99779747, 0.99883739, 0.49312550],
+                             [- 6.27244308, -0.00072067, 0.00044167, 7.27172242, 0.99779798, 0.99883766, 0.49312555],
+                             [- 6.27244349, -0.00072050, 0.00044157, 7.27172299, 0.99779849, 0.99883793, 0.49312563],
+                             [- 6.27244389, -0.00072033, 0.00044147, 7.27172356, 0.99779901, 0.99883820, 0.49312567],
+                             [- 6.27244429, -0.00072016, 0.00044136, 7.27172413, 0.99779952, 0.99883847, 0.49312573],
+                             [- 6.27244470, -0.00072000, 0.00044126, 7.27172470, 0.99780003, 0.99883874, 0.49312578],
+                             [- 6.27244510, -0.00071983, 0.00044116, 7.27172527, 0.99780054, 0.99883901, 0.49312585],
+                             [- 6.27244550, -0.00071966, 0.00044105, 7.27172584, 0.99780105, 0.99883928, 0.49312592],
+                             [- 6.27244591, -0.00071949, 0.00044095, 7.27172641, 0.99780157, 0.99883955, 0.49312598],
+                             [- 6.27244631, -0.00071933, 0.00044085, 7.27172698, 0.99780208, 0.99883982, 0.49312604],
+                             [- 6.27244671, -0.00071916, 0.00044075, 7.27172755, 0.99780259, 0.99884009, 0.49312608],
+                             [- 6.27244712, -0.00071899, 0.00044064, 7.27172812, 0.99780310, 0.99884036, 0.49312614],
+                             [- 6.27244752, -0.00071883, 0.00044054, 7.27172869, 0.99780361, 0.99884063, 0.49312622],
+                             [- 6.27244792, -0.00071866, 0.00044044, 7.27172926, 0.99780412, 0.99884090, 0.49312626],
+                             [- 6.27244832, -0.00071849, 0.00044034, 7.27172983, 0.99780463, 0.99884117, 0.49312632],
+                             [- 6.27244872, -0.00071833, 0.00044024, 7.27173040, 0.99780514, 0.99884144, 0.49312638],
+                             [- 6.27244912, -0.00071816, 0.00044013, 7.27173097, 0.99780565, 0.99884171, 0.49312645],
+                             [- 6.27244953, -0.00071799, 0.00044003, 7.27173153, 0.99780616, 0.99884198, 0.49312649],
+                             [- 6.27244993, -0.00071783, 0.00043993, 7.27173210, 0.99780667, 0.99884225, 0.49312657],
+                             [- 6.27245033, -0.00071766, 0.00043983, 7.27173267, 0.99780718, 0.99884251, 0.49312664],
+                             [- 6.27245073, -0.00071749, 0.00043972, 7.27173323, 0.99780768, 0.99884278, 0.49312669],
+                             [- 6.27245113, -0.00071733, 0.00043962, 7.27173380, 0.99780819, 0.99884305, 0.49312674],
+                             [- 6.27245153, -0.00071716, 0.00043952, 7.27173437, 0.99780870, 0.99884332, 0.49312680],
+                             [- 6.27245193, -0.00071699, 0.00043942, 7.27173493, 0.99780921, 0.99884359, 0.49312685],
+                             [- 6.27245233, -0.00071683, 0.00043932, 7.27173550, 0.99780972, 0.99884385, 0.49312691],
+                             [- 6.27245273, -0.00071666, 0.00043922, 7.27173607, 0.99781022, 0.99884412, 0.49312701],
+                             [- 6.27245313, -0.00071650, 0.00043911, 7.27173663, 0.99781073, 0.99884439, 0.49312703],
+                             [- 6.27245353, -0.00071633, 0.00043901, 7.27173720, 0.99781124, 0.99884466, 0.49312710],
+                             [- 6.27245393, -0.00071617, 0.00043891, 7.27173776, 0.99781174, 0.99884492, 0.49312716],
+                             [- 6.27245432, -0.00071600, 0.00043881, 7.27173833, 0.99781225, 0.99884519, 0.49312722],
+                             [- 6.27245472, -0.00071583, 0.00043871, 7.27173889, 0.99781276, 0.99884546, 0.49312728],
+                             [- 6.27245512, -0.00071567, 0.00043861, 7.27173945, 0.99781326, 0.99884573, 0.49312736],
+                             [- 6.27245552, -0.00071550, 0.00043850, 7.27174002, 0.99781377, 0.99884599, 0.49312741],
+                             [- 6.27245592, -0.00071534, 0.00043840, 7.27174058, 0.99781427, 0.99884626, 0.49312745],
+                             [- 6.27245632, -0.00071517, 0.00043830, 7.27174114, 0.99781478, 0.99884653, 0.49312752],
+                             [- 6.27245671, -0.00071501, 0.00043820, 7.27174171, 0.99781528, 0.99884679, 0.49312756],
+                             [- 6.27245711, -0.00071484, 0.00043810, 7.27174227, 0.99781579, 0.99884706, 0.49312763],
+                             [- 6.27245751, -0.00071468, 0.00043800, 7.27174283, 0.99781629, 0.99884733, 0.49312770],
+                             [- 6.27245791, -0.00071451, 0.00043790, 7.27174339, 0.99781680, 0.99884759, 0.49312773],
+                             [- 6.27245830, -0.00071435, 0.00043779, 7.27174396, 0.99781730, 0.99884786, 0.49312781],
+                             [- 6.27245870, -0.00071418, 0.00043769, 7.27174452, 0.99781781, 0.99884812, 0.49312788],
+                             [- 6.27245910, -0.00071402, 0.00043759, 7.27174508, 0.99781831, 0.99884839, 0.49312794],
+                             [- 6.27245949, -0.00071385, 0.00043749, 7.27174564, 0.99781881, 0.99884866, 0.49312798],
+                             [- 6.27245989, -0.00071369, 0.00043739, 7.27174620, 0.99781932, 0.99884892, 0.49312802],
+                             [- 6.27246028, -0.00071352, 0.00043729, 7.27174676, 0.99781982, 0.99884919, 0.49312810],
+                             [- 6.27246068, -0.00071336, 0.00043719, 7.27174732, 0.99782032, 0.99884945, 0.49312816],
+                             [- 6.27246108, -0.00071320, 0.00043709, 7.27174788, 0.99782083, 0.99884972, 0.49312820],
+                             [- 6.27246147, -0.00071303, 0.00043699, 7.27174844, 0.99782133, 0.99884998, 0.49312828],
+                             [- 6.27246187, -0.00071287, 0.00043689, 7.27174900, 0.99782183, 0.99885025, 0.49312834],
+                             [- 6.27246226, -0.00071270, 0.00043679, 7.27174956, 0.99782233, 0.99885051, 0.49312839],
+                             [- 6.27246266, -0.00071254, 0.00043669, 7.27175012, 0.99782283, 0.99885078, 0.49312847],
+                             [- 6.27246305, -0.00071237, 0.00043658, 7.27175068, 0.99782333, 0.99885104, 0.49312849],
+                             [- 6.27246345, -0.00071221, 0.00043648, 7.27175123, 0.99782384, 0.99885131, 0.49312857],
+                             [- 6.27246384, -0.00071205, 0.00043638, 7.27175179, 0.99782434, 0.99885157, 0.49312862],
+                             [- 6.27246423, -0.00071188, 0.00043628, 7.27175235, 0.99782484, 0.99885183, 0.49312870],
+                             [- 6.27246463, -0.00071172, 0.00043618, 7.27175291, 0.99782534, 0.99885210, 0.49312875],
+                             [- 6.27246502, -0.00071156, 0.00043608, 7.27175347, 0.99782584, 0.99885236, 0.49312878],
+                             [- 6.27246541, -0.00071139, 0.00043598, 7.27175402, 0.99782634, 0.99885263, 0.49312886],
+                             [- 6.27246581, -0.00071123, 0.00043588, 7.27175458, 0.99782684, 0.99885289, 0.49312892],
+                             [- 6.27246620, -0.00071107, 0.00043578, 7.27175514, 0.99782734, 0.99885315, 0.49312899],
+                             [- 6.27246659, -0.00071090, 0.00043568, 7.27175569, 0.99782784, 0.99885342, 0.49312906],
+                             [- 6.27246699, -0.00071074, 0.00043558, 7.27175625, 0.99782833, 0.99885368, 0.49312908],
+                             [- 6.27246738, -0.00071058, 0.00043548, 7.27175680, 0.99782883, 0.99885394, 0.49312914],
+                             [- 6.27246777, -0.00071041, 0.00043538, 7.27175736, 0.99782933, 0.99885421, 0.49312922],
+                             [- 6.27246816, -0.00071025, 0.00043528, 7.27175791, 0.99782983, 0.99885447, 0.49312926],
+                             [- 6.27246856, -0.00071009, 0.00043518, 7.27175847, 0.99783033, 0.99885473, 0.49312934],
+                             [- 6.27246895, -0.00070992, 0.00043508, 7.27175902, 0.99783083, 0.99885499, 0.49312938],
+                             [- 6.27246934, -0.00070976, 0.00043498, 7.27175958, 0.99783132, 0.99885526, 0.49312944],
+                             [- 6.27246973, -0.00070960, 0.00043488, 7.27176013, 0.99783182, 0.99885552, 0.49312948],
+                             [- 6.27247012, -0.00070944, 0.00043478, 7.27176069, 0.99783232, 0.99885578, 0.49312957],
+                             [- 6.27247051, -0.00070927, 0.00043468, 7.27176124, 0.99783282, 0.99885604, 0.49312962],
+                             [- 6.27247090, -0.00070911, 0.00043458, 7.27176179, 0.99783331, 0.99885631, 0.49312968],
+                             [- 6.27247129, -0.00070895, 0.00043448, 7.27176235, 0.99783381, 0.99885657, 0.49312972],
+                             [- 6.27247168, -0.00070879, 0.00043438, 7.27176290, 0.99783431, 0.99885683, 0.49312980],
+                             [- 6.27247207, -0.00070862, 0.00043428, 7.27176345, 0.99783480, 0.99885709, 0.49312985],
+                             [- 6.27247246, -0.00070846, 0.00043418, 7.27176400, 0.99783530, 0.99885735, 0.49312992],
+                             [- 6.27247285, -0.00070830, 0.00043409, 7.27176456, 0.99783579, 0.99885762, 0.49312999],
+                             [- 6.27247324, -0.00070814, 0.00043399, 7.27176511, 0.99783629, 0.99885788, 0.49313003],
+                             [- 6.27247363, -0.00070798, 0.00043389, 7.27176566, 0.99783678, 0.99885814, 0.49313009],
+                             [- 6.27247402, -0.00070781, 0.00043379, 7.27176621, 0.99783728, 0.99885840, 0.49313014],
+                             [- 6.27247441, -0.00070765, 0.00043369, 7.27176676, 0.99783777, 0.99885866, 0.49313021],
+                             [- 6.27247480, -0.00070749, 0.00043359, 7.27176731, 0.99783827, 0.99885892, 0.49313025],
+                             [- 6.27247519, -0.00070733, 0.00043349, 7.27176786, 0.99783876, 0.99885918, 0.49313031],
+                             [- 6.27247558, -0.00070717, 0.00043339, 7.27176841, 0.99783926, 0.99885944, 0.49313036],
+                             [- 6.27247597, -0.00070701, 0.00043329, 7.27176896, 0.99783975, 0.99885970, 0.49313043],
+                             [- 6.27247636, -0.00070684, 0.00043319, 7.27176951, 0.99784024, 0.99885996, 0.49313047],
+                             [- 6.27247674, -0.00070668, 0.00043309, 7.27177006, 0.99784074, 0.99886022, 0.49313056],
+                             [- 6.27247713, -0.00070652, 0.00043299, 7.27177061, 0.99784123, 0.99886048, 0.49313062],
+                             [- 6.27247752, -0.00070636, 0.00043290, 7.27177116, 0.99784172, 0.99886074, 0.49313067],
+                             [- 6.27247791, -0.00070620, 0.00043280, 7.27177171, 0.99784222, 0.99886100, 0.49313072],
+                             [- 6.27247829, -0.00070604, 0.00043270, 7.27177226, 0.99784271, 0.99886126, 0.49313077],
+                             [- 6.27247868, -0.00070588, 0.00043260, 7.27177280, 0.99784320, 0.99886152, 0.49313084],
+                             [- 6.27247907, -0.00070572, 0.00043250, 7.27177335, 0.99784369, 0.99886178, 0.49313089],
+                             [- 6.27247945, -0.00070556, 0.00043240, 7.27177390, 0.99784418, 0.99886204, 0.49313094],
+                             [- 6.27247984, -0.00070539, 0.00043230, 7.27177445, 0.99784468, 0.99886230, 0.49313101],
+                             [- 6.27248023, -0.00070523, 0.00043220, 7.27177499, 0.99784517, 0.99886256, 0.49313105],
+                             [- 6.27248061, -0.00070507, 0.00043211, 7.27177554, 0.99784566, 0.99886282, 0.49313111],
+                             [- 6.27248100, -0.00070491, 0.00043201, 7.27177609, 0.99784615, 0.99886308, 0.49313117],
+                             [- 6.27248139, -0.00070475, 0.00043191, 7.27177663, 0.99784664, 0.99886334, 0.49313123],
+                             [- 6.27248177, -0.00070459, 0.00043181, 7.27177718, 0.99784713, 0.99886360, 0.49313129],
+                             [- 6.27248216, -0.00070443, 0.00043171, 7.27177773, 0.99784762, 0.99886386, 0.49313133],
+                             [- 6.27248254, -0.00070427, 0.00043161, 7.27177827, 0.99784811, 0.99886411, 0.49313142],
+                             [- 6.27248293, -0.00070411, 0.00043152, 7.27177882, 0.99784860, 0.99886437, 0.49313147],
+                             [- 6.27248331, -0.00070395, 0.00043142, 7.27177936, 0.99784909, 0.99886463, 0.49313152],
+                             [- 6.27248370, -0.00070379, 0.00043132, 7.27177991, 0.99784958, 0.99886489, 0.49313157],
+                             [- 6.27248408, -0.00070363, 0.00043122, 7.27178045, 0.99785007, 0.99886515, 0.49313161],
+                             [- 6.27248447, -0.00070347, 0.00043112, 7.27178099, 0.99785056, 0.99886541, 0.49313168],
+                             [- 6.27248485, -0.00070331, 0.00043103, 7.27178154, 0.99785104, 0.99886566, 0.49313174],
+                             [- 6.27248523, -0.00070315, 0.00043093, 7.27178208, 0.99785153, 0.99886592, 0.49313183],
+                             [- 6.27248562, -0.00070299, 0.00043083, 7.27178263, 0.99785202, 0.99886618, 0.49313186],
+                             [- 6.27248600, -0.00070283, 0.00043073, 7.27178317, 0.99785251, 0.99886644, 0.49313191],
+                             [- 6.27248638, -0.00070267, 0.00043063, 7.27178371, 0.99785300, 0.99886669, 0.49313198],
+                             [- 6.27248677, -0.00070251, 0.00043054, 7.27178425, 0.99785348, 0.99886695, 0.49313204],
+                             [- 6.27248715, -0.00070235, 0.00043044, 7.27178480, 0.99785397, 0.99886721, 0.49313208],
+                             [- 6.27248753, -0.00070219, 0.00043034, 7.27178534, 0.99785446, 0.99886747, 0.49313214],
+                             [- 6.27248792, -0.00070203, 0.00043024, 7.27178588, 0.99785495, 0.99886772, 0.49313220],
+                             [- 6.27248830, -0.00070188, 0.00043014, 7.27178642, 0.99785543, 0.99886798, 0.49313224],
+                             [- 6.27248868, -0.00070172, 0.00043005, 7.27178696, 0.99785592, 0.99886824, 0.49313233],
+                             [- 6.27248906, -0.00070156, 0.00042995, 7.27178751, 0.99785641, 0.99886849, 0.49313235],
+                             [- 6.27248945, -0.00070140, 0.00042985, 7.27178805, 0.99785689, 0.99886875, 0.49313243],
+                             [- 6.27248983, -0.00070124, 0.00042975, 7.27178859, 0.99785738, 0.99886901, 0.49313250],
+                             [- 6.27249021, -0.00070108, 0.00042966, 7.27178913, 0.99785786, 0.99886926, 0.49313254],
+                             [- 6.27249059, -0.00070092, 0.00042956, 7.27178967, 0.99785835, 0.99886952, 0.49313259],
+                             [- 6.27249097, -0.00070076, 0.00042946, 7.27179021, 0.99785883, 0.99886977, 0.49313265],
+                             [- 6.27249135, -0.00070060, 0.00042937, 7.27179075, 0.99785932, 0.99887003, 0.49313270],
+                             [- 6.27249173, -0.00070045, 0.00042927, 7.27179129, 0.99785980, 0.99887029, 0.49313277],
+                             [- 6.27249211, -0.00070029, 0.00042917, 7.27179183, 0.99786029, 0.99887054, 0.49313282],
+                             [- 6.27249250, -0.00070013, 0.00042907, 7.27179237, 0.99786077, 0.99887080, 0.49313289],
+                             [- 6.27249288, -0.00069997, 0.00042898, 7.27179290, 0.99786126, 0.99887105, 0.49313291],
+                             [- 6.27249326, -0.00069981, 0.00042888, 7.27179344, 0.99786174, 0.99887131, 0.49313301],
+                             [- 6.27249364, -0.00069965, 0.00042878, 7.27179398, 0.99786222, 0.99887156, 0.49313305],
+                             [- 6.27249402, -0.00069950, 0.00042869, 7.27179452, 0.99786271, 0.99887182, 0.49313311],
+                             [- 6.27249440, -0.00069934, 0.00042859, 7.27179506, 0.99786319, 0.99887207, 0.49313316],
+                             [- 6.27249477, -0.00069918, 0.00042849, 7.27179559, 0.99786367, 0.99887233, 0.49313322],
+                             [- 6.27249515, -0.00069902, 0.00042840, 7.27179613, 0.99786415, 0.99887258, 0.49313329],
+                             [- 6.27249553, -0.00069887, 0.00042830, 7.27179667, 0.99786464, 0.99887284, 0.49313333],
+                             [- 6.27249591, -0.00069871, 0.00042820, 7.27179720, 0.99786512, 0.99887309, 0.49313340],
+                             [- 6.27249629, -0.00069855, 0.00042810, 7.27179774, 0.99786560, 0.99887335, 0.49313343],
+                             [- 6.27249667, -0.00069839, 0.00042801, 7.27179828, 0.99786608, 0.99887360, 0.49313349],
+                             [- 6.27249705, -0.00069823, 0.00042791, 7.27179881, 0.99786656, 0.99887385, 0.49313355],
+                             [- 6.27249743, -0.00069808, 0.00042781, 7.27179935, 0.99786705, 0.99887411, 0.49313361],
+                             [- 6.27249780, -0.00069792, 0.00042772, 7.27179988, 0.99786753, 0.99887436, 0.49313365],
+                             [- 6.27249818, -0.00069776, 0.00042762, 7.27180042, 0.99786801, 0.99887462, 0.49313373],
+                             [- 6.27249856, -0.00069761, 0.00042753, 7.27180095, 0.99786849, 0.99887487, 0.49313378],
+                             [- 6.27249894, -0.00069745, 0.00042743, 7.27180149, 0.99786897, 0.99887512, 0.49313382],
+                             [- 6.27249931, -0.00069729, 0.00042733, 7.27180202, 0.99786945, 0.99887538, 0.49313387],
+                             [- 6.27249969, -0.00069713, 0.00042724, 7.27180256, 0.99786993, 0.99887563, 0.49313395],
+                             [- 6.27250007, -0.00069698, 0.00042714, 7.27180309, 0.99787041, 0.99887588, 0.49313401],
+                             [- 6.27250045, -0.00069682, 0.00042704, 7.27180363, 0.99787089, 0.99887614, 0.49313405],
+                             [- 6.27250082, -0.00069666, 0.00042695, 7.27180416, 0.99787137, 0.99887639, 0.49313411],
+                             [- 6.27250120, -0.00069651, 0.00042685, 7.27180469, 0.99787185, 0.99887664, 0.49313417],
+                             [- 6.27250158, -0.00069635, 0.00042676, 7.27180523, 0.99787233, 0.99887689, 0.49313425],
+                             [- 6.27250195, -0.00069619, 0.00042666, 7.27180576, 0.99787281, 0.99887715, 0.49313428],
+                             [- 6.27250233, -0.00069604, 0.00042656, 7.27180629, 0.99787328, 0.99887740, 0.49313433],
+                             [- 6.27250270, -0.00069588, 0.00042647, 7.27180682, 0.99787376, 0.99887765, 0.49313436],
+                             [- 6.27250308, -0.00069572, 0.00042637, 7.27180736, 0.99787424, 0.99887790, 0.49313447],
+                             [- 6.27250345, -0.00069557, 0.00042628, 7.27180789, 0.99787472, 0.99887816, 0.49313453],
+                             [- 6.27250383, -0.00069541, 0.00042618, 7.27180842, 0.99787520, 0.99887841, 0.49313456],
+                             [- 6.27250420, -0.00069525, 0.00042608, 7.27180895, 0.99787567, 0.99887866, 0.49313463],
+                             [- 6.27250458, -0.00069510, 0.00042599, 7.27180948, 0.99787615, 0.99887891, 0.49313466],
+                             [- 6.27250495, -0.00069494, 0.00042589, 7.27181001, 0.99787663, 0.99887916, 0.49313471],
+                             [- 6.27250533, -0.00069479, 0.00042580, 7.27181054, 0.99787711, 0.99887942, 0.49313478],
+                             [- 6.27250570, -0.00069463, 0.00042570, 7.27181107, 0.99787758, 0.99887967, 0.49313484],
+                             [- 6.27250608, -0.00069447, 0.00042561, 7.27181160, 0.99787806, 0.99887992, 0.49313489],
+                             [- 6.27250645, -0.00069432, 0.00042551, 7.27181213, 0.99787854, 0.99888017, 0.49313499],
+                             [- 6.27250683, -0.00069416, 0.00042541, 7.27181266, 0.99787901, 0.99888042, 0.49313500],
+                             [- 6.27250720, -0.00069401, 0.00042532, 7.27181319, 0.99787949, 0.99888067, 0.49313506],
+                             [- 6.27250757, -0.00069385, 0.00042522, 7.27181372, 0.99787996, 0.99888092, 0.49313510],
+                             [- 6.27250795, -0.00069370, 0.00042513, 7.27181425, 0.99788044, 0.99888117, 0.49313518],
+                             [- 6.27250832, -0.00069354, 0.00042503, 7.27181478, 0.99788091, 0.99888143, 0.49313523],
+                             [- 6.27250869, -0.00069339, 0.00042494, 7.27181531, 0.99788139, 0.99888168, 0.49313528],
+                             [- 6.27250906, -0.00069323, 0.00042484, 7.27181583, 0.99788186, 0.99888193, 0.49313532],
+                             [- 6.27250944, -0.00069308, 0.00042475, 7.27181636, 0.99788234, 0.99888218, 0.49313537],
+                             [- 6.27250981, -0.00069292, 0.00042465, 7.27181689, 0.99788281, 0.99888243, 0.49313545],
+                             [- 6.27251018, -0.00069277, 0.00042456, 7.27181742, 0.99788329, 0.99888268, 0.49313551],
+                             [- 6.27251055, -0.00069261, 0.00042446, 7.27181794, 0.99788376, 0.99888293, 0.49313557],
+                             [- 6.27251093, -0.00069246, 0.00042437, 7.27181847, 0.99788423, 0.99888318, 0.49313560],
+                             [- 6.27251130, -0.00069230, 0.00042427, 7.27181900, 0.99788471, 0.99888343, 0.49313566],
+                             [- 6.27251167, -0.00069215, 0.00042418, 7.27181952, 0.99788518, 0.99888368, 0.49313574],
+                             [- 6.27251204, -0.00069199, 0.00042408, 7.27182005, 0.99788565, 0.99888393, 0.49313579],
+                             [- 6.27251241, -0.00069184, 0.00042399, 7.27182058, 0.99788613, 0.99888418, 0.49313583],
+                             [- 6.27251278, -0.00069168, 0.00042389, 7.27182110, 0.99788660, 0.99888443, 0.49313587],
+                             [- 6.27251315, -0.00069153, 0.00042380, 7.27182163, 0.99788707, 0.99888468, 0.49313593],
+                             [- 6.27251353, -0.00069137, 0.00042370, 7.27182215, 0.99788754, 0.99888492, 0.49313600],
+                             [- 6.27251390, -0.00069122, 0.00042361, 7.27182268, 0.99788801, 0.99888517, 0.49313604],
+                             [- 6.27251427, -0.00069106, 0.00042351, 7.27182320, 0.99788849, 0.99888542, 0.49313613],
+                             [- 6.27251464, -0.00069091, 0.00042342, 7.27182373, 0.99788896, 0.99888567, 0.49313616],
+                             [- 6.27251501, -0.00069076, 0.00042332, 7.27182425, 0.99788943, 0.99888592, 0.49313621],
+                             [- 6.27251538, -0.00069060, 0.00042323, 7.27182478, 0.99788990, 0.99888617, 0.49313628],
+                             [- 6.27251575, -0.00069045, 0.00042314, 7.27182530, 0.99789037, 0.99888642, 0.49313634],
+                             [- 6.27251612, -0.00069029, 0.00042304, 7.27182582, 0.99789084, 0.99888667, 0.49313637],
+                             [- 6.27251649, -0.00069014, 0.00042295, 7.27182635, 0.99789131, 0.99888691, 0.49313644],
+                             [- 6.27251685, -0.00068999, 0.00042285, 7.27182687, 0.99789178, 0.99888716, 0.49313651],
+                             [- 6.27251722, -0.00068983, 0.00042276, 7.27182739, 0.99789225, 0.99888741, 0.49313656],
+                             [- 6.27251759, -0.00068968, 0.00042266, 7.27182791, 0.99789272, 0.99888766, 0.49313664],
+                             [- 6.27251796, -0.00068952, 0.00042257, 7.27182844, 0.99789319, 0.99888791, 0.49313666],
+                             [- 6.27251833, -0.00068937, 0.00042248, 7.27182896, 0.99789366, 0.99888815, 0.49313670],
+                             [- 6.27251870, -0.00068922, 0.00042238, 7.27182948, 0.99789413, 0.99888840, 0.49313677],
+                             [- 6.27251907, -0.00068906, 0.00042229, 7.27183000, 0.99789460, 0.99888865, 0.49313683],
+                             [- 6.27251943, -0.00068891, 0.00042219, 7.27183052, 0.99789507, 0.99888890, 0.49313687],
+                             [- 6.27251980, -0.00068876, 0.00042210, 7.27183104, 0.99789554, 0.99888914, 0.49313691],
+                             [- 6.27252017, -0.00068860, 0.00042200, 7.27183157, 0.99789601, 0.99888939, 0.49313700],
+                             [- 6.27252054, -0.00068845, 0.00042191, 7.27183209, 0.99789647, 0.99888964, 0.49313706],
+                             [- 6.27252091, -0.00068830, 0.00042182, 7.27183261, 0.99789694, 0.99888988, 0.49313707],
+                             [- 6.27252127, -0.00068815, 0.00042172, 7.27183313, 0.99789741, 0.99889013, 0.49313711],
+                             [- 6.27252164, -0.00068799, 0.00042163, 7.27183365, 0.99789788, 0.99889038, 0.49313720],
+                             [- 6.27252201, -0.00068784, 0.00042154, 7.27183417, 0.99789835, 0.99889062, 0.49313727],
+                             [- 6.27252237, -0.00068769, 0.00042144, 7.27183469, 0.99789881, 0.99889087, 0.49313733],
+                             [- 6.27252274, -0.00068753, 0.00042135, 7.27183521, 0.99789928, 0.99889112, 0.49313737],
+                             [- 6.27252311, -0.00068738, 0.00042125, 7.27183572, 0.99789975, 0.99889136, 0.49313744],
+                             [- 6.27252347, -0.00068723, 0.00042116, 7.27183624, 0.99790021, 0.99889161, 0.49313749],
+                             [- 6.27252384, -0.00068708, 0.00042107, 7.27183676, 0.99790068, 0.99889186, 0.49313754],
+                             [- 6.27252420, -0.00068692, 0.00042097, 7.27183728, 0.99790115, 0.99889210, 0.49313760],
+                             [- 6.27252457, -0.00068677, 0.00042088, 7.27183780, 0.99790161, 0.99889235, 0.49313767],
+                             [- 6.27252494, -0.00068662, 0.00042079, 7.27183832, 0.99790208, 0.99889259, 0.49313771],
+                             [- 6.27252530, -0.00068647, 0.00042069, 7.27183883, 0.99790254, 0.99889284, 0.49313775],
+                             [- 6.27252567, -0.00068631, 0.00042060, 7.27183935, 0.99790301, 0.99889309, 0.49313782],
+                             [- 6.27252603, -0.00068616, 0.00042051, 7.27183987, 0.99790347, 0.99889333, 0.49313786],
+                             [- 6.27252640, -0.00068601, 0.00042041, 7.27184039, 0.99790394, 0.99889358, 0.49313791],
+                             [- 6.27252676, -0.00068586, 0.00042032, 7.27184090, 0.99790440, 0.99889382, 0.49313797],
+                             [- 6.27252712, -0.00068571, 0.00042023, 7.27184142, 0.99790487, 0.99889407, 0.49313801],
+                             [- 6.27252749, -0.00068555, 0.00042013, 7.27184193, 0.99790533, 0.99889431, 0.49313810],
+                             [- 6.27252785, -0.00068540, 0.00042004, 7.27184245, 0.99790579, 0.99889456, 0.49313815],
+                             [- 6.27252822, -0.00068525, 0.00041995, 7.27184297, 0.99790626, 0.99889480, 0.49313818],
+                             [- 6.27252858, -0.00068510, 0.00041985, 7.27184348, 0.99790672, 0.99889505, 0.49313824],
+                             [- 6.27252895, -0.00068495, 0.00041976, 7.27184400, 0.99790719, 0.99889529, 0.49313828],
+                             [- 6.27252931, -0.00068480, 0.00041967, 7.27184451, 0.99790765, 0.99889553, 0.49313835],
+                             [- 6.27252967, -0.00068464, 0.00041958, 7.27184503, 0.99790811, 0.99889578, 0.49313842],
+                             [- 6.27253004, -0.00068449, 0.00041948, 7.27184554, 0.99790857, 0.99889602, 0.49313845],
+                             [- 6.27253040, -0.00068434, 0.00041939, 7.27184606, 0.99790904, 0.99889627, 0.49313853],
+                             [- 6.27253076, -0.00068419, 0.00041930, 7.27184657, 0.99790950, 0.99889651, 0.49313854],
+                             [- 6.27253112, -0.00068404, 0.00041920, 7.27184708, 0.99790996, 0.99889676, 0.49313861],
+                             [- 6.27253149, -0.00068389, 0.00041911, 7.27184760, 0.99791042, 0.99889700, 0.49313867],
+                             [- 6.27253185, -0.00068374, 0.00041902, 7.27184811, 0.99791089, 0.99889724, 0.49313874],
+                             [- 6.27253221, -0.00068359, 0.00041893, 7.27184862, 0.99791135, 0.99889749, 0.49313876],
+                             [- 6.27253257, -0.00068344, 0.00041883, 7.27184914, 0.99791181, 0.99889773, 0.49313881],
+                             [- 6.27253293, -0.00068328, 0.00041874, 7.27184965, 0.99791227, 0.99889797, 0.49313886],
+                             [- 6.27253330, -0.00068313, 0.00041865, 7.27185016, 0.99791273, 0.99889822, 0.49313893],
+                             [- 6.27253366, -0.00068298, 0.00041856, 7.27185068, 0.99791319, 0.99889846, 0.49313897],
+                             [- 6.27253402, -0.00068283, 0.00041846, 7.27185119, 0.99791365, 0.99889870, 0.49313904],
+                             [- 6.27253438, -0.00068268, 0.00041837, 7.27185170, 0.99791411, 0.99889895, 0.49313909],
+                             [- 6.27253474, -0.00068253, 0.00041828, 7.27185221, 0.99791457, 0.99889919, 0.49313915],
+                             [- 6.27253510, -0.00068238, 0.00041819, 7.27185272, 0.99791503, 0.99889943, 0.49313920],
+                             [- 6.27253546, -0.00068223, 0.00041810, 7.27185323, 0.99791549, 0.99889967, 0.49313924],
+                             [- 6.27253582, -0.00068208, 0.00041800, 7.27185374, 0.99791595, 0.99889992, 0.49313932],
+                             [- 6.27253618, -0.00068193, 0.00041791, 7.27185425, 0.99791641, 0.99890016, 0.49313937],
+                             [- 6.27253654, -0.00068178, 0.00041782, 7.27185477, 0.99791687, 0.99890040, 0.49313944],
+                             [- 6.27253690, -0.00068163, 0.00041773, 7.27185528, 0.99791733, 0.99890064, 0.49313947],
+                             [- 6.27253726, -0.00068148, 0.00041763, 7.27185579, 0.99791779, 0.99890089, 0.49313953],
+                             [- 6.27253762, -0.00068133, 0.00041754, 7.27185630, 0.99791825, 0.99890113, 0.49313960],
+                             [- 6.27253798, -0.00068118, 0.00041745, 7.27185680, 0.99791871, 0.99890137, 0.49313964],
+                             [- 6.27253834, -0.00068103, 0.00041736, 7.27185731, 0.99791916, 0.99890161, 0.49313969],
+                             [- 6.27253870, -0.00068088, 0.00041727, 7.27185782, 0.99791962, 0.99890185, 0.49313973],
+                             [- 6.27253906, -0.00068073, 0.00041718, 7.27185833, 0.99792008, 0.99890209, 0.49313978],
+                             [- 6.27253942, -0.00068058, 0.00041708, 7.27185884, 0.99792054, 0.99890234, 0.49313983],
+                             [- 6.27253978, -0.00068043, 0.00041699, 7.27185935, 0.99792099, 0.99890258, 0.49313991],
+                             [- 6.27254014, -0.00068028, 0.00041690, 7.27185986, 0.99792145, 0.99890282, 0.49313998],
+                             [- 6.27254050, -0.00068013, 0.00041681, 7.27186036, 0.99792191, 0.99890306, 0.49314002],
+                             [- 6.27254086, -0.00067998, 0.00041672, 7.27186087, 0.99792237, 0.99890330, 0.49314008],
+                             [- 6.27254121, -0.00067983, 0.00041662, 7.27186138, 0.99792282, 0.99890354, 0.49314012],
+                             [- 6.27254157, -0.00067968, 0.00041653, 7.27186189, 0.99792328, 0.99890378, 0.49314018],
+                             [- 6.27254193, -0.00067953, 0.00041644, 7.27186239, 0.99792373, 0.99890402, 0.49314019],
+                             [- 6.27254229, -0.00067939, 0.00041635, 7.27186290, 0.99792419, 0.99890426, 0.49314025],
+                             [- 6.27254264, -0.00067924, 0.00041626, 7.27186341, 0.99792465, 0.99890450, 0.49314034],
+                             [- 6.27254300, -0.00067909, 0.00041617, 7.27186391, 0.99792510, 0.99890474, 0.49314040],
+                             [- 6.27254336, -0.00067894, 0.00041608, 7.27186442, 0.99792556, 0.99890499, 0.49314044],
+                             [- 6.27254372, -0.00067879, 0.00041598, 7.27186493, 0.99792601, 0.99890523, 0.49314049],
+                             [- 6.27254407, -0.00067864, 0.00041589, 7.27186543, 0.99792647, 0.99890547, 0.49314054],
+                             [- 6.27254443, -0.00067849, 0.00041580, 7.27186594, 0.99792692, 0.99890571, 0.49314058],
+                             [- 6.27254479, -0.00067834, 0.00041571, 7.27186644, 0.99792738, 0.99890595, 0.49314062],
+                             [- 6.27254514, -0.00067819, 0.00041562, 7.27186695, 0.99792783, 0.99890618, 0.49314070],
+                             [- 6.27254550, -0.00067805, 0.00041553, 7.27186745, 0.99792828, 0.99890642, 0.49314075],
+                             [- 6.27254585, -0.00067790, 0.00041544, 7.27186796, 0.99792874, 0.99890666, 0.49314079],
+                             [- 6.27254621, -0.00067775, 0.00041535, 7.27186846, 0.99792919, 0.99890690, 0.49314085],
+                             [- 6.27254657, -0.00067760, 0.00041526, 7.27186897, 0.99792965, 0.99890714, 0.49314090],
+                             [- 6.27254692, -0.00067745, 0.00041516, 7.27186947, 0.99793010, 0.99890738, 0.49314094],
+                             [- 6.27254728, -0.00067730, 0.00041507, 7.27186997, 0.99793055, 0.99890762, 0.49314100],
+                             [- 6.27254763, -0.00067716, 0.00041498, 7.27187048, 0.99793101, 0.99890786, 0.49314106],
+                             [- 6.27254799, -0.00067701, 0.00041489, 7.27187098, 0.99793146, 0.99890810, 0.49314111],
+                             [- 6.27254834, -0.00067686, 0.00041480, 7.27187148, 0.99793191, 0.99890834, 0.49314118],
+                             [- 6.27254870, -0.00067671, 0.00041471, 7.27187199, 0.99793236, 0.99890858, 0.49314123],
+                             [- 6.27254905, -0.00067656, 0.00041462, 7.27187249, 0.99793282, 0.99890882, 0.49314127],
+                             [- 6.27254941, -0.00067642, 0.00041453, 7.27187299, 0.99793327, 0.99890905, 0.49314132],
+                             [- 6.27254976, -0.00067627, 0.00041444, 7.27187349, 0.99793372, 0.99890929, 0.49314138],
+                             [- 6.27255012, -0.00067612, 0.00041435, 7.27187399, 0.99793417, 0.99890953, 0.49314144],
+                             [- 6.27255047, -0.00067597, 0.00041426, 7.27187450, 0.99793462, 0.99890977, 0.49314149],
+                             [- 6.27255082, -0.00067583, 0.00041417, 7.27187500, 0.99793507, 0.99891001, 0.49314155],
+                             [- 6.27255118, -0.00067568, 0.00041408, 7.27187550, 0.99793552, 0.99891025, 0.49314159],
+                             [- 6.27255153, -0.00067553, 0.00041399, 7.27187600, 0.99793597, 0.99891048, 0.49314164],
+                             [- 6.27255188, -0.00067538, 0.00041390, 7.27187650, 0.99793643, 0.99891072, 0.49314169],
+                             [- 6.27255224, -0.00067524, 0.00041381, 7.27187700, 0.99793688, 0.99891096, 0.49314176],
+                             [- 6.27255259, -0.00067509, 0.00041372, 7.27187750, 0.99793733, 0.99891120, 0.49314181],
+                             [- 6.27255294, -0.00067494, 0.00041362, 7.27187800, 0.99793778, 0.99891143, 0.49314185],
+                             [- 6.27255330, -0.00067479, 0.00041353, 7.27187850, 0.99793823, 0.99891167, 0.49314190],
+                             [- 6.27255365, -0.00067465, 0.00041344, 7.27187900, 0.99793868, 0.99891191, 0.49314197],
+                             [- 6.27255400, -0.00067450, 0.00041335, 7.27187950, 0.99793912, 0.99891215, 0.49314200],
+                             [- 6.27255435, -0.00067435, 0.00041326, 7.27188000, 0.99793957, 0.99891238, 0.49314208],
+                             [- 6.27255470, -0.00067421, 0.00041317, 7.27188050, 0.99794002, 0.99891262, 0.49314213],
+                             [- 6.27255506, -0.00067406, 0.00041308, 7.27188100, 0.99794047, 0.99891286, 0.49314217],
+                             [- 6.27255541, -0.00067391, 0.00041299, 7.27188150, 0.99794092, 0.99891309, 0.49314220],
+                             [- 6.27255576, -0.00067377, 0.00041290, 7.27188199, 0.99794137, 0.99891333, 0.49314225],
+                             [- 6.27255611, -0.00067362, 0.00041281, 7.27188249, 0.99794182, 0.99891357, 0.49314232],
+                             [- 6.27255646, -0.00067347, 0.00041272, 7.27188299, 0.99794227, 0.99891380, 0.49314238],
+                             [- 6.27255681, -0.00067333, 0.00041263, 7.27188349, 0.99794271, 0.99891404, 0.49314241],
+                             [- 6.27255717, -0.00067318, 0.00041254, 7.27188398, 0.99794316, 0.99891428, 0.49314247],
+                             [- 6.27255752, -0.00067303, 0.00041245, 7.27188448, 0.99794361, 0.99891451, 0.49314253],
+                             [- 6.27255787, -0.00067289, 0.00041236, 7.27188498, 0.99794406, 0.99891475, 0.49314258],
+                             [- 6.27255822, -0.00067274, 0.00041228, 7.27188548, 0.99794450, 0.99891498, 0.49314263],
+                             [- 6.27255857, -0.00067260, 0.00041219, 7.27188597, 0.99794495, 0.99891522, 0.49314268],
+                             [- 6.27255892, -0.00067245, 0.00041210, 7.27188647, 0.99794540, 0.99891545, 0.49314274],
+                             [- 6.27255927, -0.00067230, 0.00041201, 7.27188696, 0.99794584, 0.99891569, 0.49314280],
+                             [- 6.27255962, -0.00067216, 0.00041192, 7.27188746, 0.99794629, 0.99891593, 0.49314284],
+                             [- 6.27255997, -0.00067201, 0.00041183, 7.27188796, 0.99794673, 0.99891616, 0.49314287],
+                             [- 6.27256032, -0.00067187, 0.00041174, 7.27188845, 0.99794718, 0.99891640, 0.49314297],
+                             [- 6.27256067, -0.00067172, 0.00041165, 7.27188895, 0.99794763, 0.99891663, 0.49314303],
+                             [- 6.27256102, -0.00067157, 0.00041156, 7.27188944, 0.99794807, 0.99891687, 0.49314307],
+                             [- 6.27256137, -0.00067143, 0.00041147, 7.27188994, 0.99794852, 0.99891710, 0.49314312],
+                             [- 6.27256171, -0.00067128, 0.00041138, 7.27189043, 0.99794896, 0.99891734, 0.49314315],
+                             [- 6.27256206, -0.00067114, 0.00041129, 7.27189093, 0.99794941, 0.99891757, 0.49314322],
+                             [- 6.27256241, -0.00067099, 0.00041120, 7.27189142, 0.99794985, 0.99891781, 0.49314325],
+                             [- 6.27256276, -0.00067085, 0.00041111, 7.27189191, 0.99795030, 0.99891804, 0.49314333],
+                             [- 6.27256311, -0.00067070, 0.00041102, 7.27189241, 0.99795074, 0.99891828, 0.49314337],
+                             [- 6.27256346, -0.00067056, 0.00041093, 7.27189290, 0.99795119, 0.99891851, 0.49314340],
+                             [- 6.27256381, -0.00067041, 0.00041085, 7.27189339, 0.99795163, 0.99891874, 0.49314348],
+                             [- 6.27256415, -0.00067027, 0.00041076, 7.27189389, 0.99795207, 0.99891898, 0.49314353],
+                             [- 6.27256450, -0.00067012, 0.00041067, 7.27189438, 0.99795252, 0.99891921, 0.49314358],
+                             [- 6.27256485, -0.00066998, 0.00041058, 7.27189487, 0.99795296, 0.99891945, 0.49314365],
+                             [- 6.27256520, -0.00066983, 0.00041049, 7.27189537, 0.99795340, 0.99891968, 0.49314368],
+                             [- 6.27256554, -0.00066969, 0.00041040, 7.27189586, 0.99795385, 0.99891991, 0.49314376],
+                             [- 6.27256589, -0.00066954, 0.00041031, 7.27189635, 0.99795429, 0.99892015, 0.49314379],
+                             [- 6.27256624, -0.00066940, 0.00041022, 7.27189684, 0.99795473, 0.99892038, 0.49314383],
+                             [- 6.27256658, -0.00066925, 0.00041013, 7.27189733, 0.99795517, 0.99892061, 0.49314389],
+                             [- 6.27256693, -0.00066911, 0.00041005, 7.27189782, 0.99795562, 0.99892085, 0.49314395],
+                             [- 6.27256728, -0.00066896, 0.00040996, 7.27189832, 0.99795606, 0.99892108, 0.49314398],
+                             [- 6.27256762, -0.00066882, 0.00040987, 7.27189881, 0.99795650, 0.99892131, 0.49314403],
+                             [- 6.27256797, -0.00066867, 0.00040978, 7.27189930, 0.99795694, 0.99892155, 0.49314409],
+                             [- 6.27256832, -0.00066853, 0.00040969, 7.27189979, 0.99795738, 0.99892178, 0.49314415],
+                             [- 6.27256866, -0.00066838, 0.00040960, 7.27190028, 0.99795782, 0.99892201, 0.49314419],
+                             [- 6.27256901, -0.00066824, 0.00040951, 7.27190077, 0.99795827, 0.99892225, 0.49314425],
+                             [- 6.27256935, -0.00066810, 0.00040943, 7.27190126, 0.99795871, 0.99892248, 0.49314428],
+                             [- 6.27256970, -0.00066795, 0.00040934, 7.27190175, 0.99795915, 0.99892271, 0.49314436],
+                             [- 6.27257004, -0.00066781, 0.00040925, 7.27190224, 0.99795959, 0.99892294, 0.49314439],
+                             [- 6.27257039, -0.00066766, 0.00040916, 7.27190273, 0.99796003, 0.99892318, 0.49314446],
+                             [- 6.27257073, -0.00066752, 0.00040907, 7.27190322, 0.99796047, 0.99892341, 0.49314452],
+                             [- 6.27257108, -0.00066738, 0.00040898, 7.27190370, 0.99796091, 0.99892364, 0.49314453],
+                             [- 6.27257142, -0.00066723, 0.00040890, 7.27190419, 0.99796135, 0.99892387, 0.49314460],
+                             [- 6.27257177, -0.00066709, 0.00040881, 7.27190468, 0.99796179, 0.99892410, 0.49314466],
+                             [- 6.27257211, -0.00066694, 0.00040872, 7.27190517, 0.99796223, 0.99892434, 0.49314470],
+                             [- 6.27257246, -0.00066680, 0.00040863, 7.27190566, 0.99796267, 0.99892457, 0.49314476],
+                             [- 6.27257280, -0.00066666, 0.00040854, 7.27190615, 0.99796311, 0.99892480, 0.49314482],
+                             [- 6.27257315, -0.00066651, 0.00040846, 7.27190663, 0.99796354, 0.99892503, 0.49314486],
+                             [- 6.27257349, -0.00066637, 0.00040837, 7.27190712, 0.99796398, 0.99892526, 0.49314490],
+                             [- 6.27257383, -0.00066623, 0.00040828, 7.27190761, 0.99796442, 0.99892549, 0.49314498],
+                             [- 6.27257418, -0.00066608, 0.00040819, 7.27190809, 0.99796486, 0.99892573, 0.49314501],
+                             [- 6.27257452, -0.00066594, 0.00040810, 7.27190858, 0.99796530, 0.99892596, 0.49314505],
+                             [- 6.27257486, -0.00066580, 0.00040802, 7.27190907, 0.99796574, 0.99892619, 0.49314512],
+                             [- 6.27257521, -0.00066565, 0.00040793, 7.27190955, 0.99796617, 0.99892642, 0.49314515],
+                             [- 6.27257555, -0.00066551, 0.00040784, 7.27191004, 0.99796661, 0.99892665, 0.49314521],
+                             [- 6.27257589, -0.00066537, 0.00040775, 7.27191053, 0.99796705, 0.99892688, 0.49314528],
+                             [- 6.27257623, -0.00066522, 0.00040766, 7.27191101, 0.99796748, 0.99892711, 0.49314532],
+                             [- 6.27257658, -0.00066508, 0.00040758, 7.27191150, 0.99796792, 0.99892734, 0.49314537],
+                             [- 6.27257692, -0.00066494, 0.00040749, 7.27191198, 0.99796836, 0.99892757, 0.49314541],
+                             [- 6.27257726, -0.00066480, 0.00040740, 7.27191247, 0.99796880, 0.99892780, 0.49314547],
+                             [- 6.27257760, -0.00066465, 0.00040731, 7.27191295, 0.99796923, 0.99892803, 0.49314555],
+                             [- 6.27257795, -0.00066451, 0.00040723, 7.27191344, 0.99796967, 0.99892826, 0.49314558],
+                             [- 6.27257829, -0.00066437, 0.00040714, 7.27191392, 0.99797010, 0.99892849, 0.49314564],
+                             [- 6.27257863, -0.00066422, 0.00040705, 7.27191440, 0.99797054, 0.99892872, 0.49314568],
+                             [- 6.27257897, -0.00066408, 0.00040696, 7.27191489, 0.99797098, 0.99892895, 0.49314573],
+                             [- 6.27257931, -0.00066394, 0.00040688, 7.27191537, 0.99797141, 0.99892918, 0.49314579],
+                             [- 6.27257965, -0.00066380, 0.00040679, 7.27191586, 0.99797185, 0.99892941, 0.49314582],
+                             [- 6.27257999, -0.00066366, 0.00040670, 7.27191634, 0.99797228, 0.99892964, 0.49314588],
+                             [- 6.27258033, -0.00066351, 0.00040662, 7.27191682, 0.99797272, 0.99892987, 0.49314593],
+                             [- 6.27258068, -0.00066337, 0.00040653, 7.27191730, 0.99797315, 0.99893010, 0.49314598],
+                             [- 6.27258102, -0.00066323, 0.00040644, 7.27191779, 0.99797358, 0.99893033, 0.49314603],
+                             [- 6.27258136, -0.00066309, 0.00040635, 7.27191827, 0.99797402, 0.99893056, 0.49314608],
+                             [- 6.27258170, -0.00066294, 0.00040627, 7.27191875, 0.99797445, 0.99893079, 0.49314611],
+                             [- 6.27258204, -0.00066280, 0.00040618, 7.27191923, 0.99797489, 0.99893102, 0.49314621],
+                             [- 6.27258238, -0.00066266, 0.00040609, 7.27191972, 0.99797532, 0.99893125, 0.49314623],
+                             [- 6.27258272, -0.00066252, 0.00040601, 7.27192020, 0.99797575, 0.99893148, 0.49314626],
+                             [- 6.27258306, -0.00066238, 0.00040592, 7.27192068, 0.99797619, 0.99893170, 0.49314635],
+                             [- 6.27258340, -0.00066224, 0.00040583, 7.27192116, 0.99797662, 0.99893193, 0.49314639],
+                             [- 6.27258373, -0.00066209, 0.00040574, 7.27192164, 0.99797705, 0.99893216, 0.49314644],
+                             [- 6.27258407, -0.00066195, 0.00040566, 7.27192212, 0.99797749, 0.99893239, 0.49314649],
+                             [- 6.27258441, -0.00066181, 0.00040557, 7.27192260, 0.99797792, 0.99893262, 0.49314651],
+                             [- 6.27258475, -0.00066167, 0.00040548, 7.27192308, 0.99797835, 0.99893285, 0.49314660],
+                             [- 6.27258509, -0.00066153, 0.00040540, 7.27192356, 0.99797878, 0.99893307, 0.49314663],
+                             [- 6.27258543, -0.00066139, 0.00040531, 7.27192404, 0.99797922, 0.99893330, 0.49314669],
+                             [- 6.27258577, -0.00066125, 0.00040522, 7.27192452, 0.99797965, 0.99893353, 0.49314673],
+                             [- 6.27258611, -0.00066110, 0.00040514, 7.27192500, 0.99798008, 0.99893376, 0.49314679],
+                             [- 6.27258644, -0.00066096, 0.00040505, 7.27192548, 0.99798051, 0.99893399, 0.49314686],
+                             [- 6.27258678, -0.00066082, 0.00040496, 7.27192596, 0.99798094, 0.99893421, 0.49314689],
+                             [- 6.27258712, -0.00066068, 0.00040488, 7.27192644, 0.99798137, 0.99893444, 0.49314694],
+                             [- 6.27258746, -0.00066054, 0.00040479, 7.27192692, 0.99798181, 0.99893467, 0.49314700],
+                             [- 6.27258780, -0.00066040, 0.00040471, 7.27192740, 0.99798224, 0.99893490, 0.49314705],
+                             [- 6.27258813, -0.00066026, 0.00040462, 7.27192788, 0.99798267, 0.99893512, 0.49314708],
+                             [- 6.27258847, -0.00066012, 0.00040453, 7.27192835, 0.99798310, 0.99893535, 0.49314712],
+                             [- 6.27258881, -0.00065998, 0.00040445, 7.27192883, 0.99798353, 0.99893558, 0.49314719],
+                             [- 6.27258914, -0.00065984, 0.00040436, 7.27192931, 0.99798396, 0.99893580, 0.49314727],
+                             [- 6.27258948, -0.00065970, 0.00040427, 7.27192979, 0.99798439, 0.99893603, 0.49314727],
+                             [- 6.27258982, -0.00065955, 0.00040419, 7.27193026, 0.99798482, 0.99893626, 0.49314731],
+                             [- 6.27259015, -0.00065941, 0.00040410, 7.27193074, 0.99798525, 0.99893648, 0.49314740],
+                             [- 6.27259049, -0.00065927, 0.00040401, 7.27193122, 0.99798568, 0.99893671, 0.49314745],
+                             [- 6.27259083, -0.00065913, 0.00040393, 7.27193169, 0.99798610, 0.99893694, 0.49314746],
+                             [- 6.27259116, -0.00065899, 0.00040384, 7.27193217, 0.99798653, 0.99893716, 0.49314754],
+                             [- 6.27259150, -0.00065885, 0.00040376, 7.27193265, 0.99798696, 0.99893739, 0.49314761],
+                             [- 6.27259184, -0.00065871, 0.00040367, 7.27193312, 0.99798739, 0.99893762, 0.49314766],
+                             [- 6.27259217, -0.00065857, 0.00040358, 7.27193360, 0.99798782, 0.99893784, 0.49314769],
+                             [- 6.27259251, -0.00065843, 0.00040350, 7.27193407, 0.99798825, 0.99893807, 0.49314775],
+                             [- 6.27259284, -0.00065829, 0.00040341, 7.27193455, 0.99798868, 0.99893829, 0.49314778],
+                             [- 6.27259318, -0.00065815, 0.00040333, 7.27193502, 0.99798910, 0.99893852, 0.49314784],
+                             [- 6.27259351, -0.00065801, 0.00040324, 7.27193550, 0.99798953, 0.99893875, 0.49314788],
+                             [- 6.27259385, -0.00065787, 0.00040316, 7.27193597, 0.99798996, 0.99893897, 0.49314794],
+                             [- 6.27259418, -0.00065773, 0.00040307, 7.27193645, 0.99799039, 0.99893920, 0.49314799],
+                             [- 6.27259452, -0.00065759, 0.00040298, 7.27193692, 0.99799081, 0.99893942, 0.49314805],
+                             [- 6.27259485, -0.00065745, 0.00040290, 7.27193740, 0.99799124, 0.99893965, 0.49314807],
+                             [- 6.27259519, -0.00065731, 0.00040281, 7.27193787, 0.99799167, 0.99893987, 0.49314813],
+                             [- 6.27259552, -0.00065717, 0.00040273, 7.27193835, 0.99799209, 0.99894010, 0.49314822],
+                             [- 6.27259585, -0.00065703, 0.00040264, 7.27193882, 0.99799252, 0.99894032, 0.49314825],
+                             [- 6.27259619, -0.00065690, 0.00040256, 7.27193929, 0.99799295, 0.99894055, 0.49314830],
+                             [- 6.27259652, -0.00065676, 0.00040247, 7.27193977, 0.99799337, 0.99894077, 0.49314836],
+                             [- 6.27259686, -0.00065662, 0.00040239, 7.27194024, 0.99799380, 0.99894100, 0.49314839],
+                             [- 6.27259719, -0.00065648, 0.00040230, 7.27194071, 0.99799422, 0.99894122, 0.49314844],
+                             [- 6.27259752, -0.00065634, 0.00040221, 7.27194118, 0.99799465, 0.99894145, 0.49314848],
+                             [- 6.27259786, -0.00065620, 0.00040213, 7.27194166, 0.99799507, 0.99894167, 0.49314852],
+                             [- 6.27259819, -0.00065606, 0.00040204, 7.27194213, 0.99799550, 0.99894190, 0.49314858],
+                             [- 6.27259852, -0.00065592, 0.00040196, 7.27194260, 0.99799593, 0.99894212, 0.49314864],
+                             [- 6.27259885, -0.00065578, 0.00040187, 7.27194307, 0.99799635, 0.99894234, 0.49314867],
+                             [- 6.27259919, -0.00065564, 0.00040179, 7.27194354, 0.99799677, 0.99894257, 0.49314872],
+                             [- 6.27259952, -0.00065550, 0.00040170, 7.27194402, 0.99799720, 0.99894279, 0.49314880],
+                             [- 6.27259985, -0.00065537, 0.00040162, 7.27194449, 0.99799762, 0.99894302, 0.49314880],
+                             [- 6.27260018, -0.00065523, 0.00040153, 7.27194496, 0.99799805, 0.99894324, 0.49314888],
+                             [- 6.27260052, -0.00065509, 0.00040145, 7.27194543, 0.99799847, 0.99894346, 0.49314897],
+                             [- 6.27260085, -0.00065495, 0.00040136, 7.27194590, 0.99799889, 0.99894369, 0.49314899],
+                             [- 6.27260118, -0.00065481, 0.00040128, 7.27194637, 0.99799932, 0.99894391, 0.49314902],
+                             [- 6.27260151, -0.00065467, 0.00040119, 7.27194684, 0.99799974, 0.99894413, 0.49314908],
+                             [- 6.27260184, -0.00065453, 0.00040111, 7.27194731, 0.99800016, 0.99894436, 0.49314911],
+                             [- 6.27260217, -0.00065440, 0.00040102, 7.27194778, 0.99800059, 0.99894458, 0.49314920],
+                             [- 6.27260251, -0.00065426, 0.00040094, 7.27194825, 0.99800101, 0.99894480, 0.49314922],
+                             [- 6.27260284, -0.00065412, 0.00040085, 7.27194872, 0.99800143, 0.99894503, 0.49314928],
+                             [- 6.27260317, -0.00065398, 0.00040077, 7.27194919, 0.99800186, 0.99894525, 0.49314931],
+                             [- 6.27260350, -0.00065384, 0.00040068, 7.27194966, 0.99800228, 0.99894547, 0.49314937],
+                             [- 6.27260383, -0.00065370, 0.00040060, 7.27195013, 0.99800270, 0.99894570, 0.49314942],
+                             [- 6.27260416, -0.00065357, 0.00040051, 7.27195059, 0.99800312, 0.99894592, 0.49314947],
+                             [- 6.27260449, -0.00065343, 0.00040043, 7.27195106, 0.99800354, 0.99894614, 0.49314952],
+                             [- 6.27260482, -0.00065329, 0.00040035, 7.27195153, 0.99800397, 0.99894636, 0.49314960],
+                             [- 6.27260515, -0.00065315, 0.00040026, 7.27195200, 0.99800439, 0.99894659, 0.49314963],
+                             [- 6.27260548, -0.00065302, 0.00040018, 7.27195247, 0.99800481, 0.99894681, 0.49314965],
+                             [- 6.27260581, -0.00065288, 0.00040009, 7.27195293, 0.99800523, 0.99894703, 0.49314972],
+                             [- 6.27260614, -0.00065274, 0.00040001, 7.27195340, 0.99800565, 0.99894725, 0.49314975],
+                             [- 6.27260647, -0.00065260, 0.00039992, 7.27195387, 0.99800607, 0.99894747, 0.49314983],
+                             [- 6.27260680, -0.00065246, 0.00039984, 7.27195434, 0.99800649, 0.99894770, 0.49314987],
+                             [- 6.27260713, -0.00065233, 0.00039975, 7.27195480, 0.99800691, 0.99894792, 0.49314994],
+                             [- 6.27260746, -0.00065219, 0.00039967, 7.27195527, 0.99800733, 0.99894814, 0.49314996],
+                             [- 6.27260779, -0.00065205, 0.00039959, 7.27195573, 0.99800775, 0.99894836, 0.49314998],
+                             [- 6.27260812, -0.00065192, 0.00039950, 7.27195620, 0.99800817, 0.99894858, 0.49315004],
+                             [- 6.27260844, -0.00065178, 0.00039942, 7.27195667, 0.99800859, 0.99894880, 0.49315011],
+                             [- 6.27260877, -0.00065164, 0.00039933, 7.27195713, 0.99800901, 0.99894903, 0.49315016],
+                             [- 6.27260910, -0.00065150, 0.00039925, 7.27195760, 0.99800943, 0.99894925, 0.49315020],
+                             [- 6.27260943, -0.00065137, 0.00039917, 7.27195806, 0.99800985, 0.99894947, 0.49315028],
+                             [- 6.27260976, -0.00065123, 0.00039908, 7.27195853, 0.99801027, 0.99894969, 0.49315027],
+                             [- 6.27261009, -0.00065109, 0.00039900, 7.27195899, 0.99801069, 0.99894991, 0.49315035],
+                             [- 6.27261041, -0.00065096, 0.00039891, 7.27195946, 0.99801110, 0.99895013, 0.49315041],
+                             [- 6.27261074, -0.00065082, 0.00039883, 7.27195992, 0.99801152, 0.99895035, 0.49315047],
+                             [- 6.27261107, -0.00065068, 0.00039875, 7.27196039, 0.99801194, 0.99895057, 0.49315053],
+                             [- 6.27261140, -0.00065055, 0.00039866, 7.27196085, 0.99801236, 0.99895079, 0.49315055],
+                             [- 6.27261172, -0.00065041, 0.00039858, 7.27196132, 0.99801278, 0.99895101, 0.49315059],
+                             [- 6.27261205, -0.00065027, 0.00039849, 7.27196178, 0.99801320, 0.99895123, 0.49315063],
+                             [- 6.27261238, -0.00065014, 0.00039841, 7.27196224, 0.99801361, 0.99895145, 0.49315070],
+                             [- 6.27261271, -0.00065000, 0.00039833, 7.27196271, 0.99801403, 0.99895167, 0.49315074],
+                             [- 6.27261303, -0.00064986, 0.00039824, 7.27196317, 0.99801445, 0.99895189, 0.49315081],
+                             [- 6.27261336, -0.00064973, 0.00039816, 7.27196363, 0.99801486, 0.99895212, 0.49315083],
+                             [- 6.27261369, -0.00064959, 0.00039808, 7.27196410, 0.99801528, 0.99895233, 0.49315088],
+                             [- 6.27261401, -0.00064945, 0.00039799, 7.27196456, 0.99801570, 0.99895255, 0.49315095],
+                             [- 6.27261434, -0.00064932, 0.00039791, 7.27196502, 0.99801611, 0.99895277, 0.49315102],
+                             [- 6.27261466, -0.00064918, 0.00039782, 7.27196548, 0.99801653, 0.99895299, 0.49315101],
+                             [- 6.27261499, -0.00064904, 0.00039774, 7.27196595, 0.99801695, 0.99895321, 0.49315109],
+                             [- 6.27261532, -0.00064891, 0.00039766, 7.27196641, 0.99801736, 0.99895343, 0.49315112],
+                             [- 6.27261564, -0.00064877, 0.00039757, 7.27196687, 0.99801778, 0.99895365, 0.49315120],
+                             [- 6.27261597, -0.00064864, 0.00039749, 7.27196733, 0.99801819, 0.99895387, 0.49315122],
+                             [- 6.27261629, -0.00064850, 0.00039741, 7.27196779, 0.99801861, 0.99895409, 0.49315129],
+                             [- 6.27261662, -0.00064836, 0.00039732, 7.27196825, 0.99801902, 0.99895431, 0.49315134],
+                             [- 6.27261694, -0.00064823, 0.00039724, 7.27196871, 0.99801944, 0.99895453, 0.49315136],
+                             [- 6.27261727, -0.00064809, 0.00039716, 7.27196917, 0.99801985, 0.99895475, 0.49315141],
+                             [- 6.27261759, -0.00064796, 0.00039707, 7.27196963, 0.99802027, 0.99895497, 0.49315149],
+                             [- 6.27261792, -0.00064782, 0.00039699, 7.27197009, 0.99802068, 0.99895519, 0.49315153],
+                             [- 6.27261824, -0.00064769, 0.00039691, 7.27197056, 0.99802110, 0.99895540, 0.49315156],
+                             [- 6.27261857, -0.00064755, 0.00039683, 7.27197101, 0.99802151, 0.99895562, 0.49315162],
+                             [- 6.27261889, -0.00064742, 0.00039674, 7.27197147, 0.99802193, 0.99895584, 0.49315167],
+                             [- 6.27261921, -0.00064728, 0.00039666, 7.27197193, 0.99802234, 0.99895606, 0.49315173],
+                             [- 6.27261954, -0.00064715, 0.00039658, 7.27197239, 0.99802275, 0.99895628, 0.49315176],
+                             [- 6.27261986, -0.00064701, 0.00039649, 7.27197285, 0.99802317, 0.99895650, 0.49315180],
+                             [- 6.27262019, -0.00064687, 0.00039641, 7.27197331, 0.99802358, 0.99895671, 0.49315186],
+                             [- 6.27262051, -0.00064674, 0.00039633, 7.27197377, 0.99802399, 0.99895693, 0.49315191],
+                             [- 6.27262083, -0.00064660, 0.00039624, 7.27197423, 0.99802441, 0.99895715, 0.49315198],
+                             [- 6.27262116, -0.00064647, 0.00039616, 7.27197469, 0.99802482, 0.99895737, 0.49315200],
+                             [- 6.27262148, -0.00064633, 0.00039608, 7.27197515, 0.99802523, 0.99895759, 0.49315204],
+                             [- 6.27262180, -0.00064620, 0.00039600, 7.27197560, 0.99802564, 0.99895780, 0.49315211],
+                             [- 6.27262213, -0.00064606, 0.00039591, 7.27197606, 0.99802606, 0.99895802, 0.49315216],
+                             [- 6.27262245, -0.00064593, 0.00039583, 7.27197652, 0.99802647, 0.99895824, 0.49315219],
+                             [- 6.27262277, -0.00064579, 0.00039575, 7.27197698, 0.99802688, 0.99895846, 0.49315225],
+                             [- 6.27262309, -0.00064566, 0.00039567, 7.27197743, 0.99802729, 0.99895867, 0.49315226],
+                             [- 6.27262342, -0.00064553, 0.00039558, 7.27197789, 0.99802770, 0.99895889, 0.49315233],
+                             [- 6.27262374, -0.00064539, 0.00039550, 7.27197835, 0.99802812, 0.99895911, 0.49315238],
+                             [- 6.27262406, -0.00064526, 0.00039542, 7.27197880, 0.99802853, 0.99895933, 0.49315244],
+                             [- 6.27262438, -0.00064512, 0.00039534, 7.27197926, 0.99802894, 0.99895954, 0.49315248],
+                             [- 6.27262470, -0.00064499, 0.00039525, 7.27197972, 0.99802935, 0.99895976, 0.49315254],
+                             [- 6.27262503, -0.00064485, 0.00039517, 7.27198017, 0.99802976, 0.99895998, 0.49315255],
+                             [- 6.27262535, -0.00064472, 0.00039509, 7.27198063, 0.99803017, 0.99896019, 0.49315260],
+                             [- 6.27262567, -0.00064458, 0.00039501, 7.27198108, 0.99803058, 0.99896041, 0.49315266],
+                             [- 6.27262599, -0.00064445, 0.00039492, 7.27198154, 0.99803099, 0.99896063, 0.49315272],
+                             [- 6.27262631, -0.00064432, 0.00039484, 7.27198199, 0.99803140, 0.99896084, 0.49315276],
+                             [- 6.27262663, -0.00064418, 0.00039476, 7.27198245, 0.99803181, 0.99896106, 0.49315283],
+                             [- 6.27262695, -0.00064405, 0.00039468, 7.27198290, 0.99803222, 0.99896127, 0.49315287],
+                             [- 6.27262727, -0.00064391, 0.00039460, 7.27198336, 0.99803263, 0.99896149, 0.49315291],
+                             [- 6.27262759, -0.00064378, 0.00039451, 7.27198381, 0.99803304, 0.99896171, 0.49315298],
+                             [- 6.27262792, -0.00064365, 0.00039443, 7.27198427, 0.99803345, 0.99896192, 0.49315301],
+                             [- 6.27262824, -0.00064351, 0.00039435, 7.27198472, 0.99803386, 0.99896214, 0.49315305],
+                             [- 6.27262856, -0.00064338, 0.00039427, 7.27198518, 0.99803427, 0.99896235, 0.49315310],
+                             [- 6.27262888, -0.00064325, 0.00039418, 7.27198563, 0.99803468, 0.99896257, 0.49315315],
+                             [- 6.27262920, -0.00064311, 0.00039410, 7.27198608, 0.99803508, 0.99896279, 0.49315320],
+                             [- 6.27262952, -0.00064298, 0.00039402, 7.27198654, 0.99803549, 0.99896300, 0.49315324],
+                             [- 6.27262984, -0.00064284, 0.00039394, 7.27198699, 0.99803590, 0.99896322, 0.49315329],
+                             [- 6.27263015, -0.00064271, 0.00039386, 7.27198744, 0.99803631, 0.99896343, 0.49315335],
+                             [- 6.27263047, -0.00064258, 0.00039378, 7.27198790, 0.99803672, 0.99896365, 0.49315341],
+                             [- 6.27263079, -0.00064244, 0.00039369, 7.27198835, 0.99803712, 0.99896386, 0.49315341],
+                             [- 6.27263111, -0.00064231, 0.00039361, 7.27198880, 0.99803753, 0.99896408, 0.49315348],
+                             [- 6.27263143, -0.00064218, 0.00039353, 7.27198925, 0.99803794, 0.99896429, 0.49315355],
+                             [- 6.27263175, -0.00064204, 0.00039345, 7.27198971, 0.99803835, 0.99896451, 0.49315360],
+                             [- 6.27263207, -0.00064191, 0.00039337, 7.27199016, 0.99803875, 0.99896472, 0.49315362],
+                             [- 6.27263239, -0.00064178, 0.00039329, 7.27199061, 0.99803916, 0.99896494, 0.49315366],
+                             [- 6.27263271, -0.00064165, 0.00039320, 7.27199106, 0.99803957, 0.99896515, 0.49315370],
+                             [- 6.27263302, -0.00064151, 0.00039312, 7.27199151, 0.99803997, 0.99896537, 0.49315378],
+                             [- 6.27263334, -0.00064138, 0.00039304, 7.27199196, 0.99804038, 0.99896558, 0.49315382],
+                             [- 6.27263366, -0.00064125, 0.00039296, 7.27199241, 0.99804079, 0.99896579, 0.49315384],
+                             [- 6.27263398, -0.00064111, 0.00039288, 7.27199287, 0.99804119, 0.99896601, 0.49315390],
+                             [- 6.27263430, -0.00064098, 0.00039280, 7.27199332, 0.99804160, 0.99896622, 0.49315398],
+                             [- 6.27263461, -0.00064085, 0.00039271, 7.27199377, 0.99804200, 0.99896644, 0.49315398],
+                             [- 6.27263493, -0.00064072, 0.00039263, 7.27199422, 0.99804241, 0.99896665, 0.49315402],
+                             [- 6.27263525, -0.00064058, 0.00039255, 7.27199467, 0.99804281, 0.99896686, 0.49315410],
+                             [- 6.27263557, -0.00064045, 0.00039247, 7.27199512, 0.99804322, 0.99896708, 0.49315415],
+                             [- 6.27263588, -0.00064032, 0.00039239, 7.27199557, 0.99804362, 0.99896729, 0.49315420],
+                             [- 6.27263620, -0.00064019, 0.00039231, 7.27199602, 0.99804403, 0.99896751, 0.49315423],
+                             [- 6.27263652, -0.00064005, 0.00039223, 7.27199646, 0.99804443, 0.99896772, 0.49315429],
+                             [- 6.27263683, -0.00063992, 0.00039215, 7.27199691, 0.99804484, 0.99896793, 0.49315433],
+                             [- 6.27263715, -0.00063979, 0.00039206, 7.27199736, 0.99804524, 0.99896815, 0.49315438],
+                             [- 6.27263747, -0.00063966, 0.00039198, 7.27199781, 0.99804565, 0.99896836, 0.49315441],
+                             [- 6.27263778, -0.00063952, 0.00039190, 7.27199826, 0.99804605, 0.99896857, 0.49315445],
+                             [- 6.27263810, -0.00063939, 0.00039182, 7.27199871, 0.99804645, 0.99896879, 0.49315452],
+                             [- 6.27263842, -0.00063926, 0.00039174, 7.27199916, 0.99804686, 0.99896900, 0.49315453],
+                             [- 6.27263873, -0.00063913, 0.00039166, 7.27199960, 0.99804726, 0.99896921, 0.49315461],
+                             [- 6.27263905, -0.00063900, 0.00039158, 7.27200005, 0.99804766, 0.99896942, 0.49315465],
+                             [- 6.27263936, -0.00063886, 0.00039150, 7.27200050, 0.99804807, 0.99896964, 0.49315471],
+                             [- 6.27263968, -0.00063873, 0.00039142, 7.27200095, 0.99804847, 0.99896985, 0.49315476],
+                             [- 6.27263999, -0.00063860, 0.00039134, 7.27200139, 0.99804887, 0.99897006, 0.49315480],
+                             [- 6.27264031, -0.00063847, 0.00039126, 7.27200184, 0.99804928, 0.99897028, 0.49315486],
+                             [- 6.27264063, -0.00063834, 0.00039117, 7.27200229, 0.99804968, 0.99897049, 0.49315489],
+                             [- 6.27264094, -0.00063821, 0.00039109, 7.27200273, 0.99805008, 0.99897070, 0.49315491],
+                             [- 6.27264126, -0.00063807, 0.00039101, 7.27200318, 0.99805048, 0.99897091, 0.49315503],
+                             [- 6.27264157, -0.00063794, 0.00039093, 7.27200363, 0.99805088, 0.99897112, 0.49315504],
+                             [- 6.27264188, -0.00063781, 0.00039085, 7.27200407, 0.99805129, 0.99897134, 0.49315507],
+                             [- 6.27264220, -0.00063768, 0.00039077, 7.27200452, 0.99805169, 0.99897155, 0.49315512],
+                             [- 6.27264251, -0.00063755, 0.00039069, 7.27200496, 0.99805209, 0.99897176, 0.49315517],
+                             [- 6.27264283, -0.00063742, 0.00039061, 7.27200541, 0.99805249, 0.99897197, 0.49315521],
+                             [- 6.27264314, -0.00063729, 0.00039053, 7.27200586, 0.99805289, 0.99897218, 0.49315529],
+                             [- 6.27264346, -0.00063716, 0.00039045, 7.27200630, 0.99805329, 0.99897240, 0.49315533],
+                             [- 6.27264377, -0.00063702, 0.00039037, 7.27200675, 0.99805369, 0.99897261, 0.49315538],
+                             [- 6.27264408, -0.00063689, 0.00039029, 7.27200719, 0.99805409, 0.99897282, 0.49315540],
+                             [- 6.27264440, -0.00063676, 0.00039021, 7.27200764, 0.99805450, 0.99897303, 0.49315545],
+                             [- 6.27264471, -0.00063663, 0.00039013, 7.27200808, 0.99805490, 0.99897324, 0.49315550],
+                             [- 6.27264502, -0.00063650, 0.00039005, 7.27200852, 0.99805530, 0.99897345, 0.49315556],
+                             [- 6.27264534, -0.00063637, 0.00038997, 7.27200897, 0.99805570, 0.99897366, 0.49315563],
+                             [- 6.27264565, -0.00063624, 0.00038989, 7.27200941, 0.99805610, 0.99897387, 0.49315563],
+                             [- 6.27264596, -0.00063611, 0.00038981, 7.27200986, 0.99805649, 0.99897409, 0.49315568],
+                             [- 6.27264628, -0.00063598, 0.00038973, 7.27201030, 0.99805689, 0.99897430, 0.49315572],
+                             [- 6.27264659, -0.00063585, 0.00038965, 7.27201074, 0.99805729, 0.99897451, 0.49315579],
+                             [- 6.27264690, -0.00063572, 0.00038957, 7.27201119, 0.99805769, 0.99897472, 0.49315582],
+                             [- 6.27264721, -0.00063559, 0.00038949, 7.27201163, 0.99805809, 0.99897493, 0.49315589],
+                             [- 6.27264753, -0.00063545, 0.00038941, 7.27201207, 0.99805849, 0.99897514, 0.49315595],
+                             [- 6.27264784, -0.00063532, 0.00038933, 7.27201251, 0.99805889, 0.99897535, 0.49315600],
+                             [- 6.27264815, -0.00063519, 0.00038925, 7.27201296, 0.99805929, 0.99897556, 0.49315603],
+                             [- 6.27264846, -0.00063506, 0.00038917, 7.27201340, 0.99805969, 0.99897577, 0.49315606],
+                             [- 6.27264877, -0.00063493, 0.00038909, 7.27201384, 0.99806008, 0.99897598, 0.49315609],
+                             [- 6.27264909, -0.00063480, 0.00038901, 7.27201428, 0.99806048, 0.99897619, 0.49315614],
+                             [- 6.27264940, -0.00063467, 0.00038893, 7.27201472, 0.99806088, 0.99897640, 0.49315621],
+                             [- 6.27264971, -0.00063454, 0.00038885, 7.27201517, 0.99806128, 0.99897661, 0.49315622],
+                             [- 6.27265002, -0.00063441, 0.00038877, 7.27201561, 0.99806168, 0.99897682, 0.49315632],
+                             [- 6.27265033, -0.00063428, 0.00038869, 7.27201605, 0.99806207, 0.99897703, 0.49315636],
+                             [- 6.27265064, -0.00063415, 0.00038861, 7.27201649, 0.99806247, 0.99897724, 0.49315639],
+                             [- 6.27265095, -0.00063402, 0.00038853, 7.27201693, 0.99806287, 0.99897745, 0.49315644],
+                             [- 6.27265126, -0.00063389, 0.00038845, 7.27201737, 0.99806326, 0.99897766, 0.49315648],
+                             [- 6.27265157, -0.00063376, 0.00038837, 7.27201781, 0.99806366, 0.99897787, 0.49315654],
+                             [- 6.27265189, -0.00063363, 0.00038829, 7.27201825, 0.99806406, 0.99897808, 0.49315656],
+                             [- 6.27265220, -0.00063350, 0.00038821, 7.27201869, 0.99806445, 0.99897829, 0.49315663],
+                             [- 6.27265251, -0.00063337, 0.00038813, 7.27201913, 0.99806485, 0.99897849, 0.49315664],
+                             [- 6.27265282, -0.00063324, 0.00038805, 7.27201957, 0.99806525, 0.99897870, 0.49315672],
+                             [- 6.27265313, -0.00063312, 0.00038797, 7.27202001, 0.99806564, 0.99897891, 0.49315678],
+                             [- 6.27265344, -0.00063299, 0.00038789, 7.27202045, 0.99806604, 0.99897912, 0.49315679],
+                             [- 6.27265375, -0.00063286, 0.00038781, 7.27202089, 0.99806643, 0.99897933, 0.49315682],
+                             [- 6.27265406, -0.00063273, 0.00038773, 7.27202133, 0.99806683, 0.99897954, 0.49315688],
+                             [- 6.27265436, -0.00063260, 0.00038765, 7.27202177, 0.99806722, 0.99897975, 0.49315697],
+                             [- 6.27265467, -0.00063247, 0.00038758, 7.27202221, 0.99806762, 0.99897996, 0.49315698],
+                             [- 6.27265498, -0.00063234, 0.00038750, 7.27202264, 0.99806801, 0.99898016, 0.49315705],
+                             [- 6.27265529, -0.00063221, 0.00038742, 7.27202308, 0.99806841, 0.99898037, 0.49315710],
+                             [- 6.27265560, -0.00063208, 0.00038734, 7.27202352, 0.99806880, 0.99898058, 0.49315714],
+                             [- 6.27265591, -0.00063195, 0.00038726, 7.27202396, 0.99806920, 0.99898079, 0.49315716],
+                             [- 6.27265622, -0.00063182, 0.00038718, 7.27202440, 0.99806959, 0.99898100, 0.49315722],
+                             [- 6.27265653, -0.00063169, 0.00038710, 7.27202483, 0.99806999, 0.99898121, 0.49315726],
+                             [- 6.27265684, -0.00063157, 0.00038702, 7.27202527, 0.99807038, 0.99898141, 0.49315731],
+                             [- 6.27265714, -0.00063144, 0.00038694, 7.27202571, 0.99807077, 0.99898162, 0.49315737],
+                             [- 6.27265745, -0.00063131, 0.00038686, 7.27202614, 0.99807117, 0.99898183, 0.49315740],
+                             [- 6.27265776, -0.00063118, 0.00038678, 7.27202658, 0.99807156, 0.99898204, 0.49315744],
+                             [- 6.27265807, -0.00063105, 0.00038671, 7.27202702, 0.99807195, 0.99898224, 0.49315747],
+                             [- 6.27265838, -0.00063092, 0.00038663, 7.27202745, 0.99807235, 0.99898245, 0.49315751],
+                             [- 6.27265868, -0.00063079, 0.00038655, 7.27202789, 0.99807274, 0.99898266, 0.49315758],
+                             [- 6.27265899, -0.00063066, 0.00038647, 7.27202833, 0.99807313, 0.99898287, 0.49315760],
+                             [- 6.27265930, -0.00063054, 0.00038639, 7.27202876, 0.99807353, 0.99898307, 0.49315770],
+                             [- 6.27265961, -0.00063041, 0.00038631, 7.27202920, 0.99807392, 0.99898328, 0.49315771],
+                             [- 6.27265991, -0.00063028, 0.00038623, 7.27202963, 0.99807431, 0.99898349, 0.49315780],
+                             [- 6.27266022, -0.00063015, 0.00038615, 7.27203007, 0.99807470, 0.99898369, 0.49315780],
+                             [- 6.27266053, -0.00063002, 0.00038608, 7.27203051, 0.99807510, 0.99898390, 0.49315786],
+                             [- 6.27266083, -0.00062989, 0.00038600, 7.27203094, 0.99807549, 0.99898411, 0.49315792],
+                             [- 6.27266114, -0.00062977, 0.00038592, 7.27203138, 0.99807588, 0.99898432, 0.49315794],
+                             [- 6.27266145, -0.00062964, 0.00038584, 7.27203181, 0.99807627, 0.99898452, 0.49315802],
+                             [- 6.27266175, -0.00062951, 0.00038576, 7.27203224, 0.99807666, 0.99898473, 0.49315805],
+                             [- 6.27266206, -0.00062938, 0.00038568, 7.27203268, 0.99807705, 0.99898493, 0.49315808],
+                             [- 6.27266237, -0.00062925, 0.00038560, 7.27203311, 0.99807744, 0.99898514, 0.49315812],
+                             [- 6.27266267, -0.00062913, 0.00038553, 7.27203355, 0.99807784, 0.99898535, 0.49315818],
+                             [- 6.27266298, -0.00062900, 0.00038545, 7.27203398, 0.99807823, 0.99898555, 0.49315821],
+                             [- 6.27266329, -0.00062887, 0.00038537, 7.27203441, 0.99807862, 0.99898576, 0.49315828],
+                             [- 6.27266359, -0.00062874, 0.00038529, 7.27203485, 0.99807901, 0.99898597, 0.49315830],
+                             [- 6.27266390, -0.00062862, 0.00038521, 7.27203528, 0.99807940, 0.99898617, 0.49315836],
+                             [- 6.27266420, -0.00062849, 0.00038513, 7.27203571, 0.99807979, 0.99898638, 0.49315841],
+                             [- 6.27266451, -0.00062836, 0.00038506, 7.27203615, 0.99808018, 0.99898658, 0.49315847],
+                             [- 6.27266481, -0.00062823, 0.00038498, 7.27203658, 0.99808057, 0.99898679, 0.49315850],
+                             [- 6.27266512, -0.00062811, 0.00038490, 7.27203701, 0.99808096, 0.99898700, 0.49315856],
+                             [- 6.27266542, -0.00062798, 0.00038482, 7.27203744, 0.99808135, 0.99898720, 0.49315859],
+                             [- 6.27266573, -0.00062785, 0.00038474, 7.27203788, 0.99808174, 0.99898741, 0.49315862],
+                             [- 6.27266603, -0.00062772, 0.00038467, 7.27203831, 0.99808213, 0.99898761, 0.49315867],
+                             [- 6.27266634, -0.00062760, 0.00038459, 7.27203874, 0.99808251, 0.99898782, 0.49315875],
+                             [- 6.27266664, -0.00062747, 0.00038451, 7.27203917, 0.99808290, 0.99898802, 0.49315880],
+                             [- 6.27266695, -0.00062734, 0.00038443, 7.27203960, 0.99808329, 0.99898823, 0.49315883],
+                             [- 6.27266725, -0.00062721, 0.00038435, 7.27204004, 0.99808368, 0.99898843, 0.49315887],
+                             [- 6.27266755, -0.00062709, 0.00038428, 7.27204047, 0.99808407, 0.99898864, 0.49315892],
+                             [- 6.27266786, -0.00062696, 0.00038420, 7.27204090, 0.99808446, 0.99898884, 0.49315895],
+                             [- 6.27266816, -0.00062683, 0.00038412, 7.27204133, 0.99808485, 0.99898905, 0.49315899],
+                             [- 6.27266847, -0.00062671, 0.00038404, 7.27204176, 0.99808523, 0.99898925, 0.49315906],
+                             [- 6.27266877, -0.00062658, 0.00038396, 7.27204219, 0.99808562, 0.99898946, 0.49315910],
+                             [- 6.27266907, -0.00062645, 0.00038389, 7.27204262, 0.99808601, 0.99898966, 0.49315911],
+                             [- 6.27266938, -0.00062633, 0.00038381, 7.27204305, 0.99808640, 0.99898987, 0.49315917],
+                             [- 6.27266968, -0.00062620, 0.00038373, 7.27204348, 0.99808678, 0.99899007, 0.49315922],
+                             [- 6.27266998, -0.00062607, 0.00038365, 7.27204391, 0.99808717, 0.99899027, 0.49315926],
+                             [- 6.27267028, -0.00062595, 0.00038358, 7.27204434, 0.99808756, 0.99899048, 0.49315930],
+                             [- 6.27267059, -0.00062582, 0.00038350, 7.27204477, 0.99808794, 0.99899068, 0.49315934],
+                             [- 6.27267089, -0.00062569, 0.00038342, 7.27204520, 0.99808833, 0.99899089, 0.49315940],
+                             [- 6.27267119, -0.00062557, 0.00038334, 7.27204563, 0.99808872, 0.99899109, 0.49315945],
+                             [- 6.27267150, -0.00062544, 0.00038327, 7.27204606, 0.99808910, 0.99899129, 0.49315950],
+                             [- 6.27267180, -0.00062531, 0.00038319, 7.27204648, 0.99808949, 0.99899150, 0.49315953],
+                             [- 6.27267210, -0.00062519, 0.00038311, 7.27204691, 0.99808988, 0.99899170, 0.49315956],
+                             [- 6.27267240, -0.00062506, 0.00038303, 7.27204734, 0.99809026, 0.99899191, 0.49315961],
+                             [- 6.27267270, -0.00062494, 0.00038296, 7.27204777, 0.99809065, 0.99899211, 0.49315968],
+                             [- 6.27267301, -0.00062481, 0.00038288, 7.27204820, 0.99809103, 0.99899231, 0.49315973],
+                             [- 6.27267331, -0.00062468, 0.00038280, 7.27204863, 0.99809142, 0.99899252, 0.49315977],
+                             [- 6.27267361, -0.00062456, 0.00038272, 7.27204905, 0.99809180, 0.99899272, 0.49315980],
+                             [- 6.27267391, -0.00062443, 0.00038265, 7.27204948, 0.99809219, 0.99899292, 0.49315984],
+                             [- 6.27267421, -0.00062431, 0.00038257, 7.27204991, 0.99809257, 0.99899313, 0.49315989],
+                             [- 6.27267451, -0.00062418, 0.00038249, 7.27205033, 0.99809296, 0.99899333, 0.49315993],
+                             [- 6.27267481, -0.00062405, 0.00038241, 7.27205076, 0.99809334, 0.99899353, 0.49315999],
+                             [- 6.27267512, -0.00062393, 0.00038234, 7.27205119, 0.99809373, 0.99899373, 0.49316004],
+                             [- 6.27267542, -0.00062380, 0.00038226, 7.27205162, 0.99809411, 0.99899394, 0.49316007],
+                             [- 6.27267572, -0.00062368, 0.00038218, 7.27205204, 0.99809450, 0.99899414, 0.49316011],
+                             [- 6.27267602, -0.00062355, 0.00038211, 7.27205247, 0.99809488, 0.99899434, 0.49316016],
+                             [- 6.27267632, -0.00062342, 0.00038203, 7.27205289, 0.99809527, 0.99899455, 0.49316020],
+                             [- 6.27267662, -0.00062330, 0.00038195, 7.27205332, 0.99809565, 0.99899475, 0.49316023],
+                             [- 6.27267692, -0.00062317, 0.00038188, 7.27205375, 0.99809603, 0.99899495, 0.49316033],
+                             [- 6.27267722, -0.00062305, 0.00038180, 7.27205417, 0.99809642, 0.99899515, 0.49316032],
+                             [- 6.27267752, -0.00062292, 0.00038172, 7.27205460, 0.99809680, 0.99899536, 0.49316037],
+                             [- 6.27267782, -0.00062280, 0.00038164, 7.27205502, 0.99809718, 0.99899556, 0.49316043],
+                             [- 6.27267812, -0.00062267, 0.00038157, 7.27205545, 0.99809757, 0.99899576, 0.49316049],
+                             [- 6.27267842, -0.00062255, 0.00038149, 7.27205587, 0.99809795, 0.99899596, 0.49316053],
+                             [- 6.27267872, -0.00062242, 0.00038141, 7.27205630, 0.99809833, 0.99899616, 0.49316060],
+                             [- 6.27267902, -0.00062230, 0.00038134, 7.27205672, 0.99809871, 0.99899637, 0.49316061],
+                             [- 6.27267932, -0.00062217, 0.00038126, 7.27205715, 0.99809910, 0.99899657, 0.49316068],
+                             [- 6.27267962, -0.00062205, 0.00038118, 7.27205757, 0.99809948, 0.99899677, 0.49316072],
+                             [- 6.27267992, -0.00062192, 0.00038111, 7.27205799, 0.99809986, 0.99899697, 0.49316074],
+                             [- 6.27268021, -0.00062180, 0.00038103, 7.27205842, 0.99810024, 0.99899717, 0.49316079],
+                             [- 6.27268051, -0.00062167, 0.00038095, 7.27205884, 0.99810062, 0.99899737, 0.49316083],
+                             [- 6.27268081, -0.00062155, 0.00038088, 7.27205927, 0.99810100, 0.99899757, 0.49316088],
+                             [- 6.27268111, -0.00062142, 0.00038080, 7.27205969, 0.99810139, 0.99899778, 0.49316090],
+                             [- 6.27268141, -0.00062130, 0.00038072, 7.27206011, 0.99810177, 0.99899798, 0.49316099],
+                             [- 6.27268171, -0.00062117, 0.00038065, 7.27206053, 0.99810215, 0.99899818, 0.49316102],
+                             [- 6.27268201, -0.00062105, 0.00038057, 7.27206096, 0.99810253, 0.99899838, 0.49316107],
+                             [- 6.27268230, -0.00062092, 0.00038050, 7.27206138, 0.99810291, 0.99899858, 0.49316107],
+                             [- 6.27268260, -0.00062080, 0.00038042, 7.27206180, 0.99810329, 0.99899878, 0.49316112],
+                             [- 6.27268290, -0.00062067, 0.00038034, 7.27206223, 0.99810367, 0.99899898, 0.49316121],
+                             [- 6.27268320, -0.00062055, 0.00038027, 7.27206265, 0.99810405, 0.99899918, 0.49316122],
+                             [- 6.27268350, -0.00062043, 0.00038019, 7.27206307, 0.99810443, 0.99899938, 0.49316127],
+                             [- 6.27268379, -0.00062030, 0.00038011, 7.27206349, 0.99810481, 0.99899958, 0.49316133],
+                             [- 6.27268409, -0.00062018, 0.00038004, 7.27206391, 0.99810519, 0.99899978, 0.49316137],
+                             [- 6.27268439, -0.00062005, 0.00037996, 7.27206433, 0.99810557, 0.99899999, 0.49316141],
+                             [- 6.27268468, -0.00061993, 0.00037989, 7.27206476, 0.99810595, 0.99900019, 0.49316145],
+                             [- 6.27268498, -0.00061980, 0.00037981, 7.27206518, 0.99810633, 0.99900039, 0.49316150],
+                             [- 6.27268528, -0.00061968, 0.00037973, 7.27206560, 0.99810671, 0.99900059, 0.49316152],
+                             [- 6.27268558, -0.00061956, 0.00037966, 7.27206602, 0.99810709, 0.99900079, 0.49316158],
+                             [- 6.27268587, -0.00061943, 0.00037958, 7.27206644, 0.99810747, 0.99900099, 0.49316160],
+                             [- 6.27268617, -0.00061931, 0.00037951, 7.27206686, 0.99810785, 0.99900119, 0.49316174],
+                             [- 6.27268647, -0.00061919, 0.00037943, 7.27206728, 0.99810823, 0.99900139, 0.49316174],
+                             [- 6.27268676, -0.00061906, 0.00037935, 7.27206770, 0.99810860, 0.99900159, 0.49316173],
+                             [- 6.27268706, -0.00061894, 0.00037928, 7.27206812, 0.99810898, 0.99900179, 0.49316182],
+                             [- 6.27268735, -0.00061881, 0.00037920, 7.27206854, 0.99810936, 0.99900198, 0.49316185],
+                             [- 6.27268765, -0.00061869, 0.00037913, 7.27206896, 0.99810974, 0.99900218, 0.49316190],
+                             [- 6.27268795, -0.00061857, 0.00037905, 7.27206938, 0.99811012, 0.99900238, 0.49316194],
+                             [- 6.27268824, -0.00061844, 0.00037897, 7.27206980, 0.99811049, 0.99900258, 0.49316199],
+                             [- 6.27268854, -0.00061832, 0.00037890, 7.27207022, 0.99811087, 0.99900278, 0.49316201],
+                             [- 6.27268883, -0.00061820, 0.00037882, 7.27207064, 0.99811125, 0.99900298, 0.49316207],
+                             [- 6.27268913, -0.00061807, 0.00037875, 7.27207106, 0.99811163, 0.99900318, 0.49316215],
+                             [- 6.27268942, -0.00061795, 0.00037867, 7.27207147, 0.99811200, 0.99900338, 0.49316215],
+                             [- 6.27268972, -0.00061783, 0.00037860, 7.27207189, 0.99811238, 0.99900358, 0.49316222],
+                             [- 6.27269001, -0.00061770, 0.00037852, 7.27207231, 0.99811276, 0.99900378, 0.49316225],
+                             [- 6.27269031, -0.00061758, 0.00037844, 7.27207273, 0.99811313, 0.99900398, 0.49316226],
+                             [- 6.27269060, -0.00061746, 0.00037837, 7.27207315, 0.99811351, 0.99900418, 0.49316232],
+                             [- 6.27269090, -0.00061733, 0.00037829, 7.27207356, 0.99811389, 0.99900437, 0.49316241],
+                             [- 6.27269119, -0.00061721, 0.00037822, 7.27207398, 0.99811426, 0.99900457, 0.49316240],
+                             [- 6.27269149, -0.00061709, 0.00037814, 7.27207440, 0.99811464, 0.99900477, 0.49316244],
+                             [- 6.27269178, -0.00061696, 0.00037807, 7.27207482, 0.99811502, 0.99900497, 0.49316250],
+                             [- 6.27269208, -0.00061684, 0.00037799, 7.27207523, 0.99811539, 0.99900517, 0.49316255],
+                             [- 6.27269237, -0.00061672, 0.00037792, 7.27207565, 0.99811577, 0.99900537, 0.49316260],
+                             [- 6.27269266, -0.00061660, 0.00037784, 7.27207607, 0.99811614, 0.99900556, 0.49316268],
+                             [- 6.27269296, -0.00061647, 0.00037777, 7.27207648, 0.99811652, 0.99900576, 0.49316264],
+                             [- 6.27269325, -0.00061635, 0.00037769, 7.27207690, 0.99811689, 0.99900596, 0.49316274],
+                             [- 6.27269354, -0.00061623, 0.00037762, 7.27207732, 0.99811727, 0.99900616, 0.49316275],
+                             [- 6.27269384, -0.00061610, 0.00037754, 7.27207773, 0.99811764, 0.99900636, 0.49316280],
+                             [- 6.27269413, -0.00061598, 0.00037746, 7.27207815, 0.99811802, 0.99900655, 0.49316280],
+                             [- 6.27269442, -0.00061586, 0.00037739, 7.27207857, 0.99811839, 0.99900675, 0.49316288],
+                             [- 6.27269472, -0.00061574, 0.00037731, 7.27207898, 0.99811877, 0.99900695, 0.49316293],
+                             [- 6.27269501, -0.00061561, 0.00037724, 7.27207940, 0.99811914, 0.99900715, 0.49316299],
+                             [- 6.27269530, -0.00061549, 0.00037716, 7.27207981, 0.99811952, 0.99900734, 0.49316305],
+                             [- 6.27269560, -0.00061537, 0.00037709, 7.27208023, 0.99811989, 0.99900754, 0.49316305],
+                             [- 6.27269589, -0.00061525, 0.00037701, 7.27208064, 0.99812026, 0.99900774, 0.49316309],
+                             [- 6.27269618, -0.00061512, 0.00037694, 7.27208106, 0.99812064, 0.99900794, 0.49316319],
+                             [- 6.27269647, -0.00061500, 0.00037686, 7.27208147, 0.99812101, 0.99900813, 0.49316320],
+                             [- 6.27269677, -0.00061488, 0.00037679, 7.27208189, 0.99812138, 0.99900833, 0.49316326],
+                             [- 6.27269706, -0.00061476, 0.00037671, 7.27208230, 0.99812176, 0.99900853, 0.49316331],
+                             [- 6.27269735, -0.00061464, 0.00037664, 7.27208271, 0.99812213, 0.99900872, 0.49316334],
+                             [- 6.27269764, -0.00061451, 0.00037656, 7.27208313, 0.99812250, 0.99900892, 0.49316337],
+                             [- 6.27269793, -0.00061439, 0.00037649, 7.27208354, 0.99812288, 0.99900912, 0.49316343],
+                             [- 6.27269823, -0.00061427, 0.00037642, 7.27208396, 0.99812325, 0.99900931, 0.49316350],
+                             [- 6.27269852, -0.00061415, 0.00037634, 7.27208437, 0.99812362, 0.99900951, 0.49316348],
+                             [- 6.27269881, -0.00061403, 0.00037627, 7.27208478, 0.99812399, 0.99900971, 0.49316356],
+                             [- 6.27269910, -0.00061390, 0.00037619, 7.27208520, 0.99812437, 0.99900990, 0.49316359],
+                             [- 6.27269939, -0.00061378, 0.00037612, 7.27208561, 0.99812474, 0.99901010, 0.49316364],
+                             [- 6.27269968, -0.00061366, 0.00037604, 7.27208602, 0.99812511, 0.99901030, 0.49316368],
+                             [- 6.27269997, -0.00061354, 0.00037597, 7.27208643, 0.99812548, 0.99901049, 0.49316372],
+                             [- 6.27270027, -0.00061342, 0.00037589, 7.27208685, 0.99812585, 0.99901069, 0.49316379],
+                             [- 6.27270056, -0.00061330, 0.00037582, 7.27208726, 0.99812623, 0.99901089, 0.49316380],
+                             [- 6.27270085, -0.00061318, 0.00037574, 7.27208767, 0.99812660, 0.99901108, 0.49316383],
+                             [- 6.27270114, -0.00061305, 0.00037567, 7.27208808, 0.99812697, 0.99901128, 0.49316392],
+                             [- 6.27270143, -0.00061293, 0.00037559, 7.27208850, 0.99812734, 0.99901147, 0.49316393],
+                             [- 6.27270172, -0.00061281, 0.00037552, 7.27208891, 0.99812771, 0.99901167, 0.49316398],
+                             [- 6.27270201, -0.00061269, 0.00037545, 7.27208932, 0.99812808, 0.99901186, 0.49316403],
+                             [- 6.27270230, -0.00061257, 0.00037537, 7.27208973, 0.99812845, 0.99901206, 0.49316407],
+                             [- 6.27270259, -0.00061245, 0.00037530, 7.27209014, 0.99812882, 0.99901226, 0.49316411],
+                             [- 6.27270288, -0.00061233, 0.00037522, 7.27209055, 0.99812919, 0.99901245, 0.49316419],
+                             [- 6.27270317, -0.00061221, 0.00037515, 7.27209096, 0.99812956, 0.99901265, 0.49316420],
+                             [- 6.27270346, -0.00061208, 0.00037507, 7.27209137, 0.99812993, 0.99901284, 0.49316424],
+                             [- 6.27270375, -0.00061196, 0.00037500, 7.27209178, 0.99813030, 0.99901304, 0.49316431],
+                             [- 6.27270404, -0.00061184, 0.00037493, 7.27209219, 0.99813067, 0.99901323, 0.49316432],
+                             [- 6.27270433, -0.00061172, 0.00037485, 7.27209260, 0.99813104, 0.99901343, 0.49316435],
+                             [- 6.27270462, -0.00061160, 0.00037478, 7.27209301, 0.99813141, 0.99901362, 0.49316437],
+                             [- 6.27270490, -0.00061148, 0.00037470, 7.27209342, 0.99813178, 0.99901382, 0.49316447],
+                             [- 6.27270519, -0.00061136, 0.00037463, 7.27209383, 0.99813215, 0.99901401, 0.49316452],
+                             [- 6.27270548, -0.00061124, 0.00037456, 7.27209424, 0.99813252, 0.99901421, 0.49316453],
+                             [- 6.27270577, -0.00061112, 0.00037448, 7.27209465, 0.99813289, 0.99901440, 0.49316460],
+                             [- 6.27270606, -0.00061100, 0.00037441, 7.27209506, 0.99813326, 0.99901460, 0.49316462],
+                             [- 6.27270635, -0.00061088, 0.00037433, 7.27209547, 0.99813362, 0.99901479, 0.49316468],
+                             [- 6.27270664, -0.00061076, 0.00037426, 7.27209588, 0.99813399, 0.99901498, 0.49316472],
+                             [- 6.27270692, -0.00061064, 0.00037419, 7.27209629, 0.99813436, 0.99901518, 0.49316476],
+                             [- 6.27270721, -0.00061051, 0.00037411, 7.27209670, 0.99813473, 0.99901537, 0.49316483],
+                             [- 6.27270750, -0.00061039, 0.00037404, 7.27209711, 0.99813510, 0.99901557, 0.49316482],
+                             [- 6.27270779, -0.00061027, 0.00037396, 7.27209751, 0.99813547, 0.99901576, 0.49316493],
+                             [- 6.27270808, -0.00061015, 0.00037389, 7.27209792, 0.99813583, 0.99901596, 0.49316495],
+                             [- 6.27270836, -0.00061003, 0.00037382, 7.27209833, 0.99813620, 0.99901615, 0.49316498],
+                             [- 6.27270865, -0.00060991, 0.00037374, 7.27209874, 0.99813657, 0.99901634, 0.49316501],
+                             [- 6.27270894, -0.00060979, 0.00037367, 7.27209915, 0.99813694, 0.99901654, 0.49316504],
+                             [- 6.27270923, -0.00060967, 0.00037360, 7.27209955, 0.99813730, 0.99901673, 0.49316509],
+                             [- 6.27270951, -0.00060955, 0.00037352, 7.27209996, 0.99813767, 0.99901692, 0.49316516],
+                             [- 6.27270980, -0.00060943, 0.00037345, 7.27210037, 0.99813804, 0.99901712, 0.49316521],
+                             [- 6.27271009, -0.00060931, 0.00037338, 7.27210078, 0.99813840, 0.99901731, 0.49316522],
+                             [- 6.27271038, -0.00060919, 0.00037330, 7.27210118, 0.99813877, 0.99901751, 0.49316529],
+                             [- 6.27271066, -0.00060907, 0.00037323, 7.27210159, 0.99813914, 0.99901770, 0.49316533],
+                             [- 6.27271095, -0.00060895, 0.00037315, 7.27210200, 0.99813950, 0.99901789, 0.49316538],
+                             [- 6.27271124, -0.00060883, 0.00037308, 7.27210240, 0.99813987, 0.99901808, 0.49316545],
+                             [- 6.27271152, -0.00060871, 0.00037301, 7.27210281, 0.99814023, 0.99901828, 0.49316550],
+                             [- 6.27271181, -0.00060859, 0.00037293, 7.27210321, 0.99814060, 0.99901847, 0.49316550],
+                             [- 6.27271209, -0.00060847, 0.00037286, 7.27210362, 0.99814097, 0.99901866, 0.49316554],
+                             [- 6.27271238, -0.00060836, 0.00037279, 7.27210403, 0.99814133, 0.99901886, 0.49316555],
+                             [- 6.27271267, -0.00060824, 0.00037271, 7.27210443, 0.99814170, 0.99901905, 0.49316564],
+                             [- 6.27271295, -0.00060812, 0.00037264, 7.27210484, 0.99814206, 0.99901924, 0.49316569],
+                             [- 6.27271324, -0.00060800, 0.00037257, 7.27210524, 0.99814243, 0.99901944, 0.49316569],
+                             [- 6.27271352, -0.00060788, 0.00037249, 7.27210565, 0.99814279, 0.99901963, 0.49316572],
+                             [- 6.27271381, -0.00060776, 0.00037242, 7.27210605, 0.99814316, 0.99901982, 0.49316582],
+                             [- 6.27271410, -0.00060764, 0.00037235, 7.27210646, 0.99814352, 0.99902001, 0.49316585],
+                             [- 6.27271438, -0.00060752, 0.00037228, 7.27210686, 0.99814389, 0.99902021, 0.49316587],
+                             [- 6.27271467, -0.00060740, 0.00037220, 7.27210727, 0.99814425, 0.99902040, 0.49316592],
+                             [- 6.27271495, -0.00060728, 0.00037213, 7.27210767, 0.99814461, 0.99902059, 0.49316598],
+                             [- 6.27271524, -0.00060716, 0.00037206, 7.27210807, 0.99814498, 0.99902078, 0.49316599],
+                             [- 6.27271552, -0.00060704, 0.00037198, 7.27210848, 0.99814534, 0.99902097, 0.49316604],
+                             [- 6.27271581, -0.00060692, 0.00037191, 7.27210888, 0.99814571, 0.99902117, 0.49316608],
+                             [- 6.27271609, -0.00060680, 0.00037184, 7.27210929, 0.99814607, 0.99902136, 0.49316611],
+                             [- 6.27271637, -0.00060669, 0.00037176, 7.27210969, 0.99814643, 0.99902155, 0.49316616],
+                             [- 6.27271666, -0.00060657, 0.00037169, 7.27211009, 0.99814680, 0.99902174, 0.49316618],
+                             [- 6.27271694, -0.00060645, 0.00037162, 7.27211050, 0.99814716, 0.99902193, 0.49316624],
+                             [- 6.27271723, -0.00060633, 0.00037155, 7.27211090, 0.99814752, 0.99902213, 0.49316630],
+                             [- 6.27271751, -0.00060621, 0.00037147, 7.27211130, 0.99814789, 0.99902232, 0.49316633],
+                             [- 6.27271780, -0.00060609, 0.00037140, 7.27211170, 0.99814825, 0.99902251, 0.49316640],
+                             [- 6.27271808, -0.00060597, 0.00037133, 7.27211211, 0.99814861, 0.99902270, 0.49316642],
+                             [- 6.27271836, -0.00060585, 0.00037125, 7.27211251, 0.99814897, 0.99902289, 0.49316649],
+                             [- 6.27271865, -0.00060574, 0.00037118, 7.27211291, 0.99814934, 0.99902308, 0.49316653],
+                             [- 6.27271893, -0.00060562, 0.00037111, 7.27211331, 0.99814970, 0.99902327, 0.49316657],
+                             [- 6.27271921, -0.00060550, 0.00037104, 7.27211371, 0.99815006, 0.99902346, 0.49316659],
+                             [- 6.27271950, -0.00060538, 0.00037096, 7.27211412, 0.99815042, 0.99902366, 0.49316664],
+                             [- 6.27271978, -0.00060526, 0.00037089, 7.27211452, 0.99815079, 0.99902385, 0.49316670],
+                             [- 6.27272006, -0.00060514, 0.00037082, 7.27211492, 0.99815115, 0.99902404, 0.49316670],
+                             [- 6.27272035, -0.00060503, 0.00037075, 7.27211532, 0.99815151, 0.99902423, 0.49316673],
+                             [- 6.27272063, -0.00060491, 0.00037067, 7.27211572, 0.99815187, 0.99902442, 0.49316679],
+                             [- 6.27272091, -0.00060479, 0.00037060, 7.27211612, 0.99815223, 0.99902461, 0.49316685],
+                             [- 6.27272120, -0.00060467, 0.00037053, 7.27211652, 0.99815259, 0.99902480, 0.49316688],
+                             [- 6.27272148, -0.00060455, 0.00037046, 7.27211692, 0.99815295, 0.99902499, 0.49316692],
+                             [- 6.27272176, -0.00060444, 0.00037038, 7.27211732, 0.99815331, 0.99902518, 0.49316699],
+                             [- 6.27272204, -0.00060432, 0.00037031, 7.27211773, 0.99815367, 0.99902537, 0.49316698],
+                             [- 6.27272232, -0.00060420, 0.00037024, 7.27211813, 0.99815404, 0.99902556, 0.49316707],
+                             [- 6.27272261, -0.00060408, 0.00037017, 7.27211853, 0.99815440, 0.99902575, 0.49316710],
+                             [- 6.27272289, -0.00060396, 0.00037009, 7.27211893, 0.99815476, 0.99902594, 0.49316715],
+                             [- 6.27272317, -0.00060385, 0.00037002, 7.27211933, 0.99815512, 0.99902613, 0.49316718],
+                             [- 6.27272345, -0.00060373, 0.00036995, 7.27211972, 0.99815548, 0.99902632, 0.49316722],
+                             [- 6.27272373, -0.00060361, 0.00036988, 7.27212012, 0.99815584, 0.99902651, 0.49316726],
+                             [- 6.27272402, -0.00060349, 0.00036981, 7.27212052, 0.99815620, 0.99902670, 0.49316729],
+                             [- 6.27272430, -0.00060337, 0.00036973, 7.27212092, 0.99815656, 0.99902689, 0.49316735],
+                             [- 6.27272458, -0.00060326, 0.00036966, 7.27212132, 0.99815691, 0.99902708, 0.49316741],
+                             [- 6.27272486, -0.00060314, 0.00036959, 7.27212172, 0.99815727, 0.99902727, 0.49316741],
+                             [- 6.27272514, -0.00060302, 0.00036952, 7.27212212, 0.99815763, 0.99902746, 0.49316748],
+                             [- 6.27272542, -0.00060290, 0.00036945, 7.27212252, 0.99815799, 0.99902765, 0.49316753],
+                             [- 6.27272570, -0.00060279, 0.00036937, 7.27212292, 0.99815835, 0.99902784, 0.49316756],
+                             [- 6.27272598, -0.00060267, 0.00036930, 7.27212331, 0.99815871, 0.99902803, 0.49316761],
+                             [- 6.27272626, -0.00060255, 0.00036923, 7.27212371, 0.99815907, 0.99902822, 0.49316767],
+                             [- 6.27272654, -0.00060244, 0.00036916, 7.27212411, 0.99815943, 0.99902841, 0.49316768],
+                             [- 6.27272683, -0.00060232, 0.00036909, 7.27212451, 0.99815978, 0.99902860, 0.49316772],
+                             [- 6.27272711, -0.00060220, 0.00036901, 7.27212490, 0.99816014, 0.99902879, 0.49316778],
+                             [- 6.27272739, -0.00060208, 0.00036894, 7.27212530, 0.99816050, 0.99902897, 0.49316778],
+                             [- 6.27272767, -0.00060197, 0.00036887, 7.27212570, 0.99816086, 0.99902916, 0.49316783],
+                             [- 6.27272795, -0.00060185, 0.00036880, 7.27212610, 0.99816122, 0.99902935, 0.49316788],
+                             [- 6.27272823, -0.00060173, 0.00036873, 7.27212649, 0.99816157, 0.99902954, 0.49316787],
+                             [- 6.27272851, -0.00060162, 0.00036865, 7.27212689, 0.99816193, 0.99902973, 0.49316799],
+                             [- 6.27272879, -0.00060150, 0.00036858, 7.27212729, 0.99816229, 0.99902992, 0.49316801],
+                             [- 6.27272907, -0.00060138, 0.00036851, 7.27212768, 0.99816265, 0.99903011, 0.49316805],
+                             [- 6.27272934, -0.00060127, 0.00036844, 7.27212808, 0.99816300, 0.99903029, 0.49316810],
+                             [- 6.27272962, -0.00060115, 0.00036837, 7.27212848, 0.99816336, 0.99903048, 0.49316812],
+                             [- 6.27272990, -0.00060103, 0.00036830, 7.27212887, 0.99816372, 0.99903067, 0.49316815],
+                             [- 6.27273018, -0.00060092, 0.00036823, 7.27212927, 0.99816407, 0.99903086, 0.49316824],
+                             [- 6.27273046, -0.00060080, 0.00036815, 7.27212966, 0.99816443, 0.99903105, 0.49316825],
+                             [- 6.27273074, -0.00060068, 0.00036808, 7.27213006, 0.99816479, 0.99903124, 0.49316832],
+                             [- 6.27273102, -0.00060057, 0.00036801, 7.27213045, 0.99816514, 0.99903142, 0.49316835],
+                             [- 6.27273130, -0.00060045, 0.00036794, 7.27213085, 0.99816550, 0.99903161, 0.49316839],
+                             [- 6.27273158, -0.00060033, 0.00036787, 7.27213124, 0.99816585, 0.99903180, 0.49316844],
+                             [- 6.27273186, -0.00060022, 0.00036780, 7.27213164, 0.99816621, 0.99903199, 0.49316848],
+                             [- 6.27273213, -0.00060010, 0.00036773, 7.27213203, 0.99816657, 0.99903218, 0.49316850],
+                             [- 6.27273241, -0.00059998, 0.00036765, 7.27213243, 0.99816692, 0.99903236, 0.49316856],
+                             [- 6.27273269, -0.00059987, 0.00036758, 7.27213282, 0.99816728, 0.99903255, 0.49316861],
+                             [- 6.27273297, -0.00059975, 0.00036751, 7.27213322, 0.99816763, 0.99903274, 0.49316864],
+                             [- 6.27273325, -0.00059963, 0.00036744, 7.27213361, 0.99816799, 0.99903293, 0.49316869],
+                             [- 6.27273352, -0.00059952, 0.00036737, 7.27213401, 0.99816834, 0.99903311, 0.49316872],
+                             [- 6.27273380, -0.00059940, 0.00036730, 7.27213440, 0.99816870, 0.99903330, 0.49316876],
+                             [- 6.27273408, -0.00059929, 0.00036723, 7.27213479, 0.99816905, 0.99903349, 0.49316877],
+                             [- 6.27273436, -0.00059917, 0.00036716, 7.27213519, 0.99816941, 0.99903367, 0.49316887],
+                             [- 6.27273463, -0.00059905, 0.00036708, 7.27213558, 0.99816976, 0.99903386, 0.49316888],
+                             [- 6.27273491, -0.00059894, 0.00036701, 7.27213597, 0.99817012, 0.99903405, 0.49316895],
+                             [- 6.27273519, -0.00059882, 0.00036694, 7.27213637, 0.99817047, 0.99903424, 0.49316897],
+                             [- 6.27273547, -0.00059871, 0.00036687, 7.27213676, 0.99817082, 0.99903442, 0.49316901],
+                             [- 6.27273574, -0.00059859, 0.00036680, 7.27213715, 0.99817118, 0.99903461, 0.49316906],
+                             [- 6.27273602, -0.00059848, 0.00036673, 7.27213754, 0.99817153, 0.99903480, 0.49316911],
+                             [- 6.27273630, -0.00059836, 0.00036666, 7.27213794, 0.99817189, 0.99903498, 0.49316913],
+                             [- 6.27273657, -0.00059824, 0.00036659, 7.27213833, 0.99817224, 0.99903517, 0.49316914],
+                             [- 6.27273685, -0.00059813, 0.00036652, 7.27213872, 0.99817259, 0.99903535, 0.49316924],
+                             [- 6.27273713, -0.00059801, 0.00036645, 7.27213911, 0.99817295, 0.99903554, 0.49316926],
+                             [- 6.27273740, -0.00059790, 0.00036637, 7.27213951, 0.99817330, 0.99903573, 0.49316930],
+                             [- 6.27273768, -0.00059778, 0.00036630, 7.27213990, 0.99817365, 0.99903591, 0.49316938],
+                             [- 6.27273796, -0.00059767, 0.00036623, 7.27214029, 0.99817400, 0.99903610, 0.49316938],
+                             [- 6.27273823, -0.00059755, 0.00036616, 7.27214068, 0.99817436, 0.99903629, 0.49316938],
+                             [- 6.27273851, -0.00059744, 0.00036609, 7.27214107, 0.99817471, 0.99903647, 0.49316946],
+                             [- 6.27273878, -0.00059732, 0.00036602, 7.27214146, 0.99817506, 0.99903666, 0.49316948],
+                             [- 6.27273906, -0.00059721, 0.00036595, 7.27214185, 0.99817541, 0.99903684, 0.49316954],
+                             [- 6.27273933, -0.00059709, 0.00036588, 7.27214224, 0.99817577, 0.99903703, 0.49316961],
+                             [- 6.27273961, -0.00059698, 0.00036581, 7.27214263, 0.99817612, 0.99903722, 0.49316964],
+                             [- 6.27273989, -0.00059686, 0.00036574, 7.27214303, 0.99817647, 0.99903740, 0.49316966],
+                             [- 6.27274016, -0.00059674, 0.00036567, 7.27214342, 0.99817682, 0.99903759, 0.49316973],
+                             [- 6.27274044, -0.00059663, 0.00036560, 7.27214381, 0.99817717, 0.99903777, 0.49316976],
+                             [- 6.27274071, -0.00059651, 0.00036553, 7.27214420, 0.99817752, 0.99903796, 0.49316978],
+                             [- 6.27274099, -0.00059640, 0.00036546, 7.27214459, 0.99817788, 0.99903814, 0.49316985],
+                             [- 6.27274126, -0.00059629, 0.00036539, 7.27214498, 0.99817823, 0.99903833, 0.49316985],
+                             [- 6.27274154, -0.00059617, 0.00036532, 7.27214537, 0.99817858, 0.99903851, 0.49316990],
+                             [- 6.27274181, -0.00059606, 0.00036525, 7.27214575, 0.99817893, 0.99903870, 0.49316996],
+                             [- 6.27274208, -0.00059594, 0.00036517, 7.27214614, 0.99817928, 0.99903888, 0.49317001],
+                             [- 6.27274236, -0.00059583, 0.00036510, 7.27214653, 0.99817963, 0.99903907, 0.49317000],
+                             [- 6.27274263, -0.00059571, 0.00036503, 7.27214692, 0.99817998, 0.99903925, 0.49317004],
+                             [- 6.27274291, -0.00059560, 0.00036496, 7.27214731, 0.99818033, 0.99903944, 0.49317008],
+                             [- 6.27274318, -0.00059548, 0.00036489, 7.27214770, 0.99818068, 0.99903962, 0.49317014],
+                             [- 6.27274346, -0.00059537, 0.00036482, 7.27214809, 0.99818103, 0.99903981, 0.49317022],
+                             [- 6.27274373, -0.00059525, 0.00036475, 7.27214848, 0.99818138, 0.99903999, 0.49317024],
+                             [- 6.27274400, -0.00059514, 0.00036468, 7.27214886, 0.99818173, 0.99904018, 0.49317029],
+                             [- 6.27274428, -0.00059502, 0.00036461, 7.27214925, 0.99818208, 0.99904036, 0.49317032],
+                             [- 6.27274455, -0.00059491, 0.00036454, 7.27214964, 0.99818243, 0.99904055, 0.49317037],
+                             [- 6.27274482, -0.00059480, 0.00036447, 7.27215003, 0.99818278, 0.99904073, 0.49317042],
+                             [- 6.27274510, -0.00059468, 0.00036440, 7.27215042, 0.99818313, 0.99904092, 0.49317048],
+                             [- 6.27274537, -0.00059457, 0.00036433, 7.27215080, 0.99818348, 0.99904110, 0.49317047],
+                             [- 6.27274564, -0.00059445, 0.00036426, 7.27215119, 0.99818383, 0.99904128, 0.49317056],
+                             [- 6.27274592, -0.00059434, 0.00036419, 7.27215158, 0.99818418, 0.99904147, 0.49317055],
+                             [- 6.27274619, -0.00059422, 0.00036412, 7.27215197, 0.99818452, 0.99904165, 0.49317062],
+                             [- 6.27274646, -0.00059411, 0.00036405, 7.27215235, 0.99818487, 0.99904184, 0.49317064],
+                             [- 6.27274674, -0.00059400, 0.00036398, 7.27215274, 0.99818522, 0.99904202, 0.49317066],
+                             [- 6.27274701, -0.00059388, 0.00036391, 7.27215313, 0.99818557, 0.99904220, 0.49317073],
+                             [- 6.27274728, -0.00059377, 0.00036384, 7.27215351, 0.99818592, 0.99904239, 0.49317076],
+                             [- 6.27274755, -0.00059365, 0.00036377, 7.27215390, 0.99818627, 0.99904257, 0.49317082],
+                             [- 6.27274783, -0.00059354, 0.00036370, 7.27215428, 0.99818661, 0.99904276, 0.49317086],
+                             [- 6.27274810, -0.00059343, 0.00036363, 7.27215467, 0.99818696, 0.99904294, 0.49317091],
+                             [- 6.27274837, -0.00059331, 0.00036356, 7.27215506, 0.99818731, 0.99904312, 0.49317096],
+                             [- 6.27274864, -0.00059320, 0.00036349, 7.27215544, 0.99818766, 0.99904331, 0.49317092],
+                             [- 6.27274891, -0.00059309, 0.00036342, 7.27215583, 0.99818800, 0.99904349, 0.49317097],
+                             [- 6.27274919, -0.00059297, 0.00036335, 7.27215621, 0.99818835, 0.99904367, 0.49317108],
+                             [- 6.27274946, -0.00059286, 0.00036329, 7.27215660, 0.99818870, 0.99904386, 0.49317108],
+                             [- 6.27274973, -0.00059275, 0.00036322, 7.27215698, 0.99818905, 0.99904404, 0.49317113],
+                             [- 6.27275000, -0.00059263, 0.00036315, 7.27215737, 0.99818939, 0.99904422, 0.49317119],
+                             [- 6.27275027, -0.00059252, 0.00036308, 7.27215775, 0.99818974, 0.99904440, 0.49317125],
+                             [- 6.27275054, -0.00059241, 0.00036301, 7.27215814, 0.99819009, 0.99904459, 0.49317124],
+                             [- 6.27275081, -0.00059229, 0.00036294, 7.27215852, 0.99819043, 0.99904477, 0.49317130],
+                             [- 6.27275109, -0.00059218, 0.00036287, 7.27215891, 0.99819078, 0.99904495, 0.49317131],
+                             [- 6.27275136, -0.00059207, 0.00036280, 7.27215929, 0.99819113, 0.99904514, 0.49317136],
+                             [- 6.27275163, -0.00059195, 0.00036273, 7.27215968, 0.99819147, 0.99904532, 0.49317137],
+                             [- 6.27275190, -0.00059184, 0.00036266, 7.27216006, 0.99819182, 0.99904550, 0.49317148],
+                             [- 6.27275217, -0.00059173, 0.00036259, 7.27216044, 0.99819216, 0.99904568, 0.49317152],
+                             [- 6.27275244, -0.00059161, 0.00036252, 7.27216083, 0.99819251, 0.99904587, 0.49317157],
+                             [- 6.27275271, -0.00059150, 0.00036245, 7.27216121, 0.99819285, 0.99904605, 0.49317157],
+                             [- 6.27275298, -0.00059139, 0.00036238, 7.27216159, 0.99819320, 0.99904623, 0.49317163],
+                             [- 6.27275325, -0.00059127, 0.00036231, 7.27216198, 0.99819355, 0.99904641, 0.49317168],
+                             [- 6.27275352, -0.00059116, 0.00036224, 7.27216236, 0.99819389, 0.99904660, 0.49317166],
+                             [- 6.27275379, -0.00059105, 0.00036217, 7.27216274, 0.99819424, 0.99904678, 0.49317177],
+                             [- 6.27275406, -0.00059094, 0.00036211, 7.27216313, 0.99819458, 0.99904696, 0.49317179],
+                             [- 6.27275433, -0.00059082, 0.00036204, 7.27216351, 0.99819493, 0.99904714, 0.49317185],
+                             [- 6.27275460, -0.00059071, 0.00036197, 7.27216389, 0.99819527, 0.99904732, 0.49317189],
+                             [- 6.27275487, -0.00059060, 0.00036190, 7.27216427, 0.99819561, 0.99904751, 0.49317188],
+                             [- 6.27275514, -0.00059048, 0.00036183, 7.27216466, 0.99819596, 0.99904769, 0.49317197],
+                             [- 6.27275541, -0.00059037, 0.00036176, 7.27216504, 0.99819630, 0.99904787, 0.49317199],
+                             [- 6.27275568, -0.00059026, 0.00036169, 7.27216542, 0.99819665, 0.99904805, 0.49317206],
+                             [- 6.27275595, -0.00059015, 0.00036162, 7.27216580, 0.99819699, 0.99904823, 0.49317206],
+                             [- 6.27275622, -0.00059003, 0.00036155, 7.27216618, 0.99819733, 0.99904841, 0.49317210],
+                             [- 6.27275649, -0.00058992, 0.00036148, 7.27216656, 0.99819768, 0.99904859, 0.49317215],
+                             [- 6.27275675, -0.00058981, 0.00036141, 7.27216695, 0.99819802, 0.99904878, 0.49317218],
+                             [- 6.27275702, -0.00058970, 0.00036135, 7.27216733, 0.99819837, 0.99904896, 0.49317220],
+                             [- 6.27275729, -0.00058958, 0.00036128, 7.27216771, 0.99819871, 0.99904914, 0.49317224],
+                             [- 6.27275756, -0.00058947, 0.00036121, 7.27216809, 0.99819905, 0.99904932, 0.49317231],
+                             [- 6.27275783, -0.00058936, 0.00036114, 7.27216847, 0.99819939, 0.99904950, 0.49317228],
+                             [- 6.27275810, -0.00058925, 0.00036107, 7.27216885, 0.99819974, 0.99904968, 0.49317238],
+                             [- 6.27275837, -0.00058914, 0.00036100, 7.27216923, 0.99820008, 0.99904986, 0.49317241],
+                             [- 6.27275863, -0.00058902, 0.00036093, 7.27216961, 0.99820042, 0.99905004, 0.49317245],
+                             [- 6.27275890, -0.00058891, 0.00036086, 7.27216999, 0.99820077, 0.99905022, 0.49317253],
+                             [- 6.27275917, -0.00058880, 0.00036080, 7.27217037, 0.99820111, 0.99905040, 0.49317256],
+                             [- 6.27275944, -0.00058869, 0.00036073, 7.27217075, 0.99820145, 0.99905059, 0.49317260],
+                             [- 6.27275971, -0.00058858, 0.00036066, 7.27217113, 0.99820179, 0.99905077, 0.49317263],
+                             [- 6.27275997, -0.00058846, 0.00036059, 7.27217151, 0.99820213, 0.99905095, 0.49317270],
+                             [- 6.27276024, -0.00058835, 0.00036052, 7.27217189, 0.99820248, 0.99905113, 0.49317272],
+                             [- 6.27276051, -0.00058824, 0.00036045, 7.27217227, 0.99820282, 0.99905131, 0.49317275],
+                             [- 6.27276078, -0.00058813, 0.00036038, 7.27217265, 0.99820316, 0.99905149, 0.49317277],
+                             [- 6.27276104, -0.00058802, 0.00036032, 7.27217303, 0.99820350, 0.99905167, 0.49317281],
+                             [- 6.27276131, -0.00058790, 0.00036025, 7.27217341, 0.99820384, 0.99905185, 0.49317287],
+                             [- 6.27276158, -0.00058779, 0.00036018, 7.27217378, 0.99820418, 0.99905203, 0.49317289],
+                             [- 6.27276184, -0.00058768, 0.00036011, 7.27217416, 0.99820453, 0.99905221, 0.49317299],
+                             [- 6.27276211, -0.00058757, 0.00036004, 7.27217454, 0.99820487, 0.99905239, 0.49317296],
+                             [- 6.27276238, -0.00058746, 0.00035997, 7.27217492, 0.99820521, 0.99905257, 0.49317302],
+                             [- 6.27276265, -0.00058735, 0.00035991, 7.27217530, 0.99820555, 0.99905275, 0.49317307],
+                             [- 6.27276291, -0.00058724, 0.00035984, 7.27217568, 0.99820589, 0.99905293, 0.49317310],
+                             [- 6.27276318, -0.00058712, 0.00035977, 7.27217605, 0.99820623, 0.99905311, 0.49317316],
+                             [- 6.27276344, -0.00058701, 0.00035970, 7.27217643, 0.99820657, 0.99905329, 0.49317319],
+                             [- 6.27276371, -0.00058690, 0.00035963, 7.27217681, 0.99820691, 0.99905347, 0.49317321],
+                             [- 6.27276398, -0.00058679, 0.00035956, 7.27217719, 0.99820725, 0.99905365, 0.49317328],
+                             [- 6.27276424, -0.00058668, 0.00035950, 7.27217756, 0.99820759, 0.99905383, 0.49317329],
+                             [- 6.27276451, -0.00058657, 0.00035943, 7.27217794, 0.99820793, 0.99905400, 0.49317335],
+                             [- 6.27276478, -0.00058646, 0.00035936, 7.27217832, 0.99820827, 0.99905418, 0.49317337],
+                             [- 6.27276504, -0.00058635, 0.00035929, 7.27217870, 0.99820861, 0.99905436, 0.49317339],
+                             [- 6.27276531, -0.00058623, 0.00035922, 7.27217907, 0.99820895, 0.99905454, 0.49317346],
+                             [- 6.27276557, -0.00058612, 0.00035916, 7.27217945, 0.99820929, 0.99905472, 0.49317350],
+                             [- 6.27276584, -0.00058601, 0.00035909, 7.27217982, 0.99820963, 0.99905490, 0.49317354],
+                             [- 6.27276610, -0.00058590, 0.00035902, 7.27218020, 0.99820997, 0.99905508, 0.49317358],
+                             [- 6.27276637, -0.00058579, 0.00035895, 7.27218058, 0.99821030, 0.99905526, 0.49317361],
+                             [- 6.27276663, -0.00058568, 0.00035888, 7.27218095, 0.99821064, 0.99905544, 0.49317361],
+                             [- 6.27276690, -0.00058557, 0.00035882, 7.27218133, 0.99821098, 0.99905562, 0.49317370],
+                             [- 6.27276716, -0.00058546, 0.00035875, 7.27218170, 0.99821132, 0.99905579, 0.49317372],
+                             [- 6.27276743, -0.00058535, 0.00035868, 7.27218208, 0.99821166, 0.99905597, 0.49317378],
+                             [- 6.27276769, -0.00058524, 0.00035861, 7.27218246, 0.99821200, 0.99905615, 0.49317376],
+                             [- 6.27276796, -0.00058513, 0.00035854, 7.27218283, 0.99821233, 0.99905633, 0.49317387],
+                             [- 6.27276822, -0.00058502, 0.00035848, 7.27218321, 0.99821267, 0.99905651, 0.49317387],
+                             [- 6.27276849, -0.00058491, 0.00035841, 7.27218358, 0.99821301, 0.99905669, 0.49317394],
+                             [- 6.27276875, -0.00058480, 0.00035834, 7.27218396, 0.99821335, 0.99905686, 0.49317397],
+                             [- 6.27276902, -0.00058468, 0.00035827, 7.27218433, 0.99821369, 0.99905704, 0.49317398],
+                             [- 6.27276928, -0.00058457, 0.00035820, 7.27218471, 0.99821402, 0.99905722, 0.49317402],
+                             [- 6.27276954, -0.00058446, 0.00035814, 7.27218508, 0.99821436, 0.99905740, 0.49317408],
+                             [- 6.27276981, -0.00058435, 0.00035807, 7.27218545, 0.99821470, 0.99905758, 0.49317410],
+                             [- 6.27277007, -0.00058424, 0.00035800, 7.27218583, 0.99821504, 0.99905775, 0.49317417],
+                             [- 6.27277034, -0.00058413, 0.00035793, 7.27218620, 0.99821537, 0.99905793, 0.49317422],
+                             [- 6.27277060, -0.00058402, 0.00035787, 7.27218658, 0.99821571, 0.99905811, 0.49317425],
+                             [- 6.27277086, -0.00058391, 0.00035780, 7.27218695, 0.99821605, 0.99905829, 0.49317429],
+                             [- 6.27277113, -0.00058380, 0.00035773, 7.27218732, 0.99821638, 0.99905847, 0.49317428],
+                             [- 6.27277139, -0.00058369, 0.00035766, 7.27218770, 0.99821672, 0.99905864, 0.49317437],
+                             [- 6.27277165, -0.00058358, 0.00035760, 7.27218807, 0.99821706, 0.99905882, 0.49317446],
+                             [- 6.27277192, -0.00058347, 0.00035753, 7.27218844, 0.99821739, 0.99905900, 0.49317445],
+                             [- 6.27277218, -0.00058336, 0.00035746, 7.27218882, 0.99821773, 0.99905918, 0.49317449],
+                             [- 6.27277244, -0.00058325, 0.00035739, 7.27218919, 0.99821806, 0.99905935, 0.49317453],
+                             [- 6.27277270, -0.00058314, 0.00035733, 7.27218956, 0.99821840, 0.99905953, 0.49317457],
+                             [- 6.27277297, -0.00058303, 0.00035726, 7.27218993, 0.99821874, 0.99905971, 0.49317458],
+                             [- 6.27277323, -0.00058292, 0.00035719, 7.27219031, 0.99821907, 0.99905988, 0.49317467],
+                             [- 6.27277349, -0.00058281, 0.00035712, 7.27219068, 0.99821941, 0.99906006, 0.49317464],
+                             [- 6.27277376, -0.00058270, 0.00035706, 7.27219105, 0.99821974, 0.99906024, 0.49317472],
+                             [- 6.27277402, -0.00058259, 0.00035699, 7.27219142, 0.99822008, 0.99906042, 0.49317476],
+                             [- 6.27277428, -0.00058248, 0.00035692, 7.27219180, 0.99822041, 0.99906059, 0.49317478],
+                             [- 6.27277454, -0.00058237, 0.00035686, 7.27219217, 0.99822075, 0.99906077, 0.49317481],
+                             [- 6.27277480, -0.00058227, 0.00035679, 7.27219254, 0.99822108, 0.99906095, 0.49317486],
+                             [- 6.27277507, -0.00058216, 0.00035672, 7.27219291, 0.99822142, 0.99906112, 0.49317492],
+                             [- 6.27277533, -0.00058205, 0.00035665, 7.27219328, 0.99822175, 0.99906130, 0.49317497],
+                             [- 6.27277559, -0.00058194, 0.00035659, 7.27219365, 0.99822209, 0.99906148, 0.49317500],
+                             [- 6.27277585, -0.00058183, 0.00035652, 7.27219402, 0.99822242, 0.99906165, 0.49317504],
+                             [- 6.27277611, -0.00058172, 0.00035645, 7.27219440, 0.99822275, 0.99906183, 0.49317502],
+                             [- 6.27277637, -0.00058161, 0.00035639, 7.27219477, 0.99822309, 0.99906200, 0.49317510],
+                             [- 6.27277664, -0.00058150, 0.00035632, 7.27219514, 0.99822342, 0.99906218, 0.49317515],
+                             [- 6.27277690, -0.00058139, 0.00035625, 7.27219551, 0.99822376, 0.99906236, 0.49317515],
+                             [- 6.27277716, -0.00058128, 0.00035619, 7.27219588, 0.99822409, 0.99906253, 0.49317527],
+                             [- 6.27277742, -0.00058117, 0.00035612, 7.27219625, 0.99822442, 0.99906271, 0.49317521],
+                             [- 6.27277768, -0.00058106, 0.00035605, 7.27219662, 0.99822476, 0.99906289, 0.49317533],
+                             [- 6.27277794, -0.00058095, 0.00035598, 7.27219699, 0.99822509, 0.99906306, 0.49317536],
+                             [- 6.27277820, -0.00058084, 0.00035592, 7.27219736, 0.99822542, 0.99906324, 0.49317532],
+                             [- 6.27277846, -0.00058074, 0.00035585, 7.27219773, 0.99822576, 0.99906341, 0.49317542],
+                             [- 6.27277872, -0.00058063, 0.00035578, 7.27219810, 0.99822609, 0.99906359, 0.49317544],
+                             [- 6.27277898, -0.00058052, 0.00035572, 7.27219847, 0.99822642, 0.99906376, 0.49317549],
+                             [- 6.27277924, -0.00058041, 0.00035565, 7.27219884, 0.99822675, 0.99906394, 0.49317552],
+                             [- 6.27277950, -0.00058030, 0.00035558, 7.27219920, 0.99822709, 0.99906412, 0.49317558],
+                             [- 6.27277977, -0.00058019, 0.00035552, 7.27219957, 0.99822742, 0.99906429, 0.49317562],
+                             [- 6.27278003, -0.00058008, 0.00035545, 7.27219994, 0.99822775, 0.99906447, 0.49317566],
+                             [- 6.27278029, -0.00057997, 0.00035538, 7.27220031, 0.99822808, 0.99906464, 0.49317568],
+                             [- 6.27278055, -0.00057987, 0.00035532, 7.27220068, 0.99822842, 0.99906482, 0.49317573],
+                             [- 6.27278080, -0.00057976, 0.00035525, 7.27220105, 0.99822875, 0.99906499, 0.49317574],
+                             [- 6.27278106, -0.00057965, 0.00035518, 7.27220142, 0.99822908, 0.99906517, 0.49317581],
+                             [- 6.27278132, -0.00057954, 0.00035512, 7.27220178, 0.99822941, 0.99906534, 0.49317584],
+                             [- 6.27278158, -0.00057943, 0.00035505, 7.27220215, 0.99822974, 0.99906552, 0.49317591],
+                             [- 6.27278184, -0.00057932, 0.00035498, 7.27220252, 0.99823008, 0.99906569, 0.49317591],
+                             [- 6.27278210, -0.00057921, 0.00035492, 7.27220289, 0.99823041, 0.99906587, 0.49317595],
+                             [- 6.27278236, -0.00057911, 0.00035485, 7.27220326, 0.99823074, 0.99906604, 0.49317597],
+                             [- 6.27278262, -0.00057900, 0.00035479, 7.27220362, 0.99823107, 0.99906622, 0.49317601],
+                             [- 6.27278288, -0.00057889, 0.00035472, 7.27220399, 0.99823140, 0.99906639, 0.49317609],
+                             [- 6.27278314, -0.00057878, 0.00035465, 7.27220436, 0.99823173, 0.99906657, 0.49317610],
+                             [- 6.27278340, -0.00057867, 0.00035459, 7.27220472, 0.99823206, 0.99906674, 0.49317615],
+                             [- 6.27278366, -0.00057857, 0.00035452, 7.27220509, 0.99823239, 0.99906691, 0.49317621],
+                             [- 6.27278392, -0.00057846, 0.00035445, 7.27220546, 0.99823272, 0.99906709, 0.49317622],
+                             [- 6.27278417, -0.00057835, 0.00035439, 7.27220582, 0.99823305, 0.99906726, 0.49317632],
+                             [- 6.27278443, -0.00057824, 0.00035432, 7.27220619, 0.99823338, 0.99906744, 0.49317629],
+                             [- 6.27278469, -0.00057813, 0.00035425, 7.27220656, 0.99823371, 0.99906761, 0.49317636],
+                             [- 6.27278495, -0.00057802, 0.00035419, 7.27220692, 0.99823404, 0.99906779, 0.49317638],
+                             [- 6.27278521, -0.00057792, 0.00035412, 7.27220729, 0.99823437, 0.99906796, 0.49317641],
+                             [- 6.27278547, -0.00057781, 0.00035406, 7.27220766, 0.99823470, 0.99906813, 0.49317644],
+                             [- 6.27278572, -0.00057770, 0.00035399, 7.27220802, 0.99823503, 0.99906831, 0.49317646],
+                             [- 6.27278598, -0.00057759, 0.00035392, 7.27220839, 0.99823536, 0.99906848, 0.49317651],
+                             [- 6.27278624, -0.00057749, 0.00035386, 7.27220875, 0.99823569, 0.99906866, 0.49317654],
+                             [- 6.27278650, -0.00057738, 0.00035379, 7.27220912, 0.99823602, 0.99906883, 0.49317660],
+                             [- 6.27278675, -0.00057727, 0.00035373, 7.27220948, 0.99823635, 0.99906900, 0.49317666],
+                             [- 6.27278701, -0.00057716, 0.00035366, 7.27220985, 0.99823668, 0.99906918, 0.49317668],
+                             [- 6.27278727, -0.00057706, 0.00035359, 7.27221021, 0.99823701, 0.99906935, 0.49317676],
+                             [- 6.27278753, -0.00057695, 0.00035353, 7.27221058, 0.99823734, 0.99906952, 0.49317676],
+                             [- 6.27278778, -0.00057684, 0.00035346, 7.27221094, 0.99823766, 0.99906970, 0.49317678],
+                             [- 6.27278804, -0.00057673, 0.00035340, 7.27221131, 0.99823799, 0.99906987, 0.49317683],
+                             [- 6.27278830, -0.00057663, 0.00035333, 7.27221167, 0.99823832, 0.99907004, 0.49317687],
+                             [- 6.27278855, -0.00057652, 0.00035326, 7.27221204, 0.99823865, 0.99907022, 0.49317691],
+                             [- 6.27278881, -0.00057641, 0.00035320, 7.27221240, 0.99823898, 0.99907039, 0.49317697],
+                             [- 6.27278907, -0.00057630, 0.00035313, 7.27221277, 0.99823931, 0.99907056, 0.49317699],
+                             [- 6.27278933, -0.00057620, 0.00035307, 7.27221313, 0.99823963, 0.99907074, 0.49317702],
+                             [- 6.27278958, -0.00057609, 0.00035300, 7.27221349, 0.99823996, 0.99907091, 0.49317708],
+                             [- 6.27278984, -0.00057598, 0.00035294, 7.27221386, 0.99824029, 0.99907108, 0.49317710],
+                             [- 6.27279009, -0.00057587, 0.00035287, 7.27221422, 0.99824062, 0.99907126, 0.49317717],
+                             [- 6.27279035, -0.00057577, 0.00035280, 7.27221458, 0.99824094, 0.99907143, 0.49317720],
+                             [- 6.27279061, -0.00057566, 0.00035274, 7.27221495, 0.99824127, 0.99907160, 0.49317720],
+                             [- 6.27279086, -0.00057555, 0.00035267, 7.27221531, 0.99824160, 0.99907177, 0.49317727],
+                             [- 6.27279112, -0.00057545, 0.00035261, 7.27221567, 0.99824193, 0.99907195, 0.49317735],
+                             [- 6.27279137, -0.00057534, 0.00035254, 7.27221604, 0.99824225, 0.99907212, 0.49317732],
+                             [- 6.27279163, -0.00057523, 0.00035248, 7.27221640, 0.99824258, 0.99907229, 0.49317739],
+                             [- 6.27279189, -0.00057513, 0.00035241, 7.27221676, 0.99824291, 0.99907246, 0.49317738],
+                             [- 6.27279214, -0.00057502, 0.00035235, 7.27221712, 0.99824323, 0.99907264, 0.49317745],
+                             [- 6.27279240, -0.00057491, 0.00035228, 7.27221749, 0.99824356, 0.99907281, 0.49317748],
+                             [- 6.27279265, -0.00057480, 0.00035221, 7.27221785, 0.99824389, 0.99907298, 0.49317752],
+                             [- 6.27279291, -0.00057470, 0.00035215, 7.27221821, 0.99824421, 0.99907315, 0.49317757],
+                             [- 6.27279316, -0.00057459, 0.00035208, 7.27221857, 0.99824454, 0.99907332, 0.49317760],
+                             [- 6.27279342, -0.00057448, 0.00035202, 7.27221893, 0.99824486, 0.99907350, 0.49317764],
+                             [- 6.27279367, -0.00057438, 0.00035195, 7.27221930, 0.99824519, 0.99907367, 0.49317766],
+                             [- 6.27279393, -0.00057427, 0.00035189, 7.27221966, 0.99824551, 0.99907384, 0.49317770],
+                             [- 6.27279418, -0.00057417, 0.00035182, 7.27222002, 0.99824584, 0.99907401, 0.49317777],
+                             [- 6.27279444, -0.00057406, 0.00035176, 7.27222038, 0.99824617, 0.99907418, 0.49317774],
+                             [- 6.27279469, -0.00057395, 0.00035169, 7.27222074, 0.99824649, 0.99907436, 0.49317781],
+                             [- 6.27279495, -0.00057385, 0.00035163, 7.27222110, 0.99824682, 0.99907453, 0.49317792],
+                             [- 6.27279520, -0.00057374, 0.00035156, 7.27222146, 0.99824714, 0.99907470, 0.49317788],
+                             [- 6.27279546, -0.00057363, 0.00035150, 7.27222182, 0.99824747, 0.99907487, 0.49317793],
+                             [- 6.27279571, -0.00057353, 0.00035143, 7.27222218, 0.99824779, 0.99907504, 0.49317800],
+                             [- 6.27279596, -0.00057342, 0.00035137, 7.27222254, 0.99824812, 0.99907521, 0.49317798],
+                             [- 6.27279622, -0.00057331, 0.00035130, 7.27222290, 0.99824844, 0.99907538, 0.49317810],
+                             [- 6.27279647, -0.00057321, 0.00035124, 7.27222326, 0.99824877, 0.99907556, 0.49317811],
+                             [- 6.27279673, -0.00057310, 0.00035117, 7.27222362, 0.99824909, 0.99907573, 0.49317808],
+                             [- 6.27279698, -0.00057300, 0.00035111, 7.27222398, 0.99824941, 0.99907590, 0.49317818],
+                             [- 6.27279723, -0.00057289, 0.00035104, 7.27222434, 0.99824974, 0.99907607, 0.49317820],
+                             [- 6.27279749, -0.00057278, 0.00035098, 7.27222470, 0.99825006, 0.99907624, 0.49317824],
+                             [- 6.27279774, -0.00057268, 0.00035091, 7.27222506, 0.99825039, 0.99907641, 0.49317828],
+                             [- 6.27279799, -0.00057257, 0.00035085, 7.27222542, 0.99825071, 0.99907658, 0.49317828],
+                             [- 6.27279825, -0.00057247, 0.00035078, 7.27222578, 0.99825103, 0.99907675, 0.49317836],
+                             [- 6.27279850, -0.00057236, 0.00035072, 7.27222614, 0.99825136, 0.99907692, 0.49317841],
+                             [- 6.27279875, -0.00057225, 0.00035065, 7.27222650, 0.99825168, 0.99907709, 0.49317844],
+                             [- 6.27279901, -0.00057215, 0.00035059, 7.27222686, 0.99825200, 0.99907727, 0.49317846],
+                             [- 6.27279926, -0.00057204, 0.00035052, 7.27222722, 0.99825233, 0.99907744, 0.49317853],
+                             [- 6.27279951, -0.00057194, 0.00035046, 7.27222758, 0.99825265, 0.99907761, 0.49317855],
+                             [- 6.27279977, -0.00057183, 0.00035039, 7.27222793, 0.99825297, 0.99907778, 0.49317862],
+                             [- 6.27280002, -0.00057173, 0.00035033, 7.27222829, 0.99825330, 0.99907795, 0.49317862],
+                             [- 6.27280027, -0.00057162, 0.00035026, 7.27222865, 0.99825362, 0.99907812, 0.49317865],
+                             [- 6.27280052, -0.00057152, 0.00035020, 7.27222901, 0.99825394, 0.99907829, 0.49317872],
+                             [- 6.27280078, -0.00057141, 0.00035013, 7.27222937, 0.99825426, 0.99907846, 0.49317874],
+                             [- 6.27280103, -0.00057130, 0.00035007, 7.27222972, 0.99825459, 0.99907863, 0.49317875],
+                             [- 6.27280128, -0.00057120, 0.00035000, 7.27223008, 0.99825491, 0.99907880, 0.49317879],
+                             [- 6.27280153, -0.00057109, 0.00034994, 7.27223044, 0.99825523, 0.99907897, 0.49317885],
+                             [- 6.27280178, -0.00057099, 0.00034987, 7.27223080, 0.99825555, 0.99907914, 0.49317886],
+                             [- 6.27280204, -0.00057088, 0.00034981, 7.27223115, 0.99825587, 0.99907931, 0.49317891],
+                             [- 6.27280229, -0.00057078, 0.00034974, 7.27223151, 0.99825620, 0.99907948, 0.49317896],
+                             [- 6.27280254, -0.00057067, 0.00034968, 7.27223187, 0.99825652, 0.99907965, 0.49317901],
+                             [- 6.27280279, -0.00057057, 0.00034962, 7.27223222, 0.99825684, 0.99907982, 0.49317904],
+                             [- 6.27280304, -0.00057046, 0.00034955, 7.27223258, 0.99825716, 0.99907999, 0.49317904],
+                             [- 6.27280329, -0.00057036, 0.00034949, 7.27223294, 0.99825748, 0.99908016, 0.49317910],
+                             [- 6.27280355, -0.00057025, 0.00034942, 7.27223329, 0.99825780, 0.99908033, 0.49317919],
+                             [- 6.27280380, -0.00057015, 0.00034936, 7.27223365, 0.99825812, 0.99908050, 0.49317919],
+                             [- 6.27280405, -0.00057004, 0.00034929, 7.27223401, 0.99825844, 0.99908066, 0.49317919],
+                             [- 6.27280430, -0.00056994, 0.00034923, 7.27223436, 0.99825877, 0.99908083, 0.49317929],
+                             [- 6.27280455, -0.00056983, 0.00034916, 7.27223472, 0.99825909, 0.99908100, 0.49317932],
+                             [- 6.27280480, -0.00056973, 0.00034910, 7.27223507, 0.99825941, 0.99908117, 0.49317933],
+                             [- 6.27280505, -0.00056962, 0.00034904, 7.27223543, 0.99825973, 0.99908134, 0.49317936],
+                             [- 6.27280530, -0.00056952, 0.00034897, 7.27223579, 0.99826005, 0.99908151, 0.49317942],
+                             [- 6.27280555, -0.00056941, 0.00034891, 7.27223614, 0.99826037, 0.99908168, 0.49317941],
+                             [- 6.27280580, -0.00056931, 0.00034884, 7.27223650, 0.99826069, 0.99908185, 0.49317944],
+                             [- 6.27280606, -0.00056920, 0.00034878, 7.27223685, 0.99826101, 0.99908202, 0.49317951],
+                             [- 6.27280631, -0.00056910, 0.00034872, 7.27223721, 0.99826133, 0.99908219, 0.49317958],
+                             [- 6.27280656, -0.00056899, 0.00034865, 7.27223756, 0.99826165, 0.99908235, 0.49317962],
+                             [- 6.27280681, -0.00056889, 0.00034859, 7.27223792, 0.99826197, 0.99908252, 0.49317961],
+                             [- 6.27280706, -0.00056878, 0.00034852, 7.27223827, 0.99826229, 0.99908269, 0.49317963],
+                             [- 6.27280731, -0.00056868, 0.00034846, 7.27223863, 0.99826261, 0.99908286, 0.49317970],
+                             [- 6.27280756, -0.00056858, 0.00034839, 7.27223898, 0.99826293, 0.99908303, 0.49317974],
+                             [- 6.27280781, -0.00056847, 0.00034833, 7.27223933, 0.99826324, 0.99908320, 0.49317978],
+                             [- 6.27280806, -0.00056837, 0.00034827, 7.27223969, 0.99826356, 0.99908337, 0.49317977],
+                             [- 6.27280830, -0.00056826, 0.00034820, 7.27224004, 0.99826388, 0.99908353, 0.49317984],
+                             [- 6.27280855, -0.00056816, 0.00034814, 7.27224040, 0.99826420, 0.99908370, 0.49317991],
+                             [- 6.27280880, -0.00056805, 0.00034807, 7.27224075, 0.99826452, 0.99908387, 0.49317993],
+                             [- 6.27280905, -0.00056795, 0.00034801, 7.27224110, 0.99826484, 0.99908404, 0.49317997],
+                             [- 6.27280930, -0.00056785, 0.00034795, 7.27224146, 0.99826516, 0.99908421, 0.49317999],
+                             [- 6.27280955, -0.00056774, 0.00034788, 7.27224181, 0.99826547, 0.99908438, 0.49318004],
+                             [- 6.27280980, -0.00056764, 0.00034782, 7.27224216, 0.99826579, 0.99908454, 0.49318009],
+                             [- 6.27281005, -0.00056753, 0.00034776, 7.27224252, 0.99826611, 0.99908471, 0.49318013],
+                             [- 6.27281030, -0.00056743, 0.00034769, 7.27224287, 0.99826643, 0.99908488, 0.49318014],
+                             [- 6.27281055, -0.00056733, 0.00034763, 7.27224322, 0.99826675, 0.99908505, 0.49318020],
+                             [- 6.27281080, -0.00056722, 0.00034756, 7.27224357, 0.99826706, 0.99908521, 0.49318023],
+                             [- 6.27281104, -0.00056712, 0.00034750, 7.27224393, 0.99826738, 0.99908538, 0.49318021],
+                             [- 6.27281129, -0.00056701, 0.00034744, 7.27224428, 0.99826770, 0.99908555, 0.49318033],
+                             [- 6.27281154, -0.00056691, 0.00034737, 7.27224463, 0.99826802, 0.99908572, 0.49318033],
+                             [- 6.27281179, -0.00056681, 0.00034731, 7.27224498, 0.99826833, 0.99908588, 0.49318036],
+                             [- 6.27281204, -0.00056670, 0.00034725, 7.27224534, 0.99826865, 0.99908605, 0.49318042],
+                             [- 6.27281229, -0.00056660, 0.00034718, 7.27224569, 0.99826897, 0.99908622, 0.49318046],
+                             [- 6.27281253, -0.00056649, 0.00034712, 7.27224604, 0.99826929, 0.99908639, 0.49318048],
+                             [- 6.27281278, -0.00056639, 0.00034706, 7.27224639, 0.99826960, 0.99908655, 0.49318053],
+                             [- 6.27281303, -0.00056629, 0.00034699, 7.27224674, 0.99826992, 0.99908672, 0.49318056],
+                             [- 6.27281328, -0.00056618, 0.00034693, 7.27224709, 0.99827024, 0.99908689, 0.49318059],
+                             [- 6.27281353, -0.00056608, 0.00034686, 7.27224745, 0.99827055, 0.99908705, 0.49318066],
+                             [- 6.27281377, -0.00056598, 0.00034680, 7.27224780, 0.99827087, 0.99908722, 0.49318067],
+                             [- 6.27281402, -0.00056587, 0.00034674, 7.27224815, 0.99827119, 0.99908739, 0.49318073],
+                             [- 6.27281427, -0.00056577, 0.00034667, 7.27224850, 0.99827150, 0.99908756, 0.49318072],
+                             [- 6.27281452, -0.00056567, 0.00034661, 7.27224885, 0.99827182, 0.99908772, 0.49318077],
+                             [- 6.27281476, -0.00056556, 0.00034655, 7.27224920, 0.99827213, 0.99908789, 0.49318079],
+                             [- 6.27281501, -0.00056546, 0.00034648, 7.27224955, 0.99827245, 0.99908806, 0.49318086],
+                             [- 6.27281526, -0.00056536, 0.00034642, 7.27224990, 0.99827276, 0.99908822, 0.49318086],
+                             [- 6.27281550, -0.00056525, 0.00034636, 7.27225025, 0.99827308, 0.99908839, 0.49318091],
+                             [- 6.27281575, -0.00056515, 0.00034629, 7.27225060, 0.99827340, 0.99908856, 0.49318093],
+                             [- 6.27281600, -0.00056505, 0.00034623, 7.27225095, 0.99827371, 0.99908872, 0.49318097],
+                             [- 6.27281624, -0.00056494, 0.00034617, 7.27225130, 0.99827403, 0.99908889, 0.49318102],
+                             [- 6.27281649, -0.00056484, 0.00034610, 7.27225165, 0.99827434, 0.99908905, 0.49318109],
+                             [- 6.27281674, -0.00056474, 0.00034604, 7.27225200, 0.99827466, 0.99908922, 0.49318111],
+                             [- 6.27281698, -0.00056463, 0.00034598, 7.27225235, 0.99827497, 0.99908939, 0.49318114],
+                             [- 6.27281723, -0.00056453, 0.00034592, 7.27225270, 0.99827529, 0.99908955, 0.49318118],
+                             [- 6.27281748, -0.00056443, 0.00034585, 7.27225305, 0.99827560, 0.99908972, 0.49318122],
+                             [- 6.27281772, -0.00056433, 0.00034579, 7.27225340, 0.99827591, 0.99908988, 0.49318124],
+                             [- 6.27281797, -0.00056422, 0.00034573, 7.27225375, 0.99827623, 0.99909005, 0.49318128],
+                             [- 6.27281822, -0.00056412, 0.00034566, 7.27225409, 0.99827654, 0.99909022, 0.49318131],
+                             [- 6.27281846, -0.00056402, 0.00034560, 7.27225444, 0.99827686, 0.99909038, 0.49318135],
+                             [- 6.27281871, -0.00056391, 0.00034554, 7.27225479, 0.99827717, 0.99909055, 0.49318140],
+                             [- 6.27281895, -0.00056381, 0.00034547, 7.27225514, 0.99827749, 0.99909071, 0.49318139],
+                             [- 6.27281920, -0.00056371, 0.00034541, 7.27225549, 0.99827780, 0.99909088, 0.49318148],
+                             [- 6.27281944, -0.00056361, 0.00034535, 7.27225584, 0.99827811, 0.99909105, 0.49318152],
+                             [- 6.27281969, -0.00056350, 0.00034528, 7.27225619, 0.99827843, 0.99909121, 0.49318156],
+                             [- 6.27281993, -0.00056340, 0.00034522, 7.27225653, 0.99827874, 0.99909138, 0.49318159],
+                             [- 6.27282018, -0.00056330, 0.00034516, 7.27225688, 0.99827905, 0.99909154, 0.49318163],
+                             [- 6.27282043, -0.00056320, 0.00034510, 7.27225723, 0.99827937, 0.99909171, 0.49318166],
+                             [- 6.27282067, -0.00056309, 0.00034503, 7.27225758, 0.99827968, 0.99909187, 0.49318168],
+                             [- 6.27282092, -0.00056299, 0.00034497, 7.27225792, 0.99827999, 0.99909204, 0.49318179],
+                             [- 6.27282116, -0.00056289, 0.00034491, 7.27225827, 0.99828031, 0.99909220, 0.49318171],
+                             [- 6.27282141, -0.00056279, 0.00034485, 7.27225862, 0.99828062, 0.99909237, 0.49318177],
+                             [- 6.27282165, -0.00056268, 0.00034478, 7.27225897, 0.99828093, 0.99909253, 0.49318188],
+                             [- 6.27282189, -0.00056258, 0.00034472, 7.27225931, 0.99828124, 0.99909270, 0.49318185],
+                             [- 6.27282214, -0.00056248, 0.00034466, 7.27225966, 0.99828156, 0.99909286, 0.49318190],
+                             [- 6.27282238, -0.00056238, 0.00034459, 7.27226001, 0.99828187, 0.99909303, 0.49318196],
+                             [- 6.27282263, -0.00056228, 0.00034453, 7.27226035, 0.99828218, 0.99909319, 0.49318197],
+                             [- 6.27282287, -0.00056217, 0.00034447, 7.27226070, 0.99828249, 0.99909336, 0.49318203],
+                             [- 6.27282312, -0.00056207, 0.00034441, 7.27226104, 0.99828281, 0.99909352, 0.49318204],
+                             [- 6.27282336, -0.00056197, 0.00034434, 7.27226139, 0.99828312, 0.99909369, 0.49318210],
+                             [- 6.27282360, -0.00056187, 0.00034428, 7.27226174, 0.99828343, 0.99909385, 0.49318213],
+                             [- 6.27282385, -0.00056177, 0.00034422, 7.27226208, 0.99828374, 0.99909402, 0.49318217],
+                             [- 6.27282409, -0.00056166, 0.00034416, 7.27226243, 0.99828405, 0.99909418, 0.49318219],
+                             [- 6.27282434, -0.00056156, 0.00034409, 7.27226277, 0.99828436, 0.99909434, 0.49318217],
+                             [- 6.27282458, -0.00056146, 0.00034403, 7.27226312, 0.99828467, 0.99909451, 0.49318229],
+                             [- 6.27282482, -0.00056136, 0.00034397, 7.27226347, 0.99828499, 0.99909467, 0.49318235],
+                             [- 6.27282507, -0.00056126, 0.00034391, 7.27226381, 0.99828530, 0.99909484, 0.49318234],
+                             [- 6.27282531, -0.00056115, 0.00034384, 7.27226416, 0.99828561, 0.99909500, 0.49318238],
+                             [- 6.27282555, -0.00056105, 0.00034378, 7.27226450, 0.99828592, 0.99909516, 0.49318244],
+                             [- 6.27282580, -0.00056095, 0.00034372, 7.27226485, 0.99828623, 0.99909533, 0.49318245],
+                             [- 6.27282604, -0.00056085, 0.00034366, 7.27226519, 0.99828654, 0.99909549, 0.49318251],
+                             [- 6.27282628, -0.00056075, 0.00034360, 7.27226554, 0.99828685, 0.99909566, 0.49318249],
+                             [- 6.27282653, -0.00056065, 0.00034353, 7.27226588, 0.99828716, 0.99909582, 0.49318260],
+                             [- 6.27282677, -0.00056055, 0.00034347, 7.27226622, 0.99828747, 0.99909598, 0.49318256],
+                             [- 6.27282701, -0.00056044, 0.00034341, 7.27226657, 0.99828778, 0.99909615, 0.49318268],
+                             [- 6.27282725, -0.00056034, 0.00034335, 7.27226691, 0.99828809, 0.99909631, 0.49318269],
+                             [- 6.27282750, -0.00056024, 0.00034328, 7.27226726, 0.99828840, 0.99909648, 0.49318273],
+                             [- 6.27282774, -0.00056014, 0.00034322, 7.27226760, 0.99828871, 0.99909664, 0.49318276],
+                             [- 6.27282798, -0.00056004, 0.00034316, 7.27226794, 0.99828902, 0.99909680, 0.49318278],
+                             [- 6.27282822, -0.00055994, 0.00034310, 7.27226829, 0.99828933, 0.99909697, 0.49318281],
+                             [- 6.27282847, -0.00055984, 0.00034304, 7.27226863, 0.99828964, 0.99909713, 0.49318285],
+                             [- 6.27282871, -0.00055973, 0.00034297, 7.27226898, 0.99828995, 0.99909729, 0.49318289],
+                             [- 6.27282895, -0.00055963, 0.00034291, 7.27226932, 0.99829026, 0.99909746, 0.49318294],
+                             [- 6.27282919, -0.00055953, 0.00034285, 7.27226966, 0.99829057, 0.99909762, 0.49318296],
+                             [- 6.27282944, -0.00055943, 0.00034279, 7.27227000, 0.99829088, 0.99909778, 0.49318295],
+                             [- 6.27282968, -0.00055933, 0.00034273, 7.27227035, 0.99829119, 0.99909794, 0.49318302],
+                             [- 6.27282992, -0.00055923, 0.00034266, 7.27227069, 0.99829150, 0.99909811, 0.49318310],
+                             [- 6.27283016, -0.00055913, 0.00034260, 7.27227103, 0.99829180, 0.99909827, 0.49318311],
+                             [- 6.27283040, -0.00055903, 0.00034254, 7.27227138, 0.99829211, 0.99909843, 0.49318314],
+                             [- 6.27283064, -0.00055893, 0.00034248, 7.27227172, 0.99829242, 0.99909860, 0.49318318],
+                             [- 6.27283089, -0.00055882, 0.00034242, 7.27227206, 0.99829273, 0.99909876, 0.49318320],
+                             [- 6.27283113, -0.00055872, 0.00034235, 7.27227240, 0.99829304, 0.99909892, 0.49318320],
+                             [- 6.27283137, -0.00055862, 0.00034229, 7.27227274, 0.99829335, 0.99909908, 0.49318327],
+                             [- 6.27283161, -0.00055852, 0.00034223, 7.27227309, 0.99829365, 0.99909925, 0.49318333],
+                             [- 6.27283185, -0.00055842, 0.00034217, 7.27227343, 0.99829396, 0.99909941, 0.49318333],
+                             [- 6.27283209, -0.00055832, 0.00034211, 7.27227377, 0.99829427, 0.99909957, 0.49318336],
+                             [- 6.27283233, -0.00055822, 0.00034204, 7.27227411, 0.99829458, 0.99909973, 0.49318343],
+                             [- 6.27283257, -0.00055812, 0.00034198, 7.27227445, 0.99829489, 0.99909990, 0.49318344],
+                             [- 6.27283281, -0.00055802, 0.00034192, 7.27227479, 0.99829519, 0.99910006, 0.49318351],
+                             [- 6.27283305, -0.00055792, 0.00034186, 7.27227514, 0.99829550, 0.99910022, 0.49318353],
+                             [- 6.27283329, -0.00055782, 0.00034180, 7.27227548, 0.99829581, 0.99910038, 0.49318358],
+                             [- 6.27283353, -0.00055772, 0.00034174, 7.27227582, 0.99829611, 0.99910055, 0.49318362],
+                             [- 6.27283378, -0.00055762, 0.00034168, 7.27227616, 0.99829642, 0.99910071, 0.49318360],
+                             [- 6.27283402, -0.00055752, 0.00034161, 7.27227650, 0.99829673, 0.99910087, 0.49318367],
+                             [- 6.27283426, -0.00055742, 0.00034155, 7.27227684, 0.99829704, 0.99910103, 0.49318371],
+                             [- 6.27283450, -0.00055732, 0.00034149, 7.27227718, 0.99829734, 0.99910119, 0.49318374],
+                             [- 6.27283474, -0.00055722, 0.00034143, 7.27227752, 0.99829765, 0.99910136, 0.49318380],
+                             [- 6.27283498, -0.00055712, 0.00034137, 7.27227786, 0.99829796, 0.99910152, 0.49318376],
+                             [- 6.27283522, -0.00055701, 0.00034131, 7.27227820, 0.99829826, 0.99910168, 0.49318386],
+                             [- 6.27283546, -0.00055691, 0.00034124, 7.27227854, 0.99829857, 0.99910184, 0.49318389],
+                             [- 6.27283570, -0.00055681, 0.00034118, 7.27227888, 0.99829887, 0.99910200, 0.49318390],
+                             [- 6.27283593, -0.00055671, 0.00034112, 7.27227922, 0.99829918, 0.99910216, 0.49318396],
+                             [- 6.27283617, -0.00055661, 0.00034106, 7.27227956, 0.99829949, 0.99910233, 0.49318401],
+                             [- 6.27283641, -0.00055651, 0.00034100, 7.27227990, 0.99829979, 0.99910249, 0.49318410],
+                             [- 6.27283665, -0.00055641, 0.00034094, 7.27228024, 0.99830010, 0.99910265, 0.49318407],
+                             [- 6.27283689, -0.00055631, 0.00034088, 7.27228058, 0.99830040, 0.99910281, 0.49318407],
+                             [- 6.27283713, -0.00055621, 0.00034081, 7.27228092, 0.99830071, 0.99910297, 0.49318414],
+                             [- 6.27283737, -0.00055611, 0.00034075, 7.27228126, 0.99830101, 0.99910313, 0.49318415],
+                             [- 6.27283761, -0.00055601, 0.00034069, 7.27228159, 0.99830132, 0.99910329, 0.49318423],
+                             [- 6.27283785, -0.00055591, 0.00034063, 7.27228193, 0.99830163, 0.99910345, 0.49318423],
+                             [- 6.27283809, -0.00055581, 0.00034057, 7.27228227, 0.99830193, 0.99910362, 0.49318427],
+                             [- 6.27283833, -0.00055571, 0.00034051, 7.27228261, 0.99830224, 0.99910378, 0.49318428],
+                             [- 6.27283856, -0.00055562, 0.00034045, 7.27228295, 0.99830254, 0.99910394, 0.49318433],
+                             [- 6.27283880, -0.00055552, 0.00034039, 7.27228329, 0.99830285, 0.99910410, 0.49318443],
+                             [- 6.27283904, -0.00055542, 0.00034033, 7.27228363, 0.99830315, 0.99910426, 0.49318443],
+                             [- 6.27283928, -0.00055532, 0.00034026, 7.27228396, 0.99830345, 0.99910442, 0.49318449],
+                             [- 6.27283952, -0.00055522, 0.00034020, 7.27228430, 0.99830376, 0.99910458, 0.49318449],
+                             [- 6.27283976, -0.00055512, 0.00034014, 7.27228464, 0.99830406, 0.99910474, 0.49318454],
+                             [- 6.27283999, -0.00055502, 0.00034008, 7.27228498, 0.99830437, 0.99910490, 0.49318457],
+                             [- 6.27284023, -0.00055492, 0.00034002, 7.27228531, 0.99830467, 0.99910506, 0.49318459],
+                             [- 6.27284047, -0.00055482, 0.00033996, 7.27228565, 0.99830498, 0.99910522, 0.49318460],
+                             [- 6.27284071, -0.00055472, 0.00033990, 7.27228599, 0.99830528, 0.99910538, 0.49318465],
+                             [- 6.27284095, -0.00055462, 0.00033984, 7.27228633, 0.99830558, 0.99910554, 0.49318472],
+                             [- 6.27284118, -0.00055452, 0.00033978, 7.27228666, 0.99830589, 0.99910570, 0.49318477],
+                             [- 6.27284142, -0.00055442, 0.00033972, 7.27228700, 0.99830619, 0.99910586, 0.49318479],
+                             [- 6.27284166, -0.00055432, 0.00033965, 7.27228734, 0.99830649, 0.99910602, 0.49318483],
+                             [- 6.27284190, -0.00055422, 0.00033959, 7.27228767, 0.99830680, 0.99910618, 0.49318487],
+                             [- 6.27284213, -0.00055412, 0.00033953, 7.27228801, 0.99830710, 0.99910634, 0.49318489],
+                             [- 6.27284237, -0.00055402, 0.00033947, 7.27228835, 0.99830740, 0.99910650, 0.49318490],
+                             [- 6.27284261, -0.00055393, 0.00033941, 7.27228868, 0.99830771, 0.99910666, 0.49318496],
+                             [- 6.27284285, -0.00055383, 0.00033935, 7.27228902, 0.99830801, 0.99910682, 0.49318499],
+                             [- 6.27284308, -0.00055373, 0.00033929, 7.27228936, 0.99830831, 0.99910698, 0.49318499],
+                             [- 6.27284332, -0.00055363, 0.00033923, 7.27228969, 0.99830861, 0.99910714, 0.49318509],
+                             [- 6.27284356, -0.00055353, 0.00033917, 7.27229003, 0.99830892, 0.99910730, 0.49318511],
+                             [- 6.27284379, -0.00055343, 0.00033911, 7.27229036, 0.99830922, 0.99910746, 0.49318515],
+                             [- 6.27284403, -0.00055333, 0.00033905, 7.27229070, 0.99830952, 0.99910762, 0.49318516],
+                             [- 6.27284427, -0.00055323, 0.00033899, 7.27229103, 0.99830982, 0.99910778, 0.49318524],
+                             [- 6.27284450, -0.00055313, 0.00033893, 7.27229137, 0.99831013, 0.99910794, 0.49318524],
+                             [- 6.27284474, -0.00055303, 0.00033887, 7.27229170, 0.99831043, 0.99910810, 0.49318528],
+                             [- 6.27284498, -0.00055294, 0.00033880, 7.27229204, 0.99831073, 0.99910826, 0.49318529],
+                             [- 6.27284521, -0.00055284, 0.00033874, 7.27229237, 0.99831103, 0.99910842, 0.49318533],
+                             [- 6.27284545, -0.00055274, 0.00033868, 7.27229271, 0.99831133, 0.99910858, 0.49318539],
+                             [- 6.27284568, -0.00055264, 0.00033862, 7.27229304, 0.99831164, 0.99910874, 0.49318542],
+                             [- 6.27284592, -0.00055254, 0.00033856, 7.27229338, 0.99831194, 0.99910890, 0.49318543],
+                             [- 6.27284616, -0.00055244, 0.00033850, 7.27229371, 0.99831224, 0.99910906, 0.49318547],
+                             [- 6.27284639, -0.00055234, 0.00033844, 7.27229405, 0.99831254, 0.99910921, 0.49318555],
+                             [- 6.27284663, -0.00055225, 0.00033838, 7.27229438, 0.99831284, 0.99910937, 0.49318557],
+                             [- 6.27284686, -0.00055215, 0.00033832, 7.27229472, 0.99831314, 0.99910953, 0.49318561],
+                             [- 6.27284710, -0.00055205, 0.00033826, 7.27229505, 0.99831344, 0.99910969, 0.49318565],
+                             [- 6.27284733, -0.00055195, 0.00033820, 7.27229538, 0.99831374, 0.99910985, 0.49318570],
+                             [- 6.27284757, -0.00055185, 0.00033814, 7.27229572, 0.99831404, 0.99911001, 0.49318569],
+                             [- 6.27284781, -0.00055175, 0.00033808, 7.27229605, 0.99831435, 0.99911017, 0.49318574],
+                             [- 6.27284804, -0.00055165, 0.00033802, 7.27229639, 0.99831465, 0.99911033, 0.49318575],
+                             [- 6.27284828, -0.00055156, 0.00033796, 7.27229672, 0.99831495, 0.99911048, 0.49318581],
+                             [- 6.27284851, -0.00055146, 0.00033790, 7.27229705, 0.99831525, 0.99911064, 0.49318582],
+                             [- 6.27284875, -0.00055136, 0.00033784, 7.27229739, 0.99831555, 0.99911080, 0.49318586],
+                             [- 6.27284898, -0.00055126, 0.00033778, 7.27229772, 0.99831585, 0.99911096, 0.49318588],
+                             [- 6.27284922, -0.00055116, 0.00033772, 7.27229805, 0.99831615, 0.99911112, 0.49318595],
+                             [- 6.27284945, -0.00055107, 0.00033766, 7.27229838, 0.99831645, 0.99911128, 0.49318599],
+                             [- 6.27284968, -0.00055097, 0.00033760, 7.27229872, 0.99831675, 0.99911143, 0.49318604],
+                             [- 6.27284992, -0.00055087, 0.00033754, 7.27229905, 0.99831705, 0.99911159, 0.49318604],
+                             [- 6.27285015, -0.00055077, 0.00033748, 7.27229938, 0.99831735, 0.99911175, 0.49318612],
+                             [- 6.27285039, -0.00055067, 0.00033742, 7.27229971, 0.99831765, 0.99911191, 0.49318613],
+                             [- 6.27285062, -0.00055058, 0.00033736, 7.27230005, 0.99831794, 0.99911207, 0.49318622],
+                             [- 6.27285086, -0.00055048, 0.00033730, 7.27230038, 0.99831824, 0.99911223, 0.49318623],
+                             [- 6.27285109, -0.00055038, 0.00033724, 7.27230071, 0.99831854, 0.99911238, 0.49318626],
+                             [- 6.27285133, -0.00055028, 0.00033718, 7.27230104, 0.99831884, 0.99911254, 0.49318626],
+                             [- 6.27285156, -0.00055018, 0.00033712, 7.27230138, 0.99831914, 0.99911270, 0.49318628],
+                             [- 6.27285179, -0.00055009, 0.00033706, 7.27230171, 0.99831944, 0.99911286, 0.49318633],
+                             [- 6.27285203, -0.00054999, 0.00033700, 7.27230204, 0.99831974, 0.99911301, 0.49318637],
+                             [- 6.27285226, -0.00054989, 0.00033694, 7.27230237, 0.99832004, 0.99911317, 0.49318637],
+                             [- 6.27285249, -0.00054979, 0.00033688, 7.27230270, 0.99832034, 0.99911333, 0.49318644],
+                             [- 6.27285273, -0.00054970, 0.00033682, 7.27230303, 0.99832063, 0.99911349, 0.49318645],
+                             [- 6.27285296, -0.00054960, 0.00033676, 7.27230336, 0.99832093, 0.99911364, 0.49318646],
+                             [- 6.27285319, -0.00054950, 0.00033670, 7.27230369, 0.99832123, 0.99911380, 0.49318651],
+                             [- 6.27285343, -0.00054940, 0.00033664, 7.27230403, 0.99832153, 0.99911396, 0.49318650],
+                             [- 6.27285366, -0.00054931, 0.00033658, 7.27230436, 0.99832183, 0.99911412, 0.49318659],
+                             [- 6.27285389, -0.00054921, 0.00033652, 7.27230469, 0.99832212, 0.99911427, 0.49318666],
+                             [- 6.27285413, -0.00054911, 0.00033646, 7.27230502, 0.99832242, 0.99911443, 0.49318665],
+                             [- 6.27285436, -0.00054901, 0.00033640, 7.27230535, 0.99832272, 0.99911459, 0.49318670],
+                             [- 6.27285459, -0.00054892, 0.00033634, 7.27230568, 0.99832302, 0.99911474, 0.49318673],
+                             [- 6.27285483, -0.00054882, 0.00033628, 7.27230601, 0.99832332, 0.99911490, 0.49318677],
+                             [- 6.27285506, -0.00054872, 0.00033622, 7.27230634, 0.99832361, 0.99911506, 0.49318685],
+                             [- 6.27285529, -0.00054862, 0.00033616, 7.27230667, 0.99832391, 0.99911522, 0.49318683],
+                             [- 6.27285552, -0.00054853, 0.00033610, 7.27230700, 0.99832421, 0.99911537, 0.49318692],
+                             [- 6.27285576, -0.00054843, 0.00033604, 7.27230733, 0.99832450, 0.99911553, 0.49318690],
+                             [- 6.27285599, -0.00054833, 0.00033598, 7.27230766, 0.99832480, 0.99911569, 0.49318694],
+                             [- 6.27285622, -0.00054824, 0.00033592, 7.27230799, 0.99832510, 0.99911584, 0.49318700],
+                             [- 6.27285645, -0.00054814, 0.00033586, 7.27230832, 0.99832539, 0.99911600, 0.49318701],
+                             [- 6.27285669, -0.00054804, 0.00033580, 7.27230865, 0.99832569, 0.99911616, 0.49318705],
+                             [- 6.27285692, -0.00054794, 0.00033574, 7.27230897, 0.99832599, 0.99911631, 0.49318711],
+                             [- 6.27285715, -0.00054785, 0.00033568, 7.27230930, 0.99832628, 0.99911647, 0.49318708],
+                             [- 6.27285738, -0.00054775, 0.00033563, 7.27230963, 0.99832658, 0.99911662, 0.49318719],
+                             [- 6.27285761, -0.00054765, 0.00033557, 7.27230996, 0.99832688, 0.99911678, 0.49318717],
+                             [- 6.27285785, -0.00054756, 0.00033551, 7.27231029, 0.99832717, 0.99911694, 0.49318724],
+                             [- 6.27285808, -0.00054746, 0.00033545, 7.27231062, 0.99832747, 0.99911709, 0.49318723],
+                             [- 6.27285831, -0.00054736, 0.00033539, 7.27231095, 0.99832776, 0.99911725, 0.49318729],
+                             [- 6.27285854, -0.00054727, 0.00033533, 7.27231127, 0.99832806, 0.99911741, 0.49318737],
+                             [- 6.27285877, -0.00054717, 0.00033527, 7.27231160, 0.99832836, 0.99911756, 0.49318736],
+                             [- 6.27285900, -0.00054707, 0.00033521, 7.27231193, 0.99832865, 0.99911772, 0.49318737],
+                             [- 6.27285923, -0.00054698, 0.00033515, 7.27231226, 0.99832895, 0.99911787, 0.49318744],
+                             [- 6.27285947, -0.00054688, 0.00033509, 7.27231259, 0.99832924, 0.99911803, 0.49318747],
+                             [- 6.27285970, -0.00054678, 0.00033503, 7.27231291, 0.99832954, 0.99911819, 0.49318750],
+                             [- 6.27285993, -0.00054669, 0.00033497, 7.27231324, 0.99832983, 0.99911834, 0.49318752],
+                             [- 6.27286016, -0.00054659, 0.00033491, 7.27231357, 0.99833013, 0.99911850, 0.49318756],
+                             [- 6.27286039, -0.00054649, 0.00033485, 7.27231390, 0.99833042, 0.99911865, 0.49318760],
+                             [- 6.27286062, -0.00054640, 0.00033480, 7.27231422, 0.99833072, 0.99911881, 0.49318765],
+                             [- 6.27286085, -0.00054630, 0.00033474, 7.27231455, 0.99833101, 0.99911896, 0.49318766],
+                             [- 6.27286108, -0.00054620, 0.00033468, 7.27231488, 0.99833131, 0.99911912, 0.49318767],
+                             [- 6.27286131, -0.00054611, 0.00033462, 7.27231521, 0.99833160, 0.99911927, 0.49318769],
+                             [- 6.27286154, -0.00054601, 0.00033456, 7.27231553, 0.99833190, 0.99911943, 0.49318777],
+                             [- 6.27286177, -0.00054591, 0.00033450, 7.27231586, 0.99833219, 0.99911959, 0.49318778],
+                             [- 6.27286200, -0.00054582, 0.00033444, 7.27231619, 0.99833248, 0.99911974, 0.49318783],
+                             [- 6.27286223, -0.00054572, 0.00033438, 7.27231651, 0.99833278, 0.99911990, 0.49318785],
+                             [- 6.27286246, -0.00054563, 0.00033432, 7.27231684, 0.99833307, 0.99912005, 0.49318790],
+                             [- 6.27286269, -0.00054553, 0.00033426, 7.27231716, 0.99833337, 0.99912021, 0.49318796],
+                             [- 6.27286292, -0.00054543, 0.00033420, 7.27231749, 0.99833366, 0.99912036, 0.49318798],
+                             [- 6.27286315, -0.00054534, 0.00033415, 7.27231782, 0.99833395, 0.99912052, 0.49318802],
+                             [- 6.27286338, -0.00054524, 0.00033409, 7.27231814, 0.99833425, 0.99912067, 0.49318801],
+                             [- 6.27286361, -0.00054515, 0.00033403, 7.27231847, 0.99833454, 0.99912083, 0.49318810],
+                             [- 6.27286384, -0.00054505, 0.00033397, 7.27231879, 0.99833483, 0.99912098, 0.49318815],
+                             [- 6.27286407, -0.00054495, 0.00033391, 7.27231912, 0.99833513, 0.99912114, 0.49318815],
+                             [- 6.27286430, -0.00054486, 0.00033385, 7.27231944, 0.99833542, 0.99912129, 0.49318821],
+                             [- 6.27286453, -0.00054476, 0.00033379, 7.27231977, 0.99833571, 0.99912145, 0.49318820],
+                             [- 6.27286476, -0.00054467, 0.00033373, 7.27232010, 0.99833601, 0.99912160, 0.49318828],
+                             [- 6.27286499, -0.00054457, 0.00033368, 7.27232042, 0.99833630, 0.99912175, 0.49318827],
+                             [- 6.27286522, -0.00054447, 0.00033362, 7.27232075, 0.99833659, 0.99912191, 0.49318830],
+                             [- 6.27286545, -0.00054438, 0.00033356, 7.27232107, 0.99833689, 0.99912206, 0.49318834],
+                             [- 6.27286568, -0.00054428, 0.00033350, 7.27232139, 0.99833718, 0.99912222, 0.49318840],
+                             [- 6.27286591, -0.00054419, 0.00033344, 7.27232172, 0.99833747, 0.99912237, 0.49318849],
+                             [- 6.27286614, -0.00054409, 0.00033338, 7.27232204, 0.99833776, 0.99912253, 0.49318845],
+                             [- 6.27286636, -0.00054400, 0.00033332, 7.27232237, 0.99833805, 0.99912268, 0.49318852],
+                             [- 6.27286659, -0.00054390, 0.00033326, 7.27232269, 0.99833835, 0.99912283, 0.49318851],
+                             [- 6.27286682, -0.00054380, 0.00033321, 7.27232302, 0.99833864, 0.99912299, 0.49318855],
+                             [- 6.27286705, -0.00054371, 0.00033315, 7.27232334, 0.99833893, 0.99912314, 0.49318857],
+                             [- 6.27286728, -0.00054361, 0.00033309, 7.27232366, 0.99833922, 0.99912330, 0.49318863],
+                             [- 6.27286751, -0.00054352, 0.00033303, 7.27232399, 0.99833951, 0.99912345, 0.49318865],
+                             [- 6.27286774, -0.00054342, 0.00033297, 7.27232431, 0.99833981, 0.99912360, 0.49318871],
+                             [- 6.27286796, -0.00054333, 0.00033291, 7.27232464, 0.99834010, 0.99912376, 0.49318871],
+                             [- 6.27286819, -0.00054323, 0.00033286, 7.27232496, 0.99834039, 0.99912391, 0.49318882],
+                             [- 6.27286842, -0.00054314, 0.00033280, 7.27232528, 0.99834068, 0.99912407, 0.49318885],
+                             [- 6.27286865, -0.00054304, 0.00033274, 7.27232561, 0.99834097, 0.99912422, 0.49318882],
+                             [- 6.27286888, -0.00054295, 0.00033268, 7.27232593, 0.99834126, 0.99912437, 0.49318888],
+                             [- 6.27286910, -0.00054285, 0.00033262, 7.27232625, 0.99834155, 0.99912453, 0.49318890],
+                             [- 6.27286933, -0.00054276, 0.00033256, 7.27232657, 0.99834184, 0.99912468, 0.49318892],
+                             [- 6.27286956, -0.00054266, 0.00033250, 7.27232690, 0.99834214, 0.99912483, 0.49318896],
+                             [- 6.27286979, -0.00054257, 0.00033245, 7.27232722, 0.99834243, 0.99912499, 0.49318900],
+                             [- 6.27287001, -0.00054247, 0.00033239, 7.27232754, 0.99834272, 0.99912514, 0.49318899],
+                             [- 6.27287024, -0.00054238, 0.00033233, 7.27232787, 0.99834301, 0.99912529, 0.49318908],
+                             [- 6.27287047, -0.00054228, 0.00033227, 7.27232819, 0.99834330, 0.99912545, 0.49318910],
+                             [- 6.27287070, -0.00054219, 0.00033221, 7.27232851, 0.99834359, 0.99912560, 0.49318913],
+                             [- 6.27287092, -0.00054209, 0.00033216, 7.27232883, 0.99834388, 0.99912575, 0.49318913],
+                             [- 6.27287115, -0.00054200, 0.00033210, 7.27232915, 0.99834417, 0.99912591, 0.49318919],
+                             [- 6.27287138, -0.00054190, 0.00033204, 7.27232948, 0.99834446, 0.99912606, 0.49318918],
+                             [- 6.27287160, -0.00054181, 0.00033198, 7.27232980, 0.99834475, 0.99912621, 0.49318924],
+                             [- 6.27287183, -0.00054171, 0.00033192, 7.27233012, 0.99834504, 0.99912637, 0.49318928],
+                             [- 6.27287206, -0.00054162, 0.00033186, 7.27233044, 0.99834533, 0.99912652, 0.49318937],
+                             [- 6.27287228, -0.00054152, 0.00033181, 7.27233076, 0.99834562, 0.99912667, 0.49318939],
+                             [- 6.27287251, -0.00054143, 0.00033175, 7.27233108, 0.99834591, 0.99912682, 0.49318942],
+                             [- 6.27287274, -0.00054133, 0.00033169, 7.27233140, 0.99834620, 0.99912698, 0.49318944],
+                             [- 6.27287296, -0.00054124, 0.00033163, 7.27233173, 0.99834649, 0.99912713, 0.49318945],
+                             [- 6.27287319, -0.00054114, 0.00033157, 7.27233205, 0.99834677, 0.99912728, 0.49318948],
+                             [- 6.27287342, -0.00054105, 0.00033152, 7.27233237, 0.99834706, 0.99912744, 0.49318948],
+                             [- 6.27287364, -0.00054095, 0.00033146, 7.27233269, 0.99834735, 0.99912759, 0.49318960],
+                             [- 6.27287387, -0.00054086, 0.00033140, 7.27233301, 0.99834764, 0.99912774, 0.49318965],
+                             [- 6.27287409, -0.00054076, 0.00033134, 7.27233333, 0.99834793, 0.99912789, 0.49318963],
+                             [- 6.27287432, -0.00054067, 0.00033128, 7.27233365, 0.99834822, 0.99912805, 0.49318967],
+                             [- 6.27287455, -0.00054058, 0.00033123, 7.27233397, 0.99834851, 0.99912820, 0.49318974],
+                             [- 6.27287477, -0.00054048, 0.00033117, 7.27233429, 0.99834880, 0.99912835, 0.49318975],
+                             [- 6.27287500, -0.00054039, 0.00033111, 7.27233461, 0.99834908, 0.99912850, 0.49318982],
+                             [- 6.27287522, -0.00054029, 0.00033105, 7.27233493, 0.99834937, 0.99912865, 0.49318976],
+                             [- 6.27287545, -0.00054020, 0.00033100, 7.27233525, 0.99834966, 0.99912881, 0.49318982],
+                             [- 6.27287568, -0.00054010, 0.00033094, 7.27233557, 0.99834995, 0.99912896, 0.49318990],
+                             [- 6.27287590, -0.00054001, 0.00033088, 7.27233589, 0.99835024, 0.99912911, 0.49318991],
+                             [- 6.27287613, -0.00053992, 0.00033082, 7.27233621, 0.99835052, 0.99912926, 0.49318988],
+                             [- 6.27287635, -0.00053982, 0.00033076, 7.27233653, 0.99835081, 0.99912941, 0.49319001],
+                             [- 6.27287658, -0.00053973, 0.00033071, 7.27233685, 0.99835110, 0.99912957, 0.49318998],
+                             [- 6.27287680, -0.00053963, 0.00033065, 7.27233717, 0.99835139, 0.99912972, 0.49319007],
+                             [- 6.27287703, -0.00053954, 0.00033059, 7.27233749, 0.99835168, 0.99912987, 0.49319009],
+                             [- 6.27287725, -0.00053945, 0.00033053, 7.27233781, 0.99835196, 0.99913002, 0.49319013],
+                             [- 6.27287748, -0.00053935, 0.00033048, 7.27233812, 0.99835225, 0.99913017, 0.49319012],
+                             [- 6.27287770, -0.00053926, 0.00033042, 7.27233844, 0.99835254, 0.99913032, 0.49319022],
+                             [- 6.27287793, -0.00053916, 0.00033036, 7.27233876, 0.99835282, 0.99913048, 0.49319019],
+                             [- 6.27287815, -0.00053907, 0.00033030, 7.27233908, 0.99835311, 0.99913063, 0.49319021],
+                             [- 6.27287838, -0.00053898, 0.00033025, 7.27233940, 0.99835340, 0.99913078, 0.49319029],
+                             [- 6.27287860, -0.00053888, 0.00033019, 7.27233972, 0.99835368, 0.99913093, 0.49319029],
+                             [- 6.27287882, -0.00053879, 0.00033013, 7.27234004, 0.99835397, 0.99913108, 0.49319033],
+                             [- 6.27287905, -0.00053869, 0.00033007, 7.27234035, 0.99835426, 0.99913123, 0.49319038],
+                             [- 6.27287927, -0.00053860, 0.00033002, 7.27234067, 0.99835454, 0.99913138, 0.49319044],
+                             [- 6.27287950, -0.00053851, 0.00032996, 7.27234099, 0.99835483, 0.99913153, 0.49319044],
+                             [- 6.27287972, -0.00053841, 0.00032990, 7.27234131, 0.99835512, 0.99913169, 0.49319052],
+                             [- 6.27287994, -0.00053832, 0.00032984, 7.27234162, 0.99835540, 0.99913184, 0.49319053],
+                             [- 6.27288017, -0.00053823, 0.00032979, 7.27234194, 0.99835569, 0.99913199, 0.49319055],
+                             [- 6.27288039, -0.00053813, 0.00032973, 7.27234226, 0.99835598, 0.99913214, 0.49319059],
+                             [- 6.27288062, -0.00053804, 0.00032967, 7.27234258, 0.99835626, 0.99913229, 0.49319064],
+                             [- 6.27288084, -0.00053795, 0.00032961, 7.27234289, 0.99835655, 0.99913244, 0.49319065],
+                             [- 6.27288106, -0.00053785, 0.00032956, 7.27234321, 0.99835683, 0.99913259, 0.49319063],
+                             [- 6.27288129, -0.00053776, 0.00032950, 7.27234353, 0.99835712, 0.99913274, 0.49319073],
+                             [- 6.27288151, -0.00053767, 0.00032944, 7.27234385, 0.99835740, 0.99913289, 0.49319071],
+                             [- 6.27288173, -0.00053757, 0.00032938, 7.27234416, 0.99835769, 0.99913304, 0.49319080],
+                             [- 6.27288196, -0.00053748, 0.00032933, 7.27234448, 0.99835797, 0.99913319, 0.49319079],
+                             [- 6.27288218, -0.00053739, 0.00032927, 7.27234480, 0.99835826, 0.99913334, 0.49319084],
+                             [- 6.27288240, -0.00053729, 0.00032921, 7.27234511, 0.99835854, 0.99913349, 0.49319094],
+                             [- 6.27288263, -0.00053720, 0.00032916, 7.27234543, 0.99835883, 0.99913365, 0.49319090],
+                             [- 6.27288285, -0.00053711, 0.00032910, 7.27234574, 0.99835911, 0.99913380, 0.49319093],
+                             [- 6.27288307, -0.00053701, 0.00032904, 7.27234606, 0.99835940, 0.99913395, 0.49319095],
+                             [- 6.27288330, -0.00053692, 0.00032898, 7.27234638, 0.99835968, 0.99913410, 0.49319102],
+                             [- 6.27288352, -0.00053683, 0.00032893, 7.27234669, 0.99835997, 0.99913425, 0.49319110],
+                             [- 6.27288374, -0.00053673, 0.00032887, 7.27234701, 0.99836025, 0.99913440, 0.49319107],
+                             [- 6.27288396, -0.00053664, 0.00032881, 7.27234732, 0.99836054, 0.99913455, 0.49319115],
+                             [- 6.27288419, -0.00053655, 0.00032876, 7.27234764, 0.99836082, 0.99913470, 0.49319113],
+                             [- 6.27288441, -0.00053645, 0.00032870, 7.27234795, 0.99836111, 0.99913485, 0.49319119],
+                             [- 6.27288463, -0.00053636, 0.00032864, 7.27234827, 0.99836139, 0.99913500, 0.49319119],
+                             [- 6.27288485, -0.00053627, 0.00032859, 7.27234859, 0.99836167, 0.99913515, 0.49319124],
+                             [- 6.27288508, -0.00053618, 0.00032853, 7.27234890, 0.99836196, 0.99913530, 0.49319131],
+                             [- 6.27288530, -0.00053608, 0.00032847, 7.27234922, 0.99836224, 0.99913545, 0.49319132],
+                             [- 6.27288552, -0.00053599, 0.00032841, 7.27234953, 0.99836253, 0.99913560, 0.49319134],
+                             [- 6.27288574, -0.00053590, 0.00032836, 7.27234985, 0.99836281, 0.99913575, 0.49319141],
+                             [- 6.27288596, -0.00053580, 0.00032830, 7.27235016, 0.99836309, 0.99913590, 0.49319142],
+                             [- 6.27288619, -0.00053571, 0.00032824, 7.27235047, 0.99836338, 0.99913604, 0.49319138],
+                             [- 6.27288641, -0.00053562, 0.00032819, 7.27235079, 0.99836366, 0.99913619, 0.49319145],
+                             [- 6.27288663, -0.00053553, 0.00032813, 7.27235110, 0.99836394, 0.99913634, 0.49319149],
+                             [- 6.27288685, -0.00053543, 0.00032807, 7.27235142, 0.99836423, 0.99913649, 0.49319155],
+                             [- 6.27288707, -0.00053534, 0.00032802, 7.27235173, 0.99836451, 0.99913664, 0.49319156],
+                             [- 6.27288729, -0.00053525, 0.00032796, 7.27235205, 0.99836479, 0.99913679, 0.49319156],
+                             [- 6.27288752, -0.00053516, 0.00032790, 7.27235236, 0.99836507, 0.99913694, 0.49319162],
+                             [- 6.27288774, -0.00053506, 0.00032785, 7.27235267, 0.99836536, 0.99913709, 0.49319169],
+                             [- 6.27288796, -0.00053497, 0.00032779, 7.27235299, 0.99836564, 0.99913724, 0.49319169],
+                             [- 6.27288818, -0.00053488, 0.00032773, 7.27235330, 0.99836592, 0.99913739, 0.49319176],
+                             [- 6.27288840, -0.00053479, 0.00032768, 7.27235361, 0.99836620, 0.99913754, 0.49319177],
+                             [- 6.27288862, -0.00053469, 0.00032762, 7.27235393, 0.99836649, 0.99913769, 0.49319182],
+                             [- 6.27288884, -0.00053460, 0.00032756, 7.27235424, 0.99836677, 0.99913784, 0.49319183],
+                             [- 6.27288906, -0.00053451, 0.00032751, 7.27235455, 0.99836705, 0.99913798, 0.49319186],
+                             [- 6.27288928, -0.00053442, 0.00032745, 7.27235487, 0.99836733, 0.99913813, 0.49319195],
+                             [- 6.27288950, -0.00053432, 0.00032739, 7.27235518, 0.99836762, 0.99913828, 0.49319191],
+                             [- 6.27288973, -0.00053423, 0.00032734, 7.27235549, 0.99836790, 0.99913843, 0.49319195],
+                             [- 6.27288995, -0.00053414, 0.00032728, 7.27235581, 0.99836818, 0.99913858, 0.49319198],
+                             [- 6.27289017, -0.00053405, 0.00032722, 7.27235612, 0.99836846, 0.99913873, 0.49319204],
+                             [- 6.27289039, -0.00053396, 0.00032717, 7.27235643, 0.99836874, 0.99913888, 0.49319208],
+                             [- 6.27289061, -0.00053386, 0.00032711, 7.27235674, 0.99836902, 0.99913903, 0.49319213],
+                             [- 6.27289083, -0.00053377, 0.00032705, 7.27235706, 0.99836931, 0.99913917, 0.49319212],
+                             [- 6.27289105, -0.00053368, 0.00032700, 7.27235737, 0.99836959, 0.99913932, 0.49319218],
+                             [- 6.27289127, -0.00053359, 0.00032694, 7.27235768, 0.99836987, 0.99913947, 0.49319222],
+                             [- 6.27289149, -0.00053350, 0.00032689, 7.27235799, 0.99837015, 0.99913962, 0.49319223],
+                             [- 6.27289171, -0.00053340, 0.00032683, 7.27235830, 0.99837043, 0.99913977, 0.49319229],
+                             [- 6.27289193, -0.00053331, 0.00032677, 7.27235862, 0.99837071, 0.99913992, 0.49319228],
+                             [- 6.27289215, -0.00053322, 0.00032672, 7.27235893, 0.99837099, 0.99914006, 0.49319230],
+                             [- 6.27289237, -0.00053313, 0.00032666, 7.27235924, 0.99837127, 0.99914021, 0.49319236],
+                             [- 6.27289259, -0.00053304, 0.00032660, 7.27235955, 0.99837155, 0.99914036, 0.49319240],
+                             [- 6.27289281, -0.00053294, 0.00032655, 7.27235986, 0.99837183, 0.99914051, 0.49319244],
+                             [- 6.27289303, -0.00053285, 0.00032649, 7.27236017, 0.99837211, 0.99914066, 0.49319243],
+                             [- 6.27289325, -0.00053276, 0.00032643, 7.27236048, 0.99837239, 0.99914080, 0.49319249],
+                             [- 6.27289346, -0.00053267, 0.00032638, 7.27236080, 0.99837267, 0.99914095, 0.49319257],
+                             [- 6.27289368, -0.00053258, 0.00032632, 7.27236111, 0.99837295, 0.99914110, 0.49319253],
+                             [- 6.27289390, -0.00053249, 0.00032627, 7.27236142, 0.99837323, 0.99914125, 0.49319261],
+                             [- 6.27289412, -0.00053239, 0.00032621, 7.27236173, 0.99837351, 0.99914140, 0.49319263],
+                             [- 6.27289434, -0.00053230, 0.00032615, 7.27236204, 0.99837379, 0.99914154, 0.49319267],
+                             [- 6.27289456, -0.00053221, 0.00032610, 7.27236235, 0.99837407, 0.99914169, 0.49319271],
+                             [- 6.27289478, -0.00053212, 0.00032604, 7.27236266, 0.99837435, 0.99914184, 0.49319271],
+                             [- 6.27289500, -0.00053203, 0.00032599, 7.27236297, 0.99837463, 0.99914199, 0.49319270],
+                             [- 6.27289522, -0.00053194, 0.00032593, 7.27236328, 0.99837491, 0.99914213, 0.49319278],
+                             [- 6.27289544, -0.00053185, 0.00032587, 7.27236359, 0.99837519, 0.99914228, 0.49319281],
+                             [- 6.27289565, -0.00053175, 0.00032582, 7.27236390, 0.99837547, 0.99914243, 0.49319284],
+                             [- 6.27289587, -0.00053166, 0.00032576, 7.27236421, 0.99837575, 0.99914258, 0.49319286],
+                             [- 6.27289609, -0.00053157, 0.00032571, 7.27236452, 0.99837603, 0.99914272, 0.49319287],
+                             [- 6.27289631, -0.00053148, 0.00032565, 7.27236483, 0.99837631, 0.99914287, 0.49319297],
+                             [- 6.27289653, -0.00053139, 0.00032559, 7.27236514, 0.99837659, 0.99914302, 0.49319300],
+                             [- 6.27289675, -0.00053130, 0.00032554, 7.27236545, 0.99837687, 0.99914316, 0.49319302],
+                             [- 6.27289696, -0.00053121, 0.00032548, 7.27236576, 0.99837714, 0.99914331, 0.49319305],
+                             [- 6.27289718, -0.00053112, 0.00032543, 7.27236607, 0.99837742, 0.99914346, 0.49319306],
+                             [- 6.27289740, -0.00053102, 0.00032537, 7.27236638, 0.99837770, 0.99914361, 0.49319318],
+                             [- 6.27289762, -0.00053093, 0.00032531, 7.27236668, 0.99837798, 0.99914375, 0.49319313],
+                             [- 6.27289784, -0.00053084, 0.00032526, 7.27236699, 0.99837826, 0.99914390, 0.49319318],
+                             [- 6.27289805, -0.00053075, 0.00032520, 7.27236730, 0.99837854, 0.99914405, 0.49319320],
+                             [- 6.27289827, -0.00053066, 0.00032515, 7.27236761, 0.99837881, 0.99914419, 0.49319315],
+                             [- 6.27289849, -0.00053057, 0.00032509, 7.27236792, 0.99837909, 0.99914434, 0.49319329],
+                             [- 6.27289871, -0.00053048, 0.00032504, 7.27236823, 0.99837937, 0.99914449, 0.49319329],
+                             [- 6.27289892, -0.00053039, 0.00032498, 7.27236854, 0.99837965, 0.99914463, 0.49319336],
+                             [- 6.27289914, -0.00053030, 0.00032492, 7.27236884, 0.99837993, 0.99914478, 0.49319338],
+                             [- 6.27289936, -0.00053021, 0.00032487, 7.27236915, 0.99838020, 0.99914493, 0.49319340],
+                             [- 6.27289958, -0.00053012, 0.00032481, 7.27236946, 0.99838048, 0.99914507, 0.49319339],
+                             [- 6.27289979, -0.00053002, 0.00032476, 7.27236977, 0.99838076, 0.99914522, 0.49319350],
+                             [- 6.27290001, -0.00052993, 0.00032470, 7.27237008, 0.99838104, 0.99914536, 0.49319352],
+                             [- 6.27290023, -0.00052984, 0.00032465, 7.27237038, 0.99838131, 0.99914551, 0.49319359],
+                             [- 6.27290044, -0.00052975, 0.00032459, 7.27237069, 0.99838159, 0.99914566, 0.49319354],
+                             [- 6.27290066, -0.00052966, 0.00032453, 7.27237100, 0.99838187, 0.99914580, 0.49319355],
+                             [- 6.27290088, -0.00052957, 0.00032448, 7.27237131, 0.99838214, 0.99914595, 0.49319365],
+                             [- 6.27290109, -0.00052948, 0.00032442, 7.27237161, 0.99838242, 0.99914610, 0.49319372],
+                             [- 6.27290131, -0.00052939, 0.00032437, 7.27237192, 0.99838270, 0.99914624, 0.49319371],
+                             [- 6.27290153, -0.00052930, 0.00032431, 7.27237223, 0.99838297, 0.99914639, 0.49319369],
+                             [- 6.27290174, -0.00052921, 0.00032426, 7.27237254, 0.99838325, 0.99914653, 0.49319379],
+                             [- 6.27290196, -0.00052912, 0.00032420, 7.27237284, 0.99838353, 0.99914668, 0.49319379],
+                             [- 6.27290218, -0.00052903, 0.00032415, 7.27237315, 0.99838380, 0.99914683, 0.49319387],
+                             [- 6.27290239, -0.00052894, 0.00032409, 7.27237346, 0.99838408, 0.99914697, 0.49319384],
+                             [- 6.27290261, -0.00052885, 0.00032404, 7.27237376, 0.99838436, 0.99914712, 0.49319390],
+                             [- 6.27290283, -0.00052876, 0.00032398, 7.27237407, 0.99838463, 0.99914726, 0.49319391],
+                             [- 6.27290304, -0.00052867, 0.00032392, 7.27237438, 0.99838491, 0.99914741, 0.49319397],
+                             [- 6.27290326, -0.00052858, 0.00032387, 7.27237468, 0.99838518, 0.99914755, 0.49319399],
+                             [- 6.27290347, -0.00052849, 0.00032381, 7.27237499, 0.99838546, 0.99914770, 0.49319399],
+                             [- 6.27290369, -0.00052840, 0.00032376, 7.27237529, 0.99838574, 0.99914785, 0.49319402],
+                             [- 6.27290391, -0.00052831, 0.00032370, 7.27237560, 0.99838601, 0.99914799, 0.49319410],
+                             [- 6.27290412, -0.00052822, 0.00032365, 7.27237591, 0.99838629, 0.99914814, 0.49319411],
+                             [- 6.27290434, -0.00052813, 0.00032359, 7.27237621, 0.99838656, 0.99914828, 0.49319417],
+                             [- 6.27290455, -0.00052804, 0.00032354, 7.27237652, 0.99838684, 0.99914843, 0.49319421],
+                             [- 6.27290477, -0.00052795, 0.00032348, 7.27237682, 0.99838711, 0.99914857, 0.49319423],
+                             [- 6.27290498, -0.00052786, 0.00032343, 7.27237713, 0.99838739, 0.99914872, 0.49319424],
+                             [- 6.27290520, -0.00052777, 0.00032337, 7.27237743, 0.99838766, 0.99914886, 0.49319429],
+                             [- 6.27290541, -0.00052768, 0.00032332, 7.27237774, 0.99838794, 0.99914901, 0.49319426],
+                             [- 6.27290563, -0.00052759, 0.00032326, 7.27237804, 0.99838821, 0.99914915, 0.49319434],
+                             [- 6.27290584, -0.00052750, 0.00032321, 7.27237835, 0.99838849, 0.99914930, 0.49319436],
+                             [- 6.27290606, -0.00052741, 0.00032315, 7.27237865, 0.99838876, 0.99914944, 0.49319441],
+                             [- 6.27290627, -0.00052732, 0.00032310, 7.27237896, 0.99838904, 0.99914959, 0.49319443],
+                             [- 6.27290649, -0.00052723, 0.00032304, 7.27237926, 0.99838931, 0.99914973, 0.49319450],
+                             [- 6.27290670, -0.00052714, 0.00032299, 7.27237957, 0.99838959, 0.99914988, 0.49319447],
+                             [- 6.27290692, -0.00052705, 0.00032293, 7.27237987, 0.99838986, 0.99915002, 0.49319454],
+                             [- 6.27290713, -0.00052696, 0.00032288, 7.27238018, 0.99839013, 0.99915017, 0.49319453],
+                             [- 6.27290735, -0.00052687, 0.00032282, 7.27238048, 0.99839041, 0.99915031, 0.49319457],
+                             [- 6.27290756, -0.00052678, 0.00032277, 7.27238078, 0.99839068, 0.99915046, 0.49319463],
+                             [- 6.27290778, -0.00052669, 0.00032271, 7.27238109, 0.99839096, 0.99915060, 0.49319468],
+                             [- 6.27290799, -0.00052660, 0.00032266, 7.27238139, 0.99839123, 0.99915075, 0.49319471],
+                             [- 6.27290821, -0.00052651, 0.00032260, 7.27238170, 0.99839150, 0.99915089, 0.49319472],
+                             [- 6.27290842, -0.00052642, 0.00032255, 7.27238200, 0.99839178, 0.99915103, 0.49319477],
+                             [- 6.27290863, -0.00052633, 0.00032249, 7.27238230, 0.99839205, 0.99915118, 0.49319479],
+                             [- 6.27290885, -0.00052624, 0.00032244, 7.27238261, 0.99839232, 0.99915132, 0.49319479],
+                             [- 6.27290906, -0.00052615, 0.00032238, 7.27238291, 0.99839260, 0.99915147, 0.49319486],
+                             [- 6.27290928, -0.00052606, 0.00032233, 7.27238321, 0.99839287, 0.99915161, 0.49319496],
+                             [- 6.27290949, -0.00052597, 0.00032227, 7.27238352, 0.99839314, 0.99915176, 0.49319494],
+                             [- 6.27290970, -0.00052588, 0.00032222, 7.27238382, 0.99839342, 0.99915190, 0.49319490],
+                             [- 6.27290992, -0.00052579, 0.00032216, 7.27238412, 0.99839369, 0.99915204, 0.49319495],
+                             [- 6.27291013, -0.00052570, 0.00032211, 7.27238443, 0.99839396, 0.99915219, 0.49319503],
+                             [- 6.27291034, -0.00052561, 0.00032205, 7.27238473, 0.99839424, 0.99915233, 0.49319499],
+                             [- 6.27291056, -0.00052553, 0.00032200, 7.27238503, 0.99839451, 0.99915248, 0.49319506],
+                             [- 6.27291077, -0.00052544, 0.00032194, 7.27238534, 0.99839478, 0.99915262, 0.49319516],
+                             [- 6.27291098, -0.00052535, 0.00032189, 7.27238564, 0.99839505, 0.99915276, 0.49319515],
+                             [- 6.27291120, -0.00052526, 0.00032183, 7.27238594, 0.99839533, 0.99915291, 0.49319519],
+                             [- 6.27291141, -0.00052517, 0.00032178, 7.27238624, 0.99839560, 0.99915305, 0.49319519],
+                             [- 6.27291162, -0.00052508, 0.00032173, 7.27238654, 0.99839587, 0.99915320, 0.49319522],
+                             [- 6.27291184, -0.00052499, 0.00032167, 7.27238685, 0.99839614, 0.99915334, 0.49319528],
+                             [- 6.27291205, -0.00052490, 0.00032162, 7.27238715, 0.99839642, 0.99915348, 0.49319533],
+                             [- 6.27291226, -0.00052481, 0.00032156, 7.27238745, 0.99839669, 0.99915363, 0.49319536],
+                             [- 6.27291248, -0.00052472, 0.00032151, 7.27238775, 0.99839696, 0.99915377, 0.49319537],
+                             [- 6.27291269, -0.00052463, 0.00032145, 7.27238805, 0.99839723, 0.99915391, 0.49319544],
+                             [- 6.27291290, -0.00052455, 0.00032140, 7.27238836, 0.99839750, 0.99915406, 0.49319545],
+                             [- 6.27291311, -0.00052446, 0.00032134, 7.27238866, 0.99839777, 0.99915420, 0.49319547],
+                             [- 6.27291333, -0.00052437, 0.00032129, 7.27238896, 0.99839805, 0.99915434, 0.49319547],
+                             [- 6.27291354, -0.00052428, 0.00032123, 7.27238926, 0.99839832, 0.99915449, 0.49319552],
+                             [- 6.27291375, -0.00052419, 0.00032118, 7.27238956, 0.99839859, 0.99915463, 0.49319555],
+                             [- 6.27291396, -0.00052410, 0.00032113, 7.27238986, 0.99839886, 0.99915477, 0.49319555],
+                             [- 6.27291418, -0.00052401, 0.00032107, 7.27239016, 0.99839913, 0.99915492, 0.49319565],
+                             [- 6.27291439, -0.00052392, 0.00032102, 7.27239046, 0.99839940, 0.99915506, 0.49319563],
+                             [- 6.27291460, -0.00052384, 0.00032096, 7.27239077, 0.99839967, 0.99915520, 0.49319565],
+                             [- 6.27291481, -0.00052375, 0.00032091, 7.27239107, 0.99839994, 0.99915534, 0.49319571],
+                             [- 6.27291503, -0.00052366, 0.00032085, 7.27239137, 0.99840021, 0.99915549, 0.49319576],
+                             [- 6.27291524, -0.00052357, 0.00032080, 7.27239167, 0.99840049, 0.99915563, 0.49319577],
+                             [- 6.27291545, -0.00052348, 0.00032075, 7.27239197, 0.99840076, 0.99915577, 0.49319579],
+                             [- 6.27291566, -0.00052339, 0.00032069, 7.27239227, 0.99840103, 0.99915592, 0.49319582],
+                             [- 6.27291587, -0.00052330, 0.00032064, 7.27239257, 0.99840130, 0.99915606, 0.49319587],
+                             [- 6.27291608, -0.00052322, 0.00032058, 7.27239287, 0.99840157, 0.99915620, 0.49319592],
+                             [- 6.27291630, -0.00052313, 0.00032053, 7.27239317, 0.99840184, 0.99915634, 0.49319593],
+                             [- 6.27291651, -0.00052304, 0.00032047, 7.27239347, 0.99840211, 0.99915649, 0.49319594],
+                             [- 6.27291672, -0.00052295, 0.00032042, 7.27239377, 0.99840238, 0.99915663, 0.49319596],
+                             [- 6.27291693, -0.00052286, 0.00032037, 7.27239407, 0.99840265, 0.99915677, 0.49319602],
+                             [- 6.27291714, -0.00052277, 0.00032031, 7.27239437, 0.99840292, 0.99915691, 0.49319607],
+                             [- 6.27291735, -0.00052269, 0.00032026, 7.27239467, 0.99840319, 0.99915706, 0.49319609],
+                             [- 6.27291756, -0.00052260, 0.00032020, 7.27239497, 0.99840346, 0.99915720, 0.49319609],
+                             [- 6.27291777, -0.00052251, 0.00032015, 7.27239526, 0.99840373, 0.99915734, 0.49319619],
+                             [- 6.27291799, -0.00052242, 0.00032010, 7.27239556, 0.99840400, 0.99915748, 0.49319624],
+                             [- 6.27291820, -0.00052233, 0.00032004, 7.27239586, 0.99840427, 0.99915763, 0.49319616],
+                             [- 6.27291841, -0.00052225, 0.00031999, 7.27239616, 0.99840453, 0.99915777, 0.49319625],
+                             [- 6.27291862, -0.00052216, 0.00031993, 7.27239646, 0.99840480, 0.99915791, 0.49319632],
+                             [- 6.27291883, -0.00052207, 0.00031988, 7.27239676, 0.99840507, 0.99915805, 0.49319625],
+                             [- 6.27291904, -0.00052198, 0.00031983, 7.27239706, 0.99840534, 0.99915819, 0.49319634],
+                             [- 6.27291925, -0.00052189, 0.00031977, 7.27239736, 0.99840561, 0.99915834, 0.49319638],
+                             [- 6.27291946, -0.00052180, 0.00031972, 7.27239766, 0.99840588, 0.99915848, 0.49319640],
+                             [- 6.27291967, -0.00052172, 0.00031966, 7.27239795, 0.99840615, 0.99915862, 0.49319643],
+                             [- 6.27291988, -0.00052163, 0.00031961, 7.27239825, 0.99840642, 0.99915876, 0.49319646],
+                             [- 6.27292009, -0.00052154, 0.00031956, 7.27239855, 0.99840669, 0.99915890, 0.49319643],
+                             [- 6.27292030, -0.00052145, 0.00031950, 7.27239885, 0.99840695, 0.99915904, 0.49319651],
+                             [- 6.27292051, -0.00052137, 0.00031945, 7.27239915, 0.99840722, 0.99915919, 0.49319652],
+                             [- 6.27292072, -0.00052128, 0.00031939, 7.27239944, 0.99840749, 0.99915933, 0.49319657],
+                             [- 6.27292093, -0.00052119, 0.00031934, 7.27239974, 0.99840776, 0.99915947, 0.49319663],
+                             [- 6.27292114, -0.00052110, 0.00031929, 7.27240004, 0.99840803, 0.99915961, 0.49319665],
+                             [- 6.27292135, -0.00052101, 0.00031923, 7.27240034, 0.99840830, 0.99915975, 0.49319671],
+                             [- 6.27292156, -0.00052093, 0.00031918, 7.27240063, 0.99840856, 0.99915989, 0.49319676],
+                             [- 6.27292177, -0.00052084, 0.00031913, 7.27240093, 0.99840883, 0.99916004, 0.49319677],
+                             [- 6.27292198, -0.00052075, 0.00031907, 7.27240123, 0.99840910, 0.99916018, 0.49319672],
+                             [- 6.27292219, -0.00052066, 0.00031902, 7.27240153, 0.99840937, 0.99916032, 0.49319676],
+                             [- 6.27292240, -0.00052058, 0.00031896, 7.27240182, 0.99840964, 0.99916046, 0.49319684],
+                             [- 6.27292261, -0.00052049, 0.00031891, 7.27240212, 0.99840990, 0.99916060, 0.49319683],
+                             [- 6.27292282, -0.00052040, 0.00031886, 7.27240242, 0.99841017, 0.99916074, 0.49319688],
+                             [- 6.27292303, -0.00052031, 0.00031880, 7.27240271, 0.99841044, 0.99916088, 0.49319696],
+                             [- 6.27292324, -0.00052023, 0.00031875, 7.27240301, 0.99841070, 0.99916102, 0.49319696],
+                             [- 6.27292345, -0.00052014, 0.00031870, 7.27240331, 0.99841097, 0.99916117, 0.49319698],
+                             [- 6.27292366, -0.00052005, 0.00031864, 7.27240360, 0.99841124, 0.99916131, 0.49319702],
+                             [- 6.27292386, -0.00051996, 0.00031859, 7.27240390, 0.99841151, 0.99916145, 0.49319705],
+                             [- 6.27292407, -0.00051988, 0.00031854, 7.27240420, 0.99841177, 0.99916159, 0.49319708],
+                             [- 6.27292428, -0.00051979, 0.00031848, 7.27240449, 0.99841204, 0.99916173, 0.49319705],
+                             [- 6.27292449, -0.00051970, 0.00031843, 7.27240479, 0.99841231, 0.99916187, 0.49319715],
+                             [- 6.27292470, -0.00051962, 0.00031837, 7.27240508, 0.99841257, 0.99916201, 0.49319716],
+                             [- 6.27292491, -0.00051953, 0.00031832, 7.27240538, 0.99841284, 0.99916215, 0.49319722],
+                             [- 6.27292512, -0.00051944, 0.00031827, 7.27240568, 0.99841311, 0.99916229, 0.49319725],
+                             [- 6.27292533, -0.00051935, 0.00031821, 7.27240597, 0.99841337, 0.99916243, 0.49319725],
+                             [- 6.27292553, -0.00051927, 0.00031816, 7.27240627, 0.99841364, 0.99916257, 0.49319734],
+                             [- 6.27292574, -0.00051918, 0.00031811, 7.27240656, 0.99841390, 0.99916271, 0.49319744],
+                             [- 6.27292595, -0.00051909, 0.00031805, 7.27240686, 0.99841417, 0.99916285, 0.49319739],
+                             [- 6.27292616, -0.00051901, 0.00031800, 7.27240715, 0.99841444, 0.99916299, 0.49319736],
+                             [- 6.27292637, -0.00051892, 0.00031795, 7.27240745, 0.99841470, 0.99916313, 0.49319748],
+                             [- 6.27292658, -0.00051883, 0.00031789, 7.27240774, 0.99841497, 0.99916327, 0.49319747],
+                             [- 6.27292678, -0.00051874, 0.00031784, 7.27240804, 0.99841523, 0.99916341, 0.49319748],
+                             [- 6.27292699, -0.00051866, 0.00031779, 7.27240833, 0.99841550, 0.99916355, 0.49319753],
+                             [- 6.27292720, -0.00051857, 0.00031773, 7.27240863, 0.99841577, 0.99916369, 0.49319759],
+                             [- 6.27292741, -0.00051848, 0.00031768, 7.27240892, 0.99841603, 0.99916384, 0.49319759],
+                             [- 6.27292762, -0.00051840, 0.00031763, 7.27240922, 0.99841630, 0.99916398, 0.49319759],
+                             [- 6.27292782, -0.00051831, 0.00031757, 7.27240951, 0.99841656, 0.99916412, 0.49319764],
+                             [- 6.27292803, -0.00051822, 0.00031752, 7.27240981, 0.99841683, 0.99916426, 0.49319769],
+                             [- 6.27292824, -0.00051814, 0.00031747, 7.27241010, 0.99841709, 0.99916440, 0.49319768],
+                             [- 6.27292845, -0.00051805, 0.00031742, 7.27241040, 0.99841736, 0.99916453, 0.49319773],
+                             [- 6.27292865, -0.00051796, 0.00031736, 7.27241069, 0.99841762, 0.99916467, 0.49319777],
+                             [- 6.27292886, -0.00051788, 0.00031731, 7.27241098, 0.99841789, 0.99916481, 0.49319789],
+                             [- 6.27292907, -0.00051779, 0.00031726, 7.27241128, 0.99841815, 0.99916495, 0.49319781],
+                             [- 6.27292927, -0.00051770, 0.00031720, 7.27241157, 0.99841842, 0.99916509, 0.49319785],
+                             [- 6.27292948, -0.00051762, 0.00031715, 7.27241186, 0.99841868, 0.99916523, 0.49319784],
+                             [- 6.27292969, -0.00051753, 0.00031710, 7.27241216, 0.99841895, 0.99916537, 0.49319795],
+                             [- 6.27292990, -0.00051744, 0.00031704, 7.27241245, 0.99841921, 0.99916551, 0.49319794],
+                             [- 6.27293010, -0.00051736, 0.00031699, 7.27241275, 0.99841947, 0.99916565, 0.49319797],
+                             [- 6.27293031, -0.00051727, 0.00031694, 7.27241304, 0.99841974, 0.99916579, 0.49319807],
+                             [- 6.27293052, -0.00051718, 0.00031688, 7.27241333, 0.99842000, 0.99916593, 0.49319800],
+                             [- 6.27293072, -0.00051710, 0.00031683, 7.27241363, 0.99842027, 0.99916607, 0.49319809],
+                             [- 6.27293093, -0.00051701, 0.00031678, 7.27241392, 0.99842053, 0.99916621, 0.49319811],
+                             [- 6.27293114, -0.00051693, 0.00031673, 7.27241421, 0.99842079, 0.99916635, 0.49319811],
+                             [- 6.27293134, -0.00051684, 0.00031667, 7.27241450, 0.99842106, 0.99916649, 0.49319817],
+                             [- 6.27293155, -0.00051675, 0.00031662, 7.27241480, 0.99842132, 0.99916663, 0.49319820],
+                             [- 6.27293176, -0.00051667, 0.00031657, 7.27241509, 0.99842159, 0.99916677, 0.49319821],
+                             [- 6.27293196, -0.00051658, 0.00031651, 7.27241538, 0.99842185, 0.99916691, 0.49319833],
+                             [- 6.27293217, -0.00051649, 0.00031646, 7.27241567, 0.99842211, 0.99916704, 0.49319829],
+                             [- 6.27293237, -0.00051641, 0.00031641, 7.27241597, 0.99842238, 0.99916718, 0.49319831],
+                             [- 6.27293258, -0.00051632, 0.00031636, 7.27241626, 0.99842264, 0.99916732, 0.49319838],
+                             [- 6.27293279, -0.00051624, 0.00031630, 7.27241655, 0.99842290, 0.99916746, 0.49319843],
+                             [- 6.27293299, -0.00051615, 0.00031625, 7.27241684, 0.99842316, 0.99916760, 0.49319840],
+                             [- 6.27293320, -0.00051606, 0.00031620, 7.27241713, 0.99842343, 0.99916774, 0.49319841],
+                             [- 6.27293340, -0.00051598, 0.00031614, 7.27241743, 0.99842369, 0.99916788, 0.49319849],
+                             [- 6.27293361, -0.00051589, 0.00031609, 7.27241772, 0.99842395, 0.99916802, 0.49319850],
+                             [- 6.27293382, -0.00051581, 0.00031604, 7.27241801, 0.99842422, 0.99916816, 0.49319856],
+                             [- 6.27293402, -0.00051572, 0.00031599, 7.27241830, 0.99842448, 0.99916829, 0.49319860],
+                             [- 6.27293423, -0.00051563, 0.00031593, 7.27241859, 0.99842474, 0.99916843, 0.49319855],
+                             [- 6.27293443, -0.00051555, 0.00031588, 7.27241888, 0.99842500, 0.99916857, 0.49319861],
+                             [- 6.27293464, -0.00051546, 0.00031583, 7.27241918, 0.99842527, 0.99916871, 0.49319870],
+                             [- 6.27293484, -0.00051538, 0.00031578, 7.27241947, 0.99842553, 0.99916885, 0.49319866],
+                             [- 6.27293505, -0.00051529, 0.00031572, 7.27241976, 0.99842579, 0.99916899, 0.49319873],
+                             [- 6.27293525, -0.00051520, 0.00031567, 7.27242005, 0.99842605, 0.99916912, 0.49319872],
+                             [- 6.27293546, -0.00051512, 0.00031562, 7.27242034, 0.99842632, 0.99916926, 0.49319875],
+                             [- 6.27293566, -0.00051503, 0.00031557, 7.27242063, 0.99842658, 0.99916940, 0.49319885],
+                             [- 6.27293587, -0.00051495, 0.00031551, 7.27242092, 0.99842684, 0.99916954, 0.49319881],
+                             [- 6.27293607, -0.00051486, 0.00031546, 7.27242121, 0.99842710, 0.99916968, 0.49319885],
+                             [- 6.27293628, -0.00051478, 0.00031541, 7.27242150, 0.99842736, 0.99916982, 0.49319897],
+                             [- 6.27293648, -0.00051469, 0.00031536, 7.27242179, 0.99842762, 0.99916995, 0.49319898],
+                             [- 6.27293669, -0.00051461, 0.00031530, 7.27242208, 0.99842789, 0.99917009, 0.49319895],
+                             [- 6.27293689, -0.00051452, 0.00031525, 7.27242237, 0.99842815, 0.99917023, 0.49319902],
+                             [- 6.27293710, -0.00051443, 0.00031520, 7.27242266, 0.99842841, 0.99917037, 0.49319899],
+                             [- 6.27293730, -0.00051435, 0.00031515, 7.27242295, 0.99842867, 0.99917051, 0.49319907],
+                             [- 6.27293751, -0.00051426, 0.00031509, 7.27242324, 0.99842893, 0.99917064, 0.49319910],
+                             [- 6.27293771, -0.00051418, 0.00031504, 7.27242353, 0.99842919, 0.99917078, 0.49319911],
+                             [- 6.27293792, -0.00051409, 0.00031499, 7.27242382, 0.99842945, 0.99917092, 0.49319911],
+                             [- 6.27293812, -0.00051401, 0.00031494, 7.27242411, 0.99842971, 0.99917106, 0.49319918],
+                             [- 6.27293832, -0.00051392, 0.00031488, 7.27242440, 0.99842997, 0.99917119, 0.49319923],
+                             [- 6.27293853, -0.00051384, 0.00031483, 7.27242469, 0.99843024, 0.99917133, 0.49319919],
+                             [- 6.27293873, -0.00051375, 0.00031478, 7.27242498, 0.99843050, 0.99917147, 0.49319924],
+                             [- 6.27293894, -0.00051367, 0.00031473, 7.27242527, 0.99843076, 0.99917161, 0.49319925],
+                             [- 6.27293914, -0.00051358, 0.00031467, 7.27242556, 0.99843102, 0.99917174, 0.49319934],
+                             [- 6.27293934, -0.00051350, 0.00031462, 7.27242585, 0.99843128, 0.99917188, 0.49319932],
+                             [- 6.27293955, -0.00051341, 0.00031457, 7.27242614, 0.99843154, 0.99917202, 0.49319938],
+                             [- 6.27293975, -0.00051333, 0.00031452, 7.27242643, 0.99843180, 0.99917216, 0.49319942],
+                             [- 6.27293995, -0.00051324, 0.00031447, 7.27242671, 0.99843206, 0.99917229, 0.49319947],
+                             [- 6.27294016, -0.00051315, 0.00031441, 7.27242700, 0.99843232, 0.99917243, 0.49319948],
+                             [- 6.27294036, -0.00051307, 0.00031436, 7.27242729, 0.99843258, 0.99917257, 0.49319954],
+                             [- 6.27294057, -0.00051298, 0.00031431, 7.27242758, 0.99843284, 0.99917271, 0.49319956],
+                             [- 6.27294077, -0.00051290, 0.00031426, 7.27242787, 0.99843310, 0.99917284, 0.49319957],
+                             [- 6.27294097, -0.00051281, 0.00031421, 7.27242816, 0.99843336, 0.99917298, 0.49319962],
+                             [- 6.27294118, -0.00051273, 0.00031415, 7.27242845, 0.99843362, 0.99917312, 0.49319969],
+                             [- 6.27294138, -0.00051265, 0.00031410, 7.27242873, 0.99843388, 0.99917325, 0.49319972],
+                             [- 6.27294158, -0.00051256, 0.00031405, 7.27242902, 0.99843414, 0.99917339, 0.49319967],
+                             [- 6.27294178, -0.00051248, 0.00031400, 7.27242931, 0.99843439, 0.99917353, 0.49319971],
+                             [- 6.27294199, -0.00051239, 0.00031395, 7.27242960, 0.99843465, 0.99917366, 0.49319975],
+                             [- 6.27294219, -0.00051231, 0.00031389, 7.27242988, 0.99843491, 0.99917380, 0.49319976],
+                             [- 6.27294239, -0.00051222, 0.00031384, 7.27243017, 0.99843517, 0.99917394, 0.49319985],
+                             [- 6.27294260, -0.00051214, 0.00031379, 7.27243046, 0.99843543, 0.99917407, 0.49319980],
+                             [- 6.27294280, -0.00051205, 0.00031374, 7.27243075, 0.99843569, 0.99917421, 0.49319987],
+                             [- 6.27294300, -0.00051197, 0.00031369, 7.27243103, 0.99843595, 0.99917435, 0.49319991],
+                             [- 6.27294320, -0.00051188, 0.00031363, 7.27243132, 0.99843621, 0.99917448, 0.49319996],
+                             [- 6.27294341, -0.00051180, 0.00031358, 7.27243161, 0.99843647, 0.99917462, 0.49320001],
+                             [- 6.27294361, -0.00051171, 0.00031353, 7.27243190, 0.99843673, 0.99917476, 0.49319998],
+                             [- 6.27294381, -0.00051163, 0.00031348, 7.27243218, 0.99843698, 0.99917489, 0.49320000],
+                             [- 6.27294401, -0.00051154, 0.00031343, 7.27243247, 0.99843724, 0.99917503, 0.49320003],
+                             [- 6.27294422, -0.00051146, 0.00031337, 7.27243276, 0.99843750, 0.99917517, 0.49320007],
+                             [- 6.27294442, -0.00051137, 0.00031332, 7.27243304, 0.99843776, 0.99917530, 0.49320006],
+                             [- 6.27294462, -0.00051129, 0.00031327, 7.27243333, 0.99843802, 0.99917544, 0.49320012],
+                             [- 6.27294482, -0.00051121, 0.00031322, 7.27243362, 0.99843827, 0.99917558, 0.49320018],
+                             [- 6.27294502, -0.00051112, 0.00031317, 7.27243390, 0.99843853, 0.99917571, 0.49320018],
+                             [- 6.27294523, -0.00051104, 0.00031312, 7.27243419, 0.99843879, 0.99917585, 0.49320017],
+                             [- 6.27294543, -0.00051095, 0.00031306, 7.27243448, 0.99843905, 0.99917598, 0.49320022],
+                             [- 6.27294563, -0.00051087, 0.00031301, 7.27243476, 0.99843931, 0.99917612, 0.49320033],
+                             [- 6.27294583, -0.00051078, 0.00031296, 7.27243505, 0.99843956, 0.99917626, 0.49320035],
+                             [- 6.27294603, -0.00051070, 0.00031291, 7.27243533, 0.99843982, 0.99917639, 0.49320035],
+                             [- 6.27294623, -0.00051062, 0.00031286, 7.27243562, 0.99844008, 0.99917653, 0.49320037],
+                             [- 6.27294644, -0.00051053, 0.00031281, 7.27243590, 0.99844034, 0.99917666, 0.49320040],
+                             [- 6.27294664, -0.00051045, 0.00031275, 7.27243619, 0.99844059, 0.99917680, 0.49320046],
+                             [- 6.27294684, -0.00051036, 0.00031270, 7.27243648, 0.99844085, 0.99917693, 0.49320050],
+                             [- 6.27294704, -0.00051028, 0.00031265, 7.27243676, 0.99844111, 0.99917707, 0.49320049],
+                             [- 6.27294724, -0.00051019, 0.00031260, 7.27243705, 0.99844136, 0.99917721, 0.49320054],
+                             [- 6.27294744, -0.00051011, 0.00031255, 7.27243733, 0.99844162, 0.99917734, 0.49320055],
+                             [- 6.27294764, -0.00051003, 0.00031250, 7.27243762, 0.99844188, 0.99917748, 0.49320064],
+                             [- 6.27294784, -0.00050994, 0.00031244, 7.27243790, 0.99844214, 0.99917761, 0.49320065],
+                             [- 6.27294805, -0.00050986, 0.00031239, 7.27243819, 0.99844239, 0.99917775, 0.49320067],
+                             [- 6.27294825, -0.00050977, 0.00031234, 7.27243847, 0.99844265, 0.99917788, 0.49320073],
+                             [- 6.27294845, -0.00050969, 0.00031229, 7.27243876, 0.99844291, 0.99917802, 0.49320072],
+                             [- 6.27294865, -0.00050961, 0.00031224, 7.27243904, 0.99844316, 0.99917815, 0.49320076],
+                             [- 6.27294885, -0.00050952, 0.00031219, 7.27243933, 0.99844342, 0.99917829, 0.49320077],
+                             [- 6.27294905, -0.00050944, 0.00031214, 7.27243961, 0.99844367, 0.99917843, 0.49320076],
+                             [- 6.27294925, -0.00050936, 0.00031208, 7.27243989, 0.99844393, 0.99917856, 0.49320084],
+                             [- 6.27294945, -0.00050927, 0.00031203, 7.27244018, 0.99844419, 0.99917870, 0.49320087],
+                             [- 6.27294965, -0.00050919, 0.00031198, 7.27244046, 0.99844444, 0.99917883, 0.49320088],
+                             [- 6.27294985, -0.00050910, 0.00031193, 7.27244075, 0.99844470, 0.99917897, 0.49320097],
+                             [- 6.27295005, -0.00050902, 0.00031188, 7.27244103, 0.99844495, 0.99917910, 0.49320091],
+                             [- 6.27295025, -0.00050894, 0.00031183, 7.27244132, 0.99844521, 0.99917924, 0.49320097],
+                             [- 6.27295045, -0.00050885, 0.00031178, 7.27244160, 0.99844547, 0.99917937, 0.49320101],
+                             [- 6.27295065, -0.00050877, 0.00031173, 7.27244188, 0.99844572, 0.99917951, 0.49320102],
+                             [- 6.27295085, -0.00050869, 0.00031167, 7.27244217, 0.99844598, 0.99917964, 0.49320101],
+                             [- 6.27295105, -0.00050860, 0.00031162, 7.27244245, 0.99844623, 0.99917978, 0.49320112],
+                             [- 6.27295125, -0.00050852, 0.00031157, 7.27244273, 0.99844649, 0.99917991, 0.49320117],
+                             [- 6.27295145, -0.00050844, 0.00031152, 7.27244302, 0.99844674, 0.99918004, 0.49320117],
+                             [- 6.27295165, -0.00050835, 0.00031147, 7.27244330, 0.99844700, 0.99918018, 0.49320119],
+                             [- 6.27295185, -0.00050827, 0.00031142, 7.27244358, 0.99844725, 0.99918031, 0.49320122],
+                             [- 6.27295205, -0.00050818, 0.00031137, 7.27244387, 0.99844751, 0.99918045, 0.49320128],
+                             [- 6.27295225, -0.00050810, 0.00031132, 7.27244415, 0.99844776, 0.99918058, 0.49320130],
+                             [- 6.27295245, -0.00050802, 0.00031126, 7.27244443, 0.99844802, 0.99918072, 0.49320132],
+                             [- 6.27295265, -0.00050793, 0.00031121, 7.27244472, 0.99844827, 0.99918085, 0.49320130],
+                             [- 6.27295285, -0.00050785, 0.00031116, 7.27244500, 0.99844853, 0.99918099, 0.49320137],
+                             [- 6.27295305, -0.00050777, 0.00031111, 7.27244528, 0.99844878, 0.99918112, 0.49320141],
+                             [- 6.27295325, -0.00050768, 0.00031106, 7.27244556, 0.99844904, 0.99918126, 0.49320145],
+                             [- 6.27295345, -0.00050760, 0.00031101, 7.27244585, 0.99844929, 0.99918139, 0.49320144],
+                             [- 6.27295365, -0.00050752, 0.00031096, 7.27244613, 0.99844955, 0.99918152, 0.49320149],
+                             [- 6.27295385, -0.00050743, 0.00031091, 7.27244641, 0.99844980, 0.99918166, 0.49320154],
+                             [- 6.27295404, -0.00050735, 0.00031086, 7.27244669, 0.99845005, 0.99918179, 0.49320156],
+                             [- 6.27295424, -0.00050727, 0.00031081, 7.27244697, 0.99845031, 0.99918193, 0.49320161],
+                             [- 6.27295444, -0.00050719, 0.00031075, 7.27244726, 0.99845056, 0.99918206, 0.49320163],
+                             [- 6.27295464, -0.00050710, 0.00031070, 7.27244754, 0.99845082, 0.99918219, 0.49320168],
+                             [- 6.27295484, -0.00050702, 0.00031065, 7.27244782, 0.99845107, 0.99918233, 0.49320163],
+                             [- 6.27295504, -0.00050694, 0.00031060, 7.27244810, 0.99845132, 0.99918246, 0.49320171],
+                             [- 6.27295524, -0.00050685, 0.00031055, 7.27244838, 0.99845158, 0.99918260, 0.49320174],
+                             [- 6.27295544, -0.00050677, 0.00031050, 7.27244867, 0.99845183, 0.99918273, 0.49320177],
+                             [- 6.27295563, -0.00050669, 0.00031045, 7.27244895, 0.99845208, 0.99918286, 0.49320176],
+                             [- 6.27295583, -0.00050660, 0.00031040, 7.27244923, 0.99845234, 0.99918300, 0.49320182],
+                             [- 6.27295603, -0.00050652, 0.00031035, 7.27244951, 0.99845259, 0.99918313, 0.49320186],
+                             [- 6.27295623, -0.00050644, 0.00031030, 7.27244979, 0.99845284, 0.99918327, 0.49320185],
+                             [- 6.27295643, -0.00050636, 0.00031025, 7.27245007, 0.99845310, 0.99918340, 0.49320186],
+                             [- 6.27295663, -0.00050627, 0.00031019, 7.27245035, 0.99845335, 0.99918353, 0.49320197],
+                             [- 6.27295682, -0.00050619, 0.00031014, 7.27245063, 0.99845360, 0.99918367, 0.49320197],
+                             [- 6.27295702, -0.00050611, 0.00031009, 7.27245091, 0.99845386, 0.99918380, 0.49320194],
+                             [- 6.27295722, -0.00050602, 0.00031004, 7.27245120, 0.99845411, 0.99918393, 0.49320202],
+                             [- 6.27295742, -0.00050594, 0.00030999, 7.27245148, 0.99845436, 0.99918407, 0.49320205],
+                             [- 6.27295762, -0.00050586, 0.00030994, 7.27245176, 0.99845462, 0.99918420, 0.49320207],
+                             [- 6.27295781, -0.00050578, 0.00030989, 7.27245204, 0.99845487, 0.99918433, 0.49320207],
+                             [- 6.27295801, -0.00050569, 0.00030984, 7.27245232, 0.99845512, 0.99918447, 0.49320217],
+                             [- 6.27295821, -0.00050561, 0.00030979, 7.27245260, 0.99845537, 0.99918460, 0.49320221],
+                             [- 6.27295841, -0.00050553, 0.00030974, 7.27245288, 0.99845563, 0.99918473, 0.49320219],
+                             [- 6.27295860, -0.00050545, 0.00030969, 7.27245316, 0.99845588, 0.99918487, 0.49320222],
+                             [- 6.27295880, -0.00050536, 0.00030964, 7.27245344, 0.99845613, 0.99918500, 0.49320228],
+                             [- 6.27295900, -0.00050528, 0.00030959, 7.27245372, 0.99845638, 0.99918513, 0.49320230],
+                             [- 6.27295920, -0.00050520, 0.00030954, 7.27245400, 0.99845663, 0.99918526, 0.49320235],
+                             [- 6.27295939, -0.00050512, 0.00030949, 7.27245428, 0.99845689, 0.99918540, 0.49320231],
+                             [- 6.27295959, -0.00050503, 0.00030944, 7.27245456, 0.99845714, 0.99918553, 0.49320239],
+                             [- 6.27295979, -0.00050495, 0.00030938, 7.27245484, 0.99845739, 0.99918566, 0.49320239],
+                             [- 6.27295998, -0.00050487, 0.00030933, 7.27245512, 0.99845764, 0.99918580, 0.49320243],
+                             [- 6.27296018, -0.00050479, 0.00030928, 7.27245539, 0.99845789, 0.99918593, 0.49320240],
+                             [- 6.27296038, -0.00050470, 0.00030923, 7.27245567, 0.99845814, 0.99918606, 0.49320248],
+                             [- 6.27296058, -0.00050462, 0.00030918, 7.27245595, 0.99845840, 0.99918619, 0.49320254],
+                             [- 6.27296077, -0.00050454, 0.00030913, 7.27245623, 0.99845865, 0.99918633, 0.49320254],
+                             [- 6.27296097, -0.00050446, 0.00030908, 7.27245651, 0.99845890, 0.99918646, 0.49320257],
+                             [- 6.27296117, -0.00050438, 0.00030903, 7.27245679, 0.99845915, 0.99918659, 0.49320260],
+                             [- 6.27296136, -0.00050429, 0.00030898, 7.27245707, 0.99845940, 0.99918673, 0.49320260],
+                             [- 6.27296156, -0.00050421, 0.00030893, 7.27245735, 0.99845965, 0.99918686, 0.49320264],
+                             [- 6.27296176, -0.00050413, 0.00030888, 7.27245763, 0.99845990, 0.99918699, 0.49320270],
+                             [- 6.27296195, -0.00050405, 0.00030883, 7.27245790, 0.99846015, 0.99918712, 0.49320271],
+                             [- 6.27296215, -0.00050397, 0.00030878, 7.27245818, 0.99846040, 0.99918726, 0.49320271],
+                             [- 6.27296234, -0.00050388, 0.00030873, 7.27245846, 0.99846066, 0.99918739, 0.49320279],
+                             [- 6.27296254, -0.00050380, 0.00030868, 7.27245874, 0.99846091, 0.99918752, 0.49320285],
+                             [- 6.27296274, -0.00050372, 0.00030863, 7.27245902, 0.99846116, 0.99918765, 0.49320278],
+                             [- 6.27296293, -0.00050364, 0.00030858, 7.27245930, 0.99846141, 0.99918778, 0.49320286],
+                             [- 6.27296313, -0.00050356, 0.00030853, 7.27245957, 0.99846166, 0.99918792, 0.49320284],
+                             [- 6.27296332, -0.00050347, 0.00030848, 7.27245985, 0.99846191, 0.99918805, 0.49320294],
+                             [- 6.27296352, -0.00050339, 0.00030843, 7.27246013, 0.99846216, 0.99918818, 0.49320297],
+                             [- 6.27296372, -0.00050331, 0.00030838, 7.27246041, 0.99846241, 0.99918831, 0.49320295],
+                             [- 6.27296391, -0.00050323, 0.00030833, 7.27246068, 0.99846266, 0.99918844, 0.49320301],
+                             [- 6.27296411, -0.00050315, 0.00030828, 7.27246096, 0.99846291, 0.99918858, 0.49320303],
+                             [- 6.27296430, -0.00050306, 0.00030823, 7.27246124, 0.99846316, 0.99918871, 0.49320305],
+                             [- 6.27296450, -0.00050298, 0.00030818, 7.27246152, 0.99846341, 0.99918884, 0.49320310],
+                             [- 6.27296469, -0.00050290, 0.00030813, 7.27246179, 0.99846366, 0.99918897, 0.49320314],
+                             [- 6.27296489, -0.00050282, 0.00030808, 7.27246207, 0.99846391, 0.99918910, 0.49320318],
+                             [- 6.27296509, -0.00050274, 0.00030803, 7.27246235, 0.99846416, 0.99918924, 0.49320319],
+                             [- 6.27296528, -0.00050266, 0.00030798, 7.27246263, 0.99846441, 0.99918937, 0.49320326],
+                             [- 6.27296548, -0.00050257, 0.00030793, 7.27246290, 0.99846466, 0.99918950, 0.49320325],
+                             [- 6.27296567, -0.00050249, 0.00030788, 7.27246318, 0.99846490, 0.99918963, 0.49320329],
+                             [- 6.27296587, -0.00050241, 0.00030783, 7.27246346, 0.99846515, 0.99918976, 0.49320330],
+                             [- 6.27296606, -0.00050233, 0.00030778, 7.27246373, 0.99846540, 0.99918989, 0.49320333],
+                             [- 6.27296626, -0.00050225, 0.00030773, 7.27246401, 0.99846565, 0.99919002, 0.49320339],
+                             [- 6.27296645, -0.00050217, 0.00030768, 7.27246429, 0.99846590, 0.99919016, 0.49320339],
+                             [- 6.27296665, -0.00050209, 0.00030763, 7.27246456, 0.99846615, 0.99919029, 0.49320338],
+                             [- 6.27296684, -0.00050200, 0.00030758, 7.27246484, 0.99846640, 0.99919042, 0.49320344],
+                             [- 6.27296704, -0.00050192, 0.00030753, 7.27246511, 0.99846665, 0.99919055, 0.49320353],
+                             [- 6.27296723, -0.00050184, 0.00030748, 7.27246539, 0.99846690, 0.99919068, 0.49320349],
+                             [- 6.27296743, -0.00050176, 0.00030743, 7.27246567, 0.99846715, 0.99919081, 0.49320357],
+                             [- 6.27296762, -0.00050168, 0.00030738, 7.27246594, 0.99846739, 0.99919094, 0.49320354],
+                             [- 6.27296781, -0.00050160, 0.00030733, 7.27246622, 0.99846764, 0.99919108, 0.49320360],
+                             [- 6.27296801, -0.00050152, 0.00030728, 7.27246649, 0.99846789, 0.99919121, 0.49320366],
+                             [- 6.27296820, -0.00050143, 0.00030723, 7.27246677, 0.99846814, 0.99919134, 0.49320363],
+                             [- 6.27296840, -0.00050135, 0.00030718, 7.27246704, 0.99846839, 0.99919147, 0.49320369],
+                             [- 6.27296859, -0.00050127, 0.00030713, 7.27246732, 0.99846864, 0.99919160, 0.49320376],
+                             [- 6.27296879, -0.00050119, 0.00030708, 7.27246760, 0.99846888, 0.99919173, 0.49320377],
+                             [- 6.27296898, -0.00050111, 0.00030703, 7.27246787, 0.99846913, 0.99919186, 0.49320381],
+                             [- 6.27296917, -0.00050103, 0.00030698, 7.27246815, 0.99846938, 0.99919199, 0.49320377],
+                             [- 6.27296937, -0.00050095, 0.00030693, 7.27246842, 0.99846963, 0.99919212, 0.49320384],
+                             [- 6.27296956, -0.00050087, 0.00030688, 7.27246870, 0.99846987, 0.99919225, 0.49320380],
+                             [- 6.27296976, -0.00050079, 0.00030683, 7.27246897, 0.99847012, 0.99919238, 0.49320387],
+                             [- 6.27296995, -0.00050070, 0.00030678, 7.27246925, 0.99847037, 0.99919251, 0.49320387],
+                             [- 6.27297014, -0.00050062, 0.00030673, 7.27246952, 0.99847062, 0.99919265, 0.49320397],
+                             [- 6.27297034, -0.00050054, 0.00030668, 7.27246980, 0.99847086, 0.99919278, 0.49320397],
+                             [- 6.27297053, -0.00050046, 0.00030663, 7.27247007, 0.99847111, 0.99919291, 0.49320399],
+                             [- 6.27297073, -0.00050038, 0.00030658, 7.27247034, 0.99847136, 0.99919304, 0.49320405],
+                             [- 6.27297092, -0.00050030, 0.00030653, 7.27247062, 0.99847161, 0.99919317, 0.49320409],
+                             [- 6.27297111, -0.00050022, 0.00030648, 7.27247089, 0.99847185, 0.99919330, 0.49320412],
+                             [- 6.27297131, -0.00050014, 0.00030643, 7.27247117, 0.99847210, 0.99919343, 0.49320414],
+                             [- 6.27297150, -0.00050006, 0.00030638, 7.27247144, 0.99847235, 0.99919356, 0.49320414],
+                             [- 6.27297169, -0.00049998, 0.00030633, 7.27247172, 0.99847259, 0.99919369, 0.49320417],
+                             [- 6.27297189, -0.00049990, 0.00030629, 7.27247199, 0.99847284, 0.99919382, 0.49320418],
+                             [- 6.27297208, -0.00049982, 0.00030624, 7.27247226, 0.99847309, 0.99919395, 0.49320420],
+                             [- 6.27297227, -0.00049973, 0.00030619, 7.27247254, 0.99847333, 0.99919408, 0.49320426],
+                             [- 6.27297246, -0.00049965, 0.00030614, 7.27247281, 0.99847358, 0.99919421, 0.49320420],
+                             [- 6.27297266, -0.00049957, 0.00030609, 7.27247308, 0.99847383, 0.99919434, 0.49320435],
+                             [- 6.27297285, -0.00049949, 0.00030604, 7.27247336, 0.99847407, 0.99919447, 0.49320431],
+                             [- 6.27297304, -0.00049941, 0.00030599, 7.27247363, 0.99847432, 0.99919460, 0.49320437],
+                             [- 6.27297324, -0.00049933, 0.00030594, 7.27247390, 0.99847457, 0.99919473, 0.49320437],
+                             [- 6.27297343, -0.00049925, 0.00030589, 7.27247418, 0.99847481, 0.99919486, 0.49320443],
+                             [- 6.27297362, -0.00049917, 0.00030584, 7.27247445, 0.99847506, 0.99919499, 0.49320448],
+                             [- 6.27297381, -0.00049909, 0.00030579, 7.27247472, 0.99847530, 0.99919512, 0.49320448],
+                             [- 6.27297401, -0.00049901, 0.00030574, 7.27247500, 0.99847555, 0.99919525, 0.49320449],
+                             [- 6.27297420, -0.00049893, 0.00030569, 7.27247527, 0.99847580, 0.99919538, 0.49320451],
+                             [- 6.27297439, -0.00049885, 0.00030564, 7.27247554, 0.99847604, 0.99919551, 0.49320453],
+                             [- 6.27297458, -0.00049877, 0.00030559, 7.27247582, 0.99847629, 0.99919564, 0.49320461],
+                             [- 6.27297478, -0.00049869, 0.00030554, 7.27247609, 0.99847653, 0.99919577, 0.49320461],
+                             [- 6.27297497, -0.00049861, 0.00030550, 7.27247636, 0.99847678, 0.99919590, 0.49320465],
+                             [- 6.27297516, -0.00049853, 0.00030545, 7.27247663, 0.99847702, 0.99919603, 0.49320475],
+                             [- 6.27297535, -0.00049845, 0.00030540, 7.27247691, 0.99847727, 0.99919616, 0.49320473],
+                             [- 6.27297554, -0.00049837, 0.00030535, 7.27247718, 0.99847751, 0.99919629, 0.49320474],
+                             [- 6.27297574, -0.00049829, 0.00030530, 7.27247745, 0.99847776, 0.99919641, 0.49320475],
+                             [- 6.27297593, -0.00049821, 0.00030525, 7.27247772, 0.99847800, 0.99919654, 0.49320486],
+                             [- 6.27297612, -0.00049813, 0.00030520, 7.27247799, 0.99847825, 0.99919667, 0.49320483],
+                             [- 6.27297631, -0.00049805, 0.00030515, 7.27247827, 0.99847849, 0.99919680, 0.49320494],
+                             [- 6.27297650, -0.00049797, 0.00030510, 7.27247854, 0.99847874, 0.99919693, 0.49320494],
+                             [- 6.27297670, -0.00049789, 0.00030505, 7.27247881, 0.99847898, 0.99919706, 0.49320488],
+                             [- 6.27297689, -0.00049781, 0.00030500, 7.27247908, 0.99847923, 0.99919719, 0.49320497],
+                             [- 6.27297708, -0.00049773, 0.00030495, 7.27247935, 0.99847947, 0.99919732, 0.49320498],
+                             [- 6.27297727, -0.00049765, 0.00030491, 7.27247962, 0.99847972, 0.99919745, 0.49320504],
+                             [- 6.27297746, -0.00049757, 0.00030486, 7.27247990, 0.99847996, 0.99919758, 0.49320498],
+                             [- 6.27297765, -0.00049749, 0.00030481, 7.27248017, 0.99848021, 0.99919771, 0.49320508],
+                             [- 6.27297784, -0.00049741, 0.00030476, 7.27248044, 0.99848045, 0.99919784, 0.49320506],
+                             [- 6.27297804, -0.00049733, 0.00030471, 7.27248071, 0.99848070, 0.99919796, 0.49320512],
+                             [- 6.27297823, -0.00049725, 0.00030466, 7.27248098, 0.99848094, 0.99919809, 0.49320520],
+                             [- 6.27297842, -0.00049717, 0.00030461, 7.27248125, 0.99848118, 0.99919822, 0.49320518],
+                             [- 6.27297861, -0.00049709, 0.00030456, 7.27248152, 0.99848143, 0.99919835, 0.49320519],
+                             [- 6.27297880, -0.00049701, 0.00030451, 7.27248179, 0.99848167, 0.99919848, 0.49320524],
+                             [- 6.27297899, -0.00049693, 0.00030446, 7.27248206, 0.99848192, 0.99919861, 0.49320527],
+                             [- 6.27297918, -0.00049685, 0.00030442, 7.27248233, 0.99848216, 0.99919874, 0.49320529],
+                             [- 6.27297937, -0.00049677, 0.00030437, 7.27248260, 0.99848240, 0.99919887, 0.49320530],
+                             [- 6.27297956, -0.00049669, 0.00030432, 7.27248288, 0.99848265, 0.99919899, 0.49320533],
+                             [- 6.27297975, -0.00049661, 0.00030427, 7.27248315, 0.99848289, 0.99919912, 0.49320533],
+                             [- 6.27297994, -0.00049653, 0.00030422, 7.27248342, 0.99848313, 0.99919925, 0.49320545],
+                             [- 6.27298013, -0.00049645, 0.00030417, 7.27248369, 0.99848338, 0.99919938, 0.49320550],
+                             [- 6.27298033, -0.00049637, 0.00030412, 7.27248396, 0.99848362, 0.99919951, 0.49320544],
+                             [- 6.27298052, -0.00049629, 0.00030407, 7.27248423, 0.99848386, 0.99919964, 0.49320542],
+                             [- 6.27298071, -0.00049621, 0.00030403, 7.27248450, 0.99848411, 0.99919976, 0.49320549],
+                             [- 6.27298090, -0.00049613, 0.00030398, 7.27248477, 0.99848435, 0.99919989, 0.49320553],
+                             [- 6.27298109, -0.00049605, 0.00030393, 7.27248504, 0.99848459, 0.99920002, 0.49320549],
+                             [- 6.27298128, -0.00049597, 0.00030388, 7.27248531, 0.99848484, 0.99920015, 0.49320559],
+                             [- 6.27298147, -0.00049589, 0.00030383, 7.27248557, 0.99848508, 0.99920028, 0.49320560],
+                             [- 6.27298166, -0.00049581, 0.00030378, 7.27248584, 0.99848532, 0.99920041, 0.49320562],
+                             [- 6.27298185, -0.00049573, 0.00030373, 7.27248611, 0.99848556, 0.99920053, 0.49320572],
+                             [- 6.27298204, -0.00049565, 0.00030368, 7.27248638, 0.99848581, 0.99920066, 0.49320570],
+                             [- 6.27298223, -0.00049557, 0.00030364, 7.27248665, 0.99848605, 0.99920079, 0.49320571],
+                             [- 6.27298242, -0.00049550, 0.00030359, 7.27248692, 0.99848629, 0.99920092, 0.49320573],
+                             [- 6.27298261, -0.00049542, 0.00030354, 7.27248719, 0.99848653, 0.99920105, 0.49320576],
+                             [- 6.27298280, -0.00049534, 0.00030349, 7.27248746, 0.99848678, 0.99920117, 0.49320585],
+                             [- 6.27298299, -0.00049526, 0.00030344, 7.27248773, 0.99848702, 0.99920130, 0.49320584],
+                             [- 6.27298318, -0.00049518, 0.00030339, 7.27248800, 0.99848726, 0.99920143, 0.49320590],
+                             [- 6.27298336, -0.00049510, 0.00030334, 7.27248827, 0.99848750, 0.99920156, 0.49320592],
+                             [- 6.27298355, -0.00049502, 0.00030330, 7.27248853, 0.99848774, 0.99920168, 0.49320594],
+                             [- 6.27298374, -0.00049494, 0.00030325, 7.27248880, 0.99848799, 0.99920181, 0.49320595],
+                             [- 6.27298393, -0.00049486, 0.00030320, 7.27248907, 0.99848823, 0.99920194, 0.49320597],
+                             [- 6.27298412, -0.00049478, 0.00030315, 7.27248934, 0.99848847, 0.99920207, 0.49320596],
+                             [- 6.27298431, -0.00049470, 0.00030310, 7.27248961, 0.99848871, 0.99920220, 0.49320603],
+                             [- 6.27298450, -0.00049462, 0.00030305, 7.27248988, 0.99848895, 0.99920232, 0.49320613],
+                             [- 6.27298469, -0.00049455, 0.00030300, 7.27249014, 0.99848919, 0.99920245, 0.49320607],
+                             [- 6.27298488, -0.00049447, 0.00030296, 7.27249041, 0.99848944, 0.99920258, 0.49320616],
+                             [- 6.27298507, -0.00049439, 0.00030291, 7.27249068, 0.99848968, 0.99920270, 0.49320618],
+                             [- 6.27298526, -0.00049431, 0.00030286, 7.27249095, 0.99848992, 0.99920283, 0.49320613],
+                             [- 6.27298545, -0.00049423, 0.00030281, 7.27249122, 0.99849016, 0.99920296, 0.49320620],
+                             [- 6.27298563, -0.00049415, 0.00030276, 7.27249148, 0.99849040, 0.99920309, 0.49320622],
+                             [- 6.27298582, -0.00049407, 0.00030271, 7.27249175, 0.99849064, 0.99920321, 0.49320626],
+                             [- 6.27298601, -0.00049399, 0.00030267, 7.27249202, 0.99849088, 0.99920334, 0.49320625],
+                             [- 6.27298620, -0.00049391, 0.00030262, 7.27249229, 0.99849112, 0.99920347, 0.49320640],
+                             [- 6.27298639, -0.00049384, 0.00030257, 7.27249255, 0.99849136, 0.99920360, 0.49320640],
+                             [- 6.27298658, -0.00049376, 0.00030252, 7.27249282, 0.99849161, 0.99920372, 0.49320636],
+                             [- 6.27298677, -0.00049368, 0.00030247, 7.27249309, 0.99849185, 0.99920385, 0.49320641],
+                             [- 6.27298695, -0.00049360, 0.00030242, 7.27249336, 0.99849209, 0.99920398, 0.49320644],
+                             [- 6.27298714, -0.00049352, 0.00030238, 7.27249362, 0.99849233, 0.99920410, 0.49320643],
+                             [- 6.27298733, -0.00049344, 0.00030233, 7.27249389, 0.99849257, 0.99920423, 0.49320647],
+                             [- 6.27298752, -0.00049336, 0.00030228, 7.27249416, 0.99849281, 0.99920436, 0.49320649],
+                             [- 6.27298771, -0.00049328, 0.00030223, 7.27249442, 0.99849305, 0.99920448, 0.49320659],
+                             [- 6.27298790, -0.00049321, 0.00030218, 7.27249469, 0.99849329, 0.99920461, 0.49320657],
+                             [- 6.27298808, -0.00049313, 0.00030214, 7.27249496, 0.99849353, 0.99920474, 0.49320661],
+                             [- 6.27298827, -0.00049305, 0.00030209, 7.27249522, 0.99849377, 0.99920486, 0.49320660],
+                             [- 6.27298846, -0.00049297, 0.00030204, 7.27249549, 0.99849401, 0.99920499, 0.49320663],
+                             [- 6.27298865, -0.00049289, 0.00030199, 7.27249576, 0.99849425, 0.99920512, 0.49320673],
+                             [- 6.27298883, -0.00049281, 0.00030194, 7.27249602, 0.99849449, 0.99920524, 0.49320673],
+                             [- 6.27298902, -0.00049273, 0.00030189, 7.27249629, 0.99849473, 0.99920537, 0.49320669],
+                             [- 6.27298921, -0.00049266, 0.00030185, 7.27249655, 0.99849497, 0.99920550, 0.49320677],
+                             [- 6.27298940, -0.00049258, 0.00030180, 7.27249682, 0.99849521, 0.99920562, 0.49320680],
+                             [- 6.27298959, -0.00049250, 0.00030175, 7.27249709, 0.99849545, 0.99920575, 0.49320687],
+                             [- 6.27298977, -0.00049242, 0.00030170, 7.27249735, 0.99849569, 0.99920588, 0.49320693],
+                             [- 6.27298996, -0.00049234, 0.00030165, 7.27249762, 0.99849593, 0.99920600, 0.49320681],
+                             [- 6.27299015, -0.00049226, 0.00030161, 7.27249788, 0.99849616, 0.99920613, 0.49320699],
+                             [- 6.27299033, -0.00049219, 0.00030156, 7.27249815, 0.99849640, 0.99920626, 0.49320687],
+                             [- 6.27299052, -0.00049211, 0.00030151, 7.27249841, 0.99849664, 0.99920638, 0.49320699],
+                             [- 6.27299071, -0.00049203, 0.00030146, 7.27249868, 0.99849688, 0.99920651, 0.49320705],
+                             [- 6.27299090, -0.00049195, 0.00030141, 7.27249894, 0.99849712, 0.99920663, 0.49320709],
+                             [- 6.27299108, -0.00049187, 0.00030137, 7.27249921, 0.99849736, 0.99920676, 0.49320704],
+                             [- 6.27299127, -0.00049180, 0.00030132, 7.27249948, 0.99849760, 0.99920689, 0.49320700],
+                             [- 6.27299146, -0.00049172, 0.00030127, 7.27249974, 0.99849784, 0.99920701, 0.49320709],
+                             [- 6.27299164, -0.00049164, 0.00030122, 7.27250001, 0.99849808, 0.99920714, 0.49320722],
+                             [- 6.27299183, -0.00049156, 0.00030118, 7.27250027, 0.99849831, 0.99920726, 0.49320713],
+                             [- 6.27299202, -0.00049148, 0.00030113, 7.27250053, 0.99849855, 0.99920739, 0.49320717],
+                             [- 6.27299220, -0.00049140, 0.00030108, 7.27250080, 0.99849879, 0.99920752, 0.49320720],
+                             [- 6.27299239, -0.00049133, 0.00030103, 7.27250106, 0.99849903, 0.99920764, 0.49320724],
+                             [- 6.27299258, -0.00049125, 0.00030098, 7.27250133, 0.99849927, 0.99920777, 0.49320731],
+                             [- 6.27299276, -0.00049117, 0.00030094, 7.27250159, 0.99849951, 0.99920789, 0.49320733],
+                             [- 6.27299295, -0.00049109, 0.00030089, 7.27250186, 0.99849974, 0.99920802, 0.49320736],
+                             [- 6.27299314, -0.00049102, 0.00030084, 7.27250212, 0.99849998, 0.99920814, 0.49320742],
+                             [- 6.27299332, -0.00049094, 0.00030079, 7.27250239, 0.99850022, 0.99920827, 0.49320737],
+                             [- 6.27299351, -0.00049086, 0.00030075, 7.27250265, 0.99850046, 0.99920840, 0.49320741],
+                             [- 6.27299370, -0.00049078, 0.00030070, 7.27250291, 0.99850070, 0.99920852, 0.49320747],
+                             [- 6.27299388, -0.00049070, 0.00030065, 7.27250318, 0.99850093, 0.99920865, 0.49320746],
+                             [- 6.27299407, -0.00049063, 0.00030060, 7.27250344, 0.99850117, 0.99920877, 0.49320747],
+                             [- 6.27299425, -0.00049055, 0.00030055, 7.27250371, 0.99850141, 0.99920890, 0.49320753],
+                             [- 6.27299444, -0.00049047, 0.00030051, 7.27250397, 0.99850165, 0.99920902, 0.49320754],
+                             [- 6.27299463, -0.00049039, 0.00030046, 7.27250423, 0.99850188, 0.99920915, 0.49320761],
+                             [- 6.27299481, -0.00049032, 0.00030041, 7.27250450, 0.99850212, 0.99920927, 0.49320761],
+                             [- 6.27299500, -0.00049024, 0.00030036, 7.27250476, 0.99850236, 0.99920940, 0.49320763],
+                             [- 6.27299518, -0.00049016, 0.00030032, 7.27250502, 0.99850260, 0.99920952, 0.49320763],
+                             [- 6.27299537, -0.00049008, 0.00030027, 7.27250529, 0.99850283, 0.99920965, 0.49320764],
+                             [- 6.27299556, -0.00049000, 0.00030022, 7.27250555, 0.99850307, 0.99920977, 0.49320768],
+                             [- 6.27299574, -0.00048993, 0.00030017, 7.27250581, 0.99850331, 0.99920990, 0.49320774],
+                             [- 6.27299593, -0.00048985, 0.00030013, 7.27250608, 0.99850354, 0.99921002, 0.49320770],
+                             [- 6.27299611, -0.00048977, 0.00030008, 7.27250634, 0.99850378, 0.99921015, 0.49320782],
+                             [- 6.27299630, -0.00048969, 0.00030003, 7.27250660, 0.99850402, 0.99921027, 0.49320781],
+                             [- 6.27299648, -0.00048962, 0.00029998, 7.27250687, 0.99850426, 0.99921040, 0.49320784],
+                             [- 6.27299667, -0.00048954, 0.00029994, 7.27250713, 0.99850449, 0.99921052, 0.49320787],
+                             [- 6.27299685, -0.00048946, 0.00029989, 7.27250739, 0.99850473, 0.99921065, 0.49320791],
+                             [- 6.27299704, -0.00048938, 0.00029984, 7.27250765, 0.99850496, 0.99921077, 0.49320794],
+                             [- 6.27299722, -0.00048931, 0.00029979, 7.27250792, 0.99850520, 0.99921090, 0.49320795],
+                             [- 6.27299741, -0.00048923, 0.00029975, 7.27250818, 0.99850544, 0.99921102, 0.49320801],
+                             [- 6.27299759, -0.00048915, 0.00029970, 7.27250844, 0.99850567, 0.99921115, 0.49320802],
+                             [- 6.27299778, -0.00048908, 0.00029965, 7.27250870, 0.99850591, 0.99921127, 0.49320805],
+                             [- 6.27299796, -0.00048900, 0.00029960, 7.27250896, 0.99850615, 0.99921140, 0.49320810],
+                             [- 6.27299815, -0.00048892, 0.00029956, 7.27250923, 0.99850638, 0.99921152, 0.49320806],
+                             [- 6.27299833, -0.00048884, 0.00029951, 7.27250949, 0.99850662, 0.99921165, 0.49320815],
+                             [- 6.27299852, -0.00048877, 0.00029946, 7.27250975, 0.99850685, 0.99921177, 0.49320816],
+                             [- 6.27299870, -0.00048869, 0.00029941, 7.27251001, 0.99850709, 0.99921190, 0.49320817],
+                             [- 6.27299889, -0.00048861, 0.00029937, 7.27251027, 0.99850733, 0.99921202, 0.49320820],
+                             [- 6.27299907, -0.00048854, 0.00029932, 7.27251054, 0.99850756, 0.99921214, 0.49320826],
+                             [- 6.27299926, -0.00048846, 0.00029927, 7.27251080, 0.99850780, 0.99921227, 0.49320827],
+                             [- 6.27299944, -0.00048838, 0.00029923, 7.27251106, 0.99850803, 0.99921239, 0.49320823],
+                             [- 6.27299962, -0.00048830, 0.00029918, 7.27251132, 0.99850827, 0.99921252, 0.49320833],
+                             [- 6.27299981, -0.00048823, 0.00029913, 7.27251158, 0.99850850, 0.99921264, 0.49320833],
+                             [- 6.27299999, -0.00048815, 0.00029908, 7.27251184, 0.99850874, 0.99921277, 0.49320839],
+                             [- 6.27300018, -0.00048807, 0.00029904, 7.27251210, 0.99850897, 0.99921289, 0.49320841],
+                             [- 6.27300036, -0.00048800, 0.00029899, 7.27251236, 0.99850921, 0.99921301, 0.49320850],
+                             [- 6.27300055, -0.00048792, 0.00029894, 7.27251263, 0.99850944, 0.99921314, 0.49320846],
+                             [- 6.27300073, -0.00048784, 0.00029890, 7.27251289, 0.99850968, 0.99921326, 0.49320848],
+                             [- 6.27300091, -0.00048777, 0.00029885, 7.27251315, 0.99850991, 0.99921339, 0.49320847],
+                             [- 6.27300110, -0.00048769, 0.00029880, 7.27251341, 0.99851015, 0.99921351, 0.49320858],
+                             [- 6.27300128, -0.00048761, 0.00029875, 7.27251367, 0.99851038, 0.99921363, 0.49320864],
+                             [- 6.27300146, -0.00048754, 0.00029871, 7.27251393, 0.99851062, 0.99921376, 0.49320855],
+                             [- 6.27300165, -0.00048746, 0.00029866, 7.27251419, 0.99851085, 0.99921388, 0.49320856],
+                             [- 6.27300183, -0.00048738, 0.00029861, 7.27251445, 0.99851109, 0.99921401, 0.49320863],
+                             [- 6.27300202, -0.00048730, 0.00029857, 7.27251471, 0.99851132, 0.99921413, 0.49320867],
+                             [- 6.27300220, -0.00048723, 0.00029852, 7.27251497, 0.99851156, 0.99921425, 0.49320861],
+                             [- 6.27300238, -0.00048715, 0.00029847, 7.27251523, 0.99851179, 0.99921438, 0.49320874],
+                             [- 6.27300257, -0.00048707, 0.00029842, 7.27251549, 0.99851202, 0.99921450, 0.49320874],
+                             [- 6.27300275, -0.00048700, 0.00029838, 7.27251575, 0.99851226, 0.99921462, 0.49320881],
+                             [- 6.27300293, -0.00048692, 0.00029833, 7.27251601, 0.99851249, 0.99921475, 0.49320880],
+                             [- 6.27300312, -0.00048685, 0.00029828, 7.27251627, 0.99851273, 0.99921487, 0.49320887],
+                             [- 6.27300330, -0.00048677, 0.00029824, 7.27251653, 0.99851296, 0.99921499, 0.49320886],
+                             [- 6.27300348, -0.00048669, 0.00029819, 7.27251679, 0.99851320, 0.99921512, 0.49320893],
+                             [- 6.27300367, -0.00048662, 0.00029814, 7.27251705, 0.99851343, 0.99921524, 0.49320893],
+                             [- 6.27300385, -0.00048654, 0.00029810, 7.27251731, 0.99851366, 0.99921536, 0.49320895],
+                             [- 6.27300403, -0.00048646, 0.00029805, 7.27251757, 0.99851390, 0.99921549, 0.49320892],
+                             [- 6.27300421, -0.00048639, 0.00029800, 7.27251783, 0.99851413, 0.99921561, 0.49320898],
+                             [- 6.27300440, -0.00048631, 0.00029796, 7.27251809, 0.99851436, 0.99921573, 0.49320901],
+                             [- 6.27300458, -0.00048623, 0.00029791, 7.27251835, 0.99851460, 0.99921586, 0.49320901],
+                             [- 6.27300476, -0.00048616, 0.00029786, 7.27251861, 0.99851483, 0.99921598, 0.49320912],
+                             [- 6.27300495, -0.00048608, 0.00029782, 7.27251886, 0.99851506, 0.99921610, 0.49320910],
+                             [- 6.27300513, -0.00048600, 0.00029777, 7.27251912, 0.99851530, 0.99921623, 0.49320913],
+                             [- 6.27300531, -0.00048593, 0.00029772, 7.27251938, 0.99851553, 0.99921635, 0.49320917],
+                             [- 6.27300549, -0.00048585, 0.00029768, 7.27251964, 0.99851576, 0.99921647, 0.49320916],
+                             [- 6.27300568, -0.00048578, 0.00029763, 7.27251990, 0.99851600, 0.99921660, 0.49320920],
+                             [- 6.27300586, -0.00048570, 0.00029758, 7.27252016, 0.99851623, 0.99921672, 0.49320924],
+                             [- 6.27300604, -0.00048562, 0.00029753, 7.27252042, 0.99851646, 0.99921684, 0.49320926],
+                             [- 6.27300622, -0.00048555, 0.00029749, 7.27252068, 0.99851669, 0.99921696, 0.49320930],
+                             [- 6.27300640, -0.00048547, 0.00029744, 7.27252093, 0.99851693, 0.99921709, 0.49320931],
+                             [- 6.27300659, -0.00048539, 0.00029739, 7.27252119, 0.99851716, 0.99921721, 0.49320938],
+                             [- 6.27300677, -0.00048532, 0.00029735, 7.27252145, 0.99851739, 0.99921733, 0.49320939],
+                             [- 6.27300695, -0.00048524, 0.00029730, 7.27252171, 0.99851763, 0.99921746, 0.49320948],
+                             [- 6.27300713, -0.00048517, 0.00029725, 7.27252197, 0.99851786, 0.99921758, 0.49320954],
+                             [- 6.27300732, -0.00048509, 0.00029721, 7.27252222, 0.99851809, 0.99921770, 0.49320950],
+                             [- 6.27300750, -0.00048501, 0.00029716, 7.27252248, 0.99851832, 0.99921782, 0.49320952],
+                             [- 6.27300768, -0.00048494, 0.00029712, 7.27252274, 0.99851855, 0.99921795, 0.49320954],
+                             [- 6.27300786, -0.00048486, 0.00029707, 7.27252300, 0.99851879, 0.99921807, 0.49320960],
+                             [- 6.27300804, -0.00048479, 0.00029702, 7.27252326, 0.99851902, 0.99921819, 0.49320959],
+                             [- 6.27300822, -0.00048471, 0.00029698, 7.27252351, 0.99851925, 0.99921831, 0.49320958],
+                             [- 6.27300841, -0.00048463, 0.00029693, 7.27252377, 0.99851948, 0.99921844, 0.49320965],
+                             [- 6.27300859, -0.00048456, 0.00029688, 7.27252403, 0.99851971, 0.99921856, 0.49320967],
+                             [- 6.27300877, -0.00048448, 0.00029684, 7.27252429, 0.99851995, 0.99921868, 0.49320972],
+                             [- 6.27300895, -0.00048441, 0.00029679, 7.27252454, 0.99852018, 0.99921880, 0.49320973],
+                             [- 6.27300913, -0.00048433, 0.00029674, 7.27252480, 0.99852041, 0.99921893, 0.49320972],
+                             [- 6.27300931, -0.00048426, 0.00029670, 7.27252506, 0.99852064, 0.99921905, 0.49320980],
+                             [- 6.27300949, -0.00048418, 0.00029665, 7.27252531, 0.99852087, 0.99921917, 0.49320981],
+                             [- 6.27300968, -0.00048410, 0.00029660, 7.27252557, 0.99852110, 0.99921929, 0.49320974],
+                             [- 6.27300986, -0.00048403, 0.00029656, 7.27252583, 0.99852134, 0.99921941, 0.49320985],
+                             [- 6.27301004, -0.00048395, 0.00029651, 7.27252608, 0.99852157, 0.99921954, 0.49320992],
+                             [- 6.27301022, -0.00048388, 0.00029646, 7.27252634, 0.99852180, 0.99921966, 0.49320992],
+                             [- 6.27301040, -0.00048380, 0.00029642, 7.27252660, 0.99852203, 0.99921978, 0.49320993],
+                             [- 6.27301058, -0.00048373, 0.00029637, 7.27252685, 0.99852226, 0.99921990, 0.49320993],
+                             [- 6.27301076, -0.00048365, 0.00029633, 7.27252711, 0.99852249, 0.99922002, 0.49321001],
+                             [- 6.27301094, -0.00048357, 0.00029628, 7.27252737, 0.99852272, 0.99922015, 0.49321003],
+                             [- 6.27301112, -0.00048350, 0.00029623, 7.27252762, 0.99852295, 0.99922027, 0.49321005],
+                             [- 6.27301130, -0.00048342, 0.00029619, 7.27252788, 0.99852318, 0.99922039, 0.49321008],
+                             [- 6.27301148, -0.00048335, 0.00029614, 7.27252814, 0.99852341, 0.99922051, 0.49321008],
+                             [- 6.27301166, -0.00048327, 0.00029609, 7.27252839, 0.99852364, 0.99922063, 0.49321010],
+                             [- 6.27301185, -0.00048320, 0.00029605, 7.27252865, 0.99852388, 0.99922075, 0.49321017],
+                             [- 6.27301203, -0.00048312, 0.00029600, 7.27252890, 0.99852411, 0.99922088, 0.49321023],
+                             [- 6.27301221, -0.00048305, 0.00029596, 7.27252916, 0.99852434, 0.99922100, 0.49321020],
+                             [- 6.27301239, -0.00048297, 0.00029591, 7.27252942, 0.99852457, 0.99922112, 0.49321023],
+                             [- 6.27301257, -0.00048290, 0.00029586, 7.27252967, 0.99852480, 0.99922124, 0.49321024],
+                             [- 6.27301275, -0.00048282, 0.00029582, 7.27252993, 0.99852503, 0.99922136, 0.49321030],
+                             [- 6.27301293, -0.00048275, 0.00029577, 7.27253018, 0.99852526, 0.99922148, 0.49321031],
+                             [- 6.27301311, -0.00048267, 0.00029572, 7.27253044, 0.99852549, 0.99922161, 0.49321030],
+                             [- 6.27301329, -0.00048259, 0.00029568, 7.27253069, 0.99852572, 0.99922173, 0.49321030],
+                             [- 6.27301347, -0.00048252, 0.00029563, 7.27253095, 0.99852595, 0.99922185, 0.49321039],
+                             [- 6.27301365, -0.00048244, 0.00029559, 7.27253120, 0.99852618, 0.99922197, 0.49321037],
+                             [- 6.27301383, -0.00048237, 0.00029554, 7.27253146, 0.99852641, 0.99922209, 0.49321046],
+                             [- 6.27301401, -0.00048229, 0.00029549, 7.27253171, 0.99852664, 0.99922221, 0.49321048],
+                             [- 6.27301419, -0.00048222, 0.00029545, 7.27253197, 0.99852687, 0.99922233, 0.49321049],
+                             [- 6.27301437, -0.00048214, 0.00029540, 7.27253222, 0.99852710, 0.99922245, 0.49321046],
+                             [- 6.27301455, -0.00048207, 0.00029536, 7.27253248, 0.99852732, 0.99922258, 0.49321053],
+                             [- 6.27301473, -0.00048199, 0.00029531, 7.27253273, 0.99852755, 0.99922270, 0.49321060],
+                             [- 6.27301491, -0.00048192, 0.00029526, 7.27253299, 0.99852778, 0.99922282, 0.49321066],
+                             [- 6.27301509, -0.00048184, 0.00029522, 7.27253324, 0.99852801, 0.99922294, 0.49321062],
+                             [- 6.27301526, -0.00048177, 0.00029517, 7.27253350, 0.99852824, 0.99922306, 0.49321065],
+                             [- 6.27301544, -0.00048169, 0.00029513, 7.27253375, 0.99852847, 0.99922318, 0.49321069],
+                             [- 6.27301562, -0.00048162, 0.00029508, 7.27253400, 0.99852870, 0.99922330, 0.49321066],
+                             [- 6.27301580, -0.00048154, 0.00029503, 7.27253426, 0.99852893, 0.99922342, 0.49321075],
+                             [- 6.27301598, -0.00048147, 0.00029499, 7.27253451, 0.99852916, 0.99922354, 0.49321074],
+                             [- 6.27301616, -0.00048139, 0.00029494, 7.27253477, 0.99852939, 0.99922366, 0.49321082],
+                             [- 6.27301634, -0.00048132, 0.00029490, 7.27253502, 0.99852962, 0.99922378, 0.49321081],
+                             [- 6.27301652, -0.00048124, 0.00029485, 7.27253528, 0.99852984, 0.99922391, 0.49321083],
+                             [- 6.27301670, -0.00048117, 0.00029480, 7.27253553, 0.99853007, 0.99922403, 0.49321094],
+                             [- 6.27301688, -0.00048109, 0.00029476, 7.27253578, 0.99853030, 0.99922415, 0.49321096],
+                             [- 6.27301706, -0.00048102, 0.00029471, 7.27253604, 0.99853053, 0.99922427, 0.49321093],
+                             [- 6.27301724, -0.00048095, 0.00029467, 7.27253629, 0.99853076, 0.99922439, 0.49321094],
+                             [- 6.27301741, -0.00048087, 0.00029462, 7.27253654, 0.99853099, 0.99922451, 0.49321098],
+                             [- 6.27301759, -0.00048080, 0.00029458, 7.27253680, 0.99853121, 0.99922463, 0.49321102],
+                             [- 6.27301777, -0.00048072, 0.00029453, 7.27253705, 0.99853144, 0.99922475, 0.49321101],
+                             [- 6.27301795, -0.00048065, 0.00029448, 7.27253730, 0.99853167, 0.99922487, 0.49321109],
+                             [- 6.27301813, -0.00048057, 0.00029444, 7.27253756, 0.99853190, 0.99922499, 0.49321107],
+                             [- 6.27301831, -0.00048050, 0.00029439, 7.27253781, 0.99853213, 0.99922511, 0.49321107],
+                             [- 6.27301849, -0.00048042, 0.00029435, 7.27253806, 0.99853235, 0.99922523, 0.49321110],
+                             [- 6.27301866, -0.00048035, 0.00029430, 7.27253832, 0.99853258, 0.99922535, 0.49321118],
+                             [- 6.27301884, -0.00048027, 0.00029426, 7.27253857, 0.99853281, 0.99922547, 0.49321119],
+                             [- 6.27301902, -0.00048020, 0.00029421, 7.27253882, 0.99853304, 0.99922559, 0.49321116],
+                             [- 6.27301920, -0.00048012, 0.00029416, 7.27253907, 0.99853327, 0.99922571, 0.49321127],
+                             [- 6.27301938, -0.00048005, 0.00029412, 7.27253933, 0.99853349, 0.99922583, 0.49321123],
+                             [- 6.27301956, -0.00047998, 0.00029407, 7.27253958, 0.99853372, 0.99922595, 0.49321129],
+                             [- 6.27301973, -0.00047990, 0.00029403, 7.27253983, 0.99853395, 0.99922607, 0.49321135],
+                             [- 6.27301991, -0.00047983, 0.00029398, 7.27254008, 0.99853418, 0.99922619, 0.49321135],
+                             [- 6.27302009, -0.00047975, 0.00029394, 7.27254034, 0.99853440, 0.99922631, 0.49321139],
+                             [- 6.27302027, -0.00047968, 0.00029389, 7.27254059, 0.99853463, 0.99922643, 0.49321146],
+                             [- 6.27302044, -0.00047960, 0.00029384, 7.27254084, 0.99853486, 0.99922655, 0.49321142],
+                             [- 6.27302062, -0.00047953, 0.00029380, 7.27254109, 0.99853508, 0.99922667, 0.49321144],
+                             [- 6.27302080, -0.00047946, 0.00029375, 7.27254135, 0.99853531, 0.99922679, 0.49321144],
+                             [- 6.27302098, -0.00047938, 0.00029371, 7.27254160, 0.99853554, 0.99922691, 0.49321157],
+                             [- 6.27302116, -0.00047931, 0.00029366, 7.27254185, 0.99853577, 0.99922703, 0.49321152],
+                             [- 6.27302133, -0.00047923, 0.00029362, 7.27254210, 0.99853599, 0.99922715, 0.49321153],
+                             [- 6.27302151, -0.00047916, 0.00029357, 7.27254235, 0.99853622, 0.99922727, 0.49321157],
+                             [- 6.27302169, -0.00047908, 0.00029353, 7.27254260, 0.99853645, 0.99922739, 0.49321160],
+                             [- 6.27302187, -0.00047901, 0.00029348, 7.27254286, 0.99853667, 0.99922751, 0.49321170],
+                             [- 6.27302204, -0.00047894, 0.00029344, 7.27254311, 0.99853690, 0.99922763, 0.49321172],
+                             [- 6.27302222, -0.00047886, 0.00029339, 7.27254336, 0.99853712, 0.99922775, 0.49321163],
+                             [- 6.27302240, -0.00047879, 0.00029334, 7.27254361, 0.99853735, 0.99922787, 0.49321166],
+                             [- 6.27302257, -0.00047871, 0.00029330, 7.27254386, 0.99853758, 0.99922799, 0.49321175],
+                             [- 6.27302275, -0.00047864, 0.00029325, 7.27254411, 0.99853780, 0.99922811, 0.49321177],
+                             [- 6.27302293, -0.00047857, 0.00029321, 7.27254436, 0.99853803, 0.99922823, 0.49321185],
+                             [- 6.27302311, -0.00047849, 0.00029316, 7.27254461, 0.99853826, 0.99922834, 0.49321182],
+                             [- 6.27302328, -0.00047842, 0.00029312, 7.27254486, 0.99853848, 0.99922846, 0.49321190],
+                             [- 6.27302346, -0.00047834, 0.00029307, 7.27254512, 0.99853871, 0.99922858, 0.49321191],
+                             [- 6.27302364, -0.00047827, 0.00029303, 7.27254537, 0.99853893, 0.99922870, 0.49321187],
+                             [- 6.27302381, -0.00047820, 0.00029298, 7.27254562, 0.99853916, 0.99922882, 0.49321186],
+                             [- 6.27302399, -0.00047812, 0.00029294, 7.27254587, 0.99853939, 0.99922894, 0.49321193],
+                             [- 6.27302417, -0.00047805, 0.00029289, 7.27254612, 0.99853961, 0.99922906, 0.49321201],
+                             [- 6.27302434, -0.00047797, 0.00029285, 7.27254637, 0.99853984, 0.99922918, 0.49321205],
+                             [- 6.27302452, -0.00047790, 0.00029280, 7.27254662, 0.99854006, 0.99922930, 0.49321210],
+                             [- 6.27302470, -0.00047783, 0.00029276, 7.27254687, 0.99854029, 0.99922942, 0.49321211],
+                             [- 6.27302487, -0.00047775, 0.00029271, 7.27254712, 0.99854051, 0.99922954, 0.49321206],
+                             [- 6.27302505, -0.00047768, 0.00029267, 7.27254737, 0.99854074, 0.99922965, 0.49321212],
+                             [- 6.27302523, -0.00047761, 0.00029262, 7.27254762, 0.99854096, 0.99922977, 0.49321212],
+                             [- 6.27302540, -0.00047753, 0.00029257, 7.27254787, 0.99854119, 0.99922989, 0.49321221],
+                             [- 6.27302558, -0.00047746, 0.00029253, 7.27254812, 0.99854141, 0.99923001, 0.49321218],
+                             [- 6.27302575, -0.00047739, 0.00029248, 7.27254837, 0.99854164, 0.99923013, 0.49321223],
+                             [- 6.27302593, -0.00047731, 0.00029244, 7.27254862, 0.99854186, 0.99923025, 0.49321227],
+                             [- 6.27302611, -0.00047724, 0.00029239, 7.27254887, 0.99854209, 0.99923037, 0.49321227],
+                             [- 6.27302628, -0.00047716, 0.00029235, 7.27254912, 0.99854231, 0.99923049, 0.49321226],
+                             [- 6.27302646, -0.00047709, 0.00029230, 7.27254937, 0.99854254, 0.99923060, 0.49321229],
+                             [- 6.27302664, -0.00047702, 0.00029226, 7.27254962, 0.99854276, 0.99923072, 0.49321232],
+                             [- 6.27302681, -0.00047694, 0.00029221, 7.27254987, 0.99854299, 0.99923084, 0.49321239],
+                             [- 6.27302699, -0.00047687, 0.00029217, 7.27255012, 0.99854321, 0.99923096, 0.49321240],
+                             [- 6.27302716, -0.00047680, 0.00029212, 7.27255037, 0.99854344, 0.99923108, 0.49321246],
+                             [- 6.27302734, -0.00047672, 0.00029208, 7.27255061, 0.99854366, 0.99923120, 0.49321244],
+                             [- 6.27302751, -0.00047665, 0.00029203, 7.27255086, 0.99854388, 0.99923132, 0.49321242],
+                             [- 6.27302769, -0.00047658, 0.00029199, 7.27255111, 0.99854411, 0.99923143, 0.49321242],
+                             [- 6.27302787, -0.00047650, 0.00029194, 7.27255136, 0.99854433, 0.99923155, 0.49321258],
+                             [- 6.27302804, -0.00047643, 0.00029190, 7.27255161, 0.99854456, 0.99923167, 0.49321251],
+                             [- 6.27302822, -0.00047636, 0.00029185, 7.27255186, 0.99854478, 0.99923179, 0.49321261],
+                             [- 6.27302839, -0.00047628, 0.00029181, 7.27255211, 0.99854501, 0.99923191, 0.49321264],
+                             [- 6.27302857, -0.00047621, 0.00029176, 7.27255236, 0.99854523, 0.99923203, 0.49321265],
+                             [- 6.27302874, -0.00047614, 0.00029172, 7.27255261, 0.99854545, 0.99923214, 0.49321268],
+                             [- 6.27302892, -0.00047606, 0.00029167, 7.27255285, 0.99854568, 0.99923226, 0.49321269],
+                             [- 6.27302909, -0.00047599, 0.00029163, 7.27255310, 0.99854590, 0.99923238, 0.49321277],
+                             [- 6.27302927, -0.00047592, 0.00029158, 7.27255335, 0.99854612, 0.99923250, 0.49321272],
+                             [- 6.27302944, -0.00047584, 0.00029154, 7.27255360, 0.99854635, 0.99923262, 0.49321278],
+                             [- 6.27302962, -0.00047577, 0.00029150, 7.27255385, 0.99854657, 0.99923273, 0.49321287],
+                             [- 6.27302979, -0.00047570, 0.00029145, 7.27255410, 0.99854679, 0.99923285, 0.49321280],
+                             [- 6.27302997, -0.00047562, 0.00029141, 7.27255434, 0.99854702, 0.99923297, 0.49321291],
+                             [- 6.27303014, -0.00047555, 0.00029136, 7.27255459, 0.99854724, 0.99923309, 0.49321279],
+                             [- 6.27303032, -0.00047548, 0.00029132, 7.27255484, 0.99854746, 0.99923321, 0.49321284],
+                             [- 6.27303049, -0.00047541, 0.00029127, 7.27255509, 0.99854769, 0.99923332, 0.49321288],
+                             [- 6.27303067, -0.00047533, 0.00029123, 7.27255533, 0.99854791, 0.99923344, 0.49321294],
+                             [- 6.27303084, -0.00047526, 0.00029118, 7.27255558, 0.99854813, 0.99923356, 0.49321292],
+                             [- 6.27303102, -0.00047519, 0.00029114, 7.27255583, 0.99854836, 0.99923368, 0.49321300],
+                             [- 6.27303119, -0.00047511, 0.00029109, 7.27255608, 0.99854858, 0.99923379, 0.49321302],
+                             [- 6.27303137, -0.00047504, 0.00029105, 7.27255632, 0.99854880, 0.99923391, 0.49321303],
+                             [- 6.27303154, -0.00047497, 0.00029100, 7.27255657, 0.99854903, 0.99923403, 0.49321311],
+                             [- 6.27303171, -0.00047490, 0.00029096, 7.27255682, 0.99854925, 0.99923415, 0.49321311],
+                             [- 6.27303189, -0.00047482, 0.00029091, 7.27255707, 0.99854947, 0.99923426, 0.49321315],
+                             [- 6.27303206, -0.00047475, 0.00029087, 7.27255731, 0.99854969, 0.99923438, 0.49321319],
+                             [- 6.27303224, -0.00047468, 0.00029082, 7.27255756, 0.99854992, 0.99923450, 0.49321317],
+                             [- 6.27303241, -0.00047460, 0.00029078, 7.27255781, 0.99855014, 0.99923462, 0.49321321],
+                             [- 6.27303259, -0.00047453, 0.00029073, 7.27255805, 0.99855036, 0.99923473, 0.49321326],
+                             [- 6.27303276, -0.00047446, 0.00029069, 7.27255830, 0.99855058, 0.99923485, 0.49321318],
+                             [- 6.27303293, -0.00047439, 0.00029065, 7.27255855, 0.99855081, 0.99923497, 0.49321326],
+                             [- 6.27303311, -0.00047431, 0.00029060, 7.27255879, 0.99855103, 0.99923509, 0.49321333],
+                             [- 6.27303328, -0.00047424, 0.00029056, 7.27255904, 0.99855125, 0.99923520, 0.49321333],
+                             [- 6.27303345, -0.00047417, 0.00029051, 7.27255929, 0.99855147, 0.99923532, 0.49321344],
+                             [- 6.27303363, -0.00047410, 0.00029047, 7.27255953, 0.99855169, 0.99923544, 0.49321337],
+                             [- 6.27303380, -0.00047402, 0.00029042, 7.27255978, 0.99855192, 0.99923555, 0.49321345],
+                             [- 6.27303398, -0.00047395, 0.00029038, 7.27256003, 0.99855214, 0.99923567, 0.49321337],
+                             [- 6.27303415, -0.00047388, 0.00029033, 7.27256027, 0.99855236, 0.99923579, 0.49321344],
+                             [- 6.27303432, -0.00047380, 0.00029029, 7.27256052, 0.99855258, 0.99923591, 0.49321346],
+                             [- 6.27303450, -0.00047373, 0.00029025, 7.27256076, 0.99855280, 0.99923602, 0.49321354],
+                             [- 6.27303467, -0.00047366, 0.00029020, 7.27256101, 0.99855302, 0.99923614, 0.49321353],
+                             [- 6.27303484, -0.00047359, 0.00029016, 7.27256126, 0.99855325, 0.99923626, 0.49321361],
+                             [- 6.27303502, -0.00047351, 0.00029011, 7.27256150, 0.99855347, 0.99923637, 0.49321358],
+                             [- 6.27303519, -0.00047344, 0.00029007, 7.27256175, 0.99855369, 0.99923649, 0.49321363],
+                             [- 6.27303536, -0.00047337, 0.00029002, 7.27256199, 0.99855391, 0.99923661, 0.49321367],
+                             [- 6.27303554, -0.00047330, 0.00028998, 7.27256224, 0.99855413, 0.99923672, 0.49321364],
+                             [- 6.27303571, -0.00047323, 0.00028993, 7.27256248, 0.99855435, 0.99923684, 0.49321377],
+                             [- 6.27303588, -0.00047315, 0.00028989, 7.27256273, 0.99855457, 0.99923696, 0.49321375],
+                             [- 6.27303606, -0.00047308, 0.00028985, 7.27256298, 0.99855479, 0.99923707, 0.49321379],
+                             [- 6.27303623, -0.00047301, 0.00028980, 7.27256322, 0.99855501, 0.99923719, 0.49321377],
+                             [- 6.27303640, -0.00047294, 0.00028976, 7.27256347, 0.99855524, 0.99923731, 0.49321372],
+                             [- 6.27303658, -0.00047286, 0.00028971, 7.27256371, 0.99855546, 0.99923742, 0.49321383],
+                             [- 6.27303675, -0.00047279, 0.00028967, 7.27256396, 0.99855568, 0.99923754, 0.49321384],
+                             [- 6.27303692, -0.00047272, 0.00028962, 7.27256420, 0.99855590, 0.99923766, 0.49321394],
+                             [- 6.27303709, -0.00047265, 0.00028958, 7.27256445, 0.99855612, 0.99923777, 0.49321386],
+                             [- 6.27303727, -0.00047258, 0.00028954, 7.27256469, 0.99855634, 0.99923789, 0.49321390],
+                             [- 6.27303744, -0.00047250, 0.00028949, 7.27256494, 0.99855656, 0.99923801, 0.49321401],
+                             [- 6.27303761, -0.00047243, 0.00028945, 7.27256518, 0.99855678, 0.99923812, 0.49321394],
+                             [- 6.27303778, -0.00047236, 0.00028940, 7.27256543, 0.99855700, 0.99923824, 0.49321395],
+                             [- 6.27303796, -0.00047229, 0.00028936, 7.27256567, 0.99855722, 0.99923835, 0.49321400],
+                             [- 6.27303813, -0.00047221, 0.00028931, 7.27256591, 0.99855744, 0.99923847, 0.49321392],
+                             [- 6.27303830, -0.00047214, 0.00028927, 7.27256616, 0.99855766, 0.99923859, 0.49321409],
+                             [- 6.27303847, -0.00047207, 0.00028923, 7.27256640, 0.99855788, 0.99923870, 0.49321404],
+                             [- 6.27303865, -0.00047200, 0.00028918, 7.27256665, 0.99855810, 0.99923882, 0.49321416],
+                             [- 6.27303882, -0.00047193, 0.00028914, 7.27256689, 0.99855832, 0.99923893, 0.49321409],
+                             [- 6.27303899, -0.00047185, 0.00028909, 7.27256714, 0.99855854, 0.99923905, 0.49321418],
+                             [- 6.27303916, -0.00047178, 0.00028905, 7.27256738, 0.99855876, 0.99923917, 0.49321418],
+                             [- 6.27303933, -0.00047171, 0.00028901, 7.27256762, 0.99855898, 0.99923928, 0.49321424],
+                             [- 6.27303951, -0.00047164, 0.00028896, 7.27256787, 0.99855920, 0.99923940, 0.49321434],
+                             [- 6.27303968, -0.00047157, 0.00028892, 7.27256811, 0.99855942, 0.99923951, 0.49321431],
+                             [- 6.27303985, -0.00047150, 0.00028887, 7.27256835, 0.99855964, 0.99923963, 0.49321429],
+                             [- 6.27304002, -0.00047142, 0.00028883, 7.27256860, 0.99855986, 0.99923975, 0.49321428],
+                             [- 6.27304019, -0.00047135, 0.00028879, 7.27256884, 0.99856008, 0.99923986, 0.49321434],
+                             [- 6.27304037, -0.00047128, 0.00028874, 7.27256909, 0.99856030, 0.99923998, 0.49321435],
+                             [- 6.27304054, -0.00047121, 0.00028870, 7.27256933, 0.99856052, 0.99924009, 0.49321437],
+                             [- 6.27304071, -0.00047114, 0.00028865, 7.27256957, 0.99856073, 0.99924021, 0.49321446],
+                             [- 6.27304088, -0.00047106, 0.00028861, 7.27256982, 0.99856095, 0.99924032, 0.49321442],
+                             [- 6.27304105, -0.00047099, 0.00028857, 7.27257006, 0.99856117, 0.99924044, 0.49321442],
+                             [- 6.27304122, -0.00047092, 0.00028852, 7.27257030, 0.99856139, 0.99924056, 0.49321451],
+                             [- 6.27304139, -0.00047085, 0.00028848, 7.27257054, 0.99856161, 0.99924067, 0.49321455],
+                             [- 6.27304157, -0.00047078, 0.00028843, 7.27257079, 0.99856183, 0.99924079, 0.49321455],
+                             [- 6.27304174, -0.00047071, 0.00028839, 7.27257103, 0.99856205, 0.99924090, 0.49321459],
+                             [- 6.27304191, -0.00047064, 0.00028835, 7.27257127, 0.99856227, 0.99924102, 0.49321464],
+                             [- 6.27304208, -0.00047056, 0.00028830, 7.27257152, 0.99856249, 0.99924113, 0.49321460],
+                             [- 6.27304225, -0.00047049, 0.00028826, 7.27257176, 0.99856270, 0.99924125, 0.49321463],
+                             [- 6.27304242, -0.00047042, 0.00028822, 7.27257200, 0.99856292, 0.99924136, 0.49321476],
+                             [- 6.27304259, -0.00047035, 0.00028817, 7.27257224, 0.99856314, 0.99924148, 0.49321475],
+                             [- 6.27304276, -0.00047028, 0.00028813, 7.27257249, 0.99856336, 0.99924159, 0.49321471],
+                             [- 6.27304294, -0.00047021, 0.00028808, 7.27257273, 0.99856358, 0.99924171, 0.49321475],
+                             [- 6.27304311, -0.00047013, 0.00028804, 7.27257297, 0.99856380, 0.99924183, 0.49321476],
+                             [- 6.27304328, -0.00047006, 0.00028800, 7.27257321, 0.99856401, 0.99924194, 0.49321484],
+                             [- 6.27304345, -0.00046999, 0.00028795, 7.27257346, 0.99856423, 0.99924206, 0.49321477],
+                             [- 6.27304362, -0.00046992, 0.00028791, 7.27257370, 0.99856445, 0.99924217, 0.49321483],
+                             [- 6.27304379, -0.00046985, 0.00028787, 7.27257394, 0.99856467, 0.99924229, 0.49321495],
+                             [- 6.27304396, -0.00046978, 0.00028782, 7.27257418, 0.99856489, 0.99924240, 0.49321491],
+                             [- 6.27304413, -0.00046971, 0.00028778, 7.27257442, 0.99856510, 0.99924252, 0.49321493],
+                             [- 6.27304430, -0.00046964, 0.00028773, 7.27257467, 0.99856532, 0.99924263, 0.49321498],
+                             [- 6.27304447, -0.00046956, 0.00028769, 7.27257491, 0.99856554, 0.99924275, 0.49321496],
+                             [- 6.27304464, -0.00046949, 0.00028765, 7.27257515, 0.99856576, 0.99924286, 0.49321502],
+                             [- 6.27304481, -0.00046942, 0.00028760, 7.27257539, 0.99856597, 0.99924298, 0.49321503],
+                             [- 6.27304498, -0.00046935, 0.00028756, 7.27257563, 0.99856619, 0.99924309, 0.49321507],
+                             [- 6.27304515, -0.00046928, 0.00028752, 7.27257587, 0.99856641, 0.99924320, 0.49321515],
+                             [- 6.27304532, -0.00046921, 0.00028747, 7.27257611, 0.99856663, 0.99924332, 0.49321508],
+                             [- 6.27304549, -0.00046914, 0.00028743, 7.27257636, 0.99856684, 0.99924343, 0.49321514],
+                             [- 6.27304566, -0.00046907, 0.00028738, 7.27257660, 0.99856706, 0.99924355, 0.49321526],
+                             [- 6.27304583, -0.00046900, 0.00028734, 7.27257684, 0.99856728, 0.99924366, 0.49321521],
+                             [- 6.27304600, -0.00046892, 0.00028730, 7.27257708, 0.99856750, 0.99924378, 0.49321521],
+                             [- 6.27304617, -0.00046885, 0.00028725, 7.27257732, 0.99856771, 0.99924389, 0.49321523],
+                             [- 6.27304634, -0.00046878, 0.00028721, 7.27257756, 0.99856793, 0.99924401, 0.49321526],
+                             [- 6.27304651, -0.00046871, 0.00028717, 7.27257780, 0.99856815, 0.99924412, 0.49321530],
+                             [- 6.27304668, -0.00046864, 0.00028712, 7.27257804, 0.99856836, 0.99924424, 0.49321535],
+                             [- 6.27304685, -0.00046857, 0.00028708, 7.27257828, 0.99856858, 0.99924435, 0.49321541],
+                             [- 6.27304702, -0.00046850, 0.00028704, 7.27257852, 0.99856880, 0.99924446, 0.49321529],
+                             [- 6.27304719, -0.00046843, 0.00028699, 7.27257876, 0.99856901, 0.99924458, 0.49321541],
+                             [- 6.27304736, -0.00046836, 0.00028695, 7.27257901, 0.99856923, 0.99924469, 0.49321535],
+                             [- 6.27304753, -0.00046829, 0.00028691, 7.27257925, 0.99856945, 0.99924481, 0.49321543],
+                             [- 6.27304770, -0.00046821, 0.00028686, 7.27257949, 0.99856966, 0.99924492, 0.49321548],
+                             [- 6.27304787, -0.00046814, 0.00028682, 7.27257973, 0.99856988, 0.99924504, 0.49321551],
+                             [- 6.27304804, -0.00046807, 0.00028678, 7.27257997, 0.99857010, 0.99924515, 0.49321545],
+                             [- 6.27304821, -0.00046800, 0.00028673, 7.27258021, 0.99857031, 0.99924526, 0.49321554],
+                             [- 6.27304838, -0.00046793, 0.00028669, 7.27258045, 0.99857053, 0.99924538, 0.49321557],
+                             [- 6.27304855, -0.00046786, 0.00028665, 7.27258069, 0.99857074, 0.99924549, 0.49321561],
+                             [- 6.27304872, -0.00046779, 0.00028660, 7.27258093, 0.99857096, 0.99924561, 0.49321567],
+                             [- 6.27304889, -0.00046772, 0.00028656, 7.27258117, 0.99857118, 0.99924572, 0.49321567],
+                             [- 6.27304906, -0.00046765, 0.00028652, 7.27258141, 0.99857139, 0.99924583, 0.49321571],
+                             [- 6.27304922, -0.00046758, 0.00028647, 7.27258165, 0.99857161, 0.99924595, 0.49321566],
+                             [- 6.27304939, -0.00046751, 0.00028643, 7.27258189, 0.99857182, 0.99924606, 0.49321576],
+                             [- 6.27304956, -0.00046744, 0.00028639, 7.27258213, 0.99857204, 0.99924618, 0.49321567],
+                             [- 6.27304973, -0.00046737, 0.00028634, 7.27258236, 0.99857226, 0.99924629, 0.49321585],
+                             [- 6.27304990, -0.00046730, 0.00028630, 7.27258260, 0.99857247, 0.99924640, 0.49321576],
+                             [- 6.27305007, -0.00046723, 0.00028626, 7.27258284, 0.99857269, 0.99924652, 0.49321581],
+                             [- 6.27305024, -0.00046715, 0.00028621, 7.27258308, 0.99857290, 0.99924663, 0.49321580],
+                             [- 6.27305041, -0.00046708, 0.00028617, 7.27258332, 0.99857312, 0.99924675, 0.49321590],
+                             [- 6.27305057, -0.00046701, 0.00028613, 7.27258356, 0.99857333, 0.99924686, 0.49321582],
+                             [- 6.27305074, -0.00046694, 0.00028608, 7.27258380, 0.99857355, 0.99924697, 0.49321587],
+                             [- 6.27305091, -0.00046687, 0.00028604, 7.27258404, 0.99857376, 0.99924709, 0.49321595],
+                             [- 6.27305108, -0.00046680, 0.00028600, 7.27258428, 0.99857398, 0.99924720, 0.49321595],
+                             [- 6.27305125, -0.00046673, 0.00028595, 7.27258452, 0.99857419, 0.99924731, 0.49321600],
+                             [- 6.27305142, -0.00046666, 0.00028591, 7.27258476, 0.99857441, 0.99924743, 0.49321598],
+                             [- 6.27305159, -0.00046659, 0.00028587, 7.27258499, 0.99857462, 0.99924754, 0.49321613],
+                             [- 6.27305175, -0.00046652, 0.00028582, 7.27258523, 0.99857484, 0.99924765, 0.49321611],
+                             [- 6.27305192, -0.00046645, 0.00028578, 7.27258547, 0.99857505, 0.99924777, 0.49321600],
+                             [- 6.27305209, -0.00046638, 0.00028574, 7.27258571, 0.99857527, 0.99924788, 0.49321621],
+                             [- 6.27305226, -0.00046631, 0.00028570, 7.27258595, 0.99857548, 0.99924799, 0.49321615],
+                             [- 6.27305243, -0.00046624, 0.00028565, 7.27258619, 0.99857570, 0.99924811, 0.49321620],
+                             [- 6.27305259, -0.00046617, 0.00028561, 7.27258642, 0.99857591, 0.99924822, 0.49321625],
+                             [- 6.27305276, -0.00046610, 0.00028557, 7.27258666, 0.99857613, 0.99924833, 0.49321621],
+                             [- 6.27305293, -0.00046603, 0.00028552, 7.27258690, 0.99857634, 0.99924845, 0.49321630],
+                             [- 6.27305310, -0.00046596, 0.00028548, 7.27258714, 0.99857656, 0.99924856, 0.49321623],
+                             [- 6.27305327, -0.00046589, 0.00028544, 7.27258738, 0.99857677, 0.99924867, 0.49321633],
+                             [- 6.27305343, -0.00046582, 0.00028539, 7.27258761, 0.99857698, 0.99924879, 0.49321637],
+                             [- 6.27305360, -0.00046575, 0.00028535, 7.27258785, 0.99857720, 0.99924890, 0.49321640],
+                             [- 6.27305377, -0.00046568, 0.00028531, 7.27258809, 0.99857741, 0.99924901, 0.49321641],
+                             [- 6.27305394, -0.00046561, 0.00028527, 7.27258833, 0.99857763, 0.99924913, 0.49321644],
+                             [- 6.27305410, -0.00046554, 0.00028522, 7.27258857, 0.99857784, 0.99924924, 0.49321640],
+                             [- 6.27305427, -0.00046547, 0.00028518, 7.27258880, 0.99857805, 0.99924935, 0.49321644],
+                             [- 6.27305444, -0.00046540, 0.00028514, 7.27258904, 0.99857827, 0.99924946, 0.49321647],
+                             [- 6.27305461, -0.00046533, 0.00028509, 7.27258928, 0.99857848, 0.99924958, 0.49321655],
+                             [- 6.27305477, -0.00046526, 0.00028505, 7.27258952, 0.99857870, 0.99924969, 0.49321652],
+                             [- 6.27305494, -0.00046519, 0.00028501, 7.27258975, 0.99857891, 0.99924980, 0.49321651],
+                             [- 6.27305511, -0.00046512, 0.00028497, 7.27258999, 0.99857912, 0.99924992, 0.49321656],
+                             [- 6.27305528, -0.00046505, 0.00028492, 7.27259023, 0.99857934, 0.99925003, 0.49321656],
+                             [- 6.27305544, -0.00046498, 0.00028488, 7.27259046, 0.99857955, 0.99925014, 0.49321665],
+                             [- 6.27305561, -0.00046491, 0.00028484, 7.27259070, 0.99857976, 0.99925025, 0.49321668],
+                             [- 6.27305578, -0.00046484, 0.00028479, 7.27259094, 0.99857998, 0.99925037, 0.49321665],
+                             [- 6.27305594, -0.00046477, 0.00028475, 7.27259117, 0.99858019, 0.99925048, 0.49321672],
+                             [- 6.27305611, -0.00046470, 0.00028471, 7.27259141, 0.99858040, 0.99925059, 0.49321675],
+                             [- 6.27305628, -0.00046463, 0.00028467, 7.27259165, 0.99858062, 0.99925070, 0.49321677],
+                             [- 6.27305645, -0.00046456, 0.00028462, 7.27259188, 0.99858083, 0.99925082, 0.49321675],
+                             [- 6.27305661, -0.00046449, 0.00028458, 7.27259212, 0.99858104, 0.99925093, 0.49321677],
+                             [- 6.27305678, -0.00046442, 0.00028454, 7.27259236, 0.99858126, 0.99925104, 0.49321687],
+                             [- 6.27305695, -0.00046435, 0.00028449, 7.27259259, 0.99858147, 0.99925115, 0.49321692],
+                             [- 6.27305711, -0.00046428, 0.00028445, 7.27259283, 0.99858168, 0.99925127, 0.49321690],
+                             [- 6.27305728, -0.00046421, 0.00028441, 7.27259307, 0.99858189, 0.99925138, 0.49321690],
+                             [- 6.27305745, -0.00046414, 0.00028437, 7.27259330, 0.99858211, 0.99925149, 0.49321703],
+                             [- 6.27305761, -0.00046407, 0.00028432, 7.27259354, 0.99858232, 0.99925160, 0.49321695],
+                             [- 6.27305778, -0.00046400, 0.00028428, 7.27259377, 0.99858253, 0.99925171, 0.49321702],
+                             [- 6.27305795, -0.00046393, 0.00028424, 7.27259401, 0.99858275, 0.99925183, 0.49321702],
+                             [- 6.27305811, -0.00046386, 0.00028420, 7.27259425, 0.99858296, 0.99925194, 0.49321707],
+                             [- 6.27305828, -0.00046380, 0.00028415, 7.27259448, 0.99858317, 0.99925205, 0.49321711],
+                             [- 6.27305844, -0.00046373, 0.00028411, 7.27259472, 0.99858338, 0.99925216, 0.49321702],
+                             [- 6.27305861, -0.00046366, 0.00028407, 7.27259495, 0.99858359, 0.99925227, 0.49321714],
+                             [- 6.27305878, -0.00046359, 0.00028403, 7.27259519, 0.99858381, 0.99925239, 0.49321714],
+                             [- 6.27305894, -0.00046352, 0.00028398, 7.27259543, 0.99858402, 0.99925250, 0.49321712],
+                             [- 6.27305911, -0.00046345, 0.00028394, 7.27259566, 0.99858423, 0.99925261, 0.49321724],
+                             [- 6.27305927, -0.00046338, 0.00028390, 7.27259590, 0.99858444, 0.99925272, 0.49321723],
+                             [- 6.27305944, -0.00046331, 0.00028386, 7.27259613, 0.99858465, 0.99925283, 0.49321718],
+                             [- 6.27305961, -0.00046324, 0.00028381, 7.27259637, 0.99858487, 0.99925295, 0.49321725],
+                             [- 6.27305977, -0.00046317, 0.00028377, 7.27259660, 0.99858508, 0.99925306, 0.49321729],
+                             [- 6.27305994, -0.00046310, 0.00028373, 7.27259684, 0.99858529, 0.99925317, 0.49321728],
+                             [- 6.27306010, -0.00046303, 0.00028369, 7.27259707, 0.99858550, 0.99925328, 0.49321728],
+                             [- 6.27306027, -0.00046296, 0.00028364, 7.27259731, 0.99858571, 0.99925339, 0.49321738],
+                             [- 6.27306044, -0.00046289, 0.00028360, 7.27259754, 0.99858593, 0.99925351, 0.49321730],
+                             [- 6.27306060, -0.00046282, 0.00028356, 7.27259778, 0.99858614, 0.99925362, 0.49321736],
+                             [- 6.27306077, -0.00046276, 0.00028352, 7.27259801, 0.99858635, 0.99925373, 0.49321743],
+                             [- 6.27306093, -0.00046269, 0.00028347, 7.27259825, 0.99858656, 0.99925384, 0.49321740],
+                             [- 6.27306110, -0.00046262, 0.00028343, 7.27259848, 0.99858677, 0.99925395, 0.49321757],
+                             [- 6.27306126, -0.00046255, 0.00028339, 7.27259872, 0.99858698, 0.99925406, 0.49321754],
+                             [- 6.27306143, -0.00046248, 0.00028335, 7.27259895, 0.99858719, 0.99925417, 0.49321760],
+                             [- 6.27306159, -0.00046241, 0.00028330, 7.27259918, 0.99858740, 0.99925429, 0.49321757],
+                             [- 6.27306176, -0.00046234, 0.00028326, 7.27259942, 0.99858762, 0.99925440, 0.49321761],
+                             [- 6.27306192, -0.00046227, 0.00028322, 7.27259965, 0.99858783, 0.99925451, 0.49321757],
+                             [- 6.27306209, -0.00046220, 0.00028318, 7.27259989, 0.99858804, 0.99925462, 0.49321764],
+                             [- 6.27306225, -0.00046213, 0.00028314, 7.27260012, 0.99858825, 0.99925473, 0.49321769],
+                             [- 6.27306242, -0.00046206, 0.00028309, 7.27260036, 0.99858846, 0.99925484, 0.49321767],
+                             [- 6.27306259, -0.00046200, 0.00028305, 7.27260059, 0.99858867, 0.99925495, 0.49321773],
+                             [- 6.27306275, -0.00046193, 0.00028301, 7.27260082, 0.99858888, 0.99925506, 0.49321772],
+                             [- 6.27306292, -0.00046186, 0.00028297, 7.27260106, 0.99858909, 0.99925518, 0.49321771],
+                             [- 6.27306308, -0.00046179, 0.00028292, 7.27260129, 0.99858930, 0.99925529, 0.49321779],
+                             [- 6.27306324, -0.00046172, 0.00028288, 7.27260152, 0.99858951, 0.99925540, 0.49321779],
+                             [- 6.27306341, -0.00046165, 0.00028284, 7.27260176, 0.99858972, 0.99925551, 0.49321780],
+                             [- 6.27306357, -0.00046158, 0.00028280, 7.27260199, 0.99858993, 0.99925562, 0.49321791],
+                             [- 6.27306374, -0.00046151, 0.00028275, 7.27260223, 0.99859014, 0.99925573, 0.49321791],
+                             [- 6.27306390, -0.00046144, 0.00028271, 7.27260246, 0.99859035, 0.99925584, 0.49321788],
+                             [- 6.27306407, -0.00046138, 0.00028267, 7.27260269, 0.99859056, 0.99925595, 0.49321791],
+                             [- 6.27306423, -0.00046131, 0.00028263, 7.27260293, 0.99859077, 0.99925606, 0.49321799],
+                             [- 6.27306440, -0.00046124, 0.00028259, 7.27260316, 0.99859098, 0.99925618, 0.49321795],
+                             [- 6.27306456, -0.00046117, 0.00028254, 7.27260339, 0.99859119, 0.99925629, 0.49321797],
+                             [- 6.27306473, -0.00046110, 0.00028250, 7.27260363, 0.99859140, 0.99925640, 0.49321800],
+                             [- 6.27306489, -0.00046103, 0.00028246, 7.27260386, 0.99859161, 0.99925651, 0.49321804],
+                             [- 6.27306505, -0.00046096, 0.00028242, 7.27260409, 0.99859182, 0.99925662, 0.49321800],
+                             [- 6.27306522, -0.00046090, 0.00028238, 7.27260432, 0.99859203, 0.99925673, 0.49321804],
+                             [- 6.27306538, -0.00046083, 0.00028233, 7.27260456, 0.99859224, 0.99925684, 0.49321806],
+                             [- 6.27306555, -0.00046076, 0.00028229, 7.27260479, 0.99859245, 0.99925695, 0.49321814],
+                             [- 6.27306571, -0.00046069, 0.00028225, 7.27260502, 0.99859266, 0.99925706, 0.49321818],
+                             [- 6.27306588, -0.00046062, 0.00028221, 7.27260525, 0.99859287, 0.99925717, 0.49321811],
+                             [- 6.27306604, -0.00046055, 0.00028217, 7.27260549, 0.99859308, 0.99925728, 0.49321821],
+                             [- 6.27306620, -0.00046048, 0.00028212, 7.27260572, 0.99859329, 0.99925739, 0.49321828],
+                             [- 6.27306637, -0.00046042, 0.00028208, 7.27260595, 0.99859350, 0.99925750, 0.49321829],
+                             [- 6.27306653, -0.00046035, 0.00028204, 7.27260618, 0.99859371, 0.99925761, 0.49321826],
+                             [- 6.27306670, -0.00046028, 0.00028200, 7.27260642, 0.99859392, 0.99925772, 0.49321833],
+                             [- 6.27306686, -0.00046021, 0.00028196, 7.27260665, 0.99859413, 0.99925783, 0.49321833],
+                             [- 6.27306702, -0.00046014, 0.00028191, 7.27260688, 0.99859434, 0.99925794, 0.49321830],
+                             [- 6.27306719, -0.00046007, 0.00028187, 7.27260711, 0.99859455, 0.99925805, 0.49321842],
+                             [- 6.27306735, -0.00046000, 0.00028183, 7.27260735, 0.99859475, 0.99925817, 0.49321838],
+                             [- 6.27306751, -0.00045994, 0.00028179, 7.27260758, 0.99859496, 0.99925828, 0.49321849],
+                             [- 6.27306768, -0.00045987, 0.00028175, 7.27260781, 0.99859517, 0.99925839, 0.49321848],
+                             [- 6.27306784, -0.00045980, 0.00028170, 7.27260804, 0.99859538, 0.99925850, 0.49321848],
+                             [- 6.27306800, -0.00045973, 0.00028166, 7.27260827, 0.99859559, 0.99925861, 0.49321852],
+                             [- 6.27306817, -0.00045966, 0.00028162, 7.27260850, 0.99859580, 0.99925872, 0.49321855],
+                             [- 6.27306833, -0.00045959, 0.00028158, 7.27260874, 0.99859601, 0.99925883, 0.49321849],
+                             [- 6.27306849, -0.00045953, 0.00028154, 7.27260897, 0.99859622, 0.99925894, 0.49321861],
+                             [- 6.27306866, -0.00045946, 0.00028150, 7.27260920, 0.99859642, 0.99925905, 0.49321858],
+                             [- 6.27306882, -0.00045939, 0.00028145, 7.27260943, 0.99859663, 0.99925916, 0.49321869],
+                             [- 6.27306898, -0.00045932, 0.00028141, 7.27260966, 0.99859684, 0.99925927, 0.49321873],
+                             [- 6.27306915, -0.00045925, 0.00028137, 7.27260989, 0.99859705, 0.99925938, 0.49321868],
+                             [- 6.27306931, -0.00045919, 0.00028133, 7.27261012, 0.99859726, 0.99925949, 0.49321872],
+                             [- 6.27306947, -0.00045912, 0.00028129, 7.27261035, 0.99859746, 0.99925960, 0.49321879],
+                             [- 6.27306964, -0.00045905, 0.00028124, 7.27261059, 0.99859767, 0.99925971, 0.49321873],
+                             [- 6.27306980, -0.00045898, 0.00028120, 7.27261082, 0.99859788, 0.99925982, 0.49321881],
+                             [- 6.27306996, -0.00045891, 0.00028116, 7.27261105, 0.99859809, 0.99925993, 0.49321869],
+                             [- 6.27307012, -0.00045885, 0.00028112, 7.27261128, 0.99859830, 0.99926003, 0.49321889],
+                             [- 6.27307029, -0.00045878, 0.00028108, 7.27261151, 0.99859850, 0.99926014, 0.49321883],
+                             [- 6.27307045, -0.00045871, 0.00028104, 7.27261174, 0.99859871, 0.99926025, 0.49321889],
+                             [- 6.27307061, -0.00045864, 0.00028099, 7.27261197, 0.99859892, 0.99926036, 0.49321886],
+                             [- 6.27307078, -0.00045857, 0.00028095, 7.27261220, 0.99859913, 0.99926047, 0.49321894],
+                             [- 6.27307094, -0.00045851, 0.00028091, 7.27261243, 0.99859934, 0.99926058, 0.49321894],
+                             [- 6.27307110, -0.00045844, 0.00028087, 7.27261266, 0.99859954, 0.99926069, 0.49321891],
+                             [- 6.27307126, -0.00045837, 0.00028083, 7.27261289, 0.99859975, 0.99926080, 0.49321907],
+                             [- 6.27307142, -0.00045830, 0.00028079, 7.27261312, 0.99859996, 0.99926091, 0.49321892],
+                             [- 6.27307159, -0.00045823, 0.00028074, 7.27261335, 0.99860016, 0.99926102, 0.49321904],
+                             [- 6.27307175, -0.00045817, 0.00028070, 7.27261358, 0.99860037, 0.99926113, 0.49321907],
+                             [- 6.27307191, -0.00045810, 0.00028066, 7.27261381, 0.99860058, 0.99926124, 0.49321903],
+                             [- 6.27307207, -0.00045803, 0.00028062, 7.27261404, 0.99860079, 0.99926135, 0.49321912],
+                             [- 6.27307224, -0.00045796, 0.00028058, 7.27261427, 0.99860099, 0.99926146, 0.49321912],
+                             [- 6.27307240, -0.00045790, 0.00028054, 7.27261450, 0.99860120, 0.99926157, 0.49321912],
+                             [- 6.27307256, -0.00045783, 0.00028050, 7.27261473, 0.99860141, 0.99926168, 0.49321924],
+                             [- 6.27307272, -0.00045776, 0.00028045, 7.27261496, 0.99860161, 0.99926179, 0.49321924],
+                             [- 6.27307288, -0.00045769, 0.00028041, 7.27261519, 0.99860182, 0.99926190, 0.49321921],
+                             [- 6.27307305, -0.00045762, 0.00028037, 7.27261542, 0.99860203, 0.99926200, 0.49321927],
+                             [- 6.27307321, -0.00045756, 0.00028033, 7.27261565, 0.99860223, 0.99926211, 0.49321925],
+                             [- 6.27307337, -0.00045749, 0.00028029, 7.27261588, 0.99860244, 0.99926222, 0.49321926],
+                             [- 6.27307353, -0.00045742, 0.00028025, 7.27261611, 0.99860265, 0.99926233, 0.49321932],
+                             [- 6.27307369, -0.00045735, 0.00028021, 7.27261634, 0.99860285, 0.99926244, 0.49321935],
+                             [- 6.27307386, -0.00045729, 0.00028016, 7.27261657, 0.99860306, 0.99926255, 0.49321931],
+                             [- 6.27307402, -0.00045722, 0.00028012, 7.27261680, 0.99860327, 0.99926266, 0.49321940],
+                             [- 6.27307418, -0.00045715, 0.00028008, 7.27261703, 0.99860347, 0.99926277, 0.49321940],
+                             [- 6.27307434, -0.00045708, 0.00028004, 7.27261726, 0.99860368, 0.99926288, 0.49321938],
+                             [- 6.27307450, -0.00045702, 0.00028000, 7.27261749, 0.99860389, 0.99926299, 0.49321955],
+                             [- 6.27307466, -0.00045695, 0.00027996, 7.27261771, 0.99860409, 0.99926309, 0.49321946],
+                             [- 6.27307482, -0.00045688, 0.00027992, 7.27261794, 0.99860430, 0.99926320, 0.49321952],
+                             [- 6.27307499, -0.00045681, 0.00027987, 7.27261817, 0.99860450, 0.99926331, 0.49321956],
+                             [- 6.27307515, -0.00045675, 0.00027983, 7.27261840, 0.99860471, 0.99926342, 0.49321950],
+                             [- 6.27307531, -0.00045668, 0.00027979, 7.27261863, 0.99860492, 0.99926353, 0.49321959],
+                             [- 6.27307547, -0.00045661, 0.00027975, 7.27261886, 0.99860512, 0.99926364, 0.49321954],
+                             [- 6.27307563, -0.00045654, 0.00027971, 7.27261909, 0.99860533, 0.99926375, 0.49321964],
+                             [- 6.27307579, -0.00045648, 0.00027967, 7.27261931, 0.99860553, 0.99926385, 0.49321960],
+                             [- 6.27307595, -0.00045641, 0.00027963, 7.27261954, 0.99860574, 0.99926396, 0.49321972],
+                             [- 6.27307611, -0.00045634, 0.00027959, 7.27261977, 0.99860595, 0.99926407, 0.49321973],
+                             [- 6.27307628, -0.00045628, 0.00027954, 7.27262000, 0.99860615, 0.99926418, 0.49321968],
+                             [- 6.27307644, -0.00045621, 0.00027950, 7.27262023, 0.99860636, 0.99926429, 0.49321967],
+                             [- 6.27307660, -0.00045614, 0.00027946, 7.27262046, 0.99860656, 0.99926440, 0.49321972],
+                             [- 6.27307676, -0.00045607, 0.00027942, 7.27262068, 0.99860677, 0.99926451, 0.49321981],
+                             [- 6.27307692, -0.00045601, 0.00027938, 7.27262091, 0.99860697, 0.99926461, 0.49321979],
+                             [- 6.27307708, -0.00045594, 0.00027934, 7.27262114, 0.99860718, 0.99926472, 0.49321986],
+                             [- 6.27307724, -0.00045587, 0.00027930, 7.27262137, 0.99860738, 0.99926483, 0.49321988],
+                             [- 6.27307740, -0.00045581, 0.00027926, 7.27262160, 0.99860759, 0.99926494, 0.49321990],
+                             [- 6.27307756, -0.00045574, 0.00027921, 7.27262182, 0.99860779, 0.99926505, 0.49321998],
+                             [- 6.27307772, -0.00045567, 0.00027917, 7.27262205, 0.99860800, 0.99926516, 0.49322003],
+                             [- 6.27307788, -0.00045560, 0.00027913, 7.27262228, 0.99860820, 0.99926526, 0.49321994],
+                             [- 6.27307804, -0.00045554, 0.00027909, 7.27262251, 0.99860841, 0.99926537, 0.49322002],
+                             [- 6.27307820, -0.00045547, 0.00027905, 7.27262273, 0.99860861, 0.99926548, 0.49321999],
+                             [- 6.27307836, -0.00045540, 0.00027901, 7.27262296, 0.99860882, 0.99926559, 0.49322005],
+                             [- 6.27307852, -0.00045534, 0.00027897, 7.27262319, 0.99860902, 0.99926570, 0.49322007],
+                             [- 6.27307868, -0.00045527, 0.00027893, 7.27262342, 0.99860923, 0.99926580, 0.49322002],
+                             [- 6.27307884, -0.00045520, 0.00027889, 7.27262364, 0.99860943, 0.99926591, 0.49322013],
+                             [- 6.27307900, -0.00045514, 0.00027884, 7.27262387, 0.99860964, 0.99926602, 0.49322009],
+                             [- 6.27307916, -0.00045507, 0.00027880, 7.27262410, 0.99860984, 0.99926613, 0.49322010],
+                             [- 6.27307932, -0.00045500, 0.00027876, 7.27262432, 0.99861004, 0.99926624, 0.49322020],
+                             [- 6.27307949, -0.00045493, 0.00027872, 7.27262455, 0.99861025, 0.99926634, 0.49322020],
+                             [- 6.27307964, -0.00045487, 0.00027868, 7.27262478, 0.99861045, 0.99926645, 0.49322021],
+                             [- 6.27307980, -0.00045480, 0.00027864, 7.27262500, 0.99861066, 0.99926656, 0.49322031],
+                             [- 6.27307996, -0.00045473, 0.00027860, 7.27262523, 0.99861086, 0.99926667, 0.49322031],
+                             [- 6.27308012, -0.00045467, 0.00027856, 7.27262546, 0.99861107, 0.99926677, 0.49322033],
+                             [- 6.27308028, -0.00045460, 0.00027852, 7.27262568, 0.99861127, 0.99926688, 0.49322029],
+                             [- 6.27308044, -0.00045453, 0.00027848, 7.27262591, 0.99861147, 0.99926699, 0.49322034],
+                             [- 6.27308060, -0.00045447, 0.00027844, 7.27262614, 0.99861168, 0.99926710, 0.49322033],
+                             [- 6.27308076, -0.00045440, 0.00027839, 7.27262636, 0.99861188, 0.99926721, 0.49322036],
+                             [- 6.27308092, -0.00045433, 0.00027835, 7.27262659, 0.99861209, 0.99926731, 0.49322047],
+                             [- 6.27308108, -0.00045427, 0.00027831, 7.27262682, 0.99861229, 0.99926742, 0.49322045],
+                             [- 6.27308124, -0.00045420, 0.00027827, 7.27262704, 0.99861249, 0.99926753, 0.49322049],
+                             [- 6.27308140, -0.00045413, 0.00027823, 7.27262727, 0.99861270, 0.99926764, 0.49322055],
+                             [- 6.27308156, -0.00045407, 0.00027819, 7.27262749, 0.99861290, 0.99926774, 0.49322054],
+                             [- 6.27308172, -0.00045400, 0.00027815, 7.27262772, 0.99861310, 0.99926785, 0.49322056],
+                             [- 6.27308188, -0.00045393, 0.00027811, 7.27262795, 0.99861331, 0.99926796, 0.49322059],
+                             [- 6.27308204, -0.00045387, 0.00027807, 7.27262817, 0.99861351, 0.99926807, 0.49322050],
+                             [- 6.27308220, -0.00045380, 0.00027803, 7.27262840, 0.99861371, 0.99926817, 0.49322063],
+                             [- 6.27308236, -0.00045373, 0.00027799, 7.27262862, 0.99861392, 0.99926828, 0.49322066],
+                             [- 6.27308252, -0.00045367, 0.00027795, 7.27262885, 0.99861412, 0.99926839, 0.49322063],
+                             [- 6.27308268, -0.00045360, 0.00027790, 7.27262907, 0.99861432, 0.99926849, 0.49322070],
+                             [- 6.27308284, -0.00045353, 0.00027786, 7.27262930, 0.99861453, 0.99926860, 0.49322066],
+                             [- 6.27308299, -0.00045347, 0.00027782, 7.27262953, 0.99861473, 0.99926871, 0.49322073],
+                             [- 6.27308315, -0.00045340, 0.00027778, 7.27262975, 0.99861493, 0.99926882, 0.49322074],
+                             [- 6.27308331, -0.00045334, 0.00027774, 7.27262998, 0.99861514, 0.99926892, 0.49322073],
+                             [- 6.27308347, -0.00045327, 0.00027770, 7.27263020, 0.99861534, 0.99926903, 0.49322080],
+                             [- 6.27308363, -0.00045320, 0.00027766, 7.27263043, 0.99861554, 0.99926914, 0.49322087],
+                             [- 6.27308379, -0.00045314, 0.00027762, 7.27263065, 0.99861574, 0.99926924, 0.49322079],
+                             [- 6.27308395, -0.00045307, 0.00027758, 7.27263088, 0.99861595, 0.99926935, 0.49322088],
+                             [- 6.27308411, -0.00045300, 0.00027754, 7.27263110, 0.99861615, 0.99926946, 0.49322089],
+                             [- 6.27308426, -0.00045294, 0.00027750, 7.27263133, 0.99861635, 0.99926956, 0.49322091],
+                             [- 6.27308442, -0.00045287, 0.00027746, 7.27263155, 0.99861655, 0.99926967, 0.49322099],
+                             [- 6.27308458, -0.00045281, 0.00027742, 7.27263178, 0.99861676, 0.99926978, 0.49322093],
+                             [- 6.27308474, -0.00045274, 0.00027738, 7.27263200, 0.99861696, 0.99926989, 0.49322094],
+                             [- 6.27308490, -0.00045267, 0.00027734, 7.27263223, 0.99861716, 0.99926999, 0.49322104],
+                             [- 6.27308506, -0.00045261, 0.00027729, 7.27263245, 0.99861736, 0.99927010, 0.49322101],
+                             [- 6.27308522, -0.00045254, 0.00027725, 7.27263268, 0.99861757, 0.99927021, 0.49322100],
+                             [- 6.27308537, -0.00045247, 0.00027721, 7.27263290, 0.99861777, 0.99927031, 0.49322109],
+                             [- 6.27308553, -0.00045241, 0.00027717, 7.27263312, 0.99861797, 0.99927042, 0.49322112],
+                             [- 6.27308569, -0.00045234, 0.00027713, 7.27263335, 0.99861817, 0.99927053, 0.49322118],
+                             [- 6.27308585, -0.00045228, 0.00027709, 7.27263357, 0.99861837, 0.99927063, 0.49322108],
+                             [- 6.27308601, -0.00045221, 0.00027705, 7.27263380, 0.99861858, 0.99927074, 0.49322119],
+                             [- 6.27308616, -0.00045214, 0.00027701, 7.27263402, 0.99861878, 0.99927085, 0.49322124],
+                             [- 6.27308632, -0.00045208, 0.00027697, 7.27263424, 0.99861898, 0.99927095, 0.49322120],
+                             [- 6.27308648, -0.00045201, 0.00027693, 7.27263447, 0.99861918, 0.99927106, 0.49322125],
+                             [- 6.27308664, -0.00045195, 0.00027689, 7.27263469, 0.99861938, 0.99927116, 0.49322131],
+                             [- 6.27308680, -0.00045188, 0.00027685, 7.27263492, 0.99861959, 0.99927127, 0.49322139],
+                             [- 6.27308695, -0.00045181, 0.00027681, 7.27263514, 0.99861979, 0.99927138, 0.49322128],
+                             [- 6.27308711, -0.00045175, 0.00027677, 7.27263536, 0.99861999, 0.99927148, 0.49322133],
+                             [- 6.27308727, -0.00045168, 0.00027673, 7.27263559, 0.99862019, 0.99927159, 0.49322134],
+                             [- 6.27308743, -0.00045162, 0.00027669, 7.27263581, 0.99862039, 0.99927170, 0.49322141],
+                             [- 6.27308759, -0.00045155, 0.00027665, 7.27263604, 0.99862059, 0.99927180, 0.49322137],
+                             [- 6.27308774, -0.00045148, 0.00027661, 7.27263626, 0.99862079, 0.99927191, 0.49322148],
+                             [- 6.27308790, -0.00045142, 0.00027657, 7.27263648, 0.99862099, 0.99927202, 0.49322145],
+                             [- 6.27308806, -0.00045135, 0.00027653, 7.27263671, 0.99862120, 0.99927212, 0.49322138],
+                             [- 6.27308822, -0.00045129, 0.00027649, 7.27263693, 0.99862140, 0.99927223, 0.49322155],
+                             [- 6.27308837, -0.00045122, 0.00027645, 7.27263715, 0.99862160, 0.99927233, 0.49322147],
+                             [- 6.27308853, -0.00045116, 0.00027641, 7.27263737, 0.99862180, 0.99927244, 0.49322164],
+                             [- 6.27308869, -0.00045109, 0.00027636, 7.27263760, 0.99862200, 0.99927255, 0.49322155],
+                             [- 6.27308884, -0.00045102, 0.00027632, 7.27263782, 0.99862220, 0.99927265, 0.49322156],
+                             [- 6.27308900, -0.00045096, 0.00027628, 7.27263804, 0.99862240, 0.99927276, 0.49322154],
+                             [- 6.27308916, -0.00045089, 0.00027624, 7.27263827, 0.99862260, 0.99927286, 0.49322167],
+                             [- 6.27308932, -0.00045083, 0.00027620, 7.27263849, 0.99862280, 0.99927297, 0.49322165],
+                             [- 6.27308947, -0.00045076, 0.00027616, 7.27263871, 0.99862300, 0.99927308, 0.49322177],
+                             [- 6.27308963, -0.00045070, 0.00027612, 7.27263894, 0.99862320, 0.99927318, 0.49322172],
+                             [- 6.27308979, -0.00045063, 0.00027608, 7.27263916, 0.99862340, 0.99927329, 0.49322177],
+                             [- 6.27308994, -0.00045056, 0.00027604, 7.27263938, 0.99862360, 0.99927339, 0.49322171],
+                             [- 6.27309010, -0.00045050, 0.00027600, 7.27263960, 0.99862381, 0.99927350, 0.49322172],
+                             [- 6.27309026, -0.00045043, 0.00027596, 7.27263983, 0.99862401, 0.99927360, 0.49322182],
+                             [- 6.27309042, -0.00045037, 0.00027592, 7.27264005, 0.99862421, 0.99927371, 0.49322183],
+                             [- 6.27309057, -0.00045030, 0.00027588, 7.27264027, 0.99862441, 0.99927382, 0.49322187],
+                             [- 6.27309073, -0.00045024, 0.00027584, 7.27264049, 0.99862461, 0.99927392, 0.49322184],
+                             [- 6.27309089, -0.00045017, 0.00027580, 7.27264071, 0.99862481, 0.99927403, 0.49322189],
+                             [- 6.27309104, -0.00045011, 0.00027576, 7.27264094, 0.99862501, 0.99927413, 0.49322190],
+                             [- 6.27309120, -0.00045004, 0.00027572, 7.27264116, 0.99862521, 0.99927424, 0.49322188],
+                             [- 6.27309136, -0.00044997, 0.00027568, 7.27264138, 0.99862541, 0.99927434, 0.49322197],
+                             [- 6.27309151, -0.00044991, 0.00027564, 7.27264160, 0.99862561, 0.99927445, 0.49322195],
+                             [- 6.27309167, -0.00044984, 0.00027560, 7.27264182, 0.99862581, 0.99927455, 0.49322198],
+                             [- 6.27309183, -0.00044978, 0.00027556, 7.27264205, 0.99862601, 0.99927466, 0.49322195],
+                             [- 6.27309198, -0.00044971, 0.00027552, 7.27264227, 0.99862621, 0.99927477, 0.49322211],
+                             [- 6.27309214, -0.00044965, 0.00027548, 7.27264249, 0.99862641, 0.99927487, 0.49322215],
+                             [- 6.27309229, -0.00044958, 0.00027544, 7.27264271, 0.99862660, 0.99927498, 0.49322209],
+                             [- 6.27309245, -0.00044952, 0.00027540, 7.27264293, 0.99862680, 0.99927508, 0.49322211],
+                             [- 6.27309261, -0.00044945, 0.00027536, 7.27264315, 0.99862700, 0.99927519, 0.49322213],
+                             [- 6.27309276, -0.00044939, 0.00027532, 7.27264338, 0.99862720, 0.99927529, 0.49322220],
+                             [- 6.27309292, -0.00044932, 0.00027528, 7.27264360, 0.99862740, 0.99927540, 0.49322206],
+                             [- 6.27309307, -0.00044926, 0.00027524, 7.27264382, 0.99862760, 0.99927550, 0.49322222],
+                             [- 6.27309323, -0.00044919, 0.00027520, 7.27264404, 0.99862780, 0.99927561, 0.49322230],
+                             [- 6.27309339, -0.00044913, 0.00027516, 7.27264426, 0.99862800, 0.99927571, 0.49322233],
+                             [- 6.27309354, -0.00044906, 0.00027512, 7.27264448, 0.99862820, 0.99927582, 0.49322226],
+                             [- 6.27309370, -0.00044900, 0.00027508, 7.27264470, 0.99862840, 0.99927592, 0.49322237],
+                             [- 6.27309385, -0.00044893, 0.00027504, 7.27264492, 0.99862860, 0.99927603, 0.49322238],
+                             [- 6.27309401, -0.00044887, 0.00027500, 7.27264514, 0.99862880, 0.99927613, 0.49322229],
+                             [- 6.27309417, -0.00044880, 0.00027496, 7.27264537, 0.99862899, 0.99927624, 0.49322245],
+                             [- 6.27309432, -0.00044874, 0.00027492, 7.27264559, 0.99862919, 0.99927634, 0.49322245],
+                             [- 6.27309448, -0.00044867, 0.00027488, 7.27264581, 0.99862939, 0.99927645, 0.49322246],
+                             [- 6.27309463, -0.00044861, 0.00027484, 7.27264603, 0.99862959, 0.99927655, 0.49322247],
+                             [- 6.27309479, -0.00044854, 0.00027480, 7.27264625, 0.99862979, 0.99927666, 0.49322254],
+                             [- 6.27309494, -0.00044848, 0.00027476, 7.27264647, 0.99862999, 0.99927676, 0.49322253],
+                             [- 6.27309510, -0.00044841, 0.00027472, 7.27264669, 0.99863019, 0.99927687, 0.49322258],
+                             [- 6.27309526, -0.00044835, 0.00027468, 7.27264691, 0.99863039, 0.99927697, 0.49322250],
+                             [- 6.27309541, -0.00044828, 0.00027464, 7.27264713, 0.99863058, 0.99927708, 0.49322253],
+                             [- 6.27309557, -0.00044822, 0.00027460, 7.27264735, 0.99863078, 0.99927718, 0.49322260],
+                             [- 6.27309572, -0.00044815, 0.00027456, 7.27264757, 0.99863098, 0.99927729, 0.49322265],
+                             [- 6.27309588, -0.00044809, 0.00027452, 7.27264779, 0.99863118, 0.99927739, 0.49322261],
+                             [- 6.27309603, -0.00044802, 0.00027448, 7.27264801, 0.99863138, 0.99927750, 0.49322265],
+                             [- 6.27309619, -0.00044796, 0.00027444, 7.27264823, 0.99863158, 0.99927760, 0.49322274],
+                             [- 6.27309634, -0.00044789, 0.00027440, 7.27264845, 0.99863177, 0.99927770, 0.49322271],
+                             [- 6.27309650, -0.00044783, 0.00027436, 7.27264867, 0.99863197, 0.99927781, 0.49322271],
+                             [- 6.27309665, -0.00044776, 0.00027432, 7.27264889, 0.99863217, 0.99927791, 0.49322277],
+                             [- 6.27309681, -0.00044770, 0.00027429, 7.27264911, 0.99863237, 0.99927802, 0.49322282],
+                             [- 6.27309696, -0.00044763, 0.00027425, 7.27264933, 0.99863256, 0.99927812, 0.49322277],
+                             [- 6.27309712, -0.00044757, 0.00027421, 7.27264955, 0.99863276, 0.99927823, 0.49322279],
+                             [- 6.27309727, -0.00044750, 0.00027417, 7.27264977, 0.99863296, 0.99927833, 0.49322290],
+                             [- 6.27309743, -0.00044744, 0.00027413, 7.27264999, 0.99863316, 0.99927844, 0.49322286],
+                             [- 6.27309758, -0.00044737, 0.00027409, 7.27265021, 0.99863336, 0.99927854, 0.49322289],
+                             [- 6.27309774, -0.00044731, 0.00027405, 7.27265043, 0.99863355, 0.99927864, 0.49322292],
+                             [- 6.27309789, -0.00044724, 0.00027401, 7.27265065, 0.99863375, 0.99927875, 0.49322303],
+                             [- 6.27309805, -0.00044718, 0.00027397, 7.27265087, 0.99863395, 0.99927885, 0.49322297],
+                             [- 6.27309820, -0.00044712, 0.00027393, 7.27265108, 0.99863415, 0.99927896, 0.49322299],
+                             [- 6.27309835, -0.00044705, 0.00027389, 7.27265130, 0.99863434, 0.99927906, 0.49322300],
+                             [- 6.27309851, -0.00044699, 0.00027385, 7.27265152, 0.99863454, 0.99927916, 0.49322302],
+                             [- 6.27309866, -0.00044692, 0.00027381, 7.27265174, 0.99863474, 0.99927927, 0.49322302],
+                             [- 6.27309882, -0.00044686, 0.00027377, 7.27265196, 0.99863493, 0.99927937, 0.49322309],
+                             [- 6.27309897, -0.00044679, 0.00027373, 7.27265218, 0.99863513, 0.99927948, 0.49322304],
+                             [- 6.27309913, -0.00044673, 0.00027369, 7.27265240, 0.99863533, 0.99927958, 0.49322317],
+                             [- 6.27309928, -0.00044666, 0.00027365, 7.27265262, 0.99863553, 0.99927968, 0.49322317],
+                             [- 6.27309944, -0.00044660, 0.00027361, 7.27265284, 0.99863572, 0.99927979, 0.49322320],
+                             [- 6.27309959, -0.00044653, 0.00027357, 7.27265305, 0.99863592, 0.99927989, 0.49322325],
+                             [- 6.27309974, -0.00044647, 0.00027353, 7.27265327, 0.99863612, 0.99928000, 0.49322322],
+                             [- 6.27309990, -0.00044641, 0.00027349, 7.27265349, 0.99863631, 0.99928010, 0.49322331],
+                             [- 6.27310005, -0.00044634, 0.00027345, 7.27265371, 0.99863651, 0.99928020, 0.49322327],
+                             [- 6.27310021, -0.00044628, 0.00027341, 7.27265393, 0.99863671, 0.99928031, 0.49322319],
+                             [- 6.27310036, -0.00044621, 0.00027338, 7.27265415, 0.99863690, 0.99928041, 0.49322336],
+                             [- 6.27310051, -0.00044615, 0.00027334, 7.27265436, 0.99863710, 0.99928052, 0.49322341],
+                             [- 6.27310067, -0.00044608, 0.00027330, 7.27265458, 0.99863730, 0.99928062, 0.49322335],
+                             [- 6.27310082, -0.00044602, 0.00027326, 7.27265480, 0.99863749, 0.99928072, 0.49322336],
+                             [- 6.27310097, -0.00044596, 0.00027322, 7.27265502, 0.99863769, 0.99928083, 0.49322343],
+                             [- 6.27310113, -0.00044589, 0.00027318, 7.27265524, 0.99863789, 0.99928093, 0.49322345],
+                             [- 6.27310128, -0.00044583, 0.00027314, 7.27265546, 0.99863808, 0.99928103, 0.49322341],
+                             [- 6.27310144, -0.00044576, 0.00027310, 7.27265567, 0.99863828, 0.99928114, 0.49322343],
+                             [- 6.27310159, -0.00044570, 0.00027306, 7.27265589, 0.99863847, 0.99928124, 0.49322353],
+                             [- 6.27310174, -0.00044563, 0.00027302, 7.27265611, 0.99863867, 0.99928134, 0.49322355],
+                             [- 6.27310190, -0.00044557, 0.00027298, 7.27265633, 0.99863887, 0.99928145, 0.49322359],
+                             [- 6.27310205, -0.00044551, 0.00027294, 7.27265654, 0.99863906, 0.99928155, 0.49322357],
+                             [- 6.27310220, -0.00044544, 0.00027290, 7.27265676, 0.99863926, 0.99928165, 0.49322365],
+                             [- 6.27310236, -0.00044538, 0.00027286, 7.27265698, 0.99863945, 0.99928176, 0.49322365],
+                             [- 6.27310251, -0.00044531, 0.00027282, 7.27265720, 0.99863965, 0.99928186, 0.49322366],
+                             [- 6.27310266, -0.00044525, 0.00027279, 7.27265741, 0.99863984, 0.99928196, 0.49322350],
+                             [- 6.27310282, -0.00044519, 0.00027275, 7.27265763, 0.99864004, 0.99928207, 0.49322363],
+                             [- 6.27310297, -0.00044512, 0.00027271, 7.27265785, 0.99864024, 0.99928217, 0.49322376],
+                             [- 6.27310312, -0.00044506, 0.00027267, 7.27265807, 0.99864043, 0.99928227, 0.49322376],
+                             [- 6.27310328, -0.00044499, 0.00027263, 7.27265828, 0.99864063, 0.99928238, 0.49322386],
+                             [- 6.27310343, -0.00044493, 0.00027259, 7.27265850, 0.99864082, 0.99928248, 0.49322387],
+                             [- 6.27310358, -0.00044487, 0.00027255, 7.27265872, 0.99864102, 0.99928258, 0.49322377],
+                             [- 6.27310374, -0.00044480, 0.00027251, 7.27265893, 0.99864121, 0.99928269, 0.49322371],
+                             [- 6.27310389, -0.00044474, 0.00027247, 7.27265915, 0.99864141, 0.99928279, 0.49322385],
+                             [- 6.27310404, -0.00044467, 0.00027243, 7.27265937, 0.99864160, 0.99928289, 0.49322391],
+                             [- 6.27310419, -0.00044461, 0.00027239, 7.27265958, 0.99864180, 0.99928300, 0.49322388],
+                             [- 6.27310435, -0.00044455, 0.00027235, 7.27265980, 0.99864199, 0.99928310, 0.49322387],
+                             [- 6.27310450, -0.00044448, 0.00027231, 7.27266002, 0.99864219, 0.99928320, 0.49322394],
+                             [- 6.27310465, -0.00044442, 0.00027228, 7.27266023, 0.99864238, 0.99928330, 0.49322403],
+                             [- 6.27310481, -0.00044436, 0.00027224, 7.27266045, 0.99864258, 0.99928341, 0.49322393],
+                             [- 6.27310496, -0.00044429, 0.00027220, 7.27266067, 0.99864277, 0.99928351, 0.49322396],
+                             [- 6.27310511, -0.00044423, 0.00027216, 7.27266088, 0.99864297, 0.99928361, 0.49322397],
+                             [- 6.27310526, -0.00044416, 0.00027212, 7.27266110, 0.99864316, 0.99928372, 0.49322408],
+                             [- 6.27310542, -0.00044410, 0.00027208, 7.27266132, 0.99864336, 0.99928382, 0.49322399],
+                             [- 6.27310557, -0.00044404, 0.00027204, 7.27266153, 0.99864355, 0.99928392, 0.49322405],
+                             [- 6.27310572, -0.00044397, 0.00027200, 7.27266175, 0.99864375, 0.99928402, 0.49322411],
+                             [- 6.27310587, -0.00044391, 0.00027196, 7.27266196, 0.99864394, 0.99928413, 0.49322415],
+                             [- 6.27310603, -0.00044385, 0.00027192, 7.27266218, 0.99864414, 0.99928423, 0.49322414],
+                             [- 6.27310618, -0.00044378, 0.00027189, 7.27266240, 0.99864433, 0.99928433, 0.49322429],
+                             [- 6.27310633, -0.00044372, 0.00027185, 7.27266261, 0.99864453, 0.99928444, 0.49322422],
+                             [- 6.27310648, -0.00044365, 0.00027181, 7.27266283, 0.99864472, 0.99928454, 0.49322422],
+                             [- 6.27310663, -0.00044359, 0.00027177, 7.27266304, 0.99864491, 0.99928464, 0.49322418],
+                             [- 6.27310679, -0.00044353, 0.00027173, 7.27266326, 0.99864511, 0.99928474, 0.49322426],
+                             [- 6.27310694, -0.00044346, 0.00027169, 7.27266347, 0.99864530, 0.99928485, 0.49322432],
+                             [- 6.27310709, -0.00044340, 0.00027165, 7.27266369, 0.99864550, 0.99928495, 0.49322429],
+                             [- 6.27310724, -0.00044334, 0.00027161, 7.27266391, 0.99864569, 0.99928505, 0.49322440],
+                             [- 6.27310739, -0.00044327, 0.00027157, 7.27266412, 0.99864589, 0.99928515, 0.49322431],
+                             [- 6.27310755, -0.00044321, 0.00027153, 7.27266434, 0.99864608, 0.99928526, 0.49322435],
+                             [- 6.27310770, -0.00044315, 0.00027150, 7.27266455, 0.99864627, 0.99928536, 0.49322446],
+                             [- 6.27310785, -0.00044308, 0.00027146, 7.27266477, 0.99864647, 0.99928546, 0.49322440],
+                             [- 6.27310800, -0.00044302, 0.00027142, 7.27266498, 0.99864666, 0.99928556, 0.49322441],
+                             [- 6.27310815, -0.00044296, 0.00027138, 7.27266520, 0.99864685, 0.99928566, 0.49322447],
+                             [- 6.27310831, -0.00044289, 0.00027134, 7.27266541, 0.99864705, 0.99928577, 0.49322449],
+                             [- 6.27310846, -0.00044283, 0.00027130, 7.27266563, 0.99864724, 0.99928587, 0.49322455],
+                             [- 6.27310861, -0.00044277, 0.00027126, 7.27266584, 0.99864744, 0.99928597, 0.49322455],
+                             [- 6.27310876, -0.00044270, 0.00027122, 7.27266606, 0.99864763, 0.99928607, 0.49322448],
+                             [- 6.27310891, -0.00044264, 0.00027119, 7.27266627, 0.99864782, 0.99928618, 0.49322460],
+                             [- 6.27310906, -0.00044258, 0.00027115, 7.27266649, 0.99864802, 0.99928628, 0.49322463],
+                             [- 6.27310921, -0.00044251, 0.00027111, 7.27266670, 0.99864821, 0.99928638, 0.49322466],
+                             [- 6.27310937, -0.00044245, 0.00027107, 7.27266692, 0.99864840, 0.99928648, 0.49322476],
+                             [- 6.27310952, -0.00044239, 0.00027103, 7.27266713, 0.99864860, 0.99928658, 0.49322465],
+                             [- 6.27310967, -0.00044232, 0.00027099, 7.27266735, 0.99864879, 0.99928669, 0.49322471],
+                             [- 6.27310982, -0.00044226, 0.00027095, 7.27266756, 0.99864898, 0.99928679, 0.49322475],
+                             [- 6.27310997, -0.00044220, 0.00027091, 7.27266777, 0.99864917, 0.99928689, 0.49322474],
+                             [- 6.27311012, -0.00044213, 0.00027088, 7.27266799, 0.99864937, 0.99928699, 0.49322474],
+                             [- 6.27311027, -0.00044207, 0.00027084, 7.27266820, 0.99864956, 0.99928709, 0.49322480],
+                             [- 6.27311042, -0.00044201, 0.00027080, 7.27266842, 0.99864975, 0.99928719, 0.49322485],
+                             [- 6.27311058, -0.00044194, 0.00027076, 7.27266863, 0.99864995, 0.99928730, 0.49322481],
+                             [- 6.27311073, -0.00044188, 0.00027072, 7.27266884, 0.99865014, 0.99928740, 0.49322488],
+                             [- 6.27311088, -0.00044182, 0.00027068, 7.27266906, 0.99865033, 0.99928750, 0.49322485],
+                             [- 6.27311103, -0.00044176, 0.00027064, 7.27266927, 0.99865052, 0.99928760, 0.49322488],
+                             [- 6.27311118, -0.00044169, 0.00027060, 7.27266949, 0.99865072, 0.99928770, 0.49322494],
+                             [- 6.27311133, -0.00044163, 0.00027057, 7.27266970, 0.99865091, 0.99928780, 0.49322492],
+                             [- 6.27311148, -0.00044157, 0.00027053, 7.27266991, 0.99865110, 0.99928791, 0.49322499],
+                             [- 6.27311163, -0.00044150, 0.00027049, 7.27267013, 0.99865129, 0.99928801, 0.49322490],
+                             [- 6.27311178, -0.00044144, 0.00027045, 7.27267034, 0.99865149, 0.99928811, 0.49322494],
+                             [- 6.27311193, -0.00044138, 0.00027041, 7.27267056, 0.99865168, 0.99928821, 0.49322503],
+                             [- 6.27311208, -0.00044131, 0.00027037, 7.27267077, 0.99865187, 0.99928831, 0.49322507],
+                             [- 6.27311223, -0.00044125, 0.00027033, 7.27267098, 0.99865206, 0.99928841, 0.49322506],
+                             [- 6.27311238, -0.00044119, 0.00027030, 7.27267120, 0.99865226, 0.99928852, 0.49322507],
+                             [- 6.27311253, -0.00044113, 0.00027026, 7.27267141, 0.99865245, 0.99928862, 0.49322511],
+                             [- 6.27311269, -0.00044106, 0.00027022, 7.27267162, 0.99865264, 0.99928872, 0.49322515],
+                             [- 6.27311284, -0.00044100, 0.00027018, 7.27267184, 0.99865283, 0.99928882, 0.49322525],
+                             [- 6.27311299, -0.00044094, 0.00027014, 7.27267205, 0.99865302, 0.99928892, 0.49322511],
+                             [- 6.27311314, -0.00044087, 0.00027010, 7.27267226, 0.99865322, 0.99928902, 0.49322518],
+                             [- 6.27311329, -0.00044081, 0.00027006, 7.27267247, 0.99865341, 0.99928912, 0.49322526],
+                             [- 6.27311344, -0.00044075, 0.00027003, 7.27267269, 0.99865360, 0.99928922, 0.49322521],
+                             [- 6.27311359, -0.00044069, 0.00026999, 7.27267290, 0.99865379, 0.99928933, 0.49322528],
+                             [- 6.27311374, -0.00044062, 0.00026995, 7.27267311, 0.99865398, 0.99928943, 0.49322529],
+                             [- 6.27311389, -0.00044056, 0.00026991, 7.27267333, 0.99865418, 0.99928953, 0.49322527],
+                             [- 6.27311404, -0.00044050, 0.00026987, 7.27267354, 0.99865437, 0.99928963, 0.49322539],
+                             [- 6.27311419, -0.00044044, 0.00026983, 7.27267375, 0.99865456, 0.99928973, 0.49322538],
+                             [- 6.27311434, -0.00044037, 0.00026980, 7.27267396, 0.99865475, 0.99928983, 0.49322547],
+                             [- 6.27311449, -0.00044031, 0.00026976, 7.27267418, 0.99865494, 0.99928993, 0.49322544],
+                             [- 6.27311464, -0.00044025, 0.00026972, 7.27267439, 0.99865513, 0.99929003, 0.49322545],
+                             [- 6.27311479, -0.00044018, 0.00026968, 7.27267460, 0.99865532, 0.99929013, 0.49322545],
+                             [- 6.27311494, -0.00044012, 0.00026964, 7.27267481, 0.99865551, 0.99929024, 0.49322537],
+                             [- 6.27311509, -0.00044006, 0.00026960, 7.27267503, 0.99865571, 0.99929034, 0.49322549],
+                             [- 6.27311524, -0.00044000, 0.00026957, 7.27267524, 0.99865590, 0.99929044, 0.49322552],
+                             [- 6.27311539, -0.00043993, 0.00026953, 7.27267545, 0.99865609, 0.99929054, 0.49322561],
+                             [- 6.27311554, -0.00043987, 0.00026949, 7.27267566, 0.99865628, 0.99929064, 0.49322551],
+                             [- 6.27311569, -0.00043981, 0.00026945, 7.27267588, 0.99865647, 0.99929074, 0.49322559],
+                             [- 6.27311583, -0.00043975, 0.00026941, 7.27267609, 0.99865666, 0.99929084, 0.49322564],
+                             [- 6.27311598, -0.00043968, 0.00026937, 7.27267630, 0.99865685, 0.99929094, 0.49322558],
+                             [- 6.27311613, -0.00043962, 0.00026934, 7.27267651, 0.99865704, 0.99929104, 0.49322567],
+                             [- 6.27311628, -0.00043956, 0.00026930, 7.27267672, 0.99865723, 0.99929114, 0.49322564],
+                             [- 6.27311643, -0.00043950, 0.00026926, 7.27267693, 0.99865742, 0.99929124, 0.49322573],
+                             [- 6.27311658, -0.00043944, 0.00026922, 7.27267715, 0.99865762, 0.99929134, 0.49322571],
+                             [- 6.27311673, -0.00043937, 0.00026918, 7.27267736, 0.99865781, 0.99929144, 0.49322569],
+                             [- 6.27311688, -0.00043931, 0.00026914, 7.27267757, 0.99865800, 0.99929155, 0.49322578],
+                             [- 6.27311703, -0.00043925, 0.00026911, 7.27267778, 0.99865819, 0.99929165, 0.49322578],
+                             [- 6.27311718, -0.00043919, 0.00026907, 7.27267799, 0.99865838, 0.99929175, 0.49322584],
+                             [- 6.27311733, -0.00043912, 0.00026903, 7.27267820, 0.99865857, 0.99929185, 0.49322586],
+                             [- 6.27311748, -0.00043906, 0.00026899, 7.27267842, 0.99865876, 0.99929195, 0.49322590],
+                             [- 6.27311763, -0.00043900, 0.00026895, 7.27267863, 0.99865895, 0.99929205, 0.49322588],
+                             [- 6.27311777, -0.00043894, 0.00026892, 7.27267884, 0.99865914, 0.99929215, 0.49322594],
+                             [- 6.27311792, -0.00043887, 0.00026888, 7.27267905, 0.99865933, 0.99929225, 0.49322584],
+                             [- 6.27311807, -0.00043881, 0.00026884, 7.27267926, 0.99865952, 0.99929235, 0.49322593],
+                             [- 6.27311822, -0.00043875, 0.00026880, 7.27267947, 0.99865971, 0.99929245, 0.49322593],
+                             [- 6.27311837, -0.00043869, 0.00026876, 7.27267968, 0.99865990, 0.99929255, 0.49322599],
+                             [- 6.27311852, -0.00043863, 0.00026872, 7.27267989, 0.99866009, 0.99929265, 0.49322601],
+                             [- 6.27311867, -0.00043856, 0.00026869, 7.27268010, 0.99866028, 0.99929275, 0.49322609],
+                             [- 6.27311882, -0.00043850, 0.00026865, 7.27268032, 0.99866047, 0.99929285, 0.49322605],
+                             [- 6.27311897, -0.00043844, 0.00026861, 7.27268053, 0.99866066, 0.99929295, 0.49322609],
+                             [- 6.27311911, -0.00043838, 0.00026857, 7.27268074, 0.99866085, 0.99929305, 0.49322609],
+                             [- 6.27311926, -0.00043832, 0.00026853, 7.27268095, 0.99866104, 0.99929315, 0.49322617],
+                             [- 6.27311941, -0.00043825, 0.00026850, 7.27268116, 0.99866123, 0.99929325, 0.49322622],
+                             [- 6.27311956, -0.00043819, 0.00026846, 7.27268137, 0.99866142, 0.99929335, 0.49322614],
+                             [- 6.27311971, -0.00043813, 0.00026842, 7.27268158, 0.99866161, 0.99929345, 0.49322631],
+                             [- 6.27311986, -0.00043807, 0.00026838, 7.27268179, 0.99866180, 0.99929355, 0.49322620],
+                             [- 6.27312000, -0.00043800, 0.00026834, 7.27268200, 0.99866199, 0.99929365, 0.49322616],
+                             [- 6.27312015, -0.00043794, 0.00026831, 7.27268221, 0.99866217, 0.99929375, 0.49322624],
+                             [- 6.27312030, -0.00043788, 0.00026827, 7.27268242, 0.99866236, 0.99929385, 0.49322623],
+                             [- 6.27312045, -0.00043782, 0.00026823, 7.27268263, 0.99866255, 0.99929395, 0.49322635],
+                             [- 6.27312060, -0.00043776, 0.00026819, 7.27268284, 0.99866274, 0.99929405, 0.49322632],
+                             [- 6.27312075, -0.00043770, 0.00026815, 7.27268305, 0.99866293, 0.99929415, 0.49322635],
+                             [- 6.27312089, -0.00043763, 0.00026812, 7.27268326, 0.99866312, 0.99929425, 0.49322639],
+                             [- 6.27312104, -0.00043757, 0.00026808, 7.27268347, 0.99866331, 0.99929435, 0.49322639],
+                             [- 6.27312119, -0.00043751, 0.00026804, 7.27268368, 0.99866350, 0.99929445, 0.49322638],
+                             [- 6.27312134, -0.00043745, 0.00026800, 7.27268389, 0.99866369, 0.99929455, 0.49322647],
+                             [- 6.27312149, -0.00043739, 0.00026796, 7.27268410, 0.99866388, 0.99929465, 0.49322642],
+                             [- 6.27312163, -0.00043732, 0.00026793, 7.27268431, 0.99866407, 0.99929475, 0.49322644],
+                             [- 6.27312178, -0.00043726, 0.00026789, 7.27268452, 0.99866425, 0.99929485, 0.49322646],
+                             [- 6.27312193, -0.00043720, 0.00026785, 7.27268473, 0.99866444, 0.99929495, 0.49322653],
+                             [- 6.27312208, -0.00043714, 0.00026781, 7.27268494, 0.99866463, 0.99929505, 0.49322663],
+                             [- 6.27312223, -0.00043708, 0.00026778, 7.27268515, 0.99866482, 0.99929515, 0.49322655],
+                             [- 6.27312237, -0.00043702, 0.00026774, 7.27268536, 0.99866501, 0.99929525, 0.49322658],
+                             [- 6.27312252, -0.00043695, 0.00026770, 7.27268557, 0.99866520, 0.99929535, 0.49322660],
+                             [- 6.27312267, -0.00043689, 0.00026766, 7.27268578, 0.99866539, 0.99929545, 0.49322666],
+                             [- 6.27312282, -0.00043683, 0.00026762, 7.27268599, 0.99866557, 0.99929555, 0.49322663],
+                             [- 6.27312296, -0.00043677, 0.00026759, 7.27268619, 0.99866576, 0.99929564, 0.49322672],
+                             [- 6.27312311, -0.00043671, 0.00026755, 7.27268640, 0.99866595, 0.99929574, 0.49322669],
+                             [- 6.27312326, -0.00043665, 0.00026751, 7.27268661, 0.99866614, 0.99929584, 0.49322667],
+                             [- 6.27312341, -0.00043658, 0.00026747, 7.27268682, 0.99866633, 0.99929594, 0.49322665],
+                             [- 6.27312355, -0.00043652, 0.00026744, 7.27268703, 0.99866652, 0.99929604, 0.49322678],
+                             [- 6.27312370, -0.00043646, 0.00026740, 7.27268724, 0.99866670, 0.99929614, 0.49322680],
+                             [- 6.27312385, -0.00043640, 0.00026736, 7.27268745, 0.99866689, 0.99929624, 0.49322677],
+                             [- 6.27312399, -0.00043634, 0.00026732, 7.27268766, 0.99866708, 0.99929634, 0.49322687],
+                             [- 6.27312414, -0.00043628, 0.00026728, 7.27268787, 0.99866727, 0.99929644, 0.49322695],
+                             [- 6.27312429, -0.00043622, 0.00026725, 7.27268807, 0.99866746, 0.99929654, 0.49322684],
+                             [- 6.27312444, -0.00043615, 0.00026721, 7.27268828, 0.99866764, 0.99929664, 0.49322695],
+                             [- 6.27312458, -0.00043609, 0.00026717, 7.27268849, 0.99866783, 0.99929674, 0.49322694],
+                             [- 6.27312473, -0.00043603, 0.00026713, 7.27268870, 0.99866802, 0.99929684, 0.49322694],
+                             [- 6.27312488, -0.00043597, 0.00026710, 7.27268891, 0.99866821, 0.99929693, 0.49322692],
+                             [- 6.27312502, -0.00043591, 0.00026706, 7.27268912, 0.99866839, 0.99929703, 0.49322694],
+                             [- 6.27312517, -0.00043585, 0.00026702, 7.27268932, 0.99866858, 0.99929713, 0.49322699],
+                             [- 6.27312532, -0.00043579, 0.00026698, 7.27268953, 0.99866877, 0.99929723, 0.49322697],
+                             [- 6.27312546, -0.00043572, 0.00026695, 7.27268974, 0.99866896, 0.99929733, 0.49322709],
+                             [- 6.27312561, -0.00043566, 0.00026691, 7.27268995, 0.99866914, 0.99929743, 0.49322698],
+                             [- 6.27312576, -0.00043560, 0.00026687, 7.27269016, 0.99866933, 0.99929753, 0.49322713],
+                             [- 6.27312590, -0.00043554, 0.00026683, 7.27269037, 0.99866952, 0.99929763, 0.49322708],
+                             [- 6.27312605, -0.00043548, 0.00026680, 7.27269057, 0.99866971, 0.99929773, 0.49322723],
+                             [- 6.27312620, -0.00043542, 0.00026676, 7.27269078, 0.99866989, 0.99929782, 0.49322717],
+                             [- 6.27312634, -0.00043536, 0.00026672, 7.27269099, 0.99867008, 0.99929792, 0.49322722],
+                             [- 6.27312649, -0.00043529, 0.00026668, 7.27269120, 0.99867027, 0.99929802, 0.49322714],
+                             [- 6.27312664, -0.00043523, 0.00026665, 7.27269140, 0.99867045, 0.99929812, 0.49322725],
+                             [- 6.27312678, -0.00043517, 0.00026661, 7.27269161, 0.99867064, 0.99929822, 0.49322739],
+                             [- 6.27312693, -0.00043511, 0.00026657, 7.27269182, 0.99867083, 0.99929832, 0.49322721],
+                             [- 6.27312708, -0.00043505, 0.00026653, 7.27269203, 0.99867101, 0.99929842, 0.49322728],
+                             [- 6.27312722, -0.00043499, 0.00026650, 7.27269223, 0.99867120, 0.99929852, 0.49322731],
+                             [- 6.27312737, -0.00043493, 0.00026646, 7.27269244, 0.99867139, 0.99929861, 0.49322735],
+                             [- 6.27312752, -0.00043487, 0.00026642, 7.27269265, 0.99867158, 0.99929871, 0.49322737],
+                             [- 6.27312766, -0.00043481, 0.00026638, 7.27269286, 0.99867176, 0.99929881, 0.49322735],
+                             [- 6.27312781, -0.00043474, 0.00026635, 7.27269306, 0.99867195, 0.99929891, 0.49322744],
+                             [- 6.27312795, -0.00043468, 0.00026631, 7.27269327, 0.99867214, 0.99929901, 0.49322745],
+                             [- 6.27312810, -0.00043462, 0.00026627, 7.27269348, 0.99867232, 0.99929911, 0.49322747],
+                             [- 6.27312825, -0.00043456, 0.00026623, 7.27269368, 0.99867251, 0.99929920, 0.49322750],
+                             [- 6.27312839, -0.00043450, 0.00026620, 7.27269389, 0.99867269, 0.99929930, 0.49322745],
+                             [- 6.27312854, -0.00043444, 0.00026616, 7.27269410, 0.99867288, 0.99929940, 0.49322761],
+                             [- 6.27312868, -0.00043438, 0.00026612, 7.27269431, 0.99867307, 0.99929950, 0.49322746],
+                             [- 6.27312883, -0.00043432, 0.00026608, 7.27269451, 0.99867325, 0.99929960, 0.49322757],
+                             [- 6.27312898, -0.00043426, 0.00026605, 7.27269472, 0.99867344, 0.99929970, 0.49322765],
+                             [- 6.27312912, -0.00043420, 0.00026601, 7.27269493, 0.99867363, 0.99929979, 0.49322763],
+                             [- 6.27312927, -0.00043413, 0.00026597, 7.27269513, 0.99867381, 0.99929989, 0.49322751],
+                             [- 6.27312941, -0.00043407, 0.00026593, 7.27269534, 0.99867400, 0.99929999, 0.49322758],
+                             [- 6.27312956, -0.00043401, 0.00026590, 7.27269555, 0.99867418, 0.99930009, 0.49322771],
+                             [- 6.27312970, -0.00043395, 0.00026586, 7.27269575, 0.99867437, 0.99930019, 0.49322770],
+                             [- 6.27312985, -0.00043389, 0.00026582, 7.27269596, 0.99867456, 0.99930029, 0.49322772],
+                             [- 6.27313000, -0.00043383, 0.00026579, 7.27269616, 0.99867474, 0.99930038, 0.49322775],
+                             [- 6.27313014, -0.00043377, 0.00026575, 7.27269637, 0.99867493, 0.99930048, 0.49322776],
+                             [- 6.27313029, -0.00043371, 0.00026571, 7.27269658, 0.99867511, 0.99930058, 0.49322779],
+                             [- 6.27313043, -0.00043365, 0.00026567, 7.27269678, 0.99867530, 0.99930068, 0.49322775],
+                             [- 6.27313058, -0.00043359, 0.00026564, 7.27269699, 0.99867548, 0.99930078, 0.49322782],
+                             [- 6.27313072, -0.00043353, 0.00026560, 7.27269720, 0.99867567, 0.99930087, 0.49322777],
+                             [- 6.27313087, -0.00043347, 0.00026556, 7.27269740, 0.99867586, 0.99930097, 0.49322785],
+                             [- 6.27313101, -0.00043341, 0.00026552, 7.27269761, 0.99867604, 0.99930107, 0.49322785],
+                             [- 6.27313116, -0.00043335, 0.00026549, 7.27269781, 0.99867623, 0.99930117, 0.49322792],
+                             [- 6.27313130, -0.00043328, 0.00026545, 7.27269802, 0.99867641, 0.99930127, 0.49322802],
+                             [- 6.27313145, -0.00043322, 0.00026541, 7.27269823, 0.99867660, 0.99930136, 0.49322800],
+                             [- 6.27313159, -0.00043316, 0.00026538, 7.27269843, 0.99867678, 0.99930146, 0.49322801],
+                             [- 6.27313174, -0.00043310, 0.00026534, 7.27269864, 0.99867697, 0.99930156, 0.49322793],
+                             [- 6.27313188, -0.00043304, 0.00026530, 7.27269884, 0.99867715, 0.99930166, 0.49322797],
+                             [- 6.27313203, -0.00043298, 0.00026526, 7.27269905, 0.99867734, 0.99930175, 0.49322808],
+                             [- 6.27313217, -0.00043292, 0.00026523, 7.27269925, 0.99867752, 0.99930185, 0.49322805],
+                             [- 6.27313232, -0.00043286, 0.00026519, 7.27269946, 0.99867771, 0.99930195, 0.49322811],
+                             [- 6.27313246, -0.00043280, 0.00026515, 7.27269966, 0.99867789, 0.99930205, 0.49322809],
+                             [- 6.27313261, -0.00043274, 0.00026512, 7.27269987, 0.99867808, 0.99930214, 0.49322806],
+                             [- 6.27313275, -0.00043268, 0.00026508, 7.27270007, 0.99867826, 0.99930224, 0.49322819],
+                             [- 6.27313290, -0.00043262, 0.00026504, 7.27270028, 0.99867845, 0.99930234, 0.49322820],
+                             [- 6.27313304, -0.00043256, 0.00026501, 7.27270049, 0.99867863, 0.99930244, 0.49322821],
+                             [- 6.27313319, -0.00043250, 0.00026497, 7.27270069, 0.99867882, 0.99930253, 0.49322826],
+                             [- 6.27313333, -0.00043244, 0.00026493, 7.27270090, 0.99867900, 0.99930263, 0.49322825],
+                             [- 6.27313348, -0.00043238, 0.00026489, 7.27270110, 0.99867919, 0.99930273, 0.49322828],
+                             [- 6.27313362, -0.00043232, 0.00026486, 7.27270131, 0.99867937, 0.99930283, 0.49322824],
+                             [- 6.27313377, -0.00043226, 0.00026482, 7.27270151, 0.99867955, 0.99930292, 0.49322829],
+                             [- 6.27313391, -0.00043220, 0.00026478, 7.27270171, 0.99867974, 0.99930302, 0.49322833],
+                             [- 6.27313405, -0.00043214, 0.00026475, 7.27270192, 0.99867992, 0.99930312, 0.49322832],
+                             [- 6.27313420, -0.00043207, 0.00026471, 7.27270212, 0.99868011, 0.99930322, 0.49322832],
+                             [- 6.27313434, -0.00043201, 0.00026467, 7.27270233, 0.99868029, 0.99930331, 0.49322841],
+                             [- 6.27313449, -0.00043195, 0.00026464, 7.27270253, 0.99868048, 0.99930341, 0.49322842],
+                             [- 6.27313463, -0.00043189, 0.00026460, 7.27270274, 0.99868066, 0.99930351, 0.49322850],
+                             [- 6.27313478, -0.00043183, 0.00026456, 7.27270294, 0.99868084, 0.99930360, 0.49322849],
+                             [- 6.27313492, -0.00043177, 0.00026452, 7.27270315, 0.99868103, 0.99930370, 0.49322832],
+                             [- 6.27313506, -0.00043171, 0.00026449, 7.27270335, 0.99868121, 0.99930380, 0.49322850],
+                             [- 6.27313521, -0.00043165, 0.00026445, 7.27270356, 0.99868140, 0.99930390, 0.49322849],
+                             [- 6.27313535, -0.00043159, 0.00026441, 7.27270376, 0.99868158, 0.99930399, 0.49322851],
+                             [- 6.27313550, -0.00043153, 0.00026438, 7.27270396, 0.99868176, 0.99930409, 0.49322842],
+                             [- 6.27313564, -0.00043147, 0.00026434, 7.27270417, 0.99868195, 0.99930419, 0.49322856],
+                             [- 6.27313578, -0.00043141, 0.00026430, 7.27270437, 0.99868213, 0.99930428, 0.49322852],
+                             [- 6.27313593, -0.00043135, 0.00026427, 7.27270458, 0.99868232, 0.99930438, 0.49322857],
+                             [- 6.27313607, -0.00043129, 0.00026423, 7.27270478, 0.99868250, 0.99930448, 0.49322857],
+                             [- 6.27313622, -0.00043123, 0.00026419, 7.27270498, 0.99868268, 0.99930458, 0.49322862],
+                             [- 6.27313636, -0.00043117, 0.00026416, 7.27270519, 0.99868287, 0.99930467, 0.49322867],
+                             [- 6.27313650, -0.00043111, 0.00026412, 7.27270539, 0.99868305, 0.99930477, 0.49322876],
+                             [- 6.27313665, -0.00043105, 0.00026408, 7.27270560, 0.99868323, 0.99930487, 0.49322877],
+                             [- 6.27313679, -0.00043099, 0.00026405, 7.27270580, 0.99868342, 0.99930496, 0.49322873],
+                             [- 6.27313693, -0.00043093, 0.00026401, 7.27270600, 0.99868360, 0.99930506, 0.49322870],
+                             [- 6.27313708, -0.00043087, 0.00026397, 7.27270621, 0.99868378, 0.99930516, 0.49322877],
+                             [- 6.27313722, -0.00043081, 0.00026394, 7.27270641, 0.99868397, 0.99930525, 0.49322879],
+                             [- 6.27313737, -0.00043075, 0.00026390, 7.27270661, 0.99868415, 0.99930535, 0.49322891],
+                             [- 6.27313751, -0.00043069, 0.00026386, 7.27270682, 0.99868433, 0.99930545, 0.49322887],
+                             [- 6.27313765, -0.00043063, 0.00026382, 7.27270702, 0.99868452, 0.99930554, 0.49322881],
+                             [- 6.27313780, -0.00043057, 0.00026379, 7.27270722, 0.99868470, 0.99930564, 0.49322892],
+                             [- 6.27313794, -0.00043051, 0.00026375, 7.27270743, 0.99868488, 0.99930574, 0.49322891],
+                             [- 6.27313808, -0.00043045, 0.00026371, 7.27270763, 0.99868507, 0.99930583, 0.49322891],
+                             [- 6.27313823, -0.00043039, 0.00026368, 7.27270783, 0.99868525, 0.99930593, 0.49322893],
+                             [- 6.27313837, -0.00043033, 0.00026364, 7.27270804, 0.99868543, 0.99930603, 0.49322886],
+                             [- 6.27313851, -0.00043027, 0.00026360, 7.27270824, 0.99868561, 0.99930612, 0.49322902],
+                             [- 6.27313865, -0.00043021, 0.00026357, 7.27270844, 0.99868580, 0.99930622, 0.49322900],
+                             [- 6.27313880, -0.00043015, 0.00026353, 7.27270864, 0.99868598, 0.99930632, 0.49322904],
+                             [- 6.27313894, -0.00043009, 0.00026349, 7.27270885, 0.99868616, 0.99930641, 0.49322903],
+                             [- 6.27313908, -0.00043003, 0.00026346, 7.27270905, 0.99868634, 0.99930651, 0.49322900],
+                             [- 6.27313923, -0.00042997, 0.00026342, 7.27270925, 0.99868653, 0.99930660, 0.49322904],
+                             [- 6.27313937, -0.00042991, 0.00026338, 7.27270946, 0.99868671, 0.99930670, 0.49322912],
+                             [- 6.27313951, -0.00042985, 0.00026335, 7.27270966, 0.99868689, 0.99930680, 0.49322917],
+                             [- 6.27313966, -0.00042980, 0.00026331, 7.27270986, 0.99868707, 0.99930689, 0.49322903],
+                             [- 6.27313980, -0.00042974, 0.00026328, 7.27271006, 0.99868726, 0.99930699, 0.49322919],
+                             [- 6.27313994, -0.00042968, 0.00026324, 7.27271027, 0.99868744, 0.99930709, 0.49322915],
+                             [- 6.27314008, -0.00042962, 0.00026320, 7.27271047, 0.99868762, 0.99930718, 0.49322921],
+                             [- 6.27314023, -0.00042956, 0.00026317, 7.27271067, 0.99868780, 0.99930728, 0.49322918],
+                             [- 6.27314037, -0.00042950, 0.00026313, 7.27271087, 0.99868799, 0.99930737, 0.49322930],
+                             [- 6.27314051, -0.00042944, 0.00026309, 7.27271107, 0.99868817, 0.99930747, 0.49322927],
+                             [- 6.27314065, -0.00042938, 0.00026306, 7.27271128, 0.99868835, 0.99930757, 0.49322931],
+                             [- 6.27314080, -0.00042932, 0.00026302, 7.27271148, 0.99868853, 0.99930766, 0.49322934],
+                             [- 6.27314094, -0.00042926, 0.00026298, 7.27271168, 0.99868871, 0.99930776, 0.49322928],
+                             [- 6.27314108, -0.00042920, 0.00026295, 7.27271188, 0.99868890, 0.99930785, 0.49322942],
+                             [- 6.27314122, -0.00042914, 0.00026291, 7.27271208, 0.99868908, 0.99930795, 0.49322942],
+                             [- 6.27314137, -0.00042908, 0.00026287, 7.27271229, 0.99868926, 0.99930805, 0.49322944],
+                             [- 6.27314151, -0.00042902, 0.00026284, 7.27271249, 0.99868944, 0.99930814, 0.49322951],
+                             [- 6.27314165, -0.00042896, 0.00026280, 7.27271269, 0.99868962, 0.99930824, 0.49322944],
+                             [- 6.27314179, -0.00042890, 0.00026276, 7.27271289, 0.99868980, 0.99930833, 0.49322951],
+                             [- 6.27314194, -0.00042884, 0.00026273, 7.27271309, 0.99868999, 0.99930843, 0.49322954],
+                             [- 6.27314208, -0.00042878, 0.00026269, 7.27271329, 0.99869017, 0.99930853, 0.49322961],
+                             [- 6.27314222, -0.00042872, 0.00026265, 7.27271350, 0.99869035, 0.99930862, 0.49322958],
+                             [- 6.27314236, -0.00042866, 0.00026262, 7.27271370, 0.99869053, 0.99930872, 0.49322958],
+                             [- 6.27314250, -0.00042861, 0.00026258, 7.27271390, 0.99869071, 0.99930881, 0.49322960],
+                             [- 6.27314265, -0.00042855, 0.00026255, 7.27271410, 0.99869089, 0.99930891, 0.49322954],
+                             [- 6.27314279, -0.00042849, 0.00026251, 7.27271430, 0.99869107, 0.99930900, 0.49322960],
+                             [- 6.27314293, -0.00042843, 0.00026247, 7.27271450, 0.99869125, 0.99930910, 0.49322964],
+                             [- 6.27314307, -0.00042837, 0.00026244, 7.27271470, 0.99869144, 0.99930920, 0.49322967],
+                             [- 6.27314321, -0.00042831, 0.00026240, 7.27271491, 0.99869162, 0.99930929, 0.49322963],
+                             [- 6.27314336, -0.00042825, 0.00026236, 7.27271511, 0.99869180, 0.99930939, 0.49322972],
+                             [- 6.27314350, -0.00042819, 0.00026233, 7.27271531, 0.99869198, 0.99930948, 0.49322962],
+                             [- 6.27314364, -0.00042813, 0.00026229, 7.27271551, 0.99869216, 0.99930958, 0.49322977],
+                             [- 6.27314378, -0.00042807, 0.00026226, 7.27271571, 0.99869234, 0.99930967, 0.49322982],
+                             [- 6.27314392, -0.00042801, 0.00026222, 7.27271591, 0.99869252, 0.99930977, 0.49322974],
+                             [- 6.27314406, -0.00042795, 0.00026218, 7.27271611, 0.99869270, 0.99930986, 0.49322983],
+                             [- 6.27314421, -0.00042789, 0.00026215, 7.27271631, 0.99869288, 0.99930996, 0.49322981],
+                             [- 6.27314435, -0.00042783, 0.00026211, 7.27271651, 0.99869306, 0.99931005, 0.49322987],
+                             [- 6.27314449, -0.00042778, 0.00026207, 7.27271671, 0.99869325, 0.99931015, 0.49322991],
+                             [- 6.27314463, -0.00042772, 0.00026204, 7.27271691, 0.99869343, 0.99931025, 0.49322985],
+                             [- 6.27314477, -0.00042766, 0.00026200, 7.27271711, 0.99869361, 0.99931034, 0.49322989],
+                             [- 6.27314491, -0.00042760, 0.00026197, 7.27271731, 0.99869379, 0.99931044, 0.49322995],
+                             [- 6.27314505, -0.00042754, 0.00026193, 7.27271752, 0.99869397, 0.99931053, 0.49322998],
+                             [- 6.27314520, -0.00042748, 0.00026189, 7.27271772, 0.99869415, 0.99931063, 0.49322992],
+                             [- 6.27314534, -0.00042742, 0.00026186, 7.27271792, 0.99869433, 0.99931072, 0.49322999],
+                             [- 6.27314548, -0.00042736, 0.00026182, 7.27271812, 0.99869451, 0.99931082, 0.49323014],
+                             [- 6.27314562, -0.00042730, 0.00026178, 7.27271832, 0.99869469, 0.99931091, 0.49323001],
+                             [- 6.27314576, -0.00042724, 0.00026175, 7.27271852, 0.99869487, 0.99931101, 0.49323007],
+                             [- 6.27314590, -0.00042719, 0.00026171, 7.27271872, 0.99869505, 0.99931110, 0.49323010],
+                             [- 6.27314604, -0.00042713, 0.00026168, 7.27271892, 0.99869523, 0.99931120, 0.49323018],
+                             [- 6.27314618, -0.00042707, 0.00026164, 7.27271912, 0.99869541, 0.99931129, 0.49323018],
+                             [- 6.27314633, -0.00042701, 0.00026160, 7.27271932, 0.99869559, 0.99931139, 0.49323016],
+                             [- 6.27314647, -0.00042695, 0.00026157, 7.27271952, 0.99869577, 0.99931148, 0.49323007],
+                             [- 6.27314661, -0.00042689, 0.00026153, 7.27271972, 0.99869595, 0.99931158, 0.49323022],
+                             [- 6.27314675, -0.00042683, 0.00026150, 7.27271992, 0.99869613, 0.99931167, 0.49323025],
+                             [- 6.27314689, -0.00042677, 0.00026146, 7.27272012, 0.99869631, 0.99931177, 0.49323030],
+                             [- 6.27314703, -0.00042671, 0.00026142, 7.27272032, 0.99869649, 0.99931186, 0.49323027],
+                             [- 6.27314717, -0.00042666, 0.00026139, 7.27272051, 0.99869667, 0.99931196, 0.49323031],
+                             [- 6.27314731, -0.00042660, 0.00026135, 7.27272071, 0.99869685, 0.99931205, 0.49323029],
+                             [- 6.27314745, -0.00042654, 0.00026132, 7.27272091, 0.99869703, 0.99931215, 0.49323033],
+                             [- 6.27314759, -0.00042648, 0.00026128, 7.27272111, 0.99869721, 0.99931224, 0.49323043],
+                             [- 6.27314773, -0.00042642, 0.00026124, 7.27272131, 0.99869739, 0.99931234, 0.49323035],
+                             [- 6.27314787, -0.00042636, 0.00026121, 7.27272151, 0.99869757, 0.99931243, 0.49323032],
+                             [- 6.27314801, -0.00042630, 0.00026117, 7.27272171, 0.99869775, 0.99931253, 0.49323043],
+                             [- 6.27314815, -0.00042624, 0.00026114, 7.27272191, 0.99869792, 0.99931262, 0.49323038],
+                             [- 6.27314830, -0.00042619, 0.00026110, 7.27272211, 0.99869810, 0.99931272, 0.49323055],
+                             [- 6.27314844, -0.00042613, 0.00026106, 7.27272231, 0.99869828, 0.99931281, 0.49323047],
+                             [- 6.27314858, -0.00042607, 0.00026103, 7.27272251, 0.99869846, 0.99931290, 0.49323039],
+                             [- 6.27314872, -0.00042601, 0.00026099, 7.27272271, 0.99869864, 0.99931300, 0.49323039],
+                             [- 6.27314886, -0.00042595, 0.00026096, 7.27272291, 0.99869882, 0.99931309, 0.49323057],
+                             [- 6.27314900, -0.00042589, 0.00026092, 7.27272310, 0.99869900, 0.99931319, 0.49323051],
+                             [- 6.27314914, -0.00042583, 0.00026088, 7.27272330, 0.99869918, 0.99931328, 0.49323056],
+                             [- 6.27314928, -0.00042578, 0.00026085, 7.27272350, 0.99869936, 0.99931338, 0.49323064],
+                             [- 6.27314942, -0.00042572, 0.00026081, 7.27272370, 0.99869954, 0.99931347, 0.49323065],
+                             [- 6.27314956, -0.00042566, 0.00026078, 7.27272390, 0.99869972, 0.99931357, 0.49323065],
+                             [- 6.27314970, -0.00042560, 0.00026074, 7.27272410, 0.99869989, 0.99931366, 0.49323070],
+                             [- 6.27314984, -0.00042554, 0.00026070, 7.27272430, 0.99870007, 0.99931375, 0.49323062],
+                             [- 6.27314998, -0.00042548, 0.00026067, 7.27272450, 0.99870025, 0.99931385, 0.49323063],
+                             [- 6.27315012, -0.00042542, 0.00026063, 7.27272469, 0.99870043, 0.99931394, 0.49323075],
+                             [- 6.27315026, -0.00042537, 0.00026060, 7.27272489, 0.99870061, 0.99931404, 0.49323074],
+                             [- 6.27315040, -0.00042531, 0.00026056, 7.27272509, 0.99870079, 0.99931413, 0.49323081],
+                             [- 6.27315054, -0.00042525, 0.00026052, 7.27272529, 0.99870097, 0.99931423, 0.49323082],
+                             [- 6.27315068, -0.00042519, 0.00026049, 7.27272549, 0.99870115, 0.99931432, 0.49323079],
+                             [- 6.27315082, -0.00042513, 0.00026045, 7.27272569, 0.99870132, 0.99931441, 0.49323072],
+                             [- 6.27315096, -0.00042507, 0.00026042, 7.27272588, 0.99870150, 0.99931451, 0.49323088],
+                             [- 6.27315110, -0.00042502, 0.00026038, 7.27272608, 0.99870168, 0.99931460, 0.49323096],
+                             [- 6.27315124, -0.00042496, 0.00026035, 7.27272628, 0.99870186, 0.99931470, 0.49323088],
+                             [- 6.27315138, -0.00042490, 0.00026031, 7.27272648, 0.99870204, 0.99931479, 0.49323085],
+                             [- 6.27315152, -0.00042484, 0.00026027, 7.27272668, 0.99870222, 0.99931489, 0.49323089],
+                             [- 6.27315165, -0.00042478, 0.00026024, 7.27272687, 0.99870239, 0.99931498, 0.49323085],
+                             [- 6.27315179, -0.00042472, 0.00026020, 7.27272707, 0.99870257, 0.99931507, 0.49323101],
+                             [- 6.27315193, -0.00042467, 0.00026017, 7.27272727, 0.99870275, 0.99931517, 0.49323094],
+                             [- 6.27315207, -0.00042461, 0.00026013, 7.27272747, 0.99870293, 0.99931526, 0.49323104],
+                             [- 6.27315221, -0.00042455, 0.00026010, 7.27272766, 0.99870311, 0.99931535, 0.49323100],
+                             [- 6.27315235, -0.00042449, 0.00026006, 7.27272786, 0.99870328, 0.99931545, 0.49323105],
+                             [- 6.27315249, -0.00042443, 0.00026002, 7.27272806, 0.99870346, 0.99931554, 0.49323112],
+                             [- 6.27315263, -0.00042437, 0.00025999, 7.27272826, 0.99870364, 0.99931564, 0.49323100],
+                             [- 6.27315277, -0.00042432, 0.00025995, 7.27272845, 0.99870382, 0.99931573, 0.49323104],
+                             [- 6.27315291, -0.00042426, 0.00025992, 7.27272865, 0.99870399, 0.99931582, 0.49323113],
+                             [- 6.27315305, -0.00042420, 0.00025988, 7.27272885, 0.99870417, 0.99931592, 0.49323100],
+                             [- 6.27315319, -0.00042414, 0.00025985, 7.27272905, 0.99870435, 0.99931601, 0.49323118],
+                             [- 6.27315333, -0.00042408, 0.00025981, 7.27272924, 0.99870453, 0.99931611, 0.49323122],
+                             [- 6.27315347, -0.00042403, 0.00025978, 7.27272944, 0.99870470, 0.99931620, 0.49323123],
+                             [- 6.27315360, -0.00042397, 0.00025974, 7.27272964, 0.99870488, 0.99931629, 0.49323124],
+                             [- 6.27315374, -0.00042391, 0.00025970, 7.27272983, 0.99870506, 0.99931639, 0.49323127],
+                             [- 6.27315388, -0.00042385, 0.00025967, 7.27273003, 0.99870524, 0.99931648, 0.49323133],
+                             [- 6.27315402, -0.00042379, 0.00025963, 7.27273023, 0.99870541, 0.99931657, 0.49323140],
+                             [- 6.27315416, -0.00042374, 0.00025960, 7.27273042, 0.99870559, 0.99931667, 0.49323133],
+                             [- 6.27315430, -0.00042368, 0.00025956, 7.27273062, 0.99870577, 0.99931676, 0.49323138],
+                             [- 6.27315444, -0.00042362, 0.00025953, 7.27273082, 0.99870595, 0.99931685, 0.49323140],
+                             [- 6.27315458, -0.00042356, 0.00025949, 7.27273101, 0.99870612, 0.99931695, 0.49323145],
+                             [- 6.27315472, -0.00042350, 0.00025946, 7.27273121, 0.99870630, 0.99931704, 0.49323139],
+                             [- 6.27315485, -0.00042345, 0.00025942, 7.27273141, 0.99870648, 0.99931713, 0.49323136],
+                             [- 6.27315499, -0.00042339, 0.00025938, 7.27273160, 0.99870665, 0.99931723, 0.49323144],
+                             [- 6.27315513, -0.00042333, 0.00025935, 7.27273180, 0.99870683, 0.99931732, 0.49323141],
+                             [- 6.27315527, -0.00042327, 0.00025931, 7.27273200, 0.99870701, 0.99931741, 0.49323140],
+                             [- 6.27315541, -0.00042321, 0.00025928, 7.27273219, 0.99870719, 0.99931751, 0.49323155],
+                             [- 6.27315555, -0.00042316, 0.00025924, 7.27273239, 0.99870736, 0.99931760, 0.49323157],
+                             [- 6.27315569, -0.00042310, 0.00025921, 7.27273259, 0.99870754, 0.99931769, 0.49323161],
+                             [- 6.27315582, -0.00042304, 0.00025917, 7.27273278, 0.99870772, 0.99931779, 0.49323157],
+                             [- 6.27315596, -0.00042298, 0.00025914, 7.27273298, 0.99870789, 0.99931788, 0.49323162],
+                             [- 6.27315610, -0.00042292, 0.00025910, 7.27273318, 0.99870807, 0.99931797, 0.49323164],
+                             [- 6.27315624, -0.00042287, 0.00025907, 7.27273337, 0.99870825, 0.99931807, 0.49323172],
+                             [- 6.27315638, -0.00042281, 0.00025903, 7.27273357, 0.99870842, 0.99931816, 0.49323163],
+                             [- 6.27315652, -0.00042275, 0.00025899, 7.27273376, 0.99870860, 0.99931825, 0.49323158],
+                             [- 6.27315665, -0.00042269, 0.00025896, 7.27273396, 0.99870877, 0.99931835, 0.49323168],
+                             [- 6.27315679, -0.00042264, 0.00025892, 7.27273416, 0.99870895, 0.99931844, 0.49323175],
+                             [- 6.27315693, -0.00042258, 0.00025889, 7.27273435, 0.99870913, 0.99931853, 0.49323172],
+                             [- 6.27315707, -0.00042252, 0.00025885, 7.27273455, 0.99870930, 0.99931863, 0.49323175],
+                             [- 6.27315721, -0.00042246, 0.00025882, 7.27273474, 0.99870948, 0.99931872, 0.49323179],
+                             [- 6.27315734, -0.00042241, 0.00025878, 7.27273494, 0.99870966, 0.99931881, 0.49323178],
+                             [- 6.27315748, -0.00042235, 0.00025875, 7.27273513, 0.99870983, 0.99931891, 0.49323183],
+                             [- 6.27315762, -0.00042229, 0.00025871, 7.27273533, 0.99871001, 0.99931900, 0.49323180],
+                             [- 6.27315776, -0.00042223, 0.00025868, 7.27273552, 0.99871018, 0.99931909, 0.49323181],
+                             [- 6.27315790, -0.00042218, 0.00025864, 7.27273572, 0.99871036, 0.99931918, 0.49323188],
+                             [- 6.27315803, -0.00042212, 0.00025861, 7.27273592, 0.99871054, 0.99931928, 0.49323197],
+                             [- 6.27315817, -0.00042206, 0.00025857, 7.27273611, 0.99871071, 0.99931937, 0.49323190],
+                             [- 6.27315831, -0.00042200, 0.00025854, 7.27273631, 0.99871089, 0.99931946, 0.49323185],
+                             [- 6.27315845, -0.00042194, 0.00025850, 7.27273650, 0.99871106, 0.99931956, 0.49323199],
+                             [- 6.27315858, -0.00042189, 0.00025846, 7.27273670, 0.99871124, 0.99931965, 0.49323204],
+                             [- 6.27315872, -0.00042183, 0.00025843, 7.27273689, 0.99871141, 0.99931974, 0.49323191],
+                             [- 6.27315886, -0.00042177, 0.00025839, 7.27273709, 0.99871159, 0.99931983, 0.49323202],
+                             [- 6.27315900, -0.00042171, 0.00025836, 7.27273728, 0.99871177, 0.99931993, 0.49323199],
+                             [- 6.27315913, -0.00042166, 0.00025832, 7.27273748, 0.99871194, 0.99932002, 0.49323200],
+                             [- 6.27315927, -0.00042160, 0.00025829, 7.27273767, 0.99871212, 0.99932011, 0.49323212],
+                             [- 6.27315941, -0.00042154, 0.00025825, 7.27273787, 0.99871229, 0.99932020, 0.49323215],
+                             [- 6.27315955, -0.00042149, 0.00025822, 7.27273806, 0.99871247, 0.99932030, 0.49323211],
+                             [- 6.27315968, -0.00042143, 0.00025818, 7.27273826, 0.99871264, 0.99932039, 0.49323217],
+                             [- 6.27315982, -0.00042137, 0.00025815, 7.27273845, 0.99871282, 0.99932048, 0.49323219],
+                             [- 6.27315996, -0.00042131, 0.00025811, 7.27273864, 0.99871299, 0.99932057, 0.49323223],
+                             [- 6.27316010, -0.00042126, 0.00025808, 7.27273884, 0.99871317, 0.99932067, 0.49323224],
+                             [- 6.27316023, -0.00042120, 0.00025804, 7.27273903, 0.99871334, 0.99932076, 0.49323221],
+                             [- 6.27316037, -0.00042114, 0.00025801, 7.27273923, 0.99871352, 0.99932085, 0.49323224],
+                             [- 6.27316051, -0.00042108, 0.00025797, 7.27273942, 0.99871369, 0.99932094, 0.49323220],
+                             [- 6.27316064, -0.00042103, 0.00025794, 7.27273962, 0.99871387, 0.99932104, 0.49323229],
+                             [- 6.27316078, -0.00042097, 0.00025790, 7.27273981, 0.99871404, 0.99932113, 0.49323228],
+                             [- 6.27316092, -0.00042091, 0.00025787, 7.27274001, 0.99871422, 0.99932122, 0.49323228],
+                             [- 6.27316105, -0.00042085, 0.00025783, 7.27274020, 0.99871439, 0.99932131, 0.49323234],
+                             [- 6.27316119, -0.00042080, 0.00025780, 7.27274039, 0.99871457, 0.99932141, 0.49323243],
+                             [- 6.27316133, -0.00042074, 0.00025776, 7.27274059, 0.99871474, 0.99932150, 0.49323241],
+                             [- 6.27316147, -0.00042068, 0.00025773, 7.27274078, 0.99871492, 0.99932159, 0.49323242],
+                             [- 6.27316160, -0.00042063, 0.00025769, 7.27274098, 0.99871509, 0.99932168, 0.49323234],
+                             [- 6.27316174, -0.00042057, 0.00025766, 7.27274117, 0.99871527, 0.99932177, 0.49323243],
+                             [- 6.27316188, -0.00042051, 0.00025762, 7.27274136, 0.99871544, 0.99932187, 0.49323249],
+                             [- 6.27316201, -0.00042045, 0.00025759, 7.27274156, 0.99871562, 0.99932196, 0.49323249],
+                             [- 6.27316215, -0.00042040, 0.00025755, 7.27274175, 0.99871579, 0.99932205, 0.49323255],
+                             [- 6.27316229, -0.00042034, 0.00025752, 7.27274195, 0.99871597, 0.99932214, 0.49323261],
+                             [- 6.27316242, -0.00042028, 0.00025748, 7.27274214, 0.99871614, 0.99932223, 0.49323266],
+                             [- 6.27316256, -0.00042023, 0.00025745, 7.27274233, 0.99871631, 0.99932233, 0.49323261],
+                             [- 6.27316270, -0.00042017, 0.00025741, 7.27274253, 0.99871649, 0.99932242, 0.49323265],
+                             [- 6.27316283, -0.00042011, 0.00025738, 7.27274272, 0.99871666, 0.99932251, 0.49323261],
+                             [- 6.27316297, -0.00042006, 0.00025734, 7.27274291, 0.99871684, 0.99932260, 0.49323268],
+                             [- 6.27316311, -0.00042000, 0.00025731, 7.27274311, 0.99871701, 0.99932269, 0.49323261],
+                             [- 6.27316324, -0.00041994, 0.00025727, 7.27274330, 0.99871719, 0.99932279, 0.49323277],
+                             [- 6.27316338, -0.00041988, 0.00025724, 7.27274349, 0.99871736, 0.99932288, 0.49323278],
+                             [- 6.27316351, -0.00041983, 0.00025720, 7.27274369, 0.99871753, 0.99932297, 0.49323270],
+                             [- 6.27316365, -0.00041977, 0.00025717, 7.27274388, 0.99871771, 0.99932306, 0.49323262],
+                             [- 6.27316379, -0.00041971, 0.00025713, 7.27274407, 0.99871788, 0.99932315, 0.49323267],
+                             [- 6.27316392, -0.00041966, 0.00025710, 7.27274427, 0.99871806, 0.99932325, 0.49323282],
+                             [- 6.27316406, -0.00041960, 0.00025706, 7.27274446, 0.99871823, 0.99932334, 0.49323274],
+                             [- 6.27316420, -0.00041954, 0.00025703, 7.27274465, 0.99871840, 0.99932343, 0.49323276],
+                             [- 6.27316433, -0.00041949, 0.00025699, 7.27274485, 0.99871858, 0.99932352, 0.49323279],
+                             [- 6.27316447, -0.00041943, 0.00025696, 7.27274504, 0.99871875, 0.99932361, 0.49323285],
+                             [- 6.27316460, -0.00041937, 0.00025692, 7.27274523, 0.99871892, 0.99932370, 0.49323286],
+                             [- 6.27316474, -0.00041932, 0.00025689, 7.27274542, 0.99871910, 0.99932380, 0.49323296],
+                             [- 6.27316488, -0.00041926, 0.00025685, 7.27274562, 0.99871927, 0.99932389, 0.49323294],
+                             [- 6.27316501, -0.00041920, 0.00025682, 7.27274581, 0.99871944, 0.99932398, 0.49323292],
+                             [- 6.27316515, -0.00041915, 0.00025678, 7.27274600, 0.99871962, 0.99932407, 0.49323285],
+                             [- 6.27316528, -0.00041909, 0.00025675, 7.27274619, 0.99871979, 0.99932416, 0.49323292],
+                             [- 6.27316542, -0.00041903, 0.00025671, 7.27274639, 0.99871996, 0.99932425, 0.49323303],
+                             [- 6.27316555, -0.00041898, 0.00025668, 7.27274658, 0.99872014, 0.99932435, 0.49323312],
+                             [- 6.27316569, -0.00041892, 0.00025664, 7.27274677, 0.99872031, 0.99932444, 0.49323326],
+                             [- 6.27316583, -0.00041886, 0.00025661, 7.27274696, 0.99872048, 0.99932453, 0.49323308],
+                             [- 6.27316596, -0.00041881, 0.00025658, 7.27274716, 0.99872066, 0.99932462, 0.49323307],
+                             [- 6.27316610, -0.00041875, 0.00025654, 7.27274735, 0.99872083, 0.99932471, 0.49323314],
+                             [- 6.27316623, -0.00041869, 0.00025651, 7.27274754, 0.99872100, 0.99932480, 0.49323312],
+                             [- 6.27316637, -0.00041864, 0.00025647, 7.27274773, 0.99872118, 0.99932489, 0.49323320],
+                             [- 6.27316650, -0.00041858, 0.00025644, 7.27274793, 0.99872135, 0.99932498, 0.49323311],
+                             [- 6.27316664, -0.00041852, 0.00025640, 7.27274812, 0.99872152, 0.99932508, 0.49323311],
+                             [- 6.27316677, -0.00041847, 0.00025637, 7.27274831, 0.99872170, 0.99932517, 0.49323317],
+                             [- 6.27316691, -0.00041841, 0.00025633, 7.27274850, 0.99872187, 0.99932526, 0.49323323],
+                             [- 6.27316705, -0.00041835, 0.00025630, 7.27274869, 0.99872204, 0.99932535, 0.49323325],
+                             [- 6.27316718, -0.00041830, 0.00025626, 7.27274888, 0.99872221, 0.99932544, 0.49323334],
+                             [- 6.27316732, -0.00041824, 0.00025623, 7.27274908, 0.99872239, 0.99932553, 0.49323332],
+                             [- 6.27316745, -0.00041818, 0.00025619, 7.27274927, 0.99872256, 0.99932562, 0.49323331],
+                             [- 6.27316759, -0.00041813, 0.00025616, 7.27274946, 0.99872273, 0.99932571, 0.49323331],
+                             [- 6.27316772, -0.00041807, 0.00025612, 7.27274965, 0.99872290, 0.99932581, 0.49323346],
+                             [- 6.27316786, -0.00041801, 0.00025609, 7.27274984, 0.99872308, 0.99932590, 0.49323331],
+                             [- 6.27316799, -0.00041796, 0.00025606, 7.27275003, 0.99872325, 0.99932599, 0.49323339],
+                             [- 6.27316813, -0.00041790, 0.00025602, 7.27275023, 0.99872342, 0.99932608, 0.49323343],
+                             [- 6.27316826, -0.00041784, 0.00025599, 7.27275042, 0.99872359, 0.99932617, 0.49323337],
+                             [- 6.27316840, -0.00041779, 0.00025595, 7.27275061, 0.99872377, 0.99932626, 0.49323342],
+                             [- 6.27316853, -0.00041773, 0.00025592, 7.27275080, 0.99872394, 0.99932635, 0.49323347],
+                             [- 6.27316867, -0.00041768, 0.00025588, 7.27275099, 0.99872411, 0.99932644, 0.49323353],
+                             [- 6.27316880, -0.00041762, 0.00025585, 7.27275118, 0.99872428, 0.99932653, 0.49323349],
+                             [- 6.27316894, -0.00041756, 0.00025581, 7.27275137, 0.99872446, 0.99932662, 0.49323358],
+                             [- 6.27316907, -0.00041751, 0.00025578, 7.27275157, 0.99872463, 0.99932671, 0.49323354],
+                             [- 6.27316921, -0.00041745, 0.00025574, 7.27275176, 0.99872480, 0.99932681, 0.49323350],
+                             [- 6.27316934, -0.00041739, 0.00025571, 7.27275195, 0.99872497, 0.99932690, 0.49323356],
+                             [- 6.27316948, -0.00041734, 0.00025568, 7.27275214, 0.99872514, 0.99932699, 0.49323355],
+                             [- 6.27316961, -0.00041728, 0.00025564, 7.27275233, 0.99872532, 0.99932708, 0.49323359],
+                             [- 6.27316974, -0.00041722, 0.00025561, 7.27275252, 0.99872549, 0.99932717, 0.49323360],
+                             [- 6.27316988, -0.00041717, 0.00025557, 7.27275271, 0.99872566, 0.99932726, 0.49323362],
+                             [- 6.27317001, -0.00041711, 0.00025554, 7.27275290, 0.99872583, 0.99932735, 0.49323369],
+                             [- 6.27317015, -0.00041706, 0.00025550, 7.27275309, 0.99872600, 0.99932744, 0.49323369],
+                             [- 6.27317028, -0.00041700, 0.00025547, 7.27275328, 0.99872617, 0.99932753, 0.49323368],
+                             [- 6.27317042, -0.00041694, 0.00025543, 7.27275347, 0.99872635, 0.99932762, 0.49323375],
+                             [- 6.27317055, -0.00041689, 0.00025540, 7.27275366, 0.99872652, 0.99932771, 0.49323378],
+                             [- 6.27317069, -0.00041683, 0.00025537, 7.27275385, 0.99872669, 0.99932780, 0.49323373],
+                             [- 6.27317082, -0.00041678, 0.00025533, 7.27275405, 0.99872686, 0.99932789, 0.49323370],
+                             [- 6.27317095, -0.00041672, 0.00025530, 7.27275424, 0.99872703, 0.99932798, 0.49323379],
+                             [- 6.27317109, -0.00041666, 0.00025526, 7.27275443, 0.99872720, 0.99932807, 0.49323375],
+                             [- 6.27317122, -0.00041661, 0.00025523, 7.27275462, 0.99872738, 0.99932816, 0.49323392],
+                             [- 6.27317136, -0.00041655, 0.00025519, 7.27275481, 0.99872755, 0.99932826, 0.49323391],
+                             [- 6.27317149, -0.00041649, 0.00025516, 7.27275500, 0.99872772, 0.99932835, 0.49323391],
+                             [- 6.27317163, -0.00041644, 0.00025512, 7.27275519, 0.99872789, 0.99932844, 0.49323388],
+                             [- 6.27317176, -0.00041638, 0.00025509, 7.27275538, 0.99872806, 0.99932853, 0.49323395],
+                             [- 6.27317189, -0.00041633, 0.00025506, 7.27275557, 0.99872823, 0.99932862, 0.49323385],
+                             [- 6.27317203, -0.00041627, 0.00025502, 7.27275576, 0.99872840, 0.99932871, 0.49323392],
+                             [- 6.27317216, -0.00041621, 0.00025499, 7.27275595, 0.99872857, 0.99932880, 0.49323402],
+                             [- 6.27317230, -0.00041616, 0.00025495, 7.27275614, 0.99872874, 0.99932889, 0.49323405],
+                             [- 6.27317243, -0.00041610, 0.00025492, 7.27275633, 0.99872892, 0.99932898, 0.49323405],
+                             [- 6.27317256, -0.00041605, 0.00025488, 7.27275652, 0.99872909, 0.99932907, 0.49323408],
+                             [- 6.27317270, -0.00041599, 0.00025485, 7.27275671, 0.99872926, 0.99932916, 0.49323410],
+                             [- 6.27317283, -0.00041594, 0.00025482, 7.27275690, 0.99872943, 0.99932925, 0.49323410],
+                             [- 6.27317297, -0.00041588, 0.00025478, 7.27275709, 0.99872960, 0.99932934, 0.49323416],
+                             [- 6.27317310, -0.00041582, 0.00025475, 7.27275728, 0.99872977, 0.99932943, 0.49323413],
+                             [- 6.27317323, -0.00041577, 0.00025471, 7.27275746, 0.99872994, 0.99932952, 0.49323409],
+                             [- 6.27317337, -0.00041571, 0.00025468, 7.27275765, 0.99873011, 0.99932961, 0.49323425],
+                             [- 6.27317350, -0.00041566, 0.00025465, 7.27275784, 0.99873028, 0.99932970, 0.49323426],
+                             [- 6.27317363, -0.00041560, 0.00025461, 7.27275803, 0.99873045, 0.99932979, 0.49323421],
+                             [- 6.27317377, -0.00041554, 0.00025458, 7.27275822, 0.99873062, 0.99932988, 0.49323430],
+                             [- 6.27317390, -0.00041549, 0.00025454, 7.27275841, 0.99873079, 0.99932997, 0.49323422],
+                             [- 6.27317403, -0.00041543, 0.00025451, 7.27275860, 0.99873096, 0.99933006, 0.49323429],
+                             [- 6.27317417, -0.00041538, 0.00025447, 7.27275879, 0.99873113, 0.99933015, 0.49323420],
+                             [- 6.27317430, -0.00041532, 0.00025444, 7.27275898, 0.99873130, 0.99933024, 0.49323427],
+                             [- 6.27317443, -0.00041527, 0.00025441, 7.27275917, 0.99873147, 0.99933033, 0.49323431],
+                             [- 6.27317457, -0.00041521, 0.00025437, 7.27275936, 0.99873164, 0.99933042, 0.49323443],
+                             [- 6.27317470, -0.00041515, 0.00025434, 7.27275955, 0.99873181, 0.99933051, 0.49323428],
+                             [- 6.27317483, -0.00041510, 0.00025430, 7.27275974, 0.99873198, 0.99933060, 0.49323443],
+                             [- 6.27317497, -0.00041504, 0.00025427, 7.27275992, 0.99873215, 0.99933069, 0.49323437],
+                             [- 6.27317510, -0.00041499, 0.00025424, 7.27276011, 0.99873232, 0.99933078, 0.49323454],
+                             [- 6.27317523, -0.00041493, 0.00025420, 7.27276030, 0.99873249, 0.99933087, 0.49323446],
+                             [- 6.27317537, -0.00041488, 0.00025417, 7.27276049, 0.99873266, 0.99933096, 0.49323436],
+                             [- 6.27317550, -0.00041482, 0.00025413, 7.27276068, 0.99873283, 0.99933105, 0.49323455],
+                             [- 6.27317563, -0.00041476, 0.00025410, 7.27276087, 0.99873300, 0.99933114, 0.49323443],
+                             [- 6.27317577, -0.00041471, 0.00025406, 7.27276106, 0.99873317, 0.99933123, 0.49323444],
+                             [- 6.27317590, -0.00041465, 0.00025403, 7.27276124, 0.99873334, 0.99933132, 0.49323452],
+                             [- 6.27317603, -0.00041460, 0.00025400, 7.27276143, 0.99873351, 0.99933140, 0.49323465],
+                             [- 6.27317616, -0.00041454, 0.00025396, 7.27276162, 0.99873368, 0.99933149, 0.49323452],
+                             [- 6.27317630, -0.00041449, 0.00025393, 7.27276181, 0.99873385, 0.99933158, 0.49323459],
+                             [- 6.27317643, -0.00041443, 0.00025389, 7.27276200, 0.99873402, 0.99933167, 0.49323462],
+                             [- 6.27317656, -0.00041438, 0.00025386, 7.27276219, 0.99873419, 0.99933176, 0.49323457],
+                             [- 6.27317670, -0.00041432, 0.00025383, 7.27276237, 0.99873436, 0.99933185, 0.49323468],
+                             [- 6.27317683, -0.00041427, 0.00025379, 7.27276256, 0.99873453, 0.99933194, 0.49323479],
+                             [- 6.27317696, -0.00041421, 0.00025376, 7.27276275, 0.99873470, 0.99933203, 0.49323481],
+                             [- 6.27317709, -0.00041415, 0.00025372, 7.27276294, 0.99873487, 0.99933212, 0.49323465],
+                             [- 6.27317723, -0.00041410, 0.00025369, 7.27276313, 0.99873504, 0.99933221, 0.49323467],
+                             [- 6.27317736, -0.00041404, 0.00025366, 7.27276332, 0.99873521, 0.99933230, 0.49323474],
+                             [- 6.27317749, -0.00041399, 0.00025362, 7.27276350, 0.99873538, 0.99933239, 0.49323475],
+                             [- 6.27317762, -0.00041393, 0.00025359, 7.27276369, 0.99873555, 0.99933248, 0.49323489],
+                             [- 6.27317776, -0.00041388, 0.00025355, 7.27276388, 0.99873572, 0.99933257, 0.49323478],
+                             [- 6.27317789, -0.00041382, 0.00025352, 7.27276407, 0.99873588, 0.99933266, 0.49323490],
+                             [- 6.27317802, -0.00041377, 0.00025349, 7.27276425, 0.99873605, 0.99933275, 0.49323500],
+                             [- 6.27317815, -0.00041371, 0.00025345, 7.27276444, 0.99873622, 0.99933283, 0.49323486],
+                             [- 6.27317829, -0.00041366, 0.00025342, 7.27276463, 0.99873639, 0.99933292, 0.49323491],
+                             [- 6.27317842, -0.00041360, 0.00025339, 7.27276482, 0.99873656, 0.99933301, 0.49323473],
+                             [- 6.27317855, -0.00041355, 0.00025335, 7.27276500, 0.99873673, 0.99933310, 0.49323495],
+                             [- 6.27317868, -0.00041349, 0.00025332, 7.27276519, 0.99873690, 0.99933319, 0.49323495],
+                             [- 6.27317882, -0.00041344, 0.00025328, 7.27276538, 0.99873707, 0.99933328, 0.49323487],
+                             [- 6.27317895, -0.00041338, 0.00025325, 7.27276557, 0.99873724, 0.99933337, 0.49323500],
+                             [- 6.27317908, -0.00041333, 0.00025322, 7.27276575, 0.99873740, 0.99933346, 0.49323493],
+                             [- 6.27317921, -0.00041327, 0.00025318, 7.27276594, 0.99873757, 0.99933355, 0.49323497],
+                             [- 6.27317934, -0.00041321, 0.00025315, 7.27276613, 0.99873774, 0.99933364, 0.49323507],
+                             [- 6.27317948, -0.00041316, 0.00025311, 7.27276632, 0.99873791, 0.99933373, 0.49323512],
+                             [- 6.27317961, -0.00041310, 0.00025308, 7.27276650, 0.99873808, 0.99933381, 0.49323500],
+                             [- 6.27317974, -0.00041305, 0.00025305, 7.27276669, 0.99873825, 0.99933390, 0.49323510],
+                             [- 6.27317987, -0.00041299, 0.00025301, 7.27276688, 0.99873842, 0.99933399, 0.49323520],
+                             [- 6.27318000, -0.00041294, 0.00025298, 7.27276706, 0.99873858, 0.99933408, 0.49323515],
+                             [- 6.27318014, -0.00041288, 0.00025295, 7.27276725, 0.99873875, 0.99933417, 0.49323523],
+                             [- 6.27318027, -0.00041283, 0.00025291, 7.27276744, 0.99873892, 0.99933426, 0.49323516],
+                             [- 6.27318040, -0.00041277, 0.00025288, 7.27276762, 0.99873909, 0.99933435, 0.49323517],
+                             [- 6.27318053, -0.00041272, 0.00025284, 7.27276781, 0.99873926, 0.99933444, 0.49323519],
+                             [- 6.27318066, -0.00041266, 0.00025281, 7.27276800, 0.99873942, 0.99933453, 0.49323515],
+                             [- 6.27318079, -0.00041261, 0.00025278, 7.27276818, 0.99873959, 0.99933461, 0.49323538],
+                             [- 6.27318093, -0.00041255, 0.00025274, 7.27276837, 0.99873976, 0.99933470, 0.49323529],
+                             [- 6.27318106, -0.00041250, 0.00025271, 7.27276856, 0.99873993, 0.99933479, 0.49323537],
+                             [- 6.27318119, -0.00041244, 0.00025268, 7.27276874, 0.99874010, 0.99933488, 0.49323534],
+                             [- 6.27318132, -0.00041239, 0.00025264, 7.27276893, 0.99874026, 0.99933497, 0.49323537],
+                             [- 6.27318145, -0.00041233, 0.00025261, 7.27276912, 0.99874043, 0.99933506, 0.49323540],
+                             [- 6.27318158, -0.00041228, 0.00025258, 7.27276930, 0.99874060, 0.99933515, 0.49323539],
+                             [- 6.27318171, -0.00041222, 0.00025254, 7.27276949, 0.99874077, 0.99933523, 0.49323536],
+                             [- 6.27318185, -0.00041217, 0.00025251, 7.27276968, 0.99874094, 0.99933532, 0.49323541],
+                             [- 6.27318198, -0.00041211, 0.00025247, 7.27276986, 0.99874110, 0.99933541, 0.49323529],
+                             [- 6.27318211, -0.00041206, 0.00025244, 7.27277005, 0.99874127, 0.99933550, 0.49323554],
+                             [- 6.27318224, -0.00041200, 0.00025241, 7.27277023, 0.99874144, 0.99933559, 0.49323556],
+                             [- 6.27318237, -0.00041195, 0.00025237, 7.27277042, 0.99874161, 0.99933568, 0.49323548],
+                             [- 6.27318250, -0.00041190, 0.00025234, 7.27277061, 0.99874177, 0.99933577, 0.49323555],
+                             [- 6.27318263, -0.00041184, 0.00025231, 7.27277079, 0.99874194, 0.99933585, 0.49323555],
+                             [- 6.27318276, -0.00041179, 0.00025227, 7.27277098, 0.99874211, 0.99933594, 0.49323566],
+                             [- 6.27318290, -0.00041173, 0.00025224, 7.27277117, 0.99874228, 0.99933603, 0.49323552],
+                             [- 6.27318303, -0.00041168, 0.00025221, 7.27277135, 0.99874244, 0.99933612, 0.49323561],
+                             [- 6.27318316, -0.00041162, 0.00025217, 7.27277154, 0.99874261, 0.99933621, 0.49323566],
+                             [- 6.27318329, -0.00041157, 0.00025214, 7.27277172, 0.99874278, 0.99933630, 0.49323555],
+                             [- 6.27318342, -0.00041151, 0.00025210, 7.27277191, 0.99874294, 0.99933638, 0.49323560],
+                             [- 6.27318355, -0.00041146, 0.00025207, 7.27277209, 0.99874311, 0.99933647, 0.49323570],
+                             [- 6.27318368, -0.00041140, 0.00025204, 7.27277228, 0.99874328, 0.99933656, 0.49323566],
+                             [- 6.27318381, -0.00041135, 0.00025200, 7.27277246, 0.99874345, 0.99933665, 0.49323580],
+                             [- 6.27318394, -0.00041129, 0.00025197, 7.27277265, 0.99874361, 0.99933674, 0.49323573],
+                             [- 6.27318407, -0.00041124, 0.00025194, 7.27277284, 0.99874378, 0.99933682, 0.49323588],
+                             [- 6.27318420, -0.00041118, 0.00025190, 7.27277302, 0.99874395, 0.99933691, 0.49323574],
+                             [- 6.27318434, -0.00041113, 0.00025187, 7.27277321, 0.99874411, 0.99933700, 0.49323584],
+                             [- 6.27318447, -0.00041107, 0.00025184, 7.27277339, 0.99874428, 0.99933709, 0.49323574],
+                             [- 6.27318460, -0.00041102, 0.00025180, 7.27277358, 0.99874445, 0.99933718, 0.49323586],
+                             [- 6.27318473, -0.00041097, 0.00025177, 7.27277376, 0.99874461, 0.99933726, 0.49323593],
+                             [- 6.27318486, -0.00041091, 0.00025174, 7.27277395, 0.99874478, 0.99933735, 0.49323592],
+                             [- 6.27318499, -0.00041086, 0.00025170, 7.27277413, 0.99874495, 0.99933744, 0.49323598],
+                             [- 6.27318512, -0.00041080, 0.00025167, 7.27277432, 0.99874511, 0.99933753, 0.49323589],
+                             [- 6.27318525, -0.00041075, 0.00025164, 7.27277450, 0.99874528, 0.99933762, 0.49323587],
+                             [- 6.27318538, -0.00041069, 0.00025160, 7.27277469, 0.99874545, 0.99933770, 0.49323605],
+                             [- 6.27318551, -0.00041064, 0.00025157, 7.27277487, 0.99874561, 0.99933779, 0.49323594],
+                             [- 6.27318564, -0.00041058, 0.00025154, 7.27277506, 0.99874578, 0.99933788, 0.49323599],
+                             [- 6.27318577, -0.00041053, 0.00025150, 7.27277524, 0.99874595, 0.99933797, 0.49323604],
+                             [- 6.27318590, -0.00041048, 0.00025147, 7.27277543, 0.99874611, 0.99933806, 0.49323602],
+                             [- 6.27318603, -0.00041042, 0.00025144, 7.27277561, 0.99874628, 0.99933814, 0.49323601],
+                             [- 6.27318616, -0.00041037, 0.00025140, 7.27277580, 0.99874645, 0.99933823, 0.49323601],
+                             [- 6.27318629, -0.00041031, 0.00025137, 7.27277598, 0.99874661, 0.99933832, 0.49323608],
+                             [- 6.27318642, -0.00041026, 0.00025134, 7.27277616, 0.99874678, 0.99933841, 0.49323616],
+                             [- 6.27318655, -0.00041020, 0.00025130, 7.27277635, 0.99874694, 0.99933849, 0.49323617],
+                             [- 6.27318668, -0.00041015, 0.00025127, 7.27277653, 0.99874711, 0.99933858, 0.49323615],
+                             [- 6.27318681, -0.00041009, 0.00025124, 7.27277672, 0.99874728, 0.99933867, 0.49323614],
+                             [- 6.27318694, -0.00041004, 0.00025120, 7.27277690, 0.99874744, 0.99933876, 0.49323615],
+                             [- 6.27318707, -0.00040999, 0.00025117, 7.27277709, 0.99874761, 0.99933884, 0.49323610],
+                             [- 6.27318720, -0.00040993, 0.00025114, 7.27277727, 0.99874777, 0.99933893, 0.49323628],
+                             [- 6.27318733, -0.00040988, 0.00025110, 7.27277746, 0.99874794, 0.99933902, 0.49323634],
+                             [- 6.27318746, -0.00040982, 0.00025107, 7.27277764, 0.99874811, 0.99933911, 0.49323627],
+                             [- 6.27318759, -0.00040977, 0.00025104, 7.27277782, 0.99874827, 0.99933919, 0.49323622],
+                             [- 6.27318772, -0.00040971, 0.00025100, 7.27277801, 0.99874844, 0.99933928, 0.49323631],
+                             [- 6.27318785, -0.00040966, 0.00025097, 7.27277819, 0.99874860, 0.99933937, 0.49323628],
+                             [- 6.27318798, -0.00040961, 0.00025094, 7.27277838, 0.99874877, 0.99933946, 0.49323627],
+                             [- 6.27318811, -0.00040955, 0.00025090, 7.27277856, 0.99874893, 0.99933954, 0.49323637],
+                             [- 6.27318824, -0.00040950, 0.00025087, 7.27277874, 0.99874910, 0.99933963, 0.49323632],
+                             [- 6.27318837, -0.00040944, 0.00025084, 7.27277893, 0.99874927, 0.99933972, 0.49323640],
+                             [- 6.27318850, -0.00040939, 0.00025080, 7.27277911, 0.99874943, 0.99933981, 0.49323651],
+                             [- 6.27318863, -0.00040934, 0.00025077, 7.27277929, 0.99874960, 0.99933989, 0.49323644],
+                             [- 6.27318876, -0.00040928, 0.00025074, 7.27277948, 0.99874976, 0.99933998, 0.49323637],
+                             [- 6.27318889, -0.00040923, 0.00025070, 7.27277966, 0.99874993, 0.99934007, 0.49323647],
+                             [- 6.27318902, -0.00040917, 0.00025067, 7.27277985, 0.99875009, 0.99934016, 0.49323644],
+                             [- 6.27318915, -0.00040912, 0.00025064, 7.27278003, 0.99875026, 0.99934024, 0.49323643],
+                             [- 6.27318928, -0.00040906, 0.00025060, 7.27278021, 0.99875042, 0.99934033, 0.49323648],
+                             [- 6.27318941, -0.00040901, 0.00025057, 7.27278040, 0.99875059, 0.99934042, 0.49323655],
+                             [- 6.27318954, -0.00040896, 0.00025054, 7.27278058, 0.99875075, 0.99934050, 0.49323657],
+                             [- 6.27318967, -0.00040890, 0.00025051, 7.27278076, 0.99875092, 0.99934059, 0.49323664],
+                             [- 6.27318979, -0.00040885, 0.00025047, 7.27278095, 0.99875108, 0.99934068, 0.49323657],
+                             [- 6.27318992, -0.00040879, 0.00025044, 7.27278113, 0.99875125, 0.99934077, 0.49323666],
+                             [- 6.27319005, -0.00040874, 0.00025041, 7.27278131, 0.99875141, 0.99934085, 0.49323663],
+                             [- 6.27319018, -0.00040869, 0.00025037, 7.27278150, 0.99875158, 0.99934094, 0.49323672],
+                             [- 6.27319031, -0.00040863, 0.00025034, 7.27278168, 0.99875174, 0.99934103, 0.49323665],
+                             [- 6.27319044, -0.00040858, 0.00025031, 7.27278186, 0.99875191, 0.99934111, 0.49323670],
+                             [- 6.27319057, -0.00040852, 0.00025027, 7.27278204, 0.99875207, 0.99934120, 0.49323671],
+                             [- 6.27319070, -0.00040847, 0.00025024, 7.27278223, 0.99875224, 0.99934129, 0.49323673],
+                             [- 6.27319083, -0.00040842, 0.00025021, 7.27278241, 0.99875240, 0.99934137, 0.49323684],
+                             [- 6.27319096, -0.00040836, 0.00025017, 7.27278259, 0.99875257, 0.99934146, 0.49323687],
+                             [- 6.27319109, -0.00040831, 0.00025014, 7.27278278, 0.99875273, 0.99934155, 0.49323685],
+                             [- 6.27319121, -0.00040826, 0.00025011, 7.27278296, 0.99875290, 0.99934164, 0.49323688],
+                             [- 6.27319134, -0.00040820, 0.00025008, 7.27278314, 0.99875306, 0.99934172, 0.49323675],
+                             [- 6.27319147, -0.00040815, 0.00025004, 7.27278332, 0.99875322, 0.99934181, 0.49323678],
+                             [- 6.27319160, -0.00040809, 0.00025001, 7.27278351, 0.99875339, 0.99934190, 0.49323687],
+                             [- 6.27319173, -0.00040804, 0.00024998, 7.27278369, 0.99875355, 0.99934198, 0.49323686],
+                             [- 6.27319186, -0.00040799, 0.00024994, 7.27278387, 0.99875372, 0.99934207, 0.49323698],
+                             [- 6.27319199, -0.00040793, 0.00024991, 7.27278405, 0.99875388, 0.99934216, 0.49323692],
+                             [- 6.27319212, -0.00040788, 0.00024988, 7.27278424, 0.99875405, 0.99934224, 0.49323708],
+                             [- 6.27319224, -0.00040783, 0.00024985, 7.27278442, 0.99875421, 0.99934233, 0.49323704],
+                             [- 6.27319237, -0.00040777, 0.00024981, 7.27278460, 0.99875437, 0.99934242, 0.49323700],
+                             [- 6.27319250, -0.00040772, 0.00024978, 7.27278478, 0.99875454, 0.99934250, 0.49323693],
+                             [- 6.27319263, -0.00040766, 0.00024975, 7.27278497, 0.99875470, 0.99934259, 0.49323702],
+                             [- 6.27319276, -0.00040761, 0.00024971, 7.27278515, 0.99875487, 0.99934268, 0.49323716],
+                             [- 6.27319289, -0.00040756, 0.00024968, 7.27278533, 0.99875503, 0.99934276, 0.49323703],
+                             [- 6.27319302, -0.00040750, 0.00024965, 7.27278551, 0.99875519, 0.99934285, 0.49323706],
+                             [- 6.27319314, -0.00040745, 0.00024961, 7.27278569, 0.99875536, 0.99934294, 0.49323706],
+                             [- 6.27319327, -0.00040740, 0.00024958, 7.27278588, 0.99875552, 0.99934302, 0.49323714],
+                             [- 6.27319340, -0.00040734, 0.00024955, 7.27278606, 0.99875569, 0.99934311, 0.49323706],
+                             [- 6.27319353, -0.00040729, 0.00024952, 7.27278624, 0.99875585, 0.99934320, 0.49323708],
+                             [- 6.27319366, -0.00040724, 0.00024948, 7.27278642, 0.99875601, 0.99934328, 0.49323729],
+                             [- 6.27319379, -0.00040718, 0.00024945, 7.27278660, 0.99875618, 0.99934337, 0.49323724],
+                             [- 6.27319391, -0.00040713, 0.00024942, 7.27278679, 0.99875634, 0.99934345, 0.49323721],
+                             [- 6.27319404, -0.00040707, 0.00024938, 7.27278697, 0.99875650, 0.99934354, 0.49323728],
+                             [- 6.27319417, -0.00040702, 0.00024935, 7.27278715, 0.99875667, 0.99934363, 0.49323732],
+                             [- 6.27319430, -0.00040697, 0.00024932, 7.27278733, 0.99875683, 0.99934371, 0.49323735],
+                             [- 6.27319443, -0.00040691, 0.00024929, 7.27278751, 0.99875700, 0.99934380, 0.49323736],
+                             [- 6.27319455, -0.00040686, 0.00024925, 7.27278769, 0.99875716, 0.99934389, 0.49323725],
+                             [- 6.27319468, -0.00040681, 0.00024922, 7.27278788, 0.99875732, 0.99934397, 0.49323738],
+                             [- 6.27319481, -0.00040675, 0.00024919, 7.27278806, 0.99875749, 0.99934406, 0.49323735],
+                             [- 6.27319494, -0.00040670, 0.00024916, 7.27278824, 0.99875765, 0.99934414, 0.49323731],
+                             [- 6.27319507, -0.00040665, 0.00024912, 7.27278842, 0.99875781, 0.99934423, 0.49323743],
+                             [- 6.27319519, -0.00040659, 0.00024909, 7.27278860, 0.99875798, 0.99934432, 0.49323750],
+                             [- 6.27319532, -0.00040654, 0.00024906, 7.27278878, 0.99875814, 0.99934440, 0.49323738],
+                             [- 6.27319545, -0.00040649, 0.00024902, 7.27278896, 0.99875830, 0.99934449, 0.49323751],
+                             [- 6.27319558, -0.00040643, 0.00024899, 7.27278914, 0.99875846, 0.99934457, 0.49323752],
+                             [- 6.27319571, -0.00040638, 0.00024896, 7.27278933, 0.99875863, 0.99934466, 0.49323741],
+                             [- 6.27319583, -0.00040633, 0.00024893, 7.27278951, 0.99875879, 0.99934475, 0.49323749],
+                             [- 6.27319596, -0.00040627, 0.00024889, 7.27278969, 0.99875895, 0.99934483, 0.49323755],
+                             [- 6.27319609, -0.00040622, 0.00024886, 7.27278987, 0.99875912, 0.99934492, 0.49323762],
+                             [- 6.27319622, -0.00040617, 0.00024883, 7.27279005, 0.99875928, 0.99934501, 0.49323759],
+                             [- 6.27319634, -0.00040611, 0.00024880, 7.27279023, 0.99875944, 0.99934509, 0.49323760],
+                             [- 6.27319647, -0.00040606, 0.00024876, 7.27279041, 0.99875960, 0.99934518, 0.49323757],
+                             [- 6.27319660, -0.00040601, 0.00024873, 7.27279059, 0.99875977, 0.99934526, 0.49323761],
+                             [- 6.27319673, -0.00040595, 0.00024870, 7.27279077, 0.99875993, 0.99934535, 0.49323762],
+                             [- 6.27319685, -0.00040590, 0.00024867, 7.27279095, 0.99876009, 0.99934543, 0.49323771],
+                             [- 6.27319698, -0.00040585, 0.00024863, 7.27279113, 0.99876026, 0.99934552, 0.49323775],
+                             [- 6.27319711, -0.00040579, 0.00024860, 7.27279131, 0.99876042, 0.99934561, 0.49323777],
+                             [- 6.27319724, -0.00040574, 0.00024857, 7.27279149, 0.99876058, 0.99934569, 0.49323761],
+                             [- 6.27319736, -0.00040569, 0.00024853, 7.27279168, 0.99876074, 0.99934578, 0.49323772],
+                             [- 6.27319749, -0.00040563, 0.00024850, 7.27279186, 0.99876091, 0.99934586, 0.49323767],
+                             [- 6.27319762, -0.00040558, 0.00024847, 7.27279204, 0.99876107, 0.99934595, 0.49323779],
+                             [- 6.27319774, -0.00040553, 0.00024844, 7.27279222, 0.99876123, 0.99934603, 0.49323782],
+                             [- 6.27319787, -0.00040547, 0.00024840, 7.27279240, 0.99876139, 0.99934612, 0.49323776],
+                             [- 6.27319800, -0.00040542, 0.00024837, 7.27279258, 0.99876156, 0.99934621, 0.49323782],
+                             [- 6.27319813, -0.00040537, 0.00024834, 7.27279276, 0.99876172, 0.99934629, 0.49323787],
+                             [- 6.27319825, -0.00040532, 0.00024831, 7.27279294, 0.99876188, 0.99934638, 0.49323783],
+                             [- 6.27319838, -0.00040526, 0.00024827, 7.27279312, 0.99876204, 0.99934646, 0.49323795],
+                             [- 6.27319851, -0.00040521, 0.00024824, 7.27279330, 0.99876220, 0.99934655, 0.49323788],
+                             [- 6.27319863, -0.00040516, 0.00024821, 7.27279348, 0.99876237, 0.99934663, 0.49323798],
+                             [- 6.27319876, -0.00040510, 0.00024818, 7.27279366, 0.99876253, 0.99934672, 0.49323799],
+                             [- 6.27319889, -0.00040505, 0.00024814, 7.27279384, 0.99876269, 0.99934681, 0.49323794],
+                             [- 6.27319901, -0.00040500, 0.00024811, 7.27279402, 0.99876285, 0.99934689, 0.49323812],
+                             [- 6.27319914, -0.00040494, 0.00024808, 7.27279420, 0.99876301, 0.99934698, 0.49323800],
+                             [- 6.27319927, -0.00040489, 0.00024805, 7.27279438, 0.99876318, 0.99934706, 0.49323799],
+                             [- 6.27319939, -0.00040484, 0.00024801, 7.27279456, 0.99876334, 0.99934715, 0.49323807],
+                             [- 6.27319952, -0.00040479, 0.00024798, 7.27279474, 0.99876350, 0.99934723, 0.49323804],
+                             [- 6.27319965, -0.00040473, 0.00024795, 7.27279492, 0.99876366, 0.99934732, 0.49323807],
+                             [- 6.27319977, -0.00040468, 0.00024792, 7.27279510, 0.99876382, 0.99934740, 0.49323796],
+                             [- 6.27319990, -0.00040463, 0.00024788, 7.27279527, 0.99876398, 0.99934749, 0.49323820],
+                             [- 6.27320003, -0.00040457, 0.00024785, 7.27279545, 0.99876415, 0.99934757, 0.49323815],
+                             [- 6.27320015, -0.00040452, 0.00024782, 7.27279563, 0.99876431, 0.99934766, 0.49323813],
+                             [- 6.27320028, -0.00040447, 0.00024779, 7.27279581, 0.99876447, 0.99934774, 0.49323819],
+                             [- 6.27320041, -0.00040442, 0.00024776, 7.27279599, 0.99876463, 0.99934783, 0.49323817],
+                             [- 6.27320053, -0.00040436, 0.00024772, 7.27279617, 0.99876479, 0.99934791, 0.49323809],
+                             [- 6.27320066, -0.00040431, 0.00024769, 7.27279635, 0.99876495, 0.99934800, 0.49323823],
+                             [- 6.27320079, -0.00040426, 0.00024766, 7.27279653, 0.99876511, 0.99934809, 0.49323818],
+                             [- 6.27320091, -0.00040420, 0.00024763, 7.27279671, 0.99876528, 0.99934817, 0.49323822],
+                             [- 6.27320104, -0.00040415, 0.00024759, 7.27279689, 0.99876544, 0.99934826, 0.49323828],
+                             [- 6.27320117, -0.00040410, 0.00024756, 7.27279707, 0.99876560, 0.99934834, 0.49323852],
+                             [- 6.27320129, -0.00040405, 0.00024753, 7.27279725, 0.99876576, 0.99934843, 0.49323826],
+                             [- 6.27320142, -0.00040399, 0.00024750, 7.27279743, 0.99876592, 0.99934851, 0.49323833],
+                             [- 6.27320154, -0.00040394, 0.00024746, 7.27279760, 0.99876608, 0.99934860, 0.49323832],
+                             [- 6.27320167, -0.00040389, 0.00024743, 7.27279778, 0.99876624, 0.99934868, 0.49323839],
+                             [- 6.27320180, -0.00040383, 0.00024740, 7.27279796, 0.99876640, 0.99934877, 0.49323831],
+                             [- 6.27320192, -0.00040378, 0.00024737, 7.27279814, 0.99876656, 0.99934885, 0.49323847],
+                             [- 6.27320205, -0.00040373, 0.00024733, 7.27279832, 0.99876673, 0.99934894, 0.49323846],
+                             [- 6.27320217, -0.00040368, 0.00024730, 7.27279850, 0.99876689, 0.99934902, 0.49323853],
+                             [- 6.27320230, -0.00040362, 0.00024727, 7.27279868, 0.99876705, 0.99934911, 0.49323849],
+                             [- 6.27320243, -0.00040357, 0.00024724, 7.27279886, 0.99876721, 0.99934919, 0.49323847],
+                             [- 6.27320255, -0.00040352, 0.00024721, 7.27279903, 0.99876737, 0.99934928, 0.49323843],
+                             [- 6.27320268, -0.00040347, 0.00024717, 7.27279921, 0.99876753, 0.99934936, 0.49323854],
+                             [- 6.27320280, -0.00040341, 0.00024714, 7.27279939, 0.99876769, 0.99934944, 0.49323862],
+                             [- 6.27320293, -0.00040336, 0.00024711, 7.27279957, 0.99876785, 0.99934953, 0.49323861],
+                             [- 6.27320306, -0.00040331, 0.00024708, 7.27279975, 0.99876801, 0.99934961, 0.49323862],
+                             [- 6.27320318, -0.00040326, 0.00024704, 7.27279993, 0.99876817, 0.99934970, 0.49323859],
+                             [- 6.27320331, -0.00040320, 0.00024701, 7.27280010, 0.99876833, 0.99934978, 0.49323864],
+                             [- 6.27320343, -0.00040315, 0.00024698, 7.27280028, 0.99876849, 0.99934987, 0.49323872],
+                             [- 6.27320356, -0.00040310, 0.00024695, 7.27280046, 0.99876865, 0.99934995, 0.49323853],
+                             [- 6.27320368, -0.00040305, 0.00024692, 7.27280064, 0.99876881, 0.99935004, 0.49323874],
+                             [- 6.27320381, -0.00040299, 0.00024688, 7.27280082, 0.99876897, 0.99935012, 0.49323866],
+                             [- 6.27320394, -0.00040294, 0.00024685, 7.27280099, 0.99876913, 0.99935021, 0.49323878],
+                             [- 6.27320406, -0.00040289, 0.00024682, 7.27280117, 0.99876929, 0.99935029, 0.49323872],
+                             [- 6.27320419, -0.00040284, 0.00024679, 7.27280135, 0.99876945, 0.99935038, 0.49323872],
+                             [- 6.27320431, -0.00040278, 0.00024676, 7.27280153, 0.99876961, 0.99935046, 0.49323876],
+                             [- 6.27320444, -0.00040273, 0.00024672, 7.27280171, 0.99876978, 0.99935055, 0.49323884],
+                             [- 6.27320456, -0.00040268, 0.00024669, 7.27280188, 0.99876994, 0.99935063, 0.49323875],
+                             [- 6.27320469, -0.00040263, 0.00024666, 7.27280206, 0.99877010, 0.99935071, 0.49323881],
+                             [- 6.27320481, -0.00040257, 0.00024663, 7.27280224, 0.99877026, 0.99935080, 0.49323883],
+                             [- 6.27320494, -0.00040252, 0.00024659, 7.27280242, 0.99877042, 0.99935088, 0.49323893],
+                             [- 6.27320506, -0.00040247, 0.00024656, 7.27280259, 0.99877058, 0.99935097, 0.49323897],
+                             [- 6.27320519, -0.00040242, 0.00024653, 7.27280277, 0.99877073, 0.99935105, 0.49323888],
+                             [- 6.27320532, -0.00040237, 0.00024650, 7.27280295, 0.99877089, 0.99935114, 0.49323894],
+                             [- 6.27320544, -0.00040231, 0.00024647, 7.27280313, 0.99877105, 0.99935122, 0.49323891],
+                             [- 6.27320557, -0.00040226, 0.00024643, 7.27280330, 0.99877121, 0.99935130, 0.49323883],
+                             [- 6.27320569, -0.00040221, 0.00024640, 7.27280348, 0.99877137, 0.99935139, 0.49323900],
+                             [- 6.27320582, -0.00040216, 0.00024637, 7.27280366, 0.99877153, 0.99935147, 0.49323894],
+                             [- 6.27320594, -0.00040210, 0.00024634, 7.27280384, 0.99877169, 0.99935156, 0.49323913],
+                             [- 6.27320607, -0.00040205, 0.00024631, 7.27280401, 0.99877185, 0.99935164, 0.49323892],
+                             [- 6.27320619, -0.00040200, 0.00024627, 7.27280419, 0.99877201, 0.99935173, 0.49323905],
+                             [- 6.27320632, -0.00040195, 0.00024624, 7.27280437, 0.99877217, 0.99935181, 0.49323908],
+                             [- 6.27320644, -0.00040190, 0.00024621, 7.27280455, 0.99877233, 0.99935189, 0.49323912],
+                             [- 6.27320657, -0.00040184, 0.00024618, 7.27280472, 0.99877249, 0.99935198, 0.49323907],
+                             [- 6.27320669, -0.00040179, 0.00024615, 7.27280490, 0.99877265, 0.99935206, 0.49323901],
+                             [- 6.27320682, -0.00040174, 0.00024611, 7.27280508, 0.99877281, 0.99935215, 0.49323923],
+                             [- 6.27320694, -0.00040169, 0.00024608, 7.27280525, 0.99877297, 0.99935223, 0.49323914],
+                             [- 6.27320706, -0.00040163, 0.00024605, 7.27280543, 0.99877313, 0.99935231, 0.49323921],
+                             [- 6.27320719, -0.00040158, 0.00024602, 7.27280561, 0.99877329, 0.99935240, 0.49323926],
+                             [- 6.27320731, -0.00040153, 0.00024599, 7.27280578, 0.99877345, 0.99935248, 0.49323926],
+                             [- 6.27320744, -0.00040148, 0.00024595, 7.27280596, 0.99877361, 0.99935257, 0.49323918],
+                             [- 6.27320756, -0.00040143, 0.00024592, 7.27280614, 0.99877376, 0.99935265, 0.49323936],
+                             [- 6.27320769, -0.00040137, 0.00024589, 7.27280631, 0.99877392, 0.99935273, 0.49323929],
+                             [- 6.27320781, -0.00040132, 0.00024586, 7.27280649, 0.99877408, 0.99935282, 0.49323934],
+                             [- 6.27320794, -0.00040127, 0.00024583, 7.27280667, 0.99877424, 0.99935290, 0.49323932],
+                             [- 6.27320806, -0.00040122, 0.00024580, 7.27280684, 0.99877440, 0.99935299, 0.49323931],
+                             [- 6.27320819, -0.00040117, 0.00024576, 7.27280702, 0.99877456, 0.99935307, 0.49323926],
+                             [- 6.27320831, -0.00040111, 0.00024573, 7.27280720, 0.99877472, 0.99935315, 0.49323938],
+                             [- 6.27320843, -0.00040106, 0.00024570, 7.27280737, 0.99877488, 0.99935324, 0.49323939],
+                             [- 6.27320856, -0.00040101, 0.00024567, 7.27280755, 0.99877504, 0.99935332, 0.49323934],
+                             [- 6.27320868, -0.00040096, 0.00024564, 7.27280773, 0.99877519, 0.99935341, 0.49323939],
+                             [- 6.27320881, -0.00040091, 0.00024560, 7.27280790, 0.99877535, 0.99935349, 0.49323943],
+                             [- 6.27320893, -0.00040085, 0.00024557, 7.27280808, 0.99877551, 0.99935357, 0.49323942],
+                             [- 6.27320906, -0.00040080, 0.00024554, 7.27280825, 0.99877567, 0.99935366, 0.49323947],
+                             [- 6.27320918, -0.00040075, 0.00024551, 7.27280843, 0.99877583, 0.99935374, 0.49323951],
+                             [- 6.27320930, -0.00040070, 0.00024548, 7.27280861, 0.99877599, 0.99935382, 0.49323953],
+                             [- 6.27320943, -0.00040065, 0.00024545, 7.27280878, 0.99877615, 0.99935391, 0.49323955],
+                             [- 6.27320955, -0.00040059, 0.00024541, 7.27280896, 0.99877630, 0.99935399, 0.49323962],
+                             [- 6.27320968, -0.00040054, 0.00024538, 7.27280913, 0.99877646, 0.99935408, 0.49323956],
+                             [- 6.27320980, -0.00040049, 0.00024535, 7.27280931, 0.99877662, 0.99935416, 0.49323962],
+                             [- 6.27320993, -0.00040044, 0.00024532, 7.27280949, 0.99877678, 0.99935424, 0.49323958],
+                             [- 6.27321005, -0.00040039, 0.00024529, 7.27280966, 0.99877694, 0.99935433, 0.49323965],
+                             [- 6.27321017, -0.00040034, 0.00024525, 7.27280984, 0.99877710, 0.99935441, 0.49323969],
+                             [- 6.27321030, -0.00040028, 0.00024522, 7.27281001, 0.99877725, 0.99935449, 0.49323976],
+                             [- 6.27321042, -0.00040023, 0.00024519, 7.27281019, 0.99877741, 0.99935458, 0.49323970],
+                             [- 6.27321054, -0.00040018, 0.00024516, 7.27281036, 0.99877757, 0.99935466, 0.49323974],
+                             [- 6.27321067, -0.00040013, 0.00024513, 7.27281054, 0.99877773, 0.99935474, 0.49323974],
+                             [- 6.27321079, -0.00040008, 0.00024510, 7.27281072, 0.99877789, 0.99935483, 0.49323966],
+                             [- 6.27321092, -0.00040003, 0.00024506, 7.27281089, 0.99877804, 0.99935491, 0.49323980],
+                             [- 6.27321104, -0.00039997, 0.00024503, 7.27281107, 0.99877820, 0.99935499, 0.49323982],
+                             [- 6.27321116, -0.00039992, 0.00024500, 7.27281124, 0.99877836, 0.99935508, 0.49323984],
+                             [- 6.27321129, -0.00039987, 0.00024497, 7.27281142, 0.99877852, 0.99935516, 0.49323979],
+                             [- 6.27321141, -0.00039982, 0.00024494, 7.27281159, 0.99877868, 0.99935524, 0.49323984],
+                             [- 6.27321153, -0.00039977, 0.00024491, 7.27281177, 0.99877883, 0.99935533, 0.49323987],
+                             [- 6.27321166, -0.00039972, 0.00024487, 7.27281194, 0.99877899, 0.99935541, 0.49323994],
+                             [- 6.27321178, -0.00039966, 0.00024484, 7.27281212, 0.99877915, 0.99935549, 0.49323989],
+                             [- 6.27321191, -0.00039961, 0.00024481, 7.27281229, 0.99877931, 0.99935558, 0.49323986],
+                             [- 6.27321203, -0.00039956, 0.00024478, 7.27281247, 0.99877946, 0.99935566, 0.49323995],
+                             [- 6.27321215, -0.00039951, 0.00024475, 7.27281264, 0.99877962, 0.99935574, 0.49323997],
+                             [- 6.27321228, -0.00039946, 0.00024472, 7.27281282, 0.99877978, 0.99935583, 0.49323996],
+                             [- 6.27321240, -0.00039941, 0.00024468, 7.27281299, 0.99877994, 0.99935591, 0.49323998],
+                             [- 6.27321252, -0.00039935, 0.00024465, 7.27281317, 0.99878009, 0.99935599, 0.49323996],
+                             [- 6.27321265, -0.00039930, 0.00024462, 7.27281334, 0.99878025, 0.99935608, 0.49324002],
+                             [- 6.27321277, -0.00039925, 0.00024459, 7.27281352, 0.99878041, 0.99935616, 0.49323998],
+                             [- 6.27321289, -0.00039920, 0.00024456, 7.27281369, 0.99878057, 0.99935624, 0.49324001],
+                             [- 6.27321302, -0.00039915, 0.00024453, 7.27281387, 0.99878072, 0.99935632, 0.49324014],
+                             [- 6.27321314, -0.00039910, 0.00024450, 7.27281404, 0.99878088, 0.99935641, 0.49324019],
+                             [- 6.27321326, -0.00039905, 0.00024446, 7.27281422, 0.99878104, 0.99935649, 0.49324012],
+                             [- 6.27321338, -0.00039899, 0.00024443, 7.27281439, 0.99878120, 0.99935657, 0.49324003],
+                             [- 6.27321351, -0.00039894, 0.00024440, 7.27281457, 0.99878135, 0.99935666, 0.49324013],
+                             [- 6.27321363, -0.00039889, 0.00024437, 7.27281474, 0.99878151, 0.99935674, 0.49324013],
+                             [- 6.27321375, -0.00039884, 0.00024434, 7.27281491, 0.99878167, 0.99935682, 0.49324017],
+                             [- 6.27321388, -0.00039879, 0.00024431, 7.27281509, 0.99878182, 0.99935690, 0.49324022],
+                             [- 6.27321400, -0.00039874, 0.00024427, 7.27281526, 0.99878198, 0.99935699, 0.49324015],
+                             [- 6.27321412, -0.00039869, 0.00024424, 7.27281544, 0.99878214, 0.99935707, 0.49324036],
+                             [- 6.27321425, -0.00039863, 0.00024421, 7.27281561, 0.99878229, 0.99935715, 0.49324026],
+                             [- 6.27321437, -0.00039858, 0.00024418, 7.27281579, 0.99878245, 0.99935724, 0.49324022],
+                             [- 6.27321449, -0.00039853, 0.00024415, 7.27281596, 0.99878261, 0.99935732, 0.49324031],
+                             [- 6.27321461, -0.00039848, 0.00024412, 7.27281613, 0.99878277, 0.99935740, 0.49324028],
+                             [- 6.27321474, -0.00039843, 0.00024409, 7.27281631, 0.99878292, 0.99935748, 0.49324030],
+                             [- 6.27321486, -0.00039838, 0.00024405, 7.27281648, 0.99878308, 0.99935757, 0.49324023],
+                             [- 6.27321498, -0.00039833, 0.00024402, 7.27281666, 0.99878324, 0.99935765, 0.49324037],
+                             [- 6.27321511, -0.00039828, 0.00024399, 7.27281683, 0.99878339, 0.99935773, 0.49324036],
+                             [- 6.27321523, -0.00039822, 0.00024396, 7.27281700, 0.99878355, 0.99935782, 0.49324044],
+                             [- 6.27321535, -0.00039817, 0.00024393, 7.27281718, 0.99878370, 0.99935790, 0.49324039],
+                             [- 6.27321547, -0.00039812, 0.00024390, 7.27281735, 0.99878386, 0.99935798, 0.49324042],
+                             [- 6.27321560, -0.00039807, 0.00024387, 7.27281752, 0.99878402, 0.99935806, 0.49324055],
+                             [- 6.27321572, -0.00039802, 0.00024383, 7.27281770, 0.99878417, 0.99935815, 0.49324042],
+                             [- 6.27321584, -0.00039797, 0.00024380, 7.27281787, 0.99878433, 0.99935823, 0.49324044],
+                             [- 6.27321596, -0.00039792, 0.00024377, 7.27281805, 0.99878449, 0.99935831, 0.49324041],
+                             [- 6.27321609, -0.00039787, 0.00024374, 7.27281822, 0.99878464, 0.99935839, 0.49324060],
+                             [- 6.27321621, -0.00039781, 0.00024371, 7.27281839, 0.99878480, 0.99935848, 0.49324044],
+                             [- 6.27321633, -0.00039776, 0.00024368, 7.27281857, 0.99878496, 0.99935856, 0.49324054],
+                             [- 6.27321645, -0.00039771, 0.00024365, 7.27281874, 0.99878511, 0.99935864, 0.49324046],
+                             [- 6.27321658, -0.00039766, 0.00024362, 7.27281891, 0.99878527, 0.99935872, 0.49324052],
+                             [- 6.27321670, -0.00039761, 0.00024358, 7.27281909, 0.99878542, 0.99935881, 0.49324063],
+                             [- 6.27321682, -0.00039756, 0.00024355, 7.27281926, 0.99878558, 0.99935889, 0.49324081],
+                             [- 6.27321694, -0.00039751, 0.00024352, 7.27281943, 0.99878574, 0.99935897, 0.49324067],
+                             [- 6.27321706, -0.00039746, 0.00024349, 7.27281961, 0.99878589, 0.99935905, 0.49324080],
+                             [- 6.27321719, -0.00039741, 0.00024346, 7.27281978, 0.99878605, 0.99935913, 0.49324070],
+                             [- 6.27321731, -0.00039736, 0.00024343, 7.27281995, 0.99878620, 0.99935922, 0.49324061],
+                             [- 6.27321743, -0.00039730, 0.00024340, 7.27282013, 0.99878636, 0.99935930, 0.49324072],
+                             [- 6.27321755, -0.00039725, 0.00024337, 7.27282030, 0.99878652, 0.99935938, 0.49324071],
+                             [- 6.27321767, -0.00039720, 0.00024333, 7.27282047, 0.99878667, 0.99935946, 0.49324076],
+                             [- 6.27321780, -0.00039715, 0.00024330, 7.27282064, 0.99878683, 0.99935955, 0.49324084],
+                             [- 6.27321792, -0.00039710, 0.00024327, 7.27282082, 0.99878698, 0.99935963, 0.49324086],
+                             [- 6.27321804, -0.00039705, 0.00024324, 7.27282099, 0.99878714, 0.99935971, 0.49324068],
+                             [- 6.27321816, -0.00039700, 0.00024321, 7.27282116, 0.99878729, 0.99935979, 0.49324078],
+                             [- 6.27321828, -0.00039695, 0.00024318, 7.27282134, 0.99878745, 0.99935987, 0.49324088],
+                             [- 6.27321841, -0.00039690, 0.00024315, 7.27282151, 0.99878760, 0.99935996, 0.49324077],
+                             [- 6.27321853, -0.00039685, 0.00024312, 7.27282168, 0.99878776, 0.99936004, 0.49324091],
+                             [- 6.27321865, -0.00039680, 0.00024308, 7.27282185, 0.99878792, 0.99936012, 0.49324089],
+                             [- 6.27321877, -0.00039674, 0.00024305, 7.27282203, 0.99878807, 0.99936020, 0.49324098],
+                             [- 6.27321889, -0.00039669, 0.00024302, 7.27282220, 0.99878823, 0.99936028, 0.49324089],
+                             [- 6.27321901, -0.00039664, 0.00024299, 7.27282237, 0.99878838, 0.99936037, 0.49324096],
+                             [- 6.27321914, -0.00039659, 0.00024296, 7.27282254, 0.99878854, 0.99936045, 0.49324110],
+                             [- 6.27321926, -0.00039654, 0.00024293, 7.27282272, 0.99878869, 0.99936053, 0.49324104],
+                             [- 6.27321938, -0.00039649, 0.00024290, 7.27282289, 0.99878885, 0.99936061, 0.49324115],
+                             [- 6.27321950, -0.00039644, 0.00024287, 7.27282306, 0.99878900, 0.99936069, 0.49324105],
+                             [- 6.27321962, -0.00039639, 0.00024284, 7.27282323, 0.99878916, 0.99936078, 0.49324108],
+                             [- 6.27321974, -0.00039634, 0.00024280, 7.27282341, 0.99878931, 0.99936086, 0.49324101],
+                             [- 6.27321987, -0.00039629, 0.00024277, 7.27282358, 0.99878947, 0.99936094, 0.49324102],
+                             [- 6.27321999, -0.00039624, 0.00024274, 7.27282375, 0.99878962, 0.99936102, 0.49324113],
+                             [- 6.27322011, -0.00039619, 0.00024271, 7.27282392, 0.99878978, 0.99936110, 0.49324108],
+                             [- 6.27322023, -0.00039613, 0.00024268, 7.27282409, 0.99878993, 0.99936119, 0.49324117],
+                             [- 6.27322035, -0.00039608, 0.00024265, 7.27282427, 0.99879009, 0.99936127, 0.49324125],
+                             [- 6.27322047, -0.00039603, 0.00024262, 7.27282444, 0.99879024, 0.99936135, 0.49324106],
+                             [- 6.27322059, -0.00039598, 0.00024259, 7.27282461, 0.99879040, 0.99936143, 0.49324119],
+                             [- 6.27322071, -0.00039593, 0.00024256, 7.27282478, 0.99879055, 0.99936151, 0.49324110],
+                             [- 6.27322084, -0.00039588, 0.00024252, 7.27282495, 0.99879071, 0.99936159, 0.49324126],
+                             [- 6.27322096, -0.00039583, 0.00024249, 7.27282513, 0.99879086, 0.99936168, 0.49324122],
+                             [- 6.27322108, -0.00039578, 0.00024246, 7.27282530, 0.99879102, 0.99936176, 0.49324129],
+                             [- 6.27322120, -0.00039573, 0.00024243, 7.27282547, 0.99879117, 0.99936184, 0.49324129],
+                             [- 6.27322132, -0.00039568, 0.00024240, 7.27282564, 0.99879133, 0.99936192, 0.49324124],
+                             [- 6.27322144, -0.00039563, 0.00024237, 7.27282581, 0.99879148, 0.99936200, 0.49324135],
+                             [- 6.27322156, -0.00039558, 0.00024234, 7.27282598, 0.99879163, 0.99936208, 0.49324138],
+                             [- 6.27322168, -0.00039553, 0.00024231, 7.27282616, 0.99879179, 0.99936216, 0.49324133],
+                             [- 6.27322180, -0.00039548, 0.00024228, 7.27282633, 0.99879194, 0.99936225, 0.49324140],
+                             [- 6.27322193, -0.00039543, 0.00024225, 7.27282650, 0.99879210, 0.99936233, 0.49324130],
+                             [- 6.27322205, -0.00039538, 0.00024221, 7.27282667, 0.99879225, 0.99936241, 0.49324149],
+                             [- 6.27322217, -0.00039533, 0.00024218, 7.27282684, 0.99879241, 0.99936249, 0.49324143],
+                             [- 6.27322229, -0.00039528, 0.00024215, 7.27282701, 0.99879256, 0.99936257, 0.49324140],
+                             [- 6.27322241, -0.00039522, 0.00024212, 7.27282718, 0.99879271, 0.99936265, 0.49324158],
+                             [- 6.27322253, -0.00039517, 0.00024209, 7.27282736, 0.99879287, 0.99936273, 0.49324147],
+                             [- 6.27322265, -0.00039512, 0.00024206, 7.27282753, 0.99879302, 0.99936282, 0.49324156],
+                             [- 6.27322277, -0.00039507, 0.00024203, 7.27282770, 0.99879318, 0.99936290, 0.49324153],
+                             [- 6.27322289, -0.00039502, 0.00024200, 7.27282787, 0.99879333, 0.99936298, 0.49324143],
+                             [- 6.27322301, -0.00039497, 0.00024197, 7.27282804, 0.99879349, 0.99936306, 0.49324134],
+                             [- 6.27322313, -0.00039492, 0.00024194, 7.27282821, 0.99879364, 0.99936314, 0.49324161],
+                             [- 6.27322325, -0.00039487, 0.00024191, 7.27282838, 0.99879379, 0.99936322, 0.49324161],
+                             [- 6.27322337, -0.00039482, 0.00024187, 7.27282855, 0.99879395, 0.99936330, 0.49324164],
+                             [- 6.27322349, -0.00039477, 0.00024184, 7.27282872, 0.99879410, 0.99936339, 0.49324176],
+                             [- 6.27322362, -0.00039472, 0.00024181, 7.27282889, 0.99879425, 0.99936347, 0.49324160],
+                             [- 6.27322374, -0.00039467, 0.00024178, 7.27282907, 0.99879441, 0.99936355, 0.49324157],
+                             [- 6.27322386, -0.00039462, 0.00024175, 7.27282924, 0.99879456, 0.99936363, 0.49324158],
+                             [- 6.27322398, -0.00039457, 0.00024172, 7.27282941, 0.99879472, 0.99936371, 0.49324166],
+                             [- 6.27322410, -0.00039452, 0.00024169, 7.27282958, 0.99879487, 0.99936379, 0.49324172],
+                             [- 6.27322422, -0.00039447, 0.00024166, 7.27282975, 0.99879502, 0.99936387, 0.49324177],
+                             [- 6.27322434, -0.00039442, 0.00024163, 7.27282992, 0.99879518, 0.99936395, 0.49324175],
+                             [- 6.27322446, -0.00039437, 0.00024160, 7.27283009, 0.99879533, 0.99936403, 0.49324173],
+                             [- 6.27322458, -0.00039432, 0.00024157, 7.27283026, 0.99879548, 0.99936412, 0.49324183],
+                             [- 6.27322470, -0.00039427, 0.00024154, 7.27283043, 0.99879564, 0.99936420, 0.49324189],
+                             [- 6.27322482, -0.00039422, 0.00024150, 7.27283060, 0.99879579, 0.99936428, 0.49324183],
+                             [- 6.27322494, -0.00039417, 0.00024147, 7.27283077, 0.99879594, 0.99936436, 0.49324176],
+                             [- 6.27322506, -0.00039412, 0.00024144, 7.27283094, 0.99879610, 0.99936444, 0.49324183],
+                             [- 6.27322518, -0.00039407, 0.00024141, 7.27283111, 0.99879625, 0.99936452, 0.49324186],
+                             [- 6.27322530, -0.00039402, 0.00024138, 7.27283128, 0.99879640, 0.99936460, 0.49324198],
+                             [- 6.27322542, -0.00039397, 0.00024135, 7.27283145, 0.99879656, 0.99936468, 0.49324210],
+                             [- 6.27322554, -0.00039392, 0.00024132, 7.27283162, 0.99879671, 0.99936476, 0.49324198],
+                             [- 6.27322566, -0.00039387, 0.00024129, 7.27283179, 0.99879686, 0.99936484, 0.49324205],
+                             [- 6.27322578, -0.00039382, 0.00024126, 7.27283196, 0.99879702, 0.99936492, 0.49324207],
+                             [- 6.27322590, -0.00039377, 0.00024123, 7.27283213, 0.99879717, 0.99936501, 0.49324191],
+                             [- 6.27322602, -0.00039372, 0.00024120, 7.27283230, 0.99879732, 0.99936509, 0.49324201],
+                             [- 6.27322614, -0.00039367, 0.00024117, 7.27283247, 0.99879748, 0.99936517, 0.49324194],
+                             [- 6.27322626, -0.00039362, 0.00024114, 7.27283264, 0.99879763, 0.99936525, 0.49324211],
+                             [- 6.27322638, -0.00039357, 0.00024111, 7.27283281, 0.99879778, 0.99936533, 0.49324210],
+                             [- 6.27322650, -0.00039352, 0.00024107, 7.27283298, 0.99879793, 0.99936541, 0.49324195],
+                             [- 6.27322662, -0.00039347, 0.00024104, 7.27283315, 0.99879809, 0.99936549, 0.49324205],
+                             [- 6.27322674, -0.00039342, 0.00024101, 7.27283332, 0.99879824, 0.99936557, 0.49324210],
+                             [- 6.27322686, -0.00039337, 0.00024098, 7.27283349, 0.99879839, 0.99936565, 0.49324214],
+                             [- 6.27322698, -0.00039332, 0.00024095, 7.27283366, 0.99879855, 0.99936573, 0.49324202],
+                             [- 6.27322710, -0.00039327, 0.00024092, 7.27283383, 0.99879870, 0.99936581, 0.49324209],
+                             [- 6.27322722, -0.00039322, 0.00024089, 7.27283400, 0.99879885, 0.99936589, 0.49324208],
+                             [- 6.27322734, -0.00039317, 0.00024086, 7.27283417, 0.99879900, 0.99936597, 0.49324207],
+                             [- 6.27322746, -0.00039312, 0.00024083, 7.27283434, 0.99879916, 0.99936605, 0.49324215],
+                             [- 6.27322757, -0.00039307, 0.00024080, 7.27283451, 0.99879931, 0.99936613, 0.49324220],
+                             [- 6.27322769, -0.00039302, 0.00024077, 7.27283468, 0.99879946, 0.99936621, 0.49324229],
+                             [- 6.27322781, -0.00039297, 0.00024074, 7.27283485, 0.99879961, 0.99936630, 0.49324226],
+                             [- 6.27322793, -0.00039292, 0.00024071, 7.27283502, 0.99879977, 0.99936638, 0.49324230],
+                             [- 6.27322805, -0.00039287, 0.00024068, 7.27283519, 0.99879992, 0.99936646, 0.49324236],
+                             [- 6.27322817, -0.00039282, 0.00024065, 7.27283535, 0.99880007, 0.99936654, 0.49324229],
+                             [- 6.27322829, -0.00039277, 0.00024062, 7.27283552, 0.99880022, 0.99936662, 0.49324245],
+                             [- 6.27322841, -0.00039272, 0.00024059, 7.27283569, 0.99880038, 0.99936670, 0.49324230],
+                             [- 6.27322853, -0.00039267, 0.00024055, 7.27283586, 0.99880053, 0.99936678, 0.49324241],
+                             [- 6.27322865, -0.00039262, 0.00024052, 7.27283603, 0.99880068, 0.99936686, 0.49324234],
+                             [- 6.27322877, -0.00039257, 0.00024049, 7.27283620, 0.99880083, 0.99936694, 0.49324231],
+                             [- 6.27322889, -0.00039252, 0.00024046, 7.27283637, 0.99880098, 0.99936702, 0.49324244],
+                             [- 6.27322901, -0.00039247, 0.00024043, 7.27283654, 0.99880114, 0.99936710, 0.49324243],
+                             [- 6.27322913, -0.00039242, 0.00024040, 7.27283671, 0.99880129, 0.99936718, 0.49324251],
+                             [- 6.27322924, -0.00039237, 0.00024037, 7.27283688, 0.99880144, 0.99936726, 0.49324242],
+                             [- 6.27322936, -0.00039232, 0.00024034, 7.27283704, 0.99880159, 0.99936734, 0.49324245],
+                             [- 6.27322948, -0.00039227, 0.00024031, 7.27283721, 0.99880174, 0.99936742, 0.49324248],
+                             [- 6.27322960, -0.00039222, 0.00024028, 7.27283738, 0.99880190, 0.99936750, 0.49324240],
+                             [- 6.27322972, -0.00039217, 0.00024025, 7.27283755, 0.99880205, 0.99936758, 0.49324256],
+                             [- 6.27322984, -0.00039212, 0.00024022, 7.27283772, 0.99880220, 0.99936766, 0.49324270],
+                             [- 6.27322996, -0.00039207, 0.00024019, 7.27283789, 0.99880235, 0.99936774, 0.49324265],
+                             [- 6.27323008, -0.00039202, 0.00024016, 7.27283806, 0.99880250, 0.99936782, 0.49324254],
+                             [- 6.27323020, -0.00039197, 0.00024013, 7.27283822, 0.99880265, 0.99936790, 0.49324268],
+                             [- 6.27323032, -0.00039192, 0.00024010, 7.27283839, 0.99880281, 0.99936798, 0.49324263],
+                             [- 6.27323043, -0.00039187, 0.00024007, 7.27283856, 0.99880296, 0.99936806, 0.49324257],
+                             [- 6.27323055, -0.00039182, 0.00024004, 7.27283873, 0.99880311, 0.99936814, 0.49324271],
+                             [- 6.27323067, -0.00039177, 0.00024001, 7.27283890, 0.99880326, 0.99936822, 0.49324263],
+                             [- 6.27323079, -0.00039172, 0.00023998, 7.27283907, 0.99880341, 0.99936830, 0.49324259],
+                             [- 6.27323091, -0.00039167, 0.00023995, 7.27283923, 0.99880356, 0.99936838, 0.49324272],
+                             [- 6.27323103, -0.00039162, 0.00023992, 7.27283940, 0.99880372, 0.99936846, 0.49324266],
+                             [- 6.27323115, -0.00039158, 0.00023989, 7.27283957, 0.99880387, 0.99936854, 0.49324277],
+                             [- 6.27323126, -0.00039153, 0.00023985, 7.27283974, 0.99880402, 0.99936862, 0.49324283],
+                             [- 6.27323138, -0.00039148, 0.00023982, 7.27283991, 0.99880417, 0.99936870, 0.49324288],
+                             [- 6.27323150, -0.00039143, 0.00023979, 7.27284008, 0.99880432, 0.99936878, 0.49324274],
+                             [- 6.27323162, -0.00039138, 0.00023976, 7.27284024, 0.99880447, 0.99936886, 0.49324289],
+                             [- 6.27323174, -0.00039133, 0.00023973, 7.27284041, 0.99880462, 0.99936894, 0.49324287],
+                             [- 6.27323186, -0.00039128, 0.00023970, 7.27284058, 0.99880477, 0.99936902, 0.49324285],
+                             [- 6.27323198, -0.00039123, 0.00023967, 7.27284075, 0.99880493, 0.99936910, 0.49324283],
+                             [- 6.27323209, -0.00039118, 0.00023964, 7.27284091, 0.99880508, 0.99936918, 0.49324290],
+                             [- 6.27323221, -0.00039113, 0.00023961, 7.27284108, 0.99880523, 0.99936926, 0.49324280],
+                             [- 6.27323233, -0.00039108, 0.00023958, 7.27284125, 0.99880538, 0.99936934, 0.49324296],
+                             [- 6.27323245, -0.00039103, 0.00023955, 7.27284142, 0.99880553, 0.99936942, 0.49324284],
+                             [- 6.27323257, -0.00039098, 0.00023952, 7.27284159, 0.99880568, 0.99936950, 0.49324285],
+                             [- 6.27323268, -0.00039093, 0.00023949, 7.27284175, 0.99880583, 0.99936958, 0.49324302],
+                             [- 6.27323280, -0.00039088, 0.00023946, 7.27284192, 0.99880598, 0.99936966, 0.49324295],
+                             [- 6.27323292, -0.00039083, 0.00023943, 7.27284209, 0.99880613, 0.99936974, 0.49324320],
+                             [- 6.27323304, -0.00039078, 0.00023940, 7.27284226, 0.99880628, 0.99936982, 0.49324315],
+                             [- 6.27323316, -0.00039073, 0.00023937, 7.27284242, 0.99880643, 0.99936990, 0.49324296],
+                             [- 6.27323328, -0.00039069, 0.00023934, 7.27284259, 0.99880658, 0.99936997, 0.49324298],
+                             [- 6.27323339, -0.00039064, 0.00023931, 7.27284276, 0.99880674, 0.99937005, 0.49324310],
+                             [- 6.27323351, -0.00039059, 0.00023928, 7.27284292, 0.99880689, 0.99937013, 0.49324316],
+                             [- 6.27323363, -0.00039054, 0.00023925, 7.27284309, 0.99880704, 0.99937021, 0.49324305],
+                             [- 6.27323375, -0.00039049, 0.00023922, 7.27284326, 0.99880719, 0.99937029, 0.49324317],
+                             [- 6.27323387, -0.00039044, 0.00023919, 7.27284343, 0.99880734, 0.99937037, 0.49324316],
+                             [- 6.27323398, -0.00039039, 0.00023916, 7.27284359, 0.99880749, 0.99937045, 0.49324322],
+                             [- 6.27323410, -0.00039034, 0.00023913, 7.27284376, 0.99880764, 0.99937053, 0.49324310],
+                             [- 6.27323422, -0.00039029, 0.00023910, 7.27284393, 0.99880779, 0.99937061, 0.49324325],
+                             [- 6.27323434, -0.00039024, 0.00023907, 7.27284409, 0.99880794, 0.99937069, 0.49324319],
+                             [- 6.27323445, -0.00039019, 0.00023904, 7.27284426, 0.99880809, 0.99937077, 0.49324326],
+                             [- 6.27323457, -0.00039014, 0.00023901, 7.27284443, 0.99880824, 0.99937085, 0.49324329],
+                             [- 6.27323469, -0.00039009, 0.00023898, 7.27284460, 0.99880839, 0.99937093, 0.49324333],
+                             [- 6.27323481, -0.00039005, 0.00023895, 7.27284476, 0.99880854, 0.99937101, 0.49324318],
+                             [- 6.27323493, -0.00039000, 0.00023892, 7.27284493, 0.99880869, 0.99937109, 0.49324318],
+                             [- 6.27323504, -0.00038995, 0.00023889, 7.27284510, 0.99880884, 0.99937117, 0.49324337],
+                             [- 6.27323516, -0.00038990, 0.00023886, 7.27284526, 0.99880899, 0.99937124, 0.49324337],
+                             [- 6.27323528, -0.00038985, 0.00023883, 7.27284543, 0.99880914, 0.99937132, 0.49324350],
+                             [- 6.27323540, -0.00038980, 0.00023880, 7.27284560, 0.99880929, 0.99937140, 0.49324334],
+                             [- 6.27323551, -0.00038975, 0.00023877, 7.27284576, 0.99880944, 0.99937148, 0.49324341],
+                             [- 6.27323563, -0.00038970, 0.00023874, 7.27284593, 0.99880959, 0.99937156, 0.49324338],
+                             [- 6.27323575, -0.00038965, 0.00023871, 7.27284609, 0.99880974, 0.99937164, 0.49324344],
+                             [- 6.27323587, -0.00038960, 0.00023868, 7.27284626, 0.99880989, 0.99937172, 0.49324362],
+                             [- 6.27323598, -0.00038955, 0.00023865, 7.27284643, 0.99881004, 0.99937180, 0.49324347],
+                             [- 6.27323610, -0.00038951, 0.00023862, 7.27284659, 0.99881019, 0.99937188, 0.49324345],
+                             [- 6.27323622, -0.00038946, 0.00023859, 7.27284676, 0.99881034, 0.99937196, 0.49324353],
+                             [- 6.27323633, -0.00038941, 0.00023856, 7.27284693, 0.99881049, 0.99937204, 0.49324361],
+                             [- 6.27323645, -0.00038936, 0.00023853, 7.27284709, 0.99881064, 0.99937211, 0.49324364],
+                             [- 6.27323657, -0.00038931, 0.00023850, 7.27284726, 0.99881079, 0.99937219, 0.49324360],
+                             [- 6.27323669, -0.00038926, 0.00023847, 7.27284743, 0.99881094, 0.99937227, 0.49324354],
+                             [- 6.27323680, -0.00038921, 0.00023844, 7.27284759, 0.99881109, 0.99937235, 0.49324359],
+                             [- 6.27323692, -0.00038916, 0.00023841, 7.27284776, 0.99881124, 0.99937243, 0.49324355],
+                             [- 6.27323704, -0.00038911, 0.00023838, 7.27284792, 0.99881139, 0.99937251, 0.49324369],
+                             [- 6.27323715, -0.00038907, 0.00023835, 7.27284809, 0.99881154, 0.99937259, 0.49324366],
+                             [- 6.27323727, -0.00038902, 0.00023832, 7.27284826, 0.99881169, 0.99937267, 0.49324363],
+                             [- 6.27323739, -0.00038897, 0.00023829, 7.27284842, 0.99881184, 0.99937275, 0.49324368],
+                             [- 6.27323751, -0.00038892, 0.00023826, 7.27284859, 0.99881198, 0.99937282, 0.49324385],
+                             [- 6.27323762, -0.00038887, 0.00023823, 7.27284875, 0.99881213, 0.99937290, 0.49324375],
+                             [- 6.27323774, -0.00038882, 0.00023820, 7.27284892, 0.99881228, 0.99937298, 0.49324381],
+                             [- 6.27323786, -0.00038877, 0.00023817, 7.27284908, 0.99881243, 0.99937306, 0.49324383],
+                             [- 6.27323797, -0.00038872, 0.00023814, 7.27284925, 0.99881258, 0.99937314, 0.49324389],
+                             [- 6.27323809, -0.00038867, 0.00023811, 7.27284942, 0.99881273, 0.99937322, 0.49324387],
+                             [- 6.27323821, -0.00038863, 0.00023808, 7.27284958, 0.99881288, 0.99937330, 0.49324385],
+                             [- 6.27323832, -0.00038858, 0.00023805, 7.27284975, 0.99881303, 0.99937338, 0.49324378],
+                             [- 6.27323844, -0.00038853, 0.00023802, 7.27284991, 0.99881318, 0.99937345, 0.49324377],
+                             [- 6.27323856, -0.00038848, 0.00023799, 7.27285008, 0.99881333, 0.99937353, 0.49324388],
+                             [- 6.27323867, -0.00038843, 0.00023796, 7.27285024, 0.99881348, 0.99937361, 0.49324392],
+                             [- 6.27323879, -0.00038838, 0.00023793, 7.27285041, 0.99881362, 0.99937369, 0.49324396],
+                             [- 6.27323891, -0.00038833, 0.00023790, 7.27285057, 0.99881377, 0.99937377, 0.49324387],
+                             [- 6.27323902, -0.00038828, 0.00023787, 7.27285074, 0.99881392, 0.99937385, 0.49324395],
+                             [- 6.27323914, -0.00038824, 0.00023784, 7.27285090, 0.99881407, 0.99937393, 0.49324401],
+                             [- 6.27323926, -0.00038819, 0.00023781, 7.27285107, 0.99881422, 0.99937400, 0.49324397],
+                             [- 6.27323937, -0.00038814, 0.00023778, 7.27285124, 0.99881437, 0.99937408, 0.49324409],
+                             [- 6.27323949, -0.00038809, 0.00023775, 7.27285140, 0.99881452, 0.99937416, 0.49324390],
+                             [- 6.27323961, -0.00038804, 0.00023772, 7.27285157, 0.99881467, 0.99937424, 0.49324412],
+                             [- 6.27323972, -0.00038799, 0.00023769, 7.27285173, 0.99881481, 0.99937432, 0.49324405],
+                             [- 6.27323984, -0.00038794, 0.00023766, 7.27285190, 0.99881496, 0.99937440, 0.49324413],
+                             [- 6.27323996, -0.00038789, 0.00023763, 7.27285206, 0.99881511, 0.99937448, 0.49324398],
+                             [- 6.27324007, -0.00038785, 0.00023760, 7.27285223, 0.99881526, 0.99937455, 0.49324408],
+                             [- 6.27324019, -0.00038780, 0.00023757, 7.27285239, 0.99881541, 0.99937463, 0.49324411],
+                             [- 6.27324030, -0.00038775, 0.00023754, 7.27285256, 0.99881556, 0.99937471, 0.49324404],
+                             [- 6.27324042, -0.00038770, 0.00023751, 7.27285272, 0.99881571, 0.99937479, 0.49324417],
+                             [- 6.27324054, -0.00038765, 0.00023748, 7.27285289, 0.99881585, 0.99937487, 0.49324417],
+                             [- 6.27324065, -0.00038760, 0.00023745, 7.27285305, 0.99881600, 0.99937495, 0.49324417],
+                             [- 6.27324077, -0.00038755, 0.00023742, 7.27285321, 0.99881615, 0.99937502, 0.49324410],
+                             [- 6.27324089, -0.00038751, 0.00023739, 7.27285338, 0.99881630, 0.99937510, 0.49324415],
+                             [- 6.27324100, -0.00038746, 0.00023736, 7.27285354, 0.99881645, 0.99937518, 0.49324415],
+                             [- 6.27324112, -0.00038741, 0.00023733, 7.27285371, 0.99881660, 0.99937526, 0.49324428],
+                             [- 6.27324123, -0.00038736, 0.00023730, 7.27285387, 0.99881674, 0.99937534, 0.49324427],
+                             [- 6.27324135, -0.00038731, 0.00023727, 7.27285404, 0.99881689, 0.99937541, 0.49324429],
+                             [- 6.27324147, -0.00038726, 0.00023724, 7.27285420, 0.99881704, 0.99937549, 0.49324429],
+                             [- 6.27324158, -0.00038722, 0.00023721, 7.27285437, 0.99881719, 0.99937557, 0.49324431],
+                             [- 6.27324170, -0.00038717, 0.00023718, 7.27285453, 0.99881734, 0.99937565, 0.49324418],
+                             [- 6.27324181, -0.00038712, 0.00023715, 7.27285469, 0.99881748, 0.99937573, 0.49324436],
+                             [- 6.27324193, -0.00038707, 0.00023712, 7.27285486, 0.99881763, 0.99937581, 0.49324427],
+                             [- 6.27324205, -0.00038702, 0.00023709, 7.27285502, 0.99881778, 0.99937588, 0.49324438],
+                             [- 6.27324216, -0.00038697, 0.00023706, 7.27285519, 0.99881793, 0.99937596, 0.49324441],
+                             [- 6.27324228, -0.00038693, 0.00023704, 7.27285535, 0.99881807, 0.99937604, 0.49324425],
+                             [- 6.27324239, -0.00038688, 0.00023701, 7.27285552, 0.99881822, 0.99937612, 0.49324444],
+                             [- 6.27324251, -0.00038683, 0.00023698, 7.27285568, 0.99881837, 0.99937620, 0.49324437],
+                             [- 6.27324262, -0.00038678, 0.00023695, 7.27285584, 0.99881852, 0.99937627, 0.49324451],
+                             [- 6.27324274, -0.00038673, 0.00023692, 7.27285601, 0.99881867, 0.99937635, 0.49324443],
+                             [- 6.27324286, -0.00038668, 0.00023689, 7.27285617, 0.99881881, 0.99937643, 0.49324463],
+                             [- 6.27324297, -0.00038664, 0.00023686, 7.27285634, 0.99881896, 0.99937651, 0.49324464],
+                             [- 6.27324309, -0.00038659, 0.00023683, 7.27285650, 0.99881911, 0.99937659, 0.49324460],
+                             [- 6.27324320, -0.00038654, 0.00023680, 7.27285666, 0.99881926, 0.99937666, 0.49324474],
+                             [- 6.27324332, -0.00038649, 0.00023677, 7.27285683, 0.99881940, 0.99937674, 0.49324457],
+                             [- 6.27324343, -0.00038644, 0.00023674, 7.27285699, 0.99881955, 0.99937682, 0.49324464],
+                             [- 6.27324355, -0.00038639, 0.00023671, 7.27285716, 0.99881970, 0.99937690, 0.49324452],
+                             [- 6.27324366, -0.00038635, 0.00023668, 7.27285732, 0.99881985, 0.99937697, 0.49324451],
+                             [- 6.27324378, -0.00038630, 0.00023665, 7.27285748, 0.99881999, 0.99937705, 0.49324463],
+                             [- 6.27324390, -0.00038625, 0.00023662, 7.27285765, 0.99882014, 0.99937713, 0.49324460],
+                             [- 6.27324401, -0.00038620, 0.00023659, 7.27285781, 0.99882029, 0.99937721, 0.49324461],
+                             [- 6.27324413, -0.00038615, 0.00023656, 7.27285797, 0.99882043, 0.99937729, 0.49324473],
+                             [- 6.27324424, -0.00038610, 0.00023653, 7.27285814, 0.99882058, 0.99937736, 0.49324474],
+                             [- 6.27324436, -0.00038606, 0.00023650, 7.27285830, 0.99882073, 0.99937744, 0.49324465],
+                             [- 6.27324447, -0.00038601, 0.00023647, 7.27285846, 0.99882088, 0.99937752, 0.49324475],
+                             [- 6.27324459, -0.00038596, 0.00023644, 7.27285863, 0.99882102, 0.99937760, 0.49324482],
+                             [- 6.27324470, -0.00038591, 0.00023641, 7.27285879, 0.99882117, 0.99937767, 0.49324468],
+                             [- 6.27324482, -0.00038586, 0.00023638, 7.27285895, 0.99882132, 0.99937775, 0.49324472],
+                             [- 6.27324493, -0.00038582, 0.00023636, 7.27285912, 0.99882146, 0.99937783, 0.49324478],
+                             [- 6.27324505, -0.00038577, 0.00023633, 7.27285928, 0.99882161, 0.99937791, 0.49324486],
+                             [- 6.27324516, -0.00038572, 0.00023630, 7.27285944, 0.99882176, 0.99937798, 0.49324500],
+                             [- 6.27324528, -0.00038567, 0.00023627, 7.27285961, 0.99882190, 0.99937806, 0.49324482],
+                             [- 6.27324539, -0.00038562, 0.00023624, 7.27285977, 0.99882205, 0.99937814, 0.49324496],
+                             [- 6.27324551, -0.00038558, 0.00023621, 7.27285993, 0.99882220, 0.99937822, 0.49324495],
+                             [- 6.27324562, -0.00038553, 0.00023618, 7.27286009, 0.99882234, 0.99937829, 0.49324492],
+                             [- 6.27324574, -0.00038548, 0.00023615, 7.27286026, 0.99882249, 0.99937837, 0.49324476],
+                             [- 6.27324585, -0.00038543, 0.00023612, 7.27286042, 0.99882264, 0.99937845, 0.49324499],
+                             [- 6.27324597, -0.00038538, 0.00023609, 7.27286058, 0.99882278, 0.99937853, 0.49324495],
+                             [- 6.27324608, -0.00038534, 0.00023606, 7.27286075, 0.99882293, 0.99937860, 0.49324497],
+                             [- 6.27324620, -0.00038529, 0.00023603, 7.27286091, 0.99882308, 0.99937868, 0.49324499],
+                             [- 6.27324631, -0.00038524, 0.00023600, 7.27286107, 0.99882322, 0.99937876, 0.49324496],
+                             [- 6.27324643, -0.00038519, 0.00023597, 7.27286123, 0.99882337, 0.99937884, 0.49324507],
+                             [- 6.27324654, -0.00038514, 0.00023594, 7.27286140, 0.99882352, 0.99937891, 0.49324506],
+                             [- 6.27324666, -0.00038510, 0.00023591, 7.27286156, 0.99882366, 0.99937899, 0.49324519],
+                             [- 6.27324677, -0.00038505, 0.00023588, 7.27286172, 0.99882381, 0.99937907, 0.49324510],
+                             [- 6.27324689, -0.00038500, 0.00023586, 7.27286188, 0.99882396, 0.99937914, 0.49324509],
+                             [- 6.27324700, -0.00038495, 0.00023583, 7.27286205, 0.99882410, 0.99937922, 0.49324510],
+                             [- 6.27324711, -0.00038490, 0.00023580, 7.27286221, 0.99882425, 0.99937930, 0.49324517],
+                             [- 6.27324723, -0.00038486, 0.00023577, 7.27286237, 0.99882440, 0.99937938, 0.49324527],
+                             [- 6.27324734, -0.00038481, 0.00023574, 7.27286253, 0.99882454, 0.99937945, 0.49324519],
+                             [- 6.27324746, -0.00038476, 0.00023571, 7.27286270, 0.99882469, 0.99937953, 0.49324516],
+                             [- 6.27324757, -0.00038471, 0.00023568, 7.27286286, 0.99882483, 0.99937961, 0.49324513],
+                             [- 6.27324769, -0.00038467, 0.00023565, 7.27286302, 0.99882498, 0.99937968, 0.49324519],
+                             [- 6.27324780, -0.00038462, 0.00023562, 7.27286318, 0.99882513, 0.99937976, 0.49324509],
+                             [- 6.27324792, -0.00038457, 0.00023559, 7.27286335, 0.99882527, 0.99937984, 0.49324532],
+                             [- 6.27324803, -0.00038452, 0.00023556, 7.27286351, 0.99882542, 0.99937992, 0.49324518],
+                             [- 6.27324814, -0.00038447, 0.00023553, 7.27286367, 0.99882556, 0.99937999, 0.49324537],
+                             [- 6.27324826, -0.00038443, 0.00023550, 7.27286383, 0.99882571, 0.99938007, 0.49324536],
+                             [- 6.27324837, -0.00038438, 0.00023547, 7.27286399, 0.99882586, 0.99938015, 0.49324540],
+                             [- 6.27324849, -0.00038433, 0.00023545, 7.27286416, 0.99882600, 0.99938022, 0.49324531],
+                             [- 6.27324860, -0.00038428, 0.00023542, 7.27286432, 0.99882615, 0.99938030, 0.49324544],
+                             [- 6.27324872, -0.00038424, 0.00023539, 7.27286448, 0.99882629, 0.99938038, 0.49324534],
+                             [- 6.27324883, -0.00038419, 0.00023536, 7.27286464, 0.99882644, 0.99938045, 0.49324551],
+                             [- 6.27324894, -0.00038414, 0.00023533, 7.27286480, 0.99882658, 0.99938053, 0.49324541],
+                             [- 6.27324906, -0.00038409, 0.00023530, 7.27286497, 0.99882673, 0.99938061, 0.49324551],
+                             [- 6.27324917, -0.00038405, 0.00023527, 7.27286513, 0.99882688, 0.99938068, 0.49324541],
+                             [- 6.27324929, -0.00038400, 0.00023524, 7.27286529, 0.99882702, 0.99938076, 0.49324543],
+                             [- 6.27324940, -0.00038395, 0.00023521, 7.27286545, 0.99882717, 0.99938084, 0.49324548],
+                             [- 6.27324951, -0.00038390, 0.00023518, 7.27286561, 0.99882731, 0.99938092, 0.49324547],
+                             [- 6.27324963, -0.00038385, 0.00023515, 7.27286577, 0.99882746, 0.99938099, 0.49324552],
+                             [- 6.27324974, -0.00038381, 0.00023512, 7.27286594, 0.99882760, 0.99938107, 0.49324561],
+                             [- 6.27324986, -0.00038376, 0.00023509, 7.27286610, 0.99882775, 0.99938115, 0.49324575],
+                             [- 6.27324997, -0.00038371, 0.00023507, 7.27286626, 0.99882789, 0.99938122, 0.49324555],
+                             [- 6.27325008, -0.00038366, 0.00023504, 7.27286642, 0.99882804, 0.99938130, 0.49324561],
+                             [- 6.27325020, -0.00038362, 0.00023501, 7.27286658, 0.99882818, 0.99938138, 0.49324560],
+                             [- 6.27325031, -0.00038357, 0.00023498, 7.27286674, 0.99882833, 0.99938145, 0.49324567],
+                             [- 6.27325043, -0.00038352, 0.00023495, 7.27286690, 0.99882847, 0.99938153, 0.49324557],
+                             [- 6.27325054, -0.00038347, 0.00023492, 7.27286706, 0.99882862, 0.99938161, 0.49324572],
+                             [- 6.27325065, -0.00038343, 0.00023489, 7.27286723, 0.99882877, 0.99938168, 0.49324570],
+                             [- 6.27325077, -0.00038338, 0.00023486, 7.27286739, 0.99882891, 0.99938176, 0.49324576],
+                             [- 6.27325088, -0.00038333, 0.00023483, 7.27286755, 0.99882906, 0.99938184, 0.49324591],
+                             [- 6.27325099, -0.00038328, 0.00023480, 7.27286771, 0.99882920, 0.99938191, 0.49324569],
+                             [- 6.27325111, -0.00038324, 0.00023477, 7.27286787, 0.99882935, 0.99938199, 0.49324559],
+                             [- 6.27325122, -0.00038319, 0.00023475, 7.27286803, 0.99882949, 0.99938207, 0.49324564],
+                             [- 6.27325133, -0.00038314, 0.00023472, 7.27286819, 0.99882964, 0.99938214, 0.49324576],
+                             [- 6.27325145, -0.00038309, 0.00023469, 7.27286835, 0.99882978, 0.99938222, 0.49324581],
+                             [- 6.27325156, -0.00038305, 0.00023466, 7.27286851, 0.99882993, 0.99938229, 0.49324590],
+                             [- 6.27325168, -0.00038300, 0.00023463, 7.27286868, 0.99883007, 0.99938237, 0.49324573],
+                             [- 6.27325179, -0.00038295, 0.00023460, 7.27286884, 0.99883021, 0.99938245, 0.49324578],
+                             [- 6.27325190, -0.00038291, 0.00023457, 7.27286900, 0.99883036, 0.99938252, 0.49324585],
+                             [- 6.27325202, -0.00038286, 0.00023454, 7.27286916, 0.99883050, 0.99938260, 0.49324579],
+                             [- 6.27325213, -0.00038281, 0.00023451, 7.27286932, 0.99883065, 0.99938268, 0.49324589],
+                             [- 6.27325224, -0.00038276, 0.00023448, 7.27286948, 0.99883079, 0.99938275, 0.49324588],
+                             [- 6.27325236, -0.00038272, 0.00023446, 7.27286964, 0.99883094, 0.99938283, 0.49324586],
+                             [- 6.27325247, -0.00038267, 0.00023443, 7.27286980, 0.99883108, 0.99938291, 0.49324588],
+                             [- 6.27325258, -0.00038262, 0.00023440, 7.27286996, 0.99883123, 0.99938298, 0.49324600],
+                             [- 6.27325269, -0.00038257, 0.00023437, 7.27287012, 0.99883137, 0.99938306, 0.49324602],
+                             [- 6.27325281, -0.00038253, 0.00023434, 7.27287028, 0.99883152, 0.99938313, 0.49324593],
+                             [- 6.27325292, -0.00038248, 0.00023431, 7.27287044, 0.99883166, 0.99938321, 0.49324600],
+                             [- 6.27325303, -0.00038243, 0.00023428, 7.27287060, 0.99883180, 0.99938329, 0.49324594],
+                             [- 6.27325315, -0.00038238, 0.00023425, 7.27287076, 0.99883195, 0.99938336, 0.49324594],
+                             [- 6.27325326, -0.00038234, 0.00023422, 7.27287092, 0.99883209, 0.99938344, 0.49324616],
+                             [- 6.27325337, -0.00038229, 0.00023419, 7.27287108, 0.99883224, 0.99938352, 0.49324609],
+                             [- 6.27325349, -0.00038224, 0.00023417, 7.27287124, 0.99883238, 0.99938359, 0.49324615],
+                             [- 6.27325360, -0.00038220, 0.00023414, 7.27287140, 0.99883253, 0.99938367, 0.49324616],
+                             [- 6.27325371, -0.00038215, 0.00023411, 7.27287156, 0.99883267, 0.99938374, 0.49324616],
+                             [- 6.27325383, -0.00038210, 0.00023408, 7.27287172, 0.99883281, 0.99938382, 0.49324603],
+                             [- 6.27325394, -0.00038205, 0.00023405, 7.27287188, 0.99883296, 0.99938390, 0.49324614],
+                             [- 6.27325405, -0.00038201, 0.00023402, 7.27287204, 0.99883310, 0.99938397, 0.49324629],
+                             [- 6.27325416, -0.00038196, 0.00023399, 7.27287220, 0.99883325, 0.99938405, 0.49324628],
+                             [- 6.27325428, -0.00038191, 0.00023396, 7.27287236, 0.99883339, 0.99938412, 0.49324634],
+                             [- 6.27325439, -0.00038187, 0.00023393, 7.27287252, 0.99883353, 0.99938420, 0.49324618],
+                             [- 6.27325450, -0.00038182, 0.00023391, 7.27287268, 0.99883368, 0.99938428, 0.49324620],
+                             [- 6.27325462, -0.00038177, 0.00023388, 7.27287284, 0.99883382, 0.99938435, 0.49324621],
+                             [- 6.27325473, -0.00038172, 0.00023385, 7.27287300, 0.99883397, 0.99938443, 0.49324620],
+                             [- 6.27325484, -0.00038168, 0.00023382, 7.27287316, 0.99883411, 0.99938450, 0.49324631],
+                             [- 6.27325495, -0.00038163, 0.00023379, 7.27287332, 0.99883425, 0.99938458, 0.49324616],
+                             [- 6.27325507, -0.00038158, 0.00023376, 7.27287348, 0.99883440, 0.99938466, 0.49324629],
+                             [- 6.27325518, -0.00038154, 0.00023373, 7.27287364, 0.99883454, 0.99938473, 0.49324635],
+                             [- 6.27325529, -0.00038149, 0.00023370, 7.27287380, 0.99883469, 0.99938481, 0.49324648],
+                             [- 6.27325540, -0.00038144, 0.00023367, 7.27287396, 0.99883483, 0.99938488, 0.49324638],
+                             [- 6.27325552, -0.00038140, 0.00023365, 7.27287412, 0.99883497, 0.99938496, 0.49324637],
+                             [- 6.27325563, -0.00038135, 0.00023362, 7.27287428, 0.99883512, 0.99938503, 0.49324641],
+                             [- 6.27325574, -0.00038130, 0.00023359, 7.27287444, 0.99883526, 0.99938511, 0.49324645],
+                             [- 6.27325585, -0.00038125, 0.00023356, 7.27287460, 0.99883540, 0.99938519, 0.49324647],
+                             [- 6.27325597, -0.00038121, 0.00023353, 7.27287476, 0.99883555, 0.99938526, 0.49324642],
+                             [- 6.27325608, -0.00038116, 0.00023350, 7.27287492, 0.99883569, 0.99938534, 0.49324651],
+                             [- 6.27325619, -0.00038111, 0.00023347, 7.27287508, 0.99883583, 0.99938541, 0.49324649],
+                             [- 6.27325630, -0.00038107, 0.00023344, 7.27287524, 0.99883598, 0.99938549, 0.49324647],
+                             [- 6.27325642, -0.00038102, 0.00023342, 7.27287540, 0.99883612, 0.99938556, 0.49324658],
+                             [- 6.27325653, -0.00038097, 0.00023339, 7.27287555, 0.99883626, 0.99938564, 0.49324664],
+                             [- 6.27325664, -0.00038093, 0.00023336, 7.27287571, 0.99883641, 0.99938572, 0.49324649],
+                             [- 6.27325675, -0.00038088, 0.00023333, 7.27287587, 0.99883655, 0.99938579, 0.49324658],
+                             [- 6.27325686, -0.00038083, 0.00023330, 7.27287603, 0.99883669, 0.99938587, 0.49324653],
+                             [- 6.27325698, -0.00038079, 0.00023327, 7.27287619, 0.99883684, 0.99938594, 0.49324658],
+                             [- 6.27325709, -0.00038074, 0.00023324, 7.27287635, 0.99883698, 0.99938602, 0.49324649],
+                             [- 6.27325720, -0.00038069, 0.00023321, 7.27287651, 0.99883712, 0.99938609, 0.49324663],
+                             [- 6.27325731, -0.00038065, 0.00023319, 7.27287667, 0.99883727, 0.99938617, 0.49324670],
+                             [- 6.27325742, -0.00038060, 0.00023316, 7.27287683, 0.99883741, 0.99938624, 0.49324665],
+                             [- 6.27325754, -0.00038055, 0.00023313, 7.27287699, 0.99883755, 0.99938632, 0.49324681],
+                             [- 6.27325765, -0.00038050, 0.00023310, 7.27287714, 0.99883769, 0.99938640, 0.49324678],
+                             [- 6.27325776, -0.00038046, 0.00023307, 7.27287730, 0.99883784, 0.99938647, 0.49324668],
+                             [- 6.27325787, -0.00038041, 0.00023304, 7.27287746, 0.99883798, 0.99938655, 0.49324676],
+                             [- 6.27325798, -0.00038036, 0.00023301, 7.27287762, 0.99883812, 0.99938662, 0.49324679],
+                             [- 6.27325810, -0.00038032, 0.00023299, 7.27287778, 0.99883827, 0.99938670, 0.49324680],
+                             [- 6.27325821, -0.00038027, 0.00023296, 7.27287794, 0.99883841, 0.99938677, 0.49324686],
+                             [- 6.27325832, -0.00038022, 0.00023293, 7.27287810, 0.99883855, 0.99938685, 0.49324703],
+                             [- 6.27325843, -0.00038018, 0.00023290, 7.27287825, 0.99883869, 0.99938692, 0.49324683],
+                             [- 6.27325854, -0.00038013, 0.00023287, 7.27287841, 0.99883884, 0.99938700, 0.49324688],
+                             [- 6.27325866, -0.00038008, 0.00023284, 7.27287857, 0.99883898, 0.99938707, 0.49324687],
+                             [- 6.27325877, -0.00038004, 0.00023281, 7.27287873, 0.99883912, 0.99938715, 0.49324692],
+                             [- 6.27325888, -0.00037999, 0.00023279, 7.27287889, 0.99883926, 0.99938722, 0.49324678],
+                             [- 6.27325899, -0.00037994, 0.00023276, 7.27287905, 0.99883941, 0.99938730, 0.49324693],
+                             [- 6.27325910, -0.00037990, 0.00023273, 7.27287920, 0.99883955, 0.99938737, 0.49324693],
+                             [- 6.27325921, -0.00037985, 0.00023270, 7.27287936, 0.99883969, 0.99938745, 0.49324695],
+                             [- 6.27325932, -0.00037980, 0.00023267, 7.27287952, 0.99883983, 0.99938752, 0.49324704],
+                             [- 6.27325944, -0.00037976, 0.00023264, 7.27287968, 0.99883998, 0.99938760, 0.49324699],
+                             [- 6.27325955, -0.00037971, 0.00023261, 7.27287984, 0.99884012, 0.99938768, 0.49324702],
+                             [- 6.27325966, -0.00037966, 0.00023259, 7.27287999, 0.99884026, 0.99938775, 0.49324694],
+                             [- 6.27325977, -0.00037962, 0.00023256, 7.27288015, 0.99884040, 0.99938783, 0.49324708],
+                             [- 6.27325988, -0.00037957, 0.00023253, 7.27288031, 0.99884055, 0.99938790, 0.49324716],
+                             [- 6.27325999, -0.00037953, 0.00023250, 7.27288047, 0.99884069, 0.99938798, 0.49324712],
+                             [- 6.27326011, -0.00037948, 0.00023247, 7.27288063, 0.99884083, 0.99938805, 0.49324715],
+                             [- 6.27326022, -0.00037943, 0.00023244, 7.27288078, 0.99884097, 0.99938813, 0.49324707],
+                             [- 6.27326033, -0.00037939, 0.00023241, 7.27288094, 0.99884111, 0.99938820, 0.49324704],
+                             [- 6.27326044, -0.00037934, 0.00023239, 7.27288110, 0.99884126, 0.99938828, 0.49324718],
+                             [- 6.27326055, -0.00037929, 0.00023236, 7.27288126, 0.99884140, 0.99938835, 0.49324714],
+                             [- 6.27326066, -0.00037925, 0.00023233, 7.27288142, 0.99884154, 0.99938843, 0.49324726],
+                             [- 6.27326077, -0.00037920, 0.00023230, 7.27288157, 0.99884168, 0.99938850, 0.49324702],
+                             [- 6.27326088, -0.00037915, 0.00023227, 7.27288173, 0.99884182, 0.99938858, 0.49324721],
+                             [- 6.27326100, -0.00037911, 0.00023224, 7.27288189, 0.99884197, 0.99938865, 0.49324723],
+                             [- 6.27326111, -0.00037906, 0.00023221, 7.27288205, 0.99884211, 0.99938873, 0.49324718],
+                             [- 6.27326122, -0.00037901, 0.00023219, 7.27288220, 0.99884225, 0.99938880, 0.49324712],
+                             [- 6.27326133, -0.00037897, 0.00023216, 7.27288236, 0.99884239, 0.99938887, 0.49324742],
+                             [- 6.27326144, -0.00037892, 0.00023213, 7.27288252, 0.99884253, 0.99938895, 0.49324731],
+                             [- 6.27326155, -0.00037887, 0.00023210, 7.27288268, 0.99884267, 0.99938902, 0.49324731],
+                             [- 6.27326166, -0.00037883, 0.00023207, 7.27288283, 0.99884282, 0.99938910, 0.49324735],
+                             [- 6.27326177, -0.00037878, 0.00023204, 7.27288299, 0.99884296, 0.99938917, 0.49324724],
+                             [- 6.27326188, -0.00037874, 0.00023202, 7.27288315, 0.99884310, 0.99938925, 0.49324733],
+                             [- 6.27326199, -0.00037869, 0.00023199, 7.27288331, 0.99884324, 0.99938932, 0.49324726],
+                             [- 6.27326211, -0.00037864, 0.00023196, 7.27288346, 0.99884338, 0.99938940, 0.49324734],
+                             [- 6.27326222, -0.00037860, 0.00023193, 7.27288362, 0.99884352, 0.99938947, 0.49324737],
+                             [- 6.27326233, -0.00037855, 0.00023190, 7.27288378, 0.99884367, 0.99938955, 0.49324746],
+                             [- 6.27326244, -0.00037850, 0.00023187, 7.27288393, 0.99884381, 0.99938962, 0.49324742],
+                             [- 6.27326255, -0.00037846, 0.00023185, 7.27288409, 0.99884395, 0.99938970, 0.49324750],
+                             [- 6.27326266, -0.00037841, 0.00023182, 7.27288425, 0.99884409, 0.99938977, 0.49324754],
+                             [- 6.27326277, -0.00037837, 0.00023179, 7.27288441, 0.99884423, 0.99938985, 0.49324741],
+                             [- 6.27326288, -0.00037832, 0.00023176, 7.27288456, 0.99884437, 0.99938992, 0.49324760],
+                             [- 6.27326299, -0.00037827, 0.00023173, 7.27288472, 0.99884451, 0.99939000, 0.49324751],
+                             [- 6.27326310, -0.00037823, 0.00023170, 7.27288488, 0.99884466, 0.99939007, 0.49324747],
+                             [- 6.27326321, -0.00037818, 0.00023168, 7.27288503, 0.99884480, 0.99939014, 0.49324756],
+                             [- 6.27326332, -0.00037813, 0.00023165, 7.27288519, 0.99884494, 0.99939022, 0.49324744],
+                             [- 6.27326343, -0.00037809, 0.00023162, 7.27288535, 0.99884508, 0.99939029, 0.49324765],
+                             [- 6.27326354, -0.00037804, 0.00023159, 7.27288550, 0.99884522, 0.99939037, 0.49324755],
+                             [- 6.27326366, -0.00037800, 0.00023156, 7.27288566, 0.99884536, 0.99939044, 0.49324760],
+                             [- 6.27326377, -0.00037795, 0.00023153, 7.27288582, 0.99884550, 0.99939052, 0.49324764],
+                             [- 6.27326388, -0.00037790, 0.00023151, 7.27288597, 0.99884564, 0.99939059, 0.49324764],
+                             [- 6.27326399, -0.00037786, 0.00023148, 7.27288613, 0.99884578, 0.99939067, 0.49324768],
+                             [- 6.27326410, -0.00037781, 0.00023145, 7.27288629, 0.99884592, 0.99939074, 0.49324772],
+                             [- 6.27326421, -0.00037777, 0.00023142, 7.27288644, 0.99884607, 0.99939081, 0.49324775],
+                             [- 6.27326432, -0.00037772, 0.00023139, 7.27288660, 0.99884621, 0.99939089, 0.49324763],
+                             [- 6.27326443, -0.00037767, 0.00023136, 7.27288676, 0.99884635, 0.99939096, 0.49324773],
+                             [- 6.27326454, -0.00037763, 0.00023134, 7.27288691, 0.99884649, 0.99939104, 0.49324770],
+                             [- 6.27326465, -0.00037758, 0.00023131, 7.27288707, 0.99884663, 0.99939111, 0.49324772],
+                             [- 6.27326476, -0.00037753, 0.00023128, 7.27288722, 0.99884677, 0.99939119, 0.49324778],
+                             [- 6.27326487, -0.00037749, 0.00023125, 7.27288738, 0.99884691, 0.99939126, 0.49324783],
+                             [- 6.27326498, -0.00037744, 0.00023122, 7.27288754, 0.99884705, 0.99939133, 0.49324780],
+                             [- 6.27326509, -0.00037740, 0.00023120, 7.27288769, 0.99884719, 0.99939141, 0.49324776],
+                             [- 6.27326520, -0.00037735, 0.00023117, 7.27288785, 0.99884733, 0.99939148, 0.49324786],
+                             [- 6.27326531, -0.00037730, 0.00023114, 7.27288801, 0.99884747, 0.99939156, 0.49324788],
+                             [- 6.27326542, -0.00037726, 0.00023111, 7.27288816, 0.99884761, 0.99939163, 0.49324776],
+                             [- 6.27326553, -0.00037721, 0.00023108, 7.27288832, 0.99884775, 0.99939171, 0.49324788],
+                             [- 6.27326564, -0.00037717, 0.00023105, 7.27288847, 0.99884789, 0.99939178, 0.49324801],
+                             [- 6.27326575, -0.00037712, 0.00023103, 7.27288863, 0.99884803, 0.99939185, 0.49324790],
+                             [- 6.27326586, -0.00037707, 0.00023100, 7.27288879, 0.99884817, 0.99939193, 0.49324783],
+                             [- 6.27326597, -0.00037703, 0.00023097, 7.27288894, 0.99884831, 0.99939200, 0.49324795],
+                             [- 6.27326608, -0.00037698, 0.00023094, 7.27288910, 0.99884846, 0.99939208, 0.49324808],
+                             [- 6.27326619, -0.00037694, 0.00023091, 7.27288925, 0.99884860, 0.99939215, 0.49324796],
+                             [- 6.27326630, -0.00037689, 0.00023089, 7.27288941, 0.99884874, 0.99939222, 0.49324802],
+                             [- 6.27326641, -0.00037685, 0.00023086, 7.27288956, 0.99884888, 0.99939230, 0.49324786],
+                             [- 6.27326652, -0.00037680, 0.00023083, 7.27288972, 0.99884902, 0.99939237, 0.49324795],
+                             [- 6.27326663, -0.00037675, 0.00023080, 7.27288988, 0.99884916, 0.99939245, 0.49324822],
+                             [- 6.27326674, -0.00037671, 0.00023077, 7.27289003, 0.99884930, 0.99939252, 0.49324803],
+                             [- 6.27326685, -0.00037666, 0.00023074, 7.27289019, 0.99884944, 0.99939259, 0.49324799],
+                             [- 6.27326696, -0.00037662, 0.00023072, 7.27289034, 0.99884958, 0.99939267, 0.49324798],
+                             [- 6.27326707, -0.00037657, 0.00023069, 7.27289050, 0.99884972, 0.99939274, 0.49324802],
+                             [- 6.27326718, -0.00037652, 0.00023066, 7.27289065, 0.99884986, 0.99939282, 0.49324803],
+                             [- 6.27326729, -0.00037648, 0.00023063, 7.27289081, 0.99885000, 0.99939289, 0.49324811],
+                             [- 6.27326740, -0.00037643, 0.00023060, 7.27289096, 0.99885014, 0.99939296, 0.49324817],
+                             [- 6.27326751, -0.00037639, 0.00023058, 7.27289112, 0.99885028, 0.99939304, 0.49324821],
+                             [- 6.27326762, -0.00037634, 0.00023055, 7.27289127, 0.99885042, 0.99939311, 0.49324821],
+                             [- 6.27326773, -0.00037630, 0.00023052, 7.27289143, 0.99885056, 0.99939318, 0.49324827],
+                             [- 6.27326783, -0.00037625, 0.00023049, 7.27289159, 0.99885070, 0.99939326, 0.49324820],
+                             [- 6.27326794, -0.00037620, 0.00023046, 7.27289174, 0.99885084, 0.99939333, 0.49324832],
+                             [- 6.27326805, -0.00037616, 0.00023044, 7.27289190, 0.99885097, 0.99939341, 0.49324834],
+                             [- 6.27326816, -0.00037611, 0.00023041, 7.27289205, 0.99885111, 0.99939348, 0.49324841],
+                             [- 6.27326827, -0.00037607, 0.00023038, 7.27289221, 0.99885125, 0.99939355, 0.49324834],
+                             [- 6.27326838, -0.00037602, 0.00023035, 7.27289236, 0.99885139, 0.99939363, 0.49324834],
+                             [- 6.27326849, -0.00037598, 0.00023032, 7.27289252, 0.99885153, 0.99939370, 0.49324836],
+                             [- 6.27326860, -0.00037593, 0.00023030, 7.27289267, 0.99885167, 0.99939377, 0.49324838],
+                             [- 6.27326871, -0.00037588, 0.00023027, 7.27289283, 0.99885181, 0.99939385, 0.49324843],
+                             [- 6.27326882, -0.00037584, 0.00023024, 7.27289298, 0.99885195, 0.99939392, 0.49324818],
+                             [- 6.27326893, -0.00037579, 0.00023021, 7.27289314, 0.99885209, 0.99939399, 0.49324852],
+                             [- 6.27326904, -0.00037575, 0.00023018, 7.27289329, 0.99885223, 0.99939407, 0.49324850],
+                             [- 6.27326915, -0.00037570, 0.00023016, 7.27289345, 0.99885237, 0.99939414, 0.49324851],
+                             [- 6.27326926, -0.00037566, 0.00023013, 7.27289360, 0.99885251, 0.99939422, 0.49324838],
+                             [- 6.27326937, -0.00037561, 0.00023010, 7.27289375, 0.99885265, 0.99939429, 0.49324847],
+                             [- 6.27326947, -0.00037557, 0.00023007, 7.27289391, 0.99885279, 0.99939436, 0.49324849],
+                             [- 6.27326958, -0.00037552, 0.00023004, 7.27289406, 0.99885293, 0.99939444, 0.49324851],
+                             [- 6.27326969, -0.00037547, 0.00023002, 7.27289422, 0.99885307, 0.99939451, 0.49324844],
+                             [- 6.27326980, -0.00037543, 0.00022999, 7.27289437, 0.99885321, 0.99939458, 0.49324862],
+                             [- 6.27326991, -0.00037538, 0.00022996, 7.27289453, 0.99885334, 0.99939466, 0.49324845],
+                             [- 6.27327002, -0.00037534, 0.00022993, 7.27289468, 0.99885348, 0.99939473, 0.49324866],
+                             [- 6.27327013, -0.00037529, 0.00022991, 7.27289484, 0.99885362, 0.99939480, 0.49324850],
+                             [- 6.27327024, -0.00037525, 0.00022988, 7.27289499, 0.99885376, 0.99939488, 0.49324874],
+                             [- 6.27327035, -0.00037520, 0.00022985, 7.27289514, 0.99885390, 0.99939495, 0.49324863],
+                             [- 6.27327045, -0.00037516, 0.00022982, 7.27289530, 0.99885404, 0.99939502, 0.49324861],
+                             [- 6.27327056, -0.00037511, 0.00022979, 7.27289545, 0.99885418, 0.99939510, 0.49324863],
+                             [- 6.27327067, -0.00037506, 0.00022977, 7.27289561, 0.99885432, 0.99939517, 0.49324878],
+                             [- 6.27327078, -0.00037502, 0.00022974, 7.27289576, 0.99885446, 0.99939524, 0.49324852],
+                             [- 6.27327089, -0.00037497, 0.00022971, 7.27289592, 0.99885459, 0.99939532, 0.49324868],
+                             [- 6.27327100, -0.00037493, 0.00022968, 7.27289607, 0.99885473, 0.99939539, 0.49324870],
+                             [- 6.27327111, -0.00037488, 0.00022965, 7.27289622, 0.99885487, 0.99939546, 0.49324867],
+                             [- 6.27327122, -0.00037484, 0.00022963, 7.27289638, 0.99885501, 0.99939554, 0.49324861],
+                             [- 6.27327132, -0.00037479, 0.00022960, 7.27289653, 0.99885515, 0.99939561, 0.49324879],
+                             [- 6.27327143, -0.00037475, 0.00022957, 7.27289669, 0.99885529, 0.99939568, 0.49324878],
+                             [- 6.27327154, -0.00037470, 0.00022954, 7.27289684, 0.99885543, 0.99939576, 0.49324873],
+                             [- 6.27327165, -0.00037466, 0.00022952, 7.27289699, 0.99885557, 0.99939583, 0.49324877],
+                             [- 6.27327176, -0.00037461, 0.00022949, 7.27289715, 0.99885570, 0.99939590, 0.49324893],
+                             [- 6.27327187, -0.00037457, 0.00022946, 7.27289730, 0.99885584, 0.99939597, 0.49324876],
+                             [- 6.27327198, -0.00037452, 0.00022943, 7.27289746, 0.99885598, 0.99939605, 0.49324876],
+                             [- 6.27327208, -0.00037447, 0.00022940, 7.27289761, 0.99885612, 0.99939612, 0.49324883],
+                             [- 6.27327219, -0.00037443, 0.00022938, 7.27289776, 0.99885626, 0.99939619, 0.49324897],
+                             [- 6.27327230, -0.00037438, 0.00022935, 7.27289792, 0.99885640, 0.99939627, 0.49324903],
+                             [- 6.27327241, -0.00037434, 0.00022932, 7.27289807, 0.99885653, 0.99939634, 0.49324897],
+                             [- 6.27327252, -0.00037429, 0.00022929, 7.27289822, 0.99885667, 0.99939641, 0.49324915],
+                             [- 6.27327263, -0.00037425, 0.00022927, 7.27289838, 0.99885681, 0.99939649, 0.49324899],
+                             [- 6.27327273, -0.00037420, 0.00022924, 7.27289853, 0.99885695, 0.99939656, 0.49324895],
+                             [- 6.27327284, -0.00037416, 0.00022921, 7.27289869, 0.99885709, 0.99939663, 0.49324901],
+                             [- 6.27327295, -0.00037411, 0.00022918, 7.27289884, 0.99885723, 0.99939671, 0.49324899],
+                             [- 6.27327306, -0.00037407, 0.00022915, 7.27289899, 0.99885736, 0.99939678, 0.49324910],
+                             [- 6.27327317, -0.00037402, 0.00022913, 7.27289915, 0.99885750, 0.99939685, 0.49324893],
+                             [- 6.27327328, -0.00037398, 0.00022910, 7.27289930, 0.99885764, 0.99939692, 0.49324897],
+                             [- 6.27327338, -0.00037393, 0.00022907, 7.27289945, 0.99885778, 0.99939700, 0.49324903],
+                             [- 6.27327349, -0.00037389, 0.00022904, 7.27289961, 0.99885792, 0.99939707, 0.49324907],
+                             [- 6.27327360, -0.00037384, 0.00022902, 7.27289976, 0.99885805, 0.99939714, 0.49324912],
+                             [- 6.27327371, -0.00037380, 0.00022899, 7.27289991, 0.99885819, 0.99939722, 0.49324911],
+                             [- 6.27327382, -0.00037375, 0.00022896, 7.27290007, 0.99885833, 0.99939729, 0.49324918],
+                             [- 6.27327392, -0.00037371, 0.00022893, 7.27290022, 0.99885847, 0.99939736, 0.49324911],
+                             [- 6.27327403, -0.00037366, 0.00022891, 7.27290037, 0.99885861, 0.99939743, 0.49324922],
+                             [- 6.27327414, -0.00037362, 0.00022888, 7.27290052, 0.99885874, 0.99939751, 0.49324912],
+                             [- 6.27327425, -0.00037357, 0.00022885, 7.27290068, 0.99885888, 0.99939758, 0.49324914],
+                             [- 6.27327436, -0.00037353, 0.00022882, 7.27290083, 0.99885902, 0.99939765, 0.49324919],
+                             [- 6.27327446, -0.00037348, 0.00022880, 7.27290098, 0.99885916, 0.99939772, 0.49324915],
+                             [- 6.27327457, -0.00037344, 0.00022877, 7.27290114, 0.99885929, 0.99939780, 0.49324920],
+                             [- 6.27327468, -0.00037339, 0.00022874, 7.27290129, 0.99885943, 0.99939787, 0.49324914],
+                             [- 6.27327479, -0.00037335, 0.00022871, 7.27290144, 0.99885957, 0.99939794, 0.49324927],
+                             [- 6.27327490, -0.00037330, 0.00022868, 7.27290160, 0.99885971, 0.99939801, 0.49324924],
+                             [- 6.27327500, -0.00037326, 0.00022866, 7.27290175, 0.99885984, 0.99939809, 0.49324926],
+                             [- 6.27327511, -0.00037321, 0.00022863, 7.27290190, 0.99885998, 0.99939816, 0.49324920],
+                             [- 6.27327522, -0.00037317, 0.00022860, 7.27290205, 0.99886012, 0.99939823, 0.49324932],
+                             [- 6.27327533, -0.00037312, 0.00022857, 7.27290221, 0.99886026, 0.99939831, 0.49324939],
+                             [- 6.27327543, -0.00037308, 0.00022855, 7.27290236, 0.99886039, 0.99939838, 0.49324946],
+                             [- 6.27327554, -0.00037303, 0.00022852, 7.27290251, 0.99886053, 0.99939845, 0.49324935],
+                             [- 6.27327565, -0.00037299, 0.00022849, 7.27290266, 0.99886067, 0.99939852, 0.49324930],
+                             [- 6.27327576, -0.00037294, 0.00022846, 7.27290282, 0.99886081, 0.99939860, 0.49324950],
+                             [- 6.27327586, -0.00037290, 0.00022844, 7.27290297, 0.99886094, 0.99939867, 0.49324938],
+                             [- 6.27327597, -0.00037285, 0.00022841, 7.27290312, 0.99886108, 0.99939874, 0.49324942],
+                             [- 6.27327608, -0.00037281, 0.00022838, 7.27290327, 0.99886122, 0.99939881, 0.49324944],
+                             [- 6.27327619, -0.00037276, 0.00022835, 7.27290343, 0.99886136, 0.99939888, 0.49324942],
+                             [- 6.27327629, -0.00037272, 0.00022833, 7.27290358, 0.99886149, 0.99939896, 0.49324940],
+                             [- 6.27327640, -0.00037267, 0.00022830, 7.27290373, 0.99886163, 0.99939903, 0.49324954],
+                             [- 6.27327651, -0.00037263, 0.00022827, 7.27290388, 0.99886177, 0.99939910, 0.49324936],
+                             [- 6.27327662, -0.00037258, 0.00022824, 7.27290404, 0.99886190, 0.99939917, 0.49324945],
+                             [- 6.27327672, -0.00037254, 0.00022822, 7.27290419, 0.99886204, 0.99939925, 0.49324953],
+                             [- 6.27327683, -0.00037249, 0.00022819, 7.27290434, 0.99886218, 0.99939932, 0.49324957],
+                             [- 6.27327694, -0.00037245, 0.00022816, 7.27290449, 0.99886231, 0.99939939, 0.49324952],
+                             [- 6.27327705, -0.00037240, 0.00022813, 7.27290464, 0.99886245, 0.99939946, 0.49324959],
+                             [- 6.27327715, -0.00037236, 0.00022811, 7.27290480, 0.99886259, 0.99939954, 0.49324957],
+                             [- 6.27327726, -0.00037231, 0.00022808, 7.27290495, 0.99886273, 0.99939961, 0.49324964],
+                             [- 6.27327737, -0.00037227, 0.00022805, 7.27290510, 0.99886286, 0.99939968, 0.49324963],
+                             [- 6.27327747, -0.00037222, 0.00022802, 7.27290525, 0.99886300, 0.99939975, 0.49324974],
+                             [- 6.27327758, -0.00037218, 0.00022800, 7.27290540, 0.99886314, 0.99939982, 0.49324966],
+                             [- 6.27327769, -0.00037213, 0.00022797, 7.27290556, 0.99886327, 0.99939990, 0.49324952],
+                             [- 6.27327780, -0.00037209, 0.00022794, 7.27290571, 0.99886341, 0.99939997, 0.49324969],
+                             [- 6.27327790, -0.00037204, 0.00022791, 7.27290586, 0.99886355, 0.99940004, 0.49324970],
+                             [- 6.27327801, -0.00037200, 0.00022789, 7.27290601, 0.99886368, 0.99940011, 0.49324976],
+                             [- 6.27327812, -0.00037195, 0.00022786, 7.27290616, 0.99886382, 0.99940019, 0.49324984],
+                             [- 6.27327822, -0.00037191, 0.00022783, 7.27290631, 0.99886396, 0.99940026, 0.49324963],
+                             [- 6.27327833, -0.00037187, 0.00022781, 7.27290647, 0.99886409, 0.99940033, 0.49324968],
+                             [- 6.27327844, -0.00037182, 0.00022778, 7.27290662, 0.99886423, 0.99940040, 0.49324978],
+                             [- 6.27327855, -0.00037178, 0.00022775, 7.27290677, 0.99886436, 0.99940047, 0.49324985],
+                             [- 6.27327865, -0.00037173, 0.00022772, 7.27290692, 0.99886450, 0.99940055, 0.49325000],
+                             [- 6.27327876, -0.00037169, 0.00022770, 7.27290707, 0.99886464, 0.99940062, 0.49324984],
+                             [- 6.27327887, -0.00037164, 0.00022767, 7.27290722, 0.99886477, 0.99940069, 0.49324982],
+                             [- 6.27327897, -0.00037160, 0.00022764, 7.27290737, 0.99886491, 0.99940076, 0.49324988],
+                             [- 6.27327908, -0.00037155, 0.00022761, 7.27290753, 0.99886505, 0.99940083, 0.49325015],
+                             [- 6.27327919, -0.00037151, 0.00022759, 7.27290768, 0.99886518, 0.99940091, 0.49324977],
+                             [- 6.27327929, -0.00037146, 0.00022756, 7.27290783, 0.99886532, 0.99940098, 0.49324993],
+                             [- 6.27327940, -0.00037142, 0.00022753, 7.27290798, 0.99886546, 0.99940105, 0.49325002],
+                             [- 6.27327951, -0.00037137, 0.00022750, 7.27290813, 0.99886559, 0.99940112, 0.49324999],
+                             [- 6.27327961, -0.00037133, 0.00022748, 7.27290828, 0.99886573, 0.99940119, 0.49325000],
+                             [- 6.27327972, -0.00037129, 0.00022745, 7.27290843, 0.99886586, 0.99940126, 0.49325006],
+                             [- 6.27327983, -0.00037124, 0.00022742, 7.27290858, 0.99886600, 0.99940134, 0.49324994],
+                             [- 6.27327993, -0.00037120, 0.00022740, 7.27290874, 0.99886614, 0.99940141, 0.49324986],
+                             [- 6.27328004, -0.00037115, 0.00022737, 7.27290889, 0.99886627, 0.99940148, 0.49325009],
+                             [- 6.27328015, -0.00037111, 0.00022734, 7.27290904, 0.99886641, 0.99940155, 0.49325012],
+                             [- 6.27328025, -0.00037106, 0.00022731, 7.27290919, 0.99886654, 0.99940162, 0.49325015],
+                             [- 6.27328036, -0.00037102, 0.00022729, 7.27290934, 0.99886668, 0.99940170, 0.49325010],
+                             [- 6.27328047, -0.00037097, 0.00022726, 7.27290949, 0.99886682, 0.99940177, 0.49325020],
+                             [- 6.27328057, -0.00037093, 0.00022723, 7.27290964, 0.99886695, 0.99940184, 0.49325004],
+                             [- 6.27328068, -0.00037089, 0.00022720, 7.27290979, 0.99886709, 0.99940191, 0.49325014],
+                             [- 6.27328078, -0.00037084, 0.00022718, 7.27290994, 0.99886722, 0.99940198, 0.49325025],
+                             [- 6.27328089, -0.00037080, 0.00022715, 7.27291009, 0.99886736, 0.99940205, 0.49325008],
+                             [- 6.27328100, -0.00037075, 0.00022712, 7.27291024, 0.99886749, 0.99940213, 0.49325032],
+                             [- 6.27328110, -0.00037071, 0.00022710, 7.27291040, 0.99886763, 0.99940220, 0.49325016],
+                             [- 6.27328121, -0.00037066, 0.00022707, 7.27291055, 0.99886777, 0.99940227, 0.49325010],
+                             [- 6.27328132, -0.00037062, 0.00022704, 7.27291070, 0.99886790, 0.99940234, 0.49325006],
+                             [- 6.27328142, -0.00037057, 0.00022701, 7.27291085, 0.99886804, 0.99940241, 0.49325022],
+                             [- 6.27328153, -0.00037053, 0.00022699, 7.27291100, 0.99886817, 0.99940248, 0.49325031],
+                             [- 6.27328163, -0.00037049, 0.00022696, 7.27291115, 0.99886831, 0.99940255, 0.49325037],
+                             [- 6.27328174, -0.00037044, 0.00022693, 7.27291130, 0.99886844, 0.99940263, 0.49325027],
+                             [- 6.27328185, -0.00037040, 0.00022691, 7.27291145, 0.99886858, 0.99940270, 0.49325034],
+                             [- 6.27328195, -0.00037035, 0.00022688, 7.27291160, 0.99886871, 0.99940277, 0.49325020],
+                             [- 6.27328206, -0.00037031, 0.00022685, 7.27291175, 0.99886885, 0.99940284, 0.49325035],
+                             [- 6.27328217, -0.00037026, 0.00022682, 7.27291190, 0.99886898, 0.99940291, 0.49325022],
+                             [- 6.27328227, -0.00037022, 0.00022680, 7.27291205, 0.99886912, 0.99940298, 0.49325038],
+                             [- 6.27328238, -0.00037018, 0.00022677, 7.27291220, 0.99886926, 0.99940305, 0.49325045],
+                             [- 6.27328248, -0.00037013, 0.00022674, 7.27291235, 0.99886939, 0.99940313, 0.49325055],
+                             [- 6.27328259, -0.00037009, 0.00022672, 7.27291250, 0.99886953, 0.99940320, 0.49325042],
+                             [- 6.27328269, -0.00037004, 0.00022669, 7.27291265, 0.99886966, 0.99940327, 0.49325036],
+                             [- 6.27328280, -0.00037000, 0.00022666, 7.27291280, 0.99886980, 0.99940334, 0.49325057],
+                             [- 6.27328291, -0.00036995, 0.00022663, 7.27291295, 0.99886993, 0.99940341, 0.49325047],
+                             [- 6.27328301, -0.00036991, 0.00022661, 7.27291310, 0.99887007, 0.99940348, 0.49325050],
+                             [- 6.27328312, -0.00036987, 0.00022658, 7.27291325, 0.99887020, 0.99940355, 0.49325044],
+                             [- 6.27328322, -0.00036982, 0.00022655, 7.27291340, 0.99887034, 0.99940363, 0.49325060],
+                             [- 6.27328333, -0.00036978, 0.00022653, 7.27291355, 0.99887047, 0.99940370, 0.49325046],
+                             [- 6.27328344, -0.00036973, 0.00022650, 7.27291370, 0.99887061, 0.99940377, 0.49325049],
+                             [- 6.27328354, -0.00036969, 0.00022647, 7.27291385, 0.99887074, 0.99940384, 0.49325054],
+                             [- 6.27328365, -0.00036965, 0.00022644, 7.27291400, 0.99887088, 0.99940391, 0.49325051],
+                             [- 6.27328375, -0.00036960, 0.00022642, 7.27291415, 0.99887101, 0.99940398, 0.49325068],
+                             [- 6.27328386, -0.00036956, 0.00022639, 7.27291430, 0.99887115, 0.99940405, 0.49325059],
+                             [- 6.27328396, -0.00036951, 0.00022636, 7.27291445, 0.99887128, 0.99940412, 0.49325082],
+                             [- 6.27328407, -0.00036947, 0.00022634, 7.27291460, 0.99887142, 0.99940419, 0.49325077],
+                             [- 6.27328418, -0.00036942, 0.00022631, 7.27291475, 0.99887155, 0.99940427, 0.49325076],
+                             [- 6.27328428, -0.00036938, 0.00022628, 7.27291490, 0.99887168, 0.99940434, 0.49325073],
+                             [- 6.27328439, -0.00036934, 0.00022626, 7.27291505, 0.99887182, 0.99940441, 0.49325073],
+                             [- 6.27328449, -0.00036929, 0.00022623, 7.27291520, 0.99887195, 0.99940448, 0.49325059],
+                             [- 6.27328460, -0.00036925, 0.00022620, 7.27291535, 0.99887209, 0.99940455, 0.49325071],
+                             [- 6.27328470, -0.00036920, 0.00022617, 7.27291550, 0.99887222, 0.99940462, 0.49325075],
+                             [- 6.27328481, -0.00036916, 0.00022615, 7.27291565, 0.99887236, 0.99940469, 0.49325074],
+                             [- 6.27328491, -0.00036912, 0.00022612, 7.27291580, 0.99887249, 0.99940476, 0.49325076],
+                             [- 6.27328502, -0.00036907, 0.00022609, 7.27291595, 0.99887263, 0.99940483, 0.49325069],
+                             [- 6.27328512, -0.00036903, 0.00022607, 7.27291610, 0.99887276, 0.99940491, 0.49325089],
+                             [- 6.27328523, -0.00036898, 0.00022604, 7.27291624, 0.99887290, 0.99940498, 0.49325087],
+                             [- 6.27328533, -0.00036894, 0.00022601, 7.27291639, 0.99887303, 0.99940505, 0.49325089],
+                             [- 6.27328544, -0.00036890, 0.00022599, 7.27291654, 0.99887316, 0.99940512, 0.49325087],
+                             [- 6.27328555, -0.00036885, 0.00022596, 7.27291669, 0.99887330, 0.99940519, 0.49325085],
+                             [- 6.27328565, -0.00036881, 0.00022593, 7.27291684, 0.99887343, 0.99940526, 0.49325080],
+                             [- 6.27328576, -0.00036876, 0.00022590, 7.27291699, 0.99887357, 0.99940533, 0.49325071],
+                             [- 6.27328586, -0.00036872, 0.00022588, 7.27291714, 0.99887370, 0.99940540, 0.49325095],
+                             [- 6.27328597, -0.00036868, 0.00022585, 7.27291729, 0.99887384, 0.99940547, 0.49325080],
+                             [- 6.27328607, -0.00036863, 0.00022582, 7.27291744, 0.99887397, 0.99940554, 0.49325088],
+                             [- 6.27328618, -0.00036859, 0.00022580, 7.27291759, 0.99887410, 0.99940561, 0.49325100],
+                             [- 6.27328628, -0.00036855, 0.00022577, 7.27291774, 0.99887424, 0.99940568, 0.49325106],
+                             [- 6.27328639, -0.00036850, 0.00022574, 7.27291789, 0.99887437, 0.99940576, 0.49325085],
+                             [- 6.27328649, -0.00036846, 0.00022572, 7.27291803, 0.99887451, 0.99940583, 0.49325087],
+                             [- 6.27328660, -0.00036841, 0.00022569, 7.27291818, 0.99887464, 0.99940590, 0.49325084],
+                             [- 6.27328670, -0.00036837, 0.00022566, 7.27291833, 0.99887477, 0.99940597, 0.49325118],
+                             [- 6.27328681, -0.00036833, 0.00022564, 7.27291848, 0.99887491, 0.99940604, 0.49325112],
+                             [- 6.27328691, -0.00036828, 0.00022561, 7.27291863, 0.99887504, 0.99940611, 0.49325104],
+                             [- 6.27328702, -0.00036824, 0.00022558, 7.27291878, 0.99887518, 0.99940618, 0.49325104],
+                             [- 6.27328712, -0.00036819, 0.00022556, 7.27291893, 0.99887531, 0.99940625, 0.49325116],
+                             [- 6.27328723, -0.00036815, 0.00022553, 7.27291907, 0.99887544, 0.99940632, 0.49325111],
+                             [- 6.27328733, -0.00036811, 0.00022550, 7.27291922, 0.99887558, 0.99940639, 0.49325116],
+                             [- 6.27328744, -0.00036806, 0.00022547, 7.27291937, 0.99887571, 0.99940646, 0.49325108],
+                             [- 6.27328754, -0.00036802, 0.00022545, 7.27291952, 0.99887584, 0.99940653, 0.49325111],
+                             [- 6.27328764, -0.00036798, 0.00022542, 7.27291967, 0.99887598, 0.99940660, 0.49325113],
+                             [- 6.27328775, -0.00036793, 0.00022539, 7.27291982, 0.99887611, 0.99940667, 0.49325130],
+                             [- 6.27328785, -0.00036789, 0.00022537, 7.27291997, 0.99887625, 0.99940674, 0.49325114],
+                             [- 6.27328796, -0.00036784, 0.00022534, 7.27292011, 0.99887638, 0.99940681, 0.49325125],
+                             [- 6.27328806, -0.00036780, 0.00022531, 7.27292026, 0.99887651, 0.99940689, 0.49325120],
+                             [- 6.27328817, -0.00036776, 0.00022529, 7.27292041, 0.99887665, 0.99940696, 0.49325118],
+                             [- 6.27328827, -0.00036771, 0.00022526, 7.27292056, 0.99887678, 0.99940703, 0.49325120],
+                             [- 6.27328838, -0.00036767, 0.00022523, 7.27292071, 0.99887691, 0.99940710, 0.49325135],
+                             [- 6.27328848, -0.00036763, 0.00022521, 7.27292086, 0.99887705, 0.99940717, 0.49325134],
+                             [- 6.27328859, -0.00036758, 0.00022518, 7.27292100, 0.99887718, 0.99940724, 0.49325139],
+                             [- 6.27328869, -0.00036754, 0.00022515, 7.27292115, 0.99887731, 0.99940731, 0.49325135],
+                             [- 6.27328880, -0.00036749, 0.00022513, 7.27292130, 0.99887745, 0.99940738, 0.49325126],
+                             [- 6.27328890, -0.00036745, 0.00022510, 7.27292145, 0.99887758, 0.99940745, 0.49325131],
+                             [- 6.27328900, -0.00036741, 0.00022507, 7.27292160, 0.99887771, 0.99940752, 0.49325136],
+                             [- 6.27328911, -0.00036736, 0.00022505, 7.27292174, 0.99887785, 0.99940759, 0.49325152],
+                             [- 6.27328921, -0.00036732, 0.00022502, 7.27292189, 0.99887798, 0.99940766, 0.49325159],
+                             [- 6.27328932, -0.00036728, 0.00022499, 7.27292204, 0.99887811, 0.99940773, 0.49325140],
+                             [- 6.27328942, -0.00036723, 0.00022497, 7.27292219, 0.99887825, 0.99940780, 0.49325141],
+                             [- 6.27328953, -0.00036719, 0.00022494, 7.27292234, 0.99887838, 0.99940787, 0.49325131],
+                             [- 6.27328963, -0.00036715, 0.00022491, 7.27292248, 0.99887851, 0.99940794, 0.49325145],
+                             [- 6.27328973, -0.00036710, 0.00022489, 7.27292263, 0.99887864, 0.99940801, 0.49325145],
+                             [- 6.27328984, -0.00036706, 0.00022486, 7.27292278, 0.99887878, 0.99940808, 0.49325157],
+                             [- 6.27328994, -0.00036702, 0.00022483, 7.27292293, 0.99887891, 0.99940815, 0.49325149],
+                             [- 6.27329005, -0.00036697, 0.00022481, 7.27292307, 0.99887904, 0.99940822, 0.49325164],
+                             [- 6.27329015, -0.00036693, 0.00022478, 7.27292322, 0.99887918, 0.99940829, 0.49325155],
+                             [- 6.27329025, -0.00036689, 0.00022475, 7.27292337, 0.99887931, 0.99940836, 0.49325164],
+                             [- 6.27329036, -0.00036684, 0.00022473, 7.27292352, 0.99887944, 0.99940843, 0.49325151],
+                             [- 6.27329046, -0.00036680, 0.00022470, 7.27292366, 0.99887958, 0.99940850, 0.49325168],
+                             [- 6.27329057, -0.00036675, 0.00022467, 7.27292381, 0.99887971, 0.99940857, 0.49325138],
+                             [- 6.27329067, -0.00036671, 0.00022465, 7.27292396, 0.99887984, 0.99940864, 0.49325171],
+                             [- 6.27329078, -0.00036667, 0.00022462, 7.27292411, 0.99887997, 0.99940871, 0.49325159],
+                             [- 6.27329088, -0.00036662, 0.00022459, 7.27292425, 0.99888011, 0.99940878, 0.49325160],
+                             [- 6.27329098, -0.00036658, 0.00022457, 7.27292440, 0.99888024, 0.99940885, 0.49325177],
+                             [- 6.27329109, -0.00036654, 0.00022454, 7.27292455, 0.99888037, 0.99940892, 0.49325177],
+                             [- 6.27329119, -0.00036649, 0.00022451, 7.27292470, 0.99888050, 0.99940899, 0.49325164],
+                             [- 6.27329129, -0.00036645, 0.00022449, 7.27292484, 0.99888064, 0.99940906, 0.49325172],
+                             [- 6.27329140, -0.00036641, 0.00022446, 7.27292499, 0.99888077, 0.99940913, 0.49325179],
+                             [- 6.27329150, -0.00036636, 0.00022443, 7.27292514, 0.99888090, 0.99940920, 0.49325181],
+                             [- 6.27329161, -0.00036632, 0.00022441, 7.27292529, 0.99888103, 0.99940927, 0.49325178],
+                             [- 6.27329171, -0.00036628, 0.00022438, 7.27292543, 0.99888117, 0.99940934, 0.49325178],
+                             [- 6.27329181, -0.00036623, 0.00022435, 7.27292558, 0.99888130, 0.99940941, 0.49325183],
+                             [- 6.27329192, -0.00036619, 0.00022433, 7.27292573, 0.99888143, 0.99940948, 0.49325179],
+                             [- 6.27329202, -0.00036615, 0.00022430, 7.27292587, 0.99888156, 0.99940955, 0.49325183],
+                             [- 6.27329212, -0.00036610, 0.00022427, 7.27292602, 0.99888170, 0.99940962, 0.49325178],
+                             [- 6.27329223, -0.00036606, 0.00022425, 7.27292617, 0.99888183, 0.99940969, 0.49325167],
+                             [- 6.27329233, -0.00036602, 0.00022422, 7.27292631, 0.99888196, 0.99940976, 0.49325180],
+                             [- 6.27329244, -0.00036597, 0.00022419, 7.27292646, 0.99888209, 0.99940983, 0.49325201],
+                             [- 6.27329254, -0.00036593, 0.00022417, 7.27292661, 0.99888222, 0.99940990, 0.49325190],
+                             [- 6.27329264, -0.00036589, 0.00022414, 7.27292675, 0.99888236, 0.99940997, 0.49325201],
+                             [- 6.27329275, -0.00036584, 0.00022412, 7.27292690, 0.99888249, 0.99941004, 0.49325203],
+                             [- 6.27329285, -0.00036580, 0.00022409, 7.27292705, 0.99888262, 0.99941011, 0.49325195],
+                             [- 6.27329295, -0.00036576, 0.00022406, 7.27292720, 0.99888275, 0.99941018, 0.49325194],
+                             [- 6.27329306, -0.00036571, 0.00022404, 7.27292734, 0.99888289, 0.99941025, 0.49325187],
+                             [- 6.27329316, -0.00036567, 0.00022401, 7.27292749, 0.99888302, 0.99941032, 0.49325203],
+                             [- 6.27329326, -0.00036563, 0.00022398, 7.27292764, 0.99888315, 0.99941039, 0.49325193],
+                             [- 6.27329337, -0.00036559, 0.00022396, 7.27292778, 0.99888328, 0.99941046, 0.49325192],
+                             [- 6.27329347, -0.00036554, 0.00022393, 7.27292793, 0.99888341, 0.99941053, 0.49325212],
+                             [- 6.27329357, -0.00036550, 0.00022390, 7.27292807, 0.99888355, 0.99941060, 0.49325192],
+                             [- 6.27329368, -0.00036546, 0.00022388, 7.27292822, 0.99888368, 0.99941067, 0.49325204],
+                             [- 6.27329378, -0.00036541, 0.00022385, 7.27292837, 0.99888381, 0.99941074, 0.49325210],
+                             [- 6.27329388, -0.00036537, 0.00022382, 7.27292851, 0.99888394, 0.99941081, 0.49325200],
+                             [- 6.27329399, -0.00036533, 0.00022380, 7.27292866, 0.99888407, 0.99941088, 0.49325216],
+                             [- 6.27329409, -0.00036528, 0.00022377, 7.27292881, 0.99888420, 0.99941095, 0.49325212],
+                             [- 6.27329419, -0.00036524, 0.00022374, 7.27292895, 0.99888434, 0.99941102, 0.49325214],
+                             [- 6.27329430, -0.00036520, 0.00022372, 7.27292910, 0.99888447, 0.99941108, 0.49325208],
+                             [- 6.27329440, -0.00036515, 0.00022369, 7.27292925, 0.99888460, 0.99941115, 0.49325230],
+                             [- 6.27329450, -0.00036511, 0.00022367, 7.27292939, 0.99888473, 0.99941122, 0.49325225],
+                             [- 6.27329461, -0.00036507, 0.00022364, 7.27292954, 0.99888486, 0.99941129, 0.49325212],
+                             [- 6.27329471, -0.00036502, 0.00022361, 7.27292968, 0.99888499, 0.99941136, 0.49325221],
+                             [- 6.27329481, -0.00036498, 0.00022359, 7.27292983, 0.99888513, 0.99941143, 0.49325215],
+                             [- 6.27329491, -0.00036494, 0.00022356, 7.27292998, 0.99888526, 0.99941150, 0.49325228],
+                             [- 6.27329502, -0.00036490, 0.00022353, 7.27293012, 0.99888539, 0.99941157, 0.49325236],
+                             [- 6.27329512, -0.00036485, 0.00022351, 7.27293027, 0.99888552, 0.99941164, 0.49325238],
+                             [- 6.27329522, -0.00036481, 0.00022348, 7.27293041, 0.99888565, 0.99941171, 0.49325230],
+                             [- 6.27329533, -0.00036477, 0.00022345, 7.27293056, 0.99888578, 0.99941178, 0.49325233],
+                             [- 6.27329543, -0.00036472, 0.00022343, 7.27293071, 0.99888591, 0.99941185, 0.49325243],
+                             [- 6.27329553, -0.00036468, 0.00022340, 7.27293085, 0.99888605, 0.99941192, 0.49325248],
+                             [- 6.27329564, -0.00036464, 0.00022338, 7.27293100, 0.99888618, 0.99941199, 0.49325226],
+                             [- 6.27329574, -0.00036460, 0.00022335, 7.27293114, 0.99888631, 0.99941206, 0.49325247],
+                             [- 6.27329584, -0.00036455, 0.00022332, 7.27293129, 0.99888644, 0.99941213, 0.49325235],
+                             [- 6.27329594, -0.00036451, 0.00022330, 7.27293143, 0.99888657, 0.99941219, 0.49325238],
+                             [- 6.27329605, -0.00036447, 0.00022327, 7.27293158, 0.99888670, 0.99941226, 0.49325236],
+                             [- 6.27329615, -0.00036442, 0.00022324, 7.27293173, 0.99888683, 0.99941233, 0.49325251],
+                             [- 6.27329625, -0.00036438, 0.00022322, 7.27293187, 0.99888696, 0.99941240, 0.49325244],
+                             [- 6.27329635, -0.00036434, 0.00022319, 7.27293202, 0.99888709, 0.99941247, 0.49325243],
+                             [- 6.27329646, -0.00036429, 0.00022317, 7.27293216, 0.99888723, 0.99941254, 0.49325235],
+                             [- 6.27329656, -0.00036425, 0.00022314, 7.27293231, 0.99888736, 0.99941261, 0.49325265],
+                             [- 6.27329666, -0.00036421, 0.00022311, 7.27293245, 0.99888749, 0.99941268, 0.49325266],
+                             [- 6.27329677, -0.00036417, 0.00022309, 7.27293260, 0.99888762, 0.99941275, 0.49325241],
+                             [- 6.27329687, -0.00036412, 0.00022306, 7.27293274, 0.99888775, 0.99941282, 0.49325251],
+                             [- 6.27329697, -0.00036408, 0.00022303, 7.27293289, 0.99888788, 0.99941289, 0.49325244],
+                             [- 6.27329707, -0.00036404, 0.00022301, 7.27293304, 0.99888801, 0.99941295, 0.49325256],
+                             [- 6.27329718, -0.00036399, 0.00022298, 7.27293318, 0.99888814, 0.99941302, 0.49325261],
+                             [- 6.27329728, -0.00036395, 0.00022296, 7.27293333, 0.99888827, 0.99941309, 0.49325262],
+                             [- 6.27329738, -0.00036391, 0.00022293, 7.27293347, 0.99888840, 0.99941316, 0.49325272],
+                             [- 6.27329748, -0.00036387, 0.00022290, 7.27293362, 0.99888853, 0.99941323, 0.49325264],
+                             [- 6.27329758, -0.00036382, 0.00022288, 7.27293376, 0.99888866, 0.99941330, 0.49325271],
+                             [- 6.27329769, -0.00036378, 0.00022285, 7.27293391, 0.99888879, 0.99941337, 0.49325250],
+                             [- 6.27329779, -0.00036374, 0.00022282, 7.27293405, 0.99888893, 0.99941344, 0.49325276],
+                             [- 6.27329789, -0.00036370, 0.00022280, 7.27293420, 0.99888906, 0.99941351, 0.49325279],
+                             [- 6.27329799, -0.00036365, 0.00022277, 7.27293434, 0.99888919, 0.99941358, 0.49325256],
+                             [- 6.27329810, -0.00036361, 0.00022275, 7.27293449, 0.99888932, 0.99941364, 0.49325269],
+                             [- 6.27329820, -0.00036357, 0.00022272, 7.27293463, 0.99888945, 0.99941371, 0.49325274],
+                             [- 6.27329830, -0.00036352, 0.00022269, 7.27293478, 0.99888958, 0.99941378, 0.49325276],
+                             [- 6.27329840, -0.00036348, 0.00022267, 7.27293492, 0.99888971, 0.99941385, 0.49325275],
+                             [- 6.27329851, -0.00036344, 0.00022264, 7.27293507, 0.99888984, 0.99941392, 0.49325266],
+                             [- 6.27329861, -0.00036340, 0.00022261, 7.27293521, 0.99888997, 0.99941399, 0.49325274],
+                             [- 6.27329871, -0.00036335, 0.00022259, 7.27293536, 0.99889010, 0.99941406, 0.49325275],
+                             [- 6.27329881, -0.00036331, 0.00022256, 7.27293550, 0.99889023, 0.99941413, 0.49325279],
+                             [- 6.27329891, -0.00036327, 0.00022254, 7.27293565, 0.99889036, 0.99941420, 0.49325277],
+                             [- 6.27329902, -0.00036323, 0.00022251, 7.27293579, 0.99889049, 0.99941426, 0.49325299],
+                             [- 6.27329912, -0.00036318, 0.00022248, 7.27293593, 0.99889062, 0.99941433, 0.49325298],
+                             [- 6.27329922, -0.00036314, 0.00022246, 7.27293608, 0.99889075, 0.99941440, 0.49325274],
+                             [- 6.27329932, -0.00036310, 0.00022243, 7.27293622, 0.99889088, 0.99941447, 0.49325294],
+                             [- 6.27329942, -0.00036306, 0.00022241, 7.27293637, 0.99889101, 0.99941454, 0.49325297],
+                             [- 6.27329953, -0.00036301, 0.00022238, 7.27293651, 0.99889114, 0.99941461, 0.49325278],
+                             [- 6.27329963, -0.00036297, 0.00022235, 7.27293666, 0.99889127, 0.99941468, 0.49325281],
+                             [- 6.27329973, -0.00036293, 0.00022233, 7.27293680, 0.99889140, 0.99941474, 0.49325304],
+                             [- 6.27329983, -0.00036289, 0.00022230, 7.27293695, 0.99889153, 0.99941481, 0.49325295],
+                             [- 6.27329993, -0.00036284, 0.00022228, 7.27293709, 0.99889166, 0.99941488, 0.49325311],
+                             [- 6.27330004, -0.00036280, 0.00022225, 7.27293723, 0.99889179, 0.99941495, 0.49325291],
+                             [- 6.27330014, -0.00036276, 0.00022222, 7.27293738, 0.99889192, 0.99941502, 0.49325317],
+                             [- 6.27330024, -0.00036272, 0.00022220, 7.27293752, 0.99889205, 0.99941509, 0.49325298],
+                             [- 6.27330034, -0.00036267, 0.00022217, 7.27293767, 0.99889218, 0.99941516, 0.49325316],
+                             [- 6.27330044, -0.00036263, 0.00022215, 7.27293781, 0.99889231, 0.99941522, 0.49325310],
+                             [- 6.27330054, -0.00036259, 0.00022212, 7.27293796, 0.99889244, 0.99941529, 0.49325314],
+                             [- 6.27330065, -0.00036255, 0.00022209, 7.27293810, 0.99889257, 0.99941536, 0.49325310],
+                             [- 6.27330075, -0.00036250, 0.00022207, 7.27293824, 0.99889270, 0.99941543, 0.49325300],
+                             [- 6.27330085, -0.00036246, 0.00022204, 7.27293839, 0.99889283, 0.99941550, 0.49325323],
+                             [- 6.27330095, -0.00036242, 0.00022202, 7.27293853, 0.99889296, 0.99941557, 0.49325313],
+                             [- 6.27330105, -0.00036238, 0.00022199, 7.27293868, 0.99889309, 0.99941564, 0.49325318],
+                             [- 6.27330115, -0.00036233, 0.00022196, 7.27293882, 0.99889322, 0.99941570, 0.49325325],
+                             [- 6.27330126, -0.00036229, 0.00022194, 7.27293896, 0.99889335, 0.99941577, 0.49325315],
+                             [- 6.27330136, -0.00036225, 0.00022191, 7.27293911, 0.99889348, 0.99941584, 0.49325312],
+                             [- 6.27330146, -0.00036221, 0.00022189, 7.27293925, 0.99889361, 0.99941591, 0.49325327],
+                             [- 6.27330156, -0.00036216, 0.00022186, 7.27293940, 0.99889374, 0.99941598, 0.49325334],
+                             [- 6.27330166, -0.00036212, 0.00022183, 7.27293954, 0.99889387, 0.99941605, 0.49325318],
+                             [- 6.27330176, -0.00036208, 0.00022181, 7.27293968, 0.99889400, 0.99941611, 0.49325339],
+                             [- 6.27330186, -0.00036204, 0.00022178, 7.27293983, 0.99889412, 0.99941618, 0.49325320],
+                             [- 6.27330197, -0.00036199, 0.00022176, 7.27293997, 0.99889425, 0.99941625, 0.49325327],
+                             [- 6.27330207, -0.00036195, 0.00022173, 7.27294011, 0.99889438, 0.99941632, 0.49325329],
+                             [- 6.27330217, -0.00036191, 0.00022170, 7.27294026, 0.99889451, 0.99941639, 0.49325333],
+                             [- 6.27330227, -0.00036187, 0.00022168, 7.27294040, 0.99889464, 0.99941646, 0.49325330],
+                             [- 6.27330237, -0.00036182, 0.00022165, 7.27294055, 0.99889477, 0.99941652, 0.49325321],
+                             [- 6.27330247, -0.00036178, 0.00022163, 7.27294069, 0.99889490, 0.99941659, 0.49325343],
+                             [- 6.27330257, -0.00036174, 0.00022160, 7.27294083, 0.99889503, 0.99941666, 0.49325334],
+                             [- 6.27330267, -0.00036170, 0.00022157, 7.27294098, 0.99889516, 0.99941673, 0.49325333],
+                             [- 6.27330278, -0.00036166, 0.00022155, 7.27294112, 0.99889529, 0.99941680, 0.49325328],
+                             [- 6.27330288, -0.00036161, 0.00022152, 7.27294126, 0.99889542, 0.99941686, 0.49325344],
+                             [- 6.27330298, -0.00036157, 0.00022150, 7.27294141, 0.99889555, 0.99941693, 0.49325340],
+                             [- 6.27330308, -0.00036153, 0.00022147, 7.27294155, 0.99889568, 0.99941700, 0.49325337],
+                             [- 6.27330318, -0.00036149, 0.00022144, 7.27294169, 0.99889580, 0.99941707, 0.49325346],
+                             [- 6.27330328, -0.00036144, 0.00022142, 7.27294184, 0.99889593, 0.99941714, 0.49325350],
+                             [- 6.27330338, -0.00036140, 0.00022139, 7.27294198, 0.99889606, 0.99941720, 0.49325355],
+                             [- 6.27330348, -0.00036136, 0.00022137, 7.27294212, 0.99889619, 0.99941727, 0.49325362],
+                             [- 6.27330358, -0.00036132, 0.00022134, 7.27294227, 0.99889632, 0.99941734, 0.49325356],
+                             [- 6.27330368, -0.00036128, 0.00022132, 7.27294241, 0.99889645, 0.99941741, 0.49325360],
+                             [- 6.27330379, -0.00036123, 0.00022129, 7.27294255, 0.99889658, 0.99941748, 0.49325348],
+                             [- 6.27330389, -0.00036119, 0.00022126, 7.27294269, 0.99889671, 0.99941754, 0.49325378],
+                             [- 6.27330399, -0.00036115, 0.00022124, 7.27294284, 0.99889684, 0.99941761, 0.49325364],
+                             [- 6.27330409, -0.00036111, 0.00022121, 7.27294298, 0.99889696, 0.99941768, 0.49325361],
+                             [- 6.27330419, -0.00036107, 0.00022119, 7.27294312, 0.99889709, 0.99941775, 0.49325386],
+                             [- 6.27330429, -0.00036102, 0.00022116, 7.27294327, 0.99889722, 0.99941782, 0.49325359],
+                             [- 6.27330439, -0.00036098, 0.00022113, 7.27294341, 0.99889735, 0.99941788, 0.49325371],
+                             [- 6.27330449, -0.00036094, 0.00022111, 7.27294355, 0.99889748, 0.99941795, 0.49325375],
+                             [- 6.27330459, -0.00036090, 0.00022108, 7.27294370, 0.99889761, 0.99941802, 0.49325371],
+                             [- 6.27330469, -0.00036085, 0.00022106, 7.27294384, 0.99889774, 0.99941809, 0.49325378],
+                             [- 6.27330479, -0.00036081, 0.00022103, 7.27294398, 0.99889786, 0.99941816, 0.49325370],
+                             [- 6.27330489, -0.00036077, 0.00022101, 7.27294412, 0.99889799, 0.99941822, 0.49325364],
+                             [- 6.27330499, -0.00036073, 0.00022098, 7.27294427, 0.99889812, 0.99941829, 0.49325373],
+                             [- 6.27330510, -0.00036069, 0.00022095, 7.27294441, 0.99889825, 0.99941836, 0.49325372],
+                             [- 6.27330520, -0.00036064, 0.00022093, 7.27294455, 0.99889838, 0.99941843, 0.49325391],
+                             [- 6.27330530, -0.00036060, 0.00022090, 7.27294469, 0.99889851, 0.99941849, 0.49325378],
+                             [- 6.27330540, -0.00036056, 0.00022088, 7.27294484, 0.99889863, 0.99941856, 0.49325387],
+                             [- 6.27330550, -0.00036052, 0.00022085, 7.27294498, 0.99889876, 0.99941863, 0.49325370],
+                             [- 6.27330560, -0.00036048, 0.00022083, 7.27294512, 0.99889889, 0.99941870, 0.49325386],
+                             [- 6.27330570, -0.00036043, 0.00022080, 7.27294526, 0.99889902, 0.99941877, 0.49325387],
+                             [- 6.27330580, -0.00036039, 0.00022077, 7.27294541, 0.99889915, 0.99941883, 0.49325384],
+                             [- 6.27330590, -0.00036035, 0.00022075, 7.27294555, 0.99889928, 0.99941890, 0.49325392],
+                             [- 6.27330600, -0.00036031, 0.00022072, 7.27294569, 0.99889940, 0.99941897, 0.49325387],
+                             [- 6.27330610, -0.00036027, 0.00022070, 7.27294583, 0.99889953, 0.99941904, 0.49325390],
+                             [- 6.27330620, -0.00036023, 0.00022067, 7.27294598, 0.99889966, 0.99941910, 0.49325400],
+                             [- 6.27330630, -0.00036018, 0.00022065, 7.27294612, 0.99889979, 0.99941917, 0.49325409],
+                             [- 6.27330640, -0.00036014, 0.00022062, 7.27294626, 0.99889992, 0.99941924, 0.49325386],
+                             [- 6.27330650, -0.00036010, 0.00022059, 7.27294640, 0.99890004, 0.99941931, 0.49325408],
+                             [- 6.27330660, -0.00036006, 0.00022057, 7.27294654, 0.99890017, 0.99941937, 0.49325391],
+                             [- 6.27330670, -0.00036002, 0.00022054, 7.27294669, 0.99890030, 0.99941944, 0.49325389],
+                             [- 6.27330680, -0.00035997, 0.00022052, 7.27294683, 0.99890043, 0.99941951, 0.49325379],
+                             [- 6.27330690, -0.00035993, 0.00022049, 7.27294697, 0.99890056, 0.99941958, 0.49325409],
+                             [- 6.27330700, -0.00035989, 0.00022047, 7.27294711, 0.99890068, 0.99941964, 0.49325388],
+                             [- 6.27330710, -0.00035985, 0.00022044, 7.27294726, 0.99890081, 0.99941971, 0.49325402],
+                             [- 6.27330720, -0.00035981, 0.00022041, 7.27294740, 0.99890094, 0.99941978, 0.49325423],
+                             [- 6.27330730, -0.00035976, 0.00022039, 7.27294754, 0.99890107, 0.99941985, 0.49325405],
+                             [- 6.27330740, -0.00035972, 0.00022036, 7.27294768, 0.99890119, 0.99941991, 0.49325402],
+                             [- 6.27330750, -0.00035968, 0.00022034, 7.27294782, 0.99890132, 0.99941998, 0.49325409],
+                             [- 6.27330760, -0.00035964, 0.00022031, 7.27294796, 0.99890145, 0.99942005, 0.49325408],
+                             [- 6.27330770, -0.00035960, 0.00022029, 7.27294811, 0.99890158, 0.99942012, 0.49325430],
+                             [- 6.27330780, -0.00035956, 0.00022026, 7.27294825, 0.99890171, 0.99942018, 0.49325412],
+                             [- 6.27330790, -0.00035951, 0.00022024, 7.27294839, 0.99890183, 0.99942025, 0.49325410],
+                             [- 6.27330800, -0.00035947, 0.00022021, 7.27294853, 0.99890196, 0.99942032, 0.49325444],
+                             [- 6.27330810, -0.00035943, 0.00022018, 7.27294867, 0.99890209, 0.99942039, 0.49325431],
+                             [- 6.27330820, -0.00035939, 0.00022016, 7.27294882, 0.99890222, 0.99942045, 0.49325422],
+                             [- 6.27330830, -0.00035935, 0.00022013, 7.27294896, 0.99890234, 0.99942052, 0.49325435],
+                             [- 6.27330840, -0.00035931, 0.00022011, 7.27294910, 0.99890247, 0.99942059, 0.49325426],
+                             [- 6.27330850, -0.00035926, 0.00022008, 7.27294924, 0.99890260, 0.99942065, 0.49325433],
+                             [- 6.27330860, -0.00035922, 0.00022006, 7.27294938, 0.99890273, 0.99942072, 0.49325432],
+                             [- 6.27330870, -0.00035918, 0.00022003, 7.27294952, 0.99890285, 0.99942079, 0.49325444],
+                             [- 6.27330880, -0.00035914, 0.00022001, 7.27294966, 0.99890298, 0.99942086, 0.49325435],
+                             [- 6.27330890, -0.00035910, 0.00021998, 7.27294981, 0.99890311, 0.99942092, 0.49325422],
+                             [- 6.27330900, -0.00035906, 0.00021995, 7.27294995, 0.99890323, 0.99942099, 0.49325439],
+                             [- 6.27330910, -0.00035901, 0.00021993, 7.27295009, 0.99890336, 0.99942106, 0.49325438],
+                             [- 6.27330920, -0.00035897, 0.00021990, 7.27295023, 0.99890349, 0.99942113, 0.49325454],
+                             [- 6.27330930, -0.00035893, 0.00021988, 7.27295037, 0.99890362, 0.99942119, 0.49325448],
+                             [- 6.27330940, -0.00035889, 0.00021985, 7.27295051, 0.99890374, 0.99942126, 0.49325441],
+                             [- 6.27330950, -0.00035885, 0.00021983, 7.27295065, 0.99890387, 0.99942133, 0.49325438],
+                             [- 6.27330960, -0.00035881, 0.00021980, 7.27295079, 0.99890400, 0.99942139, 0.49325444],
+                             [- 6.27330970, -0.00035876, 0.00021978, 7.27295094, 0.99890412, 0.99942146, 0.49325455],
+                             [- 6.27330980, -0.00035872, 0.00021975, 7.27295108, 0.99890425, 0.99942153, 0.49325435],
+                             [- 6.27330990, -0.00035868, 0.00021972, 7.27295122, 0.99890438, 0.99942159, 0.49325446],
+                             [- 6.27331000, -0.00035864, 0.00021970, 7.27295136, 0.99890451, 0.99942166, 0.49325463],
+                             [- 6.27331010, -0.00035860, 0.00021967, 7.27295150, 0.99890463, 0.99942173, 0.49325459],
+                             [- 6.27331020, -0.00035856, 0.00021965, 7.27295164, 0.99890476, 0.99942180, 0.49325444],
+                             [- 6.27331030, -0.00035851, 0.00021962, 7.27295178, 0.99890489, 0.99942186, 0.49325446],
+                             [- 6.27331040, -0.00035847, 0.00021960, 7.27295192, 0.99890501, 0.99942193, 0.49325470],
+                             [- 6.27331050, -0.00035843, 0.00021957, 7.27295206, 0.99890514, 0.99942200, 0.49325447],
+                             [- 6.27331059, -0.00035839, 0.00021955, 7.27295220, 0.99890527, 0.99942206, 0.49325451],
+                             [- 6.27331069, -0.00035835, 0.00021952, 7.27295235, 0.99890539, 0.99942213, 0.49325471],
+                             [- 6.27331079, -0.00035831, 0.00021950, 7.27295249, 0.99890552, 0.99942220, 0.49325479],
+                             [- 6.27331089, -0.00035827, 0.00021947, 7.27295263, 0.99890565, 0.99942226, 0.49325465],
+                             [- 6.27331099, -0.00035822, 0.00021944, 7.27295277, 0.99890577, 0.99942233, 0.49325460],
+                             [- 6.27331109, -0.00035818, 0.00021942, 7.27295291, 0.99890590, 0.99942240, 0.49325463],
+                             [- 6.27331119, -0.00035814, 0.00021939, 7.27295305, 0.99890603, 0.99942246, 0.49325475],
+                             [- 6.27331129, -0.00035810, 0.00021937, 7.27295319, 0.99890615, 0.99942253, 0.49325484],
+                             [- 6.27331139, -0.00035806, 0.00021934, 7.27295333, 0.99890628, 0.99942260, 0.49325478],
+                             [- 6.27331149, -0.00035802, 0.00021932, 7.27295347, 0.99890641, 0.99942267, 0.49325476],
+                             [- 6.27331159, -0.00035798, 0.00021929, 7.27295361, 0.99890653, 0.99942273, 0.49325474],
+                             [- 6.27331169, -0.00035793, 0.00021927, 7.27295375, 0.99890666, 0.99942280, 0.49325471],
+                             [- 6.27331179, -0.00035789, 0.00021924, 7.27295389, 0.99890679, 0.99942287, 0.49325479],
+                             [- 6.27331188, -0.00035785, 0.00021922, 7.27295403, 0.99890691, 0.99942293, 0.49325475],
+                             [- 6.27331198, -0.00035781, 0.00021919, 7.27295417, 0.99890704, 0.99942300, 0.49325483],
+                             [- 6.27331208, -0.00035777, 0.00021917, 7.27295431, 0.99890717, 0.99942307, 0.49325488],
+                             [- 6.27331218, -0.00035773, 0.00021914, 7.27295445, 0.99890729, 0.99942313, 0.49325468],
+                             [- 6.27331228, -0.00035769, 0.00021911, 7.27295459, 0.99890742, 0.99942320, 0.49325487],
+                             [- 6.27331238, -0.00035764, 0.00021909, 7.27295473, 0.99890754, 0.99942327, 0.49325491],
+                             [- 6.27331248, -0.00035760, 0.00021906, 7.27295487, 0.99890767, 0.99942333, 0.49325485],
+                             [- 6.27331258, -0.00035756, 0.00021904, 7.27295501, 0.99890780, 0.99942340, 0.49325494],
+                             [- 6.27331268, -0.00035752, 0.00021901, 7.27295515, 0.99890792, 0.99942347, 0.49325489],
+                             [- 6.27331277, -0.00035748, 0.00021899, 7.27295529, 0.99890805, 0.99942353, 0.49325507],
+                             [- 6.27331287, -0.00035744, 0.00021896, 7.27295544, 0.99890818, 0.99942360, 0.49325487],
+                             [- 6.27331297, -0.00035740, 0.00021894, 7.27295558, 0.99890830, 0.99942367, 0.49325485],
+                             [- 6.27331307, -0.00035736, 0.00021891, 7.27295572, 0.99890843, 0.99942373, 0.49325494],
+                             [- 6.27331317, -0.00035731, 0.00021889, 7.27295586, 0.99890855, 0.99942380, 0.49325502],
+                             [- 6.27331327, -0.00035727, 0.00021886, 7.27295600, 0.99890868, 0.99942386, 0.49325506],
+                             [- 6.27331337, -0.00035723, 0.00021884, 7.27295614, 0.99890881, 0.99942393, 0.49325501],
+                             [- 6.27331347, -0.00035719, 0.00021881, 7.27295628, 0.99890893, 0.99942400, 0.49325503],
+                             [- 6.27331356, -0.00035715, 0.00021879, 7.27295642, 0.99890906, 0.99942406, 0.49325490],
+                             [- 6.27331366, -0.00035711, 0.00021876, 7.27295655, 0.99890918, 0.99942413, 0.49325500],
+                             [- 6.27331376, -0.00035707, 0.00021874, 7.27295669, 0.99890931, 0.99942420, 0.49325510],
+                             [- 6.27331386, -0.00035703, 0.00021871, 7.27295683, 0.99890943, 0.99942426, 0.49325499],
+                             [- 6.27331396, -0.00035698, 0.00021869, 7.27295697, 0.99890956, 0.99942433, 0.49325505],
+                             [- 6.27331406, -0.00035694, 0.00021866, 7.27295711, 0.99890969, 0.99942440, 0.49325506],
+                             [- 6.27331416, -0.00035690, 0.00021863, 7.27295725, 0.99890981, 0.99942446, 0.49325523],
+                             [- 6.27331425, -0.00035686, 0.00021861, 7.27295739, 0.99890994, 0.99942453, 0.49325511],
+                             [- 6.27331435, -0.00035682, 0.00021858, 7.27295753, 0.99891006, 0.99942460, 0.49325502],
+                             [- 6.27331445, -0.00035678, 0.00021856, 7.27295767, 0.99891019, 0.99942466, 0.49325512],
+                             [- 6.27331455, -0.00035674, 0.00021853, 7.27295781, 0.99891032, 0.99942473, 0.49325535],
+                             [- 6.27331465, -0.00035670, 0.00021851, 7.27295795, 0.99891044, 0.99942479, 0.49325526],
+                             [- 6.27331475, -0.00035666, 0.00021848, 7.27295809, 0.99891057, 0.99942486, 0.49325504],
+                             [- 6.27331485, -0.00035661, 0.00021846, 7.27295823, 0.99891069, 0.99942493, 0.49325512],
+                             [- 6.27331494, -0.00035657, 0.00021843, 7.27295837, 0.99891082, 0.99942499, 0.49325533],
+                             [- 6.27331504, -0.00035653, 0.00021841, 7.27295851, 0.99891094, 0.99942506, 0.49325523],
+                             [- 6.27331514, -0.00035649, 0.00021838, 7.27295865, 0.99891107, 0.99942513, 0.49325528],
+                             [- 6.27331524, -0.00035645, 0.00021836, 7.27295879, 0.99891119, 0.99942519, 0.49325526],
+                             [- 6.27331534, -0.00035641, 0.00021833, 7.27295893, 0.99891132, 0.99942526, 0.49325527],
+                             [- 6.27331543, -0.00035637, 0.00021831, 7.27295907, 0.99891144, 0.99942532, 0.49325541],
+                             [- 6.27331553, -0.00035633, 0.00021828, 7.27295921, 0.99891157, 0.99942539, 0.49325526],
+                             [- 6.27331563, -0.00035629, 0.00021826, 7.27295935, 0.99891169, 0.99942546, 0.49325518],
+                             [- 6.27331573, -0.00035625, 0.00021823, 7.27295948, 0.99891182, 0.99942552, 0.49325527],
+                             [- 6.27331583, -0.00035620, 0.00021821, 7.27295962, 0.99891195, 0.99942559, 0.49325543],
+                             [- 6.27331593, -0.00035616, 0.00021818, 7.27295976, 0.99891207, 0.99942566, 0.49325535],
+                             [- 6.27331602, -0.00035612, 0.00021816, 7.27295990, 0.99891220, 0.99942572, 0.49325531],
+                             [- 6.27331612, -0.00035608, 0.00021813, 7.27296004, 0.99891232, 0.99942579, 0.49325537],
+                             [- 6.27331622, -0.00035604, 0.00021811, 7.27296018, 0.99891245, 0.99942585, 0.49325536],
+                             [- 6.27331632, -0.00035600, 0.00021808, 7.27296032, 0.99891257, 0.99942592, 0.49325546],
+                             [- 6.27331642, -0.00035596, 0.00021806, 7.27296046, 0.99891270, 0.99942599, 0.49325549],
+                             [- 6.27331651, -0.00035592, 0.00021803, 7.27296060, 0.99891282, 0.99942605, 0.49325546],
+                             [- 6.27331661, -0.00035588, 0.00021801, 7.27296074, 0.99891295, 0.99942612, 0.49325542],
+                             [- 6.27331671, -0.00035584, 0.00021798, 7.27296087, 0.99891307, 0.99942618, 0.49325537],
+                             [- 6.27331681, -0.00035579, 0.00021796, 7.27296101, 0.99891320, 0.99942625, 0.49325535],
+                             [- 6.27331691, -0.00035575, 0.00021793, 7.27296115, 0.99891332, 0.99942632, 0.49325540],
+                             [- 6.27331700, -0.00035571, 0.00021791, 7.27296129, 0.99891345, 0.99942638, 0.49325546],
+                             [- 6.27331710, -0.00035567, 0.00021788, 7.27296143, 0.99891357, 0.99942645, 0.49325545],
+                             [- 6.27331720, -0.00035563, 0.00021786, 7.27296157, 0.99891370, 0.99942651, 0.49325569],
+                             [- 6.27331730, -0.00035559, 0.00021783, 7.27296171, 0.99891382, 0.99942658, 0.49325550],
+                             [- 6.27331740, -0.00035555, 0.00021781, 7.27296185, 0.99891395, 0.99942664, 0.49325563],
+                             [- 6.27331749, -0.00035551, 0.00021778, 7.27296198, 0.99891407, 0.99942671, 0.49325568],
+                             [- 6.27331759, -0.00035547, 0.00021776, 7.27296212, 0.99891420, 0.99942678, 0.49325547],
+                             [- 6.27331769, -0.00035543, 0.00021773, 7.27296226, 0.99891432, 0.99942684, 0.49325550],
+                             [- 6.27331779, -0.00035539, 0.00021771, 7.27296240, 0.99891444, 0.99942691, 0.49325571],
+                             [- 6.27331788, -0.00035535, 0.00021768, 7.27296254, 0.99891457, 0.99942697, 0.49325568],
+                             [- 6.27331798, -0.00035530, 0.00021766, 7.27296268, 0.99891469, 0.99942704, 0.49325562],
+                             [- 6.27331808, -0.00035526, 0.00021763, 7.27296281, 0.99891482, 0.99942711, 0.49325569],
+                             [- 6.27331818, -0.00035522, 0.00021761, 7.27296295, 0.99891494, 0.99942717, 0.49325576],
+                             [- 6.27331827, -0.00035518, 0.00021758, 7.27296309, 0.99891507, 0.99942724, 0.49325584],
+                             [- 6.27331837, -0.00035514, 0.00021756, 7.27296323, 0.99891519, 0.99942730, 0.49325572],
+                             [- 6.27331847, -0.00035510, 0.00021753, 7.27296337, 0.99891532, 0.99942737, 0.49325557],
+                             [- 6.27331857, -0.00035506, 0.00021751, 7.27296351, 0.99891544, 0.99942743, 0.49325555],
+                             [- 6.27331866, -0.00035502, 0.00021748, 7.27296364, 0.99891557, 0.99942750, 0.49325590],
+                             [- 6.27331876, -0.00035498, 0.00021746, 7.27296378, 0.99891569, 0.99942757, 0.49325582],
+                             [- 6.27331886, -0.00035494, 0.00021743, 7.27296392, 0.99891581, 0.99942763, 0.49325599],
+                             [- 6.27331896, -0.00035490, 0.00021741, 7.27296406, 0.99891594, 0.99942770, 0.49325596],
+                             [- 6.27331905, -0.00035486, 0.00021738, 7.27296420, 0.99891606, 0.99942776, 0.49325600],
+                             [- 6.27331915, -0.00035482, 0.00021736, 7.27296434, 0.99891619, 0.99942783, 0.49325578],
+                             [- 6.27331925, -0.00035478, 0.00021733, 7.27296447, 0.99891631, 0.99942789, 0.49325597],
+                             [- 6.27331935, -0.00035473, 0.00021731, 7.27296461, 0.99891644, 0.99942796, 0.49325578],
+                             [- 6.27331944, -0.00035469, 0.00021728, 7.27296475, 0.99891656, 0.99942802, 0.49325601],
+                             [- 6.27331954, -0.00035465, 0.00021726, 7.27296489, 0.99891668, 0.99942809, 0.49325574],
+                             [- 6.27331964, -0.00035461, 0.00021723, 7.27296503, 0.99891681, 0.99942816, 0.49325598],
+                             [- 6.27331974, -0.00035457, 0.00021721, 7.27296516, 0.99891693, 0.99942822, 0.49325602],
+                             [- 6.27331983, -0.00035453, 0.00021718, 7.27296530, 0.99891706, 0.99942829, 0.49325595],
+                             [- 6.27331993, -0.00035449, 0.00021716, 7.27296544, 0.99891718, 0.99942835, 0.49325608],
+                             [- 6.27332003, -0.00035445, 0.00021713, 7.27296558, 0.99891730, 0.99942842, 0.49325597],
+                             [- 6.27332012, -0.00035441, 0.00021711, 7.27296571, 0.99891743, 0.99942848, 0.49325598],
+                             [- 6.27332022, -0.00035437, 0.00021708, 7.27296585, 0.99891755, 0.99942855, 0.49325613],
+                             [- 6.27332032, -0.00035433, 0.00021706, 7.27296599, 0.99891768, 0.99942861, 0.49325588],
+                             [- 6.27332042, -0.00035429, 0.00021703, 7.27296613, 0.99891780, 0.99942868, 0.49325598],
+                             [- 6.27332051, -0.00035425, 0.00021701, 7.27296626, 0.99891792, 0.99942874, 0.49325592],
+                             [- 6.27332061, -0.00035421, 0.00021698, 7.27296640, 0.99891805, 0.99942881, 0.49325612],
+                             [- 6.27332071, -0.00035417, 0.00021696, 7.27296654, 0.99891817, 0.99942888, 0.49325620],
+                             [- 6.27332080, -0.00035413, 0.00021693, 7.27296668, 0.99891830, 0.99942894, 0.49325610],
+                             [- 6.27332090, -0.00035409, 0.00021691, 7.27296681, 0.99891842, 0.99942901, 0.49325614],
+                             [- 6.27332100, -0.00035405, 0.00021688, 7.27296695, 0.99891854, 0.99942907, 0.49325612],
+                             [- 6.27332109, -0.00035400, 0.00021686, 7.27296709, 0.99891867, 0.99942914, 0.49325613],
+                             [- 6.27332119, -0.00035396, 0.00021683, 7.27296723, 0.99891879, 0.99942920, 0.49325604],
+                             [- 6.27332129, -0.00035392, 0.00021681, 7.27296736, 0.99891891, 0.99942927, 0.49325626],
+                             [- 6.27332139, -0.00035388, 0.00021678, 7.27296750, 0.99891904, 0.99942933, 0.49325625],
+                             [- 6.27332148, -0.00035384, 0.00021676, 7.27296764, 0.99891916, 0.99942940, 0.49325605],
+                             [- 6.27332158, -0.00035380, 0.00021673, 7.27296778, 0.99891928, 0.99942946, 0.49325626],
+                             [- 6.27332168, -0.00035376, 0.00021671, 7.27296791, 0.99891941, 0.99942953, 0.49325629],
+                             [- 6.27332177, -0.00035372, 0.00021669, 7.27296805, 0.99891953, 0.99942959, 0.49325630],
+                             [- 6.27332187, -0.00035368, 0.00021666, 7.27296819, 0.99891966, 0.99942966, 0.49325628],
+                             [- 6.27332197, -0.00035364, 0.00021664, 7.27296833, 0.99891978, 0.99942972, 0.49325635],
+                             [- 6.27332206, -0.00035360, 0.00021661, 7.27296846, 0.99891990, 0.99942979, 0.49325625],
+                             [- 6.27332216, -0.00035356, 0.00021659, 7.27296860, 0.99892003, 0.99942985, 0.49325617],
+                             [- 6.27332226, -0.00035352, 0.00021656, 7.27296874, 0.99892015, 0.99942992, 0.49325641],
+                             [- 6.27332235, -0.00035348, 0.00021654, 7.27296887, 0.99892027, 0.99942998, 0.49325636],
+                             [- 6.27332245, -0.00035344, 0.00021651, 7.27296901, 0.99892040, 0.99943005, 0.49325630],
+                             [- 6.27332255, -0.00035340, 0.00021649, 7.27296915, 0.99892052, 0.99943011, 0.49325637],
+                             [- 6.27332264, -0.00035336, 0.00021646, 7.27296928, 0.99892064, 0.99943018, 0.49325631],
+                             [- 6.27332274, -0.00035332, 0.00021644, 7.27296942, 0.99892077, 0.99943024, 0.49325656],
+                             [- 6.27332284, -0.00035328, 0.00021641, 7.27296956, 0.99892089, 0.99943031, 0.49325631],
+                             [- 6.27332293, -0.00035324, 0.00021639, 7.27296970, 0.99892101, 0.99943037, 0.49325638],
+                             [- 6.27332303, -0.00035320, 0.00021636, 7.27296983, 0.99892114, 0.99943044, 0.49325647],
+                             [- 6.27332313, -0.00035316, 0.00021634, 7.27296997, 0.99892126, 0.99943050, 0.49325639],
+                             [- 6.27332322, -0.00035312, 0.00021631, 7.27297011, 0.99892138, 0.99943057, 0.49325638],
+                             [- 6.27332332, -0.00035308, 0.00021629, 7.27297024, 0.99892150, 0.99943063, 0.49325638],
+                             [- 6.27332341, -0.00035304, 0.00021626, 7.27297038, 0.99892163, 0.99943070, 0.49325643],
+                             [- 6.27332351, -0.00035300, 0.00021624, 7.27297052, 0.99892175, 0.99943076, 0.49325659],
+                             [- 6.27332361, -0.00035296, 0.00021622, 7.27297065, 0.99892187, 0.99943083, 0.49325672],
+                             [- 6.27332370, -0.00035291, 0.00021619, 7.27297079, 0.99892200, 0.99943089, 0.49325654],
+                             [- 6.27332380, -0.00035287, 0.00021617, 7.27297093, 0.99892212, 0.99943096, 0.49325642],
+                             [- 6.27332390, -0.00035283, 0.00021614, 7.27297106, 0.99892224, 0.99943102, 0.49325660],
+                             [- 6.27332399, -0.00035279, 0.00021612, 7.27297120, 0.99892237, 0.99943109, 0.49325667],
+                             [- 6.27332409, -0.00035275, 0.00021609, 7.27297133, 0.99892249, 0.99943115, 0.49325649],
+                             [- 6.27332418, -0.00035271, 0.00021607, 7.27297147, 0.99892261, 0.99943122, 0.49325655],
+                             [- 6.27332428, -0.00035267, 0.00021604, 7.27297161, 0.99892273, 0.99943128, 0.49325662],
+                             [- 6.27332438, -0.00035263, 0.00021602, 7.27297174, 0.99892286, 0.99943135, 0.49325664],
+                             [- 6.27332447, -0.00035259, 0.00021599, 7.27297188, 0.99892298, 0.99943141, 0.49325657],
+                             [- 6.27332457, -0.00035255, 0.00021597, 7.27297202, 0.99892310, 0.99943148, 0.49325670],
+                             [- 6.27332467, -0.00035251, 0.00021594, 7.27297215, 0.99892322, 0.99943154, 0.49325664],
+                             [- 6.27332476, -0.00035247, 0.00021592, 7.27297229, 0.99892335, 0.99943161, 0.49325680],
+                             [- 6.27332486, -0.00035243, 0.00021590, 7.27297243, 0.99892347, 0.99943167, 0.49325677],
+                             [- 6.27332495, -0.00035239, 0.00021587, 7.27297256, 0.99892359, 0.99943174, 0.49325674],
+                             [- 6.27332505, -0.00035235, 0.00021585, 7.27297270, 0.99892371, 0.99943180, 0.49325673],
+                             [- 6.27332515, -0.00035231, 0.00021582, 7.27297283, 0.99892384, 0.99943187, 0.49325687],
+                             [- 6.27332524, -0.00035227, 0.00021580, 7.27297297, 0.99892396, 0.99943193, 0.49325676],
+                             [- 6.27332534, -0.00035223, 0.00021577, 7.27297311, 0.99892408, 0.99943200, 0.49325694],
+                             [- 6.27332543, -0.00035219, 0.00021575, 7.27297324, 0.99892420, 0.99943206, 0.49325684],
+                             [- 6.27332553, -0.00035215, 0.00021572, 7.27297338, 0.99892433, 0.99943212, 0.49325673],
+                             [- 6.27332563, -0.00035211, 0.00021570, 7.27297351, 0.99892445, 0.99943219, 0.49325679],
+                             [- 6.27332572, -0.00035207, 0.00021567, 7.27297365, 0.99892457, 0.99943225, 0.49325687],
+                             [- 6.27332582, -0.00035203, 0.00021565, 7.27297379, 0.99892469, 0.99943232, 0.49325682],
+                             [- 6.27332591, -0.00035199, 0.00021563, 7.27297392, 0.99892482, 0.99943238, 0.49325693],
+                             [- 6.27332601, -0.00035195, 0.00021560, 7.27297406, 0.99892494, 0.99943245, 0.49325706],
+                             [- 6.27332611, -0.00035191, 0.00021558, 7.27297419, 0.99892506, 0.99943251, 0.49325679],
+                             [- 6.27332620, -0.00035187, 0.00021555, 7.27297433, 0.99892518, 0.99943258, 0.49325693],
+                             [- 6.27332630, -0.00035183, 0.00021553, 7.27297446, 0.99892531, 0.99943264, 0.49325690],
+                             [- 6.27332639, -0.00035179, 0.00021550, 7.27297460, 0.99892543, 0.99943271, 0.49325679],
+                             [- 6.27332649, -0.00035175, 0.00021548, 7.27297474, 0.99892555, 0.99943277, 0.49325703],
+                             [- 6.27332658, -0.00035171, 0.00021545, 7.27297487, 0.99892567, 0.99943283, 0.49325709],
+                             [- 6.27332668, -0.00035167, 0.00021543, 7.27297501, 0.99892579, 0.99943290, 0.49325716],
+                             [- 6.27332678, -0.00035163, 0.00021540, 7.27297514, 0.99892592, 0.99943296, 0.49325688],
+                             [- 6.27332687, -0.00035159, 0.00021538, 7.27297528, 0.99892604, 0.99943303, 0.49325701],
+                             [- 6.27332697, -0.00035155, 0.00021536, 7.27297541, 0.99892616, 0.99943309, 0.49325699],
+                             [- 6.27332706, -0.00035151, 0.00021533, 7.27297555, 0.99892628, 0.99943316, 0.49325716],
+                             [- 6.27332716, -0.00035147, 0.00021531, 7.27297569, 0.99892640, 0.99943322, 0.49325705],
+                             [- 6.27332725, -0.00035143, 0.00021528, 7.27297582, 0.99892653, 0.99943329, 0.49325714],
+                             [- 6.27332735, -0.00035139, 0.00021526, 7.27297596, 0.99892665, 0.99943335, 0.49325697],
+                             [- 6.27332744, -0.00035135, 0.00021523, 7.27297609, 0.99892677, 0.99943341, 0.49325706],
+                             [- 6.27332754, -0.00035131, 0.00021521, 7.27297623, 0.99892689, 0.99943348, 0.49325710],
+                             [- 6.27332763, -0.00035127, 0.00021518, 7.27297636, 0.99892701, 0.99943354, 0.49325718],
+                             [- 6.27332773, -0.00035123, 0.00021516, 7.27297650, 0.99892714, 0.99943361, 0.49325714],
+                             [- 6.27332783, -0.00035119, 0.00021514, 7.27297663, 0.99892726, 0.99943367, 0.49325704],
+                             [- 6.27332792, -0.00035115, 0.00021511, 7.27297677, 0.99892738, 0.99943374, 0.49325724],
+                             [- 6.27332802, -0.00035111, 0.00021509, 7.27297690, 0.99892750, 0.99943380, 0.49325727],
+                             [- 6.27332811, -0.00035107, 0.00021506, 7.27297704, 0.99892762, 0.99943386, 0.49325718],
+                             [- 6.27332821, -0.00035103, 0.00021504, 7.27297717, 0.99892774, 0.99943393, 0.49325715],
+                             [- 6.27332830, -0.00035099, 0.00021501, 7.27297731, 0.99892787, 0.99943399, 0.49325736],
+                             [- 6.27332840, -0.00035095, 0.00021499, 7.27297744, 0.99892799, 0.99943406, 0.49325725],
+                             [- 6.27332849, -0.00035091, 0.00021496, 7.27297758, 0.99892811, 0.99943412, 0.49325737],
+                             [- 6.27332859, -0.00035087, 0.00021494, 7.27297771, 0.99892823, 0.99943418, 0.49325733],
+                             [- 6.27332868, -0.00035084, 0.00021492, 7.27297785, 0.99892835, 0.99943425, 0.49325727],
+                             [- 6.27332878, -0.00035080, 0.00021489, 7.27297798, 0.99892847, 0.99943431, 0.49325722],
+                             [- 6.27332887, -0.00035076, 0.00021487, 7.27297812, 0.99892859, 0.99943438, 0.49325726],
+                             [- 6.27332897, -0.00035072, 0.00021484, 7.27297825, 0.99892872, 0.99943444, 0.49325746],
+                             [- 6.27332906, -0.00035068, 0.00021482, 7.27297839, 0.99892884, 0.99943451, 0.49325735],
+                             [- 6.27332916, -0.00035064, 0.00021479, 7.27297852, 0.99892896, 0.99943457, 0.49325729],
+                             [- 6.27332925, -0.00035060, 0.00021477, 7.27297866, 0.99892908, 0.99943463, 0.49325733],
+                             [- 6.27332935, -0.00035056, 0.00021475, 7.27297879, 0.99892920, 0.99943470, 0.49325743],
+                             [- 6.27332944, -0.00035052, 0.00021472, 7.27297893, 0.99892932, 0.99943476, 0.49325745],
+                             [- 6.27332954, -0.00035048, 0.00021470, 7.27297906, 0.99892944, 0.99943483, 0.49325763],
+                             [- 6.27332963, -0.00035044, 0.00021467, 7.27297920, 0.99892956, 0.99943489, 0.49325734],
+                             [- 6.27332973, -0.00035040, 0.00021465, 7.27297933, 0.99892969, 0.99943495, 0.49325743],
+                             [- 6.27332982, -0.00035036, 0.00021462, 7.27297947, 0.99892981, 0.99943502, 0.49325746],
+                             [- 6.27332992, -0.00035032, 0.00021460, 7.27297960, 0.99892993, 0.99943508, 0.49325750],
+                             [- 6.27333001, -0.00035028, 0.00021458, 7.27297973, 0.99893005, 0.99943515, 0.49325754],
+                             [- 6.27333011, -0.00035024, 0.00021455, 7.27297987, 0.99893017, 0.99943521, 0.49325751],
+                             [- 6.27333020, -0.00035020, 0.00021453, 7.27298000, 0.99893029, 0.99943527, 0.49325761],
+                             [- 6.27333030, -0.00035016, 0.00021450, 7.27298014, 0.99893041, 0.99943534, 0.49325752],
+                             [- 6.27333039, -0.00035012, 0.00021448, 7.27298027, 0.99893053, 0.99943540, 0.49325748],
+                             [- 6.27333049, -0.00035008, 0.00021445, 7.27298041, 0.99893065, 0.99943546, 0.49325770],
+                             [- 6.27333058, -0.00035004, 0.00021443, 7.27298054, 0.99893078, 0.99943553, 0.49325749],
+                             [- 6.27333068, -0.00035000, 0.00021441, 7.27298068, 0.99893090, 0.99943559, 0.49325754],
+                             [- 6.27333077, -0.00034996, 0.00021438, 7.27298081, 0.99893102, 0.99943566, 0.49325757],
+                             [- 6.27333087, -0.00034992, 0.00021436, 7.27298094, 0.99893114, 0.99943572, 0.49325772],
+                             [- 6.27333096, -0.00034988, 0.00021433, 7.27298108, 0.99893126, 0.99943578, 0.49325749],
+                             [- 6.27333106, -0.00034984, 0.00021431, 7.27298121, 0.99893138, 0.99943585, 0.49325746],
+                             [- 6.27333115, -0.00034980, 0.00021428, 7.27298135, 0.99893150, 0.99943591, 0.49325763],
+                             [- 6.27333125, -0.00034976, 0.00021426, 7.27298148, 0.99893162, 0.99943597, 0.49325780],
+                             [- 6.27333134, -0.00034973, 0.00021424, 7.27298162, 0.99893174, 0.99943604, 0.49325773],
+                             [- 6.27333144, -0.00034969, 0.00021421, 7.27298175, 0.99893186, 0.99943610, 0.49325774],
+                             [- 6.27333153, -0.00034965, 0.00021419, 7.27298188, 0.99893198, 0.99943617, 0.49325768],
+                             [- 6.27333162, -0.00034961, 0.00021416, 7.27298202, 0.99893210, 0.99943623, 0.49325772],
+                             [- 6.27333172, -0.00034957, 0.00021414, 7.27298215, 0.99893223, 0.99943629, 0.49325780],
+                             [- 6.27333181, -0.00034953, 0.00021412, 7.27298229, 0.99893235, 0.99943636, 0.49325790],
+                             [- 6.27333191, -0.00034949, 0.00021409, 7.27298242, 0.99893247, 0.99943642, 0.49325769],
+                             [- 6.27333200, -0.00034945, 0.00021407, 7.27298255, 0.99893259, 0.99943648, 0.49325784],
+                             [- 6.27333210, -0.00034941, 0.00021404, 7.27298269, 0.99893271, 0.99943655, 0.49325781],
+                             [- 6.27333219, -0.00034937, 0.00021402, 7.27298282, 0.99893283, 0.99943661, 0.49325781],
+                             [- 6.27333229, -0.00034933, 0.00021399, 7.27298296, 0.99893295, 0.99943668, 0.49325775],
+                             [- 6.27333238, -0.00034929, 0.00021397, 7.27298309, 0.99893307, 0.99943674, 0.49325777],
+                             [- 6.27333247, -0.00034925, 0.00021395, 7.27298322, 0.99893319, 0.99943680, 0.49325794],
+                             [- 6.27333257, -0.00034921, 0.00021392, 7.27298336, 0.99893331, 0.99943687, 0.49325786],
+                             [- 6.27333266, -0.00034917, 0.00021390, 7.27298349, 0.99893343, 0.99943693, 0.49325783],
+                             [- 6.27333276, -0.00034913, 0.00021387, 7.27298362, 0.99893355, 0.99943699, 0.49325777],
+                             [- 6.27333285, -0.00034909, 0.00021385, 7.27298376, 0.99893367, 0.99943706, 0.49325800],
+                             [- 6.27333295, -0.00034905, 0.00021383, 7.27298389, 0.99893379, 0.99943712, 0.49325788],
+                             [- 6.27333304, -0.00034902, 0.00021380, 7.27298402, 0.99893391, 0.99943718, 0.49325796],
+                             [- 6.27333313, -0.00034898, 0.00021378, 7.27298416, 0.99893403, 0.99943725, 0.49325777],
+                             [- 6.27333323, -0.00034894, 0.00021375, 7.27298429, 0.99893415, 0.99943731, 0.49325803],
+                             [- 6.27333332, -0.00034890, 0.00021373, 7.27298443, 0.99893427, 0.99943737, 0.49325799],
+                             [- 6.27333342, -0.00034886, 0.00021370, 7.27298456, 0.99893439, 0.99943744, 0.49325815],
+                             [- 6.27333351, -0.00034882, 0.00021368, 7.27298469, 0.99893451, 0.99943750, 0.49325810],
+                             [- 6.27333360, -0.00034878, 0.00021366, 7.27298483, 0.99893463, 0.99943756, 0.49325805],
+                             [- 6.27333370, -0.00034874, 0.00021363, 7.27298496, 0.99893475, 0.99943763, 0.49325805],
+                             [- 6.27333379, -0.00034870, 0.00021361, 7.27298509, 0.99893487, 0.99943769, 0.49325810],
+                             [- 6.27333389, -0.00034866, 0.00021358, 7.27298523, 0.99893499, 0.99943775, 0.49325812],
+                             [- 6.27333398, -0.00034862, 0.00021356, 7.27298536, 0.99893511, 0.99943782, 0.49325800],
+                             [- 6.27333408, -0.00034858, 0.00021354, 7.27298549, 0.99893523, 0.99943788, 0.49325798],
+                             [- 6.27333417, -0.00034854, 0.00021351, 7.27298563, 0.99893535, 0.99943794, 0.49325819],
+                             [- 6.27333426, -0.00034850, 0.00021349, 7.27298576, 0.99893547, 0.99943801, 0.49325809],
+                             [- 6.27333436, -0.00034847, 0.00021346, 7.27298589, 0.99893559, 0.99943807, 0.49325811],
+                             [- 6.27333445, -0.00034843, 0.00021344, 7.27298602, 0.99893571, 0.99943813, 0.49325804],
+                             [- 6.27333454, -0.00034839, 0.00021342, 7.27298616, 0.99893583, 0.99943820, 0.49325814],
+                             [- 6.27333464, -0.00034835, 0.00021339, 7.27298629, 0.99893595, 0.99943826, 0.49325817],
+                             [- 6.27333473, -0.00034831, 0.00021337, 7.27298642, 0.99893607, 0.99943832, 0.49325810],
+                             [- 6.27333483, -0.00034827, 0.00021334, 7.27298656, 0.99893619, 0.99943839, 0.49325810],
+                             [- 6.27333492, -0.00034823, 0.00021332, 7.27298669, 0.99893631, 0.99943845, 0.49325813],
+                             [- 6.27333501, -0.00034819, 0.00021330, 7.27298682, 0.99893643, 0.99943851, 0.49325821],
+                             [- 6.27333511, -0.00034815, 0.00021327, 7.27298696, 0.99893655, 0.99943858, 0.49325825],
+                             [- 6.27333520, -0.00034811, 0.00021325, 7.27298709, 0.99893667, 0.99943864, 0.49325802],
+                             [- 6.27333530, -0.00034807, 0.00021322, 7.27298722, 0.99893679, 0.99943870, 0.49325839],
+                             [- 6.27333539, -0.00034803, 0.00021320, 7.27298735, 0.99893691, 0.99943877, 0.49325824],
+                             [- 6.27333548, -0.00034800, 0.00021318, 7.27298749, 0.99893703, 0.99943883, 0.49325827],
+                             [- 6.27333558, -0.00034796, 0.00021315, 7.27298762, 0.99893715, 0.99943889, 0.49325830],
+                             [- 6.27333567, -0.00034792, 0.00021313, 7.27298775, 0.99893727, 0.99943895, 0.49325817],
+                             [- 6.27333576, -0.00034788, 0.00021310, 7.27298789, 0.99893739, 0.99943902, 0.49325841],
+                             [- 6.27333586, -0.00034784, 0.00021308, 7.27298802, 0.99893751, 0.99943908, 0.49325836],
+                             [- 6.27333595, -0.00034780, 0.00021306, 7.27298815, 0.99893763, 0.99943914, 0.49325836],
+                             [- 6.27333604, -0.00034776, 0.00021303, 7.27298828, 0.99893774, 0.99943921, 0.49325838],
+                             [- 6.27333614, -0.00034772, 0.00021301, 7.27298842, 0.99893786, 0.99943927, 0.49325845],
+                             [- 6.27333623, -0.00034768, 0.00021298, 7.27298855, 0.99893798, 0.99943933, 0.49325848],
+                             [- 6.27333632, -0.00034764, 0.00021296, 7.27298868, 0.99893810, 0.99943940, 0.49325833],
+                             [- 6.27333642, -0.00034760, 0.00021294, 7.27298881, 0.99893822, 0.99943946, 0.49325843],
+                             [- 6.27333651, -0.00034757, 0.00021291, 7.27298895, 0.99893834, 0.99943952, 0.49325849],
+                             [- 6.27333661, -0.00034753, 0.00021289, 7.27298908, 0.99893846, 0.99943958, 0.49325841],
+                             [- 6.27333670, -0.00034749, 0.00021286, 7.27298921, 0.99893858, 0.99943965, 0.49325856],
+                             [- 6.27333679, -0.00034745, 0.00021284, 7.27298934, 0.99893870, 0.99943971, 0.49325841],
+                             [- 6.27333689, -0.00034741, 0.00021282, 7.27298948, 0.99893882, 0.99943977, 0.49325845],
+                             [- 6.27333698, -0.00034737, 0.00021279, 7.27298961, 0.99893894, 0.99943984, 0.49325852],
+                             [- 6.27333707, -0.00034733, 0.00021277, 7.27298974, 0.99893906, 0.99943990, 0.49325863],
+                             [- 6.27333717, -0.00034729, 0.00021275, 7.27298987, 0.99893918, 0.99943996, 0.49325866],
+                             [- 6.27333726, -0.00034725, 0.00021272, 7.27299000, 0.99893929, 0.99944002, 0.49325856],
+                             [- 6.27333735, -0.00034721, 0.00021270, 7.27299014, 0.99893941, 0.99944009, 0.49325854],
+                             [- 6.27333745, -0.00034718, 0.00021267, 7.27299027, 0.99893953, 0.99944015, 0.49325858],
+                             [- 6.27333754, -0.00034714, 0.00021265, 7.27299040, 0.99893965, 0.99944021, 0.49325856],
+                             [- 6.27333763, -0.00034710, 0.00021263, 7.27299053, 0.99893977, 0.99944028, 0.49325873],
+                             [- 6.27333772, -0.00034706, 0.00021260, 7.27299067, 0.99893989, 0.99944034, 0.49325877],
+                             [- 6.27333782, -0.00034702, 0.00021258, 7.27299080, 0.99894001, 0.99944040, 0.49325864],
+                             [- 6.27333791, -0.00034698, 0.00021255, 7.27299093, 0.99894013, 0.99944046, 0.49325857],
+                             [- 6.27333800, -0.00034694, 0.00021253, 7.27299106, 0.99894025, 0.99944053, 0.49325852],
+                             [- 6.27333810, -0.00034690, 0.00021251, 7.27299119, 0.99894036, 0.99944059, 0.49325872],
+                             [- 6.27333819, -0.00034686, 0.00021248, 7.27299133, 0.99894048, 0.99944065, 0.49325865],
+                             [- 6.27333828, -0.00034683, 0.00021246, 7.27299146, 0.99894060, 0.99944072, 0.49325884],
+                             [- 6.27333838, -0.00034679, 0.00021244, 7.27299159, 0.99894072, 0.99944078, 0.49325864],
+                             [- 6.27333847, -0.00034675, 0.00021241, 7.27299172, 0.99894084, 0.99944084, 0.49325865],
+                             [- 6.27333856, -0.00034671, 0.00021239, 7.27299185, 0.99894096, 0.99944090, 0.49325871],
+                             [- 6.27333866, -0.00034667, 0.00021236, 7.27299199, 0.99894108, 0.99944097, 0.49325862],
+                             [- 6.27333875, -0.00034663, 0.00021234, 7.27299212, 0.99894120, 0.99944103, 0.49325892],
+                             [- 6.27333884, -0.00034659, 0.00021232, 7.27299225, 0.99894131, 0.99944109, 0.49325886],
+                             [- 6.27333893, -0.00034655, 0.00021229, 7.27299238, 0.99894143, 0.99944115, 0.49325892],
+                             [- 6.27333903, -0.00034652, 0.00021227, 7.27299251, 0.99894155, 0.99944122, 0.49325878],
+                             [- 6.27333912, -0.00034648, 0.00021225, 7.27299264, 0.99894167, 0.99944128, 0.49325893],
+                             [- 6.27333921, -0.00034644, 0.00021222, 7.27299278, 0.99894179, 0.99944134, 0.49325882],
+                             [- 6.27333931, -0.00034640, 0.00021220, 7.27299291, 0.99894191, 0.99944140, 0.49325880],
+                             [- 6.27333940, -0.00034636, 0.00021217, 7.27299304, 0.99894202, 0.99944147, 0.49325884],
+                             [- 6.27333949, -0.00034632, 0.00021215, 7.27299317, 0.99894214, 0.99944153, 0.49325871],
+                             [- 6.27333958, -0.00034628, 0.00021213, 7.27299330, 0.99894226, 0.99944159, 0.49325888],
+                             [- 6.27333968, -0.00034624, 0.00021210, 7.27299343, 0.99894238, 0.99944165, 0.49325907],
+                             [- 6.27333977, -0.00034620, 0.00021208, 7.27299356, 0.99894250, 0.99944172, 0.49325884],
+                             [- 6.27333986, -0.00034617, 0.00021206, 7.27299370, 0.99894262, 0.99944178, 0.49325906],
+                             [- 6.27333995, -0.00034613, 0.00021203, 7.27299383, 0.99894273, 0.99944184, 0.49325903],
+                             [- 6.27334005, -0.00034609, 0.00021201, 7.27299396, 0.99894285, 0.99944190, 0.49325895],
+                             [- 6.27334014, -0.00034605, 0.00021198, 7.27299409, 0.99894297, 0.99944197, 0.49325883],
+                             [- 6.27334023, -0.00034601, 0.00021196, 7.27299422, 0.99894309, 0.99944203, 0.49325893],
+                             [- 6.27334033, -0.00034597, 0.00021194, 7.27299435, 0.99894321, 0.99944209, 0.49325903],
+                             [- 6.27334042, -0.00034593, 0.00021191, 7.27299448, 0.99894333, 0.99944215, 0.49325919],
+                             [- 6.27334051, -0.00034590, 0.00021189, 7.27299461, 0.99894344, 0.99944222, 0.49325911],
+                             [- 6.27334060, -0.00034586, 0.00021187, 7.27299475, 0.99894356, 0.99944228, 0.49325916],
+                             [- 6.27334070, -0.00034582, 0.00021184, 7.27299488, 0.99894368, 0.99944234, 0.49325910],
+                             [- 6.27334079, -0.00034578, 0.00021182, 7.27299501, 0.99894380, 0.99944240, 0.49325905],
+                             [- 6.27334088, -0.00034574, 0.00021179, 7.27299514, 0.99894392, 0.99944246, 0.49325907],
+                             [- 6.27334097, -0.00034570, 0.00021177, 7.27299527, 0.99894403, 0.99944253, 0.49325918],
+                             [- 6.27334107, -0.00034566, 0.00021175, 7.27299540, 0.99894415, 0.99944259, 0.49325910],
+                             [- 6.27334116, -0.00034563, 0.00021172, 7.27299553, 0.99894427, 0.99944265, 0.49325909],
+                             [- 6.27334125, -0.00034559, 0.00021170, 7.27299566, 0.99894439, 0.99944271, 0.49325903],
+                             [- 6.27334134, -0.00034555, 0.00021168, 7.27299579, 0.99894451, 0.99944278, 0.49325934],
+                             [- 6.27334143, -0.00034551, 0.00021165, 7.27299593, 0.99894462, 0.99944284, 0.49325921],
+                             [- 6.27334153, -0.00034547, 0.00021163, 7.27299606, 0.99894474, 0.99944290, 0.49325916],
+                             [- 6.27334162, -0.00034543, 0.00021161, 7.27299619, 0.99894486, 0.99944296, 0.49325905],
+                             [- 6.27334171, -0.00034539, 0.00021158, 7.27299632, 0.99894498, 0.99944302, 0.49325932],
+                             [- 6.27334180, -0.00034536, 0.00021156, 7.27299645, 0.99894509, 0.99944309, 0.49325918],
+                             [- 6.27334190, -0.00034532, 0.00021153, 7.27299658, 0.99894521, 0.99944315, 0.49325928],
+                             [- 6.27334199, -0.00034528, 0.00021151, 7.27299671, 0.99894533, 0.99944321, 0.49325927],
+                             [- 6.27334208, -0.00034524, 0.00021149, 7.27299684, 0.99894545, 0.99944327, 0.49325910],
+                             [- 6.27334217, -0.00034520, 0.00021146, 7.27299697, 0.99894557, 0.99944334, 0.49325933],
+                             [- 6.27334226, -0.00034516, 0.00021144, 7.27299710, 0.99894568, 0.99944340, 0.49325931],
+                             [- 6.27334236, -0.00034512, 0.00021142, 7.27299723, 0.99894580, 0.99944346, 0.49325913],
+                             [- 6.27334245, -0.00034509, 0.00021139, 7.27299736, 0.99894592, 0.99944352, 0.49325935],
+                             [- 6.27334254, -0.00034505, 0.00021137, 7.27299749, 0.99894604, 0.99944358, 0.49325926],
+                             [- 6.27334263, -0.00034501, 0.00021135, 7.27299762, 0.99894615, 0.99944365, 0.49325931],
+                             [- 6.27334273, -0.00034497, 0.00021132, 7.27299776, 0.99894627, 0.99944371, 0.49325923],
+                             [- 6.27334282, -0.00034493, 0.00021130, 7.27299789, 0.99894639, 0.99944377, 0.49325932],
+                             [- 6.27334291, -0.00034489, 0.00021128, 7.27299802, 0.99894651, 0.99944383, 0.49325937],
+                             [- 6.27334300, -0.00034486, 0.00021125, 7.27299815, 0.99894662, 0.99944389, 0.49325925],
+                             [- 6.27334309, -0.00034482, 0.00021123, 7.27299828, 0.99894674, 0.99944396, 0.49325938],
+                             [- 6.27334319, -0.00034478, 0.00021120, 7.27299841, 0.99894686, 0.99944402, 0.49325937],
+                             [- 6.27334328, -0.00034474, 0.00021118, 7.27299854, 0.99894697, 0.99944408, 0.49325933],
+                             [- 6.27334337, -0.00034470, 0.00021116, 7.27299867, 0.99894709, 0.99944414, 0.49325964],
+                             [- 6.27334346, -0.00034466, 0.00021113, 7.27299880, 0.99894721, 0.99944420, 0.49325932],
+                             [- 6.27334355, -0.00034462, 0.00021111, 7.27299893, 0.99894733, 0.99944426, 0.49325939],
+                             [- 6.27334364, -0.00034459, 0.00021109, 7.27299906, 0.99894744, 0.99944433, 0.49325953],
+                             [- 6.27334374, -0.00034455, 0.00021106, 7.27299919, 0.99894756, 0.99944439, 0.49325955],
+                             [- 6.27334383, -0.00034451, 0.00021104, 7.27299932, 0.99894768, 0.99944445, 0.49325952],
+                             [- 6.27334392, -0.00034447, 0.00021102, 7.27299945, 0.99894780, 0.99944451, 0.49325957],
+                             [- 6.27334401, -0.00034443, 0.00021099, 7.27299958, 0.99894791, 0.99944457, 0.49325952],
+                             [- 6.27334410, -0.00034439, 0.00021097, 7.27299971, 0.99894803, 0.99944464, 0.49325948],
+                             [- 6.27334420, -0.00034436, 0.00021095, 7.27299984, 0.99894815, 0.99944470, 0.49325953],
+                             [- 6.27334429, -0.00034432, 0.00021092, 7.27299997, 0.99894826, 0.99944476, 0.49325969],
+                             [- 6.27334438, -0.00034428, 0.00021090, 7.27300010, 0.99894838, 0.99944482, 0.49325951],
+                             [- 6.27334447, -0.00034424, 0.00021088, 7.27300023, 0.99894850, 0.99944488, 0.49325964],
+                             [- 6.27334456, -0.00034420, 0.00021085, 7.27300036, 0.99894861, 0.99944494, 0.49325959],
+                             [- 6.27334465, -0.00034417, 0.00021083, 7.27300049, 0.99894873, 0.99944501, 0.49325984],
+                             [- 6.27334475, -0.00034413, 0.00021081, 7.27300062, 0.99894885, 0.99944507, 0.49325961],
+                             [- 6.27334484, -0.00034409, 0.00021078, 7.27300075, 0.99894897, 0.99944513, 0.49325970],
+                             [- 6.27334493, -0.00034405, 0.00021076, 7.27300088, 0.99894908, 0.99944519, 0.49325973],
+                             [- 6.27334502, -0.00034401, 0.00021073, 7.27300101, 0.99894920, 0.99944525, 0.49325965],
+                             [- 6.27334511, -0.00034397, 0.00021071, 7.27300114, 0.99894932, 0.99944531, 0.49325961],
+                             [- 6.27334520, -0.00034394, 0.00021069, 7.27300127, 0.99894943, 0.99944538, 0.49325970],
+                             [- 6.27334529, -0.00034390, 0.00021066, 7.27300140, 0.99894955, 0.99944544, 0.49325947],
+                             [- 6.27334539, -0.00034386, 0.00021064, 7.27300153, 0.99894967, 0.99944550, 0.49325970],
+                             [- 6.27334548, -0.00034382, 0.00021062, 7.27300166, 0.99894978, 0.99944556, 0.49325986],
+                             [- 6.27334557, -0.00034378, 0.00021059, 7.27300179, 0.99894990, 0.99944562, 0.49325975],
+                             [- 6.27334566, -0.00034374, 0.00021057, 7.27300192, 0.99895002, 0.99944568, 0.49325973],
+                             [- 6.27334575, -0.00034371, 0.00021055, 7.27300205, 0.99895013, 0.99944575, 0.49325990],
+                             [- 6.27334584, -0.00034367, 0.00021052, 7.27300217, 0.99895025, 0.99944581, 0.49325987],
+                             [- 6.27334593, -0.00034363, 0.00021050, 7.27300230, 0.99895037, 0.99944587, 0.49325975],
+                             [- 6.27334603, -0.00034359, 0.00021048, 7.27300243, 0.99895048, 0.99944593, 0.49325986],
+                             [- 6.27334612, -0.00034355, 0.00021045, 7.27300256, 0.99895060, 0.99944599, 0.49325980],
+                             [- 6.27334621, -0.00034352, 0.00021043, 7.27300269, 0.99895072, 0.99944605, 0.49325999],
+                             [- 6.27334630, -0.00034348, 0.00021041, 7.27300282, 0.99895083, 0.99944611, 0.49326005],
+                             [- 6.27334639, -0.00034344, 0.00021038, 7.27300295, 0.99895095, 0.99944618, 0.49325989],
+                             [- 6.27334648, -0.00034340, 0.00021036, 7.27300308, 0.99895106, 0.99944624, 0.49325982],
+                             [- 6.27334657, -0.00034336, 0.00021034, 7.27300321, 0.99895118, 0.99944630, 0.49326004],
+                             [- 6.27334666, -0.00034333, 0.00021031, 7.27300334, 0.99895130, 0.99944636, 0.49325987],
+                             [- 6.27334676, -0.00034329, 0.00021029, 7.27300347, 0.99895141, 0.99944642, 0.49326003],
+                             [- 6.27334685, -0.00034325, 0.00021027, 7.27300360, 0.99895153, 0.99944648, 0.49325986],
+                             [- 6.27334694, -0.00034321, 0.00021024, 7.27300373, 0.99895165, 0.99944654, 0.49326013],
+                             [- 6.27334703, -0.00034317, 0.00021022, 7.27300386, 0.99895176, 0.99944661, 0.49326001],
+                             [- 6.27334712, -0.00034313, 0.00021020, 7.27300399, 0.99895188, 0.99944667, 0.49325997],
+                             [- 6.27334721, -0.00034310, 0.00021017, 7.27300411, 0.99895199, 0.99944673, 0.49325982],
+                             [- 6.27334730, -0.00034306, 0.00021015, 7.27300424, 0.99895211, 0.99944679, 0.49326004],
+                             [- 6.27334739, -0.00034302, 0.00021013, 7.27300437, 0.99895223, 0.99944685, 0.49326000],
+                             [- 6.27334748, -0.00034298, 0.00021010, 7.27300450, 0.99895234, 0.99944691, 0.49326002],
+                             [- 6.27334758, -0.00034294, 0.00021008, 7.27300463, 0.99895246, 0.99944697, 0.49326019],
+                             [- 6.27334767, -0.00034291, 0.00021006, 7.27300476, 0.99895258, 0.99944704, 0.49326022],
+                             [- 6.27334776, -0.00034287, 0.00021003, 7.27300489, 0.99895269, 0.99944710, 0.49325991],
+                             [- 6.27334785, -0.00034283, 0.00021001, 7.27300502, 0.99895281, 0.99944716, 0.49326017],
+                             [- 6.27334794, -0.00034279, 0.00020999, 7.27300515, 0.99895292, 0.99944722, 0.49326012],
+                             [- 6.27334803, -0.00034276, 0.00020996, 7.27300527, 0.99895304, 0.99944728, 0.49326022],
+                             [- 6.27334812, -0.00034272, 0.00020994, 7.27300540, 0.99895316, 0.99944734, 0.49326001],
+                             [- 6.27334821, -0.00034268, 0.00020992, 7.27300553, 0.99895327, 0.99944740, 0.49326024],
+                             [- 6.27334830, -0.00034264, 0.00020989, 7.27300566, 0.99895339, 0.99944746, 0.49326021],
+                             [- 6.27334839, -0.00034260, 0.00020987, 7.27300579, 0.99895350, 0.99944753, 0.49326029],
+                             [- 6.27334848, -0.00034257, 0.00020985, 7.27300592, 0.99895362, 0.99944759, 0.49326016],
+                             [- 6.27334857, -0.00034253, 0.00020983, 7.27300605, 0.99895373, 0.99944765, 0.49326016],
+                             [- 6.27334867, -0.00034249, 0.00020980, 7.27300618, 0.99895385, 0.99944771, 0.49326045],
+                             [- 6.27334876, -0.00034245, 0.00020978, 7.27300630, 0.99895397, 0.99944777, 0.49326011],
+                             [- 6.27334885, -0.00034241, 0.00020976, 7.27300643, 0.99895408, 0.99944783, 0.49326023],
+                             [- 6.27334894, -0.00034238, 0.00020973, 7.27300656, 0.99895420, 0.99944789, 0.49326007],
+                             [- 6.27334903, -0.00034234, 0.00020971, 7.27300669, 0.99895431, 0.99944795, 0.49326021],
+                             [- 6.27334912, -0.00034230, 0.00020969, 7.27300682, 0.99895443, 0.99944801, 0.49326027],
+                             [- 6.27334921, -0.00034226, 0.00020966, 7.27300695, 0.99895454, 0.99944807, 0.49326040],
+                             [- 6.27334930, -0.00034222, 0.00020964, 7.27300708, 0.99895466, 0.99944814, 0.49326032],
+                             [- 6.27334939, -0.00034219, 0.00020962, 7.27300720, 0.99895478, 0.99944820, 0.49326028],
+                             [- 6.27334948, -0.00034215, 0.00020959, 7.27300733, 0.99895489, 0.99944826, 0.49326022],
+                             [- 6.27334957, -0.00034211, 0.00020957, 7.27300746, 0.99895501, 0.99944832, 0.49326044],
+                             [- 6.27334966, -0.00034207, 0.00020955, 7.27300759, 0.99895512, 0.99944838, 0.49326036],
+                             [- 6.27334975, -0.00034204, 0.00020952, 7.27300772, 0.99895524, 0.99944844, 0.49326052],
+                             [- 6.27334984, -0.00034200, 0.00020950, 7.27300785, 0.99895535, 0.99944850, 0.49326050],
+                             [- 6.27334993, -0.00034196, 0.00020948, 7.27300797, 0.99895547, 0.99944856, 0.49326047],
+                             [- 6.27335002, -0.00034192, 0.00020945, 7.27300810, 0.99895558, 0.99944862, 0.49326049],
+                             [- 6.27335011, -0.00034188, 0.00020943, 7.27300823, 0.99895570, 0.99944868, 0.49326038],
+                             [- 6.27335021, -0.00034185, 0.00020941, 7.27300836, 0.99895582, 0.99944875, 0.49326054],
+                             [- 6.27335030, -0.00034181, 0.00020938, 7.27300849, 0.99895593, 0.99944881, 0.49326041],
+                             [- 6.27335039, -0.00034177, 0.00020936, 7.27300861, 0.99895605, 0.99944887, 0.49326059],
+                             [- 6.27335048, -0.00034173, 0.00020934, 7.27300874, 0.99895616, 0.99944893, 0.49326058],
+                             [- 6.27335057, -0.00034170, 0.00020932, 7.27300887, 0.99895628, 0.99944899, 0.49326043],
+                             [- 6.27335066, -0.00034166, 0.00020929, 7.27300900, 0.99895639, 0.99944905, 0.49326062],
+                             [- 6.27335075, -0.00034162, 0.00020927, 7.27300913, 0.99895651, 0.99944911, 0.49326067],
+                             [- 6.27335084, -0.00034158, 0.00020925, 7.27300925, 0.99895662, 0.99944917, 0.49326078],
+                             [- 6.27335093, -0.00034154, 0.00020922, 7.27300938, 0.99895674, 0.99944923, 0.49326065],
+                             [- 6.27335102, -0.00034151, 0.00020920, 7.27300951, 0.99895685, 0.99944929, 0.49326059],
+                             [- 6.27335111, -0.00034147, 0.00020918, 7.27300964, 0.99895697, 0.99944935, 0.49326055],
+                             [- 6.27335120, -0.00034143, 0.00020915, 7.27300977, 0.99895708, 0.99944941, 0.49326066],
+                             [- 6.27335129, -0.00034139, 0.00020913, 7.27300989, 0.99895720, 0.99944948, 0.49326077],
+                             [- 6.27335138, -0.00034136, 0.00020911, 7.27301002, 0.99895731, 0.99944954, 0.49326066],
+                             [- 6.27335147, -0.00034132, 0.00020908, 7.27301015, 0.99895743, 0.99944960, 0.49326075],
+                             [- 6.27335156, -0.00034128, 0.00020906, 7.27301028, 0.99895754, 0.99944966, 0.49326055],
+                             [- 6.27335165, -0.00034124, 0.00020904, 7.27301040, 0.99895766, 0.99944972, 0.49326086],
+                             [- 6.27335174, -0.00034121, 0.00020902, 7.27301053, 0.99895777, 0.99944978, 0.49326055],
+                             [- 6.27335183, -0.00034117, 0.00020899, 7.27301066, 0.99895789, 0.99944984, 0.49326069],
+                             [- 6.27335192, -0.00034113, 0.00020897, 7.27301079, 0.99895800, 0.99944990, 0.49326076],
+                             [- 6.27335201, -0.00034109, 0.00020895, 7.27301092, 0.99895812, 0.99944996, 0.49326064],
+                             [- 6.27335210, -0.00034106, 0.00020892, 7.27301104, 0.99895823, 0.99945002, 0.49326064],
+                             [- 6.27335219, -0.00034102, 0.00020890, 7.27301117, 0.99895835, 0.99945008, 0.49326079],
+                             [- 6.27335228, -0.00034098, 0.00020888, 7.27301130, 0.99895846, 0.99945014, 0.49326094],
+                             [- 6.27335237, -0.00034094, 0.00020885, 7.27301143, 0.99895858, 0.99945020, 0.49326073],
+                             [- 6.27335246, -0.00034091, 0.00020883, 7.27301155, 0.99895869, 0.99945026, 0.49326067],
+                             [- 6.27335255, -0.00034087, 0.00020881, 7.27301168, 0.99895881, 0.99945032, 0.49326096],
+                             [- 6.27335264, -0.00034083, 0.00020878, 7.27301181, 0.99895892, 0.99945038, 0.49326074],
+                             [- 6.27335273, -0.00034079, 0.00020876, 7.27301194, 0.99895903, 0.99945045, 0.49326072],
+                             [- 6.27335282, -0.00034076, 0.00020874, 7.27301206, 0.99895915, 0.99945051, 0.49326097],
+                             [- 6.27335291, -0.00034072, 0.00020872, 7.27301219, 0.99895926, 0.99945057, 0.49326095],
+                             [- 6.27335300, -0.00034068, 0.00020869, 7.27301232, 0.99895938, 0.99945063, 0.49326083],
+                             [- 6.27335309, -0.00034064, 0.00020867, 7.27301244, 0.99895949, 0.99945069, 0.49326094],
+                             [- 6.27335318, -0.00034061, 0.00020865, 7.27301257, 0.99895961, 0.99945075, 0.49326071],
+                             [- 6.27335327, -0.00034057, 0.00020862, 7.27301270, 0.99895972, 0.99945081, 0.49326094],
+                             [- 6.27335336, -0.00034053, 0.00020860, 7.27301283, 0.99895984, 0.99945087, 0.49326119],
+                             [- 6.27335345, -0.00034049, 0.00020858, 7.27301295, 0.99895995, 0.99945093, 0.49326102],
+                             [- 6.27335354, -0.00034046, 0.00020856, 7.27301308, 0.99896007, 0.99945099, 0.49326095],
+                             [- 6.27335363, -0.00034042, 0.00020853, 7.27301321, 0.99896018, 0.99945105, 0.49326111],
+                             [- 6.27335372, -0.00034038, 0.00020851, 7.27301333, 0.99896029, 0.99945111, 0.49326093],
+                             [- 6.27335380, -0.00034034, 0.00020849, 7.27301346, 0.99896041, 0.99945117, 0.49326092],
+                             [- 6.27335389, -0.00034031, 0.00020846, 7.27301359, 0.99896052, 0.99945123, 0.49326086],
+                             [- 6.27335398, -0.00034027, 0.00020844, 7.27301372, 0.99896064, 0.99945129, 0.49326111],
+                             [- 6.27335407, -0.00034023, 0.00020842, 7.27301384, 0.99896075, 0.99945135, 0.49326085],
+                             [- 6.27335416, -0.00034019, 0.00020839, 7.27301397, 0.99896087, 0.99945141, 0.49326107],
+                             [- 6.27335425, -0.00034016, 0.00020837, 7.27301410, 0.99896098, 0.99945147, 0.49326138],
+                             [- 6.27335434, -0.00034012, 0.00020835, 7.27301422, 0.99896109, 0.99945153, 0.49326107],
+                             [- 6.27335443, -0.00034008, 0.00020833, 7.27301435, 0.99896121, 0.99945159, 0.49326110],
+                             [- 6.27335452, -0.00034004, 0.00020830, 7.27301448, 0.99896132, 0.99945165, 0.49326107],
+                             [- 6.27335461, -0.00034001, 0.00020828, 7.27301460, 0.99896144, 0.99945171, 0.49326111],
+                             [- 6.27335470, -0.00033997, 0.00020826, 7.27301473, 0.99896155, 0.99945177, 0.49326094],
+                             [- 6.27335479, -0.00033993, 0.00020823, 7.27301486, 0.99896166, 0.99945183, 0.49326116],
+                             [- 6.27335488, -0.00033989, 0.00020821, 7.27301498, 0.99896178, 0.99945189, 0.49326119],
+                             [- 6.27335497, -0.00033986, 0.00020819, 7.27301511, 0.99896189, 0.99945195, 0.49326130],
+                             [- 6.27335506, -0.00033982, 0.00020817, 7.27301524, 0.99896201, 0.99945201, 0.49326119],
+                             [- 6.27335515, -0.00033978, 0.00020814, 7.27301536, 0.99896212, 0.99945207, 0.49326105],
+                             [- 6.27335524, -0.00033975, 0.00020812, 7.27301549, 0.99896223, 0.99945213, 0.49326119],
+                             [- 6.27335533, -0.00033971, 0.00020810, 7.27301562, 0.99896235, 0.99945219, 0.49326118],
+                             [- 6.27335541, -0.00033967, 0.00020807, 7.27301574, 0.99896246, 0.99945225, 0.49326126],
+                             [- 6.27335550, -0.00033963, 0.00020805, 7.27301587, 0.99896258, 0.99945231, 0.49326104],
+                             [- 6.27335559, -0.00033960, 0.00020803, 7.27301600, 0.99896269, 0.99945237, 0.49326124],
+                             [- 6.27335568, -0.00033956, 0.00020801, 7.27301612, 0.99896280, 0.99945243, 0.49326121],
+                             [- 6.27335577, -0.00033952, 0.00020798, 7.27301625, 0.99896292, 0.99945249, 0.49326126],
+                             [- 6.27335586, -0.00033948, 0.00020796, 7.27301638, 0.99896303, 0.99945255, 0.49326146],
+                             [- 6.27335595, -0.00033945, 0.00020794, 7.27301650, 0.99896315, 0.99945261, 0.49326123],
+                             [- 6.27335604, -0.00033941, 0.00020791, 7.27301663, 0.99896326, 0.99945267, 0.49326137],
+                             [- 6.27335613, -0.00033937, 0.00020789, 7.27301675, 0.99896337, 0.99945274, 0.49326124],
+                             [- 6.27335622, -0.00033934, 0.00020787, 7.27301688, 0.99896349, 0.99945279, 0.49326144],
+                             [- 6.27335631, -0.00033930, 0.00020785, 7.27301701, 0.99896360, 0.99945286, 0.49326118],
+                             [- 6.27335639, -0.00033926, 0.00020782, 7.27301713, 0.99896371, 0.99945291, 0.49326131],
+                             [- 6.27335648, -0.00033922, 0.00020780, 7.27301726, 0.99896383, 0.99945297, 0.49326131],
+                             [- 6.27335657, -0.00033919, 0.00020778, 7.27301739, 0.99896394, 0.99945303, 0.49326137],
+                             [- 6.27335666, -0.00033915, 0.00020776, 7.27301751, 0.99896405, 0.99945309, 0.49326160],
+                             [- 6.27335675, -0.00033911, 0.00020773, 7.27301764, 0.99896417, 0.99945315, 0.49326160],
+                             [- 6.27335684, -0.00033908, 0.00020771, 7.27301776, 0.99896428, 0.99945321, 0.49326123],
+                             [- 6.27335693, -0.00033904, 0.00020769, 7.27301789, 0.99896439, 0.99945327, 0.49326161],
+                             [- 6.27335702, -0.00033900, 0.00020766, 7.27301802, 0.99896451, 0.99945333, 0.49326152],
+                             [- 6.27335711, -0.00033896, 0.00020764, 7.27301814, 0.99896462, 0.99945339, 0.49326143],
+                             [- 6.27335720, -0.00033893, 0.00020762, 7.27301827, 0.99896473, 0.99945345, 0.49326145],
+                             [- 6.27335728, -0.00033889, 0.00020760, 7.27301839, 0.99896485, 0.99945351, 0.49326173],
+                             [- 6.27335737, -0.00033885, 0.00020757, 7.27301852, 0.99896496, 0.99945357, 0.49326144],
+                             [- 6.27335746, -0.00033882, 0.00020755, 7.27301865, 0.99896507, 0.99945363, 0.49326151],
+                             [- 6.27335755, -0.00033878, 0.00020753, 7.27301877, 0.99896519, 0.99945369, 0.49326137],
+                             [- 6.27335764, -0.00033874, 0.00020751, 7.27301890, 0.99896530, 0.99945375, 0.49326159],
+                             [- 6.27335773, -0.00033870, 0.00020748, 7.27301902, 0.99896541, 0.99945381, 0.49326170],
+                             [- 6.27335782, -0.00033867, 0.00020746, 7.27301915, 0.99896553, 0.99945387, 0.49326167],
+                             [- 6.27335791, -0.00033863, 0.00020744, 7.27301927, 0.99896564, 0.99945393, 0.49326166],
+                             [- 6.27335799, -0.00033859, 0.00020741, 7.27301940, 0.99896575, 0.99945399, 0.49326169],
+                             [- 6.27335808, -0.00033856, 0.00020739, 7.27301953, 0.99896587, 0.99945405, 0.49326162],
+                             [- 6.27335817, -0.00033852, 0.00020737, 7.27301965, 0.99896598, 0.99945411, 0.49326183],
+                             [- 6.27335826, -0.00033848, 0.00020735, 7.27301978, 0.99896609, 0.99945417, 0.49326173],
+                             [- 6.27335835, -0.00033845, 0.00020732, 7.27301990, 0.99896621, 0.99945423, 0.49326171],
+                             [- 6.27335844, -0.00033841, 0.00020730, 7.27302003, 0.99896632, 0.99945429, 0.49326166],
+                             [- 6.27335853, -0.00033837, 0.00020728, 7.27302015, 0.99896643, 0.99945435, 0.49326165],
+                             [- 6.27335861, -0.00033833, 0.00020726, 7.27302028, 0.99896655, 0.99945441, 0.49326181],
+                             [- 6.27335870, -0.00033830, 0.00020723, 7.27302041, 0.99896666, 0.99945447, 0.49326156],
+                             [- 6.27335879, -0.00033826, 0.00020721, 7.27302053, 0.99896677, 0.99945453, 0.49326193],
+                             [- 6.27335888, -0.00033822, 0.00020719, 7.27302066, 0.99896688, 0.99945459, 0.49326181],
+                             [- 6.27335897, -0.00033819, 0.00020716, 7.27302078, 0.99896700, 0.99945465, 0.49326163],
+                             [- 6.27335906, -0.00033815, 0.00020714, 7.27302091, 0.99896711, 0.99945471, 0.49326173],
+                             [- 6.27335915, -0.00033811, 0.00020712, 7.27302103, 0.99896722, 0.99945477, 0.49326188],
+                             [- 6.27335923, -0.00033808, 0.00020710, 7.27302116, 0.99896734, 0.99945483, 0.49326193],
+                             [- 6.27335932, -0.00033804, 0.00020707, 7.27302128, 0.99896745, 0.99945489, 0.49326203],
+                             [- 6.27335941, -0.00033800, 0.00020705, 7.27302141, 0.99896756, 0.99945495, 0.49326181],
+                             [- 6.27335950, -0.00033797, 0.00020703, 7.27302153, 0.99896767, 0.99945501, 0.49326178],
+                             [- 6.27335959, -0.00033793, 0.00020701, 7.27302166, 0.99896779, 0.99945507, 0.49326183],
+                             [- 6.27335968, -0.00033789, 0.00020698, 7.27302178, 0.99896790, 0.99945512, 0.49326183],
+                             [- 6.27335976, -0.00033785, 0.00020696, 7.27302191, 0.99896801, 0.99945518, 0.49326190],
+                             [- 6.27335985, -0.00033782, 0.00020694, 7.27302203, 0.99896813, 0.99945524, 0.49326204],
+                             [- 6.27335994, -0.00033778, 0.00020692, 7.27302216, 0.99896824, 0.99945530, 0.49326197],
+                             [- 6.27336003, -0.00033774, 0.00020689, 7.27302228, 0.99896835, 0.99945536, 0.49326200],
+                             [- 6.27336012, -0.00033771, 0.00020687, 7.27302241, 0.99896846, 0.99945542, 0.49326187],
+                             [- 6.27336021, -0.00033767, 0.00020685, 7.27302253, 0.99896858, 0.99945548, 0.49326214],
+                             [- 6.27336029, -0.00033763, 0.00020683, 7.27302266, 0.99896869, 0.99945554, 0.49326210],
+                             [- 6.27336038, -0.00033760, 0.00020680, 7.27302278, 0.99896880, 0.99945560, 0.49326210],
+                             [- 6.27336047, -0.00033756, 0.00020678, 7.27302291, 0.99896891, 0.99945566, 0.49326201],
+                             [- 6.27336056, -0.00033752, 0.00020676, 7.27302303, 0.99896903, 0.99945572, 0.49326223],
+                             [- 6.27336065, -0.00033749, 0.00020674, 7.27302316, 0.99896914, 0.99945578, 0.49326214],
+                             [- 6.27336073, -0.00033745, 0.00020671, 7.27302328, 0.99896925, 0.99945584, 0.49326184],
+                             [- 6.27336082, -0.00033741, 0.00020669, 7.27302341, 0.99896936, 0.99945590, 0.49326190],
+                             [- 6.27336091, -0.00033738, 0.00020667, 7.27302353, 0.99896948, 0.99945596, 0.49326192],
+                             [- 6.27336100, -0.00033734, 0.00020665, 7.27302366, 0.99896959, 0.99945602, 0.49326215],
+                             [- 6.27336109, -0.00033730, 0.00020662, 7.27302378, 0.99896970, 0.99945607, 0.49326198],
+                             [- 6.27336117, -0.00033727, 0.00020660, 7.27302391, 0.99896981, 0.99945613, 0.49326211],
+                             [- 6.27336126, -0.00033723, 0.00020658, 7.27302403, 0.99896992, 0.99945619, 0.49326202],
+                             [- 6.27336135, -0.00033719, 0.00020656, 7.27302416, 0.99897004, 0.99945625, 0.49326208],
+                             [- 6.27336144, -0.00033716, 0.00020653, 7.27302428, 0.99897015, 0.99945631, 0.49326216],
+                             [- 6.27336153, -0.00033712, 0.00020651, 7.27302441, 0.99897026, 0.99945637, 0.49326199],
+                             [- 6.27336161, -0.00033708, 0.00020649, 7.27302453, 0.99897037, 0.99945643, 0.49326218],
+                             [- 6.27336170, -0.00033705, 0.00020647, 7.27302466, 0.99897049, 0.99945649, 0.49326214],
+                             [- 6.27336179, -0.00033701, 0.00020644, 7.27302478, 0.99897060, 0.99945655, 0.49326240],
+                             [- 6.27336188, -0.00033697, 0.00020642, 7.27302491, 0.99897071, 0.99945661, 0.49326199],
+                             [- 6.27336197, -0.00033694, 0.00020640, 7.27302503, 0.99897082, 0.99945667, 0.49326203],
+                             [- 6.27336205, -0.00033690, 0.00020638, 7.27302515, 0.99897093, 0.99945673, 0.49326224],
+                             [- 6.27336214, -0.00033686, 0.00020635, 7.27302528, 0.99897105, 0.99945679, 0.49326220],
+                             [- 6.27336223, -0.00033683, 0.00020633, 7.27302540, 0.99897116, 0.99945684, 0.49326222],
+                             [- 6.27336232, -0.00033679, 0.00020631, 7.27302553, 0.99897127, 0.99945690, 0.49326242],
+                             [- 6.27336240, -0.00033675, 0.00020629, 7.27302565, 0.99897138, 0.99945696, 0.49326213],
+                             [- 6.27336249, -0.00033672, 0.00020626, 7.27302578, 0.99897149, 0.99945702, 0.49326219],
+                             [- 6.27336258, -0.00033668, 0.00020624, 7.27302590, 0.99897161, 0.99945708, 0.49326219],
+                             [- 6.27336267, -0.00033664, 0.00020622, 7.27302603, 0.99897172, 0.99945714, 0.49326250],
+                             [- 6.27336275, -0.00033661, 0.00020620, 7.27302615, 0.99897183, 0.99945720, 0.49326244],
+                             [- 6.27336284, -0.00033657, 0.00020617, 7.27302627, 0.99897194, 0.99945726, 0.49326221],
+                             [- 6.27336293, -0.00033653, 0.00020615, 7.27302640, 0.99897205, 0.99945732, 0.49326264],
+                             [- 6.27336302, -0.00033650, 0.00020613, 7.27302652, 0.99897216, 0.99945738, 0.49326232],
+                             [- 6.27336311, -0.00033646, 0.00020611, 7.27302665, 0.99897228, 0.99945743, 0.49326230],
+                             [- 6.27336319, -0.00033642, 0.00020608, 7.27302677, 0.99897239, 0.99945749, 0.49326227],
+                             [- 6.27336328, -0.00033639, 0.00020606, 7.27302689, 0.99897250, 0.99945755, 0.49326245],
+                             [- 6.27336337, -0.00033635, 0.00020604, 7.27302702, 0.99897261, 0.99945761, 0.49326242],
+                             [- 6.27336346, -0.00033631, 0.00020602, 7.27302714, 0.99897272, 0.99945767, 0.49326246],
+                             [- 6.27336354, -0.00033628, 0.00020599, 7.27302727, 0.99897283, 0.99945773, 0.49326241],
+                             [- 6.27336363, -0.00033624, 0.00020597, 7.27302739, 0.99897295, 0.99945779, 0.49326240],
+                             [- 6.27336372, -0.00033620, 0.00020595, 7.27302751, 0.99897306, 0.99945785, 0.49326249],
+                             [- 6.27336381, -0.00033617, 0.00020593, 7.27302764, 0.99897317, 0.99945791, 0.49326270],
+                             [- 6.27336389, -0.00033613, 0.00020590, 7.27302776, 0.99897328, 0.99945797, 0.49326235],
+                             [- 6.27336398, -0.00033609, 0.00020588, 7.27302789, 0.99897339, 0.99945802, 0.49326239],
+                             [- 6.27336407, -0.00033606, 0.00020586, 7.27302801, 0.99897350, 0.99945808, 0.49326248],
+                             [- 6.27336415, -0.00033602, 0.00020584, 7.27302813, 0.99897362, 0.99945814, 0.49326264],
+                             [- 6.27336424, -0.00033598, 0.00020582, 7.27302826, 0.99897373, 0.99945820, 0.49326263],
+                             [- 6.27336433, -0.00033595, 0.00020579, 7.27302838, 0.99897384, 0.99945826, 0.49326243],
+                             [- 6.27336442, -0.00033591, 0.00020577, 7.27302851, 0.99897395, 0.99945832, 0.49326267],
+                             [- 6.27336450, -0.00033587, 0.00020575, 7.27302863, 0.99897406, 0.99945838, 0.49326234],
+                             [- 6.27336459, -0.00033584, 0.00020573, 7.27302875, 0.99897417, 0.99945844, 0.49326251],
+                             [- 6.27336468, -0.00033580, 0.00020570, 7.27302888, 0.99897428, 0.99945849, 0.49326259],
+                             [- 6.27336477, -0.00033577, 0.00020568, 7.27302900, 0.99897439, 0.99945855, 0.49326266],
+                             [- 6.27336485, -0.00033573, 0.00020566, 7.27302912, 0.99897451, 0.99945861, 0.49326257],
+                             [- 6.27336494, -0.00033569, 0.00020564, 7.27302925, 0.99897462, 0.99945867, 0.49326257],
+                             [- 6.27336503, -0.00033566, 0.00020561, 7.27302937, 0.99897473, 0.99945873, 0.49326264],
+                             [- 6.27336511, -0.00033562, 0.00020559, 7.27302949, 0.99897484, 0.99945879, 0.49326274],
+                             [- 6.27336520, -0.00033558, 0.00020557, 7.27302962, 0.99897495, 0.99945885, 0.49326286],
+                             [- 6.27336529, -0.00033555, 0.00020555, 7.27302974, 0.99897506, 0.99945891, 0.49326289],
+                             [- 6.27336538, -0.00033551, 0.00020553, 7.27302986, 0.99897517, 0.99945896, 0.49326274],
+                             [- 6.27336546, -0.00033547, 0.00020550, 7.27302999, 0.99897528, 0.99945902, 0.49326267],
+                             [- 6.27336555, -0.00033544, 0.00020548, 7.27303011, 0.99897540, 0.99945908, 0.49326282],
+                             [- 6.27336564, -0.00033540, 0.00020546, 7.27303023, 0.99897551, 0.99945914, 0.49326268],
+                             [- 6.27336572, -0.00033537, 0.00020544, 7.27303036, 0.99897562, 0.99945920, 0.49326305],
+                             [- 6.27336581, -0.00033533, 0.00020541, 7.27303048, 0.99897573, 0.99945926, 0.49326276],
+                             [- 6.27336590, -0.00033529, 0.00020539, 7.27303060, 0.99897584, 0.99945932, 0.49326281],
+                             [- 6.27336598, -0.00033526, 0.00020537, 7.27303073, 0.99897595, 0.99945937, 0.49326294],
+                             [- 6.27336607, -0.00033522, 0.00020535, 7.27303085, 0.99897606, 0.99945943, 0.49326286],
+                             [- 6.27336616, -0.00033518, 0.00020532, 7.27303097, 0.99897617, 0.99945949, 0.49326281],
+                             [- 6.27336625, -0.00033515, 0.00020530, 7.27303110, 0.99897628, 0.99945955, 0.49326286],
+                             [- 6.27336633, -0.00033511, 0.00020528, 7.27303122, 0.99897639, 0.99945961, 0.49326297],
+                             [- 6.27336642, -0.00033508, 0.00020526, 7.27303134, 0.99897650, 0.99945967, 0.49326279],
+                             [- 6.27336651, -0.00033504, 0.00020524, 7.27303147, 0.99897662, 0.99945973, 0.49326311],
+                             [- 6.27336659, -0.00033500, 0.00020521, 7.27303159, 0.99897673, 0.99945978, 0.49326289],
+                             [- 6.27336668, -0.00033497, 0.00020519, 7.27303171, 0.99897684, 0.99945984, 0.49326305],
+                             [- 6.27336677, -0.00033493, 0.00020517, 7.27303184, 0.99897695, 0.99945990, 0.49326297],
+                             [- 6.27336685, -0.00033489, 0.00020515, 7.27303196, 0.99897706, 0.99945996, 0.49326277],
+                             [- 6.27336694, -0.00033486, 0.00020512, 7.27303208, 0.99897717, 0.99946002, 0.49326308],
+                             [- 6.27336703, -0.00033482, 0.00020510, 7.27303221, 0.99897728, 0.99946008, 0.49326289],
+                             [- 6.27336711, -0.00033479, 0.00020508, 7.27303233, 0.99897739, 0.99946013, 0.49326298],
+                             [- 6.27336720, -0.00033475, 0.00020506, 7.27303245, 0.99897750, 0.99946019, 0.49326300],
+                             [- 6.27336729, -0.00033471, 0.00020504, 7.27303257, 0.99897761, 0.99946025, 0.49326304],
+                             [- 6.27336737, -0.00033468, 0.00020501, 7.27303270, 0.99897772, 0.99946031, 0.49326311],
+                             [- 6.27336746, -0.00033464, 0.00020499, 7.27303282, 0.99897783, 0.99946037, 0.49326309],
+                             [- 6.27336755, -0.00033460, 0.00020497, 7.27303294, 0.99897794, 0.99946043, 0.49326303],
+                             [- 6.27336763, -0.00033457, 0.00020495, 7.27303306, 0.99897805, 0.99946048, 0.49326308],
+                             [- 6.27336772, -0.00033453, 0.00020493, 7.27303319, 0.99897816, 0.99946054, 0.49326287],
+                             [- 6.27336781, -0.00033450, 0.00020490, 7.27303331, 0.99897827, 0.99946060, 0.49326314],
+                             [- 6.27336789, -0.00033446, 0.00020488, 7.27303343, 0.99897839, 0.99946066, 0.49326307],
+                             [- 6.27336798, -0.00033442, 0.00020486, 7.27303356, 0.99897850, 0.99946072, 0.49326307],
+                             [- 6.27336807, -0.00033439, 0.00020484, 7.27303368, 0.99897861, 0.99946078, 0.49326322],
+                             [- 6.27336815, -0.00033435, 0.00020481, 7.27303380, 0.99897872, 0.99946083, 0.49326311],
+                             [- 6.27336824, -0.00033432, 0.00020479, 7.27303392, 0.99897883, 0.99946089, 0.49326322],
+                             [- 6.27336833, -0.00033428, 0.00020477, 7.27303405, 0.99897894, 0.99946095, 0.49326339],
+                             [- 6.27336841, -0.00033424, 0.00020475, 7.27303417, 0.99897905, 0.99946101, 0.49326319],
+                             [- 6.27336850, -0.00033421, 0.00020473, 7.27303429, 0.99897916, 0.99946107, 0.49326315],
+                             [- 6.27336858, -0.00033417, 0.00020470, 7.27303441, 0.99897927, 0.99946113, 0.49326326],
+                             [- 6.27336867, -0.00033413, 0.00020468, 7.27303454, 0.99897938, 0.99946118, 0.49326320],
+                             [- 6.27336876, -0.00033410, 0.00020466, 7.27303466, 0.99897949, 0.99946124, 0.49326335],
+                             [- 6.27336884, -0.00033406, 0.00020464, 7.27303478, 0.99897960, 0.99946130, 0.49326321],
+                             [- 6.27336893, -0.00033403, 0.00020462, 7.27303490, 0.99897971, 0.99946136, 0.49326341],
+                             [- 6.27336902, -0.00033399, 0.00020459, 7.27303503, 0.99897982, 0.99946142, 0.49326319],
+                             [- 6.27336910, -0.00033395, 0.00020457, 7.27303515, 0.99897993, 0.99946147, 0.49326349],
+                             [- 6.27336919, -0.00033392, 0.00020455, 7.27303527, 0.99898004, 0.99946153, 0.49326330],
+                             [- 6.27336927, -0.00033388, 0.00020453, 7.27303539, 0.99898015, 0.99946159, 0.49326316],
+                             [- 6.27336936, -0.00033385, 0.00020451, 7.27303551, 0.99898026, 0.99946165, 0.49326319],
+                             [- 6.27336945, -0.00033381, 0.00020448, 7.27303564, 0.99898037, 0.99946171, 0.49326337],
+                             [- 6.27336953, -0.00033377, 0.00020446, 7.27303576, 0.99898048, 0.99946176, 0.49326350],
+                             [- 6.27336962, -0.00033374, 0.00020444, 7.27303588, 0.99898059, 0.99946182, 0.49326333],
+                             [- 6.27336971, -0.00033370, 0.00020442, 7.27303600, 0.99898070, 0.99946188, 0.49326343],
+                             [- 6.27336979, -0.00033367, 0.00020439, 7.27303613, 0.99898081, 0.99946194, 0.49326342],
+                             [- 6.27336988, -0.00033363, 0.00020437, 7.27303625, 0.99898092, 0.99946200, 0.49326348],
+                             [- 6.27336996, -0.00033359, 0.00020435, 7.27303637, 0.99898103, 0.99946205, 0.49326358],
+                             [- 6.27337005, -0.00033356, 0.00020433, 7.27303649, 0.99898114, 0.99946211, 0.49326344],
+                             [- 6.27337014, -0.00033352, 0.00020431, 7.27303661, 0.99898125, 0.99946217, 0.49326333],
+                             [- 6.27337022, -0.00033349, 0.00020428, 7.27303674, 0.99898136, 0.99946223, 0.49326344],
+                             [- 6.27337031, -0.00033345, 0.00020426, 7.27303686, 0.99898147, 0.99946229, 0.49326346],
+                             [- 6.27337039, -0.00033342, 0.00020424, 7.27303698, 0.99898158, 0.99946234, 0.49326354],
+                             [- 6.27337048, -0.00033338, 0.00020422, 7.27303710, 0.99898169, 0.99946240, 0.49326336],
+                             [- 6.27337057, -0.00033334, 0.00020420, 7.27303722, 0.99898180, 0.99946246, 0.49326349],
+                             [- 6.27337065, -0.00033331, 0.00020417, 7.27303734, 0.99898191, 0.99946252, 0.49326348],
+                             [- 6.27337074, -0.00033327, 0.00020415, 7.27303747, 0.99898202, 0.99946258, 0.49326342],
+                             [- 6.27337082, -0.00033324, 0.00020413, 7.27303759, 0.99898213, 0.99946263, 0.49326343],
+                             [- 6.27337091, -0.00033320, 0.00020411, 7.27303771, 0.99898224, 0.99946269, 0.49326362],
+                             [- 6.27337100, -0.00033316, 0.00020409, 7.27303783, 0.99898234, 0.99946275, 0.49326356],
+                             [- 6.27337108, -0.00033313, 0.00020406, 7.27303795, 0.99898245, 0.99946281, 0.49326362],
+                             [- 6.27337117, -0.00033309, 0.00020404, 7.27303808, 0.99898256, 0.99946287, 0.49326353],
+                             [- 6.27337125, -0.00033306, 0.00020402, 7.27303820, 0.99898267, 0.99946292, 0.49326384],
+                             [- 6.27337134, -0.00033302, 0.00020400, 7.27303832, 0.99898278, 0.99946298, 0.49326355],
+                             [- 6.27337142, -0.00033298, 0.00020398, 7.27303844, 0.99898289, 0.99946304, 0.49326361],
+                             [- 6.27337151, -0.00033295, 0.00020395, 7.27303856, 0.99898300, 0.99946310, 0.49326362],
+                             [- 6.27337160, -0.00033291, 0.00020393, 7.27303868, 0.99898311, 0.99946315, 0.49326349],
+                             [- 6.27337168, -0.00033288, 0.00020391, 7.27303880, 0.99898322, 0.99946321, 0.49326369],
+                             [- 6.27337177, -0.00033284, 0.00020389, 7.27303893, 0.99898333, 0.99946327, 0.49326369],
+                             [- 6.27337185, -0.00033281, 0.00020387, 7.27303905, 0.99898344, 0.99946333, 0.49326369],
+                             [- 6.27337194, -0.00033277, 0.00020385, 7.27303917, 0.99898355, 0.99946338, 0.49326367],
+                             [- 6.27337202, -0.00033273, 0.00020382, 7.27303929, 0.99898366, 0.99946344, 0.49326359],
+                             [- 6.27337211, -0.00033270, 0.00020380, 7.27303941, 0.99898377, 0.99946350, 0.49326376],
+                             [- 6.27337220, -0.00033266, 0.00020378, 7.27303953, 0.99898388, 0.99946356, 0.49326382],
+                             [- 6.27337228, -0.00033263, 0.00020376, 7.27303965, 0.99898399, 0.99946362, 0.49326384],
+                             [- 6.27337237, -0.00033259, 0.00020374, 7.27303978, 0.99898409, 0.99946367, 0.49326379],
+                             [- 6.27337245, -0.00033256, 0.00020371, 7.27303990, 0.99898420, 0.99946373, 0.49326389],
+                             [- 6.27337254, -0.00033252, 0.00020369, 7.27304002, 0.99898431, 0.99946379, 0.49326390],
+                             [- 6.27337262, -0.00033248, 0.00020367, 7.27304014, 0.99898442, 0.99946385, 0.49326379],
+                             [- 6.27337271, -0.00033245, 0.00020365, 7.27304026, 0.99898453, 0.99946390, 0.49326384],
+                             [- 6.27337279, -0.00033241, 0.00020363, 7.27304038, 0.99898464, 0.99946396, 0.49326381],
+                             [- 6.27337288, -0.00033238, 0.00020360, 7.27304050, 0.99898475, 0.99946402, 0.49326372],
+                             [- 6.27337297, -0.00033234, 0.00020358, 7.27304062, 0.99898486, 0.99946408, 0.49326377],
+                             [- 6.27337305, -0.00033231, 0.00020356, 7.27304075, 0.99898497, 0.99946413, 0.49326406],
+                             [- 6.27337314, -0.00033227, 0.00020354, 7.27304087, 0.99898508, 0.99946419, 0.49326380],
+                             [- 6.27337322, -0.00033223, 0.00020352, 7.27304099, 0.99898519, 0.99946425, 0.49326407],
+                             [- 6.27337331, -0.00033220, 0.00020350, 7.27304111, 0.99898529, 0.99946431, 0.49326377],
+                             [- 6.27337339, -0.00033216, 0.00020347, 7.27304123, 0.99898540, 0.99946436, 0.49326399],
+                             [- 6.27337348, -0.00033213, 0.00020345, 7.27304135, 0.99898551, 0.99946442, 0.49326392],
+                             [- 6.27337356, -0.00033209, 0.00020343, 7.27304147, 0.99898562, 0.99946448, 0.49326402],
+                             [- 6.27337365, -0.00033206, 0.00020341, 7.27304159, 0.99898573, 0.99946454, 0.49326407],
+                             [- 6.27337373, -0.00033202, 0.00020339, 7.27304171, 0.99898584, 0.99946459, 0.49326397],
+                             [- 6.27337382, -0.00033198, 0.00020336, 7.27304183, 0.99898595, 0.99946465, 0.49326388],
+                             [- 6.27337390, -0.00033195, 0.00020334, 7.27304196, 0.99898606, 0.99946471, 0.49326400],
+                             [- 6.27337399, -0.00033191, 0.00020332, 7.27304208, 0.99898616, 0.99946477, 0.49326405],
+                             [- 6.27337407, -0.00033188, 0.00020330, 7.27304220, 0.99898627, 0.99946482, 0.49326405],
+                             [- 6.27337416, -0.00033184, 0.00020328, 7.27304232, 0.99898638, 0.99946488, 0.49326395],
+                             [- 6.27337425, -0.00033181, 0.00020326, 7.27304244, 0.99898649, 0.99946494, 0.49326406],
+                             [- 6.27337433, -0.00033177, 0.00020323, 7.27304256, 0.99898660, 0.99946500, 0.49326412],
+                             [- 6.27337442, -0.00033174, 0.00020321, 7.27304268, 0.99898671, 0.99946505, 0.49326418],
+                             [- 6.27337450, -0.00033170, 0.00020319, 7.27304280, 0.99898682, 0.99946511, 0.49326405],
+                             [- 6.27337459, -0.00033166, 0.00020317, 7.27304292, 0.99898693, 0.99946517, 0.49326394],
+                             [- 6.27337467, -0.00033163, 0.00020315, 7.27304304, 0.99898703, 0.99946522, 0.49326407],
+                             [- 6.27337476, -0.00033159, 0.00020312, 7.27304316, 0.99898714, 0.99946528, 0.49326381],
+                             [- 6.27337484, -0.00033156, 0.00020310, 7.27304328, 0.99898725, 0.99946534, 0.49326400],
+                             [- 6.27337493, -0.00033152, 0.00020308, 7.27304340, 0.99898736, 0.99946540, 0.49326414],
+                             [- 6.27337501, -0.00033149, 0.00020306, 7.27304352, 0.99898747, 0.99946545, 0.49326426],
+                             [- 6.27337510, -0.00033145, 0.00020304, 7.27304364, 0.99898758, 0.99946551, 0.49326422],
+                             [- 6.27337518, -0.00033142, 0.00020302, 7.27304376, 0.99898768, 0.99946557, 0.49326412],
+                             [- 6.27337527, -0.00033138, 0.00020299, 7.27304389, 0.99898779, 0.99946563, 0.49326410],
+                             [- 6.27337535, -0.00033135, 0.00020297, 7.27304401, 0.99898790, 0.99946568, 0.49326415],
+                             [- 6.27337544, -0.00033131, 0.00020295, 7.27304413, 0.99898801, 0.99946574, 0.49326422],
+                             [- 6.27337552, -0.00033127, 0.00020293, 7.27304425, 0.99898812, 0.99946580, 0.49326416],
+                             [- 6.27337561, -0.00033124, 0.00020291, 7.27304437, 0.99898823, 0.99946585, 0.49326449],
+                             [- 6.27337569, -0.00033120, 0.00020289, 7.27304449, 0.99898833, 0.99946591, 0.49326425],
+                             [- 6.27337578, -0.00033117, 0.00020286, 7.27304461, 0.99898844, 0.99946597, 0.49326435],
+                             [- 6.27337586, -0.00033113, 0.00020284, 7.27304473, 0.99898855, 0.99946603, 0.49326445],
+                             [- 6.27337594, -0.00033110, 0.00020282, 7.27304485, 0.99898866, 0.99946608, 0.49326455],
+                             [- 6.27337603, -0.00033106, 0.00020280, 7.27304497, 0.99898877, 0.99946614, 0.49326433],
+                             [- 6.27337611, -0.00033103, 0.00020278, 7.27304509, 0.99898888, 0.99946620, 0.49326418],
+                             [- 6.27337620, -0.00033099, 0.00020275, 7.27304521, 0.99898898, 0.99946625, 0.49326429],
+                             [- 6.27337628, -0.00033096, 0.00020273, 7.27304533, 0.99898909, 0.99946631, 0.49326433],
+                             [- 6.27337637, -0.00033092, 0.00020271, 7.27304545, 0.99898920, 0.99946637, 0.49326438],
+                             [- 6.27337645, -0.00033088, 0.00020269, 7.27304557, 0.99898931, 0.99946643, 0.49326440],
+                             [- 6.27337654, -0.00033085, 0.00020267, 7.27304569, 0.99898942, 0.99946648, 0.49326448],
+                             [- 6.27337662, -0.00033081, 0.00020265, 7.27304581, 0.99898952, 0.99946654, 0.49326440],
+                             [- 6.27337671, -0.00033078, 0.00020262, 7.27304593, 0.99898963, 0.99946660, 0.49326441],
+                             [- 6.27337679, -0.00033074, 0.00020260, 7.27304605, 0.99898974, 0.99946665, 0.49326439],
+                             [- 6.27337688, -0.00033071, 0.00020258, 7.27304617, 0.99898985, 0.99946671, 0.49326444],
+                             [- 6.27337696, -0.00033067, 0.00020256, 7.27304629, 0.99898996, 0.99946677, 0.49326437],
+                             [- 6.27337705, -0.00033064, 0.00020254, 7.27304641, 0.99899006, 0.99946682, 0.49326463],
+                             [- 6.27337713, -0.00033060, 0.00020252, 7.27304653, 0.99899017, 0.99946688, 0.49326433],
+                             [- 6.27337721, -0.00033057, 0.00020250, 7.27304665, 0.99899028, 0.99946694, 0.49326452],
+                             [- 6.27337730, -0.00033053, 0.00020247, 7.27304677, 0.99899039, 0.99946700, 0.49326464],
+                             [- 6.27337738, -0.00033050, 0.00020245, 7.27304689, 0.99899050, 0.99946705, 0.49326462],
+                             [- 6.27337747, -0.00033046, 0.00020243, 7.27304701, 0.99899060, 0.99946711, 0.49326446],
+                             [- 6.27337755, -0.00033043, 0.00020241, 7.27304713, 0.99899071, 0.99946717, 0.49326448],
+                             [- 6.27337764, -0.00033039, 0.00020239, 7.27304725, 0.99899082, 0.99946722, 0.49326479],
+                             [- 6.27337772, -0.00033035, 0.00020237, 7.27304737, 0.99899093, 0.99946728, 0.49326445],
+                             [- 6.27337781, -0.00033032, 0.00020234, 7.27304749, 0.99899103, 0.99946734, 0.49326446],
+                             [- 6.27337789, -0.00033028, 0.00020232, 7.27304761, 0.99899114, 0.99946739, 0.49326446],
+                             [- 6.27337797, -0.00033025, 0.00020230, 7.27304773, 0.99899125, 0.99946745, 0.49326456],
+                             [- 6.27337806, -0.00033021, 0.00020228, 7.27304785, 0.99899136, 0.99946751, 0.49326462],
+                             [- 6.27337814, -0.00033018, 0.00020226, 7.27304796, 0.99899146, 0.99946756, 0.49326466],
+                             [- 6.27337823, -0.00033014, 0.00020224, 7.27304808, 0.99899157, 0.99946762, 0.49326469],
+                             [- 6.27337831, -0.00033011, 0.00020221, 7.27304820, 0.99899168, 0.99946768, 0.49326455],
+                             [- 6.27337840, -0.00033007, 0.00020219, 7.27304832, 0.99899179, 0.99946773, 0.49326445],
+                             [- 6.27337848, -0.00033004, 0.00020217, 7.27304844, 0.99899190, 0.99946779, 0.49326466],
+                             [- 6.27337856, -0.00033000, 0.00020215, 7.27304856, 0.99899200, 0.99946785, 0.49326467],
+                             [- 6.27337865, -0.00032997, 0.00020213, 7.27304868, 0.99899211, 0.99946790, 0.49326472],
+                             [- 6.27337873, -0.00032993, 0.00020211, 7.27304880, 0.99899222, 0.99946796, 0.49326465],
+                             [- 6.27337882, -0.00032990, 0.00020208, 7.27304892, 0.99899233, 0.99946802, 0.49326487],
+                             [- 6.27337890, -0.00032986, 0.00020206, 7.27304904, 0.99899243, 0.99946807, 0.49326453],
+                             [- 6.27337899, -0.00032983, 0.00020204, 7.27304916, 0.99899254, 0.99946813, 0.49326462],
+                             [- 6.27337907, -0.00032979, 0.00020202, 7.27304928, 0.99899265, 0.99946819, 0.49326466],
+                             [- 6.27337915, -0.00032976, 0.00020200, 7.27304940, 0.99899275, 0.99946824, 0.49326470],
+                             [- 6.27337924, -0.00032972, 0.00020198, 7.27304952, 0.99899286, 0.99946830, 0.49326485],
+                             [- 6.27337932, -0.00032969, 0.00020196, 7.27304964, 0.99899297, 0.99946836, 0.49326493],
+                             [- 6.27337941, -0.00032965, 0.00020193, 7.27304976, 0.99899308, 0.99946841, 0.49326472],
+                             [- 6.27337949, -0.00032962, 0.00020191, 7.27304987, 0.99899318, 0.99946847, 0.49326466],
+                             [- 6.27337957, -0.00032958, 0.00020189, 7.27304999, 0.99899329, 0.99946853, 0.49326475],
+                             [- 6.27337966, -0.00032955, 0.00020187, 7.27305011, 0.99899340, 0.99946858, 0.49326474],
+                             [- 6.27337974, -0.00032951, 0.00020185, 7.27305023, 0.99899351, 0.99946864, 0.49326494],
+                             [- 6.27337983, -0.00032948, 0.00020183, 7.27305035, 0.99899361, 0.99946870, 0.49326475],
+                             [- 6.27337991, -0.00032944, 0.00020181, 7.27305047, 0.99899372, 0.99946875, 0.49326504],
+                             [- 6.27337999, -0.00032941, 0.00020178, 7.27305059, 0.99899383, 0.99946881, 0.49326510],
+                             [- 6.27338008, -0.00032937, 0.00020176, 7.27305071, 0.99899393, 0.99946887, 0.49326506],
+                             [- 6.27338016, -0.00032934, 0.00020174, 7.27305083, 0.99899404, 0.99946892, 0.49326491],
+                             [- 6.27338025, -0.00032930, 0.00020172, 7.27305095, 0.99899415, 0.99946898, 0.49326495],
+                             [- 6.27338033, -0.00032927, 0.00020170, 7.27305106, 0.99899425, 0.99946904, 0.49326488],
+                             [- 6.27338041, -0.00032923, 0.00020168, 7.27305118, 0.99899436, 0.99946909, 0.49326492],
+                             [- 6.27338050, -0.00032920, 0.00020165, 7.27305130, 0.99899447, 0.99946915, 0.49326492],
+                             [- 6.27338058, -0.00032916, 0.00020163, 7.27305142, 0.99899458, 0.99946921, 0.49326493],
+                             [- 6.27338067, -0.00032913, 0.00020161, 7.27305154, 0.99899468, 0.99946926, 0.49326498],
+                             [- 6.27338075, -0.00032909, 0.00020159, 7.27305166, 0.99899479, 0.99946932, 0.49326509],
+                             [- 6.27338083, -0.00032906, 0.00020157, 7.27305178, 0.99899490, 0.99946938, 0.49326511],
+                             [- 6.27338092, -0.00032902, 0.00020155, 7.27305190, 0.99899500, 0.99946943, 0.49326491],
+                             [- 6.27338100, -0.00032899, 0.00020153, 7.27305201, 0.99899511, 0.99946949, 0.49326497],
+                             [- 6.27338108, -0.00032895, 0.00020150, 7.27305213, 0.99899522, 0.99946954, 0.49326517],
+                             [- 6.27338117, -0.00032892, 0.00020148, 7.27305225, 0.99899532, 0.99946960, 0.49326501],
+                             [- 6.27338125, -0.00032888, 0.00020146, 7.27305237, 0.99899543, 0.99946966, 0.49326506],
+                             [- 6.27338134, -0.00032885, 0.00020144, 7.27305249, 0.99899554, 0.99946971, 0.49326507],
+                             [- 6.27338142, -0.00032881, 0.00020142, 7.27305261, 0.99899564, 0.99946977, 0.49326497],
+                             [- 6.27338150, -0.00032878, 0.00020140, 7.27305273, 0.99899575, 0.99946983, 0.49326508],
+                             [- 6.27338159, -0.00032874, 0.00020138, 7.27305284, 0.99899586, 0.99946988, 0.49326522],
+                             [- 6.27338167, -0.00032871, 0.00020135, 7.27305296, 0.99899596, 0.99946994, 0.49326525],
+                             [- 6.27338175, -0.00032867, 0.00020133, 7.27305308, 0.99899607, 0.99946999, 0.49326527],
+                             [- 6.27338184, -0.00032864, 0.00020131, 7.27305320, 0.99899618, 0.99947005, 0.49326512],
+                             [- 6.27338192, -0.00032860, 0.00020129, 7.27305332, 0.99899628, 0.99947011, 0.49326544],
+                             [- 6.27338200, -0.00032857, 0.00020127, 7.27305344, 0.99899639, 0.99947016, 0.49326511],
+                             [- 6.27338209, -0.00032853, 0.00020125, 7.27305356, 0.99899650, 0.99947022, 0.49326525],
+                             [- 6.27338217, -0.00032850, 0.00020123, 7.27305367, 0.99899660, 0.99947028, 0.49326517],
+                             [- 6.27338225, -0.00032846, 0.00020121, 7.27305379, 0.99899671, 0.99947033, 0.49326515],
+                             [- 6.27338234, -0.00032843, 0.00020118, 7.27305391, 0.99899682, 0.99947039, 0.49326512],
+                             [- 6.27338242, -0.00032839, 0.00020116, 7.27305403, 0.99899692, 0.99947045, 0.49326510],
+                             [- 6.27338250, -0.00032836, 0.00020114, 7.27305415, 0.99899703, 0.99947050, 0.49326538],
+                             [- 6.27338259, -0.00032832, 0.00020112, 7.27305427, 0.99899714, 0.99947056, 0.49326526],
+                             [- 6.27338267, -0.00032829, 0.00020110, 7.27305438, 0.99899724, 0.99947061, 0.49326555],
+                             [- 6.27338275, -0.00032825, 0.00020108, 7.27305450, 0.99899735, 0.99947067, 0.49326559],
+                             [- 6.27338284, -0.00032822, 0.00020106, 7.27305462, 0.99899745, 0.99947073, 0.49326528],
+                             [- 6.27338292, -0.00032818, 0.00020103, 7.27305474, 0.99899756, 0.99947078, 0.49326542],
+                             [- 6.27338300, -0.00032815, 0.00020101, 7.27305486, 0.99899767, 0.99947084, 0.49326519],
+                             [- 6.27338309, -0.00032811, 0.00020099, 7.27305497, 0.99899777, 0.99947089, 0.49326536],
+                             [- 6.27338317, -0.00032808, 0.00020097, 7.27305509, 0.99899788, 0.99947095, 0.49326533],
+                             [- 6.27338325, -0.00032804, 0.00020095, 7.27305521, 0.99899799, 0.99947101, 0.49326540],
+                             [- 6.27338334, -0.00032801, 0.00020093, 7.27305533, 0.99899809, 0.99947106, 0.49326552],
+                             [- 6.27338342, -0.00032797, 0.00020091, 7.27305545, 0.99899820, 0.99947112, 0.49326543],
+                             [- 6.27338350, -0.00032794, 0.00020089, 7.27305556, 0.99899830, 0.99947117, 0.49326548],
+                             [- 6.27338359, -0.00032791, 0.00020086, 7.27305568, 0.99899841, 0.99947123, 0.49326555],
+                             [- 6.27338367, -0.00032787, 0.00020084, 7.27305580, 0.99899852, 0.99947129, 0.49326550],
+                             [- 6.27338375, -0.00032784, 0.00020082, 7.27305592, 0.99899862, 0.99947134, 0.49326539],
+                             [- 6.27338384, -0.00032780, 0.00020080, 7.27305604, 0.99899873, 0.99947140, 0.49326537],
+                             [- 6.27338392, -0.00032777, 0.00020078, 7.27305615, 0.99899884, 0.99947145, 0.49326540],
+                             [- 6.27338400, -0.00032773, 0.00020076, 7.27305627, 0.99899894, 0.99947151, 0.49326552],
+                             [- 6.27338409, -0.00032770, 0.00020074, 7.27305639, 0.99899905, 0.99947157, 0.49326544],
+                             [- 6.27338417, -0.00032766, 0.00020072, 7.27305651, 0.99899915, 0.99947162, 0.49326541],
+                             [- 6.27338425, -0.00032763, 0.00020069, 7.27305662, 0.99899926, 0.99947168, 0.49326544],
+                             [- 6.27338433, -0.00032759, 0.00020067, 7.27305674, 0.99899937, 0.99947173, 0.49326555],
+                             [- 6.27338442, -0.00032756, 0.00020065, 7.27305686, 0.99899947, 0.99947179, 0.49326592],
+                             [- 6.27338450, -0.00032752, 0.00020063, 7.27305698, 0.99899958, 0.99947185, 0.49326555],
+                             [- 6.27338458, -0.00032749, 0.00020061, 7.27305709, 0.99899968, 0.99947190, 0.49326556],
+                             [- 6.27338467, -0.00032745, 0.00020059, 7.27305721, 0.99899979, 0.99947196, 0.49326577],
+                             [- 6.27338475, -0.00032742, 0.00020057, 7.27305733, 0.99899989, 0.99947201, 0.49326572],
+                             [- 6.27338483, -0.00032739, 0.00020055, 7.27305745, 0.99900000, 0.99947207, 0.49326564],
+                             [- 6.27338492, -0.00032735, 0.00020052, 7.27305756, 0.99900011, 0.99947213, 0.49326574],
+                             [- 6.27338500, -0.00032732, 0.00020050, 7.27305768, 0.99900021, 0.99947218, 0.49326570],
+                             [- 6.27338508, -0.00032728, 0.00020048, 7.27305780, 0.99900032, 0.99947224, 0.49326585],
+                             [- 6.27338516, -0.00032725, 0.00020046, 7.27305792, 0.99900042, 0.99947229, 0.49326561],
+                             [- 6.27338525, -0.00032721, 0.00020044, 7.27305804, 0.99900053, 0.99947235, 0.49326554],
+                             [- 6.27338533, -0.00032718, 0.00020042, 7.27305815, 0.99900063, 0.99947240, 0.49326565],
+                             [- 6.27338541, -0.00032714, 0.00020040, 7.27305827, 0.99900074, 0.99947246, 0.49326560],
+                             [- 6.27338550, -0.00032711, 0.00020038, 7.27305839, 0.99900085, 0.99947252, 0.49326561],
+                             [- 6.27338558, -0.00032707, 0.00020035, 7.27305850, 0.99900095, 0.99947257, 0.49326588],
+                             [- 6.27338566, -0.00032704, 0.00020033, 7.27305862, 0.99900106, 0.99947263, 0.49326567],
+                             [- 6.27338574, -0.00032700, 0.00020031, 7.27305874, 0.99900116, 0.99947268, 0.49326573],
+                             [- 6.27338583, -0.00032697, 0.00020029, 7.27305886, 0.99900127, 0.99947274, 0.49326588],
+                             [- 6.27338591, -0.00032694, 0.00020027, 7.27305897, 0.99900137, 0.99947279, 0.49326587],
+                             [- 6.27338599, -0.00032690, 0.00020025, 7.27305909, 0.99900148, 0.99947285, 0.49326591],
+                             [- 6.27338607, -0.00032687, 0.00020023, 7.27305921, 0.99900158, 0.99947291, 0.49326568],
+                             [- 6.27338616, -0.00032683, 0.00020021, 7.27305932, 0.99900169, 0.99947296, 0.49326586],
+                             [- 6.27338624, -0.00032680, 0.00020019, 7.27305944, 0.99900180, 0.99947302, 0.49326595],
+                             [- 6.27338632, -0.00032676, 0.00020016, 7.27305956, 0.99900190, 0.99947307, 0.49326594],
+                             [- 6.27338640, -0.00032673, 0.00020014, 7.27305968, 0.99900201, 0.99947313, 0.49326576],
+                             [- 6.27338649, -0.00032669, 0.00020012, 7.27305979, 0.99900211, 0.99947318, 0.49326600],
+                             [- 6.27338657, -0.00032666, 0.00020010, 7.27305991, 0.99900222, 0.99947324, 0.49326567],
+                             [- 6.27338665, -0.00032663, 0.00020008, 7.27306003, 0.99900232, 0.99947330, 0.49326591],
+                             [- 6.27338674, -0.00032659, 0.00020006, 7.27306014, 0.99900243, 0.99947335, 0.49326584],
+                             [- 6.27338682, -0.00032656, 0.00020004, 7.27306026, 0.99900253, 0.99947341, 0.49326591],
+                             [- 6.27338690, -0.00032652, 0.00020002, 7.27306038, 0.99900264, 0.99947346, 0.49326598],
+                             [- 6.27338698, -0.00032649, 0.00020000, 7.27306050, 0.99900274, 0.99947352, 0.49326605],
+                             [- 6.27338706, -0.00032645, 0.00019997, 7.27306061, 0.99900285, 0.99947357, 0.49326584],
+                             [- 6.27338715, -0.00032642, 0.00019995, 7.27306073, 0.99900295, 0.99947363, 0.49326610],
+                             [- 6.27338723, -0.00032638, 0.00019993, 7.27306085, 0.99900306, 0.99947368, 0.49326584],
+                             [- 6.27338731, -0.00032635, 0.00019991, 7.27306096, 0.99900316, 0.99947374, 0.49326595],
+                             [- 6.27338739, -0.00032632, 0.00019989, 7.27306108, 0.99900327, 0.99947379, 0.49326574],
+                             [- 6.27338748, -0.00032628, 0.00019987, 7.27306120, 0.99900337, 0.99947385, 0.49326593],
+                             [- 6.27338756, -0.00032625, 0.00019985, 7.27306131, 0.99900348, 0.99947391, 0.49326617],
+                             [- 6.27338764, -0.00032621, 0.00019983, 7.27306143, 0.99900358, 0.99947396, 0.49326608],
+                             [- 6.27338772, -0.00032618, 0.00019981, 7.27306155, 0.99900369, 0.99947402, 0.49326601],
+                             [- 6.27338781, -0.00032614, 0.00019978, 7.27306166, 0.99900379, 0.99947407, 0.49326595],
+                             [- 6.27338789, -0.00032611, 0.00019976, 7.27306178, 0.99900390, 0.99947413, 0.49326615],
+                             [- 6.27338797, -0.00032607, 0.00019974, 7.27306190, 0.99900400, 0.99947418, 0.49326594],
+                             [- 6.27338805, -0.00032604, 0.00019972, 7.27306201, 0.99900411, 0.99947424, 0.49326623],
+                             [- 6.27338814, -0.00032601, 0.00019970, 7.27306213, 0.99900421, 0.99947429, 0.49326628],
+                             [- 6.27338822, -0.00032597, 0.00019968, 7.27306225, 0.99900432, 0.99947435, 0.49326618],
+                             [- 6.27338830, -0.00032594, 0.00019966, 7.27306236, 0.99900442, 0.99947440, 0.49326621],
+                             [- 6.27338838, -0.00032590, 0.00019964, 7.27306248, 0.99900453, 0.99947446, 0.49326598],
+                             [- 6.27338846, -0.00032587, 0.00019962, 7.27306260, 0.99900463, 0.99947452, 0.49326615],
+                             [- 6.27338855, -0.00032583, 0.00019960, 7.27306271, 0.99900474, 0.99947457, 0.49326647],
+                             [- 6.27338863, -0.00032580, 0.00019957, 7.27306283, 0.99900484, 0.99947463, 0.49326621],
+                             [- 6.27338871, -0.00032577, 0.00019955, 7.27306294, 0.99900495, 0.99947468, 0.49326643],
+                             [- 6.27338879, -0.00032573, 0.00019953, 7.27306306, 0.99900505, 0.99947474, 0.49326629],
+                             [- 6.27338887, -0.00032570, 0.00019951, 7.27306318, 0.99900516, 0.99947479, 0.49326635],
+                             [- 6.27338896, -0.00032566, 0.00019949, 7.27306329, 0.99900526, 0.99947485, 0.49326632],
+                             [- 6.27338904, -0.00032563, 0.00019947, 7.27306341, 0.99900537, 0.99947490, 0.49326626],
+                             [- 6.27338912, -0.00032559, 0.00019945, 7.27306353, 0.99900547, 0.99947496, 0.49326639],
+                             [- 6.27338920, -0.00032556, 0.00019943, 7.27306364, 0.99900558, 0.99947501, 0.49326627],
+                             [- 6.27338928, -0.00032553, 0.00019941, 7.27306376, 0.99900568, 0.99947507, 0.49326645],
+                             [- 6.27338937, -0.00032549, 0.00019939, 7.27306387, 0.99900578, 0.99947512, 0.49326623],
+                             [- 6.27338945, -0.00032546, 0.00019936, 7.27306399, 0.99900589, 0.99947518, 0.49326607],
+                             [- 6.27338953, -0.00032542, 0.00019934, 7.27306411, 0.99900599, 0.99947523, 0.49326641],
+                             [- 6.27338961, -0.00032539, 0.00019932, 7.27306422, 0.99900610, 0.99947529, 0.49326644],
+                             [- 6.27338969, -0.00032536, 0.00019930, 7.27306434, 0.99900620, 0.99947534, 0.49326635],
+                             [- 6.27338978, -0.00032532, 0.00019928, 7.27306446, 0.99900631, 0.99947540, 0.49326617],
+                             [- 6.27338986, -0.00032529, 0.00019926, 7.27306457, 0.99900641, 0.99947545, 0.49326647],
+                             [- 6.27338994, -0.00032525, 0.00019924, 7.27306469, 0.99900652, 0.99947551, 0.49326638],
+                             [- 6.27339002, -0.00032522, 0.00019922, 7.27306480, 0.99900662, 0.99947556, 0.49326625],
+                             [- 6.27339010, -0.00032518, 0.00019920, 7.27306492, 0.99900673, 0.99947562, 0.49326654],
+                             [- 6.27339019, -0.00032515, 0.00019918, 7.27306504, 0.99900683, 0.99947567, 0.49326643],
+                             [- 6.27339027, -0.00032512, 0.00019915, 7.27306515, 0.99900693, 0.99947573, 0.49326639],
+                             [- 6.27339035, -0.00032508, 0.00019913, 7.27306527, 0.99900704, 0.99947578, 0.49326643],
+                             [- 6.27339043, -0.00032505, 0.00019911, 7.27306538, 0.99900714, 0.99947584, 0.49326613],
+                             [- 6.27339051, -0.00032501, 0.00019909, 7.27306550, 0.99900725, 0.99947589, 0.49326635],
+                             [- 6.27339059, -0.00032498, 0.00019907, 7.27306561, 0.99900735, 0.99947595, 0.49326654],
+                             [- 6.27339068, -0.00032495, 0.00019905, 7.27306573, 0.99900746, 0.99947600, 0.49326649],
+                             [- 6.27339076, -0.00032491, 0.00019903, 7.27306585, 0.99900756, 0.99947606, 0.49326645],
+                             [- 6.27339084, -0.00032488, 0.00019901, 7.27306596, 0.99900766, 0.99947611, 0.49326635],
+                             [- 6.27339092, -0.00032484, 0.00019899, 7.27306608, 0.99900777, 0.99947617, 0.49326646],
+                             [- 6.27339100, -0.00032481, 0.00019897, 7.27306619, 0.99900787, 0.99947622, 0.49326660],
+                             [- 6.27339108, -0.00032477, 0.00019895, 7.27306631, 0.99900798, 0.99947628, 0.49326653],
+                             [- 6.27339117, -0.00032474, 0.00019892, 7.27306642, 0.99900808, 0.99947633, 0.49326655],
+                             [- 6.27339125, -0.00032471, 0.00019890, 7.27306654, 0.99900818, 0.99947639, 0.49326642],
+                             [- 6.27339133, -0.00032467, 0.00019888, 7.27306666, 0.99900829, 0.99947644, 0.49326648],
+                             [- 6.27339141, -0.00032464, 0.00019886, 7.27306677, 0.99900839, 0.99947650, 0.49326679],
+                             [- 6.27339149, -0.00032460, 0.00019884, 7.27306689, 0.99900850, 0.99947655, 0.49326686],
+                             [- 6.27339157, -0.00032457, 0.00019882, 7.27306700, 0.99900860, 0.99947661, 0.49326656],
+                             [- 6.27339165, -0.00032454, 0.00019880, 7.27306712, 0.99900870, 0.99947666, 0.49326662],
+                             [- 6.27339174, -0.00032450, 0.00019878, 7.27306723, 0.99900881, 0.99947672, 0.49326679],
+                             [- 6.27339182, -0.00032447, 0.00019876, 7.27306735, 0.99900891, 0.99947677, 0.49326673],
+                             [- 6.27339190, -0.00032443, 0.00019874, 7.27306746, 0.99900902, 0.99947683, 0.49326675],
+                             [- 6.27339198, -0.00032440, 0.00019872, 7.27306758, 0.99900912, 0.99947688, 0.49326682],
+                             [- 6.27339206, -0.00032437, 0.00019870, 7.27306770, 0.99900922, 0.99947694, 0.49326647],
+                             [- 6.27339214, -0.00032433, 0.00019867, 7.27306781, 0.99900933, 0.99947699, 0.49326653],
+                             [- 6.27339222, -0.00032430, 0.00019865, 7.27306793, 0.99900943, 0.99947705, 0.49326669],
+                             [- 6.27339231, -0.00032426, 0.00019863, 7.27306804, 0.99900954, 0.99947710, 0.49326657],
+                             [- 6.27339239, -0.00032423, 0.00019861, 7.27306816, 0.99900964, 0.99947716, 0.49326679],
+                             [- 6.27339247, -0.00032420, 0.00019859, 7.27306827, 0.99900974, 0.99947721, 0.49326690],
+                             [- 6.27339255, -0.00032416, 0.00019857, 7.27306839, 0.99900985, 0.99947727, 0.49326680],
+                             [- 6.27339263, -0.00032413, 0.00019855, 7.27306850, 0.99900995, 0.99947732, 0.49326670],
+                             [- 6.27339271, -0.00032409, 0.00019853, 7.27306862, 0.99901005, 0.99947738, 0.49326690],
+                             [- 6.27339279, -0.00032406, 0.00019851, 7.27306873, 0.99901016, 0.99947743, 0.49326682],
+                             [- 6.27339287, -0.00032403, 0.00019849, 7.27306885, 0.99901026, 0.99947749, 0.49326670],
+                             [- 6.27339296, -0.00032399, 0.00019847, 7.27306896, 0.99901036, 0.99947754, 0.49326689],
+                             [- 6.27339304, -0.00032396, 0.00019845, 7.27306908, 0.99901047, 0.99947760, 0.49326683],
+                             [- 6.27339312, -0.00032393, 0.00019843, 7.27306919, 0.99901057, 0.99947765, 0.49326682],
+                             [- 6.27339320, -0.00032389, 0.00019840, 7.27306931, 0.99901068, 0.99947770, 0.49326694],
+                             [- 6.27339328, -0.00032386, 0.00019838, 7.27306942, 0.99901078, 0.99947776, 0.49326682],
+                             [- 6.27339336, -0.00032382, 0.00019836, 7.27306954, 0.99901088, 0.99947781, 0.49326696],
+                             [- 6.27339344, -0.00032379, 0.00019834, 7.27306965, 0.99901099, 0.99947787, 0.49326703],
+                             [- 6.27339352, -0.00032376, 0.00019832, 7.27306977, 0.99901109, 0.99947792, 0.49326705],
+                             [- 6.27339360, -0.00032372, 0.00019830, 7.27306988, 0.99901119, 0.99947798, 0.49326683],
+                             [- 6.27339369, -0.00032369, 0.00019828, 7.27307000, 0.99901130, 0.99947803, 0.49326692],
+                             [- 6.27339377, -0.00032365, 0.00019826, 7.27307011, 0.99901140, 0.99947809, 0.49326694],
+                             [- 6.27339385, -0.00032362, 0.00019824, 7.27307023, 0.99901150, 0.99947814, 0.49326688],
+                             [- 6.27339393, -0.00032359, 0.00019822, 7.27307034, 0.99901161, 0.99947820, 0.49326687],
+                             [- 6.27339401, -0.00032355, 0.00019820, 7.27307046, 0.99901171, 0.99947825, 0.49326697],
+                             [- 6.27339409, -0.00032352, 0.00019818, 7.27307057, 0.99901181, 0.99947830, 0.49326717],
+                             [- 6.27339417, -0.00032349, 0.00019816, 7.27307069, 0.99901192, 0.99947836, 0.49326712],
+                             [- 6.27339425, -0.00032345, 0.00019813, 7.27307080, 0.99901202, 0.99947841, 0.49326703],
+                             [- 6.27339433, -0.00032342, 0.00019811, 7.27307092, 0.99901212, 0.99947847, 0.49326706],
+                             [- 6.27339441, -0.00032338, 0.00019809, 7.27307103, 0.99901223, 0.99947852, 0.49326716],
+                             [- 6.27339450, -0.00032335, 0.00019807, 7.27307115, 0.99901233, 0.99947858, 0.49326689],
+                             [- 6.27339458, -0.00032332, 0.00019805, 7.27307126, 0.99901243, 0.99947863, 0.49326699],
+                             [- 6.27339466, -0.00032328, 0.00019803, 7.27307137, 0.99901254, 0.99947869, 0.49326696],
+                             [- 6.27339474, -0.00032325, 0.00019801, 7.27307149, 0.99901264, 0.99947874, 0.49326718],
+                             [- 6.27339482, -0.00032321, 0.00019799, 7.27307160, 0.99901274, 0.99947880, 0.49326717],
+                             [- 6.27339490, -0.00032318, 0.00019797, 7.27307172, 0.99901285, 0.99947885, 0.49326705],
+                             [- 6.27339498, -0.00032315, 0.00019795, 7.27307183, 0.99901295, 0.99947890, 0.49326716],
+                             [- 6.27339506, -0.00032311, 0.00019793, 7.27307195, 0.99901305, 0.99947896, 0.49326730],
+                             [- 6.27339514, -0.00032308, 0.00019791, 7.27307206, 0.99901315, 0.99947901, 0.49326718],
+                             [- 6.27339522, -0.00032305, 0.00019789, 7.27307218, 0.99901326, 0.99947907, 0.49326722],
+                             [- 6.27339530, -0.00032301, 0.00019787, 7.27307229, 0.99901336, 0.99947912, 0.49326715],
+                             [- 6.27339538, -0.00032298, 0.00019785, 7.27307241, 0.99901346, 0.99947918, 0.49326728],
+                             [- 6.27339546, -0.00032295, 0.00019782, 7.27307252, 0.99901357, 0.99947923, 0.49326724],
+                             [- 6.27339555, -0.00032291, 0.00019780, 7.27307263, 0.99901367, 0.99947928, 0.49326701],
+                             [- 6.27339563, -0.00032288, 0.00019778, 7.27307275, 0.99901377, 0.99947934, 0.49326708],
+                             [- 6.27339571, -0.00032284, 0.00019776, 7.27307286, 0.99901388, 0.99947939, 0.49326726],
+                             [- 6.27339579, -0.00032281, 0.00019774, 7.27307298, 0.99901398, 0.99947945, 0.49326720],
+                             [- 6.27339587, -0.00032278, 0.00019772, 7.27307309, 0.99901408, 0.99947950, 0.49326714],
+                             [- 6.27339595, -0.00032274, 0.00019770, 7.27307321, 0.99901418, 0.99947956, 0.49326729],
+                             [- 6.27339603, -0.00032271, 0.00019768, 7.27307332, 0.99901429, 0.99947961, 0.49326744],
+                             [- 6.27339611, -0.00032268, 0.00019766, 7.27307343, 0.99901439, 0.99947966, 0.49326726],
+                             [- 6.27339619, -0.00032264, 0.00019764, 7.27307355, 0.99901449, 0.99947972, 0.49326746],
+                             [- 6.27339627, -0.00032261, 0.00019762, 7.27307366, 0.99901459, 0.99947977, 0.49326747],
+                             [- 6.27339635, -0.00032258, 0.00019760, 7.27307378, 0.99901470, 0.99947983, 0.49326746],
+                             [- 6.27339643, -0.00032254, 0.00019758, 7.27307389, 0.99901480, 0.99947988, 0.49326737],
+                             [- 6.27339651, -0.00032251, 0.00019756, 7.27307400, 0.99901490, 0.99947994, 0.49326725],
+                             [- 6.27339659, -0.00032247, 0.00019754, 7.27307412, 0.99901501, 0.99947999, 0.49326744],
+                             [- 6.27339667, -0.00032244, 0.00019752, 7.27307423, 0.99901511, 0.99948004, 0.49326734],
+                             [- 6.27339675, -0.00032241, 0.00019749, 7.27307435, 0.99901521, 0.99948010, 0.49326748],
+                             [- 6.27339683, -0.00032237, 0.00019747, 7.27307446, 0.99901531, 0.99948015, 0.49326735],
+                             [- 6.27339691, -0.00032234, 0.00019745, 7.27307457, 0.99901542, 0.99948021, 0.49326718],
+                             [- 6.27339699, -0.00032231, 0.00019743, 7.27307469, 0.99901552, 0.99948026, 0.49326726],
+                             [- 6.27339708, -0.00032227, 0.00019741, 7.27307480, 0.99901562, 0.99948031, 0.49326739],
+                             [- 6.27339716, -0.00032224, 0.00019739, 7.27307492, 0.99901572, 0.99948037, 0.49326736],
+                             [- 6.27339724, -0.00032221, 0.00019737, 7.27307503, 0.99901583, 0.99948042, 0.49326751],
+                             [- 6.27339732, -0.00032217, 0.00019735, 7.27307514, 0.99901593, 0.99948048, 0.49326746],
+                             [- 6.27339740, -0.00032214, 0.00019733, 7.27307526, 0.99901603, 0.99948053, 0.49326750],
+                             [- 6.27339748, -0.00032210, 0.00019731, 7.27307537, 0.99901613, 0.99948059, 0.49326720],
+                             [- 6.27339756, -0.00032207, 0.00019729, 7.27307549, 0.99901624, 0.99948064, 0.49326742],
+                             [- 6.27339764, -0.00032204, 0.00019727, 7.27307560, 0.99901634, 0.99948069, 0.49326770],
+                             [- 6.27339772, -0.00032200, 0.00019725, 7.27307571, 0.99901644, 0.99948075, 0.49326757],
+                             [- 6.27339780, -0.00032197, 0.00019723, 7.27307583, 0.99901654, 0.99948080, 0.49326750],
+                             [- 6.27339788, -0.00032194, 0.00019721, 7.27307594, 0.99901664, 0.99948086, 0.49326781],
+                             [- 6.27339796, -0.00032190, 0.00019719, 7.27307605, 0.99901675, 0.99948091, 0.49326776],
+                             [- 6.27339804, -0.00032187, 0.00019717, 7.27307617, 0.99901685, 0.99948096, 0.49326747],
+                             [- 6.27339812, -0.00032184, 0.00019715, 7.27307628, 0.99901695, 0.99948102, 0.49326778],
+                             [- 6.27339820, -0.00032180, 0.00019713, 7.27307639, 0.99901705, 0.99948107, 0.49326749],
+                             [- 6.27339828, -0.00032177, 0.00019710, 7.27307651, 0.99901716, 0.99948113, 0.49326751],
+                             [- 6.27339836, -0.00032174, 0.00019708, 7.27307662, 0.99901726, 0.99948118, 0.49326780],
+                             [- 6.27339844, -0.00032170, 0.00019706, 7.27307674, 0.99901736, 0.99948123, 0.49326747],
+                             [- 6.27339852, -0.00032167, 0.00019704, 7.27307685, 0.99901746, 0.99948129, 0.49326772],
+                             [- 6.27339860, -0.00032164, 0.00019702, 7.27307696, 0.99901756, 0.99948134, 0.49326768],
+                             [- 6.27339868, -0.00032160, 0.00019700, 7.27307708, 0.99901767, 0.99948139, 0.49326756],
+                             [- 6.27339876, -0.00032157, 0.00019698, 7.27307719, 0.99901777, 0.99948145, 0.49326753],
+                             [- 6.27339884, -0.00032154, 0.00019696, 7.27307730, 0.99901787, 0.99948150, 0.49326754],
+                             [- 6.27339892, -0.00032150, 0.00019694, 7.27307742, 0.99901797, 0.99948156, 0.49326763],
+                             [- 6.27339900, -0.00032147, 0.00019692, 7.27307753, 0.99901807, 0.99948161, 0.49326773],
+                             [- 6.27339908, -0.00032144, 0.00019690, 7.27307764, 0.99901818, 0.99948166, 0.49326760],
+                             [- 6.27339916, -0.00032140, 0.00019688, 7.27307776, 0.99901828, 0.99948172, 0.49326795],
+                             [- 6.27339924, -0.00032137, 0.00019686, 7.27307787, 0.99901838, 0.99948177, 0.49326781],
+                             [- 6.27339932, -0.00032134, 0.00019684, 7.27307798, 0.99901848, 0.99948183, 0.49326791],
+                             [- 6.27339940, -0.00032130, 0.00019682, 7.27307810, 0.99901858, 0.99948188, 0.49326782],
+                             [- 6.27339948, -0.00032127, 0.00019680, 7.27307821, 0.99901869, 0.99948193, 0.49326774],
+                             [- 6.27339956, -0.00032124, 0.00019678, 7.27307832, 0.99901879, 0.99948199, 0.49326801],
+                             [- 6.27339964, -0.00032120, 0.00019676, 7.27307843, 0.99901889, 0.99948204, 0.49326796],
+                             [- 6.27339972, -0.00032117, 0.00019674, 7.27307855, 0.99901899, 0.99948209, 0.49326796],
+                             [- 6.27339980, -0.00032114, 0.00019672, 7.27307866, 0.99901909, 0.99948215, 0.49326764],
+                             [- 6.27339988, -0.00032110, 0.00019670, 7.27307877, 0.99901920, 0.99948220, 0.49326786],
+                             [- 6.27339996, -0.00032107, 0.00019668, 7.27307889, 0.99901930, 0.99948226, 0.49326797],
+                             [- 6.27340004, -0.00032104, 0.00019665, 7.27307900, 0.99901940, 0.99948231, 0.49326772],
+                             [- 6.27340012, -0.00032100, 0.00019663, 7.27307911, 0.99901950, 0.99948236, 0.49326808],
+                             [- 6.27340020, -0.00032097, 0.00019661, 7.27307923, 0.99901960, 0.99948242, 0.49326793],
+                             [- 6.27340028, -0.00032094, 0.00019659, 7.27307934, 0.99901970, 0.99948247, 0.49326800],
+                             [- 6.27340036, -0.00032090, 0.00019657, 7.27307945, 0.99901981, 0.99948252, 0.49326818],
+                             [- 6.27340043, -0.00032087, 0.00019655, 7.27307956, 0.99901991, 0.99948258, 0.49326800],
+                             [- 6.27340051, -0.00032084, 0.00019653, 7.27307968, 0.99902001, 0.99948263, 0.49326833],
+                             [- 6.27340059, -0.00032080, 0.00019651, 7.27307979, 0.99902011, 0.99948268, 0.49326799],
+                             [- 6.27340067, -0.00032077, 0.00019649, 7.27307990, 0.99902021, 0.99948274, 0.49326805],
+                             [- 6.27340075, -0.00032074, 0.00019647, 7.27308002, 0.99902031, 0.99948279, 0.49326790],
+                             [- 6.27340083, -0.00032070, 0.00019645, 7.27308013, 0.99902042, 0.99948285, 0.49326822],
+                             [- 6.27340091, -0.00032067, 0.00019643, 7.27308024, 0.99902052, 0.99948290, 0.49326817],
+                             [- 6.27340099, -0.00032064, 0.00019641, 7.27308035, 0.99902062, 0.99948295, 0.49326820],
+                             [- 6.27340107, -0.00032060, 0.00019639, 7.27308047, 0.99902072, 0.99948301, 0.49326814],
+                             [- 6.27340115, -0.00032057, 0.00019637, 7.27308058, 0.99902082, 0.99948306, 0.49326794],
+                             [- 6.27340123, -0.00032054, 0.00019635, 7.27308069, 0.99902092, 0.99948311, 0.49326788],
+                             [- 6.27340131, -0.00032050, 0.00019633, 7.27308081, 0.99902102, 0.99948317, 0.49326824],
+                             [- 6.27340139, -0.00032047, 0.00019631, 7.27308092, 0.99902113, 0.99948322, 0.49326821],
+                             [- 6.27340147, -0.00032044, 0.00019629, 7.27308103, 0.99902123, 0.99948327, 0.49326804],
+                             [- 6.27340155, -0.00032040, 0.00019627, 7.27308114, 0.99902133, 0.99948333, 0.49326826],
+                             [- 6.27340163, -0.00032037, 0.00019625, 7.27308126, 0.99902143, 0.99948338, 0.49326837],
+                             [- 6.27340171, -0.00032034, 0.00019623, 7.27308137, 0.99902153, 0.99948343, 0.49326808],
+                             [- 6.27340179, -0.00032031, 0.00019621, 7.27308148, 0.99902163, 0.99948349, 0.49326814],
+                             [- 6.27340187, -0.00032027, 0.00019619, 7.27308159, 0.99902173, 0.99948354, 0.49326823],
+                             [- 6.27340194, -0.00032024, 0.00019617, 7.27308171, 0.99902183, 0.99948359, 0.49326820],
+                             [- 6.27340202, -0.00032021, 0.00019615, 7.27308182, 0.99902194, 0.99948365, 0.49326819],
+                             [- 6.27340210, -0.00032017, 0.00019613, 7.27308193, 0.99902204, 0.99948370, 0.49326828],
+                             [- 6.27340218, -0.00032014, 0.00019611, 7.27308204, 0.99902214, 0.99948376, 0.49326815],
+                             [- 6.27340226, -0.00032011, 0.00019608, 7.27308216, 0.99902224, 0.99948381, 0.49326833],
+                             [- 6.27340234, -0.00032007, 0.00019606, 7.27308227, 0.99902234, 0.99948386, 0.49326820],
+                             [- 6.27340242, -0.00032004, 0.00019604, 7.27308238, 0.99902244, 0.99948392, 0.49326839],
+                             [- 6.27340250, -0.00032001, 0.00019602, 7.27308249, 0.99902254, 0.99948397, 0.49326825],
+                             [- 6.27340258, -0.00031997, 0.00019600, 7.27308261, 0.99902264, 0.99948402, 0.49326820],
+                             [- 6.27340266, -0.00031994, 0.00019598, 7.27308272, 0.99902274, 0.99948408, 0.49326829],
+                             [- 6.27340274, -0.00031991, 0.00019596, 7.27308283, 0.99902285, 0.99948413, 0.49326838],
+                             [- 6.27340282, -0.00031987, 0.00019594, 7.27308294, 0.99902295, 0.99948418, 0.49326829],
+                             [- 6.27340290, -0.00031984, 0.00019592, 7.27308305, 0.99902305, 0.99948424, 0.49326812],
+                             [- 6.27340297, -0.00031981, 0.00019590, 7.27308317, 0.99902315, 0.99948429, 0.49326825],
+                             [- 6.27340305, -0.00031978, 0.00019588, 7.27308328, 0.99902325, 0.99948434, 0.49326844],
+                             [- 6.27340313, -0.00031974, 0.00019586, 7.27308339, 0.99902335, 0.99948440, 0.49326822],
+                             [- 6.27340321, -0.00031971, 0.00019584, 7.27308350, 0.99902345, 0.99948445, 0.49326848],
+                             [- 6.27340329, -0.00031968, 0.00019582, 7.27308361, 0.99902355, 0.99948450, 0.49326823],
+                             [- 6.27340337, -0.00031964, 0.00019580, 7.27308373, 0.99902365, 0.99948455, 0.49326831],
+                             [- 6.27340345, -0.00031961, 0.00019578, 7.27308384, 0.99902375, 0.99948461, 0.49326842],
+                             [- 6.27340353, -0.00031958, 0.00019576, 7.27308395, 0.99902385, 0.99948466, 0.49326833],
+                             [- 6.27340361, -0.00031954, 0.00019574, 7.27308406, 0.99902396, 0.99948471, 0.49326844],
+                             [- 6.27340369, -0.00031951, 0.00019572, 7.27308417, 0.99902406, 0.99948477, 0.49326841],
+                             [- 6.27340377, -0.00031948, 0.00019570, 7.27308429, 0.99902416, 0.99948482, 0.49326813],
+                             [- 6.27340384, -0.00031945, 0.00019568, 7.27308440, 0.99902426, 0.99948487, 0.49326861],
+                             [- 6.27340392, -0.00031941, 0.00019566, 7.27308451, 0.99902436, 0.99948493, 0.49326836],
+                             [- 6.27340400, -0.00031938, 0.00019564, 7.27308462, 0.99902446, 0.99948498, 0.49326869],
+                             [- 6.27340408, -0.00031935, 0.00019562, 7.27308473, 0.99902456, 0.99948503, 0.49326883],
+                             [- 6.27340416, -0.00031931, 0.00019560, 7.27308485, 0.99902466, 0.99948509, 0.49326857],
+                             [- 6.27340424, -0.00031928, 0.00019558, 7.27308496, 0.99902476, 0.99948514, 0.49326861],
+                             [- 6.27340432, -0.00031925, 0.00019556, 7.27308507, 0.99902486, 0.99948519, 0.49326841],
+                             [- 6.27340440, -0.00031922, 0.00019554, 7.27308518, 0.99902496, 0.99948525, 0.49326856],
+                             [- 6.27340448, -0.00031918, 0.00019552, 7.27308529, 0.99902506, 0.99948530, 0.49326867],
+                             [- 6.27340455, -0.00031915, 0.00019550, 7.27308540, 0.99902516, 0.99948535, 0.49326859],
+                             [- 6.27340463, -0.00031912, 0.00019548, 7.27308552, 0.99902526, 0.99948541, 0.49326854],
+                             [- 6.27340471, -0.00031908, 0.00019546, 7.27308563, 0.99902536, 0.99948546, 0.49326869],
+                             [- 6.27340479, -0.00031905, 0.00019544, 7.27308574, 0.99902546, 0.99948551, 0.49326853],
+                             [- 6.27340487, -0.00031902, 0.00019542, 7.27308585, 0.99902557, 0.99948556, 0.49326880],
+                             [- 6.27340495, -0.00031899, 0.00019540, 7.27308596, 0.99902567, 0.99948562, 0.49326872],
+                             [- 6.27340503, -0.00031895, 0.00019538, 7.27308607, 0.99902577, 0.99948567, 0.49326861],
+                             [- 6.27340511, -0.00031892, 0.00019536, 7.27308619, 0.99902587, 0.99948572, 0.49326878],
+                             [- 6.27340518, -0.00031889, 0.00019534, 7.27308630, 0.99902597, 0.99948578, 0.49326876],
+                             [- 6.27340526, -0.00031885, 0.00019532, 7.27308641, 0.99902607, 0.99948583, 0.49326873],
+                             [- 6.27340534, -0.00031882, 0.00019530, 7.27308652, 0.99902617, 0.99948588, 0.49326869],
+                             [- 6.27340542, -0.00031879, 0.00019528, 7.27308663, 0.99902627, 0.99948594, 0.49326868],
+                             [- 6.27340550, -0.00031876, 0.00019526, 7.27308674, 0.99902637, 0.99948599, 0.49326886],
+                             [- 6.27340558, -0.00031872, 0.00019524, 7.27308685, 0.99902647, 0.99948604, 0.49326868],
+                             [- 6.27340566, -0.00031869, 0.00019522, 7.27308697, 0.99902657, 0.99948609, 0.49326883],
+                             [- 6.27340573, -0.00031866, 0.00019520, 7.27308708, 0.99902667, 0.99948615, 0.49326876],
+                             [- 6.27340581, -0.00031862, 0.00019518, 7.27308719, 0.99902677, 0.99948620, 0.49326874],
+                             [- 6.27340589, -0.00031859, 0.00019516, 7.27308730, 0.99902687, 0.99948625, 0.49326882],
+                             [- 6.27340597, -0.00031856, 0.00019514, 7.27308741, 0.99902697, 0.99948631, 0.49326866],
+                             [- 6.27340605, -0.00031853, 0.00019512, 7.27308752, 0.99902707, 0.99948636, 0.49326860],
+                             [- 6.27340613, -0.00031849, 0.00019510, 7.27308763, 0.99902717, 0.99948641, 0.49326865],
+                             [- 6.27340621, -0.00031846, 0.00019508, 7.27308775, 0.99902727, 0.99948646, 0.49326872],
+                             [- 6.27340628, -0.00031843, 0.00019506, 7.27308786, 0.99902737, 0.99948652, 0.49326863],
+                             [- 6.27340636, -0.00031839, 0.00019504, 7.27308797, 0.99902747, 0.99948657, 0.49326869],
+                             [- 6.27340644, -0.00031836, 0.00019502, 7.27308808, 0.99902757, 0.99948662, 0.49326888],
+                             [- 6.27340652, -0.00031833, 0.00019500, 7.27308819, 0.99902767, 0.99948668, 0.49326895],
+                             [- 6.27340660, -0.00031830, 0.00019498, 7.27308830, 0.99902777, 0.99948673, 0.49326876],
+                             [- 6.27340668, -0.00031826, 0.00019496, 7.27308841, 0.99902787, 0.99948678, 0.49326889],
+                             [- 6.27340675, -0.00031823, 0.00019494, 7.27308852, 0.99902797, 0.99948683, 0.49326878],
+                             [- 6.27340683, -0.00031820, 0.00019492, 7.27308863, 0.99902807, 0.99948689, 0.49326887],
+                             [- 6.27340691, -0.00031817, 0.00019490, 7.27308875, 0.99902817, 0.99948694, 0.49326916],
+                             [- 6.27340699, -0.00031813, 0.00019488, 7.27308886, 0.99902827, 0.99948699, 0.49326908],
+                             [- 6.27340707, -0.00031810, 0.00019486, 7.27308897, 0.99902837, 0.99948704, 0.49326893],
+                             [- 6.27340715, -0.00031807, 0.00019484, 7.27308908, 0.99902847, 0.99948710, 0.49326890],
+                             [- 6.27340722, -0.00031803, 0.00019482, 7.27308919, 0.99902857, 0.99948715, 0.49326887],
+                             [- 6.27340730, -0.00031800, 0.00019480, 7.27308930, 0.99902867, 0.99948720, 0.49326878],
+                             [- 6.27340738, -0.00031797, 0.00019478, 7.27308941, 0.99902877, 0.99948726, 0.49326894],
+                             [- 6.27340746, -0.00031794, 0.00019476, 7.27308952, 0.99902887, 0.99948731, 0.49326894],
+                             [- 6.27340754, -0.00031790, 0.00019474, 7.27308963, 0.99902897, 0.99948736, 0.49326908],
+                             [- 6.27340761, -0.00031787, 0.00019472, 7.27308974, 0.99902907, 0.99948741, 0.49326876],
+                             [- 6.27340769, -0.00031784, 0.00019470, 7.27308985, 0.99902917, 0.99948747, 0.49326912],
+                             [- 6.27340777, -0.00031781, 0.00019468, 7.27308996, 0.99902927, 0.99948752, 0.49326904],
+                             [- 6.27340785, -0.00031777, 0.00019466, 7.27309008, 0.99902937, 0.99948757, 0.49326901],
+                             [- 6.27340793, -0.00031774, 0.00019464, 7.27309019, 0.99902947, 0.99948762, 0.49326930],
+                             [- 6.27340801, -0.00031771, 0.00019462, 7.27309030, 0.99902957, 0.99948768, 0.49326907],
+                             [- 6.27340808, -0.00031768, 0.00019460, 7.27309041, 0.99902967, 0.99948773, 0.49326924],
+                             [- 6.27340816, -0.00031764, 0.00019458, 7.27309052, 0.99902977, 0.99948778, 0.49326904],
+                             [- 6.27340824, -0.00031761, 0.00019456, 7.27309063, 0.99902987, 0.99948783, 0.49326893],
+                             [- 6.27340832, -0.00031758, 0.00019454, 7.27309074, 0.99902997, 0.99948789, 0.49326909],
+                             [- 6.27340840, -0.00031755, 0.00019452, 7.27309085, 0.99903006, 0.99948794, 0.49326930],
+                             [- 6.27340847, -0.00031751, 0.00019450, 7.27309096, 0.99903016, 0.99948799, 0.49326922],
+                             [- 6.27340855, -0.00031748, 0.00019448, 7.27309107, 0.99903026, 0.99948804, 0.49326913],
+                             [- 6.27340863, -0.00031745, 0.00019446, 7.27309118, 0.99903036, 0.99948810, 0.49326905],
+                             [- 6.27340871, -0.00031742, 0.00019444, 7.27309129, 0.99903046, 0.99948815, 0.49326923],
+                             [- 6.27340879, -0.00031738, 0.00019442, 7.27309140, 0.99903056, 0.99948820, 0.49326938],
+                             [- 6.27340886, -0.00031735, 0.00019440, 7.27309151, 0.99903066, 0.99948825, 0.49326909],
+                             [- 6.27340894, -0.00031732, 0.00019438, 7.27309162, 0.99903076, 0.99948831, 0.49326912],
+                             [- 6.27340902, -0.00031728, 0.00019436, 7.27309173, 0.99903086, 0.99948836, 0.49326920],
+                             [- 6.27340910, -0.00031725, 0.00019434, 7.27309184, 0.99903096, 0.99948841, 0.49326917],
+                             [- 6.27340917, -0.00031722, 0.00019432, 7.27309196, 0.99903106, 0.99948846, 0.49326921],
+                             [- 6.27340925, -0.00031719, 0.00019430, 7.27309207, 0.99903116, 0.99948852, 0.49326919],
+                             [- 6.27340933, -0.00031715, 0.00019428, 7.27309218, 0.99903126, 0.99948857, 0.49326928],
+                             [- 6.27340941, -0.00031712, 0.00019426, 7.27309229, 0.99903136, 0.99948862, 0.49326918],
+                             [- 6.27340949, -0.00031709, 0.00019424, 7.27309240, 0.99903146, 0.99948867, 0.49326958],
+                             [- 6.27340956, -0.00031706, 0.00019422, 7.27309251, 0.99903156, 0.99948873, 0.49326936],
+                             [- 6.27340964, -0.00031702, 0.00019420, 7.27309262, 0.99903165, 0.99948878, 0.49326927],
+                             [- 6.27340972, -0.00031699, 0.00019418, 7.27309273, 0.99903175, 0.99948883, 0.49326942],
+                             [- 6.27340980, -0.00031696, 0.00019416, 7.27309284, 0.99903185, 0.99948888, 0.49326912],
+                             [- 6.27340987, -0.00031693, 0.00019414, 7.27309295, 0.99903195, 0.99948894, 0.49326924],
+                             [- 6.27340995, -0.00031690, 0.00019412, 7.27309306, 0.99903205, 0.99948899, 0.49326951],
+                             [- 6.27341003, -0.00031686, 0.00019410, 7.27309317, 0.99903215, 0.99948904, 0.49326942],
+                             [- 6.27341011, -0.00031683, 0.00019408, 7.27309328, 0.99903225, 0.99948909, 0.49326925],
+                             [- 6.27341019, -0.00031680, 0.00019406, 7.27309339, 0.99903235, 0.99948914, 0.49326927],
+                             [- 6.27341026, -0.00031677, 0.00019404, 7.27309350, 0.99903245, 0.99948920, 0.49326936],
+                             [- 6.27341034, -0.00031673, 0.00019402, 7.27309361, 0.99903255, 0.99948925, 0.49326944],
+                             [- 6.27341042, -0.00031670, 0.00019400, 7.27309372, 0.99903265, 0.99948930, 0.49326949],
+                             [- 6.27341050, -0.00031667, 0.00019398, 7.27309383, 0.99903274, 0.99948935, 0.49326915],
+                             [- 6.27341057, -0.00031664, 0.00019396, 7.27309394, 0.99903284, 0.99948941, 0.49326929],
+                             [- 6.27341065, -0.00031660, 0.00019394, 7.27309405, 0.99903294, 0.99948946, 0.49326955],
+                             [- 6.27341073, -0.00031657, 0.00019392, 7.27309416, 0.99903304, 0.99948951, 0.49326921],
+                             [- 6.27341081, -0.00031654, 0.00019390, 7.27309427, 0.99903314, 0.99948956, 0.49326941],
+                             [- 6.27341088, -0.00031651, 0.00019388, 7.27309438, 0.99903324, 0.99948961, 0.49326954],
+                             [- 6.27341096, -0.00031647, 0.00019386, 7.27309449, 0.99903334, 0.99948967, 0.49326935],
+                             [- 6.27341104, -0.00031644, 0.00019384, 7.27309460, 0.99903344, 0.99948972, 0.49326969],
+                             [- 6.27341112, -0.00031641, 0.00019382, 7.27309471, 0.99903354, 0.99948977, 0.49326971],
+                             [- 6.27341119, -0.00031638, 0.00019380, 7.27309482, 0.99903363, 0.99948982, 0.49326945],
+                             [- 6.27341127, -0.00031634, 0.00019378, 7.27309493, 0.99903373, 0.99948988, 0.49326964],
+                             [- 6.27341135, -0.00031631, 0.00019376, 7.27309504, 0.99903383, 0.99948993, 0.49326955],
+                             [- 6.27341143, -0.00031628, 0.00019374, 7.27309515, 0.99903393, 0.99948998, 0.49326931],
+                             [- 6.27341150, -0.00031625, 0.00019372, 7.27309526, 0.99903403, 0.99949003, 0.49326939],
+                             [- 6.27341158, -0.00031622, 0.00019370, 7.27309537, 0.99903413, 0.99949008, 0.49326953],
+                             [- 6.27341166, -0.00031618, 0.00019368, 7.27309547, 0.99903423, 0.99949014, 0.49326974],
+                             [- 6.27341173, -0.00031615, 0.00019366, 7.27309558, 0.99903433, 0.99949019, 0.49326980],
+                             [- 6.27341181, -0.00031612, 0.00019364, 7.27309569, 0.99903442, 0.99949024, 0.49326965],
+                             [- 6.27341189, -0.00031609, 0.00019362, 7.27309580, 0.99903452, 0.99949029, 0.49326969],
+                             [- 6.27341197, -0.00031605, 0.00019360, 7.27309591, 0.99903462, 0.99949034, 0.49326954],
+                             [- 6.27341204, -0.00031602, 0.00019358, 7.27309602, 0.99903472, 0.99949040, 0.49326953],
+                             [- 6.27341212, -0.00031599, 0.00019356, 7.27309613, 0.99903482, 0.99949045, 0.49326986],
+                             [- 6.27341220, -0.00031596, 0.00019354, 7.27309624, 0.99903492, 0.99949050, 0.49326990],
+                             [- 6.27341228, -0.00031592, 0.00019352, 7.27309635, 0.99903502, 0.99949055, 0.49326950],
+                             [- 6.27341235, -0.00031589, 0.00019350, 7.27309646, 0.99903511, 0.99949060, 0.49326968],
+                             [- 6.27341243, -0.00031586, 0.00019348, 7.27309657, 0.99903521, 0.99949066, 0.49326946],
+                             [- 6.27341251, -0.00031583, 0.00019346, 7.27309668, 0.99903531, 0.99949071, 0.49326958],
+                             [- 6.27341258, -0.00031580, 0.00019344, 7.27309679, 0.99903541, 0.99949076, 0.49326990],
+                             [- 6.27341266, -0.00031576, 0.00019342, 7.27309690, 0.99903551, 0.99949081, 0.49326972],
+                             [- 6.27341274, -0.00031573, 0.00019340, 7.27309701, 0.99903561, 0.99949086, 0.49326980],
+                             [- 6.27341282, -0.00031570, 0.00019338, 7.27309712, 0.99903570, 0.99949092, 0.49327001],
+                             [- 6.27341289, -0.00031567, 0.00019336, 7.27309723, 0.99903580, 0.99949097, 0.49326985],
+                             [- 6.27341297, -0.00031563, 0.00019334, 7.27309734, 0.99903590, 0.99949102, 0.49326983],
+                             [- 6.27341305, -0.00031560, 0.00019333, 7.27309744, 0.99903600, 0.99949107, 0.49326985],
+                             [- 6.27341312, -0.00031557, 0.00019331, 7.27309755, 0.99903610, 0.99949112, 0.49327005],
+                             [- 6.27341320, -0.00031554, 0.00019329, 7.27309766, 0.99903620, 0.99949118, 0.49326985],
+                             [- 6.27341328, -0.00031551, 0.00019327, 7.27309777, 0.99903629, 0.99949123, 0.49326980],
+                             [- 6.27341336, -0.00031547, 0.00019325, 7.27309788, 0.99903639, 0.99949128, 0.49326990],
+                             [- 6.27341343, -0.00031544, 0.00019323, 7.27309799, 0.99903649, 0.99949133, 0.49326985],
+                             [- 6.27341351, -0.00031541, 0.00019321, 7.27309810, 0.99903659, 0.99949138, 0.49326999],
+                             [- 6.27341359, -0.00031538, 0.00019319, 7.27309821, 0.99903669, 0.99949144, 0.49326989],
+                             [- 6.27341366, -0.00031535, 0.00019317, 7.27309832, 0.99903679, 0.99949149, 0.49326987],
+                             [- 6.27341374, -0.00031531, 0.00019315, 7.27309843, 0.99903688, 0.99949154, 0.49327012],
+                             [- 6.27341382, -0.00031528, 0.00019313, 7.27309854, 0.99903698, 0.99949159, 0.49326994],
+                             [- 6.27341389, -0.00031525, 0.00019311, 7.27309864, 0.99903708, 0.99949164, 0.49327001],
+                             [- 6.27341397, -0.00031522, 0.00019309, 7.27309875, 0.99903718, 0.99949169, 0.49327008],
+                             [- 6.27341405, -0.00031519, 0.00019307, 7.27309886, 0.99903728, 0.99949175, 0.49327008],
+                             [- 6.27341412, -0.00031515, 0.00019305, 7.27309897, 0.99903737, 0.99949180, 0.49326970],
+                             [- 6.27341420, -0.00031512, 0.00019303, 7.27309908, 0.99903747, 0.99949185, 0.49326989],
+                             [- 6.27341428, -0.00031509, 0.00019301, 7.27309919, 0.99903757, 0.99949190, 0.49326992],
+                             [- 6.27341435, -0.00031506, 0.00019299, 7.27309930, 0.99903767, 0.99949195, 0.49327000],
+                             [- 6.27341443, -0.00031502, 0.00019297, 7.27309941, 0.99903777, 0.99949200, 0.49327006],
+                             [- 6.27341451, -0.00031499, 0.00019295, 7.27309952, 0.99903786, 0.99949206, 0.49327023],
+                             [- 6.27341459, -0.00031496, 0.00019293, 7.27309962, 0.99903796, 0.99949211, 0.49327002],
+                             [- 6.27341466, -0.00031493, 0.00019291, 7.27309973, 0.99903806, 0.99949216, 0.49327004],
+                             [- 6.27341474, -0.00031490, 0.00019289, 7.27309984, 0.99903816, 0.99949221, 0.49327010],
+                             [- 6.27341482, -0.00031486, 0.00019287, 7.27309995, 0.99903826, 0.99949226, 0.49327000],
+                             [- 6.27341489, -0.00031483, 0.00019285, 7.27310006, 0.99903835, 0.99949231, 0.49326994],
+                             [- 6.27341497, -0.00031480, 0.00019283, 7.27310017, 0.99903845, 0.99949237, 0.49327008],
+                             [- 6.27341505, -0.00031477, 0.00019281, 7.27310028, 0.99903855, 0.99949242, 0.49327002],
+                             [- 6.27341512, -0.00031474, 0.00019279, 7.27310039, 0.99903865, 0.99949247, 0.49327015],
+                             [- 6.27341520, -0.00031470, 0.00019277, 7.27310049, 0.99903874, 0.99949252, 0.49326998],
+                             [- 6.27341528, -0.00031467, 0.00019275, 7.27310060, 0.99903884, 0.99949257, 0.49327030],
+                             [- 6.27341535, -0.00031464, 0.00019274, 7.27310071, 0.99903894, 0.99949262, 0.49326995],
+                             [- 6.27341543, -0.00031461, 0.00019272, 7.27310082, 0.99903904, 0.99949268, 0.49327013],
+                             [- 6.27341550, -0.00031458, 0.00019270, 7.27310093, 0.99903914, 0.99949273, 0.49327030],
+                             [- 6.27341558, -0.00031454, 0.00019268, 7.27310104, 0.99903923, 0.99949278, 0.49327016],
+                             [- 6.27341566, -0.00031451, 0.00019266, 7.27310115, 0.99903933, 0.99949283, 0.49327003],
+                             [- 6.27341573, -0.00031448, 0.00019264, 7.27310125, 0.99903943, 0.99949288, 0.49327020],
+                             [- 6.27341581, -0.00031445, 0.00019262, 7.27310136, 0.99903953, 0.99949293, 0.49327016],
+                             [- 6.27341589, -0.00031442, 0.00019260, 7.27310147, 0.99903962, 0.99949298, 0.49327038],
+                             [- 6.27341596, -0.00031438, 0.00019258, 7.27310158, 0.99903972, 0.99949304, 0.49327020],
+                             [- 6.27341604, -0.00031435, 0.00019256, 7.27310169, 0.99903982, 0.99949309, 0.49326989],
+                             [- 6.27341612, -0.00031432, 0.00019254, 7.27310180, 0.99903992, 0.99949314, 0.49327033],
+                             [- 6.27341619, -0.00031429, 0.00019252, 7.27310190, 0.99904001, 0.99949319, 0.49327021],
+                             [- 6.27341627, -0.00031426, 0.00019250, 7.27310201, 0.99904011, 0.99949324, 0.49327047],
+                             [- 6.27341635, -0.00031423, 0.00019248, 7.27310212, 0.99904021, 0.99949329, 0.49327024],
+                             [- 6.27341642, -0.00031419, 0.00019246, 7.27310223, 0.99904031, 0.99949335, 0.49327034],
+                             [- 6.27341650, -0.00031416, 0.00019244, 7.27310234, 0.99904040, 0.99949340, 0.49327024],
+                             [- 6.27341658, -0.00031413, 0.00019242, 7.27310245, 0.99904050, 0.99949345, 0.49327049],
+                             [- 6.27341665, -0.00031410, 0.00019240, 7.27310255, 0.99904060, 0.99949350, 0.49327029],
+                             [- 6.27341673, -0.00031407, 0.00019238, 7.27310266, 0.99904070, 0.99949355, 0.49327027],
+                             [- 6.27341680, -0.00031403, 0.00019236, 7.27310277, 0.99904079, 0.99949360, 0.49327052],
+                             [- 6.27341688, -0.00031400, 0.00019234, 7.27310288, 0.99904089, 0.99949365, 0.49327062],
+                             [- 6.27341696, -0.00031397, 0.00019232, 7.27310299, 0.99904099, 0.99949370, 0.49327051],
+                             [- 6.27341703, -0.00031394, 0.00019231, 7.27310309, 0.99904108, 0.99949376, 0.49327035],
+                             [- 6.27341711, -0.00031391, 0.00019229, 7.27310320, 0.99904118, 0.99949381, 0.49327029],
+                             [- 6.27341719, -0.00031387, 0.00019227, 7.27310331, 0.99904128, 0.99949386, 0.49327040],
+                             [- 6.27341726, -0.00031384, 0.00019225, 7.27310342, 0.99904138, 0.99949391, 0.49327054],
+                             [- 6.27341734, -0.00031381, 0.00019223, 7.27310353, 0.99904147, 0.99949396, 0.49327057],
+                             [- 6.27341741, -0.00031378, 0.00019221, 7.27310363, 0.99904157, 0.99949401, 0.49327065],
+                             [- 6.27341749, -0.00031375, 0.00019219, 7.27310374, 0.99904167, 0.99949406, 0.49327055],
+                             [- 6.27341757, -0.00031372, 0.00019217, 7.27310385, 0.99904177, 0.99949412, 0.49327044],
+                             [- 6.27341764, -0.00031368, 0.00019215, 7.27310396, 0.99904186, 0.99949417, 0.49327060],
+                             [- 6.27341772, -0.00031365, 0.00019213, 7.27310407, 0.99904196, 0.99949422, 0.49327062],
+                             [- 6.27341779, -0.00031362, 0.00019211, 7.27310417, 0.99904206, 0.99949427, 0.49327057],
+                             [- 6.27341787, -0.00031359, 0.00019209, 7.27310428, 0.99904215, 0.99949432, 0.49327068],
+                             [- 6.27341795, -0.00031356, 0.00019207, 7.27310439, 0.99904225, 0.99949437, 0.49327087],
+                             [- 6.27341802, -0.00031353, 0.00019205, 7.27310450, 0.99904235, 0.99949442, 0.49327065],
+                             [- 6.27341810, -0.00031349, 0.00019203, 7.27310461, 0.99904244, 0.99949447, 0.49327040],
+                             [- 6.27341817, -0.00031346, 0.00019201, 7.27310471, 0.99904254, 0.99949453, 0.49327056],
+                             [- 6.27341825, -0.00031343, 0.00019199, 7.27310482, 0.99904264, 0.99949458, 0.49327057],
+                             [- 6.27341833, -0.00031340, 0.00019197, 7.27310493, 0.99904274, 0.99949463, 0.49327059],
+                             [- 6.27341840, -0.00031337, 0.00019195, 7.27310504, 0.99904283, 0.99949468, 0.49327075],
+                             [- 6.27341848, -0.00031333, 0.00019194, 7.27310514, 0.99904293, 0.99949473, 0.49327058],
+                             [- 6.27341855, -0.00031330, 0.00019192, 7.27310525, 0.99904303, 0.99949478, 0.49327073],
+                             [- 6.27341863, -0.00031327, 0.00019190, 7.27310536, 0.99904312, 0.99949483, 0.49327054],
+                             [- 6.27341871, -0.00031324, 0.00019188, 7.27310547, 0.99904322, 0.99949488, 0.49327048],
+                             [- 6.27341878, -0.00031321, 0.00019186, 7.27310557, 0.99904332, 0.99949493, 0.49327086],
+                             [- 6.27341886, -0.00031318, 0.00019184, 7.27310568, 0.99904341, 0.99949499, 0.49327056],
+                             [- 6.27341893, -0.00031314, 0.00019182, 7.27310579, 0.99904351, 0.99949504, 0.49327071],
+                             [- 6.27341901, -0.00031311, 0.00019180, 7.27310590, 0.99904361, 0.99949509, 0.49327045],
+                             [- 6.27341909, -0.00031308, 0.00019178, 7.27310600, 0.99904370, 0.99949514, 0.49327067],
+                             [- 6.27341916, -0.00031305, 0.00019176, 7.27310611, 0.99904380, 0.99949519, 0.49327067],
+                             [- 6.27341924, -0.00031302, 0.00019174, 7.27310622, 0.99904390, 0.99949524, 0.49327074],
+                             [- 6.27341931, -0.00031299, 0.00019172, 7.27310633, 0.99904399, 0.99949529, 0.49327107],
+                             [- 6.27341939, -0.00031295, 0.00019170, 7.27310643, 0.99904409, 0.99949534, 0.49327064],
+                             [- 6.27341946, -0.00031292, 0.00019168, 7.27310654, 0.99904419, 0.99949539, 0.49327063],
+                             [- 6.27341954, -0.00031289, 0.00019166, 7.27310665, 0.99904428, 0.99949545, 0.49327050],
+                             [- 6.27341962, -0.00031286, 0.00019164, 7.27310676, 0.99904438, 0.99949550, 0.49327069],
+                             [- 6.27341969, -0.00031283, 0.00019162, 7.27310686, 0.99904448, 0.99949555, 0.49327081],
+                             [- 6.27341977, -0.00031280, 0.00019161, 7.27310697, 0.99904457, 0.99949560, 0.49327077],
+                             [- 6.27341984, -0.00031276, 0.00019159, 7.27310708, 0.99904467, 0.99949565, 0.49327081],
+                             [- 6.27341992, -0.00031273, 0.00019157, 7.27310719, 0.99904477, 0.99949570, 0.49327088],
+                             [- 6.27341999, -0.00031270, 0.00019155, 7.27310729, 0.99904486, 0.99949575, 0.49327082],
+                             [- 6.27342007, -0.00031267, 0.00019153, 7.27310740, 0.99904496, 0.99949580, 0.49327067],
+                             [- 6.27342015, -0.00031264, 0.00019151, 7.27310751, 0.99904506, 0.99949585, 0.49327061],
+                             [- 6.27342022, -0.00031261, 0.00019149, 7.27310761, 0.99904515, 0.99949590, 0.49327079],
+                             [- 6.27342030, -0.00031258, 0.00019147, 7.27310772, 0.99904525, 0.99949595, 0.49327103],
+                             [- 6.27342037, -0.00031254, 0.00019145, 7.27310783, 0.99904535, 0.99949601, 0.49327107],
+                             [- 6.27342045, -0.00031251, 0.00019143, 7.27310794, 0.99904544, 0.99949606, 0.49327084],
+                             [- 6.27342052, -0.00031248, 0.00019141, 7.27310804, 0.99904554, 0.99949611, 0.49327096],
+                             [- 6.27342060, -0.00031245, 0.00019139, 7.27310815, 0.99904563, 0.99949616, 0.49327062],
+                             [- 6.27342067, -0.00031242, 0.00019137, 7.27310826, 0.99904573, 0.99949621, 0.49327088],
+                             [- 6.27342075, -0.00031239, 0.00019135, 7.27310836, 0.99904583, 0.99949626, 0.49327094],
+                             [- 6.27342083, -0.00031235, 0.00019133, 7.27310847, 0.99904592, 0.99949631, 0.49327095],
+                             [- 6.27342090, -0.00031232, 0.00019132, 7.27310858, 0.99904602, 0.99949636, 0.49327111],
+                             [- 6.27342098, -0.00031229, 0.00019130, 7.27310869, 0.99904612, 0.99949641, 0.49327066],
+                             [- 6.27342105, -0.00031226, 0.00019128, 7.27310879, 0.99904621, 0.99949646, 0.49327112],
+                             [- 6.27342113, -0.00031223, 0.00019126, 7.27310890, 0.99904631, 0.99949651, 0.49327094],
+                             [- 6.27342120, -0.00031220, 0.00019124, 7.27310901, 0.99904641, 0.99949656, 0.49327097],
+                             [- 6.27342128, -0.00031217, 0.00019122, 7.27310911, 0.99904650, 0.99949662, 0.49327094],
+                             [- 6.27342135, -0.00031213, 0.00019120, 7.27310922, 0.99904660, 0.99949667, 0.49327120],
+                             [- 6.27342143, -0.00031210, 0.00019118, 7.27310933, 0.99904669, 0.99949672, 0.49327123],
+                             [- 6.27342150, -0.00031207, 0.00019116, 7.27310943, 0.99904679, 0.99949677, 0.49327124],
+                             [- 6.27342158, -0.00031204, 0.00019114, 7.27310954, 0.99904689, 0.99949682, 0.49327089],
+                             [- 6.27342166, -0.00031201, 0.00019112, 7.27310965, 0.99904698, 0.99949687, 0.49327096],
+                             [- 6.27342173, -0.00031198, 0.00019110, 7.27310975, 0.99904708, 0.99949692, 0.49327093],
+                             [- 6.27342181, -0.00031195, 0.00019108, 7.27310986, 0.99904717, 0.99949697, 0.49327128],
+                             [- 6.27342188, -0.00031191, 0.00019106, 7.27310997, 0.99904727, 0.99949702, 0.49327122],
+                             [- 6.27342196, -0.00031188, 0.00019105, 7.27311007, 0.99904737, 0.99949707, 0.49327128],
+                             [- 6.27342203, -0.00031185, 0.00019103, 7.27311018, 0.99904746, 0.99949712, 0.49327113],
+                             [- 6.27342211, -0.00031182, 0.00019101, 7.27311029, 0.99904756, 0.99949717, 0.49327121],
+                             [- 6.27342218, -0.00031179, 0.00019099, 7.27311039, 0.99904765, 0.99949722, 0.49327115],
+                             [- 6.27342226, -0.00031176, 0.00019097, 7.27311050, 0.99904775, 0.99949727, 0.49327114],
+                             [- 6.27342233, -0.00031173, 0.00019095, 7.27311061, 0.99904785, 0.99949733, 0.49327102],
+                             [- 6.27342241, -0.00031169, 0.00019093, 7.27311071, 0.99904794, 0.99949738, 0.49327120],
+                             [- 6.27342248, -0.00031166, 0.00019091, 7.27311082, 0.99904804, 0.99949743, 0.49327130],
+                             [- 6.27342256, -0.00031163, 0.00019089, 7.27311093, 0.99904813, 0.99949748, 0.49327109],
+                             [- 6.27342263, -0.00031160, 0.00019087, 7.27311103, 0.99904823, 0.99949753, 0.49327132],
+                             [- 6.27342271, -0.00031157, 0.00019085, 7.27311114, 0.99904833, 0.99949758, 0.49327146],
+                             [- 6.27342278, -0.00031154, 0.00019083, 7.27311125, 0.99904842, 0.99949763, 0.49327090],
+                             [- 6.27342286, -0.00031151, 0.00019081, 7.27311135, 0.99904852, 0.99949768, 0.49327123],
+                             [- 6.27342293, -0.00031147, 0.00019080, 7.27311146, 0.99904861, 0.99949773, 0.49327134],
+                             [- 6.27342301, -0.00031144, 0.00019078, 7.27311156, 0.99904871, 0.99949778, 0.49327133],
+                             [- 6.27342308, -0.00031141, 0.00019076, 7.27311167, 0.99904880, 0.99949783, 0.49327117],
+                             [- 6.27342316, -0.00031138, 0.00019074, 7.27311178, 0.99904890, 0.99949788, 0.49327124],
+                             [- 6.27342323, -0.00031135, 0.00019072, 7.27311188, 0.99904900, 0.99949793, 0.49327116],
+                             [- 6.27342331, -0.00031132, 0.00019070, 7.27311199, 0.99904909, 0.99949798, 0.49327125],
+                             [- 6.27342338, -0.00031129, 0.00019068, 7.27311210, 0.99904919, 0.99949803, 0.49327132],
+                             [- 6.27342346, -0.00031126, 0.00019066, 7.27311220, 0.99904928, 0.99949808, 0.49327161],
+                             [- 6.27342353, -0.00031122, 0.00019064, 7.27311231, 0.99904938, 0.99949813, 0.49327137],
+                             [- 6.27342361, -0.00031119, 0.00019062, 7.27311242, 0.99904947, 0.99949818, 0.49327141],
+                             [- 6.27342368, -0.00031116, 0.00019060, 7.27311252, 0.99904957, 0.99949824, 0.49327151],
+                             [- 6.27342376, -0.00031113, 0.00019058, 7.27311263, 0.99904966, 0.99949829, 0.49327147],
+                             [- 6.27342383, -0.00031110, 0.00019057, 7.27311273, 0.99904976, 0.99949834, 0.49327157],
+                             [- 6.27342391, -0.00031107, 0.00019055, 7.27311284, 0.99904986, 0.99949839, 0.49327158],
+                             [- 6.27342398, -0.00031104, 0.00019053, 7.27311295, 0.99904995, 0.99949844, 0.49327140],
+                             [- 6.27342406, -0.00031101, 0.00019051, 7.27311305, 0.99905005, 0.99949849, 0.49327149],
+                             [- 6.27342413, -0.00031097, 0.00019049, 7.27311316, 0.99905014, 0.99949854, 0.49327130],
+                             [- 6.27342421, -0.00031094, 0.00019047, 7.27311326, 0.99905024, 0.99949859, 0.49327138],
+                             [- 6.27342428, -0.00031091, 0.00019045, 7.27311337, 0.99905033, 0.99949864, 0.49327154],
+                             [- 6.27342436, -0.00031088, 0.00019043, 7.27311348, 0.99905043, 0.99949869, 0.49327144],
+                             [- 6.27342443, -0.00031085, 0.00019041, 7.27311358, 0.99905052, 0.99949874, 0.49327149],
+                             [- 6.27342451, -0.00031082, 0.00019039, 7.27311369, 0.99905062, 0.99949879, 0.49327160],
+                             [- 6.27342458, -0.00031079, 0.00019037, 7.27311379, 0.99905071, 0.99949884, 0.49327162],
+                             [- 6.27342466, -0.00031076, 0.00019035, 7.27311390, 0.99905081, 0.99949889, 0.49327146],
+                             [- 6.27342473, -0.00031072, 0.00019034, 7.27311401, 0.99905091, 0.99949894, 0.49327178],
+                             [- 6.27342480, -0.00031069, 0.00019032, 7.27311411, 0.99905100, 0.99949899, 0.49327156],
+                             [- 6.27342488, -0.00031066, 0.00019030, 7.27311422, 0.99905110, 0.99949904, 0.49327151],
+                             [- 6.27342495, -0.00031063, 0.00019028, 7.27311432, 0.99905119, 0.99949909, 0.49327157],
+                             [- 6.27342503, -0.00031060, 0.00019026, 7.27311443, 0.99905129, 0.99949914, 0.49327162],
+                             [- 6.27342510, -0.00031057, 0.00019024, 7.27311453, 0.99905138, 0.99949919, 0.49327180],
+                             [- 6.27342518, -0.00031054, 0.00019022, 7.27311464, 0.99905148, 0.99949924, 0.49327153],
+                             [- 6.27342525, -0.00031051, 0.00019020, 7.27311475, 0.99905157, 0.99949929, 0.49327170],
+                             [- 6.27342533, -0.00031047, 0.00019018, 7.27311485, 0.99905167, 0.99949934, 0.49327164],
+                             [- 6.27342540, -0.00031044, 0.00019016, 7.27311496, 0.99905176, 0.99949939, 0.49327177],
+                             [- 6.27342548, -0.00031041, 0.00019014, 7.27311506, 0.99905186, 0.99949944, 0.49327171],
+                             [- 6.27342555, -0.00031038, 0.00019013, 7.27311517, 0.99905195, 0.99949949, 0.49327163],
+                             [- 6.27342563, -0.00031035, 0.00019011, 7.27311527, 0.99905205, 0.99949954, 0.49327148],
+                             [- 6.27342570, -0.00031032, 0.00019009, 7.27311538, 0.99905214, 0.99949959, 0.49327177],
+                             [- 6.27342577, -0.00031029, 0.00019007, 7.27311549, 0.99905224, 0.99949964, 0.49327190],
+                             [- 6.27342585, -0.00031026, 0.00019005, 7.27311559, 0.99905233, 0.99949969, 0.49327174],
+                             [- 6.27342592, -0.00031023, 0.00019003, 7.27311570, 0.99905243, 0.99949974, 0.49327179],
+                             [- 6.27342600, -0.00031019, 0.00019001, 7.27311580, 0.99905252, 0.99949979, 0.49327165],
+                             [- 6.27342607, -0.00031016, 0.00018999, 7.27311591, 0.99905262, 0.99949984, 0.49327180],
+                             [- 6.27342615, -0.00031013, 0.00018997, 7.27311601, 0.99905271, 0.99949989, 0.49327176],
+                             [- 6.27342622, -0.00031010, 0.00018995, 7.27311612, 0.99905281, 0.99949994, 0.49327155],
+                             [- 6.27342630, -0.00031007, 0.00018993, 7.27311622, 0.99905290, 0.99949999, 0.49327169],
+                             [- 6.27342637, -0.00031004, 0.00018992, 7.27311633, 0.99905300, 0.99950004, 0.49327184],
+                             [- 6.27342644, -0.00031001, 0.00018990, 7.27311644, 0.99905309, 0.99950009, 0.49327184],
+                             [- 6.27342652, -0.00030998, 0.00018988, 7.27311654, 0.99905319, 0.99950014, 0.49327176],
+                             [- 6.27342659, -0.00030995, 0.00018986, 7.27311665, 0.99905328, 0.99950019, 0.49327184],
+                             [- 6.27342667, -0.00030992, 0.00018984, 7.27311675, 0.99905338, 0.99950024, 0.49327166],
+                             [- 6.27342674, -0.00030988, 0.00018982, 7.27311686, 0.99905347, 0.99950029, 0.49327222],
+                             [- 6.27342682, -0.00030985, 0.00018980, 7.27311696, 0.99905357, 0.99950034, 0.49327211],
+                             [- 6.27342689, -0.00030982, 0.00018978, 7.27311707, 0.99905366, 0.99950039, 0.49327202],
+                             [- 6.27342696, -0.00030979, 0.00018976, 7.27311717, 0.99905376, 0.99950044, 0.49327179],
+                             [- 6.27342704, -0.00030976, 0.00018974, 7.27311728, 0.99905385, 0.99950049, 0.49327176],
+                             [- 6.27342711, -0.00030973, 0.00018973, 7.27311738, 0.99905394, 0.99950054, 0.49327202],
+                             [- 6.27342719, -0.00030970, 0.00018971, 7.27311749, 0.99905404, 0.99950059, 0.49327184],
+                             [- 6.27342726, -0.00030967, 0.00018969, 7.27311759, 0.99905413, 0.99950064, 0.49327198],
+                             [- 6.27342733, -0.00030964, 0.00018967, 7.27311770, 0.99905423, 0.99950069, 0.49327205],
+                             [- 6.27342741, -0.00030961, 0.00018965, 7.27311780, 0.99905432, 0.99950074, 0.49327200],
+                             [- 6.27342748, -0.00030957, 0.00018963, 7.27311791, 0.99905442, 0.99950079, 0.49327197],
+                             [- 6.27342756, -0.00030954, 0.00018961, 7.27311801, 0.99905451, 0.99950084, 0.49327183],
+                             [- 6.27342763, -0.00030951, 0.00018959, 7.27311812, 0.99905461, 0.99950089, 0.49327208],
+                             [- 6.27342771, -0.00030948, 0.00018957, 7.27311822, 0.99905470, 0.99950094, 0.49327205],
+                             [- 6.27342778, -0.00030945, 0.00018956, 7.27311833, 0.99905480, 0.99950099, 0.49327194]])
+
+    if value == 'h':
+        series = love_numbers[:, 0]
+    elif value == 'k':
+        series = love_numbers[:, 1]
+    elif value == 'l':
+        series = love_numbers[:, 2]
+    elif value == 'gamma':
+        series = love_numbers[:, 3]
+    elif value == 'lambda':
+        series = love_numbers[:, 4]
+    else:
+        raise RuntimeError(['love_numbers error message: unknow value:', value])
+
+    # choose degree 1 term for CF reference system
+    if frame == 'CF':  # from Blewitt, 2003, JGR
+        if value == 'h':
+            series[1] = -0.269
+        elif value == 'k':
+            series[1] = 0.021
+        elif value == 'l':
+            series[1] = 0.134
+
+    return series
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBarma.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBarma.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBarma.m	(revision 27955)
@@ -0,0 +1,276 @@
+%SMBarma Class definition
+%
+%   Usage:
+%      SMBarma=SMBarma();
+
+classdef SMBarma
+	properties (SetAccess=public)
+		num_basins        = 0;
+		num_breaks        = 0;
+		num_params        = 0;
+		arma_timestep     = 0;
+		ar_order			 = 0;
+		arlag_coefs       = NaN;
+		ma_order			 = 0;
+		malag_coefs       = NaN;
+		polynomialparams  = NaN;
+		datebreaks        = NaN;
+		basin_id			 = NaN;
+		lapserates        = NaN;
+		elevationbins     = NaN;
+		refelevation      = NaN;
+		steps_per_step    = 1;
+		averaging			= 0;
+		requested_outputs = {};
+	end
+	methods
+		function self = SMBarma(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			%Nothing for now
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'SmbMassBalance'};
+		end % }}}
+		function self = initialize(self,md) % {{{
+			if (self.ar_order==0)
+				self.ar_order = 1; %dummy 1 value for autoregression
+				self.arlag_coefs      = zeros(self.num_basins,self.ar_order); %autoregression coefficients all set to 0 
+				disp('      smb.ar_order (order of autoregressive model) not specified: order of autoregressive model set to 0');
+			end
+			if (self.ma_order==0)
+				self.ma_order = 1; %dummy 1 value for moving-average
+				self.malag_coefs      = zeros(self.num_basins,self.ma_order); %moving-average coefficients all set to 0 
+				disp('      smb.ma_order (order of moving-average model) not specified: order of moving-average model set to 0');
+			end
+			if (self.arma_timestep==0)
+				self.arma_timestep = md.timestepping.time_step; %ARMA model has no prescribed time step
+				disp('      smb.arma_timestep (timestep of ARMA model) not specified: set to md.timestepping.time_step');
+			end
+			if isnan(self.arlag_coefs)
+				self.arlag_coefs = zeros(self.num_basins,self.ar_order); %autoregression model of order 0 
+				disp('      smb.arlag_coefs (AR lag coefficients) not specified: order of autoregressive model set to 0');
+			end
+			if isnan(self.malag_coefs)
+				self.malag_coefs = zeros(self.num_basins,self.ma_order); %autoregression model of order 0 
+				disp('      smb.malag_coefs (MA lag coefficients) not specified: order of moving-average model set to 0');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			self.ar_order    = 0.0; %autoregression model of order 0
+			self.ma_order    = 0.0; %moving-average model of order 0
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses),
+				nbas = md.smb.num_basins;
+				nprm = md.smb.num_params;
+				nbrk = md.smb.num_breaks;
+				md = checkfield(md,'fieldname','smb.num_basins','numel',1,'NaN',1,'Inf',1,'>',0);
+				md = checkfield(md,'fieldname','smb.num_params','numel',1,'NaN',1,'Inf',1,'>',0);
+				md = checkfield(md,'fieldname','smb.num_breaks','numel',1,'NaN',1,'Inf',1,'>=',0);
+				md = checkfield(md,'fieldname','smb.basin_id','Inf',1,'>=',0,'<=',nbas,'size',[md.mesh.numberofelements,1]);
+				if(nbas>1 && nbrk>=1 && nprm>1)
+					md = checkfield(md,'fieldname','smb.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nbrk+1,nprm],'numel',nbas*(nbrk+1)*nprm); 
+				elseif(nbas==1)
+					md = checkfield(md,'fieldname','smb.polynomialparams','NaN',1,'Inf',1,'size',[nprm,nbrk+1],'numel',nbas*(nbrk+1)*nprm);
+				elseif(nbrk==0)
+					md = checkfield(md,'fieldname','smb.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nprm],'numel',nbas*(nbrk+1)*nprm);
+				elseif(nprm==1)
+					md = checkfield(md,'fieldname','smb.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nbrk+1],'numel',nbas*(nbrk+1)*nprm);
+				end
+				md = checkfield(md,'fieldname','smb.ar_order','numel',1,'NaN',1,'Inf',1,'>=',0);
+				md = checkfield(md,'fieldname','smb.ma_order','numel',1,'NaN',1,'Inf',1,'>=',0);
+				md = checkfield(md,'fieldname','smb.arma_timestep','numel',1,'NaN',1,'Inf',1,'>=',md.timestepping.time_step); %arma time step cannot be finer than ISSM timestep
+				md = checkfield(md,'fieldname','smb.arlag_coefs','NaN',1,'Inf',1,'size',[nbas,md.smb.ar_order]);
+				md = checkfield(md,'fieldname','smb.malag_coefs','NaN',1,'Inf',1,'size',[nbas,md.smb.ma_order]);
+				
+				if(nbrk>0)
+					md = checkfield(md,'fieldname','smb.datebreaks','NaN',1,'Inf',1,'size',[nbas,nbrk]);
+				elseif(numel(md.smb.datebreaks)==0 || all(isnan(md.smb.datebreaks)))
+					;
+				else
+					error('md.smb.num_breaks is 0 but md.smb.datebreaks is not empty');
+				end
+				if (any(isnan(md.smb.refelevation)==0) || numel(md.smb.refelevation)>1)
+					md = checkfield(md,'fieldname','smb.refelevation','NaN',1,'Inf',1,'>=',0,'size',[1,nbas],'numel',nbas);
+				end
+				nbas     = size(md.smb.lapserates,1);
+				nbins    = size(md.smb.lapserates,2);
+				ntmlapse = size(md.smb.lapserates,3);
+				if(ntmlapse>1 && ntmlapse~=12)
+					error('3rd dimension of md.smb.lapserates must be of size 1 or 12 (for monthly lapse rates)');
+				end
+				if (any(isnan(reshape(md.smb.lapserates,[1,nbas*nbins*ntmlapse]))==0) || numel(md.smb.lapserates)>1)
+					md = checkfield(md,'fieldname','smb.lapserates','NaN',1,'Inf',1,'size',[nbas,nbins,ntmlapse],'numel',nbas*nbins*ntmlapse);
+					md = checkfield(md,'fieldname','smb.elevationbins','NaN',1,'Inf',1,'size',[nbas,max(1,nbins-1),ntmlapse],'numel',nbas*max(1,nbins-1)*ntmlapse);
+					if(issorted(md.smb.elevationbins,2)==0)
+						error('md.smb.elevationbins should have rows in order of increasing elevation');
+					end
+				elseif (isnan(md.smb.elevationbins(1,1,1))==0 || numel(md.smb.elevationbins)>1)
+					%elevationbins specified but not lapserates: this will inevitably lead to inconsistencies
+					nbas     = size(md.smb.elevationbins,1);
+					nbins    = size(md.smb.elevationbins,2);
+					nbins    = nbins+1;
+					ntmlapse = size(md.smb.elevationbins,3);
+					md = checkfield(md,'fieldname','smb.lapserates','NaN',1,'Inf',1,'size',[nbas,max(1,nbins-1),ntmlapse],'numel',nbas*nbins*ntmlapse);
+					md = checkfield(md,'fieldname','smb.elevationbins','NaN',1,'Inf',1,'size',[nbas,max(1,nbins-1),ntmlapse],'numel',nbas*max(1,nbins-1)*ntmlapse);
+				end
+			end
+			md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]);
+			md = checkfield(md,'fieldname','smb.averaging','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+			fielddisplay(self,'num_basins','number of different basins [unitless]');
+			fielddisplay(self,'basin_id','basin number assigned to each element [unitless]');
+			fielddisplay(self,'num_breaks','number of different breakpoints in the piecewise-polynomial (separating num_breaks+1 periods)');
+			fielddisplay(self,'num_params','number of different parameters in the piecewise-polynomial (1:intercept only, 2:with linear trend, 3:with quadratic trend, etc.)');
+			fielddisplay(self,'polynomialparams','coefficients for the polynomial (const,trend,quadratic,etc.),dim1 for basins,dim2 for periods,dim3 for orders');
+			disp(sprintf('%51s  ex: polyparams=cat(3,intercepts,trendlinearcoefs,trendquadraticcoefs)',' '));
+			fielddisplay(self,'datebreaks','dates at which the breakpoints in the piecewise polynomial occur (1 row per basin) [yr]');
+			fielddisplay(self,'ar_order','order of the autoregressive model [unitless]');
+			fielddisplay(self,'ma_order','order of the moving-average model [unitless]');
+			fielddisplay(self,'arma_timestep','time resolution of the ARMA model [yr]');
+			fielddisplay(self,'arlag_coefs','basin-specific vectors of AR lag coefficients [unitless]');
+			fielddisplay(self,'malag_coefs','basin-specific vectors of MA lag coefficients [unitless]');
+			fielddisplay(self,'lapserates','basin-specific SMB lapse rates applied in each elevation bin, 1 row per basin, 1 column per bin, dimension 3 can be of size 12 to prescribe monthly varying values [m ice eq yr^-1 m^-1] (default: no lapse rate)');
+			fielddisplay(self,'elevationbins','basin-specific separations between elevation bins, 1 row per basin, 1 column per limit between bins, dimension 3 can be of size 12 to prescribe monthly varying values [m] (default: no basin separation)');
+			fielddisplay(self,'refelevation','basin-specific reference elevations at which SMB is calculated, and from which SMB is downscaled using lapserates (default: basin mean elevation) [m]');
+			fielddisplay(self, 'steps_per_step', 'number of smb steps per time step');
+			fielddisplay(self, 'averaging', 'averaging methods from short to long steps');
+			disp(sprintf('%51s  0: Arithmetic (default)',' '));
+			disp(sprintf('%51s  1: Geometric',' '));
+			disp(sprintf('%51s  2: Harmonic',' '));
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+			nbas = md.smb.num_basins;
+			nprm = md.smb.num_params;
+			nper = md.smb.num_breaks+1;
+
+			templapserates    = md.smb.lapserates;
+			tempelevationbins = md.smb.elevationbins;
+			temprefelevation  = md.smb.refelevation;
+			nbas     = size(md.smb.lapserates,1);
+			nbins    = size(md.smb.lapserates,2);
+			ntmlapse = size(md.smb.lapserates,3);
+			if(any(isnan(reshape(md.smb.lapserates,[1,nbas*nbins*ntmlapse]))))
+				templapserates = zeros(md.smb.num_basins,2,12);
+				disp('      smb.lapserates not specified: set to 0');
+			   tempelevationbins = zeros(md.smb.num_basins,1,12); %dummy elevation bins
+			elseif(ntmlapse==1)
+				templapserates    = repmat(templapserates,1,1,12); %same values each month
+				tempelevationbins = repmat(tempelevationbins,1,1,12); %same values each month
+			end
+			nbas     = size(templapserates,1);
+			nbins    = size(templapserates,2);
+			ntmlapse = size(templapserates,3);
+			if(any(isnan(md.smb.refelevation)))
+				temprefelevation = zeros(1,md.smb.num_basins);
+				areas = GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y);
+				for ii=1:md.smb.num_basins
+					indices = find(md.smb.basin_id==ii);
+					elemsh  = zeros(numel(indices),1);
+					for jj=1:numel(indices)
+						elemsh(jj) = mean(md.geometry.surface(md.mesh.elements(indices(jj),:)));
+					end
+					temprefelevation(ii) = sum(areas(indices).*elemsh)/sum(areas(indices));
+				end
+				if(any(reshape(templapserates,[1,nbas*nbins*12])~=0))
+					disp('      smb.refelevation not specified: Reference elevations set to mean surface elevation of basins');
+				end
+			end
+			temp2dlapserates    = zeros(nbas,nbins*12);
+			temp2delevationbins = zeros(nbas,max(1,nbins-1)*12);
+			for(ii=[1:12])
+				jj = 1+(ii-1)*nbins;
+				temp2dlapserates(:,jj:jj+nbins-1)    = templapserates(:,:,ii);
+				kk = 1+(ii-1)*(nbins-1);
+				temp2delevationbins(:,kk:kk+nbins-2) = tempelevationbins(:,:,ii);
+			end
+
+			% Scale the parameters %
+			polyparamsScaled   = md.smb.polynomialparams;
+			polyparams2dScaled = zeros(nbas,nper*nprm);
+			if(nprm>1)
+				% Case 3D %
+				if(nbas>1 && nper>1)
+					for(ii=[1:nprm])
+						polyparamsScaled(:,:,ii) = polyparamsScaled(:,:,ii)*((1/yts)^(ii));
+					end
+					% Fit in 2D array %
+					for(ii=[1:nprm])
+						jj = 1+(ii-1)*nper;
+						polyparams2dScaled(:,jj:jj+nper-1) = polyparamsScaled(:,:,ii);
+					end
+				% Case 2D and higher-order params at increasing row index %
+				elseif(nbas==1)
+					for(ii=[1:nprm])
+						polyparamsScaled(ii,:) = polyparamsScaled(ii,:)*((1/yts)^(ii));
+					end
+					% Fit in row array %
+					for(ii=[1:nprm])
+						jj = 1+(ii-1)*nper;
+						polyparams2dScaled(1,jj:jj+nper-1) = polyparamsScaled(ii,:);
+					end
+				% Case 2D and higher-order params at incrasing column index %
+				elseif(nper==1)
+					for(ii=[1:nprm])
+						polyparamsScaled(:,ii) = polyparamsScaled(:,ii)*((1/yts)^(ii));
+					end
+					% 2D array is already in correct format %
+					polyparams2dScaled = polyparamsScaled;
+				end
+			else
+				polyparamsScaled   = polyparamsScaled*(1/yts);
+				% 2D array is already in correct format %
+				polyparams2dScaled = polyparamsScaled;
+			end
+			if(nper==1) %a single period (no break date)
+				dbreaks = zeros(nbas,1); %dummy
+			else
+				dbreaks = md.smb.datebreaks;
+			end
+
+			WriteData(fid,prefix,'name','md.smb.model','data',13,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','num_basins','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','num_params','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','num_breaks','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','ar_order','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','ma_order','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','arma_timestep','format','Double','scale',yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','basin_id','data',self.basin_id-1,'name','md.smb.basin_id','format','IntMat','mattype',2); %0-indexed
+			WriteData(fid,prefix,'data',polyparams2dScaled,'name','md.smb.polynomialparams','format','DoubleMat');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','arlag_coefs','format','DoubleMat','name','md.smb.arlag_coefs','yts',yts); 
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','malag_coefs','format','DoubleMat','name','md.smb.malag_coefs','yts',yts);
+			WriteData(fid,prefix,'data',dbreaks,'name','md.smb.datebreaks','format','DoubleMat','scale',yts);
+			WriteData(fid,prefix,'data',temp2dlapserates,'format','DoubleMat','name','md.smb.lapserates','scale',1./yts,'yts',yts);
+			WriteData(fid,prefix,'data',temp2delevationbins,'format','DoubleMat','name','md.smb.elevationbins');
+			WriteData(fid,prefix,'data',temprefelevation,'format','DoubleMat','name','md.smb.refelevation');
+			WriteData(fid,prefix,'data',nbins,'format','Integer','name','md.smb.num_bins');
+			WriteData(fid,prefix,'object',self,'fieldname','steps_per_step','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','averaging','format','Integer');
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];											%remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)];	%add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBarma.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBarma.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBarma.py	(revision 27955)
@@ -0,0 +1,288 @@
+import numpy as np
+
+from checkfield import *
+from fielddisplay import fielddisplay
+from GetAreas import *
+from project3d import *
+from WriteData import *
+
+class SMBarma(object):
+    """SMBarma class definition
+
+    Usage:
+        SMBarma = SMBarma()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.num_basins = 0
+        self.num_params = 0
+        self.num_breaks = 0
+        self.polynomialparams = np.nan
+        self.ar_order = 0
+        self.ma_order = 0
+        self.arlag_coefs = np.nan
+        self.ma_order = 0
+        self.malag_coefs = np.nan
+        self.polynomialparams = np.nan
+        self.datebreaks = np.nan
+        self.basin_id = np.nan
+        self.lapserates = np.nan
+        self.elevationbins = np.nan
+        self.refelevation = np.nan
+        self.datebreaks = np.nan
+        self.steps_per_step = 1
+        self.averaging = 0
+        self.requested_outputs = []
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   surface forcings parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'num_basins', 'number of different basins [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'basin_id', 'basin number assigned to each element [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'num_breaks', 'number of different breakpoints in the piecewise-polynomial (separating num_breaks+1 periods)'))
+        s += '{}\n'.format(fielddisplay(self, 'num_params', 'number of different parameters in the piecewise-polynomial (1:intercept only, 2:with linear trend, 3:with quadratic trend, etc.)'))
+        s += '{}\n'.format(fielddisplay(self, 'polynomialparams', 'coefficients for the polynomial (const,trend,quadratic,etc.),dim1 for basins,dim2 for periods,dim3 for orders, ex: polyparams=cat(num_params,intercepts,trendlinearcoefs,trendquadraticcoefs)'))
+        s += '{}\n'.format(fielddisplay(self, 'datebreaks', 'dates at which the breakpoints in the piecewise polynomial occur (1 row per basin) [yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'ar_order', 'order of the autoregressive model [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'ma_order', 'order of the moving-average model [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'arma_timestep', 'time resolution of the ARMA model [yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'arlag_coefs', 'basin-specific vectors of AR lag coefficients [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'malag_coefs', 'basin-specific vectors of MA lag coefficients [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'lapserates', 'basin-specific SMB lapse rates applied in each elevation bin, 1 row per basin, 1 column per bin, dimension 3 can be of size 12 to prescribe monthly varying values [m ice eq yr^-1 m^-1] (default: no lapse rate)'))
+        s += '{}\n'.format(fielddisplay(self, 'elevationbins', 'basin-specific separations between elevation bins, 1 row per basin, 1 column per limit between bins, dimension 3 can be of size 12 to prescribe monthly varying values [m] (default: no basin separation)'))
+        s += '{}\n'.format(fielddisplay(self, 'refelevation', 'basin-specific reference elevations at which SMB is calculated, and from which SMB is downscaled using lapserates (default: basin mean elevation) [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'))
+        s += '{}\n'.format(fielddisplay(self, 'averaging', 'averaging methods from short to long steps'))
+        s += '\t\t{}\n'.format('0: Arithmetic (default)')
+        s += '\t\t{}\n'.format('1: Geometric')
+        s += '\t\t{}\n'.format('2: Harmonic')
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.ar_order = 0.0 # Autoregression model of order 0
+        self.ma_order = 0.0 # Moving-average model of order 0
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self # Nothing for now
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['SmbMassBalance']
+    # }}}
+
+    def initialize(self, md):  # {{{
+        if self.ar_order == 0:
+            self.ar_order = 1 # Dummy 1 value for autoregression
+            self.arlag_coefs = np.zeros((self.num_basins, self.ar_order)) # Autoregression coefficients all set to 0
+            print('      smb.ar_order (order of autoregressive model) not specified: order of autoregressive model set to 0')
+        if self.ma_order == 0:
+            self.ma_order = 1 # Dummy 1 value for moving-average
+            self.malag_coefs = np.zeros((self.num_basins, self.ma_order)) # Moving-average coefficients all set to 0
+            print('      smb.ma_order (order of moving-average model) not specified: order of moving-average model set to 0')
+        if self.arma_timestep == 0:
+            self.arma_timestep = md.timestepping.time_step # ARMA model has no prescribed time step
+            print('      smb.arma_timestep (timestep of ARMA model) not specified: set to md.timestepping.time_step')
+        if np.all(np.isnan(self.arlag_coefs)):
+            self.arlag_coefs = np.zeros((self.num_basins, self.ar_order)) # Autoregression model of order 0
+            print('      smb.arlag_coefs (AR lag coefficients) not specified: order of autoregressive model set to 0')
+        if np.all(np.isnan(self.malag_coefs)):
+            self.arlag_coefs = np.zeros((self.num_basins, self.ma_order)) # Moving-average model of order 0
+            print('      smb.malag_coefs (MA lag coefficients) not specified: order of moving-average model set to 0')
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        """
+        TODO:
+        - Ensure that checks on shape of self.lapserates are same as those under MATLAB as matrix addressing is quite different here
+        """
+        if 'MasstransportAnalysis' in analyses:
+            nbas = md.smb.num_basins
+            nprm = md.smb.num_params
+            nbrk = md.smb.num_breaks
+            md = checkfield(md, 'fieldname', 'smb.num_basins', 'numel', 1, 'NaN', 1, 'Inf', 1, '>', 0)
+            md = checkfield(md, 'fieldname', 'smb.num_params', 'numel', 1, 'NaN', 1, 'Inf', 1, '>', 0)
+            md = checkfield(md, 'fieldname', 'smb.num_breaks', 'numel', 1, 'NaN', 1, 'Inf', 1, '>=', 0)
+            md = checkfield(md, 'fieldname', 'smb.basin_id', 'Inf', 1, '>=', 0, '<=', md.smb.num_basins, 'size', [md.mesh.numberofelements])
+            # if len(np.shape(self.polynomialparams)) == 1:
+            #     self.polynomialparams = np.array([[self.polynomialparams]])
+            if nbas > 1 and nbrk >= 1 and nprm > 1:
+                md = checkfield(md, 'fieldname', 'smb.polynomialparams', 'NaN', 1, 'Inf', 1, 'size', [nbas, nbrk + 1, nprm], 'numel', nbas * (nbrk + 1) * nprm)
+            elif nbas == 1:
+                md = checkfield(md, 'fieldname', 'smb.polynomialparams', 'NaN', 1, 'Inf', 1, 'size', [nprm, nbrk + 1], 'numel', nbas * (nbrk + 1) * nprm)
+            elif nbrk == 0:
+                md = checkfield(md, 'fieldname', 'smb.polynomialparams', 'NaN', 1, 'Inf', 1, 'size', [nbas, nprm], 'numel', nbas * (nbrk + 1) * nprm)
+            elif nprm == 1:
+                md = checkfield(md, 'fieldname', 'smb.polynomialparams', 'NaN', 1, 'Inf', 1, 'size', [nbas, nbrk], 'numel', nbas * (nbrk + 1) * nprm)
+            md = checkfield(md, 'fieldname', 'smb.ar_order', 'numel', 1, 'NaN', 1, 'Inf', 1, '>=', 0)
+            md = checkfield(md, 'fieldname', 'smb.ma_order', 'numel', 1, 'NaN', 1, 'Inf', 1, '>=', 0)
+            md = checkfield(md, 'fieldname', 'smb.arma_timestep', 'numel', 1, 'NaN', 1, 'Inf', 1, '>=', md.timestepping.time_step) # Autoregression time step cannot be finer than ISSM timestep
+            md = checkfield(md, 'fieldname', 'smb.arlag_coefs', 'NaN', 1, 'Inf', 1, 'size', [nbas, md.smb.ar_order])
+            md = checkfield(md, 'fieldname', 'smb.malag_coefs', 'NaN', 1, 'Inf', 1, 'size', [nbas, md.smb.ma_order])
+            if nbrk > 0:
+                md = checkfield(md, 'fieldname', 'smb.datebreaks', 'NaN', 1, 'Inf', 1, 'size', [nbas,nbrk])
+            elif np.size(md.smb.datebreaks) == 0 or np.all(np.isnan(md.smb.datebreaks)):
+                pass
+            else:
+                raise RuntimeError('md.smb.num_breaks is 0 but md.smb.datebreaks is not empty')
+
+            if np.any(np.isnan(self.refelevation) is False) or np.size(self.refelevation) > 1:
+                if len(np.shape(self.refelevation)) == 1:
+                    self.refelevation = np.array([self.refelevation])
+                md = checkfield(md, 'fieldname', 'smb.refelevation', 'NaN', 1, 'Inf', 1, '>=', 0, 'size', [1, nbas], 'numel', nbas)
+
+            if (np.any(np.isnan(self.lapserates) is False) or np.size(self.lapserates) > 1):
+                nbas = md.smb.num_basins
+                if len(np.shape(self.lapserates)) == 1:
+                    nbins = 1
+                    self.lapserates = np.reshape(self.lapserates,[nbas,nbins,1])
+                elif(len(np.shape(self.lapserates)) == 2):
+                    nbins = np.shape(self.lapserates)[1]
+                    self.lapserates = np.reshape(self.lapserates,[nbas,nbins,1])
+                elif(len(np.shape(self.lapserates)) == 3):
+                    nbins = np.shape(self.lapserates)[1]
+                ntmlapse = np.shape(self.lapserates)[2]
+                if len(np.shape(self.elevationbins)) < 3:
+                    self.elevationbins = np.reshape(self.elevationbins,[nbas,max(1,nbins-1),ntmlapse])
+                md = checkfield(md, 'fieldname', 'smb.lapserates', 'NaN', 1, 'Inf', 1, 'size', [nbas,nbins,ntmlapse], 'numel', md.smb.num_basins*nbins*ntmlapse)
+                md = checkfield(md, 'fieldname', 'smb.elevationbins', 'NaN', 1, 'Inf', 1, 'size', [nbas,max(1,nbins-1),ntmlapse], 'numel', nbas*max(1,nbins-1)*ntmlapse)
+                for rr in range(nbas):
+                    if(np.all(self.elevationbins[rr,0:-1]<=self.elevationbins[rr,1:])==False):
+                        raise TypeError('md.smb.elevationbins should have rows in order of increasing elevation')
+            elif (np.any(np.isnan(self.elevationbins) is False) or np.size(self.elevationbins) > 1):
+                # Elevationbins specified but not lapserates: this will inevitably lead to inconsistencies
+                nbas = md.smb.num_basins
+                if len(np.shape(self.elevationbins)) == 1:
+                    nbins = 1
+                    self.elevationbins = np.reshape(self.elevationbins,[nbas,nbins,1])
+                elif(len(np.shape(self.lapserates)) == 2):
+                    nbins = np.shape(self.elevationbins)[1]
+                    self.elevationbins = np.reshape(self.elevationbins,[nbas,nbins,1])
+                elif(len(np.shape(self.lapserates)) == 3):
+                    nbins = np.shape(self.lapserates)[1]
+                nbins = nbins - 1
+                ntmlapse = np.shape(self.lapserates)[2]
+                md = checkfield(md, 'fieldname', 'smb.lapserates', 'NaN', 1, 'Inf', 1, 'size', [nbas, nbins * ntmlapse], 'numel', nbas * nbins * ntmlapse)
+                md = checkfield(md, 'fieldname', 'smb.elevationbins', 'NaN', 1, 'Inf', 1, 'size', [nbas, max(1, nbins - 1) * ntmlapse], 'numel', nbas * max(1, nbins - 1) * ntmlapse)
+
+        md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1])
+        md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'smb.requested_outputs', 'stringrow', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+        nbas = md.smb.num_basins
+        nprm = md.smb.num_params
+        nper = md.smb.num_breaks + 1
+        if(np.any(np.isnan(md.smb.lapserates))):
+            templapserates = np.zeros((nbas, 2, 12))
+            print('      smb.lapserates not specified: set to 0')
+            tempelevationbins = np.zeros((nbas, 1, 12)) # Dummy elevation bins
+            nbins    = 2
+            ntmlapse = 12
+        else:
+            if len(np.shape(md.smb.lapserates)) == 1:
+                nbins    = 1
+                ntmlapse = 1
+            elif len(np.shape(md.smb.lapserates)) == 2:
+                nbins    = np.shape(md.smb.lapserates)[1]
+                ntmlapse = 1
+            elif len(np.shape(md.smb.lapserates)) == 3:
+                nbins    = np.shape(md.smb.lapserates)[1]
+                ntmlapse = np.shape(md.smb.lapserates)[2]
+            templapserates    = np.reshape(md.smb.lapserates,[nbas, nbins, ntmlapse])
+            tempelevationbins = np.reshape(md.smb.elevationbins, [nbas, max(1, nbins - 1), ntmlapse])
+        temprefelevation  = np.copy(md.smb.refelevation)
+        # Scale the parameters
+        polyparamsScaled   = np.copy(md.smb.polynomialparams)
+        polyparams2dScaled = np.zeros((nbas, nper * nprm))
+        if nprm > 1:
+            # Case 3D
+            if nbas > 1 and nper > 1:
+                for ii in range(nprm):
+                    polyparamsScaled[:, :, ii] = polyparamsScaled[:, :, ii] * (1 / yts) ** (ii + 1)
+                # Fit in 2D array
+                for ii in range(nprm):
+                    polyparams2dScaled[:, ii * nper:(ii + 1) * nper] = 1 * polyparamsScaled[:, :, ii]
+            # Case 2D and higher-order params at increasing row index
+            elif nbas == 1:
+                for ii in range(nprm):
+                    polyparamsScaled[ii, :] = polyparamsScaled[ii, :] * (1 / yts) ** (ii + 1)
+                # Fit in row array
+                for ii in range(nprm):
+                    polyparams2dScaled[0, ii * nper:(ii + 1) * nper] = 1 * polyparamsScaled[ii, :]
+            # Case 2D and higher-order params at increasing column index
+            elif nper == 1:
+                for ii in range(nprm):
+                    polyparamsScaled[:, ii] = polyparamsScaled[:, ii] * (1 / yts) ** (ii + 1)
+                # 2D array is already in correct format
+                polyparams2dScaled = np.copy(polyparamsScaled)
+        else:
+            polyparamsScaled   = polyparamsScaled * (1 / yts)
+            # 2D array is already in correct format
+            polyparams2dScaled = np.copy(polyparamsScaled)
+
+        if nper == 1:
+            dbreaks = np.zeros((nbas, 1))
+        else:
+            dbreaks = np.copy(md.smb.datebreaks)
+
+        if ntmlapse == 1:
+            templapserates    = np.repeat(templapserates, 12, axis = 2)
+            tempelevationbins = np.repeat(tempelevationbins, 12, axis = 2)
+        if np.any(np.isnan(md.smb.refelevation)):
+            temprefelevation = np.zeros((nbas)).reshape(1, nbas)
+            areas = GetAreas(md.mesh.elements, md.mesh.x, md.mesh.y)
+            for ii, bid in enumerate(np.unique(md.smb.basin_id)):
+                indices = np.where(md.smb.basin_id == bid)[0]
+                elemsh = np.zeros((len(indices)))
+                for jj in range(len(indices)):
+                    elemsh[jj] = np.mean(md.geometry.surface[md.mesh.elements[indices[jj], :] - 1])
+                temprefelevation[0, ii] = np.sum(areas[indices] * elemsh) / np.sum(areas[indices])
+            if(np.any(templapserates != 0)):
+                print('      smb.refelevation not specified: Reference elevations set to mean surface elevation of basins')
+        nbins = np.shape(templapserates)[1]
+        temp2dlapserates    = np.zeros((nbas, nbins * 12))
+        temp2delevationbins = np.zeros((nbas, max(12, (nbins - 1) * 12)))
+        for ii in range(12):
+            temp2dlapserates[:, ii * nbins:(ii + 1) * nbins] = templapserates[:, :, ii]
+            temp2delevationbins[:, ii * (nbins - 1):(ii + 1) * (nbins - 1)] = tempelevationbins[:, :, ii]
+
+        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 13, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'num_basins', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'num_breaks', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'num_params', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'ar_order', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'ma_order', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'arma_timestep', 'format', 'Double', 'scale', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'basin_id', 'data', self.basin_id - 1, 'name', 'md.smb.basin_id', 'format', 'IntMat', 'mattype', 2)  # 0-indexed
+        WriteData(fid, prefix, 'data', polyparams2dScaled, 'name', 'md.smb.polynomialparams', 'format', 'DoubleMat')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'arlag_coefs', 'format', 'DoubleMat', 'name', 'md.smb.arlag_coefs', 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'malag_coefs', 'format', 'DoubleMat', 'name', 'md.smb.malag_coefs', 'yts', yts)
+        WriteData(fid, prefix, 'data', dbreaks, 'name', 'md.smb.datebreaks', 'format', 'DoubleMat','scale',yts)
+        WriteData(fid, prefix, 'data', temp2dlapserates, 'name', 'md.smb.lapserates', 'format', 'DoubleMat', 'scale', 1 / yts, 'yts', yts)
+        WriteData(fid, prefix, 'data', temp2delevationbins, 'name', 'md.smb.elevationbins', 'format', 'DoubleMat')
+        WriteData(fid, prefix, 'data', temprefelevation, 'name', 'md.smb.refelevation', 'format', 'DoubleMat')
+        WriteData(fid, prefix, 'data', nbins, 'name', 'md.smb.num_bins', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer')
+
+        # Process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
+
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBcomponents.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBcomponents.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBcomponents.m	(revision 27955)
@@ -0,0 +1,107 @@
+%SMBcomponents Class definition
+%
+%   Usage:
+%      SMBcomponents=SMBcomponents();
+
+classdef SMBcomponents
+	properties (SetAccess=public)
+		accumulation      = NaN;
+		runoff            = NaN;
+		evaporation       = NaN;
+		steps_per_step    = 1;
+		averaging         = 0;
+		requested_outputs = {};
+	end
+	methods
+		function self = SMBcomponents(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters (SMB=accumulation-runoff-evaporation) :'));
+			fielddisplay(self,'accumulation','accumulated snow [m/yr ice eq]');
+			fielddisplay(self,'runoff','amount of ice melt lost from the ice column [m/yr ice eq]');
+			fielddisplay(self,'evaporation','amount of ice lost to evaporative processes [m/yr ice eq]');
+			fielddisplay(self, 'steps_per_step', 'number of smb steps per time step');
+			fielddisplay(self, 'averaging', 'averaging methods from short to long steps');
+			disp(sprintf('%51s  0: Arithmetic (default)',' '));
+			disp(sprintf('%51s  1: Geometric',' '));
+			disp(sprintf('%51s  2: Harmonic',' '));
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+			self.accumulation=project3d(md,'vector',self.accumulation,'type','node');
+			self.runoff=project3d(md,'vector',self.runoff,'type','node');
+			self.evaporation=project3d(md,'vector',self.evaporation,'type','node');
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+
+			list = {'SmbMassBalance'};
+
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.accumulation)
+				self.accumulation=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.accumulation specified: values set as zero');
+			end
+			if isnan(self.evaporation)
+				self.evaporation=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.evaporation specified: values set as zero');
+			end
+			if isnan(self.runoff)
+				self.runoff=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.runoff specified: values set as zero');
+			end
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.runoff','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1,'Inf',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.runoff','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			end
+			md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]);
+			md = checkfield(md,'fieldname','smb.averaging','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',2,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer');
+			WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer');
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                            %remove 'default' from outputs
+				outputs	 = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%output default:
+			self.requested_outputs={'default'};
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBcomponents.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBcomponents.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBcomponents.py	(revision 27955)
@@ -0,0 +1,105 @@
+import numpy as np
+
+from checkfield import *
+from fielddisplay import fielddisplay
+from project3d import *
+from WriteData import *
+
+
+class SMBcomponents(object):
+    """SMBCOMPONENTS class definition
+
+    Usage:
+        SMBcomponents = SMBcomponents()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.accumulation = np.nan
+        self.runoff = np.nan
+        self.evaporation = np.nan
+        self.steps_per_step = 1
+        self.averaging = 0
+        self.requested_outputs = []
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   surface forcings parameters (SMB=accumulation-runoff-evaporation) :\n'
+        s += '{}\n'.format(fielddisplay(self, 'accumulation', 'accumulated snow [m/yr ice eq]'))
+        s += '{}\n'.format(fielddisplay(self, 'runoff', 'amount of ice melt lost from the ice column [m/yr ice eq]'))
+        s += '{}\n'.format(fielddisplay(self, 'evaporation', 'mount of ice lost to evaporative processes [m/yr ice eq]'))
+        s += '{}\n'.format(fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'))
+        s += '{}\n'.format(fielddisplay(self, 'averaging', 'averaging methods from short to long steps'))
+        s += '\t\t{}\n'.format('0: Arithmetic (default)')
+        s += '\t\t{}\n'.format('1: Geometric')
+        s += '\t\t{}\n'.format('2: Harmonic')
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.accumulation = project3d(md, 'vector', self.accumulation, 'type', 'node')
+        self.runoff = project3d(md, 'vector', self.runoff, 'type', 'node')
+        self.evaporation = project3d(md, 'vector', self.evaporation, 'type', 'node')
+        return self
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['SmbMassBalance']
+    # }}}
+
+    def initialize(self, md):  # {{{
+        if np.all(np.isnan(self.accumulation)):
+            self.accumulation = np.zeros((md.mesh.numberofvertices))
+            print('      no SMB.accumulation specified: values set as zero')
+        if np.all(np.isnan(self.evaporation)):
+            self.evaporation = np.zeros((md.mesh.numberofvertices))
+            print('      no SMB.evaporation specified: values set as zero')
+        if np.all(np.isnan(self.runoff)):
+            self.runoff = np.zeros((md.mesh.numberofvertices))
+            print('      no SMB.runoff specified: values set as zero')
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if 'MasstransportAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'smb.accumulation', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.runoff', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.evaporation', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        if 'BalancethicknessAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'smb.accumulation', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.runoff', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.evaporation', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1])
+        md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'smb.requested_outputs', 'stringrow', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 2, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accumulation', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1 / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoff', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1 / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'evaporation', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1 / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer')
+        # Process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
+
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.requested_outputs = ['default']
+        return self
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBd18opdd.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBd18opdd.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBd18opdd.m	(revision 27955)
@@ -0,0 +1,208 @@
+%SMBd18opdd Class definition
+%
+%   Usage:
+%      SMBd18opdd=SMBd18opdd();
+
+classdef SMBd18opdd
+	properties (SetAccess=public)
+
+		desfac                    = 0;
+		s0p                       = NaN;
+		s0t                       = NaN;
+		rlaps                     = 0;
+		rlapslgm                  = 0;
+		dpermil                   = 0;
+		f                         = 0;
+		Tdiff                     = NaN;
+		sealev                    = NaN;
+		ismungsm                  = 0;
+		isd18opd                  = 0;
+		issetpddfac               = 0;
+		istemperaturescaled       = 1;
+		isprecipscaled            = 1;
+		delta18o                  = NaN;
+		delta18o_surface          = NaN;
+		temperatures_presentday   = NaN;
+		precipitations_presentday = NaN;
+		temperatures_reconstructed = NaN;
+		precipitations_reconstructed = NaN;
+		pddfac_snow               = NaN;
+		pddfac_ice                = NaN;
+		steps_per_step            = 1;
+		averaging                 = 0;
+		requested_outputs         = {};
+	end
+	methods
+		function self = SMBd18opdd(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			if(self.isd18opd),self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node');end
+			if(self.isd18opd),self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node');end
+			if(self.istemperaturescaled==0),self.temperatures_reconstructed=project3d(md,'vector',self.temperatures_reconstructed,'type','node');end
+			if(self.isprecipscaled==0),self.precipitations_reconstructed=project3d(md,'vector',self.precipitations_reconstructed,'type','node');end
+			self.s0p=project3d(md,'vector',self.s0p,'type','node');
+			self.s0t=project3d(md,'vector',self.s0t,'type','node');
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+
+			list = {'SmbMassBalance'};
+
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.s0p),
+				self.s0p=zeros(md.mesh.numberofvertices,1);
+				disp('      no SMBd18opdd.s0p specified: values set as zero');
+			end
+			if isnan(self.s0t),
+				self.s0t=zeros(md.mesh.numberofvertices,1);
+				disp('      no SMBd18opdd.s0t specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			self.ismungsm   = 0;
+			self.isd18opd   = 1;
+			self.istemperaturescaled = 1;
+			self.isprecipscaled = 1;
+			self.desfac     = 0.5;
+			self.rlaps      = 6.5;
+			self.rlapslgm   = 6.5;
+			self.dpermil    = 2.4;
+			self.f          = 0.169;
+			self.issetpddfac = 0;
+			self.requested_outputs={'default'};
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',1);
+				md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',1);
+
+				if(self.isd18opd==1)
+					md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices 12],'NaN',1,'Inf',1);
+					md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices 12],'NaN',1,'Inf',1);
+					md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.dpermil','>=',0,'numel',1);
+					md = checkfield(md,'fieldname','smb.f','>=',0,'numel',1);
+					if(self.istemperaturescaled==0)
+						lent=size(self.temperatures_reconstructed,2);
+						multt=ceil(lent/12)*12;
+						md = checkfield(md,'fieldname','smb.temperatures_reconstructed','size',[md.mesh.numberofvertices+1 multt],'NaN',1,'Inf',1,'timeseries',1);
+					end
+					if(self.isprecipscaled==0)
+						lenp=size(self.temperatures_reconstructed,2);
+						multp=ceil(lent/12)*12;
+						md = checkfield(md,'fieldname','smb.precipitations_reconstructed','size',[md.mesh.numberofvertices+1 multt],'NaN',1,'Inf',1,'timeseries',1);
+					end
+				end
+				if(self.issetpddfac==1)
+					md = checkfield(md,'fieldname','smb.pddfac_snow','>=',0,'NaN',1,'Inf',1);
+					md = checkfield(md,'fieldname','smb.pddfac_ice','>=',0,'NaN',1,'Inf',1);
+				end
+			end
+			md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]);
+			md = checkfield(md,'fieldname','smb.averaging','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+
+			disp(sprintf('\n   PDD and deltaO18 parameters:'));
+			fielddisplay(self,'isd18opd','is delta18o parametrisation from present day temperature and precipitation activated (0 or 1, default is 0)');
+			fielddisplay(self,'issetpddfac','is user passing in defined pdd factors (0 or 1, default is 0)');
+			fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]');
+			fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]');
+			fielddisplay(self,'s0t','should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]');
+			fielddisplay(self,'rlaps','present day lapse rate [degree/km]');
+			if(self.isd18opd==1)
+				fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm/d18opd is activated');
+				fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o/mungsm/d18opd is activated');
+				fielddisplay(self,'istemperaturescaled','if delta18o parametrisation from present day temperature and precipitation is activated, is temperature scaled to delta18o value? (0 or 1, default is 1)');
+				fielddisplay(self,'isprecipscaled','if delta18o parametrisation from present day temperature and precipitation is activated, is precip scaled to delta18o value? (0 or 1, default is 1)');
+				if(self.istemperaturescaled==0)
+					fielddisplay(self,'temperatures_reconstructed','monthly historical surface temperatures [K], required if delta18o/mungsm/d18opd is activated and istemperaturescaled is not activated');
+				end
+				if(self.isprecipscaled==0)
+					fielddisplay(self,'precipitations_reconstructed','monthly historical precipitation [m/yr water eq], required if delta18o/mungsm/d18opd is activated and isprecipscaled is not activated');
+				end
+				fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and d18opd activated');
+				fielddisplay(self,'dpermil','degree per mil, required if d18opd is activated');
+				fielddisplay(self,'f','precip/temperature scaling factor, required if d18opd is activated');
+			end
+			if(self.issetpddfac==1)
+				fielddisplay(self,'pddfac_snow','Pdd factor for snow for all the domain [mm ice equiv/day/degree C]');
+				fielddisplay(self,'pddfac_ice','Pdd factor for ice for all the domain [mm ice equiv/day/degree C]');
+			end
+			fielddisplay(self, 'steps_per_step', 'number of smb steps per time step');
+			fielddisplay(self, 'averaging', 'averaging methods from short to long steps');
+			disp(sprintf('%51s  0: Arithmetic (default)',' '));
+			disp(sprintf('%51s  1: Geometric',' '));
+			disp(sprintf('%51s  2: Harmonic',' '));
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+			% No need to display rlapslgm, Tdiff, ismungsm
+			% as they are not used in this case but are still needed as default values in
+			% PositiveDegreeDay (Tria.cpp) used in that case
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',5,'format','Integer');
+
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','ismungsm','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isd18opd','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','issetpddfac','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','desfac','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlaps','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlapslgm','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','steps_per_step','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','averaging','format','Integer');
+
+			if self.isd18opd
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','istemperaturescaled','format','Boolean');
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','isprecipscaled','format','Boolean');
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','dpermil','format','Double');
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','f','format','Double');
+				if self.istemperaturescaled==0
+					WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_reconstructed','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				end
+				if self.isprecipscaled==0
+					WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_reconstructed','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				end
+			end
+			if self.issetpddfac==1
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','pddfac_snow','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','pddfac_ice','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			end
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBd18opdd.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBd18opdd.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBd18opdd.py	(revision 27955)
@@ -0,0 +1,208 @@
+import numpy as np
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+from project3d import project3d
+
+
+class SMBd18opdd(object):
+    """
+    SMBd18opdd Class definition
+
+       Usage:
+          SMBd18opdd = SMBd18opdd()
+    """
+    def __init__(self, *args):  # {{{
+        self.desfac = 0.
+        self.s0p = float('NaN')
+        self.s0t = float('NaN')
+        self.rlaps = 0.
+        self.rlapslgm = 0.
+        self.dpermil = 0.
+        self.f = 0.
+        self.Tdiff = float('NaN')
+        self.sealev = float('NaN')
+        self.ismungsm = 0
+        self.isd18opd = 0
+        self.issetpddfac = 0
+        self.istemperaturescaled = 0
+        self.isprecipscaled = 0
+        self.delta18o = float('NaN')
+        self.delta18o_surface = float('NaN')
+        self.temperatures_presentday = float('NaN')
+        self.precipitations_presentday = float('NaN')
+        self.temperatures_reconstructed = float('NaN')
+        self.precipitations_reconstructed = float('NaN')
+        self.pddfac_snow = float('NaN')
+        self.pddfac_ice = float('NaN')
+        self.steps_per_step = 1
+        self.averaging = 0
+        self.requested_outputs = []
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+    def __repr__(self):  # {{{
+        s = '   surface forcings parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'isd18opd', 'is delta18o parametrisation from present day temperature and precipitation activated (0 or 1, default is 0)'))
+        s += '{}\n'.format(fielddisplay(self, 'issetpddfac', 'is user passing in defined pdd factors (0 or 1, default is 0)'))
+        s += '{}\n'.format(fielddisplay(self, 'desfac', 'desertification elevation factor (between 0 and 1, default is 0.5) [m]'))
+        s += '{}\n'.format(ielddisplay(self, 's0p', 'should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))
+        s += '{}\n'.format(fielddisplay(self, 's0t', 'should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'rlaps', 'present day lapse rate [degree/km]'))
+
+        if self.isd18opd:
+            s += '{}\n'.format(fielddisplay(self, 'temperatures_presentday', 'monthly present day surface temperatures [K], required if delta18o/mungsm is activated'))
+            s += '{}\n'.format(fielddisplay(self, 'precipitations_presentday', 'monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+            s += '{}\n'.format(fielddisplay(self, 'istemperaturescaled', 'if delta18o parametrisation from present day temperature and precipitation is activated, is temperature scaled to delta18o value? (0 or 1, default is 1)'))
+            s += '{}\n'.format(fielddisplay(self, 'isprecipscaled', 'if delta18o parametrisation from present day temperature and precipitation is activated, is precipitation scaled to delta18o value? (0 or 1, default is 1)'))
+
+            if self.istemperaturescaled == 0:
+                s += '{}\n'.format(fielddisplay(self, 'temperatures_reconstructed', 'monthly historical surface temperatures [K], required if delta18o/mungsm/d18opd is activated and istemperaturescaled is not activated'))
+
+            if self.isprecipscaled == 0:
+                s += '{}\n'.format(fielddisplay(self, 'precipitations_reconstructed', 'monthly historical precipitation [m/yr water eq], required if delta18o/mungsm/d18opd is activated and isprecipscaled is not activated'))
+
+            s += '{}\n'.format(fielddisplay(self, 'delta18o', 'delta18o [per mil], required if pdd is activated and delta18o activated'))
+            s += '{}\n'.format(fielddisplay(self, 'dpermil', 'degree per mil, required if d18opd is activated'))
+            s += '{}\n'.format(fielddisplay(self, 'f', 'precip/temperature scaling factor, required if d18opd is activated'))
+
+        if self.issetpddfac == 1:
+            s += '{}\n'.format(fielddisplay(self, 'pddfac_snow', 'Pdd factor for snow for all the domain [mm ice equiv/day/degree C]'))
+            s += '{}\n'.format(fielddisplay(self, 'pddfac_ice', 'Pdd factor for ice for all the domain [mm ice equiv/day/degree C]'))
+
+        s += '{}\n'.format(fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'))
+        s += '{}\n'.format(fielddisplay(self, 'averaging', 'averaging methods from short to long steps'))
+        s += '\t\t{}\n'.format('0: Arithmetic (default)')
+        s += '\t\t{}\n'.format('1: Geometric')
+        s += '\t\t{}\n'.format('2: Harmonic')
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        return s
+    # }}}
+    def extrude(self, md):  # {{{
+        if self.isd18opd:
+            self.temperatures_presentday = project3d(md, 'vector', self.temperatures_presentday, 'type', 'node')
+        if self.isd18opd:
+            self.precipitations_presentday = project3d(md, 'vector', self.precipitations_presentday, 'type', 'node')
+        if self.istemperaturescaled == 0:
+            self.temperatures_reconstructed = project3d(md, 'vector', self.temperatures_reconstructed, 'type', 'node')
+        if self.isprecipscaled == 0:
+            self.precipitations_reconstructed = project3d(md, 'vector', self.precipitations_reconstructed, 'type', 'node')
+        self.s0p = project3d(md, 'vector', self.s0p, 'type', 'node')
+        self.s0t = project3d(md, 'vector', self.s0t, 'type', 'node')
+        return self
+    # }}}
+    def defaultoutputs(self, md):  # {{{
+        return ['SmbMassBalance']
+    # }}}
+    def initialize(self, md):  # {{{
+        if np.all(np.isnan(self.s0p)):
+            self.s0p = np.zeros((md.mesh.numberofvertices))
+            print("      no SMBd18opdd.s0p specified: values set as zero")
+
+        if np.all(np.isnan(self.s0t)):
+            self.s0t = np.zeros((md.mesh.numberofvertices))
+            print("      no SMBd18opdd.s0t specified: values set as zero")
+        return self
+    # }}}
+    def setdefaultparameters(self):  # {{{
+        # pdd method not used in default mode
+        self.ismungsm = 0
+        self.isd18opd = 1
+        self.istemperaturescaled = 1
+        self.isprecipscaled = 1
+        self.desfac = 0.5
+        self.rlaps = 6.5
+        self.rlapslgm = 6.5
+        self.dpermil = 2.4
+        self.f = 0.169
+        self.issetpddfac = 0
+        self.requested_outputs = ['default']
+        return self
+    # }}}
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if 'MasstransportAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'smb.desfac', '<=', 1, 'numel', [1])
+            md = checkfield(md, 'fieldname', 'smb.s0p', '>=', 0, 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'smb.s0t', '>=', 0, 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'smb.rlaps', '>=', 0, 'numel', [1])
+            md = checkfield(md, 'fieldname', 'smb.rlapslgm', '>=', 0, 'numel', [1])
+            md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1])
+            md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2])
+
+            if self.isd18opd:
+                lent = float(np.size(self.temperatures_presentday, 1))
+                lenp = float(np.size(self.precipitations_presentday, 1))
+                multt = np.ceil(lent / 12.) * 12.
+                multp = np.ceil(lenp / 12.) * 12.
+                md = checkfield(md, 'fieldname', 'smb.temperatures_presentday', 'size', [md.mesh.numberofvertices, 12], 'NaN', 1, 'Inf', 1)
+                md = checkfield(md, 'fieldname', 'smb.precipitations_presentday', 'size', [md.mesh.numberofvertices, 12], 'NaN', 1, 'Inf', 1)
+
+                if self.istemperaturescaled == 0:
+                    lent = float(np.size(self.temperatures_reconstructed, 1))
+                    multt = np.ceil(lent / 12.) * 12.
+                    md = checkfield(md, 'fieldname', 'smb.temperatures_reconstructed', 'size', [md.mesh.numberofvertices + 1, multt], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+
+                if self.isprecipscaled == 0:
+                    lenp = float(np.size(self.precipitations_reconstructed, 1))
+                    multp = np.ceil(lent / 12.) * 12.
+                    md = checkfield(md, 'fieldname', 'smb.precipitations_reconstructed', 'size', [md.mesh.numberofvertices + 1, multp], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+
+                md = checkfield(md, 'fieldname', 'smb.delta18o', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1)
+                md = checkfield(md, 'fieldname', 'smb.dpermil', '>=', 0, 'numel', [1])
+                md = checkfield(md, 'fieldname', 'smb.f', '>=', 0, 'numel', [1])
+
+            if self.issetpddfac:
+                md = checkfield(md, 'fieldname', 'smb.pddfac_snow', '>=', 0, 'NaN', 1, 'Inf', 1)
+                md = checkfield(md, 'fieldname', 'smb.pddfac_ice', '>=', 0, 'NaN', 1, 'Inf', 1)
+
+        md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1)
+        return md
+    # }}}
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 5, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'ismungsm', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isd18opd', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'issetpddfac', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'desfac', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 's0p', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 's0t', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'rlaps', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'rlapslgm', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Tdiff', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'sealev', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer')
+
+        if self.isd18opd:
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'temperatures_presentday', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'precipitations_presentday', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'istemperaturescaled', 'format', 'Boolean')
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isprecipscaled', 'format', 'Boolean')
+
+            if self.istemperaturescaled == 0:
+                WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'temperatures_reconstructed', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+
+            if self.isprecipscaled == 0:
+                WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'precipitations_reconstructed', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'delta18o', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', md.constants.yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'dpermil', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'f', 'format', 'Double')
+
+        if self.issetpddfac:
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'pddfac_snow', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'pddfac_ice', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+
+        # Process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBdebrisEvatt.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBdebrisEvatt.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBdebrisEvatt.m	(revision 27955)
@@ -0,0 +1,204 @@
+%SMBdebrisEvatt Class definition
+%
+%   Usage:
+%      SMBdebrisEvatt=SMBdebrisEvatt();
+
+classdef SMBdebrisEvatt
+	properties (SetAccess=public)
+
+		precipitation  = NaN;
+		temperature   = NaN;
+		dsradiation    = NaN;
+                dlradiation    = NaN;
+                windspeed      = NaN;
+                airhumidity    = NaN;
+		precipitation_anomaly = NaN;
+		temperature_anomaly   = NaN;
+		dsradiation_anomaly   = NaN;
+		dlradiation_anomaly   = NaN;
+		windspeed_anomaly     = NaN;
+		airhumidity_anomaly   = NaN;
+		s0t                   = NaN;
+		snowheight            = NaN;
+		qlaps                 = 0;
+		rlaps                 = 0;
+		dsgrad		      = 0;
+		dlgrad		      = 0;
+		windspeedgrad	      = 0;
+		humiditygrad	      = 0;
+		isAnderson	      = 0;
+		iscryokarst	      = 0;
+		AndersonD0	      = 0;
+		steps_per_step        = 1;
+		averaging             = 0;
+		requested_outputs     = {};
+		icealbedo	      = NaN;
+		snowalbedo            = NaN;
+		debrisalbedo	      = NaN;
+	end
+	methods
+		function self = SMBdebrisEvatt(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.precipitation=project3d(md,'vector',self.precipitation,'type','node');
+			self.temperature=project3d(md,'vector',self.temperature,'type','node');
+			self.dsradiation=project3d(md,'vector',self.dsradiation,'type','node');
+			self.dlradiation=project3d(md,'vector',self.dlradiation,'type','node');
+			self.windspeed=project3d(md,'vector',self.windspeed,'type','node');
+			self.airhumidity=project3d(md,'vector',self.airhumidity,'type','node');
+			self.temperature_anomaly=project3d(md,'vector',self.temperature_anomaly,'type','node');
+                        self.precipitation_anomaly=project3d(md,'vector',self.precipitation_anomaly,'type','node');
+			self.dsradiation_anomaly=project3d(md,'vector',self.temperature_anomaly,'type','node');
+	                self.dlradiation_anomaly=project3d(md,'vector',self.temperature_anomaly,'type','node');
+         	        self.windspeed_anomaly=project3d(md,'vector',self.temperature_anomaly,'type','node');
+                	self.airhumidity_anomaly=project3d(md,'vector',self.temperature_anomaly,'type','node');
+
+			self.s0t=project3d(md,'vector',self.s0t,'type','node');
+			self.snowheight=project3d(md,'vector',self.snowheight,'type','node');
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'SmbMassBalance'};
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.s0t),
+				self.s0t=zeros(md.mesh.numberofvertices,1);
+				disp('      no SMBdebrisEvatt.s0t specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			self.qlaps         = 0.1;
+			self.rlaps         = 7.4;
+			self.dsgrad	   = 13.;
+			self.dlgrad	   = 29;
+			self.windspeedgrad = -0.2;
+			self.humiditygrad  = 0;
+			self.icealbedo	   = 0.3;
+			self.snowalbedo    = 0.75;
+		 	self.debrisalbedo  = 0.07;
+			self.isAnderson    = 0;
+			self.iscryokarst   = 0;
+			self.AndersonD0    = 0.5;
+			self.requested_outputs={'default'};
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if (strcmp(solution,'TransientSolution') & md.transient.issmb == 0), return; end
+
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.temperature','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 365]);
+				md = checkfield(md,'fieldname','smb.precipitation','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 365]);
+				md = checkfield(md,'fieldname','smb.dsradiation','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 365]);
+				md = checkfield(md,'fieldname','smb.dlradiation','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 365]);
+				md = checkfield(md,'fieldname','smb.windspeed','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 365]);
+				md = checkfield(md,'fieldname','smb.airhumidity','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 365]);
+				md = checkfield(md,'fieldname','smb.snowheight','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			end
+			md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]);
+			md = checkfield(md,'fieldname','smb.averaging', 'numel', [1], 'values', [0, 1, 2]);
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+			md = checkfield(md,'fieldname','smb.icealbedo','>=',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','smb.snowalbedo','>=',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','smb.debrisalbedo','>=',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','smb.isAnderson','numel', [1], 'values', [0, 1]);
+			md = checkfield(md,'fieldname','smb.iscryokarst','numel', [1], 'values', [0, 1]);
+
+		end % }}}
+		function disp(self) % {{{
+	
+			disp(sprintf('Evatt et al. (2015) Debris Model (doi: 10.3189/2015JoG14J235)'));
+			disp(sprintf('If isAnderson==1 -> Eq. 6 from Ferguson & Vieli (2021) ist taken (https://doi.org/10.5194/tc-15-3377-2021)'));
+			disp(sprintf('If iscryokarst==1 -> Eqs. 9,10 from Ferguson & Vieli (2021) are taken (https://doi.org/10.5194/tc-15-3377-2021)'));
+			disp(sprintf('Clean-ice SMB is taken from the Evatt et al. (2015) EBM with debris=0'));
+
+			fielddisplay(self,'isAnderson','do we use the Anderson parametrization (default is 0)');
+			fielddisplay(self,'iscryokarst','do we use a cryokarst parametrization (default is 0)');
+			fielddisplay(self,'temperature',' surface temperature [K]');
+			fielddisplay(self,'precipitation',' surface precipitation [m/yr water eq]');
+			fielddisplay(self,'dsradiation',' downwelling shortwave radiation [W m-2]');
+                        fielddisplay(self,'dlradiation',' downwelling longwave radiation [W m-2]');
+			fielddisplay(self,'windspeed',' surface wind speed [m s-1]');
+                        fielddisplay(self,'airhumidity',' near-surface specific humidity [kg kg-1]');
+			fielddisplay(self,'temperature_anomaly','anomaly to  reference temperature (additive)');
+                        fielddisplay(self,'precipitation_anomaly','anomaly to  precipitation (multiplicative)');
+                        fielddisplay(self,'dsradiation_anomaly','anomaly to  reference downwelling shortwave radiation');
+                        fielddisplay(self,'dlradiation_anomaly','anomaly to  reference downwelling longwave radiation (additive');
+                        fielddisplay(self,'windspeed_anomaly','anomaly to  reference surface wind speed (additive)');
+                        fielddisplay(self,'airhumidity_anomaly','anomaly to  reference near-surface specific humidity (additive)');
+
+			fielddisplay(self,'s0t','should be set to elevation from RCM/GCM source (between 0 and a few 1000s m, default is 0) [m]');
+			fielddisplay(self,'snowheight','guess of snowheight at the end of the summer, will be further evolved');
+			fielddisplay(self,'rlaps','present day temperature lapse rate (default is 7.4 degree/km)');
+			fielddisplay(self,'dsgrad','present day SW height gradient (default is 1.3 W/m^2/km)');
+			fielddisplay(self,'dlgrad','present day LW height gradient (default is 2.9 W/m^2/km)');
+			fielddisplay(self,'windspeedgrad','present day wind speed height gradient (default is 0.02 m/s/km)');
+			fielddisplay(self,'humiditygrad','present day humidity height gradient (default is 0)');
+			fielddisplay(self,'qlaps','precip change (default is 0.1/km');
+			fielddisplay(self,'icealbedo','albedo for ice (default is 0.3)');
+			fielddisplay(self,'snowalbedo','albedo for snow (default is 0.75)');
+			fielddisplay(self,'debrisalbedo','albedo for debris (default is 0.07)');
+			fielddisplay(self,'AndersonD0','parameter to represent the debris effect (default is 0.5)');
+			fielddisplay(self,'steps_per_step', 'number of smb steps per time step');
+			fielddisplay(self,'averaging','averaging methods from short to long steps');
+			disp(sprintf('%51s  0: Arithmetic (default)',' '));
+			disp(sprintf('%51s  1: Geometric',' '));
+			disp(sprintf('%51s  2: Harmonic',' '));
+			fielddisplay(self,'requested_outputs','additional outputs requested (TemperaturePDD, SmbAccumulation, SmbMelt, SmbSummerMelt, SmbAlbedo, SmbSummerAlbedo, SmbSnowheight)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',14,'format','Integer');
+
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','qlaps','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','snowheight','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlaps','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dsgrad','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dlgrad','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','windspeedgrad','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','humiditygrad','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','icealbedo','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','snowalbedo','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','debrisalbedo','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isAnderson','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','iscryokarst','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','AndersonD0','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dsradiation','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dlradiation','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','windspeed','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','airhumidity','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperature_anomaly','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+                        WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitation_anomaly','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dsradiation_anomaly','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dlradiation_anomaly','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','windspeed_anomaly','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','airhumidity_anomaly','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','steps_per_step','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','averaging','format','Integer')
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBdebrisML.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBdebrisML.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBdebrisML.m	(revision 27955)
@@ -0,0 +1,73 @@
+%SMBdebrisML Class definition
+%
+%   Usage:
+%      SMBdebrisML=SMBdebrisML();
+
+classdef SMBdebrisML
+	properties (SetAccess=public)
+		steps_per_step=1;
+		averaging=0;
+		requested_outputs      = {};
+	end
+	methods
+		function self = SMBdebrisML(varargin) % {{{
+			switch nargin
+				case 0
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('SMBdebrisML');
+						list2 = fieldnames(inputstruct);
+						for i=1:length(list1)
+							fieldname = list1{i};
+							if ismember(fieldname,list2),
+								self.(fieldname) = inputstruct.(fieldname);
+							end
+						end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'SmbMassBalance'};
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]);
+			md = checkfield(md,'fieldname','smb.averaging','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+			fielddisplay(self, 'steps_per_step', 'number of smb steps per time step');
+			fielddisplay(self, 'averaging', 'averaging methods from short to long steps');
+			disp(sprintf('%51s  0: Arithmetic (default)',' '));
+			disp(sprintf('%51s  1: Geometric',' '));
+			disp(sprintf('%51s  2: Harmonic',' '));
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',14,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','steps_per_step','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','averaging','format','Integer');
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBforcing.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBforcing.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBforcing.js	(revision 27955)
@@ -0,0 +1,82 @@
+//SMBforcing Class definition
+//
+//   Usage:
+//      SMB=SMBforcing();
+
+function SMBforcing(){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		this.requested_outputs=['default'];
+	} // }}}
+	this.disp = function(){ // {{{
+		console.log(sprintf('   surface forcings parameters:'));
+		fielddisplay(this,'mass_balance','surface mass balance [m/yr ice eq]');
+		fielddisplay(this,'steps_per_step', 'number of smb steps per time step');
+		fielddisplay(this,'requested_outputs','additional outputs requested');
+		fielddisplay(this,'averaging','averaging methods from short to long steps');
+		console.log(sprintf('%51s  0: Arithmetic (default)',' '));
+		console.log(sprintf('%51s  1: Geometric',' '));
+		console.log(sprintf('%51s  2: Harmonic',' '));
+	} // }}}
+	this.defaultoutputs = function(){ // {{{
+		return 'SmbMassBalance';
+	}//}}}
+    this.classname = function(){ // {{{
+        return "SMBforcing";
+    } // }}}
+    this.extrude = function(md) {//{{{
+        this.mass_balance=project3d(md,'vector',this.mass_balance,'type','node');
+        return this;
+    }//}}}
+    this.initialize = function(md) {// {{{
+
+        if (isNaN(this.mass_balance)){
+            this.mass_balance=NewArrayFill(md.mesh.numberofvertices,0);
+            console.log('      no smb.mass_balance specified: values set as zero');
+        }
+
+    } // }}}
+    this.checkconsistency = function(md,solution,analyses) { //{{{
+		if (solution=='TransientSolution' && md.transient.issmb == 0) return;
+        if(ArrayAnyEqual(ArrayIsMember('MasstransportAnalysis',analyses),1)){
+            checkfield(md,'fieldname','smb.mass_balance','timeseries',1,'NaN',1,'Inf',1);
+        }
+        if(ArrayAnyEqual(ArrayIsMember('BalancethicknessAnalysis',analyses),1)){
+            checkfield(md,'fieldname','smb.mass_balance','size',[md.mesh.numberofvertices,1],'NaN',1,'Inf',1);
+        }
+		checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]);
+		checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+		checkfield(md,'fieldname','smb.averaging','numel',[1],'values',[0,1,2]);
+    } // }}}
+    this.marshall=function(md,prefix,fid) { //{{{
+
+        var yts=md.constants.yts;
+
+        WriteData(fid,prefix,'name','md.smb.model','data',1,'format','Integer');
+        WriteData(fid,prefix,'object',this,'class','smb','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'object',this,'fieldname','steps_per_step','format','Integer');
+		WriteData(fid,prefix,'object',this,'fieldname','averaging','format','Integer');
+
+        //process requested outputs
+        var outputs = this.requested_outputs.slice();
+        for (var i=0;i<outputs.length;i++){
+            if (outputs[i] == 'default') {
+                outputs.splice(i,1);
+                var newoutputs=this.defaultoutputs(md);
+                for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+            }
+        }
+        WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+    }//}}}
+    this.fix=function() { //{{{
+    }//}}}
+	//properties 
+    // {{{
+	this.mass_balance 	   = NaN;
+	this.requested_outputs = [];
+	this.steps_per_step    = 1;
+	this.averaging         = 0;
+	this.setdefaultparameters();
+    // }}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBforcing.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBforcing.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBforcing.m	(revision 27955)
@@ -0,0 +1,100 @@
+%SMBforcing Class definition
+%
+%   Usage:
+%      SMB=SMBforcing();
+
+classdef SMBforcing
+	properties (SetAccess=public)
+		mass_balance      = NaN;
+		steps_per_step    = 1;
+		requested_outputs = {};
+		averaging         = 0;
+	end
+	methods
+		function self = SMBforcing(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('SMBforcing');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'SmbMassBalance'};
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.mass_balance=project3d(md,'vector',self.mass_balance,'type','node');
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.mass_balance)
+				self.mass_balance=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.mass_balance specified: values set as zero');
+			end
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			if (strcmp(solution,'TransientSolution') & md.transient.issmb == 0), return; end
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.mass_balance','timeseries',1,'NaN',1,'Inf',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.mass_balance','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			end
+			md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]);
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+			md = checkfield(md,'fieldname','smb.averaging','numel',[1],'values',[0 1 2]);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+			fielddisplay(self,'mass_balance','surface mass balance [m/yr ice eq]');
+			fielddisplay(self, 'steps_per_step', 'number of smb steps per time step');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+			fielddisplay(self,'averaging','averaging methods from short to long steps');
+			disp(sprintf('%51s  0: Arithmetic (default)',' '));
+			disp(sprintf('%51s  1: Geometric',' '));
+			disp(sprintf('%51s  2: Harmonic',' '));
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid,prefix,'object',self,'fieldname','steps_per_step','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','averaging','format','Integer');
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			writejs1Darray(fid,[modelname '.smb.mass_balance'],self.mass_balance);
+			writejscellstring(fid,[modelname '.smb.requested_outputs'],self.requested_outputs);
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%output default:
+			self.requested_outputs={'default'};
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBforcing.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBforcing.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBforcing.py	(revision 27955)
@@ -0,0 +1,92 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class SMBforcing(object):
+    """SMBFORCING class definition
+
+    Usage:
+        SMB = SMBforcing()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.mass_balance = np.nan
+        self.steps_per_step = 1
+        self.requested_outputs = []
+        self.averaging = 0
+
+        nargs = len(args)
+        if nargs == 0:
+            self.setdefaultparameters()
+        elif nargs == 1:
+            # TODO: Replace the following with constructor
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   surface forcings parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'mass_balance', 'surface mass balance [m/yr ice eq]'))
+        s += '{}\n'.format(fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'))
+        s += '{}\n'.format(fielddisplay(self, 'averaging', 'averaging methods from short to long steps'))
+        s += '\t\t{}\n'.format('0: Arithmetic (default)')
+        s += '\t\t{}\n'.format('1: Geometric')
+        s += '\t\t{}\n'.format('2: Harmonic')
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.mass_balance = project3d(md, 'vector', self.mass_balance, 'type', 'node')
+        return self
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['SmbMassBalance']
+    # }}}
+
+    def initialize(self, md):  # {{{
+        if np.all(np.isnan(self.mass_balance)):
+            self.mass_balance = np.zeros((md.mesh.numberofvertices))
+            print("      no smb.mass_balance specified: values set as zero")
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if solution == 'TransientSolution' and not md.transient.issmb:
+            return
+        if 'MasstransportAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'smb.mass_balance', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        if 'BalancethicknessAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'smb.mass_balance', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1])
+        md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 1, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'mass_balance', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1 / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer')
+
+        #process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
+    # }}}
+
+    def setdefaultparameters(self):  #{{{
+        self.requested_outputs = ['SmbMassBalance']
+        return self
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgemb.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgemb.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgemb.m	(revision 27955)
@@ -0,0 +1,612 @@
+%SMBgemb Class definition.
+%   This is the class that hosts all the inputs for the Alberta Glacier Surface Mass Balance Model
+%   Alex Gardner, University of Alberta.
+%
+%   Usage:
+%      SMBgemb=SMBgemb();
+
+classdef SMBgemb
+	properties (SetAccess=public)
+		% {{{
+		%each one of these properties is a transient forcing to the GEMB model, loaded from meteorological data derived
+		%from an automatic weather stations (AWS). Each property is therefore a matrix, of size (numberofvertices x number
+		%of time steps. )
+
+		%solution choices
+		isgraingrowth       = 0;
+		isalbedo            = 0;
+		isshortwave         = 0;
+		isthermal           = 0;
+		isaccumulation      = 0;
+		ismelt              = 0;
+		isdensification     = 0;
+		isturbulentflux     = 0;
+		isconstrainsurfaceT = 0;
+		isdeltaLWup         = 0;
+
+		%inputs:
+		Ta    = NaN; %2 m air temperature, in Kelvin
+		V     = NaN; %wind speed (m/s-1)
+		dswrf = NaN; %downward shortwave radiation flux [W/m^2]
+		dlwrf = NaN; %downward longwave radiation flux [W/m^2]
+		P     = NaN; %precipitation [mm w.e. / m^2]
+		eAir  = NaN; %screen level vapor pressure [Pa]
+		pAir  = NaN; %surface pressure [Pa]
+
+		Tmean = NaN; %mean annual temperature [K]
+		Vmean = NaN; %mean annual wind velocity [m s-1]
+		C     = NaN; %mean annual snow accumulation [kg m-2 yr-1]
+		Tz    = NaN; %height above ground at which temperature (T) was sampled [m]
+		Vz    = NaN; %height above ground at which wind (V) was sampled [m]
+
+		%optional inputs:
+		aValue = NaN; %Albedo forcing at every element.  Used only if aIdx == 0, or density exceeds adThresh
+		teValue = NaN; %Outward longwave radiation thermal emissivity forcing at every element (default in code is 1). 
+		               %Used only if eIdx== 0, or effective grain radius exceeds teThresh
+		dulwrfValue = NaN; %Delta with which to perturn the long wave radiation upwards. Use if isdeltaLWup is true;  
+
+		% Initialization of snow properties
+		Dzini = NaN; %cell depth (m)
+		Dini = NaN; %snow density (kg m-3)
+		Reini = NaN; %effective grain size (mm)
+		Gdnini = NaN; %grain dendricity (0-1)
+		Gspini = NaN; %grain sphericity (0-1)
+		ECini = NaN; %evaporation/condensation (kg m-2)
+		Wini = NaN; %Water content (kg m-2)
+		Aini = NaN; %albedo (0-1)
+		Adiffini = NaN; %albedo, diffusive radiation (0-1)
+		Tini = NaN; %snow temperature (K)
+		Sizeini = NaN; %Number of layers
+
+		%settings:
+		aIdx   = NaN; %method for calculating albedo and subsurface absorption (default is 1)
+		% 0: direct input from aValue parameter, no use of adThresh
+		% 1: effective grain radius [Gardner & Sharp, 2009]
+		% 2: effective grain radius [Brun et al., 1992; LeFebre et al., 2003]], with swIdx=1, SW penetration follows grain size in 3 spectral bands (Brun et al., 1992)
+		% 3: density and cloud amount [Greuell & Konzelmann, 1994]
+		% 4: exponential time decay & wetness [Bougamont & Bamber, 2005]
+
+		eIdx   = NaN; %method for calculating emissivity (default is 1)
+		% 0: direct input from teValue parameter, no use of teThresh
+		% 1: default value of 1, in areas with grain radius below teThresh
+		% 2: default value of 1, in areas with grain radius below teThresh and areas of dry snow (not bare ice or wet) at the surface
+
+		tcIdx   = NaN; %method for calculating thermal conductivity (default is 1)
+		% 1: after Sturm et al, 1997
+		% 2: after Calonne et al., 2011
+
+		swIdx  = NaN; %apply all SW to top grid cell (0) or allow SW to penetrate surface (1) (default 0, if swIdx=1 and aIdx=2, function of effective radius (Brun et al., 1992) or else dependent on snow density (taken from Bassford, 2002))
+
+		denIdx = NaN; %densification model to use (default is 2):
+		% 1 = emperical model of Herron and Langway (1980)
+		% 2 = semi-emperical model of Anthern et al. (2010)
+		% 3 = DO NOT USE: physical model from Appendix B of Anthern et al. (2010)
+		% 4 = DO NOT USE: emperical model of Li and Zwally (2004)
+		% 5 = DO NOT USE: modified emperical model (4) by Helsen et al. (2008)
+		% 6 = Antarctica semi-emperical model of Ligtenberg et al. (2011)
+		% 7 = Greenland semi-emperical model of Kuipers Munneke et al. (2015)
+
+		dsnowIdx = NaN; %model for fresh snow accumulation density (default is 1):
+		% 0 = Original GEMB value, 150 kg/m^3
+		% 1 = Antarctica value of fresh snow density, 350 kg/m^3
+		% 2 = Greenland value of fresh snow density, 315 kg/m^3, Fausto et al. (2018)
+		% 3 = Antarctica model of Kaspers et al. (2004)
+		% 4 = Greenland model of Kuipers Munneke et al. (2015)
+
+		zTop  = NaN; % depth over which grid length is constant at the top of the snopack (default 10) [m]
+		dzTop = NaN; % initial top vertical grid spacing (default .05) [m]
+		dzMin = NaN; % initial min vertical allowable grid spacing (default dzMin/2) [m]
+
+		zY    = NaN; % strech grid cells bellow top_z by a [top_dz * y ^ (cells bellow top_z)]
+		zMax = NaN; %initial max model depth (default is min(thickness,250)) [m]
+		zMin = NaN; %initial min model depth (default is min(thickness,130)) [m]
+		outputFreq = NaN; %output frequency in days (default is monthly, 30)
+
+		%specific albedo parameters:
+		%Method 1
+		dswdiffrf = NaN; %downward diffusive shortwave radiation flux [W/m^2]
+		szaValue = NaN; %Solar Zenith Angle [degree]
+		cotValue = NaN; %Cloud Optical Thickness
+		ccsnowValue = NaN; %concentration of light absorbing carbon for snow [ppm1]
+		cciceValue = NaN; %concentration of light absorbing carbon for ice [ppm1]
+		%Method 1 and 2:
+		aSnow = NaN; % new snow albedo (0.64 - 0.89)
+		aIce  = NaN; % range 0.27-0.58 for old snow
+		%Method 3: Radiation Correction Factors -> only used for met station data and Greuell & Konzelmann, 1994 albedo
+		cldFrac = NaN; % average cloud amount
+		%Method 4: additonal tuning parameters albedo as a funtion of age and water content (Bougamont et al., 2005)
+		t0wet = NaN; % time scale for wet snow (15-21.9)
+		t0dry = NaN; % warm snow timescale (30)
+		K     = NaN; % time scale temperature coef. (7)
+		adThresh = NaN; %Apply aIdx method to all areas with densities below this value,
+		%or else apply direct input value from aValue, allowing albedo to be altered.
+		%Default value is rho water (1023 kg m-3).
+		teThresh = NaN; %Apply eIdx method to all areas with grain radii above this value (mm),
+		%or else apply direct input value from teValue, allowing emissivity to be altered.
+		%Default value is a effective grain radius of 10 mm.
+
+		%densities:
+		InitDensityScaling= NaN; %initial scaling factor multiplying the density of ice, which describes the density of the snowpack.
+
+		%thermal:
+		ThermoDeltaTScaling= NaN; %scaling factor to multiply the thermal diffusion timestep (delta t)
+
+		steps_per_step = 1;
+		averaging = 0;
+		requested_outputs      = {};
+
+		%Several fields are missing from the standard GEMB model, which are 
+		%captured intrinsically by ISSM.
+		%dateN: that's the last row of the above fields.
+		%dt:    included in dateN. Not an input.
+		%elev:  this is taken from the ISSM surface itself.
+
+	end % }}}
+	methods
+		function self = SMBgemb(varargin) % {{{
+			switch nargin
+				case 2
+					mesh=varargin{1};
+					geometry=varargin{2};
+					self=setdefaultparameters(self,mesh,geometry);
+				otherwise
+					error('constructor not supported: need geometry and mesh to set defaults');
+			end
+		end % }}}
+		function disp(self) % {{{
+
+			disp(sprintf('   surface forcings for SMB GEMB model :'));
+
+			fielddisplay(self,'isgraingrowth','run grain growth module (default true)');
+			fielddisplay(self,'isalbedo','run albedo module (default true)');
+			fielddisplay(self,'isshortwave','run short wave module (default true)');
+			fielddisplay(self,'isthermal','run thermal module (default true)');
+			fielddisplay(self,'isaccumulation','run accumulation module (default true)');
+			fielddisplay(self,'ismelt','run melting  module (default true)');
+			fielddisplay(self,'isdensification','run densification module (default true)');
+			fielddisplay(self,'isturbulentflux','run turbulant heat fluxes module (default true)');
+			fielddisplay(self,'isconstrainsurfaceT','constrain surface temperatures to air temperature, turn off EC and surface flux contribution to surface temperature change (default false)');
+			fielddisplay(self,'isdeltaLWup','set to true to invoke a bias in the long wave upward spatially, specified by dulwrfValue (default false)'); 
+			fielddisplay(self,'Ta','2 m air temperature, in Kelvin');
+			fielddisplay(self,'V','wind speed (m s-1)');
+			fielddisplay(self,'dswrf','downward shortwave radiation flux [W/m^2]');
+			fielddisplay(self,'dswdiffrf','downward diffusive portion of shortwave radiation flux (default to 0) [W/m^2]');
+			fielddisplay(self,'dlwrf','downward longwave radiation flux [W/m^2]');
+			fielddisplay(self,'P','precipitation [mm w.e. / m^2]');
+			fielddisplay(self,'eAir','screen level vapor pressure [Pa]');
+			fielddisplay(self,'pAir','surface pressure [Pa]');
+			fielddisplay(self,'Tmean','mean annual temperature [K]');
+			fielddisplay(self,'C','mean annual snow accumulation [kg m-2 yr-1]');
+			fielddisplay(self,'Vmean','mean annual wind speed [m s-1] (default 10 m/s)');
+			fielddisplay(self,'Tz','height above ground at which temperature (T) was sampled [m]');
+			fielddisplay(self,'Vz','height above ground at which wind (V) was sampled [m]');
+			fielddisplay(self,'zTop','depth over which grid length is constant at the top of the snopack (default 10) [m]');
+			fielddisplay(self,'dzTop','initial top vertical grid spacing (default .05) [m] ');
+			fielddisplay(self,'dzMin','initial min vertical allowable grid spacing (default dzMin/2) [m] ');
+			fielddisplay(self,'zMax','initial max model depth (default is min(thickness,250)) [m]');
+			fielddisplay(self,'zMin','initial min model depth (default is min(thickness,130)) [m]');
+			fielddisplay(self,'zY','strech grid cells bellow top_z by a [top_dz * y ^ (cells bellow top_z)]');
+			fielddisplay(self,'InitDensityScaling',{'initial scaling factor multiplying the density of ice','which describes the density of the snowpack.'});
+			fielddisplay(self,'ThermoDeltaTScaling',{'scaling factor to multiply the thermal diffusion timestep (delta t)'});
+			fielddisplay(self,'outputFreq','output frequency in days (default is monthly, 30)');
+			fielddisplay(self,'adThresh',{'Apply aIdx method to all areas with densities below this value,','or else apply direct input value from aValue, allowing albedo to be altered.'});
+			fielddisplay(self,'aIdx',{'method for calculating albedo and subsurface absorption (default is 1)',...
+				'0: direct input from aValue parameter',...
+				'1: effective grain radius [Gardner & Sharp, 2009]',...
+				'2: effective grain radius [Brun et al., 1992; LeFebre et al., 2003], with swIdx=1, SW penetration follows grain size in 3 spectral bands (Brun et al., 1992)',...
+				'3: density and cloud amount [Greuell & Konzelmann, 1994]',...
+				'4: exponential time decay & wetness [Bougamont & Bamber, 2005]'})
+
+			fielddisplay(self,'dulwrfValue','Specified bias to be applied to the outward long wave radiation every element (W/m-2, +upward)');
+			fielddisplay(self,'teValue','Outward longwave radiation thermal emissivity forcing at every element (default in code is 1)');
+			fielddisplay(self,'teThresh',{'Apply eIdx method to all areas with effective grain radius above this value (mm),','or else apply direct input value from teValue, allowing emissivity to be altered.'});
+			fielddisplay(self,'eIdx',{'method for calculating emissivity (default is 1)',...
+				'0: direct input from teValue parameter, no use of teThresh',...
+				'1: default value of 1, in areas with grain radius below teThresh',...
+				'2: default value of 1, in areas with grain radius below teThresh and areas of dry snow (not bare ice or wet) at the surface'});
+
+			fielddisplay(self,'tcIdx',{'method for calculating thermal conductivity (default is 1)',...
+				'1: after Sturm et al, 1997',...
+				'2: after Calonne et al., 2011'});
+
+			%snow properties init
+			fielddisplay(self,'Dzini','Initial cell depth when restart [m]');
+			fielddisplay(self,'Dini','Initial snow density when restart [kg m-3]');
+			fielddisplay(self,'Reini','Initial grain size when restart [mm]');
+			fielddisplay(self,'Gdnini','Initial grain dendricity when restart [-]');
+			fielddisplay(self,'Gspini','Initial grain sphericity when restart [-]');
+			fielddisplay(self,'ECini','Initial evaporation/condensation when restart [kg m-2]');
+			fielddisplay(self,'Wini','Initial snow water content when restart [kg m-2]');
+			fielddisplay(self,'Aini','Initial albedo when restart [-]');
+			fielddisplay(self,'Adiffini','Initial diffusive radiation albedo when restart (default to 1) [-]');
+			fielddisplay(self,'Tini','Initial snow temperature when restart [K]');
+			fielddisplay(self,'Sizeini','Initial number of layers when restart [-]');
+
+			%additional albedo parameters:
+			fielddisplay(self,'aValue','Albedo forcing at every element');
+			switch self.aIdx
+				case {1 2}
+					fielddisplay(self,'aSnow','new snow albedo (0.64 - 0.89)');
+					fielddisplay(self,'aIce','albedo of ice (0.27-0.58)');
+					if self.aIdx==1
+						fielddisplay(self,'szaValue','Solar Zenith Angle [degree]');
+						fielddisplay(self,'cotValue','Cloud Optical Thickness');
+						fielddisplay(self,'ccsnowValue','concentration of light absorbing carbon for snow [ppm1]');
+						fielddisplay(self,'cciceValue','concentration of light absorbing carbon for ice [ppm1]');
+					end
+				case 3
+					fielddisplay(self,'cldFrac','average cloud amount');
+				case 4
+					fielddisplay(self,'t0wet','time scale for wet snow (15-21.9) [d]');
+					fielddisplay(self,'t0dry','warm snow timescale (30) [d]');
+					fielddisplay(self,'K','time scale temperature coef. (7) [d]');
+			end
+
+			fielddisplay(self,'swIdx','apply all SW to top grid cell (0) or allow SW to penetrate surface (1) [default 0, if swIdx=1 and aIdx=2 function of effective radius (Brun et al., 1992) or else dependent on snow density (taken from Bassford, 2002)]');
+			fielddisplay(self,'denIdx',{'densification model to use (default is 2):',...
+				'1 = emperical model of Herron and Langway (1980)',...
+				'2 = semi-emperical model of Anthern et al. (2010)',...
+				'3 = DO NOT USE: physical model from Appendix B of Anthern et al. (2010)',...
+				'4 = DO NOT USE: emperical model of Li and Zwally (2004)',...
+				'5 = DO NOT USE: modified emperical model (4) by Helsen et al. (2008)',...
+				'6 = Antarctica semi-emperical model of Ligtenberg et al. (2011)',...
+				'7 = Greenland semi-emperical model of Kuipers Munneke et al. (2015)'});
+			fielddisplay(self,'dsnowIdx',{'model for fresh snow accumulation density (default is 1):',...
+				'0 = Original GEMB value, 150 kg/m^3',...
+				'1 = Antarctica value of fresh snow density, 350 kg/m^3',...
+				'2 = Greenland value of fresh snow density, 315 kg/m^3, Fausto et al. (2018)',...
+				'3 = Antarctica model of Kaspers et al. (2004), Make sure to set Vmean accurately',...
+				'4 = Greenland model of Kuipers Munneke et al. (2015)'});
+
+			fielddisplay(self, 'steps_per_step', 'number of smb steps per time step');
+			fielddisplay(self, 'averaging', 'averaging methods from short to long steps');
+			disp(sprintf('%51s  0: Arithmetic (default)',' '));
+			disp(sprintf('%51s  1: Geometric',' '));
+			disp(sprintf('%51s  2: Harmonic',' '));
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+
+
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+			self.Ta=project3d(md,'vector',self.Ta,'type','element');
+			self.V=project3d(md,'vector',self.V,'type','element');
+			self.dswrf=project3d(md,'vector',self.dswrf,'type','element');
+			self.dlwrf=project3d(md,'vector',self.dlwrf,'type','element');
+			self.P=project3d(md,'vector',self.P,'type','element');
+			self.eAir=project3d(md,'vector',self.eAir,'type','element');
+			self.pAir=project3d(md,'vector',self.pAir,'type','element');
+
+			if ~isnan(self.Dzini)
+				self.Dzini=project3d(md,'vector',self.Dzini,'type','element');
+			end
+			if ~isnan(self.Dini)
+				self.Dini=project3d(md,'vector',self.Dini,'type','element');
+			end
+			if ~isnan(self.Reini)
+				self.Reini=project3d(md,'vector',self.Reini,'type','element');
+			end
+			if ~isnan(self.Gdnini)
+				self.Gdnini=project3d(md,'vector',self.Gdnini,'type','element');
+			end
+			if ~isnan(self.Gspini)
+				self.Gspini=project3d(md,'vector',self.Gspini,'type','element');
+			end
+			if ~isnan(self.ECini)
+				self.ECini=project3d(md,'vector',self.ECini,'type','element');
+			end
+			if ~isnan(self.Wini)
+				self.Wini=project3d(md,'vector',self.Wini,'type','element');
+			end
+			if ~isnan(self.Aini)
+				self.Aini=project3d(md,'vector',self.Aini,'type','element');
+			end
+			if ~isnan(self.Adiffini)
+				self.Adiffini=project3d(md,'vector',self.Adiffini,'type','element');
+			end
+			if ~isnan(self.Tini)
+				self.Tini=project3d(md,'vector',self.Tini,'type','element');
+			end
+
+			if ~isnan(self.dswdiffrf)
+				self.dswdiffrf=project3d(md,'vector',self.dswdiffrf,'type','element');
+			end
+			if ~isnan(self.szaValue)
+				self.szaValue=project3d(md,'vector',self.szaValue,'type','element');
+			end
+			if ~isnan(self.cotValue)
+				self.cotValue=project3d(md,'vector',self.cotValue,'type','element');
+			end
+			if ~isnan(self.ccsnowValue)
+				self.ccsnowValue=project3d(md,'vector',self.ccsnowValue,'type','element');
+			end
+			if ~isnan(self.cciceValue)
+				self.cciceValue=project3d(md,'vector',self.cciceValue,'type','element');
+			end
+			if ~isnan(self.aValue)
+				self.aValue=project3d(md,'vector',self.aValue,'type','element');
+			end
+			if ~isnan(self.teValue)
+				self.teValue=project3d(md,'vector',self.teValue,'type','element');
+			end
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'SmbMassBalance','SmbAccumulatedMassBalance'};
+		end % }}}
+		function self = setdefaultparameters(self,mesh,geometry) % {{{
+
+			self.isgraingrowth=1;
+			self.isalbedo=1;
+			self.isshortwave=1;
+			self.isthermal=1;
+			self.isaccumulation=1;
+			self.ismelt=1;
+			self.isdensification=1;
+			self.isturbulentflux=1;
+			self.isconstrainsurfaceT=0;
+			self.isdeltaLWup=0;
+
+			self.aIdx = 1;
+			self.eIdx = 1;
+			self.tcIdx = 1;
+			self.swIdx = 0;
+			self.denIdx = 2;
+			self.dsnowIdx = 1;
+			self.zTop=10*ones(mesh.numberofelements,1);
+			self.dzTop = .05* ones (mesh.numberofelements,1);
+			self.dzMin = self.dzTop/2;
+			self.InitDensityScaling = 1.0;
+			self.ThermoDeltaTScaling = 1/11;
+
+			self.Vmean=10.0*ones(mesh.numberofelements,1);
+
+			self.zMax=250*ones(mesh.numberofelements,1);
+			self.zMin=130*ones(mesh.numberofelements,1);
+			self.zY = 1.025*ones(mesh.numberofelements,1);
+			self.outputFreq = 30;
+
+			%additional albedo parameters
+			self.aSnow = 0.85;
+			self.aIce = 0.48;
+			self.cldFrac = 0.1;
+			self.t0wet = 15;
+			self.t0dry = 30;
+			self.K = 7;
+			self.adThresh = 1023;
+			self.teThresh = 10;
+
+			self.teValue = ones(mesh.numberofelements,1);
+			self.aValue = self.aSnow*ones(mesh.numberofelements,1);
+			self.dulwrfValue = zeros(mesh.numberofelements,1);
+
+			self.dswdiffrf=0.0*ones(mesh.numberofelements,1);
+			self.szaValue=0.0*ones(mesh.numberofelements,1);
+			self.cotValue=0.0*ones(mesh.numberofelements,1);
+			self.ccsnowValue=0.0*ones(mesh.numberofelements,1);
+			self.cciceValue=0.0*ones(mesh.numberofelements,1);
+
+			self.Dzini=0.05*ones(mesh.numberofelements,2);
+			self.Dini=910.0*ones(mesh.numberofelements,2);
+			self.Reini=2.5*ones(mesh.numberofelements,2);
+			self.Gdnini=0.0*ones(mesh.numberofelements,2);
+			self.Gspini=0.0*ones(mesh.numberofelements,2);
+			self.ECini=0.0*ones(mesh.numberofelements,1);
+			self.Wini=0.0*ones(mesh.numberofelements,2);
+			self.Aini=self.aSnow*ones(mesh.numberofelements,2);
+			self.Adiffini=ones(mesh.numberofelements,2);
+			self.Tini=273.15*ones(mesh.numberofelements,2);
+			% 		/!\ Default value of Tini must be equal to Tmean but don't know Tmean yet (computed when atmospheric forcings are interpolated on mesh).
+			% 		If initialization without restart, this value will be overwritten when snow parameters are retrieved in Element.cpp
+			self.Sizeini=2*ones(mesh.numberofelements,1);
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','smb.isgraingrowth','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isalbedo','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isshortwave','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isthermal','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isaccumulation','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.ismelt','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isdensification','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isturbulentflux','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isconstrainsurfaceT','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isdeltaLWup','values',[0 1]);
+
+			md = checkfield(md,'fieldname','smb.Ta','timeseries',1,'NaN',1,'Inf',1,'>',273-100,'<',273+100); %-100/100 celsius min/max value
+			md = checkfield(md,'fieldname','smb.V','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<',45,'size',size(self.Ta)); %max 500 km/h
+			md = checkfield(md,'fieldname','smb.dswrf','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<=',1400,'size',size(self.Ta));
+			md = checkfield(md,'fieldname','smb.dswdiffrf','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<=',1400);
+			md = checkfield(md,'fieldname','smb.dlwrf','timeseries',1,'NaN',1,'Inf',1,'>=',0,'size',size(self.Ta));
+			md = checkfield(md,'fieldname','smb.P','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<=',200,'size',size(self.Ta));
+			md = checkfield(md,'fieldname','smb.eAir','timeseries',1,'NaN',1,'Inf',1,'size',size(self.Ta));
+
+			md = checkfield(md,'fieldname','smb.Tmean','size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1,'>',273-100,'<',273+100); %-100/100 celsius min/max value
+			md = checkfield(md,'fieldname','smb.C','size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1,'>',0);
+			md = checkfield(md,'fieldname','smb.Vmean','size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1,'>=',0);
+			md = checkfield(md,'fieldname','smb.Tz','size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1,'>=',0,'<=',5000);
+			md = checkfield(md,'fieldname','smb.Vz','size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1,'>=',0,'<=',5000);
+
+			md = checkfield(md,'fieldname','smb.teValue','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<=',1);
+			md = checkfield(md,'fieldname','smb.dulwrfValue','timeseries',1,'NaN',1,'Inf',1);
+
+			md = checkfield(md,'fieldname','smb.aIdx','NaN',1,'Inf',1,'values',[0,1,2,3,4]);
+			md = checkfield(md,'fieldname','smb.eIdx','NaN',1,'Inf',1,'values',[0,1,2]);
+			md = checkfield(md,'fieldname','smb.tcIdx','NaN',1,'Inf',1,'values',[1,2]);
+			md = checkfield(md,'fieldname','smb.swIdx','NaN',1,'Inf',1,'values',[0,1]);
+			md = checkfield(md,'fieldname','smb.denIdx','NaN',1,'Inf',1,'values',[1,2,3,4,5,6,7]);
+			md = checkfield(md,'fieldname','smb.dsnowIdx','NaN',1,'Inf',1,'values',[0,1,2,3,4]);
+
+			md = checkfield(md,'fieldname','smb.zTop','NaN',1,'Inf',1,'>=',0);
+			md = checkfield(md,'fieldname','smb.dzTop','NaN',1,'Inf',1,'>',0);
+			md = checkfield(md,'fieldname','smb.dzMin','NaN',1,'Inf',1,'>',0);
+			md = checkfield(md,'fieldname','smb.zY','NaN',1,'Inf',1,'>=',1);
+			md = checkfield(md,'fieldname','smb.outputFreq','NaN',1,'Inf',1,'>',0,'<',10*365); %10 years max
+			md = checkfield(md,'fieldname','smb.InitDensityScaling','NaN',1,'Inf',1,'>=',0,'<=',1);
+			md = checkfield(md,'fieldname','smb.ThermoDeltaTScaling','NaN',1,'Inf',1,'>=',0,'<=',1);
+			md = checkfield(md,'fieldname','smb.adThresh','NaN',1,'Inf',1,'>=',0);
+			md = checkfield(md,'fieldname','smb.teThresh','NaN',1,'Inf',1,'>=',0);
+
+			md = checkfield(md,'fieldname','smb.aValue','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<=',1);
+			switch self.aIdx,
+				case {1 2}
+					md = checkfield(md,'fieldname','smb.aSnow','NaN',1,'Inf',1,'>=',.64,'<=',.89);
+					md = checkfield(md,'fieldname','smb.aIce','NaN',1,'Inf',1,'>=',.27,'<=',.58);
+					if self.aIdx==1
+						md = checkfield(md,'fieldname','smb.szaValue','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<=',90);
+						md = checkfield(md,'fieldname','smb.cotValue','timeseries',1,'NaN',1,'Inf',1,'>=',0);
+						md = checkfield(md,'fieldname','smb.ccsnowValue','timeseries',1,'NaN',1,'Inf',1,'>=',0);
+						md = checkfield(md,'fieldname','smb.cciceValue','timeseries',1,'NaN',1,'Inf',1,'>=',0);
+					end
+				case 3
+					md = checkfield(md,'fieldname','smb.cldFrac','NaN',1,'Inf',1,'>=',0,'<=',1);
+				case 4
+					md = checkfield(md,'fieldname','smb.t0wet','NaN',1,'Inf',1,'>=',15,'<=',21.9);
+					md = checkfield(md,'fieldname','smb.t0dry','NaN',1,'Inf',1,'>=',30,'<=',30);
+					md = checkfield(md,'fieldname','smb.K','NaN',1,'Inf',1,'>=',7,'<=',7);
+			end
+
+			%check zTop is < local thickness:
+			he=sum(md.geometry.thickness(md.mesh.elements),2)/size(md.mesh.elements,2);
+			if any(he<self.zTop),
+				error('SMBgemb consistency check error: zTop should be smaller than local ice thickness');
+			end
+			md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]);
+			md = checkfield(md,'fieldname','smb.averaging','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',8,'format','Integer');
+
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isgraingrowth','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isalbedo','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isshortwave','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isthermal','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isaccumulation','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','ismelt','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isdensification','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isturbulentflux','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isconstrainsurfaceT','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isdeltaLWup','format','Boolean');
+
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Ta','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','V','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dswrf','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dswdiffrf','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dlwrf','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','P','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','eAir','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','pAir','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tmean','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','C','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Vmean','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tz','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Vz','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','zTop','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dzTop','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dzMin','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','zY','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','zMax','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','zMin','format','DoubleMat','mattype',2);
+
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','aIdx','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','eIdx','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','tcIdx','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','swIdx','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','denIdx','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dsnowIdx','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','InitDensityScaling','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','ThermoDeltaTScaling','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','outputFreq','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','aSnow','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','aIce','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','cldFrac','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','t0wet','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','t0dry','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','K','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','adThresh','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','teThresh','format','Double');
+
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','aValue','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','teValue','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dulwrfValue','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','szaValue','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','cotValue','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','ccsnowValue','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','cciceValue','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+
+			%snow properties init
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Dzini','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Dini','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Reini','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Gdnini','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Gspini','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','ECini','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Wini','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Aini','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Adiffini','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tini','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','Sizeini','format','IntMat','mattype',2);
+			WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer');
+			WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer');
+			%figure out dt from forcings:
+			if (any(md.smb.P(end,:) - md.smb.Ta(end,:) ~= 0) | ...
+					any(md.smb.V(end,:) - md.smb.Ta(end,:) ~= 0) | ...
+					any(md.smb.dswrf(end,:) - md.smb.Ta(end,:) ~= 0) | ...
+					any(md.smb.dlwrf(end,:) - md.smb.Ta(end,:) ~= 0) | ...
+					any(md.smb.eAir(end,:) - md.smb.Ta(end,:) ~= 0) | ...
+					any(md.smb.pAir(end,:) - md.smb.Ta(end,:) ~= 0))
+				error('All GEMB forcings (Ta, P, V, dswrf, dlwrf, eAir, pAir) must have the same time steps in the final row!');
+			end
+			if size(md.smb.teValue,2)>1 & any(md.smb.teValue(end,:) - md.smb.Ta(end,:) ~= 0)
+				error('If GEMB forcing teValue is transient, it must have the same time steps as input Ta in the final row!');
+			end
+			if size(md.smb.dswdiffrf,2)>1 & any(md.smb.dswdiffrf(end,:) - md.smb.Ta(end,:) ~= 0)
+				error('If GEMB forcing dswdiffrf is transient, it must have the same time steps as input Ta in the final row!');
+			end
+			if size(md.smb.dulwrfValue,2)>1 & any(md.smb.dulwrfValue(end,:) - md.smb.Ta(end,:) ~= 0)
+				error('If GEMB forcing dulwrfValue is transient, it must have the same time steps as input Ta in the final row!');
+			end
+			if size(md.smb.aValue,2)>1 & any(md.smb.aValue(end,:) - md.smb.Ta(end,:) ~= 0)
+				error('If GEMB forcing aValue is transient, it must have the same time steps as input Ta in the final row!');
+			end
+			if size(md.smb.szaValue,2)>1 & any(md.smb.szaValue(end,:) - md.smb.Ta(end,:) ~= 0)
+				error('If GEMB forcing szaValue is transient, it must have the same time steps as input Ta in the final row!');
+			end
+			if size(md.smb.cotValue,2)>1 & any(md.smb.cotValue(end,:) - md.smb.Ta(end,:) ~= 0)
+				error('If GEMB forcing cotValue is transient, it must have the same time steps as input Ta in the final row!');
+			end
+			if size(md.smb.ccsnowValue,2)>1 & any(md.smb.ccsnowValue(end,:) - md.smb.Ta(end,:) ~= 0)
+				error('If GEMB forcing ccsnowValue is transient, it must have the same time steps as input Ta in the final row!');
+			end
+			if size(md.smb.cciceValue,2)>1 & any(md.smb.cciceValue(end,:) - md.smb.Ta(end,:) ~= 0)
+				error('If GEMB forcing cciceValue is transient, it must have the same time steps as input Ta in the final row!');
+			end
+			time=self.Ta(end,:); %assume all forcings are on the same time step
+			dtime=diff(time,1);
+			dt=min(dtime);
+
+			WriteData(fid,prefix,'data',dt,'name','md.smb.dt','format','Double','scale',yts);
+
+			% Check if smb_dt goes evenly into transient core time step
+			if (mod(md.timestepping.time_step,dt) >= 1e-10)
+				error('smb_dt/dt = %f. The number of SMB time steps in one transient core time step has to be an an integer',md.timestepping.time_step/dt);
+			end
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgemb.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgemb.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgemb.py	(revision 27955)
@@ -0,0 +1,583 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class SMBgemb(object):
+    """SMBGEMB class definition
+
+    Usage:
+        SMB = SMBgemb()
+    """
+
+    def __init__(self, *args):  # {{{
+        """Each one of these properties is a transient forcing to the GEMB 
+        model, loaded from meteorological data derived from an automatic 
+        weather stations (AWS). Each property is therefore a matrix, of size 
+        (numberofvertices x number of time steps.
+        """
+
+        #solution choices
+        self.isgraingrowth       = 0
+        self.isalbedo            = 0
+        self.isshortwave         = 0
+        self.isthermal           = 0
+        self.isaccumulation      = 0
+        self.ismelt              = 0
+        self.isdensification     = 0
+        self.isturbulentflux     = 0
+        self.isconstrainsurfaceT = 0
+        self.isdeltaLWup         = 0
+
+        # Inputs
+        self.Ta                     = np.nan    # 2 m air temperature, in Kelvin
+        self.V                      = np.nan    # wind speed (m/s-1)
+        self.dswrf                  = np.nan    # downward shortwave radiation flux [W/m^2]
+        self.dlwrf                  = np.nan    # downward longwave radiation flux [W/m^2]
+        self.P                      = np.nan    # precipitation [mm w.e. / m^2]
+        self.eAir                   = np.nan    # screen level vapor pressure [Pa]
+        self.pAir                   = np.nan    # surface pressure [Pa]
+
+        self.Tmean                  = np.nan    # mean annual temperature [K]
+        self.Vmean                  = np.nan    # mean annual wind velocity [m s-1]
+        self.C                      = np.nan    # mean annual snow accumulation [kg m-2 yr-1]
+        self.Tz                     = np.nan    # height above ground at which temperature (T) was sampled [m]
+        self.Vz                     = np.nan    # height above ground at which wind (V) was sampled [m]
+
+        # Optional inputs
+        self.aValue                 = np.nan    # Albedo forcing at every element. Used only if aIdx == 0, or density exceeds adThresh.
+        self.teValue                = np.nan    # Outward longwave radiation thermal emissivity forcing at every element (default in code is 1), Used only if eIdx== 0, or effective grain radius exceeds teThresh
+        dulwrfValue                 = np.nan    #Delta with which to perturn the long wave radiation upwards. Use if isdeltaLWup is true
+
+        # Initialization of snow properties
+        self.Dzini                  = np.nan    # cell depth (m)
+        self.Dini                   = np.nan    # snow density (kg m-3)
+        self.Reini                  = np.nan    # effective grain size (mm)
+        self.Gdnini                 = np.nan    # grain dendricity (0-1)
+        self.Gspini                 = np.nan    # grain sphericity (0-1)
+        self.ECini                  = np.nan    # evaporation/condensation (kg m-2)
+        self.Wini                   = np.nan    # Water content (kg m-2)
+        self.Aini                   = np.nan    # albedo (0-1)
+        self.Adiffini               = np.nan    # albedo, diffusive radiation (0-1)
+        self.Tini                   = np.nan    # snow temperature (K)
+        self.Sizeini                = np.nan    # Number of layers
+
+        # Settings
+        self.aIdx                   = np.nan    # method for calculating albedo and subsurface absorption (default is 1)
+        # 0: direct input from aValue parameter, no use of adThresh
+        # 1: effective grain radius [Gardner & Sharp, 2009]
+        # 2: effective grain radius [Brun et al., 1992; LeFebre et al., 2003], with swIdx=1, SW penetration follows grain size in 3 spectral bands (Brun et al., 1992)
+        # 3: density and cloud amount [Greuell & Konzelmann, 1994]
+        # 4: exponential time decay & wetness [Bougamont & Bamber, 2005]
+        
+        self.eIdx                   = np.nan    #method for calculating emissivity (default is 1)
+        # 0: direct input from teValue parameter, no use of teThresh
+        # 1: default value of 1, in areas with grain radius below teThresh
+        # 2: default value of 1, in areas with grain radius below teThresh and areas of dry snow (not bare ice or wet) at the surface
+
+        self.tcIdx                   = np.nan    #method for calculating thermal conductivity (default is 1)
+        # 1: after Sturm et al, 1997
+        # 2: after Calonne et al., 2011 
+
+        self.swIdx                  = np.nan    # apply all SW to top grid cell (0) or allow SW to penetrate surface (1) (default 0, if swIdx=1 and aIdx=2, function of effective radius (Brun et al., 1992) or else dependent on snow density (taken from Bassford, 2002)) 
+
+        self.denIdx                 = np.nan    # densification model to use (default is 2):
+        # 1 = emperical model of Herron and Langway (1980)
+        # 2 = semi-emperical model of Anthern et al. (2010)
+        # 3 = DO NOT USE: physical model from Appendix B of Anthern et al. (2010)
+        # 4 = DO NOT USE: emperical model of Li and Zwally (2004)
+        # 5 = DO NOT USE: modified emperical model (4) by Helsen et al. (2008)
+        # 6 = Antarctica semi-emperical model of Ligtenberg et al. (2011)
+        # 7 = Greenland semi-emperical model of Kuipers Munneke et al. (2015)
+
+        self.dsnowIdx               = np.nan    # model for fresh snow accumulation density (default is 1):
+        # 0 = Original GEMB value, 150 kg/m^3
+        # 1 = Antarctica value of fresh snow density, 350 kg/m^3
+        # 2 = Greenland value of fresh snow density, 315 kg/m^3, Fausto et al. (2018)
+        # 3 = Antarctica model of Kaspers et al. (2004)
+        # 4 = Greenland model of Kuipers Munneke et al. (2015)
+
+        self.zTop                   = np.nan    # depth over which grid length is constant at the top of the snopack (default 10) [m]
+        self.dzTop                  = np.nan    # initial top vertical grid spacing (default .05) [m]
+        self.dzMin                  = np.nan    # initial min vertical allowable grid spacing (default dzMin/2) [m]
+
+        self.zY                     = np.nan    # strech grid cells bellow top_z by a [top_dz * y ^ (cells bellow top_z)]
+        self.zMax                   = np.nan    # initial max model depth (default is min(thickness, 250)) [m]
+        self.zMin                   = np.nan    # initial min model depth (default is min(thickness, 130)) [m]
+        self.outputFreq             = np.nan    # output frequency in days (default is monthly, 30)
+
+        # Specific albedo parameters
+        # Method 1
+        self.dswdiffrf              = np.nan    # downward diffusive shortwave radiation flux [W/m^2]
+        self.szaValue               = np.nan    # Solar Zenith Angle [degree]
+        self.cotValue               = np.nan    # Cloud Optical Thickness
+        self.ccsnowValue            = np.nan    # concentration of light absorbing carbon for snow [ppm1]
+        self.cciceValue             = np.nan    # concentration of light absorbing carbon for ice [ppm1]
+        # Method 1 and 2
+        self.aSnow                  = np.nan    # new snow albedo (0.64 - 0.89)
+        self.aIce                   = np.nan    # range 0.27-0.58 for old snow
+        #Method 3: Radiation Correction Factors -> only used for met station data and Greuell & Konzelmann, 1994 albedo
+        self.cldFrac                = np.nan    # average cloud amount
+        #Method 4: additonal tuning parameters albedo as a funtion of age and water content (Bougamont et al., 2005)
+        self.t0wet                  = np.nan    # time scale for wet snow (15-21.9)
+        self.t0dry                  = np.nan    # warm snow timescale (30)
+        self.K                      = np.nan    # time scale temperature coef. (7)
+        self.adThresh               = np.nan    # Apply aIdx method to all areas with densities below this value,
+        # or else apply direct input value from aValue, allowing albedo to be altered.
+        # Default value is rho water (1023 kg m-3).
+        teThresh                    = np.nan    #Apply eIdx method to all areas with grain radii above this value (mm),
+        #or else apply direct input value from teValue, allowing emissivity to be altered.
+        #Default value is a effective grain radius of 10 mm.
+
+        # Densities
+        self.InitDensityScaling     = np.nan    # initial scaling factor multiplying the density of ice, which describes the density of the snowpack.
+
+        # Thermal
+        self.ThermoDeltaTScaling    = np.nan    # scaling factor to multiply the thermal diffusion timestep (delta t)
+
+        self.steps_per_step         = 1
+        self.averaging              = 0
+        self.requested_outputs      = []
+
+        #Several fields are missing from the standard GEMB model, which are 
+        #captured intrinsically by ISSM.
+        #dateN: that's the last row of the above fields.
+        #dt:    included in dateN. Not an input.
+        #elev:  this is taken from the ISSM surface itself.
+
+        nargin = len(args)
+        if nargin == 2:
+            mesh = args[0]
+            geometry = args[1]
+            self.setdefaultparameters(mesh, geometry)
+        else:
+            raise Exception('constructor not supported: need mesh and geometry to set defaults')
+        # }}}
+
+    def __repr__(self):  # {{{
+        #string = "   surface forcings parameters:"
+        #string = "#s\n#s"%(string, fielddisplay(self, 'mass_balance', 'surface mass balance [m/yr ice eq]'))
+        #string = "#s\n#s"%(string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        s = '   surface forcings for SMB GEMB model :\n'
+        s += '{}\n'.format(fielddisplay(self, 'isgraingrowth', 'run grain growth module (default true)'))
+        s += '{}\n'.format(fielddisplay(self, 'isalbedo', 'run albedo module (default true)'))
+        s += '{}\n'.format(fielddisplay(self, 'isshortwave', 'run short wave module (default true)'))
+        s += '{}\n'.format(fielddisplay(self, 'isthermal', 'run thermal module (default true)'))
+        s += '{}\n'.format(fielddisplay(self, 'isaccumulation', 'run accumulation module (default true)'))
+        s += '{}\n'.format(fielddisplay(self, 'ismelt', 'run melting  module (default true)'))
+        s += '{}\n'.format(fielddisplay(self, 'isdensification', 'run densification module (default true)'))
+        s += '{}\n'.format(fielddisplay(self, 'isturbulentflux', 'run turbulant heat fluxes module (default true)'))
+        s += '{}\n'.format(fielddisplay(self, 'isconstrainsurfaceT', 'constrain surface temperatures to air temperature, turn off EC and surface flux contribution to surface temperature change (default false)'))
+        s += '{}\n'.format(fielddisplay(self, 'isdeltaLWup', 'set to true to invoke a bias in the long wave upward spatially, specified by dulwrfValue (default false)'))
+        s += '{}\n'.format(fielddisplay(self, 'Ta', '2 m air temperature, in Kelvin'))
+        s += '{}\n'.format(fielddisplay(self, 'V', 'wind speed (m s-1)'))
+        s += '{}\n'.format(fielddisplay(self, 'dswrf', 'downward shortwave radiation flux [W/m^2]'))
+        s += '{}\n'.format(fielddisplay(self, 'dswdiffrf', 'downward diffusive portion of shortwave radiation flux (default to 0) [W/m^2]'))
+        s += '{}\n'.format(fielddisplay(self, 'dlwrf', 'downward longwave radiation flux [W/m^2]'))
+        s += '{}\n'.format(fielddisplay(self, 'P', 'precipitation [mm w.e. / m^2]'))
+        s += '{}\n'.format(fielddisplay(self, 'eAir', 'screen level vapor pressure [Pa]'))
+        s += '{}\n'.format(fielddisplay(self, 'pAir', 'surface pressure [Pa]'))
+        s += '{}\n'.format(fielddisplay(self, 'Tmean', 'mean annual temperature [K]'))
+        s += '{}\n'.format(fielddisplay(self, 'C', 'mean annual snow accumulation [kg m-2 yr-1]'))
+        s += '{}\n'.format(fielddisplay(self, 'Vmean', 'mean annual temperature [m s-1] (default 10 m/s)'))
+        s += '{}\n'.format(fielddisplay(self, 'Tz', 'height above ground at which temperature (T) was sampled [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'Vz', 'height above ground at which wind (V) eas sampled [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'zTop', 'depth over which grid length is constant at the top of the snopack (default 10) [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'dzTop', 'initial top vertical grid spacing (default .05) [m] '))
+        s += '{}\n'.format(fielddisplay(self, 'dzMin', 'initial min vertical allowable grid spacing (default dzMin/2) [m] '))
+        s += '{}\n'.format(fielddisplay(self, 'zMax', 'initial max model depth (default is min(thickness, 500)) [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'zMin', 'initial min model depth (default is min(thickness, 30)) [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'zY', 'strech grid cells bellow top_z by a [top_dz * y ^ (cells bellow top_z)]'))
+        s += '{}\n'.format(fielddisplay(self, 'InitDensityScaling', ['initial scaling factor multiplying the density of ice', 'which describes the density of the snowpack.']))
+        s += '{}\n'.format(fielddisplay(self, 'ThermoDeltaTScaling', 'scaling factor to multiply the thermal diffusion timestep (delta t)'))
+        s += '{}\n'.format(fielddisplay(self, 'outputFreq', 'output frequency in days (default is monthly, 30)'))
+        s += '{}\n'.format(fielddisplay(self, 'adThresh', 'Apply aIdx method to all areas with densities below this value, ', 'or else apply direct input value from aValue, allowing albedo to be altered.'))
+        s += '{}\n'.format(fielddisplay(self, 'aIdx', ['method for calculating albedo and subsurface absorption (default is 1)',
+            '0: direct input from aValue parameter',
+            '1: effective grain radius [Gardner & Sharp, 2009]',
+            '2: effective grain radius [Brun et al., 1992; LeFebre et al., 2003], with swIdx=1, SW penetration follows grain size in 3 spectral bands (Brun et al., 1992)',
+            '3: density and cloud amount [Greuell & Konzelmann, 1994]',
+            '4: exponential time decay & wetness [Bougamont & Bamber, 2005]']))
+
+        s += '{}\n'.format(fielddisplay(self, 'dulwrfValue', 'Specified bias to be applied to the outward long wave radiation every element (W/m-2, +upward)'))
+        s += '{}\n'.format(fielddisplay(self, 'teValue', 'Outward longwave radiation thermal emissivity forcing at every element (default in code is 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'teThresh', ['Apply eIdx method to all areas with effective grain radius above this value (mm),', 'or else apply direct input value from teValue, allowing emissivity to be altered.']))
+        s += '{}\n'.format(fielddisplay(self, 'eIdx', ['method for calculating emissivity (default is 1)',
+            '0: direct input from teValue parameter, no use of teThresh',
+            '1: default value of 1, in areas with grain radius below teThresh',
+            '2: default value of 1, in areas with grain radius below teThresh and areas of dry snow (not bare ice or wet) at the surface']))
+        s += '{}\n'.format(fielddisplay(self, 'tcIdx', ['method for calculating thermal conductivity (default is 1)',
+            '1: after Sturm et al, 1997',
+            '2: after Calonne et al., 2011']))
+
+        # Snow properties init
+        s += '{}\n'.format(fielddisplay(self, 'Dzini', 'Initial cell depth when restart [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'Dini', 'Initial snow density when restart [kg m-3]'))
+        s += '{}\n'.format(fielddisplay(self, 'Reini', 'Initial grain size when restart [mm]'))
+        s += '{}\n'.format(fielddisplay(self, 'Gdnini', 'Initial grain dricity when restart [-]'))
+        s += '{}\n'.format(fielddisplay(self, 'Gspini', 'Initial grain sphericity when restart [-]'))
+        s += '{}\n'.format(fielddisplay(self, 'ECini', 'Initial evaporation/condensation when restart [kg m-2]'))
+        s += '{}\n'.format(fielddisplay(self, 'Wini', 'Initial snow water content when restart [kg m-2]'))
+        s += '{}\n'.format(fielddisplay(self, 'Aini', 'Initial albedo when restart [-]'))
+        s += '{}\n'.format(fielddisplay(self, 'Adiffini', 'Initial diffusive radiation albedo when restart (default to 1) [-]'))
+        s += '{}\n'.format(fielddisplay(self, 'Tini', 'Initial snow temperature when restart [K]'))
+        s += '{}\n'.format(fielddisplay(self, 'Sizeini', 'Initial number of layers when restart [-]'))
+
+        # Additional albedo parameters
+        s += '{}\n'.format(fielddisplay(self, 'aValue', 'Albedo forcing at every element'))
+        if isinstance(self.aIdx, (list, type(np.array([1, 2])))) and (self.aIdx == [1, 2] or (1 in self.aIdx and 2 in self.aIdx)):
+            s += '{}\n'.format(fielddisplay(self, 'aSnow', 'new snow albedo (0.64 - 0.89)'))
+            s += '{}\n'.format(fielddisplay(self, 'aIce', 'albedo of ice (0.27-0.58)'))
+            if self.aIdx == 1:
+                s += '{}\n'.format(fielddisplay(self,'szaValue','Solar Zenith Angle [degree]'))
+                s += '{}\n'.format(fielddisplay(self,'cotValue','Cloud Optical Thickness'))
+                s += '{}\n'.format(fielddisplay(self,'ccsnowValue','concentration of light absorbing carbon for snow [ppm1]'))
+                s += '{}\n'.format(fielddisplay(self,'cciceValue','concentration of light absorbing carbon for ice [ppm1]'))
+        elif self.aIdx == 3:
+            s += '{}\n'.format(fielddisplay(self, 'cldFrac', 'average cloud amount'))
+        elif self.aIdx == 4:
+            s += '{}\n'.format(fielddisplay(self, 't0wet', 'time scale for wet snow (15-21.9) [d]'))
+            s += '{}\n'.format(fielddisplay(self, 't0dry', 'warm snow timescale (30) [d]'))
+            s += '{}\n'.format(fielddisplay(self, 'K', 'time scale temperature coef. (7) [d]'))
+
+        s += '{}\n'.format(fielddisplay(self, 'swIdx', 'apply all SW to top grid cell (0) or allow SW to penetrate surface (1) [default 0, if swIdx=1 and aIdx=2 function of effective radius (Brun et al., 1992) or else dependent on snow density (taken from Bassford, 2002)]'))
+        s += '{}\n'.format(fielddisplay(self, 'denIdx', ['densification model to use (default is 2):',
+            '1 = emperical model of Herron and Langway (1980)',
+            '2 = semi-emperical model of Anthern et al. (2010)',
+            '3 = DO NOT USE: physical model from Appix B of Anthern et al. (2010)',
+            '4 = DO NOT USE: emperical model of Li and Zwally (2004)',
+            '5 = DO NOT USE: modified emperical model (4) by Helsen et al. (2008)',
+            '6 = Antarctica semi-emperical model of Ligtenberg et al. (2011)',
+            '7 = Greenland semi-emperical model of Kuipers Munneke et al. (2015)']))
+        s += '{}\n'.format(fielddisplay(self, 'dsnowIdx', ['model for fresh snow accumulation density (default is 1):',
+            '0 = Original GEMB value, 150 kg/m^3',
+            '1 = Antarctica value of fresh snow density, 350 kg/m^3',
+            '2 = Greenland value of fresh snow density, 315 kg/m^3, Fausto et al. (2018)',
+            '3 = Antarctica model of Kaspers et al. (2004), Make sure to set Vmean accurately',
+            '4 = Greenland model of Kuipers Munneke et al. (2015)']))
+
+        s += '{}\n'.format(fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'))
+        s += '{}\n'.format(fielddisplay(self, 'averaging', 'averaging methods from short to long steps'))
+        s += '\t\t{}\n'.format('0: Arithmetic (default)')
+        s += '\t\t{}\n'.format('1: Geometric')
+        s += '\t\t{}\n'.format('2: Harmonic')
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.Ta = project3d(md, 'vector', self.Ta, 'type', 'element')
+        self.V = project3d(md, 'vector', self.V, 'type', 'element')
+        self.dswrf = project3d(md, 'vector', self.dswrf, 'type', 'element')
+        self.dlwrf = project3d(md, 'vector', self.dlwrf, 'type', 'element')
+        self.P = project3d(md, 'vector', self.P, 'type', 'element')
+        self.eAir = project3d(md, 'vector', self.eAir, 'type', 'element')
+        self.pAir = project3d(md, 'vector', self.pAir, 'type', 'element')
+
+        if not np.isnan(self.Dzini):
+            self.self.Dzini=project3d(md,'vector',self.self.Dzini,'type','element');
+        if not np.isnan(self.Dini):
+            self.self.Dini=project3d(md,'vector',self.Dini,'type','element');
+        if not np.isnan(self.Reini):
+            self.self.Reini=project3d(md,'vector',self.Reini,'type','element');
+        if not np.isnan(self.Gdnini):
+            self.Gdnini=project3d(md,'vector',self.Gdnini,'type','element');
+        if not np.isnan(self.Gspini):
+            self.Gspini=project3d(md,'vector',self.Gspini,'type','element');
+        if not np.isnan(self.ECini):
+            self.ECini=project3d(md,'vector',self.ECini,'type','element');
+        if not np.isnan(self.Wini):
+            self.Wini=project3d(md,'vector',self.Wini,'type','element');
+        if not np.isnan(self.Aini):
+            self.Aini=project3d(md,'vector',self.Aini,'type','element');
+        if not np.isnan(self.Adiffini):
+            self.Adiffini=project3d(md,'vector',self.Adiffini,'type','element');
+        if not np.isnan(self.Tini):
+            self.Tini=project3d(md,'vector',self.Tini,'type','element');
+
+        if not np.isnan(self.dswdiffrf):
+            self.dswdiffrf=project3d(md,'vector',self.dswdiffrf,'type','element');
+        if not np.isnan(self.szaValue):
+            self.szaValue=project3d(md,'vector',self.szaValue,'type','element');
+        if not np.isnan(self.cotValue):
+            self.cotValue=project3d(md,'vector',self.cotValue,'type','element');
+        if not np.isnan(self.ccsnowValue):
+            self.ccsnowValue=project3d(md,'vector',self.ccsnowValue,'type','element');
+        if not np.isnan(self.cciceValue):
+            self.cciceValue=project3d(md,'vector',self.cciceValue,'type','element');
+
+        if not np.isnan(self.aValue):
+            self.aValue = project3d(md, 'vector', self.aValue, 'type', 'element')
+        if not np.isnan(self.teValue):
+            self.teValue = project3d(md, 'vector', self.teValue, 'type', 'element')
+
+        return self
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['SmbMassBalance','SmbAccumulatedMassBalance']
+    # }}}
+
+    def setdefaultparameters(self, mesh, geometry):  # {{{
+        self.isgraingrowth = 1
+        self.isalbedo = 1
+        self.isshortwave = 1
+        self.isthermal = 1
+        self.isaccumulation = 1
+        self.ismelt = 1
+        self.isdensification = 1
+        self.isturbulentflux = 1
+        self.isconstrainsurfaceT = 0
+        self.isdeltaLWup = 0
+
+        self.aIdx = 1
+        self.eIdx = 1
+        self.tcIdx = 1
+        self.swIdx = 0 
+        self.denIdx = 2
+        self.dsnowIdx = 1
+        self.zTop = 10 * np.ones((mesh.numberofelements,))
+        self.dzTop = 0.05 * np.ones((mesh.numberofelements,))
+        self.dzMin = self.dzTop / 2
+        self.InitDensityScaling = 1.0
+        self.ThermoDeltaTScaling = 1 / 11.0
+
+        self.Vmean = 10 * np.ones((mesh.numberofelements,))
+
+        self.zMax = 250 * np.ones((mesh.numberofelements,))
+        self.zMin = 130 * np.ones((mesh.numberofelements,))
+        self.zY = 1.025 * np.ones((mesh.numberofelements,))
+        self.outputFreq = 30
+
+        # Additional albedo parameters
+        self.aSnow = 0.85
+        self.aIce = 0.48
+        self.cldFrac = 0.1
+        self.t0wet = 15
+        self.t0dry = 30
+        self.K = 7
+        self.adThresh = 1023
+        self.teThresh = 10
+
+        self.teValue = np.ones((mesh.numberofelements,))
+        self.aValue = self.aSnow * np.ones(mesh.numberofelements,)
+        self.dulwrfValue = np.zeros((mesh.numberofelements,))
+
+        self.dswdiffrf = 0.0 * np.ones(mesh.numberofelements,)
+        self.szaValue = 0.0 * np.ones(mesh.numberofelements,)
+        self.cotValue = 0.0 * np.ones(mesh.numberofelements,)
+        self.ccsnowValue = 0.0 * np.ones(mesh.numberofelements,)
+        self.cciceValue = 0.0 * np.ones(mesh.numberofelements,)
+
+        self.Dzini = 0.05 * np.ones((mesh.numberofelements, 2))
+        self.Dini = 910.0 * np.ones((mesh.numberofelements, 2))
+        self.Reini = 2.5 * np.ones((mesh.numberofelements, 2))
+        self.Gdnini = 0.0 * np.ones((mesh.numberofelements, 2))
+        self.Gspini = 0.0 * np.ones((mesh.numberofelements, 2))
+        self.ECini = 0.0 * np.ones((mesh.numberofelements,))
+        self.Wini = 0.0 * np.ones((mesh.numberofelements, 2))
+        self.Aini = 0.0 * np.ones((mesh.numberofelements, 2))
+        self.Adiffini = np.ones((mesh.numberofelements, 2))
+        self.Tini = 273.15 * np.ones((mesh.numberofelements, 2))
+        #       /!\ Default value of Tini must be equal to Tmean but don't know 
+        #           Tmean yet (computed when atmospheric forcings are 
+        #           interpolated on mesh).
+        #           If initialization without restart, this value will be 
+        #           overwritten when snow parameters are retrieved in 
+        #           Element.cpp
+        self.Sizeini = 2 * np.ones((mesh.numberofelements,))
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):    # {{{
+
+        md = checkfield(md, 'fieldname', 'smb.isgraingrowth', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'smb.isalbedo', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'smb.isshortwave', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'smb.isthermal', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'smb.isaccumulation', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'smb.ismelt', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'smb.isdensification', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'smb.isturbulentflux', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'smb.isdeltaLWup', 'values',[0, 1])
+        md = checkfield(md, 'fieldname', 'smb.isconstrainsurfaceT', 'values', [0, 1])
+
+        md = checkfield(md, 'fieldname', 'smb.Ta', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '>', 273 - 100, '<', 273 + 100)  #-100/100 celsius min/max value
+        md = checkfield(md, 'fieldname', 'smb.V', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '> = ', 0, '<', 45, 'size', np.shape(self.Ta))  #max 500 km/h
+        md = checkfield(md, 'fieldname', 'smb.dswrf', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '> = ', 0, '< = ', 1400, 'size', np.shape(self.Ta))
+        md = checkfield(md, 'fieldname', 'smb.dswdiffrf', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '> = ', 0, '< = ', 1400)
+        md = checkfield(md, 'fieldname', 'smb.dlwrf', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '> = ', 0, 'size', np.shape(self.Ta))
+        md = checkfield(md, 'fieldname', 'smb.P', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '> = ', 0, '< = ', 200, 'size', np.shape(self.Ta))
+        md = checkfield(md, 'fieldname', 'smb.eAir', 'timeseries', 1, 'NaN', 1, 'Inf', 1, 'size', np.shape(self.Ta))
+
+        md = checkfield(md, 'fieldname', 'smb.Tmean', 'size', [md.mesh.numberofelements], 'NaN', 1, 'Inf', 1, '>', 273 - 100, '<', 273 + 100)  #-100/100 celsius min/max value
+        md = checkfield(md, 'fieldname', 'smb.C', 'size', [md.mesh.numberofelements], 'NaN', 1, 'Inf', 1, '> ', 0)
+        md = checkfield(md, 'fieldname', 'smb.Vmean', 'size', [md.mesh.numberofelements], 'NaN', 1, 'Inf', 1, '> = ', 0)
+        md = checkfield(md, 'fieldname', 'smb.Tz', 'size', [md.mesh.numberofelements], 'NaN', 1, 'Inf', 1, '> = ', 0, '< = ', 5000)
+        md = checkfield(md, 'fieldname', 'smb.Vz', 'size', [md.mesh.numberofelements], 'NaN', 1, 'Inf', 1, '> = ', 0, '< = ', 5000)
+
+        md = checkfield(md, 'fieldname', 'smb.teValue', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '>=', 0, '<=', 1)
+        md = checkfield(md, 'fieldname', 'smb.dulwrfValue', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+
+        md = checkfield(md, 'fieldname', 'smb.aIdx', 'NaN', 1, 'Inf', 1, 'values', [0, 1, 2, 3, 4])
+        md = checkfield(md, 'fieldname', 'smb.eIdx', 'NaN', 1, 'Inf', 1, 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'smb.tcIdx', 'NaN', 1, 'Inf', 1, 'values', [1, 2])
+        md = checkfield(md, 'fieldname', 'smb.swIdx', 'NaN', 1, 'Inf', 1, 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'smb.denIdx', 'NaN', 1, 'Inf', 1, 'values', [1, 2, 3, 4, 5, 6, 7])
+        md = checkfield(md, 'fieldname', 'smb.dsnowIdx', 'NaN', 1, 'Inf', 1, 'values', [0, 1, 2, 3, 4])
+
+        md = checkfield(md, 'fieldname', 'smb.zTop', 'NaN', 1, 'Inf', 1, '> = ', 0)
+        md = checkfield(md, 'fieldname', 'smb.dzTop', 'NaN', 1, 'Inf', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'smb.dzMin', 'NaN', 1, 'Inf', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'smb.zY', 'NaN', 1, 'Inf', 1, '> = ', 1)
+        md = checkfield(md, 'fieldname', 'smb.outputFreq', 'NaN', 1, 'Inf', 1, '>', 0, '<', 10 * 365)  #10 years max
+        md = checkfield(md, 'fieldname', 'smb.InitDensityScaling', 'NaN', 1, 'Inf', 1, '> = ', 0, '< = ', 1)
+        md = checkfield(md, 'fieldname', 'smb.ThermoDeltaTScaling', 'NaN', 1, 'Inf', 1, '> = ', 0, '< = ', 1)
+        md = checkfield(md, 'fieldname', 'smb.adThresh', 'NaN', 1, 'Inf', 1, '>=', 0)
+        md = checkfield(md, 'fieldname', 'smb.teThresh', 'NaN', 1, 'Inf',1,'>=',0)
+        
+        md = checkfield(md, 'fieldname', 'smb.aValue', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '>=', 0, '<=', 1)
+        if isinstance(self.aIdx, (list, type(np.array([1, 2])))) and (self.aIdx == [1, 2] or (1 in self.aIdx and 2 in self.aIdx)):
+            md = checkfield(md, 'fieldname', 'smb.aSnow', 'NaN', 1, 'Inf', 1, '> = ', .64, '< = ', .89)
+            md = checkfield(md, 'fieldname', 'smb.aIce', 'NaN', 1, 'Inf', 1, '> = ', .27, '< = ', .58)
+            if self.aIdx == 1:
+                md = checkfield(md,'fieldname','smb.szaValue','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<=',90)
+                md = checkfield(md,'fieldname','smb.cotValue','timeseries',1,'NaN',1,'Inf',1,'>=',0)
+                md = checkfield(md,'fieldname','smb.ccsnowValue','timeseries',1,'NaN',1,'Inf',1,'>=',0)
+                md = checkfield(md,'fieldname','smb.cciceValue','timeseries',1,'NaN',1,'Inf',1,'>=',0)
+        elif self.aIdx == 3:
+            md = checkfield(md, 'fieldname', 'smb.cldFrac', 'NaN', 1, 'Inf', 1, '> = ', 0, '< = ', 1)
+        elif self.aIdx == 4:
+            md = checkfield(md, 'fieldname', 'smb.t0wet', 'NaN', 1, 'Inf', 1, '> = ', 15, '< = ', 21.9)
+            md = checkfield(md, 'fieldname', 'smb.t0dry', 'NaN', 1, 'Inf', 1, '> = ', 30, '< = ', 30)
+            md = checkfield(md, 'fieldname', 'smb.K', 'NaN', 1, 'Inf', 1, '> = ', 7, '< = ', 7)
+
+        # Check zTop is < local thickness
+        he = np.sum(md.geometry.thickness[md.mesh.elements - 1], axis=1) / np.size(md.mesh.elements, 1)
+        if np.any(he < self.zTop):
+            raise IOError('SMBgemb consistency check error: zTop should be smaller than local ice thickness')
+        md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1])
+        md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'smb.requested_outputs', 'stringrow', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):    # {{{
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 8, 'format', 'Integer')
+
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isgraingrowth', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isalbedo', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isshortwave', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isthermal', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isaccumulation', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'ismelt', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isdensification', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isturbulentflux', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isconstrainsurfaceT', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isdeltaLWup','format','Boolean')
+
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Ta', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'V', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'dswrf', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'dswdiffrf', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'dlwrf', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'P', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'eAir', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'pAir', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
+
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Tmean', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'C', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Vmean', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Tz', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Vz', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'zTop', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'dzTop', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'dzMin', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'zY', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'zMax', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'zMin', 'format', 'DoubleMat', 'mattype', 2)
+
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'aIdx', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'eIdx', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'tcIdx', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'swIdx', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'denIdx', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'dsnowIdx', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'InitDensityScaling', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'ThermoDeltaTScaling', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'outputFreq', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'aSnow', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'aIce', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'cldFrac', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 't0wet', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 't0dry', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'K', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'adThresh', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'teThresh', 'format', 'Double')
+
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'aValue', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'teValue', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
+        WriteData(fid,prefix,'object',self,'class','smb','fieldname','dulwrfValue','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts)
+        WriteData(fid,prefix,'object',self,'class','smb','fieldname','szaValue','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts)
+        WriteData(fid,prefix,'object',self,'class','smb','fieldname','cotValue','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts)
+        WriteData(fid,prefix,'object',self,'class','smb','fieldname','ccsnowValue','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts)
+        WriteData(fid,prefix,'object',self,'class','smb','fieldname','cciceValue','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts)
+
+        #snow properties init
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Dzini', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Dini', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Reini', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Gdnini', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Gspini', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'ECini', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Wini', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Aini', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Adiffini', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Tini', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Sizeini', 'format', 'IntMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer')
+        # Figure out dt from forcings
+        if (np.any(self.P[-1] - self.Ta[-1] != 0) | np.any(self.V[-1] - self.Ta[-1] != 0) | np.any(self.dswrf[-1] - self.Ta[-1] != 0) | np.any(self.dlwrf[-1] - self.Ta[-1] != 0) | np.any(self.eAir[-1] - self.Ta[-1] != 0) | np.any(self.pAir[-1] - self.Ta[-1] != 0)):
+            raise IOError('All GEMB forcings (Ta, P, V, dswrf, dlwrf, eAir, pAir) must have the same time steps in the final row!')
+
+        if ((np.ndim(self.teValue)>1) & np.any(self.teValue[-1] - self.Ta[-1] != 0)):
+            raise IOError('If GEMB forcing teValue is transient, it must have the same time steps as input Ta in the final row!')
+        if ((np.ndim(self.dswdiffrf)>1) & np.any(self.dswdiffrf[-1] - self.Ta[-1] != 0)):
+            raise IOError('If GEMB forcing dswdiffrf is transient, it must have the same time steps as input Ta in the final row!')
+        if ((np.ndim(self.aValue)>1) & np.any(self.aValue[-1] - self.Ta[-1] != 0)):
+            raise IOError('If GEMB forcing aValue is transient, it must have the same time steps as input Ta in the final row!')
+        if ((np.ndim(self.dulwrfValue)>1) & np.any(self.dulwrfValue[-1] - self.Ta[-1] != 0)):
+            raise IOError('If GEMB forcing dulwrfValue is transient, it must have the same time steps as input Ta in the final row!')
+        if ((np.ndim(self.szaValue)>1) & np.any(self.szaValue[-1] - self.Ta[-1] != 0)):
+            raise IOError('If GEMB forcing szaValue is transient, it must have the same time steps as input Ta in the final row!')
+        if ((np.ndim(self.cotValue)>1) & np.any(self.cotValue[-1] - self.Ta[-1] != 0)):
+            raise IOError('If GEMB forcing cotValue is transient, it must have the same time steps as input Ta in the final row!')
+        if ((np.ndim(self.ccsnowValue)>1) & np.any(self.ccsnowValue[-1] - self.Ta[-1] != 0)):
+            raise IOError('If GEMB forcing ccsnowValue is transient, it must have the same time steps as input Ta in the final row!')
+        if ((np.ndim(self.cciceValue)>1) & np.any(self.cciceValue[-1] - self.Ta[-1] != 0)):
+            raise IOError('If GEMB forcing cciceValue is transient, it must have the same time steps as input Ta in the final row!')
+
+        time = self.Ta[-1]  # Assume all forcings are on the same time step
+        dtime = np.diff(time, n=1, axis=0)
+        dt = min(dtime)
+
+        WriteData(fid, prefix, 'data', dt, 'name', 'md.smb.dt', 'format', 'Double', 'scale', yts)
+
+        # Check if smb_dt goes evenly into transient core time step
+        if (md.timestepping.time_step % dt >= 1e-10):
+            raise IOError('smb_dt/dt = {}. The number of SMB time steps in one transient core time step has to be an an integer'.format(md.timestepping.time_step / dt))
+
+        # Process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgradients.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgradients.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgradients.m	(revision 27955)
@@ -0,0 +1,96 @@
+%SMBgradients Class definition
+%
+%   Usage:
+%      SMBgradients=SMBgradients();
+
+classdef SMBgradients
+	properties (SetAccess=public)
+		href              = NaN;
+		smbref            = NaN;
+		b_pos             = NaN;
+		b_neg             = NaN;
+		steps_per_step    = 1;
+		averaging         = 0;
+		requested_outputs = {};
+	end
+	methods
+		function self = SMBgradients(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+			%Nothing for now
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'SmbMassBalance'};
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			%Nothing done for now
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%output default:
+			self.requested_outputs={'default'};
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.href','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.smbref','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.b_pos','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.b_neg','timeseries',1,'NaN',1,'Inf',1);
+			end
+			md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]);
+			md = checkfield(md,'fieldname','smb.averaging','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+
+			disp(sprintf('\n   SMB gradients parameters:'));
+			fielddisplay(self,'href',' reference elevation from which deviation is used to calculate SMB adjustment in smb gradients method [m]');
+			fielddisplay(self,'smbref',' reference smb from which deviation is calculated in smb gradients method [mm/yr water equiv]');
+			fielddisplay(self,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated');
+			fielddisplay(self,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated');
+			fielddisplay(self, 'steps_per_step', 'number of smb steps per time step');
+			fielddisplay(self, 'averaging', 'averaging methods from short to long steps');
+			disp(sprintf('%51s  0: Arithmetic (default)',' '));
+			disp(sprintf('%51s  1: Geometric',' '));
+			disp(sprintf('%51s  2: Harmonic',' '));
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',6,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','href','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts, ...
+				  'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer');
+			WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer');
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgradients.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgradients.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgradients.py	(revision 27955)
@@ -0,0 +1,97 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class SMBgradients(object):
+    """
+    SMBgradients Class definition
+
+       Usage:
+          SMBgradients = SMBgradients();
+    """
+
+    def __init__(self):  # {{{
+        self.href = float('NaN')
+        self.smbref = float('NaN')
+        self.b_pos = float('NaN')
+        self.b_neg = float('NaN')
+        self.steps_per_step = 1
+        self.averaging = 0
+        self.requested_outputs = []
+
+        # Set defaults
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = "   surface forcings parameters:"
+
+        string = "%s\n%s" % (string, fielddisplay(self, 'issmbgradients', 'is smb gradients method activated (0 or 1, default is 0)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'href', ' reference elevation from which deviation is used to calculate SMB adjustment in smb gradients method'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'smbref', ' reference smb from which deviation is calculated in smb gradients method'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'b_pos', ' slope of hs - smb regression line for accumulation regime required if smb gradients is activated'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'b_neg', ' slope of hs - smb regression line for ablation regime required if smb gradients is activated'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps'))
+        string = "%s\n\t\t%s" % (string, '0: Arithmetic (default)')
+        string = "%s\n\t\t%s" % (string, '1: Geometric')
+        string = "%s\n\t\t%s" % (string, '2: Harmonic')
+        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+
+        return string
+    # }}}
+
+    def extrude(self, md):  # {{{
+        #Nothing for now
+        return self
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['SmbMassBalance']
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Output default
+        self.requested_outputs = ['default']
+        return self
+    # }}}
+
+    def initialize(self, md):  # {{{
+        #Nothing for now
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):    # {{{
+        if 'MasstransportAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'smb.href', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.smbref', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.b_pos', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.b_neg', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+
+        md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1])
+        md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):    # {{{
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 6, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'href', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'smbref', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'b_pos', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'b_neg', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer')
+
+        #process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
+
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgradientscomponents.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgradientscomponents.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgradientscomponents.m	(revision 27955)
@@ -0,0 +1,103 @@
+%SMBgradientscomponents Class definition
+%
+%   Usage:
+%      SMBgradientscomponents=SMBgradientscomponents();
+
+classdef SMBgradientscomponents
+	properties (SetAccess=public)
+
+		accuref           = NaN;
+		accualti          = NaN;
+		accugrad          = NaN;
+		runoffref         = NaN;
+		runoffalti        = NaN;
+		runoffgrad        = NaN;
+		steps_per_step    = 1;
+		averaging         = 0;
+		requested_outputs = {};
+	end
+	methods
+		function self=SMBgradientscomponents(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+
+		function self = extrude(self,md) % {{{
+
+		%Nothing for now
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'SmbMassBalance'};
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+		%Nothing done for now
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%output default:
+			self.requested_outputs={'default'};
+
+		end % }}}
+		function	md=checkconsistency(self,md,solution,analyses) % {{{
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.accuref','singletimeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.accualti','numel',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.accugrad','singletimeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.runoffref','singletimeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.runoffalti','numel',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.runoffgrad','singletimeseries',1,'NaN',1,'Inf',1);
+			end
+			md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]);
+			md = checkfield(md,'fieldname','smb.averaging','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1);
+		end % }}}
+
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+			disp(sprintf('\n   SMB gradients components parameters:'));
+			fielddisplay(self,'accuref',' reference value of the accumulation');
+			fielddisplay(self,'accualti',' Altitude at which the accumulation is equal to the reference value');
+			fielddisplay(self,'accugrad',' Gradient of the variation of the accumulation (0 for uniform accumulation)');
+			fielddisplay(self,'runoffref',' reference value of the runoff m w.e. y-1 (temperature times ddf)');
+			fielddisplay(self,'runoffalti',' Altitude at which the runoff is equal to the reference value');
+			fielddisplay(self,'runoffgrad',' Gradient of the variation of the runoff (0 for uniform runoff) m w.e. m-1 y-1 (lpase rate times ddf)');
+			fielddisplay(self, 'steps_per_step', 'number of smb steps per time step');
+			fielddisplay(self, 'averaging', 'averaging methods from short to long steps');
+			disp(sprintf('%51s  0: Arithmetic (default)',' '));
+			disp(sprintf('%51s  1: Geometric',' '));
+			disp(sprintf('%51s  2: Harmonic',' '));
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+
+		end % }}}
+		function marshall(self,prefix,md,fid)    % {{{
+
+			WriteData(fid,prefix,'name','md.smb.model','data',11,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','accuref','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1./md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','accualti','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','accugrad','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1./md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoffref','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1./md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoffalti','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoffgrad','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1./md.constants.yts);
+			WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer');
+			WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer');
+
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgradientscomponents.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgradientscomponents.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgradientscomponents.py	(revision 27955)
@@ -0,0 +1,97 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class SMBgradientscomponents(object):
+    """
+    SMBgradients Class definition
+
+       Usage:
+          SMBgradients = SMBgradientscomponents();
+    For now it has accumulation, runoff ans retention which could be aither refreezing and/or evaporation
+    """
+
+    def __init__(self):  # {{{
+        self.accuref = float('NaN')
+        self.accualti = float('NaN')
+        self.accugrad = float('NaN')
+        self.runoffref = float('NaN')
+        self.runoffalti = float('NaN')
+        self.runoffgrad = float('NaN')
+        self.steps_per_step = 1
+        self.averaging = 0
+        self.requested_outputs = ['default']
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = "   surface forcings parameters:"
+        string = "%s\n%s" % (string, fielddisplay(self, 'accuref', ' reference value of the accumulation'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'accualti', ' Altitude at which the accumulation is equal to the reference value'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'accugrad', ' Gradient of the variation of the accumulation (0 for uniform accumulation)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'runoffref', ' reference value of the runoff m w.e. y-1 (temperature times ddf)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'runoffalti', ' Altitude at which the runoff is equal to the reference value'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'runoffgrad', ' Gradient of the variation of the runoff (0 for uniform runoff) m w.e. m-1 y-1 (lapse rate times ddf)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps'))
+        string = "%s\n\t\t%s" % (string, '0: Arithmetic (default)')
+        string = "%s\n\t\t%s" % (string, '1: Geometric')
+        string = "%s\n\t\t%s" % (string, '2: Harmonic')
+        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+
+        return string
+    # }}}
+
+    def extrude(self, md):  # {{{
+        #Nothing for now
+        return self
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        list = ['SmbMassBalance']
+        if self.steps_per_step > 1:
+            list.extend(['SmbMassBalanceSubstep'])
+        return list
+    # }}}
+
+    def initialize(self, md):  # {{{
+        #Nothing for now
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if 'MasstransportAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'smb.accualti', 'numel', [1], 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.accuref', 'singletimeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.accugrad', 'singletimeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.runoffalti', 'numel', [1], 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.runoffref', 'singletimeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.runoffgrad', 'singletimeseries', 1, 'NaN', 1, 'Inf', 1)
+
+        md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1])
+        md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):    # {{{
+        yts = md.constants.yts
+        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 11, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accuref', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', yts, 'scale', 1. / yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accugrad', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', yts, 'scale', 1. / yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accualti', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoffref', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', yts, 'scale', 1. / yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoffgrad', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', yts, 'scale', 1. / yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoffalti', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer')
+
+        #process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
+
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgradientsela.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgradientsela.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgradientsela.m	(revision 27955)
@@ -0,0 +1,102 @@
+%SMBgradientsela Class definition
+%
+%   Usage:
+%      SMBgradientsela=SMBgradientsela();
+
+classdef SMBgradientsela
+	properties (SetAccess=public)
+		ela               = NaN;
+		b_pos             = NaN;
+		b_neg             = NaN;
+		b_max             = NaN;
+		b_min             = NaN;
+		steps_per_step    = 1;
+		averaging         = 0;
+		requested_outputs = {};
+	end
+	methods
+		function self = SMBgradientsela(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+		%Nothing for now
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'SmbMassBalance'};
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+		%Nothing done for now
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%output default:
+			self.b_max=9999;
+			self.b_min=-9999;
+			self.requested_outputs={'default'};
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.ela','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.b_pos','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.b_neg','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.b_max','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.b_min','timeseries',1,'NaN',1,'Inf',1);
+			end
+			md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]);
+			md = checkfield(md,'fieldname','smb.averaging','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+
+			disp(sprintf('\n   SMB gradients ela parameters:'));
+			fielddisplay(self,'ela',' equilibrium line altitude from which deviation is used to calculate smb using the smb gradients ela method [m a.s.l.]');
+			fielddisplay(self,'b_pos',' vertical smb gradient (dB/dz) above ela');
+			fielddisplay(self,'b_neg',' vertical smb gradient (dB/dz) below ela');
+			fielddisplay(self,'b_max',' upper cap on smb rate, default: 9999 (no cap) [m ice eq./yr] ');
+			fielddisplay(self,'b_min',' lower cap on smb rate, default: -9999 (no cap) [m ice eq./yr]');
+			fielddisplay(self, 'steps_per_step', 'number of smb steps per time step');
+			fielddisplay(self, 'averaging', 'averaging methods from short to long steps');
+			disp(sprintf('%51s  0: Arithmetic (default)',' '));
+			disp(sprintf('%51s  1: Geometric',' '));
+			disp(sprintf('%51s  2: Harmonic',' '));
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',9,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','ela','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','b_max','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','b_min','format','DoubleMat','mattype',1,'scale',1./yts, ...
+				  'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer');
+			WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer');
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgradientsela.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgradientsela.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBgradientsela.py	(revision 27955)
@@ -0,0 +1,103 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class SMBgradientsela(object):
+    """SMBGRADIENTSELA class definition
+
+    Usage:
+        SMBgradientsela = SMBgradientsela()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.ela = float('NaN')
+        self.b_pos = float('NaN')
+        self.b_neg = float('NaN')
+        self.b_max = float('NaN')
+        self.b_min = float('NaN')
+        self.steps_per_step = 1
+        self.averaging = 0
+        self.requested_outputs = []
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            error('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = "   surface forcings parameters:"
+        string += '\n   SMB gradients ela parameters:'
+
+        string = "%s\n%s" % (string, fielddisplay(self, 'ela', ' equilibrium line altitude from which deviation is used to calculate smb using the smb gradients ela method [m a.s.l.]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'b_pos', ' vertical smb gradient (dB/dz) above ela'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'b_neg', ' vertical smb gradient (dB/dz) below ela'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'b_max', ' upper cap on smb rate, default: 9999 (no cap) [m ice eq./yr]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'b_min', ' lower cap on smb rate, default: -9999 (no cap) [m ice eq./yr]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps'))
+        string = "%s\n\t\t%s" % (string, '0: Arithmetic (default)')
+        string = "%s\n\t\t%s" % (string, '1: Geometric')
+        string = "%s\n\t\t%s" % (string, '2: Harmonic')
+
+        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        return string
+    # }}}
+
+    def extrude(self, md):  # {{{
+        #Nothing for now
+        return self
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['SmbMassBalance']
+    # }}}
+
+    def initialize(self, md):  # {{{
+        #Nothing for now
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.b_max = 9999
+        self.b_min = -9999
+        self.requested_outputs = ['default']
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):    # {{{
+        if 'MasstransportAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'smb.ela', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.b_pos', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.b_neg', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.b_max', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.b_min', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+
+        md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1])
+        md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'smb.requested_outputs', 'stringrow', 1)
+        return md
+    # }}}
+    def marshall(self, prefix, md, fid):    # {{{
+
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 9, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'ela', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'b_pos', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'b_neg', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'b_max', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'b_min', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer')
+
+        #process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
+
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBhenning.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBhenning.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBhenning.m	(revision 27955)
@@ -0,0 +1,89 @@
+%SMBhenning Class definition
+%
+%   Usage:
+%      SMBhenning=SMBhenning();
+
+classdef SMBhenning
+	properties (SetAccess=public)
+		smbref = NaN;
+		steps_per_step=1;
+		averaging=0;
+		requested_outputs      = {};
+	end
+	methods
+		function self = SMBhenning(varargin) % {{{
+			switch nargin
+				case 0
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('SMBhenning');
+						list2 = fieldnames(inputstruct);
+						for i=1:length(list1)
+							fieldname = list1{i};
+							if ismember(fieldname,list2),
+								self.(fieldname) = inputstruct.(fieldname);
+							end
+						end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+			self.smbref=project3d(md,'vector',self.smbref,'type','node');
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'SmbMassBalance'};
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.smbref)
+				self.smbref=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.smbref specified: values set as zero');
+			end
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.smbref','timeseries',1,'NaN',1,'Inf',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.smbref','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			end
+			md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]);
+			md = checkfield(md,'fieldname','smb.averaging','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+			fielddisplay(self,'smbref','reference smb from which deviation is calculated [m/yr ice eq]');
+			fielddisplay(self, 'steps_per_step', 'number of smb steps per time step');
+			fielddisplay(self, 'averaging', 'averaging methods from short to long steps');
+			disp(sprintf('%51s  0: Arithmetic (default)',' '));
+			disp(sprintf('%51s  1: Geometric',' '));
+			disp(sprintf('%51s  2: Harmonic',' '));
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',7,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','steps_per_step','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','averaging','format','Integer');
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBhenning.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBhenning.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBhenning.py	(revision 27955)
@@ -0,0 +1,92 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class SMBforcing(object):
+    """SMBhenning class definition
+
+    Usage:
+        SMBhenning = SMBhenning()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.smbref = np.nan
+        self.steps_per_step = 1
+        self.averaging = 0
+        self.requested_outputs = []
+
+        nargs = len(args)
+        if nargs == 0:
+            self.setdefaultparameters()
+        elif nargs == 1:
+            # TODO: Replace the following with constructor
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   surface forcings parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'mass_balance', 'surface mass balance [m/yr ice eq]'))
+        s += '{}\n'.format(fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'))
+        s += '{}\n'.format(fielddisplay(self, 'averaging', 'averaging methods from short to long steps'))
+        s += '\t\t{}\n'.format('0: Arithmetic (default)')
+        s += '\t\t{}\n'.format('1: Geometric')
+        s += '\t\t{}\n'.format('2: Harmonic')
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.smbref = project3d(md, 'vector', self.smbref, 'type', 'node')
+        return self
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['SmbMassBalance']
+    # }}}
+
+    def initialize(self, md):  # {{{
+        if np.all(np.isnan(self.smbref)):
+            self.smbref = np.zeros((md.mesh.numberofvertices))
+            print("      no smb.smbref specified: values set as zero")
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if solution == 'TransientSolution' and not md.transient.issmb:
+            return
+        if 'MasstransportAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'smb.mass_balance', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        if 'BalancethicknessAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'smb.mass_balance', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1])
+        md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'smb.requested_outputs', 'stringrow', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 1, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'mass_balance', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1 / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer')
+
+        #process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
+    # }}}
+
+    def setdefaultparameters(self):  #{{{
+        self.requested_outputs = ['default']
+        return self
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBmeltcomponents.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBmeltcomponents.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBmeltcomponents.m	(revision 27955)
@@ -0,0 +1,116 @@
+%SMBmeltcomponents Class definition
+%
+%   Usage:
+%      SMBmeltcomponents=SMBmeltcomponents();
+
+classdef SMBmeltcomponents
+	properties (SetAccess=public)
+		accumulation = NaN;
+		evaporation = NaN;
+		melt = NaN;
+		refreeze = NaN;
+		steps_per_step = 1;
+		averaging = 0;
+		requested_outputs= {};
+	end
+	methods
+		function self = SMBmeltcomponents(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters with melt (SMB=accumulation-evaporation-melt+refreeze) :'));
+			fielddisplay(self,'accumulation','accumulated snow [m/yr ice eq]');
+			fielddisplay(self,'evaporation','amount of ice lost to evaporative processes [m/yr ice eq]');
+			fielddisplay(self,'melt','amount of ice melt in ice column [m/yr ice eq]');
+			fielddisplay(self,'refreeze','amount of ice melt refrozen in ice column [m/yr ice eq]');
+			fielddisplay(self, 'steps_per_step', 'number of smb steps per time step');
+			fielddisplay(self, 'averaging', 'averaging methods from short to long steps');
+			disp(sprintf('%51s  0: Arithmetic (default)',' '));
+			disp(sprintf('%51s  1: Geometric',' '));
+			disp(sprintf('%51s  2: Harmonic',' '));
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+			self.accumulation=project3d(md,'vector',self.accumulation,'type','node');
+			self.evaporation=project3d(md,'vector',self.evaporation,'type','node');
+			self.melt=project3d(md,'vector',self.melt,'type','node');
+			self.refreeze=project3d(md,'vector',self.refreeze,'type','node');
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'SmbMassBalance'};
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.accumulation)
+				self.accumulation=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.accumulation specified: values set as zero');
+			end
+			if isnan(self.evaporation)
+				self.evaporation=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.evaporation specified: values set as zero');
+			end
+			if isnan(self.refreeze)
+				self.refreeze=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.refreeze specified: values set as zero');
+			end
+			if isnan(self.melt)
+				self.melt=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.melt specified: values set as zero');
+			end
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.refreeze','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.melt','timeseries',1,'NaN',1,'Inf',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.refreeze','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.melt','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			end
+			md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]);
+			md = checkfield(md,'fieldname','smb.averaging','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',3,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','melt','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','refreeze','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer');
+			WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer');
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%output default:
+			self.requested_outputs={'default'};
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBmeltcomponents.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBmeltcomponents.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBmeltcomponents.py	(revision 27955)
@@ -0,0 +1,120 @@
+import numpy as np
+
+from checkfield import *
+from fielddisplay import fielddisplay
+from project3d import *
+from WriteData import *
+
+
+class SMBmeltcomponents(object):
+    """SMBMELTCOMPONENTS class definition
+
+    Usage:
+        SMBmeltcomponents = SMBmeltcomponents();
+    """
+
+    def __init__(self, *args):  # {{{
+        self.accumulation      = np.nan
+        self.evaporation       = np.nan
+        self.melt              = np.nan
+        self.refreeze          = np.nan
+        self.steps_per_step    = 1
+        self.averaging         = 0
+        self.requested_outputs = []
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            error('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   surface forcings parameters with melt (SMB = accumulation-evaporation-melt+refreeze) :\n'
+        s += '{}\n'.format(fielddisplay(self, 'accumulation', 'accumulated snow [m/yr ice eq]'))
+        s += '{}\n'.format(fielddisplay(self, 'evaporation', 'mount of ice lost to evaporative processes [m/yr ice eq]'))
+        s += '{}\n'.format(fielddisplay(self, 'melt', 'amount of ice melt in the ice column [m/yr ice eq]'))
+        s += '{}\n'.format(fielddisplay(self, 'refreeze', 'amount of ice melt refrozen in the ice column [m/yr ice eq]'))
+        s += '{}\n'.format(fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'))
+        s += '{}\n'.format(fielddisplay(self, 'averaging', 'averaging methods from short to long steps'))
+        s += '\t\t{}\n'.format('0: Arithmetic (default)')
+        s += '\t\t{}\n'.format('1: Geometric')
+        s += '\t\t{}\n'.format('2: Harmonic')
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.accumulation = project3d(md, 'vector', self.accumulation, 'type', 'node')
+        self.evaporation = project3d(md, 'vector', self.evaporation, 'type', 'node')
+        self.melt = project3d(md, 'vector', self.melt, 'type', 'node')
+        self.refreeze = project3d(md, 'vector', self.refreeze, 'type', 'node')
+        return self
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['SmbMassBalance']
+    # }}}
+
+    def initialize(self, md):  # {{{
+        if np.all(np.isnan(self.accumulation)):
+            self.accumulation = np.zeros((md.mesh.numberofvertices))
+            print("      no smb.accumulation specified: values set as zero")
+
+        if np.all(np.isnan(self.evaporation)):
+            self.evaporation = np.zeros((md.mesh.numberofvertices))
+            print("      no smb.evaporation specified: values set as zero")
+
+        if np.all(np.isnan(self.refreeze)):
+            self.refreeze = np.zeros((md.mesh.numberofvertices))
+            print("      no smb.refreeze specified: values set as zero")
+
+        if np.all(np.isnan(self.melt)):
+            self.melt = np.zeros((md.mesh.numberofvertices))
+            print("      no smb.melt specified: values set as zero")
+
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if 'MasstransportAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'smb.accumulation', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.evaporation', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.refreeze', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.melt', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+
+        if 'BalancethicknessAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'smb.accumulation', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.evaporation', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.refreeze', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.melt', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+
+        md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1])
+        md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'smb.requested_outputs', 'stringrow', 1)
+        return md
+    # }}}
+    def marshall(self, prefix, md, fid):  # {{{
+
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 3, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accumulation', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1 / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'evaporation', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1 / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'melt', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1 / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'refreeze', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1 / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer')
+
+        #process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.requested_outputs = ['default']
+        return self
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBpdd.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBpdd.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBpdd.m	(revision 27955)
@@ -0,0 +1,221 @@
+%SMBpdd Class definition
+%
+%   Usage:
+%      SMBpdd=SMBpdd();
+
+classdef SMBpdd
+	properties (SetAccess=public)
+		precipitation             = NaN;
+		monthlytemperatures       = NaN;
+		desfac                    = 0;
+		s0p                       = NaN;
+		s0t                       = NaN;
+		rlaps                     = 0;
+		rlapslgm                  = 0;
+		Pfac                      = NaN;
+		Tdiff                     = NaN;
+		sealev                    = NaN;
+		isdelta18o                = 0;
+		ismungsm                  = 0;
+		issetpddfac               = 0;
+		delta18o                  = NaN;
+		delta18o_surface          = NaN;
+		temperatures_presentday   = NaN;
+		temperatures_lgm          = NaN;
+		precipitations_presentday = NaN;
+		precipitations_lgm        = NaN;
+		pddfac_snow               = NaN;
+		pddfac_ice                = NaN;
+		steps_per_step            = 1;
+		averaging                 = 0;
+		requested_outputs         = {};
+	end
+	methods
+		function self = SMBpdd(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			if(self.isdelta18o==0 & self.ismungsm==0),self.precipitation=project3d(md,'vector',self.precipitation,'type','node');end
+			if(self.isdelta18o==0 & self.ismungsm==0),self.monthlytemperatures=project3d(md,'vector',self.monthlytemperatures,'type','node');end
+			if(self.isdelta18o),self.temperatures_lgm=project3d(md,'vector',self.temperatures_lgm,'type','node');end
+			if(self.isdelta18o),self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node');end
+			if(self.isdelta18o),self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node');end
+			if(self.isdelta18o),self.precipitations_lgm=project3d(md,'vector',self.precipitations_lgm,'type','node');end
+			if(self.ismungsm),self.temperatures_lgm=project3d(md,'vector',self.temperatures_lgm,'type','node');end
+			if(self.ismungsm),self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node');end
+			if(self.ismungsm),self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node');end
+			if(self.ismungsm),self.precipitations_lgm=project3d(md,'vector',self.precipitations_lgm,'type','node');end
+			self.s0p=project3d(md,'vector',self.s0p,'type','node');
+			self.s0t=project3d(md,'vector',self.s0t,'type','node');
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'SmbMassBalance'};
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.s0p),
+				self.s0p=zeros(md.mesh.numberofvertices,1);
+				disp('      no SMBpdd.s0p specified: values set as zero');
+			end
+			if isnan(self.s0t),
+				self.s0t=zeros(md.mesh.numberofvertices,1);
+				disp('      no SMBpdd.s0t specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		  self.isdelta18o = 0;
+		  self.ismungsm   = 0;
+		  self.desfac     = 0.5;
+		  self.rlaps      = 6.5;
+		  self.rlapslgm   = 6.5;
+		  self.issetpddfac = 0;
+		  self.requested_outputs={'default'};
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',1);
+				md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',1);
+				if(self.isdelta18o==0 & self.ismungsm==0)
+					md = checkfield(md,'fieldname','smb.monthlytemperatures','timeseries',1,'NaN',1,'Inf',1);
+					md = checkfield(md,'fieldname','smb.precipitation','timeseries',1,'NaN',1,'Inf',1);
+				elseif(self.isdelta18o==1)
+					md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.delta18o_surface','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices 12],'NaN',1,'Inf',1);
+					md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices 12],'NaN',1,'Inf',1);
+					md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices 12],'NaN',1,'Inf',1);
+					md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices 12],'NaN',1,'Inf',1);
+					md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.sealev','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+				elseif(self.ismungsm==1)
+					md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices 12],'NaN',1,'Inf',1);
+					md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices 12],'NaN',1,'Inf',1);
+					md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices 12],'NaN',1,'Inf',1);
+					md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices 12],'NaN',1,'Inf',1);
+					md = checkfield(md,'fieldname','smb.Pfac','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.sealev','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+				end
+				if(self.issetpddfac==1)
+					md = checkfield(md,'fieldname','smb.pddfac_snow','>=',0,'NaN',1,'Inf',1);
+					md = checkfield(md,'fieldname','smb.pddfac_ice','>=',0,'NaN',1,'Inf',1);
+				end
+			end
+			md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]);
+			md = checkfield(md,'fieldname','smb.averaging','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+
+			disp(sprintf('\n   PDD and deltaO18 parameters:'));
+			fielddisplay(self,'isdelta18o','is temperature and precipitation delta18o parametrisation activated (0 or 1, default is 0)');
+			fielddisplay(self,'ismungsm','is temperature and precipitation mungsm parametrisation activated (0 or 1, default is 0)');
+			fielddisplay(self,'issetpddfac','is user passing in defined pdd factors (0 or 1, default is 0)');
+			fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]');
+			fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]');
+			fielddisplay(self,'s0t','should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]');
+			fielddisplay(self,'rlaps','present day lapse rate [degree/km]');
+			fielddisplay(self,'rlapslgm','LGM lapse rate [degree/km]');
+			if(self.isdelta18o==0 & self.ismungsm==0)
+				fielddisplay(self,'monthlytemperatures',['monthly surface temperatures [K], required if pdd is activated and delta18o not activated']);
+				fielddisplay(self,'precipitation',['monthly surface precipitation [m/yr water eq], required if pdd is activated and delta18o or mungsm not activated']);
+			elseif(self.isdelta18o==1)
+				fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and delta18o activated');
+				fielddisplay(self,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated');
+				fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated');
+				fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated');
+				fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o/mungsm is activated');
+				fielddisplay(self,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o/mungsm is activated');
+				fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated');
+				fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated');
+			elseif(self.ismungsm==1)
+				fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated');
+				fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated');
+				fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o/mungsm is activated');
+				fielddisplay(self,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o/mungsm is activated');
+				fielddisplay(self,'Pfac','time interpolation parameter for precipitation, 1D(year), required if mungsm is activated');
+				fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated');
+				fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated');
+			end
+			if(self.issetpddfac==1)
+				fielddisplay(self,'pddfac_snow','Pdd factor for snow for all the domain [mm ice equiv/day/degree C]');
+				fielddisplay(self,'pddfac_ice','Pdd factor for ice for all the domain [mm ice equiv/day/degree C]');
+			end
+			fielddisplay(self, 'steps_per_step', 'number of smb steps per time step');
+
+			fielddisplay(self, 'averaging', 'averaging methods from short to long steps');
+			disp(sprintf('%51s  0: Arithmetic (default)',' '));
+			disp(sprintf('%51s  1: Geometric',' '));
+			disp(sprintf('%51s  2: Harmonic',' '));
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',4,'format','Integer');
+
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isdelta18o','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','issetpddfac','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','ismungsm','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','desfac','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlaps','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlapslgm','format','Double');
+			WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer');
+			WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer');
+			if(self.isdelta18o==0 & self.ismungsm==0)
+				%WriteData(fid,prefix,'object',self,'class','smb','fieldname','monthlytemperatures','format','DoubleMat','mattype',1);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			elseif self.isdelta18o
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','delta18o_surface','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+			elseif self.ismungsm
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','Pfac','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+			end
+			if self.issetpddfac==1
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','pddfac_snow','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','pddfac_ice','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			end
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBpdd.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBpdd.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBpdd.py	(revision 27955)
@@ -0,0 +1,234 @@
+import numpy as np
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+from project3d import project3d
+
+
+class SMBpdd(object):
+    """
+    SMBpdd Class definition
+
+       Usage:
+          SMBpdd = SMBpdd()
+    """
+
+    def __init__(self):  # {{{
+        self.precipitation = float('NaN')
+        self.monthlytemperatures = float('NaN')
+        self.desfac = 0.
+        self.s0p = float('NaN')
+        self.s0t = float('NaN')
+        self.rlaps = 0.
+        self.rlapslgm = 0.
+        self.Pfac = float('NaN')
+        self.Tdiff = float('NaN')
+        self.sealev = float('NaN')
+        self.isdelta18o = 0
+        self.ismungsm = 0
+        self.issetpddfac = 0
+        self.delta18o = float('NaN')
+        self.delta18o_surface = float('NaN')
+        self.temperatures_presentday = float('NaN')
+        self.temperatures_lgm = float('NaN')
+        self.precipitations_presentday = float('NaN')
+        self.precipitations_lgm = float('NaN')
+        self.pddfac_snow = float('NaN')
+        self.pddfac_ice = float('NaN')
+        self.steps_per_step = 1
+        self.averaging = 0
+        self.requested_outputs = []
+
+        # Set defaults
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = "   surface forcings parameters:"
+
+        string = "%s\n%s" % (string, fielddisplay(self, 'isdelta18o', 'is temperature and precipitation delta18o parametrisation activated (0 or 1, default is 0)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'ismungsm', 'is temperature and precipitation mungsm parametrisation activated (0 or 1, default is 0)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'issetpddfac', 'is user passing in defined pdd factors (0 or 1, default is 0)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'desfac', 'desertification elevation factor (between 0 and 1, default is 0.5) [m]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 's0p', 'should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 's0t', 'should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'rlaps', 'present day lapse rate [degree/km]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'rlapslgm', 'LGM lapse rate [degree/km]'))
+        if not (self.isdelta18o and self.ismungsm):
+            string = "%s\n%s" % (string, fielddisplay(self, 'monthlytemperatures', 'monthly surface temperatures [K], required if pdd is activated and delta18o not activated'))
+            string = "%s\n%s" % (string, fielddisplay(self, 'precipitation', 'monthly surface precipitation [m/yr water eq], required if pdd is activated and delta18o or mungsm not activated'))
+            if self.isdelta18o:
+                string = "%s\n%s" % (string, fielddisplay(self, 'delta18o', 'delta18o [per mil], required if pdd is activated and delta18o activated'))
+                string = "%s\n%s" % (string, fielddisplay(self, 'delta18o_surface', 'surface elevation of the delta18o site, required if pdd is activated and delta18o activated'))
+                string = "%s\n%s" % (string, fielddisplay(self, 'temperatures_presentday', 'monthly present day surface temperatures [K], required if delta18o/mungsm is activated'))
+                string = "%s\n%s" % (string, fielddisplay(self, 'temperatures_lgm', 'monthly LGM surface temperatures [K], required if delta18o or mungsm is activated'))
+                string = "%s\n%s" % (string, fielddisplay(self, 'precipitations_presentday', 'monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+                string = "%s\n%s" % (string, fielddisplay(self, 'precipitations_lgm', 'monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+                string = "%s\n%s" % (string, fielddisplay(self, 'Tdiff', 'time interpolation parameter for temperature, 1D(year), required if mungsm is activated'))
+                string = "%s\n%s" % (string, fielddisplay(self, 'sealev', 'sea level [m], 1D(year), required if mungsm is activated'))
+
+            if self.ismungsm:
+                string = "%s\n%s" % (string, fielddisplay(self, 'temperatures_presentday', 'monthly present day surface temperatures [K], required if delta18o/mungsm is activated'))
+                string = "%s\n%s" % (string, fielddisplay(self, 'temperatures_lgm', 'monthly LGM surface temperatures [K], required if delta18o or mungsm is activated'))
+                string = "%s\n%s" % (string, fielddisplay(self, 'precipitations_presentday', 'monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+                string = "%s\n%s" % (string, fielddisplay(self, 'precipitations_lgm', 'monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+                string = "%s\n%s" % (string, fielddisplay(self, 'Pfac', 'time interpolation parameter for precipitation, 1D(year), required if mungsm is activated'))
+                string = "%s\n%s" % (string, fielddisplay(self, 'Tdiff', 'time interpolation parameter for temperature, 1D(year), required if mungsm is activated'))
+                string = "%s\n%s" % (string, fielddisplay(self, 'sealev', 'sea level [m], 1D(year), required if mungsm is activated'))
+                
+        string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps'))
+        string = "%s\n\t\t%s" % (string, '0: Arithmetic (default)')
+        string = "%s\n\t\t%s" % (string, '1: Geometric')
+        string = "%s\n\t\t%s" % (string, '2: Harmonic')
+
+        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+
+        return string
+    # }}}
+
+    def extrude(self, md):  # {{{
+        if not (self.isdelta18o and self.ismungsm):
+            self.precipitation = project3d(md, 'vector', self.precipitation, 'type', 'node')
+            self.monthlytemperatures = project3d(md, 'vector', self.monthlytemperatures, 'type', 'node')
+
+        if self.isdelta18o:
+            self.temperatures_lgm = project3d(md, 'vector', self.temperatures_lgm, 'type', 'node')
+            self.temperatures_presentday = project3d(md, 'vector', self.temperatures_presentday, 'type', 'node')
+            self.precipitations_presentday = project3d(md, 'vector', self.precipitations_presentday, 'type', 'node')
+            self.precipitations_lgm = project3d(md, 'vector', self.precipitations_lgm, 'type', 'node')
+
+        if self.ismungsm:
+            self.temperatures_lgm = project3d(md, 'vector', self.temperatures_lgm, 'type', 'node')
+            self.temperatures_presentday = project3d(md, 'vector', self.temperatures_presentday, 'type', 'node')
+            self.precipitations_presentday = project3d(md, 'vector', self.precipitations_presentday, 'type', 'node')
+            self.precipitations_lgm = project3d(md, 'vector', self.precipitations_lgm, 'type', 'node')
+
+        if self.issetpddfac:
+            self.pddfac_snow = project3d(md, 'vector', self.pddfac_snow, 'type', 'node')
+        if self.issetpddfac:
+            self.pddfac_ice = project3d(md, 'vector', self.pddfac_ice, 'type', 'node')
+        self.s0p = project3d(md, 'vector', self.s0p, 'type', 'node')
+        self.s0t = project3d(md, 'vector', self.s0t, 'type', 'node')
+        return self
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['SmbMassBalance']
+    # }}}
+
+    def initialize(self, md):  # {{{
+        if np.all(np.isnan(self.s0p)):
+            self.s0p = np.zeros((md.mesh.numberofvertices))
+            print("      no SMBpdd.s0p specified: values set as zero")
+
+        if np.all(np.isnan(self.s0t)):
+            self.s0t = np.zeros((md.mesh.numberofvertices))
+            print("      no SMBpdd.s0t specified: values set as zero")
+
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        #pdd method not used in default mode
+        self.isdelta18o = 0
+        self.ismungsm = 0
+        self.desfac = 0.5
+        self.rlaps = 6.5
+        self.rlapslgm = 6.5
+        self.issetpddfac = 0
+        self.requested_outputs = ['default']
+
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):    # {{{
+
+        if 'MasstransportAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'smb.desfac', '<=', 1, 'numel', [1])
+            md = checkfield(md, 'fieldname', 'smb.s0p', '>=', 0, 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'smb.s0t', '>=', 0, 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'smb.rlaps', '>=', 0, 'numel', [1])
+            md = checkfield(md, 'fieldname', 'smb.rlapslgm', '>=', 0, 'numel', [1])
+
+            if (self.isdelta18o == 0 and self.ismungsm == 0):
+                md = checkfield(md, 'fieldname', 'smb.monthlytemperatures', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+                md = checkfield(md, 'fieldname', 'smb.precipitation', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+            elif self.isdelta18o:
+                md = checkfield(md, 'fieldname', 'smb.delta18o', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1)
+                md = checkfield(md, 'fieldname', 'smb.delta18o_surface', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1)
+                md = checkfield(md, 'fieldname', 'smb.temperatures_presentday', 'size', [md.mesh.numberofvertices, 12], 'NaN', 1, 'Inf', 1)
+                md = checkfield(md, 'fieldname', 'smb.temperatures_lgm', 'size', [md.mesh.numberofvertices, 12], 'NaN', 1, 'Inf', 1)
+                md = checkfield(md, 'fieldname', 'smb.precipitations_presentday', 'size', [md.mesh.numberofvertices, 12], 'NaN', 1, 'Inf', 1)
+                md = checkfield(md, 'fieldname', 'smb.precipitations_lgm', 'size', [md.mesh.numberofvertices, 12], 'NaN', 1, 'Inf', 1)
+                md = checkfield(md, 'fieldname', 'smb.Tdiff', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1)
+                md = checkfield(md, 'fieldname', 'smb.sealev', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1)
+            elif self.ismungsm:
+                md = checkfield(md, 'fieldname', 'smb.temperatures_presentday', 'size', [md.mesh.numberofvertices, 12], 'NaN', 1, 'Inf', 1)
+                md = checkfield(md, 'fieldname', 'smb.temperatures_lgm', 'size', [md.mesh.numberofvertices, 12], 'NaN', 1, 'Inf', 1)
+                md = checkfield(md, 'fieldname', 'smb.precipitations_presentday', 'size', [md.mesh.numberofvertices, 12], 'NaN', 1, 'Inf', 1)
+                md = checkfield(md, 'fieldname', 'smb.precipitations_lgm', 'size', [md.mesh.numberofvertices, 12], 'NaN', 1, 'Inf', 1)
+                md = checkfield(md, 'fieldname', 'smb.Pfac', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1)
+                md = checkfield(md, 'fieldname', 'smb.Tdiff', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1)
+                md = checkfield(md, 'fieldname', 'smb.sealev', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1)
+
+            if self.issetpddfac:
+                md = checkfield(md, 'fieldname', 'smb.pddfac_snow', '>=', 0, 'NaN', 1, 'Inf', 1)
+                md = checkfield(md, 'fieldname', 'smb.pddfac_ice', '>=', 0, 'NaN', 1, 'Inf', 1)
+
+        md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1])
+        md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):    # {{{
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 4, 'format', 'Integer')
+
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isdelta18o', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'ismungsm', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'issetpddfac', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'desfac', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 's0p', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 's0t', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'rlaps', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'rlapslgm', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer')
+
+        if (self.isdelta18o == 0 and self.ismungsm == 0):
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'monthlytemperatures', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'precipitation', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        elif self.isdelta18o:
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'temperatures_presentday', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'temperatures_lgm', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'precipitations_presentday', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'precipitations_lgm', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'delta18o_surface', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', md.constants.yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'delta18o', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', md.constants.yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Tdiff', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', md.constants.yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'sealev', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', md.constants.yts)
+        elif self.ismungsm:
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'temperatures_presentday', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'temperatures_lgm', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'precipitations_presentday', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'precipitations_lgm', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Pfac', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', md.constants.yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Tdiff', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', md.constants.yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'sealev', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', md.constants.yts)
+
+        if self.issetpddfac:
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'pddfac_snow', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'pddfac_ice', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+
+        #process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
+
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBpddSicopolis.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBpddSicopolis.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBpddSicopolis.m	(revision 27955)
@@ -0,0 +1,147 @@
+%SMBpddSicopolis Class definition
+%
+%   Usage:
+%      SMBpddSicopolis=SMBpddSicopolis();
+
+classdef SMBpddSicopolis
+	properties (SetAccess=public)
+
+		precipitation         = NaN;
+		monthlytemperatures   = NaN;
+		temperature_anomaly   = NaN;
+		precipitation_anomaly = NaN;
+		smb_corr              = NaN;
+		desfac                = 0;
+		s0p                   = NaN;
+		s0t                   = NaN;
+		rlaps                 = 0;
+		isfirnwarming         = 0;
+		steps_per_step        = 1
+		averaging             = 0
+		requested_outputs     = {};
+	end
+	methods
+		function self = SMBpddSicopolis(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.precipitation=project3d(md,'vector',self.precipitation,'type','node');
+			self.monthlytemperatures=project3d(md,'vector',self.monthlytemperatures,'type','node');
+			self.temperature_anomaly=project3d(md,'vector',self.temperature_anomaly,'type','node');
+			self.precipitation_anomaly=project3d(md,'vector',self.precipitation_anomaly,'type','node');
+			self.smb_corr=project3d(md,'vector',self.smb_corr,'type','node');
+			self.s0p=project3d(md,'vector',self.s0p,'type','node');
+			self.s0t=project3d(md,'vector',self.s0t,'type','node');
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'SmbMassBalance'};
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.s0p),
+				self.s0p=zeros(md.mesh.numberofvertices,1);
+				disp('      no SMBpddSicopolis.s0p specified: values set as zero');
+			end
+			if isnan(self.s0t),
+				self.s0t=zeros(md.mesh.numberofvertices,1);
+				disp('      no SMBpddSicopolis.s0t specified: values set as zero');
+			end
+			if isnan(self.temperature_anomaly),
+				self.temperature_anomaly=zeros(md.mesh.numberofvertices,1);
+				disp('      no SMBpddSicopolis.temperature_anomaly specified: values set as zero');
+			end
+			if isnan(self.precipitation_anomaly),
+				self.precipitation_anomaly=ones(md.mesh.numberofvertices,1);
+				disp('      no SMBpddSicopolis.precipitation_anomaly specified: values set as ones');
+			end
+			if isnan(self.smb_corr),
+				self.smb_corr=zeros(md.mesh.numberofvertices,1);
+				disp('      no SMBpddSicopolis.smb_corr specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			self.isfirnwarming = 1;
+			self.desfac        = -log(2.0)/1000;
+			self.rlaps         = 7.4;
+			self.requested_outputs={'default'};
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if (strcmp(solution,'TransientSolution') & md.transient.issmb == 0), return; end
+
+			if ismember('MasstransportAnalysis',analyses),
+				md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',1);
+				md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','smb.monthlytemperatures','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 12]);
+				md = checkfield(md,'fieldname','smb.precipitation','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 12]);
+
+			end
+			md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]);
+			md = checkfield(md,'fieldname','smb.averaging', 'numel', [1], 'values', [0, 1, 2]);
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+
+			disp(sprintf('\n   SICOPOLIS PDD scheme (Calov & Greve, 2005) :'));
+			fielddisplay(self,'monthlytemperatures','monthly surface temperatures [K]');
+			fielddisplay(self,'precipitation','monthly surface precipitation [m/yr water eq]');
+			fielddisplay(self,'temperature_anomaly','anomaly to monthly reference temperature (additive; [K])');
+			fielddisplay(self,'precipitation_anomaly','anomaly to monthly precipitation (multiplicative, e.g. q=q0*exp(0.070458*DeltaT) after Huybrechts (2002)); [no unit])');
+			fielddisplay(self,'smb_corr','correction of smb after PDD call [m/a]');
+			fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]');
+			fielddisplay(self,'s0t','should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]');
+			fielddisplay(self,'rlaps','present day lapse rate (default is 7.4 degree/km)');
+			fielddisplay(self,'desfac','desertification elevation factor (default is -log(2.0)/1000)');
+			fielddisplay(self,'isfirnwarming','is firnwarming (Reeh 1991) activated (0 or 1, default is 1)');
+			fielddisplay(self, 'steps_per_step', 'number of smb steps per time step');
+			fielddisplay(self,'averaging','averaging methods from short to long steps');
+			disp(sprintf('%51s  0: Arithmetic (default)',' '));
+			disp(sprintf('%51s  1: Geometric',' '));
+			disp(sprintf('%51s  2: Harmonic',' '));
+			fielddisplay(self,'requested_outputs','additional outputs requested (TemperaturePDD, SmbAccumulation, SmbMelt)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',10,'format','Integer');
+
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isfirnwarming','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','desfac','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlaps','format','Double');
+
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperature_anomaly','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitation_anomaly','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','smb_corr','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer');
+			WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer')
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBpddSicopolis.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBpddSicopolis.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBpddSicopolis.py	(revision 27955)
@@ -0,0 +1,146 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from helpers import *
+from MatlabFuncs import *
+from project3d import project3d
+from WriteData import WriteData
+
+
+class SMBpddSicopolis(object):
+    """SMBPDDSICOPOLIS class definition
+
+    Usage:
+        SMBpddSicopolis = SMBpddSicopolis()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.precipitation = np.nan
+        self.monthlytemperatures = np.nan
+        self.temperature_anomaly = np.nan
+        self.precipitation_anomaly = np.nan
+        self.smb_corr = np.nan
+        self.desfac = 0
+        self.s0p = np.nan
+        self.s0t = np.nan
+        self.rlaps = 0
+        self.isfirnwarming = 0
+        self.steps_per_step = 1
+        self.averaging = 0
+        self.requested_outputs = []
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   surface forcings parameters:\n'
+        s += '   SICOPOLIS PDD scheme (Calov & Greve, 2005):\n'
+        s += '{}\n'.format(fielddisplay(self, 'monthlytemperatures', 'monthly surface temperatures [K]'))
+        s += '{}\n'.format(fielddisplay(self, 'precipitation', 'monthly surface precipitation [m/yr water eq]'))
+        s += '{}\n'.format(fielddisplay(self, 'temperature_anomaly', 'anomaly to monthly reference temperature (additive [K])'))
+        s += '{}\n'.format(fielddisplay(self, 'precipitation_anomaly', 'anomaly to monthly precipitation (multiplicative, e.g. q = q0*exp(0.070458*DeltaT) after Huybrechts (2002)) [no unit])'))
+        s += '{}\n'.format(fielddisplay(self, 'smb_corr', 'correction of smb after PDD call [m/a]'))
+        s += '{}\n'.format(fielddisplay(self, 's0p', 'should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))
+        s += '{}\n'.format(fielddisplay(self, 's0t', 'should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'rlaps', 'present day lapse rate (default is 7.4 degree/km)'))
+        s += '{}\n'.format(fielddisplay(self, 'desfac', 'desertification elevation factor (default is -log(2.0)/1000)'))
+        s += '{}\n'.format(fielddisplay(self, 'isfirnwarming', 'is firnwarming (Reeh 1991) activated (0 or 1, default is 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'))
+        s += '{}\n'.format(fielddisplay(self, 'averaging', 'averaging methods from short to long steps'))
+        s += '\t\t{}\n'.format('0: Arithmetic (default)')
+        s += '\t\t{}\n'.format('1: Geometric')
+        s += '\t\t{}\n'.format('2: Harmonic')
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested (TemperaturePDD, SmbAccumulation, SmbMelt)'))
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.precipitation = project3d(md, 'vector', self.precipitation, 'type', 'node')
+        self.monthlytemperatures = project3d(md, 'vector', self.monthlytemperatures, 'type', 'node')
+        self.temperature_anomaly = project3d(md, 'vector', self.temperature_anomaly, 'type', 'node')
+        self.precipitation_anomaly = project3d(md, 'vector', self.precipitation_anomaly, 'type', 'node')
+        self.smb_corr = project3d(md, 'vector', self.smb_corr, 'type', 'node')
+        self.s0p = project3d(md, 'vector', self.s0p, 'type', 'node')
+        self.s0t = project3d(md, 'vector', self.s0t, 'type', 'node')
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        listing = ['SmbMassBalance']
+        return listing
+    # }}}
+
+    def initialize(self, md):  # {{{
+        if np.isnan(self.s0p):
+            self.s0p = np.zeros((md.mesh.numberofvertices, ))
+            print('      no SMBpddSicopolis.s0p specified: values set as zero')
+
+        if np.isnan(self.s0t):
+            self.s0t = np.zeros((md.mesh.numberofvertices, ))
+            print('      no SMBpddSicopolis.s0t specified: values set as zero')
+
+        if np.isnan(self.temperature_anomaly):
+            self.temperature_anomaly = np.zeros((md.mesh.numberofvertices, ))
+            print('      no SMBpddSicopolis.temperature_anomaly specified: values set as zero')
+
+        if np.isnan(self.precipitation_anomaly):
+            self.precipitation_anomaly = np.ones((md.mesh.numberofvertices, ))
+            print('      no SMBpddSicopolis.precipitation_anomaly specified: values set as ones')
+
+        if np.isnan(self.smb_corr):
+            self.smb_corr = np.zeros((md.mesh.numberofvertices, ))
+            print('      no SMBpddSicopolis.smb_corr specified: values set as zero')
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.isfirnwarming = 1
+        self.desfac = -np.log(2.0) / 1000
+        self.rlaps = 7.4
+        self.requested_outputs = ['default']
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if solution == 'TransientSolution' and not md.transient.issmb:
+            return
+        if 'MasstransportAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'smb.desfac', '<=', 1, 'numel', 1)
+            md = checkfield(md, 'fieldname', 'smb.s0p', '>=', 0, 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices, 1])
+            md = checkfield(md, 'fieldname', 'smb.s0t', '>=', 0, 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices, 1])
+            md = checkfield(md, 'fieldname', 'smb.rlaps', '>=', 0, 'numel', 1)
+            md = checkfield(md, 'fieldname', 'smb.monthlytemperatures', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices, 12])
+            md = checkfield(md, 'fieldname', 'smb.precipitation', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices, 12])
+        md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1])
+        md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'smb.requested_outputs', 'stringrow', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 10, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isfirnwarming', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'desfac', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 's0p', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 's0t', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'rlaps', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'monthlytemperatures', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'precipitation', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'temperature_anomaly', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'precipitation_anomaly', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'smb_corr', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer')
+
+        # Process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBsemic.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBsemic.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBsemic.m	(revision 27955)
@@ -0,0 +1,366 @@
+%SMBsemic Class definition
+%
+%   Usage:
+%      SMBsemic=SMBsemic();
+
+classdef SMBsemic
+	properties (SetAccess=public)
+		dailysnowfall		= NaN;
+		dailyrainfall		= NaN;
+		dailydsradiation	= NaN;
+		dailydlradiation	= NaN;
+		dailywindspeed		= NaN;
+		dailypressure		= NaN;
+		dailyairdensity		= NaN;
+		dailyairhumidity	= NaN;
+		dailytemperature	= NaN;
+		Tamp              = NaN;
+		mask              = NaN;
+		hice              = NaN;
+		hsnow             = NaN;
+		qmr               = NaN;
+		desfac				= 0;
+		desfacElevation   = 0;
+		rlaps				= 0;
+		rdl					= 0;
+		s0gcm				= NaN;
+		steps_per_step		= 1;
+		averaging			= 0;
+		requested_outputs	= {};
+
+		hcrit             = 0;
+		rcrit             = 0;
+
+		% albedo
+		albedo            = 0; % required for first energy balance calculation of SEMIC
+		albedo_snow       = 0; % required for ISBA method
+		albedo_scheme     = 0; 
+		alb_smax = NaN;
+		alb_smin = NaN;
+		albi = NaN;
+		albl = NaN;
+
+		% albedo parameters depending on albedo_scheme
+		% for slater 
+		tmin = NaN;
+		tmax = NaN;
+
+		% for isba & denby method
+		mcrit = NaN;
+
+		% for isba
+		tau_a = NaN;
+		tau_f = NaN;
+		wcrit = NaN;
+
+		% for alex
+		tmid = NaN;
+		afac = NaN;
+
+		% method
+		ismethod  = 0;
+	end
+	methods
+		function self = SMBsemic(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.dailysnowfall=project3d(md,'vector',self.dailysnowfall,'type','node');
+			self.dailyrainfall=project3d(md,'vector',self.dailyrainfall,'type','node');
+			self.dailydsradiation=project3d(md,'vector',self.dailydsradiation,'type','node');
+			self.dailydlradiation=project3d(md,'vector',self.dailydlradiation,'type','node');
+			self.dailywindspeed=project3d(md,'vector',self.dailywindspeed,'type','node');
+			self.dailypressure=project3d(md,'vector',self.dailypressure,'type','node');
+			self.dailyairdensity=project3d(md,'vector',self.dailyairdensity,'type','node');
+			self.dailyairhumidity=project3d(md,'vector',self.dailyairhumidity,'type','node');
+			self.dailytemperature=project3d(md,'vector',self.dailytemperature,'type','node');
+			self.s0gcm=project3d(md,'vector',self.s0gcm,'type','node');
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'SmbMassBalance'};
+		end % }}}
+		function list = outputlists(self,md) % {{{
+			if self.ismethod == 1
+				list = {'default','SmbMassBalance','SmbMassBalanceSnow','SmbMassBalanceIce',...
+					'SmbMassBalanceSemic','SmbMelt','SmbRefreeze','SmbAccumulation',...
+					'SmbHIce','SmbHSnow','SmbAlbedo','SmbAlbedoSnow','TemperatureSEMIC',...
+					'SmbSemicQmr','TotalSmb','TotalSmbMelt','TotalSmbRefreeze'};
+			else
+				list = {'default','SmbMassBalance'};
+			end
+		end % }}}
+		function self = initialize(self,md) % {{{
+			% Explain
+			%  initialize SEMIC smb values, such as s0gcm(surface elevation), albedo,
+			% albedo_snow, hice, hsnow, Tamp... values.
+			% 
+			%
+			% Usage
+			%  md.smb = initialize(md.smb,md);
+
+			if isnan(self.s0gcm)
+				if ~isnan(md.geometry.surface) & (numel(md.geometry.surface) == md.mesh.numberofvertices)
+					self.s0gcm=md.geometry.surface;
+					disp('      no SMBsemic.s0gcm specified: values from md.geometry.surface');
+				else
+					self.s0gcm=zeros(md.mesh.numberofvertices,1);
+					disp('      no SMBsemic.s0gcm specified: values set as zero');
+				end
+			end
+			if isnan(self.mask)
+				self.mask = 2*ones(md.mesh.numberofvertices,1);
+				disp('      no SMBsemic.mask specified: values set as 2 for ice');
+			end
+
+			% update each values.
+			if isnan(self.Tamp)
+				self.Tamp= 3*ones(md.mesh.numberofvertices,1);
+				disp('      no SMBsemic.Tamp specified: values set as 3.0');
+			end
+			self.albedo     = 0.8*ones(md.mesh.numberofvertices,1);
+			self.albedo_snow= 0.5*ones(md.mesh.numberofvertices,1);
+			self.hice       = 10*ones(md.mesh.numberofvertices,1);
+			self.hsnow      = 5*ones(md.mesh.numberofvertices,1);
+			self.qmr        = zeros(md.mesh.numberofvertices,1);
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			% albedo parameters
+			self.albedo_scheme   = 0;
+			self.alb_smax = 0.79;
+			self.alb_smin = 0.6;
+			self.albi = 0.41;
+			self.albl = 0.07;
+
+			% albedo parameters for?
+			% for slater
+			self.tmin  = 263.15;
+			self.tmax  = 273.15;
+			% for isba & denby
+			self.mcrit = 6e-8;
+			% for isba
+			self.tau_a = 0.008;
+			self.tau_f = 0.24;
+			self.wcrit = 15.0;
+			% for alex
+			self.tmid  = 273.35;
+			self.afac  = -0.18;
+
+			self.hcrit = 0.028;% from Krapp et al. (2017)
+			self.rcrit = 0.85; % from Krapp et al. (2017)
+		
+			self.desfac		      = -log(2.0)/1000;
+			self.desfacElevation = 2000;
+			self.rlaps		      = 7.4;
+			self.rdl			      = 0.29;
+
+			self.ismethod        = 0;
+			self.requested_outputs={'default'};
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses)
+				md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',1);
+				md = checkfield(md,'fieldname','smb.s0gcm','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','smb.rdl','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','smb.dailysnowfall','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.dailyrainfall','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.dailydsradiation','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.dailydlradiation','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.dailywindspeed','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.dailypressure','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.dailyairdensity','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.dailyairhumidity','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.dailytemperature','timeseries',1,'NaN',1,'Inf',1);
+
+				% TODO: transient model should be merged with SEMIC developed by Ruckamp et al. (2018)
+
+				md = checkfield(md,'fieldname','smb.ismethod','numel',1,'values',[0,1]);
+				if self.ismethod == 1 % transient mode
+					md = checkfield(md,'fieldname','smb.desfacElevation','>=',0,'numel',1);
+
+					md = checkfield(md,'fieldname','smb.albedo_scheme','NaN',1,'Inf',1,'numel',1,'values',[0,1,2,3,4]);
+					md = checkfield(md,'fieldname','smb.alb_smax','>=',0,'NaN',1,'Inf',1,'numel',1);
+					md = checkfield(md,'fieldname','smb.mask','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1],'values',[0,1,2]);
+
+					% initial values
+					md = checkfield(md,'fieldname','smb.albedo','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+					md = checkfield(md,'fieldname','smb.albedo_snow','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+					md = checkfield(md,'fieldname','smb.alb_smax','>=',0,'<=',1,'NaN',1,'Inf',1,'numel',1);
+					md = checkfield(md,'fieldname','smb.alb_smin','<=',1,'NaN',1,'Inf',1,'numel',1);
+					md = checkfield(md,'fieldname','smb.albi','>=',0,'<=',1,'NaN',1,'Inf',1,'numel',1);
+					md = checkfield(md,'fieldname','smb.albl','>=',0,'<=',1,'NaN',1,'Inf',1,'numel',1);
+					md = checkfield(md,'fieldname','smb.hice','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+					md = checkfield(md,'fieldname','smb.hsnow','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+					md = checkfield(md,'fieldname','smb.qmr','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				end
+			end
+			md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]);
+			md = checkfield(md,'fieldname','smb.averaging','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+			% check requested_outputs
+			if self.ismethod==1
+				for i = 1:length(self.requested_outputs)
+					if ~any(strcmpi(self.requested_outputs{i},self.outputlists))
+						error(sprintf('ERROR: %s requested_output is not available',self.requested_outputs{i}));
+					end
+				end
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+
+			disp(sprintf('   Interface for coupling GCM data to the energy balance model SEMIC (Krapp et al (2017) https://doi.org/10.5194/tc-11-1519-2017).'));
+			disp(sprintf('   The implemented coupling uses daily mean GCM input to calculate yearly mean smb, accumulation, ablation, and surface temperature.'));
+			disp(sprintf('   smb and temperatures are updated every year'));
+			disp(sprintf('\n   SEMIC parameters:'));
+			fielddisplay(self,'dailysnowfall','daily surface dailysnowfall [m/s]');
+			fielddisplay(self,'dailyrainfall','daily surface dailyrainfall [m/s]');
+			fielddisplay(self,'dailydsradiation','daily downwelling shortwave radiation [W/m2]');
+			fielddisplay(self,'dailydlradiation','daily downwelling longwave radiation [W/m2]');
+			fielddisplay(self,'dailywindspeed','daily surface wind speed [m/s]');
+			fielddisplay(self,'dailypressure','daily surface pressure [Pa]');
+			fielddisplay(self,'dailyairdensity','daily air density [kg/m3]');
+			fielddisplay(self,'dailyairhumidity','daily air specific humidity [kg/kg]');
+			fielddisplay(self,'dailytemperature','daily surface air temperature [K]');
+			fielddisplay(self,'rlaps','present day lapse rate (default is 7.4 [degree/km]; Erokhina et al. 2017)');
+			fielddisplay(self,'desfac','desertification elevation factor (default is -log(2.0)/1000 [1/km]; Vizcaino et al. 2010)');
+			fielddisplay(self,'rdl','longwave downward radiation decrease (default is 0.29 [W/m^2/km]; Marty et al. 2002)');
+			fielddisplay(self,'s0gcm','GCM reference elevation; (default is 0) [m]');
+			fielddisplay(self,'albedo_scheme','albedom scheme. 0: none, 1: (default is 0)');
+
+			fielddisplay(self,'ismethod','method for calculating SMB with SEMIC. Default version of SEMIC is really slow. 0: steady, 1: transient (default: 0)');
+			if self.ismethod == 1 % transient mode
+				fielddisplay(self,'desfacElevation','desertification elevation (default is 2000 m; Vizcaino et al. 2010)');
+				fielddisplay(self,'Tamp','amplitude of diurnal cycle [K]');
+				fielddisplay(self,'albedo','initial albedo [no unit]');
+				fielddisplay(self,'albedo_snow','initial albedo for snow [no unit]');
+				fielddisplay(self,'hice','initial thickness of ice [unit: m]');
+				fielddisplay(self,'hsnow','initial thickness of snow [unit: m]');
+				fielddisplay(self,'mask','masking for albedo. 0: ocean, 1: land, 2: ice (default: 2)');
+				fielddisplay(self,'hcrit','critical snow height for albedo [unit: m]');
+				fielddisplay(self,'rcrit','critical refreezing height for albedo [no unit]');
+
+				disp(sprintf('\nSEMIC albedo parameters.'));
+				fielddisplay(self,'albedo_scheme','albedo scheme for SEMIC. 0: none, 1: slater, 2: isba, 3: denby, 4: alex (default is 0)');
+				fielddisplay(self,'alb_smax','maximum snow albedo (default: 0.79)');
+				fielddisplay(self,'alb_smin','minimum snow albedo (default: 0.6)');
+				fielddisplay(self,'albi','background albedo for bare ice (default: 0.41)');
+				fielddisplay(self,'albl','background albedo for bare land (default: 0.07)');
+			end
+			% albedo_scheme - 0: none, 1: slater, 2: isba, 3: denby, 4: alex.
+         if self.albedo_scheme == 0
+            disp(sprintf('\n\tSEMIC snow albedo parameter of None.'));
+				disp(sprintf('\t   albedo of snow is updated from albedo snow max (alb_smax).'));
+            disp(sprintf('\t   alb_snow = abl_smax'));
+			elseif self.albedo_scheme == 1
+				disp(sprintf('\n\tSEMIC snow albedo parameters of Slater et al, (1998).'));
+				disp(sprintf('\t   alb = alb_smax - (alb_smax - alb_smin)*tm^(3.0)'))
+				disp(sprintf('\t   tm  = 1 (tsurf > 273.15 K)'));
+				disp(sprintf('\t         tm = f*(tsurf-tmin) (tmin <= tsurf < 273.15)'));
+				disp(sprintf('\t         0 (tsurf < tmin)'));
+				disp(sprintf('\t   f = 1/(273.15-tmin)'));
+				fielddisplay(self,'tmin','minimum temperature for which albedo decline become effective. (default: 263.15 K)[unit: K])');
+				fielddisplay(self,'tmax','maxmium temperature for which albedo decline become effective. This value should be fixed. (default: 273.15 K)[unit: K])');
+			elseif self.albedo_scheme == 2
+				disp(sprintf('\n\tSEMIC snow albedo parameters for ISBA.? where is citation?'));
+				fielddisplay(self,'mcrit','critical melt rate (default: 6e-8) [unit: m/sec]');
+				fielddisplay(self,'wcrit','critical liquid water content (default: 15) [unit: kg/m2]');
+				fielddisplay(self,'tau_a','dry albedo decline [unit: 1/day]');
+				fielddisplay(self,'tau_f','wet albedo decline [unit: 1/day]');
+			elseif self.albedo_scheme == 3
+				disp(sprintf('\n\tSEMIC snow albedo parameters for Denby et al. (2002 Tellus)'));
+				fielddisplay(self,'mcrit','critical melt rate (default: 6e-8) [unit: m/sec]');
+			elseif self.albedo_scheme == 4
+				disp(sprintf('\n\tSEMIC snow albedo parameters for Alex.?'));
+				fielddisplay(self,'afac','[unit: ?]');
+				fielddisplay(self,'tmid','[unit: ?]');
+			else
+				error(sprintf('ERROR: %d is not supported albedom scheme.',self.albedo_scheme))
+			end
+
+			fielddisplay(self, 'steps_per_step', 'number of smb steps per time step');
+			fielddisplay(self, 'averaging', 'averaging methods from short to long steps');
+			disp(sprintf('%51s  0: Arithmetic (default)',' '));
+			disp(sprintf('%51s  1: Geometric',' '));
+			disp(sprintf('%51s  2: Harmonic',' '));
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.smb.model','data',12,'format','Integer');
+
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','ismethod','format','Integer','values',[0, 1]);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','desfac','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','desfacElevation','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','s0gcm','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','rlaps','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','rdl','format','Double');
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dailysnowfall','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dailyrainfall','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dailydsradiation','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dailydlradiation','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dailywindspeed','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dailypressure','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dailyairdensity','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dailyairhumidity','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dailytemperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			% TODO: transient mode should be merged with SEMIC developed by Ruckamp et al. (2018).
+			if self.ismethod == 1% transient mode
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','Tamp','format','DoubleMat','mattype',1);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','mask','format','DoubleMat','mattype',1);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','hice','format','DoubleMat','mattype',1);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','hsnow','format','DoubleMat','mattype',1);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','qmr','format','DoubleMat','mattype',1);
+
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','hcrit','format','Double');
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','rcrit','format','Double');
+
+				%albedo
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','albedo','format','DoubleMat','mattype',1);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','albedo_snow','format','DoubleMat','mattype',1);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','albedo_scheme','format','Integer');
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','albi','format','Double');
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','albl','format','Double');
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','alb_smin','format','Double');
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','alb_smax','format','Double');
+
+				%albedo parameters for ?
+				%for slater
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','tmin','format','Double');
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','tmax','format','Double');
+				%for isba & denby
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','mcrit','format','Double');
+				%for isba
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','wcrit','format','Double');
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','tau_a','format','Double');
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','tau_f','format','Double');
+				%for alex
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','tmid','format','Double');
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','afac','format','Double');
+			end
+
+			WriteData(fid,prefix,'object',self,'fieldname','steps_per_step','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','averaging','format','Integer');
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos)
+				outputs(pos) = []; %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.smb.requested_outputs','format','StringArray');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBsemic.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBsemic.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/SMBsemic.py	(revision 27955)
@@ -0,0 +1,333 @@
+from math import log
+
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class SMBsemic(object):
+    """SMBsemic class definition
+
+    Usage:
+        SMBsemic = SMBsemic()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.dailysnowfall = np.nan
+        self.dailyrainfall = np.nan
+        self.dailydsradiation = np.nan
+        self.dailydlradiation = np.nan
+        self.dailypressure = np.nan
+        self.dailyairdensity = np.nan
+        self.dailyairhumidity = np.nan
+        self.dailytemperature = np.nan
+        self.Tamp = np.nan
+        self.mask = np.nan
+        self.hice = np.nan
+        self.hsnow = np.nan
+        self.desfac = 0
+        self.desfacElevation = 0
+        self.rlaps = 0
+        self.rdl = 0
+        self.s0gcm = np.nan
+        self.steps_per_step = 1
+        self.averaging = 0
+        self.requested_outputs = []
+
+        self.hcrit = 0
+        self.rcrit = 0
+
+        # albedo
+        self.albedo = 0 # required for first energy balance calculation of SEMIC
+        self.albedo_snow = 0 # required for ISBA method
+        self.albedo_scheme = 0
+        self.alb_smax = np.nan
+        self.alb_smin = np.nan
+        self.albi = np.nan
+        self.albl = np.nan
+
+        # albedo parameters depending on albedo_scheme
+        # for slater
+        self.tmin = np.nan
+        self.tmax = np.nan
+
+        # for isba & denby method
+        self.mcrit = np.nan
+
+        # for isba
+        self.tau_a = np.nan
+        self.tau_f = np.nan
+        self.wcrit = np.nan
+
+        # for alex
+        self.tmid = np.nan
+        self.afac = np.nan
+
+        # method
+        self.ismethod = 0
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   surface forcings parameters:\n'
+        s += '   Interface for coupling GCM data to the energy balance model SEMIC (Krapp et al (2017) https://doi.org/10.5194/tc-11-1519-2017).\n'
+        s += '   The implemented coupling uses daily mean GCM input to calculate yearly mean smb, accumulation, ablation, and surface temperature.\n'
+        s += '   smb and temperatures are updated every year\n'
+        s += '\n   SEMIC parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'dailysnowfall', 'daily surface dailysnowfall [m/s]'))
+        s += '{}\n'.format(fielddisplay(self, 'dailyrainfall', 'daily surface dailyrainfall [m/s]'))
+        s += '{}\n'.format(fielddisplay(self, 'dailydsradiation', 'daily downwelling shortwave radiation [W/m2]'))
+        s += '{}\n'.format(fielddisplay(self, 'dailydlradiation', 'daily downwelling longwave radiation [W/m2]'))
+        s += '{}\n'.format(fielddisplay(self, 'dailywindspeed', 'daily surface wind speed [m/s]'))
+        s += '{}\n'.format(fielddisplay(self, 'dailypressure', 'daily surface pressure [Pa]'))
+        s += '{}\n'.format(fielddisplay(self, 'dailyairdensity', 'daily air density [kg/m3]'))
+        s += '{}\n'.format(fielddisplay(self, 'dailyairhumidity', 'daily air specific humidity [kg/kg]'))
+        s += '{}\n'.format(fielddisplay(self, 'rlaps', 'present day lapse rate (default is 7.4 [degree/km]; Erokhina et al. 2017)'))
+        s += '{}\n'.format(fielddisplay(self, 'desfac', 'desertification elevation factor (default is -log(2.0)/1000 [1/km]; Vizcaino et al. 2010)'))
+        s += '{}\n'.format(fielddisplay(self, 'rdl', 'longwave downward radiation decrease (default is 0.29 [W/m^2/km]; Marty et al. 2002)'))
+        s += '{}\n'.format(fielddisplay(self, 's0gcm', 'GCM reference elevation; (default is 0) [m]'))
+        s += '{}\n'.format(fielddisplay(self,'ismethod','method for calculating SMB with SEMIC. Default version of SEMIC is really slow. 0: steady, 1: transient (default: 0)'))
+        if self.ismethod: # transient mode
+            s += '{}\n'.format(fielddisplay(self,'desfacElevation','desertification elevation (default is 2000 m; Vizcaino et al. 2010)'))
+            s += '{}\n'.format(fielddisplay(self,'Tamp','amplitude of diurnal cycle [K]'))
+            s += '{}\n'.format(fielddisplay(self,'albedo','initial albedo [no unit]'))
+            s += '{}\n'.format(fielddisplay(self,'albedo_snow','initial albedo for snow [no unit]'))
+            s += '{}\n'.format(fielddisplay(self,'hice','initial thickness of ice [unit: m]'))
+            s += '{}\n'.format(fielddisplay(self,'hsnow','initial thickness of snow [unit: m]'))
+            s += '{}\n'.format(fielddisplay(self,'mask','masking for albedo. 0: ocean, 1: land, 2: ice (default: 2)'))
+            s += '{}\n'.format(fielddisplay(self,'hcrit','critical snow height for albedo [unit: m]'))
+            s += '{}\n'.format(fielddisplay(self,'rcrit','critical refreezing height for albedo [no unit]'))
+
+            s += '\nSEMIC albedo parameters.\n'
+            s += '{}\n'.format(fielddisplay(self,'albedo_scheme','albedo scheme for SEMIC. 0: none, 1: slater, 2: isba, 3: denby, 4: alex (default is 0)'))
+            s += '{}\n'.format(fielddisplay(self,'alb_smax','maximum snow albedo (default: 0.79)'))
+            s += '{}\n'.format(fielddisplay(self,'alb_smin','minimum snow albedo (default: 0.6)'))
+            s += '{}\n'.format(fielddisplay(self,'albi','background albedo for bare ice (default: 0.41)'))
+            s += '{}\n'.format(fielddisplay(self,'albl','background albedo for bare land (default: 0.07)'))
+        # albedo_scheme - 0: none, 1: slater, 2: isba, 3: denby, 4: alex.
+        if self.albedo_scheme == 0:
+            s += '\n\tSEMIC snow albedo parameter of None.\n'
+				s += '\t   albedo of snow is updated from albedo snow max (alb_smax).\n'
+            s += '\t   alb_snow = abl_smax \n '
+        elif self.albedo_scheme == 1:
+            s += '\n\tSEMIC snow albedo parameters of Slater et al, (1998).\n'
+            s += '\t   alb = alb_smax - (alb_smax - alb_smin)*tm^(3.0)\n'
+            s += '\t   tm  = 1 (tsurf > 273.15 K)\n'
+            s += '\t         tm = f*(tsurf-tmin) (tmin <= tsurf < 273.15)\n'
+            s += '\t         0 (tsurf < tmin)\n'
+            s += '\t   f = 1/(273.15-tmin)\n'
+            s += '{}\n'.format(fielddisplay(self, 'tmin', 'minimum temperature for which albedo decline become effective. (default: 263.15 K)[unit: K])'))
+            s += '{}\n'.format(fielddisplay(self, 'tmax', 'maxmium temperature for which albedo decline become effective. This value should be fixed. (default: 273.15 K)[unit: K])'))
+        elif self.albedo_scheme == 2:
+            s += '\n\tSEMIC snow albedo parameters of ISBA.? where is citation?\n'
+            s += '{}\n'.format(fielddisplay(self, 'mcrit', 'critical melt rate (default: 6e-8) [unit: m/sec]'))
+            s += '{}\n'.format(fielddisplay(self, 'wcrit', 'critical liquid water content (default: 15) [unit: kg/m2]'))
+            s += '{}\n'.format(fielddisplay(self, 'tau_a', 'dry albedo decline [unit: 1/day]'))
+            s += '{}\n'.format(fielddisplay(self, 'tau_f', 'wet albedo decline [unit: 1/day]'))
+        elif self.albedo_scheme == 3:
+            s += '\n\tSEMIC snow albedo parameters of Denby et al. (2002 Tellus)\n'
+            s += '{}\n'.format(fielddisplay(self,'mcrit','critical melt rate (defaut: 6e-8) [unit: m/sec]'))
+        elif self.albedo_scheme == 4:
+            s += '\n\tSEMIC snow albedo parameters of Alex.?\n'
+            s += '{}\n'.format(fielddisplay(self,'afac','[unit: ?]'))
+            s += '{}\n'.format(fielddisplay(self,'tmid','[unit: ?]'))
+        else:
+            raise Exception('ERROR: {} is not supported albedo scheme.'.format(self.albedo_scheme))
+
+        s += '{}\n'.format(fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'))
+        s += '{}\n'.format(fielddisplay(self, 'averaging', 'averaging methods from short to long steps'))
+        s += '\t\t{}\n'.format('0: Arithmetic (default)')
+        s += '\t\t{}\n'.format('1: Geometric')
+        s += '\t\t{}\n'.format('2: Harmonic')
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.dailysnowfall = project3d(md, 'vector', self.dailysnowfall, 'type', 'node')
+        self.dailyrainfall = project3d(md, 'vector', self.dailyrainfall, 'type', 'node')
+        self.dailydsradiation = project3d(md, 'vector', self.dailydsradiation, 'type', 'node')
+        self.dailydlradiation = project3d(md, 'vector', self.dailydlradiation, 'type', 'node')
+        self.dailywindspeed = project3d(md, 'vector', self.dailywindspeed, 'type', 'node')
+        self.dailypressure = project3d(md, 'vector', self.dailypressure, 'type', 'node')
+        self.dailyairdensity = project3d(md, 'vector', self.dailyairdensity, 'type', 'node')
+        self.dailyairhumidity = project3d(md, 'vector', self.dailyairhumidity, 'type', 'node')
+        self.dailytemperature = project3d(md, 'vector', self.dailytemperature, 'type', 'node')
+        self.s0gcm = project3d(md, 'vector', self.s0gcm, 'type', 'node')
+        return self
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['SmbMassBalance']
+    # }}}
+
+    def outputlists(self, md):  # {{{
+        if self.ismethod:
+            list = ['default','SmbMassBalance', 'SmbMassBalanceSnow', 'SmbMassBalanceIce',
+                  'SmbMassBalanceSecmi', 'SmbMelt', 'SmbRefreeze','SmbAccumulation',
+                  'SmbHIce', 'SmbHSnow', 'SmbAlbedo', 'SmbAlbedoSnow', 'TemperatureSEMIC',
+                  'SmbSemicQmr', 'TotalSmb', 'TotalSmbMelt', 'TotalSmbRefreeze']
+        else:
+            list = ['default','SmbMassBalance']
+        return list
+    # }}}
+
+    def initialize(self, md):  # {{{
+        if np.all(np.isnan(self.s0gcm)):
+            self.s0gcm = np.zeros((md.mesh.numberofvertices))
+            print('      no SMBsemic.s0gcm specified: values set as zero')
+
+        self.Tamp = 3 * np.ones((md.mesh.numberofvertices,))
+        #self.albedo = 0.8 * np.ones((md.mesh.numberofvertices,))
+        #self.albedo_snow = 0.5 * np.ones((md.mesh.numberofvertices,))
+        self.hice = np.zeros((md.mesh.numberofvertices,))
+        self.hsnow = 5 * np.ones((md.mesh.numberofvertices,))
+
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  #{{{
+        # albedo parameters
+        self.albedo_scheme = 0
+        self.alb_smax = 0.79
+        self.alb_smin = 0.6
+        self.albi = 0.41
+        self.albl = 0.07
+
+        # albedo parameters for?
+        # for slater
+        self.tmin = 263.15
+        self.tmax = 273.15
+
+        # for isba & denby
+        self.mcrit = 6e-8
+
+        # for isba
+        self.tau_a = 0.008
+        self.tau_f = 0.24
+        self.wcrit = 15.0
+
+        # for alex
+        self.tmid = 273.35
+        self.afac = -0.18
+
+        self.hcrit = 0.028 # from Krapp et al. (2017)
+        self.rcrit = 0.85 # from Krapp et al. (2017)
+
+        self.desfac = -log(2.0) / 1000
+        self.desfacElevation = 2000
+        self.rlaps = 7.4
+        self.rdl = 0.29
+
+        self.ismethod = 0
+        self.requested_outputs = ['default']
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if 'MasstransportAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'smb.desfac', '<=', 1, 'numel', 1)
+            md = checkfield(md, 'fieldname', 'smb.s0gcm', '>=', 0, 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices, 1])
+            md = checkfield(md, 'fieldname', 'smb.rlaps', '>=', 0, 'numel', 1)
+            md = checkfield(md, 'fieldname', 'smb.rdl', '>=', 0, 'numel', 1)
+            md = checkfield(md, 'fieldname', 'smb.dailysnowfall', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.dailyrainfall', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.dailydsradiation', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.dailydlradiation', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.dailywindspeed', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.dailypressure', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.dailyairdensity', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.dailyairhumidity', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.dailytemperature', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+
+            # TODO: transient model should be merged with SEMIC developed by Ruckamp et al. (2018)
+            md = checkfield(md, 'fieldname', 'smb.ismethod', 'numel', 1, 'values', [0, 1])
+            if self.ismethod: # transient mode
+                md = checkfield(md, 'fieldname', 'smb.desfacElevation', '>=', 0, 'numel', 1)
+                md = checkfield(md, 'fieldname', 'smb.albedo_scheme', 'NaN', 1, 'Inf', 1, 'numel', 1, 'values', [0, 1, 2, 3, 4])
+                md = checkfield(md, 'fieldname', 'smb.alb_smax', '>=', 0, 'NaN', 1, 'Inf', 1, 'numel', 1)
+                md = checkfield(md, 'fieldname', 'smb.mask', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices, 1], 'values', [0, 1, 2])
+
+                # initial values
+                md = checkfield(md, 'fieldname', 'smb.albedo', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices, 1])
+                md = checkfield(md, 'fieldname', 'smb.albedo_snow', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices, 1])
+                md = checkfield(md, 'fieldname', 'smb.alb_smax', '>=', 0, '<=', 1, 'NaN', 1, 'Inf', 1, 'numel', 1)
+                md = checkfield(md, 'fieldname', 'smb.alb_smin', '>=', 0, '<=', 1, 'NaN', 1, 'Inf', 1, 'numel', 1)
+                md = checkfield(md, 'fieldname', 'smb.albi', '>=', 0, '<=', 1, 'NaN', 1, 'Inf', 1, 'numel', 1)
+                md = checkfield(md, 'fieldname', 'smb.albl', '>=', 0, '<=', 1, 'NaN', 1, 'Inf', 1, 'numel', 1)
+                md = checkfield(md, 'fieldname', 'smb.hice', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices, 1])
+                md = checkfield(md, 'fieldname', 'smb.hsnow', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices, 1])
+        md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1])
+        md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'smb.requested_outputs', 'stringrow', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+        WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 12, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'ismethod', 'format', 'Integer', 'values', [0, 1])
+        WriteData(fid, prefix, 'object', self, 'class' ,'smb', 'fieldname', 'desfac', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'desfacElevation', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class' ,'smb', 'fieldname', 's0gcm', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class' ,'smb', 'fieldname', 'rlaps', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class' ,'smb', 'fieldname', 'rdl', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class' ,'smb', 'fieldname', 'dailysnowfall', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class' ,'smb', 'fieldname', 'dailyrainfall', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class' ,'smb', 'fieldname', 'dailydsradiation', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class' ,'smb', 'fieldname', 'dailydlradiation', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class' ,'smb', 'fieldname', 'dailywindspeed', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class' ,'smb', 'fieldname', 'dailypressure', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class' ,'smb', 'fieldname', 'dailyairdensity', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class' ,'smb', 'fieldname', 'dailyairhumidity', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class' ,'smb', 'fieldname', 'dailytemperature', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        # TODO: transient mode should be merged with SEMIC developed by Ruckamp et al. (2018).
+        if self.ismethod: # transient mode
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Tamp', 'format', 'DoubleMat', 'mattype', 1)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'mask', 'format', 'DoubleMat', 'mattype', 1)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'hice', 'format', 'DoubleMat', 'mattype', 1)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'hsnow', 'format', 'DoubleMat', 'mattype', 1)
+
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'hcrit', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'rcrit', 'format', 'Double')
+
+            # albedo
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'albedo', 'format', 'DoubleMat', 'mattype', 1)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'albedo_snow', 'format', 'DoubleMat', 'mattype', 1)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'albedo_scheme', 'format', 'Integer')
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'albi', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'albl', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'alb_smin', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'alb_smax', 'format', 'Double')
+
+            # albedo parameters for ?
+            # for slater
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'tmin', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'tmax', 'format', 'Double')
+            # for isba & denby
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'mcrit', 'format', 'Double')
+            # for isba
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'wcrit', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'tau_a', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'tau_f', 'format', 'Double')
+            # for alex
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'tmid', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'afac', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer')
+
+        # Process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.smb.requested_outputs', 'format', 'StringArray')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/additionalsolidearthsolution.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/additionalsolidearthsolution.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/additionalsolidearthsolution.m	(revision 27955)
@@ -0,0 +1,43 @@
+%ADDITIONALSOLIDEARTHSOLUTION class definition
+%
+%   Usage:
+%      addsol=additionalsolidearthsolution();
+
+classdef additionalsolidearthsolution < solidearthsolution
+	properties (SetAccess=public) 
+	end
+	methods
+		function self = additionalsolidearthsolution(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			self.setdefaultparameters@solidearthsolution();
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ismember('SealevelchangeAnalysis',analyses) | (strcmp(solution,'TransientSolution') & md.solidearth.settings.isgrd==0), 
+				error('additionalsolidearthsolution checkconsistency error message: need to run GRD solution if you are supplying a GRD additional pattern solution');
+			end
+			self.checkconsistency@solidearthsolution(md,solution,analyses);
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   external: additionalsolidearth solution:'));
+			self.disp@solidearthsolution();
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'data',1,'name','md.solidearth.external.nature','format','Integer'); %code 1 for additionalsolidearthsolution class
+			self.marshall@solidearthsolution(prefix,md,fid);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+			self.savemodeljs@solidearthsolution(fid,modelname);
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/adm1qn3inversion.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/adm1qn3inversion.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/adm1qn3inversion.m	(revision 27955)
@@ -0,0 +1,97 @@
+%ADM1QN3INVERSION class definition
+%
+%   Usage:
+%      adm1qn3inversion=adm1qn3inversion();
+
+classdef adm1qn3inversion
+	properties (SetAccess=public) 
+		iscontrol                   = 0
+		maxsteps                    = 0
+		maxiter                     = 0
+		dxmin                       = 0
+		dfmin_frac                  = 0
+		gttol                       = 0
+
+	end
+	methods
+		function self = adm1qn3inversion(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(adm1qn3inversion(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+
+			%parameter to be inferred by control methods (only
+			%drag and B are supported yet)
+			%self.control_parameters={'FrictionCoefficient'};
+
+			%number of iterations
+			self.maxsteps=20;
+			self.maxiter=40;
+
+			%m1qn3 parameters
+			self.dxmin      = 0.1;
+			self.dfmin_frac = 1.;
+			self.gttol      = 1e-4;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~self.iscontrol, return; end
+
+			if ~IssmConfig('_HAVE_M1QN3_'),
+				md = checkmessage(md,['M1QN3 has not been installed, ISSM needs to be reconfigured and recompiled with M1QN3']);
+			end
+
+			md = checkfield(md,'fieldname','inversion.iscontrol','values',[0 1]);
+			md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.maxiter','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.dxmin','numel',1,'>',0);
+         md = checkfield(md,'fieldname','inversion.dfmin_frac','numel',1,'>=',0., '<=', 1.);
+			md = checkfield(md,'fieldname','inversion.gttol','numel',1,'>',0);
+
+	end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   adm1qn3inversion parameters:'));
+			fielddisplay(self,'iscontrol','is inversion activated?');
+			fielddisplay(self,'maxsteps','maximum number of iterations (gradient computation)');
+			fielddisplay(self,'maxiter','maximum number of Function evaluation (forward run)');
+			fielddisplay(self,'dxmin','convergence criterion: two points less than dxmin from eachother (sup-norm) are considered identical');
+         fielddisplay(self,'dfmin_frac','expected reduction of J during the first step (e.g., 0.3=30% reduction in cost function)');
+			fielddisplay(self,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean');
+			WriteData(fid,prefix,'name','md.inversion.type','data',4,'format','Integer');
+			if ~self.iscontrol, return; end
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxsteps','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','dxmin','format','Double');
+         WriteData(fid,prefix,'object',self,'class','inversion','fieldname','dfmin_frac','format','Double');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','gttol','format','Double');
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.inversion.iscontrol'],self.iscontrol);
+			writejsdouble(fid,[modelname '.inversion.maxsteps'],self.maxsteps);
+			writejsdouble(fid,[modelname '.inversion.maxiter'],self.maxiter);
+			writejsdouble(fid,[modelname '.inversion.dxmin'],self.dxmin);
+         writejsdouble(fid,[modelname '.inversion.dfmin_frac'],self.dfmin_frac);
+			writejsdouble(fid,[modelname '.inversion.gttol'],self.gttol);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/age.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/age.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/age.m	(revision 27955)
@@ -0,0 +1,115 @@
+%AGE class definition
+%
+%   Usage:
+%      age=age();
+
+classdef age
+	properties (SetAccess=public)
+		 spcage                 = NaN;
+		 stabilization          = 0;
+		 requested_outputs      = {};
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. If the input is a struct it is an old version of this class and
+			% old fields must be recovered (make sure they are in the deprecated
+			% model properties)
+
+			if verLessThan('matlab','7.9'),
+				disp('Warning: your matlab version is old and there is a risk that load does not work correctly');
+				disp('         if the model is not loaded correctly, rename temporarily loadobj so that matlab does not use it');
+
+				% This is a Matlab bug: all the fields of md have their default value
+				% Example of error message:
+				% Warning: Error loading an object of class 'model':
+				% Undefined function or method 'exist' for input arguments of type 'cell'
+				%
+				% This has been fixed in MATLAB 7.9 (R2009b) and later versions
+			end
+
+			if isstruct(self)
+				disp('Recovering age from older version');
+				self = structtoobj(age(),self);
+			end
+		end% }}}
+	end
+	methods
+		function self = age(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('age');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.spcage=project3d(md,'vector',self.spcage,'type','node');
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+
+			list = {'Age'};
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Type of stabilization to use 0:nothing 1:artificial_diffusivity
+			self.stabilization=2;
+
+			%default output
+			self.requested_outputs={'default'};
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('AgeAnalysis',analyses) |  (strcmp(solution,'TransientSolution') & md.transient.isage==0), return; end
+			if dimension(md.mesh)~=3
+				md = checkmessage(md,['age model only supported in 3D']);
+			end
+
+			md = checkfield(md,'fieldname','age.spcage','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','age.stabilization','values',[0 1 2 4 5]);
+			md = checkfield(md,'fieldname','age.requested_outputs','stringrow',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Masstransport solution parameters:'));
+			fielddisplay(self,'spcage','Age constraint (NaN means no constraint) [yr]');
+			fielddisplay(self,'stabilization','0: no stabilization, 1: artificial diffusion, 2: streamline upwinding, 4: flux corrected transport, 5: streamline upwind Petrov-Galerkin (SUPG)');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'fieldname','spcage','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer');
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.age.requested_outputs','format','StringArray');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			writejs1Darray(fid,[modelname '.age.spcage'],self.spcage);
+			writejsdouble(fid,[modelname '.age.stabilization'],self.stabilization);
+			writejscellstring(fid,[modelname '.age.requested_outputs'],self.requested_outputs);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/amr.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/amr.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/amr.js	(revision 27955)
@@ -0,0 +1,134 @@
+//AMR class definition
+//
+//   Usage:
+//      amr=new amr();
+
+function amr (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//hmin and hmax
+		this.hmin								= 100.;
+		this.hmax								= 100.e3;
+
+		//fields
+		this.fieldname							= "Vel";
+		this.err								= 3.;
+
+		//keep metric?
+		this.keepmetric							= 1;
+
+		//control of element lengths
+		this.gradation							= 1.5;
+
+		//other criterias
+		this.groundingline_resolution			= 500.;
+		this.groundingline_distance				= 0;
+		this.icefront_resolution				= 500;
+		this.icefront_distance					= 0;
+		this.thicknesserror_resolution			= 500;
+		this.thicknesserror_threshold			= 0;
+		this.thicknesserror_groupthreshold 		= 0;
+		this.thicknesserror_maximum				= 0;
+		this.deviatoricerror_resolution			= 500;	
+		this.deviatoricerror_threshold			= 0;	
+		this.deviatoricerror_groupthreshold		= 0;	
+		this.deviatoricerror_maximum			= 0;	
+
+		//is restart? This calls femmodel->ReMesh() before first time step. 
+		this.restart							= 0;
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   amr parameters:'));
+		fielddisplay(this,'hmin','minimum element length');
+		fielddisplay(this,'hmax','maximum element length');
+		fielddisplay(this,'fieldname','name of input that will be used to compute the metric (should be an input of FemModel)');
+		fielddisplay(this,'keepmetric','indicates whether the metric should be kept every remeshing time');
+		fielddisplay(this,'gradation','maximum ratio between two adjacent edges');
+		fielddisplay(this,'groundingline_resolution','element length near the grounding line');
+		fielddisplay(this,'groundingline_distance','distance around the grounding line which elements will be refined');
+		fielddisplay(this,'icefront_resolution','element length near the ice front');
+		fielddisplay(this,'icefront_distance','distance around the ice front which elements will be refined');
+		fielddisplay(this,'thicknesserror_resolution','element length when thickness error estimator is used');
+		fielddisplay(this,'thicknesserror_threshold','maximum threshold thickness error permitted');
+		fielddisplay(this,'thicknesserror_groupthreshold','maximum group threshold thickness error permitted');
+		fielddisplay(this,'thicknesserror_maximum','maximum thickness error permitted');
+		fielddisplay(this,'deviatoricerror_resolution','element length when deviatoric stress error estimator is used');
+		fielddisplay(this,'deviatoricerror_threshold','maximum threshold deviatoricstress error permitted');
+		fielddisplay(this,'deviatoricerror_groupthreshold','maximum group threshold deviatoricstress error permitted');
+		fielddisplay(this,'deviatoricerror_maximum','maximum deviatoricstress error permitted');
+		fielddisplay(this,'deviatoricerror_maximum','maximum deviatoricstress error permitted');
+		fielddisplay(this,'restart','indicates if ReMesh() will call before first time step');
+	}// }}}
+	this.classname= function(){// {{{
+		return "amr";
+
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) { //{{{
+		checkfield(md,'fieldname','amr.hmax','numel',[1],'>',0,'NaN',1);
+		checkfield(md,'fieldname','amr.hmin','numel',[1],'>',0,'<',this.hmax,'NaN',1);
+		checkfield(md,'fieldname','amr.keepmetric','numel',[1],'>=',0,'<=',1,'NaN',1);
+		checkfield(md,'fieldname','amr.gradation','numel',[1],'>=',1.1,'<=',5,'NaN',1);
+		checkfield(md,'fieldname','amr.groundingline_resolution','numel',[1],'>',0,'<',this.hmax,'NaN',1);
+		checkfield(md,'fieldname','amr.groundingline_distance','numel',[1],'>=',0,'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','amr.icefront_resolution','numel',[1],'>',0,'<',this.hmax,'NaN',1);
+		checkfield(md,'fieldname','amr.icefront_distance','numel',[1],'>=',0,'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','amr.thicknesserror_resolution','numel',[1],'>',0,'<',this.hmax,'NaN',1);
+		checkfield(md,'fieldname','amr.thicknesserror_threshold','numel',[1],'>=',0,'<=',1,'NaN',1);
+		checkfield(md,'fieldname','amr.thicknesserror_groupthreshold','numel',[1],'>=',0,'<=',1,'NaN',1);
+		checkfield(md,'fieldname','amr.thicknesserror_maximum','numel',[1],'>=',0,'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','amr.deviatoricerror_resolution','numel',[1],'>',0,'<',this.hmax,'NaN',1);
+		checkfield(md,'fieldname','amr.deviatoricerror_threshold','numel',[1],'>=',0,'<=',1,'NaN',1);
+		checkfield(md,'fieldname','amr.deviatoricerror_groupthreshold','numel',[1],'>=',0,'<=',1,'NaN',1);
+		checkfield(md,'fieldname','amr.deviatoricerror_maximum','numel',[1],'>=',0,'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','amr.restart','numel',[1],'>=',0,'<=',1,'NaN',1);
+	} // }}}
+	this.marshall=function(md,prefix,fid) { //{{{
+		WriteData(fid,prefix,'name','md.amr.type','data',1,'format','Integer');
+		WriteData(fid,prefix,'object',this,'fieldname','hmin','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','hmax','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','fieldname','format','String');
+		WriteData(fid,prefix,'object',this,'fieldname','err','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','keepmetric','format','Integer');
+		WriteData(fid,prefix,'object',this,'fieldname','gradation','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','groundingline_resolution','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','groundingline_distance','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','icefront_resolution','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','icefront_distance','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','thicknesserror_resolution','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','thicknesserror_threshold','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','thicknesserror_groupthreshold','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','thicknesserror_maximum','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','deviatoricerror_resolution','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','deviatoricerror_threshold','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','deviatoricerror_groupthreshold','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','deviatoricerror_maximum','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','restart','format','Integer');
+	}//}}}
+	this.fix=function() { //{{{
+	}//}}}
+	//properties 
+	// {{{
+	this.hmin								= 0.;
+	this.hmax								= 0.;
+	this.fieldname							= "";
+	this.err								= 0.;
+	this.keepmetric							= 0;
+	this.gradation							= 0.;
+	this.groundingline_resolution			= 0.;
+	this.groundingline_distance				= 0.;
+	this.icefront_resolution				= 0.;
+	this.icefront_distance					= 0.;
+	this.thicknesserror_resolution			= 0.;
+	this.thicknesserror_threshold			= 0.;
+	this.thicknesserror_groupthreshold		= 0.;
+	this.thicknesserror_maximum				= 0.;
+	this.deviatoricerror_resolution			= 0.;
+	this.deviatoricerror_threshold			= 0.;
+	this.deviatoricerror_groupthreshold		= 0.;
+	this.deviatoricerror_maximum			= 0.;
+	this.restart							= 0.;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/amr.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/amr.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/amr.m	(revision 27955)
@@ -0,0 +1,175 @@
+%AMR Class definition
+%
+%   Usage:
+%      md.amr=amr();
+
+classdef amr
+	properties (SetAccess=public) 
+		hmin = 0.; 
+		hmax = 0.;
+		fieldname = '';
+		err = 0.;
+		keepmetric = 0;
+		gradation = 0.;
+		groundingline_resolution = 0.;
+		groundingline_distance = 0.;
+		icefront_resolution = 0.;
+		icefront_distance = 0.;
+		thicknesserror_resolution = 0.;
+		thicknesserror_threshold = 0.;
+		thicknesserror_groupthreshold = 0.;
+		thicknesserror_maximum = 0.;
+		deviatoricerror_resolution = 0.;
+		deviatoricerror_threshold = 0.;
+		deviatoricerror_groupthreshold = 0.;
+		deviatoricerror_maximum = 0.;
+		restart=0.;
+	end
+	methods (Static)
+ 		function self = loadobj(self) % {{{
+         % This function is directly called by matlab when a model object is
+         % loaded. Update old properties here
+
+         if verLessThan('matlab','7.9'),
+            disp('Warning: your matlab version is old and there is a risk that load does not work correctly');
+            disp('         if the model is not loaded correctly, rename temporarily loadobj so that matlab does not use it');
+
+            % This is a Matlab bug: all the fields of md have their default value
+            % Example of error message:
+            % Warning: Error loading an object of class 'model':
+            % Undefined function or method 'exist' for input arguments of type 'cell'
+            %
+            % This has been fixed in MATLAB 7.9 (R2009b) and later versions
+         end
+
+         %2017 September 15th
+         if isstruct(self),
+            disp('WARNING: updating amr. Now the default is amr with bamg');
+            disp('         some old fields were not converted');
+            disp('         see the new fields typing md.amr and modify them properly');
+            obj2 = self;
+            self = amr();
+            %Converting region_level_max to groundingline_distance
+            if(obj2.region_level_max>0 && obj2.region_level_1>obj2.region_level_max)
+               self.groundingline_distance	= obj2.region_level_max;
+					self.keepmetric					= 0;
+					self.fieldname						= 'None';
+            end
+         end
+      end% }}}
+	end
+	methods
+		function self = amr(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%hmin and hmax
+			self.hmin=100.;
+			self.hmax=100.e3;
+
+			%fields
+			self.fieldname ='Vel';
+			self.err=3.;
+
+			%keep metric?
+			self.keepmetric=1;
+
+			%control of element lengths
+			self.gradation=1.5;
+
+			%other criteria
+			self.groundingline_resolution=500.;
+			self.groundingline_distance=0.;
+			self.icefront_resolution=500.;
+			self.icefront_distance=0.;
+			self.thicknesserror_resolution=500.;
+			self.thicknesserror_threshold=0.;
+			self.thicknesserror_groupthreshold=0.;
+			self.thicknesserror_maximum=0.;
+			self.deviatoricerror_resolution=500.;
+			self.deviatoricerror_threshold=0.;
+			self.deviatoricerror_groupthreshold=0.;
+			self.deviatoricerror_maximum=0.;
+			
+			%is restart? This calls femmodel->ReMesh() before first time step. 
+			self.restart=0;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','amr.hmax','numel',[1],'>',0,'NaN',1);
+			md = checkfield(md,'fieldname','amr.hmin','numel',[1],'>',0,'<',self.hmax,'NaN',1);
+			%md = checkfield(md,'fieldname','amr.fieldname','string',[1]);
+			md = checkfield(md,'fieldname','amr.keepmetric','numel',[1],'>=',0,'<=',1,'NaN',1);
+			md = checkfield(md,'fieldname','amr.gradation','numel',[1],'>=',1.1,'<=',5,'NaN',1);
+			md = checkfield(md,'fieldname','amr.groundingline_resolution','numel',[1],'>',0,'<',self.hmax,'NaN',1);
+			md = checkfield(md,'fieldname','amr.groundingline_distance','numel',[1],'>=',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','amr.icefront_resolution','numel',[1],'>',0,'<',self.hmax,'NaN',1);
+			md = checkfield(md,'fieldname','amr.icefront_distance','numel',[1],'>=',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','amr.thicknesserror_resolution','numel',[1],'>',0,'<',self.hmax,'NaN',1);
+			md = checkfield(md,'fieldname','amr.thicknesserror_threshold','numel',[1],'>=',0,'<=',1,'NaN',1);
+			md = checkfield(md,'fieldname','amr.thicknesserror_groupthreshold','numel',[1],'>=',0,'<=',1,'NaN',1);
+			md = checkfield(md,'fieldname','amr.thicknesserror_maximum','numel',[1],'>=',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','amr.deviatoricerror_resolution','numel',[1],'>',0,'<',self.hmax,'NaN',1);
+			md = checkfield(md,'fieldname','amr.deviatoricerror_threshold','numel',[1],'>=',0,'<=',1,'NaN',1);
+			md = checkfield(md,'fieldname','amr.deviatoricerror_groupthreshold','numel',[1],'>=',0,'<=',1,'NaN',1);
+			md = checkfield(md,'fieldname','amr.deviatoricerror_maximum','numel',[1],'>=',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','amr.restart','numel',[1],'>=',0,'<=',1,'NaN',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   amr parameters:'));
+
+			fielddisplay(self,'hmin',['minimum element length']);
+			fielddisplay(self,'hmax',['maximum element length']);
+			fielddisplay(self,'fieldname',['name of input that will be used to compute the metric (should be an input of FemModel)']);
+			fielddisplay(self,'keepmetric',['indicates whether the metric should be kept every remeshing time']);
+			fielddisplay(self,'gradation',['maximum ratio between two adjacent edges']);
+			fielddisplay(self,'groundingline_resolution',['element length near the grounding line']);
+			fielddisplay(self,'groundingline_distance',['distance around the grounding line which elements will be refined']);
+			fielddisplay(self,'icefront_resolution',['element length near the ice front']);
+			fielddisplay(self,'icefront_distance',['distance around the ice front which elements will be refined']);
+			fielddisplay(self,'thicknesserror_resolution',['element length when thickness error estimator is used']);
+			fielddisplay(self,'thicknesserror_threshold',['maximum threshold thickness error permitted']);
+			fielddisplay(self,'thicknesserror_groupthreshold',['maximum group threshold thickness error permitted']);
+			fielddisplay(self,'thicknesserror_maximum',['maximum thickness error permitted']);
+			fielddisplay(self,'deviatoricerror_resolution',['element length when deviatoric stress error estimator is used']);
+			fielddisplay(self,'deviatoricerror_threshold',['maximum threshold deviatoricstress error permitted']);
+			fielddisplay(self,'deviatoricerror_groupthreshold',['maximum group threshold deviatoricstress error permitted']);
+			fielddisplay(self,'deviatoricerror_maximum',['maximum deviatoricstress error permitted']);
+			fielddisplay(self,'restart',['indicates if ReMesh() will call before first time step']);
+		end % }}}
+			function savemodeljs(self,fid,modelname) % {{{
+			%error('not implemented yet!');
+		end % }}}
+	function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'name','md.amr.type','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','hmin','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','hmax','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','fieldname','format','String');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','err','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','keepmetric','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','gradation','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','groundingline_resolution','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','groundingline_distance','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','icefront_resolution','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','icefront_distance','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','thicknesserror_resolution','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','thicknesserror_threshold','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','thicknesserror_groupthreshold','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','thicknesserror_maximum','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','deviatoricerror_resolution','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','deviatoricerror_threshold','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','deviatoricerror_groupthreshold','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','deviatoricerror_maximum','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','restart','format','Integer');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/amr.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/amr.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/amr.py	(revision 27955)
@@ -0,0 +1,135 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class amr(object):
+    """AMR Class definition
+
+    Usage:
+        amr = amr()
+    """
+
+    def __init__(self):  # {{{
+        self.hmin = 0
+        self.hmax = 0
+        self.fieldname = ''
+        self.err = 0
+        self.keepmetric = 0
+        self.gradation = 0
+        self.groundingline_resolution = 0
+        self.groundingline_distance = 0
+        self.icefront_resolution = 0
+        self.icefront_distance = 0
+        self.thicknesserror_resolution = 0
+        self.thicknesserror_threshold = 0
+        self.thicknesserror_groupthreshold = 0
+        self.thicknesserror_maximum = 0
+        self.deviatoricerror_resolution = 0
+        self.deviatoricerror_threshold = 0
+        self.deviatoricerror_groupthreshold = 0
+        self.deviatoricerror_maximum = 0
+        self.restart = 0
+
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   amr parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'hmin', 'minimum element length'))
+        s += '{}\n'.format(fielddisplay(self, 'hmax', 'maximum element length'))
+        s += '{}\n'.format(fielddisplay(self, 'fieldname', 'name of input that will be used to compute the metric (should be an input of FemModel)'))
+        s += '{}\n'.format(fielddisplay(self, 'keepmetric', 'indicates whether the metric should be kept every remeshing time'))
+        s += '{}\n'.format(fielddisplay(self, 'gradation', 'maximum ratio between two adjacent edges'))
+        s += '{}\n'.format(fielddisplay(self, 'groundingline_resolution', 'element length near the grounding line'))
+        s += '{}\n'.format(fielddisplay(self, 'groundingline_distance', 'distance around the grounding line which elements will be refined'))
+        s += '{}\n'.format(fielddisplay(self, 'icefront_resolution', 'element length near the ice front'))
+        s += '{}\n'.format(fielddisplay(self, 'icefront_distance', 'distance around the ice front which elements will be refined'))
+        s += '{}\n'.format(fielddisplay(self, 'thicknesserror_resolution', 'element length when thickness error estimator is used'))
+        s += '{}\n'.format(fielddisplay(self, 'thicknesserror_threshold', 'maximum threshold thickness error permitted'))
+        s += '{}\n'.format(fielddisplay(self, 'thicknesserror_groupthreshold', 'maximum group threshold thickness error permitted'))
+        s += '{}\n'.format(fielddisplay(self, 'thicknesserror_maximum', 'maximum thickness error permitted'))
+        s += '{}\n'.format(fielddisplay(self, 'deviatoricerror_resolution', 'element length when deviatoric stress error estimator is used'))
+        s += '{}\n'.format(fielddisplay(self, 'deviatoricerror_threshold', 'maximum threshold deviatoricstress error permitted'))
+        s += '{}\n'.format(fielddisplay(self, 'deviatoricerror_groupthreshold', 'maximum group threshold deviatoric stress error permitted'))
+        s += '{}\n'.format(fielddisplay(self, 'deviatoricerror_maximum', 'maximum deviatoricstress error permitted'))
+        s += '{}\n'.format(fielddisplay(self, 'restart', 'indicates if ReMesh() will call before first time step'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.hmin = 100
+        self.hmax = 100e3
+
+        # Fields
+        self.fieldname = 'Vel'
+        self.err = 3
+
+        # Keep metric?
+        self.keepmetric = 1
+
+        # Control of element lengths
+        self.gradation = 1.5
+
+        # Other criteria
+        self.groundingline_resolution = 500
+        self.groundingline_distance = 0
+        self.icefront_resolution = 500
+        self.icefront_distance = 0
+        self.thicknesserror_resolution = 500
+        self.thicknesserror_threshold = 0
+        self.thicknesserror_groupthreshold = 0
+        self.thicknesserror_maximum = 0
+        self.deviatoricerror_resolution = 500
+        self.deviatoricerror_threshold = 0
+        self.deviatoricerror_groupthreshold = 0
+        self.deviatoricerror_maximum = 0
+
+        # Is restart? This calls femmodel->ReMesh() before first time step.
+        self.restart = 0
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        md = checkfield(md, 'fieldname', 'amr.hmax', 'numel', [1], '>', 0, 'NaN', 1)
+        md = checkfield(md, 'fieldname', 'amr.hmin', 'numel', [1], '>', 0, '<', self.hmax, 'NaN', 1)
+        md = checkfield(md, 'fieldname', 'amr.keepmetric', 'numel', [1], '>=', 0, '<=', 1, 'NaN', 1)
+        md = checkfield(md, 'fieldname', 'amr.gradation', 'numel', [1], '>=', 1.1, '<=', 5, 'NaN', 1)
+        md = checkfield(md, 'fieldname', 'amr.groundingline_resolution', 'numel', [1], '>', 0, '<', self.hmax, 'NaN', 1)
+        md = checkfield(md, 'fieldname', 'amr.groundingline_distance', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'amr.icefront_resolution', 'numel', [1], '>', 0, '<', self.hmax, 'NaN', 1)
+        md = checkfield(md, 'fieldname', 'amr.icefront_distance', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'amr.thicknesserror_resolution', 'numel', [1], '>', 0, '<', self.hmax, 'NaN', 1)
+        md = checkfield(md, 'fieldname', 'amr.thicknesserror_threshold', 'numel', [1], '>=', 0, '<=', 1, 'NaN', 1)
+        md = checkfield(md, 'fieldname', 'amr.thicknesserror_groupthreshold', 'numel', [1], '>=', 0, '<=', 1, 'NaN', 1)
+        md = checkfield(md, 'fieldname', 'amr.thicknesserror_maximum', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'amr.deviatoricerror_resolution', 'numel', [1], '>', 0, '<', self.hmax, 'NaN', 1)
+        md = checkfield(md, 'fieldname', 'amr.deviatoricerror_threshold', 'numel', [1], '>=', 0, '<=', 1, 'NaN', 1)
+        md = checkfield(md, 'fieldname', 'amr.deviatoricerror_groupthreshold', 'numel', [1], '>=', 0, '<=', 1, 'NaN', 1)
+        md = checkfield(md, 'fieldname', 'amr.deviatoricerror_maximum', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'amr.restart', 'numel', [1], '>=', 0, '<=', 1, 'NaN', 1)
+        return md
+   # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'name', 'md.amr.type', 'data', 1, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'hmin', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'hmax', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'fieldname', 'format', 'String')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'err', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'keepmetric', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'gradation', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'groundingline_resolution', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'groundingline_distance', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'icefront_resolution', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'icefront_distance', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'thicknesserror_resolution', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'thicknesserror_threshold', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'thicknesserror_groupthreshold', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'thicknesserror_maximum', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'deviatoricerror_resolution', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'deviatoricerror_threshold', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'deviatoricerror_groupthreshold', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'deviatoricerror_maximum', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'amr', 'fieldname', 'restart', 'format', 'Integer')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/amrneopz.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/amrneopz.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/amrneopz.m	(revision 27955)
@@ -0,0 +1,159 @@
+%AMRNEOPZ Class definition
+%
+%   Usage:
+%      md.amr=amrneopz();
+
+classdef amrneopz
+	properties (SetAccess=public) 
+		level_max								= 0; 
+		gradation								= 0;
+      lag										= 0;
+		groundingline_distance				= 0;
+      icefront_distance						= 0;
+      thicknesserror_threshold			= 0;
+      thicknesserror_groupthreshold 	= 0;
+      thicknesserror_maximum				= 0;
+		deviatoricerror_threshold			= 0;
+		deviatoricerror_groupthreshold	= 0;
+		deviatoricerror_maximum				= 0;
+		restart									= 0;
+	end
+   methods (Static)
+      %function self = loadobj(self) % {{{
+         % This function is directly called by matlab when a model object is
+         % loaded. Update old properties here
+
+			%if verLessThan('matlab','7.9'),
+         %   disp('Warning: your matlab version is old and there is a risk that load does not work correctly');
+         %   disp('         if the model is not loaded correctly, rename temporarily loadobj so that matlab does not use it');
+
+            % This is a Matlab bug: all the fields of md have their default value
+            % Example of error message:
+            % Warning: Error loading an object of class 'model':
+            % Undefined function or method 'exist' for input arguments of type 'cell'
+            %
+            % This has been fixed in MATLAB 7.9 (R2009b) and later versions
+			%end
+
+         %2017 September 15th
+         %if isstruct(self),
+         %   disp('WARNING: updating amr');
+         %   disp('         md.amr.region_level_max is now md.amr.radius_level_max');
+         %   disp('         md.amr.region_level_1 is not being used; now gradation is used instead');
+         %   obj2 						= self;
+         %   self 						= amr();
+         %   %Converting region_level_1 to gradation
+			%	if(obj2.region_level_max>0 && obj2.region_level_1>obj2.region_level_max) 
+			%		alpha=0;
+			%		if(obj2.level_max>1) alpha=log(obj2.region_level_1/obj2.region_level_max)/(obj2.level_max-1);end
+			%		self.radius_level_max			= obj2.region_level_max;
+			%		self.level_max						= obj2.level_max;
+			%		self.gradation						= exp(alpha);
+         %   	self.lag								= 1.0;
+			%		self.groundingline_distance 	= 0;
+			%		self.icefront_distance 			= 0;
+			%		self.thicknesserror_threshold = 0;
+			%		self.deviatoricerror_threshold= 0;
+			%	end
+         %end
+
+			%2017 November 24th
+			%radius_level_max was deleted!
+
+			%2017 December 18th
+			%group threshold was inserted
+
+      %end% }}}
+   end
+	methods
+		function self = amrneopz(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%filter parameters:
+			self.level_max								= 2;
+			self.gradation								= 1.5;
+			self.lag										= 1.1;
+		
+ 			%other criterias
+         self.groundingline_distance			= 10000;
+         self.icefront_distance					= 0;
+         self.thicknesserror_threshold			= 0;
+         self.thicknesserror_groupthreshold	= 0;
+			self.thicknesserror_maximum			= 0; 
+			self.deviatoricerror_threshold		= 0;
+			self.deviatoricerror_groupthreshold = 0;
+			self.deviatoricerror_maximum			= 0;
+			self.restart								= 0;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','amr.level_max','numel',[1],'>=',0,'<=',5);
+   		md = checkfield(md,'fieldname','amr.gradation','numel',[1],'>=',1.1,'<=',5.0,'NaN',1);
+   		md = checkfield(md,'fieldname','amr.lag','numel',[1],'>=',1.0,'<=',3.0,'NaN',1);
+         md = checkfield(md,'fieldname','amr.groundingline_distance','numel',[1],'>=',0,'NaN',1,'Inf',1);
+         md = checkfield(md,'fieldname','amr.icefront_distance','numel',[1],'>=',0,'NaN',1,'Inf',1);
+         md = checkfield(md,'fieldname','amr.thicknesserror_threshold','numel',[1],'>=',0,'<=',1,'NaN',1);
+         md = checkfield(md,'fieldname','amr.thicknesserror_groupthreshold','numel',[1],'>=',0,'<=',1,'NaN',1);
+         md = checkfield(md,'fieldname','amr.thicknesserror_maximum','numel',[1],'>=',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','amr.deviatoricerror_threshold','numel',[1],'>=',0,'<=',1,'NaN',1);			
+			md = checkfield(md,'fieldname','amr.deviatoricerror_groupthreshold','numel',[1],'>=',0,'<=',1,'NaN',1);			
+         md = checkfield(md,'fieldname','amr.deviatoricerror_maximum','numel',[1],'>=',0,'NaN',1,'Inf',1);		
+		   md = checkfield(md,'fieldname','amr.restart','numel',[1],'>=',0,'<=',1,'NaN',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   amrneopz parameters:'));
+
+			fielddisplay(self,'level_max',['maximum refinement level (1, 2, 3, 4 or 5)']);
+			fielddisplay(self,'gradation',['maximum ratio between two adjacent edges']);
+			fielddisplay(self,'lag',['lag used to unrefine the elements']);
+         fielddisplay(self,'groundingline_distance',['distance around the grounding line which elements will be refined']);
+         fielddisplay(self,'icefront_distance',['distance around the ice front which elements will be refined']);
+         fielddisplay(self,'thicknesserror_threshold',['maximum threshold thickness error permitted']);
+         fielddisplay(self,'thicknesserror_groupthreshold',['maximum group threshold thickness error permitted']);
+         fielddisplay(self,'thicknesserror_maximum',['maximum thickness error permitted']);
+			fielddisplay(self,'deviatoricerror_threshold',['maximum threshold deviatoricstress error permitted']);
+			fielddisplay(self,'deviatoricerror_groupthreshold',['maximum group threshold deviatoricstress error permitted']);
+			fielddisplay(self,'deviatoricerror_maximum',['maximum deviatoricstress error permitted']);
+         fielddisplay(self,'restart',['indicates if ReMesh() will call before first time step']);
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'name','md.amr.type','data',2,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','level_max','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','gradation','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','lag','format','Double');
+         WriteData(fid,prefix,'object',self,'class','amr','fieldname','groundingline_distance','format','Double');
+         WriteData(fid,prefix,'object',self,'class','amr','fieldname','icefront_distance','format','Double');
+         WriteData(fid,prefix,'object',self,'class','amr','fieldname','thicknesserror_threshold','format','Double');
+         WriteData(fid,prefix,'object',self,'class','amr','fieldname','thicknesserror_groupthreshold','format','Double');
+         WriteData(fid,prefix,'object',self,'class','amr','fieldname','thicknesserror_maximum','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','deviatoricerror_threshold','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','deviatoricerror_groupthreshold','format','Double');
+			WriteData(fid,prefix,'object',self,'class','amr','fieldname','deviatoricerror_maximum','format','Double');
+		   WriteData(fid,prefix,'object',self,'class','amr','fieldname','restart','format','Integer');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.amr.level_max'],self.level_max);
+			writejsdouble(fid,[modelname '.amr.gradation'],self.gradation);
+			writejsdouble(fid,[modelname '.amr.lag'],self.lag);
+			writejsdouble(fid,[modelname '.amr.groundingline_distance'],self.groundingline_distance);
+			writejsdouble(fid,[modelname '.amr.icefront_distance'],self.icefront_distance);
+			writejsdouble(fid,[modelname '.amr.thicknesserror_threshold'],self.thicknesserror_threshold);
+			writejsdouble(fid,[modelname '.amr.thicknesserror_groupthreshold'],self.thicknesserror_threshold);
+			writejsdouble(fid,[modelname '.amr.thicknesserror_maximum'],self.thicknesserror_maximum);
+			writejsdouble(fid,[modelname '.amr.deviatoricerror_threshold'],self.deviatoricerror_threshold);
+			writejsdouble(fid,[modelname '.amr.deviatoricerror_groupthreshold'],self.deviatoricerror_threshold);
+			writejsdouble(fid,[modelname '.amr.deviatoricerror_maximum'],self.deviatoricerror_maximum);
+			writejsdouble(fid,[modelname '.amr.restart'],self.restart);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/autodiff.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/autodiff.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/autodiff.js	(revision 27955)
@@ -0,0 +1,240 @@
+//AUTODIFF class definition
+//
+//   Usage:
+//      autodiff=new autodiff();
+
+function autodiff (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		this.obufsize     = 524288;
+		this.lbufsize     = 524288;
+		this.cbufsize     = 524288;
+		this.tbufsize     = 524288;
+		this.gcTriggerRatio=2.0;
+		this.gcTriggerMaxSize=65536;
+		this.tapeAlloc    = 15000000;
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   automatic differentiation parameters:'));
+		fielddisplay(this,'isautodiff','indicates if the automatic differentiation is activated');
+		fielddisplay(this,'dependents','list of dependent variables');
+		fielddisplay(this,'independents','list of independent variables');
+		fielddisplay(this,'driver',"ADOLC driver ('fos_forward' or 'fov_forward')");
+		fielddisplay(this,'obufsize','Number of operations per buffer (==OBUFSIZE in usrparms.h)');
+		fielddisplay(this,'lbufsize','Number of locations per buffer (==LBUFSIZE in usrparms.h)');
+		fielddisplay(this,'cbufsize','Number of values per buffer (==CBUFSIZE in usrparms.h)');
+		fielddisplay(this,'tbufsize','Number of taylors per buffer (<=TBUFSIZE in usrparms.h)');
+		fielddisplay(this,'gcTriggerRatio','free location block sorting/consolidation triggered if the ratio between allocated and used locations exceeds gcTriggerRatio');
+		fielddisplay(this,'gcTriggerMaxSize','free location block sorting/consolidation triggered if the allocated locations exceed gcTriggerMaxSize');
+		fielddisplay(this,'tapeAlloc','Iteration count of a priori memory allocation of the AD tape');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "autodiff";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			//Early return 
+			if (!this.isautodiff) return; 
+
+			//Driver value:
+			checkfield(md,'fieldname','autodiff.driver','values',['fos_forward','fov_forward','fov_forward_all','fos_reverse','fov_reverse','fov_reverse_all']);
+			
+			//buffer values: 
+			checkfield(md,'fieldname','autodiff.obufsize','>=',16);
+			checkfield(md,'fieldname','autodiff.lbufsize','>=',16);
+			checkfield(md,'fieldname','autodiff.cbufsize','>=',16);
+			checkfield(md,'fieldname','autodiff.tbufsize','>=',16);
+			checkfield(md,'fieldname','autodiff.gcTriggerRatio','>=',0);
+			checkfield(md,'fieldname','autodiff.gcTriggerMaxSize','>=',65536);
+			checkfield(md,'fieldname','autodiff.tapeAlloc','>=',0);
+
+			//go through our dependents and independents and check consistency: 
+			for (var i=0;i<this.dependents.length;i++){
+				dep=this.dependents[i];
+				dep.checkconsistency(md,solution,analyses);
+			}
+			for (var i=0;i<this.independents.length;i++){
+				indep=this.independents[i];
+				indep.checkconsistency(md,i,solution,analyses,this.driver);
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			WriteData(fid,prefix,'object',this,'fieldname','isautodiff','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','driver','format','String');
+
+			//early return
+			if (!this.isautodiff){
+				WriteData(fid,prefix,'data',false,'name','md.autodiff.mass_flux_segments_present','format','Boolean');
+				WriteData(fid,prefix,'data',false,'name','md.autodiff.keep','format','Boolean');
+				return;
+			}
+
+			//buffer sizes {{{
+			WriteData(fid,prefix,'object',this,'fieldname','obufsize','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','lbufsize','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','cbufsize','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','tbufsize','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','gcTriggerRatio','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','gcTriggerMaxSize','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','tapeAlloc','format','Integer');
+			//}}}
+			//process dependent variables {{{
+			num_dependent_objects=this.dependents.length;
+			WriteData(fid,prefix,'data',num_dependent_objects,'name','md.autodiff.num_dependent_objects','format','Integer');
+
+			if(num_dependent_objects){
+				var names=[];
+				types=NewArrayFill(num_dependent_objects,0);
+				indices=NewArrayFill(num_dependent_objects,0);
+
+				for (var i=0;i<num_dependent_objects;i++){
+					dep=this.dependents[i];
+
+					names.push(dep.name);
+					types[i]=dep.typetoscalar();
+					indices[i]=dep.index;
+				}
+				WriteData(fid,prefix,'data',names,'name','md.autodiff.dependent_object_names','format','StringArray');
+				WriteData(fid,prefix,'data',types,'name','md.autodiff.dependent_object_types','format','IntMat','mattype',3);
+				WriteData(fid,prefix,'data',indices,'name','md.autodiff.dependent_object_indices','format','IntMat','mattype',3);
+			}
+			//}}}
+			//process independent variables {{{
+			num_independent_objects=this.independents.length;
+			WriteData(fid,prefix,'data',num_independent_objects,'name','md.autodiff.num_independent_objects','format','Integer');
+
+			if(num_independent_objects){
+				names=NewArrayFill(num_independent_objects,0);
+				types=NewArrayFill(num_independent_objects,0);
+
+				for (var i=0;i<num_independent_objects;i++){
+					indep=this.independents[i];
+
+					names[i]=indep.name;
+					types[i]=indep.typetoscalar();
+				}
+				WriteData(fid,prefix,'data',names,'name','md.autodiff.independent_object_names','format','StringArray');
+				WriteData(fid,prefix,'data',types,'name','md.autodiff.independent_object_types','format','IntMat','mattype',3);
+			}
+			//}}}
+			//if driver is fos_forward, build index:  {{{
+			if (this.driver == 'fos_forward'){
+				var index=0;
+
+				for (var i=0;i<num_independent_objects;i++){
+					indep=this.independents[i];
+					if (!(isNaN(indep.fos_forward_index))){
+						index=index+indep.fos_forward_index;
+						break;
+					}
+					else{
+						if (indep.type=='scalar') index=index+1;
+						else index=index+indep.nods;
+					}
+				}
+				index=index-1; //get c-index numbering going
+				WriteData(fid,prefix,'data',index,'name','md.autodiff.fos_forward_index','format','Integer');
+			}
+			//}}}
+			//if driver is fos_reverse, build index:  {{{
+			if (this.driver  == 'fos_reverse'){
+				var index=0;
+
+				for (var i=0;i<num_dependent_objects;i++){
+					dep=this.dependents[i];
+					if (!(isNaN(dep.fos_reverse_index))){
+						index=index+dep.fos_reverse_index;
+						break;
+					}
+					else{
+						if (dep.type =='scalar') index=index+1;
+						else index=index+dep.nods;
+					}
+				}
+				index=index-1; //get c-index numbering going
+				WriteData(fid,prefix,'data',index,'name','md.autodiff.fos_reverse_index','format','Integer');
+			}
+			//}}}
+			//if driver is fov_forward, build indices:  {{{
+			if (this.driver == 'fov_forward'){
+				var indices=0;
+
+				for (var i=0;i<num_independent_objects;i++){
+					indep=this.independents[i];
+					if (!indep.fos_forward_index.length){
+						indices=indices+indep.fov_forward_indices;
+						break;
+					}
+					else{
+						if (indep.type =='scalar') indices=indices+1;
+						else indices=indices+indep.nods;
+					}
+				}
+				indices=indices-1; //get c-indices numbering going
+				WriteData(fid,prefix,'data',indices,'name','md.autodiff.fov_forward_indices','format','IntMat','mattype',3);
+			}
+			//}}}
+			//deal with mass fluxes:  {{{
+			mass_flux_segments=[];
+			for (var i=0;i<num_dependent_objects;i++){
+				dep=this.dependents[i];
+				if (dep.name =='MassFlux'){
+					mass_flux_segments.push(dep.segments);
+				}
+			}
+			if (mass_flux_segments.length){
+				WriteData(fid,prefix,'data',mass_flux_segments,'name','md.autodiff.mass_flux_segments','format','MatArray');
+				flag=true;
+			}
+			else flag=false;
+			WriteData(fid,prefix,'data',flag,'name','md.autodiff.mass_flux_segments_present','format','Boolean');
+			//}}}
+			//deal with trace keep on: {{{
+			keep=false;
+
+			//From ADOLC userdoc: 
+			// The optional integer argument keep of trace on determines whether the numerical values of all active variables are 
+			// recorded in a buffered temporary array or file called the taylor stack. This option takes effect if keep = 1 and 
+			// prepares the scene for an immediately following gradient evaluation by a call to a routine implementing the reverse 
+			// mode as described in the Section 4 and Section 5. 
+			//
+
+			if (this.driver.length<=3) keep=false; //there is no "_reverse" string within the driver string: 
+			else{
+				if (this.driver.splice(4) == '_reverse') keep=true;
+				else keep=false;
+			}
+			WriteData(fid,prefix,'data',keep,'name','md.autodiff.keep','format','Boolean');
+			//}}}
+		}//}}}
+		this.fix=function() { //{{{
+			this.obufsize=NullFix(this.obufsize,NaN);
+			this.lbufsize=NullFix(this.lbufsize,NaN);
+			this.cbufsize=NullFix(this.cbufsize,NaN);
+			this.tbufsize=NullFix(this.tbufsize,NaN);
+			this.gcTriggerRatio=NullFix(this.gcTriggerRatio,NaN);
+			this.gcTriggerMaxSize=NullFix(this.gcTriggerMaxSize,NaN);
+			this.tapeAlloc=NullFix(this.tapeAlloc,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.isautodiff   = false;
+	this.dependents   = [];
+	this.independents = [];
+	this.driver       = 'fos_forward';
+	this.obufsize     = NaN;
+	this.lbufsize     = NaN;
+	this.cbufsize     = NaN;
+	this.tbufsize     = NaN;
+	this.gcTriggerRatio = NaN;
+	this.gcTriggerMaxSize = NaN;
+	this.tapeAlloc = NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/autodiff.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/autodiff.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/autodiff.m	(revision 27955)
@@ -0,0 +1,242 @@
+%AUTODIFF class definition
+%
+%   Usage:
+%      autodiff=autodiff();
+
+classdef autodiff
+	properties (SetAccess=public)  
+		% {{{ 
+		isautodiff   = false;
+		dependents   = {};
+		independents = {};
+		driver       = 'fos_forward';
+		obufsize     = NaN;
+		lbufsize     = NaN;
+		cbufsize     = NaN;
+		tbufsize     = NaN;
+		gcTriggerRatio = NaN;
+		gcTriggerMaxSize = NaN;
+		tapeAlloc = NaN;
+		end
+		%}}}
+	methods
+		function self = autodiff(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		self.obufsize     = 524288;
+		self.lbufsize     = 524288;
+		self.cbufsize     = 524288;
+		self.tbufsize     = 524288;
+		self.gcTriggerRatio=2.0;
+		self.gcTriggerMaxSize=65536;
+		self.tapeAlloc    = 15000000;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return 
+			if ~self.isautodiff, return; end
+
+			%Driver value:
+			md = checkfield(md,'fieldname','autodiff.driver','values',{'fos_forward','fov_forward','fov_forward_all','fos_reverse','fov_reverse','fov_reverse_all'});
+			
+			%buffer values: 
+			md = checkfield(md,'fieldname','autodiff.obufsize','>=',16);
+			md = checkfield(md,'fieldname','autodiff.lbufsize','>=',16);
+			md = checkfield(md,'fieldname','autodiff.cbufsize','>=',16);
+			md = checkfield(md,'fieldname','autodiff.tbufsize','>=',16);
+			md = checkfield(md,'fieldname','autodiff.gcTriggerRatio','>=',0);
+			md = checkfield(md,'fieldname','autodiff.gcTriggerMaxSize','>=',65536);
+			md = checkfield(md,'fieldname','autodiff.tapeAlloc','>=',0);
+
+			%go through our dependents and independents and check consistency: 
+			for i=1:numel(self.dependents),
+				dep=self.dependents{i};
+				if isempty(dep)
+					md = checkmessage(md,['md.autodiff.dependents{' num2str(i) '} is empty!']);
+				else
+					md=checkconsistency(dep,md,solution,analyses);
+				end
+			end
+			for i=1:numel(self.independents),
+				indep=self.independents{i};
+				if isempty(indep)
+					md = checkmessage(md,['md.autodiff.independents{' num2str(i) '} is empty!']);
+				else
+					md=checkconsistency(indep,md,i,solution,analyses,self.driver);
+				end
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   automatic differentiation parameters:'));
+			fielddisplay(self,'isautodiff','indicates if the automatic differentiation is activated');
+			fielddisplay(self,'dependents','list of dependent variables');
+			fielddisplay(self,'independents','list of independent variables');
+			fielddisplay(self,'driver','ADOLC driver (''fos_forward'' or ''fov_forward'')');
+			fielddisplay(self,'obufsize','Number of operations per buffer (==OBUFSIZE in usrparms.h)');
+			fielddisplay(self,'lbufsize','Number of locations per buffer (==LBUFSIZE in usrparms.h)');
+			fielddisplay(self,'cbufsize','Number of values per buffer (==CBUFSIZE in usrparms.h)');
+			fielddisplay(self,'tbufsize','Number of taylors per buffer (<=TBUFSIZE in usrparms.h)');
+			fielddisplay(self,'gcTriggerRatio','free location block sorting/consolidation triggered if the ratio between allocated and used locations exceeds gcTriggerRatio');
+			fielddisplay(self,'gcTriggerMaxSize','free location block sorting/consolidation triggered if the allocated locations exceed gcTriggerMaxSize');
+			fielddisplay(self,'tapeAlloc','Iteration count of a priori memory allocation of the AD tape');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'object',self,'fieldname','isautodiff','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','driver','format','String');
+
+			%early return
+			if ~self.isautodiff,
+				WriteData(fid,prefix,'data',false,'name','md.autodiff.mass_flux_segments_present','format','Boolean');
+				WriteData(fid,prefix,'data',false,'name','md.autodiff.keep','format','Boolean');
+				return;
+			end
+
+			%buffer sizes {{{
+			WriteData(fid,prefix,'object',self,'fieldname','obufsize','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','lbufsize','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','cbufsize','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','tbufsize','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','gcTriggerRatio','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','gcTriggerMaxSize','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','tapeAlloc','format','Integer');
+			%}}}
+			%process dependent variables {{{
+			num_dependent_objects=numel(self.dependents);
+			WriteData(fid,prefix,'data',num_dependent_objects,'name','md.autodiff.num_dependent_objects','format','Integer');
+
+			if(num_dependent_objects),
+				names={};
+				for i=1:num_dependent_objects,
+					dep=self.dependents{i};
+					names{i}=dep.name;
+				end
+				WriteData(fid,prefix,'data',names,'name','md.autodiff.dependent_object_names','format','StringArray');
+			end
+			%}}}
+			%process independent variables {{{
+			num_independent_objects=numel(self.independents);
+			WriteData(fid,prefix,'data',num_independent_objects,'name','md.autodiff.num_independent_objects','format','Integer');
+			for i=1:num_independent_objects
+				indep=self.independents{i};
+				WriteData(fid,prefix,'data',indep.name,'name','md.autodiff.independent_name','format','String');
+				WriteData(fid,prefix,'data',indep.typetoscalar(),'name','md.autodiff.independent_type','format','Integer');
+				WriteData(fid,prefix,'data',indep.min_parameters,'name','md.autodiff.independent_min_parameters','format','DoubleMat','mattype',3);
+				WriteData(fid,prefix,'data',indep.max_parameters,'name','md.autodiff.independent_max_parameters','format','DoubleMat','mattype',3);
+				WriteData(fid,prefix,'data',indep.control_scaling_factor,'name','md.autodiff.independent_scaling_factor','format','Double');
+				WriteData(fid,prefix,'data',indep.control_size,'name','md.autodiff.independent_control_size','format','Integer');
+			end
+			%}}}
+			%if driver is fos_forward, build index:  {{{
+			if strcmpi(self.driver,'fos_forward'),
+				index=0;
+
+				for i=1:num_independent_objects,
+					indep=self.independents{i};
+					if ~isnan(indep.fos_forward_index),
+						index=index+indep.fos_forward_index;
+						break;
+					else
+						if strcmpi(indep.type,'scalar'),
+							index=index+1;
+						else
+							index=index+indep.nods;
+						end
+					end
+				end
+				index=index-1; %get c-index numbering going
+				WriteData(fid,prefix,'data',index,'name','md.autodiff.fos_forward_index','format','Integer');
+			end
+			%}}}
+			%if driver is fos_reverse, build index:  {{{
+			if strcmpi(self.driver,'fos_reverse'),
+				index=0;
+
+				for i=1:num_dependent_objects,
+					dep=self.dependents{i};
+					if ~isnan(dep.fos_reverse_index),
+						index=index+dep.fos_reverse_index;
+						break;
+					else
+						index=index+1;
+					end
+				end
+				index=index-1; %get c-index numbering going
+				WriteData(fid,prefix,'data',index,'name','md.autodiff.fos_reverse_index','format','Integer');
+			end
+			%}}}
+			%if driver is fov_forward, build indices:  {{{
+			if strcmpi(self.driver,'fov_forward'),
+				indices=0;
+
+				for i=1:num_independent_objects,
+					indep=self.independents{i};
+					if ~isempty(indep.fos_forward_index),
+						indices=indices+indep.fov_forward_indices;
+						break;
+					else
+						if strcmpi(indep.type,'scalar'),
+							indices=indices+1;
+						else
+							indices=indices+indep.nods;
+						end
+					end
+				end
+				indices=indices-1; %get c-indices numbering going
+				WriteData(fid,prefix,'data',indices,'name','md.autodiff.fov_forward_indices','format','IntMat','mattype',3);
+			end
+			%}}}
+			%deal with mass fluxes:  {{{
+			mass_flux_segments=cell(0,1);
+			for i=1:num_dependent_objects,
+				dep=self.dependents{i};
+				if strcmpi(dep.name,'MassFlux'),
+					mass_flux_segments{end+1,1}=dep.segments;
+				end
+			end
+			if ~isempty(mass_flux_segments), 
+				WriteData(fid,prefix,'data',mass_flux_segments,'name','md.autodiff.mass_flux_segments','format','MatArray');
+				flag=true;
+			else
+				flag=false;
+			end
+			WriteData(fid,prefix,'data',flag,'name','md.autodiff.mass_flux_segments_present','format','Boolean');
+			%}}}
+			%deal with trace keep on: {{{
+			keep=false;
+
+			%From ADOLC userdoc: 
+			% The optional integer argument keep of trace on determines whether the numerical values of all active variables are 
+			% recorded in a buffered temporary array or file called the taylor stack. This option takes effect if keep = 1 and 
+			% prepares the scene for an immediately following gradient evaluation by a call to a routine implementing the reverse 
+			% mode as described in the Section 4 and Section 5. 
+			%
+
+			if length(self.driver)<=3,
+				keep=false; %there is no "_reverse" string within the driver string: 
+			else
+				if strncmpi(self.driver(4:end),'_reverse',8),
+					keep=true;
+				else
+					keep=false;
+				end
+			end
+			WriteData(fid,prefix,'data',keep,'name','md.autodiff.keep','format','Boolean');
+			%}}}
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+			%do nothing for now
+			if self.isautodiff,
+				error('autodiff savemodeljs error message: not implemented yet!');
+			end
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/autodiff.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/autodiff.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/autodiff.py	(revision 27955)
@@ -0,0 +1,209 @@
+import numpy as np
+from dependent import dependent
+from independent import independent
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+from MatlabArray import *
+
+
+class autodiff(object):
+    """autodiff class definition
+
+    Usage:
+        autodiff = autodiff()
+    """
+    def __init__(self, *args):  # {{{
+        self.isautodiff = False
+        self.dependents = []
+        self.independents = []
+        self.driver = 'fos_forward'
+        self.obufsize = np.nan
+        self.lbufsize = np.nan
+        self.cbufsize = np.nan
+        self.tbufsize = np.nan
+        self.gcTriggerMaxSize = np.nan
+        self.gcTriggerRatio = np.nan
+        self.tapeAlloc = np.nan
+        if not len(args):
+            self.setdefaultparameters()
+        else:
+            raise RuntimeError("constructor not supported")
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '      automatic differentiation parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'isautodiff', "indicates if the automatic differentiation is activated"))
+        s += '{}\n'.format(fielddisplay(self, 'dependents', "list of dependent variables"))
+        s += '{}\n'.format(fielddisplay(self, 'independents', "list of independent variables"))
+        s += '{}\n'.format(fielddisplay(self, 'driver', "ADOLC driver ('fos_forward' or 'fov_forward')"))
+        s += '{}\n'.format(fielddisplay(self, 'obufsize', "Number of operations per buffer (== OBUFSIZE in usrparms.h)"))
+        s += '{}\n'.format(fielddisplay(self, 'lbufsize', "Number of locations per buffer (== LBUFSIZE in usrparms.h)"))
+        s += '{}\n'.format(fielddisplay(self, 'cbufsize', "Number of values per buffer (== CBUFSIZE in usrparms.h)"))
+        s += '{}\n'.format(fielddisplay(self, 'tbufsize', "Number of taylors per buffer (<=TBUFSIZE in usrparms.h)"))
+        s += '{}\n'.format(fielddisplay(self, 'gcTriggerRatio', "free location block sorting / consolidation triggered if the ratio between allocated and used locations exceeds gcTriggerRatio"))
+        s += '{}\n'.format(fielddisplay(self, 'gcTriggerMaxSize', "free location block sorting / consolidation triggered if the allocated locations exceed gcTriggerMaxSize)"))
+        s += '{}\n'.format(fielddisplay(self, 'tapeAlloc', 'Iteration count of a priori memory allocation of the AD tape'))
+
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.obufsize = 524288
+        self.lbufsize = 524288
+        self.cbufsize = 524288
+        self.tbufsize = 524288
+        self.gcTriggerRatio = 2.0
+        self.gcTriggerMaxSize = 65536
+        self.tapeAlloc = 15000000
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if not self.isautodiff:
+            return md
+
+        md = checkfield(md, 'fieldname', 'autodiff.obufsize', '>=', 524288)
+        md = checkfield(md, 'fieldname', 'autodiff.lbufsize', '>=', 524288)
+        md = checkfield(md, 'fieldname', 'autodiff.cbufsize', '>=', 524288)
+        md = checkfield(md, 'fieldname', 'autodiff.tbufsize', '>=', 524288)
+        md = checkfield(md, 'fieldname', 'autodiff.gcTriggerRatio', '>=', 2.0)
+        md = checkfield(md, 'fieldname', 'autodiff.gcTriggerMaxSize', '>=', 65536)
+        md = checkfield(md, 'fieldname', 'autodiff.tapeAlloc', '>=', 0)
+
+        # Driver value
+        md = checkfield(md, 'fieldname', 'autodiff.driver', 'values', ['fos_forward', 'fov_forward', 'fov_forward_all', 'fos_reverse', 'fov_reverse', 'fov_reverse_all'])
+
+        # Go through our dependents and independents and check consistency
+        for dep in self.dependents:
+            dep.checkconsistency(md, solution, analyses)
+        for i, indep in enumerate(self.independents):
+            indep.checkconsistency(md, i, solution, analyses, self.driver)
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isautodiff', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'driver', 'format', 'String')
+
+        # Early return
+        if not self.isautodiff:
+            WriteData(fid, prefix, 'data', False, 'name', 'md.autodiff.mass_flux_segments_present', 'format', 'Boolean')
+            WriteData(fid, prefix, 'data', False, 'name', 'md.autodiff.keep', 'format', 'Boolean')
+            return
+
+        # Buffer sizes
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'obufsize', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'lbufsize', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'cbufsize', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'tbufsize', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'gcTriggerRatio', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'gcTriggerMaxSize', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'tapeAlloc', 'format', 'Integer')
+
+        # Process dependent variables
+        num_dependent_objects = len(self.dependents)
+        WriteData(fid, prefix, 'data', num_dependent_objects, 'name', 'md.autodiff.num_dependent_objects', 'format', 'Integer')
+
+        if num_dependent_objects:
+            names = []
+            for i, dep in enumerate(self.dependents):
+                names.append(dep.name)
+
+            WriteData(fid, prefix, 'data', names, 'name', 'md.autodiff.dependent_object_names', 'format', 'StringArray')
+
+        # Process independent variables
+        num_independent_objects = len(self.independents)
+        WriteData(fid, prefix, 'data', num_independent_objects, 'name', 'md.autodiff.num_independent_objects', 'format', 'Integer')
+
+        for indep in self.independents:
+            WriteData(fid, prefix, 'data', indep.name, 'name', 'md.autodiff.independent_name', 'format', 'String')
+            WriteData(fid, prefix, 'data', indep.typetoscalar(), 'name', 'md.autodiff.independent_type', 'format', 'Integer')
+            WriteData(fid, prefix, 'data', indep.min_parameters, 'name','md.autodiff.independent_min_parameters','format', 'DoubleMat', 'mattype', 3)
+            WriteData(fid, prefix, 'data', indep.max_parameters, 'name', 'md.autodiff.independent_max_parameters', 'format', 'DoubleMat', 'mattype', 3)
+            WriteData(fid, prefix, 'data', indep.control_scaling_factor, 'name', 'md.autodiff.independent_scaling_factor', 'format', 'Double')
+            WriteData(fid, prefix, 'data', indep.control_size, 'name', 'md.autodiff.independent_control_size', 'format', 'Integer')
+
+        # If driver is fos_forward, build index
+        if strcmpi(self.driver, 'fos_forward'):
+            index = 0
+
+            for indep in self.independents:
+                if not np.isnan(indep.fos_forward_index):
+                    index += indep.fos_forward_index
+                    break
+                else:
+                    if strcmpi(indep.type, 'scalar'):
+                        index += 1
+                    else:
+                        index += indep.nods
+
+            index -= 1  # get c-index numbering going
+            WriteData(fid, prefix, 'data', index, 'name', 'md.autodiff.fos_forward_index', 'format', 'Integer')
+
+        # If driver is fos_reverse, build index
+        if strcmpi(self.driver, 'fos_reverse'):
+            index = 0
+
+            for dep in self.dependents:
+                if not np.isnan(dep.fos_reverse_index):
+                    index += dep.fos_reverse_index
+                    break
+                else:
+                    index += 1
+
+            index -= 1  # get c-index numbering going
+            WriteData(fid, prefix, 'data', index, 'name', 'md.autodiff.fos_reverse_index', 'format', 'Integer')
+
+        # If driver is fov_forward, build indices
+        if strcmpi(self.driver, 'fov_forward'):
+            indices = 0
+
+            for indep in self.independents:
+                if indep.fos_forward_index:
+                    indices += indep.fov_forward_indices
+                    break
+                else:
+                    if strcmpi(indep.type, 'scalar'):
+                        indices += 1
+                    else:
+                        indices += indep.nods
+
+            indices -= 1  # get c-indices numbering going
+            WriteData(fid, prefix, 'data', indices, 'name', 'md.autodiff.fov_forward_indices', 'format', 'IntMat', 'mattype', 3)
+
+        # Deal with mass fluxes
+        mass_flux_segments = [dep.segments for dep in self.dependents if strcmpi(dep.name, 'MassFlux')]
+
+        if mass_flux_segments:
+            WriteData(fid, prefix, 'data', mass_flux_segments, 'name', 'md.autodiff.mass_flux_segments', 'format', 'MatArray')
+            flag = True
+        else:
+            flag = False
+        WriteData(fid, prefix, 'data', flag, 'name', 'md.autodiff.mass_flux_segments_present', 'format', 'Boolean')
+
+        # Deal with trace keep on
+        keep = False
+
+        # From ADOLC userdoc:
+        # The optional integer argument keep of trace on determines whether the 
+        # numerical values of all active variables are recorded in a buffered 
+        # temporary array or file called the taylor stack. This option takes 
+        # effect if keep = 1 and prepares the scene for an immediately 
+        # following gradient evaluation by a call to a routine implementing the 
+        # reverse mode as described in the Section 4 and Section 5.
+        #
+        if len(self.driver) <= 3:
+            keep = False  # there is no "_reverse" string within the driver string
+        else:
+            if strncmpi(self.driver[3:], '_reverse', 8):
+                keep = True
+            else:
+                keep = False
+        WriteData(fid, prefix, 'data', keep, 'name', 'md.autodiff.keep', 'format', 'Boolean')
+    # }}}
+
+        return
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/balancethickness.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/balancethickness.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/balancethickness.js	(revision 27955)
@@ -0,0 +1,64 @@
+//BALANCETHICKNESS class definition
+//
+//   Usage:
+//      balancethickness=new balancethickness();
+
+function balancethickness (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//Type of stabilization used
+		this.stabilization=1;
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   balance thickness solution parameters:'));
+
+		fielddisplay(this,'spcthickness','thickness constraints (NaN means no constraint) [m]');
+		fielddisplay(this,'thickening_rate','ice thickening rate used in the mass conservation (dh/dt) [m/yr]');
+		fielddisplay(this,'stabilization',"0: None, 1: SU, 2: SSA's artificial diffusivity, 3:DG");
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "balancethickness";
+
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses){ // {{{
+			//Early return
+			if (solution!='BalancethicknessSolution')return;
+
+			checkfield(md,'fieldname','balancethickness.spcthickness');
+			checkfield(md,'fieldname','balancethickness.thickening_rate','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','balancethickness.stabilization','size',[1, 1],'values',[0, 1, 2 ,3]);
+			//checkfield(md,'fieldname','balancethickness.omega','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1,'>=',0);
+		} //}}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',this,'fieldname','spcthickness','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','thickening_rate','format','DoubleMat','mattype',1,'scale',1/yts);
+			WriteData(fid,prefix,'object',this,'fieldname','stabilization','format','Integer');
+
+			WriteData(fid,prefix,'object',this,'fieldname','slopex','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','slopey','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','omega','format','DoubleMat','mattype',1);
+
+		}//}}}
+		this.fix=function() { //{{{
+			this.spcthickness=NullFix(this.spcthickness,NaN);
+			this.thicknening_rate=NullFix(this.thicknening_rate,NaN);
+			this.omega=NullFix(this.omega,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.spcthickness      = NaN;
+	this.thickening_rate   = NaN;
+	this.stabilization     = 0;
+
+	this.omega             = NaN;
+	this.slopex            = NaN;
+	this.slopey            = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/balancethickness.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/balancethickness.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/balancethickness.m	(revision 27955)
@@ -0,0 +1,70 @@
+%BALANCETHICKNESS class definition
+%
+%   Usage:
+%      balancethickness=balancethickness();
+
+classdef balancethickness
+	properties (SetAccess=public) 
+		spcthickness      = NaN;
+		thickening_rate   = NaN;
+		stabilization     = 0;
+
+		omega             = NaN;
+		slopex            = NaN;
+		slopey            = NaN;
+	end
+	methods
+		function self = balancethickness(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Type of stabilization used
+			self.stabilization=1;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if ~strcmp(solution,'BalancethicknessSolution'), return; end
+
+			md = checkfield(md,'fieldname','balancethickness.spcthickness');
+			md = checkfield(md,'fieldname','balancethickness.thickening_rate','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','balancethickness.stabilization','size',[1 1],'values',[0 1 2 3]);
+
+			%md = checkfield(md,'fieldname','balancethickness.omega','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1,'>=',0);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   balance thickness solution parameters:'));
+
+			fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint) [m]');
+			fielddisplay(self,'thickening_rate','ice thickening rate used in the mass conservation (dh/dt) [m/yr]');
+			fielddisplay(self,'stabilization','0: None, 1: SU, 2: SSA''s artificial diffusivity, 3:DG');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'fieldname','spcthickness','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','thickening_rate','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer');
+
+			WriteData(fid,prefix,'object',self,'fieldname','slopex','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','slopey','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','omega','format','DoubleMat','mattype',1);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.balancethickness.spcthickness'],self.spcthickness);
+			writejs1Darray(fid,[modelname '.balancethickness.thickening_rate'],self.thickening_rate);
+			writejsdouble(fid,[modelname '.balancethickness.stabilization'],self.stabilization);
+			writejs1Darray(fid,[modelname '.balancethickness.omega'],self.omega);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/balancethickness.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/balancethickness.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/balancethickness.py	(revision 27955)
@@ -0,0 +1,62 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class balancethickness(object):
+    """
+    BALANCETHICKNESS class definition
+
+       Usage:
+          balancethickness = balancethickness()
+    """
+
+    def __init__(self):  # {{{
+        self.spcthickness = float('NaN')
+        self.thickening_rate = float('NaN')
+        self.stabilization = 0
+        self.omega = float('NaN')
+        self.slopex = float('NaN')
+        self.slopey = float('NaN')
+
+    #set defaults
+        self.setdefaultparameters()
+
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = '   balance thickness solution parameters:'
+
+        string = "%s\n%s" % (string, fielddisplay(self, 'spcthickness', 'thickness constraints (NaN means no constraint) [m]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'thickening_rate', 'ice thickening rate used in the mass conservation (dh / dt) [m / yr]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'stabilization', "0: None, 1: SU, 2: SSA's artificial diffusivity, 3:DG"))
+        return string
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        #Type of stabilization used
+        self.stabilization = 1
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        #Early return
+        if not solution == 'BalancethicknessSolution':
+            return md
+
+        md = checkfield(md, 'fieldname', 'balancethickness.spcthickness')
+        md = checkfield(md, 'fieldname', 'balancethickness.thickening_rate', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'balancethickness.stabilization', 'size', [1], 'values', [0, 1, 2, 3])
+    #md = checkfield(md, 'fieldname', 'balancethickness.omega', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1, '>=', 0)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'spcthickness', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'thickening_rate', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'stabilization', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'slopex', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'slopey', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'omega', 'format', 'DoubleMat', 'mattype', 1)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/bamggeom.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/bamggeom.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/bamggeom.js	(revision 27955)
@@ -0,0 +1,49 @@
+//BAMGGEOM class definition
+//
+//   Usage:
+//      bamggeom(varargin)
+
+function bamggeom(){
+	//methods
+	this.constructor = function(args) {// {{{
+		//BAMGGEOM - constructor for bamggeom object
+		//
+		//   Usage:
+		//      bamggeom = bamggeom(varargin)
+
+		//initialize list
+        switch (args.length) {
+            case 0:
+				//if no input arguments, create a default object
+                break;
+            case 1:
+                var object = args[0];
+                for (var field in object) {
+                    if (object.hasOwnProperty(field)) {
+                        this[field] = object[field];
+                    }
+                }
+                break;
+            default:
+				throw Error('bamggeom constructor error message: unknown type of constructor call');
+        }
+	}// }}}
+    this.disp= function(){// {{{
+        disp(sprintf('\n%s = \n', 'bamggeom'));
+        disp(this);
+    }// }}}
+
+    //properties 
+    // {{{
+    this.Vertices           = [];
+    this.Edges              = [];
+    this.TangentAtEdges     = [];
+    this.Corners            = [];
+    this.RequiredVertices   = [];
+    this.RequiredEdges      = [];
+    this.CrackedEdges       = [];
+    this.SubDomains         = [];
+
+	this.constructor(arguments);
+    //}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/bamggeom.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/bamggeom.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/bamggeom.m	(revision 27955)
@@ -0,0 +1,51 @@
+%BAMGGEOM class definition
+%
+%   Usage:
+%      bamggeom(varargin)
+
+classdef bamggeom
+	properties (SetAccess=public) 
+		% {{{
+		Vertices=[];
+		Edges=[];
+		TangentAtEdges=[];
+		Corners=[];
+		RequiredVertices=[];
+		RequiredEdges=[];
+		CrackedEdges=[];
+		SubDomains=[];
+		% }}}
+	end
+	methods
+		function bg = bamggeom(varargin)% {{{
+		%BAMGGEOM - constructor for bamggeom object
+		%
+		%   Usage:
+		%      bamggeom = bamggeom(varargin)
+
+		switch nargin
+			case 0
+				% if no input arguments, create a default object
+
+			case 1
+
+				bg=bamggeom;
+				object=varargin{1};
+				fields=fieldnames(object);
+				for i=1:length(fields)
+					field=fields{i};
+					if ismember(field,properties('bamggeom')),
+						bg.(field)=object.(field);
+					end
+				end
+
+			otherwise
+				error('bamggeom constructor error message: unknown type of constructor call');
+			end
+		end%}}}
+		function display(bg)% {{{
+			disp(sprintf('\n%s = \n',inputname(1)));
+			disp(struct(bg))
+		end%}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/bamggeom.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/bamggeom.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/bamggeom.py	(revision 27955)
@@ -0,0 +1,47 @@
+import numpy as np
+
+
+class bamggeom(object):
+    """
+    BAMGGEOM class definition
+
+       Usage:
+          bamggeom(varargin)
+    """
+
+    def __init__(self, *args):  # {{{
+        self.Vertices = np.empty((0, 3))
+        self.Edges = np.empty((0, 3))
+        self.TangentAtEdges = np.empty((0, 4))
+        self.Corners = np.empty((0, 1))
+        self.RequiredVertices = np.empty((0, 1))
+        self.RequiredEdges = np.empty((0, 1))
+        self.CrackedEdges = np.empty((0, 0))
+        self.SubDomains = np.empty((0, 4))
+
+        if not len(args):
+            # if no input arguments, create a default object
+            pass
+
+        elif len(args) == 1:
+            object = args[0]
+            for field in list(object.keys()):
+                if field in vars(self):
+                    setattr(self, field, object[field])
+
+        else:
+            raise TypeError("bamggeom constructor error message: unknown type of constructor call")
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = "class '%s' object '%s'=\n" % (type(self), 'self')
+        s += "    Vertices: %s\n" % str(self.Vertices)
+        s += "    Edges: %s\n" % str(self.Edges)
+        s += "    TangentAtEdges: %s\n" % str(self.TangentAtEdges)
+        s += "    Corners: %s\n" % str(self.Corners)
+        s += "    RequiredVertices: %s\n" % str(self.RequiredVertices)
+        s += "    RequiredEdges: %s\n" % str(self.RequiredEdges)
+        s += "    CrackedEdges: %s\n" % str(self.CrackedEdges)
+        s += "    SubDomains: %s\n" % str(self.SubDomains)
+        return s
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/bamgmesh.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/bamgmesh.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/bamgmesh.js	(revision 27955)
@@ -0,0 +1,57 @@
+//BAMGMESH class definition
+//
+//   Usage:
+//      bamgmesh(varargin)
+
+function bamgmesh(){
+	//methods
+	this.constructor = function(args) {// {{{
+		//BAMGMESH - constructor for bamgmesh object
+		//
+		//   Usage:
+		//      bamgmesh = bamgmesh(varargin)
+
+		//initialize list
+        switch (args.length) {
+            case 0:
+				//if no input arguments, create a default object
+                break;
+            case 1:
+                var object = args[0];
+                for (var field in object) {
+                    if (object.hasOwnProperty(field)) {
+                        this[field] = object[field];
+                    }
+                }
+                break;
+            default:
+				throw Error('bamggeom constructor error message: unknown type of constructor call');
+        }
+	}// }}}
+    this.disp= function(){// {{{
+        disp(sprintf('\n%s = \n', 'bamgmesh'));
+        disp(this);
+    }// }}}
+
+    //properties 
+    // {{{
+    this.Vertices                   = [];
+    this.Edges                      = [];
+    this.Triangles                  = [];
+    this.IssmEdges                  = [];
+    this.IssmSegments               = [];
+    this.VerticesOnGeomVertex       = [];
+    this.VerticesOnGeomEdge         = [];
+    this.EdgesOnGeomEdge            = [];
+    this.SubDomains                 = [];
+    this.SubDomainsFromGeom         = [];
+    this.ElementConnectivity        = [];
+    this.NodalConnectivity          = [];
+    this.NodalElementConnectivity   = [];
+    this.CrackedVertices            = [];
+    this.CrackedEdges               = [];
+    this.PreviousNumbering          = [];
+
+	this.constructor(arguments);
+    //}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/bamgmesh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/bamgmesh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/bamgmesh.m	(revision 27955)
@@ -0,0 +1,55 @@
+%BAMGMESH class definition
+%
+%   Usage:
+%      bamgmesh(varargin)
+
+classdef bamgmesh
+	properties (SetAccess=public) 
+		% {{{
+		Vertices=[];
+		Edges=[];
+		Triangles=[];
+		IssmEdges=[];
+		IssmSegments=[];
+		VerticesOnGeomVertex=[];
+		VerticesOnGeomEdge=[];
+		EdgesOnGeomEdge=[];
+		SubDomains=[];
+		SubDomainsFromGeom=[];
+		ElementConnectivity=[];
+		NodalConnectivity=[];
+		NodalElementConnectivity=[];
+		CrackedVertices=[];
+		CrackedEdges=[];
+		PreviousNumbering=[];
+		% }}}
+	end
+	methods
+		function bg = bamgmesh(varargin)% {{{
+
+		switch nargin
+			case 0
+				% if no input arguments, create a default object
+
+			case 1
+
+				bg=bamgmesh;
+				object=varargin{1};
+				fields=fieldnames(object);
+				for i=1:length(fields)
+					field=fields{i};
+					if ismember(field,properties('bamgmesh')),
+						bg.(field)=object.(field);
+					end
+				end
+
+			otherwise
+				error('bamgmesh constructor error message: unknown type of constructor call');
+			end
+		end%}}}
+		function display(bm)% {{{
+			disp(sprintf('\n%s = \n',inputname(1)));
+			disp(struct(bm))
+		end%}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/bamgmesh.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/bamgmesh.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/bamgmesh.py	(revision 27955)
@@ -0,0 +1,60 @@
+import numpy as np
+
+
+class bamgmesh(object):
+    """BAMGMESH class definition
+
+    Usage:
+        bamgmesh(varargin)
+    """
+
+    def __init__(self, *args):  # {{{
+        self.Vertices = np.empty((0, 3))
+        self.Edges = np.empty((0, 3))
+        self.Triangles = np.empty((0, 0))
+        self.IssmEdges = np.empty((0, 0))
+        self.IssmSegments = np.empty((0, 0))
+        self.VerticesOnGeomVertex = np.empty((0, 0))
+        self.VerticesOnGeomEdge = np.empty((0, 0))
+        self.EdgesOnGeomEdge = np.empty((0, 0))
+        self.SubDomains = np.empty((0, 4))
+        self.SubDomainsFromGeom = np.empty((0, 0))
+        self.ElementConnectivity = np.empty((0, 0))
+        self.NodalConnectivity = np.empty((0, 0))
+        self.NodalElementConnectivity = np.empty((0, 0))
+        self.CrackedVertices = np.empty((0, 0))
+        self.CrackedEdges = np.empty((0, 0))
+
+        if not len(args):
+            # if no input arguments, create a default object
+            pass
+
+        elif len(args) == 1:
+            object = args[0]
+            for field in list(object.keys()):
+                if field in vars(self):
+                    setattr(self, field, object[field])
+
+        else:
+            raise TypeError("bamgmesh constructor error message: unknown type of constructor call")
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = "class '%s' object '%s' = \n" % (type(self), 'self')
+        s += "    Vertices: %s\n" % str(self.Vertices)
+        s += "    Edges: %s\n" % str(self.Edges)
+        s += "    Triangles: %s\n" % str(self.Triangles)
+        s += "    IssmEdges: %s\n" % str(self.IssmEdges)
+        s += "    IssmSegments: %s\n" % str(self.IssmSegments)
+        s += "    VerticesOnGeomVertex: %s\n" % str(self.VerticesOnGeomVertex)
+        s += "    VerticesOnGeomEdge: %s\n" % str(self.VerticesOnGeomEdge)
+        s += "    EdgesOnGeomEdge: %s\n" % str(self.EdgesOnGeomEdge)
+        s += "    SubDomains: %s\n" % str(self.SubDomains)
+        s += "    SubDomainsFromGeom: %s\n" % str(self.SubDomainsFromGeom)
+        s += "    ElementConnectivity: %s\n" % str(self.ElementConnectivity)
+        s += "    NodalConnectivity: %s\n" % str(self.NodalConnectivity)
+        s += "    NodalElementConnectivity: %s\n" % str(self.NodalElementConnectivity)
+        s += "    CrackedVertices: %s\n" % str(self.CrackedVertices)
+        s += "    CrackedEdges: %s\n" % str(self.CrackedEdges)
+        return s
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/basalforcings.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/basalforcings.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/basalforcings.js	(revision 27955)
@@ -0,0 +1,80 @@
+//BASAL FORCINGS class definition
+//
+//   Usage:
+//      basalforcings=basalforcings();
+
+function basalforcings(){
+	//methods
+	this.setdefaultparameters = function() {//{{{
+
+	} // }}}
+	this.disp = function(){ // {{{
+		console.log(sprintf('   basal forcings parameters:'));
+
+		fielddisplay(this,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+		fielddisplay(this,'floatingice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+		fielddisplay(this,'geothermalflux','geothermal heat flux [W/m^2]');
+
+	} // }}}
+    this.extrude = function(md) {//{{{
+        this.groundedice_melting_rate=project3d(md,'vector',this.groundedice_melting_rate,'type','node','layer',1); 
+        this.floatingice_melting_rate=project3d(md,'vector',this.floatingice_melting_rate,'type','node','layer',1); 
+        this.geothermalflux=project3d(md,'vector',this.geothermalflux,'type','node','layer',1); //bedrock only gets geothermal flux
+        return this;
+    }//}}}
+	this.classname = function(){ // {{{
+		return "basalforcings";
+	} // }}}
+		this.initialize = function (md){ // {{{
+
+			if (isNaN(this.groundedice_melting_rate)){
+				this.groundedice_melting_rate=NewArrayFill(md.mesh.numberofvertices,0);
+				console.log('      no basalforcings.groundedice_melting_rate specified: values set as zero');
+			}
+
+			if (isNaN(this.floatingice_melting_rate)){
+				this.floatingice_melting_rate=NewArrayFill(md.mesh.numberofvertices,0);
+				console.log('      no basalforcings.floatingice_melting_rate specified: values set as zero');
+			}
+
+		} // }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			if(ArrayAnyEqual(ArrayIsMember('MasstransportAnalysis',analyses),1)){
+				if (!(solution=='TransientSolution' & md.trans.ismasstransport==0)){
+					checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+					checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				}
+			}
+
+			if(ArrayAnyEqual(ArrayIsMember('BalancethicknessAnalysis',analyses),1)){
+				checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			}
+			if(ArrayAnyEqual(ArrayIsMember('ThermalAnalysis',analyses),1)){
+				if (!(solution=='TransientSolution' & md.trans.isthermal==0)){
+					checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+					checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+					checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+				}
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.basalforcings.model','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',this,'fieldname','floatingice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',this,'fieldname','geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties
+	//{{{
+	this.groundedice_melting_rate  = NaN;
+	this.floatingice_melting_rate  = NaN;
+	this.geothermalflux            = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/basalforcings.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/basalforcings.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/basalforcings.m	(revision 27955)
@@ -0,0 +1,90 @@
+%BASAL FORCINGS class definition
+%
+%   Usage:
+%      basalforcings=basalforcings();
+
+classdef basalforcings
+	properties (SetAccess=public) 
+		groundedice_melting_rate  = NaN;
+		floatingice_melting_rate  = NaN;
+		perturbation_melting_rate = NaN;
+		geothermalflux            = NaN;
+	end
+	methods
+		function self = basalforcings(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self =structtoobj(basalforcings(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   basal forcings parameters:'));
+
+			fielddisplay(self,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+			fielddisplay(self,'floatingice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+			fielddisplay(self,'perturbation_melting_rate','(optional) perturbation in basal melting rate under floating ice [m/yr]');
+			fielddisplay(self,'geothermalflux','geothermal heat flux [W/m^2]');
+
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1); 
+			self.floatingice_melting_rate=project3d(md,'vector',self.floatingice_melting_rate,'type','node','layer',1); 
+			self.perturbation_melting_rate=project3d(md,'vector',self.perturbation_melting_rate,'type','node','layer',1); 
+			self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1); %bedrock only gets geothermal flux
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.groundedice_melting_rate),
+				self.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.groundedice_melting_rate specified: values set as zero');
+			end
+
+			if isnan(self.floatingice_melting_rate),
+				self.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.floatingice_melting_rate specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.ismasstransport==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			end
+			if ismember('ThermalAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.isthermal==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+			end
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.basalforcings.model','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts)
+			WriteData(fid,prefix,'object',self,'fieldname','floatingice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts)
+			WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid,prefix,'object',self,'fieldname','perturbation_melting_rate','format','DoubleMat','name','md.basalforcings.perturbation_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.basalforcings.groundedice_melting_rate'],self.groundedice_melting_rate);
+			writejs1Darray(fid,[modelname '.basalforcings.floatingice_melting_rate'],self.floatingice_melting_rate);
+			writejs1Darray(fid,[modelname '.basalforcings.perturbation_melting_rate'],self.perturbation_melting_rate);
+			writejs1Darray(fid,[modelname '.basalforcings.geothermalflux'],self.geothermalflux);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/basalforcings.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/basalforcings.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/basalforcings.py	(revision 27955)
@@ -0,0 +1,71 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class basalforcings(object):
+    """BASAL FORCINGS class definition
+
+    Usage:
+        basalforcings = basalforcings()
+    """
+
+    def __init__(self):  # {{{
+        self.groundedice_melting_rate = np.nan
+        self.floatingice_melting_rate = np.nan
+        self.perturbation_melting_rate = np.nan
+        self.geothermalflux = np.nan
+
+        self.setdefaultparameters()
+    # }}}
+    def __repr__(self):  # {{{
+        s = '   basal forcings parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'groundedice_melting_rate', 'basal melting rate (positive if melting) [m/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'floatingice_melting_rate', 'basal melting rate (positive if melting) [m/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'perturbation_melting_rate', '(optional) perturbation in basal melting rate under floating ice [m/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'geothermalflux', 'geothermal heat flux [W/m^2]'))
+        return s
+    # }}}
+    def extrude(self, md):  # {{{
+        self.groundedice_melting_rate = project3d(md, 'vector', self.groundedice_melting_rate, 'type', 'node', 'layer', 1)
+        self.perturbation_melting_rate = project3d(md, 'vector', self.perturbation_melting_rate, 'type', 'node', 'layer', 1)
+        self.floatingice_melting_rate = project3d(md, 'vector', self.floatingice_melting_rate, 'type', 'node', 'layer', 1)
+        self.geothermalflux = project3d(md, 'vector', self.geothermalflux, 'type', 'node', 'layer', 1) # Bedrock only gets geothermal flux
+        return self
+    # }}}
+    def initialize(self, md):  # {{{
+        if np.all(np.isnan(self.groundedice_melting_rate)):
+            self.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices, ))
+            print('      no basalforcings.groundedice_melting_rate specified: values set as zero')
+        if np.all(np.isnan(self.floatingice_melting_rate)):
+            self.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices, ))
+            print('      no basalforcings.floatingice_melting_rate specified: values set as zero')
+        return self
+    # }}}
+    def setdefaultparameters(self):  # {{{
+        return self
+    # }}}
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if 'MasstransportAnalysis' in analyses and not solution == 'TransientSolution' and not md.transient.ismasstransport:
+            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.floatingice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+        if 'BalancethicknessAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'basalforcings.floatingice_melting_rate', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        if 'ThermalAnalysis' in analyses and not solution == 'TransientSolution' and not md.transient.isthermal:
+            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.floatingice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.geothermalflux', 'NaN', 1, 'Inf', 1, 'timeseries', 1, '>=', 0)
+        return md
+    # }}}
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+        WriteData(fid, prefix, 'name', 'md.basalforcings.model', 'data', 1, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'groundedice_melting_rate', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1 / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'floatingice_melting_rate', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1 / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'geothermalflux', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'perturbation_melting_rate', 'format', 'DoubleMat', 'name', 'md.basalforcings.perturbation_melting_rate', 'mattype', 1, 'scale', 1 / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/basalforcingsbeckmanngoosse.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/basalforcingsbeckmanngoosse.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/basalforcingsbeckmanngoosse.m	(revision 27955)
@@ -0,0 +1,145 @@
+%BECKMANNGOOSSE BASAL FORCINGS class definition
+%
+%   Usage:
+%      basalforcingsbeckmanngoosse=basalforcingsbeckmanngoosse();
+
+classdef basalforcingsbeckmanngoosse
+	properties (SetAccess=public) 
+		groundedice_melting_rate  = NaN;
+		geothermalflux            = NaN;
+		meltrate_factor           = 0.;
+		ocean_temp                = 0.;
+		ocean_salinity            = NaN;
+		ocean_thermalforcing      = NaN;
+		isthermalforcing          = 0;
+	end
+	methods
+		function createxml(self,fid) % {{{
+			fprintf(fid, '\n\n');
+			fprintf(fid, '%s\n', '<!-- basalforcings -->');
+		        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="geothermalflux" type="',class(self.geothermalflux),'" default="',num2str(self.geothermalflux),'">', '     <section name="basalforcings" />','     <help> geothermal heat flux [W/m^2] </help>','</parameter>');
+			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="melting_rate" type="',class(self.melting_rate),'" default="',num2str(self.melting_rate),'">','     <section name="basalforcings" />','     <help> basal melting rate (positive if melting) [m/yr] </help>','</parameter>');
+			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="ocean_temp" type="',class(self.ocean_temp),'" default="',num2str(self.ocean_temp),'">','     <section name="basalforcings" />','     <help> ocean_temp [degC] </help>','</parameter>');
+		        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="ocean_salinity" type="',class(self.ocean_salinity),'" default="',num2str(self.ocean_salinity),'">','     <section name="basalforcings" />','     <help> ocean_salinity [psu] </help>','</parameter>');
+		        fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="ocean_thermalforcing" type="',class(self.ocean_thermalforcing),'" default="',num2str(self.ocean_thermalforcing),'">','     <section name="basalforcings" />','     <help> ocean_thermalforcing [K] </help>','</parameter>');
+        	end % }}}
+		function self = extrude(self,md) % {{{
+			self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1); 
+			self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1); %bedrock only gets geothermal flux
+		end % }}}
+		function self = basalforcingsbeckmanngoosse(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(basalforcingsbeckmanngoosse(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.groundedice_melting_rate),
+				self.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.groundedice_melting_rate specified: values set as zero');
+			end
+			if isnan(self.ocean_temp),
+				self.ocean_temp=-1.7*ones(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.ocean_temp specified: values set as -1.7degC');
+			end
+			if isnan(self.ocean_salinity),
+				self.ocean_salinity=35.0*ones(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.ocean_salinity specified: values set as 35 psu');
+			end
+
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%default values for melting parameterization
+			self.meltrate_factor        = 0.5;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if(self.isthermalforcing==0)
+				if(any(~isnan(self.ocean_thermalforcing)))
+					error('basalforcingsbeckmanngoosse has isthermalforcing=0 but has specified entries for ocean_thermalforcing (should be unused)');
+				end
+			elseif(self.isthermalforcing==1)
+				if(any(self.ocean_temp~=0) || any(~isnan(self.ocean_salinity)))
+					error('basalforcingsbeckmanngoosse has isthermalforcing=1 but has specified entries for ocean_temp or ocean_salinity (should be unused)');
+				end
+				if(strcmp(class(md.frontalforcings),'frontalforcingsrignot') && ~isequal(md.frontalforcings.thermalforcing,self.ocean_thermalforcing))
+					error('basalforcing.ocean_thermalforcing is not consistent with frontalforcings.thermalforcing')
+				end
+				if(strcmp(class(md.frontalforcings),'frontalforcingsrignotarma') && any(~isnan(self.ocean_thermalforcing)))
+					error('basalforcings has specified entries for ocean_thermalforcing, but frontalforcingsrignotarma already calculates thermalforcing internally')
+				end
+			end
+
+
+			if ismember('MasstransportAnalysis',analyses) & ~(solution=='TransientSolution' & md.transient.ismasstransport==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'universal',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','basalforcings.isthermalforcing','values',[0 1]);
+				if(self.isthermalforcing==0)
+					md = checkfield(md,'fieldname','basalforcings.ocean_temp','NaN',1,'Inf',1,'timeseries',1);
+					md = checkfield(md,'fieldname','basalforcings.ocean_salinity','NaN',1,'Inf',1,'timeseries',1);	
+				elseif(self.isthermalforcing==1 && ~strcmp(class(md.frontalforcings),'frontalforcingsrignotarma'))
+					md = checkfield(md,'fieldname','basalforcings.ocean_thermalforcing','NaN',1,'Inf',1,'timeseries',1);	
+				end
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'universal',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','basalforcings.isthermalforcing','values',[0 1]);
+				if(self.isthermalforcing==0)
+					md = checkfield(md,'fieldname','basalforcings.ocean_temp','NaN',1,'Inf',1,'timeseries',1);
+					md = checkfield(md,'fieldname','basalforcings.ocean_salinity','NaN',1,'Inf',1,'timeseries',1);	
+				elseif(self.isthermalforcing==1 && ~strcmp(class(md.frontalforcings),'frontalforcingsrignotarma'))
+					md = checkfield(md,'fieldname','basalforcings.ocean_thermalforcing','NaN',1,'Inf',1,'timeseries',1);	
+				end
+			end
+			if ismember('ThermalAnalysis',analyses) & ~(solution=='TransientSolution' & md.transient.isthermal==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+				md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'universal',1,'NaN',1,'Inf',1);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Beckmann & Goosse (2003) basal melt parameterization:'));
+
+			fielddisplay(self,'groundedice_melting_rate','basal melting rate (positive if melting) (m/yr)');
+			fielddisplay(self,'geothermalflux','geothermal heat flux (W/m^2)');
+			fielddisplay(self,'meltrate_factor','Melt-rate rate factor');
+			fielddisplay(self,'isthermalforcing','whether to use ocean_temp and ocean_salinity (0) or ocean_thermalforcing (1) (default:0)');
+			fielddisplay(self,'ocean_temp','ocean temperature (degC)');
+			fielddisplay(self,'ocean_salinity','ocean salinity (psu)');
+			fielddisplay(self,'ocean_thermalforcing','ocean thermalforcing (K)');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=365.2422*24.0*3600.0;
+
+			floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+			T_f=(0.0939 - 0.057 * md.basalforcings.ocean_salinity + 7.64e-4 * md.geometry.base);
+			ocean_heat_flux = 1.5 * md.materials.rho_water * md.materials.mixed_layer_capacity * md.materials.thermal_exchange_velocity  * (md.basalforcings.ocean_temp - T_f);
+			floatingice_melting_rate=ocean_heat_flux/(md.materials.latentheat*md.materials.rho_ice);
+
+
+			WriteData(fid,prefix,'name','md.basalforcings.model','data',8,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','name','md.basalforcings.groundedice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','name','md.basalforcings.geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,prefix,'object',self,'fieldname','meltrate_factor','format','DoubleMat','mattype',1,'name','md.basalforcings.meltrate_factor');
+			WriteData(fid,prefix,'object',self,'fieldname','isthermalforcing','format','Boolean');
+			if(self.isthermalforcing==0)
+				WriteData(fid,prefix,'object',self,'fieldname','ocean_temp','format','DoubleMat','name','md.basalforcings.ocean_temp','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,prefix,'object',self,'fieldname','ocean_salinity','format','DoubleMat','name','md.basalforcings.ocean_salinity','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			elseif(self.isthermalforcing==1)
+				WriteData(fid,prefix,'object',self,'fieldname','ocean_thermalforcing','format','DoubleMat','name','md.basalforcings.ocean_thermalforcing','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			end
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/basalforcingsismip6.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/basalforcingsismip6.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/basalforcingsismip6.m	(revision 27955)
@@ -0,0 +1,107 @@
+%ISMIP6 BASAL FORCINGS class definition
+%
+%   Usage:
+%      basalforcingsismip6=basalforcingsismip6();
+
+classdef basalforcingsismip6
+	properties (SetAccess=public) 
+		num_basins                = 0;
+		basin_id                  = NaN;
+		gamma_0                   = 0.;
+		tf                        = NaN;
+		tf_depths                 = NaN;
+		delta_t                   = NaN;
+		islocal                   = 0;
+		geothermalflux            = NaN;
+		groundedice_melting_rate  = NaN;
+		melt_anomaly              = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.basin_id=project3d(md,'vector',self.basin_id,'type','element','layer',1);
+			%self.tf=project3d(md,'vector',self.tf,'type','element','layer',1);
+			%self.delta_t=project3d(md,'vector',self.delta_t,'type','element','layer',1);
+			self.tf=project3d(md,'vector',self.tf,'type','node');
+			self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','element','layer',1); %bedrock only gets geothermal flux
+			self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1);
+			self.melt_anomaly=project3d(md,'vector',self.melt_anomaly,'type','element','layer',1); %bedrock only gets geothermal flux
+		end % }}}
+		function self = basalforcingsismip6(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=setdefaultparameters(self);
+					self=structtoobj(self,varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = initialize(self,md) % {{{
+			if self.gamma_0 == 0,
+				self.gamma_0 = 14477;
+				disp('      no basalforcings.gamma_0 specified: value set to 14477 m/yr');
+			end
+			if isnan(self.groundedice_melting_rate),
+				self.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.groundedice_melting_rate specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			self.gamma_0 = 14477; %m/yr
+			self.islocal = false;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','basalforcings.num_basins','numel',1,'NaN',1,'Inf',1,'>',0);
+			md = checkfield(md,'fieldname','basalforcings.basin_id','Inf',1,'>=',0,'<=',md.basalforcings.num_basins,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','basalforcings.gamma_0','numel',1,'NaN',1,'Inf',1,'>',0);
+			md = checkfield(md,'fieldname','basalforcings.tf_depths','NaN',1,'Inf',1,'size',[1,NaN],'<=',0);
+			md = checkfield(md,'fieldname','basalforcings.delta_t','NaN',1,'Inf',1,'numel',md.basalforcings.num_basins,'size',[1,md.basalforcings.num_basins]);
+			md = checkfield(md,'fieldname','basalforcings.islocal','values',[0 1]);
+			md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'>=',0,'timeseries',1);
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+			if length(md.basalforcings.melt_anomaly)>1,
+				md = checkfield(md,'fieldname','basalforcings.melt_anomaly','NaN',1,'Inf',1,'timeseries',1);
+			end
+
+			md = checkfield(md,'fieldname','basalforcings.tf','size',[1,1,numel(md.basalforcings.tf_depths)]);
+			for i=1:numel(md.basalforcings.tf_depths)
+				md = checkfield(md,'fieldname',['basalforcings.tf{' num2str(i) '}'],'field',md.basalforcings.tf{i},'size',[md.mesh.numberofvertices+1 NaN],'NaN',1,'Inf',1,'>=',0,'timeseries',1);
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   ISMIP6 basal melt rate parameterization:'));
+			fielddisplay(self,'num_basins','number of basins the model domain is partitioned into [unitless]');
+			fielddisplay(self,'basin_id','basin number assigned to each node (unitless)');
+			fielddisplay(self,'gamma_0','melt rate coefficient (m/yr)');
+			fielddisplay(self,'tf_depths','elevation of vertical layers in ocean thermal forcing dataset');
+			fielddisplay(self,'tf','thermal forcing (ocean temperature minus freezing point) (degrees C)');
+			fielddisplay(self,'delta_t','Ocean temperature correction per basin (degrees C)');
+			fielddisplay(self,'islocal','boolean to use the local version of the ISMIP6 melt rate parameterization (default false)');
+			fielddisplay(self,'geothermalflux','geothermal heat flux (W/m^2)');
+			fielddisplay(self,'groundedice_melting_rate','basal melting rate (positive if melting) (m/yr)');
+			fielddisplay(self,'melt_anomaly','floating ice basal melt anomaly (m/yr)');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.basalforcings.model','data',7,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','num_basins','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','basin_id','data',self.basin_id-1,'name','md.basalforcings.basin_id','format','IntMat','mattype',2);   %0-indexed
+			WriteData(fid,prefix,'object',self,'fieldname','gamma_0','format','Double','scale',1./yts);
+			WriteData(fid,prefix,'object',self,'fieldname','tf_depths','format','DoubleMat','name','md.basalforcings.tf_depths');
+			WriteData(fid,prefix,'object',self,'fieldname','tf','format','MatArray','name','md.basalforcings.tf','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','delta_t','format','DoubleMat','name','md.basalforcings.delta_t','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','islocal','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','format','DoubleMat','name','md.basalforcings.geothermalflux','mattype',1,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','melt_anomaly','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/basalforcingspico.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/basalforcingspico.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/basalforcingspico.m	(revision 27955)
@@ -0,0 +1,113 @@
+%PICO BASAL FORCINGS class definition
+%
+%   Usage:
+%      basalforcingspico=basalforcingspico();
+
+classdef basalforcingspico
+	properties (SetAccess=public) 
+		num_basins                = 0;
+		basin_id                  = NaN;
+		maxboxcount               = 0;
+		overturning_coeff         = NaN;
+		gamma_T                   = 0.;
+		farocean_temperature      = NaN;
+		farocean_salinity         = NaN;
+		isplume                   = 0;
+		geothermalflux            = NaN;
+		groundedice_melting_rate  = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.basin_id=project3d(md,'vector',self.basin_id,'type','element','layer',1);
+			self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','element','layer',1); %bedrock only gets geothermal flux
+			self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1);
+		end % }}}
+		function self = basalforcingspico(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=setdefaultparameters(self);
+					self=structtoobj(self,varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = initialize(self,md) % {{{
+			if isnan(self.maxboxcount),
+	            self.maxboxcount = 5;
+		   			disp('      no maximum number of boxes set, setting value to 5');
+		   end
+			if isnan(self.overturning_coeff)
+				self.overturning_coeff = 1e6*ones(md.mesh.numberofvertices,1); %m^3/s
+				disp('      no overturning strength set, setting value to 1e6');
+			end
+			if isnan(self.gamma_T)
+				self.gamma_T = 2e-5; %m/s
+				disp('      no turbulent temperature exchange velocity set, setting value to 2e-5');
+			end
+			if isnan(self.groundedice_melting_rate),
+				self.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.groundedice_melting_rate specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			self.maxboxcount       = 5;
+			self.overturning_coeff = 1e6; %m^3/s
+			self.gamma_T           = 2e-5; %m/s
+			self.isplume           = false;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+				md = checkfield(md,'fieldname','basalforcings.num_basins','numel',1,'NaN',1,'Inf',1,'>',0);
+				md = checkfield(md,'fieldname','basalforcings.basin_id','Inf',1,'>=',0,'<=',md.basalforcings.num_basins,'size',[md.mesh.numberofelements 1]);
+				md = checkfield(md,'fieldname','basalforcings.maxboxcount','numel',1,'NaN',1,'Inf',1,'>',0);
+				if numel(self.overturning_coeff)==1
+					md = checkfield(md,'fieldname','basalforcings.overturning_coeff','numel',1,'NaN',1,'Inf',1,'>',0);
+				else
+					md = checkfield(md,'fieldname','basalforcings.overturning_coeff','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1,'>',0);
+				end
+				md = checkfield(md,'fieldname','basalforcings.gamma_T','numel',1,'NaN',1,'Inf',1,'>',0);
+				md = checkfield(md,'fieldname','basalforcings.farocean_temperature','NaN',1,'Inf',1,'size',[md.basalforcings.num_basins+1 NaN]);
+				md = checkfield(md,'fieldname','basalforcings.farocean_salinity','NaN',1,'Inf',1,'>',0,'size',[md.basalforcings.num_basins+1 NaN]);
+				md = checkfield(md,'fieldname','basalforcings.isplume','values',[0 1]);
+				md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'>=',0,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   PICO basal melt rate parameterization:'));
+			fielddisplay(self,'num_basins','number of basins the model domain is partitioned into [unitless]');
+			fielddisplay(self,'basin_id','basin number assigned to each node [unitless]');
+			fielddisplay(self,'maxboxcount','maximum number of boxes initialized under all ice shelves');
+			fielddisplay(self,'overturning_coeff','overturning strength [m^3/s]');
+			fielddisplay(self,'gamma_T','turbulent temperature exchange velocity [m/s]');
+			fielddisplay(self,'farocean_temperature','depth averaged ocean temperature in front of the ice shelf for basin i [K]');
+			fielddisplay(self,'farocean_salinity','depth averaged ocean salinity in front of the ice shelf for basin i [psu]');
+			fielddisplay(self,'isplume','boolean to use buoyant plume melt rate parameterization from Lazeroms et al., 2018 (default false)');
+			fielddisplay(self,'geothermalflux','geothermal heat flux [W/m^2]');
+			fielddisplay(self,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.basalforcings.model','data',5,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','num_basins','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','maxboxcount','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','overturning_coeff','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','gamma_T','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','farocean_temperature','format','DoubleMat','name','md.basalforcings.farocean_temperature','timeserieslength',md.basalforcings.num_basins+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','farocean_salinity','format','DoubleMat','name','md.basalforcings.farocean_salinity','timeserieslength',md.basalforcings.num_basins+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','basin_id','data',self.basin_id-1,'name','md.basalforcings.basin_id','format','IntMat','mattype',2);   %Change to 0-indexing
+			WriteData(fid,prefix,'object',self,'fieldname','isplume','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','format','DoubleMat','name','md.basalforcings.geothermalflux','mattype',1,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/basin.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/basin.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/basin.m	(revision 27955)
@@ -0,0 +1,230 @@
+%BASIN class definition
+%
+%   Usage:
+%      basin=basin();
+
+classdef basin
+	properties (SetAccess=public) 
+		boundaries        = {};
+		name              = '';
+		continent         = '';
+		proj              = epsg2proj(4326);
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. Update old properties here
+		end% }}}
+	end
+	methods
+		function self = basin(varargin) % {{{
+			self=setdefaultparameters(self);
+
+			if nargin>0,
+				options=pairoptions(varargin{:}); 
+		
+				%recover field values: 
+				self.boundaries=getfieldvalue(options,'boundaries',{});
+				self.name=getfieldvalue(options,'name','');
+				self.continent=getfieldvalue(options,'continent','');
+
+				%figure out projection string: 
+				if exist(options,'epsg'),
+					if exist(options,'proj'),
+						error(['Error in constructor for basin ' self.name '. Cannot supply epsg and proj at the same time!']);
+					end
+					epsg=getfieldvalue(options,'epsg');
+					proj=epsg2proj(epsg); %convert to PROJ.4 format
+				elseif exist(options,'proj'),
+					if exist(options,'epsg'),
+						error(['Error in constructor for basin ' self.name '. Cannot supply proj and epsg at the same time!']);
+					end
+					proj=getfieldvalue(options,'proj');
+				else
+					proj='+proj=longlat +datum=WGS84 +no_defs';
+				end
+
+				self.proj=proj;
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			self.name='';
+			self.continent='';
+			self.proj='+proj=longlat +datum=WGS84 +no_defs'; %EPSG 4326
+			self.boundaries={};
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   basin parameters:'));
+			fielddisplay(self,'continent','continent name');
+			fielddisplay(self,'name','basin name');
+			fielddisplay(self,'proj','basin projection string (follows PROJ.4 standard)');
+			fielddisplay(self,'boundaries','list of boundary objects');
+			for i=1:length(self.boundaries),
+				disp(sprintf('             boundary #%i: %s',i,self.boundaries{i}.name));
+			end
+
+		end % }}}
+		function boolean=isnameany(self,varargin) % {{{
+			boolean=0;
+			for  i=1:length(varargin),
+				if strcmpi(self.name,varargin{i}), 
+					boolean=1;
+					break;
+				end
+			end
+		end % }}}
+		function boolean=iscontinentany(self,varargin) % {{{
+			boolean=0;
+			for  i=1:length(varargin),
+				if strcmpi(self.continent,varargin{i}), 
+					boolean=1;
+					break;
+				end
+			end
+		end % }}}
+		function output=outputname(self,varargin) % {{{
+		
+			%recover options
+			options=pairoptions(varargin{:});
+			extension=getfieldvalue(options,'extension',1);
+
+			[path,name,ext]=fileparts(self.name);
+			if extension,
+				output=[name ext];
+			else
+				output=name;
+			end
+		end % }}}
+		function plot(self,varargin) % {{{
+	
+			%add option: 
+			for i=1:length(self.boundaries),
+				self.boundaries{i}.plot('proj',self.proj,varargin{:});
+			end
+
+		end % }}}
+		function plot3d(self,varargin) % {{{
+	
+			%add option: 
+			for i=1:length(self.boundaries),
+				self.boundaries{i}.plot3d(varargin{:});
+			end
+
+		end % }}}
+		function out=contour(self,varargin) % {{{
+		
+			%recover options
+			options=pairoptions(varargin{:});
+			x=[];
+			y=[];
+
+			%go through boundaries, recover edges and project them in the basin epsg reference frame: 
+			for i=1:length(self.boundaries),
+				boundary=self.boundaries{i};
+				contour=boundary.edges();
+				[contour.x,contour.y]=gdaltransform(contour.x,contour.y,boundary.proj,self.proj);
+				x=[x;contour.x];
+				y=[y;contour.y];
+			end
+
+			%close the contour: 
+			if x(end)~=x(1) | y(end)~=y(1), 
+				x(end+1)=x(1); y(end+1)=y(1);
+			end
+
+			out.x=x;
+			out.y=y;
+			out.nods=length(x);
+		end % }}}
+		function checkconsistency(self,varargin) % {{{
+		
+			%recover options
+			options=pairoptions(varargin{:});
+
+			%figure out if two boundaries are identical: 
+			for i=1:length(self.boundaries),
+				namei=self.boundaries{i}.shpfilename; 
+				for j=i+1:length(self.boundaries),
+					namej=self.boundaries{j}.shpfilename; 
+					if strcmpi(namei,namej),
+						error(['Basin ' self.name ' has two identical boundaries named ' namei ]);
+					end
+				end
+			end
+
+			%go through boundaries and check their consistency: 
+			for i=1:length(self.boundaries),
+				boundary=self.boundaries{i};
+				boundary.checkconsistency();
+			end
+		end % }}}
+		function contourplot(self,varargin) % {{{
+			contour=self.contour();
+			plot(contour.x,contour.y,'r*-');
+
+		end % }}}
+		function output=shapefilecrop(self,varargin) % {{{
+
+			%recover options
+			options=pairoptions(varargin{:});
+			threshold=getfieldvalue(options,'threshold',.65); %.65 degrees lat,long
+			inshapefile=getfieldvalue(options,'shapefile');
+			outputshapefile=getfieldvalue(options,'outputshapefile','');
+
+			if (exist(options,'epsgshapefile') & exist(options,'projshapefile')), 
+				error('Basin shapefilecrop error message: cannot specify epsgshapefile and projshapefile at the same time');
+			end
+			if exist(options,'epsgshapefile'),
+				projshapefile=epsg2proj(getfieldvalue(options,'epsgshapefile'));
+			elseif exist(options,'projshapefile'),
+				projshapefile=getfieldvalue(options,'projshapefile');
+			else
+				error('Basin shapefilecrop error message: epsgshapefile or projshapefile should be specified');
+			end
+
+			%create list of contours that have critical length > threshold (in lat,long):
+			contours=shpread(inshapefile);
+			llist=[];
+			for i=1:length(contours),
+				contour=contours(i);
+				carea=polyarea(contour.x,contour.y);
+				clength=sqrt(carea);
+				if clength<threshold,
+					llist=[llist;i];
+				end
+			end
+			contours(llist)=[];
+
+			%project onto reference frame:
+			for i=1:length(contours),
+				h=contours(i);
+				[h.x,h.y]=gdaltransform(h.x,h.y,projshapefile,self.proj);
+				contours(i).x=h.x;
+				contours(i).y=h.y;
+			end
+
+			%only keep the contours that are inside the basin (take centroids): 
+			ba=self.contour();
+			flags=zeros(length(contours),1);
+			for i=1:length(contours),
+				h=contours(i); 
+				isin=inpolygon(h.x,h.y,ba.x,ba.y);
+				if ~isempty(find(isin==0)),
+					flags(i)=1;
+				end
+			end
+
+			pos=find(flags);
+			contours(pos)=[];
+
+			%Two options: 
+			if strcmpi(outputshapefile,''),
+				output=contours;
+			else
+				shpwrite(contours,outputshapefile);
+			end
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/basin.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/basin.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/basin.py	(revision 27955)
@@ -0,0 +1,255 @@
+from collections import OrderedDict
+import math
+
+from bamg import bamg
+import matplotlib.path as path
+import numpy as np
+
+from boundary import boundary
+from epsg2proj import epsg2proj
+from fielddisplay import fielddisplay
+from gdaltransform import gdaltransform
+from helpers import fileparts
+from inpolygon import inpolygon
+from laea import laea
+from pairoptions import pairoptions
+from polyarea import polyarea
+from shpread import shpread
+
+
+class basin(object):  # {{{
+    """BASIN class definition
+
+    Usage:
+        basin = basin()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.boundaries = []
+        self.name       = ''
+        self.continent  = ''
+        self.proj       = epsg2proj(4326)
+
+        self.setdefaultparameters()
+
+        if len(args):
+            options = pairoptions(*args)
+
+            #recover field values
+            self.boundaries = options.getfieldvalue('boundaries', [])
+            self.name = options.getfieldvalue('name', '')
+            self.continent = options.getfieldvalue('continent', '')
+
+            # figure out projection string
+            if options.exist('epsg'):
+                if options.exist('proj'):
+                    raise RuntimeError('Error in constructor for basin %s. Cannot supply epsg and proj at the same time!'.format(self.name))
+                epsg = options.getfieldvalue('epsg', '')
+                proj = epsg2proj(epsg)#convert to PROJ.4 format
+            elif options.exist('proj'):
+                if options.exist('epsg'):
+                    raise RuntimeError('Error in constructor for basin {}. Cannot supply proj and epsg at the same time!'.format(self.name))
+                proj = options.getfieldvalue('proj', '')
+            else:
+                proj = '+proj=longlat +datum=WGS84 +no_defs'
+
+            self.proj = proj
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   basin parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'continent', 'continent name'))
+        s += '{}\n'.format(fielddisplay(self, 'name', 'basin name'))
+        s += '{}\n'.format(fielddisplay(self, 'proj', 'basin projection string (follows PROJ.4 standard'))
+        s += '{}\n'.format(fielddisplay(self, 'boundaries','list of boundary objects'))
+        for i in range(len(self.boundaries)):
+            s += '             boundary #{}: {}\n'.format((i + 1), self.boundaries[i])
+
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.name       = ''
+        self.continent  = ''
+        self.proj       = '+proj=longlat +datum=WGS84 +no_defs' #EPSG 4326
+        self.boundaries = []
+
+        return self
+    # }}}
+
+    def isnameany(self, *args):  # {{{
+        boolean = 0
+        for arg in args:
+            if type(arg) in [np.ndarray, list]:
+                for name in arg:
+                    if name == self.name:
+                        boolean = 1
+                        break
+            elif arg == self.name:
+                boolean = 1
+                break
+        return boolean
+    # }}}
+
+    def iscontinentany(self, *args):  # {{{
+        boolean = 0
+        for arg in args:
+            if type(arg) in [np.ndarray, list]:
+                for continent in arg:
+                    if continent == self.continent:
+                        boolean = 1
+                        break
+            elif arg == self.continent:
+                boolean = 1
+                break
+        return boolean
+    # }}}
+
+    def outputname(self, *args):  # {{{
+        #recover options
+        options = pairoptions(*args)
+        extension = options.getfieldvalue('extension', 1)
+
+        path, name, ext = fileparts(*args)
+        if extension:
+            output = '{}{}'.format(name, ext)
+        else:
+            output = name
+
+        return output
+    # }}}
+
+    def plot(self, *args):  # {{{
+        #add option
+        for i in range(len(self.boundaries)):
+            self.boundaries[i].plot('proj', self.proj, *args)
+    # }}}
+
+    def plot3d(self, *args):  # {{{
+        #add option
+        for i in range(len(self.boundaries)):
+            self.boundaries[i].plot3d(*args)
+    # }}}
+
+    def contour(self, *args):  # {{{
+        #recover options
+        options = pairoptions(*args)
+        x = []
+        y = []
+
+        #go through boundaries, recover edges and project them in the basin epsg reference frame
+        for i in range(len(self.boundaries)):
+            boundary = self.boundaries[i]
+            contours = boundary.edges() # NOTE: Differs from MATLAB in that shpread returns a list
+            for j in range(len(contours)):
+                contours[j]['x'], contours[j]['y'] = gdaltransform(contours[j]['x'], contours[j]['y'], boundary.proj, self.proj)
+                if x == []:
+                    x = np.array(contours[j]['x'])
+                    y = np.array(contours[j]['y'])
+                else:
+                    x = np.concatenate((x, contours[j]['x']), axis=0)
+                    y = np.concatenate((y, contours[j]['y']), axis=0)
+
+        #close the contour
+        if x[-1] != x[0] or y[-1] != y[0]:
+            x = np.append(x, x[0])
+            y = np.append(y, y[0])
+
+        out = OrderedDict()
+        out['x'] = x
+        out['y'] = y
+        out['nods'] = len(x)
+
+        return out
+    # }}}
+
+    def checkconsistency(self, *args):  # {{{
+        #recover options
+        options = pairoptions(*args)
+
+        #figure out if two boundaries are identical
+        for i in range(len(self.boundaries)):
+            namei = self.boundaries[i].shpfilename
+            for j in range(1, len(self.boundaries)):
+                namej = self.boundaries[j].shpfilename
+                if namei == namej:
+                    raise RuntimeError('Basin {} has two identical boundaries named {}'.format(self.name, namei))
+
+        #go through boundaries and check their consistency
+        for i in range(len(self.boundaries)):
+            boundary == self.boundaries[i]
+            boundary.checkconsistency()
+    # }}}
+
+    def contourplot(self, *args):  # {{{
+        contour = self.contour()
+        plot(contour.x, contour.y, 'r*-')
+    # }}}
+
+    def shapefilecrop(self, *args):  # {{{
+        #recover options
+        options = pairoptions(*args)
+        threshold = options.getfieldvalue('threshold', .65) #.65 degrees lat, long
+        inshapefile = options.getfieldvalue('shapefile')
+        outputshapefile = options.getfieldvalue('outputshapefile', '')
+
+        if options.exist('epsgshapefile') and options.exist('projshapefile'):
+            raise RuntimeError('Basin shapefilecrop error messgae: cannot specify epsgshapefile and projshapefile at the same time')
+
+        if options.exist('epsgshapefile'):
+            projshapefile = epsg2proj(options.getfieldvalue('epsgshapefile'))
+        elif options.exist('projshapefile'):
+            projshapefile = options.getfieldvalue('projshapefile')
+        else:
+            raise RuntimeError('Basin shapefilecrop error message: epsgshapefile or projshapefile should be specified')
+
+        #create list of contours that have critical length > threshold (in lat, long)
+        contours = shpread(inshapefile)
+        llist = []
+        for i in range(len(contours)):
+            contour = contours[i]
+            carea = polyarea(contour['x'], contour['y'])
+            clength = math.sqrt(carea)
+            if clength < threshold:
+                llist.append(i)
+
+        contours_above_threshold = []
+        for i in range(len(contours)):
+            if i not in llist:
+                contours_above_threshold.append(contours[i])
+        contours = contours_above_threshold
+
+        #project onto reference frame
+        for i in range(len(contours)):
+            h = contours[i]
+            h['x'], h['y'] = gdaltransform(h['x'], h['y'], projshapefile, self.proj)
+            contours[i]['x'] = h['x']
+            contours[i]['y'] = h['y']
+
+        #only keep the contours that are inside the basin (take centroids)
+        ba = self.contour()
+        flags = np.zeros(len(contours))
+        for i in range(len(contours)):
+            h = contours[i]
+            isin = inpolygon(h['x'], h['y'], ba['x'], ba['y'])
+            if len(np.where(isin == 0)[0]):
+                flags[i] = 1
+
+        pos = flags.nonzero()[0]
+
+        contours_in_basin = []
+        for i in range(len(contours)):
+            if i not in pos:
+                contours_in_basin.append(contours[i])
+        contours = contours_in_basin
+
+        #Two options
+        output = None
+        if outputshapefile == '':
+            output = contours
+        else:
+            shpwrite(contours, outputshapefile)
+
+        return output
+    # }}}
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/boundary.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/boundary.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/boundary.m	(revision 27955)
@@ -0,0 +1,243 @@
+%BOUNDARY class definition
+%
+%   Usage:
+%      boundary=boundary();
+
+classdef boundary
+	properties (SetAccess=public) 
+		shppath           = '';
+		shpfilename       = '';
+		orientation       = 'normal';  %other value is 'reverse'
+		proj              = epsg2proj(4326); %Proj4.0  projection string. , default is WGS 84 (corresponds to epsg 4326)
+
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. Update old properties here
+		end% }}}
+	end
+	methods
+		function self = boundary(varargin) % {{{
+			self=setdefaultparameters(self);
+
+			if nargin > 0,
+				options=pairoptions(varargin{:});
+
+				%recover field values: 
+				self.shppath=getfieldvalue(options,'shppath','');
+				self.shpfilename=getfieldvalue(options,'shpfilename','');
+				self.orientation=getfieldvalue(options,'orientation','normal');
+
+				%figure out projection string: 
+				if exist(options,'epsg'),
+					if exist(options,'proj'),
+						error(['Error in constructor for boundary ' self.shppath '. Cannot supply epsg and proj at the same time!']);
+					end
+					epsg=getfieldvalue(options,'epsg');
+					proj=epsg2proj(epsg); % convert to PROJ.4 format
+				elseif exist(options,'proj'),
+					if exist(options,'epsg'),
+						error(['Error in constructor for boundary ' self.shppath '. Cannot supply proj and epsg at the same time!']);
+					end
+					proj=getfieldvalue(options,'proj');
+				else
+					proj= '+proj=longlat +datum=WGS84 +no_defs';
+				end
+				self.proj=proj;
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		self.shppath='';
+		self.shpfilename='';
+		self.orientation='normal';
+		self.proj='+proj=longlat +datum=WGS84 +no_defs'; %EPSG 4326
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   boundary parameters:'));
+
+			fielddisplay(self,'shppath','path to filename for this boundary');
+			fielddisplay(self,'shpfilename','shape file name');
+			fielddisplay(self,'orientation','orientation (default is ''normal'', can be ''reverse'')');
+			fielddisplay(self,'proj','shape file projection string (follows PROJ.4 standard)');
+
+		end % }}}
+		function output=name(self) % {{{
+			output=self.shpfilename;
+		end % }}}
+		function output=edges(self) % {{{
+
+			%read domain:
+			[path,name,ext]=fileparts(self.shpfilename);
+			if ~strcmpi(ext,'shp'),
+				ext='shp';
+			end
+			output=shpread([self.shppath '/' name '.' ext]);
+			
+			%do we reverse? 
+			if strcmpi(self.orientation,'reverse'),
+				output.x=flipud(output.x);
+				output.y=flipud(output.y);
+			end
+		end % }}}
+		function plot(self,varargin) % {{{
+			%recover options
+		
+			options=pairoptions(varargin{:});
+
+			%parse input:
+			figurenumber=getfieldvalue(options,'figure',1);
+			color=getfieldvalue(options,'color','r');
+			linewidth=getfieldvalue(options,'linewidth',1);
+			markersize=getfieldvalue(options,'markersize',1);
+			unitmultiplier=getfieldvalue(options,'unit',1);
+			radius=getfieldvalue(options,'radius',6371012);
+			aboveground=getfieldvalue(options,'aboveground',1000);
+			offset=getfieldvalue(options,'offset',.1);
+			fontsize=getfieldvalue(options,'fontsize',10);
+			label=getfieldvalue(options,'label','on');
+
+			if exist(options,'epsg'),
+				if exist(options,'proj'),
+					error('Boundary plot error message: cannot specify epsg and proj at the same time for plot projection');
+				end
+				proj=epsg2proj(getfieldvalue(options,'epsg'));
+			elseif exist(options,'proj'),
+				proj=getfieldvalue(options,'proj');
+			else
+				proj=epsg2proj(4326);
+			end
+
+			%read domain:
+			[path,name,ext]=fileparts(self.shpfilename);
+			if ~strcmpi(ext,'shp'),
+				ext='shp';
+			end
+			domain=shpread([self.shppath '/' name '.' ext]);
+
+			%convert boundary to another reference frame: {{{
+			for i=1:length(domain),
+				try, 
+					[x,y] = gdaltransform(domain(i).x,domain(i).y,self.proj,proj);
+				catch me
+					disp(me.message());
+					self.disp();
+				end
+				domain(i).x=x; domain(i).y=y;
+			end
+
+			for i=1:length(domain),
+				hold on;
+				x=domain(i).x*unitmultiplier;
+				y=domain(i).y*unitmultiplier;
+				if length(x)==1,
+					p=plot(x,y,'k*'); 
+					set(p,'MarkerSize',markersize,'Color',color);
+					if strcmpi(label,'on'),
+						t=text(x,y,self.shpfilename,'FontSize',fontsize);
+					end
+				else
+					p=plot(x,y,'k-'); 
+					set(p,'MarkerSize',markersize,'Color',color);
+					if strcmpi(label,'on'),
+						text(sum(x)/length(x),sum(y)/length(y),self.shpfilename,'FontSize',fontsize);
+					end
+				end
+				set(p,'Color',color);
+				set(p,'LineWidth',linewidth);
+			end
+			%}}}
+		end % }}}
+		function checkconsistency(self,varargin) % {{{
+			%recover options
+			options=pairoptions(varargin{:});
+			tolerance=getfieldvalue(options,'tolerance',1e-5);
+		
+			%recover edges: 
+			edges=self.edges();
+
+			if strcmpi(edges.Geometry,'Point'),
+				return;
+			else
+				%check we don't have two identical vertices: 
+				x=edges.x; y=edges.y; 
+				distance=sqrt( (x(1:end-1)-x(2:end)).^2+(y(1:end-1)-y(2:end)).^2); 
+				dmax=max(distance);
+				isidentical=find(distance<dmax*tolerance);
+				if ~isempty(isidentical),
+					error(['boundary ' shpfilename ' has two vertices extremely close to one another']);
+				end
+			end
+		end % }}}
+		function plot3d(self,varargin) % {{{
+			%recover options
+		
+			options=pairoptions(varargin{:});
+
+			%parse input:
+			figurenumber=getfieldvalue(options,'figure',1);
+			color=getfieldvalue(options,'color','r');
+			linewidth=getfieldvalue(options,'linewidth',1);
+			markersize=getfieldvalue(options,'markersize',1);
+			unitmultiplier=getfieldvalue(options,'unit',1);
+			radius=getfieldvalue(options,'radius',6371012);
+			aboveground=getfieldvalue(options,'aboveground',1000);
+			offset=getfieldvalue(options,'offset',.1);
+			fontsize=getfieldvalue(options,'fontsize',10);
+			label=getfieldvalue(options,'label','on');
+
+			if exist(options,'epsg'),
+				if exist(options,'proj'),
+					error('Boundary plot error message: cannot specify epsg and proj at the same time for plot projection');
+				end
+				proj=epsg2proj(getfieldvalue(options,'epsg'));
+			elseif exist(options,'proj'),
+				proj=getfieldvalue(options,'proj');
+			else
+				proj=epsg2proj(4326);
+			end
+
+			%read domain:
+			[path,name,ext]=fileparts(self.shpfilename);
+			if ~strcmpi(ext,'shp'),
+				ext='shp';
+			end
+			domain=shpread([self.shppath '/' name '.' ext]);
+
+			for i=1:length(domain),
+				try, 
+					[lat,long] = gdaltransform(domain(i).x,domain(i).y,self.proj,'EPSG:4326');
+				catch me
+					disp(me.message());
+					self.disp();
+				end
+				domain(i).x=long; domain(i).y=lat;
+			end
+
+			for i=1:length(domain),
+
+				%project on x,y,z reference frame.
+				[x,y,z]=AboveGround(domain(i).x,domain(i).y,radius,aboveground);
+				[xt,yt,zt]=AboveGround(domain(i).x+offset,domain(i).y+offset,radius,300000);
+				hold on;
+				if length(x)==1,
+					p=plot3(x,y,z,'k*'); 
+					set(p,'MarkerSize',markersize);
+					if strcmpi(label,'on'),
+						t=text(xt,yt,zt,self.shpfilename,'FontSize',fontsize);
+					end
+				else
+					p=plot3(x,y,z,'k-'); 
+					mid=floor(length(xt)/2);
+					if strcmpi(label,'on'),
+						text(xt(mid),yt(mid),zt(mid),self.shpfilename,'FontSize',fontsize);
+					end
+				end
+				set(p,'Color',color);
+				set(p,'LineWidth',linewidth);
+
+			end
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/boundary.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/boundary.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/boundary.py	(revision 27955)
@@ -0,0 +1,184 @@
+import math
+
+import numpy as np
+
+from epsg2proj import epsg2proj
+from fielddisplay import fielddisplay
+from helpers import *
+from pairoptions import pairoptions
+from shpread import shpread
+
+
+class boundary(object):  # {{{
+    """BOUNDARY class definition
+
+    Usage:
+        boundary = boundary()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.boundaries = []
+        self.name       = ''
+        self.continent  = ''
+        self.proj       = epsg2proj(4326)
+
+        self.setdefaultparameters()
+
+        if len(args):
+            options = pairoptions(*args)
+
+            #recover field values
+            self.shppath = options.getfieldvalue('shppath', '')
+            self.shpfilename = options.getfieldvalue('shpfilename', '')
+            self.orientation = options.getfieldvalue('orientation', 'normal')
+
+            # If shppath is missing trailing slash, add it
+            if self.shppath[-1] != '/':
+                self.shppath += '/'
+
+            #figure out projection string:
+            if options.exist('epsg'):
+                if options.exist('proj'):
+                    raise RuntimeError('Error in constructor for boundary {}. Cannot supply epsg and proj at the same time!'.format(self.shppath))
+                epsg = options.getfieldvalue('epsg')
+                proj = epsg2proj(epsg) # convert to PROJ.4 format
+            elif options.exist('proj'):
+                if options.exist('epsg'):
+                    raise RuntimeError('Error in constructor for boundary {}. Cannot supply proj and epsg at the same time!'.format(self.shppath))
+                proj = options.getfieldvalue('proj')
+            else:
+                proj = '+proj=longlat +datum=WGS84 +no_defs'
+
+            self.proj = proj
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   boundary parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'shppath', 'path to filename for this boundary'))
+        s += '{}\n'.format(fielddisplay(self, 'shpfilename', 'shape file name'))
+        s += '{}\n'.format(fielddisplay(self, 'orientation', 'orientation (default is \'normal\', can be \'reverse\')'))
+        s += '{}\n'.format(fielddisplay(self, 'proj', 'shape file projection string (follows PROJ.4 standard)'))
+
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.shppath = ''
+        self.shpfilename = ''
+        self.orientation = 'normal'
+        self.proj = '+proj=longlat +datum=WGS84 +no_defs' #EPSG 4326
+
+        return self
+    # }}}
+
+    def name(self):  # {{{
+        output = self.shpfilename
+
+        return output
+    # }}}
+
+    def edges(self):  # {{{
+        #read domain
+        path, name, ext = fileparts(self.shpfilename)
+        if ext != '.shp':
+            ext = '.shp'
+        output = shpread('{}{}{}'.format(self.shppath, name, ext))
+
+        #do we reverse?
+        if self.orientation == 'reverse':
+            for i in range(len(output)):
+                output[i]['x'] = np.flipud(output[i]['x'])
+                output[i]['y'] = np.flipud(output[i]['y'])
+
+        return output
+    # }}}
+
+    def plot(self, *args):  # {{{
+        #recover options
+        options = pairoptions(*args)
+
+        #parse input
+        # TODO: Sort out what options we should set (see 
+        # src/m/classes/boundary.m)
+        
+        if options.exist('epsg'):
+            if options.exist('proj'):
+                raise RuntimeError('Boundary plot error message: cannot specify epsg and proj at the same time for plot projection')
+            proj = epsg2proj(options.getfieldvalue('epsg'))
+        elif options.exist('proj'):
+            proj = options.getfieldvalue('proj')
+        else:
+            proj = epsg2proj(4326)
+
+        #read domain
+        path, name, ext = fileparts(self.shpfilename)
+        if ext != '.shp':
+            ext = '.shp'
+        domain = shpread('{}{}{}'.format(self.shppath, name, ext))
+
+        #convert boundary to another reference frame #{{{
+        for i in range(len(domain)):
+            try:
+                x, y = gdaltransform(domain[i]['x'], domain[i]['y'], self.proj, proj)
+            except error as e:
+                print(e)
+                print(self)
+
+        # TODO: Figure out how to recover figure here: do we pass 'fig' and 
+        # 'ax' in args?
+        #for i in range(len(domain)):
+            # x = domain[i].x * unitmultiplier
+            # y = domain[i].y * unitmultiplier
+            # if len(x) == 1:
+        # }}}
+
+        #TODO: Finish translating from MATLAB after test2004.py runs without plot
+    # }}}
+
+    def checkconsistency(self, *args):  # {{{
+        #recover options
+        options = pairoptions(*args)
+        tolerance = getfieldvalue(options, 'tolerance', 1e-5)
+
+        #recover edges
+        edges = self.edges()
+
+        if edges.Geometry == 'Point':
+            return
+        else:
+            #check that we don't have two identical vertices
+            x = edges.x
+            y = edges.y
+            distance = math.sqrt((x[:-2] - x[1:-1]) ** 2 + (y[:-2] - y[1:-1]) ** 2)
+            dmax = distance.max()
+            isidentical = np.where(np.asarray(distance) < dmax * tolerance)
+            for elem in isidentical: # distance should be a 1D array, but return from np.where is a tuple of arrays
+                if len(elem) != 0:
+                    raise Exception('boundary {} has two vertices extermely close to one another'.format(shpfilename))
+
+    def plot3d(self, *args):  # {{{
+        #recover options
+        options = pairoptions(*args)
+
+        #parse input
+        # TODO: Sort out what options we should set (see 
+        # src/m/classes/boundary.m)
+        
+        if options.exist('epsg'):
+            if options.exist('proj'):
+                raise RuntimeError('Boundary plot error message: cannot specify epsg and proj at the same time for plot projection')
+            proj = epsg2proj(options.getfieldvalue('epsg'))
+        elif options.exist('proj'):
+            proj = options.getfieldvalue('proj')
+        else:
+            proj = epsg2proj(4326)
+
+        #read domain
+        path, name, ext = fileparts(self.shpfilename)
+        if ext != '.shp':
+            ext = '.shp'
+        domain = shpread('{}{}{}'.format(self.shppath, name, ext))
+
+        #TODO: Finish translating from MATLAB after test2004.py runs without plot
+    # }}}
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calving.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calving.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calving.js	(revision 27955)
@@ -0,0 +1,46 @@
+//CALVING class definition
+//
+//   Usage:
+//      calving=new calving();
+
+function calving (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   Calving parameters:'));
+		fielddisplay(this,'calvingrate','calving rate at given location [m/a]');
+
+	}// }}}
+    this.extrude = function(md) {//{{{
+        this.calvingrate=project3d(md,'vector',this.calvingrate,'type','node');
+        return this;
+    }//}}}
+	this.classname= function(){// {{{
+		return "calving";
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) { // {{{
+		//Early return
+		if (solution!='TransientSolution' | md.trans.ismovingfront==0) return;
+
+		checkfield(md,'fieldname','calving.calvingrate(1:md.mesh.numberofvertices,:)','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+	} //}}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			var yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.calving.law','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','calvingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
+		}//}}}
+		this.fix=function() { //{{{
+			this.calvingrate=NullFix(this.calvingrate,NaN);
+			this.meltingrate=NullFix(this.meltingrate,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.calvingrate   = NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calving.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calving.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calving.m	(revision 27955)
@@ -0,0 +1,56 @@
+%CALVING class definition
+%
+%   Usage:
+%      calving=calving();
+
+classdef calving
+	properties (SetAccess=public) 
+		calvingrate   = NaN;
+	end
+	methods
+		function self = calving(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('calving');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.calvingrate=project3d(md,'vector',self.calvingrate,'type','node');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','calving.calvingrate','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Calving parameters:'));
+			fielddisplay(self,'calvingrate','calving rate at given location [m/a]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.calving.law','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','calvingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.calving.calvingrate'],self.calvingrate);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calving.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calving.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calving.py	(revision 27955)
@@ -0,0 +1,51 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class calving(object):
+    """CALVING class definition
+
+    Usage:
+        calving = calving()
+    """
+
+    def __init__(self):  # {{{
+        self.calvingrate = np.nan
+        #self.setdefaultparameters() # Uncomment if/when setdefaultparameters is used
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   Calving parameters:'
+        s += '{}\n'.format(fielddisplay(self, 'calvingrate', 'calving rate at given location [m/a]'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        return self
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.calvingrate = project3d(md, 'vector', self.calvingrate, 'type', 'node')
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        #Early return
+        if solution != 'TransientSolution' or not md.transient.ismovingfront:
+            return md
+
+        md = checkfield(md, 'fieldname', 'calving.calvingrate', '>=', 0, 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'name', 'md.calving.law', 'data', 1, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'calvingrate', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts, 'scale', 1. / yts)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingcalvingmip.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingcalvingmip.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingcalvingmip.m	(revision 27955)
@@ -0,0 +1,57 @@
+%CALVINGCALVINGMIP class definition
+%   For calvingMIP laws and coefficients
+%   Usage:
+%      calvingcalvingmip=calvingcalvingmip();
+
+classdef calvingcalvingmip
+	properties (SetAccess=public) 
+		min_thickness = 0.;
+		experiment = 1;
+	end
+	methods
+		function self = calvingcalvingmip(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('calvingcalvingmip');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			%For now we turn this off by setting the threshold to 0
+			self.min_thickness = 0.;
+
+			self.experiment = 1;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','calving.min_thickness','>=',0,'NaN',1,'Inf',1,'numel',1);
+			md = checkfield(md,'fieldname','calving.experiment','values',[0, 1, 2, 3, 4, 5]);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   CalvingMIP parameters:'));
+			fielddisplay(self,'experiment','Experiment in CalvingMIP');
+			fielddisplay(self,'min_thickness','minimum thickness below which no ice is allowed [m]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.calving.law','data',12,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','min_thickness','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','experiment','format','Integer');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingcrevassedepth.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingcrevassedepth.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingcrevassedepth.m	(revision 27955)
@@ -0,0 +1,62 @@
+%CALVINCREVASSEDEPTH class definition
+%
+%   Usage:
+%      calvingcrevassedepth=calvingcrevassedepth();
+
+classdef calvingcrevassedepth
+	properties (SetAccess=public) 
+		crevasse_opening_stress=1;
+		crevasse_threshold     =1.;
+		water_height = 0.;
+	end
+	methods
+		function self = calvingcrevassedepth(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('calvingcrevassedepth');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			
+			crevasse_threshold      = 1.;
+			crevasse_opening_stress = 1;
+         self.water_height       = 0.;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','calving.crevasse_opening_stress','numel',[1],'values',[0,1]);
+         md = checkfield(md,'fieldname','calving.crevasse_threshold','numel',[1],'>',0,'<=',1);
+			md = checkfield(md,'fieldname','calving.water_height','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Calving Pi parameters:'));
+			fielddisplay(self,'crevasse_opening_stress','0: stress only in the ice-flow direction, 1: max principal');
+			fielddisplay(self,'crevasse_threshold','ratio of full thickness to calve (e.g. 0.75 is for 75% of the total ice thickness)');
+			fielddisplay(self,'water_height','water height in the crevasse [m]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.calving.law','data',6,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','crevasse_opening_stress','format','Integer');
+         WriteData(fid,prefix,'object',self,'fieldname','crevasse_threshold','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','water_height','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingcrevassedepth.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingcrevassedepth.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingcrevassedepth.py	(revision 27955)
@@ -0,0 +1,51 @@
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+#from project3d import project3d # Uncomment if/when extrude is implemented
+from WriteData import WriteData
+
+
+class calvingcrevassedepth(object):
+    """CALVINCREVASSEDEPTH class definition
+
+    Usage:
+        calvingcrevassedepth = calvingcrevassedepth()
+    """
+
+    def __init__(self):  # {{{
+        self.crevasse_opening_stress = 1
+        self.crevasse_threshold      = 1.
+        self.water_height            = 0.
+
+        #self.setdefaultparameters() # Uncomment if/when setdefaultparameters is used
+    # }}}
+    def __repr__(self):  # {{{
+        s = '   Calving Pi parameters:'
+        s += '{}\n'.format(fielddisplay(self, 'crevasse_opening_stress', '0: stress only in the ice-flow direction, 1: max principal'))
+        s += '{}\n'.format(fielddisplay(self, 'crevasse_threshold', 'ratio of full thickness to calve (e.g. 0.75 is for 75% of the total ice thickness)'))
+        s += '{}\n'.format(fielddisplay(self, 'water_height', 'water height in the crevasse [m]'))
+        return s
+    # }}}
+    def setdefaultparameters(self):  # {{{
+        return self
+    # }}}
+    def extrude(self, md):  # {{{
+        return self
+    # }}}
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        #Early return
+        if solution != 'TransientSolution' or not md.transient.ismovingfront:
+            return md
+
+        md = checkfield(md, 'fieldname', 'calving.crevasse_opening_stress', 'numel', [1], 'values', [0,1])
+        md = checkfield(md, 'fieldname', 'calving.crevasse_threshold', 'numel', [1], '>', 0., '<=', 1.)
+        md = checkfield(md, 'fieldname', 'calving.water_height', 'NaN', 1, 'Inf', 1, 'timeseries', 1, '>=', 0) 
+
+        return md
+    # }}}
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+        WriteData(fid, prefix, 'name', 'md.calving.law', 'data', 6, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'crevasse_opening_stress', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'crevasse_threshold', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'water_height', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingdev.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingdev.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingdev.py	(revision 27955)
@@ -0,0 +1,61 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class calvingdev(object):
+    """
+    CALVINGDEV class definition
+
+       Usage:
+          calvingdev = calvingdev()
+    """
+
+    def __init__(self):  # {{{
+
+        self.stress_threshold_groundedice = 0.
+        self.stress_threshold_floatingice = 0.
+
+    #set defaults
+        self.setdefaultparameters()
+
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = '   Calving Pi parameters:'
+        string = "%s\n%s" % (string, fielddisplay(self, 'stress_threshold_groundedice', 'sigma_max applied to grounded ice only [Pa]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'stress_threshold_floatingice', 'sigma_max applied to floating ice only [Pa]'))
+
+        return string
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        #Default sigma max
+        self.stress_threshold_groundedice = 1e6
+        self.stress_threshold_floatingice = 150e3
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        #Early return
+        if solution == 'TransientSolution' or md.transient.ismovingfront == 0:
+            return
+
+        md = checkfield(md, 'fieldname', 'calving.stress_threshold_groundedice', '>', 0, 'nan', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'calving.stress_threshold_floatingice', '>', 0, 'nan', 1, 'Inf', 1)
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'name', 'md.calving.law', 'data', 2, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'stress_threshold_groundedice', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'stress_threshold_floatingice', 'format', 'DoubleMat', 'mattype', 1)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingdev2.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingdev2.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingdev2.m	(revision 27955)
@@ -0,0 +1,62 @@
+%CALVINGDEV2 class definition
+%
+%   Usage:
+%      calvingdev2=calvingdev2();
+
+classdef calvingdev2
+	properties (SetAccess=public) 
+		stress_threshold_groundedice = 0.;
+		stress_threshold_floatingice = 0.;
+		height_above_floatation = 0.;
+	end
+	methods
+		function self = calvingdev2(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('calvingdev2');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Default sigma max
+			self.stress_threshold_groundedice = 1.e6;
+			self.stress_threshold_floatingice = 150.e3;
+			self.height_above_floatation= 0.;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','calving.stress_threshold_groundedice','>',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','calving.stress_threshold_floatingice','>',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','calving.height_above_floatation','<=',0);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Calving Dev2 parameters:'));
+			fielddisplay(self,'stress_threshold_groundedice','sigma_max applied to grounded ice only [Pa]');
+			fielddisplay(self,'stress_threshold_floatingice','sigma_max applied to floating ice only [Pa]');
+			fielddisplay(self,'height_above_floatation','height above floatation that the ice tongue must reach before it can calve [m]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.calving.law','data',7,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_groundedice','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_floatingice','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1, 'yts', md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','height_above_floatation', 'format','Double');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvinghab.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvinghab.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvinghab.m	(revision 27955)
@@ -0,0 +1,53 @@
+%CALVINGHAB class definition
+%
+%   Usage:
+%      calvinghab=calvinghab();
+
+classdef calvinghab
+	properties (SetAccess=public) 
+		flotation_fraction = 0.;
+	end
+	methods
+		function self = calvinghab(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('calvinghab');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%fraction q = .15 of the flotation thickness at the terminus by default
+			self.flotation_fraction = 0.15;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','calving.flotation_fraction','>=',0,'NaN',1,'Inf',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Calving Pi parameters:'));
+			fielddisplay(self,'flotation_fraction','fraction of flotation thickness at the terminus');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.calving.law','data',5,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','flotation_fraction','format','DoubleMat','mattype',1);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvinglevermann.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvinglevermann.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvinglevermann.m	(revision 27955)
@@ -0,0 +1,54 @@
+%CALVINGLEVERMANN class definition
+%
+%   Usage:
+%      calvinglevermann=calvinglevermann();
+
+classdef calvinglevermann
+	properties (SetAccess=public) 
+		coeff         = NaN;
+	end
+	methods
+		function self = calvinglevermann(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('calvinglevermann');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.coeff=project3d(md,'vector',self.coeff,'type','node');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Proportionality coefficient in Levermann model
+			self.coeff=2e13;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','calving.coeff','>',0,'size',[md.mesh.numberofvertices 1]);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Calving Levermann parameters:'));
+			fielddisplay(self,'coeff','proportionality coefficient in Levermann model');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.calving.law','data',3,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','coeff','format','DoubleMat','mattype',1);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvinglevermann.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvinglevermann.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvinglevermann.py	(revision 27955)
@@ -0,0 +1,53 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+from project3d import project3d
+
+
+class calvinglevermann(object):
+    """
+    CALVINGLEVERMANN class definition
+
+       Usage:
+          calvinglevermann = calvinglevermann()
+    """
+
+    def __init__(self):  # {{{
+
+        self.coeff = float('NaN')
+
+    #set defaults
+        self.setdefaultparameters()
+
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = '   Calving Levermann parameters:'
+        string = "%s\n%s" % (string, fielddisplay(self, 'coeff', 'proportionality coefficient in Levermann model'))
+
+        return string
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.coeff = project3d(md, 'vector', self.coeff, 'type', 'node')
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        #Proportionality coefficient in Levermann model
+        self.coeff = 2e13
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        #Early return
+        if (solution != 'TransientSolution') or (not md.transient.ismovingfront):
+            return md
+
+        md = checkfield(md, 'fieldname', 'calving.coeff', 'size', [md.mesh.numberofvertices], '>', 0)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'name', 'md.calving.law', 'data', 3, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'coeff', 'format', 'DoubleMat', 'mattype', 1)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingminthickness.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingminthickness.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingminthickness.m	(revision 27955)
@@ -0,0 +1,53 @@
+%CALVINGMINTHICKNESS class definition
+%
+%   Usage:
+%      calvingminthickness=calvingminthickness();
+
+classdef calvingminthickness
+	properties (SetAccess=public) 
+		min_thickness = 0.;
+	end
+	methods
+		function self = calvingminthickness(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('calvingminthickness');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%minimum thickness is 100 m by default
+			self.min_thickness=100.;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','calving.min_thickness','>',0,'NaN',1,'Inf',1,'numel',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Calving Minimum thickness:'));
+			fielddisplay(self,'min_thickness','minimum thickness below which no ice is allowed [m]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.calving.law','data',4,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','min_thickness','format','Double');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingminthickness.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingminthickness.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingminthickness.py	(revision 27955)
@@ -0,0 +1,50 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class calvingminthickness(object):
+    """
+    CALVINGMINTHICKNESS class definition
+
+       Usage:
+          calvingminthickness = calvingminthickness()
+    """
+
+    def __init__(self):  # {{{
+
+        self.min_thickness = 0.
+
+    #set defaults
+        self.setdefaultparameters()
+
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = '   Calving Minimum thickness:'
+        string = "%s\n%s" % (string, fielddisplay(self, 'min_thickness', 'minimum thickness below which no ice is allowed'))
+        return string
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        #minimum thickness is 100 m by default
+        self.min_thickness = 100.
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        #Early return
+        if solution == 'TransientSolution' or md.transient.ismovingfront == 0:
+            return
+
+        md = checkfield(md, 'fieldname', 'calving.min_thickness', '>', 0, 'NaN', 1, 'Inf', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'name', 'md.calving.law', 'data', 4, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'min_thickness', 'format', 'Double')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingparameterization.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingparameterization.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingparameterization.m	(revision 27955)
@@ -0,0 +1,100 @@
+%CALVINGPARAMETERIZATION class definition
+%   For test calving laws and coefficients
+%   Usage:
+%      calvingparameterization=calvingparameterization();
+
+classdef calvingparameterization
+	properties (SetAccess=public) 
+		min_thickness = 0.;
+		use_param = 0;
+		theta = 0.;
+		alpha = 0;
+		xoffset = 0;
+		yoffset = 0;
+		vel_upperbound = 8000;
+		vel_threshold = 6000;
+		vel_lowerbound = 0;
+	end
+	methods
+		function self = calvingparameterization(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('calvingparameterization');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			%For now we turn this off by setting the threshold to 0
+			self.min_thickness = 0.;
+
+			%Parameters for the spatial temporal separation
+			%The coefficient follows: gamma= f(x)
+			% 0 - f(x) = y_{o} + \alpha (x+x_{o})
+			% 1 - f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o}))
+			self.use_param = 0;
+			% the amplifier
+			self.theta = 0;
+			% the slope alpha
+			self.alpha = 0;
+			% offset in x-axis
+			self.xoffset = 0;
+			% offset in y-axis
+			self.yoffset = 0;
+			% velocity thresholds to reduce calving rate
+			self.vel_upperbound = 6000; % m/a
+			self.vel_lowerbound = 0; % m/a
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','calving.min_thickness','>=',0,'NaN',1,'Inf',1,'numel',1);
+			md = checkfield(md,'fieldname','calving.use_param','values',[-1, 0, 1, 2, 3, 4, 5]);
+			md = checkfield(md,'fieldname','calving.theta','NaN',1,'Inf',1,'numel',1);
+			md = checkfield(md,'fieldname','calving.alpha','NaN',1,'Inf',1,'numel',1);
+			md = checkfield(md,'fieldname','calving.xoffset','NaN',1,'Inf',1,'numel',1);
+			md = checkfield(md,'fieldname','calving.yoffset','NaN',1,'Inf',1,'numel',1);
+			md = checkfield(md,'fieldname','calving.vel_lowerbound','NaN',1,'Inf',1,'numel',1);
+			md = checkfield(md,'fieldname','calving.vel_threshold','NaN',1,'Inf',1,'numel',1);
+			md = checkfield(md,'fieldname','calving.vel_upperbound','NaN',1,'Inf',1,'numel',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Calving test parameters:'));
+			fielddisplay(self,'min_thickness','minimum thickness below which no ice is allowed [m]');
+			fielddisplay(self,'use_param','-1 - just use frontal ablation rate, 0 - f(x) = y_{o} + \alpha (x+x_{o}), 1 - f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o})), 2 - tanh(thickness), 3 - tanh(normalized vel), 4 - tanh(truncated vel), 5 - linear(truncated vel)');
+			fielddisplay(self,'theta','the amplifier');
+			fielddisplay(self,'alpha','the slope');
+			fielddisplay(self,'xoffset','offset in x-axis');
+			fielddisplay(self,'yoffset','offset in y-axis');
+			fielddisplay(self,'vel_lowerbound','lowerbound of ice velocity to reduce the calving rate [m/a]');
+			fielddisplay(self,'vel_threshold','threshold of ice velocity to reduce the calving rate [m/a]');
+			fielddisplay(self,'vel_upperbound','upperbound of ice velocity to reduce the calving rate [m/a]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.calving.law','data',9,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','min_thickness','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','use_param','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','theta','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','alpha','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','xoffset','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','yoffset','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','vel_lowerbound','format','Double','scale', 1./yts);
+			WriteData(fid,prefix,'object',self,'fieldname','vel_threshold','format','Double','scale', 1./yts);
+			WriteData(fid,prefix,'object',self,'fieldname','vel_upperbound','format','Double','scale', 1./yts);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingparameterization.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingparameterization.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingparameterization.py	(revision 27955)
@@ -0,0 +1,111 @@
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from WriteData import WriteData
+
+
+class calvingparameterization(object):
+    """calvingparameterization class definition
+    For test calving laws and coefficients
+
+    Usage:
+        calvingparameterization = calvingparameterization()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.min_thickness = 0
+        self.use_param = 0
+        self.theta = 0
+        self.alpha = 0
+        self.xoffset = 0
+        self.yoffset = 0
+        self.vel_upperbound = 0
+        self.vel_threshold = 0
+        self.vel_lowerbound = 0
+
+        nargs = len(args)
+        if nargs == 0:
+            self.setdefaultparameters()
+        elif nargs == 1:
+            # TODO: Replace the following with constructor
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   Calving test parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'min_thickness', 'minimum thickness below which no ice is allowed [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'use_param', '-1 - just use frontal ablation rate, 0 - f(x) = y_{o} + \alpha (x+x_{o}), 1 - f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o})), 2 - tanh(thickness), 3 - tanh(normalized vel), 4 - tanh(truncated vel), 5 - linear(truncated vel)'))
+        s += '{}\n'.format(fielddisplay(self, 'theta', 'the amplifier'))
+        s += '{}\n'.format(fielddisplay(self, 'alpha', 'the slope'))
+        s += '{}\n'.format(fielddisplay(self, 'xoffset', 'offset in x-axis'))
+        s += '{}\n'.format(fielddisplay(self, 'yoffset', 'offset in y-axis'))
+        s += '{}\n'.format(fielddisplay(self, 'vel_lowerbound', 'lowerbound of ice velocity to reduce the calving rate [m/a]'))
+        s += '{}\n'.format(fielddisplay(self, 'vel_threshold', 'threshold of ice velocity to reduce the calving rate [m/a]'))
+        s += '{}\n'.format(fielddisplay(self, 'vel_upperbound', 'upperbound of ice velocity to reduce the calving rate [m/a]'))
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # For now we turn this off by setting the threshold to 0
+        self.min_thickness = 0.
+
+        # Parameters for the spatial temporal separation
+        # The coefficient follows: gamma= f(x)
+        # 0 - f(x) = y_{o} + \alpha (x+x_{o})
+        # 1 - f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o}))
+        self.use_param = 0
+
+        # The amplifier
+        self.theta = 0
+
+        # The slope alpha
+        self.alpha = 0
+
+        # Offset in x-axis
+        self.xoffset
+
+        # Offset in y-axis
+        self.yoffset
+
+        # Velocity thresholds to reduce calving rate
+        self.vel_upperbound = 6000 # m/a
+        self.vel_lowerbound = 0 # m/a
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if not solution == 'TransientSolution' or not md.transient.ismovingfront:
+            return
+
+        md = checkfield(md, 'fieldname', 'calving.min_thickness', '>=', 0, 'NaN', 1, 'Inf', 1, 'numel', 1)
+        md = checkfield(md, 'fieldname', 'calving.use_param', 'values', [-1, 0, 1, 2, 3, 4, 5])
+        md = checkfield(md, 'fieldname', 'calving.theta', 'NaN', 1, 'Inf', 1, 'numel', 1)
+        md = checkfield(md, 'fieldname', 'calving.alpha', 'NaN', 1, 'Inf', 1, 'numel', 1)
+        md = checkfield(md, 'fieldname', 'calving.xoffset', 'NaN', 1, 'Inf', 1, 'numel', 1)
+        md = checkfield(md, 'fieldname', 'calving.yoffset', 'NaN', 1, 'Inf', 1, 'numel', 1)
+        md = checkfield(md, 'fieldname', 'calving.vel_lowerbound', 'NaN', 1, 'Inf', 1, 'numel', 1)
+        md = checkfield(md, 'fieldname', 'calving.vel_threshold', 'NaN', 1, 'Inf', 1, 'numel', 1)
+        md = checkfield(md, 'fieldname', 'calving.vel_upperbound', 'NaN', 1, 'Inf', 1, 'numel', 1)
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+        WriteData(fid, prefix, 'name', 'md.calving.law', 'data', 9, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'min_thickness', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'use_param', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'theta', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'alpha', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'xoffset', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'yoffset', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'vel_lowerbound', 'format', 'Double', 'scale', 1. / yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'vel_threshold','format', 'Double', 'scale', 1. / yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'vel_upperbound', 'format', 'Double', 'scale', 1. / yts)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingpollard.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingpollard.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingpollard.m	(revision 27955)
@@ -0,0 +1,52 @@
+%CALVINGPOLLARD class definition
+%
+%   Usage:
+%      calvingpollard=calvingpollard();
+
+classdef calvingpollard
+	properties (SetAccess=public) 
+		rc = 0.;
+	end
+	methods
+		function self = calvingpollard(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('calvingpollard');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			return;
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Default from Pollard and DeConto 2015
+			self.rc = .75;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','calving.rc','>',0,'<=',1,'numel',1);
+		end % }}}
+		function disp(self) % {{
+			disp(sprintf('   Calving Pollard and DeConto parameters:'));
+			fielddisplay(self,'rc','critical depth/thickness ratio (default is 0.75) ');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.calving.law','data',10,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','rc','format','Double');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingtest.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingtest.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingtest.m	(revision 27955)
@@ -0,0 +1,54 @@
+%CALVINGTEST class definition
+%  For testing calving laws and coefficients
+%   Usage:
+%      calvingtest=calvingtest();
+
+classdef calvingtest
+	properties (SetAccess=public)
+		speedfactor = 1;
+		independentrate = 0;
+	end
+	methods
+		function self = calvingtest(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('calvingtest');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			self.speedfactor = 1;
+			self.independentrate = 0;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+			md = checkfield(md,'fieldname','calving.speedfactor','>=',0,'NaN',1,'Inf',1, 'singletimeseries', 1);
+			md = checkfield(md,'fieldname','calving.independentrate','NaN',1,'Inf',1, 'singletimeseries', 1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Calving test parameters:'));
+			fielddisplay(self,'speedfactor','calving rate is proportional to the ice velocity (e.g. speedfactor=1 -> calving front should not move)');
+			fielddisplay(self,'independentrate','calving rate is independent of the ice velocity.');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.calving.law','data',8,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','speedfactor','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','independentrate','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1./yts);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingvonmises.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingvonmises.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingvonmises.m	(revision 27955)
@@ -0,0 +1,65 @@
+%CALVINGVONMISES class definition
+%
+%   Usage:
+%      calvingvonmises=calvingvonmises();
+
+classdef calvingvonmises
+	properties (SetAccess=public) 
+		stress_threshold_groundedice = 0.;
+		stress_threshold_floatingice = 0.;
+		min_thickness = 0.;
+	end
+	methods
+		function self = calvingvonmises(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('calvingvonmises');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Default sigma max
+			self.stress_threshold_groundedice = 1e6;
+			self.stress_threshold_floatingice = 150e3;
+
+			%For now we turn this off by setting the threshold to 0
+			self.min_thickness = 0.;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','calving.stress_threshold_groundedice','>',0,'NaN',1,'Inf',1,'size','universal');
+			md = checkfield(md,'fieldname','calving.stress_threshold_floatingice','>',0,'NaN',1,'Inf',1,'size','universal');
+			md = checkfield(md,'fieldname','calving.min_thickness','>=',0,'NaN',1,'Inf',1,'numel',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Calving VonMises parameters:'));
+			fielddisplay(self,'stress_threshold_groundedice','sigma_max applied to grounded ice only [Pa]');
+			fielddisplay(self,'stress_threshold_floatingice','sigma_max applied to floating ice only [Pa]');
+			fielddisplay(self,'min_thickness','minimum thickness below which no ice is allowed [m]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.calving.law','data',2,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_groundedice','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_floatingice','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','min_thickness','format','Double');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingvonmises.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingvonmises.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingvonmises.py	(revision 27955)
@@ -0,0 +1,63 @@
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from WriteData import WriteData
+
+
+class calvingvonmises(object):
+    """CALVINGVONMISES class definition
+
+    Usage:
+        calvingvonmises = calvingvonmises()
+    """
+
+    def __init__(self):  # {{{
+        self.stress_threshold_groundedice = 0
+        self.stress_threshold_floatingice = 0
+        self.min_thickness = 0
+
+    #set defaults
+        self.setdefaultparameters()
+
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   Calving VonMises parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'stress_threshold_groundedice', 'sigma_max applied to grounded ice only [Pa]'))
+        s += '{}\n'.format(fielddisplay(self, 'stress_threshold_floatingice', 'sigma_max applied to floating ice only [Pa]'))
+        s += '{}\n'.format(fielddisplay(self, 'min_thickness', 'minimum thickness below which no ice is allowed [m]'))
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Default sigma max
+        self.stress_threshold_groundedice = 1e6
+        self.stress_threshold_floatingice = 150e3
+
+        # Turn off min_thickness by default
+        self.min_thickness = 0.
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if solution == 'TransientSolution' or not md.transient.ismovingfront:
+            return
+
+        md = checkfield(md, 'fieldname', 'calving.stress_threshold_groundedice', '>', 0, 'nan', 1, 'Inf', 1, 'size', 'universal')
+        md = checkfield(md, 'fieldname', 'calving.stress_threshold_floatingice', '>', 0, 'nan', 1, 'Inf', 1, 'size', 'universal')
+        md = checkfield(md, 'fieldname', 'calving.min_thickness', '>=', 0, 'NaN', 1, 'Inf', 1, 'numel', [1])
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+        WriteData(fid, prefix, 'name', 'md.calving.law', 'data', 2, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'stress_threshold_groundedice', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts )
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'stress_threshold_floatingice', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'min_thickness', 'format', 'Double')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingvonmisesAD.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingvonmisesAD.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/calvingvonmisesAD.m	(revision 27955)
@@ -0,0 +1,82 @@
+%CALVINGVONMISESAD class definition
+%
+%   Usage:
+%      calvingvonmisesAD=calvingvonmisesAD();
+
+classdef calvingvonmisesAD
+	properties (SetAccess=public) 
+		basin_id							  = NaN;
+		num_basins           = 0;
+		stress_threshold_groundedice = 0.;
+		stress_threshold_floatingice = 0.;
+		min_thickness = 0.;
+	end
+	methods
+		function self = calvingvonmises(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('calvingvonmisesAD');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			self.basin_id             = NaN;
+			num_basins           = 0;
+			
+			%Default sigma max
+			self.stress_threshold_groundedice = 1e6;
+			self.stress_threshold_floatingice = 150e3;
+
+			%For now we turn this off by setting the threshold to 0
+			self.min_thickness = 0.;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','calving.basin_id','Inf',1,'>=',0,'<=',md.frontalforcings.num_basins,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','frontalforcings.num_basins','numel',1,'NaN',1,'Inf',1,'>',0);
+			md = checkfield(md,'fieldname','calving.stress_threshold_groundedice','>',0,'NaN',1,'Inf',1,'size',[md.calving.num_basins 1]);
+			md = checkfield(md,'fieldname','calving.stress_threshold_floatingice','>',0,'NaN',1,'Inf',1,'size',[md.calving.num_basins 1]);
+			%md = checkfield(md,'fieldname','calving.stress_threshold_groundedice','>',0,'NaN',1,'Inf',1,'size',[1 1]);
+			%md = checkfield(md,'fieldname','calving.stress_threshold_floatingice','>',0,'NaN',1,'Inf',1,'size',[1 1]);
+			md = checkfield(md,'fieldname','calving.min_thickness','>=',0,'NaN',1,'Inf',1,'numel',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Calving VonMises (AD) parameters:'));
+			fielddisplay(self,'basin_id','basin ID for elements');
+			fielddisplay(self,'num_basins', 'number of basins');
+			fielddisplay(self,'stress_threshold_groundedice','sigma_max applied to grounded ice only [Pa]');
+			fielddisplay(self,'stress_threshold_floatingice','sigma_max applied to floating ice only [Pa]');
+			fielddisplay(self,'min_thickness','minimum thickness below which no ice is allowed [m]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.calving.law','data',11,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','num_basins','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','basin_id','data',self.basin_id-1,'name','md.calving.basin_id','format','IntMat','mattype',2); %0-indexed
+			%WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_groundedice','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			%WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_floatingice','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			%WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_groundedice','format','Double');
+			%WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_floatingice','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_groundedice','format','DoubleMat');
+			WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_floatingice','format','DoubleMat');
+			WriteData(fid,prefix,'object',self,'fieldname','min_thickness','format','Double');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfdragcoeffabsgrad.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfdragcoeffabsgrad.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfdragcoeffabsgrad.m	(revision 27955)
@@ -0,0 +1,77 @@
+%CFDRAGCOEFFABSGRAD class definition
+%
+%   Usage:
+%      cfdragcoeffabsgrad=cfdragcoeffabsgrad();
+%      cfdragcoeffabsgrad=cfdragcoeffabsgrad('name','SurfaceAltimetry',...
+%                    'definitionstring','Outputdefinition1',... 
+%							'model_string','Surface',...
+%                    'weights',ones(md.mesh.numberofvertices,1),...
+%                    'weights_string','WeightsSurfaceObservations');
+%
+%
+
+classdef cfdragcoeffabsgrad
+	properties (SetAccess=public)
+		%cfdragcoeffabsgrad
+		name               = '';
+		definitionstring   = ''; %string that identifies this output definition uniquely, from 'Outputdefinition[1-100]'
+		weights            = NaN; %weight coefficients for every vertex
+		weights_string     = ''; %string to identify this particular set of weights
+	end
+	
+	methods
+		function self = extrude(self,md) % {{{
+			if ~isnan(self.weights)
+				self.weights=project3d(md,'vector',self.weights,'type','node');
+			end
+		end % }}}
+		function self = cfdragcoeffabsgrad(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name=getfieldvalue(options,'name','');
+				self.definitionstring=getfieldvalue(options,'definitionstring');
+				self.weights=getfieldvalue(options,'weights',NaN);
+				self.weights_string=getfieldvalue(options,'weights_string','');
+
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ischar(self.name),
+				error('cfdragcoeffabsgrad error message: ''name'' field should be a string!');
+			end
+			OutputdefinitionStringArray={};
+			for i=1:100
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+			md = checkfield(md,'fieldname','self.definitionstring','field',self.definitionstring,'values',OutputdefinitionStringArray);
+
+			md = checkfield(md,'fieldname','self.weights','field',self.weights,'timeseries',1,'NaN',1,'Inf',1);
+
+		end % }}}
+		function md = disp(self) % {{{
+		
+			disp(sprintf('   TimeMisfit:\n'));
+
+			fielddisplay(self,'name','identifier for this cfdragcoeffabsgrad response');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from ''Outputdefinition[1-10]''');
+			fielddisplay(self,'weights','weights (at vertices) to apply to the cfdragcoeffabsgrad');
+			fielddisplay(self,'weights_string','string for weights for identification purposes');
+
+		end % }}}
+		function md = marshall(self,prefix,md,fid) % {{{
+
+		WriteData(fid,prefix,'data',self.name,'name','md.cfdragcoeffabsgrad.name','format','String');
+		WriteData(fid,prefix,'data',self.definitionstring,'name','md.cfdragcoeffabsgrad.definitionstring','format','String');
+		WriteData(fid,prefix,'data',self.weights,'name','md.cfdragcoeffabsgrad.weights','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'data',self.weights_string,'name','md.cfdragcoeffabsgrad.weights_string','format','String');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfdragcoeffabsgradtransient.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfdragcoeffabsgradtransient.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfdragcoeffabsgradtransient.m	(revision 27955)
@@ -0,0 +1,69 @@
+%CFDRAGCOEFFABSGRADTRANSIENT class definition
+%
+%   Usage:
+%      cfdragcoeffabsgradtransient=cfdragcoeffabsgradtransient();
+%      cfdragcoeffabsgradtransient=cfdragcoeffabsgradtransient('name','SurfaceAltimetry',...
+%                    'definitionstring','Outputdefinition1',... 
+%                    'weights',ones(md.mesh.numberofvertices+1,1));
+%
+%
+
+classdef cfdragcoeffabsgradtransient
+	properties (SetAccess=public)
+		%cfdragcoeffabsgrad
+		name               = '';
+		definitionstring   = ''; %string that identifies this output definition uniquely, from 'Outputdefinition[1-100]'
+		weights            = NaN; %weight coefficients for every vertex
+	end
+	
+	methods
+		function self = extrude(self,md) % {{{
+			if ~isnan(self.weights)
+				self.weights=project3d(md,'vector',self.weights,'type','node');
+			end
+		end % }}}
+		function self = cfdragcoeffabsgradtransient(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name=getfieldvalue(options,'name','');
+				self.definitionstring=getfieldvalue(options,'definitionstring');
+				self.weights=getfieldvalue(options,'weights',NaN);
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ischar(self.name),
+				error('cfdragcoeffabsgrad error message: ''name'' field should be a string!');
+			end
+			OutputdefinitionStringArray={};
+			for i=1:200
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+			md = checkfield(md,'fieldname','self.definitionstring','field',self.definitionstring,'values',OutputdefinitionStringArray);
+			md = checkfield(md,'fieldname','self.weights','field',self.weights,'size',[md.mesh.numberofvertices+1 NaN],'NaN',1,'Inf',1);
+
+		end % }}}
+		function md = disp(self) % {{{
+		
+			disp(sprintf('   TimeMisfit:\n'));
+
+			fielddisplay(self,'name','identifier for this cfdragcoeffabsgradtransient response');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from ''Outputdefinition[1-10]''');
+			fielddisplay(self,'weights','weights (at vertices) to apply to the cfdragcoeffabsgradtransient');
+
+		end % }}}
+		function md = marshall(self,prefix,md,fid) % {{{
+
+		WriteData(fid,prefix,'data',self.name,'name','md.cfdragcoeffabsgradtransient.name','format','String');
+		WriteData(fid,prefix,'data',self.definitionstring,'name','md.cfdragcoeffabsgradtransient.definitionstring','format','String');
+		WriteData(fid,prefix,'data',self.weights,'name','md.cfdragcoeffabsgradtransient.weights','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/cflevelsetmisfit.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/cflevelsetmisfit.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/cflevelsetmisfit.m	(revision 27955)
@@ -0,0 +1,102 @@
+%MISFIT class definition
+%
+%   Usage:
+%      cflevelsetmisfit=cflevelsetmisfit();
+%      cflevelsetmisfit=cflevelsetmisfit('name','CalvingFrontPosition',...
+%                    'definitionstring','Outputdefinition1',... 
+%							'model_string','MaskIceLevelset',...
+%                    'observation_string','LevelsetObservations',...
+%                    'observation',md.mask.ice_levelset,...
+%                    'weights',ones(md.mesh.numberofvertices,1),...
+%                    'weights_string','WeightsLevelsetObservations',...
+%							'datatime',time);
+%
+%
+
+classdef cflevelsetmisfit
+	properties (SetAccess=public)
+		%cflevelsetmisfit
+		name               = '';
+		definitionstring   = ''; %string that identifies this output definition uniquely, from 'Outputdefinition[1-100]'
+		model_string       = ''; %string for field that is modeled
+		observation        = NaN; %observed field that we compare the model against
+		observation_string = ''; %string for observed field.
+		weights            = NaN; %weight coefficients for every vertex
+		weights_string     = ''; %string to identify this particular set of weights
+		datatime				 = 0; %time in years from start that the data is from 
+	end
+	
+	methods
+		function self = extrude(self,md) % {{{
+			if ~isnan(self.weights)
+				self.weights=project3d(md,'vector',self.weights,'type','node');
+			end
+			if ~isnan(self.observation)
+				self.observation=project3d(md,'vector',self.observation,'type','node');
+			end
+		end % }}}
+		function self = cflevelsetmisfit(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name=getfieldvalue(options,'name','');
+				self.definitionstring=getfieldvalue(options,'definitionstring');
+				self.model_string=getfieldvalue(options,'model_string');
+				self.observation=getfieldvalue(options,'observation',NaN);
+				self.observation_string=getfieldvalue(options,'observation_string');
+				self.weights=getfieldvalue(options,'weights',NaN);
+				self.weights_string=getfieldvalue(options,'weights_string','');
+				self.datatime = getfieldvalue(options, 'datatime');
+
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			self.datatime = 0;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ischar(self.name),
+				error('cflevelsetmisfit error message: ''name'' field should be a string!');
+			end
+			OutputdefinitionStringArray={};
+			for i=1:100
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+			md = checkfield(md,'fieldname','self.definitionstring','field',self.definitionstring,'values',OutputdefinitionStringArray);
+
+			md = checkfield(md,'fieldname','self.observation','field',self.observation,'timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','self.weights','field',self.weights,'timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','self.datatime','field',self.datatime,'<=',md.timestepping.final_time);
+
+		end % }}}
+		function md = disp(self) % {{{
+		
+			disp(sprintf('   TimeMisfit:\n'));
+
+			fielddisplay(self,'name','identifier for this cflevelsetmisfit response');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from ''Outputdefinition[1-10]''');
+			fielddisplay(self,'model_string','string for field that is modeled');
+			fielddisplay(self,'observation','observed field that we compare the model against');
+			fielddisplay(self,'observation_string','observation string');
+			fielddisplay(self,'weights','weights (at vertices) to apply to the cflevelsetmisfit');
+			fielddisplay(self,'weights_string','string for weights for identification purposes');
+			fielddisplay(self,'datatime','time to compare data to model for misfit');
+
+		end % }}}
+		function md = marshall(self,prefix,md,fid) % {{{
+
+		WriteData(fid,prefix,'data',self.name,'name','md.cflevelsetmisfit.name','format','String');
+		WriteData(fid,prefix,'data',self.definitionstring,'name','md.cflevelsetmisfit.definitionstring','format','String');
+		WriteData(fid,prefix,'data',self.model_string,'name','md.cflevelsetmisfit.model_string','format','String');
+		WriteData(fid,prefix,'data',self.observation,'name','md.cflevelsetmisfit.observation','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'data',self.observation_string,'name','md.cflevelsetmisfit.observation_string','format','String');
+		WriteData(fid,prefix,'data',self.weights,'name','md.cflevelsetmisfit.weights','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'data',self.weights_string,'name','md.cflevelsetmisfit.weights_string','format','String');
+		WriteData(fid,prefix,'data',round(self.datatime*md.constants.yts),'name','md.cflevelsetmisfit.datatime','format','Double');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfrheologybbarabsgrad.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfrheologybbarabsgrad.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfrheologybbarabsgrad.m	(revision 27955)
@@ -0,0 +1,78 @@
+%CFRHEOLOGYBBARABSGRAD class definition
+%
+%   Usage:
+%      cfrheologybbarabsgrad=cfdragcoeffabsgrad();
+%      cfrheologybbarabsgrad=cfdragcoeffabsgrad('name','SurfaceAltimetry',...
+%                    'definitionstring','Outputdefinition1',... 
+%							'model_string','Surface',...
+%                    'weights',ones(md.mesh.numberofvertices,1),...
+%                    'weights_string','WeightsSurfaceObservations');
+%
+%
+
+classdef cfrheologybbarabsgrad
+	properties (SetAccess=public)
+		%cfrheologybbarabsgrad
+		name               = '';
+		definitionstring   = ''; %string that identifies this output definition uniquely, from 'Outputdefinition[1-100]'
+		weights            = NaN; %weight coefficients for every vertex
+		weights_string     = ''; %string to identify this particular set of weights
+		cumulated          = NaN; %do we cumulate cfrheologybbarabsgrad through time?
+	end
+	
+	methods
+		function self = extrude(self,md) % {{{
+			if ~isnan(self.weights)
+				self.weights=project3d(md,'vector',self.weights,'type','node');
+			end
+		end % }}}
+		function self = cfrheologybbarabsgrad(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name=getfieldvalue(options,'name','');
+				self.definitionstring=getfieldvalue(options,'definitionstring');
+				self.weights=getfieldvalue(options,'weights',NaN);
+				self.weights_string=getfieldvalue(options,'weights_string','');
+
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ischar(self.name),
+				error('cfrheologybbarabsgrad error message: ''name'' field should be a string!');
+			end
+			OutputdefinitionStringArray={};
+			for i=1:200
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+			md = checkfield(md,'fieldname','self.definitionstring','field',self.definitionstring,'values',OutputdefinitionStringArray);
+
+			md = checkfield(md,'fieldname','self.weights','field',self.weights,'timeseries',1,'NaN',1,'Inf',1);
+
+		end % }}}
+		function md = disp(self) % {{{
+		
+			disp(sprintf('   TimeMisfit:\n'));
+
+			fielddisplay(self,'name','identifier for this cfrheologybbarabsgrad response');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from ''Outputdefinition[1-10]''');
+			fielddisplay(self,'weights','weights (at vertices) to apply to the cfrheologybbarabsgrad');
+			fielddisplay(self,'weights_string','string for weights for identification purposes');
+
+		end % }}}
+		function md = marshall(self,prefix,md,fid) % {{{
+
+		WriteData(fid,prefix,'data',self.name,'name','md.cfrheologybbarabsgrad.name','format','String');
+		WriteData(fid,prefix,'data',self.definitionstring,'name','md.cfrheologybbarabsgrad.definitionstring','format','String');
+		WriteData(fid,prefix,'data',self.weights,'name','md.cfrheologybbarabsgrad.weights','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'data',self.weights_string,'name','md.cfrheologybbarabsgrad.weights_string','format','String');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfrheologybbarabsgradtransient.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfrheologybbarabsgradtransient.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfrheologybbarabsgradtransient.m	(revision 27955)
@@ -0,0 +1,68 @@
+%CFRHEOLOGYBBARABSGRADTRANSIENT class definition
+%
+%   Usage:
+%      cfrheologybbarabsgradtransient=cfdragcoeffabsgradtransient();
+%      cfrheologybbarabsgradtransient=cfdragcoeffabsgradtransient('name','SurfaceAltimetry',...
+%                    'definitionstring','Outputdefinition1',... 
+%                    'weights',ones(md.mesh.numberofvertices+1,1))%
+%
+
+classdef cfrheologybbarabsgradtransient
+	properties (SetAccess=public)
+		%cfrheologybbarabsgrad
+		name               = '';
+		definitionstring   = ''; %string that identifies this output definition uniquely, from 'Outputdefinition[1-100]'
+		weights            = NaN; %weight coefficients for every vertex
+	end
+	
+	methods
+		function self = extrude(self,md) % {{{
+			if ~isnan(self.weights)
+				self.weights=project3d(md,'vector',self.weights,'type','node');
+			end
+		end % }}}
+		function self = cfrheologybbarabsgradtransient(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name=getfieldvalue(options,'name','');
+				self.definitionstring=getfieldvalue(options,'definitionstring');
+				self.weights=getfieldvalue(options,'weights',NaN);
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ischar(self.name),
+				error('cfrheologybbarabsgradtransient error message: ''name'' field should be a string!');
+			end
+			OutputdefinitionStringArray={};
+			for i=1:200
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+			md = checkfield(md,'fieldname','self.definitionstring','field',self.definitionstring,'values',OutputdefinitionStringArray);
+			md = checkfield(md,'fieldname','self.weights','field',self.weights,'size',[md.mesh.numberofvertices+1 NaN],'NaN',1,'Inf',1);
+
+		end % }}}
+		function md = disp(self) % {{{
+		
+			disp(sprintf('   TimeMisfit:\n'));
+
+			fielddisplay(self,'name','identifier for this cfrheologybbarabsgrad response');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from ''Outputdefinition[1-10]''');
+			fielddisplay(self,'weights','weights (at vertices) to apply to the cfrheologybbarabsgrad');
+
+		end % }}}
+		function md = marshall(self,prefix,md,fid) % {{{
+
+		WriteData(fid,prefix,'data',self.name,'name','md.cfrheologybbarabsgradtransient.name','format','String');
+		WriteData(fid,prefix,'data',self.definitionstring,'name','md.cfrheologybbarabsgradtransient.definitionstring','format','String');
+		WriteData(fid,prefix,'data',self.weights,'name','md.cfrheologybbarabsgradtransient.weights','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfsurfacelogvel.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfsurfacelogvel.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfsurfacelogvel.m	(revision 27955)
@@ -0,0 +1,105 @@
+%MISFIT class definition
+%
+%   Usage:
+%      cfsurfacelogvel=cfsurfacelogvel();
+%      cfsurfacelogvel=cfsurfacelogvel('name','SurfaceAltimetry',...
+%                    'definitionstring','Outputdefinition1',... 
+%                    'observation_string','SurfaceObservations',...
+%                    'observation',md.geometry.surface,...
+%                    'weights',ones(md.mesh.numberofvertices,1),...
+%                    'weights_string','WeightsSurfaceObservations',...
+%							'datatime',time);
+%
+%
+
+classdef cfsurfacelogvel
+	properties (SetAccess=public)
+		%cfsurfacelogvel
+		name               = '';
+		definitionstring   = ''; %string that identifies this output definition uniquely, from 'Outputdefinition[1-100]'
+		vxobs					 = NaN; %observed field that we compare the model against
+		vxobs_string		 = ''; %string for observed field.
+		vyobs			       = NaN; %observed field that we compare the model against
+		vyobs_string		 = ''; %string for observed field.
+		weights            = NaN; %weight coefficients for every vertex
+		weights_string     = ''; %string to identify this particular set of weights
+		datatime				 = 0; %time in years from start that the data is from 
+	end
+	
+	methods
+		function self = extrude(self,md) % {{{
+			if ~isnan(self.weights)
+				self.weights=project3d(md,'vector',self.weights,'type','node');
+			end
+			if ~isnan(self.vxobs)
+				self.vxobs=project3d(md,'vector',self.vxobs,'type','node');
+			end
+		end % }}}
+		function self = cfsurfacelogvel(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name=getfieldvalue(options,'name','');
+				self.definitionstring=getfieldvalue(options,'definitionstring');
+				self.vxobs=getfieldvalue(options,'vxobs',NaN);
+				self.vyobs=getfieldvalue(options,'vyobs',NaN);
+				self.vxobs_string=getfieldvalue(options,'vxobs_string');			
+				self.vyobs_string=getfieldvalue(options,'vyobs_string');
+				self.weights=getfieldvalue(options,'weights',NaN);
+				self.weights_string=getfieldvalue(options,'weights_string','');
+				self.datatime = getfieldvalue(options, 'datatime');
+
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			self.datatime = 0;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ischar(self.name),
+				error('cfsurfacelogvel error message: ''name'' field should be a string!');
+			end
+			OutputdefinitionStringArray={};
+			for i=1:100
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+			md = checkfield(md,'fieldname','self.definitionstring','field',self.definitionstring,'values',OutputdefinitionStringArray);
+
+			md = checkfield(md,'fieldname','self.vxobs','field',self.vxobs,'timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','self.weights','field',self.weights,'timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','self.datatime','field',self.datatime,'<=',md.timestepping.final_time);
+
+		end % }}}
+		function md = disp(self) % {{{
+		
+			disp(sprintf('   TimeMisfit:\n'));
+
+			fielddisplay(self,'name','identifier for this cfsurfacelogvel response');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from ''Outputdefinition[1-10]''');
+			fielddisplay(self,'vxobs','observed field that we compare the model against');
+			fielddisplay(self,'vxobs_string','observation string');
+			fielddisplay(self,'weights','weights (at vertices) to apply to the cfsurfacelogvel');
+			fielddisplay(self,'weights_string','string for weights for identification purposes');
+			fielddisplay(self,'datatime','time to compare data to model for misfit');
+
+		end % }}}
+		function md = marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+		WriteData(fid,prefix,'data',self.name,'name','md.cfsurfacelogvel.name','format','String');
+		WriteData(fid,prefix,'data',self.definitionstring,'name','md.cfsurfacelogvel.definitionstring','format','String');
+		WriteData(fid,prefix,'data',self.vxobs,'name','md.cfsurfacelogvel.vxobs','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
+		WriteData(fid,prefix,'data',self.vxobs_string,'name','md.cfsurfacelogvel.vxobs_string','format','String');
+		WriteData(fid,prefix,'data',self.vyobs,'name','md.cfsurfacelogvel.vyobs','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
+		WriteData(fid,prefix,'data',self.vyobs_string,'name','md.cfsurfacelogvel.vyobs_string','format','String');
+		WriteData(fid,prefix,'data',self.weights,'name','md.cfsurfacelogvel.weights','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'data',self.weights_string,'name','md.cfsurfacelogvel.weights_string','format','String');
+		WriteData(fid,prefix,'data',round(self.datatime*md.constants.yts),'name','md.cfsurfacelogvel.datatime','format','Double');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfsurfacesquare.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfsurfacesquare.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfsurfacesquare.m	(revision 27955)
@@ -0,0 +1,102 @@
+%MISFIT class definition
+%
+%   Usage:
+%      cfsurfacesquare=cfsurfacesquare();
+%      cfsurfacesquare=cfsurfacesquare('name','SurfaceAltimetry',...
+%                    'definitionstring','Outputdefinition1',... 
+%							'model_string','Surface',...
+%                    'observation_string','SurfaceObservations',...
+%                    'observation',md.geometry.surface,...
+%                    'weights',ones(md.mesh.numberofvertices,1),...
+%                    'weights_string','WeightsSurfaceObservations',...
+%							'datatime',time);
+%
+%
+
+classdef cfsurfacesquare
+	properties (SetAccess=public)
+		%cfsurfacesquare
+		name               = '';
+		definitionstring   = ''; %string that identifies this output definition uniquely, from 'Outputdefinition[1-100]'
+		model_string       = ''; %string for field that is modeled
+		observation        = NaN; %observed field that we compare the model against
+		observation_string = ''; %string for observed field.
+		weights            = NaN; %weight coefficients for every vertex
+		weights_string     = ''; %string to identify this particular set of weights
+		datatime				 = 0; %time in years from start that the data is from 
+	end
+	
+	methods
+		function self = extrude(self,md) % {{{
+			if ~isnan(self.weights)
+				self.weights=project3d(md,'vector',self.weights,'type','node');
+			end
+			if ~isnan(self.observation)
+				self.observation=project3d(md,'vector',self.observation,'type','node');
+			end
+		end % }}}
+		function self = cfsurfacesquare(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name=getfieldvalue(options,'name','');
+				self.definitionstring=getfieldvalue(options,'definitionstring');
+				self.model_string=getfieldvalue(options,'model_string');
+				self.observation=getfieldvalue(options,'observation',NaN);
+				self.observation_string=getfieldvalue(options,'observation_string');
+				self.weights=getfieldvalue(options,'weights',NaN);
+				self.weights_string=getfieldvalue(options,'weights_string','');
+				self.datatime = getfieldvalue(options, 'datatime');
+
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			self.datatime = 0;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ischar(self.name),
+				error('cfsurfacesquare error message: ''name'' field should be a string!');
+			end
+			OutputdefinitionStringArray={};
+			for i=1:100
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+			md = checkfield(md,'fieldname','self.definitionstring','field',self.definitionstring,'values',OutputdefinitionStringArray);
+
+			md = checkfield(md,'fieldname','self.observation','field',self.observation,'timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','self.weights','field',self.weights,'timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','self.datatime','field',self.datatime,'<=',md.timestepping.final_time);
+
+		end % }}}
+		function md = disp(self) % {{{
+		
+			disp(sprintf('   TimeMisfit:\n'));
+
+			fielddisplay(self,'name','identifier for this cfsurfacesquare response');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from ''Outputdefinition[1-10]''');
+			fielddisplay(self,'model_string','string for field that is modeled');
+			fielddisplay(self,'observation','observed field that we compare the model against');
+			fielddisplay(self,'observation_string','observation string');
+			fielddisplay(self,'weights','weights (at vertices) to apply to the cfsurfacesquare');
+			fielddisplay(self,'weights_string','string for weights for identification purposes');
+			fielddisplay(self,'datatime','time to compare data to model for misfit');
+
+		end % }}}
+		function md = marshall(self,prefix,md,fid) % {{{
+
+		WriteData(fid,prefix,'data',self.name,'name','md.cfsurfacesquare.name','format','String');
+		WriteData(fid,prefix,'data',self.definitionstring,'name','md.cfsurfacesquare.definitionstring','format','String');
+		WriteData(fid,prefix,'data',self.model_string,'name','md.cfsurfacesquare.model_string','format','String');
+		WriteData(fid,prefix,'data',self.observation,'name','md.cfsurfacesquare.observation','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'data',self.observation_string,'name','md.cfsurfacesquare.observation_string','format','String');
+		WriteData(fid,prefix,'data',self.weights,'name','md.cfsurfacesquare.weights','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'data',self.weights_string,'name','md.cfsurfacesquare.weights_string','format','String');
+		WriteData(fid,prefix,'data',round(self.datatime*md.constants.yts),'name','md.cfsurfacesquare.datatime','format','Double');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfsurfacesquaretransient.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfsurfacesquaretransient.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/cfsurfacesquaretransient.m	(revision 27955)
@@ -0,0 +1,83 @@
+%MISFIT class definition
+%
+%   Usage:
+%      cfsurfacesquaretransient=cfsurfacesquaretransient();
+%      cfsurfacesquaretransient=cfsurfacesquaretransient('name','SurfaceAltimetry',...
+%                    'definitionstring','Outputdefinition1',... 
+%							'model_string','Surface',...
+%                    'observations',[md.geometry.surface;0],...
+%                    'weights',ones(md.mesh.numberofvertices+1,1));
+%
+%
+
+classdef cfsurfacesquaretransient
+	properties (SetAccess=public)
+		%cfsurfacesquaretransient
+		name                = '';
+		definitionstring    = ''; %string that identifies this output definition uniquely, from 'Outputdefinition[1-100]'
+		model_string        = ''; %string for field that is modeled
+		observations        = NaN;%observed field that we compare the model against
+		weights             = NaN;%weight coefficients for every vertex
+	end
+	
+	methods
+		function self = extrude(self,md) % {{{
+			if ~isnan(self.weights)
+				self.weights=project3d(md,'vector',self.weights,'type','node');
+			end
+			if ~isnan(self.observations)
+				self.observations=project3d(md,'vector',self.observations,'type','node');
+			end
+		end % }}}
+		function self = cfsurfacesquaretransient(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name                = getfieldvalue(options,'name','');
+				self.definitionstring    = getfieldvalue(options,'definitionstring');
+				self.model_string        = getfieldvalue(options,'model_string');
+				self.observations        = getfieldvalue(options,'observations',NaN);
+				self.weights             = getfieldvalue(options,'weights',NaN);
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ischar(self.name),
+				error('cfsurfacesquaretransient error message: ''name'' field should be a string!');
+			end
+			OutputdefinitionStringArray={};
+			for i=1:100
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+			md = checkfield(md,'fieldname','self.definitionstring','field',self.definitionstring,'values',OutputdefinitionStringArray);
+			md = checkfield(md,'fieldname','self.observations','field',self.observations,'size',[md.mesh.numberofvertices+1 NaN],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','self.weights','field',self.weights,'size',[md.mesh.numberofvertices+1 NaN],'NaN',1,'Inf',1);
+
+		end % }}}
+		function md = disp(self) % {{{
+		
+			disp(sprintf('   cfsurfacesquaretransient:\n'));
+
+			fielddisplay(self,'name','identifier for this cfsurfacesquaretransient response');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from ''Outputdefinition[1-10]''');
+			fielddisplay(self,'model_string','string for field that is modeled');
+			fielddisplay(self,'observations','observed field that we compare the model against');
+			fielddisplay(self,'weights','weights (at vertices) to apply to the cfsurfacesquaretransient');
+
+		end % }}}
+		function md = marshall(self,prefix,md,fid) % {{{
+
+		WriteData(fid,prefix,'data',self.name,'name','md.cfsurfacesquaretransient.name','format','String');
+		WriteData(fid,prefix,'data',self.definitionstring,'name','md.cfsurfacesquaretransient.definitionstring','format','String');
+		WriteData(fid,prefix,'data',self.model_string,'name','md.cfsurfacesquaretransient.model_string','format','String');
+		WriteData(fid,prefix,'data',self.observations,'name','md.cfsurfacesquaretransient.observations','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'data',self.weights,'name','md.cfsurfacesquaretransient.weights','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/README
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/README	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/README	(revision 27955)
@@ -0,0 +1,12 @@
+This directory holds classes corresponding to every cluster 
+that can be used. 
+
+Why classes? 
+Because handling the specificity of every cluster is hard in a general 
+code. Having classes with generic methods, such as: BuildQueueScript, 
+LaunchQueueJob,  and internal data corresponding to every cluster's specificity 
+is much more manageable and powerful.
+
+How to add your cluster? 
+use an existing cluster script, such as pfe.m, and rename it to your cluster name.
+update the methods.
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/acenet.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/acenet.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/acenet.m	(revision 27955)
@@ -0,0 +1,170 @@
+%ACENET class definition
+%
+%   Usage:
+%      cluster=acenet();
+%      cluster=acenet('np',3);
+%      cluster=acenet('np',3,'login','username');
+
+classdef acenet
+	properties (SetAccess=public)
+		% {{{
+		%name='glacdyn.ace-net.ca'
+		name='placentia.ace-net.ca'
+		%name='brasdor.ace-net.ca'
+		login='klemorza';
+		np=10;
+		port=0;
+		queue='longq';
+		time=10;
+		% codepath='/usr/local/issm-r11321/bin'; % this one is for issm on acenet global
+		codepath='/home/klemorza/issm/trunk-jpl/bin'; % this one is for issm on my acenet directory
+		%executionpath='/home/klemorza/issm/trunk-jpl/execution';
+		%executionpath='/home/klemorza/scratch/issmres.dir';
+		executionpath='/net/glacdyn-data/glacdyn/1/klemorza/issm.dir';
+		%}}}
+	end
+	methods
+		function cluster=acenet(varargin) % {{{
+			%use provided options to change fields
+			options=pairoptions(varargin{:});
+			%initialize cluster using user settings if provided
+			if (exist([cluster.name '_settings'])==2), eval([cluster.name '_settings']); end
+
+			%OK get other fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}} 
+		function disp(cluster) % {{{
+			% display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    np: %i',cluster.np));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    queue: %s',cluster.queue));
+			disp(sprintf('    time: %i',cluster.time));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			available_queues={'debug','shortq','longq'};
+			queue_requirements_time=[48*1 48*7 48*15];
+			queue_requirements_np=[32 128 256];
+			QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,cluster.time)
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#$ -cwd\n');
+
+			fprintf(fid,'#$ -N issm\n');
+			% fprintf(fid,'#$ -l h_rt=00:15:00\n');
+			% fprintf(fid,'#$ -l h_rt=5:00:0\n');
+			% fprintf(fid,'#$ -l h_rt=25:00:0\n');
+			% fprintf(fid,'#$ -l h_rt=47:59:00\n');
+			% fprintf(fid,'#$ -l h_rt=72:00:0\n');
+			% fprintf(fid,'#$ -l h_rt=96:00:0\n');
+			% fprintf(fid,'#$ -l h_rt=336:00:0\n');
+			tstr = sprintf('#$ -l h_rt=%i:00:00\n',cluster.time);
+			fprintf(fid,tstr);
+
+			fprintf(fid,'#$ -l h_vmem=2G\n');
+
+			if strcmp(cluster.executionpath,'/home/klemorza/scratch/issmres.dir')
+				% ---- Which acent queue to use ----
+				fprintf(fid,'#$ -q short.q@*,medium.q@*\n');
+				%fprintf(fid,'#$ -q medium.q@*,long.q@*\n');
+				%fprintf(fid,'#$ -q medium.q@*\n');
+				%fprintf(fid,'#$ -q short.q@*\n');
+				% Acenet nodes with 16cpus and more than 60G mem
+				% fprintf(fid,'#$ -l h=cl001|cl002|cl003|cl004|cl005|cl006|cl007|cl008|cl009|cl010|cl011|cl012|cl021|cl022|cl023|cl024 \n');
+				% ---- cpus on different nodes ----
+				if cluster.np==4
+					% -------- All cpus in the same node --------          
+					fprintf(fid,'#$ -pe openmp %i\n',cluster.np);
+				else
+					fprintf(fid,'#$ -pe ompi %i\n',cluster.np); % To avoid green acenet that does not have InfiniBand
+				end
+
+			elseif strcmp(cluster.executionpath,'/net/glacdyn-data/glacdyn/1/klemorza/issm.dir')
+				% ---- Which node for Lev's queue are selected ----
+				fprintf(fid,'#$ -q tarasov.q\n');
+				fprintf(fid,'#$ -l h=cl27*|cl28*|cl29*|cl30*|cl31*|cl320|cl267|cl268|cl269|cl338 \n');
+				%fprintf(fid,'#$ -l h=cl27*|cl28*|cl29*|cl30*|cl31*|cl320|cl267|cl268|cl269 \n');
+				%fprintf(fid,'#$ -l h=cl0* \n');
+				% fprintf(fid,'#$ -l h=cl338 \n');
+				
+				if cluster.np==4
+					% -------- All cpus in the same node --------          
+					fprintf(fid,'#$ -pe openmp %i\n',cluster.np);
+				else
+					fprintf(fid,'#$ -pe ompi* %i\n',cluster.np);
+					%fprintf(fid,'#$ -pe 4per %i\n',cluster.np);
+					%fprintf(fid,'#$ -pe 8per %i\n',cluster.np);
+				end
+			end
+						
+			% ---- misc ----
+			fprintf(fid,'#$ -j y\n');
+			
+			fprintf(fid,'module purge\n');
+			%fprintf(fid,'module load gcc openmpi/gcc\n');
+			%fprintf(fid,'module unload openmpi\n');
+			fprintf(fid,'module load intel/12.1.7.367\n');
+			fprintf(fid,'module load openmpi/intel/1.2.9\n');
+
+			fprintf(fid,'module load gsl\n');
+			%fprintf(fid,'module load issm\n');
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'\n');
+			fprintf(fid,'mpiexec %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog\n',...
+					cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname,modelname,modelname);
+			%fprintf(fid,'echo $HOSTNAME >>%s.outlog',modelname);
+			fclose(fid);
+
+		end
+		%}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		end %}}}
+
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart) % {{{
+
+			disp('launching solution sequence on remote cluster');
+			if ~isempty(restart)
+				launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+			else
+				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz && qsub ' modelname '.queue '];
+			end
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end %}}}
+
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/aci.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/aci.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/aci.m	(revision 27955)
@@ -0,0 +1,117 @@
+%ACI class definition
+%
+%   Usage:
+%      cluster=aci();
+%      cluster=aci('np',3);
+%      cluster=aci('np',3,'login','username');
+
+classdef aci
+	properties (SetAccess=public)  
+		% {{{
+		name='';
+		login='';
+		nodes=0;
+		ppn=0;
+		time=0;
+		port=0;
+		queue='';
+		codepath='';
+		executionpath='';
+		modules={};
+	end
+	%}}}
+	methods
+		function cluster=aci(varargin) % {{{
+
+			%initialize cluster using default settings if provided
+			if (exist('aci_settings')==2), aci_settings; end
+
+			%use provided options to change fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    time: %i (in minutes)',cluster.time));
+			disp(sprintf('    nodes: %i (number of nodes)',cluster.nodes));
+			disp(sprintf('    ppn: %i (process per nodes)',cluster.ppn));
+			disp(sprintf('    queue: %s',cluster.queue));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			available_queues={'brp106_a_g_sc_default','open'};
+			queue_requirements_time=[Inf 48*60];
+			queue_requirements_np=[260 260];
+
+			QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.ppn*cluster.nodes,1)
+
+			%Miscellaneous
+			if cluster.ppn>20, md = checkmessage(md,'cannot request more that 20 cores per node'); end
+			if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#PBS -A %s\n', cluster.queue); %open or brp106....
+			fprintf(fid,'#PBS -l nodes=%i:ppn=%i:stmem\n',cluster.nodes,cluster.ppn);
+			fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); % walltime is in seconds
+			fprintf(fid,'#PBS -o %s.outlog\n',(modelname));
+			fprintf(fid,'#PBS -e %s.errlog\n',(modelname));
+			fprintf(fid,'source ~/.bashrc\n');
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');
+			for i=1:numel(cluster.modules)
+				fprintf(fid,'module load %s\n', cluster.modules{i});
+			end
+			fprintf(fid,'mpirun -np %i %s/issm.exe %s %s %s\n',cluster.nodes*cluster.ppn,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+		end %}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch)% {{{
+
+			disp('launching solution sequence on remote cluster');
+			if ~isempty(restart)
+				launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && qsub ' modelname '.queue '];
+			else
+				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && qsub ' modelname '.queue '];
+			end
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end %}}}
+		function Download(cluster,dirname,filelist)% {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/aurora.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/aurora.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/aurora.m	(revision 27955)
@@ -0,0 +1,137 @@
+%AURORA cluster class definition
+%
+%   Usage:
+%      cluster=aurora();
+%      cluster=aurora('np',3);
+%      cluster=aurora('np',3,'login','username');
+
+classdef aurora
+	properties (SetAccess=public)
+		% {{{
+		name='aurora.jpl.nasa.gov'
+		login='username';
+		numnodes = 1;
+		cpuspernode = 24;
+		modules = {'intel/cluster-toolkit-2013.5.192'};
+		port=1070;
+		queue='shortq';
+		time=3*60;
+		codepath='~/issm/trunk/';
+		executionpath='~/issm/trunk/execution/';
+		mpipath='/opt/intel/impi/4.1.3/intel64/bin/';
+		%}}}
+	end
+	methods
+		function cluster=aurora(varargin) % {{{
+
+			%initialize cluster using default settings if provided
+			if (exist('aurora_settings')==2), aurora_settings; end
+
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    numnodes: %i',cluster.numnodes));
+			disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			disp(sprintf('    np: %i',cluster.nprocs()));
+			disp(sprintf('    modules: %s',strjoin(cluster.modules,', ')));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    queue: %s',cluster.queue));
+			disp(sprintf('    time: %i',cluster.time));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    mpipath: %s',cluster.mpipath));
+		end
+		%}}}
+		function numprocs=nprocs(cluster) % {{{
+			%compute number of processors
+			numprocs=cluster.numnodes*cluster.cpuspernode;
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			available_queues={'debugq','shortq','mediumq','longq','verylongq'};
+			queue_requirements_time=[60*1 60*3 60*12 60*48 60*192];
+			queue_requirements_np=[16 256 256 128 128];
+
+			QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.numnodes.*cluster.cpuspernode,cluster.time)
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+			executable='issm.exe';
+			if isdakota,
+				version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				if (version>=6),
+					executable='issm_dakota.exe';
+				end
+			end
+			if isoceancoupling,
+				executable='issm_ocean.exe';
+			end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#PBS -l select=%i:ncpus=%i\n',cluster.numnodes,cluster.cpuspernode);
+			fprintf(fid,'#PBS -N %s\n',modelname);
+			fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); %walltime is in seconds.
+			fprintf(fid,'#PBS -q %s\n',cluster.queue);
+			fprintf(fid,'#PBS -o %s.outlog \n',modelname);
+			fprintf(fid,'#PBS -e %s.errlog \n',modelname);
+			fprintf(fid,'source /usr/share/Modules/init/bash\n');
+			for i=1:numel(cluster.modules), fprintf(fid,['module load ' cluster.modules{i} '\n\n']); end
+			fprintf(fid,'export PATH="$PATH:."\n\n');
+			fprintf(fid,'export MPI_GROUP_MAX=64\n\n');
+			fprintf(fid,'export MPI_UNBUFFERED_STDIO=true\n\n');
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath);
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');      
+			fprintf(fid,'export PATH="$PATH:.:%s"\n',cluster.mpipath);
+			fprintf(fid,'export PBS_O_WORKDIR=%s\n',[cluster.executionpath '/' dirname]);
+			fprintf(fid,'cd $PBS_O_WORKDIR\n');
+			fprintf(fid,'mpirun -n %i %s/%s %s %s %s',cluster.nprocs(),cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+			fclose(fid);
+
+		end
+		%}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch) % {{{
+
+			if ~isempty(restart)
+				launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+			else
+				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+			end
+
+			disp('launching solution sequence on remote cluster');
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/aws_issm_solution_server.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/aws_issm_solution_server.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/aws_issm_solution_server.m	(revision 27955)
@@ -0,0 +1,236 @@
+%AWS_ISSM_SOLUTION_SERVER cluster class definition
+%
+%   Usage:
+%      cluster=aws_issm_solution_server();
+%      cluster=aws_issm_solution_server('np',3);
+%      cluster=aws_issm_solution_server('np',3,'login','username');
+%
+%   TODO:
+%   - Modify src/m/os/issmscp* with idfile parameter
+
+classdef aws_issm_solution_server
+	properties (SetAccess=public)
+		% {{{
+		name           = '54.67.123.214';
+		login          = '';
+		idfile         = '';
+		modules        = {};
+		numnodes       = 1;
+		cpuspernode    = 8;
+		queue          = '';
+		time           = 12*60*60;
+		srcpath        = '/usr/local/repos/issm/trunk-jpl-head';
+		extpkgpath     = '/usr/local/issm-ext';
+		codepath       = '/usr/local/repos/issm/trunk-jpl-head/bin';
+		executionpath  = '';
+		interactive    = 0;
+		numstreams     = 1;
+		hyperthreading = 0;
+		email          = '';
+	end
+	%}}}
+	methods
+		function cluster=aws_issm_solution_server(varargin) % {{{
+
+			%initialize cluster using default settings if provided
+			if (exist('aws_issm_solution_server_settings')==2), aws_issm_solution_server_settings; end
+
+			%use provided options to change fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			% display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    idfile: %s',cluster.idfile));
+			disp(sprintf('    modules: %s',strjoin(cluster.modules,', ')));
+			disp(sprintf('    numnodes: %i',cluster.numnodes));
+			disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			disp(sprintf('    np: %i',cluster.nprocs()));
+			disp(sprintf('    time: %i',cluster.time));
+			disp(sprintf('    processor: %i',cluster.processor));
+			disp(sprintf('    srcpath: %s',cluster.srcpath));
+			disp(sprintf('    extpkgpath: %s',cluster.extpkgpath));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    grouplist: %s',cluster.grouplist));
+			disp(sprintf('    interactive: %i',cluster.interactive));
+			disp(sprintf('    numstreams: %s',cluster.numstreams));
+			disp(sprintf('    hyperthreading: %s',cluster.hyperthreading));
+			disp(sprintf('    email: %s',cluster.email));
+		end
+		%}}}
+		function numprocs=nprocs(cluster) % {{{
+			%compute number of processors
+			numprocs=cluster.numnodes*cluster.cpuspernode;
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			if ((cluster.numnodes>1 ) | (cluster.numnodes<1)),
+				md = checkmessage(md,'only 1 node is currently available');
+			end
+
+			if ((cluster.cpuspernode>8 ) | (cluster.cpuspernode<1)),
+				md = checkmessage(md,'cpuspernode should be between 1 and 8');
+			end
+
+			%Miscellaneous
+			if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			if isempty(cluster.srcpath), md = checkmessage(md,'srcpath empty'); end
+			if isempty(cluster.extpkgpath), md = checkmessage(md,'extpkgpath empty'); end
+			if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			executable='issm.exe';
+			if isdakota,
+				version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				if (version>=6),
+					executable='issm_dakota.exe';
+				end
+			end
+			if isoceancoupling,
+				executable='issm_ocean.exe';
+			end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'export PATH="${PATH}:."\n');
+			fprintf(fid,'export MPI_LAUNCH_TIMEOUT=520\n');
+			fprintf(fid,'export MPI_GROUP_MAX=64\n');
+			fprintf(fid,'export ISSM_DIR="%s"\n',cluster.srcpath);
+			if cluster.extpkgpath
+				fprintf(fid,'export ISSM_EXT_DIR="%s"\n',cluster.extpkgpath);
+			end
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n\n');
+			if cluster.interactive
+				if IssmConfig('_HAVE_MPI_'),
+					fprintf(fid,'mpiexec -np %i %s/%s %s %s %s\n',cluster.nprocs(),cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+				else
+					fprintf(fid,'%s/%s %s %s %s\n',cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+				end
+			else
+				if IssmConfig('_HAVE_MPI_'),
+					fprintf(fid,'mpiexec -np %i %s/%s %s %s %s 2> %s.errlog > %s.outlog &\n',cluster.nprocs(),cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname,modelname,modelname);
+				else
+					fprintf(fid,'%s/%s %s %s %s 2> %s.errlog > %s.outlog &\n',cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname,modelname,modelname);
+				end
+			end
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.errlog'],'w'); fclose(fid);
+				fid=fopen([modelname '.outlog'],'w'); fclose(fid);
+			end
+		end %}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz'];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			if cluster.interactive,
+				compressstring = [compressstring ' ' modelname '.run '  modelname '.errlog ' modelname '.outlog '];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			if cluster.interactive==10,
+				directory=[pwd() '/run/'];
+			elseif cluster.interactive,
+				directory=[cluster.executionpath '/Interactive' num2str(cluster.interactive)];
+			else 
+				directory=cluster.executionpath;
+			end
+
+			%NOTE: Replacement for issmscpout(cluster.name,directory,cluster.login,cluster.port,{[dirname '.tar.gz']});
+			uploadstring=['scp -i ' cluster.idfile ' ' dirname '.tar.gz ' cluster.login '@' cluster.name ':' directory];
+			[status,result]=system(uploadstring);
+			if status, 
+				error(['cluster.UploadQueueJob error message: ' status]);
+			end
+		end
+		%}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch) % {{{
+
+			%launch command, to be executed via ssh
+			if cluster.interactive,
+				if ~isempty(restart)
+					launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive)];
+				else
+					if cluster.interactive==10,
+						launchcommand=['cd ' pwd() '/run && tar -zxf ' dirname '.tar.gz'];
+					else
+						launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive) ' && tar -zxf ' dirname '.tar.gz'];
+					end
+				end
+			else
+				if ~isempty(restart)
+					launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && ./' modelname '.queue'];
+				else
+					launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						' && cd ' dirname ' && mv ../' dirname '.tar.gz . && tar -zxf ' dirname '.tar.gz && chmod +x ./' modelname '.queue && ./' modelname '.queue'];
+				end
+			end
+
+			disp('launching solution sequence on remote cluster');
+			%NOTE: Replacement for issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+			launchstring=['ssh -l ' cluster.login ' -i ' cluster.idfile ' ' cluster.name ' "' launchcommand '"'];
+			[status,result]=system(launchstring);
+			if status,
+				error(['cluster.LaunchQueueJob error message: ' status]);
+			end
+		end
+		%}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			if cluster.interactive==10,
+				directory=[pwd() '/run/'];
+			elseif ~cluster.interactive,
+				directory=[cluster.executionpath '/' dirname '/'];
+			else
+				directory=[cluster.executionpath '/Interactive' num2str(cluster.interactive) '/'];
+			end
+
+			%NOTE: Replacement for issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+			if numel(filelist)==1,
+				filestring=filelist{1};
+			else
+				filestring='\{';
+				for i=1:numel(filelist)-1,
+					filestring=[filestring filelist{i} ','];
+				end
+				filestring=[filestring filelist{end} '\}'];
+			end
+
+			downloadstring=['scp -i ' cluster.idfile ' ' cluster.login '@' cluster.name ':' directory '/' filestring ' ./'];
+			[status,result]=system(downloadstring);
+			if status, 
+				error(['cluster.Download error message: ' status]);
+			end
+
+			%check scp worked
+			for i=1:numel(filelist),
+				if ~exist(['./' filelist{i}]),
+					warning(['cluster.Download error message: could not scp ' filelist{i}]);
+				end
+			end
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/camhpc.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/camhpc.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/camhpc.m	(revision 27955)
@@ -0,0 +1,151 @@
+%CAMHPC cluster class definition
+%
+%   Usage:
+%      cluster=camhpc();
+%      cluster=camhpc('np',3);
+%      cluster=camhpc('np',3,'login','username');
+
+classdef camhpc
+	properties (SetAccess=public)
+		% {{{
+		name          = 'camhpc'
+		login         = '';
+		numnodes      = 20;
+		cpuspernode   = 8;
+		port          = 8000;
+		project       = '';
+		partition     = '';
+		codepath      = '';
+		executionpath = '';
+		interactive   = 0;
+		time          = 24*60;
+		memory        = 2;
+	end
+	%}}}
+	methods
+		function cluster=camhpc(varargin) % {{{
+
+			%initialize cluster using default settings if provided
+			if (exist('camhpc_settings')==2), camhpc_settings; end
+
+			%use provided options to change fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    numnodes: %i',cluster.numnodes));
+			disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			disp(sprintf('    np: %i',cluster.nprocs()));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    project: %s',cluster.project));
+			disp(sprintf('    partition: %s',cluster.partition));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    interactive: %i',cluster.interactive));
+			disp(sprintf('    time: %i',cluster.time));
+			disp(sprintf('    memory: %i',cluster.memory));
+		end
+		%}}}
+		function numprocs=nprocs(cluster) % {{{
+			%compute number of processors
+			numprocs=cluster.numnodes*cluster.cpuspernode;
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			available_queues={'ARNOLD-SL3-CPU'}; % Updated for csd3 NSA 28/3/18
+			queue_requirements_time=[Inf Inf];
+			queue_requirements_np=[80 80];
+
+			QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.project,cluster.nprocs(),1)
+
+			%Miscellaneous
+			if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script
+			disp(modelname)
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#SBATCH --job-name=%s\n',modelname);
+			fprintf(fid,'#SBATCH -p %s \n',cluster.partition);
+			fprintf(fid,'#SBATCH -A %s \n',cluster.project);
+			fprintf(fid,'#SBATCH --mail-type=ALL\n');
+			fprintf(fid,'#SBATCH -N %i -n %i\n',cluster.numnodes,cluster.cpuspernode);
+			fprintf(fid,'#SBATCH --time=%i\n',cluster.time*60) %walltime is in seconds.
+			fprintf(fid,'#SBATCH --mem-per-cpu=%igb\n',cluster.memory);
+			fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			fprintf(fid,'#SBATCH -e %s.errlog \n\n',modelname);
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+			fprintf(fid,'mpirun -np %i %s/issm.exe %s %s %s\n',cluster.nprocs(),cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.run'],'w');
+				fprintf(fid,'mpirun -np %i %s/issm.exe %s %s %s\n',cluster.nprocs(),cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+				if ~io_gather, %concatenate the output files:
+					fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				end
+				fclose(fid);
+				fid=fopen([modelname '.errlog'],'w');
+				fclose(fid);
+				fid=fopen([modelname '.outlog'],'w');
+				fclose(fid);
+			end
+		end %}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			if cluster.interactive,
+				compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch) % {{{
+
+			disp('launching solution sequence on remote cluster');
+             %
+             % qsub replaced by sbatch for csd3 system NSA 28/3/18
+			if ~isempty(restart)
+				launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && qsub ' modelname '.queue '];
+			else
+				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && sbatch ' modelname '.queue '];
+			end
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/castor.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/castor.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/castor.m	(revision 27955)
@@ -0,0 +1,107 @@
+%CASTOR class definition
+%
+%   Usage:
+%      cluster=castor();
+%      cluster=castor('np',3);
+%      cluster=castor('np',3,'login','username');
+
+classdef castor
+	properties (SetAccess=public)
+		% {{{
+		name='castor'
+		login='username';
+		np=128;
+		port=0;
+		queue='shortc';
+		time=180;
+		codepath='/workp/edw/issm-2.0/bin'
+		executionpath='/workp/edw/Testing/Execution'
+		%}}}
+	end
+	methods
+		function cluster=castor(varargin) % {{{
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    np: %i',cluster.np));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    queue: %s',cluster.queue));
+			disp(sprintf('    time: %i',cluster.time));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			available_queues={'shortc','longc'};
+			queue_requirements_time=[180 720];
+			queue_requirements_np=[128 128];
+
+			QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,cluster.time)
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/sh\n');
+			fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); %walltime is in seconds.
+			fprintf(fid,'#PBS -N %s\n',modelname);
+			fprintf(fid,'#PBS -l ncpus=%i\n',cluster.np);
+			if ~isempty(queue),
+				fprintf(fid,'#PBS -q %s\n',cluster.queue);
+			end
+			fprintf(fid,'#PBS -o %s.outlog \n',modelname);
+			fprintf(fid,'#PBS -e %s.errlog \n',modelname);
+			fprintf(fid,'export PBS_O_WORKDIR=%s\n',[cluster.executionpath '/' dirname]);
+			fprintf(fid,'cd $PBS_O_WORKDIR\n');
+			fprintf(fid,'export OMP_NUM_THREADS=1\n');
+			fprintf(fid,'dplace -s1 -c0-%i mpiexec -np %i %s/issm.exe %s %s %s',cluster.np-1,cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			fclose(fid);
+
+		end
+		%}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			if cluster.interactive,
+				compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart) % {{{
+
+			disp('launching solution sequence on remote cluster');
+			if ~isempty(restart)
+				launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+			else
+				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+			end
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/cloud.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/cloud.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/cloud.m	(revision 27955)
@@ -0,0 +1,104 @@
+%CLOUD cluster class definition
+%
+%   Usage:
+%      cluster=cloud('name','astrid','np',3);
+%      cluster=cloud('name',oshostname(),'np',3,'login','username');
+
+classdef cloud
+	properties (SetAccess=public)
+		% {{{
+		name='';
+		login='';
+		np=1;
+		codepath='';
+		executionpath='';
+		interactive=0;
+		%}}}
+	end
+	methods
+		function cluster=cloud(varargin) % {{{
+
+			%initialize cluster using user settings if provided
+			if (exist('cloud_settings')==2),
+				cloud_settings;
+			end
+
+			%OK get other fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    np: %i',cluster.np));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    interactive: %i',cluster.interactive));
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+			if cluster.np<1
+				md = checkmessage(md,['number of processors should be at least 1']);
+			end
+			if isnan(cluster.np),
+				md = checkmessage(md,'number of processors should not be NaN!');
+			end
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'source %s%s\n',cluster.codepath,'/../etc/environment.sh');
+			fprintf(fid,'cd %s\n',[cluster.executionpath '/' dirname]);
+			fprintf(fid,'mpiexec -np %i -f /home/mpich2.hosts %s/issm.exe %s %s/%s %s 2> %s.errlog > /dev/stdout | tee %s.outlog',cluster.np,cluster.codepath,solution,cluster.executionpath,dirname,modelname,modelname,modelname);
+		end
+		%}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			system(compressstring);
+
+			if isempty(cluster.login),
+				error('cloud BuildQueueScript: login should be supplied!');
+			end
+			disp('uploading input file and queuing script');
+			issmstscpout(cluster.name,cluster.executionpath,cluster.login,{[dirname '.tar.gz']});
+
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart) % {{{
+
+			if cluster.interactive, 
+				disp('sending files to remote cluster. once done, please log into cluster and launch job');
+				if ~isempty(restart)
+					launchcommand=['cd ' cluster.executionpath ' && cd ' dirname];
+				else
+					launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz'];
+				end
+			else
+				disp('launching solution sequence on remote cluster');
+				if ~isempty(restart)
+					launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue'];
+				else
+					launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz && qsub ' modelname '.queue'];
+				end
+			end
+			issmstssh(cluster.name,cluster.login,launchcommand);
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmstscpin(cluster.name,cluster.login,directory,filelist);
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/cloud.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/cloud.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/cloud.py	(revision 27955)
@@ -0,0 +1,101 @@
+import subprocess
+
+try:
+    from cloud_settings import cloud_settings
+except ImportError:
+    print('You need cloud_settings.py to proceed, check presence and sys.path')
+
+class cloud(object):
+    """CLOUD cluster class definition
+
+    Usage:
+        cluster = cloud('name', 'astrid', 'np', 3)
+        cluster = cloud('name', oshostname(), 'np', 3, 'login', 'username')
+    """
+
+    def __init__(self, *args):  # {{{
+        self.name = ''
+        self.login = ''
+        self.np = 1
+        self.codepath = ''
+        self.executionpath = ''
+        self.interactive = 0
+
+        # Initialize cluster using user settings if provided
+        try:
+            self = cloud_settings(self)
+        except NameError:
+            print('cloud_settings.py not found, using default settings')
+
+        # OK get other fields
+        options = pairoptions(*args)
+        self = options.AssignObjectFields(self)
+    # }}}
+
+    def __repr__(self):  # {{{
+        # Display the object
+        s = 'class \'{}\' object \'{}\' = \n'.format(type(self), 'self')
+        s += '    name: {}\n'.format(self.name)
+        s += '    login: {}\n'.format(self.login)
+        s += '    np: {}\n'.format(self.np)
+        s += '    codepath: {}\n'.format(self.codepath)
+        s += '    executionpath: {}\n'.format(self.executionpath)
+        s += '    interactive: {}\n'.format(self.interactive)
+        return s
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if self.np < 1:
+            md = md.checkmessage('number of processors should be at least 1')
+
+        if np.isnan(self.np):
+            md = md.checkmessage('number of processors should not be NaN!')
+
+        return self
+    # }}}
+
+    def BuildQueueScript(self, dirname, modelname, solution, io_gather, isvalgrind, isgprof, isdakota, isoceancoupling):  # {{{
+        # Write queuing script
+        fid = open(modelname + '.queue', 'w')
+
+        fid.write('#/bin/bash\n')
+        fid.write('source {}{}\n'.format(self.codepath, '/../etc/environment.sh'))
+        fid.write('cd {}/{}\n'.format(self.executionpath, dirname))
+        fid.write('mpiexec -np {} -f /home/mpich2.hosts {}/issm.exe {} {}/{} {} 2> {}.errlog > /dev/stdout | tee {}.outlog\n'.format(self.np, self.codepath, solution, self.executionpath, dirname, modelname, modelname, modelname))
+    # }}}
+
+    def UploadQueueJob(self, modelname, dirname, filelist):  # {{{
+        # Compress the files into one zip
+        compressstring = 'tar -zcf {}.tar.gz'.format(dirname)
+        for file in filelist:
+            compressstring += ' {}'.format(file)
+        subprocess.call(compressstring, shell=True)
+
+        if isempty(self.login):
+            raise Exception('cloud BuildQueueScript: login should be supplied!')
+
+        print('uploading input file and queuing script')
+        issmstscpout(self.name, self.executionpath, self.login, '{}.tar.gz'.format(dirname))
+    # }}}
+
+    def LaunchQueueJob(self, modelname, dirname, filelist, restart, batch):  # {{{
+        if self.interactive:
+            print('sending files to remote cluster. once done, please log into cluster and launch job')
+            if not isempty(restart):
+                launchcommand = 'cd {} && cd {}'.format(self.executionpath, dirname)
+            else:
+                launchcommand = 'cd {} && rm -rf ./{} && mkdir {} && cd {} && mv ../{}.tar.gz ./ && tar -zxf {}.tar.gz'.format(self.executionpath, dirname, dirname, dirname, dirname, dirname)
+        else:
+            print('launching solution sequence on remote cluster')
+            if not isempty(restart):
+                launchcommand = 'cd {} && cd {} && qsub {}.queue'.format(self.executionpath, dirname, modelname)
+            else:
+                launchcommand = 'cd {} && rm -rf ./{} && mkdir {} && cd {} && mv ../{}.tar.gz ./ && tar -zxf {}.tar.gz && qsub {}.queue'.format(self.executionpath, dirname, dirname, dirname, dirname, dirname, modelname)
+        issmstssh(self.name, self.login, launchcommand)
+    # }}}
+
+    def Download(self, dirname, filelist):  # {{{
+        # Copy files from cluster to current directory
+        directory = '{}/{}/'.format(self.executionpath, dirname)
+        issmstscpin(self.name, self.login, directory, filelist)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/computecanada.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/computecanada.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/computecanada.m	(revision 27955)
@@ -0,0 +1,135 @@
+%COMPUTECANADA class definition
+%
+%   Usage:
+%      cluster=computecanada();
+%      cluster=computecanada('np',3);
+%      cluster=computecanada('np',3,'login','username');
+
+classdef computecanada
+    properties (SetAccess=public)  
+		 % {{{
+		 name           = ''
+		 login          = '';
+		 numtasks       = 1;
+		 cpuspertask    = 8;
+		 port           = 0;
+		 projectaccount = '';
+		 codepath       = '';
+		 executionpath  = '';
+		 time           = 24*60;
+		 memory         = 2;
+		 email          = '';
+		 mailtype       = '';
+	 end
+	 %}}}
+	 methods
+		 function cluster=computecanada(varargin) % {{{
+
+			 %initialize cluster using default settings if provided
+			 if (exist('computecanada_settings')==2), computecanada_settings; end
+
+			 %use provided options to change fields
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		 end
+		 %}}}
+		 function disp(cluster) % {{{
+			 %  display the object
+			 disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			 disp(sprintf('    name: %s',cluster.name));
+			 disp(sprintf('    login: %s',cluster.login));
+			 disp(sprintf('    port: %i',cluster.port));
+			 disp(sprintf('    numtasks: %i',cluster.numtasks));
+			 disp(sprintf('    cpuspertask: %i',cluster.cpuspertask));
+			 disp(sprintf('    projectaccount: %s',cluster.projectaccount));
+			 disp(sprintf('    codepath: %s',cluster.codepath));
+			 disp(sprintf('    executionpath: %s',cluster.executionpath));
+			 disp(sprintf('    time: %i',cluster.time));
+			 disp(sprintf('    memory: %i',cluster.memory));
+			 disp(sprintf('    email: %s', cluster.email));
+			 disp(sprintf('    mailtype: %s', cluster.mailtype));
+			 
+		 end
+		 %}}}
+		 function numprocs=np(cluster) % {{{
+			 %compute number of processors
+			 numprocs=cluster.numtasks*cluster.cpuspertask;
+		 end
+		 %}}}
+		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
+			 if isempty(cluster.name), md = checkmessage(md,'name empty'); end
+			 if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			 if ~(cluster.numtasks > 0), md = checkmessage(md,'numtasks must be > 0'); end
+			 if ~(cluster.cpuspertask > 0), md = checkmessage(md,'cpuspertask must be > 0'); end
+			 if ~(cluster.port >= 0), md = checkmessage(md,'port must be >= 0'); end
+			 if isempty(cluster.email), md = checkmessage(md,'email empty'); end
+			 if isempty(cluster.mailtype), md = checkmessage(md,'mailtype empty'); end
+			 if isempty(cluster.projectaccount), md = checkmessage(md,'projectaccount empty'); end
+			 if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			 if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+			 if ~(cluster.time > 0), md = checkmessage(md,'time must be > 0'); end
+			 if ~(cluster.memory > 0), md = checkmessage(md,'memory must be > 0'); end
+		 end
+		 %}}}
+		 function BuildKrigingQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+			 error('not implemented yet');
+		 end
+		 %}}}
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#!/bin/bash\n');
+			 fprintf(fid,'#SBATCH --job-name=%s\n',modelname);
+			 fprintf(fid,'#SBATCH --account=%s \n',cluster.projectaccount);
+			 fprintf(fid,'#SBATCH --ntasks=%i  \n',cluster.numtasks);
+			 fprintf(fid,'#SBATCH --cpus-per-task=%i\n',cluster.cpuspertask);
+			 fprintf(fid,'#SBATCH --time=%i\n',cluster.time); %walltime is in minutes
+			 fprintf(fid,'#SBATCH --mem-per-cpu=%igb\n',cluster.memory); %memory in in gigabytes
+			 fprintf(fid,'#SBATCH --mail-user=%s\n',cluster.email); %email
+			 fprintf(fid,'#SBATCH --mail-type=%s\n',cluster.mailtype); 
+			 fprintf(fid,'#SBATCH --output=%s.outlog \n',modelname);
+			 fprintf(fid,'#SBATCH --error=%s.errlog \n\n',modelname);
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+			 fprintf(fid,'srun %s/issm.exe %s %s %s\n',cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			 if ~io_gather, %concatenate the output files:
+				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			 end
+			 fclose(fid);
+		 end %}}}
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			 %compress the files into one zip.
+			 compressstring=['tar -zcf ' dirname '.tar.gz '];
+			 for i=1:numel(filelist),
+				 compressstring = [compressstring ' ' filelist{i}];
+			 end
+			 system(compressstring);
+
+			 disp('uploading input file and queuing script');
+			 issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		 end %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch)% {{{
+
+			 disp('launching solution sequence on remote cluster');
+			 if ~isempty(restart)
+				 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && sbatch ' modelname '.queue '];
+			 else
+				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && sbatch ' modelname '.queue '];
+			 end
+			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		 end %}}}
+		 function Download(cluster,dirname,filelist)% {{{
+
+			 %copy files from cluster to current directory
+			 directory=[cluster.executionpath '/' dirname '/'];
+			 issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		 end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/cosmos.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/cosmos.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/cosmos.m	(revision 27955)
@@ -0,0 +1,107 @@
+%COSMOS class definition
+%
+%   Usage:
+%      cluster=cosmos();
+%      cluster=cosmos('np',3);
+%      cluster=cosmos('np',3,'login','username');
+
+classdef cosmos
+	properties (SetAccess=public)
+		% {{{
+		name='cosmos'
+		login='username';
+		np=128;
+		port=0;
+		queue='shortq';
+		time=3*60;
+		codepath='/work00/edw/issm-2.0/bin';
+		executionpath='/work00/edw/Execution';
+		%}}}
+	end
+	methods
+		function cluster=cosmos(varargin) % {{{
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    np: %i',cluster.np));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    queue: %s',cluster.queue));
+			disp(sprintf('    time: %i',cluster.time));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			available_queues={'debug','shortq','longq'};
+			queue_requirements_time=[60*1 60*3 60*17];
+			queue_requirements_np=[32 128 256];
+
+			QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,cluster.time)
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#PBS -l select=%i:ncpus=1\n',cluster.np);
+			fprintf(fid,'#PBS -N %s\n',modelname);
+			fprintf(fid,'#PBS -l walltime=%i\n',time*60); %walltime is in seconds.
+			fprintf(fid,'#PBS -q %s\n',queue);
+			fprintf(fid,'#PBS -o %s.outlog \n',modelname);
+			fprintf(fid,'#PBS -e %s.errlog \n',modelname);
+			fprintf(fid,'export PBS_O_WORKDIR=%s\n',[cluster.executionpath '/' dirname]);
+			fprintf(fid,'cd $PBS_O_WORKDIR\n');
+			fprintf(fid,'export OMP_NUM_THREADS=1\n');
+			fprintf(fid,'ulimit -s unlimited\n');
+			fprintf(fid,'ulimit -c 0\n');
+			fprintf(fid,'/opt/mpich/gm/intel10.1/bin/mpiexec -np %i %s/issm.exe %s %s %s',cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			fclose(fid);
+
+		end
+		%}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			if cluster.interactive,
+				compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart) % {{{
+
+			disp('launching solution sequence on remote cluster');
+			if ~isempty(restart)
+				launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+			else
+				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+			end
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/cyclone.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/cyclone.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/cyclone.py	(revision 27955)
@@ -0,0 +1,110 @@
+import subprocess
+
+try:
+    from cyclone_settings import cyclone_settings
+except ImportError:
+    print('You need cyclone_settings.py to proceed, check presence and sys.path')
+from fielddisplay import fielddisplay
+from helpers import *
+from pairoptions import pairoptions
+from issmscpin import issmscpin
+from issmscpout import issmscpout
+from issmssh import issmssh
+
+
+class cyclone(object):
+    """CYCLONE cluster class definition
+
+    Be aware that this is not a cluster as we usually know them. There is no scheduling and resources are pretty low.
+    The computer has 20 CPUs and 512GB of memory used by a number of persons, so be respectful with your usage.
+    I have put some restrictive upper limits in place to avoid overuse. (Basile)
+
+    Usage:
+        cluster = cyclone()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.name = 'cyclone'
+        self.login = ''
+        self.np = 2
+        self.time = 100
+        self.codepath = ''
+        self.executionpath = ''
+        self.port = ''
+        self.interactive = 0
+
+        # Use provided options to change fields
+        options = pairoptions(*args)
+
+        # Initialize cluster using user settings if provided
+        self = cyclone_settings(self)
+        # OK get other fields
+        self = options.AssignObjectFields(self)
+    # }}}
+
+    def __repr__(self):  # {{{
+        # Display the object
+        s = "class cyclone object:"
+        s = "%s\n%s" % (s, fielddisplay(self, 'name', 'name of the cluster'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'login', 'login'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'np', 'number of processes'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'time', 'walltime requested in minutes'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'codepath', 'code path on the cluster'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'executionpath', 'execution path on the cluster'))
+        return s
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Miscellaneous
+        if not self.login:
+            md = md.checkmessage('login empty')
+        if not self.codepath:
+            md = md.checkmessage('codepath empty')
+        if not self.executionpath:
+            md = md.checkmessage('executionpath empty')
+        if self.time > 72:
+            md = md.checkmessage('walltime exceeds 72h for niceness this is not allowed, if you need more time consider shifting to one of the Notur systems')
+        if self.np > 10:
+            md = md.checkmessage('number of process excess 10, if you need more processing power consider shifting to one of the Notur systems')
+
+        return self
+    # }}}
+
+    def BuildQueueScript(self, dirname, modelname, solution, io_gather, isvalgrind, isgprof, isdakota, isoceancoupling):  # {{{
+        executable = 'issm.exe'
+        # Write queuing script
+        fid = open(modelname + '.queue', 'w')
+        fid.write('export ISSM_DIR="%s/../ "\n' % self.codepath)
+        fid.write('source $ISSM_DIR/etc/environment.sh\n')
+        fid.write('INTELLIBS = "/opt/intel/intelcompiler-12.04/composerxe-2011.4.191/compiler/lib/intel64"\n')
+        fid.write('export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/:$INTELLIBS\n')
+        fid.write('export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/include/x86_64-linux-gnu/c++/4.8\n')
+        fid.write('cd %s/%s/ \n\n' % (self.executionpath, dirname))
+        rundir = self.executionpath + '/' + dirname
+        runfile = self.executionpath + '/' + dirname + '/' + modelname
+        fid.write('mpiexec -np %i %s/%s %s %s %s>%s.outlog 2>%s.errlog\n' % (self.np, self.codepath, executable, str(solution), rundir, modelname, runfile, runfile))
+        fid.close()
+    # }}}
+    def UploadQueueJob(self, modelname, dirname, filelist):  # {{{
+        #compress the files into one zip.
+        compressstring = 'tar -zcf %s.tar.gz ' % dirname
+        for file in filelist:
+            compressstring += ' {}'.format(file)
+        subprocess.call(compressstring, shell=True)
+
+        print('uploading input file and queuing script')
+        issmscpout(self.name, self.executionpath, self.login, self.port, [dirname + '.tar.gz'])
+    # }}}
+    def LaunchQueueJob(self, modelname, dirname, filelist, restart, batch):  # {{{
+        print('launching solution sequence on remote cluster')
+        if not isempty(restart):
+            launchcommand = 'cd %s && cd %s && qsub %s.queue' % (self.executionpath, dirname, modelname)
+        else:
+            launchcommand = 'cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && chmod +x ./%s.queue && ./%s.queue' % (self.executionpath, dirname, dirname, dirname, dirname, dirname, modelname, modelname)
+        issmssh(self.name, self.login, self.port, launchcommand)
+    # }}}
+    def Download(self, dirname, filelist):  # {{{
+        # Copy files from cluster to current directory
+        directory = '%s/%s/' % (self.executionpath, dirname)
+        issmscpin(self.name, self.login, self.port, directory, filelist)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/discover.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/discover.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/discover.m	(revision 27955)
@@ -0,0 +1,228 @@
+%DISCOVER cluster class definition
+%
+%   Usage:
+%      cluster=discover();
+%      cluster=discover('np',3);
+%      cluster=discover('np',3,'login','username');
+
+classdef discover
+	properties (SetAccess=public)
+		% {{{
+		name=oshostname();
+		login='';
+		modules={'comp/intel/20.0.0.166' 'mpi/sgi-mpt/2.17' 'cmake/3.17.0'};
+		numnodes=20;
+		cpuspernode=8;
+		port=0;
+		queue='general';
+		time=12*60*60;
+		processor='west';
+		codepath='';
+		executionpath='';
+		grouplist='';
+		interactive=0;
+		bbftp=0;
+		numstreams=8;
+		hyperthreading=0;
+		email='';
+	end
+	%}}}
+	methods
+		function cluster=discover(varargin) % {{{
+
+			%initialize cluster using default settings if provided
+			if (exist('discover_settings')==2), discover_settings; end
+
+			%use provided options to change fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    modules: %s',strjoin(cluster.modules,', ')));
+			disp(sprintf('    numnodes: %i',cluster.numnodes));
+			disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			disp(sprintf('    np: %i',cluster.nprocs()));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    queue: %s',cluster.queue));
+			disp(sprintf('    time: %i',cluster.time));
+			disp(sprintf('    processor: %s',cluster.processor));
+			disp(sprintf('    srcpath: %s',cluster.srcpath));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    grouplist: %s',cluster.grouplist));
+			disp(sprintf('    interactive: %i',cluster.interactive));
+			disp(sprintf('    bbftp: %s',cluster.bbftp));
+			disp(sprintf('    numstreams: %s',cluster.numstreams));
+			disp(sprintf('    hyperthreading: %i',cluster.hyperthreading));
+			disp(sprintf('    email: %s',cluster.email));
+		end
+		%}}}
+		function numprocs=nprocs(cluster) % {{{
+			%compute number of processors
+			numprocs=cluster.numnodes*cluster.cpuspernode;
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			available_queues={'long','allnccs','debug'};
+			queue_requirements_time=[24*60*60 12*60*60 1*60*60];
+			queue_requirements_np=[560 6000 532];
+
+			QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.nprocs(),cluster.time)
+
+			%now, check cluster.cpuspernode according to processor type
+			if ( strcmpi(cluster.processor,'sand')),
+				if ((cluster.cpuspernode>16 ) | (cluster.cpuspernode<1)),
+					md = checkmessage(md,'cpuspernode should be between 1 and 16 for ''sand'' processors');
+				end
+			elseif strcmpi(cluster.processor,'hasw'),
+				if ((cluster.cpuspernode>28 ) | (cluster.cpuspernode<1)),
+					md = checkmessage(md,'cpuspernode should be between 1 and 28 for ''hasw'' processors');
+				end
+			else
+				md = checkmessage(md,'unknown processor type, should be ''sand'' or ''hasw'' ');
+			end
+
+			%Miscellaneous
+			if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			executable='issm.exe';
+			if isdakota,
+				version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				if (version>=6),
+					executable='issm_dakota.exe';
+				end
+			end
+			if isoceancoupling,
+				executable='issm_ocean.exe';
+			end
+
+			%write queuing script
+			fid=fopen([modelname '.queue'],'w');
+
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#SBATCH -J %s \n',modelname);
+			fprintf(fid,'#SBATCH --qos=%s \n',cluster.queue);
+			fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			fprintf(fid,'#SBATCH -e %s.errlog \n',modelname);
+			fprintf(fid,'#SBATCH -n %i \n',cluster.nprocs());
+			fprintf(fid,'#SBATCH -N %i \n',cluster.numnodes);
+			fprintf(fid,'#SBATCH -t %02i:%02i:00 \n',floor(cluster.time/3600),floor(mod(cluster.time,3600)/60));
+			fprintf(fid,'#SBATCH -A %s \n\n',cluster.grouplist);
+			if length(find(cluster.email=='@'))>0
+				fprintf(fid,'#SBATCH --mail-user=%s \n',cluster.email);
+				fprintf(fid,'#SBATCH --mail-type=end \n\n');
+			end
+			fprintf(fid,'. /usr/share/modules/init/bash\n\n');
+			for i=1:numel(cluster.modules),
+				fprintf(fid,['module load ' cluster.modules{i} '\n']);
+			end
+			fprintf(fid,'export MPI_GROUP_MAX=64\n\n');
+			fprintf(fid,'export MPI_UNBUFFERED_STDIO=true\n\n');
+			fprintf(fid,'export PATH="$PATH:."\n\n');
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+
+			fprintf(fid,'mpiexec -np %i %s/%s %s %s/%s %s\n',cluster.nprocs(),cluster.codepath,executable,solution,cluster.executionpath,dirname,modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.run'],'w');
+				if ~isvalgrind,
+					fprintf(fid,'mpiexec -np %i %s/%s %s %s/%s %s\n',cluster.nprocs(),cluster.codepath,executable,solution,cluster.executionpath,dirname,modelname);
+				else
+					fprintf(fid,'mpiexec -np %i valgrind --leak-check=full %s/%s %s %s/%s %s\n',cluster.nprocs(),cluster.codepath,executable,solution,cluster.executionpath,dirname,modelname);
+				end
+				if ~io_gather, %concatenate the output files:
+					fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				end
+				fclose(fid);
+				fid=fopen([modelname '.errlog'],'w'); % TODO: Change this to system call (touch <file>)?
+				fclose(fid);
+				fid=fopen([modelname '.outlog'],'w'); % TODO: Change this to system call (touch <file>)?
+				fclose(fid);
+			end
+		end %}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz'];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			if cluster.interactive,
+				compressstring = [compressstring ' ' modelname '.run '  modelname '.errlog ' modelname '.outlog '];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			if cluster.interactive,
+				directory=[cluster.executionpath '/Interactive' num2str(cluster.interactive)];
+			else 
+				directory=cluster.executionpath;
+			end
+
+			if cluster.bbftp,
+				issmbbftpout(cluster.name,directory,cluster.login,cluster.port,cluster.numstreams,{[dirname '.tar.gz']});
+			else
+				issmscpout(cluster.name,directory,cluster.login,cluster.port,{[dirname '.tar.gz']});
+			end
+
+		end
+		%}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch) % {{{
+
+			if cluster.interactive,
+				if ~isempty(restart)
+					launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive)];
+				else
+					launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive) ' && tar -zxf ' dirname '.tar.gz'];
+				end
+			else
+				if ~isempty(restart)
+					launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && sbatch ' modelname '.queue '];
+				else
+					launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && sbatch ' modelname '.queue '];
+				end
+			end
+
+			disp('launching solution sequence on remote cluster');
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end
+		%}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			if cluster.interactive,
+				directory=[cluster.executionpath '/Interactive' num2str(cluster.interactive) '/'];
+			else
+				directory=[cluster.executionpath '/' dirname '/'];
+			end
+
+			if cluster.bbftp,
+				issmbbftpin(cluster.name, cluster.login, cluster.port, cluster.numstreams, directory, filelist);
+			else
+				issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+			end
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/discover.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/discover.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/discover.py	(revision 27955)
@@ -0,0 +1,222 @@
+import subprocess
+
+try:
+    from discover_settings import discover_settings
+except ImportError:
+    print('You need discover_settings.py to proceed, check presence and sys.path')
+from fielddisplay import fielddisplay
+from helpers import *
+from IssmConfig import IssmConfig
+from issmscpin import issmscpin
+from issmscpout import issmscpout
+from issmssh import issmssh
+from MatlabFuncs import *
+from pairoptions import pairoptions
+from QueueRequirements import QueueRequirements
+
+class discover(object):
+    """DISCOVER cluster class definition
+
+    Usage:
+        cluster = discover()
+        cluster = discover('np', 3)
+        cluster = discover('np', 3, 'login', 'username')
+    """
+
+    def __init__(self, *args):  # {{{
+        self.name = oshostname()
+        self.login = ''
+        self.modules = ['comp/intel/20.0.0.166', 'mpi/sgi-mpt/2.17', 'cmake/3.17.0']
+        self.numnodes = 20
+        self.cpuspernode = 8
+        self.port = 0
+        self.queue = 'general'
+        self.time = 12 * 60 * 60
+        self.processor = 'west'
+        self.srcpath = ''
+        self.codepath = ''
+        self.executionpath = ''
+        self.grouplist = ''
+        self.interactive = 0
+        self.bbftp = 0
+        self.numstreams = 8
+        self.hyperthreading = 0
+        self.email = ''
+
+        # Use provided options to change fields
+        options = pairoptions(*args)
+
+        # Initialize cluster using user settings if provided
+        try:
+            self = discover_settings(self)
+        except NameError:
+            print('discover_settings.py not found, using default settings')
+
+        # OK get other fields
+        self = options.AssignObjectFields(self)
+    # }}}
+
+    def __repr__(self):  # {{{
+        # Display the object
+        s = 'class discover object\n'
+        s += '    name: {}\n'.format(self.name)
+        s += '    login: {}\n'.format(self.login)
+        s += '    modules: {}\n'.format(strjoin(self.modules, ', '))
+        s += '    numnodes: {}\n'.format(self.numnodes)
+        s += '    cpuspernode: {}\n'.format(self.cpuspernode)
+        s += '    np: {}\n'.format(self.nprocs())
+        s += '    port: {}\n'.format(self.port)
+        s += '    queue: {}\n'.format(self.queue)
+        s += '    time: {}\n'.format(self.time)
+        s += '    processor: {}\n'.format(self.processor)
+        s += '    srcpath: {}\n'.format(self.srcpath)
+        s += '    codepath: {}\n'.format(self.codepath)
+        s += '    executionpath: {}\n'.format(self.executionpath)
+        s += '    grouplist: {}\n'.format(self.grouplist)
+        s += '    interactive: {}\n'.format(self.interactive)
+        s += '    bbftp: {}\n'.format(self.bbftp)
+        s += '    numstreams: {}\n'.format(self.numstreams)
+        s += '    hyperthreading: {}\n'.format(self.hyperthreading)
+        return s
+    # }}}
+
+    def nprocs(self):  # {{{
+        return self.numnodes * self.cpuspernode
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        queuedict = {'long': [24 * 60 * 60, 560],
+                     'allnccs': [12 * 60 * 60, 6000],
+                     'debug': [1 * 60 * 60, 532]}
+        QueueRequirements(queuedict, self.queue, self.nprocs(), self.time)
+
+        # Now, check cluster.cpuspernode according to processor type
+        if self.processor == 'sand':
+            if self.cpuspernode > 16 or self.cpuspernode < 1:
+                md = md.checkmessage('cpuspernode should be between 1 and 16 for \'sand\' processors in hyperthreading mode')
+        elif self.processor == 'hasw':
+            if self.cpuspernode > 28 or self.cpuspernode < 1:
+                md = md.checkmessage('cpuspernode should be between 1 and 28 for \'hasw\' processors in hyperthreading mode')
+        else:
+            md = md.checkmessage('unknown processor type, should be \'sand\' or \'hasw\'')
+
+        # Miscellaneous
+        if not self.login:
+            md = md.checkmessage('login empty')
+        if not self.codepath:
+            md = md.checkmessage('codepath empty')
+        if not self.executionpath:
+            md = md.checkmessage('executionpath empty')
+
+        return self
+    # }}}
+
+    def BuildQueueScript(self, dirname, modelname, solution, io_gather, isvalgrind, isgprof, isdakota, isoceancoupling):  # {{{
+        if isgprof:
+            print('gprof not supported by cluster, ignoring...')
+
+        executable = 'issm.exe'
+        if isdakota:
+            version = IssmConfig('_DAKOTA_VERSION_')[0:2]
+            version = float(str(version[0]))
+            if version >= 6:
+                executable = 'issm_dakota.exe'
+        if isoceancoupling:
+            executable = 'issm_ocean.exe'
+
+        # Write queuing script
+        fid = open(modelname + '.queue', 'w')
+
+        fid.write('#!/bin/bash\n')
+        fid.write('#SBATCH -J {} \n'.format(modelname))
+        fid.write('#SBATCH --qos={} \n'.format(self.queue))
+        fid.write('#SBATCH -o {}.outlog \n'.format(modelname))
+        fid.write('#SBATCH -e {}.errlog \n'.format(modelname))
+        fid.write('#SBATCH -n {} \n'.format(self.nprocs()))
+        fid.write('#SBATCH -N {} \n'.format(self.numnodes))
+        fid.write('#SBATCH -t {:02d}:{:02d}:00 \n'.format(int(floor(self.time / 3600)), int(floor(self.time % 3600) / 60)))
+        fid.write('#SBATCH -A {} \n\n'.format(self.grouplist))
+        if (self.email.find('@')>-1):
+            fid.write('#SBATCH --mail-user={} \n'.format(self.email))
+            fid.write('#SBATCH --mail-type=end \n\n')
+        fid.write('. /usr/share/modules/init/bash\n\n')
+        for i in range(len(self.modules)):
+            fid.write('module load {}\n'.format(self.modules[i]))
+        fid.write('export MPI_GROUP_MAX=64\n\n')
+        fid.write('export MPI_UNBUFFERED_STDIO=true\n\n')
+        fid.write('export PATH="$PATH:."\n\n')
+        fid.write('export ISSM_DIR="{}/../"\n'.format(self.codepath)) # FIXME
+        fid.write('source $ISSM_DIR/etc/environment.sh\n') # FIXME
+        fid.write('cd {}/{}\n\n'.format(self.executionpath, dirname))
+
+        fid.write('mpiexec -np {} {}/{} {} {}/{} {}\n'.format(self.nprocs(), self.codepath, executable, solution, self.executionpath, dirname, modelname))
+
+        if not io_gather: # concatenate the output files
+            fid.write('cat {}.outbin.* > {}.outbin'.format(modelname, modelname))
+        fid.close()
+
+        # In interactive mode, create a run file, and errlog and outlog file
+        if self.interactive:
+            fid = open(modelname + '.run', 'w')
+            if not isvalgrind:
+                fid.write('mpiexec -np {} {}/{} {} {}/{} {}\n'.format(self.nprocs(), self.codepath, executable, solution, self.executionpath, dirname, modelname))
+            else:
+                fid.write('mpiexec -np {} valgrind --leak-check=full {}/{} {} {}/{} {}\n'.format(self.nprocs(), self.codepath, executable, solution, self.executionpath, dirname, modelname))
+            if not io_gather: # concatenate the output files
+                fid.write('cat {}.outbin.* > {}.outbin'.format(modelname, modelname))
+            fid.close()
+            fid = open(modelname + '.errlog', 'w') # TODO: Change this to system call (touch <file>)?
+            fid.close()
+            fid = open(modelname + '.outlog', 'w') # TODO: Change this to system call (touch <file>)?
+            fid.close()
+    # }}}
+
+    def UploadQueueJob(self, modelname, dirname, filelist):  # {{{
+        # Compress the files into one zip
+        compressstring = 'tar -zcf {}.tar.gz'.format(dirname)
+        for file in filelist:
+            compressstring += ' {}'.format(file)
+        if self.interactive:
+            compressstring += ' {}.run {}.errlog {}.outlog'.format(modelname, modelname, modelname)
+        subprocess.call(compressstring, shell=True)
+
+        print('uploading input file and queuing script')
+        if self.interactive:
+            directory = '{}/Interactive{}'.format(self.executionpath, self.interactive)
+        else:
+            directory = self.executionpath
+
+        if self.bbftp:
+            issmbbftpout(self.name, directory, self.login, self.port, self.numstreams, '{}.tar.gz'.format(dirname))
+        else:
+            issmscpout(self.name, directory, self.login, self.port, ['{}.tar.gz'.format(dirname)])
+    # }}}
+
+    def LaunchQueueJob(self, modelname, dirname, filelist, restart, batch):  # {{{
+        if self.interactive:
+            if not isempty(restart):
+                launchcommand = 'cd {}/Interactive{}'.format(self.executionpath, self.interactive)
+            else:
+                launchcommand = 'cd {}/Interactive{} && tar -zxf {}.tar.gz'.format(self.executionpath, self.interactive, dirname)
+        else:
+            if not isempty(restart):
+                launchcommand = 'cd {} && cd {} && sbatch {}.queue'.format(self.executionpath, dirname, modelname)
+            else:
+                launchcommand = 'cd {} && rm -rf ./{} && mkdir {} && cd {} && mv ../{}.tar.gz ./ && tar -zxf {}.tar.gz && sbatch {}.queue'.format(self.executionpath, dirname, dirname, dirname, dirname, dirname, modelname)
+
+        print('launching solution sequence on remote cluster')
+        issmssh(self.name, self.login, self.port, launchcommand)
+    # }}}
+
+    def Download(self, dirname, filelist):  # {{{
+        # Copy files from cluster to current directory
+        if self.interactive:
+            directory = '{}/Interactive{}'.format(self.executionpath, self.interactive)
+        else:
+            directory = '{}/{}/'.format(self.executionpath, dirname)
+
+        if self.bbftp:
+            issmbbftpin(self.name, self.login, self.port, self.numstreams, directory, filelist)
+        else:
+            issmscpin(self.name, self.login, self.port, directory, filelist)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/discovery.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/discovery.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/discovery.m	(revision 27955)
@@ -0,0 +1,175 @@
+%DISCOVERY(Dartmouth) cluster class definition
+%
+%   Usage:
+%      cluster=discovery();
+%      cluster=discovery('np',3);
+%      cluster=discovery('np',3,'login','username');
+
+classdef discovery
+	properties (SetAccess=public)
+		% {{{
+		name          = 'discovery'
+		login         = '';
+		numnodes      = 1;
+		cpuspernode   = 16;
+		codepath      = '';
+		executionpath = '';
+		interactive   = 0;
+		time          = 10; %in hours
+		memory        = 2;  %in Gb
+		email         = 'END,FAIL';
+		deleteckptdata= 0;
+	end
+	%}}}
+	methods
+		function cluster=discovery(varargin) % {{{
+
+			%initialize cluster using default settings if provided
+			if (exist('discovery_settings')==2), discovery_settings; end
+
+			%use provided options to change fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name:  %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    numnodes:    %i',cluster.numnodes));
+			disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			disp(sprintf('    time: %i hours',cluster.time));
+			disp(sprintf('    memory: %i Gb',cluster.memory));
+			disp(sprintf('    email: %s (notifications: BEGIN,END,FAIL)',cluster.email));
+			disp(sprintf('    deleteckptdata: %i',cluster.deleteckptdata));
+			disp(sprintf('    codepath:      %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    interactive: %i',cluster.interactive));
+		end
+		%}}}
+		function numprocs=nprocs(cluster) % {{{
+			%compute number of processors
+			numprocs=cluster.numnodes*cluster.cpuspernode;
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+			%Miscellaneous
+			if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+		end
+		%}}}
+		function BuildKrigingQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#SBATCH --job-name=%s\n',modelname);
+			fprintf(fid,'#SBATCH --account=ice\n'); %Make sure we use the ICE account for this run
+			fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			fprintf(fid,'#SBATCH -e %s.errlog \n',modelname);
+			fprintf(fid,'#SBATCH --nodes=%i\n',cluster.numnodes);
+			fprintf(fid,'#SBATCH --ntasks-per-node=%i\n',cluster.cpuspernode);
+			fprintf(fid,'#SBATCH --time=%s\n',datestr(cluster.time/24,'HH:MM:SS')); %walltime is in HH:MM:SS format. cluster.time is in hour
+			fprintf(fid,'#SBATCH --mem=%iG\n',cluster.memory);
+			if ~isempty(cluster.email)
+				fprintf(fid,'#SBATCH --mail-type=%s\n',cluster.email);
+			end
+			fprintf(fid,'\n');
+
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath);
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');      
+			fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+			fprintf(fid,'srun %s/kriging.exe %s %s\n', cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#SBATCH --job-name=%s\n',modelname);
+			fprintf(fid,'#SBATCH --account=ice\n'); %Make sure we use the ICE account for this run
+			fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			fprintf(fid,'#SBATCH -e %s.errlog \n',modelname);
+			fprintf(fid,'#SBATCH --nodes=%i\n',cluster.numnodes);
+			fprintf(fid,'#SBATCH --ntasks-per-node=%i\n',cluster.cpuspernode);
+			fprintf(fid,'#SBATCH --time=%s\n',eraseBetween(datestr(cluster.time/24,'dd-HH:MM:SS'),1,1)); %walltime is in d-HH:MM:SS format. cluster.time is in hour
+			fprintf(fid,'#SBATCH --mem=%iG\n',cluster.memory);
+			if ~isempty(cluster.email)
+				fprintf(fid,'#SBATCH --mail-type=%s\n',cluster.email);
+			end
+			fprintf(fid,'\n');
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath);
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');
+			fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+			fprintf(fid,'mpirun -n %i %s/issm.exe %s %s %s\n',cluster.nprocs(), cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+
+			if (cluster.deleteckptdata)
+				fprintf(fid,'rm -rf *.rst *.ckpt\n');
+			end
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.run'],'w');
+				fprintf(fid,'mpirun -n %i %s/issm.exe %s %s %s\n',cluster.nprocs(), cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+				if ~io_gather, %concatenate the output files:
+					fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				end
+				fclose(fid);
+				fid=fopen([modelname '.errlog'],'w');
+				fclose(fid);
+				fid=fopen([modelname '.outlog'],'w');
+				fclose(fid);
+			end
+		end %}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			if cluster.interactive,
+				compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			issmscpout(cluster.name,cluster.executionpath,cluster.login,0,{[dirname '.tar.gz']});
+
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch) % {{{
+
+			disp('launching solution sequence on remote cluster');
+			if ~isempty(restart)
+				launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && sbatch ' modelname '.queue '];
+			else
+				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && sbatch ' modelname '.queue '];
+			end
+			issmssh(cluster.name,cluster.login,0,launchcommand);
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,0,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/eis_nasa_smce.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/eis_nasa_smce.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/eis_nasa_smce.py	(revision 27955)
@@ -0,0 +1,217 @@
+import os
+import shutil
+import subprocess
+
+try:
+    from eis_nasa_smce_settings import eis_nasa_smce_settings
+except ImportError:
+    print('You need eis_nasa_smce_settings.py to proceed, check presence and sys.path')
+from fielddisplay import fielddisplay
+from helpers import *
+from IssmConfig import IssmConfig
+from issmssh import issmssh
+from MatlabFuncs import *
+from pairoptions import pairoptions
+
+class eis_nasa_smce(object):
+    """EIS_NASA_SMCE cluster class definition
+
+    Usage:
+        cluster = eis_nasa_smce()
+        cluster = eis_nasa_smce('np', 3)
+        cluster = eis_nasa_scme('np', 3, 'login', 'username')
+    """
+
+    def __init__(self, *args):  # {{{
+        self.name = '52.10.233.96'
+        self.login = 'jdquinn1'
+        self.idfile = '~/.ssh/eis-nasa-smce'
+        self.modules = ['intelmpi']
+        self.numnodes = 4
+        self.cpuspernode = 1
+        self.port = 0
+        self.time = 12 * 60 * 60
+        self.processor = 'skylake'
+        self.partition = 'sealevel-c5xl-spot'
+        self.srcpath = '/efs/issm-new/binaries/repos/trunk-jpl-working'
+        self.extpkgpath = '/efs/issm-new/binaries/ext'
+        self.codepath = '/efs/issm-new/binaries/repos/trunk-jpl-working/bin'
+        self.executionpath = '~/issm-exec'
+        self.interactive = 0
+        self.numstreams = 1
+        self.hyperthreading = 0
+        self.email = ''
+
+        # Use provided options to change fields
+        options = pairoptions(*args)
+
+        # Initialize cluster using user settings if provided
+        try:
+            self = eis_nasa_smce_settings(self)
+        except NameError:
+            print('eis_nasa_smce_settings.py not found, using default settings')
+
+        # OK get other fields
+        self = options.AssignObjectFields(self)
+    # }}}
+
+    def __repr__(self):  # {{{
+        # Display the object
+        s = 'class eis_nasa_smce object\n'
+        s += '    name: {}\n'.format(self.name)
+        s += '    login: {}\n'.format(self.login)
+        s += '    idfile: {}\n'.format(self.idfile)
+        s += '    modules: {}\n'.format(strjoin(self.modules, ', '))
+        s += '    numnodes: {}\n'.format(self.numnodes)
+        s += '    cpuspernode: {}\n'.format(self.cpuspernode)
+        s += '    np: {}\n'.format(self.nprocs())
+        s += '    port: {}\n'.format(self.port)
+        s += '    time: {}\n'.format(self.time)
+        s += '    processor: {}\n'.format(self.processor)
+        s += '    partition: {}\n'.format(self.partition)
+        s += '    srcpath: {}\n'.format(self.srcpath)
+        s += '    extpkgpath: {}\n'.format(self.extpkgpath)
+        s += '    codepath: {}\n'.format(self.codepath)
+        s += '    executionpath: {}\n'.format(self.executionpath)
+        s += '    interactive: {}\n'.format(self.interactive)
+        s += '    numstreams: {}\n'.format(self.numstreams)
+        s += '    hyperthreading: {}\n'.format(self.hyperthreading)
+        return s
+    # }}}
+
+    def nprocs(self):  # {{{
+        return self.numnodes * self.cpuspernode
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Now, check cluster.cpuspernode according to processor type
+        #if self.processor == 'skylake':
+        #    if self.cpuspernode > 14 or self.cpuspernode < 1:
+        #        md = md.checkmessage('cpuspernode should be between 1 and 14 for \'skyw\' processors in hyperthreading mode')
+        #else:
+        #    md = md.checkmessage('unknown processor type, should be \'skylake\'')
+
+        # Miscellaneous
+        if not self.login:
+            md = md.checkmessage('login empty')
+        if self.port:
+            md = md.checkmessage('port must be set to 0 as we do not have an SSH tunnel')
+        if not self.codepath:
+            md = md.checkmessage('codepath empty')
+        if not self.executionpath:
+            md = md.checkmessage('executionpath empty')
+
+        return self
+    # }}}
+
+    def BuildQueueScript(self, dirname, modelname, solution, io_gather, isvalgrind, isgprof, isdakota, isoceancoupling):  # {{{
+        if isgprof:
+            print('gprof not supported by cluster, ignoring...')
+
+        issmexec = 'issm.exe'
+        mpiexec = 'mpiexec' # Set to alternative mpiexec if desired
+
+        if isdakota:
+            version = IssmConfig('_DAKOTA_VERSION_')[0:2]
+            version = float(str(version[0]))
+            if version >= 6:
+                issmexec = 'issm_dakota.exe'
+        if isoceancoupling:
+            issmexec = 'issm_ocean.exe'
+
+        # Write queuing script
+        fid = open(modelname + '.queue', 'w')
+
+        fid.write('#!/bin/bash\n')
+        fid.write('#SBATCH --partition={} \n'.format(self.partition))
+        fid.write('#SBATCH -J {} \n'.format(modelname))
+        fid.write('#SBATCH -o {}.outlog \n'.format(modelname))
+        fid.write('#SBATCH -e {}.errlog \n'.format(modelname))
+        fid.write('#SBATCH --nodes={} \n'.format(self.numnodes))
+        fid.write('#SBATCH --ntasks-per-node={} \n'.format(self.cpuspernode))
+        fid.write('#SBATCH --cpus-per-task={} \n'.format(self.numstreams))
+        fid.write('#SBATCH -t {:02d}:{:02d}:00 \n'.format(int(floor(self.time / 3600)), int(floor(self.time % 3600) / 60)))
+        if (self.email.find('@')>-1):
+            fid.write('#SBATCH --mail-user={} \n'.format(self.email))
+            fid.write('#SBATCH --mail-type=BEGIN,END,FAIL \n\n')
+        fid.write('source /etc/profile\n')
+        fid.write('source /shared/spack/share/spack/setup-env.sh\n')
+        for i in range(len(self.modules)):
+             fid.write('module load {} &> /dev/null\n'.format(self.modules[i]))
+        fid.write('export MPI_GROUP_MAX=64\n\n')
+        fid.write('export MPI_UNBUFFERED_STDIO=true\n\n')
+        fid.write('export PATH="$PATH:/opt/slurm/bin"\n')
+        fid.write('export PATH="$PATH:."\n\n')
+        fid.write('export ISSM_DIR="{}"\n'.format(self.srcpath))
+        fid.write('export ISSM_EXT_DIR="{}"\n'.format(self.extpkgpath))
+        fid.write('source $ISSM_DIR/etc/environment.sh\n')
+        fid.write('cd {}/{}/\n\n'.format(self.executionpath, dirname))
+        fid.write('{} -n {} {}/{} {} {}/{} {}\n'.format(mpiexec, self.nprocs(), self.codepath, issmexec, solution, self.executionpath, dirname, modelname))
+
+        if not io_gather: # concatenate the output files
+            fid.write('cat {}.outbin.* > {}.outbin'.format(modelname, modelname))
+        fid.close()
+
+        # In interactive mode, create a run file, and errlog and outlog file
+        if self.interactive:
+            fid = open(modelname + '.run', 'w')
+            if not isvalgrind:
+                fid.write('{} -np {} {}/{} {} {}/{} {}\n'.format(mpiexec, self.nprocs(), self.codepath, issmexec, solution, self.executionpath, dirname, modelname))
+            else:
+                fid.write('{} -np {} valgrind --leak-check=full {}/{} {} {}/{} {}\n'.format(mpiexec, self.nprocs(), self.codepath, issmexec, solution, self.executionpath, dirname, modelname))
+            if not io_gather: # concatenate the output files
+                fid.write('cat {}.outbin.* > {}.outbin'.format(modelname, modelname))
+            fid.close()
+            fid = open(modelname + '.errlog', 'w') # TODO: Change this to system call (touch <file>)?
+            fid.close()
+            fid = open(modelname + '.outlog', 'w') # TODO: Change this to system call (touch <file>)?
+            fid.close()
+    # }}}
+
+    def UploadQueueJob(self, modelname, dirname, filelist):  # {{{
+        # Compress the files into one zip
+        compressstring = 'tar -zcf {}.tar.gz'.format(dirname)
+        for file in filelist:
+            compressstring += ' {}'.format(file)
+        if self.interactive:
+            compressstring += ' {}.run {}.errlog {}.outlog'.format(modelname, modelname, modelname)
+        subprocess.call(compressstring, shell=True)
+
+        print('uploading input file and queueing script')
+        if self.interactive:
+            directory = '{}/Interactive{}'.format(self.executionpath, self.interactive)
+        else:
+            directory = self.executionpath
+
+        # NOTE: Replacement for issmscpout(self.name, directory, self.login, self.port, ['{}.tar.gz'.format(dirname)])
+        copystring = 'cp {}.tar.gz /efs/issm/tmp'.format(dirname)
+        subprocess.call(copystring, shell=True)
+    # }}}
+
+    def LaunchQueueJob(self, modelname, dirname, filelist, restart, batch):  # {{{
+        if self.interactive:
+            if not isempty(restart):
+                launchcommand = 'cd {}/Interactive{}'.format(self.executionpath, self.interactive)
+            else:
+                launchcommand = 'cd {}/Interactive{} && tar -zxf {}.tar.gz'.format(self.executionpath, self.interactive, dirname)
+        else:
+            if not isempty(restart):
+                launchcommand = 'cd {} && cd {} && sbatch {}.queue'.format(self.executionpath, dirname, modelname)
+            else:
+                launchcommand = 'cd {} && rm -rf {} && mkdir {} && cd {} && cp /efs/issm/tmp/{}.tar.gz . && tar -zxf {}.tar.gz && /opt/slurm/bin/sbatch {}.queue'.format(self.executionpath, dirname, dirname, dirname, dirname, dirname, modelname)
+
+        print('launching solution sequence on remote cluster')
+
+        # NOTE: Replacement for issmssh(self.name, self.login, self.port, launchcommand)
+        subprocess.call('ssh -l {} -i {} {} "{}"'.format(self.login, self.idfile, self.name, launchcommand), shell=True)
+    # }}}
+
+    def Download(self, dirname, filelist):  # {{{
+        # Copy files from cluster to current directory
+    
+        # NOTE: Replacement for issmscpin(self.name, self.login, self.port, directory, filelist)
+        directory = '{}/{}/'.format(self.executionpath, dirname)
+        fileliststr = '{' + ','.join([str(x) for x in filelist]) + '}'
+        downloadcommand = 'scp -i {} {}@{}:{} {}/.'.format(self.idfile, self.login, self.name, os.path.join(directory, fileliststr), os.getcwd())
+        subprocess.call(downloadcommand, shell=True) 
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/fram.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/fram.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/fram.py	(revision 27955)
@@ -0,0 +1,162 @@
+import subprocess
+
+import numpy as np
+
+from fielddisplay import fielddisplay
+try:
+    from fram_settings import fram_settings
+except ImportError:
+    print('You need fram_settings.py to proceed, check presence and sys.path')
+from helpers import *
+from pairoptions import pairoptions
+from IssmConfig import IssmConfig
+from issmscpin import issmscpin
+from issmscpout import issmscpout
+from issmssh import issmssh
+from QueueRequirements import QueueRequirements
+
+
+class fram(object):
+    """FRAM cluster class definition
+
+    This is a SLURM queue
+    The priorities are based on a point system, reservation when reaching 20000 and earning 1 point per min.
+    - Devel queue starts at 19990
+    - Normal starts at 19940
+    - Normal unpri atarts at 19400
+
+    Jobs can be:
+    - normal (4 to 30 nodes, more if asked, 48h max walltime, 60Gb per nodes)
+    - bigmem for big memory nodes (8 512Gb nodes and 2 6Tb nodes, shared nodes, 14days max walltime
+
+    Usage:
+        cluster = fram()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.name = 'fram'
+        self.login = ''
+        self.numnodes = 2
+        self.cpuspernode = 20
+        self.mem = 1.6
+        self.queue = 'normal'
+        self.time = 2 * 60
+        self.codepath = ''
+        self.executionpath = ''
+        self.interactive = 0
+        self.port = []
+        self.accountname = ''
+        self.profiling = 0
+        # Use provided options to change fields
+        options = pairoptions(*args)
+
+        # Initialize cluster using user settings if provided
+        self = fram_settings(self)
+
+        # OK get other fields
+        self = options.AssignObjectFields(self)
+        self.np = self.numnodes * self.cpuspernode
+    # }}}
+
+    def __repr__(self):  # {{{
+        # Display the object
+        s = "class fram object:"
+        s = "%s\n%s" % (s, fielddisplay(self, 'name', 'name of the cluster'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'login', 'login'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'numnodes', 'number of nodes'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'cpuspernode', 'number of nodes per CPUs'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'mem', 'memory per CPU'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'queue', 'name of the queue (normal (D), short, singlenode, multinode, devel)'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'time', 'walltime requested in minutes'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'codepath', 'code path on the cluster'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'executionpath', 'execution path on the cluster'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'interactive', ''))
+        s = "%s\n%s" % (s, fielddisplay(self, 'accountname', 'your cluster account'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'profiling', 'enable profiling if 1 default is 0'))
+        return s
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Queue dictionary gives queue name as key and max walltime and CPUs as var
+        queuedict = {'normal': [2 * 24 * 60, 2048],
+                     'devel': [4 * 60, 2048]}
+        QueueRequirements(queuedict, self.queue, self.np, self.time)
+
+        # Miscellaneous
+        if not self.login:
+            md = md.checkmessage('login empty')
+        if not self.codepath:
+            md = md.checkmessage('codepath empty')
+        if not self.executionpath:
+            md = md.checkmessage('executionpath empty')
+        if self.interactive == 1:
+            md = md.checkmessage('interactive mode not implemented')
+        return self
+    # }}}
+
+    def BuildQueueScript(self, dirname, modelname, solution, io_gather, isvalgrind, isgprof, isdakota, isoceancoupling):  # {{{
+        executable = 'issm.exe'
+        if isdakota:
+            version = IssmConfig('_DAKOTA_VERSION_')[0:2]
+            version = float(version)
+            if version >= 6:
+                executable = 'issm_dakota.exe'
+        if isoceancoupling:
+            executable = 'issm_ocean.exe'
+        # Write queuing script
+        shortname = modelname[0:min(12, len(modelname))]
+        fid = open(modelname + '.queue', 'w')
+
+        fid.write('#!/bin/bash -l\n')
+        fid.write('#SBATCH --job-name=%s \n' % shortname)
+        fid.write('#SBATCH --partition %s \n' % self.queue)
+        fid.write('#SBATCH --nodes=%i' % self.numnodes)
+        fid.write('#SBATCH --ntasks-per-nodes==%i \n' % self.cpuspernode)
+        fid.write('#SBATCH --time=%s\n' % self.time)  #walltime is minutes
+        fid.write('#SBATCH --mem-per-cpu=%iGB\n' % self.mem)  # mem is in GB
+        if (np.mod(self.np, 16) + np.mod(self.np, 20)) == 0:
+            fid.write('#SBATCH --ntask=%i\n' % self.np)
+        fid.write('#SBATCH --account=%s\n' % self.accountname)
+        fid.write('#SBATCH --output %s/%s /%s.outlog \n' % (self.executionpath, dirname, modelname))
+        fid.write('#SBATCH --error %s/%s /%s.errlog \n\n' % (self.executionpath, dirname, modelname))
+
+        fid.write('export ISSM_DIR="%s/../ "\n' % self.codepath)
+        fid.write('module restore system\n')
+        fid.write('module load load Automake/1.15.1-GCCcore-6.3.0\n')
+        fid.write('module load libtool/2.4.6-GCCcore-6.3.0\n')
+        fid.write('module load CMake/3.9.1\n')
+        fid.write('module load PETSc/3.8.0-intel-2017a-Python-2.7.13\n')
+        fid.write('module load ParMETIS/4.0.3-intel-2017a\n')
+        fid.write('cd %s/%s/ \n\n' % (self.executionpath, dirname))
+        if self.profiling:
+            fid.write('module load perf-report\n')
+            fid.write('perf-report mpirun -np %i %s/%s %s %s/%s %s\n' % (self.np, self.codepath, executable, str(solution), self.executionpath, dirname, modelname))
+        else:
+            fid.write('mpirun -np %i %s/%s %s %s/%s %s\n' % (self.np, self.codepath, executable, str(solution), self.executionpath, dirname, modelname))
+        fid.close()
+    # }}}
+
+    def UploadQueueJob(self, modelname, dirname, filelist):  # {{{
+        # Compress the files into one zip
+        compressstring = 'tar -zcf %s.tar.gz ' % dirname
+        for file in filelist:
+            compressstring += ' {}'.format(file)
+        subprocess.call(compressstring, shell=True)
+
+        print('uploading input file and queuing script')
+        issmscpout(self.name, self.executionpath, self.login, self.port, [dirname + '.tar.gz'])
+
+    # }}}
+    def LaunchQueueJob(self, modelname, dirname, filelist, restart, batch):  # {{{
+        print('launching solution sequence on remote cluster')
+        if not isempty(restart):
+            launchcommand = 'cd %s && cd %s && sbatch %s.queue' % (self.executionpath, dirname, modelname)
+        else:
+            launchcommand = 'cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && sbatch %s.queue' % (self.executionpath, dirname, dirname, dirname, dirname, dirname, modelname)
+        issmssh(self.name, self.login, self.port, launchcommand)
+    # }}}
+    def Download(self, dirname, filelist):  # {{{
+        # Copy files from cluster to current directory
+        directory = '%s/%s/' % (self.executionpath, dirname)
+        issmscpin(self.name, self.login, self.port, directory, filelist)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/frontera.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/frontera.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/frontera.m	(revision 27955)
@@ -0,0 +1,202 @@
+%FRONTERA cluster class definition
+%
+%   Usage:
+%      cluster=frontera();
+%      cluster=frontera('np',3);
+%      cluster=frontera('np',3,'login','username');
+
+classdef frontera
+	properties (SetAccess=public)
+		% {{{
+		name          = 'frontera'
+		login         = '';
+		modules        = {'petsc/3.15'};
+		numnodes      = 1;
+		cpuspernode   = 56;
+		port          = 0;
+		queue         = 'normal';
+		codepath      = '';
+		executionpath = '';
+		interactive   = 0;
+		time          = 48*60*60;
+		email         = '';
+	end
+	%}}}
+	methods
+		function cluster=frontera(varargin) % {{{
+
+			%initialize cluster using default settings if provided
+			if (exist('frontera_settings')==2), frontera_settings; end
+
+			%use provided options to change fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    modules: %s',strjoin(cluster.modules,', ')));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    numnodes: %i',cluster.numnodes));
+			disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			disp(sprintf('    np: %i',cluster.nprocs()));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    queue: %s',cluster.queue));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    interactive: %i',cluster.interactive));
+			disp(sprintf('    time: %i',cluster.time));
+			disp(sprintf('    email: %s',cluster.email));
+		end
+		%}}}
+		function numprocs=nprocs(cluster) % {{{
+			%compute number of processors
+			numprocs=cluster.numnodes*cluster.cpuspernode;
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			%https://frontera-portal.tacc.utexas.edu/user-guide/running/
+			available_queues={'small','normal','development'};
+			queue_requirements_time=[48*60*60 48*60*60 2*60*60];
+			queue_requirements_np=[2*56 512*56 40*56];
+
+			QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.nprocs(),cluster.time)
+
+			%Miscellaneous
+			if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+		end
+		%}}}
+		function BuildKrigingQueueScript(cluster,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#$ -N %s\n',modelname);
+			fprintf(fid,'#$ -q %s \n',cluster.queue);
+			fprintf(fid,'#$ -pe one-node-mpi 2-64\n');
+			fprintf(fid,'#$ -R y\n');
+			fprintf(fid,'#$ -m beas\n');
+			fprintf(fid,'#$ -o %s.outlog \n',modelname);
+			fprintf(fid,'#$ -e %s.errlog \n\n',modelname);
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,modelname);
+			fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s\n',cluster.nprocs(),cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			executable='issm.exe';
+			if isdakota,
+				version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				if (version>=6),
+					executable='issm_dakota.exe';
+				end
+			end
+			if isoceancoupling,
+				executable='issm_ocean.exe';
+			end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#SBATCH -J %s \n',modelname);
+			fprintf(fid,'#SBATCH -p %s \n',cluster.queue);
+			fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			fprintf(fid,'#SBATCH -e %s.errlog \n',modelname);
+			fprintf(fid,'#SBATCH -n %i \n',cluster.numnodes*max(cluster.nprocs()/cluster.numnodes,56));
+			fprintf(fid,'#SBATCH -N %i \n',cluster.numnodes);
+			fprintf(fid,'#SBATCH -t %02i:%02i:00 \n\n',floor(cluster.time/3600),floor(mod(cluster.time,3600)/60));
+			for i=1:numel(cluster.modules),
+				fprintf(fid,['module load ' cluster.modules{i} '\n']);
+			end
+
+			if isdakota,
+				fprintf(fid,'export KMP_AFFINITY="granularity=fine,compact,verbose" \n\n');
+			end
+
+			if length(find(cluster.email=='@'))>0
+				fprintf(fid,'#SBATCH --mail-user=%s \n',cluster.email);
+				fprintf(fid,'#SBATCH --mail-type=end \n\n');
+
+				%fprintf(fid,'ssh login1 "mail -s ''SLURM Jobid=${SLURM_JOBID} Name=${SLURM_JOB_NAME} Began on Lonestar 5.'' %s <<< ''Job Started'' " \n\n',cluster.email);
+			end
+
+			fprintf(fid,'export PATH="$PATH:."\n\n');
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+			fprintf(fid,'ibrun -np %i %s/%s %s %s %s\n',cluster.nprocs(),cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.run'],'w');
+				fprintf(fid,'ibrun -np %i %s/%s %s %s %s\n',cluster.nprocs(),executable,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+				if ~io_gather, %concatenate the output files:
+					fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				end
+				fclose(fid);
+				fid=fopen([modelname '.errlog'],'w');
+				fclose(fid);
+				fid=fopen([modelname '.outlog'],'w');
+				fclose(fid);
+			end
+		end %}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			if cluster.interactive,
+				compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch) % {{{
+
+			disp('launching solution sequence on remote cluster');
+			if ~isempty(restart)
+				launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && sbatch ' modelname '.queue '];
+			else
+				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && sbatch ' modelname '.queue '];
+			end
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/gemini.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/gemini.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/gemini.m	(revision 27955)
@@ -0,0 +1,108 @@
+%GEMINI class definition
+%
+%   Usage:
+%      cluster=gemini();
+%      cluster=gemini('np',3);
+%      cluster=gemini('np',3,'login','username');
+
+classdef gemini
+	properties (SetAccess=public)
+	% {{{
+		name='gemini'
+		login='username';
+		np=50;
+		port=0;
+		queue='debug';
+		time=60;
+		codepath='/workg/edw/issm-2.0/bin'
+		executionpath='/workg/edw/Testing/Execution'
+	%}}}
+	end
+	methods
+		function cluster=gemini(varargin) % {{{
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    np: %i',cluster.np));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    queue: %s',cluster.queue));
+			disp(sprintf('    time: %i',cluster.time));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			available_queues={'debug','shortg','longg'};
+			queue_requirements_time=[60 180 720];
+			queue_requirements_np=[50 50 50];
+
+			QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,cluster.time)
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/sh\n');
+			fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); %walltime is in seconds.
+			fprintf(fid,'#PBS -N %s\n',modelname);
+			fprintf(fid,'#PBS -l ncpus=%i\n',cluster.np);
+			if ~isempty(queue),
+				fprintf(fid,'#PBS -q %s\n',cluster.queue);
+			end
+			fprintf(fid,'#PBS -o %s.outlog \n',modelname);
+			fprintf(fid,'#PBS -e %s.errlog \n',modelname);
+
+			fprintf(fid,'export PBS_O_WORKDIR=%s\n',[cluster.executionpath '/' dirname]);
+			fprintf(fid,'cd $PBS_O_WORKDIR\n');
+			fprintf(fid,'export OMP_NUM_THREADS=1\n');
+			fprintf(fid,'dplace -s1 -c0-%i mpiexec -np %i %s/issm.exe %s %s %s',cluster.np-1,cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			fclose(fid);
+
+		end
+		%}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			if cluster.interactive,
+				compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart) % {{{
+
+			disp('launching solution sequence on remote cluster');
+			if ~isempty(restart)
+				launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+			else
+				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+			end
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/generic.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/generic.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/generic.js	(revision 27955)
@@ -0,0 +1,371 @@
+// Execute script in strict mode
+'use strict';
+/**
+ * generic - Class that allows for sending requests to server and handling response or errors
+ *
+ *	Usage:
+ *		generic = new generic();
+ *
+ *	Todo:
+ *		Convert to ES6 class
+ */
+function generic() {
+	// Retrieve options and apply to properties 
+	// {{{
+	let args 	= Array.prototype.slice.call(arguments);
+	let options = new pairoptions(args.slice(0, args.length));
+	
+	this.url			= options.getfieldvalue('url', '');
+	this.np				= options.getfieldvalue('np', 3);
+	this.codeversion	= options.getfieldvalue('codeversion', 20486);
+	this.codepath		= options.getfieldvalue('codepath', 'issmdir/bin');
+	this.executionpath	= options.getfieldvalue('executionpath', 'issmdir/execution');
+	//}}}
+	
+	
+	// Methods
+	//{{{
+	this.disp = function() { //{{{
+		console.log(sprintf('   generic class echo:'));
+		console.log(sprintf('    url: %s', this.url));
+		console.log(sprintf('    np: %i', this.np));
+		console.log(sprintf('    codepath: %s', this.codepath));
+		console.log(sprintf('    executionpath: %s', this.executionpath));
+	}; //}}}
+	
+	this.classname = function() { //{{{
+		return 'generic';
+	}; //}}}
+	
+	this.checkconsistency = function(md, solution, analyses) { //{{{
+		if (cluster.np < 1) {
+			md.checkmessage('Number of processors should be at least 1!');
+		}
+		if (isNaN(cluster.np)) {
+			md.checkmessage('Number of processors NaN!');
+		}
+	}; //}}}
+	
+	this.BuildQueueScript = function(cluster, dirname, modelname, solution, io_gather, isvalgrind, isgprof, isdakota) { //{{{
+		//write queuing script 
+		//what is the executable being called? 
+		executable 	= 'issm.exe';
+		
+		fid 		= fopen(modelname + '.queue','w');
+		fprintf(fid, '#!%s\n', cluster.shell);
+		fprintf(fid, 'mpiexec -np %i %s/%s %s %s %s 2> %s.errlog >%s.outlog ', cluster.np, cluster.codepath, executable, EnumToString(solution), cluster.executionpath + '/' + dirname, modelname, modelname, modelname);					
+		fclose(fid);
+	}; //}}}
+	
+	this.UploadAndRun = function(md, fid, toolkitsstring, solutionstring, name, runtimename, successCallback, errorCallback, solveButtonId, callout, withProgressBar) { //{{{
+		/* Local constants */
+		let PROGRESS_BAR_ID 				= 'solve-progress-bar';
+		let PROGRESS_BAR_TEXT_PERCENTAGE_ID = 'progress-bar-text-percentage';		
+		
+		/* Local variables */
+		let hasCallout 					= false;
+		let isProgressBarLoaded			= false;
+		let progressBar					= {};
+		let progressBarTextPercentage 	= {};
+		let request 					= {};
+		let solveButton 				= $(solveButtonId);
+		let solveButtonText 			= !vesl.helpers.isEmptyOrUndefined(solveButton) ? solveButton.text() : ''; // Save initial solve button text
+		
+		/* Local functions */
+		// NOTE: After conversion of generic to ES6 class, these should be class methods
+		function loadProgressBar() {
+			callout.setContent('\
+				<div class="progress-bar-wrapper">\
+					<progress id="' + PROGRESS_BAR_ID + '" value="0" max="100"></progress>\
+					<div class="progress-bar-text">\
+						<span id="' + PROGRESS_BAR_TEXT_PERCENTAGE_ID + '">0</span>\
+						<span>%</span>\
+					</div>\
+				</div>\
+			');
+			
+			progressBar 				= $('#' + PROGRESS_BAR_ID);
+			progressBarTextPercentage 	= $('#' + PROGRESS_BAR_TEXT_PERCENTAGE_ID);
+			isProgressBarLoaded 		= true;
+		}
+		
+		function setProgressBar(progress) {
+			progressBar.val(progress);
+			progressBarTextPercentage.text(progress);
+		}
+		
+		// Check certain arguments
+		hasCallout = !vesl.helpers.isEmptyOrUndefined(callout);		
+		
+		// Check that we have a connection
+		if (!navigator.onLine) {
+			console.log('Error: no connection!');
+			if (hasCallout) {
+				callout.set('No connection!', '');
+			} else {
+				solveButton.text('No connection!').prop('disabled', false);
+			}
+			errorCallback();
+			return;
+		}
+		
+		// Create request
+		request = new XMLHttpRequest();
+		request.open('POST', this.url, true);
+		
+		// Set request properties
+		request.position 	 = 0; // Keep track of current parsing position in repsonseText
+		request.timeout 	= 1000 * 60 * 10; // in milliseconds; NOTE: Under current implementation, this should match 'Timeout' option in Apache conf (/etc/apache2/apache2.conf)
+		request.resultBegin = false;
+		
+		request.ontimeout = function(event) { //{{{
+			console.log('Error: timeout!');
+			
+			if (hasCallout) {
+				callout.set(vesl.ERROR_HEADER_GENERAL, '<p>Request timeout! ' + vesl.ERROR_CONTENT_TRY_AGAIN + '</p>');
+			} else {
+				solveButton.text('Timeout!').prop('disabled', false);
+			}
+			
+			errorCallback();
+		}; //}}}
+		
+		request.onerror = function(event) { //{{{
+			console.log('Error: could not run!');
+			
+			if (hasCallout) {
+				callout.set(vesl.ERROR_HEADER_GENERAL, '<p>Something went wrong. ' + vesl.ERROR_CONTENT_TRY_AGAIN + '</p>');
+			} else {
+				solveButton.text('Could not run!').prop('disabled', false);
+			}
+			
+			errorCallback();
+		}; //}}}
+		
+		request.upload.onprogress = function(event) { //{{{
+			let progress = (event.loaded / event.total * 100).toFixed(0);
+			
+			if (hasCallout) {
+				callout.setHeader('Sending request...');
+				if (withProgressBar) {
+					if (!isProgressBarLoaded) {
+						loadProgressBar();
+					}
+					setProgressBar(progress);
+				} else {
+					callout.setContent('<p>' + progress + '%</p>');
+				}
+			} else {
+				solveButton.text('Sending: ' + progress + '%');
+			}
+        }; //}}}
+        
+		request.onprogress = function(event) { //{{{
+			/* Local variables */
+			let progress 	= 0;
+
+			// Receive updates by parsing message length as a 32-bit hex string of form 0x*09ABCDEF))
+			let startIndex 	= request.position;
+			let endIndex 	= request.position + 10;
+			
+			if (request.responseText.length >= endIndex) { // Ensure entire hex string is loaded
+				let chunkSize = parseInt(request.responseText.slice(startIndex, endIndex));
+				
+				startIndex 	= endIndex;
+				endIndex 	= startIndex + chunkSize;
+				
+				if (chunkSize >= 1024) { // Arbitrary maximium size of message (Must be below minimium size of model results)
+					progress = ((request.responseText.length - request.position) / chunkSize * 100).toFixed(0);
+					if (hasCallout) {
+						callout.setHeader('Downloading result...');
+						if (withProgressBar) {
+							setProgressBar(progress);
+						} else {
+							callout.setContent('<p>' + progress + '%</p>');
+						}
+					} else {
+						solveButton.text('Downloading: ' + progress + '%').prop('disabled', true);
+					}
+				} else if (request.responseText.length >= endIndex) { // Ensure entire chunk is loaded
+					if (request.resultBegin) {
+						return;
+					}
+					chunk = request.responseText.slice(startIndex, endIndex)
+					if (chunk == 'RESULT_BEGIN') {
+						progress = 100;
+						request.resultBegin = true;
+					} else {
+						progress = parseInt(chunk);
+					}
+					if (hasCallout) {
+						callout.setHeader('Computing...');
+						if (withProgressBar) {
+							setProgressBar(progress);
+						} else {
+							callout.setContent('<p>' + progress + '%</p>');
+						}
+					} else {
+						solveButton.text('Computing: ' + progress + '%').prop('disabled', true);
+					}
+					request.position = endIndex;
+				}
+			}
+		}; //}}}
+		
+		request.onload = function(event) { //{{{
+			/* Local variables */
+			//{{{
+			let buffer 				= {};
+// 			let bufferInflated		= {};
+			let responseText 		= '';
+			//}}}
+			
+			// TODO: Get context to this.str2ab or otherwise declare it in order to avoid duplication
+			function str2ab(str) { //{{{
+				let buffer = new Uint8Array(str.length);
+				for (let i = 0, strLen = str.length; i < strLen; ++i) {
+					buffer[i] = str.charCodeAt(i);
+				}
+				return buffer;
+			} //}}}
+			
+			try {
+				//Scan through buffer until progress updates stop and 'RESULT_BEGIN' string is received
+				let startIndex 	= request.position;
+				let endIndex 	= request.position + 10;
+				let chunkSize = 0;
+				let chunk = 0;
+				while (!request.resultBegin && chunk != 'RESULT_BEGIN') {
+					chunkSize = parseInt(request.responseText.slice(startIndex, endIndex));
+					startIndex 	= endIndex;
+					endIndex 	= startIndex + chunkSize;
+					chunk = request.responseText.slice(startIndex, endIndex);
+					startIndex 	= endIndex;
+					endIndex 	= startIndex + 10;
+					request.position = startIndex;
+				}
+
+				responseText 	= window.atob(request.responseText.slice(request.position + 10).replace(/\s/g, ''));
+				buffer 			= str2ab(responseText);
+/*
+	            bufferInflated 	= UZIP.inflate(buffer);
+				console.log('bufferInflated.length : ' + bufferInflated.length);
+*/
+	            
+/*
+				returnBuffer 		= new Uint8Array(buffer);
+				returnBufferSize 	= returnBuffer.byteLength;
+*/
+			
+				//Write result buffer to file for debugging. Filename and MIME type are optional.
+				//writetofile(returnBuffer, 'resultBuffer', 'application/octet-stream');
+// 				md.results = parseresultsfrombuffer(md, bufferInflated, bufferInflated.length);
+				md.results = parseresultsfrombuffer(md, buffer, buffer.length);
+				
+				// Let front end script handle changes to callout
+				if (hasCallout) {
+					callout.set('Success!', '<p>Request successful</p>');
+				} else {
+					solveButton.text(solveButtonText).prop('disabled', false);
+				}
+				successCallback();
+			} catch (e) {
+				console.log(e);
+				if (vesl.strings.startsWith(responseText, 'Error')) {
+					if (hasCallout) {
+						callout.set(vesl.ERROR_HEADER_GENERAL, '<p>Something went wrong. ' + vesl.ERROR_CONTENT_TRY_AGAIN + '</p>');
+					} else {
+						solveButton.text('ISSM error!').prop('disabled', false);
+					}
+				} else {
+					if (hasCallout) {
+						callout.set(vesl.ERROR_HEADER_GENERAL, '<p>Something went wrong. ' + vesl.ERROR_CONTENT_TRY_AGAIN + '</p>');
+					} else {
+						solveButton.text('JS error!').prop('disabled', false);
+					}
+				}
+				errorCallback();
+			}
+		}; //}}}
+		
+		request.responseType = 'text';
+		
+		/* Construct request */
+		let npbuffer = this.str2ab(md.cluster.np.toString());
+		npbuffer = UZIP.deflate(npbuffer);
+		let nplength = new Uint32Array(1);
+		nplength[0] = npbuffer.byteLength;
+		
+		let codeversionbuffer = this.str2ab(md.cluster.codeversion.toString());
+		codeversionbuffer = UZIP.deflate(codeversionbuffer);
+		let codeversionlength = new Uint32Array(1);
+		codeversionlength[0] = codeversionbuffer.byteLength;
+		
+		let runtimenamebuffer = this.str2ab(runtimename);
+		runtimenamebuffer = UZIP.deflate(runtimenamebuffer);
+		let runtimenamelength = new Uint32Array(1);
+		runtimenamelength[0] = runtimenamebuffer.byteLength;
+		
+		let namebuffer = this.str2ab(name);
+		namebuffer = UZIP.deflate(namebuffer);
+		let namelength = new Uint32Array(1);
+		namelength[0] = namebuffer.byteLength;
+		
+		let toolkitsbuffer = this.str2ab(toolkitsstring);
+		toolkitsbuffer = UZIP.deflate(toolkitsbuffer);
+		let toolkitslength = new Uint32Array(1);
+		toolkitslength[0] = toolkitsbuffer.byteLength;
+		
+		let solutionbuffer = this.str2ab(solutionstring);
+		solutionbuffer = UZIP.deflate(solutionbuffer);
+		let solutionlength = new Uint32Array(1);
+		solutionlength[0] = solutionbuffer.byteLength;
+		
+		let binbuffer = new Uint8Array(fid.rawbuffer()); //seems that 16 bits length could be incompatible.
+		binbuffer = UZIP.deflate(binbuffer);
+		let binlength = new Uint32Array(1);
+		binlength[0] = binbuffer.byteLength;
+		
+		let data = new Blob(
+			[
+				nplength,
+				npbuffer,
+				codeversionlength,
+				codeversionbuffer,
+				runtimenamelength,
+				runtimenamebuffer,
+				namelength,
+				namebuffer,
+				toolkitslength,
+				toolkitsbuffer,
+				solutionlength,
+				solutionbuffer,
+				binlength,
+				binbuffer
+			]
+		);
+
+		// Send request
+		request.send(data);
+		
+		if (hasCallout) {
+			callout.set('Connecting...', '');
+		} else {
+			solveButton.text('Connecting...').prop('disabled', true);
+		}
+	}; //}}}
+	
+	this.ab2str = function(buf) { //{{{
+		return String.fromCharCode.apply(null, new Uint16Array(buf));
+	}; //}}}
+	
+	this.str2ab = function(str) { //{{{
+		let buf = new Uint8Array(str.length);
+		
+		for (let i = 0, strLen = str.length; i < strLen; i++) {
+			buf[i] = str.charCodeAt(i);
+		}
+		
+		return buf;
+	}; //}}}
+} 
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/generic.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/generic.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/generic.m	(revision 27955)
@@ -0,0 +1,385 @@
+%GENERIC cluster class definition
+%
+%   Usage:
+%      cluster=generic('name','astrid','np',3);
+%      cluster=generic('name',oshostname(),'np',3,'login','username');
+%
+%   TODO:
+%   - Add support for restart to Windows (under MSYS2), then activate tests 125 
+%   and 126 in test suite
+%
+
+classdef generic
+	properties (SetAccess=public)
+		% {{{
+		name          = '';
+		login         = '';
+		np            = 1;
+		npocean       = 1;
+		port          = 0;
+		interactive   = 1;
+		codepath      = [issmdir() '/bin'];
+		etcpath       = [issmdir() '/etc'];
+		executionpath = [issmdir() '/execution'];
+		valgrind      = [issmdir() '/externalpackages/valgrind/install/bin/valgrind'];
+		valgrindlib   = [issmdir() '/externalpackages/valgrind/install/lib/libmpidebug.so'];
+		valgrindsup   = [issmdir() '/externalpackages/valgrind/issm.supp'];
+		verbose       = 1;
+		shell         = '/bin/sh';
+		%}}}
+	end
+	methods
+		function cluster=generic(varargin) % {{{
+
+			%Change the defaults if ispc
+			if ispc,
+				cluster.codepath      = [issmdir() '\bin'];
+				cluster.etcpath       = [issmdir() '\etc'];
+				cluster.executionpath = [issmdir() '\execution'];
+			end
+
+			%use provided options to change fields
+			options=pairoptions(varargin{:});
+
+			%get name
+			cluster.name=getfieldvalue(options,'name',oshostname());
+
+			%initialize cluster using user settings if provided
+			if (exist([cluster.name '_settings'])==2), eval([cluster.name '_settings']); end
+
+			%OK get other fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    np: %i',cluster.np));
+			disp(sprintf('    npocean: %i',cluster.npocean));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    etcpath: %s',cluster.etcpath));
+			disp(sprintf('    valgrind: %s',cluster.valgrind));
+			disp(sprintf('    valgrindlib: %s',cluster.valgrindlib));
+			disp(sprintf('    valgrindsup: %s',cluster.valgrindsup));
+			disp(sprintf('    verbose: %s',cluster.verbose));
+			disp(sprintf('    shell: %s',cluster.shell));
+		end
+		%}}}
+		function numprocs=nprocs(cluster) % {{{
+			numprocs=cluster.np;
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+			if cluster.np<1
+				md = checkmessage(md,['number of processors should be at least 1']);
+			end
+			if isnan(cluster.np),
+				md = checkmessage(md,'number of processors should not be NaN!');
+			end
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+			% Which executable are we calling?
+			executable='issm.exe'; % default
+
+			if isdakota,
+				version=IssmConfig('_DAKOTA_VERSION_');
+				version=str2num(version(1:3));
+				if (version>=6),
+					executable='issm_dakota.exe';
+				end
+			end
+			if isoceancoupling,
+				executable='issm_ocean.exe';
+			end
+
+			if ~ispc(),
+				% Check that executable exists at the right path
+				if ~exist([cluster.codepath '/' executable],'file'),
+					error(['File ' cluster.codepath '/' executable ' does not exist']);
+				end
+
+				% Process codepath and prepend empty spaces with \ to avoid errors in queuing script
+				codepath=strrep(cluster.codepath,' ','\ ');
+
+				% Write queuing script
+				fid=fopen([modelname '.queue'],'w');
+				fprintf(fid,'#!%s\n',cluster.shell);
+				if isvalgrind,
+					%Add --gen-suppressions=all to get suppression lines
+					%fprintf(fid,'LD_PRELOAD=%s \\\n',cluster.valgrindlib); it could be deleted
+					if ismac,
+						if IssmConfig('_HAVE_MPI_'),
+							fprintf(fid,'mpiexec -np %i %s --leak-check=full --leak-check=full --show-leak-kinds=all --error-limit=no --dsymutil=yes --suppressions=%s %s/%s %s %s %s 2> %s.errlog > %s.outlog ',...
+							cluster.np,cluster.valgrind,cluster.valgrindsup,cluster.codepath,executable,solution,[cluster.executionpath '/' dirname], modelname,modelname,modelname);
+						else
+							fprintf(fid,'%s --leak-check=full --dsymutil=yes --error-limit=no --leak-check=full --show-leak-kinds=all --suppressions=%s %s/%s %s %s %s 2> %s.errlog > %s.outlog',...
+							cluster.valgrind,cluster.valgrindsup,cluster.codepath,executable,solution,[cluster.executionpath '/' dirname], modelname,modelname,modelname);
+						end
+					else
+						if IssmConfig('_HAVE_MPI_'),
+							fprintf(fid,'mpiexec -np %i %s --leak-check=full --error-limit=no --suppressions=%s %s/%s %s %s %s 2> %s.errlog > %s.outlog',...
+							cluster.np,cluster.valgrind,cluster.valgrindsup,cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname,modelname,modelname);
+						else
+							fprintf(fid,'%s --leak-check=full --error-limit=no --suppressions=%s %s/%s %s %s %s 2> %s.errlog > %s.outlog',...
+							cluster.valgrind,cluster.valgrindsup,cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname,modelname,modelname);
+						end
+					end
+				elseif isgprof,
+					fprintf(fid,'\n gprof %s/issm.exe gmon.out > %s.performance',cluster.codepath,modelname);
+				else
+					if cluster.interactive
+						if IssmConfig('_HAVE_MPI_'),
+							fprintf(fid,'mpiexec -np %i %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+						else
+							fprintf(fid,'%s/%s %s %s %s',cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+						end
+					else
+						if IssmConfig('_HAVE_MPI_'),
+							fprintf(fid,'mpiexec -np %i %s/%s %s %s %s 2> %s.errlog > %s.outlog &',cluster.np,cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname,modelname,modelname);
+						else
+							fprintf(fid,'%s/%s %s %s %s 2> %s.errlog > %s.outlog &',cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname,modelname,modelname);
+						end
+					end
+				end
+				if ~io_gather, %concatenate the output files:
+					fprintf(fid,'\ncat %s.outbin.* > %s.outbin',modelname,modelname);
+				end
+				fclose(fid);
+
+			else % Windows
+				fid=fopen([modelname '.bat'],'w');
+				fprintf(fid,'@echo off\n');
+
+				if cluster.np>1,
+					fprintf(fid,'"C:\\Program Files\\Microsoft MPI\\Bin\\mpiexec.exe" -n %i "%s/%s" %s ./ %s',cluster.np,cluster.codepath,executable,solution,modelname);
+				else
+					fprintf(fid,'"%s\\%s" %s ./ %s',cluster.codepath,executable,solution,modelname);
+				end
+				fclose(fid);
+			end
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.errlog'],'w'); fclose(fid);
+				fid=fopen([modelname '.outlog'],'w'); fclose(fid);
+			end
+		end
+		%}}}
+		function BuildQueueScriptMultipleModels(cluster,dirname,modelname,solution,dirnames,modelnames,nps) % {{{
+
+			%some checks:
+			if isempty(modelname), error('BuildQueueScriptMultipleModels error message: need a non empty model name!');end
+
+			%what is the executable being called?
+			executable='issm_slc.exe';
+
+			if ispc(), error('BuildQueueScriptMultipleModels not support yet on windows machines');end;
+
+			%write queuing script
+			fid=fopen([modelname '.queue'],'w');
+
+			fprintf(fid,'#!%s\n',cluster.shell);
+
+			%number of cpus:
+			mpistring=sprintf('mpiexec -np %i ',cluster.np);
+
+			%executable:
+			mpistring=[mpistring sprintf('%s/%s ',cluster.codepath,executable)];
+
+			%solution name:
+			mpistring=[mpistring sprintf('%s ',solution)];
+
+			%execution directory and model name:
+			mpistring=[mpistring sprintf('%s/%s %s',cluster.executionpath,dirname,modelname)];
+
+			%inform main executable of how many icecaps, glaciers and earth models are being run:
+			mpistring=[mpistring sprintf(' %i ',length(dirnames))];
+
+			%icecaps, glaciers and earth location, names and number of processors associated:
+			for i=1:length(dirnames),
+			mpistring=[mpistring sprintf(' %s/%s %s %i ',cluster.executionpath,dirnames{i},modelnames{i},nps{i})];
+			end
+
+			%log files:
+			if ~cluster.interactive,
+				mpistring=[mpistring sprintf('2> %s.errlog> %s.outlog',modelname,modelname)];
+			end
+
+			%write this long string to disk:
+			fprintf(fid,mpistring);
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.errlog'],'w'); fclose(fid);
+				fid=fopen([modelname '.outlog'],'w'); fclose(fid);
+			end
+		end
+		%}}}
+		function BuildQueueScriptIceOcean(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
+
+			%write queuing script
+			%what is the executable being called?
+			executable='issm_ocean.exe';
+
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!%s\n',cluster.shell);
+			if ~isvalgrind,
+				fprintf(fid,'mpiexec -np %i %s/%s %s %s %s : -np %i ./mitgcmuv\n',cluster.np,cluster.codepath,executable,solution,cluster.executionpath,modelname,cluster.npocean);
+
+			else
+				fprintf(fid,'mpiexec -np %i %s --leak-check=full --error-limit=no --dsymutil=yes --suppressions=%s  %s/%s %s %s %s : -np %i ./mitgcmuv\n',...
+					cluster.np,cluster.valgrind,cluster.valgrindsup,cluster.codepath,executable,solution,cluster.executionpath,modelname,cluster.npocean);
+			end
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.errlog'],'w'); fclose(fid);
+				fid=fopen([modelname '.outlog'],'w'); fclose(fid);
+			end
+		end
+		%}}}
+		function BuildKrigingQueueScript(cluster,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+
+			%write queuing script
+			if ~ispc(),
+
+				fid=fopen([modelname '.queue'],'w');
+				fprintf(fid,'#!/bin/sh\n');
+				if ~isvalgrind,
+					if cluster.interactive
+						fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s ',cluster.np,cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+					else
+						fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s 2> %s.errlog >%s.outlog ',cluster.np,cluster.codepath,[cluster.executionpath '/' modelname],modelname,modelname,modelname);
+					end
+				elseif isgprof,
+					fprintf(fid,'\n gprof %s/kriging.exe gmon.out > %s.performance',cluster.codepath,modelname);
+				else
+					%Add --gen-suppressions=all to get suppression lines
+					%fprintf(fid,'LD_PRELOAD=%s \\\n',cluster.valgrindlib); it could be deleted
+					fprintf(fid,'mpiexec -np %i %s --leak-check=full --suppressions=%s %s/kriging.exe %s %s 2> %s.errlog >%s.outlog ',...
+						cluster.np,cluster.valgrind,cluster.valgrindsup,cluster.codepath,[cluster.executionpath '/' modelname],modelname,modelname,modelname);
+				end
+				if ~io_gather, %concatenate the output files:
+					fprintf(fid,'\ncat %s.outbin.* > %s.outbin',modelname,modelname);
+				end
+				fclose(fid);
+
+			else % Windows
+
+				fid=fopen([modelname '.bat'],'w');
+				fprintf(fid,'@echo off\n');
+				if cluster.interactive
+					fprintf(fid,'"%s/issm.exe" %s "%s" %s ',cluster.codepath,solution,[cluster.executionpath '/' modelname],modelname);
+				else
+					fprintf(fid,'"%s/issm.exe" %s "%s" %s 2> %s.errlog >%s.outlog',...
+						cluster.codepath,solution,[cluster.executionpath '/' modelname],modelname,modelname,modelname);
+				end
+				fclose(fid);
+			end
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.errlog'],'w'); fclose(fid);
+				fid=fopen([modelname '.outlog'],'w'); fclose(fid);
+			end
+		end
+		%}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			if ~ispc,
+
+				%compress the files into one zip.
+				compressstring=['tar -zcf ' dirname '.tar.gz '];
+				for i=1:numel(filelist),
+					if ~exist(filelist{i},'file')
+						error(['File ' filelist{i} ' not found']);
+					end
+					compressstring = [compressstring ' ' filelist{i}];
+				end
+				if cluster.interactive,
+					compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+				end
+				system(compressstring);
+
+				if cluster.verbose, disp('uploading input file and queuing script'); end
+				issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+			end
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch) % {{{
+
+			if ~ispc,
+				%figure out what shell extension we will use:
+				if isempty(strfind(cluster.shell,'csh')),
+					shellext='sh';
+				else
+					shellext='csh';
+				end
+
+				if cluster.verbose, disp('launching solution sequence on remote cluster'); end
+
+				if ~isempty(restart)
+					launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && cd ' dirname ' && source ' modelname '.queue '];
+				else
+					if ~batch,
+						launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && source  ' modelname '.queue '];
+					else
+						launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz '];
+					end
+				end
+				issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+			else
+				system([modelname '.bat']);
+			end
+
+		end %}}}
+		function LaunchQueueJobIceOcean(cluster,modelname,dirname,filelist,restart,batch) % {{{
+
+			if ~ispc,
+
+				%figure out what shell extension we will use:
+				if isempty(strfind(cluster.shell,'csh')),
+					shellext='sh';
+				else
+					shellext='csh';
+				end
+
+				if cluster.verbose, disp('launching solution sequence on remote cluster'); end
+
+				if ~isempty(restart)
+					launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && cd ' dirname ' && source ' modelname '.queue '];
+				else
+					if ~batch,
+					launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && tar -zxf ' dirname '.tar.gz  && source  ' modelname '.queue '];
+					else
+					launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz '];
+					end
+				end
+				issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+			else
+				system([modelname '.bat']);
+			end
+
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			if ispc(),
+				%do nothing
+				return;
+			end
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/generic.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/generic.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/generic.py	(revision 27955)
@@ -0,0 +1,226 @@
+from subprocess import call
+
+from fielddisplay import fielddisplay
+from helpers import *
+try:
+    from generic_settings import generic_settings
+except ImportError:
+    #print('Warning: generic.py: generic_settings.py not found, default will be used')
+    pass
+from MatlabFuncs import *
+from IssmConfig import IssmConfig
+from issmdir import issmdir
+from issmscpin import issmscpin
+from issmscpout import issmscpout
+from issmssh import issmssh
+from pairoptions import pairoptions
+
+
+class generic(object):
+    """generic cluster class definition
+
+    Usage:
+        cluster = generic('name', 'astrid', 'np', 3)
+        cluster = generic('name', gethostname(), 'np', 3, 'login', 'username')
+    """
+
+    def __init__(self, *args):  # {{{
+        self.name = ''
+        self.login = ''
+        self.np = 1
+        self.port = 0
+        self.interactive = 1
+        self.codepath = IssmConfig('ISSM_PREFIX')[0] + '/bin'
+        self.executionpath = issmdir() + '/execution'
+        self.valgrind = issmdir() + '/externalpackages/valgrind/install/bin/valgrind'
+        self.valgrindlib = issmdir() + '/externalpackages/valgrind/install/lib/libmpidebug.so'
+        self.valgrindsup = [issmdir() + '/externalpackages/valgrind/issm.supp']  # add any .supp in list form as needed
+        self.verbose = 1
+        self.shell = '/bin/sh'
+
+        # Use provided options to change fields
+        options = pairoptions(*args)
+
+        # Get name
+        self.name = oshostname()
+
+        # Initialize cluster using user settings if provided
+        try:
+            self = generic_settings(self)
+        except NameError:
+            # print('generic_settings.py not found, using default settings')
+            pass
+
+        # OK get other fields
+        self = options.AssignObjectFields(self)
+    # }}}
+
+    def __repr__(self):  # {{{
+        # Display the object
+        s = 'class \'{}\' object \'{}\' = \n'.format(type(self), 'self')
+        s += '    name: {}\n'.format(self.name)
+        s += '    login: {}\n'.format(self.login)
+        s += '    np: {}\n'.format(self.np)
+        s += '    port: {}\n'.format(self.port)
+        s += '    codepath: {}\n'.format(self.codepath)
+        s += '    executionpath: {}\n'.format(self.executionpath)
+        s += '    valgrind: {}\n'.format(self.valgrind)
+        s += '    valgrindlib: {}\n'.format(self.valgrindlib)
+        s += '    valgrindsup: {}\n'.format(self.valgrindsup)
+        s += '    verbose: {}\n'.format(self.verbose)
+        s += '    shell: {}\n'.format(self.shell)
+        return s
+    # }}}
+
+    def nprocs(self):  # {{{
+        return self.np
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if self.np < 1:
+            md.checkmessage('number of processors should be at least 1')
+        if np.isnan(self.np):
+            md.checkmessage('number of processors should not be NaN!')
+
+        return md
+    # }}}
+
+    def BuildQueueScript(self, dirname, modelname, solution, io_gather, isvalgrind, isgprof, isdakota, isoceancoupling):  # {{{
+        # Which executable are we calling?
+        executable = 'issm.exe'  # default
+
+        if isdakota:
+            version = IssmConfig('_DAKOTA_VERSION_')
+            version = float(version[0])
+            if version >= 6:
+                executable = 'issm_dakota.exe'
+        if isoceancoupling:
+            executable = 'issm_ocean.exe'
+
+        # Write queuing script
+        if not ispc():
+            fid = open(modelname + '.queue', 'w')
+            fid.write('#!/bin/sh\n')
+            if not isvalgrind:
+                if self.interactive:
+                    if IssmConfig('_HAVE_MPI_')[0]:
+                        fid.write('mpiexec -np {} {}/{} {} {}/{} {}'.format(self.np, self.codepath, executable, solution, self.executionpath, dirname, modelname))
+                    else:
+                        fid.write('{}/{} {} {}/{} {}'.format(self.codepath, executable, solution, self.executionpath, dirname, modelname))
+                else:
+                    if IssmConfig('_HAVE_MPI_')[0]:
+                        fid.write('mpiexec -np {} {}/{} {} {}/{} {} 2> {}.errlog > {}.outlog'.
+                                  format(self.np, self.codepath, executable, solution, self.executionpath, dirname, modelname, modelname, modelname))
+                    else:
+                        fid.write('{}/{} {} {}/{} {} 2> {}.errlog > {}.outlog '.
+                                  format(self.codepath, executable, solution, self.executionpath, dirname, modelname, modelname, modelname))
+            elif isgprof:
+                fid.write('\n gprof {}/{} gmon.out > {}.performance'.format(self.codepath, executable, modelname))
+            else:
+                #Add --gen -suppressions = all to get suppression lines
+                #fid.write('LD_PRELOAD={} \\\n'.format(self.valgrindlib)) it could be deleted
+                supstring = ''
+                for supfile in self.valgrindsup:
+                    supstring += ' --suppressions=' + supfile
+
+                if IssmConfig('_HAVE_MPI_')[0]:
+                    fid.write('mpiexec -np {} {} --leak-check=full {} {}/{} {} {}/{} {} 2> {}.errlog > {}.outlog '.
+                              format(self.np, self.valgrind, supstring, self.codepath, executable, solution, self.executionpath, dirname, modelname, modelname, modelname))
+                else:
+                    fid.write('{} --leak-check=full {} {}/{} {} {}/{} {} 2> {}.errlog > {}.outlog '.
+                              format(self.valgrind, supstring, self.codepath, executable, solution, self.executionpath, dirname, modelname, modelname, modelname))
+
+            if not io_gather:  #concatenate the output files:
+                fid.write('\ncat {}.outbin .*>{}.outbin'.format(modelname, modelname))
+            fid.close()
+
+        else:  # Windows
+            fid = open(modelname + '.bat', 'w')
+            fid.write('@echo off\n')
+            if self.interactive:
+                fid.write('"{}/{}" {} "{}/{}" {} '.format(self.codepath, executable, solution, self.executionpath, dirname, modelname))
+            else:
+                fid.write('"{}/{}" {} "{}/{}" {} 2>{}.errlog>{}.outlog'.
+                          format(self.codepath, executable, solution, self.executionpath, dirname, modelname, modelname, modelname))
+            fid.close()
+
+            #in interactive mode, create a run file, and errlog and outlog file
+        if self.interactive:
+            fid = open(modelname + '.errlog', 'w')
+            fid.close()
+            fid = open(modelname + '.outlog', 'w')
+            fid.close()
+    # }}}
+
+    def BuildKrigingQueueScript(self, modelname, solution, io_gather, isvalgrind, isgprof):  # {{{
+        #write queuing script
+        if not ispc():
+            fid = open(modelname + '.queue', 'w')
+            fid.write('#!/bin/sh\n')
+            if not isvalgrind:
+                if self.interactive:
+                    fid.write('mpiexec -np {} {}/kriging.exe {}/{} {} '.format(self.np, self.codepath, self.executionpath, modelname, modelname))
+                else:
+                    fid.write('mpiexec -np {} {}/kriging.exe {}/{} {} 2>{}.errlog>{}.outlog '.format(self.np, self.codepath, self.executionpath, modelname, modelname, modelname, modelname))
+            elif isgprof:
+                fid.write('\n gprof {}/kriging.exe gmon.out>{}.performance'.format(self.codepath, modelname))
+            else:
+                #Add --    gen - suppressions = all to get suppression lines
+                #fid.write('LD_PRELOAD={} \\\n'.format(self.valgrindlib))
+                fid.write('mpiexec -np {} {} --leak -check=full --suppressions={} {}/kriging.exe {}/{} {} 2 > {}.errlog > {}.outlog ' .format(self.np, self.valgrind, self.valgrindsup, self.codepath, self.executionpath, modelname, modelname, modelname, modelname))
+            if not io_gather:    #concatenate the output files:
+                fid.write('\ncat {}.outbin. *>{}.outbin'.format(modelname, modelname))
+            fid.close()
+
+        else:    # Windows
+            fid = open(modelname + '.bat', 'w')
+            fid.write('@echo off\n')
+            if self.interactive:
+                fid.write('"{}/issm.exe" {} "{}/{}" {} '.format(self.codepath, solution, self.executionpath, modelname, modelname))
+            else:
+                fid.write('"{}/issm.exe" {} "{}/{}" {} 2>{}.errlog>{}.outlog'.format
+                          (self.codepath, solution, self.executionpath, modelname, modelname, modelname, modelname))
+            fid.close()
+
+        # In interactive mode, create a run file, and errlog and outlog file
+        if self.interactive:
+            fid = open(modelname + '.errlog', 'w')
+            fid.close()
+            fid = open(modelname + '.outlog', 'w')
+            fid.close()
+    # }}}
+
+    def UploadQueueJob(self, modelname, dirname, filelist):  # {{{
+        # Compress the files into one zip
+        compressstring = 'tar -zcf {}.tar.gz '.format(dirname)
+        for file in filelist:
+            compressstring += ' {}'.format(file)
+        if self.interactive:
+            compressstring += ' {}.errlog {}.outlog '.format(modelname, modelname)
+        call(compressstring, shell=True)
+
+        print('uploading input file and queuing script')
+        issmscpout(self.name, self.executionpath, self.login, self.port, [dirname + '.tar.gz'])
+
+    # }}}
+
+    def LaunchQueueJob(self, modelname, dirname, filelist, restart, batch):  # {{{
+        print('launching solution sequence on remote cluster')
+        if not isempty(restart):
+            launchcommand = 'cd {} && cd {} chmod 755 {}.queue && ./{}.queue'.format(self.executionpath, dirname, modelname, modelname)
+        else:
+            if batch:
+                launchcommand = 'cd {} && rm -rf ./{} && mkdir {} && cd {} && mv ../{}.tar.gz ./&& tar -zxf {}.tar.gz'.format(self.executionpath, dirname, dirname, dirname, dirname, dirname)
+            else:
+                launchcommand = 'cd {} && rm -rf ./{} && mkdir {} && cd {} && mv ../{}.tar.gz ./&& tar -zxf {}.tar.gz  && chmod 755 {}.queue && ./{}.queue'.format(self.executionpath, dirname, dirname, dirname, dirname, dirname, modelname, modelname)
+        issmssh(self.name, self.login, self.port, launchcommand)
+    # }}}
+
+    def Download(self, dirname, filelist):  # {{{
+        if ispc():
+            # Do nothing
+            return
+        # Copy files from cluster to current directory
+        directory = '{}/{}/'.format(self.executionpath, dirname)
+        issmscpin(self.name, self.login, self.port, directory, filelist)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/generic_static.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/generic_static.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/generic_static.m	(revision 27955)
@@ -0,0 +1,150 @@
+%GENERIC cluster class definition
+%
+%   Usage:
+%      cluster=generic_static('name','astrid','np',3);
+%      cluster=generic('name',oshostname(),'np',3,'login','username');
+%
+%   TODO:
+%   - Add support for restart to Windows (under MSYS2), then activate tests 125 
+%   and 126 in test suite
+%
+
+classdef generic_static
+	properties (SetAccess=public)
+		% {{{
+		name='';
+		np=1;
+		codepath=fileparts(which('issm.exe'));
+		executionpath='.';
+		interactive=1;
+		shell='/bin/sh';
+		%}}}
+	end
+	methods
+		function cluster=generic_static(varargin) % {{{
+
+			%use provided options to change fields
+			options=pairoptions(varargin{:});
+
+			%get name
+			cluster.name=getfieldvalue(options,'name',oshostname());
+
+			%initialize cluster using user settings if provided
+			if (exist([cluster.name '_settings'])==2), eval([cluster.name '_settings']); end
+
+			%OK get other fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    np: %i',cluster.np));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    interactive: %s',cluster.interactive));
+			disp(sprintf('    shell: %s',cluster.shell));
+		end
+		%}}}
+		function numprocs=nprocs(cluster) % {{{
+			numprocs=cluster.np;
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+			if cluster.np<1
+				md = checkmessage(md,['number of processors should be at least 1']);
+			end
+			if isnan(cluster.np),
+				md = checkmessage(md,'number of processors should not be NaN!');
+			end
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+			% Which executable are we calling?
+			executable='issm.exe'; % default
+
+			if isdakota,
+				version=IssmConfig('_DAKOTA_VERSION_');
+				version=str2num(version(1:3));
+				if (version>=6),
+					executable='issm_dakota.exe';
+				end
+			end
+			if isoceancoupling,
+				executable='issm_ocean.exe';
+			end
+
+			if ~ispc(),
+				% Check that executable exists at the right path
+				if ~exist([cluster.codepath '/' executable],'file'),
+					error(['File ' cluster.codepath '/' executable ' does not exist']);
+				end
+
+				% Process codepath and prepend empty spaces with \ to avoid errors in queuing script
+				codepath=strrep(cluster.codepath,' ','\ ');
+
+				% Write queuing script
+				fid=fopen([modelname '.queue'],'w');
+				fprintf(fid,'#!%s\n',cluster.shell);
+				if cluster.interactive
+					if IssmConfig('_HAVE_MPI_'),
+						fprintf(fid,'mpiexec -np %i %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+					else
+						fprintf(fid,'%s/%s %s %s %s',cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+					end
+				else
+					if IssmConfig('_HAVE_MPI_'),
+						fprintf(fid,'mpiexec -np %i %s/%s %s %s %s 2> %s.errlog > %s.outlog &',cluster.np,cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname,modelname,modelname);
+					else
+						fprintf(fid,'%s/%s %s %s %s 2> %s.errlog > %s.outlog &',cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname,modelname,modelname);
+					end
+				end
+				fclose(fid);
+			else % Windows
+				fid=fopen([modelname '.bat'],'w');
+				fprintf(fid,'@echo off\n');
+
+				if cluster.np>1,
+					fprintf(fid,'"%s\\mpiexec.exe" -n %i "%s/%s" %s ./ %s',cluster.codepath,cluster.np,cluster.codepath,executable,solution,modelname);
+				else
+					fprintf(fid,'"%s\\%s" %s ./ %s',cluster.codepath,executable,solution,modelname);
+				end
+				fclose(fid);
+			end
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.errlog'],'w');
+				fclose(fid);
+				fid=fopen([modelname '.outlog'],'w');
+				fclose(fid);
+			end
+		end
+		%}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+			% Do nothing
+			return;
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch) % {{{
+			if ~ispc,
+				% Figure out which file extension to use
+				if isempty(strfind(cluster.shell,'csh')),
+					shellext='sh';
+				else
+					shellext='csh';
+				end
+
+				disp('launching solution sequence');
+				launchcommand=['source  ' modelname '.queue '];
+				issmssh(cluster.name,'',0,launchcommand);
+			else
+				system([modelname '.bat']);
+			end
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+			% Do nothing
+			return;
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/generic_static.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/generic_static.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/generic_static.py	(revision 27955)
@@ -0,0 +1,162 @@
+import math
+import os
+import subprocess
+import numpy as np
+from IssmConfig import IssmConfig
+from issmdir import issmdir
+from issmssh import issmssh
+from issmscpin import issmscpin
+from issmscpout import issmscpout
+from MatlabFuncs import *
+from pairoptions import pairoptions
+
+
+class generic_static(object):
+    """GENERIC cluster class definition
+
+    Usage:
+        cluster = generic_static('name', 'astrid', 'np', 3)
+    """
+
+    def __init__(self, *args):  # {{{
+        codepath = subprocess.check_output(["which", "issm.exe"]).rstrip('\r\n')
+        codepath = codepath.replace('/issm.exe', '')
+
+        self.name = ''
+        self.np = 1
+        self.codepath = codepath
+        self.executionpath = '.'
+        self.interactive = 1
+        self.shell = '/bin/sh'
+
+        #use provided options to change fields
+        options = pairoptions(*args)
+
+        #get name
+        self.name = oshostname()
+
+        #initialize cluster using user settings if provided
+        if os.path.exists(self.name + '_settings.py'):
+            exec(compile(open(self.name + '_settings.py').read(), self.name + '_settings.py', 'exec'), globals())
+
+        #OK get other fields
+        self = options.AssignObjectFields(self)
+    # }}}
+
+    def __repr__(self):  # {{{
+        #  display the object
+        s = "class '%s' object '%s' = \n" % (type(self), 'self')
+        s += "    name: %s\n" % self.name
+        s += "    np: %i\n" % self.np
+        s += "    codepath: %s\n" % self.codepath
+        s += "    shell: %s\n" % self.shell
+        return s
+    # }}}
+
+    def nprocs(self):  # {{{
+        return self.np
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if self.np < 1:
+            md.checkmessage('number of processors should be at least 1')
+        if np.isnan(self.np):
+            md.checkmessage('number of processors should not be NaN!')
+
+        return md
+    # }}}
+    def BuildQueueScript(self, dirname, modelname, solution, io_gather, isvalgrind, isgprof, isdakota, isoceancoupling):  # {{{
+        # Which executable are we calling?
+        executable = 'issm.exe' # default
+
+        if isdakota:
+            version = IssmConfig('_DAKOTA_VERSION_')
+            version = float(version[0])
+            if version >= 6:
+                executable = 'issm_dakota.exe'
+        if isoceancoupling:
+            executable = 'issm_ocean.exe'
+
+        # Check that executable exists at the right path
+        if not os.path.isfile(self.codepath + '/' + executable):
+            raise RuntimeError('File ' + self.codepath + '/' + executable + ' does not exist')
+
+        # Process codepath and prepend empty spaces with \ to avoid errors in queuing script
+        codepath = self.codepath.replace(' ', '\ ')
+
+        # Write queuing script
+        fid = open(modelname + '.queue', 'w')
+        fid.write('#!{}'.format(self.shell) + '\n')
+        fid.write('{}/mpiexec -np {} {}/{} {} {} {}'.format(codepath, self.np, codepath, executable, solution, './', modelname))
+        fid.close()
+
+        # Set permissions on queue script so that it can be run
+        subprocess.call(['chmod', '0755', modelname + '.queue'])
+
+        # Create an errlog and outlog file
+        fid = open(modelname + '.errlog', 'w')
+        fid.close()
+        fid = open(modelname + '.outlog', 'w')
+        fid.close()
+    # }}}
+
+    def BuildKrigingQueueScript(self, modelname, solution, io_gather, isvalgrind, isgprof):  # {{{
+        # Which executable are we calling?
+        executable = 'kriging.exe' # default
+
+        if isdakota:
+            version = IssmConfig('_DAKOTA_VERSION_')
+            version = float(version[0])
+            if version >= 6:
+                executable = 'issm_dakota.exe'
+        if isoceancoupling:
+            executable = 'issm_ocean.exe'
+
+        # Check that executable exists at the right path
+        if not os.path.isfile(self.codepath + '/' + executable):
+            raise RuntimeError('File ' + self.codepath + '/' + executable + ' does not exist')
+
+        # Process codepath and prepend empty spaces with \ to avoid errors in queuing script
+        codepath = self.codepath.replace(' ', '\ ')
+
+        # Write queuing script
+        fid = open(modelname + '.queue', 'w')
+        fid.write('#!{}'.format(self.shell) + '\n')
+        fid.write('{}/mpiexec -np {} {}/{} {} {} {}'.format(codepath, self.np, codepath, executable, solution, './', modelname) + '\n')
+        fid.close()
+
+        # Set permissions on queue script so that it can be run
+        subprocess.call(['chmod', '0755', modelname + '.queue'])
+
+        # Create an errlog and outlog file
+        fid = open(modelname + '.errlog', 'w')
+        fid.close()
+        fid = open(modelname + '.outlog', 'w')
+        fid.close()
+    # }}}
+
+    def UploadQueueJob(self, modelname, dirname, filelist):  # {{{
+        # Do nothing
+        return
+    # }}}
+
+    def LaunchQueueJob(self, modelname, dirname, filelist, restart, batch):  # {{{
+        if not ispc():
+            # Figure out which file extension to use
+            if self.shell.find('csh') == -1:
+                shellext='sh'
+            else:
+                shellext='csh'
+
+            print('launching solution sequence')
+            launchcommand = './' + modelname + '.queue'
+            subprocess.call([launchcommand])
+        else:
+            launchcommand = './' + modelname + '.bat'
+            subprocess.call([launchcommand])
+    # }}}
+
+    def Download(self, dirname, filelist):  # {{{
+        # Do nothing
+        return
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/greenplanet.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/greenplanet.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/greenplanet.m	(revision 27955)
@@ -0,0 +1,177 @@
+%GREENPLANET cluster class definition
+%
+%   Usage:
+%      cluster=greenplanet();
+%      cluster=greenplanet('np',3);
+%      cluster=greenplanet('np',3,'login','username');
+
+classdef greenplanet
+	properties (SetAccess=public)
+		% {{{
+		name          = 'greenplanet'
+		login         = '';
+		numnodes      = 20;
+		cpuspernode   = 8;
+		port          = 8000;
+		queue         = 'c6145';
+		codepath      = '';
+		executionpath = '';
+		interactive   = 0;
+		time          = 24*60;
+		memory        = 2;
+	end
+	%}}}
+	methods
+		function cluster=greenplanet(varargin) % {{{
+
+			%initialize cluster using default settings if provided
+			if (exist('greenplanet_settings')==2), greenplanet_settings; end
+
+			%use provided options to change fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    numnodes: %i',cluster.numnodes));
+			disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			disp(sprintf('    np: %i',cluster.nprocs()));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    queue: %s',cluster.queue));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    interactive: %i',cluster.interactive));
+			disp(sprintf('    time: %i',cluster.time));
+			disp(sprintf('    memory: %i',cluster.memory));
+		end
+		%}}}
+		function numprocs=nprocs(cluster) % {{{
+			%compute number of processors
+			numprocs=cluster.numnodes*cluster.cpuspernode;
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			available_queues={'brd2.4','has2.5','ilg2.3','m-c1.9','m-c2.2','nes2.8','sib2.9','m2090','default'};
+			queue_requirements_time=[Inf Inf Inf Inf Inf Inf Inf Inf Inf];
+			queue_requirements_np=[80 80 80 80 80 80 80 80 80];
+
+			QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.nprocs(),1)
+
+			%Miscellaneous
+			if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+
+		end
+		%}}}
+		function BuildKrigingQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#SBATCH --job-name=%s\n',modelname);
+			fprintf(fid,'#SBATCH -p %s \n',cluster.queue);
+			fprintf(fid,'#SBATCH -N %i -n %i\n',cluster.numnodes,cluster.cpuspernode);
+			fprintf(fid,'#SBATCH --time=%i\n',cluster.time*60); %walltime is in seconds.
+			fprintf(fid,'#SBATCH --mem-per-cpu=%igb\n',cluster.memory);
+			fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			fprintf(fid,'#SBATCH -e %s.errlog \n\n',modelname);
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+			fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s\n',cluster.nprocs(),cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#SBATCH --job-name=%s\n',modelname);
+			fprintf(fid,'#SBATCH --partition=%s',cluster.queue{1});
+			for i=2:length(cluster.queue) 
+				fprintf(fid,',%s',cluster.queue{i});
+			end
+			fprintf(fid,'\n');
+			%fprintf(fid,'#SBATCH -N %i -n %i\n',cluster.numnodes,cluster.cpuspernode);
+			%fprintf(fid,'#SBATCH --mem-per-cpu=%igb\n',cluster.memory);
+			fprintf(fid,'#SBATCH --nodes=%i\n',cluster.numnodes); % in general, just 1
+			fprintf(fid,'#SBATCH --ntasks=%i\n',cluster.cpuspernode); % in general, just 1
+			fprintf(fid,'#SBATCH --cpus-per-task=%i\n',1); 
+			fprintf(fid,'#SBATCH --mem=%igb\n',cluster.memory); % minimum total node memory required
+			fprintf(fid,'#SBATCH --time=%s\n',datestr(cluster.time/24,'HH:MM:SS')); %walltime is in HH:MM:SS format. cluster.time is in hour
+			fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			fprintf(fid,'#SBATCH -e %s.errlog \n\n',modelname);
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+			fprintf(fid,'mpiexec -n %i %s/issm.exe %s %s %s\n',cluster.nprocs(),cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.run'],'w');
+				fprintf(fid,'mpiexec -n %i %s/issm.exe %s %s %s\n',cluster.nprocs(),cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+				if ~io_gather, %concatenate the output files:
+					fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				end
+				fclose(fid);
+				fid=fopen([modelname '.errlog'],'w');
+				fclose(fid);
+				fid=fopen([modelname '.outlog'],'w');
+				fclose(fid);
+			end
+		end %}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			if cluster.interactive,
+				compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch) % {{{
+
+			disp('launching solution sequence on remote cluster');
+			if ~isempty(restart)
+				launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && sbatch ' modelname '.queue '];
+			else
+				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && sbatch ' modelname '.queue '];
+			end
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/hpc.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/hpc.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/hpc.m	(revision 27955)
@@ -0,0 +1,165 @@
+%HPC cluster class definition
+%
+%   Usage:
+%      cluster=hpc();
+%      cluster=hpc('np',3);
+%      cluster=hpc('np',3,'login','username');
+
+classdef hpc
+	properties (SetAccess=public)
+		% {{{
+		name='hpc.oit.uci.edu'
+		login='';
+		numnodes=1;
+		cpuspernode=4; 
+		port=0;
+		queue='pub64';
+		codepath='';
+		executionpath='';
+		interactive=0;
+	end
+	%}}}
+	methods
+		function cluster=hpc(varargin) % {{{
+
+			%initialize cluster using default settings if provided
+			if (exist('hpc_settings')==2), hpc_settings; end
+
+			%use provided options to change fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    numnodes: %i',cluster.numnodes));
+			disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			disp(sprintf('    np: %i',cluster.nprocs()));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    queue: %s',cluster.queue));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    interactive: %i',cluster.interactive));
+		end
+		%}}}
+		function numprocs=nprocs(cluster) % {{{
+			%compute number of processors
+			numprocs=cluster.numnodes*cluster.cpuspernode;
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			available_queues={'pub64','free64','free48','free*,pub64','free*'};
+			queue_requirements_time=[Inf Inf Inf Inf Inf];
+			queue_requirements_np=[64 64 48 48 48];
+
+			QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.nprocs(),1)
+
+			%Miscellaneous
+			if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+
+		end
+		%}}}
+		function BuildKrigingQueueScript(cluster,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#$ -N %s\n',modelname);
+			fprintf(fid,'#$ -q %s \n',cluster.queue);
+			fprintf(fid,'#$ -pe one-node-mpi 2-64\n');
+			fprintf(fid,'#$ -R y\n');
+			fprintf(fid,'#$ -m beas\n');
+			fprintf(fid,'#$ -o %s.outlog \n',modelname);
+			fprintf(fid,'#$ -e %s.errlog \n\n',modelname);
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,modelname);
+			fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s\n',cluster.nprocs(),cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#$ -N %s\n',modelname);
+			fprintf(fid,'#$ -q %s \n',cluster.queue);
+			fprintf(fid,'#$ -pe one-node-mpi 2-64\n');
+			fprintf(fid,'#$ -R y\n');
+			%fprintf(fid,'#$ -m beas\n');
+			fprintf(fid,'#$ -o %s.outlog \n',modelname);
+			fprintf(fid,'#$ -e %s.errlog \n\n',modelname);
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+			fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s\n',cluster.nprocs(),cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.run'],'w');
+				fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s\n',cluster.nprocs(),cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+				if ~io_gather, %concatenate the output files:
+					fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				end
+				fclose(fid);
+				fid=fopen([modelname '.errlog'],'w');
+				fclose(fid);
+				fid=fopen([modelname '.outlog'],'w');
+				fclose(fid);
+			end
+		end %}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			if cluster.interactive,
+				compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch) % {{{
+
+			disp('launching solution sequence on remote cluster');
+			if ~isempty(restart)
+				launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && qsub ' modelname '.queue '];
+			else
+				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && qsub ' modelname '.queue '];
+			end
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/hpc_simba.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/hpc_simba.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/hpc_simba.m	(revision 27955)
@@ -0,0 +1,177 @@
+%HPC_SIMBA cluster class definition
+%
+%   Usage:
+%      cluster=hpc();
+%      cluster=hpc('np',3);
+%      cluster=hpc('np',3,'login','username');
+
+classdef hpc_simba
+	properties (SetAccess=public)
+		% {{{
+		name='simba00'
+		login='inwoo';
+		numnodes=1;
+		cpuspernode=36; 
+		np=4;
+		port=7777;
+		queue='pub64';
+		codepath='/home/DATA/externalpackagesissm/issm/trunk-jpl/bin';
+		executionpath='/home/DATA/externalpackages/issm/trunk-jpl/execution/';
+		interactive=0;
+	end
+	%}}}
+	methods
+		function cluster=hpc_simba(varargin) % {{{
+
+			%initialize cluster using default settings if provided
+			if (exist('hpc_settings')==2), hpc_settings; end
+
+			%use provided options to change fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    numnodes: %i',cluster.numnodes));
+			disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			disp(sprintf('    np: %i',cluster.np));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    queue: %s',cluster.queue));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    interactive: %i',cluster.interactive));
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			available_queues={'pub64','free64','free48','free*,pub64','free*'};
+			queue_requirements_time=[Inf Inf Inf Inf Inf];
+			queue_requirements_np=[64 64 48 48 48];
+
+			QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,1)
+
+			%Miscellaneous
+			if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+
+		end
+		%}}}
+		function BuildKrigingQueueScript(cluster,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#$ -N %s\n',modelname);
+			fprintf(fid,'#$ -q %s \n',cluster.queue);
+			fprintf(fid,'#$ -pe one-node-mpi 2-64\n');
+			fprintf(fid,'#$ -R y\n');
+			fprintf(fid,'#$ -m beas\n');
+			fprintf(fid,'#$ -o %s.outlog \n',modelname);
+			fprintf(fid,'#$ -e %s.errlog \n\n',modelname);
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,modelname);
+			fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s\n',cluster.np,cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			if 0
+				fprintf(fid,'#!/bin/bash\n');
+				fprintf(fid,'#$ -N %s\n',modelname);
+				fprintf(fid,'#$ -q %s \n',cluster.queue);
+				fprintf(fid,'#$ -pe one-node-mpi 2-64\n');
+				fprintf(fid,'#$ -R y\n');
+				%fprintf(fid,'#$ -m beas\n');
+				fprintf(fid,'#$ -o %s.outlog \n',modelname);
+				fprintf(fid,'#$ -e %s.errlog \n\n',modelname);
+			else % FIXME : This script for SIMBA-Kopri 
+				fprintf(fid,'#!/bin/bash\n');
+				%fprintf(fid,'#PBS -q workq\n');
+				fprintf(fid,'#PBS -N %s\n',modelname);
+				%fprintf(fid,'#PBS -l nodes=simba01:ppn=%d\n',...
+				%	ceil(cluster.np/cluster.cpuspernode), cluster.np);
+				fprintf(fid,'#PBS -l nodes=simba01:ppn=%d\n',...
+					cluster.np);
+				fprintf(fid,'#PBS -o %s.outlog \n',modelname);
+				fprintf(fid,'#PBS -e %s.errlog \n\n',modelname);
+				fprintf(fid,'\n');
+			end
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'\n');
+			fprintf(fid,'module load intel18/impi-18\n');
+			fprintf(fid,'\n');
+			fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+			fprintf(fid,'mpirun -np %i %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.run'],'w');
+				fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+				if ~io_gather, %concatenate the output files:
+					fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				end
+				fclose(fid);
+				fid=fopen([modelname '.errlog'],'w');
+				fclose(fid);
+				fid=fopen([modelname '.outlog'],'w');
+				fclose(fid);
+			end
+		end %}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			if cluster.interactive,
+				compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch) % {{{
+
+			disp('launching solution sequence on remote cluster');
+			if ~isempty(restart)
+				launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && qsub ' modelname '.queue '];
+			else
+				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && qsub ' modelname '.queue '];
+			end
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/hpc_simba2.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/hpc_simba2.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/hpc_simba2.m	(revision 27955)
@@ -0,0 +1,278 @@
+%HPC class definition
+%
+%   Usage:
+%      cluster=hpc_simba();
+%      cluster=hpc_simba('np',3);
+%      cluster=hpc_simba('np',3,'login','username');
+
+classdef hpc_simba2
+    properties (SetAccess=public)  
+		 % {{{
+		 name='simba20'
+		 login='inwoo';
+		 numnodes=18;    % number of nodes at 2019-11 installation
+		 cpuspernode=36; % default number of cpus at each node
+		 node=1;         % number of nodes for calculating 
+		 np=4;           % number of cpus for calculating at each node
+		 port=0;        % not know open port
+		 queue='pub64';
+		 codepath= [];
+		 executionpath=[];
+		 interactive=0;
+		 verbose=0;     % show process of downloading
+		 isqsub=1;
+	 end
+	 %}}}
+	 methods
+		 function cluster=hpc_simba2(varargin) % {{{
+
+			 %initialize cluster using default settings if provided
+			 if (exist('hpc_settings')==2), hpc_settings; end
+
+			 %use provided options to change fields
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+
+			 % where is "ISSM_DIR"?
+			 if strcmpi(cluster.name,'simba00')
+				 ISSM_DIR=getenv('ISSM_DIR');
+			 elseif strcmpi(cluster.name,'simba20')
+				 ISSM_DIR='/home/inwoo/issm/trunk-jpl/';
+			 else
+				 error(sprintf('ERROR: %s is not supported cluster name...'))
+			 end
+			 cluster.codepath=sprintf('%s/bin',ISSM_DIR);
+
+			 % define specific user
+			 [~, s] = system('whoami'); % get user name
+			 s = s(1:end-1);
+			 cluster.login=s;
+			 if strcmpi(s,'inwoo'),
+				 %cluster.executionpath=sprintf('%s/execution/',ISSM_DIR);
+				 cluster.executionpath='/data2/inwoo/execution';
+			 elseif strcmpi(s,'emilia'),
+				 cluster.executionpath='/home/DATA/emilia-model/executionlog';
+			 end
+		 end
+		 %}}}
+		 function disp(cluster) % {{{
+			 %  display the object
+			 disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			 disp(sprintf('    name: %s',cluster.name));
+			 disp(sprintf('    login: %s',cluster.login));
+			 disp(sprintf('    port: %i',cluster.port));
+			 disp(sprintf('    numnodes: %i',cluster.numnodes));
+			 disp(sprintf('    node: %i',cluster.node));
+			 disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			 disp(sprintf('    np: %i',cluster.np));
+			 disp(sprintf('    queue: %s',cluster.queue));
+			 disp(sprintf('    codepath: %s',cluster.codepath));
+			 disp(sprintf('    executionpath: %s',cluster.executionpath));
+			 disp(sprintf('    interactive: %i',cluster.interactive));
+			 disp(sprintf('    isqub: %i',cluster.isqsub));
+		 end
+		 %}}}
+		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			 available_queues={'pub64','free64','free48','free*,pub64','free*'};
+			 queue_requirements_time=[Inf Inf Inf Inf Inf];
+			 queue_requirements_np=[64 64 48 48 48];
+
+			 QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,1)
+
+			 %Miscelaneous
+			 if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			 if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			 if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+
+		 end
+		 %}}}
+		 function BuildKrigingQueueScript(cluster,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#!/bin/bash\n');
+			 fprintf(fid,'#$ -N %s\n',modelname);
+			 fprintf(fid,'#$ -q %s \n',cluster.queue);
+			 fprintf(fid,'#$ -pe one-node-mpi 2-64\n');
+			 fprintf(fid,'#$ -R y\n');
+			 fprintf(fid,'#$ -m beas\n');
+			 fprintf(fid,'#$ -o %s.outlog \n',modelname);
+			 fprintf(fid,'#$ -e %s.errlog \n\n',modelname);
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			 fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,modelname);
+			 fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s\n',cluster.np,cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+			 if ~io_gather, %concatenate the output files:
+				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			 end
+			 fclose(fid);
+		 end
+		 %}}}
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 %fprintf(fid,'#PBS -q workq\n');
+			 fprintf(fid,'#PBS -S /bin/bash\n');      % set shell name
+			 fprintf(fid,'#PBS -N %s\n',modelname);   % set job name
+			 % 8 node is available at simba
+			 if (cluster.node >= cluster.numnodes),
+				 fprintf('cluster node   : simba%02\n', cluster.node);
+				 fprintf('number of node : %d\n', cluster.numnodes);
+				 error('ERROR: cluster node is higher than number of nodes');
+			 end
+			 % node             -> how many nodes do you use?
+			 % ppn (cluster.np) -> how many cpus do you use? 
+			 fprintf(fid,'#PBS -l nodes=%d:ppn=%d\n',cluster.node,cluster.np);
+			 fprintf(fid,'#PBS -o %s.outlog \n',modelname);
+			 fprintf(fid,'#PBS -e %s.errlog \n',modelname);
+			 fprintf(fid,'\n');
+			 fprintf(fid,'source ~/.bashrc\n');                          % FIXME
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			 fprintf(fid,'\n');
+			 fprintf(fid,'module load intel18/compiler-18\n');
+			 fprintf(fid,'module load intel18/mvapich2-2.2\n');
+			 fprintf(fid,'\n');
+			 fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+
+			 if true, % HACK
+				 % NOTE: old version
+				 % fprintf(fid,'mpiexec -genv MV2_ENABLE_AFFINITY 0 -np %i %s/issm.exe %s %s %s\n',cluster.np*cluster.node,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+				 % NOTE: new version 
+				 % not requires np processor and machine file. Execution of ISSM is operated under PBS. 
+				 fprintf(fid,'mpiexec -genv MV2_ENABLE_AFFINITY 0 -np %d %s/issm.exe %s %s %s\n',...
+					 cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			 else
+				 % use machine file for obtaining cluster nodes
+				 fprintf(fid,'mpiexec -machinefile %s -np %i %s/issm.exe %s %s %s\n',[cluster.executionpath '/' dirname '/simba.host'],cluster.np*cluster.node,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			 end 
+			 if ~io_gather, %concatenate the output files:
+				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			 end
+			 fclose(fid);
+
+			 %% generate machinefile "simba.host" file for SIMBA
+			 %fid = fopen('simba.host','w');
+			 %nodeorder = [1:cluster.numnodes, 0];
+
+			 %% generate host of simba 
+			 %for i = 1:cluster.numnodes-1,
+			 %   fprintf(fid,'simba%02d:%2d\n',nodeorder(i),cluster.cpuspernode);
+			 %end
+			 %fclose(fid);
+
+			 %in interactive mode, create a run file, and errlog and outlog file
+			 if cluster.interactive,
+				 fid=fopen([modelname '.run'],'w');
+				 fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+				 if ~io_gather, %concatenate the output files:
+					 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				 end
+				 fclose(fid);
+				 fid=fopen([modelname '.errlog'],'w');
+				 fclose(fid);
+				 fid=fopen([modelname '.outlog'],'w');
+				 fclose(fid);
+			 end
+		 end %}}}
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+			 %compress the files into one zip.
+			 compressstring=['tar -zcf ' dirname '.tar.gz '];
+			 for i=1:numel(filelist),
+				 compressstring = [compressstring ' ' filelist{i}];
+			 end
+			 if cluster.interactive,
+				 compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			 end
+
+			 % add machine file for SIMBA operation
+			 %compressstring = [compressstring ' ' 'simba.host'];
+			 system(compressstring);
+
+			 if cluster.verbose
+				 disp('hpc_simba2: uploading input file and queueing script');
+				 if exist(sprintf('%s.tar.gz',dirname))
+					fprintf('hpc_simba2: -- we find %s.tar.gz\n',dirname);
+				 end
+				 fprintf('hpc_simba2: -- remote hostname: %s\n',cluster.name);
+			 end
+			 
+			 % use rclone for upload model.
+			 isrclone = 0;
+			 if isrclone,
+				 command = ['ssh simba20 "rclone copy simba00:' pwd '/' dirname '.tar.gz ' cluster.executionpath '"'];
+				 system(command);
+			 else
+				 if strfind(cluster.executionpath,'/data2/')
+					 launchcommand = ['cp ' pwd '/' dirname '.tar.gz ' cluster.executionpath];
+					 issmssh(oshostname,cluster.login,cluster.port,launchcommand);
+				 else % using scpout for exporting data...
+					 issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+				 end
+			 end
+		 end %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch)% {{{
+			 disp('launching solution sequence on remote cluster: simba20');
+			 if ~isempty(restart)
+				 if cluster.isqsub 
+					 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && qsub ' modelname '.queue '];
+				 else
+					 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && source' modelname '.queue '];
+				 end
+			 else
+				 if cluster.isqsub 
+					 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && qsub ' modelname '.queue '];
+				 else
+					 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && source ' modelname '.queue '];
+				 end
+			 end
+			 
+			 if cluster.verbose
+				 fprintf('check simulation at\n');
+				 fprintf('%s/%s\n',cluster.executionpath,dirname);
+			 end
+
+			 % launch simulation
+			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		 end %}}}
+		 function Download(cluster,dirname,filelist)% {{{
+			 %copy files from cluster to current directory
+			 directory=[cluster.executionpath '/' dirname '/'];
+			
+			 isrclone = 0;
+			 if isrclone,
+				 command = ['ssh simba20 "rclone copy ' directory ' simba00:' pwd '/'];
+				 for i = 1:length(filelist)
+					 command = [command ' --include ' filelist{i}];
+				 end
+				 if cluster.verbose,
+					 command = [command ' --progress '];
+				 end
+				 command = [command '"'];
+				 %assignin('base','command',command); 
+
+				 disp('download outputs....');
+				 system(command);
+				 disp('download outputs.... done...');
+			 else
+				 % In case of "SIMBA" machine, it shares the data storage. If following directory is set we do not need to download load file with using "issmscpin". Directly read file...
+				 if 1==strfind(cluster.executionpath,'/data2/')
+					 % tricky part for assign "cluster.name" as "simba00".
+					 disp('hpc_simba2: download file from /data2/ directory!!! Not use scpin.');
+					 issmscpin('simba00',cluster.login,cluster.port,directory,filelist);
+				 else
+					 issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+				 end
+			 end
+		 end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/local.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/local.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/local.js	(revision 27955)
@@ -0,0 +1,22 @@
+//LOCAL cluster class definition
+//
+//   Usage:
+//      local=new local();
+
+function local (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   local cluster class echo: []'));
+	}// }}}
+	this.classname= function(){// {{{
+		return "local";
+	}// }}}
+		this.checkconsistency = function (md,solution,analyses) { //{{{
+		} //}}}
+	//properties 
+	// {{{
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/local.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/local.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/local.m	(revision 27955)
@@ -0,0 +1,77 @@
+%LOCAL cluster class definition
+%
+%   Usage:
+%      cluster=local('name','astrid','np',3);
+%      cluster=local('name',oshostname(),'np',3,'login','username');
+
+classdef local
+	properties (SetAccess=public)
+		% {{{
+		name = '';
+		np            = 1;
+		codepath      = [IssmConfig('ISSM_PREFIX') '/bin'];
+		etcpath       = [issmdir() '/etc'];
+		executionpath = [issmdir() '/execution'];
+		verbose       = 1;
+		shell         = '/bin/sh';
+		%}}}
+	end
+	methods
+		function cluster=local(varargin) % {{{
+
+			%use provided options to change fields
+			options=pairoptions(varargin{:});
+
+			%get name
+			cluster.name=getfieldvalue(options,'name',oshostname());
+
+			%OK get other fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    np: %i',cluster.np));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    etcpath: %s',cluster.etcpath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    verbose: %s',cluster.verbose));
+			disp(sprintf('    shell: %s',cluster.shell));
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+			if cluster.np<1
+				md = checkmessage(md,['number of processors should be at least 1']);
+			end
+			if isnan(cluster.np),
+				md = checkmessage(md,'number of processors should not be NaN!');
+			end
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+			% Which executable are we calling?
+			executable='issm.exe'; % default
+
+			if isdakota,
+				executable='issm_dakota.exe';
+			end
+
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!%s\n',cluster.shell);
+			fprintf(fid,'mpiexec -np %i %s/%s %s %s %s \n',cluster.np,cluster.codepath,executable,solution,'./',modelname);
+			fclose(fid);
+		end
+		%}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+			%do nothing really.
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch)% {{{
+			system(['source ' modelname '.queue']);
+
+		end %}}}
+		function Download(cluster,dirname,filelist)% {{{
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/local.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/local.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/local.py	(revision 27955)
@@ -0,0 +1,83 @@
+from subprocess import call
+
+import numpy as np
+
+from IssmConfig import IssmConfig
+from issmdir import *
+from pairoptions import pairoptions
+
+
+class local(object):  # {{{
+    """LOCAL class definition
+
+    Usage:
+        cluster = local('name', 'astrid', 'np', 3)
+        cluster = local('name', oshostname(), 'np', 3, 'login', 'username')
+    """
+
+    def __init__(self, *args):  # {{{
+        self.name           = ''
+        self.np             = 1
+        self.codepath       = IssmConfig('ISSM_PREFIX') + '/bin'
+        self.etcpath        = issmdir() + '/etc'
+        self.executionpath  = issmdir() + '/execution'
+        self.verbose        = 1
+        self.shell          = '/bin/sh'
+
+        # Use provided options to change fields
+        options = pairoptions(*args)
+
+        # Get name
+        cluster.name = options.getfieldvalue('name', oshostname())
+
+        # OK get other fields
+        self = options.AssignObjectFields(self)
+
+    def __repr__(cluster):  # {{{
+        # Display the object
+        s = 'class {} = \n'.format(type(cluster).__name__)
+        s += '    name: {}\n'.format(cluster.name)
+        s += '    np: {}\n'.format(cluster.np)
+        s += '    codepath: {}\n'.format(cluster.codepath)
+        s += '    executionpath: {}\n'.format(cluster.executionpath)
+        s += '    etcpath: {}\n'.format(cluster.etcpath)
+        s += '    verbose: {}\n'.format(cluster.verbose)
+        s += '    shell: {}\n'.format(cluster.shell)
+
+        return s
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if cluster.np < 1:
+            md.checkmessage('number of processors should be at least 1')
+
+        if np.isnan(cluster.np):
+            md.checkmessage('number of processors should not be NaN')
+
+        return md
+    # }}}
+
+    def BuildQueueScript(cluster, dirname, modelname, solution, io_gather, isvalgrind, isgporf, isdakota, isoceancoupling):  # {{{
+        # Which executable are we calling?
+        executable = 'issm.exe' # Default
+
+        if isdakota:
+            executable = 'issm_dakota.exe'
+
+        fid = open(modelname + '.queue', 'w')
+        fid.write('#!{}\n'.format(cluster.shell))
+        fid.write('mpiexec -np {} {}/{} {} {} {}\n',cluster.np,cluster.codepath,executable,solution,'./',modelname)
+        fid.close()
+
+    def UploadQueueJob(cluster, modelname, dirname, filelist):  # {{{
+        # Do nothing really
+        pass
+    # }}}
+
+    def LaunchQueueJob(cluster, modelname, dirname, filelist, restart, batch):  # {{{
+        subprocess.call('source ' + modelname + '.queue')
+    # }}}
+
+    def Download(cluster, dirname, filelist):  # {{{
+        pass
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/localpfe.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/localpfe.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/localpfe.m	(revision 27955)
@@ -0,0 +1,291 @@
+%LOCALPFE cluster class definition
+%
+%   Usage:
+%      cluster=localpfe('name','astrid','np',3);
+%      cluster=localpfe('name',oshostname(),'np',3,'login','username');
+
+classdef localpfe
+	properties (SetAccess=public) 
+		% {{{
+		name          = '';
+		login         = '';
+		np            = 1;
+		npocean       = 0;
+		port          = 0;
+		interactive   = 1;
+		codepath      = [IssmConfig('ISSM_PREFIX') '/bin'];
+		etcpath       = [issmdir() '/etc'];
+		executionpath = [issmdir() '/execution'];
+		valgrind      = [issmdir() '/externalpackages/valgrind/install/bin/valgrind'];
+		valgrindlib   = [issmdir() '/externalpackages/valgrind/install/lib/libmpidebug.so'];
+		valgrindsup   = [issmdir() '/externalpackages/valgrind/issm.supp'];
+		verbose       = 1;
+		shell         = '/bin/sh';
+		%}}}
+	end
+	methods
+		function cluster=localpfe(varargin) % {{{
+
+			%Change the defaults if ispc and not ismingw
+			if ispc & ~ismingw,
+				cluster.codepath      = [issmdir() '\bin'];
+				cluster.etcpath       = [issmdir() '\etc'];
+				cluster.executionpath = [issmdir() '\execution'];
+			end
+
+			%use provided options to change fields
+			options=pairoptions(varargin{:});
+
+			%get name
+			cluster.name=getfieldvalue(options,'name',oshostname());
+
+			%initialize cluster using user settings if provided
+			if (exist([cluster.name '_settings'])==2), eval([cluster.name '_settings']); end
+
+			%OK get other fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    np: %i',cluster.np));
+			disp(sprintf('    npocean: %i',cluster.npocean));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    interactive: %i',cluster.interactive));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    etcpath: %s',cluster.etcpath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    valgrind: %s',cluster.valgrind));
+			disp(sprintf('    valgrindlib: %s',cluster.valgrindlib));
+			disp(sprintf('    valgrindsup: %s',cluster.valgrindsup));
+			disp(sprintf('    verbose: %s',cluster.verbose));
+			disp(sprintf('    shell: %s',cluster.shell));
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+			if cluster.np<1
+				md = checkmessage(md,['number of processors should be at least 1']);
+			end
+			if isnan(cluster.np),
+				md = checkmessage(md,'number of processors should not be NaN!');
+			end
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			%write queuing script 
+			%what is the executable being called? 
+			executable='issm.exe';
+			if isdakota,
+				version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				if (version>=6),
+					executable='issm_dakota.exe';
+				end
+			end
+
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!%s\n',cluster.shell);
+			fprintf(fid,'mpiexec -np %i %s/%s %s %s %s \n',cluster.np,cluster.codepath,executable,solution,cluster.executionpath,modelname);
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.run'],'w');
+				if cluster.interactive==10,
+						fprintf(fid,'module unload mpi-mvapich2/1.4.1/gcc\n');
+						fprintf(fid,'mpiexec -np %i %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,solution,[pwd() '/run'],modelname);
+				else
+					if ~isvalgrind,
+						fprintf(fid,'mpiexec -np %i %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,solution,cluster.executionpath,modelname);
+						%fprintf(fid,'mpiexec -np %i %s/%s %s %s %s\n',cluster.nprocs(),cluster.codepath,executable,solution,[cluster.executionpath '/Interactive' num2str(cluster.interactive)],modelname);
+					else
+						fprintf(fid,'mpiexec -np %i valgrind --leak-check=full %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,solution,[cluster.executionpath '/Interactive' num2str(cluster.interactive)],modelname);
+					end
+				end
+				if ~io_gather, %concatenate the output files:
+					fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				end
+				fclose(fid);
+
+				fid=fopen([modelname '.errlog'],'w'); fclose(fid);
+				fid=fopen([modelname '.outlog'],'w'); fclose(fid);
+			end
+		end
+		%}}}
+		function BuildQueueScriptMultipleModels(cluster,dirname,modelname,solution,dirnames,modelnames,nps) % {{{
+		
+			%some checks: 
+			if isempty(modelname), error('BuildQueueScriptMultipleModels error message: need a non empty model name!');end
+
+			%what is the executable being called? 
+			executable='issm_slc.exe';
+
+			if ispc & ~ismingw, error('BuildQueueScriptMultipleModels not support yet on windows machines');end;
+			
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			
+			fprintf(fid,'#!%s\n',cluster.shell);
+
+			%number of cpus: 
+			mpistring=sprintf('mpiexec -np %i ',cluster.np);
+
+			%executable: 
+			mpistring=[mpistring sprintf('%s/%s ',cluster.codepath,executable)];
+			
+			%solution name: 
+			mpistring=[mpistring sprintf('%s ',solution)];
+
+			%execution directory and model name: 
+			mpistring=[mpistring sprintf('%s/%s %s',cluster.executionpath,dirname,modelname)];
+
+			%inform main executable of how many icecaps, glaciers and earth models are being run: 
+			mpistring=[mpistring sprintf(' %i ',length(dirnames))];
+			
+			%icecaps, glaciers and earth location, names and number of processors associated:
+			for i=1:length(dirnames),
+			mpistring=[mpistring sprintf(' %s/%s %s %i ',cluster.executionpath,dirnames{i},modelnames{i},nps{i})];
+			end
+
+			%log files: 
+			if ~cluster.interactive,
+				mpistring=[mpistring sprintf('2> %s.errlog> %s.outlog',modelname,modelname)];
+			end
+
+			%write this long string to disk: 
+			fprintf(fid,mpistring);
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.errlog'],'w'); fclose(fid);
+				fid=fopen([modelname '.outlog'],'w'); fclose(fid);
+			end
+		end
+		%}}}
+		function BuildQueueScriptIceOcean(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
+
+			%write queuing script 
+			%what is the executable being called? 
+			executable='issm_ocean.exe';
+
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!%s\n',cluster.shell);
+			fprintf(fid,'mpiexec -np %i %s/%s %s %s %s : -np %i ./mitgcmuv\n',cluster.np,cluster.codepath,executable,solution,cluster.executionpath,modelname,cluster.npocean);
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.errlog'],'w'); fclose(fid);
+				fid=fopen([modelname '.outlog'],'w'); fclose(fid);
+			end
+		end
+		%}}}
+		function BuildKrigingQueueScript(cluster,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+
+			%write queuing script 
+			if ~ispc,
+
+				fid=fopen([modelname '.queue'],'w');
+				fprintf(fid,'#!/bin/sh\n');
+				if ~isvalgrind,
+					if cluster.interactive
+						fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s ',cluster.np,cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+					else
+						fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s 2> %s.errlog >%s.outlog ',cluster.np,cluster.codepath,[cluster.executionpath '/' modelname],modelname,modelname,modelname);
+					end
+				elseif isgprof,
+					fprintf(fid,'\n gprof %s/kriging.exe gmon.out > %s.performance',cluster.codepath,modelname);
+				else
+					%Add --gen-suppressions=all to get suppression lines
+					fprintf(fid,'LD_PRELOAD=%s \\\n',cluster.valgrindlib);
+					fprintf(fid,'mpiexec -np %i %s --leak-check=full --suppressions=%s %s/kriging.exe %s %s 2> %s.errlog >%s.outlog ',...
+						cluster.np,cluster.valgrind,cluster.valgrindsup,cluster.codepath,[cluster.executionpath '/' modelname],modelname,modelname,modelname);
+				end
+				if ~io_gather, %concatenate the output files:
+					fprintf(fid,'\ncat %s.outbin.* > %s.outbin',modelname,modelname);
+				end
+				fclose(fid);
+
+			else % Windows
+
+				fid=fopen([modelname '.bat'],'w');
+				fprintf(fid,'@echo off\n');
+				if cluster.interactive
+					fprintf(fid,'"%s/issm.exe" %s "%s" %s ',cluster.codepath,solution,[cluster.executionpath '/' modelname],modelname);
+				else
+					fprintf(fid,'"%s/issm.exe" %s "%s" %s 2> %s.errlog >%s.outlog',...
+						cluster.codepath,solution,[cluster.executionpath '/' modelname],modelname,modelname,modelname);
+				end
+				fclose(fid);
+			end
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.errlog'],'w'); fclose(fid);
+				fid=fopen([modelname '.outlog'],'w'); fclose(fid);
+			end
+		end
+		%}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+			if ~ispc | ismingw,
+
+				%compress the files into one zip.
+				compressstring=['tar -zcf ' dirname '.tar.gz '];
+				for i=1:numel(filelist),
+					compressstring = [compressstring ' ' filelist{i}];
+				end
+				if cluster.interactive,
+					compressstring = [compressstring ' ' modelname '.run '  modelname '.errlog ' modelname '.outlog '];
+				end
+				system(compressstring);
+
+				if cluster.verbose, disp('uploading input file and queuing script'); end
+				issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+			end
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch)% {{{
+
+			%figure out what shell extension we will use:
+			if isempty(strfind(cluster.shell,'csh')),
+				shellext='sh';
+			else
+				shellext='csh';
+			end
+
+			if cluster.verbose, disp('launching solution sequence on remote cluster'); end
+
+			launchcommand=['cd ' cluster.executionpath ' && rm -rf *.lock && rm -rf ADOLC* && tar -zxf ' dirname '.tar.gz  && rm -rf *.tar.gz'];
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+
+		end %}}}
+		function LaunchQueueJobIceOcean(cluster,modelname,dirname,filelist,restart,batch)% {{{
+
+			%figure out what shell extension we will use:
+			if isempty(strfind(cluster.shell,'csh')),
+				shellext='sh';
+			else
+				shellext='csh';
+			end
+
+			if cluster.verbose, disp('launching solution sequence on remote cluster'); end
+
+			launchcommand=['cd ' cluster.executionpath ' && rm -rf *.lock && tar -zxf ' dirname '.tar.gz  && rm -rf *.tar.gz'];
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+
+		end %}}}
+		function Download(cluster,dirname,filelist)% {{{
+
+			if ispc && ~ismingw,
+				%do nothing
+				return;
+			end
+
+			%copy files from cluster to current directory
+			issmscpin(cluster.name,cluster.login,cluster.port,cluster.executionpath,filelist);
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/lonestar.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/lonestar.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/lonestar.m	(revision 27955)
@@ -0,0 +1,201 @@
+%LONESTAR cluster class definition
+%
+%   Usage:
+%      cluster=lonestar();
+%      cluster=lonestar('np',3);
+%      cluster=lonestar('np',3,'login','username');
+
+classdef lonestar
+	properties (SetAccess=public)
+		% {{{
+		name          = 'ls5.tacc.utexas.edu'
+		login         = '';
+		modules        = {'intel/18.0.2' 'gsl'};
+		numnodes      = 1;
+		cpuspernode   = 24;
+		port          = 1099;
+		queue         = 'normal';
+		codepath      = '';
+		executionpath = '';
+		interactive   = 0;
+		time          = 48*60*60;
+		email         = '';
+	end
+	%}}}
+	methods
+		function cluster=lonestar(varargin) % {{{
+
+			%initialize cluster using default settings if provided
+			if (exist('lonestar_settings')==2), lonestar_settings; end
+
+			%use provided options to change fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    modules: %s',strjoin(cluster.modules,', ')));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    numnodes: %i',cluster.numnodes));
+			disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			disp(sprintf('    np: %i',cluster.nprocs()));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    queue: %s',cluster.queue));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    interactive: %i',cluster.interactive));
+			disp(sprintf('    time: %i',cluster.time));
+			disp(sprintf('    email: %s',cluster.email));
+		end
+		%}}}
+		function numprocs=nprocs(cluster) % {{{
+			%compute number of processors
+			numprocs=cluster.numnodes*cluster.cpuspernode;
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			available_queues={'normal','development'};
+			queue_requirements_time=[48*60*60 2*60*60];
+			queue_requirements_np=[4104 264];
+
+			QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.nprocs(),cluster.time)
+
+			%Miscellaneous
+			if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+		end
+		%}}}
+		function BuildKrigingQueueScript(cluster,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#$ -N %s\n',modelname);
+			fprintf(fid,'#$ -q %s \n',cluster.queue);
+			fprintf(fid,'#$ -pe one-node-mpi 2-64\n');
+			fprintf(fid,'#$ -R y\n');
+			fprintf(fid,'#$ -m beas\n');
+			fprintf(fid,'#$ -o %s.outlog \n',modelname);
+			fprintf(fid,'#$ -e %s.errlog \n\n',modelname);
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,modelname);
+			fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s\n',cluster.nprocs(),cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			executable='issm.exe';
+			if isdakota,
+				version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				if (version>=6),
+					executable='issm_dakota.exe';
+				end
+			end
+			if isoceancoupling,
+				executable='issm_ocean.exe';
+			end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#SBATCH -J %s \n',modelname);
+			fprintf(fid,'#SBATCH -p %s \n',cluster.queue);
+			fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			fprintf(fid,'#SBATCH -e %s.errlog \n',modelname);
+			fprintf(fid,'#SBATCH -n %i \n',cluster.numnodes*max(cluster.nprocs()/cluster.numnodes,24));
+			fprintf(fid,'#SBATCH -N %i \n',cluster.numnodes);
+			fprintf(fid,'#SBATCH -t %02i:%02i:00 \n\n',floor(cluster.time/3600),floor(mod(cluster.time,3600)/60));
+			for i=1:numel(cluster.modules),
+				fprintf(fid,['module load ' cluster.modules{i} '\n']);
+			end
+
+			if isdakota,
+				fprintf(fid,'export KMP_AFFINITY="granularity=fine,compact,verbose" \n\n');
+			end
+
+			if length(find(cluster.email=='@'))>0
+				fprintf(fid,'#SBATCH --mail-user=%s \n',cluster.email);
+				fprintf(fid,'#SBATCH --mail-type=end \n\n');
+
+				%fprintf(fid,'ssh login1 "mail -s ''SLURM Jobid=${SLURM_JOBID} Name=${SLURM_JOB_NAME} Began on Lonestar 5.'' %s <<< ''Job Started'' " \n\n',cluster.email);
+			end
+
+			fprintf(fid,'export PATH="$PATH:."\n\n');
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+			fprintf(fid,'ibrun -np %i %s/%s %s %s %s\n',cluster.nprocs(),cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.run'],'w');
+				fprintf(fid,'ibrun -np %i %s/%s %s %s %s\n',cluster.nprocs(),executable,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+				if ~io_gather, %concatenate the output files:
+					fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				end
+				fclose(fid);
+				fid=fopen([modelname '.errlog'],'w');
+				fclose(fid);
+				fid=fopen([modelname '.outlog'],'w');
+				fclose(fid);
+			end
+		end %}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			if cluster.interactive,
+				compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch) % {{{
+
+			disp('launching solution sequence on remote cluster');
+			if ~isempty(restart)
+				launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && sbatch ' modelname '.queue '];
+			else
+				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && sbatch ' modelname '.queue '];
+			end
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/maui.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/maui.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/maui.m	(revision 27955)
@@ -0,0 +1,152 @@
+%MAUI cluster class definition
+%
+%   Usage:
+%      cluster=maui();
+%      cluster=maui('np',3);
+%      cluster=maui('np',3,'login','username');
+
+classdef maui
+	properties (SetAccess=public)
+		% {{{
+		name           = 'maui'
+		login          = '';
+		numnodes       = 1;
+		cpuspernode    = 8;
+		port           = 0;
+		projectaccount = '';
+		partition      = 'nesi_research';
+		codepath       = '';
+		executionpath  = '';
+		interactive    = 0;
+		time           = 24*60;
+		memory         = 2;
+	end
+	%}}}
+	methods
+		function cluster=maui(varargin) % {{{
+
+			%initialize cluster using default settings if provided
+			if (exist('maui_settings')==2), maui_settings; end
+
+			%use provided options to change fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    numnodes: %i',cluster.numnodes));
+			disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			disp(sprintf('    np: %i',cluster.nprocs()));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    projectaccount: %s',cluster.projectaccount));
+			disp(sprintf('    partition: %s',cluster.partition));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    interactive: %i',cluster.interactive));
+			disp(sprintf('    time: %i',cluster.time));
+			disp(sprintf('    memory: %i',cluster.memory));
+		end
+		%}}}
+		function numprocs=nprocs(cluster) % {{{
+			%compute number of processors
+			numprocs=cluster.numnodes*cluster.cpuspernode;
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			available_partitions={'nesi_research'}
+			partition_requirements_time=[24*60];
+			partition_requirements_np=[80];
+
+			QueueRequirements(available_partitions,partition_requirements_time,partition_requirements_np,cluster.partition,cluster.nprocs(),1)
+
+			%Miscellaneous
+			if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+		end
+		%}}}
+		function BuildKrigingQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+			error('not implemented yet');
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#SBATCH --job-name=%s\n',modelname);
+			fprintf(fid,'#SBATCH --account=%s \n',cluster.projectaccount);
+			fprintf(fid,'#SBATCH --partition=%s \n',cluster.partition);
+			fprintf(fid,'#SBATCH --ntasks=%i  \n',cluster.numnodes);
+			fprintf(fid,'#SBATCH --cpus-per-task=%i\n',cluster.cpuspernode);
+			fprintf(fid,'#SBATCH --time=%i\n',cluster.time); %walltime is in minutes
+			fprintf(fid,'#SBATCH --mem-per-cpu=%igb\n',cluster.memory);
+			fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			fprintf(fid,'#SBATCH -e %s.errlog \n\n',modelname);
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'module swap PrgEnv-cray PrgEnv-intel\n');
+			fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+			fprintf(fid,'srun -n %i %s/issm.exe %s %s %s\n',cluster.nprocs(),cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.run'],'w');
+				fprintf(fid,'mpiexec -n %i %s/issm.exe %s %s %s\n',cluster.nprocs(),cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+				if ~io_gather, %concatenate the output files:
+					fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				end
+				fclose(fid);
+				fid=fopen([modelname '.errlog'],'w');
+				fclose(fid);
+				fid=fopen([modelname '.outlog'],'w');
+				fclose(fid);
+			end
+		end %}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			if cluster.interactive,
+				compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch) % {{{
+
+			disp('launching solution sequence on remote cluster');
+			if ~isempty(restart)
+				launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && sbatch ' modelname '.queue '];
+			else
+				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && sbatch ' modelname '.queue '];
+			end
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/pace.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/pace.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/pace.m	(revision 27955)
@@ -0,0 +1,117 @@
+%PACE class definition
+%
+%   Usage:
+%      cluster=pace();
+%      cluster=pace('np',4);
+%      cluster=pace('np',4,'login','username');
+
+classdef pace 
+	properties (SetAccess=public)
+	% {{{
+		name            = 'login-phoenix-slurm.pace.gatech.edu' %Phoenix cluster name
+		login           = ''; %personal login
+		numnodes        = 1; %number of nodes requested
+		np              = 4; %number of processors per node
+		mem             = 5; %memory requested [GB]
+		port            = 0;
+		queue           = 'inferno'; %queue
+		time            = 60; %time requested per run [minutes]
+		accountname     = 'gts-arobel3-atlas'; %group account name
+		codepath        = ''; %path to issm binaries
+		executionpath   = ''; %path for execution folder
+	%}}}
+	end
+	methods
+		function cluster=pace(varargin) % {{{
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name of cluster (e.g. login-phoenix-4.pace.gatech.edu): %s',cluster.name));
+			disp(sprintf('    login (personal login): %s',cluster.login));
+			disp(sprintf('    numnodes (advice: leave this to 1): %i',cluster.numnodes));
+			disp(sprintf('    np (number of processors per node for each job): %i',cluster.np));
+			disp(sprintf('    mem (memory request per job): %i',cluster.mem));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    queue (inferno/embers): %s',cluster.queue));
+			disp(sprintf('    time (run time per job in minutes): %i',cluster.time));
+			disp(sprintf('    codepath (directory with ISSM binaries): %s',cluster.codepath));
+			disp(sprintf('    executionpath (directory for the outputs): %s',cluster.executionpath));
+			disp(sprintf('    accountname (PI account): %s',cluster.accountname));
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			available_queues        = {'inferno','embers'};
+			queue_requirements_time = [30240,480];
+         queue_requirements_np   = [28,28];
+         QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,cluster.time)
+		
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			executable = 'issm.exe';
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/sh\n');
+
+			fprintf(fid,'#SBATCH -t%i\n',cluster.time);
+         fprintf(fid,'#SBATCH -J%s\n',modelname);
+         fprintf(fid,'#SBATCH -N 1 --ntasks-per-node=%i\n',cluster.np);
+         %fprintf(fid,'#SBATCH -N %i\n',cluster.numnodes);
+         %fprintf(fid,'#SBATCH --ntasks=1\n');
+         %fprintf(fid,'#SBATCH --cpus-per-task=%i\n',cluster.np);
+         fprintf(fid,'#SBATCH --mem-per-cpu=%iG\n',cluster.mem);
+         fprintf(fid,'#SBATCH -p%s\n',cluster.queue);
+         fprintf(fid,'#SBATCH -A %s\n',cluster.accountname);
+         fprintf(fid,'#SBATCH -o%s/%s/%s.outlog \n',cluster.executionpath,dirname,modelname);
+         fprintf(fid,'#SBATCH -e%s/%s/%s.errlog \n\n',cluster.executionpath,dirname,modelname);
+         fprintf(fid,'export SLURM_SUBMIT_DIR=%s\n',[cluster.executionpath '/' dirname]);
+         fprintf(fid,'cd $SLURM_SUBMIT_DIR\n');
+         fprintf(fid,'export LD_LIBRARY_PATH=/opt/slurm/current/lib:/opt/pmix/current/lib:$LD_LIBRARY_PATH \n');
+         fprintf(fid,'srun --mpi=pmi2 -n %i %s/%s %s %s %s \n',cluster.np,cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+
+			fclose(fid);
+
+		end
+		%}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch) % {{{
+
+			disp('launching solution sequence on remote cluster');
+			if ~isempty(restart)
+				launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && sbatch ' modelname '.queue '];
+			else
+				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && sbatch ' modelname '.queue '];
+			end
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/pfe.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/pfe.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/pfe.m	(revision 27955)
@@ -0,0 +1,463 @@
+%PFE cluster class definition
+%
+%   Usage:
+%      cluster=pfe();
+%      cluster=pfe('np',3);
+%      cluster=pfe('np',3,'login','username');
+
+classdef pfe
+	properties (SetAccess=public)
+		% {{{
+		name           = 'pfe'
+		login          = '';
+		modules        = {'comp-intel/2018.3.222' '/nasa/intel/impi/2021.3/modulefiles/mpi/2021.3.0' 'scicon/app-tools'};
+		numnodes       = 20;
+		cpuspernode    = 8;
+		port           = 1025;
+		queue          = 'long';
+		time           = 12*60;
+		processor      = 'ivy';
+		srcpath        = '';
+		extpkgpath     = '';
+		codepath       = '';
+		executionpath  = '';
+		grouplist      = '';
+		interactive    = 0;
+		bbftp          = 0;
+		numstreams     = 8;
+		hyperthreading = 0;
+	end
+	%}}}
+	methods
+		function cluster=pfe(varargin) % {{{
+
+			%initialize cluster using default settings if provided
+			if (exist('pfe_settings')==2), pfe_settings; end
+
+			%use provided options to change fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			% display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    modules: %s',strjoin(cluster.modules,', ')));
+			disp(sprintf('    numnodes: %i',cluster.numnodes));
+			disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			disp(sprintf('    np: %i',cluster.nprocs()));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    queue: %i',cluster.queue));
+			disp(sprintf('    time: %i',cluster.time));
+			disp(sprintf('    processor: %i',cluster.processor));
+			disp(sprintf('    srcpath: %s',cluster.srcpath));
+			disp(sprintf('    extpkgpath: %s',cluster.extpkgpath));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    grouplist: %s',cluster.grouplist));
+			disp(sprintf('    interactive: %i',cluster.interactive));
+			disp(sprintf('    bbftp: %s',cluster.bbftp));
+			disp(sprintf('    numstreams: %s',cluster.numstreams));
+			disp(sprintf('    hyperthreading: %s',cluster.hyperthreading));
+		end
+		%}}}
+		function numprocs=nprocs(cluster) % {{{
+			%compute number of processors
+			numprocs=cluster.numnodes*cluster.cpuspernode;
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			available_queues={'long','normal','debug','devel','alphatst@pbspl233'};
+			queue_requirements_time=[5*24*60 8*60 2*60 2*60 24*60];
+			queue_requirements_np=[2048 2048 150 150 2048];
+
+			QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.nprocs(),cluster.time)
+
+			%now, check cluster.cpuspernode according to processor type
+			if strcmpi(cluster.processor,'ivy'),
+				if cluster.hyperthreading,
+					if ((cluster.cpuspernode>40 ) | (cluster.cpuspernode<1)),
+						md = checkmessage(md,'cpuspernode should be between 1 and 40 for ''ivy'' processors in hyperthreading mode');
+					end
+				else
+					if ((cluster.cpuspernode>20 ) | (cluster.cpuspernode<1)),
+						md = checkmessage(md,'cpuspernode should be between 1 and 20 for ''ivy'' processors');
+					end
+				end
+			elseif strcmpi(cluster.processor,'bro'),
+				if cluster.hyperthreading,
+					if ((cluster.cpuspernode>56 ) | (cluster.cpuspernode<1)),
+						md = checkmessage(md,'cpuspernode should be between 1 and 56 for ''bro'' processors in hyperthreading mode');
+					end
+				else
+					if ((cluster.cpuspernode>28 ) | (cluster.cpuspernode<1)),
+						md = checkmessage(md,'cpuspernode should be between 1 and 28 for ''bro'' processors');
+					end
+				end
+			elseif strcmpi(cluster.processor,'has'),
+				if cluster.hyperthreading,
+					if ((cluster.cpuspernode>48 ) | (cluster.cpuspernode<1)),
+						md = checkmessage(md,'cpuspernode should be between 1 and 48 for ''has'' processors in hyperthreading mode');
+					end
+				else
+					if ((cluster.cpuspernode>24 ) | (cluster.cpuspernode<1)),
+						md = checkmessage(md,'cpuspernode should be between 1 and 24 for ''has'' processors');
+					end
+				end
+			
+			elseif strcmpi(cluster.processor,'san'),
+				if cluster.hyperthreading,
+					if ((cluster.cpuspernode>32 ) | (cluster.cpuspernode<1)),
+						md = checkmessage(md,'cpuspernode should be between 1 and 32 for ''san'' processors in hyperthreading mode');
+					end
+				else
+					if ((cluster.cpuspernode>16 ) | (cluster.cpuspernode<1)),
+						md = checkmessage(md,'cpuspernode should be between 1 and 16 for ''san'' processors');
+					end
+				end
+
+			elseif strcmpi(cluster.processor,'cas_ait'),
+				if cluster.hyperthreading,
+					if ((cluster.cpuspernode>80 ) | (cluster.cpuspernode<1)),
+						md = checkmessage(md,'cpuspernode should be between 1 and 80 for ''cas_ait'' processors in hyperthreading mode');
+					end
+				else
+					if ((cluster.cpuspernode>40 ) | (cluster.cpuspernode<1)),
+						md = checkmessage(md,'cpuspernode should be between 1 and 40 for ''cas_ait'' processors');
+					end
+				end
+			
+			else
+				md = checkmessage(md,'unknown processor type, should be ''bro'', ''has'', ''ivy'', ''san'', or ''cas_ait''');
+			end
+
+			%Miscellaneous
+			if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			if isempty(cluster.srcpath), md = checkmessage(md,'srcpath empty'); end
+			if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+			if isempty(cluster.grouplist), md = checkmessage(md,'grouplist empty'); end
+
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			executable='issm.exe';
+			if isdakota,
+				version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				if (version>=6),
+					executable='issm_dakota.exe';
+				end
+			end
+			if isoceancoupling,
+				executable='issm_ocean.exe';
+			end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#PBS -S /bin/bash\n');
+%			fprintf(fid,'#PBS -N %s\n',modelname);
+			fprintf(fid,'#PBS -l select=%i:ncpus=%i:model=%s\n',cluster.numnodes,cluster.cpuspernode,cluster.processor);
+			fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); %walltime is in seconds.
+			fprintf(fid,'#PBS -q %s\n',cluster.queue);
+			fprintf(fid,'#PBS -W group_list=%s\n',cluster.grouplist);
+			fprintf(fid,'#PBS -m e\n');
+			fprintf(fid,'#PBS -o %s/%s/%s.outlog \n',cluster.executionpath,dirname,modelname);
+			fprintf(fid,'#PBS -e %s/%s/%s.errlog \n\n',cluster.executionpath,dirname,modelname);
+			fprintf(fid,'. /usr/share/modules/init/bash\n\n');
+			for i=1:numel(cluster.modules), fprintf(fid,['module load ' cluster.modules{i} '\n']); end
+			fprintf(fid,'export PATH="$PATH:."\n\n');
+			fprintf(fid,'export MPI_LAUNCH_TIMEOUT=520\n');
+			fprintf(fid,'export MPI_GROUP_MAX=64\n\n');
+			fprintf(fid,'export ISSM_DIR="%s"\n',cluster.srcpath); %FIXME
+			if cluster.extpkgpath
+				fprintf(fid,'export ISSM_EXT_DIR="%s"\n',cluster.extpkgpath); 
+			end
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'cd %s/%s/\n\n',cluster.executionpath,dirname);
+			if ~isvalgrind,
+				fprintf(fid,'/u/scicon/tools/bin/several_tries mpiexec -np %i mbind.x -cs -n%i %s/%s %s %s/%s %s\n',cluster.nprocs(),cluster.cpuspernode,cluster.codepath,executable,solution,cluster.executionpath,dirname,modelname);
+			else
+				fprintf(fid,'mpiexec -np %i valgrind --leak-check=full %s/%s %s %s %s\n',cluster.nprocs(),cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+			end
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.run'],'w');
+				if cluster.interactive==10,
+						fprintf(fid,'module unload mpi-mvapich2/1.4.1/gcc\n');
+						fprintf(fid,'mpiexec -np %i %s/%s %s %s %s\n',cluster.nprocs(),cluster.codepath,executable,solution,[pwd() '/run'],modelname);
+				else
+					if ~isvalgrind,
+						fprintf(fid,'mpiexec -np %i %s/%s %s %s %s\n',cluster.nprocs(),cluster.codepath,executable,solution,[cluster.executionpath '/Interactive' num2str(cluster.interactive)],modelname);
+					else
+						fprintf(fid,'mpiexec -np %i valgrind --leak-check=full %s/%s %s %s %s\n',cluster.nprocs(),cluster.codepath,executable,solution,[cluster.executionpath '/Interactive' num2str(cluster.interactive)],modelname);
+					end
+				end
+				if ~io_gather, %concatenate the output files:
+					fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				end
+				fclose(fid);
+				fid=fopen([modelname '.errlog'],'w');
+				fclose(fid);
+				fid=fopen([modelname '.outlog'],'w');
+				fclose(fid);
+			end
+		end %}}}
+		function BuildQueueScriptMultipleModels(cluster,dirname,modelname,solution,dirnames,modelnames,nps) % {{{
+
+			%some checks: 
+			if isempty(modelname), error('BuildQueueScriptMultipleModels error message: need a non empty model name!');end
+
+			%what is the executable being called? 
+			executable='issm_slc.exe';
+
+			if ispc & ~ismingw, error('BuildQueueScriptMultipleModels not support yet on windows machines');end;
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+
+			fprintf(fid,'#PBS -S /bin/bash\n');
+			fprintf(fid,'#PBS -N %s\n',modelname);
+			fprintf(fid,'#PBS -l select=%i:ncpus=%i:model=%s\n',cluster.numnodes,cluster.cpuspernode,cluster.processor);
+			fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); %walltime is in seconds.
+			fprintf(fid,'#PBS -q %s \n',cluster.queue);
+			fprintf(fid,'#PBS -W group_list=%s\n',cluster.grouplist);
+			fprintf(fid,'#PBS -m e\n');
+			fprintf(fid,'#PBS -o %s.outlog \n',[cluster.executionpath '/' dirname '/' modelname]);
+			fprintf(fid,'#PBS -e %s.errlog \n\n',[cluster.executionpath '/' dirname '/' modelname]);
+			fprintf(fid,'. /usr/share/modules/init/bash\n\n');
+			for i=1:numel(cluster.modules), fprintf(fid,['module load ' cluster.modules{i} '\n']); end
+			fprintf(fid,'export PATH="$PATH:."\n\n');
+			fprintf(fid,'export MPI_GROUP_MAX=64\n\n');
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'cd %s/%s/\n\n',cluster.executionpath,dirname);
+
+			%number of cpus: 
+			mpistring=sprintf('mpiexec -np %i ',cluster.numnodes*cluster.cpuspernode);
+
+			%executable: 
+			mpistring=[mpistring sprintf('%s/%s ',cluster.codepath,executable)];
+
+			%solution name: 
+			mpistring=[mpistring sprintf('%s ',solution)];
+
+			%execution directory and model name: 
+			mpistring=[mpistring sprintf('%s/%s %s',cluster.executionpath,dirname,modelname)];
+
+			%inform main executable of how many icecaps, glaciers and earth models are being run: 
+			mpistring=[mpistring sprintf(' %i ',length(dirnames))];
+
+			%icecaps, glaciers and earth location, names and number of processors associated:
+			for i=1:length(dirnames),
+				mpistring=[mpistring sprintf(' %s/%s %s %i ',cluster.executionpath,dirnames{i},modelnames{i},nps{i})];
+			end
+
+			%write this long string to disk: 
+			fprintf(fid,mpistring);
+			fclose(fid);
+
+			if cluster.interactive,
+				fid=fopen([modelname '.run'],'w');
+
+				%number of cpus: 
+				mpistring=sprintf('mpiexec -np %i ',cluster.numnodes*cluster.cpuspernode);
+
+				%executable: 
+				mpistring=[mpistring sprintf('%s/%s ',cluster.codepath,executable)];
+
+				%solution name: 
+				mpistring=[mpistring sprintf('%s ',solution)];
+
+				%execution directory and model name: 
+				mpistring=[mpistring sprintf('%s/%s %s',cluster.executionpath,dirname,modelname)];
+
+				%inform main executable of how many icecaps, glaciers and earth models are being run: 
+				mpistring=[mpistring sprintf(' %i ',length(dirnames))];
+
+				%icecaps, glaciers and earth location, names and number of processors associated:
+				for i=1:length(dirnames),
+					mpistring=[mpistring sprintf(' %s/Interactive%i %s %i ',cluster.executionpath,cluster.interactive,modelnames{i},nps{i})];
+				end
+
+				%write this long string to disk: 
+				fprintf(fid,mpistring);
+				fclose(fid);
+
+				fid=fopen([modelname '.errlog'],'w');
+				fclose(fid);
+				fid=fopen([modelname '.outlog'],'w');
+				fclose(fid);
+			end
+		end
+		%}}}
+		function BuildKrigingQueueScript(cluster,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#PBS -S /bin/bash\n');
+			%			fprintf(fid,'#PBS -N %s\n',modelname);
+			fprintf(fid,'#PBS -l select=%i:ncpus=%i:model=%s\n',cluster.numnodes,cluster.cpuspernode,cluster.processor);
+			fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); %walltime is in seconds.
+			fprintf(fid,'#PBS -q %s \n',cluster.queue);
+			fprintf(fid,'#PBS -W group_list=%s\n',cluster.grouplist);
+			fprintf(fid,'#PBS -m e\n');
+			fprintf(fid,'#PBS -o %s.outlog \n',modelname);
+			fprintf(fid,'#PBS -e %s.errlog \n\n',modelname);
+			fprintf(fid,'. /usr/share/modules/init/bash\n\n');
+			for i=1:numel(cluster.modules), fprintf(fid,['module load ' cluster.modules{i} '\n']); end
+			fprintf(fid,'export PATH="$PATH:."\n');
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'export MPI_GROUP_MAX=64\n\n');
+			fprintf(fid,'cd %s/%s/\n\n',cluster.executionpath,modelname);
+			fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s\n',cluster.nprocs(),cluster.codepath,[cluster.executionpath '/' modelname],modelname); %FIXME
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.run'],'w');
+				if ~isvalgrind,
+					fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s\n',cluster.nprocs(),cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+				else
+					fprintf(fid,'mpiexec -np %i valgrind --leak-check=full %s/kriging.exe %s %s\n',cluster.nprocs(),cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+				end
+				if ~io_gather, %concatenate the output files:
+					fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				end
+				fclose(fid);
+				fid=fopen([modelname '.errlog'],'w');
+				fclose(fid);
+				fid=fopen([modelname '.outlog'],'w');
+				fclose(fid);
+			end
+		end %}}}
+		function BuildOceanQueueScript(np,cluster,modelname) % {{{
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#PBS -S /bin/bash\n');
+			fprintf(fid,'#PBS -l select=1:ncpus=%i:model=%s\n',np,cluster.processor);
+			fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); %walltime is in seconds.
+			fprintf(fid,'#PBS -q %s \n',cluster.queue);
+			fprintf(fid,'#PBS -W group_list=%s\n',cluster.grouplist);
+			fprintf(fid,'#PBS -m e\n');
+			fprintf(fid,'#PBS -o %s.outlog \n',modelname);
+			fprintf(fid,'#PBS -e %s.errlog \n\n',modelname);
+			fprintf(fid,'. /usr/share/modules/init/bash\n\n');
+			%for i=1:numel(cluster.modules), fprintf(fid,['module load ' cluster.modules{i} '\n']); end %FIXME: should use this!
+			fprintf(fid,'module load comp-intel/2016.2.181\n');
+			fprintf(fid,'module load netcdf/4.4.1.1_mpt\n');
+			fprintf(fid,'module load mpi-sgi/mpt.2.15r20\n');
+			fprintf(fid,'export PATH="$PATH:."\n');
+			fprintf(fid,'export MPI_GROUP_MAX=64\n\n');
+			fprintf(fid,['cd ' pwd() ' \n\n']);
+			fprintf(fid,'mpiexec -np %i ./mitgcmuv\n',np); 
+		%	if ~io_gather, %concatenate the output files:
+		%		fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+		%	end
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.run'],'w');
+				fprintf(fid,'module load mpi-sgi/mpt.2.15r20\n');
+				fprintf(fid,['mpiexec -np %i ./mitgcmuv \n'],np);
+				fprintf(fid,['touch ' modelname '.lock %s\n']);
+				fclose(fid);
+				fid=fopen([modelname '.errlog'],'w');
+				fclose(fid);
+				fid=fopen([modelname '.outlog'],'w');
+				fclose(fid);
+			end
+
+		end %}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz'];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			if cluster.interactive,
+				compressstring = [compressstring ' ' modelname '.run '  modelname '.errlog ' modelname '.outlog '];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queueing script');
+			if cluster.interactive==10,
+				directory=[pwd() '/run/'];
+			elseif cluster.interactive,
+				directory=[cluster.executionpath '/Interactive' num2str(cluster.interactive)];
+			else 
+				directory=cluster.executionpath;
+			end
+
+			if cluster.bbftp,
+				issmbbftpout(cluster.name,directory,cluster.login,cluster.port,cluster.numstreams,{[dirname '.tar.gz']});
+			else
+				issmscpout(cluster.name,directory,cluster.login,cluster.port,{[dirname '.tar.gz']});
+			end
+
+		end
+		%}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch) % {{{
+
+			%launch command, to be executed via ssh
+			if cluster.interactive,
+				if ~isempty(restart)
+					launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive)];
+				else
+					if cluster.interactive==10,
+						launchcommand=['cd ' pwd() '/run && tar -zxf ' dirname '.tar.gz'];
+					else
+						launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive) ' && tar -zxf ' dirname '.tar.gz'];
+					end
+				end
+			else
+				if ~isempty(restart)
+					launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+				else
+					launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz && qsub ' modelname '.queue '];
+				end
+			end
+
+			disp('launching solution sequence on remote cluster');
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end
+		%}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			if cluster.interactive==10,
+				directory=[pwd() '/run/'];
+			elseif ~cluster.interactive,
+				directory=[cluster.executionpath '/' dirname '/'];
+			else
+				directory=[cluster.executionpath '/Interactive' num2str(cluster.interactive) '/'];
+			end
+
+			if cluster.bbftp,
+				issmbbftpin(cluster.name, cluster.login, cluster.port, cluster.numstreams, directory, filelist);
+			else
+				issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+			end
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/pfe.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/pfe.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/pfe.py	(revision 27955)
@@ -0,0 +1,226 @@
+import subprocess
+
+from fielddisplay import fielddisplay
+from helpers import *
+from IssmConfig import IssmConfig
+from issmscpin import issmscpin
+from issmscpout import issmscpout
+from issmssh import issmssh
+from MatlabFuncs import *
+from pairoptions import pairoptions
+try:
+    from pfe_settings import pfe_settings
+except ImportError:
+    # print('You need pfe_settings.py to proceed, check presence and sys.path')
+    pass
+from QueueRequirements import QueueRequirements
+
+class pfe(object):
+    """PFE cluster class definition
+
+    Usage:
+        cluster = pfe()
+        cluster = pfe('np', 3)
+        cluster = pfe('np', 3, 'login', 'username')
+    """
+
+    def __init__(self, *args):  # {{{
+        self.name = ''
+        self.login = ''
+        self.modules = ['comp-intel/2018.3.222', 'mpi-intel/2018.3.222', 'scicon/app-tools']
+        self.numnodes = 20
+        self.cpuspernode = 8
+        self.port = 1025
+        self.queue = 'long'
+        self.time = 12 * 60
+        self.processor = 'ivy'
+        self.srcpath = ''
+        self.extpkgpath = ''
+        self.codepath = ''
+        self.executionpath = ''
+        self.grouplist = ''
+        self.interactive = 0
+        self.bbftp = 0
+        self.numstreams = 8
+        self.hyperthreading = 0
+
+        # Use provided options to change fields
+        options = pairoptions(*args)
+
+        # Initialize cluster using user settings if provided
+        try:
+            self = pfe_settings(self)
+        except NameError:
+            #print('pfe_settings.py not found, using default settings')
+            pass
+
+        # OK get other fields
+        self = options.AssignObjectFields(self)
+    # }}}
+
+    def __repr__(self):  # {{{
+        # Display the object
+        s = 'class pfe object\n'
+        s += '    name: {}\n'.format(self.name)
+        s += '    login: {}\n'.format(self.login)
+        s += '    modules: {}\n'.format(strjoin(self.modules, ', '))
+        s += '    numnodes: {}\n'.format(self.numnodes)
+        s += '    cpuspernode: {}\n'.format(self.cpuspernode)
+        s += '    np: {}\n'.format(self.nprocs())
+        s += '    port: {}\n'.format(self.port)
+        s += '    queue: {}\n'.format(self.queue)
+        s += '    time: {}\n'.format(self.time)
+        s += '    processor: {}\n'.format(self.processor)
+        s += '    srcpath: {}\n'.format(self.srcpath)
+        s += '    extpkgpath: {}\n'.format(self.extpkgpath)
+        s += '    codepath: {}\n'.format(self.codepath)
+        s += '    executionpath: {}\n'.format(self.executionpath)
+        s += '    grouplist: {}\n'.format(self.grouplist)
+        s += '    interactive: {}\n'.format(self.interactive)
+        s += '    bbftp: {}\n'.format(self.bbftp)
+        s += '    numstreams: {}\n'.format(self.numstreams)
+        s += '    hyperthreading: {}\n'.format(self.hyperthreading)
+        return s
+    # }}}
+
+    def nprocs(self):  # {{{
+        return self.numnodes * self.cpuspernode
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        queuedict = {'long': [5 * 24 * 60, 2048],
+                     'normal': [8 * 60, 2048],
+                     'debug': [2 * 60, 150],
+                     'devel': [2 * 60, 150]}
+        QueueRequirements(queuedict, self.queue, self.nprocs(), self.time)
+
+        # Now, check cluster.cpuspernode according to processor type
+        if self.processor == 'ivy':
+            if self.hyperthreading:
+                if self.cpuspernode > 40 or self.cpuspernode < 1:
+                    md = md.checkmessage('cpuspernode should be between 1 and 40 for \'ivy\' processors in hyperthreading mode')
+            else:
+                if self.cpuspernode > 20 or self.cpuspernode < 1:
+                    md = md.checkmessage('cpuspernode should be between 1 and 20 for \'ivy\' processors')
+        elif self.processor == 'bro':
+            if self.hyperthreading:
+                if self.cpuspernode > 56 or self.cpuspernode < 1:
+                    md = md.checkmessage('cpuspernode should be between 1 and 56 for \'bro\' processors in hyperthreading mode')
+            else:
+                if self.cpuspernode > 28 or self.cpuspernode < 1:
+                    md = md.checkmessage('cpuspernode should be between 1 and 28 for \'bro\' processors')
+        elif self.processor == 'has':
+            if self.hyperthreading:
+                if self.cpuspernode > 48 or self.cpuspernode < 1:
+                    md = md.checkmessage('cpuspernode should be between 1 and 48 for \'has\' processors in hyperthreading mode')
+            else:
+                if self.cpuspernode > 24 or self.cpuspernode < 1:
+                    md = md.checkmessage('cpuspernode should be between 1 and 24 for \'has\' processors')
+        elif self.processor == 'san':
+            if self.hyperthreading:
+                if self.cpuspernode > 32 or self.cpuspernode < 1:
+                    md = md.checkmessage('cpuspernode should be between 1 and 32 for \'san\' processors in hyperthreading mode')
+            else:
+                if self.cpuspernode > 16 or self.cpuspernode < 1:
+                    md = md.checkmessage('cpuspernode should be between 1 and 16 for \'san\' processors')
+        elif self.processor == 'cas_ait':
+            if self.hyperthreading:
+                if self.cpuspernode > 80 or self.cpuspernode < 1:
+                    md = md.checkmessage('cpuspernode should be between 1 and 80 for \'cas_ait\' processors in hyperthreading mode')
+            else:
+                if self.cpuspernode > 40 or self.cpuspernode < 1:
+                    md = md.checkmessage('cpuspernode should be between 1 and 40 for \'cas_ait\' processors')
+        else:
+            md = md.checkmessage('unknown processor type, should be \'bro\', \'has\', \'ivy\', \'san\', or \'cas_ait\'')
+
+        # Miscellaneous
+        if not self.login:
+            md = md.checkmessage('login empty')
+        if not self.srcpath:
+            md = md.checkmessage('srcpath empty')
+        if not self.codepath:
+            md = md.checkmessage('codepath empty')
+        if not self.executionpath:
+            md = md.checkmessage('executionpath empty')
+        if not self.grouplist:
+            md = md.checkmessage('grouplist empty')
+
+        return self
+    # }}}
+
+    def BuildQueueScript(self, dirname, modelname, solution, io_gather, isvalgrind, isgprof, isdakota, isoceancoupling):  # {{{
+        if isgprof:
+            print('gprof not supported by cluster, ignoring...')
+
+        executable = 'issm.exe'
+        if isdakota:
+            version = IssmConfig('_DAKOTA_VERSION_')[0:2]
+            version = float(version)
+            if version >= 6:
+                executable = 'issm_dakota.exe'
+        if isoceancoupling:
+            executable = 'issm_ocean.exe'
+
+        # Write queuing script
+        fid = open(modelname + '.queue', 'w')
+        fid.write('#PBS -S /bin/bash\n')
+        fid.write('#PBS -l select={}:ncpus={}:model={}\n'.format(self.numnodes, self.cpuspernode, self.processor))
+        fid.write('#PBS -l walltime={}\n'.format(self.time * 60)) # walltime is in seconds
+        fid.write('#PBS -q {} \n'.format(self.queue))
+        fid.write('#PBS -W group_list={}\n'.format(self.grouplist))
+        fid.write('#PBS -m e\n')
+        fid.write('#PBS -o {}/{}/{}.outlog \n'.format(self.executionpath, dirname, modelname))
+        fid.write('#PBS -e {}/{}/{}.errlog \n\n'.format(self.executionpath, dirname, modelname))
+        fid.write('. /usr/share/modules/init/bash\n\n')
+        for i in range(len(self.modules)):
+            fid.write('module load {}\n'.format(self.modules[i]))
+        fid.write('export PATH="$PATH:."\n\n')
+        fid.write('export MPI_LAUNCH_TIMEOUT=520\n')
+        fid.write('export MPI_GROUP_MAX=64\n\n')
+        fid.write('export ISSM_DIR="{}"\n'.format(self.srcpath)) # FIXME
+        if self.extpkgpath:
+            fid.write('export ISSM_EXT_DIR="{}"\n'.format(self.extpkgpath)) 
+        fid.write('source $ISSM_DIR/etc/environment.sh\n') # FIXME
+        fid.write('cd {}/{}/\n\n'.format(self.executionpath, dirname))
+        fid.write('mpiexec -np {} {}/{} {} {}/{} {}\n'.format(self.nprocs(), self.codepath, executable, solution, self.executionpath, dirname, modelname))
+
+        fid.close()
+    # }}}
+
+    def UploadQueueJob(self, modelname, dirname, filelist):  # {{{
+        # Compress the files into one zip
+        compressstring = 'tar -zcf {}.tar.gz'.format(dirname)
+        for file in filelist:
+            compressstring += ' {}'.format(file)
+        subprocess.call(compressstring, shell=True)
+
+        print('uploading input file and queueing script')
+        directory = self.executionpath
+        issmscpout(self.name, directory, self.login, self.port, [dirname + '.tar.gz'])
+
+    # }}}
+    def LaunchQueueJob(self, modelname, dirname, filelist, restart, batch):  # {{{
+        # Launch command, to be executed via ssh
+        if self.interactive:
+            if not isempty(restart):
+                launchcommand = 'cd {} /Interactive{}'.format(self.executionpath, self.interactive)
+            else:
+                if self.interactive == 10:
+                    launchcommand = 'cd {}/run && tar -zxf {}.tar.gz'.format(pwd(), dirname)
+                else:
+                    launchcommand = 'cd {} /Interactive{} && tar -zxf {}.tar.gz'.format(self.executionpath, self.interactive, dirname)
+        else:
+            if not isempty(restart):
+                launchcommand = 'cd {} && cd {} && qsub {}.queue'.format(self.executionpath, dirname, modelname)
+            else:
+                launchcommand = 'cd {} && rm -rf ./{} && mkdir {} && cd {} && mv ../{}.tar.gz ./ && tar -zxf {}.tar.gz  && qsub {}.queue'.format(self.executionpath, dirname, dirname, dirname, dirname, dirname, modelname)
+
+        print('launching solution sequence on remote cluster')
+        issmssh(self.name, self.login, self.port, launchcommand)
+
+    # }}}
+    def Download(self, dirname, filelist):  # {{{
+        # Copy files from cluster to current directory
+        directory = '{}/{}/'.format(self.executionpath, dirname)
+        issmscpin(self.name, self.login, self.port, directory, filelist)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/pollux.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/pollux.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/pollux.m	(revision 27955)
@@ -0,0 +1,104 @@
+%POLLUX class definition
+%
+%   Usage:
+%      cluster=pollux();
+%      cluster=pollux('np',3);
+%      cluster=pollux('np',3,'login','username');
+
+classdef pollux
+	properties (SetAccess=public)
+		% {{{
+		name='pollux'
+		login='username';
+		np=128;
+		port=0;
+		queue='shortp';
+		time=180;
+		codepath='/workc/edw/issm-2.0/bin'
+		executionpath='/workc/edw/Testing/Execution'
+		%}}}
+	end
+	methods
+		function cluster=pollux(varargin) % {{{
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    np: %i',cluster.np));
+			disp(sprintf('    queue: %s',cluster.queue));
+			disp(sprintf('    time: %i',cluster.time));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			available_queues={'shortp','longp'};
+			queue_requirements_time=[180 720];
+			queue_requirements_np=[128 128];
+
+			QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,cluster.time)
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/sh\n');
+			fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); %walltime is in seconds.
+			fprintf(fid,'#PBS -N %s\n',modelname);
+			fprintf(fid,'#PBS -l ncpus=%i\n',cluster.np);
+			if ~isempty(queue),
+				fprintf(fid,'#PBS -q %s\n',cluster.queue);
+			end
+			fprintf(fid,'#PBS -o %s.outlog \n',modelname);
+			fprintf(fid,'#PBS -e %s.errlog \n',modelname);
+			fprintf(fid,'export PBS_O_WORKDIR=%s\n',[cluster.executionpath '/' dirname]);
+			fprintf(fid,'cd $PBS_O_WORKDIR\n');
+			fprintf(fid,'export OMP_NUM_THREADS=1\n');
+			fprintf(fid,'dplace -s1 -c0-%i mpiexec -np %i %s/issm.exe %s %s %s',cluster.np-1,cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			fclose(fid);
+
+		end
+		%}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart) % {{{
+
+			disp('launching solution sequence on remote cluster');
+			if ~isempty(restart)
+				launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+			else
+				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+			end
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end %}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			if cluster.interactive,
+				compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			end
+			system(compressstring);
+
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/raijin.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/raijin.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/raijin.m	(revision 27955)
@@ -0,0 +1,127 @@
+%RAIJIN class definition
+%
+%   Usage:
+%      cluster=raijin();
+%      cluster=raijin('np',3);
+%      cluster=raijin('np',3,'login','username');
+
+classdef raijin
+	properties (SetAccess=public)
+		% {{{
+		name='';
+		login='';
+		np=0;
+		mem=0;
+		time=0;
+		project='';
+		email='';
+		port=0;
+		queue='';
+		codepath='';
+		executionpath='';
+		modules={};
+	end
+	%}}}
+	methods
+		function cluster=raijin(varargin) % {{{
+
+			%initialize cluster using default settings if provided
+			if (exist('raijin_settings')==2), raijin_settings; end
+
+			%use provided options to change fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    np: %i',cluster.np));
+			disp(sprintf('    mem: %i',cluster.mem));
+			disp(sprintf('    time: %i',cluster.time));
+			disp(sprintf('    project: %s',cluster.project));
+			disp(sprintf('    email: %s',cluster.email));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    queue: %s',cluster.queue));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    modules: %s',strjoin(cluster.modules,', ')));
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			available_queues={'express', 'normal'};
+			queue_requirements_time=[5*60 40*60];
+			queue_requirements_np=[256 1024];
+
+			QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,1)
+
+			%Miscellaneous
+			if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#PBS -S /bin/bash\n');
+			fprintf(fid,'#PBS -P %s\n', cluster.project);
+			fprintf(fid,'#PBS -q %s\n',cluster.queue);
+			fprintf(fid,'#PBS -l ncpus=%i\n',cluster.np);
+			fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); % walltime is in seconds
+			fprintf(fid,'#PBS -l mem=%igb\n', cluster.mem);
+			fprintf(fid,'#PBS -M %s\n', cluster.email);
+			fprintf(fid,'#PBS -o %s.outlog\n',(modelname));
+			fprintf(fid,'#PBS -e %s.errlog\n',(modelname));
+			fprintf(fid,'#PBS -l wd\n\n');
+			fprintf(fid,'source ~/.bashrc\n');
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');
+			for i=1:numel(cluster.modules)
+				fprintf(fid,'module load %s\n', cluster.modules{i});
+			end
+			fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+		end %}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch) % {{{
+			
+			disp('launching solution sequence on remote cluster');
+			if ~isempty(restart)
+				launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && qsub ' modelname '.queue '];
+			else
+				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && qsub ' modelname '.queue '];
+			end
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/saga.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/saga.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/saga.py	(revision 27955)
@@ -0,0 +1,175 @@
+import datetime
+import subprocess
+
+from fielddisplay import fielddisplay
+from helpers import *
+from IssmConfig import IssmConfig
+from issmscpin import issmscpin
+from issmscpout import issmscpout
+from issmssh import issmssh
+from pairoptions import pairoptions
+from QueueRequirements import QueueRequirements
+try:
+    from saga_settings import saga_settings
+except ImportError:
+    print('You need saga_settings.py to proceed, check presence and sys.path')
+
+
+class saga(object):
+    """SAGA cluster class definition
+
+    This is a SLURM queue
+
+    Usage:
+        cluster = saga()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.name = 'saga'
+
+        self.numnodes = 1
+        self.cpuspernode = 20
+        self.mem = 2
+        self.queue = 'normal'
+        self.time = 2 * 60
+
+        self.port = []
+        #set by setting file
+        self.login = ''
+        self.codepath = ''
+        self.executionpath = ''
+        self.accountname = ''
+
+        self.interactive = 0
+        self.profiling = 0
+
+        self.valgrind = '/cluster/software/Valgrind/3.16.1-gompi-2019b/bin/valgrind'
+
+        # Use provided options to change fields
+        options = pairoptions(*args)
+        # Initialize cluster using user settings if provided
+        self = saga_settings(self)
+        # OK get other fields
+        self = options.AssignObjectFields(self)
+        self.np = self.numnodes * self.cpuspernode
+    # }}}
+
+    def __repr__(self):  # {{{
+        # Display the object
+        s = "class vilje object:"
+        s = "%s\n%s" % (s, fielddisplay(self, 'name', 'name of the cluster'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'login', 'login'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'numnodes', 'number of nodes'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'cpuspernode', 'number of CPUs per nodes'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'mem', 'memory per CPU'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'queue', 'name of the queue (normal (D), bigmem, devel)'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'time', 'walltime requested in minutes'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'codepath', 'code path on the cluster'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'executionpath', 'execution path on the cluster'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'interactive', ''))
+        s = "%s\n%s" % (s, fielddisplay(self, 'accountname', 'your cluster account'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'profiling', 'enable profiling if 1 default is 0'))
+        return s
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Queue dictionarry  gives queue name as key and max walltime, CPUs, and memory (GB) as var
+        queuedict = {'normal': [7 * 24 * 60, 256, 8],
+                     'bigmem': [14 * 24 * 60, 256, 10],
+                     'devel': [2 * 60, 256, 8]}
+        QueueRequirements(queuedict, self.queue, self.np, self.time)
+
+        # Miscellaneous
+        if not self.login:
+            md = md.checkmessage('login empty')
+        if not self.codepath:
+            md = md.checkmessage('codepath empty')
+        if not self.executionpath:
+            md = md.checkmessage('executionpath empty')
+        if self.interactive == 1:
+            md = md.checkmessage('interactive mode not implemented')
+        return self
+    # }}}
+
+    def BuildQueueScript(self, dirname, modelname, solution, io_gather, isvalgrind, isgprof, isdakota, isoceancoupling):  # {{{
+        executable = 'issm.exe'
+        if isdakota:
+            version = IssmConfig('_DAKOTA_VERSION_')[0:2]
+            version = float(version)
+            if version >= 6:
+                executable = 'issm_dakota.exe'
+        if isoceancoupling:
+            executable = 'issm_ocean.exe'
+        # Write queuing script
+        shortname = modelname[0:min(12, len(modelname))]
+        timeobj = datetime.timedelta(minutes=self.time)
+        m, s = divmod(timeobj.total_seconds(), 60)
+        h, m = divmod(m, 60)
+        d, h = divmod(h, 24)
+        timestring = "%02d-%02d:%02d:%02d" % (d, h, m, s)
+        print('timestring')
+        fid = open(modelname + '.queue', 'w')
+        fid.write('#!/bin/bash -l\n')
+        fid.write('#SBATCH --job-name=%s \n' % shortname)
+        if self.queue in ['devel']:
+            fid.write('#SBATCH --partition=normal \n')
+            fid.write('#SBATCH --qos=%s \n' % self.queue)
+        else:
+            fid.write('#SBATCH --partition=%s \n' % self.queue)
+
+        fid.write('#SBATCH --nodes=%i \n' % self.numnodes)
+        fid.write('#SBATCH --ntasks=%i \n' % self.cpuspernode)
+        fid.write('#SBATCH --time={}\n'.format(timestring))  #walltime is minutes
+        fid.write('#SBATCH --mem-per-cpu={}M\n'.format(int(1000 * self.mem)))  # mem is in MB
+
+        fid.write('#SBATCH --account=%s\n' % self.accountname)
+        fid.write('#SBATCH --output %s/%s/%s.outlog \n' % (self.executionpath, dirname, modelname))
+        fid.write('#SBATCH --error %s/%s/%s.errlog \n\n' % (self.executionpath, dirname, modelname))
+
+        fid.write('export ISSM_DIR="%s/../"\n' % self.codepath)
+        fid.write('module purge\n')
+        fid.write('module load CMake/3.15.3-GCCcore-8.3.0\n')
+        fid.write('module load PETSc/3.12.4-foss-2019b\n')
+        fid.write('module load ParMETIS/4.0.3-gompi-2019b\n')
+        if isvalgrind:
+            fid.write('module --ignore-cache load Valgrind/3.16.1-gompi-2019b \n')
+
+        fid.write('cd %s/%s/ \n\n' % (self.executionpath, dirname))
+        if isvalgrind:
+            # profiling
+            #fid.write('srun {} --tool=callgrind {}/{} {} {}/{} {} 2>{}.errlog>{}.outlog \n'.format(self.valgrind, self.codepath, executable, solution, self.executionpath, dirname, modelname, modelname, modelname))
+            # leak check
+            fid.write('mpirun --bind-to none {} --leak-check=full {}/{} {} {}/{} {} 2>{}.errlog>{}.outlog '.format(self.valgrind, self.codepath, executable, solution, self.executionpath, dirname, modelname, modelname, modelname))
+        else:
+            fid.write('time mpirun --bind-to none {}/{} {} {}/{} {}\n'.format(self.codepath, executable, solution, self.executionpath, dirname, modelname))
+        fid.close()
+
+    # }}}
+    def UploadQueueJob(self, modelname, dirname, filelist):  # {{{
+        # Compress the files into one zip
+        compressstring = 'tar -zcf %s.tar.gz ' % dirname
+        for file in filelist:
+            compressstring += ' {}'.format(file)
+        subprocess.call(compressstring, shell=True)
+
+        print('uploading input file and queuing script')
+        issmscpout(self.name, self.executionpath, self.login, self.port, [dirname + '.tar.gz'])
+    # }}}
+
+    def LaunchQueueJob(self, modelname, dirname, filelist, restart, batch):  # {{{
+        print('launching solution sequence on remote cluster')
+        if not isempty(restart):
+            launchcommand = 'cd %s && cd %s && sbatch %s.queue' % (self.executionpath, dirname, modelname)
+        else:
+            launchcommand = 'cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && sbatch %s.queue' % (self.executionpath, dirname, dirname, dirname, dirname, dirname, modelname)
+        issmssh(self.name, self.login, self.port, launchcommand)
+    # }}}
+
+    def Download(self, dirname, filelist):  # {{{
+        # Copy files from cluster to current directory
+        directory = '%s/%s/' % (self.executionpath, dirname)
+        try:
+            issmscpin(self.name, self.login, self.port, directory, filelist)
+        except OSError:
+            print("File does not exsit, skiping")
+            # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/sherlock.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/sherlock.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/sherlock.m	(revision 27955)
@@ -0,0 +1,160 @@
+%SHERLOCK cluster class definition
+%
+%   Usage:
+%      cluster=sherlock();
+%      cluster=sherlock('np',3);
+%      cluster=sherlock('np',3,'login','username');
+
+classdef sherlock
+	properties (SetAccess=public)
+		% {{{
+		name          = 'sherlock'
+		login         = '';
+		numnodes      = 1;
+		cpuspernode   = 24;
+		port          = 0;
+		codepath      = '';
+		executionpath = '';
+		interactive   = 0;
+		time          = 30;
+		memory        = 2;
+	end
+	%}}}
+	methods
+		function cluster=sherlock(varargin) % {{{
+
+			%initialize cluster using default settings if provided
+			if (exist('sherlock_settings')==2), sherlock_settings; end
+
+			%use provided options to change fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    numnodes: %i',cluster.numnodes));
+			disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			disp(sprintf('    np: %i',cluster.nprocs()));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    interactive: %i',cluster.interactive));
+			disp(sprintf('    time: %i',cluster.time));
+			disp(sprintf('    memory: %i',cluster.memory));
+		end
+		%}}}
+		function numprocs=nprocs(cluster) % {{{
+			%compute number of processors
+			numprocs=cluster.numnodes*cluster.cpuspernode;
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			%Miscellaneous
+			if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+
+		end
+		%}}}
+		function BuildKrigingQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#SBATCH --job-name=%s\n',mdelname);
+			fprintf(fid,'#SBATCH -p %s \n',cluster.queue);
+			fprintf(fid,'#SBATCH -N %i -n %i\n',cluster.numnodes,cluster.cpuspernode);
+			fprintf(fid,'#SBATCH --time=%i\n',cluster.time*60); %walltime is in seconds.
+			fprintf(fid,'#SBATCH --mem-per-cpu=%igb\n',cluster.memory);
+			fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			fprintf(fid,'#SBATCH -e %s.errlog \n\n',modelname);
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+			fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s\n',cluster.nprocs(),cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#SBATCH --job-name=%s\n',modelname);
+			fprintf(fid,'#SBATCH -N %i -n %i\n',cluster.numnodes,cluster.cpuspernode);
+			fprintf(fid,'#SBATCH --time=%i\n',cluster.time*60); %walltime is in seconds.
+			fprintf(fid,'#SBATCH --mem-per-cpu=%igb\n',cluster.memory);
+			fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			fprintf(fid,'#SBATCH -e %s.errlog \n\n',modelname);
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+			fprintf(fid,'mpiexec -n %i %s/issm.exe %s %s %s\n',cluster.nprocs(),cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.run'],'w');
+				fprintf(fid,'mpiexec -n %i %s/issm.exe %s %s %s\n',cluster.nprocs(),cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+				if ~io_gather, %concatenate the output files:
+					fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				end
+				fclose(fid);
+				fid=fopen([modelname '.errlog'],'w');
+				fclose(fid);
+				fid=fopen([modelname '.outlog'],'w');
+				fclose(fid);
+			end
+		end %}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			if cluster.interactive,
+				compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch) % {{{
+
+			disp('launching solution sequence on remote cluster');
+			if ~isempty(restart)
+				launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && sbatch ' modelname '.queue '];
+			else
+				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && sbatch ' modelname '.queue '];
+			end
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/tetralith.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/tetralith.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/tetralith.m	(revision 27955)
@@ -0,0 +1,217 @@
+%TERALITH cluster class definition
+%
+%   Usage:
+%      cluster=tetralith();
+%      cluster=tetralith('np',3);
+%      cluster=tetralith('np',3,'login','username');
+
+classdef tetralith
+	properties (SetAccess=public)
+		% {{{
+		name           = 'tetralith';
+		login          = '';
+		numnodes       = 2;
+		cpuspernode    = 32;
+		mem            = 2000; %MB
+		queue          = 'normal';
+		time           = 2*60; %[minutes]
+		codepath       = '';
+		executionpath  = '';
+		interactive    = 0;
+		port           = [];
+		accountname    = '';
+		% }}}
+	end
+	methods
+		function cluster=tetralith(varargin) % {{{
+
+			%initialize cluster using default settings if provided
+			if (exist('tetralith_settings')==2), tetralith_settings; end
+
+			%use provided options to change fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    numnodes: %i',cluster.numnodes));
+			disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			disp(sprintf('    np: %i',cluster.nprocs()));
+			disp(sprintf('    memory: %i',cluster.mem));
+			disp(sprintf('    queue: %s',cluster.queue));
+			disp(sprintf('    time: %i',cluster.time));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    interactive: %i',cluster.interactive));
+			disp(sprintf('    port: %s',cluster.port));
+			disp(sprintf('    accountname: %s',cluster.accountname));
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			available_queues={'normal','devel'};
+			queue_requirements_time=[7*24*60 60]; 
+			queue_requirements_np=[1024 2*32];
+
+			QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.nprocs(),1)
+
+			%Miscellaneous
+			if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			if isempty(cluster.accountname), md = checkmessage(md,'accountname empty'); end
+			if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+
+		end
+		%}}}
+		function numprocs=nprocs(self) % {{{
+			%compute number of processors
+			numprocs=self.numnodes*self.cpuspernode;
+		end
+		%}}}
+		function BuildKrigingQueueScript(cluster,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			%compute number of processors
+% 			cluster.np=cluster.numnodes*cluster.cpuspernode;
+%			nprocs(cluster);%=cluster.numnodes*cluster.cpuspernode;
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#\n');
+			fprintf(fid,'#SBATCH --job-name=%s\n',modelname);
+% 			fprintf(fid,'#SBATCH -p %s \n',cluster.partition);
+			fprintf(fid,'#SBATCH -A %s \n',cluster.accountname);
+% 			fprintf(fid,'#SBATCH --mail-type=ALL\n');
+			fprintf(fid,'#SBATCH -N %i -n %i\n',cluster.numnodes,cluster.cpuspernode);
+			%calculate walltime in hh:mm:ss format
+			walltime=datestr(cluster.time/(60*24),'HH:MM:SS')
+			fprintf(fid,'#SBATCH -t %s\n',walltime); %walltime should be in hh:mm:ss
+			fprintf(fid,'#SBATCH --mem=%i\n',cluster.mem);
+			fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			fprintf(fid,'#SBATCH -e %s.errlog \n\n',modelname);
+% 			fprintf(fid,'module load intelcomp/17.0.0\n') %module load not recommended within job script at Tetralith
+% 			fprintf(fid,'module load mpt/2.14\n')
+% 			fprintf(fid,'module load petsc/3.7.4d\n')
+% 			fprintf(fid,'module load parmetis/4.0.3\n') 
+% 			fprintf(fid,'module load mumps/5.0.2\n')
+% 			fprintf(fid,'export ISSM_DIR="%s"\n',cluster.codepath); %FIXME
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+% 			fprintf(fid,'mpiexec -np %i %s/%s %s %s %s\n',cluster.nprocs(),cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+% 			fprintf(fid,'mpiexec_mpt -np %i %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+			fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s\n',cluster.nprocs(),cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+% 			fprintf(fid,'mpirun -np %i %s/issm.exe %s %s %s\n',cluster.nprocs(),cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			executable='issm.exe';
+			if isdakota,
+				version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				if (version>=6),
+					executable='issm_dakota.exe';
+				end
+			end
+			if isoceancoupling,
+				executable='issm_ocean.exe';
+			end
+
+			%compute number of processors
+% 			cluster.np=cluster.numnodes*cluster.cpuspernode;
+			nprocs(cluster);%=cluster.numnodes*cluster.cpuspernode;
+% 			shortname = substring(modelname,1,min(12,length(modelname)));
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/bash\n');
+			fprintf(fid,'#\n');
+			fprintf(fid,'#SBATCH --job-name=%s\n',modelname);
+% 			fprintf(fid,'#SBATCH -p %s \n',cluster.partition);
+			fprintf(fid,'#SBATCH -A %s \n',cluster.accountname);
+% 			fprintf(fid,'#SBATCH --mail-type=ALL\n');
+			fprintf(fid,'#SBATCH -N %i -n %i\n',cluster.numnodes,cluster.cpuspernode);
+			%calculate walltime in hh:mm:ss format
+			walltime=datestr(cluster.time/(60*24),'HH:MM:SS');
+			fprintf(fid,'#SBATCH -t %s\n',walltime); %walltime should be in hh:mm:ss
+			fprintf(fid,'#SBATCH --mem=%i\n',cluster.mem);
+			fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			fprintf(fid,'#SBATCH -e %s.errlog \n\n',modelname);
+% 			fprintf(fid,'module load intelcomp/17.0.0\n') %module load not recommended within job script at Tetralith
+% 			fprintf(fid,'module load mpt/2.14\n')
+% 			fprintf(fid,'module load petsc/3.7.4d\n')
+% 			fprintf(fid,'module load parmetis/4.0.3\n') 
+% 			fprintf(fid,'module load mumps/5.0.2\n')
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+% 			fprintf(fid,'export ISSM_DIR="%s"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+% 			fprintf(fid,'mpiexec -np %i %s/%s %s %s %s\n',cluster.nprocs(),cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+			fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s\n',cluster.nprocs(),cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+% 			fprintf(fid,'mpirun -np %i %s/issm.exe %s %s %s\n',cluster.nprocs(),cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+% 			fprintf(fid,'mpiexec_mpt -np %i %s/%s %s %s %s\n',cluster.nprocs(),cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+
+			if ~io_gather, %concatenate the output files:
+				fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			end
+			fclose(fid);
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.run'],'w');
+				fprintf(fid,'mpiexec_mpt -np %i %s/issm.exe %s %s %s\n',cluster.nprocs(),cluster.codepath,solution,[cluster.executionpath '/' dirname],modelname);
+				if ~io_gather, %concatenate the output files:
+					fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				end
+				fclose(fid);
+				fid=fopen([modelname '.errlog'],'w');
+				fclose(fid);
+				fid=fopen([modelname '.outlog'],'w');
+				fclose(fid);
+			end
+		end %}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			system(compressstring);
+			disp('uploading input file and queuing script');
+			directory=cluster.executionpath;
+% 			issmbbftpout(cluster.name,directory,cluster.login,cluster.port,cluster.numstreams,{[dirname '.tar.gz']});
+			issmscpout(cluster.name,directory,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		end
+		%}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch) % {{{
+
+			disp('launching solution sequence on remote cluster');
+			launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+				' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && sbatch ' modelname '.queue '];
+
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end %}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/yellowstone.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/yellowstone.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/clusters/yellowstone.m	(revision 27955)
@@ -0,0 +1,155 @@
+%YELLOWSTONE cluster class definition
+%
+%   Usage:
+%      cluster=yellowstone();
+%      cluster=yellowstone('np',3);
+%      cluster=yellowstone('np',3,'login','username');
+
+classdef yellowstone
+	properties (SetAccess=public)
+		% {{{
+		name           = 'yellowstone.ucar.edu'
+		login          = '';
+		modules        = {'ncarenv/1.0' 'ncarbinlibs/1.1' 'perlmods/5.0' 'gmake/4.1' 'python/2.7.7' 'all-python-libs' 'git/2.3.0' 'intel/15.0.3' 'mkl/11.1.2' 'esmf' 'esmf-6.3.0rp1-defio-mpi-O' 'netcdf-mpi/4.3.3.1' 'pnetcdf/1.6.1' 'ncarcompilers/1.0' 'cmake/3.0.2' 'matlab/R2015b' 'issm'};
+		numnodes       = 1;
+		cpuspernode    = 8;
+		port           = 0;
+		queue          = 'premium';
+		time           = 12*60;
+		processor      = 'sandy';
+		codepath       = '';
+		executionpath  = '';
+		grouplist     = 'P93300301';
+	end
+	%}}}
+	methods
+		function cluster=yellowstone(varargin) % {{{
+
+			%initialize cluster using default settings if provided
+			if (exist('yellowstone_settings')==2), yellowstone_settings; end
+
+			%use provided options to change fields
+			cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		end
+		%}}}
+		function disp(cluster) % {{{
+			%  display the object
+			disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			disp(sprintf('    name: %s',cluster.name));
+			disp(sprintf('    login: %s',cluster.login));
+			disp(sprintf('    modules: %s',strjoin(cluster.modules,', ')));
+			disp(sprintf('    numnodes: %i',cluster.numnodes));
+			disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			disp(sprintf('    np: %i',cluster.nprocs()));
+			disp(sprintf('    port: %i',cluster.port));
+			disp(sprintf('    queue: %s',cluster.queue));
+			disp(sprintf('    time: %i',cluster.time));
+			disp(sprintf('    processor: %s',cluster.processor));
+			disp(sprintf('    codepath: %s',cluster.codepath));
+			disp(sprintf('    executionpath: %s',cluster.executionpath));
+			disp(sprintf('    grouplist: %s',cluster.grouplist));
+		end
+		%}}}
+		function numprocs=nprocs(cluster) % {{{
+			%compute number of processors
+			numprocs=cluster.numnodes*cluster.cpuspernode;
+		end
+		%}}}
+		function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			available_queues={'premium','regular'};
+			queue_requirements_time=[12*60 12*650];
+			queue_requirements_np=[16384 16384];
+
+			QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.nprocs(),cluster.time)
+
+			%Miscellaneous
+			if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+			if isempty(cluster.grouplist), md = checkmessage(md,'grouplist empty'); end
+
+		end
+		%}}}
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota,isoceancoupling) % {{{
+
+			executable='issm.exe';
+			if isdakota,
+				version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				if (version>=6),
+					executable='issm_dakota.exe';
+				end
+			end
+			if isoceancoupling,
+				executable='issm_ocean.exe';
+			end
+
+
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			fprintf(fid,'#!/bin/tcsh\n');
+			fprintf(fid,'#BSUB -P %s\n',cluster.grouplist);
+			fprintf(fid,'#BSUB -W %i:%i\n',floor(cluster.time/60),cluster.time-floor(cluster.time/60)*60);
+			fprintf(fid,'#BSUB -n %i\n',cluster.nprocs());
+			fprintf(fid,'#BSUB -J %s\n',modelname);
+			fprintf(fid,'#BSUB -o %s.outlog \n',[cluster.executionpath '/' dirname '/' modelname]);
+			fprintf(fid,'#BSUB -e %s.errlog \n',[cluster.executionpath '/' dirname '/' modelname]);
+			fprintf(fid,'#BSUB -q %s\n',cluster.queue);
+
+			fprintf(fid,'module purge\n');
+			for i=1:length(cluster.modules),
+				fprintf(fid,'module load %s\n',cluster.modules{i});
+			end
+
+			fprintf(fid,'setenv OMP_STACKSIZE 256M\n');
+			fprintf(fid,'setenv MP_LABELIO yes\n');
+			fprintf(fid,'setenv MP_INFOLEVEL 2\n');
+			fprintf(fid,'setenv MP_SHARED_MEMORY yes\n');
+			fprintf(fid,'setenv MP_EUILIB us\n');
+			fprintf(fid,'setenv MP_STDOUTMODE unordered\n');
+			fprintf(fid,'setenv MP_RC_USE_LMC yes\n');
+			fprintf(fid,'setenv MP_MPILIB mpich2\n');
+			fprintf(fid,'setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/opt/ibmhpc/pecurrent/mpich2/intel/lib64/\n');
+			fprintf(fid,'setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/ncar/opt/intel/psxe-2015_update3/impi/5.0.3.048/lib64/\n');
+
+			fprintf(fid,'cd %s/%s/\n\n',cluster.executionpath,dirname);
+
+			fprintf(fid,'mpirun.lsf %s/%s %s %s %s\n',cluster.codepath,executable,solution,[cluster.executionpath '/' dirname],modelname);
+			fclose(fid);
+
+		end %}}}
+		function UploadQueueJob(cluster,modelname,dirname,filelist) % {{{
+
+			%compress the files into one zip.
+			compressstring=['tar -zcf ' dirname '.tar.gz '];
+			for i=1:numel(filelist),
+				compressstring = [compressstring ' ' filelist{i}];
+			end
+			system(compressstring);
+
+			disp('uploading input file and queuing script');
+			directory=cluster.executionpath;
+
+			issmscpout(cluster.name,directory,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		end
+		%}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch) % {{{
+
+			%launch command, to be executed via ssh
+			launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && bsub < ' modelname '.queue '];
+
+			disp('launching solution sequence on remote cluster');
+			issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		end
+		%}}}
+		function Download(cluster,dirname,filelist) % {{{
+
+			%copy files from cluster to current directory
+			directory=[cluster.executionpath '/' dirname '/'];
+			issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/constants.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/constants.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/constants.js	(revision 27955)
@@ -0,0 +1,65 @@
+//CONSTANTS class definition
+//
+//   Usage:
+//      constants=constants();
+
+function constants() {
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+
+			//acceleration due to gravity (m/s^2)
+			this.g=9.81;
+
+			//Earth's rotation speed 
+			this.omega = 7.292*1e-5;
+
+			//converstion from year to seconds
+			this.yts=365.*24.*3600.;
+
+			//the reference temperature for enthalpy model (cf Aschwanden)
+			this.referencetemperature=223.15;
+
+			//gravitational constant: 
+			this.gravitational_constant = 6.67259e-11;
+		}// }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   Constants parameters:")); 
+			
+			fielddisplay(this,'g','gravitational acceleration [m/s^2]');
+			fielddisplay(this,'omega','angular velocity of Earth [rad/s]');
+			fielddisplay(this,'yts','number of seconds in a year [s/yr]');
+			fielddisplay(this,'referencetemperature','reference temperature used in the enthalpy model [K]');
+			fielddisplay(this,'gravitational_constant','Newtonian constant of gravitation [m^3/kg/s^2]');
+
+		} //}}}
+		this.classname = function () { //{{{
+			return "constants";
+
+		} //}}}
+		this.checkconsistency = function(md,solution,analyses) {//% {{{
+
+			checkfield(md,'fieldname','constants.g','>=',0,'size',[1,1]); //We allow 0 for validation tests
+			checkfield(md,'fieldname','constants.omega','>=',0,'size',[1,1]);
+			checkfield(md,'fieldname','constants.yts','>',0,'size',[1,1]);
+			checkfield(md,'fieldname','constants.referencetemperature','size',[1,1]);
+			checkfield(md,'fieldname','constants.gravitational_constant','size',[1,1]);
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','g','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','yts','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','referencetemperature','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','gravitational_constant','format','Double');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+		this.g						  = 0.;
+		this.omega					  = 0.;
+		this.yts					  = 0.;
+		this.referencetemperature	  = 0.;
+		this.gravitational_constant   = 0.;
+		this.setdefaultparameters();
+		//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/constants.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/constants.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/constants.m	(revision 27955)
@@ -0,0 +1,76 @@
+%CONSTANTS class definition
+%
+%   Usage:
+%      constants=constants();
+
+classdef constants
+	properties (SetAccess=public) 
+		g                      = 0.;
+		omega                  = 0.;
+		yts                    = 0.;
+		referencetemperature   = 0.;
+		gravitational_constant = 0.;
+	end
+	methods
+		function self = constants(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%acceleration due to gravity (m/s^2)
+			self.g=9.81;
+
+			%Earth's rotation speed 
+			self.omega = 7.292*1e-5;
+
+			%converstion from year to seconds
+			self.yts=365.*24.*3600.;
+
+			%the reference temperature for enthalpy model (cf Aschwanden)
+			self.referencetemperature=223.15;
+		
+			%gravitational constant: 
+			self.gravitational_constant = 6.67259e-11;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','constants.g','>=',0,'size',[1 1]); %We allow 0 for validation tests
+			md = checkfield(md,'fieldname','constants.omega','>=',0,'size',[1 1]);
+			md = checkfield(md,'fieldname','constants.yts','>',0,'size',[1 1]);
+			md = checkfield(md,'fieldname','constants.referencetemperature','size',[1 1]);
+			md = checkfield(md,'fieldname','constants.gravitational_constant','size',[1 1]);
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   constants parameters:'));
+
+			fielddisplay(self,'g','gravitational acceleration [m/s^2]');
+			fielddisplay(self,'omega','angular velocity of Earth [rad/s]');
+			fielddisplay(self,'yts','number of seconds in a year [s/yr]');
+			fielddisplay(self,'referencetemperature','reference temperature used in the enthalpy model [K]');
+			fielddisplay(self,'gravitational_constant','Newtonian constant of gravitation [m^3/kg/s^2]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','g','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','yts','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','referencetemperature','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','gravitational_constant','format','Double');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.constants.g'],self.g);
+			writejsdouble(fid,[modelname '.constants.omega'],self.omega);
+			writejsdouble(fid,[modelname '.constants.yts'],self.yts);
+			writejsdouble(fid,[modelname '.constants.referencetemperature'],self.referencetemperature);
+			writejsdouble(fid,[modelname '.constants.gravitational_constant'],self.gravitational_constant);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/constants.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/constants.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/constants.py	(revision 27955)
@@ -0,0 +1,64 @@
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from WriteData import WriteData
+
+
+class constants(object):
+    """CONSTANTS class definition
+
+       Usage:
+          constants = constants()
+    """
+
+    def __init__(self):  # {{{
+        self.g                      = 0.
+        self.omega                  = 0.
+        self.yts                    = 0.
+        self.referencetemperature   = 0.
+        self.gravitational_constant = 0.;
+
+        #set defaults
+        self.setdefaultparameters()
+    # }}}
+    def __repr__(self):  # {{{
+        s = '   constants parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'g', 'gravitational acceleration [m/s^2]'))
+        s += '{}\n'.format(fielddisplay(self, 'omega', 'angular velocity of Earth [rad/s]'))
+        s += '{}\n'.format(fielddisplay(self, 'yts', 'number of seconds in a year [s/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'referencetemperature', 'reference temperature used in the enthalpy model [K]'))
+        s += '{}\n'.format(fielddisplay(self, 'gravitational_constant', 'Newtonian constant of gravitation [m^3/kg/s^2]'))
+        return s
+    # }}}
+    def setdefaultparameters(self):  # {{{
+        # Acceleration due to gravity (m / s^2)
+        self.g = 9.81
+
+        # Earth's rotation speed
+        self.omega = 7.292 * 1e-5
+
+        # Converstion from year to seconds
+        self.yts = 365.0 * 24.0 * 3600.0
+
+        # The reference temperature for enthalpy model (cf Aschwanden)
+        self.referencetemperature = 223.15
+
+        # Gravitational constant:
+        self.gravitational_constant = 6.67259e-11
+
+        return self
+    # }}}
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        md = checkfield(md, 'fieldname', 'constants.g', '>=', 0, 'size', [1]) # We allow 0 for validation tests
+        md = checkfield(md, 'fieldname', 'constants.omega', '>=', 0, 'size', [1])
+        md = checkfield(md, 'fieldname', 'constants.yts', '>', 0, 'size', [1])
+        md = checkfield(md, 'fieldname', 'constants.referencetemperature', 'size', [1])
+        md = checkfield(md, 'fieldname', 'constants.gravitational_constant','size',[1]);
+
+        return md
+    # }}}
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'g', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'yts', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'referencetemperature', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'gravitational_constant', 'format', 'Double');
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/damage.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/damage.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/damage.js	(revision 27955)
@@ -0,0 +1,168 @@
+//DAMAGE class definition
+//
+//   Usage:
+//      damage=new damage();
+
+function damage (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		
+		//damage parameters: 
+		this.isdamage=0;
+		this.D=0;
+		this.law=0;
+
+		this.max_damage=1-1e-5; //if damage reaches 1, solve becomes singular, as viscosity becomes nil
+
+		//Type of stabilization used
+		this.stabilization=4;
+
+		//Maximum number of iterations
+		this.maxiter=100;
+
+		//finite element interpolation
+		this.elementinterp='P1';
+
+		//damage evolution parameters 
+		this.stress_threshold=1.3e5;
+		this.kappa=2.8;
+		this.healing=0;
+		this.c1=0;
+		this.c2=0;
+		this.c3=0;
+		this.c4=0;
+		this.equiv_stress=0;
+
+		//output default:
+		this.requested_outputs=['default'];
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   Damage:\n'));
+
+		fielddisplay(this,'isdamage','is damage mechanics being used? {true,false}');
+		if (this.isdamage){
+			fielddisplay(this,'law',"damage law ['0: analytical','1: pralong']");
+			fielddisplay(this,'D','damage tensor (scalar)');
+			fielddisplay(this,'spcdamage','damage constraints (NaN means no constraint)');
+			fielddisplay(this,'max_damage','maximum possible damage (0<=max_damage<1)');
+
+			fielddisplay(this,'stabilization','0: no stabilization, 1: artificial diffusion, 2: SUPG (not working), 4: flux corrected transport');
+			fielddisplay(this,'maxiter','maximum number of non linear iterations');
+			fielddisplay(this,'elementinterp',"interpolation scheme for finite elements {'P1','P2'}");
+			fielddisplay(this,'stress_threshold','stress threshold for damage initiation [Pa]');
+			fielddisplay(this,'kappa','ductility parameter for stress softening and damage');
+			fielddisplay(this,'c1','damage parameter 1');
+			fielddisplay(this,'c2','damage parameter 2');
+			fielddisplay(this,'c3','damage parameter 3');
+			fielddisplay(this,'c4','damage parameter 4');
+			fielddisplay(this,'healing','damage healing parameter');
+			fielddisplay(this,'equiv_stress','0: von Mises, 1: max principal');
+			fielddisplay(this,'requested_outputs','additional outputs requested');
+		}
+	}// }}}
+    this.extrude = function(md) {//{{{
+        this.D=project3d(md,'vector',this.D,'type','node');
+        this.spcdamage=project3d(md,'vector',this.spcdamage,'type','node');
+        return this;
+    }//}}}
+	this.classname= function(){// {{{
+		return "damage";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+			
+			checkfield(md,'fieldname','damage.isdamage','values',[1,0]);
+			if (this.isdamage){
+				checkfield(md,'fieldname','damage.law','numel',[1],'values',[0,1,2]);
+				checkfield(md,'fieldname','damage.D','>=',0,'<=',this.max_damage,'size',[md.mesh.numberofvertices ,1]);
+				checkfield(md,'fieldname','damage.spcdamage','Inf',1,'timeseries',1);
+				checkfield(md,'fieldname','damage.max_damage','<',1,'>=',0);
+				checkfield(md,'fieldname','damage.stabilization','numel',[1],'values',[0, 1, 2, 4]);
+				checkfield(md,'fieldname','damage.maxiter','>=0',0);
+				checkfield(md,'fieldname','damage.elementinterp','values',['P1','P2']);
+				checkfield(md,'fieldname','damage.stress_threshold','>=',0);
+				checkfield(md,'fieldname','damage.kappa','>',1);
+				checkfield(md,'fieldname','damage.healing','>=',0);
+				checkfield(md,'fieldname','damage.c1','>=',0);
+				checkfield(md,'fieldname','damage.c2','>=',0);
+				checkfield(md,'fieldname','damage.c3','>=',0);
+				checkfield(md,'fieldname','damage.c4','>=',0);
+				checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0, 1]);
+				checkfield(md,'fieldname','damage.requested_outputs','stringrow',1);
+			}
+			else if (this.law!=0){
+				if (solution=='DamageEvolutionSolution'){
+					throw Error('Invalid evolution law (md.damage.law) for a damage solution');
+				}
+			}
+		} //}}}
+		this.marshall=function(md,prefix,fid) { //{{{
+		
+			WriteData(fid,prefix,'object',this,'fieldname','isdamage','format','Boolean');
+			if (this.isdamage){
+				WriteData(fid,prefix,'object',this,'fieldname','law','format','Integer');
+				WriteData(fid,prefix,'object',this,'fieldname','D','format','DoubleMat','mattype',1);
+				WriteData(fid,prefix,'object',this,'fieldname','spcdamage','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',this,'fieldname','max_damage','format','Double');
+
+				WriteData(fid,prefix,'object',this,'fieldname','stabilization','format','Integer');
+				WriteData(fid,prefix,'object',this,'fieldname','maxiter','format','Integer');
+				WriteData(fid,prefix,'name','md.damage.elementinterp','data',this.elementinterp,'format','String');
+				WriteData(fid,prefix,'object',this,'fieldname','stress_threshold','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','kappa','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','c1','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','c2','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','c3','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','c4','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','healing','format','Double');
+				WriteData(fid,prefix,'object',this,'fieldname','equiv_stress','format','Integer');
+			}
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					outputs.push(this.defaultoutputs(md));
+				}
+			}
+			if (this.isdamage){
+				WriteData(fid,prefix,'data',outputs,'name','md.damage.requested_outputs','format','StringArray');
+			}
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+		this.defaultoutputs = function(md){ //{{{
+
+			if (md.mesh.domaintype() == '2Dhorizontal') return 'DamageDbar';
+			else return 'DamageD';
+
+		}//}}}
+	//properties 
+	// {{{
+	this.isdamage            = 0;
+	this.D                   = NaN;
+	this.law                 = 0;
+	this.spcdamage           = NaN; 
+	this.max_damage          = 0;
+
+	//numerical
+	this.stabilization       = 0;
+	this.maxiter             = 0;
+	this.elementinterp       = '';
+
+	//general parameters for evolution law: 
+	this.stress_threshold    = 0;
+	this.kappa               = 0;
+	this.c1                  = 0;
+	this.c2                  = 0;
+	this.c3                  = 0;
+	this.c4                  = 0;
+	this.healing             = 0;
+	this.equiv_stress		  = 0;
+	this.requested_outputs   = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/damage.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/damage.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/damage.m	(revision 27955)
@@ -0,0 +1,192 @@
+%DAMAGEICE class definition
+%
+%   Usage:
+%      damage=damage();
+
+classdef damage
+	properties (SetAccess=public)  
+		%damage 
+		isdamage            = 0;
+		D                   = NaN;
+		law                 = 0;
+		spcdamage           = NaN; 
+		max_damage          = 0;
+	
+		%numerical
+		stabilization       = 0;
+		maxiter             = 0;
+		elementinterp       = '';
+		
+		%general parameters for evolution law: 
+		stress_threshold    = 0;
+		stress_ubound       = 0;
+		kappa               = 0;
+		c1                  = 0;
+		c2                  = 0;
+		c3                  = 0;
+		c4                  = 0;
+		healing             = 0;
+		equiv_stress		  = 0;
+		requested_outputs   = {};
+	end
+	methods
+		function self = damage(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('damage');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.D=project3d(md,'vector',self.D,'type','node');
+			self.spcdamage=project3d(md,'vector',self.spcdamage,'type','node');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%damage parameters: 
+			self.isdamage=0;
+			self.D=0;
+			self.law=0;
+			
+			self.max_damage=1-1e-5; %if damage reaches 1, solve becomes singular, as viscosity becomes nil
+		
+			%Type of stabilization used
+			self.stabilization=4;
+			
+			%Maximum number of iterations
+			self.maxiter=100;
+
+			%finite element interpolation
+			self.elementinterp='P1';
+
+			%damage evolution parameters 
+			self.stress_threshold=1.3e5;
+			self.kappa=2.8;
+			self.healing=0;
+			self.c1=0;
+			self.c2=0;
+			self.c3=0;
+			self.c4=0;
+			self.equiv_stress=0;
+
+			 %output default:
+			 self.requested_outputs={'default'};
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			
+			md = checkfield(md,'fieldname','damage.isdamage','values',[1,0]);
+			if self.isdamage,
+				md = checkfield(md,'fieldname','damage.law','numel',[1],'values',[0,1,2,3]);
+				md = checkfield(md,'fieldname','damage.D','>=',0,'<=',self.max_damage,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','damage.spcdamage','Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','damage.max_damage','<',1,'>=',0);
+				md = checkfield(md,'fieldname','damage.stabilization','numel',[1],'values',[0 1 2 4]);
+				md = checkfield(md,'fieldname','damage.maxiter','>=0',0);
+				md = checkfield(md,'fieldname','damage.elementinterp','values',{'P1','P2'});
+				md = checkfield(md,'fieldname','damage.stress_threshold','>=',0);
+				md = checkfield(md,'fieldname','damage.stress_ubound','>=',0);
+				md = checkfield(md,'fieldname','damage.kappa','>',1);
+				md = checkfield(md,'fieldname','damage.healing','>=',0);
+				md = checkfield(md,'fieldname','damage.c1','>=',0);
+				md = checkfield(md,'fieldname','damage.c2','>=',0);
+				md = checkfield(md,'fieldname','damage.c3','>=',0);
+				md = checkfield(md,'fieldname','damage.c4','>=',0);
+				md = checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0 1]);
+				md = checkfield(md,'fieldname','damage.requested_outputs','stringrow',1);
+			elseif (self.law~=0),
+				if (strcmp(solution,'DamageEvolutionSolution')),
+					error('Invalid evolution law (md.damage.law) for a damage solution');
+				end
+			end
+		end % }}}
+		function list=defaultoutputs(self,md) % {{{
+
+			if strcmp(domaintype(md.mesh),'2Dhorizontal'),
+            list = {'DamageDbar'};
+         else
+            list = {'DamageD'};
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Damage:\n'));
+
+			fielddisplay(self,'isdamage','is damage mechanics being used? {true,false}');
+			if self.isdamage,
+				fielddisplay(self,'law','damage law {''0: analytical'',''1: pralong''}');
+				fielddisplay(self,'D','damage tensor (scalar)');
+				fielddisplay(self,'spcdamage','damage constraints (NaN means no constraint)');
+				fielddisplay(self,'max_damage','maximum possible damage (0<=max_damage<1)');
+				
+				fielddisplay(self,'stabilization','0: no stabilization, 1: artificial diffusion, 2: SUPG (not working), 4: flux corrected transport');
+				fielddisplay(self,'maxiter','maximum number of non linear iterations');
+				fielddisplay(self,'elementinterp','interpolation scheme for finite elements {''P1'',''P2''}');
+				fielddisplay(self,'stress_threshold','stress threshold for damage initiation (Pa)');
+				fielddisplay(self,'stress_ubound','stress upper bound for damage healing (Pa), arctan law');
+				fielddisplay(self,'kappa','ductility parameter for stress softening and damage');
+				fielddisplay(self,'c1','damage parameter 1');
+				fielddisplay(self,'c2','damage parameter 2');
+				fielddisplay(self,'c3','damage parameter 3');
+				fielddisplay(self,'c4','damage parameter 4');
+				fielddisplay(self,'healing','damage healing parameter');
+				fielddisplay(self,'equiv_stress','0: von Mises, 1: max principal');
+				fielddisplay(self,'requested_outputs','additional outputs requested');
+			end
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+		
+			WriteData(fid,prefix,'object',self,'fieldname','isdamage','format','Boolean');
+			if self.isdamage,
+				WriteData(fid,prefix,'object',self,'fieldname','law','format','Integer');
+				WriteData(fid,prefix,'object',self,'fieldname','D','format','DoubleMat','mattype',1);
+				WriteData(fid,prefix,'object',self,'fieldname','spcdamage','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'fieldname','max_damage','format','Double');
+
+				WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer');
+				WriteData(fid,prefix,'object',self,'fieldname','maxiter','format','Integer');
+				WriteData(fid,prefix,'name','md.damage.elementinterp','data',self.elementinterp,'format','String');
+				WriteData(fid,prefix,'object',self,'fieldname','stress_threshold','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','stress_ubound','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','kappa','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','c1','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','c2','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','c3','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','c4','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','healing','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','equiv_stress','format','Integer');
+			end
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			if self.isdamage,
+				WriteData(fid,prefix,'data',outputs,'name','md.damage.requested_outputs','format','StringArray');
+			end
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.damage.isdamage'],self.isdamage);
+			if self.isdamage,
+				error('savemodeljs error message: not implemented  yet!');
+			end
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/damage.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/damage.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/damage.py	(revision 27955)
@@ -0,0 +1,169 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class damage(object):
+    """
+    DAMAGE class definition
+
+       Usage:
+          damage = damage()
+    """
+
+    def __init__(self, *args):  # {{{
+        #damage:
+        self.isdamage = 0.
+        self.D = float('NaN')
+        self.law = float('NaN')
+        self.spcdamage = float('NaN')
+        self.max_damage = float('NaN')
+
+        #numerical
+        self.stabilization = float('NaN')
+        self.maxiter = float('NaN')
+        self.elementinterp = ''
+
+        #general parameters for evolution law:
+        self.stress_threshold = float('NaN')
+        self.stress_ubound = float('NaN')
+        self.kappa = float('NaN')
+        self.c1 = float('NaN')
+        self.c2 = float('NaN')
+        self.c3 = float('NaN')
+        self.c4 = float('NaN')
+        self.healing = float('NaN')
+        self.equiv_stress = float('NaN')
+        self.requested_outputs = []
+
+        if not len(args):
+            self.setdefaultparameters()
+        else:
+            raise RuntimeError("constructor not supported")
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   Damage:\n'
+        s += "%s\n" % fielddisplay(self, "isdamage", "is damage mechanics being used? [0 (default) or 1]")
+        if self.isdamage:
+            s += "%s\n" % fielddisplay(self, "D", "damage tensor (scalar for now)")
+            s += "%s\n" % fielddisplay(self, "law", "damage law ['0: analytical', '1: pralong']")
+            s += "%s\n" % fielddisplay(self, "spcdamage", "damage constraints (NaN means no constraint)")
+            s += "%s\n" % fielddisplay(self, "max_damage", "maximum possible damage (0 <=max_damage < 1)")
+            s += "%s\n" % fielddisplay(self, "stabilization", "0: no stabilization, 1: artificial diffusion, 2: SUPG (not working), 4: flux corrected transport")
+            s += "%s\n" % fielddisplay(self, "maxiter", "maximum number of non linear iterations")
+            s += "%s\n" % fielddisplay(self, "elementinterp", "interpolation scheme for finite elements [''P1'', ''P2'']")
+            s += "%s\n" % fielddisplay(self, "stress_threshold", "stress threshold for damage initiation (Pa)")
+            s += "%s\n" % fielddisplay(self, "stress_ubound", "stress upper bound for damage healing (Pa)")
+            s += "%s\n" % fielddisplay(self, "kappa", "ductility parameter for stress softening and damage [ > 1]")
+            s += "%s\n" % fielddisplay(self, "c1", "damage parameter 1 ")
+            s += "%s\n" % fielddisplay(self, "c2", "damage parameter 2 ")
+            s += "%s\n" % fielddisplay(self, "c3", "damage parameter 3 ")
+            s += "%s\n" % fielddisplay(self, "c4", "damage parameter 4 ")
+            s += "%s\n" % fielddisplay(self, "healing", "damage healing parameter")
+            s += "%s\n" % fielddisplay(self, "equiv_stress", "0: von Mises, 1: max principal")
+            s += "%s\n" % fielddisplay(self, 'requested_outputs', 'additional outputs requested')
+
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        if self.isdamage:
+            self.D = project3d(md, 'vector', self.D, 'type', 'node')
+            self.spcdamage = project3d(md, 'vector', self.spcdamage, 'type', 'node')
+            return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        #damage parameters:
+        self.isdamage = 0
+        self.D = 0
+        self.law = 0
+        self.max_damage = 1 - 1e-5  #if damage reaches 1, solve becomes singular, as viscosity becomes nil
+        #Type of stabilization used
+        self.stabilization = 4
+        #Maximum number of iterations
+        self.maxiter = 100
+        #finite element interpolation
+        self.elementinterp = 'P1'
+        #damage evolution parameters
+        self.stress_threshold = 1.3e5
+        self.kappa = 2.8
+        self.c1 = 0
+        self.c2 = 0
+        self.c3 = 0
+        self.c4 = 0
+        self.healing = 0
+        self.equiv_stress = 0
+        #output default:
+        self.requested_outputs = ['default']
+
+        return self
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        if md.mesh.domaintype().lower() == '2dhorizontal':
+            list = ['DamageDbar']
+        else:
+            list = ['DamageD']
+        return list
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        md = checkfield(md, 'fieldname', 'damage.isdamage', 'numel', [1], 'values', [0, 1])
+        if self.isdamage:
+            md = checkfield(md, 'fieldname', 'damage.D', '>=', 0, '<=', self.max_damage, 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'damage.max_damage', '<', 1, '>=', 0)
+            md = checkfield(md, 'fieldname', 'damage.law', 'numel', [1], 'values', [0, 1, 2, 3])
+            md = checkfield(md, 'fieldname', 'damage.spcdamage', 'Inf', 1, 'timeseries', 1)
+            md = checkfield(md, 'fieldname', 'damage.stabilization', 'numel', [1], 'values', [0, 1, 2, 4])
+            md = checkfield(md, 'fieldname', 'damage.maxiter', ' >= 0', 0)
+            md = checkfield(md, 'fieldname', 'damage.elementinterp', 'values', ['P1', 'P2'])
+            md = checkfield(md, 'fieldname', 'damage.stress_threshold', '>=', 0)
+            md = checkfield(md, 'fieldname', 'damage.stress_ubound', '>=', 0)
+            md = checkfield(md, 'fieldname', 'damage.kappa', '>', 1)
+            md = checkfield(md, 'fieldname', 'damage.healing', '>=', 0)
+            md = checkfield(md, 'fieldname', 'damage.c1', '>=', 0)
+            md = checkfield(md, 'fieldname', 'damage.c2', '>=', 0)
+            md = checkfield(md, 'fieldname', 'damage.c3', '>=', 0)
+            md = checkfield(md, 'fieldname', 'damage.c4', '>=', 0)
+            md = checkfield(md, 'fieldname', 'damage.healing', '>=', 0)
+            md = checkfield(md, 'fieldname', 'damage.equiv_stress', 'numel', [1], 'values', [0, 1])
+            md = checkfield(md, 'fieldname', 'damage.requested_outputs', 'stringrow', 1)
+        elif self.law != 0:
+            if (solution == 'DamageEvolutionSolution'):
+                raise RuntimeError('Invalid evolution law (md.damage.law) for a damage solution')
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isdamage', 'format', 'Boolean')
+        if self.isdamage:
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'D', 'format', 'DoubleMat', 'mattype', 1)
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'law', 'format', 'Integer')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'spcdamage', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'max_damage', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'stabilization', 'format', 'Integer')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'maxiter', 'format', 'Integer')
+            WriteData(fid, prefix, 'name', 'md.damage.elementinterp', 'data', self.elementinterp, 'format', 'String')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'stress_threshold', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'stress_ubound', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'kappa', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'c1', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'c2', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'c3', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'c4', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'healing', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'equiv_stress', 'format', 'Integer')
+
+    #process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        if self.isdamage:
+            WriteData(fid, prefix, 'data', outputs, 'name', 'md.damage.requested_outputs', 'format', 'StringArray')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/debris.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/debris.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/debris.m	(revision 27955)
@@ -0,0 +1,175 @@
+%DEBRIS class definition
+%
+%   Usage:
+%      debris=debris();
+
+classdef debris
+	properties (SetAccess=public)
+		spcthickness             = NaN;
+		min_thickness            = 0;
+		stabilization            = 0;
+		packingfraction          = 0;
+		removalmodel             = 0;
+		displacementmodel        = 0;
+		max_displacementvelocity = 0;
+		removal_slope_threshold  = 0;
+		removal_stress_threshold = 0;
+		vertex_pairing           = NaN;
+		requested_outputs        = {};
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. If the input is a struct it is an old version of this class and
+			% old fields must be recovered (make sure they are in the deprecated
+			% model properties)
+
+			if verLessThan('matlab','7.9'),
+				disp('Warning: your matlab version is old and there is a risk that load does not work correctly');
+				disp('         if the model is not loaded correctly, rename temporarily loadobj so that matlab does not use it');
+
+				% This is a Matlab bug: all the fields of md have their default value
+				% Example of error message:
+				% Warning: Error loading an object of class 'model':
+				% Undefined function or method 'exist' for input arguments of type 'cell'
+				%
+				% This has been fixed in MATLAB 7.9 (R2009b) and later versions
+			end
+
+			if isstruct(self)
+				disp('Recovering debris from older version');
+				self = structtoobj(debris(),self);
+			end
+		end% }}}
+	end
+	methods
+		function self = debris(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('debris');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.spcthickness=project3d(md,'vector',self.spcthickness,'type','node');
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+
+			list = {'DebrisThickness','DebrisMaskNodeActivation','VxDebris','VyDebris'};
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Type of stabilization to use 0:nothing 1:artificial_diffusivity 3:Discontinuous Galerkin
+			self.stabilization=2;
+
+			%Minimum debris thickness that can be used
+			self.min_thickness=0;
+
+			%Fraction of debris covered in the ice
+			self.packingfraction=0.01;
+
+			%Type of frontal debris removal
+			self.removalmodel=0;
+
+			%Type of debris displacement
+			self.displacementmodel=0;
+
+			%Slope threshold for removalmodel (1)
+			self.removal_slope_threshold=0;
+
+			%Stress threshold for removalmodel (2)
+			self.removal_stress_threshold=0;
+
+			%Max velocity for displacementmodel (1)
+			self.max_displacementvelocity=0;
+
+			%default output
+			self.requested_outputs={'default'};
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('MasstransportAnalysis',analyses) | (strcmp(solution,'TransientSolution') & md.transient.isdebris==0), return; end
+
+			md = checkfield(md,'fieldname','debris.spcthickness');
+			md = checkfield(md,'fieldname','debris.stabilization','values',[0 1 2 3 4 5]);
+			md = checkfield(md,'fieldname','debris.min_thickness','>=',0);
+			md = checkfield(md,'fieldname','debris.packingfraction','>=',0);
+			md = checkfield(md,'fieldname','debris.removalmodel','values',[0 1 2]);
+			md = checkfield(md,'fieldname','debris.displacementmodel','values',[0 1 2]);
+			md = checkfield(md,'fieldname','debris.max_displacementvelocity','>=',0);
+			md = checkfield(md,'fieldname','debris.removal_slope_threshold','>=',0);
+			md = checkfield(md,'fieldname','debris.removal_stress_threshold','>=',0);
+			md = checkfield(md,'fieldname','debris.requested_outputs','stringrow',1);
+			if ~any(isnan(md.stressbalance.vertex_pairing)),
+				md = checkfield(md,'fieldname','stressbalance.vertex_pairing','>',0);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   debris solution parameters:'));
+			fielddisplay(self,'spcthickness','debris thickness constraints (NaN means no constraint) [m]');
+			fielddisplay(self,'min_thickness','minimum debris thickness allowed [m]');
+			fielddisplay(self,'packingfraction','fraction of debris covered in the ice');
+			fielddisplay(self,'stabilization','0: no stabilization, 1: artificial diffusion, 2: streamline upwinding, 3: streamline upwind Petrov-Galerkin (SUPG)');
+			fielddisplay(self,'removalmodel','frontal removal of debris. 0: no removal, 1: Slope-triggered debris removal, 2: driving-stress triggered debris removal');
+			fielddisplay(self,'displacementmodel','debris displacement. 0: no displacement, 1: additional debris velocity above the critical slope/stress threshold');
+			fielddisplay(self,'max_displacementvelocity','maximum velocity of debris transport (v_ice + v_displacement) (m/a)');
+			fielddisplay(self,'removal_slope_threshold','critical slope (degrees) for removalmodel (1)');
+			fielddisplay(self,'removal_stress_threshold','critical stress (Pa) for removalmodel (2)');
+
+			disp(sprintf('\n      %s','Penalty options:'));
+			fielddisplay(self,'vertex_pairing','pairs of vertices that are penalized');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','spcthickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','min_thickness','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','removalmodel','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','displacementmodel','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','max_displacementvelocity','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','removal_slope_threshold','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','removal_stress_threshold','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','packingfraction','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','vertex_pairing','format','DoubleMat','mattype',3);
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.debris.requested_outputs','format','StringArray');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			writejs1Darray(fid,[modelname '.debris.spcthickness'],self.spcthickness);
+			writejsdouble(fid,[modelname '.debris.min_thickness'],self.min_thickness);
+			writejsdouble(fid,[modelname '.debris.stabilization'],self.stabilization);
+			writejsdouble(fid,[modelname '.debris.removalmodel'],self.removalmodel);
+			writejsdouble(fid,[modelname '.debris.displacementmodel'],self.displacementmodel);
+			writejsdouble(fid,[modelname '.debris.max_displacementvelocity'],self.displacementmodel);
+			writejsdouble(fid,[modelname '.debris.removal_slope_threshold'],self.removal_slope_threshold);
+			writejsdouble(fid,[modelname '.debris.removal_stress_threshold'],self.removal_stress_threshold);
+			writejsdouble(fid,[modelname '.debris.packingfraction'],self.packingfraction);
+			writejs2Darray(fid,[modelname '.debris.vertex_pairing'],self.vertex_pairing);
+			writejsdouble(fid,[modelname '.debris.penalty_factor'],self.penalty_factor);
+			writejscellstring(fid,[modelname '.debris.requested_outputs'],self.requested_outputs);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/debris.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/debris.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/debris.py	(revision 27955)
@@ -0,0 +1,136 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class debris(object):
+    """debris class definition
+
+    Usage:
+        debris = debris()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.spcthickness = np.nan
+        self.min_thickness = 0
+        self.stabilization = 0
+        self.packingfraction = 0
+        self.removalmodel = 0
+        self.displacementmodel = 0
+        self.max_displacementvelocity = 0
+        self.removal_slope_threshold = 0
+        self.removal_stress_threshold = 0
+        self.vertex_pairing = np.nan
+        self.requested_outputs = []
+
+        nargs = len(args)
+        if nargs == 0:
+            self.setdefaultparameters()
+        elif nargs == 1:
+            # TODO: Replace the following with constructor
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   debris solution parameters:\n'
+        s += '{}\n'.format(fielddisplay(self,'spcthickness','debris thickness constraints (NaN means no constraint) [m]'))
+        s += '{}\n'.format(fielddisplay(self,'min_thickness','minimum debris thickness allowed [m]'))
+        s += '{}\n'.format(fielddisplay(self,'packingfraction','fraction of debris covered in the ice'))
+        s += '{}\n'.format(fielddisplay(self,'stabilization','0: no stabilization, 1: artificial diffusion, 2: streamline upwinding, 3: streamline upwind Petrov-Galerkin (SUPG)'))
+        s += '{}\n'.format(fielddisplay(self,'removalmodel','frontal removal of debris. 0: no removal, 1: Slope-triggered debris removal, 2: driving-stress triggered debris removal'))
+        s += '{}\n'.format(fielddisplay(self,'displacementmodel','debris displacement. 0: no displacement, 1: ...'))
+        s += '{}\n'.format(fielddisplay(self,'max_displacementvelocity','maximum velocity of debris transport (v_ice + v_displacement) (m/a)'))
+        s += '{}\n'.format(fielddisplay(self,'removal_slope_threshold','critical slope (degrees) for removalmodel (1)'))
+        s += '{}\n'.format(fielddisplay(self,'removal_stress_threshold','critical stress (Pa) for removalmodel (2)'))
+
+        s += '\n      {}\n'.format('Penalty options:')
+        s += '{}\n'.format(fielddisplay(self,'vertex_pairing','pairs of vertices that are penalized'))
+        s += '{}\n'.format(fielddisplay(self,'requested_outputs','additional outputs requested'))
+        return s
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['DebrisThickness', 'DebrisMaskNodeActivation', 'VxDebris', 'VyDebris']
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Type of stabilization to use 0:nothing 1:artificial_diffusivity 3:Discontinuous Galerkin
+        self.stabilization = 2
+
+        # Minimum debris thickness that can be used
+        self.min_thickness = 0
+
+        # Fraction of debris covered in the ice
+        self.packingfraction = 0.01
+
+        # Type of frontal debris removal
+        self.removalmodel = 0
+
+        # Type of debris displacement
+        self.displacementmodel = 0
+
+        # Slope threshold for removalmodel (1)
+        self.removal_slope_threshold = 0
+
+        # Stress threshold for removalmodel (2)
+        self.removal_stress_threshold = 0
+
+        # Max velocity for displacementmodel (1)
+        self.max_displacementvelocity = 0
+
+        # Default output
+        self.requested_outputs = ['default']
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if not 'MasstransportAnalysis' in analyses or solution == 'TransientSolution' and not md.transient.isdebris:
+            return md
+
+        md = checkfield(md, 'fieldname', 'debris.spcthickness')
+        md = checkfield(md, 'fieldname', 'debris.stabilization', 'values', [0, 1, 2, 3, 4, 5])
+        md = checkfield(md, 'fieldname', 'debris.min_thickness', '>=', 0)
+        md = checkfield(md, 'fieldname', 'debris.packingfraction', '>=', 0)
+        md = checkfield(md, 'fieldname', 'debris.removalmodel', 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'debris.displacementmodel', 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'debris.max_displacementvelocity', '>=', 0)
+        md = checkfield(md, 'fieldname', 'debris.removal_slope_threshold', '>=', 0)
+        md = checkfield(md, 'fieldname', 'debris.removal_stress_threshold', '>=', 0)
+        md = checkfield(md, 'fieldname', 'debris.requested_outputs', 'stringrow', 1)
+
+        if not np.any(np.isnan(md.stressbalance.vertex_pairing)) and len(md.stressbalance.vertex_pairing) > 0:
+            md = checkfield(md, 'fieldname', 'stressbalance.vertex_pairing', '>', 0)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'spcthickness', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'min_thickness', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'stabilization', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'removalmodel', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'displacementmodel', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'max_displacementvelocity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'removal_slope_threshold', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'removal_stress_threshold', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'packingfraction', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'vertex_pairing', 'format', 'DoubleMat', 'mattype', 3)
+
+        # Process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.debris.requested_outputs', 'format', 'StringArray')
+    # }}}
+
+    def extrude(self, md):  #{{{
+        self.spcthickness = project3d(md, 'vector', self.spcthickness, 'type', 'node')
+        return
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/debug.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/debug.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/debug.js	(revision 27955)
@@ -0,0 +1,35 @@
+//DEBUG class definition
+//
+//   Usage:
+//      debug=new debug();
+
+function debug (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.classname= function(){// {{{
+		return "debug";
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   debug parameters:'));
+		console.log(sprintf('   debug parameters:'));
+
+		fielddisplay(this,'valgrind','use Valgrind to debug (0 or 1)');
+		fielddisplay(this,'gprof','use gnu-profiler to find out where the time is spent');
+		fielddisplay(this,'profiling','enables profiling (memory, flops, time)');
+
+	}// }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','profiling','format','Boolean');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+
+	//properties 
+	// {{{
+	this.valgrind = false;
+	this.gprof    = false;
+	this.profiling = false;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/debug.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/debug.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/debug.m	(revision 27955)
@@ -0,0 +1,43 @@
+%DEBUG class definition
+%
+%   Usage:
+%      debug=debug();
+
+classdef debug
+	properties (SetAccess=public) 
+		valgrind = false;
+		gprof    = false;
+		profiling = false;
+	end
+	methods
+		function self = debug(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+				end
+			end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   debug parameters:'));
+
+			fielddisplay(self,'valgrind','use Valgrind to debug (0 or 1)');
+			fielddisplay(self,'gprof','use gnu-profiler to find out where the time is spent');
+			fielddisplay(self,'profiling','enables profiling (memory, flops, time)');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','profiling','format','Boolean');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.debug.valgrind'],self.valgrind);
+			writejsdouble(fid,[modelname '.debug.gprof'],self.gprof);
+			writejsdouble(fid,[modelname '.debug.profiling'],self.profiling);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/debug.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/debug.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/debug.py	(revision 27955)
@@ -0,0 +1,38 @@
+from fielddisplay import fielddisplay
+from WriteData import *
+
+
+class debug(object):
+    """
+    DEBUG class definition
+
+       Usage:
+          debug = debug()
+    """
+
+    def __init__(self):  # {{{
+        self.valgrind = False
+        self.gprof = False
+        self.profiling = False
+
+    #set defaults
+        self.setdefaultparameters()
+
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = "   debug parameters:"
+
+        string = "%s\n%s" % (string, fielddisplay(self, "valgrind", "use Valgrind to debug (0 or 1)"))
+        string = "%s\n%s" % (string, fielddisplay(self, "gprof", "use gnu - profiler to find out where the time is spent"))
+        string = "%s\n%s" % (string, fielddisplay(self, 'profiling', 'enables profiling (memory, flops, time)'))
+        return string
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        return self
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'profiling', 'format', 'Boolean')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/dependent.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/dependent.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/dependent.m	(revision 27955)
@@ -0,0 +1,73 @@
+%DEPENDENT class definition
+%
+%   Usage:
+%      dependent=dependent();
+
+classdef dependent
+	properties (SetAccess=public) 
+		name                 = '';
+		fos_reverse_index    = NaN;
+		exp                  = '';
+		segments             = [];
+		nods                 = 0;
+	end
+	methods
+		function self = dependent(varargin) % {{{
+
+			%use provided options to change fields
+			options=pairoptions(varargin{:});
+
+			self.name=getfieldvalue(options,'name','');
+			self.exp=getfieldvalue(options,'exp','');
+			self.segments=getfieldvalue(options,'segments',[]);
+			self.nods=getfieldvalue(options,'nods',0);
+
+			%if name is mass flux: 
+			if strcmpi(self.name,'MassFlux'),
+				%make sure that we supplied a file and that it exists! 
+				if exist(self.exp)~=2,
+					error('dependent checkconsistency: specified ''exp'' file does not exist!');
+				end
+				%process the file and retrieve segments
+				mesh=getfieldvalue(options,'mesh');
+				self.segments=MeshProfileIntersection(mesh.elements,mesh.x,mesh.y,self.exp);
+			end
+		end
+		%}}}
+		function self = setdefaultparameters(self) % {{{
+			%do nothing
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			if strcmpi(self.name,'MassFlux'),
+				if isempty(self.segments),
+					error('dependent checkconsistency error: need segments to compute this dependent response');
+				end
+				if self.index<=0,
+					error('dependent checkconsistency error: index for segments should be >=1');
+				end
+			end
+			if ~isnan(self.fos_reverse_index),
+				if ~strcmpi(driver,'fos_reverse'),
+					error('cannot declare a dependent with a fos_reverse_index when the driver is not fos_reverse!');
+				end
+				if self.nods==0,
+					error('dependent checkconsistency error: nods should be set to the size of the independent variable');
+				end
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   dependent variable:'));
+
+			fielddisplay(self,'name','variable name (must match corresponding String)');
+			if ~isnan(self.fos_reverse_index),
+				fielddisplay(self,'fos_reverse_index','index for fos_reverse driver of ADOLC');
+			end
+			if ~isempty(self.exp),
+				fielddisplay(self,'exp','file needed to compute dependent variable');
+				fielddisplay(self,'segments','mass flux segments');
+			end
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/dependent.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/dependent.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/dependent.py	(revision 27955)
@@ -0,0 +1,77 @@
+import os.path
+import numpy as np
+from pairoptions import pairoptions
+from fielddisplay import fielddisplay
+from MatlabFuncs import *
+from MeshProfileIntersection import MeshProfileIntersection
+
+
+class dependent(object):
+    """
+    DEPENDENT class definition
+
+       Usage:
+          dependent = dependent()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.name = ''
+        self.fos_reverse_index = float('NaN')
+        self.exp = ''
+        self.segments = []
+        self.index = -1
+        self.nods = 0
+
+    #set defaults
+        self.setdefaultparameters()
+
+    #use provided options to change fields
+        options = pairoptions(*args)
+
+        self.name = options.getfieldvalue('name', '')
+        self.exp = options.getfieldvalue('exp', '')
+        self.segments = options.getfieldvalue('segments', [])
+        self.index = options.getfieldvalue('index', -1)
+        self.nods = options.getfieldvalue('nods', 0)
+
+        #if name is mass flux:
+        if strcmpi(self.name, 'MassFlux'):
+            #make sure that we supplied a file and that it exists!
+            if not os.path.exists(self.exp):
+                raise IOError("dependent checkconsistency: specified 'exp' file does not exist!")
+            #process the file and retrieve segments
+            mesh = options.getfieldvalue('mesh')
+            self.segments = MeshProfileIntersection(mesh.elements, mesh.x, mesh.y, self.exp)[0]
+    # }}}
+    def __repr__(self):  # {{{
+        s = "   dependent variable:\n"
+
+        s += "%s\n" % fielddisplay(self, 'name', "variable name (must match corresponding String)")
+
+        if not np.isnan(self.fos_reverse_index):
+            s += "%s\n" % fielddisplay(self, 'fos_reverse_index', "index for fos_reverse driver of ADOLC")
+        if self.exp:
+            s += "%s\n" % fielddisplay(self, 'exp', "file needed to compute dependent variable")
+            s += "%s\n" % fielddisplay(self, 'segments', "mass flux segments")
+
+        return s
+    # }}}
+    def setdefaultparameters(self):  # {{{
+        #do nothing
+        return self
+    # }}}
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if strcmpi(self.name, 'MassFlux'):
+            if not self.segments:
+                raise RuntimeError("dependent checkconsistency error: need segments to compute this dependent response")
+            if self.index < 0:
+                raise RuntimeError("dependent checkconsistency error: index for segments should be >= 0")
+
+        if not np.isnan(self.fos_reverse_index):
+            if not strcmpi(driver, 'fos_reverse'):
+                raise TypeError("cannot declare a dependent with a fos_reverse_index when the driver is not fos_reverse!")
+            if self.nods == 0:
+                raise TypeError("dependent checkconsistency error: nods should be set to the size of the independent variable")
+
+        return md
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/dsl.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/dsl.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/dsl.js	(revision 27955)
@@ -0,0 +1,61 @@
+class dsl {//{{{
+	/**
+	 * DSL class definition
+	 *
+	 * Usage:
+	 *     dsl=dsl();
+	 * 
+	 * TODO:
+	 * - Implement from struct constructor (see dsl.m)?
+	 */
+	constructor() {//{{{
+		this.global_average_thermosteric_sea_level; // Corresponds to zostoga field in CMIP5 archives. Specified as a temporally variable quantity (in m)
+		this.sea_surface_height_above_geoid; // Corresponds to zos field in CMIP5 archives. Spatial average is 0. Specified as a spatio-temporally variable quantity (in m)
+		this.sea_water_pressure_at_sea_floor; // Corresponds to bpo field in CMIP5 archives. Specified as a spatio-temporally variable quantity (in m equivalent, not in Pa!)
+
+		let nargs = arguments.length;
+		if (nargs == 0) {
+			this.setdefaultparameters();
+		} else {
+			error('constructor not supported');
+		}
+	} //}}}
+
+	setdefaultparameters() {//{{{
+		this.global_average_thermosteric_sea_level = NaN;
+		this.sea_surface_height_above_geoid = NaN;
+		this.sea_water_pressure_at_sea_floor = NaN;
+	} //}}}
+
+	checkconsistency(md, solution, analyses) {//{{{
+		if (!analyses.includes('SealevelchangeAnalysis') || (solution === 'TransientSolution' && !md.transient.isslc) || !md.transient.isoceantransport) {
+			return md;
+		}
+
+		md = checkfield(md, 'fieldname', 'dsl.global_average_thermosteric_sea_level', 'NaN', 1, 'Inf', 1);
+		md = checkfield(md, 'fieldname', 'dsl.sea_surface_height_above_geoid', 'NaN', 1, 'Inf', 1, 'timeseries', 1);
+		md = checkfield(md, 'fieldname', 'dsl.sea_water_pressure_at_sea_floor', 'NaN', 1, 'Inf', 1, 'timeseries', 1);
+
+		if (md.solidearth.settings.compute_bp_grd) {
+			md = checkfield(md, 'fieldname', 'dsl.sea_water_pressure_at_sea_floor', 'empty', 1);
+		}
+
+		return md;
+	} //}}}
+
+	disp() {//{{{
+		console.log('WARNING: dsl::disp is not yet implemented');
+	} //}}}
+
+	marshall(md, prefix, fid) {//{{{
+		WriteData(fid, prefix, 'name', 'md.dsl.model', 'data', 1, 'format', 'Integer');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'global_average_thermosteric_sea_level', 'format', 'DoubleMat', 'mattype', 2, 'timeseries', 1, 'timeserieslength', 2, 'yts', md.constants.yts); // mattype 2, because we are sending a GMSL value identical everywhere on each element
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'sea_surface_height_above_geoid', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts); // mattype 1 because we specify DSL at vertex locations
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'sea_water_pressure_at_sea_floor', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts); // mattype 1 because we specify bottom pressure at vertex locations
+	} //}}}
+
+	extrude(md) {//{{{
+		this.sea_surface_height_above_geoid = project3d(md, 'vector', this.sea_surface_height_above_geoid, 'type', 'node', 'layer', 1);
+		this.sea_water_pressure_at_sea_floor = project3d(md, 'vector', this.sea_water_pressure_at_sea_floor, 'type', 'node', 'layer', 1);
+	} //}}}
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/dsl.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/dsl.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/dsl.m	(revision 27955)
@@ -0,0 +1,90 @@
+%DSL class definition
+%
+%   Usage:
+%      dsl=dsl(); %dynamic sea level class, based on CMIP5 outputs
+
+classdef dsl
+	properties (SetAccess=public) 
+
+		global_average_thermosteric_sea_level; %Corresponds to zostoga field in CMIP5 archives. Specified as a temporally variable quantity (in m).
+		sea_surface_height_above_geoid; %Corresponds to zos field in CMIP5 archives. Spatial average is 0. Specified as a spatio-temporally variable quantity (in m).
+		sea_water_pressure_at_sea_floor; %Corresponds to bpo field in CMIP5 archives. Specified as a spatio-temporally variable quantity (in m equivalent, not in Pa!).
+
+	end
+	methods
+		function self = dsl(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(dsl(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			self.global_average_thermosteric_sea_level=NaN;
+			self.sea_surface_height_above_geoid=NaN;
+			self.sea_water_pressure_at_sea_floor=NaN;
+
+		end % }}}
+		function disp(self) % {{{
+
+			disp(sprintf('   dsl parameters:'));
+			fielddisplay(self,'global_average_thermosteric_sea_level','Corresponds to zostoga field in CMIP5 archives. Specified as a temporally variable quantity (in m).');
+			fielddisplay(self,'sea_surface_height_above_geoid','Corresponds to zos field in CMIP5 archives. Spatial average is 0. Specified as a spatio-temporally variable quantity (in m).');
+			fielddisplay(self,'sea_water_pressure_at_sea_floor','Corresponds to bpo field in CMIP5 archives. Specified as a spatio-temporally variable quantity (in m equivalent, not in Pa!).');
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('SealevelchangeAnalysis',analyses) | (strcmp(solution,'TransientSolution') & md.transient.isslc == 0) | (md.transient.isoceantransport==0),
+				return;
+			end
+			md = checkfield(md,'fieldname','dsl.global_average_thermosteric_sea_level','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','dsl.sea_surface_height_above_geoid','NaN',1,'Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','dsl.sea_water_pressure_at_sea_floor','NaN',1,'Inf',1,'timeseries',1);
+			
+			if md.solidearth.settings.compute_bp_grd==1, 
+				md = checkfield(md,'fieldname','dsl.sea_water_pressure_at_sea_floor','empty',1);
+			end
+			
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.dsl.model','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','global_average_thermosteric_sea_level','format','DoubleMat','mattype',2,'timeseries',1,'timeserieslength',2,'yts',yts); %mattype 2, because we are sending a GMSL value identical everywhere on each element. 
+			WriteData(fid,prefix,'object',self,'fieldname','sea_surface_height_above_geoid','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts); %mattype 1 because we specify DSL at vertex locations.
+			WriteData(fid,prefix,'object',self,'fieldname','sea_water_pressure_at_sea_floor','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts); %mattype 1 because we specify bottom pressure at vertex locations.
+
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.sea_surface_height_above_geoid=project3d(md,'vector',self.sea_surface_height_above_geoid,'type','node','layer',1);
+			self.sea_water_pressure_at_sea_floor=project3d(md,'vector',self.sea_water_pressure_at_sea_floor,'type','node','layer',1);
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.global_average_thermosteric_sea_level)
+				self.global_average_thermosteric_sea_level=[0;0];
+				disp('      no dsl.global_average_thermosteric_sea_level specified: transient values set at zero');
+			end
+			if isnan(self.sea_surface_height_above_geoid)
+				self.sea_surface_height_above_geoid=[zeros(md.mesh.numberofvertices,1);0];
+				disp('      no dsl.sea_surface_height_above_geoid specified: transient values set at zero');
+			end
+			if isnan(self.sea_water_pressure_at_sea_floor)
+				self.sea_water_pressure_at_sea_floor=[zeros(md.mesh.numberofvertices,1);0];
+				disp('      no dsl.sea_water_pressure_at_sea_floor specified: transient values set at zero');
+			end
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			writejs1Darray(fid,[modelname '.dsl.global_average_thermosteric_sea_level'],self.global_average_thermosteric_sea_level);
+			writejs1Darray(fid,[modelname '.dsl.sea_surface_height_above_geoid'],self.sea_surface_height_above_geoid);
+			writejs1Darray(fid,[modelname '.dsl.sea_water_pressure_at_sea_floor'],self.sea_water_pressure_at_sea_floor);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/dsl.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/dsl.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/dsl.py	(revision 27955)
@@ -0,0 +1,81 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class dsl(object):
+    """DSL - class definition
+
+    Usage:
+        dsl = dsl() # dynamic sea level class, based on CMIP5 outputs
+    """
+
+    def __init__(self, *args):  #{{{
+        self.global_average_thermosteric_sea_level = np.nan  # Corresponds to zostoga field in CMIP5 archives. Specified as a temporally variable quantity (in m).
+        self.sea_surface_height_above_geoid = np.nan  # Corresponds to zos field in CMIP5 archives. Spatial average is 0. Specified as a spatio-temporally variable quantity (in m).
+        self.sea_water_pressure_at_sea_floor = np.nan  #  Corresponds to bpo field in CMIP5 archives. Specified as a spatio-temporally variable quantity (in m equivalent, not in Pa!).
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  #{{{
+        s = '   dsl parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'global_average_thermosteric_sea_level', 'Corresponds to zostoga field in CMIP5 archives. Specified as a temporally variable quantity (in m).'))
+        s += '{}\n'.format(fielddisplay(self, 'sea_surface_height_above_geoid', 'Corresponds to zos field in CMIP5 archives. Spatial average is 0. Specified as a spatio-temporally variable quantity (in m).'))
+        s += '{}\n'.format(fielddisplay(self, 'sea_water_pressure_at_sea_floor', 'Corresponds to bpo field in CMIP5 archives. Specified as a spatio-temporally variable quantity (in m equivalent, not in Pa!).'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  #{{{
+        self.global_average_thermosteric_sea_level = np.nan
+        self.sea_surface_height_above_geoid = np.nan
+        self.sea_water_pressure_at_sea_floor = np.nan
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  #{{{
+        # Early return
+        if ('SealevelchangeAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc) or (not md.transient.isoceantransport):
+            return md
+        md = checkfield(md, 'fieldname', 'dsl.global_average_thermosteric_sea_level', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'dsl.sea_surface_height_above_geoid', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'dsl.sea_water_pressure_at_sea_floor', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+
+        if md.solidearth.settings.compute_bp_grd:
+            md = checkfield(md, 'fieldname', 'dsl.sea_water_pressure_at_sea_floor', 'empty', 1)
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):   #{{{
+        yts = md.constants.yts
+        WriteData(fid, prefix, 'name', 'md.dsl.model', 'data', 1, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'global_average_thermosteric_sea_level', 'format', 'DoubleMat', 'mattype', 2, 'timeseries', 1, 'timeserieslength', 2, 'yts', yts) # mattype 2, because we are sending a GMSL value identical everywhere on each element.
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'sea_surface_height_above_geoid', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)  # mattype 1 because we specify DSL at vertex locations.
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'sea_water_pressure_at_sea_floor', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)  # mattype 1 because we specify bottom pressure at vertex locations.
+    # }}}
+
+    def extrude(self, md):  #{{{
+        self.sea_surface_height_above_geoid = project3d(md, 'vector', self.sea_surface_height_above_geoid, 'type', 'node', 'layer', 1)
+        self.sea_water_pressure_at_sea_floor = project3d(md, 'vector', self.sea_water_pressure_at_sea_floor, 'type', 'node', 'layer', 1)
+        return self
+    # }}}
+
+    def initialize(self, md):  #{{{
+        if np.isnan(self.global_average_thermosteric_sea_level):
+            self.global_average_thermosteric_sea_level = np.array([0, 0]).reshape(-1, 1)
+            print('      no dsl.global_average_thermosteric_sea_level specified: transient values set at zero')
+
+        if np.isnan(self.sea_surface_height_above_geoid):
+            self.sea_surface_height_above_geoid = np.append(np.zeros((md.mesh.numberofvertices, 1)), 0).reshape(-1, 1)
+            print('      no dsl.sea_surface_height_above_geoid specified: transient values set at zero')
+
+        if np.isnan(self.sea_water_pressure_at_sea_floor):
+            self.sea_water_pressure_at_sea_floor = np.append(np.zeros((md.mesh.numberofvertices, 1)), 0).reshape(-1, 1)
+            print('      no dsl.sea_water_pressure_at_sea_floor specified: transient values set at zero')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/dslmme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/dslmme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/dslmme.m	(revision 27955)
@@ -0,0 +1,86 @@
+%DSLMME class definition
+%
+%   Usage:
+%      dsl=dslmme(); %dynamic sea level class based on a multi-model ensemble of CMIP5 outputs
+
+classdef dslmme
+	properties (SetAccess=public) 
+
+		modelid; %index into the multi-model ensemble, determine which field will be used.
+		global_average_thermosteric_sea_level; %Corresponds to zostoga field in CMIP5 archives. Specified as a temporally variable quantity (in m) for each ensemble.
+		sea_surface_height_above_geoid; %Corresponds to zos field in CMIP5 archives. Spatial average is 0. Specified as a spatio-temporally variable quantity (in m) for each ensemble.
+		sea_water_pressure_at_sea_floor; %Corresponds to bpo field in CMIP5 archives. Specified as a spatio-temporally variable quantity (in m equivalent, not in Pa!) for each ensemble.
+
+	end
+	methods
+		function self = dslmme(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(dsl(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			self.modelid=0;
+			self.global_average_thermosteric_sea_level={};
+			self.sea_surface_height_above_geoid={};
+			self.sea_water_pressure_at_sea_floor={};
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('SealevelchangeAnalysis',analyses) | (strcmp(solution,'TransientSolution') & md.transient.isslc == 0) | (md.transient.isoceantransport==0),
+				return;
+			end
+			for i=1:length(self.global_average_thermosteric_sea_level),
+				md = checkfield(md,'field',self.global_average_thermosteric_sea_level{i},'NaN',1,'Inf',1);
+				md = checkfield(md,'field',self.sea_surface_height_above_geoid{i},'NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'field',self.sea_water_pressure_at_sea_floor{i},'NaN',1,'Inf',1,'timeseries',1);
+			end
+			md = checkfield(md,'field',self.modelid,'NaN',1,'Inf',1,'>=',1,'<=',length(self.global_average_thermosteric_sea_level));
+
+			if md.solidearth.settings.compute_bp_grd==1, 
+				md = checkfield(md,'fieldname','dsl.sea_water_pressure_at_sea_floor','empty',1);
+			end
+
+		end % }}}
+		function disp(self) % {{{
+
+			disp(sprintf('   dsl mme parameters:'));
+			fielddisplay(self,'modelid','index into the multi-model ensemble, determine which field will be used.');
+			fielddisplay(self,'global_average_thermosteric_sea_level','Corresponds to zostoga field in CMIP5 archives. Specified as a temporally variable quantity (in m) for each ensemble.');
+			fielddisplay(self,'sea_surface_height_above_geoid','Corresponds to zos field in CMIP5 archives. Spatial average is 0. Specified as a spatio-temporally variable quantity (in m) for each ensemble.');
+			fielddisplay(self,'sea_water_pressure_at_sea_floor','Corresponds to bpo field in CMIP5 archives. Specified as a spatio-temporally variable quantity (in m equivalent, not in Pa!) for each ensemble.');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'name','md.dsl.model','data',2,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','modelid','format','Double');
+			WriteData(fid,prefix,'name','md.dsl.nummodels','data',length(self.global_average_thermosteric_sea_level),'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','global_average_thermosteric_sea_level','format','MatArray','timeseries',1,'timeserieslength',2);
+			WriteData(fid,prefix,'object',self,'fieldname','sea_water_pressure_at_sea_floor','format','MatArray','timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,prefix,'object',self,'fieldname','sea_surface_height_above_geoid','format','MatArray','timeserieslength',md.mesh.numberofvertices+1);
+
+		end % }}}
+		function self = extrude(self,md) % {{{
+			for i=1:length(self.global_average_thermosteric_sea_level),
+				self.sea_surface_height_above_geoid{i}=project3d(md,'vector',self.sea_surface_height_above_geoid{i},'type','node','layer',1);
+				self.sea_water_pressure_at_sea_floor{i}=project3d(md,'vector',self.sea_water_pressure_at_sea_floor{i},'type','node','layer',1);
+			end
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+			
+			writejsdouble(fid,[modelname '.dsl.modelid'],self.modelid);
+			writejscellarray(fid,[modelname '.dsl.global_average_thermosteric_sea_level'],self.global_average_thermosteric_sea_level);
+			writejscellarray(fid,[modelname '.dsl.sea_surface_height_above_geoid'],self.sea_surface_height_above_geoid);
+			writejs1Darray(fid,[modelname '.dsl.compute_fingerprints'],self.compute_fingerprints);
+			writejscellarray(fid,[modelname '.dsl.sea_water_pressure_at_sea_floor'],self.sea_water_pressure_at_sea_floor);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/dslmme.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/dslmme.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/dslmme.py	(revision 27955)
@@ -0,0 +1,71 @@
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class dslmme(object):
+    """DSLMME class definition
+
+    Usage:
+        dsl = dslmme() #dynamic sea level class based on a multi-model ensemble of CMIP5 outputs
+    """
+
+    def __init__(self, *args):  #{{{
+        self.modelid = 0  # Index into the multi-model ensemble, determine which field will be used
+        self.global_average_thermosteric_sea_level = [] # Corresponds to zostoga field in CMIP5 archives. Specified as a temporally variable quantity (in m) for each ensemble.
+        self.sea_surface_height_above_geoid = [] # Corresponds to zos field in CMIP5 archives. Spatial average is 0. Specified as a spatio-temporally variable quantity (in m) for each ensemble.
+        self.sea_water_pressure_at_sea_floor = [] #Corresponds to bpo field in CMIP5 archives. Specified as a spatio-temporally variable quantity (in m equivalent, not in Pa!) for each ensemble.
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   dsl mme parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'modelid', 'index into the multi-model ensemble, determines which field will be used.'))
+        s += '{}\n'.format(fielddisplay(self, 'global_average_thermosteric_sea_level', 'Corresponds to zostoga field in CMIP5 archives. Specified as a temporally variable quantity (in m) for each ensemble.'))
+        s += '{}\n'.format(fielddisplay(self, 'sea_surface_height_above_geoid', 'Corresponds to zos field in CMIP5 archives. Spatial average is 0. Specified as a spatio-temporally variable quantity (in m) for each ensemble.'))
+        s += '{}\n'.format(fielddisplay(self, 'sea_water_pressure_at_sea_floor', 'Corresponds to bpo field in CMIP5 archives. Specified as a spatio-temporally variable quantity (in m equivalent, not in Pa!) for each ensemble.'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  #{{{
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if ('SealevelchangeAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc) or (not md.transient.isoceantransport):
+            return md
+
+        for i in range(len(self.global_average_thermosteric_sea_level)):
+            md = checkfield(md, 'field', self.global_average_thermosteric_sea_level[i], 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'field', self.sea_surface_height_above_geoid[i], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+            md = checkfield(md, 'field', self.sea_water_pressure_at_sea_floor[i], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'field', self.modelid, 'NaN', 1, 'Inf', 1, '>=', 1, '<=', len(self.global_average_thermosteric_sea_level))
+
+        if self.solidearth.settings.compute_bp_grd:
+            md = checkfield(md, 'field', self.sea_water_pressure_at_sea_floor, 'empty', 1)
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  #{{{
+        WriteData(fid, prefix, 'name', 'md.dsl.model', 'data', 2, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'modelid', 'format', 'Double')
+        WriteData(fid, prefix, 'name', 'md.dsl.nummodels', 'data', len(self.global_average_thermosteric_sea_level), 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'global_average_thermosteric_sea_level', 'format', 'MatArray', 'timeseries', 1, 'timeserieslength', 2)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'sea_water_pressure_at_sea_floor', 'format', 'MatArray', 'timeserieslength', md.mesh.numberofvertices + 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'sea_surface_height_above_geoid', 'format', 'MatArray', 'timeserieslength', md.mesh.numberofvertices + 1)
+    # }}}
+
+    def extrude(self, md):  #{{{
+        for i in range(len(self.global_average_thermosteric_sea_level)):
+            self.sea_surface_height_above_geoid[i] = project3d(md, 'vector', self.self.sea_surface_height_above_geoid[i], 'type', 'node', 'layer', 1)
+            self.sea_water_pressure_at_sea_floor[i] = project3d(md, 'vector', self.sea_water_pressure_at_sea_floor[i], 'type', 'node', 'layer', 1)
+
+        return self
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/esa.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/esa.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/esa.js	(revision 27955)
@@ -0,0 +1,97 @@
+//ESA class definition
+//
+//   Usage:
+//      esa=esa();
+
+function esa(){
+	//methods
+		this.setdefaultparameters = function (){ //{{{
+		
+		//numerical discretization accuracy
+		this.degacc=.01;
+	
+		//computational flags:
+		this.hemisphere=0;
+
+		//output default:
+		this.requested_outputs=['default'];
+
+		//transitions should be a cell array of vectors: 
+		this.transitions=[];
+		
+		}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			//Early return
+			if(ArrayAnyEqual(ArrayIsMember('EsaAnalysis',analyses),0))return;
+			
+			md = checkfield(md,'fieldname','esa.deltathickness','NaN',1,'Inf',1,'size',[md.mesh.numberofelements, 1]);
+			md = checkfield(md,'fieldname','esa.love_h','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','esa.love_l','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','esa.hemisphere','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','esa.degacc','size',[1, 1],'>=',1e-10);
+			md = checkfield(md,'fieldname','esa.requested_outputs','stringrow',1);
+			
+			//check that love numbers are provided at the same level of accuracy: 
+			if (this.love_h.length != this.love_l.length){
+				throw Error('esa error message: love numbers should be provided at the same level of accuracy');
+			}
+
+		} // }}}
+		this.defaultoutputs = function(md){ // {{{
+			return ['EsaUmotion'];
+		}//}}}
+		this.classname= function(){// {{{
+			return "esa";
+		}// }}}
+		this.disp= function(){// {{{
+			
+		console.log(sprintf('   esa solution parameters:'));
+
+		fielddisplay(this,'deltathickness','thickness change: ice height equivalent [m]');
+		fielddisplay(this,'love_h','load Love number for radial displacement');
+		fielddisplay(this,'love_l','load Love number for horizontal displacements'); 
+		fielddisplay(this,'hemisphere','North-south, East-west components of 2-D horiz displacement vector: -1 south, 1 north'); 
+		fielddisplay(this,'degacc',"accuracy (default .01 deg) for numerical discretization of the Green's functions");
+		fielddisplay(this,'transitions','indices into parts of the mesh that will be icecaps');
+		fielddisplay(this,'requested_outputs','additional outputs requested (default: EsaUmotion)');
+		} //}}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			WriteData(fid,prefix,'object',this,'fieldname','deltathickness','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',this,'fieldname','love_h','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','love_l','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','hemisphere','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','degacc','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','transitions','format','MatArray');
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}
+			WriteData(fid,prefix,'data',outputs,'name','md.esa.requested_outputs','format','StringArray');
+		}//}}}
+		this.fix=function() { //{{{
+			this.deltathickness=NullFix(this.deltathickness,NaN);
+			this.love_h=NullFix(this.love_h,NaN);
+			this.love_l=NullFix(this.love_l,NaN);
+			this.hemisphere=NullFix(this.hemisphere,NaN);
+			this.degacc=NullFix(this.degacc,NaN);
+		}//}}}
+	//properties
+	//{{{
+	this.deltathickness = NaN;
+	this.love_h         = 0; //provided by PREM model
+	this.love_l         = 0; //idam
+	this.hemisphere     = 0;
+	this.degacc         = 0;
+	this.requested_outputs = [];
+	this.transitions    = [];
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/esa.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/esa.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/esa.m	(revision 27955)
@@ -0,0 +1,108 @@
+%ESA class definition
+%
+%   Usage:
+%      esa=esa();
+
+classdef esa
+	properties (SetAccess=public) 
+		deltathickness = NaN;
+		love_h         = 0; %provided by PREM model
+		love_l         = 0; %ideam
+		degacc         = 0;
+		hemisphere		= 0;
+		requested_outputs      = {};
+		transitions    = {};
+	end
+	methods
+		function self = esa(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		
+		%numerical discretization accuracy
+		self.degacc=.01;
+	
+		%computational flags:
+		self.hemisphere=0;
+
+		%output default:
+		self.requested_outputs={'default'};
+
+		%transitions should be a cell array of vectors: 
+		self.transitions={};
+		
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ismember('EsaAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','esa.deltathickness','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','esa.love_h','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','esa.love_l','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','esa.hemisphere','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','esa.degacc','size',[1 1],'>=',1e-10);
+			md = checkfield(md,'fieldname','esa.requested_outputs','stringrow',1);
+
+			%check that love numbers are provided at the same level of accuracy: 
+			if (size(self.love_h,1)~=size(self.love_l,1)),
+				error('esa error message: love numbers should be provided at the same level of accuracy');
+			end
+
+			%cross check that whereever we have an ice load, the mask is <0 on each vertex: 
+			pos=find(self.deltathickness);
+			maskpos=md.mask.ice_levelset(md.mesh.elements(pos,:)); 
+			[els,vertices]=find(maskpos>0);
+			if length(els),
+				error('esa checkconsistency fail: there are elements with ice loads where some vertices are not on the ice!');
+			end
+
+		end % }}}
+		function list=defaultoutputs(self,md) % {{{
+			list = {'EsaUmotion'};
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   esa parameters:'));
+
+			fielddisplay(self,'deltathickness','thickness change: ice height equivalent [m]');
+			fielddisplay(self,'love_h','load Love number for radial displacement');
+			fielddisplay(self,'love_l','load Love number for horizontal displacements');
+			fielddisplay(self,'hemisphere','North-south, East-west components of 2-D horiz displacement vector: -1 south, 1 north'); 
+			fielddisplay(self,'degacc','accuracy (default .01 deg) for numerical discretization of the Green''s functions');
+			fielddisplay(self,'transitions','indices into parts of the mesh that will be icecaps');
+			fielddisplay(self,'requested_outputs','additional outputs requested (e.g., EsaUmotion, EsaStrainratexx, EsaRotationrate)');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','deltathickness','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'fieldname','love_h','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','love_l','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','hemisphere','format','Integer'); 
+			WriteData(fid,prefix,'object',self,'fieldname','degacc','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','transitions','format','MatArray');
+			
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.esa.requested_outputs','format','StringArray');
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.esa.deltathickness'],self.deltathickness);
+			writejs1Darray(fid,[modelname '.esa.love_h'],self.love_h);
+			writejs1Darray(fid,[modelname '.esa.love_l'],self.love_l);
+			writejsdouble(fid,[modelname '.esa.hemisphere'],self.hemisphere); 
+			writejsdouble(fid,[modelname '.esa.degacc'],self.degacc);
+			writejscellstring(fid,[modelname '.esa.requested_outputs'],self.requested_outputs);
+			writejscellarray(fid,[modelname '.esa.transitions'],self.transitions);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/esa.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/esa.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/esa.py	(revision 27955)
@@ -0,0 +1,93 @@
+from fielddisplay import fielddisplay
+from MatlabFuncs import *
+from model import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class esa(object):
+    """
+    ESA class definition
+
+        Usage:
+          esa = esa();
+    """
+
+    def __init__(self):  # {{{
+        self.deltathickness = float('NaN')
+        self.love_h = 0  #provided by PREM model()
+        self.love_l = 0  #ideam
+        self.hemisphere = 0
+        self.degacc = 0
+        self.requested_outputs = []
+        self.transitions = []
+
+    #set defaults
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = '   esa parameters:'
+        string = "%s\n%s" % (string, fielddisplay(self, 'deltathickness', 'thickness change: ice height equivalent [m]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'love_h', 'load Love number for radial displacement'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'love_l', 'load Love number for horizontal displaements'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'hemisphere', 'North-south, East-west components of 2-D horiz displacement vector:-1 south, 1 north'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'degacc', 'accuracy (default .01 deg) for numerical discretization of the Green''s functions'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'transitions', 'indices into parts of the mesh that will be icecaps'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested (default: EsaUmotion)'))
+
+        return string
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        #numerical discretization accuracy
+        self.degacc = 0.01
+        #computational flags:
+        self.hemisphere = 0
+        #output default:
+        self.requested_outputs = ['default']
+        #transitions should be a cell array of vectors:
+        self.transitions = []
+        #default output
+        self.requested_outputs = ['default']
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        #Early return
+        if (solution != 'EsaAnalysis'):
+            return md
+
+        md = checkfield(md, 'fieldname', 'esa.deltathickness', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements, 1])
+        md = checkfield(md, 'fieldname', 'esa.love_h', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'esa.love_l', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'esa.hemisphere', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'esa.degacc', 'size', [1, 1], '>=', 1e-10)
+        md = checkfield(md, 'fieldname', 'esa.requested_outputs', 'stringrow', 1)
+
+    #check that love numbers are provided at the same level of accuracy:
+        if (size(self.love_h, 0) != size(self.love_l, 0)):
+            error('esa error message: love numbers should be provided at the same level of accuracy')
+        return md
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['EsaUmotion']
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'deltathickness', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'love_h', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'love_l', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'hemisphere', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'degacc', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'transitions', 'format', 'MatArray')
+
+    #process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.esa.requested_outputs', 'format', 'StringArray')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/flowequation.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/flowequation.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/flowequation.js	(revision 27955)
@@ -0,0 +1,160 @@
+//FLOWEQUATION class definition
+//
+//   Usage:
+//      flowequation=new flowequation();
+
+function flowequation (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		//P1 for SSA
+		this.fe_SSA= 'P1';
+
+		//P1 for HO
+		this.fe_HO= 'P1';
+
+		//MINI condensed element for FS by default
+		this.fe_FS = 'MINIcondensed';
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   flow equation parameters:'));
+
+		fielddisplay(this,'isSIA','is the Shallow Ice Approximation (SIA) used ?');
+		fielddisplay(this,'isSSA','is the Shelfy-Stream Approximation (SSA) used ?');
+		fielddisplay(this,'isL1L2','is the L1L2 approximation used ?');
+		fielddisplay(this,'isMOLHO','is the MOno-Layer Higher-Order (MOLHO) approximation used?');
+		fielddisplay(this,'isHO','is the Higher-Order (HO) approximation used ?');
+		fielddisplay(this,'isFS','are the Full-FS (FS) equations used ?');
+		fielddisplay(this,'isNitscheBC','is weakly imposed condition used?');
+		fielddisplay(this,'FSNitscheGamma','Gamma value for the Nitsche term (default: 1e6)');
+		fielddisplay(this,'fe_SSA',"Finite Element for SSA  'P1', 'P1bubble' 'P1bubblecondensed' 'P2'");
+		fielddisplay(this,'fe_HO', "Finite Element for HO   'P1' 'P1bubble' 'P1bubblecondensed' 'P1xP2' 'P2xP1' 'P2'");
+		fielddisplay(this,'fe_FS', "Finite Element for FS   'P1P1' (debugging only) 'P1P1GLS' 'MINIcondensed' 'MINI' 'TaylorHood' 'XTaylorHood'");
+		fielddisplay(this,'vertex_equation','flow equation for each vertex');
+		fielddisplay(this,'element_equation','flow equation for each element');
+		fielddisplay(this,'borderSSA',"vertices on SSA's border (for tiling)");
+		fielddisplay(this,'borderHO',"vertices on HO's border (for tiling)");
+		fielddisplay(this,'borderFS',"vertices on FS' border (for tiling)");
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "flowequation";
+
+	}// }}}
+	this.extrude = function(md) {//{{{
+		this.element_equation=project3d(md,'vector',this.element_equation,'type','element');
+		this.vertex_equation=project3d(md,'vector',this.vertex_equation,'type','node');
+		this.borderSSA=project3d(md,'vector',this.borderSSA,'type','node');
+		this.borderHO=project3d(md,'vector',this.borderHO,'type','node');
+		this.borderFS=project3d(md,'vector',this.borderFS,'type','node');
+		return this;
+    }//}}}
+		this.checkconsistency = function(md,solution,analyses) {//{{{
+
+			//Early return
+			if ( ((!ArrayAnyEqual(ArrayIsMember('StressbalanceAnalysis',analyses),1)) & (!ArrayAnyEqual(ArrayIsMember('StressbalanceSIAAnalysis',analyses),1))) | 
+					(solution=='TransientSolution' & md.trans.isstressbalance==0)
+			   ) return ;
+
+			checkfield(md,'fieldname','flowequation.isSIA','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.isSSA','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.isL1L2','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.isMOLHO','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.isHO','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.isFS','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.isNitscheBC','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.FSNitscheGamma','numel',[1], '>=', 0);
+			checkfield(md,'fieldname','flowequation.fe_SSA','values',['P1','P1bubble','P1bubblecondensed','P2','P2bubble']);
+			checkfield(md,'fieldname','flowequation.fe_HO' ,'values',['P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P2bubble','P1xP3','P2xP4']);
+			checkfield(md,'fieldname','flowequation.fe_FS' ,'values',['P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','LATaylorHood','XTaylorHood','OneLayerP4z','CrouzeixRaviart','LACrouzeixRaviart']);
+			checkfield(md,'fieldname','flowequation.augmented_lagrangian_r','numel',[1],'>=',0.);
+			checkfield(md,'fieldname','flowequation.augmented_lagrangian_rlambda','numel',[1],'>=',0.);
+			checkfield(md,'fieldname','flowequation.augmented_lagrangian_rhop','numel',[1],'>=',0.);
+			checkfield(md,'fieldname','flowequation.augmented_lagrangian_rholambda','numel',[1],'>=',0.);
+			checkfield(md,'fieldname','flowequation.XTH_theta','numel',[1],'>=',0.,'<',0.5);
+			checkfield(md,'fieldname','flowequation.borderSSA','size',[md.mesh.numberofvertices, 1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.borderHO','size',[md.mesh.numberofvertices, 1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.borderFS','size',[md.mesh.numberofvertices, 1],'values',[0, 1]);
+			if (md.mesh.domaintype() == '2Dhorizontal'){
+				checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices, 1],'values',[1,2]);
+				checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements, 1],'values',[1,2]);
+			}
+			else if (md.mesh.domaintype() == '3Dsurface'){
+				checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices, 1],'values',[1,2]);
+				checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements, 1],'values',[1,2]);
+			}
+			else if (md.mesh.domaintype() =='2Dvertical'){
+				checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices, 1],'values',[2,4,5]);
+				checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements, 1],'values',[2,4,5]);
+			}
+			else if (md.mesh.domaintype() =='3D'){
+				checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices, 1],'values',[0,1,2,3,4,5,6,7,8]);
+				checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements, 1],'values',[0,1,2,3,4,5,6,7,8]);
+			}
+			else throw Error('Case not supported yet');
+			
+			if (!(this.isSIA | this.isSSA | this.isL1L2 | this.isMOLHO | this.isHO | this.isFS)){
+				checkmessage(md,['no element types set for this model']);
+			}
+			if(ArrayAnyEqual(ArrayIsMember('StressbalanceSIAAnalysis', analyses),1)){
+				if (ArrayAnyEqual(this.element_equation,1)){
+					if(this.vertex_equation & ArrayAnyBelowStrict(md.mask.groundedice_levelset)){
+						console.log(sprintf("\n !!! Warning: SIA's model is not consistent on ice shelves !!!\n"));
+					}
+				}
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','isSIA','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isSSA','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isL1L2','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isMOLHO','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isHO','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isFS','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isNitscheBC','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','FSNitscheGamma','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','fe_SSA','data',this.fe_SSA,'format','String');
+			WriteData(fid,prefix,'object',this,'fieldname','fe_HO','data',this.fe_HO,'format','String');
+			WriteData(fid,prefix,'object',this,'fieldname','fe_FS','data',this.fe_FS,'format','String');
+
+			WriteData(fid,prefix,'object',this,'fieldname','augmented_lagrangian_r','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','augmented_lagrangian_rhop','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','augmented_lagrangian_rlambda','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','augmented_lagrangian_rholambda','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','XTH_theta','data',this.XTH_theta ,'format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','borderSSA','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','borderHO','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','borderFS','format','DoubleMat','mattype',1);
+
+			//convert approximations to integers 
+			WriteData(fid,prefix,'data',this.vertex_equation,'name','md.flowequation.vertex_equation','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'data',this.element_equation,'name','md.flowequation.element_equation','format','DoubleMat','mattype',2);
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.isSIA                          = 0;
+	this.isSSA                          = 0;
+	this.isL1L2                         = 0;
+	this.isMOLHO                         = 0;
+	this.isHO                           = 0;
+	this.isFS                           = 0;
+	this.isNitscheBC                    = 0;
+	this.FSNitscheGamma                 = 1e6;
+	this.fe_SSA                         = '';
+	this.fe_HO                          = '';
+	this.fe_FS                          = '';
+	this.augmented_lagrangian_r         = 1.;
+	this.augmented_lagrangian_rhop      = 1.;
+	this.augmented_lagrangian_rlambda   = 1.;
+	this.augmented_lagrangian_rholambda = 1.;
+	this.XTH_theta                      = 0.;
+	this.vertex_equation                = NaN;
+	this.element_equation               = NaN;
+	this.borderSSA                      = NaN;
+	this.borderHO                       = NaN;
+	this.borderFS                       = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/flowequation.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/flowequation.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/flowequation.m	(revision 27955)
@@ -0,0 +1,221 @@
+%FLOWEQUATION class definition
+%
+%   Usage:
+%      flowequation=flowequation();
+
+classdef flowequation
+	properties (SetAccess=public) 
+		isSIA                          = 0;
+		isSSA                          = 0;
+		isL1L2                         = 0;
+		isMOLHO                         = 0;
+		isHO                           = 0;
+		isFS                           = 0;
+		isNitscheBC                    = 0;
+		FSNitscheGamma                 = 1e6;
+		fe_SSA                         = '';
+		fe_HO                          = '';
+		fe_FS                          = '';
+		augmented_lagrangian_r         = 1.;
+		augmented_lagrangian_rhop      = 1.;
+		augmented_lagrangian_rlambda   = 1.;
+		augmented_lagrangian_rholambda = 1.;
+		XTH_theta                      = 0.;
+		vertex_equation                = NaN;
+		element_equation               = NaN;
+		borderSSA                      = NaN;
+		borderHO                       = NaN;
+		borderFS                       = NaN;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. If the input is a struct it is an old version of this class and
+			% old fields must be recovered (make sure they are in the deprecated
+			% model properties)
+
+			if verLessThan('matlab','7.9'),
+				disp('Warning: your matlab version is old and there is a risk that load does not work correctly');
+				disp('         if the model is not loaded correctly, rename temporarily loadobj so that matlab does not use it');
+
+				% This is a Matlab bug: all the fields of md have their default value
+				% Example of error message:
+				% Warning: Error loading an object of class 'model':
+				% Undefined function or method 'exist' for input arguments of type 'cell'
+				%
+				% This has been fixed in MATLAB 7.9 (R2009b) and later versions
+			end
+
+			if isstruct(self)
+				disp('Recovering flowequation from older version');
+				objstruct = self;
+				self = structtoobj(flowequation(),objstruct);
+
+				%2013 July 23rd
+				if isfield(objstruct,'ishutter'),      self.isSIA     = objstruct.ishutter;       end; 
+				if isfield(objstruct,'ismacayeal'),    self.isSSA     = objstruct.ismacayeal;     end; 
+				if isfield(objstruct,'ispattyn'),      self.isHO      = objstruct.ispattyn;       end; 
+				if isfield(objstruct,'isstokes'),      self.isFS      = objstruct.isstokes;       end; 
+				if isfield(objstruct,'bordermacayeal'),self.borderSSA = objstruct.bordermacayeal; end; 
+				if isfield(objstruct,'borderpattyn'),  self.borderHO  = objstruct.borderpattyn;   end; 
+				if isfield(objstruct,'borderstokes'),  self.borderFS  = objstruct.borderstokes;   end; 
+
+				%May 31 2022
+				if isfield(objstruct,'isMLHO')
+					self.isMOLHO = objstruct.isMLHO;
+				end
+			end
+
+
+		end% }}}
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.element_equation=project3d(md,'vector',self.element_equation,'type','element');
+			self.vertex_equation=project3d(md,'vector',self.vertex_equation,'type','node');
+			self.borderSSA=project3d(md,'vector',self.borderSSA,'type','node');
+			self.borderHO=project3d(md,'vector',self.borderHO,'type','node');
+			self.borderFS=project3d(md,'vector',self.borderFS,'type','node');
+		end % }}}
+		function self = flowequation(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%P1 for SSA
+			self.fe_SSA= 'P1';
+
+			%P1 for HO
+			self.fe_HO= 'P1';
+
+			%MINI condensed element for FS by default
+			self.fe_FS = 'MINIcondensed';
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if (~ismember('StressbalanceAnalysis',analyses) & ~ismember('StressbalanceSIAAnalysis',analyses)) | (strcmp(solution,'TransientSolution') & md.transient.isstressbalance==0), return; end
+
+			md = checkfield(md,'fieldname','flowequation.isSIA','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','flowequation.isSSA','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','flowequation.isL1L2','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','flowequation.isMOLHO','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','flowequation.isHO','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','flowequation.isFS','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','flowequation.isNitscheBC','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','flowequation.FSNitscheGamma','numel',[1], '>=', 0.);
+			md = checkfield(md,'fieldname','flowequation.fe_SSA','values',{'P1','P1bubble','P1bubblecondensed','P2','P2bubble'});
+			md = checkfield(md,'fieldname','flowequation.fe_HO' ,'values',{'P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P2bubble','P1xP3','P1xP4','P2xP4'});
+			md = checkfield(md,'fieldname','flowequation.fe_FS' ,'values',{'P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','LATaylorHood','XTaylorHood','OneLayerP4z','CrouzeixRaviart','LACrouzeixRaviart'});
+			md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_r','numel',[1],'>=',0.);
+			md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rlambda','numel',[1],'>=',0.);
+			md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rhop','numel',[1],'>=',0.);
+			md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rholambda','numel',[1],'>=',0.);
+			md = checkfield(md,'fieldname','flowequation.XTH_theta','numel',[1],'>=',0.,'<',0.5);
+			md = checkfield(md,'fieldname','flowequation.borderSSA','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+			md = checkfield(md,'fieldname','flowequation.borderHO','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+			md = checkfield(md,'fieldname','flowequation.borderFS','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+			if strcmp(domaintype(md.mesh),'2Dhorizontal')
+				md = checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices 1],'values',[1,2,4]);
+				md = checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements 1],'values',[1,2,4]);
+			elseif strcmp(domaintype(md.mesh),'3Dsurface')
+				md = checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices 1],'values',[1:2]);
+				md = checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements 1],'values',[1:2]);
+			elseif strcmp(domaintype(md.mesh),'2Dvertical')
+				md = checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices 1],'values',[2,5,6]);
+				md = checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements 1],'values',[2,5,6]);
+			elseif strcmp(domaintype(md.mesh),'3D'),
+				md = checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices 1],'values',[0:9]);
+				md = checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements 1],'values',[0:9]);
+			else
+				error('Case not supported yet');
+			end
+			if ~(self.isSIA || self.isSSA || self.isL1L2 || self.isMOLHO || self.isHO || self.isFS),
+				md = checkmessage(md,['no element types set for this model']);
+			end
+			if ismember('StressbalanceSIAAnalysis',analyses),
+				if any(self.element_equation==1),
+					if(self.vertex_equation & md.mask.ocean_levelset<0.),
+						disp(sprintf('\n !!! Warning: SIA''s model is not consistent on ice shelves !!!\n'));
+					end
+				end
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   flow equation parameters:'));
+
+			fielddisplay(self,'isSIA','is the Shallow Ice Approximation (SIA) used?');
+			fielddisplay(self,'isSSA','is the Shelfy-Stream Approximation (SSA) used?');
+			fielddisplay(self,'isL1L2','is the L1L2 approximation used?');
+			fielddisplay(self,'isMOLHO','is the MOno-Layer Higher-Order (MOLHO) approximation used?');
+			fielddisplay(self,'isHO','is the Higher-Order (HO) approximation used?');
+			fielddisplay(self,'isFS','are the Full-FS (FS) equations used?');
+			fielddisplay(self,'isNitscheBC','is weakly imposed condition used?');
+			fielddisplay(self,'FSNitscheGamma','Gamma value for the Nitsche term (default: 1e6)');
+			fielddisplay(self,'fe_SSA','Finite Element for SSA  ''P1'', ''P1bubble'' ''P1bubblecondensed'' ''P2''');
+			fielddisplay(self,'fe_HO', 'Finite Element for HO   ''P1'' ''P1bubble'' ''P1bubblecondensed'' ''P1xP2'' ''P2xP1'' ''P2''');
+			fielddisplay(self,'fe_FS', 'Finite Element for FS   ''P1P1'' (debugging only) ''P1P1GLS'' ''MINIcondensed'' ''MINI'' ''TaylorHood'' ''XTaylorHood''');
+			fielddisplay(self,'vertex_equation','flow equation for each vertex');
+			fielddisplay(self,'element_equation','flow equation for each element');
+			fielddisplay(self,'borderSSA','vertices on SSA''s border (for tiling)');
+			fielddisplay(self,'borderHO','vertices on HO''s border (for tiling)');
+			fielddisplay(self,'borderFS','vertices on FS'' border (for tiling)');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','isSIA','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isSSA','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isL1L2','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isMOLHO','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isHO','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isFS','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isNitscheBC','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','FSNitscheGamma','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','fe_SSA','data',self.fe_SSA,'format','String');
+			WriteData(fid,prefix,'object',self,'fieldname','fe_HO' ,'data',self.fe_HO,'format','String');
+			WriteData(fid,prefix,'object',self,'fieldname','fe_FS' ,'data',self.fe_FS,'format','String');
+			WriteData(fid,prefix,'object',self,'fieldname','augmented_lagrangian_r','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','augmented_lagrangian_rhop','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','augmented_lagrangian_rlambda','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','augmented_lagrangian_rholambda','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','XTH_theta','data',self.XTH_theta ,'format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','borderSSA','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','borderHO','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','borderFS','format','DoubleMat','mattype',1);
+			%convert approximations to enums
+			WriteData(fid,prefix,'data',self.vertex_equation,'name','md.flowequation.vertex_equation','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'data',self.element_equation,'name','md.flowequation.element_equation','format','DoubleMat','mattype',2);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.flowequation.isSIA'],self.isSIA);
+			writejsdouble(fid,[modelname '.flowequation.isSSA'],self.isSSA);
+			writejsdouble(fid,[modelname '.flowequation.isL1L2'],self.isL1L2);
+			writejsdouble(fid,[modelname '.flowequation.isMOLHO'],self.isMOLHO);
+			writejsdouble(fid,[modelname '.flowequation.isHO'],self.isHO);
+			writejsdouble(fid,[modelname '.flowequation.isFS'],self.isFS);
+         writejsstring(fid,[modelname '.flowequation.isNitscheBC'],self.isNitscheBC);
+         writejsstring(fid,[modelname '.flowequation.FSNitscheGamma'],self.FSNitscheGamma);
+         writejsstring(fid,[modelname '.flowequation.fe_SSA'],self.fe_SSA);
+			writejsstring(fid,[modelname '.flowequation.fe_HO'],self.fe_HO);
+			writejsstring(fid,[modelname '.flowequation.fe_FS'],self.fe_FS);
+			writejsdouble(fid,[modelname '.flowequation.augmented_lagrangian_r'],self.augmented_lagrangian_r);
+			writejsdouble(fid,[modelname '.flowequation.augmented_lagrangian_rhop'],self.augmented_lagrangian_rhop);
+			writejsdouble(fid,[modelname '.flowequation.augmented_lagrangian_rlambda'],self.augmented_lagrangian_rlambda);
+			writejsdouble(fid,[modelname '.flowequation.augmented_lagrangian_rholambda'],self.augmented_lagrangian_rholambda);
+			writejsdouble(fid,[modelname '.flowequation.XTH_theta'],self.XTH_theta);
+			writejs1Darray(fid,[modelname '.flowequation.vertex_equation'],self.vertex_equation);
+			writejs1Darray(fid,[modelname '.flowequation.element_equation'],self.element_equation);
+			writejs1Darray(fid,[modelname '.flowequation.borderSSA'],self.borderSSA);
+			writejs1Darray(fid,[modelname '.flowequation.borderHO'],self.borderHO);
+			writejs1Darray(fid,[modelname '.flowequation.borderFS'],self.borderFS);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/flowequation.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/flowequation.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/flowequation.py	(revision 27955)
@@ -0,0 +1,155 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+import MatlabFuncs as m
+from project3d import project3d
+from WriteData import WriteData
+
+
+class flowequation(object):
+    """FLOWEQUATION class definition
+
+    Usage:
+        flowequation = flowequation()
+    """
+
+    def __init__(self):  # {{{
+        self.isSIA = 0
+        self.isSSA = 0
+        self.isL1L2 = 0
+        self.isMOLHO = 0
+        self.isHO = 0
+        self.isFS = 0
+        self.isNitscheBC = 0
+        self.FSNitscheGamma = 1e6
+        self.fe_SSA = ''
+        self.fe_HO = ''
+        self.fe_FS = ''
+        self.augmented_lagrangian_r = 1
+        self.augmented_lagrangian_rhop = 1
+        self.augmented_lagrangian_rlambda = 1
+        self.augmented_lagrangian_rholambda = 1
+        self.XTH_theta = 0
+        self.vertex_equation = np.nan
+        self.element_equation = np.nan
+        self.borderSSA = np.nan
+        self.borderHO = np.nan
+        self.borderFS = np.nan
+        
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   flow equation parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'isSIA', "is the Shallow Ice Approximation (SIA) used?"))
+        s += '{}\n'.format(fielddisplay(self, 'isSSA', "is the Shelfy-Stream Approximation (SSA) used?"))
+        s += '{}\n'.format(fielddisplay(self, 'isL1L2', "are L1L2 equations used?"))
+        s += '{}\n'.format(fielddisplay(self, 'isMOLHO', "are MOno-layer Higher-Order (MOLHO) equations used?"))
+        s += '{}\n'.format(fielddisplay(self, 'isHO', "is the Higher-Order (HO) approximation used?"))
+        s += '{}\n'.format(fielddisplay(self, 'isFS', "are the Full-FS (FS) equations used?"))
+        s += '{}\n'.format(fielddisplay(self, 'isNitscheBC', "is weakly imposed condition used?"))
+        s += '{}\n'.format(fielddisplay(self, 'FSNitscheGamma', "Gamma value for the Nitsche term (default: 1e6)"))
+        s += '{}\n'.format(fielddisplay(self, 'fe_SSA', "Finite Element for SSA: 'P1', 'P1bubble' 'P1bubblecondensed' 'P2'"))
+        s += '{}\n'.format(fielddisplay(self, 'fe_HO', "Finite Element for HO:  'P1', 'P1bubble', 'P1bubblecondensed', 'P1xP2', 'P2xP1', 'P2', 'P2bubble', 'P1xP3', 'P2xP4'"))
+        s += '{}\n'.format(fielddisplay(self, 'fe_FS', "Finite Element for FS:  'P1P1' (debugging only) 'P1P1GLS' 'MINIcondensed' 'MINI' 'TaylorHood' 'LATaylorHood' 'XTaylorHood'"))
+        s += '{}\n'.format(fielddisplay(self, 'vertex_equation', "flow equation for each vertex"))
+        s += '{}\n'.format(fielddisplay(self, 'element_equation', "flow equation for each element"))
+        s += '{}\n'.format(fielddisplay(self, 'borderSSA', "vertices on SSA's border (for tiling)"))
+        s += '{}\n'.format(fielddisplay(self, 'borderHO', "vertices on HO's border (for tiling)"))
+        s += '{}\n'.format(fielddisplay(self, 'borderFS', "vertices on FS' border (for tiling)"))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # P1 for SSA
+        self.fe_SSA = 'P1'
+
+        # P1 for HO
+        self.fe_HO = 'P1'
+
+        # MINI condensed element for FS by default
+        self.fe_FS = 'MINIcondensed'
+        return self
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.element_equation = project3d(md, 'vector', self.element_equation, 'type', 'element')
+        self.vertex_equation = project3d(md, 'vector', self.vertex_equation, 'type', 'node')
+        self.borderSSA = project3d(md, 'vector', self.borderSSA, 'type', 'node')
+        self.borderHO = project3d(md, 'vector', self.borderHO, 'type', 'node')
+        self.borderFS = project3d(md, 'vector', self.borderFS, 'type', 'node')
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if ('StressbalanceAnalysis' not in analyses and 'StressbalanceSIAAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isstressbalance):
+            return md
+        md = checkfield(md, 'fieldname', 'flowequation.isSIA', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'flowequation.isSSA', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'flowequation.isL1L2', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'flowequation.isMOLHO', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'flowequation.isHO', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'flowequation.isFS', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'flowequation.isNitscheBC', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'flowequation.FSNitscheGamma', 'numel', [1], '>=', 0.)
+        md = checkfield(md, 'fieldname', 'flowequation.fe_SSA', 'values', ['P1', 'P1bubble', 'P1bubblecondensed', 'P2', 'P2bubble'])
+        md = checkfield(md, 'fieldname', 'flowequation.fe_HO', 'values', ['P1', 'P1bubble', 'P1bubblecondensed', 'P1xP2', 'P2xP1', 'P2', 'P2bubble', 'P1xP3', 'P2xP4'])
+        md = checkfield(md, 'fieldname', 'flowequation.fe_FS', 'values', ['P1P1', 'P1P1GLS', 'MINIcondensed', 'MINI', 'TaylorHood', 'LATaylorHood', 'XTaylorHood', 'OneLayerP4z', 'CrouzeixRaviart', 'LACrouzeixRaviart'])
+        md = checkfield(md, 'fieldname', 'flowequation.borderSSA', 'size', [md.mesh.numberofvertices], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'flowequation.borderHO', 'size', [md.mesh.numberofvertices], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'flowequation.borderFS', 'size', [md.mesh.numberofvertices], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'flowequation.augmented_lagrangian_r', 'numel', [1], '>', 0.)
+        md = checkfield(md, 'fieldname', 'flowequation.augmented_lagrangian_rhop', 'numel', [1], '>', 0.)
+        md = checkfield(md, 'fieldname', 'flowequation.augmented_lagrangian_rlambda', 'numel', [1], '>', 0.)
+        md = checkfield(md, 'fieldname', 'flowequation.augmented_lagrangian_rholambda', 'numel', [1], '>', 0.)
+        md = checkfield(md, 'fieldname', 'flowequation.XTH_theta', 'numel', [1], '>=', 0., '<', .5)
+        if m.strcmp(md.mesh.domaintype(), '2Dhorizontal'):
+            md = checkfield(md, 'fieldname', 'flowequation.vertex_equation', 'size', [md.mesh.numberofvertices], 'values', [1, 2, 4])
+            md = checkfield(md, 'fieldname', 'flowequation.element_equation', 'size', [md.mesh.numberofelements], 'values', [1, 2, 4])
+        elif m.strcmp(md.mesh.domaintype(), '3Dsurface'):
+            md = checkfield(md, 'fieldname', 'flowequation.vertex_equation', 'size', [md.mesh.numberofvertices], 'values', np.arange(1, 2 + 1))
+            md = checkfield(md, 'fieldname', 'flowequation.element_equation', 'size', [md.mesh.numberofelements], 'values', np.arange(1, 2 + 1))
+        elif m.strcmp(md.mesh.domaintype(), '2Dvertical'):
+            md = checkfield(md, 'fieldname', 'flowequation.vertex_equation', 'size', [md.mesh.numberofvertices], 'values', [2, 5, 6])
+            md = checkfield(md, 'fieldname', 'flowequation.element_equation', 'size', [md.mesh.numberofelements], 'values', [2, 5, 6])
+        elif m.strcmp(md.mesh.domaintype(), '3D'):
+            md = checkfield(md, 'fieldname', 'flowequation.vertex_equation', 'size', [md.mesh.numberofvertices], 'values', np.arange(0, 9 + 1))
+            md = checkfield(md, 'fieldname', 'flowequation.element_equation', 'size', [md.mesh.numberofelements], 'values', np.arange(0, 9 + 1))
+        else:
+            raise RuntimeError('Case not supported yet')
+
+        if not (self.isSIA or self.isSSA or self.isL1L2 or self.isMOLHO or self.isHO or self.isFS):
+            md.checkmessage("no element types set for this model")
+        if 'StressbalanceSIAAnalysis' in analyses:
+            if any(self.element_equation == 1):
+                if np.any(np.logical_and(self.vertex_equation, md.mask.ocean_levelset)):
+                    print("\n !!! Warning: SIA's model is not consistent on ice shelves !!!\n")
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isSIA', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isSSA', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isL1L2', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isMOLHO', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isHO', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isFS', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isNitscheBC', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'FSNitscheGamma', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'fe_SSA', 'data', self.fe_SSA, 'format', 'String')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'fe_HO', 'data', self.fe_HO, 'format', 'String')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'fe_FS', 'data', self.fe_FS, 'format', 'String')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'augmented_lagrangian_r', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'augmented_lagrangian_rhop', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'augmented_lagrangian_rlambda', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'augmented_lagrangian_rholambda', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'XTH_theta', 'data', self.XTH_theta, 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'borderSSA', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'borderHO', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'borderFS', 'format', 'DoubleMat', 'mattype', 1)
+        # Convert approximations to enums
+        WriteData(fid, prefix, 'data', self.vertex_equation, 'name', 'md.flowequation.vertex_equation', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'data', self.element_equation, 'name', 'md.flowequation.element_equation', 'format', 'DoubleMat', 'mattype', 2)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/fourierlove.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/fourierlove.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/fourierlove.js	(revision 27955)
@@ -0,0 +1,146 @@
+//FOURIERLOVE class definition
+//
+//   Usage:
+//      md.love=fourierlove();
+
+function fourierlove (){
+	//methods
+	this.extrude = function(md) { // {{{
+		return this;
+	} // }}}
+	this.setdefaultparameters = function() { // {{{
+		//we setup an elastic love number computation by default.
+			this.nfreq=1; 
+			this.frequencies=[0]; //Hz
+			this.sh_nmax=256; // .35 degree, 40 km at the equator.
+			this.sh_nmin=1;
+			// work on matlab script for computing g0 for given Earth's structure. 
+			this.g0=9.81; // m/s^2; 
+			this.r0=6371*1e3; //m;
+			this.mu0=1e11; // Pa
+			this.Gravitational_Constant=6.67259e-11; // m^3 kg^-1 s^-2
+			this.allow_layer_deletion=1;
+			this.underflow_tol=1e-16; //threshold of deep to surface love number ratio to trigger the deletion of layer 
+			this.integration_steps_per_layer=100;
+			this.istemporal=0;
+			this.n_temporal_iterations=8;
+			this.time=[0]; //s
+			this.love_kernels=0; 
+			this.forcing_type = 11; // surface loading
+			this.inner_core_boundary=1;
+			this.core_mantle_boundary=2;
+			this.complex_computation=0;
+	} // }}}
+	this.disp = function() { // {{{
+		fielddisplay(this,'nfreq','number of frequencies sampled (default 1, elastic) [Hz]');
+		fielddisplay(this,'frequencies','frequencies sampled (convention defaults to 0 for the elastic case) [Hz]');
+		fielddisplay(this,'sh_nmax','maximum spherical harmonic degree (default 256, .35 deg, or 40 km at equator)');
+		fielddisplay(this,'sh_nmin','minimum spherical harmonic degree (default 1)');
+		fielddisplay(this,'g0','adimensioning constant for gravity (default 10) [m/s^2]');
+		fielddisplay(this,'r0','adimensioning constant for radius (default 6371*10^3) [m]');
+		fielddisplay(this,'mu0','adimensioning constant for stress (default 10^11) [Pa]');
+		fielddisplay(this,'Gravitational_Constant','Newtonian constant of gravitation (default 6.67259e-11 [m^3 kg^-1 s^-2])');
+		fielddisplay(this,'allow_layer_deletion','allow for migration of the integration boundary with increasing spherical harmonics degree (default 1)');
+		fielddisplay(this,'underflow_tol','threshold of deep to surface love number ratio to trigger the deletion of layers (default 2.2204460492503131E-016)');
+		fielddisplay(this,'integration_steps_per_layer','number of radial steps to propagate the yi system from the bottom to the top of each layer (default 100)');
+		fielddisplay(this,'istemporal','1 for time-dependent love numbers, 0 for frequency-dependent or elastic love numbers (default 0)', 'If 1: use fourierlove function build_frequencies_from_time to meet consistency');
+		fielddisplay(this,'n_temporal_iterations','max number of iterations in the inverse Laplace transform. Also the number of spectral samples per time step requested (default 8)');
+		fielddisplay(this,'time','time vector for deformation if istemporal (default 0) [s]');
+		fielddisplay(this,'love_kernels','compute love numbers at depth? (default 0)');
+		fielddisplay(this,'forcing_type','integer indicating the nature and depth of the forcing for the Love number calculation (default 11) :','1:  Inner core boundary -- Volumic Potential','2:  Inner core boundary -- Pressure','3:  Inner core boundary -- Loading','4:  Inner core boundary -- Tangential traction','5:  Core mantle boundary -- Volumic Potential','6:  Core mantle boundary -- Pressure','7:  Core mantle boundary -- Loading','8:  Core mantle boundary -- Tangential traction','9:  Surface -- Volumic Potential','10: Surface -- Pressure','11: Surface -- Loading','12: Surface -- Tangential traction ');
+		fielddisplay(this,'inner_core_boundary','interface index in materials.radius locating forcing. Only used for forcing_type 1--4 (default 1)');
+		fielddisplay(this,'core_mantle_boundary','interface index in materials.radius locating forcing. Only used for forcing_type 5--8 (default 2)'); 
+
+	} // }}}
+	this.checkconsistency = function(md,solution,analyses) { // {{{
+
+		if (ArrayAnyEqual(ArrayIsMember('LoveAnalysis',analyses),1)) return; 
+
+		checkfield(md,'fieldname','love.nfreq','NaN',1,'Inf',1,'numel',1,'>',0);
+		checkfield(md,'fieldname','love.frequencies','NaN',1,'Inf',1,'numel',md.love.nfreq);
+		checkfield(md,'fieldname','love.sh_nmax','NaN',1,'Inf',1,'numel',1,'>',0);
+		checkfield(md,'fieldname','love.sh_nmin','NaN',1,'Inf',1,'numel',1,'>',0);
+		checkfield(md,'fieldname','love.g0','NaN',1,'Inf',1,'numel',1,'>',0);
+		checkfield(md,'fieldname','love.r0','NaN',1,'Inf',1,'numel',1,'>',0);
+		checkfield(md,'fieldname','love.mu0','NaN',1,'Inf',1,'numel',1,'>',0);
+		checkfield(md,'fieldname','love.Gravitational_Constant','NaN',1,'Inf',1,'numel',1,'>',0);
+		checkfield(md,'fieldname','love.allow_layer_deletion','values',[0, 1]);
+		checkfield(md,'fieldname','love.underflow_tol','NaN',1,'Inf',1,'numel',1,'>',0);
+		checkfield(md,'fieldname','love.integration_steps_per_layer','NaN',1,'Inf',1,'numel',1,'>',0);
+		checkfield(md,'fieldname','love.love_kernels','values',[0, 1]);
+		checkfield(md,'fieldname','love.forcing_type','NaN',1,'Inf',1,'numel',1,'>',0, '<=', 12);
+		checkfield(md,'fieldname','love.complex_computation','NaN',1,'Inf',1,'numel',1,'values',[0, 1]);
+
+		checkfield(md,'fieldname','love.istemporal','values',[0, 1]);
+
+		if (md.love.istemporal==1){
+			checkfield(md,'fieldname','love.n_temporal_iterations','NaN',1,'Inf',1,'numel',1,'>',0);
+			checkfield(md,'fieldname','love.time','NaN',1,'Inf',1,'numel',md.love.nfreq/2/md.love.n_temporal_iterations);
+		}
+		if (md.love.sh_nmin<=1 && md.love.forcing_type==9 || md.love.forcing_type==5 || md.love.forcing_type==1) {
+			throw 'Degree 1 not supported for Volumetric Potential forcing. Use sh_min>=2 for this kind of calculation.';
+		}
+
+		//need 'litho' material: 
+		console.log('md.fourierlove check consistency only paritally implemented for litho material');
+		/*
+		if ~isa(md.materials,'materials') | ~sum(strcmpi(md.materials.nature,'litho'))
+			error('Need a "litho" material to run a Fourier Love number analysis');
+		end
+
+		mat=find(strcmpi(md.materials.nature,'litho'));
+		if (md.love.forcing_type<=4) {
+			checkfield(md,'fieldname','love.inner_core_boundary','NaN',1,'Inf',1,'numel',1,'>',0, '<=', md.materials(mat).numlayers);
+		} else if (md.love.forcing_type<=8) {
+			checkfield(md,'fieldname','love.core_mantle_boundary','NaN',1,'Inf',1,'numel',1,'>',0, '<=', md.materials(mat).numlayers);
+		} */
+	} // }}}
+	this.marshall = function(md,prefix,fid) { // {{{
+	
+		WriteData(fid,prefix,'object',this,'fieldname','nfreq','format','Integer');
+		WriteData(fid,prefix,'object',this,'fieldname','frequencies','format','DoubleMat','mattype',3);
+		WriteData(fid,prefix,'object',this,'fieldname','sh_nmax','format','Integer');
+		WriteData(fid,prefix,'object',this,'fieldname','sh_nmin','format','Integer');
+		WriteData(fid,prefix,'object',this,'fieldname','g0','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','r0','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','mu0','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','Gravitational_Constant','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','allow_layer_deletion','format','Boolean');
+		WriteData(fid,prefix,'object',this,'fieldname','underflow_tol','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','integration_steps_per_layer','format','Integer');
+		WriteData(fid,prefix,'object',this,'fieldname','istemporal','format','Boolean');
+		WriteData(fid,prefix,'object',this,'fieldname','n_temporal_iterations','format','Integer');
+		WriteData(fid,prefix,'object',this,'fieldname','complex_computation','format','Boolean');
+		//note: no need to marshall the time vector, we have frequencies
+		WriteData(fid,prefix,'object',this,'fieldname','love_kernels','format','Boolean');
+		WriteData(fid,prefix,'object',this,'fieldname','forcing_type','format','Integer');
+		WriteData(fid,prefix,'object',this,'fieldname','inner_core_boundary','format','Integer');
+		WriteData(fid,prefix,'object',this,'fieldname','core_mantle_boundary','format','Integer');
+
+	} // }}}
+	//properties 
+	// {{{
+	this.nfreq                		= NaN;
+	this.frequencies          		= NaN;
+	this.sh_nmax              		= NaN;
+	this.sh_nmin              		= NaN;
+	this.g0                   		= NaN; 
+	this.r0                   		= NaN; 
+	this.mu0                  		= NaN;
+	this.Gravitational_Constant 	= 0;
+	this.allow_layer_deletion 		= NaN;
+	this.underflow_tol              = 0;
+	this.integration_steps_per_layer= 0;
+	this.istemporal		   			= 0;
+	this.n_temporal_iterations	  	= 0;
+	this.time			            = 0;
+	this.love_kernels 				= NaN;
+	this.forcing_type         		= NaN;
+	this.inner_core_boundary	    = 0;
+	this.core_mantle_boundary	    = 0;
+	this.complex_computation        = 0;
+	
+	//set defaults
+	this.setdefaultparameters();
+	// }}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/fourierlove.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/fourierlove.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/fourierlove.m	(revision 27955)
@@ -0,0 +1,189 @@
+%FOURIERLOVE class definition
+%
+%   Usage:
+%      md.love=fourierlove();
+
+classdef fourierlove
+	properties (SetAccess=public) 
+		nfreq						= 0;
+		frequencies					= 0;
+		sh_nmax						= 0;
+		sh_nmin						= 0;
+		g0							= 0;
+		r0							= 0;
+		mu0							= 0;
+		Gravitational_Constant		= 0;
+		chandler_wobble				= 0;
+		allow_layer_deletion		= 0;
+		underflow_tol				= 0;
+		pw_threshold				= 0;
+		integration_steps_per_layer	= 0;
+		istemporal					= 0;
+		n_temporal_iterations		= 0;
+		time						= 0;
+		love_kernels				= 0;
+		forcing_type				= 0;
+		inner_core_boundary			= 0;
+		core_mantle_boundary		= 0;
+		complex_computation			= 0;
+
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. Update old properties here
+		end% }}}
+	end
+	methods
+		function self = fourierlove(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			%we setup an elastic love number computation by default.
+			self.nfreq=1; 
+			self.frequencies=[0]; %Hz
+			self.sh_nmax=256; % .35 degree, 40 km at the equator.
+			self.sh_nmin=1;
+			% work on matlab script for computing g0 for given Earth's structure. 
+			self.g0=9.81; % m/s^2; 
+			self.r0=6371*1e3; %m;
+			self.mu0=1e11; % Pa
+			self.Gravitational_Constant=6.67259e-11; % m^3 kg^-1 s^-2
+			self.chandler_wobble=0;
+			self.allow_layer_deletion=1;
+			self.underflow_tol=1e-16; %threshold of deep to surface love number ratio to trigger the deletion of layer 
+			self.pw_threshold=1e-3; %if relative variation across frequencies is smaller than this ratio, the post-widder transform for time-dependent love numbers is bypassed 
+			self.integration_steps_per_layer=100;
+			self.istemporal=0;
+			self.n_temporal_iterations=8;
+			self.time=[0]; %s
+			self.love_kernels=0; 
+			self.forcing_type = 11; % surface loading
+			self.inner_core_boundary=1;
+			self.core_mantle_boundary=2;
+			self.complex_computation=0;
+		end % }}}
+		function disp(self) % {{{
+			fielddisplay(self,'nfreq','number of frequencies sampled (default: 1, elastic) [Hz]');
+			fielddisplay(self,'frequencies','frequencies sampled (convention defaults to 0 for the elastic case) [Hz]');
+			fielddisplay(self,'sh_nmax','maximum spherical harmonic degree (default: 256, .35 deg, or 40 km at equator)');
+			fielddisplay(self,'sh_nmin','minimum spherical harmonic degree (default: 1)');
+			fielddisplay(self,'g0','adimensioning constant for gravity (default: 10) [m/s^2]');
+			fielddisplay(self,'r0','adimensioning constant for radius (default: 6371*10^3) [m]');
+			fielddisplay(self,'mu0','adimensioning constant for stress (default: 10^11) [Pa]');
+			fielddisplay(self,'Gravitational_Constant','Newtonian constant of gravitation (default: 6.67259e-11 [m^3 kg^-1 s^-2])');
+			fielddisplay(self,'chandler_wobble','includes the inertial terms for the chandler wobble in the rotational feedback love numbers, only for forcing_type=11 (default: 0) (/!\ 1 is untested yet)');
+			fielddisplay(self,'allow_layer_deletion','allow for migration of the integration boundary with increasing spherical harmonics degree (default: 1)');			
+			fielddisplay(self,'underflow_tol','threshold of deep to surface love number ratio to trigger the deletion of layers (default: 1e-16)');
+			fielddisplay(self,'pw_threshold','if relative variation across frequencies is smaller than this ratio, the post-widder transform for time-dependent love numbers is bypassed (default (1e-3)');
+			fielddisplay(self,'integration_steps_per_layer','number of radial steps to propagate the yi system from the bottom to the top of each layer (default: 100)');
+			fielddisplay(self,'istemporal',{'1 for time-dependent love numbers, 0 for frequency-dependent or elastic love numbers (default: 0)', 'If 1: use fourierlove function build_frequencies_from_time to meet consistency'});
+			fielddisplay(self,'n_temporal_iterations','max number of iterations in the inverse Laplace transform. Also the number of spectral samples per time step requested (default: 8)');
+			fielddisplay(self,'time','time vector for deformation if istemporal (default: 0) [s]');
+			fielddisplay(self,'love_kernels','compute love numbers at depth? (default: 0)');
+			fielddisplay(self,'forcing_type',{'integer indicating the nature and depth of the forcing for the Love number calculation (default: 11):','1:  Inner core boundary -- Volumic Potential','2:  Inner core boundary -- Pressure','3:  Inner core boundary -- Loading','4:  Inner core boundary -- Tangential traction','5:  Core mantle boundary -- Volumic Potential','6:  Core mantle boundary -- Pressure','7:  Core mantle boundary -- Loading','8:  Core mantle boundary -- Tangential traction','9:  Surface -- Volumic Potential','10: Surface -- Pressure','11: Surface -- Loading','12: Surface -- Tangential traction '});
+			fielddisplay(self,'inner_core_boundary','interface index in materials.radius locating forcing. Only used for forcing_type 1--4 (default: 1)');
+			fielddisplay(self,'core_mantle_boundary','interface index in materials.radius locating forcing. Only used for forcing_type 5--8 (default: 2)'); 
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ismember('LoveAnalysis',analyses), return; end
+
+			md = checkfield(md,'fieldname','love.nfreq','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.frequencies','NaN',1,'Inf',1,'numel',md.love.nfreq);
+			md = checkfield(md,'fieldname','love.sh_nmax','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.sh_nmin','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.g0','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.r0','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.mu0','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.Gravitational_Constant','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.chandler_wobble','values',[0 1]);
+			md = checkfield(md,'fieldname','love.allow_layer_deletion','values',[0 1]);
+			md = checkfield(md,'fieldname','love.underflow_tol','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.pw_threshold','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.integration_steps_per_layer','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.love_kernels','values',[0 1]);
+			md = checkfield(md,'fieldname','love.forcing_type','NaN',1,'Inf',1,'numel',1,'>',0, '<=', 12);
+			md = checkfield(md,'fieldname','love.complex_computation','NaN',1,'Inf',1,'numel',1,'values',[0 1]);
+
+			md = checkfield(md,'fieldname','love.istemporal','values',[0 1]);
+			if md.love.istemporal==1
+				md = checkfield(md,'fieldname','love.n_temporal_iterations','NaN',1,'Inf',1,'numel',1,'>',0);
+				md = checkfield(md,'fieldname','love.time','NaN',1,'Inf',1,'numel',md.love.nfreq/2/md.love.n_temporal_iterations);
+			end
+			if md.love.sh_nmin<=1 & (md.love.forcing_type==1 || md.love.forcing_type==5 || md.love.forcing_type==9)
+				error(['Degree 1 not supported for forcing type ' num2str(md.love.forcing_type) '. Use sh_min>=2 for this kind of calculation.'])
+			end
+
+			if md.love.chandler_wobble==1
+				disp('Warning, Chandler Wobble in Love number calculator has not been validated yet');
+			end
+
+			%need 'litho' material: 
+			if ~isa(md.materials,'materials') | ~sum(strcmpi(md.materials.nature,'litho'))
+				error('Need a ''litho'' material to run a Fourier Love number analysis');
+			end
+
+			mat=find(strcmpi(md.materials.nature,'litho'));
+			if md.love.forcing_type<=4
+				md = checkfield(md,'fieldname','love.inner_core_boundary','NaN',1,'Inf',1,'numel',1,'>',0, '<=', md.materials(mat).numlayers);
+			elseif md.love.forcing_type<=8
+				md = checkfield(md,'fieldname','love.core_mantle_boundary','NaN',1,'Inf',1,'numel',1,'>',0, '<=', md.materials(mat).numlayers);
+			end
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'object',self,'fieldname','nfreq','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','frequencies','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'fieldname','sh_nmax','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','sh_nmin','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','g0','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','r0','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','mu0','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','Gravitational_Constant','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','chandler_wobble','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','allow_layer_deletion','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','underflow_tol','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','pw_threshold','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','integration_steps_per_layer','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','istemporal','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','n_temporal_iterations','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','complex_computation','format','Boolean');
+			%note: no need to marshall the time vector, we have frequencies
+			WriteData(fid,prefix,'object',self,'fieldname','love_kernels','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','forcing_type','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','inner_core_boundary','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','core_mantle_boundary','format','Integer');
+
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+			error('not implemented yet!');
+		end % }}}
+		function self=build_frequencies_from_time(self) % {{{
+			if ~self.istemporal
+				error('cannot build frequencies for temporal love numbers if love.istemporal==0')
+			end
+			disp('Temporal love numbers: Overriding md.love.nfreq and md.love.frequencies');
+			self.nfreq=length(self.time)*2*self.n_temporal_iterations;
+			self.frequencies=zeros(self.nfreq,1);
+			for i=1:length(self.time)
+				for j=1:2*self.n_temporal_iterations
+					if self.time(i)==0
+						self.frequencies((i-1)*2*self.n_temporal_iterations +j) =0; % convention to avoid marshalling infinite numbers
+					else
+						self.frequencies((i-1)*2*self.n_temporal_iterations +j) = j*log(2)/self.time(i)/2/pi;
+					end
+				end
+			end
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/fourierlove.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/fourierlove.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/fourierlove.py	(revision 27955)
@@ -0,0 +1,194 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from WriteData import WriteData
+
+
+class fourierlove(object):
+    """FOURIERLOVE - class definition
+
+    Usage:
+        md.love = fourierlove()
+    """
+
+    def __init__(self):  # {{{
+        self.nfreq = 0
+        self.frequencies = 0
+        self.sh_nmax = 0
+        self.sh_nmin = 0
+        self.g0 = 0
+        self.r0 = 0
+        self.mu0 = 0
+        self.Gravitational_Constant = 0
+        self.chandler_wobble = 0
+        self.allow_layer_deletion = 0
+        self.underflow_tol = 0
+        self.pw_threshold = 0
+        self.integration_steps_per_layer = 0
+        self.istemporal = 0
+        self.n_temporal_iterations = 0
+        self.time = 0
+        self.love_kernels = 0
+        self.forcing_type = 0
+        self.inner_core_boundary = 0
+        self.core_mantle_boundary = 0
+        self.complex_computation = 0
+
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        # TODO:
+        # - Correct display to match MATLAB
+        #
+        s = '{}\n'.format(fielddisplay(self, 'nfreq', 'number of frequencies sampled (default: 1, elastic) [Hz]'))
+        s += '{}\n'.format(fielddisplay(self, 'frequencies', 'frequencies sampled (convention defaults to 0 for the elastic case) [Hz]'))
+        s += '{}\n'.format(fielddisplay(self, 'sh_nmax', 'maximum spherical harmonic degree (default: 256, .35 deg, or 40 km at equator)'))
+        s += '{}\n'.format(fielddisplay(self, 'sh_nmin', 'minimum spherical harmonic degree (default: 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'g0', 'adimensioning constant for gravity (default: 10) [m/s^2]'))
+        s += '{}\n'.format(fielddisplay(self, 'r0', 'adimensioning constant for radius (default: 6371*10^3) [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'mu0', 'adimensioning constant for stress (default: 10^11) [Pa]'))
+        s += '{}\n'.format(fielddisplay(self, 'allow_layer_deletion', 'allow for migration of the integration boundary with increasing spherical harmonics degree (default: 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'Gravitational_Constant', 'Newtonian constant of gravitation (default: 6.67259e-11 [m^3 kg^-1 s^-2])'))
+        s += '{}\n'.format(fielddisplay(self, 'chandler_wobble', 'includes the inertial terms for the chandler wobble in the rotational feedback love numbers, only for forcing_type=11 (default: 0) (/!\\ 1 has not been validated yet)'))
+        s += '{}\n'.format(fielddisplay(self, 'allow_layer_deletion', 'allow for migration of the integration boundary with increasing spherical harmonics degree (default: 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'pw_threshold', 'if relative variation across frequencies is smaller than this ratio, the post-widder transform for time-dependent love numbers is bypassed (default (1e-3)'))
+        s += '{}\n'.format(fielddisplay(self, 'chandler_wobble', 'includes the inertial terms for the chandler wobble in the rotational feedback love numbers, only for forcing_type=11 (default: 0) (/!\\ 1 is untested)'))
+        s += '{}\n'.format(fielddisplay(self, 'integration_steps_per_layer', 'number of radial steps to propagate the yi system from the bottom to the top of each layer (default: 100)'))
+        s += '{}\n'.format(fielddisplay(self, 'istemporal', ['1 for time-dependent love numbers, 0 for frequency-dependent or elastic love numbers (default: 0)', 'If 1: use fourierlove function build_frequencies_from_time to meet consistency']))
+        s += '{}\n'.format(fielddisplay(self, 'n_temporal_iterations', 'max number of iterations in the inverse Laplace transform. Also the number of spectral samples per time step requested (default: 8)'))
+        s += '{}\n'.format(fielddisplay(self, 'time', 'time vector for deformation if istemporal (default: 0) [s]'))
+        s += '{}\n'.format(fielddisplay(self, 'love_kernels', 'compute love numbers at depth? (default: 0)'))
+        s += '{}\n'.format(fielddisplay(self, 'forcing_type', 'integer indicating the nature and depth of the forcing for the Love number calculation (default: 11):'))
+        s += '{}\n'.format('                                                     1:  Inner core boundary -- Volumic Potential')
+        s += '{}\n'.format('                                                     2:  Inner core boundary -- Pressure')
+        s += '{}\n'.format('                                                     3:  Inner core boundary -- Loading')
+        s += '{}\n'.format('                                                     4:  Inner core boundary -- Tangential traction')
+        s += '{}\n'.format('                                                     5:  Core mantle boundary -- Volumic Potential')
+        s += '{}\n'.format('                                                     6:  Core mantle boundary -- Pressure')
+        s += '{}\n'.format('                                                     7:  Core mantle boundary -- Loading')
+        s += '{}\n'.format('                                                     8:  Core mantle boundary -- Tangential traction')
+        s += '{}\n'.format('                                                     9:  Surface -- Volumic Potential')
+        s += '{}\n'.format('                                                     10: Surface -- Pressure')
+        s += '{}\n'.format('                                                     11: Surface -- Loading')
+        s += '{}\n'.format('                                                     12: Surface -- Tangential traction ')
+        s += '{}\n'.format(fielddisplay(self, 'inner_core_boundary', 'interface index in materials.radius locating forcing. Only used for forcing_type 1--4 (default: 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'core_mantle_boundary', 'interface index in materials.radius locating forcing. Only used for forcing_type 5--8 (default: 2)'))
+
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # We setup an elastic love number computation by default
+        self.nfreq = 1
+        self.frequencies = [0] # Hz
+        self.sh_nmax = 256 # .35 degree, 40 km at the equator
+        self.sh_nmin = 1
+        # Work on Python script for computing g0 for given Earth's structure
+        self.g0 = 9.81 # m/s^2
+        self.r0 = 6371 * 1e3 # m
+        self.mu0 = 1e11 # Pa
+        self.Gravitational_Constant = 6.67259e-11 # m^3 kg^-1 s^-2
+        self.chandler_wobble = 0
+        self.allow_layer_deletion = 1
+        self.underflow_tol = 1e-16 # Threshold of deep to surface love number ratio to trigger the deletion of layer
+        self.pw_threshold = 1e-3 # If relative variation across frequencies is smaller than this ratio, the post-widder transform for time-dependent love numbers is bypassed 
+        self.integration_steps_per_layer = 100
+        self.istemporal = 0
+        self.n_temporal_iterations = 8
+        self.time = [0] # s
+        self.love_kernels = 0
+        self.forcing_type = 11 # Surface loading
+        self.inner_core_boundary = 1
+        self.core_mantle_boundary = 2
+        self.complex_computation = 0
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if 'LoveAnalysis' not in analyses:
+            return md
+
+        md = checkfield(md, 'fieldname', 'love.nfreq', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.frequencies', 'NaN', 1, 'Inf', 1, 'numel', md.love.nfreq)
+        md = checkfield(md, 'fieldname', 'love.sh_nmax', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.sh_nmin', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.g0', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.r0', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.mu0', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.Gravitational_Constant', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.chandler_wobble', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'love.allow_layer_deletion', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'love.underflow_tol', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.pw_threshold', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.integration_steps_per_layer', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.love_kernels', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'love.forcing_type', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0, '<=', 12)
+        md = checkfield(md, 'fieldname', 'love.complex_computation', 'NaN', 1, 'Inf', 1, 'numel', 1, 'values', [0, 1])
+
+        md = checkfield(md, 'fieldname', 'love.istemporal', 'values', [0, 1])
+
+        if md.love.istemporal:
+            md = checkfield(md, 'fieldname', 'love.n_temporal_iterations', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+            md = checkfield(md, 'fieldname', 'love.time', 'NaN', 1, 'Inf', 1, 'numel', md.love.nfreq / 2 / md.love.n_temporal_iterations)
+        if md.love.sh_nmin <= 1 and (md.love.forcing_type == 1 or md.love.forcing_type == 5 or md.love.forcing_type == 9):
+            raise RuntimeError('Degree 1 not supported for forcing type {}. Use sh_min >= 2 for this kind of calculation.'.format(md.love.forcing_type))
+
+        if md.love.chandler_wobble  == 1:
+            print('Warning: Chandler wobble in Love number calculator has not been validated yet')
+
+        # Need 'litho' material
+        if md.materials.__class__.__name__ != 'materials' or 'litho' not in md.materials.nature:
+            raise RuntimeError('Need a \'litho\' material to run a Fourier Love number analysis')
+
+        mat = np.where(np.array(md.materials.nature) == 'litho')[0]
+        if md.love.forcing_type <= 4:
+            md = checkfield(md, 'fieldname', 'love.inner_core_boundary', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0, '<=', md.materials[mat].numlayers)
+        elif md.love.forcing_type <= 8:
+            md = checkfield(md, 'fieldname', 'love.core_mantle_boundary', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0, '<=', md.materials[mat].numlayers)
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'nfreq', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'frequencies', 'format', 'DoubleMat', 'mattype',3)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'sh_nmax', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'sh_nmin', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'g0', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'r0', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'mu0', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'Gravitational_Constant', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'chandler_wobble', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'allow_layer_deletion', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'underflow_tol', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'pw_threshold', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'integration_steps_per_layer', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'istemporal', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'n_temporal_iterations', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'complex_computation', 'format', 'Boolean')
+        # Note: no need to marshall the time vector, we have frequencies
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'love_kernels', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'forcing_type', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'inner_core_boundary', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'core_mantle_boundary', 'format', 'Integer')
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self
+    # }}}
+
+    def build_frequencies_from_time(self):  # {{{
+        if not self.istemporal:
+            raise RuntimeError('cannot build frequencies for temporal love numbers if love.istemporal==0')
+        print('Temporal love numbers: Overriding md.love.nfreq and md.love.frequencies')
+        self.nfreq = len(self.time) * 2 * self.n_temporal_iterations
+        self.frequencies = np.zeros((self.nfreq,))
+        for i in range(len(self.time)):
+            for j in range(2 * self.n_temporal_iterations):
+                if self.time[i] == 0:
+                    self.frequencies[(i - 1) * 2 * self.n_temporal_iterations + j] = 0 # Convention to avoid marshalling infinite numbers
+                else:
+                    self.frequencies[(i - 1) * 2 * self.n_temporal_iterations + j] = j * np.log(2) / self.time[i] / 2 / np.pi
+        return self
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/friction.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/friction.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/friction.js	(revision 27955)
@@ -0,0 +1,106 @@
+//FRICTION class definition
+//
+//   Usage:
+//      friction=friction();
+
+function friction (){
+	//methods
+	this.setdefaultparameters = function(){ // {{{
+
+	} // }}}
+	this.disp= function (){// {{{
+		console.log(sprintf('Basal shear stress parameters: Sigma_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p)'));
+		fielddisplay(this,'coefficient','friction coefficient [SI]');
+		fielddisplay(this,'p','p exponent');
+		fielddisplay(this,'q','q exponent');
+		fielddisplay(this,'effective_pressure','Effective Pressure for the forcing if not coupled [Pa]');
+		fielddisplay(this,'coupling','Coupling flag: 0 for default, 1 for forcing(provide md.friction.effective_pressure)  and 2 for coupled(not implemented yet)');
+		fielddisplay(this,'effective_pressure_limit','Neff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)');
+	} // }}}
+	this.extrude = function(md) {//{{{
+		this.coefficient = project3d(md, 'vector', this.coefficient, 'type', 'node', 'layer', 1);
+		this.p = project3d(md, 'vector', this.p, 'type', 'element');
+		this.q = project3d(md, 'vector', this.q, 'type', 'element');
+		switch (this.coupling) {
+			case 0:
+			case 1:
+				this.effective_pressure=project3d(md, 'vector', this.effective_pressure, 'type', 'node', 'layer', 1);
+				break;
+			case 2:
+				console.error('not implemented yet');
+				break;
+			default:	
+				console.error('not supported yet');
+		}
+		return this;
+	}//}}}
+	this.classname= function (){// {{{
+		return "friction";
+	} // }}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			//Early return
+			if ((!ArrayAnyEqual(ArrayIsMember('StressbalanceAnalysis',analyses),1)) & (!ArrayAnyEqual(ArrayIsMember('StressbalanceAnalysis',analyses),1))){
+				return; 
+			}
+			checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements ,1]);
+			checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements ,1]);
+			checkfield(md,'fieldname','friction.coupling','numel',[1],'values',[0, 1, 2]);
+			checkfield(md,'fieldname','friction.effective_pressure_limit','numel',[1],'>=',0);
+			switch (this.coupling) {
+				case 0:
+				case 1:
+					checkfield(md,'fieldname','friction.effective_pressure','NaN',1,'Inf',1,'timeseries',1);
+					break;
+				case 2:
+					console.error('not implemented yet');
+					break;
+				default:	
+					console.error('not supported yet');
+			}
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			var yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.friction.law','data',1,'format','Integer');
+			let mattype,tsl;
+			if ((size(this.coefficient,0)==md.mesh.numberofvertices | size(this.coefficient,1)==md.mesh.numberofvertices+1)) {
+				mattype=1;
+				tsl = md.mesh.numberofvertices;
+			} else {
+				mattype=2;
+				tsl = md.mesh.numberofelements;
+			}
+			WriteData(fid,prefix,'object',this,'fieldname','coefficient','format','DoubleMat','mattype',mattype,'timeserieslength',tsl+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',this,'fieldname','p','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',this,'fieldname','q','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'class','friction','object',this,'fieldname','coupling','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','friction','fieldname','effective_pressure_limit','format','Double');
+			switch (this.coupling) {
+				case 0:
+					break;
+				case 1:
+					WriteData(fid,prefix,'class','friction','object',this,'fieldname','effective_pressure','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+					break;
+				case 2:
+					console.error('not implemented yet');
+					break;
+				default:
+					console.error('not supported yet');		
+			}
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	//{{{
+	this.coefficient			  = NaN;
+	this.p						  = NaN;
+	this.q						  = NaN;
+	this.coupling				  = 0;
+	this.effective_pressure 	  = NaN;
+	this.effective_pressure_limit = 0;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/friction.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/friction.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/friction.m	(revision 27955)
@@ -0,0 +1,98 @@
+%FRICTION class definition
+%
+%	Usage:
+%		friction=friction();
+
+classdef friction
+	properties (SetAccess=public) 
+		coefficient              = NaN;
+		p                        = NaN;
+		q                        = NaN;
+		coupling                 = 0;
+		linearize                = 0;
+		effective_pressure       = NaN;
+		effective_pressure_limit = 0;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1);
+			self.p=project3d(md,'vector',self.p,'type','element');
+			self.q=project3d(md,'vector',self.q,'type','element');
+			if self.coupling==3 || self.coupling==4
+				self.effective_pressure=project3d(md,'vector',self.effective_pressure,'type','node','layer',1);
+			end
+		end % }}}
+		function self = friction(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(friction(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			self.linearize = 0;
+			self.coupling  = 0;
+			self.effective_pressure_limit = 0;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+			if (strcmp(solution,'TransientSolution') &  md.transient.isstressbalance ==0 & md.transient.isthermal == 0), return; end
+
+			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.linearize','numel',[1],'values',[0:2]);
+			md = checkfield(md,'fieldname','friction.coupling','numel',[1],'values',[0:4]);
+			md = checkfield(md,'fieldname','friction.effective_pressure_limit','numel',[1],'>=',0);
+         if self.coupling==3
+            md = checkfield(md,'fieldname','friction.effective_pressure','NaN',1,'Inf',1,'timeseries',1);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('Basal shear stress parameters: Sigma_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p)'));
+			fielddisplay(self,'coefficient','friction coefficient [SI]');
+			fielddisplay(self,'p','p exponent');
+			fielddisplay(self,'q','q exponent');
+			fielddisplay(self,'coupling','Coupling flag 0: uniform sheet (negative pressure ok, default), 1: ice pressure only, 2: water pressure assuming uniform sheet (no negative pressure), 3: use provided effective_pressure, 4: use coupled model (not implemented yet)');
+			fielddisplay(self,'linearize','0: not linearized, 1: interpolated linearly, 2: constant per element (default is 0)');
+			fielddisplay(self,'effective_pressure','Effective Pressure for the forcing if not coupled [Pa]');
+			fielddisplay(self,'effective_pressure_limit','Neff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.friction.law','data',1,'format','Integer');
+			if(size(self.coefficient,1)==md.mesh.numberofvertices | size(self.coefficient,1)==md.mesh.numberofvertices+1),
+				mattype=1;
+				tsl = md.mesh.numberofvertices;
+			else
+				mattype=2;
+				tsl = md.mesh.numberofelements;
+			end
+			WriteData(fid,prefix,'object',self,'fieldname','coefficient','format','DoubleMat','mattype',mattype,'timeserieslength',tsl+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','p','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'fieldname','q','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','coupling','format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','linearize','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','friction','fieldname','effective_pressure_limit','format','Double');
+			if self.coupling==3 || self.coupling==4
+				WriteData(fid,prefix,'class','friction','object',self,'fieldname','effective_pressure','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			end
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.friction.coefficient'],self.coefficient);
+			writejs1Darray(fid,[modelname '.friction.p'],self.p);
+			writejs1Darray(fid,[modelname '.friction.q'],self.q);
+			writejs1Darray(fid,[modelname '.friction.coupling'],self.coupling);
+			writejs1Darray(fid,[modelname '.friction.linearize'],self.linearize);
+			writejs1Darray(fid,[modelname '.friction.effective_pressure'],self.effective_pressure);
+			writejs1Darray(fid,[modelname '.friction.effective_pressure_limit'],self.effective_pressure_limit);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/friction.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/friction.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/friction.py	(revision 27955)
@@ -0,0 +1,88 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class friction(object):
+    """friction class definition
+
+    Usage:
+        friction = friction()
+    """
+
+    def __init__(self):  # {{{
+        self.coefficient = np.nan
+        self.p = np.nan
+        self.q = np.nan
+        self.coupling = 0
+        self.linearize = 0
+        self.effective_pressure = np.nan
+        self.effective_pressure_limit = 0
+        self.setdefaultparameters()
+    # }}}
+    def __repr__(self):  # {{{
+        s = 'Basal shear stress parameters: Sigma_b = coefficient^2 * Neff ^r * |u_b|^(s - 1) * u_b,\n'
+        s += '(effective stress Neff = rho_ice * g * thickness + rho_water * g * base, r = q / p and s = 1 / p)\n'
+        s += '{}\n'.format(fielddisplay(self, 'coefficient', 'friction coefficient [SI]'))
+        s += '{}\n'.format(fielddisplay(self, 'p', 'p exponent'))
+        s += '{}\n'.format(fielddisplay(self, 'q', 'q exponent'))
+        s += '{}\n'.format(fielddisplay(self, 'coupling', 'Coupling flag 0: uniform sheet (negative pressure ok, default), 1: ice pressure only, 2: water pressure assuming uniform sheet (no negative pressure), 3: use provided effective_pressure, 4: used coupled model (not implemented yet)'))
+        s += '{}\n'.format(fielddisplay(self, 'linearize', '0: not linearized, 1: interpolated linearly, 2: constant per element (default is 0)'))
+        s += '{}\n'.format(fielddisplay(self, 'effective_pressure', 'Effective Pressure for the forcing if not coupled [Pa]'))
+        s += '{}\n'.format(fielddisplay(self, 'effective_pressure_limit', 'Neff do not allow to fall below a certain limit: effective_pressure_limit * rho_ice * g * thickness (default 0)'))
+        return s
+    # }}}
+    def setdefaultparameters(self):  # {{{
+        self.linearize = 0
+        self.coupling = 0
+        self.effective_pressure_limit = 0
+        return self
+    # }}}
+    def extrude(self, md):  # {{{
+        self.coefficient = project3d(md, 'vector', self.coefficient, 'type', 'node', 'layer', 1)
+        self.p = project3d(md, 'vector', self.p, 'type', 'element')
+        self.q = project3d(md, 'vector', self.q, 'type', 'element')
+        if self.coupling in[3, 4]:
+            self.effective_pressure = project3d(md, 'vector', self.effective_pressure, 'type', 'node', 'layer', 1)
+        return self
+    # }}}
+    def defaultoutputs(self, md):  # {{{
+        list = []
+        return list
+    # }}}
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if 'StressbalanceAnalysis' not in analyses and 'ThermalAnalysis' not in analyses:
+            return md
+        if solution == 'TransientSolution' and not md.transient.isstressbalance and not md.transient.isthermal:
+            return md
+        md = checkfield(md, 'fieldname', 'friction.coefficient', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'friction.q', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
+        md = checkfield(md, 'fieldname', 'friction.p', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
+        md = checkfield(md, 'fieldname', 'friction.linearize', 'numel', [1], 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'friction.coupling', 'numel', [1], 'values', [0, 1, 2, 3, 4])
+        md = checkfield(md, 'fieldname', 'friction.effective_pressure_limit', 'numel', [1], '>=', 0)
+        if self.coupling == 3:
+            md = checkfield(md, 'fieldname', 'friction.effective_pressure', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+        return md
+    # }}}
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'name', 'md.friction.law', 'data', 1, 'format', 'Integer')
+        if type(self.coefficient) in [np.ndarray] and (self.coefficient.shape[0] == md.mesh.numberofvertices or self.coefficient.shape[0] == (md.mesh.numberofvertices + 1)):
+            mattype = 1
+            tsl = md.mesh.numberofvertices
+        else:
+            mattype = 2
+            tsl = md.mesh.numberofelements
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'coefficient', 'format', 'DoubleMat', 'mattype', mattype, 'timeserieslength', tsl + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'p', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'q', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'coupling', 'format', 'Integer')
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'linearize', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'friction', 'fieldname', 'effective_pressure_limit', 'format', 'Double')
+        if self.coupling == 3 or self.coupling == 4:
+            WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'effective_pressure', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictioncoulomb.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictioncoulomb.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictioncoulomb.m	(revision 27955)
@@ -0,0 +1,96 @@
+%FRICTIONCOULOMB class definition
+%
+%   Usage:
+%      frictioncoulomb=frictioncoulomb();
+
+classdef frictioncoulomb
+	properties (SetAccess=public) 
+		coefficient        = NaN;
+		p                  = NaN;
+		q                  = NaN;
+		coefficientcoulomb = NaN;
+		coupling	= 0;
+		effective_pressure = NaN;
+		effective_pressure_limit = 0;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1);
+			self.coefficientcoulomb=project3d(md,'vector',self.coefficientcoulomb,'type','node','layer',1);
+			self.p=project3d(md,'vector',self.p,'type','element');
+			self.q=project3d(md,'vector',self.q,'type','element');
+			switch self.coupling
+				case 0
+				case 1
+					self.effective_pressure=project3d(md,'vector',self.effective_pressure,'type','node','layer',1);
+				case 2
+					error('not implemented yet');
+				otherwise
+					error('not supported yet');		
+			end
+		end % }}}
+		function self = frictioncoulomb(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			self.effective_pressure_limit = 0;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.coefficientcoulomb','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.coupling','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','friction.effective_pressure_limit','numel',[1],'>=',0);			
+			switch self.coupling
+				case 0
+				case 1
+					md = checkfield(md,'fieldname','friction.effective_pressure','NaN',1,'Inf',1,'timeseries',1);
+				case 2
+					error('not implemented yet');
+				otherwise
+					error('not supported yet');		
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('Basal shear stress parameters: Sigma_b = min( coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b\n, coefficientcoulomb^2 * Neff) (effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p, floatation thickness h_f=max(0,-rho_sw / rho_i * bed))'));
+			fielddisplay(self,'coefficient','power law (Weertman) friction coefficient [SI]');
+			fielddisplay(self,'coefficientcoulomb','Coulomb friction coefficient [SI]');
+			fielddisplay(self,'p','p exponent');
+			fielddisplay(self,'q','q exponent');
+			fielddisplay(self,'effective_pressure','Effective Pressure for the forcing if not coupled [Pa]');
+			fielddisplay(self,'coupling','Coupling flag: 0 for default, 1 for forcing(provide md.friction.effective_pressure)  and 2 for coupled(not implemented yet)');
+			fielddisplay(self,'effective_pressure_limit','Neff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)');	
+			end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'name','md.friction.law','data',7,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','coefficientcoulomb','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','p','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'fieldname','q','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','coupling','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','friction','fieldname','effective_pressure_limit','format','Double');
+			switch self.coupling
+				case 0
+				case 1
+					WriteData(fid,prefix,'class','friction','object',self,'fieldname','effective_pressure','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				case 2
+					error('not implemented yet');
+				otherwise
+					error('not supported yet');		
+			end
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictioncoulomb.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictioncoulomb.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictioncoulomb.py	(revision 27955)
@@ -0,0 +1,92 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class frictioncoulomb(object):
+    """FRICTIONCOULOMB class definition
+
+    Usage:
+        frictioncoulomb = frictioncoulomb()
+    """
+
+    def __init__(self):  # {{{
+        self.coefficient = np.nan
+        self.coefficientcoulomb = np.nan
+        self.p = np.nan
+        self.q = np.nan
+        self.coupling = 0
+        self.effective_pressure = np.nan
+        self.effective_pressure_limit = 0
+
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = 'Basal shear stress parameters: Sigma_b = min(coefficient^2 * Neff ^r * |u_b|^(s - 1) * u_b,\n'
+        s += 'coefficientcoulomb^2 * Neff), (effective stress Neff = rho_ice * g * thickness + rho_water * g * bed, r = q / p and s = 1 / p).\n'
+        s += '{}\n'.format(fielddisplay(self, "coefficient", "power law (Weertman) friction coefficient [SI]"))
+        s += '{}\n'.format(fielddisplay(self, "coefficientcoulomb", "Coulomb friction coefficient [SI]"))
+        s += '{}\n'.format(fielddisplay(self, "p", "p exponent"))
+        s += '{}\n'.format(fielddisplay(self, "q", "q exponent"))
+        s += '{}\n'.format(fielddisplay(self, 'coupling', 'Coupling flag: 0 for default, 1 for forcing(provide md.friction.effective_pressure)  and 2 for coupled(not implemented yet)'))
+        s += '{}\n'.format(fielddisplay(self, 'effective_pressure', 'Effective Pressure for the forcing if not coupled [Pa]'))
+        s += '{}\n'.format(fielddisplay(self, 'effective_pressure_limit', 'Neff do not allow to fall below a certain limit: effective_pressure_limit * rho_ice * g * thickness (default 0)'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.effective_pressure_limit = 0
+        return self
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.coefficient = project3d(md, 'vector', self.coefficient, 'type', 'node', 'layer', 1)
+        self.coefficientcoulomb = project3d(md, 'vector', self.coefficientcoulomb, 'type', 'node', 'layer', 1)
+        self.p = project3d(md, 'vector', self.p, 'type', 'element')
+        self.q = project3d(md, 'vector', self.q, 'type', 'element')
+        if self.coupling == 1:
+            self.effective_pressure = project3d(md, 'vector', self.effective_pressure, 'type', 'node', 'layer', 1)
+        elif self.coupling == 2:
+            raise ValueError('not implemented yet')
+        elif self.coupling > 2:
+            raise ValueError('not supported yet')
+        return self
+    # }}}
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if 'StressbalanceAnalysis' not in analyses and 'ThermalAnalysis' not in analyses:
+            return md
+        md = checkfield(md, 'fieldname', 'friction.coefficient', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'friction.coefficientcoulomb', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'friction.q', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
+        md = checkfield(md, 'fieldname', 'friction.p', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
+        md = checkfield(md, 'fieldname', 'friction.coupling', 'numel', [1], 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'friction.effective_pressure_limit', 'numel', [1], '>=', 0)
+        if self.coupling == 1:
+            md = checkfield(md, 'fieldname', 'friction.effective_pressure', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+        elif self.coupling == 2:
+            raise ValueError('not implemented yet')
+        elif self.coupling > 2:
+            raise ValueError('not supported yet')
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'name', 'md.friction.law', 'data', 7, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'coefficient', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'coefficientcoulomb', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'p', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'q', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'coupling', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'friction', 'fieldname', 'effective_pressure_limit', 'format', 'Double')
+        if self.coupling == 1:
+            WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'effective_pressure', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        elif self.coupling == 2:
+            raise ValueError('not implemented yet')
+        elif self.coupling > 2:
+            raise ValueError('not supported yet')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictioncoulomb2.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictioncoulomb2.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictioncoulomb2.m	(revision 27955)
@@ -0,0 +1,102 @@
+%FRICTIONCOULOMB2 class definition
+%
+%   Usage:
+%      frictioncoulomb=frictioncoulomb2();
+
+classdef frictioncoulomb2
+	properties (SetAccess=public) 
+		C                        = NaN;
+		m                        = NaN;
+		coupling                 = 0;
+		effective_pressure       = NaN;
+		effective_pressure_limit = 0;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			if isstruct(self)
+				disp('Recovering frictioncoulomb2 from older version');
+				if isfield(self,'coefficient')
+					self.C = self.coefficient;
+				end
+				self = structtoobj(frictioncoulomb2(),self);
+			end
+		end% }}}
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.C=project3d(md,'vector',self.C,'type','node','layer',1);
+			self.m=project3d(md,'vector',self.m,'type','element');
+			switch self.coupling
+				case 0
+				case 1
+					self.effective_pressure=project3d(md,'vector',self.effective_pressure,'type','node','layer',1);
+				case 2
+					error('not implemented yet');
+				otherwise
+					error('not supported yet');		
+			end
+		end % }}}
+		function self = frictioncoulomb(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			self.effective_pressure_limit = 0;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','friction.C','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.m','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.coupling','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','friction.effective_pressure_limit','numel',[1],'>=',0);			
+			switch self.coupling
+				case 0
+				case 1
+					md = checkfield(md,'fieldname','friction.effective_pressure','NaN',1,'Inf',1,'timeseries',1);
+				case 2
+					error('not implemented yet');
+				otherwise
+					error('not supported yet');		
+			end
+		end % }}}
+		function disp(self) % {{{
+         disp('Coulomb limited sliding law parameters:');
+         disp(' ');
+         disp('                     C^2 |u_b|^(m-1) * (.5*N)           ');
+         disp('      tau_b = - _________________________________   u_b ');
+         disp('                (C^(2/m) |u_b| + (0.5*N)^(1/m) )^m      ');
+         disp(' ');
+			fielddisplay(self,'C','friction coefficient [SI]');
+			fielddisplay(self,'m','m exponent (Weertman would be 1/3)');
+			fielddisplay(self,'effective_pressure','Effective Pressure for the forcing if not coupled [Pa]');
+			fielddisplay(self,'coupling','Coupling flag: 0 for default, 1 for forcing(provide md.friction.effective_pressure)  and 2 for coupled (not implemented yet)');
+			fielddisplay(self,'effective_pressure_limit','Neff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)');	
+			end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'name','md.friction.law','data',13,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','C','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','m','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','coupling','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','friction','fieldname','effective_pressure_limit','format','Double');
+			switch self.coupling
+				case 0
+				case 1
+					WriteData(fid,prefix,'class','friction','object',self,'fieldname','effective_pressure','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				case 2
+					error('not implemented yet');
+				otherwise
+					error('not supported yet');		
+			end
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionhydro.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionhydro.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionhydro.m	(revision 27955)
@@ -0,0 +1,90 @@
+%FRICTIONWEERTMAN class definition
+%
+%   Usage:
+%      friction=frictionhydro();
+
+classdef frictionhydro
+	properties (SetAccess=public) 
+		coupling           = 0;
+		q                  = NaN;
+		C                  = NaN;
+		As                 = NaN;
+		effective_pressure = NaN;
+		effective_pressure_limit = 0;
+	end
+	methods
+		function self = frictionhydro(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			self.effective_pressure_limit = 0;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','friction.coupling','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.C','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.As','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.effective_pressure_limit','numel',[1],'>=',0);
+			switch self.coupling
+				case 0
+				case 1
+					md = checkfield(md,'fieldname','friction.effective_pressure','NaN',1,'Inf',1,'timeseries',1);
+				case 2
+					error('not implemented yet');
+				otherwise
+					error('not supported yet');		
+			end
+	    end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.q=project3d(md,'vector',self.q,'type','element');
+			self.C=project3d(md,'vector',self.C,'type','element');
+			self.As=project3d(md,'vector',self.As,'type','element');
+			switch self.coupling
+				case 0
+				case 1
+					self.effective_pressure=project3d(md,'vector',self.effective_pressure,'type','node','layer',1);
+				case 2
+					error('not implemented yet');
+				otherwise
+					error('not supported yet');		
+			end
+	  end % }}}
+		function disp(self) % {{{
+			disp(sprintf('Effective Pressure based friction law described in Gagliardini 2007'));
+			fielddisplay(self,'coupling','Coupling flag: 0 for default, 1 for forcing(provide md.friction.effective_pressure)  and 2 for coupled(not implemented yet)');
+			fielddisplay(self,'q','friction law exponent q>=1');
+			fielddisplay(self,'C','friction law max value [SI]');
+			fielddisplay(self,'As','Sliding Parameter without cavitation [m Pa^-n s^-1]');
+			fielddisplay(self,'effective_pressure','Effective Pressure for the forcing if not coupled [Pa]');
+			fielddisplay(self,'effective_pressure_limit','Neff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.friction.law','data',3,'format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','coupling','format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','As','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','friction','fieldname','effective_pressure_limit','format','Double');
+			switch self.coupling
+				case 0
+				case 1
+					WriteData(fid,prefix,'class','friction','object',self,'fieldname','effective_pressure','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				case 2
+					error('not implemented yet');
+				otherwise
+					error('not supported yet');		
+			end
+	  end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionhydro.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionhydro.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionhydro.py	(revision 27955)
@@ -0,0 +1,83 @@
+import numpy as np
+from project3d import project3d
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class frictionhydro(object):
+    """
+    friction hydro is the friction law from Schoof 2005 or Gagliardini2007
+
+    Usage:
+        friction = frictionhydro()
+    """
+    def __init__(self):  # {{{
+        self.coupling = 0
+        self.q = np.nan
+        self.C = np.nan
+        self.As = np.nan
+        self.effective_pressure = np.nan
+        self.effective_pressure_limit = 0
+        #set defaults
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = 'Effective Pressure based friction law described in Gagliardini 2007'
+        string = "%s\n%s" % (string, fielddisplay(self, 'coupling', 'Coupling flag 0: uniform sheet (negative pressure ok, default), 1: ice pressure only, 2: water pressure assuming uniform sheet (no negative pressure), 3: use provided effective_pressure, 4: used coupled model (not implemented yet)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'q', 'friction law exponent q >= 1'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'C', 'friction law max value (Iken bound)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'As', 'Sliding Parameter without cavitation [m Pa^ - n s^ - 1]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'effective_pressure', 'Effective Pressure for the forcing if not coupled [Pa]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'effective_pressure_limit', 'Neff do not allow to fall below a certain limit: effective_pressure_limit * rho_ice * g * thickness (default 0)'))
+
+        return string
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.q = project3d(md, 'vector', self.q, 'type', 'element')
+        self.C = project3d(md, 'vector', self.C, 'type', 'element')
+        self.As = project3d(md, 'vector', self.As, 'type', 'element')
+        if self.coupling in[3, 4]:
+            self.effective_pressure = project3d(md, 'vector', self.effective_pressure, 'type', 'node', 'layer', 1)
+        elif self.coupling > 4:
+            raise ValueError('md.friction.coupling larger than 4, not supported yet')
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.coupling = 0
+        self.effective_pressure = np.nan
+        self.effective_pressure_limit = 0
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  #{{{
+        #Early return
+        if 'StressbalanceAnalysis' in analyses and 'ThermalAnalysis' in analyses:
+            return md
+
+        md = checkfield(md, 'fieldname', 'friction.coupling', 'numel', [1], 'values', [0, 1, 2, 3, 4])
+        md = checkfield(md, 'fieldname', 'friction.q', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
+        md = checkfield(md, 'fieldname', 'friction.C', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
+        md = checkfield(md, 'fieldname', 'friction.As', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
+        md = checkfield(md, 'fieldname', 'friction.effective_pressure_limit', 'numel', [1], '>=', 0)
+        if self.coupling == 3:
+            md = checkfield(md, 'fieldname', 'friction.effective_pressure', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+        elif self.coupling > 4:
+            raise ValueError('md.friction.coupling larger than 4, not supported yet')
+    # }}}
+
+    def marshall(self, prefix, md, fid):  #{{{
+        WriteData(fid, prefix, 'name', 'md.friction.law', 'data', 3, 'format', 'Integer')
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'coupling', 'format', 'Integer')
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'q', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'C', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'As', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'friction', 'fieldname', 'effective_pressure_limit', 'format', 'Double')
+        if self.coupling in[3, 4]:
+            WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'effective_pressure', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        elif self.coupling > 4:
+            raise ValueError('md.friction.coupling larger than 4, not supported yet')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionjosh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionjosh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionjosh.m	(revision 27955)
@@ -0,0 +1,66 @@
+%FRICTIONTEMP class definition
+%
+%   Usage:
+%      frictionjosh=frictionjosh();
+
+classdef frictionjosh
+	properties (SetAccess=public) 
+		coefficient = NaN;
+		pressure_adjusted_temperature = NaN;
+		gamma      = 0.;
+		effective_pressure_limit = 0;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1);
+			self.pressure_adjusted_temperature=project3d(md,'vector',self.pressure_adjusted_temperature,'type','node','layer',1);
+		end % }}}
+		function self = frictionjosh(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(frictionjosh(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Default gamma: 1
+			self.gamma = 1.;
+
+			%Default 0
+			self.effective_pressure_limit = 0;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+
+			md = checkfield(md,'fieldname','friction.coefficient','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.pressure_adjusted_temperature','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.gamma','numel',1,'NaN',1,'Inf',1,'>',0.);
+			md = checkfield(md,'fieldname','friction.effective_pressure_limit','numel',[1],'>=',0);
+
+			%Check that temperature is provided
+			md = checkfield(md,'fieldname','initialization.temperature','NaN',1,'Inf',1,'size','universal');
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('Basal shear stress parameters: tau_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b * 1/f(T)\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p)'));
+			fielddisplay(self,'coefficient','friction coefficient [SI]');
+			fielddisplay(self,'pressure_adjusted_temperature','friction pressure_adjusted_temperature (T - Tpmp) [K]');
+			fielddisplay(self,'gamma','(T - Tpmp)/gamma [K]');
+			fielddisplay(self,'effective_pressure_limit','Neff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'name','md.friction.law','data',9,'format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','pressure_adjusted_temperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','gamma','format','Double');
+			WriteData(fid,prefix,'object',self,'class','friction','fieldname','effective_pressure_limit','format','Double');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionjosh.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionjosh.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionjosh.py	(revision 27955)
@@ -0,0 +1,74 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class frictionjosh(object):
+    """FRICTIONJOSH class definition
+
+    Usage:
+        frictionjosh = frictionjosh()
+    """
+
+    def __init__(self):  # {{{
+        self.coefficient = np.nan
+        self.pressure_adjusted_temperature = np.nan
+        self.gamma = 0
+        self.effective_pressure_limit = 0
+
+        self.setdefaultparameters()
+        #self.requested_outputs = []
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = 'Basal shear stress parameters: Sigma_b = coefficient^2 * Neff ^r * |u_b|^(s - 1) * u_b,\n'
+        s += '(effective stress Neff = rho_ice * g * thickness + rho_water * g * base, r = q / p and s = 1 / p)\n'
+        s += '{}\n'.format(fielddisplay(self, "coefficient", "friction coefficient [SI]"))
+        s += '{}\n'.format(fielddisplay(self, 'pressure_adjusted_temperature', 'friction pressure_adjusted_temperature (T - Tpmp) [K]'))
+        s += '{}\n'.format(fielddisplay(self, 'gamma', '(T - Tpmp)/gamma [K]'))
+        s += '{}\n'.format(fielddisplay(self, 'effective_pressure_limit', 'Neff do not allow to fall below a certain limit: effective_pressure_limit * rho_ice * g * thickness (default 0)'))
+        #s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.coefficient = project3d(md, 'vector', self.coefficient, 'type', 'node', 'layer', 1)
+        self.pressure_adjusted_temperature = project3d(md, 'vector', self.pressure_adjusted_temperature, 'type', 'node', 'layer', 1)
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.gamma = 1.
+        #self.requested_outputs = ['default']
+        self.effective_pressure_limit = 0
+        return self
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        list = []
+        return list
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if 'StressbalanceAnalysis' not in analyses and 'ThermalAnalysis' not in analyses:
+            return md
+        md = checkfield(md, 'fieldname', 'friction.coefficient', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'friction.pressure_adjusted_temperature','NaN',1,'Inf',1)
+        md = checkfield(md, 'fieldname', 'friction.gamma','numel',1,'NaN',1,'Inf',1,'>',0.)
+        md = checkfield(md, 'fieldname', 'friction.effective_pressure_limit', 'numel', [1], '>=', 0)
+        # Check that temperature is provided
+        md = checkfield(md,'fieldname','initialization.temperature','NaN',1,'Inf',1,'size','universal')
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid,prefix,'name','md.friction.law','data',9,'format','Integer')
+        WriteData(fid,prefix,'class','friction','object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+        WriteData(fid,prefix,'class','friction','object',self,'fieldname','pressure_adjusted_temperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+        WriteData(fid,prefix,'class','friction','object',self,'fieldname','gamma','format','Double')
+        WriteData(fid,prefix,'object',self,'class','friction','fieldname','effective_pressure_limit','format','Double')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionpism.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionpism.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionpism.m	(revision 27955)
@@ -0,0 +1,75 @@
+%FRICTIONPISM class definition
+%
+%   Usage:
+%      frictionpism=frictionpism();
+
+classdef frictionpism
+	properties (SetAccess=public) 
+		pseudoplasticity_exponent            = 0.;
+		threshold_speed                      = 0.;
+		delta                                = 0.;
+		void_ratio                           = 0.;
+		till_friction_angle                  = NaN;
+		sediment_compressibility_coefficient = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.till_friction_angle=project3d(md,'vector',self.till_friction_angle,'type','node','layer',1);
+         self.sediment_compressibility_coefficient=project3d(md,'vector',self.sediment_compressibility_coefficient,'type','node','layer',1);
+		end % }}}
+		function self = frictionpism(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(frictionpism(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+         self.pseudoplasticity_exponent = 0.6;
+         self.threshold_speed           = 100.;
+         self.delta                     = 0.02;
+         self.void_ratio                = 0.69;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+			if (strcmp(solution,'TransientSolution') &  md.transient.isstressbalance ==0 & md.transient.isthermal == 0), return; end
+
+			md = checkfield(md,'fieldname','friction.pseudoplasticity_exponent','numel',[1],'>',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.threshold_speed','numel',[1],'>',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.delta','numel',[1],'>',0,'<',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.void_ratio','numel',[1],'>',0,'<',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.till_friction_angle','NaN',1,'Inf',1,'<',360.,'>',0.,'size',[md.mesh.numberofvertices 1]); %User should give angle in degrees, Matlab calculates in rad
+			md = checkfield(md,'fieldname','friction.sediment_compressibility_coefficient','NaN',1,'Inf',1,'<',1.,'>',0.,'size',[md.mesh.numberofvertices 1]);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('Basal shear stress parameters for the PISM friction law (See Aschwanden et al. 2016 for more details)'));
+			fielddisplay(self,'pseudoplasticity_exponent','pseudoplasticity exponent [dimensionless]');
+			fielddisplay(self,'threshold_speed','threshold speed [m/yr]');
+			fielddisplay(self,'delta','lower limit of the effective pressure, expressed as a fraction of overburden pressure [dimensionless]');
+			fielddisplay(self,'void_ratio','void ratio at a reference effective pressure [dimensionless]');
+			fielddisplay(self,'till_friction_angle','till friction angle [deg], recommended default: 30 deg');
+			fielddisplay(self,'sediment_compressibility_coefficient','coefficient of compressibility of the sediment [dimensionless], recommended default: 0.12');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.friction.law','data',10,'format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','pseudoplasticity_exponent','format','Double');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','threshold_speed','format','Double','scale',1./yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','delta','format','Double');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','void_ratio','format','Double');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','till_friction_angle','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','sediment_compressibility_coefficient','format','DoubleMat','mattype',1);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+         error('not implemented yet!');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionpism.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionpism.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionpism.py	(revision 27955)
@@ -0,0 +1,76 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class frictionpism(object):
+    """FRICTIONPISM class definition
+
+    Usage:
+        frictionpism = frictionpism()
+    """
+
+    def __init__(self):
+        self.pseudoplasticity_exponent = 0.
+        self.threshold_speed = 0.
+        self.delta = 0.
+        self.void_ratio = 0.
+        self.till_friction_angle = np.nan
+        self.sediment_compressibility_coefficient = np.nan
+
+        self.setdefaultparameters()
+        self.requested_outputs = []
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.till_friction_angle = project3d(md, 'vector', self.till_friction_angle, 'type', 'node', 'layer', 1)
+        self.sediment_compressibility_coefficient = project3d(md, 'vector', self.sediment_compressibility_coefficient, 'type', 'node', 'layer', 1)
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.pseudoplasticity_exponent = 0.6
+        self.threshold_speed = 100.
+        self.delta = 0.02
+        self.void_ratio = 0.69
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if 'StressbalanceAnalysis' not in analyses and 'ThermalAnalysis' not in analyses:
+            return md
+        if solution == 'TransientSolution' and not md.transient.isstressbalance and not md.transient.isthermal:
+            return md
+        md = checkfield(md, 'fieldname', 'friction.pseudoplasticity_exponent', 'numel', [1], '>', 0, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'friction.threshold_speed', 'numel', [1], '>', 0, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'friction.delta', 'numel', [1], '>', 0, '<', 1, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'friction.void_ratio', 'numel', [1], '>', 0, '<', 1, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'friction.till_friction_angle', 'NaN', 1, 'Inf', 1, '<', 360., '>', 0., 'size', [md.mesh.numberofvertices])  #User should give angle in degrees, Matlab calculates in rad
+        md = checkfield(md, 'fieldname', 'friction.sediment_compressibility_coefficient', 'NaN', 1, 'Inf', 1, '<', 1., '>', 0., 'size', [md.mesh.numberofvertices])
+        return md
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = 'Basal shear stress parameters for the PISM friction law (See Aschwanden et al. 2016 for more details)\n'
+        s += "{}\n".format(fielddisplay(self, 'pseudoplasticity_exponent', 'pseudoplasticity exponent [dimensionless]'))
+        s += "{}\n".format(fielddisplay(self, 'threshold_speed', 'threshold speed [m / yr]'))
+        s += "{}\n".format(fielddisplay(self, 'delta', 'lower limit of the effective pressure, expressed as a fraction of overburden pressure [dimensionless]'))
+        s += "{}\n".format(fielddisplay(self, 'void_ratio', 'void ratio at a reference effective pressure [dimensionless]'))
+        s += "{}\n".format(fielddisplay(self, 'till_friction_angle', 'till friction angle [deg], recommended default: 30 deg'))
+        s += "{}\n".format(fielddisplay(self, 'sediment_compressibility_coefficient', 'coefficient of compressibility of the sediment [dimensionless], recommended default: 0.12'))
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+        WriteData(fid, prefix, 'name', 'md.friction.law', 'data', 10, 'format', 'Integer')
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'pseudoplasticity_exponent', 'format', 'Double')
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'threshold_speed', 'format', 'Double', 'scale', 1. / yts)
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'delta', 'format', 'Double')
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'void_ratio', 'format', 'Double')
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'till_friction_angle', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'sediment_compressibility_coefficient', 'format', 'DoubleMat', 'mattype', 1)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionregcoulomb.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionregcoulomb.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionregcoulomb.m	(revision 27955)
@@ -0,0 +1,61 @@
+%FRICTIONREGCOULOMB class definition
+%
+%   Usage:
+%      frictionregcoulomb=frictionregcoulomb();
+
+classdef frictionregcoulomb
+	properties (SetAccess=public) 
+		C  = NaN;
+		u0 = 0.;
+		m  = NaN;
+	end
+	methods
+		function self = frictionregcoulomb(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(frictionregcoulomb(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.C    = project3d(md,'vector',self.C,'type','node');
+			self.m    = project3d(md,'vector',self.m,'type','element');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			self.u0 = 1000;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','friction.C','timeseries',1,'NaN',1,'Inf',1,'>=',0.);
+			md = checkfield(md,'fieldname','friction.u0','NaN',1,'Inf',1,'>',0.,'numel',1);
+			md = checkfield(md,'fieldname','friction.m','NaN',1,'Inf',1,'>',0.,'size',[md.mesh.numberofelements,1]);
+		end % }}}
+		function disp(self) % {{{
+			%See Joughin et al. 2019 (equivalent form by Matt Trevers, poster at AGU 2022) https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2019GL082526
+			disp('Regularized Couloub friction law (Joughin et al., 2019) parameters:');
+			disp('   Regularized Couloub friction law reads:');
+			disp('                       C^2 |u|^(1/m)         ');
+			disp('      tau_b = -  ____________________________');
+			disp('                        (|u|/u0 + 1)^(1/m)   ');
+			disp(' ');
+			fielddisplay(self,'C','friction coefficient [SI]');
+			fielddisplay(self,'m','m exponent (set to m=3 in original paper)');
+			fielddisplay(self,'u0','velocity controling plastic limit');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.friction.law','data',14,'format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','u0','format','Double','scale',1/yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','m','format','DoubleMat','mattype',2);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionregcoulomb2.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionregcoulomb2.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionregcoulomb2.m	(revision 27955)
@@ -0,0 +1,66 @@
+%FRICTIONREGCOULOMB2 class definition
+%
+%   Usage:
+%      frictionregcoulomb=frictionregcoulomb();
+
+classdef frictionregcoulomb2
+	properties (SetAccess=public) 
+		C  = NaN;
+		K  = NaN;
+		m  = NaN;
+		effective_pressure_limit = 0;
+	end
+	methods
+		function self = frictionregcoulomb2(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(frictionregcoulomb2(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.C    = project3d(md,'vector',self.C,'type','node');
+			self.m    = project3d(md,'vector',self.m,'type','element');
+			self.K    = project3d(md,'vector',self.K,'type','node');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			self.effective_pressure_limit = 0;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','friction.C','timeseries',1,'NaN',1,'Inf',1,'>=',0.);
+			md = checkfield(md,'fieldname','friction.K','NaN',1,'Inf',1,'>',0.);
+			md = checkfield(md,'fieldname','friction.m','NaN',1,'Inf',1,'>',0.,'size',[md.mesh.numberofelements,1]);
+			md = checkfield(md,'fieldname','friction.effective_pressure_limit','numel',[1],'>=',0);
+		end % }}}
+		function disp(self) % {{{
+			%See Zoet and Iverson 2020 or Choi et al., 2022 
+			disp('Regularized Couloub friction law 2  parameters:');
+			disp('   Regularized Couloub friction law reads:');
+			disp('                       C N |u|^(1/m)         ');
+			disp('      tau_b = -  ____________________________');
+			disp('                        (|u| + (K*N)^m)^(1/m)   ');
+			disp(' ');
+			fielddisplay(self,'C','friction coefficient [SI]');
+			fielddisplay(self,'m','m exponent');
+			fielddisplay(self,'K','(K*N)^m to be velocity controling plastic limit');
+			fielddisplay(self,'effective_pressure_limit','Neff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.friction.law','data',15,'format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','K','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','m','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','friction','fieldname','effective_pressure_limit','format','Double');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionschoof.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionschoof.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionschoof.m	(revision 27955)
@@ -0,0 +1,82 @@
+%FRICTIONSCHOOF class definition
+%
+%   Usage:
+%      frictionschoof=frictionschoof();
+
+classdef frictionschoof
+	properties (SetAccess=public) 
+		C                        = NaN;
+		Cmax                     = NaN;
+		m                        = NaN;
+		coupling                 = 0;
+		effective_pressure       = NaN;
+		effective_pressure_limit = 0;
+	end
+	methods
+		function self = frictionschoof(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(frictionschoof(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.C    = project3d(md,'vector',self.C,'type','node');
+			self.Cmax = project3d(md,'vector',self.Cmax,'type','node');
+			self.m    = project3d(md,'vector',self.m,'type','element');
+			if self.coupling==3 || self.coupling==4
+				self.effective_pressure=project3d(md,'vector',self.effective_pressure,'type','node','layer',1);
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+         self.coupling = 0;
+			self.effective_pressure_limit = 0;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','friction.C','timeseries',1,'NaN',1,'Inf',1,'>=',0.);
+			md = checkfield(md,'fieldname','friction.Cmax','timeseries',1,'NaN',1,'Inf',1,'>',0.);
+			md = checkfield(md,'fieldname','friction.m','NaN',1,'Inf',1,'>',0.,'size',[md.mesh.numberofelements,1]);
+			md = checkfield(md,'fieldname','friction.effective_pressure_limit','numel',[1],'>=',0);
+         md = checkfield(md,'fieldname','friction.coupling','numel',[1],'values',[0:4]);
+         if self.coupling==3
+            md = checkfield(md,'fieldname','friction.effective_pressure','NaN',1,'Inf',1,'timeseries',1);
+         end
+		end % }}}
+		function disp(self) % {{{
+			%See Brondex et al. 2019 https://www.the-cryosphere.net/13/177/2019/
+			disp('Schoof sliding law parameters:');
+			disp('   Schoof''s sliding law reads:');
+			disp('                         C^2 |u_b|^(m-1)                ');
+			disp('      tau_b = - _____________________________   u_b   ');
+			disp('               (1+(C^2/(Cmax N))^1/m |u_b| )^m          ');
+			disp(' ');
+			fielddisplay(self,'C','friction coefficient [SI]');
+			fielddisplay(self,'Cmax','Iken''s bound (typically between 0.17 and 0.84) [SI]');
+			fielddisplay(self,'m','m exponent (generally taken as m = 1/n = 1/3)');
+			fielddisplay(self,'effective_pressure','Effective Pressure for the forcing if not coupled [Pa]');
+         fielddisplay(self,'coupling','Coupling flag 0: uniform sheet (negative pressure ok, default), 1: ice pressure only, 2: water pressure assuming uniform sheet (no negative pressure), 3: use provided effective_pressure, 4: use coupled model (not implemented yet)');
+			fielddisplay(self,'effective_pressure_limit','Neff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.friction.law','data',11,'format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','Cmax','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','m','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','friction','fieldname','effective_pressure_limit','format','Double');
+         WriteData(fid,prefix,'class','friction','object',self,'fieldname','coupling','format','Integer');
+         if self.coupling==3 || self.coupling==4
+            WriteData(fid,prefix,'class','friction','object',self,'fieldname','effective_pressure','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+         end
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionschoof.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionschoof.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionschoof.py	(revision 27955)
@@ -0,0 +1,84 @@
+import numpy as np
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from structtoobj import structtoobj
+from WriteData import WriteData
+
+
+class frictionschoof(object):
+    """FRICTIONSCHOOF class definition
+
+    Usage:
+        friction = frictionschoof()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.C                        = np.nan
+        self.Cmax                     = np.nan
+        self.m                        = np.nan
+        self.coupling                 = 0
+        self.effective_pressure       = np.nan
+        self.effective_pressure_limit = 0
+
+        nargs = len(args)
+        if nargs == 0:
+            self.setdefaultparameters()
+        elif nargs == 1:
+            self = structtoobj(self, args[0])
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+    def __repr__(self):  # {{{
+        # See Brondex et al. 2019 https://www.the-cryosphere.net/13/177/2019/
+        s = 'Schoof sliding law parameters:\n'
+        s += '   Schoof\'s sliding law reads:\n'
+        s += '                         C^2 |u_b|^(m-1)                \n'
+        s += '      tau_b = - _____________________________   u_b   \n'
+        s += '               (1+(C^2/(Cmax N))^1/m |u_b| )^m          \n'
+        s += '\n'
+        s += "{}\n".format(fielddisplay(self, 'C', 'friction coefficient [SI]'))
+        s += "{}\n".format(fielddisplay(self, 'Cmax', 'Iken\'s bound (typically between 0.17 and 0.84) [SI]'))
+        s += "{}\n".format(fielddisplay(self, 'm', 'm exponent (generally taken as m = 1/n = 1/3)'))
+        s += '{}\n'.format(fielddisplay(self, 'coupling', 'Coupling flag 0: uniform sheet (negative pressure ok, default), 1: ice pressure only, 2: water pressure assuming uniform sheet (no negative pressure), 3: use provided effective_pressure, 4: used coupled model (not implemented yet)'))
+        s += '{}\n'.format(fielddisplay(self, 'effective_pressure', 'Effective Pressure for the forcing if not coupled [Pa]'))
+        s += "{}\n".format(fielddisplay(self, 'effective_pressure_limit', 'fNeff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)'))
+        return s
+    # }}}
+    def setdefaultparameters(self):  # {{{
+        self.effective_pressure_limit = 0
+        return self
+    # }}}
+    def extrude(self, md):  # {{{
+        self.C = project3d(md, 'vector', self.C, 'type', 'node')
+        self.Cmax = project3d(md, 'vector', self.Cmax, 'type', 'node')
+        self.m = project3d(md, 'vector', self.m, 'type', 'element')
+        if self.coupling in [3, 4]:
+            self.effective_pressure = project3d(md, 'vector', self.effective_pressure, 'type', 'node', 'layer', 1)
+        return self
+    # }}}
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if 'StressbalanceAnalysis' not in analyses and 'ThermalAnalysis' not in analyses:
+            return md
+        md = checkfield(md, 'fieldname', 'friction.C', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '>',0.)
+        md = checkfield(md, 'fieldname', 'friction.Cmax', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '>', 0.)
+        md = checkfield(md, 'fieldname', 'friction.m', 'NaN', 1, 'Inf', 1, '>', 0., 'size', [md.mesh.numberofelements, 1])
+        md = checkfield(md, 'fieldname', 'friction.effective_pressure_limit', 'numel', [1], '>=', 0)
+        md = checkfield(md, 'fieldname', 'friction.coupling', 'numel', [1], 'values', [0, 1, 2, 3, 4])
+        if self.coupling == 3:
+            md = checkfield(md, 'fieldname', 'friction.effective_pressure', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+        return md
+    # }}}
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'name', 'md.friction.law', 'data', 11, 'format', 'Integer')
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'C', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'Cmax', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'm', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'coupling', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'friction', 'fieldname', 'effective_pressure_limit', 'format', 'Double')
+        if self.coupling == 3 or self.coupling == 4:
+            WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'effective_pressure', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionshakti.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionshakti.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionshakti.m	(revision 27955)
@@ -0,0 +1,43 @@
+%FRICTIONSHAKTI class definition
+%
+%   Usage:
+%      friction=frictionshakti();
+
+classdef frictionshakti
+	properties (SetAccess=public) 
+		coefficient = NaN;
+	end
+	methods
+		function self = frictionshakti(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(frictionshakti(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1);
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('Basal shear stress parameters: Sigma_b = coefficient^2 * Neff * u_b\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*(head-b))'));
+			fielddisplay(self,'coefficient','friction coefficient [SI]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.friction.law','data',8,'format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionshakti.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionshakti.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionshakti.py	(revision 27955)
@@ -0,0 +1,54 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from structtoobj import structtoobj
+from WriteData import WriteData
+
+
+class frictionshakti(object):
+    """FRICTIONSHAKTI class definition
+
+    Usage:
+        friction = frictionshakti()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.coefficient = np.nan
+        
+        nargs = len(args)
+        if nargs == 0:
+            self.setdefaultparameters()
+        elif nargs == 1:
+            self = structtoobj(self, args[0])
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = 'Basal shear stress parameters: Sigma_b = coefficient^2 * Neff * u_b\n'
+        s += '(effective stress Neff = rho_ice * g * thickness + rho_water * g * (head - b))\n'
+        s += '{}\n'.format(fielddisplay(self, 'coefficient', 'friction coefficient [SI]'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        return self
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.coefficient = project3d(md, 'vector', self.coefficient, 'type', 'node', 'layer', 1)
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if 'StressbalanceAnalysis' not in analyses and 'ThermalAnalysis' not in analyses:
+            return md
+        md = checkfield(md, 'fieldname', 'friction.coefficient', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'name', 'md.friction.law', 'data', 8, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'coefficient', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictiontemp.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictiontemp.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictiontemp.m	(revision 27955)
@@ -0,0 +1,97 @@
+%FRICTIONTEMP class definition
+%
+%   Usage:
+%      frictiontemp=frictiontemp();
+
+classdef frictiontemp
+	properties (SetAccess=public) 
+		gamma       = 0;
+		coefficient = NaN;
+		p           = NaN;
+		q           = NaN;
+		coupling    = 0;
+		effective_pressure = NaN;
+		effective_pressure_limit = 0;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1);
+			self.p=project3d(md,'vector',self.p,'type','element');
+			self.q=project3d(md,'vector',self.q,'type','element');
+			switch self.coupling
+				case 0
+				case 1
+				case 2
+				case 3
+					self.effective_pressure=project3d(md,'vector',self.effective_pressure,'type','node','layer',1);
+				case 4
+					error('not implemented yet');
+				otherwise
+					error('not supported yet');
+			end
+		end % }}}
+		function self = frictiontemp(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(frictiontemp(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%By default gamma = 1;
+			self.gamma = 1;
+			self.coupling = 0;
+			self.effective_pressure_limit = 0;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+
+			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.gamma','NaN',2,'Inf',1,'numel',1,'>',0.);
+			md = checkfield(md,'fieldname','friction.effective_pressure_limit','numel',[1],'>=',0);
+
+			%Check that temperature is provided
+			md = checkfield(md,'fieldname','initialization.temperature','NaN',1,'Inf',1,'size','universal');
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('Basal shear stress parameters: tau_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b * 1/f(T)\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p)'));
+			fielddisplay(self,'gamma','submelt sliding parameter f(T) = exp((T-Tpmp)/gamma)');
+			fielddisplay(self,'coefficient','frictiontemp coefficient [SI]');
+			fielddisplay(self,'p','p exponent');
+			fielddisplay(self,'q','q exponent');
+			fielddisplay(self,'effective_pressure','Effective Pressure for the forcing if not coupled [Pa]');
+			fielddisplay(self,'coupling','Coupling flag 0: uniform sheet (negative pressure ok, default), 1: ice pressure only, 2: water pressure assuming uniform sheet (no negative pressure), 3: use provided effective_pressure, 4: used coupled model (not implemented yet)');
+			fielddisplay(self,'effective_pressure_limit','Neff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'name','md.friction.law','data',4,'format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','gamma','format','Double');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','p','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','coupling','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','friction','fieldname','effective_pressure_limit','format','Double');
+			switch self.coupling
+				case 0
+				case 1
+				case 2
+				case 3
+					WriteData(fid,prefix,'class','friction','object',self,'fieldname','effective_pressure','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				case 4
+					error('not implemented yet');
+				otherwise
+					error('not supported yet');
+			end
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictiontsai.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictiontsai.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictiontsai.m	(revision 27955)
@@ -0,0 +1,65 @@
+%FRICTIONTSAI class definition
+%
+%   Usage:
+%      frictiontsai=frictiontsai();
+
+classdef frictiontsai
+	properties (SetAccess=public) 
+		C = NaN;
+		f = NaN;
+		m = NaN;
+		effective_pressure_limit = 0;
+	end
+	methods
+		function self = frictiontsai(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(frictiontsai(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			md.friction.C    = project3d(md,'vector',md.friction.C,'type','node','layer',1);
+			md.friction.f = project3d(md,'vector',md.friction.f,'type','node','layer',1);
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			self.effective_pressure_limit = 0;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','friction.C','timeseries',1,'NaN',1,'Inf',1,'>',0.);
+			md = checkfield(md,'fieldname','friction.f','timeseries',1,'NaN',1,'Inf',1,'>',0.);
+			md = checkfield(md,'fieldname','friction.m','NaN',1,'Inf',1,'>',0.,'size',[md.mesh.numberofelements,1]);
+			md = checkfield(md,'fieldname','friction.effective_pressure_limit','numel',[1],'>=',0);
+		end % }}}
+		function disp(self) % {{{
+			%See Brondex et al. 2017 
+			disp('Tsai sliding law parameters:');
+			disp('   Tsai''s sliding law reads:');
+			disp('     ');
+			disp('      tau_b = -  min(C |ub|^(m-1) , f N) u_b   ');
+			disp('                                                   ');
+			disp(' ');
+			fielddisplay(self,'C','friction coefficient [SI]');
+			fielddisplay(self,'f','Iken''s bound (typically between 0.17 and 0.84) [SI]');
+			fielddisplay(self,'m','m exponent (generally taken as m = 1/n = 1/3)');
+			fielddisplay(self,'effective_pressure_limit','Neff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.friction.law','data',12,'format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','f','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','m','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','friction','fieldname','effective_pressure_limit','format','Double');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionwaterlayer.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionwaterlayer.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionwaterlayer.m	(revision 27955)
@@ -0,0 +1,64 @@
+%FRICTIONWATERLAYER class definition
+%
+%   Usage:
+%      frictionwaterlayer=frictionwaterlayer();
+
+classdef frictionwaterlayer
+	properties (SetAccess=public) 
+		coefficient = NaN;
+		f           = NaN;
+		p           = NaN;
+		q           = NaN;
+		water_layer = NaN;
+	end
+	methods
+		function self = frictionwaterlayer(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(frictionwaterlayer(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+
+			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.f','size',[1 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','thermal.spctemperature','Inf',1,'timeseries',1,'>=',0.);
+
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1);
+			self.p=project3d(md,'vector',self.p,'type','element');
+			self.q=project3d(md,'vector',self.q,'type','element');
+			self.water_layer=project3d(md,'vector',self.water_layer,'type','node','layer',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('Basal shear stress parameters: tau_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b * 1/f(T)\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*(bed+water_layer), r=q/p and s=1/p)'));
+			fielddisplay(self,'coefficient','frictiontemp coefficient [SI]');
+			fielddisplay(self,'f','f variable for effective pressure');
+			fielddisplay(self,'p','p exponent');
+			fielddisplay(self,'q','q exponent');
+			fielddisplay(self,'water_layer','water thickness at the base of the ice (m)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'name','md.friction.law','data',5,'format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','f','format','Double');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','p','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','water_layer','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionwaterlayer.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionwaterlayer.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionwaterlayer.py	(revision 27955)
@@ -0,0 +1,72 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from structtoobj import structtoobj
+from WriteData import WriteData
+
+
+class frictionwaterlayer(object):
+    """FRICTIONWATERLAYER class definition
+
+    Usage:
+        friction = frictionwaterlayer(md)
+    """
+
+    def __init__(self, *args):  # {{{
+        self.coefficient = np.nan
+        self.f = np.nan
+        self.p = np.nan
+        self.q = np.nan
+        self.water_layer = np.nan
+
+        nargs = len(args)
+        if nargs == 0:
+            self.setdefaultparameters()
+        elif nargs == 1:
+            self = structtoobj(self, args[0])
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = 'Basal shear stress parameters: tau_b = coefficient^2 * Neff ^r * |u_b|^(s - 1) * u_b * 1 / f(T)\n(effective stress Neff = rho_ice * g * thickness + rho_water * g * (bed + water_layer), r = q / p and s = 1 / p)\n'
+        s = "{}\n".format(fielddisplay(self, 'coefficient', 'frictiontemp coefficient [SI]'))
+        s = "{}\n".format(fielddisplay(self, 'f', 'f variable for effective pressure'))
+        s = "{}\n".format(fielddisplay(self, 'p', 'p exponent'))
+        s = "{}\n".format(fielddisplay(self, 'q', 'q exponent'))
+        s = "{}\n".format(fielddisplay(self, 'water_layer', 'water thickness at the base of the ice (m)'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  #{{{
+        # Early return
+        if 'StressbalanceAnalysis' not in analyses and 'ThermalAnalysis' not in analyses:
+            return
+        md = checkfield(md, 'fieldname', 'friction.coefficient', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'friction.f', 'size', [1], 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'friction.q', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
+        md = checkfield(md, 'fieldname', 'friction.p', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
+        md = checkfield(md, 'fieldname', 'thermal.spctemperature', 'Inf', 1, 'timeseries', 1, '>=', 0.)
+        return md
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.coefficient = project3d(md, 'vector', self.coefficient, 'type', 'node', 'layer', 1)
+        self.p = project3d(md, 'vector', self.p, 'type', 'element')
+        self.q = project3d(md, 'vector', self.q, 'type', 'element')
+        self.water_layer = project3d(md, 'vector', self.water_layer, 'type', 'node', 'layer', 1)
+        return self
+    # }}}
+
+    def marshall(self, prefix, md, fid):  #{{{
+        WriteData(fid, prefix, 'name', 'md.friction.law', 'data', 5, 'format', 'Integer')
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'coefficient', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'f', 'format', 'Double')
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'p', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'q', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'water_layer', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionweertman.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionweertman.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionweertman.m	(revision 27955)
@@ -0,0 +1,65 @@
+%FRICTIONWEERTMAN class definition
+%
+%   Usage:
+%      frictionweertman=frictionweertman();
+
+classdef frictionweertman
+	properties (SetAccess=public) 
+		C = NaN;
+		m = NaN;
+		linearize  = 0;
+	end
+   methods (Static)
+      function self = loadobj(self) % {{{
+			disp('Warning: the Weertman friciton law is updated to Sigma_b = C^2*|u_b|^(1/m-1)*u_b, since 2020-08-10');
+		end
+	end %}}}
+	methods
+		function self = frictionweertman(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			disp('-------------- file: frictionweertman.m line: 27'); 
+			self.C=project3d(md,'vector',self.C,'type','node','layer',1);
+			self.m=project3d(md,'vector',self.m,'type','element');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			self.linearize = 0;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','friction.C','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.m','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.linearize','numel',[1],'values',[0:2]);
+		end % }}}
+		function disp(self) % {{{
+			disp('Weertman sliding law parameters:');
+			disp('   Weertman''s sliding law reads:');
+			disp('      v_b = C_w * Sigma_b^m');
+			disp('   In ISSM, this law is rewritten as:');
+			disp('      Sigma_b = C^2 * |u_b|^(1/m-1) * u_b');
+			disp('   where C_w=C^(-2m)');
+			disp(' ');
+			fielddisplay(self,'C','friction coefficient [SI]');
+			fielddisplay(self,'m','m exponent');
+			fielddisplay(self,'linearize','0: not linearized, 1: interpolated linearly, 2: constant per element (default is 0)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.friction.law','data',2,'format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','m','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','linearize','format','Integer');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionweertman.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionweertman.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionweertman.py	(revision 27955)
@@ -0,0 +1,56 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class frictionweertman(object):
+    """
+    FRICTIONWEERTMAN class definition
+
+       Usage:
+          frictionweertman = frictionweertman()
+    """
+
+    def __init__(self):  # {{{
+        self.C = float('NaN')
+        self.m = float('NaN')
+        self.linearize = 0
+
+    #set defaults
+        self.setdefaultparameters()
+
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = "Weertman sliding law parameters: Sigma_b = C^(- 1 / m) * |u_b|^(1 / m - 1) * u_b"
+
+        string = "%s\n%s" % (string, fielddisplay(self, "C", "friction coefficient [SI]"))
+        string = "%s\n%s" % (string, fielddisplay(self, "m", "m exponent"))
+        string = "%s\n%s" % (string, fielddisplay(self, "linearize", "0: not linearized, 1: interpolated linearly, 2: constant per element (default is 0)"))
+        return string
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.linearize = 0
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+
+        #Early return
+        if 'StressbalanceAnalysis' not in analyses and 'ThermalAnalysis' not in analyses:
+            return md
+
+        md = checkfield(md, 'fieldname', 'friction.C', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'friction.m', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
+        md = checkfield(md, 'fieldname', 'friction.linearize', 'numel', [1], 'values', [0, 1, 2])
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'name', 'md.friction.law', 'data', 2, 'format', 'Integer')
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'C', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'm', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'linearize', 'format', 'Integer')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionweertmantemp.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionweertmantemp.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frictionweertmantemp.m	(revision 27955)
@@ -0,0 +1,56 @@
+%FRICTIONWEERTMAN class definition
+%
+%   Usage:
+%      frictionweertmantemp=frictionweertmantemp();
+
+classdef frictionweertmantemp
+	properties (SetAccess=public) 
+		gamma = 0;
+		C = NaN;
+		m = NaN;
+	end
+   methods (Static)
+      function self = loadobj(self) % {{{
+			disp('Warning: the Weertman friciton law is updated to Sigma_b = C^2*|u_b|^(1/m-1)*u_b, since 2020-08-10');
+			disp(' and friction coefficient in the temprature dependent version is updated accordingly.');
+		end
+	end %}}}
+	methods
+		function self = frictionweertmantemp(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','friction.C','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.m','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+		end % }}}
+		function disp(self) % {{{
+			disp('Weertman sliding law parameters:');
+			disp('      Sigma_b = C^2 * |u_b|^(1/m-1)  u_b * 1/f(T)');
+			disp(' ');
+			fielddisplay(self,'gamma','submelt sliding parameter f(T) = exp((T-Tpmp)/gamma)');
+			fielddisplay(self,'C','friction coefficient [SI]');
+			fielddisplay(self,'m','m exponent');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.friction.law','data',6,'format','Integer');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','gamma','format','Double');
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'class','friction','object',self,'fieldname','m','format','DoubleMat','mattype',2);
+			
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcings.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcings.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcings.js	(revision 27955)
@@ -0,0 +1,41 @@
+//FRONTAL FORCINGS Class definition
+//
+//   Usage:
+//      frontalforcings=frontalforcings();
+
+function frontalforcings(){
+	//methods
+    this.classname = function(){ // {{{
+        return "frontalforcings";
+    } // }}}
+    this.extrude = function(md) {//{{{
+		this.meltingrate=project3d(md,'vector',this.meltingrate,'type','node');
+        return this;
+    }//}}}
+	this.setdefaultparameters = function(){// {{{
+		this.meltingrate   = NaN;
+	} // }}}
+    this.checkconsistency = function(md,solution,analyses) { //{{{
+		//Early return
+		if (!solution=='TransientSolution' || md.transient.ismovingfront == 0) return;
+
+		md = checkfield(md,'fieldname','frontalforcings.meltingrate','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+
+    } // }}}
+	this.disp = function(){ // {{{
+		console.log(sprintf('   Frontalforcings parameters:'));
+		fielddisplay(this,'meltingrate','melting rate at given location [m/a]');
+	} // }}}
+    this.marshall=function(md,prefix,fid) { //{{{
+		let yts=md.constants.yts;
+		WriteData(fid,prefix,'name','md.frontalforcings.parameterization','data',1,'format','Integer');
+		WriteData(fid,prefix,'object',this,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
+    }//}}}
+    this.fix=function() { //{{{
+    }//}}}
+	//properties 
+    // {{{
+	this.meltingrate   = NaN;
+	this.setdefaultparameters();
+    // }}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcings.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcings.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcings.m	(revision 27955)
@@ -0,0 +1,63 @@
+%FRONTALFORCINGS class definition
+%
+%   Usage:
+%      frontalforcings=frontalforcings();
+
+classdef frontalforcings
+	properties (SetAccess=public) 
+		meltingrate   = NaN;
+		ablationrate   = NaN;
+	end
+	methods
+		function self = frontalforcings(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('frontalforcings');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node');
+			self.ablationrate=project3d(md,'vector',self.ablationrate,'type','node');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			meltingrate   = NaN;
+			ablationrate   = NaN;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','frontalforcings.meltingrate','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+			if ~isnan(md.frontalforcings.ablationrate)
+				md = checkfield(md,'fieldname','frontalforcings.ablationrate','Inf',1,'timeseries',1);
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Frontalforcings parameters:'));
+			fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
+			fielddisplay(self,'ablationrate','frontal ablation rate at given location [m/a], it contains both calving and melting');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.frontalforcings.parameterization','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
+			if ~isnan(md.frontalforcings.ablationrate)
+				WriteData(fid,prefix,'object',self,'fieldname','ablationrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
+			end
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcings.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcings.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcings.py	(revision 27955)
@@ -0,0 +1,67 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class frontalforcings(object):
+    """frontalforcings class definition
+
+    Usage:
+        frontalforcings = frontalforcings()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.meltingrate = np.nan
+        self.ablationrate = np.nan
+
+        nargs = len(args)
+        if nargs == 0:
+            self.setdefaultparameters()
+        elif nargs == 1:
+            # TODO: Replace the following with constructor
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   Frontalforcings parameters:'
+        s += '{}\n'.format(fielddisplay(self, 'meltingrate', 'melting rate at given location [m/a]'))
+        s += '{}\n'.format(fielddisplay(self, 'ablationrate', 'frontal ablation rate at given location [m/a], it contains both calving and melting'))
+
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.meltingrate = project3d(md, 'vector', self.meltingrate, 'type', 'node')
+        self.ablationrate = project3d(md, 'vector', self.ablationrate, 'type', 'node')
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.meltingrate = np.nan
+        self.ablationrate = np.nan
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        #Early return
+        if (solution != 'TransientSolution') or (not md.transient.ismovingfront):
+            return md
+
+        md = checkfield(md, 'fieldname', 'frontalforcings.meltingrate', 'NaN', 1, 'Inf', 1, 'timeseries', 1, '>=', 0)
+        if not np.isnan(md.frontalforcings.ablationrate):
+            md = checkfield(md, 'fieldname', 'frontalforcings.ablationrate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+        WriteData(fid, prefix, 'name', 'md.frontalforcings.parameterization', 'data', 1, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'meltingrate', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts, 'scale', 1. / yts)
+        if not np.isnan(md.frontalforcings.ablationrate):
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'ablationrate', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts, 'scale', 1. / yts)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcingsrignot.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcingsrignot.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcingsrignot.m	(revision 27955)
@@ -0,0 +1,67 @@
+%FRONTAL FORCINGS rignot class definition
+%
+%   Usage:
+%      frontalforcingsrignot=frontalforcingsrignot();
+
+classdef frontalforcingsrignot
+	properties (SetAccess=public) 
+		basin_id             = NaN;
+		num_basins           = 0;
+		subglacial_discharge = NaN;
+		thermalforcing       = NaN;
+	end
+	methods
+		function self = frontalforcingsrignot(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('frontalforcingsrignot');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+		    % nothing for now
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			basin_id             = NaN;
+			num_basins           = 0;
+			subglacial_discharge = NaN;
+			thermalforcing       = NaN;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','frontalforcings.num_basins','numel',1,'NaN',1,'Inf',1,'>',0);
+			md = checkfield(md,'fieldname','frontalforcings.basin_id','Inf',1,'>=',0,'<=',md.frontalforcings.num_basins,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','frontalforcings.subglacial_discharge','>=',0,'NaN',1,'Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','frontalforcings.thermalforcing','NaN',1,'Inf',1,'timeseries',1);
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Frontalforcings parameters:'));
+			fielddisplay(self,'basin_id','basin ID for elements');
+			fielddisplay(self,'num_basins', 'number of basins');
+			fielddisplay(self,'subglacial_discharge','sum of subglacial discharge for each basin [m^3/d]');
+			fielddisplay(self,'thermalforcing','thermal forcing [∘C]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.frontalforcings.parameterization','data',2,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','basin_id','data',self.basin_id-1,'name','md.frontalforcings.basin_id','format','IntMat','mattype',2); %0-indexed
+			WriteData(fid,prefix,'object',self,'fieldname','num_basins','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','subglacial_discharge','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','thermalforcing','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcingsrignot.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcingsrignot.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcingsrignot.py	(revision 27955)
@@ -0,0 +1,70 @@
+# -*- coding: utf-8 -*-
+
+import numpy as np
+
+from checkfield import checkfield
+from WriteData import WriteData
+from fielddisplay import fielddisplay
+
+
+class frontalforcingsrignot(object):
+    """FRONTALFORCINGSRIGNOT class definition
+
+    Usage:
+        frontalforcingsrignot = frontalforcingsrignot()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.basin_id = np.nan
+        self.num_basins = 0
+        self.subglacial_discharge = np.nan
+        self.thermalforcing = np.nan
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            error('constructor not supported')
+
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   Frontalforcings parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'basin_id', 'basin ID for elements'))
+        s += '{}\n'.format(fielddisplay(self, 'num_basins', 'number of basins'))
+        s += '{}\n'.format(fielddisplay(self, 'subglacial_discharge', 'sum of subglacial discharge for each basin [m/d]'))
+        s += '{}\n'.format(fielddisplay(self, 'thermalforcing', 'thermal forcing [∘C]'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.basin_id = np.nan
+        self.num_basins = 0
+        self.subglacial_discharge = np.nan
+        self.thermalforcing = np.nan
+
+        return self
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if (solution != 'TransientSolution') or (not md.transient.ismovingfront):
+            return md
+
+        md = checkfield(md, 'fieldname', 'frontalforcings.num_basins', 'numel', [1], 'NaN', 1, 'Inf', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'frontalforcings.basin_id', 'Inf', 1, '>=', 0, '<=', md.frontalforcings.num_basins, 'size', [md.mesh.numberofelements])
+        md = checkfield(md, 'fieldname', 'frontalforcings.subglacial_discharge', '>=', 0, 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'frontalforcings.thermalforcing', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'name', 'md.frontalforcings.parameterization', 'data', 2, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'basin_id', 'data', self.basin_id - 1, 'name', 'md.frontalforcings.basin_id', 'format', 'IntMat', 'mattype', 2)  # 0-indexed
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'num_basins', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'subglacial_discharge', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'thermalforcing', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcingsrignotarma.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcingsrignotarma.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcingsrignotarma.m	(revision 27955)
@@ -0,0 +1,368 @@
+%FRONTAL FORCINGS rignot arma class definition
+%
+%   Usage:
+%      frontalforcingsrignotarma=frontalforcingsrignotarma();
+
+classdef frontalforcingsrignotarma
+	properties (SetAccess=public) 
+		num_basins               = 0;
+		num_params               = 0;
+		num_breaks               = 0;
+		polynomialparams         = NaN;
+		datebreaks               = NaN;
+		ar_order                 = 0;
+		ma_order                 = 0;
+		arma_timestep            = 0;
+		arlag_coefs              = NaN;
+		malag_coefs              = NaN;
+		monthlyvals_intercepts   = NaN;
+		monthlyvals_trends       = NaN;
+		monthlyvals_numbreaks    = 0;
+		monthlyvals_datebreaks   = NaN;
+		basin_id                 = NaN;
+		subglacial_discharge     = NaN;
+		isdischargearma          = 0;
+		sd_ar_order              = 0;
+		sd_ma_order              = 0;
+		sd_arma_timestep         = 0;
+		sd_arlag_coefs           = NaN;
+		sd_malag_coefs           = NaN;
+		sd_monthlyfrac           = NaN;
+		sd_num_breaks            = 0;
+		sd_num_params            = 0;
+		sd_polynomialparams      = NaN;
+		sd_datebreaks            = NaN;
+	end
+	methods
+		function self = frontalforcingsrignotarma(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('frontalforcingsrignotarma');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+		    % nothing for now
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			self.basin_id             = NaN;
+			self.num_basins           = 0;
+			self.subglacial_discharge = NaN;
+			self.ar_order             = 0.0; %autoregression model of order 0
+			self.ma_order             = 0.0; %moving-average model of order 0
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+         %Early return
+         if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+         nbas  = md.frontalforcings.num_basins;
+         nprm  = md.frontalforcings.num_params;
+         nbrk  = md.frontalforcings.num_breaks;
+         nMbrk = md.frontalforcings.monthlyvals_numbreaks;
+         md = checkfield(md,'fieldname','frontalforcings.num_basins','numel',1,'NaN',1,'Inf',1,'>',0);
+         md = checkfield(md,'fieldname','frontalforcings.num_params','numel',1,'NaN',1,'Inf',1,'>',0);
+         md = checkfield(md,'fieldname','frontalforcings.num_breaks','numel',1,'NaN',1,'Inf',1,'>=',0);
+         md = checkfield(md,'fieldname','frontalforcings.basin_id','Inf',1,'>=',0,'<=',md.frontalforcings.num_basins,'size',[md.mesh.numberofelements 1]);
+         if(nbas>1 && nbrk>=1 && nprm>1)
+            md = checkfield(md,'fieldname','frontalforcings.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nbrk+1,nprm],'numel',nbas*(nbrk+1)*nprm);
+         elseif(nbas==1)
+            md = checkfield(md,'fieldname','frontalforcings.polynomialparams','NaN',1,'Inf',1,'size',[nprm,nbrk+1],'numel',nbas*(nbrk+1)*nprm);
+         elseif(nbrk==0)
+            md = checkfield(md,'fieldname','frontalforcings.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nprm],'numel',nbas*(nbrk+1)*nprm);
+         elseif(nprm==1)
+            md = checkfield(md,'fieldname','frontalforcings.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nbrk+1],'numel',nbas*(nbrk+1)*nprm);
+         end
+         md = checkfield(md,'fieldname','frontalforcings.ar_order','numel',1,'NaN',1,'Inf',1,'>=',0);
+         md = checkfield(md,'fieldname','frontalforcings.ma_order','numel',1,'NaN',1,'Inf',1,'>=',0);
+         md = checkfield(md,'fieldname','frontalforcings.arma_timestep','numel',1,'NaN',1,'Inf',1,'>=',md.timestepping.time_step); %ARMA time step cannot be finer than ISSM timestep
+         md = checkfield(md,'fieldname','frontalforcings.arlag_coefs','NaN',1,'Inf',1,'size',[md.frontalforcings.num_basins,md.frontalforcings.ar_order]);
+         md = checkfield(md,'fieldname','frontalforcings.malag_coefs','NaN',1,'Inf',1,'size',[md.frontalforcings.num_basins,md.frontalforcings.ma_order]);
+         if(nbrk>0)
+            md = checkfield(md,'fieldname','frontalforcings.datebreaks','NaN',1,'Inf',1,'size',[nbas,nbrk]);
+         elseif(numel(md.frontalforcings.datebreaks)==0 || all(isnan(md.frontalforcings.datebreaks)))
+            ;
+         else
+            error('md.frontalforcings.num_breaks is 0 but md.frontalforcings.datebreaks is not empty');
+         end
+
+			%%% Check if some monthly forcings are provided %%%
+			if((numel(md.frontalforcings.monthlyvals_intercepts)>1 || ~isnan(md.frontalforcings.monthlyvals_intercepts)) || (numel(md.frontalforcings.monthlyvals_trends)>1 || ~isnan(md.frontalforcings.monthlyvals_trends)) || (numel(md.frontalforcings.monthlyvals_datebreaks)>1 || ~isnan(md.frontalforcings.monthlyvals_datebreaks)))
+				isMonthly = true;
+			else
+				isMonthly = false;
+			end
+			if(numel(md.frontalforcings.monthlyvals_trends)>1 || ~isnan(md.frontalforcings.monthlyvals_trends))
+				isMonthlyTrend = true;
+			else
+				isMonthlyTrend = false;
+			end
+			if(isMonthly)
+            md = checkfield(md,'fieldname','frontalforcings.monthlyvals_numbreaks','numel',1,'NaN',1,'Inf',1,'>=',0);
+			   if(nbas>1 && nMbrk>=1)
+               md = checkfield(md,'fieldname','frontalforcings.monthlyvals_intercepts','NaN',1,'Inf',1,'size',[nbas,12,nMbrk+1],'numel',nbas*(nMbrk+1)*12);
+			   	if(isMonthlyTrend)
+			   		md = checkfield(md,'fieldname','frontalforcings.monthlyvals_trends','NaN',1,'Inf',1,'size',[nbas,12,nMbrk+1],'numel',nbas*(nMbrk+1)*12);
+			   	end
+			   elseif(nbas==1)
+               md = checkfield(md,'fieldname','frontalforcings.monthlyvals_intercepts','NaN',1,'Inf',1,'size',[nMbrk+1,12],'numel',nbas*(nMbrk+1)*12);
+			   	if(isMonthlyTrend)
+			   		md = checkfield(md,'fieldname','frontalforcings.monthlyvals_trends','NaN',1,'Inf',1,'size',[nMbrk+1,12],'numel',nbas*(nMbrk+1)*12);
+               end
+			   elseif(nMbrk==0)
+               md = checkfield(md,'fieldname','frontalforcings.monthlyvals_intercepts','NaN',1,'Inf',1,'size',[nbas,12],'numel',nbas*(nMbrk+1)*12);
+			   	if(isMonthlyTrend)
+			   		md = checkfield(md,'fieldname','frontalforcings.monthlyvals_trends','NaN',1,'Inf',1,'size',[nbas,12],'numel',nbas*(nMbrk+1)*12);
+               end
+			   end
+			   if(nMbrk>0)
+               md = checkfield(md,'fieldname','frontalforcings.monthlyvals_datebreaks','NaN',1,'Inf',1,'size',[nbas,nMbrk]);
+            elseif(numel(md.frontalforcings.monthlyvals_datebreaks)==0 || all(isnan(md.frontalforcings.monthlyvals_datebreaks)))
+               ;
+            else
+               error('md.frontalforcings.monthlyvals_numbreaks is 0 but md.frontalforcings.monthlyvals_datebreaks is not empty');
+            end
+		   end
+
+			%%% Checking subglacial discharge %%%
+			md = checkfield(md,'fieldname','frontalforcings.isdischargearma','values',[0 1]);
+			if(~self.isdischargearma)
+				md = checkfield(md,'fieldname','frontalforcings.subglacial_discharge','>=',0,'NaN',1,'Inf',1,'timeseries',1);
+			else
+				sdnbrk  = md.frontalforcings.sd_num_breaks; 
+				sdnprm  = md.frontalforcings.sd_num_params;
+				md = checkfield(md,'fieldname','frontalforcings.sd_ar_order','numel',1,'NaN',1,'Inf',1,'>=',0);
+				md = checkfield(md,'fieldname','frontalforcings.sd_ma_order','numel',1,'NaN',1,'Inf',1,'>=',0);
+         	md = checkfield(md,'fieldname','frontalforcings.sd_arma_timestep','numel',1,'NaN',1,'Inf',1,'>=',max(1,md.timestepping.time_step)); %ARMA time step cannot be finer than ISSM timestep and annual timestep
+         	md = checkfield(md,'fieldname','frontalforcings.sd_arlag_coefs','NaN',1,'Inf',1,'size',[md.frontalforcings.num_basins,md.frontalforcings.sd_ar_order]);
+         	md = checkfield(md,'fieldname','frontalforcings.sd_malag_coefs','NaN',1,'Inf',1,'size',[md.frontalforcings.num_basins,md.frontalforcings.sd_ma_order]);
+         	md = checkfield(md,'fieldname','frontalforcings.sd_monthlyfrac','NaN',1,'Inf',1,'size',[md.frontalforcings.num_basins,12]);
+				if(any(abs(sum(self.sd_monthlyfrac,2)-1)>1e-3))
+					error('the 12 entries for each basin of md.frontalforcings.sd_monthlyfrac should add up to 1');
+				end
+	         md = checkfield(md,'fieldname','frontalforcings.sd_num_params','numel',1,'NaN',1,'Inf',1,'>',0);
+		      md = checkfield(md,'fieldname','frontalforcings.sd_num_breaks','numel',1,'NaN',1,'Inf',1,'>=',0);
+	         if(nbas>1 && sdnbrk>=1 && sdnprm>1)
+	            md = checkfield(md,'fieldname','frontalforcings.sd_polynomialparams','NaN',1,'Inf',1,'size',[nbas,sdnbrk+1,sdnprm],'numel',nbas*(sdnbrk+1)*sdnprm);
+	         elseif(nbas==1)
+	            md = checkfield(md,'fieldname','frontalforcings.sd_polynomialparams','NaN',1,'Inf',1,'size',[sdnprm,sdnbrk+1],'numel',nbas*(sdnbrk+1)*sdnprm);
+	         elseif(sdnbrk==0)
+	            md = checkfield(md,'fieldname','frontalforcings.sd_polynomialparams','NaN',1,'Inf',1,'size',[nbas,sdnprm],'numel',nbas*(sdnbrk+1)*sdnprm);
+	         elseif(sdnprm==1)
+	            md = checkfield(md,'fieldname','frontalforcings.sd_polynomialparams','NaN',1,'Inf',1,'size',[nbas,sdnbrk+1],'numel',nbas*(sdnbrk+1)*sdnprm);
+	         end
+	         if(sdnbrk>0)
+	            md = checkfield(md,'fieldname','frontalforcings.sd_datebreaks','NaN',1,'Inf',1,'size',[nbas,sdnbrk]);
+	         elseif(numel(md.frontalforcings.sd_datebreaks)==0 || all(isnan(md.frontalforcings.sd_datebreaks)))
+	            ;
+	         else
+	            error('md.frontalforcings.sd_num_breaks is 0 but md.frontalforcings.sd_datebreaks is not empty');
+	         end
+
+  			end
+
+      end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Frontalforcings parameters:'));
+			fielddisplay(self,'num_basins','number of different basins');
+         fielddisplay(self,'basin_id','basin number assigned to each element [unitless]');
+			fielddisplay(self,'num_breaks','number of different breakpoints in the piecewise-polynomial (separating num_breaks+1 periods)');
+			fielddisplay(self,'num_params','number of different parameters in the piecewise-polynomial (1:intercept only, 2:with linear trend, 3:with quadratic trend, etc.)');
+         fielddisplay(self,'polynomialparams','coefficients for the polynomial (const,trend,quadratic,etc.),dim1 for basins,dim2 for periods,dim3 for orders');
+			disp(sprintf('%51s  ex: polyparams=cat(3,intercepts,trendlinearcoefs,trendquadraticcoefs)',' '));
+         fielddisplay(self,'datebreaks','dates at which the breakpoints in the piecewise polynomial occur (1 row per basin) [yr]');
+         fielddisplay(self,'ar_order','order of the autoregressive model [unitless]');
+         fielddisplay(self,'ma_order','order of the moving-average model [unitless]');
+         fielddisplay(self,'arma_timestep','time resolution of the autoregressive model [yr]');
+         fielddisplay(self,'arlag_coefs','basin-specific vectors of AR lag coefficients [unitless]');
+         fielddisplay(self,'malag_coefs','basin-specific vectors of MA lag coefficients [unitless]');
+         fielddisplay(self,'monthlyvals_intercepts','intercept of basin-specific piecewise-linear monthly values of TF added at corresponding month (default: all 0) [°C]');
+         fielddisplay(self,'monthlyvals_trends','trends in basin-specific piecewise-linear monthly values of TF added at corresponding month (default: all 0) [°C/yr]');
+         fielddisplay(self,'monthlyvals_numbreaks','number of breakpoints in the piecewise-linear functions of monthly values');
+         fielddisplay(self,'monthlyvals_datebreaks','dates at which the breakpoints in the piecewise-linear monthly values occur (1 row per basin)');
+         fielddisplay(self,'isdischargearma','whether an ARMA model is also used for the subglacial discharge (if 0: subglacial_discharge is used, if 1: sd_ parameters are used)');
+         fielddisplay(self,'subglacial_discharge','sum of subglacial discharge for each basin [m^3/d]');
+			disp(sprintf('%51s  if isdischargearma is 1, sd_variables are used (sd arma model variable: sum of subglacial discharge for each basin [m^3/d])',' '));
+         fielddisplay(self,'sd_ar_order','order of the subglacial discharge autoregressive model [unitless]');
+         fielddisplay(self,'sd_ma_order','order of the subglacial discharge moving-average model [unitless]');
+         fielddisplay(self,'sd_arma_timestep','time resolution of the subglacial discharge autoregressive model [yr]');
+         fielddisplay(self,'sd_arlag_coefs','basin-specific vectors of AR lag coefficients for subglacial discharge [unitless]');
+         fielddisplay(self,'sd_malag_coefs','basin-specific vectors of MA lag coefficients for subglacial discharge [unitless]');
+         fielddisplay(self,'sd_monthlyfrac','basin-specific vectors of 12 values with fraction of the annual discharge occuring every month [unitless]');
+			fielddisplay(self,'sd_num_params','number of different parameters in the subglacial discharge piecewise-polynomial (1:intercept only, 2:with linear trend, 3:with quadratic trend, etc.)');
+			fielddisplay(self,'sd_num_breaks','number of different breakpoints in the subglacial discharge piecewise-polynomial (separating sd_num_breaks+1 periods)');
+         fielddisplay(self,'sd_datebreaks','dates at which the breakpoints in the piecewise polynomial occur (1 row per basin) [yr]');
+         fielddisplay(self,'sd_polynomialparams','coefficients for the sd_polynomial (const,trend,quadratic,etc.),dim1 for basins,dim2 for periods,dim3 for orders');
+ 		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			%%% Deal with polynomial %%%
+			nbas  = md.frontalforcings.num_basins;
+			nprm  = md.frontalforcings.num_params;
+			nper  = md.frontalforcings.num_breaks+1;
+			% Scale the parameters %
+			polyparamsScaled   = md.frontalforcings.polynomialparams;
+			polyparams2dScaled = zeros(nbas,nper*nprm);
+			if(nprm>1)
+				% Case 3D %
+				if(nbas>1 && nper>1)
+					for(ii=[1:nprm])
+						polyparamsScaled(:,:,ii) = polyparamsScaled(:,:,ii)*((1/yts)^(ii-1));
+					end
+					% Fit in 2D array %
+					for(ii=[1:nprm])
+						jj = 1+(ii-1)*nper;
+						polyparams2dScaled(:,jj:jj+nper-1) = polyparamsScaled(:,:,ii);
+					end
+				% Case 2D and higher-order params at increasing row index %
+				elseif(nbas==1)
+					for(ii=[1:nprm])
+						polyparamsScaled(ii,:) = polyparamsScaled(ii,:)*((1/yts)^(ii-1));
+					end
+					% Fit in row array %
+					for(ii=[1:nprm])
+						jj = 1+(ii-1)*nper;
+						polyparams2dScaled(1,jj:jj+nper-1) = polyparamsScaled(ii,:);
+					end
+				% Case 2D and higher-order params at incrasing column index %
+				elseif(nper==1)
+					for(ii=[1:nprm])
+						polyparamsScaled(:,ii) = polyparamsScaled(:,ii)*((1/yts)^(ii-1));
+					end
+					% 2D array is already in correct format %
+					polyparams2dScaled = polyparamsScaled;
+				end
+			else
+				% 2D array is already in correct format and no need for scaling %
+				polyparams2dScaled = polyparamsScaled;
+			end
+			if(nper==1) %a single period (no break date)
+				dbreaks = zeros(nbas,1); %dummy
+			else
+				dbreaks = md.frontalforcings.datebreaks;
+			end
+
+			%%% Deal with monthly effects %%%
+			nMper = md.frontalforcings.monthlyvals_numbreaks+1;
+			if((numel(md.frontalforcings.monthlyvals_intercepts)<=1 && isnan(md.frontalforcings.monthlyvals_intercepts)))
+				interceptsM = zeros(nbas,12); %monthly intercepts not provided, set to 0
+				trendsM     = zeros(nbas,12); %set monthly trends also to 0
+			else
+				interceptsM3d = md.frontalforcings.monthlyvals_intercepts;
+				if((numel(md.frontalforcings.monthlyvals_trends)<=1 && isnan(md.frontalforcings.monthlyvals_trends)))
+					trendsM3d = 0*interceptsM3d; %monthly trends not provided, set to 0
+				else
+					trendsM3d = md.frontalforcings.monthlyvals_trends;
+				end
+			end
+			% Create 2D arrays from 3D arrays if needed %
+			if(nMper>1 && (numel(md.frontalforcings.monthlyvals_intercepts)>1 || ~isnan(md.frontalforcings.monthlyvals_intercepts)))
+				interceptsM = zeros(nbas,12*nMper);
+				trendsM     = zeros(nbas,12*nMper);
+				for(ii=[1:nMper])
+					jj = 1+(ii-1)*12;
+					interceptsM(:,jj:jj+12-1) = interceptsM3d(:,:,ii);
+					trendsM(:,jj:jj+12-1)     = trendsM3d(:,:,ii);
+				end
+			elseif(nMper==1 && (numel(md.frontalforcings.monthlyvals_intercepts)>1 || ~isnan(md.frontalforcings.monthlyvals_intercepts))) 
+				interceptsM = interceptsM3d;
+				trendsM     = trendsM3d;
+			end
+			if(nMper==1) %a single period (no break date)
+				dMbreaks = zeros(nbas,1); %dummy
+			else
+				dMbreaks = md.frontalforcings.monthlyvals_datebreaks;
+			end
+
+			%%% Deal with the subglacial discharge polynomial %%%
+			if(self.isdischargearma)
+				sdnprm  = md.frontalforcings.sd_num_params;
+				sdnper  = md.frontalforcings.sd_num_breaks+1;
+				sdpolyparamsScaled   = md.frontalforcings.sd_polynomialparams;
+	         sdpolyparams2dScaled = zeros(nbas,sdnper*sdnprm);
+	         if(sdnprm>1)
+	            % Case 3D %
+	            if(nbas>1 && sdnper>1)
+	               for(ii=[1:sdnprm])
+	                  sdpolyparamsScaled(:,:,ii) = sdpolyparamsScaled(:,:,ii)*((1/yts)^(ii-1));
+	               end
+	               % Fit in 2D array %
+	               for(ii=[1:sdnprm])
+	                  jj = 1+(ii-1)*sdnper;
+	                  sdpolyparams2dScaled(:,jj:jj+sdnper-1) = sdpolyparamsScaled(:,:,ii);
+	               end
+	            % Case 2D and higher-order params at increasing row index %
+	            elseif(nbas==1)
+	               for(ii=[1:sdnprm])
+	                  sdpolyparamsScaled(ii,:) = sdpolyparamsScaled(ii,:)*((1/yts)^(ii-1));
+	               end
+	               % Fit in row array %
+	               for(ii=[1:sdnprm])
+	                  jj = 1+(ii-1)*sdnper;
+	                  sdpolyparams2dScaled(1,jj:jj+sdnper-1) = sdpolyparamsScaled(ii,:);
+	               end
+	            % Case 2D and higher-order params at incrasing column index %
+	            elseif(sdnper==1)
+	               for(ii=[1:sdnprm])
+	                  sdpolyparamsScaled(:,ii) = sdpolyparamsScaled(:,ii)*((1/yts)^(ii-1));
+	               end
+	               % 2D array is already in correct format %
+						sdpolyparams2dScaled = sdpolyparamsScaled;
+	            end
+	         else
+					% 2D array is already in correct format and no need for scaling %
+               sdpolyparams2dScaled = sdpolyparamsScaled;
+	         end
+	         if(sdnper==1) %a single period (no break date)
+	            sd_dbreaks = zeros(nbas,1); %dummy
+	         else
+	            sd_dbreaks = md.frontalforcings.sd_datebreaks;
+	         end
+			end
+
+			WriteData(fid,prefix,'name','md.frontalforcings.parameterization','data',3,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','num_basins','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','num_breaks','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','num_params','format','Integer');
+         WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','ar_order','format','Integer');
+         WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','ma_order','format','Integer');
+         WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','arma_timestep','format','Double','scale',yts);
+         WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','basin_id','data',self.basin_id-1,'name','md.frontalforcings.basin_id','format','IntMat','mattype',2); %0-indexed
+         WriteData(fid,prefix,'data',polyparams2dScaled,'name','md.frontalforcings.polynomialparams','format','DoubleMat');
+         WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','arlag_coefs','format','DoubleMat','name','md.frontalforcings.arlag_coefs','yts',yts);
+         WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','malag_coefs','format','DoubleMat','name','md.frontalforcings.malag_coefs','yts',yts);
+         WriteData(fid,prefix,'data',dbreaks,'name','md.frontalforcings.datebreaks','format','DoubleMat','scale',yts);
+			WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','monthlyvals_numbreaks','format','Integer');
+         WriteData(fid,prefix,'data',dMbreaks,'name','md.frontalforcings.monthlyvals_datebreaks','format','DoubleMat','scale',yts);
+         WriteData(fid,prefix,'data',interceptsM,'name','md.frontalforcings.monthlyvals_intercepts','format','DoubleMat');
+         WriteData(fid,prefix,'data',trendsM,'name','md.frontalforcings.monthlyvals_trends','format','DoubleMat','scale',1/yts);
+			WriteData(fid,prefix,'object',self,'fieldname','isdischargearma','format','Boolean');
+			if(self.isdischargearma==0)
+				WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','subglacial_discharge','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			else
+				WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','sd_num_breaks','format','Integer');
+				WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','sd_num_params','format','Integer');
+	         WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','sd_ar_order','format','Integer');
+	         WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','sd_ma_order','format','Integer');
+	         WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','sd_arma_timestep','format','Double','scale',yts);
+				WriteData(fid,prefix,'data',sdpolyparams2dScaled,'name','md.frontalforcings.sd_polynomialparams','format','DoubleMat');
+	         WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','sd_arlag_coefs','format','DoubleMat','name','md.frontalforcings.sd_arlag_coefs','yts',yts);
+	         WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','sd_malag_coefs','format','DoubleMat','name','md.frontalforcings.sd_malag_coefs','yts',yts);
+	         WriteData(fid,prefix,'data',sd_dbreaks,'name','md.frontalforcings.sd_datebreaks','format','DoubleMat','scale',yts);
+	         WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','sd_monthlyfrac','format','DoubleMat','name','md.frontalforcings.sd_monthlyfrac','yts',yts);
+			end
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcingsrignotarma.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcingsrignotarma.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/frontalforcingsrignotarma.py	(revision 27955)
@@ -0,0 +1,329 @@
+# -*- coding: utf-8 -*-
+import numpy as np
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from MatlabFuncs import *
+from WriteData import WriteData
+
+
+class frontalforcingsrignotarma(object):
+    """FRONTALFORCINGSRIGNOTARMA class definition
+
+    Usage:
+        frontalforcingsrignotarma = frontalforcingsrignotarma()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.num_basins = 0
+        self.num_params = 0
+        self.num_breaks = 0
+        self.polynomialparams = np.nan
+        self.datebreaks       = np.nan
+        self.ar_order = 0
+        self.ma_order = 0
+        self.arma_timestep = 0
+        self.arlag_coefs = np.nan
+        self.malag_coefs = np.nan
+        self.monthlyvals_intercepts = np.nan
+        self.monthlyvals_trends = np.nan
+        self.monthlyvals_numbreaks = 0
+        self.monthlyvals_datebreaks = np.nan
+        self.basin_id = np.nan
+        self.subglacial_discharge = np.nan
+        self.isdischargearma = 0
+        self.sd_ar_order = 0
+        self.sd_ma_order = 0
+        self.sd_arma_timestep = 0
+        self.sd_arlag_coefs = np.nan
+        self.sd_malag_coefs = np.nan
+        self.sd_monthlyfrac = np.nan
+        self.sd_num_breaks  = 0
+        self.sd_num_params  = 0
+        self.sd_polynomialparams = np.nan
+        self.sd_datebreaks = np.nan
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            error('constructor not supported')
+
+    def __repr__(self):  # {{{
+        s = '   Frontalforcings parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'num_basins', 'number of different basins [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'basin_id', 'basin number assigned to each element [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'num_breaks', 'number of different breakpoints in the piecewise-polynomial (separating num_breaks+1 periods)'))
+        s += '{}\n'.format(fielddisplay(self, 'num_params', 'number of different parameters in the piecewise-polynomial (1:intercept only, 2:with linear trend, 3:with quadratic trend, etc.)'))
+        s += '{}\n'.format(fielddisplay(self, 'polynomialparams', 'coefficients for the polynomial (const,trend,quadratic,etc.),dim1 for basins,dim2 for periods,dim3 for orders, ex: polyparams=cat(num_params,intercepts,trendlinearcoefs,trendquadraticcoefs)'))
+        s += '{}\n'.format(fielddisplay(self, 'datebreaks', 'dates at which the breakpoints in the piecewise polynomial occur (1 row per basin) [yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'ar_order', 'order of the autoregressive model [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'ma_order', 'order of the moving-average model [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'arma_timestep', 'time resolution of the ARMA model [yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'arlag_coefs', 'basin-specific vectors of AR lag coefficients [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'malag_coefs', 'basin-specific vectors of MA lag coefficients [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'isdischargearma','whether an ARMA model is also used for the subglacial discharge (if 0: subglacial_discharge is used, if 1: sd_ parameters are used)'))
+        s += '{}\n'.format(fielddisplay(self, 'subglacial_discharge', 'sum of subglacial discharge for each basin [m/d]'))
+        s += '{}\n'.format(fielddisplay(self, 'sd_ar_order','order of the subglacial discharge autoregressive model [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'sd_ma_order','order of the subglacial discharge moving-average model [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'sd_arma_timestep','time resolution of the subglacial discharge autoregressive model [yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'sd_arlag_coefs','basin-specific vectors of AR lag coefficients for subglacial discharge [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'sd_malag_coefs','basin-specific vectors of MA lag coefficients for subglacial discharge [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'sd_monthlyfrac','basin-specific vectors of 12 values with fraction of the annual discharge occuring every month [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'sd_num_params','number of different parameters in the subglacial discharge piecewise-polynomial (1:intercept only, 2:with linear trend, 3:with quadratic trend, etc.)'))
+        s += '{}\n'.format(fielddisplay(self, 'sd_num_breaks','number of different breakpoints in the subglacial discharge piecewise-polynomial (separating sd_num_breaks+1 periods)'))
+        s += '{}\n'.format(fielddisplay(self, 'sd_datebreaks','dates at which the breakpoints in the piecewise polynomial occur (1 row per basin) [yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'sd_polynomialparams','coefficients for the sd_polynomial (const,trend,quadratic,etc.),dim1 for basins,dim2 for periods,dim3 for orders'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.basin_id = np.nan
+        self.num_basins = 0
+        self.subglacial_discharge = np.nan
+        self.ar_order = 0.0  # Autoregression model of order 0
+        self.ma_order = 0.0  # Moving-average model of order 0
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if not (solution == 'TransientSolution') or not md.transient.ismovingfront:
+            return md
+
+        nbas  = md.frontalforcings.num_basins;
+        nprm  = md.frontalforcings.num_params;
+        nbrk  = md.frontalforcings.num_breaks;
+        nMbrk = md.frontalforcings.monthlyvals_numbreaks;
+        md = checkfield(md, 'fieldname', 'frontalforcings.num_basins', 'numel', 1, 'NaN', 1, 'Inf', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'frontalforcings.num_params', 'numel', 1, 'NaN', 1, 'Inf', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'frontalforcings.num_breaks', 'numel', 1, 'NaN', 1, 'Inf', 1, '>=', 0)
+        md = checkfield(md, 'fieldname', 'frontalforcings.basin_id', 'Inf', 1, '>=', 0, '<=', md.frontalforcings.num_basins, 'size', [md.mesh.numberofelements])
+        md = checkfield(md, 'fieldname', 'frontalforcings.subglacial_discharge', '>=', 0, 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+        if len(np.shape(self.polynomialparams)) == 1:
+            self.polynomialparams = np.array([[self.polynomialparams]])
+        if(nbas>1 and nbrk>=1 and nprm>1):
+            md = checkfield(md,'fieldname','frontalforcings.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nbrk+1,nprm],'numel',nbas*(nbrk+1)*nprm)
+        elif(nbas==1):
+            md = checkfield(md,'fieldname','frontalforcings.polynomialparams','NaN',1,'Inf',1,'size',[nprm,nbrk+1],'numel',nbas*(nbrk+1)*nprm)
+        elif(nbrk==0):
+            md = checkfield(md,'fieldname','frontalforcings.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nprm],'numel',nbas*(nbrk+1)*nprm)
+        elif(nprm==1):
+            md = checkfield(md,'fieldname','frontalforcings.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nbrk],'numel',nbas*(nbrk+1)*nprm)
+        md = checkfield(md, 'fieldname', 'frontalforcings.ar_order', 'numel', 1, 'NaN', 1, 'Inf', 1, '>=', 0)
+        md = checkfield(md, 'fieldname', 'frontalforcings.ma_order', 'numel', 1, 'NaN', 1, 'Inf', 1, '>=', 0)
+        md = checkfield(md, 'fieldname', 'frontalforcings.arma_timestep', 'numel', 1, 'NaN', 1, 'Inf', 1, '>=', md.timestepping.time_step) # ARMA time step cannot be finer than ISSM timestep
+        md = checkfield(md, 'fieldname', 'frontalforcings.arlag_coefs', 'NaN', 1, 'Inf', 1, 'size', [md.frontalforcings.num_basins, md.frontalforcings.ar_order])
+        md = checkfield(md, 'fieldname', 'frontalforcings.malag_coefs', 'NaN', 1, 'Inf', 1, 'size', [md.frontalforcings.num_basins, md.frontalforcings.ma_order])
+        if(nbrk>0):
+            md = checkfield(md, 'fieldname', 'frontalforcings.datebreaks', 'NaN', 1, 'Inf', 1, 'size', [nbas,nbrk])
+        elif(np.size(md.frontalforcings.datebreaks)==0 or np.all(np.isnan(md.frontalforcings.datebreaks))):
+            pass
+        else:
+            raise RuntimeError('md.frontalforcings.num_breaks is 0 but md.frontalforcings.datebreaks is not empty')
+        
+
+        ### Check if some monthly forcings are provided ###
+        if(np.all(np.isnan(md.frontalforcings.monthlyvals_intercepts))==False or np.all(np.isnan(md.frontalforcings.monthlyvals_trends))==False or np.all(np.isnan(md.frontalforcings.monthlyvals_datebreaks))==False):
+            isMonthly = True
+        else:
+            isMonthly = False
+        if(np.all(np.isnan(md.frontalforcings.monthlyvals_datebreaks))):
+            isMonthlyTrend = True
+        else:
+            isMonthlyTrend = False
+        if(isMonthly):
+            md = checkfield(md, 'fieldname', 'frontalforcings.monthlyvals_numbreaks', 'numel', 1, 'NaN', 1, 'Inf', 1, '>=', 0)
+            if(nbas>1 and nMbrk>=1):
+                md = checkfield(md,'fieldname','frontalforcings.monthlyvals_intercepts','NaN',1,'Inf',1,'size',[nbas,12,nMbrk+1],'numel',nbas*(nMbrk+1)*12)
+                if(isMonthlyTrend):
+                    md = checkfield(md,'fieldname','frontalforcings.monthlyvals_trends','NaN',1,'Inf',1,'size',[nbas,12,nMbrk+1],'numel',nbas*(nMbrk+1)*12)
+            elif(nbas==1):
+               md = checkfield(md,'fieldname','frontalforcings.monthlyvals_intercepts','NaN',1,'Inf',1,'size',[nMbrk+1,12],'numel',nbas*(nMbrk+1)*12)
+               if(isMonthlyTrend):
+                  md = checkfield(md,'fieldname','frontalforcings.monthlyvals_trends','NaN',1,'Inf',1,'size',[nMbrk+1,12],'numel',nbas*(nMbrk+1)*12)
+            elif(nMbrk==0):
+               md = checkfield(md,'fieldname','frontalforcings.monthlyvals_intercepts','NaN',1,'Inf',1,'size',[nbas,12],'numel',nbas*(nMbrk+1)*12)
+               if(isMonthlyTrend):
+                  md = checkfield(md,'fieldname','frontalforcings.monthlyvals_trends','NaN',1,'Inf',1,'size',[nbas,12],'numel',nbas*(nMbrk+1)*12)
+        if(nMbrk>0):
+            md = checkfield(md, 'fieldname', 'frontalforcings.monthlyvals_datebreaks', 'NaN', 1, 'Inf', 1, 'size', [nbas,nMbrk])
+        elif(np.size(md.frontalforcings.monthlyvals_datebreaks)==0 or np.all(np.isnan(md.frontalforcings.monthlyvals_datebreaks))):
+            pass
+        else:
+            raise RuntimeError('md.frontalforcings.monthlyvals_numbreaks is 0 but md.frontalforcings.monthlyvals_datebreaks is not empty')
+
+        ### Chacking subglacial discharge ###
+        md = checkfield(md, 'fieldname', 'frontalforcings.isdischargearma', 'values', [0, 1])
+        if(self.isdischargearma==0):
+            md = checkfield(md,'fieldname','frontalforcings.subglacial_discharge','>=',0,'NaN',1,'Inf',1,'timeseries',1)
+        else:
+            sdnbrk  = md.frontalforcings.sd_num_breaks
+            sdnprm  = md.frontalforcings.sd_num_params
+            md = checkfield(md,'fieldname','frontalforcings.sd_ar_order','numel',1,'NaN',1,'Inf',1,'>=',0)
+            md = checkfield(md,'fieldname','frontalforcings.sd_ma_order','numel',1,'NaN',1,'Inf',1,'>=',0)
+            md = checkfield(md,'fieldname','frontalforcings.sd_arma_timestep','numel',1,'NaN',1,'Inf',1,'>=',max(1,md.timestepping.time_step)) #ARMA time step cannot be finer than ISSM timestep and annual timestep
+            md = checkfield(md,'fieldname','frontalforcings.sd_arlag_coefs','NaN',1,'Inf',1,'size',[md.frontalforcings.num_basins,md.frontalforcings.sd_ar_order])
+            md = checkfield(md,'fieldname','frontalforcings.sd_malag_coefs','NaN',1,'Inf',1,'size',[md.frontalforcings.num_basins,md.frontalforcings.sd_ma_order])
+            md = checkfield(md,'fieldname','frontalforcings.sd_monthlyfrac','NaN',1,'Inf',1,'size',[md.frontalforcings.num_basins,12])
+            if(np.any(abs(np.sum(self.sd_monthlyfrac,axis=1)-1)>1e-3)):
+                raise RuntimeError('the 12 entries for each basin of md.frontalforcings.sd_monthlyfrac should add up to 1')
+            md = checkfield(md,'fieldname','frontalforcings.sd_num_params','numel',1,'NaN',1,'Inf',1,'>',0)
+            md = checkfield(md,'fieldname','frontalforcings.sd_num_breaks','numel',1,'NaN',1,'Inf',1,'>=',0)
+            if len(np.shape(self.sd_polynomialparams)) == 1:
+                self.sd_polynomialparams = np.array([[self.sd_polynomialparams]])
+            if(nbas>1 and sdnbrk>=1 and sdnprm>1):
+                md = checkfield(md,'fieldname','frontalforcings.sd_polynomialparams','NaN',1,'Inf',1,'size',[nbas,sdnbrk+1,sdnprm],'numel',nbas*(sdnbrk+1)*sdnprm)
+            elif(nbas==1):
+                md = checkfield(md,'fieldname','frontalforcings.sd_polynomialparams','NaN',1,'Inf',1,'size',[nprm,nbrk+1],'numel',nbas*(sdnbrk+1)*sdnprm)
+            elif(sdnbrk==0):
+                md = checkfield(md,'fieldname','frontalforcings.sd_polynomialparams','NaN',1,'Inf',1,'size',[nbas,sdnprm],'numel',nbas*(sdnbrk+1)*sdnprm)
+            elif(sdnprm==1):
+                md = checkfield(md,'fieldname','frontalforcings.sd_polynomialparams','NaN',1,'Inf',1,'size',[nbas,sdnbrk],'numel',nbas*(sdnbrk+1)*sdnprm)
+            if(sdnbrk>0):
+                md = checkfield(md, 'fieldname', 'frontalforcings.sd_datebreaks', 'NaN', 1, 'Inf', 1, 'size', [nbas,sdnbrk])
+            elif(np.size(md.frontalforcings.sd_datebreaks)==0 or np.all(np.isnan(md.frontalforcings.sd_datebreaks))):
+                pass
+            else:
+                raise RuntimeError('md.frontalforcings.sd_num_breaks is 0 but md.frontalforcings.sd_datebreaks is not empty')
+
+        return md
+    # }}}
+
+    def extrude(self, md):  # {{{
+        # Nothing for now
+        return self
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+        nbas = md.frontalforcings.num_basins;
+        nprm = md.frontalforcings.num_params;
+        nper = md.frontalforcings.num_breaks+1;
+        # Scale the parameters #
+        polyparamsScaled   = np.copy(md.frontalforcings.polynomialparams)
+        polyparams2dScaled = np.zeros((nbas,nper*nprm))
+        if(nprm>1):
+            # Case 3D #
+            if(nbas>1 and nper>1):
+                for ii in range(nprm):
+                    polyparamsScaled[:,:,ii] = polyparamsScaled[:,:,ii]*(1/yts)**ii
+                # Fit in 2D array #
+                for ii in range(nprm):
+                    polyparams2dScaled[:,ii*nper:(ii+1)*nper] = 1*polyparamsScaled[:,:,ii]
+            # Case 2D and higher-order params at increasing row index #
+            elif(nbas==1):
+                for ii in range(nprm):
+                    polyparamsScaled[ii,:] = polyparamsScaled[ii,:]*(1/yts)**ii
+                # Fit in row array #
+                for ii in range(nprm):
+                    polyparams2dScaled[0,ii*nper:(ii+1)*nper] = 1*polyparamsScaled[ii,:]
+            # Case 2D and higher-order params at incrasing column index #
+            elif(nper==1):
+                for ii in range(nprm):
+                    polyparamsScaled[:,ii] = polyparamsScaled[:,ii]*(1/yts)**ii
+                # 2D array is already in correct format #
+                polyparams2dScaled = np.copy(polyparamsScaled)
+        else:
+            # 2D array is already in correct format and no need for scaling #
+            polyparams2dScaled = np.copy(polyparamsScaled)
+        if(nper==1):
+            dbreaks = np.zeros((nbas,1))
+        else:
+            dbreaks = np.copy(md.frontalforcings.datebreaks)
+
+        ### Deal with montly effects ###
+        nMper = md.frontalforcings.monthlyvals_numbreaks+1
+        if(np.any(np.isnan(md.frontalforcings.monthlyvals_intercepts))):
+            interceptsM = np.zeros((nbas,12)) #monthly intercepts not provided, set to 0
+            trendsM     = np.zeros((nbas,12)) #set monthly trends also to 0
+        else:
+            interceptsM3d = md.frontalforcings.monthlyvals_intercepts
+            if(np.any(np.isnan(md.frontalforcings.monthlyvals_trends))):
+                trendsM3d = 0*interceptsM3d #monthly trends not provided, set to 0
+            else:
+                trendsM3d = md.frontalforcings.monthlyvals_trends
+        # Create 2D arrays from 3D arrays if needed #
+        if(nMper>1 and np.all(np.isnan(md.frontalforcings.monthlyvals_intercepts))==False):
+            interceptsM = np.zeros((nbas,12*nMper)) 
+            trendsM     = np.zeros((nbas,12*nMper))
+            for ii in range(nMper):
+                interceptsM[:,ii*12:(ii+1)*12] = 1*interceptsM3d[:,:,ii]
+                trendsM[:,ii*12:(ii+1)*12] = 1*trendsM3d[:,:,ii]
+        elif(nMper==1 and np.all(np.isnan(md.frontalforcings.monthlyvals_intercepts))==False):
+            interceptsM = 1*interceptsM3d
+            trendsM     = 1*trendsM3d
+        if(nMper==1):
+            dMbreaks = np.zeros((nbas,1))
+        else:
+            dMbreaks = np.copy(md.frontalforcings.monthlyvals_datebreaks)
+
+        ### Deal with the subglacial discharge polynomial ###
+        if(self.isdischargearma):
+            sdnprm  = md.frontalforcings.sd_num_params
+            sdnper  = md.frontalforcings.sd_num_breaks+1
+            sdpolyparamsScaled   = np.copy(md.frontalforcings.sd_polynomialparams)
+            sdpolyparams2dScaled = np.zeros((nbas,sdnper*sdnprm))
+            if(sdnprm>1):
+                # Case 3D #
+                if(nbas>1 and sdnper>1):
+                    for ii in range(sdnprm):
+                        sdpolyparamsScaled[:,:,ii] = sdpolyparamsScaled[:,:,ii]*(1/yts)**ii
+                    # Fit in 2D array #
+                    for ii in range(sdnprm):
+                        sdpolyparams2dScaled[:,ii*sdnper:(ii+1)*sdnper] = 1*sdpolyparamsScaled[:,:,ii]
+                # Case 2D and higher-order params at increasing row index #
+                elif(nbas==1):
+                    for ii in range(sdnprm):
+                        sdpolyparamsScaled[ii,:] = sdpolyparamsScaled[ii,:]*(1/yts)**ii
+                    # Fit in row array #
+                    for ii in range(nprm):
+                        sdpolyparams2dScaled[0,ii*sdnper:(ii+1)*sdnper] = 1*sdpolyparamsScaled[ii,:]
+                # Case 2D and higher-order params at incrasing column index #
+                elif(sdnper==1):
+                    for ii in range(sdnprm):
+                        sdpolyparamsScaled[:,ii] = sdpolyparamsScaled[:,ii]*(1/yts)**ii
+                    # 2D array is already in correct format #
+                    sdpolyparams2dScaled = np.copy(sdpolyparamsScaled)
+            else:
+                # 2D array is already in correct format and no need for scaling #
+                sdpolyparams2dScaled = np.copy(sdpolyparamsScaled)
+            if(sdnper==1):
+                sd_dbreaks = np.zeros((nbas,1))
+            else:
+                sd_dbreaks = np.copy(md.frontalforcings.sd_datebreaks)
+
+
+
+
+        WriteData(fid, prefix, 'name', 'md.frontalforcings.parameterization', 'data', 3, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'frontalforcings', 'fieldname', 'num_basins', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'frontalforcings', 'fieldname', 'num_breaks', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'frontalforcings', 'fieldname', 'num_params', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'frontalforcings', 'fieldname', 'ar_order', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'frontalforcings', 'fieldname', 'ma_order', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'frontalforcings', 'fieldname', 'arma_timestep', 'format', 'Double', 'scale', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'frontalforcings', 'fieldname', 'basin_id', 'data', self.basin_id - 1, 'name', 'md.frontalforcings.basin_id', 'format', 'IntMat', 'mattype', 2)  # 0-indexed
+        WriteData(fid, prefix, 'data', polyparams2dScaled, 'name', 'md.frontalforcings.polynomialparams', 'format', 'DoubleMat')
+        WriteData(fid, prefix, 'object', self, 'class', 'frontalforcings', 'fieldname', 'arlag_coefs', 'format', 'DoubleMat', 'name', 'md.frontalforcings.arlag_coefs', 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'frontalforcings', 'fieldname', 'malag_coefs', 'format', 'DoubleMat', 'name', 'md.frontalforcings.malag_coefs', 'yts', yts)
+        WriteData(fid, prefix, 'data', dbreaks, 'name', 'md.frontalforcings.datebreaks', 'format', 'DoubleMat','scale',yts)
+        WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','monthlyvals_numbreaks','format','Integer')
+        WriteData(fid,prefix,'data',dMbreaks,'name','md.frontalforcings.monthlyvals_datebreaks','format','DoubleMat','scale',yts)
+        WriteData(fid,prefix,'data',interceptsM,'name','md.frontalforcings.monthlyvals_intercepts','format','DoubleMat')
+        WriteData(fid,prefix,'data',trendsM,'name','md.frontalforcings.monthlyvals_trends','format','DoubleMat','scale',1/yts)
+        WriteData(fid,prefix,'object',self,'fieldname','isdischargearma','format','Boolean')
+        if(self.isdischargearma==0):
+            WriteData(fid, prefix, 'object', self, 'class', 'frontalforcings', 'fieldname', 'subglacial_discharge', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        else:
+            WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','sd_num_breaks','format','Integer')
+            WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','sd_num_params','format','Integer')
+            WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','sd_ar_order','format','Integer')
+            WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','sd_ma_order','format','Integer')
+            WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','sd_arma_timestep','format','Double','scale',yts)
+            WriteData(fid,prefix,'data',sdpolyparams2dScaled,'name','md.frontalforcings.sd_polynomialparams','format','DoubleMat')
+            WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','sd_arlag_coefs','format','DoubleMat','name','md.frontalforcings.sd_arlag_coefs','yts',yts)
+            WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','sd_malag_coefs','format','DoubleMat','name','md.frontalforcings.sd_malag_coefs','yts',yts)
+            WriteData(fid,prefix,'data',sd_dbreaks,'name','md.frontalforcings.sd_datebreaks','format','DoubleMat','scale',yts)
+            WriteData(fid,prefix,'object',self,'class','frontalforcings','fieldname','sd_monthlyfrac','format','DoubleMat','name','md.frontalforcings.sd_monthlyfrac','yts',yts)
+    # }}}
+
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/geometry.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/geometry.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/geometry.js	(revision 27955)
@@ -0,0 +1,75 @@
+//GEOMETRY class definition
+//
+//   Usage:
+//      geometry=geometry();
+
+function geometry(){
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+		}// }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   Geometry parameters:"));
+
+			fielddisplay(this,'surface','ice upper surface elevation [m]');
+			fielddisplay(this,'thickness','ice thickness [m]');
+			fielddisplay(this,'base','ice base elevation [m]');
+			fielddisplay(this,'bed','bed elevation [m]');
+		} //}}}
+        this.extrude = function(md) {//{{{
+            this.surface=project3d(md,'vector',this.surface,'type','node');
+            this.thickness=project3d(md,'vector',this.thickness,'type','node');
+            this.hydrostatic_ratio=project3d(md,'vector',this.hydrostatic_ratio,'type','node');
+            this.base=project3d(md,'vector',this.base,'type','node');
+            this.bed=project3d(md,'vector',this.bed,'type','node');
+            return this;
+        }//}}}
+		this.classname = function () { //{{{
+			return 'geometry';
+		} //}}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			if ((solution=='TransientSolution' & md.trans.isgia) | (solution=='GiaSolution')){
+				checkfield(md,'fieldname','geometry.thickness','timeseries',1,'NaN',1,'Inf',1,'>=',0);
+			}
+			else{
+				checkfield(md,'fieldname','geometry.surface'  ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','geometry.base'      ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','geometry.thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1],'>',0);
+				for(var i=0;i<md.mesh.numberofvertices;i++){
+					if (Math.abs(md.geometry.thickness[i]-md.geometry.surface[i]+md.geometry.base[i])>Math.pow(10,9)){
+						checkmessage(md,'equality thickness=surface-base violated');
+						break;
+					}
+				}
+				if (solution=='TransientSolution' & md.trans.isgroundingline){
+					checkfield(md,'fieldname','geometry.bed','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				}
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			let length_thickness=size(this.thickness,0);
+			if (length_thickness==md.mesh.numberofvertices || length_thickness==md.mesh.numberofvertices+1) {
+				WriteData(fid,prefix,'object',this,'fieldname','thickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			} else if (length_thickness==md.mesh.numberofelements || length_thickness==md.mesh.numberofelements+1) {
+				WriteData(fid,prefix,'object',this,'fieldname','thickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			} else {
+				error('geometry thickness time series should be a vertex or element time series');
+			}
+			WriteData(fid,prefix,'object',this,'fieldname','surface','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','base','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','bed','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','hydrostatic_ratio','format','DoubleMat','mattype',1);
+		}//}}}
+		this.fix=function() { //{{{
+			this.hydrostatic_ratio=NullFix(this.hydrostatic_ratio,NaN);
+		}//}}}
+	//properties 
+	// {{{
+		this.surface           = NaN;
+		this.thickness         = NaN;
+		this.base              = NaN;
+		this.bed               = NaN;
+		this.hydrostatic_ratio = NaN;
+		this.setdefaultparameters();
+		//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/geometry.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/geometry.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/geometry.m	(revision 27955)
@@ -0,0 +1,111 @@
+%GEOMETRY class definition
+%
+%   Usage:
+%      geometry=geometry();
+
+classdef geometry
+	properties (SetAccess=public) 
+		surface           = NaN;
+		thickness         = NaN;
+		base              = NaN;
+		bed               = NaN;
+		hydrostatic_ratio = NaN;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. Update old properties here
+
+			%2014 March 26th
+			if isstruct(self),
+				disp('WARNING: updating geometry');
+				disp('         md.geometry.bed        is now md.geometry.base');
+				disp('         md.geometry.bathymetry is now md.geometry.bed');
+				obj2 = self;
+				self = geometry();
+				self.surface    = obj2.surface;
+				self.thickness  = obj2.thickness;
+				self.base       = obj2.bed;
+				self.bed        = obj2.bathymetry;
+			end
+
+		end% }}}
+	end
+	methods
+		function self = geometry(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if strcmpi(solution,'LoveSolution'),
+				return; 
+			else
+				md = checkfield(md,'fieldname','geometry.surface' ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','geometry.base'      ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','geometry.thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>=',0);
+				if any(abs(self.thickness-self.surface+self.base)>10^-9),
+					md = checkmessage(md,['equality thickness=surface-base violated']);
+				end 
+				if strcmp(solution,'TransientSolution') & md.transient.isgroundingline,
+					md = checkfield(md,'fieldname','geometry.bed','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+					if any(self.bed-self.base>10^-12),
+						md = checkmessage(md,['base<bed on one or more vertex']);
+					end 
+					pos = find(md.mask.ocean_levelset>0);
+					if any(abs(self.bed(pos)-self.base(pos))>10^-9),
+						md = checkmessage(md,['equality base=bed on grounded ice violated']);
+					end 
+					md = checkfield(md,'fieldname','geometry.bed','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				end
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   geometry parameters:'));
+
+			fielddisplay(self,'surface','ice upper surface elevation [m]');
+			fielddisplay(self,'thickness','ice thickness [m]');
+			fielddisplay(self,'base','ice base elevation [m]');
+			fielddisplay(self,'bed','bed elevation [m]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			length_thickness=size(self.thickness,1);
+			if length_thickness==md.mesh.numberofvertices | length_thickness==md.mesh.numberofvertices+1,
+				WriteData(fid,prefix,'object',self,'fieldname','thickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			elseif length_thickness==md.mesh.numberofelements | length_thickness==md.mesh.numberofelements+1,
+				WriteData(fid,prefix,'object',self,'fieldname','thickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			else
+				error('geometry thickness time series should be a vertex or element time series');
+			end
+
+			WriteData(fid,prefix,'object',self,'fieldname','surface','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','base','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','bed','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','hydrostatic_ratio','format','DoubleMat','mattype',1);
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.surface=project3d(md,'vector',self.surface,'type','node');
+			self.thickness=project3d(md,'vector',self.thickness,'type','node');
+			self.hydrostatic_ratio=project3d(md,'vector',self.hydrostatic_ratio,'type','node');
+			self.base=project3d(md,'vector',self.base,'type','node');
+			self.bed=project3d(md,'vector',self.bed,'type','node');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.geometry.surface'],self.surface);
+			writejs1Darray(fid,[modelname '.geometry.thickness'],self.thickness);
+			writejs1Darray(fid,[modelname '.geometry.base'],self.base);
+			writejs1Darray(fid,[modelname '.geometry.bed'],self.bed);
+			writejs1Darray(fid,[modelname '.geometry.hydrostatic_ratio'],self.hydrostatic_ratio);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/geometry.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/geometry.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/geometry.py	(revision 27955)
@@ -0,0 +1,88 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class geometry(object):
+    """GEOMETRY class definition
+
+    Usage:
+        geometry = geometry()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.surface = np.nan
+        self.thickness = np.nan
+        self.base = np.nan
+        self.bed = np.nan
+        self.hydrostatic_ratio = np.nan
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   geometry parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'surface', 'ice upper surface elevation [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'thickness', 'ice thickness [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'base', 'ice base elevation [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'bed', 'bed elevation [m]'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        return
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if solution == 'LoveSolution':
+            return md
+        else:
+            md = checkfield(md, 'fieldname', 'geometry.surface', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'geometry.base', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'geometry.thickness', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices], '>=', 0)
+            if any(abs(self.thickness - self.surface + self.base) > 1e-9):
+                md.checkmessage('equality thickness = surface-base violated')
+            if solution == 'TransientSolution' and md.transient.isgroundingline:
+                md = checkfield(md, 'fieldname', 'geometry.bed', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+                if np.any(self.bed - self.base > 1e-12):
+                    md.checkmessage('base < bed on one or more vertex')
+                pos = np.where(md.mask.ocean_levelset > 0)
+                if np.any(np.abs(self.bed[pos] - self.base[pos]) > 1e-9):
+                    md.checkmessage('equality base = bed on grounded ice violated')
+                md = checkfield(md, 'fieldname', 'geometry.bed', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        if isinstance(self.thickness, (list, np.ndarray)):
+            length_thickness = len(self.thickness)
+        else:
+            length_thickness = 1
+
+        if (length_thickness == md.mesh.numberofvertices) or (length_thickness == md.mesh.numberofvertices + 1):
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'thickness', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        elif (length_thickness == md.mesh.numberofelements) or (length_thickness == md.mesh.numberofelements + 1):
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'thickness', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', md.constants.yts)
+        else:
+            raise RuntimeError('geometry thickness time series should be a vertex or element time series')
+
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'surface', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'base', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'bed', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'hydrostatic_ratio', 'format', 'DoubleMat', 'mattype', 1)
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.surface = project3d(md, 'vector', self.surface, 'type', 'node')
+        self.thickness = project3d(md, 'vector', self.thickness, 'type', 'node')
+        self.hydrostatic_ratio = project3d(md, 'vector', self.hydrostatic_ratio, 'type', 'node')
+        self.base = project3d(md, 'vector', self.base, 'type', 'node')
+        self.bed = project3d(md, 'vector', self.bed, 'type', 'node')
+        return self
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/giacaron.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/giacaron.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/giacaron.m	(revision 27955)
@@ -0,0 +1,301 @@
+%GIA class definition for Caron model (Caron et al, Geophysical Journal International, 2017)
+%
+%	Usage:
+%		giacaron=giacaron();
+classdef giacaron
+	properties (SetAccess=public) 
+		
+		%Physical constants
+		gravitational_constant= NaN;
+		surface_radius = NaN;
+		core_mantle_boudary_radius= NaN;
+		inner_core_boudary_radius= NaN;
+		stress_norm= NaN;
+		gravity_norm= NaN;
+		radius_norm= NaN;
+		
+		%Numerical parameters
+		allow_layer_deletion=NaN;
+		verbose_mode=NaN;
+		
+		%GIA problem setup
+		forcing_type=NaN;
+		isincompressible=NaN;
+		benchmark_mode=NaN;
+		calculate_sea_level=NaN;
+		calculate_rotational_feedback=NaN;
+		subtract_present_day=NaN;
+		ntime=NaN;
+		nphi=NaN;
+
+		%Earth model
+		numlayers   = NaN;
+		radius      = NaN;
+		lame_mu     = NaN;
+		lame_lambda = NaN;
+		issolid     = NaN;
+		density     = NaN; 
+		viscosity   = NaN; 
+		isburger    = NaN; 
+		transient_viscosity    = NaN; 
+		transient_mu		   = NaN; 
+		
+		%Ice history
+		ice_model_identifier=NaN;
+		ice_model_ntime=NaN;
+		nice_sheets=NaN;
+		
+	end
+	methods
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function self = giacaron(varargin) % {{{
+			switch nargin
+				case 0
+				otherwise
+					options=pairoptions(varargin{:});
+					body=getfieldvalue(options,'body');
+					if strcmpi(body,'earth'), 
+						self.numlayers=getfieldvalue(options,'numlayers',5);
+						self.calculate_sea_level=true;
+						%[self.radius,self.lame_mu, self.lame_lambda, self.issolid, self.density, ...
+						%self.viscosity, self.isburger, self.transient_viscosity, self.transient_mu]=...
+						%modelinit(self.numlayers);
+					elseif strcmpi(body,'europa'), 
+						error('giacaron constructor error message: ''europa'' body not implemented yet!');
+					else 
+						error('giacaron constructor error message: body not implemented yet!');
+					end
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			 %Physical constants
+			gravitational_constant= 6.67259e-11;
+			stress_norm= 1e12;
+			gravity_norm= 10;
+			radius_norm= 1.0;
+
+			%Numerical parameters
+			allow_layer_deletion=true;
+			verbose_mode=false;
+
+			%GIA problem setup
+			forcing_type=11;
+			isincompressible=false;
+			benchmark_mode=false;
+			calculate_sea_level=false;
+			calculate_rotational_feedback=true;
+			subtract_present_day=true;
+
+			%Earth model
+			isburger    = false(self.numlayers,1); 
+			
+			%Ice history
+			nice_sheets=1;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ismember('GiaAnalysis',analyses), return; end
+			% Physical constants			
+			md = checkfield(md,'fieldname','gia.gravitational_constant','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','gia.surface_radius','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','gia.core_mantle_boundary_radius','Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','gia.inner_core_boundary_radius','Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','gia.radius_norm','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','gia.stress_norm','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','gia.gravity_norm','NaN',1,'Inf',1,'numel',1,'>',0);
+
+			%Numerical parameters
+			md = checkfield(md,'fieldname','gia.allow_layer_deletion','values',[0 1]);
+			md = checkfield(md,'fieldname','gia.verbose_mode','values',[0 1]);
+
+			%GIA problem setup
+			md = checkfield(md,'fieldname','gia.forcing_type','NaN',1,'Inf',1,'numel',1,'>',0, '<=', 12);
+			md = checkfield(md,'fieldname','gia.isincompressible','values',[0 1]);
+			md = checkfield(md,'fieldname','gia.benchmark_mode','values',[0 1]);
+			md = checkfield(md,'fieldname','gia.calculate_sea_level','values',[0 1]);
+			md = checkfield(md,'fieldname','gia.calculate_rotational_feedback','values',[0 1]);
+			md = checkfield(md,'fieldname','gia.subtract_present_day','values',[0 1]);
+			md = checkfield(md,'fieldname','gia.ntime','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','gia.ntheta','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','gia.nphi','numel',1,'values', self.ntheta*2);
+		
+			%Ice history
+			md = checkfield(md,'fieldname','gia.ice_model_identifier', 'stringrow', 1, 'size', [1 3]);
+			md = checkfield(md,'fieldname','gia.ice_model_ntime', 'NaN', 1, 'Inf', 1, 'numel', 1);
+			md = checkfield(md,'fieldname','gia.nice_sheets', 'NaN', 1, 'Inf', 1, '>', 0, 'numel', 1);
+			
+			%Earth parameters
+			md = checkfield(md,'fieldname','gia.numlayers','NaN',1,'Inf',1,'>',0,'numel',1);
+			md = checkfield(md,'fieldname','gia.radius','NaN',1,'Inf',1,'size',[md.gia.numlayers 1],'>',0);
+			md = checkfield(md,'fieldname','gia.lame_mu','NaN',1,'Inf',1,'size',[md.gia.numlayers 1],'>',0);
+			md = checkfield(md,'fieldname','gia.lame_lambda','NaN',1,'Inf',1,'size',[md.gia.numlayers 1],'>',0);
+			md = checkfield(md,'fieldname','gia.issolid','NaN',1,'Inf',1,'size',[md.gia.numlayers 1],'>',0,'<',2);
+			md = checkfield(md,'fieldname','gia.density','NaN',1,'Inf',1,'size',[md.gia.numlayers 1],'>',0);
+			md = checkfield(md,'fieldname','gia.viscosity','NaN',1,'Inf',1,'size',[md.gia.numlayers 1],'>',0);
+			md = checkfield(md,'fieldname','gia.isburger','NaN',1,'Inf',1,'size',[md.gia.numlayers 1],'>',0,'<',2);
+			md = checkfield(md,'fieldname','gia.transient_viscosity','NaN',1,'Inf',1,'size',[md.gia.numlayers 1],'>',0);
+			md = checkfield(md,'fieldname','gia.transient_mu','NaN',1,'Inf',1,'size',[md.gia.numlayers 1],'>',0);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   giacaron parameters:'));
+			
+			% Physical constants			
+			fielddisplay(self,'gravitational_constant', 'Newton''s Gravitational constant, should be equal to approximately 6.67e-11 [m^3.kg^-1.s^-2]');
+			fielddisplay(self,'surface_radius','NaN', 'Planet outer surface radius [m]');
+			fielddisplay(self,'core_mantle_boundary_radius', 'Planet core mantle boundary radius (optional) [m]'); 
+			fielddisplay(self,'inner_core_boundary_radius','Planet inner core boundary radius (optional) [m]'); 
+			fielddisplay(self,'radius_norm', 'length normalization constant [m] (default 1.0)');
+			fielddisplay(self,'stress_norm', 'stress normalization constant [Pa] (default 1e12)');
+			fielddisplay(self,'gravity_norm', 'gravity normalization constant [m.s^-2] (default 10)');
+
+			%Numerical parameters
+			fielddisplay(self,'allow_layer_deletion', 'boolean allowing the migration of the starting integration radius while increasing the spherical harmonic degree  (default true)');
+			fielddisplay(self,'verbose_mode', 'boolean allowing the program to write more details on terminal (default false)')
+
+			%GIA problem setup
+			fielddisplay(self,'forcing_type','integer indicating the nature and depth of the forcing for the Love number calculation: 1: ICB -- Volumic Potential,  2:  ICB -- Pressure,	3:  ICB -- Loading,    4:  ICB -- Tangential traction, 	5:  CMB -- Volumic Potential,  6:  CMB -- Pressure	7:  CMB -- Loading,  8:  CMB -- Tangential traction,	9: SURF -- Volumic Potential, 10: SURF -- Pressure, 11: SURF -- Loading,  12: SURF -- Tangential traction (default 11)'); 
+			fielddisplay(self,'isincompressible', 'boolean approximating the mantle rheology to an incompressible body, sets Lame_lambda to 5e14 Pa (default false)');
+			fielddisplay(self,'benchmark_mode', 'boolean to enter benchmark mode, writes a lot of outputs from the midst of the calculation (default false)');
+			fielddisplay(self,'calculate_sea_level', 'boolean allowing the sea level equation solving (default false)');
+			fielddisplay(self,'calculate_rotational_feedback', 'boolean allowing the calculation of rotational feedback (default true)');
+			fielddisplay(self,'subtract_present_day', 'boolean, subtracts the present day signal so the calculation is expressed as the difference with the present-day topography, geoid and sea level (default true)');
+			fielddisplay(self,'ntime', 'number of time steps')
+			fielddisplay(self,'ntheta', 'size of grid in latitude') 
+			fielddisplay(self,'nphi', 'size of grid in longitude (should always be ntheta*2)');
+
+			%Ice history
+			fielddisplay(self,'ice_model_identifier', 'string identifier for the ice model (3 characters)')
+			fielddisplay(self,'ice_model_ntime', 'number of time steps in the original ice model, is used to interpolate the model on the desired time')
+			fielddisplay(self,'nice_sheets', 'number of ice regions to be scaled independently')
+
+			%Earth parameters
+			fielddisplay(self,'numlayers','number of layers (default 5)');
+			fielddisplay(self,'radius','array describing the radius for each interface (numlayers+1) [m]');
+			fielddisplay(self,'lame_mu','array describing the shear modulus for each layers (numlayers) [Pa]');
+			fielddisplay(self,'lame_lambda','array describing the lame lambda parameter (numlayers) [Pa]');
+			fielddisplay(self,'issolid','array describing whether the layer is solid or liquid (default 1) (numlayers)');
+			fielddisplay(self,'density','array describing each layer''s density (numlayers) [kg/m^3]');
+			fielddisplay(self,'viscosity','array describing each layer''s viscosity (numlayers) [Pa.s]');
+			fielddisplay(self,'isburger','array describing whether we adopt a MaxWell (0) or Burgers (1) rheology (default 0)');
+			fielddisplay(self,'transient_viscosity','array describing each layer''s transient viscosity, only for Burgers rheologies  (numlayers) [Pa.s]');
+			fielddisplay(self,'transient_mu','array describing each layer''s transient shear modulus, only for Burgers rheologies  (numlayers) [Pa]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.gia.model','data',2,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','mantle_viscosity','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','lithosphere_thickness','format','DoubleMat','mattype',1,'scale',10^3); %from km to m
+			WriteData(fid,prefix,'object',self,'fieldname','cross_section_shape','format','Integer');
+
+			%Physical constants
+			WriteData(fid,prefix,'object',self,'fieldname','gravitational_constant','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','surface_radius ','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','core_mantle_boudary_radius','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','inner_core_boudary_radius','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','stress_norm','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','gravity_norm','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','radius_norm','format','Double');
+
+			%Numerical parameters
+			WriteData(fid,prefix,'object',self,'fieldname','allow_layer_deletion','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','verbose_mode','format','Boolean');
+		
+			%GIA problem setup
+			WriteData(fid,prefix,'object',self,'fieldname','forcing_type','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','isincompressible','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','benchmark_mode','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','calculate_sea_level','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','calculate_rotational_feedback','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','subtract_present_day','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','ntime','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','ntheta','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','nphi','format','Integer');
+
+			%Earth model
+			WriteData(fid,prefix,'object',self,'fieldname','numlayers','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','radius','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','lame_mu','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','lame_lambda ','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','issolid','format','BooleanMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','density','format','DoubleMat','mattype',1); 
+			WriteData(fid,prefix,'object',self,'fieldname','viscosity','format','DoubleMat','mattype',1); 
+			WriteData(fid,prefix,'object',self,'fieldname','isburger','format','BooleanMat','mattype',1); 
+			WriteData(fid,prefix,'object',self,'fieldname','transient_viscosity','format','DoubleMat','mattype',1); 
+			WriteData(fid,prefix,'object',self,'fieldname','transient_mu','format','DoubleMat','mattype',1); 
+		
+			%Inversion
+%			dataset_type_dentifier= NaN
+			WriteData(fid,prefix,'object',self,'fieldname','ndata_std','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','ndata_minimum_val ','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','ndata_maximum_val ','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','ndata_total','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','n_forward_models','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','ice_coefficients_solving ','format','String');
+			WriteData(fid,prefix,'object',self,'fieldname','ninverse_parameters','format','Integer');
+		
+			%Ice history
+			WriteData(fid,prefix,'object',self,'fieldname','ice_model_identifier','format','String');
+			WriteData(fid,prefix,'object',self,'fieldname','ice_model_ntime','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','nice_sheets','format','Integer');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			%Physical constants
+			writejsdouble(fid,[modelname '.gia.gravitational_constant'],self.gravitational_constant);
+			writejsdouble(fid,[modelname '.gia.surface_radius'],self.surface_radius);
+			writejsdouble(fid,[modelname '.gia.core_mantle_boudary_radius'],self.core_mantle_boudary_radius);
+			writejsdouble(fid,[modelname '.gia.inner_core_boudary_radius'],self.inner_core_boudary_radius);
+			writejsdouble(fid,[modelname '.gia.stress_norm'],self.stress_norm);
+			writejsdouble(fid,[modelname '.gia.gravity_norm'],self.gravity_norm);
+			writejsdouble(fid,[modelname '.gia.radius_norm'],self.radius_norm);
+		
+			%Numerical parameters
+			writejsdouble(fid,[modelname '.gia.allow_layer_deletion'],self.allow_layer_deletion);
+			writejsdouble(fid,[modelname '.gia.verbose_mode'],self.verbose_mode);
+		
+			%GIA problem setup
+			writejsdouble(fid,[modelname '.gia.forcing_type'],self.forcing_type);
+			writejsdouble(fid,[modelname '.gia.isincompressible'],self.isincompressible);
+			writejsdouble(fid,[modelname '.gia.benchmark_mode'],self.benchmark_mode);
+			writejsdouble(fid,[modelname '.gia.calculate_sea_level'],self.calculate_sea_level);
+			writejsdouble(fid,[modelname '.gia.calculate_rotational_feedback'],self.calculate_rotational_feedback);
+			writejsdouble(fid,[modelname '.gia.subtract_present_day'],self.subtract_present_day);
+			writejsdouble(fid,[modelname '.gia.ntime'],self.ntime);
+			writejsdouble(fid,[modelname '.gia.ntheta'],self.ntheta);
+			writejsdouble(fid,[modelname '.gia.nphi'],self.nphi);
+
+			%Earth model
+			writejsdouble(fid,[modelname '.gia.numlayers'],self.numlayers);
+			writejsdouble(fid,[modelname '.gia.radius'],self.radius);
+			writejsdouble(fid,[modelname '.gia.lame_mu'],self.lame_mu);
+			writejsdouble(fid,[modelname '.gia.lame_lambda'],self.lame_lambda);
+			writejsdouble(fid,[modelname '.gia.issolid'],self.issolid);
+			writejsdouble(fid,[modelname '.gia.density'],self.density); 
+			writejsdouble(fid,[modelname '.gia.viscosity'],self.viscosity); 
+			writejsdouble(fid,[modelname '.gia.isburger'],self.isburger); 
+			writejsdouble(fid,[modelname '.gia.transient_viscosity'],self.transient_viscosity); 
+			writejsdouble(fid,[modelname '.gia.transient_mu'],self.transient_mu); 
+		
+		%Inversion
+%		 dataset_type_dentifier= NaN
+%			writejsdouble(fid,[modelname '.gia.ndata_std'],self.ndata_std);
+%			writejsdouble(fid,[modelname '.gia.ndata_minimum_val'],self.ndata_minimum_val);
+%			writejsdouble(fid,[modelname '.gia.ndata_maximum_val'],self.ndata_maximum_val);
+%			writejsdouble(fid,[modelname '.gia.ndata_total'],self.ndata_total);
+%			writejsdouble(fid,[modelname '.gia.n_forward_models'],self.n_forward_models);
+%			writejsdouble(fid,[modelname '.gia.ice_coefficients_solving'],self.ice_coefficients_solving);
+%			writejsdouble(fid,[modelname '.gia.ninverse_parameters'],self.ninverse_parameters);
+		
+			%Ice history
+			writejsdouble(fid,[modelname '.gia.ice_model_identifier'],self.ice_model_identifier);
+			writejsdouble(fid,[modelname '.gia.ice_model_ntime'],self.ice_model_ntime);
+			writejsdouble(fid,[modelname '.gia.nice_sheets'],self.nice_sheets);
+			writejsdouble(fid,[modelname '.gia.mantle_viscosity'],self.mantle_viscosity);
+			writejsdouble(fid,[modelname '.gia.lithosphere_thickness'],self.lithosphere_thickness);
+			writejsdouble(fid,[modelname '.gia.cross_section_shape'],self.cross_section_shape);
+			
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/giacaron.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/giacaron.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/giacaron.py	(revision 27955)
@@ -0,0 +1,53 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class giacaron(object):
+    """
+    GIA class definition for Caron model (Caron et al, Geophysical Journal 
+    International, 2017)
+
+       Usage:
+          giacaron = giacaron()
+    """
+
+    def __init__(self, *args):  # {{{
+        #Physical constants
+        self.gravitational_constant         = np.nan
+        self.surface_radius                 = np.nan
+        self.core_mantle_boudary_radius     = np.nan
+        self.inner_core_boudary_radius      = np.nan
+        self.stress_norm                    = np.nan
+        self.gravity_norm                   = np.nan
+        self.radius_norm                    = np.nan
+
+        #Numerical parameters
+        self.allow_layer_deletion           = np.nan
+        self.verbose_mode                   = np.nan
+
+        #GIA problem setup
+        self.forcing_type                   = np.nan
+        self.isincompressible               = np.nan
+        self.benchmark_mode                 = np.nan
+        self.calculate_sea_level            = np.nan
+        self.calculate_rotational_feedback  = np.nan
+        self.subtract_present_day           = np.nan
+        self.ntime                          = np.nan
+        self.nphi                           = np.nan
+
+        #Earth model
+        
+
+
+
+        nargin = len(args)
+
+        if nargin == 0:
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/groundingline.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/groundingline.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/groundingline.js	(revision 27955)
@@ -0,0 +1,61 @@
+//GROUNDINGLINE class definition
+//
+//   Usage:
+//      groundingline=new groundingline();
+
+function groundingline (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		//Type of migration
+		this.migration				= 'SubelementMigration';
+		this.friction_interpolation	= 'SubelementFriction1';
+		this.melt_interpolation		= 'NoMeltOnPartiallyFloating';
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   grounding line migration parameters:'));
+		fielddisplay(this,'migration',"type of grounding line migration: 'SubelementMigration','SoftMigration','AggressiveMigration','Contact' or 'None'");
+		fielddisplay(this,'friction_interpolation',"type of friction interpolation forpartially floating elements: 'NoFrictionOnPartiallyFloating','SubelementFriction1' or 'SubelementFriction2'");
+		fielddisplay(this,'melt_interpolation',"type of melt interpolation forpartially floating elements: 'NoMeltOnPartiallyFloating','FullMeltOnPartiallyFloating','SubelementMelt1' or 'SubelementMelt2'");
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "groundingline";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) {// {{{
+
+			checkfield(md,'fieldname','groundingline.migration','values',['None', 'AggressiveMigration', 'SoftMigration', 'Contact', 'GroundingOnly']);
+			checkfield(md,'fieldname','groundingline.friction_interpolation','values',['NoFrictionOnPartiallyFloating', 'SubelementFriction1', 'SubelementFriction2']);
+			checkfield(md,'fieldname','groundingline.melt_interpolation','values',['NoMeltOnPartiallyFloating', 'SubelementMelt1', 'SubelementMelt2', 'FullMeltOnPartiallyFloating']);
+
+			if (this.migration !='None'){
+				if (isNaN(md.geometry.bed)){
+					md.checkmessage('requesting grounding line migration, but bathymetry is absent!');
+				}
+				for (var i=0;i<md.mesh.numberofvertices;i++){
+					if(md.mask.groundedice_levelset[i]>0){
+						md.checkmessage('base not equal to bed on grounded ice!');
+						break;
+					}
+					if(md.geometry.bed[i] - md.geometry.base[i] > Math.pow(10,-9)){
+						checkmessage(md,'bed superior to base on floating ice!');
+						break;
+					}
+				}
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'data',this.migration,'name','md.groundingline.migration','format','String');
+			WriteData(fid,prefix,'data',this.friction_interpolation,'name','md.groundingline.friction_interpolation','format','String');
+			WriteData(fid,prefix,'data',this.melt_interpolation,'name','md.groundingline.melt_interpolation','format','String');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.migration              = '';
+	this.friction_interpolation = '';
+	this.melt_interpolation     = '';
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/groundingline.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/groundingline.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/groundingline.m	(revision 27955)
@@ -0,0 +1,90 @@
+%GROUNDINGLINE class definition
+%
+%   Usage:
+%      groundingline=groundingline();
+
+classdef groundingline
+	properties (SetAccess=public) 
+		migration              = '';
+		friction_interpolation = '';
+		melt_interpolation     = '';
+		requested_outputs      = {};
+	end
+	methods
+		function self = groundingline(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Type of migration
+			self.migration             = 'SubelementMigration';
+			self.friction_interpolation= 'SubelementFriction1';
+			self.melt_interpolation    = 'NoMeltOnPartiallyFloating';
+			%default output
+         self.requested_outputs     = {'default'};
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','groundingline.migration','values',{'None' 'SubelementMigration' 'AggressiveMigration' 'SoftMigration' 'Contact' 'GroundingOnly'});
+			md = checkfield(md,'fieldname','groundingline.friction_interpolation','values',{'NoFrictionOnPartiallyFloating' 'SubelementFriction1' 'SubelementFriction2'});
+			md = checkfield(md,'fieldname','groundingline.melt_interpolation','values',{'NoMeltOnPartiallyFloating' 'SubelementMelt1' 'SubelementMelt2' 'FullMeltOnPartiallyFloating'});
+			md = checkfield(md,'fieldname','groundingline.requested_outputs','stringrow',1);
+
+			if ~strcmp(self.migration,'None') & strcmp(solution,'TransientSolution') & md.transient.isgroundingline==1,
+				if isnan(md.geometry.bed),
+					md = checkmessage(md,['requesting grounding line migration, but bathymetry is absent!']);
+				end
+				pos=find(md.mask.ocean_levelset>0. & md.mask.ice_levelset<=0);
+				if any(abs(md.geometry.base(pos)-md.geometry.bed(pos))>10^-10),
+					md = checkmessage(md,['base not equal to bed on grounded ice!']);
+				end
+				pos=find(md.mask.ocean_levelset<=0. & md.mask.ice_levelset<=0);
+				if any(md.geometry.bed(pos) - md.geometry.base(pos) > 10^-9),
+					md = checkmessage(md,['bed superior to base on floating ice!']);
+				end
+			end
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+      
+			list = {'Surface','Base','MaskOceanLevelset'};
+         
+      end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   grounding line migration parameters:'));
+			fielddisplay(self,'migration','type of grounding line migration: ''SoftMigration'',''SubelementMigration'',''AggressiveMigration'',''Contact'' or ''None''');
+			fielddisplay(self,'friction_interpolation','type of friction interpolation for partially floating elements: ''NoFrictionOnPartiallyFloating'',''SubelementFriction1'', or ''SubelementFriction2''');
+			fielddisplay(self,'melt_interpolation','type of melt interpolation for partially floating elements: ''NoMeltOnPartiallyFloating'',''SubelementMelt1'',''SubelementMelt2'', or ''FullMeltOnPartiallyFloating''');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'data',self.migration,'name','md.groundingline.migration','format','String');
+			WriteData(fid,prefix,'data',self.friction_interpolation,'name','md.groundingline.friction_interpolation','format','String');
+			WriteData(fid,prefix,'data',self.melt_interpolation,'name','md.groundingline.melt_interpolation','format','String');
+			
+			%process requested outputs
+         outputs = self.requested_outputs;
+         pos  = find(ismember(outputs,'default'));
+         if ~isempty(pos),
+            outputs(pos) = [];                         %remove 'default' from outputs
+            outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+         end
+			WriteData(fid,prefix,'data',outputs,'name','md.groundingline.requested_outputs','format','StringArray')
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsstring(fid,[modelname '.groundingline.migration'],self.migration);
+			writejsstring(fid,[modelname '.groundingline.friction_interpolation'],self.friction_interpolation);
+			writejsstring(fid,[modelname '.groundingline.melt_interpolation'],self.melt_interpolation);
+			writejscellstring(fid,[modelname '.groundingline.requested_outputs'],self.requested_outputs);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/groundingline.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/groundingline.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/groundingline.py	(revision 27955)
@@ -0,0 +1,82 @@
+import numpy as np
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+import MatlabFuncs as m
+from WriteData import WriteData
+
+
+class groundingline(object):
+    """
+    GROUNDINGLINE class definition
+
+       Usage:
+          groundingline = groundingline()
+    """
+
+    def __init__(self):  # {{{
+        self.migration = ''
+        self.friction_interpolation = ''
+        self.melt_interpolation = ''
+        self.requested_outptuts = []
+
+        # Set defaults
+        self.setdefaultparameters()
+
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   grounding line migration parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'migration', 'type of grounding line migration: \'SoftMigration\', \'SubelementMigration\', \'AggressiveMigration\', \'Contact\', \'None\''))
+        s += '{}\n'.format(fielddisplay(self, 'migration', 'type of friction interpolation on partially floating elements: ''SubelementFriction1'', ''SubelementFriction2'', ''NoFrictionOnPartiallyFloating'''))
+        s += '{}\n'.format(fielddisplay(self, 'migration', 'type of melt interpolation on partially floating elements: \'SubelementMelt1\', \'SubelementMelt2\', \'NoMeltOnPartiallyFloating\', \'FullMeltOnPartiallyFloating\''))
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        return s
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['Surface', 'Base','MaskOceanLevelset']
+
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Type of migration
+        self.migration = 'SubelementMigration'
+        self.friction_interpolation = 'SubelementFriction1'
+        self.melt_interpolation = 'NoMeltOnPartiallyFloating'
+        # Default output
+        self.requested_outputs = ['default']
+
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        md = checkfield(md, 'fieldname', 'groundingline.migration', 'values', ['None', 'SubelementMigration', 'AggressiveMigration', 'SoftMigration', 'Contact', 'GroundingOnly'])
+        md = checkfield(md, 'fieldname', 'groundingline.friction_interpolation', 'values', ['SubelementFriction1', 'SubelementFriction2', 'NoFrictionOnPartiallyFloating'])
+        md = checkfield(md, 'fieldname', 'groundingline.melt_interpolation', 'values', ['SubelementMelt1', 'SubelementMelt2', 'NoMeltOnPartiallyFloating', 'FullMeltOnPartiallyFloating'])
+        md = checkfield(md, 'fieldname', 'groundingline.requested_outputs', 'stringrow', 1)
+
+        if(not m.strcmp(self.migration, 'None') and md.transient.isgroundingline and solution == 'TransientSolution'):
+            if np.any(np.isnan(md.geometry.bed)):
+                md.checkmessage("requesting grounding line migration, but bathymetry is absent!")
+            pos = np.nonzero(md.mask.ocean_levelset > 0.)[0]
+            if any(np.abs(md.geometry.base[pos] - md.geometry.bed[pos]) > pow(10, -10)):
+                md.checkmessage("base not equal to bed on grounded ice!")
+            if any(md.geometry.bed - md.geometry.base > pow(10, -9)):
+                md.checkmessage("bed superior to base on floating ice!")
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'data', self.migration, 'name', 'md.groundingline.migration', 'format', 'String')
+        WriteData(fid, prefix, 'data', self.friction_interpolation, 'name', 'md.groundingline.friction_interpolation', 'format', 'String')
+        WriteData(fid, prefix, 'data', self.melt_interpolation, 'name', 'md.groundingline.melt_interpolation', 'format', 'String')
+        
+        # Process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.groundingline.requested_outputs', 'format', 'StringArray')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyarmapw.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyarmapw.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyarmapw.m	(revision 27955)
@@ -0,0 +1,190 @@
+%HYDROLOGYARMAPW class definition
+%
+%   Usage:
+%      hydrologyarmapw=hydrologyarmapw();
+
+classdef hydrologyarmapw
+	properties (SetAccess=public) 
+		num_basins               = 0;
+      num_params               = 0;
+      num_breaks               = 0;
+		basin_id                 = NaN;
+      monthlyfactors           = NaN;
+		polynomialparams         = NaN;
+		ar_order                 = 0;
+      ma_order                 = 0;
+      arma_timestep            = 0;
+		arlag_coefs              = NaN;
+      malag_coefs              = NaN;
+		datebreaks               = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.basin_id    = project3d(md,'vector',self.basin_id,'type','element');
+		end % }}}
+		function self = hydrologyarmapw(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(self,varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'FrictionWaterPressure'};
+		end % }}}    
+		function self = setdefaultparameters(self) % {{{
+			%No default parameters
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('HydrologyArmapwAnalysis',analyses)
+				return;
+			end
+
+			nbas  = md.hydrology.num_basins;
+         nprm  = md.hydrology.num_params;
+         nbrk  = md.hydrology.num_breaks;
+
+			md = checkfield(md,'fieldname','hydrology.num_basins','numel',1,'NaN',1,'Inf',1,'>',0);
+			md = checkfield(md,'fieldname','hydrology.num_breaks','numel',1,'NaN',1,'Inf',1,'>=',0);
+			md = checkfield(md,'fieldname','hydrology.num_params','numel',1,'NaN',1,'Inf',1,'>',0);
+			md = checkfield(md,'fieldname','hydrology.basin_id','Inf',1,'>=',0,'<=',md.hydrology.num_basins,'size',[md.mesh.numberofelements,1]);
+			
+			% Check if monthly factors are provided %
+			if(numel(md.hydrology.monthlyfactors)>1 || ~isnan(md.hydrology.monthlyfactors))
+				md = checkfield(md,'fieldname','hydrology.monthlyfactors','NaN',1,'Inf',1,'size',[md.hydrology.num_basins,12]);
+				isseasonality = false;
+				for(rr=[1:md.hydrology.num_basins])
+					for(cc=[1:12])
+						if(md.hydrology.monthlyfactors(rr,cc)~=1)
+							isseasonality = true;
+						end
+					end
+				end
+				if(isseasonality && md.timestepping.time_step>=1)
+					error('md.timestepping.time_step is too large to use hydrologyarmapw() with monthlyfactors');
+				end
+			end
+
+			if(nbas>1 && nbrk>=1 && nprm>1)
+            md = checkfield(md,'fieldname','hydrology.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nbrk+1,nprm],'numel',nbas*(nbrk+1)*nprm);
+         elseif(nbas==1)
+            md = checkfield(md,'fieldname','hydrology.polynomialparams','NaN',1,'Inf',1,'size',[nprm,nbrk+1],'numel',nbas*(nbrk+1)*nprm);
+         elseif(nbrk==0)
+            md = checkfield(md,'fieldname','hydrology.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nprm],'numel',nbas*(nbrk+1)*nprm);
+         elseif(nprm==1)
+            md = checkfield(md,'fieldname','hydrology.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nbrk+1],'numel',nbas*(nbrk+1)*nprm);
+         end
+
+			md = checkfield(md,'fieldname','hydrology.ar_order','numel',1,'NaN',1,'Inf',1,'>=',0);
+         md = checkfield(md,'fieldname','hydrology.ma_order','numel',1,'NaN',1,'Inf',1,'>=',0);
+         md = checkfield(md,'fieldname','hydrology.arma_timestep','numel',1,'NaN',1,'Inf',1,'>=',md.timestepping.time_step); %ARMA time step cannot be finer than ISSM timestep
+         md = checkfield(md,'fieldname','hydrology.arlag_coefs','NaN',1,'Inf',1,'size',[md.hydrology.num_basins,md.hydrology.ar_order]);
+         md = checkfield(md,'fieldname','hydrology.malag_coefs','NaN',1,'Inf',1,'size',[md.hydrology.num_basins,md.hydrology.ma_order]);
+
+			if(nbrk>0)
+            md = checkfield(md,'fieldname','hydrology.datebreaks','NaN',1,'Inf',1,'size',[nbas,nbrk]);
+         elseif(numel(md.hydrology.datebreaks)==0 || all(isnan(md.hydrology.datebreaks)))
+            ;
+         else
+            error('md.hydrology.num_breaks is 0 but md.hydrology.datebreaks is not empty');
+         end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   hydrologyarmapw'));
+			disp(sprintf('   subglacial water pressure is calculated as Pw=monthlyfactor[month]*(rho_water*g*bed+Pw_arma) where Pw_arma is the perturbation calculated as an ARMA process'));
+			disp(sprintf('   polynomialparams includes the constant, linear trend, quadratic trend, etc. of the ARMA process'));
+			disp(sprintf('   arlag_coefs and malag_coefs include the coefficients of the ARMA process'));
+			fielddisplay(self,'num_basins','number of different basins');
+			fielddisplay(self,'basin_id','basin number assigned to each element');
+			fielddisplay(self,'num_breaks','number of different breakpoints in the piecewise-polynomial (separating num_breaks+1 periods)');
+         fielddisplay(self,'num_params','number of different parameters in the piecewise-polynomial (1:intercept only, 2:with linear trend, 3:with quadratic trend, etc.)');
+			fielddisplay(self,'monthlyfactors','monthly multiplicative factor on the subglacial water pressure, specified per basin (size:[num_basins,12])');
+			fielddisplay(self,'polynomialparams','coefficients for the polynomial (const,trend,quadratic,etc.),dim1 for basins,dim2 for periods,dim3 for orders');
+         disp(sprintf('%51s  ex: polyparams=cat(3,intercepts,trendlinearcoefs,trendquadraticcoefs)',' '));
+         fielddisplay(self,'datebreaks','dates at which the breakpoints in the piecewise polynomial occur (1 row per basin) [yr]');
+         fielddisplay(self,'ar_order','order of the autoregressive model [unitless]');
+         fielddisplay(self,'ma_order','order of the moving-average model [unitless]');
+         fielddisplay(self,'arma_timestep','time resolution of the autoregressive model [yr]');
+         fielddisplay(self,'arlag_coefs','basin-specific vectors of AR lag coefficients [unitless]');
+         fielddisplay(self,'malag_coefs','basin-specific vectors of MA lag coefficients [unitless]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+         %%% Deal with polynomial %%%
+         nbas  = md.hydrology.num_basins;
+         nprm  = md.hydrology.num_params;
+         nper  = md.hydrology.num_breaks+1;
+         % Scale the parameters %
+         polyparamsScaled   = md.hydrology.polynomialparams;
+         polyparams2dScaled = zeros(nbas,nper*nprm);
+         if(nprm>1)
+            % Case 3D %
+            if(nbas>1 && nper>1)
+               for(ii=[1:nprm])
+                  polyparamsScaled(:,:,ii) = polyparamsScaled(:,:,ii)*((1/yts)^(ii-1));
+               end
+               % Fit in 2D array %
+               for(ii=[1:nprm])
+                  jj = 1+(ii-1)*nper;
+                  polyparams2dScaled(:,jj:jj+nper-1) = polyparamsScaled(:,:,ii);
+               end
+            % Case 2D and higher-order params at increasing row index %
+            elseif(nbas==1)
+               for(ii=[1:nprm])
+                  polyparamsScaled(ii,:) = polyparamsScaled(ii,:)*((1/yts)^(ii-1));
+               end
+               % Fit in row array %
+               for(ii=[1:nprm])
+                  jj = 1+(ii-1)*nper;
+                  polyparams2dScaled(1,jj:jj+nper-1) = polyparamsScaled(ii,:);
+               end
+            % Case 2D and higher-order params at incrasing column index %
+            elseif(nper==1)
+               for(ii=[1:nprm])
+                  polyparamsScaled(:,ii) = polyparamsScaled(:,ii)*((1/yts)^(ii-1));
+               end
+               % 2D array is already in correct format %
+               polyparams2dScaled = polyparamsScaled;
+            end
+         else
+            % 2D array is already in correct format and no need for scaling %
+            polyparams2dScaled = polyparamsScaled;
+         end
+         if(nper==1) %a single period (no break date)
+            dbreaks = zeros(nbas,1); %dummy
+         else
+            dbreaks = md.hydrology.datebreaks;
+         end
+
+			% If no monthlyfactors provided: set them all to 1 %
+			if(numel(md.hydrology.monthlyfactors)==1)
+				tempmonthlyfactors = ones(nbas,12);
+			else
+				tempmonthlyfactors = md.hydrology.monthlyfactors;
+			end
+
+			WriteData(fid,prefix,'name','md.hydrology.model','data',7,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','num_basins','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','num_breaks','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','num_params','format','Integer');
+         WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','basin_id','data',self.basin_id-1,'name','md.hydrology.basin_id','format','IntMat','mattype',2); %0-indexed
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','ar_order','format','Integer');
+         WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','ma_order','format','Integer');
+         WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','arma_timestep','format','Double','scale',yts);
+         WriteData(fid,prefix,'data',polyparams2dScaled,'name','md.hydrology.polynomialparams','format','DoubleMat');
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','arlag_coefs','format','DoubleMat','name','md.hydrology.arlag_coefs','yts',yts);
+         WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','malag_coefs','format','DoubleMat','name','md.hydrology.malag_coefs','yts',yts);
+			WriteData(fid,prefix,'data',dbreaks,'name','md.hydrology.datebreaks','format','DoubleMat','scale',yts);
+			WriteData(fid,prefix,'data',tempmonthlyfactors,'name','md.hydrology.monthlyfactors','format','DoubleMat');
+			WriteData(fid,prefix,'data',{'FrictionWaterPressure'},'name','md.hydrology.requested_outputs','format','StringArray');
+		end % }}}
+	end
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyarmapw.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyarmapw.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyarmapw.py	(revision 27955)
@@ -0,0 +1,174 @@
+import numpy as np
+
+from checkfield import *
+from fielddisplay import fielddisplay
+from project3d import *
+from WriteData import *
+from GetAreas import *
+
+class hydrologyarmapw(object):
+    """HYDROLOGYARMAPW class definition
+
+    Usage:
+        hydrologyarmapw = hydrologyarmapw()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.num_basins = 0
+        self.num_params = 0
+        self.num_breaks = 0
+        self.polynomialparams = np.nan
+        self.arma_timestep = 0
+        self.ar_order = 0
+        self.ma_order = 0
+        self.arlag_coefs = np.nan
+        self.malag_coefs = np.nan
+        self.datebreaks = np.nan
+        self.basin_id = np.nan
+        self.monthlyfactors = np.nan
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   hydrologyarmapw\n'
+        s += 'subglacial water pressure is calculated as Pw=monthlyfactor[month]*(rho_water*g*bed+Pw_arma) where Pw_arma is the perturbation calculated as an ARMA process\n'
+        s += 'polynomialparams includes the constant, linear trend, quadratic trend, etc. of the ARMA process\n'
+        s += 'arlag_coefs and malag_coefs include the coefficients of the ARMA process\n'
+        s += '{}\n'.format(fielddisplay(self, 'num_basins', 'number of different basins [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'basin_id', 'basin number assigned to each element [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'num_breaks', 'number of different breakpoints in the piecewise-polynomial (separating num_breaks+1 periods)'))
+        s += '{}\n'.format(fielddisplay(self, 'num_params', 'number of different parameters in the piecewise-polynomial (1:intercept only, 2:with linear trend, 3:with quadratic trend, etc.)'))
+        s += '{}\n'.format(fielddisplay(self, 'monthlyfactors', 'monthly multiplicative factor on the subglacial water pressure, specified per basin (size:[num_basins,12])'))
+        s += '{}\n'.format(fielddisplay(self, 'polynomialparams', 'coefficients for the polynomial (const,trend,quadratic,etc.),dim1 for basins,dim2 for periods,dim3 for orders, ex: polyparams=cat(num_params,intercepts,trendlinearcoefs,trendquadraticcoefs)'))
+        s += '{}\n'.format(fielddisplay(self, 'datebreaks', 'dates at which the breakpoints in the piecewise polynomial occur (1 row per basin) [yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'ar_order', 'order of the autoregressive model [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'ma_order', 'order of the moving-average model [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'arma_timestep', 'time resolution of the ARMA model [yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'arlag_coefs', 'basin-specific vectors of AR lag coefficients [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'malag_coefs', 'basin-specific vectors of MA lag coefficients [unitless]'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # No default parameters
+        return self # Nothing for now
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.basin_id = project3d(md,'vector',self.basin_id,'type','element')
+        return self # Nothing for now
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['FrictionWaterPressure']
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        #Early return
+        if 'HydrologyArmapwAnalysis' not in analyses:
+            return md
+
+        nbas = md.hydrology.num_basins
+        nprm = md.hydrology.num_params
+        nbrk = md.hydrology.num_breaks
+        
+        md = checkfield(md, 'fieldname', 'hydrology.num_basins', 'numel', 1, 'NaN', 1, 'Inf', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'hydrology.num_params', 'numel', 1, 'NaN', 1, 'Inf', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'hydrology.num_breaks', 'numel', 1, 'NaN', 1, 'Inf', 1, '>=', 0)
+        md = checkfield(md, 'fieldname', 'hydrology.basin_id', 'Inf', 1, '>=', 0, '<=', md.hydrology.num_basins, 'size', [md.mesh.numberofelements])
+
+        # Check if monthlyfactors are provided
+        if(np.size(md.hydrology.monthlyfactors)>1 or np.all(np.isnan(md.hydrology.monthlyfactors))==False):
+            md = checkfield(md,'fieldname','hydrology.monthlyfactors','NaN',1,'Inf',1,'size',[md.hydrology.num_basins,12])
+            if(np.any(md.hydrology.monthlyfactors!=1) and md.timestepping.time_step>=1):
+                raise RuntimeError('md.timestepping.time_step is too large to use hydrologyarmapw() with monthlyfactors')
+
+        if len(np.shape(self.polynomialparams)) == 1:
+            self.polynomialparams = np.array([[self.polynomialparams]])
+        if(nbas>1 and nbrk>=1 and nprm>1):
+            md = checkfield(md,'fieldname','hydrology.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nbrk+1,nprm],'numel',nbas*(nbrk+1)*nprm) 
+        elif(nbas==1):
+            md = checkfield(md,'fieldname','hydrology.polynomialparams','NaN',1,'Inf',1,'size',[nprm,nbrk+1],'numel',nbas*(nbrk+1)*nprm) 
+        elif(nbrk==0):
+            md = checkfield(md,'fieldname','hydrology.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nprm],'numel',nbas*(nbrk+1)*nprm)
+        elif(nprm==1):
+            md = checkfield(md,'fieldname','hydrology.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nbrk+1],'numel',nbas*(nbrk+1)*nprm)
+        md = checkfield(md, 'fieldname', 'hydrology.ar_order', 'numel', 1, 'NaN', 1, 'Inf', 1, '>=', 0)
+        md = checkfield(md, 'fieldname', 'hydrology.ma_order', 'numel', 1, 'NaN', 1, 'Inf', 1, '>=', 0)
+        md = checkfield(md, 'fieldname', 'hydrology.arma_timestep', 'numel', 1, 'NaN', 1, 'Inf', 1, '>=', md.timestepping.time_step) # Autoregression time step cannot be finer than ISSM timestep
+        md = checkfield(md, 'fieldname', 'hydrology.arlag_coefs', 'NaN', 1, 'Inf', 1, 'size', [md.hydrology.num_basins, md.hydrology.ar_order])
+        md = checkfield(md, 'fieldname', 'hydrology.malag_coefs', 'NaN', 1, 'Inf', 1, 'size', [md.hydrology.num_basins, md.hydrology.ma_order])
+        if(nbrk>0):
+            md = checkfield(md, 'fieldname', 'hydrology.datebreaks', 'NaN', 1, 'Inf', 1, 'size', [nbas,nbrk])
+        elif(np.size(md.hydrology.datebreaks)==0 or np.all(np.isnan(md.hydrology.datebreaks))):
+            pass
+        else:
+            raise RuntimeError('md.hydrology.num_breaks is 0 but md.hydrology.datebreaks is not empty')
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+        nbas = md.hydrology.num_basins;
+        nprm = md.hydrology.num_params;
+        nper = md.hydrology.num_breaks+1;
+        # Scale the parameters #
+        polyparamsScaled   = np.copy(md.hydrology.polynomialparams)
+        polyparams2dScaled = np.zeros((nbas,nper*nprm))
+        if(nprm>1):
+            # Case 3D #
+            if(nbas>1 and nper>1):
+                for ii in range(nprm):
+                    polyparamsScaled[:,:,ii] = polyparamsScaled[:,:,ii]*(1/yts)**(ii)
+                # Fit in 2D array #
+                for ii in range(nprm):
+                    polyparams2dScaled[:,ii*nper:(ii+1)*nper] = 1*polyparamsScaled[:,:,ii]
+            # Case 2D and higher-order params at increasing row index #
+            elif(nbas==1):
+                for ii in range(nprm):
+                    polyparamsScaled[ii,:] = polyparamsScaled[ii,:]*(1/yts)**(ii)
+                # Fit in row array #
+                for ii in range(nprm):
+                    polyparams2dScaled[0,ii*nper:(ii+1)*nper] = 1*polyparamsScaled[ii,:]
+            # Case 2D and higher-order params at incrasing column index #
+            elif(nper==1):
+                for ii in range(nprm):
+                    polyparamsScaled[:,ii] = polyparamsScaled[:,ii]*(1/yts)**(ii)
+                # 2D array is already in correct format #
+                polyparams2dScaled = np.copy(polyparamsScaled)
+        else:
+            # 2D array is already in correct format and no need for scaling#
+            polyparams2dScaled = np.copy(polyparamsScaled)
+        
+        if(nper==1):
+            dbreaks = np.zeros((nbas,1))
+        else:
+            dbreaks = np.copy(md.hydrology.datebreaks)
+
+        # If no monthlyfactors provided: set them all to 1 #
+        if(np.size(md.hydrology.monthlyfactors)==1):
+            tempmonthlyfactors = np.ones((nbas,12))
+        else:
+            tempmonthlyfactors = np.copy(md.hydrology.monthlyfactors)
+
+        WriteData(fid, prefix, 'name', 'md.hydrology.model', 'data', 7, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'num_basins', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'num_breaks', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'num_params', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'ar_order', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'ma_order', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'arma_timestep', 'format', 'Double', 'scale', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'basin_id', 'data', self.basin_id - 1, 'name', 'md.hydrology.basin_id', 'format', 'IntMat', 'mattype', 2)  # 0-indexed
+        WriteData(fid, prefix, 'data', polyparams2dScaled, 'name', 'md.hydrology.polynomialparams', 'format', 'DoubleMat')
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'arlag_coefs', 'format', 'DoubleMat', 'name', 'md.hydrology.arlag_coefs', 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'malag_coefs', 'format', 'DoubleMat', 'name', 'md.hydrology.malag_coefs', 'yts', yts)
+        WriteData(fid, prefix, 'data', dbreaks, 'name', 'md.hydrology.datebreaks', 'format', 'DoubleMat','scale',yts)
+        WriteData(fid,prefix,'data',tempmonthlyfactors,'name','md.hydrology.monthlyfactors','format','DoubleMat')
+        WriteData(fid,prefix,'data',{'FrictionWaterPressure'},'name','md.hydrology.requested_outputs','format','StringArray')
+
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologydc.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologydc.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologydc.m	(revision 27955)
@@ -0,0 +1,272 @@
+
+%Hydrologydc class definition
+%
+%   Usage:
+%      hydrologydc=hydrologydc();
+
+classdef hydrologydc
+	properties (SetAccess=public)
+		water_compressibility    = 0;
+		isefficientlayer         = 0;
+		penalty_factor           = 0;
+		penalty_lock             = 0;
+		rel_tol                  = 0;
+		max_iter                 = 0;
+		steps_per_step           = 0;
+		step_adapt               = 0;
+		averaging                = 0;
+		sedimentlimit_flag       = 0;
+		sedimentlimit            = 0;
+		transfer_flag            = 0;
+		unconfined_flag          = 0;
+		leakage_factor           = 0;
+		basal_moulin_input       = NaN;
+		requested_outputs        = {};
+
+		spcsediment_head         = NaN;
+		mask_thawed_node         = NaN;
+		sediment_transmitivity   = NaN;
+		sediment_compressibility = 0;
+		sediment_porosity        = 0;
+		sediment_thickness       = 0;
+
+
+		spcepl_head              = NaN;
+		mask_eplactive_node      = NaN;
+		epl_compressibility      = 0;
+		epl_porosity             = 0;
+		epl_initial_thickness    = 0;
+		epl_colapse_thickness    = 0;
+		epl_thick_comp           = 0;
+		epl_max_thickness        = 0;
+		epl_conductivity         = 0;
+		eplflip_lock             = 0;
+	end
+	methods
+		function self = extrude(self,md)    % {{{
+			self.spcsediment_head=project3d(md,'vector',self.spcsediment_head,'type','node','layer',1);
+			self.sediment_transmitivity=project3d(md,'vector',self.sediment_transmitivity,'type','node','layer',1);
+			self.basal_moulin_input=project3d(md,'vector',self.basal_moulin_input,'type','node','layer',1);
+			self.mask_thawed_node=project3d(md,'vector',self.mask_thawed_node,'type','node','layer',1);
+			if(self.isefficientlayer==1);
+				self.spcepl_head=project3d(md,'vector',self.spcepl_head,'type','node','layer',1);
+				self.mask_eplactive_node=project3d(md,'vector',self.mask_eplactive_node,'type','node','layer',1);
+			end
+		end    % }}}
+		function self = hydrologydc(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end% }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'SedimentHead','SedimentHeadResidual','EffectivePressure'};
+			if self.isefficientlayer,
+				list=[list,{'EplHead','HydrologydcMaskEplactiveNode','HydrologydcMaskEplactiveElt','EplHeadSlopeX','EplHeadSlopeY','HydrologydcEplThickness'}];
+			end
+			if self.steps_per_step>1 | self.step_adapt,
+				list = [list,'EffectivePressureSubstep','SedimentHeadSubstep'];
+				if self.isefficientlayer,
+					list = [list,'EplHeadSubstep','HydrologydcEplThicknessSubstep'];
+				end
+			end
+		end % }}}
+		function self = initialize(self,md) % {{{
+			self.epl_colapse_thickness = self.sediment_transmitivity/self.epl_conductivity;
+			if isnan(self.basal_moulin_input),
+				self.basal_moulin_input=zeros(md.mesh.numberofvertices,1);
+				disp('      no hydrology.basal_moulin_input specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self)% {{{
+			%Parameters from de Fleurian 2014
+			self.water_compressibility    = 5.04e-10;
+			self.isefficientlayer         = 1;
+			self.penalty_factor           = 3;
+			self.penalty_lock             = 0;
+			self.rel_tol                  = 1.0e-06;
+			self.max_iter                 = 100;
+			self.steps_per_step           = 1;
+			self.step_adapt               = 0;
+			self.averaging                = 0;
+			self.sedimentlimit_flag       = 0;
+			self.sedimentlimit            = 0;
+			self.transfer_flag            = 1;
+			self.unconfined_flag          = 0;
+			self.leakage_factor           = 1.0e-10;
+			self.requested_outputs        = {'default'};
+
+
+			self.sediment_compressibility = 1.0e-08;
+			self.sediment_porosity        = 0.4;
+			self.sediment_thickness       = 20.0;
+			self.sediment_transmitivity   = 8.0e-04;
+
+			self.epl_compressibility      = 1.0e-08;
+			self.epl_conductivity         = 8.0e-02;
+			self.epl_porosity             = 0.4;
+			self.epl_initial_thickness    = 1.0;
+			self.epl_colapse_thickness    = self.sediment_transmitivity/self.epl_conductivity;
+			self.epl_thick_comp           = 1;
+			self.epl_max_thickness        = 5.0;
+			self.eplflip_lock             = 0;
+		end  % }}}
+		function md = checkconsistency(self,md,solution,analyses)% {{{
+		%Early return
+			if ~ismember('HydrologyDCInefficientAnalysis',analyses) & ~ismember('HydrologyDCEfficientAnalysis',analyses),
+				return;
+			end
+
+			md = checkfield(md,'fieldname','hydrology.water_compressibility','>',0,'numel',1);
+			md = checkfield(md,'fieldname','hydrology.isefficientlayer','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','hydrology.penalty_factor','>',0,'numel',1);
+			md = checkfield(md,'fieldname','hydrology.penalty_lock','>=',0,'numel',1);
+			md = checkfield(md,'fieldname','hydrology.rel_tol','>',0,'numel',1);
+			md = checkfield(md,'fieldname','hydrology.max_iter','>',0,'numel',1);
+			md = checkfield(md,'fieldname','hydrology.steps_per_step','>',0,'numel',1);
+			md = checkfield(md,'fieldname','hydrology.step_adapt','numel',1,'values',[0 1]);
+			md = checkfield(md,'fieldname','hydrology.averaging','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','hydrology.sedimentlimit_flag','numel',[1],'values',[0 1 2 3]);
+			md = checkfield(md,'fieldname','hydrology.transfer_flag','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','hydrology.unconfined_flag','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','hydrology.requested_outputs','stringrow',1);
+			if self.sedimentlimit_flag==1,
+				md = checkfield(md,'fieldname','hydrology.sedimentlimit','>',0,'numel',1);
+			end
+			if self.transfer_flag==1,
+				md = checkfield(md,'fieldname','hydrology.leakage_factor','>',0,'numel',1);
+			end
+			md = checkfield(md,'fieldname','hydrology.basal_moulin_input','NaN',1,'Inf',1,'timeseries',1);
+
+			md = checkfield(md,'fieldname','hydrology.spcsediment_head','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','hydrology.sediment_compressibility','>',0,'numel',1);
+			md = checkfield(md,'fieldname','hydrology.sediment_porosity','>',0,'numel',1);
+			md = checkfield(md,'fieldname','hydrology.sediment_thickness','>',0,'numel',1);
+			md = checkfield(md,'fieldname','hydrology.sediment_transmitivity','>=',0,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','hydrology.mask_thawed_node','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+
+			if self.isefficientlayer==1,
+				md = checkfield(md,'fieldname','hydrology.spcepl_head','Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','hydrology.mask_eplactive_node','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+				md = checkfield(md,'fieldname','hydrology.epl_compressibility','>',0,'numel',1);
+				md = checkfield(md,'fieldname','hydrology.epl_porosity','>',0,'numel',1);
+				md = checkfield(md,'fieldname','hydrology.epl_initial_thickness','>',0,'numel',1);
+				md = checkfield(md,'fieldname','hydrology.epl_colapse_thickness','>',0,'numel',1);
+				md = checkfield(md,'fieldname','hydrology.epl_thick_comp','numel',[1],'values',[0 1]);
+				md = checkfield(md,'fieldname','hydrology.epl_max_thickness','>',0,'numel',1);
+				md = checkfield(md,'fieldname','hydrology.epl_conductivity','>',0,'numel',1);
+				md = checkfield(md,'fieldname','hydrology.eplflip_lock','>=',0,'numel',1);
+				if (self.epl_colapse_thickness>self.epl_initial_thickness),
+					md = checkmessage(md,'Colapsing thickness for EPL larger than initial thickness');
+				end
+			end
+		end% }}}
+		function disp(self)% {{{
+			disp(sprintf('   hydrology Dual Porous Continuum Equivalent parameters:'));
+			disp(sprintf('   - general parameters'));
+			fielddisplay(self,'water_compressibility','compressibility of water [Pa^-1]');
+			fielddisplay(self,'isefficientlayer','do we use an efficient drainage system [1: true; 0: false]');
+			fielddisplay(self,'penalty_factor','exponent of the value used in the penalisation method [dimensionless]');
+			fielddisplay(self,'penalty_lock','stabilize unstable constraints that keep zigzagging after n iteration (default is 0, no stabilization)');
+			fielddisplay(self,'rel_tol','tolerance of the nonlinear iteration for the transfer between layers [dimensionless]');
+			fielddisplay(self,'max_iter','maximum number of nonlinear iteration');
+			fielddisplay(self,'steps_per_step','number of hydrology steps per timestep');
+			fielddisplay(self,'step_adapt', 'adaptative sub stepping  [1: true 0: false] default is 0');
+			fielddisplay(self, 'averaging', 'averaging methods from short to long steps');
+			disp(sprintf('%55s  0: Arithmetic (default)'));
+			disp(sprintf('%55s  0: Geometric'));
+			disp(sprintf('%55s  0: Harmonic'));
+			fielddisplay(self,'sedimentlimit_flag','what kind of upper limit is applied for the inefficient layer');
+			disp(sprintf('%55s  0: no limit',' '));
+			disp(sprintf('%55s  1: user defined: %s',' ','sedimentlimit'));
+			disp(sprintf('%55s  2: hydrostatic pressure',' '));
+			disp(sprintf('%55s  3: normal stress',' '));
+			if self.sedimentlimit_flag==1,
+				fielddisplay(self,'sedimentlimit','user defined upper limit for the inefficient layer [m]');
+			end
+			fielddisplay(self,'transfer_flag','what kind of transfer method is applied between the layers');
+			disp(sprintf('%55s  0: no transfer',' '));
+			disp(sprintf('%55s  1: constant leakage factor: %s',' ','leakage_factor'));
+			if self.transfer_flag==1,
+				fielddisplay(self,'leakage_factor','user defined leakage factor [m]');
+			end
+			fielddisplay(self,'unconfined_flag','Do you want unconfined scheme to be used (transitory)');
+			disp(sprintf('%55s  0: confined only',' '));
+			disp(sprintf('%55s  1: confined unconfined'));
+      fielddisplay(self,'requested_outputs','additional outputs requested');
+			fielddisplay(self,'basal_moulin_input','water flux at a given point [m3 s-1]');
+			disp(sprintf('   - for the sediment layer'));
+			fielddisplay(self,'spcsediment_head','sediment water head constraints (NaN means no constraint) [m above MSL]');
+			fielddisplay(self,'sediment_compressibility','sediment compressibility [Pa^-1]');
+			fielddisplay(self,'sediment_porosity','sediment [dimensionless]');
+			fielddisplay(self,'sediment_thickness','sediment thickness [m]');
+			fielddisplay(self,'sediment_transmitivity','sediment transmitivity [m^2/s]');
+      fielddisplay(self,'mask_thawed_node','deactivate (0) hydrology on frozen nodes');
+
+			if self.isefficientlayer==1,
+				disp(sprintf('   - for the epl layer'));
+				fielddisplay(self,'spcepl_head','epl water head constraints (NaN means no constraint) [m above MSL]');
+				fielddisplay(self,'mask_eplactive_node','active (1) or not (0) EPL');
+				fielddisplay(self,'epl_compressibility','epl compressibility [Pa^-1]');
+				fielddisplay(self,'epl_porosity','epl [dimensionless]');
+				fielddisplay(self,'epl_initial_thickness','epl initial thickness [m]');
+				fielddisplay(self,'epl_colapse_thickness','epl colapsing thickness [m]');
+				fielddisplay(self,'epl_thick_comp','epl thickness computation flag');
+				fielddisplay(self,'epl_max_thickness','epl maximal thickness [m]');
+				fielddisplay(self,'epl_conductivity','epl conductivity [m^2/s]');
+				fielddisplay(self,'eplflip_lock','lock the epl activation to avoid fli-floping (default is 0, no stabilization)');
+			end
+		end % }}}
+		function marshall(self,prefix,md,fid)% {{{
+			WriteData(fid,prefix,'name','md.hydrology.model','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','water_compressibility','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','isefficientlayer','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','penalty_factor','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','penalty_lock','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','rel_tol','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','max_iter','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','steps_per_step','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','step_adapt','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','averaging','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','sedimentlimit_flag','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','transfer_flag','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','unconfined_flag','format','Integer');
+			if self.sedimentlimit_flag==1,
+				WriteData(fid,prefix,'object',self,'fieldname','sedimentlimit','format','Double');
+			end
+			if self.transfer_flag==1,
+				WriteData(fid,prefix,'object',self,'fieldname','leakage_factor','format','Double');
+			end
+			WriteData(fid,prefix,'object',self,'fieldname','basal_moulin_input','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+
+			WriteData(fid,prefix,'object',self,'fieldname','spcsediment_head','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','sediment_compressibility','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','sediment_porosity','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','sediment_thickness','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','sediment_transmitivity','format','DoubleMat','mattype',1');
+			WriteData(fid,prefix,'object',self,'fieldname','mask_thawed_node','format','DoubleMat','mattype',1);
+			if self.isefficientlayer==1,
+				WriteData(fid,prefix,'object',self,'fieldname','spcepl_head','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'fieldname','mask_eplactive_node','format','DoubleMat','mattype',1);
+				WriteData(fid,prefix,'object',self,'fieldname','epl_compressibility','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','epl_porosity','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','epl_initial_thickness','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','epl_colapse_thickness','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','epl_thick_comp','format','Integer');
+				WriteData(fid,prefix,'object',self,'fieldname','epl_max_thickness','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','epl_conductivity','format','Double');
+				WriteData(fid,prefix,'object',self,'fieldname','eplflip_lock','format','Integer');
+			end
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];  %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.hydrology.requested_outputs','format','StringArray');
+		end% }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologydc.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologydc.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologydc.py	(revision 27955)
@@ -0,0 +1,277 @@
+import numpy as np
+from project3d import project3d
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class hydrologydc(object):
+    """HYDROLOGYDC class definition
+
+    Usage:
+        hydrologydc = hydrologydc()
+    """
+
+    def __init__(self):  # {{{
+        self.water_compressibility = 0
+        self.isefficientlayer = 0
+        self.penalty_factor = 0
+        self.penalty_lock = 0
+        self.rel_tol = 0
+        self.max_iter = 0
+        self.steps_per_step = 0
+        self.step_adapt = 0
+        self.averaging = 0
+        self.sedimentlimit_flag = 0
+        self.sedimentlimit = 0
+        self.transfer_flag = 0
+        self.unconfined_flag = 0
+        self.leakage_factor = 0
+        self.basal_moulin_input = np.nan
+        self.requested_outputs = []
+
+        self.spcsediment_head = np.nan
+        self.mask_thawed_node = np.nan
+        self.sediment_transmitivity = np.nan
+        self.sediment_compressibility = 0
+        self.sediment_porosity = 0
+        self.sediment_thickness = 0
+
+        self.spcepl_head = np.nan
+        self.mask_eplactive_node = np.nan
+        self.epl_compressibility = 0
+        self.epl_porosity = 0
+        self.epl_initial_thickness = 0
+        self.epl_colapse_thickness = 0
+        self.epl_thick_comp = 0
+        self.epl_max_thickness = 0
+        self.epl_conductivity = 0
+        self.eplflip_lock = 0
+
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        # TODO:
+        # - Convert all formatting to calls to <string>.format (see any
+        #   already converted <class>.__repr__ method for examples)
+        #
+        string = '   hydrology Dual Porous Continuum Equivalent parameters:'
+        string = ' - general parameters'
+        string = "%s\n%s" % (string, fielddisplay(self, 'water_compressibility', 'compressibility of water [Pa^ - 1]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'isefficientlayer', 'do we use an efficient drainage system [1: true 0: false]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'penalty_factor', 'exponent of the value used in the penalisation method [dimensionless]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'penalty_lock', 'stabilize unstable constraints that keep zigzagging after n iteration (default is 0, no stabilization)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'rel_tol', 'tolerance of the nonlinear iteration for the transfer between layers [dimensionless]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'max_iter', 'maximum number of nonlinear iteration'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of hydrology steps per time step'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'step_adapt', 'adaptative sub stepping  [1: true 0: false] default is 0'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps'))
+        string = "%s\n\t\t%s" % (string, '0: Arithmetic (default)')
+        string = "%s\n\t\t%s" % (string, '1: Geometric')
+        string = "%s\n\t\t%s" % (string, '2: Harmonic')
+        string = "%s\n%s" % (string, fielddisplay(self, 'basal_moulin_input', 'water flux at a given point [m3 s - 1]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'sedimentlimit_flag', 'what kind of upper limit is applied for the inefficient layer'))
+        string = "%s\n\t\t%s" % (string, '0: no limit')
+        string = "%s\n\t\t%s" % (string, '1: user defined sedimentlimit')
+        string = "%s\n\t\t%s" % (string, '2: hydrostatic pressure')
+        string = "%s\n\t\t%s" % (string, '3: normal stress')
+
+        if self.sedimentlimit_flag == 1:
+            string = "%s\n%s" % (string, fielddisplay(self, 'sedimentlimit', 'user defined upper limit for the inefficient layer [m]'))
+
+        string = "%s\n%s" % (string, fielddisplay(self, 'transfer_flag', 'what kind of transfer method is applied between the layers'))
+        string = "%s\n\t\t%s" % (string, '0: no transfer')
+        string = "%s\n\t\t%s" % (string, '1: constant leakage factor: leakage_factor')
+
+        if self.transfer_flag == 1:
+            string = "%s\n%s" % (string, fielddisplay(self, 'leakage_factor', 'user defined leakage factor [m]'))
+
+        string = "%s\n%s" % (string, fielddisplay(self, 'unconfined_flag', 'using an unconfined scheme or not (transitory)'))
+        string = "%s\n\t\t%s" % (string, '0: Confined only')
+        string = "%s\n\t\t%s" % (string, '1: Confined - Unconfined')
+
+        string = "%s\n%s" % (string, ' - for the sediment layer')
+        string = "%s\n%s" % (string, fielddisplay(self, 'spcsediment_head', 'sediment water head constraints (NaN means no constraint) [m above MSL]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'sediment_compressibility', 'sediment compressibility [Pa^ - 1]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'sediment_porosity', 'sediment [dimensionless]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'sediment_thickness', 'sediment thickness [m]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'sediment_transmitivity', 'sediment transmitivity [m^2 / s]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'mask_thawed_node', 'IDS is deactivaed (0) on frozen nodes'))
+
+        if self.isefficientlayer == 1:
+            string = "%s\n%s" % (string, ' - for the epl layer')
+            string = "%s\n%s" % (string, fielddisplay(self, 'spcepl_head', 'epl water head constraints (NaN means no constraint) [m above MSL]'))
+            string = "%s\n%s" % (string, fielddisplay(self, 'mask_eplactive_node', 'active (1) or not (0) EPL'))
+            string = "%s\n%s" % (string, fielddisplay(self, 'epl_compressibility', 'epl compressibility [Pa^ - 1]'))
+            string = "%s\n%s" % (string, fielddisplay(self, 'epl_porosity', 'epl [dimensionless]'))
+            string = "%s\n%s" % (string, fielddisplay(self, 'epl_max_thickness', 'epl maximal thickness [m]'))
+            string = "%s\n%s" % (string, fielddisplay(self, 'epl_initial_thickness', 'epl initial thickness [m]'))
+            string = "%s\n%s" % (string, fielddisplay(self, 'epl_colapse_thickness', 'epl colapsing thickness [m]'))
+            string = "%s\n%s" % (string, fielddisplay(self, 'epl_thick_comp', 'epl thickness computation flag'))
+            string = "%s\n%s" % (string, fielddisplay(self, 'epl_conductivity', 'epl conductivity [m^2 / s]'))
+            string = "%s\n%s" % (string, fielddisplay(self, 'eplflip_lock', 'lock epl activity to avoid flip - floping (default is 0, no stabilization)'))
+        return string
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.spcsediment_head = project3d(md, 'vector', self.spcsediment_head, 'type', 'node', 'layer', 1)
+        self.sediment_transmitivity = project3d(md, 'vector', self.sediment_transmitivity, 'type', 'node', 'layer', 1)
+        self.basal_moulin_input = project3d(md, 'vector', self.basal_moulin_input, 'type', 'node', 'layer', 1)
+        self.mask_thawed_node = project3d(md, 'vector', self.mask_thawed_node, 'type', 'node', 'layer', 1)
+        if self.isefficientlayer == 1:
+            self.spcepl_head = project3d(md, 'vector', self.spcepl_head, 'type', 'node', 'layer', 1)
+            self.mask_eplactive_node = project3d(md, 'vector', self.mask_eplactive_node, 'type', 'node', 'layer', 1)
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        #Parameters from de Fleurian 2014
+        self.water_compressibility = 5.04e-10
+        self.isefficientlayer = 1
+        self.penalty_factor = 3
+        self.penalty_lock = 0
+        self.rel_tol = 1.0e-06
+        self.max_iter = 100
+        self.steps_per_step = 1
+        self.step_adapt = 0
+        self.averaging = 0
+        self.sedimentlimit_flag = 0
+        self.sedimentlimit = 0
+        self.transfer_flag = 1
+        self.unconfined_flag = 0
+        self.leakage_factor = 1.0e-10
+        self.requested_outputs = ['default']
+        self.sediment_compressibility = 1.0e-08
+        self.sediment_porosity = 0.4
+        self.sediment_thickness = 20.0
+        self.sediment_transmitivity = 8.0e-04
+
+        self.epl_compressibility = 1.0e-08
+        self.epl_conductivity = 8.0e-02
+        self.epl_porosity = 0.4
+        self.epl_initial_thickness = 1.0
+        self.epl_colapse_thickness = self.sediment_transmitivity / self.epl_conductivity
+        self.epl_thick_comp = 1
+        self.epl_max_thickness = 5.0
+        self.eplflip_lock = 0
+
+        return self
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        list = ['SedimentHead', 'SedimentHeadResidual', 'EffectivePressure']
+        if self.isefficientlayer == 1:
+            list.extend(['EplHead', 'HydrologydcMaskEplactiveNode', 'HydrologydcMaskEplactiveElt', 'EplHeadSlopeX', 'EplHeadSlopeY', 'HydrologydcEplThickness'])
+        if self.steps_per_step > 1 or self.step_adapt:
+            list.extend(['EffectivePressureSubstep', 'SedimentHeadSubstep'])
+            if self.isefficientlayer == 1:
+                list.extend(['EplHeadSubstep', 'HydrologydcEplThicknessSubstep'])
+        return list
+    # }}}
+
+    def initialize(self, md):  # {{{
+        self.epl_colapse_thickness = self.sediment_transmitivity / self.epl_conductivity
+        if np.all(np.isnan(self.basal_moulin_input)):
+            self.basal_moulin_input = np.zeros((md.mesh.numberofvertices))
+            print("      no hydrology.basal_moulin_input specified: values set as zero")
+
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        #Early return
+        if 'HydrologyDCInefficientAnalysis' not in analyses and 'HydrologyDCEfficientAnalysis' not in analyses:
+            return md
+
+        md = checkfield(md, 'fieldname', 'hydrology.water_compressibility', 'numel', [1], '>', 0.)
+        md = checkfield(md, 'fieldname', 'hydrology.isefficientlayer', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'hydrology.penalty_factor', '>', 0., 'numel', [1])
+        md = checkfield(md, 'fieldname', 'hydrology.penalty_lock', '>=', 0., 'numel', [1])
+        md = checkfield(md, 'fieldname', 'hydrology.rel_tol', '>', 0., 'numel', [1])
+        md = checkfield(md, 'fieldname', 'hydrology.max_iter', '>', 0., 'numel', [1])
+        md = checkfield(md, 'fieldname', 'hydrology.steps_per_step', '>=', 1, 'numel', [1])
+        md = checkfield(md, 'fieldname', 'hydrology.step_adapt', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'hydrology.averaging', 'numel', [1], 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'hydrology.sedimentlimit_flag', 'numel', [1], 'values', [0, 1, 2, 3])
+        md = checkfield(md, 'fieldname', 'hydrology.transfer_flag', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'hydrology.unconfined_flag', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'hydrology.requested_outputs', 'stringrow', 1)
+
+        if self.sedimentlimit_flag == 1:
+            md = checkfield(md, 'fieldname', 'hydrology.sedimentlimit', '>', 0., 'numel', [1])
+
+        if self.transfer_flag == 1:
+            md = checkfield(md, 'fieldname', 'hydrology.leakage_factor', '>', 0., 'numel', [1])
+
+        md = checkfield(md, 'fieldname', 'hydrology.basal_moulin_input', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'hydrology.spcsediment_head', 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'hydrology.sediment_compressibility', '>', 0., 'numel', [1])
+        md = checkfield(md, 'fieldname', 'hydrology.sediment_porosity', '>', 0., 'numel', [1])
+        md = checkfield(md, 'fieldname', 'hydrology.sediment_thickness', '>', 0., 'numel', [1])
+        md = checkfield(md, 'fieldname', 'hydrology.sediment_transmitivity', '>=', 0, 'size', [md.mesh.numberofvertices])
+        md = checkfield(md, 'fieldname', 'hydrology.mask_thawed_node', 'size', [md.mesh.numberofvertices], 'values', [0, 1])
+        if self.isefficientlayer == 1:
+            md = checkfield(md, 'fieldname', 'hydrology.spcepl_head', 'Inf', 1, 'timeseries', 1)
+            md = checkfield(md, 'fieldname', 'hydrology.mask_eplactive_node', 'size', [md.mesh.numberofvertices], 'values', [0, 1])
+            md = checkfield(md, 'fieldname', 'hydrology.epl_compressibility', '>', 0., 'numel', [1])
+            md = checkfield(md, 'fieldname', 'hydrology.epl_porosity', '>', 0., 'numel', [1])
+            md = checkfield(md, 'fieldname', 'hydrology.epl_max_thickness', 'numel', [1], '>', 0.)
+            md = checkfield(md, 'fieldname', 'hydrology.epl_initial_thickness', 'numel', [1], '>', 0.)
+            md = checkfield(md, 'fieldname', 'hydrology.epl_colapse_thickness', 'numel', [1], '>', 0.)
+            md = checkfield(md, 'fieldname', 'hydrology.epl_thick_comp', 'numel', [1], 'values', [0, 1])
+            md = checkfield(md, 'fieldname', 'hydrology.eplflip_lock', '>=', 0., 'numel', [1])
+            if self.epl_colapse_thickness > self.epl_initial_thickness:
+                md.checkmessage('Colapsing thickness for EPL larger than initial thickness')
+            md = checkfield(md, 'fieldname', 'hydrology.epl_conductivity', 'numel', [1], '>', 0.)
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'name', 'md.hydrology.model', 'data', 1, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'water_compressibility', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isefficientlayer', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'penalty_factor', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'penalty_lock', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'rel_tol', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'max_iter', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'step_adapt', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'sedimentlimit_flag', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'transfer_flag', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'unconfined_flag', 'format', 'Integer')
+        if self.sedimentlimit_flag == 1:
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'sedimentlimit', 'format', 'Double')
+
+        if self.transfer_flag == 1:
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'leakage_factor', 'format', 'Double')
+
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'basal_moulin_input', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'spcsediment_head', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'sediment_compressibility', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'sediment_porosity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'sediment_thickness', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'sediment_transmitivity', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'mask_thawed_node', 'format', 'DoubleMat', 'mattype', 1)
+
+        if self.isefficientlayer == 1:
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'spcepl_head', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'mask_eplactive_node', 'format', 'DoubleMat', 'mattype', 1)
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'epl_compressibility', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'epl_porosity', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'epl_max_thickness', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'epl_initial_thickness', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'epl_colapse_thickness', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'epl_thick_comp', 'format', 'Integer')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'epl_conductivity', 'format', 'Double')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'eplflip_lock', 'format', 'Integer')
+
+    #process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.hydrology.requested_outputs', 'format', 'StringArray')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyglads.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyglads.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyglads.m	(revision 27955)
@@ -0,0 +1,169 @@
+%HYDROLOGYGLADS class definition
+%
+%   Usage:
+%      hydrologyglads=hydrologyglads();
+
+classdef hydrologyglads
+	properties (SetAccess=public) 
+		%Sheet
+		pressure_melt_coefficient = 0.;
+		sheet_conductivity        = NaN;
+		cavity_spacing            = 0.;
+		bump_height               = NaN;
+		omega                     = 0; 
+		sheet_alpha               = NaN; 
+		sheet_beta                = NaN; 
+
+		%Channels
+		ischannels           = 0;
+		channel_conductivity = NaN;
+		channel_sheet_width  = 0.;
+		channel_alpha        = NaN; 
+		channel_beta         = NaN; 
+
+		%Other
+		spcphi               = NaN;
+		moulin_input         = NaN;
+		neumannflux          = NaN;
+		englacial_void_ratio = 0.;
+		requested_outputs    = {};
+		melt_flag            = 0;
+		istransition         = 0;
+	end
+	methods
+		function self = hydrologyglads(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(self,varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'EffectivePressure','HydraulicPotential','HydrologySheetThickness','ChannelArea','ChannelDischarge'};
+		end % }}}    
+
+		function self = setdefaultparameters(self) % {{{
+
+			%Sheet parameters
+			self.pressure_melt_coefficient = 7.5e-8; %K/Pa (See table 1 in Erder et al. 2013)
+			self.cavity_spacing = 2.; %m
+			self.sheet_alpha = 5.0/4.0;
+			self.sheet_beta = 3.0/2.0;
+			self.omega = 1./2000.; 
+
+			%Channel parameters
+			self.ischannels=false;
+			self.channel_conductivity = 5.e-2; %Dow's default, Table uses 0.1
+			self.channel_sheet_width = 2.; %m
+			self.channel_alpha = 5.0/4.0;
+			self.channel_beta = 3.0/2.0;
+
+			%Otherself.omega = 1./2000.; 
+			self.englacial_void_ratio = 1.e-5;% Dow's default, Table from Werder et al. uses 1e-3;
+			self.requested_outputs={'default'};
+			self.melt_flag=0;
+			self.istransition = 0; %by default use GlaDS default turbulent code
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('HydrologyGladsAnalysis',analyses)
+				return;
+			end
+
+			%Sheet
+			md = checkfield(md,'fieldname','hydrology.pressure_melt_coefficient','numel',[1],'>=',0);
+			md = checkfield(md,'fieldname','hydrology.sheet_conductivity','size',[md.mesh.numberofvertices 1],'>',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.cavity_spacing','numel',[1],'>',0);
+			md = checkfield(md,'fieldname','hydrology.bump_height','size',[md.mesh.numberofvertices 1],'>=',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.omega', 'numel', [1], '>=', 0); 
+			md = checkfield(md,'fieldname','hydrology.sheet_alpha', 'numel', [1], '>', 0); 
+			md = checkfield(md,'fieldname','hydrology.sheet_beta', 'numel', [1], '>', 0); 
+
+			%Channels
+			md = checkfield(md,'fieldname','hydrology.ischannels','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','hydrology.channel_conductivity','size',[md.mesh.numberofvertices 1],'>=',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.channel_sheet_width','numel',[1],'>=',0);
+			md = checkfield(md,'fieldname','hydrology.channel_alpha', 'numel', [1], '>', 0); 
+			md = checkfield(md,'fieldname','hydrology.channel_beta', 'numel', [1], '>', 0); 
+
+			%Other
+			md = checkfield(md,'fieldname','hydrology.spcphi','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','hydrology.englacial_void_ratio','numel',[1],'>=',0);
+			md = checkfield(md,'fieldname','hydrology.moulin_input','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.neumannflux','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.requested_outputs','stringrow',1);
+			md = checkfield(md,'fieldname','hydrology.melt_flag','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','hydrology.istransition','numel',[1],'values',[0 1]);
+			if self.melt_flag==1 || self.melt_flag==2
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   GlaDS (hydrologyglads) solution parameters:'));
+			disp(sprintf('      SHEET'));
+			fielddisplay(self,'pressure_melt_coefficient','Pressure melt coefficient (c_t) [K Pa^-1]');
+			fielddisplay(self,'sheet_conductivity','sheet conductivity (k) [m^(7/4) kg^(-1/2)]');
+			fielddisplay(self,'sheet_alpha','First sheet-flow exponent (alpha_s) []'); 
+			fielddisplay(self,'sheet_beta','Second sheet-flow exponent (beta_s) []'); 
+			fielddisplay(self,'cavity_spacing','cavity spacing (l_r) [m]');
+			fielddisplay(self,'bump_height','typical bump height (h_r) [m]');
+			fielddisplay(self,'omega','transition parameter (omega) []'); 
+			disp(sprintf('      CHANNELS'));
+			fielddisplay(self,'ischannels','Do we allow for channels? 1: yes, 0: no');
+			fielddisplay(self,'channel_conductivity','channel conductivity (k_c) [m^(3/2) kg^(-1/2)]');
+			fielddisplay(self,'channel_alpha','First channel-flow exponent (alpha_s) []'); 
+			fielddisplay(self,'channel_beta','Second channel-flow exponent (beta_s) []'); 
+			fielddisplay(self,'channel_sheet_width','channel sheet width [m]');
+			disp(sprintf('      OTHER'));
+			fielddisplay(self,'spcphi','Hydraulic potential Dirichlet constraints [Pa]');
+			fielddisplay(self,'neumannflux','water flux applied along the model boundary (m^2/s)');
+			fielddisplay(self,'moulin_input','moulin input (Q_s) [m^3/s]');
+			fielddisplay(self,'englacial_void_ratio','englacial void ratio (e_v)');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+			fielddisplay(self,'melt_flag','User specified basal melt? 0: no (default), 1: use md.basalforcings.groundedice_melting_rate');
+			fielddisplay(self,'istransition','do we use standard [0, default] or transition model [1]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			%Marshall model code first
+			WriteData(fid,prefix,'name','md.hydrology.model','data',5,'format','Integer');
+
+						%Sheet
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','pressure_melt_coefficient','format','Double');
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','sheet_conductivity','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','cavity_spacing','format','Double');
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','bump_height','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','omega','format','Double'); 
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','sheet_alpha','format','Double'); 
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','sheet_beta','format','Double'); 
+
+			%Channels
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','ischannels','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','channel_conductivity','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','channel_sheet_width','format','Double');
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','channel_alpha','format','Double'); 
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','channel_beta','format','Double'); 
+
+			%Others
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','spcphi','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','neumannflux','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','moulin_input','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','englacial_void_ratio','format','Double');
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','melt_flag','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','istransition','format','Boolean');
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];  %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.hydrology.requested_outputs','format','StringArray');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyglads.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyglads.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyglads.py	(revision 27955)
@@ -0,0 +1,186 @@
+import numpy as np
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class hydrologyglads(object):
+    """hydrologyglads class definition
+
+    Usage:
+        hydrologyglads = hydrologyglads()
+    """
+
+    def __init__(self, *args):  # {{{
+       # Sheet
+        self.pressure_melt_coefficient = 0.
+        self.sheet_conductivity = np.nan
+        self.cavity_spacing = 0.
+        self.bump_height = np.nan
+        self.omega = 0.;
+        self.sheet_alpha = np.nan; 
+        self.sheet_beta = np.nan; 
+
+        # Channels
+        self.ischannels = 0
+        self.channel_conductivity = np.nan
+        self.channel_sheet_width = 0.
+        self.channel_alpha = np.nan; 
+        self.channel_beta = np.nan; 
+
+        # Other
+        self.spcphi = np.nan
+        self.moulin_input = np.nan
+        self.neumannflux = np.nan
+        self.englacial_void_ratio = 0.
+        self.requested_outputs = []
+        self.melt_flag = 0
+        self.istransition = 0
+
+        nargs = len(args)
+        if nargs == 0:
+            self.setdefaultparameters()
+        elif nargs == 1:
+            # TODO: Replace the following with constructor
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+        # }}}
+
+    def __repr__(self):  # {{{
+        s = '   GlaDS (hydrologyglads) solution parameters:\n'
+        s = '\t--SHEET\n'
+        s += '{}\n'.format(fielddisplay(self, 'pressure_melt_coefficient', 'Pressure melt coefficient (c_t) [K Pa^ - 1]'))
+        s += '{}\n'.format(fielddisplay(self, 'sheet_conductivity', 'sheet conductivity (k) [m^(7 / 4) kg^(- 1 / 2)]'))
+        s += '{}\n'.format(fielddisplay(self, 'sheet_alpha', 'First sheet-flow exponent (alpha_s) []')) #TH
+        s += '{}\n'.format(fielddisplay(self, 'sheet_beta', 'Second sheet-flow exponent (beta_s) []')) #TH
+        s += '{}\n'.format(fielddisplay(self, 'cavity_spacing', 'cavity spacing (l_r) [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'bump_height', 'typical bump height (h_r) [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'omega', 'transition parameter (omega) []')) #TH
+        s = '\t--CHANNELS\n'
+        s += '{}\n'.format(fielddisplay(self, 'ischannels', 'Do we allow for channels? 1: yes, 0: no'))
+        s += '{}\n'.format(fielddisplay(self, 'channel_conductivity', 'channel conductivity (k_c) [m^(3 / 2) kg^(- 1 / 2)]'))
+        s += '{}\n'.format(fielddisplay(self, 'channel_sheet_width', 'channel sheet width [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'channel_alpha', 'First channel-flow exponent (alpha_s) []')) #TH
+        s += '{}\n'.format(fielddisplay(self, 'channel_beta', 'Second channel-flow exponent (beta_s) []')) #TH
+        s = '\t--OTHER\n'
+        s += '{}\n'.format(fielddisplay(self, 'spcphi', 'Hydraulic potential Dirichlet constraints [Pa]'))
+        s += '{}\n'.format(fielddisplay(self, 'neumannflux', 'water flux applied along the model boundary (m^2 / s)'))
+        s += '{}\n'.format(fielddisplay(self, 'moulin_input', 'moulin input (Q_s) [m^3 / s]'))
+        s += '{}\n'.format(fielddisplay(self, 'englacial_void_ratio', 'englacial void ratio (e_v)'))
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        s += '{}\n'.format(fielddisplay(self, 'melt_flag', 'User specified basal melt? 0: no (default), 1: use md.basalforcings.groundedice_melting_rate'))
+        s += '{}\n'.format(fielddisplay(self, 'istransition','do we use standard [0, default] or transition model [1]'))
+        return string
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        list = ['EffectivePressure', 'HydraulicPotential', 'HydrologySheetThickness', 'ChannelArea', 'ChannelDischarge']
+        return list
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.sheet_conductivity = project3d(md, 'vector', self.sheet_conductivity, 'type', 'node', 'layer', 1)
+        self.bump_height = project3d(md, 'vector', self.bump_height, 'type', 'node', 'layer', 1)
+
+        # Other
+        self.spcphi = project3d(md, 'vector', self.spcphi, 'type', 'node', 'layer', 1)
+        self.moulin_input = project3d(md, 'vector', self.moulin_input, 'type', 'node', 'layer', 1)
+        self.neumannflux = project3d(md, 'vector', self.neumannflux, 'type', 'node', 'layer', 1)
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Sheet parameters
+        self.pressure_melt_coefficient = 7.5e-8  #K / Pa (See table 1 in Erder et al. 2013)
+        self.cavity_spacing = 2.  #m
+        self.sheet_alpha = 5.0/4.0;
+        self.sheet_beta = 3.0/2.0;
+        self.omega = 1./2000.; 
+
+        # Channel parameters
+        self.ischannels = False
+        self.channel_conductivity = 5.e-2  #Dow's default, Table uses 0.1
+        self.channel_sheet_width = 2.  #m
+        self.channel_alpha = 5.0/4.0;
+        self.channel_beta = 3.0/2.0;
+
+        # Other
+        self.englacial_void_ratio = 1.e-5  #Dow's default, Table from Werder et al. uses 1e-3
+        self.requested_outputs = ['default']
+        self.melt_flag = 0
+        self.istransition = 0  #by default use turbulent physics
+
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if 'HydrologyGladsAnalysis' not in analyses:
+            return md
+
+        # Sheet
+        md = checkfield(md, 'fieldname', 'hydrology.pressure_melt_coefficient', 'numel', [1], '>=', 0)
+        md = checkfield(md, 'fieldname', 'hydrology.sheet_conductivity', 'size', [md.mesh.numberofvertices], '>', 0, 'np.nan', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'hydrology.cavity_spacing', 'numel', [1], '>', 0)
+        md = checkfield(md, 'fieldname', 'hydrology.bump_height', 'size', [md.mesh.numberofvertices], '>=', 0, 'np.nan', 1, 'Inf', 1)
+        md = checkfield(md,'fieldname','hydrology.omega', 'numel', [1], '>=', 0); 
+        md = checkfield(md,'fieldname','hydrology.sheet_alpha', 'numel', [1], '>', 0); 
+        md = checkfield(md,'fieldname','hydrology.sheet_beta', 'numel', [1], '>', 0); 
+
+        # Channels
+        md = checkfield(md, 'fieldname', 'hydrology.ischannels', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'hydrology.channel_conductivity', 'size', [md.mesh.numberofvertices], '>', 0)
+        md = checkfield(md, 'fieldname', 'hydrology.channel_sheet_width', 'numel', [1], '>=', 0)
+        md = checkfield(md,'fieldname','hydrology.channel_alpha', 'numel', [1], '>', 0); 
+        md = checkfield(md,'fieldname','hydrology.channel_beta', 'numel', [1], '>', 0); 
+
+        # Other
+        md = checkfield(md, 'fieldname', 'hydrology.spcphi', 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'hydrology.englacial_void_ratio', 'numel', [1], '>=', 0)
+        md = checkfield(md, 'fieldname', 'hydrology.moulin_input', '>=', 0, 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'hydrology.neumannflux', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'hydrology.requested_outputs', 'stringrow', 1)
+        md = checkfield(md, 'fieldname', 'hydrology.melt_flag', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'hydrology.istransition', 'numel', [1], 'values', [0, 1])
+        if self.melt_flag == 1 or self.melt_flag == 2:
+            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+        # Marshall model code first
+        WriteData(fid, prefix, 'name', 'md.hydrology.model', 'data', 5, 'format', 'Integer')
+
+       # Sheet
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'pressure_melt_coefficient', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'sheet_conductivity', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'cavity_spacing', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'bump_height', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','omega','format','Double'); 
+        WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','sheet_alpha','format','Double'); 
+        WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','sheet_beta','format','Double'); 
+
+        # Channels
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'ischannels', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'channel_conductivity', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'channel_sheet_width', 'format', 'Double')
+        WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','channel_alpha','format','Double'); 
+        WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','channel_beta','format','Double'); 
+
+        # Others
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'spcphi', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'neumannflux', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'moulin_input', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'englacial_void_ratio', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'melt_flag', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'istransition', 'format', 'Boolean')
+
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.hydrology.requested_outputs', 'format', 'StringArray')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologypism.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologypism.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologypism.m	(revision 27955)
@@ -0,0 +1,56 @@
+%HYDROLOGYPISM class definition
+%
+%   Usage:
+%      hydrologypism=hydrologypism();
+
+classdef hydrologypism
+	properties (SetAccess=public) 
+		drainage_rate   = NaN;
+		watercolumn_max = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function self = hydrologypism(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(self,varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'Watercolumn'};
+		end % }}}    
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('HydrologyPismAnalysis',analyses)
+				return;
+			end
+
+			md = checkfield(md,'fieldname','hydrology.drainage_rate','Inf',1,'NaN',1,'>=',0,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','friction.watercolumn_max','NaN',1,'Inf',1,'>',0.,'size',[md.mesh.numberofvertices 1]);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   hydrologypism solution parameters:'));
+			fielddisplay(self,'drainage_rate','fixed drainage rate [mm/yr]');
+			fielddisplay(self,'watercolumn_max','maximum water column height [m], recommended default: 2 m');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.hydrology.model','data',4,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','drainage_rate','format','DoubleMat','mattype',1,'scale',1./(1000.*yts)); %from mm/yr to m/s
+			WriteData(fid,prefix,'class','hydrology','object',self,'fieldname','watercolumn_max','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'data',{'Watercolumn'},'name','md.hydrology.requested_outputs','format','StringArray');
+		end % }}}
+	end
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologypism.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologypism.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologypism.py	(revision 27955)
@@ -0,0 +1,57 @@
+import numpy as np
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class hydrologypism(object):
+    """
+    HydrologyPism class definition
+
+    Usage:
+      hydrologypism = hydrologypism()
+    """
+
+    def __init__(self):  # {{{
+        self.drainage_rate = np.nan
+        self.watercolumn_max = np.nan
+
+        # set defaults
+        self.setdefaultparameters()
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        list = ['Watercolumn']
+        return list
+
+    def setdefaultparameters(self):  # {{{
+        return self
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+
+        #Early return
+        if 'HydrologyPismAnalysis' not in analyses:
+            return
+
+        md = checkfield(md, 'fieldname', 'hydrology.drainage_rate', 'Inf', 1, 'NaN', 1, '>=', 0, 'size', [md.mesh.numberofvertices])
+        md = checkfield(md, 'fieldname', 'friction.watercolumn_max', 'NaN', 1, 'Inf', 1, '>', 0., 'size', [md.mesh.numberofvertices])
+
+    def __repr__(self):  # {{{
+        string = '   hydrologypism solution parameters:'
+        string = "%s\n%s" % (string, fielddisplay(self, 'drainage_rate', 'fixed drainage rate [mm / yr]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'watercolumn_max', 'maximum water column height [m], recommended default: 2 m'))
+        return string
+        # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'name', 'md.hydrology.model', 'data', 4, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'drainage_rate', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / (1000. * yts))  #from mm / yr to m / s
+        WriteData(fid, prefix, 'class', 'hydrology', 'object', self, 'fieldname', 'watercolumn_max', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'data', {'Watercolumn'}, 'name', 'md.hydrology.requested_outputs', 'format', 'StringArray')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyshakti.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyshakti.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyshakti.m	(revision 27955)
@@ -0,0 +1,114 @@
+%HYDROLOGYSHAKTI class definition
+%
+%   Usage:
+%      hydrologyshakti=hydrologyshakti();
+
+classdef hydrologyshakti
+	properties (SetAccess=public) 
+		head            = NaN;
+		gap_height      = NaN;
+		bump_spacing    = NaN;
+		bump_height     = NaN;
+		englacial_input = NaN;
+		moulin_input    = NaN;
+		reynolds        = NaN;
+		spchead         = NaN;
+		neumannflux     = NaN;
+		relaxation      = 0;
+		storage         = 0;
+		requested_outputs = {};
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.head = project3d(md, 'vector', self.head , 'type', 'node');
+			self.gap_height = project3d(md, 'vector', self.gap_height, 'type', 'element');
+			self.bump_spacing = project3d(md, 'vector', self.bump_spacing, 'type', 'element');
+			self.bump_height = project3d(md, 'vector', self.bump_height, 'type', 'element');
+			self.englacial_input = project3d(md, 'vector', self.englacial_input, 'type', 'node');
+			self.moulin_input = project3d(md, 'vector', self.moulin_input, 'type', 'node');
+			self.reynolds = project3d(md, 'vector', self.reynolds, 'type', 'element');
+			self.neumannflux = project3d(md, 'vector', self.neumannflux, 'type', 'element');
+			self.spchead = project3d(md, 'vector', self.spchead, 'type', 'node');
+		end % }}}
+		function self = hydrologyshakti(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(self,varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'HydrologyHead','HydrologyGapHeight','EffectivePressure','HydrologyBasalFlux','DegreeOfChannelization'};
+		end % }}}    
+
+		function self = setdefaultparameters(self) % {{{
+			% Set under-relaxation parameter to be 1 (no under-relaxation of nonlinear iteration)	
+			self.relaxation=1;
+			self.storage=0;
+			self.requested_outputs={'default'};
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('HydrologyShaktiAnalysis',analyses)
+				return;
+			end
+
+			md = checkfield(md,'fieldname','hydrology.head','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.gap_height','>=',0,'size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.bump_spacing','>',0,'size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.bump_height','>=',0,'size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.englacial_input','>=',0,'NaN',1,'Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','hydrology.moulin_input','>=',0,'NaN',1,'Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','hydrology.reynolds','>',0,'size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.neumannflux','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.spchead','size',[md.mesh.numberofvertices 1]);	
+			md = checkfield(md,'fieldname','hydrology.relaxation','>=',0);	
+			md = checkfield(md,'fieldname','hydrology.storage','>=',0);
+			md = checkfield(md,'fieldname','hydrology.requested_outputs','stringrow',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   hydrologyshakti solution parameters:'));
+			fielddisplay(self,'head','subglacial hydrology water head (m)');
+			fielddisplay(self,'gap_height','height of gap separating ice to bed (m)');
+			fielddisplay(self,'bump_spacing','characteristic bedrock bump spacing (m)');
+			fielddisplay(self,'bump_height','characteristic bedrock bump height (m)');
+			fielddisplay(self,'englacial_input','liquid water input from englacial to subglacial system (m/yr)');
+			fielddisplay(self,'moulin_input','liquid water input from moulins (at the vertices) to subglacial system (m^3/s)');
+			fielddisplay(self,'reynolds','Reynolds'' number');
+			fielddisplay(self,'neumannflux','water flux applied along the model boundary (m^2/s)');
+			fielddisplay(self,'spchead','water head constraints (NaN means no constraint) (m)');
+			fielddisplay(self,'relaxation','under-relaxation coefficient for nonlinear iteration');
+			fielddisplay(self,'storage','englacial storage coefficient (void ratio)');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.hydrology.model','data',3,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','head','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','gap_height','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','bump_spacing','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','bump_height','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','englacial_input','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','moulin_input','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','reynolds','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','neumannflux','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','spchead','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','relaxation','format','Double');
+			WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','storage','format','Double');
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];  %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.hydrology.requested_outputs','format','StringArray');
+		end % }}}
+	end
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyshakti.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyshakti.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyshakti.py	(revision 27955)
@@ -0,0 +1,108 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class hydrologyshakti(object):
+    """
+    HYDROLOGYSHAKTI class definition
+
+       Usage:
+          hydrologyshakti = hydrologyshakti()
+    """
+
+    def __init__(self):  # {{{
+        self.head = float('NaN')
+        self.gap_height = float('NaN')
+        self.bump_spacing = float('NaN')
+        self.bump_height = float('NaN')
+        self.englacial_input = float('NaN')
+        self.moulin_input = float('NaN')
+        self.reynolds = float('NaN')
+        self.spchead = float('NaN')
+        self.neumannflux = float('NaN')
+        self.relaxation = 0
+        self.storage = 0
+        self.requested_outputs = []
+
+    #set defaults
+        self.setdefaultparameters()
+
+    # }}}
+    def __repr__(self):  # {{{
+        string = '   hydrologyshakti solution parameters:'
+        string = "%s\n%s" % (string, fielddisplay(self, 'head', 'subglacial hydrology water head (m)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'gap_height', 'height of gap separating ice to bed (m)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'bump_spacing', 'characteristic bedrock bump spacing (m)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'bump_height', 'characteristic bedrock bump height (m)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'englacial_input', 'liquid water input from englacial to subglacial system (m / yr)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'moulin_input', 'liquid water input from moulins (at the vertices) to subglacial system (m^3 / s)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'reynolds', 'Reynolds'' number'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'neumannflux', 'water flux applied along the model boundary (m^2 / s)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'spchead', 'water head constraints (NaN means no constraint) (m)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'relaxation', 'under - relaxation coefficient for nonlinear iteration'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'storage', 'englacial storage coefficient (void ratio)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        return string
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Set under - relaxation parameter to be 1 (no under - relaxation of nonlinear iteration)
+        self.relaxation = 1
+        self.storage = 0
+        self.requested_outputs = ['default']
+        return self
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        list = ['HydrologyHead', 'HydrologyGapHeight', 'EffectivePressure', 'HydrologyBasalFlux', 'DegreeOfChannelization']
+        return list
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        #Early return
+        if 'HydrologyShaktiAnalysis' not in analyses:
+            return md
+
+        md = checkfield(md, 'fieldname', 'hydrology.head', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'hydrology.gap_height', '>=', 0, 'size', [md.mesh.numberofelements], 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'hydrology.bump_spacing', '>', 0, 'size', [md.mesh.numberofelements], 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'hydrology.bump_height', '>=', 0, 'size', [md.mesh.numberofelements], 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'hydrology.englacial_input', '>=', 0, 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'hydrology.moulin_input', '>=', 0, 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'hydrology.reynolds', '>', 0, 'size', [md.mesh.numberofelements], 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'hydrology.neumannflux', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'hydrology.spchead', 'size', [md.mesh.numberofvertices])
+        md = checkfield(md, 'fieldname', 'hydrology.relaxation', '>=', 0)
+        md = checkfield(md, 'fieldname', 'hydrology.storage', '>=', 0)
+        md = checkfield(md, 'fieldname', 'hydrology.requested_outputs', 'stringrow', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'name', 'md.hydrology.model', 'data', 3, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'head', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'gap_height', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'bump_spacing', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'bump_height', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'englacial_input', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'moulin_input', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'reynolds', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'neumannflux', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'spchead', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'relaxation', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'hydrology', 'fieldname', 'storage', 'format', 'Double')
+    #process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.hydrology.requested_outputs', 'format', 'StringArray')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyshreve.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyshreve.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyshreve.js	(revision 27955)
@@ -0,0 +1,74 @@
+class hydrologyshreve {//{{{
+	/**
+	 * HYDROLOGYSHREVE class definition
+	 *
+	 * Usage:
+	 *     hydrologyshreve = hydrologyshreve();
+	 */
+	constructor() {//{{{
+		this.spcwatercolumn = NaN;
+		this.stabilization = 0;
+		this.requested_outputs = [];
+
+		if (arguments.length == 0) {
+			this.setdefaultparameters();
+		} else {
+			error('constructor not supported');
+		}
+	} //}}}
+
+	disp() {//{{{
+		console.log(sprintf('   hydrologyshreve solution parameters:'));
+		fielddisplay(this, 'spcwatercolumn', 'water thickness constraints (NaN means no constraint) [m]');
+		fielddisplay(this, 'stabilization', 'artificial diffusivity (default: 1). can be more than 1 to increase diffusivity.');
+		fielddisplay(this, 'requested_outputs', 'additional outputs requested');
+	} //}}}
+
+	setdefaultparameters() {//{{{
+		// Type of stabilization to use 0:nothing 1:artificial_diffusivity
+		this.stabilization = 1;
+		this.requested_outputs = ['default'];
+	} //}}}
+
+	checkconsistency(md, solution, analyses) {//{{{
+		// Early return
+		if (!analyses.contains('HydrologyShreveAnalysis') || (solution == 'TransientSolution' && !md.transient.ishydrology)) {
+			return md;
+		}
+		md = checkfield(md, 'fieldname', 'hydrology.spcwatercolumn', 'Inf', 1, 'timeseries', 1);
+		md = checkfield(md, 'fieldname', 'hydrology.stabilization', '>=', 0);
+		return md;
+	} //}}}
+
+	defaultoutputs(md) {//{{{
+		return ['Watercolumn', 'HydrologyWaterVx', 'HydrologyWaterVy'];
+	} //}}}
+
+	marshall(md, prefix, fid) {//{{{
+		WriteData(fid, prefix, 'name', 'md.hydrology.model', 'data', 2, 'format', 'Integer');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'spcwatercolumn', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts);
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'stabilization', 'format', 'Double');
+
+		// Process requested outputs
+		let outputs = this.requested_outputs;
+		let pos = find(ismember(outputs, 'default'));
+		if (pos.length) {
+			/*
+			NOTE: In order to handle case where user has added 'default' more 
+			than once to this.requested_outputs, need to remove elements by 
+			index in reverse order.
+			*/
+			for (let i = (pos.length - 1); i >= 0; --i) {
+				outputs.splice(pos[i], 1);
+			}
+			let default_outputs = this.defaultoutputs(md);
+			for (let i = 0; i < default_outputs.length; ++i) {
+				outputs.push(default_outputs[i]);
+			}
+		}
+		WriteData(fid, prefix, 'data', outputs, 'name', 'md.hydrology.requested_outputs', 'format', 'StringArray');
+	} //}}}
+
+	extrude(md) {//{{{
+	} //}}}
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyshreve.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyshreve.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyshreve.m	(revision 27955)
@@ -0,0 +1,68 @@
+%HYDROLOGYSHREVE class definition
+%
+%   Usage:
+%      hydrologyshreve=hydrologyshreve();
+
+classdef hydrologyshreve
+	properties (SetAccess=public) 
+		spcwatercolumn     = NaN;
+		stabilization      = 0;
+		requested_outputs  = {};
+	end
+	methods
+		function self = hydrologyshreve(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(self,varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   hydrologyshreve solution parameters:'));
+			fielddisplay(self,'spcwatercolumn','water thickness constraints (NaN means no constraint) [m]');
+			fielddisplay(self,'stabilization','artificial diffusivity (default: 1). can be more than 1 to increase diffusivity.');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Type of stabilization to use 0:nothing 1:artificial_diffusivity
+			self.stabilization     = 1;
+			self.requested_outputs = {'default'};
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if ~ismember('HydrologyShreveAnalysis',analyses) | (strcmp(solution,'TransientSolution') & md.transient.ishydrology==0), return; end
+
+			md = checkfield(md,'fieldname','hydrology.spcwatercolumn','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','hydrology.stabilization','>=',0);
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'Watercolumn','HydrologyWaterVx','HydrologyWaterVy'};
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.hydrology.model','data',2,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Double');
+			outputs = self.requested_outputs;
+			pos = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = []; %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.hydrology.requested_outputs','format','StringArray');
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.hydrology.spcwatercolumn'],self.spcwatercolumn);
+			writejsdouble(fid,[modelname '.hydrology.stabilization'],self.stabilization);
+
+		end % }}}
+	end
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyshreve.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyshreve.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologyshreve.py	(revision 27955)
@@ -0,0 +1,71 @@
+import numpy as np
+
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class hydrologyshreve(object):
+    """HYDROLOGYSHREVE class definition
+
+    Usage:
+        hydrologyshreve = hydrologyshreve()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.spcwatercolumn = np.nan
+        self.stabilization = 0
+        self.requested_outputs = []
+
+        nargs = len(args)
+        if nargs == 0:
+            self.setdefaultparameters()
+        elif nargs == 1:
+            self.setdefaultparameters(args)
+        else:
+            raise RuntimeError('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   hydrologyshreve solution parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'spcwatercolumn', 'water thickness constraints (NaN means no constraint) [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'stabilization', 'artificial diffusivity (default: 1). can be more than 1 to increase diffusivity.'))
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Type of stabilization to use 0:nothing 1:artificial_diffusivity
+        self.stabilization = 1
+        self.requested_outputs = ['default']
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        #Early return
+        if 'HydrologyShreveAnalysis' not in analyses or (solution == 'TransientSolution' and not md.transient.ishydrology):
+            return md
+
+        md = checkfield(md, 'fieldname', 'hydrology.spcwatercolumn', 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'hydrology.stabilization', '>=', 0)
+        return md
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['Watercolumn', 'HydrologyWaterVx', 'HydrologyWaterVy']
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'name', 'md.hydrology.model', 'data', 2, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'spcwatercolumn', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'stabilization', 'format', 'Double')
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices):
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.hydrology.requested_outputs', 'format', 'StringArray')
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologytws.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologytws.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologytws.m	(revision 27955)
@@ -0,0 +1,63 @@
+%HYDROLOGYTWS class definition
+%
+%   Usage:
+%      hydrologytws=hydrologytws();
+
+classdef hydrologytws
+	properties (SetAccess=public) 
+		spcwatercolumn     = NaN;
+		requested_outputs  = {};
+	end
+	methods
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function self = hydrologytws(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(self,varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {''};
+		end % }}}
+
+		function self = setdefaultparameters(self) % {{{
+			self.requested_outputs = {'default'};
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('HydrologyTwsAnalysis',analyses)
+				return;
+			end
+			md = checkfield(md,'fieldname','hydrology.spcwatercolumn','Inf',1,'timeseries',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   hydrologytws solution parameters:'));
+			fielddisplay(self,'spcwatercolumn','water thickness constraints (NaN means no constraint) [m]');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.hydrology.model','data',6,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];  %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.hydrology.requested_outputs','format','StringArray');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			writejs1Darray(fid,[modelname '.hydrology.spcwatercolumn'],self.spcwatercolumn);
+
+		end % }}}
+	end
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologytws.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologytws.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/hydrologytws.py	(revision 27955)
@@ -0,0 +1,64 @@
+import numpy as np
+
+from structtoobj import structtoobj
+
+class hydrologytws(object):
+    """HYDROLOGYTWS class definition
+
+    Usage:
+        hydrologytws = hydrologytws()
+    """
+
+    def __init__(self):  # {{{
+        self.spcwatercolumn = np.nan
+        self.requested_outputs = np.nan
+
+        nargs = len(args)
+        if nargs == 0:
+            self.setdefaultparameters()
+        elif nargs == 1:
+            self = structtoobj(self, args[0])
+        else:
+            raise RuntimeError('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   hydrologytws solution parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'spcwatercolumn', 'water thickness constraints (NaN means no constraint) [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        return s
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['']
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.requested_outputs = ['defualt']
+        return self
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if 'HydrologyTwsAnalysis' not in analyses:
+            return
+        md = checkfield(md, 'fieldname', 'hydrology.spcwatercolumn', 'Inf', 1, 'timeseries', 1)
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'name', 'md.hydrology.model', 'data', 6, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'spcwatercolumn', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        outputs = self.requested_outputs
+        pos  = find(ismember(outputs,'default'))
+        if not len(pos):
+            outputs[pos] = [];  # remove 'default' from outputs
+            outputs.extend(defaultoutputs(self, md)) # add defaults
+        end
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.hydrology.requested_outputs', 'format', 'StringArray')
+    # }}}
+
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/independent.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/independent.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/independent.m	(revision 27955)
@@ -0,0 +1,91 @@
+%INDEPENDENT class definition
+%
+%   Usage:
+%      independent=independent();
+
+classdef independent
+	properties (SetAccess=public) 
+		name			               = '';
+		type					         = '';
+		fos_forward_index			   = NaN;
+		fov_forward_indices			= [];
+		nods								= 0;
+		min_parameters					= NaN;
+		max_parameters					= NaN;
+		control_scaling_factor     = NaN;
+		control_size					= 0;
+
+	end
+	methods
+		function self = independent(varargin) % {{{
+
+			%use provided options to change fields
+			options=pairoptions(varargin{:});
+
+			%OK get other fields
+			self=AssignObjectFields(pairoptions(varargin{:}),self);
+
+			if(self.control_size == 0)
+				self.control_size = 1;
+			end
+
+
+		end
+		%}}}
+		function self = setdefaultparameters(self) % {{{
+			%do nothing
+
+		end % }}}
+		function md = checkconsistency(self,md,i,solution,analyses,driver) % {{{
+			if ~isnan(self.fos_forward_index),
+				if ~strcmpi(driver,'fos_forward'),
+					error('cannot declare an independent with a fos_forward_index when the driver is not fos_forward!');
+				end
+				if self.nods==0,
+					error('independent checkconsistency error: nods should be set to the size of the independent variable');
+				end
+			end
+
+			if ~isempty(self.fov_forward_indices),
+				if ~strcmpi(driver,'fov_forward'),
+					error('cannot declare an independent with fov_forward_indices when the driver is not fov_forward!');
+				end
+				if self.nods==0,
+					error('independent checkconsistency error: nods should be set to the size of the independent variable');
+				end
+				md = checkfield(md,'fieldname',['autodiff.independents{' num2str(i) '}.fov_forward_indices'],'>=',1,'<=',self.nods,'size',[NaN 1]);
+				%md = checkfield(md,'fieldname',['autodiff.independents{' num2str(i) '}.min_parameters'],'size',[md.mesh.numberofvertices 1]);
+				%md = checkfield(md,'fieldname',['autodiff.independents{' num2str(i) '}.max_parameters'],'size',[md.mesh.numberofvertices 1]);
+				%md = checkfield(md,'fieldname',['autodiff.independents{' num2str(i) '}.control_scaling_factors'],'size',[1 1],'>',0,'NaN',1,'Inf',1);
+
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   independent variable:'));
+
+			fielddisplay(self,'name','variable name (must match corresponding String)');
+			fielddisplay(self,'type','type of variable (''vertex'' or ''scalar'')');
+			fielddisplay(self,'nods','size of independent variables');
+			fielddisplay(self,'control_size','number of timesteps');
+			fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'control_scaling_factor','order of magnitude of each control (useful for multi-parameter optimization)');
+			if ~isnan(self.fos_forward_index),
+				fielddisplay(self,'fos_forward_index','index for fos_foward driver of ADOLC');
+			end
+			if ~isnan(self.fov_forward_indices),
+				fielddisplay(self,'fov_forward_indices','indices for fov_foward driver of ADOLC');
+			end
+		end % }}}
+		function scalartype=typetoscalar(self) % {{{
+			if strcmpi(self.type,'scalar'),
+				scalartype=0;
+			elseif strcmpi(self.type,'vertex'),
+				scalartype=1;
+			elseif strcmpi(self.type,'matrix'),
+				scalartype=1;
+			else error([self.type ' not supported yet!']);
+			end
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/independent.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/independent.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/independent.py	(revision 27955)
@@ -0,0 +1,90 @@
+import numpy as np
+from pairoptions import pairoptions
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from MatlabFuncs import *
+
+
+class independent(object):
+    """independent class definition
+
+    Usage:
+        independent = independent()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.name = ''
+        self.type = ''
+        self.fos_forward_index = np.nan
+        self.fov_forward_indices = np.array([])
+        self.nods = 0
+        self.min_parameters = np.nan
+        self.max_parameters = np.nan
+        self.control_scaling_factor = np.nan
+        self.control_size = 0
+
+        # Set defaults
+        self.setdefaultparameters()
+
+        # Use provided options to change fields
+        options = pairoptions(*args)
+
+        # Get other fields
+        self = options.AssignObjectFields(self)
+
+        if self.control_size == 0:
+            self.control_size = 1
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   independent variable:\n'
+
+        s += '{}\n'.format(fielddisplay(self, 'name', 'variable name (must match corresponding String)'))
+        s += '{}\n'.format(fielddisplay(self, 'type', 'type of variable (\'vertex\' or \'scalar\')'))
+        s += '{}\n'.format(fielddisplay(self, 'nods', 'size of independent variables'))
+        s += '{}\n'.format(fielddisplay(self, 'control_size', 'number of timesteps'))
+        s += '{}\n'.format(fielddisplay(self, 'min_parameters', 'absolute minimum acceptable value of the inversed parameter on each vertex'))
+        s += '{}\n'.format(fielddisplay(self, 'max_parameters', 'absolute maximum acceptable value of the inversed parameter on each vertex'))
+        s += '{}\n'.format(fielddisplay(self, 'control_scaling_factor', 'order of magnitude of each control (useful for multi-parameter optimization)'))
+        if not np.isnan(self.fos_forward_index):
+            s += '{}\n'.format(fielddisplay(self, 'fos_forward_index', 'index for fos_foward driver of ADOLC'))
+        if np.any(np.logical_not(np.isnan(self.fov_forward_indices))):
+            s += '{}\n'.format(fielddisplay(self, 'fov_forward_indices', 'indices for fov_foward driver of ADOLC'))
+
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Do nothing
+        return self
+    # }}}
+
+    def checkconsistency(self, md, i, solution, analyses, driver):  # {{{
+        if not np.isnan(self.fos_forward_index):
+            if not strcmpi(driver, 'fos_forward'):
+                raise TypeError('cannot declare an independent with a fos_forward_index when the driver is not fos_forward!')
+            if self.nods == 0:
+                raise TypeError('independent checkconsistency error: nods should be set to the size of the independent variable')
+
+        if len(self.fov_forward_indices) > 0:
+            if not strcmpi(driver, 'fov_forward'):
+                raise TypeError('cannot declare an independent with fov_forward_indices when the driver is not fov_forward!')
+            if self.nods == 0:
+                raise TypeError('independent checkconsistency error: nods should be set to the size of the independent variable')
+            md = checkfield(md, 'fieldname', 'autodiff.independents[%d].fov_forward_indices' % i, '>=', 1, '<=', self.nods)
+
+        return md
+    # }}}
+
+    def typetoscalar(self):  # {{{
+        if strcmpi(self.type, 'scalar'):
+            scalartype = 0
+        elif strcmpi(self.type, 'vertex'):
+            scalartype = 1
+        elif strcmpi(self.type, 'matrix'):
+            scalartype = 1
+        else:
+            raise TypeError('{} not supported yet!'.format(self.type))
+
+        return scalartype
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/initialization.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/initialization.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/initialization.js	(revision 27955)
@@ -0,0 +1,207 @@
+//INITIALIZATION class definition
+//
+//   Usage:
+//      initialization=new initialization();
+
+function initialization (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   initial field values:'));
+
+		fielddisplay(this,'vx','x component of velocity [m/yr]');
+		fielddisplay(this,'vy','y component of velocity [m/yr]');
+		fielddisplay(this,'vz','z component of velocity [m/yr]');
+		fielddisplay(this,'vel','velocity norm [m/yr]');
+		fielddisplay(this,'pressure','pressure field [Pa]');
+		fielddisplay(this,'temperature','temperature [K]');
+		fielddisplay(this,'enthalpy','enthalpy [J]');
+		fielddisplay(this,'waterfraction','fraction of water in the ice');
+		fielddisplay(this,'sediment_head','sediment water head of subglacial system [m]');
+		fielddisplay(this,'epl_head','epl water head of subglacial system [m]');
+		fielddisplay(this,'epl_thickness','epl layer thickness [m]');
+		fielddisplay(this,'watercolumn','subglacial water sheet thickness (for Shreve and GlaDS) [m]');
+		fielddisplay(this,'hydraulic_potential','Hydraulic potential (for GlaDS) [Pa]');
+		fielddisplay(this,'channelarea','subglacial water channel area (for GlaDS) [m2]');
+		fielddisplay(this,'sample','Realization of a Gaussian random field');
+		fielddisplay(this,'bottompressure','Bottom pressures');
+		fielddisplay(this,'dsl','Dynamic sea level.');
+		fielddisplay(this,'str','Steric sea level.');
+
+	}// }}}
+    this.extrude = function(md) {//{{{
+        this.vx=project3d(md,'vector',this.vx,'type','node');
+        this.vy=project3d(md,'vector',this.vy,'type','node');
+        this.vz=project3d(md,'vector',this.vz,'type','node');
+        this.vel=project3d(md,'vector',this.vel,'type','node');
+        this.temperature=project3d(md,'vector',this.temperature,'type','node');
+        this.waterfraction=project3d(md,'vector',this.waterfraction,'type','node');
+        this.watercolumn=project3d(md,'vector',this.watercolumn,'type','node','layer',1);
+        this.sediment_head=project3d(md,'vector',this.sediment_head,'type','node','layer',1);
+        this.epl_head=project3d(md,'vector',this.epl_head,'type','node','layer',1);
+        this.epl_thickness=project3d(md,'vector',this.epl_thickness,'type','node','layer',1);
+
+        //Lithostatic pressure by default
+        this.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.z);
+        return this;
+    }//}}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+			if(ArrayAnyEqual(ArrayIsMember('StressbalanceAnalysis',analyses),1)){
+				if (!(isNaN(md.initialization.vx) | isNaN(md.initialization.vy))){
+					checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+					checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				}
+			}
+			if(ArrayAnyEqual(ArrayIsMember('MasstransportAnalysis',analyses),1)){
+				checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			}
+			if(ArrayAnyEqual(ArrayIsMember('OceantransportAnalysis',analyses),1)){
+				if (strcmp(solution,'TransientSolution') && md.transient.isslc && md.transient.isoceantransport) {
+					checkfield(md,'fieldname','initialization.bottompressure','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+					checkfield(md,'fieldname','initialization.dsl','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+					checkfield(md,'fieldname','initialization.str','NaN',1,'Inf',1,'size',[1, 1]);
+				}
+			}
+			if(ArrayAnyEqual(ArrayIsMember('BalancethicknessSolution',analyses),1) & (solution=='BalancethicknessSolution')){
+				checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				//Triangle with zero velocity
+				for(var i=0;i<md.mesh.numberofelements;i++){
+					var sum=0;
+					for(var j=0;j<md.mesh.elements[0].length;j++){
+						if  ((md.initialization.vx[md.mesh.elements[i][j]-1]==0) & (md.initialization.vy[md.mesh.elements[i][j]-1]==0)) sum+=1;
+					}
+					if (sum==md.mesh.elements[0].length){
+						md.checkmessage('at least one triangle has all its vertices with a zero velocity');
+					}
+				}
+			}
+			if ((ArrayAnyEqual(ArrayIsMember('ThermalAnalysis',analyses),1)) && !strcmp(solution,'TransientSolution') && md.transient.isthermal == 0){
+				checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				if (md.mesh.dimension()==3) {
+					checkfield(md,'fieldname','initialization.vz','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				}
+				checkfield(md,'fieldname','initialization.pressure','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','initialization.temperature','NaN',1,'Inf',1,'size','universal');
+			}
+			if (ArrayAnyEqual(ArrayIsMember('EnthalpyAnalysis',analyses),1) && md.thermal.isenthalpy){
+				checkfield(md,'fieldname','initialization.waterfraction','>=',0,'size','universal');
+				checkfield(md,'fieldname','initialization.watercolumn'  ,'>=',0,'size','universal');
+			}
+			if (ArrayAnyEqual(ArrayIsMember('HydrologyShreveAnalysis',analyses),1)){
+				if (md.hydrology.type() == 'hydrologyshreve'){
+					checkfield(md,'fieldname','initialization.watercolumn','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+				}
+			}
+			if (ArrayAnyEqual(ArrayIsMember('HydrologyTwsAnalysis',analyses),1)){
+				if (md.hydrology.type() == 'hydrologytws'){
+					checkfield(md,'fieldname','initialization.watercolumn','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+				}
+			}
+			if (ArrayAnyEqual(ArrayIsMember('SealevelchangeAnalysis',analyses),1)){
+				if (strcmp(solution,'TransientSolution') && md.transient.isslc) {
+					checkfield(md,'fieldname','initialization.sealevel','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				}
+			}
+			if (ArrayAnyEqual(ArrayIsMember('HydrologyGlaDSAnalysis',analyses),1)){
+				if (md.hydrology.type() == 'hydrologyglads'){
+					checkfield(md,'fieldname','initialization.watercolumn','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+					checkfield(md,'fieldname','initialization.hydraulic_potential','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+					checkfield(md,'fieldname','initialization.channelarea','NaN',1,'Inf',1,'>=',0,'size',[md.mesh.numberofedges, 1]);
+				}
+			}
+			if (ArrayAnyEqual(ArrayIsMember('HydrologyDCInefficientAnalysis',analyses),1)){
+				if (md.hydrology.type() == 'hydrologydc'){
+					checkfield(md,'fieldname','initialization.sediment_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				}
+			}
+			if (ArrayAnyEqual(ArrayIsMember('HydrologyDCEfficientAnalysis',analyses),1)){
+				if (md.hydrology.type() == 'hydrologydc'){
+					if (md.hydrology.isefficientlayer==1){
+						checkfield(md,'fieldname','initialization.epl_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+						checkfield(md,'fieldname','initialization.epl_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+					}
+				}
+			}
+			if (ArrayAnyEqual(ArrayIsMember('SamplingAnalysis',analyses),1) && !strcmp(solution,'TransientSolution')&& md.transient.issampling == 0){
+				if (!isNaN(md.initialization.sample)) {
+					checkfield(md,'fieldname','initialization.sample','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				}
+			}
+		} //}}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',this,'fieldname','vx','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',this,'fieldname','vy','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',this,'fieldname','vz','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',this,'fieldname','pressure','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','sealevel','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',this,'fieldname','bottompressure','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','str','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','dsl','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','temperature','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','waterfraction','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','sediment_head','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','epl_head','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','epl_thickness','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','watercolumn','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','channelarea','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','hydraulic_potential','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','sample','format','DoubleMat','mattype',1);
+
+			if (md.thermal.isenthalpy){
+				let enthalpy;
+				if (isNaN(self.enthalpy) && this.enthalpy.length <= 1) {
+					tpmp=NewArrayFill(md.mesh.numberofvertices,0);
+					for (var i=0;i<md.mesh.numberofvertices;i++) tpmp[i]= md.materials.meltingpoint - md.materials.beta*md.initialization.pressure[i];
+					enthalpy=NewArrayFill(md.mesh.numberofvertices,0); 
+					for (var i=0;i<md.mesh.numberofvertices;i++)enthalpy[i] = md.materials.heatcapacity*(md.initialization.temperature[i]-md.constants.referencetemperature);
+					for (var i=0;i<md.mesh.numberofvertices;i++)if(md.initialization.temperature[i]>=tpmp[i]){
+						enthalpy[i] = md.materials.heatcapacity*(tpmp[i] - md.constants.referencetemperature) + md.materials.latentheat*md.initialization.waterfraction[i];
+					}
+				} else {
+					enthalpy = this.enthalpy;
+				}
+				WriteData(fid,prefix,'data',enthalpy,'format','DoubleMat','mattype',1,'name','md.initialization.enthalpy');
+			}
+		}//}}}
+		this.fix=function(md) { //{{{
+			this.vx=FloatFix(this.vx,md.mesh.numberofvertices); 
+			this.vy=FloatFix(this.vx,md.mesh.numberofvertices); 
+			this.vy=FloatFix(this.vx,md.mesh.numberofvertices); 
+			this.waterfraction=NullFix(this.waterfraction,NaN);
+			this.sediment_head=NullFix(this.sediment_head,NaN);
+			this.epl_head=NullFix(this.epl_head,NaN);
+			this.epl_thickness=NullFix(this.epl_thickness,NaN);
+			this.watercolumn=NullFix(this.watercolumn,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.vx                  = NaN;
+	this.vy                  = NaN;
+	this.vz                  = NaN;
+	this.vel                 = NaN;
+	this.pressure            = NaN;
+	this.temperature         = NaN;
+	this.enthalpy            = NaN;
+	this.waterfraction       = NaN;
+	this.sediment_head       = NaN;
+	this.epl_head            = NaN;
+	this.epl_thickness       = NaN;
+	this.watercolumn         = NaN;
+	this.hydraulic_potential = NaN;
+	this.channelarea         = NaN;
+	this.sealevel            = NaN;
+	this.bottompressure      = NaN;
+	this.dsl                 = NaN;
+	this.str                 = NaN;
+	this.sample              = NaN;
+	this.setdefaultparameters();
+
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/initialization.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/initialization.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/initialization.m	(revision 27955)
@@ -0,0 +1,243 @@
+%INITIALIZATION class definition
+%
+%   Usage:
+%      initialization=initialization();
+
+classdef initialization
+	properties (SetAccess=public) 
+		vx                  = NaN;
+		vy                  = NaN;
+		vz                  = NaN;
+		vel                 = NaN;
+		pressure            = NaN;
+		temperature         = NaN;
+		enthalpy            = NaN;
+		waterfraction       = NaN;
+		sediment_head       = NaN;
+		epl_head            = NaN;
+		epl_thickness       = NaN;
+		watercolumn         = NaN;
+		hydraulic_potential = NaN;
+		channelarea         = NaN;
+		sealevel            = NaN;
+		bottompressure      = NaN;
+		dsl                 = NaN;
+		str                 = NaN;
+		sample              = NaN;
+		debris              = NaN;
+		age                 = NaN;
+	end
+	methods
+		function self = initialization(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			if ismember('StressbalanceAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.isstressbalance == 0),
+				if numel(md.initialization.vx)>1 | numel(md.initialization.vy)>1
+					md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+					md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				end
+			end
+			if ismember('MasstransportAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.ismasstransport == 0),
+				md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			end
+			if ismember('OceantransportAnalysis',analyses) 
+				if strcmp(solution,'TransientSolution') & md.transient.isslc & md.transient.isoceantransport,
+					md = checkfield(md,'fieldname','initialization.bottompressure','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+					md = checkfield(md,'fieldname','initialization.dsl','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+					md = checkfield(md,'fieldname','initialization.str','NaN',1,'Inf',1,'size',[1 1]);
+				end
+			end
+			if ismember('BalancethicknessAnalysis',analyses) & strcmp(solution,'BalancethicknessSolution'),
+				md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				%Triangle with zero velocity
+				if any(sum(abs(md.initialization.vx(md.mesh.elements)),2)==0 & sum(abs(md.initialization.vy(md.mesh.elements)),2)==0 & min(md.mask.ice_levelset(md.mesh.elements),[],2)<0)
+					md = checkmessage(md,'at least one triangle has all its vertices with a zero velocity');
+				end
+			end
+			if ismember('ThermalAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.isthermal == 0),
+				md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				if dimension(md.mesh)==3
+					md = checkfield(md,'fieldname','initialization.vz','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				end
+				md = checkfield(md,'fieldname','initialization.pressure','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','initialization.temperature','NaN',1,'Inf',1,'size','universal');
+			end
+			if (ismember('EnthalpyAnalysis',analyses) & md.thermal.isenthalpy)
+				md = checkfield(md,'fieldname','initialization.waterfraction','>=',0,'size','universal');
+				md = checkfield(md,'fieldname','initialization.watercolumn'  ,'>=',0,'size','universal');
+				pos=find(md.initialization.waterfraction>0.);
+				if(~isempty(pos)),
+					%md = checkfield(md,'fieldname', 'delta Tpmp', 'field',abs(md.initialization.temperature(pos)-(md.materials.meltingpoint-md.materials.beta*md.initialization.pressure(pos))),'<',1e-11,...
+					%'message','set temperature to pressure melting point at locations with waterfraction>0');
+				end
+			end
+			if ismember('HydrologyShreveAnalysis',analyses),
+				if isa(md.hydrology,'hydrologyshreve'),
+					if (strcmp(solution,'TransientSolution') & md.transient.ishydrology) | strcmp(solution,'HydrologySolution'),
+						md = checkfield(md,'fieldname','initialization.watercolumn','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+					end
+				end
+			end
+			if ismember('HydrologyTwsAnalysis',analyses),
+				if isa(md.hydrology,'hydrologytws'),
+					md = checkfield(md,'fieldname','initialization.watercolumn','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				end
+			end
+			if ismember('SealevelchangeAnalysis',analyses),
+				if strcmp(solution,'TransientSolution') & md.transient.isslc,
+					md = checkfield(md,'fieldname','initialization.sealevel','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				end
+			end
+			if ismember('HydrologyGlaDSAnalysis',analyses),
+				if isa(md.hydrology,'hydrologyglads'),
+					md = checkfield(md,'fieldname','initialization.watercolumn','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+					md = checkfield(md,'fieldname','initialization.hydraulic_potential','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+					md = checkfield(md,'fieldname','initialization.channelarea','NaN',1,'Inf',1,'>=',0,'size',[md.mesh.numberofedges 1]);
+				end
+			end
+			if ismember('HydrologyDCInefficientAnalysis',analyses),
+				if isa(md.hydrology,'hydrologydc'),
+					md = checkfield(md,'fieldname','initialization.sediment_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				end
+			end
+			if ismember('HydrologyDCEfficientAnalysis',analyses),
+				if isa(md.hydrology,'hydrologydc'),
+					if md.hydrology.isefficientlayer==1,
+						md = checkfield(md,'fieldname','initialization.epl_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+						md = checkfield(md,'fieldname','initialization.epl_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+					end
+				end
+			end
+			if ismember('SamplingAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.issampling == 0),
+				if ~isnan(md.initialization.sample)
+					md = checkfield(md,'fieldname','initialization.sample','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				end
+			end
+			if ismember('DebrisAnalysis',analyses),
+				if ~isnan(md.initialization.debris)
+					md = checkfield(md,'fieldname','initialization.debris','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				end
+			end
+			if ismember('AgeAnalysis',analyses),
+				if ~isnan(md.initialization.age)
+					md = checkfield(md,'fieldname','initialization.age','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				end
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   initial field values:'));
+
+			fielddisplay(self,'vx','x component of velocity [m/yr]');
+			fielddisplay(self,'vy','y component of velocity [m/yr]');
+			fielddisplay(self,'vz','z component of velocity [m/yr]');
+			fielddisplay(self,'vel','velocity norm [m/yr]');
+			fielddisplay(self,'pressure','pressure field [Pa]');
+			fielddisplay(self,'temperature','temperature [K]');
+			fielddisplay(self,'enthalpy','enthalpy [J]');
+			fielddisplay(self,'waterfraction','fraction of water in the ice');
+			fielddisplay(self,'sediment_head','sediment water head of subglacial system [m]');
+			fielddisplay(self,'epl_head','epl water head of subglacial system [m]');
+			fielddisplay(self,'epl_thickness','epl layer thickness [m]');
+			fielddisplay(self,'watercolumn','subglacial water sheet thickness (for Shreve and GlaDS) [m]');
+			fielddisplay(self,'hydraulic_potential','Hydraulic potential (for GlaDS) [Pa]');
+			fielddisplay(self,'channelarea','subglacial water channel area (for GlaDS) [m2]');
+			fielddisplay(self,'sample','Realization of a Gaussian random field');
+			fielddisplay(self,'bottompressure','Bottom pressures');
+			fielddisplay(self,'dsl','Dynamic sea level.');
+			fielddisplay(self,'str','Steric sea level.');
+			fielddisplay(self,'debris','Surface debris layer [m]');
+			fielddisplay(self,'age','Initial age [yr]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'fieldname','vx','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid,prefix,'object',self,'fieldname','vy','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid,prefix,'object',self,'fieldname','vz','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'fieldname','pressure','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','sealevel','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid,prefix,'object',self,'fieldname','bottompressure','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','str','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','dsl','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','temperature','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','waterfraction','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','sediment_head','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','epl_head','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','epl_thickness','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','watercolumn','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','channelarea','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','hydraulic_potential','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','sample','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','debris','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','age','format','DoubleMat','mattype',1,'scale',yts);
+
+			if md.thermal.isenthalpy,
+				if numel(self.enthalpy) <= 1,
+					%reconstruct enthalpy
+					tpmp = md.materials.meltingpoint - md.materials.beta*md.initialization.pressure;
+					pos  = find(md.initialization.waterfraction>0.);
+					enthalpy      = md.materials.heatcapacity*(md.initialization.temperature-md.constants.referencetemperature);
+					enthalpy(pos) = md.materials.heatcapacity*(tpmp(pos) - md.constants.referencetemperature) + md.materials.latentheat*md.initialization.waterfraction(pos);
+				else
+					enthalpy = self.enthalpy;
+				end
+				WriteData(fid,prefix,'data',enthalpy,'format','DoubleMat','mattype',1,'name','md.initialization.enthalpy');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.vx=project3d(md,'vector',self.vx,'type','node');
+			self.vy=project3d(md,'vector',self.vy,'type','node');
+			self.vz=project3d(md,'vector',self.vz,'type','node');
+			self.vel=project3d(md,'vector',self.vel,'type','node');
+			self.temperature=project3d(md,'vector',self.temperature,'type','node');
+			self.enthalpy=project3d(md,'vector',self.enthalpy,'type','node');
+			self.waterfraction=project3d(md,'vector',self.waterfraction,'type','node');
+			self.watercolumn=project3d(md,'vector',self.watercolumn,'type','node','layer',1);
+			self.sediment_head=project3d(md,'vector',self.sediment_head,'type','node','layer',1);
+			self.epl_head=project3d(md,'vector',self.epl_head,'type','node','layer',1);
+			self.epl_thickness=project3d(md,'vector',self.epl_thickness,'type','node','layer',1);
+			self.sealevel=project3d(md,'vector',self.sealevel,'type','node','layer',1);
+			self.bottompressure=project3d(md,'vector',self.bottompressure,'type','node','layer',1);
+			self.dsl=project3d(md,'vector',self.dsl,'type','node','layer',1);
+			self.str=project3d(md,'vector',self.str,'type','node','layer',1);
+			self.str=project3d(md,'vector',self.debris,'type','node','layer',1);
+			self.str=project3d(md,'vector',self.age,'type','node','layer',1);
+
+			%Lithostatic pressure by default
+			self.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.z);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			writejs1Darray(fid,[modelname '.initialization.vx'],self.vx);
+			writejs1Darray(fid,[modelname '.initialization.vy'],self.vy);
+			writejs1Darray(fid,[modelname '.initialization.vz'],self.vz);
+			writejs1Darray(fid,[modelname '.initialization.vel'],self.vel);
+			writejs1Darray(fid,[modelname '.initialization.pressure'],self.pressure);
+			writejs1Darray(fid,[modelname '.initialization.temperature'],self.temperature);
+			writejs1Darray(fid,[modelname '.initialization.enthalpy'],self.enthalpy);
+			writejs1Darray(fid,[modelname '.initialization.waterfraction'],self.waterfraction);
+			writejs1Darray(fid,[modelname '.initialization.sediment_head'],self.sediment_head);
+			writejs1Darray(fid,[modelname '.initialization.epl_head'],self.epl_head);
+			writejs1Darray(fid,[modelname '.initialization.epl_thickness'],self.epl_thickness);
+			writejs1Darray(fid,[modelname '.initialization.watercolumn'],self.watercolumn);
+			writejs1Darray(fid,[modelname '.initialization.hydraulic_potential'],self.hydraulic_potential);
+			writejs1Darray(fid,[modelname '.initialization.channel'],self.channelarea);
+			writejs1Darray(fid,[modelname '.initialization.sample'],self.sample);
+			writejs1Darray(fid,[modelname '.initialization.debris'],self.debris);
+			writejs1Darray(fid,[modelname '.initialization.age'],self.age);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/initialization.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/initialization.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/initialization.py	(revision 27955)
@@ -0,0 +1,199 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class initialization(object):
+    """initialization class definition
+
+    Usage:
+        initialization = initialization()
+    """
+
+    def __init__(self):  #{{{
+        self.vx                  = np.nan
+        self.vy                  = np.nan
+        self.vz                  = np.nan
+        self.vel                 = np.nan
+        self.pressure            = np.nan
+        self.temperature         = np.nan
+        self.enthalpy            = np.nan
+        self.waterfraction       = np.nan
+        self.sediment_head       = np.nan
+        self.epl_head            = np.nan
+        self.epl_thickness       = np.nan
+        self.watercolumn         = np.nan
+        self.hydraulic_potential = np.nan
+        self.channelarea         = np.nan
+        self.sealevel            = np.nan
+        self.bottompressure      = np.nan
+        self.dsl                 = np.nan
+        self.str                 = np.nan
+        self.sample              = np.nan
+        self.debris              = np.nan
+        self.age                 = np.nan
+
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  #{{{
+        s = '   initial field values:\n'
+        s += '{}\n'.format(fielddisplay(self, 'vx', 'x component of velocity [m/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'vy', 'y component of velocity [m/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'vz', 'z component of velocity [m/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'vel', 'velocity norm [m/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'pressure', 'pressure [Pa]'))
+        s += '{}\n'.format(fielddisplay(self, 'temperature', 'temperature [K]'))
+        s += '{}\n'.format(fielddisplay(self, 'enthalpy', 'enthalpy [J]'))
+        s += '{}\n'.format(fielddisplay(self, 'waterfraction', 'fraction of water in the ice'))
+        s += '{}\n'.format(fielddisplay(self, 'watercolumn', 'thickness of subglacial water [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'sediment_head', 'sediment water head of subglacial system [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'epl_head', 'epl water head of subglacial system [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'epl_thickness', 'thickness of the epl [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'hydraulic_potential', 'Hydraulic potential (for GlaDS) [Pa]'))
+        s += '{}\n'.format(fielddisplay(self, 'channelarea', 'subglaciale water channel area (for GlaDS) [m2]'))
+        s += '{}\n'.format(fielddisplay(self, 'sample', 'Realization of a Gaussian random field'))
+        s += '{}\n'.format(fielddisplay(self, 'debris', 'Surface debris layer [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'age', 'Initial age [yr]'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  #{{{
+        return
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  #{{{
+        if 'StressbalanceAnalysis' in analyses and not solution == 'TransientSolution' and not md.transient.isstressbalance:
+            if not np.any(np.logical_or(np.isnan(md.initialization.vx), np.isnan(md.initialization.vy))):
+                if np.size(md.initialization.vx) > 1 or np.size(md.initialization.vy) > 1:
+                    md = checkfield(md, 'fieldname', 'initialization.vx', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+                    md = checkfield(md, 'fieldname', 'initialization.vy', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        if 'MasstransportAnalysis' in analyses and not solution == 'TransientSolution' and not md.transient.ismasstransport:
+            md = checkfield(md, 'fieldname', 'initialization.vx', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'initialization.vy', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        if 'OceantransportAnalysis' in analyses:
+            if solution == 'TransientSolution' and md.transient.isslc and md.transient.isoceantransport:
+                md = checkfield(md, 'fieldname', 'initialization.bottompressure', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+                md = checkfield(md, 'fieldname', 'initialization.dsl', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+                md = checkfield(md, 'fieldname', 'initialization.str', 'NaN', 1, 'Inf', 1, 'size', [1])
+        if 'BalancethicknessAnalysis' in analyses and solution == 'BalancethicknessSolution':
+            md = checkfield(md, 'fieldname', 'initialization.vx', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'initialization.vy', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+            # Triangle with zero velocity
+            if np.any(np.logical_and(np.sum(np.abs(md.initialization.vx[md.mesh.elements - 1]), axis=1).reshape(-1, 1) == 0, np.sum(np.abs(md.initialization.vy[md.mesh.elements - 1]), axis=1).reshape(-1, 1) == 0, np.min(md.mask.ice_levelset[md.mesh.elements - 1], axis=1).reshape(-1, 1) < 0)):
+                md.checkmessage('at least one triangle has all its vertices with a zero velocity')
+        if 'ThermalAnalysis' in analyses and not solution == 'TransientSolution' and not md.transient.isthermal:
+            md = checkfield(md, 'fieldname', 'initialization.vx', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'initialization.vy', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'initialization.temperature', 'NaN', 1, 'Inf', 1, 'size', 'universal')
+            if md.mesh.dimension() == 3:
+                md = checkfield(md, 'fieldname', 'initialization.vz', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'initialization.pressure', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        if 'EnthalpyAnalysis' in analyses and md.thermal.isenthalpy:
+            md = checkfield(md, 'fieldname', 'initialization.waterfraction', '>=', 0, 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'initialization.watercolumn', '>=', 0, 'size', [md.mesh.numberofvertices])
+            pos = np.nonzero(md.initialization.waterfraction > 0.)[0]
+            if(pos.size):
+                md = checkfield(md, 'fieldname', 'delta Tpmp', 'field', np.absolute(md.initialization.temperature[pos] - (md.materials.meltingpoint - md.materials.beta * md.initialization.pressure[pos])), '<', 1e-11, 'message', 'set temperature to pressure melting point at locations with waterfraction > 0')
+        if 'HydrologyShreveAnalysis' in analyses:
+            if type(md.hydrology).__name__ == 'hydrologyshreve':
+                if (solution == 'TransientSolution' and md.transient.ishydrology) or solution == 'HydrologySolution':
+                    md = checkfield(md, 'fieldname', 'initialization.watercolumn', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        if 'HydrologyTwsAnalysis' in analyses:
+            if type(md.hydrology).__name__ == 'hydrologytws':
+                md = checkfield(md, 'fieldname', 'initialization.watercolumn', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        if 'SealevelchangeAnalysis' in analyses:
+            if solution == 'TransientSolution' and md.transient.isslc:
+                md = checkfield(md, 'fieldname', 'initialization.sealevel', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        if 'HydrologyGlaDSAnalysis' in analyses:
+            if type(md.hydrology).__name__ == 'hydrologyglads':
+                md = checkfield(md, 'fieldname', 'initialization.watercolumn', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+                md = checkfield(md, 'fieldname', 'initialization.hydraulic_potential', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+                md = checkfield(md, 'fieldname', 'initialization.channelarea', 'NaN', 1, 'Inf', 1, '>=', 0, 'size', [md.mesh.numberofelements])
+        if 'HydrologyDCInefficientAnalysis' in analyses:
+            if type(md.hydrology).__name__ == 'hydrologydc':
+                md = checkfield(md, 'fieldname', 'initialization.sediment_head', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        if 'HydrologyDCEfficientAnalysis' in analyses:
+            if type(md.hydrology).__name__ == 'hydrologydc':
+                if md.hydrology.isefficientlayer:
+                    md = checkfield(md, 'fieldname', 'initialization.epl_head', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+                    md = checkfield(md, 'fieldname', 'initialization.epl_thickness', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        if 'SamplingAnalysis' in analyses and not solution == 'TransientSolution' and not md.transient.issampling:
+            if np.any(np.isnan(md.initialization.sample)):
+                md = checkfield(md, 'fieldname', 'initialization.sample', 'NaN', 1,'Inf', 1, 'size', [md.mesh.numberofvertices])
+        if 'DebrisAnalysis' in analyses:
+            if not np.isnan(md.initialization.debris):
+                if (solution == 'TransientSolution' and md.transient.ishydrology) or solution == 'HydrologySolution':
+                    md = checkfield(md, 'fieldname', 'initialization.debris', 'NaN', 1,'Inf', 1, 'size', [md.mesh.numberofvertices])
+        if 'AgeAnalysis' in analyses:
+            if not np.isnan(md.initialization.age):
+                if (solution == 'TransientSolution' and md.transient.ishydrology) or solution == 'HydrologySolution':
+                    md = checkfield(md, 'fieldname', 'initialization.age', 'NaN', 1,'Inf', 1, 'size', [md.mesh.numberofvertices])
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'vx', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1 / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'vy', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1 / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'vz', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1 / yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'pressure', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'sealevel', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'bottompressure', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'str', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'dsl', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'temperature', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'waterfraction', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'sediment_head', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'epl_head', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'epl_thickness', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'watercolumn', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'channelarea', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'hydraulic_potential', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'sample', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'debris', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'age', 'format', 'DoubleMat', 'mattype', 1, 'scale', yts)
+
+        if md.thermal.isenthalpy:
+            if (np.size(self.enthalpy) <= 1):
+                # Reconstruct enthalpy
+                tpmp = md.materials.meltingpoint - md.materials.beta * md.initialization.pressure
+                pos = np.where(md.initialization.waterfraction > 0)[0]
+                self.enthalpy = md.materials.heatcapacity * (md.initialization.temperature - md.constants.referencetemperature)
+                self.enthalpy[pos] = md.materials.heatcapacity * (tpmp[pos].reshape(-1,) - md.constants.referencetemperature) + md.materials.latentheat * md.initialization.waterfraction[pos].reshape(-1,)
+
+            WriteData(fid, prefix, 'data', self.enthalpy, 'format', 'DoubleMat', 'mattype', 1, 'name', 'md.initialization.enthalpy')
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.vx = project3d(md, 'vector', self.vx, 'type', 'node')
+        self.vy = project3d(md, 'vector', self.vy, 'type', 'node')
+        self.vz = project3d(md, 'vector', self.vz, 'type', 'node')
+        self.vel = project3d(md, 'vector', self.vel, 'type', 'node')
+        self.temperature = project3d(md, 'vector', self.temperature, 'type', 'node')
+        self.enthalpy = project3d(md, 'vector', self.enthalpy, 'type', 'node')
+        self.waterfraction = project3d(md, 'vector', self.waterfraction, 'type', 'node')
+        self.watercolumn = project3d(md, 'vector', self.watercolumn, 'type', 'node')
+        self.sediment_head = project3d(md, 'vector', self.sediment_head, 'type', 'node', 'layer', 1)
+        self.epl_head = project3d(md, 'vector', self.epl_head, 'type', 'node', 'layer', 1)
+        self.epl_thickness = project3d(md, 'vector', self.epl_thickness, 'type', 'node', 'layer', 1)
+        self.sealevel = project3d(md, 'vector', self.sealevel, 'type', 'node', 'layer', 1)
+        self.bottompressure = project3d(md, 'vector', self.bottompressure, 'type', 'node', 'layer', 1)
+        self.dsl = project3d(md, 'vector', self.dsl, 'type', 'node', 'layer', 1)
+        self.str = project3d(md, 'vector', self.str, 'type', 'node', 'layer', 1)
+        self.debris = project3d(md, 'vector', self.debris, 'type', 'node', 'layer', 1)
+        self.age = project3d(md, 'vector', self.age, 'type', 'node', 'layer', 1)
+
+        # Lithostatic pressure by default
+        if np.ndim(md.geometry.surface) == 2:
+            print('Reshaping md.geometry.surface for your convenience but you should fix it in your model set up')
+            self.pressure = md.constants.g * md.materials.rho_ice * (md.geometry.surface.reshape(-1, 1) - md.mesh.z)
+        else:
+            self.pressure = md.constants.g * md.materials.rho_ice * (md.geometry.surface - md.mesh.z)
+
+        return self
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/inversion.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/inversion.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/inversion.js	(revision 27955)
@@ -0,0 +1,212 @@
+//INVERSION class definition
+//
+//   Usage:
+//      inversion=new inversion();
+
+function inversion (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//default is incomplete adjoint for now
+		this.incomplete_adjoint=1;
+
+		//parameter to be inferred by control methods (only
+		//drag and B are supported yet)
+		this.control_parameters=['FrictionCoefficient'];
+
+		//number of steps in the control methods
+		this.nsteps=20;
+
+		//maximum number of iteration in the optimization algorithm for
+		//each step
+		this.maxiter_per_step=20*NewArrayFill(this.nsteps,1);
+
+		//the inversed parameter is updated as follows:
+		//new_par=old_par + gradient_scaling(n)*C*gradient with C in [0 1];
+		//usually the gradient_scaling must be of the order of magnitude of the 
+		//inversed parameter (10^8 for B, 50 for drag) and can be decreased
+		//after the first iterations
+		this.gradient_scaling=NewArrayFill(this.nsteps,50);
+
+		//several responses can be used:
+		this.cost_functions=101;
+
+		//step_threshold is used to speed up control method. When
+		//misfit(1)/misfit(0) < this.step_threshold, we go directly to
+		//the next step
+		this.step_threshold=NewArrayFill(this.nsteps,.7); //30 per cent decrement.
+
+		//cost_function_threshold is a criteria to stop the control methods.
+		//if J[n]-J[n-1]/J[n] < criteria, the control run stops
+		//NaN if not applied
+		this.cost_function_threshold=NaN; //not activated
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   inversion parameters:'));
+		fielddisplay(this,'iscontrol','is inversion activated?');
+		fielddisplay(this,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
+		fielddisplay(this,'control_parameters',"ex: {'FrictionCoefficient'}, or {'MaterialsRheologyBbar'}");
+		fielddisplay(this,'nsteps','number of optimization searches');
+		fielddisplay(this,'cost_functions','indicate the type of response for each optimization step');
+		fielddisplay(this,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
+		fielddisplay(this,'cost_function_threshold','misfit convergence criterion. Default is 1%, NaN if not applied');
+		fielddisplay(this,'maxiter_per_step','maximum iterations during each optimization step');
+		fielddisplay(this,'gradient_scaling','scaling factor on gradient direction during optimization, for each optimization step');
+		fielddisplay(this,'step_threshold','decrease threshold for misfit, default is 30%');
+		fielddisplay(this,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
+		fielddisplay(this,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
+		fielddisplay(this,'vx_obs','observed velocity x component [m/yr]');
+		fielddisplay(this,'vy_obs','observed velocity y component [m/yr]');
+		fielddisplay(this,'vel_obs','observed velocity magnitude [m/yr]');
+		fielddisplay(this,'thickness_obs','observed thickness [m]');
+		fielddisplay(this,'surface_obs','observed surface elevation [m]');
+		console.log('Available cost functions:');
+		console.log('   101: SurfaceAbsVelMisfit');
+		console.log('   102: SurfaceRelVelMisfit');
+		console.log('   103: SurfaceLogVelMisfit');
+		console.log('   104: SurfaceLogVxVyMisfit');
+		console.log('   105: SurfaceAverageVelMisfit');
+		console.log('   201: ThicknessAbsMisfit');
+		console.log('   501: DragCoefficientAbsGradient');
+		console.log('   502: RheologyBbarAbsGradient');
+		console.log('   503: ThicknessAbsGradient');
+
+	}// }}}
+    this.extrude = function(md) {//{{{
+        this.vx_obs=project3d(md, 'vector', this.vx_obs, 'type', 'node');
+        this.vy_obs=project3d(md,'vector',this.vy_obs,'type','node');
+        this.vel_obs=project3d(md,'vector',this.vel_obs,'type','node');
+        this.thickness_obs=project3d(md,'vector',this.thickness_obs,'type','node');
+
+        if (this.cost_functions_coefficients.length>1) {
+            this.cost_functions_coefficients=project3d(md,'vector',this.cost_functions_coefficients,'type','node');
+        }			
+        if (this.min_parameters.length>1) {
+            this.min_parameters=project3d(md,'vector',this.min_parameters,'type','node');
+        }
+        if (this.max_parameters.length>1) {
+            this.max_parameters=project3d(md,'vector',this.max_parameters,'type','node');
+        }
+        return this;
+    }//}}}
+	this.classname= function(){// {{{
+		return "inversion";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			//Early return
+			if (!this.iscontrol) return;
+
+			num_controls=md.inversion.control_parameters.length;
+			num_costfunc=md.inversion.control_parameters[0].length;
+
+			checkfield(md,'fieldname','inversion.iscontrol','values',[0, 1]);
+			checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 ,1]);
+			checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols());
+			checkfield(md,'fieldname','inversion.nsteps','numel',1,'>=',0);
+			checkfield(md,'fieldname','inversion.maxiter_per_step','size',[md.inversion.nsteps, 1],'>=',0);
+			checkfield(md,'fieldname','inversion.step_threshold','size',[md.inversion.nsteps, 1]);
+			checkfield(md,'fieldname','inversion.cost_functions','size',[1, num_costfunc],'values',supportedcostfunctions());
+			checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices, num_costfunc],'>=',0);
+			checkfield(md,'fieldname','inversion.gradient_scaling','size',[md.inversion.nsteps, num_controls]);
+			checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices , num_controls]);
+			checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices ,num_controls]);
+
+			//Only SSA, HO and FS are supported right now
+			if (solution=='StressbalanceSolution'){
+				if (!(md.flowequation.isSSA | md.flowequation.isHO | md.flowequation.isFS | md.flowequation.isL1L2)){
+					md.checkmessage('inversion can only be performed for SSA, HO or FS ice flow models');
+				}
+			}
+
+			if (solution=='BalancethicknessSolution'){
+				checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1);
+			}
+			else if (solution=='BalancethicknessSoftSolution'){
+				checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1);
+			}
+			else{
+				checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1);
+				checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1);
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.inversion.type','data',0,'format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','iscontrol','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','incomplete_adjoint','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','vel_obs','format','DoubleMat','mattype',1,'scale',1/yts);
+			if (!this.iscontrol) return;
+			WriteData(fid,prefix,'object',this,'fieldname','nsteps','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','maxiter_per_step','format','IntMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','gradient_scaling','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'fieldname','cost_function_threshold','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','min_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'fieldname','max_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'fieldname','step_threshold','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',this,'fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',this,'fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			if(this.thickness_obs.length==md.mesh.numberofelements) mattype=2;
+			else mattype=1;
+			WriteData(fid,prefix,'object',this,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
+			WriteData(fid,prefix,'object',this,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
+
+			//process control parameters
+			num_control_parameters=this.control_parameters.length;
+			WriteData(fid,prefix,'object',this,'fieldname','control_parameters','format','StringArray');
+			WriteData(fid,prefix,'data',num_control_parameters,'name','md.inversion.num_control_parameters','format','Integer');
+
+			//process cost functions
+			num_cost_functions=this.cost_functions[0].length;
+			data=marshallcostfunctions(this.cost_functions);
+			WriteData(fid,prefix,'data',data,'name','md.inversion.cost_functions','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'data',num_cost_functions,'name','md.inversion.num_cost_functions','format','Integer');
+		}//}}}
+		this.fix=function() { //{{{
+			this.control_parameters=NullFix(this.control_parameters,NaN);
+			this.maxiter_per_step=NullFix(this.maxiter_per_step,NaN);
+			this.cost_functions=NullFix(this.cost_functions,NaN);
+			this.cost_functions_coefficients=NullFix(this.cost_functions_coefficients,NaN);
+			this.cost_function_threshold=NullFix(this.cost_function_threshold,NaN);
+			this.gradient_scaling=NullFix(this.gradient_scaling,NaN);
+			this.min_parameters=NullFix(this.min_parameters,NaN);
+			this.max_parameters=NullFix(this.max_parameters,NaN);
+			this.step_threshold=NullFix(this.step_threshold,NaN);
+			this.vx_obs=NullFix(this.vx_obs,NaN);
+			this.vy_obs=NullFix(this.vy_obs,NaN);
+			this.vz_obs=NullFix(this.vz_obs,NaN);
+			this.vel_obs=NullFix(this.vel_obs,NaN);
+			this.thickness_obs=NullFix(this.thickness_obs,NaN);
+			this.surface_obs=NullFix(this.surface_obs,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.iscontrol                   = 0;
+	this.incomplete_adjoint          = 0;
+	this.control_parameters          = NaN;
+	this.nsteps                      = 0;
+	this.maxiter_per_step            = NaN;
+	this.cost_functions              = NaN;
+	this.cost_functions_coefficients = NaN;
+	this.gradient_scaling            = NaN;
+	this.cost_function_threshold     = 0;
+	this.min_parameters              = NaN;
+	this.max_parameters              = NaN;
+	this.step_threshold              = NaN;
+	this.vx_obs                      = NaN;
+	this.vy_obs                      = NaN;
+	this.vz_obs                      = NaN;
+	this.vel_obs                     = NaN;
+	this.thickness_obs               = NaN;
+	this.surface_obs                 = NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/inversion.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/inversion.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/inversion.m	(revision 27955)
@@ -0,0 +1,206 @@
+%INVERSION class definition
+%
+%   Usage:
+%      inversion=inversion();
+
+classdef inversion
+	properties (SetAccess=public) 
+		iscontrol                   = 0
+		incomplete_adjoint          = 0
+		control_parameters          = NaN
+		nsteps                      = 0
+		maxiter_per_step            = NaN
+		cost_functions              = NaN
+		cost_functions_coefficients = NaN
+		gradient_scaling            = NaN
+		cost_function_threshold     = 0
+		min_parameters              = NaN
+		max_parameters              = NaN
+		step_threshold              = NaN
+		vx_obs                      = NaN
+		vy_obs                      = NaN
+		vz_obs                      = NaN
+		vel_obs                     = NaN
+		thickness_obs               = NaN
+		surface_obs                 = NaN
+	end
+	methods
+		function self = inversion(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self =structtoobj(inversion(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node');
+			self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node');
+			self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node');
+			self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node');
+			if numel(self.cost_functions_coefficients)>1,self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node');end;
+			if numel(self.min_parameters)>1,self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node');end;
+			if numel(self.max_parameters)>1,self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node');end;
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%default is incomplete adjoint for now
+			self.incomplete_adjoint=1;
+
+			%parameter to be inferred by control methods (only
+			%drag and B are supported yet)
+			self.control_parameters={'FrictionCoefficient'};
+
+			%number of steps in the control methods
+			self.nsteps=20;
+
+			%maximum number of iteration in the optimization algorithm for
+			%each step
+			self.maxiter_per_step=20*ones(self.nsteps,1);
+
+			%the inversed parameter is updated as follows:
+			%new_par=old_par + gradient_scaling(n)*C*gradient with C in [0 1];
+			%usually the gradient_scaling must be of the order of magnitude of the 
+			%inversed parameter (10^8 for B, 50 for drag) and can be decreased
+			%after the first iterations
+			self.gradient_scaling=50*ones(self.nsteps,1);
+
+			%several responses can be used:
+			self.cost_functions=101;
+
+			%step_threshold is used to speed up control method. When
+			%misfit(1)/misfit(0) < self.step_threshold, we go directly to
+			%the next step
+			self.step_threshold=.7*ones(self.nsteps,1); %30 per cent decrement.
+
+			%cost_function_threshold is a criteria to stop the control methods.
+			%if J[n]-J[n-1]/J[n] < criteria, the control run stops
+			%NaN if not applied
+			self.cost_function_threshold=NaN; %not activated
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~self.iscontrol, return; end
+
+			num_controls=numel(md.inversion.control_parameters);
+			num_costfunc=size(md.inversion.cost_functions,2);
+
+			md = checkfield(md,'fieldname','inversion.iscontrol','values',[0 1]);
+			md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 1]);
+			md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols());
+			md = checkfield(md,'fieldname','inversion.nsteps','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.maxiter_per_step','size',[md.inversion.nsteps 1],'>=',0);
+			md = checkfield(md,'fieldname','inversion.step_threshold','size',[md.inversion.nsteps 1]);
+			md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values',supportedcostfunctions());
+			md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0);
+			md = checkfield(md,'fieldname','inversion.gradient_scaling','size',[md.inversion.nsteps num_controls]);
+			md = checkfield(md,'fieldname','inversion.min_parameters','size',[NaN num_controls]);
+			md = checkfield(md,'fieldname','inversion.max_parameters','size',[NaN num_controls]);
+
+			%Only SSA, HO and FS are supported right now
+			if strcmp(solution,'StressbalanceSolution')
+				if ~(md.flowequation.isSSA || md.flowequation.isMOLHO || md.flowequation.isHO || md.flowequation.isFS || md.flowequation.isL1L2),
+					md = checkmessage(md,['inversion can only be performed for SSA, MOLHO, HO or FS ice flow models']);
+				end
+			end
+			if strcmp(solution,'BalancethicknessSolution')
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			elseif strcmp(solution,'BalancethicknessSoftSolution')
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			else
+				md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   inversion parameters:'));
+			fielddisplay(self,'iscontrol','is inversion activated?');
+			fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
+			fielddisplay(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
+			fielddisplay(self,'nsteps','number of optimization searches');
+			fielddisplay(self,'cost_functions','indicate the type of response for each optimization step');
+			fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
+			fielddisplay(self,'cost_function_threshold','misfit convergence criterion. Default is 1%, NaN if not applied');
+			fielddisplay(self,'maxiter_per_step','maximum iterations during each optimization step');
+			fielddisplay(self,'gradient_scaling','scaling factor on gradient direction during optimization, for each optimization step');
+			fielddisplay(self,'step_threshold','decrease threshold for misfit, default is 30%');
+			fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'vx_obs','observed velocity x component [m/yr]');
+			fielddisplay(self,'vy_obs','observed velocity y component [m/yr]');
+			fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]');
+			fielddisplay(self,'thickness_obs','observed thickness [m]');
+			fielddisplay(self,'surface_obs','observed surface elevation [m]');
+			disp('Available cost functions:');
+			disp('   101: SurfaceAbsVelMisfit');
+			disp('   102: SurfaceRelVelMisfit');
+			disp('   103: SurfaceLogVelMisfit');
+			disp('   104: SurfaceLogVxVyMisfit');
+			disp('   105: SurfaceAverageVelMisfit');
+			disp('   201: ThicknessAbsMisfit');
+			disp('   501: DragCoefficientAbsGradient');
+			disp('   502: RheologyBbarAbsGradient');
+			disp('   503: ThicknessAbsGradient');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.inversion.type','data',0,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','iscontrol','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','incomplete_adjoint','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','vel_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			if ~self.iscontrol, return; end
+			WriteData(fid,prefix,'object',self,'fieldname','nsteps','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','maxiter_per_step','format','IntMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','gradient_scaling','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'fieldname','cost_function_threshold','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','min_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'fieldname','max_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'fieldname','step_threshold','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			if(numel(self.thickness_obs)==md.mesh.numberofelements),
+				mattype=2;
+			else
+				mattype=1;
+			end
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
+
+			%process control parameters
+			WriteData(fid,prefix,'object',self,'fieldname','control_parameters','format','StringArray');
+			WriteData(fid,prefix,'data',numel(self.control_parameters),'name','md.inversion.num_control_parameters','format','Integer');
+
+			%process cost functions
+			num_cost_functions=size(self.cost_functions,2);
+			data=marshallcostfunctions(self.cost_functions);
+			WriteData(fid,prefix,'data',data,'name','md.inversion.cost_functions','format','StringArray');
+			WriteData(fid,prefix,'data',num_cost_functions,'name','md.inversion.num_cost_functions','format','Integer');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.inversion.iscontrol'],self.iscontrol);
+			writejsdouble(fid,[modelname '.inversion.incomplete_adjoint'],self.incomplete_adjoint);
+			writejscellstring(fid,[modelname '.inversion.control_parameters'],self.control_parameters);
+			writejsdouble(fid,[modelname '.inversion.nsteps'],self.nsteps);
+			writejs1Darray(fid,[modelname '.inversion.maxiter_per_step'],self.maxiter_per_step);
+			writejs2Darray(fid,[modelname '.inversion.cost_functions'],self.cost_functions);
+			writejs2Darray(fid,[modelname '.inversion.cost_functions_coefficients'],self.cost_functions_coefficients);
+			writejs1Darray(fid,[modelname '.inversion.min_parameters'],self.min_parameters);
+			writejs1Darray(fid,[modelname '.inversion.max_parameters'],self.max_parameters);
+			writejs1Darray(fid,[modelname '.inversion.vx_obs'],self.vx_obs);
+			writejs1Darray(fid,[modelname '.inversion.vy_obs'],self.vy_obs);
+			writejs1Darray(fid,[modelname '.inversion.vz_obs'],self.vz_obs);
+			writejs1Darray(fid,[modelname '.inversion.vel_obs'],self.vel_obs);
+			writejs1Darray(fid,[modelname '.inversion.thickness_obs'],self.thickness_obs);
+			writejs1Darray(fid,[modelname '.inversion.surface_obs'],self.surface_obs);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/inversion.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/inversion.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/inversion.py	(revision 27955)
@@ -0,0 +1,198 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from marshallcostfunctions import marshallcostfunctions
+from project3d import project3d
+from supportedcontrols import supportedcontrols
+from supportedcostfunctions import supportedcostfunctions
+from WriteData import WriteData
+
+
+class inversion(object):
+    """INVERSION class definition
+
+    Usage:
+        inversion = inversion()
+    """
+
+    def __init__(self):  # {{{
+        self.iscontrol = 0
+        self.incomplete_adjoint = 0
+        self.control_parameters = np.nan
+        self.nsteps = 0
+        self.maxiter_per_step = np.nan
+        self.cost_functions = ''
+        self.cost_functions_coefficients = np.nan
+        self.gradient_scaling = np.nan
+        self.cost_function_threshold = 0
+        self.min_parameters = np.nan
+        self.max_parameters = np.nan
+        self.step_threshold = np.nan
+        self.vx_obs = np.nan
+        self.vy_obs = np.nan
+        self.vz_obs = np.nan
+        self.vel_obs = np.nan
+        self.thickness_obs = np.nan
+        self.surface_obs = np.nan
+
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   inversion parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'iscontrol', 'is inversion activated?'))
+        s += '{}\n'.format(fielddisplay(self, 'incomplete_adjoint', '1: linear viscosity, 0: non - linear viscosity'))
+        s += '{}\n'.format(fielddisplay(self, 'control_parameters', 'ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))
+        s += '{}\n'.format(fielddisplay(self, 'nsteps', 'number of optimization searches'))
+        s += '{}\n'.format(fielddisplay(self, 'cost_functions', 'indicate the type of response for each optimization step'))
+        s += '{}\n'.format(fielddisplay(self, 'cost_functions_coefficients', 'cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
+        s += '{}\n'.format(fielddisplay(self, 'cost_function_threshold', 'misfit convergence criterion. Default is 1%, NaN if not applied'))
+        s += '{}\n'.format(fielddisplay(self, 'maxiter_per_step', 'maximum iterations during each optimization step'))
+        s += '{}\n'.format(fielddisplay(self, 'gradient_scaling', 'scaling factor on gradient direction during optimization, for each optimization step'))
+        s += '{}\n'.format(fielddisplay(self, 'step_threshold', 'decrease threshold for misfit, default is 30%'))
+        s += '{}\n'.format(fielddisplay(self, 'min_parameters', 'absolute minimum acceptable value of the inversed parameter on each vertex'))
+        s += '{}\n'.format(fielddisplay(self, 'max_parameters', 'absolute maximum acceptable value of the inversed parameter on each vertex'))
+        s += '{}\n'.format(fielddisplay(self, 'vx_obs', 'observed velocity x component [m/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'vy_obs', 'observed velocity y component [m/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'vel_obs', 'observed velocity magnitude [m/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'thickness_obs', 'observed thickness [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'surface_obs', 'observed surface elevation [m]'))
+        s += '{}\n'.format('Available cost functions:')
+        s += '{}\n'.format('   101: SurfaceAbsVelMisfit')
+        s += '{}\n'.format('   102: SurfaceRelVelMisfit')
+        s += '{}\n'.format('   103: SurfaceLogVelMisfit')
+        s += '{}\n'.format('   104: SurfaceLogVxVyMisfit')
+        s += '{}\n'.format('   105: SurfaceAverageVelMisfit')
+        s += '{}\n'.format('   201: ThicknessAbsMisfit')
+        s += '{}\n'.format('   501: DragCoefficientAbsGradient')
+        s += '{}\n'.format('   502: RheologyBbarAbsGradient')
+        s += '{}\n'.format('   503: ThicknessAbsGradient')
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        #default is incomplete adjoint for now
+        self.incomplete_adjoint = 1
+        #parameter to be inferred by control methods (only
+        #drag and B are supported yet)
+        self.control_parameters = 'FrictionCoefficient'
+        #number of steps in the control methods
+        self.nsteps = 20
+        #maximum number of iteration in the optimization algorithm for
+        #each step
+        self.maxiter_per_step = 20 * np.ones(self.nsteps)
+        #the inversed parameter is updated as follows:
+        #new_par = old_par + gradient_scaling(n) * C * gradient with C in [0 1]
+        #usually the gradient_scaling must be of the order of magnitude of the
+        #inversed parameter (1.0e8 for B, 50 for drag) and can be decreased
+        #after the first iterations
+        self.gradient_scaling = 50 * np.ones((self.nsteps, 1))
+        #several responses can be used:
+        self.cost_functions = [101, ]
+        #step_threshold is used to speed up control method. When
+        #misfit(1) / misfit(0) < self.step_threshold, we go directly to
+        #the next step
+        self.step_threshold = 0.7 * np.ones(self.nsteps)  #30 per cent decrement
+        #cost_function_threshold is a criteria to stop the control methods.
+        #if J[n] - J[n - 1] / J[n] < criteria, the control run stops
+        #NaN if not applied
+        self.cost_function_threshold = np.nan  #not activated
+        return self
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.vx_obs = project3d(md, 'vector', self.vx_obs, 'type', 'node')
+        self.vy_obs = project3d(md, 'vector', self.vy_obs, 'type', 'node')
+        self.vel_obs = project3d(md, 'vector', self.vel_obs, 'type', 'node')
+        self.thickness_obs = project3d(md, 'vector', self.thickness_obs, 'type', 'node')
+        if not np.any(np.isnan(self.cost_functions_coefficients)):
+            self.cost_functions_coefficients = project3d(md, 'vector', self.cost_functions_coefficients, 'type', 'node')
+        if not np.any(np.isnan(self.min_parameters)):
+            self.min_parameters = project3d(md, 'vector', self.min_parameters, 'type', 'node')
+        if not np.any(np.isnan(self.max_parameters)):
+            self.max_parameters = project3d(md, 'vector', self.max_parameters, 'type', 'node')
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if not self.iscontrol:
+            return md
+
+        num_controls = np.size(md.inversion.control_parameters)
+        num_costfunc = np.size(md.inversion.cost_functions)
+
+        md = checkfield(md, 'fieldname', 'inversion.iscontrol', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'inversion.incomplete_adjoint', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'inversion.control_parameters', 'cell', 1, 'values', supportedcontrols())
+        md = checkfield(md, 'fieldname', 'inversion.nsteps', 'numel', [1], '>=', 0)
+        md = checkfield(md, 'fieldname', 'inversion.maxiter_per_step', 'size', [md.inversion.nsteps], '>=', 0)
+        md = checkfield(md, 'fieldname', 'inversion.step_threshold', 'size', [md.inversion.nsteps])
+        md = checkfield(md, 'fieldname', 'inversion.cost_functions', 'size', [num_costfunc], 'values', supportedcostfunctions())
+        if num_costfunc == 1:
+            md.inversion.cost_functions_coefficients = np.squeeze(md.inversion.cost_functions_coefficients)
+            md = checkfield(md, 'fieldname', 'inversion.cost_functions_coefficients', 'size', [md.mesh.numberofvertices], '>=', 0)
+        else:
+            md = checkfield(md, 'fieldname', 'inversion.cost_functions_coefficients', 'size', [md.mesh.numberofvertices, num_costfunc], '>=', 0)
+
+        if num_controls == 1:
+            md.inversion.gradient_scaling = np.squeeze(md.inversion.gradient_scaling)
+            md.inversion.min_parameters = np.squeeze(md.inversion.min_parameters)
+            md.inversion.max_parameters = np.squeeze(md.inversion.max_parameters)
+            md = checkfield(md, 'fieldname', 'inversion.gradient_scaling', 'size', [md.inversion.nsteps])
+            md = checkfield(md, 'fieldname', 'inversion.min_parameters', 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'inversion.max_parameters', 'size', [md.mesh.numberofvertices])
+        else:
+            md = checkfield(md, 'fieldname', 'inversion.gradient_scaling', 'size', [md.inversion.nsteps, num_controls])
+            md = checkfield(md, 'fieldname', 'inversion.min_parameters', 'size', [md.mesh.numberofvertices, num_controls])
+            md = checkfield(md, 'fieldname', 'inversion.max_parameters', 'size', [md.mesh.numberofvertices, num_controls])
+
+        # Only SSA, HO and FS are supported right now
+        if solution == 'StressbalanceSolution':
+            if not (md.flowequation.isSSA or md.flowequation.isMOLHO or md.flowequation.isHO or md.flowequation.isFS or md.flowequation.isL1L2):
+                md.checkmessage("'inversion can only be performed for SSA, MOLHO, HO or FS ice flow models")
+        if solution == 'BalancethicknessSolution':
+            md = checkfield(md, 'fieldname', 'inversion.thickness_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+        elif solution == 'BalancethicknessSoftSolution':
+            md = checkfield(md, 'fieldname', 'inversion.thickness_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+        else:
+            md = checkfield(md, 'fieldname', 'inversion.vx_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'inversion.vy_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'name', 'md.inversion.type', 'data', 0, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'iscontrol', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'incomplete_adjoint', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'vel_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
+        if not self.iscontrol:
+            return
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'nsteps', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'maxiter_per_step', 'format', 'IntMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'cost_functions_coefficients', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'gradient_scaling', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'cost_function_threshold', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'min_parameters', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'max_parameters', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'step_threshold', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'vx_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'vy_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'vz_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'thickness_obs', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'surface_obs', 'format', 'DoubleMat', 'mattype', 1)
+
+        # Process control parameters
+        num_control_parameters = len(self.control_parameters)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'control_parameters', 'format', 'StringArray')
+        WriteData(fid, prefix, 'data', num_control_parameters, 'name', 'md.inversion.num_control_parameters', 'format', 'Integer')
+
+        # Process cost functions
+        num_cost_functions = np.size(self.cost_functions)
+        data = marshallcostfunctions(self.cost_functions)
+        WriteData(fid, prefix, 'data', data, 'name', 'md.inversion.cost_functions', 'format', 'StringArray')
+        WriteData(fid, prefix, 'data', num_cost_functions, 'name', 'md.inversion.num_cost_functions', 'format', 'Integer')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/inversionvalidation.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/inversionvalidation.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/inversionvalidation.m	(revision 27955)
@@ -0,0 +1,148 @@
+%INVERSIONVALIDATION class definition
+%
+%   Usage:
+%      inversionvalidation=inversionvalidation();
+
+classdef inversionvalidation
+	properties (SetAccess=public) 
+		iscontrol                   = 0
+		incomplete_adjoint          = 0
+		control_parameters          = NaN
+		control_scaling_factors     = NaN
+		cost_functions              = NaN
+		cost_functions_coefficients = NaN
+		min_parameters              = NaN
+		max_parameters              = NaN
+		vx_obs                      = NaN
+		vy_obs                      = NaN
+		vz_obs                      = NaN
+		vel_obs                     = NaN
+		thickness_obs               = NaN
+		surface_obs                 = NaN
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node');
+			self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node');
+			self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node');
+			self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node');
+			if numel(self.cost_functions_coefficients)>1,self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node');end;
+			if numel(self.min_parameters)>1,self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node');end;
+			if numel(self.max_parameters)>1,self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node');end;
+		end % }}}
+		function self = inversionvalidation(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(inversionvalidation(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%default is incomplete adjoint for now
+			self.incomplete_adjoint=1;
+
+			%parameter to be inferred by control methods (only
+			%drag and B are supported yet)
+			self.control_parameters={'FrictionCoefficient'};
+
+			%Scaling factor for each control
+			self.control_scaling_factors=1;
+
+			%several responses can be used:
+			self.cost_functions=101;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~self.iscontrol, return; end
+
+			num_controls=numel(md.inversion.control_parameters);
+			num_costfunc=size(md.inversion.cost_functions,2);
+
+			md = checkfield(md,'fieldname','inversion.iscontrol','values',[0 1]);
+			md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 1]);
+			md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols());
+			md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[1 num_controls],'>',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values',supportedcostfunctions());
+			md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0);
+			md = checkfield(md,'fieldname','inversion.min_parameters','size',[NaN num_controls]);
+			md = checkfield(md,'fieldname','inversion.max_parameters','size',[NaN num_controls]);
+
+			if strcmp(solution,'BalancethicknessSolution')
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			elseif strcmp(solution,'BalancethicknessSoftSolution')
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			else
+				md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				if ~strcmp(domaintype(md.mesh),'2Dvertical'),
+					md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				end
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   inversionvalidation parameters:'));
+			fielddisplay(self,'iscontrol','is inversion activated?');
+			fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
+			fielddisplay(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
+			fielddisplay(self,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)');
+			fielddisplay(self,'cost_functions','indicate the type of response for each optimization step');
+			fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
+			fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'vx_obs','observed velocity x component [m/yr]');
+			fielddisplay(self,'vy_obs','observed velocity y component [m/yr]');
+			fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]');
+			fielddisplay(self,'thickness_obs','observed thickness [m]');
+			fielddisplay(self,'surface_obs','observed surface elevation [m]');
+			disp('Available cost functions:');
+			disp('   101: SurfaceAbsVelMisfit');
+			disp('   102: SurfaceRelVelMisfit');
+			disp('   103: SurfaceLogVelMisfit');
+			disp('   104: SurfaceLogVxVyMisfit');
+			disp('   105: SurfaceAverageVelMisfit');
+			disp('   201: ThicknessAbsMisfit');
+			disp('   501: DragCoefficientAbsGradient');
+			disp('   502: RheologyBbarAbsGradient');
+			disp('   503: ThicknessAbsGradient');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean');
+			WriteData(fid,prefix,'name','md.inversion.type','data',3,'format','Integer');
+			if ~self.iscontrol, return; end
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','incomplete_adjoint','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vel_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			if(numel(self.thickness_obs)==md.mesh.numberofelements),
+				mattype=2; 
+			else
+				mattype=1;
+			end
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
+
+			%process control parameters
+			num_control_parameters=numel(self.control_parameters);
+			WriteData(fid,prefix,'object',self,'fieldname','control_parameters','format','StringArray');
+			WriteData(fid,prefix,'data',num_control_parameters,'name','md.inversion.num_control_parameters','format','Integer');
+
+			%process cost functions
+			num_cost_functions=size(self.cost_functions,2);
+			data=marshallcostfunctions(self.cost_functions);
+			WriteData(fid,prefix,'data',data,'name','md.inversion.cost_functions','format','StringArray');
+			WriteData(fid,prefix,'data',num_cost_functions,'name','md.inversion.num_cost_functions','format','Integer');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/issmsettings.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/issmsettings.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/issmsettings.js	(revision 27955)
@@ -0,0 +1,99 @@
+//ISSMSETTINGS class definition
+//
+//   Usage:
+//      issmsettings=new issmsettings();
+
+function issmsettings (){
+    //methods
+	this.setdefaultparameters = function(){// {{{
+		//are we short in memory ? (0 faster but requires more memory)
+		this.lowmem=0;
+
+		//i/o:
+		this.io_gather=1;
+
+		//results frequency by default every step
+		this.output_frequency=1;
+
+		//coupling frequency of the stress balance solver by default every step
+		this.sb_coupling_frequency=1;
+
+		//checkpoints frequency, by default never:
+		this.checkpoint_frequency=0;
+
+		//this option can be activated to load automatically the results
+		//onto the model after a parallel run by waiting for the lock file
+		//N minutes that is generated once the solution has converged
+		//0 to deactivate
+		this.waitonlock=Infinity;
+
+		//upload options:
+		this.upload_port         = 0;
+
+		//throw an error if solver residue exceeds this value
+		this.solver_residue_threshold=1e-6;
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   issmsettings class echo:'));
+
+		fielddisplay(this,'results_on_nodes','results are output for all the nodes of each element');
+		fielddisplay(this,'io_gather','I/O gathering strategy for result outputs (default 1)');
+		fielddisplay(this,'lowmem','is the memory limited ? (0 or 1)');
+		fielddisplay(this,'output_frequency','number of time steps between two saves (e.g., 5 means that results are only saved every 5 time steps)');
+		fielddisplay(this,'checkpoint_frequency','frequency at which the runs are being recorded, allowing for a restart');
+		fielddisplay(this,'waitonlock','maximum number of minutes to wait for batch results (NaN to deactivate)');
+		fielddisplay(this,'upload_server','server hostname where model should be uploaded');
+		fielddisplay(this,'upload_path','path on server where model should be uploaded');
+		fielddisplay(this,'upload_login','server login');
+		fielddisplay(this,'upload_port','port login (default is 0)');
+		fielddisplay(this,'upload_filename','unique id generated when uploading the file to server');
+		fielddisplay(this,'solver_residue_threshold','throw an error if solver residue exceeds this value');
+
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "issmsettings";
+
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) { // {{{
+
+		checkfield(md,'fieldname','settings.results_on_nodes','stringrow',1);
+		checkfield(md,'fieldname','settings.io_gather','numel',[1],'values',[0, 1]);
+		checkfield(md,'fieldname','settings.lowmem','numel',[1],'values',[0, 1]);
+		checkfield(md,'fieldname','settings.output_frequency','numel',[1],'>=',1);
+		checkfield(md,'fieldname','settings.sb_coupling_frequency','numel',[1],'>=',1);
+		checkfield(md,'fieldname','settings.checkpoint_frequency','numel',[1],'>=',0);
+		checkfield(md,'fieldname','settings.waitonlock','numel',[1]);
+		checkfield(md,'fieldname','settings.solver_residue_threshold','numel',[1],'>',0);
+	} // }}}
+	this.marshall=function(md,prefix,fid) { //{{{
+		WriteData(fid,prefix,'object',this,'class','settings','fieldname','results_on_nodes','format','StringArray');
+		WriteData(fid,prefix,'object',this,'class','settings','fieldname','io_gather','format','Boolean');
+		WriteData(fid,prefix,'object',this,'class','settings','fieldname','lowmem','format','Boolean');
+		WriteData(fid,prefix,'object',this,'class','settings','fieldname','output_frequency','format','Integer');
+		WriteData(fid,prefix,'object',this,'class','settings','fieldname','sb_coupling_frequency','format','Integer');
+		WriteData(fid,prefix,'object',this,'class','settings','fieldname','checkpoint_frequency','format','Integer');
+		WriteData(fid,prefix,'object',this,'class','settings','fieldname','waitonlock','data',this.waitonlock>0,'format','Boolean');
+		WriteData(fid,prefix,'object',this,'class','settings','fieldname','solver_residue_threshold','format','Double');
+	}//}}}
+	this.fix=function() { //{{{
+	}//}}}
+	//properties
+	// {{{
+	this.results_on_nodes        = '';
+	this.io_gather               = 0;
+	this.lowmem                  = 0;
+	this.output_frequency        = 0;
+	this.sb_coupling_frequency   = 0;
+	this.checkpoint_frequency    = 0;
+	this.waitonlock              = 0;
+	this.upload_server           = '';
+	this.upload_path             = '';
+	this.upload_login            = '';
+	this.upload_port             = 0;
+	this.upload_filename         = '';
+	this.solver_residue_threshold = 0;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/issmsettings.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/issmsettings.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/issmsettings.m	(revision 27955)
@@ -0,0 +1,133 @@
+%ISSMSETTINGS class definition
+%
+%   Usage:
+%      issmsettings=issmsettings();
+
+classdef issmsettings
+	properties (SetAccess=public) 
+		results_on_nodes         = {};
+		io_gather                = 0;
+		lowmem                   = 0;
+		output_frequency         = 0;
+		sb_coupling_frequency    = 0;
+		checkpoint_frequency     = 0;
+		waitonlock               = 0;
+		upload_server            = '';
+		upload_path              = '';
+		upload_login             = '';
+		upload_port              = 0;
+		upload_filename          = '';
+		solver_residue_threshold = 0;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. Update old properties here
+
+			%2020 Oct 6
+			if isstruct(self)
+				objstruct = self;
+				self = structtoobj(issmsettings(),objstruct);
+				if isfield(objstruct,'recording_frequency')
+					self.checkpoint_frequency = objstruct.recording_frequency;
+				end
+			end
+		end % }}}
+	end
+	methods
+		function self = issmsettings(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%are we short in memory ? (0 faster but requires more memory)
+			self.lowmem=0;
+
+			%i/o:
+			self.io_gather=1;
+
+			%results frequency by default every step
+			self.output_frequency=1;
+
+			%coupling frequency of the stress balance solver by default every step
+			self.sb_coupling_frequency=1;
+			
+			%checkpoints frequency, by default never: 
+			self.checkpoint_frequency=0;
+
+			%this option can be activated to load automatically the results
+			%onto the model after a parallel run by waiting for the lock file
+			%N minutes that is generated once the solution has converged
+			%0 to deactivate
+			self.waitonlock=Inf;
+
+			%upload options: 
+			self.upload_port         = 0;
+
+			%throw an error if solver residue exceeds this value
+			self.solver_residue_threshold = 1e-6;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','settings.results_on_nodes','stringrow',1);
+			md = checkfield(md,'fieldname','settings.io_gather','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','settings.lowmem','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','settings.output_frequency','numel',[1],'>=',1);
+			md = checkfield(md,'fieldname','settings.sb_coupling_frequency','numel',[1],'>=',1);
+			md = checkfield(md,'fieldname','settings.checkpoint_frequency','numel',[1],'>=',0);
+			md = checkfield(md,'fieldname','settings.waitonlock','numel',[1]);
+			md = checkfield(md,'fieldname','settings.solver_residue_threshold','numel',[1],'>',0);
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   general issmsettings parameters:'));
+
+			fielddisplay(self,'results_on_nodes','list of output for which results will be output for all the nodes of each element, Use ''all'' for all output on nodes.');
+			fielddisplay(self,'io_gather','I/O gathering strategy for result outputs (default 1)');
+			fielddisplay(self,'lowmem','is the memory limited ? (0 or 1)');
+			fielddisplay(self,'output_frequency','number of time steps between two saves (e.g., 5 means that results are only saved every 5 time steps)');
+			fielddisplay(self,'sb_coupling_frequency','frequency at which StressBalance solver is coupled (default 1)');
+			fielddisplay(self,'checkpoint_frequency','frequency at which the runs are being recorded, allowing for a restart');
+			fielddisplay(self,'waitonlock','maximum number of minutes to wait for batch results (NaN to deactivate)');
+			fielddisplay(self,'upload_server','server hostname where model should be uploaded');
+			fielddisplay(self,'upload_path','path on server where model should be uploaded');
+			fielddisplay(self,'upload_login','server login');
+			fielddisplay(self,'upload_port','port login (default is 0)');
+			fielddisplay(self,'upload_filename','unique id generated when uploading the file to server');
+			fielddisplay(self,'solver_residue_threshold','throw an error if solver residue exceeds this value (NaN to deactivate)');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'data',self.results_on_nodes,'name','md.settings.results_on_nodes','format','StringArray');
+			WriteData(fid,prefix,'object',self,'class','settings','fieldname','io_gather','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','settings','fieldname','lowmem','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','settings','fieldname','output_frequency','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','settings','fieldname','sb_coupling_frequency','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','settings','fieldname','checkpoint_frequency','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','settings','fieldname','waitonlock','data',self.waitonlock>0,'format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','settings','fieldname','solver_residue_threshold','format','Double');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejscellstring(fid,[modelname '.settings.results_on_nodes'],self.results_on_nodes);
+			writejsdouble(fid,[modelname '.settings.io_gather'],self.io_gather);
+			writejsdouble(fid,[modelname '.settings.lowmem'],self.lowmem);
+			writejsdouble(fid,[modelname '.settings.output_frequency'],self.output_frequency);
+			writejsdouble(fid,[modelname '.settings.sb_coupling_frequency'],self.sb_coupling_frequency);
+			writejsdouble(fid,[modelname '.settings.checkpoint_frequency'],self.checkpoint_frequency);
+			writejsdouble(fid,[modelname '.settings.waitonlock'],self.waitonlock);
+			writejsstring(fid,[modelname '.settings.upload_server'],self.upload_server);
+			writejsstring(fid,[modelname '.settings.upload_path'],self.upload_path);
+			writejsstring(fid,[modelname '.settings.upload_login'],self.upload_login);
+			writejsdouble(fid,[modelname '.settings.upload_port'],self.upload_port);
+			writejsstring(fid,[modelname '.settings.upload_filename'],self.upload_filename);
+			writejsstring(fid,[modelname '.settings.solver_residue_threshold'],self.solver_residue_threshold);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/issmsettings.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/issmsettings.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/issmsettings.py	(revision 27955)
@@ -0,0 +1,89 @@
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from WriteData import WriteData
+
+
+class issmsettings(object):
+    """ISSMSETTINGS class definition
+
+    Usage:
+        issmsettings = issmsettings()
+    """
+
+    def __init__(self):  # {{{
+        self.results_on_nodes = []
+        self.io_gather = 0
+        self.lowmem = 0
+        self.output_frequency = 0
+        self.coupling_frequency = 0
+        self.checkpoint_frequency = 0
+        self.waitonlock = 0
+        self.solver_residue_threshold = 0
+
+        # Set defaults
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = "   general issmsettings parameters:\n"
+        s += '{}\n'.format(fielddisplay(self, "results_on_nodes", "list of output for which results will be output for all the nodes of each element, Use 'all' for all output on nodes."))
+        s += '{}\n'.format(fielddisplay(self, "io_gather", "I / O gathering strategy for result outputs (default 1)"))
+        s += '{}\n'.format(fielddisplay(self, "lowmem", "is the memory limited ? (0 or 1)"))
+        s += '{}\n'.format(fielddisplay(self, "output_frequency", "number of time steps between two saves (e.g., 5 means that results are only saved every 5 time steps)"))
+        s += '{}\n'.format(fielddisplay(self, "sb_coupling_frequency", "frequency at which StressBalance solver is coupled (default 1)"))
+        s += '{}\n'.format(fielddisplay(self, "checkpoint_frequency", "frequency at which the runs are being recorded, allowing for a restart"))
+        s += '{}\n'.format(fielddisplay(self, "waitonlock", "maximum number of minutes to wait for batch results, or return 0"))
+        s += '{}\n'.format(fielddisplay(self, "solver_residue_threshold", "throw an error if solver residue exceeds this value (NaN to deactivate)"))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Are we short in memory? (0 faster but requires more memory)
+        self.lowmem = 0
+        # I/O:
+        self.io_gather = 1
+        # Results frequency by default every step
+        self.output_frequency = 1
+        # Coupling frequency of the stress balance solver by default every step
+        self.sb_coupling_frequency = 1
+        # Checkpoints frequency, by default never:
+        self.checkpoint_frequency = 0
+        # This option can be activated to load automatically the results onto 
+        # the model after a parallel run by waiting for the lock file N minutes 
+        # that is generated once the solution has converged
+        # Set to 0 to deactivate
+        self.waitonlock = pow(2, 31) - 1
+        # Throw an error if solver residue exceeds this value
+        self.solver_residue_threshold = 1e-6
+
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        md = checkfield(md, 'fieldname', 'settings.results_on_nodes', 'stringrow', 1)
+        md = checkfield(md, 'fieldname', 'settings.io_gather', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'settings.lowmem', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'settings.output_frequency', 'numel', [1], '>=', 1)
+        md = checkfield(md, 'fieldname', 'settings.sb_coupling_frequency', 'numel', [1], '>=', 1)
+        md = checkfield(md, 'fieldname', 'settings.checkpoint_frequency', 'numel', [1], '>=', 0)
+        md = checkfield(md, 'fieldname', 'settings.waitonlock', 'numel', [1])
+        md = checkfield(md, 'fieldname', 'settings.solver_residue_threshold', 'numel', [1], '>', 0)
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'data', self.results_on_nodes, 'name', 'md.settings.results_on_nodes', 'format', 'StringArray')
+        WriteData(fid, prefix, 'object', self, 'class', 'settings', 'fieldname', 'io_gather', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'settings', 'fieldname', 'lowmem', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'settings', 'fieldname', 'output_frequency', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'settings', 'fieldname', 'sb_coupling_frequency', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'settings', 'fieldname', 'checkpoint_frequency', 'format', 'Integer')
+
+        if self.waitonlock > 0:
+            WriteData(fid, prefix, 'name', 'md.settings.waitonlock', 'data', True, 'format', 'Boolean')
+        else:
+            WriteData(fid, prefix, 'name', 'md.settings.waitonlock', 'data', False, 'format', 'Boolean')
+
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'solver_residue_threshold', 'format', 'Double')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/levelset.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/levelset.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/levelset.js	(revision 27955)
@@ -0,0 +1,74 @@
+//LEVELSET class definition
+//
+//   Usage:
+//      levelset=new levelset();
+
+function levelset (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//stabilization = 1 by default
+		this.stabilization		= 1;
+		this.reinit_frequency	= 5;
+		this.kill_icebergs      = 1;
+		this.migration_max      = 1e12; //No need for general cases, unless specified
+
+		//Linear elements by default
+		this.fe='P1';
+	
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   Level-set parameters:'));
+		fielddisplay(this,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
+		fielddisplay(this,'spclevelset','Levelset constraints (NaN means no constraint)');
+		fielddisplay(this,'reinit_frequency','Amount of time steps after which the levelset function in re-initialized (NaN: no re-initialization).');
+		fielddisplay(this,'kill_icebergs','remove floating icebergs to prevent rigid body motions (1: true, 0: false)');
+		fielddisplay(this,'migration_max','maximum allowed migration rate (m/a)');
+		fielddisplay(this,'fe','Finite Element type: "P1" (default), or "P2"');
+
+	}// }}}
+    this.extrude = function(md) {//{{{
+        this.spclevelset=project3d(md,'vector',this.spclevelset,'type','node');
+        return this;
+    }//}}}
+	this.classname= function(){// {{{
+		return "levelset";
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) { // {{{
+		//Early return
+		if (solution!='TransientSolution' | md.trans.ismovingfront==0) return;
+
+		checkfield(md,'fieldname','levelset.spclevelset','Inf',1,'timeseries',1);
+		checkfield(md,'fieldname','levelset.stabilization','values',[0,1,2,5]);
+		checkfield(md,'fieldname','levelset.kill_icebergs','numel',1,'values',[0, 1]);
+		checkfield(md,'fieldname','levelset.migration_max','numel',1,'NaN',1,'Inf',1,'>',0);
+		checkfield(md,'fieldname','levelset.fe','values',['P1','P2']);
+	} //}}}
+	this.marshall=function(md,prefix,fid) { //{{{
+
+		let yts=md.constants.yts;
+
+		WriteData(fid,prefix,'object',this,'fieldname','stabilization','format','Integer');
+		WriteData(fid,prefix,'object',this,'fieldname','spclevelset','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'object',this,'fieldname','reinit_frequency','format','Integer');
+		WriteData(fid,prefix,'object',this,'fieldname','kill_icebergs','format','Boolean');
+		WriteData(fid,prefix,'object',this,'fieldname','migration_max','format','Double','scale',1/yts);
+		WriteData(fid,prefix,'object',this,'fieldname','fe','format','String');
+	}//}}}
+		this.fix=function() { //{{{
+			this.spclevelset=NullFix(this.spclevelset,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.stabilization		= 0;
+	this.spclevelset		= NaN;
+	this.reinit_frequency	= NaN;
+	this.kill_icebergs     	= 0;
+	this.migration_max      = 0.;
+	this.fe              	= 'P1';
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/levelset.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/levelset.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/levelset.m	(revision 27955)
@@ -0,0 +1,89 @@
+%LEVELSET class definition
+%
+%   Usage:
+%      levelset=levelset();
+
+classdef levelset
+	properties (SetAccess=public) 
+		stabilization		= 0;
+		spclevelset			= NaN;
+		reinit_frequency	= 5;
+		kill_icebergs		= 0;
+		migration_max		= 0.;
+		fe					= 'P1';
+	end
+	methods
+		function self = levelset(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('levelset');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Level-set parameters:'));
+			fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
+			fielddisplay(self,'spclevelset','Levelset constraints (NaN means no constraint)');
+			fielddisplay(self,'reinit_frequency','Amount of time steps after which the levelset function in re-initialized');
+			fielddisplay(self,'kill_icebergs','remove floating icebergs to prevent rigid body motions (1: true, 0: false)');
+			fielddisplay(self,'migration_max','maximum allowed migration rate (m/a)');
+			fielddisplay(self,'fe','Finite Element type: ''P1'' (default), or ''P2''');
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+			self.spclevelset=project3d(md,'vector',self.spclevelset,'type','node');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%stabilization = 1 by default
+			self.stabilization    = 1;
+			self.reinit_frequency = 5;
+			self.kill_icebergs    = 1;
+			self.migration_max    = 1e12; % No need for general cases, unless specified
+
+			%Linear elements by default
+			self.fe='P1';
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','levelset.spclevelset','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','levelset.stabilization','values',[0 1 2 5 6]);
+			md = checkfield(md,'fieldname','levelset.kill_icebergs','numel',1,'values',[0 1]);
+			md = checkfield(md,'fieldname','levelset.migration_max','numel',1,'NaN',1,'Inf',1,'>',0);
+			md = checkfield(md,'fieldname','levelset.fe','values',{'P1','P2'});
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','spclevelset','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid,prefix,'object',self,'fieldname','reinit_frequency','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','kill_icebergs','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','migration_max','format','Double','scale',1./yts);
+			WriteData(fid,prefix,'object',self,'fieldname','fe','format','String');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+			writejsdouble(fid,[modelname '.levelset.stabilization'],self.stabilization);
+			writejs1Darray(fid,[modelname '.levelset.spclevelset'],self.spclevelset);
+			writejs1Darray(fid,[modelname '.levelset.reinit_frequency'],self.reinit_frequency);
+			writejsdouble(fid,[modelname '.levelset.kill_icebergs'],self.kill_icebergs);
+			writejsdouble(fid,[modelname '.levelset.migration_max'],self.migration_max);
+		end % }}}
+	end
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/levelset.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/levelset.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/levelset.py	(revision 27955)
@@ -0,0 +1,80 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class levelset(object):
+    """LEVELSET class definition
+
+    Usage:
+        levelset = levelset()
+    """
+
+    def __init__(self):  # {{{
+        self.stabilization = 0
+        self.spclevelset = np.nan
+        self.reinit_frequency = 5
+        self.kill_icebergs = 0
+        self.migration_max = 0
+        self.fe = 'P1'
+
+        # Set defaults
+        self.setdefaultparameters()
+    # }}}
+    def __repr__(self):  # {{{
+        s = '   Level-set parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'stabilization', '0: no, 1: artificial_diffusivity, 2: streamline upwinding'))
+        s += '{}\n'.format(fielddisplay(self, 'spclevelset', 'Levelset constraints (NaN means no constraint)'))
+        s += '{}\n'.format(fielddisplay(self, 'reinit_frequency', 'Amount of time steps after which the levelset function in re-initialized'))
+        s += '{}\n'.format(fielddisplay(self, 'kill_icebergs', 'remove floating icebergs to prevent rigid body motions (1: true, 0: false)'))
+        s += '{}\n'.format(fielddisplay(self, 'migration_max', 'maximum allowed migration rate (m/a)'))
+        s += '{}\n'.format(fielddisplay(self, 'fe', 'Finite Element type: \'P1\' (default), or \'P2\''))
+
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Stabilization = 1 by default
+        self.stabilization = 1
+        self.reinit_frequency = 5
+        self.kill_icebergs = 1
+        self.migration_max = 1e12 # No need for general cases, unless specified
+
+        # Linear elements by default
+        self.fe = 'P1'
+
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if (solution != 'TransientSolution') or (not md.transient.ismovingfront):
+            return md
+
+        md = checkfield(md, 'fieldname', 'levelset.spclevelset', 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'levelset.stabilization', 'numel', [1], 'values', [0, 1, 2, 5, 6])
+        md = checkfield(md, 'fieldname', 'levelset.kill_icebergs', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'levelset.migration_max', 'numel', [1], 'NaN', 1, 'Inf', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'levelset.fe', 'values', ['P1', 'P2'])
+
+        return md
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.spclevelset = project3d(md, 'vector', self.spclevelset, 'type', 'node')
+        return self
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'stabilization', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'spclevelset', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'reinit_frequency', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'kill_icebergs', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'migration_max', 'format', 'Double', 'scale', 1 / yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'fe', 'format', 'String')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/linearbasalforcings.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/linearbasalforcings.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/linearbasalforcings.m	(revision 27955)
@@ -0,0 +1,105 @@
+%LINEAR BASAL FORCINGS class definition
+%
+%   Usage:
+%      linearbasalforcings=linearbasalforcings();
+
+classdef linearbasalforcings
+	properties (SetAccess=public)
+		deepwater_melting_rate    = 0.;
+		upperwater_melting_rate   = 0.;
+		deepwater_elevation       = 0.;
+		upperwater_elevation      = 0.;
+		groundedice_melting_rate  = NaN;
+		perturbation_melting_rate = NaN;
+		geothermalflux            = NaN;
+	end
+	methods
+		function self = linearbasalforcings(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(linearbasalforcings(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.perturbation_melting_rate=project3d(md,'vector',self.perturbation_melting_rate,'type','node','layer',1);
+			self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1);
+			self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1); %bedrock only gets geothermal flux
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.groundedice_melting_rate),
+				self.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.groundedice_melting_rate specified: values set as zero');
+			end
+			% TODO: Should we be setting self.geothermalflux here (we do so in linearbasalforcings.py)?
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%default values for melting parameterization
+			self.deepwater_melting_rate = 50.;
+			self.upperwater_melting_rate = 0.;
+			self.deepwater_elevation    = -800.;
+			self.upperwater_elevation   = -400.;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if numel(md.basalforcings.perturbation_melting_rate)>1
+				md = checkfield(md,'fieldname','basalforcings.perturbation_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+			end
+
+			if ismember('MasstransportAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.ismasstransport==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'singletimeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.upperwater_melting_rate','>=',0,'singletimeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','singletimeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<=',0,'singletimeseries',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'singletimeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.upperwater_melting_rate','>=',0,'singletimeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','singletimeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<=',0,'singletimeseries',1);
+			end
+			if ismember('ThermalAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.isthermal==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'singletimeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.upperwater_melting_rate','>=',0,'singletimeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','singletimeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<=',0,'singletimeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   basal forcings parameters:'));
+
+			fielddisplay(self,'deepwater_melting_rate','basal melting rate (positive if melting applied for floating ice whith base < deepwater_elevation) [m/yr]');
+			fielddisplay(self,'deepwater_elevation','elevation of ocean deepwater [m]');
+			fielddisplay(self,'upperwater_melting_rate','basal melting rate (positive if melting applied for floating ice whith base >= upperwater_elevation) [m/yr]');
+			fielddisplay(self,'upperwater_elevation','elevation of ocean upperwater [m]');
+			fielddisplay(self,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+			fielddisplay(self,'perturbation_melting_rate','basal melting rate perturbation added to computed melting rate (positive if melting) [m/yr]');
+			fielddisplay(self,'geothermalflux','geothermal heat flux [W/m^2]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.basalforcings.model','data',2,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','perturbation_melting_rate','format','DoubleMat','name','md.basalforcings.perturbation_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','name','md.basalforcings.groundedice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','name','md.basalforcings.geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','deepwater_melting_rate','format','DoubleMat','mattype',3,'timeserieslength',2,'name','md.basalforcings.deepwater_melting_rate','scale',1./yts,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'fieldname','deepwater_elevation','format','DoubleMat','mattype',3,'name','md.basalforcings.deepwater_elevation','yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'fieldname','upperwater_melting_rate','format','DoubleMat','mattype',3,'timeserieslength',2,'name','md.basalforcings.upperwater_melting_rate','scale',1./yts,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'fieldname','upperwater_elevation','format','DoubleMat','mattype',3,'name','md.basalforcings.upperwater_elevation','yts',md.constants.yts)
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/linearbasalforcings.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/linearbasalforcings.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/linearbasalforcings.py	(revision 27955)
@@ -0,0 +1,118 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class linearbasalforcings(object):
+    """LINEAR BASAL FORCINGS class definition
+
+    Usage:
+        basalforcings = linearbasalforcings()
+    """
+
+    def __init__(self, *args):  # {{{
+        nargs = len(args)
+        if nargs == 0:
+            print('empty init')
+            self.deepwater_melting_rate = 0.
+            self.deepwater_elevation = 0.
+            self.upperwater_melting_rate = 0.
+            self.upperwater_elevation = 0.
+            self.groundedice_melting_rate = float('NaN')
+            self.perturbation_melting_rate = float('NaN')
+            self.geothermalflux = float('NaN')
+
+            # set defaults
+            self.setdefaultparameters()
+        elif nargs == 1 and args[0].__module__ == 'basalforcings':
+            print('converting basalforings to linearbasalforcings')
+            inv = args[0]
+            self.groundedice_melting_rate = inv.groundedice_melting_rate
+            self.perturbation_melting_rate = float('NaN')
+            self.geothermalflux = inv.geothermalflux
+            self.deepwater_melting_rate = 0.
+            self.deepwater_elevation = 0.
+            self.upperwater_melting_rate = 0.
+            self.upperwater_elevation = 0.
+
+            # Set defaults
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   linear basal forcings parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, "deepwater_melting_rate", "basal melting rate (positive if melting applied for floating ice whith base < deepwater_elevation) [m/yr]"))
+        s += '{}\n'.format(fielddisplay(self, "deepwater_elevation", "elevation of ocean deepwater [m]"))
+        s += '{}\n'.format(fielddisplay(self, "upperwater_melting_rate", "upper melting rate (positive if melting applied for floating ice whith base >= upperwater_elevation) [m/yr]"))
+        s += '{}\n'.format(fielddisplay(self, "upperwater_elevation", "elevation of ocean upper water [m]"))
+        s += '{}\n'.format(fielddisplay(self, "groundedice_melting_rate", "basal melting rate (positive if melting) [m/yr]"))
+        s += '{}\n'.format(fielddisplay(self, "perturbation_melting_rate", "perturbation applied to computed melting rate (positive if melting) [m/yr]"))
+        s += '{}\n'.format(fielddisplay(self, "geothermalflux", "geothermal heat flux [W/m^2]"))
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.perturbation_melting_rate = project3d(md, 'vector', self.perturbation_melting_rate, 'type', 'node', 'layer', 1)
+        self.groundedice_melting_rate = project3d(md, 'vector', self.groundedice_melting_rate, 'type', 'node', 'layer', 1)
+        self.geothermalflux = project3d(md, 'vector', self.geothermalflux, 'type', 'node', 'layer', 1) # Bedrock only gets geothermal flux
+        return self
+    # }}}
+
+    def initialize(self, md):  # {{{
+        if np.all(np.isnan(self.groundedice_melting_rate)):
+            self.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices))
+            print("      no basalforcings.groundedice_melting_rate specified: values set as zero")
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.deepwater_melting_rate = 50.0
+        self.deepwater_elevation = -800.0
+        self.upperwater_melting_rate = 0.0
+        self.upperwater_elevation = -400.0
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if not np.all(np.isnan(self.perturbation_melting_rate)):
+            md = checkfield(md, 'fieldname', 'basalforcings.perturbation_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+        if 'MasstransportAnalysis' in analyses and not solution == 'TransientSolution' and not md.transient.ismasstransport:
+            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_melting_rate', '>=', 0, 'singletimeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.upperwater_melting_rate', '>=', 0, 'singletimeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_elevation', '<', 'basalforcings.upperwater_elevation', 'singletimeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.upperwater_elevation', '<=', 0, 'singletimeseries', 1)
+        if 'BalancethicknessAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_melting_rate', '>=', 0, 'singletimeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.upperwater_melting_rate', '>=', 0, 'singletimeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_elevation', '<', 'basalforcings.upperwater_elevation', 'singletimeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.upperwater_elevation', '<=', 0, 'singletimeseries', 1)
+        if 'ThermalAnalysis' in analyses and not solution == 'TransientSolution' and not md.transient.isthermal:
+            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_melting_rate', '>=', 0, 'singletimeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.upperwater_melting_rate', '>=', 0, 'singletimeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_elevation', '<', 'basalforcings.upperwater_elevation', 'singletimeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.upperwater_elevation', '<=', 0, 'singletimeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.geothermalflux', 'NaN', 1, 'Inf', 1, 'timeseries', 1, '>=', 0)
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'name', 'md.basalforcings.model', 'data', 2, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'perturbation_melting_rate', 'name', 'md.basalforcings.perturbation_melting_rate', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'groundedice_melting_rate', 'name', 'md.basalforcings.groundedice_melting_rate', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'geothermalflux', 'name', 'md.basalforcings.geothermalflux', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'deepwater_melting_rate', 'format', 'DoubleMat', 'mattype', 3, 'timeserieslength', 2, 'name', 'md.basalforcings.deepwater_melting_rate', 'scale', 1. / yts, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'deepwater_elevation', 'format', 'DoubleMat', 'mattype', 3, 'name', 'md.basalforcings.deepwater_elevation', 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'upperwater_melting_rate', 'format', 'DoubleMat', 'mattype', 3, 'timeserieslength', 2, 'name', 'md.basalforcings.upperwater_melting_rate', 'scale', 1. / yts, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'upperwater_elevation', 'format', 'DoubleMat', 'mattype', 3, 'name', 'md.basalforcings.upperwater_elevation', 'yts', yts)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/linearbasalforcingsarma.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/linearbasalforcingsarma.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/linearbasalforcingsarma.m	(revision 27955)
@@ -0,0 +1,213 @@
+%LINEAR BASAL FORCINGS ARMA class definition
+%
+%   Usage:
+%      linearbasalforcingsarma=linearbasalforcingsarma();
+
+classdef linearbasalforcingsarma
+	
+	properties (SetAccess=public) 
+		num_basins                = 0;
+		num_params                = 0;
+		num_breaks                = 0;
+		polynomialparams          = NaN;
+      datebreaks                = NaN;
+      ar_order                  = 0;
+      ma_order                  = 0;
+      arma_timestep             = 0;
+      arlag_coefs               = NaN;
+      malag_coefs               = NaN;
+      basin_id                  = NaN;
+		groundedice_melting_rate  = NaN;
+		deepwater_elevation       = NaN;
+		upperwater_melting_rate   = NaN;
+		upperwater_elevation      = NaN;
+		geothermalflux            = NaN;
+	end
+	methods
+		function self = linearbasalforcingsarma(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1); 
+			self.deepwater_elevation=project3d(md,'vector',self.deepwater_elevation,'type','node','layer',1); 
+			self.upperwater_melting_rate=project3d(md,'vector',self.upperwater_melting_rate,'type','node','layer',1); 
+			self.upperwater_elevation=project3d(md,'vector',self.upperwater_elevation,'type','node','layer',1); 
+			self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1); %bedrock only gets geothermal flux
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.groundedice_melting_rate),
+				self.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.groundedice_melting_rate specified: values set as zero');
+			end
+			if isnan(self.trend)
+            self.trend = zeros(1,self.num_basins); %no trend in SMB
+            disp('      basalforcings.trend (trend) not specified: value set to 0');
+         end
+         if (self.ar_order==0)
+            self.ar_order = 1; %dummy 1 value for autoregression
+            self.arlag_coefs      = zeros(self.num_basins,self.ar_order); %autoregression coefficients all set to 0
+            disp('      basalforcings.ar_order (order of autoregressive model) not specified: order of autoregressive model set to 0');
+         end
+         if (self.ma_order==0)
+            self.ma_order = 1; %dummy 1 value for moving-average
+            self.arlag_coefs      = zeros(self.num_basins,self.ma_order); %moving-average coefficients all set to 0
+            disp('      basalforcings.ma_order (order of moving-average model) not specified: order of moving-average model set to 0');
+         end
+         if (self.arma_timestep==0)
+            self.arma_timestep = md.timestepping.time_step; %ARMA model has no prescribed time step
+            disp('      basalforcings.arma_timestep (timestep of ARMA model) not specified: set to md.timestepping.time_step');
+         end
+         if isnan(self.arlag_coefs)
+            self.arlag_coefs = zeros(self.num_basins,self.ar_order); %autoregression model of order 0
+            disp('      basalforcings.arlag_coefs (AR lag coefficients) not specified: order of autoregressive model set to 0');
+         end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			self.ar_order    = 0.0; %autoregression model of order 0
+         self.ma_order    = 0.0; %moving-average model of order 0
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.ismasstransport==0),
+				nbas = md.basalforcings.num_basins;
+				nprm = md.basalforcings.num_params;
+				nbrk = md.basalforcings.num_breaks;
+				md = checkfield(md,'fieldname','basalforcings.num_basins','numel',1,'NaN',1,'Inf',1,'>',0);
+				md = checkfield(md,'fieldname','basalforcings.num_params','numel',1,'NaN',1,'Inf',1,'>',0);
+				md = checkfield(md,'fieldname','basalforcings.num_breaks','numel',1,'NaN',1,'Inf',1,'>=',0);
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','NaN',1,'Inf',1,'size',[1,md.basalforcings.num_basins],'numel',md.basalforcings.num_basins);
+				md = checkfield(md,'fieldname','basalforcings.upperwater_melting_rate','NaN',1,'Inf',1,'>=',0,'size',[1,md.basalforcings.num_basins],'numel',md.basalforcings.num_basins);
+				md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','NaN',1,'Inf',1,'<=',0,'size',[1,md.basalforcings.num_basins],'numel',md.basalforcings.num_basins);
+            md = checkfield(md,'fieldname','basalforcings.basin_id','Inf',1,'>=',0,'<=',md.basalforcings.num_basins,'size',[md.mesh.numberofelements,1]);
+            if(nbas>1 && nbrk>=1 && nprm>1)
+					md = checkfield(md,'fieldname','basalforcings.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nbrk+1,nprm],'numel',nbas*(nbrk+1)*nprm);
+				elseif(nbas==1)
+					md = checkfield(md,'fieldname','basalforcings.polynomialparams','NaN',1,'Inf',1,'size',[nprm,nbrk+1],'numel',nbas*(nbrk+1)*nprm);
+				elseif(nbrk==0)
+					md = checkfield(md,'fieldname','basalforcings.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nprm],'numel',nbas*(nbrk+1)*nprm);
+				elseif(nprm==1)
+					md = checkfield(md,'fieldname','basalforcings.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nbrk+1],'numel',nbas*(nbrk+1)*nprm);
+				end
+				md = checkfield(md,'fieldname','basalforcings.ar_order','numel',1,'NaN',1,'Inf',1,'>=',0);
+				md = checkfield(md,'fieldname','basalforcings.ma_order','numel',1,'NaN',1,'Inf',1,'>=',0);
+            md = checkfield(md,'fieldname','basalforcings.arma_timestep','numel',1,'NaN',1,'Inf',1,'>=',md.timestepping.time_step); %moving-average time step cannot be finer than ISSM timestep
+            md = checkfield(md,'fieldname','basalforcings.arlag_coefs','NaN',1,'Inf',1,'size',[md.basalforcings.num_basins,md.basalforcings.ar_order]);
+            md = checkfield(md,'fieldname','basalforcings.malag_coefs','NaN',1,'Inf',1,'size',[md.basalforcings.num_basins,md.basalforcings.ma_order]);
+				if(nbrk>0)
+					md = checkfield(md,'fieldname','basalforcings.datebreaks','NaN',1,'Inf',1,'size',[nbas,nbrk]);
+				elseif(numel(md.basalforcings.datebreaks)==0 || all(isnan(md.basalforcings.datebreaks)))
+					;
+				else
+					error('md.basalforcings.num_breaks is 0 but md.basalforcings.datebreaks is not empty');
+         end
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				error('not implemented yet!');
+			end
+			if ismember('ThermalAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.isthermal==0),
+				error('not implemented yet!');
+			end
+			if numel(md.basalforcings.geothermalflux)>1
+            md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+         end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   autoregression linear basal forcings parameters:'));
+			disp(sprintf('   autoregressive model is applied for deepwater_melting_rate'));
+
+			fielddisplay(self,'num_basins','number of different basins [unitless]');
+         fielddisplay(self,'basin_id','basin number assigned to each element [unitless]');
+         fielddisplay(self,'num_breaks','number of different breakpoints in the piecewise-polynomial (separating num_breaks+1 periods)');
+         fielddisplay(self,'num_params','number of different parameters in the piecewise-polynomial (1:intercept only, 2:with linear trend, 3:with quadratic trend, etc.)');
+         fielddisplay(self,'polynomialparams','coefficients for the polynomial (const,trend,quadratic,etc.),dim1 for basins,dim2 for periods,dim3 for orders');
+         disp(sprintf('%51s  ex: polyparams=cat(3,intercepts,trendlinearcoefs,trendquadraticcoefs)',' '));
+         fielddisplay(self,'datebreaks','dates at which the breakpoints in the piecewise polynomial occur (1 row per basin) [yr]');
+			fielddisplay(self,'ar_order','order of the autoregressive model [unitless]');
+         fielddisplay(self,'ar_order','order of the moving-average model [unitless]');
+         fielddisplay(self,'arma_timestep','time resolution of the ARMA model [yr]');
+         fielddisplay(self,'arlag_coefs','basin-specific vectors of AR lag coefficients [unitless]');
+         fielddisplay(self,'malag_coefs','basin-specific vectors of MA lag coefficients [unitless]');
+			fielddisplay(self,'deepwater_elevation','basin-specific elevation of ocean deepwater [m]');
+			fielddisplay(self,'upperwater_melting_rate','basin-specific basal melting rate (positive if melting applied for floating ice whith base >= upperwater_elevation) [m/yr]');
+			fielddisplay(self,'upperwater_elevation','basin-specific elevation of ocean upperwater [m]');
+			fielddisplay(self,'groundedice_melting_rate','node-specific basal melting rate (positive if melting) [m/yr]');
+			fielddisplay(self,'geothermalflux','node-specific geothermal heat flux [W/m^2]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+			nbas = md.basalforcings.num_basins;
+         nprm = md.basalforcings.num_params;
+         nper = md.basalforcings.num_breaks+1;
+         % Scale the parameters %
+         polyparamsScaled   = md.basalforcings.polynomialparams;
+         polyparams2dScaled = zeros(nbas,nper*nprm);
+         if(nprm>1)
+            % Case 3D %
+            if(nbas>1 && nper>1)
+               for(ii=[1:nprm])
+                  polyparamsScaled(:,:,ii) = polyparamsScaled(:,:,ii)*((1/yts)^(ii));
+               end
+               % Fit in 2D array %
+               for(ii=[1:nprm])
+                  jj = 1+(ii-1)*nper;
+                  polyparams2dScaled(:,jj:jj+nper-1) = polyparamsScaled(:,:,ii);
+               end
+            % Case 2D and higher-order params at increasing row index %
+            elseif(nbas==1)
+               for(ii=[1:nprm])
+                  polyparamsScaled(ii,:) = polyparamsScaled(ii,:)*((1/yts)^(ii));
+               end
+               % Fit in row array %
+               for(ii=[1:nprm])
+                  jj = 1+(ii-1)*nper;
+                  polyparams2dScaled(1,jj:jj+nper-1) = polyparamsScaled(ii,:);
+               end
+            % Case 2D and higher-order params at incrasing column index %
+            elseif(nper==1)
+               for(ii=[1:nprm])
+                  polyparamsScaled(:,ii) = polyparamsScaled(:,ii)*((1/yts)^(ii));
+               end
+               % 2D array is already in correct format %
+               polyparams2dScaled = polyparamsScaled;
+            end
+         else
+				polyparamsScaled   = polyparamsScaled*(1/yts);
+            % 2D array is already in correct format %
+            polyparams2dScaled = polyparamsScaled;
+         end
+         if(nper==1) %a single period (no break date)
+            dbreaks = zeros(nbas,1); %dummy
+         else
+            dbreaks = md.basalforcings.datebreaks;
+         end
+
+			WriteData(fid,prefix,'name','md.basalforcings.model','data',9,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','name','md.basalforcings.groundedice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','name','md.basalforcings.geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','num_basins','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','num_params','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','num_breaks','format','Integer');
+         WriteData(fid,prefix,'object',self,'fieldname','ar_order','format','Integer');
+         WriteData(fid,prefix,'object',self,'fieldname','ma_order','format','Integer');
+         WriteData(fid,prefix,'object',self,'fieldname','arma_timestep','format','Double','scale',yts);
+         WriteData(fid,prefix,'object',self,'fieldname','basin_id','data',self.basin_id-1,'name','md.basalforcings.basin_id','format','IntMat','mattype',2); %0-indexed
+         WriteData(fid,prefix,'object',self,'fieldname','arlag_coefs','format','DoubleMat','name','md.basalforcings.arlag_coefs','yts',yts);	
+         WriteData(fid,prefix,'object',self,'fieldname','malag_coefs','format','DoubleMat','name','md.basalforcings.malag_coefs','yts',yts);	
+			WriteData(fid,prefix,'data',polyparams2dScaled,'name','md.basalforcings.polynomialparams','format','DoubleMat');
+			WriteData(fid,prefix,'data',dbreaks,'name','md.basalforcings.datebreaks','format','DoubleMat','scale',yts);
+			WriteData(fid,prefix,'object',self,'fieldname','deepwater_elevation','format','DoubleMat','name','md.basalforcings.deepwater_elevation');
+			WriteData(fid,prefix,'object',self,'fieldname','upperwater_melting_rate','format','DoubleMat','name','md.basalforcings.upperwater_melting_rate','scale',1./yts);
+			WriteData(fid,prefix,'object',self,'fieldname','upperwater_elevation','format','DoubleMat','name','md.basalforcings.upperwater_elevation');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/linearbasalforcingsarma.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/linearbasalforcingsarma.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/linearbasalforcingsarma.py	(revision 27955)
@@ -0,0 +1,200 @@
+import numpy as np
+
+from checkfield import *
+from fielddisplay import fielddisplay
+from project3d import *
+from WriteData import *
+
+class linearbasalforcingsarma(object):
+    """linearbasalforcingsarma class definition
+
+    Usage:
+        linearbasalforcingsarma = linearbasalforcingsarma()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.num_basins = 0
+        self.num_params = 0
+        self.num_breaks = 0
+        self.polynomialparams = np.nan
+        self.datebreaks       = np.nan
+        self.ar_order = 0
+        self.ma_order = 0
+        self.arma_timestep = 0
+        self.arlag_coefs = np.nan
+        self.malag_coefs = np.nan
+        self.basin_id = np.nan
+        self.groundedice_melting_rate = np.nan
+        self.deepwater_elevation = np.nan
+        self.upperwater_melting_rate = np.nan
+        self.upperwater_elevation = np.nan
+        self.geothermalflux = np.nan
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   surface forcings parameters:\n'
+        s += '   autoregressive model is applied for deepwater_melting_rate\n'
+        s += '{}\n'.format(fielddisplay(self, 'num_basins', 'number of different basins [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'basin_id', 'basin number assigned to each element [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'num_breaks', 'number of different breakpoints in the piecewise-polynomial (separating num_breaks+1 periods)'))
+        s += '{}\n'.format(fielddisplay(self, 'num_params', 'number of different parameters in the piecewise-polynomial (1:intercept only, 2:with linear trend, 3:with quadratic trend, etc.)'))
+        s += '{}\n'.format(fielddisplay(self, 'polynomialparams', 'coefficients for the polynomial (const,trend,quadratic,etc.),dim1 for basins,dim2 for periods,dim3 for orders, ex: polyparams=cat(num_params,intercepts,trendlinearcoefs,trendquadraticcoefs)'))
+        s += '{}\n'.format(fielddisplay(self, 'datebreaks', 'dates at which the breakpoints in the piecewise polynomial occur (1 row per basin) [yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'ar_order', 'order of the autoregressive model [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'ma_order', 'order of the moving-average model [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'arma_timestep', 'time resolution of the ARMA model [yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'arlag_coefs', 'basin-specific vectors of AR lag coefficients [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'malag_coefs', 'basin-specific vectors of MA lag coefficients [unitless]'))
+        s += '{}\n'.format(fielddisplay(self, 'deepwater_elevation', 'basin-specific elevation of ocean deepwater [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'upperwater_melting_rate', 'basin-specic basal melting rate (positive if melting applied for floating ice whith base >= upperwater_elevation) [m/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'upperwater_elevation', 'basin-specific elevation of ocean upperwater [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'groundedice_melting_rate','node-specific basal melting rate (positive if melting) [m/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'geothermalflux','node-specific geothermal heat flux [W/m^2]'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.ar_order = 0.0 # Autoregression model of order 0
+        self.ma_order = 0.0 # Moving-average model of order 0
+        return self
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self # Nothing for now
+    # }}}
+
+    def initialize(self, md):  # {{{
+        if np.all(np.isnan(self.groundedice_melting_rate)):
+            self.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices))
+            print("      no basalforcings.groundedice_melting_rate specified: values set as zero")
+        if np.all(np.isnan(self.trend)):
+            self.trend = np.zeros((1, self.num_basins)) # No trend in SMB
+            print('      basalforcings.trend (trend) not specified: value set to 0')
+        if self.ar_order == 0:
+            self.ar_order = 1 # Dummy 1 value for autoregression
+            self.arlag_coefs = np.zeros((self.num_basins, self.ar_order)) # Autoregression coefficients all set to 0
+            print('      basalforcings.ar_order (order of autoregressive model) not specified: order of autoregressive model set to 0')
+        if self.arma_timestep == 0:
+            self.arma_timestep = md.timestepping.time_step # ARMA model has no prescribed time step
+            print('      basalforcings.arma_timestep (timestep of ARMA model) not specified: set to md.timestepping.time_step')
+        if np.all(np.isnan(self.arlag_coefs)):
+            self.arlag_coefs = np.zeros((self.num_basins, self.ar_order)) # Autoregression model of order 0
+            print('      basalforcings.arlag_coefs (AR lag coefficients) not specified: order of autoregressive model set to 0')
+        if np.all(np.isnan(self.malag_coefs)):
+            self.arlag_coefs = np.zeros((self.num_basins, self.ma_order)) # Moving-average model of order 0
+            print('      basalforcings.malag_coefs (MA lag coefficients) not specified: order of moving-average model set to 0')
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if 'MasstransportAnalysis' in analyses:
+            nbas = md.basalforcings.num_basins;
+            nprm = md.basalforcings.num_params;
+            nbrk = md.basalforcings.num_breaks;
+            md = checkfield(md, 'fieldname', 'basalforcings.num_basins', 'numel', 1, 'NaN', 1, 'Inf', 1, '>', 0)
+            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.num_params', 'numel', 1, 'NaN', 1, 'Inf', 1, '>', 0)
+            md = checkfield(md, 'fieldname', 'basalforcings.num_breaks', 'numel', 1, 'NaN', 1, 'Inf', 1, '>=', 0)
+
+            if len(np.shape(self.deepwater_elevation)) == 1:
+                self.deepwater_elevation = np.array([self.deepwater_elevation])
+                self.upperwater_elevation = np.array([self.upperwater_elevation])
+                self.upperwater_melting_rate = np.array([self.upperwater_melting_rate])
+            if len(np.shape(self.polynomialparams)) == 1:
+                self.polynomialparams = np.array([[self.polynomialparams]])
+            if(nbas>1 and nbrk>=1 and nprm>1):
+                md = checkfield(md,'fieldname','basalforcings.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nbrk+1,nprm],'numel',nbas*(nbrk+1)*nprm)
+            elif(nbas==1):
+                md = checkfield(md,'fieldname','basalforcings.polynomialparams','NaN',1,'Inf',1,'size',[nprm,nbrk+1],'numel',nbas*(nbrk+1)*nprm)
+            elif(nbrk==0):
+                md = checkfield(md,'fieldname','basalforcings.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nprm],'numel',nbas*(nbrk+1)*nprm)
+            elif(nprm==1):
+                md = checkfield(md,'fieldname','basalforcings.polynomialparams','NaN',1,'Inf',1,'size',[nbas,nbrk],'numel',nbas*(nbrk+1)*nprm)
+            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_elevation', 'NaN', 1, 'Inf', 1, 'size', [1, md.basalforcings.num_basins], 'numel', md.basalforcings.num_basins)
+            md = checkfield(md, 'fieldname', 'basalforcings.upperwater_elevation', 'NaN', 1, 'Inf', 1, '<=', 0, 'size', [1, md.basalforcings.num_basins], 'numel', md.basalforcings.num_basins)
+            md = checkfield(md, 'fieldname', 'basalforcings.upperwater_melting_rate', 'NaN', 1, 'Inf', 1,'>=', 0, 'size', [1, md.basalforcings.num_basins], 'numel', md.basalforcings.num_basins)
+            md = checkfield(md, 'fieldname', 'basalforcings.basin_id', 'Inf', 1, '>=', 0, '<=', md.basalforcings.num_basins, 'size', [md.mesh.numberofelements])
+
+
+            md = checkfield(md, 'fieldname', 'basalforcings.ar_order', 'numel', 1, 'NaN', 1, 'Inf', 1, '>=', 0)
+            md = checkfield(md, 'fieldname', 'basalforcings.ma_order', 'numel', 1, 'NaN', 1, 'Inf', 1, '>=', 0)
+            md = checkfield(md, 'fieldname', 'basalforcings.arma_timestep', 'numel', 1, 'NaN', 1, 'Inf', 1, '>=', md.timestepping.time_step) # Autoregression time step cannot be finer than ISSM timestep
+            md = checkfield(md, 'fieldname', 'basalforcings.arlag_coefs', 'NaN', 1, 'Inf', 1, 'size', [md.basalforcings.num_basins, md.basalforcings.ar_order])
+            md = checkfield(md, 'fieldname', 'basalforcings.malag_coefs', 'NaN', 1, 'Inf', 1, 'size', [md.basalforcings.num_basins, md.basalforcings.ma_order])
+            if(nbrk>0):
+                md = checkfield(md, 'fieldname', 'basalforcings.datebreaks', 'NaN', 1, 'Inf', 1, 'size', [nbas,nbrk])
+            elif(np.size(md.basalforcings.datebreaks)==0 or np.all(np.isnan(md.basalforcings.datebreaks))):
+                pass
+            else:
+                raise RuntimeError('md.basalforcings.num_breaks is 0 but md.basalforcings.datebreaks is not empty')
+
+        if 'BalancethicknessAnalysis' in analyses:
+            raise Exception('not implemented yet!')
+        if 'ThermalAnalysis' in analyses and not solution == 'TransientSolution' and not md.transient.isthermal:
+            raise Exception('not implemented yet!')
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+        nbas = md.basalforcings.num_basins;
+        nprm = md.basalforcings.num_params;
+        nper = md.basalforcings.num_breaks+1;
+        # Scale the parameters #
+        polyparamsScaled   = np.copy(md.basalforcings.polynomialparams)
+        polyparams2dScaled = np.zeros((nbas,nper*nprm))
+        if(nprm>1):
+            # Case 3D #
+            if(nbas>1 and nper>1):
+                for ii in range(nprm):
+                    polyparamsScaled[:,:,ii] = polyparamsScaled[:,:,ii]*(1/yts)**(ii+1)
+                # Fit in 2D array #
+                for ii in range(nprm):
+                    polyparams2dScaled[:,ii*nper:(ii+1)*nper] = 1*polyparamsScaled[:,:,ii]
+            # Case 2D and higher-order params at increasing row index #
+            elif(nbas==1):
+                for ii in range(nprm):
+                    polyparamsScaled[ii,:] = polyparamsScaled[ii,:]*(1/yts)**(ii+1)
+                # Fit in row array #
+                for ii in range(nprm):
+                    polyparams2dScaled[0,ii*nper:(ii+1)*nper] = 1*polyparamsScaled[ii,:]
+            # Case 2D and higher-order params at incrasing column index #
+            elif(nper==1):
+                for ii in range(nprm):
+                    polyparamsScaled[:,ii] = polyparamsScaled[:,ii]*(1/yts)**(ii+1)
+                # 2D array is already in correct format #
+                polyparams2dScaled = np.copy(polyparamsScaled)
+        else:
+            polyparamsScaled   = polyparamsScaled*(1/yts)
+            # 2D array is already in correct format #
+            polyparams2dScaled = np.copy(polyparamsScaled)
+        if(nper==1):
+            dbreaks = np.zeros((nbas,1))
+        else:
+            dbreaks = np.copy(md.basalforcings.datebreaks)
+
+        WriteData(fid, prefix, 'name', 'md.basalforcings.model', 'data', 9, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'groundedice_melting_rate', 'name', 'md.basalforcings.groundedice_melting_rate', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'geothermalflux', 'name', 'md.basalforcings.geothermalflux', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'num_basins', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'num_params', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'num_breaks', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'ar_order', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'ma_order', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'arma_timestep', 'format', 'Double', 'scale', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'basin_id', 'data', self.basin_id - 1, 'name', 'md.basalforcings.basin_id', 'format', 'IntMat', 'mattype', 2)  # 0-indexed
+        WriteData(fid, prefix, 'data', polyparams2dScaled, 'name', 'md.basalforcings.polynomialparams', 'format', 'DoubleMat')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'arlag_coefs', 'format', 'DoubleMat', 'name', 'md.basalforcings.arlag_coefs', 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'malag_coefs', 'format', 'DoubleMat', 'name', 'md.basalforcings.malag_coefs', 'yts', yts)
+        WriteData(fid, prefix, 'data', dbreaks, 'name', 'md.basalforcings.datebreaks', 'format', 'DoubleMat','scale',yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'deepwater_elevation', 'format', 'DoubleMat', 'name', 'md.basalforcings.deepwater_elevation')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'upperwater_melting_rate', 'format', 'DoubleMat', 'name', 'md.basalforcings.upperwater_melting_rate', 'scale', 1 / yts, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'upperwater_elevation', 'format', 'DoubleMat', 'name', 'md.basalforcings.upperwater_elevation')
+
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/love.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/love.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/love.m	(revision 27955)
@@ -0,0 +1,245 @@
+%love class definition
+%
+%   Usage:
+%      md.love=love();
+
+classdef love
+	properties (SetAccess=public) 
+		nfreq						= 0;
+		frequencies					= 0;
+		sh_nmax						= 0;
+		sh_nmin						= 0;
+		g0							= 0;
+		r0							= 0;
+		mu0							= 0;
+		Gravitational_Constant		= 0;
+		chandler_wobble				= 0;
+		allow_layer_deletion		= 0;
+		underflow_tol				= 0;
+		pw_threshold				= 0;
+		min_integration_steps	= 0;
+		max_integration_dr	= 0;
+		integration_scheme	= 0;
+		istemporal					= 0;
+		n_temporal_iterations		= 0;
+		time						= 0;
+		love_kernels				= 0;
+		forcing_type				= 0;
+		inner_core_boundary			= 0;
+		core_mantle_boundary		= 0;
+		complex_computation			= 0;
+		quad_precision			= 0;
+		debug=0;
+		hypergeom_table1=0;
+		hypergeom_table2=0;
+		hypergeom_nalpha=0;
+		hypergeom_nz=0;
+		hypergeom_z=0;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. Update old properties here
+
+			if isstruct(self),
+				oldself=self;
+				%Assign property values from struct
+				self=structtoobj(love(),oldself);
+				if isfield(oldself,'int_steps_per_layers')
+					self.min_integration_steps	= self.int_steps_per_layers;
+				end
+			end
+		end% }}}
+	end
+	methods
+		function self = love(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			%we setup an elastic love number computation by default.
+			self.nfreq=1; 
+			self.frequencies=[0]; %Hz
+			self.sh_nmax=256; % .35 degree, 40 km at the equator.
+			self.sh_nmin=1;
+			% work on matlab script for computing g0 for given Earth's structure. 
+			self.g0=9.81; % m/s^2; 
+			self.r0=6371*1e3; %m;
+			self.mu0=1e11; % Pa
+			self.Gravitational_Constant=6.67259e-11; % m^3 kg^-1 s^-2
+			self.chandler_wobble=0;
+			self.allow_layer_deletion=1;
+			self.underflow_tol=1e-16; %threshold of deep to surface love number ratio to trigger the deletion of layer 
+			self.pw_threshold=1e-3; %if relative variation across frequencies is smaller than this ratio, the post-widder transform for time-dependent love numbers is bypassed 
+			self.min_integration_steps=50;
+			self.max_integration_dr=1e4;
+			self.integration_scheme=1;
+			self.istemporal=0;
+			self.n_temporal_iterations=8;
+			self.time=[0]; %s
+			self.love_kernels=0; 
+			self.forcing_type = 11; % surface loading
+			self.inner_core_boundary=1;
+			self.core_mantle_boundary=2;
+			self.complex_computation=0;
+			self.quad_precision=0;
+			self.debug=0;
+			self.hypergeom_table1=1;
+			self.hypergeom_table2=1;
+			self.hypergeom_nalpha=1;
+			self.hypergeom_nz=1;
+			self.hypergeom_z=0;
+		end % }}}
+		function disp(self) % {{{
+			fielddisplay(self,'nfreq','number of frequencies sampled (default: 1, elastic) [Hz]');
+			fielddisplay(self,'frequencies','frequencies sampled (convention defaults to 0 for the elastic case) [Hz]');
+			fielddisplay(self,'sh_nmax','maximum spherical harmonic degree (default: 256, .35 deg, or 40 km at equator)');
+			fielddisplay(self,'sh_nmin','minimum spherical harmonic degree (default: 1)');
+			fielddisplay(self,'g0','adimensioning constant for gravity (default: 10) [m/s^2]');
+			fielddisplay(self,'r0','adimensioning constant for radius (default: 6371*10^3) [m]');
+			fielddisplay(self,'mu0','adimensioning constant for stress (default: 10^11) [Pa]');
+			fielddisplay(self,'Gravitational_Constant','Newtonian constant of gravitation (default: 6.67259e-11 [m^3 kg^-1 s^-2])');
+			fielddisplay(self,'chandler_wobble','includes the inertial terms for the chandler wobble in the rotational feedback love numbers, only for forcing_type=11 (default: 0) (/!\ 1 has not been validated yet)');
+			fielddisplay(self,'allow_layer_deletion','allow for migration of the integration boundary with increasing spherical harmonics degree (default: 1)');			
+			fielddisplay(self,'underflow_tol','threshold of deep to surface love number ratio to trigger the deletion of layers (default: 1e-16)');
+			fielddisplay(self,'pw_threshold','if relative variation across frequencies is smaller than this ratio, the post-widder transform for time-dependent love numbers is bypassed (default (1e-3)');
+			fielddisplay(self,'min_integration_steps','minimum number of radial steps to propagate the yi system from the bottom to the top of each layer (default: 50)');
+			fielddisplay(self,'max_integration_dr','maximum length of radial steps to propagate the yi system from the bottom to the top of each layer (default: 10e3) [m]');
+			fielddisplay(self,'integration_scheme','0: Euler, 1: Midpoint aka Runge-Kutta 2, 2: Runge-Kutta 4 (default: 1)');
+			fielddisplay(self,'istemporal',{'1 for time-dependent love numbers, 0 for frequency-dependent or elastic love numbers (default: 0)', 'If 1: use love class function build_frequencies_from_time to meet consistency'});
+			fielddisplay(self,'n_temporal_iterations','max number of iterations in the inverse Laplace transform. Also the number of spectral samples per time step requested (default: 8)');
+			fielddisplay(self,'time','time vector for deformation if istemporal (default: 0) [s]');
+			fielddisplay(self,'love_kernels','compute love numbers at depth? (default: 0)');
+			fielddisplay(self,'forcing_type',{'integer indicating the nature and depth of the forcing for the Love number calculation (default: 11):','1:  Inner core boundary -- Volumic Potential','2:  Inner core boundary -- Pressure','3:  Inner core boundary -- Loading','4:  Inner core boundary -- Tangential traction','5:  Core mantle boundary -- Volumic Potential','6:  Core mantle boundary -- Pressure','7:  Core mantle boundary -- Loading','8:  Core mantle boundary -- Tangential traction','9:  Surface -- Volumic Potential','10: Surface -- Pressure','11: Surface -- Loading','12: Surface -- Tangential traction '});
+			fielddisplay(self,'inner_core_boundary','interface index in materials.radius locating forcing. Only used for forcing_type 1--4 (default: 1)');
+			fielddisplay(self,'core_mantle_boundary','interface index in materials.radius locating forcing. Only used for forcing_type 5--8 (default: 2)'); 
+			fielddisplay(self,'complex_computation','return love numbers as 0: real (useful for elastic or temporal forms), 1: complex numbers (useful for Fourier spectral form) (default: 0)'); 
+			fielddisplay(self,'quad_precision','toggle computation love numbers and post-widder transform with 32 digit precision, useful for temporal form (default: 1)'); 
+			fielddisplay(self,'debug','outputs yi system matrix prior to solving (default: 0)'); 
+			fielddisplay(self,'hypergeom_table1','table 1 for hypergeometric function, only for EBM rheology (default: [1])'); 
+			fielddisplay(self,'hypergeom_table2','table 2 for hypergeometric function, only for EBM rheology (default: [1])'); 
+			fielddisplay(self,'hypergeom_nalpha','length of hypergeometric table, only for EBM rheology (default: 1)'); 
+			fielddisplay(self,'hypergeom_nz','width of hypergeometric table, only for EBM rheology (default: 1)'); 
+			fielddisplay(self,'hypergeom_z','abscissa for hypergeometric table, only for EBM rheology (default: [0])'); 
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ismember('LoveAnalysis',analyses), return; end
+
+			md = checkfield(md,'fieldname','love.nfreq','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.frequencies','NaN',1,'Inf',1,'numel',md.love.nfreq);
+			md = checkfield(md,'fieldname','love.sh_nmax','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.sh_nmin','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.g0','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.r0','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.mu0','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.Gravitational_Constant','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.chandler_wobble','values',[0 1]);
+			md = checkfield(md,'fieldname','love.allow_layer_deletion','values',[0 1]);
+			md = checkfield(md,'fieldname','love.underflow_tol','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.pw_threshold','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.min_integration_steps','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.max_integration_dr','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.integration_scheme','NaN',1,'Inf',1,'numel',1,'>=',0,'<=',2);
+			md = checkfield(md,'fieldname','love.love_kernels','values',[0 1]);
+			md = checkfield(md,'fieldname','love.forcing_type','NaN',1,'Inf',1,'numel',1,'>',0, '<=', 12);
+			md = checkfield(md,'fieldname','love.complex_computation','NaN',1,'Inf',1,'numel',1,'values',[0 1]);
+			md = checkfield(md,'fieldname','love.quad_precision','NaN',1,'Inf',1,'numel',1,'values',[0 1]);
+			md = checkfield(md,'fieldname','love.debug','NaN',1,'Inf',1,'numel',1,'values',[0 1]);
+
+			md = checkfield(md,'fieldname','love.istemporal','values',[0 1]);
+
+			md = checkfield(md,'fieldname','love.hypergeom_nalpha','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.hypergeom_nz','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','love.hypergeom_z','NaN',1,'Inf',1,'numel',md.love.hypergeom_nz);
+			md = checkfield(md,'fieldname','love.hypergeom_table1','NaN',1,'Inf',1,'numel',md.love.hypergeom_nz*md.love.hypergeom_nalpha);
+			md = checkfield(md,'fieldname','love.hypergeom_table2','NaN',1,'Inf',1,'numel',md.love.hypergeom_nz*md.love.hypergeom_nalpha);
+
+			if md.love.istemporal==1
+				md = checkfield(md,'fieldname','love.n_temporal_iterations','NaN',1,'Inf',1,'numel',1,'>',0);
+				md = checkfield(md,'fieldname','love.time','NaN',1,'Inf',1,'numel',md.love.nfreq/2/md.love.n_temporal_iterations);
+			end
+			if md.love.sh_nmin<=1 & (md.love.forcing_type==1 || md.love.forcing_type==5 || md.love.forcing_type==9)
+				error(['Degree 1 not supported for forcing type ' num2str(md.love.forcing_type) '. Use sh_min>=2 for this kind of calculation.'])
+			end
+
+			if md.love.chandler_wobble==1
+				disp('Warning, Chandler Wobble in Love number calculator has not been validated yet');
+			end
+
+			%need 'litho' material: 
+			if ~isa(md.materials,'materials') | ~sum(strcmpi(md.materials.nature,'litho'))
+				error('Need a ''litho'' material to run a Fourier Love number analysis');
+			end
+
+			mat=find(strcmpi(md.materials.nature,'litho'));
+			if md.love.forcing_type<=4
+				md = checkfield(md,'fieldname','love.inner_core_boundary','NaN',1,'Inf',1,'numel',1,'>',0, '<=', md.materials(mat).numlayers);
+			elseif md.love.forcing_type<=8
+				md = checkfield(md,'fieldname','love.core_mantle_boundary','NaN',1,'Inf',1,'numel',1,'>',0, '<=', md.materials(mat).numlayers);
+			end
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'object',self,'fieldname','nfreq','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','frequencies','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'fieldname','sh_nmax','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','sh_nmin','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','g0','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','r0','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','mu0','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','Gravitational_Constant','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','chandler_wobble','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','allow_layer_deletion','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','underflow_tol','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','pw_threshold','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','min_integration_steps','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','max_integration_dr','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','integration_scheme','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','istemporal','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','n_temporal_iterations','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','complex_computation','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','quad_precision','format','Boolean');
+			%note: no need to marshall the time vector, we have frequencies
+			WriteData(fid,prefix,'object',self,'fieldname','love_kernels','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','forcing_type','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','inner_core_boundary','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','core_mantle_boundary','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','debug','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','hypergeom_table1','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','hypergeom_table2','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','hypergeom_nalpha','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','hypergeom_nz','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','hypergeom_z','format','DoubleMat','mattype',3);
+
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+			error('not implemented yet!');
+		end % }}}
+		function self=build_frequencies_from_time(self) % {{{
+			if ~self.istemporal
+				error('cannot build frequencies for temporal love numbers if love.istemporal==0')
+			end
+			disp('Temporal love numbers: Overriding md.love.nfreq and md.love.frequencies');
+			self.nfreq=length(self.time)*2*self.n_temporal_iterations;
+			self.frequencies=zeros(self.nfreq,1);
+			for i=1:length(self.time)
+				for j=1:2*self.n_temporal_iterations
+					if self.time(i)==0
+						self.frequencies((i-1)*2*self.n_temporal_iterations +j) =0; % convention to avoid marshalling infinite numbers
+					else
+						self.frequencies((i-1)*2*self.n_temporal_iterations +j) = j*log(2)/self.time(i)/2/pi;
+					end
+				end
+			end
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/love.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/love.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/love.py	(revision 27955)
@@ -0,0 +1,232 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from WriteData import WriteData
+
+class love(object):
+    """LOVE - class definition
+
+    Usage:
+        md.love = love()
+    """
+
+    def __init__(self):  # {{{
+        self.nfreq = 0
+        self.frequencies = 0
+        self.sh_nmax = 0
+        self.sh_nmin = 0
+        self.g0 = 0
+        self.r0 = 0
+        self.mu0 = 0
+        self.Gravitational_Constant = 0
+        self.chandler_wobble = 0
+        self.allow_layer_deletion = 0
+        self.underflow_tol = 0
+        self.pw_threshold = 0
+        self.min_integration_steps = 0
+        self.max_integration_dr = 0
+        self.integration_scheme = 0
+        self.istemporal = 0
+        self.n_temporal_iterations = 0
+        self.time = 0
+        self.love_kernels = 0
+        self.forcing_type = 0
+        self.inner_core_boundary = 0
+        self.core_mantle_boundary = 0
+        self.complex_computation = 0
+        self.quad_precision = 0
+        self.hypergeom_table1 = 0
+        self.hypergeom_table2 = 0
+        self.hypergeom_table1 = 0
+        self.hypergeom_nz = 0
+        self.hypergeom_z = 0
+
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '{}\n'.format(fielddisplay(self, 'nfreq', 'number of frequencies sampled (default: 1, elastic) [Hz]'))
+        s += '{}\n'.format(fielddisplay(self, 'frequencies', 'frequencies sampled (convention defaults to 0 for the elastic case) [Hz]'))
+        s += '{}\n'.format(fielddisplay(self, 'sh_nmax', 'maximum spherical harmonic degree (default: 256, .35 deg, or 40 km at equator)'))
+        s += '{}\n'.format(fielddisplay(self, 'sh_nmin', 'minimum spherical harmonic degree (default: 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'g0', 'adimensioning constant for gravity (default: 10) [m/s^2]'))
+        s += '{}\n'.format(fielddisplay(self, 'r0', 'adimensioning constant for radius (default: 6371*10^3) [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'mu0', 'adimensioning constant for stress (default: 10^11) [Pa]'))
+        s += '{}\n'.format(fielddisplay(self, 'Gravitational_Constant', 'Newtonian constant of gravitation (default: 6.67259e-11 [m^3 kg^-1 s^-2])'))
+        s += '{}\n'.format(fielddisplay(self, 'chandler_wobble', 'includes the inertial terms for the chandler wobble in the rotational feedback love numbers, only for forcing_type=11 (default: 0) (/!\\ 1 has not been validated yet)'))
+        s += '{}\n'.format(fielddisplay(self, 'allow_layer_deletion', 'allow for migration of the integration boundary with increasing spherical harmonics degree (default: 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'underflow_tol', 'threshold of deep to surface love number ratio to trigger the deletion of layers (default: 1e-16)'))
+        s += '{}\n'.format(fielddisplay(self, 'pw_threshold', 'if relative variation across frequencies is smaller than this ratio, the post-widder transform for time-dependent love numbers is bypassed (default (1e-3)'))
+        s += '{}\n'.format(fielddisplay(self, 'min_integration_steps', 'minimum number of radial steps to propagate the yi system from the bottom to the top of each layer (default: 50)'))
+        s += '{}\n'.format(fielddisplay(self, 'max_integration_dr', 'maximum length of radial steps to propagate the yi system from the bottom to the top of each layer (default: 10e3) [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'istemporal', ['1 for time-dependent love numbers, 0 for frequency-dependent or elastic love numbers (default: 0)', 'If 1: use fourierlove function build_frequencies_from_time to meet consistency']))
+        s += '{}\n'.format(fielddisplay(self, 'n_temporal_iterations', 'max number of iterations in the inverse Laplace transform. Also the number of spectral samples per time step requested (default: 8)'))
+        s += '{}\n'.format(fielddisplay(self, 'time', 'time vector for deformation if istemporal (default: 0) [s]'))
+        s += '{}\n'.format(fielddisplay(self, 'love_kernels', 'compute love numbers at depth? (default: 0)'))
+        s += '{}\n'.format(fielddisplay(self, 'forcing_type', 'integer indicating the nature and depth of the forcing for the Love number calculation (default: 11):'))
+        s += '{}\n'.format('                                                     1:  Inner core boundary -- Volumic Potential')
+        s += '{}\n'.format('                                                     2:  Inner core boundary -- Pressure')
+        s += '{}\n'.format('                                                     3:  Inner core boundary -- Loading')
+        s += '{}\n'.format('                                                     4:  Inner core boundary -- Tangential traction')
+        s += '{}\n'.format('                                                     5:  Core mantle boundary -- Volumic Potential')
+        s += '{}\n'.format('                                                     6:  Core mantle boundary -- Pressure')
+        s += '{}\n'.format('                                                     7:  Core mantle boundary -- Loading')
+        s += '{}\n'.format('                                                     8:  Core mantle boundary -- Tangential traction')
+        s += '{}\n'.format('                                                     9:  Surface -- Volumic Potential')
+        s += '{}\n'.format('                                                     10: Surface -- Pressure')
+        s += '{}\n'.format('                                                     11: Surface -- Loading')
+        s += '{}\n'.format('                                                     12: Surface -- Tangential traction ')
+        s += '{}\n'.format(fielddisplay(self, 'inner_core_boundary', 'interface index in materials.radius locating forcing. Only used for forcing_type 1--4 (default: 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'core_mantle_boundary', 'interface index in materials.radius locating forcing. Only used for forcing_type 5--8 (default: 2)'))
+        s += '{}\n'.format(fielddisplay(self, 'complex_computation', 'return love numbers as 0: real (useful for elastic or temporal forms), 1: complex numbers (useful for Fourier spectral form) (default: 0)'))
+        s += '{}\n'.format(fielddisplay(self, 'quad_precision', 'toggle computation love numbers and post-widder transform with 32 digit precision, useful for temporal form (default: 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'debug', 'outputs yi system matrix prior to solving (default: 0)'))
+        s += '{}\n'.format(fielddisplay(self, 'hypergeom_table1', 'table 1 for hypergeometric function, only for EBM rheology (default: [1])'))
+        s += '{}\n'.format(fielddisplay(self, 'hypergeom_table2', 'table 2 for hypergeometric function, only for EBM rheology (default: [1])'))
+        s += '{}\n'.format(fielddisplay(self, 'hypergeom_nalpha', 'length of hypergeometric table, only for EBM rheology (default: 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'hypergeom_nz', 'width of hypergeometric table, only for EBM rheology (default: 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'hypergeom_z', 'abscissa for hypergeometric table, only for EBM rheology (default: [0])'))
+
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # We setup an elastic love number computation by default
+        self.nfreq = 1
+        self.frequencies = [0] # Hz
+        self.sh_nmax = 256 # .35 degree, 40 km at the equator
+        self.sh_nmin = 1
+        # Work on Python script for computing g0 for given Earth's structure
+        self.g0 = 9.81 # m/s^2
+        self.r0 = 6371 * 1e3 # m
+        self.mu0 = 1e11 # Pa
+        self.Gravitational_Constant = 6.67259e-11 # m^3 kg^-1 s^-2
+        self.chandler_wobble = 0
+        self.allow_layer_deletion = 1
+        self.underflow_tol = 1e-16 # Threshold of deep to surface love number ratio to trigger the deletion of layer
+        self.pw_threshold = 1e-3 # If relative variation across frequencies is smaller than this ratio, the post-widder transform for time-dependent love numbers is bypassed 
+        self.min_integration_steps=50
+        self.max_integration_dr=1e4
+        self.integration_scheme=1
+        self.istemporal = 0
+        self.n_temporal_iterations = 8
+        self.time = [0] # s
+        self.love_kernels = 0
+        self.forcing_type = 11 # Surface loading
+        self.inner_core_boundary = 1
+        self.core_mantle_boundary = 2
+        self.complex_computation = 0
+        self.quad_precision = 0
+        self.debug = 0
+        self.hypergeom_table1 = 1
+        self.hypergeom_table2 = 1
+        self.hypergeom_nalpha = 1
+        self.hypergeom_nz = 1
+        self.hypergeom_z = 0
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if 'LoveAnalysis' not in analyses:
+            return md
+
+        md = checkfield(md, 'fieldname', 'love.nfreq', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.frequencies', 'NaN', 1, 'Inf', 1, 'numel', md.love.nfreq)
+        md = checkfield(md, 'fieldname', 'love.sh_nmax', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.sh_nmin', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.g0', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.r0', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.mu0', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.Gravitational_Constant', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.chandler_wobble', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'love.allow_layer_deletion', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'love.underflow_tol', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.pw_threshold', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.min_integration_steps', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.max_integration_dr', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.integration_scheme', 'NaN', 1, 'Inf', 1, 'numel', 1, '>=', 0, '<=', 2)
+        md = checkfield(md, 'fieldname', 'love.love_kernels', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'love.forcing_type', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0, '<=', 12)
+        md = checkfield(md, 'fieldname', 'love.complex_computation', 'NaN', 1, 'Inf', 1, 'numel', 1, 'values', [0, 1])
+
+        md = checkfield(md, 'fieldname', 'love.istemporal', 'values', [0, 1])
+
+        md = checkfield(md, 'fieldname', 'love.hypergeom_nalpha', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.hypergeom_nz', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'love.hypergeom_z', 'NaN', 1, 'Inf', 1, 'numel', md.love.hypergeom_nz)
+        md = checkfield(md, 'fieldname', 'love.hypergeom_table1', 'NaN', 1, 'Inf', 1, 'numel', md.love.hypergeom_nz * md.love.hypergeom_nalpha)
+        md = checkfield(md, 'fieldname', 'love.hypergeom_table2', 'NaN', 1, 'Inf', 1, 'numel', md.love.hypergeom_nz * md.love.hypergeom_nalpha)
+
+        if md.love.istemporal:
+            md = checkfield(md, 'fieldname', 'love.n_temporal_iterations', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+            md = checkfield(md, 'fieldname', 'love.time', 'NaN', 1, 'Inf', 1, 'numel', md.love.nfreq / 2 / md.love.n_temporal_iterations)
+        if md.love.sh_nmin <= 1 and (md.love.forcing_type == 1 or md.love.forcing_type == 5 or md.love.forcing_type == 9):
+            raise RuntimeError('Degree 1 not supported for forcing type {}. Use sh_min >= 2 for this kind of calculation.'.format(md.love.forcing_type))
+
+        if md.love.chandler_wobble  == 1:
+            print('Warning: Chandler wobble in Love number calculator has not been validated yet')
+
+        # Need 'litho' material
+        if md.materials.__class__.__name__ != 'materials' or 'litho' not in md.materials.nature:
+            raise RuntimeError('Need a \'litho\' material to run a Fourier Love number analysis')
+
+        mat = np.where(np.array(md.materials.nature) == 'litho')[0]
+        if md.love.forcing_type <= 4:
+            md = checkfield(md, 'fieldname', 'love.inner_core_boundary', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0, '<=', md.materials[mat].numlayers)
+        elif md.love.forcing_type <= 8:
+            md = checkfield(md, 'fieldname', 'love.core_mantle_boundary', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0, '<=', md.materials[mat].numlayers)
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'nfreq', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'frequencies', 'format', 'DoubleMat', 'mattype',3)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'sh_nmax', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'sh_nmin', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'g0', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'r0', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'mu0', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'Gravitational_Constant', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'chandler_wobble', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'allow_layer_deletion', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'underflow_tol', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'pw_threshold', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'min_integration_steps', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'max_integration_dr', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'integration_scheme', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'istemporal', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'n_temporal_iterations', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'complex_computation', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'quad_precision', 'format', 'Boolean')
+        # Note: no need to marshall the time vector, we have frequencies
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'love_kernels', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'forcing_type', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'inner_core_boundary', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'core_mantle_boundary', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'debug', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'hypergeom_table1', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'hypergeom_table2', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'hypergeom_nalpha', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'hypergeom_nz', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'hypergeom_z', 'format', 'DoubleMat', 'mattype', 3)
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self
+    # }}}
+
+    def build_frequencies_from_time(self):  # {{{
+        if not self.istemporal:
+            raise RuntimeError('cannot build frequencies for temporal love numbers if love.istemporal==0')
+        print('Temporal love numbers: Overriding md.love.nfreq and md.love.frequencies')
+        self.nfreq = len(self.time) * 2 * self.n_temporal_iterations
+        self.frequencies = np.zeros((self.nfreq,))
+        for i in range(len(self.time)):
+            for j in range(2 * self.n_temporal_iterations):
+                if self.time[i] == 0:
+                    self.frequencies[(i - 1) * 2 * self.n_temporal_iterations + j] = 0 # Convention to avoid marshalling infinite numbers
+                else:
+                    self.frequencies[(i - 1) * 2 * self.n_temporal_iterations + j] = j * np.log(2) / self.time[i] / 2 / np.pi
+        return self
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/lovenumbers.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/lovenumbers.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/lovenumbers.m	(revision 27955)
@@ -0,0 +1,150 @@
+%LOVENUMBERS numbers class definition
+%
+%   Usage:
+%      lovenumbers=lovenumbers() 
+%      lovenumbers=lovenumbers('maxdeg',10000,'referenceframe','CF'); 
+% 
+%   choose numbers of degrees required (1000 by default) and reference frame (between CF and CM; CM by default) 
+
+classdef lovenumbers
+	properties (SetAccess=public) 
+
+		%loading love numbers:
+		h             = []; %provided by PREM model
+		k             = []; %idem
+		l             = []; %idem
+		
+		%tidal love numbers for computing rotational feedback:
+		th            = [];
+		tk            = [];
+		tl            = [];
+		tk2secular    = 0; %deg 2 secular number.
+		pmtf_colinear = [];
+		pmtf_ortho    = [];
+
+		%time/frequency for visco-elastic love numbers
+		timefreq      = [];
+		istime        = 1;
+
+	end
+	methods
+		function self = lovenumbers(varargin) % {{{
+			options=pairoptions(varargin{:});
+			maxdeg=getfieldvalue(options,'maxdeg',1000);
+			referenceframe=getfieldvalue(options,'referenceframe','CM');
+			self=setdefaultparameters(self,maxdeg,referenceframe);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   lovenumbers parameters:'));
+
+			fielddisplay(self,'h','load Love number for radial displacement');
+			fielddisplay(self,'k','load Love number for gravitational potential perturbation');
+			fielddisplay(self,'l','load Love number for horizontal displacements');
+
+			fielddisplay(self,'th','tidal load Love number (deg 2)');
+			fielddisplay(self,'tk','tidal load Love number (deg 2)');
+			fielddisplay(self,'tl','tidal load Love number (deg 2)');
+			fielddisplay(self,'tk2secular','secular fluid Love number');
+			fielddisplay(self,'pmtf_colinear','Colinear component of the Polar Motion Transfer Function (e.g. x-motion due to x-component perturbation of the inertia tensor)');
+			fielddisplay(self,'pmtf_ortho','Orthogonal component of the Polar Motion Transfer Function (couples x and y components, only used for Chandler Wobble)');
+
+
+			fielddisplay(self,'istime','time (default: 1) or frequency love numbers (0)');
+			fielddisplay(self,'timefreq','time/frequency vector (yr or 1/yr)');
+
+		end % }}}
+		function self = setdefaultparameters(self,maxdeg,referenceframe) % {{{
+
+			%initialize love numbers:
+			self.h=getlovenumbers('type','loadingverticaldisplacement','referenceframe',referenceframe,'maxdeg',maxdeg);
+			self.k=getlovenumbers('type','loadinggravitationalpotential','referenceframe',referenceframe,'maxdeg',maxdeg);
+			self.l=getlovenumbers('type','loadinghorizontaldisplacement','referenceframe',referenceframe,'maxdeg',maxdeg);
+			self.th=getlovenumbers('type','tidalverticaldisplacement','referenceframe',referenceframe,'maxdeg',maxdeg);
+			self.tk=getlovenumbers('type','tidalgravitationalpotential','referenceframe',referenceframe,'maxdeg',maxdeg);
+			self.tl=getlovenumbers('type','tidalhorizontaldisplacement','referenceframe',referenceframe,'maxdeg',maxdeg);
+
+			%secular fluid love number: 
+			self.tk2secular=0.942;
+
+			self.pmtf_colinear=0.0;
+			self.pmtf_ortho=0.0;
+			if maxdeg>=2
+				self.pmtf_colinear=(1.0+self.k(3,:))/(1.0-self.tk(3,:)/self.tk2secular); %valid only for elastic regime, not viscous. Also neglects chandler wobble
+				self.pmtf_ortho=0.0;
+			end
+			%time: 
+			self.istime=1; %temporal love numbers by default
+			self.timefreq=0; %elastic case by default.
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ismember('SealevelchangeAnalysis',analyses) | (strcmp(solution,'TransientSolution') & md.transient.isslc==0), 
+				return; 
+			end
+
+			md = checkfield(md,'fieldname','solidearth.lovenumbers.h','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','solidearth.lovenumbers.k','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','solidearth.lovenumbers.l','NaN',1,'Inf',1);
+			
+			
+			md = checkfield(md,'fieldname','solidearth.lovenumbers.th','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','solidearth.lovenumbers.tk','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','solidearth.lovenumbers.tl','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','solidearth.lovenumbers.tk2secular','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','solidearth.lovenumbers.pmtf_colinear','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','solidearth.lovenumbers.pmtf_ortho','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','solidearth.lovenumbers.timefreq','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','solidearth.lovenumbers.istime','NaN',1,'Inf',1,'values',[0 1]);
+
+			%check that love numbers are provided at the same level of accuracy: 
+			if (size(self.h,1)~=size(self.k,1) | size(self.h,1)~=size(self.l,1)),
+				error('lovenumbers error message: love numbers should be provided at the same level of accuracy');
+			end
+
+			ntf=length(self.timefreq);
+			if( size(self.h,2) ~= ntf | size(self.k,2) ~= ntf | size(self.l,2) ~= ntf | size(self.th,2) ~= ntf | size(self.tk,2) ~= ntf | size(self.tl,2) ~= ntf | size(self.pmtf_colinear,2) ~= ntf | size(self.pmtf_ortho,2) ~= ntf),
+				error('lovenumbers error message: love numbers should have as many time/frequency steps as the time/frequency vector');
+			end
+
+			if self.istime && self.timefreq(1)~=0
+				error('temporal love numbers must start with elastic response, i.e timefreq(1)=0');
+			end
+
+		end % }}}
+		function list=defaultoutputs(self,md) % {{{
+			list = {};
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'object',self,'fieldname','h','name','md.solidearth.lovenumbers.h','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','k','name','md.solidearth.lovenumbers.k','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','l','name','md.solidearth.lovenumbers.l','format','DoubleMat','mattype',1);
+
+			WriteData(fid,prefix,'object',self,'fieldname','th','name','md.solidearth.lovenumbers.th','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','tk','name','md.solidearth.lovenumbers.tk','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','tl','name','md.solidearth.lovenumbers.tl','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','pmtf_colinear','name','md.solidearth.lovenumbers.pmtf_colinear','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','pmtf_ortho','name','md.solidearth.lovenumbers.pmtf_ortho','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'data',self.tk2secular,'fieldname','lovenumbers.tk2secular','format','Double');
+
+			if self.istime,
+				scale=md.constants.yts; 
+			else
+				scale=1.0/md.constants.yts;
+			end
+			WriteData(fid,prefix,'object',self,'fieldname','istime','name','md.solidearth.lovenumbers.istime','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','timefreq','name','md.solidearth.lovenumbers.timefreq','format','DoubleMat','mattype',1,'scale',scale);
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+			writejs1Darray(fid,[modelname '.lovenumbers.h'],self.h);
+			writejs1Darray(fid,[modelname '.lovenumbers.k'],self.k);
+			writejs1Darray(fid,[modelname '.lovenumbers.l'],self.l);
+			writejs1Darray(fid,[modelname '.lovenumbers.istime'],self.istime);
+			writejs1Darray(fid,[modelname '.lovenumbers.time'],self.time);
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/lovenumbers.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/lovenumbers.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/lovenumbers.py	(revision 27955)
@@ -0,0 +1,140 @@
+import numpy as np
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from getlovenumbers import getlovenumbers
+from pairoptions import pairoptions
+from WriteData import WriteData
+
+
+class lovenumbers(object):  #{{{
+    """lovenumbers class definition
+
+    Usage:
+        lovenumbers = lovenumbers()
+        lovenumbers = lovenumbers('maxdeg', 10000, 'referenceframe', 'CF');
+
+    Choose numbers of degrees required (1000 by default) and reference frame 
+    (between CF and CM; CM by default)
+    """
+
+    def __init__(self, *args):  #{{{
+        # Loading love numbers
+        self.h = [] # Provided by PREM model
+        self.k = [] # idem
+        self.l = [] # idem
+
+        # Tidal love numbers for computing rotational feedback
+        self.th = []
+        self.tk = []
+        self.tl = []
+        self.tk2secular = 0 # deg 2 secular number
+        self.pmtf_colinear = []
+        self.pmtf_ortho = []
+
+        # Time/frequency for visco-elastic love numbers
+        self.timefreq = []
+        self.istime = 1
+
+        options = pairoptions(*args)
+        maxdeg = options.getfieldvalue('maxdeg', 1000)
+        referenceframe = options.getfieldvalue('referenceframe', 'CM')
+        self.setdefaultparameters(maxdeg, referenceframe)
+    # }}}
+
+    def __repr__(self):  #{{{
+        s = '   lovenumbers parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'h', 'load Love number for radial displacement'))
+        s += '{}\n'.format(fielddisplay(self, 'k', 'load Love number for gravitational potential perturbation'))
+        s += '{}\n'.format(fielddisplay(self, 'l', 'load Love number for horizontal displacements'))
+        s += '{}\n'.format(fielddisplay(self, 'th', 'tidal load Love number (deg 2)'))
+        s += '{}\n'.format(fielddisplay(self, 'tk', 'tidal load Love number (deg 2)'))
+        s += '{}\n'.format(fielddisplay(self, 'tl', 'tidal load Love number (deg 2)'))
+        s += '{}\n'.format(fielddisplay(self, 'tk2secular', 'secular fluid Love number'))
+        s += '{}\n'.format(fielddisplay(self, 'pmtf_colinear', 'Colinear component of the Polar Motion Transfer Function (e.g. x-motion due to x-component perturbation of the inertia tensor)'))
+        s += '{}\n'.format(fielddisplay(self, 'pmtf_ortho', 'Orthogonal component of the Polar Motion Transfer Function (couples x and y components, only used for Chandler Wobble)'))
+        s += '{}\n'.format(fielddisplay(self, 'istime', 'time (default: 1) or frequency love numbers (0)'))
+        s += '{}\n'.format(fielddisplay(self, 'timefreq', 'time/frequency vector (yr or 1/yr)'))
+        s += '{}\n'.format(fielddisplay(self, 'pmtf_colinear', 'Colinear component of the Polar Motion Transfer Function (e.g. x-motion due to x-component perturbation of the inertia tensor)'))
+        s += '{}\n'.format(fielddisplay(self, 'pmtf_ortho', 'Orthogonal component of the Polar Motion Transfer Function (couples x and y components, only used for Chandler Wobble)'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self, maxdeg, referenceframe):  #{{{
+        # Initialize love numbers
+        self.h = getlovenumbers('type', 'loadingverticaldisplacement', 'referenceframe', referenceframe, 'maxdeg', maxdeg).reshape(-1,1)
+        self.k = getlovenumbers('type', 'loadinggravitationalpotential', 'referenceframe', referenceframe, 'maxdeg', maxdeg).reshape(-1,1)
+        self.l = getlovenumbers('type', 'loadinghorizontaldisplacement', 'referenceframe', referenceframe, 'maxdeg', maxdeg).reshape(-1,1)
+        self.th = getlovenumbers('type', 'tidalverticaldisplacement', 'referenceframe', referenceframe, 'maxdeg', maxdeg).reshape(-1,1)
+        self.tk = getlovenumbers('type', 'tidalgravitationalpotential', 'referenceframe', referenceframe, 'maxdeg', maxdeg).reshape(-1,1)
+        self.tl = getlovenumbers('type', 'tidalhorizontaldisplacement', 'referenceframe', referenceframe, 'maxdeg', maxdeg).reshape(-1,1)
+
+        # Secular fluid love number
+        self.tk2secular = 0.942
+
+        self.pmtf_colinear = np.array([0.0]).reshape(-1, 1)
+        self.pmtf_ortho = np.array([0.0]).reshape(-1, 1)
+        if maxdeg >= 2:
+            self.pmtf_colinear = ((1.0 + self.k[2, :]) / (1.0 - self.tk[2, :] / self.tk2secular)).reshape(-1, 1) # Valid only for elastic regime, not viscous. Also neglects chandler wobble.
+            self.pmtf_ortho = np.array([0.0]).reshape(-1, 1)
+        # Time
+        self.istime = 1 # Temporal love numbers by default
+        self.timefreq = np.zeros(1) # Elastic case by default
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  #{{{
+        if ('SealevelchangeAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
+            return
+        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.h', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.k', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.l', 'NaN', 1, 'Inf', 1)
+
+        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.th', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.tk', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.tl', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.tk2secular', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.pmtf_colinear', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.pmtf_ortho', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.timefreq', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.istime', 'NaN', 1, 'Inf', 1, 'values', [0, 1])
+
+        # Check that love numbers are provided at the same level of accuracy
+        if (self.h.shape[0] != self.k.shape[0]) or (self.h.shape[0] != self.l.shape[0]):
+            raise ValueError('lovenumbers error message: love numbers should be provided at the same level of accuracy')
+
+        ntf = len(self.timefreq)
+        if (np.shape(self.h)[1] != ntf or np.shape(self.k)[1] != ntf or np.shape(self.l)[1] != ntf or np.shape(self.th)[1] != ntf or np.shape(self.tk)[1] != ntf or np.shape(self.tl)[1] != ntf or np.shape(self.pmtf_colinear)[1] != ntf or np.shape(self.pmtf_ortho)[1] != ntf):
+            raise ValueError('lovenumbers error message: love numbers should have as many time/frequency steps as the time/frequency vector')
+
+        if self.istime and self.timefreq[0] != 0:
+            raise ValueError('temporal love numbers must start with elastic response, i.e. timefreq[0] = 0')
+        return md
+    # }}}
+
+    def defaultoutputs(self, md):  #{{{
+        return[]
+    # }}}
+
+    def marshall(self, prefix, md, fid):  #{{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'h', 'name', 'md.solidearth.lovenumbers.h', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'k', 'name', 'md.solidearth.lovenumbers.k', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'l', 'name', 'md.solidearth.lovenumbers.l', 'format', 'DoubleMat', 'mattype', 1)
+
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'th', 'name', 'md.solidearth.lovenumbers.th', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'tk', 'name', 'md.solidearth.lovenumbers.tk', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'tl', 'name', 'md.solidearth.lovenumbers.tl', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'pmtf_colinear','name','md.solidearth.lovenumbers.pmtf_colinear','format','DoubleMat','mattype',1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'pmtf_ortho','name','md.solidearth.lovenumbers.pmtf_ortho','format','DoubleMat','mattype',1)
+        WriteData(fid, prefix, 'object', self, 'data', self.tk2secular, 'fieldname', 'lovenumbers.tk2secular', 'format', 'Double')
+
+        if (self.istime):
+            scale = md.constants.yts
+        else:
+            scale = 1.0 / md.constants.yts
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'istime', 'name', 'md.solidearth.lovenumbers.istime', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'timefreq', 'name', 'md.solidearth.lovenumbers.timefreq', 'format', 'DoubleMat', 'mattype', 1, 'scale', scale);
+    # }}}
+
+    def extrude(self, md):  #{{{
+        return
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/m1qn3inversion.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/m1qn3inversion.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/m1qn3inversion.m	(revision 27955)
@@ -0,0 +1,206 @@
+%M1QN3INVERSION class definition
+%
+%   Usage:
+%      m1qn3inversion=m1qn3inversion();
+
+classdef m1qn3inversion
+	properties (SetAccess=public) 
+		iscontrol                   = 0
+		incomplete_adjoint          = 0
+		control_parameters          = NaN
+		control_scaling_factors     = NaN
+		maxsteps                    = 0
+		maxiter                     = 0
+		dxmin                       = 0
+		dfmin_frac                  = 0
+		gttol                       = 0
+		cost_functions              = NaN
+		cost_functions_coefficients = NaN
+		min_parameters              = NaN
+		max_parameters              = NaN
+		vx_obs                      = NaN
+		vy_obs                      = NaN
+		vz_obs                      = NaN
+		vel_obs                     = NaN
+		thickness_obs               = NaN
+		surface_obs                 = NaN
+
+	end
+	methods
+		function self = m1qn3inversion(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(m1qn3inversion(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node');
+			self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node');
+			self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node');
+			self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node');
+			if numel(self.cost_functions_coefficients)>1,self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node');end;
+			if numel(self.min_parameters)>1,self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node');end;
+			if numel(self.max_parameters)>1,self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node');end;
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%default is incomplete adjoint for now
+			self.incomplete_adjoint=1;
+
+			%parameter to be inferred by control methods (only
+			%drag and B are supported yet)
+			self.control_parameters={'FrictionCoefficient'};
+
+			%Scaling factor for each control
+			self.control_scaling_factors=1;
+
+			%number of iterations
+			self.maxsteps=20;
+			self.maxiter=40;
+
+			%several responses can be used:
+			self.cost_functions=101;
+
+			%m1qn3 parameters
+			self.dxmin      = 0.1;
+			self.dfmin_frac = 1;
+			self.gttol      = 1e-4;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~self.iscontrol, return; end
+
+			if ~IssmConfig('_HAVE_M1QN3_'),
+				md = checkmessage(md,['M1QN3 has not been installed, ISSM needs to be reconfigured and recompiled with M1QN3']);
+			end
+			num_controls=numel(md.inversion.control_parameters);
+			num_costfunc=size(md.inversion.cost_functions,2);
+
+			md = checkfield(md,'fieldname','inversion.iscontrol','values',[0 1]);
+			md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 1]);
+			md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols());
+			md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[1 num_controls],'>',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.maxiter','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.dxmin','numel',1,'>',0);
+         md = checkfield(md,'fieldname','inversion.dfmin_frac','numel',1,'>=',0,'<=',1);
+			md = checkfield(md,'fieldname','inversion.gttol','numel',1,'>',0);
+			md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values',supportedcostfunctions());
+			md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0);
+			md = checkfield(md,'fieldname','inversion.min_parameters','size',[NaN num_controls]);
+			md = checkfield(md,'fieldname','inversion.max_parameters','size',[NaN num_controls]);
+
+			if strcmp(solution,'BalancethicknessSolution')
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','inversion.surface_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			elseif strcmp(solution,'BalancethicknessSoftSolution')
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			else
+				md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				if ~strcmp(domaintype(md.mesh),'2Dvertical'),
+					md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				end
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   m1qn3inversion parameters:'));
+			fielddisplay(self,'iscontrol','is inversion activated?');
+			fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
+			fielddisplay(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
+			fielddisplay(self,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)');
+			fielddisplay(self,'maxsteps','maximum number of iterations (gradient computation)');
+			fielddisplay(self,'maxiter','maximum number of Function evaluation (forward run)');
+			fielddisplay(self,'dxmin','convergence criterion: two points less than dxmin from eachother (sup-norm) are considered identical');
+         fielddisplay(self,'dfmin_frac','expected reduction of J during the first step (e.g., 0.3=30% reduction in cost function)');
+			fielddisplay(self,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)');
+			fielddisplay(self,'cost_functions','indicate the type of response for each optimization step');
+			fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
+			fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'vx_obs','observed velocity x component [m/yr]');
+			fielddisplay(self,'vy_obs','observed velocity y component [m/yr]');
+			fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]');
+			fielddisplay(self,'thickness_obs','observed thickness [m]');
+			fielddisplay(self,'surface_obs','observed surface elevation [m]');
+			disp('Available cost functions:');
+			disp('   101: SurfaceAbsVelMisfit');
+			disp('   102: SurfaceRelVelMisfit');
+			disp('   103: SurfaceLogVelMisfit');
+			disp('   104: SurfaceLogVxVyMisfit');
+			disp('   105: SurfaceAverageVelMisfit');
+			disp('   201: ThicknessAbsMisfit');
+			disp('   501: DragCoefficientAbsGradient');
+			disp('   502: RheologyBbarAbsGradient');
+			disp('   503: ThicknessAbsGradient');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean');
+			WriteData(fid,prefix,'name','md.inversion.type','data',2,'format','Integer');
+			if ~self.iscontrol, return; end
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','incomplete_adjoint','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxsteps','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','dxmin','format','Double');
+         WriteData(fid,prefix,'object',self,'class','inversion','fieldname','dfmin_frac','format','Double');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','gttol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vel_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			if(numel(self.thickness_obs)==md.mesh.numberofelements),
+				mattype=2;
+			else
+				mattype=1;
+			end
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
+
+			%process control parameters
+			num_control_parameters=numel(self.control_parameters);
+			WriteData(fid,prefix,'object',self,'fieldname','control_parameters','format','StringArray');
+			WriteData(fid,prefix,'data',num_control_parameters,'name','md.inversion.num_control_parameters','format','Integer');
+
+			%process cost functions
+			num_cost_functions=size(self.cost_functions,2);
+			data=marshallcostfunctions(self.cost_functions);
+			WriteData(fid,prefix,'data',data,'name','md.inversion.cost_functions','format','StringArray');
+			WriteData(fid,prefix,'data',num_cost_functions,'name','md.inversion.num_cost_functions','format','Integer');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.inversion.iscontrol'],self.iscontrol);
+			writejsdouble(fid,[modelname '.inversion.incomplete_adjoint'],self.incomplete_adjoint);
+			writejscellstring(fid,[modelname '.inversion.control_parameters'],self.control_parameters);
+			writejsdouble(fid,[modelname '.inversion.control_scaling_factors'],self.control_scaling_factors);
+			writejsdouble(fid,[modelname '.inversion.maxsteps'],self.maxsteps);
+			writejsdouble(fid,[modelname '.inversion.maxiter'],self.maxiter);
+			writejsdouble(fid,[modelname '.inversion.dxmin'],self.dxmin);
+         writejsdouble(fid,[modelname '.inversion.dfmin_frac'],self.dfmin_frac);
+			writejsdouble(fid,[modelname '.inversion.gttol'],self.gttol);
+			writejs2Darray(fid,[modelname '.inversion.cost_functions'],self.cost_functions);
+			writejs2Darray(fid,[modelname '.inversion.cost_functions_coefficients'],self.cost_functions_coefficients);
+			writejs1Darray(fid,[modelname '.inversion.min_parameters'],self.min_parameters);
+			writejs1Darray(fid,[modelname '.inversion.max_parameters'],self.max_parameters);
+			writejs1Darray(fid,[modelname '.inversion.vx_obs'],self.vx_obs);
+			writejs1Darray(fid,[modelname '.inversion.vy_obs'],self.vy_obs);
+			writejs1Darray(fid,[modelname '.inversion.vz_obs'],self.vz_obs);
+			writejs1Darray(fid,[modelname '.inversion.vel_obs'],self.vel_obs);
+			writejs1Darray(fid,[modelname '.inversion.thickness_obs'],self.thickness_obs);
+			writejs1Darray(fid,[modelname '.inversion.surface_obs'],self.surface_obs);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/m1qn3inversion.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/m1qn3inversion.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/m1qn3inversion.py	(revision 27955)
@@ -0,0 +1,195 @@
+import numpy as np
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from marshallcostfunctions import marshallcostfunctions
+from project3d import project3d
+from supportedcontrols import supportedcontrols
+from supportedcostfunctions import supportedcostfunctions
+from WriteData import WriteData
+
+
+class m1qn3inversion(object):
+    """M1QN3 class definition
+
+    Usage:
+        m1qn3inversion = m1qn3inversion()
+    """
+
+    def __init__(self, *args):  # {{{
+        if not len(args):
+            print('empty init')
+            self.iscontrol                   = 0
+            self.incomplete_adjoint          = 0
+            self.control_parameters          = np.nan
+            self.control_scaling_factors     = np.nan
+            self.maxsteps                    = 0
+            self.maxiter                     = 0
+            self.dxmin                       = 0.
+            self.dfmin_frac                  = 0.
+            self.gttol                       = 0.
+            self.cost_functions              = np.nan
+            self.cost_functions_coefficients = np.nan
+            self.min_parameters              = np.nan
+            self.max_parameters              = np.nan
+            self.vx_obs                      = np.nan
+            self.vy_obs                      = np.nan
+            self.vz_obs                      = np.nan
+            self.vel_obs                     = np.nan
+            self.thickness_obs               = np.nan
+
+            self.setdefaultparameters()
+        elif len(args) == 1 and args[0].__module__ == 'inversion':
+            print('converting inversion to m1qn3inversion')
+            inv = args[0]
+            #first call setdefaultparameters:
+            self.setdefaultparameters()
+
+            #then go fish whatever is available in the inversion object provided to the constructor
+            self.iscontrol = inv.iscontrol
+            self.incomplete_adjoint = inv.incomplete_adjoint
+            self.control_parameters = inv.control_parameters
+            self.maxsteps = inv.nsteps
+            self.cost_functions = inv.cost_functions
+            self.cost_functions_coefficients = inv.cost_functions_coefficients
+            self.min_parameters = inv.min_parameters
+            self.max_parameters = inv.max_parameters
+            self.vx_obs = inv.vx_obs
+            self.vy_obs = inv.vy_obs
+            self.vz_obs = inv.vz_obs
+            self.vel_obs = inv.vel_obs
+            self.thickness_obs = inv.thickness_obs
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   m1qn3inversion parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'iscontrol', 'is inversion activated?'))
+        s += '{}\n'.format(fielddisplay(self, 'incomplete_adjoint', '1: linear viscosity, 0: non - linear viscosity'))
+        s += '{}\n'.format(fielddisplay(self, 'control_parameters', 'ex: [''FrictionCoefficient''], or [''MaterialsRheologyBbar'']'))
+        s += '{}\n'.format(fielddisplay(self, 'control_scaling_factors', 'order of magnitude of each control (useful for multi - parameter optimization)'))
+        s += '{}\n'.format(fielddisplay(self, 'maxsteps', 'maximum number of iterations (gradient computation)'))
+        s += '{}\n'.format(fielddisplay(self, 'maxiter', 'maximum number of Function evaluation (forward run)'))
+        s += '{}\n'.format(fielddisplay(self, 'dxmin', 'convergence criterion: two points less than dxmin from eachother (sup - norm) are considered identical'))
+        s += '{}\n'.format(fielddisplay(self, 'dfmin_frac', 'expected reduction of J during the first step (e.g., 0.3=30% reduction in cost function)'))
+        s += '{}\n'.format(fielddisplay(self, 'gttol', '||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)'))
+        s += '{}\n'.format(fielddisplay(self, 'cost_functions', 'indicate the type of response for each optimization step'))
+        s += '{}\n'.format(fielddisplay(self, 'cost_functions_coefficients', 'cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
+        s += '{}\n'.format(fielddisplay(self, 'min_parameters', 'absolute minimum acceptable value of the inversed parameter on each vertex'))
+        s += '{}\n'.format(fielddisplay(self, 'max_parameters', 'absolute maximum acceptable value of the inversed parameter on each vertex'))
+        s += '{}\n'.format(fielddisplay(self, 'vx_obs', 'observed velocity x component [m / yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'vy_obs', 'observed velocity y component [m / yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'vel_obs', 'observed velocity magnitude [m / yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'thickness_obs', 'observed thickness [m]'))
+        s += '{}\n'.format('Available cost functions:')
+        s += '{}\n'.format('   101: SurfaceAbsVelMisfit')
+        s += '{}\n'.format('   102: SurfaceRelVelMisfit')
+        s += '{}\n'.format('   103: SurfaceLogVelMisfit')
+        s += '{}\n'.format('   104: SurfaceLogVxVyMisfit')
+        s += '{}\n'.format('   105: SurfaceAverageVelMisfit')
+        s += '{}\n'.format('   201: ThicknessAbsMisfit')
+        s += '{}\n'.format('   501: DragCoefficientAbsGradient')
+        s += '{}\n'.format('   502: RheologyBbarAbsGradient')
+        s += '{}\n'.format('   503: ThicknessAbsGradient')
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        #default is incomplete adjoint for now
+        self.incomplete_adjoint = 1
+        #parameter to be inferred by control methods (only
+        #drag and B are supported yet)
+        self.control_parameters = 'FrictionCoefficient'
+        #Scaling factor for each control
+        self.control_scaling_factors = 1
+        #number of iterations
+        self.maxsteps = 20
+        self.maxiter = 40
+        #several responses can be used:
+        self.cost_functions = 101
+        #m1qn3 parameters
+        self.dxmin = 0.1
+        self.dfmin_frac = 1.
+        self.gttol = 1e-4
+
+        return self
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.vx_obs = project3d(md, 'vector', self.vx_obs, 'type', 'node')
+        self.vy_obs = project3d(md, 'vector', self.vy_obs, 'type', 'node')
+        self.vel_obs = project3d(md, 'vector', self.vel_obs, 'type', 'node')
+        self.thickness_obs = project3d(md, 'vector', self.thickness_obs, 'type', 'node')
+        if not np.any(np.isnan(self.cost_functions_coefficients)):
+            self.cost_functions_coefficients = project3d(md, 'vector', self.cost_functions_coefficients, 'type', 'node')
+        if not np.any(np.isnan(self.min_parameters)):
+            self.min_parameters = project3d(md, 'vector', self.min_parameters, 'type', 'node')
+        if not np.any(np.isnan(self.max_parameters)):
+            self.max_parameters = project3d(md, 'vector', self.max_parameters, 'type', 'node')
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if not self.iscontrol:
+            return md
+
+        num_controls = np.size(md.inversion.control_parameters)
+        num_costfunc = np.size(md.inversion.cost_functions)
+
+        md = checkfield(md, 'fieldname', 'inversion.iscontrol', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'inversion.incomplete_adjoint', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'inversion.control_parameters', 'cell', 1, 'values', supportedcontrols())
+        md = checkfield(md, 'fieldname', 'inversion.control_scaling_factors', 'size', [num_controls], '>', 0, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'inversion.maxsteps', 'numel', [1], '>=', 0)
+        md = checkfield(md, 'fieldname', 'inversion.maxiter', 'numel', [1], '>=', 0)
+        md = checkfield(md, 'fieldname', 'inversion.dxmin', 'numel', [1], '>', 0.)
+        md = checkfield(md, 'fieldname', 'inversion.dfmin_frac', 'numel', [1], '>=', 0., '<=', 1.)
+        md = checkfield(md, 'fieldname', 'inversion.gttol', 'numel', [1], '>', 0.)
+        md = checkfield(md, 'fieldname', 'inversion.cost_functions', 'size', [num_costfunc], 'values', supportedcostfunctions())
+        md = checkfield(md, 'fieldname', 'inversion.cost_functions_coefficients', 'size', [md.mesh.numberofvertices, num_costfunc], '>=', 0)
+        md = checkfield(md, 'fieldname', 'inversion.min_parameters', 'size', [md.mesh.numberofvertices, num_controls])
+        md = checkfield(md, 'fieldname', 'inversion.max_parameters', 'size', [md.mesh.numberofvertices, num_controls])
+
+        if solution == 'BalancethicknessSolution':
+            md = checkfield(md, 'fieldname', 'inversion.thickness_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+        elif solution == 'BalancethicknessSoftSolution':
+            md = checkfield(md, 'fieldname', 'inversion.thickness_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+        else:
+            md = checkfield(md, 'fieldname', 'inversion.vx_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'inversion.vy_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'iscontrol', 'format', 'Boolean')
+        WriteData(fid, prefix, 'name', 'md.inversion.type', 'data', 2, 'format', 'Integer')
+        if not self.iscontrol:
+            return
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'incomplete_adjoint', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'control_scaling_factors', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'maxsteps', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'maxiter', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'dxmin', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'dfmin_frac', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'gttol', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'cost_functions_coefficients', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'min_parameters', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'max_parameters', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'vx_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'vy_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'vz_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'thickness_obs', 'format', 'DoubleMat', 'mattype', 1)
+
+        # Process control parameters
+        num_control_parameters = len(self.control_parameters)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'control_parameters', 'format', 'StringArray')
+        WriteData(fid, prefix, 'data', num_control_parameters, 'name', 'md.inversion.num_control_parameters', 'format', 'Integer')
+
+        # Process cost functions
+        num_cost_functions = np.size(self.cost_functions)
+        data = marshallcostfunctions(self.cost_functions)
+        WriteData(fid, prefix, 'data', data, 'name', 'md.inversion.cost_functions', 'format', 'StringArray')
+        WriteData(fid, prefix, 'data', num_cost_functions, 'name', 'md.inversion.num_cost_functions', 'format', 'Integer')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/mask.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/mask.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/mask.js	(revision 27955)
@@ -0,0 +1,49 @@
+//MASK class definition
+//
+//   Usage:
+//      mask= new mask();
+
+function mask () {
+	//properties 
+	// {{{
+		this.ocean_levelset	= NaN;
+		this.ice_levelset	= NaN;
+		//}}}
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+		} // }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   masks:")); 
+
+			fielddisplay(this,'ocean_levelset','presence of ocean if < 0, coastline/grounding line if = 0, no ocean if > 0');
+			fielddisplay(this,'ice_levelset','presence of ice if < 0, icefront position if = 0, no ice if > 0');
+		} //}}}
+		this.extrude = function(md) {//{{{
+			this.ocean_levelset=project3d(md,'vector',this.ocean_levelset,'type','node');
+			this.ice_levelset=project3d(md,'vector',this.ice_levelset,'type','node');
+			return this;
+		}//}}}
+		this.classname = function () { //{{{
+			return "mask";
+		} //}}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+			if (solution=='LoveSolution') return;
+
+			checkfield(md,'fieldname','mask.ocean_levelset','size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices, 1]);
+			var isice=NewArrayFill(md.mesh.numberofvertices,0); 
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(md.mask.ice_levelset[i]<=0)isice[i]=1;
+			if (ArraySum(isice)==0){
+				console.log('no ice present in the domain');
+			}
+			if (ArrayMax(md.mask.ice_levelset)<0){
+				console.log('no ice front provided');
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+            WriteData(fid,prefix,'object',this,'fieldname','ocean_levelset','format','DoubleMat','mattype',1);
+            WriteData(fid,prefix,'object',this,'fieldname','ice_levelset','format','DoubleMat','mattype',1);
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/mask.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/mask.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/mask.m	(revision 27955)
@@ -0,0 +1,126 @@
+%MASK class definition
+%
+%   Usage:
+%      mask=mask();
+
+classdef mask
+	properties (SetAccess=public) 
+		ocean_levelset = NaN;
+		ice_levelset   = NaN;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. Update old properties here
+
+			%2014 February 5th. NOT NEED ANYMORE, AND CAN LEAD TO CONFUSION for sea-level models. 
+			%if numel(self.ice_levelset)>1 & all(self.ice_levelset>=0),
+			%	disp('WARNING: md.mask.ice_levelset>=0, you probably need to change the sign of this levelset');
+			%end
+
+			%2020 May 15th
+			if isstruct(self)
+				selfnew = mask();
+				if isfield(self,'ice_levelset')
+					selfnew.ice_levelset = self.ice_levelset;
+				end
+				if isfield(self,'ocean_levelset')
+					selfnew.ocean_levelset = self.ocean_levelset;
+				end
+				if isfield(self,'groundedice_levelset')
+					disp('WARNING: automatically updated md.mask as groundedice_levelset is now ocean_levelset');
+					selfnew.ocean_levelset = self.groundedice_levelset;
+				end
+				self = selfnew;
+			end
+		end % }}}
+	end
+	methods
+		function disp(self) % {{{
+			disp(sprintf('   masks:'));
+
+			fielddisplay(self,'ocean_levelset','presence of ocean if < 0, coastline/grounding line if = 0, no ocean if > 0');
+			fielddisplay(self,'ice_levelset','presence of ice if < 0, icefront position if = 0, no ice if > 0');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.ocean_levelset=project3d(md,'vector',self.ocean_levelset,'type','node');
+			self.ice_levelset=project3d(md,'vector',self.ice_levelset,'type','node');
+		end % }}}
+		function self = mask(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self=setocean(self,varargin) % {{{
+			if nargin==3,
+				ocean=varargin{1}; 
+				index=varargin{2};
+				self.ocean_levelset(index)=-ocean;
+			elseif nargin==2,
+				ocean=varargin{1}; 
+				self.ocean_levelset=-ocean;
+			else error('oceanset error message: not supported yet');
+			end
+		end % }}}
+		function self=setice(self,varargin) % {{{
+			if nargin==3,
+				ice=varargin{1}; 
+				index=varargin{2};
+				self.ice_levelset(index)=-ice;
+			elseif nargin==2,
+				ice=varargin{1}; 
+				self.ice_levelset=-ice;
+			else error('iceset error message: not supported yet');
+			end
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			if strcmpi(solution,'LoveSolution'), return; end;
+
+			if isa(self.ocean_levelset,'cell'),
+				for i=1:length(self.ocean_levelset),
+					md = checkfield(md,'field',self.ocean_levelset{i},'NaN',0,'Inf',1,'timeserieslength',1,'Inf',1);
+				end
+			else
+				md = checkfield(md,'fieldname','mask.ocean_levelset','timeseries',1,'NaN',1);
+			end
+			
+			if isa(self.ice_levelset,'cell'),
+				for i=1:length(self.ice_levelset),
+					md = checkfield(md,'field',self.ice_levelset{i},'NaN',0,'Inf',1,'timeserieslength',1,'Inf',1);
+				end
+			else
+				md = checkfield(md,'fieldname','mask.ice_levelset','timeseries',1,'NaN',1);
+				isice=(md.mask.ice_levelset<=0);
+				if sum(isice)==0,
+					warning('no ice present in the domain');
+				end
+			end
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			if isa(self.ocean_levelset,'cell'),
+				WriteData(fid,prefix,'object',self,'fieldname','ocean_levelset','name','md.mask.ocean_levelset','format','MatArray','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			else
+				WriteData(fid,prefix,'object',self,'fieldname','ocean_levelset','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			end
+
+			if isa(self.ice_levelset,'cell'),
+				WriteData(fid,prefix,'object',self,'fieldname','ice_levelset','name','md.mask.ice_levelset','format','MatArray','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			else
+				WriteData(fid,prefix,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			end
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.mask.ocean_levelset'],self.ocean_levelset);
+			writejs1Darray(fid,[modelname '.mask.ice_levelset'],self.ice_levelset);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/mask.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/mask.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/mask.py	(revision 27955)
@@ -0,0 +1,95 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class mask(object):
+    """MASK class definition
+
+    Usage:
+        mask = mask()
+    """
+    
+    def __init__(self):  # {{{
+        self.ice_levelset = float('NaN')
+        self.ocean_levelset = float('NaN')
+
+        #set defaults
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = "   masks:"
+
+        string = "%s\n%s" % (string, fielddisplay(self, "ocean_levelset", "presence of ocean if < 0, coastline/grounding line if = 0, no ocean if > 0"))
+        string = "%s\n%s" % (string, fielddisplay(self, "ice_levelset", "presence of ice if < 0, icefront position if = 0, no ice if > 0"))
+        return string
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        return self
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.ice_levelset = project3d(md, 'vector', self.ice_levelset, 'type', 'node')
+        self.ocean_levelset = project3d(md, 'vector', self.ocean_levelset, 'type', 'node')
+
+        return self
+    # }}}
+
+    def mask(self, *args):  # {{{
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            raise RuntimeError("constructor not supported")
+
+        return self
+    # }}}
+
+    def oceanset(self, *args):  # {{{
+        if len(args) == 2:
+            ocean = args[0]
+            index = args[1]
+            self.ocean_levelset[index] = -ocean
+        elif len(args) == 1:
+            ocean = args[0]
+            self.ocean_levelset = -ocean
+        else:
+            raise RuntimeError("oceanset error message: not supported yet")
+
+        return self
+    # }}}
+
+    def iceset(self, *args):  # {{{
+        if len(args) == 2:
+            ice = args[0]
+            index = args[1]
+            self.ice_levelset[index] = -ice
+        elif len(args) == 1:
+            ice = args[0]
+            self.ocean_levelset = -ice
+        else:
+            raise RuntimeError("iceset error message: not supported yet")
+
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if solution == 'LoveSolution':
+            return
+
+        md = checkfield(md, 'fieldname', 'mask.ice_levelset', 'size', [md.mesh.numberofvertices])
+        isice = np.array(md.mask.ice_levelset <= 0, int)
+        if np.sum(isice) == 0:
+            raise TypeError("no ice present in the domain")
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'ocean_levelset', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'ice_levelset', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/masscon.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/masscon.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/masscon.m	(revision 27955)
@@ -0,0 +1,74 @@
+%MASSCON class definition
+%
+%   Usage:
+%      masscon=masscon();
+%      masscon=masscon('name','MassCon58','definitionstring','Outputdefinition1',... %name of a North-East Greenland JPL MassCon
+%                    'levelset',level);
+% 
+%   where level is a levelset vectorial field.
+%
+%   See also: MISFIT, MASSCONAXPBY, REGIONALOUTPUT
+
+classdef masscon
+	properties (SetAccess=public)
+		%masscon
+		name              = '';
+		definitionstring  = ''; %string that identifies this output definition uniquely, from 'Outputdefinition[1-10]'
+		levelset          = NaN; %levelset vectorial field which identifies the boundaries of the masscon
+	end
+	
+	methods
+		function self = extrude(self,md) % {{{
+			if ~isnan(self.levelset)
+				self.levelset=project3d(md,'vector',self.levelset,'type','node');
+			end
+		end % }}}
+		function self = masscon(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name=getfieldvalue(options,'name','');
+				self.levelset=getfieldvalue(options,'levelset');
+				self.definitionstring=getfieldvalue(options,'definitionstring');
+
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ischar(self.name),
+				error('masscon error message: ''name'' field should be a string!');
+			end
+
+			OutputdefinitionStringArray={};
+			for i=1:100
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+
+			md = checkfield(md,'fieldname','self.definitionstring','field',self.definitionstring,'values',OutputdefinitionStringArray);
+			md = checkfield(md,'fieldname','self.levelset','field',self.levelset,'timeseries',1,'NaN',1,'Inf',1);
+
+		end % }}}
+		function md = disp(self) % {{{
+
+			disp(sprintf('   Masscon:\n'));
+
+			fielddisplay(self,'name','identifier for this masscon response');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from ''Outputdefinition[1-10]''');
+			fielddisplay(self,'levelset','levelset vectorial field which identifies the boundaries of the masscon');
+
+		end % }}}
+		function md = marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'data',self.name,'name','md.masscon.name','format','String');
+			WriteData(fid,prefix,'data',self.definitionstring,'name','md.masscon.definitionstring','format','String');
+			WriteData(fid,prefix,'data',self.levelset,'name','md.masscon.levelset','format','DoubleMat','mattype',1);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/massconaxpby.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/massconaxpby.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/massconaxpby.m	(revision 27955)
@@ -0,0 +1,90 @@
+%MASSCONAXPBY class definition
+%
+%   Usage:
+%      massconaxpby=massconaxpby();
+%      massconaxpby=massconaxpby('name','MassCon58+35','namex','MassCon58','alpha',.5,'namey','MassCon35','beta',.5,'definitionstring','Outputdefinition1'); 
+% 
+%   where name is the name of the massconaxpby object, namex is the name of the first masscon, namey the name of the second masscon and alpha,beta the 
+%         multiplicators. The meaning of axpby here is: resulting masscon is the linear combination (alpha *x + beta * y) 
+%         of two masscons.
+%
+%   See also: MASSCON, REGIONALOUTPUT
+
+classdef massconaxpby
+	properties (SetAccess=public)
+		%masscon axpby
+		name               = '';
+		definitionstring   = ''; %String that identifies this output definition uniquely, from 'Outputdefinition[1-10]'
+		namex              = '';
+		namey              = '';
+		alpha              = NaN;
+		beta               = NaN;
+	end
+	
+	methods
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function self = massconaxpby(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get names
+				self.name=getfieldvalue(options,'name','');
+				self.definitionstring=getfieldvalue(options,'definitionstring');
+				self.namex=getfieldvalue(options,'namex');
+				self.namey=getfieldvalue(options,'namey');
+
+				%get multiplicators: 
+				self.alpha=getfieldvalue(options,'alpha');
+				self.beta=getfieldvalue(options,'beta');
+
+
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ischar(self.name), error('masscon error message: ''name'' field should be a string!'); end
+			if ~ischar(self.namex), error('masscon error message: ''namex'' field should be a string!'); end
+			if ~ischar(self.namey), error('masscon error message: ''namey'' field should be a string!'); end
+		
+			% Create output definition cell array for check
+			OutputdefinitionStringArray={};
+			for i=1:100
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+
+			md = checkfield(md,'fieldname','self.definitionstring','field',self.definitionstring,'values',OutputdefinitionStringArray);
+
+			md = checkfield(md,'fieldname','self.alpha','field',self.alpha,'NaN',1,'Inf',1,'size',[1 1]);
+			md = checkfield(md,'fieldname','self.betaa','field',self.beta,'NaN',1,'Inf',1,'size',[1 1]);
+
+		end % }}}
+		function md = disp(self) % {{{
+		
+			disp(sprintf('   Massconaxpby:\n'));
+
+			fielddisplay(self,'name','name');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from Outputdefinition[1-10]');
+			fielddisplay(self,'namex','identifier for the first masscon');
+			fielddisplay(self,'alpha','first masscon multiplicator');
+			fielddisplay(self,'namey','identifier for the second masscon');
+			fielddisplay(self,'beta','second masscon multiplicator');
+
+		end % }}}
+		function md = marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'data',self.name,'name','md.massconaxpby.name','format','String');
+			WriteData(fid,prefix,'data',self.definitionstring,'name','md.massconaxpby.definitionstring','format','String');
+			WriteData(fid,prefix,'data',self.namex,'name','md.massconaxpby.namex','format','String');
+			WriteData(fid,prefix,'data',self.namey,'name','md.massconaxpby.namey','format','String');
+			WriteData(fid,prefix,'data',self.alpha,'name','md.massconaxpby.alpha','format','Double');
+			WriteData(fid,prefix,'data',self.beta,'name','md.massconaxpby.beta','format','Double');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/massfluxatgate.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/massfluxatgate.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/massfluxatgate.m	(revision 27955)
@@ -0,0 +1,75 @@
+%MASSFLUXATGATE class definition
+%
+%   Usage:
+%      massfluxatgate=massfluxatgate();
+%      massfluxatgate=massfluxatgate('name','GateName','definitionname','Outputdefinition1','profilename','PathToExpFile');
+
+classdef massfluxatgate
+	properties (SetAccess=public)  
+		%massfluxatgate 
+		name            = '';
+		definitionstring  = '';
+		profilename     = ''; 
+	end
+	properties (SetAccess=private)  
+		segments        = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function self = massfluxatgate(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name=getfieldvalue(options,'name','');
+				self.definitionstring=getfieldvalue(options,'definitionstring');
+				self.profilename=getfieldvalue(options,'profilename');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			
+			if ~ischar(self.name),
+				error('massfluxatgate error message: ''name'' field should be a string!');
+			end
+			if ~ischar(self.profilename),
+				error('massfluxatgate error message: ''profilename'' field should be a string!');
+			end
+		
+			OutputdefinitionStringArray={};
+			for i=1:100
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+			md = checkfield(md,'field',self.definitionstring,'values',OutputdefinitionStringArray);
+
+			%check the profilename points to a file!: 
+			if exist(self.profilename,'file')~=2,
+				error('massfluxatgate error message: file name for profile corresponding to gate does not point to a legitimate file on disk!');
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Massfluxatgate:\n'));
+
+			fielddisplay(self,'name','identifier for this massfluxatgate response');
+			fielddisplay(self,'profilename','name of file (shapefile or argus file) defining a profile (or gate)');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from ''Outputdefinition[1-100]''');
+			
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+		%before marshalling, we need to create the segments out of the profilename: 
+		self.segments=MeshProfileIntersection(md.mesh.elements,md.mesh.x,md.mesh.y,self.profilename);
+
+		%ok, marshall name and segments: 
+		WriteData(fid,prefix,'data',self.name,'name','md.massfluxatgate.name','format','String');
+		WriteData(fid,prefix,'data',self.definitionstring,'name','md.massfluxatgate.definitionstring','format','String');
+		WriteData(fid,prefix,'data',self.segments,'name','md.massfluxatgate.segments','format','DoubleMat','mattype',1);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/massfluxatgate.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/massfluxatgate.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/massfluxatgate.py	(revision 27955)
@@ -0,0 +1,83 @@
+import numpy as np
+from fielddisplay import fielddisplay
+from pairoptions import pairoptions
+from checkfield import checkfield
+from WriteData import WriteData
+from MeshProfileIntersection import MeshProfileIntersection
+import os
+
+
+class massfluxatgate(object):
+    """
+    MASSFLUXATEGATE class definition
+
+       Usage:
+          massfluxatgate = massfluxatgate('GateName', 'PathToExpFile')
+    """
+
+    def __init__(self, *args):  # {{{
+
+        self.name = ''
+        self.definitionstring = ''
+        self.profilename = ''
+        self.segments = np.nan
+
+    #set defaults
+        self.setdefaultparameters()
+
+    #use provided options to change fields
+        options = pairoptions(*args)
+
+    #OK get other fields
+        self = options.AssignObjectFields(self)
+
+    # }}}
+
+    def __repr__(self):  # {{{
+
+        string = "   Massfluxatgate:"
+        string = "%s\n%s" % (string, fielddisplay(self, 'name', 'identifier for this massfluxatgate response'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'definitionstring', 'string that identifies this output definition uniquely, from Outputdefinition[1 - 100]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'profilename', 'name of file (shapefile or argus file) defining a profile (or gate)'))
+        return string
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if not isinstance(self.name, str):
+            raise RuntimeError("massfluxatgate error message: 'name' field should be a string!")
+
+        if not isinstance(self.profilename, str):
+            raise RuntimeError("massfluxatgate error message: 'profilename' field should be a string!")
+
+        OutputdefinitionStringArray = []
+        for i in range(1, 100):
+            x = 'Outputdefinition' + str(i)
+            OutputdefinitionStringArray.append(x)
+
+        md = checkfield(md, 'field', self.definitionstring, 'values', OutputdefinitionStringArray)
+
+        #check the profilename points to a file!:
+        if not os.path.isfile(self.profilename):
+            raise RuntimeError("massfluxatgate error message: file name for profile corresponding to gate does not point to a legitimate file on disk!")
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        #before marshalling, we need to create the segments out of the profilename:
+        self.segments = MeshProfileIntersection(md.mesh.elements, md.mesh.x, md.mesh.y, self.profilename)[0]
+
+    #ok, marshall name and segments:
+        WriteData(fid, prefix, 'data', self.name, 'name', 'md.massfluxatgate.name', 'format', 'String')
+        WriteData(fid, prefix, 'data', self.definitionstring, 'name', 'md.massfluxatgate.definitionstring', 'format', 'String')
+        WriteData(fid, prefix, 'data', self.segments, 'name', 'md.massfluxatgate.segments', 'format', 'DoubleMat', 'mattype', 1)
+
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/masstransport.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/masstransport.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/masstransport.js	(revision 27955)
@@ -0,0 +1,102 @@
+class masstransport {//{{{
+	/**
+	 * MASSTRANSPORT class definition
+	 *
+	 * Usage:
+	 *     masstransport = masstransport();
+	 */
+	constructor() {//{{{
+		this.spcthickness = NaN;
+		this.isfreesurface = 0;
+		this.min_thickness = 0;
+		this.hydrostatic_adjustment = 0;
+		this.stabilization = 0;
+		this.vertex_pairing = 0;
+		this.penalty_factor = 0;
+		this.requested_outputs = 0;
+
+		if (arguments.length == 0) {
+			this.setdefaultparameters();
+		} else {
+			error('constructor not supported');
+		}
+	} //}}}
+
+	disp() {//{{{
+		console.log('WARNING: masstransport::disp is not yet implemented');
+	} //}}}
+
+	setdefaultparameters() {//{{{
+		// Type of stabilization to use 0:nothing 1:artificial_diffusivity 3:Discontinuous Galerkin
+		this.stabilization = 1;
+
+		// Factor applied to compute the penalties kappa=max(stiffness matrix)*10^penalty_factor
+		this.penalty_factor = 3;
+
+		// Minimum ice thickness that can be used
+		this.min_thickness = 1;
+
+		// Hydrostatic adjustment
+		this.hydrostatic_adjustment = 'Absolute';
+
+		// Default output
+		this.requested_outputs = ['default'];
+	} //}}}
+
+	checkconsistency(md, solution, analyses) {//{{{
+		// Early return
+		if (analyses.includes('HydrologyShreveAnalysis') || (solution == 'TransientSolution' && !md.trans.ismasstransport)) {
+			return md;
+		}
+
+		md = checkfield(md, 'fieldname', 'masstransport.spcthickness', 'Inf', 1, 'timeseries', 1);
+		md = checkfield(md, 'fieldname', 'masstransport.isfreesurface', 'values', [0, 1]);
+		md = checkfield(md, 'fieldname', 'masstransport.hydrostatic_adjustment', 'values', ['Absolute', 'Incremental']);
+		md = checkfield(md, 'fieldname', 'masstransport.stabilization', 'values', [0, 1, 2, 3, 4, 5]);
+		md = checkfield(md, 'fieldname', 'masstransport.min_thickness', '>', 0);
+		md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1);
+		if (!any(isnan(md.stressbalance.vertex.vertex_pairing))) {
+			md = checkfield(md, 'fieldname', 'stressbalance.vertex_pairing', '>', 0);
+		}
+
+		return md;
+	} //}}}
+
+	defaultoutputs(md) {//{{{
+		return ['Thickness', 'Surface', 'Base'];
+	} //}}}
+
+	marshall(md, prefix, fid) {//{{{
+		let yts = md.constants.yts;
+
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'spcthickness', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts);
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'isfreesurface', 'format', 'Boolean');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'min_thickness', 'format', 'Double');
+		WriteData(fid, prefix, 'data', this.hydrostatic_adjustment, 'format', 'String', 'name', 'md.masstransport.hydrostatic_adjustment');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'stabilization', 'format', 'Integer');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'vertex_pairing', 'format', 'DoubleMat', 'mattype', 3);
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'penalty_factor', 'format', 'Double');
+
+		// Process requested outputs
+		let outputs = this.requested_outputs;
+		let pos = find(ismember(outputs, 'default'));
+		if (pos.length) {
+			/*
+			NOTE: In order to handle case where user has added 'default' more 
+			than once to this.requested_outputs, need to remove elements by 
+			index in reverse order.
+			*/
+			for (let i = (pos.length - 1); i >= 0; --i) {
+				outputs.splice(pos[i], 1);
+			}
+			let default_outputs = this.defaultoutputs(md);
+			for (let i = 0; i < default_outputs.length; ++i) {
+				outputs.push(default_outputs[i]);
+			}
+		}
+		WriteData(fid, prefix, 'data', outputs, 'name', 'md.masstransport.requested_outputs', 'format', 'StringArray');
+	} //}}}
+
+	extrude(md) {//{{{
+	} //}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/masstransport.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/masstransport.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/masstransport.m	(revision 27955)
@@ -0,0 +1,149 @@
+%MASSTRANSPORT class definition
+%
+%   Usage:
+%      masstransport=masstransport();
+
+classdef masstransport
+	properties (SetAccess=public)
+		 spcthickness           = NaN;
+		 isfreesurface          = 0;
+		 min_thickness          = 0;
+		 hydrostatic_adjustment = 0;
+		 stabilization          = 0;
+		 vertex_pairing         = NaN;
+		 penalty_factor         = 0;
+		 requested_outputs      = {};
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. If the input is a struct it is an old version of this class and
+			% old fields must be recovered (make sure they are in the deprecated
+			% model properties)
+
+			if verLessThan('matlab','7.9'),
+				disp('Warning: your matlab version is old and there is a risk that load does not work correctly');
+				disp('         if the model is not loaded correctly, rename temporarily loadobj so that matlab does not use it');
+
+				% This is a Matlab bug: all the fields of md have their default value
+				% Example of error message:
+				% Warning: Error loading an object of class 'model':
+				% Undefined function or method 'exist' for input arguments of type 'cell'
+				%
+				% This has been fixed in MATLAB 7.9 (R2009b) and later versions
+			end
+
+			if isstruct(self)
+				disp('Recovering masstransport from older version');
+				self = structtoobj(masstransport(),self);
+			end
+		end% }}}
+	end
+	methods
+		function self = masstransport(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('masstransport');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.spcthickness=project3d(md,'vector',self.spcthickness,'type','node');
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+
+			list = {'Thickness','Surface','Base'};
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Type of stabilization to use 0:nothing 1:artificial_diffusivity 3:Discontinuous Galerkin
+			self.stabilization=1;
+
+			%Factor applied to compute the penalties kappa=max(stiffness matrix)*10^penalty_factor
+			self.penalty_factor=3;
+
+			%Minimum ice thickness that can be used
+			self.min_thickness=1;
+
+			%Hydrostatic adjustment
+			self.hydrostatic_adjustment='Absolute';
+
+			%default output
+			self.requested_outputs={'default'};
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('MasstransportAnalysis',analyses) |  (strcmp(solution,'TransientSolution') & md.transient.ismasstransport==0), return; end
+
+			md = checkfield(md,'fieldname','masstransport.spcthickness','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','masstransport.isfreesurface','values',[0 1]);
+			md = checkfield(md,'fieldname','masstransport.hydrostatic_adjustment','values',{'Absolute' 'Incremental'});
+			md = checkfield(md,'fieldname','masstransport.stabilization','values',[0 1 2 3 4 5]);
+			md = checkfield(md,'fieldname','masstransport.min_thickness','>',0);
+			md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1);
+			if ~any(isnan(md.stressbalance.vertex_pairing)),
+				md = checkfield(md,'fieldname','stressbalance.vertex_pairing','>',0);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Masstransport solution parameters:'));
+			fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint) [m]');
+			fielddisplay(self,'isfreesurface','do we use free surfaces (FS only) or mass conservation');
+			fielddisplay(self,'min_thickness','minimum ice thickness allowed [m]');
+			fielddisplay(self,'hydrostatic_adjustment','adjustment of ice shelves surface and bed elevations: ''Incremental'' or ''Absolute'' ');
+			fielddisplay(self,'stabilization','0: no stabilization, 1: artificial diffusion, 2: streamline upwinding, 3: discontinuous Galerkin, 4: flux corrected transport, 5: streamline upwind Petrov-Galerkin (SUPG)');
+
+			disp(sprintf('\n      %s','Penalty options:'));
+			fielddisplay(self,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset');
+			fielddisplay(self,'vertex_pairing','pairs of vertices that are penalized');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'fieldname','spcthickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','isfreesurface','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','min_thickness','format','Double');
+			WriteData(fid,prefix,'data',self.hydrostatic_adjustment,'format','String','name','md.masstransport.hydrostatic_adjustment');
+			WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','vertex_pairing','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'fieldname','penalty_factor','format','Double');
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.masstransport.requested_outputs','format','StringArray');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			writejs1Darray(fid,[modelname '.masstransport.spcthickness'],self.spcthickness);
+			writejsdouble(fid,[modelname '.masstransport.isfreesurface'],self.isfreesurface);
+			writejsdouble(fid,[modelname '.masstransport.min_thickness'],self.min_thickness);
+			writejsstring(fid,[modelname '.masstransport.hydrostatic_adjustment'],self.hydrostatic_adjustment);
+			writejsdouble(fid,[modelname '.masstransport.stabilization'],self.stabilization);
+			writejs2Darray(fid,[modelname '.masstransport.vertex_pairing'],self.vertex_pairing);
+			writejsdouble(fid,[modelname '.masstransport.penalty_factor'],self.penalty_factor);
+			writejscellstring(fid,[modelname '.masstransport.requested_outputs'],self.requested_outputs);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/masstransport.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/masstransport.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/masstransport.py	(revision 27955)
@@ -0,0 +1,99 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class masstransport(object):
+    """MASSTRANSPORT class definition
+
+    Usage:
+        masstransport = masstransport()
+    """
+
+    def __init__(self):  # {{{
+        self.spcthickness = float('NaN')
+        self.isfreesurface = 0
+        self.min_thickness = 0.
+        self.hydrostatic_adjustment = 0
+        self.stabilization = 0
+        self.vertex_pairing = float('NaN')
+        self.penalty_factor = 0
+        self.requested_outputs = []
+
+        # Set defaults
+        self.setdefaultparameters()
+
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   Masstransport solution parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'spcthickness', 'thickness constraints (NaN means no constraint) [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'isfreesurface', 'do we use free surfaces (FS only) or mass conservation'))
+        s += '{}\n'.format(fielddisplay(self, 'min_thickness', 'minimum ice thickness allowed [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'hydrostatic_adjustment', 'adjustment of ice shelves surface and bed elevations: ''Incremental'' or ''Absolute'' '))
+        s += '{}\n'.format(fielddisplay(self, 'stabilization', '0: no stabilization, 1: artificial diffusion, 2: streamline upwinding, 3: discontinuous Galerkin, 4: flux corrected transport, 5: streamline upwind Petrov-Galerkin (SUPG)'))
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.spcthickness = project3d(md, 'vector', self.spcthickness, 'type', 'node')
+        return self
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['Thickness', 'Surface', 'Base']
+
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Type of stabilization to use 0:nothing 1:artificial_diffusivity 3:Discontinuous Galerkin
+        self.stabilization = 1
+        # Factor applied to compute the penalties kappa = max(stiffness matrix) * 1.0**penalty_factor
+        self.penalty_factor = 3
+        # Minimum ice thickness that can be used
+        self.min_thickness = 1
+        # Hydrostatic adjustment
+        self.hydrostatic_adjustment = 'Absolute'
+        # Default output
+        self.requested_outputs = ['default']
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if ('MasstransportAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.ismasstransport):
+            return md
+
+        md = checkfield(md, 'fieldname', 'masstransport.spcthickness', 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'masstransport.isfreesurface', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'masstransport.hydrostatic_adjustment', 'values', ['Absolute', 'Incremental'])
+        md = checkfield(md, 'fieldname', 'masstransport.stabilization', 'values', [0, 1, 2, 3, 4, 5])
+        md = checkfield(md, 'fieldname', 'masstransport.min_thickness', '>', 0)
+        md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1)
+        if not np.any(np.isnan(self.vertex_pairing)) and len(self.vertex_pairing) > 0:
+            md = checkfield(md, 'fieldname', 'stressbalance.vertex_pairing', '>', 0)
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'spcthickness', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isfreesurface', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'min_thickness', 'format', 'Double')
+        WriteData(fid, prefix, 'data', self.hydrostatic_adjustment, 'format', 'String', 'name', 'md.masstransport.hydrostatic_adjustment')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'stabilization', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'vertex_pairing', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'penalty_factor', 'format', 'Double')
+
+        # Process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.masstransport.requested_outputs', 'format', 'StringArray')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/matdamageice.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/matdamageice.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/matdamageice.m	(revision 27955)
@@ -0,0 +1,161 @@
+%MATDAMAGEICE class definition
+%
+%   Usage:
+%      matdamageice=matdamageice();
+
+classdef matdamageice
+	properties (SetAccess=public) 
+		rho_ice                         = 0.;
+		rho_water                       = 0.;
+		rho_freshwater                  = 0.;
+		mu_water                        = 0.;
+		heatcapacity                    = 0.;
+		latentheat                      = 0.;
+		thermalconductivity             = 0.;
+		temperateiceconductivity        = 0.;
+		effectiveconductivity_averaging = 0.;
+		meltingpoint                    = 0.;
+		beta                            = 0.;
+		mixed_layer_capacity            = 0.;
+		thermal_exchange_velocity       = 0.;
+		rheology_B                      = NaN;
+		rheology_n                      = NaN;
+		rheology_law                    = '';
+
+		%slc
+		earth_density                   = 0;
+
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node');
+			self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element');
+		end % }}}
+		function self = matdamageice(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('matdamageice');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%ice density (kg/m^3)
+			self.rho_ice=917.;
+
+			%ocean water density (kg/m^3)
+			self.rho_water=1023.;
+
+			%fresh water density (kg/m^3)
+			self.rho_freshwater=1000.;
+
+			%water viscosity (N.s/m^2)
+			self.mu_water=0.001787;  
+
+			%ice heat capacity cp (J/kg/K)
+			self.heatcapacity=2093.;
+
+			%ice latent heat of fusion L (J/kg)
+			self.latentheat=3.34*10^5;
+
+			%ice thermal conductivity (W/m/K)
+			self.thermalconductivity=2.4;
+
+			%wet ice thermal conductivity (W/m/K)
+			self.temperateiceconductivity=.24;
+
+			%computation of effective conductivity
+			self.effectiveconductivity_averaging=1;
+
+			%the melting point of ice at 1 atmosphere of pressure in K
+			self.meltingpoint=273.15;
+
+			%rate of change of melting point with pressure (K/Pa)
+			self.beta=9.8*10^-8;
+
+			%mixed layer (ice-water interface) heat capacity (J/kg/K)
+			self.mixed_layer_capacity=3974.;
+
+			%thermal exchange velocity (ice-water interface) (m/s)
+			self.thermal_exchange_velocity=1.00*10^-4;
+
+			%Rheology law: what is the temperature dependence of B with T
+			%available: none, paterson and arrhenius
+			self.rheology_law='Paterson';
+
+			%SLC
+			self.earth_density= 5512; % average density of the Earth (kg/m^3)
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			md = checkfield(md,'fieldname','materials.rho_ice','>',0);
+			md = checkfield(md,'fieldname','materials.rho_water','>',0);
+			md = checkfield(md,'fieldname','materials.rho_freshwater','>',0);
+			md = checkfield(md,'fieldname','materials.mu_water','>',0);
+			md = checkfield(md,'fieldname','materials.rheology_B','>',0,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','materials.rheology_law','values',{'None' 'BuddJacka' 'Cuffey' 'CuffeyTemperate' 'Paterson' 'Arrhenius' 'LliboutryDuval'});
+			md = checkfield(md,'fieldname','materials.effectiveconductivity_averaging','numel',[1],'values',[0 1 2]);
+			
+			if ismember('SealevelchangeAnalysis',analyses),
+				md = checkfield(md,'fieldname','materials.earth_density','>',0,'numel',1);
+			end
+
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Materials:'));
+
+			fielddisplay(self,'rho_ice','ice density [kg/m^3]');
+			fielddisplay(self,'rho_water','ocean water density [kg/m^3]');
+			fielddisplay(self,'rho_freshwater','fresh water density [kg/m^3]');
+			fielddisplay(self,'mu_water','water viscosity [N s/m^2]');
+			fielddisplay(self,'heatcapacity','heat capacity [J/kg/K]');
+			fielddisplay(self,'thermalconductivity',['ice thermal conductivity [W/m/K]']);
+			fielddisplay(self,'temperateiceconductivity','temperate ice thermal conductivity [W/m/K]');
+			fielddisplay(self,'effectiveconductivity_averaging','computation of effective conductivity: (0) arithmetic mean, (1) harmonic mean, (2) geometric mean (default)');
+			fielddisplay(self,'meltingpoint','melting point of ice at 1atm in K');
+			fielddisplay(self,'latentheat','latent heat of fusion [J/kg]');
+			fielddisplay(self,'beta','rate of change of melting point with pressure [K/Pa]');
+			fielddisplay(self,'mixed_layer_capacity','mixed layer capacity [W/kg/K]');
+			fielddisplay(self,'thermal_exchange_velocity','thermal exchange velocity [m/s]');
+			fielddisplay(self,'rheology_B','flow law parameter [Pa s^(1/n)]');
+			fielddisplay(self,'rheology_n','Glen''s flow law exponent');
+			fielddisplay(self,'rheology_law',['law for the temperature dependance of the rheology: ''None'', ''BuddJacka'', ''Cuffey'', ''CuffeyTemperate'', ''Paterson'', ''Arrhenius'' or ''LliboutryDuval''']);
+			fielddisplay(self,'earth_density','Mantle density [kg/m^-3]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.materials.type','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_ice','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_water','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_freshwater','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mu_water','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','heatcapacity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','latentheat','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermalconductivity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','effectiveconductivity_averaging','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','meltingpoint','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','beta','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'data',self.rheology_law,'name','md.materials.rheology_law','format','String');
+
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','earth_density','format','Double');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/matdamageice.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/matdamageice.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/matdamageice.py	(revision 27955)
@@ -0,0 +1,140 @@
+import numpy as np
+
+from fielddisplay import fielddisplay
+from project3d import project3d
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class matdamageice(object):
+    """MATICE class definition
+
+       Usage:
+          matdamagice = matdamageice()
+    """
+
+    def __init__(self):  # {{{
+        self.rho_ice = 0
+        self.rho_water = 0
+        self.rho_freshwater = 0
+        self.mu_water = 0
+        self.heatcapacity = 0
+        self.latentheat = 0
+        self.thermalconductivity = 0
+        self.temperateiceconductivity = 0
+        self.effectiveconductivity_averaging = 0
+        self.meltingpoint = 0
+        self.beta = 0
+        self.mixed_layer_capacity = 0
+        self.thermal_exchange_velocity = 0
+        self.rheology_B = np.nan
+        self.rheology_n = np.nan
+        self.rheology_law = ''
+
+        #SLC
+        self.earth_density = 0
+
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   Materials:\n'
+        s += '{}\n'.format(fielddisplay(self, 'rho_ice', 'ice density [kg/m^3]'))
+        s += '{}\n'.format(fielddisplay(self, 'rho_water', 'water density [kg/m^3]'))
+        s += '{}\n'.format(fielddisplay(self, 'rho_freshwater', 'fresh water density [kg/m^3]'))
+        s += '{}\n'.format(fielddisplay(self, 'mu_water', 'water viscosity [N s/m^2]'))
+        s += '{}\n'.format(fielddisplay(self, 'heatcapacity', 'heat capacity [J/kg/K]'))
+        s += '{}\n'.format(fielddisplay(self, 'thermalconductivity', 'ice thermal conductivity [W/m/K]'))
+        s += '{}\n'.format(fielddisplay(self, 'temperateiceconductivity', 'temperate ice thermal conductivity [W/m/K]'))
+        s += '{}\n'.format(fielddisplay(self, 'effectiveconductivity_averaging', 'computation of effectiveconductivity: (0) arithmetic mean, (1) harmonic mean, (2) geometric mean (default)'))
+        s += '{}\n'.format(fielddisplay(self, 'meltingpoint', 'melting point of ice at 1atm in K'))
+        s += '{}\n'.format(fielddisplay(self, 'latentheat', 'latent heat of fusion [J/m^3]'))
+        s += '{}\n'.format(fielddisplay(self, 'beta', 'rate of change of melting point with pressure [K/Pa]'))
+        s += '{}\n'.format(fielddisplay(self, 'mixed_layer_capacity', 'mixed layer capacity [W/ kg/K]'))
+        s += '{}\n'.format(fielddisplay(self, 'thermal_exchange_velocity', 'thermal exchange velocity [m/s]'))
+        s += '{}\n'.format(fielddisplay(self, 'rheology_B', 'flow law parameter [Pa s^(1/n)]'))
+        s += '{}\n'.format(fielddisplay(self, 'rheology_n', 'Glen\'s flow law exponent'))
+        s += '{}\n'.format(fielddisplay(self, 'rheology_law', 'law for the temperature dependance of the rheology: \'None\', \'BuddJacka\', \'Cuffey\', \'CuffeyTemperate\', \'Paterson\', \'Arrhenius\' or \'LliboutryDuval\''))
+        s += '{}\n'.format(fielddisplay(self, 'earth_density', 'Mantle density [kg m^-3]'))
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.rheology_B = project3d(md, 'vector', self.rheology_B, 'type', 'node')
+        self.rheology_n = project3d(md, 'vector', self.rheology_n, 'type', 'element')
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Ice density (kg/m^3)
+        self.rho_ice = 917.0
+        # Ocean water density (kg/m^3)
+        self.rho_water = 1023.0
+        # Fresh water density (kg/m^3)
+        self.rho_freshwater = 1000.0
+        # Water viscosity (N.s/m^2)
+        self.mu_water = 0.001787
+        # Ice heat capacity cp (J/kg/K)
+        self.heatcapacity = 2093.0
+        # Ice latent heat of fusion L (J/kg)
+        self.latentheat = 3.34 * pow(10, 5)
+        # Ice thermal conductivity (W/m/K)
+        self.thermalconductivity = 2.4
+        # Temperate ice thermal conductivity (W/m/K)
+        self.temperateiceconductivity = 0.24
+        # Computation of effective conductivity
+        self.effectiveconductivity_averaging = 1
+        # The melting point of ice at 1 atmosphere of pressure in K
+        self.meltingpoint = 273.15
+        # Rate of change of melting point with pressure (K/Pa)
+        self.beta = 9.8 * pow(10, -8)
+        # Mixed layer (ice-water interface) heat capacity (J/kg/K)
+        self.mixed_layer_capacity = 3974.0
+        # Thermal exchange velocity (ice-water interface) (m/s)
+        self.thermal_exchange_velocity = 1.00e-4
+        # Rheology law: what is the temperature dependence of B with T
+        # available: none, paterson and arrhenius
+        self.rheology_law = 'Paterson'
+
+        # SLC
+        self.earth_density = 5512  # average density of the Earth (kg/m^3)
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        md = checkfield(md, 'fieldname', 'materials.rho_ice', '>', 0)
+        md = checkfield(md, 'fieldname', 'materials.rho_water', '>', 0)
+        md = checkfield(md, 'fieldname', 'materials.rho_freshwater', '>', 0)
+        md = checkfield(md, 'fieldname', 'materials.mu_water', '>', 0)
+        md = checkfield(md, 'fieldname', 'materials.rheology_B', '>', 0, 'size', [md.mesh.numberofvertices])
+        md = checkfield(md, 'fieldname', 'materials.rheology_n', '>', 0, 'size', [md.mesh.numberofelements])
+        md = checkfield(md, 'fieldname', 'materials.rheology_law', 'values', ['None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius', 'LliboutryDuval'])
+        md = checkfield(md, 'fieldname', 'materials.effectiveconductivity_averaging', 'numel', [1], 'values', [0, 1, 2])
+
+        if 'SealevelchangeAnalysis' in analyses:
+                md = checkfield(md, 'fieldname', 'materials.earth_density', '>', 0, 'numel', 1)
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'name', 'md.materials.type', 'data', 1, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_ice', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_water', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_freshwater', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mu_water', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'heatcapacity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'latentheat', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermalconductivity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'temperateiceconductivity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'effectiveconductivity_averaging', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'meltingpoint', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'beta', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mixed_layer_capacity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermal_exchange_velocity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_B', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_n', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'data', self.rheology_law, 'name', 'md.materials.rheology_law', 'format', 'String')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'earth_density', 'format', 'Double')
+
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/matenhancedice.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/matenhancedice.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/matenhancedice.m	(revision 27955)
@@ -0,0 +1,187 @@
+%MATICE class definition
+%
+%   Usage:
+%      matenhancedice=matenhancedice();
+
+classdef matenhancedice
+	properties (SetAccess=public) 
+		rho_ice                         = 0.;
+		rho_water                       = 0.;
+		rho_freshwater                  = 0.;
+		mu_water                        = 0.;
+		heatcapacity                    = 0.;
+		latentheat                      = 0.;
+		thermalconductivity             = 0.;
+		temperateiceconductivity        = 0.;
+		effectiveconductivity_averaging = 0.;
+		meltingpoint                    = 0.;
+		beta                            = 0.;
+		mixed_layer_capacity            = 0.;
+		thermal_exchange_velocity       = 0.;
+		rheology_E                      = NaN;
+		rheology_B                      = NaN;
+		rheology_n                      = NaN;
+		rheology_law                    = '';
+
+		%SLC
+		earth_density                   = 0;
+
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.rheology_E=project3d(md,'vector',self.rheology_E,'type','node');
+			self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node');
+			self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element');
+		end % }}}
+		function self = matenhancedice(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('matenhancedice');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%ice density (kg/m^3)
+			self.rho_ice=917.;
+
+			%ocean water density (kg/m^3)
+			self.rho_water=1023.;
+
+			%fresh water density (kg/m^3)
+			self.rho_freshwater=1000.;
+
+			%water viscosity (N.s/m^2)
+			self.mu_water=0.001787;
+
+			%ice heat capacity cp (J/kg/K)
+			self.heatcapacity=2093.;
+
+			%ice latent heat of fusion L (J/kg)
+			self.latentheat=3.34*10^5;
+
+			%ice thermal conductivity (W/m/K)
+			self.thermalconductivity=2.4;
+			
+			%wet ice thermal conductivity (W/m/K)
+			self.temperateiceconductivity=.24;
+
+			%computation of effective conductivity
+			self.effectiveconductivity_averaging=1;
+
+			%the melting point of ice at 1 atmosphere of pressure in K
+			self.meltingpoint=273.15;
+
+			%rate of change of melting point with pressure (K/Pa)
+			self.beta=9.8*10^-8;
+
+			%mixed layer (ice-water interface) heat capacity (J/kg/K)
+			self.mixed_layer_capacity=3974.;
+
+			%thermal exchange velocity (ice-water interface) (m/s)
+			self.thermal_exchange_velocity=1.00*10^-4;
+
+			%Rheology law: what is the temperature dependence of B with T
+			%available: none, paterson and arrhenius
+			self.rheology_law='Paterson';
+
+			%SLC
+			self.earth_density= 5512;  % average density of the Earth, (kg/m^3)
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			md = checkfield(md,'fieldname','materials.rho_ice','>',0);
+			md = checkfield(md,'fieldname','materials.rho_water','>',0);
+			md = checkfield(md,'fieldname','materials.rho_freshwater','>',0);
+			md = checkfield(md,'fieldname','materials.mu_water','>',0);
+			md = checkfield(md,'fieldname','materials.rheology_E','>',0,'timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','materials.rheology_B','>',0,'timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','materials.rheology_law','values',{'None' 'BuddJacka' 'Cuffey' 'CuffeyTemperate' 'Paterson' 'Arrhenius' 'LliboutryDuval'});
+			md = checkfield(md,'fieldname','materials.effectiveconductivity_averaging','numel',[1],'values',[0 1 2]);
+            
+			if ismember('SealevelchangeAnalysis',analyses),
+				md = checkfield(md,'fieldname','materials.earth_density','>',0,'numel',1);
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Materials:'));
+
+			fielddisplay(self,'rho_ice','ice density [kg/m^3]');
+			fielddisplay(self,'rho_water','ocean water density [kg/m^3]');
+			fielddisplay(self,'rho_freshwater','fresh water density [kg/m^3]');
+			fielddisplay(self,'mu_water','water viscosity [N s/m^2]');
+			fielddisplay(self,'heatcapacity','heat capacity [J/kg/K]');
+			fielddisplay(self,'thermalconductivity',['ice thermal conductivity [W/m/K]']);
+			fielddisplay(self,'temperateiceconductivity','temperate ice thermal conductivity [W/m/K]');
+			fielddisplay(self,'effectiveconductivity_averaging','computation of effective conductivity: (0) arithmetic mean, (1) harmonic mean, (2) geometric mean (default)');
+			fielddisplay(self,'meltingpoint','melting point of ice at 1atm in K');
+			fielddisplay(self,'latentheat','latent heat of fusion [J/kg]');
+			fielddisplay(self,'beta','rate of change of melting point with pressure [K/Pa]');
+			fielddisplay(self,'mixed_layer_capacity','mixed layer capacity [W/kg/K]');
+			fielddisplay(self,'thermal_exchange_velocity','thermal exchange velocity [m/s]');
+			fielddisplay(self,'rheology_E','enhancement factor');
+			fielddisplay(self,'rheology_B','flow law parameter [Pa s^(1/n)]');
+			fielddisplay(self,'rheology_n','Glen''s flow law exponent');
+			fielddisplay(self,'rheology_law',['law for the temperature dependance of the rheology: ''None'', ''BuddJacka'', Cuffey'', ''CuffeyTemperate'', ''Paterson'', ''Arrhenius'' or ''LliboutryDuval''']);
+			fielddisplay(self,'earth_density','Mantle density [kg/m^-3]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.materials.type','data',4,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_ice','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_water','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_freshwater','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mu_water','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','heatcapacity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','latentheat','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermalconductivity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','effectiveconductivity_averaging','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','meltingpoint','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','beta','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_E','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'data',self.rheology_law,'name','md.materials.rheology_law','format','String');
+
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','earth_density','format','Double');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.materials.rho_ice'],self.rho_ice);
+			writejsdouble(fid,[modelname '.materials.rho_water'],self.rho_water);
+			writejsdouble(fid,[modelname '.materials.rho_freshwater'],self.rho_freshwater);
+			writejsdouble(fid,[modelname '.materials.mu_water'],self.mu_water);
+			writejsdouble(fid,[modelname '.materials.heatcapacity'],self.heatcapacity);
+			writejsdouble(fid,[modelname '.materials.latentheat'],self.latentheat);
+			writejsdouble(fid,[modelname '.materials.thermalconductivity'],self.thermalconductivity);
+			writejsdouble(fid,[modelname '.materials.temperateiceconductivity'],self.temperateiceconductivity);
+			writejsdouble(fid,[modelname '.materials.effectiveconductivity_averaging'],self.effectiveconductivity_averaging);
+			writejsdouble(fid,[modelname '.materials.meltingpoint'],self.meltingpoint);
+			writejsdouble(fid,[modelname '.materials.beta'],self.beta);
+			writejsdouble(fid,[modelname '.materials.mixed_layer_capacity'],self.mixed_layer_capacity);
+			writejsdouble(fid,[modelname '.materials.thermal_exchange_velocity'],self.thermal_exchange_velocity);
+			writejsdouble(fid,[modelname '.materials.mixed_layer_capacity'],self.mixed_layer_capacity);
+			writejs1Darray(fid,[modelname '.materials.rheology_E'],self.rheology_E);
+			writejs1Darray(fid,[modelname '.materials.rheology_B'],self.rheology_B);
+			writejs1Darray(fid,[modelname '.materials.rheology_n'],self.rheology_n);
+			writejsstring(fid,[modelname '.materials.rheology_law'],self.rheology_law);
+			writejsdouble(fid,[modelname '.materials.earth_density'],self.earth_density);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/matenhancedice.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/matenhancedice.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/matenhancedice.py	(revision 27955)
@@ -0,0 +1,145 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class matenhancedice(object):
+    """MATICE class definition
+
+    Usage:
+        matenhancedice = matenhancedice()
+    """
+
+    def __init__(self):  # {{{
+        self.rho_ice = 0
+        self.rho_water = 0
+        self.rho_freshwater = 0
+        self.mu_water = 0
+        self.heatcapacity = 0
+        self.latentheat = 0
+        self.thermalconductivity = 0
+        self.temperateiceconductivity = 0
+        self.effectiveconductivity_averaging = 0
+        self.meltingpoint = 0
+        self.beta = 0
+        self.mixed_layer_capacity = 0
+        self.thermal_exchange_velocity = 0
+        self.rheology_E = np.nan
+        self.rheology_B = np.nan
+        self.rheology_n = np.nan
+        self.rheology_law = ''
+
+        #SLC
+        self.earth_density = 0
+
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   Materials:\n'
+        s += '{}\n'.format(fielddisplay(self, 'rho_ice', 'ice density [kg/m^3]'))
+        s += '{}\n'.format(fielddisplay(self, 'rho_water', 'water density [kg/m^3]'))
+        s += '{}\n'.format(fielddisplay(self, 'rho_freshwater', 'fresh water density [kg/m^3]'))
+        s += '{}\n'.format(fielddisplay(self, 'mu_water', 'water viscosity [N s/m^2]'))
+        s += '{}\n'.format(fielddisplay(self, 'heatcapacity', 'heat capacity [J/kg/K]'))
+        s += '{}\n'.format(fielddisplay(self, 'thermalconductivity', 'ice thermal conductivity [W/m/K]'))
+        s += '{}\n'.format(fielddisplay(self, 'temperateiceconductivity', 'temperate ice thermal conductivity [W/m/K]'))
+        s += '{}\n'.format(fielddisplay(self, 'effectiveconductivity_averaging', 'computation of effectiveconductivity: (0) arithmetic mean, (1) harmonic mean, (2) geometric mean (default)'))
+        s += '{}\n'.format(fielddisplay(self, 'meltingpoint', 'melting point of ice at 1atm in K'))
+        s += '{}\n'.format(fielddisplay(self, 'latentheat', 'latent heat of fusion [J/m^3]'))
+        s += '{}\n'.format(fielddisplay(self, 'beta', 'rate of change of melting point with pressure [K/Pa]'))
+        s += '{}\n'.format(fielddisplay(self, 'mixed_layer_capacity', 'mixed layer capacity [W/kg/K]'))
+        s += '{}\n'.format(fielddisplay(self, 'thermal_exchange_velocity', 'thermal exchange velocity [m/s]'))
+        s += '{}\n'.format(fielddisplay(self, 'rheology_E', 'enhancement factor'))
+        s += '{}\n'.format(fielddisplay(self, 'rheology_B', 'flow law parameter [Pa s^(1/n)]'))
+        s += '{}\n'.format(fielddisplay(self, 'rheology_n', 'Glen\'s flow law exponent'))
+        s += '{}\n'.format(fielddisplay(self, 'rheology_law', 'law for the temperature dependance of the rheology: \'None\', \'BuddJacka\', \'Cuffey\', \'CuffeyTemperate\', \'Paterson\', \'Arrhenius\' or \'LliboutryDuval\''))
+        s += '{}\n'.format(fielddisplay(self, 'earth_density', 'Mantle density [kg/m^-3]'))
+
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.rheology_E = project3d(md, 'vector', self.rheology_E, 'type', 'node')
+        self.rheology_B = project3d(md, 'vector', self.rheology_B, 'type', 'node')
+        self.rheology_n = project3d(md, 'vector', self.rheology_n, 'type', 'element')
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Ice density (kg/m^3)
+        self.rho_ice = 917.0
+        # Ocean water density (kg/m^3)
+        self.rho_water = 1023.0
+        # Fresh water density (kg/m^3)
+        self.rho_freshwater = 1000.0
+        # Water viscosity (N.s/m^2)
+        self.mu_water = 0.001787
+        # Ice heat capacity cp (J/kg/K)
+        self.heatcapacity = 2093.0
+        # Ice latent heat of fusion L (J/kg)
+        self.latentheat = 3.34 * pow(10, 5)
+        # Ice thermal conductivity (W/m/K)
+        self.thermalconductivity = 2.4
+        # Temperate ice thermal conductivity (W/m/K)
+        self.temperateiceconductivity = 0.24
+        # Computation of effective conductivity
+        self.effectiveconductivity_averaging = 1
+        # The melting point of ice at 1 atmosphere of pressure in K
+        self.meltingpoint = 273.15
+        # Rate of change of melting point with pressure (K/Pa)
+        self.beta = 9.8 * pow(10, -8)
+        # Mixed layer (ice-water interface) heat capacity (J/kg/K)
+        self.mixed_layer_capacity = 3974.0
+        # Thermal exchange velocity (ice-water interface) (m/s)
+        self.thermal_exchange_velocity = 1.00 * pow(10, -4)
+        # Rheology law: what is the temperature dependence of B with T
+        # available: none, paterson and arrhenius
+        self.rheology_law = 'Paterson'
+
+        # SLC
+        self.earth_density = 5512 # average density of the Earth, (kg/m^3)
+
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        md = checkfield(md, 'fieldname', 'materials.rho_ice', '>', 0)
+        md = checkfield(md, 'fieldname', 'materials.rho_water', '>', 0)
+        md = checkfield(md, 'fieldname', 'materials.rho_freshwater', '>', 0)
+        md = checkfield(md, 'fieldname', 'materials.mu_water', '>', 0)
+        md = checkfield(md, 'fieldname', 'materials.rheology_E', '>', 0, 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'materials.rheology_B', '>', 0, 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'materials.rheology_n', '>', 0, 'size', [md.mesh.numberofelements])
+        md = checkfield(md, 'fieldname', 'materials.rheology_law', 'values', ['None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius', 'LliboutryDuval'])
+        md = checkfield(md, 'fieldname', 'materials.effectiveconductivity_averaging', 'numel', [1], 'values', [0, 1, 2])
+
+        if 'SealevelchangeAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'materials.earth_density', '>', 0, 'numel', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'name', 'md.materials.type', 'data', 4, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_ice', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_water', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_freshwater', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mu_water', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'heatcapacity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'latentheat', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermalconductivity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'temperateiceconductivity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'effectiveconductivity_averaging', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'meltingpoint', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'beta', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mixed_layer_capacity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermal_exchange_velocity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_E', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_B', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_n', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'data', self.rheology_law, 'name', 'md.materials.rheology_law', 'format', 'String')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'earth_density', 'format', 'Double')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/materials.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/materials.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/materials.js	(revision 27955)
@@ -0,0 +1,380 @@
+class materials {
+	/**
+	 * MATERIALS class definition
+	 *
+	 * Usage:
+	 *     materials = materials();
+	 */
+	constructor() {//{{{
+		this.nature = [];
+
+		let nargs = arguments.length;
+		if (nargs == 0) {
+			this.nature=['ice'];
+		} else {
+			this.nature=arguments;
+		}
+
+		// Check this is acceptable
+		for (let i = 0; i < this.nature.length; ++i) {
+			if (!(strcmpi(this.nature[i], 'litho') || strcmpi(this.nature[i], 'ice') || strcmpi(this.nature[i], 'hydro'))) {
+				error('materials constructor error message: nature of the material not supported yet! (\'ice\' or \'litho\' or \'hydro\')');
+			}
+		}
+
+		// Start filling in the dynamic fields (not truly dynamic under JavaScript)
+		for (let i = 0; i < length(this.nature); ++i) {
+			let nat = this.nature[i];
+			switch (nat) {
+				case 'ice':
+					this.rho_ice = 0;
+					this.rho_water = 0;
+					this.rho_freshwater = 0;
+					this.mu_water = 0;
+					this.heatcapacity = 0;
+					this.latentheat = 0;
+					this.thermalconductivity = 0;
+					this.temperateiceconductivity = 0;
+					this.effectiveconductivity_averaging = 0;
+					this.meltingpoint = 0;
+					this.beta = 0;
+					this.mixed_layer_capacity = 0;
+					this.thermal_exchange_velocity = 0;
+					this.rheology_B = 0;
+					this.rheology_n = 0;
+					this.rheology_law = 0;
+					break;
+				case 'litho':
+					this.numlayers = 0;
+					this.radius = 0;
+					this.viscosity = 0;
+					this.lame_lambda = 0;
+					this.lame_mu = 0;
+					this.burgers_viscosity = 0;
+					this.burgers_mu = 0;
+					this.ebm_alpha = 0;
+					this.ebm_delta = 0;
+					this.ebm_taul = 0;
+					this.ebm_tauh = 0;
+					this.rheologymodel = 0;
+					this.density = 0;
+					this.issolid = 0;
+					break;
+				case 'hydro':
+					this.rho_ice = 0;
+					this.rho_water = 0;
+					this.rho_freshwater = 0;
+					break;
+				default:
+					error('materials constructor error message: nature of the material not supported yet! (\'ice\' or \'litho\' or \'hydro\')');
+			}
+			this.earth_density = 0;
+
+			// Set default parameters
+			this.setdefaultparameters();
+		}
+	} //}}}
+	disp() {//{{{
+		console.log(sprintf('   Materials:'));
+
+		for (let i = 0; i < length(this.nature); ++i) {
+			let nat = this.nature[i];
+			switch (nat) {
+				case 'ice':
+					console.log(sprintf('   \nIce:'));
+					fielddisplay(this,'rho_ice','ice density [kg/m^3]');
+					fielddisplay(this,'rho_water','ocean water density [kg/m^3]');
+					fielddisplay(this,'rho_freshwater','fresh water density [kg/m^3]');
+					fielddisplay(this,'mu_water','water viscosity [N s/m^2]');
+					fielddisplay(this,'heatcapacity','heat capacity [J/kg/K]');
+					fielddisplay(this,'thermalconductivity','ice thermal conductivity [W/m/K]');
+					fielddisplay(this,'temperateiceconductivity','temperate ice thermal conductivity [W/m/K]');
+					fielddisplay(this,'meltingpoint','melting point of ice at 1atm in K');
+					fielddisplay(this,'latentheat','latent heat of fusion [J/kg]');
+					fielddisplay(this,'beta','rate of change of melting point with pressure [K/Pa]');
+					fielddisplay(this,'mixed_layer_capacity','mixed layer capacity [W/kg/K]');
+					fielddisplay(this,'thermal_exchange_velocity','thermal exchange velocity [m/s]');
+					fielddisplay(this,'rheology_B','flow law parameter [Pa s^(1/n)]');
+					fielddisplay(this,'rheology_n','Glen\'s flow law exponent');
+					fielddisplay(this,'rheology_law','law for the temperature dependance of the rheology: \'None\', \'BuddJacka\', \'Cuffey\', \'CuffeyTemperate\', \'Paterson\', \'Arrhenius\', \'LliboutryDuval\', \'NyeCO2\', or \'NyeH2O\'');
+					break;
+				case 'litho':
+					console.log(sprintf('   \nLitho:'));
+					fielddisplay(this,'numlayers','number of layers (default: 2)');
+					fielddisplay(this,'radius','array describing the radius for each interface (numlayers+1) [m]');
+					fielddisplay(this,'viscosity','array describing each layer\'s viscosity (numlayers) [Pa.s]');
+					fielddisplay(this,'lame_lambda','array describing the lame lambda parameter (numlayers) [Pa]');
+					fielddisplay(this,'lame_mu','array describing the shear modulus for each layers (numlayers) [Pa]');
+					fielddisplay(this,'burgers_viscosity','array describing each layer\'s transient viscosity, only for Burgers rheologies  (numlayers) [Pa.s]');
+					fielddisplay(this,'burgers_mu','array describing each layer\'s transient shear modulus, only for Burgers rheologies  (numlayers) [Pa]');
+
+					fielddisplay(this,'ebm_alpha','array describing each layer\'s exponent parameter controlling the shape of shear modulus curve between taul and tauh, only for EBM rheology (numlayers)');
+					fielddisplay(this,'ebm_delta','array describing each layer\'s amplitude of the transient relaxation (ratio between elastic rigity to pre-maxwell relaxation rigity), only for EBM rheology (numlayers)');
+					fielddisplay(this,'ebm_taul','array describing each layer\'s starting period for transient relaxation, only for EBM rheology  (numlayers) [s]');
+					fielddisplay(this,'ebm_tauh','array describing each layer\'s array describing each layer\'s end period for transient relaxation, only for Burgers rheology (numlayers) [s]');
+
+					fielddisplay(this,'rheologymodel','array describing whether we adopt a Maxwell (0), Burgers (1) or EBM (2) rheology (default: 0)');
+					fielddisplay(this,'density','array describing each layer\'s density (numlayers) [kg/m^3]');
+					fielddisplay(this,'issolid','array describing whether the layer is solid or liquid (default 1) (numlayers)');
+					break;
+				case 'hydro':
+					console.log(sprintf('   \nHydro:'));
+					fielddisplay(this,'rho_ice','ice density [kg/m^3]');
+					fielddisplay(this,'rho_water','ocean water density [kg/m^3]');
+					fielddisplay(this,'earth_density','mantle density [kg/m^3]');
+					fielddisplay(this,'rho_freshwater','fresh water density [kg/m^3]');
+					break;
+				default:
+					error('materials constructor error message: nature of the material not supported yet! (\'ice\' or \'litho\' or \'hydro\')');
+			}
+		}
+	} //}}}
+	setdefaultparameters() {//{{{
+		for (let i = 0; i < this.nature.length; ++i) {
+			let nat = this.nature[i];
+			switch (nat) {
+				case 'ice':
+					// Ice density (kg/m^3)
+					this.rho_ice = 917;
+
+					// Ocean water density (kg/m^3)
+					this.rho_water = 1023
+
+					// Fresh water density (kg/m^3)
+					this.rho_freshwater = 1000;
+
+					// Water viscosity (N.s/m^2)
+					this.mu_water = 0.001787;
+
+					// Ice heat capacity cp (J/kg/K)
+					this.heatcapacity = 2093;
+
+					// Ice latent heat of fusion L (J/kg)
+					this.latentheat = 3.34 * 1e5;
+
+					// Ice thermal conductivity (W/m/K)
+					this.thermalconductivity = 2.4;
+
+					// Wet ice thermal conductivity (W/m/K)
+					this.temperateiceconductivity = 0.24;
+
+					// Computation of effective conductivity
+					this.effectiveconductivity_averaging = 1;
+
+					// The melting point of ice at 1 atmosphere of pressure in K
+					this.meltingpoint = 273.15;
+
+					// Rate of change of melting point with pressure (K/Pa)
+					this.beta = 9.8 * 1e-8;
+
+					// Mixed layer (ice-water interface) heat capacity (J/kg/K)
+					this.mixed_layer_capacity = 3974;
+
+					// Thermal exchange velocity (ice-water interface) (m/s)
+					this.thermal_exchange_velocity = 1.00 * 1e-4;
+
+					// Rheology law: what is the temperature dependence of B with T
+					// available: none, paterson and arrhenius
+					this.rheology_law = 'Paterson';
+
+					// Rheology fields default
+					this.rheology_B = 1 * 1e8;
+					this.rheology_n = 3;
+					break;
+				case 'litho':
+					// We default to a configuration that enables running GIA 
+					// solutions using giacaron and/or giaivins
+					this.numlayers = 2;
+
+					// Center of the earth (approximation, must not be 0), then the 
+					// lab (lithosphere/asthenosphere boundary) then the surface
+					// (with 1d3 to avoid numerical singularities)
+					this.radius = [1e3, 6278 * 1e3, 6378 * 1e3];
+
+					this.viscosity = [1e21, 1e40]; // Mantle and lithosphere viscosity (respectively) [Pa.s]
+					this.lame_mu = [1.45 * 1e11, 6.7 * 1e10]; // (Pa) // Lithosphere and mantle shear modulus (respectively) [Pa]
+					this.lame_lambda = this.lame_mu; // (Pa) // Mantle and lithosphere lamba parameter (respectively) [Pa]
+					this.burgers_viscosity = [NaN, NaN];
+					this.burgers_mu = [NaN, NaN];
+
+					this.ebm_alpha = [NaN, NaN];
+					this.ebm_delta = [NaN, NaN];
+					this.ebm_taul = [NaN, NaN];
+					this.ebm_tauh = [NaN, NaN];
+					this.rheologymodel = [0, 0];
+					this.density = [5.51 * 1e3, 5.50 * 1e3]; // (Pa) // Mantle and lithosphere density [kg/m^3]
+					this.issolid = [1, 1]; // Is layer solid or liquid?
+					break;
+				case 'hydro':
+					// Ice density (kg/m^3)
+					this.rho_ice = 917;
+
+					// Ocean water density (kg/m^3)
+					this.rho_water = 1023;
+
+					// Fresh water density (kg/m^3)
+					this.rho_freshwater = 1000;
+					break;
+				default:
+					error('materials constructor error message: nature of the material not supported yet! (\'ice\' or \'litho\' or \'hydro\')');
+			}
+
+			// Average density of the Earth (kg/m^3)
+			this.earth_density = 5512;
+		}
+	} //}}}
+	checkconsistency(md, solution, analyses) {//{{{
+		for (let i = 0; i < this.nature.length; ++i) {
+			let nat = this.nature[i];
+			if (nat == 'ice') {
+				md = checkfield(md, 'fieldname', 'materials.rho_ice', '>', 0);
+				md = checkfield(md, 'fieldname', 'materials.rho_water', '>', 0);
+				md = checkfield(md, 'fieldname', 'materials.rho_freshwater', '>', 0);
+				md = checkfield(md, 'fieldname', 'materials.mu_water', '>', 0);
+				md = checkfield(md, 'fieldname', 'materials.rheology_B', '>', 0, 'timeseries', 1, 'NaN', 1, 'Inf', 1);
+				md = checkfield(md, 'fieldname', 'materials.rheology_n', '>', 0, 'size', [md.mesh.numberofelements, 1]);
+				md = checkfield(md, 'fieldname', 'materials.rheology_law', 'values', ['None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius', 'LliboutryDuval', 'NyeCO2', 'NyeH2O']);
+			} else if (nat == 'litho') {
+				if (!analyses.includes('LoveAnalysis')) {
+					return md;
+				}
+
+				md = checkfield(md, 'fieldname', 'materials.numlayers', 'NaN', 1, 'Inf', 1, '>', 0, 'numel', 1);
+				md = checkfield(md, 'fieldname', 'materials.radius', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers + 1, 1], '>', 0);
+				md = checkfield(md, 'fieldname', 'materials.lame_mu', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0);
+				md = checkfield(md, 'fieldname', 'materials.lame_lambda', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0);
+				md = checkfield(md, 'fieldname', 'materials.issolid', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0, '<', 2);
+				md = checkfield(md, 'fieldname', 'materials.density', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers, 1], '>', 0);
+				md = checkfield(md, 'fieldname', 'materials.viscosity', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0);
+				md = checkfield(md, 'fieldname', 'materials.rheologymodel', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0, '<=', 2);
+				md = checkfield(md, 'fieldname', 'materials.burgers_viscosity', 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0);
+				md = checkfield(md, 'fieldname', 'materials.burgers_mu', 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0);
+				md = checkfield(md, 'fieldname', 'materials.ebm_alpha', 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0);
+				md = checkfield(md, 'fieldname', 'materials.ebm_delta', 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0);
+				md = checkfield(md, 'fieldname', 'materials.ebm_taul', 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0);
+				md = checkfield(md, 'fieldname', 'materials.ebm_tauh', 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0);
+
+				for (let i = 0; i < md.materials.numlayers; ++i) {
+					if (md.materials.rheologymodel[i] == 1 && (isnan(md.materials.burgers_viscosity[i]) || isnan(md.materials.burgers_mu[i]))) {
+						error('materials checkconsistency error message: Litho burgers_viscosity or burgers_mu has NaN values, inconsistent with rheologymodel choice');
+					}
+					if (md.materials.rheologymodel[i] == 2 && (isnan(md.materials.ebm_alpha[i]) || isnan(md.materials.ebm_delta[i])) || isnan(md.materials.ebm_taul[i] || isnan(md.materials.ebm_tauh[i]))) {
+						error('materials checkconsistency error message: Litho ebm_alpha, ebm_delta, ebm_taul or ebm_tauh has NaN values, inconsistent with rheologymodel choice');
+					}
+				}
+				if (md.materials.issolid[0] == 0 || md.materials.lame_mu[0] == 0) {
+					error('First layer must be solid (issolid[0] > 0 AND lame_mu[0] > 0). Add a weak inner core if necessary.');
+				}
+				let ind = find(md.materials.issolid == 0);
+				if (sum(ismember(diff(ind), 1) >= 1)) { // If there are at least two consecutive indices that contain issolid = 0
+					error('Fluid layers detected at layers #' + ind + ', but having 2 or more adjacent fluid layers is not supported yet. Consider merging them.');
+				}
+			} else if (nat == 'hydro') {
+				md = checkfield(md, 'fieldname', 'materials.rho_ice', '>', 0);
+				md = checkfield(md, 'fieldname', 'materials.rho_water', '>', 0);
+				md = checkfield(md, 'fieldname', 'materials.earth_density', '>', 0, 'numel', 1);
+				md = checkfield(md, 'fieldname', 'materials.rho_freshwater', '>', 0);
+			} else {
+				error('materials constructor error message: nature of the material not supported yet! (\'ice\' or \'litho\' or \'hydro\')');
+			}
+		}
+
+		return md;
+	} //}}}
+	marshall(md, prefix, fid) {//{{{
+		// 1: MatdamageiceEnum 2: MatestarEnum 3: MaticeEnum 4: MatenhancediceEnum 5: MaterialsEnum
+		WriteData(fid, prefix, 'name', 'md.materials.nature', 'data', naturetointeger(this.nature), 'format', 'IntMat', 'mattype', 3);
+		WriteData(fid, prefix, 'name', 'md.materials.type', 'data', 5, 'format', 'Integer'); // DANGER: this can evolve if you have classes
+		for (let i = 0; i < this.nature.length; ++i) {
+			let nat = this.nature[i];
+			if (nat == 'ice') {
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'rho_ice', 'format', 'Double');
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'rho_water', 'format', 'Double');
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'rho_freshwater', 'format', 'Double');
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'mu_water', 'format', 'Double');
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'heatcapacity', 'format', 'Double');
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'latentheat', 'format', 'Double');
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'thermalconductivity', 'format', 'Double');
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'temperateiceconductivity', 'format', 'Double');
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'effectiveconductivity_averaging', 'format', 'Integer');
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'meltingpoint', 'format', 'Double');
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'beta', 'format', 'Double');
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'mixed_layer_capacity', 'format', 'Double');
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'thermal_exchange_velocity', 'format', 'Double');
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'rheology_B', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts);
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'rheology_n', 'format', 'DoubleMat', 'mattype', 2);
+				WriteData(fid, prefix, 'data', this.rheology_law, 'name', 'md.materials.rheology_law', 'format', 'String');
+			} else if (nat == 'litho') {
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'numlayers', 'format', 'Integer');
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'radius', 'format', 'DoubleMat', 'mattype', 3);
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'lame_mu', 'format', 'DoubleMat', 'mattype', 3);
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'lame_lambda', 'format', 'DoubleMat', 'mattype', 3);
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'issolid', 'format', 'DoubleMat', 'mattype', 3);
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'density', 'format', 'DoubleMat', 'mattype', 3);
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'viscosity', 'format', 'DoubleMat', 'mattype', 3);
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'rheologymodel', 'format', 'DoubleMat', 'mattype', 3);
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'burgers_viscosity', 'format', 'DoubleMat', 'mattype', 3);
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'burgers_mu', 'format', 'DoubleMat', 'mattype', 3);
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'ebm_alpha', 'format', 'DoubleMat', 'mattype', 3);
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'ebm_delta', 'format', 'DoubleMat', 'mattype', 3);
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'ebm_taul', 'format', 'DoubleMat', 'mattype', 3);
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'ebm_tauh', 'format', 'DoubleMat', 'mattype', 3);
+				// Compute earth density compatible with our layer density distribution
+				let earth_density = 0;
+				for (let i = 0; i < this.numlayers; ++i) {
+					earth_density = earth_density + (Math.pow(this.radius[i + 1], 3) - Math.pow(this.radius[i], 3)) * this.density[i];
+				}
+				earth_density = earth_density / Math.pow(this.radius[this.numlayers]);
+				this.earth_density = earth_density;
+			} else if (nat == 'hydro') {
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'rho_ice', 'format', 'Double');
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'rho_water', 'format', 'Double');
+				WriteData(fid, prefix, 'object', this, 'class', 'materials', 'fieldname', 'rho_freshwater', 'format', 'Double');
+			} else {
+				error('materials constructor error message: nature of the material not supported yet! (\'ice\' or \'litho\' or \'hydro\')');
+			}
+			WriteData(fid, prefix, 'data', this.earth_density, 'name', 'md.materials.earth_density', 'format', 'Double');
+		}
+	} //}}}
+	extrude(md) {//{{{
+		for (let i = 0; i < this.nature.length; ++i) {
+			let nat = this.nature[i];
+			if (nat == 'ice') {
+				this.rheology_B = project3d(md, 'vector', this.rheology_B, 'type', 'node');
+				this.rheology_n = project3d(md, 'vector', this.rheology_n, 'type', 'element');
+			}
+		}
+	} //}}}
+} //}}}
+
+function naturetointeger(strnat) {//{{{
+	let intnat = zeros(strnat.length, 1);
+	for (let i = 0; i < strnat.length; ++i) {
+		switch (strnat[i]) {
+			case 'damageice':
+				intnat[i] = 1;
+				break;
+			case 'estar':
+				intnat[i] = 2;
+				break;
+			case 'ice':
+				intnat[i] = 3;
+				break;
+			case 'enhancedice':
+				intnat[i] = 4;
+				break;
+			//case 'materials': // This case will never happen, kept to ensure equivalent of codes between IoCodeToMaterialsEnum and IoCodeToNatureEnum
+			//	intnat[i] = 5;
+			//	break;
+			case 'litho':
+				intnat[i] = 6;
+				break;
+			case 'hydro':
+				intnat[i] = 7;
+				break;
+			default:
+				error('materials constructor error message: nature of the material not supported yet! (\'ice\' or \'litho\' or \'hydro\')');
+		}
+	}
+	return intnat;
+}// }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/materials.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/materials.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/materials.m	(revision 27955)
@@ -0,0 +1,584 @@
+%MATERIALS class definition
+%
+%   Usage:
+%      materials=materials();
+
+classdef materials < dynamicprops
+	properties (SetAccess=public)
+		nature={};
+		%all properties are dynamic.
+	end
+	methods
+		function self = materials(varargin) % {{{
+			if nargin==0
+				self.nature={'ice'};
+			else
+				self.nature=varargin;
+			end
+
+			%check this is acceptable:
+			for i=1:length(self.nature),
+				if ~(strcmpi(self.nature{i},'litho') | strcmpi(self.nature{i},'ice') | strcmpi(self.nature{i},'hydro')),
+					error('materials constructor error message: nature of the material not supported yet! (''ice'' or ''litho'' or ''hydro'')');
+				end
+			end
+
+			%start filling in the dynamic fields:
+			for i=1:length(self.nature),
+				nat=self.nature{i};
+				switch nat
+				case 'ice'
+					self.addprop('rho_ice');
+					self.addprop('rho_water');
+					self.addprop('rho_freshwater');
+					self.addprop('mu_water');
+					self.addprop('heatcapacity');
+					self.addprop('latentheat');
+					self.addprop('thermalconductivity');
+					self.addprop('temperateiceconductivity');
+					self.addprop('effectiveconductivity_averaging');
+					self.addprop('meltingpoint');
+					self.addprop('beta');
+					self.addprop('mixed_layer_capacity');
+					self.addprop('thermal_exchange_velocity');
+					self.addprop('rheology_B');
+					self.addprop('rheology_n');
+					self.addprop('rheology_law');
+				case 'litho'
+					self.addprop('numlayers');
+					self.addprop('radius');
+					self.addprop('viscosity');
+					self.addprop('lame_lambda');
+					self.addprop('lame_mu');
+					self.addprop('burgers_viscosity');
+					self.addprop('burgers_mu');
+					self.addprop('ebm_alpha');
+					self.addprop('ebm_delta');
+					self.addprop('ebm_taul');
+					self.addprop('ebm_tauh');
+					self.addprop('rheologymodel');
+					self.addprop('density');
+					self.addprop('issolid');
+				case 'hydro'
+					self.addprop('rho_ice');
+					self.addprop('rho_water');
+					self.addprop('rho_freshwater');
+				otherwise
+					error('materials constructor error message: nature of the material not supported yet! (''ice'' or ''litho'' or ''hydro'')');
+				end
+			end
+			self.addprop('earth_density');
+
+			%set default parameters:
+			self.setdefaultparameters();
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			for i=1:length(self.nature),
+				nat=self.nature{i};
+				switch nat
+				case 'ice'
+					%ice density (kg/m^3)
+					self.rho_ice=917.;
+
+					%ocean water density (kg/m^3)
+					self.rho_water=1023.;
+
+					%fresh water density (kg/m^3)
+					self.rho_freshwater=1000.;
+
+					%water viscosity (N.s/m^2)
+					self.mu_water=0.001787;
+
+					%ice heat capacity cp (J/kg/K)
+					self.heatcapacity=2093.;
+
+					%ice latent heat of fusion L (J/kg)
+					self.latentheat=3.34*1e5;
+
+					%ice thermal conductivity (W/m/K)
+					self.thermalconductivity=2.4;
+
+					%wet ice thermal conductivity (W/m/K)
+					self.temperateiceconductivity=.24;
+
+					%computation of effective conductivity
+					self.effectiveconductivity_averaging=1;
+
+					%the melting point of ice at 1 atmosphere of pressure in K
+					self.meltingpoint=273.15;
+
+					%rate of change of melting point with pressure (K/Pa)
+					self.beta=9.8*1e-8;
+
+					%mixed layer (ice-water interface) heat capacity (J/kg/K)
+					self.mixed_layer_capacity=3974.;
+
+					%thermal exchange velocity (ice-water interface) (m/s)
+					self.thermal_exchange_velocity=1.00*1e-4;
+
+					%Rheology law: what is the temperature dependence of B with T
+					%available: none, paterson and arrhenius
+					self.rheology_law='Paterson';
+
+					%Rheology fields default: 
+					self.rheology_B   = 1 * 1e8;
+					self.rheology_n   = 3;
+
+				case 'litho'
+					%we default to a configuration that enables running GIA solutions using giacaron and/or giaivins.
+					self.numlayers=2;
+
+					%center of the earth (approximation, must not be 0), then the lab (lithosphere/asthenosphere boundary) then the surface
+					%(with 1d3 to avoid numerical singularities)
+					self.radius=[1e3;6278*1e3;6378*1e3];
+
+					self.viscosity=[1e21;1e40]; %mantle and lithosphere viscosity (respectively) [Pa.s]
+					self.lame_mu=[1.45*1e11;6.7*1e10];  % (Pa) %lithosphere and mantle shear modulus (respectively) [Pa]
+					self.lame_lambda=self.lame_mu;  % (Pa) %mantle and lithosphere lamba parameter (respectively) [Pa]
+					self.burgers_viscosity=[NaN;NaN];
+					self.burgers_mu=[NaN;NaN];
+
+					self.ebm_alpha=[NaN;NaN];
+					self.ebm_delta=[NaN;NaN];
+					self.ebm_taul=[NaN;NaN];
+					self.ebm_tauh=[NaN;NaN];
+					self.rheologymodel=[0;0];
+					self.density=[5.51*1e3;5.50*1e3];  % (Pa) %mantle and lithosphere density [kg/m^3]
+					self.issolid=[1;1]; % is layer solid or liquid.
+
+				case 'hydro'
+					%ice density (kg/m^3)
+					self.rho_ice=917.;
+
+					%ocean water density (kg/m^3)
+					self.rho_water=1023.;
+					
+					%fresh water density (kg/m^3)
+					self.rho_freshwater=1000.;
+
+				otherwise
+					error('materials constructor error message: nature of the material not supported yet! (''ice'' or ''litho'' or ''hydro'')');
+				end
+
+				% average density of the Earth (kg/m^3)
+				self.earth_density=5512;
+
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Materials:'));
+
+			for i=1:length(self.nature),
+				nat=self.nature{i};
+				switch nat
+				case 'ice'
+					disp(sprintf('\n      Ice:'));
+					fielddisplay(self,'rho_ice','ice density [kg/m^3]');
+					fielddisplay(self,'rho_water','ocean water density [kg/m^3]');
+					fielddisplay(self,'rho_freshwater','fresh water density [kg/m^3]');
+					fielddisplay(self,'mu_water','water viscosity [N s/m^2]');
+					fielddisplay(self,'heatcapacity','heat capacity [J/kg/K]');
+					fielddisplay(self,'thermalconductivity',['ice thermal conductivity [W/m/K]']);
+					fielddisplay(self,'temperateiceconductivity','temperate ice thermal conductivity [W/m/K]');
+					fielddisplay(self,'meltingpoint','melting point of ice at 1atm in K');
+					fielddisplay(self,'latentheat','latent heat of fusion [J/kg]');
+					fielddisplay(self,'beta','rate of change of melting point with pressure [K/Pa]');
+					fielddisplay(self,'mixed_layer_capacity','mixed layer capacity [W/kg/K]');
+					fielddisplay(self,'thermal_exchange_velocity','thermal exchange velocity [m/s]');
+					fielddisplay(self,'rheology_B','flow law parameter [Pa s^(1/n)]');
+					fielddisplay(self,'rheology_n','Glen''s flow law exponent');
+					fielddisplay(self,'rheology_law',['law for the temperature dependance of the rheology: ''None'', ''BuddJacka'', Cuffey'', ''CuffeyTemperate'', ''Paterson'', ''Arrhenius'', ''LliboutryDuval'', ''NyeCO2'', or ''NyeH2O''']);
+				case 'litho'
+					disp(sprintf('\n      Litho:'));
+					fielddisplay(self,'numlayers','number of layers (default: 2)');
+					fielddisplay(self,'radius','array describing the radius for each interface (numlayers+1) [m]');
+					fielddisplay(self,'viscosity','array describing each layer''s viscosity (numlayers) [Pa.s]');
+					fielddisplay(self,'lame_lambda','array describing the lame lambda parameter (numlayers) [Pa]');
+					fielddisplay(self,'lame_mu','array describing the shear modulus for each layers (numlayers) [Pa]');
+					fielddisplay(self,'burgers_viscosity','array describing each layer''s transient viscosity, only for Burgers rheologies  (numlayers) [Pa.s]');
+					fielddisplay(self,'burgers_mu','array describing each layer''s transient shear modulus, only for Burgers rheologies  (numlayers) [Pa]');
+
+					fielddisplay(self,'ebm_alpha','array describing each layer''s exponent parameter controlling the shape of shear modulus curve between taul and tauh, only for EBM rheology (numlayers)');
+					fielddisplay(self,'ebm_delta','array describing each layer''s amplitude of the transient relaxation (ratio between elastic rigity to pre-maxwell relaxation rigity), only for EBM rheology (numlayers)');
+					fielddisplay(self,'ebm_taul','array describing each layer''s starting period for transient relaxation, only for EBM rheology  (numlayers) [s]');
+					fielddisplay(self,'ebm_tauh','array describing each layer''s array describing each layer''s end period for transient relaxation, only for Burgers rheology (numlayers) [s]');
+
+
+					fielddisplay(self,'rheologymodel','array describing whether we adopt a Maxwell (0), Burgers (1) or EBM (2) rheology (default: 0)');
+					fielddisplay(self,'density','array describing each layer''s density (numlayers) [kg/m^3]');
+					fielddisplay(self,'issolid','array describing whether the layer is solid or liquid (default 1) (numlayers)');
+				case 'hydro'
+					disp(sprintf('\n      Hydro:'));
+					fielddisplay(self,'rho_ice','ice density [kg/m^3]');
+					fielddisplay(self,'rho_water','ocean water density [kg/m^3]');
+					fielddisplay(self,'earth_density','mantle density [kg/m^3]');
+					fielddisplay(self,'rho_freshwater','fresh water density [kg/m^3]');
+
+				otherwise
+					error('materials constructor error message: nature of the material not supported yet! (''ice'' or ''litho'' or ''hydro'')');
+				end
+			end
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			for i=1:length(self.nature),
+				nat=self.nature{i};
+				switch nat
+				case 'ice'
+					md = checkfield(md,'fieldname','materials.rho_ice','>',0);
+					md = checkfield(md,'fieldname','materials.rho_water','>',0);
+					md = checkfield(md,'fieldname','materials.rho_freshwater','>',0);
+					md = checkfield(md,'fieldname','materials.mu_water','>',0);
+					md = checkfield(md,'fieldname','materials.rheology_B','>',0,'timeseries',1,'NaN',1,'Inf',1);
+					md = checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements 1]);
+					md = checkfield(md,'fieldname','materials.rheology_law','values',{'None' 'BuddJacka' 'Cuffey' 'CuffeyTemperate' 'Paterson' 'Arrhenius' 'LliboutryDuval' 'NyeCO2' 'NyeH2O'});
+				case 'litho'
+					if ~ismember('LoveAnalysis',analyses), return; end
+					md = checkfield(md,'fieldname','materials.numlayers','NaN',1,'Inf',1,'>',0,'numel',1);
+					md = checkfield(md,'fieldname','materials.radius','NaN',1,'Inf',1,'size',[md.materials.numlayers+1 1],'>',0);
+					md = checkfield(md,'fieldname','materials.lame_mu','NaN',1,'Inf',1,'size',[md.materials.numlayers 1],'>=',0);
+					md = checkfield(md,'fieldname','materials.lame_lambda','NaN',1,'Inf',1,'size',[md.materials.numlayers 1],'>=',0);
+					md = checkfield(md,'fieldname','materials.issolid','NaN',1,'Inf',1,'size',[md.materials.numlayers 1],'>=',0,'<',2);
+					md = checkfield(md,'fieldname','materials.density','NaN',1,'Inf',1,'size',[md.materials.numlayers 1],'>',0);
+					md = checkfield(md,'fieldname','materials.viscosity','NaN',1,'Inf',1,'size',[md.materials.numlayers 1],'>=',0);
+					md = checkfield(md,'fieldname','materials.rheologymodel','NaN',1,'Inf',1,'size',[md.materials.numlayers 1],'>=',0,'<=',2);
+					md = checkfield(md,'fieldname','materials.burgers_viscosity','Inf',1,'size',[md.materials.numlayers 1],'>=',0);
+					md = checkfield(md,'fieldname','materials.burgers_mu','Inf',1,'size',[md.materials.numlayers 1],'>=',0);
+					md = checkfield(md,'fieldname','materials.ebm_alpha','Inf',1,'size',[md.materials.numlayers 1],'>=',0);
+					md = checkfield(md,'fieldname','materials.ebm_delta','Inf',1,'size',[md.materials.numlayers 1],'>=',0);
+					md = checkfield(md,'fieldname','materials.ebm_taul','Inf',1,'size',[md.materials.numlayers 1],'>=',0);
+					md = checkfield(md,'fieldname','materials.ebm_tauh','Inf',1,'size',[md.materials.numlayers 1],'>=',0);
+
+					for i=1:md.materials.numlayers,
+						if md.materials.rheologymodel(i)==1 & (isnan(md.materials.burgers_viscosity(i) | isnan(md.materials.burgers_mu(i)))),
+							error('materials checkconsistency error message: Litho burgers_viscosity or burgers_mu has NaN values, inconsistent with rheologymodel choice');
+						end
+						if md.materials.rheologymodel(i)==2 & (isnan(md.materials.ebm_alpha(i)) | isnan(md.materials.ebm_delta(i)) | isnan(md.materials.ebm_taul(i)) | isnan(md.materials.ebm_tauh(i))),
+							error('materials checkconsistency error message: Litho ebm_alpha, ebm_delta, ebm_taul or ebm_tauh has NaN values, inconsistent with rheologymodel choice');
+						end
+					end
+					if md.materials.issolid(1)==0 | md.materials.lame_mu(1)==0
+						error('First layer must be solid (issolid(1) > 0 AND lame_mu(1) > 0). Add a weak inner core if necessary.');
+					end
+					ind=find(md.materials.issolid==0);
+					%if sum(ismember(diff(ind),1)>=1) %if there are at least two consecutive indices that contain issolid = 0
+					%		error(['Fluid layers detected at layers #', num2str(ind'), ', but having 2 or more adjacent fluid layers is not supported yet. Consider merging them.'])
+					%end
+
+				case 'hydro'
+					md = checkfield(md,'fieldname','materials.rho_ice','>',0);
+					md = checkfield(md,'fieldname','materials.rho_water','>',0);
+					md = checkfield(md,'fieldname','materials.earth_density','>',0,'numel',1);
+					md = checkfield(md,'fieldname','materials.rho_freshwater','>',0);
+
+				otherwise
+					error('materials constructor error message: nature of the material not supported yet! (''ice'' or ''litho'' or ''hydro'')');
+				end
+			end
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			%1: MatdamageiceEnum 2: MatestarEnum 3: MaticeEnum 4: MatenhancediceEnum 5: MaterialsEnum
+			WriteData(fid,prefix,'name','md.materials.nature','data',naturetointeger(self.nature),'format','IntMat','mattype',3);
+			WriteData(fid,prefix,'name','md.materials.type','data',5,'format','Integer'); %DANGER: this can evolve if you have classes.
+			for i=1:length(self.nature),
+				nat=self.nature{i};
+				switch nat
+				case 'ice'
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_ice','format','Double');
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_water','format','Double');
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_freshwater','format','Double');
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','mu_water','format','Double');
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','heatcapacity','format','Double');
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','latentheat','format','Double');
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermalconductivity','format','Double');
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double');
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','effectiveconductivity_averaging','format','Integer');
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','meltingpoint','format','Double');
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','beta','format','Double');
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double');
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double');
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2);
+					WriteData(fid,prefix,'data',self.rheology_law,'name','md.materials.rheology_law','format','String');
+				case 'litho'
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','numlayers','format','Integer');
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','radius','format','DoubleMat','mattype',3);
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','lame_mu','format','DoubleMat','mattype',3);
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','lame_lambda','format','DoubleMat','mattype',3);
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','issolid','format','DoubleMat','mattype',3);
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','density','format','DoubleMat','mattype',3);
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','viscosity','format','DoubleMat','mattype',3);
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheologymodel','format','DoubleMat','mattype',3);
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','burgers_viscosity','format','DoubleMat','mattype',3);
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','burgers_mu','format','DoubleMat','mattype',3);
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','ebm_alpha','format','DoubleMat','mattype',3);
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','ebm_delta','format','DoubleMat','mattype',3);
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','ebm_taul','format','DoubleMat','mattype',3);
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','ebm_tauh','format','DoubleMat','mattype',3);
+					%compute earth density compatible with our layer density distribution: 
+					earth_density=0;
+					for i=1:self.numlayers,
+						earth_density=earth_density + (self.radius(i+1)^3-self.radius(i)^3)*self.density(i);
+					end
+					earth_density=earth_density/self.radius(self.numlayers+1)^3;
+					self.earth_density=earth_density;
+				case 'hydro'
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_ice','format','Double');
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_water','format','Double');
+					WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_freshwater','format','Double');
+				otherwise
+					error('materials constructor error message: nature of the material not supported yet! (''ice'' or ''litho'' or ''hydro'')');
+				end
+			end
+			WriteData(fid,prefix,'data',self.earth_density,'name','md.materials.earth_density','format','Double');
+		end % }}}
+		function self = extrude(self,md) % {{{
+			for i=1:length(self.nature),
+				nat=self.nature{i};
+				switch nat
+				case 'ice'
+					self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node');
+					self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element');
+				end
+			end
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			for i=1:length(self.nature),
+				nat=self.nature{i};
+				switch nat
+				case 'ice'
+					writejsdouble(fid,[modelname '.materials.rho_ice'],self.rho_ice);
+					writejsdouble(fid,[modelname '.materials.rho_water'],self.rho_water);
+					writejsdouble(fid,[modelname '.materials.rho_freshwater'],self.rho_freshwater);
+					writejsdouble(fid,[modelname '.materials.mu_water'],self.mu_water);
+					writejsdouble(fid,[modelname '.materials.heatcapacity'],self.heatcapacity);
+					writejsdouble(fid,[modelname '.materials.latentheat'],self.latentheat);
+					writejsdouble(fid,[modelname '.materials.thermalconductivity'],self.thermalconductivity);
+					writejsdouble(fid,[modelname '.materials.temperateiceconductivity'],self.temperateiceconductivity);
+					writejsdouble(fid,[modelname '.materials.effectiveconductivity_averaging'],self.effectiveconductivity_averaging);
+					writejsdouble(fid,[modelname '.materials.meltingpoint'],self.meltingpoint);
+					writejsdouble(fid,[modelname '.materials.beta'],self.beta);
+					writejsdouble(fid,[modelname '.materials.mixed_layer_capacity'],self.mixed_layer_capacity);
+					writejsdouble(fid,[modelname '.materials.thermal_exchange_velocity'],self.thermal_exchange_velocity);
+					writejsdouble(fid,[modelname '.materials.mixed_layer_capacity'],self.mixed_layer_capacity);
+					writejs1Darray(fid,[modelname '.materials.rheology_B'],self.rheology_B);
+					writejs1Darray(fid,[modelname '.materials.rheology_n'],self.rheology_n);
+					writejsstring(fid,[modelname '.materials.rheology_law'],self.rheology_law);
+				case 'litho'
+					writejsdouble(fid,[modelname '.materials.numlayers'],self.numlayers);
+					writejsdouble(fid,[modelname '.materials.radius'],self.radius);
+					writejsdouble(fid,[modelname '.materials.lame_mu'],self.lame_mu);
+					writejsdouble(fid,[modelname '.materials.lame_lambda'],self.lame_lambda);
+					writejsdouble(fid,[modelname '.materials.issolid'],self.issolid);
+					writejsdouble(fid,[modelname '.materials.density'],self.density);
+					writejsdouble(fid,[modelname '.materials.viscosity'],self.viscosity);
+					writejsdouble(fid,[modelname '.materials.rheologymodel'],self.rheologymodel);
+					writejsdouble(fid,[modelname '.materials.burgers_viscosity'],self.burgers_viscosity);
+					writejsdouble(fid,[modelname '.materials.burgers_mu'],self.burgers_mu);
+					writejsdouble(fid,[modelname '.materials.ebm_alpha'],self.ebm_alpha);
+					writejsdouble(fid,[modelname '.materials.ebm_delta'],self.ebm_delta);
+					writejsdouble(fid,[modelname '.materials.ebm_taul'],self.ebm_taul);
+					writejsdouble(fid,[modelname '.materials.ebm_tauh'],self.ebm_tauh);
+
+				case 'hydro'
+					writejsdouble(fid,[modelname '.materials.rho_ice'],self.rho_ice);
+					writejsdouble(fid,[modelname '.materials.rho_water'],self.rho_water);
+					writejsdouble(fid,[modelname '.materials.earth_density'],self.earth_density);
+					writejsdouble(fid,[modelname '.materials.rho_freshwater'],self.rho_freshwater);
+
+				otherwise
+					error('materials constructor error message: nature of the material not supported yet! (''ice'' or ''litho'' or ''hydro'')');
+				end
+			end
+
+
+
+		end % }}}
+		function setlitho2prem(self) % {{{
+			%based on materials.radius and materials.issolid, replaces materials.density, materials.lame_mu, materials.lame_lambda
+			% with volumetric averages of a polynomial version of the PREM model
+			if ~strcmpi(self.nature, 'litho')
+			error('materials setlitho2prem error message: materials.nature must be ''litho''')
+			end
+		   
+		   
+		   ra=self.radius(end);
+		   r(1) = 0.0;     r(2) = 1221.5; r(3) = 3480.0; r(4) = 3630.;
+		   r(5) = 5600.0;  r(6) = 5701.0;  r(7) = 5771.0; r(8) = 5971.;
+		   r(9) = 6151.0; r(10) = 6291.0; r(11) = 6346.6;
+		   r(12) = 6356.0; r(13) = 6368.0; r(14) = 6371.;
+		  
+		   if (r(14)*1e3 ~= ra) 
+			error(['materials setlitho2prem error message: Earth surface radius in PREM r=' num2str(r(end)*1e3) ' does not match materials.radius(end)=' num2str(self.radius(end))]); 
+		   end
+
+		  d = zeros(12,4); %polynomial coef for density
+		  d(1,1) = 13.0885; 		         	  d(1,3) = -8.8381 ;
+		  d(2,1) = 12.5815; d(2,2) = -1.2638; d(2,3) = -3.6426; d(2,4) = -5.5281;
+		  d(3,1) = 7.9565 ; d(3,2) = -6.4761;   d(3,3) = 5.5283;  d(3,4) = -3.0807;
+		  d(4,1) = 7.9565 ; d(4,2) = -6.4761;   d(4,3) = 5.5283;  d(4,4) = -3.0807;
+		  d(5,1) = 7.9565 ; d(5,2) = -6.4761;   d(5,3) = 5.5283;  d(5,4) = -3.0807;
+		  d(6,1) = 5.3197 ; d(6,2) = -1.4836;
+		  d(7,1) = 11.2494; d(7,2) = -8.0298;
+		  d(8,1) = 7.1089 ; d(8,2) = -3.8045;
+		  d(9,1) = 2.6910 ; d(9,2) = 0.6924;
+		  d(10,1) = 2.6910; d(10,2) = 0.6924;
+		  d(11,1) = 2.9  ;
+		  d(12,1) = 2.6  ;
+
+		% ocean
+		  if (~self.issolid(end)) 
+		  	d(13,1) = 1.02 ;
+
+		% continental
+		  else
+		  d(13,1) = d(12,1);
+		  end
+
+		  p = zeros(13,4); %polynomial coef for Vp, pressure wave velocity
+		  p(1,1) = 11.2622 ; p(1,3) = -6.3640;
+		  p(2,1) = 11.0487 ; p(2,2) = -4.0362; p(2,3)  = 4.8023; p(2,4) = -13.5732;
+		  p(3,1) = 15.3891 ; p(3,2) = -5.3181; p(3,3)  = 5.5242; p(3,4) = -2.5514;
+		  p(4,1) = 24.952 ; p(4,2)  = -40.4673; p(4,3) = 51.4832; p(4,4) = -26.6419;
+		  p(5,1) = 29.2766 ; p(5,2) = -23.6027; p(5,3) = 5.5242; p(5,4) = -2.5514;
+		  p(6,1) = 19.0957 ; p(6,2)  = -9.8672;
+		  p(7,1) = 39.7027 ; p(7,2)  = -32.6166;
+		  p(8,1) = 20.3926 ; p(8,2)  = -12.2569;
+		  p(9,1) = 4.1875 ; p(9,2)  = 3.9382;
+		  p(10,1) = 4.1875 ; p(10,2) = 3.9382;
+		  p(11,1) = 6.8 ;
+		  p(12,1) = 5.8;
+		%
+		% ocean
+		  if (~self.issolid(end)) 
+		  p(13,1) = 1.45 ;
+		%
+		% continental
+		  else
+		  p(13,1) = p(12,1);
+		  end
+		%----
+		%
+		  s = zeros(13,4); %polynomial coef for Vs, shear wave velocity
+		%
+		  s(1,1) = 3.6678; s(1,3) = -4.4475;
+
+		  s(3,1) = 6.9254; s(3,2) = 1.4672; s(3,3) = -2.0834; s(3,4) = 0.9783;
+		  s(4,1) = 11.1671; s(4,2) = -13.7818; s(4,3) = 17.4575; s(4,4) = -9.2777;
+		  s(5,1) = 22.3459; s(5,2) = -17.2473; s(5,3) = -2.0834; s(5,4) = 0.9783;
+		  s(6,1) = 9.9839; s(6,2) = -4.9324;
+		  s(7,1) = 22.3512; s(7,2) = -18.5856 ;
+		  s(8,1) = 8.9496; s(8,2) = -4.4597;
+		  s(9,1) = 2.1519; s(9,2) = 2.3481;
+		  s(10,1) = 2.1519; s(10,2) = 2.3481;
+		  s(11,1) = 3.9 ;
+		  s(12,1) = 3.2 ;
+		%
+		% ocean (please don't modify)
+		  if (~self.issolid(end))
+		%
+		% continental
+		  else
+		  s(13,1) = s(12,1);
+		  end
+		%
+		%
+		  r = r*1e3;
+		  
+		  %- handling the first layer : central sphere
+		  rad = self.radius;
+		  rad(1) = 0.;
+		  
+		  for j = 1:self.numlayers
+		  
+			ro = 0.;
+			vp = 0.;
+			vs = 0.;
+
+			for i = 1:13
+
+				r1 = 0.;
+				r2 = 0.;
+				if ((rad(j) > r(i)) & (rad(j) <= r(i+1))) 
+					if (rad(j+1) <= r(i+1)) 
+						r2 = rad(j+1);
+						r1 = rad(j);
+					else
+						r2 = r(i+1);
+						r1 = rad(j);
+					end
+				elseif (rad(j) <= r(i))
+					if ((rad(j+1) > r(i)) & (rad(j+1) <= r(i+1)))
+						r2 = rad(j+1);
+						r1 = r(i);
+					elseif (rad(j+1) > r(i+1))
+						r2 = r(i+1);
+						r1 = r(i);
+					end
+				end
+
+				t1 = d(i,1)/3.;
+				t2 = d(i,2)/(ra*4.);
+				t3 = d(i,3)/((ra^2)*5.);
+				t4 = d(i,4)/((ra^3)*6.);
+				ro =  ro + t1*(r2^3) + t2*(r2^4) + t3*(r2^5) + t4*(r2^6) - ( t1*(r1^3) + t2*(r1^4) + t3*(r1^5) + t4*(r1^6) );
+					  
+				t1 = p(i,1)/3.;
+				t2 = p(i,2)/(ra*4.);
+				t3 = p(i,3)/((ra^2)*5.);
+				t4 = p(i,4)/((ra^3)*6.);
+				vp =  vp + t1*(r2^3) + t2*(r2^4) + t3*(r2^5) + t4*(r2^6) - ( t1*(r1^3) + t2*(r1^4) + t3*(r1^5) + t4*(r1^6) );
+					  
+				t1 = s(i,1)/3.;
+				t2 = s(i,2)/(ra*4.);
+				t3 = s(i,3)/((ra^2)*5.);
+				t4 = s(i,4)/((ra^3)*6.);
+				vs =  vs + t1*(r2^3) + t2*(r2^4) + t3*(r2^5) + t4*(r2^6) - ( t1*(r1^3) + t2*(r1^4) + t3*(r1^5) + t4*(r1^6) );
+
+			end
+			ro = ro*3 / (rad(j+1)^3-rad(j)^3);
+			vp = vp*3 /(rad(j+1)^3-rad(j)^3);
+			vs = vs*3 / (rad(j+1)^3-rad(j)^3);
+			mu = ro*vs.^2;
+			la = ro*vp.^2 - 2.*mu;
+			ro = ro*1e3;
+			la = la*1e9;
+			mu = mu*1e9;
+
+			self.density(j) = ro;
+			self.lame_lambda(j) = la;
+			self.lame_mu(j) = mu;
+		  end
+
+		end % }}}
+	end
+end
+
+function intnat = naturetointeger(strnat) % {{{
+	intnat=zeros(length(strnat),1);
+	for i=1:length(strnat),
+		switch strnat{i},
+		case 'damageice'
+			intnat(i)=1;
+		case 'estar'
+			intnat(i)=2;
+		case 'ice'
+			intnat(i)=3;
+		case 'enhancedice'
+			intnat(i)=4;
+		%case 'materials' %this case will never happen, kept to ensure equivalent of codes between IoCodeToMaterialsEnum and IoCodeToNatureEnum
+		%	intnat(i)=5;
+		case 'litho'
+			intnat(i)=6;
+		case 'hydro'
+			intnat(i)=7;
+		otherwise
+			error('materials constructor error message: nature of the material not supported yet! (''ice'' or ''litho'' or ''hydro'')');
+		end
+	end
+end % }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/materials.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/materials.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/materials.py	(revision 27955)
@@ -0,0 +1,351 @@
+import numpy as np
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class materials(object):
+    """MATERIALS class definition
+
+    Usage:
+        materials = materials()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.nature = []
+        if len(args) == 0:
+            self.nature = ['ice']
+        else:
+            self.nature = args
+
+        for i in range(len(self.nature)):
+            if not(self.nature[i] == 'litho' or self.nature[i] == 'ice' or self.nature[i] == 'hydro'):
+                raise RuntimeError("materials constructor error message: nature of the material not supported yet! ('ice' or 'litho' or 'hydro')")
+
+        # Start filling in the dynamic fields (not truly dynamic under Python)
+        for i in range(len(self.nature)):
+            nat = self.nature[i]
+            if nat == 'ice':
+                self.rho_ice = 0
+                self.rho_water = 0
+                self.rho_freshwater = 0
+                self.mu_water = 0
+                self.heatcapacity = 0
+                self.latentheat = 0
+                self.thermalconductivity = 0
+                self.temperateiceconductivity = 0
+                self.effectiveconductivity_averaging = 0
+                self.meltingpoint = 0
+                self.beta = 0
+                self.mixed_layer_capacity = 0
+                self.thermal_exchange_velocity = 0
+                self.rheology_B = 0
+                self.rheology_n = 0
+                self.rheology_law = 0
+            elif nat == 'litho':
+                self.numlayers = 0
+                self.radius = 0
+                self.viscosity = 0
+                self.lame_lambda = 0
+                self.lame_mu = 0
+                self.burgers_viscosity = 0
+                self.burgers_mu = 0
+                self.ebm_alpha = 0
+                self.ebm_delta = 0
+                self.ebm_taul = 0
+                self.ebm_tauh = 0
+                self.rheologymodel = 0
+                self.density = 0
+                self.issolid = 0
+            elif nat == 'hydro':
+                self.rho_ice = 0
+                self.rho_water = 0
+                self.rho_freshwater = 0
+            else:
+                raise RuntimeError("materials constructor error message: nature of the material not supported yet! ('ice' or 'litho' or 'hydro')")
+        self.earth_density = 0
+
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   Materials:\n'
+        for i in range(len(self.nature)):
+            nat = self.nature[i]
+            if nat == 'ice':
+                s += '\n      Ice:\n'
+                s += '{}\n'.format(fielddisplay(self, 'rho_ice', 'ice density [kg/m^3]'))
+                s += '{}\n'.format(fielddisplay(self, 'rho_water', 'ocean water density [kg/m^3]'))
+                s += '{}\n'.format(fielddisplay(self, 'rho_freshwater', 'fresh water density [kg/m^3]'))
+                s += '{}\n'.format(fielddisplay(self, 'mu_water', 'water viscosity [N s/m^2]'))
+                s += '{}\n'.format(fielddisplay(self, 'heatcapacity', 'heat capacity [J/kg/K]'))
+                s += '{}\n'.format(fielddisplay(self, 'thermalconductivity', 'ice thermal conductivity [W/m/K]'))
+                s += '{}\n'.format(fielddisplay(self, 'temperateiceconductivity', 'temperate ice thermal conductivity [W/m/K]'))
+                s += '{}\n'.format(fielddisplay(self, 'meltingpoint', 'melting point of ice at 1atm in K'))
+                s += '{}\n'.format(fielddisplay(self, 'latentheat', 'latent heat of fusion [J/m^3]'))
+                s += '{}\n'.format(fielddisplay(self, 'beta', 'rate of change of melting point with pressure [K/Pa]'))
+                s += '{}\n'.format(fielddisplay(self, 'mixed_layer_capacity', 'mixed layer capacity [W/kg/K]'))
+                s += '{}\n'.format(fielddisplay(self, 'thermal_exchange_velocity', 'thermal exchange velocity [m/s]'))
+                s += '{}\n'.format(fielddisplay(self, 'rheology_B', 'flow law parameter [Pa s^(1/n)]'))
+                s += '{}\n'.format(fielddisplay(self, 'rheology_n', 'Glen\'s flow law exponent'))
+                s += '{}\n'.format(fielddisplay(self, 'rheology_law', 'law for the temperature dependance of the rheology: \'None\', \'BuddJacka\', \'Cuffey\', \'CuffeyTemperate\', \'Paterson\', \'Arrhenius\', \'LliboutryDuval\', \'NyeCO2\', or \'NyeH2O\''))
+            elif nat == 'litho':
+                s += '\n      Litho:\n'
+                s += '{}\n'.format(fielddisplay(self, 'numlayers', 'number of layers (default: 2)'))
+                s += '{}\n'.format(fielddisplay(self, 'radius', 'array describing the radius for each interface (numlayers + 1) [m]'))
+                s += '{}\n'.format(fielddisplay(self, 'viscosity', 'array describing each layer\'s viscosity (numlayers) [Pa.s]'))
+                s += '{}\n'.format(fielddisplay(self, 'lame_lambda', 'array describing the lame lambda parameter (numlayers) [Pa]'))
+                s += '{}\n'.format(fielddisplay(self, 'lame_mu', 'array describing the shear modulus for each layers (numlayers) [Pa]'))
+                s += '{}\n'.format(fielddisplay(self, 'burgers_viscosity', 'array describing each layer\'s transient viscosity, only for Burgers rheologies  (numlayers) [Pa.s]'))
+                s += '{}\n'.format(fielddisplay(self, 'burgers_mu', 'array describing each layer\'s transient shear modulus, only for Burgers rheologies  (numlayers) [Pa]'))
+
+                s += '{}\n'.format(fielddisplay(self, 'ebm_alpha', 'array describing each layer\'s exponent parameter controlling the shape of shear modulus curve between taul and tauh, only for EBM rheology (numlayers)'))
+                s += '{}\n'.format(fielddisplay(self, 'ebm_delta', 'array describing each layer\'s amplitude of the transient relaxation (ratio between elastic rigity to pre-maxwell relaxation rigity), only for EBM rheology (numlayers)'))
+                s += '{}\n'.format(fielddisplay(self, 'ebm_taul', 'array describing each layer\'s starting period for transient relaxation, only for EBM rheology  (numlayers) [s]'))
+                s += '{}\n'.format(fielddisplay(self, 'ebm_tauh', 'array describing each layer''s array describing each layer\'s end period for transient relaxation, only for Burgers rheology (numlayers) [s]'))
+
+                s += '{}\n'.format(fielddisplay(self, 'rheologymodel', 'array describing whether we adopt a Maxwell (0), Burgers (1) or EBM (2) rheology (default: 0)'))
+                s += '{}\n'.format(fielddisplay(self, 'density', 'array describing each layer\'s density (numlayers) [kg/m^3]'))
+                s += '{}\n'.format(fielddisplay(self, 'issolid', 'array describing whether the layer is solid or liquid (default: 1) (numlayers)'))
+            elif nat == 'hydro':
+                s += '\n      Hydro:\n'
+                s += '{}\n'.format(fielddisplay(self, 'rho_ice', 'ice density [kg/m^3]'))
+                s += '{}\n'.format(fielddisplay(self, 'rho_water', 'ocean water density [kg/m^3]'))
+                s += '{}\n'.format(fielddisplay(self, 'earth_density', 'mantle density [kg/m^3]'))
+                s += '{}\n'.format(fielddisplay(self, 'rho_freshwater', 'fresh water density [kg/m^3]'))
+
+            else:
+                raise RuntimeError('materials constructor error message: nature of the material not supported yet! (\'ice\' or \'litho\' or \'hydro\')')
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        for i in range(len(self.nature)):
+            nat = self.nature[i]
+            if nat == 'ice':
+                # Ice density (kg/m^3)
+                self.rho_ice = 917.0
+
+                # Ocean water density (kg/m^3)
+                self.rho_water = 1023.0
+
+                # Fresh water density (kg/m^3)
+                self.rho_freshwater = 1000.0
+
+                # Water viscosity (N.s/m^2)
+                self.mu_water = 0.001787
+
+                # Ice heat capacity cp (J/kg/K)
+                self.heatcapacity = 2093.0
+
+                # Ice latent heat of fusion L (J/kg)
+                self.latentheat = 3.34 * 1e5
+
+                # Ice thermal conductivity (W/m/K)
+                self.thermalconductivity = 2.4
+
+                # Wet ice thermal conductivity (W/m/K)
+                self.temperateiceconductivity = 0.24
+
+                # Computation of effective conductivity
+                self.effectiveconductivity_averaging = 1
+
+                # The melting point of ice at 1 atmosphere of pressure in K
+                self.meltingpoint = 273.15
+
+                # Rate of change of melting point with pressure (K/Pa)
+                self.beta = 9.8 * 1e-8
+
+                # Mixed layer (ice-water interface) heat capacity (J/kg/K)
+                self.mixed_layer_capacity = 3974.0
+
+                # Thermal exchange velocity (ice-water interface) (m/s)
+                self.thermal_exchange_velocity = 1.00 * 1e-4
+
+                # Rheology law: what is the temperature dependence of B with T
+                # available: none, paterson and arrhenius
+                self.rheology_law = 'Paterson'
+
+                # Rheology fields default
+                self.rheology_B = 1 * 1e8
+                self.rheology_n = 3
+            elif nat == 'litho':
+                # We default to a configuration that enables running GIA
+                # solutions using giacaron and/or giaivins
+                self.numlayers = 2
+
+                # Center of the earth (approximation, must not be 0), then the
+                # lab (lithosphere/asthenosphere boundary) then the surface
+                # (with 1d3 to avoid numerical singularities)
+                self.radius = [1e3, 6278 * 1e3, 6378 * 1e3]
+
+                self.viscosity = [1e21, 1e40] # Mantle and lithosphere viscosity (respectively) [Pa.s]
+                self.lame_mu = [1.45 * 1e11, 6.7 * 1e10] # (Pa) # Lithosphere and mantle shear modulus (respectively) [Pa]
+                self.lame_lambda = self.lame_mu # (Pa) # Mantle and lithosphere lamba parameter (respectively) [Pa]
+                self.burgers_viscosity = [np.nan, np.nan]
+                self.burgers_mu = [np.nan, np.nan]
+
+                self.ebm_alpha = [np.nan, np.nan]
+                self.ebm_delta = [np.nan, np.nan]
+                self.ebm_taul = [np.nan, np.nan]
+                self.ebm_tauh = [np.nan, np.nan]
+                self.rheologymodel = [0, 0]
+                self.density = [5.51 * 1e3, 5.50 * 1e3] # (Pa) # Mantle and lithosphere density [kg/m^3]
+                self.issolid = [1, 1] # Is layer solid or liquid?
+            elif nat == 'hydro':
+                # Ice density (kg/m^3)
+                self.rho_ice = 917.0
+
+                # Ocean water density (kg/m^3)
+                self.rho_water = 1023.0
+
+                # Fresh water density (kg/m^3)
+                self.rho_freshwater = 1000.0
+            else:
+                raise RuntimeError("materials setdefaultparameters error message: nature of the material not supported yet! ('ice' or 'litho' or 'hydro')")
+
+            # Average density of the Earth (kg/m^3)
+            self.earth_density = 5512
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        for i in range(len(self.nature)):
+            nat = self.nature[i]
+            if nat == 'ice':
+                md = checkfield(md, 'fieldname', 'materials.rho_ice', '>', 0)
+                md = checkfield(md, 'fieldname', 'materials.rho_water', '>', 0)
+                md = checkfield(md, 'fieldname', 'materials.rho_freshwater', '>', 0)
+                md = checkfield(md, 'fieldname', 'materials.mu_water', '>', 0)
+                md = checkfield(md, 'fieldname', 'materials.rheology_B', '>', 0, 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+                md = checkfield(md, 'fieldname', 'materials.rheology_n', '>', 0, 'size', [md.mesh.numberofelements])
+                md = checkfield(md, 'fieldname', 'materials.rheology_law', 'values', ['None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius', 'LliboutryDuval', 'NyeCO2', 'NyeH2O'])
+            elif nat == 'litho':
+                if 'LoveAnalysis' not in analyses:
+                    return md
+
+                md = checkfield(md, 'fieldname', 'materials.numlayers', 'NaN', 1, 'Inf', 1, '>', 0, 'numel', [1])
+                md = checkfield(md, 'fieldname', 'materials.radius', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers + 1, 1], '>', 0)
+                md = checkfield(md, 'fieldname', 'materials.lame_mu', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0)
+                md = checkfield(md, 'fieldname', 'materials.lame_lambda', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0)
+                md = checkfield(md, 'fieldname', 'materials.issolid', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0, '<', 2)
+                md = checkfield(md, 'fieldname', 'materials.density', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers, 1], '>', 0)
+                md = checkfield(md, 'fieldname', 'materials.viscosity', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0)
+                md = checkfield(md, 'fieldname', 'materials.rheologymodel', 'NaN', 1, 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0, '<=', 2)
+                md = checkfield(md, 'fieldname', 'materials.burgers_viscosity', 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0)
+                md = checkfield(md, 'fieldname', 'materials.burgers_mu', 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0)
+                md = checkfield(md, 'fieldname', 'materials.ebm_alpha', 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0)
+                md = checkfield(md, 'fieldname', 'materials.ebm_delta', 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0)
+                md = checkfield(md, 'fieldname', 'materials.ebm_taul', 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0)
+                md = checkfield(md, 'fieldname', 'materials.ebm_tauh', 'Inf', 1, 'size', [md.materials.numlayers, 1], '>=', 0)
+
+                for i in range(md.materials.numlayers):
+                    if md.materials.rheologymodel[i] == 1 and (np.isnan(md.materials.burgers_viscosity[i] or np.isnan(md.materials.burgers_mu[i]))):
+                        raise RuntimeError('materials checkconsistency error message: Litho burgers_viscosity or burgers_mu has NaN values, inconsistent with rheologymodel choice')
+
+                    if md.materials.rheologymodel[i] == 2 and (np.isnan(md.materials.ebm_alpha[i]) or np.isnan(md.materials.ebm_delta[i]) or np.isnan(md.materials.ebm_taul[i]) or np.isnan(md.materials.ebm_tauh[i])):
+                        raise RuntimeError('materials checkconsistency error message: Litho ebm_alpha, ebm_delta, ebm_taul or ebm_tauh has NaN values, inconsistent with rheologymodel choice')
+                if md.materials.issolid[0] == 0 or md.materials.lame_mu[0] == 0:
+                    raise RuntimeError('First layer must be solid (issolid[0] > 0 AND lame_mu[0] > 0). Add a weak inner core if necessary.')
+                ind = np.where(md.materials.issolid == 0)[0]
+                #if np.sum(np.in1d(np.diff(ind),1) >= 1): # If there are at least two consecutive indices that contain issolid = 0
+                #    raise RuntimeError('Fluid layers detected at layers #' + indices + ', but having 2 or more adjacent fluid layers is not supported yet. Consider merging them.')
+
+            elif nat == 'hydro':
+                md = checkfield(md, 'fieldname', 'materials.rho_ice', '>', 0)
+                md = checkfield(md, 'fieldname', 'materials.rho_water', '>', 0)
+                md = checkfield(md, 'fieldname', 'materials.earth_density', '>', 0, 'numel', [1])
+                md = checkfield(md, 'fieldname', 'materials.rho_freshwater', '>', 0)
+            else:
+                raise RuntimeError('materials checkconsistency error message: nature of the material not supported yet! (\'ice\' or \'litho\' or \'hydro\')')
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        #1: MatdamageiceEnum 2: MatestarEnum 3: MaticeEnum 4: MatenhancediceEnum 5: MaterialsEnum
+        WriteData(fid, prefix, 'name', 'md.materials.nature', 'data', naturetointeger(self.nature), 'format', 'IntMat', 'mattype', 3)
+        WriteData(fid, prefix, 'name', 'md.materials.type', 'data', 5, 'format', 'Integer') #DANGER: this can evolve if you have classes
+        for i in range(len(self.nature)):
+            nat = self.nature[i]
+            if nat == 'ice':
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_ice', 'format', 'Double')
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_water', 'format', 'Double')
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_freshwater', 'format', 'Double')
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mu_water', 'format', 'Double')
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'heatcapacity', 'format', 'Double')
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'latentheat', 'format', 'Double')
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermalconductivity', 'format', 'Double')
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'temperateiceconductivity', 'format', 'Double')
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'effectiveconductivity_averaging', 'format', 'Integer')
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'meltingpoint', 'format', 'Double')
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'beta', 'format', 'Double')
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mixed_layer_capacity', 'format', 'Double')
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermal_exchange_velocity', 'format', 'Double')
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_B', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_n', 'format', 'DoubleMat', 'mattype', 2)
+                WriteData(fid, prefix, 'data', self.rheology_law, 'name', 'md.materials.rheology_law', 'format', 'String')
+            elif nat == 'litho':
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'numlayers', 'format', 'Integer')
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'radius', 'format', 'DoubleMat', 'mattype', 3)
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'lame_mu', 'format', 'DoubleMat', 'mattype', 3)
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'lame_lambda', 'format', 'DoubleMat', 'mattype', 3)
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'issolid', 'format', 'DoubleMat', 'mattype', 3)
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'density', 'format', 'DoubleMat', 'mattype', 3)
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'viscosity', 'format', 'DoubleMat', 'mattype', 3)
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheologymodel', 'format', 'DoubleMat', 'mattype', 3)
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'burgers_viscosity', 'format', 'DoubleMat', 'mattype', 3)
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'burgers_mu', 'format', 'DoubleMat', 'mattype', 3)
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'ebm_alpha', 'format', 'DoubleMat', 'mattype', 3)
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'ebm_delta', 'format', 'DoubleMat', 'mattype', 3)
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'ebm_taul', 'format', 'DoubleMat', 'mattype', 3)
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'ebm_tauh', 'format', 'DoubleMat', 'mattype', 3)
+                # Compute earth density compatible with our layer density distribution
+                earth_density = 0
+                for i in range(self.numlayers):
+                    earth_density = earth_density + (pow(self.radius[i + 1], 3) - pow(self.radius[i], 3)) * self.density[i]
+                earth_density = earth_density / pow(self.radius[self.numlayers], 3)
+                self.earth_density = earth_density
+            elif nat == 'hydro':
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_ice', 'format', 'Double')
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_water', 'format', 'Double')
+                WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_freshwater', 'format', 'Double')
+            else:
+                raise RuntimeError('materials constructor error message: nature of the material not supported yet! (\'ice\' or \'litho\' or \'hydro\')')
+        WriteData(fid, prefix, 'data', self.earth_density, 'name', 'md.materials.earth_density', 'format', 'Double')
+    # }}}
+
+    def extrude(self, md):  # {{{
+        for i in range(len(self.nature)):
+            nat = self.nature[i]
+            if nat == 'ice':
+                self.rheology_B = project3d(md, 'vector', self.rheology_B, 'type', 'node')
+                self.rheology_n = project3d(md, 'vector', self.rheology_n, 'type', 'element')
+            return self
+    # }}}
+# }}}
+
+def naturetointeger(strnat):  # {{{
+    intnat = np.zeros(len(strnat))
+
+    for i in range(len(intnat)):
+        str_nat = strnat[i]
+        if str_nat == 'damageice':
+            intnat[i] = 1
+        elif str_nat == 'estar':
+            intnat[i] = 2
+        elif str_nat == 'ice':
+            intnat[i] = 3
+        elif str_nat == 'enhancedice':
+            intnat[i] = 4
+        # elif str_nat == 'materials':
+        #     intnat[i] = 5 #this case will never happen, kept to ensure equivalent of codes between IoCodeToMeterialsEnum and IoCodeToNatureEnum
+        elif str_nat == 'litho':
+            intnat[i] = 6
+        elif str_nat == 'hydro':
+            intnat[i] = 7
+        else:
+            raise RuntimeError('materials constructor error message: nature of the material not supported yet! (\'ice\' or \'litho\' or \'hydro\')')
+
+    return intnat
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/matestar.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/matestar.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/matestar.m	(revision 27955)
@@ -0,0 +1,194 @@
+%MATICE class definition
+%
+%   Usage:
+%      matestar=matestar();
+
+classdef matestar
+	properties (SetAccess=public) 
+		rho_ice                         = 0.;
+		rho_water                       = 0.;
+		rho_freshwater                  = 0.;
+		mu_water                        = 0.;
+		heatcapacity                    = 0.;
+		latentheat                      = 0.;
+		thermalconductivity             = 0.;
+		temperateiceconductivity        = 0.;
+		effectiveconductivity_averaging = 0;
+		meltingpoint                    = 0.;
+		beta                            = 0.;
+		mixed_layer_capacity            = 0.;
+		thermal_exchange_velocity       = 0.;
+		rheology_B                      = NaN;
+		rheology_Ec                     = NaN;
+		rheology_Es                     = NaN;
+		rheology_law                    = '';
+
+		%SLC
+		earth_density                   = 0;
+
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node');
+			self.rheology_Ec=project3d(md,'vector',self.rheology_Ec,'type','node');
+			self.rheology_Es=project3d(md,'vector',self.rheology_Es,'type','node');
+		end % }}}
+		function self = matestar(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('matestar');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+					if strcmp(class(inputstruct),'matice'),
+						disp('Converting materials to ESTAR, keeping a Glen type relation');
+						%Set parameters so that we still use a Glen's like flow relation
+						self.rheology_Es = ones(size(inputstruct.rheology_B));
+						self.rheology_Ec = ones(size(inputstruct.rheology_B));
+						self.rheology_B = inputstruct.rheology_B;
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%ice density (kg/m^3)
+			self.rho_ice=917.;
+
+			%ocean water density (kg/m^3)
+			self.rho_water=1023.;
+
+			%fresh water density (kg/m^3)
+			self.rho_freshwater=1000.;
+
+			%water viscosity (N.s/m^2)
+			self.mu_water=0.001787;  
+
+			%ice heat capacity cp (J/kg/K)
+			self.heatcapacity=2093.;
+
+			%ice latent heat of fusion L (J/kg)
+			self.latentheat=3.34*10^5;
+
+			%ice thermal conductivity (W/m/K)
+			self.thermalconductivity=2.4;
+			
+			%wet ice thermal conductivity (W/m/K)
+			self.temperateiceconductivity=.24;
+
+			%computation of effective conductivity
+			self.effectiveconductivity_averaging=1;
+
+			%the melting point of ice at 1 atmosphere of pressure in K
+			self.meltingpoint=273.15;
+
+			%rate of change of melting point with pressure (K/Pa)
+			self.beta=9.8*10^-8;
+
+			%mixed layer (ice-water interface) heat capacity (J/kg/K)
+			self.mixed_layer_capacity=3974.;
+
+			%thermal exchange velocity (ice-water interface) (m/s)
+			self.thermal_exchange_velocity=1.00*10^-4;
+
+			%Rheology law: what is the temperature dependence of B with T
+			%available: none, paterson and arrhenius
+			self.rheology_law='Paterson';
+
+			%SLC
+			self.earth_density= 5512; % average density of the Earth, (kg/m^3)
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			md = checkfield(md,'fieldname','materials.rho_ice','>',0);
+			md = checkfield(md,'fieldname','materials.rho_water','>',0);
+			md = checkfield(md,'fieldname','materials.rho_freshwater','>',0);
+			md = checkfield(md,'fieldname','materials.mu_water','>',0);
+			md = checkfield(md,'fieldname','materials.rheology_B','>',0,'size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','materials.rheology_Ec','>',0,'size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','materials.rheology_Es','>',0,'size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','materials.rheology_law','values',{'None' 'BuddJacka' 'Cuffey' 'CuffeyTemperate' 'Paterson' 'Arrhenius' 'LliboutryDuval'});
+			md = checkfield(md,'fieldname','materials.effectiveconductivity_averaging','numel',[1],'values',[0 1 2]);
+
+			if ismember('SealevelchangeAnalysis',analyses),
+				md = checkfield(md,'fieldname','materials.earth_density','>',0,'numel',1);
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Materials:'));
+
+			fielddisplay(self,'rho_ice','ice density [kg/m^3]');
+			fielddisplay(self,'rho_water','ocean water density [kg/m^3]');
+			fielddisplay(self,'rho_freshwater','fresh water density [kg/m^3]');
+			fielddisplay(self,'mu_water','water viscosity [N s/m^2]');
+			fielddisplay(self,'heatcapacity','heat capacity [J/kg/K]');
+			fielddisplay(self,'thermalconductivity',['ice thermal conductivity [W/m/K]']);
+			fielddisplay(self,'temperateiceconductivity','temperate ice thermal conductivity [W/m/K]');
+			fielddisplay(self,'effectiveconductivity_averaging','computation of effective conductivity: (0) arithmetic mean, (1) harmonic mean, (2) geometric mean (default)');
+			fielddisplay(self,'meltingpoint','melting point of ice at 1atm in K');
+			fielddisplay(self,'latentheat','latent heat of fusion [J/kg]');
+			fielddisplay(self,'beta','rate of change of melting point with pressure [K/Pa]');
+			fielddisplay(self,'mixed_layer_capacity','mixed layer capacity [W/kg/K]');
+			fielddisplay(self,'thermal_exchange_velocity','thermal exchange velocity [m/s]');
+			fielddisplay(self,'rheology_B','flow law parameter [Pa s^(1/3)]');
+			fielddisplay(self,'rheology_Ec','compressive enhancement factor');
+			fielddisplay(self,'rheology_Es','shear enhancement factor');
+			fielddisplay(self,'rheology_law',['law for the temperature dependance of the rheology: ''None'', ''BuddJacka'', ''Cuffey'', ''CuffeyTemperate'', ''Paterson'', ''Arrhenius'' or ''LliboutryDuval''']);
+			fielddisplay(self,'earth_density','Mantle density [kg/m^-3]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.materials.type','data',2,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_ice','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_water','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_freshwater','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mu_water','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','heatcapacity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','latentheat','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermalconductivity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','effectiveconductivity_averaging','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','meltingpoint','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','beta','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_Ec','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_Es','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'data',self.rheology_law,'name','md.materials.rheology_law','format','String');
+
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','earth_density','format','Double');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.materials.rho_ice'],self.rho_ice);
+			writejsdouble(fid,[modelname '.materials.rho_water'],self.rho_water);
+			writejsdouble(fid,[modelname '.materials.rho_freshwater'],self.rho_freshwater);
+			writejsdouble(fid,[modelname '.materials.mu_water'],self.mu_water);
+			writejsdouble(fid,[modelname '.materials.heatcapacity'],self.heatcapacity);
+			writejsdouble(fid,[modelname '.materials.latentheat'],self.latentheat);
+			writejsdouble(fid,[modelname '.materials.thermalconductivity'],self.thermalconductivity);
+			writejsdouble(fid,[modelname '.materials.temperateiceconductivity'],self.temperateiceconductivity);
+			writejsdouble(fid,[modelname '.materials.effectiveconductivity_averaging'],self.effectiveconductivity_averaging);
+			writejsdouble(fid,[modelname '.materials.meltingpoint'],self.meltingpoint);
+			writejsdouble(fid,[modelname '.materials.beta'],self.beta);
+			writejsdouble(fid,[modelname '.materials.mixed_layer_capacity'],self.mixed_layer_capacity);
+			writejsdouble(fid,[modelname '.materials.thermal_exchange_velocity'],self.thermal_exchange_velocity);
+			writejsdouble(fid,[modelname '.materials.mixed_layer_capacity'],self.mixed_layer_capacity);
+			writejs1Darray(fid,[modelname '.materials.rheology_B'],self.rheology_B);
+			writejs1Darray(fid,[modelname '.materials.rheology_Ec'],self.rheology_Ec);
+			writejs1Darray(fid,[modelname '.materials.rheology_Es'],self.rheology_Es);
+			writejsstring(fid,[modelname '.materials.rheology_law'],self.rheology_law);
+			writejsdouble(fid,[modelname '.materials.earth_density'],self.earth_density);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/matestar.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/matestar.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/matestar.py	(revision 27955)
@@ -0,0 +1,147 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class matestar(object):
+    """MATESTAR class definition
+
+    Usage:
+        matestar = matestar()
+    """
+
+    def __init__(self):  # {{{
+        self.rho_ice = 0.
+        self.rho_water = 0.
+        self.rho_freshwater = 0.
+        self.mu_water = 0.
+        self.heatcapacity = 0.
+        self.latentheat = 0.
+        self.thermalconductivity = 0.
+        self.temperateiceconductivity = 0.
+        self.effectiveconductivity_averaging = 0
+        self.meltingpoint = 0.
+        self.beta = 0.
+        self.mixed_layer_capacity = 0.
+        self.thermal_exchange_velocity = 0.
+        self.rheology_B = np.nan
+        self.rheology_Ec = np.nan
+        self.rheology_Es = np.nan
+        self.rheology_law = ''
+
+        # SLC
+        self.earth_density = 0
+
+        # Set default parameters
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   Materials:\n'
+        s += '{}\n'.format(fielddisplay(self, 'rho_ice', 'ice density [kg/m^3]'))
+        s += '{}\n'.format(fielddisplay(self, 'rho_water', 'ocean water density [kg/m^3]'))
+        s += '{}\n'.format(fielddisplay(self, 'rho_freshwater', 'fresh water density [kg/m^3]'))
+        s += '{}\n'.format(fielddisplay(self, 'mu_water', 'water viscosity [N s/m^2]'))
+        s += '{}\n'.format(fielddisplay(self, 'heatcapacity', 'heat capacity [J/kg/K]'))
+        s += '{}\n'.format(fielddisplay(self, 'thermalconductivity', ['ice thermal conductivity [W/m/K]']))
+        s += '{}\n'.format(fielddisplay(self, 'temperateiceconductivity', 'temperate ice thermal conductivity [W/m/K]'))
+        s += '{}\n'.format(fielddisplay(self, "effectiveconductivity_averaging", "computation of effectiveconductivity: (0) arithmetic mean, (1) harmonic mean, (2) geometric mean (default)"))
+        s += '{}\n'.format(fielddisplay(self, 'meltingpoint', 'melting point of ice at 1atm in K'))
+        s += '{}\n'.format(fielddisplay(self, 'latentheat', 'latent heat of fusion [J/kg]'))
+        s += '{}\n'.format(fielddisplay(self, 'beta', 'rate of change of melting point with pressure [K/Pa]'))
+        s += '{}\n'.format(fielddisplay(self, 'mixed_layer_capacity', 'mixed layer capacity [W/kg/K]'))
+        s += '{}\n'.format(fielddisplay(self, 'thermal_exchange_velocity', 'thermal exchange velocity [m/s]'))
+        s += '{}\n'.format(fielddisplay(self, 'rheology_B', 'flow law parameter [Pa s^(1/3)]'))
+        s += '{}\n'.format(fielddisplay(self, 'rheology_Ec', 'compressive enhancement factor'))
+        s += '{}\n'.format(fielddisplay(self, 'rheology_Es', 'shear enhancement factor'))
+        s += '{}\n'.format(fielddisplay(self, 'rheology_law', ['law for the temperature dependance of the rheology: \'None\', \'BuddJacka\', \'Cuffey\', \'CuffeyTemperate\', \'Paterson\', \'Arrhenius\' or \'LliboutryDuval\'']))
+        s += '{}\n'.format(fielddisplay(self, 'earth_density', 'Mantle density [kg/m^-3]'))
+
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.rheology_B = project3d(md, 'vector', self.rheology_B, 'type', 'node')
+        self.rheology_Ec = project3d(md, 'vector', self.rheology_Ec, 'type', 'node')
+        self.rheology_Es = project3d(md, 'vector', self.rheology_Es, 'type', 'node')
+
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Ice density (kg/m^3)
+        self.rho_ice = 917.0
+        # Ocean water density (kg/m^3)
+        self.rho_water = 1023.0
+        # Fresh water density (kg/m^3)
+        self.rho_freshwater = 1000.0
+        # Water viscosity (N.s/m^2)
+        self.mu_water = 0.001787
+        # Ice heat capacity cp (J/kg/K)
+        self.heatcapacity = 2093.0
+        # Ice latent heat of fusion L (J/kg)
+        self.latentheat = 3.34 * pow(10, 5)
+        # Ice thermal conductivity (W/m/K)
+        self.thermalconductivity = 2.4
+        # Wet ice thermal conductivity (W/m/K)
+        self.temperateiceconductivity = 0.24
+        # Computation of effective conductivity
+        self.effectiveconductivity_averaging = 1
+        # The melting point of ice at 1 atmosphere of pressure in K
+        self.meltingpoint = 273.15
+        # Rate of change of melting point with pressure (K/Pa)
+        self.beta = 9.8 * pow(10, -8)
+        # Mixed layer (ice-water interface) heat capacity (J/kg/K)
+        self.mixed_layer_capacity = 3974.0
+        # Thermal exchange velocity (ice-water interface) (m/s)
+        self.thermal_exchange_velocity = 1.00 * pow(10, -4)
+        # Rheology law: what is the temperature dependence of B with T
+        # available: none, paterson and arrhenius
+        self.rheology_law = 'Paterson'
+        # SLC
+        self.earth_density = 5512 # average density of the Earth (kg/m^3)
+
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        md = checkfield(md, 'fieldname', 'materials.rho_ice', '>', 0)
+        md = checkfield(md, 'fieldname', 'materials.rho_water', '>', 0)
+        md = checkfield(md, 'fieldname', 'materials.rho_freshwater', '>', 0)
+        md = checkfield(md, 'fieldname', 'materials.mu_water', '>', 0)
+        md = checkfield(md, 'fieldname', 'materials.rheology_B', '>', 0, 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'materials.rheology_Ec', '>', 0, 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'materials.rheology_Es', '>', 0, 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'materials.rheology_law', 'values', ['None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius', 'LliboutryDuval'])
+        md = checkfield(md, 'fieldname', 'materials.effectiveconductivity_averaging', 'numel', [1], 'values', [0, 1, 2])
+
+        if 'SealevelchangeAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'materials.earth_density', '>', 0, 'numel', 1)
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'name', 'md.materials.type', 'data', 2, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_ice', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_water', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_freshwater', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mu_water', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'heatcapacity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'latentheat', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermalconductivity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'temperateiceconductivity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'effectiveconductivity_averaging', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'meltingpoint', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'beta', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mixed_layer_capacity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermal_exchange_velocity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_B', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_Ec', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_Es', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'data', self.rheology_law, 'name', 'md.materials.rheology_law', 'format', 'String')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'earth_density', 'format', 'Double')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/matice.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/matice.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/matice.js	(revision 27955)
@@ -0,0 +1,161 @@
+//MATICE class definition
+//
+//   Usage:
+//      matice = new matice();
+
+function matice(){
+	//properties
+	// {{{
+	this.rho_ice							= 0;
+	this.rho_water							= 0;
+	this.rho_freshwater						= 0;
+	this.mu_water							= 0;
+	this.heatcapacity						= 0;
+	this.latentheat							= 0;
+	this.thermalconductivity				= 0;
+	this.temperateiceconductivity			= 0;
+	this.effectiveconductivity_averaging	= 0;
+	this.meltingpoint						= 0;
+	this.beta								= 0;
+	this.mixed_layer_capacity				= 0;
+	this.thermal_exchange_velocity			= 0;
+	this.rheology_B							= NaN;
+	this.rheology_n							= NaN;
+	this.rheology_law						= '';
+
+	//SLC
+	this.earth_density= 5512; // average density of the Earth, (kg/m^3)
+
+	this.setdefaultparameters();
+	//}}}
+
+	//methods
+	this.setdefaultparameters = function(){ // {{{
+
+		//ice density (kg/m^3)
+		this.rho_ice=917;
+
+		//ocean water density (kg/m^3)
+		this.rho_water=1023;
+
+		//fresh water density (kg/m^3)
+		this.rho_freshwater=1000;
+
+		//water viscosity (N.s/m^2)
+		this.mu_water=0.001787;
+
+		//ice heat capacity cp (J/kg/K)
+		this.heatcapacity=2093;
+
+		//ice latent heat of fusion L (J/kg)
+		this.latentheat=3.34*Math.pow(10, 5);
+
+		//ice thermal conductivity (W/m/K)
+		this.thermalconductivity=2.4;
+
+		//wet ice thermal conductivity (W/m/K)
+		this.temperateiceconductivity=.24;
+
+		//computation of effective conductivity
+		this.effectiveconductivity_averaging=1;
+
+		//the melting point of ice at 1 atmosphere of pressure in K
+		this.meltingpoint=273.15;
+
+		//rate of change of melting point with pressure (K/Pa)
+		this.beta=9.8e-8;
+
+		//mixed layer (ice-water interface) heat capacity (J/kg/K)
+		this.mixed_layer_capacity=3974;
+
+		//thermal exchange velocity (ice-water interface) (m/s)
+		this.thermal_exchange_velocity=1.00*1e-4;
+
+		//Rheology law: what is the temperature dependence of B with T
+		//available: none, paterson and arrhenius
+		this.rheology_law='Paterson';
+
+		// Rheology for ice
+		this.rheology_B = 2.1 * 1e8
+		this.rheology_n = 3
+
+		//SLC
+		this.earth_density= 5512; // average density of the Earth, (kg/m^3)
+
+
+	} //}}}
+	this.disp = function() {// {{{
+		console.log(sprintf('   Materials:'));
+
+		fielddisplay(this,'rho_ice','ice density [kg/m^3]');
+		fielddisplay(this,'rho_water','ocean water density [kg/m^3]');
+		fielddisplay(this,'rho_freshwater','fresh water density [kg/m^3]');
+		fielddisplay(this,'mu_water','water viscosity [N s/m^2]');
+		fielddisplay(this,'heatcapacity','heat capacity [J/kg/K]');
+		fielddisplay(this,'thermalconductivity','ice thermal conductivity [W/m/K]');
+		fielddisplay(this,'temperateiceconductivity','temperate ice thermal conductivity [W/m/K]');
+		fielddisplay(this,'effectiveconductivity_averaging','computation of effectiveconductivity: (0) arithmetic mean, (1) harmonic mean, (2) geometric mean (default)');
+		fielddisplay(this,'meltingpoint','melting point of ice at 1atm in K');
+		fielddisplay(this,'latentheat','latent heat of fusion [J/kg]');
+		fielddisplay(this,'beta','rate of change of melting point with pressure [K/Pa]');
+		fielddisplay(this,'mixed_layer_capacity','mixed layer capacity [W/kg/K]');
+		fielddisplay(this,'thermal_exchange_velocity','thermal exchange velocity [m/s]');
+		fielddisplay(this,'rheology_B','flow law parameter [Pa s^(1/n)]');
+		fielddisplay(this,'rheology_n','Glen\'s flow law exponent');
+		fielddisplay(this,'rheology_law','law for the temperature dependance of the rheology: \'None\', \'BuddJacka\', \'Cuffey\', \'CuffeyTemperate\', \'Paterson\', \'Arrhenius\', \'LliboutryDuval\', \'NyeH2O\', or \'NyeCO2\'');
+		fielddisplay(this,'earth_density','Mantle density [kg/m^-3]');
+
+	} // }}}
+	this.extrude = function(md) {//{{{
+		this.rheology_B=project3d(md,'vector',this.rheology_B,'type','node');
+		this.rheology_n=project3d(md,'vector',this.rheology_n,'type','element');
+		return this;
+	}//}}}
+	this.classname = function() {// {{{
+		return 'matice';
+	} // }}}
+	this.checkconsistency = function(md,solution,analyses) { // {{{
+		if (solution == 'TransientSolution' && md.transient.isslc) {
+			checkfield(md,'fieldname','materials.earth_density','>',0,'numel',[1])
+		} else {
+			checkfield(md,'fieldname','materials.rho_ice','>',0);
+			checkfield(md,'fieldname','materials.rho_water','>',0);
+			checkfield(md,'fieldname','materials.rho_freshwater','>',0);
+			checkfield(md,'fieldname','materials.mu_water','>',0);
+			checkfield(md,'fieldname','materials.rheology_B','>',0,'universal',1,'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','materials.rheology_n','>',0,'universal',1,'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','materials.rheology_law','values',['None','BuddJacka','Cuffey','CuffeyTemperate','Paterson','Arrhenius','LliboutryDuval','NyeH2O','NyeCO2']);
+			checkfield(md,'fieldname','materials.effectiveconductivity_averaging','numel',[1],'values',[0,1,2])
+		}
+	} // }}}
+	this.marshall=function(md,prefix,fid) { //{{{
+		WriteData(fid,prefix,'name','md.materials.type','data',3,'format','Integer');
+		WriteData(fid,prefix,'object',this,'class','materials','fieldname','rho_ice','format','Double');
+		WriteData(fid,prefix,'object',this,'class','materials','fieldname','rho_water','format','Double');
+		WriteData(fid,prefix,'object',this,'class','materials','fieldname','rho_freshwater','format','Double');
+		WriteData(fid,prefix,'object',this,'class','materials','fieldname','mu_water','format','Double');
+		WriteData(fid,prefix,'object',this,'class','materials','fieldname','heatcapacity','format','Double');
+		WriteData(fid,prefix,'object',this,'class','materials','fieldname','latentheat','format','Double');
+		WriteData(fid,prefix,'object',this,'class','materials','fieldname','thermalconductivity','format','Double');
+		WriteData(fid,prefix,'object',this,'class','materials','fieldname','temperateiceconductivity','format','Double');
+		WriteData(fid,prefix,'object',this,'class','materials','fieldname','effectiveconductivity_averaging','format','Integer');
+		WriteData(fid,prefix,'object',this,'class','materials','fieldname','meltingpoint','format','Double');
+		WriteData(fid,prefix,'object',this,'class','materials','fieldname','beta','format','Double');
+		WriteData(fid,prefix,'object',this,'class','materials','fieldname','mixed_layer_capacity','format','Double');
+		WriteData(fid,prefix,'object',this,'class','materials','fieldname','thermal_exchange_velocity','format','Double');
+		if ((shape(self.rheology_B)[0] == md.mesh.numberofvertices) || (shape(self.rheology_B)[0] == md.mesh.numberofvertices + 1) or (shape(self.rheology_B)[0] == md.mesh.numberofelements && shape(self.rheology_B)[1] > 1)) {
+			mattype = 1
+			tsl = md.mesh.numberofvertices
+		} else {
+			mattype = 2
+			tsl = md.mesh.numberofelements
+		}
+		WriteData(fid,prefix,'object',this,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',mattype,'timeserieslength',tsl+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'object',this,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2);
+		WriteData(fid,prefix,'data',this.rheology_law,'name','md.materials.rheology_law','format','String');
+		WriteData(fid,prefix,'object',this,'class','materials','fieldname','earth_density','format','Double');
+
+	}//}}}
+	this.fix=function() { //{{{
+	}//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/matice.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/matice.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/matice.m	(revision 27955)
@@ -0,0 +1,190 @@
+%MATICE class definition
+%
+%   Usage:
+%      matice=matice();
+
+classdef matice
+	properties (SetAccess=public) 
+		rho_ice                         = 0.;
+		rho_water                       = 0.;
+		rho_freshwater                  = 0.;
+		mu_water                        = 0.;
+		heatcapacity                    = 0.;
+		latentheat                      = 0.;
+		thermalconductivity             = 0.;
+		temperateiceconductivity        = 0.;
+		effectiveconductivity_averaging = 0.;
+		meltingpoint                    = 0.;
+		beta                            = 0.;
+		mixed_layer_capacity            = 0.;
+		thermal_exchange_velocity       = 0.;
+		rheology_B                      = NaN;
+		rheology_n                      = NaN;
+		rheology_law                    = '';
+
+		%slc
+		earth_density                   = 0;
+
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node');
+			self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element');
+		end % }}}
+		function self = matice(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('matice');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%ice density (kg/m^3)
+			self.rho_ice=917.;
+
+			%ocean water density (kg/m^3)
+			self.rho_water=1023.;
+
+			%fresh water density (kg/m^3)
+			self.rho_freshwater=1000.;
+
+			%water viscosity (N.s/m^2)
+			self.mu_water=0.001787;
+
+			%ice heat capacity cp (J/kg/K)
+			self.heatcapacity=2093.;
+
+			%ice latent heat of fusion L (J/kg)
+			self.latentheat=3.34*10^5;
+
+			%ice thermal conductivity (W/m/K)
+			self.thermalconductivity=2.4;
+			
+			%wet ice thermal conductivity (W/m/K)
+			self.temperateiceconductivity=.24;
+
+			%computation of effective conductivity
+			self.effectiveconductivity_averaging=1;
+
+			%the melting point of ice at 1 atmosphere of pressure in K
+			self.meltingpoint=273.15;
+
+			%rate of change of melting point with pressure (K/Pa)
+			self.beta=9.8*10^-8;
+
+			%mixed layer (ice-water interface) heat capacity (J/kg/K)
+			self.mixed_layer_capacity=3974.;
+
+			%thermal exchange velocity (ice-water interface) (m/s)
+			self.thermal_exchange_velocity=1.00*10^-4;
+
+			%Rheology law: what is the temperature dependence of B with T
+			%available: none, paterson and arrhenius
+			self.rheology_law='Paterson';
+
+			%Rheology for ice: 
+			self.rheology_B=2.1*1e8;
+			self.rheology_n=3;
+
+			%SLR
+			self.earth_density= 5512;  % average density of the Earth, (kg/m^3)
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if strcmpi(solution,'TransientSolution') & md.transient.isslc,
+				md = checkfield(md,'fieldname','materials.earth_density','>',0,'numel',1);
+			else
+				md = checkfield(md,'fieldname','materials.rho_ice','>',0);
+				md = checkfield(md,'fieldname','materials.rho_water','>',0);
+				md = checkfield(md,'fieldname','materials.rho_freshwater','>',0);
+				md = checkfield(md,'fieldname','materials.mu_water','>',0);
+				md = checkfield(md,'fieldname','materials.rheology_B','>',0,'universal',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','materials.rheology_n','>',0,'universal',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','materials.rheology_law','values',{'None' 'BuddJacka' 'Cuffey' 'CuffeyTemperate' 'Paterson' 'Arrhenius' 'LliboutryDuval' 'NyeCO2' 'NyeH2O'});
+				md = checkfield(md,'fieldname','materials.effectiveconductivity_averaging','numel',[1],'values',[0 1 2]);
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Materials:'));
+
+			fielddisplay(self,'rho_ice','ice density [kg/m^3]');
+			fielddisplay(self,'rho_water','ocean water density [kg/m^3]');
+			fielddisplay(self,'rho_freshwater','fresh water density [kg/m^3]');
+			fielddisplay(self,'mu_water','water viscosity [N s/m^2]');
+			fielddisplay(self,'heatcapacity','heat capacity [J/kg/K]');
+			fielddisplay(self,'thermalconductivity',['ice thermal conductivity [W/m/K]']);
+			fielddisplay(self,'temperateiceconductivity','temperate ice thermal conductivity [W/m/K]');
+			fielddisplay(self,'effectiveconductivity_averaging','computation of effective conductivity: (0) arithmetic mean, (1) harmonic mean, (2) geometric mean (default)');
+			fielddisplay(self,'meltingpoint','melting point of ice at 1atm in K');
+			fielddisplay(self,'latentheat','latent heat of fusion [J/kg]');
+			fielddisplay(self,'beta','rate of change of melting point with pressure [K/Pa]');
+			fielddisplay(self,'mixed_layer_capacity','mixed layer capacity [W/kg/K]');
+			fielddisplay(self,'thermal_exchange_velocity','thermal exchange velocity [m/s]');
+			fielddisplay(self,'rheology_B','flow law parameter [Pa s^(1/n)]');
+			fielddisplay(self,'rheology_n','Glen''s flow law exponent');
+			fielddisplay(self,'rheology_law',['law for the temperature dependance of the rheology: ''None'', ''BuddJacka'', Cuffey'', ''CuffeyTemperate'', ''Paterson'', ''Arrhenius'', ''LliboutryDuval'', ''NyeH2O'', or ''NyeCO2''']);
+			fielddisplay(self,'earth_density','Mantle density [kg/m^-3]');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.materials.type','data',3,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_ice','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_water','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rho_freshwater','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mu_water','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','heatcapacity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','latentheat','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermalconductivity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','effectiveconductivity_averaging','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','meltingpoint','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','beta','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double');
+			if(size(self.rheology_B,1)==md.mesh.numberofvertices | size(self.rheology_B,1)==md.mesh.numberofvertices+1 | (size(self.rheology_B,1)==md.mesh.numberofelements && size(self.rheology_B,2)>1))
+				mattype=1; tsl = md.mesh.numberofvertices;
+			else
+				mattype=2; tsl = md.mesh.numberofelements;
+			end
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',mattype,'timeserieslength',tsl+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'data',self.rheology_law,'name','md.materials.rheology_law','format','String');
+			WriteData(fid,prefix,'object',self,'class','materials','fieldname','earth_density','format','Double');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.materials.rho_ice'],self.rho_ice);
+			writejsdouble(fid,[modelname '.materials.rho_water'],self.rho_water);
+			writejsdouble(fid,[modelname '.materials.rho_freshwater'],self.rho_freshwater);
+			writejsdouble(fid,[modelname '.materials.mu_water'],self.mu_water);
+			writejsdouble(fid,[modelname '.materials.heatcapacity'],self.heatcapacity);
+			writejsdouble(fid,[modelname '.materials.latentheat'],self.latentheat);
+			writejsdouble(fid,[modelname '.materials.thermalconductivity'],self.thermalconductivity);
+			writejsdouble(fid,[modelname '.materials.temperateiceconductivity'],self.temperateiceconductivity);
+			writejsdouble(fid,[modelname '.materials.effectiveconductivity_averaging'],self.effectiveconductivity_averaging);
+			writejsdouble(fid,[modelname '.materials.meltingpoint'],self.meltingpoint);
+			writejsdouble(fid,[modelname '.materials.beta'],self.beta);
+			writejsdouble(fid,[modelname '.materials.mixed_layer_capacity'],self.mixed_layer_capacity);
+			writejsdouble(fid,[modelname '.materials.thermal_exchange_velocity'],self.thermal_exchange_velocity);
+			writejsdouble(fid,[modelname '.materials.mixed_layer_capacity'],self.mixed_layer_capacity);
+			writejs1Darray(fid,[modelname '.materials.rheology_B'],self.rheology_B);
+			writejs1Darray(fid,[modelname '.materials.rheology_n'],self.rheology_n);
+			writejsstring(fid,[modelname '.materials.rheology_law'],self.rheology_law);
+			writejsdouble(fid,[modelname '.materials.earth_density'],self.earth_density);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/matice.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/matice.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/matice.py	(revision 27955)
@@ -0,0 +1,149 @@
+import numpy as np
+
+from fielddisplay import fielddisplay
+from project3d import project3d
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class matice(object):
+    """MATICE class definition
+
+    Usage:
+            matice = matice()
+    """
+
+    def __init__(self):  # {{{
+        self.rho_ice = 0
+        self.rho_water = 0
+        self.rho_freshwater = 0
+        self.mu_water = 0
+        self.heatcapacity = 0
+        self.latentheat = 0
+        self.thermalconductivity = 0
+        self.temperateiceconductivity = 0
+        self.effectiveconductivity_averaging = 0
+        self.meltingpoint = 0
+        self.beta = 0
+        self.mixed_layer_capacity = 0
+        self.thermal_exchange_velocity = 0
+        self.rheology_B = np.nan
+        self.rheology_n = np.nan
+        self.rheology_law = ''
+
+        # SLC
+        self.earth_density = 0
+
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   Materials:\n'
+        s += '{}\n'.format(fielddisplay(self, 'rho_ice', 'ice density [kg/m^3]'))
+        s += '{}\n'.format(fielddisplay(self, 'rho_water', 'water density [kg/m^3]'))
+        s += '{}\n'.format(fielddisplay(self, 'rho_freshwater', 'fresh water density [kg/m^3]'))
+        s += '{}\n'.format(fielddisplay(self, 'mu_water', 'water viscosity [Ns/m^2]'))
+        s += '{}\n'.format(fielddisplay(self, 'heatcapacity', 'heat capacity [J/kg/K]'))
+        s += '{}\n'.format(fielddisplay(self, 'thermalconductivity', 'ice thermal conductivity [W/m/K]'))
+        s += '{}\n'.format(fielddisplay(self, 'temperateiceconductivity', 'temperate ice thermal conductivity [W/m/K]'))
+        s += '{}\n'.format(fielddisplay(self, 'effectiveconductivity_averaging', 'computation of effectiveconductivity: (0) arithmetic mean, (1) harmonic mean, (2) geometric mean (default)'))
+        s += '{}\n'.format(fielddisplay(self, 'meltingpoint', 'melting point of ice at 1atm in K'))
+        s += '{}\n'.format(fielddisplay(self, 'latentheat', 'latent heat of fusion [J/m^3]'))
+        s += '{}\n'.format(fielddisplay(self, 'beta', 'rate of change of melting point with pressure [K/Pa]'))
+        s += '{}\n'.format(fielddisplay(self, 'mixed_layer_capacity', 'mixed layer capacity [W/kg/K]'))
+        s += '{}\n'.format(fielddisplay(self, 'thermal_exchange_velocity', 'thermal exchange velocity [m/s]'))
+        s += '{}\n'.format(fielddisplay(self, 'rheology_B', 'flow law parameter [Pa s^(1/n)]'))
+        s += '{}\n'.format(fielddisplay(self, 'rheology_n', 'Glen\'s flow law exponent'))
+        s += '{}\n'.format(fielddisplay(self, 'rheology_law', 'law for the temperature dependance of the rheology: \'None\', \'BuddJacka\', \'Cuffey\', \'CuffeyTemperate\', \'Paterson\', \'Arrhenius\', \'LliboutryDuval\', \'NyeCO2\', or \'NyeH2O\''))
+        s += '{}\n'.format(fielddisplay(self, 'earth_density', 'Mantle density [kg/m^-3]'))
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.rheology_B = project3d(md, 'vector', self.rheology_B, 'type', 'node')
+        self.rheology_n = project3d(md, 'vector', self.rheology_n, 'type', 'element')
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Ice density (kg/m^3)
+        self.rho_ice = 917.0
+        # Ocean water density (kg/m^3)
+        self.rho_water = 1023.0
+        # Fresh water density (kg/m^3)
+        self.rho_freshwater = 1000.0
+        # Water viscosity (N.s/m^2)
+        self.mu_water = 0.001787
+        # Ice heat capacity cp (J/kg/K)
+        self.heatcapacity = 2093.0
+        # Ice latent heat of fusion L (J/kg)
+        self.latentheat = 3.34 * pow(10, 5)
+        # Ice thermal conductivity (W/m/K)
+        self.thermalconductivity = 2.4
+        # Temperate ice thermal conductivity (W/m/K)
+        self.temperateiceconductivity = 0.24
+        # Computation of effective conductivity
+        self.effectiveconductivity_averaging = 1
+        # The melting point of ice at 1 atmosphere of pressure in K
+        self.meltingpoint = 273.15
+        # Rate of change of melting point with pressure (K/Pa)
+        self.beta = 9.8 * pow(10, -8)
+        # Mixed layer (ice-water interface) heat capacity (J/kg/K)
+        self.mixed_layer_capacity = 3974.0
+        # Thermal exchange velocity (ice-water interface) (m/s)
+        self.thermal_exchange_velocity = 1.00 * pow(10, -4)
+        # Rheology law: what is the temperature dependence of B with T
+        # available: none, paterson and arrhenius
+        self.rheology_law = 'Paterson'
+
+        # Rheology for ice
+        self.rheology_B = 2.1 * 1e8
+        self.rheology_n = 3
+
+        # SLR
+        self.earth_density = 5512  # average density of the Earth, (kg/m^3)
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if solution == 'TransientSolution' and md.transient.isslc:
+            md = checkfield(md, 'fieldname', 'materials.earth_density', '>', 0, 'numel', [1])
+        else:
+            md = checkfield(md, 'fieldname', 'materials.rho_ice', '>', 0)
+            md = checkfield(md, 'fieldname', 'materials.rho_water', '>', 0)
+            md = checkfield(md, 'fieldname', 'materials.rho_freshwater', '>', 0)
+            md = checkfield(md, 'fieldname', 'materials.mu_water', '>', 0)
+            md = checkfield(md, 'fieldname', 'materials.rheology_B', '>', 0, 'universal', 1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'materials.rheology_n', '>', 0, 'universal',1, 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'materials.rheology_law', 'values', ['None', 'BuddJacka', 'Cuffey', 'CuffeyTemperate', 'Paterson', 'Arrhenius', 'LliboutryDuval', 'NyeCO2', 'NyeH2O'])
+            md = checkfield(md, 'fieldname', 'materials.effectiveconductivity_averaging', 'numel', [1], 'values', [0, 1, 2])
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'name', 'md.materials.type', 'data', 3, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_ice', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_water', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rho_freshwater', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mu_water', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'heatcapacity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'latentheat', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermalconductivity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'temperateiceconductivity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'effectiveconductivity_averaging', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'meltingpoint', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'beta', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'mixed_layer_capacity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'thermal_exchange_velocity', 'format', 'Double')
+        # NOTE: We first have to check if we have a NumPy array here
+        if np.size(self.rheology_B)==1 or (((np.shape(self.rheology_B)[0] == md.mesh.numberofvertices) or (np.shape(self.rheology_B)[0] == md.mesh.numberofvertices + 1)) or ((len(np.shape(self.rheology_B)) == 2) and (np.shape(self.rheology_B)[0] == md.mesh.numberofelements) and (np.shape(self.rheology_B)[1] > 1))):
+            mattype = 1
+            tsl = md.mesh.numberofvertices
+        else:
+            mattype = 2
+            tsl = md.mesh.numberofelements
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_B', 'format', 'DoubleMat', 'mattype', mattype, 'timeserieslength', tsl + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'rheology_n', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'data', self.rheology_law, 'name', 'md.materials.rheology_law', 'format', 'String')
+        WriteData(fid, prefix, 'object', self, 'class', 'materials', 'fieldname', 'earth_density', 'format', 'Double')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh2d.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh2d.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh2d.js	(revision 27955)
@@ -0,0 +1,140 @@
+//MESH2D class definition
+//
+//   Usage:
+//      mesh2d= new mesh2d();
+
+function mesh2d () {
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+
+			//the connectivity is the averaged number of nodes linked to a
+			//given node through an edge. This connectivity is used to initially
+			//allocate memory to the stiffness matrix. A value of 16 seems to
+			//give a good memory/time ration. This value can be checked in
+			//trunk/test/Miscellaneous/runme.m
+			this.average_vertex_connectivity=25;
+		}
+		// }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   2D tria Mesh (horizontal):")); 
+
+			console.log(sprintf("\n      Elements and vertices:"));
+			fielddisplay(this,"numberofelements","number of elements");
+			fielddisplay(this,"numberofvertices","number of vertices");
+			fielddisplay(this,"elements","vertex indices of the mesh elements");
+			fielddisplay(this,"x","vertices x coordinate [m]");
+			fielddisplay(this,"y","vertices y coordinate [m]");
+			fielddisplay(this,"edges","edges of the 2d mesh (vertex1 vertex2 element1 element2)");
+			fielddisplay(this,"numberofedges","number of edges of the 2d mesh");
+
+			console.log(sprintf("\n      Properties:"));
+			fielddisplay(this,"vertexonboundary","vertices on the boundary of the domain flag list");
+			fielddisplay(this,"segments","edges on domain boundary (vertex1 vertex2 element)");
+			fielddisplay(this,"segmentmarkers","number associated to each segment");
+			fielddisplay(this,"vertexconnectivity","list of elements connected to vertex_i");
+			fielddisplay(this,"elementconnectivity","list of elements adjacent to element_i");
+			fielddisplay(this,"average_vertex_connectivity","average number of vertices connected to one vertex");
+
+			console.log(sprintf("\n      Extracted model:"));
+			fielddisplay(this,"extractedvertices","vertices extracted from the model");
+			fielddisplay(this,"extractedelements","elements extracted from the model");
+
+			console.log(sprintf("\n      Projection:"));
+			fielddisplay(this,"lat","vertices latitude [degrees]");
+			fielddisplay(this,"long","vertices longitude [degrees]");
+			fielddisplay(this,"epsg","EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)");
+			fielddisplay(self,"scale_factor","Projection correction for volume, area, etc. computation)");
+		} //}}}
+		this.classname = function () { //{{{
+			return "mesh2d";
+		} //}}}
+		this.domaintype=function (){ // {{{
+			return '2Dhorizontal';
+		} // }}}
+		this.dimension = function () { //{{{
+			return 2;
+		} //}}}
+		this.elementtype = function() {//{{{
+			return 'Tria';
+		} // }}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',NewArrayFillIncrement(md.mesh.numberofvertices,1,1));
+			checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements, 3]);
+			if(ArrayAnyEqual(ArrayIsMember(NewArrayFillIncrement(md.mesh.numberofvertices,1,1),ArraySort(ArrayUnique(MatrixToList(md.mesh.elements)))),0)){
+				md.checkmessage('orphan nodes have been found. Check the mesh outline');
+			}
+			checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message',"'mesh.average_vertex_connectivity' should be at least 9 in 2d");
+			checkfield(md,'fieldname','mesh.segments','NaN',1,'Inf',1,'>',0,'size',[NaN, 3]);
+			if(this.scale_factor.length>1) checkfield(md,'fieldname','mesh.scale_factor','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+
+			switch(solution){
+			case 'ThermalSolution':
+				checkmessage(md,'thermal not supported for 2d mesh');
+				break;
+			default:
+				break
+			}
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'name','md.mesh.domain_type','data','Domain' + this.domaintype(),'format','String');
+			WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',this.dimension(),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.elementtype','data',this.elementtype(),'format','String');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'name','md.mesh.z','data',NewArrayFill(this.numberofvertices,0),'format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','vertexonboundary','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','segments','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','scale_factor','format','DoubleMat','mattype',1);
+		}//}}}
+		this.fix=function() { //{{{
+			//Transform objects into Float64Arrays:
+			this.x=FloatFix(this.x,this.numberofvertices); 
+			this.y=FloatFix(this.y,this.numberofvertices); 
+			this.edges=NullFix(this.edges,NaN);
+			this.vertexonboundary=FloatFix(this.vertexonboundary,this.numberofvertices); 
+			this.segmentmarkers=FloatFix(this.segmentmarkers,this.segments.length);
+			this.extractedvertices=NullFix(this.extractedvertices,NaN);
+			this.extractedelements=NullFix(this.extractedelements,NaN);
+			this.lat=NullFix(this.lat,NaN);
+			this.long=NullFix(this.long,NaN);
+			this.scale_factor=NullFix(this.scale_factor,NaN);
+		}//}}}
+
+	//properties 
+	// {{{
+		this.x                           = NaN;
+		this.y                           = NaN;
+		this.elements                    = NaN;
+		this.numberofelements            = 0;
+		this.numberofvertices            = 0;
+		this.numberofedges               = 0;
+
+		this.lat                         = NaN;
+		this.long                        = NaN;
+		this.epsg                        = 0;
+		this.scale_factor                = NaN;
+
+		this.vertexonboundary            = NaN;
+
+		this.edges                       = NaN;
+		this.segments                    = NaN;
+		this.segmentmarkers              = NaN;
+		this.vertexconnectivity          = NaN;
+		this.elementconnectivity         = NaN;
+		this.average_vertex_connectivity = 0;
+
+		this.extractedvertices           = NaN;
+		this.extractedelements           = NaN;
+
+		this.setdefaultparameters();
+		//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh2d.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh2d.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh2d.m	(revision 27955)
@@ -0,0 +1,274 @@
+%MESH2D class definition
+%
+%   Usage:
+%      mesh2d=mesh2d();
+
+classdef mesh2d
+	properties (SetAccess=public) 
+		x                           = NaN;
+		y                           = NaN;
+		elements                    = NaN;
+		numberofelements            = 0;
+		numberofvertices            = 0;
+		numberofedges               = 0;
+
+		lat                         = NaN;
+		long                        = NaN;
+		epsg                        = 0;
+		proj                        = 0;
+		scale_factor                = NaN;
+
+		vertexonboundary            = NaN;
+
+		edges                       = NaN;
+		segments                    = NaN;
+		segmentmarkers              = NaN;
+		vertexconnectivity          = NaN;
+		elementconnectivity         = NaN;
+		average_vertex_connectivity = 0;
+
+		extractedvertices           = NaN;
+		extractedelements           = NaN;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model selfect is
+			% loaded. Update old properties here
+
+			%2014 Oct. 1st
+			if isstruct(self),
+				oldself=self;
+				%Assign property values from struct
+				self=structtoobj(mesh2d(),oldself);
+				if isfield(oldself,'hemisphere'),
+					disp('md.mesh.hemisphere has been automatically converted to EPSG code');
+					if strcmpi(oldself.hemisphere,'n'),
+						self.epsg=3413;
+						self.proj=epsg2proj(3413);
+					else
+						self.epsg=3031;
+						self.proj=epsg2proj(3031);
+					end
+				end
+			end
+
+		end% }}}
+	end
+	methods
+		function self = mesh2d(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=mesh2d();
+					object=varargin{1};
+					fields=fieldnames(object);
+					for i=1:length(fields)
+						field=fields{i};
+						if ismember(field,properties('mesh2d')),
+							self.(field)=object.(field);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%The connectivity is the average number of nodes linked to a given 
+			%node through an edge. This connectivity is used to initially allocate 
+			%memory to the stiffness matrix. A value of 16 seems to give a good 
+			%memory/time ratio. This value can be checked in
+			%test/Miscellaneous/runme.m
+			self.average_vertex_connectivity=25;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			
+			if strcmpi(solution,'LoveSolution'), return; end
+
+			md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',1:md.mesh.numberofvertices);
+			md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements 3]);
+			if any(~ismember(1:md.mesh.numberofvertices,sort(unique(md.mesh.elements(:)))));
+				md = checkmessage(md,'orphan nodes have been found. Check the mesh outline');
+			end
+			md = checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			md = checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message','''mesh.average_vertex_connectivity'' should be at least 9 in 2d');
+			md = checkfield(md,'fieldname','mesh.segments','NaN',1,'Inf',1,'>',0,'size',[NaN 3]);
+			if numel(md.mesh.scale_factor)>1,
+				md = checkfield(md,'fieldname','mesh.scale_factor','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			end
+
+			if strcmp(solution,'ThermalSolution')
+					md = checkmessage(md,'thermal not supported for 2d mesh');
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   2D tria Mesh (horizontal):')); 
+
+			disp(sprintf('\n      Elements and vertices:'));
+			fielddisplay(self,'numberofelements','number of elements');
+			fielddisplay(self,'numberofvertices','number of vertices');
+			fielddisplay(self,'elements','vertex indices of the mesh elements');
+			fielddisplay(self,'x','vertices x coordinate [m]');
+			fielddisplay(self,'y','vertices y coordinate [m]');
+			fielddisplay(self,'edges','edges of the 2d mesh (vertex1 vertex2 element1 element2)');
+			fielddisplay(self,'numberofedges','number of edges of the 2d mesh');
+
+			disp(sprintf('\n      Properties:'));
+			fielddisplay(self,'vertexonboundary','vertices on the boundary of the domain flag list');
+			fielddisplay(self,'segments','edges on domain boundary (vertex1 vertex2 element)');
+			fielddisplay(self,'segmentmarkers','number associated to each segment');
+			fielddisplay(self,'vertexconnectivity','list of elements connected to vertex_i');
+			fielddisplay(self,'elementconnectivity','list of elements adjacent to element_i');
+			fielddisplay(self,'average_vertex_connectivity','average number of vertices connected to one vertex');
+
+			disp(sprintf('\n      Extracted model:'));
+			fielddisplay(self,'extractedvertices','vertices extracted from the model');
+			fielddisplay(self,'extractedelements','elements extracted from the model');
+
+			disp(sprintf('\n      Projection:'));
+			fielddisplay(self,'lat','vertices latitude [degrees]');
+			fielddisplay(self,'long','vertices longitude [degrees]');
+			fielddisplay(self,'epsg','EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
+			fielddisplay(self,'proj','PROJ.4 compatible projection string');
+			fielddisplay(self,'scale_factor','Projection correction for volume, area, etc. computation)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.mesh.domain_type','data',['Domain' domaintype(self)],'format','String');
+			WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',dimension(self),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.elementtype','data',elementtype(self),'format','String');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'name','md.mesh.z','data',zeros(self.numberofvertices,1),'format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonboundary','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','segments','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','scale_factor','format','DoubleMat','mattype',1);
+			if md.transient.isoceancoupling, %Need to add lat/long coordinates to couple with ocean as they rely on lat/long coordinate system
+				WriteData(fid,prefix,'object',self,'class','mesh','fieldname','lat','format','DoubleMat','mattype',1);
+				WriteData(fid,prefix,'object',self,'class','mesh','fieldname','long','format','DoubleMat','mattype',1);
+			end
+		end % }}}
+		function t = domaintype(self) % {{{
+			t = '2Dhorizontal';
+		end % }}}
+		function d = dimension(self) % {{{
+			d = 2;
+		end % }}}
+		function s = elementtype(self) % {{{
+			s = 'Tria';
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.mesh.x'],self.x);
+			writejs1Darray(fid,[modelname '.mesh.y'],self.y);
+			writejs2Darray(fid,[modelname '.mesh.elements'],self.elements);
+			writejsdouble(fid,[modelname '.mesh.numberofelements'],self.numberofelements);
+			writejsdouble(fid,[modelname '.mesh.numberofvertices'],self.numberofvertices);
+			writejsdouble(fid,[modelname '.mesh.numberofedges'],self.numberofedges);
+			writejs1Darray(fid,[modelname '.mesh.lat'],self.lat);
+			writejs1Darray(fid,[modelname '.mesh.long'],self.long);
+			writejsdouble(fid,[modelname '.mesh.epsg'],self.epsg);
+			writejsdouble(fid,[modelname '.mesh.proj'],self.proj);
+			writejsdouble(fid,[modelname '.mesh.scale_factor'],self.scale_factor);
+			writejs1Darray(fid,[modelname '.mesh.vertexonboundary'],self.vertexonboundary);
+			writejs2Darray(fid,[modelname '.mesh.edges'],self.edges);
+			writejs2Darray(fid,[modelname '.mesh.segments'],self.segments);
+			writejs2Darray(fid,[modelname '.mesh.segmentmarkers'],self.segmentmarkers);
+			writejs2Darray(fid,[modelname '.mesh.vertexconnectivity'],self.vertexconnectivity);
+			writejs2Darray(fid,[modelname '.mesh.elementconnectivity'],self.elementconnectivity);
+			writejsdouble(fid,[modelname '.mesh.average_vertex_connectivity'],self.average_vertex_connectivity);
+			writejs1Darray(fid,[modelname '.mesh.extractedvertices'],self.extractedvertices);
+			writejs1Darray(fid,[modelname '.mesh.extractedelements'],self.extractedelements);
+
+		end % }}}
+		function export(self,varargin) % {{{
+
+			options=pairoptions(varargin{:});
+			filename=getfieldvalue(options,'filename');
+			format=getfieldvalue(options,'format','shp');
+			geometry=getfieldvalue(options,'geometry','line');
+			index=getfieldvalue(options,'index',[]);
+			proj=getfieldvalue(options,'projection','');
+
+			%prepare contours: 
+			contours= struct([]);
+			if strcmpi(geometry,'point'),
+				for i=1:self.numberofvertices,
+					contours(i).x = self.x(i);
+					contours(i).y = self.y(i);
+					contours(i).id = i;
+					contours(i).Geometry = 'Point';
+				end
+			elseif strcmpi(geometry,'line'),
+				counter=1;
+				for i=1:self.numberofelements,
+					el=self.elements(i,:);
+					%first line:
+					contours(counter).x = [self.x(el(1)) self.x(el(2))];
+					contours(counter).y = [self.y(el(1)) self.y(el(2))];
+					contours(counter).Geometry = 'Line';
+
+					%second line:
+					contours(counter+1).x = [self.x(el(2)) self.x(el(3))];
+					contours(counter+1).y = [self.y(el(2)) self.y(el(3))];
+					contours(counter+1).Geometry = 'Line';
+
+					%third line:
+					contours(counter+2).x = [self.x(el(3)) self.x(el(1))];
+					contours(counter+2).y = [self.y(el(3)) self.y(el(1))];
+					contours(counter+2).Geometry = 'Line';
+					
+					%increase counter: 
+					counter=counter+3;
+				end
+			elseif strcmpi(geometry,'polygon'),
+				if isempty(index),
+					counter=1;
+					for i=1:self.numberofelements,
+						el=self.elements(i,:);
+						contours(i).x=[self.x(el(1)) self.x(el(2)) self.x(el(3)) self.x(el(1))];
+						contours(i).y=[self.y(el(1)) self.y(el(2)) self.y(el(3)) self.y(el(1))];
+						contours(i).Geometry = 'Polygon';
+						contours(i).Id = i;
+					end
+				else
+					counter=1;
+					for i=1:length(index),
+						el=self.elements(index(i),:);
+						contours(i).x=[self.x(el(1)) self.x(el(2)) self.x(el(3)) self.x(el(1))];
+						contours(i).y=[self.y(el(1)) self.y(el(2)) self.y(el(3)) self.y(el(1))];
+						contours(i).id = index(i);
+						contours(i).Geometry = 'Polygon';
+					end
+				end
+			else
+				error(sprintf('mesh3dsurface ''export'' error message: geometry %s not supported yet (should be ''point'' or ''line''',geometry));
+			end
+
+			%write file: 
+			if strcmpi(format,'shp'),
+				shpwrite(contours,filename);
+			elseif strcmpi(format,'exp'),
+				expwrite(contours,filename);
+			else
+				error(sprintf('mesh3dsurface ''export'' error message: file format %s not supported yet',format));
+			end
+
+			%write projection file: 
+			if ~isempty(proj),
+				proj2shpprj(filename,proj);
+			end
+			%write style file: 
+			applyqgisstyle(filename,'mesh');
+
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh2d.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh2d.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh2d.py	(revision 27955)
@@ -0,0 +1,140 @@
+import numpy as np
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+import MatlabFuncs as m
+from WriteData import WriteData
+
+
+class mesh2d(object):
+    """mesh2d class definition
+
+    Usage:
+        mesh2d = mesh2d()
+    """
+
+    def __init__(self):  # {{{
+        self.x = np.nan
+        self.y = np.nan
+        self.elements = np.nan
+        self.numberofelements = 0
+        self.numberofvertices = 0
+        self.numberofedges = 0
+
+        self.lat = np.nan
+        self.long = np.nan
+        self.epsg = 0
+        self.scale_factor = np.nan
+
+        self.vertexonboundary = np.nan
+        self.edges = np.nan
+        self.segments = np.nan
+        self.segmentmarkers = np.nan
+        self.vertexconnectivity = np.nan
+        self.elementconnectivity = np.nan
+        self.average_vertex_connectivity = 0
+
+        self.extractedvertices = np.nan
+        self.extractedelements = np.nan
+
+        # Set defaults
+        self.setdefaultparameters()
+
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   2D tria Mesh (horizontal):\n'
+
+        s += '{}\n'.format('      Elements and vertices:')
+        s += '{}\n'.format(fielddisplay(self, 'numberofelements', 'number of elements'))
+        s += '{}\n'.format(fielddisplay(self, 'numberofvertices', 'number of vertices'))
+        s += '{}\n'.format(fielddisplay(self, 'elements', 'vertex indices of the mesh elements'))
+        s += '{}\n'.format(fielddisplay(self, 'x', 'vertices x coordinate [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'y', 'vertices y coordinate [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'edges', 'edges of the 2d mesh (vertex1 vertex2 element1 element2)'))
+        s += '{}\n'.format(fielddisplay(self, 'numberofedges', 'number of edges of the 2d mesh'))
+        s += '\n'
+        s += '{}\n'.format('      Properties:')
+        s += '{}\n'.format(fielddisplay(self, 'vertexonboundary', 'vertices on the boundary of the domain flag list'))
+        s += '{}\n'.format(fielddisplay(self, 'segments', 'edges on domain boundary (vertex1 vertex2 element)'))
+        s += '{}\n'.format(fielddisplay(self, 'segmentmarkers', 'number associated to each segment'))
+        s += '{}\n'.format(fielddisplay(self, 'vertexconnectivity', 'list of elements connected to vertex_i'))
+        s += '{}\n'.format(fielddisplay(self, 'elementconnectivity', 'list of elements adjacent to element_i'))
+        s += '{}\n'.format(fielddisplay(self, 'average_vertex_connectivity', 'average number of vertices connected to one vertex'))
+        s += '\n'
+        s += '{}\n'.format('      Extracted model:')
+        s += '{}\n'.format(fielddisplay(self, 'extractedvertices', 'vertices extracted from the model'))
+        s += '{}\n'.format(fielddisplay(self, 'extractedelements', 'elements extracted from the model'))
+        s += '\n'
+        s += '{}\n'.format('      Projection:')
+        s += '{}\n'.format(fielddisplay(self, 'lat', 'vertices latitude [degrees]'))
+        s += '{}\n'.format(fielddisplay(self, 'long', 'vertices longitude [degrees]'))
+        s += '{}\n'.format(fielddisplay(self, 'epsg', 'EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)'))
+        s += '{}\n'.format(fielddisplay(self, 'scale_factor', 'Projection correction for volume, area, etc. computation'))
+
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # The connectivity is the average number of nodes linked to a given 
+        # node through an edge. This connectivity is used to initially allocate 
+        # memory to the stiffness matrix. A value of 16 seems to give a good 
+        # memory/time ratio. This value can be checked in 
+        # test/Miscellaneous/runme.m
+        self.average_vertex_connectivity = 25
+
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if(solution == 'LoveSolution'):
+            return
+
+        md = checkfield(md, 'fieldname', 'mesh.x', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        md = checkfield(md, 'fieldname', 'mesh.y', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        md = checkfield(md, 'fieldname', 'mesh.elements', 'NaN', 1, 'Inf', 1, '>', 0, 'values', np.arange(1, md.mesh.numberofvertices + 1))
+        md = checkfield(md, 'fieldname', 'mesh.elements', 'size', [md.mesh.numberofelements, 3])
+        if np.any(np.logical_not(m.ismember(np.arange(1, md.mesh.numberofvertices + 1), md.mesh.elements))):
+            md.checkmessage('orphan nodes have been found. Check the mesh outline')
+        md = checkfield(md, 'fieldname', 'mesh.numberofelements', '>', 0)
+        md = checkfield(md, 'fieldname', 'mesh.numberofvertices', '>', 0)
+        md = checkfield(md, 'fieldname', 'mesh.average_vertex_connectivity', '>=', 9, 'message', '\'mesh.average_vertex_connectivity\' should be at least 9 in 2d')
+        md = checkfield(md, 'fieldname', 'mesh.segments', 'NaN', 1, 'Inf', 1, '>', 0, 'size', [np.nan, 3])
+        if(np.size(self.scale_factor) > 1):
+            md = checkfield(md, 'fieldname', 'mesh.scale_factor', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+
+        if solution == 'ThermalSolution':
+            md.checkmessage('thermal not supported for 2d mesh')
+
+        return md
+    # }}}
+
+    def domaintype(self):  # {{{
+        return '2Dhorizontal'
+    # }}}
+
+    def dimension(self):  # {{{
+        return 2
+    # }}}
+
+    def elementtype(self):  # {{{
+        return 'Tria'
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'name', 'md.mesh.domain_type', 'data', 'Domain' + self.domaintype(), 'format', 'String')
+        WriteData(fid, prefix, 'name', 'md.mesh.domain_dimension', 'data', self.dimension(), 'format', 'Integer')
+        WriteData(fid, prefix, 'name', 'md.mesh.elementtype', 'data', self.elementtype(), 'format', 'String')
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'x', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'y', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'name', 'md.mesh.z', 'data', np.zeros(self.numberofvertices), 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'elements', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'numberofelements', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'numberofvertices', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'average_vertex_connectivity', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'vertexonboundary', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'segments', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'scale_factor', 'format', 'DoubleMat', 'mattype', 1)
+        if md.transient.isoceancoupling:
+            WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'lat', 'format', 'DoubleMat', 'mattype', 1)
+            WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'long', 'format', 'DoubleMat', 'mattype', 1)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh2dvertical.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh2dvertical.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh2dvertical.m	(revision 27955)
@@ -0,0 +1,273 @@
+%MESH2DVERTICAL class definition
+%
+%   Usage:
+%      mesh2dvertical=mesh2dvertical();
+
+classdef mesh2dvertical
+	properties (SetAccess=public) 
+		x                           = NaN;
+		y                           = NaN;
+		elements                    = NaN;
+		numberofelements            = 0;
+		numberofvertices            = 0;
+		numberofedges               = 0;
+
+		lat                         = NaN;
+		long                        = NaN;
+		epsg                        = NaN;
+		proj                        = '';
+		scale_factor                = NaN;
+
+		vertexonboundary            = NaN;
+		vertexonbase                = NaN;
+		vertexonsurface             = NaN;
+
+		edges                       = NaN;
+		segments                    = NaN;
+		segmentmarkers              = NaN;
+		vertexconnectivity          = NaN;
+		elementconnectivity         = NaN;
+		average_vertex_connectivity = 0;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model selfect is
+			% loaded. Update old properties here
+
+			%2014 Oct. 1st
+			if isstruct(self),
+				oldself=self;
+				%Assign property values from struct
+				self=structtoobj(mesh2dvertical(),oldself);
+				if isfield(oldself,'hemisphere'),
+					disp('md.mesh.hemisphere has been automatically converted to EPSG code');
+					if strcmpi(oldself.hemisphere,'n'),
+						self.epsg=3413;
+						self.proj=epsg2proj(3413);
+					else
+						self.epsg=3031;
+						self.proj=epsg2proj(3031);
+					end
+				end
+			end
+
+		end% }}}
+	end
+	methods
+		function self = mesh2dvertical(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('mesh2dvertical');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%the connectivity is the averaged number of nodes linked to a
+			%given node through an edge. This connectivity is used to initially
+			%allocate memory to the stiffness matrix. A value of 16 seems to
+			%give a good memory/time ration. This value can be checked in
+			%trunk/test/Miscellaneous/runme.m
+			self.average_vertex_connectivity=25;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			
+			if strcmpi(solution,'LoveSolution'), return; end
+
+			md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',1:md.mesh.numberofvertices);
+			md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements 3]);
+			if any(~ismember(1:md.mesh.numberofvertices,sort(unique(md.mesh.elements(:)))));
+				md = checkmessage(md,'orphan nodes have been found. Check the mesh outline');
+			end
+			md = checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			md = checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			md = checkfield(md,'fieldname','mesh.vertexonbase','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+			md = checkfield(md,'fieldname','mesh.vertexonsurface','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+			md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message','''mesh.average_vertex_connectivity'' should be at least 9 in 2d');
+			if numel(md.mesh.scale_factor)>1,
+				md = checkfield(md,'fieldname','mesh.scale_factor','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			end
+
+			if strcmp(solution,'ThermalSolution')
+				md = checkmessage(md,'thermal not supported for 2d mesh');
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   2D tria Mesh (vertical):')); 
+
+			disp(sprintf('\n      Elements and vertices:'));
+			fielddisplay(self,'numberofelements','number of elements');
+			fielddisplay(self,'numberofvertices','number of vertices');
+			fielddisplay(self,'elements','vertex indices of the mesh elements');
+			fielddisplay(self,'x','vertices x coordinate [m]');
+			fielddisplay(self,'y','vertices y coordinate [m]');
+			fielddisplay(self,'edges','edges of the 2d mesh (vertex1 vertex2 element1 element2)');
+			fielddisplay(self,'numberofedges','number of edges of the 2d mesh');
+
+			disp(sprintf('\n      Properties:'));
+			fielddisplay(self,'vertexonboundary','vertices on the boundary of the domain flag list');
+			fielddisplay(self,'vertexonbase','vertices on the bed of the domain flag list');
+			fielddisplay(self,'vertexonsurface','vertices on the surface of the domain flag list');
+			fielddisplay(self,'segments','edges on domain boundary (vertex1 vertex2 element)');
+			fielddisplay(self,'segmentmarkers','number associated to each segment');
+			fielddisplay(self,'vertexconnectivity','list of elements connected to vertex_i');
+			fielddisplay(self,'elementconnectivity','list of elements adjacent to element_i');
+			fielddisplay(self,'average_vertex_connectivity','average number of vertices connected to one vertex');
+
+			disp(sprintf('\n      Projection:'));
+			fielddisplay(self,'lat','vertices latitude [degrees]');
+			fielddisplay(self,'long','vertices longitude [degrees]');
+			fielddisplay(self,'epsg','EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
+			fielddisplay(self,'proj','PROJ.4 compatible projection string');
+			fielddisplay(self,'scale_factor','Projection correction for volume, area, etc. computation)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.mesh.domain_type','data',['Domain' domaintype(self)],'format','String');
+			WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',dimension(self),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.elementtype','data',elementtype(self),'format','String');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'name','md.mesh.z','data',zeros(self.numberofvertices,1),'format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonbase','format','BooleanMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonsurface','format','BooleanMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','scale_factor','format','DoubleMat','mattype',1);
+		end % }}}
+		function t = domaintype(self) % {{{
+			t = '2Dvertical';
+		end % }}}
+		function d = dimension(self) % {{{
+			d = 2;
+		end % }}}
+		function s = elementtype(self) % {{{
+			s = 'Tria';
+		end % }}}
+		function flags = vertexflags(self,value) % {{{
+			flags = zeros(self.numberofvertices,1);
+			pos   = self.segments(find(self.segmentmarkers==value),1:2);
+			flags(pos) = 1;
+		end % }}}
+		function [data datatype] = processdata(self,md,data,options) % {{{
+
+			%transpose data if necessary
+			if (size(data,2) > size(data,1)),
+				data=data';
+			end
+			datasize=size(data);
+
+			%convert to double if necessary
+			if ~isnumeric(data);
+				disp('processdata info message: data is not numeric (logical?). Converted to double');
+				data=double(data);
+			end
+
+			%check length
+			if datasize(1)~=md.mesh.numberofvertices & datasize(1)~=md.mesh.numberofelements
+				error('plotmodel error message: data not supported yet');
+			end
+
+			%quiver?
+			if datasize(2)>1,
+				datatype=3;
+			end
+
+			%smoothing?
+			if exist(options,'smooth')
+				data=averaging(md,data,getfieldvalue(options,'smooth'));
+				datasize(1)=md.mesh.numberofvertices;
+				%---> go to node data
+			end
+
+			%element data
+			if (datasize(1)==md.mesh.numberofelements & datasize(2)==1),
+				datatype=1;
+
+				%Mask?
+				if exist(options,'mask'),
+					flags=getfieldvalue(options,'mask');
+					pos=find(~flags);
+					if length(flags)==md.mesh.numberofvertices,
+						[pos2 dummy]=find(ismember(md.mesh.elements,pos));
+						data(pos2,:)=NaN;
+					elseif length(flags)==md.mesh.numberofelements
+						data(pos,:)=NaN;
+					else
+						disp('plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements');
+					end
+				end
+
+				%log?
+				if exist(options,'log'),
+					bounds=getfieldvalue(options,'caxis',[min(data(:)) max(data(:))]);
+					data(find(data<bounds(1)))=bounds(1);
+					if any(data<=0),
+						error('Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])');
+					end
+					pos=find(~isnan(data));
+					data(pos)=log(data(pos))/log(getfieldvalue(options,'log'));
+				end
+			end
+
+			%node data
+			if (datasize(1)==md.mesh.numberofvertices & datasize(2)==1),
+				datatype=2;
+
+				%Mask?
+				if exist(options,'mask'),
+					flags=getfieldvalue(options,'mask');
+					pos=find(~flags);
+					if length(flags)==md.mesh.numberofvertices,
+						data(pos,:)=NaN;
+					elseif length(flags)==md.mesh.numberofelements
+						data(md.mesh.elements(pos,:),:)=NaN;
+					else
+						disp('plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements');
+					end
+				end
+
+				%log?
+				if exist(options,'log'),
+					%if any(data<=0),
+					%	error('Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])');
+					%end
+					data=log(data)/log(getfieldvalue(options,'log'));
+				end
+			end
+		end % }}}
+		function [x y z elements is2d isplanet] = processmesh(self,options) % {{{
+
+			isplanet = 0;
+			is2d     = 1;
+
+			elements = self.elements;
+			x        = self.x;
+			y        = self.y;
+			z        = zeros(self.numberofvertices,1);
+
+			if exist(options,'xunit'),
+				unit=getfieldvalue(options,'xunit');
+				x=x*unit; % Apply to x only
+			end
+			if exist(options,'yunit'),
+				unit=getfieldvalue(options,'yunit');
+				x=x*unit; % Apply to x only
+			end
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh2dvertical.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh2dvertical.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh2dvertical.py	(revision 27955)
@@ -0,0 +1,142 @@
+import numpy as np
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+import MatlabFuncs as m
+from WriteData import WriteData
+
+
+class mesh2dvertical(object):
+    """
+    MESH2DVERTICAL class definition
+
+       Usage:
+          mesh2dvertical = mesh2dvertical()
+    """
+
+    def __init__(self):  # {{{
+        self.x = float('NaN')
+        self.y = float('NaN')
+        self.elements = float('NaN')
+        self.numberofelements = 0
+        self.numberofvertices = 0
+        self.numberofedges = 0
+
+        self.lat = float('NaN')
+        self.long = float('NaN')
+        self.epsg = float('NaN')
+        self.scale_factor = float('NaN')
+
+        self.vertexonboundary = float('NaN')
+        self.vertexonbase = float('NaN')
+        self.vertexonsurface = float('NaN')
+
+        self.edges = float('NaN')
+        self.segments = float('NaN')
+        self.segmentmarkers = float('NaN')
+        self.vertexconnectivity = float('NaN')
+        self.elementconnectivity = float('NaN')
+        self.average_vertex_connectivity = 0
+
+    #set defaults
+        self.setdefaultparameters()
+
+    # }}}
+    def __repr__(self):  # {{{
+        string = "   2D tria Mesh (vertical):"
+
+        string = "%s\n%s" % (string, "\n      Elements and vertices:")
+        string = "%s\n%s" % (string, fielddisplay(self, "numberofelements", "number of elements"))
+        string = "%s\n%s" % (string, fielddisplay(self, "numberofvertices", "number of vertices"))
+        string = "%s\n%s" % (string, fielddisplay(self, "elements", "vertex indices of the mesh elements"))
+        string = "%s\n%s" % (string, fielddisplay(self, "x", "vertices x coordinate [m]"))
+        string = "%s\n%s" % (string, fielddisplay(self, "y", "vertices y coordinate [m]"))
+        string = "%s\n%s" % (string, fielddisplay(self, "edges", "edges of the 2d mesh (vertex1 vertex2 element1 element2)"))
+        string = "%s\n%s" % (string, fielddisplay(self, "numberofedges", "number of edges of the 2d mesh"))
+
+        string = "%s%s" % (string, "\n\n      Properties:")
+        string = "%s\n%s" % (string, fielddisplay(self, "vertexonboundary", "vertices on the boundary of the domain flag list"))
+        string = "%s\n%s" % (string, fielddisplay(self, 'vertexonbase', 'vertices on the bed of the domain flag list'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'vertexonsurface', 'vertices on the surface of the domain flag list'))
+        string = "%s\n%s" % (string, fielddisplay(self, "segments", "edges on domain boundary (vertex1 vertex2 element)"))
+        string = "%s\n%s" % (string, fielddisplay(self, "segmentmarkers", "number associated to each segment"))
+        string = "%s\n%s" % (string, fielddisplay(self, "vertexconnectivity", "list of elements connected to vertex_i"))
+        string = "%s\n%s" % (string, fielddisplay(self, "elementconnectivity", "list of elements adjacent to element_i"))
+        string = "%s\n%s" % (string, fielddisplay(self, "average_vertex_connectivity", "average number of vertices connected to one vertex"))
+
+        string = "%s%s" % (string, "\n\n      Projection:")
+        string = "%s\n%s" % (string, fielddisplay(self, "lat", "vertices latitude [degrees]"))
+        string = "%s\n%s" % (string, fielddisplay(self, "long", "vertices longitude [degrees]"))
+        string = "%s\n%s" % (string, fielddisplay(self, "epsg", "EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)"))
+        string = "%s\n%s" % (string, fielddisplay(self, "scale_factor", "Projection correction for volume, area, etc. computation"))
+        return string
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        #the connectivity is the averaged number of nodes linked to a
+        #given node through an edge. This connectivity is used to initially
+        #allocate memory to the stiffness matrix. A value of 16 seems to
+        #give a good memory / time ration. This value can be checked in
+        #trunk / test / Miscellaneous / runme.m
+        self.average_vertex_connectivity = 25.
+
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if(solution == 'LoveSolution'):
+            return
+
+        md = checkfield(md, 'fieldname', 'mesh.x', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        md = checkfield(md, 'fieldname', 'mesh.y', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        md = checkfield(md, 'fieldname', 'mesh.elements', 'NaN', 1, 'Inf', 1, '>', 0, 'values', np.arange(1, md.mesh.numberofvertices + 1))
+        md = checkfield(md, 'fieldname', 'mesh.elements', 'size', [md.mesh.numberofelements, 3])
+        if np.any(np.logical_not(m.ismember(np.arange(1, md.mesh.numberofvertices + 1), md.mesh.elements))):
+            md.checkmessage("orphan nodes have been found. Check the mesh outline")
+        md = checkfield(md, 'fieldname', 'mesh.numberofelements', '>', 0)
+        md = checkfield(md, 'fieldname', 'mesh.numberofvertices', '>', 0)
+        md = checkfield(md, 'fieldname', 'mesh.vertexonbase', 'size', [md.mesh.numberofvertices], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'mesh.vertexonsurface', 'size', [md.mesh.numberofvertices], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'mesh.average_vertex_connectivity', '>=', 9, 'message', "'mesh.average_vertex_connectivity' should be at least 9 in 2d")
+        if(np.size(self.scale_factor) > 1):
+            md = checkfield(md, 'fieldname', 'mesh.scale_factor', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+
+        if solution == 'ThermalSolution':
+            md.checkmessage("thermal not supported for 2d mesh")
+
+        return md
+    # }}}
+
+    def domaintype(self):  # {{{
+        return "2Dvertical"
+    # }}}
+
+    def dimension(self):  # {{{
+        return 2
+    # }}}
+
+    def elementtype(self):  # {{{
+        return "Tria"
+    # }}}
+
+    def vertexflags(self, value):  # {{{
+        flags = np.zeros((self.numberofvertices, ))
+        pos = self.segments[np.where(self.segmentmarkers == value), 0:2] - 1
+        flags[pos] = 1
+        return flags
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'name', 'md.mesh.domain_type', 'data', "Domain" + self.domaintype(), 'format', 'String')
+        WriteData(fid, prefix, 'name', 'md.mesh.domain_dimension', 'data', self.dimension(), 'format', 'Integer')
+        WriteData(fid, prefix, 'name', 'md.mesh.elementtype', 'data', self.elementtype(), 'format', 'String')
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'x', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'y', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'name', 'md.mesh.z', 'data', np.zeros(self.numberofvertices), 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'elements', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'numberofelements', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'numberofvertices', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'vertexonbase', 'format', 'BooleanMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'vertexonsurface', 'format', 'BooleanMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'average_vertex_connectivity', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'scale_factor', 'format', 'DoubleMat', 'mattype', 1)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dprisms.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dprisms.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dprisms.js	(revision 27955)
@@ -0,0 +1,165 @@
+//MESH3DPRISMS class definition
+//
+//   Usage:
+//      mesh=mesh3dprisms();
+
+function mesh3dprisms() {
+		this.setdefaultparameters = function() { // {{{)
+
+			//the connectivity is the averaged number of nodes linked to a
+			//given node through an edge. This connectivity is used to initially
+			//allocate memory to the stiffness matrix. A value of 16 seems to
+			//give a good memory/time ration. This value can be checked in
+			//trunk/test/Miscellaneous/runme.m
+			this.average_vertex_connectivity=25;
+		} // }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{[)
+
+			checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',NewArrayFillIncrement(md.mesh.numberofvertices,1,1));
+			checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements, 6]);
+
+            if(ArrayAnyEqual(ArrayIsMember(NewArrayFillIncrement(md.mesh.numberofvertices,1,1),ArraySort(ArrayUnique(MatrixToList(md.mesh.elements)))),0)){
+				//checkmessage(md,'orphan nodes have been found. Check the mesh outline'); @TODO
+                md.checkmessage('orphan nodes have been found. Check the mesh outline');
+			}
+			checkfield(md,'fieldname','mesh.numberoflayers','>=',0);
+			checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			checkfield(md,'fieldname','mesh.vertexonbase','size',[md.mesh.numberofvertices, 1],'values',[0, 1]);
+			checkfield(md,'fieldname','mesh.vertexonsurface','size',[md.mesh.numberofvertices, 1],'values',[0, 1]);
+			checkfield(md,'fieldname','mesh.z','>=',md.geometry.base-Math.pow(10, -10),'message','\'mesh.z\' lower than bedrock');
+			checkfield(md,'fieldname','mesh.z','<=',md.geometry.surface+Math.pow(10, -10),'message','\'mesh.z\' higher than surface elevation');
+			checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',24,'message','\'mesh.average_vertex_connectivity\' should be at least 24 in 3d');
+			if(this.scale_factor.length>1) checkfield(md,'fieldname','mesh.scale_factor','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+		} // }}}
+		this.disp = function()  { // {{{
+			console.log(sprintf('   3D prism Mesh:')); 
+
+			console.log(sprintf('\n      Elements and vertices of the original 2d mesh:'));
+			fielddisplay(this,'numberofelements2d','number of elements');
+			fielddisplay(this,'numberofvertices2d','number of vertices');
+			fielddisplay(this,'elements2d','vertex indices of the mesh elements');
+			fielddisplay(this,'x2d','vertices x coordinate [m]');
+			fielddisplay(this,'y2d','vertices y coordinate [m]');
+
+            console.log(sprintf('\n      Elements and vertices of the extruded 3d mesh:'));
+			fielddisplay(this,'numberofelements','number of elements');
+			fielddisplay(this,'numberofvertices','number of vertices');
+			fielddisplay(this,'elements','vertex indices of the mesh elements');
+			fielddisplay(this,'x','vertices x coordinate [m]');
+			fielddisplay(this,'y','vertices y coordinate [m]');
+			fielddisplay(this,'z','vertices z coordinate [m]');
+
+			console.log(sprintf('\n      Properties:'));
+			fielddisplay(this,'numberoflayers','number of extrusion layers');
+			fielddisplay(this,'vertexonbase','lower vertices flags list');
+			fielddisplay(this,'vertexonsurface','upper vertices flags list');
+			fielddisplay(this,'uppervertex','upper vertex list (NaN for vertex on the upper surface)');
+			fielddisplay(this,'upperelements','upper element list (NaN for element on the upper layer)');
+			fielddisplay(this,'lowervertex','lower vertex list (NaN for vertex on the lower surface)');
+			fielddisplay(this,'lowerelements','lower element list (NaN for element on the lower layer');
+			fielddisplay(this,'vertexonboundary','vertices on the boundary of the domain flag list');
+
+			fielddisplay(this,'vertexconnectivity','list of elements connected to vertex_i');
+			fielddisplay(this,'elementconnectivity','list of elements adjacent to element_i');
+			fielddisplay(this,'average_vertex_connectivity','average number of vertices connected to one vertex');
+
+			console.log(sprintf('\n      Extracted model:'));
+			fielddisplay(this,'extractedvertices','vertices extracted from the model');
+			fielddisplay(this,'extractedelements','elements extracted from the model');
+
+			console.log(sprintf('\n      Projection:'));
+			fielddisplay(this,'lat','vertices latitude [degrees]');
+			fielddisplay(this,'long','vertices longitude [degrees]');
+			fielddisplay(this,'epsg','EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
+			fielddisplay(self,"scale_factor","Projection correction for volume, area, etc. computation)");
+		} // }}}
+		this.marshall = function(md,prefix,fid) { // {{{
+			WriteData(fid,prefix,'name','md.mesh.domain_type','data','Domain' + this.domaintype(),'format','String');
+			WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',this.dimension(),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.elementtype','data',this.elementtype(),'format','String');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','z','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','numberoflayers','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','vertexonbase','format','BooleanMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','vertexonsurface','format','BooleanMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','lowerelements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','upperelements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','elements2d','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','numberofvertices2d','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','numberofelements2d','format','Integer');
+			WriteData(fid,prefix,'object',this,'class','mesh','fieldname','scale_factor','format','DoubleMat','mattype',1);
+		} // }}}
+        this.fix=function() { //{{{
+            //Transform objects into Float64Arrays:
+            this.x=FloatFix(this.x,this.numberofvertices); 
+            this.y=FloatFix(this.y,this.numberofvertices); 
+            this.z=FloatFix(this.y,this.numberofvertices); 
+            this.r=FloatFix(this.y,this.numberofvertices); 
+            this.edges=NaNFix(this.edges,NaN);
+            this.vertexonboundary=FloatFix(this.vertexonboundary,this.numberofvertices); 
+            this.segmentmarkers=FloatFix(this.segmentmarkers,this.segments.length);
+            this.extractedvertices=NaNFix(this.extractedvertices,NaN);
+            this.extractedelements=NaNFix(this.extractedelements,NaN);
+            this.lat=NaNFix(this.lat,NaN);
+            this.long=NaNFix(this.long,NaN);
+				this.scale_factor=NullFix(this.scale_factor,NaN);
+        }//}}}
+		this.domaintype = function() { // {{{)
+			return '3D';
+		} // }}}
+		this.dimension = function() { // {{{)
+			return 3;
+		} // }}}
+		this.elementtype = function() { // {{{)
+			return 'Penta';
+		} // }}}
+        this.classname = function () { //{{{
+            return "mesh3dprisms";
+        } //}}}
+
+	//properties 
+	// {{{
+        this.x                           = NaN;
+        this.y                           = NaN;
+        this.z                           = NaN;
+        this.elements                    = NaN;
+        this.numberoflayers              = 0;
+        this.numberofelements            = 0;
+        this.numberofvertices            = 0;
+
+        this.lat                         = NaN;
+        this.long                        = NaN;
+        this.epsg                        = 0;
+		this.scale_factor                = NaN;
+
+        this.vertexonbase                = NaN;
+        this.vertexonsurface             = NaN;
+        this.lowerelements               = NaN;
+        this.lowervertex                 = NaN;
+        this.upperelements               = NaN;
+        this.uppervertex                 = NaN;
+        this.vertexonboundary            = NaN;
+
+        this.vertexconnectivity          = NaN;
+        this.elementconnectivity         = NaN;
+        this.average_vertex_connectivity = 0;
+
+        this.x2d                         = NaN;
+        this.y2d                         = NaN;
+        this.elements2d                  = NaN;
+        this.numberofvertices2d          = 0;
+        this.numberofelements2d          = 0;
+
+        this.extractedvertices           = NaN;
+        this.extractedelements           = NaN;
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dprisms.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dprisms.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dprisms.m	(revision 27955)
@@ -0,0 +1,249 @@
+%MESH3DPRISMS class definition
+%
+%   Usage:
+%      mesh=mesh3dprisms();
+
+classdef mesh3dprisms
+	properties (SetAccess=public) 
+		x                           = NaN;
+		y                           = NaN;
+		z                           = NaN;
+		elements                    = NaN;
+		numberoflayers              = 0;
+		numberofelements            = 0;
+		numberofvertices            = 0;
+
+		lat                         = NaN;
+		long                        = NaN;
+		epsg                        = 0;
+		proj                        = '';
+		scale_factor                = NaN;
+
+		vertexonbase                = NaN;
+		vertexonsurface             = NaN;
+		lowerelements               = NaN;
+		lowervertex                 = NaN;
+		upperelements               = NaN;
+		uppervertex                 = NaN;
+		vertexonboundary            = NaN;
+
+		vertexconnectivity          = NaN;
+		elementconnectivity         = NaN;
+		average_vertex_connectivity = 0;
+
+		x2d                         = NaN;
+		y2d                         = NaN;
+		elements2d                  = NaN;
+		segments2d                  = NaN;
+		numberofvertices2d          = 0;
+		numberofelements2d          = 0;
+
+		extractedvertices           = NaN;
+		extractedelements           = NaN;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model selfect is
+			% loaded. Update old properties here
+
+			%2014 Oct. 1st
+			if isstruct(self),
+				oldself=self;
+				%Assign property values from struct
+				self=structtoobj(mesh3dprisms(),oldself);
+				if isfield(oldself,'hemisphere'),
+					disp('md.mesh.hemisphere has been automatically converted to EPSG code');
+					if strcmpi(oldself.hemisphere,'n'),
+						self.epsg=3413;
+						self.proj=epsg2proj(3413);
+					else
+						self.epsg=3031;
+						self.proj=epsg2proj(3031);
+					end
+				end
+			end
+
+		end% }}}
+	end
+	methods
+		function self = mesh3dprisms(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=mesh3dprisms();
+					object=varargin{1};
+					fields=fieldnames(object);
+					for i=1:length(fields)
+						field=fields{i};
+						if ismember(field,properties('mesh3dprisms')),
+							self.(field)=object.(field);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%the connectivity is the averaged number of nodes linked to a
+			%given node through an edge. This connectivity is used to initially
+			%allocate memory to the stiffness matrix. A value of 16 seems to
+			%give a good memory/time ration. This value can be checked in
+			%trunk/test/Miscellaneous/runme.m
+			self.average_vertex_connectivity=25;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			
+			if strcmpi(solution,'LoveSolution'), return; end
+
+			md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',1:md.mesh.numberofvertices);
+			md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements 6]);
+			if any(~ismember(1:md.mesh.numberofvertices,sort(unique(md.mesh.elements(:)))));
+				md = checkmessage(md,'orphan nodes have been found. Check the mesh outline');
+			end
+			md = checkfield(md,'fieldname','mesh.numberoflayers','>=',0);
+			md = checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			md = checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			md = checkfield(md,'fieldname','mesh.vertexonboundary','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+			md = checkfield(md,'fieldname','mesh.vertexonbase','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+			md = checkfield(md,'fieldname','mesh.vertexonsurface','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+			md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',24,'message','''mesh.average_vertex_connectivity'' should be at least 24 in 3d');
+
+			%Check that mesh follows the geometry
+			md = checkfield(md,'fieldname','mesh.z','>=',md.geometry.base-10^-10,'message','''mesh.z'' lower than bedrock');
+			md = checkfield(md,'fieldname','mesh.z','<=',md.geometry.surface+10^-10,'message','''mesh.z'' higher than surface elevation');
+			if any(max(abs(project2d(md,md.mesh.z,1)-project2d(md,md.geometry.base,1)))>1e-10),
+				md = checkmessage(md,'md.mesh.z is not consistent with md.geometry.base, you changed the geometry after extrusion');
+			end
+			if any(max(abs(project2d(md,md.mesh.z,md.mesh.numberoflayers)-project2d(md,md.geometry.surface,1)))>1e-10),
+				md = checkmessage(md,'md.mesh.z is not consistent with md.geometry.surface, you changed the geometry after extrusion !!');
+			end
+			if any(max(abs(project2d(md,md.mesh.z,md.mesh.numberoflayers)-project2d(md,md.mesh.z,1) - project2d(md,md.geometry.thickness,1)))>1e-10),
+				md = checkmessage(md,'md.mesh.z is not consistent with md.geometry.thickness, you changed the geometry after extrusion !!');
+			end
+			if numel(md.mesh.scale_factor)>1,
+				md = checkfield(md,'fieldname','mesh.scale_factor','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   3D prism Mesh:')); 
+
+			disp(sprintf('\n      Elements and vertices of the original 2d mesh:'));
+			fielddisplay(self,'numberofelements2d','number of elements');
+			fielddisplay(self,'numberofvertices2d','number of vertices');
+			fielddisplay(self,'elements2d','vertex indices of the mesh elements');
+			fielddisplay(self,'segments2d','edges on 2d domain boundary (vertex1 vertex2 element)');
+			fielddisplay(self,'x2d','vertices x coordinate [m]');
+			fielddisplay(self,'y2d','vertices y coordinate [m]');
+
+			disp(sprintf('\n      Elements and vertices of the extruded 3d mesh:'));
+			fielddisplay(self,'numberofelements','number of elements');
+			fielddisplay(self,'numberofvertices','number of vertices');
+			fielddisplay(self,'elements','vertex indices of the mesh elements');
+			fielddisplay(self,'x','vertices x coordinate [m]');
+			fielddisplay(self,'y','vertices y coordinate [m]');
+			fielddisplay(self,'z','vertices z coordinate [m]');
+
+			disp(sprintf('\n      Properties:'));
+			fielddisplay(self,'numberoflayers','number of extrusion layers');
+			fielddisplay(self,'vertexonbase','lower vertices flags list');
+			fielddisplay(self,'vertexonsurface','upper vertices flags list');
+			fielddisplay(self,'uppervertex','upper vertex list (NaN for vertex on the upper surface)');
+			fielddisplay(self,'upperelements','upper element list (NaN for element on the upper layer)');
+			fielddisplay(self,'lowervertex','lower vertex list (NaN for vertex on the lower surface)');
+			fielddisplay(self,'lowerelements','lower element list (NaN for element on the lower layer');
+			fielddisplay(self,'vertexonboundary','vertices on the boundary of the domain flag list');
+
+			fielddisplay(self,'vertexconnectivity','list of elements connected to vertex_i');
+			fielddisplay(self,'elementconnectivity','list of elements adjacent to element_i');
+			fielddisplay(self,'average_vertex_connectivity','average number of vertices connected to one vertex');
+
+			disp(sprintf('\n      Extracted model:'));
+			fielddisplay(self,'extractedvertices','vertices extracted from the model');
+			fielddisplay(self,'extractedelements','elements extracted from the model');
+
+			disp(sprintf('\n      Projection:'));
+			fielddisplay(self,'lat','vertices latitude [degrees]');
+			fielddisplay(self,'long','vertices longitude [degrees]');
+			fielddisplay(self,'epsg','EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
+			fielddisplay(self,'proj','PROJ.4 compatible projection string');
+			fielddisplay(self,'scale_factor','Projection correction for volume, area, etc. computation)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.mesh.domain_type','data',['Domain' domaintype(self)],'format','String');
+			WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',dimension(self),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.elementtype','data',elementtype(self),'format','String');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','z','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberoflayers','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonboundary','format','BooleanMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonbase','format','BooleanMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonsurface','format','BooleanMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','lowerelements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','upperelements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','elements2d','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','segments2d','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofvertices2d','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofelements2d','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','scale_factor','format','DoubleMat','mattype',1);
+			if md.transient.isoceancoupling,
+				WriteData(fid,prefix,'object',self,'class','mesh','fieldname','lat','format','DoubleMat','mattype',1);
+				WriteData(fid,prefix,'object',self,'class','mesh','fieldname','long','format','DoubleMat','mattype',1);
+			end
+		end % }}}
+		function type = domaintype(self) % {{{
+			type = '3D';
+		end % }}}
+		function d = dimension(self) % {{{
+			d = 3;
+		end % }}}
+		function s = elementtype(self) % {{{
+			s = 'Penta';
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			fprintf(fid,'%s.mesh=new mesh3dprisms();\n',modelname);
+			writejs1Darray(fid,[modelname '.mesh.x'],self.x);
+			writejs1Darray(fid,[modelname '.mesh.y'],self.y);
+			writejs1Darray(fid,[modelname '.mesh.z'],self.z);
+			writejs2Darray(fid,[modelname '.mesh.elements'],self.elements);
+			writejsdouble(fid,[modelname '.mesh.numberoflayers'],self.numberoflayers);
+			writejsdouble(fid,[modelname '.mesh.numberofelements'],self.numberofelements);
+			writejsdouble(fid,[modelname '.mesh.numberofvertices'],self.numberofvertices);
+			writejs1Darray(fid,[modelname '.mesh.lat'],self.lat);
+			writejs1Darray(fid,[modelname '.mesh.long'],self.long);
+			writejs1Darray(fid,[modelname '.mesh.epsg'],self.epsg);
+			writejs1Darray(fid,[modelname '.mesh.proj'],self.proj);
+			writejs1Darray(fid,[modelname '.mesh.vertexonbase'],self.vertexonbase);
+			writejs1Darray(fid,[modelname '.mesh.vertexonsurface'],self.vertexonsurface);
+			writejs1Darray(fid,[modelname '.mesh.lowerelements'],self.lowerelements);
+			writejs1Darray(fid,[modelname '.mesh.upperelements'],self.upperelements);
+			writejs1Darray(fid,[modelname '.mesh.uppervertex'],self.uppervertex);
+			writejs1Darray(fid,[modelname '.mesh.vertexonboundary'],self.vertexonboundary);
+
+			writejs2Darray(fid,[modelname '.mesh.vertexconnectivity'],self.vertexconnectivity);
+			writejs2Darray(fid,[modelname '.mesh.elementconnectivity'],self.elementconnectivity);
+			writejsdouble(fid,[modelname '.mesh.average_vertex_connectivity'],self.average_vertex_connectivity);
+			
+			writejs1Darray(fid,[modelname '.mesh.x2d'],self.x2d);
+			writejs1Darray(fid,[modelname '.mesh.y2d'],self.y2d);
+			writejs2Darray(fid,[modelname '.mesh.elements2d'],self.elements2d);
+			writejs2Darray(fid,[modelname '.mesh.segments2d'],self.segments2d);
+			writejsdouble(fid,[modelname '.mesh.numberofvertices2d'],self.numberofvertices2d);
+			writejsdouble(fid,[modelname '.mesh.numberofelements2d'],self.numberofelements2d);
+
+			writejs1Darray(fid,[modelname '.mesh.extractedvertices'],self.extractedvertices);
+			writejs1Darray(fid,[modelname '.mesh.extractedelements'],self.extractedelements);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dprisms.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dprisms.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dprisms.py	(revision 27955)
@@ -0,0 +1,165 @@
+import numpy as np
+from fielddisplay import fielddisplay
+from checkfield import *
+import MatlabFuncs as m
+from WriteData import WriteData
+
+
+class mesh3dprisms(object):
+    """
+    MESH3DPRISMS class definition
+
+       Usage:
+          mesh3d = mesh3dprisms()
+    """
+
+    def __init__(self):  # {{{
+        self.x = float('NaN')
+        self.y = float('NaN')
+        self.z = float('NaN')
+        self.elements = float('NaN')
+        self.numberoflayers = 0
+        self.numberofelements = 0
+        self.numberofvertices = 0
+
+        self.lat = float('NaN')
+        self.long = float('NaN')
+        self.epsg = 0
+        self.scale_factor = float('NaN')
+
+        self.vertexonbase = float('NaN')
+        self.vertexonsurface = float('NaN')
+        self.lowerelements = float('NaN')
+        self.lowervertex = float('NaN')
+        self.upperelements = float('NaN')
+        self.uppervertex = float('NaN')
+        self.vertexonboundary = float('NaN')
+
+        self.vertexconnectivity = float('NaN')
+        self.elementconnectivity = float('NaN')
+        self.average_vertex_connectivity = 0
+
+        self.x2d = float('NaN')
+        self.y2d = float('NaN')
+        self.elements2d = float('NaN')
+        self.numberofvertices2d = 0
+        self.numberofelements2d = 0
+
+        self.extractedvertices = float('NaN')
+        self.extractedelements = float('NaN')
+
+    #set defaults
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = "   3D prism Mesh:"
+
+        string = "%s\n%s" % (string, "\n      Elements and vertices of the original 2d mesh3dprisms:")
+
+        string = "%s\n%s" % (string, fielddisplay(self, "numberofelements2d", "number of elements"))
+        string = "%s\n%s" % (string, fielddisplay(self, "numberofvertices2d", "number of vertices"))
+        string = "%s\n%s" % (string, fielddisplay(self, "elements2d", "vertex indices of the mesh3dprisms elements"))
+        string = "%s\n%s" % (string, fielddisplay(self, "x2d", "vertices x coordinate [m]"))
+        string = "%s\n%s" % (string, fielddisplay(self, "y2d", "vertices y coordinate [m]"))
+
+        string = "%s\n%s" % (string, "\n\n      Elements and vertices of the extruded 3d mesh3dprisms:")
+        string = "%s\n%s" % (string, fielddisplay(self, "numberofelements", "number of elements"))
+        string = "%s\n%s" % (string, fielddisplay(self, "numberofvertices", "number of vertices"))
+        string = "%s\n%s" % (string, fielddisplay(self, "elements", "vertex indices of the mesh3dprisms elements"))
+        string = "%s\n%s" % (string, fielddisplay(self, "x", "vertices x coordinate [m]"))
+        string = "%s\n%s" % (string, fielddisplay(self, "y", "vertices y coordinate [m]"))
+        string = "%s\n%s" % (string, fielddisplay(self, "z", "vertices z coordinate [m]"))
+
+        string = "%s%s" % (string, "\n\n      Properties:")
+        string = "%s\n%s" % (string, fielddisplay(self, "numberoflayers", "number of extrusion layers"))
+        string = "%s\n%s" % (string, fielddisplay(self, "vertexonbase", "lower vertices flags list"))
+        string = "%s\n%s" % (string, fielddisplay(self, "vertexonsurface", "upper vertices flags list"))
+        string = "%s\n%s" % (string, fielddisplay(self, "uppervertex", "upper vertex list (NaN for vertex on the upper surface)"))
+        string = "%s\n%s" % (string, fielddisplay(self, "upperelements", "upper element list (NaN for element on the upper layer)"))
+        string = "%s\n%s" % (string, fielddisplay(self, "lowervertex", "lower vertex list (NaN for vertex on the lower surface)"))
+        string = "%s\n%s" % (string, fielddisplay(self, "lowerelements", "lower element list (NaN for element on the lower layer)"))
+        string = "%s\n%s" % (string, fielddisplay(self, "vertexonboundary", "vertices on the boundary of the domain flag list"))
+        string = "%s\n%s" % (string, fielddisplay(self, "vertexconnectivity", "list of elements connected to vertex_i"))
+        string = "%s\n%s" % (string, fielddisplay(self, "elementconnectivity", "list of elements adjacent to element_i"))
+        string = "%s\n%s" % (string, fielddisplay(self, "average_vertex_connectivity", "average number of vertices connected to one vertex"))
+
+        string = "%s%s" % (string, "\n\n      Extracted model:")
+        string = "%s\n%s" % (string, fielddisplay(self, "extractedvertices", "vertices extracted from the model"))
+        string = "%s\n%s" % (string, fielddisplay(self, "extractedelements", "elements extracted from the model"))
+
+        string = "%s%s" % (string, "\n\n      Projection:")
+        string = "%s\n%s" % (string, fielddisplay(self, "lat", "vertices latitude [degrees]"))
+        string = "%s\n%s" % (string, fielddisplay(self, "long", "vertices longitude [degrees]"))
+        string = "%s\n%s" % (string, fielddisplay(self, "epsg", "EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)"))
+        string = "%s\n%s" % (string, fielddisplay(self, "scale_factor", "Projection correction for volume, area, etc. computation"))
+        return string
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        #the connectivity is the averaged number of nodes linked to a
+        #given node through an edge. This connectivity is used to initially
+        #allocate memory to the stiffness matrix. A value of 16 seems to
+        #give a good memory / time ration. This value can be checked in
+        #trunk / test / Miscellaneous / runme.m
+        self.average_vertex_connectivity = 25
+
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        md = checkfield(md, 'fieldname', 'mesh.x', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        md = checkfield(md, 'fieldname', 'mesh.y', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        md = checkfield(md, 'fieldname', 'mesh.z', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        md = checkfield(md, 'fieldname', 'mesh.elements', 'NaN', 1, 'Inf', 1, '>', 0, 'values', np.arange(1, md.mesh.numberofvertices + 1))
+        md = checkfield(md, 'fieldname', 'mesh.elements', 'size', [md.mesh.numberofelements, 6])
+        if np.any(np.logical_not(m.ismember(np.arange(1, md.mesh.numberofvertices + 1), md.mesh.elements))):
+            md.checkmessage("orphan nodes have been found. Check the mesh3dprisms outline")
+        md = checkfield(md, 'fieldname', 'mesh.numberoflayers', '>=', 0)
+        md = checkfield(md, 'fieldname', 'mesh.numberofelements', '>', 0)
+        md = checkfield(md, 'fieldname', 'mesh.numberofvertices', '>', 0)
+        md = checkfield(md, 'fieldname', 'mesh.vertexonbase', 'size', [md.mesh.numberofvertices], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'mesh.vertexonsurface', 'size', [md.mesh.numberofvertices], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'mesh.average_vertex_connectivity', '>=', 24, 'message', "'mesh.average_vertex_connectivity' should be at least 24 in 3d")
+        if(np.size(self.scale_factor) > 1):
+            md = checkfield(md, 'fieldname', 'mesh.scale_factor', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+
+        return md
+    # }}}
+
+    def domaintype(self):  # {{{
+        return "3D"
+    # }}}
+
+    def dimension(self):  # {{{
+        return 3
+    # }}}
+
+    def elementtype(self):  # {{{
+        return "Penta"
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'name', 'md.mesh.domain_type', 'data', "Domain" + self.domaintype(), 'format', 'String')
+        WriteData(fid, prefix, 'name', 'md.mesh.domain_dimension', 'data', self.dimension(), 'format', 'Integer')
+        WriteData(fid, prefix, 'name', 'md.mesh.elementtype', 'data', self.elementtype(), 'format', 'String')
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'x', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'y', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'z', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'elements', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'numberoflayers', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'numberofelements', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'numberofvertices', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'vertexonbase', 'format', 'BooleanMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'vertexonsurface', 'format', 'BooleanMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'lowerelements', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'upperelements', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'average_vertex_connectivity', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'elements2d', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'numberofvertices2d', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'numberofelements2d', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'scale_factor', 'format', 'DoubleMat', 'mattype', 1)
+        if md.transient.isoceancoupling:
+            WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'lat', 'format', 'DoubleMat', 'mattype', 1)
+            WriteData(fid, prefix, 'object', self, 'class', 'mesh', 'fieldname', 'long', 'format', 'DoubleMat', 'mattype', 1)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dsurface.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dsurface.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dsurface.js	(revision 27955)
@@ -0,0 +1,139 @@
+//MESH3DSURFACE class definition
+//
+//   Usage:
+//      mesh3dsurface= new mesh3dsurface();
+
+function mesh3dsurface () {
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+
+			//the connectivity is the averaged number of nodes linked to a
+			//given node through an edge. This connectivity is used to initially
+			//allocate memory to the stiffness matrix. A value of 16 seems to
+			//give a good memory/time ration. This value can be checked in
+			//trunk/test/Miscellaneous/runme.m
+			this.average_vertex_connectivity=25;
+		}
+		// }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   2D tria Mesh (3D surface):")); 
+
+			console.log(sprintf("\n      Elements and vertices:"));
+			fielddisplay(this,"numberofelements","number of elements");
+			fielddisplay(this,"numberofvertices","number of vertices");
+			fielddisplay(this,"elements","vertex indices of the mesh elements");
+			fielddisplay(this,"x","vertices x coordinate [m]");
+			fielddisplay(this,"y","vertices y coordinate [m]");
+			fielddisplay(this,"z","vertices z coordinate [m]");
+			fielddisplay(this,"edges","edges of the 2d mesh (vertex1 vertex2 element1 element2)");
+			fielddisplay(this,"numberofedges","number of edges of the 2d mesh");
+
+			console.log(sprintf("\n      Properties:"));
+			fielddisplay(this,"vertexonboundary","vertices on the boundary of the domain flag list");
+			fielddisplay(this,"segments","edges on domain boundary (vertex1 vertex2 element)");
+			fielddisplay(this,"segmentmarkers","number associated to each segment");
+			fielddisplay(this,"vertexconnectivity","list of elements connected to vertex_i");
+			fielddisplay(this,"elementconnectivity","list of elements adjacent to element_i");
+			fielddisplay(this,"average_vertex_connectivity","average number of vertices connected to one vertex");
+
+			console.log(sprintf("\n      Extracted model:"));
+			fielddisplay(this,"extractedvertices","vertices extracted from the model");
+			fielddisplay(this,"extractedelements","elements extracted from the model");
+
+			console.log(sprintf("\n      Projection:"));
+			fielddisplay(this,"lat","vertices latitude [degrees]");
+			fielddisplay(this,"long","vertices longitude [degrees]");
+			fielddisplay(this,"r","vertices radius [m]");
+		} //}}}
+		this.classname = function () { //{{{
+			return "mesh3dsurface";
+		} //}}}
+		this.domaintype=function (){ // {{{
+			return '3Dsurface';
+		} // }}}
+		this.dimension = function () { //{{{
+			return 2;
+		} //}}}
+		this.elementtype = function() {//{{{
+			return 'Tria';
+		} // }}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.lat','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.long','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.r','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',NewArrayFillIncrement(md.mesh.numberofvertices,1,1));
+			checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements, 3]);
+			if(ArrayAnyEqual(ArrayIsMember(NewArrayFillIncrement(md.mesh.numberofvertices,1,1),ArraySort(ArrayUnique(MatrixToList(md.mesh.elements)))),0)){
+				md.checkmessage('orphan nodes have been found. Check the mesh outline');
+			}
+			checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message',"'mesh.average_vertex_connectivity' should be at least 9 in 2d");
+			checkfield(md,'fieldname','mesh.segments','NaN',1,'Inf',1,'>',0,'size',[NaN, 3]);
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'name','md.mesh.domain_type','data','Domain' + this.domaintype(),'format','String');
+			WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',this.dimension(),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.elementtype','data',this.elementtype(),'format','String');
+			WriteData(fid,prefix,'object',this,'fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','z','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','lat','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','long','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','r','format','DoubleMat','mattype',1);
+			//WriteData(fid,prefix,'object',this,'fieldname','z','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',this,'fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','average_vertex_connectivity','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','vertexonboundary','format','DoubleMat','mattype',1);
+			//WriteData(fid,prefix,'object',this,'fieldname','segments','format','DoubleMat','mattype',3);
+		}//}}}
+		this.fix=function() { //{{{
+			//Transform objects into Float64Arrays:
+			this.x=FloatFix(this.x,this.numberofvertices); 
+			this.y=FloatFix(this.y,this.numberofvertices); 
+			this.z=FloatFix(this.y,this.numberofvertices); 
+			this.r=FloatFix(this.y,this.numberofvertices); 
+			this.edges=NullFix(this.edges,NaN);
+			this.vertexonboundary=FloatFix(this.vertexonboundary,this.numberofvertices); 
+			this.segmentmarkers=FloatFix(this.segmentmarkers,this.segments.length);
+			this.extractedvertices=NullFix(this.extractedvertices,NaN);
+			this.extractedelements=NullFix(this.extractedelements,NaN);
+			this.lat=NullFix(this.lat,NaN);
+			this.long=NullFix(this.long,NaN);
+		}//}}}
+
+	//properties 
+	// {{{
+		this.x                           = NaN;
+		this.y                           = NaN;
+		this.z                           = NaN;
+		this.elements                    = NaN;
+		this.numberofelements            = 0;
+		this.numberofvertices            = 0;
+		this.numberofedges               = 0;
+
+		this.lat                         = NaN;
+		this.long                        = NaN;
+		this.r                           = NaN;
+
+		this.vertexonboundary            = NaN;
+		this.edges                       = NaN;
+		this.segments                    = NaN;
+		this.segmentmarkers              = NaN;
+		this.vertexconnectivity          = NaN;
+		this.elementconnectivity         = NaN;
+		this.average_vertex_connectivity = 0;
+
+		this.extractedvertices           = NaN;
+		this.extractedelements           = NaN;
+
+		this.setdefaultparameters();
+		//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dsurface.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dsurface.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dsurface.m	(revision 27955)
@@ -0,0 +1,282 @@
+%MESH3DSURFACE class definition
+%
+%   Usage:
+%      mesh3dsurface=mesh3dsurface();
+
+classdef mesh3dsurface
+	properties (SetAccess=public) 
+		x                           = NaN;
+		y                           = NaN;
+		z                           = NaN;
+		elements                    = NaN;
+		numberofelements            = 0;
+		numberofvertices            = 0;
+		numberofedges               = 0;
+
+		lat                         = NaN;
+		long                        = NaN;
+		r                           = NaN;
+		area                        = NaN;
+
+		vertexonboundary            = NaN;
+		edges                       = NaN;
+		segments                    = NaN;
+		segmentmarkers              = NaN;
+		vertexconnectivity          = NaN;
+		elementconnectivity         = NaN;
+		average_vertex_connectivity = 0;
+
+		extractedvertices           = NaN;
+		extractedelements           = NaN;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model selfect is
+			% loaded. Update old properties here
+
+			%2014 Oct. 1st
+			if isstruct(self),
+				oldself=self;
+				%Assign property values from struct
+				self=structtoobj(mesh3dsurface(),oldself);
+				%if isfield(oldself,'hemisphere'), %NOTE: not ever needed, epsg is not a field anymore.
+				%	disp('md.mesh.hemisphere has been automatically converted to EPSG code');
+				%	if strcmpi(oldself.hemisphere,'n'),
+				%		self.epsg=3413;
+				%	else
+				%		self.epsg=3031;
+				%	end
+				%end
+			end
+
+		end% }}}
+	end
+	methods
+		function self = mesh3dsurface(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=mesh3dsurface();
+					object=varargin{1};
+					fields=fieldnames(object);
+					for i=1:length(fields)
+						field=fields{i};
+						if ismember(field,properties('mesh3dsurface')),
+							self.(field)=object.(field);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function obj = setdefaultparameters(obj) % {{{
+
+			%The connectivity is the average number of nodes linked to a given 
+			%node through an edge. This connectivity is used to initially 
+			%allocate memory to the stiffness matrix. A value of 16 seems to 
+			%give a good memory/time ratio. This value can be checked in 
+			%test/NightlyRun/runme.py.
+			obj.average_vertex_connectivity=25;
+		end % }}}
+		function md = checkconsistency(obj,md,solution,analyses) % {{{
+
+			if strcmpi(solution,'LoveSolution'), return; end
+
+			md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.lat','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.long','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.r','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',1:md.mesh.numberofvertices);
+			md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements 3]);
+			if any(~ismember(1:md.mesh.numberofvertices,sort(unique(md.mesh.elements(:)))));
+				md = checkmessage(md,'orphan nodes have been found; check the mesh outline');
+			end
+			md = checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			md = checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message','''mesh.average_vertex_connectivity'' should be at least 9 in 2d');
+
+			if strcmp(solution,'ThermalSolution')
+				md = checkmessage(md,'thermal not supported for 2d mesh');
+			end
+		end % }}}
+		function disp(obj) % {{{
+			disp(sprintf('   3D tria Mesh (surface):')); 
+
+			disp(sprintf('\n      Elements and vertices:'));
+			fielddisplay(obj,'numberofelements','number of elements');
+			fielddisplay(obj,'numberofvertices','number of vertices');
+			fielddisplay(obj,'elements','vertex indices of the mesh elements');
+			fielddisplay(obj,'x','vertices x coordinate [m]');
+			fielddisplay(obj,'y','vertices y coordinate [m]');
+			fielddisplay(obj,'z','vertices z coordinate [m]');
+			fielddisplay(obj,'lat','vertices latitude [degrees]');
+			fielddisplay(obj,'long','vertices longitude [degrees]');
+			fielddisplay(obj,'r','vertices radius [m]');
+			fielddisplay(obj,'area','elemental areas [m^2]');
+			
+			fielddisplay(obj,'edges','edges of the 2d mesh (vertex1 vertex2 element1 element2)');
+			fielddisplay(obj,'numberofedges','number of edges of the 2d mesh');
+
+			disp(sprintf('\n      Properties:'));
+			fielddisplay(obj,'vertexonboundary','vertices on the boundary of the domain flag list');
+			fielddisplay(obj,'segments','edges on domain boundary (vertex1 vertex2 element)');
+			fielddisplay(obj,'segmentmarkers','number associated to each segment');
+			fielddisplay(obj,'vertexconnectivity','list of elements connected to vertex_i');
+			fielddisplay(obj,'elementconnectivity','list of elements adjacent to element_i');
+			fielddisplay(obj,'average_vertex_connectivity','average number of vertices connected to one vertex');
+
+			disp(sprintf('\n      Extracted model:'));
+			fielddisplay(obj,'extractedvertices','vertices extracted from the model');
+			fielddisplay(obj,'extractedelements','elements extracted from the model'); 
+		end % }}}
+		function marshall(obj,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.mesh.domain_type','data',['Domain' domaintype(obj)],'format','String');
+			WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',dimension(obj),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.elementtype','data',elementtype(obj),'format','String');
+			WriteData(fid,prefix,'object',obj,'fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',obj,'fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',obj,'fieldname','z','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',obj,'fieldname','lat','data',obj.lat,'format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',obj,'fieldname','long','data',obj.long,'format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',obj,'fieldname','r','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'name','md.mesh.z','data',zeros(obj.numberofvertices,1),'format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',obj,'fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',obj,'fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',obj,'fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',obj,'fieldname','average_vertex_connectivity','format','Integer');
+			WriteData(fid,prefix,'object',obj,'fieldname','vertexonboundary','format','DoubleMat','mattype',1);
+		end % }}}
+		function t = domaintype(obj) % {{{
+			t = '3Dsurface';
+		end % }}}
+		function d = dimension(obj) % {{{
+			d = 2;
+		end % }}}
+		function s = elementtype(obj) % {{{
+			s = 'Tria';
+		end % }}}
+		function [x y z elements is2d isplanet] = processmesh(self,options) % {{{
+
+			isplanet = 1;
+			is2d     = 0;
+
+			elements = self.elements;
+			x        = self.x;
+			y        = self.y;
+			z        = self.z;
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			fprintf(fid,'%s.mesh=new mesh3dsurface();\n',modelname);
+			writejs1Darray(fid,[modelname '.mesh.x'],self.x);
+			writejs1Darray(fid,[modelname '.mesh.y'],self.y);
+			writejs1Darray(fid,[modelname '.mesh.z'],self.z);
+			writejs2Darray(fid,[modelname '.mesh.elements'],self.elements);
+			writejsdouble(fid,[modelname '.mesh.numberofelements'],self.numberofelements);
+			writejsdouble(fid,[modelname '.mesh.numberofvertices'],self.numberofvertices);
+			writejsdouble(fid,[modelname '.mesh.numberofedges'],self.numberofedges);
+			writejs1Darray(fid,[modelname '.mesh.lat'],self.lat);
+			writejs1Darray(fid,[modelname '.mesh.long'],self.long);
+			writejs1Darray(fid,[modelname '.mesh.r'],self.r);
+			writejs1Darray(fid,[modelname '.mesh.area'],self.area);
+			writejs1Darray(fid,[modelname '.mesh.vertexonboundary'],self.vertexonboundary);
+			writejs2Darray(fid,[modelname '.mesh.edges'],self.edges);
+			writejs2Darray(fid,[modelname '.mesh.segments'],self.segments);
+			writejs2Darray(fid,[modelname '.mesh.segmentmarkers'],self.segmentmarkers);
+			writejs2Darray(fid,[modelname '.mesh.vertexconnectivity'],self.vertexconnectivity);
+			writejs2Darray(fid,[modelname '.mesh.elementconnectivity'],self.elementconnectivity);
+			writejsdouble(fid,[modelname '.mesh.average_vertex_connectivity'],self.average_vertex_connectivity);
+			writejs1Darray(fid,[modelname '.mesh.extractedvertices'],self.extractedvertices);
+			writejs1Darray(fid,[modelname '.mesh.extractedelements'],self.extractedelements);
+
+		end % }}}
+		function export(self,varargin) % {{{
+
+			options=pairoptions(varargin{:});
+			filename=getfieldvalue(options,'filename');
+			format=getfieldvalue(options,'format','shp');
+			geometry=getfieldvalue(options,'geometry','line');
+			index=getfieldvalue(options,'index',[]);
+			proj=getfieldvalue(options,'projection','');
+
+			%prepare contours: 
+			contours= struct([]);
+			if strcmpi(geometry,'point'),
+				for i=1:self.numberofvertices,
+					contours(i).x = self.long(i);
+					contours(i).y = self.lat(i);
+					contours(i).id = i;
+					contours(i).Geometry = 'Point';
+				end
+			elseif strcmpi(geometry,'line'),
+				count=1;
+				for i=1:self.numberofelements,
+					el=self.elements(i,:);
+					%first line:
+					contours(count).x = [self.long(el(1)) self.long(el(2))];
+					contours(count).y = [self.lat(el(1)) self.lat(el(2))];
+					contours(count).Geometry = 'Line';
+
+					%second line:
+					contours(count+1).x = [self.long(el(2)) self.long(el(3))];
+					contours(count+1).y = [self.lat(el(2)) self.lat(el(3))];
+					contours(count+1).Geometry = 'Line';
+
+					%third line:
+					contours(count+2).x = [self.long(el(3)) self.long(el(1))];
+					contours(count+2).y = [self.lat(el(3)) self.lat(el(1))];
+					contours(count+2).Geometry = 'Line';
+					
+					%increase count: 
+					count = count+3;
+				end
+			elseif strcmpi(geometry,'polygon'),
+				% TODO: Refactor the following to reduce repeated code, or 
+				%		leave as is because it is more readable?
+				if isempty(index),
+					for i=1:self.numberofelements,
+						el=self.elements(i,:);
+						contours(i).x=[self.long(el(1)) self.long(el(2)) self.long(el(3)) self.long(el(1))];
+						contours(i).y=[self.lat(el(1)) self.lat(el(2)) self.lat(el(3)) self.lat(el(1))];
+						contours(i).Id = i;
+						contours(i).Geometry = 'Polygon';
+					end
+				else
+					for i=1:length(index),
+						el=self.elements(index(i),:);
+						contours(i).x=[self.long(el(1)) self.long(el(2)) self.long(el(3)) self.long(el(1))];
+						contours(i).y=[self.lat(el(1)) self.lat(el(2)) self.lat(el(3)) self.lat(el(1))];
+						contours(i).id = index(i);
+						contours(i).Geometry = 'Polygon';
+					end
+				end
+			else
+				error(sprintf('mesh3dsurface ''export'' error message: geometry %s not supported yet (should be ''point'' or ''line'' or ''polygon'')',geometry));
+			end
+
+			%write file: 
+			if strcmpi(format,'shp'),
+				shpwrite(contours,filename);
+			elseif strcmpi(format,'exp'),
+				expwrite(contours,filename);
+			else
+				error(sprintf('mesh3dsurface ''export'' error message: file format %s not supported yet',format));
+			end
+
+			%write projection file: 
+			if ~isempty(proj),
+				proj2shpprj(filename,proj);
+			end
+
+			%write style file: 
+			applyqgisstyle(filename,'mesh');
+
+
+
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dsurface.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dsurface.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dsurface.py	(revision 27955)
@@ -0,0 +1,271 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from MatlabFuncs import *
+from model import *
+from WriteData import WriteData
+
+
+class mesh3dsurface(object):
+    """MESH3DSURFACE class definition
+
+    Usage:
+        mesh3dsurface = mesh3dsurface()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.x = np.nan
+        self.y = np.nan
+        self.z = np.nan
+        self.elements = np.nan
+        self.numberofelements = 0
+        self.numberofvertices = 0
+        self.numberofedges = 0
+
+        self.lat = np.nan
+        self.long = np.nan
+        self.r = np.nan
+
+        self.vertexonboundary = np.nan
+        self.edges = np.nan
+        self.segments = np.nan
+        self.segmentmarkers = np.nan
+        self.vertexconnectivity = np.nan
+        self.elementconnectivity = np.nan
+        self.average_vertex_connectivity = 0
+
+        self.extractedvertices = np.nan
+        self.extractedelements = np.nan
+
+        nargs = len(args)
+        if nargs == 0:
+            self.setdefaultparameters()
+        elif nargs == 1:
+            self = mesh3dsurface()
+            arg = args[1]
+            fields = fieldnames(arg)
+            for i in range(len(fields)):
+                field = fields[i]
+                if ismember(field, properties('mesh3dsurface')):
+                    self.field = arg.field
+        else:
+            raise RuntimeError('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   2D tria Mesh (surface):'
+
+        s += '\n      Elements and vertices:'
+        s = "%s\n%s" % (s, fielddisplay(self, 'numberofelements', 'number of elements'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'numberofvertices', 'number of vertices'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'elements', 'vertex indices of the mesh elements'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'x', 'vertices x coordinate [m]'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'y', 'vertices y coordinate [m]'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'z', 'vertices z coordinate [m]'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'lat', 'vertices latitude [degrees]'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'long', 'vertices longitude [degrees]'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'r', 'vertices radius [m]'))
+
+        s = "%s\n%s" % (s, fielddisplay(self, 'edges', 'edges of the 2d mesh (vertex1 vertex2 element1 element2)'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'numberofedges', 'number of edges of the 2d mesh'))
+
+        s += '\n      Properties:'
+        s = "%s\n%s" % (s, fielddisplay(self, 'vertexonboundary', 'vertices on the boundary of the domain flag list'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'segments', 'edges on domain boundary (vertex1 vertex2 element)'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'segmentmarkers', 'number associated to each segment'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'vertexconnectivity', 'list of elements connected to vertex_i'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'elementconnectivity', 'list of elements adjacent to element_i'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'average_vertex_connectivity', 'average number of vertices connected to one vertex'))
+
+        s += '\n      Extracted model():'
+        s = "%s\n%s" % (s, fielddisplay(self, 'extractedvertices', 'vertices extracted from the model()'))
+        s = "%s\n%s" % (s, fielddisplay(self, 'extractedelements', 'elements extracted from the model()'))
+
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        #The connectivity is the average number of nodes linked to a given node 
+        #through an edge. This connectivity is used to initially allocate 
+        #memory to the stiffness matrix. A value of 16 seems to give a good 
+        #memory/time ratio. This value can be checked in 
+        #test/NightlyRun/runme.py.
+        self.average_vertex_connectivity = 25
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        md = checkfield(md, 'fieldname', 'mesh.x', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        md = checkfield(md, 'fieldname', 'mesh.y', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        md = checkfield(md, 'fieldname', 'mesh.z', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        md = checkfield(md, 'fieldname', 'mesh.lat', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        md = checkfield(md, 'fieldname', 'mesh.long', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        md = checkfield(md, 'fieldname', 'mesh.r', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        md = checkfield(md, 'fieldname', 'mesh.elements', 'NaN', 1, 'Inf', 1, '>', 0, 'values', np.arange(1, md.mesh.numberofvertices + 1))
+        md = checkfield(md, 'fieldname', 'mesh.elements', 'size', [md.mesh.numberofelements, 3])
+        if np.any(np.logical_not(np.in1d(np.arange(1, md.mesh.numberofvertices + 1), md.mesh.elements.flat))):
+            md = md.checkmessage('orphan nodes have been found; check the mesh outline')
+
+        md = checkfield(md, 'fieldname', 'mesh.numberofelements', '>', 0)
+        md = checkfield(md, 'fieldname', 'mesh.numberofvertices', '>', 0)
+        md = checkfield(md, 'fieldname', 'mesh.average_vertex_connectivity', '>=', 9, 'message', '"mesh.average_vertex_connectivity" should be at least 9 in 2d')
+
+        if solution == 'ThermalSolution':
+            md = md.checkmessage('thermal not supported for 2d mesh')
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'name', 'md.mesh.domain_type', 'data', 'Domain' + self.domaintype(), 'format', 'String')
+        WriteData(fid, prefix, 'name', 'md.mesh.domain_dimension', 'data', self.dimension(), 'format', 'Integer')
+        WriteData(fid, prefix, 'name', 'md.mesh.elementtype', 'data', self.elementtype(), 'format', 'String')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'x', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'y', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'z', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'lat', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'long', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'r', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'name', 'md.mesh.z', 'data', np.zeros(md.mesh.numberofvertices), 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'elements', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'numberofelements', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'numberofvertices', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'average_vertex_connectivity', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'vertexonboundary', 'format', 'DoubleMat', 'mattype', 1)
+    # }}}
+
+    def domaintype(self):  # {{{
+        return '3Dsurface'
+    # }}}
+
+    def dimension(self):  # {{{
+        return 2
+    # }}}
+
+    def elementtype(self):  # {{{
+        return 'Tria'
+    # }}}
+
+    def processmesh(self, options):  # {{{
+        isplanet = 1
+        is2d = 0
+
+        elements = self.elements
+        x = self.x
+        y = self.y
+        z = self.z
+
+        return x, y, z, elements, is2d, isplanet
+    # }}}
+
+    def savemodeljs(self, fid, modelname):  # {{{
+        fid.write('  #s.mesh = new mesh3dsurface()\n' % modelname)
+        writejs1Darray(fid, [modelname, '.mesh.x'], self.x)
+        writejs1Darray(fid, [modelname, '.mesh.y'], self.y)
+        writejs1Darray(fid, [modelname, '.mesh.z'], self.z)
+        writejs2Darray(fid, [modelname, '.mesh.elements'], self.elements)
+        writejsdouble(fid, [modelname, '.mesh.numberofelements'], self.numberofelements)
+        writejsdouble(fid, [modelname, '.mesh.numberofvertices'], self.numberofvertices)
+        writejsdouble(fid, [modelname, '.mesh.numberofedges'], self.numberofedges)
+        writejs1Darray(fid, [modelname, '.mesh.lat'], self.lat)
+        writejs1Darray(fid, [modelname, '.mesh.long'], self.long)
+        writejs1Darray(fid, [modelname, '.mesh.r'], self.r)
+        writejs1Darray(fid, [modelname, '.mesh.vertexonboundary'], self.vertexonboundary)
+        writejs2Darray(fid, [modelname, '.mesh.edges'], self.edges)
+        writejs2Darray(fid, [modelname, '.mesh.segments'], self.segments)
+        writejs2Darray(fid, [modelname, '.mesh.segmentmarkers'], self.segmentmarkers)
+        writejs2Darray(fid, [modelname, '.mesh.vertexconnectivity'], self.vertexconnectivity)
+        writejs2Darray(fid, [modelname, '.mesh.elementconnectivity'], self.elementconnectivity)
+        writejsdouble(fid, [modelname, '.mesh.average_vertex_connectivity'], self.average_vertex_connectivity)
+        writejs1Darray(fid, [modelname, '.mesh.extractedvertices'], self.extractedvertices)
+        writejs1Darray(fid, [modelname, '.mesh.extractedelements'], self.extractedelements)
+    # }}}
+
+    def export(self, *args):  # {{{
+        options = pairoptions(*args)
+
+        filename    = options.getfieldvalue('filename')
+        format      = options.getfieldvalue('format', 'shp')
+        geometry    = options.getfieldvalue('geometry', 'line')
+        index       = options.getfieldvalue('index', [])
+        proj        = options.getfieldvalue('projection', '')
+
+        #prepare contours:
+        contours = []
+        if geometry == 'point':
+            for i in range(len(self.numberofvertices)):
+                contour             = OrderedStruct()
+                contour.x           = self.long[i]
+                contour.y           = self.lat[i]
+                contour.id          = i
+                contour.Geometry    = 'Point'
+                contours[i]         = contour
+        elif geometry == 'line':
+            count = 0
+            for i in range(len(self.numberofelements)): 
+                el = self.elements[i]
+
+                #first line:
+                contour             = OrderedStruct()
+                contour.x           = [self.long[el[0]], self.long[el[1]]]
+                contour.y           = [self.lat[el[0]], self.lat[el[1]]]
+                contour.Geometry    = 'Line' 
+                contours[count]     = contour
+
+                #second line:
+                contour             = OrderedStruct()
+                contour.x           = [self.long[el[1]], self.long[el[2]]]
+                contour.y           = [self.lat[el[1]], self.lat[el[2]]]
+                contour.Geometry    = 'Line'
+                contours[count + 1] = contour
+
+                #second line:
+                contour             = OrderedStruct()
+                contour.x           = [self.long[el[2]], self.long[el[0]]]
+                contour.y           = [self.lat[el[2]], self.lat[el[0]]]
+                contour.Geometry    = 'Line'
+                contours[count + 2] = contour
+
+                #increase count:
+                count += 3
+        elif geometry == 'polygon':
+            # TODO: Refactor the following to reduce repeated code, or 
+            #       leave as is because it is more readable?
+            if index == []:
+                for i in range(len(self.numberofelements)):
+                    el = self.elements[i]
+
+                    contour             = OrderedStruct()
+                    contour.x           = [self.long[el[0]], self.long[el[1]], self.long[el[2]]]
+                    contour.y           = [self.lat[el[0]], self.lat[el[1]], self.lat[el[2]]]
+                    contour.Id          = i
+                    contour.Geometry    = 'Polygon'
+                    contours[i]         = contour
+            else:
+                for i in range(len(index)):
+                    el = self.elements[index[i]]
+
+                    contour             = OrderedStruct()
+                    contour.x           = [self.long[el[0]], self.long[el[1]], self.long[el[2]]]
+                    contour.y           = [self.lat[el[0]], self.lat[el[1]], self.lat[el[2]]]
+                    contour.Id          = index[i]
+                    contour.Geometry    = 'Polygon'
+                    contours[i]         = contour
+        else:
+            raise RuntimeError("mesh3dsurface 'export' error message: geometry %s not supported yet (should be 'point' or 'line' or 'polygon')" % geometry)
+
+        #write file:
+        if format == 'shp':
+            shpwrite(contours, filename)
+        elif format == 'exp':
+            expwrite(contours, filename)
+        else:
+            raise RuntimeError("mesh3dsurface 'export' error message: file format %s not supported yet" % format)
+
+        #write projection file:
+        if proj != '':
+            proj2shpprj(filename, proj)
+
+        #write style file:
+        applyqgisstyle(filename, 'mesh')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dtetras.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dtetras.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/mesh3dtetras.m	(revision 27955)
@@ -0,0 +1,194 @@
+%MESH3DTETRAS class definition
+%
+%   Usage:
+%      mesh=mesh3dtetras();
+
+classdef mesh3dtetras
+	properties (SetAccess=public) 
+		x                           = NaN;
+		y                           = NaN;
+		z                           = NaN;
+		elements                    = NaN;
+		numberoflayers              = 0;
+		numberofelements            = 0;
+		numberofvertices            = 0;
+
+		lat                         = NaN;
+		long                        = NaN;
+		epsg                        = 0;
+		proj                        = '';
+		scale_factor                = NaN;
+
+		vertexonbase                = NaN;
+		vertexonsurface             = NaN;
+		lowerelements               = NaN;
+		lowervertex                 = NaN;
+		upperelements               = NaN;
+		uppervertex                 = NaN;
+		vertexonboundary            = NaN;
+
+		vertexconnectivity          = NaN;
+		elementconnectivity         = NaN;
+		average_vertex_connectivity = 0;
+
+		x2d                         = NaN;
+		y2d                         = NaN;
+		elements2d                  = NaN;
+		numberofvertices2d          = 0;
+		numberofelements2d          = 0;
+
+		extractedvertices           = NaN;
+		extractedelements           = NaN;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model selfect is
+			% loaded. Update old properties here
+
+			%2014 Oct. 1st
+			if isstruct(self),
+				oldself=self;
+				%Assign property values from struct
+				self=structtoobj(mesh3dtetras(),oldself);
+				if isfield(oldself,'hemisphere'),
+					disp('md.mesh.hemisphere has been automatically converted to EPSG code');
+					if strcmpi(oldself.hemisphere,'n'),
+						self.epsg=3413;
+						self.proj=epsg2proj(3413);
+					else
+						self.epsg=3031;
+						self.proj=epsg2proj(3031);
+					end
+				end
+			end
+
+		end% }}}
+	end
+	methods
+		function self = mesh3dtetras(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('mesh3dtetras');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%the connectivity is the averaged number of nodes linked to a
+			%given node through an edge. This connectivity is used to initially
+			%allocate memory to the stiffness matrix. A value of 16 seems to
+			%give a good memory/time ration. This value can be checked in
+			%trunk/test/Miscellaneous/runme.m
+			self.average_vertex_connectivity=25;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			
+			if strcmpi(solution,'LoveSolution'), return; end
+
+			md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',1:md.mesh.numberofvertices);
+			md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements 4]);
+			if any(~ismember(1:md.mesh.numberofvertices,sort(unique(md.mesh.elements(:)))));
+				md = checkmessage(md,'orphan nodes have been found. Check the mesh outline');
+			end
+			md = checkfield(md,'fieldname','mesh.numberoflayers','>=',0);
+			md = checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			md = checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			md = checkfield(md,'fieldname','mesh.vertexonbase','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+			md = checkfield(md,'fieldname','mesh.vertexonsurface','size',[md.mesh.numberofvertices 1],'values',[0 1]);
+			md = checkfield(md,'fieldname','mesh.z','>=',md.geometry.base-10^-10,'message','''mesh.z'' lower than bedrock');
+			md = checkfield(md,'fieldname','mesh.z','<=',md.geometry.surface+10^-10,'message','''mesh.z'' higher than surface elevation');
+			md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',24,'message','''mesh.average_vertex_connectivity'' should be at least 24 in 3d');
+			if numel(md.mesh.scale_factor)>1,
+				md = checkfield(md,'fieldname','mesh.scale_factor','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   3D tetra Mesh:')); 
+
+			disp(sprintf('\n      Elements and vertices of the original 2d mesh:'));
+			fielddisplay(self,'numberofelements2d','number of elements');
+			fielddisplay(self,'numberofvertices2d','number of vertices');
+			fielddisplay(self,'elements2d','vertex indices of the mesh elements');
+			fielddisplay(self,'x2d','vertices x coordinate [m]');
+			fielddisplay(self,'y2d','vertices y coordinate [m]');
+
+			disp(sprintf('\n      Elements and vertices of the extruded 3d mesh:'));
+			fielddisplay(self,'numberofelements','number of elements');
+			fielddisplay(self,'numberofvertices','number of vertices');
+			fielddisplay(self,'elements','vertex indices of the mesh elements');
+			fielddisplay(self,'x','vertices x coordinate [m]');
+			fielddisplay(self,'y','vertices y coordinate [m]');
+			fielddisplay(self,'z','vertices z coordinate [m]');
+
+			disp(sprintf('\n      Properties:'));
+			fielddisplay(self,'numberoflayers','number of extrusion layers');
+			fielddisplay(self,'vertexonbase','lower vertices flags list');
+			fielddisplay(self,'vertexonsurface','upper vertices flags list');
+			fielddisplay(self,'uppervertex','upper vertex list (NaN for vertex on the upper surface)');
+			fielddisplay(self,'upperelements','upper element list (NaN for element on the upper layer)');
+			fielddisplay(self,'lowervertex','lower vertex list (NaN for vertex on the lower surface)');
+			fielddisplay(self,'lowerelements','lower element list (NaN for element on the lower layer');
+			fielddisplay(self,'vertexonboundary','vertices on the boundary of the domain flag list');
+
+			fielddisplay(self,'vertexconnectivity','list of elements connected to vertex_i');
+			fielddisplay(self,'elementconnectivity','list of elements adjacent to element_i');
+			fielddisplay(self,'average_vertex_connectivity','average number of vertices connected to one vertex');
+
+			disp(sprintf('\n      Extracted model:'));
+			fielddisplay(self,'extractedvertices','vertices extracted from the model');
+			fielddisplay(self,'extractedelements','elements extracted from the model');
+
+			disp(sprintf('\n      Projection:'));
+			fielddisplay(self,'lat','vertices latitude [degrees]');
+			fielddisplay(self,'long','vertices longitude [degrees]');
+			fielddisplay(self,'epsg','EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
+			fielddisplay(self,'proj','PROJ.4 compatible projection string');
+			fielddisplay(self,'scale_factor','Projection correction for volume, area, etc. computation)');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'name','md.mesh.domain_type','data',['Domain' domaintype(self)],'format','String');
+			WriteData(fid,prefix,'name','md.mesh.domain_dimension','data',dimension(self),'format','Integer');
+			WriteData(fid,prefix,'name','md.mesh.elementtype','data',elementtype(self),'format','String');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','z','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberoflayers','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonbase','format','BooleanMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','vertexonsurface','format','BooleanMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','lowerelements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','upperelements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','scale_factor','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','elements2d','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofvertices2d','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','mesh','fieldname','numberofelements2d','format','Integer');
+		end % }}}
+		function t = domaintype(self) % {{{
+			t = '3D';
+		end % }}}
+		function d = dimension(self) % {{{
+			d = 3;
+		end % }}}
+		function s = elementtype(self) % {{{
+			s = 'Tetra';
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/miscellaneous.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/miscellaneous.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/miscellaneous.js	(revision 27955)
@@ -0,0 +1,39 @@
+//MISCELLANEOUS class definition
+//
+//   Usage:
+//      miscellaneous=new miscellaneous();
+
+function miscellaneous (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   miscellaneous parameters:'));
+
+		fielddisplay(this,'notes','notes in a cell of strings');
+		fielddisplay(this,'name','model name');
+		fielddisplay(this,'dummy','empty field to store some data');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "miscellaneous";
+	}// }}}
+		this.checkconsistency= function(md,solution,analyses) {// {{{
+
+			checkfield(md,'fieldname','miscellaneous.name','empty',1);
+		}// }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','name','format','String');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.notes = '';
+	this.name  = '';
+	this.dummy = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/miscellaneous.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/miscellaneous.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/miscellaneous.m	(revision 27955)
@@ -0,0 +1,63 @@
+%MISCELLANEOUS class definition
+%
+%   Usage:
+%      miscellaneous=miscellaneous();
+
+classdef miscellaneous
+	properties (SetAccess=public) 
+		notes = '';
+		name  = '';
+		dummy = struct();
+	end
+	methods
+		function self = miscellaneous(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','miscellaneous.name','empty',1);
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Add some information about the model for future reference
+			username = getenv('USER');
+			issmver = num2str(issmversion());
+			today   = date();
+			host    =  oshostname();
+			self.notes = [' Model created on ' today ' by ' username ' on ' host newline() ...
+				' ISSM version: ' issmver newline() ...
+				' (path: ' pwd() ')'];
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   miscellaneous parameters:'));
+
+			fielddisplay(self,'notes','notes in a cell of strings');
+			fielddisplay(self,'name','model name');
+			fielddisplay(self,'dummy','empty field to store some data');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','name','format','String');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			writejsstring(fid,[modelname '.miscellaneous.notes'],self.notes);
+			writejsstring(fid,[modelname '.miscellaneous.name'],self.name);
+			if strcmpi(class(self.dummy),'double'),
+				if size(self.dummy,2)==1,
+					writejs1Darray(fid,[modelname '.miscellaneous.dummy'],self.dummy);
+				else
+					writejs2Darray(fid,[modelname '.miscellaneous.dummy'],self.dummy);
+				end
+			end
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/miscellaneous.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/miscellaneous.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/miscellaneous.py	(revision 27955)
@@ -0,0 +1,44 @@
+from collections import OrderedDict
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class miscellaneous(object):
+    """
+    MISCELLANEOUS class definition
+
+       Usage:
+          miscellaneous = miscellaneous()
+    """
+
+    def __init__(self):  # {{{
+        self.notes = ''
+        self.name = ''
+        self.dummy = OrderedDict()
+
+    #set defaults
+        self.setdefaultparameters()
+
+    # }}}
+    def __repr__(self):  # {{{
+        string = '   miscellaneous parameters:'
+
+        string = "%s\n%s" % (string, fielddisplay(self, 'notes', 'notes in a cell of strings'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'name', 'model name'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'dummy', 'empty field to store some data'))
+        return string
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        md = checkfield(md, 'fieldname', 'miscellaneous.name', 'empty', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  #  {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'name', 'format', 'String')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/misfit.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/misfit.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/misfit.m	(revision 27955)
@@ -0,0 +1,112 @@
+%MISFIT class definition
+%
+%   Usage:
+%      misfit=misfit();
+%      misfit=misfit('name','SurfaceAltimetry',...
+%                    'definitionstring','Outputdefinition1',... 
+%							'model_string','Surface',...
+%                    'observation_string','SurfaceObservations',...
+%                    'observation',md.geometry.surface,...
+%                    'timeinterpolation','nearestneighbor',...
+%                    'local',1,...
+%                    'weights',ones(md.mesh.numberofvertices,1),...
+%                    'weights_string','WeightsSurfaceObservations');
+%
+%
+
+classdef misfit
+	properties (SetAccess=public)
+		%misfit
+		name               = '';
+		definitionstring   = ''; %string that identifies this output definition uniquely, from 'Outputdefinition[1-100]'
+		model_string       = ''; %string for field that is modeled
+		observation        = NaN; %observed field that we compare the model against
+		observation_string = ''; %string for observed field.
+		timeinterpolation  = '';
+		local              = 1;
+		weights            = NaN; %weight coefficients for every vertex
+		weights_string     = ''; %string to identify this particular set of weights
+	end
+	
+	methods
+		function self = extrude(self,md) % {{{
+			if ~isnan(self.weights)
+				self.weights=project3d(md,'vector',self.weights,'type','node');
+			end
+			if ~isnan(self.observation)
+				self.observation=project3d(md,'vector',self.observation,'type','node');
+			end
+		end % }}}
+		function self = misfit(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name=getfieldvalue(options,'name','');
+				self.definitionstring=getfieldvalue(options,'definitionstring');
+				self.model_string=getfieldvalue(options,'model_string');
+				self.observation=getfieldvalue(options,'observation',NaN);
+				self.observation_string=getfieldvalue(options,'observation_string');
+				self.local=getfieldvalue(options,'local',1);
+				self.timeinterpolation=getfieldvalue(options,'timeinterpolation','nearestneighbor');
+				self.weights=getfieldvalue(options,'weights',NaN);
+				self.weights_string=getfieldvalue(options,'weights_string','');
+
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			self.local=1;
+			self.timeinterpolation='nearestneighbor';
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ischar(self.name),
+				error('misfit error message: ''name'' field should be a string!');
+			end
+			OutputdefinitionStringArray={};
+			for i=1:100
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+			md = checkfield(md,'fieldname','self.definitionstring','field',self.definitionstring,'values',OutputdefinitionStringArray);
+
+			if ~ischar(self.timeinterpolation),
+				error('misfit error message: ''timeinterpolation'' field should be a string!');
+			end
+			md = checkfield(md,'fieldname','self.observation','field',self.observation,'timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','self.timeinterpolation','field',self.timeinterpolation,'values',{'nearestneighbor'});
+			md = checkfield(md,'fieldname','self.weights','field',self.weights,'timeseries',1,'NaN',1,'Inf',1);
+
+		end % }}}
+		function md = disp(self) % {{{
+		
+			disp(sprintf('   Misfit:\n'));
+
+			fielddisplay(self,'name','identifier for this misfit response');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from ''Outputdefinition[1-10]''');
+			fielddisplay(self,'model_string','string for field that is modeled');
+			fielddisplay(self,'observation','observed field that we compare the model against');
+			fielddisplay(self,'observation_string','observation string');
+			fielddisplay(self,'local','is the response local to the elements, or global? (default is 1)''');
+			fielddisplay(self,'timeinterpolation','interpolation routine used to interpolate misfit between two time steps (default is ''nearestneighbor''');
+			fielddisplay(self,'weights','weights (at vertices) to apply to the misfit');
+			fielddisplay(self,'weights_string','string for weights for identification purposes');
+
+		end % }}}
+		function md = marshall(self,prefix,md,fid) % {{{
+
+		WriteData(fid,prefix,'data',self.name,'name','md.misfit.name','format','String');
+		WriteData(fid,prefix,'data',self.definitionstring,'name','md.misfit.definitionstring','format','String');
+		WriteData(fid,prefix,'data',self.model_string,'name','md.misfit.model_string','format','String');
+		WriteData(fid,prefix,'data',self.observation,'name','md.misfit.observation','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'data',self.observation_string,'name','md.misfit.observation_string','format','String');
+		WriteData(fid,prefix,'data',self.local,'name','md.misfit.local','format','Integer');
+		WriteData(fid,prefix,'data',self.timeinterpolation,'name','md.misfit.timeinterpolation','format','String');
+		WriteData(fid,prefix,'data',self.weights,'name','md.misfit.weights','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'data',self.weights_string,'name','md.misfit.weights_string','format','String');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/misfit.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/misfit.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/misfit.py	(revision 27955)
@@ -0,0 +1,97 @@
+import numpy as np
+from project3d import project3d
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class misfit(object):
+    """
+    MISFIT class definition
+
+    Usage:
+        misfit = misfit()
+        misfit = misfit(name = 'SurfaceAltimetry',
+                    definitionstring = 'Outputdefinition1',
+            model_string = 'Surface',
+                    observation_string = 'SurfaceObservations',
+                     observation = md.geometry.surface,
+                        timeinterpolation = 'nearestneighbor',
+                        local = 1,
+                        weights = np.ones((md.mesh.numberofvertices, 1)),
+                        weights_string = 'WeightsSurfaceObservations')
+    """
+
+    def __init__(self, name=None, definitionstring=None, model_string=None, observation=None, observation_string=None, timeinterpolation=None, local=None, weights=None, weights_string=None, cumulated=None):  # {{{
+        self.name = name if name is not None else ''
+        #string that identifies this output definition uniquely, from 'Outputdefinition[1 - 100]'
+        self.definitionstring = definitionstring if definitionstring is not None else ''
+        #string for field that is modeled
+        self.model_string = model_string if model_string is not None else ''
+        #observed field that we compare the model against
+        self.observation = observation if observation is not None else float('NaN')
+        #string for observed field.
+        self.observation_string = observation_string if observation_string is not None else ''
+        self.timeinterpolation = timeinterpolation if timeinterpolation is not None else 'nearestneighbor'
+        self.local = local if local is not None else 1
+        #weight coefficients for every vertex
+        self.weights = weights if weights is not None else float('NaN')
+        #string to identify this particular set of weights
+        self.weights_string = weights_string if weights_string is not None else ''
+        #do we cumulate misfit through time?
+        self.cumulated = cumulated if cumulated is not None else float('NaN')
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = '   Misfit:'
+
+        string = "%s\n%s" % (string, fielddisplay(self, 'name', 'identifier for this misfit response'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'definitionstring', 'string that identifies this output definition uniquely, from "Outputdefinition[1 - 10]"'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'model_string', 'string for field that is modeled'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'observation', 'observed field that we compare the model against'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'observation_string', 'observation string'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'local', 'is the response local to the elements, or global? (default is 1)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'timeinterpolation', 'interpolation routine used to interpolate misfit between two time steps (default is "nearestneighbor"'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'weights', 'weights (at vertices) to apply to the misfit'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'weights_string', 'string for weights for identification purposes'))
+        return string
+    # }}}
+
+    def extrude(self, md):  # {{{
+        if not np.any(np.isnan(self.weights)):
+            self.weights = project3d(md, 'vector', self.weights, 'type', 'node')
+        if not np.any(np.isnan(self.observation)):
+            self.observation = project3d(md, 'vector', self.observation, 'type', 'node')
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if type(self.name) != str:
+            raise TypeError('misfit error message: "name" field should be a string!')
+
+        OutputdefinitionStringArray = []
+        for i in range(100):
+            OutputdefinitionStringArray.append('Outputdefinition' + str(i))
+
+        md = checkfield(md, 'fieldname', 'self.definitionstring', 'field', self.definitionstring, 'values', OutputdefinitionStringArray)
+        if type(self.timeinterpolation) != str:
+            raise TypeError('misfit error message: "timeinterpolation" field should be a string!')
+
+        md = checkfield(md, 'fieldname', 'self.observation', 'field', self.observation, 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'self.timeinterpolation', 'field', self.timeinterpolation, 'values', ['nearestneighbor'])
+        md = checkfield(md, 'fieldname', 'self.weights', 'field', self.weights, 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  #  {{{
+        WriteData(fid, prefix, 'data', self.name, 'name', 'md.misfit.name', 'format', 'String')
+        WriteData(fid, prefix, 'data', self.definitionstring, 'name', 'md.misfit.definitionstring', 'format', 'String')
+        WriteData(fid, prefix, 'data', self.model_string, 'name', 'md.misfit.model_string', 'format', 'String')
+        WriteData(fid, prefix, 'data', self.observation, 'name', 'md.misfit.observation', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'data', self.observation_string, 'name', 'md.misfit.observation_string', 'format', 'String')
+        WriteData(fid, prefix, 'data', self.local, 'name', 'md.misfit.local', 'format', 'Integer')
+        WriteData(fid, prefix, 'data', self.timeinterpolation, 'name', 'md.misfit.timeinterpolation', 'format', 'String')
+        WriteData(fid, prefix, 'data', self.weights, 'name', 'md.misfit.weights', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'data', self.weights_string, 'name', 'md.misfit.weights_string', 'format', 'String')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/mismipbasalforcings.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/mismipbasalforcings.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/mismipbasalforcings.m	(revision 27955)
@@ -0,0 +1,95 @@
+%MISMIP BASAL FORCINGS class definition
+%
+%   Usage:
+%      mismipbasalforcings=mismipbasalforcings();
+
+classdef mismipbasalforcings
+	properties (SetAccess=public) 
+		groundedice_melting_rate  = NaN;
+		meltrate_factor           = NaN;
+		threshold_thickness       = 0.;
+		upperdepth_melt           = 0.;
+		geothermalflux            = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1); 
+			self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1); %bedrock only gets geothermal flux
+		end % }}}
+		function self = mismipbasalforcings(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(mismipbasalforcings(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.groundedice_melting_rate),
+				self.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.groundedice_melting_rate specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%default values for melting parameterization
+			self.meltrate_factor        = 0.2;
+			self.threshold_thickness    = 75;
+			self.upperdepth_melt        = -100;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.ismasstransport==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'universal',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'universal',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',1);
+			end
+			if ismember('ThermalAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.isthermal==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'universal',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+			end
+			if isnan(md.geometry.bed),
+				md = checkmessage(md,['requesting mismip basal melting parameterization, but bathymetry is absent!']);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   MISMIP+ basal melt parameterization:'));
+
+			fielddisplay(self,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+			fielddisplay(self,'meltrate_factor','Melt-rate rate factor [1/yr] (sign is opposite to MISMIP+ benchmark to remain consistent with ISSM convention of positive values for melting)');
+			fielddisplay(self,'threshold_thickness','threshold thickness for saturation of basal melting [m]');
+			fielddisplay(self,'upperdepth_melt','depth above which the melt rate is zero [m]');
+			fielddisplay(self,'geothermalflux','geothermal heat flux [W/m^2]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+			if yts~=365.2422*24.*3600.
+				disp('WARNING: value of yts for MISMIP+ runs different from ISSM default!');
+			end
+
+			WriteData(fid,prefix,'name','md.basalforcings.model','data',3,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','name','md.basalforcings.groundedice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','name','md.basalforcings.geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','meltrate_factor','format','DoubleMat','mattype',1,'scale',1./yts)
+			WriteData(fid,prefix,'object',self,'fieldname','threshold_thickness','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','upperdepth_melt','format','Double')
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/mismipbasalforcings.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/mismipbasalforcings.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/mismipbasalforcings.py	(revision 27955)
@@ -0,0 +1,84 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class mismipbasalforcings(object):
+    """MISMIP Basal Forcings class definition
+
+    Usage:
+        mismipbasalforcings = mismipbasalforcings()
+    """
+
+    def __init__(self):  # {{{
+        self.groundedice_melting_rate = np.nan
+        self.meltrate_factor          = np.nan
+        self.threshold_thickness      = 0.
+        self.upperdepth_melt          = 0.
+        self.geothermalflux           = np.nan
+        self.setdefaultparameters()
+    # }}}
+    def __repr__(self):  # {{{
+        s = '   MISMIP + basal melt parameterization\n'
+        s += '{}\n'.format(fielddisplay(self, "groundedice_melting_rate", "basal melting rate (positive if melting) [m / yr]"))
+        s += '{}\n'.format(fielddisplay(self, "meltrate_factor", "Melt - rate rate factor [1 / yr] (sign is opposite to MISMIP + benchmark to remain consistent with ISSM convention of positive values for melting)"))
+        s += '{}\n'.format(fielddisplay(self, "threshold_thickness", "Threshold thickness for saturation of basal melting [m]"))
+        s += '{}\n'.format(fielddisplay(self, "upperdepth_melt", "Depth above which melt rate is zero [m]"))
+        s += '{}\n'.format(fielddisplay(self, "geothermalflux", "Geothermal heat flux [W / m^2]"))
+        return s
+    # }}}
+    def extrude(self, md):  # {{{
+        self.groundedice_melting_rate = project3d(md, 'vector', self.groundedice_melting_rate, 'type', 'node', 'layer', 1)
+        self.geothermalflux = project3d(md, 'vector', self.geothermalflux, 'type', 'node', 'layer', 1)  #bedrock only gets geothermal flux
+        return self
+    # }}}
+    def initialize(self, md):  # {{{
+        if np.all(np.isnan(self.groundedice_melting_rate)):
+            self.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices))
+            print('no basalforcings.groundedice_melting_rate specified: values set as zero')
+        if np.all(np.isnan(self.geothermalflux)):
+            self.geothermalflux = np.zeros((md.mesh.numberofvertices))
+            print("      no basalforcings.geothermalflux specified: values set as zero")
+        return self
+    # }}}
+    def setdefaultparameters(self):  # {{{
+        # default values for melting parameterization
+        self.meltrate_factor = 0.2
+        self.threshold_thickness = 75.
+        self.upperdepth_melt = -100.
+        return self
+    # }}}
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if 'MasstransportAnalysis' in analyses and not solution == 'TransientSolution' and not md.transient.ismasstransport:
+            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.meltrate_factor', '>=', 0, 'numel', [1])
+            md = checkfield(md, 'fieldname', 'basalforcings.threshold_thickness', '>=', 0, 'numel', [1])
+            md = checkfield(md, 'fieldname', 'basalforcings.upperdepth_melt', '<=', 0, 'numel', [1])
+        if 'BalancethicknessAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'basalforcings.meltrate_factor', '>=', 0, 'numel', [1])
+            md = checkfield(md, 'fieldname', 'basalforcings.threshold_thickness', '>=', 0, 'numel', [1])
+            md = checkfield(md, 'fieldname', 'basalforcings.upperdepth_melt', '<=', 0, 'numel', [1])
+        if 'ThermalAnalysis' in analyses and not (solution == 'TransientSolution' and not md.transient.isthermal):
+            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.meltrate_factor', '>=', 0, 'numel', [1])
+            md = checkfield(md, 'fieldname', 'basalforcings.threshold_thickness', '>=', 0, 'numel', [1])
+            md = checkfield(md, 'fieldname', 'basalforcings.upperdepth_melt', '<=', 0, 'numel', [1])
+            md = checkfield(md, 'fieldname', 'basalforcings.geothermalflux', 'NaN', 1, 'Inf', 1, 'timeseries', 1, '>=', 0)
+        return md
+    # }}}
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+        if yts != 365.2422 * 24. * 3600.:
+            print('WARNING: value of yts for MISMIP + runs different from ISSM default!')
+        WriteData(fid, prefix, 'name', 'md.basalforcings.model', 'data', 3, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'groundedice_melting_rate', 'format', 'DoubleMat', 'name', 'md.basalforcings.groundedice_melting_rate', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'geothermalflux', 'name', 'md.basalforcings.geothermalflux', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'meltrate_factor', 'format', 'Double', 'scale', 1. / yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'threshold_thickness', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'upperdepth_melt', 'format', 'Double')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/mmeadditionalsolidearthsolution.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/mmeadditionalsolidearthsolution.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/mmeadditionalsolidearthsolution.m	(revision 27955)
@@ -0,0 +1,104 @@
+%MMEADDITIONALSOLIDEARTHSOLUTION class definition
+%
+%   Usage:
+%      addsol=mmeadditionalsolidearthsolution(); where the additional solid earth solutions %                               are based on a multi-model ensemble (ex: Caron et al 2017 statistics) 
+
+classdef mmeadditionalsolidearthsolution < additionalsolidearthsolution 
+	properties (SetAccess=public) 
+		modelid; %index into the multi-model ensemble, each ensemble variable being defined 
+	         %in the father class.
+	end
+	methods
+		function self = mmeadditionalsolidearthsolution(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			self.setdefaultparameters@additionalsolidearthsolution();
+			self.modelid=0;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ismember('SealevelchangeAnalysis',analyses) | (strcmp(solution,'TransientSolution') & md.solidearth.settings.isgrd==0), 
+				error('mmeadditionalsolidearthsolution checkconsistency error message: need to run GRD solution if you are supplying a GRD additional pattern solution');
+			end
+
+			seast=length(self.displacementeast);
+			snorth=length(self.displacementnorth);
+			sup=length(self.displacementup);
+			sgeoid=length(self.geoid);
+
+			if (seast-snorth)~=0,
+				error('mmeadditionalsolidearthsolution checkconsistency error message: displacementeast and displacementnorth should be the same size');
+			end
+
+			if (seast-sup)~=0,
+				error('mmeadditionalsolidearthsolution checkconsistency error message: displacementeast and displacementup should be the same size');
+			end
+
+			if (seast-sgeoid)~=0,
+				error('mmeadditionalsolidearthsolution checkconsistency error message: displacementeast and geoid should be the same size');
+			end
+			
+			md = checkfield(md,'field',self.modelid,'NaN',1,'Inf',1,'>=',1,'<=',length(self.displacementeast));
+
+			for i=1:seast,
+				md = checkfield(md,'field',self.displacementeast{i},'NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'field',self.displacementup{i},'NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'field',self.displacementnorth{i},'NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'field',self.geoid{i},'NaN',1,'Inf',1,'timeseries',1);
+			end
+
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   external: mmeadditionalsolidearth solution:'));
+			self.disp@solidearthsolution();
+			fielddisplay(self,'modelid','index into the multi-model ensemble, determines which field will be used.');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'data',3,'name','md.solidearth.external.nature','format','Integer'); %code 3 for mmeadditionalsolidearthsolution class
+
+			nummodels=length(self.displacementeast);
+			WriteData(fid,prefix,'name','md.solidearth.external.nummodels','data',nummodels,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','modelid','format','Double');
+
+			%transform our cell array of time series into cell array of time series of rates 
+			for i=1:nummodels,
+				displacementeast=self.displacementeast{i}; 
+				displacementnorth=self.displacementnorth{i}; 
+				displacementup=self.displacementup{i}; 
+				geoid=self.geoid{i}; 
+
+				time=displacementeast(end,:);
+				dt=diff(time,1,2);
+				
+				displacementeast_rate=diff(displacementeast(1:end-1,:),1,2)./dt;
+				displacementnorth_rate=diff(displacementnorth(1:end-1,:),1,2)./dt;
+				displacementup_rate=diff(displacementup(1:end-1,:),1,2)./dt;
+				geoid_rate=diff(geoid(1:end-1,:),1,2)./dt;
+
+				self.displacementeast{i}=displacementeast_rate; 
+				self.displacementnorth{i}=displacementnorth_rate; 
+				self.displacementup{i}=displacementup_rate; 
+				self.geoid{i}=geoid_rate; 
+			end
+			
+			WriteData(fid,prefix,'object',self,'fieldname','displacementeast','format','MatArray','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1/yts);
+			WriteData(fid,prefix,'object',self,'fieldname','displacementup','format','MatArray','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1/yts);
+			WriteData(fid,prefix,'object',self,'fieldname','displacementnorth','format','MatArray','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1/yts);
+			WriteData(fid,prefix,'object',self,'fieldname','geoid','format','MatArray','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1/yts);
+
+		end % }}}
+
+		function savemodeljs(self,fid,modelname) % {{{
+			error('mmeadditionalsolidearthsolution error message: not implemented yet');
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/mmeofflinesolidearthsolution.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/mmeofflinesolidearthsolution.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/mmeofflinesolidearthsolution.m	(revision 27955)
@@ -0,0 +1,103 @@
+%MMEOFFLINESOLIDEARTHSOLUTION class definition
+%
+%   Usage:
+%      addsol=mmeofflinesolidearthsolution(); where the offline solid earth solutions %                               are based on a multi-model ensemble (ex: Caron et al 2017 statistics) 
+
+classdef mmeofflinesolidearthsolution < offlinesolidearthsolution 
+	properties (SetAccess=public) 
+		modelid; %index into the multi-model ensemble, each ensemble variable being defined 
+	         %in the father class.
+	end
+	methods
+		function self = mmeofflinesolidearthsolution(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			self.setdefaultparameters@offlinesolidearthsolution();
+			self.modelid=0;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ismember('SealevelchangeAnalysis',analyses) | (strcmp(solution,'TransientSolution') & md.solidearth.settings.isgrd==1), 
+				error('mmeofflinesolidearthsolution checkconsistency error message: trying to run GRD patterns while supplying an offline solution for those patterns!'); 
+			end
+			
+			seast=length(self.displacementeast);
+			snorth=length(self.displacementnorth);
+			sup=length(self.displacementup);
+			sgeoid=length(self.geoid);
+
+			if (seast-snorth)~=0,
+				error('mmeofflinesolidearthsolution checkconsistency error message: displacementeast and displacementnorth should be the same size');
+			end
+
+			if (seast-sup)~=0,
+				error('mmeofflinesolidearthsolution checkconsistency error message: displacementeast and displacementup should be the same size');
+			end
+
+			if (seast-sgeoid)~=0,
+				error('mmeofflinesolidearthsolution checkconsistency error message: displacementeast and geoid should be the same size');
+			end
+			
+			md = checkfield(md,'field',self.modelid,'NaN',1,'Inf',1,'>=',1,'<=',length(self.displacementeast));
+
+			for i=1:seast,
+				md = checkfield(md,'field',self.displacementeast{i},'NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'field',self.displacementup{i},'NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'field',self.displacementnorth{i},'NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'field',self.geoid{i},'NaN',1,'Inf',1,'timeseries',1);
+			end
+
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   external: mmeofflinesolidearth solution:'));
+			self.disp@solidearthsolution();
+			fielddisplay(self,'modelid','index into the multi-model ensemble, determines which field will be used.');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'data',4,'name','md.solidearth.external.nature','format','Integer'); %code 4 for mmeofflinesolidearthsolution class
+			WriteData(fid,prefix,'object',self,'fieldname','modelid','format','Double');
+			nummodels=length(self.displacementeast);
+			WriteData(fid,prefix,'name','md.solidearth.external.nummodels','data',nummodels,'format','Integer');
+
+			%transform our cell array of time series into cell array of time series of rates 
+			for i=1:nummodels,
+				displacementeast=self.displacementeast{i}; 
+				displacementnorth=self.displacementnorth{i}; 
+				displacementup=self.displacementup{i}; 
+				geoid=self.geoid{i}; 
+
+				time=displacementeast(end,:);
+				dt=diff(time,1,2);
+				
+				displacementeast_rate=diff(displacementeast(1:end-1,:),1,2)./dt;
+				displacementnorth_rate=diff(displacementnorth(1:end-1,:),1,2)./dt;
+				displacementup_rate=diff(displacementup(1:end-1,:),1,2)./dt;
+				geoid_rate=diff(geoid(1:end-1,:),1,2)./dt;
+				barystaticsealevel_rate=diff(barystaticsealevel(1:end-1,:),1,2)./dt;
+
+				self.displacementeast{i}=displacementeast_rate; 
+				self.displacementnorth{i}=displacementnorth_rate; 
+				self.displacementup{i}=displacementup_rate; 
+				self.geoid{i}=geoid_rate; 
+			end
+			
+			WriteData(fid,prefix,'object',self,'fieldname','displacementeast','format','MatArray','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1/yts);
+			WriteData(fid,prefix,'object',self,'fieldname','displacementup','format','MatArray','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1/yts);
+			WriteData(fid,prefix,'object',self,'fieldname','displacementnorth','format','MatArray','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1/yts);
+			WriteData(fid,prefix,'object',self,'fieldname','geoid','format','MatArray','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1/yts);
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+			error('mmeofflinesolidearthsolution error message: not implemented yet');
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/model.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/model.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/model.js	(revision 27955)
@@ -0,0 +1,785 @@
+/**
+ * MODEL class definition
+ *
+ * Usage:
+ *     md = new model();
+ *
+ * TODO:
+ * - Convert to ES6 class
+ */
+function model(planet) {
+	//methods
+	this.disp = function() { //{{{
+		console.log(sprintf("class model echo: "));
+		console.log(sprintf("//19s: //-22s -- //s","mesh"            ,"[1x1 " + typeof(this.mesh) + "]","mesh properties"));
+		console.log(sprintf("//19s: //-22s -- //s","mask"            ,"[1x1 " + typeof(this.mask) + "]","defines grounded and floating elements"));
+		console.log(sprintf("//19s: //-22s -- //s","geometry"        ,"[1x1 " + typeof(this.geometry) + "]","surface elevation, bedrock topography, ice thickness,..."));
+		console.log(sprintf("//19s: //-22s -- //s","constants"       ,"[1x1 " + typeof(this.constants) + "]","physical constants"));
+		console.log(sprintf("//19s: //-22s -- //s","smb"             ,"[1x1 " + typeof(this.smb) + "]","surface mass balance"));
+		console.log(sprintf("//19s: //-22s -- //s","basalforcings"   ,"[1x1 " + typeof(this.basalforcings) + "]","bed forcings"));
+		console.log(sprintf("//19s: //-22s -- //s","materials"       ,"[1x1 " + typeof(this.materials) + "]","material properties"));
+		console.log(sprintf("//19s: //-22s -- //s","damage"          ,"[1x1 " + typeof(this.damage) + "]","parameters for damage evolution solution"));
+		console.log(sprintf("//19s: //-22s -- //s","friction"        ,"[1x1 " + typeof(this.friction) + "]","basal friction/drag properties"));
+		console.log(sprintf("//19s: //-22s -- //s","flowequation"    ,"[1x1 " + typeof(this.flowequation) + "]","flow equations"));
+		console.log(sprintf("//19s: //-22s -- //s","timestepping"    ,"[1x1 " + typeof(this.timestepping) + "]","time stepping for trans models"));
+		console.log(sprintf("//19s: //-22s -- //s","initialization"  ,"[1x1 " + typeof(this.initialization) + "]","initial guess/state"));
+		console.log(sprintf("//19s: //-22s -- //s","rifts"           ,"[1x1 " + typeof(this.rifts) + "]","rifts properties"));
+		console.log(sprintf("//19s: //-22s -- //s","solidearth"      ,"[1x1 " + typeof(this.solidearth) + "]","solidearth inputs and settings"));
+		console.log(sprintf("//19s: //-22s -- //s","slr"             ,"[1x1 " + typeof(this.slr) + "]","slr forcings"));
+		console.log(sprintf("//19s: //-22s -- //s","dsl"             ,"[1x1 " + typeof(this.dsl) + "]","dynamic sea level"));
+		console.log(sprintf("//19s: //-22s -- //s","debug"           ,"[1x1 " + typeof(this.debug) + "]","debugging tools (valgrind, gprof)"));
+		console.log(sprintf("//19s: //-22s -- //s","verbose"         ,"[1x1 " + typeof(this.verbose) + "]","verbosity level in solve"));
+		console.log(sprintf("//19s: //-22s -- //s","settings"        ,"[1x1 " + typeof(this.settings) + "]","settings properties"));
+		console.log(sprintf("//19s: //-22s -- //s","toolkits"        ,"[1x1 " + typeof(this.toolkits) + "]","PETSc options for each solution"));
+		console.log(sprintf("//19s: //-22s -- //s","cluster"         ,"[1x1 " + typeof(this.cluster) + "]","cluster parameters (number of CPUs...)"));
+		console.log(sprintf("//19s: //-22s -- //s","balancethickness","[1x1 " + typeof(this.balancethickness) + "]","parameters for balancethickness solution"));
+		console.log(sprintf("//19s: //-22s -- //s","stressbalance"   ,"[1x1 " + typeof(this.stressbalance) + "]","parameters for stressbalance solution"));
+		console.log(sprintf("//19s: //-22s -- //s","groundingline"   ,"[1x1 " + typeof(this.groundingline) + "]","parameters for groundingline solution"));
+		console.log(sprintf("//19s: //-22s -- //s","hydrology"       ,"[1x1 " + typeof(this.hydrology) + "]","parameters for hydrology solution"));
+		console.log(sprintf("//19s: //-22s -- //s","masstransport"   ,"[1x1 " + typeof(this.masstransport) + "]","parameters for masstransport solution"));
+		console.log(sprintf("//19s: //-22s -- //s","thermal"         ,"[1x1 " + typeof(this.thermal) + "]","parameters for thermal solution"));
+		console.log(sprintf("//19s: //-22s -- //s","steadystate"     ,"[1x1 " + typeof(this.steadystate) + "]","parameters for steadystate solution"));
+		console.log(sprintf("//19s: //-22s -- //s","transient"       ,"[1x1 " + typeof(this.transient) + "]","parameters for transient solution"));
+		console.log(sprintf("//19s: //-22s -- //s","levelset"        ,"[1x1 " + typeof(this.levelset) + "]","parameters for moving boundaries (level-set method)"));
+		console.log(sprintf("//19s: //-22s -- //s","calving"         ,"[1x1 " + typeof(this.calving) + "]","parameters for calving"));
+		console.log(sprintf("//19s: //-22s -- //s","gia"             ,"[1x1 " + typeof(this.gia) + "]","parameters for gia solution"));
+		console.log(sprintf("//19s: //-22s -- //s","love"            ,"[1x1 " + typeof(this.love) + "]","parameters for love solution"));
+		console.log(sprintf("//19s: //-22s -- //s","esa"             ,"[1x1 " + typeof(this.esa) + "]","parameters for elastic adjustment solution"));
+		console.log(sprintf("//19s: //-22s -- //s","sampling"        ,"[1x1 " + typeof(this.sampling) + "]","parameters for stochastic sampler"));
+		console.log(sprintf("//19s: //-22s -- //s","autodiff"        ,"[1x1 " + typeof(this.autodiff) + "]","automatic differentiation parameters"));
+		console.log(sprintf("//19s: //-22s -- //s","inversion"       ,"[1x1 " + typeof(this.inversion) + "]","parameters for inverse methods"));
+		console.log(sprintf("//19s: //-22s -- //s","qmu"             ,"[1x1 " + typeof(this.qmu) + "]","Dakota properties"));
+		console.log(sprintf("//19s: //-22s -- //s","amr"             ,"[1x1 " + typeof(this.amr) + "]","adaptive mesh refinement properties"));
+		console.log(sprintf("//19s: //-22s -- //s","outputdefinition","[1x1 " + typeof(this.outputdefinition) + "]","output definition"));
+		console.log(sprintf("//19s: //-22s -- //s","results"         ,"[1x1 " + typeof(this.results) + "]","model results"));
+		console.log(sprintf("//19s: //-22s -- //s","radaroverlay"    ,"[1x1 " + typeof(this.radaroverlay) + "]","radar image for plot overlay"));
+		console.log(sprintf("//19s: //-22s -- //s","miscellaneous"   ,"[1x1 " + typeof(this.miscellaneous) + "]","miscellaneous fields"));
+	} //}}}
+	this.setdefaultparameters = function(planet) { // {{{
+		this.mesh             = new mesh2d();
+		this.mask             = new mask();
+
+		this.geometry         = new geometry();
+		this.constants        = new constants();
+		this.smb              = new SMBforcing();
+		this.basalforcings    = new basalforcings();
+		this.materials        = new matice();
+		this.damage           = new damage();
+		this.friction         = new friction();
+		this.flowequation     = new flowequation();
+		this.timestepping     = new timestepping();
+		this.initialization   = new initialization();
+		this.rifts            = new rifts();
+		this.dsl              = new dsl();
+		this.solidearth       = new solidearth(planet);
+
+		this.debug            = new debug();
+		this.verbose          = new verbose();
+		this.settings         = new issmsettings();
+		this.toolkits         = new toolkits();
+		this.cluster          = new local();
+
+		this.balancethickness = new balancethickness();
+		this.stressbalance    = new stressbalance();
+		this.groundingline    = new groundingline();
+		this.hydrology        = new hydrologyshreve();
+		this.masstransport    = new masstransport();
+		this.thermal          = new thermal();
+		this.steadystate      = new steadystate();
+		this.transient        = new transient();
+		this.levelset         = new levelset();
+		this.calving          = new calving();
+		this.frontalforcings  = new frontalforcings();
+		this.love             = new fourierlove();
+		this.esa              = new esa();
+		this.sampling         = new sampling();
+
+		this.autodiff         = new autodiff();
+		this.inversion        = new inversion();
+		this.qmu              = new qmu();
+		this.amr              = new amr();
+		this.results          = {};
+		this.outputdefinition = new outputdefinition();
+		this.radaroverlay     = new radaroverlay();
+		this.miscellaneous    = new miscellaneous();
+		this.priv             = new priv();
+	} //}}}
+	this.checkmessage = function(string){ //{{{
+		console.log('model not consistent: ' + string);
+		this.priv.isconsistent=false;
+	} //}}}
+	this.fix = function(){ //{{{
+
+		for (var field in this){
+
+			//Some properties do not need to be fixed
+			if (field == 'results' | field =='radaroverlay' | field == 'toolkits' | field =='cluster' | field == 'priv') continue;
+
+			//Check that current field is a class
+			if(typeof this[field] == 'function'){
+				continue;
+			}
+
+			//Fix current object
+			this[field].fix(this);
+		}
+
+	} //}}}
+	this.extrude = function(md) { //{{{
+		//EXTRUDE - vertically extrude a 2d mesh
+		//
+		//   vertically extrude a 2d mesh and create corresponding 3d mesh.
+		//   The vertical distribution can:
+		//    - follow a polynomial law
+		//    - follow two polynomial laws, one for the lower part and one for the upper part of the mesh
+		//    - be described by a list of coefficients (between 0 and 1)
+		//   
+		//
+		//   Usage:
+		//      md=extrude(md,numlayers,extrusionexponent);
+		//      md=extrude(md,numlayers,lowerexponent,upperexponent);
+		//      md=extrude(md,listofcoefficients);
+		//
+		//   Example:
+		//      md=extrude(md,15,1.3);
+		//      md=extrude(md,15,1.3,1.2);
+		//      md=extrude(md,[0 0.2 0.5 0.7 0.9 0.95 1]);
+		//
+		//   See also: MODELEXTRACT, COLLAPSE
+
+		//some checks on list of arguments
+		var argc = arguments.length;
+		var extrusionlist;
+		var numlayers;
+		
+		if ((argc > 4) | (argc < 2)) {
+			error("extrude error message");
+		}
+
+		//Extrude the mesh
+		if (argc==2) { //list of coefficients
+			clist=arguments[0];
+			if (ArrayAnyBelowStrict(clist,0) || ArrayAnyAboveStrict(clist,1)) {
+				error('extrusioncoefficients must be between 0 and 1');
+			}
+			extrusionlist=ArraySort(ArrayUnique(clist.push(0,1)));
+			numlayers=extrusionlist.length;
+		} else if (argc==3) { //one polynomial law
+			if (arguments[1]<=0) {
+				error('extrusionexponent must be >=0');
+			}
+			numlayers=arguments[1];
+			extrusionlist = [];
+			for (var i = 0; i < numlayers; i++) {
+				extrusionlist.push(Math.pow(i/(numlayers-1), arguments[2]));
+			}
+		} else if (argc==4) { //two polynomial laws
+			numlayers=arguments[1];
+			var lowerexp=arguments[2];
+			var upperexp=arguments[3];
+
+			if (arguments[2]<=0 || arguments[3]<=0) {
+				error('lower and upper extrusionexponents must be >=0');
+			}
+
+			var lowerextrusionlist = [];
+			for (var i = 0; i <= 1; i += (2/(numlayers-1))) {
+				lowerextrusionlist.push(Math.pow(i, lowerexp)/2)
+			}
+			var upperextrusionlist = [];
+			for (var i = 0; i <= 1; i += (2/(numlayers-1))) {
+				upperextrusionlist.push(1-Math.pow(i, upperexp)/2)
+			}
+			extrusionlist=ArrayConcat(lowerextrusionlist,upperextrusionlist);
+			extrusionlist=ArraySort(ArrayUnique(extrusionlist.push(1)));
+		}
+
+		if (numlayers<2) {
+			console.error('number of layers should be at least 2');
+		}
+		if (md.mesh.domaintype() === '3D') {
+			console.error('Cannot extrude a 3d mesh (extrude cannot be called more than once)');
+		}
+
+		//Initialize with the 2d mesh
+		var mesh2d = md.mesh;
+		md.mesh=new mesh3dprisms();
+		md.mesh.x                           = mesh2d.x;
+		md.mesh.y                           = mesh2d.y;
+		md.mesh.elements                    = mesh2d.elements;
+		md.mesh.numberofelements            = mesh2d.numberofelements;
+		md.mesh.numberofvertices            = mesh2d.numberofvertices;
+
+		md.mesh.lat                         = mesh2d.lat;
+		md.mesh.long                        = mesh2d.long;
+		md.mesh.epsg                        = mesh2d.epsg;
+		md.mesh.scale_factor                = mesh2d.scale_factor;
+
+		md.mesh.vertexonboundary            = mesh2d.vertexonboundary;
+		md.mesh.vertexconnectivity          = mesh2d.vertexconnectivity;
+		md.mesh.elementconnectivity         = mesh2d.elementconnectivity;
+		md.mesh.average_vertex_connectivity = mesh2d.average_vertex_connectivity;
+
+		md.mesh.extractedvertices           = mesh2d.extractedvertices;
+		md.mesh.extractedelements           = mesh2d.extractedelements;
+
+		var x3d=new Float64Array(); 
+		var y3d=new Float64Array();
+		var z3d=new Float64Array();  //the lower node is on the bed
+		var thickness3d=md.geometry.thickness; //thickness and bed for these nodes
+		var bed3d=md.geometry.base;
+
+		//Create the new layers
+		//Dimensions of x/y/z3d: md.mesh.numberofvertices * numlayers, 1
+		for (var i = 1; i <= numlayers; i++) {
+			x3d=ArrayConcat(x3d, md.mesh.x); 
+			y3d=ArrayConcat(y3d, md.mesh.y); 
+			//nodes are distributed between bed and surface accordingly to the given exponent
+			z3d=ArrayConcat(z3d, FloatFix(thickness3d.map(function(value,index) { return bed3d[index] + value * extrusionlist[i-1]; }), thickness3d.length)); 
+		}
+		var number_nodes3d=x3d.length; //number of 3d nodes for the non extruded part of the mesh
+
+		//Extrude elements 
+		//Create the elements of the 3d mesh for the non extruded part
+		//Dimensions of elements3d: md.mesh.numberofelements * (numlayers - 1), 6
+		var elements3d=[];
+		var elements_prisms=[];
+		for (var i = 1; i < numlayers; i++) {
+			for (var j = 0; j < md.mesh.numberofelements; j++) {
+				elements_prisms = [];
+				for (var k = 0, offset = (i - 1) * md.mesh.numberofvertices; k < 3; k++) {
+					elements_prisms.push(md.mesh.elements[j][k]+offset);
+				}
+				for (var k = 0, offset = i * md.mesh.numberofvertices; k < 3; k++) {
+					elements_prisms.push(md.mesh.elements[j][k]+offset);
+				}
+				elements3d.push(elements_prisms);
+			}				
+		}
+		number_el3d=elements3d.length; //number of 3d nodes for the non extruded part of the mesh
+
+		//Keep a trace of lower and upper nodes
+		var lowervertex = NewArrayFill(number_nodes3d, NaN);
+		var uppervertex = NewArrayFill(number_nodes3d, NaN);
+		//Set first layer to NaN and start count from 1 at next layer (i = md.mesh.numberofvertices+1)
+		for (var i = md.mesh.numberofvertices, k = 1; i < lowervertex.length; i++, k++) {
+			lowervertex[i] = k;
+		};
+		//Set last layer to NaN and start count from md.mesh.numberofvertices+1 at first layer (i = 1)
+		for (var i = 0, k = md.mesh.numberofvertices+1; i < (numlayers-1)*md.mesh.numberofvertices; i++, k++) {
+			uppervertex[i] = k;
+		};
+		md.mesh.lowervertex=lowervertex;
+		md.mesh.uppervertex=uppervertex;
+
+		//same for lower and upper elements
+		var lowerelements = NewArrayFill(number_el3d, NaN);
+		var upperelements = NewArrayFill(number_el3d, NaN);
+		//Set first layer to NaN and start count from 1 at next layer (i = md.mesh.numberofelements+1)
+		for (var i = md.mesh.numberofelements, k = 1; i < lowerelements.length; i++, k++) {
+			lowerelements[i] = k;
+		};
+		//Set last 2 layers to NaN and start count from md.mesh.numberofvertices+1 at first layer (i = 1)
+		for (var i = 0, k = md.mesh.numberofelements + 1; i < (numlayers-2)*md.mesh.numberofelements; i++, k++) {
+			upperelements[i] = k;
+		};
+		md.mesh.lowerelements=lowerelements;
+		md.mesh.upperelements=upperelements;
+
+		//Save old mesh 
+		md.mesh.x2d=md.mesh.x;
+		md.mesh.y2d=md.mesh.y;
+		md.mesh.elements2d=md.mesh.elements;
+		md.mesh.numberofelements2d=md.mesh.numberofelements;
+		md.mesh.numberofvertices2d=md.mesh.numberofvertices;
+
+		//Build global 3d mesh 
+		md.mesh.elements=elements3d;
+		md.mesh.x=x3d;
+		md.mesh.y=y3d;
+		md.mesh.z=z3d;
+		md.mesh.numberofelements=number_el3d;
+		md.mesh.numberofvertices=number_nodes3d;
+		md.mesh.numberoflayers=numlayers;
+
+		//Ok, now deal with the other fields from the 2d mesh:
+
+		//bedinfo and surface info
+		md.mesh.vertexonbase=project3d(md,'vector',NewArrayFill(md.mesh.numberofvertices2d,1),'type','node','layer',1);
+		md.mesh.vertexonsurface=project3d(md,'vector',NewArrayFill(md.mesh.numberofvertices2d,1),'type','node','layer',md.mesh.numberoflayers);
+		md.mesh.vertexonboundary=project3d(md,'vector',md.mesh.vertexonboundary,'type','node');
+
+		//lat long
+		md.mesh.lat=project3d(md,'vector',md.mesh.lat,'type','node');
+		md.mesh.long=project3d(md,'vector',md.mesh.long,'type','node');
+		md.mesh.scale_factor=project3d(md,'vector',md.mesh.scale_factor,'type','node');
+
+		md.geometry=md.geometry.extrude(md);
+		md.friction=md.friction.extrude(md);
+		md.inversion=md.inversion.extrude(md);
+		md.smb=md.smb.extrude(md);
+		md.initialization=md.initialization.extrude(md);
+
+		md.flowequation=md.flowequation.extrude(md);
+		md.stressbalance=md.stressbalance.extrude(md);
+		md.thermal=md.thermal.extrude(md);
+		md.masstransport=md.masstransport.extrude(md);
+		md.levelset=md.levelset.extrude(md);
+		md.calving=md.calving.extrude(md);
+		md.hydrology = md.hydrology.extrude(md);
+		md.solidearth = md.solidearth.extrude(md);
+
+		//connectivity
+		if (!ArrayAnyNaN(md.mesh.elementconnectivity)) {
+			//md.mesh.elementconnectivity=repmat(md.mesh.elementconnectivity,numlayers-1,1); //Replicate the matrix across numlayers-1 
+			var temparr = [];
+			for (var i = 0; i < numlayers - 1; i++) {
+				temparr = ArrayConcat(temparr, md.mesh.elementconnectivity);
+			}
+			md.mesh.elementconnectivity = temparr;
+	
+			//md.mesh.elementconnectivity(find(md.mesh.elementconnectivity==0))=NaN;
+			var indices = ArrayFind(md.mesh.elementconnectivity, 0);
+			for (var i = 0; i < indices.length; i++) {
+				md.mesh.elementconnectivity[i] = NaN;
+			};
+	
+			for (var i = 2; i < numlayers; i++) {
+				//md.mesh.elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)...
+				//=md.mesh.elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)+md.mesh.numberofelements2d;
+				for (var j = (i-1)*md.mesh.numberofelements2d; j <= (i)*md.mesh.numberofelements2d-1; j++) {
+					for (var k = 0; k < 3; k++) {
+						md.mesh.elementconnectivity[j][k] += md.mesh.numberofelements2d;
+					}
+				}
+			}
+			md.mesh.elementconnectivity = md.mesh.elementconnectivity.map(function(value) { return (Number.isNaN(value)) ? 0 : value; });
+		}
+
+		md.materials=md.materials.extrude(md);
+		md.damage=md.damage.extrude(md);
+		md.mask=md.mask.extrude(md);
+		md.qmu=md.qmu.extrude(md);
+		md.basalforcings=md.basalforcings.extrude(md);
+
+		//increase connectivity if less than 25:
+		if (md.mesh.average_vertex_connectivity<=25) {
+			md.mesh.average_vertex_connectivity=100;
+		}
+	} //}}}
+	this.extract = function(md,area) { //{{{
+		//extract - extract a model according to an Argus contour or flag list
+		//
+		//   This routine extracts a submodel from a bigger model with respect to a given contour
+		//   md must be followed by the corresponding exp file or flags list
+		//   It can either be a domain file (argus type, .exp extension), or an array of element flags. 
+		//   If user wants every element outside the domain to be 
+		//   extract2d, add '~' to the name of the domain file (ex: '~HO.exp');
+		//   an empty string '' will be considered as an empty domain
+		//   a string 'all' will be considered as the entire domain
+		//
+		//   Usage:
+		//      md2=extract(md,area);
+		//
+		//   Examples:
+		//      md2=extract(md,'Domain.exp');
+		//
+		//   See also: EXTRUDE, COLLAPSE
+
+		//some checks on list of arguments
+		var argc = arguments.length;
+
+		if (!((argc == 2) | (argc == 1))) {
+			error('extract error message: bad usage');
+		}
+		
+		//get elements that are inside area
+		flag_elem=FlagElements(this,area);
+
+		if (!ArrayAnyEqual(flag_elem,1)) {
+			error('extracted model is empty!');
+		}
+
+		/*kick out all elements with 3 dirichlets: actually, not so fast, not good for javscript usually.
+		spc_elem=find(~flag_elem);
+		spc_node=sort(unique(md1.mesh.elements(spc_elem,:)));
+		flag=ones(md1.mesh.numberofvertices,1);
+		flag(spc_node)=0;
+		pos=find(sum(flag(md1.mesh.elements),2)==0);
+		flag_elem(pos)=0;*/
+
+		//extracted elements and nodes lists
+		var pos_elem = ArrayFind(flag_elem,1);
+		var dup_nodes= new Array(pos_elem.length*3);
+		for(var i=0;i<pos_elem.length;i++){
+			dup_nodes[3*i]=md.mesh.elements[pos_elem[i]][0]-1;
+			dup_nodes[3*i+1]=md.mesh.elements[pos_elem[i]][1]-1;
+			dup_nodes[3*i+2]=md.mesh.elements[pos_elem[i]][2]-1;
+		}
+		pos_node=ArrayUnique(dup_nodes); pos_node=ArraySort(pos_node);
+
+		//keep track of some fields
+		var numberofvertices1=md.mesh.numberofvertices;
+		var numberofelements1=md.mesh.numberofelements;
+		var numberofvertices2=pos_node.length;
+		var numberofelements2=pos_elem.length;
+		var flag_node=NewArrayFill(numberofvertices1,0);
+		for (var i=0;i<pos_node.length;i++)flag_node[pos_node[i]]=1;
+
+		//Create Pelem and Pnode (transform old nodes in new nodes and same thing for the elements)
+		Pelem=NewArrayFill(numberofelements1,0);
+		for (var i=0;i<numberofelements2;i++) Pelem[pos_elem[i]]=i;
+		Pnode=NewArrayFill(numberofvertices1,0);
+		for (var i=0;i<numberofvertices2;i++) Pnode[pos_node[i]]=i;
+		//renumber the elements (some nodes won't exist anymore)
+		var elements_2=NewArrayFill2D(numberofelements2,3,0);
+		for (var i=0;i<numberofelements2;i++){
+			for (var j=0;j<3;j++){
+				elements_2[i][j]=Pnode[md.mesh.elements[i][j]-1]+1;
+			}
+		}
+		
+		/*if isa(md.mesh,'mesh3dprisms'),
+			elements_2(:,4)=Pnode(elements_2(:,4));
+			elements_2(:,5)=Pnode(elements_2(:,5));
+			elements_2(:,6)=Pnode(elements_2(:,6));
+		end
+		*/
+		
+		//OK, now create the new model!
+
+		//take every field from model
+		var md2=md.deepcopy(md);
+		//var md2=new model(); md2.mesh=new mesh3dsurface();
+		
+		//deal with mesh: {{{
+		md2.mesh.numberofvertices=numberofvertices2;
+		md2.mesh.numberofelements=numberofelements2;
+		md2.mesh.elements=elements_2;
+
+		md2.mesh.x=new Array(numberofvertices2); for (var i=0;i<numberofvertices2;i++)md2.mesh.x[i]=md.mesh.x[pos_node[i]];
+		md2.mesh.y=new Array(numberofvertices2); for (var i=0;i<numberofvertices2;i++)md2.mesh.y[i]=md.mesh.y[pos_node[i]];
+		md2.mesh.z=new Array(numberofvertices2); for (var i=0;i<numberofvertices2;i++)md2.mesh.z[i]=md.mesh.z[pos_node[i]];
+		md2.mesh.lat=new Array(numberofvertices2); for (var i=0;i<numberofvertices2;i++)md2.mesh.lat[i]=md.mesh.lat[pos_node[i]];
+		md2.mesh.long=new Array(numberofvertices2); for (var i=0;i<numberofvertices2;i++)md2.mesh.long[i]=md.mesh.long[pos_node[i]];
+		md2.mesh.r=new Array(numberofvertices2); for (var i=0;i<numberofvertices2;i++)md2.mesh.r[i]=md.mesh.r[pos_node[i]];
+		//}}}
+		//deal with geometry: {{{
+		md2.geometry.base=new Array(numberofvertices2); for (var i=0;i<numberofvertices2;i++)md2.geometry.base[i]=md.geometry.base[pos_node[i]];
+		md2.geometry.thickness=new Array(numberofvertices2); for (var i=0;i<numberofvertices2;i++)md2.geometry.thickness[i]=md.geometry.thickness[pos_node[i]];
+		md2.geometry.surface=new Array(numberofvertices2); for (var i=0;i<numberofvertices2;i++)md2.geometry.surface[i]=md.geometry.surface[pos_node[i]];
+		md2.geometry.bed=new Array(numberofvertices2); for (var i=0;i<numberofvertices2;i++)md2.geometry.bed[i]=md.geometry.bed[pos_node[i]];
+		//}}}
+
+		//Keep track of pos_node and pos_elem
+		for (var i=0;i<md2.mesh.numberofvertices;i++)pos_node[i]=pos_node[i]+1;
+		for (var i=0;i<md2.mesh.numberofelements;i++)pos_elem[i]=pos_elem[i]+1;
+		md2.mesh.extractedvertices=pos_node;
+		md2.mesh.extractedelements=pos_elem;
+
+		return md2;
+
+		//automatically modify fields
+
+		//loop over model fields
+		//model_fields=fields(md);
+	} //}}}
+	this.collapse = function(md) { //{{{
+		/*
+		 *COLLAPSE - collapses a 3d mesh into a 2d mesh
+		 *
+		 *   This routine collapses a 3d model into a 2d model
+		 *   and collapses all the fileds of the 3d model by
+		 *   taking their depth-averaged values
+		 *
+		 *   Usage:
+		 *	 md=collapse(md)
+		 *
+		 *   See also: EXTRUDE, MODELEXTRACT
+		 */
+
+		// Check that the model is really a 3d model
+		if (md.mesh.elementtype() !== 'Penta') {
+			console.error('collapse error message: only 3d mesh can be collapsed')
+		}
+
+		// Start with changing all the fields from the 3d mesh 
+
+		// dealing with the friction law
+		// drag is limited to nodes that are on the bedrock.
+		if (md.friction.classname() === 'friction') {
+			md.friction.coefficient=project2d(md,md.friction.coefficient,1);
+			md.friction.p=project2d(md,md.friction.p,1);
+			md.friction.q=project2d(md,md.friction.q,1);
+		} else if (md.friction.classname() === 'frictionhydro') {
+			md.friction.q=project2d(md,md.friction.q,1);
+			md.friction.C=project2d(md,md.friction.C,1);
+			md.friction.As=project2d(md,md.friction.As,1);
+			md.friction.effective_pressure=project2d(md,md.friction.effective_pressure,1);
+		} else if (md.friction.classname() === 'frictionwaterlayer') {
+			md.friction.coefficient=project2d(md,md.friction.coefficient,1);
+			md.friction.p=project2d(md,md.friction.p,1);
+			md.friction.q=project2d(md,md.friction.q,1);
+			md.friction.water_layer=project2d(md,md.friction.water_layer,1);
+		} else if (md.friction.classname() === 'frictionweertman') {
+			md.friction.C=project2d(md,md.friction.C,1);
+			md.friction.m=project2d(md,md.friction.m,1);
+		} else if (md.friction.classname() === 'frictionweertmantemp') {
+			md.friction.C=project2d(md,md.friction.C,1);
+			md.friction.m=project2d(md,md.friction.m,1);
+		} else {
+			disp('friction type not supported');
+		}
+
+		// observations
+		if (!Number.isNaN(md.inversion.vx_obs))
+			md.inversion.vx_obs=project2d(md,md.inversion.vx_obs,md.mesh.numberoflayers);
+
+		if (!Number.isNaN(md.inversion.vy_obs))
+			md.inversion.vy_obs=project2d(md,md.inversion.vy_obs,md.mesh.numberoflayers);
+
+		if (!Number.isNaN(md.inversion.vel_obs))
+			md.inversion.vel_obs=project2d(md,md.inversion.vel_obs,md.mesh.numberoflayers);
+
+		if (!Number.isNaN(md.inversion.cost_functions_coefficients))
+			md.inversion.cost_functions_coefficients=project2d(md,md.inversion.cost_functions_coefficients,md.mesh.numberoflayers);
+
+		if (numel(md.inversion.min_parameters)>1)
+			md.inversion.min_parameters=project2d(md,md.inversion.min_parameters,md.mesh.numberoflayers);
+
+		if (numel(md.inversion.max_parameters)>1) 
+			md.inversion.max_parameters=project2d(md,md.inversion.max_parameters,md.mesh.numberoflayers);
+
+		if (md.smb.classname() === 'SMBforcing' && !Number.isNaN(md.smb.mass_balance)) {
+			md.smb.mass_balance=project2d(md,md.smb.mass_balance,md.mesh.numberoflayers);
+		} else if (md.smb.classname() === 'SMBhenning' && !Number.isNaN(md.smb.smbref)) {
+			md.smb.smbref=project2d(md,md.smb.smbref,md.mesh.numberoflayers);
+		}
+
+		// results
+		if (!Number.isNaN(md.initialization.vx))
+			md.initialization.vx=DepthAverage(md,md.initialization.vx);
+		if (!Number.isNaN(md.initialization.vy))
+			md.initialization.vy=DepthAverage(md,md.initialization.vy);
+		if (!Number.isNaN(md.initialization.vz))
+			md.initialization.vz=DepthAverage(md,md.initialization.vz);
+		if (!Number.isNaN(md.initialization.vel))
+			md.initialization.vel=DepthAverage(md,md.initialization.vel);
+		if (!Number.isNaN(md.initialization.temperature))
+			md.initialization.temperature=DepthAverage(md,md.initialization.temperature);
+		if (!Number.isNaN(md.initialization.pressure))
+			md.initialization.pressure=project2d(md,md.initialization.pressure,1);
+		if (!Number.isNaN(md.initialization.sediment_head))
+			md.initialization.sediment_head=project2d(md,md.initialization.sediment_head,1);
+		if (!Number.isNaN(md.initialization.epl_head))
+			md.initialization.epl_head=project2d(md,md.initialization.epl_head,1);
+		if (!Number.isNaN(md.initialization.epl_thickness))
+			md.initialization.epl_thickness=project2d(md,md.initialization.epl_thickness,1);
+
+		// giaivins
+		if (!Number.isNaN(md.gia.mantle_viscosity))
+			md.gia.mantle_viscosity=project2d(md,md.gia.mantle_viscosity,1);
+		if (!Number.isNaN(md.gia.lithosphere_thickness))
+			md.gia.lithosphere_thickness=project2d(md,md.gia.lithosphere_thickness,1);
+
+		// elementstype
+		if (!Number.isNaN(md.flowequation.element_equation)) {
+			md.flowequation.element_equation=project2d(md,md.flowequation.element_equation,1);
+			md.flowequation.vertex_equation=project2d(md,md.flowequation.vertex_equation,1);
+			md.flowequation.borderSSA=project2d(md,md.flowequation.borderSSA,1);
+			md.flowequation.borderHO=project2d(md,md.flowequation.borderHO,1);
+			md.flowequation.borderFS=project2d(md,md.flowequation.borderFS,1);
+		}
+
+		// boundary conditions
+		md.stressbalance.spcvx=project2d(md,md.stressbalance.spcvx,md.mesh.numberoflayers);
+		md.stressbalance.spcvy=project2d(md,md.stressbalance.spcvy,md.mesh.numberoflayers);
+		md.stressbalance.spcvz=project2d(md,md.stressbalance.spcvz,md.mesh.numberoflayers);
+		md.stressbalance.referential=project2d(md,md.stressbalance.referential,md.mesh.numberoflayers);
+		md.stressbalance.loadingforce=project2d(md,md.stressbalance.loadingforce,md.mesh.numberoflayers);
+		md.masstransport.spcthickness=project2d(md,md.masstransport.spcthickness,md.mesh.numberoflayers);
+		if (!Number.isNaN(md.damage.spcdamage))
+			md.damage.spcdamage=project2d(md,md.damage.spcdamage,md.mesh.numberoflayers);
+		md.thermal.spctemperature=project2d(md,md.thermal.spctemperature,md.mesh.numberoflayers);
+
+		// Hydrologydc variables
+		if (md.hydrology.classname() === 'hydrologydc') {
+			md.hydrology.spcsediment_head=project2d(md,md.hydrology.spcsediment_head,1);
+			md.hydrology.mask_eplactive_node=project2d(md,md.hydrology.mask_eplactive_node,1);
+			md.hydrology.sediment_transmitivity=project2d(md,md.hydrology.sediment_transmitivity,1);
+			md.hydrology.basal_moulin_input=project2d(md,md.hydrology.basal_moulin_input,1);
+
+			if(md.hydrology.isefficientlayer==1)
+				md.hydrology.spcepl_head=project2d(md,md.hydrology.spcepl_head,1);
+		}
+		
+		// materials
+		md.materials.rheology_B=DepthAverage(md,md.materials.rheology_B);
+		md.materials.rheology_n=project2d(md,md.materials.rheology_n,1);
+		
+		// damage: 
+		if (md.damage.isdamage)
+			md.damage.D=DepthAverage(md,md.damage.D);
+
+		// special for thermal modeling:
+		if (!Number.isNaN(md.basalforcings.groundedice_melting_rate))
+			md.basalforcings.groundedice_melting_rate=project2d(md,md.basalforcings.groundedice_melting_rate,1); 
+
+		if (!Number.isNaN(md.basalforcings.floatingice_melting_rate))
+			md.basalforcings.floatingice_melting_rate=project2d(md,md.basalforcings.floatingice_melting_rate,1); 
+
+		md.basalforcings.geothermalflux=project2d(md,md.basalforcings.geothermalflux,1); // bedrock only gets geothermal flux
+
+		// update of connectivity matrix
+		md.mesh.average_vertex_connectivity=25;
+
+		// Collapse the mesh
+		var nodes2d=md.mesh.numberofvertices2d;
+		var elements2d=md.mesh.numberofelements2d;
+
+		// parameters
+		md.geometry.surface=project2d(md,md.geometry.surface,1);
+		md.geometry.thickness=project2d(md,md.geometry.thickness,1);
+		md.geometry.base=project2d(md,md.geometry.base,1);
+		if (!Number.isNaN(md.geometry.bed))
+			md.geometry.bed=project2d(md,md.geometry.bed,1);
+
+		if (!Number.isNaN(md.mask.ocean_levelset))
+			md.mask.ocean_levelset=project2d(md,md.mask.ocean_levelset,1);
+
+		if (!Number.isNaN(md.mask.ice_levelset))
+			md.mask.ice_levelset=project2d(md,md.mask.ice_levelset,1);
+
+		// lat long
+		if (numel(md.mesh.lat) === md.mesh.numberofvertices)
+			md.mesh.lat=project2d(md,md.mesh.lat,1);
+		if (numel(md.mesh.long) === md.mesh.numberofvertices)
+			md.mesh.long=project2d(md,md.mesh.long,1);
+		if (numel(md.mesh.scale_factor) === md.mesh.numberofvertices)
+			md.mesh.scale_factor=project2d(md,md.mesh.scale_factor,1);
+
+		// Initialize with the 2d mesh
+		var mesh = new mesh2d();
+		mesh.x=md.mesh.x2d;
+		mesh.y=md.mesh.y2d;
+		mesh.numberofvertices=md.mesh.numberofvertices2d;
+		mesh.numberofelements=md.mesh.numberofelements2d;
+		mesh.elements=md.mesh.elements2d;
+
+		if (!Number.isNaN(md.mesh.vertexonboundary))
+			mesh.vertexonboundary=project2d(md,md.mesh.vertexonboundary,1);
+		if (!Number.isNaN(md.mesh.elementconnectivity))
+			mesh.elementconnectivity=project2d(md,md.mesh.elementconnectivity,1);
+
+		md.mesh=mesh;
+		md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+		md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+		md.mesh.segments=contourenvelope(md.mesh);
+
+		return md;
+	} /*}}}*/
+	this.deepCopy = function(md) { //{{{
+		/*
+		 *DEEPCOPY - returns a deep copy of the model.
+		 *
+		 *   This routine creates a new model with new objects 
+		 *   for each corresponding object in the original model,
+		 *   so that changes in one do not affect the other.
+		 *
+		 *   Usage:
+		 *	 md1=deepCopy(md)
+		 *
+		 */
+		function recursiveDeepCopy(obj) {
+			var returnValue;
+
+			switch (typeof obj) {
+				case "object":
+					if (obj === null) {
+						// null => null
+						returnValue = null;
+					} else {
+						switch (toString.call(obj)) {
+							case "[object Array]":
+								// It's an array, create a new array with deep copies of the entries
+								returnValue = obj.map(recursiveDeepCopy);
+								break;
+							default:
+								// Some other kind of object, deep-copy its properties into a new object
+								returnValue = Object.keys(obj).reduce(function(prev, key) {
+									prev[key] = recursiveDeepCopy(obj[key]);
+									return prev;
+								}, {});
+								break;
+						}
+					}
+					break;
+				default:
+					// It's a primitive, copy via assignment
+					returnValue = obj;
+					break;
+			}
+			return returnValue;
+		}
+		
+		return recursiveDeepCopy(md);
+	} /*}}}*/
+//properties
+// {{{
+	//Careful here: no other class should be used as default value this is a bug of matlab
+	this.mesh             = 0;
+	this.mask             = 0;
+
+	this.geometry         = 0;
+	this.constants        = 0;
+	this.smb              = 0;
+	this.basalforcings    = 0;
+	this.materials        = 0;
+	this.damage           = 0;
+	this.friction         = 0;
+	this.flowequation     = 0;
+	this.timestepping     = 0;
+	this.initialization   = 0;
+	this.rifts            = 0;
+	this.dsl              = 0;
+	this.solidearth       = 0;
+
+	this.debug            = 0;
+	this.verbose          = 0;
+	this.settings         = 0;
+	this.toolkits         = 0;
+	this.cluster          = 0;
+
+	this.balancethickness = 0;
+	this.stressbalance    = 0;
+	this.groundingline    = 0;
+	this.hydrology        = 0;
+	this.masstransport    = 0;
+	this.thermal          = 0;
+	this.steadystate      = 0;
+	this.transient        = 0;
+	this.levelset         = 0;
+	this.calving          = 0;
+	this.frontalforcings  = 0;
+	this.love             = 0;
+	this.esa              = 0;
+	this.sampling         = 0;
+
+	this.autodiff         = 0;
+	this.inversion        = 0;
+	this.qmu              = 0;
+	this.amr              = 0;
+	this.results          = 0;
+	this.outputdefinition = 0;
+	this.radaroverlay     = 0;
+	this.miscellaneous    = 0;
+	this.priv             = 0;
+
+	// Set default values for fields
+	if (arguments.length == 0) {
+		this.setdefaultparameters('earth');
+	} else {
+		this.setdefaultparameters(planet);
+	}
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/model.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/model.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/model.m	(revision 27955)
@@ -0,0 +1,1846 @@
+%MODEL class definition
+%
+%   Usage:
+%      md = model(varargin)
+
+classdef model
+	properties (SetAccess=public) %Model fields
+		% {{{
+		%Careful here: no other class should be used as default value this is a bug of matlab
+		mesh             = 0;
+		mask             = 0;
+
+		geometry         = 0;
+		constants        = 0;
+		smb              = 0;
+		basalforcings    = 0;
+		materials        = 0;
+		damage           = 0;
+		friction         = 0;
+		flowequation     = 0;
+		timestepping     = 0;
+		initialization   = 0;
+		rifts            = 0;
+		dsl              = 0;
+		solidearth       = 0;
+
+		debug            = 0;
+		verbose          = 0;
+		settings         = 0;
+		toolkits         = 0;
+		cluster          = 0;
+
+		balancethickness = 0;
+		stressbalance    = 0;
+		groundingline    = 0;
+		hydrology        = 0;
+		debris           = 0;
+		masstransport    = 0;
+		thermal          = 0;
+		steadystate      = 0;
+		transient        = 0;
+		levelset         = 0;
+		calving          = 0;
+		frontalforcings  = 0;
+		love             = 0;
+		esa              = 0;
+		sampling         = 0;
+
+		autodiff         = 0;
+		inversion        = 0;
+		qmu              = 0;
+		amr              = 0;
+		results          = 0;
+		outputdefinition = 0;
+		radaroverlay     = 0;
+		miscellaneous    = 0;
+		private          = 0;
+		stochasticforcing= 0;
+
+		%}}}
+	end
+	methods (Static)
+		function md = loadobj(md) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. If the input is a struct it is an old version of model and
+			% old fields must be recovered (make sure they are in the deprecated
+			% model properties)
+
+			if verLessThan('matlab','7.9'),
+				disp('Warning: your matlab version is old and there is a risk that load does not work correctly');
+				disp('         if the model is not loaded correctly, rename temporarily loadobj so that matlab does not use it');
+
+				% This is a Matlab bug: all the fields of md have their default value
+				% Example of error message:
+				% Warning: Error loading an object of class 'model':
+				% Undefined function or method 'exist' for input arguments of type 'cell'
+				%
+				% This has been fixed in MATLAB 7.9 (R2009b) and later versions
+			end
+
+			if isstruct(md)
+				disp('Recovering model object from a previous version');
+				md = structtomodel(model,md);
+			end
+
+			%2012 August 4th
+			if isa(md.materials,'materials'),
+				disp('Recovering old materials');
+				if numel(md.materials.rheology_Z)==1 & isnan(md.materials.rheology_Z),
+					md.materials=matice(md.materials);
+				else
+					md.materials=matdamageice(md.materials);
+				end
+			end
+			%2013 April 12
+			if numel(md.stressbalance.loadingforce==1)
+				md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+			end
+			%2013 April 17
+			if isa(md.hydrology,'hydrology'),
+				disp('Recovering old hydrology class');
+				md.hydrology=hydrologyshreve(md.materials);
+			end
+			%2013 October 9
+			if ~isa(md.damage,'damage'),
+				md.damage=damage();
+				md.damage.D=zeros(md.mesh.numberofvertices,1);
+				md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+			end
+			%2013 November 18
+			if ~isa(md.outputdefinition,'outputdefinition'),
+				md.outputdefinition=outputdefinition();
+			end
+			%2014 March 26th
+			if isa(md.mesh,'mesh'),
+				disp('Recovering old mesh class');
+				if isprop(md.mesh,'dimension'),
+					if md.mesh.dimension==2,
+						md.mesh=mesh2d(md.mesh);
+					else
+						md.mesh=mesh3dprisms(md.mesh);
+					end
+				else
+					md.mesh=mesh2dvertical(md.mesh);
+				end
+			end
+			%2014 November 12
+			if isa(md.calving,'double'); md.calving=calving(); end
+			%2016 October 11
+			if isa(md.esa,'double'); md.esa=esa(); end
+			%2017 February 10th
+			if isa(md.settings,'settings'), %this 'isa' verification: 2018 October 24th
+				if md.settings.solver_residue_threshold==0,
+					md.settings.solver_residue_threshold = 1e-6;
+				end
+			end
+			%2017 May 4th
+			if isa(md.amr,'double'); md.amr=amr(); end
+			%2017 Aug 29th
+			if isa(md.love,'double'); md.love=love(); end
+			%2017 Oct 26th
+			if isa(md.calving,'calvingdev')
+				disp('Warning: calvingdev is now calvingvonmises');
+				md.calving=calvingvonmises(md.calving); 
+			end
+			%2017 Dec 21st (needs to be here)
+			if isempty(md.settings)
+				disp('Warning: md.settings had to be reset, make sure to adjust md.settings.output_frequency and other fields');
+				md.settings = issmsettings();
+			end
+			%2018 Dec 1st
+			if md.settings.sb_coupling_frequency==0
+				md.settings.sb_coupling_frequency=1;
+			end
+			%2019 Jan..
+			if isa(md.frontalforcings,'double');
+				if(isprop('meltingrate',md.calving) & ~isnan(md.calving.meltingrate))
+		gia			disp('Warning: md.calving.meltingrate is now in md.frontalforcings');
+				end
+				md.frontalforcings=frontalforcings(md.calving); 
+			end
+			%2019 Feb 26
+			if isa(md.settings.results_on_nodes,'double')
+				if md.settings.results_on_nodes == 0
+					md.settings.results_on_nodes = {};
+				else
+					md.settings.results_on_nodes = {'all'};
+				end
+			end
+			%2019 Mar 28, updated 2021 April 23
+			if isa(md.smb,'SMBcomponents') | isa(md.smb,'SMBmeltcomponents') | isa(md.smb,'SMBforcing') | isa(md.smb,'SMBgemb') 
+				if any(strcmp(fieldnames(md.smb),'isclimatology'))
+					if isa(md.smb.isclimatology,'double')
+						if prod(size(md.smb.isclimatology)) ~= 1
+							md.smb.isclimatology = 0;
+						end
+						md.timestepping.cycle_forcing=md.smb.isclimatology;
+					end
+				end
+			end
+			%2019 Dec 16
+			if isa(md.dsl,'double') 
+				md.dsl=dsl();
+			end
+			%2020 April 24
+			if isa(md.smb,'SMBgemb')
+				if isa(md.smb.isconstrainsurfaceT,'double')
+					if prod(size(md.smb.isconstrainsurfaceT)) ~= 1
+						md.smb.isconstrainsurfaceT = 0;
+					end
+				end
+			end
+			%2021 February 17
+			if isa(md.sampling,'double'); md.sampling=sampling(); end
+			%VV
+			if ~isa(md.stochasticforcing,'stochasticforcing'); md.stochasticforcing=stochasticforcing(); end
+			%2022 Oct 28
+			if ~isa(md.debris,'debris'); md.debris=debris(); end
+		end% }}}
+	end
+	methods
+		function md = model(varargin) % {{{
+
+			switch nargin
+				case 0
+					md=setdefaultparameters(md,'earth');
+				otherwise
+					options=pairoptions(varargin{:});
+					planet=getfieldvalue(options,'planet','earth');
+					md=setdefaultparameters(md,planet);
+				end
+
+		end
+		%}}}
+		function disp(self) % {{{
+			disp(sprintf('%19s: %-23s -- %s','mesh'            ,['[1x1 ' class(self.mesh) ']'],'mesh properties'));
+			disp(sprintf('%19s: %-23s -- %s','mask'            ,['[1x1 ' class(self.mask) ']'],'defines grounded and floating elements'));
+			disp(sprintf('%19s: %-23s -- %s','geometry'        ,['[1x1 ' class(self.geometry) ']'],'surface elevation, bedrock topography, ice thickness,...'));
+			disp(sprintf('%19s: %-23s -- %s','constants'       ,['[1x1 ' class(self.constants) ']'],'physical constants'));
+			disp(sprintf('%19s: %-23s -- %s','smb'             ,['[1x1 ' class(self.smb) ']'],'surface mass balance'));
+			disp(sprintf('%19s: %-23s -- %s','basalforcings'   ,['[1x1 ' class(self.basalforcings) ']'],'bed forcings'));
+			disp(sprintf('%19s: %-23s -- %s','materials'       ,['[1x1 ' class(self.materials) ']'],'material properties'));
+			disp(sprintf('%19s: %-23s -- %s','damage'          ,['[1x1 ' class(self.damage) ']'],'parameters for damage evolution solution'));
+			disp(sprintf('%19s: %-23s -- %s','friction'        ,['[1x1 ' class(self.friction) ']'],'basal friction/drag properties'));
+			disp(sprintf('%19s: %-23s -- %s','flowequation'    ,['[1x1 ' class(self.flowequation) ']'],'flow equations'));
+			disp(sprintf('%19s: %-23s -- %s','timestepping'    ,['[1x1 ' class(self.timestepping) ']'],'time stepping for transient models'));
+			disp(sprintf('%19s: %-23s -- %s','initialization'  ,['[1x1 ' class(self.initialization) ']'],'initial guess/state'));
+			disp(sprintf('%19s: %-23s -- %s','rifts'           ,['[1x1 ' class(self.rifts) ']'],'rifts properties'));
+			disp(sprintf('%19s: %-23s -- %s','solidearth'      ,['[1x1 ' class(self.solidearth) ']'],'solidearth inputs and settings'));
+			disp(sprintf('%19s: %-23s -- %s','dsl'             ,['[1x1 ' class(self.dsl) ']'],'dynamic sea-level '));
+			disp(sprintf('%19s: %-23s -- %s','debug'           ,['[1x1 ' class(self.debug) ']'],'debugging tools (valgrind, gprof)'));
+			disp(sprintf('%19s: %-23s -- %s','verbose'         ,['[1x1 ' class(self.verbose) ']'],'verbosity level in solve'));
+			disp(sprintf('%19s: %-23s -- %s','settings'        ,['[1x1 ' class(self.settings) ']'],'settings properties'));
+			disp(sprintf('%19s: %-23s -- %s','toolkits'        ,['[1x1 ' class(self.toolkits) ']'],'PETSc options for each solution'));
+			disp(sprintf('%19s: %-23s -- %s','cluster'         ,['[1x1 ' class(self.cluster) ']'],'cluster parameters (number of CPUs...)'));
+			disp(sprintf('%19s: %-23s -- %s','balancethickness',['[1x1 ' class(self.balancethickness) ']'],'parameters for balancethickness solution'));
+			disp(sprintf('%19s: %-23s -- %s','stressbalance'   ,['[1x1 ' class(self.stressbalance) ']'],'parameters for stressbalance solution'));
+			disp(sprintf('%19s: %-23s -- %s','groundingline'   ,['[1x1 ' class(self.groundingline) ']'],'parameters for groundingline solution'));
+			disp(sprintf('%19s: %-23s -- %s','hydrology'       ,['[1x1 ' class(self.hydrology) ']'],'parameters for hydrology solution'));
+			disp(sprintf('%19s: %-23s -- %s','debris' 	   ,['[1x1 ' class(self.debris) ']'],'parameters for debris solution'));
+			disp(sprintf('%19s: %-23s -- %s','masstransport'   ,['[1x1 ' class(self.masstransport) ']'],'parameters for masstransport solution'));
+			disp(sprintf('%19s: %-23s -- %s','thermal'         ,['[1x1 ' class(self.thermal) ']'],'parameters for thermal solution'));
+			disp(sprintf('%19s: %-23s -- %s','steadystate'     ,['[1x1 ' class(self.steadystate) ']'],'parameters for steadystate solution'));
+			disp(sprintf('%19s: %-23s -- %s','transient'       ,['[1x1 ' class(self.transient) ']'],'parameters for transient solution'));
+			disp(sprintf('%19s: %-23s -- %s','levelset'        ,['[1x1 ' class(self.levelset) ']'],'parameters for moving boundaries (level-set method)'));
+			disp(sprintf('%19s: %-23s -- %s','calving'         ,['[1x1 ' class(self.calving) ']'],'parameters for calving'));
+			disp(sprintf('%19s: %-23s -- %s','frontalforcings' ,['[1x1 ' class(self.frontalforcings) ']'],'parameters for frontalforcings'));
+			disp(sprintf('%19s: %-23s -- %s','esa'             ,['[1x1 ' class(self.esa) ']'],'parameters for elastic adjustment solution'));
+			disp(sprintf('%19s: %-23s -- %s','love'            ,['[1x1 ' class(self.love) ']'],'parameters for love solution'));
+			disp(sprintf('%19s: %-23s -- %s','sampling'        ,['[1x1 ' class(self.sampling) ']'],'parameters for stochastic sampler'));
+			disp(sprintf('%19s: %-23s -- %s','autodiff'        ,['[1x1 ' class(self.autodiff) ']'],'automatic differentiation parameters'));
+			disp(sprintf('%19s: %-23s -- %s','inversion'       ,['[1x1 ' class(self.inversion) ']'],'parameters for inverse methods'));
+			disp(sprintf('%19s: %-23s -- %s','qmu'             ,['[1x1 ' class(self.qmu) ']'],'Dakota properties'));
+			disp(sprintf('%19s: %-23s -- %s','amr'             ,['[1x1 ' class(self.amr) ']'],'adaptive mesh refinement properties'));
+			disp(sprintf('%19s: %-23s -- %s','outputdefinition',['[1x1 ' class(self.outputdefinition) ']'],'output definition'));
+			disp(sprintf('%19s: %-23s -- %s','results'         ,['[1x1 ' class(self.results) ']'],'model results'));
+			disp(sprintf('%19s: %-23s -- %s','radaroverlay'    ,['[1x1 ' class(self.radaroverlay) ']'],'radar image for plot overlay'));
+			disp(sprintf('%19s: %-23s -- %s','miscellaneous'   ,['[1x1 ' class(self.miscellaneous) ']'],'miscellaneous fields'));
+			disp(sprintf('%19s: %-23s -- %s','stochasticforcing',['[1x1 ' class(self.stochasticforcing) ']'],'stochasticity applied to model forcings'));
+		end % }}}
+		function md = setdefaultparameters(md,planet) % {{{
+
+			%initialize subclasses
+			md.mesh             = mesh2d();
+			md.mask             = mask();
+			md.constants        = constants();
+			md.geometry         = geometry();
+			md.initialization   = initialization();
+			md.smb              = SMBforcing();
+			md.basalforcings    = basalforcings();
+			md.friction         = friction();
+			md.rifts            = rifts();
+			md.solidearth       = solidearth(planet);
+			md.dsl              = dsl();
+			md.timestepping     = timestepping();
+			md.groundingline    = groundingline();
+			md.materials        = matice();
+			md.damage           = damage();
+			md.flowequation     = flowequation();
+			md.debug            = debug();
+			md.verbose          = verbose();
+			md.settings         = issmsettings();
+			md.toolkits         = toolkits();
+			md.cluster          = generic();
+			md.balancethickness = balancethickness();
+			md.stressbalance    = stressbalance();
+			md.hydrology        = hydrologyshreve();
+			md.debris           = debris();
+			md.masstransport    = masstransport();
+			md.thermal          = thermal();
+			md.steadystate      = steadystate();
+			md.transient        = transient();
+			md.levelset         = levelset();
+			md.calving          = calving();
+			md.frontalforcings  = frontalforcings();
+			md.love             = love();
+			md.esa              = esa();
+			md.sampling         = sampling();
+			md.autodiff         = autodiff();
+			md.inversion        = inversion();
+			md.qmu              = qmu();
+			md.amr              = amr();
+			md.radaroverlay     = radaroverlay();
+			md.results          = struct();
+			md.outputdefinition = outputdefinition();
+			md.miscellaneous    = miscellaneous();
+			md.private          = private();
+			md.stochasticforcing= stochasticforcing();
+		end
+		%}}}
+		function md = checkmessage(md,string) % {{{
+			if(nargout~=1) error('wrong usage, model must be an output'); end
+			disp(['model not consistent: ' string]);
+			md.private.isconsistent=false;
+		end
+		%}}}
+		function md = collapse(md)% {{{
+			%COLLAPSE - collapses a 3d mesh into a 2d mesh
+			%
+			%   This routine collapses a 3d model into a 2d model
+			%   and collapses all the fields of the 3d model by
+			%   taking their depth-averaged values
+			%
+			%   Usage:
+			%      md=collapse(md)
+			%
+			%   See also: EXTRUDE, MODELEXTRACT
+
+			%Check that the model is really a 3d model
+			if ~strcmp(md.mesh.elementtype(),'Penta'),
+				error('collapse error message: only 3d mesh can be collapsed')
+			end
+
+			%Start with changing all the fields from the 3d mesh 
+
+			%dealing with the friction law
+			%drag is limited to nodes that are on the bedrock.
+			if isa(md.friction,'friction'),
+				md.friction.coefficient=project2d(md,md.friction.coefficient,1);
+				md.friction.p=project2d(md,md.friction.p,1);
+				md.friction.q=project2d(md,md.friction.q,1);
+			elseif isa(md.friction,'frictioncoulomb'),
+				md.friction.coefficient=project2d(md,md.friction.coefficient,1);
+				md.friction.coefficientcoulomb=project2d(md,md.friction.coefficientcoulomb,1);
+				md.friction.p=project2d(md,md.friction.p,1);
+				md.friction.q=project2d(md,md.friction.q,1);
+			elseif isa(md.friction,'frictionhydro'),
+				md.friction.q=project2d(md,md.friction.q,1);
+				md.friction.C=project2d(md,md.friction.C,1);
+				md.friction.As=project2d(md,md.friction.As,1);
+				md.friction.effective_pressure=project2d(md,md.friction.effective_pressure,1);
+			elseif isa(md.friction,'frictionwaterlayer'),
+				md.friction.coefficient=project2d(md,md.friction.coefficient,1);
+				md.friction.p=project2d(md,md.friction.p,1);
+				md.friction.q=project2d(md,md.friction.q,1);
+				md.friction.water_layer=project2d(md,md.friction.water_layer,1);
+			elseif isa(md.friction,'frictionweertman'),
+				md.friction.C=project2d(md,md.friction.C,1);
+				md.friction.m=project2d(md,md.friction.m,1);
+			elseif isa(md.friction,'frictionweertmantemp'),
+				md.friction.C=project2d(md,md.friction.C,1);
+				md.friction.m=project2d(md,md.friction.m,1);
+			elseif isa(md.friction,'frictionjosh'),
+				md.friction.coefficient=project2d(md,md.friction.coefficient,1);
+				md.friction.pressure_adjusted_temperature=project2d(md,md.friction.pressure_adjusted_temperature,1);
+			else
+				disp('friction type not supported');
+			end
+
+			%observations
+			if ~isnan(md.inversion.vx_obs),
+				md.inversion.vx_obs=project2d(md,md.inversion.vx_obs,md.mesh.numberoflayers);
+			end
+			if ~isnan(md.inversion.vy_obs),
+				md.inversion.vy_obs=project2d(md,md.inversion.vy_obs,md.mesh.numberoflayers);
+			end
+			if ~isnan(md.inversion.vel_obs),
+				md.inversion.vel_obs=project2d(md,md.inversion.vel_obs,md.mesh.numberoflayers);
+			end
+			if ~isnan(md.inversion.thickness_obs),
+				md.inversion.thickness_obs=project2d(md,md.inversion.thickness_obs,md.mesh.numberoflayers);
+			end
+			if ~isnan(md.inversion.cost_functions_coefficients),
+				md.inversion.cost_functions_coefficients=project2d(md,md.inversion.cost_functions_coefficients,md.mesh.numberoflayers);
+			end
+			if numel(md.inversion.min_parameters)>1,
+				md.inversion.min_parameters=project2d(md,md.inversion.min_parameters,md.mesh.numberoflayers);
+			end
+			if numel(md.inversion.max_parameters)>1,
+				md.inversion.max_parameters=project2d(md,md.inversion.max_parameters,md.mesh.numberoflayers);
+			end
+			if isa(md.smb,'SMBforcing') & ~isnan(md.smb.mass_balance),
+				md.smb.mass_balance=project2d(md,md.smb.mass_balance,md.mesh.numberoflayers); 
+			elseif isa(md.smb,'SMBhenning') & ~isnan(md.smb.smbref),
+				md.smb.smbref=project2d(md,md.smb.smbref,md.mesh.numberoflayers);
+			end
+
+			%results
+			if ~isnan(md.initialization.vx),
+				md.initialization.vx=DepthAverage(md,md.initialization.vx);
+			end
+			if ~isnan(md.initialization.vy),
+				md.initialization.vy=DepthAverage(md,md.initialization.vy);
+			end
+			if ~isnan(md.initialization.vz),
+				md.initialization.vz=DepthAverage(md,md.initialization.vz);
+			end
+			if ~isnan(md.initialization.vel),
+				md.initialization.vel=DepthAverage(md,md.initialization.vel);
+			end
+			if ~isnan(md.initialization.temperature),
+				md.initialization.temperature=DepthAverage(md,md.initialization.temperature);
+			end
+			if ~isnan(md.initialization.pressure),
+				md.initialization.pressure=project2d(md,md.initialization.pressure,1);
+			end
+			if ~isnan(md.initialization.sediment_head),
+				md.initialization.sediment_head=project2d(md,md.initialization.sediment_head,1);
+			end
+			if ~isnan(md.initialization.epl_head),
+				md.initialization.epl_head=project2d(md,md.initialization.epl_head,1);
+			end
+			if ~isnan(md.initialization.epl_thickness),
+				md.initialization.epl_thickness=project2d(md,md.initialization.epl_thickness,1);
+			end
+			if ~isnan(md.initialization.waterfraction),
+				md.initialization.waterfraction=project2d(md,md.initialization.waterfraction,1);
+			end
+			if ~isnan(md.initialization.watercolumn),
+				md.initialization.watercolumn=project2d(md,md.initialization.watercolumn,1);
+			end
+			if ~isnan(md.initialization.debris),
+				md.initialization.debris=project2d(md,md.initialization.debris,1);
+			end
+
+
+			%elementstype
+			if ~isnan(md.flowequation.element_equation)
+				md.flowequation.element_equation=project2d(md,md.flowequation.element_equation,1);
+				md.flowequation.vertex_equation=project2d(md,md.flowequation.vertex_equation,1);
+				md.flowequation.borderSSA=project2d(md,md.flowequation.borderSSA,1);
+				md.flowequation.borderHO=project2d(md,md.flowequation.borderHO,1);
+				md.flowequation.borderFS=project2d(md,md.flowequation.borderFS,1);
+			end
+
+			%boundary conditions
+			md.stressbalance.spcvx=project2d(md,md.stressbalance.spcvx,md.mesh.numberoflayers);
+			md.stressbalance.spcvy=project2d(md,md.stressbalance.spcvy,md.mesh.numberoflayers);
+			md.stressbalance.spcvz=project2d(md,md.stressbalance.spcvz,md.mesh.numberoflayers);
+			md.stressbalance.referential=project2d(md,md.stressbalance.referential,md.mesh.numberoflayers);
+			md.stressbalance.loadingforce=project2d(md,md.stressbalance.loadingforce,md.mesh.numberoflayers);
+			if numel(md.masstransport.spcthickness)>1,
+				md.masstransport.spcthickness=project2d(md,md.masstransport.spcthickness,md.mesh.numberoflayers);
+			end
+			if numel(md.damage.spcdamage)>1,
+				md.damage.spcdamage=project2d(md,md.damage.spcdamage,md.mesh.numberoflayers);
+			end
+			if numel(md.levelset.spclevelset)>1,
+				md.levelset.spclevelset=project2d(md,md.levelset.spclevelset,md.mesh.numberoflayers);
+			end
+			md.thermal.spctemperature=project2d(md,md.thermal.spctemperature,md.mesh.numberoflayers);
+
+			% Hydrologydc variables
+			if isa(md.hydrology,'hydrologydc');
+				md.hydrology.spcsediment_head=project2d(md,md.hydrology.spcsediment_head,1);
+				md.hydrology.mask_eplactive_node=project2d(md,md.hydrology.mask_eplactive_node,1);
+				md.hydrology.sediment_transmitivity=project2d(md,md.hydrology.sediment_transmitivity,1);
+				md.hydrology.basal_moulin_input=project2d(md,md.hydrology.basal_moulin_input,1);
+				if(md.hydrology.isefficientlayer==1)
+					md.hydrology.spcepl_head=project2d(md,md.hydrology.spcepl_head,1);
+				end
+			end
+			
+			%materials
+			md.materials.rheology_B=DepthAverage(md,md.materials.rheology_B);
+			md.materials.rheology_n=project2d(md,md.materials.rheology_n,1);
+			if isprop(md.materials,'rheology_E')
+				md.materials.rheology_E=project2d(md,md.materials.rheology_E,1);
+			end
+			
+			%damage: 
+			if md.damage.isdamage,
+				md.damage.D=DepthAverage(md,md.damage.D);
+			end
+
+			%special for thermal modeling:
+			if ~isnan(md.basalforcings.groundedice_melting_rate),
+				md.basalforcings.groundedice_melting_rate=project2d(md,md.basalforcings.groundedice_melting_rate,1); 
+			end
+			if isprop(md.basalforcings,'floatingice_melting_rate') & ~isnan(md.basalforcings.floatingice_melting_rate),
+				md.basalforcings.floatingice_melting_rate=project2d(md,md.basalforcings.floatingice_melting_rate,1); 
+			end
+			md.basalforcings.geothermalflux=project2d(md,md.basalforcings.geothermalflux,1); %bedrock only gets geothermal flux
+
+			if isprop(md.calving,'coeff') & ~isnan(md.calving.coeff),
+				md.calving.coeff=project2d(md,md.calving.coeff,1); 
+			end
+			if isprop(md.frontalforcings,'meltingrate') & ~isnan(md.frontalforcings.meltingrate),
+				md.frontalforcings.meltingrate=project2d(md,md.frontalforcings.meltingrate,1); 
+			end
+
+			%update of connectivity matrix
+			md.mesh.average_vertex_connectivity=25;
+
+			%Collapse the mesh
+			nodes2d=md.mesh.numberofvertices2d;
+			elements2d=md.mesh.numberofelements2d;
+
+			%parameters
+			md.geometry.surface=project2d(md,md.geometry.surface,1);
+			md.geometry.thickness=project2d(md,md.geometry.thickness,1);
+			md.geometry.base=project2d(md,md.geometry.base,1);
+			if ~isnan(md.geometry.bed),
+				md.geometry.bed=project2d(md,md.geometry.bed,1);
+			end
+			if ~isnan(md.mask.ocean_levelset),
+				md.mask.ocean_levelset=project2d(md,md.mask.ocean_levelset,1);
+			end
+			if ~isnan(md.mask.ice_levelset),
+				md.mask.ice_levelset=project2d(md,md.mask.ice_levelset,1);
+			end
+
+			%lat long
+			if numel(md.mesh.lat)==md.mesh.numberofvertices,
+				md.mesh.lat=project2d(md,md.mesh.lat,1);
+			end
+			if numel(md.mesh.long)==md.mesh.numberofvertices,
+				md.mesh.long=project2d(md,md.mesh.long,1);
+			end
+
+			%outputdefinitions
+			for i=1:length(md.outputdefinition.definitions)
+				if isobject(md.outputdefinition.definitions{i})
+					%get subfields
+					solutionsubfields=fields(md.outputdefinition.definitions{i});
+					for j=1:length(solutionsubfields),
+						field=md.outputdefinition.definitions{i}.(solutionsubfields{j});
+						if length(field)==md.mesh.numberofvertices | length(field)==md.mesh.numberofelements,
+							md.outputdefinition.definitions{i}.(solutionsubfields{j})=project2d(md,md.outputdefinition.definitions{i}.(solutionsubfields{j}),1);
+						end
+					end
+				end
+			end
+
+			%Initialize 2d mesh
+			mesh=mesh2d();
+			mesh.x=md.mesh.x2d;
+			mesh.y=md.mesh.y2d;
+			mesh.numberofvertices=md.mesh.numberofvertices2d;
+			mesh.numberofelements=md.mesh.numberofelements2d;
+			mesh.elements=md.mesh.elements2d;
+			if numel(md.mesh.lat)==md.mesh.numberofvertices,
+				mesh.lat=project2d(md,md.mesh.lat,1);
+			end
+			if numel(md.mesh.long)==md.mesh.numberofvertices,
+				mesh.long=project2d(md,md.mesh.long,1);
+			end
+			mesh.epsg=md.mesh.epsg;
+			if numel(md.mesh.scale_factor)==md.mesh.numberofvertices,
+				mesh.scale_factor=project2d(md,md.mesh.scale_factor,1);
+			end
+			if ~isnan(md.mesh.vertexonboundary),
+				mesh.vertexonboundary=project2d(md,md.mesh.vertexonboundary,1);
+			end
+			if ~isnan(md.mesh.elementconnectivity),
+				mesh.elementconnectivity=project2d(md,md.mesh.elementconnectivity,1);
+			end
+			md.mesh=mesh;
+			md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+			md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+			md.mesh.segments=contourenvelope(md.mesh);
+
+		end % }}}
+		function md2 = extract(md,area,varargin) % {{{
+			%extract - extract a model according to an Argus contour or flag list
+			%
+			%   This routine extracts a submodel from a bigger model with respect to a given contour
+			%   md must be followed by the corresponding exp file or flags list
+			%   It can either be a domain file (argus type, .exp extension), or an array of element flags. 
+			%   If user wants every element outside the domain to be 
+			%   extract2d, add '~' to the name of the domain file (ex: '~HO.exp');
+			%   an empty string '' will be considered as an empty domain
+			%   a string 'all' will be considered as the entire domain
+			%
+			%   Usage:
+			%      md2=extract(md,area);
+			%
+			%   Examples:
+			%      md2=extract(md,'Domain.exp');
+			%
+			%   See also: EXTRUDE, COLLAPSE
+
+			%copy model
+			md1=md;
+
+			%recover optoins: 
+			options=pairoptions(varargin{:});
+
+			%some checks
+			if ((nargin<2) | (nargout~=1)),
+				help extract
+				error('extract error message: bad usage');
+			end
+
+			%get elements that are inside area
+			flag_elem=FlagElements(md1,area);
+			if ~any(flag_elem),
+				error('extracted model is empty');
+			end
+
+			%kick out all elements with 3 dirichlets
+			if getfieldvalue(options,'spccheck',1)
+				spc_elem=find(~flag_elem);
+				spc_node=sort(unique(md1.mesh.elements(spc_elem,:)));
+				flag=ones(md1.mesh.numberofvertices,1);
+				flag(spc_node)=0;
+				pos=find(sum(flag(md1.mesh.elements),2)==0);
+				flag_elem(pos)=0;
+			end
+
+			%extracted elements and nodes lists
+			pos_elem=find(flag_elem);
+			pos_node=sort(unique(md1.mesh.elements(pos_elem,:)));
+
+			%keep track of some fields
+			numberofvertices1=md1.mesh.numberofvertices;
+			numberofelements1=md1.mesh.numberofelements;
+			numberofvertices2=length(pos_node);
+			numberofelements2=length(pos_elem);
+			flag_node=zeros(numberofvertices1,1);
+			flag_node(pos_node)=1;
+
+			%Create Pelem and Pnode (transform old nodes in new nodes and same thing for the elements)
+			Pelem=zeros(numberofelements1,1);
+			Pelem(pos_elem)=[1:numberofelements2]';
+			Pnode=zeros(numberofvertices1,1);
+			Pnode(pos_node)=[1:numberofvertices2]';
+
+			%renumber the elements (some nodes won't exist anymore)
+			elements_1=md1.mesh.elements;
+			elements_2=elements_1(pos_elem,:);
+			elements_2(:,1)=Pnode(elements_2(:,1));
+			elements_2(:,2)=Pnode(elements_2(:,2));
+			elements_2(:,3)=Pnode(elements_2(:,3));
+			if isa(md1.mesh,'mesh3dprisms'),
+				elements_2(:,4)=Pnode(elements_2(:,4));
+				elements_2(:,5)=Pnode(elements_2(:,5));
+				elements_2(:,6)=Pnode(elements_2(:,6));
+			end
+
+			%OK, now create the new model!
+
+			%take every field from model
+			md2=md1;
+
+			%automatically modify fields
+
+			%loop over model fields
+			model_fields=fields(md1);
+			for i=1:length(model_fields),
+				%get field
+				field=md1.(model_fields{i});
+				fieldsize=size(field);
+				if isobject(field), %recursive call
+					object_fields=fields(md1.(model_fields{i}));
+					for j=1:length(object_fields),
+						%get field
+						field=md1.(model_fields{i}).(object_fields{j});
+						fieldsize=size(field);
+						%size = number of nodes * n
+						if fieldsize(1)==numberofvertices1
+							md2.(model_fields{i}).(object_fields{j})=field(pos_node,:);
+						elseif (fieldsize(1)==numberofvertices1+1)
+							md2.(model_fields{i}).(object_fields{j})=[field(pos_node,:); field(end,:)];
+						%size = number of elements * n
+						elseif fieldsize(1)==numberofelements1
+							md2.(model_fields{i}).(object_fields{j})=field(pos_elem,:);
+						elseif (fieldsize(1)==numberofelements1+1)
+							md2.(model_fields{i}).(object_fields{j})=[field(pos_elem,:); field(end,:)];
+						end
+					end
+				else
+					%size = number of nodes * n
+					if fieldsize(1)==numberofvertices1
+						md2.(model_fields{i})=field(pos_node,:);
+					elseif (fieldsize(1)==numberofvertices1+1)
+						md2.(model_fields{i})=[field(pos_node,:); field(end,:)];
+					%size = number of elements * n
+					elseif fieldsize(1)==numberofelements1
+						md2.(model_fields{i})=field(pos_elem,:);
+					elseif (fieldsize(1)==numberofelements1+1)
+						md2.(model_fields{i})=[field(pos_elem,:); field(end,:)];
+					end
+				end
+			end
+
+			%modify some specific fields
+
+			%Mesh
+			md2.mesh.numberofelements=numberofelements2;
+			md2.mesh.numberofvertices=numberofvertices2;
+			md2.mesh.elements=elements_2;
+
+			%mesh.uppervertex mesh.lowervertex
+			if isa(md1.mesh,'mesh3dprisms'),
+				md2.mesh.uppervertex=md1.mesh.uppervertex(pos_node);
+				pos=find(~isnan(md2.mesh.uppervertex));
+				md2.mesh.uppervertex(pos)=Pnode(md2.mesh.uppervertex(pos));
+
+				md2.mesh.lowervertex=md1.mesh.lowervertex(pos_node);
+				pos=find(~isnan(md2.mesh.lowervertex));
+				md2.mesh.lowervertex(pos)=Pnode(md2.mesh.lowervertex(pos));
+
+				md2.mesh.upperelements=md1.mesh.upperelements(pos_elem);
+				pos=find(~isnan(md2.mesh.upperelements));
+				md2.mesh.upperelements(pos)=Pelem(md2.mesh.upperelements(pos));
+
+				md2.mesh.lowerelements=md1.mesh.lowerelements(pos_elem);
+				pos=find(~isnan(md2.mesh.lowerelements));
+				md2.mesh.lowerelements(pos)=Pelem(md2.mesh.lowerelements(pos));
+			end
+
+			%Initial 2d mesh
+			if isa(md1.mesh,'mesh3dprisms'),
+				flag_elem_2d=flag_elem(1:md1.mesh.numberofelements2d);
+				pos_elem_2d=find(flag_elem_2d);
+				flag_node_2d=flag_node(1:md1.mesh.numberofvertices2d);
+				pos_node_2d=find(flag_node_2d);
+
+				md2.mesh.numberofelements2d=length(pos_elem_2d);
+				md2.mesh.numberofvertices2d=length(pos_node_2d);
+				md2.mesh.elements2d=md1.mesh.elements2d(pos_elem_2d,:);
+				md2.mesh.elements2d(:,1)=Pnode(md2.mesh.elements2d(:,1));
+				md2.mesh.elements2d(:,2)=Pnode(md2.mesh.elements2d(:,2));
+				md2.mesh.elements2d(:,3)=Pnode(md2.mesh.elements2d(:,3));
+
+				md2.mesh.x2d=md1.mesh.x(pos_node_2d);
+				md2.mesh.y2d=md1.mesh.y(pos_node_2d);
+			end
+
+			%Edges
+			if(dimension(md.mesh)==2),
+				if size(md2.mesh.edges,2)>1, %do not use ~isnan because there are some NaNs...
+					%renumber first two columns
+					pos=find(md2.mesh.edges(:,4)~=-1);
+					md2.mesh.edges(:  ,1)=Pnode(md2.mesh.edges(:,1));
+					md2.mesh.edges(:  ,2)=Pnode(md2.mesh.edges(:,2));
+					md2.mesh.edges(:  ,3)=Pelem(md2.mesh.edges(:,3));
+					md2.mesh.edges(pos,4)=Pelem(md2.mesh.edges(pos,4));
+					%remove edges when the 2 vertices are not in the domain.
+					md2.mesh.edges=md2.mesh.edges(find(md2.mesh.edges(:,1) & md2.mesh.edges(:,2)),:);
+					%Replace all zeros by -1 in the last two columns
+					pos=find(md2.mesh.edges(:,3)==0);
+					md2.mesh.edges(pos,3)=-1;
+					pos=find(md2.mesh.edges(:,4)==0);
+					md2.mesh.edges(pos,4)=-1;
+					%Invert -1 on the third column with last column (Also invert first two columns!!)
+					pos=find(md2.mesh.edges(:,3)==-1);
+					md2.mesh.edges(pos,3)=md2.mesh.edges(pos,4);
+					md2.mesh.edges(pos,4)=-1;
+					values=md2.mesh.edges(pos,2);
+					md2.mesh.edges(pos,2)=md2.mesh.edges(pos,1);
+					md2.mesh.edges(pos,1)=values;
+					%Finally remove edges that do not belong to any element
+					pos=find(md2.mesh.edges(:,3)==-1 & md2.mesh.edges(:,4)==-1);
+					md2.mesh.edges(pos,:)=[];
+				end
+			end
+
+			%Penalties
+			if ~isnan(md2.stressbalance.vertex_pairing),
+				for i=1:size(md1.stressbalance.vertex_pairing,1);
+					md2.stressbalance.vertex_pairing(i,:)=Pnode(md1.stressbalance.vertex_pairing(i,:));
+				end
+				md2.stressbalance.vertex_pairing=md2.stressbalance.vertex_pairing(find(md2.stressbalance.vertex_pairing(:,1)),:);
+			end
+			if ~isnan(md2.masstransport.vertex_pairing),
+				for i=1:size(md1.masstransport.vertex_pairing,1);
+					md2.masstransport.vertex_pairing(i,:)=Pnode(md1.masstransport.vertex_pairing(i,:));
+				end
+				md2.masstransport.vertex_pairing=md2.masstransport.vertex_pairing(find(md2.masstransport.vertex_pairing(:,1)),:);
+			end
+
+			%recreate segments
+			if isa(md1.mesh,'mesh2d') | isa(md1.mesh','mesh3dsurface'),
+				md2.mesh.vertexconnectivity=NodeConnectivity(md2.mesh.elements,md2.mesh.numberofvertices);
+				md2.mesh.elementconnectivity=ElementConnectivity(md2.mesh.elements,md2.mesh.vertexconnectivity);
+				md2.mesh.segments=contourenvelope(md2.mesh);
+				md2.mesh.vertexonboundary=zeros(numberofvertices2,1);
+				md2.mesh.vertexonboundary(md2.mesh.segments(:,1:2))=1;
+			else
+				%First do the connectivity for the contourenvelope in 2d
+				md2.mesh.vertexconnectivity=NodeConnectivity(md2.mesh.elements2d,md2.mesh.numberofvertices2d);
+				md2.mesh.elementconnectivity=ElementConnectivity(md2.mesh.elements2d,md2.mesh.vertexconnectivity);
+				segments=contourenvelope(md2.mesh);
+				md2.mesh.vertexonboundary=zeros(numberofvertices2/md2.mesh.numberoflayers,1);
+				md2.mesh.vertexonboundary(segments(:,1:2))=1;
+				md2.mesh.vertexonboundary=repmat(md2.mesh.vertexonboundary,md2.mesh.numberoflayers,1);
+				%Then do it for 3d as usual
+				md2.mesh.vertexconnectivity=NodeConnectivity(md2.mesh.elements,md2.mesh.numberofvertices);
+				md2.mesh.elementconnectivity=ElementConnectivity(md2.mesh.elements,md2.mesh.vertexconnectivity);
+			end
+
+			%Boundary conditions: Dirichlets on new boundary
+			%Catch the elements that have not been extracted
+			orphans_elem=find(~flag_elem);
+			orphans_node=unique(md1.mesh.elements(orphans_elem,:))';
+			%Figure out which node are on the boundary between md2 and md1
+			nodestoflag1=intersect(orphans_node,pos_node);
+			nodestoflag2=Pnode(nodestoflag1);
+			if numel(md1.stressbalance.spcvx)>1 & numel(md1.stressbalance.spcvy)>1 & numel(md1.stressbalance.spcvz)>1,
+				if isprop(md1.inversion,'vx_obs') & numel(md1.inversion.vx_obs)>1 & numel(md1.inversion.vy_obs)>1
+					md2.stressbalance.spcvx(nodestoflag2)=md2.inversion.vx_obs(nodestoflag2); 
+					md2.stressbalance.spcvy(nodestoflag2)=md2.inversion.vy_obs(nodestoflag2);
+				else
+					md2.stressbalance.spcvx(nodestoflag2)=NaN;
+					md2.stressbalance.spcvy(nodestoflag2)=NaN;
+					disp(' ')
+					disp('!! extract warning: spc values should be checked !!')
+					disp(' ')
+				end
+				%put 0 for vz
+				md2.stressbalance.spcvz(nodestoflag2)=0;
+			end
+			if ~isnan(md1.thermal.spctemperature),
+				md2.thermal.spctemperature(nodestoflag2,1)=1;
+			end
+
+			%Results fields
+			if isstruct(md1.results),
+				md2.results=struct();
+				solutionfields=fields(md1.results);
+				for i=1:length(solutionfields),
+					if isstruct(md1.results.(solutionfields{i}))
+						%get subfields
+						% loop over time steps
+						for p=1:length(md1.results.(solutionfields{i}))
+							current = md1.results.(solutionfields{i})(p);
+							solutionsubfields=fields(current);
+							for j=1:length(solutionsubfields),
+							field=md1.results.(solutionfields{i})(p).(solutionsubfields{j});
+							if length(field)==numberofvertices1,
+								md2.results.(solutionfields{i})(p).(solutionsubfields{j})=field(pos_node);
+							elseif length(field)==numberofelements1,
+								md2.results.(solutionfields{i})(p).(solutionsubfields{j})=field(pos_elem);
+							else
+								md2.results.(solutionfields{i})(p).(solutionsubfields{j})=field;
+							end
+							end
+						end
+					else
+						field=md1.results.(solutionfields{i});
+						if length(field)==numberofvertices1,
+							md2.results.(solutionfields{i})=field(pos_node);
+						elseif length(field)==numberofelements1,
+							md2.results.(solutionfields{i})=field(pos_elem);
+						else
+							md2.results.(solutionfields{i})=field;
+						end
+					end
+				end
+			end
+
+			%OutputDefinitions fields
+			for i=1:length(md1.outputdefinition.definitions),
+				if isobject(md1.outputdefinition.definitions{i})
+					%get subfields
+					solutionsubfields=fields(md1.outputdefinition.definitions{i});
+					for j=1:length(solutionsubfields),
+						field=md1.outputdefinition.definitions{i}.(solutionsubfields{j});
+						if length(field)==numberofvertices1,
+							md2.outputdefinition.definitions{i}.(solutionsubfields{j})=field(pos_node);
+						elseif length(field)==numberofelements1,
+							md2.outputdefinition.definitions{i}.(solutionsubfields{j})=field(pos_elem);
+						elseif size(field,1)==numberofvertices1+1
+							md2.outputdefinition.definitions{i}.(solutionsubfields{j})=[field(pos_node,:); field(end,:)];
+						end
+					end
+				end
+			end
+			
+			%independents
+			for i=1:length(md1.autodiff.independents)
+				independentfield=fields(md1.autodiff.independents{i});
+				for j=1:length(independentfield)
+					field=md1.autodiff.independents{i}.(independentfield{j});
+					if length(field)==numberofvertices1
+						md2.autodiff.independents{i}.(independentfield{j})=field(pos_node);
+					elseif length(field)==numberofelements1
+						md2.autodiff.independents{i}.(independentfield{j})=field(pos_elem);
+					end
+				end
+			end
+
+			%Keep track of pos_node and pos_elem
+			md2.mesh.extractedvertices=pos_node;
+			md2.mesh.extractedelements=pos_elem;
+		end % }}}
+		function md2 = refine(md) % {{{
+			%refine - split all triangles into 3 to refine the mesh everywhere
+			%
+			%   This function only works for 2d triangle meshes
+			%
+			%   Usage:
+			%      md2=refine(md);
+			%
+			%   See also: EXTRUDE, COLLAPSE, EXTRACT
+
+			%Check incoming 
+			if ~strcmp(elementtype(md.mesh),'Tria')
+				error('not supported for 3d meshes');
+			end
+
+			%copy model
+			md2=md;
+
+			disp('Getting edges');
+			%initialization of some variables
+			nbe   = md.mesh.numberofelements;
+			nbv   = md.mesh.numberofvertices;
+			index = md.mesh.elements;
+			elementslist=1:nbe;
+			%1: list of edges
+			edges=[index(:,[1,2]); index(:,[2,3]); index(:,[3,1])];
+			%2: find unique edges
+			[edges,I,J]=unique(sort(edges,2),'rows');
+			%3: unique edge numbers
+			vec=J;
+			%4: unique edges numbers in each triangle (2 triangles sharing the same edge will have the same edge number)
+			edges_tria=[vec(elementslist+nbe) vec(elementslist+2*nbe) vec(elementslist)];
+
+			% We divide each element as follows
+			%
+			%                   e2
+			%    n1 ------------+------------ n3
+			%       \          / \          /
+			%        \    1   /   \   3    /
+			%         \      /     \      /
+			%          \    /   2   \    /
+			%           \  /         \  /
+			%         e3 +____________\/ e1
+			%             \           /
+			%              \         /
+			%               \   4   /
+			%                \     /
+			%                 \   /
+			%                   n2
+
+			%Create new coordinates
+			disp('Remeshing...');
+			x_edges = 0.5*(md.mesh.x(edges(:,1)) + md.mesh.x(edges(:,2)));
+			y_edges = 0.5*(md.mesh.y(edges(:,1)) + md.mesh.y(edges(:,2)));
+			xnew = [md2.mesh.x;x_edges];
+			ynew = [md2.mesh.y;y_edges];
+			indexnew = [...
+				index(:,1)          nbv+edges_tria(:,3) nbv+edges_tria(:,2);...
+				nbv+edges_tria(:,2) nbv+edges_tria(:,3) nbv+edges_tria(:,1);...
+				nbv+edges_tria(:,2) nbv+edges_tria(:,1) index(:,3);...
+				nbv+edges_tria(:,3) index(:,2)          nbv+edges_tria(:,1)];
+			%md2.mesh.numberofelements = 4*nbe;
+			%md2.mesh.numberofvertices = nbv + size(edges,1);
+
+			%Call Bamg to update other mesh properties
+			[bamgmesh_out bamggeom_out]=BamgConvertMesh(indexnew,xnew,ynew);
+			md2.mesh.x              = bamgmesh_out.Vertices(:,1);
+			md2.mesh.y              = bamgmesh_out.Vertices(:,2);
+			md2.mesh.elements       = bamgmesh_out.Triangles(:,1:3);
+			md2.mesh.edges          = bamgmesh_out.IssmEdges;
+			md2.mesh.segments       = bamgmesh_out.IssmSegments(:,1:3);
+			md2.mesh.segmentmarkers = bamgmesh_out.IssmSegments(:,4);
+			md2.mesh.numberofelements = size(md2.mesh.elements,1);
+			md2.mesh.numberofvertices = length(md2.mesh.x);
+			md2.mesh.numberofedges    = size(md2.mesh.edges,1);
+			md2.mesh.vertexonboundary = zeros(md2.mesh.numberofvertices,1); md2.mesh.vertexonboundary(md2.mesh.segments(:,1:2)) = 1;
+
+			%Deal with boundary
+			md2.mesh.vertexonboundary = [md.mesh.vertexonboundary;sum(md.mesh.vertexonboundary(edges),2)==2];
+			md2.mesh.elementconnectivity=bamgmesh_out.ElementConnectivity;
+			md2.mesh.elementconnectivity(find(isnan(md2.mesh.elementconnectivity)))=0;
+			disp(['   Old number of elements: ' num2str(nbe)]);
+			disp(['   New number of elements: ' num2str(4*nbe)]);
+
+			disp('Interpolate all fields');
+			numberofvertices1 = md.mesh.numberofvertices;
+			numberofelements1 = md.mesh.numberofelements;
+			nbv2 = md2.mesh.numberofvertices;
+
+			%Create transformation vectors
+			nbedges = size(edges,1);
+			Pelem = sparse(1:4*nbe,repmat([1:nbe],1,4),ones(4*nbe,1),4*nbe,nbe);
+			Pnode = sparse([1:nbv,repmat([nbv+1:nbv+nbedges],1,2)],[1:nbv edges(:)'],[ones(nbv,1);1/2*ones(2*nbedges,1)],md2.mesh.numberofvertices,nbv);
+
+			%Deal with mesh
+			if numel(md.mesh.scale_factor)==md.mesh.numberofvertices
+				md2.mesh.scale_factor=Pnode*md.mesh.scale_factor;
+			end
+
+			%loop over model fields
+			model_fields=setxor(fields(md),{'mesh'});
+			%remove mesh from this field
+			for i=1:length(model_fields),
+				%get field
+				field=md.(model_fields{i});
+				fieldsize=size(field);
+				if isobject(field), %recursive call
+					object_fields=fields(md.(model_fields{i}));
+					for j=1:length(object_fields),
+						%get field
+						field=md.(model_fields{i}).(object_fields{j});
+						fieldsize=size(field);
+						%size = number of nodes * n
+						if fieldsize(1)==numberofvertices1
+							md2.(model_fields{i}).(object_fields{j})=Pnode*field;
+						elseif (fieldsize(1)==numberofvertices1+1)
+							md2.(model_fields{i}).(object_fields{j})=[Pnode*field(1:end-1,:); field(end,:)];
+							%size = number of elements * n
+						elseif fieldsize(1)==numberofelements1
+							md2.(model_fields{i}).(object_fields{j})=Pelem*field;
+						elseif (fieldsize(1)==numberofelements1+1)
+							md2.(model_fields{i}).(object_fields{j})=[Pelem*field(1:end-1,:); field(end,:)];
+						end
+					end
+				else
+					%size = number of nodes * n
+					if fieldsize(1)==numberofvertices1
+						md2.(model_fields{i})=Pnode*field;
+					elseif (fieldsize(1)==numberofvertices1+1)
+						md2.(model_fields{i})=[Pnode*field(1:end-1,:); field(end,:)];
+						%size = number of elements * n
+					elseif fieldsize(1)==numberofelements1
+						md2.(model_fields{i})=Pelem*field;
+					elseif (fieldsize(1)==numberofelements1+1)
+						md2.(model_fields{i})=[Pelem*field(1:end-1,:); field(end,:)];
+					end
+				end
+			end
+
+		end % }}}
+		function md = extrude(md,varargin) % {{{
+			%EXTRUDE - vertically extrude a 2d mesh
+			%
+			%   vertically extrude a 2d mesh and create corresponding 3d mesh.
+			%   The vertical distribution can:
+			%    - follow a polynomial law
+			%    - follow two polynomial laws, one for the lower part and one for the upper part of the mesh
+			%    - be discribed by a list of coefficients (between 0 and 1)
+			%   
+			%
+			%   Usage:
+			%      md=extrude(md,numlayers,extrusionexponent);
+			%      md=extrude(md,numlayers,lowerexponent,upperexponent);
+			%      md=extrude(md,listofcoefficients);
+			%
+			%   Example:
+			%      md=extrude(md,15,1.3);
+			%      md=extrude(md,15,1.3,1.2);
+			%      md=extrude(md,[0 0.2 0.5 0.7 0.9 0.95 1]);
+			%
+			%   See also: MODELEXTRACT, COLLAPSE
+
+			%some checks on list of arguments
+			if ((nargin>4) | (nargin<2) | (nargout~=1)),
+				help extrude;
+				error('extrude error message');
+			end
+			if numel(md.geometry.base)~=md.mesh.numberofvertices || numel(md.geometry.surface)~=md.mesh.numberofvertices
+				error('model has not been parameterized yet: base and/or surface not set');
+			end
+
+			%Extrude the mesh
+			if nargin==2, %list of coefficients
+				clist=varargin{1};
+				if any(clist<0) | any(clist>1),
+					error('extrusioncoefficients must be between 0 and 1');
+				end
+				extrusionlist=sort(unique([clist(:);0;1]));
+				numlayers=length(extrusionlist);
+			elseif nargin==3, %one polynomial law
+				if varargin{2}<=0,
+					help extrude;
+					error('extrusionexponent must be >=0');
+				end
+				numlayers=varargin{1};
+				extrusionlist=((0:1:numlayers-1)/(numlayers-1)).^varargin{2};
+			elseif nargin==4, %two polynomial laws
+				numlayers=varargin{1};
+				lowerexp=varargin{2};
+				upperexp=varargin{3};
+
+				if varargin{2}<=0 | varargin{3}<=0,
+					help extrude;
+					error('lower and upper extrusionexponents must be >=0');
+				end
+
+				lowerextrusionlist=[(0:2/(numlayers-1):1).^lowerexp]/2;
+				upperextrusionlist=[(0:2/(numlayers-1):1).^upperexp]/2;
+				extrusionlist=sort(unique([lowerextrusionlist 1-upperextrusionlist]));
+
+			end
+
+			if numlayers<2,
+				error('number of layers should be at least 2');
+			end
+			if strcmp(md.mesh.domaintype(),'3D')
+				error('Cannot extrude a 3d mesh (extrude cannot be called more than once)');
+			end
+
+			%Initialize with 2d mesh
+			mesh2d = md.mesh;
+			md.mesh=mesh3dprisms();
+			md.mesh.x                           = mesh2d.x;
+			md.mesh.y                           = mesh2d.y;
+			md.mesh.elements                    = mesh2d.elements;
+			md.mesh.numberofelements            = mesh2d.numberofelements;
+			md.mesh.numberofvertices            = mesh2d.numberofvertices;
+
+			md.mesh.lat                         = mesh2d.lat;
+			md.mesh.long                        = mesh2d.long;
+			md.mesh.epsg                        = mesh2d.epsg;
+			md.mesh.scale_factor                = mesh2d.scale_factor;
+
+			md.mesh.vertexonboundary            = mesh2d.vertexonboundary;
+			md.mesh.vertexconnectivity          = mesh2d.vertexconnectivity;
+			md.mesh.elementconnectivity         = mesh2d.elementconnectivity;
+			md.mesh.average_vertex_connectivity = mesh2d.average_vertex_connectivity;
+
+			md.mesh.extractedvertices           = mesh2d.extractedvertices;
+			md.mesh.extractedelements           = mesh2d.extractedelements;
+
+			md.mesh.segments2d                  = mesh2d.segments;
+
+			x3d=[]; 
+			y3d=[];
+			z3d=[];  %the lower node is on the bed
+			thickness3d=md.geometry.thickness; %thickness and bed for these nodes
+			bed3d=md.geometry.base;
+
+			%Create the new layers
+			for i=1:numlayers,
+				x3d=[x3d; md.mesh.x]; 
+				y3d=[y3d; md.mesh.y];
+				%nodes are distributed between bed and surface accordingly to the given exponent
+				z3d=[z3d; bed3d+thickness3d*extrusionlist(i)]; 
+			end
+			number_nodes3d=size(x3d,1); %number of 3d nodes for the non extruded part of the mesh
+
+			%Extrude elements 
+			elements3d=[];
+			for i=1:numlayers-1,
+				elements3d=[elements3d;[md.mesh.elements+(i-1)*md.mesh.numberofvertices md.mesh.elements+i*md.mesh.numberofvertices]]; %Create the elements of the 3d mesh for the non extruded part
+			end
+			number_el3d=size(elements3d,1); %number of 3d nodes for the non extruded part of the mesh
+
+			%Keep a trace of lower and upper nodes
+			lowervertex=NaN*ones(number_nodes3d,1);
+			uppervertex=NaN*ones(number_nodes3d,1);
+			lowervertex(md.mesh.numberofvertices+1:end)=1:(numlayers-1)*md.mesh.numberofvertices;
+			uppervertex(1:(numlayers-1)*md.mesh.numberofvertices)=md.mesh.numberofvertices+1:number_nodes3d;
+			md.mesh.lowervertex=lowervertex;
+			md.mesh.uppervertex=uppervertex;
+
+			%same for lower and upper elements
+			lowerelements=NaN*ones(number_el3d,1);
+			upperelements=NaN*ones(number_el3d,1);
+			lowerelements(md.mesh.numberofelements+1:end)=1:(numlayers-2)*md.mesh.numberofelements;
+			upperelements(1:(numlayers-2)*md.mesh.numberofelements)=md.mesh.numberofelements+1:(numlayers-1)*md.mesh.numberofelements;
+			md.mesh.lowerelements=lowerelements;
+			md.mesh.upperelements=upperelements;
+
+			%Save old mesh 
+			md.mesh.x2d=md.mesh.x;
+			md.mesh.y2d=md.mesh.y;
+			md.mesh.elements2d=md.mesh.elements;
+			md.mesh.numberofelements2d=md.mesh.numberofelements;
+			md.mesh.numberofvertices2d=md.mesh.numberofvertices;
+
+			%Build global 3d mesh 
+			md.mesh.elements=elements3d;
+			md.mesh.x=x3d;
+			md.mesh.y=y3d;
+			md.mesh.z=z3d;
+			md.mesh.numberofelements=number_el3d;
+			md.mesh.numberofvertices=number_nodes3d;
+			md.mesh.numberoflayers=numlayers;
+
+			%Ok, now deal with the other fields from the 2d mesh:
+
+			%bedinfo and surface info
+			md.mesh.vertexonbase=project3d(md,'vector',ones(md.mesh.numberofvertices2d,1),'type','node','layer',1);
+			md.mesh.vertexonsurface=project3d(md,'vector',ones(md.mesh.numberofvertices2d,1),'type','node','layer',md.mesh.numberoflayers);
+			md.mesh.vertexonboundary=project3d(md,'vector',md.mesh.vertexonboundary,'type','node');
+
+			%lat long
+			md.mesh.lat=project3d(md,'vector',md.mesh.lat,'type','node');
+			md.mesh.long=project3d(md,'vector',md.mesh.long,'type','node');
+			md.mesh.scale_factor=project3d(md,'vector',md.mesh.scale_factor,'type','node');
+
+			md.geometry=extrude(md.geometry,md);
+			md.friction  = extrude(md.friction,md);
+			md.inversion = extrude(md.inversion,md);
+			md.smb = extrude(md.smb,md);
+			md.initialization = extrude(md.initialization,md);
+
+			md.flowequation=md.flowequation.extrude(md);
+			md.stressbalance=extrude(md.stressbalance,md);
+			md.thermal=md.thermal.extrude(md);
+			md.masstransport=md.masstransport.extrude(md);
+			md.levelset=extrude(md.levelset,md);
+			md.calving=extrude(md.calving,md);
+			md.frontalforcings=extrude(md.frontalforcings,md);
+			md.hydrology = extrude(md.hydrology,md);
+			md.debris = extrude(md.debris,md);
+			md.solidearth = extrude(md.solidearth,md);
+			md.dsl = extrude(md.dsl,md);
+			md.stochasticforcing = extrude(md.stochasticforcing,md);
+
+			%connectivity
+			if ~isnan(md.mesh.elementconnectivity)
+				md.mesh.elementconnectivity=repmat(md.mesh.elementconnectivity,numlayers-1,1);
+				md.mesh.elementconnectivity(find(md.mesh.elementconnectivity==0))=NaN;
+				for i=2:numlayers-1,
+					md.mesh.elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)...
+						=md.mesh.elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)+md.mesh.numberofelements2d;
+				end
+				md.mesh.elementconnectivity(find(isnan(md.mesh.elementconnectivity)))=0;
+			end
+
+			md.materials=extrude(md.materials,md);
+			md.damage=extrude(md.damage,md);
+			md.mask=extrude(md.mask,md);
+			md.qmu=extrude(md.qmu,md);
+			md.basalforcings=extrude(md.basalforcings,md);
+			md.outputdefinition=extrude(md.outputdefinition,md);
+
+			%increase connectivity if less than 25:
+			if md.mesh.average_vertex_connectivity<=25,
+				md.mesh.average_vertex_connectivity=100;
+			end
+		end % }}}
+		function md = structtomodel(md,structmd) % {{{
+
+			if ~isstruct(structmd) error('input model is not a structure'); end
+
+			%loaded model is a struct, initialize output and recover all fields
+			md = structtoobj(model,structmd);
+
+			%Old field now classes
+			if (isfield(structmd,'timestepping') & isnumeric(md.timestepping)), md.timestepping=timestepping(); end
+			if (isfield(structmd,'mask') & isnumeric(md.mask)),md.mask=mask(); end
+
+			%Field name change
+			if isfield(structmd,'drag'), md.friction.coefficient=structmd.drag; end
+			if isfield(structmd,'p'), md.friction.p=structmd.p; end
+			if isfield(structmd,'q'), md.friction.q=structmd.p; end
+			if isfield(structmd,'melting'), md.basalforcings.floatingice_melting_rate=structmd.melting; end
+			if isfield(structmd,'melting_rate'), md.basalforcings.floatingice_melting_rate=structmd.melting_rate; end
+			if isfield(structmd,'melting_rate'), md.basalforcings.groundedice_melting_rate=structmd.melting_rate; end
+			if isfield(structmd,'accumulation'), md.smb.mass_balance=structmd.accumulation; end
+			if isfield(structmd,'numberofgrids'), md.mesh.numberofvertices=structmd.numberofgrids; end
+			if isfield(structmd,'numberofgrids2d'), md.mesh.numberofvertices2d=structmd.numberofgrids2d; end
+			if isfield(structmd,'uppergrids'), md.mesh.uppervertex=structmd.uppergrids; end
+			if isfield(structmd,'lowergrids'), md.mesh.lowervertex=structmd.lowergrids; end
+			if isfield(structmd,'gridonbase'), md.mesh.vertexonbase=structmd.gridonbase; end
+			if isfield(structmd,'gridonsurface'), md.mesh.vertexonsurface=structmd.gridonsurface; end
+			if isfield(structmd,'extractedgrids'), md.mesh.extractedvertices=structmd.extractedgrids; end
+			if isfield(structmd,'gridonboundary'), md.mesh.vertexonboundary=structmd.gridonboundary; end
+			if isfield(structmd,'petscoptions') & ~isempty(structmd.petscoptions), md.toolkits=structmd.petscoptions; end
+			if isfield(structmd,'g'), md.constants.g=structmd.g; end
+			if isfield(structmd,'yts'), md.constants.yts=structmd.yts; end
+			if isfield(structmd,'surface_mass_balance'), md.smb.mass_balance=structmd.surface_mass_balance; end
+			if isfield(structmd,'basal_melting_rate'), md.basalforcings.floatingice_melting_rate=structmd.basal_melting_rate; end
+			if isfield(structmd,'geothermalflux'), md.basalforcings.geothermalflux=structmd.geothermalflux; end
+			if isfield(structmd,'drag'), md.friction.coefficient=structmd.drag; end
+			if isfield(structmd,'drag_coefficient'), md.friction.coefficient=structmd.drag_coefficient; end
+			if isfield(structmd,'drag_p'), md.friction.p=structmd.drag_p; end
+			if isfield(structmd,'drag_q'), md.friction.q=structmd.drag_q; end
+			if isfield(structmd,'riftproperties'), %old implementation
+				md.rifts=rifts();
+				md.rifts.riftproperties=structmd.riftproperties; 
+				md.rifts.riftstruct=structmd.rifts;
+				md.rifts.riftproperties=structmd.riftinfo;
+			end
+			if isfield(structmd,'bamg'), md.private.bamg=structmd.bamg; end
+			if isfield(structmd,'lowmem'), md.settings.lowmem=structmd.lowmem; end
+			if isfield(structmd,'io_gather'), md.settings.io_gather=structmd.io_gather; end
+			if isfield(structmd,'spcwatercolumn'), md.hydrology.spcwatercolumn=structmd.spcwatercolumn; end
+			if isfield(structmd,'hydro_n'), md.hydrology.n=structmd.hydro_n; end
+			if isfield(structmd,'hydro_p'), md.hydrology.p=structmd.hydro_p; end
+			if isfield(structmd,'hydro_q'), md.hydrology.q=structmd.hydro_q; end
+			if isfield(structmd,'hydro_CR'), md.hydrology.CR=structmd.hydro_CR; end
+			if isfield(structmd,'hydro_kn'), md.hydrology.kn=structmd.hydro_kn; end
+			if isfield(structmd,'spctemperature'), md.thermal.spctemperature=structmd.spctemperature; end
+			if isfield(structmd,'min_thermal_constraints'), md.thermal.penalty_threshold=structmd.min_thermal_constraints; end
+			if isfield(structmd,'artificial_diffusivity'), md.thermal.stabilization=structmd.artificial_diffusivity; end
+			if isfield(structmd,'max_nonlinear_iterations'), md.thermal.maxiter=structmd.max_nonlinear_iterations; end
+			if isfield(structmd,'stabilize_constraints'), md.thermal.penalty_lock=structmd.stabilize_constraints; end
+			if isfield(structmd,'penalty_offset'), md.thermal.penalty_factor=structmd.penalty_offset; end
+			if isfield(structmd,'name'), md.miscellaneous.name=structmd.name; end
+			if isfield(structmd,'notes'), md.miscellaneous.notes=structmd.notes; end
+			if isfield(structmd,'dummy'), md.miscellaneous.dummy=structmd.dummy; end
+			if isfield(structmd,'dt'), md.timestepping.time_step=structmd.dt; end
+			if isfield(structmd,'ndt'), md.timestepping.final_time=structmd.ndt; end
+			if isfield(structmd,'time_adapt'), md.timestepping.time_adapt=structmd.time_adapt; end
+			if isfield(structmd,'cfl_coefficient'), md.timestepping.cfl_coefficient=structmd.cfl_coefficient; end
+			if isfield(structmd,'spcthickness'), md.masstransport.spcthickness=structmd.spcthickness; end
+			if isfield(structmd,'spcthickness'), md.debris.spcthickness=structmd.spcthickness; end
+			if isfield(structmd,'artificial_diffusivity'), md.masstransport.stabilization=structmd.artificial_diffusivity; end
+			if isfield(structmd,'hydrostatic_adjustment'), md.masstransport.hydrostatic_adjustment=structmd.hydrostatic_adjustment; end
+			if isfield(structmd,'penalties'), md.masstransport.vertex_pairing=structmd.penalties; end
+			if isfield(structmd,'penalty_offset'), md.masstransport.penalty_factor=structmd.penalty_offset; end
+			if isfield(structmd,'B'), md.materials.rheology_B=structmd.B; end
+			if isfield(structmd,'n'), md.materials.rheology_n=structmd.n; end
+			if isfield(structmd,'rheology_B'), md.materials.rheology_B=structmd.rheology_B; end
+			if isfield(structmd,'rheology_n'), md.materials.rheology_n=structmd.rheology_n; end
+			if isfield(structmd,'rheology_Z'), md.damage.D=(1-structmd.rheology_Z); end
+			if isfield(structmd,'spcthickness'), md.balancethickness.spcthickness=structmd.spcthickness; end
+			if isfield(structmd,'artificial_diffusivity'), md.balancethickness.stabilization=structmd.artificial_diffusivity; end
+			if isfield(structmd,'dhdt'), md.balancethickness.thickening_rate=structmd.dhdt; end
+			if isfield(structmd,'isSIA'), md.flowequation.isSIA=structmd.isSIA; end
+			if isfield(structmd,'isFS'), md.flowequation.isFS=structmd.isFS; end
+			if isfield(structmd,'elements_type'), md.flowequation.element_equation=structmd.elements_type; end
+			if isfield(structmd,'vertices_type'), md.flowequation.vertex_equation=structmd.vertices_type; end
+			if isfield(structmd,'eps_rel'), md.steadystate.reltol=structmd.eps_rel; end
+			if isfield(structmd,'max_steadystate_iterations'), md.steadystate.maxiter=structmd.max_steadystate_iterations; end
+			if isfield(structmd,'isdiagnostic'), md.transient.isstressbalance=structmd.isdiagnostic; end
+			if isfield(structmd,'isprognostic'), md.transient.ismasstransport=structmd.isprognostic; end
+			if isfield(structmd,'isthermal'), md.transient.isthermal=structmd.isthermal; end
+			if isfield(structmd,'control_analysis'), md.inversion.iscontrol=structmd.control_analysis; end
+			if isfield(structmd,'weights'), md.inversion.cost_functions_coefficients=structmd.weights; end
+			if isfield(structmd,'nsteps'), md.inversion.nsteps=structmd.nsteps; end
+			if isfield(structmd,'maxiter_per_step'), md.inversion.maxiter_per_step=structmd.maxiter_per_step; end
+			if isfield(structmd,'cm_min'), md.inversion.min_parameters=structmd.cm_min; end
+			if isfield(structmd,'cm_max'), md.inversion.max_parameters=structmd.cm_max; end
+			if isfield(structmd,'vx_obs'), md.inversion.vx_obs=structmd.vx_obs; end
+			if isfield(structmd,'vy_obs'), md.inversion.vy_obs=structmd.vy_obs; end
+			if isfield(structmd,'vel_obs'), md.inversion.vel_obs=structmd.vel_obs; end
+			if isfield(structmd,'thickness_obs'), md.inversion.thickness_obs=structmd.thickness_obs; end
+			if isfield(structmd,'vx'), md.initialization.vx=structmd.vx; end
+			if isfield(structmd,'vy'), md.initialization.vy=structmd.vy; end
+			if isfield(structmd,'vz'), md.initialization.vz=structmd.vz; end
+			if isfield(structmd,'vel'), md.initialization.vel=structmd.vel; end
+			if isfield(structmd,'pressure'), md.initialization.pressure=structmd.pressure; end
+			if isfield(structmd,'temperature'), md.initialization.temperature=structmd.temperature; end
+			if isfield(structmd,'waterfraction'), md.initialization.waterfraction=structmd.waterfraction; end
+			if isfield(structmd,'watercolumn'), md.initialization.watercolumn=structmd.watercolumn; end
+			if isfield(structmd,'surface'), md.geometry.surface=structmd.surface; end
+			if isfield(structmd,'bed'), md.geometry.base=structmd.bed; end
+			if isfield(structmd,'thickness'), md.geometry.thickness=structmd.thickness; end
+			if isfield(structmd,'bathymetry'), md.geometry.bed=structmd.bathymetry; end
+			if isfield(structmd,'thickness_coeff'), md.geometry.hydrostatic_ratio=structmd.thickness_coeff; end
+			if isfield(structmd,'connectivity'), md.mesh.average_vertex_connectivity=structmd.connectivity; end
+			if isfield(structmd,'extractednodes'), md.mesh.extractedvertices=structmd.extractednodes; end
+			if isfield(structmd,'extractedelements'), md.mesh.extractedelements=structmd.extractedelements; end
+			if isfield(structmd,'nodeonboundary'), md.mesh.vertexonboundary=structmd.nodeonboundary; end
+			if isfield(structmd,'lat'), md.mesh.lat=structmd.lat; end
+			if isfield(structmd,'long'), md.mesh.long=structmd.long; end
+			if isfield(structmd,'scale_factor'), md.mesh.scale_factor=structmd.scale_factor; end
+			if isfield(structmd,'segments'), md.mesh.segments=structmd.segments; end
+			if isfield(structmd,'segmentmarkers'), md.mesh.segmentmarkers=structmd.segmentmarkers; end
+			if isfield(structmd,'numlayers'), md.mesh.numberoflayers=structmd.numlayers; end
+			if isfield(structmd,'numberofelements'), md.mesh.numberofelements=structmd.numberofelements; end
+			if isfield(structmd,'numberofvertices'), md.mesh.numberofvertices=structmd.numberofvertices; end
+			if isfield(structmd,'numberofnodes'), md.mesh.numberofvertices=structmd.numberofnodes; end
+			if isfield(structmd,'numberofedges'), md.mesh.numberofedges=structmd.numberofedges; end
+			if isfield(structmd,'numberofelements2d'), md.mesh.numberofelements2d=structmd.numberofelements2d; end
+			if isfield(structmd,'numberofnodes2d'), md.mesh.numberofvertices2d=structmd.numberofnodes2d; end
+			if isfield(structmd,'nodeconnectivity'), md.mesh.vertexconnectivity=structmd.nodeconnectivity; end
+			if isfield(structmd,'elementconnectivity'), md.mesh.elementconnectivity=structmd.elementconnectivity; end
+			if isfield(structmd,'uppernodes'), md.mesh.uppervertex=structmd.uppernodes; end
+			if isfield(structmd,'lowernodes'), md.mesh.lowervertex=structmd.lowernodes; end
+			if isfield(structmd,'upperelements'), md.mesh.upperelements=structmd.upperelements; end
+			if isfield(structmd,'lowerelements'), md.mesh.lowerelements=structmd.lowerelements; end
+			if isfield(structmd,'nodeonsurface'), md.mesh.vertexonsurface=structmd.nodeonsurface; end
+			if isfield(structmd,'nodeonbase'), md.mesh.vertexonbase=structmd.nodeonbase; end
+			if isfield(structmd,'elements2d'), md.mesh.elements2d=structmd.elements2d; end
+			if isfield(structmd,'y2d'), md.mesh.y2d=structmd.y2d; end
+			if isfield(structmd,'x2d'), md.mesh.x2d=structmd.x2d; end
+			if isfield(structmd,'elements'), md.mesh.elements=structmd.elements; end
+			if isfield(structmd,'edges'), 
+				md.mesh.edges=structmd.edges; 
+				md.mesh.edges(isnan(md.mesh.edges))=-1;
+			end
+			if isfield(structmd,'y'), md.mesh.y=structmd.y; end
+			if isfield(structmd,'x'), md.mesh.x=structmd.x; end
+			if isfield(structmd,'z'), md.mesh.z=structmd.z; end
+			if isfield(structmd,'diagnostic_ref'), md.stressbalance.referential=structmd.diagnostic_ref; end
+			if isfield(structmd,'npart'); md.qmu.numberofpartitions=structmd.npart; end
+			if isfield(structmd,'part'); md.qmu.partition=structmd.part; end
+
+			if isnumeric(md.verbose),
+				md.verbose=verbose;
+			end
+
+			if isfield(structmd,'spcvelocity'), 
+				md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+				md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+				md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+				pos=find(structmd.spcvelocity(:,1)); md.stressbalance.spcvx(pos)=structmd.spcvelocity(pos,4); 
+				pos=find(structmd.spcvelocity(:,2)); md.stressbalance.spcvy(pos)=structmd.spcvelocity(pos,5); 
+				pos=find(structmd.spcvelocity(:,3)); md.stressbalance.spcvz(pos)=structmd.spcvelocity(pos,6); 
+			end
+			if isfield(structmd,'spcvx'), 
+				md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+				pos=find(~isnan(structmd.spcvx)); md.stressbalance.spcvx(pos)=structmd.spcvx(pos); 
+			end
+			if isfield(structmd,'spcvy'),
+				md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+				pos=find(~isnan(structmd.spcvy)); md.stressbalance.spcvy(pos)=structmd.spcvy(pos);     
+			end
+			if isfield(structmd,'spcvz'),
+				md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+				pos=find(~isnan(structmd.spcvz)); md.stressbalance.spcvz(pos)=structmd.spcvz(pos);     
+			end
+			if isfield(structmd,'pressureload'),
+				if ~isempty(structmd.pressureload) & ismember(structmd.pressureload(end,end),[118 119 120]),
+					pos=find(structmd.pressureload(:,end)==120); md.stressbalance.icefront(pos,end)=0;
+					pos=find(structmd.pressureload(:,end)==118); md.stressbalance.icefront(pos,end)=1;
+					pos=find(structmd.pressureload(:,end)==119); md.stressbalance.icefront(pos,end)=2;
+				end
+			end
+			if isfield(structmd,'elements_type') & structmd.elements_type(end,end)>50,
+				pos=find(structmd.elements_type==59); md.flowequation.element_equation(pos,end)=0;
+				pos=find(structmd.elements_type==55); md.flowequation.element_equation(pos,end)=1;
+				pos=find(structmd.elements_type==56); md.flowequation.element_equation(pos,end)=2;
+				pos=find(structmd.elements_type==60); md.flowequation.element_equation(pos,end)=3;
+				pos=find(structmd.elements_type==62); md.flowequation.element_equation(pos,end)=4;
+				pos=find(structmd.elements_type==57); md.flowequation.element_equation(pos,end)=5;
+				pos=find(structmd.elements_type==58); md.flowequation.element_equation(pos,end)=6;
+				pos=find(structmd.elements_type==61); md.flowequation.element_equation(pos,end)=7;
+			end
+			if isfield(structmd,'vertices_type') & structmd.vertices_type(end,end)>50,
+				pos=find(structmd.vertices_type==59); md.flowequation.vertex_equation(pos,end)=0;
+				pos=find(structmd.vertices_type==55); md.flowequation.vertex_equation(pos,end)=1;
+				pos=find(structmd.vertices_type==56); md.flowequation.vertex_equation(pos,end)=2;
+				pos=find(structmd.vertices_type==60); md.flowequation.vertex_equation(pos,end)=3;
+				pos=find(structmd.vertices_type==62); md.flowequation.vertex_equation(pos,end)=4;
+				pos=find(structmd.vertices_type==57); md.flowequation.vertex_equation(pos,end)=5;
+				pos=find(structmd.vertices_type==58); md.flowequation.vertex_equation(pos,end)=6;
+				pos=find(structmd.vertices_type==61); md.flowequation.vertex_equation(pos,end)=7;
+			end
+			if isfield(structmd,'rheology_law') & isnumeric(structmd.rheology_law),
+				if (structmd.rheology_law==272), md.materials.rheology_law='None';      end
+				if (structmd.rheology_law==368), md.materials.rheology_law='Paterson';  end
+				if (structmd.rheology_law==369), md.materials.rheology_law='Arrhenius'; end
+			end
+			if isfield(structmd,'groundingline_migration') & isnumeric(structmd.groundingline_migration),
+				if (structmd.groundingline_migration==272), md.groundingline.migration='None';      end
+				if (structmd.groundingline_migration==273), md.groundingline.migration='AggressiveMigration';  end
+				if (structmd.groundingline_migration==274), md.groundingline.migration='SoftMigration'; end
+			end
+			if isfield(structmd,'control_type') & isnumeric(structmd.control_type),
+				if (structmd.control_type==143), md.inversion.control_parameters={'FrictionCoefficient'}; end
+				if (structmd.control_type==190), md.inversion.control_parameters={'RheologyBbar'}; end
+				if (structmd.control_type==147), md.inversion.control_parameters={'Thickeningrate'}; end
+			end
+			if isfield(structmd,'cm_responses') & ismember(structmd.cm_responses(end,end),[165:170 383 388 389]),
+				pos=find(structmd.cm_responses==166); md.inversion.cost_functions(pos)=101;
+				pos=find(structmd.cm_responses==167); md.inversion.cost_functions(pos)=102;
+				pos=find(structmd.cm_responses==168); md.inversion.cost_functions(pos)=103;
+				pos=find(structmd.cm_responses==169); md.inversion.cost_functions(pos)=104;
+				pos=find(structmd.cm_responses==170); md.inversion.cost_functions(pos)=105;
+				pos=find(structmd.cm_responses==165); md.inversion.cost_functions(pos)=201;
+				pos=find(structmd.cm_responses==389); md.inversion.cost_functions(pos)=501;
+				pos=find(structmd.cm_responses==388); md.inversion.cost_functions(pos)=502;
+				pos=find(structmd.cm_responses==382); md.inversion.cost_functions(pos)=503;
+			end
+
+			if isfield(structmd,'artificial_diffusivity') & structmd.artificial_diffusivity==2,
+					md.thermal.stabilization=2;
+					md.masstransport.stabilization=1;
+					md.balancethickness.stabilization=1;
+			end
+			if isnumeric(md.masstransport.hydrostatic_adjustment)
+				if md.masstransport.hydrostatic_adjustment==269,
+					md.masstransport.hydrostatic_adjustment='Incremental';
+				else
+					md.masstransport.hydrostatic_adjustment='Absolute';
+				end
+			end
+
+			%New fields
+			if ~isfield(structmd,'upperelements') & isa(md.mesh,'mesh3dprisms')
+				md.mesh.upperelements=transpose(1:md.mesh.numberofelements)+md.mesh.numberofelements2d;
+				md.mesh.upperelements(end-md.mesh.numberofelements2d+1:end)=NaN;
+			end
+			if ~isfield(structmd,'lowerelements') & isa(md.mesh,'mesh3dprisms')
+				md.mesh.lowerelements=transpose(1:md.mesh.numberofelements)-md.mesh.numberofelements2d;
+				md.mesh.lowerelements(1:md.mesh.numberofelements2d)=NaN;
+			end
+			if ~isfield(structmd,'diagnostic_ref');
+				md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+			end
+			if ~isfield(structmd,'loadingforce');
+				md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+			end
+
+			%2013 August 9
+			if isfield(structmd,'prognostic') & isa(structmd.prognostic,'prognostic'),
+				disp('Recovering old prognostic class');
+				md.masstransport=masstransport(structmd.prognostic);
+			end
+			%2013 August 9
+			if isfield(structmd,'diagnostic') & (isa(structmd.diagnostic,'diagnostic') || isa(structmd.diagnostic,'stressbalance')),
+				disp('Recovering old diagnostic class');
+				md.stressbalance=stressbalance(structmd.diagnostic);
+			end
+			%2014 January 9th
+			if isfield(structmd,'surfaceforcings') & isa(md.smb,'surfaceforcings'),
+				disp('Recovering old surfaceforcings class');
+				mass_balance=structmd.surfaceforcings.mass_balance;
+				md.smb=SMB();
+				md.smb.mass_balance=mass_balance;
+			end
+			%2015 September 10
+			if isfield(structmd,'surfaceforcings') & isa(structmd.surfaceforcings,'SMB'),
+				disp('Recovering old SMB class');
+				md.smb=SMBforcing(structmd.surfaceforcings);
+			end
+			if isfield(structmd,'surfaceforcings') & isa(structmd.surfaceforcings,'SMBhenning'),
+				disp('Recovering old SMBhenning class');
+				md.smb=SMBhenning(structmd.surfaceforcings);
+			end
+			if isfield(structmd,'slr') && ~isempty(structmd.slr)
+				md.solidearth       = solidearth('Earth');
+				disp('Recovering old slr class');
+				if isfield(structmd.slr,'sealevel'),
+					md.solidearth.sealevel=structmd.slr.sealevel;
+				end
+				md.solidearth.planetradius=structmd.slr.planetradius;
+				md.solidearth.requested_outputs=structmd.slr.requested_outputs;
+				md.solidearth.transitions=structmd.slr.transitions;
+
+				md.solidearth.transitions=structmd.slr.transitions;
+				md.solidearth.settings.reltol=structmd.slr.reltol;
+				md.solidearth.settings.abstol=structmd.slr.abstol;
+				md.solidearth.settings.maxiter=structmd.slr.maxiter;
+				md.solidearth.settings.rigid=structmd.slr.rigid;
+				md.solidearth.settings.elastic=structmd.slr.elastic;
+				md.solidearth.settings.rotation=structmd.slr.rotation;
+				md.solidearth.settings.runfrequency=structmd.slr.geodetic_run_frequency;
+				md.solidearth.settings.computesealevelchange=structmd.slr.geodetic;
+				md.solidearth.settings.degacc=structmd.slr.degacc;
+				md.solidearth.settings.horiz=structmd.slr.horiz;
+				md.solidearth.settings.ocean_area_scaling=structmd.slr.ocean_area_scaling;
+
+				md.solidearth.surfaceload.icethicknesschange=structmd.slr.deltathickness;
+				md.solidearth.surfaceload.waterheightchange=structmd.slr.hydro_rate;
+
+				md.solidearth.lovenumbers.h=structmd.slr.love_h;
+				md.solidearth.lovenumbers.k=structmd.slr.love_k;
+				md.solidearth.lovenumbers.l=structmd.slr.love_l;
+				md.solidearth.lovenumbers.th=structmd.slr.tide_love_h;
+				md.solidearth.lovenumbers.tk=structmd.slr.tide_love_k;
+				md.solidearth.lovenumbers.tk2secular=structmd.slr.fluid_love;
+
+				md.solidearth.rotational.equatorialmoi=structmd.slr.equatorial_moi;
+				md.solidearth.rotational.polarmoi=structmd.slr.polar_moi;
+				md.solidearth.rotational.angularvelocity=structmd.slr.angular_velocity;
+			end
+		end% }}}
+		function md = tetras(md,varargin) % {{{
+			%TETRAS - split 3d prismatic mesh into 3 tetrahedrons
+			%
+			%   Usage:
+			%      md=tetra(md)
+
+			if ~isa(md.mesh,'mesh3dprisms')
+				error('mesh is not a 3d prismatic mesh');
+			end
+
+			%Initialize tetra mesh
+			md.mesh=mesh3dtetras(md.mesh);
+
+			%Subdivision from Philipp Furnstahl (http://studierstube.icg.tugraz.at/thesis/fuernstahl_thesis.pdf)
+			steiner  = 0;
+			nbv      = md.mesh.numberofvertices;
+			nbt      = 3*md.mesh.numberofelements;
+			elements = zeros(nbt,4);
+			for i=1:md.mesh.numberofelements
+				v1=md.mesh.elements(i,1); v2=md.mesh.elements(i,2); v3=md.mesh.elements(i,3);
+				v4=md.mesh.elements(i,4); v5=md.mesh.elements(i,5); v6=md.mesh.elements(i,6);
+				if(min(v2,v4)<min(v1,v5) & min(v1,v6)<min(v3,v4) & min(v3,v5)<min(v2,v6)),
+					steiner = steiner+1; nbv = nbv+1; nbt = nbt+5; v7 = nbv;
+					md.mesh.x=[md.mesh.x; mean(md.mesh.x(md.mesh.elements(i,:)))];
+					md.mesh.y=[md.mesh.y; mean(md.mesh.y(md.mesh.elements(i,:)))];
+					md.mesh.z=[md.mesh.z; mean(md.mesh.z(md.mesh.elements(i,:)))];
+					elements(3*(i-1)+1,:) = [v1 v2 v3 v7];
+					elements(3*(i-1)+2,:) = [v1 v2 v4 v7];
+					elements(3*(i-1)+3,:) = [v2 v4 v5 v7];
+					elements(end+1,:) = [v2 v3 v5 v7];
+					elements(end+1,:) = [v3 v5 v6 v7];
+					elements(end+1,:) = [v1 v3 v6 v7];
+					elements(end+1,:) = [v1 v4 v6 v7];
+					elements(end+1,:) = [v4 v5 v6 v7];
+				elseif(min(v2,v4)<min(v1,v5) & min(v1,v6)<min(v3,v4) & min(v3,v5)>min(v2,v6)),
+					elements(3*(i-1)+1,:) = [v1 v2 v4 v6];
+					elements(3*(i-1)+2,:) = [v2 v4 v5 v6];
+					elements(3*(i-1)+3,:) = [v1 v2 v3 v6];
+				elseif(min(v2,v4)<min(v1,v5) & min(v1,v6)>min(v3,v4) & min(v3,v5)<min(v2,v6)),
+					elements(3*(i-1)+1,:) = [v1 v2 v3 v4];
+					elements(3*(i-1)+2,:) = [v2 v3 v4 v5];
+					elements(3*(i-1)+3,:) = [v3 v4 v5 v6];
+				elseif(min(v2,v4)<min(v1,v5) & min(v1,v6)>min(v3,v4) & min(v3,v5)>min(v2,v6)),
+					elements(3*(i-1)+1,:) = [v1 v2 v3 v4];
+					elements(3*(i-1)+2,:) = [v2 v4 v5 v6];
+					elements(3*(i-1)+3,:) = [v2 v3 v4 v6];
+				elseif(min(v2,v4)>min(v1,v5) & min(v1,v6)<min(v3,v4) & min(v3,v5)<min(v2,v6)),
+					elements(3*(i-1)+1,:) = [v1 v4 v5 v6];
+					elements(3*(i-1)+2,:) = [v1 v2 v3 v5];
+					elements(3*(i-1)+3,:) = [v1 v3 v5 v6];
+				elseif(min(v2,v4)>min(v1,v5) & min(v1,v6)<min(v3,v4) & min(v3,v5)>min(v2,v6)),
+					elements(3*(i-1)+1,:) = [v1 v4 v5 v6];
+					elements(3*(i-1)+2,:) = [v1 v2 v5 v6];
+					elements(3*(i-1)+3,:) = [v1 v2 v3 v6];
+				elseif(min(v2,v4)>min(v1,v5) & min(v1,v6)>min(v3,v4) & min(v3,v5)<min(v2,v6)),
+					elements(3*(i-1)+1,:) = [v1 v3 v4 v5];
+					elements(3*(i-1)+2,:) = [v1 v2 v3 v5];
+					elements(3*(i-1)+3,:) = [v3 v4 v5 v6];
+				elseif(min(v2,v4)>min(v1,v5) & min(v1,v6)<min(v3,v4) & min(v3,v5)<min(v2,v6)),
+					elements(3*(i-1)+1,:) = [v1 v5 v6 v4];
+					elements(3*(i-1)+2,:) = [v1 v2 v3 v5];
+					elements(3*(i-1)+3,:) = [v5 v6 v3 v1];
+				elseif(min(v2,v4)>min(v1,v5) & min(v1,v6)>min(v3,v4) & min(v3,v5)>min(v2,v6)),
+					steiner = steiner+1; nbv = nbv+1; nbt = nbt+5; v7 = nbv;
+					md.mesh.x=[md.mesh.x; mean(md.mesh.x(md.mesh.elements(i,:)))];
+					md.mesh.y=[md.mesh.y; mean(md.mesh.y(md.mesh.elements(i,:)))];
+					md.mesh.z=[md.mesh.z; mean(md.mesh.z(md.mesh.elements(i,:)))];
+					elements(3*(i-1)+1,:) = [v1 v2 v3 v7];
+					elements(3*(i-1)+2,:) = [v1 v4 v5 v7];
+					elements(3*(i-1)+3,:) = [v1 v2 v5 v7];
+					elements(end+1,:) = [v2 v5 v6 v7];
+					elements(end+1,:) = [v2 v3 v6 v7];
+					elements(end+1,:) = [v3 v4 v6 v7];
+					elements(end+1,:) = [v1 v3 v4 v7];
+					elements(end+1,:) = [v4 v5 v6 v7];
+				else
+					error('Case not supported'); %not supposed to happen!
+				end
+				%Reorder elements to make sure they are direct
+				for j=1:3
+					element = elements(3*(i-1)+j,:);
+					matrix = [md.mesh.x(element), md.mesh.y(element), md.mesh.z(element), ones(4,1)];
+					if det(matrix)>0,
+						elements(3*(i-1)+j,1)=element(2);
+						elements(3*(i-1)+j,2)=element(1);
+					end
+				end
+			end
+			%%Split in 3 tetras
+			%subelement1 = [1 2 3 5];
+			%subelement2 = [4 6 5 1];
+			%subelement3 = [5 6 3 1];
+			%elements=[md.mesh.elements(:,subelement1);md.mesh.elements(:,subelement2);md.mesh.elements(:,subelement3)];
+			if steiner==0,
+				disp('No Steiner point required to split prismatic mesh into tets');
+			else
+				disp([num2str(steiner) ' Steiner points had to be included'])
+				error('Steiner point not supported yet');
+			end
+
+			pos_elements = repmat([1:md.mesh.numberofelements]',3,1);
+
+			md.mesh.elements=elements;
+			md.mesh.numberofelements=size(elements,1);
+
+			%p and q (same deal, except for element that are on the bedrock: )
+			if ~isnan(md.friction.p),
+				md.friction.p=md.friction.p(pos_elements);
+				md.friction.q=md.friction.q(pos_elements);
+			end
+
+			%elementstype
+			if ~isnan(md.flowequation.element_equation)
+				oldelements_type=md.flowequation.element_equation;
+				md.flowequation.element_equation=md.flowequation.element_equation(pos_elements);
+			end
+
+			%connectivity
+			md.mesh.elementconnectivity=NaN;
+
+			%materials
+			if ~isnan(md.materials.rheology_n),
+				md.materials.rheology_n=md.materials.rheology_n(pos_elements);
+			end
+
+			%increase connectivity if less than 25:
+			if md.mesh.average_vertex_connectivity<=25,
+				md.mesh.average_vertex_connectivity=100;
+			end
+		end % }}}
+		function memory(self) % {{{
+
+			disp(sprintf('\nMemory imprint:\n'));
+
+			fields=properties('model');
+			mem=0;
+
+			for i=1:length(fields),
+				field=self.(fields{i});
+				s=whos('field'); 
+				mem=mem+s.bytes/1e6;
+				disp(sprintf('%19s: %6.2f Mb',fields{i},s.bytes/1e6));
+			end
+			disp(sprintf('%19s--%10s','--------------','--------------'));
+			disp(sprintf('%19s: %g Mb','Total',mem));
+		end
+		% }}}
+		function netcdf(self,filename) % {{{
+			%NETCDF - save model as netcdf
+			%
+			%   Usage:
+			%      netcdf(md,filename)
+			%
+			%   Example:
+			%      netcdf(md,'model.nc');
+
+			disp('Saving model as NetCDF');
+			%1. Create NetCDF file
+			ncid=netcdf.create(filename,'CLOBBER');
+			netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Conventions','CF-1.4');
+			netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Title',['ISSM model (' self.miscellaneous.name ')']);
+			netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Author',getenv('USER'));
+			netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Date',datestr(now));
+
+			%Preallocate variable id, needed to write variables in netcdf file
+			var_id=zeros(1000,1);%preallocate
+
+			for step=1:2,
+				counter=0;
+				[var_id,counter]=structtonc(ncid,'md',self,0,var_id,counter,step);
+				if step==1, netcdf.endDef(ncid); end
+			end
+
+			if counter>1000,
+				warning(['preallocation of var_id need to be updated from ' num2str(1000) ' to ' num2str(counter)]);
+			end
+
+			netcdf.close(ncid)
+		end % }}}
+		function xylim(self) % {{{
+
+			xlim([min(self.mesh.x) max(self.mesh.x)]);
+			ylim([min(self.mesh.y) max(self.mesh.y)])
+		end % }}}
+		function md=upload(md) % {{{
+			%the goal of this routine is to upload the model onto a server, and to empty it.
+			%So first, save the model with a unique name and upload the file to the server: 
+			random_part=fix(rand(1)*10000);
+			id=[md.miscellaneous.name '-' regexprep(datestr(now),'[^\w'']','') '-' num2str(random_part)  '-' getenv('USER') '-' oshostname() '.upload']; 
+			eval(['save ' id ' md']);
+
+			%Now, upload the file: 
+			issmscpout(md.settings.upload_server,md.settings.upload_path,md.settings.upload_login,md.settings.upload_port,{id},1);
+
+			%Now, empty this model of everything except settings, and record name of file we just uploaded!
+			settings_back=md.settings;
+			md=model();
+			md.settings=settings_back;
+			md.settings.upload_filename=id;
+
+			%get locally rid of file that was uploaded
+			eval(['delete ' id]);
+
+		end % }}}
+		function md=download(md) % {{{
+
+			%the goal of this routine is to download the internals of the current model from a server, because 
+			%this model is empty, except for the settings which tell us where to go and find this model!
+
+			%Download the file: 
+			issmscpin(md.settings.upload_server, md.settings.upload_login, md.settings.upload_port, md.settings.upload_path, {md.settings.upload_filename});
+
+			name=md.settings.upload_filename;
+
+			%Now, load this model: 
+			md=loadmodel(md.settings.upload_filename);
+
+			%get locally rid of file that was downloaded
+			eval(['delete ' name]);
+
+		end % }}}
+		function saveasstruct(md,filename) % {{{
+
+			fields=sort(properties('model')); %sort fields so that comparison of binary files is easier
+			disp('Converting all model fields to struct...');
+			warning off MATLAB:structOnObject
+			for i=1:length(fields),
+				field=fields{i};
+				md.(field) = struct(md.(field));
+			end
+			disp('Converting model to struct...');
+			md=struct(md);
+			warning on MATLAB:structOnObject
+			disp(['Saving as ' filename '...']);
+			save(filename,'md','-v7.3')
+		end % }}}
+function savemodeljs(md,modelname,websiteroot,varargin) % {{{
+
+	%the goal of this routine is to save the model as a javascript array that can be included in any html 
+	%file: 
+
+	options=pairoptions(varargin{:});
+	optimization=getfieldvalue(options,'optimize',0);
+
+
+	%disp: 
+	disp(['saving model ''' modelname ''' in file ' websiteroot '/js/' modelname '.js']);
+
+	%open file for writing and declare the model:
+	fid=fopen([websiteroot '/js/' modelname '.js'],'w');
+	fprintf(fid,'var %s=new model();\n',modelname);
+
+	%now go through all the classes and fwrite all the corresponding fields: 
+
+	fields=properties('model');
+	for i=1:length(fields),
+		field=fields{i};
+
+		%Some properties do not need to be saved
+		if ismember(field,{'results','cluster' }),
+			continue;
+		end
+
+		%some optimization: 
+		if optimization==1,
+			%optimize for plotting only:
+			if ~ismember(field,{'geometry','mesh','mask'}),
+				continue;
+			end
+		end
+
+		%Check that current field is an object
+		if ~isobject(md.(field))
+			error(['field ''' char(field) ''' is not an object']);
+		end
+
+		%savemodeljs for current object
+		%disp(['javascript saving ' field '...']);
+		savemodeljs(md.(field),fid,modelname);
+	end
+
+	%done, close file:
+	fclose(fid);
+end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/model.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/model.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/model.py	(revision 27955)
@@ -0,0 +1,999 @@
+#module imports {{{
+import numpy as np
+import copy
+import sys
+from pairoptions import pairoptions
+from mesh2d import mesh2d
+from mesh3dprisms import mesh3dprisms
+from mask import mask
+from geometry import geometry
+from constants import constants
+from SMBforcing import SMBforcing
+from SMBpdd import SMBpdd
+from SMBd18opdd import SMBd18opdd
+from SMBgradients import SMBgradients
+from SMBcomponents import SMBcomponents
+from SMBmeltcomponents import SMBmeltcomponents
+from basalforcings import basalforcings
+from linearbasalforcings import linearbasalforcings
+from matice import matice
+from levelset import levelset
+from calving import calving
+from love import love
+from calvinglevermann import calvinglevermann
+#from calvingpi import calvingpi
+from frontalforcings import frontalforcings
+from damage import damage
+from friction import friction
+from flowequation import flowequation
+from timestepping import timestepping
+from timesteppingadaptive import timesteppingadaptive
+from initialization import initialization
+from rifts import rifts
+from solidearth import solidearth
+from dsl import dsl
+from debug import debug
+from verbose import verbose
+from issmsettings import issmsettings
+from toolkits import toolkits
+from generic import generic
+from balancethickness import balancethickness
+from stressbalance import stressbalance
+from groundingline import groundingline
+from hydrologyshreve import hydrologyshreve
+from hydrologydc import hydrologydc
+from hydrologyglads import hydrologyglads
+from hydrologypism import hydrologypism
+from hydrologyshakti import hydrologyshakti
+from debris import debris
+from masstransport import masstransport
+from thermal import thermal
+from steadystate import steadystate
+from transient import transient
+from esa import esa
+from autodiff import autodiff
+from inversion import inversion
+from outputdefinition import outputdefinition
+from qmu import qmu
+from amr import amr
+from results import results
+from radaroverlay import radaroverlay
+from miscellaneous import miscellaneous
+from private import private
+from mumpsoptions import mumpsoptions
+from iluasmoptions import iluasmoptions
+from project3d import project3d
+from project2d import project2d
+from FlagElements import FlagElements
+from NodeConnectivity import NodeConnectivity
+from ElementConnectivity import ElementConnectivity
+from contourenvelope import contourenvelope
+from DepthAverage import DepthAverage
+from sampling import sampling
+from stochasticforcing import stochasticforcing
+# }}}
+
+
+class model(object):
+    """model class definition
+
+    Usage:
+        md = model()
+    """
+
+    def __init__(self, *args):  #{{{
+        self.mesh = None
+        self.mask = None
+
+        self.geometry = None
+        self.constants = None
+        self.smb = None
+        self.basalforcings = None
+        self.materials = None
+        self.damage = None
+        self.friction = None
+        self.flowequation = None
+        self.timestepping = None
+        self.initialization = None
+        self.rifts = None
+        self.dsl = None
+        self.solidearth = None
+        self.debug = None
+        self.verbose = None
+        self.settings = None
+        self.toolkits = None
+        self.cluster = None
+        self.balancethickness = None
+        self.stressbalance = None
+        self.groundingline = None
+        self.hydrology = None
+        self.debris = None
+        self.masstransport = None
+        self.thermal = None
+        self.steadystate = None
+        self.transient = None
+        self.levelset = None
+        self.calving = None
+        self.frontalforcings = None
+        self.love = None
+        self.esa = None
+        self.sampling = None
+        self.autodiff = None
+        self.inversion = None
+        self.qmu = None
+        self.amr = None
+        self.results = None
+        self.outputdefinition = None
+        self.radaroverlay = None
+        self.miscellaneous = None
+        self.private = None
+        self.stochasticforcing = None
+
+        if len(args) == 0:
+            self.setdefaultparameters('earth')
+        else:
+            options = pairoptions(*args)
+            planet = options.getfieldvalue('planet', 'earth')
+            self.setdefaultparameters(planet)
+    # }}}
+
+    def __repr__(obj):  #{{{
+        # TODO:
+        # - Convert all formatting to calls to <string>.format (see any
+        #   already converted <class>.__repr__ method for examples)
+        #
+        s = '%19s: %-23s -- %s' % ('mesh', '[%s %s]' % ('1x1', obj.mesh.__class__.__name__), 'mesh properties')
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('mask', '[%s %s]' % ('1x1', obj.mask.__class__.__name__), 'defines grounded and floating elements'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('geometry', '[%s %s]' % ('1x1', obj.geometry.__class__.__name__), 'surface elevation, bedrock topography, ice thickness, ...'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('constants', '[%s %s]' % ('1x1', obj.constants.__class__.__name__), 'physical constants'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('smb', '[%s %s]' % ('1x1', obj.smb.__class__.__name__), 'surface mass balance'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('basalforcings', '[%s %s]' % ('1x1', obj.basalforcings.__class__.__name__), 'bed forcings'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('materials', '[%s %s]' % ('1x1', obj.materials.__class__.__name__), 'material properties'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('damage', '[%s %s]' % ('1x1', obj.damage.__class__.__name__), 'damage propagation laws'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('friction', '[%s %s]' % ('1x1', obj.friction.__class__.__name__), 'basal friction / drag properties'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('flowequation', '[%s %s]' % ('1x1', obj.flowequation.__class__.__name__), 'flow equations'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('timestepping', '[%s %s]' % ('1x1', obj.timestepping.__class__.__name__), 'time stepping for transient models'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('initialization', '[%s %s]' % ('1x1', obj.initialization.__class__.__name__), 'initial guess / state'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('rifts', '[%s %s]' % ('1x1', obj.rifts.__class__.__name__), 'rifts properties'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('solidearth', '[%s %s]' % ('1x1', obj.solidearth.__class__.__name__), 'solidearth inputs and settings'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('dsl', '[%s %s]' % ('1x1', obj.dsl.__class__.__name__), 'dynamic sea level'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('debug', '[%s %s]' % ('1x1', obj.debug.__class__.__name__), 'debugging tools (valgrind, gprof)'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('verbose', '[%s %s]' % ('1x1', obj.verbose.__class__.__name__), 'verbosity level in solve'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('settings', '[%s %s]' % ('1x1', obj.settings.__class__.__name__), 'settings properties'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('toolkits', '[%s %s]' % ('1x1', obj.toolkits.__class__.__name__), 'PETSc options for each solution'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('cluster', '[%s %s]' % ('1x1', obj.cluster.__class__.__name__), 'cluster parameters (number of CPUs...)'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('balancethickness', '[%s %s]' % ('1x1', obj.balancethickness.__class__.__name__), 'parameters for balancethickness solution'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('stressbalance', '[%s %s]' % ('1x1', obj.stressbalance.__class__.__name__), 'parameters for stressbalance solution'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('groundingline', '[%s %s]' % ('1x1', obj.groundingline.__class__.__name__), 'parameters for groundingline solution'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('hydrology', '[%s %s]' % ('1x1', obj.hydrology.__class__.__name__), 'parameters for hydrology solution'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('masstransport', '[%s %s]' % ('1x1', obj.masstransport.__class__.__name__), 'parameters for masstransport solution'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('thermal', '[%s %s]' % ('1x1', obj.thermal.__class__.__name__), 'parameters for thermal solution'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('steadystate', '[%s %s]' % ('1x1', obj.steadystate.__class__.__name__), 'parameters for steadystate solution'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('transient', '[%s %s]' % ('1x1', obj.transient.__class__.__name__), 'parameters for transient solution'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('levelset', '[%s %s]' % ('1x1', obj.levelset.__class__.__name__), 'parameters for moving boundaries (level-set method)'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('calving', '[%s %s]' % ('1x1', obj.calving.__class__.__name__), 'parameters for calving'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('frontalforcings', '[%s %s]' % ('1x1', obj.frontalforcings.__class__.__name__), 'parameters for frontalforcings'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('esa', '[%s %s]' % ('1x1', obj.esa.__class__.__name__), 'parameters for elastic adjustment solution'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('sampling', '[%s %s]' % ('1x1', obj.sampling.__class__.__name__), 'parameters for stochastic sampler'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('love', '[%s %s]' % ('1x1', obj.love.__class__.__name__), 'parameters for love solution'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('autodiff', '[%s %s]' % ('1x1', obj.autodiff.__class__.__name__), 'automatic differentiation parameters'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('inversion', '[%s %s]' % ('1x1', obj.inversion.__class__.__name__), 'parameters for inverse methods'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('qmu', '[%s %s]' % ('1x1', obj.qmu.__class__.__name__), 'Dakota properties'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('amr', '[%s %s]' % ('1x1', obj.amr.__class__.__name__), 'adaptive mesh refinement properties'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('outputdefinition', '[%s %s]' % ('1x1', obj.outputdefinition.__class__.__name__), 'output definition'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('results', '[%s %s]' % ('1x1', obj.results.__class__.__name__), 'model results'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('radaroverlay', '[%s %s]' % ('1x1', obj.radaroverlay.__class__.__name__), 'radar image for plot overlay'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('miscellaneous', '[%s %s]' % ('1x1', obj.miscellaneous.__class__.__name__), 'miscellaneous fields'))
+        s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('stochasticforcing', '[%s %s]' % ('1x1', obj.stochasticforcing.__class__.__name__), 'stochasticity applied to model forcings'))
+        return s
+    # }}}
+
+    def properties(self):  #{{{
+        # ordered list of properties since vars(self) is random
+        return [
+            'mesh',
+            'mask',
+            'geometry',
+            'constants',
+            'smb',
+            'basalforcings',
+            'materials',
+            'damage',
+            'friction',
+            'flowequation',
+            'timestepping',
+            'initialization',
+            'rifts',
+            'dsl',
+            'solidearth',
+            'debug',
+            'verbose',
+            'settings',
+            'toolkits',
+            'cluster',
+            'balancethickness',
+            'stressbalance',
+            'groundingline',
+            'hydrology',
+            'debris',
+            'masstransport',
+            'thermal',
+            'steadystate',
+            'transient',
+            'levelset',
+            'calving',
+            'frontalforcings',
+            'love',
+            'esa',
+            'sampling',
+            'autodiff',
+            'inversion',
+            'qmu',
+            'amr',
+            'results',
+            'outputdefinition',
+            'radaroverlay',
+            'miscellaneous',
+            'private',
+            'stochasticforcing'
+        ]
+    # }}}
+
+    def setdefaultparameters(self, planet):  #{{{
+        self.mesh = mesh2d()
+        self.mask = mask()
+        self.constants = constants()
+        self.geometry = geometry()
+        self.initialization = initialization()
+        self.smb = SMBforcing()
+        self.basalforcings = basalforcings()
+        self.friction = friction()
+        self.rifts = rifts()
+        self.solidearth = solidearth(planet)
+        self.dsl = dsl()
+        self.timestepping = timestepping()
+        self.groundingline = groundingline()
+        self.materials = matice()
+        self.damage = damage()
+        self.flowequation = flowequation()
+        self.debug = debug()
+        self.verbose = verbose()
+        self.settings = issmsettings()
+        self.toolkits = toolkits()
+        self.cluster = generic()
+        self.balancethickness = balancethickness()
+        self.stressbalance = stressbalance()
+        self.hydrology = hydrologyshreve()
+        self.debris = debris()
+        self.masstransport = masstransport()
+        self.thermal = thermal()
+        self.steadystate = steadystate()
+        self.transient = transient()
+        self.levelset = levelset()
+        self.calving = calving()
+        self.frontalforcings = frontalforcings()
+        self.love = love()
+        self.esa = esa()
+        self.sampling = sampling()
+        self.autodiff = autodiff()
+        self.inversion = inversion()
+        self.qmu = qmu()
+        self.amr = amr()
+        self.radaroverlay = radaroverlay()
+        self.results = results()
+        self.outputdefinition = outputdefinition()
+        self.miscellaneous = miscellaneous()
+        self.private = private()
+        self.stochasticforcing = stochasticforcing()
+    # }}}
+
+    def checkmessage(self, string):  #{{{
+        print("model not consistent: {}".format(string))
+        self.private.isconsistent = False
+        return self
+    # }}}
+    #@staticmethod
+
+    def extract(self, area):  #{{{
+        """EXTRACT - extract a model according to an Argus contour or flag list
+
+        This routine extracts a submodel from a bigger model with respect to a given contour
+        md must be followed by the corresponding exp file or flags list
+        It can either be a domain file (argus type, .exp extension), or an array of element flags.
+        If user wants every element outside the domain to be
+        extract2d, add '~' to the name of the domain file (ex: '~HO.exp')
+        an empty string '' will be considered as an empty domain
+        a string 'all' will be considered as the entire domain
+
+        Usage:
+            md2 = extract(md, area)
+
+        Examples:
+            md2 = extract(md, 'Domain.exp')
+
+        See also: EXTRUDE, COLLAPSE
+        """
+
+        #copy model
+        md1 = copy.deepcopy(self)
+
+        #get elements that are inside area
+        flag_elem = FlagElements(md1, area)
+        if not np.any(flag_elem):
+            raise RuntimeError("extracted model is empty")
+
+        #kick out all elements with 3 dirichlets
+        spc_elem = np.nonzero(np.logical_not(flag_elem))[0]
+        spc_node = np.unique(md1.mesh.elements[spc_elem, :]) - 1
+        flag = np.ones(md1.mesh.numberofvertices)
+        flag[spc_node] = 0
+        pos = np.nonzero(np.logical_not(np.sum(flag[md1.mesh.elements - 1], axis=1)))[0]
+        flag_elem[pos] = 0
+
+        #extracted elements and nodes lists
+        pos_elem = np.nonzero(flag_elem)[0]
+        pos_node = np.unique(md1.mesh.elements[pos_elem, :]) - 1
+
+        #keep track of some fields
+        numberofvertices1 = md1.mesh.numberofvertices
+        numberofelements1 = md1.mesh.numberofelements
+        numberofvertices2 = np.size(pos_node)
+        numberofelements2 = np.size(pos_elem)
+        flag_node = np.zeros(numberofvertices1)
+        flag_node[pos_node] = 1
+
+        #Create Pelem and Pnode (transform old nodes in new nodes and same thing for the elements)
+        Pelem = np.zeros(numberofelements1, int)
+        Pelem[pos_elem] = np.arange(1, numberofelements2 + 1)
+        Pnode = np.zeros(numberofvertices1, int)
+        Pnode[pos_node] = np.arange(1, numberofvertices2 + 1)
+
+        #renumber the elements (some node won't exist anymore)
+        elements_1 = copy.deepcopy(md1.mesh.elements)
+        elements_2 = elements_1[pos_elem, :]
+        elements_2[:, 0] = Pnode[elements_2[:, 0] - 1]
+        elements_2[:, 1] = Pnode[elements_2[:, 1] - 1]
+        elements_2[:, 2] = Pnode[elements_2[:, 2] - 1]
+        if md1.mesh.__class__.__name__ == 'mesh3dprisms':
+            elements_2[:, 3] = Pnode[elements_2[:, 3] - 1]
+            elements_2[:, 4] = Pnode[elements_2[:, 4] - 1]
+            elements_2[:, 5] = Pnode[elements_2[:, 5] - 1]
+
+        #OK, now create the new model!
+
+        #take every field from model
+        md2 = copy.deepcopy(md1)
+
+        #automatically modify fields
+
+        #loop over model fields
+        model_fields = vars(md1)
+        for fieldi in model_fields:
+            #get field
+            field = getattr(md1, fieldi)
+            fieldsize = np.shape(field)
+            if hasattr(field, '__dict__') and fieldi not in ['results']:  #recursive call
+                object_fields = vars(field)
+                for fieldj in object_fields:
+                    #get field
+                    field = getattr(getattr(md1, fieldi), fieldj)
+                    fieldsize = np.shape(field)
+                    if len(fieldsize):
+                        #size = number of nodes * n
+                        if fieldsize[0] == numberofvertices1:
+                            setattr(getattr(md2, fieldi), fieldj, field[pos_node])
+                        elif fieldsize[0] == numberofvertices1 + 1:
+                            setattr(getattr(md2, fieldi), fieldj, np.vstack((field[pos_node], field[-1, :])))
+                        #size = number of elements * n
+                        elif fieldsize[0] == numberofelements1:
+                            setattr(getattr(md2, fieldi), fieldj, field[pos_elem])
+            else:
+                if len(fieldsize):
+                    #size = number of nodes * n
+                    if fieldsize[0] == numberofvertices1:
+                        setattr(md2, fieldi, field[pos_node])
+                    elif fieldsize[0] == numberofvertices1 + 1:
+                        setattr(md2, fieldi, np.hstack((field[pos_node], field[-1, :])))
+                    #size = number of elements * n
+                    elif fieldsize[0] == numberofelements1:
+                        setattr(md2, fieldi, field[pos_elem])
+
+        #modify some specific fields
+        #Mesh
+        md2.mesh.numberofelements = numberofelements2
+        md2.mesh.numberofvertices = numberofvertices2
+        md2.mesh.elements = elements_2
+
+        #mesh.uppervertex mesh.lowervertex
+        if md1.mesh.__class__.__name__ == 'mesh3dprisms':
+            md2.mesh.uppervertex = md1.mesh.uppervertex[pos_node]
+            pos = np.where(~np.isnan(md2.mesh.uppervertex))[0]
+            md2.mesh.uppervertex[pos] = Pnode[md2.mesh.uppervertex[pos].astype(int) - 1]
+
+            md2.mesh.lowervertex = md1.mesh.lowervertex[pos_node]
+            pos = np.where(~np.isnan(md2.mesh.lowervertex))[0]
+            md2.mesh.lowervertex[pos] = Pnode[md2.mesh.lowervertex[pos].astype(int) - 1]
+
+            md2.mesh.upperelements = md1.mesh.upperelements[pos_elem]
+            pos = np.where(~np.isnan(md2.mesh.upperelements))[0]
+            md2.mesh.upperelements[pos] = Pelem[md2.mesh.upperelements[pos].astype(int) - 1]
+
+            md2.mesh.lowerelements = md1.mesh.lowerelements[pos_elem]
+            pos = np.where(~np.isnan(md2.mesh.lowerelements))[0]
+            md2.mesh.lowerelements[pos] = Pelem[md2.mesh.lowerelements[pos].astype(int) - 1]
+
+        #Initial 2d mesh
+        if md1.mesh.__class__.__name__ == 'mesh3dprisms':
+            flag_elem_2d = flag_elem[np.arange(0, md1.mesh.numberofelements2d)]
+            pos_elem_2d = np.nonzero(flag_elem_2d)[0]
+            flag_node_2d = flag_node[np.arange(0, md1.mesh.numberofvertices2d)]
+            pos_node_2d = np.nonzero(flag_node_2d)[0]
+
+            md2.mesh.numberofelements2d = np.size(pos_elem_2d)
+            md2.mesh.numberofvertices2d = np.size(pos_node_2d)
+            md2.mesh.elements2d = md1.mesh.elements2d[pos_elem_2d, :]
+            md2.mesh.elements2d[:, 0] = Pnode[md2.mesh.elements2d[:, 0] - 1]
+            md2.mesh.elements2d[:, 1] = Pnode[md2.mesh.elements2d[:, 1] - 1]
+            md2.mesh.elements2d[:, 2] = Pnode[md2.mesh.elements2d[:, 2] - 1]
+
+            md2.mesh.x2d = md1.mesh.x[pos_node_2d]
+            md2.mesh.y2d = md1.mesh.y[pos_node_2d]
+
+        #Edges
+        if md1.mesh.domaintype() == '2Dhorizontal':
+            if np.ndim(md2.mesh.edges) > 1 and np.size(md2.mesh.edges, axis=1) > 1:  #do not use ~isnan because there are some np.nans...
+                #renumber first two columns
+                pos = np.nonzero(md2.mesh.edges[:, 3] != -1)[0]
+                md2.mesh.edges[:, 0] = Pnode[md2.mesh.edges[:, 0] - 1]
+                md2.mesh.edges[:, 1] = Pnode[md2.mesh.edges[:, 1] - 1]
+                md2.mesh.edges[:, 2] = Pelem[md2.mesh.edges[:, 2] - 1]
+                md2.mesh.edges[pos, 3] = Pelem[md2.mesh.edges[pos, 3] - 1]
+                #remove edges when the 2 vertices are not in the domain.
+                md2.mesh.edges = md2.mesh.edges[np.nonzero(np.logical_and(md2.mesh.edges[:, 0], md2.mesh.edges[:, 1]))[0], :]
+                #Replace all zeros by - 1 in the last two columns
+                pos = np.nonzero(md2.mesh.edges[:, 2] == 0)[0]
+                md2.mesh.edges[pos, 2] = -1
+                pos = np.nonzero(md2.mesh.edges[:, 3] == 0)[0]
+                md2.mesh.edges[pos, 3] = -1
+                #Invert - 1 on the third column with last column (Also invert first two columns!!)
+                pos = np.nonzero(md2.mesh.edges[:, 2] == -1)[0]
+                md2.mesh.edges[pos, 2] = md2.mesh.edges[pos, 3]
+                md2.mesh.edges[pos, 3] = -1
+                values = md2.mesh.edges[pos, 1]
+                md2.mesh.edges[pos, 1] = md2.mesh.edges[pos, 0]
+                md2.mesh.edges[pos, 0] = values
+                #Finally remove edges that do not belong to any element
+                pos = np.nonzero(np.logical_and(md2.mesh.edges[:, 1] == -1, md2.mesh.edges[:, 2] == -1))[0]
+                md2.mesh.edges = np.delete(md2.mesh.edges, pos, axis=0)
+
+        #Penalties
+        if np.any(np.logical_not(np.isnan(md2.stressbalance.vertex_pairing))):
+            for i in range(np.size(md1.stressbalance.vertex_pairing, axis=0)):
+                md2.stressbalance.vertex_pairing[i, :] = Pnode[md1.stressbalance.vertex_pairing[i, :]]
+            md2.stressbalance.vertex_pairing = md2.stressbalance.vertex_pairing[np.nonzero(md2.stressbalance.vertex_pairing[:, 0])[0], :]
+        if np.any(np.logical_not(np.isnan(md2.masstransport.vertex_pairing))):
+            for i in range(np.size(md1.masstransport.vertex_pairing, axis=0)):
+                md2.masstransport.vertex_pairing[i, :] = Pnode[md1.masstransport.vertex_pairing[i, :]]
+            md2.masstransport.vertex_pairing = md2.masstransport.vertex_pairing[np.nonzero(md2.masstransport.vertex_pairing[:, 0])[0], :]
+
+        #recreate segments
+        if md1.mesh.__class__.__name__ == 'mesh2d':
+            md2.mesh.vertexconnectivity = NodeConnectivity(md2.mesh.elements, md2.mesh.numberofvertices)
+            md2.mesh.elementconnectivity = ElementConnectivity(md2.mesh.elements, md2.mesh.vertexconnectivity)
+            md2.mesh.segments = contourenvelope(md2.mesh)
+            md2.mesh.vertexonboundary = np.zeros(numberofvertices2, bool)
+            md2.mesh.vertexonboundary[md2.mesh.segments[:, 0:2] - 1] = True
+        else:
+            #First do the connectivity for the contourenvelope in 2d
+            md2.mesh.vertexconnectivity = NodeConnectivity(md2.mesh.elements2d, md2.mesh.numberofvertices2d)
+            md2.mesh.elementconnectivity = ElementConnectivity(md2.mesh.elements2d, md2.mesh.vertexconnectivity)
+            segments = contourenvelope(md2.mesh)
+            md2.mesh.vertexonboundary = np.zeros(int(numberofvertices2 / md2.mesh.numberoflayers), bool)
+            md2.mesh.vertexonboundary[segments[:, 0:2] - 1] = True
+            md2.mesh.vertexonboundary = np.tile(md2.mesh.vertexonboundary, md2.mesh.numberoflayers)
+            #Then do it for 3d as usual
+            md2.mesh.vertexconnectivity = NodeConnectivity(md2.mesh.elements, md2.mesh.numberofvertices)
+            md2.mesh.elementconnectivity = ElementConnectivity(md2.mesh.elements, md2.mesh.vertexconnectivity)
+
+        #Boundary conditions: Dirichlets on new boundary
+        #Catch the elements that have not been extracted
+        orphans_elem = np.nonzero(np.logical_not(flag_elem))[0]
+        orphans_node = np.unique(md1.mesh.elements[orphans_elem, :]) - 1
+        #Figure out which node are on the boundary between md2 and md1
+        nodestoflag1 = np.intersect1d(orphans_node, pos_node)
+        nodestoflag2 = Pnode[nodestoflag1].astype(int) - 1
+        if np.size(md1.stressbalance.spcvx) > 1 and np.size(md1.stressbalance.spcvy) > 2 and np.size(md1.stressbalance.spcvz) > 2:
+            if np.size(md1.inversion.vx_obs) > 1 and np.size(md1.inversion.vy_obs) > 1:
+                md2.stressbalance.spcvx[nodestoflag2] = md2.inversion.vx_obs[nodestoflag2]
+                md2.stressbalance.spcvy[nodestoflag2] = md2.inversion.vy_obs[nodestoflag2]
+            else:
+                md2.stressbalance.spcvx[nodestoflag2] = np.nan
+                md2.stressbalance.spcvy[nodestoflag2] = np.nan
+                print("\n!! extract warning: spc values should be checked !!\n\n")
+            #put 0 for vz
+            md2.stressbalance.spcvz[nodestoflag2] = 0
+        if np.any(np.logical_not(np.isnan(md1.thermal.spctemperature))):
+            md2.thermal.spctemperature[nodestoflag2] = 1
+
+        #Results fields
+        if md1.results:
+            md2.results = results()
+            for solutionfield, field in list(md1.results.__dict__.items()):
+                if isinstance(field, list):
+                    setattr(md2.results, solutionfield, [])
+                    #get time step
+                    for i, fieldi in enumerate(field):
+                        if isinstance(fieldi, results) and fieldi:
+                            getattr(md2.results, solutionfield).append(results())
+                            fieldr = getattr(md2.results, solutionfield)[i]
+                            #get subfields
+                            for solutionsubfield, subfield in list(fieldi.__dict__.items()):
+                                if np.size(subfield) == numberofvertices1:
+                                    setattr(fieldr, solutionsubfield, subfield[pos_node])
+                                elif np.size(subfield) == numberofelements1:
+                                    setattr(fieldr, solutionsubfield, subfield[pos_elem])
+                                else:
+                                    setattr(fieldr, solutionsubfield, subfield)
+                        else:
+                            getattr(md2.results, solutionfield).append(None)
+                elif isinstance(field, results):
+                    setattr(md2.results, solutionfield, results())
+                    if isinstance(field, results) and field:
+                        fieldr = getattr(md2.results, solutionfield)
+                        #get subfields
+                        for solutionsubfield, subfield in list(field.__dict__.items()):
+                            if np.size(subfield) == numberofvertices1:
+                                setattr(fieldr, solutionsubfield, subfield[pos_node])
+                            elif np.size(subfield) == numberofelements1:
+                                setattr(fieldr, solutionsubfield, subfield[pos_elem])
+                            else:
+                                setattr(fieldr, solutionsubfield, subfield)
+
+        #OutputDefinitions fields
+        if md1.outputdefinition.definitions:
+            for solutionfield, field in list(md1.outputdefinition.__dict__.items()):
+                if isinstance(field, list):
+                    #get each definition
+                    for i, fieldi in enumerate(field):
+                        if fieldi:
+                            fieldr = getattr(md2.outputdefinition, solutionfield)[i]
+                            #get subfields
+                            for solutionsubfield, subfield in list(fieldi.__dict__.items()):
+                                if np.size(subfield) == numberofvertices1:
+                                    setattr(fieldr, solutionsubfield, subfield[pos_node])
+                                elif np.size(subfield) == numberofelements1:
+                                    setattr(fieldr, solutionsubfield, subfield[pos_elem])
+                                else:
+                                    setattr(fieldr, solutionsubfield, subfield)
+
+        #Keep track of pos_node and pos_elem
+        md2.mesh.extractedvertices = pos_node + 1
+        md2.mesh.extractedelements = pos_elem + 1
+
+        return md2
+    # }}}
+
+    def extrude(md, *args):  #{{{
+        """EXTRUDE - vertically extrude a 2d mesh
+
+        vertically extrude a 2d mesh and create corresponding 3d mesh.
+        The vertical distribution can:
+        - follow a polynomial law
+        - follow two polynomial laws, one for the lower part and one for the upper part of the mesh
+        - be discribed by a list of coefficients (between 0 and 1)
+
+
+        Usage:
+            md = extrude(md, numlayers, extrusionexponent)
+            md = extrude(md, numlayers, lowerexponent, upperexponent)
+            md = extrude(md, listofcoefficients)
+
+        Example:
+            md = extrude(md, 15, 1.3)
+            md = extrude(md, 15, 1.3, 1.2)
+            md = extrude(md, [0 0.2 0.5 0.7 0.9 0.95 1])
+
+        See also: MODELEXTRACT, COLLAPSE
+        """
+
+        #some checks on list of arguments
+        if len(args) > 3 or len(args) < 1:
+            raise RuntimeError('extrude error message')
+
+        #Extrude the mesh
+        if len(args) == 1:  #list of coefficients
+            clist = args[0]
+            if any(clist < 0) or any(clist > 1):
+                raise TypeError('extrusioncoefficients must be between 0 and 1')
+            clist.extend([0., 1.])
+            clist.sort()
+            extrusionlist = list(set(clist))
+            numlayers = len(extrusionlist)
+
+        elif len(args) == 2:  #one polynomial law
+            if args[1] <= 0:
+                raise TypeError('extrusionexponent must be >= 0')
+            numlayers = args[0]
+            extrusionlist = (np.arange(0., float(numlayers - 1) + 1., 1.) / float(numlayers - 1))**args[1]
+
+        elif len(args) == 3:  #two polynomial laws
+            numlayers = args[0]
+            lowerexp = args[1]
+            upperexp = args[2]
+
+            if args[1] <= 0 or args[2] <= 0:
+                raise TypeError('lower and upper extrusionexponents must be >= 0')
+
+            lowerextrusionlist = (np.arange(0., 1. + 2. / float(numlayers - 1), 2. / float(numlayers - 1)))**lowerexp / 2.
+            upperextrusionlist = (np.arange(0., 1. + 2. / float(numlayers - 1), 2. / float(numlayers - 1)))**upperexp / 2.
+            extrusionlist = np.unique(np.concatenate((lowerextrusionlist, 1. - upperextrusionlist)))
+
+        if numlayers < 2:
+            raise TypeError('number of layers should be at least 2')
+        if md.mesh.__class__.__name__ == 'mesh3dprisms':
+            raise TypeError('Cannot extrude a 3d mesh (extrude cannot be called more than once)')
+
+        #Initialize with 2d mesh
+        mesh2d = md.mesh
+        md.mesh = mesh3dprisms()
+        md.mesh.x = mesh2d.x
+        md.mesh.y = mesh2d.y
+        md.mesh.elements = mesh2d.elements
+        md.mesh.numberofelements = mesh2d.numberofelements
+        md.mesh.numberofvertices = mesh2d.numberofvertices
+
+        md.mesh.lat = mesh2d.lat
+        md.mesh.long = mesh2d.long
+        md.mesh.epsg = mesh2d.epsg
+        md.mesh.scale_factor = mesh2d.scale_factor
+
+        md.mesh.vertexonboundary = mesh2d.vertexonboundary
+        md.mesh.vertexconnectivity = mesh2d.vertexconnectivity
+        md.mesh.elementconnectivity = mesh2d.elementconnectivity
+        md.mesh.average_vertex_connectivity = mesh2d.average_vertex_connectivity
+
+        md.mesh.extractedvertices = mesh2d.extractedvertices
+        md.mesh.extractedelements = mesh2d.extractedelements
+
+        x3d = np.empty((0))
+        y3d = np.empty((0))
+        z3d = np.empty((0))  #the lower node is on the bed
+        thickness3d = md.geometry.thickness  #thickness and bed for these nodes
+        bed3d = md.geometry.base
+
+        #Create the new layers
+        for i in range(numlayers):
+            x3d = np.concatenate((x3d, md.mesh.x))
+            y3d = np.concatenate((y3d, md.mesh.y))
+            #nodes are distributed between bed and surface accordingly to the given exponent
+            z3d = np.concatenate((z3d, (bed3d + thickness3d * extrusionlist[i]).reshape(-1)))
+        number_nodes3d = np.size(x3d)  #number of 3d nodes for the non extruded part of the mesh
+
+        #Extrude elements
+        elements3d = np.empty((0, 6), int)
+        for i in range(numlayers - 1):
+            elements3d = np.vstack((elements3d, np.hstack((md.mesh.elements + i * md.mesh.numberofvertices,
+                                                           md.mesh.elements + (i + 1) * md.mesh.numberofvertices))))  #Create the elements of the 3d mesh for the non extruded part
+        number_el3d = np.size(elements3d, axis=0)  #number of 3d nodes for the non extruded part of the mesh
+
+        #Keep a trace of lower and upper nodes
+        lowervertex = np.nan * np.ones(number_nodes3d, int)
+        uppervertex = np.nan * np.ones(number_nodes3d, int)
+        lowervertex[md.mesh.numberofvertices:] = np.arange(1, (numlayers - 1) * md.mesh.numberofvertices + 1)
+        uppervertex[:(numlayers - 1) * md.mesh.numberofvertices] = np.arange(md.mesh.numberofvertices + 1, number_nodes3d + 1)
+        md.mesh.lowervertex = lowervertex
+        md.mesh.uppervertex = uppervertex
+
+        #same for lower and upper elements
+        lowerelements = np.nan * np.ones(number_el3d, int)
+        upperelements = np.nan * np.ones(number_el3d, int)
+        lowerelements[md.mesh.numberofelements:] = np.arange(1, (numlayers - 2) * md.mesh.numberofelements + 1)
+        upperelements[:(numlayers - 2) * md.mesh.numberofelements] = np.arange(md.mesh.numberofelements + 1, (numlayers - 1) * md.mesh.numberofelements + 1)
+        md.mesh.lowerelements = lowerelements
+        md.mesh.upperelements = upperelements
+
+        #Save old mesh
+        md.mesh.x2d = md.mesh.x
+        md.mesh.y2d = md.mesh.y
+        md.mesh.elements2d = md.mesh.elements
+        md.mesh.numberofelements2d = md.mesh.numberofelements
+        md.mesh.numberofvertices2d = md.mesh.numberofvertices
+
+        #Build global 3d mesh
+        md.mesh.elements = elements3d
+        md.mesh.x = x3d
+        md.mesh.y = y3d
+        md.mesh.z = z3d
+        md.mesh.numberofelements = number_el3d
+        md.mesh.numberofvertices = number_nodes3d
+        md.mesh.numberoflayers = numlayers
+
+        #Ok, now deal with the other fields from the 2d mesh:
+        #bedinfo and surface info
+        md.mesh.vertexonbase = project3d(md, 'vector', np.ones(md.mesh.numberofvertices2d, bool), 'type', 'node', 'layer', 1)
+        md.mesh.vertexonsurface = project3d(md, 'vector', np.ones(md.mesh.numberofvertices2d, bool), 'type', 'node', 'layer', md.mesh.numberoflayers)
+        md.mesh.vertexonboundary = project3d(md, 'vector', md.mesh.vertexonboundary, 'type', 'node')
+
+        #lat long
+        md.mesh.lat = project3d(md, 'vector', md.mesh.lat, 'type', 'node')
+        md.mesh.long = project3d(md, 'vector', md.mesh.long, 'type', 'node')
+        md.mesh.scale_factor = project3d(md, 'vector', md.mesh.scale_factor, 'type', 'node')
+
+        md.geometry.extrude(md)
+        md.friction.extrude(md)
+        md.inversion.extrude(md)
+        md.smb.extrude(md)
+        md.initialization.extrude(md)
+
+        md.flowequation.extrude(md)
+        md.stressbalance.extrude(md)
+        md.thermal.extrude(md)
+        md.masstransport.extrude(md)
+        md.levelset.extrude(md)
+        md.calving.extrude(md)
+        md.frontalforcings.extrude(md)
+        md.hydrology.extrude(md)
+        md.debris.extrude(md)
+        md.solidearth.extrude(md)
+        md.dsl.extrude(md)
+        md.stochasticforcing.extrude(md)
+
+        #connectivity
+        md.mesh.elementconnectivity = np.tile(md.mesh.elementconnectivity, (numlayers - 1, 1))
+        md.mesh.elementconnectivity[np.nonzero(md.mesh.elementconnectivity == 0)] = -sys.maxsize - 1
+        if not np.isnan(md.mesh.elementconnectivity).all():
+            for i in range(1, numlayers - 1):
+                connect1 = i * md.mesh.numberofelements2d
+                connect2 = (i + 1) * md.mesh.numberofelements2d
+                md.mesh.elementconnectivity[connect1:connect2, :] = md.mesh.elementconnectivity[connect1:connect2, :] + md.mesh.numberofelements2d
+                md.mesh.elementconnectivity[np.nonzero(md.mesh.elementconnectivity < 0)] = 0
+
+        md.materials.extrude(md)
+        md.damage.extrude(md)
+        md.mask.extrude(md)
+        md.qmu.extrude(md)
+        md.basalforcings.extrude(md)
+        md.outputdefinition.extrude(md)
+
+        #increase connectivity if less than 25:
+        if md.mesh.average_vertex_connectivity <= 25:
+            md.mesh.average_vertex_connectivity = 100
+
+        return md
+    # }}}
+
+    def collapse(md):  #{{{
+        """COLLAPSE - collapses a 3d mesh into a 2d mesh
+
+        This routine collapses a 3d model into a 2d model and collapses all
+        the fields of the 3d model by taking their depth-averaged values
+
+        Usage:
+            md = collapse(md)
+
+        See also: EXTRUDE, MODELEXTRACT
+        """
+
+        # Check that the model is really a 3d model
+        if md.mesh.elementtype() != 'Penta':
+            raise Exception('collapse error message: only a 3d mesh can be collapsed')
+
+        # Start with changing all the fields from the 3d mesh
+
+        # Dealing with the friction law
+        # Drag is limited to nodes that are on the bedrock.
+        if md.friction.__class__.__name__ == 'friction':
+            md.friction.coefficient = project2d(md, md.friction.coefficient, 1)
+            md.friction.p = project2d(md, md.friction.p, 1)
+            md.friction.q = project2d(md, md.friction.q, 1)
+        elif md.friction.__class__.__name__ == 'frictioncoulomb':
+            md.friction.coefficient = project2d(md, md.friction.coefficient, 1)
+            md.friction.coefficientcoulomb = project2d(md, md.friction.coefficientcoulomb, 1)
+            md.friction.p = project2d(md, md.friction.p, 1)
+            md.friction.q = project2d(md, md.friction.q, 1)
+        elif md.friction.__class__.__name__ == 'frictionhydro':
+            md.friction.q = project2d(md, md.friction.q, 1)
+            md.friction.C = project2d(md, md.friction.C, 1)
+            md.friction.As = project2d(md, md.friction.As, 1)
+            md.friction.effective_pressure = project2d(md, md.friction.effective_pressure, 1)
+        elif md.friction.__class__.__name__ == 'frictionwaterlayer':
+            md.friction.coefficient = project2d(md, md.friction.coefficient, 1)
+            md.friction.p = project2d(md, md.friction.p, 1)
+            md.friction.q = project2d(md, md.friction.q, 1)
+            md.friction.water_layer = project2d(md, md.friction.water_layer, 1)
+        elif md.friction.__class__.__name__ == 'frictionweertman':
+            md.friction.C = project2d(md, md.friction.C, 1)
+            md.friction.m = project2d(md, md.friction.m, 1)
+        elif md.friction.__class__.__name__ == 'frictionweertmantemp':
+            md.friction.C = project2d(md, md.friction.C, 1)
+            md.friction.m = project2d(md, md.friction.m, 1)
+        else:
+            print('friction type not supported')
+
+        # Observations
+        if not np.isnan(md.inversion.vx_obs).all():
+            md.inversion.vx_obs = project2d(md, md.inversion.vx_obs, md.mesh.numberoflayers)
+        if not np.isnan(md.inversion.vy_obs).all():
+            md.inversion.vy_obs = project2d(md, md.inversion.vy_obs, md.mesh.numberoflayers)
+        if not np.isnan(md.inversion.vel_obs).all():
+            md.inversion.vel_obs = project2d(md, md.inversion.vel_obs, md.mesh.numberoflayers)
+        if not np.isnan(md.inversion.thickness_obs).all():
+            md.inversion.thickness_obs = project2d(md, md.inversion.thickness_obs, md.mesh.numberoflayers)
+        if not np.isnan(md.inversion.cost_functions_coefficients).all():
+            md.inversion.cost_functions_coefficients = project2d(md, md.inversion.cost_functions_coefficients, md.mesh.numberoflayers)
+        if isinstance(md.inversion.min_parameters, np.ndarray) and md.inversion.min_parameters.size > 1:
+            md.inversion.min_parameters = project2d(md, md.inversion.min_parameters, md.mesh.numberoflayers)
+        if isinstance(md.inversion.max_parameters, np.ndarray) and md.inversion.max_parameters.size > 1:
+            md.inversion.max_parameters = project2d(md, md.inversion.max_parameters, md.mesh.numberoflayers)
+        if md.smb.__class__.__name__ == 'SMBforcing' and not np.isnan(md.smb.mass_balance).all():
+            md.smb.mass_balance = project2d(md, md.smb.mass_balance, md.mesh.numberoflayers)
+        elif md.smb.__class__.__name__ == 'SMBhenning' and not np.isnan(md.smb.smbref).all():
+            md.smb.smbref = project2d(md, md.smb.smbref, md.mesh.numberoflayers)
+
+        # Results
+        if not np.isnan(md.initialization.vx).all():
+            md.initialization.vx = DepthAverage(md, md.initialization.vx)
+        if not np.isnan(md.initialization.vy).all():
+            md.initialization.vy = DepthAverage(md, md.initialization.vy)
+        if not np.isnan(md.initialization.vz).all():
+            md.initialization.vz = DepthAverage(md, md.initialization.vz)
+        if not np.isnan(md.initialization.vel).all():
+            md.initialization.vel = DepthAverage(md, md.initialization.vel)
+        if not np.isnan(md.initialization.temperature).all():
+            md.initialization.temperature = DepthAverage(md, md.initialization.temperature)
+        if not np.isnan(md.initialization.pressure).all():
+            md.initialization.pressure = project2d(md, md.initialization.pressure, 1)
+        if not np.isnan(md.initialization.sediment_head).all():
+            md.initialization.sediment_head = project2d(md, md.initialization.sediment_head, 1)
+        if not np.isnan(md.initialization.epl_head).all():
+            md.initialization.epl_head = project2d(md, md.initialization.epl_head, 1)
+        if not np.isnan(md.initialization.epl_thickness).all():
+            md.initialization.epl_thickness = project2d(md, md.initialization.epl_thickness, 1)
+        if not np.isnan(md.initialization.waterfraction).all():
+            md.initialization.waterfraction = project2d(md, md.initialization.waterfraction, 1)
+        if not np.isnan(md.initialization.watercolumn).all():
+            md.initialization.watercolumn = project2d(md, md.initialization.watercolumn, 1)
+        if not np.isnan(md.initialization.debris).all():
+            md.initialization.debris = project2d(md, md.initialization.debris, 1)
+
+        # elementstype
+        if not np.isnan(md.flowequation.element_equation).all():
+            md.flowequation.element_equation = project2d(md, md.flowequation.element_equation, 1)
+            md.flowequation.vertex_equation = project2d(md, md.flowequation.vertex_equation, 1)
+            md.flowequation.borderSSA = project2d(md, md.flowequation.borderSSA, 1)
+            md.flowequation.borderHO = project2d(md, md.flowequation.borderHO, 1)
+            md.flowequation.borderFS = project2d(md, md.flowequation.borderFS, 1)
+
+        # Boundary conditions
+        md.stressbalance.spcvx = project2d(md, md.stressbalance.spcvx, md.mesh.numberoflayers)
+        md.stressbalance.spcvy = project2d(md, md.stressbalance.spcvy, md.mesh.numberoflayers)
+        md.stressbalance.spcvz = project2d(md, md.stressbalance.spcvz, md.mesh.numberoflayers)
+        md.stressbalance.referential = project2d(md, md.stressbalance.referential, md.mesh.numberoflayers)
+        md.stressbalance.loadingforce = project2d(md, md.stressbalance.loadingforce, md.mesh.numberoflayers)
+        # TODO:
+        # - Check if md.mesh.numberoflayershould really be offset by 1.
+        # - Find out why md.masstransport.spcthickness is not offset, but the
+        #   other fields are.
+        # - If offset is required, figure out if it can be abstarcted away to
+        #   another part of the API.
+        if np.size(md.masstransport.spcthickness) > 1:
+            md.masstransport.spcthickness = project2d(md, md.masstransport.spcthickness, md.mesh.numberoflayers)
+        if np.size(md.damage.spcdamage) > 1:  # and not np.isnan(md.damage.spcdamage).all():
+            md.damage.spcdamage = project2d(md, md.damage.spcdamage, md.mesh.numberoflayers - 1)
+        if np.size(md.levelset.spclevelset) > 1:
+            md.levelset.spclevelset = project2d(md, md.levelset.spclevelset, md.mesh.numberoflayers - 1)
+        md.thermal.spctemperature = project2d(md, md.thermal.spctemperature, md.mesh.numberoflayers - 1)
+
+        # Hydrologydc variables
+        if md.hydrology.__class__.__name__ == 'hydrologydc':
+            # md.hydrology.spcsediment_head = project2d(md, md.hydrology.spcsediment_head, 1)
+            # md.hydrology.mask_eplactive_node = project2d(md, md.hydrology.mask_eplactive_node, 1)
+            # md.hydrology.sediment_transmitivity = project2d(md, md.hydrology.sediment_transmitivity, 1)
+            # md.hydrology.basal_moulin_input = project2d(md, md.hydrology.basal_moulin_input, 1)
+            # if md.hydrology.isefficientlayer == 1:
+            #     md.hydrology.spcepl_head = project2d(md, md.hydrology.spcepl_head, 1)
+            hydrofields = md.hydrology.__dict__.keys()
+            for field in hydrofields:
+                try:
+                    isvector = np.logical_or(np.shape(md.hydrology.__dict__[field])[0] == md.mesh.numberofelements,
+                                             np.shape(md.hydrology.__dict__[field])[0] == md.mesh.numberofvertices)
+                except IndexError:
+                    isvector = False
+                #we collapse only fields that are vertices or element based
+                if isvector:
+                    md.hydrology.__dict__[field] = project2d(md, md.hydrology.__dict__[field], 1)
+
+        # Materials
+        md.materials.rheology_B = DepthAverage(md, md.materials.rheology_B)
+        md.materials.rheology_n = project2d(md, md.materials.rheology_n, 1)
+
+        # dsl
+        if np.size(md.dsl.sea_surface_height_above_geoid) > 1:
+            md.dsl.sea_surface_height_above_geoid = project2d(md, md.dsl.sea_surface_height_above_geoid, 1)
+        if np.size(md.dsl.sea_water_pressure_at_sea_floor) > 1:
+            md.dsl.sea_water_pressure_at_sea_floor = project2d(md, md.dsl.sea_water_pressure_at_sea_floor, 1)
+
+        # Damage
+        if md.damage.isdamage:
+            md.damage.D = DepthAverage(md, md.damage.D)
+
+        # Special for thermal modeling
+        if not np.isnan(md.basalforcings.groundedice_melting_rate).all():
+            md.basalforcings.groundedice_melting_rate = project2d(md, md.basalforcings.groundedice_melting_rate, 1)
+        if hasattr(md.basalforcings, 'floatingice_melting_rate') and not np.isnan(md.basalforcings.floatingice_melting_rate).all():
+            md.basalforcings.floatingice_melting_rate = project2d(md, md.basalforcings.floatingice_melting_rate, 1)
+        md.basalforcings.geothermalflux = project2d(md, md.basalforcings.geothermalflux, 1)  #bedrock only gets geothermal flux
+
+        if hasattr(md.calving, 'coeff') and not np.isnan(md.calving.coeff).all():
+            md.calving.coeff = project2d(md, md.calving.coeff, 1)
+        if hasattr(md.frontalforcings, 'meltingrate') and not np.isnan(md.frontalforcings.meltingrate).all():
+            md.frontalforcings.meltingrate = project2d(md, md.frontalforcings.meltingrate, 1)
+
+        # Update of connectivity matrix
+        md.mesh.average_vertex_connectivity = 25
+
+        # Collapse the mesh
+        nodes2d = md.mesh.numberofvertices2d
+        elements2d = md.mesh.numberofelements2d
+
+        # Parameters
+        md.geometry.surface = project2d(md, md.geometry.surface, 1)
+        md.geometry.thickness = project2d(md, md.geometry.thickness, 1)
+        md.geometry.base = project2d(md, md.geometry.base, 1)
+        if not np.isnan(md.geometry.bed).all():
+            md.geometry.bed = project2d(md, md.geometry.bed, 1)
+        if not np.isnan(md.mask.ocean_levelset).all():
+            md.mask.ocean_levelset = project2d(md, md.mask.ocean_levelset, 1)
+        if not np.isnan(md.mask.ice_levelset).all():
+            md.mask.ice_levelset = project2d(md, md.mask.ice_levelset, 1)
+
+        # Lat/long
+        if np.size(md.mesh.lat) == md.mesh.numberofvertices:
+            md.mesh.lat = project2d(md, md.mesh.lat, 1)
+        if np.size(md.mesh.long) == md.mesh.numberofvertices:
+            md.mesh.long = project2d(md, md.mesh.long, 1)
+
+        # OutputDefinitions
+        if md.outputdefinition.definitions:
+            for solutionfield, field in list(md.outputdefinition.__dict__.items()):
+                if isinstance(field, list):
+                    # Get each definition
+                    for i, fieldi in enumerate(field):
+                        if fieldi:
+                            fieldr = getattr(md.outputdefinition, solutionfield)[i]
+                            # Get subfields
+                            for solutionsubfield, subfield in list(fieldi.__dict__.items()):
+                                if np.size(subfield) == md.mesh.numberofvertices:
+                                    setattr(fieldr, solutionsubfield, project2d(md, subfield, 1))
+                                elif np.size(subfield) == md.mesh.numberofelements:
+                                    setattr(fieldr, solutionsubfield, project2d(md, subfield, 1))
+
+        # Initialize 2d mesh
+        mesh = mesh2d()
+        mesh.x = md.mesh.x2d
+        mesh.y = md.mesh.y2d
+        mesh.numberofvertices = md.mesh.numberofvertices2d
+        mesh.numberofelements = md.mesh.numberofelements2d
+        mesh.elements = md.mesh.elements2d
+        # if not np.isnan(md.mesh.vertexonboundary).all():
+        #     mesh.vertexonboundary = project2d(md, md.mesh.vertexonboundary, 1)
+        # if not np.isnan(md.mesh.elementconnectivity).all():
+        #     mesh.elementconnectivity = project2d(md, md.mesh.elementconnectivity, 1)
+        if np.size(md.mesh.lat) == md.mesh.numberofvertices:
+            mesh.lat = project2d(md, md.mesh.lat, 1)
+        if np.size(md.mesh.long) == md.mesh.numberofvertices:
+            mesh.long = project2d(md, md.mesh.long, 1)
+        mesh.epsg = md.mesh.epsg
+        if np.size(md.mesh.scale_factor) == md.mesh.numberofvertices:
+            mesh.scale_factor = project2d(md, md.mesh.scale_factor, 1)
+        if hasattr(md.mesh, 'vertexonboundary') and not np.isnan(md.mesh.vertexonboundary).all():
+            mesh.vertexonboundary = project2d(md, md.mesh.vertexonboundary, 1)
+        if hasattr(md.mesh, 'elementonboundary') and not np.isnan(md.mesh.elementonboundary).all():
+            mesh.elementonboundary = project2d(md, md.mesh.elementonboundary, 1)
+        md.mesh = mesh
+        md.mesh.vertexconnectivity = NodeConnectivity(md.mesh.elements, md.mesh.numberofvertices)
+        md.mesh.elementconnectivity = ElementConnectivity(md.mesh.elements, md.mesh.vertexconnectivity)
+        md.mesh.segments = contourenvelope(md.mesh)
+
+        return md
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/modellist.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/modellist.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/modellist.m	(revision 27955)
@@ -0,0 +1,385 @@
+%MODELLIST class definition
+%
+%   Usage:
+%      modellist=modellist({md1 md2 md3});
+
+classdef modellist
+	properties (SetAccess=public) 
+		models  = cell(0,1);
+		cluster = generic();
+	end
+	methods
+		function md_list=modelsextract(md,flags,minel,varargin) % {{{
+			%modelsextract - extract several self contained models according to a list of element flags.
+			%
+			%   The difference between this routine and the modelextract.m routine (without an 's') is that 
+			%   as many models are extracted as there are closed contours defined in area. 
+			%   This routine is needed for example when doing data assimilation of ice shelves in Antarctica. 
+			%   Many independent ice shelves are present, and we don't want data assimilation on one ice shelf 
+			%   to be hindered by another totally independent ice shelf.
+			%
+			%   Usage:
+			%      md_list=modelsextract(md,elementfalgs,minel);
+			%
+			%   Examples:
+			%      md_list=modelsextract(md...,,1000);
+			%
+			%   See also: EXTRUDE, COLLAPSE, MODELEXTRACT
+
+			disp('selecting pools of elements');
+			%go through flags and build as many independent element flags as there are groups of connected 1s
+			%in flags.
+
+			%2D or 3D?
+			if dimension(md.mesh)==3,
+				numberofelements=md.mesh.numberofelements2d; %this will be forgotten when we get out.
+				flags=project2d(md,flags,1);
+			else
+				numberofelements=md.mesh.numberofelements;
+			end
+
+			%recover extra arguments: 
+			distance=0;
+			if nargin==4,
+				distance=varargin{1};
+			end
+
+			flag_list=cell(0,1);
+
+			for i=1:size(flags,1),
+
+				if (flags(i)),
+
+					%ok, we are sure element i is part of a new pool.
+					pool=zeros(numberofelements,1);
+					pool=PropagateFlagsFromConnectivity(md.mesh.elementconnectivity,pool,i,flags);
+					flag_list{end+1,1}=pool;
+
+					%speed up rest of computation by taking pool out of flags: 
+					pos=find(pool);flags(pos)=0;
+
+				end
+			end
+
+			%go through flag_list and discard any pool of less than minel elements: 
+			ex_pos=[];
+			for i=1:length(flag_list),
+				if length(find(flag_list{i}))<minel,
+					ex_pos=[ex_pos; i];
+				end
+			end
+			flag_list(ex_pos)=[];
+
+			%now, if distance was specified, expand the flag_list by distance km: 
+			if distance,
+				for i=1:length(flag_list),
+					flag_list{i}=PropagateFlagsUntilDistance(md,flag_list{i},distance);
+				end
+			end
+
+			%now, go use the pools of flags to extract models: 
+			disp(['extracting ' num2str(size(flag_list,1)) ' models']);
+			models=cell(0,1);
+
+			for i=1:size(flag_list,1),
+				disp(['   ' num2str(i) '/' num2str(size(flag_list,1))]);
+				if dimension(md.mesh)==3,
+					flags2d=flag_list{i};
+					realflags=project3d(md,flags2d,'element');
+				else
+					realflags=flag_list{i};
+				end
+				models{end+1,1}=modelextract(md,realflags);
+			end
+
+			%return model list
+			md_list=modellist(models);
+
+		end %end of this function }}}
+		function md_list=modelsextractfromdomains(md,directory) % {{{
+			%modelsextractfromdomains- extract several self contained models according to a list of domains
+			%
+			%   Usage:
+			%      md_list=modelsextractfromdomains(md,'Basins/');
+			%
+			%   Examples:
+			%      md_list=modelsextract(md,'Basins/');
+			%
+			%   See also: MODELSEXTRACTS, MODELEXTRACT
+
+			%go into directory and get list of files.
+			cd(directory);
+			basins=listfiles;
+			cd ..
+
+			models=cell(0,1);
+			for i=1:length(basins),
+				models{end+1,1}=modelextract(md,[directory '/' basins{i}]);
+			end
+
+			%return model list: 
+			md_list=modellist(models);
+
+		end % }}}
+		function self = modellist(varargin) % {{{
+
+			%initialize list
+			if nargin==0,
+				%Do nothing,
+			elseif nargin==1,
+				if ~isa(varargin{1},'cell'),
+					error('not supported yet');
+				end
+
+				celllist=varargin{1};
+
+				%check on size of cell list: 
+				if (size(celllist,2)~=1),
+					error('modellist constructor error message: list of models should be a cell list of column size 1');
+				end
+
+				%check that only models are in the celllist: 
+				for i=1:size(celllist,1),
+					if ~isa(celllist{i},'model')
+						error(['modellist constructor error message: element ' num2str(i) ' of cell list is not a model!']);
+					end
+				end
+
+				self.models  = celllist;
+				self.cluster = self.models{1}.cluster;
+			end
+		end % }}}
+		function val = get(self, propName)% {{{
+		%GET - gets model propertie from a specified object ans returns the value
+		% 
+		%   Usage:
+		%      val = get(a, propName)
+
+			switch propName
+				case 'numberofelements'
+					val = self.numberofelements;
+				case 'numberofnodes'
+					val = self.numberofnodes;
+				case 'elements' 
+					val = self.elements;
+				case 'x' 
+					val = self.x;
+				case 'y' 
+					val = self.y;
+				case 'z' 
+					val = self.z;
+				otherwise
+					error(['get error message: ' propName,' is not a valid model property'])
+			end
+		end % }}}
+		function self = loadmultipleresultsfromcluster(self) % {{{
+			%LOADMULTIPLERESULTSFROMCLUSTER - load multiple results of solution sequences from cluster
+			%
+			%   Usage:
+			%      self=loadresultsfromcluster(self);
+
+			nummodels=length(self.models);
+
+			%Get cluster settings
+			cluster=self.cluster;
+			name=self.name;
+			cluster_rc_location=which('cluster.rc');
+			[codepath,executionpath]=ClusterParameters(cluster,cluster_rc_location);
+
+			%Remote tar: 
+			disp('tarring results');
+			issmssh(cluster,['"cd ' executionpath '/' name ' && rm -rf file_list.txt ModelResults.tar.gz && find -iname ''*-*vs*.outbin'' > file_list.txt && tar zcvf ModelResults.tar.gz --files-from file_list.txt  && rm -rf file_list.txt "']);
+
+			%copy results from cluster to present directory
+			scpin(cluster, [executionpath '/' name], {'ModelResults.tar.gz'});
+
+			%untar:
+			!tar -zxvf ModelResults.tar.gz
+
+			%ok, go through list and load results from disk: 
+			for i=1:nummodels,
+				%load  results for this model
+				self.models{i}=loadresultsfromdisk(self.models{i},[name '-' num2str(i) 'vs' num2str(nummodels) '.outbin']);
+
+				delete([name '-' num2str(i) 'vs' num2str(nummodels) '.outbin']);
+			end
+
+			%erase files 
+			delete('ModelResults.tar.gz');
+		end % }}}
+		function self = solve(self,varargin)% {{{
+			%SOLVE - apply solution sequence for  a list of models. Used in batch mode.
+			%
+			%   Usage:
+			%      self=solve(self,varargin)
+			%      where varargin is a lit of paired arguments. 
+			%      arguments can be: 'analysis_type': 'stressbalance','thermal','masstransport','transient'
+			%
+			%   Examples:
+			%      self=solve(self,'analysis_type','stressbalance');
+
+			%recover options
+			options=pairoptions(varargin{:});
+
+			%add default options
+			options=process_solve_options(options);
+
+			%length of list
+			nummodels=length(self.models);
+
+			%name of queue: to make it unique, add a time stamp
+			name=[self.name '-' datestr(now,1) '-' datestr(now,'HH-MM-SS') ];
+
+			%name of cluster will be first name of list
+			cluster=self.cluster;
+
+			%Figure out parameters for this particular cluster
+			cluster_rc_location=which('cluster.rc');
+			[codepath,executionpath]=ClusterParameters(cluster,cluster_rc_location);
+
+			%solve in batch mode: 
+			for i=1:nummodels,
+
+				%model
+				mdex=self.models{i};
+
+				%recover some fields
+				mdex.analysis_type=options.analysis_type;
+
+				mdex.name=[name '-' num2str(i) 'vs' num2str(nummodels)];
+				mdex.time=self.time;
+				mdex.queue=self.queue;
+				mdex.cluster=self.cluster;
+				if ~isnan(self.np),
+					mdex.np=self.np;
+				end
+
+				%call solve in batch mode:
+				if strcmpi(cluster,oshostname),
+					mdex=solve(mdex,varargin{:});
+				else
+					mdex=solve(mdex,varargin{:},'batch','yes','directory',name);
+				end
+
+				%feed back
+				self.models{i}=mdex;
+			end
+
+			%locally, we are done.
+			if strcmpi(cluster,oshostname),
+				return
+			end
+
+			%now, tar all the files and then erase them.
+			eval(['!find -iname ''' name '-*'' > file_list.txt']);
+			!tar zcvf ModelList.tar.gz --files-from file_list.txt
+			!rm -rf *.bin *.queue file_list.txt
+
+			%still have to build a launching script.
+			BuildMultipleQueueingScript(cluster,name,executionpath,codepath);
+
+			%launch jobs on remote cluster
+			LaunchMultipleQueueJob(cluster,name,executionpath);
+
+			%erase files: 
+			delete([name '.queue']);
+			delete('ModelList.tar.gz');
+
+			%save name: 
+			self.name=name;
+		end % }}}
+	end
+end
+
+function BuildMultipleQueueingScript(cluster,name,executionpath,codepath)% {{{
+%BUILDMULTIPLEQUEUEINGSCRIPT - 
+%
+%   Usage:
+%      BuildMultipleQueueingScript(executionpath,codepath)
+
+disp('building queuing script');
+
+%First try and figure out if there is a special script for this particular cluster
+function_name=['BuildMultipleQueueingScript' cluster]
+
+%some specific treatment of identical cluster, gemini, castor and pollux
+if strcmpi(cluster,'castor') || strcmpi(cluster,'pollux'),
+	function_name='BuildMultipleQueueingScriptgemini';
+end
+
+if exist(function_name,'file'),
+	%Call this function:
+	eval([function_name '(name,executionpath,codepath);']);
+else
+	%Call the generic BuildQueueingScript:
+	BuildMultipleQueueingScriptGeneric(name,executionpath,codepath);
+end
+end % }}}
+function BuildQueueingScriptgemini(name,executionpath,codepath)% {{{
+%BUILDQUEUEINGSCRIPTGEMINI - ...
+%
+%   Usage:
+%      BuildQueueingScriptgemini(md,executionpath,codepath)
+
+scriptname=[name '.queue'];
+
+fid=fopen(scriptname,'w');
+if fid==-1,
+	error(['BuildQueueingScriptgeminierror message: could not open ' scriptname ' file for ascii writing']);
+end
+
+fprintf(fid,'#!/bin/sh\n');
+fprintf(fid,'cd %s\n',executionpath);
+fprintf(fid,'mkdir %s\n',name);
+fprintf(fid,'cd %s\n',name);
+fprintf(fid,'mv ../ModelList.tar.gz ./\n');
+fprintf(fid,'tar -zxvf ModelList.tar.gz\n');
+fprintf(fid,'foreach i (%s-*vs*.queue)\n',name);
+fprintf(fid,'qsub $i\n');
+fprintf(fid,'end\n');
+fclose(fid);
+end% }}}
+function LaunchMultipleQueueJob(cluster,name,executionpath)% {{{
+%LAUNCHMULTIPLEQUEUEJOB - ...
+%
+%   Usage:
+%      LaunchMultipleQueueJob(executionpath)
+
+%First try and figure out if there is a special script for thie particular cluster
+function_name=['LaunchMultipleQueueJob' cluster]
+
+%some specific treatment of identical cluster, gemini, castor and pollux
+if strcmpi(cluster,'castor') || strcmpi(cluster,'pollux'),
+	function_name='LaunchMultipleQueueJobgemini';
+end
+
+if exist(function_name,'file'),
+	%Call this function:
+	eval([function_name '(cluster,name,executionpath);']);
+else
+	%Call the generic LaunchMultipleQueueJob:
+	LaunchMultipleQueueJobGeneric(cluster,name,executionpath);
+end
+end% }}}
+function md=LaunchMultipleQueueJobgemini(cluster,name,executionpath)% {{{
+%LAUNCHMULTIPLEQUEUEJOBGEMINI - Launch multiple queuing script on Gemini cluster
+%
+%   Usage:
+%      LaunchMultipleQueueJobgemini(cluster,name,executionpath)
+
+%first, check we have the binary file and the queuing script
+if ~exist([ name '.queue'],'file'),
+	error('LaunchMultipleQueueJobgemini error message: queuing script issing, cannot go forward');
+end
+
+if ~exist('ModelList.tar.gz','file'),
+	error('LaunchMultipleQueueJobgemini error message: inputs models file missing, cannot go forward');
+end
+
+%upload both files to cluster
+disp('uploading input file,  queuing script and variables script');
+eval(['!scp ModelList.tar.gz ' name '.queue '  cluster ':' executionpath]);
+
+disp('launching solution sequence on remote cluster');
+issmssh(cluster,login,['"cd ' executionpath ' && source ' name '.queue "']);
+end% }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/nodalvalue.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/nodalvalue.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/nodalvalue.m	(revision 27955)
@@ -0,0 +1,69 @@
+%NODALVALUE class definition
+%
+%   Usage:
+%      nodalvalue=nodalvalue();
+%      nodalvalue=nodalvalue('name','SealevelchangeSNodalValue',...
+%                    'definitionstring','Outputdefinition1', 
+%                    'model_string','SealevelchangeS',
+%                    'node',1);
+
+classdef nodalvalue
+	properties (SetAccess=public)
+		%nodalvalue
+		name              = '';
+		definitionstring   = ''; %string that identifies this output definition uniquely, from 'Outputdefinition[1-10]'
+		model_string      = ''; %string for field that is being retrieved
+		node             = NaN; %for which node are we retrieving the value?
+	end
+	
+	methods
+		function self = nodalvalue(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name=getfieldvalue(options,'name','');
+				self.definitionstring=getfieldvalue(options,'definitionstring');
+				self.model_string=getfieldvalue(options,'model_string');
+				self.node=getfieldvalue(options,'node',NaN);
+
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ischar(self.name),
+				error('nodalvalue error message: ''name'' field should be a string!');
+			end
+			OutputdefinitionStringArray={};
+			for i=1:100
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+			md = checkfield(md,'fieldname','self.definitionstring','field',self.definitionstring,'values',OutputdefinitionStringArray);
+			md = checkfield(md,'fieldname','self.node','field',self.node,'values',[1:md.mesh.numberofvertices]);
+
+		end % }}}
+		function md = disp(self) % {{{
+		
+			disp(sprintf('   Nodalvalue:\n'));
+
+			fielddisplay(self,'name','identifier for this nodalvalue response');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from ''Outputdefinition[1-10]''');
+			fielddisplay(self,'model_string','string for field that is being retrieved');
+			fielddisplay(self,'node','vertex index at which we retrieve the value');
+
+		end % }}}
+		function md = marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'data',self.name,'name','md.nodalvalue.name','format','String');
+			WriteData(fid,prefix,'data',self.definitionstring,'name','md.nodalvalue.definitionenum','format','String');
+			WriteData(fid,prefix,'data',self.model_string,'name','md.nodalvalue.model_enum','format','String');
+			WriteData(fid,prefix,'data',self.node,'name','md.nodalvalue.node','format','Integer');
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/nodalvalue.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/nodalvalue.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/nodalvalue.py	(revision 27955)
@@ -0,0 +1,66 @@
+import numpy as np
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from pairoptions import pairoptions
+from WriteData import WriteData
+
+
+class nodalvalue(object):
+    """NODALVALUE class definition
+
+    Usage:
+        nodalvalue=nodalvalue()
+        nodalvalue=nodalvalue(
+            'name', 'SealevelchangeSNodalValue',
+            'definitionstring', 'Outputdefinition1',
+            'model_string', 'SealevelchangeS',
+            'node', 1
+        )
+    """
+
+    def __init__(self, *args):  #{{{
+        self.name = ''
+        self.definitionstring = ''  # string that identifies this output definition uniquely, from 'Outputdefinition[1-10]'
+        self.model_string = ''  # string for field that is being retrieved
+        self.node = np.nan  #for which node are we retrieving the value?
+
+        #use provided options to change fields
+        options = pairoptions(*args)
+
+        # Get name
+        self.name = options.getfieldvalue('name', '')
+        self.definitionstring = options.getfieldvalue('definitionstring', '')
+        self.model_string = options.getfieldvalue('model_string', '')
+        self.node = options.getfieldvalue('node', '')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   Nodalvalue:\n'
+        s += '{}\n'.format(fielddisplay(self, 'name', 'identifier for this nodalvalue response'))
+        s += '{}\n'.format(fielddisplay(self, 'definitionstring', 'string that identifies this output definition uniquely, from \'Outputdefinition[1-10]\''))
+        s += '{}\n'.format(fielddisplay(self, 'model_string', 'string for field that is being retrieved'))
+        s += '{}\n'.format(fielddisplay(self, 'node', 'vertex index at which we retrieve the value'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if not isinstance(self.name, str):
+            raise Exception('nodalvalue error message: \'name\' field should be a string!')
+        OutputdefinitionStringArray = []
+        for i in range(100):
+            OutputdefinitionStringArray.append('Outputdefinition{}'.format(i))
+        md = checkfield(md, 'fieldname', 'self.definitionstring', 'field', self.definitionstring, 'values', OutputdefinitionStringArray)
+        md = checkfield(md, 'fieldname', 'self.node', 'field', self.node, 'values', range(md.mesh.numberofvertices))
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  #{{{
+        WriteData(fid, prefix, 'data', self.name, 'name', 'md.nodalvalue.name', 'format', 'String')
+        WriteData(fid, prefix, 'data', self.definitionstring, 'name', 'md.nodalvalue.definitionenum', 'format', 'String')
+        WriteData(fid, prefix, 'data', self.model_string, 'name', 'md.nodalvalue.model_enum', 'format', 'String')
+        WriteData(fid, prefix, 'data', self.node, 'name', 'md.nodalvalue.node', 'format', 'Integer')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/numberedcostfunction.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/numberedcostfunction.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/numberedcostfunction.m	(revision 27955)
@@ -0,0 +1,122 @@
+%NUMBEREDCOSTFUNCTION class definition
+%
+%   Usage:
+%      numberedcostfunction=numberedcostfunction();
+
+classdef numberedcostfunction
+	properties (SetAccess=public) 
+		name								 = '';
+		definitionstring				 = '';
+		cost_functions              = NaN
+		cost_functions_coefficients = NaN
+		vx_obs                      = NaN
+		vy_obs                      = NaN
+		vz_obs                      = NaN
+		vel_obs                     = NaN
+		thickness_obs               = NaN
+		surface_obs                 = NaN
+	end
+	methods
+		function self = numberedcostfunction(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(numberedcostfunction(),varargin{1});
+				otherwise
+					error('construtor not supported yet');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node');
+			self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node');
+			self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node');
+			self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node');
+			if numel(self.cost_functions_coefficients)>1,self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node');end;
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%several responses can be used:
+			self.cost_functions=101;
+			
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			num_costfunc=size(self.cost_functions,2);
+
+			md = checkfield(md,'fieldname','md.outputdefinition.definition{X}.dependent{X}.cost_functions','field',self.cost_functions,'size',[1 num_costfunc],'values',supportedcostfunctions());
+			md = checkfield(md,'fieldname','md.outputdefinition.definition{X}.cost_functions_coefficients','field',self.cost_functions_coefficients,'size',[md.mesh.numberofvertices numel(self.cost_functions)],'>=',0);
+			
+			if strcmp(solution,'BalancethicknessSolution')
+				md = checkfield(md,'fieldname','md.outputdefinition.definition{X}.thickness_obs','field',self.thickness_obs,'size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','md.outputdefinition.definition{X}.surface_obs','field',self.surface_obs,'size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			elseif strcmp(solution,'BalancethicknessSoftSolution')
+				md = checkfield(md,'fieldname','md.outputdefinition.definition{X}.thickness_obs','field',self.thickness_obs,'size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			else
+				md = checkfield(md,'fieldname','md.outputdefinition.definition{X}.vx_obs','field',self.vx_obs,'size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				if ~strcmp(domaintype(md.mesh),'2Dvertical'),
+					md = checkfield(md,'fieldname','md.outputdefinition.definition{X}.vy_obs','field',self.vy_obs,'size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				end
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   numberedcostfunction parameters:'));
+			fielddisplay(self,'cost_functions','indicate the type of response for each optimization step');
+			fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
+			fielddisplay(self,'vx_obs','observed velocity x component [m/yr]');
+			fielddisplay(self,'vy_obs','observed velocity y component [m/yr]');
+			fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]');
+			fielddisplay(self,'thickness_obs','observed thickness [m]');
+			fielddisplay(self,'surface_obs','observed surface elevation [m]');
+			disp('Available cost functions:');
+			disp('   101: SurfaceAbsVelMisfit');
+			disp('   102: SurfaceRelVelMisfit');
+			disp('   103: SurfaceLogVelMisfit');
+			disp('   104: SurfaceLogVxVyMisfit');
+			disp('   105: SurfaceAverageVelMisfit');
+			disp('   201: ThicknessAbsMisfit');
+			disp('   501: DragCoefficientAbsGradient');
+			disp('   502: RheologyBbarAbsGradient');
+			disp('   503: ThicknessAbsGradient');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'data',self.name,'name','md.numberedcostfunction.name','format','String');
+			WriteData(fid,prefix,'data',self.definitionstring,'name','md.numberedcostfunction.definitionstring','format','String');
+
+			WriteData(fid,prefix,'data',self.cost_functions_coefficients,'name','md.numberedcostfunction.cost_functions_coefficients','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'data',self.vx_obs,'name','md.numberedcostfunction.vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'data',self.vy_obs,'name','md.numberedcostfunction.vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'data',self.vz_obs,'name','md.numberedcostfunction.vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'data',self.vel_obs,'name','md.numberedcostfunction.vel_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			if(numel(self.thickness_obs)==md.mesh.numberofelements),
+				mattype=2;
+			else
+				mattype=1;
+			end
+			WriteData(fid,prefix,'data',self.thickness_obs,'name','md.numberedcostfunction.thickness_obs','format','DoubleMat','mattype',mattype);
+			WriteData(fid,prefix,'data',self.surface_obs,'name','md.numberedcostfunction.surface_obs','format','DoubleMat','mattype',mattype);
+
+			%process cost functions
+			num_cost_functions=size(self.cost_functions,2);
+			data=marshallcostfunctions(self.cost_functions);
+			WriteData(fid,prefix,'data',data,'name','md.numberedcostfunction.cost_functions','format','StringArray');
+			WriteData(fid,prefix,'data',num_cost_functions,'name','md.numberedcostfunction.num_cost_functions','format','Integer');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs2Darray(fid,[modelname '.inversion.cost_functions'],self.cost_functions);
+			writejs2Darray(fid,[modelname '.inversion.cost_functions_coefficients'],self.cost_functions_coefficients);
+			writejs1Darray(fid,[modelname '.inversion.vx_obs'],self.vx_obs);
+			writejs1Darray(fid,[modelname '.inversion.vy_obs'],self.vy_obs);
+			writejs1Darray(fid,[modelname '.inversion.vz_obs'],self.vz_obs);
+			writejs1Darray(fid,[modelname '.inversion.vel_obs'],self.vel_obs);
+			writejs1Darray(fid,[modelname '.inversion.thickness_obs'],self.thickness_obs);
+			writejs1Darray(fid,[modelname '.inversion.surface_obs'],self.surface_obs);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/offlinesolidearthsolution.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/offlinesolidearthsolution.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/offlinesolidearthsolution.m	(revision 27955)
@@ -0,0 +1,44 @@
+%OFFLINESOLIDEARTHSOLUTION class definition
+%
+%   Usage:
+%      addsol=offlinesolidearthsolution();
+
+classdef offlinesolidearthsolution < solidearthsolution
+	properties (SetAccess=public) 
+	end
+	methods
+		function self = offlinesolidearthsolution(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			self.setdefaultparameters@solidearthsolution();
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ismember('SealevelchangeAnalysis',analyses) | (strcmp(solution,'TransientSolution') & md.solidearth.settings.isgrd==1), 
+				error('offlinesolidearthsolution.m::checkconsistency: trying to run GRD patterns while supplying an offline solution for those patterns!'); 
+			end
+			self.checkconsistency@solidearthsolution(md,solution,analyses);
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   external: offlinesolidearth solution:'));
+			self.disp@solidearthsolution();
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			disp(sprintf('   external (offlinesolidearthsolution) solution:'));
+			WriteData(fid,prefix,'data',2,'name','md.solidearth.external.nature','format','Integer'); %code 2 for offlinesolidearthsolution  class
+			self.marshall@solidearthsolution(prefix,md,fid);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+			self.savemodeljs@solidearthsolution(fid,modelname);
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/offlinesolidearthsolution.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/offlinesolidearthsolution.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/offlinesolidearthsolution.py	(revision 27955)
@@ -0,0 +1,85 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from WriteData import WriteData
+
+
+class offlinesolidearthsolution(object):
+    """OFFLINESOLIDEARTHSOLUTION class definition
+
+    Usage:
+        offlinesolidearthsolution = offlinesolidearthsolution()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.displacementeast = None
+        self.displacementnorth = None
+        self.displacementup = None
+        self.geoid = None
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            raise RuntimeError('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '         units for time series is (yr)\n       external: offlinesolidearth solution\n'
+        s += '{}\n'.format(fielddisplay(self, 'displacementeast', 'solid-Earth Eastwards bedrock displacement series (m)'))
+        s += '{}\n'.format(fielddisplay(self, 'displacementnorth', 'solid-Earth Northwards bedrock displacement time series (m)'))
+        s += '{}\n'.format(fielddisplay(self, 'displacementup', 'solid-Earth bedrock uplift time series (m)'))
+        s += '{}\n'.format(fielddisplay(self, 'geoid', 'solid-Earth geoid time series (m)'))
+
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.displacementeast = []
+        self.displacementnorth = []
+        self.displacementup = []
+        self.geoid = []
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if ('SealevelchangeAnalysis' not in analyses) or ((solution=='TransientSolution') and (md.solidearth.settings.isgrd==1)): 
+            print('offlinesolidearthsolution checkconsistency error message: trying to run GRD patterns while supplying an offline solution for those patterns!')
+            return md
+        md = checkfield(md, 'fieldname', 'solidearth.external.displacementeast', 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.external.displacementnorth', 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.external.displacementup', 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.external.geoid', 'Inf', 1, 'timeseries', 1)
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+
+        # Transform our time series into time series rates
+        if len(np.shape(self.displacementeast)) == 1:
+            print('Warning: offlinesolidearthsolution.py::marshall: only one time step provided, assuming the values are rates per year')
+            displacementeast_rate = np.append(np.array(self.displacementeast).reshape(-1, 1), 0)
+            displacementnorth_rate = np.append(np.array(self.displacementnorth).reshape(-1, 1), 0)
+            displacementup_rate = np.append(np.array(self.displacementup).reshape(-1, 1), 0)
+            geoid_rate = np.append(np.array(self.geoid).reshape(-1, 1), 0)
+        else:
+            time = self.displacementeast[-1, :]
+            dt = np.diff(time, axis=0)
+            displacementeast_rate = np.diff(self.displacementeast[0:-2, :], 1, 1) / dt
+            displacementeast_rate = np.append(displacementeast_rate,time[:-1].reshape(1,-1),axis=0)
+            displacementnorth_rate = np.diff(self.displacementnorth[0:-2, :], 1, 1) / dt
+            displacementnorth_rate = np.append(displacementnorth_rate,time[:-1].reshape(1,-1),axis=0)
+            displacementup_rate = np.diff(self.displacementup[0:-2, :], 1, 1) / dt
+            displacementup_rate = np.append(displacementup_rate,time[:-1].reshape(1,-1),axis=0)
+            geoid_rate = np.diff(self.geoid[0:-2, :], 1, 1) / dt
+            geoid_rate = np.append(geoid_rate,time[:-1].reshape(1,-1),axis=0)
+
+        WriteData(fid, prefix, 'name', 'md.solidearth.external.nature', 'data', 2, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'displacementeast', 'data', displacementeast_rate, 'format', 'DoubleMat', 'name', 'md.solidearth.external.displacementeast', 'mattype', 1, 'scale', 1 / yts,'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts);
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'displacementup', 'data', displacementup_rate,'format', 'DoubleMat', 'name', 'md.solidearth.external.displacementup', 'mattype', 1, 'scale', 1 / yts,'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts);
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'displacementnorth', 'data', displacementnorth_rate,'format', 'DoubleMat', 'name', 'md.solidearth.external.displacementnorth', 'mattype', 1, 'scale', 1 / yts,'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts);
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'geoid', 'data', geoid_rate,'format', 'DoubleMat', 'name', 'md.solidearth.external.geoid', 'mattype', 1, 'scale', 1 / yts,'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts);
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/README
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/README	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/README	(revision 27955)
@@ -0,0 +1,4 @@
+We put here all old classes so that matlab can still load old models
+When an object is renamed or deleted, matlab is not able to load it
+anymore. We keep it here so that matlab can load the object (just remove all
+methods)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/SMB.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/SMB.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/SMB.m	(revision 27955)
@@ -0,0 +1,10 @@
+%SMB Class definition
+%
+%   Usage:
+%      SMB=SMB();
+
+classdef SMB
+	properties (SetAccess=public) 
+		mass_balance = NaN;
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/calvingdev.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/calvingdev.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/calvingdev.m	(revision 27955)
@@ -0,0 +1,12 @@
+%CALVINGDEV class definition
+%
+%   Usage:
+%      calvingdev=calvingdev();
+
+classdef calvingdev
+	properties (SetAccess=public) 
+		stress_threshold_groundedice = 0.;
+		stress_threshold_floatingice = 0.;
+		meltingrate   = NaN;
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/diagnostic.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/diagnostic.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/diagnostic.m	(revision 27955)
@@ -0,0 +1,28 @@
+%DIAGNOSTIC class definition
+%
+%   Usage:
+%      diagnostic=diagnostic();
+
+classdef diagnostic
+	properties (SetAccess=public) 
+		spcvx                    = NaN;
+		spcvy                    = NaN;
+		spcvz                    = NaN;
+		restol                   = 0;
+		reltol                   = 0;
+		abstol                   = 0;
+		isnewton                 = 0;
+		FSreconditioning     = 0;
+		viscosity_overshoot      = 0;
+		icefront                 = NaN;
+		maxiter                  = 0;
+		shelf_dampening          = 0;
+		vertex_pairing           = NaN;
+		penalty_factor           = NaN;
+		rift_penalty_lock        = NaN;
+		rift_penalty_threshold   = 0;
+		referential              = NaN;
+		loadingforce             = NaN;
+		requested_outputs        = NaN;
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/flaim.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/flaim.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/flaim.m	(revision 27955)
@@ -0,0 +1,22 @@
+%FLAIM class definition
+%
+%   Usage:
+%      flaim=flaim();
+
+classdef flaim
+	properties (SetAccess=public) 
+		targets            = ''
+		tracks             = ''
+		flightreqs         = struct()
+		criterion          = NaN
+		gridsatequator     = 200000
+		usevalueordering   = true
+		split_antimeridian = true
+		solution           = ''
+		quality            = 0
+		path_optimize      = false
+		opt_ndir           = 1
+		opt_dist           = 25
+		opt_niter          = 30000
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/gia.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/gia.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/gia.m	(revision 27955)
@@ -0,0 +1,7 @@
+classdef gia
+	properties (SetAccess=public) 
+		mantle_viscosity              = NaN;
+		lithosphere_thickness         = NaN;
+		cross_section_shape           = 0;
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/hydrology.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/hydrology.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/hydrology.m	(revision 27955)
@@ -0,0 +1,16 @@
+%HYDROLOGY class definition
+%
+%   Usage:
+%      hydrology=hydrology();
+
+classdef hydrology
+	properties (SetAccess=public) 
+		spcwatercolumn = NaN;
+		n              = 0;
+		CR             = 0;
+		p              = 0;
+		q              = 0;
+		kn             = 0;
+		stabilization  = 0;
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/materials.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/materials.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/materials.m	(revision 27955)
@@ -0,0 +1,21 @@
+%OLD materials class definition
+
+classdef materials
+	properties (SetAccess=public) 
+		rho_ice                    = 0.;
+		rho_water                  = 0.;
+		rho_freshwater             = 0.;
+		mu_water                   = 0.;
+		heatcapacity               = 0.;
+		latentheat                 = 0.;
+		thermalconductivity        = 0.;
+		meltingpoint               = 0.;
+		beta                       = 0.;
+		mixed_layer_capacity       = 0.;
+		thermal_exchange_velocity  = 0.;
+		rheology_B   = NaN;
+		rheology_n   = NaN;
+		rheology_Z   = NaN;
+		rheology_law = '';
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/mesh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/mesh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/mesh.m	(revision 27955)
@@ -0,0 +1,43 @@
+classdef mesh
+	properties (SetAccess=public) 
+		x                           = NaN;
+		y                           = NaN;
+		z                           = NaN
+		elements                    = NaN
+		dimension                   = 0;
+		numberoflayers              = 0;
+		numberofelements            = 0;
+		numberofvertices            = 0;
+		numberofedges               = 0;
+
+		lat                         = NaN
+		long                        = NaN
+		hemisphere                  = NaN
+
+		elementonbed                = NaN
+		elementonsurface            = NaN
+		vertexonbed                 = NaN
+		vertexonsurface             = NaN
+		lowerelements               = NaN
+		lowervertex                 = NaN
+		upperelements               = NaN
+		uppervertex                 = NaN
+		vertexonboundary            = NaN
+
+		edges                       = NaN
+		segments                    = NaN
+		segmentmarkers              = NaN
+		vertexconnectivity          = NaN
+		elementconnectivity         = NaN
+		average_vertex_connectivity = 0;
+
+		x2d                         = NaN
+		y2d                         = NaN
+		elements2d                  = NaN
+		numberofvertices2d          = 0;
+		numberofelements2d          = 0;
+
+		extractedvertices           = NaN
+		extractedelements           = NaN
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/prognostic.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/prognostic.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/prognostic.m	(revision 27955)
@@ -0,0 +1,16 @@
+%MASSTRANSPORT class definition
+%
+%   Usage:
+%      prognostic=prognostic();
+
+classdef prognostic
+	properties (SetAccess=public) 
+		 spcthickness           = NaN;
+		 min_thickness          = 0;
+		 hydrostatic_adjustment = 0;
+		 stabilization          = 0;
+		 vertex_pairing         = NaN;
+		 penalty_factor         = 0;
+		 requested_outputs      = NaN;
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/surfaceforcings.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/surfaceforcings.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/oldclasses/surfaceforcings.m	(revision 27955)
@@ -0,0 +1,26 @@
+%SURFACEFORCINGS Class definition
+%
+%   Usage:
+%      smb=surfaceforcings();
+
+classdef surfaceforcings
+	properties (SetAccess=public) 
+		precipitation             = NaN;
+		mass_balance              = NaN;
+		ispdd                     = 0;
+		issmbgradients            = 0;
+		isdelta18o                = 0;
+		href                      = NaN;
+		smbref                    = NaN;
+		b_pos                     = NaN;
+		b_neg                     = NaN;
+		monthlytemperatures       = NaN;
+		delta18o                  = NaN;
+		delta18o_surface          = NaN;
+		temperatures_presentday   = NaN;
+		temperatures_lgm          = NaN;
+		precipitations_presentday = NaN;
+		desfac                    = 0.5;
+		s0p                       = 0;
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/organizer.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/organizer.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/organizer.m	(revision 27955)
@@ -0,0 +1,305 @@
+%ORGANIZER class definition
+%
+%   Supported options:
+%      repository: directory where all models will be saved
+%      prefix:     prefix for saved model names
+%      steps:      requested steps
+%      color:      color of step title (default is '41;37')
+%
+%   Usage:
+%      org = organizer(varargin)
+%
+%   Examples:
+%      org = organizer('repository','Models/','prefix','AGU2015','steps',0);  %build an empty organizer object with a given repository
+
+classdef organizer < handle
+	properties (SetAccess=private) 
+		% {{{
+		currentstep   =0;
+	end
+    properties (SetAccess=public) 
+		repository    ='';
+		prefix        ='';
+		color         ='';
+		steps         =[];
+		skipio        = false;
+		requestedsteps=[0];
+		%}}}
+	end
+	methods
+		function org=organizer(varargin) % {{{
+
+			%process options
+			options=pairoptions(varargin{:});
+
+			%Get prefix
+			prefix=getfieldvalue(options,'prefix','model_');
+			if ~ischar(prefix),                            error('prefix is not a string'); end
+			if ~strcmp(regexprep(prefix,'\s+',''),prefix), error('prefix should not have any white space'); end
+			org.prefix=prefix;
+
+			%Get repository
+			repository=getfieldvalue(options,'repository','./');
+			if ~ischar(repository),        error('repository is not a string'); end
+			if exist(repository,'dir')~=7, error(['Directory ' repository ' not found']), end
+			org.repository=repository;
+
+			%Color
+			org.color=getfieldvalue(options,'color','41;37');
+
+			%Get steps
+			org.requestedsteps=getfieldvalue(options,'steps',0);
+
+			%Skip io?
+			org.skipio=getfieldvalue(options,'skipio',0);
+		end
+		%}}}
+		function reset(org,varargin) % {{{
+			
+			%process options
+			options=pairoptions(varargin{:});
+		
+			%Zero out some fields: 
+			org.currentstep   =0;
+			org.steps=[];
+	
+			%get requested step: 
+			org.requestedsteps=getfieldvalue(options,'steps',0);
+			
+		end
+		%}}}
+		function disp(org) % {{{
+			disp(sprintf('   Repository: ''%s''',org.repository));
+			disp(sprintf('   Prefix:     ''%s''\n',org.prefix));
+			disp(sprintf('   Color:      ''%s''\n',org.color));
+			disp(sprintf('   skipio:     %i\n',org.skipio));
+			if isempty(org.steps)
+				disp('   no step');
+			else
+				for i=1:length(org.steps),
+					disp(sprintf('   step #%2i: ''%s''',org.steps(i).id,org.steps(i).string));
+				end
+			end
+		end
+		%}}}
+		function md=load(org,string),% {{{
+
+			%Get model path
+			if ~ischar(string), error('argument provided is not a string'); end
+			path=[org.repository '/' org.prefix string];
+
+			%Skip if requested
+			if org.skipio,
+				disp(['WARNING: Skipping loading ' path]);
+				md = evalin('base', 'md');
+				return;
+			end
+
+			%figure out if the model is there
+			if exist(path,'file'),
+				path=path;
+			elseif exist([path '.mat'],'file'),
+				path=[path '.mat'];
+			else
+				error(['Could not find ' path ]);
+			end
+
+			struc=load(path,'-mat');
+			name=char(fieldnames(struc));
+			md=struc.(name);
+			if nargout,
+				varargout{1}=md;
+			end
+		end%}}}
+		function md=loadmodel(org,string),% {{{
+
+			%Get model path
+			if ~ischar(string), error('argument provided is not a string'); end
+			path=[org.repository '/' org.prefix string];
+
+			%Skip if requested
+			if org.skipio,
+				disp(['WARNING: Skipping loading ' path]);
+				md = evalin('base', 'md');
+				return;
+			end
+
+			%figure out if the model is there, otherwise, we have to use the default path supplied by user.
+			if exist(path,'file') | exist([path '.mat'],'file'),
+				md=loadmodel(path);
+				return;
+			end
+
+			%If we are here, the data has not been found. 
+			error(['Could not find ' path ]);
+		end%}}}
+		function loaddata(org,string),% {{{
+
+			%Get model path
+			if ~ischar(string), error('argument provided is not a string'); end
+			path=[org.repository '/' org.prefix string];
+
+			%figure out if the data is there, otherwise, we have to use the default path supplied by user.
+			if exist(path,'file'),
+				path=path;
+			elseif exist([path '.mat'],'file'),
+				path=[path '.mat'];
+			else
+				error(['Could not find ' path ]);
+			end
+			if exist(path,'file')
+				evalin('caller',['load -mat ' path]);
+				return;
+			end
+
+			%If we are here, the data has not been found. 
+			error(['Could not find ' path ]);
+		end%}}}
+		function loaddatanoprefix(org,string),% {{{
+
+			%Get model path
+			if ~ischar(string), error('argument provided is not a string'); end
+			path=[org.repository '/' string];
+
+			%figure out if the data is there, otherwise, we have to use the default path supplied by user.
+			if exist(path,'file'),
+				path=path;
+			elseif exist([path '.mat'],'file'),
+				path=[path '.mat'];
+			else
+				error(['Could not find ' path ]);
+			end
+			if exist(path,'file')
+				evalin('caller',['load -mat ' path]);
+				return;
+			end
+
+			%If we are here, the data has not been found. 
+			error(['Could not find ' path ]);
+		end%}}}
+		function bool=perform(org,varargin) % {{{
+
+			bool=false;
+			
+			%group,string are the variable arguments length: 
+			if nargin==2,
+				string=varargin{1};
+			elseif nargin==3,
+				string=sprintf('%s.%s',varargin{1},varargin{2});
+			end
+
+			%Some checks
+			if ~ischar(string),                            error('Step provided should be a string'); end
+			if ~strcmp(regexprep(string,'\s+',''),string), error('Step provided should not have any white space'); end
+			if (org.currentstep>0 & ismember({string},{org.steps.string})) 
+				error(['Step ' string ' already present. Change name']); 
+			end
+
+			%Add step
+			org.steps(end+1).id=length(org.steps)+1;
+			org.steps(end).string=string;
+			org.currentstep=org.currentstep+1;
+
+			%if requestedsteps = 0, print all steps in org 
+			if any(org.requestedsteps==0),
+				if org.currentstep==1,
+					disp(sprintf('   prefix: %s',org.prefix));
+				end
+				disp(sprintf('   step #%2i : %s',org.steps(org.currentstep).id,org.steps(org.currentstep).string));
+			end
+
+			%Ok, now if currentstep is a member of steps, return true
+			if ismember(org.currentstep,org.requestedsteps),
+				if usejava('desktop'),
+					disp(sprintf('\n   step #%i : %s\n',org.steps(org.currentstep).id,org.steps(org.currentstep).string));
+				else
+					%Print on a red background
+					fprintf(['\n\033[' org.color 'm   step #' num2str(org.steps(org.currentstep).id) ': ' org.steps(org.currentstep).string '   \033[0m\n\n']);
+				end
+				bool=true;
+
+				%last check: is this step locked? 
+				string=org.steps(org.currentstep).string; 
+				if length(string)>7,
+					if strcmpi(string(end-5:end),'Locked'),
+						error('organizer: you are  trying to run a locked step! Unlock it first!');
+					end
+				end
+			end
+		end%}}}
+		function savemodel(org,md) % {{{
+
+			%check
+			if (org.currentstep==0), error('Cannot save model because organizer (org) is empty! Make sure you did not skip any perform call'); end
+			if (org.currentstep>length(org.steps)), error('Cannot save model because organizer (org) is not up to date!'); end
+
+			name=[org.repository '/' org.prefix org.steps(org.currentstep).string ];
+			disp(['saving model as: ' name]);
+
+			%Skip if requested
+			if org.skipio,
+				disp(['WARNING: Skipping saving ' name]);
+				return;
+			end
+
+			%check that md is a model
+			if ~isa(md,'model') & ~isa(md,'sealevelmodel'), warning('second argument is not a model'); end
+			if (org.currentstep>length(org.steps)), error(['organizer error message: element with id ' num2str(org.currentstep) ' not found']); end
+
+			%save model
+			save(name,'md','-v7.3');
+		end%}}}
+		function savedata(org,varargin) % {{{
+
+			%check
+			if (org.currentstep==0), error('Cannot save data because organizer (org) is empty! Make sure you did not skip any perform call'); end
+			if (org.currentstep>length(org.steps)), error('Cannot save data because organizer (org) is not up to date!'); end
+
+			name=[org.repository '/' org.prefix org.steps(org.currentstep).string ];
+			disp(['saving data in: ' name]);
+
+			%Skip if requested
+			if org.skipio,
+				disp(['WARNING: Skipping saving ' name]);
+				return;
+			end
+
+			%check that md is a model
+			if (org.currentstep>length(org.steps)), error(['organizer error message: element with id ' num2str(org.currentstep) ' not found']); end
+
+			%list of variable names: 
+			variables='';
+			for i=2:nargin, 
+				variables=[variables ',' '''' inputname(i) ''''];
+				eval([inputname(i) '= varargin{' num2str(i-1) '};']);
+			end
+			eval(['save(''' name '''' variables ',''-v7.3'');']);
+		end%}}}
+		function savedatanoprefix(org,varargin) % {{{
+
+			%check
+			if (org.currentstep==0), error('Cannot save data because organizer (org) is empty! Make sure you did not skip any perform call'); end
+			if (org.currentstep>length(org.steps)), error('Cannot save data because organizer (org) is not up to date!'); end
+
+			name=[org.repository '/' org.steps(org.currentstep).string ];
+			disp(['saving data in: ' name]);
+
+			%Skip if requested
+			if org.skipio,
+				disp(['WARNING: Skipping saving ' name]);
+				return;
+			end
+
+			%check that md is a model
+			if (org.currentstep>length(org.steps)), error(['organizer error message: element with id ' num2str(org.currentstep) ' not found']); end
+
+			%list of variable names: 
+			variables='';
+			for i=2:nargin, 
+				variables=[variables ',' '''' inputname(i) ''''];
+				eval([inputname(i) '= varargin{' num2str(i-1) '};']);
+			end
+			eval(['save(''' name '''' variables ',''-v7.3'');']);
+		end%}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/organizer.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/organizer.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/organizer.py	(revision 27955)
@@ -0,0 +1,190 @@
+import os.path
+from collections import OrderedDict
+import pairoptions
+from loadvars import loadvars
+from loadmodel import loadmodel
+from savevars import savevars
+from model import model
+#hack to keep python 2 compatipility
+try:
+    #py3 import
+    import dbm
+except ImportError:
+    #py2 import
+    from whichdb import whichdb
+
+import MatlabFuncs as m
+
+
+class organizer(object):
+    """
+    ORGANIZER class definition
+
+       Supported options:
+          repository: directory where all models will be saved
+          prefix:     prefix for saved model names
+          steps:      requested steps
+          trunkprefix:prefix of previous run with a different prefix. Used to branch.
+
+       Usage:
+          org = organizer(varargin)
+
+       Examples:
+          org = organizer('repository', 'Models/', 'prefix', 'AGU2015', 'steps', 0);  %build an empty organizer object with a given repository
+    """
+
+    def __init__(self, *args):  # {{{
+        self._currentstep = 0
+        self.repository = './'
+        self.prefix = 'model.'
+        self.trunkprefix = ''
+        self.steps = []
+        self.requestedsteps = [0]
+
+        #process options
+        options = pairoptions.pairoptions(*args)
+
+        #Get prefix
+        prefix = options.getfieldvalue('prefix', 'model.')
+        if not isinstance(prefix, str):
+            raise TypeError("prefix is not a string")
+        if not m.strcmp(prefix, prefix.strip()) or len(prefix.split()) > 1:
+            raise TypeError("prefix should not have any white space")
+        self.prefix = prefix
+
+        #Get repository
+        repository = options.getfieldvalue('repository', './')
+        if not isinstance(repository, str):
+            raise TypeError("repository is not a string")
+        if not os.path.isdir(repository):
+            raise IOError("Directory '%s' not found" % repository)
+        self.repository = repository
+
+        #Get steps
+        self.requestedsteps = options.getfieldvalue('steps', [0])
+
+        #Get trunk prefix (only if provided by user)
+        if options.exist('trunkprefix'):
+            trunkprefix = options.getfieldvalue('trunkprefix', '')
+            if not isinstance(trunkprefix, str):
+                raise TypeError("trunkprefix is not a string")
+            if not m.strcmp(trunkprefix, trunkprefix.strip()) or len(trunkprefix.split()) > 1:
+                raise TypeError("trunkprefix should not have any white space")
+            self.trunkprefix = trunkprefix
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = ""
+        s += "%s\n" % "   Repository: '%s'" % self.repository
+        s += "%s\n" % "   Prefix:     '%s'" % self.prefix
+        if not self.steps:
+            s += "%s\n" % "   no step"
+        else:
+            for step in self.steps:
+                s += "%s\n" % "   step  #%2i: '%s'", step['id'], step['string']
+    # }}}
+
+    def load(self, string):  # {{{
+        #Get model path
+        if not isinstance(string, str):
+            raise TypeError("argument provided is not a string")
+        path = os.path.join(self.repository, self.prefix + string)
+
+        #figure out if the model is there
+        if os.path.exists(path):
+            struc = loadvars(path)
+            name = name = [key for key in list(struc.keys())]
+            md = struc.name[0]
+        else:
+            raise IOError("Could not find '%s'" % path)
+
+        return md
+    # }}}
+
+    def loadmodel(self, string):  # {{{
+        #Get model path
+        if not isinstance(string, str):
+            raise TypeError("argument provided is not a string")
+        path1 = os.path.join(self.repository, self.prefix + string + '.python')
+        path2 = os.path.join(self.repository, string)
+
+        #figure out if the model is there, otherwise, we have to use the default path supplied by user.
+        if dbm.whichdb(path1):
+            md = loadmodel(path1)
+            return md
+        elif dbm.whichdb(path2):
+            md = loadmodel(path2)
+            return md
+
+        #If we are here, the model has not been found. Try trunk prefix if provided
+        if self.trunkprefix:
+            path2 = os.path.join(self.repository, self.trunkprefix + string)
+            if not os.path.exists(path2):
+                raise IOError("Could find neither '%s' nor '%s'" % (path1, path2))
+            else:
+                print(("--> Branching '%s' from trunk '%s'" % (self.prefix, self.trunkprefix)))
+                md = loadmodel(path2)
+                return md
+        else:
+            raise IOError("Could not find '%s'" % path1)
+    # }}}
+
+    def perform(self, string):  # {{{
+        bool = False
+
+        #Some checks
+        if not isinstance(string, str):
+            raise TypeError("Step provided should be a string")
+        if not m.strcmp(string, string.strip()) or len(string.split()) > 1:
+            raise TypeError("Step provided should not have any white space")
+        if self._currentstep > 0 and string in [step['string'] for step in self.steps]:
+            raise RuntimeError("Step '%s' already present. Change name" % string)
+
+        #Add step
+        self.steps.append(OrderedDict())
+        self.steps[-1]['id'] = len(self.steps)
+        self.steps[-1]['string'] = string
+        self._currentstep += 1
+
+        #if requestedsteps = 0, print all steps in self
+        if 0 in self.requestedsteps:
+            if self._currentstep == 1:
+                print(("   prefix: %s" % self.prefix))
+            print(("   step  #%i : %s" % (self.steps[self._currentstep - 1]['id'], self.steps[self._currentstep - 1]['string'])))
+
+        #Ok, now if _currentstep is a member of steps, return true
+        if self._currentstep in self.requestedsteps:
+            print(("\n   step  #%i : %s\n" % (self.steps[self._currentstep - 1]['id'], self.steps[self._currentstep - 1]['string'])))
+            bool = True
+
+            #last check: is this step locked?
+            s = self.steps[self._currentstep - 1]['string']
+            if len(s) > 7:
+                if s[-6:] == 'Locked':
+                    raise Exception('organizer: you are trying to run a locked step! Unlock it first!')
+
+        return bool
+    # }}}
+
+    def savemodel(self, md, name='default'):  # {{{
+        #check
+        if self._currentstep == 0:
+            raise RuntimeError("Cannot save model because organizer (org) is empty! Make sure you did not skip any perform call")
+        if self._currentstep > len(self.steps):
+            raise RuntimeError("Cannot save model because organizer (org) is not up to date!")
+
+        if (name == 'default'):
+            name = os.path.join(self.repository, self.prefix + self.steps[self._currentstep - 1]['string'] + '.python')
+        else:
+            name = os.path.join(self.repository, name)
+        print(("saving model as: '%s'" % name))
+
+    #check that md is a model
+        if not isinstance(md, model):
+            print("second argument is not a model")
+        if self._currentstep > len(self.steps):
+            raise RuntimeError("organizer error message: element with id %d not found" % self._currentstep)
+
+    #save model
+        savevars(name, 'md', md)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/outputdefinition.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/outputdefinition.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/outputdefinition.js	(revision 27955)
@@ -0,0 +1,50 @@
+//OUTPUTDEFINITION class definition
+//
+//   Usage:
+//      outputdefinition=new outputdefinition();
+
+function outputdefinition (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		this.definitions=[];
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   outputdefinition:'));
+		fielddisplay(this,'definitions','list of potential outputs that can be requested, but which need additional data to be defined');
+
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "outputdefinition";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			checkfield(md,'fieldname','outputdefinition.definitions','cell',1);
+
+			for (var i=0;i<this.definitions.length;i++){
+				this.definitions[i].checkconsistency(md,solution,analyses);
+			}
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var data=NewArrayFill(this.definitions.length,'');	
+			for(var i=0;i<this.definitions.length;i++){
+				this.definitions[i].marshall(md,fid,prefix);
+				classdefinition=this.definitions[i].classname();
+				classdefinition=classdefinition.charAt(0).toUpperCase() + classdefinition.slice(1); // we match our string definitions
+				data[i]=classdefinition;
+			}
+			data=ArrayUnique(data);
+			if(data.length==0){ data=''; }
+
+			WriteData(fid,prefix,'data',data,'name','md.outputdefinition.list','format','StringArray');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.definitions                 = [];
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/outputdefinition.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/outputdefinition.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/outputdefinition.m	(revision 27955)
@@ -0,0 +1,63 @@
+%CONSTANTS class definition
+%
+%   Usage:
+%      outputdefinition=outputdefinition();
+
+classdef outputdefinition
+	properties (SetAccess=public) 
+		definitions                 = {};
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			for i=1:length(self.definitions)
+				self.definitions{i}=extrude(self.definitions{i},md);
+			end
+		end % }}}
+		function self = outputdefinition(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			self.definitions={};
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','outputdefinition.definitions','cell',1);
+
+			for i=1:length(self.definitions),
+				md=checkconsistency(self.definitions{i},md,solution,analyses);
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   outputdefinition:'));
+			fielddisplay(self,'definitions','list of potential outputs that can be requested, but which need additional data to be defined');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+		data={};
+		for i=1:length(self.definitions)
+			self.definitions{i}.marshall(prefix,md,fid);
+			classdefinition=class(self.definitions{i});
+			classdefinition(1)=upper(classdefinition(1));
+			data{i}=classdefinition;
+		end
+		data_unique=unique(data);
+		WriteData(fid,prefix,'data',data_unique,'name','md.outputdefinition.list','format','StringArray');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			fprintf(fid,'%s.outputdefinition.definitions=[];\n',modelname);
+			if ~isempty(self.definitions),
+				error('outputdefinition savemodeljs error message: not supported yet!');
+			end
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/outputdefinition.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/outputdefinition.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/outputdefinition.py	(revision 27955)
@@ -0,0 +1,56 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+import numpy as np
+
+
+class outputdefinition(object):
+    """
+    OUTPUTDEFINITION class definition
+
+       Usage:
+          outputdefinition = outputdefinition()
+    """
+
+    def __init__(self):  # {{{
+        self.definitions = []
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = "   Outputdefinitions:"
+
+        string = "%s\n%s" % (string, fielddisplay(self, "definitions", "list of potential outputs that can be requested, but which need additional data to be defined"))
+
+        return string
+    # }}}
+
+    def extrude(self, md):  # {{{
+        for definition in self.definitions:
+            definition.extrude(md)
+
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+
+        md = checkfield(md, 'fieldname', 'outputdefinition.definitions', 'cell', 1)
+        for definition in self.definitions:
+            definition.checkconsistency(md, solution, analyses)
+
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        data = []
+        for i in range(len(self.definitions)):
+            self.definitions[i].marshall(prefix, md, fid)
+            classdefinition = self.definitions[i].__class__.__name__
+            classdefinition = classdefinition[0].upper() + classdefinition[1:]
+            data.append(classdefinition)
+
+        data = np.unique(data)
+        WriteData(fid, prefix, 'data', data, 'name', 'md.outputdefinition.list', 'format', 'StringArray')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/pairoptions.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/pairoptions.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/pairoptions.js	(revision 27955)
@@ -0,0 +1,269 @@
+//PAIROPTIONS class definition
+//
+//   Usage:
+//      pairoptions=pairoptions();
+//      pairoptions=pairoptions('module',true,'solver',false);
+
+function pairoptions(args) { 
+
+
+	//methods
+	this.constructor = function (args) {// {{{
+
+		//initialize list
+		if (args.length==0){
+			this.list=[];
+		}
+		else{
+
+			//check length of input
+			if (args.length % 2){
+				throw Error('pairoptions error message: invalid parameter/value pair arguments') 
+			}
+			numoptions = args.length/2;
+
+			//Allocate memory
+			this.list= Create2DArray(numoptions,3);
+
+			//go through args and build list of obj
+			for (var i=0;i<numoptions;i++){
+				if (typeof args[2*i] === 'string'){
+					this.list[i][0]=args[2*i];
+					this.list[i][1]=args[2*i+1];
+					this.list[i][2]=false;  //used?
+				}
+				else{
+					//option is not a string, ignore it
+					console.log(sprintf('%s%i%s\n','WARNING: option number ',i,' is not a string, it will be ignored'));
+					this.list[i][0]=[];
+					this.list[i][1]=[];
+					this.list[i][2]=[];
+					continue
+				}
+			}
+		}
+	}// }}}
+	this.addfield = function (field, value){ // {{{
+		if (typeof field === 'string'){
+			this.list.push([field,value,false]);
+		}
+	}// }}}
+	this.numoptions = function (){ // {{{
+		return this.list.length;
+	}// }}}
+	this.addfielddefault = function (field,value){ // {{{
+		//ADDFIELDDEFAULT - add a field to an options list if it does not exist
+		if (typeof field === 'string'){
+			if (!this.exist(field)){
+				this.list.push([field,value,true]); //true is a default so user will not be notified if not used
+			}
+		}
+	} // }}}
+	this.AssignObjectFields = function(object){ // {{{
+		//ASSIGNOBJECTFIELDS - assign object fields from options
+		for (var i=0;i<list.length;i++){
+			fieldname=list[i][0];
+			fieldvalue=list[i][1];
+			if (fieldname in object){
+				obj2[fieldname]=fieldvalue;
+			}
+			else{
+				console.log(sprintf("%s'%s'%s%s\n",'WARNING: ',fieldname, 'is not a property of ',typeof object));
+			}
+		}
+	} // }}}
+	this.changefieldvalue = function(field,newvalue){ // {{{
+		//CHANGEOPTIONVALUE - change the value of an option in an option list
+
+		var found=0;
+		for (var i=0;i<this.list.length;i++){
+			if (this.list[i][0] === field){
+				found=1;
+			}
+		}
+
+		if (found==0){
+			this.list.push([field,newvalue,true]); // do not notify user if unused
+		}
+		else{
+			for (var i=0;i<this.list.length;i++){
+				if (this.list[i][0] === field){
+					this.list[i][1] = newvalue;
+				}
+			}
+		}
+	} // }}}
+	this.deleteduplicates = function(warn){ // {{{
+		//DELETEDUPLICATES - delete duplicates in an option list
+
+		//track the first occurrence of each option
+		var indices=NewArrayFill(this.list.length,0);
+		for (var i=0;i<this.list.length;i++){
+			if(indices[i]==0){
+				for(var j=i+1;j<this.list.length;j++){
+					if (this.list[i][0] === this.list[j][0])indices[j]=1;
+				}
+			}
+		}
+		sumindices=ArraySum(indices);
+
+		//remove duplicates from the options list
+		newlist=Create2DArray(sumindices,3);
+		var count=0;
+		for (var i=0;i<this.list.length;i++){
+			if (indices[i]==1) if (warn) console.log(sprintf("%s%s%s\n",'WARNING: option ', this.list[i,0],' appeared more than once. Only its first occurrence will be kept'));
+			else{
+				newlist[count]=this.list[i];
+				count++;
+			}
+		}
+	} // }}}
+	this.displayunused = function (){ // {{{
+		//DISPLAYUNUSED - display unused options
+
+		for (var i=0;i<this.list.length;i++){
+			if (!(this.list[i][2])){
+				console.log(sprintf("%s%s%s\n",'WARNING: option ',this.list[i][0],' was not used'));
+			}
+		}
+	}// }}}
+	this.disp = function (){ //{{{
+		if (this.list.length){
+			console.log(sprintf('   pairoptions: (%i)\n',this.list.length));
+			for (var i=0;i<this.list.length;i++){
+				if (typeof this.list[i][1] === 'string'){
+					console.log(sprintf("     field: '%s' value(string): ''%s''",this.list[i][0],this.list[i][1]));
+				}
+				else if( typeof this.list[i][1] === 'number'){
+					console.log(sprintf("     field: '%s' value(number): %g",this.list[i][0],this.list[i][1]));
+				}
+				else if( IsArray(this.list[i][1])){
+					console.log(sprintf("     field: '%s' value(array): [%i]",this.list[i][0],this.list[i][1].length));
+				}
+			}
+		}
+		else{
+			console.log(sprintf('   list: empty'));
+		}
+	}// }}}
+	this.exist = function (field) { //{{{
+
+		//EXIST - check if the option exists
+		//some argument checking: 
+		if (!(typeof field === 'string')){
+			throw Error('exist error message: field should be a string');
+		}
+
+		//Recover option
+		var bool=0;
+		for (var i=0;i<this.list.length;i++){
+			if (this.list[i][0] === field){
+				bool=1;
+				this.list[i][2]=1; //It is a default so user will not be notified if not used
+				break;
+			}
+		}
+		return bool;
+	} // }}}
+	this.fieldoccurrences = function(field){ // {{{
+
+		//FIELDOCCURRENCES - get number of occurrence of a field
+		var num=0;
+
+		//check input 
+		if (!(typeof field === 'string')){
+			throw Error('exist error message: field should be a string');
+		}
+
+		//count number of occurrences:
+		for (var i=0;i<this.list.length;i++) if (this.list[i][0] === field)num++;
+
+		return num;
+
+	} // }}}
+	this.getfieldvalue = function(field){ // {{{
+		//GETOPTION - get the value of an option
+		//
+		//   Usage:
+		//      value=pairoptions.getfieldvalue(field,varargin)
+		//
+		//   Find an option value from a field. A default option
+		//   can be given in input if the field does not exist
+		//
+		//   Examples:
+		//      value=pairoptions.getfieldvalue('caxis');
+		//      value=pairoptions.getfieldvalue('caxis',[0 2]);
+
+		//some argument checking: 
+		if(!(arguments.length==1 | arguments.length==2)){
+			error('pairoptions usage error: getfieldvalue bad usage');
+		}
+
+		if (!(typeof field === 'string')){
+			throw Error('pairoptions error message: field should be a string');
+		}
+
+		//Recover option
+		for(var i=0;i<this.list.length;i++){
+			if (this.list[i][0] === field){
+				this.list[i][2]=1; //option used
+				return value=this.list[i][1];
+			}
+		}
+
+		//The option has not been found, output default if provided
+		if (arguments.length==2){
+			return arguments[1];
+		}
+		else{
+			throw Error(sprintf("%s%s%s\n",'error message: field ',field,' has not been provided by user (and no default value has been specified)'));
+		}
+	} // }}}
+	this.removefield = function(field,warn){// {{{
+
+		//REMOVEFIELD - delete a field in an option list
+		//
+		//   Usage:
+		//      options.removefield(field,warn)
+		//
+		//   if warn==1 display an info message to warn user that
+		//   some of his options have been removed.
+
+		//check if field exists
+		if (this.exist(field)){
+
+			var indices;
+			var count;
+
+			//find where the field is located
+			indices=NewArrayFill(this.list.length,1);
+			for (var i=0;i<this.list.length;i++)if(this.list[i][1] === field)indices[i]=0;
+			sumindices=ArraySum(indices);
+
+			//remove duplicates from the options list
+			newlist=Create2DArray(sumindices,3);
+
+			count=0;
+			for (var i=0;i<this.list.length;i++){
+				if(!(this.list[i][1] === field)){
+					newlist[count]=this.list[i];
+					count++;
+				}
+			}
+			this.list=newlist;
+
+			//warn user if requested
+			if (warn){
+				console.log(sprintf("%s%s%s\n",'removefield info: option ',field,' has been removed from the list of options.'));
+			}
+		}
+	} // }}}
+	this.marshall = function(fid,firstindex){// {{{
+
+		throw Error('pairoptions marshall error: not implemented yet!');
+	} // }}}
+
+	//properties 
+	this.list         = [];
+	this.constructor(args);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/pairoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/pairoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/pairoptions.m	(revision 27955)
@@ -0,0 +1,303 @@
+%PAIROPTIONS class definition
+%
+%   Usage:
+%      pairoptions=pairoptions();
+%      pairoptions=pairoptions('module',true,'solver',false);
+
+classdef pairoptions < matlab.mixin.Copyable
+	properties (SetAccess = private,GetAccess = private) 
+		functionname = '';
+		list         = cell(0,3);
+	end
+	methods
+		function self = pairoptions(varargin) % {{{
+
+			%get calling function name
+			a=dbstack;
+			if length(a)>1,
+				self.functionname=a(2).file(1:end-2);
+			else
+				self.functionname='';
+			end
+
+			%initialize list
+			if nargin==0,
+				%Do nothing,
+			else
+				self=buildlist(self,varargin{:});
+			end
+		end % }}}
+		function self = buildlist(self,varargin) % {{{
+		%BUILDLIST - build list of obj from input
+
+			%check length of input
+			if mod((nargin-1),2),
+				error('Invalid parameter/value pair arguments') 
+			end
+			numoptions = (nargin-1)/2;
+
+			%Allocate memory
+			self.list=cell(numoptions,3);
+
+			%go through varargin and build list of obj
+			for i=1:numoptions,
+				if ischar(varargin{2*i-1}),
+					self.list{i,1}=varargin{2*i-1};
+					self.list{i,2}=varargin{2*i};
+					self.list{i,3}=false; %used?
+				else
+					%option is not a string, ignore it
+					disp(['WARNING: option number ' num2str(i) ' is not a string, it will be ignored']);
+					self.list(i,:)=[];
+					continue
+				end
+			end
+		end % }}}
+		function self = addfield(self,field,value) % {{{
+			if ischar(field),
+				self.list{end+1,1} = field;
+				self.list{end,2}   = value;
+				self.list{end,3}   = false;
+			end
+		end % }}}
+		function self = addfielddefault(self,field,value) % {{{
+		%ADDFIELDDEFAULT - add a field to an options list if it does not exist
+			if ischar(field),
+				if ~exist(self,field),
+					self.list{end+1,1} = field;
+					self.list{end,2}   = value;
+					self.list{end,3}   = true;  %It is a default so user will not be notified if not used
+				end
+			end
+		end % }}}
+		function obj2 = AssignObjectFields(options,obj2) % {{{
+		%ASSIGNOBJECTFIELDS - assign object fields from options
+			listproperties=properties(obj2);
+			for i=1:size(options.list,1),
+				fieldname=options.list{i,1};
+				fieldvalue=options.list{i,2};
+				if ismember(fieldname,listproperties),
+					obj2.(fieldname)=fieldvalue;
+				else
+					disp(['WARNING: ''' fieldname ''' is not a property of ''' class(obj2) '''']);
+				end
+			end
+		end % }}}
+		function self = changefieldvalue(self,field,newvalue) % {{{
+		%CHANGEOPTIONVALUE - change the value of an option in an option list
+
+			%track occurrence of field
+			lines=find(strcmpi(self.list(:,1),field));
+
+			%replace value
+			if isempty(lines),
+				%add new field if not found
+				self=addfield(self,field,newvalue);
+				self.list{end,3}=true; % do not notify user if unused
+			else
+				for i=1:length(lines),
+					self.list{lines(i),2}=newvalue;
+				end
+			end
+		end % }}}
+		function self = deleteduplicates(self,warn) % {{{
+		%DELETEDUPLICATES - delete duplicates in an option list
+
+			%track the first occurrence of each option
+			[dummy lines]=unique(self.list(:,1),'first');
+			clear dummy
+
+			%warn user if requested
+			if warn,
+				numoptions=size(self.list,1);
+				for i=1:numoptions,
+					if ~ismember(i,lines),
+						disp(['WARNING: option ' self.list{i,1} ' appeared more than once. Only its first occurrence will be kept'])
+					end
+				end
+			end
+
+			%remove duplicates from the options list
+			self.list=self.list(lines,:);
+		end % }}}
+		function displayunused(self) % {{{
+			%DISPLAYUNUSED - display unused options
+
+			numoptions=size(self.list,1);
+			for i=1:numoptions,
+				if ~self.list{i,3},
+					disp(['WARNING: option ' self.list{i,1} ' was not used'])
+				end
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   functionname: %s',self.functionname));
+			if ~isempty(self.list),
+				disp(sprintf('   list: (%ix%i)\n',size(self.list,1),size(self.list,2)));
+				for i=1:size(self.list,1),
+					if ischar(self.list{i,2}),
+						disp(sprintf('     field: %-10s value: ''%s''',self.list{i,1},self.list{i,2}));
+					elseif isnumeric(self.list{i,2}) & length(self.list{i,2})==1,
+						disp(sprintf('     field: %-10s value: %g',self.list{i,1},self.list{i,2}));
+					elseif isnumeric(self.list{i,2}) & length(self.list{i,2})==2,
+						disp(sprintf('     field: %-10s value: [%g %g]',self.list{i,1},self.list{i,2}));
+					else
+						disp(sprintf('     field: %-10s value: (%ix%i)',self.list{i,1},size(self.list{i,2},1),size(self.list{i,2},2)));
+					end
+				end
+			else
+				disp(sprintf('   list: empty'));
+			end
+		end % }}}
+		function bool = exist(self,field) % {{{
+		%EXIST - check if the option exists
+
+			%some argument checking: 
+			if ((nargin~=2) | (nargout~=1)),
+				error('exist error message: bad usage');
+			end
+			if ~ischar(field),
+				error('exist error message: field should be a string');
+			end
+
+			%Recover option
+			pos=find(strcmpi(field,self.list(:,1)));
+			if ~isempty(pos),
+				bool=true;
+				self.list{pos,3}   = true;  %It is a default so user will not be notified if not used
+			else
+				bool=false;
+			end
+		end % }}}
+		function num = fieldoccurrences(self,field), % {{{
+		%FIELDOCCURRENCES - get number of occurrence of a field
+
+			%check input 
+			if ~ischar(field),
+				error('fieldoccurrences error message: field should be a string');
+			end
+
+			%get number of occurrence
+			num=sum(strcmpi(field,self.list(:,1)));
+		end % }}}
+		function value = getfieldvalue(self,field,varargin), % {{{
+		%GETFIELDVALUE - get the value of an option
+		%
+		%   Usage:
+		%      value=getfieldvalue(self,field,varargin)
+		%
+		%   Find an option value from a field. A default option
+		%   can be given in input if the field does not exist
+		%
+		%   Examples:
+		%      value=getfieldvalue(options,'caxis');
+		%      value=getfieldvalue(options,'caxis',[0 2]);
+
+			%some argument checking: 
+			if nargin~=2 && nargin~=3,
+				help getfieldvalue
+				error('getfieldvalue error message: bad usage');
+			end
+
+			if ~ischar(field),
+				error('getfieldvalue error message: field should be a string');
+			end
+
+			%Recover option
+			pos=find(strcmpi(self.list(:,1),field));
+			if ~isempty(pos),
+				value=self.list{pos(1),2}; % ignore extra entry
+				self.list{pos(1),3}=true;  % option used
+				return;
+			end
+
+			%The option has not been found, output default if provided
+			if nargin==3,
+				value=varargin{1};
+			else
+				error(['error message: field ' field ' has not been provided by user (and no default value has been specified)'])
+			end
+		end % }}}
+		function values = getfieldvalues(self,field,varargin), % {{{
+		%GETFIELDVALUES - get the value of an option (if the option is repeated, return multiple values)
+		%
+		%   Usage:
+		%      values=getfieldvalues(self,field,varargin)
+		%
+		%   Find all option values from a field. Default options
+		%   can be given in input if the field does not exist
+		%
+		%   Examples:
+		%      values=getfieldvalues(options,'caxis');
+		%      values=getfieldvalues(options,'caxis',{[0 2],[3 4]});
+
+			%some argument checking: 
+			if nargin~=2 && nargin~=3,
+				help getfieldvalues
+				error('getfieldvalues error message: bad usage');
+			end
+
+			if ~ischar(field),
+				error('getfieldvalues error message: field should be a string');
+			end
+
+			%Recover options
+			pos=find(strcmpi(self.list(:,1),field));
+			if ~isempty(pos),
+				values={};
+				for i=1:length(pos),
+					values{i}=self.list{pos(i),2};
+					self.list{pos(i),3}=true; % option used
+				end
+				return;
+			end
+
+			%The option has not been found, output default if provided
+			if nargin==3,
+				values=varargin{1};
+			else
+				error(['error message: field ' field ' has not been provided by user (and no default value has been specified)'])
+			end
+		end % }}}
+		function self = removefield(self,field,warn)% {{{
+		%REMOVEFIELD - delete a field in an option list
+		%
+		%   Usage:
+		%      self=removefield(self,field,warn)
+		%
+		%   if warn==1 display an info message to warn user that
+		%   some of their options have been removed.
+
+			%check is field exist
+			if exist(self,field),
+
+				%find where the field is located
+				lines=find(~strcmpi(self.list(:,1),field));
+
+				%remove duplicates from the options list
+				self.list=self.list(lines,:);
+
+				%warn user if requested
+				if warn
+					disp(['removefield info: option ' field ' has been removed from the list of options.'])
+				end
+			end
+		end % }}}
+		function marshall(self,fid)% {{{
+
+			for i=1:size(self.list,1),
+				name  = self.list{i,1};
+				value = self.list{i,2};
+
+				%Write option value
+				if (isnumeric(value) & numel(value)==1),
+					WriteData(fid,'','name',['md.' name],'data',value,'format','Double');
+				elseif ischar(value),
+					WriteData(fid,'','name',['md.' name],'data',value,'format','String');
+				else
+					error(['Cannot marshall option ' name ': format not supported yet']);
+				end
+			end
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/pairoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/pairoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/pairoptions.py	(revision 27955)
@@ -0,0 +1,196 @@
+from collections import OrderedDict
+
+
+class pairoptions(object):
+    """PAIROPTIONS class definition
+
+    Usage:
+        pairoptions = pairoptions()
+        pairoptions = pairoptions('module', true, 'solver', false)
+    """
+
+    def __init__(self, *arg):  # {{{
+        #self.functionname = ''
+        self.list = OrderedDict()
+
+        #get calling function name
+        #import inspect
+        #if len(inspect.stack()) > 1:
+        #self.functionname = inspect.stack()[1][3]
+        import traceback
+        try:
+            self.functionname = traceback.extract_stack(limit=2)[0][2]
+        except IndexError:
+            pass  #this is probably similar to the previous if treatment (but faster)
+
+        #initialize list
+        if not len(arg):
+            pass  #Do nothing,
+        else:
+            self.buildlist(*arg)
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = "   functionname: '{}'\n".format(self.functionname)
+        if self.list:
+            s += "   list: ({}x{}) \n\n".format(len(self.list), 2)
+            for item in self.list.items():
+                s += "     field: {} value: '{}'\n".format(item[0], item[1])
+            print(s)
+        else:
+            s += "   list: empty\n"
+        return s
+    # }}}
+
+    def buildlist(self, *arg):  # {{{
+        """BUILDLIST - build list of objects from input
+        """
+
+        #check length of input
+        if len(arg) % 2:
+            raise TypeError('Invalid parameter/value pair arguments')
+        numoptions = int(len(arg) / 2)
+
+        #go through arg and build list of objects
+        for i in range(numoptions):
+            if isinstance(arg[2 * i], str):
+                self.list[arg[2 * i]] = arg[2 * i + 1]
+            else:
+                #option is not a string, ignore it
+                print(("WARNING: option number {} is not a string and will be ignored.".format(i + 1)))
+    # }}}
+
+    def addfield(self, field, value):  # {{{
+        """ADDFIELD - add a field to an options list
+        """
+
+        if isinstance(field, str):
+            if field in self.list:
+                print(("WARNING: field '{}' with value={} exists and will be overwritten with value={}.".format(field, str(self.list[field]), str(value))))
+            self.list[field] = value
+    # }}}
+
+    def addfielddefault(self, field, value):  # {{{
+        """ADDFIELDDEFAULT - add a field to an options list if it does not already exist
+        """
+
+        if isinstance(field, str):
+            if field not in self.list:
+                self.list[field] = value
+    # }}}
+
+    def AssignObjectFields(self, obj2):  # {{{
+        """ASSIGNOBJECTFIELDS - assign object fields from options
+        """
+
+        for item in list(self.list.items()):
+            if item[0] in dir(obj2):
+                setattr(obj2, item[0], item[1])
+            else:
+                print(("WARNING: field '%s' is not a property of '%s'." % (item[0], type(obj2))))
+        return obj2
+    # }}}
+
+    def changefieldvalue(self, field, newvalue):  # {{{
+        """CHANGEOPTIONVALUE - change the value of an option in an option list
+        """
+
+        self.list[field] = newvalue
+    # }}}
+
+    def displayunused(self):  # {{{
+        """DISPLAYUNUSED - display unused options
+        """
+
+        print('WARNING: pairoptions::displayunused is not yet implemented')
+    # }}}
+
+    def exist(self, field):  # {{{
+        """EXIST - check if the option exists
+        """
+
+        #some argument checking:
+        if field is None or field == '':
+            raise ValueError('exist error message: bad usage')
+        if not isinstance(field, str):
+            raise TypeError("exist error message: field '%s' should be a string." % str(field))
+
+        #Recover option
+        if field in self.list:
+            return True
+        else:
+            return False
+    # }}}
+
+    def getfieldvalue(self, field, default=None):  # {{{
+        """GETFIELDVALUE - get the value of an option
+
+        Usage:
+           value = options.getfieldvalue(field, default)
+
+        Find an option value from a field. A default option
+        can be given in input if the field does not exist
+
+        Examples:
+           value = options.getfieldvalue(options, 'caxis')
+           value = options.getfieldvalue(options, 'caxis', [0 2])
+        """
+
+        #some argument checking:
+        if field is None or field == '':
+            raise ValueError('getfieldvalue error message: bad usage')
+        if not isinstance(field, str):
+            raise TypeError("getfieldvalue error message: field '%s' should be a string." % str(field))
+
+        #Recover option
+        if field in self.list:
+            value = self.list[field]
+        else:
+            if default is not None:
+                value = default
+            else:
+                raise KeyError("error message: field '%s' has not been provided by user (and no default value has been specified)." % field)
+
+        return value
+    # }}}
+
+    def removefield(self, field, warn):  # {{{
+        """REMOVEFIELD - delete a field in an option list
+
+        Usage:
+           obj = removefield(self, field, warn)
+
+        if warn == 1 display an info message to warn user that
+        some of their options have been removed.
+        """
+
+        #check if field exist
+        if field in self.list:
+
+            #remove duplicates from the options list
+            del self.list[field]
+
+            #warn user if requested
+            if warn:
+                print(("removefield info: option '%s' has been removed from the list of options." % field))
+    # }}}
+
+    def marshall(self, md, fid, firstindex):  # {{{
+
+        for i, item in enumerate(self.list.items()):
+            name = item[0]
+            value = item[1]
+
+            raise NameError('need to sync with MATLAB')
+
+        #Write option name
+        #WriteData(fid, prefix, 'enum', (firstindex - 1) + 2 * i + 1, 'data', name, 'format', 'String')
+
+        #Write option value
+        #if   isinstance(value, (str, unicode)):
+        #    WriteData(fid, prefix, 'enum', (firstindex - 1) + 2 * i + 2, 'data', value, 'format', 'String')
+        #elif isinstance(value, (bool, int, long, float)):
+        #    WriteData(fid, prefix, 'enum', (firstindex - 1) + 2 * i + 2, 'data', value, 'format', 'Double')
+        #else:
+        #raise TypeError("Cannot marshall option '%s': format not supported yet." % name)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/plotoptions.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/plotoptions.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/plotoptions.js	(revision 27955)
@@ -0,0 +1,173 @@
+//PLOTOPTIONS class definition
+//
+//   Usage:
+//      plotoptions = plotoptions(varargin)
+
+function plotoptions(args) {
+	//methods
+	this.disp = function (){ // {{{
+		console.log(sprintf('\nplotoptions = \n'));
+		console.log(sprintf('   figurenumber: %i',this.figurenumber));
+		console.log(sprintf('   numberofplots: %i',this.numberofplots));
+		if (this.list.length){
+			for (var i=0;i<this.list.length;i++){
+				console.log(sprintf('\n   options of plot number %i',i+1));
+				this.list[i].disp();
+			}
+		}
+		else{
+			console.log(sprintf('   list: empty'));
+		}
+	}
+	//}}}
+	this.constructor = function (args){ // {{{
+
+		//check length of input
+		if (args.length % 2){
+			for (i=0;i<args.length;i+=2){
+				if (!(typeof args[i] === 'string')){
+					console.log('Last valid option: ' + args[i-2]);
+					break;
+				}
+			}
+			throw Error('plotoptions error message: invalid parameter/value pair arguments');
+		}
+
+		//go through varargin and build list (like pairoptions)
+		var rawoptions=new pairoptions(args);
+		numoptions=rawoptions.numoptions();
+
+		var counter=0;
+		for (i=0;i<numoptions;i++){
+			if(typeof args[2*i] === 'string')counter++;
+		}
+		rawlist=Create2DArray(counter,2);
+		var counter=0;
+		for (i=0;i<numoptions;i++){
+			optionname=args[2*i];
+			optionval=args[2*i+1];
+			if(typeof optionname === 'string'){
+				rawlist[counter][0]=optionname;
+				rawlist[counter][1]=optionval;
+				counter++;
+			}
+			else{
+				//option is not a string, ignore it
+				console.log(sprintf("%s%i%s\n",'WARNING: option number ',i,' is not a string, it will be ignored'));
+				rawlist[counter]=[];
+				continue
+			}
+		}
+		
+			
+		//get number of data to be plotted
+		numberofplots=rawoptions.fieldoccurrences('data');
+		this.numberofplots=numberofplots;
+
+		//figure out wether alloptions flog is on
+		if (rawoptions.getfieldvalue('alloptions','off') === 'on') allflag=1;
+		else allflag=0;
+
+		//initialize list
+		var list=new Array(numberofplots);
+		for (i=0;i<numberofplots;i++){
+			list[i]=new pairoptions([]);
+		}
+				
+		//process plot options
+		for(var i=0;i<rawlist.length;i++){
+
+			//If alloptions flag has is on, apply to all plots
+			if (allflag & !(rawlist[i][0] === 'data') & (rawlist[i][0].indexOf('#') == -1)){
+				for(var j=0;j<numberofplots;j++){
+					list[j].addfield(rawlist[i][0],rawlist[i][1]);
+				}
+			}
+			else if (rawlist[i][0].indexOf('#') != -1){ //option contains '#'
+
+				//get suplot(s) associated
+				string=rawlist[i][0].split('#');
+				plotnums=string[1];
+				field=string[0];
+
+				//divide plotnums if there is a comma ','
+				plotnums=plotnums.split(',');
+
+				//loop over plotnums
+				for (k=0;k<plotnums.length;k++){
+					plotnum=plotnums[k];
+
+					//Empty
+					if (plotnum === '') continue;
+
+					else if (plotnum === 'all'){ //pound all
+						for(var j=0;j<numberofplots;j++){
+							list[j].addfield(field,rawlist[i][1]);
+						}
+					}
+					else if (plotnum.indexOf('-')!=-1){  //pound i-j
+						nums=plotnum.split('-');
+						if (nums.length!=2) continue;
+						if ((nums[0] == '') | (nums[1] === '')){
+							throw Error(sprintf("%s%s\n",'the option #i-j is not set properly for ',field));
+						}
+						for (j=(Number(nums[0])-1);j<(Number(nums[1])); j++){
+							list[j].addfield(field,rawlist[i][1]);
+						}
+					}
+					else{ //pound i
+						//assign to subplot
+						if (Number(plotnum)>numberofplots){
+							throw Error(sprintf("%s%s%s%i%s\n",'plotoptions error message: ',field,' cannot be assigned (',plotnum,' exceeds maximum number of plot)'));
+						}
+						list[Number(plotnum)-1].addfield(field,rawlist[i][1]);
+					}
+				}
+			}
+			else{ //assign option field to corresponding subplot
+
+				
+				//go through all subplot and assign to the first one free
+				var inc=0;
+				
+				while (inc<numberofplots){
+					
+					if (!list[inc].exist(rawlist[i][0])){
+						list[inc].addfield(rawlist[i][0],rawlist[i][1]);
+						break
+					}
+					else inc++;
+				}
+
+				if (inc>numberofplots-1){
+					console.log(sprintf("%s%s%s\n",'plot info message: too many ',rawlist[i][0],' options'));
+				}
+			}
+		}
+
+		//check that there is no duplicates
+		for (var i=0;i<numberofplots;i++) list[i].deleteduplicates();
+
+		//allocate canvasid automatically
+		for (var i=0;i<numberofplots;i++) {
+			if (!list[i].exist('canvasid')) {
+				list[i].addfield('canvasid',i);
+			}
+		}
+
+		//Get figure number (should be in options for subplot 1)
+		this.figurenumber=list[0].getfieldvalue('figure',1);
+		list[0].removefield('figure',0);
+
+		//asign output
+		this.list=list;
+
+	} //}}}
+	//properties
+	// {{{
+	this.numberofplots = 0;
+	this.figurenumber  = 1;
+	this.list          = [];
+	this.constructor(args);
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/plotoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/plotoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/plotoptions.m	(revision 27955)
@@ -0,0 +1,179 @@
+%PLOTOPTIONS class definition
+%
+%   Usage:
+%      plotoptions = plotoptions(varargin)
+
+classdef plotoptions
+    properties (SetAccess=public) 
+		 % {{{
+		 numberofplots = 0;
+		 figurenumber  = 1;
+		 list          = cell(0,0);
+		 %}}}
+	 end
+	 methods
+		 function opt=plotoptions(varargin) % {{{
+			 opt=buildlist(opt,varargin{:});
+		 end
+		 %}}}
+		 function disp(opt) % {{{
+			 disp(sprintf('\n%s = \n',inputname(1)));
+			 disp(sprintf('   numberofplots: %i',opt.numberofplots));
+			 disp(sprintf('   figurenumber: %i',opt.figurenumber));
+			 if ~isempty(opt.list),
+				 disp(sprintf('   list: (%ix%i)',size(opt.list,1),size(opt.list,2)));
+				 for i=1:size(opt.list,1),
+					 unit=opt.list{i};
+					 disp(sprintf('\n   options of plot number %i',i));
+					 for j=1:size(unit.list,1)
+						 if ischar(unit.list{j,2}),
+							 disp(sprintf('     field: %-10s value: ''%s''',unit.list{j,1},unit.list{j,2}));
+						 elseif isnumeric(unit.list{j,2}) & length(unit.list{j,2})==1,
+							 disp(sprintf('     field: %-10s value: %g',unit.list{j,1},unit.list{j,2}));
+						 else
+							 disp(sprintf('     field: %-10s value: (%ix%i)',unit.list{j,1},size(unit.list{j,2},1),size(unit.list{j,2},2)));
+						 end
+					 end
+				 end
+			 else
+				 disp(sprintf('   list: empty'));
+			 end
+		 end
+		 %}}}
+		 function opt=buildlist(opt,varargin) % {{{
+
+			 %check length of input
+			 if mod((nargin-1),2),
+				 for i=1:2:(nargin-1)
+					 if ~ischar(varargin{i}),
+						 disp(['Last valid option: ' varargin{i-2} ]);
+						 break;
+					 end
+				 end
+				 error('Invalid parameter/value pair arguments')
+			 end
+
+			 %go through varargin and build list (like pairoptions)
+			 rawoptions=pairoptions(varargin{:});
+			 numoptions = (nargin-1)/2;
+			 rawlist=cell(numoptions,2);
+			 counter=1;
+			 for i=1:numoptions,
+				 optionname = varargin{2*i-1};
+				 optionval  = varargin{2*i};
+				 if ischar(optionname),
+					 rawlist{counter,1}=optionname;
+					 rawlist{counter,2}=optionval;
+					 counter=counter+1;
+				 else
+					 %option is not a string, ignore it
+					 disp(['WARNING: option number ' num2str(i) ' is not a string, it will be ignored']);
+					 rawlist(counter,:)=[];
+					 continue
+				 end
+			 end
+
+			 %get number of data to be plotted
+			 numberofplots=fieldoccurrences(rawoptions,'data');
+			 opt.numberofplots=numberofplots;
+
+			 %figure out wether alloptions flog is on
+			 if strcmpi(getfieldvalue(rawoptions,'alloptions','off'),'on'),
+				 allflag=1;
+			 else
+				 allflag=0;
+			 end
+
+			 %initialize opt.list
+			 opt.list=cell(numberofplots,1);
+			 for i=1:numberofplots,
+				 opt.list{i}=pairoptions;
+			 end
+
+			 %process plot options
+			 for i=1:size(rawlist,1),
+
+				 %If alloptions flag has is on, apply to all plots
+				 if (allflag & ~strcmpi(rawlist{i,1},'data') & ~ismember('#',rawlist{i,1})),
+					 for j=1:numberofplots,
+						 opt.list{j}=addfield(opt.list{j},rawlist{i,1},rawlist{i,2});
+					 end
+
+					 %option contains '#'
+				 elseif ismember('#',rawlist{i,1}),
+
+					 %get suplot(s) associated
+					 string=strsplit_strict(rawlist{i,1},'#');
+					 plotnums=string{end};
+					 field=string{1};
+
+					 %divide plotnums if there is a comma ','
+					 plotnums=strsplit_strict(plotnums,',');
+
+					 %loop over plotnums
+					 for k=1:length(plotnums);
+						 plotnum=plotnums{k};
+
+						 %Empty
+						 if isempty(plotnum),
+							 continue;
+
+							 %pound all
+						 elseif strcmpi(plotnum,'all');
+							 for j=1:numberofplots,
+								 opt.list{j}=addfield(opt.list{j},field,rawlist{i,2});
+							 end
+
+							 %pound i-j
+						 elseif ismember('-',plotnum)
+							 nums=strsplit_strict(plotnum,'-');
+							 if length(nums)~=2, continue; end
+							 if isempty(str2num(nums{1}))|isempty(str2num(nums{2}))
+								 error(['the option #i-j is not set properly for ' field]);
+							 end
+							 for j=str2num(nums{1}):str2num(nums{2}),
+								 opt.list{j}=addfield(opt.list{j},field,rawlist{i,2});
+							 end
+
+							 %pound i
+						 else
+							 %assign to subplot
+							 if str2num(plotnum)>numberofplots,
+								 error(['opt error message: ' field ' cannot be assigned (' plotnum ' exceed maximum number of plot)']);
+							 end
+							 opt.list{str2num(plotnum)}=addfield(opt.list{str2num(plotnum)},field,rawlist{i,2});
+						 end
+					 end
+
+					 %assign option field to corresponding subplot
+				 else
+
+					 %go through all subplot and assign to the first one free
+					 j=1;
+					 while (j<=numberofplots),
+						 if ~exist(opt.list{j},rawlist{i,1});
+							 opt.list{j}=addfield(opt.list{j},rawlist{i,1},rawlist{i,2});
+							 break
+						 else
+							 j=j+1;
+						 end
+					 end
+					 if j>numberofplots,
+						 disp(['plot info message: too many ''' rawlist{i,1} ''' options']);
+					 end
+				 end
+			 end
+
+			 %check that there is no duplicates
+			 for i=1:numberofplots,
+				 opt.list{i}=deleteduplicates(opt.list{i},1);
+			 end
+
+			 %Get figure number (should be in options for subplot 1)
+			 opt.figurenumber=getfieldvalue(opt.list{1},'figure',1);
+			 removefield(opt.list{1},'figure',0);
+
+		 end
+		 %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/plotoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/plotoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/plotoptions.py	(revision 27955)
@@ -0,0 +1,127 @@
+from collections import OrderedDict
+
+import pairoptions
+
+
+class plotoptions(object):
+    '''
+    PLOTOPTIONS class definition
+
+    Usage:
+        plotoptions = plotoptions(*arg)
+    '''
+
+    def __init__(self, *arg):  # {{{
+        self.numberofplots = 0
+        self.figurenumber = 1
+        self.list = OrderedDict()
+
+        self.buildlist(*arg)
+    # }}}
+
+    def __repr__(self):  #{{{
+        s = "\n"
+        s += "    numberofplots: %i\n" % self.numberofplots
+        s += "    figurenumber: %i\n" % self.figurenumber
+        if self.list:
+            s += "    list: (%ix%i)\n" % (len(self.list), 2)
+            for item in list(self.list.items()):
+                s += "    field: {:10} value: '{}'\n".format(item[0], item[1])
+            print(s)
+        else:
+            s += "    list: empty\n"
+        return s
+    # }}}
+
+    def buildlist(self, *arg):  #{{{
+        #check length of input
+        if len(arg) % 2:
+            raise TypeError('Invalid parameter/value pair arguments')
+
+        #go through args and build list (like pairoptions)
+        rawoptions = pairoptions.pairoptions(*arg)
+        numoptions = int(len(arg) / 2)
+        rawlist = []  # cannot be a dict since they do not support duplicate keys
+
+        for i in range(numoptions):
+            if isinstance(arg[2 * i], str):
+                rawlist.append([arg[2 * i], arg[2 * i + 1]])
+            else:
+                #option is not a string, ignore it
+                print(("WARNING: option number %d is not a string and will be ignored." % (i + 1)))
+
+        #get figure number
+        self.figurenumber = rawoptions.getfieldvalue('figure', 1)
+        rawoptions.removefield('figure', 0)
+
+        #get number of subplots
+        numberofplots = len([1 for sublist in rawlist for x in sublist if str(x) == 'data'])
+        self.numberofplots = numberofplots
+
+        #figure out whether alloptions flag is on
+        if rawoptions.getfieldvalue('alloptions', 'off') == 'on':
+            allflag = 1
+        else:
+            allflag = 0
+
+        #initialize self.list (will need a list of dict's (or nested dict) for numberofplots > 1)
+        #self.list = defaultdict(dict)
+        for i in range(numberofplots):
+            self.list[i] = pairoptions.pairoptions()
+
+        #process plot options
+        for i in range(len(rawlist)):
+
+            #if alloptions flag is on, apply to all plots
+            if (allflag and 'data' not in rawlist[i][0] and '#' not in rawlist[i][0]):
+
+                for j in range(numberofplots):
+                    self.list[j].addfield(rawlist[i][0], rawlist[i][1])
+
+            elif '#' in rawlist[i][0]:
+                #get subplots associated
+                string = rawlist[i][0].split('#')
+                plotnums = string[-1].split(', ')
+                field = string[0]
+
+                #loop over plotnums
+                for k in range(len(plotnums)):
+                    plotnum = plotnums[k]
+
+                    #Empty
+                    if not plotnum:
+                        continue
+
+                    # '#all'
+                    elif 'all' in plotnum:
+                        for j in range(numberofplots):
+                            self.list[j].addfield(field, rawlist[i][1])
+
+                    # '#i-j'
+                    elif '-' in plotnum:
+                        nums = plotnum.split('-')
+                        if len(nums) != 2:
+                            continue
+                        if False in [x.isdigit() for x in nums]:
+                            raise ValueError('error: in option i-j both i and j must be integers')
+                        for j in range(int(nums[0]) - 1, int(nums[1])):
+                            self.list[j].addfield(field, rawlist[i][1])
+
+                    # Deal with  #i
+                    else:
+                        #assign to subplot
+                        if int(plotnum) > numberofplots:
+                            raise ValueError('error: %s cannot be assigned %d which exceeds the number of subplots' % (field, plotnum))
+                        self.list[int(plotnum) - 1].addfield(field, rawlist[i][1])
+            else:
+                #go through all subplots and assign key - value pairs
+                j = 0
+                while j <= numberofplots - 1:
+                    if not self.list[j].exist(rawlist[i][0]):
+                        self.list[j].addfield(rawlist[i][0], rawlist[i][1])
+                        break
+                    else:
+                        j = j + 1
+                if j + 1 > numberofplots:
+                    print(("WARNING: too many instances of '%s' in options" % rawlist[i][0]))
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/plumebasalforcings.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/plumebasalforcings.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/plumebasalforcings.m	(revision 27955)
@@ -0,0 +1,132 @@
+%PLUME BASAL FORCINGS class definition
+%
+%   Usage:
+%      plumebasalforcings=plumebasalforcings();
+
+classdef plumebasalforcings
+	properties (SetAccess=public) 
+		floatingice_melting_rate  = NaN;
+		groundedice_melting_rate  = NaN;
+		mantleconductivity        = NaN;
+		nusselt                   = NaN;
+		dtbg                      = NaN;
+		plumeradius               = NaN;
+		topplumedepth             = NaN;
+		bottomplumedepth          = NaN;
+		plumex                    = NaN;
+		plumey                    = NaN;
+		crustthickness            = NaN;
+		uppercrustthickness       = NaN;
+		uppercrustheat            = NaN;
+		lowercrustheat            = NaN;
+
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1); 
+			self.floatingice_melting_rate=project3d(md,'vector',self.floatingice_melting_rate,'type','node','layer',1); 
+		end % }}}
+		function self = plumebasalforcings(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(plumebasalforcings(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.groundedice_melting_rate),
+				self.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.groundedice_melting_rate specified: values set as zero');
+			end
+			if isnan(self.floatingice_melting_rate),
+				self.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.floatingice_melting_rate specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%default values for melting parameterization
+			self.mantleconductivity     = 2.2;
+			self.nusselt                = 300;
+			self.dtbg                   = 11/1000.;
+			self.plumeradius            = 100000;
+			self.topplumedepth          = 10000;
+			self.bottomplumedepth       = 1050000;
+			self.crustthickness         = 30000;
+			self.uppercrustthickness    = 14000;
+			self.uppercrustheat         = 1.7*10^-6;
+			self.lowercrustheat         = 0.4*10^-6;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember('MasstransportAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.ismasstransport==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'timeseries',1);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices 1]);
+			end
+			if ismember('ThermalAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.isthermal==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.mantleconductivity','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.nusselt','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.dtbg','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.topplumedepth','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.bottomplumedepth','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.plumex','numel',1);
+				md = checkfield(md,'fieldname','basalforcings.plumey','numel',1);
+				md = checkfield(md,'fieldname','basalforcings.crustthickness','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.uppercrustthickness','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.uppercrustheat','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.lowercrustheat','>',0,'numel',1);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   mantle plume basal melt parameterization:'));
+
+			fielddisplay(self,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+			fielddisplay(self,'floatingice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+			fielddisplay(self,'mantleconductivity','mantle heat conductivity [W/m^3]');
+			fielddisplay(self,'nusselt','nusselt number, ratio of mantle to plume [1]');
+			fielddisplay(self,'dtbg','background temperature gradient [degree/m]');
+			fielddisplay(self,'plumeradius','radius of the mantle plume [m]');
+			fielddisplay(self,'topplumedepth','depth of the mantle plume top below the crust [m]');
+			fielddisplay(self,'bottomplumedepth','depth of the mantle plume base below the crust [m]');
+			fielddisplay(self,'plumex','x coordinate of the center of the plume [m]');
+			fielddisplay(self,'plumey','y coordinate of the center of the plume [m]');
+			fielddisplay(self,'crustthickness','thickness of the crust [m]');
+			fielddisplay(self,'uppercrustthickness','thickness of the upper crust [m]');
+			fielddisplay(self,'uppercrustheat','volumic heat of the upper crust [w/m^3]');
+			fielddisplay(self,'lowercrustheat','volumic heat of the lowercrust [w/m^3]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.basalforcings.model','data',4,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','floatingice_melting_rate','format','DoubleMat','name','md.basalforcings.floatingice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','name','md.basalforcings.groundedice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
+			WriteData(fid,prefix,'object',self,'fieldname','mantleconductivity','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','nusselt','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','dtbg','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','plumeradius','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','topplumedepth','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','bottomplumedepth','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','plumex','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','plumey','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','crustthickness','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','uppercrustthickness','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','uppercrustheat','format','Double')
+			WriteData(fid,prefix,'object',self,'fieldname','lowercrustheat','format','Double')
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/plumebasalforcings.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/plumebasalforcings.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/plumebasalforcings.py	(revision 27955)
@@ -0,0 +1,135 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from structtoobj import structtoobj
+from WriteData import WriteData
+
+
+class plumebasalforcings(object):
+    """PLUME BASAL FORCINGS class definition
+
+    Usage:
+        plumebasalforcings = plumebasalforcings()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.floatingice_melting_rate   = np.nan
+        self.groundedice_melting_rate   = np.nan
+        self.mantleconductivity         = np.nan
+        self.nusselt                    = np.nan
+        self.dtbg                       = np.nan
+        self.plumeradius                = np.nan
+        self.topplumedepth              = np.nan
+        self.bottomplumedepth           = np.nan
+        self.plumex                     = np.nan
+        self.plumey                     = np.nan
+        self.crustthickness             = np.nan
+        self.uppercrustthickness        = np.nan
+        self.uppercrustheat             = np.nan
+        self.lowercrustheat             = np.nan
+
+        nargs = len(args)
+        if nargs == 0:
+            self.setdefaultparameters()
+        elif nargs == 1:
+            # TODO: This has not been tested
+            self = structtoobj(self, args[0])
+        else:
+            error('constuctor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   mantle plume basal melt parameterization:\n'
+        s += '{}\n'.format(fielddisplay(self, 'groundedice_melting_rate', 'basal melting rate (positive if melting) [m/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'floatingice_melting_rate', 'basal melting rate (positive if melting) [m/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'mantleconductivity', 'mantle heat conductivity [W/m^3]'))
+        s += '{}\n'.format(fielddisplay(self, 'nusselt', 'nusselt number, ratio of mantle to plume [1]'))
+        s += '{}\n'.format(fielddisplay(self, 'dtbg', 'background temperature gradient [degree/m]'))
+        s += '{}\n'.format(fielddisplay(self, 'plumeradius', 'radius of the mantle plume [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'topplumedepth', 'depth of the mantle plume top below the crust [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'bottomplumedepth', 'depth of the mantle plume base below the crust [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'plumex', 'x coordinate of the center of the plume [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'plumey', 'y coordinate of the center of the plume [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'crustthickness', 'thickness of the crust [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'uppercrustthickness', 'thickness of the upper crust [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'uppercrustheat', 'volumic heat of the upper crust [w/m^3]'))
+        s += '{}\n'.format(fielddisplay(self, 'lowercrustheat', 'volumic heat of the lowercrust [w/m^3]'))
+        return s
+    # }}}
+
+    def initialize(self, md):  #{{{
+        if np.all(np.isnan(self.groundedice_melting_rate)):
+            self.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices, ))
+            print('      no basalforcings.groundedice_melting_rate specified: values set as zero')
+        if np.all(np.isnan(self.floatingice_melting_rate)):
+            self.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices, ))
+            print('      no basalforcings.floatingice_melting_rate specified: values set as zero')
+        return self
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.groundedice_melting_rate = project3d(md, 'vector', self.groundedice_melting_rate, 'type', 'node', 'layer', 1)
+        self.floatingice_melting_rate = project3d(md, 'vector', self.floatingice_melting_rate, 'type', 'node', 'layer', 1)
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Default values for melting parameterization
+        self.mantleconductivity = 2.2
+        self.nusselt = 300
+        self.dtbg = 11 / 1000.0
+        self.plumeradius = 100000
+        self.topplumedepth = 10000
+        self.bottomplumedepth = 1050000
+        self.crustthickness = 30000
+        self.uppercrustthickness = 14000
+        self.uppercrustheat = 1.7 * pow(10, -6)
+        self.lowercrustheat = 0.4 * pow(10, -6)
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if 'MasstransportAnalysis' in analyses and not (solution == 'TransientSolution' and md.transient.ismasstransport == 0):
+            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'timeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.floatingice_melting_rate', 'NaN', 1, 'timeseries', 1)
+        if 'BalancethicknessAnalysis' in analyses:
+            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'basalforcings.floatingice_melting_rate', 'NaN', 1, 'size', [md.mesh.numberofvertices])
+        if 'ThermalAnalysis' in analyses and not (solution == 'TransientSolution' and md.transient.isthermal == 0):
+            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'timeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.floatingice_melting_rate', 'NaN', 1, 'timeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.mantleconductivity', '>=', 0, 'numel', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.nusselt', '>', 0, 'numel', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.dtbg', '>', 0, 'numel', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.topplumedepth', '>', 0, 'numel', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.bottomplumedepth', '>', 0, 'numel', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.plumex', 'numel', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.plumey', 'numel', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.crustthickness', '>', 0, 'numel', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.uppercrustthickness', '>', 0, 'numel', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.uppercrustheat', '>', 0, 'numel', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.lowercrustheat', '>', 0, 'numel', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'name', 'md.basalforcings.model', 'data', 4, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'floatingice_melting_rate', 'format', 'DoubleMat', 'name', 'md.basalforcings.floatingice_melting_rate', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'groundedice_melting_rate', 'format', 'DoubleMat', 'name', 'md.basalforcings.groundedice_melting_rate', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'mantleconductivity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'nusselt', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'dtbg', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'plumeradius', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'topplumedepth', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'bottomplumedepth', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'plumex', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'plumey', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'crustthickness', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'uppercrustthickness', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'uppercrustheat', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'lowercrustheat', 'format', 'Double')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/priv.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/priv.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/priv.js	(revision 27955)
@@ -0,0 +1,30 @@
+//PRIV class definition
+//
+//   Usage:
+//      priv =new priv();
+
+function priv (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   private parameters: do not change'));
+
+		fielddisplay(this,'isconsistent','is model this consistent');
+		fielddisplay(this,'runtimename','name of the run launched');
+		fielddisplay(this,'bamg','structure with mesh properties constructed if bamg is used to mesh the domain');
+		fielddisplay(this,'solution','type of solution launched');
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses){ // {{{
+
+	}// % }}}
+	//properties 
+	// {{{
+	this.isconsistent = true;
+	this.runtimename  = '';
+	this.bamg         = {};
+	this.solution     = '';
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/private.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/private.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/private.m	(revision 27955)
@@ -0,0 +1,46 @@
+%PRIVATE class definition
+%
+%   Usage:
+%      private=private();
+
+classdef private
+	properties (SetAccess=public) 
+		isconsistent = true;
+		runtimename  = '';
+		bamg         = struct();
+		solution     = '';
+	end
+	methods
+		function self = private(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   private parameters: do not change'));
+
+			fielddisplay(self,'isconsistent','is model self consistent');
+			fielddisplay(self,'runtimename','name of the run launched');
+			fielddisplay(self,'bamg','structure with mesh properties constructed if bamg is used to mesh the domain');
+			fielddisplay(self,'solution','type of solution launched');
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.priv.isconsistent'],self.isconsistent);
+			writejsstring(fid,[modelname '.priv.runtimename'],self.runtimename);
+			writejsstring(fid,[modelname '.priv.solution'],self.solution);
+			%no bamg 
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/private.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/private.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/private.py	(revision 27955)
@@ -0,0 +1,40 @@
+from collections import OrderedDict
+from fielddisplay import fielddisplay
+
+
+class private(object):
+    """
+    PRIVATE class definition
+
+       Usage:
+          private = private()
+    """
+
+    def __init__(self):  # {{{
+        self.isconsistent = True
+        self.runtimename = ''
+        self.bamg = OrderedDict()
+        self.solution = ''
+
+    #set defaults
+        self.setdefaultparameters()
+
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = '   private parameters: do not change'
+
+        string = "%s\n%s" % (string, fielddisplay(self, 'isconsistent', 'is model self consistent'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'runtimename', 'name of the run launched'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'bamg', 'structure with mesh properties constructed if bamg is used to mesh the domain'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'solution', 'type of solution launched'))
+        return string
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        return md
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu.js	(revision 27955)
@@ -0,0 +1,153 @@
+//QMU class definition
+//
+//   Usage:
+//      qmu=new qmu();
+
+function qmu (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   qmu parameters:'));
+
+		fielddisplay(this,'isdakota','is qmu analysis activated?');
+		fielddisplay(this,'output','are we outputting ISSM results, default is 0');
+		/*
+		for (var i=0;i<this.variables.length;i++){
+			console.log(sprintf('         variables%s:  (arrays of each variable class)',...
+						string_dim(this.variables,i)));
+		}
+		fnames=fieldnames(this.variables(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+
+			for j=1:numel(fnames)
+				console.log(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+							fnames{j},size(this.variables.(fnames{j})),class(this.variables.(fnames{j}))));
+		end
+			end
+			for i=1:numel(this.responses)
+				console.log(sprintf('         responses%s:  (arrays of each response class)',...
+							string_dim(this.responses,i)));
+		fnames=fieldnames(this.responses(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+
+			for j=1:numel(fnames)
+				console.log(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+							fnames{j},size(this.responses.(fnames{j})),class(this.responses.(fnames{j}))));
+		end
+			end
+			fielddisplay(this,'numberofresponses','number of responses') 
+			for i=1:numel(this.method);
+		if strcmp(class(this.method(i)),'dakota_method')
+			console.log(sprintf('            method%s :    ''%s''',...
+						string_dim(this.method,i),this.method(i).method));
+		end
+			end
+			for i=1:numel(this.params)
+				console.log(sprintf('         params%s:  (array of method-independent parameters)',...
+							string_dim(this.params,i)));
+		fnames=fieldnames(this.params(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+
+			for j=1:numel(fnames)
+				console.log(sprintf(['            %-' num2str(maxlen+1) 's: %s'],...
+							fnames{j},any2str(this.params(i).(fnames{j}))));
+		end
+			end
+			for i=1:numel(this.results)
+				console.log(sprintf('         results%s:  (information from dakota files)',...
+							string_dim(this.results,i)));
+		fnames=fieldnames(this.results(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+
+			for j=1:numel(fnames)
+				console.log(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+							fnames{j},size(this.results.(fnames{j})),class(this.results.(fnames{j}))));
+		end
+			end
+			fielddisplay(this,'partition','user provided mesh partitioning, defaults to metis if not specified') 
+			fielddisplay(this,'numberofpartitions','number of partitions for semi-discrete qmu') 
+			fielddisplay(this,'variabledescriptors','');
+		fielddisplay(this,'responsedescriptors','');
+		fielddisplay(this,'method','array of dakota_method class');
+		fielddisplay(this,'mass_flux_profile_directory','directory for mass flux profiles');
+		fielddisplay(this,'mass_flux_profiles','list of mass_flux profiles');
+		fielddisplay(this,'mass_flux_segments','');
+		fielddisplay(this,'adjacency','');
+		fielddisplay(this,'vertex_weight','weight applied to each mesh vertex');
+		*/
+
+	}// }}}
+    this.extrude = function(md) {//{{{
+	if (!isNaN(this.partition)) this.partition=project3d(md,'vector',ArrayTranspose(this.partition),'type','node');
+        return this;
+    }//}}}
+	this.classname= function(){// {{{
+		return "qmu";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			///Early return
+			if (!md.qmu.isdakota) return;
+			else md.checkmessage('qmu runs not supported yet!');
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','isdakota','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','output','format','Boolean');
+			if (!this.isdakota){
+				WriteData(fid,prefix,'data',0,'name','md.qmu.mass_flux_segments_present','format','Boolean');
+			}
+			else{
+				WriteData(fid,prefix,'object',this,'fieldname','partition','format','DoubleMat','mattype',2);
+				WriteData(fid,prefix,'object',this,'fieldname','numberofpartitions','format','Integer');
+				WriteData(fid,prefix,'object',this,'fieldname','numberofresponses','format','Integer');
+				WriteData(fid,prefix,'object',this,'fieldname','variabledescriptors','format','StringArray');
+				WriteData(fid,prefix,'object',this,'fieldname','responsedescriptors','format','StringArray');
+				if (this.mass_flux_segments.length){
+					WriteData(fid,prefix,'data',this.mass_flux_segments,'name','md.qmu.mass_flux_segments','format','MatArray');
+					flag=true; 
+				}
+				else flag=false; 
+				WriteData(fid,prefix,'data',flag,'name','md.qmu.mass_flux_segments_present','format','Boolean');
+			}
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+
+	this.isdakota                    = 0;
+	this.output                      = 0;
+	this.variables                   = []
+	this.responses                   = [];
+	this.method                      = []
+	this.params                      = []
+	this.results                     = []
+	this.partition                   = NaN;
+	this.numberofpartitions          = 0;
+	this.numberofresponses           = 0;
+	this.variabledescriptors         = []
+	this.responsedescriptors         = []
+	this.mass_flux_profile_directory = NaN;
+	this.mass_flux_profiles          = NaN;
+	this.mass_flux_segments          = []
+	this.adjacency                   = NaN;
+	this.vertex_weight               = NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu.m	(revision 27955)
@@ -0,0 +1,255 @@
+%QMU class definition
+%
+%   Usage:
+%      qmu=qmu();
+
+classdef qmu
+	properties (SetAccess=public)
+		isdakota                    = 0;
+		output                      = 0;
+		variables                   = struct();
+		correlation_matrix          = [];
+		responses                   = struct();
+		method                      = struct();
+		params                      = struct();
+		statistics                  = qmustatistics();
+		results                     = struct();
+		numberofresponses           = 0;
+		variabledescriptors         = {};
+		variablepartitions          = {};
+		variablepartitions_npart    = [];
+		variablepartitions_nt    = [];
+		responsedescriptors         = {};
+		responsepartitions          = {};
+		responsepartitions_npart    = [];
+		mass_flux_profile_directory = NaN;
+		mass_flux_profiles          = NaN;
+		mass_flux_segments          = {};
+		adjacency                   = NaN;
+		vertex_weight               = NaN;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. If the input is a struct it is an old version of this class and
+			% old fields must be recovered (make sure they are in the deprecated
+			% model properties)
+
+			if verLessThan('matlab','7.9'),
+				disp('Warning: your matlab version is old and there is a risk that load does not work correctly');
+				disp('         if the model is not loaded correctly, rename temporarily loadobj so that matlab does not use it');
+
+				% This is a Matlab bug: all the fields of md have their default value
+				% Example of error message:
+				% Warning: Error loading an object of class 'model':
+				% Undefined function or method 'exist' for input arguments of type 'cell'
+				%
+				% This has been fixed in MATLAB 7.9 (R2009b) and later versions
+			end
+
+			if isstruct(self)
+				%disp('Recovering qmu from older version');
+				objstruct = self;
+				self = structtoobj(qmu(),objstruct);
+
+				%2019 Dec 7th
+				%if isfield(objstruct,'partition'),      self.vpartition     = objstruct.partition;       end;
+			end
+
+		end% }}}
+	end
+	methods
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function self = qmu(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~md.qmu.isdakota, return; end
+
+			version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+
+			if version < 6,
+				if md.qmu.params.evaluation_concurrency~=1,
+					md = checkmessage(md,['concurrency should be set to 1 when running dakota in library mode']);
+				end
+			else
+				if ~strcmpi(self.params.evaluation_scheduling,'master'),
+					md = checkmessage(md,['evaluation_scheduling in qmu.params should be set to ''master''']);
+				end
+				if md.cluster.nprocs()<=1,
+					md = checkmessage(md,['in parallel library mode, Dakota needs to run on at least 2 cpus, 1 cpu for the master, 1 cpu for the slave. Modify md.cluster.np accordingly.']);
+				end
+
+				if self.params.processors_per_evaluation<1,
+					md = checkmessage(md,['in parallel library mode, Dakota needs to run at least one slave on one cpu (md.qmu.params.processors_per_evaluation >=1)!']);
+				end
+				if mod(md.cluster.nprocs()-1,self.params.processors_per_evaluation),
+					%md = checkmessage(md,['in parallel library mode, the requirement is for md.cluster.np = md.qmu.params.processors_per_evaluation * number_of_slaves, where number_of_slaves will automatically be determined by Dakota. Modify md.cluster.np accordingly']);
+				end
+			end
+
+			%go through variables and check for consistency: 
+			fv=fieldnames(self.variables);
+			for i=1:length(fv),
+				self.variables.(fv{i}).checkconsistency(md,solution,analyses);
+			end
+
+			%go through variables, and check that we have normal uncertains first, then uniform uncertains 
+			%and finally histogram_bin_uncertain. Indeed, dakota will order them this way, and when we send 
+			%partitions for scaled variables, they better show up in the order dakota is feeding them to us 
+			%in InputUpdateFromDakotax!
+			fv=fieldnames(self.variables); classlist={};
+			for i=1:length(fv),
+				classlist{i}=class(self.variables.(fv{i}));
+			end
+			n=0; u=0; h=0;
+			for i=1:length(classlist),
+				if strcmpi(classlist{i},'normal_uncertain')
+					if (u~=0 | h~=0),
+						error('normal_uncertain variables should be declared before uniform and histogram_bin uncertain variables');
+					else
+						n=1;
+					end
+				end
+				if strcmpi(classlist{i},'uniform_uncertain')
+					if (h~=0),
+						error('uniform_uncertain variables should be declared before histogram_bin uncertain variables');
+					else
+						u=1;
+					end
+				end
+				if strcmpi(classlist{i},'histogram_bin_uncertain')
+					h=1;
+				end
+
+			end
+
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   qmu parameters:'));
+
+			fielddisplay(self,'isdakota','is qmu analysis activated?');
+			fielddisplay(self,'output','are we outputting ISSM results, default is 0');
+			for i=1:numel(self.variables)
+				disp(sprintf('         variables%s:  (arrays of each variable class)',...
+					string_dim(self.variables,i)));
+				fnames=fieldnames(self.variables(i));
+				maxlen=0;
+				for j=1:numel(fnames)
+					maxlen=max(maxlen,length(fnames{j}));
+				end
+
+				for j=1:numel(fnames)
+					disp(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+						fnames{j},size(self.variables.(fnames{j})),class(self.variables.(fnames{j}))));
+				end
+			end
+			for i=1:numel(self.responses)
+				disp(sprintf('         responses%s:  (arrays of each response class)',...
+					string_dim(self.responses,i)));
+				fnames=fieldnames(self.responses(i));
+				maxlen=0;
+				for j=1:numel(fnames)
+					maxlen=max(maxlen,length(fnames{j}));
+				end
+
+				for j=1:numel(fnames)
+					disp(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+						fnames{j},size(self.responses.(fnames{j})),class(self.responses.(fnames{j}))));
+				end
+			end
+			fielddisplay(self,'numberofresponses','number of responses')
+			for i=1:numel(self.method);
+				if strcmp(class(self.method(i)),'dakota_method')
+					disp(sprintf('            method%s :    ''%s''',...
+						string_dim(self.method,i),self.method(i).method));
+				end
+			end
+			for i=1:numel(self.params)
+				disp(sprintf('         params%s:  (array of method-independent parameters)',...
+					string_dim(self.params,i)));
+				fnames=fieldnames(self.params(i));
+				maxlen=0;
+				for j=1:numel(fnames)
+					maxlen=max(maxlen,length(fnames{j}));
+				end
+
+				for j=1:numel(fnames)
+					disp(sprintf(['            %-' num2str(maxlen+1) 's: %s'],...
+						fnames{j},any2str(self.params(i).(fnames{j}))));
+				end
+			end
+			for i=1:numel(self.results)
+				disp(sprintf('         results%s:  (information from dakota files)',...
+					string_dim(self.results,i)));
+				fnames=fieldnames(self.results(i));
+				maxlen=0;
+				for j=1:numel(fnames)
+					maxlen=max(maxlen,length(fnames{j}));
+				end
+
+				for j=1:numel(fnames)
+					disp(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+						fnames{j},size(self.results.(fnames{j})),class(self.results.(fnames{j}))));
+				end
+			end
+			fielddisplay(self,'variablepartitions','');
+			fielddisplay(self,'variablepartitions_npart','');
+			fielddisplay(self,'variablepartitions_nt','');
+			fielddisplay(self,'variabledescriptors','');
+			fielddisplay(self,'responsedescriptors','');
+			fielddisplay(self,'method','array of dakota_method class');
+			fielddisplay(self,'mass_flux_profile_directory','directory for mass flux profiles');
+			fielddisplay(self,'mass_flux_profiles','list of mass_flux profiles');
+			fielddisplay(self,'mass_flux_segments','');
+			fielddisplay(self,'adjacency','');
+			fielddisplay(self,'vertex_weight','weight applied to each mesh vertex');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','isdakota','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','output','format','Boolean');
+			if ~self.isdakota,
+				WriteData(fid,prefix,'data',false,'name','md.qmu.mass_flux_segments_present','format','Boolean');
+				return;
+			end
+			WriteData(fid,prefix,'data',self.method.params.samples,'name','md.qmu.method.params.samples','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','numberofresponses','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','variabledescriptors','format','StringArray');
+			WriteData(fid,prefix,'object',self,'fieldname','variablepartitions','format','MatArray');
+			WriteData(fid,prefix,'object',self,'fieldname','variablepartitions_npart','format','IntMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'fieldname','variablepartitions_nt','format','IntMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'fieldname','responsedescriptors','format','StringArray');
+			WriteData(fid,prefix,'object',self,'fieldname','responsepartitions','format','MatArray');
+			WriteData(fid,prefix,'object',self,'fieldname','responsepartitions_npart','format','IntMat','mattype',3);
+			if ~isempty(self.mass_flux_segments),
+				WriteData(fid,prefix,'data',self.mass_flux_segments,'name','md.qmu.mass_flux_segments','format','MatArray');
+				flag=true;
+			else
+				flag=false;
+			end
+			WriteData(fid,prefix,'data',flag,'name','md.qmu.mass_flux_segments_present','format','Boolean');
+			self.statistics.marshall(prefix,md,fid);
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			if self.isdakota,
+				error('qmu savemodeljs error message: not supported yet!');
+			end
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu.py	(revision 27955)
@@ -0,0 +1,219 @@
+import numpy as np
+
+from collections import OrderedDict
+from dakota_method import *
+from fielddisplay import fielddisplay
+from helpers import *
+from IssmConfig import *
+from MatlabFuncs import *
+from qmustatistics import qmustatistics
+from WriteData import WriteData
+
+
+class qmu(object):
+    """QMU class definition
+
+    Usage:
+        qmu = qmu()
+    """
+
+    def __init__(self):  # {{{
+        self.isdakota = 0
+        self.output = 0
+        self.variables = OrderedStruct()
+        self.correlation_matrix = []
+        self.responses = OrderedStruct()
+        self.method = OrderedDict()
+        self.params = OrderedStruct()
+        self.statistics = qmustatistics()
+        self.results = OrderedDict()
+        self.numberofresponses = 0
+        self.variabledescriptors = []
+        self.variablepartitions = []
+        self.variablepartitions_npart = []
+        self.variablepartitions_nt = []
+        self.responsedescriptors = []
+        self.responsepartitions = []
+        self.responsepartitions_npart = []
+        self.responsepartitions_nt = []
+        self.mass_flux_profile_directory = float('NaN')
+        self.mass_flux_profiles = float('NaN')
+        self.mass_flux_segments = []
+        self.adjacency = float('NaN')
+        self.vertex_weight = float('NaN')
+
+        self.setdefaultparameters()
+    # }}}
+    def __repr__(self):  # {{{
+        s = '   qmu parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'isdakota', 'is QMU analysis activated?'))
+        s += '{}\n'.format(fielddisplay(self, 'output', 'are we outputting ISSM results, default is 0'))
+        maxlen = 0
+        s += '         variables:  (arrays of each variable class)\n'
+
+    # OrderedStruct's iterator returns individual name / array - of - functions pairs
+        for variable in self.variables:
+            fname = variable[0]
+            maxlen = max(maxlen, len(fname))
+            size = np.shape(variable[1])
+            a = size[0]
+            b = 1 if len(size) < 2 else size[1]
+            s += "            %-*s:    [%ix%i]    '%s'\n" % (maxlen + 1, fname, a, b, type(variable[1][0]))
+
+        s += "         responses:  (arrays of each response class)\n"
+        for response in self.responses:
+            fname = response[0]
+            maxlen = max(maxlen, len(fname))
+            size = np.shape(response[1])
+            a = size[0]
+            b = 1 if len(size) < 2 else size[1]
+            s += "            %-*s:    [%ix%i]    '%s'\n" % (maxlen + 1, fname, a, b, type(response[1][0]))
+
+        s += '{}\n'.format(fielddisplay(self, 'numberofresponses', 'number of responses'))
+
+        if type(self.method) != OrderedDict:
+            self.method = [self.method]
+    # self.method must be iterable
+        for method in self.method:
+            if isinstance(method, dakota_method):
+                s += "            method :    '%s'\n" % (method.method)
+
+    # params could have a number of forms (mainly 1 struct or many)
+        if type(self.params) == OrderedStruct:
+            params = [self.params]
+        else:
+            params = np.hstack(np.atleast_1d(np.array(self.params)))
+        for param in params:
+            print(type(param))
+            print(param)
+            s += "         params:  (array of method-independent parameters)\n"
+            fnames = vars(param)
+            maxlen = 0
+            for fname in fnames:
+                maxlen = max(maxlen, len(fname))
+
+            for fname in fnames:
+                s += "            %-*s: %s\n" % (maxlen + 1, fname, str(getattr(param, fname)))
+
+    # results could be have a number of forms (mainly 1 struct or many)
+        results = np.hstack(np.atleast_1d(np.array(self.results)))
+        for result in results:
+            s += "         results:  (information from dakota files)\n"
+            fnames = vars(result)
+            maxlen = 0
+            for fname in fnames:
+                maxlen = max(maxlen, len(fname))
+
+            for fname in fnames:
+                size = np.shape(response[1])
+                a = size[0]
+                b = 0 if len(size) < 2 else size[1]
+                size = np.shape(getattr(result, fname))
+                s += "            %-*s:    [%ix%i]    '%s'\n" % (maxlen + 1, fname, a, b, type(getattr(result, fname)))
+
+        s += '{}\n'.format(fielddisplay(self, 'variablepartitions', ''))
+        s += '{}\n'.format(fielddisplay(self, 'variablepartitions_npart', ''))
+        s += '{}\n'.format(fielddisplay(self, 'variablepartitions_nt', ''))
+        s += '{}\n'.format(fielddisplay(self, 'variabledescriptors', ''))
+        s += '{}\n'.format(fielddisplay(self, 'responsedescriptors', ''))
+        s += '{}\n'.format(fielddisplay(self, 'method', 'array of dakota_method class'))
+        s += '{}\n'.format(fielddisplay(self, 'mass_flux_profile_directory', 'directory for mass flux profiles'))
+        s += '{}\n'.format(fielddisplay(self, 'mass_flux_profiles', 'list of mass_flux profiles'))
+        s += '{}\n'.format(fielddisplay(self, 'mass_flux_segments', ''))
+        s += '{}\n'.format(fielddisplay(self, 'adjacency', ''))
+        s += '{}\n'.format(fielddisplay(self, 'vertex_weight', 'weight applied to each mesh vertex'))
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        #Early return
+        if not md.qmu.isdakota:
+            return
+
+        version = IssmConfig('_DAKOTA_VERSION_')
+        version = float(version[0])
+
+        if version < 6:
+            if not md.qmu.params.evaluation_concurrency == 1:
+                md.checkmessage("concurrency should be set to 1 when running dakota in library mode")
+        else:
+            if not strcmpi(self.params.evaluation_scheduling, 'master'):
+                md.checkmessage('evaluation_scheduling in qmu.params should be set to "master"')
+
+            if md.cluster.nprocs() <= 1:
+                md.checkmessage('in parallel library mode, Dakota needs to run on at least 2 cpus, 1 cpu for the master, 1 cpu for the slave. Modify md.cluster.np accordingly.')
+
+            if self.params.processors_per_evaluation < 1:
+                md.checkmessage('in parallel library mode, Dakota needs to run at least one slave on one cpu (md.qmu.params.processors_per_evaluation >= 1)!')
+
+            if np.mod(md.cluster.nprocs() - 1, self.params.processors_per_evaluation):
+                #md.checkmessage('in parallel library mode, the requirement is for md.cluster.np = md.qmu.params.processors_per_evaluation * number_of_slaves, where number_of_slaves will automatically be determined by Dakota. Modify md.cluster.np accordingly')
+                pass
+
+        # Go through variables and check for consistency
+        fv = fieldnames(self.variables)
+        for i in range(len(fv)):
+            variable = getattr(self.variables, fv[i])
+            if hasattr(variable, 'checkconsistency'):
+                variable.checkconsistency(md, solution, analyses)
+
+        # Go through variables and check that we have normal uncertains first,
+        # then uniform uncertains and finally histogram_bin_uncertain. Indeed,
+        # Dakota will order them this waym, and when we send partitions for
+        # scaled variables, they better show up in the order Dakota is feeding
+        # them to us in InputUpdateFromDakotax!
+        fv = fieldnames(self.variables)
+        classlist = []
+        for i in range(len(fv)):
+            classlist.append(self.variables[fv[i]].__class__.__name__)
+        n = 0
+        u = 0
+        h = 0
+        for i in range(len(classlist)):
+            if classlist[i] == 'normal_uncertain':
+                if u != 0 or h != 0:
+                    raise Exception('normal uncertain variables should be declared before uniform and hhistogram_bin uncertain variables')
+                else:
+                    n = 1
+            if classlist[i] == 'uniform_uncertain':
+                if h != 0:
+                    raise Exception('uniform_uncertain variables should be declared before histogram_bin uncertain variables')
+                else:
+                    u = 1
+            if classlist[i] == 'histogram_bin_uncertain':
+                h = 1
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isdakota', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'output', 'format', 'Boolean')
+        if not self.isdakota:
+            WriteData(fid, prefix, 'data', False, 'name', 'md.qmu.mass_flux_segments_present', 'format', 'Boolean')
+            return
+        WriteData(fid, prefix, 'data', self.method.params.samples, 'name', 'md.qmu.method.params.samples', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'numberofresponses', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'variabledescriptors', 'format', 'StringArray')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'variablepartitions', 'format', 'MatArray')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'variablepartitions_npart', 'format', 'IntMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'variablepartitions_nt', 'format', 'IntMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'responsedescriptors', 'format', 'StringArray')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'responsepartitions', 'format', 'MatArray')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'responsepartitions_npart', 'format', 'IntMat', 'mattype', 3)
+        if not isempty(self.mass_flux_segments):
+            WriteData(fid, prefix, 'data', self.mass_flux_segments, 'name', 'md.qmu.mass_flux_segments', 'format', 'MatArray')
+            flag = True
+        else:
+            flag = False
+        WriteData(fid, prefix, 'data', flag, 'name', 'md.qmu.mass_flux_segments_present', 'format', 'Boolean')
+        self.statistics.marshall(prefix, md, fid)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/calibration_function.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/calibration_function.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/calibration_function.m	(revision 27955)
@@ -0,0 +1,125 @@
+%
+%  definition for the calibration_function class.
+%
+%  [cf]=calibration_function(varargin)
+%
+%  where the required varargin are:
+%    descriptor    (char, description, '')
+%  and the optional varargin and defaults are:
+%    scale_type    (char, scaling type, 'none')
+%    scale         (double, scaling factor, 1.)
+%    weight        (double, weighting factor, 1.)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and one or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef calibration_function
+    properties
+        descriptor='';
+    end
+
+    methods
+        function [cf]=calibration_function(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if  (nargin == 1) && isa(varargin{1},'calibration_function')
+                        cf=varargin{1};
+							else
+								asizec=num2cell(array_size(varargin{1:min(nargin,4)}));
+								cf(asizec{:})=calibration_function;
+								clear asizec
+
+								if ischar(varargin{1})
+									varargin{1}=cellstr(varargin{1});
+								end
+								for i=1:numel(cf)
+									if (numel(varargin{1}) > 1)
+										cf(i).descriptor=varargin{1}{i};
+									else
+										cf(i).descriptor=[char(varargin{1}) string_dim(cf,i,'vector')];
+									end
+								end
+                    end
+            end
+
+        end
+
+        function []=disp(cf)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(cf)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(cf),inputname(1),string_dim(cf,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,cf(i).descriptor));
+            end
+
+        end
+
+        function [desc]  =prop_desc(cf,dstr)
+            desc=cell(1,numel(cf));
+            for i=1:numel(cf)
+                if ~isempty(cf(i).descriptor)
+                    desc(i)=cellstr(cf(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(cf,i,'vector')]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(cf,i,'vector')]);
+                else
+                    desc(i)=cellstr(['cf'         string_dim(cf,i,'vector')]);
+                end
+            end
+            desc=allempty(desc);
+			end
+			function [stype] =prop_stype(cf)
+				stype={};
+			end
+			function [weight] =prop_weight(cf)
+				weight=[];
+			end
+			function [lower] =prop_lower(cf)
+				lower=[];
+			end
+			function [upper] =prop_upper(cf)
+				upper=[];
+			end
+			function [target] =prop_target(cf)
+				target=[];
+			end
+			function [scale] =prop_scale(cf)
+				scale=[];
+			end
+
+
+
+
+
+
+
+    end
+    methods (Static)
+        function [rdesc]=dakota_write(fidi,dresp,rdesc)
+
+%  collect only the responses of the appropriate class
+
+            cf=struc_class(dresp,'calibration_function');
+
+%  write responses
+
+            [rdesc]=rlist_write(fidi,'calibration_terms','calibration_function',cf,rdesc);
+        end
+
+        function []=dakota_rlev_write(fidi,dresp,params)
+        end
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/calibration_function.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/calibration_function.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/calibration_function.py	(revision 27955)
@@ -0,0 +1,141 @@
+import numpy as np
+from rlist_write import *
+from MatlabArray import *
+
+
+class calibration_function(object):
+    '''
+  definition for the calibration_function class.
+
+  [cf] = calibration_function.calibration_function(args)
+   cf = calibration_function()
+
+  where the required args are:
+    descriptor    (char, description, '')
+  and the optional args and defaults are:
+    scale_type    (char, scaling type, 'none')
+    scale         (double, scaling factor, 1.)
+    weight        (double, weighting factor, 1.)
+
+  note that zero arguments constructs a default instance, one
+  argument of the class copies the instance, and one or more
+  arguments constructs a new instance from the arguments.
+'''
+    def __init__(self):
+        self.descriptor = ''
+        self.scale_type = 'none'
+        self.scale = 1.
+        self.weight = 1.
+
+    @staticmethod
+    def calibration_function(*args):
+        nargin = len(args)
+
+    # create a default object
+        if nargin == 0:
+            return calibration_function()
+
+    # copy the object or create the object from the input
+        else:
+            if (nargin == 1) and isinstance(args[0], calibration_function):
+                cf = args[0]
+            else:
+                asizec = array_size(*args[0:min(nargin, 4)])
+                cf = [calibration_function() for i in range(asizec[0]) for j in range(asizec[1])]
+
+            for i in range(np.size(cf)):
+                if (np.size(args[0]) > 1):
+                    cf[i].descriptor = args[0][i]
+                else:
+                    cf[i].descriptor = str(args[0]) + string_dim(cf, i, 'vector')
+
+            if nargin >= 2:
+                for i in range(np.size(cf)):
+                    cf[i].scale_type = str(args[1])
+            if nargin >= 3:
+                for i in range(np.size(cf)):
+                    cf[i].scale = args[2]
+            if nargin >= 4:
+                for i in range(np.size(cf)):
+                    cf[i].weight = args[3]
+            if nargin > 4:
+                print('WARNING: calibration_function:extra_arg: Extra arguments for object of class ' + str(type(cf)) + '.')
+
+        return cf
+
+    def __repr__(self):
+        # display the object
+        string = '\n'
+        string += 'class "calibration_function" object = \n'
+        string += '    descriptor: ' + str(self.descriptor) + '\n'
+        string += '    scale_type: ' + str(self.scale_type) + '\n'
+        string += '         scale: ' + str(self.scale) + '\n'
+        string += '        weight: ' + str(self.weight) + '\n'
+        return string
+
+    # from here on, cf is either a single, or a 1d vector of, calibration_function
+    @staticmethod
+    def prop_desc(cf, dstr):
+        if type(cf) not in [list, np.ndarray]:
+            if cf.descriptor != '' or type(cf.descriptor) != str:
+                desc = str(cf.descriptor)
+            elif dstr != '':
+                desc = str(dstr)
+            else:
+                desc = 'cf'
+            return desc
+
+        desc = ['' for i in range(np.size(cf))]
+        for i in range(np.size(cf)):
+            if cf[i].descriptor != '' or type(cf[i].descriptor) != str:
+                desc[i] = str(cf[i].descriptor)
+            elif dstr != '':
+                desc[i] = str(dstr) + str(string_dim(cf, i, 'vector'))
+            else:
+                desc[i] = 'cf' + str(string_dim(cf, i, 'vector'))
+
+        desc = allempty(desc)
+        return desc
+
+    @staticmethod
+    def prop_stype(cf):
+        stype = ''
+        return stype
+
+    @staticmethod
+    def prop_weight(cf):
+        weight = []
+        return weight
+
+    @staticmethod
+    def prop_lower(cf):
+        lower = []
+        return lower
+
+    @staticmethod
+    def prop_upper(cf):
+        upper = []
+        return upper
+
+    @staticmethod
+    def prop_target(cf):
+        target = []
+        return target
+
+    @staticmethod
+    def prop_scale(cf):
+        scale = []
+        return scale
+
+    @staticmethod
+    def dakota_write(fidi, dresp, rdesc):
+        # collect only the responses of the appropriate class
+        cf = [struc_class(i, 'calibration_function', 'cf') for i in dresp]
+
+        # write responses
+        rdesc = rlist_write(fidi, 'calibration_terms', 'calibration_function', cf, rdesc)
+        return rdesc
+
+    @staticmethod
+    def dakota_rlev_write(fidi, dresp, params):
+        return
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/continuous_design.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/continuous_design.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/continuous_design.m	(revision 27955)
@@ -0,0 +1,239 @@
+%
+%  definition for the continuous_design class.
+%
+%  [cdv]=continuous_design(varargin)
+%
+%  where the required varargin are:
+%    descriptor    (char, description, '')
+%    initpt        (double, initial point, 0.)
+%  and the optional varargin and defaults are:
+%    lower         (double, lower bound, -Inf)
+%    upper         (double, upper bound,  Inf)
+%    scale_type    (char, scaling type, 'none')
+%    scale         (double, scaling factor, 1.)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef continuous_design
+	properties
+		descriptor='';
+		initpt    = 0.;
+		lower     =-Inf;
+		upper     = Inf;
+		scale_type='none';
+		scale     = 1.;
+	end
+
+	methods
+		function [cdv]=continuous_design(varargin)
+
+			switch nargin
+
+				%  create a default object
+
+				case 0
+
+					%  copy the object
+
+				case 1
+					if isa(varargin{1},'continuous_design')
+						cdv=varargin{1};
+					else
+						error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+							inputname(1),class(varargin{1}),'continuous_design');
+					end
+
+					%  create the object from the input
+
+				otherwise
+					asizec=num2cell(array_size(varargin{1:min(nargin,6)}));
+					cdv(asizec{:})=continuous_design;
+					clear asizec
+
+					if ischar(varargin{1})
+						varargin{1}=cellstr(varargin{1});
+					end
+					for i=1:numel(cdv)
+						if (numel(varargin{1}) > 1)
+							cdv(i).descriptor=varargin{1}{i};
+						else
+							cdv(i).descriptor=[char(varargin{1}) string_dim(cdv,i,'vector')];
+						end
+					end
+
+					if (nargin >= 2)
+						for i=1:numel(cdv)
+							if (numel(varargin{2}) > 1)
+								cdv(i).initpt    =varargin{2}(i);
+							else
+								cdv(i).initpt    =varargin{2};
+							end
+						end
+						if (nargin >= 3)
+							for i=1:numel(cdv)
+								if (numel(varargin{3}) > 1)
+									cdv(i).lower     =varargin{3}(i);
+								else
+									cdv(i).lower     =varargin{3};
+								end
+							end
+							if (nargin >= 4)
+								for i=1:numel(cdv)
+									if (numel(varargin{4}) > 1)
+										cdv(i).upper     =varargin{4}(i);
+									else
+										cdv(i).upper     =varargin{4};
+									end
+								end
+								if (nargin >= 5)
+									if ischar(varargin{5})
+										varargin{5}=cellstr(varargin{5});
+									end
+									for i=1:numel(cdv)
+										if (numel(varargin{5}) > 1)
+											cdv(i).scale_type=varargin{5}{i};
+										else
+											cdv(i).scale_type=char(varargin{5});
+										end
+									end
+									if (nargin >= 6)
+										for i=1:numel(cdv)
+											if (numel(varargin{6}) > 1)
+												cdv(i).scale     =varargin{6}(i);
+											else
+												cdv(i).scale     =varargin{6};
+											end
+										end
+										if (nargin > 6)
+											warning('continuous_design:extra_arg',...
+												'Extra arguments for object of class ''%s''.',...
+												class(cdv));
+										end
+									end
+								end
+							end
+						end
+					end
+			end
+
+		end
+
+		function []=disp(cdv)
+
+			%  display the object
+
+			disp(sprintf('\n'));
+			for i=1:numel(cdv)
+				disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+					class(cdv),inputname(1),string_dim(cdv,i)));
+				disp(sprintf('    descriptor: ''%s'''  ,cdv(i).descriptor));
+				disp(sprintf('        initpt: %g'      ,cdv(i).initpt));
+				disp(sprintf('         lower: %g'      ,cdv(i).lower));
+				disp(sprintf('         upper: %g'      ,cdv(i).upper));
+				disp(sprintf('    scale_type: ''%s'''  ,cdv(i).scale_type));
+				disp(sprintf('         scale: %g\n'    ,cdv(i).scale));
+			end
+
+		end
+
+		function [desc]  =prop_desc(cdv,dstr)
+			desc=cell(1,numel(cdv));
+			for i=1:numel(cdv)
+				if ~isempty(cdv(i).descriptor)
+					desc(i)=cellstr(cdv(i).descriptor);
+				elseif ~isempty(inputname(1))
+					desc(i)=cellstr([inputname(1) string_dim(cdv,i,'vector')]);
+				elseif exist('dstr','var')
+					desc(i)=cellstr([dstr         string_dim(cdv,i,'vector')]);
+				else
+					desc(i)=cellstr(['cdv'        string_dim(cdv,i,'vector')]);
+				end
+			end
+			desc=allempty(desc);
+		end
+		function [initpt]=prop_initpt(cdv)
+			initpt=zeros(1,numel(cdv));
+			for i=1:numel(cdv)
+				initpt(i)=cdv(i).initpt;
+			end
+			initpt=allequal(initpt,0.);
+		end
+		function [lower] =prop_lower(cdv)
+			lower=zeros(1,numel(cdv));
+			for i=1:numel(cdv)
+				lower(i)=cdv(i).lower;
+			end
+			lower=allequal(lower,-Inf);
+		end
+		function [upper] =prop_upper(cdv)
+			upper=zeros(1,numel(cdv));
+			for i=1:numel(cdv)
+				upper(i)=cdv(i).upper;
+			end
+			upper=allequal(upper, Inf);
+		end
+		function [mean]  =prop_mean(cdv)
+			mean=[];
+		end
+		function [stddev]=prop_stddev(cdv)
+			stddev=[];
+		end
+		function [initst]=prop_initst(cdv)
+			initst=[];
+		end
+		function [stype] =prop_stype(cdv)
+			stype=cell(1,numel(cdv));
+			for i=1:numel(cdv)
+				stype(i)=cellstr(cdv(i).scale_type);
+			end
+			stype=allequal(stype,'none');
+		end
+		function [scale] =prop_scale(cdv)
+			scale=zeros(1,numel(cdv));
+			for i=1:numel(cdv)
+				scale(i)=cdv(i).scale;
+			end
+			scale=allequal(scale,1.);
+		end
+		function [abscissas] =prop_abscissas(hbu) % {{{
+            abscissas=[]; 
+        end % }}}
+        function [counts] =prop_counts(hbu) % {{{
+            counts=[]; 
+        end % }}}
+        function [pairs_per_variable] =prop_pairs_per_variable(hbu) % {{{
+			pairs_per_variable=[];
+        end % }}}
+		function checkconsistency(self,md,solution,analyses) % {{{
+		end % }}}
+
+	end
+
+	methods (Static)
+		function []=dakota_write(fidi,dvar)
+
+			%  collect only the variables of the appropriate class
+
+			cdv=struc_class(dvar,'continuous_design');
+
+			%  write variables
+
+			vlist_write(fidi,'continuous_design','cdv',cdv);
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/continuous_design.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/continuous_design.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/continuous_design.py	(revision 27955)
@@ -0,0 +1,229 @@
+import numpy as np
+from vlist_write import *
+from MatlabArray import *
+
+
+class continuous_design(object):
+    '''
+  definition for the continuous_design class.
+
+  [cdv] = continuous_design.continuous_design(args)
+   cdv = continuous_design()
+
+  where the required args are:
+    descriptor    (char, description, '')
+    initpt        (double, initial point, 0.)
+  and the optional args and defaults are:
+    lower         (double, lower bound, -Inf)
+    upper         (double, upper bound, Inf)
+    scale_type    (char, scaling type, 'none')
+    scale         (double, scaling factor, 1.)
+
+  note that zero arguments constructs a default instance, one
+  argument of the class copies the instance, and two or more
+  arguments constructs a new instance from the arguments.
+'''
+
+    def __init__(self):
+        self.descriptor = ''
+        self.initpt = 0.
+        self.lower = -np.inf
+        self.upper = np.inf
+        self.scale_type = 'none'
+        self.scale = 1.
+
+    @staticmethod
+    def continuous_design(*args):
+        nargin = len(args)
+
+    #  create a default object
+        if nargin == 0:
+            return continuous_design()
+
+    #  copy the object
+        if nargin == 1:
+            if isinstance(args[0], continuous_design):
+                cdv = args[0]
+            else:
+                raise RuntimeError('Object is a ' + str(type(args[0])) + ' class object, not "continuous_design".')
+
+    #  create the object from the input
+        else:
+            shapec = array_size(*args[0:min(nargin, 6)])
+            cdv = [continuous_design() for i in range(shapec[0]) for j in range(shapec[1])]
+    # in case cdv doesn't use array - like args
+    #cdv = continuous_design()
+
+            for i in range(np.size(cdv)):
+                if (np.size(args[0]) > 1):
+                    cdv[i].descriptor = args[0][i]
+                else:
+                    cdv[i].descriptor = str(args[0]) + string_dim(cdv, i, 'vector')
+
+            if (nargin >= 2):
+                for i in range(np.size(cdv)):
+                    if (np.size(args[1]) > 1):
+                        cdv[i].initpt = args[1][i]
+                    else:
+                        cdv[i].initpt = args[1]
+
+            if (nargin >= 3):
+                for i in range(np.size(cdv)):
+                    if (np.size(args[2]) > 1):
+                        cdv[i].lower = args[2][i]
+                    else:
+                        cdv[i].lower = args[2]
+
+            if (nargin >= 4):
+                for i in range(np.size(cdv)):
+                    if (np.size(args[3]) > 1):
+                        cdv[i].upper = args[3][i]
+                    else:
+                        cdv[i].upper = args[3]
+
+            if (nargin >= 5):
+                for i in range(np.size(cdv)):
+                    if (np.size(args[4]) > 1):
+                        cdv[i].scale_type = args[4][i]
+                    else:
+                        cdv[i].scale_type = str(args[4])
+
+            if (nargin >= 6):
+                for i in range(np.size(cdv)):
+                    if (np.size(args[5]) > 1):
+                        cdv[i].scale = args[5][i]
+                    else:
+                        cdv[i].scale = args[5]
+
+            if (nargin > 6):
+                print('WARNING: continuous_design:extra_arg: Extra arguments for object of class ' + str(type(cdv)) + '.')
+
+        return cdv
+
+    def __repr__(self):
+        #  display the object
+        string = '\n'
+        string += 'class "continuous_design" object = \n'
+        string += '    descriptor: ' + str(self.descriptor) + '\n'
+        string += '        initpt: ' + str(self.initpt) + '\n'
+        string += '         lower: ' + str(self.lower) + '\n'
+        string += '         upper: ' + str(self.upper) + '\n'
+        string += '    scale_type: ' + str(self.scale_type) + '\n'
+        string += '         scale: ' + str(self.scale) + '\n'
+
+        return string
+
+    @staticmethod
+    def prop_desc(cdv, dstr):
+        if type(cdv) not in [list, np.ndarray]:
+            cdv = [cdv]
+    # in case cdv doesn't use array - like args
+    #if cdv.descriptor != '' or type(cdv.descriptor) != str:
+    #desc = str(cdv.descriptor)
+    #elif dstr != '':
+    #desc = str(dstr)
+    #else:
+    #desc = 'cdv'
+    #return desc
+
+        desc = ['' for i in range(np.size(cdv))]
+        for i in range(np.size(cdv)):
+            if cdv[i].descriptor != '' or type(cdv[i].descriptor) != str:
+                desc[i] = str(cdv[i].descriptor)
+            elif dstr != '':
+                desc[i] = str(dstr) + str(string_dim(cdv, i, 'vector'))
+            else:
+                desc[i] = 'cdv' + str(string_dim(cdv, i, 'vector'))
+
+        desc = allempty(desc)
+
+        return desc
+
+    @staticmethod
+    def prop_initpt(cdv):
+        if type(cdv) not in [list, np.ndarray]:
+            return cdv.initpt
+
+        initpt = np.zeros(np.size(cdv))
+        for i in range(np.size(cdv)):
+            initpt[i] = cdv[i].initpt
+
+        initpt = allequal(initpt, 0.)
+
+        return initpt
+
+    @staticmethod
+    def prop_lower(cdv):
+        if type(cdv) not in [list, np.ndarray]:
+            return cdv.lower
+
+        lower = np.zeros(np.size(cdv))
+        for i in range(np.size(cdv)):
+            lower[i] = cdv[i].lower
+
+        lower = allequal(lower, -np.inf)
+
+        return lower
+
+    @staticmethod
+    def prop_upper(cdv):
+        if type(cdv) not in [list, np.ndarray]:
+            return cdv.upper
+
+        upper = np.zeros(np.size(cdv))
+        for i in range(np.size(cdv)):
+            upper[i] = cdv[i].upper
+
+        upper = allequal(upper, np.inf)
+
+        return upper
+
+    @staticmethod
+    def prop_mean(cdv):
+        mean = []
+        return mean
+
+    @staticmethod
+    def prop_stddev(cdv):
+        stddev = []
+        return stddev
+
+    @staticmethod
+    def prop_initst(cdv):
+        initst = []
+        return initst
+
+    @staticmethod
+    def prop_stype(cdv):
+        if type(cdv) not in [list, np.ndarray]:
+            return str(cdv.scale_type)
+
+        stype = np.empty(np.size(cdv))
+        stype.fill(0.0)
+        for i in range(np.size(cdv)):
+            stype[i] = str(cdv[i].scale_type)
+
+        stype = allequal(stype, 'none')
+
+        return stype
+
+    @staticmethod
+    def prop_scale(cdv):
+        if type(cdv) not in [list, np.ndarray]:
+            return cdv.scale
+
+        scale = np.zeros(np.size(cdv))
+        for i in range(np.size(cdv)):
+            scale[i] = cdv[i].scale
+
+        scale = allequal(scale, 1.)
+
+        return scale
+
+    @staticmethod
+    def dakota_write(fidi, dvar):
+        #  collect only the variables of the appropriate class
+        cdv = [struc_class(i, 'continuous_design', 'cdv') for i in dvar]
+
+    #  write variables
+        vlist_write(fidi, 'continuous_design', 'cdv', cdv)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/continuous_state.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/continuous_state.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/continuous_state.m	(revision 27955)
@@ -0,0 +1,203 @@
+%
+%  definition for the continuous_state class.
+%
+%  [csv]=continuous_state(varargin)
+%
+%  where the required varargin are:
+%    descriptor    (char, description, '')
+%    initst        (double, initial state, 0.)
+%  and the optional varargin and defaults are:
+%    lower         (double, lower bound, -Inf)
+%    upper         (double, upper bound,  Inf)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef continuous_state
+    properties
+        descriptor='';
+        initst    = 0.;
+        lower     =-Inf;
+        upper     = Inf;
+    end
+
+    methods
+        function [csv]=continuous_state(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object
+
+                case 1
+                    if isa(varargin{1},'continuous_state')
+                        csv=varargin{1};
+                    else
+                        error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+                            inputname(1),class(varargin{1}),'continuous_state');
+                    end
+
+%  create the object from the input
+
+                otherwise
+                    asizec=num2cell(array_size(varargin{1:min(nargin,4)}));
+                    csv(asizec{:})=continuous_state;
+                    clear asizec
+
+                    if ischar(varargin{1})
+                        varargin{1}=cellstr(varargin{1});
+                    end
+                    for i=1:numel(csv)
+                        if (numel(varargin{1}) > 1)
+                            csv(i).descriptor=varargin{1}{i};
+                        else
+                            csv(i).descriptor=[char(varargin{1}) string_dim(csv,i,'vector')];
+                        end
+                    end
+
+                    if (nargin >= 2)
+                        for i=1:numel(csv)
+                            if (numel(varargin{2}) > 1)
+                                csv(i).initst    =varargin{2}(i);
+                            else
+                                csv(i).initst    =varargin{2};
+                            end
+                        end
+                        if (nargin >= 3)
+                            for i=1:numel(csv)
+                                if (numel(varargin{3}) > 1)
+                                    csv(i).lower     =varargin{3}(i);
+                                else
+                                    csv(i).lower     =varargin{3};
+                                end
+                            end
+                            if (nargin >= 4)
+                                for i=1:numel(csv)
+                                    if (numel(varargin{4}) > 1)
+                                        csv(i).upper     =varargin{4}(i);
+                                    else
+                                        csv(i).upper     =varargin{4};
+                                    end
+                                end
+                                if (nargin > 4)
+                                    warning('continuous_state:extra_arg',...
+                                        'Extra arguments for object of class ''%s''.',...
+                                        class(csv));
+                                end
+                            end
+                        end
+                    end
+            end
+
+        end
+
+        function []=disp(csv)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(csv)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(csv),inputname(1),string_dim(csv,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,csv(i).descriptor));
+                disp(sprintf('        initst: %g'      ,csv(i).initst));
+                disp(sprintf('         lower: %g'      ,csv(i).lower));
+                disp(sprintf('         upper: %g\n'    ,csv(i).upper));
+            end
+
+        end
+
+        function [desc]  =prop_desc(csv,dstr)
+            desc=cell(1,numel(csv));
+            for i=1:numel(csv)
+                if ~isempty(csv(i).descriptor)
+                    desc(i)=cellstr(csv(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(csv,i,'vector')]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(csv,i,'vector')]);
+                else
+                    desc(i)=cellstr(['csv'        string_dim(csv,i,'vector')]);
+                end
+            end
+            desc=allempty(desc);
+        end
+        function [initpt]=prop_initpt(csv)
+            initpt=[];
+        end
+        function [lower] =prop_lower(csv)
+            lower=zeros(1,numel(csv));
+            for i=1:numel(csv)
+                lower(i)=csv(i).lower;
+            end
+            lower=allequal(lower,-Inf);
+        end
+        function [upper] =prop_upper(csv)
+            upper=zeros(1,numel(csv));
+            for i=1:numel(csv)
+                upper(i)=csv(i).upper;
+            end
+            upper=allequal(upper, Inf);
+        end
+        function [mean]  =prop_mean(csv)
+            mean=[];
+        end
+        function [stddev]=prop_stddev(csv)
+            stddev=[];
+        end
+        function [initst]=prop_initst(csv)
+            initst=zeros(1,numel(csv));
+            for i=1:numel(csv)
+                initst(i)=csv(i).initst;
+            end
+            initst=allequal(initst,0.);
+        end
+        function [stype] =prop_stype(csv)
+            stype={};
+        end
+        function [scale] =prop_scale(csv)
+            scale=[];
+        end
+		function [abscissas] =prop_abscissas(hbu) % {{{
+            abscissas=[]; 
+        end % }}}
+		function [counts] =prop_counts(hbu) % {{{
+            counts=[]; 
+        end % }}}
+        function [pairs_per_variable] =prop_pairs_per_variable(hbu) % {{{
+			pairs_per_variable=[];
+        end % }}}
+
+
+    end
+
+    methods (Static)
+        function []=dakota_write(fidi,dvar)
+
+%  collect only the variables of the appropriate class
+
+            csv=struc_class(dvar,'continuous_state');
+
+%  write variables
+
+            vlist_write(fidi,'continuous_state','csv',csv);
+        end
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/continuous_state.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/continuous_state.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/continuous_state.py	(revision 27955)
@@ -0,0 +1,182 @@
+import numpy as np
+from vlist_write import *
+from MatlabArray import *
+
+
+class continuous_state(object):
+    '''
+  definition for the continuous_state class.
+
+  [csv] = continuous_state.continuous_state(args)
+   csv = continuous_state()
+
+  where the required args are:
+    descriptor    (char, description, '')
+    initst        (double, initial state, 0.)
+  and the optional args and defaults are:
+    lower         (double, lower bound, -Inf)
+    upper         (double, upper bound, Inf)
+
+  note that zero arguments constructs a default instance, one
+  argument of the class copies the instance, and two or more
+  arguments constructs a new instance from the arguments.
+'''
+
+    def __init__(self):
+        self.descriptor = ''
+        self.initst = 0.
+        self.lower = -np.inf
+        self.upper = np.inf
+
+    @staticmethod
+    def continuous_state(*args):
+        nargin = len(args)
+
+        #  create a default object
+        if nargin == 0:
+            return continuous_state()
+
+        #  copy the object
+        if nargin == 1:
+            if isinstance(args[0], continuous_state):
+                csv = args[0]
+            else:
+                raise RuntimeError('Object is a ' + str(type(args[0])) + ' class object, not "continuous_state".')
+
+        #  create the object from the input
+        else:
+            shapec = np.shape(*args[0:min(nargin, 4)])
+            csv = [continuous_state() for i in range(shapec[0]) for j in range(shapec[1])]
+
+            for i in range(np.size(csv)):
+                if (np.size(args[0]) > 1):
+                    csv[i].descriptor = args[0][i]
+                else:
+                    csv[i].descriptor = str(args[0]) + string_dim(csv, i, 'vector')
+
+            if (nargin >= 2):
+                for i in range(np.size(csv)):
+                    if (np.size(args[1]) > 1):
+                        csv[i].initst = args[1][i]
+                    else:
+                        csv[i].initst = args[1]
+
+            if (nargin >= 3):
+                for i in range(np.size(csv)):
+                    if (np.size(args[2]) > 1):
+                        csv[i].lower = args[2][i]
+                    else:
+                        csv[i].lower = args[2]
+
+            if (nargin >= 4):
+                for i in range(np.size(csv)):
+                    if (np.size(args[3]) > 1):
+                        csv[i].upper = args[3][i]
+                    else:
+                        csv[i].upper = args[3]
+
+            if (nargin > 4):
+                print('continuous_state:extra_arg', 'Extra arguments for object of class ' + str(type(csv)) + '.')
+
+        return csv
+
+    def __repr__(self):
+        #  display the object
+        string = '\n'
+        string += 'class "continuous_state" object = \n'
+        string += '    descriptor: ' + str(self.descriptor) + '\n'
+        string += '        initst: ' + str(self.initst) + '\n'
+        string += '         lower: ' + str(self.lower) + '\n'
+        string += '         upper: ' + str(self.upper) + '\n'
+
+        return string
+
+    @staticmethod
+    def prop_desc(csv, dstr):
+        if type(csv) not in [list, np.ndarray]:
+            csv = [csv]
+
+        desc = ['' for i in range(np.size(csv))]
+        for i in range(np.size(csv)):
+            if csv[i].descriptor != '' or type(cdv[i].descriptor) != str:
+                desc[i] = str(csv[i].descriptor)
+            elif dstr != '':
+                desc[i] = str(dstr) + str(string_dim(csv, i, 'vector'))
+            else:
+                desc[i] = 'csv' + str(string_dim(csv, i, 'vector'))
+
+        desc = allempty(desc)
+
+        return desc
+
+    @staticmethod
+    def prop_initpt(csv):
+        initpt = []
+        return initpt
+
+    @staticmethod
+    def prop_lower(csv):
+        if type(csv) not in [list, np.ndarray]:
+            return csv.lower
+
+        lower = np.zeros(np.size(csv))
+        for i in range(np.size(csv)):
+            lower[i] = csv[i].lower
+
+        lower = allequal(lower, -np.inf)
+
+        return lower
+
+    @staticmethod
+    def prop_upper(csv):
+        if type(csv) not in [list, np.ndarray]:
+            return csv.upper
+
+        upper = np.zeros(np.size(csv))
+        for i in range(np.size(csv)):
+            upper[i] = csv[i].upper
+
+        upper = allequal(upper, np.inf)
+
+        return upper
+
+    @staticmethod
+    def prop_mean(csv):
+        mean = []
+        return mean
+
+    @staticmethod
+    def prop_stddev(csv):
+        stddev = []
+        return stddev
+
+    @staticmethod
+    def prop_initst(csv):
+        if type(csv) not in [list, np.ndarray]:
+            return csv.initst
+
+        initst = np.zeros(np.size(csv))
+        for i in range(np.size(csv)):
+            initst[i] = csv[i].initst
+
+        initst = allequal(initst, 0.)
+
+        return initst
+
+    @staticmethod
+    def prop_stype(csv):
+        stype = ''
+        return stype
+
+    @staticmethod
+    def prop_scale(csv):
+        scale = []
+        return scale
+
+    @staticmethod
+    def dakota_write(fidi, dvar):
+        #  collect only the variables of the appropriate class
+        csv = [struc_class(i, 'continuous_state', 'csv') for i in dvar]
+
+        #  write variables
+        vlist_write(fidi, 'continuous_state', 'csv', csv)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dakota_method.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dakota_method.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dakota_method.m	(revision 27955)
@@ -0,0 +1,897 @@
+%
+%  definition for the dakota_method class.
+%
+%  [dm]=dakota_method(method)
+%
+%  where the required input is:
+%    method       (char, beginning of method name)
+%
+%  and the output properties and defaults are:
+%    method       (char, full method name, '')
+%    type         (char, type of method, '')
+%    variables    (cell array, applicable variable types, {})
+%    lcspec       (cell array, linear constraint specs, {})
+%    responses    (cell array, applicable response types, {})
+%    ghspec       (cell array, gradient and hessian specs, {})
+%    params       (structure, method-dependent parameters, [])
+%
+%  this class is used to guide the writing of a dakota input
+%  file for the specified dakota_method.
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and one argument
+%  with enough characters to match a unique method constructs
+%  a new instance of that method.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef dakota_method
+    properties (SetAccess=private)
+        method   ='';
+        type     ='';
+        variables={};
+        lcspec   ={};
+        responses={};
+        ghspec   ={};
+    end
+    properties
+        params   =struct();
+    end
+
+    methods
+        function [dm]=dakota_method(method)
+
+            switch nargin
+                case 0
+						 %  create a default object
+                case 1
+						 %  copy the object or create the object from the input
+                    if  (nargin == 1) && isa(method,'dakota_method')
+                        dm=method;
+                    else
+                        mlist={...
+									'dot_bfgs',...
+									'dot_frcg',...
+									'dot_mmfd',...
+									'dot_slp',...
+									'dot_sqp',...
+									'npsol_sqp',...
+									'conmin_frcg',...
+									'conmin_mfd',...
+									'optpp_cg',...
+									'optpp_q_newton',...
+									'optpp_fd_newton',...
+									'optpp_newton',...
+									'optpp_pds',...
+									'asynch_pattern_search',...
+									'coliny_cobyla',...
+									'coliny_direct',...
+									'coliny_ea',...
+									'coliny_pattern_search',...
+									'coliny_solis_wets',...
+									'ncsu_direct',...
+									'surrogate_based_local',...
+									'surrogate_based_global',...
+									'moga',...
+									'soga',...
+									'nl2sol',...
+									'nlssol_sqp',...
+									'optpp_g_newton',...
+									'nond_sampling',...
+									'nond_local_reliability',...
+									'nond_global_reliability',...
+									'nond_polynomial_chaos',...
+									'nond_stoch_collocation',...
+									'nond_evidence',...
+									'dace',...
+									'fsu_quasi_mc',...
+									'fsu_cvt',...
+									'vector_parameter_study',...
+									'list_parameter_study',...
+									'centered_parameter_study',...
+									'multidim_parameter_study',...
+									'bayes_calibration',...
+									'polynomial_chaos',...
+                            };
+
+                        mlist2={};
+                        for i=1:length(mlist)
+                            if strncmpi(method,mlist{i},length(method))
+                                mlist2(end+1)=mlist(i);
+                            end
+                        end
+
+								%  check for a unique match in the list of methods
+                        switch length(mlist2)
+                            case 0
+                                error(['Unrecognized method: ''' method '''']);
+                            case 1
+                                dm.method=mlist2{1};
+                            otherwise
+                                error('Non-unique method: ''%s'' matches %s.',...
+                                    method,string_cell(mlist2));
+                        end
+
+								%  assign the default values for the method
+                        switch dm.method
+                            case {'dot_bfgs','dot_frcg'}
+                                dm.type     ='dot';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.constraint_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+                                dm.params.optimization_type='minimize';
+                            case {'dot_mmfd',...
+                                  'dot_slp',...
+                                  'dot_sqp'}
+                                dm.type     ='dot';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.constraint_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+                                dm.params.optimization_type='minimize';
+
+                            case {'npsol_sqp'}
+                                dm.type     ='npsol';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.constraint_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+                                dm.params.verify_level=-1;
+                                dm.params.function_precision=1.e-10;
+                                dm.params.linesearch_tolerance=0.9;
+
+                            case {'conmin_frcg'}
+                                dm.type     ='conmin';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.constraint_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+                            case {'conmin_mfd'}
+                                dm.type     ='conmin';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.constraint_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+
+                            case {'optpp_cg'}
+                                dm.type     ='optpp';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+                                dm.params.max_step=1000.;
+                                dm.params.gradient_tolerance=1.e-4;
+                            case {'optpp_q_newton',...
+                                  'optpp_fd_newton',...
+                                  'optpp_newton'}
+                                dm.type     ='optpp';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+                                dm.params.value_based_line_search=false;
+                                dm.params.gradient_based_line_search=false;
+                                dm.params.trust_region=false;
+                                dm.params.tr_pds=false;
+                                dm.params.max_step=1000.;
+                                dm.params.gradient_tolerance=1.e-4;
+                                dm.params.merit_function='argaez_tapia';
+                                dm.params.central_path=dm.params.merit_function;
+                                dm.params.steplength_to_boundary=0.99995;
+                                dm.params.centering_parameter=0.2;
+                            case {'optpp_pds'}
+                                dm.type     ='optpp';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+                                dm.params.search_scheme_size=32;
+
+                            case {'asynch_pattern_search'}
+                                dm.type     ='apps';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_function_evaluations=false;
+                                dm.params.constraint_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.scaling=false;
+                                dm.params.initial_delta=1.0;
+                                dm.params.threshold_delta=0.01;
+                                dm.params.contraction_factor=0.5;
+                                dm.params.solution_target=false;
+                                dm.params.synchronization='nonblocking';
+                                dm.params.merit_function='merit2_smooth';
+                                dm.params.constraint_penalty=1.0;
+                                dm.params.smoothing_factor=1.0;
+
+                            case {'coliny_cobyla'}
+                                dm.type     ='coliny';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.scaling=false;
+                                dm.params.show_misc_options=false;
+                                dm.params.misc_options={};
+                                dm.params.solution_accuracy=-Inf;
+                                dm.params.initial_delta=[];
+                                dm.params.threshold_delta=[];
+                            case {'coliny_direct'}
+                                dm.type     ='coliny';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.scaling=false;
+                                dm.params.show_misc_options=false;
+                                dm.params.misc_options={};
+                                dm.params.solution_accuracy=-Inf;
+                                dm.params.division='major_dimension';
+                                dm.params.global_balance_parameter=0.0;
+                                dm.params.local_balance_parameter=1.e-8;
+                                dm.params.max_boxsize_limit=0.0;
+                                dm.params.min_boxsize_limit=0.0001;
+                                dm.params.constraint_penalty=1000.0;
+                            case {'coliny_ea'}
+                                dm.type     ='coliny';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.scaling=false;
+                                dm.params.show_misc_options=false;
+                                dm.params.misc_options={};
+                                dm.params.solution_accuracy=-Inf;
+                                dm.params.seed=false;
+                                dm.params.population_size=50;
+                                dm.params.initialization_type='unique_random';
+                                dm.params.fitness_type='linear_rank';
+                                dm.params.replacement_type='elitist';
+                                dm.params.random=[];
+                                dm.params.chc=[];
+                                dm.params.elitist=[];
+                                dm.params.new_solutions_generated='population_size - replacement_size';
+                                dm.params.crossover_type='two_point';
+                                dm.params.crossover_rate=0.8;
+                                dm.params.mutation_type='offset_normal';
+                                dm.params.mutation_scale=0.1;
+                                dm.params.mutation_range=1;
+                                dm.params.dimension_ratio=1.0;
+                                dm.params.mutation_rate=1.0;
+                                dm.params.non_adaptive=false;
+                            case {'coliny_pattern_search'}
+                                dm.type     ='coliny';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.scaling=false;
+                                dm.params.show_misc_options=false;
+                                dm.params.misc_options={};
+                                dm.params.solution_accuracy=-Inf;
+                                dm.params.stochastic=false;
+                                dm.params.seed=false;
+                                dm.params.initial_delta=[];
+                                dm.params.threshold_delta=[];
+                                dm.params.constraint_penalty=1.0;
+                                dm.params.constant_penalty=false;
+                                dm.params.pattern_basis='coordinate';
+                                dm.params.total_pattern_size=false;
+                                dm.params.no_expansion=false;
+                                dm.params.expand_after_success=1;
+                                dm.params.contraction_factor=0.5;
+                                dm.params.synchronization='nonblocking';
+                                dm.params.exploratory_moves='basic_pattern';
+                            case {'coliny_solis_wets'}
+                                dm.type     ='coliny';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.scaling=false;
+                                dm.params.show_misc_options=false;
+                                dm.params.misc_options={};
+                                dm.params.solution_accuracy=-Inf;
+                                dm.params.seed=false;
+                                dm.params.initial_delta=[];
+                                dm.params.threshold_delta=[];
+                                dm.params.no_expansion=false;
+                                dm.params.expand_after_success=5;
+                                dm.params.contract_after_failure=3;
+                                dm.params.contraction_factor=0.5;
+                                dm.params.constraint_penalty=1.0;
+                                dm.params.constant_penalty=false;
+
+                            case {'ncsu_direct'}
+                                dm.type     ='ncsu';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};  %  ?
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};  %  ?
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.scaling=false;
+                                dm.params.solution_accuracy=0.;
+                                dm.params.min_boxsize_limit=1.e-8;
+                                dm.params.vol_boxsize_limit=1.e-8;
+
+%                             case {'surrogate_based_local',...
+%                                   'surrogate_based_global'}
+
+                            case {'moga'}
+                                dm.type     ='jega';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.output=false;
+                                dm.params.scaling=false;
+                                dm.params.seed=false;
+                                dm.params.log_file='JEGAGlobal.log';
+                                dm.params.population_size=50;
+                                dm.params.print_each_pop=false;
+%                               according to documentation, uses method-independent control
+%                               dm.params.output='normal';
+                                dm.params.initialization_type='unique_random';
+                                dm.params.mutation_type='replace_uniform';
+                                dm.params.mutation_scale=0.15;
+                                dm.params.mutation_rate=0.08;
+                                dm.params.replacement_type='';
+                                dm.params.below_limit=6;
+                                dm.params.shrinkage_percentage=0.9;
+                                dm.params.crossover_type='shuffle_random';
+                                dm.params.multi_point_binary=[];
+                                dm.params.multi_point_parameterized_binary=[];
+                                dm.params.multi_point_real=[];
+                                dm.params.shuffle_random=[];
+                                dm.params.num_parents=2;
+                                dm.params.num_offspring=2;
+                                dm.params.crossover_rate=0.8;
+                                dm.params.fitness_type='';
+                                dm.params.niching_type=false;
+                                dm.params.radial=[0.01];
+                                dm.params.distance=[0.01];
+                                dm.params.metric_tracker=false;
+                                dm.params.percent_change=0.1;
+                                dm.params.num_generations=10;
+                                dm.params.postprocessor_type=false;
+                                dm.params.orthogonal_distance=[0.01];
+                            case {'soga'}
+                                dm.type     ='jega';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.output=false;
+                                dm.params.scaling=false;
+                                dm.params.seed=false;
+                                dm.params.log_file='JEGAGlobal.log';
+                                dm.params.population_size=50;
+                                dm.params.print_each_pop=false;
+                                dm.params.output='normal';
+                                dm.params.initialization_type='unique_random';
+                                dm.params.mutation_type='replace_uniform';
+                                dm.params.mutation_scale=0.15;
+                                dm.params.mutation_rate=0.08;
+                                dm.params.replacement_type='';
+                                dm.params.below_limit=6;
+                                dm.params.shrinkage_percentage=0.9;
+                                dm.params.crossover_type='shuffle_random';
+                                dm.params.multi_point_binary=[];
+                                dm.params.multi_point_parameterized_binary=[];
+                                dm.params.multi_point_real=[];
+                                dm.params.shuffle_random=[];
+                                dm.params.num_parents=2;
+                                dm.params.num_offspring=2;
+                                dm.params.crossover_rate=0.8;
+                                dm.params.fitness_type='merit_function';
+                                dm.params.constraint_penalty=1.0;
+                                dm.params.replacement_type='';
+                                dm.params.convergence_type=false;
+                                dm.params.num_generations=10;
+                                dm.params.percent_change=0.1;
+
+                            case {'nl2sol'}
+                                dm.type     ='lsq';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'least_squares_term'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.scaling=false;
+                                dm.params.function_precision=1.e-10;
+                                dm.params.absolute_conv_tol=-1.;
+                                dm.params.x_conv_tol=-1.;
+                                dm.params.singular_conv_tol=-1.;
+                                dm.params.singular_radius=-1.;
+                                dm.params.false_conv_tol=-1.;
+                                dm.params.initial_trust_radius=-1.;
+                                dm.params.covariance=0;
+                                dm.params.regression_stressbalances=false;
+                            case {'nlssol_sqp'}
+                                dm.type     ='lsq';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'least_squares_term',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.constraint_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+                                dm.params.verify_level=-1;
+                                dm.params.function_precision=1.e-10;
+                                dm.params.linesearch_tolerance=0.9;
+                            case {'optpp_g_newton'}
+                                dm.type     ='lsq';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'least_squares_term',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
+                                dm.ghspec   ={'grad'};
+                                dm.params.max_iterations=false;
+                                dm.params.max_function_evaluations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.output=false;
+                                dm.params.speculative=false;
+                                dm.params.scaling=false;
+                                dm.params.value_based_line_search=false;
+                                dm.params.gradient_based_line_search=false;
+                                dm.params.trust_region=false;
+                                dm.params.tr_pds=false;
+                                dm.params.max_step=1000.;
+                                dm.params.gradient_tolerance=1.e-4;
+                                dm.params.merit_function='argaez_tapia';
+                                dm.params.central_path=dm.params.merit_function;
+                                dm.params.steplength_to_boundary=0.99995;
+                                dm.params.centering_parameter=0.2;
+
+                            case {'nond_sampling'}
+                                dm.type     ='nond';
+                                dm.variables={'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'histogram_bin_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'response_function'};
+                                dm.ghspec   ={};
+%                               not documented, but apparently works
+                                dm.params.output=false;
+                                dm.params.seed=false;
+                                dm.params.fixed_seed=false;
+                                dm.params.rng=false;
+                                dm.params.samples=false;
+                                dm.params.sample_type='lhs';
+                                dm.params.all_variables=false;
+                                dm.params.variance_based_decomp=false;
+                                dm.params.previous_samples=0;
+                            case {'nond_local_reliability'}
+                                dm.type     ='nond';
+                                dm.variables={'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'response_function'};
+                                dm.ghspec   ={'grad'};
+%                               not documented, but may work
+                                dm.params.output=false;
+                                dm.params.max_iterations=false;
+                                dm.params.convergence_tolerance=false;
+                                dm.params.mpp_search=false;
+                                dm.params.sqp=false;
+                                dm.params.nip=false;
+                                dm.params.integration='first_order';
+                                dm.params.refinement=false;
+                                dm.params.samples=0;
+                                dm.params.seed=false;
+                            case {'nond_global_reliability'}
+                                dm.type     ='nond';
+                                dm.variables={'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'response_function'};
+                                dm.ghspec   ={'grad'};
+%                               not documented, but may work
+                                dm.params.output=false;
+                                dm.params.x_gaussian_process=false;
+                                dm.params.u_gaussian_process=false;
+                                dm.params.all_variables=false;
+                                dm.params.seed=false;
+                            case {'nond_polynomial_chaos'}
+                                dm.type     ='nond';
+                                dm.variables={'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'response_function'};
+                                dm.ghspec   ={'grad'};
+%                               not documented, but may work
+                                dm.params.output=false;
+                                dm.params.expansion_order=[];
+                                dm.params.expansion_terms=[];
+                                dm.params.quadrature_order=[];
+                                dm.params.sparse_grid_level=[];
+                                dm.params.expansion_samples=[];
+                                dm.params.incremental_lhs=false;
+                                dm.params.collocation_points=[];
+                                dm.params.collocation_ratio=[];
+                                dm.params.reuse_samples=false;
+                                dm.params.expansion_import_file='';
+                                dm.params.seed=false;
+                                dm.params.fixed_seed=false;
+                                dm.params.samples=0;
+                                dm.params.sample_type='lhs';
+                                dm.params.all_variables=false;
+                            case {'nond_stoch_collocation'}
+                                dm.type     ='nond';
+                                dm.variables={'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'response_function'};
+                                dm.ghspec   ={'grad'};
+%                               not documented, but may work
+                                dm.params.output=false;
+                                dm.params.quadrature_order=[];
+                                dm.params.sparse_grid_level=[];
+                                dm.params.seed=false;
+                                dm.params.fixed_seed=false;
+                                dm.params.samples=0;
+                                dm.params.sample_type='lhs';
+                                dm.params.all_variables=false;
+                            case {'nond_evidence'}
+                                dm.type     ='nond';
+                                dm.variables={'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'response_function'};
+                                dm.ghspec   ={'grad'};
+%                               not documented, but may work
+                                dm.params.output=false;
+                                dm.params.seed=false;
+                                dm.params.samples=10000;
+
+                            case {'dace'}
+                                dm.type     ='dace';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
+                                dm.ghspec   ={};
+                                dm.params.grid=false;
+                                dm.params.random=false;
+                                dm.params.oas=false;
+                                dm.params.lhs=false;
+                                dm.params.oa_lhs=false;
+                                dm.params.box_behnken=false;
+                                dm.params.central_composite=false;
+                                dm.params.seed=false;
+                                dm.params.fixed_seed=false;
+                                dm.params.samples=false;
+                                dm.params.symbols=false;
+                                dm.params.quality_metrics=false;
+                                dm.params.variance_based_decomp=false;
+                            case {'fsu_quasi_mc'}
+                                dm.type     ='dace';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
+                                dm.ghspec   ={};
+                                dm.params.halton=false;
+                                dm.params.hammersley=false;
+                                dm.params.samples=0;
+                                dm.params.sequence_start=[0];
+                                dm.params.sequence_leap=[1];
+                                dm.params.prime_base=false;
+                                dm.params.fixed_sequence=false;
+                                dm.params.latinize=false;
+                                dm.params.variance_based_decomp=false;
+                                dm.params.quality_metrics=false;
+                            case {'fsu_cvt'}
+                                dm.type     ='dace';
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
+                                dm.ghspec   ={};
+                                dm.params.seed=false;
+                                dm.params.fixed_seed=false;
+                                dm.params.samples=0;
+                                dm.params.num_trials=10000;
+                                dm.params.trial_type='random';
+                                dm.params.latinize=false;
+                                dm.params.variance_based_decomp=false;
+                                dm.params.quality_metrics=false;
+
+                            case {'vector_parameter_study'}
+                                dm.type     ='param';
+                                dm.variables={'continuous_design',...
+                                              'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
+                                dm.ghspec   ={};
+                                dm.params.output=false;
+                                dm.params.final_point=[];
+                                dm.params.step_length=[];
+                                dm.params.num_steps=[];
+                                dm.params.step_vector=[];
+                                dm.params.num_steps=[];
+                            case {'list_parameter_study'}
+                                dm.type     ='param';
+                                dm.variables={'continuous_design',...
+                                              'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
+                                dm.ghspec   ={};
+                                dm.params.output=false;
+                                dm.params.list_of_points=[];
+                            case {'centered_parameter_study'}
+                                dm.type     ='param';
+                                dm.variables={'continuous_design',...
+                                              'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
+                                dm.ghspec   ={};
+                                dm.params.output=false;
+                                dm.params.percent_delta=[];
+                                dm.params.deltas_per_variable=[];
+                            case {'multidim_parameter_study'}
+                                dm.type     ='param';
+                                dm.variables={'continuous_design',...
+                                              'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
+                                dm.ghspec   ={};
+                                dm.params.output=false;
+                                dm.params.partitions=[];
+                            case {'bayes_calibration'}
+                                dm.type     ='bayes';
+                                dm.variables={'continuous_design',...
+                                              'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function',...
+															'calibration_function'};
+                                dm.ghspec   ={};
+                                dm.params.queso=false;
+										  dm.params.dream=false;
+										  dm.params.gpmsa=false;
+                                dm.params.samples=0;
+										  dm.params.seed=false;
+										  dm.params.output=false;
+										  dm.params.metropolis_hastings=false;
+										  dm.params.proposal_covariance=false;
+										  dm.params.diagonal=false;
+										  dm.params.values=[];
+									  case {'polynomial_chaos'}
+										  dm.type     ='polynomial_chaos';
+										  dm.params.sparse_grid_level = 3;
+										  dm.params.dimension_adaptive = 'whoops';
+										  dm.responses={'objective_function',...
+											  'response_function',...
+											  'calibration_function'};
+										  dm.variables={'normal_uncertain',...
+											  'uniform_uncertain',...
+											  'continuous_state'};
+                            otherwise
+                                error('Unimplemented method: ''%s''.',dm.method);
+                        end
+
+                    end
+
+%  if more than one argument, issue warning
+
+                otherwise
+                    warning('dakota_method:extra_arg',...
+                        'Extra arguments for object of class ''%s''.',...
+                        class(dm));
+            end
+
+        end
+
+        function []=disp(dm)
+
+%  display the object
+
+            for i=1:numel(dm)
+                disp(sprintf('\nclass ''%s'' object ''%s%s'' = \n',...
+                    class(dm),inputname(1),string_dim(dm,i)));
+                disp(sprintf('       method: ''%s'''  ,dm(i).method));
+                disp(sprintf('         type: ''%s'''  ,dm(i).type));
+                disp(sprintf('    variables: %s'      ,string_cell(dm(i).variables)));
+                disp(sprintf('       lcspec: %s'      ,string_cell(dm(i).lcspec)));
+                disp(sprintf('    responses: %s'      ,string_cell(dm(i).responses)));
+                disp(sprintf('       ghspec: %s\n'    ,string_cell(dm(i).ghspec)));
+
+%  display the parameters within the object
+
+                fnames=fieldnames(dm(i).params);
+                maxlen=0;
+                for j=1:numel(fnames)
+                    maxlen=max(maxlen,length(fnames{j}));
+                end
+
+                for j=1:numel(fnames)
+                    disp(sprintf(['       params.%-' num2str(maxlen+1) 's: %s'],...
+                        fnames{j},any2str(dm(i).params.(fnames{j}))));
+                end
+            end
+
+        end
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dakota_method.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dakota_method.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dakota_method.py	(revision 27955)
@@ -0,0 +1,906 @@
+#move this later
+from helpers import *
+
+from MatlabFuncs import *
+import numpy as np
+
+
+class dakota_method(object):
+    '''
+  definition for the dakota_method class.
+
+  [dm] = dakota_method(method)
+
+  where the required input is:
+    method       (char, beginning of method name)
+
+  and the output properties and defaults are:
+    method       (char, full method name, '')
+    type         (char, type of method, '')
+    variables    (cell array, applicable variable types, [])
+    lcspec       (cell array, linear constraint specs, [])
+    responses    (cell array, applicable response types, [])
+    ghspec       (cell array, gradient and hessian specs, [])
+    params       (structure, method - depent parameters, [])
+
+  this class is used to guide the writing of a dakota input
+  file for the specified dakota_method.
+
+  note that zero arguments constructs a default instance one
+  argument of the class copies the instance and one argument
+  with enough characters to match a unique method constructs
+  a new instance of that method.
+
+  "Copyright 2009, by the California Institute of Technology.
+  ALL RIGHTS RESERVED. United States Government Sponsorship
+  acknowledged. Any commercial use must be negotiated with
+  the Office of Technology Transfer at the California Institute
+  of Technology.  (J. Schiermeier, NTR 47078)
+
+  This software may be subject to U.S. export control laws.
+  By accepting this  software, the user agrees to comply with
+  all applicable U.S. export laws and regulations. User has the
+  responsibility to obtain export licenses, or other export
+  authority as may be required before exporting such np.information
+  to foreign countries or providing access to foreign persons."
+    '''
+
+    def __init__(self, *args):
+        self.method = ''
+        self.type = ''
+        self.variables = []
+        self.lcspec = []
+        self.responses = []
+        self.ghspec = []
+    #properites
+        self.params = struct()
+
+    @staticmethod
+    def dakota_method(*args):
+        dm = dakota_method()
+    #  return a default object
+        if len(args) == 0:
+            return dm
+
+    #  copy the object or create the object from the input
+        elif len(args) == 1:
+            method = args[0]
+
+            #given argument was a method, copy it
+            if isinstance(method, dakota_method):
+                #dm = method
+                object = method
+                for field in object.keys():
+                    if field in vars(dm):
+                        setattr(dm, field, object[field])
+                return dm
+
+    #given argument was a way of constructing a method
+            else:
+                mlist = ['dot_bfgs',
+                         'dot_frcg',
+                         'dot_mmfd',
+                         'dot_slp',
+                         'dot_sqp',
+                         'npsol_sqp',
+                         'conmin_frcg',
+                         'conmin_mfd',
+                         'optpp_cg',
+                         'optpp_q_newton',
+                         'optpp_fd_newton',
+                         'optpp_newton',
+                         'optpp_pds',
+                         'asynch_pattern_search',
+                         'coliny_cobyla',
+                         'coliny_direct',
+                         'coliny_ea',
+                         'coliny_pattern_search',
+                         'coliny_solis_wets',
+                         'ncsu_direct',
+                         'surrogate_based_local',
+                         'surrogate_based_global',
+                         'moga',
+                         'soga',
+                         'nl2sol',
+                         'nlssol_sqp',
+                         'optpp_g_newton',
+                         'nond_sampling',
+                         'nond_local_reliability',
+                         'nond_global_reliability',
+                         'nond_polynomial_chaos',
+                         'nond_stoch_collocation',
+                         'nond_evidence',
+                         'dace',
+                         'fsu_quasi_mc',
+                         'fsu_cvt',
+                         'vector_parameter_study',
+                         'list_parameter_study',
+                         'centered_parameter_study',
+                         'multidim_parameter_study',
+                         'bayes_calibration']
+
+                mlist2 = []
+                for i in range(len(mlist)):
+                    if strncmpi(method, mlist[i], len(method)):
+                        mlist2.append(mlist[i])
+    #  check for a unique match in the list of methods
+                length = len(mlist2)
+                if length == 0:
+                    raise RuntimeError('Unrecognized method: ' + str(method) + '.')
+                elif length == 1:
+                    dm.method = mlist2[0]
+                else:
+                    raise RuntimeError('Non - unique method: ' + str(method) + ' matches ' + string_cell(mlist2))
+
+    #  assign the default values for the method
+    # switch dm.method
+                if dm.method in ['dot_bfgs', 'dot_frcg']:
+                    dm.type = 'dot'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['objective_function']
+                    dm.ghspec = ['grad']
+                    dm.params.max_iterations = False
+                    dm.params.max_function_evaluations = False
+                    dm.params.convergence_tolerance = False
+                    dm.params.constraint_tolerance = False
+                    dm.params.output = False
+                    dm.params.speculative = False
+                    dm.params.scaling = False
+                    dm.params.optimization_type = 'minimize'
+
+                elif dm.method in ['dot_mmfd', 'dot_slp', 'dot_sqp']:
+                    dm.type = 'dot'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = ['linear_inequality_constraint',
+                                 'linear_equality_constraint']
+                    dm.responses = ['objective_function',
+                                    'nonlinear_inequality_constraint',
+                                    'nonlinear_equality_constraint']
+                    dm.ghspec = ['grad']
+                    dm.params.max_iterations = False
+                    dm.params.max_function_evaluations = False
+                    dm.params.convergence_tolerance = False
+                    dm.params.constraint_tolerance = False
+                    dm.params.output = False
+                    dm.params.speculative = False
+                    dm.params.scaling = False
+                    dm.params.optimization_type = 'minimize'
+
+                elif dm.method == 'npsol_sqp':
+                    dm.type = 'npsol'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = ['linear_inequality_constraint',
+                                 'linear_equality_constraint']
+                    dm.responses = ['objective_function',
+                                    'nonlinear_inequality_constraint',
+                                    'nonlinear_equality_constraint']
+                    dm.ghspec = ['grad']
+                    dm.params.max_iterations = False
+                    dm.params.max_function_evaluations = False
+                    dm.params.convergence_tolerance = False
+                    dm.params.constraint_tolerance = False
+                    dm.params.output = False
+                    dm.params.speculative = False
+                    dm.params.scaling = False
+                    dm.params.verify_level = -1
+                    dm.params.function_precision = 1.0e-10
+                    dm.params.linesearch_tolerance = 0.9
+
+                elif dm.method == 'conmin_frcg':
+                    dm.type = 'conmin'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['objective_function']
+                    dm.ghspec = ['grad']
+                    dm.params.max_iterations = False
+                    dm.params.max_function_evaluations = False
+                    dm.params.convergence_tolerance = False
+                    dm.params.constraint_tolerance = False
+                    dm.params.output = False
+                    dm.params.speculative = False
+                    dm.params.scaling = False
+
+                elif dm.method == 'conmin_mfd':
+                    dm.type = 'conmin'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = ['linear_inequality_constraint',
+                                 'linear_equality_constraint']
+                    dm.responses = ['objective_function',
+                                    'nonlinear_inequality_constraint',
+                                    'nonlinear_equality_constraint']
+                    dm.ghspec = ['grad']
+                    dm.params.max_iterations = False
+                    dm.params.max_function_evaluations = False
+                    dm.params.convergence_tolerance = False
+                    dm.params.constraint_tolerance = False
+                    dm.params.output = False
+                    dm.params.speculative = False
+                    dm.params.scaling = False
+
+                elif dm.method == 'optpp_cg':
+                    dm.type = 'optpp'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['objective_function']
+                    dm.ghspec = ['grad']
+                    dm.params.max_iterations = False
+                    dm.params.max_function_evaluations = False
+                    dm.params.convergence_tolerance = False
+                    dm.params.output = False
+                    dm.params.speculative = False
+                    dm.params.scaling = False
+                    dm.params.max_step = 1000.
+                    dm.params.gradient_tolerance = 1.0e-4
+
+                elif dm.method in ['optpp_q_newton',
+                                   'optpp_fd_newton',
+                                   'optpp_newton']:
+                    dm.type = 'optpp'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = ['linear_inequality_constraint',
+                                 'linear_equality_constraint']
+                    dm.responses = ['objective_function',
+                                    'nonlinear_inequality_constraint',
+                                    'nonlinear_equality_constraint']
+                    dm.ghspec = ['grad']
+                    dm.params.max_iterations = False
+                    dm.params.max_function_evaluations = False
+                    dm.params.convergence_tolerance = False
+                    dm.params.output = False
+                    dm.params.speculative = False
+                    dm.params.scaling = False
+                    dm.params.value_based_line_search = False
+                    dm.params.gradient_based_line_search = False
+                    dm.params.trust_region = False
+                    dm.params.tr_pds = False
+                    dm.params.max_step = 1000.
+                    dm.params.gradient_tolerance = 1.0e-4
+                    dm.params.merit_function = 'argaez_tapia'
+                    dm.params.central_path = dm.params.merit_function
+                    dm.params.steplength_to_boundary = 0.99995
+                    dm.params.centering_parameter = 0.2
+
+                elif dm.method == 'optpp_pds':
+                    dm.type = 'optpp'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['objective_function']
+                    dm.ghspec = ['grad']
+                    dm.params.max_iterations = False
+                    dm.params.max_function_evaluations = False
+                    dm.params.convergence_tolerance = False
+                    dm.params.output = False
+                    dm.params.speculative = False
+                    dm.params.scaling = False
+                    dm.params.search_scheme_size = 32
+
+                elif dm.method == 'asynch_pattern_search':
+                    dm.type = 'apps'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = ['linear_inequality_constraint',
+                                 'linear_equality_constraint']
+                    dm.responses = ['objective_function',
+                                    'nonlinear_inequality_constraint',
+                                    'nonlinear_equality_constraint']
+                    dm.ghspec = ['grad']
+                    dm.params.max_function_evaluations = False
+                    dm.params.constraint_tolerance = False
+                    dm.params.output = False
+                    dm.params.scaling = False
+                    dm.params.initial_delta = 1.0
+                    dm.params.threshold_delta = 0.01
+                    dm.params.contraction_factor = 0.5
+                    dm.params.solution_target = False
+                    dm.params.synchronization = 'nonblocking'
+                    dm.params.merit_function = 'merit2_smooth'
+                    dm.params.constraint_penalty = 1.0
+                    dm.params.smoothing_factor = 1.0
+
+                elif dm.method == 'coliny_cobyla':
+                    dm.type = 'coliny'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['objective_function',
+                                    'nonlinear_inequality_constraint',
+                                    'nonlinear_equality_constraint']
+                    dm.ghspec = ['grad']
+                    dm.params.max_iterations = False
+                    dm.params.max_function_evaluations = False
+                    dm.params.convergence_tolerance = False
+                    dm.params.output = False
+                    dm.params.scaling = False
+                    dm.params.show_misc_options = False
+                    dm.params.misc_options = []
+                    dm.params.solution_accuracy = -np.inf
+                    dm.params.initial_delta = []
+                    dm.params.threshold_delta = []
+
+                elif dm.method == 'coliny_direct':
+                    dm.type = 'coliny'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['objective_function',
+                                    'nonlinear_inequality_constraint',
+                                    'nonlinear_equality_constraint']
+                    dm.ghspec = ['grad']
+                    dm.params.max_iterations = False
+                    dm.params.max_function_evaluations = False
+                    dm.params.convergence_tolerance = False
+                    dm.params.output = False
+                    dm.params.scaling = False
+                    dm.params.show_misc_options = False
+                    dm.params.misc_options = []
+                    dm.params.solution_accuracy = -np.inf
+                    dm.params.division = 'major_dimension'
+                    dm.params.global_balance_parameter = 0.0
+                    dm.params.local_balance_parameter = 1.0e-8
+                    dm.params.max_boxsize_limit = 0.0
+                    dm.params.min_boxsize_limit = 0.0001
+                    dm.params.constraint_penalty = 1000.0
+
+                elif dm.method == 'coliny_ea':
+                    dm.type = 'coliny'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['objective_function',
+                                    'nonlinear_inequality_constraint',
+                                    'nonlinear_equality_constraint']
+                    dm.ghspec = ['grad']
+                    dm.params.max_iterations = False
+                    dm.params.max_function_evaluations = False
+                    dm.params.convergence_tolerance = False
+                    dm.params.output = False
+                    dm.params.scaling = False
+                    dm.params.show_misc_options = False
+                    dm.params.misc_options = []
+                    dm.params.solution_accuracy = -np.inf
+                    dm.params.seed = False
+                    dm.params.population_size = 50
+                    dm.params.initialization_type = 'unique_random'
+                    dm.params.fitness_type = 'linear_rank'
+                    dm.params.replacement_type = 'elitist'
+                    dm.params.random = []
+                    dm.params.chc = []
+                    dm.params.elitist = []
+                    dm.params.new_solutions_generated = 'population_size-replacement_size'
+                    dm.params.crossover_type = 'two_point'
+                    dm.params.crossover_rate = 0.8
+                    dm.params.mutation_type = 'offset_normal'
+                    dm.params.mutation_scale = 0.1
+                    dm.params.mutation_range = 1
+                    dm.params.dimension_ratio = 1.0
+                    dm.params.mutation_rate = 1.0
+                    dm.params.non_adaptive = False
+
+                elif dm.method == 'coliny_pattern_search':
+                    dm.type = 'coliny'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['objective_function',
+                                    'nonlinear_inequality_constraint',
+                                    'nonlinear_equality_constraint']
+                    dm.ghspec = ['grad']
+                    dm.params.max_iterations = False
+                    dm.params.max_function_evaluations = False
+                    dm.params.convergence_tolerance = False
+                    dm.params.output = False
+                    dm.params.scaling = False
+                    dm.params.show_misc_options = False
+                    dm.params.misc_options = []
+                    dm.params.solution_accuracy = -np.inf
+                    dm.params.stochastic = False
+                    dm.params.seed = False
+                    dm.params.initial_delta = []
+                    dm.params.threshold_delta = []
+                    dm.params.constraint_penalty = 1.0
+                    dm.params.constant_penalty = False
+                    dm.params.pattern_basis = 'coordinate'
+                    dm.params.total_pattern_size = False
+                    dm.params.no_expansion = False
+                    dm.params.expand_after_success = 1
+                    dm.params.contraction_factor = 0.5
+                    dm.params.synchronization = 'nonblocking'
+                    dm.params.exploratory_moves = 'basic_pattern'
+
+                elif dm.method == 'coliny_solis_wets':
+                    dm.type = 'coliny'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['objective_function',
+                                    'nonlinear_inequality_constraint',
+                                    'nonlinear_equality_constraint']
+                    dm.ghspec = ['grad']
+                    dm.params.max_iterations = False
+                    dm.params.max_function_evaluations = False
+                    dm.params.convergence_tolerance = False
+                    dm.params.output = False
+                    dm.params.scaling = False
+                    dm.params.show_misc_options = False
+                    dm.params.misc_options = []
+                    dm.params.solution_accuracy = -np.inf
+                    dm.params.seed = False
+                    dm.params.initial_delta = []
+                    dm.params.threshold_delta = []
+                    dm.params.no_expansion = False
+                    dm.params.expand_after_success = 5
+                    dm.params.contract_after_failure = 3
+                    dm.params.contraction_factor = 0.5
+                    dm.params.constraint_penalty = 1.0
+                    dm.params.constant_penalty = False
+
+                elif dm.method == 'ncsu_direct':
+                    dm.type = 'ncsu'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = ['linear_inequality_constraint',
+                                 'linear_equality_constraint']  #  ?
+                    dm.responses = ['objective_function',
+                                    'nonlinear_inequality_constraint',
+                                    'nonlinear_equality_constraint']  #  ?
+                    dm.ghspec = ['grad']
+                    dm.params.max_iterations = False
+                    dm.params.max_function_evaluations = False
+                    dm.params.scaling = False
+                    dm.params.solution_accuracy = 0.
+                    dm.params.min_boxsize_limit = 1.0e-8
+                    dm.params.vol_boxsize_limit = 1.0e-8
+
+    #if dm.method in ['surrogate_based_local',
+    #'surrogate_based_global']:
+
+                elif dm.method == 'moga':
+                    dm.type = 'jega'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = ['linear_inequality_constraint',
+                                 'linear_equality_constraint']
+                    dm.responses = ['objective_function',
+                                    'nonlinear_inequality_constraint',
+                                    'nonlinear_equality_constraint']
+                    dm.ghspec = ['grad']
+                    dm.params.max_iterations = False
+                    dm.params.max_function_evaluations = False
+                    dm.params.output = False
+                    dm.params.scaling = False
+                    dm.params.seed = False
+                    dm.params.log_file = 'JEGAGlobal.log'
+                    dm.params.population_size = 50
+                    dm.params.print_each_pop = False
+    #according to documentation, uses method - indepent control
+    #dm.params.output = 'normal'
+                    dm.params.initialization_type = 'unique_random'
+                    dm.params.mutation_type = 'replace_uniform'
+                    dm.params.mutation_scale = 0.15
+                    dm.params.mutation_rate = 0.08
+                    dm.params.replacement_type = ''
+                    dm.params.below_limit = 6
+                    dm.params.shrinkage_percentage = 0.9
+                    dm.params.crossover_type = 'shuffle_random'
+                    dm.params.multi_point_binary = []
+                    dm.params.multi_point_parameterized_binary = []
+                    dm.params.multi_point_real = []
+                    dm.params.shuffle_random = []
+                    dm.params.num_parents = 2
+                    dm.params.num_offspring = 2
+                    dm.params.crossover_rate = 0.8
+                    dm.params.fitness_type = ''
+                    dm.params.niching_type = False
+                    dm.params.radial = [0.01]
+                    dm.params.distance = [0.01]
+                    dm.params.metric_tracker = False
+                    dm.params.percent_change = 0.1
+                    dm.params.num_generations = 10
+                    dm.params.postprocessor_type = False
+                    dm.params.orthogonal_distance = [0.01]
+
+                elif dm.method == 'soga':
+                    dm.type = 'jega'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = ['linear_inequality_constraint',
+                                 'linear_equality_constraint']
+                    dm.responses = ['objective_function',
+                                    'nonlinear_inequality_constraint',
+                                    'nonlinear_equality_constraint']
+                    dm.ghspec = ['grad']
+                    dm.params.max_iterations = False
+                    dm.params.max_function_evaluations = False
+                    dm.params.output = False
+                    dm.params.scaling = False
+                    dm.params.seed = False
+                    dm.params.log_file = 'JEGAGlobal.log'
+                    dm.params.population_size = 50
+                    dm.params.print_each_pop = False
+                    dm.params.output = 'normal'
+                    dm.params.initialization_type = 'unique_random'
+                    dm.params.mutation_type = 'replace_uniform'
+                    dm.params.mutation_scale = 0.15
+                    dm.params.mutation_rate = 0.08
+                    dm.params.replacement_type = ''
+                    dm.params.below_limit = 6
+                    dm.params.shrinkage_percentage = 0.9
+                    dm.params.crossover_type = 'shuffle_random'
+                    dm.params.multi_point_binary = []
+                    dm.params.multi_point_parameterized_binary = []
+                    dm.params.multi_point_real = []
+                    dm.params.shuffle_random = []
+                    dm.params.num_parents = 2
+                    dm.params.num_offspring = 2
+                    dm.params.crossover_rate = 0.8
+                    dm.params.fitness_type = 'merit_function'
+                    dm.params.constraint_penalty = 1.0
+                    dm.params.replacement_type = ''
+                    dm.params.convergence_type = False
+                    dm.params.num_generations = 10
+                    dm.params.percent_change = 0.1
+
+                elif dm.method == 'nl2sol':
+                    dm.type = 'lsq'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['least_squares_term']
+                    dm.ghspec = ['grad']
+                    dm.params.max_iterations = False
+                    dm.params.max_function_evaluations = False
+                    dm.params.convergence_tolerance = False
+                    dm.params.output = False
+                    dm.params.scaling = False
+                    dm.params.function_precision = 1.0e-10
+                    dm.params.absolute_conv_tol = -1.
+                    dm.params.x_conv_tol = -1.
+                    dm.params.singular_conv_tol = -1.
+                    dm.params.singular_radius = -1.
+                    dm.params.False_conv_tol = -1.
+                    dm.params.initial_trust_radius = -1.
+                    dm.params.covariance = 0
+                    dm.params.regression_stressbalances = False
+
+                elif dm.method == 'nlssol_sqp':
+                    dm.type = 'lsq'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = ['linear_inequality_constraint',
+                                 'linear_equality_constraint']
+                    dm.responses = ['least_squares_term',
+                                    'nonlinear_inequality_constraint',
+                                    'nonlinear_equality_constraint']
+                    dm.ghspec = ['grad']
+                    dm.params.max_iterations = False
+                    dm.params.max_function_evaluations = False
+                    dm.params.convergence_tolerance = False
+                    dm.params.constraint_tolerance = False
+                    dm.params.output = False
+                    dm.params.speculative = False
+                    dm.params.scaling = False
+                    dm.params.verify_level = -1
+                    dm.params.function_precision = 1.0e-10
+                    dm.params.linesearch_tolerance = 0.9
+
+                elif dm.method == 'optpp_g_newton':
+                    dm.type = 'lsq'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = ['linear_inequality_constraint',
+                                 'linear_equality_constraint']
+                    dm.responses = ['least_squares_term',
+                                    'nonlinear_inequality_constraint',
+                                    'nonlinear_equality_constraint']
+                    dm.ghspec = ['grad']
+                    dm.params.max_iterations = False
+                    dm.params.max_function_evaluations = False
+                    dm.params.convergence_tolerance = False
+                    dm.params.output = False
+                    dm.params.speculative = False
+                    dm.params.scaling = False
+                    dm.params.value_based_line_search = False
+                    dm.params.gradient_based_line_search = False
+                    dm.params.trust_region = False
+                    dm.params.tr_pds = False
+                    dm.params.max_step = 1000.
+                    dm.params.gradient_tolerance = 1.0e-4
+                    dm.params.merit_function = 'argaez_tapia'
+                    dm.params.central_path = dm.params.merit_function
+                    dm.params.steplength_to_boundary = 0.99995
+                    dm.params.centering_parameter = 0.2
+
+                elif dm.method == 'nond_sampling':
+                    dm.type = 'nond'
+                    dm.variables = ['normal_uncertain',
+                                    'uniform_uncertain',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['response_function']
+                    dm.ghspec = []
+    #                               not documented, but apparently works
+                    dm.params.output = False
+                    dm.params.seed = False
+                    dm.params.fixed_seed = False
+                    dm.params.rng = False
+                    dm.params.samples = False
+                    dm.params.sample_type = 'lhs'
+                    dm.params.all_variables = False
+                    dm.params.variance_based_decomp = False
+                    dm.params.previous_samples = 0
+
+                elif dm.method == 'nond_local_reliability':
+                    dm.type = 'nond'
+                    dm.variables = ['normal_uncertain',
+                                    'uniform_uncertain',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['response_function']
+                    dm.ghspec = ['grad']
+    #                               not documented, but may work
+                    dm.params.output = False
+                    dm.params.max_iterations = False
+                    dm.params.convergence_tolerance = False
+                    dm.params.mpp_search = False
+                    dm.params.sqp = False
+                    dm.params.nip = False
+                    dm.params.integration = 'first_order'
+                    dm.params.refinement = False
+                    dm.params.samples = 0
+                    dm.params.seed = False
+
+                elif dm.method == 'nond_global_reliability':
+                    dm.type = 'nond'
+                    dm.variables = ['normal_uncertain',
+                                    'uniform_uncertain',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['response_function']
+                    dm.ghspec = ['grad']
+    #                               not documented, but may work
+                    dm.params.output = False
+                    dm.params.x_gaussian_process = False
+                    dm.params.u_gaussian_process = False
+                    dm.params.all_variables = False
+                    dm.params.seed = False
+
+                elif dm.method == 'nond_polynomial_chaos':
+                    dm.type = 'nond'
+                    dm.variables = ['normal_uncertain',
+                                    'uniform_uncertain',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['response_function']
+                    dm.ghspec = ['grad']
+    #                               not documented, but may work
+                    dm.params.output = False
+                    dm.params.expansion_order = []
+                    dm.params.expansion_terms = []
+                    dm.params.quadrature_order = []
+                    dm.params.sparse_grid_level = []
+                    dm.params.expansion_samples = []
+                    dm.params.incremental_lhs = False
+                    dm.params.collocation_points = []
+                    dm.params.collocation_ratio = []
+                    dm.params.reuse_samples = False
+                    dm.params.expansion_import_file = ''
+                    dm.params.seed = False
+                    dm.params.fixed_seed = False
+                    dm.params.samples = 0
+                    dm.params.sample_type = 'lhs'
+                    dm.params.all_variables = False
+
+                elif dm.method == 'nond_stoch_collocation':
+                    dm.type = 'nond'
+                    dm.variables = ['normal_uncertain',
+                                    'uniform_uncertain',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['response_function']
+                    dm.ghspec = ['grad']
+    #                               not documented, but may work
+                    dm.params.output = False
+                    dm.params.quadrature_order = []
+                    dm.params.sparse_grid_level = []
+                    dm.params.seed = False
+                    dm.params.fixed_seed = False
+                    dm.params.samples = 0
+                    dm.params.sample_type = 'lhs'
+                    dm.params.all_variables = False
+
+                elif dm.method == 'nond_evidence':
+                    dm.type = 'nond'
+                    dm.variables = ['normal_uncertain',
+                                    'uniform_uncertain',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['response_function']
+                    dm.ghspec = ['grad']
+    #                               not documented, but may work
+                    dm.params.output = False
+                    dm.params.seed = False
+                    dm.params.samples = 10000
+
+                elif dm.method == 'dace':
+                    dm.type = 'dace'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['objective_function',
+                                    'response_function']
+                    dm.ghspec = []
+                    dm.params.grid = False
+                    dm.params.random = False
+                    dm.params.oas = False
+                    dm.params.lhs = False
+                    dm.params.oa_lhs = False
+                    dm.params.box_behnken = False
+                    dm.params.central_composite = False
+                    dm.params.seed = False
+                    dm.params.fixed_seed = False
+                    dm.params.samples = False
+                    dm.params.symbols = False
+                    dm.params.quality_metrics = False
+                    dm.params.variance_based_decomp = False
+
+                elif dm.method == 'fsu_quasi_mc':
+                    dm.type = 'dace'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['objective_function',
+                                    'response_function']
+                    dm.ghspec = []
+                    dm.params.halton = False
+                    dm.params.hammersley = False
+                    dm.params.samples = 0
+                    dm.params.sequence_start = [0]
+                    dm.params.sequence_leap = [1]
+                    dm.params.prime_base = False
+                    dm.params.fixed_sequence = False
+                    dm.params.latinize = False
+                    dm.params.variance_based_decomp = False
+                    dm.params.quality_metrics = False
+
+                elif dm.method == 'fsu_cvt':
+                    dm.type = 'dace'
+                    dm.variables = ['continuous_design',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['objective_function',
+                                    'response_function']
+                    dm.ghspec = []
+                    dm.params.seed = False
+                    dm.params.fixed_seed = False
+                    dm.params.samples = 0
+                    dm.params.num_trials = 10000
+                    dm.params.trial_type = 'random'
+                    dm.params.latinize = False
+                    dm.params.variance_based_decomp = False
+                    dm.params.quality_metrics = False
+
+                elif dm.method == 'vector_parameter_study':
+                    dm.type = 'param'
+                    dm.variables = ['continuous_design',
+                                    'normal_uncertain',
+                                    'uniform_uncertain',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['objective_function',
+                                    'response_function']
+                    dm.ghspec = []
+                    dm.params.output = False
+                    dm.params.final_point = []
+                    dm.params.step_length = []
+                    dm.params.num_steps = []
+                    dm.params.step_vector = []
+                    dm.params.num_steps = []
+
+                elif dm.method == 'list_parameter_study':
+                    dm.type = 'param'
+                    dm.variables = ['continuous_design',
+                                    'normal_uncertain',
+                                    'uniform_uncertain',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['objective_function',
+                                    'response_function']
+                    dm.ghspec = []
+                    dm.params.output = False
+                    dm.params.list_of_points = []
+
+                elif dm.method == 'centered_parameter_study':
+                    dm.type = 'param'
+                    dm.variables = ['continuous_design',
+                                    'normal_uncertain',
+                                    'uniform_uncertain',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['objective_function',
+                                    'response_function']
+                    dm.ghspec = []
+                    dm.params.output = False
+                    dm.params.percent_delta = []
+                    dm.params.deltas_per_variable = []
+
+                elif dm.method == 'multidim_parameter_study':
+                    dm.type = 'param'
+                    dm.variables = ['continuous_design',
+                                    'normal_uncertain',
+                                    'uniform_uncertain',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['objective_function',
+                                    'response_function']
+                    dm.ghspec = []
+                    dm.params.output = False
+                    dm.params.partitions = []
+
+                elif dm.method == 'bayes_calibration':
+                    dm.type = 'bayes'
+                    dm.variables = ['continuous_design',
+                                    'normal_uncertain',
+                                    'uniform_uncertain',
+                                    'continuous_state']
+                    dm.lcspec = []
+                    dm.responses = ['objective_function',
+                                    'response_function',
+                                    'calibration_function']
+                    dm.ghspec = []
+                    dm.params.queso = False
+                    dm.params.dream = False
+                    dm.params.gpmsa = False
+                    dm.params.samples = 0
+                    dm.params.seed = False
+                    dm.params.output = False
+                    dm.params.metropolis_hastings = False
+                    dm.params.proposal_covariance = False
+                    dm.params.diagonal = False
+                    dm.params.values = []
+
+                else:
+                    raise RuntimeError('Unimplemented method: {}.'.format(dm.method))
+
+    #  if more than one argument, issue warning
+        else:
+            print('Warning: dakota_method:extra_arg: Extra arguments for object of class ' + str(type(dm)) + '.')
+        return dm
+
+    def __repr__(dm):
+
+        #  display the object
+        string = '\nclass dakota_method object = \n'
+        string += '       method: ' + str(dm.method) + '\n'
+        string += '         type: ' + str(dm.type) + '\n'
+        string += '    variables: ' + str(dm.variables) + '\n'
+        string += '       lcspec: ' + str(dm.lcspec) + '\n'
+        string += '    responses: ' + str(dm.responses) + '\n'
+        string += '       ghspec: ' + str(dm.ghspec) + '\n'
+
+    #  display the parameters within the object
+
+        fnames = fieldnames(dm.params)
+    #get rid of stuff we aren't using
+        try:
+            fnames.remove('__module__')
+        except ValueError:
+            pass
+
+        maxlen = 0
+        for i in range(len(fnames)):
+            maxlen = max(maxlen, len(fnames[i]))
+
+        for i in fnames:
+            string += '       params.{:{space}s}: {}\n'.format(str(i), str(dm.params.__dict__[i]), space=maxlen + 1)
+    #params.x   : y
+    #with maxlen + 1 spaces between x and :
+        return string
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dmeth_params_merge.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dmeth_params_merge.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dmeth_params_merge.m	(revision 27955)
@@ -0,0 +1,27 @@
+%
+%  merge a structure of parameters into a dakota_method object.
+%
+%  [dm]=dmeth_params_merge(dm,params)
+%
+function [dm]=dmeth_params_merge(dm,params)
+
+if ~isa(dm,'dakota_method')
+    error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+        inputname(1),class(dm),'dakota_method');
+end
+
+%  loop through each parameter field in the structure
+
+fnames=fieldnames(params);
+
+for i=1:numel(fnames)
+    if isfield(dm.params,fnames{i})
+        dm.params.(fnames{i})=params.(fnames{i});
+    else
+        warning('dmeth_params_merge:unknown_param',...
+            'No parameter ''%s'' for dakota_method ''%s''.',...
+            fnames{i},dm.method);
+    end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dmeth_params_set.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dmeth_params_set.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dmeth_params_set.m	(revision 27955)
@@ -0,0 +1,25 @@
+%
+%  set parameters of a dakota_method object.
+%
+%  [dm]=dmeth_params_set(dm,varargin)
+%
+function [dm]=dmeth_params_set(dm,varargin)
+
+if ~isa(dm,'dakota_method')
+    error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+        inputname(1),class(dm),'dakota_method');
+end
+
+%  loop through each parameter field in the input list
+
+for i=1:2:length(varargin)
+    if isfield(dm.params,varargin{i})
+        dm.params.(varargin{i})=varargin{i+1};
+    else
+        warning('dmeth_params_set:unknown_param',...
+            'No parameter ''%s'' for dakota_method ''%s''.',...
+            varargin{i},dm.method);
+    end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dmeth_params_set.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dmeth_params_set.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dmeth_params_set.py	(revision 27955)
@@ -0,0 +1,24 @@
+from helpers import *
+from dakota_method import *
+
+
+def dmeth_params_set(dm, *args):
+    #
+    #  set parameters of a dakota_method object.
+    #
+    #  dm = dmeth_params_set(dm, *args)
+    #
+
+    if not isinstance(dm, dakota_method):
+        raise RuntimeError('Provided object is a \'' + str(type(dm)) + '\' class object, not \'dakota_method\'')
+
+    #  loop through each parameter field in the input list
+    for i in range(0, len(args), 2):
+        if isfield(dm.params, args[i]):
+            #vars(dresp)[fnames[i]]
+            exec(('dm.params.%s = args[i + 1]') % (args[i]))
+    #vars(dm.params)[args[i]] = args[i + 1]
+        else:
+            print('WARNING: dmeth_params_set:unknown_param No parameter \'' + str(args[i]) + '\' for dakota_method \'' + str(dm.method) + '\'.')
+
+    return dm
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dmeth_params_write.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dmeth_params_write.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dmeth_params_write.m	(revision 27955)
@@ -0,0 +1,601 @@
+function dmeth_params_write(dm,fid,sbeg)
+%DMETH_PARAMS_WRITE - write the parameters from a dakota_method object
+%
+%   Usage:
+%      dmeth_params_write(dm,fid,sbeg)
+%
+
+if ~isa(dm,'dakota_method')
+    error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+        inputname(1),class(dm),'dakota_method');
+end
+
+if ~exist('sbeg','var')
+    sbeg='\t  ';
+end
+
+%  perform some error checking, but leave the rest to dakota.
+%  unfortunately this prevents merely looping through the fields
+%  of the parameters structure.
+
+%  write method-independent controls
+
+% param_write(fid,sbeg,'id_method','                = ','\n',dm.params);
+% param_write(fid,sbeg,'model_pointer','            = ','\n',dm.params);
+
+%  write method-dependent controls
+
+switch dm.type
+    case {'dot'}
+        param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+        param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+        param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params);
+        param_write(fid,sbeg,'constraint_tolerance','     = ','\n',dm.params);
+        param_write(fid,sbeg,'output',' ','\n',dm.params);
+        param_write(fid,sbeg,'speculative','','\n',dm.params);
+        param_write(fid,sbeg,'scaling','','\n',dm.params);
+        switch dm.method
+            case{'dot_bfgs',...
+                 'dot_frcg',...
+                 'dot_mmfd',...
+                 'dot_slp',...
+                 'dot_sqp'}
+                param_write(fid,sbeg,'optimization_type',' = ','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'npsol'}
+        param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+        param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+        param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params);
+        param_write(fid,sbeg,'constraint_tolerance','     = ','\n',dm.params);
+        param_write(fid,sbeg,'output',' ','\n',dm.params);
+        param_write(fid,sbeg,'speculative','','\n',dm.params);
+        param_write(fid,sbeg,'scaling','','\n',dm.params);
+        switch dm.method
+            case {'npsol_sqp'}
+                param_write(fid,sbeg,'verify_level','         = ','\n',dm.params);
+                param_write(fid,sbeg,'function_precision','   = ','\n',dm.params);
+                param_write(fid,sbeg,'linesearch_tolerance',' = ','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'conmin'}
+        param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+        param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+        param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params);
+        param_write(fid,sbeg,'constraint_tolerance','     = ','\n',dm.params);
+        param_write(fid,sbeg,'output',' ','\n',dm.params);
+        param_write(fid,sbeg,'speculative','','\n',dm.params);
+        param_write(fid,sbeg,'scaling','','\n',dm.params);
+        switch dm.method
+            case {'conmin_frcg',...
+                  'conmin_mfd'}
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'optpp'}
+        param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+        param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+        param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params);
+        param_write(fid,sbeg,'output',' ','\n',dm.params);
+        param_write(fid,sbeg,'speculative','','\n',dm.params);
+        param_write(fid,sbeg,'scaling','','\n',dm.params);
+        switch dm.method
+            case {'optpp_cg'}
+                param_write(fid,sbeg,'max_step','           = ','\n',dm.params);
+                param_write(fid,sbeg,'gradient_tolerance',' = ','\n',dm.params);
+
+            case {'optpp_q_newton',...
+                  'optpp_fd_newton',...
+                  'optpp_newton'}
+                if (dm.params.value_based_line_search + ...
+                    dm.params.gradient_based_line_search + ...
+                    dm.params.trust_region + ...
+                    dm.params.tr_pds > 1)
+                    error('''%s'' method must have only one algorithm.',...
+                        dm.method);
+                end
+                param_write(fid,sbeg,'value_based_line_search','','\n',dm.params);
+                param_write(fid,sbeg,'gradient_based_line_search','','\n',dm.params);
+                param_write(fid,sbeg,'trust_region','','\n',dm.params);
+                param_write(fid,sbeg,'tr_pds','','\n',dm.params);
+                param_write(fid,sbeg,'max_step','               = ','\n',dm.params);
+                param_write(fid,sbeg,'gradient_tolerance','     = ','\n',dm.params);
+                param_write(fid,sbeg,'merit_function','         = ','\n',dm.params);
+                param_write(fid,sbeg,'central_path','           = ','\n',dm.params);
+                param_write(fid,sbeg,'steplength_to_boundary',' = ','\n',dm.params);
+                param_write(fid,sbeg,'centering_parameter','    = ','\n',dm.params);
+
+            case {'optpp_pds'}
+                param_write(fid,sbeg,'search_scheme_size',' = ','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'apps'}
+        param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+        param_write(fid,sbeg,'constraint_tolerance','     = ','\n',dm.params);
+        param_write(fid,sbeg,'output',' ','\n',dm.params);
+        param_write(fid,sbeg,'scaling','','\n',dm.params);
+        switch dm.method
+            case {'asynch_pattern_search'}
+                param_write(fid,sbeg,'initial_delta','      = ','\n',dm.params);
+                param_write(fid,sbeg,'threshold_delta','    = ','\n',dm.params);
+                param_write(fid,sbeg,'contraction_factor',' = ','\n',dm.params);
+                param_write(fid,sbeg,'solution_target','    = ','\n',dm.params);
+                param_write(fid,sbeg,'synchronization','    = ','\n',dm.params);
+                param_write(fid,sbeg,'merit_function','     = ','\n',dm.params);
+                param_write(fid,sbeg,'constraint_penalty',' = ','\n',dm.params);
+                param_write(fid,sbeg,'smoothing_factor','   = ','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'coliny'}
+        param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+        param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+        param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params);
+        param_write(fid,sbeg,'output',' ','\n',dm.params);
+        param_write(fid,sbeg,'scaling','','\n',dm.params);
+
+        param_write(fid,sbeg,'show_misc_options','','\n',dm.params);
+        param_write(fid,sbeg,'misc_options','      = ','\n',dm.params);
+        param_write(fid,sbeg,'solution_accuracy',' = ','\n',dm.params);
+        switch dm.method
+            case {'coliny_cobyla'}
+                param_write(fid,sbeg,'initial_delta','   = ','\n',dm.params);
+                param_write(fid,sbeg,'threshold_delta',' = ','\n',dm.params);
+
+            case {'coliny_direct'}
+                param_write(fid,sbeg,'division','                 = ','\n',dm.params);
+                param_write(fid,sbeg,'global_balance_parameter',' = ','\n',dm.params);
+                param_write(fid,sbeg,'local_balance_parameter','  = ','\n',dm.params);
+                param_write(fid,sbeg,'max_boxsize_limit','        = ','\n',dm.params);
+                param_write(fid,sbeg,'min_boxsize_limit','        = ','\n',dm.params);
+                param_write(fid,sbeg,'constraint_penalty','       = ','\n',dm.params);
+
+            case {'coliny_ea'}
+                param_write(fid,sbeg,'seed','                    = ','\n',dm.params);
+                param_write(fid,sbeg,'population_size','         = ','\n',dm.params);
+                param_write(fid,sbeg,'initialization_type','     = ','\n',dm.params);
+                param_write(fid,sbeg,'fitness_type','            = ','\n',dm.params);
+                param_write(fid,sbeg,'replacement_type','        = ','\n',dm.params);
+                param_write(fid,sbeg,'random','                  = ','\n',dm.params);
+                param_write(fid,sbeg,'chc','                     = ','\n',dm.params);
+                param_write(fid,sbeg,'elitist','                 = ','\n',dm.params);
+                param_write(fid,sbeg,'new_solutions_generated',' = ','\n',dm.params);
+                param_write(fid,sbeg,'crossover_type','          = ','\n',dm.params);
+                param_write(fid,sbeg,'crossover_rate','          = ','\n',dm.params);
+                param_write(fid,sbeg,'mutation_type','           = ','\n',dm.params);
+                param_write(fid,sbeg,'mutation_scale','          = ','\n',dm.params);
+                param_write(fid,sbeg,'mutation_range','          = ','\n',dm.params);
+                param_write(fid,sbeg,'dimension_ratio','         = ','\n',dm.params);
+                param_write(fid,sbeg,'mutation_rate','           = ','\n',dm.params);
+                param_write(fid,sbeg,'non_adaptive','','\n',dm.params);
+
+            case {'coliny_pattern_search'}
+                param_write(fid,sbeg,'stochastic','','\n',dm.params);
+                param_write(fid,sbeg,'seed','                 = ','\n',dm.params);
+                param_write(fid,sbeg,'initial_delta','        = ','\n',dm.params);
+                param_write(fid,sbeg,'threshold_delta','      = ','\n',dm.params);
+                param_write(fid,sbeg,'constraint_penalty','   = ','\n',dm.params);
+                param_write(fid,sbeg,'constant_penalty','','\n',dm.params);
+                param_write(fid,sbeg,'pattern_basis','        = ','\n',dm.params);
+                param_write(fid,sbeg,'total_pattern_size','   = ','\n',dm.params);
+                param_write(fid,sbeg,'no_expansion','','\n',dm.params);
+                param_write(fid,sbeg,'expand_after_success',' = ','\n',dm.params);
+                param_write(fid,sbeg,'contraction_factor','   = ','\n',dm.params);
+                param_write(fid,sbeg,'synchronization','      = ','\n',dm.params);
+                param_write(fid,sbeg,'exploratory_moves','    = ','\n',dm.params);
+
+            case {'coliny_solis_wets'}
+                param_write(fid,sbeg,'seed','                   = ','\n',dm.params);
+                param_write(fid,sbeg,'initial_delta','          = ','\n',dm.params);
+                param_write(fid,sbeg,'threshold_delta','        = ','\n',dm.params);
+                param_write(fid,sbeg,'no_expansion','','\n',dm.params);
+                param_write(fid,sbeg,'expand_after_success','   = ','\n',dm.params);
+                param_write(fid,sbeg,'contract_after_failure',' = ','\n',dm.params);
+                param_write(fid,sbeg,'contraction_factor','     = ','\n',dm.params);
+                param_write(fid,sbeg,'constraint_penalty','     = ','\n',dm.params);
+                param_write(fid,sbeg,'constant_penalty','','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'ncsu'}
+        param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+        param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+        param_write(fid,sbeg,'scaling','','\n',dm.params);
+        switch dm.method
+            case {'ncsu_direct'}
+                param_write(fid,sbeg,'solution_accuracy',' = ','\n',dm.params);
+                param_write(fid,sbeg,'min_boxsize_limit',' = ','\n',dm.params);
+                param_write(fid,sbeg,'vol_boxsize_limit',' = ','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'jega'}
+        param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+        param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+        param_write(fid,sbeg,'output',' ','\n',dm.params);
+        param_write(fid,sbeg,'scaling','','\n',dm.params);
+
+        param_write(fid,sbeg,'seed','                             = ','\n',dm.params);
+        param_write(fid,sbeg,'log_file','                         = ','\n',dm.params);
+        param_write(fid,sbeg,'population_size','                  = ','\n',dm.params);
+        param_write(fid,sbeg,'print_each_pop','','\n',dm.params);
+        param_write(fid,sbeg,'output','                           = ','\n',dm.params);
+        param_write(fid,sbeg,'initialization_type','              = ','\n',dm.params);
+        param_write(fid,sbeg,'mutation_type','                    = ','\n',dm.params);
+        param_write(fid,sbeg,'mutation_scale','                   = ','\n',dm.params);
+        param_write(fid,sbeg,'mutation_rate','                    = ','\n',dm.params);
+        param_write(fid,sbeg,'replacement_type','                 = ','\n',dm.params);
+        param_write(fid,sbeg,'below_limit','                      = ','\n',dm.params);
+        param_write(fid,sbeg,'shrinkage_percentage','             = ','\n',dm.params);
+        param_write(fid,sbeg,'crossover_type','                   = ','\n',dm.params);
+        param_write(fid,sbeg,'multi_point_binary','               = ','\n',dm.params);
+        param_write(fid,sbeg,'multi_point_parameterized_binary',' = ','\n',dm.params);
+        param_write(fid,sbeg,'multi_point_real','                 = ','\n',dm.params);
+        param_write(fid,sbeg,'shuffle_random','                   = ','\n',dm.params);
+        param_write(fid,sbeg,'num_parents','                      = ','\n',dm.params);
+        param_write(fid,sbeg,'num_offspring','                    = ','\n',dm.params);
+        param_write(fid,sbeg,'crossover_rate','                   = ','\n',dm.params);
+
+        switch dm.method
+            case {'moga'}
+                param_write(fid,sbeg,'fitness_type','        = ','\n',dm.params);
+                param_write(fid,sbeg,'niching_type','        = ','\n',dm.params);
+                if ~isempty(dm.params.radial) && ...
+                   ~isempty(dm.params.distance)
+                    error('''%s'' method must have only one niching distance.',...
+                        dm.method);
+                end
+                param_write(fid,sbeg,'radial','              = ','\n',dm.params);
+                param_write(fid,sbeg,'distance','            = ','\n',dm.params);
+                param_write(fid,sbeg,'metric_tracker','','\n',dm.params);
+                param_write(fid,sbeg,'percent_change','      = ','\n',dm.params);
+                param_write(fid,sbeg,'num_generations','     = ','\n',dm.params);
+                param_write(fid,sbeg,'postprocessor_type','  = ','\n',dm.params);
+                param_write(fid,sbeg,'orthogonal_distance',' = ','\n',dm.params);
+
+            case {'soga'}
+                param_write(fid,sbeg,'fitness_type','       = ','\n',dm.params);
+                param_write(fid,sbeg,'constraint_penalty',' = ','\n',dm.params);
+                param_write(fid,sbeg,'replacement_type','   = ','\n',dm.params);
+                param_write(fid,sbeg,'convergence_type','   = ','\n',dm.params);
+                param_write(fid,sbeg,'num_generations','    = ','\n',dm.params);
+                param_write(fid,sbeg,'percent_change','     = ','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'lsq'}
+        switch dm.method
+            case {'nl2sol'}
+                param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+                param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+                param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params);
+                param_write(fid,sbeg,'output',' ','\n',dm.params);
+                param_write(fid,sbeg,'scaling','','\n',dm.params);
+
+                param_write(fid,sbeg,'function_precision','   = ','\n',dm.params);
+                param_write(fid,sbeg,'absolute_conv_tol','    = ','\n',dm.params);
+                param_write(fid,sbeg,'x_conv_tol','           = ','\n',dm.params);
+                param_write(fid,sbeg,'singular_conv_tol','    = ','\n',dm.params);
+                param_write(fid,sbeg,'singular_radius','      = ','\n',dm.params);
+                param_write(fid,sbeg,'false_conv_tol','       = ','\n',dm.params);
+                param_write(fid,sbeg,'initial_trust_radius',' = ','\n',dm.params);
+                param_write(fid,sbeg,'covariance','           = ','\n',dm.params);
+                param_write(fid,sbeg,'regression_stressbalances','','\n',dm.params);
+
+            case {'nlssol_sqp'}
+                param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+                param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+                param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params);
+                param_write(fid,sbeg,'constraint_tolerance','     = ','\n',dm.params);
+                param_write(fid,sbeg,'output',' ','\n',dm.params);
+                param_write(fid,sbeg,'speculative','','\n',dm.params);
+                param_write(fid,sbeg,'scaling','','\n',dm.params);
+
+                param_write(fid,sbeg,'verify_level','         = ','\n',dm.params);
+                param_write(fid,sbeg,'function_precision','   = ','\n',dm.params);
+                param_write(fid,sbeg,'linesearch_tolerance',' = ','\n',dm.params);
+
+            case {'optpp_g_newton'}
+                param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+                param_write(fid,sbeg,'max_function_evaluations',' = ','\n',dm.params);
+                param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params);
+                param_write(fid,sbeg,'output',' ','\n',dm.params);
+                param_write(fid,sbeg,'speculative','','\n',dm.params);
+                param_write(fid,sbeg,'scaling','','\n',dm.params);
+
+                if (dm.params.value_based_line_search + ...
+                    dm.params.gradient_based_line_search + ...
+                    dm.params.trust_region + ...
+                    dm.params.tr_pds > 1)
+                    error('''%s'' method must have only one algorithm.',...
+                        dm.method);
+                end
+                param_write(fid,sbeg,'value_based_line_search','','\n',dm.params);
+                param_write(fid,sbeg,'gradient_based_line_search','','\n',dm.params);
+                param_write(fid,sbeg,'trust_region','','\n',dm.params);
+                param_write(fid,sbeg,'tr_pds','','\n',dm.params);
+                param_write(fid,sbeg,'max_step','               = ','\n',dm.params);
+                param_write(fid,sbeg,'gradient_tolerance','     = ','\n',dm.params);
+                param_write(fid,sbeg,'merit_function','         = ','\n',dm.params);
+                param_write(fid,sbeg,'central_path','           = ','\n',dm.params);
+                param_write(fid,sbeg,'steplength_to_boundary',' = ','\n',dm.params);
+                param_write(fid,sbeg,'centering_parameter','    = ','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'nond'}
+        switch dm.method
+            case {'nond_sampling'}
+                param_write(fid,sbeg,'seed','             = ','\n',dm.params);
+                param_write(fid,sbeg,'fixed_seed','','\n',dm.params);
+                dver=textscan(IssmConfig('_DAKOTA_VERSION_'),'%[0123456789].%[0123456789].%[0123456789]');
+                if ((str2num(dver{1}{1})==4 && str2num(dver{2}{1})>2) || str2num(dver{1}{1})>4)
+                    param_write(fid,sbeg,'rng','                ','\n',dm.params);
+                end
+                param_write(fid,sbeg,'samples','          = ','\n',dm.params);
+                param_write(fid,sbeg,'sample_type','        ','\n',dm.params);
+                param_write(fid,sbeg,'all_variables','','\n',dm.params);
+                param_write(fid,sbeg,'variance_based_decomp','','\n',dm.params);
+                if strcmp(dm.params.sample_type,'incremental_random') || ...
+                   strcmp(dm.params.sample_type,'incremental_lhs'   )
+                    param_write(fid,sbeg,'previous_samples',' = ','\n',dm.params);
+                end
+                param_write(fid,sbeg,'output',' ','\n',dm.params);
+
+            case {'nond_local_reliability'}
+                param_write(fid,sbeg,'max_iterations','           = ','\n',dm.params);
+                param_write(fid,sbeg,'convergence_tolerance','    = ','\n',dm.params);
+
+                param_write(fid,sbeg,'mpp_search','  = ','\n',dm.params);
+                if ischar(dm.params.mpp_search)
+                    if (dm.params.sqp + ...
+                        dm.params.nip > 1)
+                        error('''%s'' method must have only one algorithm.',...
+                            dm.method);
+                    end
+                    param_write(fid,sbeg,'sqp','','\n',dm.params);
+                    param_write(fid,sbeg,'nip','','\n',dm.params);
+                    param_write(fid,sbeg,'integration','   ','\n',dm.params);
+                    param_write(fid,sbeg,'refinement','  = ','\n',dm.params);
+                    if ischar(dm.params.refinement)
+                        param_write(fid,sbeg,'samples','     = ','\n',dm.params);
+                        param_write(fid,sbeg,'seed','        = ','\n',dm.params);
+                    end
+                end
+                param_write(fid,sbeg,'output',' ','\n',dm.params);
+
+            case {'nond_global_reliability'}
+                if (dm.params.x_gaussian_process + ...
+                    dm.params.u_gaussian_process ~= 1)
+                    error('''%s'' method must have one and only one algorithm.',...
+                        dm.method);
+                end
+                param_write(fid,sbeg,'x_gaussian_process','','\n',dm.params);
+                param_write(fid,sbeg,'u_gaussian_process','','\n',dm.params);
+                param_write(fid,sbeg,'all_variables','','\n',dm.params);
+                param_write(fid,sbeg,'seed',' = ','\n',dm.params);
+
+            case {'nond_polynomial_chaos'}
+                param_write(fid,sbeg,'expansion_order','       = ','\n',dm.params);
+                param_write(fid,sbeg,'expansion_terms','       = ','\n',dm.params);
+                param_write(fid,sbeg,'quadrature_order','      = ','\n',dm.params);
+                param_write(fid,sbeg,'sparse_grid_level','     = ','\n',dm.params);
+                param_write(fid,sbeg,'expansion_samples','     = ','\n',dm.params);
+                param_write(fid,sbeg,'incremental_lhs','','\n',dm.params);
+                param_write(fid,sbeg,'collocation_points','    = ','\n',dm.params);
+                param_write(fid,sbeg,'collocation_ratio','     = ','\n',dm.params);
+                param_write(fid,sbeg,'reuse_samples','','\n',dm.params);
+                param_write(fid,sbeg,'expansion_import_file',' = ','\n',dm.params);
+                param_write(fid,sbeg,'seed','                  = ','\n',dm.params);
+                param_write(fid,sbeg,'fixed_seed','','\n',dm.params);
+                param_write(fid,sbeg,'samples','               = ','\n',dm.params);
+                param_write(fid,sbeg,'sample_type','           = ','\n',dm.params);
+                param_write(fid,sbeg,'all_variables','','\n',dm.params);
+
+            case {'nond_stoch_collocation'}
+                param_write(fid,sbeg,'quadrature_order','  = ','\n',dm.params);
+                param_write(fid,sbeg,'sparse_grid_level',' = ','\n',dm.params);
+                param_write(fid,sbeg,'seed','              = ','\n',dm.params);
+                param_write(fid,sbeg,'fixed_seed','','\n',dm.params);
+                param_write(fid,sbeg,'samples','           = ','\n',dm.params);
+                param_write(fid,sbeg,'sample_type','       = ','\n',dm.params);
+                param_write(fid,sbeg,'all_variables','','\n',dm.params);
+
+            case {'nond_evidence'}
+                param_write(fid,sbeg,'seed','    = ','\n',dm.params);
+                param_write(fid,sbeg,'samples',' = ','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'dace'}
+        switch dm.method
+            case {'dace'}
+                if (dm.params.grid + ...
+                    dm.params.random + ...
+                    dm.params.oas + ...
+                    dm.params.lhs + ...
+                    dm.params.oa_lhs + ...
+                    dm.params.box_behnken + ...
+                    dm.params.central_composite ~= 1)
+                    error('''%s'' method must have one and only one algorithm.',...
+                        dm.method);
+                end
+                param_write(fid,sbeg,'grid','','\n',dm.params);
+                param_write(fid,sbeg,'random','','\n',dm.params);
+                param_write(fid,sbeg,'oas','','\n',dm.params);
+                param_write(fid,sbeg,'lhs','','\n',dm.params);
+                param_write(fid,sbeg,'oa_lhs','','\n',dm.params);
+                param_write(fid,sbeg,'box_behnken','','\n',dm.params);
+                param_write(fid,sbeg,'central_composite','','\n',dm.params);
+                param_write(fid,sbeg,'seed','    = ','\n',dm.params);
+                param_write(fid,sbeg,'fixed_seed','','\n',dm.params);
+                param_write(fid,sbeg,'samples',' = ','\n',dm.params);
+                param_write(fid,sbeg,'symbols',' = ','\n',dm.params);
+                param_write(fid,sbeg,'quality_metrics','','\n',dm.params);
+                param_write(fid,sbeg,'variance_based_decomp','','\n',dm.params);
+
+            case {'fsu_quasi_mc'}
+                if (dm.params.halton + ...
+                    dm.params.hammersley ~= 1)
+                    error('''%s'' method must have one and only one sequence type.',...
+                        dm.method);
+                end
+                param_write(fid,sbeg,'halton','','\n',dm.params);
+                param_write(fid,sbeg,'hammersley','','\n',dm.params);
+                param_write(fid,sbeg,'samples','        = ','\n',dm.params);
+                param_write(fid,sbeg,'sequence_start',' = ','\n',dm.params);
+                param_write(fid,sbeg,'sequence_leap','  = ','\n',dm.params);
+                param_write(fid,sbeg,'prime_base','     = ','\n',dm.params);
+                param_write(fid,sbeg,'fixed_sequence','','\n',dm.params);
+                param_write(fid,sbeg,'latinize','','\n',dm.params);
+                param_write(fid,sbeg,'variance_based_decomp','','\n',dm.params);
+                param_write(fid,sbeg,'quality_metrics','','\n',dm.params);
+
+            case {'fsu_cvt'}
+                param_write(fid,sbeg,'seed','       = ','\n',dm.params);
+                param_write(fid,sbeg,'fixed_seed','','\n',dm.params);
+                param_write(fid,sbeg,'samples','    = ','\n',dm.params);
+                param_write(fid,sbeg,'num_trials',' = ','\n',dm.params);
+                param_write(fid,sbeg,'trial_type',' = ','\n',dm.params);
+                param_write(fid,sbeg,'latinize','','\n',dm.params);
+                param_write(fid,sbeg,'variance_based_decomp','','\n',dm.params);
+                param_write(fid,sbeg,'quality_metrics','','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+    case {'param'}
+        param_write(fid,sbeg,'output',' ','\n',dm.params);
+        switch dm.method
+            case {'vector_parameter_study'}
+                if ~xor(isempty(dm.params.final_point), ...
+                        isempty(dm.params.step_vector))
+                    error('''%s'' method must have one and only one specification.',...
+                        dm.method);
+                end
+                if     ~isempty(dm.params.final_point)
+                    param_write(fid,sbeg,'final_point',' = ','\n',dm.params);
+                    param_write(fid,sbeg,'step_length',' = ','\n',dm.params);
+                    param_write(fid,sbeg,'num_steps','   = ','\n',dm.params);
+                elseif ~isempty(dm.params.step_vector)
+                    param_write(fid,sbeg,'step_vector',' = ','\n',dm.params);
+                    param_write(fid,sbeg,'num_steps','   = ','\n',dm.params);
+                end
+
+            case {'list_parameter_study'}
+                param_write(fid,sbeg,'list_of_points',' = ','\n',dm.params);
+
+            case {'centered_parameter_study'}
+                param_write(fid,sbeg,'percent_delta','       = ','\n',dm.params);
+                param_write(fid,sbeg,'deltas_per_variable',' = ','\n',dm.params);
+
+            case {'multidim_parameter_study'}
+                param_write(fid,sbeg,'partitions',' = ','\n',dm.params);
+
+            otherwise
+                error('Unrecognized ''%s'' method: ''%s''.',dm.type,dm.method);
+        end
+
+	case {'bayes'}
+		switch dm.method
+				case {'bayes_calibration'}
+               % if (dm.params.queso + ...
+                %    dm.params.dream + ...
+					%	 dm.params.gpmsa ~= 1)
+                %    error('''%s'' method must have one and only one bayes type. YOU SUCK',...
+                 %       dm.method);
+               % end
+                param_write(fid,sbeg,'queso','','\n',dm.params);
+                param_write(fid,sbeg,'dream','','\n',dm.params);
+                param_write(fid,sbeg,'gpmsa','','\n',dm.params);
+                param_write(fid,sbeg,'samples','        = ','\n',dm.params);
+                param_write(fid,sbeg,'seed','      = ','\n',dm.params);
+					 param_write(fid,sbeg,'output','    =','\n',dm.params);
+					 param_write(fid,sbeg,'metropolis_hastings','','\n',dm.params);
+					 param_write(fid,sbeg,'proposal_covariance','','\n',dm.params);
+					 param_write(fid,sbeg,'diagonal','','\n',dm.params);
+					 param_write(fid,sbeg,'values','     = ','\n',dm.params);
+		end
+
+	case {'polynomial_chaos'}
+		switch dm.method
+				case {'polynomial_chaos'}
+					param_write(fid,sbeg,'sparse_grid_level',' = ','\n',dm.params);
+					fprintf(fid,'\t  dimension_adaptive p_refinement sobol\n');
+					fprintf(fid,'\t  \tmax_iterations  = 3\n');
+					fprintf(fid,'\t  \tconvergence_tol = 1.e-1\n');
+			end
+
+    otherwise
+        error('Unrecognized method type: ''%s''.',dm.type);
+end
+
+end
+
+function param_struc_write(fidi,sbeg,smid,send,params) % {{{
+	%%  function to write a structure of parameters
+
+	%  loop through each parameter field in the structure
+
+	fnames=fieldnames(params);
+
+	for i=1:numel(fnames)
+		param_write(fidi,sbeg,fnames{i},smid,send,params);
+	end
+
+end %}}}
+function param_write(fidi,sbeg,pname,smid,send,params) % {{{
+%%  function to write a parameter
+
+	%  check for errors
+
+	if ~isfield(params,pname)
+		warning('param_write:param_not_found','Parameter ''%s'' not found in ''%s''.',pname,inputname(6));
+		return
+	elseif islogical(params.(pname)) && ~params.(pname)
+		return
+	elseif isempty(params.(pname))
+		warning('param_write:param_empty','Parameter ''%s'' requires input of type ''%s''.',...
+			pname,class(params.(pname)));
+		return
+	end
+
+	%  construct the parameter string based on type
+	if islogical(params.(pname))
+		fprintf(fidi,[sbeg '%s' send],pname);
+	elseif isnumeric(params.(pname))
+		fprintf(fidi,[sbeg '%s' smid '%g'],pname,params.(pname)(1));
+		for i=2:numel(params.(pname))
+			fprintf(fidi,[' %g'],params.(pname)(i));
+		end
+		fprintf(fidi,[send]);
+	elseif ischar   (params.(pname))
+		fprintf(fidi,[sbeg '%s' smid '%s' send],pname,params.(pname));
+	else
+		warning('param_write:param_unrecog','Parameter ''%s'' is of unrecognized type ''%s''.',pname,class(params.(pname)));
+	end
+end% }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dmeth_params_write.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dmeth_params_write.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/dakota_method/dmeth_params_write.py	(revision 27955)
@@ -0,0 +1,538 @@
+from dakota_method import *
+from MatlabFuncs import *
+from IssmConfig import *
+#move this later:
+from helpers import *
+
+
+def dmeth_params_write(dm, fid, sbeg='\t  '):
+    """write the parameters from a dakota_method object.
+    [] = dmeth_params_write(dm, fid, sbeg)
+    """
+
+    if not isinstance(dm, dakota_method):
+        raise RuntimeError('Object ' + str(dm) + ' is a ' + type(dm) + ' class object, not < dakota_method > .')
+
+    if sbeg is None or sbeg == '':
+        sbeg = '\t  '
+
+    #  perform some error checking, but leave the rest to dakota.
+    #  unfortunately this prevents merely looping through the fields
+    #  of the parameters structure.
+
+    #  write method - indepent controls
+
+    # param_write(fid, sbeg, 'id_method', ' = ', '\n', dm.params)
+    # param_write(fid, sbeg, 'model_pointer', ' = ', '\n', dm.params)
+
+    #  write method - depent controls
+
+    #switch dm.type
+    if dm.type == 'dot':
+        param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'convergence_tolerance', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'constraint_tolerance', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
+        param_write(fid, sbeg, 'speculative', '', '\n', dm.params)
+        param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
+    #switch dm.method
+        if dm.method in ['dot_bfgs',
+                         'dot_frcg',
+                         'dot_mmfd',
+                         'dot_slp',
+                         'dot_sqp']:
+            param_write(fid, sbeg, 'optimization_type', ' = ', '\n', dm.params)
+
+        else:
+            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
+
+    elif dm.type == 'npsol':
+        param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'convergence_tolerance', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'constraint_tolerance', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
+        param_write(fid, sbeg, 'speculative', '', '\n', dm.params)
+        param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
+    #switch dm.method
+        if dm.method == 'npsol_sqp':
+            param_write(fid, sbeg, 'verify_level', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'function_precision', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'linesearch_tolerance', ' = ', '\n', dm.params)
+
+        else:
+            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
+
+    elif dm.type == 'conmin':
+        param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'convergence_tolerance', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'constraint_tolerance', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
+        param_write(fid, sbeg, 'speculative', '', '\n', dm.params)
+        param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
+    #switch dm.method
+        if dm.method in ['conmin_frcg', 'conmin_mfd']:
+            pass
+        else:
+            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
+
+    elif dm.type == 'optpp':
+        param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'convergence_tolerance', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
+        param_write(fid, sbeg, 'speculative', '', '\n', dm.params)
+        param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
+    #switch dm.method
+        if dm.method == 'optpp_cg':
+            param_write(fid, sbeg, 'max_step', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'gradient_tolerance', ' = ', '\n', dm.params)
+
+        elif dm.method in ['optpp_q_newton', 'optpp_fd_newton', 'optpp_newton']:
+            if (dm.params.value_based_line_search + dm.params.gradient_based_line_search + dm.params.trust_region + dm.params.tr_pds > 1):
+                raise RuntimeError('  #s'' method must have only one algorithm.', dm.method)
+            param_write(fid, sbeg, 'value_based_line_search', '', '\n', dm.params)
+            param_write(fid, sbeg, 'gradient_based_line_search', '', '\n', dm.params)
+            param_write(fid, sbeg, 'trust_region', '', '\n', dm.params)
+            param_write(fid, sbeg, 'tr_pds', '', '\n', dm.params)
+            param_write(fid, sbeg, 'max_step', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'gradient_tolerance', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'merit_function', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'central_path', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'steplength_to_boundary', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'centering_parameter', ' = ', '\n', dm.params)
+
+        elif dm.method == 'optpp_pds':
+            param_write(fid, sbeg, 'search_scheme_size', ' = ', '\n', dm.params)
+
+        else:
+            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
+
+    elif dm.type == 'apps':
+        param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'constraint_tolerance', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
+        param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
+    #switch dm.method
+        if dm.method == 'asynch_pattern_search':
+            param_write(fid, sbeg, 'initial_delta', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'threshold_delta', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'contraction_factor', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'solution_target', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'synchronization', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'merit_function', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'constraint_penalty', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'smoothing_factor', ' = ', '\n', dm.params)
+
+        else:
+            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
+
+    elif dm.type == 'coliny':
+        param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'convergence_tolerance', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
+        param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
+        param_write(fid, sbeg, 'show_misc_options', '', '\n', dm.params)
+        param_write(fid, sbeg, 'misc_options', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'solution_accuracy', ' = ', '\n', dm.params)
+    #switch dm.method
+        if dm.method == 'coliny_cobyla':
+            param_write(fid, sbeg, 'initial_delta', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'threshold_delta', ' = ', '\n', dm.params)
+
+        elif dm.method == 'coliny_direct':
+            param_write(fid, sbeg, 'division', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'global_balance_parameter', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'local_balance_parameter', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'max_boxsize_limit', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'min_boxsize_limit', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'constraint_penalty', ' = ', '\n', dm.params)
+
+        elif dm.method == 'coliny_ea':
+            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'population_size', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'initialization_type', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'fitness_type', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'replacement_type', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'random', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'chc', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'elitist', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'new_solutions_generated', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'crossover_type', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'crossover_rate', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'mutation_type', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'mutation_scale', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'mutation_range', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'dimension_ratio', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'mutation_rate', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'non_adaptive', '', '\n', dm.params)
+
+        elif dm.method == 'coliny_pattern_search':
+            param_write(fid, sbeg, 'stochastic', '', '\n', dm.params)
+            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'initial_delta', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'threshold_delta', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'constraint_penalty', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'constant_penalty', '', '\n', dm.params)
+            param_write(fid, sbeg, 'pattern_basis', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'total_pattern_size', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'no_expansion', '', '\n', dm.params)
+            param_write(fid, sbeg, 'expand_after_success', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'contraction_factor', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'synchronization', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'exploratory_moves', ' = ', '\n', dm.params)
+
+        elif dm.method == 'coliny_solis_wets':
+            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'initial_delta', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'threshold_delta', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'no_expansion', '', '\n', dm.params)
+            param_write(fid, sbeg, 'expand_after_success', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'contract_after_failure', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'contraction_factor', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'constraint_penalty', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'constant_penalty', '', '\n', dm.params)
+
+        else:
+            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
+
+    elif dm.type == 'ncsu':
+        param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
+    #switch dm.method
+        if dm.method == 'ncsu_direct':
+            param_write(fid, sbeg, 'solution_accuracy', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'min_boxsize_limit', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'vol_boxsize_limit', ' = ', '\n', dm.params)
+
+        else:
+            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
+
+    elif dm.type == 'jega':
+        param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
+        param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
+        param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'log_file', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'population_size', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'print_each_pop', '', '\n', dm.params)
+        param_write(fid, sbeg, 'output', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'initialization_type', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'mutation_type', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'mutation_scale', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'mutation_rate', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'replacement_type', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'below_limit', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'shrinkage_percentage', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'crossover_type', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'multi_point_binary', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'multi_point_parameterized_binary', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'multi_point_real', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'shuffle_random', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'num_parents', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'num_offspring', ' = ', '\n', dm.params)
+        param_write(fid, sbeg, 'crossover_rate', ' = ', '\n', dm.params)
+
+    #switch dm.method
+        if dm.method == 'moga':
+            param_write(fid, sbeg, 'fitness_type', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'niching_type', ' = ', '\n', dm.params)
+            if not isempty(dm.params.radial) and not isempty(dm.params.distance):
+                raise RuntimeError('  #s'' method must have only one niching distance.', dm.method)
+            param_write(fid, sbeg, 'radial', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'distance', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'metric_tracker', '', '\n', dm.params)
+            param_write(fid, sbeg, 'percent_change', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'num_generations', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'postprocessor_type', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'orthogonal_distance', ' = ', '\n', dm.params)
+
+        elif dm.method == 'soga':
+            param_write(fid, sbeg, 'fitness_type', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'constraint_penalty', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'replacement_type', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'convergence_type', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'num_generations', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'percent_change', ' = ', '\n', dm.params)
+
+        else:
+            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
+
+    elif dm.type == 'lsq':
+        #switch dm.method
+        if dm.method == 'nl2sol':
+            param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'convergence_tolerance', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
+            param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
+            param_write(fid, sbeg, 'function_precision', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'absolute_conv_tol', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'x_conv_tol', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'singular_conv_tol', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'singular_radius', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'false_conv_tol', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'initial_trust_radius', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'covariance', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'regression_stressbalances', '', '\n', dm.params)
+
+        elif dm.method == 'nlssol_sqp':
+            param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'convergence_tolerance', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'constraint_tolerance', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
+            param_write(fid, sbeg, 'speculative', '', '\n', dm.params)
+            param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
+            param_write(fid, sbeg, 'verify_level', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'function_precision', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'linesearch_tolerance', ' = ', '\n', dm.params)
+
+        elif dm.method == 'optpp_g_newton':
+            param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'max_function_evaluations', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'convergence_tolerance', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
+            param_write(fid, sbeg, 'speculative', '', '\n', dm.params)
+            param_write(fid, sbeg, 'scaling', '', '\n', dm.params)
+
+            if (dm.params.value_based_line_search + dm.params.gradient_based_line_search + dm.params.trust_region + dm.params.tr_pds > 1):
+                raise RuntimeError('  #s'' method must have only one algorithm.', dm.method)
+
+            param_write(fid, sbeg, 'value_based_line_search', '', '\n', dm.params)
+            param_write(fid, sbeg, 'gradient_based_line_search', '', '\n', dm.params)
+            param_write(fid, sbeg, 'trust_region', '', '\n', dm.params)
+            param_write(fid, sbeg, 'tr_pds', '', '\n', dm.params)
+            param_write(fid, sbeg, 'max_step', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'gradient_tolerance', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'merit_function', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'central_path', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'steplength_to_boundary', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'centering_parameter', ' = ', '\n', dm.params)
+
+        else:
+            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
+
+    elif dm.type == 'nond':
+        #switch dm.method
+        if dm.method == 'nond_sampling':
+            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'fixed_seed', '', '\n', dm.params)
+            dver = str(IssmConfig('_DAKOTA_VERSION_')[0])
+            if ((int(dver[0]) == 4 and int(dver[2]) > 2) or int(dver[0]) > 4):
+                param_write(fid, sbeg, 'rng', '                ', '\n', dm.params)
+                param_write(fid, sbeg, 'samples', ' = ', '\n', dm.params)
+                param_write(fid, sbeg, 'sample_type', '        ', '\n', dm.params)
+                param_write(fid, sbeg, 'all_variables', '', '\n', dm.params)
+                param_write(fid, sbeg, 'variance_based_decomp', '', '\n', dm.params)
+                if strcmp(dm.params.sample_type, 'incremental_random') or strcmp(dm.params.sample_type, 'incremental_lhs'):
+                    param_write(fid, sbeg, 'previous_samples', ' = ', '\n', dm.params)
+                    param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
+
+        elif dm.method == 'nond_local_reliability':
+            param_write(fid, sbeg, 'max_iterations', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'convergence_tolerance', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'mpp_search', ' = ', '\n', dm.params)
+            if type(dm.params.mpp_search) == str:
+                if (dm.params.sqp + dm.params.nip > 1):
+                    raise RuntimeError('  #s'' method must have only one algorithm.', dm.method)
+
+                param_write(fid, sbeg, 'sqp', '', '\n', dm.params)
+                param_write(fid, sbeg, 'nip', '', '\n', dm.params)
+                param_write(fid, sbeg, 'integration', '   ', '\n', dm.params)
+                param_write(fid, sbeg, 'refinement', ' = ', '\n', dm.params)
+                if type(dm.params.refinement) == str:
+                    param_write(fid, sbeg, 'samples', ' = ', '\n', dm.params)
+                    param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
+                    param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
+
+        elif dm.method == 'nond_global_reliability':
+            if (dm.params.x_gaussian_process + dm.params.u_gaussian_process != 1):
+                raise RuntimeError('  #s'' method must have one and only one algorithm.', dm.method)
+
+            param_write(fid, sbeg, 'x_gaussian_process', '', '\n', dm.params)
+            param_write(fid, sbeg, 'u_gaussian_process', '', '\n', dm.params)
+            param_write(fid, sbeg, 'all_variables', '', '\n', dm.params)
+            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
+
+        elif dm.method == 'nond_polynomial_chaos':
+            param_write(fid, sbeg, 'expansion_order', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'expansion_terms', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'quadrature_order', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'sparse_grid_level', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'expansion_samples', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'incremental_lhs', '', '\n', dm.params)
+            param_write(fid, sbeg, 'collocation_points', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'collocation_ratio', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'reuse_samples', '', '\n', dm.params)
+            param_write(fid, sbeg, 'expansion_import_file', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'fixed_seed', '', '\n', dm.params)
+            param_write(fid, sbeg, 'samples', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'sample_type', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'all_variables', '', '\n', dm.params)
+
+        elif dm.method == 'nond_stoch_collocation':
+            param_write(fid, sbeg, 'quadrature_order', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'sparse_grid_level', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'fixed_seed', '', '\n', dm.params)
+            param_write(fid, sbeg, 'samples', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'sample_type', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'all_variables', '', '\n', dm.params)
+
+        elif dm.method == 'nond_evidence':
+            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'samples', ' = ', '\n', dm.params)
+
+        else:
+            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
+
+    elif dm.type == 'dace':
+        #switch dm.method
+        if dm.method == 'dace':
+            if (dm.params.grid + dm.params.random + dm.params.oas + dm.params.lhs + dm.params.oa_lhs + dm.params.box_behnken + dm.params.central_composite != 1):
+                raise RuntimeError('  #s'' method must have one and only one algorithm.', dm.method)
+
+            param_write(fid, sbeg, 'grid', '', '\n', dm.params)
+            param_write(fid, sbeg, 'random', '', '\n', dm.params)
+            param_write(fid, sbeg, 'oas', '', '\n', dm.params)
+            param_write(fid, sbeg, 'lhs', '', '\n', dm.params)
+            param_write(fid, sbeg, 'oa_lhs', '', '\n', dm.params)
+            param_write(fid, sbeg, 'box_behnken', '', '\n', dm.params)
+            param_write(fid, sbeg, 'central_composite', '', '\n', dm.params)
+            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'fixed_seed', '', '\n', dm.params)
+            param_write(fid, sbeg, 'samples', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'symbols', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'quality_metrics', '', '\n', dm.params)
+            param_write(fid, sbeg, 'variance_based_decomp', '', '\n', dm.params)
+
+        elif dm.method == 'fsu_quasi_mc':
+            if (dm.params.halton + dm.params.hammersley != 1):
+                raise RuntimeError('  #s'' method must have one and only one sequence type.', dm.method)
+
+            param_write(fid, sbeg, 'halton', '', '\n', dm.params)
+            param_write(fid, sbeg, 'hammersley', '', '\n', dm.params)
+            param_write(fid, sbeg, 'samples', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'sequence_start', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'sequence_leap', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'prime_base', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'fixed_sequence', '', '\n', dm.params)
+            param_write(fid, sbeg, 'latinize', '', '\n', dm.params)
+            param_write(fid, sbeg, 'variance_based_decomp', '', '\n', dm.params)
+            param_write(fid, sbeg, 'quality_metrics', '', '\n', dm.params)
+
+        elif dm.method == 'fsu_cvt':
+            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'fixed_seed', '', '\n', dm.params)
+            param_write(fid, sbeg, 'samples', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'num_trials', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'trial_type', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'latinize', '', '\n', dm.params)
+            param_write(fid, sbeg, 'variance_based_decomp', '', '\n', dm.params)
+            param_write(fid, sbeg, 'quality_metrics', '', '\n', dm.params)
+
+        else:
+            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
+
+    elif dm.type == 'param':
+        param_write(fid, sbeg, 'output', ' ', '\n', dm.params)
+    #switch dm.method
+        if dm.method == 'vector_parameter_study':
+            if not np.logical_xor(isempty(dm.params.final_point), isempty(dm.params.step_vector)):
+                raise RuntimeError(str(dm.method) + ' method must have one and only one specification.')
+
+            if not isempty(dm.params.final_point):
+                param_write(fid, sbeg, 'final_point', ' = ', '\n', dm.params)
+                param_write(fid, sbeg, 'step_length', ' = ', '\n', dm.params)
+                param_write(fid, sbeg, 'num_steps', ' = ', '\n', dm.params)
+
+            elif not isempty(dm.params.step_vector):
+                param_write(fid, sbeg, 'step_vector', ' = ', '\n', dm.params)
+                param_write(fid, sbeg, 'num_steps', ' = ', '\n', dm.params)
+
+        elif dm.method == 'list_parameter_study':
+            param_write(fid, sbeg, 'list_of_points', ' = ', '\n', dm.params)
+
+        elif dm.method == 'centered_parameter_study':
+            param_write(fid, sbeg, 'percent_delta', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'deltas_per_variable', ' = ', '\n', dm.params)
+
+        elif dm.method == 'multidim_parameter_study':
+            param_write(fid, sbeg, 'partitions', ' = ', '\n', dm.params)
+
+        else:
+            raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
+
+    elif dm.type == 'bayes':
+        #switch dm.method
+        if dm.method == 'bayes_calibration':
+            # if (dm.params.queso +
+            #    dm.params.dream +
+            #     dm.params.gpmsa ~= 1)
+            #    raise RuntimeError('''  #s'' method must have one and only one bayes type. YOU SUCK',
+            #       dm.method)
+            #
+            param_write(fid, sbeg, 'queso', '', '\n', dm.params)
+            param_write(fid, sbeg, 'dream', '', '\n', dm.params)
+            param_write(fid, sbeg, 'gpmsa', '', '\n', dm.params)
+            param_write(fid, sbeg, 'samples', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'seed', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'output', ' = ', '\n', dm.params)
+            param_write(fid, sbeg, 'metropolis_hastings', '', '\n', dm.params)
+            param_write(fid, sbeg, 'proposal_covariance', '', '\n', dm.params)
+            param_write(fid, sbeg, 'diagonal', '', '\n', dm.params)
+            param_write(fid, sbeg, 'values', ' = ', '\n', dm.params)
+
+    else:
+        raise RuntimeError('Unrecognized ' + dm.type + ' method: ' + dm.method + '.')
+
+
+#  function to write a structure of parameters
+def param_struc_write(fidi, sbeg, smid, s, params):
+    #  loop through each parameter field in the structure
+    fnames = fieldnames(params)
+    for i in range(np.size(fnames)):
+        param_write(fidi, sbeg, fnames[i], smid, s, params)
+
+    return
+
+
+#  function to write a parameter
+def param_write(fidi, sbeg, pname, smid, s, params):
+    #  check for errors
+    if not isfield(params, pname):
+        print('Warning: dmeth_params_write.py::param_write: Parameter {} not found in {}.'.format(pname, params))
+        return
+    elif type(vars(params)[pname]) == bool and not vars(params)[pname]:
+        return
+    elif isempty(vars(params)[pname]):
+        print('Warning: dmeth_params_write.py::param_write: Parameter {} requires input of type {}.'.format(pname, type(vars(params)[pname])))
+        return
+
+    #  construct the parameter string based on type
+    if type(vars(params)[pname]) == bool:
+        fidi.write(sbeg + str(pname) + s)
+
+    elif type(vars(params)[pname]) in [int, float]:
+        fidi.write(sbeg + str(pname) + smid + str(vars(params)[pname]) + s)
+
+    elif type(vars(params)[pname]) == list:
+        fidi.write(sbeg + str(pname) + smid + str(vars(params)[pname][0]))
+        for i in range(1, np.size(vars(params)[pname])):
+            fidi.write(' ' + str(vars(params)[pname][i]))
+
+        fidi.write(s)
+
+    elif type(vars(params)[pname]) == str:
+        fidi.write(sbeg + str(pname) + smid + str(vars(params)[pname]) + s)
+
+    else:
+        print('Warning: dmeth_params_write.py::param_write: Parameter {} is of unrecognized type {}.'.format(pname, type(vars(params)[pname])))
+    return
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/histogram_bin_uncertain.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/histogram_bin_uncertain.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/histogram_bin_uncertain.m	(revision 27955)
@@ -0,0 +1,156 @@
+%HISTOGRAM BIN UNCERTAIN class definition
+%
+%	Usage: 
+%   hbu=histogram_bin_uncertain('descriptor',descriptor,'pairs_per_variable',pairs_per_variable,...
+%           'abscissas',abscissas,'counts',counts,'partition',partition)
+%      
+%      where hbu is the histogram_bin_uncertain object returned by the constructor, pairs_per_variable the 
+%      size of the histogram, 'abscissas' and 'counts' describe the histogram itself. 
+%      If the variable is distributed, then a partition vector can be supplied, which can be a 
+%      partition vector over elements or vertices. In which case counts, 
+%
+%   Example:
+%      md.qmu.variables.giaid=histogram_bin_uncertain('descriptor','GiammeModelId','pairs_per_variable',3,...
+%           'count',[.6 .4 0],''abscissas',[1 2 3]);
+%      md.qmu.variables.surfaceloadid=histogram_bin_uncertain(...
+%           'descriptor','distributed_SurfaceloadModelId','pairs_per_variable',[2 3 4],...
+%           'counts',{[1 0],[.6 .4 0],[.4 .4 .2 0]},...
+%           'abscissas',{[1 2],[1 2 3],[1 2 3 4]},...
+%           'partition',partition_vector);
+
+classdef histogram_bin_uncertain
+	properties
+		descriptor='';
+		pairs_per_variable={};
+		abscissas = {};
+		counts = [];
+		partition=[];
+	end
+	methods
+		function self=histogram_bin_uncertain(varargin) % {{{
+		
+			%recover options:
+			options=pairoptions(varargin{:});
+
+			%initialize fields:
+			self.descriptor=getfieldvalue(options,'descriptor');
+			self.pairs_per_variable=getfieldvalue(options,'pairs_per_variable');
+			self.abscissas=getfieldvalue(options,'abscissas');
+			self.counts=getfieldvalue(options,'counts');
+
+			%if the variable is distributed,  a partition vector should have been 
+			%supplied, and that partition vector should have as many partitions 
+			%as the pairs_per_variable, abscissas and counts arrays: 
+			if self.isdistributed(),
+				self.partition=getfieldvalue(options,'partition');
+				npart=qmupart2npart(self.partition);
+				if npart~=length(self.pairs_per_variable),
+					error(sprintf('histogram_bin_uncertain constructor: for the distributed variable  %s the number of pairs_per_variable arrays (%i) should be equal to the number of partitions (%i)',self.descriptor,length(self.pairs_per_variable),npart));
+				end
+				if npart~=length(self.abscissas),
+					error(sprintf('histogram_bin_uncertain constructor: for the distributed variable  %s the number of abscissas arrays (%i) should be equal to the number of partitions (%i)',self.descriptor,length(self.abscissas),npart));
+				end
+				if npart~=length(self.counts),
+					error(sprintf('histogram_bin_uncertain constructor: for the distributed variable  %s the size of counts (%i) should be equal to the number of partitions (%i)',self.descriptor,length(self.counts),npart));
+				end
+			end
+		end % }}}
+		function md=checkconsistency(self,md,solution,analyses) % {{{
+		end % }}}
+			function disp(self) % {{{
+			disp(sprintf('   histogram_bin uncertain variable: '));
+			fielddisplay(self,'descriptor','name tag');
+			fielddisplay(self,'pairs_per_variable','number of bins in histogram');
+			fielddisplay(self,'abscissas','abscissas for histogram');
+			fielddisplay(self,'counts','probabilities for histogram');
+			if ~isempty(self.partition),
+				fielddisplay(self,'partition','partition vector defining where sampling will occur');
+			end
+		end
+		%}}}
+		%virtual functions needed by qmu processing algorithms:
+		%implemented:
+        function [desc]=prop_desc(hbu,dstr) % {{{ 
+            desc=cell(1,numel(hbu));
+            for i=1:numel(hbu)
+                if ~isempty(hbu(i).descriptor)
+                    desc(i)=cellstr(hbu(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(hbu,i,'vector')]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(hbu,i,'vector')]);
+                else
+                    desc(i)=cellstr(['hbu'        string_dim(hbu,i,'vector')]);
+                end
+            end
+            desc=allempty(desc);
+        end  %}}}
+        function [mean]=prop_mean(hbu) % {{{
+            mean=[];
+        end % }}}
+        function [stddev]=prop_stddev(hbu) % {{{
+            stddev=[];
+        end % }}}
+        function [lower]=prop_lower(hbu) % {{{
+            lower=[];
+        end % }}}
+        function [upper]=prop_upper(hbu) % {{{
+            upper=[];
+        end % }}}
+		function [pairs_per_variable] =prop_pairs_per_variable(hbu) % {{{
+			pairs_per_variable=[];
+            for i=1:numel(hbu)
+                pairs_per_variable=[pairs_per_variable hbu(i).pairs_per_variable];
+            end
+        end % }}}
+		function [abscissas]=prop_abscissas(hbu) % {{{
+			abscissas=[]; 
+			for i=1:numel(hbu)
+				abscissas=[abscissas hbu(i).abscissas'];
+			end
+			abscissas=allequal(abscissas,-Inf);
+		end % }}}
+   		function [counts] =prop_counts(hbu) % {{{
+			counts=[]; 
+			for i=1:numel(hbu)
+				counts=[counts hbu(i).counts'];
+			end
+			counts=allequal(counts,-Inf);
+        end % }}}
+        function [initpt]=prop_initpt(hbu) % {{{
+            initpt=[];
+        end % }}}
+        function [initst]=prop_initst(hbu) % {{{ 
+            initst=[];
+        end % }}}
+        function [stype]=prop_stype(hbu) % {{{
+            stype={};
+        end % }}}
+        function [scale]=prop_scale(hbu) % {{{
+            scale=[]; 
+        end % }}}
+		function scaled=isscaled(self) % {{{
+			if strncmp(self.descriptor,'scaled_',7),
+				scaled=1;
+			else
+				scaled=0;
+			end
+		end % }}}
+		function distributed=isdistributed(self) % {{{
+			if strncmp(self.descriptor,'distributed_',12),
+				distributed=1;
+			else
+				distributed=0;
+			end
+		end % }}}
+	end
+    methods (Static)
+        function []=dakota_write(fidi,dvar) % {{{
+			% collect only the variables of the appropriate class
+			hbu=struc_class(dvar,'histogram_bin_uncertain');
+
+			% write variables
+            vlist_write(fidi,'histogram_bin_uncertain','hbu',hbu);
+        end % }}}
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/histogram_bin_uncertain.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/histogram_bin_uncertain.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/histogram_bin_uncertain.py	(revision 27955)
@@ -0,0 +1,206 @@
+import numpy as np
+
+from MatlabArray import string_dim
+
+
+class histogram_bin_uncertain(object):
+    '''
+    HISTOGRAM_BIN_UNCERTAIN class definition
+
+    Usage:
+        [hbu] = histogram_bin_uncertain(
+            'descriptor', descriptor,
+            'pairs_per_variable', pairs_per_variable,
+            'abscissas', abscissas,
+            'counts', counts
+            )
+
+        where the required args are:
+            descriptor          (char, description, '')
+            pairs_per_variable  (double list, [])
+            abscissas           (double list, [])
+            counts              (int list, [])
+
+    NOTE: A call to the constructor with zero arguments will return a default 
+    instance; one argument of the class copies the instance; three or more 
+    arguments constructs a new instance from the arguments.
+    '''
+
+    def __init__(self):  # {{{
+        self.descriptor = ''
+        self.pairs_per_variable = []
+        self.abscissas = []
+        self.counts = []
+    # }}}
+
+    @staticmethod
+    def histogram_bin_uncertain(*args):  # {{{
+        nargin = len(args)
+
+        # create a default object
+        if nargin == 0:
+            return histogram_bin_uncertain()
+
+        # copy the object
+        elif nargin == 1:
+            if isinstance(args[0], histogram_bin_uncertain):
+                hbu = args[0]
+            else:
+                raise Exception("Object {} is a {} class object, not 'histogram_bin_uncertain'.".format(str(args[0]), str(type(args[0]))))
+
+        elif nargin == 2 or nargin == 3:
+            raise Exception("Construction of 'histogram_bin_uncertain' class object requires at least {} inputs.".format(4))
+
+        # create the object from the input
+        elif nargin == 4:
+            hbu = histogram_bin_uncertain()
+
+            #recover options:
+            options = pairoptions(*args)
+
+            #initialize fields:
+            hbu.descriptor          = options.getfieldvalue('descriptor')
+            hbu.pairs_per_variable  = options.getfieldvalue('pairs_per_variable')
+            hbu.abscissas           = options.getfieldvalue('abscissas')
+            hbu.counts              = options.getfieldvalue('counts')
+
+        else:
+            raise Exception("Construction of histogram_bin_uncertain class object requires either (1) no arguments, (2) a histogram_bin_uncertain instance to copy from, or (3) a descriptor and pairs per variable, abscissas, and counts lists")
+
+    @staticmethod
+    def __repr__(hbu):  # {{{
+        s = ""
+        for i in range(len(hbu)):
+            s += "class {} object {} = \n".format(hbu.__class__.__name__, string_dim(hbu, i))
+        s = "{}\n{}".format(s, fielddisplay(self, 'descriptor', 'name tag'))
+        s = "{}\n{}".format(s, fielddisplay(self, 'pairs_per_variable', 'pairs per variable'))
+        s = "{}\n{}".format(s, fielddisplay(self, 'abscissas', 'abscissas'))
+        s = "{}\n{}".format(s, fielddisplay(self, 'counts', 'counts'))
+
+        return s
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        return
+    # }}}
+
+    #virtual functions needed by qmu processing algorithms
+    #implemented:
+
+    @staticmethod
+    def prop_desc(hbu, dstr):  # {{{
+        desc = ['' for i in range(np.size(hbu))]
+        for i in range(np.size(hbu)):
+            if hbu[i].descriptor != '' or type(hbu[i].descriptor) != str:
+                desc[i] = str(hbu[i].descriptor)
+            elif dstr != '':
+                desc[i] = str(dstr) + str(string_dim(hbu, i, 'vector'))
+            else:
+                desc[i] = 'hbu' + str(string_dim(hbu, i, 'vector'))
+
+        desc = allempty(desc)
+
+        return desc
+    # }}}
+
+    @staticmethod
+    def prop_mean(hbu):  # {{{
+        mean = np.zeros(np.size(hbu))
+        for i in range(np.size(hbu)):
+            mean[i] = hbu[i].mean
+        return mean
+    # }}}
+
+    @staticmethod
+    def prop_stddev(hbu):  # {{{
+        stddev = np.zeros(np.size(hbu))
+        for i in range(np.size(hbu)):
+            stddev[i] = hbu[i].stddev
+        return stddev
+    # }}}
+
+    @staticmethod
+    def prop_lower(hbu):  # {{{
+        lower = []
+        return
+    # }}}
+
+    @staticmethod
+    def prop_upper(hbu):  # {{{
+        upper = []
+        return upper
+    # }}}
+
+    #default
+    @staticmethod
+    def prop_abscissas(hbu):  # {{{
+        abscissas = []
+        for i in range(len(hbu)):
+            abscissas.extend(hbu[i].abscissas)
+        abscissas = allequal(abscissas, -np.inf)
+        return abscissas
+    # }}}
+
+    @staticmethod
+    def prop_pairs_per_variable(hbu):  # {{{
+        pairs_per_variable = np.zeros((1, len(hbu)))
+        for i in range(len(hbu)):
+            pairs_per_variable[i] = hbu[i].pairs_per_variable
+        abscissas = allequal(pairs_per_variable, -np.inf)
+        return pairs_per_variable
+    # }}}
+
+    @staticmethod
+    def prop_counts(hbu):  # {{{
+        counts = []
+        for i in range(len(hbu)):
+            counts.extend(hbu[i].counts)
+        counts = allequal(counts, -np.inf)
+        return counts
+    # }}}
+
+    @staticmethod
+    def prop_initpt(hbu):  # {{{
+        initpt = []
+        return initpt
+    # }}}
+
+    @staticmethod
+    def prop_initst(hbu):  # {{{
+        inist = []
+        return inist
+    # }}}
+
+    @staticmethod
+    def prop_stype(hbu):  # {{{
+        stype = []
+        return stype
+    # }}}
+
+    @staticmethod
+    def prop_scale(hbu):  # {{{
+        scale = []
+        return scale
+    # }}}
+
+    #new methods:
+    def isscaled(self):  # {{{
+        if strncmp(self.descriptor, 'scaled_', 7):
+            return True
+        else:
+            return False
+    # }}}
+
+    @staticmethod
+    def dakota_write(fidi, dvar):
+        # possible namespace pollution, the above import seems not to work
+        from vlist_write import vlist_write
+        # collect only the variables of the appropriate class
+        hbu = deepcopy(dvar)
+        fields = fieldnames(hbu)
+        for field in fields:
+            if getattr(hbu, field)[0].__class__.__name__ != 'histogram_bin_uncertain':
+                delattr(hbu, field)
+        if len(hbu) > 0:
+            vlist_write(fidi, 'histogram_bin_uncertain', 'hbu', hbu)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/least_squares_term.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/least_squares_term.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/least_squares_term.m	(revision 27955)
@@ -0,0 +1,187 @@
+%
+%  definition for the least_squares_term class.
+%
+%  [lst]=least_squares_term(varargin)
+%
+%  where the required varargin are:
+%    descriptor    (char, description, '')
+%  and the optional varargin and defaults are:
+%    scale_type    (char, scaling type, 'none')
+%    scale         (double, scaling factor, 1.)
+%    weight        (double, weighting factor, 1.)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and one or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef least_squares_term
+    properties
+        descriptor='';
+        scale_type='none';
+        scale     = 1.;
+        weight    = 1.;
+    end
+
+    methods
+        function [lst]=least_squares_term(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if  (nargin == 1) && isa(varargin{1},'least_squares_term')
+                        lst=varargin{1};
+                    else
+                        asizec=num2cell(array_size(varargin{1:min(nargin,4)}));
+                        lst(asizec{:})=least_squares_term;
+                        clear asizec
+
+                        if ischar(varargin{1})
+                            varargin{1}=cellstr(varargin{1});
+                        end
+                        for i=1:numel(lst)
+                            if (numel(varargin{1}) > 1)
+                                lst(i).descriptor=varargin{1}{i};
+                            else
+                                lst(i).descriptor=[char(varargin{1}) string_dim(lst,i,'vector')];
+                            end
+                        end
+
+                        if (nargin >= 2)
+                            if ischar(varargin{2})
+                                varargin{2}=cellstr(varargin{2});
+                            end
+                            for i=1:numel(lst)
+                                if (numel(varargin{2}) > 1)
+                                    lst(i).scale_type=varargin{2}{i};
+                                else
+                                    lst(i).scale_type=char(varargin{2});
+                                end
+                            end
+                            if (nargin >= 3)
+                                for i=1:numel(lst)
+                                    if (numel(varargin{3}) > 1)
+                                        lst(i).scale     =varargin{3}(i);
+                                    else
+                                        lst(i).scale     =varargin{3};
+                                    end
+                                end
+                                if (nargin >= 4)
+                                    for i=1:numel(lst)
+                                        if (numel(varargin{4}) > 1)
+                                            lst(i).weight    =varargin{4}(i);
+                                        else
+                                            lst(i).weight    =varargin{4};
+                                        end
+                                    end
+
+                                    if (nargin > 4)
+                                        warning('least_squares_term:extra_arg',...
+                                            'Extra arguments for object of class ''%s''.',...
+                                            class(lst));
+                                    end
+                                end
+                            end
+                        end
+                    end
+            end
+
+        end
+
+        function []=disp(lst)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(lst)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(lst),inputname(1),string_dim(lst,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,lst(i).descriptor));
+                disp(sprintf('    scale_type: ''%s'''  ,lst(i).scale_type));
+                disp(sprintf('         scale: %g'      ,lst(i).scale));
+                disp(sprintf('        weight: %g\n'    ,lst(i).weight));
+            end
+
+        end
+
+        function [desc]  =prop_desc(lst,dstr)
+            desc=cell(1,numel(lst));
+            for i=1:numel(lst)
+                if ~isempty(lst(i).descriptor)
+                    desc(i)=cellstr(lst(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(lst,i,'vector')]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(lst,i,'vector')]);
+                else
+                    desc(i)=cellstr(['lst'        string_dim(lst,i,'vector')]);
+                end
+            end
+            desc=allempty(desc);
+        end
+        function [stype] =prop_stype(lst)
+            stype=cell(1,numel(lst));
+            for i=1:numel(lst)
+                stype(i)=cellstr(lst(i).scale_type);
+            end
+            stype=allequal(stype,'none');
+        end
+        function [scale] =prop_scale(lst)
+            scale=zeros(1,numel(lst));
+            for i=1:numel(lst)
+                scale(i)=lst(i).scale;
+            end
+            scale=allequal(scale,1.);
+        end
+        function [weight]=prop_weight(lst)
+            weight=zeros(1,numel(lst));
+            for i=1:numel(lst)
+                weight(i)=lst(i).weight;
+            end
+            weight=allequal(weight,1.);
+        end
+        function [lower] =prop_lower(lst)
+            lower=[];
+        end
+        function [upper] =prop_upper(lst)
+            upper=[];
+        end
+        function [target]=prop_target(lst)
+            target=[];
+        end
+    end
+
+    methods (Static)
+        function [rdesc]=dakota_write(fidi,dresp,rdesc)
+
+%  collect only the responses of the appropriate class
+
+            lst=struc_class(dresp,'least_squares_term');
+
+%  write responses
+
+            [rdesc]=rlist_write(fidi,'least_squares_terms','least_squares_term',lst,rdesc);
+        end
+
+        function []=dakota_rlev_write(fidi,dresp,params)
+        end
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/least_squares_term.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/least_squares_term.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/least_squares_term.py	(revision 27955)
@@ -0,0 +1,167 @@
+import numpy as np
+from rlist_write import *
+from MatlabArray import *
+
+
+class least_squares_term(object):
+    '''
+  definition for the least_squares_term class.
+
+  [lst] = least_squares_term.least_squares_term(args)
+   lst = least_squares_term()
+
+  where the required args are:
+    descriptor    (char, description, '')
+  and the optional args and defaults are:
+    scale_type    (char, scaling type, 'none')
+    scale         (double, scaling factor, 1.)
+    weight        (double, weighting factor, 1.)
+
+  note that zero arguments constructs a default instance, one
+  argument of the class copies the instance, and one or more
+  arguments constructs a new instance from the arguments.
+'''
+    def __init__(self):
+        self.descriptor = ''
+        self.scale_type = 'none'
+        self.scale = 1.
+        self.weight = 1.
+
+    @staticmethod
+    def least_squares_term(*args):
+        nargin = len(args)
+
+        #create a default object
+        if nargin == 0:
+            return least_squares_term()
+
+        #copy the object or create the object from the input
+        else:
+            if (nargin == 1) and isinstance(args[0], least_squares_term):
+                lst = args[0]
+            else:
+                asizec = np.shape(*args[0:min(nargin, 4)])
+                lst = [least_squares_term() for i in range(asizec[0]) for j in range(asizec[1])]
+
+                for i in range(np.size(lst)):
+                    if (np.size(args[0]) > 1):
+                        lst[i].descriptor = args[0][i]
+                    else:
+                        lst[i].descriptor = str(args[0]) + string_dim(lst, i, 'vector')
+
+                if (nargin >= 2):
+                    for i in range(np.size(lst)):
+                        if (np.size(args[1]) > 1):
+                            lst[i].scale_type = args[1][i]
+                        else:
+                            lst[i].scale_type = str(args[1])
+
+                if (nargin >= 3):
+                    for i in range(np.size(lst)):
+                        if (np.size(args[2]) > 1):
+                            lst[i].scale = args[2][i]
+                        else:
+                            lst[i].scale = args[2]
+
+                if (nargin >= 4):
+                    for i in range(np.size(lst)):
+                        if (np.size(args[3]) > 1):
+                            lst[i].weight = args[3][i]
+                        else:
+                            lst[i].weight = args[3]
+
+                if (nargin > 4):
+                    print('WARNING: least_squares_term:extra_arg Extra arguments for object of class ' + str(type(lst)) + '.')
+
+        return lst
+
+    def __repr__(self):
+        # display the object
+        string = '\n'
+        string += 'class "least_squares_term" object = \n'
+        string += '    descriptor: ' + str(self.descriptor) + '\n'
+        string += '    scale_type: ' + str(self.scale_type) + '\n'
+        string += '         scale: ' + str(self.scale) + '\n'
+        string += '        weight: ' + str(self.weight) + '\n'
+        return string
+
+    @staticmethod
+    def prop_desc(lst, dstr):
+        if type(lst) not in [list, np.ndarray]:
+            lst = [lst]
+
+        desc = ['' for i in range(np.size(lst))]
+        for i in range(np.size(lst)):
+            if lst[i].descriptor != '' or type(cdv[i].descriptor) != str:
+                desc[i] = str(lst[i].descriptor)
+            elif dstr != '':
+                desc[i] = str(dstr) + str(string_dim(lst, i, 'vector'))
+            else:
+                desc[i] = 'lst' + str(string_dim(lst, i, 'vector'))
+
+        desc = allempty(desc)
+        return desc
+
+    @staticmethod
+    def prop_stype(lst):
+        if type(lst) not in [list, np.ndarray]:
+            return str(lst.scale_type)
+
+        stype = ['' for i in range(np.size(lst))]
+        for i in range(np.size(lst)):
+            stype[i] = str(lst[i].scale_type)
+
+        stype = allequal(stype, 'none')
+        return stype
+
+    @staticmethod
+    def prop_scale(lst):
+        if type(lst) not in [list, np.ndarray]:
+            return lst.scale
+
+        scale = np.zeros(np.size(lst))
+        for i in range(np.size(lst)):
+            scale[i] = lst[i].scale
+
+        scale = allequal(scale, 1.)
+        return scale
+
+    @staticmethod
+    def prop_weight(lst):
+        if type(lst) not in [list, np.ndarray]:
+            return lst.weight
+
+        weight = np.zeros(np.size(lst))
+        for i in range(np.size(lst)):
+            weight[i] = lst[i].weight
+
+        weight = allequal(weight, 1.)
+        return weight
+
+    @staticmethod
+    def prop_lower(lst):
+        lower = []
+        return lower
+
+    @staticmethod
+    def prop_upper(lst):
+        upper = []
+        return upper
+
+    @staticmethod
+    def prop_target(lst):
+        target = []
+        return target
+
+    @staticmethod
+    def dakota_write(fidi, dresp, rdesc):
+        #collect only the responses of the appropriate class
+        lst = [struc_class(i, 'least_squares_term', 'lst') for i in dresp]
+
+        #write responses
+        rdesc = rlist_write(fidi, 'least_squares_terms', 'least_squares_term', lst, rdesc)
+        return rdesc
+
+    @staticmethod
+    def dakota_rlev_write(fidi, dresp, params):
+        return
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/linear_equality_constraint.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/linear_equality_constraint.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/linear_equality_constraint.m	(revision 27955)
@@ -0,0 +1,182 @@
+%
+%  constructor for the linear_equality_constraint class.
+%
+%  [lec]=linear_equality_constraint(varargin)
+%
+%  where the required varargin are:
+%    matrix        (double row, variable coefficients, NaN)
+%    target        (double vector, target values, 0.)
+%  and the optional varargin and defaults are:
+%    scale_type    (char, scaling type, 'none')
+%    scale         (double, scaling factor, 1.)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef linear_equality_constraint
+    properties
+        matrix    = NaN;
+        target    = 0.;
+        scale_type='none';
+        scale     = 1.;
+    end
+
+    methods
+        function [lec]=linear_equality_constraint(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object
+
+                case 1
+                    if isa(varargin{1},'linear_equality_constraint')
+                        lec=varargin{1};
+                    else
+                        error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+                            inputname(1),class(varargin{1}),'linear_equality_constraint');
+                    end
+
+%  create the object from the input
+
+                otherwise
+                    if     (size(varargin{1},1) == array_numel(varargin{2:min(nargin,4)}) || ...
+                            size(varargin{1},1) == 1)
+                        asizec=num2cell(array_size(varargin{2:min(nargin,4)}));
+                    elseif (array_numel(varargin{2:min(nargin,4)}) == 1)
+                        asizec=num2cell([size(varargin{1},1) 1]);
+                    else
+                        error('Matrix for object of class ''%s'' has inconsistent number of rows.',...
+                              class(lec));
+                    end
+                    lec(asizec{:})=linear_equality_constraint;
+                    clear asizec
+
+                    for i=1:numel(lec)
+                        if (size(varargin{1},1) > 1)
+                            lec(i).matrix    =varargin{1}(i,:);
+                        else
+                            lec(i).matrix    =varargin{1};
+                        end
+                    end
+
+                    if (nargin >= 2)
+                        for i=1:numel(lec)
+                            if (numel(varargin{2}) > 1)
+                                lec(i).target    =varargin{2}(i);
+                            else
+                                lec(i).target    =varargin{2};
+                            end
+                        end
+                        if (nargin >= 3)
+                            if ischar(varargin{3})
+                                varargin{3}=cellstr(varargin{3});
+                            end
+                            for i=1:numel(lec)
+                                if (numel(varargin{3}) > 1)
+                                    lec(i).scale_type=varargin{3}{i};
+                                else
+                                    lec(i).scale_type=char(varargin{3});
+                                end
+                            end
+                            if (nargin >= 4)
+                                for i=1:numel(lec)
+                                    if (numel(varargin{4}) > 1)
+                                        lec(i).scale     =varargin{4}(i);
+                                    else
+                                        lec(i).scale     =varargin{4};
+                                    end
+                                end
+
+                                if (nargin > 4)
+                                    warning('linear_equality_constraint:extra_arg',...
+                                        'Extra arguments for object of class ''%s''.',...
+                                        class(lec));
+                                end
+                            end
+                        end
+                    end
+            end
+        end
+
+        function []=disp(lec)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(lec)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(lec),inputname(1),string_dim(lec,i)));
+                disp(sprintf('        matrix: %s'      ,string_vec(lec(i).matrix)));
+                disp(sprintf('        target: %g'      ,lec(i).target));
+                disp(sprintf('    scale_type: ''%s'''  ,lec(i).scale_type));
+                disp(sprintf('         scale: %g\n'    ,lec(i).scale));
+            end
+
+        end
+
+        function [matrix]=prop_matrix(lec)
+            matrix=zeros(numel(lec),0);
+            for i=1:numel(lec)
+                matrix(i,1:size(lec(i).matrix,2))=lec(i).matrix(1,:);
+            end
+        end
+        function [lower] =prop_lower(lec)
+            lower=[];
+        end
+        function [upper] =prop_upper(lec)
+            upper=[];
+        end
+        function [target]=prop_target(lec)
+            target=zeros(size(lec));
+            for i=1:numel(lec)
+                target(i)=lec(i).target;
+            end
+            target=allequal(target,0.);
+        end
+        function [stype] =prop_stype(lec)
+            stype=cell(size(lec));
+            for i=1:numel(lec)
+                stype(i)=cellstr(lec(i).scale_type);
+            end
+            stype=allequal(stype,'none');
+        end
+        function [scale] =prop_scale(lec)
+            scale=zeros(size(lec));
+            for i=1:numel(lec)
+                scale(i)=lec(i).scale;
+            end
+            scale=allequal(scale,1.);
+        end
+    end
+
+    methods (Static)
+        function []=dakota_write(fidi,dvar)
+
+%  collect only the variables of the appropriate class
+
+            lec=struc_class(dvar,'linear_equality_constraint');
+
+%  write constraints
+
+            lclist_write(fidi,'linear_equality_constraints','linear_equality',lec);
+        end
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/linear_equality_constraint.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/linear_equality_constraint.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/linear_equality_constraint.py	(revision 27955)
@@ -0,0 +1,165 @@
+import numpy as np
+from lclist_write import *
+from MatlabArray import *
+
+
+class linear_equality_constraint:
+    '''
+  constructor for the linear_equality_constraint class.
+
+  [lec] = linear_equality_constraint.linear_equality_constraint(args)
+   lec = linear_equality_constraint()
+
+  where the required args are:
+    matrix        (double row, variable coefficients, float('NaN'))
+    target        (double vector, target values, 0.)
+  and the optional args and defaults are:
+    scale_type    (char, scaling type, 'none')
+    scale         (double, scaling factor, 1.)
+
+  note that zero arguments constructs a default instance, one
+  argument of the class copies the instance, and two or more
+  arguments constructs a new instance from the arguments.
+'''
+    def __init__(self):
+        self.matrix = np.array([[float('NaN')]])
+        self.target = 0.
+        self.scale_type = 'none'
+        self.scale = 1.
+
+    @staticmethod
+    def linear_equality_constraint(*args):
+        nargin = len(args)
+
+        #  create a default object
+        if nargin == 0:
+            return linear_equality_constraint()
+
+        #  copy the object
+        elif nargin == 1:
+            if isinstance(args[0], linear_equality_constraint):
+                lec = args[0]
+            else:
+                raise RuntimeError('Object is a ' + str(type(args[0])) + ' class object, not "linear_equality_constraint"')
+
+        #  create the object from the input
+        else:
+            if (np.shape(args[0], 1) == array_np.size(args[1:min(nargin, 4)]) or np.shape(args[0], 1) == 1):
+                asizec = np.shape(args[1:min(nargin, 4)])
+            elif (array_np.size(args[1:min(nargin, 4)]) == 1):
+                asizec = [np.shape(args[0], 1), 1]
+            else:
+                raise RuntimeError('Matrix for object of class ' + str(type(lec)) + ' has inconsistent number of rows.')
+
+            lec = [linear_equality_constraint() for i in range(asizec[0]) for j in range(asizec[1])]
+
+            for i in range(np.size(lec)):
+                if (np.shape(args[0])[0] > 1):
+                    lec[i].matrix = args[0][i, :]
+                else:
+                    lec[i].matrix = args[0]
+
+            if (nargin >= 2):
+                for i in range(np.size(lec)):
+                    if (np.size(args[1]) > 1):
+                        lec[i].target = args[1][i]
+                    else:
+                        lec[i].target = args[1]
+
+            if (nargin >= 3):
+                for i in range(np.size(lec)):
+                    if (np.size(args[2]) > 1):
+                        lec[i].scale_type = args[2][i]
+                    else:
+                        lec[i].scale_type = str(args[2])
+
+            if (nargin >= 4):
+                for i in range(np.size(lec)):
+                    if (np.size(args[3]) > 1):
+                        lec[i].scale = args[3][i]
+                    else:
+                        lec[i].scale = args[3]
+
+            if (nargin > 4):
+                print('WARNING: linear_equality_constraint:extra_arg: Extra arguments for object of class ' + str(type(lec)) + '.')
+
+        return lec
+
+    def __repr__(self):
+        # display the object
+        string = '\n'
+        string += 'class "linear_equality_constraint" object = \n'
+        string += '        matrix: ' + str(self.matrix) + '\n'
+        string += '        target: ' + str(self.target) + '\n'
+        string += '    scale_type: ' + str(self.scale_type) + '\n'
+        string += '         scale: ' + str(self.scale) + '\n'
+
+        return string
+
+    @staticmethod
+    def prop_matrix(lec):
+        if type(lec) not in [list, np.ndarray]:
+            return lec.matrix
+
+        matrix = np.zeros(np.size(lec))
+        for i in range(np.size(lec)):
+            matrix[i, 0:np.shape(lec[i].matrix)[1]] = lec[i].matrix[0, :]
+
+        return matrix
+
+    @staticmethod
+    def prop_lower(lec):
+        lower = []
+        return lower
+
+    @staticmethod
+    def prop_upper(lec):
+        upper = []
+        return upper
+
+    @staticmethod
+    def prop_target(lec):
+        if type(lec) not in [list, np.ndarray]:
+            return lec.target
+
+        target = np.zeros(np.shape(lec))
+        for i in range(np.size(lec)):
+            target[i] = lec[i].target
+
+        target = allequal(target, 0.)
+
+        return target
+
+    @staticmethod
+    def prop_stype(lec):
+        if type(lec) not in [list, np.ndarray]:
+            return lec.scale_type
+
+        stype = ['' for i in range(np.size(lec))]
+        for i in range(np.size(lec)):
+            stype[i] = str(lec[i].scale_type)
+
+        stype = allequal(stype, 'none')
+
+        return stype
+
+    @staticmethod
+    def prop_scale(lec):
+        if type(lec) not in [list, np.ndarray]:
+            return lec.scale
+
+        scale = np.zeros(np.shape(lec))
+        for i in range(np.size(lec)):
+            scale[i] = lec[i].scale
+
+        scale = allequal(scale, 1.)
+
+        return scale
+
+    @staticmethod
+    def dakota_write(fidi, dvar):
+        # collect only the variables of the appropriate class
+        lec = [struc_type(i, 'linear_equality_constraint', 'lec') for i in dvar]
+
+        # write constraints
+        lclist_write(fidi, 'linear_equality_constraints', 'linear_equality', lec)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/linear_inequality_constraint.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/linear_inequality_constraint.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/linear_inequality_constraint.m	(revision 27955)
@@ -0,0 +1,204 @@
+%
+%  constructor for the linear_inequality_constraint class.
+%
+%  [lic]=linear_inequality_constraint(varargin)
+%
+%  where the required varargin are:
+%    matrix        (double row, variable coefficients, NaN)
+%    lower         (double vector, lower bounds, -Inf)
+%    upper         (double vector, upper bounds, 0.)
+%  and the optional varargin and defaults are:
+%    scale_type    (char, scaling type, 'none')
+%    scale         (double, scaling factor, 1.)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and three or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef linear_inequality_constraint
+    properties
+        matrix    = NaN;
+        lower     =-Inf;
+        upper     = 0.;
+        scale_type='none';
+        scale     = 1.;
+    end
+
+    methods
+        function [lic]=linear_inequality_constraint(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object
+
+                case 1
+                    if isa(varargin{1},'linear_inequality_constraint')
+                        lic=varargin{1};
+                    else
+                        error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+                            inputname(1),class(varargin{1}),'linear_inequality_constraint');
+                    end
+
+%  not enough arguments
+
+                case 2
+                    error('Construction of ''%s'' class object requires at least %d inputs.',...
+                        'linear_inequality_constraint',3)
+
+%  create the object from the input
+
+                otherwise
+                    if     (size(varargin{1},1) == array_numel(varargin{2:min(nargin,5)}) || ...
+                            size(varargin{1},1) == 1)
+                        asizec=num2cell(array_size(varargin{2:min(nargin,5)}));
+                    elseif (array_numel(varargin{2:min(nargin,5)}) == 1)
+                        asizec=num2cell([size(varargin{1},1) 1]);
+                    else
+                        error('Matrix for object of class ''%s'' has inconsistent number of rows.',...
+                              class(lic));
+                    end
+                    lic(asizec{:})=linear_inequality_constraint;
+                    clear asizec
+
+                    for i=1:numel(lic)
+                        if (size(varargin{1},1) > 1)
+                            lic(i).matrix    =varargin{1}(i,:);
+                        else
+                            lic(i).matrix    =varargin{1};
+                        end
+                    end
+
+                    if (nargin >= 2)
+                        for i=1:numel(lic)
+                            if (numel(varargin{2}) > 1)
+                                lic(i).lower     =varargin{2}(i);
+                            else
+                                lic(i).lower     =varargin{2};
+                            end
+                        end
+                        if (nargin >= 3)
+                            for i=1:numel(lic)
+                                if (numel(varargin{3}) > 1)
+                                    lic(i).upper     =varargin{3}(i);
+                                else
+                                    lic(i).upper     =varargin{3};
+                                end
+                            end
+                            if (nargin >= 4)
+                                if ischar(varargin{4})
+                                    varargin{4}=cellstr(varargin{4});
+                                end
+                                for i=1:numel(lic)
+                                    if (numel(varargin{4}) > 1)
+                                        lic(i).scale_type=varargin{4}{i};
+                                    else
+                                        lic(i).scale_type=char(varargin{4});
+                                    end
+                                end
+                                if (nargin >= 5)
+                                    for i=1:numel(lic)
+                                        if (numel(varargin{5}) > 1)
+                                            lic(i).scale     =varargin{5}(i);
+                                        else
+                                            lic(i).scale     =varargin{5};
+                                        end
+                                    end
+
+                                    if (nargin > 5)
+                                        warning('linear_inequality_constraint:extra_arg',...
+                                            'Extra arguments for object of class ''%s''.',...
+                                            class(lic));
+                                    end
+                                end
+                            end
+                        end
+                    end
+            end
+        end
+
+        function []=disp(lic)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(lic)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(lic),inputname(1),string_dim(lic,i)));
+                disp(sprintf('        matrix: %s'      ,string_vec(lic(i).matrix)));
+                disp(sprintf('         lower: %g'      ,lic(i).lower));
+                disp(sprintf('         upper: %g'      ,lic(i).upper));
+                disp(sprintf('    scale_type: ''%s'''  ,lic(i).scale_type));
+                disp(sprintf('         scale: %g\n'    ,lic(i).scale));
+            end
+
+        end
+
+        function [matrix]=prop_matrix(lic)
+            matrix=zeros(numel(lic),0);
+            for i=1:numel(lic)
+                matrix(i,1:size(lic(i).matrix,2))=lic(i).matrix(1,:);
+            end
+        end
+        function [lower] =prop_lower(lic)
+            lower=zeros(size(lic));
+            for i=1:numel(lic)
+                lower(i)=lic(i).lower;
+            end
+            lower=allequal(lower,-Inf);
+        end
+        function [upper] =prop_upper(lic)
+            upper=zeros(size(lic));
+            for i=1:numel(lic)
+                upper(i)=lic(i).upper;
+            end
+            upper=allequal(upper,0.);
+        end
+        function [target]=prop_target(lic)
+            target=[];
+        end
+        function [stype] =prop_stype(lic)
+            stype=cell(size(lic));
+            for i=1:numel(lic)
+                stype(i)=cellstr(lic(i).scale_type);
+            end
+            stype=allequal(stype,'none');
+        end
+        function [scale] =prop_scale(lic)
+            scale=zeros(size(lic));
+            for i=1:numel(lic)
+                scale(i)=lic(i).scale;
+            end
+            scale=allequal(scale,1.);
+        end
+    end
+
+    methods (Static)
+        function []=dakota_write(fidi,dvar)
+
+%  collect only the variables of the appropriate class
+
+            lic=struc_class(dvar,'linear_inequality_constraint');
+
+%  write constraints
+
+            lclist_write(fidi,'linear_inequality_constraints','linear_inequality',lic);
+        end
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/linear_inequality_constraint.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/linear_inequality_constraint.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/linear_inequality_constraint.py	(revision 27955)
@@ -0,0 +1,187 @@
+import numpy as np
+from lclist_write import *
+from MatlabArray import *
+
+
+class linear_inequality_constraint:
+    '''
+  constructor for the linear_inequality_constraint class.
+
+  [lic] = linear_inequality_constraint.linear_inequality_constraint(args)
+   lic = linear_inequality_constraint()
+
+  where the required args are:
+    matrix        (double row, variable coefficients, float('NaN'))
+    lower         (double vector, lower bounds, -np.inf)
+    upper         (double vector, upper bounds, 0.)
+  and the optional args and defaults are:
+    scale_type    (char, scaling type, 'none')
+    scale         (double, scaling factor, 1.)
+
+  note that zero arguments constructs a default instance, one
+  argument of the class copies the instance, and three or more
+  arguments constructs a new instance from the arguments.
+'''
+    def __init__(self):
+        self.matrix = np.array([[float('NaN')]])
+        self.lower = -np.inf
+        self.upper = 0.
+        self.scale_type = 'none'
+        self.scale = 1.
+
+    @staticmethod
+    def linear_inequality_constraint(*args):
+        nargin = len(args)
+
+        # create a default object
+        if nargin == 0:
+            return linear_inequality_constraint()
+
+        # copy the object
+        if nargin == 1:
+            if isinstance(args[0], linear_inequality_constraint):
+                lic = args[0]
+            else:
+                raise RuntimeError('Object is a ' + str(type(args[0])) + ' class object, not "linear_inequality_constraint".')
+
+        # not enough arguments
+        if nargin == 2:
+            raise RuntimeError('Construction of linear_inequality_constraint class object requires at least 3 inputs.')
+
+        # create the object from the input
+        else:
+            if (np.shape(args[0], 1) == array_numel(args[1:min(nargin, 5)]) or np.shape(args[0], 1) == 1):
+                asizec = array_size(args[1:min(nargin, 5)])
+            elif (array_numel(args[1:min(nargin, 5)]) == 1):
+                asizec = [array_size(args[0], 1), 1]
+            else:
+                raise RuntimeError('Matrix for object of class ' + str(type(lic)) + ' has inconsistent number of rows.')
+
+            lic = [linear_inequality_constraint() for i in range(asizec[0]) for j in range(asizec[1])]
+
+            for i in range(np.size(lic)):
+                if (np.shape(args[0], 1) > 1):
+                    lic[i].matrix = args[0][i, :]
+                else:
+                    lic[i].matrix = args[0]
+
+            if (nargin >= 2):
+                for i in range(np.size(lic)):
+                    if (np.size(args[1]) > 1):
+                        lic[i].lower = args[1][i]
+                    else:
+                        lic[i].lower = args[1]
+
+            if (nargin >= 3):
+                for i in range(np.size(lic)):
+                    if (np.size(args[2]) > 1):
+                        lic[i].upper = args[2][i]
+                    else:
+                        lic[i].upper = args[2]
+
+            if (nargin >= 4):
+                for i in range(np.size(lic)):
+                    if (np.size(args[3]) > 1):
+                        lic[i].scale_type = args[3][i]
+                    else:
+                        lic[i].scale_type = str(args[3])
+
+            if (nargin >= 5):
+                for i in range(np.size(lic)):
+                    if (np.size(args[4]) > 1):
+                        lic[i].scale = args[4][i]
+                    else:
+                        lic[i].scale = args[4]
+
+            if (nargin > 5):
+                print('WARNING: linear_inequality_constraint:extra_arg: Extra arguments for object of class ' + str(type(lic)) + '.')
+
+        return lic
+
+    def __repr__(self):
+        # display the object
+        string = '\n'
+        string += 'class "linear_inequality_constraint" object = \n'
+        string += '        matrix: ' + str(string_vec(self.matrix)) + '\n'
+        string += '         lower: ' + str(self.lower) + '\n'
+        string += '         upper: ' + str(self.upper) + '\n'
+        string += '    scale_type: ' + str(self.scale_type) + '\n'
+        string += '         scale: ' + str(self.scale) + '\n'
+
+        return string
+
+    @staticmethod
+    def prop_matrix(lic):
+        if type(lic) not in [list, np.ndarray]:
+            return lic.matrix
+
+        matrix = np.zeros(np.size(lic))
+        for i in range(np.size(lic)):
+            matrix[i, 0:np.shape(lic[i].matrix)[1]] = lic[i].matrix[0, :]
+
+        return matrix
+
+    @staticmethod
+    def prop_lower(lic):
+        if type(lic) not in [list, np.ndarray]:
+            return lic.lower
+
+        lower = np.zeros(np.shape(lic))
+        for i in range(np.size(lic)):
+            lower[i] = lic[i].lower
+
+        lower = allequal(lower, -np.inf)
+
+        return lower
+
+    @staticmethod
+    def prop_upper(lic):
+        if type(lic) not in [list, np.ndarray]:
+            return lic.upper
+
+        upper = np.zeros(np.shape(lic))
+        for i in range(np.size(lic)):
+            upper[i] = lic[i].upper
+
+        upper = allequal(upper, 0.)
+
+        return upper
+
+    @staticmethod
+    def prop_target(lic):
+        target = []
+        return target
+
+    @staticmethod
+    def prop_stype(lic):
+        if type(lic) not in [list, np.ndarray]:
+            return lic.scale_type
+
+        stype = ['' for i in range(np.size(lic))]
+        for i in range(np.size(lic)):
+            stype[i] = str(lic[i].scale_type)
+
+        stype = allequal(stype, 'none')
+
+        return stype
+
+    @staticmethod
+    def prop_scale(lic):
+        if type(lic) not in [list, np.ndarray]:
+            return lic.scale
+
+        scale = np.zeros(np.shape(lic))
+        for i in range(np.size(lic)):
+            scale[i] = lic[i].scale
+
+        scale = allequal(scale, 1.)
+
+        return scale
+
+    @staticmethod
+    def dakota_write(fidi, dvar):
+        # collect only the variables of the appropriate class
+        lic = [struc_class(i, 'linear_inequality_constraint', 'lic') for i in dvar]
+
+        # write constraints
+        lclist_write(fidi, 'linear_inequality_constraints', 'linear_inequality', lic)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/nonlinear_equality_constraint.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/nonlinear_equality_constraint.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/nonlinear_equality_constraint.m	(revision 27955)
@@ -0,0 +1,189 @@
+%
+%  constructor for the nonlinear_equality_constraint class.
+%
+%  [nec]=nonlinear_equality_constraint(varargin)
+%
+%  where the required varargin are:
+%    descriptor    (char, description, '')
+%    target        (double, target value, 0.)
+%  and the optional varargin and defaults are:
+%    scale_type    (char, scaling type, 'none')
+%    scale         (double, scaling factor, 1.)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef nonlinear_equality_constraint
+    properties
+        descriptor='';
+        target    = 0.;
+        scale_type='none';
+        scale     = 1.;
+    end
+
+    methods
+        function [nec]=nonlinear_equality_constraint(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object
+
+                case 1
+                    if isa(varargin{1},'nonlinear_equality_constraint')
+                        nec=varargin{1};
+                    else
+                        error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+                            inputname(1),class(varargin{1}),'nonlinear_equality_constraint');
+                    end
+
+%  create the object from the input
+
+                otherwise
+                    asizec=num2cell(array_size(varargin{1:min(nargin,4)}));
+                    nec(asizec{:})=nonlinear_equality_constraint;
+                    clear asizec
+
+                    if ischar(varargin{1})
+                        varargin{1}=cellstr(varargin{1});
+                    end
+                    for i=1:numel(nec)
+                        if (numel(varargin{1}) > 1)
+                            nec(i).descriptor=varargin{1}{i};
+                        else
+                            nec(i).descriptor=[char(varargin{1}) string_dim(nec,i,'vector')];
+                        end
+                        if (numel(varargin{2}) > 1)
+                            nec(i).target    =varargin{2}(i);
+                        else
+                            nec(i).target    =varargin{2};
+                        end
+                    end
+
+                    if (nargin >= 3)
+                        if ischar(varargin{3})
+                            varargin{3}=cellstr(varargin{3});
+                        end
+                        for i=1:numel(nec)
+                            if (numel(varargin{3}) > 1)
+                                nec(i).scale_type=varargin{3}{i};
+                            else
+                                nec(i).scale_type=char(varargin{3});
+                            end
+                        end
+                        if (nargin >= 4)
+                            for i=1:numel(nec)
+                                if (numel(varargin{4}) > 1)
+                                    nec(i).scale     =varargin{4}(i);
+                                else
+                                    nec(i).scale     =varargin{4};
+                                end
+                            end
+
+                            if (nargin > 4)
+                                warning('objective_function:extra_arg',...
+                                    'Extra arguments for object of class ''%s''.',...
+                                    class(nec));
+                            end
+                        end
+                    end
+            end
+
+        end
+
+        function []=disp(nec)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(nec)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(nec),inputname(1),string_dim(nec,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,nec(i).descriptor));
+                disp(sprintf('        target: %g'      ,nec(i).target));
+                disp(sprintf('    scale_type: ''%s'''  ,nec(i).scale_type));
+                disp(sprintf('         scale: %g\n'    ,nec(i).scale));
+            end
+
+        end
+
+        function [desc]  =prop_desc(nec,dstr)
+            desc=cell(1,numel(nec));
+            for i=1:numel(nec)
+                if ~isempty(nec(i).descriptor)
+                    desc(i)=cellstr(nec(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(nec,i,'vector')]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(nec,i,'vector')]);
+                else
+                    desc(i)=cellstr(['nec'        string_dim(nec,i,'vector')]);
+                end
+            end
+            desc=allempty(desc);
+        end
+        function [stype] =prop_stype(nec)
+            stype=cell(size(nec));
+            for i=1:numel(nec)
+                stype(i)=cellstr(nec(i).scale_type);
+            end
+            stype=allequal(stype,'none');
+        end
+        function [scale] =prop_scale(nec)
+            scale=zeros(size(nec));
+            for i=1:numel(nec)
+                scale(i)=nec(i).scale;
+            end
+            scale=allequal(scale,1.);
+        end
+        function [weight]=prop_weight(nec)
+            weight=[];
+        end
+        function [lower] =prop_lower(nec)
+            lower=[];
+        end
+        function [upper] =prop_upper(nec)
+            upper=[];
+        end
+        function [target]=prop_target(nec)
+            target=zeros(size(nec));
+            for i=1:numel(nec)
+                target(i)=nec(i).target;
+            end
+            target=allequal(target,0.);
+        end
+    end
+
+    methods (Static)
+        function [rdesc]=dakota_write(fidi,dresp,rdesc)
+
+%  collect only the responses of the appropriate class
+
+            nec=struc_class(dresp,'nonlinear_equality_constraint');
+
+%  write responses
+
+            [rdesc]=rlist_write(fidi,'nonlinear_equality_constraints','nonlinear_equality',nec,rdesc);
+        end
+
+        function []=dakota_rlev_write(fidi,dresp,params)
+        end
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/nonlinear_equality_constraint.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/nonlinear_equality_constraint.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/nonlinear_equality_constraint.py	(revision 27955)
@@ -0,0 +1,179 @@
+import numpy as np
+from rlist_write import *
+from MatlabArray import *
+
+
+class nonlinear_equality_constraint:
+    '''
+  constructor for the nonlinear_equality_constraint class.
+
+  [nec] = nonlinear_equality_constraint.nonlinear_equality_constraint(args)
+   nec = nonlinear_equality_constraint()
+
+  where the required args are:
+    descriptor    (char, description, '')
+    target        (double vector, target values, 0.)
+  and the optional args and defaults are:
+    scale_type    (char, scaling type, 'none')
+    scale         (double, scaling factor, 1.)
+
+  note that zero arguments constructs a default instance, one
+  argument of the class copies the instance, and two or more
+  arguments constructs a new instance from the arguments.
+'''
+    def __init__(self):
+        self.descriptor = ''
+        self.target = 0.
+        self.scale_type = 'none'
+        self.scale = 1.
+
+    @staticmethod
+    def nonlinear_equality_constraint(*args):
+        nargin = len(args)
+
+    # create a default object
+        if nargin == 0:
+            return nonlinear_equality_constraint()
+
+    # copy the object
+        elif nargin == 1:
+            if isinstance(args[0], nonlinear_equality_constraint):
+                nec = args[0]
+            else:
+                raise RuntimeError('Object is a ' + str(type(args[0])) + ' class object, not "nonlinear_equality_constraint"')
+
+    # create the object from the input
+        else:
+            asizec = array_size(*args[0:min(nargin, 4)])
+            nec = [nonlinear_equality_constraint() for i in range(asizec[0]) for j in range(asizec[1])]
+
+            for i in range(np.size(nec)):
+                if (np.shape(args[0])[0] > 1):
+                    nec[i].descriptor = args[0][i]
+                else:
+                    nec[i].descriptor = str(args[0])
+                if (np.size(args[1]) > 1):
+                    nec[i].target = args[1][i]
+                else:
+                    nec[i].target = args[1]
+
+            if (nargin >= 3):
+                for i in range(np.size(nec)):
+                    if (np.size(args[2]) > 1):
+                        nec[i].scale_type = args[2][i]
+                    else:
+                        nec[i].scale_type = str(args[2])
+
+            if (nargin >= 4):
+                for i in range(np.size(nec)):
+                    if (np.size(args[3]) > 1):
+                        nec[i].scale = args[3][i]
+                    else:
+                        nec[i].scale = args[3]
+
+            if (nargin > 4):
+                print('WARNING: nonlinear_equality_constraint:extra_arg: Extra arguments for object of class ' + str(type(nec)) + '.')
+
+        return nec
+
+    def __repr__(self):
+        # display the object
+        string = '\n'
+        string += 'class "nonlinear_equality_constraint" object = \n'
+        string += '    descriptor: ' + str(self.descriptor) + '\n'
+        string += '        target: ' + str(self.target) + '\n'
+        string += '    scale_type: ' + str(self.scale_type) + '\n'
+        string += '         scale: ' + str(self.scale) + '\n'
+
+        return string
+
+    @staticmethod
+    def prop_desc(nec, dstr):
+        if type(nec) not in [list, np.ndarray]:
+            if nec.descriptor != '' or type(nec.descriptor) != str:
+                desc = str(nec.descriptor)
+            elif dstr != '':
+                desc = str(dstr)
+            else:
+                desc = 'nec'
+            return desc
+
+        desc = ['' for i in range(np.size(nec))]
+        for i in range(np.size(nec)):
+            if nec[i].descriptor != '' or type(nec[i].descriptor) != str:
+                desc[i] = str(nec[i].descriptor)
+            elif dstr != '':
+                desc[i] = str(dstr) + str(string_dim(nec, i, 'vector'))
+            else:
+                desc[i] = 'nec' + str(string_dim(nec, i, 'vector'))
+
+        desc = allempty(desc)
+
+        return desc
+
+    @staticmethod
+    def prop_lower(nec):
+        lower = []
+        return lower
+
+    @staticmethod
+    def prop_upper(nec):
+        upper = []
+        return upper
+
+    @staticmethod
+    def prop_weight(nec):
+        weight = []
+        return weight
+
+    @staticmethod
+    def prop_target(nec):
+        if type(nec) not in [list, np.ndarray]:
+            return nec.target
+
+        target = np.zeros(np.shape(nec))
+        for i in range(np.size(nec)):
+            target[i] = nec[i].target
+
+        target = allequal(target, 0.)
+
+        return target
+
+    @staticmethod
+    def prop_stype(nec):
+        if type(nec) not in [list, np.ndarray]:
+            return nec.scale_type
+
+        stype = ['' for i in range(np.size(nec))]
+        for i in range(np.size(nec)):
+            stype[i] = str(nec[i].scale_type)
+
+        stype = allequal(stype, 'none')
+
+        return stype
+
+    @staticmethod
+    def prop_scale(nec):
+        if type(nec) not in [list, np.ndarray]:
+            return nec.scale
+
+        scale = np.zeros(np.shape(nec))
+        for i in range(np.size(nec)):
+            scale[i] = nec[i].scale
+
+        scale = allequal(scale, 1.)
+
+        return scale
+
+    @staticmethod
+    def dakota_write(fidi, dresp, rdesc):
+        #  colnect only the variables of the appropriate class
+        nec = [struc_type(i, 'nonlinear_equality_constraint', 'nec') for i in dresp]
+
+        #  write constraints
+        rdesc = rlist_write(fidi, 'nonlinear_equality_constraints', 'nonlinear_equality', nec, rdesc)
+        return rdesc
+
+    @staticmethod
+    def dakota_rlev_write(fidi, dresp, params):
+        return
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/nonlinear_inequality_constraint.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/nonlinear_inequality_constraint.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/nonlinear_inequality_constraint.m	(revision 27955)
@@ -0,0 +1,207 @@
+%
+%  constructor for the nonlinear_inequality_constraint class.
+%
+%  [nic]=nonlinear_inequality_constraint(varargin)
+%
+%  where the required varargin are:
+%    descriptor    (char, description, '')
+%    lower         (double, lower bound, -Inf)
+%    upper         (double, upper bound, 0.)
+%  and the optional varargin and defaults are:
+%    scale_type    (char, scaling type, 'none')
+%    scale         (double, scaling factor, 1.)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and three or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef nonlinear_inequality_constraint
+    properties
+        descriptor='';
+        lower     =-Inf;
+        upper     = 0.;
+        scale_type='none';
+        scale     = 1.;
+    end
+
+    methods
+        function [nic]=nonlinear_inequality_constraint(varargin)
+
+            switch nargin
+
+ %  create a default object
+
+                case 0
+
+%  copy the object
+
+                case 1
+                    if isa(varargin{1},'nonlinear_inequality_constraint')
+                        nic=varargin{1};
+                    else
+                        error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+                            inputname(1),class(varargin{1}),'nonlinear_inequality_constraint');
+                    end
+
+%  not enough arguments
+
+                case 2
+                    error('Construction of ''%s'' class object requires at least %d inputs.',...
+                        'nonlinear_inequality_constraint',3)
+
+%  create the object from the input
+
+                otherwise
+                    asizec=num2cell(array_size(varargin{1:min(nargin,5)}));
+                    nic(asizec{:})=nonlinear_inequality_constraint;
+                    clear asizec
+
+                    if ischar(varargin{1})
+                        varargin{1}=cellstr(varargin{1});
+                    end
+                    for i=1:numel(nic)
+                        if (numel(varargin{1}) > 1)
+                            nic(i).descriptor=varargin{1}{i};
+                        else
+                            nic(i).descriptor=[char(varargin{1}) string_dim(nic,i,'vector')];
+                        end
+                        if (numel(varargin{2}) > 1)
+                            nic(i).lower     =varargin{2}(i);
+                        else
+                            nic(i).lower     =varargin{2};
+                        end
+                        if (numel(varargin{3}) > 1)
+                            nic(i).upper     =varargin{3}(i);
+                        else
+                            nic(i).upper     =varargin{3};
+                        end
+                    end
+
+                    if (nargin >= 4)
+                        if ischar(varargin{4})
+                            varargin{4}=cellstr(varargin{4});
+                        end
+                        for i=1:numel(nic)
+                            if (numel(varargin{4}) > 1)
+                                nic(i).scale_type=varargin{4}{i};
+                            else
+                                nic(i).scale_type=char(varargin{4});
+                            end
+                        end
+                        if (nargin >= 5)
+                            for i=1:numel(nic)
+                                if (numel(varargin{5}) > 1)
+                                    nic(i).scale     =varargin{5}(i);
+                                else
+                                    nic(i).scale     =varargin{5};
+                                end
+                            end
+
+                            if (nargin > 5)
+                                warning('objective_function:extra_arg',...
+                                    'Extra arguments for object of class ''%s''.',...
+                                    class(nic));
+                            end
+                        end
+                    end
+            end
+
+        end
+
+        function []=disp(nic)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(nic)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(nic),inputname(1),string_dim(nic,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,nic(i).descriptor));
+                disp(sprintf('         lower: %g'      ,nic(i).lower));
+                disp(sprintf('         upper: %g'      ,nic(i).upper));
+                disp(sprintf('    scale_type: ''%s'''  ,nic(i).scale_type));
+                disp(sprintf('         scale: %g\n'    ,nic(i).scale));
+            end
+
+        end
+
+        function [desc]  =prop_desc(nic,dstr)
+            desc=cell(1,numel(nic));
+            for i=1:numel(nic)
+                if ~isempty(nic(i).descriptor)
+                    desc(i)=cellstr(nic(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(nic,i,'vector')]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(nic,i,'vector')]);
+                else
+                    desc(i)=cellstr(['nic'        string_dim(nic,i,'vector')]);
+                end
+            end
+            desc=allempty(desc);
+        end
+        function [stype] =prop_stype(nic)
+            stype=cell(size(nic));
+            for i=1:numel(nic)
+                stype(i)=cellstr(nic(i).scale_type);
+            end
+            stype=allequal(stype,'none');
+        end
+        function [scale] =prop_scale(nic)
+            scale=zeros(size(nic));
+            for i=1:numel(nic)
+                scale(i)=nic(i).scale;
+            end
+            scale=allequal(scale,1.);
+        end
+        function [weight]=prop_weight(nic)
+            weight=[];
+        end
+        function [lower] =prop_lower(nic)
+            lower=zeros(size(nic));
+            for i=1:numel(nic)
+                lower(i)=nic(i).lower;
+            end
+            lower=allequal(lower,-Inf);
+        end
+        function [upper] =prop_upper(nic)
+            upper=zeros(size(nic));
+            for i=1:numel(nic)
+                upper(i)=nic(i).upper;
+            end
+            upper=allequal(upper,0.);
+        end
+        function [target]=prop_target(nic)
+            target=[];
+        end
+    end
+
+    methods (Static)
+        function [rdesc]=dakota_write(fidi,dresp,rdesc)
+
+%  collect only the responses of the appropriate class
+
+            nic=struc_class(dresp,'nonlinear_inequality_constraint');
+
+%  write responses
+
+            [rdesc]=rlist_write(fidi,'nonlinear_inequality_constraints','nonlinear_inequality',nic,rdesc);
+        end
+
+        function []=dakota_rlev_write(fidi,dresp,params)
+        end
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/nonlinear_inequality_constraint.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/nonlinear_inequality_constraint.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/nonlinear_inequality_constraint.py	(revision 27955)
@@ -0,0 +1,199 @@
+import numpy as np
+from rlist_write import *
+from MatlabArray import *
+
+
+class nonlinear_inequality_constraint:
+    '''
+  constructor for the nonlinear_inequality_constraint class.
+
+  [nic] = nonlinear_inequality_constraint.nonlinear_inequality_constraint(args)
+   nic = nonlinear_inequality_constraint()
+
+  where the required args are:
+    descriptor    (char, description, '')
+    lower         (double, lower bound, -np.inf)
+    upper         (double, upper bound, 0.)
+  and the optional args and defaults are:
+    scale_type    (char, scaling type, 'none')
+    scale         (double, scaling factor, 1.)
+
+  note that zero arguments constructs a default instance, one
+  argument of the class copies the instance, and three or more
+  arguments constructs a new instance from the arguments.
+'''
+    def __init__(self):
+        self.descriptor = ''
+        self.lower = -np.inf
+        self.upper = 0.
+        self.scale_type = 'none'
+        self.scale = 1.
+
+    @staticmethod
+    def nonlinear_inequality_constraint(*args):
+        nargin = len(args)
+
+        # create a default object
+        if nargin == 0:
+            return nonlinear_inequality_constraint()
+
+        # copy the object
+        if nargin == 1:
+            if isinstance(args[0], nonlinear_inequality_constraint):
+                nic = args[0]
+            else:
+                raise RuntimeError('Object is a ' + str(type(args[0])) + ' class object, not "nonlinear_inequality_constraint".')
+
+        # not enough arguments
+        if nargin == 2:
+            raise RuntimeError('Construction of nonlinear_inequality_constraint class object requires at least 3 inputs.')
+
+        # create the object from the input
+        else:
+            asizec = array_size(*args[0:min(nargin, 3)])
+            nic = [nonlinear_inequality_constraint() for i in range(asizec[0]) for j in range(asizec[1])]
+
+            for i in range(np.size(nic)):
+                if (np.size(args[0]) > 1):
+                    nic[i].descriptor = args[0][i]
+                else:
+                    nic[i].descriptor = str(args[0]) + string_dim(nic, i, 'vector')
+                if (np.size(args[1]) > 1):
+                    nic[i].lower = args[1][i]
+                else:
+                    nic[i].lower = args[1]
+
+                if (np.size(args[2]) > 1):
+                    nic[i].upper = args[2][i]
+                else:
+                    nic[i].upper = args[2]
+
+            if (nargin >= 4):
+                for i in range(np.size(nic)):
+                    if (np.size(args[3]) > 1):
+                        nic[i].scale_type = args[3][i]
+                    else:
+                        nic[i].scale_type = str(args[3])
+
+            if (nargin >= 5):
+                for i in range(np.size(nic)):
+                    if (np.size(args[4]) > 1):
+                        nic[i].upper = args[4][i]
+                    else:
+                        nic[i].upper = args[4]
+
+            if (nargin > 5):
+                print('WARNING: nonlinear_inequality_constraint:extra_arg: Extra arguments for object of class ' + str(type(nic)) + '.')
+
+        return nic
+
+    def __repr__(self):
+        # display the object
+        string = '\n'
+        string += 'class "nonlinear_inequality_constraint" object = \n'
+        string += '    descriptor: ' + str(self.descriptor) + '\n'
+        string += '         lower: ' + str(self.lower) + '\n'
+        string += '         upper: ' + str(self.upper) + '\n'
+        string += '    scale_type: ' + str(self.scale_type) + '\n'
+        string += '         scale: ' + str(self.scale) + '\n'
+
+        return string
+
+    @staticmethod
+    def prop_desc(nic, dstr):
+        if type(nic) not in [list, np.ndarray]:
+            if nic.descriptor != '' or type(nic.descriptor) != str:
+                desc = str(nic.descriptor)
+            elif dstr != '':
+                desc = str(dstr)
+            else:
+                desc = 'nic'
+            return desc
+
+        desc = ['' for i in range(np.size(nic))]
+        for i in range(np.size(nic)):
+            if nic[i].descriptor != '' or type(nic[i].descriptor) != str:
+                desc[i] = str(nic[i].descriptor)
+            elif dstr != '':
+                desc[i] = str(dstr) + str(string_dim(nic, i, 'vector'))
+            else:
+                desc[i] = 'nic' + str(string_dim(nic, i, 'vector'))
+
+        desc = allempty(desc)
+
+        return desc
+
+    @staticmethod
+    def prop_stype(nic):
+        if type(nic) not in [list, np.ndarray]:
+            return nic.scale_type
+
+        stype = ['' for i in range(np.size(nic))]
+        for i in range(np.size(nic)):
+            stype[i] = str(nic[i].scale_type)
+
+        stype = allequal(stype, 'none')
+
+        return stype
+
+    @staticmethod
+    def prop_scale(nic):
+        if type(nic) not in [list, np.ndarray]:
+            return nic.scale
+
+        scale = np.zeros(np.shape(nic))
+        for i in range(np.size(nic)):
+            scale[i] = nic[i].scale
+
+        scale = allequal(scale, 1.)
+
+        return scale
+
+    @staticmethod
+    def prop_weight(nic):
+        weight = []
+        return weight
+
+    @staticmethod
+    def prop_lower(nic):
+        if type(nic) not in [list, np.ndarray]:
+            return nic.lower
+
+        lower = np.zeros(np.shape(nic))
+        for i in range(np.size(nic)):
+            lower[i] = nic[i].lower
+
+        lower = allequal(lower, -np.inf)
+
+        return lower
+
+    @staticmethod
+    def prop_upper(nic):
+        if type(nic) not in [list, np.ndarray]:
+            return nic.upper
+
+        upper = np.zeros(np.shape(nic))
+        for i in range(np.size(nic)):
+            upper[i] = nic[i].upper
+
+        upper = allequal(upper, 0.)
+
+        return upper
+
+    @staticmethod
+    def prop_target(nic):
+        target = []
+        return target
+
+    @staticmethod
+    def dakota_write(fidi, dresp, rdesc):
+        # collect only the variables of the appropriate class
+        nic = [struc_class(i, 'nonlinear_inequality_constraint', 'nic') for i in dresp]
+
+        # write constraints
+        rdesc = rlist_write(fidi, 'nonlinear_inequality_constrants', 'nonlinear_inequality', nic, rdesc)
+        return rdesc
+
+    @staticmethod
+    def dakota_rlev_write(fidi, dresp, params):
+        return
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/normal_uncertain.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/normal_uncertain.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/normal_uncertain.m	(revision 27955)
@@ -0,0 +1,186 @@
+%NORMAL_UNCERTAIN class definition
+%
+%   Usage:
+%      nuv=normal_uncertain('descriptor',descriptor,'mean',mean,'stddev',stddev,'partition',partition);
+%      where nuv is the normal_uncertain object returned by the constructor, mean and stddev are self
+%      explanatory.  partition is the partition vector for distributed variables. Can be a partition
+%      vector over elements or vertices.
+%
+%   Example:
+%      md.qmu.variables.rheology=normal_uncertain('descriptor','RheologyBBar','mean',1,'stddev',.05);
+%      md.qmu.variables.rheology=normal_uncertain('descriptor','scaled_RheologyBBar','mean',1,'stddev',.05,'partition',vpartition);
+%
+
+classdef normal_uncertain
+	properties
+		descriptor	= '';
+		mean		= NaN;
+		stddev		= NaN;
+		partition	= [];
+		nsteps		= 0;
+	end
+	methods
+		function self=normal_uncertain(varargin) %constructor {{{
+
+			%recover options:
+			options=pairoptions(varargin{:});
+
+			%initialize fields:
+			self.descriptor=getfieldvalue(options,'descriptor');
+			self.mean=getfieldvalue(options,'mean');
+			self.stddev=getfieldvalue(options,'stddev');
+
+			%if the variable is scaled,  a partition vector should have been 
+			%supplied, and that partition vector should have as many partitions 
+			%as the mean and stddev vectors:
+			if self.isscaled(),
+				self.partition=getfieldvalue(options,'partition');
+				self.nsteps=getfieldvalue(options,'nsteps',1);
+				npart=qmupart2npart(self.partition);
+				if npart~=size(self.mean,1),
+					error(['normal_uncertain constructor: for the scaled variable ' self.descriptor ' the row size of the mean field should be identical to the number of partitions']);
+				end
+				if npart~=size(self.stddev,1),
+					error(['normal_uncertain constructor: for the scaled variable ' self.descriptor ' the row size of the stddev field should be identical to the number of partitions']);
+				end
+				if self.nsteps~=size(self.mean,2),
+					error(['normal_uncertain constructor: for the scaled variable ' self.descriptor ' the col size of the mean field should be identical to the number of time steps']);
+				end
+				if self.nsteps~=size(self.stddev,2),
+					error(['normal_uncertain constructor: for the scaled variable ' self.descriptor ' the col size of the stddev field should be identical to the number of time steps']);
+				end
+
+			end
+
+		end %}}}
+		function disp(self) % {{{
+			disp(sprintf('   normal uncertain variable: '));
+			fielddisplay(self,'descriptor','name tag');
+			fielddisplay(self,'mean','pdf mean');
+			fielddisplay(self,'stddev','pdf standard deviation');
+			if ~isempty(self.partition),
+				fielddisplay(self,'partition','partition vector defining where sampling will occur');
+			end
+			fielddisplay(self,'nsteps','number of time steps');
+		end
+		%}}}
+		function md=checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'field',self.mean,'fieldname','normal_uncertain.mean','NaN',1,'Inf',1,'>=',0);
+			md = checkfield(md,'field',self.stddev,'fieldname','normal_uncertain.stddev','NaN',1,'Inf',1,'>=',0);
+			if self.isscaled(),
+				if isempty(self.partition),
+					error('normal_uncertain is a scaled variable, but it''s missing a partition vector');
+				end
+				%better have a partition vector that has as many partitions as stddev's size:
+				if size(self.stddev,1)~=partition_npart(self.partition),
+					error('normal_uncertain error message: row size of stddev and partition size should be identical');
+				end
+				if size(self.mean,1)~=partition_npart(self.partition),
+					error('normal_uncertain error message: row size of mean and partition size should be identical');
+				end
+				%we need as steps in stddev and mean as there are time steps: 
+				if size(self.stddev,2)~=self.nsteps,
+					error('normal_uncertain error message: col size of stddev and number of time steps should be identical');
+				end
+				if size(self.mean,2)~=self.nsteps,
+					error('normal_uncertain error message: col size of mean and number of time steps should be identical');
+				end
+
+				md = checkfield(md,'field',self.partition,'fieldname','normal_uncertain.partition','NaN',1,'Inf',1,'>=',-1,'numel',[md.mesh.numberofvertices,md.mesh.numberofelements]);
+				if size(self.partition,2)>1,
+					error('normal_uncertain error message: partition should be a column vector');
+				end
+				partcheck=unique(self.partition);
+				partmin=min(partcheck);
+				partmax=max(partcheck);
+				if partmax<-1,
+					error('normal_uncertain error message: partition vector''s min value should be -1 (for no partition), or start at 0');
+				end
+				nmax=max(md.mesh.numberofelements,md.mesh.numberofvertices);
+				if partmax>nmax,
+					error('normal_uncertain error message: partition vector''s values cannot go over the number of vertices or elements');
+				end
+			end
+		end % }}}
+		%virtual functions needed by qmu processing algorithms:
+		%implemented:
+		function [desc]=prop_desc(nuv,dstr) % {{{
+			desc=cell(1,numel(nuv));
+			for i=1:numel(nuv)
+				if ~isempty(nuv(i).descriptor)
+					desc(i)=cellstr(nuv(i).descriptor);
+				elseif ~isempty(inputname(1))
+					desc(i)=cellstr([inputname(1) string_dim(nuv,i,'vector')]);
+				elseif exist('dstr','var')
+					desc(i)=cellstr([dstr         string_dim(nuv,i,'vector')]);
+				else
+					desc(i)=cellstr(['nuv'        string_dim(nuv,i,'vector')]);
+				end
+			end
+			desc=allempty(desc);
+		end %}}}
+		function [mean]=prop_mean(nuv) % {{{
+			mean=zeros(1,numel(nuv));
+			for i=1:numel(nuv)
+				mean(i)=nuv(i).mean;
+			end
+		end % }}}
+		function [stddev]=prop_stddev(nuv) % {{{
+			stddev=zeros(1,numel(nuv));
+			for i=1:numel(nuv)
+				stddev(i)=nuv(i).stddev;
+			end
+		end % }}}
+		function [lower]=prop_lower(nuv) % {{{
+			lower=[];
+		end % }}}
+		function [upper]=prop_upper(nuv) % {{{
+			upper=[];
+		end % }}}
+		function [abscissas]=prop_abscissas(hbu) % {{{
+			abscissas=[];
+		end % }}}
+		function [counts]=prop_counts(hbu) % {{{
+			counts=[];
+		end % }}}
+		function [pairs_per_variable]=prop_pairs_per_variable(hbu) % {{{
+			pairs_per_variable=[];
+		end % }}}
+		function [initpt]=prop_initpt(nuv) % {{{
+			initpt=[];
+		end % }}}
+		function [initst]=prop_initst(nuv) % {{{
+			initst=[];
+		end % }}}
+		function [stype]=prop_stype(nuv) % {{{
+			stype={};
+		end % }}}
+		function [scale]=prop_scale(nuv) % {{{
+			scale=[];
+		end % }}}
+		%new methods:
+		function distributed=isdistributed(self) % {{{
+			if strncmp(self.descriptor,'distributed_',12),
+				distributed=1;
+			else
+				distributed=0;
+			end
+		end % }}}
+		function scaled=isscaled(self) % {{{
+			if strncmp(self.descriptor,'scaled_',7),
+				scaled=1;
+			else
+				scaled=0;
+			end
+		end % }}}
+	end
+	methods (Static)
+		function []=dakota_write(fidi,dvar) % {{{
+			%  collect only the variables of the appropriate class
+			nuv=struc_class(dvar,'normal_uncertain');
+			%  write variables
+			vlist_write(fidi,'normal_uncertain','nuv',nuv);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/normal_uncertain.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/normal_uncertain.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/normal_uncertain.py	(revision 27955)
@@ -0,0 +1,260 @@
+import numpy as np
+
+from MatlabArray import *
+from MatlabFuncs import *
+from fielddisplay import fielddisplay
+from pairoptions import pairoptions
+from partition_npart import *
+from qmupart2npart import qmupart2npart
+
+
+class normal_uncertain(object):
+    """NORMAL_UNCERTAIN class definition
+
+    Usage:
+        [nuv] = normal_uncertain(
+            'descriptor', descriptor,
+            'mean', mean,
+            'stddev', stddev,
+            'partition', partition
+            )
+
+        where nuv is the normal_uncertain object returned by the constructor, 
+        mean and stddev are self explanatory, and partition is the partition 
+        vector for distributed variables. Can be a partition vector over 
+        elements or vertices.
+
+    Example:
+        md.qmu.variables.rheology=normal_uncertain(
+            'descriptor','RheologyBBar',
+            'mean',1,
+            'stddev',.05
+            )
+        md.qmu.variables.rheology=normal_uncertain(
+            'descriptor','scaled_RheologyBBar',
+            'mean',1,
+            'stddev',.05,
+            'partition',vpartition
+            )
+    """
+
+    def __init__(self):  # {{{
+        self.descriptor = ''
+        self.mean       = np.nan
+        self.stddev     = np.nan
+        self.partition  = []
+        self.nsteps     = 0
+    # }}}
+
+    @staticmethod
+    def normal_uncertain(*args):  # {{{
+        nargin = len(args)
+
+        # create a default object
+        if nargin == 0:
+            return normal_uncertain()
+
+        # copy the object
+        elif nargin == 1:
+            if isinstance(args[0], normal_uncertain):
+                nuv = args[0]
+            else:
+                raise Exception('Object ' + str(args[0]) + ' is a ' + str(type(args[0])) + ' class object, not "normal_uncertain".')
+
+        # create the object from the input
+        else:
+            nuv = normal_uncertain()
+
+            #recover options:
+            options = pairoptions(*args)
+
+            #initialize fields:
+            nuv.descriptor = options.getfieldvalue('descriptor')
+            nuv.mean       = options.getfieldvalue('mean')
+            nuv.stddev     = options.getfieldvalue('stddev')
+
+            #if the variable is scaled, a partition vector should have been 
+            #supplied, and that partition vector should have as many partitions 
+            #as the mean and stddev vectors:
+            if nuv.isscaled():
+                nuv.partition = options.getfieldvalue('partition')
+                nuv.nsteps = options.getfieldvalue('nsteps', 1)
+                npart = qmupart2npart(nuv.partition)
+                if npart != nuv.mean.shape[0]:
+                    raise Exception("normal_uncertain constructor: for the scaled variable %s the row size of the mean field should be identical to the number of partitions" % nuv.descriptor)
+                if npart != nuv.stddev.shape[0]:
+                    raise Exception("normal_uncertain constructor: for the scaled variable %s the row size of the stddev field should be identical to the number of partitions" % nuv.descriptor)
+                if nuv.nsteps != nuv.mean.shape[1]:
+                    raise Exception("normal_uncertain constructor: for the scaled variable %s the col size of the mean field should be identical to the number of time steps" % nuv.descriptor)
+                if nuv.nsteps != nuv.stddev.shape[1]:
+                    raise Exception("normal_uncertain constructor: for the scaled variable %s the col size of the stddev field should be identical to the number of time steps" % nuv.descriptor)
+
+        return [nuv] # Always return a list, so we have something akin to a MATLAB single row matrix
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = '   normal uncertain variable: '
+        string = "%s\n%s" % (string, fielddisplay(self, 'descriptor', 'name tag'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'mean', 'pdf mean'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'stddev', 'pdf standard deviation'))
+        if self.partition != []:
+            string = "%s\n%s" % (string, fielddisplay(self, 'partition', 'partition vector defining where sampling will occur'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'nsteps', 'number of time steps'))
+
+        return string
+    # }}}
+
+    def __len__(self):  # {{{
+        if type(self.mean) in [list, np.ndarray]:
+            return len(self.mean)
+        else:
+            return 1
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        md = checkfield(md, 'field', self.mean, 'fieldname', 'normal_uncertain.mean', 'NaN', 1, 'Inf', 1, '>=', 0)
+        md = checkfield(md, 'field', self.stddev, 'fieldname', 'normal_uncertain.stddev', 'NaN', 1, 'Inf', 1, '>=', 0)
+        if self.isscaled():
+            if self.partition == []:
+                raise Exception("normal_uncertain is a scaled variable, but it's missing a partition vector")
+            #better have a partition vector that has as many partitions as stddev's size:
+            if self.stddev.shape[0] != partition_npart(self.partititon):
+                raise Exception("normal_uncertain error message: row size of stddev and partition size should be identical")
+            if self.mean.shape[0] != partition_npart(self.partition):
+                raise Exception("normal_uncertain error message: row size of mean and partition size should be identical")
+            #we need as many steps in stddev and mean as there are in time steps
+            if self.stddev.shape[1] != self.nsteps:
+                raise Exception("normal_uncertain error message: col size of stddev and partition size should be identical")
+            if self.mean.shape[1] != self.nsteps:
+                raise Exception("normal_uncertain error message: col size of mean and partition size should be identical")
+            md = checkfield(md, 'field', self.partition, 'fieldname', 'normal_uncertain.partition', 'NaN', 1, 'Inf', 1, '>=', -1, 'numel', [md.mesh.numberofvertices, md.mesh.numberofvertices])
+            if self.partition.shape[1] > 1:
+                raise Exception("normal_uncertain error message: partition should be a column vector")
+            partcheck = np.unique(self.partition)
+            partmin = min(partcheck)
+            partmax = max(partcheck)
+            if partmax < -1:
+                raise Exception("normal_uncertain error message: partition vector's min value should be -1 (for no partition), or start at 0")
+            nmax = max(md.mesh.numberofelements, md.mesh.numberofvertices)
+            if partmax > nmax:
+                raise Exception("normal_uncertain error message: partition vector's values cannot go over the number of vertices or elements")
+    # }}}
+
+    #virtual functions needed by qmu processing algorithms
+    #implemented:
+
+    @staticmethod
+    def prop_desc(nuv, dstr):  # {{{
+        desc = ['' for i in range(np.size(nuv))]
+        for i in range(np.size(nuv)):
+            if nuv[i].descriptor != '' or type(nuv[i].descriptor) != str:
+                desc[i] = str(nuv[i].descriptor)
+            elif dstr != '':
+                desc[i] = str(dstr) + str(string_dim(nuv, i, 'vector'))
+            else:
+                desc[i] = 'nuv' + str(string_dim(nuv, i, 'vector'))
+
+        desc = allempty(desc)
+
+        return desc
+    # }}}
+
+    @staticmethod
+    def prop_mean(nuv):  # {{{
+        mean = np.zeros(np.size(nuv))
+        for i in range(np.size(nuv)):
+            mean[i] = nuv[i].mean
+        return mean
+    # }}}
+
+    @staticmethod
+    def prop_stddev(nuv):  # {{{
+        stddev = np.zeros(np.size(nuv))
+        for i in range(np.size(nuv)):
+            stddev[i] = nuv[i].stddev
+        return stddev
+    # }}}
+
+    @staticmethod
+    def prop_lower(nuv):  # {{{
+        lower = []
+        return lower
+    # }}}
+
+    @staticmethod
+    def prop_upper(nuv):  # {{{
+        upper = []
+        return upper
+    # }}}
+
+    #default
+    @staticmethod
+    def prop_abscissas(hbu):  # {{{
+        abscissas = []
+        return abscissas
+    # }}}
+
+    @staticmethod
+    def prop_pairs_per_variable(hbu):  # {{{
+        pairs_per_variable = []
+        return pairs_per_variable
+    # }}}
+
+    @staticmethod
+    def prop_counts(hbu):  # {{{
+        counts = []
+        return counts
+    # }}}
+    @staticmethod
+    def prop_initpt(nuv):  # {{{
+        initpt = []
+        return initpt
+    # }}}
+
+    @staticmethod
+    def prop_initst(nuv):  # {{{
+        inist = []
+        return inist
+    # }}}
+
+    @staticmethod
+    def prop_stype(nuv):  # {{{
+        stype = []
+        return stype
+    # }}}
+
+    @staticmethod
+    def prop_scale(nuv):  # {{{
+        scale = []
+        return scale
+    # }}}
+
+    #new methods:
+    def isdistributed(self):  # {{{
+        if strncmp(self.descriptor, 'distributed_', 12):
+            return True
+        else:
+            return False
+    # }}}
+    
+    def isscaled(self):  # {{{
+        if strncmp(self.descriptor, 'scaled_', 7):
+            return True
+        else:
+            return False
+    # }}}
+
+    @staticmethod
+    def dakota_write(fidi, dvar):
+        # possible namespace pollution, the above import seems not to work
+        from vlist_write import vlist_write
+        # collect only the variables of the appropriate class
+        nuv = deepcopy(dvar)
+        fields = fieldnames(nuv)
+        for field in fields:
+            if getattr(nuv, field)[0].__class__.__name__ != 'normal_uncertain':
+                delattr(nuv, field)
+        if len(nuv) > 0:
+            vlist_write(fidi, 'normal_uncertain', 'nuv', nuv)
+    # }}}
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/objective_function.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/objective_function.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/objective_function.m	(revision 27955)
@@ -0,0 +1,187 @@
+%
+%  definition for the objective_function class.
+%
+%  [of]=objective_function(varargin)
+%
+%  where the required varargin are:
+%    descriptor    (char, description, '')
+%  and the optional varargin and defaults are:
+%    scale_type    (char, scaling type, 'none')
+%    scale         (double, scaling factor, 1.)
+%    weight        (double, weighting factor, 1.)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and one or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef objective_function
+    properties
+        descriptor='';
+        scale_type='none';
+        scale     = 1.;
+        weight    = 1.;
+    end
+
+    methods
+        function [of]=objective_function(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if  (nargin == 1) && isa(varargin{1},'objective_function')
+                        of=varargin{1};
+                    else
+                        asizec=num2cell(array_size(varargin{1:min(nargin,4)}));
+                        of(asizec{:})=objective_function;
+                        clear asizec
+
+                        if ischar(varargin{1})
+                            varargin{1}=cellstr(varargin{1});
+                        end
+                        for i=1:numel(of)
+                            if (numel(varargin{1}) > 1)
+                                of(i).descriptor=varargin{1}{i};
+                            else
+                                of(i).descriptor=[char(varargin{1}) string_dim(of,i,'vector')];
+                            end
+                        end
+
+                        if (nargin >= 2)
+                            if ischar(varargin{2})
+                                varargin{2}=cellstr(varargin{2});
+                            end
+                            for i=1:numel(of)
+                                if (numel(varargin{2}) > 1)
+                                    of(i).scale_type=varargin{2}{i};
+                                else
+                                    of(i).scale_type=char(varargin{2});
+                                end
+                            end
+                            if (nargin >= 3)
+                                for i=1:numel(of)
+                                    if (numel(varargin{3}) > 1)
+                                        of(i).scale     =varargin{3}(i);
+                                    else
+                                        of(i).scale     =varargin{3};
+                                    end
+                                end
+                                if (nargin >= 4)
+                                    for i=1:numel(of)
+                                        if (numel(varargin{4}) > 1)
+                                            of(i).weight    =varargin{4}(i);
+                                        else
+                                            of(i).weight    =varargin{4};
+                                        end
+                                    end
+
+                                    if (nargin > 4)
+                                        warning('objective_function:extra_arg',...
+                                            'Extra arguments for object of class ''%s''.',...
+                                            class(of));
+                                    end
+                                end
+                            end
+                        end
+                    end
+            end
+
+        end
+
+        function []=disp(of)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(of)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(of),inputname(1),string_dim(of,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,of(i).descriptor));
+                disp(sprintf('    scale_type: ''%s'''  ,of(i).scale_type));
+                disp(sprintf('         scale: %g'      ,of(i).scale));
+                disp(sprintf('        weight: %g\n'    ,of(i).weight));
+            end
+
+        end
+
+        function [desc]  =prop_desc(of,dstr)
+            desc=cell(1,numel(of));
+            for i=1:numel(of)
+                if ~isempty(of(i).descriptor)
+                    desc(i)=cellstr(of(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(of,i,'vector')]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(of,i,'vector')]);
+                else
+                    desc(i)=cellstr(['of'         string_dim(of,i,'vector')]);
+                end
+            end
+            desc=allempty(desc);
+        end
+        function [stype] =prop_stype(of)
+            stype=cell(1,numel(of));
+            for i=1:numel(of)
+                stype(i)=cellstr(of(i).scale_type);
+            end
+            stype=allequal(stype,'none');
+        end
+        function [scale] =prop_scale(of)
+            scale=zeros(1,numel(of));
+            for i=1:numel(of)
+                scale(i)=of(i).scale;
+            end
+            scale=allequal(scale,1.);
+        end
+        function [weight]=prop_weight(of)
+            weight=zeros(1,numel(of));
+            for i=1:numel(of)
+                weight(i)=of(i).weight;
+            end
+            weight=allequal(weight,1.);
+        end
+        function [lower] =prop_lower(of)
+            lower=[];
+        end
+        function [upper] =prop_upper(of)
+            upper=[];
+        end
+        function [target]=prop_target(of)
+            target=[];
+        end
+    end
+
+    methods (Static)
+        function [rdesc]=dakota_write(fidi,dresp,rdesc)
+
+%  collect only the responses of the appropriate class
+
+            of=struc_class(dresp,'objective_function');
+
+%  write responses
+
+            [rdesc]=rlist_write(fidi,'objective_functions','objective_function',of,rdesc);
+        end
+
+        function []=dakota_rlev_write(fidi,dresp,params)
+        end
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/objective_function.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/objective_function.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/objective_function.py	(revision 27955)
@@ -0,0 +1,173 @@
+import numpy as np
+from rlist_write import *
+from MatlabArray import *
+
+
+class objective_function(object):
+    '''
+  definition for the objective_function class.
+
+  [of] = objective_function.objective_function(args)
+   of = objective_function()
+
+  where the required args are:
+    descriptor    (char, description, '')
+  and the optional args and defaults are:
+    scale_type    (char, scaling type, 'none')
+    scale         (double, scaling factor, 1.)
+    weight        (double, weighting factor, 1.)
+
+  note that zero arguments constructs a default instance, one
+  argument of the class copies the instance, and one or more
+  arguments constructs a new instance from the arguments.
+'''
+    def __init__(self):
+        self.descriptor = ''
+        self.scale_type = 'none'
+        self.scale = 1.
+        self.weight = 1.
+
+    @staticmethod
+    def objective_function(*args):
+        nargin = len(args)
+
+    #  create a default object
+        if nargin == 0:
+            return objective_function()
+
+    #  copy the object or create the object from the input
+        else:
+            if (nargin == 1) and isinstance(args[0], objective_function):
+                of = args[0]
+            else:
+                shapec = array_size(*args[0:min(nargin, 4)])
+                of = [objective_function() for i in range(shapec[0]) for j in range(shapec[1])]
+
+                for i in range(np.size(of)):
+                    if (np.size(args[0]) > 1):
+                        of[i].descriptor = args[0][i]
+                    else:
+                        of[i].descriptor = str(args[0]) + string_dim(of, i, 'vector')
+
+                if (nargin >= 2):
+                    for i in range(np.size(of)):
+                        if (np.size(args[1]) > 1):
+                            of[i].scale_type = args[1][i]
+                        else:
+                            of[i].scale_type = str(args[1])
+
+                if (nargin >= 3):
+                    for i in range(np.size(of)):
+                        if (np.size(args[2]) > 1):
+                            of[i].scale = args[2][i]
+                        else:
+                            of[i].scale = args[2]
+
+                if (nargin >= 4):
+                    for i in range(np.size(of)):
+                        if (np.size(args[3]) > 1):
+                            of[i].weight = args[3][i]
+                        else:
+                            of[i].weight = args[3]
+
+                if (nargin > 4):
+                    print('WARNING: objective_function:extra_arg Extra arguments for object of class ' + str(type(of)) + '.')
+
+        return of
+
+    def __repr__(self):
+        #  display the object
+        string = '\n'
+        string += 'class "objective_function" object = \n'
+        string += '    descriptor: ' + str(self.descriptor) + '\n'
+        string += '    scale_type: ' + str(self.scale_type) + '\n'
+        string += '         scale: ' + str(self.scale) + '\n'
+        string += '        weight: ' + str(self.weight) + '\n'
+        return string
+
+    @staticmethod
+    def prop_desc(of, dstr):
+        if type(of) not in [list, np.ndarray]:
+            if of.descriptor != '' or type(of.descriptor) != str:
+                desc = str(of.descriptor)
+            elif dstr != '':
+                desc = str(dstr)
+            else:
+                desc = 'of'
+            return desc
+
+        desc = ['' for i in range(np.size(of))]
+        for i in range(np.size(of)):
+            if of[i].descriptor != '' or type(of[i].descriptor) != str:
+                desc[i] = str(of[i].descriptor)
+            elif dstr != '':
+                desc[i] = str(dstr) + str(string_dim(of, i, 'vector'))
+            else:
+                desc[i] = 'of' + str(string_dim(of, i, 'vector'))
+
+        desc = allempty(desc)
+        return desc
+
+    @staticmethod
+    def prop_lower(of):
+        lower = []
+        return lower
+
+    @staticmethod
+    def prop_upper(of):
+        upper = []
+        return upper
+
+    @staticmethod
+    def prop_target(of):
+        target = []
+        return target
+
+    @staticmethod
+    def prop_weight(of):
+        if type(of) not in [list, np.ndarray]:
+            return of.weight
+
+        weight = np.zeros(np.shape(of))
+        for i in range(np.size(of)):
+            weight[i] = of[i].weight
+
+        weight = allequal(weight, 1.)
+        return weight
+
+    @staticmethod
+    def prop_stype(of):
+        if type(of) not in [list, np.ndarray]:
+            return of.scale_type
+
+        stype = ['' for i in range(np.size(of))]
+        for i in range(np.size(of)):
+            stype[i] = str(of[i].scale_type)
+
+        stype = allequal(stype, 'none')
+        return stype
+
+    @staticmethod
+    def prop_scale(of):
+        if type(of) not in [list, np.ndarray]:
+            return of.scale
+
+        scale = np.zeros(np.shape(of))
+        for i in range(np.size(of)):
+            scale[i] = of[i].scale
+
+        scale = allequal(scale, 1.)
+        return scale
+
+    @staticmethod
+    def dakota_write(fidi, dresp, rdesc):
+        # coloft only the variables of the appropriate class
+        of = [struc_class(i, 'objective_functions', 'of') for i in dresp]
+
+        # write constraints
+        rdesc = rlist_write(fidi, 'objective_functions', 'objective_function', of, rdesc)
+        return rdesc
+
+    @staticmethod
+    def dakota_rlev_write(fidi, dresp, params):
+        return
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/partition_npart.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/partition_npart.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/partition_npart.m	(revision 27955)
@@ -0,0 +1,13 @@
+function npart=partition_npart(vector)
+
+	%vector could be on vertices or elements, and will have a small amount of possible integer 
+	%values: 
+	uvec=unique(vector);
+	uvec(uvec==-1)=[];
+
+	%ok, so now we should have a vector from 0 to npart-1:
+	npart=max(uvec)+1;
+	if npart~=length(uvec),
+		error('partition vector should be in the range 0 to numberofpartitions, with -1 values for vertices or elements not belonging to any partition');
+	end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/partition_npart.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/partition_npart.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/partition_npart.py	(revision 27955)
@@ -0,0 +1,13 @@
+import numpy as np
+
+def partition_npart(vector):
+    #vector could be on vertices or elements, and will have a small amount of possible integer
+    #values:
+    uvec = np.unique(vector)
+    uvec = np.delete(uvec, np.where(uvec == -1))
+
+    #ok, so now we should have a vector from 0 to npart-1:
+    npart = max(uvec) + 1
+    if npart != len(uvec):
+        raise RuntimeError('partition vector should be in the range 0 to numberofpartitions, with -1 values for vertices or elements not belonging to any partition')
+    return npart
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/qmu_classes.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/qmu_classes.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/qmu_classes.py	(revision 27955)
@@ -0,0 +1,30 @@
+# nuv
+from normal_uncertain import *
+# uuv
+from uniform_uncertain import *
+
+# lic
+from linear_inequality_constraint import *
+# lec
+from linear_equality_constraint import *
+
+#nic
+from nonlinear_inequality_constraint import *
+#nec
+from nonlinear_equality_constraint import *
+
+# csv
+from continuous_design import *
+# cdv
+from continuous_state import *
+
+# lst
+from least_squares_term import *
+
+# of
+from objective_function import *
+# rf
+from response_function import *
+
+# cf
+from calibration_function import *
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/response_function.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/response_function.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/response_function.m	(revision 27955)
@@ -0,0 +1,143 @@
+%RESPONSE_FUNCTION class definition
+%
+%   Usage:
+%      rf=response_function('descriptor',descriptor,'response_levels',respl,...
+%           'probability_levels',probl,'reliability_levels',rell,general_reliability_levels',grell,...
+%           'partition',partition);
+%      where rf is the response function object returned by the constructor. All options except the 
+%      descriptor are optional. A partition can be provided for scaled variables. 
+% 
+%   Example:
+%      md.qmu.responses.maxvel=response_function('descriptor','MaxVel','response_levels',[0],...
+%                              'probl',[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]');
+
+classdef response_function
+    properties
+        descriptor='';
+        respl     =[];
+        probl     =[];
+        rell      =[];
+        grell     =[];
+        partition = [];
+    end
+    methods
+		function self=response_function(varargin) %constructor {{{
+
+			%recover options: 
+			options = pairoptions(varargin{:});
+
+			%initialize fields: 
+			self.descriptor=getfieldvalue(options,'descriptor');
+			self.respl=getfieldvalue(options,'response_levels',[]);
+			self.probl=getfieldvalue(options,'probability_levels',...
+				[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+			self.rell=getfieldvalue(options,'reliability_levels',[]);
+			self.grell=getfieldvalue(options,'general_reliability_levels',[]);
+			
+			%if the response is scaled, a partition vector should have been supplied.
+			if self.isscaled(),
+				self.partition=getfieldvalue(options,'partition');
+				npart=partition_npart(self.partition);
+			end
+		end %}}}
+        function []=disp(rf)% {{{
+            %TODO: Convert the following to fielddisplay
+            % display the object
+            disp(sprintf('\n'));
+            for i=1:numel(rf)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(rf),inputname(1),string_dim(rf,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,rf(i).descriptor));
+                disp(sprintf('         respl: %s'      ,string_vec(rf(i).respl)));
+                disp(sprintf('         probl: %s'      ,string_vec(rf(i).probl)));
+                disp(sprintf('          rell: %s'      ,string_vec(rf(i).rell)));
+                disp(sprintf('         grell: %s'    ,string_vec(rf(i).grell)));
+                if ~isempty(rf.partition),
+					fielddisplay(rf,'partition','partition vector defining where response will be computed');
+                end
+                disp(sprintf('\n'));
+            end
+
+        end % }}}
+        function [desc]  =prop_desc(rf,dstr)% {{{
+
+            desc=cell(1,numel(rf));
+            for i=1:numel(rf)
+                if ~isempty(rf(i).descriptor)
+                    desc(i)=cellstr(rf(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(rf,i,'vector')]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(rf,i,'vector')]);
+                else
+                    desc(i)=cellstr(['rf'         string_dim(rf,i,'vector')]);
+                end
+            end
+            desc=allempty(desc);
+        end % }}}
+        function [stype] =prop_stype(rf)% {{{
+
+            stype={};
+        end% }}}
+        function [scale] =prop_scale(rf)% {{{
+
+            scale=[];
+        end% }}}
+        function [weight]=prop_weight(rf) % {{{
+
+            weight=[];
+        end% }}}
+        function [lower] =prop_lower(rf)% {{{
+
+            lower=[];
+        end% }}}
+        function [upper] =prop_upper(rf)% {{{
+
+            upper=[];
+        end % }}}
+        function [target]=prop_target(rf) % {{{
+            target=[];
+        end % }}}
+        function [respl,probl,rell,grell]=prop_levels(rf) % {{{
+            respl=cell(1,numel(rf));
+            probl=cell(1,numel(rf));
+            rell =cell(1,numel(rf));
+            grell=cell(1,numel(rf));
+            for i=1:numel(rf)
+                respl(i)={rf(i).respl};
+                probl(i)={rf(i).probl};
+                rell (i)={rf(i).rell};
+                grell(i)={rf(i).grell};
+            end
+            respl=allempty(respl);
+            probl=allempty(probl);
+            rell =allempty(rell);
+            grell=allempty(grell);
+        end % }}}
+		%new methods: 
+    	function scaled =isscaled(self) % {{{
+    		if strncmp(self.descriptor,'scaled_',7),
+    			scaled=1;
+    		else
+    			scaled=0;
+    		end
+    	end % }}}
+    end
+    methods (Static)
+        function [rdesc]=dakota_write(fidi,dresp,rdesc) % {{{
+
+			%collect only the responses of the appropriate class
+            rf=struc_class(dresp,'response_function');
+			%write responses
+			[rdesc]=rlist_write(fidi,'response_functions','response_function',rf,rdesc);
+		end % }}}
+		function []=dakota_rlev_write(fidi,dresp,params) % {{{
+
+				%  collect only the responses of the appropriate class
+				rf=struc_class(dresp,'response_function');
+
+				%  write response levels
+				rlev_write(fidi,rf,params);
+        end % }}}
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/response_function.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/response_function.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/response_function.py	(revision 27955)
@@ -0,0 +1,221 @@
+import numpy as np
+
+from fielddisplay import fielddisplay
+from MatlabFuncs import *
+from pairoptions import pairoptions
+from partition_npart import *
+from rlev_write import *
+#from rlist_write import *
+
+
+class response_function(object):
+    '''
+    RESPONSE_FUNCTION class definition
+
+        Usage:
+            rf = response_function(
+                'descriptor', descriptor,
+                'response_levels', respl,
+                'probability_levels', probl,
+                'reliability_levels',rell,
+                'general_reliability_levels', grell,
+                'partition', partition
+            )
+
+            where rf is the response function object returned by the 
+            constructor. All options except the descriptor are optional. A partition can be provided for scaled variables.
+
+        Example:
+            md.qmu.responses.maxvel = response_function(
+                'descriptor', 'MaxVel',
+                'response_levels',[0],
+                'probl', [0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]
+                )
+    '''
+    def __init__(self):
+        self.descriptor = ''
+        self.respl      = []
+        self.probl      = []
+        self.rell       = []
+        self.grell      = []
+        self.partition  = []
+
+    @staticmethod
+    def response_function(*args):
+
+        nargin = len(args)
+        # create a default object
+        if nargin == 0:
+            return response_function()
+
+        # copy the object or create the object from the input
+        elif nargin == 1:
+            if isinstance(args[0], response_function):
+                rf = args[0]
+            else:
+                raise RuntimeError('Object ' + str(args[0]) + ' is a ' + str(type(args[0])) + ' class object, not "response_function".')
+        else:
+            # asizec = array_size(*args[0:min(nargin, 1)])
+            # rf = [response_function() for i in range(asizec[0]) for j in range(asizec[1])]
+
+            # for i in range(np.size(rf)):
+            #     if (np.size(args[0]) > 1):
+            #         rf[i].descriptor = args[0][i]
+            #     else:
+            #         rf[i].descriptor = str(args[0]) + string_dim(rf, i, 'vector')
+
+            # if nargin >= 2:
+            #     for i in range(np.size(rf)):
+            #         rf[i].respl = args[1]
+
+            # if nargin >= 3:
+            #     for i in range(np.size(rf)):
+            #         rf[i].probl = args[2]
+
+            # if nargin >= 4:
+            #     for i in range(np.size(rf)):
+            #         rf[i].rell = args[3]
+
+            # if nargin >= 5:
+            #     for i in range(np.size(rf)):
+            #         rf[i].grell = args[4]
+
+            # if nargin > 5:
+            #     print('WARNING: response_function:extra_arg: Extra arguments for object of class ' + str(type(rf)) + '.')
+
+            rf = response_function()
+
+            #recover options:
+            options = pairoptions(*args)
+
+            #initialize fields:
+            rf.descriptor = options.getfieldvalue('descriptor')
+            rf.respl = options.getfieldvalue('response_levels', [])
+            rf.probl = options.getfieldvalue('probability_levels', [0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999])
+            rf.rell = options.getfieldvalue('reliability_levels', [])
+            rf.grell = options.getfieldvalue('general_reliability_levels', [])
+
+            #if the response is scaled, a partition vector should have been supplied.
+            if rf.isscaled():
+                rf.partition = options.getfieldvalue('partition')
+                npart = partition_npart(rf.partition)
+
+        return [rf] # Always return a list, so we have something akin to a MATLAB single row matrix
+
+    def __repr__(rf):  # {{{
+        # display the object
+        string = 'class "response_function" object = \n'
+        string = "%s\n%s" % (string, fielddisplay(rf, 'descriptor', 'name tag'))
+        string = "%s\n%s" % (string, fielddisplay(rf, 'respl', 'response levels'))
+        string = "%s\n%s" % (string, fielddisplay(rf, 'probl', 'probability levels'))
+        string = "%s\n%s" % (string, fielddisplay(rf, 'rell', 'reliability levels'))
+        string = "%s\n%s" % (string, fielddisplay(rf, 'grell', 'general reliability levels'))
+
+        if rf.partition != []:
+            string = "%s\n%s" % (string, fielddisplay(rf, 'partition', 'partition vector defining where the response will be computed'))
+
+        return string
+    # }}}
+
+    def __len__(self):  # {{{
+        return max(len(self.respl), len(self.probl), len(self.rell), len(self.grell))
+    # }}}
+
+    @staticmethod
+    def prop_desc(rf, dstr):  # {{{
+        desc = ['' for i in range(np.size(rf))]
+        for i in range(np.size(rf)):
+            if rf[i].descriptor != '' or type(rf[i].descriptor) != str:
+                desc[i] = str(rf[i].descriptor)
+            elif dstr != '':
+                desc[i] = str(dstr) + str(string_dim(rf, i, 'vector'))
+            else:
+                desc[i] = 'rf' + str(string_dim(rf, i, 'vector'))
+
+        desc = allempty(desc)
+        return desc
+    # }}}
+
+    @staticmethod
+    def prop_stype(rf):  # {{{
+        stype = []
+        return stype
+    # }}}
+
+    @staticmethod
+    def prop_scale(rf):  # {{{
+        scale = []
+        return scale
+    # }}}
+
+    @staticmethod
+    def prop_weight(rf):  # {{{
+        weight = []
+        return weight
+    # }}}
+
+    @staticmethod
+    def prop_lower(rf):  # {{{
+        lower = []
+        return lower
+    # }}}
+
+    @staticmethod
+    def prop_upper(rf):  # {{{
+        upper = []
+        return upper
+    # }}}
+
+    @staticmethod
+    def prop_target(rf):  # {{{
+        target = []
+        return target
+    # }}}
+
+    @staticmethod
+    def prop_levels(rf):
+        respl = empty_nd_list(np.size(rf))
+        probl = empty_nd_list(np.size(rf))
+        rell = empty_nd_list(np.size(rf))
+        grell = empty_nd_list(np.size(rf))
+        for i in range(np.size(rf)):
+            respl[i] = rf[i].respl
+            probl[i] = rf[i].probl
+            rell[i] = rf[i].rell
+            grell[i] = rf[i].grell
+        respl = allempty(respl)
+        probl = allempty(probl)
+        rell = allempty(rell)
+        grell = allempty(grell)
+        return [respl, probl, rell, grell]
+
+    #new methods:
+    def isscaled(self):  # {{{
+        if strncmpi(self.descriptor, 'scaled_', 7):
+            return True
+        else:
+            return False
+    # }}}
+
+    @staticmethod
+    def dakota_write(fidi, dresp, rdesc):
+        #possible namespace pollution here
+        from rlist_write import rlist_write
+        # collect only the responses of the appropriate class
+        #rf = [struc_class(vars(dresp)[i][j], 'response_function', 'rf') for i in fieldnames(dresp) for j in range(len(vars(dresp)[i]))]
+        resp = deepcopy(dresp)
+        fields = fieldnames(resp)
+        for field in fields:
+            if getattr(resp, field)[0].__class__.__name__ != 'response_function':
+                delattr(resp, field)
+        if len(resp) > 0:
+            rdesc = rlist_write(fidi, 'response_function', 'rf', resp, rdesc)
+        return rdesc
+
+    @staticmethod
+    def dakota_rlev_write(fidi, dresp, params):
+        # collect only the responses of the appropriate class
+        rf = [struc_class(vars(dresp)[i][j], 'response_function', 'rf') for i in fieldnames(dresp) for j in range(len(vars(dresp)[i]))]
+
+        # write response levels
+        rlev_write(fidi, rf, 'response_function', params)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/uniform_uncertain.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/uniform_uncertain.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/uniform_uncertain.m	(revision 27955)
@@ -0,0 +1,189 @@
+%UNIFORM_UNCERTAIN Class definition
+%
+%%   Usage:
+%      nuv=uniform_uncertain('descriptor',descriptor,'lower',lower,'upper',upper,'partition',partition);
+%      where nuv is the uniform_uncertain object returned by the constructor, lower and upper are the 
+%      pdf distribution bounds, and partition is the partition vector for distributed variables. 
+%      Can be a partition %      vector over elements or vertices.
+% 
+%   Example:
+%      md.qmu.variables.rheology=uniform_uncertain('descriptor','RheologyBBar','lower',1e8,'upper',1e9);
+%      md.qmu.variables.rheology=uniform_uncertain('descriptor','RheologyBBar','lower',1e8,'upper',1e9,'partition',vpartition);
+% 
+
+classdef uniform_uncertain
+	properties
+		descriptor	= '';
+		lower		= -Inf;
+		upper		= Inf;
+		partition	= [];
+		nsteps		= 0;
+	end
+	methods
+		function self=uniform_uncertain(varargin) %constructor {{{
+
+			%recover options: 
+			options=pairoptions(varargin{:});
+
+			%initialize fields: 
+			self.descriptor=getfieldvalue(options,'descriptor');
+			self.upper=getfieldvalue(options,'upper');
+			self.lower=getfieldvalue(options,'lower');
+
+			%if the variable is scaled, a partition vector should have been 
+			%supplied, and that partition vector should have as many partitions 
+			%as the lower and upper vectors:
+			if self.isscaled(),
+				self.partition=getfieldvalue(options,'partition');
+				self.nsteps=getfieldvalue(options,'nsteps',1);
+				npart=qmupart2npart(self.partition);
+				if npart~=size(self.upper,1),
+					error(['uniform_uncertain constructor: for the scaled variable' self.descriptor ' the row size of the upper field should be identical to the number of partitions']);
+				end
+				if npart~=size(self.lower,1),
+					error(['uniform_uncertain constructor: for the scaled variable' self.descriptor ' the row size of the lower field should be identical to the number of partitions']);
+				end
+				if self.nsteps~=size(self.upper,2),
+					error(['uniform_uncertain constructor: for the scaled variable ' self.descriptor ' the col size of the upper field should be identical to the number of time steps']);
+				end
+				if self.nsteps~=size(self.lower,2),
+					error(['uniform_uncertain constructor: for the scaled variable ' self.descriptor ' the col size of the lower field should be identical to the number of time steps']);
+				end
+			end
+
+		end %}}}
+		function disp(self) % {{{
+
+			disp(sprintf('   uniform uncertain variable: '));
+			fielddisplay(self,'descriptor','name tag');
+			fielddisplay(self,'lower','pdf lower bound');
+			fielddisplay(self,'upper','pdf upper bound');
+			if ~isempty(self.partition),
+				fielddisplay(self,'partition','partition vector defining where sampling will occur');
+			end
+			fielddisplay(self,'nsteps','number of time steps');
+		end 
+		%}}}
+		function md=checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'field',self.upper,'fieldname','uniform_uncertain.upper','NaN',1,'Inf',1,'>',self.lower,'numel',length(self.lower));
+			md = checkfield(md,'field',self.lower,'fieldname','uniform_uncertain.lower','NaN',1,'Inf',1,'<',self.upper,'numel',length(self.upper));
+			if self.isscaled(),
+				if isempty(self.partition),
+					error('uniform_uncertain is a scaled variable, but it''s missing a partition vector');
+				end
+				%better have a partition vector that has as many partitions as upper and lower's size: 
+				if size(self.upper,1)~=partition_npart(self.partition),
+					error('uniform_uncertain error message: row size of upper and partition size should be identical');
+				end
+				if size(self.lower,1)~=partition_npart(self.partition),
+					error('uniform_uncertain error message: row size of lower and partition size should be identical');
+				end
+				%we need as steps in upper and lower as there are time steps: 
+				if size(self.upper,2)~=self.nsteps,
+					error('uniform_uncertain error message: col size of upper and number of time steps should be identical');
+				end
+				if size(self.lower,2)~=self.nsteps,
+					error('uniform_uncertain error message: col size of lower and number of time steps should be identical');
+				end
+
+				md = checkfield(md,'field',self.partition,'fieldname','uniform_uncertain.partition','NaN',1,'Inf',1,'>=',-1,'numel',[md.mesh.numberofvertices,md.mesh.numberofelements]);
+				if size(self.partition,2)>1,
+					error('uniform_uncertain error message: partition should be a column vector');
+				end
+				partcheck=unique(self.partition); 
+				partmin=min(partcheck); 
+				partmax=max(partcheck);
+				if partmax<-1,
+					error('uniform_uncertain error message: partition vector''s min value should be -1 (for no partition), or start at 0');
+				end
+				nmax=max(md.mesh.numberofelements,md.mesh.numberofvertices);
+				if partmax>nmax,
+					error('uniform_uncertain error message: partition vector''s values cannot go over the number of vertices or elements');
+				end
+			end
+		end % }}}
+		%virtual functions needed by qmu processing algorithms:
+		%implemented:
+		function [desc]=prop_desc(uuv,dstr) % {{{
+			desc=cell(1,numel(uuv));
+			for i=1:numel(uuv)
+				if ~isempty(uuv(i).descriptor)
+					desc(i)=cellstr(uuv(i).descriptor);
+				elseif ~isempty(inputname(1))
+					desc(i)=cellstr([inputname(1) string_dim(uuv,i,'vector')]);
+				elseif exist('dstr','var')
+					desc(i)=cellstr([dstr         string_dim(uuv,i,'vector')]);
+				else
+					desc(i)=cellstr(['uuv'        string_dim(uuv,i,'vector')]);
+				end
+			end
+			desc=allempty(desc);
+		end %}}}
+		function [lower]=prop_lower(uuv) % {{{
+			lower=zeros(1,numel(uuv));
+			for i=1:numel(uuv)
+				lower(i)=uuv(i).lower;
+			end
+			lower=allequal(lower,-Inf);
+		end %}}}
+		function [upper]=prop_upper(uuv) % {{{
+			upper=zeros(1,numel(uuv));
+			for i=1:numel(uuv)
+				upper(i)=uuv(i).upper;
+			end
+			%upper=allequal(upper, Inf);
+		end % }}}
+		%default
+		function [stddev]=prop_stddev(uuv)  %{{{
+			stddev=[];
+		end % }}}
+		function [mean]=prop_mean(nuv) % {{{
+			mean=[];
+		end % }}}
+		function [initpt]=prop_initpt(uuv) %{{{
+			initpt=[];
+		end %}}}
+		function [initst]=prop_initst(uuv) %{{{
+			initst=[];
+		end %}}}
+		function [stype]=prop_stype(uuv) %{{{
+			stype={};
+		end %}}}
+		function [scale]=prop_scale(uuv) %{{{
+			scale=[];
+		end %}}}
+		function [abscissas]=prop_abscissas(hbu) % {{{
+			abscissas=[]; 
+		end % }}}
+		function [counts]=prop_counts(hbu) % {{{
+			counts=[]; 
+		end % }}}
+		function [pairs_per_variable]=prop_pairs_per_variable(hbu) % {{{
+			pairs_per_variable=[];
+		end % }}}
+		%new methods: 
+			function distributed=isdistributed(self) % {{{
+			if strncmp(self.descriptor,'distributed_',12),
+				distributed=1;
+			else
+				distributed=0;
+			end
+		end % }}}
+	function scaled=isscaled(self) % {{{
+			if strncmp(self.descriptor,'scaled_',7),
+				scaled=1;
+			else
+				scaled=0;
+			end
+		end % }}}
+	end
+	methods (Static)
+		function []=dakota_write(fidi,dvar) % {{{
+			%  collect only the variables of the appropriate class
+			uuv=struc_class(dvar,'uniform_uncertain');
+			%  write variables
+			vlist_write(fidi,'uniform_uncertain','uuv',uuv);
+		end %}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/uniform_uncertain.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/uniform_uncertain.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmu/uniform_uncertain.py	(revision 27955)
@@ -0,0 +1,259 @@
+import numpy as np
+
+from MatlabArray import *
+from MatlabFuncs import *
+from fielddisplay import fielddisplay
+from pairoptions import pairoptions
+from partition_npart import *
+from qmupart2npart import qmupart2npart
+
+
+class uniform_uncertain(object):
+    '''
+    UNIFORM_UNCERTAIN class definition
+
+    Usage:
+        [uuv] = uniform_uncertain(
+            'descriptor', descriptor,
+            'lower', lower,
+            'upper', upper,
+            'partition', partition
+            )
+
+        where uuv is the uniform_uncertain object returned by the constructor, 
+        lower and upper are the pdf distribution bounds, and partition is the 
+        partition vector for distributed variables. Can be a partition vector 
+        over elements or vertices.
+
+    Example:
+        md.qmu.variables.rheology = uniform_uncertain(
+            'descriptor', 'RheologyBBar',
+            'lower', 1e8,
+            'upper', 1e9
+            )
+        md.qmu.variables.rheology = uniform_uncertain(
+            'descriptor', 'RheologyBBar',
+            'lower', 1e8,
+            'upper', 1e9,
+            'partition', vpartition
+            )
+    '''
+    def __init__(self):  # {{{
+        self.descriptor = ''
+        self.lower      = -np.inf
+        self.upper      = np.inf
+        self.partition  = []
+        self.nsteps     = 0
+    # }}}
+
+    @staticmethod
+    def uniform_uncertain(*args):  # {{{
+        nargin = len(args)
+
+        # create a default object
+        if nargin == 0:
+            return uniform_uncertain()
+
+        # copy the object
+        elif nargin == 1:
+            if isinstance(args[0], uniform_uncertain):
+                uuv = args[0]
+            else:
+                raise Exception('Object ' + str(args[0]) + ' is a ' + str(type(args[0])) + ' class object, not "uniform_uncertain".')
+
+        # create the object from the input
+        else:
+            uuv = uniform_uncertain()
+
+            #recover options:
+            options = pairoptions(*args)
+
+            #initialize fields:
+            uuv.descriptor = options.getfieldvalue('descriptor')
+            uuv.lower      = options.getfieldvalue('lower')
+            uuv.upper      = options.getfieldvalue('upper')
+
+            #if the variable is scaled, a partition vector should have been 
+            #supplied, and  that partition vector should have as many 
+            #partitions as the lower and upper vectors:
+            if uuv.isscaled():
+                uuv.partition = options.getfieldvalue('partition')
+                uuv.nsteps = options.getfieldvalue('nsteps', 1)
+                npart = qmupart2npart(uuv.partition)
+                if npart != uuv.upper.shape[0]:
+                    raise Exception("uniform_uncertain constructor: for the scaled variable %s the upper field is not currently a vector of values for all the partitions described in the partition vector" % uuv.descriptor)
+                if npart != uuv.lower.shape[0]:
+                    raise Exception("uniform_uncertain constructor: for the scaled variable %s the lower field is not currently a vector of values for all the partitions described in the partition vector" % uuv.descriptor)
+                if uuv.nsteps != uuv.upper.shape[1]:
+                    raise Exception("uniform_uncertain constructor: for the scaled variable %s the col size of the upper field should be identical to the number of time steps" % uuv.descriptor)
+                if uuv.nsteps != uuv.lower.shape[1]:
+                    raise Exception("uniform_uncertain constructor: for the scaled variable %s the col size of the lower field should be identical to the number of time steps" % uuv.descriptor)
+
+        return [uuv] # Always return a list, so we have something akin to a MATLAB single row matrix
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = '   uniform uncertain variable: '
+        string = "%s\n%s" % (string, fielddisplay(self, 'descriptor', 'name tag'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'lower', 'pdf lower bound'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'upper', 'pdf upper bound'))
+        if self.partition != []:
+            string = "%s\n%s" % (string, fielddisplay(self, 'partition', 'partition vector defining where sampling will occur'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'nsteps', 'number of time steps'))
+
+        return string
+    # }}}
+
+    def __len__(self):  # {{{
+        if type(self.lower) in [list, np.ndarray]:
+            return len(self.lower)
+        else:
+            return 1
+    # }}}
+    
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        md = checkfield(md, 'field', self.upper, 'fieldname', 'uniform_uncertain.upper', 'NaN', 1, 'Inf', 1, '>', self.lower, 'numel', len(self.lower))
+        md = checkfield(md, 'field', self.lower, 'fieldname', 'uniform_uncertain.upper', 'NaN', 1, 'Inf', 1, '<', self.upper, 'numel', len(self.upper))
+        if self.isscaled():
+            if self.partition == []:
+                raise Exception("uniform_uncertain is a scaled variable, but it's missing a partition vector")
+            #better have a partition vector that has as many partitions as 
+            #upper and lower's size:
+            if self.upper.shape[0] != partition_npart(self.partititon):
+                raise Exception("uniform_uncertain error message: row size of upper and partition size should be identical")
+            if self.lower.shape[0] != partition_npart(self.partition):
+                raise Exception("uniform_uncertain error message: row size of lower and partition size should be identical")
+            #we need as steps in upper and lower as there are time steps
+            if self.stddev.shape[1] != self.nsteps:
+                raise Exception("uniform_uncertain error message: col size of upper and partition size should be identical")
+            if self.mean.shape[1] != self.nsteps:
+                raise Exception("uniform_uncertain error message: col size of lower and partition size should be identical")
+            md = checkfield(md, 'field', self.partition, 'fieldname', 'uniform_uncertain.partition', 'NaN', 1, 'Inf', 1, '>=', -1, 'numel', [md.mesh.numberofvertices, md.mesh.numberofvertices])
+            if self.partition.shape[1] > 1:
+                raise Exception("uniform_uncertain error message: partition should be a column vector")
+            partcheck = np.unique(self.partition)
+            partmin = min(partcheck)
+            partmax = max(partcheck)
+            if partmax < -1:
+                raise Exception("uniform_uncertain error message: partition vector's min value should be -1 (for no partition), or start at 0")
+            nmax = max(md.mesh.numberofelements, md.mesh.numberofvertices)
+            if partmax > nmax:
+                raise Exception("uniform_uncertain error message: partition vector's values cannot go over the number of vertices or elements")
+    # }}}
+
+    #virtual functions needed by qmu processing algorithms:
+    #implemented:
+
+    @staticmethod
+    def prop_desc(uuv, dstr):  # {{{
+        desc = ['' for i in range(np.size(uuv))]
+        for i in range(np.size(uuv)):
+            if uuv[i].descriptor != '' or type(uuv[i].descriptor) != str:
+                desc[i] = str(uuv[i].descriptor)
+            elif dstr != '':
+                desc[i] = str(dstr) + str(string_dim(uuv, i, 'vector'))
+            else:
+                desc[i] = 'uuv' + str(string_dim(uuv, i, 'vector'))
+
+            desc = allempty(desc)
+
+        return desc
+    # }}}
+
+    @staticmethod
+    def prop_stddev(uuv):  # {{{
+        stddev = []
+        return stddev
+    # }}}
+
+    @staticmethod
+    def prop_mean(uuv):  # {{{
+        mean = []
+        return mean
+    # }}}
+
+    @staticmethod
+    def prop_lower(uuv):  # {{{
+        lower = np.zeros(np.size(uuv))
+        for i in range(np.size(uuv)):
+            lower[i] = uuv[i].lower
+
+        lower = allequal(lower, -np.inf)
+
+        return lower
+    # }}}
+
+    @staticmethod
+    def prop_upper(uuv):  # {{{
+        upper = np.zeros(np.size(uuv))
+        for i in range(np.size(uuv)):
+            upper[i] = uuv[i].upper
+
+        #upper = allequal(upper, np.inf)
+
+        return upper
+    # }}}
+
+    @staticmethod
+    def prop_abscissas(hbu):  # {{{
+        abscissas = []
+        return abscissas
+    # }}}
+
+    @staticmethod
+    def prop_pairs_per_variable(hbu):  # {{{
+        pairs_per_variable = []
+        return pairs_per_variable
+    # }}}
+
+    @staticmethod
+    def prop_counts(hbu):  # {{{
+        counts = []
+        return counts
+    # }}}
+
+    @staticmethod
+    def prop_initpt(uuv):  # {{{
+        initpt = []
+        return initpt
+    # }}}
+
+    @staticmethod
+    def prop_initst(uuv):  # {{{
+        initst = []
+        return initst
+    # }}}
+
+    @staticmethod
+    def prop_stype(uuv):  # {{{
+        stype = []
+        return stype
+    # }}}
+
+    @staticmethod
+    def prop_scale(uuv):  # {{{
+        scale = []
+        return scale
+    # }}}
+
+    #new methods:
+    def isscaled(self):  # {{{
+        if strncmp(self.descriptor, 'scaled_', 7):
+            return True
+        else:
+            return False
+    # }}}
+
+    @staticmethod
+    def dakota_write(fidi, dvar):  # {{{
+        # possible namespace pollution, the above import seems not to work
+        from vlist_write import vlist_write
+        # collect only the variables of the appropriate class
+        uuv = deepcopy(dvar)
+        fields = fieldnames(uuv)
+        for field in fields:
+            if getattr(uuv, field)[0].__class__.__name__ != 'uniform_uncertain':
+                delattr(uuv, field)
+        if len(uuv) > 0:
+            vlist_write(fidi, 'uniform_uncertain', 'uuv', uuv)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmustatistics.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmustatistics.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmustatistics.m	(revision 27955)
@@ -0,0 +1,162 @@
+%QMUSTATISTICS class definition
+%
+%   Usage:
+%      stats=qmustatistics();
+
+classdef qmustatistics
+	properties (SetAccess=public)
+	
+		%generic information: 
+		nfiles_per_directory = 5;  %number of files per output directory.
+		ndirectories         = 50; %number of output directories; should be < numcpus
+	
+		method = struct('name',{'None'},'fields',{[]},'steps',{[]},'nbins',{NaN},'indices',{[]});
+
+		%name: name of method, one of 'None','Histogram','SampleSeries' or 'MeanVariance'
+		%fields: fields for the  statistics being requested, ex: 'Sealevel','BslcIce','BslcHydro'
+		%steps: time steps at which each field statistic is computed, ex: [1:2,5,20] or 1:100
+		%nbins: number of bins for 'Histogram' statistics
+		%indices: vertex indices at which to retrieve samples
+
+	end
+	methods
+		function self = qmustatistics(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('qmustatistics');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			self.method.name='None';
+			self.nfiles_per_directory = 5;  %number of files per output directory.
+			self.ndirectories         = 50; %number of output directories.  %ndirectories should be < numcpus
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return: 
+			if md.qmu.isdakota==0; return; end;
+			if strcmpi(self.method(1).name,'None'),return;end;
+
+			%Checks:
+			md = checkfield(md,'fieldname','qmu.statistics.nfiles_per_directory','>=',1);
+			if self.ndirectories>md.cluster.np, 
+				error('qmustatistics consistency check: number of cluster CPUs should be > number of output directories');
+			end
+			if (self.ndirectories*self.nfiles_per_directory)~=md.qmu.method.params.samples,
+				error('qmustatistics consistency check: number of directories x number of files per directory should be == to number of samples requested!');
+			end
+			for i=1:length(self.method),
+				m=self.method(i);
+				if strcmpi(m.name,'Histogram'),
+					md = checkfield(md,'fieldname',sprintf('qmu.statistics.method(%i).nbins',i),'>=',1,'<=',md.qmu.method.params.samples);
+				end
+				for f=1:length(m.fields),
+					if ~ischar(m.fields{f}),
+						error(sprintf('qmustatistics consistency check error: qmu.statistics.method(%i).fields{%i} is not a string!',i,f));
+					end
+				end
+				for s=1:length(m.steps),
+					if m.steps(s)<=0,
+						error(sprintf('qmustatistics consistency check error: qmu.statistics.method(%i).steps(%i) should be > 0!',i,s));
+					end
+					if m.steps(s)> md.mesh.numberofvertices
+						error(sprintf('qmustatistics consistency check error: qmu.statistics.method(%i).steps(%i) should be < md.mesh.numberofvertices!',i,s));
+					end
+				end
+
+			end
+
+		end % }}}
+		function list=defaultoutputs(self,md) % {{{
+		end % }}}
+		function disp(self) % {{{
+
+			disp(sprintf('qmustatistics: post-Dakota run processing of QMU statistics:'));
+				
+			if strcmpi(self.method(1).name,'None'),  return; end;
+
+			%generic information:
+			fielddisplay(self,'nfiles_per_directory','number of files per output directory');
+			fielddisplay(self,'ndirectories','number of output directories; should be < numcpus');
+
+			for i=1:length(self.method),
+				disp(['   method #' num2str(i)]);
+				disp(self.method(i));
+			end
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			if strcmpi(self.method(1).name,'None'), 
+				WriteData(fid,prefix,'name','md.qmu.statistics','data',0,'format','Boolean');
+				statistics=0; 
+				return;
+			else 
+				WriteData(fid,prefix,'name','md.qmu.statistics','data',1,'format','Boolean');
+				statistics=1;
+			end
+
+			if statistics,
+				WriteData(fid,prefix,'name','md.qmu.statistics.nfiles_per_directory','data',self.nfiles_per_directory,'format','Integer');
+				WriteData(fid,prefix,'name','md.qmu.statistics.ndirectories','data',self.ndirectories,'format','Integer');
+				WriteData(fid,prefix,'name','md.qmu.statistics.numstatistics','data',length(self.method),'format','Integer');
+				for i=1:length(self.method),
+					m=self.method(i); 
+					WriteData(fid,prefix,'name',sprintf('md.qmu.statistics.method(%i).name',i),'data',m.name,'format','String');
+					WriteData(fid,prefix,'data',m.fields,'name',sprintf('md.qmu.statistics.method(%i).fields',i),'format','StringArray');
+					WriteData(fid,prefix,'data',m.steps,'name',sprintf('md.qmu.statistics.method(%i).steps',i),'format','IntMat','mattype',3);
+
+					if strcmpi(m.name,'Histogram'),
+						WriteData(fid,prefix,'name',sprintf('md.qmu.statistics.method(%i).nbins',i),'data',m.nbins,'format','Integer');
+					elseif strcmpi(m.name,'MeanVariance'),
+						%do nothing
+					elseif strcmpi(m.name,'SampleSeries'),
+						WriteData(fid,prefix,'data',m.indices,'name',sprintf('md.qmu.statistics.method(%i).indices',i),'format','IntMat','mattype',3);
+					else 
+						error(sprintf('qmustatistics marshall error message: unknown type ''%s'' for qmu.statistics.method(%i)',m.name,i));
+					end
+
+				end
+			end
+
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			writejs1Darray(fid,[modelname '.stressbalance.spcvx'],self.spcvx);
+			writejs1Darray(fid,[modelname '.stressbalance.spcvy'],self.spcvy);
+			writejs1Darray(fid,[modelname '.stressbalance.spcvz'],self.spcvz);
+			writejsdouble(fid,[modelname '.stressbalance.restol'],self.restol);
+			writejsdouble(fid,[modelname '.stressbalance.reltol'],self.reltol);
+			writejsdouble(fid,[modelname '.stressbalance.abstol'],self.abstol);
+			writejsdouble(fid,[modelname '.stressbalance.isnewton'],self.isnewton);
+			writejsdouble(fid,[modelname '.stressbalance.FSreconditioning'],self.FSreconditioning);
+			writejsdouble(fid,[modelname '.stressbalance.maxiter'],self.maxiter);
+			writejsdouble(fid,[modelname '.stressbalance.shelf_dampening'],self.shelf_dampening);
+			writejs1Darray(fid,[modelname '.stressbalance.vertex_pairing'],self.vertex_pairing);
+			writejsdouble(fid,[modelname '.stressbalance.penalty_factor'],self.penalty_factor);
+			writejsdouble(fid,[modelname '.stressbalance.rift_penalty_lock'],self.rift_penalty_lock);
+			writejsdouble(fid,[modelname '.stressbalance.rift_penalty_threshold'],self.rift_penalty_threshold);
+			writejs2Darray(fid,[modelname '.stressbalance.referential'],self.referential);
+			writejs2Darray(fid,[modelname '.stressbalance.loadingforce'],self.loadingforce);
+			writejscellstring(fid,[modelname '.stressbalance.requested_outputs'],self.requested_outputs);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmustatistics.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmustatistics.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/qmustatistics.py	(revision 27955)
@@ -0,0 +1,142 @@
+import numpy as np
+
+from helpers import *
+from WriteData import WriteData
+
+
+class qmustatistics(object):
+    """QMUSTATISTICS class definition
+
+    Usage:
+        stats = qmustatistics()
+    """
+
+    def __init__(self, *args):  #{{{
+        self.nfiles_per_directory = 5  # Number of files per output directory
+        self.ndirectories  = 50  # Number of output directories; should be < numcpus
+
+        self.method = [{}]
+        self.method[0]['name'] = 'None'
+        self.method[0]['fields'] = []
+        self.method[0]['steps'] = []
+        self.method[0]['nbins'] = np.nan
+        self.method[0]['indices'] = []
+
+        # name : name of method, one of 'None', 'Histogram', 'SampleSeries', or 'MeanVariance'
+        # fields : fields for the statistics being requested, ex: 'Sealevel', 'BslrIce', 'BsrlHydro'
+        # steps : time steps at which each field statistic is computed, ex: [1, 2, 5, 20] or [range(1:100)]
+        # nbins : number of bins for 'Histogram' statistics
+        # indices : vertex indices at which to retrieve samples
+
+        nargs = len(args)
+        if nargs == 0:
+            # Create a default object
+            self.setdefaultparameters()
+        elif nargs == 1:
+            # NOTE: The following has not been tested. Remove this note when it has
+            inputstruct = args[0]
+            list1 = properties('qmustatistics')
+            list2 = fieldnames(inputstruct)
+            for i in range(len(list1)):
+                fieldname = list1[i]
+                if fieldname in list2:
+                    setattr(self, fieldname, getattr(inputstruct, fieldname))
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = 'qmustatistics: post-Dakota run processing of QMU statistics:\n'
+        if self.method[0]['name'] == 'None':
+            return s
+        s += '{}\n'.format(fielddisplay(self, 'nfiles_per_directory', 'number of files per output directory'))
+        s += '{}\n'.format(fielddisplay(self, 'ndirectories', 'number of output directories; should be < numcpus'))
+        for i in range(len(self.method)):
+            s += '{}\n'.format('   method # {}'.format(i))
+            s += '{}\n'.format(self.method[i])
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.method[0]['name'] = 'None'
+        self.nfiles_per_directory = 5  # Number of files per output directory
+        self.ndirectories = 50  # Number of output directories; should be < numcpus
+        return self
+    # }}}
+
+    @staticmethod
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if md.qmu.isdakota == 0:
+            return
+        if self.method[0]['name'] == 'None':
+            return
+
+        # Checks
+        md = checkfield(md, 'fieldname', 'qmu.statistics.nfiles_per_directory', '>=', 1)
+        if self.ndirectories > md.cluster.np:
+            raise Exception('qmustatistics consistency check: number of cluster CPUs should be > number of output directories')
+        if self.ndirectories * self.nfiles_per_directory != md.qmu.method.params.sample:
+            raise Exception('qmustatistics consistency check: number of directories x number of files per directory should be == to number of samples requested!')
+        for i in range(len(self.method)):
+            m = self.method[i]
+            if m.name == 'Histogram':
+                md = checkfield(md, 'fieldname', 'qmu.statistics.method[{}].nbins'.format(i), '>=', 1, '<=', md.qmu.method.params.samples)
+            for f in range(len(m['fields'])):
+                if not isinstance(m['fields'][f], str):
+                    raise Exception('qmustatistics consistency check error: qmu.statistics.method[{}][\'fields\'][{}] is not a string!'.format(i, f))
+            for s in range(len(m['steps'])):
+                if m['steps'][s] <= 0:
+                    raise Exception('qmustatistics consistency check error: qmu.statistics.method[{}][\'steps\'][{}] should be > 0!'.format(i, s))
+                if m['steps'][s] > md.mesh.numberofvertices:
+                    raise Exception('qmustatistics consistency check error: qmu.statistics.method[{}][\'steps\'][{}] should be < md.mesh.numberofvertices!'.format(i, s))
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        outputs = []
+        return outputs
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        if self.method[0]['name'] == 'None':
+            WriteData(fid, prefix, 'name', 'md.qmu.statistics', 'data', 0, 'format', 'Boolean')
+            statistics = 0
+            return
+        else:
+            WriteData(fid, prefix, 'name', 'md.qmu.statistics', 'data', 1, 'format', 'Boolean')
+            statistics = 1
+
+        if statistics:
+            WriteData(fid, prefix, 'name', 'md.qmu.statistics.nfiles_per_directory', 'data', self.nfiles_per_directory, 'format', 'Integer')
+            WriteData(fid, prefix, 'name', 'md.qmu.statistics.ndirectories', 'data', self.ndirectories, 'format', 'Integer')
+            WriteData(fid, prefix, 'name', 'md.qmu.statistics.numstatistics', 'data', len(self.method), 'format', 'Integer')
+            for i in range(1, len(self.method) + 1):
+                m = self.method[i - 1]
+                WriteData(fid, prefix, 'name', 'md.qmu.statistics.method({}).name'.format(i), 'data', m['name'], 'format', 'String')
+                WriteData(fid, prefix, 'data', m['fields'], 'name', 'md.qmu.statistics.method({}).fields'.format(i), 'format', 'StringArray')
+                WriteData(fid, prefix, 'data', m['steps'], 'name', 'md.qmu.statistics.method({}).steps'.format(i), 'format', 'IntMat', 'mattype', 3)
+                if m['name'] == 'Histogram':
+                    WriteData(fid, prefix, 'name', 'md.qmu.statistics.method({}).nbins'.format(i), 'data', m['nbins'], 'format', 'Integer')
+                elif m['name'] == 'MeanVariance':
+                    pass # do nothing
+                elif m['name'] == 'SampleSeries':
+                    WriteData(fid, prefix, 'data', m['indices'], 'name', 'md.qmu.statistics.method({}).indices'.format(i), 'format', 'IntMat', 'mattype', 3)
+                else:
+                    raise Exception('qmustatistics marshall error message: unknown type ''{}'' for qmu.statistics.method[{}]'.format(m['name'], i))
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self
+    # }}}
+
+    def addmethod(self, *args):  # {{{
+        """ADDMETHOD - Add new, empty method or passed dict to self.method
+        """
+        nargs = len(args)
+        if nargs == 0:
+            self.method.append({})
+        elif nargs == 1:
+            self.method.append(args[0])
+        else:
+            raise Exception('Number of args should be 0 (appends empty dict to methods member) or 1 (appends passed dict to methods member)')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/radar.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/radar.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/radar.m	(revision 27955)
@@ -0,0 +1,56 @@
+%RADAR class definition
+%
+%   Usage:
+%      radar=radar();
+%      radar=radar('name','Radar1',...
+%						 'definitionname','Outputdefinition1',...
+%						 'ice_period', ones(md.mesh.numberofvertices,1));
+
+classdef radar
+	properties (SetAccess=private)  
+		%radarattenuation
+		name						 = '';
+		definitionstring		 = '';
+	end
+
+	methods
+		function self = extrude(self,md) % {{{
+			return;
+		end % }}}
+		function self = radar(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name=getfieldvalue(options,'name','');
+				self.definitionstring=getfieldvalue(options,'definitionstring');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			
+			if ~ischar(self.name),
+				error('radar error message: ''name'' field should be a string!');
+			end	
+			OutputdefinitionStringArray={};
+			for i=1:100
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+			md = checkfield(md,'field',self.definitionstring,'values',OutputdefinitionStringArray);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Radar:\n'));
+
+			fielddisplay(self,'name','identifier for this radar response');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from ''Outputdefinition[1-100]''');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+		WriteData(fid,prefix,'data',self.name,'name','md.radar.name','format','String');
+		WriteData(fid,prefix,'data',self.definitionstring, 'name','md.radar.definitionstring','format','String');
+	end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/radaroverlay.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/radaroverlay.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/radaroverlay.js	(revision 27955)
@@ -0,0 +1,29 @@
+//RADAROVERLAY class definition
+//
+//   Usage:
+//      radaroverlay=new radaroverlay();
+
+function radaroverlay (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   radaroverlay parameters:'));
+
+		fielddisplay(this,'xlim','corresponding x boundaries[m]');
+		fielddisplay(this,'ylim','corresponding y boundaries [m]');
+		fielddisplay(this,'outerindex','outer triangulation between mesh and bounding box');
+		fielddisplay(this,'outerx','outer triangulation x coordinate between mesh and bounding box');
+		fielddisplay(this,'outery','outer triangulation y coordinate between mesh and bounding box');
+
+	}// }}}
+	//properties 
+	// {{{
+	this.xlim   = NaN;
+	this.ylim   = NaN;
+	this.outerindex   = NaN;
+	this.outerx   = NaN;
+	this.outery   = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/radaroverlay.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/radaroverlay.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/radaroverlay.m	(revision 27955)
@@ -0,0 +1,53 @@
+%RADAROVERLAY class definition
+%
+%   Usage:
+%      radaroverlay=radaroverlay();
+
+classdef radaroverlay
+	properties (SetAccess=public) 
+		pwr = NaN;
+		x   = NaN;
+		y   = NaN;
+		outerindex = NaN;
+		outerx = NaN;
+		outery = NaN;
+		outerheight = NaN;
+	end
+	methods
+		function self = radaroverlay(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   radaroverlay parameters:'));
+
+			fielddisplay(self,'pwr','radar power image (matrix)');
+			fielddisplay(self,'x','corresponding x coordinates [m]');
+			fielddisplay(self,'y','corresponding y coordinates [m]');
+			fielddisplay(self,'outerindex','outer triangulation corresponding to space between mesh and the bounding box');
+			fielddisplay(self,'outerx','outer x corresponding to space between mesh and the bounding box');
+			fielddisplay(self,'outery','outer y corresponding to space between mesh and the bounding box');
+			fielddisplay(self,'outerheight','outer height corresponding to space between mesh and the bounding box');
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			if ~isnan(self.pwr),
+				writejs1Darray(fid,[modelname '.radaroverlay.xlim'],[min(self.x) max(self.x)]);
+				writejs1Darray(fid,[modelname '.radaroverlay.ylim'],[min(self.y) max(self.y)]);
+				writejs2Darray(fid,[modelname '.radaroverlay.outerindex'],self.outerindex);
+				writejs1Darray(fid,[modelname '.radaroverlay.outerx'],self.outerx);
+				writejs1Darray(fid,[modelname '.radaroverlay.outery'],self.outery);
+				writejs1Darray(fid,[modelname '.radaroverlay.outerheight'],self.outerheight)
+			end
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/radaroverlay.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/radaroverlay.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/radaroverlay.py	(revision 27955)
@@ -0,0 +1,32 @@
+from fielddisplay import fielddisplay
+
+
+class radaroverlay(object):
+    """
+    RADAROVERLAY class definition
+
+       Usage:
+          radaroverlay = radaroverlay()
+    """
+
+    def __init__(self):  # {{{
+        self.pwr = float('NaN')
+        self.x = float('NaN')
+        self.y = float('NaN')
+
+    #set defaults
+        self.setdefaultparameters()
+
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = '   radaroverlay parameters:'
+        string = "%s\n%s" % (string, fielddisplay(self, 'pwr', 'radar power image (matrix)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'x', 'corresponding x coordinates [m]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'y', 'corresponding y coordinates [m]'))
+        return string
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        return self
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/regionaloutput.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/regionaloutput.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/regionaloutput.m	(revision 27955)
@@ -0,0 +1,106 @@
+%REGIONALOUTPUT class definition
+%
+%   Usage:
+%      regionaloutput=regionaloutput();
+%      regionaloutput=regionaloutput('name','Volume1','definitionstring','Outputdefinition1','outputnamestring','IceVolume',...
+%                    'mask',mask);
+%      regionaloutput=regionaloutput('name','Volume1','definitionstring','Outputdefinition1','outputnamestring','IceVolume',...
+%                    'maskexpstring','Exp/Mask.exp','model',md)
+% 
+%   where mask is a vectorial field of size md.mesh.numberofvertices,1 : where vertices with values > 0 are to be included in the calculated region.
+%   Alternatively, the user can pass in an Argus file and model object instead of a mask, and mask will be calculated for the user
+%
+%   See also: MISFIT, MASSCON, MASSCONAXPBY
+
+classdef regionaloutput
+	properties (SetAccess=public)
+		%regionaloutput
+		name              = '';
+		definitionstring  = ''; %string that identifies this output definition uniquely, from 'Outputdefinition[1-100]'
+		outputnamestring  = ''; %string that identifies the type of output you want, eg. IceVolume, TotalSmb, GroudedArea
+		mask              = NaN; %mask vectorial field which identifies the region of interest (value > 0 will be included)
+		maskexpstring     = '';
+	end
+	
+	methods
+		function self = extrude(self,md) % {{{
+			if ~isnan(self.mask)
+				self.mask=project3d(md,'vector',self.mask,'type','node');
+			end
+		end % }}}
+		function self = regionaloutput(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name=getfieldvalue(options,'name','');
+				if nargin==8
+					self.mask=getfieldvalue(options,'mask',NaN);
+					if isnan(self.mask)
+						error('regionaloutput error message: ''mask'' field or ''maskexpstring'' and ''model'' fields should be defined!');
+					end
+				elseif nargin==10
+					modelname=getfieldvalue(options,'model');
+					self.maskexpstring=getfieldvalue(options,'maskexpstring');
+					self=setmaskfromexp(self,modelname);
+				else
+					error('regionaloutput error message: ''mask'' field or ''maskexpstring'' and ''model'' fields should be defined!');
+				end
+		
+				self.definitionstring=getfieldvalue(options,'definitionstring');
+				self.outputnamestring=getfieldvalue(options,'outputnamestring');
+
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function self = setmaskfromexp(self,md) % {{{
+
+			if length(self.maskexpstring)>0
+				self.mask=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,self.maskexpstring,'node',1);
+			end
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ischar(self.name),
+				error('regionaloutput error message: ''name'' field should be a string!');
+			end
+			if ~ischar(self.outputnamestring),
+				error('regionaloutput error message: ''outputnamestring'' field should be a string!');
+			end
+			
+			OutputdefinitionStringArray={};
+			for i=1:100
+				OutputdefinitionStringArray{i}=strcat('Outputdefinition',num2str(i));
+			end
+			self=setmaskfromexp(self,md);
+
+			md = checkfield(md,'fieldname','self.definitionstring','field',self.definitionstring,'values',OutputdefinitionStringArray);
+			md = checkfield(md,'fieldname','self.mask','field',self.mask,'size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+
+		end % }}}
+		function md = disp(self) % {{{
+		
+			disp(sprintf('   Regionaloutput:\n'));
+
+			fielddisplay(self,'name','identifier for this regional response');
+			fielddisplay(self,'definitionstring','string that identifies this output definition uniquely, from ''Outputdefinition[1-100]''');
+			fielddisplay(self,'outputnamestring','string that identifies the type of output you want, eg. IceVolume, TotalSmb, GroudedArea');
+			fielddisplay(self,'mask','mask vectorial field which identifies the region of interest (value > 0 will be included)');
+			fielddisplay(self,'maskexpstring','name of Argus file that can be passed in to define the regional mask');
+
+		end % }}}
+		function md = marshall(self,prefix,md,fid) % {{{
+
+			self=setmaskfromexp(self,md);
+			WriteData(fid,prefix,'data',self.name,'name','md.regionaloutput.name','format','String');
+			WriteData(fid,prefix,'data',self.definitionstring,'name','md.regionaloutput.definitionstring','format','String');
+			WriteData(fid,prefix,'data',self.outputnamestring,'name','md.regionaloutput.outputnamestring','format','String');
+			WriteData(fid,prefix,'data',self.mask,'name','md.regionaloutput.mask','format','DoubleMat','mattype',1);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/regionaloutput.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/regionaloutput.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/regionaloutput.py	(revision 27955)
@@ -0,0 +1,114 @@
+from project3d import project3d
+from fielddisplay import fielddisplay
+from pairoptions import pairoptions
+from checkfield import checkfield
+from WriteData import WriteData
+from ContourToMesh import ContourToMesh
+import numpy as np
+import os
+
+
+class regionaloutput(object):
+    """
+    REGIONALOUTPUT class definition
+
+       Usage:
+          regionaloutput = regionaloutput()
+          regionaloutput = regionaloutput('name', 'Volume1', 'definitionstring', 'Outputdefinition1', 'outputnamestring', 'IceVolume', 'mask', mask)
+          regionaloutput = regionaloutput('name', 'Volume1', 'definitionstring', 'Outputdefinition1', 'outputnamestring', 'IceVolume', 'maskexpstring', 'Exp/Mask.exp', 'model', md)
+
+       where mask is a vectorial field of size md.mesh.numberofvertices, 1 : where vertices with values > 1 are to be included in the calculated region.
+       Alternatively, the user can pass in an Argus file and model object instead of a mask, and mask will be calculated for the user
+    """
+
+    def __init__(self, *args):  # {{{
+
+        self.name = ''
+        self.model= ''
+        self.definitionstring = ''
+        self.outputnamestring = ''
+        self.mask = np.nan
+        self.maskexpstring = ''
+
+    #set defaults
+        self.setdefaultparameters()
+
+    #use provided options to change fields
+        options = pairoptions(*args)
+
+    #OK get other fields
+        self = options.AssignObjectFields(self)
+
+    #get name
+        if options.getfieldvalue('model', 0):
+            if options.getfieldvalue('maskexpstring', 0):
+                modelname = options.getfieldvalue('model')
+                self.maskexpstring = options.getfieldvalue('maskexpstring')
+                self.setmaskfromexp(modelname)
+
+        # if (len(self.mask) <= 1 & np.any(np.isnan(self.mask))):
+        #     raise IOError('regionaloutput error message: ''mask'' field or ''maskexpstring'' and ''model'' fields should be defined!')
+
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = "   Regionaloutput:"
+        string = "%s\n%s" % (string, fielddisplay(self, 'name', 'identifier for this regional response'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'definitionstring', 'string that identifies this output definition uniquely, from Outputdefinition[1 - 100]'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'outputnamestring', 'string that identifies the type of output you want, eg. IceVolume, TotalSmb, GroudedArea'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'mask', 'mask vectorial field which identifies the region of interest (value > 0 will be included)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'maskexpstring', 'name of Argus file that can be passed in to define the regional mask'))
+        return string
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.mask = project3d(md, 'vector', self.mask, 'type', 'node')
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        return self
+    # }}}
+
+    def setmaskfromexp(self, md):  # {{{
+        if len(self.maskexpstring) > 0:
+            self.mask = ContourToMesh(md.mesh.elements, md.mesh.x, md.mesh.y, self.maskexpstring, 'node', 1)
+
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+
+        if not isinstance(self.name, str):
+            raise RuntimeError("regionaloutput error message: 'name' field should be a string!")
+
+        if not isinstance(self.outputnamestring, str):
+            raise RuntimeError("regionaloutput error message: 'outputnamestring' field should be a string!")
+
+        if len(self.maskexpstring) > 0:
+            if not os.path.isfile(self.maskexpstring):
+                raise RuntimeError("regionaloutput error message: file name for mask exp does not point to a legitimate file on disk!")
+            else:
+                self.setmaskfromexp(md)
+
+        OutputdefinitionStringArray = []
+        for i in range(1, 100):
+            x = 'Outputdefinition' + str(i)
+            OutputdefinitionStringArray.append(x)
+
+        md = checkfield(md, 'field', self.definitionstring, 'values', OutputdefinitionStringArray)
+        md = checkfield(md, 'field', self.mask, 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+        return md
+    # }}}
+    def marshall(self, prefix, md, fid):  # {{{
+
+        #before marshalling, make sure mask is set:
+        self.setmaskfromexp(md)
+
+    #ok, marshall strings and mask:
+        WriteData(fid, prefix, 'data', self.name, 'name', 'md.regionaloutput.name', 'format', 'String')
+        WriteData(fid, prefix, 'data', self.definitionstring, 'name', 'md.regionaloutput.definitionstring', 'format', 'String')
+        WriteData(fid, prefix, 'data', self.outputnamestring, 'name', 'md.regionaloutput.outputnamestring', 'format', 'String')
+        WriteData(fid, prefix, 'data', self.mask, 'name', 'md.regionaloutput.mask', 'format', 'DoubleMat', 'mattype', 1)
+
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/results.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/results.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/results.py	(revision 27955)
@@ -0,0 +1,224 @@
+from copy import deepcopy
+
+
+class results(object):  #{{{
+    """RESULTS class definition
+
+    Usage:
+        md.results = results()
+
+    TODO:
+    - Rework so that a solution of arbitrary length (normal or transient) can
+    initialized from one call to the results class constructor.
+    """
+
+    def __init__(self):  #{{{
+        pass
+    # }}}
+
+    def __repr__(self):  #{{{
+        s = ''
+        for key, value in self.__dict__.items():
+            if isinstance(value, resultsdakota):
+                lengthvalue = 1
+            else:
+                try:
+                    lengthvalue = len(value)
+                except TypeError:
+                    lengthvalue = 1
+            s += '    {}: [1x{} struct]\n'.format(key, lengthvalue)
+
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  #{{{
+        #do nothing
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  #{{{
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  #{{{
+        pass
+    # }}}
+# }}}
+
+
+class resultsdakota(object):  #{{{
+    """RESULTSDAKOTA class definition - Used to store results from a run of
+    Dakota.
+
+    Usage:
+        md.results.dakota = resultsdakota()
+
+    NOTE: Values of attributes can themselves be instances of solution class.
+    """
+
+    def __init__(self):  #{{{
+        pass
+    # }}}
+
+    def __repr__(self):  #{{{
+        s = ''
+        for key, value in self.__dict__.items():
+            s += '    {}: '.format(key)
+            if isinstance(value, list):
+                s += '[{} element list]'.format(len(value))
+            else:
+                s += '{}'.format(value)
+            s += '\n'
+        return s
+    # }}}
+
+    def __len__(self):  #{{{
+        return len(self.__dict__.keys())
+    # }}}
+
+    def setdefaultparameters(self):  #{{{
+        #do nothing
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  #{{{
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  #{{{
+        pass
+    # }}}
+# }}}
+
+
+class solution(object):  #{{{
+    """SOLUTION class definition - Value of an attribute (which should be
+    a string representing a solution type) of an instance of results class
+
+    Elements of self.steps should be instances of solutionstep.
+
+    Usage:
+        setattr(md.results, 'SolutionType', solution())
+
+    NOTE:
+    - Under MATLAB, this is implemented as a structure array
+    - Only when this instance of solution represents a transient solution
+    should self.steps have more than one element
+    """
+
+    def __init__(self, *args):  #{{{
+        self.steps = None
+        if len(args) == 1:
+            arg = args[0]
+            if isinstance(arg, list):
+                self.steps = arg
+            else:
+                raise Exception('solution class error: if initializing with an argument, that argument should be an empty list or a list of instances of solutionstep')
+        else:
+            self.steps = [solutionstep()]
+    # }}}
+
+    def __deepcopy__(self, memo):  #{{{
+        return solution(deepcopy(self.steps, memo))
+    # }}}
+
+    def __repr__(self):  #{{{
+        s = ''
+        numsteps = len(self.steps)
+        if numsteps == 1:
+            for key, value in self.steps[0].__dict__.items():
+                s += '    {}: {}\n'.format(key, value)
+        else:
+            s = '  1x{} struct array with fields:\n'.format(numsteps)
+            s += '\n'
+            for fieldname in self.steps[0].getfieldnames():
+                s += '    {}\n'.format(fieldname)
+
+        return s
+    # }}}
+
+    def __len__(self):  #{{{
+        return len(self.steps)
+    # }}}
+
+    def __getattr__(self, key):  #{{{
+        # NOTE: Currently only returning value from first frame of transient solution (see retrieval of md.results.TransientSolution.BedGRD in test2051.py for justification)
+        return getattr(self.steps[0], key)
+
+        # Original code
+        # if len(self.steps) == 1:
+        #     return getattr(self.steps[0], key)
+        # else:
+        #     raise Exception('<results>.<solution> error: Currently, can only get a field if we are not working with a transient solution.')
+    # }}}
+
+    def __getitem__(self, index):  #{{{
+        while True:
+            try:
+                return self.steps[index]
+            except:
+                self.steps.append(solutionstep())
+        else:
+            raise Exception('<results>.<solution>: either request a specific result by index or make sure that there is only a single result for this solution (cannot be a transient solution)')
+    # }}}
+
+    def setdefaultparameters(self):  #{{{
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  #{{{
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  #{{{
+        pass
+    # }}}
+# }}}
+
+
+class solutionstep(object):  #{{{
+    """SOLUTIONSTEP class definition - Single element of <solution>.steps
+
+    Usage:
+        <solution>.steps.append(solutionstep())
+    """
+
+    def __init__(self, *args):  #{{{
+        pass
+    # }}}
+
+    def __repr__(self):  #{{{
+        s = ''
+        width = self.getlongestfieldname()
+        for key, value in self.__dict__.items():
+            s += '    {:{width}s}: {}\n'.format(key, value, width=width)
+
+        return s
+    # }}}
+
+    def getfieldnames(self):  #{{{
+        return self.__dict__.keys()
+    # }}}
+
+    def getlongestfieldname(self):  #{{{
+        maxlength = 0
+        for key in self.__dict__.keys():
+            length = len(key)
+            if length > maxlength:
+                maxlength = length
+
+        return maxlength
+    # }}}
+
+    def setdefaultparameters(self):  #{{{
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  #{{{
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  #{{{
+        pass
+    # }}}
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/rifts.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/rifts.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/rifts.js	(revision 27955)
@@ -0,0 +1,91 @@
+//RIFTS class definition
+//
+//   Usage:
+//      rifts=new rifts();
+
+function rifts (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.classname= function(){// {{{
+		return "rifts";
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   rifts class echo:'));
+		fielddisplay(this,'riftstruct','structure containing all rift information (vertices coordinates, segments, type of melange, ...)');
+		fielddisplay(this,'riftproperties','');
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+			var numrifts;
+			if (isNaN(this.riftstruct) | this.riftstruct.length==0){
+				numrifts=0;
+			}
+			else{
+				numrifts=this.riftstruct.length;
+			}
+			if (numrifts){
+				if (!(md.mesh.domaintype() == '2Dhorizontal')){
+					md.checkmessage('models with rifts are only supported in 2d for now!');
+				}
+				if (!IsArray(this.riftstruct)){
+					md.checkmessage('rifts.riftstruct should be a structure!');
+				}
+				for(var i=0;i<md.mesh.segmentmarkers.length;i++){
+					if (md.mesh.segmentmarkers[i]>=2){
+						//We have segments with rift markers, but no rift structure!
+						md.checkmessage(['model should be processed for rifts (run meshprocessrifts)!']);
+						break;
+					}
+				}
+				for (var i=0;i<numrifts;i++){
+					md = checkfield(md,'fieldname',sprintf('rifts.riftstruct[%i].fill',i),'values',['Water', 'Air', 'Ice', 'Melange']);
+				}
+			}
+			else{
+				if (!isNaN(this.riftstruct)) md.checkmessage('riftstruct should be NaN since numrifts is 0!');
+			}
+		} //}}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			var numrifts;
+			//Process rift info
+			if ((this.riftstruct.length==0) | (this.riftstruct == null)){
+				numrifts=0;
+			}
+			else{
+				numrifts=this.riftstruct.length;
+			}
+			var numpairs=0;
+			for (var i=0;i<numrifts;i++){
+				numpairs=numpairs+this.riftstruct[i].penaltypairs.length;
+			}
+
+			// 2 for nodes + 2 for elements+ 2 for  normals + 1 for length + 1 for fill + 1 for friction + 1 for fraction + 1 for fractionincrement + 1 for state.
+			data=Create2DArray(numpairs,12);
+			var count=0;
+			for (var i=0;i<numrifts;i++){
+				numpairsforthisrift=this.riftstruct[i].penaltypairs.length;
+				for(var j=0;j<numpairsforthisrift;j++){
+					for(var k=0;k<7;k++)data[count+j][k]=this.riftstruct[i].penaltypairs;
+					data[count+j][7]=this.riftstruct[i].fill;
+					data[count+j][8]=this.riftstruct[i].friction;
+					data[count+j][9]=this.riftstruct[i].fraction;
+					data[count+j][10]=this.riftstruct[i].fractionincrement;
+					data[count+j][11]=this.riftstruct[i].state;
+					count+=numpairsforthisrift;
+				}
+			}
+			WriteData(fid,prefix,'data',numrifts,'name','md.rifts.numrifts','format','Integer');
+			WriteData(fid,prefix,'data',data,'name','md.rifts.riftstruct','format','StringArray');
+		}//}}}
+		this.fix=function() { //{{{
+			this.riftstruct=NullFix(this.riftstruct,'');
+			this.riftproperties=NullFix(this.riftproperties,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.riftstruct     = NaN;
+	this.riftproperties = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/rifts.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/rifts.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/rifts.m	(revision 27955)
@@ -0,0 +1,115 @@
+%RIFTS class definition
+%
+%   Usage:
+%      rifts=rifts();
+
+classdef rifts
+	properties (SetAccess=public) 
+		riftstruct     = NaN;
+		riftproperties = NaN;
+	end
+	methods
+		function self = rifts(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			if isempty(self.riftstruct) | isnans(self.riftstruct),
+				numrifts=0;
+			else
+				numrifts=numel(self.riftstruct);
+			end
+			if numrifts,
+				if ~(strcmp(domaintype(md.mesh),'2Dhorizontal')),
+					md = checkmessage(md,['models with rifts are only supported in 2d for now!']);
+				end
+				if ~isstruct(self.riftstruct),
+					md = checkmessage(md,['rifts.riftstruct should be a structure!']);
+				end
+				if ~isempty(find(md.mesh.segmentmarkers>=2)),
+					%We have segments with rift markers, but no rift structure!
+					md = checkmessage(md,['model should be processed for rifts (run meshprocessrifts)!']);
+				end
+				for i=1:numrifts,
+					md = checkfield(md,'fieldname',sprintf('rifts.riftstruct(%d).fill',i),'values',{'Air','Ice','Melange','Water'});
+				end
+			else
+				if ~isnans(self.riftstruct),
+					md = checkmessage(md,['riftstruct should be NaN since numrifts is 0!']);
+				end
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   rifts parameters:'));
+
+			fielddisplay(self,'riftstruct','structure containing all rift information (vertices coordinates, segments, type of melange, ...)');
+			fielddisplay(self,'riftproperties','');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			%Process rift info
+			if isempty(self.riftstruct) | isnans(self.riftstruct),
+				numrifts=0;
+			else
+				numrifts=numel(self.riftstruct);
+			end
+
+			numpairs=0;
+			for i=1:numrifts,
+				numpairs=numpairs+size(self.riftstruct(i).penaltypairs,1);
+			end
+			
+			for i=1:numrifts
+				if (strcmpi(self.riftstruct(i).fill,'Air'))
+					self.riftstruct(i).fill = 0;
+				elseif (strcmpi(self.riftstruct(i).fill,'Ice'))
+					self.riftstruct(i).fill = 1;
+				elseif (strcmpi(self.riftstruct(i).fill,'Melange'))
+					self.riftstruct(i).fill = 2;
+				elseif (strcmpi(self.riftstruct(i).fill,'Water'))
+					self.riftstruct(i).fill = 3;
+				else
+					error(['Could not convert string in riftstruct to integer for marshalling']);	
+				end
+			end
+
+			% 2 for nodes + 2 for elements+ 2 for  normals + 1 for length + 1 for fill + 1 for friction + 1 for fraction + 1 for fractionincrement + 1 for state.
+			data=zeros(numpairs,12);
+			count=1;
+			for i=1:numrifts,
+				numpairsforthisrift=size(self.riftstruct(i).penaltypairs,1);
+				data(count:count+numpairsforthisrift-1,1:7)=self.riftstruct(i).penaltypairs;
+				data(count:count+numpairsforthisrift-1,8)=self.riftstruct(i).fill;
+				data(count:count+numpairsforthisrift-1,9)=self.riftstruct(i).friction;
+				data(count:count+numpairsforthisrift-1,10)=self.riftstruct(i).fraction;
+				data(count:count+numpairsforthisrift-1,11)=self.riftstruct(i).fractionincrement;
+				data(count:count+numpairsforthisrift-1,12)=self.riftstruct(i).state;
+				count=count+numpairsforthisrift;
+			end
+
+			WriteData(fid,prefix,'data',numrifts,'name','md.rifts.numrifts','format','Integer');
+			WriteData(fid,prefix,'data',data,    'name','md.rifts.riftstruct','format','DoubleMat','mattype',3);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+	
+			if isempty(self.riftstruct) | isnans(self.riftstruct),
+				numrifts=0;
+			else
+				numrifts=numel(self.riftstruct);
+			end
+			
+			if numrifts,
+				error('rifts savemodeljs error message: not supported yet!');
+			end
+	
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/rifts.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/rifts.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/rifts.py	(revision 27955)
@@ -0,0 +1,98 @@
+import numpy as np
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+from isnans import isnans
+import MatlabFuncs as m
+
+
+class rifts(object):
+    """
+    RIFTS class definition
+
+       Usage:
+          rifts = rifts()
+    """
+
+    def __init__(self):  # {{{
+        self.riftstruct = []
+        self.riftproperties = []
+
+    #set defaults
+        self.setdefaultparameters()
+
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = '   rifts parameters:'
+
+        string = "%s\n%s" % (string, fielddisplay(self, 'riftstruct', 'structure containing all rift information (vertices coordinates, segments, type of melange, ...)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'riftproperties', ''))
+        return string
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if (not self.riftstruct) or np.any(isnans(self.riftstruct)):
+            numrifts = 0
+        else:
+            numrifts = len(self.riftstruct)
+
+        if numrifts:
+            if not m.strcmp(md.mesh.domaintype(), '2Dhorizontal'):
+                md.checkmessage("models with rifts are only supported in 2d for now!")
+            if not isinstance(self.riftstruct, list):
+                md.checkmessage("rifts.riftstruct should be a structure!")
+            if np.any(md.mesh.segmentmarkers >= 2):
+                #We have segments with rift markers, but no rift structure!
+                md.checkmessage("model should be processed for rifts (run meshprocessrifts)!")
+            for i, rift in enumerate(self.riftstruct):
+                md = checkfield(md, 'fieldname', "rifts.riftstruct[{}]['fill']".format(i), 'values', ['Water', 'Air', 'Ice', 'Melange', 0, 1, 2, 3])
+        else:
+            if self.riftstruct and np.any(np.logical_not(isnans(self.riftstruct))):
+                md.checkmessage("riftstruct should be NaN since numrifts is 0!")
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        #Process rift info
+        if (not self.riftstruct) or np.any(isnans(self.riftstruct)):
+            numrifts = 0
+        else:
+            numrifts = len(self.riftstruct)
+
+        numpairs = 0
+        if numrifts > 0:
+            for rift in self.riftstruct:
+                numpairs += np.size(rift['penaltypairs'], axis=0)
+
+            # Convert strings in riftstruct to hard coded numbers
+            FillDict = {'Air': 0,
+                        'Ice': 1,
+                        'Melange': 2,
+                        'Water': 3}
+            for rift in self.riftstruct:
+                if rift['fill'] in ['Air', 'Ice', 'Melange', 'Water']:
+                    rift['fill'] = FillDict[rift['fill']]
+
+            # 2 for nodes + 2 for elements + 2 for  normals + 1 for length + 1 for fill + 1 for friction + 1 for fraction + 1 for fractionincrement + 1 for state.
+            data = np.zeros((numpairs, 12))
+            count = 0
+            for rift in self.riftstruct:
+                numpairsforthisrift = np.size(rift['penaltypairs'], 0)
+                data[count:count + numpairsforthisrift, 0:7] = rift['penaltypairs']
+                data[count:count + numpairsforthisrift, 7] = rift['fill']
+                data[count:count + numpairsforthisrift, 8] = rift['friction']
+                data[count:count + numpairsforthisrift, 9] = rift['fraction']
+                data[count:count + numpairsforthisrift, 10] = rift['fractionincrement']
+                data[count:count + numpairsforthisrift, 11] = rift['state'].reshape(-1)
+                count += numpairsforthisrift
+        else:
+            data = np.zeros((numpairs, 12))
+        WriteData(fid, prefix, 'data', numrifts, 'name', 'md.rifts.numrifts', 'format', 'Integer')
+        WriteData(fid, prefix, 'data', data, 'name', 'md.rifts.riftstruct', 'format', 'DoubleMat', 'mattype', 3)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/rotational.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/rotational.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/rotational.js	(revision 27955)
@@ -0,0 +1,58 @@
+class rotational {//{{{
+	/**
+	 * ROTATIONAL class definition
+	 *
+	 * Usage:
+	 *     rotational = rotational();
+	 */
+	constructor() {//{{{
+		this.equatorialmoi		= 0;
+		this.polarmoi			= 0;
+		this.angularvelocity	= 0;
+
+		let nargs = arguments.length;
+		if (nargs == 0) {
+			this.setdefaultparameters();
+		} else {
+			error('constructor not supported');
+		}
+	} //}}}
+
+	disp() {//{{{
+		console.log('WARNING: rotational::disp is not yet implemented');
+	} //}}}
+
+	setdefaultparameters() {//{{{
+		// Moment of inertia
+		this.equatorialmoi	= 8.0077e37; // [kg m^2]
+		this.polarmoi		= 8.0345e37; // [kg m^2]
+
+		// Mean rotational velocity of earth
+		this.angularvelocity = 7.2921e-5; // [s^-1]
+	} //}}}
+
+	checkconsistency(md, solution, analyses) {//{{{
+		if (!analyses.includes('SealevelchangeAnalysis') || (solution === 'TransientSolution' && !md.transient.isslc)) {
+			return md;
+		}
+
+		md = checkfield(md, 'fieldname', 'solidearth.rotational.equatorialmoi', 'NaN', 1, 'Inf', 1);
+		md = checkfield(md, 'fieldname', 'solidearth.rotational.polarmoi', 'NaN', 1, 'Inf', 1);
+		md = checkfield(md, 'fieldname', 'solidearth.rotational.angularvelocity', 'NaN', 1, 'Inf', 1);
+
+		return md;
+	} //}}}
+
+	defaultoutputs(md) {//{{{
+		return [];
+	} //}}}
+
+	marshall(md, prefix, fid) {//{{{
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'equatorialmoi', 'name', 'md.solidearth.rotational.equatorialmoi', 'format', 'Double');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'polarmoi', 'name', 'md.solidearth.rotational.polarmoi', 'format', 'Double');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'angularvelocity', 'name', 'md.solidearth.rotational.angularvelocity', 'format', 'Double');
+	} //}}}
+
+	extrude(md) {//{{{
+	} //}}}
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/rotational.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/rotational.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/rotational.m	(revision 27955)
@@ -0,0 +1,68 @@
+%ROTATIONAL class definition
+%
+%   Usage:
+%      rotational=rotational();
+
+classdef rotational
+	properties (SetAccess=public) 
+		equatorialmoi         = 0;
+		polarmoi              = 0;
+		angularvelocity       = 0;
+	end
+	methods
+		function self = rotational(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%moment of inertia:
+			self.equatorialmoi	=8.0077*10^37; % [kg m^2]
+			self.polarmoi		=8.0345*10^37; % [kg m^2]
+
+			% mean rotational velocity of earth
+			self.angularvelocity=7.2921*10^-5; % [s^-1]
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ismember('SealevelchangeAnalysis',analyses) | (strcmp(solution,'TransientSolution') & md.transient.isslc==0), 
+				return; 
+			end
+
+			md = checkfield(md,'fieldname','solidearth.rotational.equatorialmoi','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','solidearth.rotational.polarmoi','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','solidearth.rotational.angularvelocity','NaN',1,'Inf',1);
+
+		end % }}}
+		function list=defaultoutputs(self,md) % {{{
+			list = {};
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   rotational parameters:'));
+
+			fielddisplay(self,'equatorialmoi','mean equatorial moment of inertia [kg m^2]');
+			fielddisplay(self,'polarmoi','polar moment of inertia [kg m^2]');
+			fielddisplay(self,'angularvelocity','mean rotational velocity of earth [per second]'); 
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			
+			WriteData(fid,prefix,'object',self,'fieldname','equatorialmoi','name','md.solidearth.rotational.equatorialmoi','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','polarmoi','name','md.solidearth.rotational.polarmoi','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','angularvelocity','name','md.solidearth.rotational.angularvelocity','format','Double');
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.rotational.equatorialmoi'],self.equatorial_moi);
+			writejsdouble(fid,[modelname '.rotational.polarmoi'],self.polar_moi);
+			writejsdouble(fid,[modelname '.rotational.angularvelocity'],self.angular_velocity);
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/rotational.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/rotational.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/rotational.py	(revision 27955)
@@ -0,0 +1,64 @@
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from WriteData import WriteData
+
+
+class rotational(object):
+    """ROTATIONAL class definition
+
+    Usage:
+        rotational = rotational()
+    """
+
+    def __init__(self, *args):  #{{{
+        self.equatorialmoi = 0
+        self.polarmoi = 0
+        self.langularvelocity = 0
+
+        nargin = len(args)
+        if nargin == 0:
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   rotational parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'equatorialmoi', 'mean equatorial moment of inertia [kg m^2]'))
+        s += '{}\n'.format(fielddisplay(self, 'polarmoi', 'polar moment of inertia [kg m^2]'))
+        s += '{}\n'.format(fielddisplay(self, 'angularvelocity', 'mean rotational velocity of earth [per second]'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Moment of inertia
+        self.equatorialmoi = 8.0077 * pow(10, 37) # [kg m^2]
+        self.polarmoi = 8.0345 * pow(10, 37) # [kg m^2]
+
+        # Mean rotational velocity of earth
+        self.angularvelocity = 7.2921 * pow(10, -5) # [s^-1]
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if ('SealevelchangeAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
+            return md
+        md = checkfield(md, 'fieldname', 'solidearth.rotational.equatorialmoi', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.rotational.polarmoi', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.rotational.angularvelocity', 'NaN', 1, 'Inf', 1)
+        return md
+    # }}}
+
+    def defaultoutputs(self, md):  #{{{
+        return []
+    # }}}
+
+    def marshall(self, prefix, md, fid):  #{{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'equatorialmoi', 'name', 'md.solidearth.rotational.equatorialmoi', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'polarmoi', 'name', 'md.solidearth.rotational.polarmoi', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'angularvelocity', 'name', 'md.solidearth.rotational.angularvelocity', 'format', 'Double')
+    # }}}
+
+    def extrude(self, md):  #{{{
+        return self
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/sampling.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/sampling.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/sampling.js	(revision 27955)
@@ -0,0 +1,99 @@
+//SAMPLING class definition
+//
+//   Usage:
+//      sampling=new sampling();
+
+function sampling (){
+	//methods
+	this.defaultoutputs = function(){// {{{
+       	return [];
+	}// }}}
+	this.setdefaultparameters = function(){// {{{
+
+		//Scaling coefficient
+		this.tau=1;  
+
+		//Apply Robin boundary conditions
+		this.robin=0;   
+		
+		//Temporal correlation factor
+		this.phi=0;  
+		
+		//Exponent in fraction SPDE (default=2, biLaplacian covariance
+		//operator)
+		this.alpha=2; // Default 
+		
+		//Seed for pseudorandom number generator (default -1 for random seed)
+		this.seed=-1;
+		
+		//default output
+		this.requested_outputs=['default'];
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   Sampling parameters:'));
+
+		console.log(sprintf('\n      %s','Parameters of PDE operator (kappa^2 I-Laplacian)^(alpha/2)(tau):'));
+		fielddisplay(this,'kappa','coefficient of the identity operator');
+		fielddisplay(this,'tau','scaling coefficient of the solution (default 1.0)');
+		fielddisplay(this,'alpha','exponent in PDE operator, (default 2.0, BiLaplacian covariance operator)');
+	  
+		console.log(sprintf('\n      %s','Parameters of Robin boundary conditions nabla () \cdot normvec + beta ():'));
+		fielddisplay(this,'robin','Apply Robin boundary conditions (1 if applied and 0 for homogenous Neumann boundary conditions) (default 0)');
+		fielddisplay(this,'beta','Coefficient in Robin boundary conditions (to be defined for robin = 1)');          
+		
+		console.log(sprintf('\n      %s','Parameters for first-order autoregressive process (X_t = phi X_{t-1} + noise) (if transient):'));
+		fielddisplay(this,'phi','Temporal correlation factor (|phi|<1 for stationary process, phi = 1 for random walk process) (default 0)');
+		
+		console.log(sprintf('\n      %s','Other parameters of stochastic sampler:'));
+		fielddisplay(this,'seed','Seed for pseudorandom number generator (given seed if >=0 and random seed if <0) (default -1)');
+		fielddisplay(this,'requested_outputs','additional outputs requested (not implemented yet)');
+	}// }}}
+	this.classname= function(){// {{{
+		return "sampling";
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) { //{{{
+		if (!ismember('SamplingAnalysis',analyses)) return;
+		
+		checkfield(md,'fieldname','sampling.kappa','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0);
+		checkfield(md,'fieldname','sampling.tau','NaN',1,'Inf',1,'numel',1,'>',0);
+		checkfield(md,'fieldname','sampling.robin','numel',1,'values',[0,1]);
+		if (md.sampling.robin) {
+			checkfield(md,'fieldname','sampling.beta','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0);
+		}
+		checkfield(md,'fieldname','sampling.phi','NaN',1,'Inf',1,'numel',1,'>=',0);
+		checkfield(md,'fieldname','sampling.alpha','NaN',1,'Inf',1,'numel',1,'>',0);
+		checkfield(md,'fieldname','sampling.seed','NaN',1,'Inf',1,'numel',1);
+		checkfield(md,'fieldname','sampling.requested_outputs','stringrow',1);
+	} // }}}
+	this.marshall=function(md,prefix,fid) { //{{{
+		WriteData(fid,prefix,'object',this,'fieldname','kappa','format','DoubleMat','mattype',1);
+		WriteData(fid,prefix,'object',this,'fieldname','tau','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','beta','format','DoubleMat','mattype',1);
+		WriteData(fid,prefix,'object',this,'fieldname','phi','format','Double');
+		WriteData(fid,prefix,'object',this,'fieldname','alpha','format','Integer');
+		WriteData(fid,prefix,'object',this,'fieldname','robin','format','Boolean');
+		WriteData(fid,prefix,'object',this,'fieldname','seed','format','Integer');
+		
+		//process requested outputs
+		outputs = this.requested_outputs;
+		pos = find(ismember(outputs,'default'));
+		if (!isempty(pos)) {
+			ArrayIndex(outputs,pos,[]);                         //remove 'default' from outputs
+			outputs = ArrayConcat(outputs, this.defaultoutputs()); //add defaults
+		}
+		WriteData(fid,prefix,'data',outputs,'name','md.sampling.requested_outputs','format','StringArray');
+	}//}}}
+	//properties 
+	// {{{
+    this.kappa          	= NaN;
+	this.tau            	= 0;
+	this.beta           	= NaN;
+    this.phi            	= 0;
+    this.alpha          	= 0;
+    this.robin          	= 0;
+    this.seed           	= 0;
+	this.requested_outputs  = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/sampling.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/sampling.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/sampling.m	(revision 27955)
@@ -0,0 +1,124 @@
+%SAMPLING class definition
+%
+%   Usage:
+%      sampling=sampling();
+
+classdef sampling
+	properties (SetAccess=public)
+		kappa             = NaN;
+		tau               = 0;
+		beta              = NaN;
+		phi               = NaN;
+		alpha             = 0;
+		robin             = 0;
+		seed              = 0;
+		requested_outputs = {};
+	end
+	methods
+		function self = sampling(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function disp(self) % {{{
+
+			disp(sprintf('   Sampling parameters:'));
+
+			disp(sprintf('\n      %s','Parameters of PDE operator (kappa^2 I-Laplacian)^(alpha/2)(tau):'));
+			fielddisplay(self,'kappa','coefficient of the identity operator');
+			fielddisplay(self,'tau','scaling coefficient of the solution');
+			fielddisplay(self,'alpha','exponent in PDE operator, (default: 2.0, BiLaplacian covariance operator)');
+
+			disp(sprintf('\n      %s','Parameters of Robin boundary conditions nabla () \cdot normvec + beta ():'));
+			fielddisplay(self,'robin','Apply Robin boundary conditions (1 if applied and 0 for homogenous Neumann boundary conditions) (default: 0)');
+			fielddisplay(self,'beta','Coefficient in Robin boundary conditions (to be defined for robin = 1)');
+
+			disp(sprintf('\n      %s','Parameters for first-order autoregressive process (X_t = phi X_{t-1} + noise) (if transient):'));
+			fielddisplay(self,'phi','Temporal correlation factor (|phi|<1 for stationary process, phi = 1 for random walk process) (default 0)');
+
+			disp(sprintf('\n      %s','Other parameters of stochastic sampler:'));
+			fielddisplay(self,'seed','Seed for pseudorandom number generator (given seed if >=0 and random seed if <0) (default: -1)');
+			fielddisplay(self,'requested_outputs','additional outputs requested (not implemented yet)');
+
+		end % }}}','
+		function self = setdefaultparameters(self) % {{{
+
+			%Apply Robin boundary conditions
+			self.robin=0;
+
+			%Exponent in fraction SPDE (default: 2, biLaplacian covariance
+			%operator)
+			self.alpha=2; % Default 
+
+			%Seed for pseudorandom number generator (default: -1, for random seed)
+			self.seed=-1;
+
+			%default output
+			self.requested_outputs={'default'};
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+
+			list = {};
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ismember('SamplingAnalysis',analyses), return; end
+
+			md = checkfield(md,'fieldname','sampling.kappa','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>',0);
+			md = checkfield(md,'fieldname','sampling.tau','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>',0);
+			md = checkfield(md,'fieldname','sampling.robin','numel',1,'values',[0 1]);
+			if(md.sampling.robin)
+				md = checkfield(md,'fieldname','sampling.beta','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>',0);
+			end
+			md = checkfield(md,'fieldname','sampling.alpha','NaN',1,'Inf',1,'numel',1,'>',0);
+			md = checkfield(md,'fieldname','sampling.seed','NaN',1,'Inf',1,'numel',1);
+			md = checkfield(md,'fieldname','sampling.requested_outputs','stringrow',1);
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'object',self,'fieldname','kappa','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','tau','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','beta','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','phi','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','alpha','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','robin','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','seed','format','Integer');
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.sampling.requested_outputs','format','StringArray');
+		end % }}}
+		function md = setparameters(self,md,lc,sigma) % {{{
+
+			nu = self.alpha-1;
+			KAPPA = sqrt(8*nu)./lc;
+			TAU = sqrt(gamma(nu)./(gamma(self.alpha)*(4*pi)*KAPPA.^(2*nu).*sigma.^2));
+			md.sampling.kappa = KAPPA.*ones(md.mesh.numberofvertices,1);
+			md.sampling.tau = TAU.*ones(md.mesh.numberofvertices,1);
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			writejsdouble(fid,[modelname '.sampling.kappa'],self.kappa);
+			writejsdouble(fid,[modelname '.sampling.tau'],self.tau);
+			writejsdouble(fid,[modelname '.sampling.beta'],self.beta);
+			writejsdouble(fid,[modelname '.sampling.phi'],self.phi);
+			writejsdouble(fid,[modelname '.sampling.alpha'],self.alpha);
+			writejsdouble(fid,[modelname '.sampling.robin'],self.robin);
+			writejsdouble(fid,[modelname '.sampling.seed'],self.seed);
+			writejscellstring(fid,[modelname '.sampling.requested_outputs'],self.requested_outputs);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/sampling.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/sampling.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/sampling.py	(revision 27955)
@@ -0,0 +1,119 @@
+import numpy as np
+
+from math import *
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class sampling(object):
+    """sampling class definition
+
+    Usage:
+        sampling = sampling()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.kappa = np.nan
+        self.tau = 0
+        self.beta = np.nan
+        self.phi = np.nan
+        self.alpha = 0
+        self.robin = 0
+        self.seed = 0
+        self.requested_outputs = []
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            raise RuntimeError('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   Sampling parameters::\n'
+        s += '      Parameters of PDE operator (kappa^2 I-Laplacian)^(alpha/2)(tau):\n'
+        s += '{}\n'.format(fielddisplay(self, 'kappa', 'coefficient of the identity operator'))
+        s += '{}\n'.format(fielddisplay(self, 'tau', 'scaling coefficient of the solution (default: 1.0)'))
+        s += '{}\n'.format(fielddisplay(self, 'alpha', 'exponent in PDE operator, (default: 2.0, BiLaplacian covariance operator)'))
+
+        s += '      Parameters of Robin boundary conditions nabla () \cdot normvec + beta ():\n'
+        s += '{}\n'.format(fielddisplay(self, 'robin', 'Apply Robin boundary conditions (1 if applied and 0 for homogenous Neumann boundary conditions) (default: 0)'))
+        s += '{}\n'.format(fielddisplay(self, 'beta', 'Coefficient in Robin boundary conditions (to be defined for robin = 1)'))
+
+        s += '      Parameters for first-order autoregressive process (X_t = phi X_{t-1} + noise) (if transient):\n'
+        s += '{}\n'.format(fielddisplay(self, 'phi', 'Temporal correlation factor (|phi|<1 for stationary process, phi = 1 for random walk process) (default 0)'))
+
+        s += '      Other parameters of stochastic sampler:\n'
+        s += '{}\n'.format(fielddisplay(self, 'seed', 'Seed for pseudorandom number generator (given seed if >=0 and random seed if <0) (default: -1)'))
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested (not implemented yet)'))
+
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+
+        # Apply Robin boundary conditions
+        self.robin = 0
+
+        # Exponent in fraction SPDE (default: 2, biLaplacian covariance operator)
+        self.alpha = 2 # Default
+
+        # Seed for pseudorandom number generator (default: -1, for random seed)
+        self.seed = -1
+
+        # Default output
+        self.requested_outputs = ['default']
+
+        return self
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return []
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if ('SamplingAnalysis' not in analyses):
+            return md
+
+        md = checkfield(md, 'fieldname', 'sampling.kappa', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices], '>', 0)
+        md = checkfield(md, 'fieldname', 'sampling.tau', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'sampling.robin', 'numel', 1, 'values', [0, 1])
+        if md.sampling.robin:
+            md = checkfield(md, 'fieldname', 'sampling.beta', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices], '>', 0)
+        end
+        md = checkfield(md, 'fieldname', 'sampling.alpha', 'NaN', 1, 'Inf', 1, 'numel', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'sampling.seed', 'NaN', 1, 'Inf', 1, 'numel', 1)
+        md = checkfield(md, 'fieldname', 'sampling.requested_outputs', 'stringrow', 1)
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'kappa', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'tau', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'beta', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'phi', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'alpha', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'robin', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'seed', 'format', 'Integer')
+
+        # Process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.sampling.requested_outputs', 'format', 'StringArray')
+    # }}}
+
+    def setparameters(self, md, lc, sigma):  # {{{
+        nu = self.alpha - 1
+        KAPPA = pow((8 * nu), 0.5) / lc
+        TAU = pow((math.gamma(nu) / math.gamma(self.alpha) * (4 *  np.pi) * pow(KAPPA, 2 * nu) * pow(sigma, 2)), 0.5)
+        md.sampling.kappa = KAPPA * np.ones((md.mesh.numberofvertices, 1))
+        md.sampling.tau = TAU
+
+        return md
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/sealevelmodel.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/sealevelmodel.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/sealevelmodel.js	(revision 27955)
@@ -0,0 +1,143 @@
+class sealevelmodel {
+	/**
+	 * SEALEVELMODEL class definition
+	 * 
+	 * Usage:
+	 *     slm = sealevelmodel(varargin)
+	 *
+	 * Example:
+	 *     slm = sealevelmodel(
+	 *         'icecap', md_greenland,
+	 *         'icecap', md_antarctica,
+	 *         'earth', md_earth
+	 *     )
+	 *
+	 * TODO:
+	 * - Finish translation
+	 */
+	constructor(...varargin) {//{{{
+		this.icecaps = []; // list of land/ice models; name should be changed later
+		this.earth = null; // model for the whole earth
+		this.basins = []; // list of basins, matching icecaps, where shapefile info is held
+		this.cluster = null;
+		this.miscellaneous = null;
+		this.settings = null;
+		this.private = null;
+		this.mergedcaps = null;
+		this.transitions = [];
+		this.eltransitions = [];
+		this.planet = '';
+
+		this.setdefaultparamters();
+
+		if (varargin.length) {
+			let options = pairoptions(varargin);
+
+			// Recover all the icecap models
+			this.icecaps = options.getfieldvalues('ice_cap', []);
+
+			// Recover the earth model
+			this.earth = options.getfieldvalue('earth', 0);
+
+			// Set planet type
+			this.planet = options.getfieldvalue('planet', 'earth');
+		}
+	} //}}}
+
+	setdefaultparamters() {//{{{
+		// Initialize subclasses
+		this.icecaps = [];
+		this.earth = [];
+		this.cluster = generic();
+		this.miscellaneous = miscellaneous();
+		this.settings = issmsettings();
+		this.private = private();
+		this.transitions = [];
+		this.eltransitions = [];
+		this.planet = 'earth';
+	} //}}}
+
+	static checkconsistency(slm, solutiontype) {//{{{
+		// Is the coupler turned on?
+		for (let i = 0; slm.icecaps.length; ++i) {
+			if (!slm.icecaps[0].transient.iscoupler) {
+				console.log('sealevelmodel checkconsistency error: icecap model ' +  slm.icecaps[0].miscellaneous.name + ' should have the transient coupler option turned on!');
+			}
+		}
+
+		if (!slm.earth.transient.iscoupler) {
+			console.log('sealevelmodel checkconsistency error: earth model should have the transient coupler option turned on!');
+		}
+
+		// Check that the transition vectors have the right size
+		for (let i = 0; i < slm.icecaps.length; ++i) {
+			if (slm.icecaps[0].mesh.numberorvertices != slm.earth.solidearth.transitions[0].length) {
+				error('sealevelmodel checkconsistency issue with size of transition vector for ice cap: ' + i + ' name: ' + slm.icecaps[0].miscellaneous.name);
+			}
+		}
+
+		// Check that runfrequency is the same everywhere
+		for (let i = 0; i < slm.icecaps; ++i) {
+			if (slm.icecaps[i].solidearth.settings.runfrequency != slm.earth.solidearth.settings.runfrequency) {
+				error('sealevelmodel checkconsistency error: icecap model ' + slm.icecaps[i].miscellaneous.name + ' should have the same run frequency as earth!');
+			}
+		}
+
+		// Make sure steric_rate is the same everywhere
+		for (let i = 0; i < slm.icecaps.length; ++i) {
+			let md = slm.icecaps[i];
+			if (!isempty(find(md.dsl.steric_rate - slm.earth.dsl.steric_rate[slm.earth.dsl.transitions[i]]))) {
+				error('steric rate on ice cap ' + md.miscellaneous.name + ' is not the same as for the earth');
+			}
+		}
+
+		// Make sure grd is the same everywhere
+		for (let i = 0; i < slm.icecaps.length; ++i) {
+			let md = slm.icecaps[i];
+			if (md.solidearthsettings.isgrd != slm.earth.solidearthsettings.isgrd) {
+				error('isgrd on ice cap ' + md.miscellaneous.name + ' is not the same as for the earth');
+			}
+		}
+
+		// Make sure that there is no solid earth external forcing on the basins
+		for (let i = 0; i < slm.icecaps.length; ++i) {
+			let md = slm.icecaps[i];
+			if (!isempty(md.solidearth.external)) {
+				error('cannot run external forcings on an ice sheet when running a coupling earth/ice sheet model');
+			}
+		}
+
+		// Make sure that we have the right grd model for computing out sealevel patterns
+		for (let i = 0; i < slm.icecaps.length; ++i) {
+			let md = slm.icecaps[i];
+			if (md.solidearth.settings.grdmodel) {
+				error('sealevelmodel checkconsistency error message: ice sheets do not run GRD module, specify solidearth.settings.grdmodel=0 on ice cap ' + i);
+			}
+		}
+	} //}}}
+
+	disp() {//{{{
+		console.log('WARNING: sealevelmodel::disp is not yet implemented');
+	} //}}}
+
+	mergeresults() {//{{{
+		let champs = fieldnames(this.icecaps[0].results.TransientSolution);
+		for (let i = 0; i < this.mergedcaps.length / 2; ++i) {
+			let md = this.mergedcaps[2 * i];
+			let trans = this.mergedcaps[2 * i + 1];
+			//let icecaps = this.icecaps[this.range[2 * i + 2]];
+			for (let j = 0; j < this.icecaps[0].results.TransientSolution) {
+				for (let k = 0; champs.length; ++k) {
+					if (strcmpi(typeof(icecaps[0].results.TransientSolution[j][champs[k]]) == 'double')) {
+						// Vertex or element?
+						if (icecaps[0].results.TransientSolution[j][champs[k]].length == icecaps[0].mesh.numberofvertices) {
+							md.results.TransientSolution[j][champs[k]] == icecaps[0].mesh.numberofvertices;
+
+						}
+					} else {
+
+					}
+				}
+			}
+	} //}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/sealevelmodel.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/sealevelmodel.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/sealevelmodel.m	(revision 27955)
@@ -0,0 +1,556 @@
+%SEALEVELMODEL class definition
+%
+%   Usage:
+%      slm = sealevelmodel(varargin)
+%
+%      where varargin is a variable list of options:
+%
+%   Example:
+%      slm = sealevel('icecap',md_greenland,'icecap',md_antarctica,'earth',md_earth);
+
+classdef sealevelmodel < handle
+	properties (SetAccess=public) %Model fields
+		% {{{
+		icecaps          = {}; % list of land/ice models, name should  be change longer term.
+		earth            = 0;  % model for the whole earth
+		basins           = {}; % list of basins, matching icecaps, where shapefile info is held
+		cluster          = 0;
+		miscellaneous    = 0;
+		settings         = 0;
+		private          = 0;
+		mergedcaps       = 0;
+		transitions      = {};
+		eltransitions    = {};
+		planet           = '';
+		%}}}
+	end
+	methods
+		function slm = sealevelmodel(varargin) % {{{
+			slm=setdefaultparameters(slm);
+
+			if nargin==1,
+
+				options=pairoptions(varargin{:});
+
+				%recover all the icecap models:
+				slm.icecaps=getfieldvalues(options,'ice_cap',{});
+				
+				%recover the earth model:
+				slm.earth = getfieldvalue(options,'earth',0);
+
+				%set planet type:
+				slm.planet=getfieldvalue(options,'planet','earth');
+
+			end
+		end
+		%}}}
+		function checkconsistency(slm,solutiontype) % {{{
+
+			%is the coupler turned on?
+			%for i=1:length(slm.icecaps),
+			%	if slm.icecaps{i}.transient.iscoupler==0,
+			%		warning(sprintf('sealevelmodel.m::checkconsistency: icecap model %s should have the transient coupler option turned on!',slm.icecaps{i}.miscellaneous.name));
+			%	end
+			%end
+				
+			%if slm.earth.transient.iscoupler==0,
+			%	warning('sealevelmodel.m::checkconsistency: earth model should have the transient coupler option turned on!');
+			%end
+
+			%check that the transition vectors have the right size:
+
+			if slm.earth.mesh.numberofvertices ~= length(slm.earth.solidearth.transfercount)
+				error('sealevelmodel.m::checkconsistency: earth.solidearth.transfercount should be of size earth.mesh.numberofvertices') 
+			end
+
+			%check that the transition vectors have the right size:
+			for i=1:length(slm.icecaps),
+				if slm.icecaps{i}.mesh.numberofvertices ~= length(slm.earth.solidearth.transitions{i}),
+					error(['sealevelmodel.m::checkconsistency: issue with size of transition vector for ice cap: ' num2str(i) ' name: ' slm.icecaps{i}.miscellaneous.name]);
+				end
+			end
+			
+			%check that runfrequency is the same everywhere:
+			for i=1:length(slm.icecaps),
+				if slm.icecaps{i}.solidearth.settings.runfrequency~=slm.earth.solidearth.settings.runfrequency,
+					error(sprintf('sealevelmodel.m::checkconsistency: icecap model %s should have the same run frequency as earth!',slm.icecaps{i}.miscellaneous.name));
+				end
+			end
+
+			%make sure steric_rate is the same everywhere:
+			for i=1:length(slm.icecaps),
+				md= slm.icecaps{i};
+				if ~isempty(find(md.dsl.sea_surface_height_above_geoid - slm.earth.dsl.sea_surface_height_above_geoid(slm.transitions{i}))),
+					error(sprintf('sealevelmodel.m::checkconsistency: steric rate on ice cap %s is not the same as for the earth\n',md.miscellaneous.name));
+				end
+			end
+
+			%make sure grd is the same everywhere:
+			for i=1:length(slm.icecaps),
+				md= slm.icecaps{i};
+				if md.solidearth.settings.isgrd~=slm.earth.solidearth.settings.isgrd
+					error(sprintf('sealevelmodel.m::checkconsistency: isgrd on ice cap %s is not the same as for the earth\n',md.miscellaneous.name));
+				end
+			end
+
+			%make sure that there is no solid earth external forcing on the basins:
+			for i=1:length(slm.icecaps),
+				md= slm.icecaps{i};
+				if ~isempty(md.solidearth.external),
+					error('sealevelmodel.m::checkconsistency: cannot run external forcings on an ice sheet when running a coupling earth/ice sheet model');
+				end
+
+			end
+			%make sure that we have the right grd model for computing out sealevel patterns:
+			for i=1:length(slm.icecaps),
+				md= slm.icecaps{i};
+				if md.solidearth.settings.grdmodel~=0
+					error(sprintf('sealevelmodel.m::checkconsistency: ice sheets do not run GRD module, specify solidearth.settings.grdmodel=0 on ice cap %i',i));
+				end
+			end
+
+		end
+		%}}}
+		function slm = setdefaultparameters(slm) % {{{
+
+			%initialize subclasses
+			slm.icecaps           = {};
+			slm.earth             = {};
+			slm.miscellaneous     = miscellaneous();
+			slm.settings          = issmsettings();
+			slm.private           = private();
+			slm.cluster           = generic();
+			slm.transitions       = {};
+			slm.eltransitions     = {};
+			slm.planet            = 'earth';
+		end
+		%}}}
+		function disp(self) % {{{
+			disp(sprintf('%19s: %-22s -- %s','icecaps'         ,['[' num2str(length(self.icecaps)) 'x1 ' class(self.icecaps) ']'],'ice caps'));
+			disp(sprintf('%19s: %-22s -- %s','earth'           ,['[1x1 ' class(self.earth) ']'],'earth'));
+			disp(sprintf('%19s: %-22s -- %s','settings'        ,['[1x1 ' class(self.settings) ']'],'settings properties'));
+			disp(sprintf('%19s: %-22s -- %s','cluster'         ,['[1x1 ' class(self.cluster) ']'],'cluster parameters (number of cpus...)'));
+			disp(sprintf('%19s: %-22s -- %s','miscellaneous'   ,['[1x1 ' class(self.miscellaneous) ']'],'miscellaneous fields'));
+		end % }}}
+		function self=mergeresults(self) % {{{
+			champs=fieldnames(self.icecaps{1}.results.TransientSolution);
+			for i=1:length(self.mergedcaps)/2,
+				md=self.mergedcaps{2*(i-1)+1}; trans=self.mergedcaps{2*(i-1)+2};
+				%icecaps=self.icecaps(self.range{2*(i-1)+2});
+				for j=1:length(self.icecaps{1}.results.TransientSolution),
+					for k=1:length(champs),
+						if strcmpi(class(icecaps{1}.results.TransientSolution(j).(champs{k})),'double'),
+							%vertex or element?
+							if length(icecaps{1}.results.TransientSolution(j).(champs{k}))==icecaps{1}.mesh.numberofvertices,
+								md.results.TransientSolution(j).(champs{k})=zeros(md.mesh.numberofvertices,1);
+								for l=1:length(trans),
+									resultcap=icecaps{l}.results.TransientSolution(j).(champs{k});
+									md.results.TransientSolution(j).(champs{k})(trans{l})=resultcap;
+								end
+							else
+								if strcmpi(champs{k},'IceVolume') | strcmpi(champs{k},'IceVolumeAboveFloatation') ,
+									md.results.TransientSolution(j).(champs{k})=0;
+									for l=1:length(trans),
+										resultcap=icecaps{l}.results.TransientSolution(j).(champs{k});
+										md.results.TransientSolution(j).(champs{k})= md.results.TransientSolution(j).(champs{k})+resultcap;
+									end
+								elseif strcmpi(champs{k},'time'),
+									md.results.TransientSolution(j).(champs{k})= icecaps{1}.results.TransientSolution(j).(champs{k});
+								else
+									continue;
+								end
+							end
+						else
+							continue;
+						end
+					end
+				end
+				self.mergedcaps{2*(i-1)+1}=md;
+			end
+		end % }}}
+		function listcaps(self) % {{{
+			for  i=1:length(self.icecaps),
+				disp(sprintf('%i: %s',i,self.icecaps{i}.miscellaneous.name));
+			end
+		end % }}}
+		function n=ncaps(self) % {{{
+			n=length(self.icecaps);
+		end % }}}
+		function list=continents(self) % {{{
+			list={};
+			for  i=1:length(self.basins),
+				list{end+1}=self.basins{i}.continent;
+			end
+			list=unique(list);
+		end % }}}
+		function list=basinsfromcontinent(self,continent) % {{{
+			list={};
+			for  i=1:length(self.icecaps),
+				if strcmpi(self.basins{i}.continent,continent),
+					list{end+1}=self.basins{i}.name;
+				end
+			end
+			list=unique(list);
+		end % }}}
+		function addbasin(self,bas) % {{{
+			if ~strcmpi(class(bas),'basin')
+				error('addbasin method only takes a ''basin'' class object as input');
+			end;
+			self.basins{end+1}=bas;
+		end % }}}
+		function intersections2d(self,varargin) % {{{
+
+			options=pairoptions(varargin{:});
+			force=getfieldvalue(options,'force',0);
+			
+			%initialize, to avoid issues of having more transitions than meshes.
+			self.transitions={};
+			self.eltransitions={};
+
+			%for elements:
+			xe=self.earth.mesh.x(self.earth.mesh.elements)*[1;1;1]/3;
+			ye=self.earth.mesh.y(self.earth.mesh.elements)*[1;1;1]/3;
+			
+			for i=1:length(self.icecaps),
+				mdi=self.icecaps{i};
+		
+				%for elements:
+				xei=mdi.mesh.x(mdi.mesh.elements)*[1;1;1]/3;
+				yei=mdi.mesh.y(mdi.mesh.elements)*[1;1;1]/3;
+		
+				disp(sprintf('Computing vertex intersections for basin %s',self.basins{i}.name));
+			
+				self.transitions{end+1}=meshintersect2d(self.earth.mesh.x,self.earth.mesh.y,mdi.mesh.x,mdi.mesh.y,'force',force);
+
+				self.eltransitions{end+1}=meshintersect2d(xe,ye,xei,yei,'force',force);
+			end
+		end % }}}
+		function intersections(self,varargin) % {{{
+
+			options=pairoptions(varargin{:});
+			force=getfieldvalue(options,'force',0);
+			
+			%initialize, to avoid issues of having more transitions than meshes.
+			self.transitions={};
+			self.eltransitions={};
+			self.earth.solidearth.transfercount=zeros(self.earth.mesh.numberofvertices,1);
+
+			%for elements:
+			xe=self.earth.mesh.x(self.earth.mesh.elements)*[1;1;1]/3;
+			ye=self.earth.mesh.y(self.earth.mesh.elements)*[1;1;1]/3;
+			ze=self.earth.mesh.z(self.earth.mesh.elements)*[1;1;1]/3;
+			
+			for i=1:length(self.icecaps),
+				mdi=self.icecaps{i};
+				mdi=TwoDToThreeD(mdi,self.planet);
+		
+				%for elements:
+				xei=mdi.mesh.x(mdi.mesh.elements)*[1;1;1]/3;
+				yei=mdi.mesh.y(mdi.mesh.elements)*[1;1;1]/3;
+				zei=mdi.mesh.z(mdi.mesh.elements)*[1;1;1]/3;
+		
+				disp(sprintf('Computing vertex intersections for basin %s',self.basins{i}.name));
+			
+				self.transitions{end+1}=meshintersect3d(self.earth.mesh.x,self.earth.mesh.y,self.earth.mesh.z,mdi.mesh.x,mdi.mesh.y,mdi.mesh.z,'force',force);
+
+				self.eltransitions{end+1}=meshintersect3d(xe,ye,ze,xei,yei,zei,'force',force);
+
+				self.earth.solidearth.transfercount(self.transitions{i})=self.earth.solidearth.transfercount(self.transitions{i})+1;
+			end
+
+			for i=1:length(self.icecaps),
+				self.icecaps{i}.solidearth.transfercount=self.earth.solidearth.transfercount(self.transitions{i});
+			end
+		end % }}}
+		function checkintersections(self) % {{{
+			flags=zeros(self.earth.mesh.numberofvertices,1);
+			for i=1:length(self.basins),
+				flags(self.transitions{i})=i;
+			end
+			plotmodel(self.earth,'data',flags,'coastlines','on');
+
+		end % }}}
+		function checkbasinconsistency(self) % {{{
+			for i=1:length(self.basins),
+				self.basins{i}.checkconsistency();
+			end
+
+		end % }}}
+		function baslist=basinindx(self,varargin) % {{{
+			options=pairoptions(varargin{:});
+			continent=getfieldvalue(options,'continent','all');
+			bas=getfieldvalue(options,'basin','all');
+
+			%expand continent list: {{{
+			if iscell(continent),
+				if length(continent)==1,
+					if strcmpi(continent{1},'all'),
+						%need to transform this into a list of continents:
+						continent={};
+						for i=1:length(self.basins),
+							continent{end+1}=self.basins{i}.continent;
+						end
+						continent=unique(continent);
+					else
+						%nothing to do: assume we have a list of continents
+					end
+				else
+					%nothing to do: assume we have a list of continents
+				end
+			else
+				if strcmpi(continent,'all'),
+					%need to transform this into a list of continents:
+					continent={};
+					for i=1:length(self.basins),
+						continent{end+1}=self.basins{i}.continent;
+					end
+					continent=unique(continent);
+				else
+					continent={continent};
+				end
+			end
+			%}}}
+			%expand basins list using the continent list above and the extra bas discriminator: %{{{
+			if iscell(bas),
+				if length(bas)==1,
+					if strcmpi(bas{1},'all'),
+						%need to transform this into a list of basins:
+						baslist=[];
+						for i=1:length(self.basins),
+							if self.basins{i}.iscontinentany(continent{:}),
+								baslist(end+1)=i;
+							end
+						end
+						baslist=unique(baslist);
+					else
+					bas=bas{1};
+					baslist=[];
+					for i=1:length(self.basins),
+						if self.basins{i}.iscontinentany(continent{:}),
+							if self.basins{i}.isnameany(bas),
+								baslist(end+1)=i;
+							end
+						end
+					end
+
+					end
+				else
+					%we have a list of basin names:
+					baslist=[];
+					for i=1:length(bas),
+						basname=bas{i};
+						for j=1:length(self.basins),
+							if self.basins{j}.iscontinentany(continent{:}),
+								if self.basins{j}.isnameany(basname),
+									baslist(end+1)=j;
+								end
+							end
+						end
+						baslist=unique(baslist);
+					end
+				end
+			else
+				if strcmpi(bas,'all'),
+					baslist=[];
+					for i=1:length(self.basins),
+						if self.basins{i}.iscontinentany(continent{:}),
+							baslist(end+1)=i;
+						end
+					end
+					baslist=unique(baslist);
+				else
+					baslist=[];
+					for i=1:length(self.basins),
+						if self.basins{i}.iscontinentany(continent{:}),
+							if self.basins{i}.isnameany(bas),
+								baslist(end+1)=i;
+							end
+						end
+					end
+					baslist=unique(baslist);
+				end
+			end
+			%}}}
+
+		end % }}}
+		function addicecap(self,md) % {{{
+			if ~strcmpi(class(md),'model')
+				error('addicecap method only takes a ''model'' class object as input');
+			end
+			self.icecaps{end+1}=md;
+		end % }}}
+		function basinsplot3d(self,varargin) % {{{
+			for i=1:length(self.basins),
+				self.basins{i}.plot3d(varargin{:});
+			end
+		end % }}}
+		function caticecaps(self,varargin) % {{{
+			
+			%recover options:
+			options=pairoptions(varargin{:});
+			tolerance=getfieldvalue(options,'tolerance',.65);
+			loneedgesdetect=getfieldvalue(options,'loneedgesdetect',0);
+	
+			%make 3D model:
+			models=self.icecaps;
+			for i=1:length(models),
+				models{i}=TwoDToThreeD(models{i},self.planet);
+			end
+			
+			%Plug all models together:
+			md=models{1};
+			for i=2:length(models),
+				md=modelmerge3d(md,models{i},'tolerance',tolerance);
+				md.private.bamg.landmask=[md.private.bamg.landmask;models{i}.private.bamg.landmask];
+			end
+
+			%Look for lone edges if asked for it: {{{
+			if loneedgesdetect,
+				edges=loneedges(md);
+				plotmodel(md,'data',md.mask.land_levelset);
+				hold on;
+				for i=1:length(edges),
+					ind1=edges(i,1);
+					ind2=edges(i,2);
+					%plot([md.mesh.x(ind1),md.mesh.x(ind2)],[md.mesh.y(ind1),md.mesh.y(ind2)],'r*-');
+					plot3([md.mesh.x(ind1),md.mesh.x(ind2)],[md.mesh.y(ind1),md.mesh.y(ind2)],[md.mesh.z(ind1),md.mesh.z(ind2)],'g*-');
+				end
+			end %}}}
+	
+			%Plug into earth:
+			self.earth=md;
+
+			%Create mesh radius:
+			self.earth.mesh.r=planetradius('earth')*ones(md.mesh.numberofvertices,1);
+
+		end % }}}
+		function caticecaps2d(self,varargin) % {{{
+
+			%recover options:
+			options=pairoptions(varargin{:});
+			tolerance=getfieldvalue(options,'tolerance',1e-5);
+			loneedgesdetect=getfieldvalue(options,'loneedgesdetect',0);
+			models=self.icecaps;
+
+			%Plug all models together:
+			md=models{1};
+			for i=2:length(models),
+				md=modelmerge2d(md,models{i},'tolerance',tolerance);
+			end
+
+			%Look for lone edges if asked for it: {{{
+			if loneedgesdetect,
+				edges=loneedges(md);
+				hold on;
+				for i=1:length(edges),
+					ind1=edges(i,1);
+					ind2=edges(i,2);
+					plot([md.mesh.x(ind1),md.mesh.x(ind2)],[md.mesh.y(ind1),md.mesh.y(ind2)],'g*-');
+				end
+			end %}}}
+
+			%Plug into earth:
+			self.earth=md;
+
+		end % }}}
+		function viscousiterations(self) % {{{
+			for  i=1:length(self.icecaps),
+				ic=self.icecaps{i};
+				mvi=ic.results.TransientSolution(1).StressbalanceConvergenceNumSteps;
+				for j=2:length(ic.results.TransientSolution)-1,
+					mvi=max(mvi,ic.results.TransientSolution(j).StressbalanceConvergenceNumSteps);
+				end
+				disp(sprintf('%i, %s: %i',i,self.icecaps{i}.miscellaneous.name,mvi));
+			end
+		end % }}}
+		function maxtimestep(self) % {{{
+			for  i=1:length(self.icecaps),
+				ic=self.icecaps{i};
+				mvi=length(ic.results.TransientSolution);
+				timei=ic.results.TransientSolution(end).time;
+				disp(sprintf('%i, %s: %i/%g',i,self.icecaps{i}.miscellaneous.name,mvi,timei));
+			end
+			mvi=length(self.earth.results.TransientSolution);
+			timei=self.earth.results.TransientSolution(end).time;
+			disp(sprintf('Earth: %i/%g',mvi,timei));
+		end % }}}
+		function transfer(self,string) % {{{
+			%Recover field size in one icecap:
+			eval(['n=size(self.icecaps{1}.' string ',1);']);
+			if n==self.icecaps{1}.mesh.numberofvertices,
+				eval(['self.earth.' string '=zeros(self.earth.mesh.numberofvertices,1);']);
+				for i=1:length(self.icecaps),
+					eval(['self.earth.' string '(self.transitions{' num2str(i) '})=self.icecaps{' num2str(i) '}.' string ';']);
+				end
+			elseif n==(self.icecaps{1}.mesh.numberofvertices+1),
+				%dealing with a transient dataset.
+				%check that all timetags are similar between all icecaps:  %{{{
+				for i=1:length(self.icecaps),
+					eval(['capfieldi= self.icecaps{' num2str(i) '}.' string ';']);
+					for j=(i+1):length(self.icecaps),
+						eval(['capfieldj= self.icecaps{' num2str(j) '}.' string ';']);
+						if ~isequal(capfieldi(end,:),capfieldj(end,:)),
+							error(['Time stamps for ' string ' field are different between icecaps ' num2str(i) ' and ' num2str(j)]);
+						end
+					end
+				end
+				eval(['capfield1= self.icecaps{1}.' string ';']);
+				times=capfield1(end,:);
+				nsteps=length(times);
+				%}}}
+				%initialize:  %{{{
+				eval(['field=zeros(self.earth.mesh.numberofvertices+1,' num2str(nsteps) ');']);
+				eval(['field(end,:)=times;']); %transfer the times only, not the values
+				%}}}
+				%transfer all time fields: {{{
+				for i=1:length(self.icecaps),
+					eval(['capfieldi= self.icecaps{' num2str(i) '}.' string ';']);
+					for j=1:nsteps,
+						eval(['field(self.transitions{' num2str(i) '},' num2str(j) ')=capfieldi(1:end-1,' num2str(j) ');']); %transfer only the values, not the time.
+					end
+				end
+				eval(['self.earth.' string '=field;']); %do not forget to plug the field variable into its final location
+				%}}}
+			elseif n==self.icecaps{1}.mesh.numberofelements,
+				eval(['self.earth.' string '=zeros(self.earth.mesh.numberofelements,1);']);
+				for i=1:length(self.icecaps),
+					eval(['self.earth.' string '(self.eltransitions{' num2str(i) '})=self.icecaps{' num2str(i) '}.' string ';']);
+				end
+			else
+				error('not supported yet');
+			end
+		end % }}}
+		function self=homogeneize(self,noearth) % {{{
+			if nargin==1,
+				noearth=0;
+			end
+			mintimestep=Inf;
+			for  i=1:length(self.icecaps),
+				ic=self.icecaps{i};
+				mintimestep=min(mintimestep, length(ic.results.TransientSolution));
+			end
+			if ~noearth,
+				mintimestep=min(mintimestep, length(self.earth.results.TransientSolution));
+			end
+			
+			for  i=1:length(self.icecaps),
+				ic=self.icecaps{i};
+				ic.results.TransientSolution=ic.results.TransientSolution(1:mintimestep);
+				self.icecaps{i}=ic;
+			end
+			ic=self.earth;
+			if ~noearth,
+				ic.results.TransientSolution=ic.results.TransientSolution(1:mintimestep);
+			end
+			self.earth=ic;
+		end % }}}
+		function self=initializemodels(self) % {{{
+
+			for i=1:length(self.basins),
+				md=model();
+				md.miscellaneous.name=self.basins{i}.name;
+				self.addicecap(md);
+			end
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/sealevelmodel.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/sealevelmodel.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/sealevelmodel.py	(revision 27955)
@@ -0,0 +1,501 @@
+from copy import deepcopy
+
+import numpy as np
+
+from fielddisplay import fielddisplay
+from generic import generic
+from getsubattr import getsubattr
+from issmsettings import issmsettings
+from meshintersect3d import meshintersect3d
+from miscellaneous import miscellaneous
+from model import model
+from modelmerge3d import modelmerge3d
+from pairoptions import pairoptions
+from planetradius import planetradius
+from plotmodel import plotmodel
+from private import private
+from setsubattr import setsubattr
+from TwoDToThreeD import TwoDToThreeD
+
+
+class sealevelmodel(object):
+    """SEALEVELMODEL class definition
+
+    Usage:
+        slm = sealevelmodel(*args)
+
+        where args is a variable list of options
+
+    Example:
+        slm = sealevelmodel(
+            'icecap', md_greenland,
+            'icecap', md_antarctica,
+            'earth', md_earth
+        )
+    """
+
+    def __init__(self, *args):  # {{{
+        self.icecaps = [] # list of land/ice models; name should be changed later
+        self.earth = 0 # model for the whole earth
+        self.basins = []  # list of basins, matching icecaps, where shapefile info is held
+        self.cluster = 0
+        self.miscellaneous = 0
+        self.settings = 0
+        self.private = 0
+        self.mergedcaps = 0
+        self.transitions = []
+        self.eltransitions = []
+        self.planet = ''
+
+        self.setdefaultparameters()
+
+        if len(args):
+            options = pairoptions(*args)
+
+            # Recover all the icecap models
+            self.icecaps = options.getfieldvalue('ice_cap', [])
+
+            # Recover the earth models
+            self.earth = options.getfieldvalue('earth', 0)
+
+            # Set planet type
+            self.planet = options.getfieldvalue('planet', 'earth')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '{}\n'.format(fielddisplay(self, 'icecaps', 'ice caps'))
+        s += '{}\n'.format(fielddisplay(self, 'earth', 'earth'))
+        s += '{}\n'.format(fielddisplay(self, 'settings', 'settings properties'))
+        s += '{}\n'.format(fielddisplay(self, 'cluster', 'cluster parameters (number of cpus...'))
+        s += '{}\n'.format(fielddisplay(self, 'miscellaneous', 'miscellaneous fields'))
+
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.icecaps = []
+        self.earth = []
+        self.cluster = generic()
+        self.miscellaneous = miscellaneous()
+        self.settings = issmsettings()
+        self.private = private()
+        self.transitions = []
+        self.eltransitions = []
+        self.planet = 'earth'
+    # }}}
+
+    @staticmethod
+    def checkconsistency(slm, solutiontype):  # {{{
+        # Is the coupler turned on?
+        #for i in range(len(slm.icecaps)):
+        #    if not slm.icecaps[i].transient.iscoupler:
+        #        print('Warning: sealevelmodel.py::checkconsistency: icecap model {} should have the transient coupler option turned on!'.format(slm.icecaps[i].miscellaneous.name))
+
+        #if not slm.earth.transient.iscoupler:
+        #    print('Warning: sealevelmodel.py::checkconsistency: earth model should have the transient coupler option turned on!')
+
+        # Check that the transition vectors have the right size
+        if slm.earth.mesh.numberofvertices != len(slm.earth.solidearth.transfercount):
+            raise Exception('sealevelmodel.py::checkconsistency: earth.solidearth.transfercount should be of size earth.mesh.numberofvertices')
+
+        # Check that run frequency is the same everywhere
+        for i in range(len(slm.icecaps)):
+            if slm.icecaps[i].solidearth.settings.runfrequency != slm.earth.solidearth.settings.runfrequency:
+                raise Exception('sealevelmodel.py::checkconsistency: icecap model {} should have the same run frequency as earth!'.format(slm.icecaps[i].miscellaneous.name))
+
+        # Make sure steric_rate is the same everywhere
+        for i in range(len(slm.icecaps)):
+            md = slm.icecaps[i]
+            if np.nonzero(md.dsl.sea_surface_height_above_geoid - slm.earth.dsl.sea_surface_height_above_geoid[slm.transitions[i]]) != []:
+                raise Exception('sealevelmodel.py::checkconsistency: steric rate on ice cap {} is not the same as for the earth'.format(md.miscellaneous.name))
+
+        # Make sure grd is the same everywhere
+        for i in range(len(slm.icecaps)):
+            md = slm.icecaps[i]
+            if md.solidearth.settings.isgrd != slm.earth.solidearth.settings.isgrd:
+                raise RuntimeError('sealevelmodel.py::checkconsistency: isgrd on ice cap {} is not the same as for the earth\n'.format(md.miscellaneous.name))
+
+        # Make sure that there is no solid earth external forcing on the basins
+        for i in range(len(slm.icecaps)):
+            md = slm.icecaps[i]
+            if md.solidearth.external:
+                raise RuntimeError('sealevelmodel.py::checkconsistency: cannot run external forcings on an ice sheet when running a coupling earth/ice sheet model')
+        # Make sure that we have the right grd model for computing our sealevel patterns
+        for i in range(len(slm.icecaps)):
+            md = slm.icecaps[i]
+            if md.solidearth.settings.grdmodel != 0:
+                raise RuntimeError('sealevelmodel.py::checkconsistency: ice sheets do not run GRD module, specify solidearth.settings.grdmodel=0 on ice cap {}'.format(i))
+    # }}}
+
+    def mergeresults(self):  # {{{
+        champs = fieldnames(self.icecaps[0].results.TransientSolution)
+        for i in range(len(self.mergedcaps / 2)):
+            md = self.mergedcaps[2 * i]
+            trans = self.mergedcaps[2 * i + 1]
+            #icecaps = self.icecaps[self.range[2 * i + 2]]
+            for j in range(len(self.icecaps[0].results.TransientSolution)):
+                for k in range(len(champs)):
+                    if isinstance(getattr(icecaps[0].results.TransientSolution[j], champs[k]), float):
+                        # Vertex or element?
+                        if len(getattr(icecaps[0].results.TransientSolution[j], champs[k]) == icecaps[0].mesh.numberofvertices):
+                            setattr(md.results.TransientSolution[j], champs[k], np.zeros(md.mesh.numberofvertices))
+                            for l in range(len(trans)):
+                                resultcap = getattr(icecaps[l].results.TransientSolution[j], champs[k])
+                                setattr(getattr(md.results.TransientSolution[j], champs[k]), trans[l], resultcap)
+                        else:
+                            if champs[k] == 'IceVolume' or champs[k] == 'IceVolumeAboveFlotation':
+                                setattr(md.results.TransientSolution, champs[k], 0)
+                                for l in range(len(trans)):
+                                    resultcap = getattr(icecaps[l].results.TransientSolution[j], champs[k])
+                                    setattr(md.results.TransientSolution[j], champs[k], getattr(md.results.TransientSolution[j], champs[k]) + resultcap)
+                            elif champs[k] == 'time':
+                                setattr(md.results.TransientSolution[j], champs[k], getattr(icecaps[0].results.TransientSolution[j], champs[k]))
+                            else:
+                                continue
+                    else:
+                        continue
+            self.mergedcaps[2 * i] = md
+    # }}}
+
+    def listcaps(self):  # {{{
+        for i in range(len(self.icecaps)):
+            print('{}: {}'.format(i, self.icecaps[i].miscellaneous.name))
+    # }}}
+
+    def ncaps(self):  # {{{
+        return len(self.icecaps)
+    # }}}
+
+    def continents(self):  # {{{
+        list = []
+        for i in range(len(self.basins)):
+            list.append = self.basins[i].continent
+        return np.unique(list)
+    # }}}
+
+    def basinsfromcontinent(self, continent):  # {{{
+        list = []
+        for i in range(len(self.icecaps)):
+            if self.basins[i].continent == continent:
+                list.append = self.basins[i].name
+        return np.unique(list)
+    # }}}
+
+    def addbasin(self, bas):  # {{{
+        if bas.__class__.__name__ != 'basin':
+            raise Exception('addbasin method only takes a \'basin\' class object as input')
+        self.basins.append(bas)
+    # }}}
+
+    def intersections2d(self, *args):  # {{{
+        options = pairoptions(*args)
+        force = options.getfieldvalue('force', 0)
+
+        # Initialize, to avoid issues of having more transitions than meshes
+        self.transitions = []
+        self.eltransitions = []
+
+        # For elements
+        xe = np.mean(self.earth.mesh.x[self.earth.mesh.elements - 1], axis=1)
+        ye = np.mean(self.earth.mesh.y[self.earth.mesh.elements - 1], axis=1)
+
+        for i in range(len(self.icecaps)):
+            mdi = self.icecaps[i]
+
+            # For elements
+            xei = np.mean(mdi.mesh.x[mdi.mesh.elements - 1], axis=1)
+            yei = np.mean(mdi.mesh.y[mdi.mesh.elements - 1], axis=1)
+
+            print('Computing vertex intersections for basin {}'.format(self.basins[i].name))
+
+            self.transitions.append(meshintersect2d(self.earth.mesh.x, self.earth.mesh.y, mdi.mesh.x, mdi.mesh.y, 'force', force))
+            self.eltransitions.append(meshintersect2d(xe, ye, xei, yei, 'force', force))
+    # }}}
+
+    def intersections(self, *args):  # {{{
+        options = pairoptions(*args)
+        force = options.getfieldvalue('force', 0)
+
+        # Initialize, to avoid issues of having more transitions than meshes
+        self.transitions = []
+        self.eltransitions = []
+        self.earth.solidearth.transfercount = np.zeros(self.earth.mesh.numberofvertices)
+
+        # For elements
+        xe = np.mean(self.earth.mesh.x[self.earth.mesh.elements - 1], axis=1)
+        ye = np.mean(self.earth.mesh.y[self.earth.mesh.elements - 1], axis=1)
+        ze = np.mean(self.earth.mesh.z[self.earth.mesh.elements - 1], axis=1)
+
+        for i in range(len(self.icecaps)):
+            mdi = self.icecaps[i]
+            mdi = TwoDToThreeD(mdi, self.planet)
+
+            # For elements
+            xei = np.mean(mdi.mesh.x[mdi.mesh.elements - 1], axis=1)
+            yei = np.mean(mdi.mesh.y[mdi.mesh.elements - 1], axis=1)
+            zei = np.mean(mdi.mesh.z[mdi.mesh.elements - 1], axis=1)
+
+            print('Computing vertex intersections for basin {}'.format(self.basins[i].name))
+
+            self.transitions.append(meshintersect3d(self.earth.mesh.x, self.earth.mesh.y, self.earth.mesh.z, mdi.mesh.x, mdi.mesh.y, mdi.mesh.z, 'force', force))
+            self.eltransitions.append(meshintersect3d(xe, ye, ze, xei, yei, zei, 'force', force))
+
+            self.earth.solidearth.transfercount[self.transitions[i]] = self.earth.solidearth.transfercount[self.transitions[i]] + 1
+
+        for i in range(len(self.icecaps)):
+            self.icecaps[i].solidearth.transfercount = self.earth.solidearth.transfercount[self.transitions[i]]
+    # }}}
+
+    def checkintersections(self):  # {{{
+        flags = np.zeros(self.earth.mesh.numberofvertices, 1)
+        for i in range(len(self.basins)):
+            flags[self.transitions[i]] = i
+        plotmodel(self.earth, 'data', flags, 'coastlines', 'on')
+    # }}}
+
+    def checkbasinconsistency(self):  # {{{
+        for i in range(len(self.basins)):
+            self.basins[i].checkconsistency()
+    # }}}
+
+    def basinindx(self, *args):  # {{{
+        options = pairoptions(*args)
+        continent = options.getfieldvalue('continent', 'all')
+        bas = options.getfieldvalue('basin', 'all')
+
+        # Expand continent list #{{{
+        if type(continent) == np.ndarray:
+            if continent.shape[1] == 1:
+                if continent[0] == 'all':
+                    # Need to transform this into a list of continents
+                    continent = []
+                    for i in range(len(self.basins)):
+                        continent.append(self.basins[i].continent)
+                    continent = np.unique(continent)
+                else:
+                    pass  # Nothing to do: assume we have a list of continents
+            else:
+                pass  # Nothing to do: assume we have a list of continents
+        else:
+            if continent == 'all':
+                # Need to transform this into a list of continents
+                continent = []
+                for i in range(len(self.basins)):
+                    continent.append(self.basins[i].continent)
+                continent = np.unique(continent)
+            else:
+                pass  # Nothing to do: assume we have a list of continents
+        # }}}
+
+        # Expand basins list using the continent list above and the extra bas discriminator #{{{
+        if type(bas) == np.ndarray:
+            if bas.shape[1] == 1:
+                if bas[0] == 'all':
+                    # Need to transform this into a list of basins
+                    baslist = []
+                    for i in range(len(self.basins)):
+                        if self.basins[i].iscontinentany(continent):
+                            baslist.append(i)
+                    baslist = np.unique(baslist)
+                else:
+                    bas = bas[0]
+                    baslist = []
+                    for i in range(len(self.basins)):
+                        if self.basins[i].iscontinentany(continent):
+                            if self.basins[i].isnameany(bas):
+                                baslist.append(i)
+            else:
+                # We have a list of basin names
+                baslist = []
+                for i in range(len(bas)):
+                    basname = bas[i]
+                    for j in range(len(self.basins)):
+                        if self.basins[j].iscontinentany(continent):
+                            if self.basins[j].isnameany(basname):
+                                baslist.append(j)
+                    baslist = np.unique(baslist)
+        else:
+            if bas == 'all':
+                baslist = []
+                for i in range(len(self.basins)):
+                    if self.basins[i].iscontinentany(continent):
+                        baslist.append(i)
+                baslist = np.unique(baslist)
+            else:
+                baslist = []
+                for i in range(len(self.basins)):
+                    if self.basins[i].iscontinentany(continent):
+                        if self.basins[i].isnameany(bas):
+                            baslist.append(i)
+                baslist = np.unique(baslist)
+
+        return baslist
+        # }}}
+    # }}}
+
+    def addicecap(self, md):  # {{{
+        if not type(md) == model:
+            raise Exception("addicecap method only takes a 'model' class object as input")
+
+        self.icecaps.append(md)
+    # }}}
+
+    def basinsplot3d(self, *args):  # {{{
+        for i in range(len(self.basins)):
+            self.basins[i].plot3d(*args)
+    # }}}
+
+    def caticecaps(self, *args):  # {{{
+        # Recover options
+        options = pairoptions(*args)
+        tolerance = options.getfieldvalue('tolerance', .65)
+        loneedgesdetect = options.getfieldvalue('loneedgesdetect', 0)
+
+        # Make 3D model
+        models = deepcopy(self.icecaps)
+        for i in range(len(models)):
+            models[i] = TwoDToThreeD(models[i], self.planet)
+
+        # Plug all models together
+        md = models[0]
+        for i in range(1, len(models)):
+            md = modelmerge3d(md, models[i], 'tolerance', tolerance)
+            md.private.bamg.landmask = np.hstack((md.private.bamg.landmask, models[i].private.bamg.landmask))
+
+        # Look for lone edges if asked for it
+        if loneedgesdetect:
+            edges = loneedges(md)
+            # TODO: Reconfigure the following in the process of bringing plotting online
+            plotmodel(md, 'data', md.mask.land_levelset)
+            for i in range(len(edges)):
+                ind1 = edges(i, 1)
+                ind2 = edges(i, 2)
+                plot3([md.mesh.x[ind1], md.mesh.x[ind2]], [md.mesh.y[ind1], md.mesh.y[ind2]], [md.mesh.z[ind1], md.mesh.z[ind2]], 'g*-')
+
+        # Plug into earth
+        self.earth = md
+
+        # Create mesh radius
+        self.earth.mesh.r = planetradius('earth') * np.ones((md.mesh.numberofvertices, ))
+    # }}}
+
+    def caticecaps2d(self, *args):  # {{{
+        # Recover options
+        options = pairoptions(*args)
+        tolerance = options.getfieldvalue('tolerance', 1e-5)
+        loneedgesdetect = options.getfieldvalue('loneedgesdetect', 0)
+        models = self.icecaps
+
+        # Plug all models together
+        md = models[0]
+        for i in range(1, len(models)):
+            md = modelmerge2d(md, models[i], 'tolerance', tolerance)
+
+        # Look for lone edges if asked for it
+        if loneedgesdetect:
+            edges = loneedges(md)
+            # TODO: Reconfigure the following in the process of bringing plotting online
+            plotmodel(md, 'data', md.mask.land_levelset)
+            for i in range(len(edges)):
+                ind1 = edges(i, 1)
+                ind2 = edges(i, 2)
+                plot([md.mesh.x[ind1], md.mesh.x[ind2]], [md.mesh.y[ind1], md.mesh.y[ind2]], 'g*-')
+
+        # Plug into earth
+        self.earth = md
+    # }}}
+
+    def viscousiterations(self):  # {{{
+        for i in range(len(self.icecaps)):
+            ic = self.icecaps[i]
+            mvi = ic.results.TransientSolution[0].StressbalanceConvergenceNumSteps
+            for j in range(1, len(ic.results.TransientSolution) - 1):
+                mvi = np.max(mvi, ic.results.TransientSolution[j].StressbalanceConvergenceNumSteps)
+            print("{}, {}: {}".format(i, self.icecaps[i].miscellaneous.name, mvi))
+    # }}}
+
+    def maxtimestep(self):  # {{{
+        for i in range(len(self.icecaps)):
+            ic = self.icecaps[i]
+            mvi = len(ic.results.TransientSolution)
+            timei = ic.results.TransientSolution[-1].time
+            print("{}, {}: {}/{}".format(i, self.icecaps[i].miscellaneous.name, mvi, timei))
+
+        mvi = len(self.earth.results.TransientSolution)
+        timei = self.earth.results.TransientSolution[-1].time
+        print("Earth: {}/{}", mvi, timei)
+    # }}}
+
+    def transfer(self, string):  # {{{
+        # Recover field size in one icecap
+        n = getsubattr(self.icecaps[0], string).shape[0]
+
+        if n == self.icecaps[0].mesh.numberofvertices:
+            setsubattr(self.earth, string, np.zeros((self.earth.mesh.numberofvertices, ))) # Assign array of zeros to target attribute
+            earth_attr = getsubattr(self.earth, string) # Retrieve reference to target attribute
+            for i in range(len(self.icecaps)):
+                earth_attr[self.transitions[i]] = getsubattr(self.icecaps[i], string)
+        elif n == (self.icecaps[0].mesh.numberofvertices + 1):
+            # Dealing with transient dataset
+            # Check that all timetags are similar between all icecaps #{{{
+            for i in range(len(self.icecaps)):
+                capfieldi = getsubattr(self.icecaps[i], string)
+                for j in range(i + 1, len(self.icecaps)):
+                    capfieldj = getsubattr(self.icecaps[j], string)
+                    if capfieldi[-1, :] != capfieldj[-1, :]:
+                        raise Exception("Time stamps for {} field are different between icecaps {} and {}".format(string, i, j))
+            capfield1 = getsubattr(self.icecaps[0], string)
+            times = capfield1[-1, :]
+            nsteps = len(times)
+            # }}}
+            # Initialize #{{{
+            field = np.zeros((self.earth.mesh.numberofvertices + 1, nsteps))
+            field[-1, :] = times  # Transfer the times only, not the values
+            # }}}
+            # Transfer all the time fields #{{{
+            for i in range(len(self.icecaps)):
+                capfieldi = getsubattr(self.icecaps[i], string)
+                for j in range(nsteps):
+                    field[self.transitions[i], j] = capfieldi[0:-1, j]  # Transfer only the values, not the time
+            setsubattr(self.earth, string, field)  # Do not forget to plug the field variable into its final location
+            # }}}
+        elif n == (self.icecaps[0].mesh.numberofelements):
+            setsubattr(self.earth, string, np.zeros((self.earth.mesh.numberofelements, ))) # Assign array of zeros to target attribute
+            earth_attr = getsubattr(self.earth, string) # Retrieve reference to target attribute
+            for i in range(len(self.icecaps)):
+                earth_attr[self.eltransitions[i]] = getsubattr(self.icecaps[i], string)
+        else:
+            raise Exception('not supported yet')
+    # }}}
+
+    def homogenize(self, noearth=0):  # {{{
+        mintimestep = np.inf
+
+        for i in range(len(self.icecaps)):
+            ic = self.icecaps[i]
+            mintimestep = np.min(mintimestep, len(ic.results.TransientSolution))
+
+        if not noearth:
+            mintimestep = np.min(mintimestep, len(self.earth.results.TransientSolution))
+
+        for i in range(len(self.icecaps)):
+            ic = self.icecaps[i]
+            ic.resuts.TransientSolution = ic.results.TransientSolution[:mintimestep]
+            self.icecaps[i] = ic
+
+        ic = self.earth
+
+        if not noearth:
+            ic.results.TransientSolution = ic.results.TransientSolution[:mintimestep]
+
+        self.earth = ic
+
+        return self
+    # }}}
+
+    def initializemodels(self):  # {{{
+        for i in range(len(self.basins)):
+            md = model()
+            md.miscellaneous.name = self.basins[i].name
+            self.addicecap(md)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/slr.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/slr.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/slr.js	(revision 27955)
@@ -0,0 +1,199 @@
+//SLR class definition
+//
+//   Usage:
+//      slr=slr();
+
+function slr(){
+	//methods
+		this.setdefaultparameters = function (){ //{{{
+
+		//Convergence criterion: absolute, relative and residual
+		this.reltol=0.01; // 1 per cent
+		this.abstol=NaN;  //default
+
+		//maximum of non-linear iterations.
+		this.maxiter=5;
+
+		//computational flags:
+		this.rigid=1;
+		this.elastic=1;
+		this.rotation=0;
+		this.ocean_area_scaling=0;
+
+		//tidal love numbers:
+		this.tide_love_h=0.6149; //degree 2
+		this.tide_love_k=0.3055; //degree 2
+
+		//secular fluid love number:
+		this.fluid_love=0.942;
+
+		//moment of inertia:
+		this.equatorial_moi=8.0077*10^37; // [kg m^2]
+		this.polar_moi		 =8.0345*10^37; // [kg m^2]
+
+		// mean rotational velocity of earth:
+		this.angular_velocity=7.2921*10^-5; // [s^-1]
+
+		//numerical discretization accuracy
+		this.degacc=.01;
+
+		//steric:
+		this.steric_rate=0;
+
+
+		//output default:
+		this.requested_outputs=['default'];
+
+		//transitions should be a cell array of vectors:
+		this.transitions=[];
+
+		}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			//Early return
+			if (ArrayAnyEqual(ArrayIsMember('SealevelriseAnalysis',analyses),0) || ArrayAnyEqual(ArrayIsMember('TransientSolution',analyses),0) && !md.transient.isslr) {
+				return;
+			}
+
+			md = checkfield(md,'fieldname','slr.deltathickness','NaN',1,'Inf',1,'size',[md.mesh.numberofelements, 1]);
+			md = checkfield(md,'fieldname','slr.sealevel','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			md = checkfield(md,'fieldname','slr.love_h','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.love_k','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.love_l','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.tide_love_h','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.tide_love_k','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.fluid_love','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.equatorial_moi','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.polar_moi','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.angular_velocity','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.reltol','size',[1, 1]);
+			md = checkfield(md,'fieldname','slr.abstol','size',[1, 1]);
+			md = checkfield(md,'fieldname','slr.steric_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			md = checkfield(md,'fieldname','slr.maxiter','size',[1, 1],'>=',1);
+			md = checkfield(md,'fieldname','slr.degacc','size',[1, 1],'>=',1e-10);
+			md = checkfield(md,'fieldname','slr.requested_outputs','stringrow',1);
+
+			//check that love numbers are provided at the same level of accuracy:
+			if (this.love_h.length != this.love_k.length || this.love_h.length != this.love_l.length){
+				throw Error('slr error message: love numbers should be provided at the same level of accuracy');
+			}
+
+		} // }}}
+		this.defaultoutputs = function(md){ // {{{
+			return ['Sealevel'];
+		}//}}}
+		this.classname= function(){// {{{
+			return "slr";
+		}// }}}
+		this.disp= function(){// {{{
+
+			console.log(sprintf('   Sealevelrise solution parameters:'));
+
+		fielddisplay(this,'deltathickness','thickness change (main loading of the slr solution core [m]');
+		fielddisplay(this,'sealevel','current sea level (prior to computation) [m]');
+		fielddisplay(this,'reltol','sea level rise relative convergence criterion, (default, NaN: not applied)');
+		fielddisplay(this,'abstol','sea level rise absolute convergence criterion, NaN: not applied');
+		fielddisplay(this,'maxiter','maximum number of nonlinear iterations');
+		fielddisplay(this,'love_h','load Love number for radial displacement');
+		fielddisplay(this,'love_k','load Love number for gravitational potential perturbation');
+		fielddisplay(this,'love_l','load Love number for horizontal displacements');
+		fielddisplay(this,'tide_love_h','tidal love number (degree 2)');
+		fielddisplay(this,'tide_love_k','tidal love number (degree 2)');
+		fielddisplay(this,'fluid_love','secular fluid Love number');
+		fielddisplay(this,'equatorial_moi','mean equatorial moment of inertia [kg m^2]');
+		fielddisplay(this,'polar_moi','polar moment of inertia [kg m^2]');
+		fielddisplay(this,'angular_velocity','mean rotational velocity of earth [per second]');
+		fielddisplay(this,'rigid','rigid earth graviational potential perturbation');
+		fielddisplay(this,'elastic','elastic earth graviational potential perturbation');
+		fielddisplay(this,'rotation','rotational earth potential perturbation');
+		fielddisplay(this,'ocean_area_scaling','correction for model representation of ocean area [default: No correction]');
+		fielddisplay(this,'degacc',"accuracy (default .01 deg) for numerical discretization of the Green's functions");
+		fielddisplay(this,'transitions','indices into parts of the mesh that will be icecaps');
+		fielddisplay(this,'requested_outputs','additional outputs requested');
+		fielddisplay(this,'steric_rate','rate of steric ocean expansion [mm/yr]');
+		} //}}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			console.log('WARNING: NOT MARHSALLING SLR FOR NOW.');
+			return;
+			WriteData(fid,prefix,'object',this,'fieldname','deltathickness','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',this,'fieldname','sealevel','mattype',1,'format','DoubleMat','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',this,'fieldname','reltol','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','abstol','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','love_h','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','love_k','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','love_l','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',this,'fieldname','tide_love_h','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','tide_love_k','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','fluid_love','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','equatorial_moi','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','polar_moi','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','angular_velocity','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','rigid','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','elastic','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','rotation','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','ocean_area_scaling','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','steric_rate','format','DoubleMat','mattype',1,'scale',1e-3/md.constants.yts);
+			WriteData(fid,prefix,'object',this,'fieldname','degacc','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','transitions','format','MatArray');
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}
+			WriteData(fid,prefix,'data',outputs,'name','md.slr.requested_outputs','format','StringArray');
+		}//}}}
+		this.fix=function() { //{{{
+			this.deltathickness=NullFix(this.deltathickness,NaN);
+			this.sealevel=NullFix(this.sealevel,NaN);
+			this.maxiter=NullFix(this.maxiter,NaN);
+			this.reltol=NullFix(this.reltol,NaN);
+			this.abstol=NullFix(this.abstol,NaN);
+			this.love_h=NullFix(this.love_h,NaN);
+			this.love_k=NullFix(this.love_k,NaN);
+			this.love_l=NullFix(this.love_l,NaN);
+			this.tide_love_h=NullFix(this.tide_love_h,NaN);
+			this.tide_love_k=NullFix(this.tide_love_k,NaN);
+			this.fluid_love=NullFix(this.fluid_love,NaN);
+			this.equatorial_moi=NullFix(this.equatorial_moi,NaN);
+			this.polar_moi=NullFix(this.polar_moi,NaN);
+			this.angular_velocity=NullFix(this.angular_velocity,NaN);
+			this.rigid=NullFix(this.rigid,NaN);
+			this.elastic=NullFix(this.elastic,NaN);
+			this.rotation=NullFix(this.rotation,NaN);
+			this.ocean_area_scaling=NullFix(this.ocean_area_scaling,NaN);
+			this.steric_rate=NullFix(this.steric_rate,NaN);
+			this.degacc=NullFix(this.degacc,NaN);
+		}//}}}
+	//properties
+	//{{{
+	this.deltathickness = NaN;
+	this.sealevel       = NaN;
+	this.maxiter        = 0;
+	this.reltol         = 0;
+	this.abstol         = 0;
+	this.love_h         = 0; //provided by PREM model
+	this.love_k         = 0; //idam
+	this.love_l         = 0; //idam
+	this.tide_love_h    = 0;
+	this.tide_love_k    = 0;
+	this.fluid_love	  = 0;
+	this.equatorial_moi	= 0;
+	this.polar_moi			= 0;
+	this.angular_velocity = 0;
+	this.rigid          = 0;
+	this.elastic        = 0;
+	this.rotation       = 0;
+	this.ocean_area_scaling = 0;
+	this.steric_rate    = 0; //rate of ocean expansion from steric effects.
+	this.degacc         = 0;
+	this.requested_outputs = [];
+	this.transitions    = [];
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/slr.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/slr.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/slr.py	(revision 27955)
@@ -0,0 +1,210 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from MatlabFuncs import *
+from model import *
+from planetradius import planetradius
+from WriteData import WriteData
+from project3d import project3d
+
+
+class slr(object):
+    """SLR class definition
+
+    Usage:
+        slr = slr()
+    """
+    def __init__(self):  # {{{
+        self.deltathickness = np.nan
+        self.sealevel = np.nan
+        self.spcthickness = np.nan
+        self.maxiter = 0
+        self.reltol = 0
+        self.abstol = 0
+        self.love_h = 0  #provided by PREM model()
+        self.love_k = 0  #ideam
+        self.love_l = 0  #ideam
+        self.tide_love_k = 0  #ideam
+        self.tide_love_h = 0  #ideam
+        self.fluid_love = 0
+        self.equatorial_moi = 0
+        self.polar_moi = 0
+        self.angular_velocity = 0
+        self.rigid = 0
+        self.elastic = 0
+        self.rotation = 0
+        self.ocean_area_scaling = 0
+        self.hydro_rate = 0  #rate of steric expansion from hydrological effects.
+        self.geodetic_run_frequency = 1  #how many time steps we skip before we run the geodetic part of the solver during transient
+        self.geodetic = 0  #compute geodetic SLR? (in addition to steric?)
+        self.degacc = 0
+        self.horiz = 0
+        self.planetradius = planetradius('earth')
+        self.requested_outputs = []
+        self.transitions = []
+
+        #set defaults
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   slr parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'deltathickness', 'thickness change: ice height equivalent [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'sealevel', 'current sea level (prior to computation) [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'spcthickness', 'thickness constraints (NaN means no constraint) [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'reltol', 'sea level rise relative convergence criterion, (NaN: not applied)'))
+        s += '{}\n'.format(fielddisplay(self, 'abstol', 'sea level rise absolute convergence criterion, (default, NaN: not applied)'))
+        s += '{}\n'.format(fielddisplay(self, 'maxiter', 'maximum number of nonlinear iterations'))
+        s += '{}\n'.format(fielddisplay(self, 'love_h', 'load Love number for radial displacement'))
+        s += '{}\n'.format(fielddisplay(self, 'love_k', 'load Love number for gravitational potential perturbation'))
+        s += '{}\n'.format(fielddisplay(self, 'love_l', 'load Love number for horizontal displaements'))
+        s += '{}\n'.format(fielddisplay(self, 'tide_love_k', 'tidal load Love number (degree 2)'))
+        s += '{}\n'.format(fielddisplay(self, 'tide_love_h', 'tidal load Love number (degree 2)'))
+        s += '{}\n'.format(fielddisplay(self, 'fluid_love', 'secular fluid Love number'))
+        s += '{}\n'.format(fielddisplay(self, 'equatorial_moi', 'mean equatorial moment of inertia [kg m^2]'))
+        s += '{}\n'.format(fielddisplay(self, 'polar_moi', 'polar moment of inertia [kg m^2]'))
+        s += '{}\n'.format(fielddisplay(self, 'angular_velocity', 'mean rotational velocity of earth [per second]'))
+        s += '{}\n'.format(fielddisplay(self, 'ocean_area_scaling', 'correction for model representation of ocean area [default: No correction]'))
+        s += '{}\n'.format(fielddisplay(self, 'hydro_rate', 'rate of hydrological expansion [mm / yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'geodetic', 'compute geodetic SLR? (in addition to steric?) default 0'))
+        s += '{}\n'.format(fielddisplay(self, 'geodetic_run_frequency', 'how many time steps we skip before we run SLR solver during transient (default: 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'rigid', 'rigid earth graviational potential perturbation'))
+        s += '{}\n'.format(fielddisplay(self, 'elastic', 'elastic earth graviational potential perturbation'))
+        s += '{}\n'.format(fielddisplay(self, 'rotation', 'earth rotational potential perturbation'))
+        s += '{}\n'.format(fielddisplay(self, 'degacc', 'accuracy (default .01 deg) for numerical discretization of the Green''s functions'))
+        s += '{}\n'.format(fielddisplay(self, 'transitions', 'indices into parts of the mesh that will be icecaps'))
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Convergence criterion: absolute, relative and residual
+        self.reltol = 0.01 # default
+        self.abstol = np.nan # 1 mm of sea level rise
+        # Maximum number of non-linear iterations
+        self.maxiter = 5
+        # Computational flags
+        self.geodetic = 0
+        self.rigid = 1
+        self.elastic = 1
+        self.ocean_area_scaling = 0
+        self.rotation = 1
+        # Tidal love numbers
+        self.tide_love_h = 0.6149 # degree 2
+        self.tide_love_k = 0.3055 # degree 2
+        # Secular fluid love number
+        self.fluid_love = 0.942
+        # Moment of inertia
+        self.equatorial_moi = 8.0077e37  # [kg m^2]
+        self.polar_moi = 8.0345e37  # [kg m^2]
+        # Mean rotational velocity of earth
+        self.angular_velocity = 7.2921e-5  # [s^-1]
+        # Numerical discretization accuracy
+        self.degacc = 0.01
+        # Hydro
+        self.hydro_rate = 0
+        # How many time steps we skip before we run SLR solver during transient
+        self.geodetic_run_frequency = 1
+        # Output default
+        self.requested_outputs = ['default']
+        # Transitions should be a list of vectors
+        self.transitions = []
+        # Horizontal displacement? (not on by default)
+        self.horiz = 0
+        # Earth area
+        self.planetradius = planetradius('earth')
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if 'SealevelchangeAnalysis' not in analyses or (solution == 'TransientSolution' and not md.transient.isslr):
+            return md
+
+        md = checkfield(md, 'fieldname', 'slr.deltathickness', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofelements])
+        md = checkfield(md, 'fieldname', 'slr.sealevel', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        md = checkfield(md, 'fieldname', 'slr.spcthickness', 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'slr.love_h', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'slr.love_k', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'slr.love_l', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'slr.tide_love_h', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'slr.tide_love_k', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'slr.fluid_love', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'slr.equatorial_moi', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'slr.polar_moi', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'slr.angular_velocity', 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'slr.reltol', 'size', [1, 1])
+        md = checkfield(md, 'fieldname', 'slr.abstol', 'size', [1, 1])
+        md = checkfield(md, 'fieldname', 'slr.maxiter', 'size', [1, 1], '>=', 1)
+        md = checkfield(md, 'fieldname', 'slr.geodetic_run_frequency', 'size', [1, 1], '>=', 1)
+        md = checkfield(md, 'fieldname', 'slr.hydro_rate', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+        md = checkfield(md, 'fieldname', 'slr.degacc', 'size', [1, 1], '>=', 1e-10)
+        md = checkfield(md, 'fieldname', 'slr.requested_outputs', 'stringrow', 1)
+        md = checkfield(md, 'fieldname', 'slr.horiz', 'NaN', 1, 'Inf', 1, 'values', [0, 1])
+
+        # Check that love numbers are provided at the same level of accuracy:
+        if (size(self.love_h, 0) != size(self.love_k, 0)) or (size(self.love_h, 0) != size(self.love_l, 0)):
+            raise Exception('slr error message: love numbers should be provided at the same level of accuracy')
+
+        # Cross check that whereever we have an ice load, the mask is < 0 on each vertex:
+        pos = np.where(self.deltathickness)
+        maskpos = md.mask.ice_levelset[md.mesh.elements[pos, :]]
+        els = np.where(maskpos > 0)
+        if len(els[0]) > 0:
+            print('Warning: slr.py::checkconsistency: there are elements with ice loads where some vertices are not on the ice!')
+
+        # Check that if geodetic is requested, we are a mesh3dsurface model (planet), or if we are not, a coupler to a planet model is provided
+        if self.geodetic:
+            if md.transient.iscoupler:
+                # We are good
+                pass
+            else:
+                if md.mesh.__class__.__name__ == 'mesh3dsurface':
+                    # We are good
+                    pass
+                else:
+                    raise Exception('model is requesting geodetic computations without being a mesh3dsurface, or being coupled to one!')
+        return md
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['Sealevel']
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'deltathickness', 'format', 'DoubleMat', 'mattype', 2)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'sealevel', 'mattype', 1, 'format', 'DoubleMat', 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'spcthickness', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'reltol', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'abstol', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'maxiter', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'love_h', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'love_k', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'love_l', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'tide_love_h', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'tide_love_k', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'fluid_love', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'equatorial_moi', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'polar_moi', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'angular_velocity', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'rigid', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'elastic', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'rotation', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'ocean_area_scaling', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'geodetic_run_frequency', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'hydro_rate', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1e-3 / md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'degacc', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'transitions', 'format', 'MatArray')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'horiz', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'geodetic', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'planetradius', 'format', 'Double')
+
+        # Process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.slr.requested_outputs', 'format', 'StringArray')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/snowpack.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/snowpack.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/snowpack.m	(revision 27955)
@@ -0,0 +1,475 @@
+%SNOWPACK class definition
+%
+%   Usage:
+%      snowpack=snowpack();
+
+classdef snowpack
+	properties (SetAccess=public) 
+
+		%first, the configuration fields, by category: 
+		%snowpack:  %{{{
+		snowpack_meas_tss = 0;
+		snowpack_enforce_measured_snow_heights = 0;
+		snowpack_sw_mode = 0;
+		snowpack_incoming_longwave = 0;
+		snowpack_height_of_wind_value = 0;
+		snowpack_height_of_meteo_values = 0;
+		snowpack_neutral = 0;
+		snowpack_roughness_length = 0;
+		snowpack_number_slopes = 0;
+		snowpack_snow_redistribution = 0;
+		snowpack_calculation_step_length = 0;
+		snowpack_change_bc = 0;
+		snowpack_thresh_change_bc = 0;
+		snowpack_snp_soil = 0;
+		snowpack_soil_flux = 0;
+		snowpack_geo_heat = 0;
+		snowpack_canopy = 0;
+		%}}}
+		%snowpackadvanced:  %{{{
+		snowpackadvanced_variant = ''; % use 320 kg m-3 for fixed density
+		snowpackadvanced_hn_density = '';
+		%}}}
+		%general:  %{{{
+		general_pluginpath = '';
+		general_buff_chunk_size = 0;
+		general_buff_before = 0;
+		%}}}
+		%input {{{
+		input_coordsys = '';
+		input_coordparam = '';
+		input_time_zone = 0;
+		input_meteo = '';
+		input_meteopath = '';
+		input_station1 = '';
+		input_snowfile1 = '';
+		%}}}
+		%output {{{
+		output_coordsys = '';
+		output_coordparam = '';
+		output_time_zone = 0;
+		output_meteopath = '';
+		output_experiment = '';
+		output_ts_write = 0;
+		output_ts_start = 0;
+		output_ts_days_between = 0;
+		output_profile = '';
+		output_prof_write = 0;
+		output_prof_start = 0;
+		output_prof_days_between = 0;
+		%}}}
+		%interpolations1d %{{{
+		interpolations1d_window_size = 0; %that is 5 d and 2 h; 1 d = 86400
+		interpolations1d_hnw_resample = '';
+		interpolations1d_hs_resample = '';
+		interpolations1d_tsg_resample = '';
+		interpolations1d_rho_hn_resample = '';
+		interpolations1d_vw_resample = '';
+		interpolations1d_vw_args = '';
+		%}}}
+		%filters {{{
+		filters={'TA::filter1',{'soft',[-20 10]}};
+		filters=NaN;
+		filter_values=NaN;
+
+		filters_ta_filter1 = '';
+		filters_ta_arg1 = NaN;
+		filters_rh_filter1 = '';
+		filters_rh_arg1 = NaN;
+		filters_rh_filter2 = '';
+		filters_rh_arg2 = NaN;
+		filters_iswr_filter1 = '';
+		filters_iswr_arg1 = NaN;
+		filters_iswr_filter2 = '';
+		filters_iswr_arg2 = NaN;
+		filters_rswr_filter1 = '';
+		filters_rswr_arg1 = NaN;
+		filters_rswr_filter2 = '';
+		filters_rswr_arg2 = NaN;
+
+		%for ta between 190 and 280 k;
+		filters_ilwr_filter1 = '';
+		filters_ilwr_arg1 = NaN;
+		filters_ilwr_filter2 = '';
+		filters_ilwr_arg2 = NaN;
+		filters_tss_filter1 = '';
+		filters_tss_arg1 = NaN;
+		filters_tsg_filter1 = '';
+		filters_tsg_arg1 = NaN;
+		filters_vw_filter1 = '';
+		filters_vw_arg1 = NaN;
+		filters_vw_filter2 = '';
+		filters_vw_arg2 = NaN;
+		%}}}
+
+	end
+	methods
+		function self = snowpack(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('snowpack');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		%snowpack:  %{{{
+		self.snowpack_meas_tss = 1;
+		self.snowpack_enforce_measured_snow_heights = 0;
+		self.snowpack_sw_mode = 0;
+		self.snowpack_incoming_longwave = 1;
+		self.snowpack_height_of_wind_value = 12.;
+		self.snowpack_height_of_meteo_values = 12.;
+		self.snowpack_neutral = 0;
+		self.snowpack_roughness_length = 0.002;
+		self.snowpack_number_slopes = 1;
+		self.snowpack_snow_redistribution = 1;
+		self.snowpack_calculation_step_length = 15.0;
+		self.snowpack_change_bc = 0;
+		self.snowpack_thresh_change_bc = -1.0;
+		self.snowpack_snp_soil = 0;
+		self.snowpack_soil_flux = 0;
+		self.snowpack_geo_heat = 0.06;
+		self.snowpack_canopy = 0;
+		%}}}
+		%snowpackadvanced:  %{{{
+		self.snowpackadvanced_variant = 'ANTARCTICA'; % use 320 kg m-3 for fixed density
+		self.snowpackadvanced_hn_density = 'EVENT';
+		%}}}
+		%general:  %{{{
+		self.general_pluginpath = '/usr/local/lib/meteoio/plugins/';
+		self.general_buff_chunk_size = 90;
+		self.general_buff_before = 1.5;
+		%}}}
+		%input {{{
+		self.input_coordsys = 'ch1903';
+		self.input_coordparam = 'null';
+		self.input_time_zone = 8;
+		self.input_meteo = 'smet';
+		self.input_meteopath = './input';
+		self.input_station1 = 'domec.smet';
+		self.input_snowfile1 = 'domec.sno';
+		%}}}
+		%output {{{
+		self.output_coordsys = 'ch1903';
+		self.output_coordparam = 'null';
+		self.output_time_zone = 8;
+		self.output_meteopath = './output';
+		self.output_experiment = 'smet';
+		self.output_ts_write = 1;
+		self.output_ts_start = 0.0;
+		self.output_ts_days_between = 0.04166667;
+		self.output_profile = 'ascii';
+		self.output_prof_write = 1;
+		self.output_prof_start = 0.0;
+		self.output_prof_days_between = 0.04166667;
+		%}}}
+		%interpolations1d %{{{
+		self.interpolations1d_window_size = 439200; %that is 5 d and 2 h; 1 d = 86400
+		self.interpolations1d_hnw_resample = 'none';
+		self.interpolations1d_hs_resample = 'linear';
+		self.interpolations1d_tsg_resample = 'linear';
+		self.interpolations1d_rho_hn_resample = 'none';
+		self.interpolations1d_vw_resample = 'nearest_neighbour';
+		self.interpolations1d_vw_args = 'extrapolate';
+		%}}}
+		%filters {{{
+		self.filters_ta_filter1 = 'min_max';
+		self.filters_ta_arg1 = [190 280];
+		self.filters_rh_filter1 = 'min_max';
+		self.filters_rh_arg1 = [0.01 1.2];
+		self.filters_rh_filter2 = 'min_max';
+		self.filters_rh_arg2 = {'soft' 0.01 1.0};
+		self.filters_iswr_filter1 = 'min_max';
+		self.filters_iswr_arg1 = [-10 1500];
+		self.filters_iswr_filter2 = 'min_max';
+		self.filters_iswr_arg2 = {'soft' 0 1500};
+		self.filters_rswr_filter1 = 'min_max';
+		self.filters_rswr_arg1 = [-10 1500];
+		self.filters_rswr_filter2 = 'min_max';
+		self.filters_rswr_arg2 = {'soft' 0 1500};
+
+		%for ta between 190 and 280 k;
+		self.filters_ilwr_filter1 = 'min_max';
+		self.filters_ilwr_arg1 = [30 355];
+		self.filters_ilwr_filter2 = 'min_max';
+		self.filters_ilwr_arg2 = {'soft' 35 350};
+		self.filters_tss_filter1 = 'min_max';
+		self.filters_tss_arg1 = [180 275];
+		self.filters_tsg_filter1 = 'min_max';
+		self.filters_tsg_arg1 = [200 275];
+		self.filters_vw_filter1 = 'min_max';
+		self.filters_vw_arg1 = [-2 70];
+		self.filters_vw_filter2 = 'min_max';
+		self.filters_vw_arg2 = {'soft' 0 50};
+		%}}}
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%snowpack:  %{{{
+			md=checkfield(md,'fieldname','snowpack.snowpack_meas_tss','values',[0 1]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_enforce_measured_snow_heights','values',[0 1]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_sw_mode','values',[0 1 2]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_incoming_longwave','values',[0 1]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_height_of_wind_value','>=',0);
+			md=checkfield(md,'fieldname','snowpack.snowpack_height_of_meteo_values','>=',0);
+			md=checkfield(md,'fieldname','snowpack.snowpack_neutral','values',[-1 0 1]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_roughness_length','>=',0);
+			md=checkfield(md,'fieldname','snowpack.snowpack_number_slopes','values',[1 3 5 9]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_snow_redistribution','values',[0 1]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_calculation_step_length','>',0);
+			md=checkfield(md,'fieldname','snowpack.snowpack_change_bc','values',[0 1]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_thresh_change_bc','<=',0);
+			md=checkfield(md,'fieldname','snowpack.snowpack_snp_soil','values',[0 1]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_soil_flux','values',[0 1]);
+			md=checkfield(md,'fieldname','snowpack.snowpack_geo_heat','>=',0);
+			md=checkfield(md,'fieldname','snowpack.snowpack_canopy','values',[0 1]);
+			%}}}
+			%snowpackadvanced:  %{{{
+			md=checkfield(md,'fieldname','snowpack.snowpackadvanced_variant','values',{'JAPAN','DEFAULT','ANTARCTICA'});
+			md=checkfield(md,'fieldname','snowpack.snowpackadvanced_hn_density','values',{'PARAMETERIZED','EVENT','MEASURED'});
+			%}}}
+			%general:  %{{{
+			md=checkfield(md,'fieldname','snowpack.general_buff_chunk_size','>',0);
+			md=checkfield(md,'fieldname','snowpack.general_buff_before','>',0);
+			%}}}
+			%input {{{
+			md=checkfield(md,'fieldname','snowpack.input_coordsys','values',{'CH1903','UTM','UPS','PROJ4','LOCAL'});
+			md=checkfield(md,'fieldname','snowpack.input_coordparam','values','null');
+			md=checkfield(md,'fieldname','snowpack.input_time_zone','>',-12,'<',12);
+			md=checkfield(md,'fieldname','snowpack.input_meteo','values',{'BORMA','COSMO','GEOTOP','GRIB','GSN','IMIS','SMET','SNOWPACK'});
+			md=checkfield(md,'fieldname','snowpack.input_meteopath','empty',1);
+			md=checkfield(md,'fieldname','snowpack.input_station1 ','empty',1);
+			md=checkfield(md,'fieldname','snowpack.input_snowfile1','empty',1);
+			%}}}
+			%output {{{
+			md=checkfield(md,'fieldname','snowpack.output_coordsys','values',{'CH1903','UTM','UPS','PROJ4','LOCAL'});
+			md=checkfield(md,'fieldname','snowpack.output_coordparam','values','null');
+			md=checkfield(md,'fieldname','snowpack.output_time_zone','>',-12,'<',12);
+			md=checkfield(md,'fieldname','snowpack.output_meteopath','empty',1);
+			md=checkfield(md,'fieldname','snowpack.output_experiment','empty',1);
+			md=checkfield(md,'fieldname','snowpack.output_ts_write','values',[0 1]);
+			md=checkfield(md,'fieldname','snowpack.output_ts_start','>=',0);
+			md=checkfield(md,'fieldname','snowpack.output_ts_days_between','>=',0);
+			md=checkfield(md,'fieldname','snowpack.output_profile','values',{'ASCII','IMIS','ASCII IMIS'});
+			md=checkfield(md,'fieldname','snowpack.output_prof_write','values',[0 1]);
+			md=checkfield(md,'fieldname','snowpack.output_prof_start','>=',0);
+			md=checkfield(md,'fieldname','snowpack.output_prof_days_between','>=',0);
+			%}}}
+			%interpolations1d %{{{
+			md=checkfield(md,'fieldname','snowpack.interpolations1d_window_size','>',0);
+			md=checkfield(md,'fieldname','snowpack.interpolations1d_hnw_resample','values',{'NONE','NEAREST_NEIGHBOUR','ACCUMULATE','LINEAR'});
+			md=checkfield(md,'fieldname','snowpack.interpolations1d_hs_resample','values',{'NONE','NEAREST_NEIGHBOUR','ACCUMULATE','LINEAR'});
+			md=checkfield(md,'fieldname','snowpack.interpolations1d_tsg_resample','values',{'NONE','NEAREST_NEIGHBOUR','ACCUMULATE','LINEAR'});
+			md=checkfield(md,'fieldname','snowpack.interpolations1d_rho_hn_resample','values',{'NONE','NEAREST_NEIGHBOUR','ACCUMULATE','LINEAR'});
+			md=checkfield(md,'fieldname','snowpack.interpolations1d_vw_resample','values',{'NONE','NEAREST_NEIGHBOUR','ACCUMULATE','LINEAR'});
+			md=checkfield(md,'fieldname','snowpack.interpolations1d_vw_args','values',{'EXTRAPOLATE'});
+			%}}}
+			%filters {{{
+			filter_values={'MIN_MAX','RATE_FILTER1','RATE_FILTER2','UNHEATED_RAIN_GAUGE_FILTER','WMO_UNDERCATCH_FILTER','WMO_UNDERCATCH_FILTER-SIMPLIFIED','UNVENTILLATED_TEMPERATURE_SENSOR','ADD_AN_OFFSET'};
+
+			md=checkfield(md,'fieldname','snowpack.filters_ta_filter1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_ta_filter1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_ta_filter1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_ta_arg1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_ta_arg1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_ta_arg1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_rh_filter1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_rh_filter1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_rh_filter1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_rh_arg1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_rh_arg1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_rh_arg1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_rh_filter2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_rh_filter2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_rh_filter2','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_rh_arg2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_rh_arg2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_rh_arg2','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_iswr_filter1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_iswr_filter1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_iswr_filter1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_iswr_arg1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_iswr_arg1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_iswr_arg1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_iswr_filter2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_iswr_filter2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_iswr_filter2','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_iswr_arg2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_iswr_arg2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_iswr_arg2','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_rswr_filter1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_rswr_filter1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_rswr_filter1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_rswr_arg1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_rswr_arg1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_rswr_arg1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_rswr_filter2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_rswr_filter2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_rswr_filter2','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_rswr_arg2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_rswr_arg2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_rswr_arg2','size',[1 NaN]); end
+
+			%for ta between 190 and 280 k;
+			md=checkfield(md,'fieldname','snowpack.filters_ilwr_filter1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_ilwr_filter1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_ilwr_filter1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_ilwr_arg1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_ilwr_arg1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_ilwr_arg1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_ilwr_filter2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_ilwr_filter2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_ilwr_filter2','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_ilwr_arg2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_ilwr_arg2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_ilwr_arg2','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_tss_filter1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_tss_filter1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_tss_filter1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_tss_arg1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_tss_arg1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_tss_arg1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_tsg_filter1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_tsg_filter1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_tsg_filter1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_tsg_arg1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_tsg_arg1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_tsg_arg1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_vw_filter1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_vw_filter1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_vw_filter1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_vw_arg1','values',{filter_values});
+			if strcmpi(md.snowpack.filters_vw_arg1,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_vw_arg1','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_vw_filter2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_vw_filter2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_vw_filter2','size',[1 NaN]); end
+			md=checkfield(md,'fieldname','snowpack.filters_vw_arg2','values',{filter_values});
+			if strcmpi(md.snowpack.filters_vw_arg2,'MIN_MAX'), md=checkfield(md,'fieldname','snowpack.filters_vw_arg2','size',[1 NaN]); end
+
+			%}}}
+		end % }}}
+		function disp(self) % {{{
+
+			disp(sprintf('   Snowpack solution parameters:'));
+			disp(sprintf('\n	%s','Snowpack parameters:')); % {{{
+			fielddisplay(self,'snowpack_meas_tss',{'A measured surface temperature is available and can be reliably ','used for various consistency tests (it needs to be set to true if enabling CHANGE_BC) (0 or 1)'});
+			fielddisplay(self,'snowpack_enforce_measured_snow_heights','Input mode by which a measurement of snow depth is used to drive the snow cover mass balance (0 or 1)');
+			fielddisplay(self,'snowpack_sw_mode',{'Define the shortwave radiation input:',...
+				'0 Incoming shortwave radiation is measured and albedo estimated by the model',...
+				'1 Reflected shortwave radiation is available as input and albedo is estimated by the model (IMIS standard)',...
+				'2 Incoming and reflected shortwave radiation are both measured and the albedo is estimated from both measurements subject to plausibility checks.'});
+			fielddisplay(self,'snowpack_incoming_longwave','Use the provided incoming long wave on the virtual slopes? (0 or 1)');
+			fielddisplay(self,'snowpack_height_of_wind_value',{'The instrument height (or model layer height) for wind input data; note that height ',...
+				'is above ground for a standard SNOWPACK application but above surface (snow or ground) for Alpine3D applications '});
+			fielddisplay(self,'snowpack_height_of_meteo_values',{'The instrument height (or model layer height) for meteorological input data except for wind,',...
+				'which may be at a different height; note that height is above ground for a standard SNOWPACK ',...
+				'application but above surface (snow or ground) for Alpine3D applications. '});
+			fielddisplay(self,'snowpack_neutral',{'Select the atmospheric stability correction model:',...
+				'-1 use a simplified Richardson number stability correction',...
+				'0 assume standard Monin-Obukhov bulk formulation for surface exchange iteration with Paulson, Stearns and Weidner (can be used with BC_CHANGE=0)',...
+				'1 force Monin-Obukhov formulation to assume neutral conditions regardless of the actual stratification; it has been shown to work well in ',...
+				'complex terrain settings. It should be used with BC_CHANGE=1, i.e., Dirichlet /* but also is recommended with Neumann b.c., i.e., BC_CHANGE=0.'});
+			fielddisplay(self,'snowpack_roughness_length',{'Aerodynamic roughness length as a parameter for the Monin-Obukhov bulk formulation;',...
+				'A typical value for complex terrain is 0.01 m and for snow covered flat sites 0.001 m. '});
+			fielddisplay(self,'snowpack_number_slopes',{'Based on meteorological input from a (flat field) automatic station or numerical weather model,',...
+				'up to 8 expositions can be calculated in addition to the flat field if the corresponding *.sno files are provided. For example,',...
+				'if you provide a flat field *.snow file (mandatory), which is named KLO3.sno and you want 4 slopes to be calculated the corresponding',...
+				'slope files should be named KLO21.sno, ...,KLO24.sno '});
+			fielddisplay(self,'snowpack_snow_redistribution',{'Specifies if redistribution of snow is allowed from (upwind) expositions to lee slopes.',...
+				'In case just the flat field is calculated, snow erosion is enabled but only for "ENFORCE_MEASURED_SNOW_HEIGHTS".'});
+				fielddisplay(self,'snowpack_calculation_step_length',{'Internal time step (in minutes) used for model simulation. Please note that this MUST ',...
+				'be the same as HNW::accumulate (the latter being in seconds) if re-acumulating precipitation, otherwise it would lead to wrong results.'});
+			fielddisplay(self,'snowpack_change_bc',{'Use measured surface temperature as Dirichlet temperature BC for sub-freezing snowpacks and switch to ',...
+			'Neumann only for melting snowpacks. If set to false, assumes Neumann boundary conditions.'});
+			fielddisplay(self,'snowpack_thresh_change_bc','Threshold value (small number below freezing), which switches from Dirichlet to Neumann BCs if CHANGE_BC is selected');
+			fielddisplay(self,'snowpack_snp_soil','Soil layers as defined by the *.sno files are included in the simulation');
+			fielddisplay(self,'snowpack_soil_flux','Assume that the lower temperature boundary condition is given by GEO_HEAT (Neumann) and not by a measured temperature');
+			fielddisplay(self,'snowpack_geo_heat','Constant geothermal heat flux at great) depth W m-2): Lower flux boundary condition for temperature equation if BC is Neumann');
+			fielddisplay(self,'snowpack_canopy','Switch to tell the model that canopy is present (note that Canopy parameters should then be provided in the *.sno file)');
+			% }}}
+			disp(sprintf('\n	%s','Snowpackadvanced parameters:')); % {{{
+			fielddisplay(self,'snowpackadvanced_variant','variant selection (includes a choice of specific models, DEFAULT, ANTARCTICA and JAPAN )'); % use 320 kg m-3 for fixed density
+			fielddisplay(self,'snowpackadvanced_hn_density',{'Fixed value to be used as new snow density if a constant density model is chosen, otherwise the choices are "PARAMETERIZED" "EVENT" "MEASURED"'});
+			% }}}
+			disp(sprintf('\n	%s','General parameters:')); % {{{
+			fielddisplay(self,'general_pluginpath','');
+			fielddisplay(self,'general_buff_chunk_size','Size in days of a chunk of data to read at once.');
+			fielddisplay(self,'general_buff_before','Alternate way of buffer centering: When rebuffering, the new date will be located BUFF_BEFORE days from the beginning of the buffer (therefore, it takes a value in days). ');
+			% }}}
+			disp(sprintf('\n	%s','Input  parameter:')); % {{{
+			fielddisplay(self,'input_coordsys','coordinates in the Swiss Grid (http://geomatics.ladetto.ch/ch1903_wgs84_de.pdf). One of CH1903,UTM,UPS,PROJ4 or LOCAL');
+			fielddisplay(self,'input_coordparam',' ');
+			fielddisplay(self,'input_time_zone',' ');
+			fielddisplay(self,'input_meteo','plugin for METEO data (one of BORMA,COSMO,GEOTOP,GRIB,GS,IMIS,SMET,SNOWPACK');
+			fielddisplay(self,'input_meteopath','string containing the path to the xml files.');
+			fielddisplay(self,'input_station1','Meteorology file for station number #');
+			fielddisplay(self,'input_snowfile1','File name for the initial snow profile for station number #');
+			% }}}
+			disp(sprintf('\n	%s','Output parameters:')); % {{{
+			fielddisplay(self,'output_coordsys','Coordinates in the Swiss Grid http://geomatics.ladetto.ch/ch1903_wgs84_de.pdf. One of CH1903,UTM,UPS,PROJ4 or LOCAL ');
+			fielddisplay(self,'output_coordparam','');
+			fielddisplay(self,'output_time_zone','');
+			fielddisplay(self,'output_meteopath','Path to the outputs (this path MUST exist, it won''t be created)');
+			fielddisplay(self,'output_experiment','Option to give an additional simulation specific output name to the run in addition to "STATION_NAME"');
+			fielddisplay(self,'output_ts_write','Write meteo data out? (0 or 1)');
+			fielddisplay(self,'output_ts_start','When to start writing meteo data out (offset, in days)');
+			fielddisplay(self,'output_ts_days_between','How often to write meteo data out (in days: 3 hours=.125, 1 hour=4.1666e-2)');
+			fielddisplay(self,'output_profile','How to write the profiles (default: ASCII, choice is ASCII,IMIS or ASCII IMIS)');
+)');
+			fielddisplay(self,'output_prof_write','Write profile data out? (0 or 1) ');
+			fielddisplay(self,'output_prof_start','When to start writing profile data out (offset, in days)');
+			fielddisplay(self,'output_prof_days_between','How often to write profile data out (in days: 3 hours=.125, 1 hour=4.1666e-2)');
+			% }}}
+			disp(sprintf('\n	%s','Interpolations1d parameters:')); % {{{
+			fielddisplay(self,'interpolations1d_window_size','Affects resampling: expresses (in seconds) how far a valid point can be searched for when re-interpolating a missing value'); 
+			fielddisplay(self,'interpolations1d_hnw_resample','NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR');
+ ');
+			fielddisplay(self,'interpolations1d_hs_resample','Mean average processing. The mean average filter returns the mean value of all values within a user given time window. (NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR)');
+			fielddisplay(self,'interpolations1d_tsg_resample','Mean average processing. The mean average filter returns the mean value of all values within a user given time window.(NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR)');
+			fielddisplay(self,'interpolations1d_rho_hn_resample','(NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR)');
+			fielddisplay(self,'interpolations1d_vw_resample','(NONE, NEAREST_NEIGHBOUR, ACCUMULATE or LINEAR)');
+			fielddisplay(self,'interpolations1d_vw_args','default nothing, otherwise, ''extrapolcate''');
+			% }}}
+			disp(sprintf('\n	%s','Filters parameters:')); % {{{
+			fielddisplay(self,'filters_ta_filter1',' ');
+			fielddisplay(self,'filters_ta_arg1','');
+			fielddisplay(self,'filters_rh_filter1',' ');
+			fielddisplay(self,'filters_rh_arg1','');
+			fielddisplay(self,'filters_rh_filter2',' ');
+			fielddisplay(self,'filters_rh_arg2','');
+			fielddisplay(self,'filters_iswr_filter1',' ');
+			fielddisplay(self,'filters_iswr_arg1','');
+			fielddisplay(self,'filters_iswr_filter2',' ');
+			fielddisplay(self,'filters_iswr_arg2','');
+			fielddisplay(self,'filters_rswr_filter1',' ');
+			fielddisplay(self,'filters_rswr_arg1','');
+			fielddisplay(self,'filters_rswr_filter2',' ');
+			fielddisplay(self,'filters_rswr_arg2','');
+
+			%for ta between 190 and 280 k;
+			fielddisplay(self,'filters_ilwr_filter1',' ');
+			fielddisplay(self,'filters_ilwr_arg1','');
+			fielddisplay(self,'filters_ilwr_filter2',' ');
+			fielddisplay(self,'filters_ilwr_arg2','');
+			fielddisplay(self,'filters_tss_filter1',' ');
+			fielddisplay(self,'filters_tss_arg1','');
+			fielddisplay(self,'filters_tsg_filter1',' ');
+			fielddisplay(self,'filters_tsg_arg1','');
+			fielddisplay(self,'filters_vw_filter1',' ');
+			fielddisplay(self,'filters_vw_arg1','');
+			fielddisplay(self,'filters_vw_filter2',' ');
+			fielddisplay(self,'filters_vw_arg2','');
+			% }}}
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','restol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','reltol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','abstol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','isnewton','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','FSreconditioning','format','Double');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','shelf_dampening','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','vertex_pairing','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','penalty_factor','format','Double');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','rift_penalty_lock','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','rift_penalty_threshold','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','referential','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','snowpack','fieldname','requested_outputs','format','StringArray');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearth.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearth.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearth.js	(revision 27955)
@@ -0,0 +1,135 @@
+class solidearth {//{{{
+	/**
+	 * SOLIDEARTH class definition
+	 *
+	 * Usage:
+	 *     solidearth = solidearth();
+	 *     solidearth = solidearth('earth');
+	 */
+	constructor() {//{{{
+		this.settings = new solidearthsettings();
+		this.external = null;
+		this.lovenumbers = new lovenumbers();
+		this.rotational = new rotational();
+		this.planetradius = planetradius('earth');
+		this.requested_outputs = [];
+		this.transitions = [];
+		this.partitionice = [];
+		this.partitionhydro = [];
+		this.partitionocean = [];
+
+		let nargs = arguments.length;
+		if (nargs == 0) {
+			this.setdefaultparameters('earth');
+		} else if (nargs == 1) {
+			this.setdefaultparameters(arguments[0]);
+		} else {
+			error('solidearth constructor error message: zero or one argument only!');
+		}
+	} //}}}
+
+	disp() {//{{{
+		console.log('WARNING: solidearth::disp is not yet implemented');
+	} //}}}
+
+	setdefaultparameters(planet) {//{{{
+		// Output default
+		this.requested_outputs = ['default'];
+
+		// Transitions should be an array
+		this.transitions = [];
+
+		// No partitions requested for barystatic contribution
+		this.partitionice = [];
+		this.partitionhydro = [];
+		this.partitionocean = [];
+
+		// No external solutions by default
+		this.external = null;
+
+		// Planet radius
+		this.planetradius = planetradius(planet);
+	} //}}}
+
+	checkconsistency(md, solution, analyses) {//{{{
+		if (!analyses.includes('SealevelchangeAnalysis') || (solution === 'TransientSolution' && !md.transient.isslc)) {
+			return md;
+		}
+
+		md = checkfield(md, 'fieldname', 'solidearth.requested_outputs', 'stringrow', 1);
+
+		this.settings.checkconsistency(md, solution, analyses);
+		this.lovenumbers.checkconsistency(md, solution, analyses);
+		this.rotational.checkconsistency(md, solution, analyses);
+
+		if (this.external != null) {
+			if (typeof(this.external) != 'solidearthsolution') {
+				error('solidearth consistency check: external field should be a solidearthsolution');
+			}
+		}
+
+		return md;
+	} //}}}
+
+	defaultoutputs(md) {//{{{
+		return ['Sealevel'];
+	} //}}}
+
+	marshall(md, prefix, fid) {//{{{
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'planetradius', 'format', 'Double');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'transitions', 'format', 'MatArray');
+
+		let npartice = 0;
+		if (this.partitionice.length) {
+			npartice = max(this.partitionice) + 2;
+		}
+
+		let nparthydro = 0;
+		if (this.partitionhydro.length) {
+			nparthydro = max(this.partitionhydro) + 2;
+		}
+
+		let npartocean = 0;
+		if (this.partitionocean.length) {
+			npartocean = max(this.partitionocean) + 2;
+		}
+
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'partitionice', 'mattype', 1, 'format', 'DoubleMat');
+		WriteData(fid, prefix, 'data', npartice, 'format', 'Integer', 'name', 'md.solidearth.npartice');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'partitionhydro', 'mattype', 1, 'format', 'DoubleMat');
+		WriteData(fid, prefix, 'data', nparthydro, 'format', 'Integer', 'name', 'md.solidearth.nparthydro');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'partitionocean', 'mattype', 1, 'format', 'DoubleMat');
+		WriteData(fid, prefix, 'data', npartocean, 'format', 'Integer', 'name', 'md.solidearth.npartocean');
+
+		this.settings.marshall(md, prefix, fid);
+		this.lovenumbers.marshall(md, prefix, fid);
+		this.rotational.marshall(md, prefix, fid);
+
+		if (this.external != null) {
+			WriteData(fid, prefix, 'data', 1, 'format', 'Integer', 'name', 'md.solidearth.isexternal');
+			this.external.marshall(md, prefix, fid);
+		} else {
+			WriteData(fid, prefix, 'data', 0, 'format', 'Integer', 'name', 'md.solidearth.isexternal');
+		}
+
+		// Process requested outputs
+		let outputs = this.requested_outputs;
+		let pos = find(ismember(outputs, 'default'));
+		if (pos.length) {
+			/*
+			NOTE: In order to handle case where user has added 'default' more 
+			than once to this.requested_outputs, need to remove elements by 
+			index in reverse order.
+			*/
+			for (let i = (pos.length - 1); i >= 0; --i) {
+				outputs.splice(pos[i], 1);
+			}
+
+			outputs.push(this.defaultoutputs(md));
+		}
+		WriteData(fid, prefix, 'data', outputs, 'name', 'md.solidearth.requested_outputs', 'format', 'StringArray');
+	} //}}}
+
+	extrude(md) {//{{{
+	} //}}}
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearth.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearth.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearth.m	(revision 27955)
@@ -0,0 +1,175 @@
+%SOLIDEARTH class definition
+%
+%   Usage:
+%      solidearth=solidearth();
+%      solidearth=solidearth('earth');
+
+classdef solidearth
+	properties (SetAccess=public) 
+		settings          = solidearthsettings();
+		external          = [];
+		lovenumbers       = lovenumbers();
+		rotational        = rotational();
+		planetradius      = planetradius('earth');
+		requested_outputs = {};
+		transitions       = {};
+		transfercount     = [];
+		partitionice      = [];
+		partitionhydro    = [];
+		partitionocean    = [];
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. If the input is a struct it is an old version of this class and
+			% old fields must be recovered (make sure they are in the deprecated
+			% model properties)
+
+			if isstruct(self)
+				% 2021, Jan 10
+				if isfield(self,'sealevel')
+					self.initialsealevel = self.sealevel;
+				end
+				self = structtoobj(solidearth(),self);
+
+			end
+		end% }}}
+	end
+	methods
+		function self = solidearth(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self,'earth');
+				case 1
+					self=setdefaultparameters(self,varargin{:});
+				otherwise
+					error('solidearth constructor error message: zero or one argument only!'); 
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   solidearth inputs, forcings and settings:'));
+
+			fielddisplay(self,'planetradius','planet radius [m]');
+			fielddisplay(self,'transitions','indices into parts of the mesh that will be icecaps');
+			fielddisplay(self,'transfercount','number of icecaps vertices are part of');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+			fielddisplay(self,'partitionice','ice partition vector for barystatic contribution');
+			fielddisplay(self,'partitionhydro','hydro partition vector for barystatic contribution');
+			fielddisplay(self,'partitionocean','ocean partition vector for barystatic contribution');
+			if isempty(self.external), fielddisplay(self,'external','external solution, of the type solidearthsolution'); end
+			self.settings.disp();
+			self.lovenumbers.disp();
+			self.rotational.disp();
+			if ~isempty(self.external),
+				self.external.disp();
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self,planet) % {{{
+
+			%output default:
+			self.requested_outputs={'default'};
+
+			%transitions should be a cell array of vectors:
+			self.transitions={};
+			self.transfercount=[0];
+
+			%no partitions requested for barystatic contribution:
+			self.partitionice=[];
+			self.partitionhydro=[];
+			self.partitionocean=[];
+
+			%no external solutions by default:
+			self.external=[];
+
+			%planet radius
+			self.planetradius= planetradius(planet);
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ismember('SealevelchangeAnalysis',analyses) | (strcmp(solution,'TransientSolution') & md.transient.isslc==0), 
+				return; 
+			end
+
+			md = checkfield(md,'fieldname','solidearth.requested_outputs','stringrow',1);
+
+			self.settings.checkconsistency(md,solution,analyses);
+			self.lovenumbers.checkconsistency(md,solution,analyses);
+			self.rotational.checkconsistency(md,solution,analyses);
+			if ~isempty(self.external),
+				if ~isa(self.external,'solidearthsolution'),
+					error('solidearth consistency check: external field should be a solidearthsolution');
+				end
+				self.external.checkconsistency(md,solution,analyses);
+			end
+
+		end % }}}
+		function list=defaultoutputs(self,md) % {{{
+			list = {'Sealevel'};
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'object',self,'fieldname','planetradius','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','transitions','format','MatArray');
+			WriteData(fid,prefix,'object',self,'fieldname','transfercount','format','DoubleMat','mattype',1);
+
+			if ~isempty(self.partitionice),
+				npartice=max(self.partitionice)+2;
+			else
+				npartice=0;
+			end
+
+			if ~isempty(self.partitionhydro),
+				nparthydro=max(self.partitionhydro)+2;
+			else
+				nparthydro=0;
+			end
+			if ~isempty(self.partitionocean),
+				npartocean=max(self.partitionocean)+2;
+			else
+				npartocean=0;
+			end
+
+			WriteData(fid,prefix,'object',self,'fieldname','partitionice','mattype',1,'format','DoubleMat');
+			WriteData(fid,prefix,'data',npartice,'format','Integer','name','md.solidearth.npartice');
+			WriteData(fid,prefix,'object',self,'fieldname','partitionhydro','mattype',1,'format','DoubleMat');
+			WriteData(fid,prefix,'data',nparthydro,'format','Integer','name','md.solidearth.nparthydro');
+			WriteData(fid,prefix,'object',self,'fieldname','partitionocean','mattype',1,'format','DoubleMat');
+			WriteData(fid,prefix,'data',npartocean,'format','Integer','name','md.solidearth.npartocean');
+
+			self.settings.marshall(prefix,md,fid);
+			self.lovenumbers.marshall(prefix,md,fid);
+			self.rotational.marshall(prefix,md,fid);
+			if ~isempty(self.external),
+				WriteData(fid,prefix,'data',1,'format','Integer','name','md.solidearth.isexternal');
+				self.external.marshall(prefix,md,fid);
+			else
+				WriteData(fid,prefix,'data',0,'format','Integer','name','md.solidearth.isexternal');
+			end
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.solidearth.requested_outputs','format','StringArray');
+
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			self.settings.savemodeljs(fid,modelname);
+			self.lovenumbers.savemodeljs(fid,modelname);
+			self.rotational.savemodeljs(fid,modelname);
+			if ~isempty(self.external),
+				self.external.savemodeljs(fid,modelname);
+			end
+			writejscellstring(fid,[modelname '.solidearth.requested_outputs'],self.requested_outputs);
+			writejscellarray(fid,[modelname '.solidearth.transitions'],self.transitions);
+			writejscellarray(fid,[modelname '.solidearth.partition'],self.partition);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearth.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearth.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearth.py	(revision 27955)
@@ -0,0 +1,154 @@
+import numpy as np
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from lovenumbers import lovenumbers
+from MatlabFuncs import *
+from planetradius import planetradius
+from rotational import rotational
+from solidearthsettings import solidearthsettings
+from solidearthsolution import solidearthsolution
+from WriteData import WriteData
+
+
+class solidearth(object):
+    """SOLIDEARTH class definition
+
+    Usage:
+        solidearth = solidearth()
+        solidearth = solidearth('earth')
+
+    TODO:
+    - Update translation from solidearth.m
+    """
+
+    def __init__(self, *args):  # {{{
+        self.settings          = solidearthsettings()
+        self.external          = None
+        self.lovenumbers       = lovenumbers()
+        self.rotational        = rotational()
+        self.planetradius      = planetradius('earth')
+        self.requested_outputs = []
+        self.transfercount     = []
+        self.transitions       = []
+        self.partitionice      = []
+        self.partitionhydro    = []
+        self.partitionocean    = []
+
+        nargs = len(args)
+        if nargs == 0:
+            self.setdefaultparameters('earth')
+        elif nargs == 1:
+            self.setdefaultparameters(args[0])
+        else:
+            raise Exception('solidearth constructor error message: zero or one argument only!')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   solidearthinputs, forcings and settings:\n'
+        s += '{}\n'.format(fielddisplay(self, 'planetradius', 'planet radius [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'transitions', 'indices into parts of the mesh that will be icecaps'))
+        s += '{}\n'.format(fielddisplay(self, 'transfercount', 'number of icecaps vertices are part of'))
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        s += '{}\n'.format(fielddisplay(self, 'partitionice', 'ice partition vector for barystatic contribution'))
+        s += '{}\n'.format(fielddisplay(self, 'partitionhydro', 'hydro partition vector for barystatic contribution'))
+        s += '{}\n'.format(fielddisplay(self, 'partitionocean', 'ocean partition vector for barystatic contribution'))
+        if not self.external:
+            s += '{}\n'.format(fielddisplay(self, 'external', 'external solution, of the type solidearthsolution'))
+        print(self.settings)
+        print(self.lovenumbers)
+        print(self.rotational)
+        try:
+            print(self.external)
+        except TypeError:
+            pass
+        return s
+    # }}}
+
+    def setdefaultparameters(self, planet):  # {{{
+        # Output default
+        self.requested_outputs = ['default']
+
+        # Transitions should be a list
+        self.transitions = []
+        self.transfercount = [0]
+
+        # No partitions requested for barystatic contribution
+        self.partitionice = []
+        self.partitionhydro = []
+        self.partitionocean = []
+
+        # No external solutions by default
+        self.external = None
+
+        # Planet radius
+        self.planetradius = planetradius(planet)
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if ('SealevelchangeAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
+            return md
+
+        md = checkfield(md, 'fieldname', 'solidearth.requested_outputs', 'stringrow', 1)
+
+        self.settings.checkconsistency(md, solution, analyses)
+        self.lovenumbers.checkconsistency(md, solution, analyses)
+        self.rotational.checkconsistency(md, solution, analyses)
+        if self.external:
+            if not isa(self.external, solidearthsolution):
+                raise Exception('solidearth consistency check: external field should be a solidearthsolution')
+            self.external.checkconsistency(md, solution, analyses)
+        return md
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return ['Sealevel']
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'planetradius', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'transitions', 'format', 'MatArray')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'transfercount', 'format', 'DoubleMat', 'mattype', 1)
+
+        if len(self.partitionice):
+            npartice = np.max(self.partitionice) + 2
+        else:
+            npartice = 0
+
+        if len(self.partitionhydro):
+            nparthydro = np.max(self.partitionhydro) + 2
+        else:
+            nparthydro = 0
+
+        if len(self.partitionocean):
+            npartocean = np.max(self.partitionocean) + 2
+        else:
+            npartocean = 0
+
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'partitionice', 'mattype', 1, 'format', 'DoubleMat');
+        WriteData(fid, prefix, 'data', npartice, 'format', 'Integer', 'name', 'md.solidearth.npartice');
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'partitionhydro', 'mattype', 1, 'format', 'DoubleMat');
+        WriteData(fid, prefix, 'data', nparthydro,'format', 'Integer', 'name','md.solidearth.nparthydro');
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'partitionocean', 'mattype', 1, 'format', 'DoubleMat');
+        WriteData(fid, prefix, 'data', npartocean,'format', 'Integer', 'name','md.solidearth.npartocean');
+
+        self.settings.marshall(prefix, md, fid)
+        self.lovenumbers.marshall(prefix, md, fid)
+        self.rotational.marshall(prefix, md, fid)
+        if self.external:
+            WriteData(fid, prefix, 'data', 1, 'format', 'Integer', 'name', 'md.solidearth.isexternal')
+            self.external.marshall(prefix, md, fid)
+        else:
+            WriteData(fid, prefix, 'data', 0, 'format', 'Integer', 'name', 'md.solidearth.isexternal')
+
+        # Process requested outputs
+        outputs = self.requested_outputs
+        pos = np.where(np.asarray(outputs) == 'default')[0]
+        if len(pos):
+            outputs = np.delete(outputs, pos) # remove 'default' from outputs
+            outputs = np.append(outputs, self.defaultoutputs(md)) # add defaults
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.solidearth.requested_outputs', 'format', 'StringArray')
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearthsettings.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearthsettings.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearthsettings.js	(revision 27955)
@@ -0,0 +1,145 @@
+class solidearthsettings {//{{{
+	/**
+	 * SOLIDEARTHSETTINGS class definition
+	 *
+	 * Usage:
+	 *     solidearthsettings = solidearthsettings();
+	 */
+	constructor() {//{{{
+		this.reltol					= 0;
+		this.abstol					= 0;
+		this.maxiter				= 0;
+		this.selfattraction			= 1;
+		this.elastic				= 1;
+		this.viscous				= 1;
+		this.rotation				= 1;
+		this.grdocean				= 1;
+		this.ocean_area_scaling		= 0;
+		this.runfrequency			= 1; // How many time steps will we skip before we run grd_core
+		this.sealevelloading		= 1; // Will sea-level loads be computed?
+		this.isgrd					= 0; // Will GRD patterns be computed?
+		this.compute_bp_grd			= 0; // Will GRD patterns for bottom pressures be computed?
+		this.degacc					= 0; // Degree increment for resolution of Green tables
+		this.timeacc				= 0; // Time step accuracy required to compute Green tables
+		this.horiz					= 0; // Compute horizontal deformation
+		this.grdmodel				= 0; // GRD model (0 by defualt, 1 for (visco-)elastic, 2 for Ivins)
+		this.cross_section_shape	= 0; // Cross section only used when GRD model is Ivins
+
+		if (arguments.length == 0) {
+			this.setdefaultparameters();
+		} else {
+			error('constructor not supported');
+		}
+	} //}}}
+
+	disp() {//{{{
+		console.log('WARNING: solidearthsettings::disp is not yet implemented');
+	} //}}}
+
+	setdefaultparameters() {//{{{
+		// Convergence criterion: absolute, relative, and residual
+		this.restol = 0.01; // 1 percent
+		this.abstol = NaN;
+
+		// Maximum of non-linear iterations
+		this.maxiter = 5;
+
+		// Computational flags
+		this.selfattraction = 1;
+		this.elastic = 1;
+		this.viscous = 1;
+		this.rotation = 1;
+		this.grdocean = 1;
+		this.ocean_area_scaling = 0;
+		this.compute_bp_grd = 0;
+		this.isgrd = 0;
+		this.sealevelloading = 1;
+
+		// Numerical discretiztion accuracy
+		this.degacc = 0.01;
+		this.timeacc = 1;
+
+		// How many time steps we skip before we run solidearthsettings solver during transient
+		this.runfrequency = 1;
+
+		// Horizontal displacement? (not on by default)
+		this.horiz = 0;
+
+		// Cross section for Ivins model
+		this.cross_section_shape = 1; // Square as default (see idege in GiaDeflectionCorex)
+
+		// No GRD model by default
+		this.grdmodel = 0;
+	} //}}}
+
+	checkconsistency(md, solution, analyses) {//{{{
+		if (!analyses.includes('SealevelchangeAnalysis') || (solution === 'TransientSolution' && !md.transient.isslc)) {
+			return md;
+		}
+
+		md = checkfield(md, 'fieldname', 'solidearth.settings.reltol', 'size', [1]);
+		md = checkfield(md, 'fieldname', 'solidearth.settings.abstol', 'size', [1]);
+		md = checkfield(md, 'fieldname', 'solidearth.settings.maxiter', 'size', [1], '>=', 1);
+		md = checkfield(md, 'fieldname', 'solidearth.settings.runfrequency', 'size', [1], '>=', 1);
+		md = checkfield(md, 'fieldname', 'solidearth.settings.degacc', 'size', [1], '>=', 1e-10);
+		md = checkfield(md, 'fieldname', 'solidearth.settings.timeacc', 'size', [1], '>', 0);
+		md = checkfield(md, 'fieldname', 'solidearth.settings.horiz', 'NaN', 1, 'Inf', 1, 'values', [0, 1]);
+		md = checkfield(md, 'fieldname', 'solidearth.settings.grdmodel', '>=', 0, '<=', 2);
+		md = checkfield(md, 'fieldname', 'solidearth.settings.cross_section_shape', 'numel', [1], 'values', [1, 2]);
+
+		// Checks on computational flags
+		if (this.elastic && !this.rigid) {
+			error('solidearthsettings checkconsistency error message: need rigid on if elastic flag is set');
+		}
+		if (this.viscous && !this.elastic) {
+			error('solidearthsettings checkconsistency error message: need elastic on if viscous flag is set');
+		}
+
+		// A GRD computation has been requested, make some checks on the nature of the meshes provided
+		if (this.isgrd) {
+			if (strcmpi(typeof(md.mesh), 'mesh3dsurface')) {
+				if (this.grdmodel == 2) {
+					error('model requires a 2D mesh to run gia Ivins computations (change mesh from mesh3dsurface to mesh2d)');
+				}
+			} else {
+				if (this.grdmodel == 1) {
+					error('model requires a 3D surface mesh to run GRD computations (change mesh from mesh2d to mesh3dsurface)');
+				}
+			}
+			
+			if (this.sealevelloading && !this.grdocean) {
+				error('solidearthsettings checkconsistency error message: need grdocean on if sealevelloading flag is set');
+			}
+		}
+
+		if (this.compute_bp_grd && !md.solidearth.settings.isgrd) {
+			error('solidearthsettings checkconsistency error message; if bottom pressure grd patterns are requested, solidearth settings class should have isgrd flag on');
+		}
+
+		return md;
+	} //}}}
+
+	marshall(md, prefix, fid) {//{{{
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'reltol', 'name', 'md.solidearth.settings.reltol', 'format', 'Double');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'abstol', 'name', 'md.solidearth.settings.abstol', 'format', 'Double');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'maxiter', 'name', 'md.solidearth.settings.maxiter', 'format', 'Integer');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'selfattraction', 'name', 'md.solidearth.settings.selfattraction', 'format', 'Boolean');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'elastic', 'name', 'md.solidearth.settings.elastic', 'format', 'Boolean');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'viscous', 'name', 'md.solidearth.settings.viscous', 'format', 'Boolean');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'rotation', 'name', 'md.solidearth.settings.rotation', 'format', 'Boolean');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'grdocean', 'name', 'md.solidearth.settings.grdocean', 'format', 'Boolean');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'ocean_area_scaling', 'name', 'md.solidearth.settings.ocean_area_scaling', 'format', 'Boolean');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'runfrequency', 'name', 'md.solidearth.settings.runfrequency', 'format', 'Integer');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'degacc', 'name', 'md.solidearth.settings.degacc', 'format', 'Double');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'timeacc', 'name', 'md.solidearth.settings.timeacc', 'format', 'Double', 'scale', md.constants.yts);
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'horiz', 'name', 'md.solidearth.settings.horiz', 'format', 'Integer');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'sealevelloading', 'name', 'md.solidearth.settings.sealevelloading', 'format', 'Integer');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'isgrd', 'name', 'md.solidearth.settings.isgrd', 'format', 'Integer');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'compute_bp_grd', 'name', 'md.solidearth.settings.compute_bp_grd', 'format', 'Integer');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'grdmodel', 'name', 'md.solidearth.settings.grdmodel', 'format', 'Integer');
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'cross_section_shape', 'name', 'md.solidearth.settings.cross_section_shape', 'format', 'Integer');
+	} //}}}
+
+	extrude(md) {//{{{
+	} //}}}
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearthsettings.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearthsettings.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearthsettings.m	(revision 27955)
@@ -0,0 +1,204 @@
+%SOLIDEARTHSETTINGS class definition
+%
+%   Usage:
+%      solidearthsettings=solidearthsettings();
+
+classdef solidearthsettings
+	properties (SetAccess=public)
+		reltol                 = 0;
+		abstol                 = 0;
+		maxiter                = 0;
+		selfattraction         = 1;
+		elastic                = 1;
+		viscous                = 1;
+		rotation               = 1;
+		grdocean               = 1;
+		ocean_area_scaling     = 0;
+		runfrequency           = 1; %how many time steps we skip before we run grd_core
+		sealevelloading        = 1; %will sea-level loads be computed? 
+		isgrd                  = 0; %will GRD patterns be computed? 
+		compute_bp_grd         = 0; %will GRD patterns for bottom pressures be computed? 
+		degacc                 = 0; %degree increment for resolution of Green tables.
+		timeacc                = 1; %time step accuracy required to compute Green tables
+		horiz                  = 0; %compute horizontal deformation
+		grdmodel               = 1; %grd model (0 by default, 1 for (visco-)elastic, 2 for Ivins)
+		cross_section_shape    = 0; %cross section only used when grd model is Ivins
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. If the input is a struct it is an old version of this class and
+			% old fields must be recovered (make sure they are in the deprecated
+			% model properties)
+
+			if isstruct(self)
+				% 2021, Jun 4
+				if isfield(self,'rigid')
+					self.selfattraction = self.rigid;
+				end
+				if isfield(self,'computesealevelchange')
+					self.sealevelloading = self.computesealevelchange;
+				end
+				self = structtoobj(solidearthsettings(),self);
+
+			end
+		end% }}}
+	end
+	methods
+
+		function self = solidearthsettings(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Convergence criterion: absolute, relative and residual
+			self.reltol=0.01; % 1 percent
+			self.abstol=NaN;  % default
+
+			%maximum of non-linear iterations.
+			self.maxiter=5;
+
+			%computational flags:
+			self.selfattraction=1;
+			self.elastic=1;
+			self.viscous=1;
+			self.rotation=1;
+			self.grdocean=1;
+			self.ocean_area_scaling=0;
+			self.compute_bp_grd=0;
+			self.isgrd=0;
+			self.sealevelloading=1;
+
+			%numerical discretization accuracy
+			self.degacc=.01;
+			self.timeacc=1; 
+
+			%how many time steps we skip before we run solidearthsettings solver during transient
+			self.runfrequency=1;
+
+			%horizontal displacement? (not on by default)
+			self.horiz=0;
+
+			%cross section for Ivins model
+			self.cross_section_shape=1; %square as default (see iedge in GiaDeflectionCorex)
+
+			%grd model by default
+			self.grdmodel=1;
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   solidearth settings:'));
+			disp(sprintf('      core:'));
+			fielddisplay(self,'isgrd','compute GRD patterns (default: 1)');
+			fielddisplay(self,'grdmodel','type of deformation model, 0 for no GRD, 1 for spherical GRD model (SESAW model), 2 for half-space planar GRD (visco-elastic model from Ivins)');
+			fielddisplay(self,'runfrequency','How many time steps we let masstransport core accumulate changes before each run of the sealevelchange core (default: 1, i.e run slc every time step)');
+			disp(sprintf('      computational flags:'));
+			fielddisplay(self,'selfattraction','enables surface mass load to perturb the gravity field');
+			fielddisplay(self,'elastic','enables elastic deformation from surface loading');
+			fielddisplay(self,'viscous','enables viscous deformation from surface loading');
+			fielddisplay(self,'rotation','enables polar motion to feedback on the GRD fields');
+			fielddisplay(self,'compute_bp_grd','compute GRD patterns for bottom pressure loads (default: 1)');
+			fielddisplay(self,'cross_section_shape','1: square-edged (default). 2: elliptical. See iedge in GiaDeflectionCore. Used only for grdmodel=2 only');
+			disp(sprintf('      resolution:'));
+			fielddisplay(self,'degacc','spatial accuracy (default: .01 deg) for numerical discretization of the Green''s functions');
+			fielddisplay(self,'timeacc','time accuracy (default: 1 yr) for numerical discretization of the Green''s functions');
+			disp(sprintf('      sea-level equation:'));
+			fielddisplay(self,'grdocean','does this planet have an ocean, if set to 1: global water mass is conserved in GRD module (default: 1)'); 
+			fielddisplay(self,'sealevelloading','enables surface loading from sea-level change (default: 1)');
+			fielddisplay(self,'maxiter','maximum number of nonlinear iterations');
+			fielddisplay(self,'reltol','sea level change relative convergence criterion (default, NaN: not applied)');
+			fielddisplay(self,'abstol','sea level change absolute convergence criterion(default, NaN: not applied)');
+			fielddisplay(self,'ocean_area_scaling','correction for model representation of ocean area (default: No correction)'); 
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ismember('SealevelchangeAnalysis',analyses) | (strcmp(solution,'TransientSolution') & md.transient.isslc==0), 
+				return; 
+			end
+			md = checkfield(md,'fieldname','solidearth.settings.reltol','size',[1 1]);
+			md = checkfield(md,'fieldname','solidearth.settings.abstol','size',[1 1]);
+			md = checkfield(md,'fieldname','solidearth.settings.maxiter','size',[1 1],'>=',1);
+			md = checkfield(md,'fieldname','solidearth.settings.runfrequency','size',[1 1],'>=',1);
+			md = checkfield(md,'fieldname','solidearth.settings.degacc','size',[1 1],'>=',1e-10);
+			md = checkfield(md,'fieldname','solidearth.settings.timeacc','size',[1 1],'>',0);
+			md = checkfield(md,'fieldname','solidearth.settings.horiz','NaN',1,'Inf',1,'values',[0 1]);
+			md = checkfield(md,'fieldname','solidearth.settings.grdmodel','>=',0,'<=',2);
+			md = checkfield(md,'fieldname','solidearth.settings.cross_section_shape','numel',[1],'values',[1,2]);
+
+			if self.elastic==1 & self.selfattraction==0,
+				error('solidearthsettings checkconsistency error message: need selfattraction on if elastic flag is set');
+			end
+			if self.viscous==1 & self.elastic==0,
+				error('solidearthsettings checkconsistency error message: need elastic on if viscous flag is set');
+			end
+			if self.rotation==1 & self.elastic==0,
+				error('solidearthsettings checkconsistency error message: need elastic on if rotation flag is set');
+			end
+
+			%a GRD computation has been requested, make some checks on the nature of the meshes provided. 
+			if self.isgrd,
+				if strcmpi(class(md.mesh),'mesh3dsurface'),
+					if self.grdmodel==2,
+						error('model requires a 2D mesh to run gia Ivins computations (change mesh from mesh3dsurface to mesh2d)');
+					end
+				else
+					if self.grdmodel==1,
+						error('model requires a 3D surface mesh to run GRD computations (change mesh from mesh2d to mesh3dsurface)');
+					end
+				end
+				if self.sealevelloading==1 & self.grdocean==0
+					error('solidearthsettings checkconsistency error message: need grdocean on if sealevelloading flag is set');
+				end
+			end
+
+			if self.compute_bp_grd==1 & md.solidearth.settings.isgrd==0,
+					error('solidearthsettings checkconsistency error message; if bottom pressure grd patterns are requested, solidearth settings class should have isgrd flag on');
+			end
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','reltol','name','md.solidearth.settings.reltol','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','abstol','name','md.solidearth.settings.abstol','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','maxiter','name','md.solidearth.settings.maxiter','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','selfattraction','name','md.solidearth.settings.selfattraction','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','elastic','name','md.solidearth.settings.elastic','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','viscous','name','md.solidearth.settings.viscous','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','rotation','name','md.solidearth.settings.rotation','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','grdocean','name','md.solidearth.settings.grdocean','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','ocean_area_scaling','name','md.solidearth.settings.ocean_area_scaling','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','runfrequency','name','md.solidearth.settings.runfrequency','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','degacc','name','md.solidearth.settings.degacc','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','timeacc','name','md.solidearth.settings.timeacc','format','Double','scale',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','horiz','name','md.solidearth.settings.horiz','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','sealevelloading','name','md.solidearth.settings.sealevelloading','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','isgrd','name','md.solidearth.settings.isgrd','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','compute_bp_grd','name','md.solidearth.settings.compute_bp_grd','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','grdmodel','name','md.solidearth.settings.grdmodel','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','cross_section_shape','name','md.solidearth.settings.cross_section_shape','format','Integer');
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+			% TODO: Update the following fields so that coverage is complete
+			writejsdouble(fid,[modelname '.solidearth.settings.maxiter'],self.maxiter);
+			writejsdouble(fid,[modelname '.solidearth.settings.reltol'],self.reltol);
+			writejsdouble(fid,[modelname '.solidearth.settings.abstol'],self.abstol);
+			writejsdouble(fid,[modelname '.solidearth.settings.selfattraction'],self.selfattraction);
+			writejsdouble(fid,[modelname '.solidearth.settings.elastic'],self.elastic);
+			writejsdouble(fid,[modelname '.solidearth.settings.viscous'],self.viscous);
+			writejsdouble(fid,[modelname '.solidearth.settings.rotation'],self.rotation);
+			writejsdouble(fid,[modelname '.solidearth.settings.grdocean'],self.grdocean);
+			writejsdouble(fid,[modelname '.solidearth.settings.ocean_area_scaling'],self.ocean_area_scaling);
+			writejsdouble(fid,[modelname '.solidearth.settings.run_frequency'],self.run_frequency);
+			writejsdouble(fid,[modelname '.solidearth.settings.degacc'],self.degacc);
+			writejsdouble(fid,[modelname '.solidearth.settings.timeacc'],self.timeacc);
+			writejsdouble(fid,[modelname '.solidearth.settings.cross_section_shape'],self.cross_section_shape);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearthsettings.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearthsettings.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearthsettings.py	(revision 27955)
@@ -0,0 +1,158 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from WriteData import WriteData
+
+
+class solidearthsettings(object):
+    """solidearthsettings class definition
+
+    Usage:
+        solidearthsettings = solidearthsettings()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.reltol                 = 0
+        self.abstol                 = 0
+        self.maxiter                = 0
+        self.selfattraction         = 1
+        self.elastic                = 1
+        self.viscous                = 1
+        self.rotation               = 1
+        self.grdocean               = 1
+        self.ocean_area_scaling     = 0
+        self.runfrequency           = 1 # How many time steps we skip before we run grd_core
+        self.sealevelloading        = 1 # Will sea-level loads be computed?
+        self.isgrd                  = 0 # Will GRD patterns be computed?
+        self.compute_bp_grd         = 0 # Will GRD patterns for bottom pressures be computed?
+        self.degacc                 = 0 # Degree increment for resolution of Green tables
+        self.timeacc                = 0 # Time step accuracy required to compute Green tables
+        self.horiz                  = 0 # Compute horizontal deformation?
+        self.grdmodel               = 0 # GRD model (0 by default, 1 for (visco-)elastic, 2 for Ivins)
+        self.cross_section_shape    = 0 # Cross section only used when GRD model is Ivins
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   solidearth settings:\n'
+        s += '{}\n'.format(fielddisplay(self, 'reltol', 'sea level change relative convergence criterion (default, NaN: not applied)'))
+        s += '{}\n'.format(fielddisplay(self, 'abstol', 'sea level change absolute convergence criterion (default, NaN: not applied)'))
+        s += '{}\n'.format(fielddisplay(self, 'maxiter', 'maximum number of nonlinear iterations'))
+        s += '{}\n'.format(fielddisplay(self, 'grdocean', 'does this planet have an ocean, if set to 1: global water mass is conserved in GRD module (default: 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'ocean_area_scaling', 'correction for model representation of ocean area (default: No correction)'))
+        s += '{}\n'.format(fielddisplay(self, 'sealevelloading', 'enables surface loading from sea-level change (default: 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'isgrd', 'compute GRD patterns (default: 1'))
+        s += '{}\n'.format(fielddisplay(self, 'compute_bp_grd', 'compute GRD patterns for bottom pressure loads (default 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'runfrequency', 'how many time steps we skip before we run solidearthsettings solver during transient (default: 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'selfattraction', 'enables surface mass load to perturb the gravity field'))
+        s += '{}\n'.format(fielddisplay(self, 'elastic', 'enables elastic deformation from surface loading'))
+        s += '{}\n'.format(fielddisplay(self, 'viscous', 'enables viscous deformation from surface loading'))
+        s += '{}\n'.format(fielddisplay(self, 'rotation', 'enables polar motion to feedback on the GRD fields'))
+        s += '{}\n'.format(fielddisplay(self, 'degacc', 'accuracy (default: .01 deg) for numerical discretization of the Green\'s functions'))
+        s += '{}\n'.format(fielddisplay(self, 'timeacc', 'time accuracy (default: 1 year) for numerical discretization of the Green\'s functions'))
+        s += '{}\n'.format(fielddisplay(self, 'grdmodel', 'type of deformation model, 0 for no GRD, 1 for spherical GRD model (SESAW model), 2 for half-space planar GRD (visco-elastic model from Ivins)'))
+        s += '{}\n'.format(fielddisplay(self, 'cross_section_shape', '1: square-edged (default). 2: elliptical. See iedge in GiaDeflectionCore'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Convergence criterion: absolute, relative, and residual
+        self.reltol = 0.01  # 1 percent
+        self.abstol = np.nan  # default
+
+        # Maximum of non-linear iterations
+        self.maxiter = 5
+
+        # Computational flags
+        self.selfattraction = 1
+        self.elastic = 1
+        self.viscous = 1
+        self.rotation = 1
+        self.grdocean = 1
+        self.ocean_area_scaling = 0
+        self.compute_bp_grd = 0
+        self.isgrd = 0
+        self.sealevelloading = 1
+
+        # Numerical discretization accuracy
+        self.degacc = 0.01
+        self.timeacc = 1
+
+        # How many time steps we skip before we run solidearthsettings solver during transient
+        self.runfrequency = 1
+
+        # Horizontal displacement? (not on by default)
+        self.horiz = 0
+
+        # Cross section for Ivins model
+        self.cross_section_shape = 1 # Square as default (see iedge in GiaDeflectionCorex)
+
+        # GRD model by default
+        self.grdmodel = 1
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if ('SealevelchangeAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
+            return md
+
+        md = checkfield(md, 'fieldname', 'solidearth.settings.reltol', 'size', [1])
+        md = checkfield(md, 'fieldname', 'solidearth.settings.abstol', 'size', [1])
+        md = checkfield(md, 'fieldname', 'solidearth.settings.maxiter', 'size', [1], '>=', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.settings.runfrequency', 'size', [1], '>=', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.settings.degacc', 'size', [1], '>=', 1e-10)
+        md = checkfield(md, 'fieldname', 'solidearth.settings.timeacc', 'size', [1], '>', 0)
+        md = checkfield(md, 'fieldname', 'solidearth.settings.horiz', 'NaN', 1, 'Inf', 1, 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'solidearth.settings.grdmodel', '>=', 0, '<=', 2)
+        md = checkfield(md, 'fieldname', 'solidearth.settings.cross_section_shape', 'numel', [1], 'values', [1, 2])
+
+        if self.elastic and not self.selfattraction:
+            raise Exception('solidearthsettings checkconsistency error message: need selfattraction on if elastic flag is set')
+        if self.viscous and not self.elastic:
+            raise Exception('solidearthsettings checkconsistency error message: need elastic on if viscous flag is set')
+
+        # A GRD computation has been requested, make some checks on the nature of the meshes provided
+        if self.isgrd:
+            if md.mesh.__class__.__name__ == 'mesh3dsurface':
+                if self.grdmodel == 2:
+                    raise Exception('model requires a 2D mesh to run gia Ivins computations (change mesh from mesh3dsurface to mesh2d)')
+            else:
+                if self.grdmodel == 1:
+                    raise Exception('model requires a 3D surface mesh to run GRD computations (change mesh from mesh2d to mesh3dsurface)')
+            if self.sealevelloading and not self.grdocean:
+                raise Exception('solidearthsettings checkconsistency error message: need grdocean on if sealevelloading flag is set')
+
+        if self.compute_bp_grd and not md.solidearth.settings.isgrd:
+            raise Exception('solidearthsettings checkconsistency error message; if bottom pressure grd patterns are requested, solidearth settings class should have isgrd flag on')
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'reltol', 'name', 'md.solidearth.settings.reltol', 'format', 'Double');
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'abstol', 'name', 'md.solidearth.settings.abstol', 'format', 'Double');
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'maxiter', 'name', 'md.solidearth.settings.maxiter', 'format', 'Integer');
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'selfattraction', 'name', 'md.solidearth.settings.selfattraction', 'format', 'Boolean');
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'elastic', 'name', 'md.solidearth.settings.elastic', 'format', 'Boolean');
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'viscous', 'name', 'md.solidearth.settings.viscous', 'format', 'Boolean');
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'rotation', 'name', 'md.solidearth.settings.rotation', 'format', 'Boolean');
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'grdocean', 'name', 'md.solidearth.settings.grdocean', 'format', 'Boolean');
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'ocean_area_scaling', 'name', 'md.solidearth.settings.ocean_area_scaling', 'format', 'Boolean');
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'runfrequency', 'name', 'md.solidearth.settings.runfrequency', 'format', 'Integer');
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'degacc', 'name', 'md.solidearth.settings.degacc', 'format', 'Double');
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'timeacc', 'name', 'md.solidearth.settings.timeacc', 'format', 'Double', 'scale', md.constants.yts);
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'horiz', 'name', 'md.solidearth.settings.horiz', 'format', 'Integer');
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'sealevelloading', 'name', 'md.solidearth.settings.sealevelloading', 'format', 'Integer');
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isgrd', 'name', 'md.solidearth.settings.isgrd', 'format', 'Integer');
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'compute_bp_grd', 'name', 'md.solidearth.settings.compute_bp_grd', 'format', 'Integer');
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'grdmodel', 'name', 'md.solidearth.settings.grdmodel', 'format', 'Integer');
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'cross_section_shape', 'name', 'md.solidearth.settings.cross_section_shape', 'format', 'Integer');
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearthsolution.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearthsolution.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearthsolution.js	(revision 27955)
@@ -0,0 +1,77 @@
+class solidearthsolution {//{{{
+	/**
+	 * SOLIDEARTHSOLUTION class definition
+	 *
+	 * Usage:
+	 *     solidearthsolution = solidearthsolution();
+	 */
+	constructor() {//{{{
+		this.displacementeast	= [];
+		this.displacementnorth	= [];
+		this.displacementup		= [];
+		this.geoid				= [];
+
+		let nargs = arguments.length;
+		if (nargs == 0) {
+			this.setdefaultparameters();
+		} else {
+			error('constructor not supported');
+		}
+	} //}}}
+
+	setdefaultparameters() {//{{{
+		this.displacementeast	= [];
+		this.displacementnorth	= [];
+		this.displacementup		= [];
+		this.geoid				= [];
+	} //}}}
+
+	checkconsistency(md, solution, analyses) {//{{{
+		md = checkfield(md, 'fieldname', 'solidearth.external.displacementeast', 'Inf', 1, 'timeseries', 1);
+		md = checkfield(md, 'fieldname', 'solidearth.external.displacementnorth', 'Inf', 1, 'timeseries', 1);
+		md = checkfield(md, 'fieldname', 'solidearth.external.displacementup', 'Inf', 1, 'timeseries', 1);
+		md = checkfield(md, 'fieldname', 'solidearth.external.geoid', 'Inf', 1, 'timeseries', 1);
+
+		return md;
+	} //}}}
+
+	disp() {//{{{
+		console.log('WARNING: solidearthsolution::disp is not yet implemented');
+	} //}}}
+
+	marshall(md, prefix, fid) {//{{{
+		let yts = md.constants.yts;
+
+		// Transform our time series into time series rates
+		let displacementeast_rate	= [];
+		let displacementnorth_rate	= [];
+		let displacementup_rate		= [];
+		let geoid_rate				= [];
+		if (size(this.displacementeast, 1) == 1) {
+			disp('External solidearthsolution warning: only one time step provided, assuming the values are rates per year');
+			displacementeast_rate	= [this.displacementeast; 0];
+			displacementnorth_rate	= [this.displacementnorth; 0];
+			displacementup_rate		= [this.displacementup; 0];
+			geoid_rate				= [this.geoid; 0];
+		} else {
+			let time = this.displacementeast[end, :];
+			let dt = diff(time, 1, 2);
+			displacementeast_rate = diff(this.displacementeast[0:-1,:], 1, 2) ./ dt;
+			displacementeast_rate[end + 1, :] = time[0:-1];
+			displacementnorth_rate = diff(this.displacementnorth_rate[0:-1,:], 1, 2) ./ dt;
+			displacementnorth_rate[end + 1, :] = time[0:-1];
+			displacementup_rate = diff(this.displacementup_rate[0:-1,:], 1, 2) ./ dt;
+			displacementup_rate[end + 1, :] = time[0:-1];
+			geoid_rate = diff(this.geoid_rate[0:-1,:], 1, 2) ./ dt;
+			geoid_rate[end + 1, :] = tgeoid_rateime[0:-1];
+		}
+
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'displacementeast', 'data', displacementeast_rate, 'format', 'DoubleMat', 'name', 'md.solidearth.external.displacementeast', 'mattype', 1, 'scale', 1 / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts);
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'displacementup', 'data', displacementup_rate, 'format', 'DoubleMat', 'name', 'md.solidearth.external.displacementup', 'mattype', 1, 'scale', 1 / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts);
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'displacementnorth', 'data', displacementnorth_rate, 'format', 'DoubleMat', 'name', 'md.solidearth.external.displacementnorth', 'mattype', 1, 'scale', 1 / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts);
+		WriteData(fid, prefix, 'object', this, 'fieldname', 'geoid', 'data', geoid_rate, 'format', 'DoubleMat', 'name', 'md.solidearth.external.geoid', 'mattype', 1, 'scale', 1 / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts);
+	} //}}}
+
+	extrude(md) {//{{{
+	} //}}}
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearthsolution.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearthsolution.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearthsolution.m	(revision 27955)
@@ -0,0 +1,85 @@
+%SOLIDEARTHSOLUTION class definition
+%
+%   Usage:
+%      solidearthsolution=solidearthsolution();
+
+classdef solidearthsolution
+	properties (SetAccess=public) 
+		displacementeast = [];
+		displacementnorth =[];
+		displacementup=[];
+		geoid=[];
+	end
+	methods
+		function self = solidearthsolution(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('%s','         units for time series is (yr)'));
+			fielddisplay(self,'displacementeast','solid-Earth Eastwards bedrock displacement series (m)');
+			fielddisplay(self,'displacementnorth','solid-Earth Northwards bedrock displacement time series (m)');
+			fielddisplay(self,'displacementup','solid-Earth bedrock uplift time series (m)');
+			fielddisplay(self,'geoid','solid-Earth geoid time series (m)');
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+	
+			self.displacementeast = [];
+			self.displacementnorth =[];
+			self.displacementup=[];
+			self.geoid=[];
+	
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','solidearth.external.displacementeast','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','solidearth.external.displacementnorth','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','solidearth.external.displacementup','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','solidearth.external.geoid','Inf',1,'timeseries',1);
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+
+			%transform our time series into time series rates 
+			if size(self.displacementeast,2)==1
+				disp('External solidearthsolution warning: only one time step provided, assuming the values are rates per year');
+				displacementeast_rate=[self.displacementeast;0];
+				displacementnorth_rate=[self.displacementnorth;0];
+				displacementup_rate=[self.displacementup;0];
+				geoid_rate=[self.geoid;0];
+			else
+				time=self.displacementeast(end,:);
+				dt=diff(time,1,2);
+				displacementeast_rate=diff(self.displacementeast(1:end-1,:),1,2)./dt;
+				displacementeast_rate(end+1,:)=time(1:end-1);
+				displacementnorth_rate=diff(self.displacementnorth(1:end-1,:),1,2)./dt;
+				displacementnorth_rate(end+1,:)=time(1:end-1);
+				displacementup_rate=diff(self.displacementup(1:end-1,:),1,2)./dt;
+				displacementup_rate(end+1,:)=time(1:end-1);
+				geoid_rate=diff(self.geoid(1:end-1,:),1,2)./dt;
+				geoid_rate(end+1,:)=time(1:end-1);
+			end
+
+			WriteData(fid, prefix, 'name', 'md.solidearth.external.nature', 'data', 0, 'format', 'Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','displacementeast','data',displacementeast_rate,'format','DoubleMat','name', 'md.solidearth.external.displacementeast','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid,prefix,'object',self,'fieldname','displacementup','data',displacementup_rate,'format','DoubleMat','name', 'md.solidearth.external.displacementup','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid,prefix,'object',self,'fieldname','displacementnorth','data',displacementnorth_rate,'format','DoubleMat','name', 'md.solidearth.external.displacementnorth','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			WriteData(fid,prefix,'object',self,'fieldname','geoid','data',geoid_rate,'format','DoubleMat','name', 'md.solidearth.external.geoid','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',yts);
+			
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+			writejs1Darray(fid,[modelname '.solidearth.external.displacementeast'],self.displacementeast);
+			writejs1Darray(fid,[modelname '.solidearth.external.displacementnorth'],self.displacementnorth);
+			writejs1Darray(fid,[modelname '.solidearth.external.displacementup'],self.displacementup);
+			writejs1Darray(fid,[modelname '.solidearth.external.geoid'],self.geoid);
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearthsolution.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearthsolution.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/solidearthsolution.py	(revision 27955)
@@ -0,0 +1,85 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from WriteData import WriteData
+
+
+class solidearthsolution(object):
+    """SOLIDEARTHSOLUTION class definition
+
+    Usage:
+        solidearthsolution = solidearthsolution()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.displacementeast = []
+        self.displacementnorth = []
+        self.displacementup = []
+        self.geoid = []
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            raise RuntimeError('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '         units for time series is (yr)\n'
+        s += '{}\n'.format(fielddisplay(self, 'displacementeast', 'solid-Earth Eastwards bedrock displacement series (m)'))
+        s += '{}\n'.format(fielddisplay(self, 'displacementnorth', 'solid-Earth Northwards bedrock displacement time series (m)'))
+        s += '{}\n'.format(fielddisplay(self, 'displacementup', 'solid-Earth bedrock uplift time series (m)'))
+        s += '{}\n'.format(fielddisplay(self, 'geoid', 'solid-Earth geoid time series (m)'))
+
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        self.displacementeast = []
+        self.displacementnorth = []
+        self.displacementup = []
+        self.geoid = []
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        md = checkfield(md, 'fieldname', 'solidearth.external.displacementeast', 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.external.displacementnorth', 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.external.displacementup', 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'solidearth.external.geoid', 'Inf', 1, 'timeseries', 1)
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+
+        print('sadjsda')
+        exit()
+
+        # Transform our time series into time series rates
+        if np.shape(self.displacementeast)[1] == 1:
+            print('solidearthsolution.py::marshall: Warning: only one time step provided, assuming the values are rates per year')
+            displacementeast_rate = np.append(np.array(self.displacementeast).reshape(-1, 1), 0)
+            displacementnorth_rate = np.append(np.array(self.displacementnorth).reshape(-1, 1), 0)
+            displacementup_rate = np.append(np.array(self.displacementup).reshape(-1, 1), 0)
+            geoid_rate = np.append(np.array(self.geoid).reshape(-1, 1), 0)
+        else:
+            time = self.displacementeast[-1, :]
+            dt = np.diff(time, axis=0)
+            displacementeast_rate = np.diff(self.displacementeast[0:-2, :], 1, 1) / dt
+            displacementeast_rate = np.append(displacementeast_rate,time[:-1].reshape(1,-1),axis=0)
+            displacementnorth_rate = np.diff(self.displacementnorth[0:-2, :], 1, 1) / dt
+            displacementnorth_rate = np.append(displacementnorth_rate,time[:-1].reshape(1,-1),axis=0)
+            displacementup_rate = np.diff(self.displacementup[0:-2, :], 1, 1) / dt
+            displacementup_rate = np.append(displacementup_rate,time[:-1].reshape(1,-1),axis=0)
+            geoid_rate = np.diff(self.geoid[0:-2, :], 1, 1) / dt
+            geoid_rate = np.append(geoid_rate,time[:-1].reshape(1,-1),axis=0)
+
+        WriteData(fid, prefix, 'name', 'md.solidearth.external.nature', 'data', 0, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'displacementeast', 'data', displacementeast_rate, 'format', 'DoubleMat', 'name', 'md.solidearth.external.displacementeast', 'mattype', 1, 'scale', 1 / yts,'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts);
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'displacementup', 'data', displacementup_rate,'format', 'DoubleMat', 'name', 'md.solidearth.external.displacementup', 'mattype', 1, 'scale', 1 / yts,'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts);
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'displacementnorth', 'data', displacementnorth_rate,'format', 'DoubleMat', 'name', 'md.solidearth.external.displacementnorth', 'mattype', 1, 'scale', 1 / yts,'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts);
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'geoid', 'data', geoid_rate,'format', 'DoubleMat', 'name', 'md.solidearth.external.geoid', 'mattype', 1, 'scale', 1 / yts,'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts);
+    # }}}
+
+    def extrude(self, md):  # {{{
+        return self
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/spatiallinearbasalforcings.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/spatiallinearbasalforcings.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/spatiallinearbasalforcings.m	(revision 27955)
@@ -0,0 +1,123 @@
+%SPATIAL LINEAR BASAL FORCINGS class definition
+%
+%   Usage:
+%      spatiallinearbasalforcings=spatiallinearbasalforcings();
+
+classdef spatiallinearbasalforcings
+	properties (SetAccess=public) 
+		groundedice_melting_rate  = NaN;
+		deepwater_melting_rate    = NaN;
+		deepwater_elevation       = NaN;
+		upperwater_melting_rate   = NaN;
+		upperwater_elevation      = NaN;
+		perturbation_melting_rate = NaN;
+		geothermalflux            = NaN;
+	end
+	methods
+		function self = spatiallinearbasalforcings(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					lb=varargin{1};
+					if isa(lb,'linearbasalforcings');
+						nvertices=length(lb.groundedice_melting_rate);
+						self.groundedice_melting_rate=lb.groundedice_melting_rate;
+						self.geothermalflux=lb.geothermalflux;
+						self.deepwater_elevation       = lb.deepwater_elevation*ones(nvertices,1);
+						self.deepwater_melting_rate    = lb.deepwater_melting_rate*ones(nvertices,1);
+						self.upperwater_melting_rate   = lb.upperwater_melting_rate*ones(nvertices,1);
+						self.upperwater_elevation      = lb.upperwater_elevation*ones(nvertices,1);
+						if ~isnan(lb.perturbation_melting_rate)
+							self.perturbation_melting_rate = lb.perturbation_melting_rate*ones(nvertices,1);
+						end
+					else 
+						self=structtoobj(spatiallinearbasalforcings(),varargin{1});
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1); 
+			self.deepwater_melting_rate=project3d(md,'vector',self.deepwater_melting_rate,'type','node','layer',1); 
+			self.deepwater_elevation=project3d(md,'vector',self.deepwater_elevation,'type','node','layer',1); 
+			self.upperwater_melting_rate=project3d(md,'vector',self.upperwater_melting_rate,'type','node','layer',1); 
+			self.upperwater_elevation=project3d(md,'vector',self.upperwater_elevation,'type','node','layer',1); 
+			self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1); %bedrock only gets geothermal flux
+			self.perturbation_melting_rate=project3d(md,'vector',self.perturbation_melting_rate,'type','node','layer',1); 
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.groundedice_melting_rate),
+				self.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.groundedice_melting_rate specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%default values for melting parameterization: can't, we don't have the vertices information!
+			%self.deepwater_melting_rate = 50;
+			%self.deepwater_elevation    = -800;
+			%self.upperwater_elevation   = -400;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if numel(md.basalforcings.perturbation_melting_rate)>1
+            md = checkfield(md,'fieldname','basalforcings.perturbation_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+         end
+
+			if ismember('MasstransportAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.ismasstransport==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+				md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.upperwater_melting_rate','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+				md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','NaN',1,'Inf',1,'timeseries',1,'<=',0);
+			end
+			if ismember('BalancethicknessAnalysis',analyses),
+				error('not implemented yet!');
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','numel',1);
+				md = checkfield(md,'fieldname','basalforcings.upperwater_melting_rate','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<=',0,'numel',1);
+			end
+			if ismember('ThermalAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.isthermal==0),
+				error('not implemented yet!');
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','numel',1);
+				md = checkfield(md,'fieldname','basalforcings.upperwater_melting_rate','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   spatial linear basal forcings parameters:'));
+
+			fielddisplay(self,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+			fielddisplay(self,'deepwater_melting_rate','basal melting rate (positive if melting applied for floating ice whith base < deepwater_elevation) [m/yr]');
+			fielddisplay(self,'deepwater_elevation','elevation of ocean deepwater [m]');
+			fielddisplay(self,'upperwater_melting_rate','basal melting rate (positive if melting applied for floating ice whith base >= upperwater_elevation) [m/yr]');
+			fielddisplay(self,'upperwater_elevation','elevation of ocean upperwater [m]');
+			fielddisplay(self,'perturbation_melting_rate','basal melting rate perturbation added to computed melting rate (positive if melting) [m/yr]');
+			fielddisplay(self,'geothermalflux','geothermal heat flux [W/m^2]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'name','md.basalforcings.model','data',6,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','name','md.basalforcings.groundedice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','name','md.basalforcings.geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','deepwater_melting_rate','format','DoubleMat','name','md.basalforcings.deepwater_melting_rate','scale',1./yts,'mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','deepwater_elevation','format','DoubleMat','name','md.basalforcings.deepwater_elevation','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','upperwater_melting_rate','format','DoubleMat','name','md.basalforcings.upperwater_melting_rate','scale',1./yts,'mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','upperwater_elevation','format','DoubleMat','name','md.basalforcings.upperwater_elevation','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','perturbation_melting_rate','format','DoubleMat','name','md.basalforcings.perturbation_melting_rate','scale',1./yts,'mattype',1);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/spatiallinearbasalforcings.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/spatiallinearbasalforcings.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/spatiallinearbasalforcings.py	(revision 27955)
@@ -0,0 +1,119 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from structtoobj import structtoobj
+from WriteData import WriteData
+
+
+class spatiallinearbasalforcings(object):
+    """SPATIAL LINEAR BASAL FORCINGS class definition
+
+    Usage:
+        spatiallinearbasalforcings = spatiallinearbasalforcings()
+    """
+
+    def __init__(self, *args):  # {{{
+        nargs = len(args)
+        if nargs == 0:
+            self.groundedice_melting_rate   = np.nan
+            self.deepwater_melting_rate     = np.nan
+            self.deepwater_elevation        = np.nan
+            self.upperwater_melting_rate    = np.nan
+            self.upperwater_elevation       = np.nan
+            self.geothermalflux             = np.nan
+            self.perturbation_melting_rate  = np.nan
+
+            self.setdefaultparameters()
+        elif nargs == 1:
+            lb = args[0]
+            if lb.__module__ == 'linearbasalforcings':
+                nvertices = len(lb.groundedice_melting_rate)
+                self.groundedice_melting_rate   = lb.groundedice_melting_rate
+                self.geothermalflux             = lb.geothermalflux
+                self.deepwater_elevation        = lb.deepwater_elevation * np.ones((nvertices, ))
+                self.deepwater_melting_rate     = lb.deepwater_melting_rate * np.ones((nvertices, ))
+                self.upperwater_melting_rate    = lb.upperwater_melting_rate * np.ones((nvertices, ))
+                self.upperwater_elevation       = lb.upperwater_elevation * np.ones((nvertices, ))
+                self.perturbation_melting_rate  = lb.perturbation_melting_rate * np.ones((nvertices, ))
+            else:
+                # TODO: This has not been tested
+                self = structtoobj(self, lb)
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   spatial linear basal forcings parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'groundedice_melting_rate', 'basal melting rate (positive if melting) [m/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'deepwater_melting_rate', 'basal melting rate (positive if melting applied for floating ice whith base < deepwater_elevation) [m/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'deepwater_elevation', 'elevation of ocean deepwater [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'upperwater_melting_rate', 'basal melting rate (positive if melting applied for floating ice whith base >= upperwater_elevation) [m/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'upperwater_elevation', 'elevation of ocean upperwater [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'perturbation_melting_rate', 'basal melting rate perturbation added to computed melting rate (positive if melting) [m/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'geothermalflux', 'geothermal heat flux [W/m^2]'))
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.groundedice_melting_rate = project3d(md, 'vector', self.groundedice_melting_rate, 'type', 'node', 'layer', 1) 
+        self.deepwater_melting_rate = project3d(md, 'vector', self.deepwater_melting_rate, 'type', 'node', 'layer', 1) 
+        self.deepwater_elevation = project3d(md, 'vector', self.deepwater_elevation, 'type', 'node', 'layer', 1)
+        self.upperwater_melting_rate = project3d(md, 'vector', self.upperwater_melting_rate, 'type', 'node', 'layer', 1) 
+        self.upperwater_elevation = project3d(md, 'vector', self.upperwater_elevation, 'type', 'node', 'layer', 1) 
+        self.geothermalflux = project3d(md, 'vector', self.geothermalflux, 'type', 'node', 'layer', 1) # Bedrock only gets geothermal flux
+        self.perturbation_melting_rate = project3d(md, 'vector', self.upperwater_melting_rate, 'type', 'node', 'layer', 1) 
+        return self
+    # }}}
+
+    def initialize(self, md):  # {{{
+        if np.all(np.isnan(self.groundedice_melting_rate)):
+            self.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices))
+            print('      no basalforcings.groundedice_melting_rate specified: values set as zero')
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if not np.all(np.isnan(self.perturbation_melting_rate)):
+            md = checkfield(md, 'fieldname', 'basalforcings.perturbation_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+        if 'MasstransportAnalysis' in analyses and not solution == 'TransientSolution' and not md.transient.ismasstransport:
+            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1, '>=', 0)
+            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_elevation', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.upperwater_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1, '>=', 0)
+            md = checkfield(md, 'fieldname', 'basalforcings.upperwater_elevation', 'NaN', 1, 'Inf', 1, 'timeseries', 1, '<', 0)
+        if 'BalancethicknessAnalysis' in analyses:
+            raise Exception('not implemented yet!')
+            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_melting_rate', '>=', 0, 'numel', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_elevation', '<', 'basalforcings.upperwater_elevation', 'numel', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.upperwater_melting_rate', '>=', 0, 'numel', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.upperwater_elevation', '<=', 0, 'numel', 1)
+        if 'ThermalAnalysis' in analyses and not solution == 'TransientSolution' and not md.transient.isthermal:
+            raise Exception('not implemented yet!')
+            md = checkfield(md, 'fieldname', 'basalforcings.groundedice_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_melting_rate', '>=', 0, 'numel', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_elevation', '<', 'basalforcings.upperwater_elevation', 'numel', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.upperwater_elevation', '<', 0, 'numel', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.deepwater_melting_rate', '>=', 0, 'numel', 1)
+            md = checkfield(md, 'fieldname', 'basalforcings.geothermalflux', 'NaN', 1, 'Inf', 1, 'timeseries', 1, '>=', 0)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'name', 'md.basalforcings.model', 'data', 6, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'groundedice_melting_rate', 'format', 'DoubleMat', 'name', 'md.basalforcings.groundedice_melting_rate', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1,'yts', md.constants.yts)
+        WriteData(fid, prefix,'object', self, 'fieldname', 'geothermalflux', 'name', 'md.basalforcings.geothermalflux', 'format', 'DoubleMat', 'mattype', 1,'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'deepwater_melting_rate', 'format', 'DoubleMat', 'name', 'md.basalforcings.deepwater_melting_rate', 'scale', 1. / yts, 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'deepwater_elevation', 'format', 'DoubleMat', 'name', 'md.basalforcings.deepwater_elevation', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'upperwater_melting_rate', 'format', 'DoubleMat', 'name', 'md.basalforcings.upperwater_melting_rate', 'scale', 1. / yts, 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'upperwater_elevation', 'format', 'DoubleMat', 'name', 'md.basalforcings.upperwater_elevation', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'perturbation_melting_rate', 'format', 'DoubleMat', 'name', 'md.basalforcings.perturbation_melting_rate', 'scale', 1. / yts, 'mattype', 1)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/spheremesh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/spheremesh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/spheremesh.m	(revision 27955)
@@ -0,0 +1,96 @@
+%SPHEREMESH class definition
+%
+%   Usage:
+%      spheremesh=spheremesh();
+
+classdef spheremesh
+	properties (SetAccess=public) 
+		x                           = NaN;
+		y                           = NaN;
+		z                           = NaN;
+		r                           = NaN;
+		theta                       = NaN;
+		phi                         = NaN
+		elements                    = NaN
+		numberoflayers              = 0;
+		numberofelements            = 0;
+		numberofvertices            = 0;
+
+		vertexconnectivity          = NaN
+		elementconnectivity         = NaN
+		average_vertex_connectivity = 0;
+	end
+	methods
+		function self = spheremesh(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%the connectivity is the avergaded number of nodes linked to a
+			%given node through an edge. This connectivity is used to initially
+			%allocate memory to the stiffness matrix. A value of 16 seems to
+			%give a good memory/time ration. This value can be checked in
+			%trunk/test/Miscellaneous/runme.m
+			self.average_vertex_connectivity=25;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','spheremesh.x','NaN',1,'Inf',1,'size',[md.spheremesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','spheremesh.y','NaN',1,'Inf',1,'size',[md.spheremesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','spheremesh.z','NaN',1,'Inf',1,'size',[md.spheremesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','spheremesh.r','NaN',1,'Inf',1,'size',[md.spheremesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','spheremesh.theta','NaN',1,'Inf',1,'size',[md.spheremesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','spheremesh.phi','NaN',1,'Inf',1,'size',[md.spheremesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','spheremesh.elements','NaN',1,'Inf',1,'>',0,'values',1:md.spheremesh.numberofvertices);
+			md = checkfield(md,'fieldname','spheremesh.elements','size',[md.spheremesh.numberofelements 3]);
+			if any(~ismember(1:md.spheremesh.numberofvertices,sort(unique(md.spheremesh.elements(:)))));
+				md = checkmessage(md,'orphan nodes have been found. Check the spheremesh outline');
+			end
+			md = checkfield(md,'fieldname','spheremesh.numberoflayers','>=',0);
+			md = checkfield(md,'fieldname','spheremesh.numberofelements','>',0);
+			md = checkfield(md,'fieldname','spheremesh.numberofvertices','>',0);
+			md = checkfield(md,'fieldname','spheremesh.elementconnectivity','size',[md.spheremesh.numberofelements 3],'NaN',1,'Inf',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Mesh:')); 
+
+			disp(sprintf('\n      Elements and vertices:'));
+			fielddisplay(self,'numberofelements','number of elements');
+			fielddisplay(self,'numberofvertices','number of vertices');
+			fielddisplay(self,'elements','vertex indices of the mesh elements');
+			fielddisplay(self,'x','vertices x coordinate [m]');
+			fielddisplay(self,'y','vertices y coordinate [m]');
+			fielddisplay(self,'z','vertices z coordinate [m]');
+			fielddisplay(self,'r','vertices r coordinate [m]');
+			fielddisplay(self,'theta','vertices theta coordinate [degrees]');
+			fielddisplay(self,'phi','vertices phi coordinate [degrees]');
+
+			disp(sprintf('\n      Properties:'));
+			fielddisplay(self,'numberoflayers','number of extrusion layers');
+
+			fielddisplay(self,'vertexconnectivity','list of elements connected to vertex_i');
+			fielddisplay(self,'elementconnectivity','list of elements adjacent to element_i');
+			fielddisplay(self,'average_vertex_connectivity','average number of vertices connected to one vertex');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','z','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','r','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','theta','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','phi','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,prefix,'object',self,'fieldname','numberoflayers','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','numberofelements','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','numberofvertices','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','elementconnectivity','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'fieldname','average_vertex_connectivity','format','Integer');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/steadystate.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/steadystate.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/steadystate.js	(revision 27955)
@@ -0,0 +1,84 @@
+//STEADYSTATE class definition
+//
+//   Usage:
+//      steadystate=new steadystate();
+
+function steadystate (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//maximum of steady state iterations
+		this.maxiter=100;
+
+		//Relative tolerance for the steadystate convertgence
+		this.reltol=0.01;
+
+		//default output
+		this.requested_outputs=['default'];
+
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   steadystate solution parameters:'));
+
+		fielddisplay(this,'reltol','relative tolerance criterion');
+		fielddisplay(this,'maxiter','maximum number of iterations');
+		fielddisplay(this,'requested_outputs','additional requested outputs');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "steadystate";
+
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) {// {{{
+
+		//Early return
+		if (solution!='SteadystateSolution') return;
+
+		if (md.timestepping.time_step!=0){
+			md.checkmessage('for a steadystate computation, timestepping.time_step must be zero.');
+		}
+		checkfield(md,'fieldname','steadystate.requested_outputs','stringrow',1);
+
+		if (isNaN(md.stressbalance.reltol)){
+			md.checkmessage('for a steadystate computation, stressbalance.reltol (relative convergence criterion) must be defined!');
+		}
+	} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','reltol','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','maxiter','format','Integer');
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}
+			WriteData(fid,prefix,'data',outputs,'name','md.steadystate.requested_outputs','format','StringArray');
+		}//}}}
+		this.defaultoutputs = function(md) { //{{{
+
+			var list=[];
+
+			for (var i=0;i<md.stressbalance.defaultoutputs(md).length;i++)list.push(md.stressbalance.defaultoutputs(md)[i]);
+			for (var i=0;i<md.thermal.defaultoutputs(md).length;i++)list.push(md.thermal.defaultoutputs(md)[i]);
+
+			return list;
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+
+	this.reltol            = 0;
+	this.maxiter           = 0;
+	this.requested_outputs = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/steadystate.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/steadystate.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/steadystate.m	(revision 27955)
@@ -0,0 +1,79 @@
+%STEADYSTATE class definition
+%
+%   Usage:
+%      steadystate=steadystate();
+
+classdef steadystate
+	properties (SetAccess=public) 
+		reltol            = 0;
+		maxiter           = 0;
+		requested_outputs = {};
+	end
+	methods
+		function self = steadystate(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			%maximum of steady state iterations
+			self.maxiter=100;
+
+			%Relative tolerance for the steadystate convertgence
+			self.reltol=0.01;
+
+			%default output
+			self.requested_outputs={'default'};
+		end % }}}
+		function list=defaultoutputs(self,md) % {{{
+
+			list =  [md.stressbalance.defaultoutputs(md) md.thermal.defaultoutputs(md)];
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~strcmp(solution,'SteadystateSolution'), return; end;
+
+			if md.timestepping.time_step~=0,
+				md = checkmessage(md,['for a steadystate computation, timestepping.time_step must be zero.']);
+			end
+			md = checkfield(md,'fieldname','steadystate.requested_outputs','stringrow',1);
+
+			if isnan(md.stressbalance.reltol),
+				md = checkmessage(md,['for a steadystate computation, stressbalance.reltol (relative convergence criterion) must be defined!']);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   steadystate solution parameters:'));
+
+			fielddisplay(self,'reltol','relative tolerance criterion');
+			fielddisplay(self,'maxiter','maximum number of iterations');
+			fielddisplay(self,'requested_outputs','additional requested outputs');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','reltol','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','maxiter','format','Integer');
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.steadystate.requested_outputs','format','StringArray');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.steadystate.reltol'],self.reltol);
+			writejsdouble(fid,[modelname '.steadystate.maxiter'],self.maxiter);
+			writejscellstring(fid,[modelname '.steadystate.requested_outputs'],self.requested_outputs);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/steadystate.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/steadystate.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/steadystate.py	(revision 27955)
@@ -0,0 +1,73 @@
+import numpy as np
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class steadystate(object):
+    """
+    STEADYSTATE class definition
+
+       Usage:
+          steadystate = steadystate()
+    """
+
+    def __init__(self):  # {{{
+        self.reltol = 0
+        self.maxiter = 0
+        self.requested_outputs = []
+
+    #set defaults
+        self.setdefaultparameters()
+
+    # }}}
+    def __repr__(self):  # {{{
+        string = '   steadystate solution parameters:'
+        string = "%s\n%s" % (string, fielddisplay(self, 'reltol', 'relative tolerance criterion'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'maxiter', 'maximum number of iterations'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional requested outputs'))
+        return string
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return md.stressbalance.defaultoutputs(md) + md.thermal.defaultoutputs(md)
+
+    # }}}
+    def setdefaultparameters(self):  # {{{
+        #maximum of steady state iterations
+        self.maxiter = 100
+        #Relative tolerance for the steadystate convertgence
+        self.reltol = 0.01
+        #default output
+        self.requested_outputs = ['default']
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        #Early return
+        if not solution == 'SteadystateSolution':
+            return md
+
+        if not md.timestepping.time_step == 0:
+            md.checkmessage("for a steadystate computation, timestepping.time_step must be zero.")
+
+        if np.isnan(md.stressbalance.reltol):
+            md.checkmessage("for a steadystate computation, stressbalance.reltol (relative convergence criterion) must be defined!")
+
+        md = checkfield(md, 'fieldname', 'steadystate.requested_outputs', 'stringrow', 1)
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'reltol', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'maxiter', 'format', 'Integer')
+
+    #process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.steadystate.requested_outputs', 'format', 'StringArray')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/stochasticforcing.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/stochasticforcing.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/stochasticforcing.m	(revision 27955)
@@ -0,0 +1,478 @@
+%STOCHASTICFORCING class definition
+%
+%   Usage:
+%      stochasticforcing=stochasticforcing();
+
+classdef stochasticforcing
+	properties (SetAccess=public)
+		isstochasticforcing	= 0;
+		fields					= NaN;
+		defaultdimension		= 0;
+		default_id				= NaN;
+		covariance				= NaN;
+		timecovariance			= NaN;
+		stochastictimestep   = 0;
+		randomflag				= 1;
+	end
+	methods
+		function self = stochasticforcing(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.default_id = project3d(md,'vector',self.default_id,'type','element');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+			self.isstochasticforcing	= 0; %stochasticforcing is turned off by default
+			self.randomflag				= 1; %true randomness is implemented by default
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~self.isstochasticforcing, return; end
+
+			num_fields = numel(self.fields);
+			if(self.stochastictimestep==0)
+				md.stochasticforcing.stochastictimestep = md.timestepping.time_step; %by default: stochastictimestep set to ISSM time step
+			end
+
+
+			if(numel(size(self.covariance)==3))
+				numtcovmat = numel(self.covariance(1,1,:)); %number of covariance matrices in time
+				lsCovmats = {};
+				for ii=[1:numtcovmat] %loop over 3rd dimension
+					lsCovmats{ii} = self.covariance(:,:,ii);
+      			%Check that covariance matrix is positive definite
+      			try
+      				chol(self.covariance(:,:,ii));
+      			catch
+      				error('an entry in md.stochasticforcing.covariance is not positive definite');
+					end
+				end
+			elseif(numel(size(self.covariance)==2))
+				numtcovmat = 1; %number of covariance matrices in time
+				lsCovmats = {self.covariance};
+   			%Check that covariance matrix is positive definite
+   			try
+   				chol(self.covariance);
+   			catch
+   				error('md.stochasticforcing.covariance is not positive definite');
+   			end
+			end
+
+			%Check that all fields agree with the corresponding md class and if any field needs the default params
+			checkdefaults	= false; %need to check defaults only if one of the fields does not have its own dimensionality
+			structstoch		= structstochforcing();
+			% Check if hydrolgyarmapw is used
+			if(strcmp(class(md.hydrology),'hydrologyarmapw') && md.transient.ishydrology==1)
+				ispwHydroarma = 1;
+			else
+				ispwHydroarma = 0;
+			end
+			for field=self.fields
+				%Checking agreement of classes
+				if(contains(field,'SMBarma'))
+					mdname = structstoch.mdnames(find(strcmp(structstoch.fields,char(field))));
+					if~(isequal(class(md.smb),char(mdname)))
+						error('md.smb does not agree with stochasticforcing field %s', char(field));
+					end
+				end
+				if(contains(field,'SMBforcing'))
+					mdname = structstoch.mdnames(find(strcmp(structstoch.fields,char(field))));
+					if~(isequal(class(md.smb),char(mdname)))
+						error('md.smb does not agree with stochasticforcing field %s', char(field));
+					end
+				end
+				if(contains(field,'FrontalForcings'))
+					mdname = structstoch.mdnames(find(strcmp(structstoch.fields,char(field))));
+					if~(isequal(class(md.frontalforcings),char(mdname)))
+						error('md.frontalforcings does not agree with stochasticforcing field %s', char(field));
+					end
+				end
+				if(contains(field,'Calving'))
+					mdname = structstoch.mdnames(find(strcmp(structstoch.fields,char(field))));
+					if~(isequal(class(md.calving),char(mdname)))
+						error('md.calving does not agree with stochasticforcing field %s', char(field));
+					end
+				end
+				if(contains(field,'BasalforcingsFloatingice'))
+					mdname = structstoch.mdnames(find(strcmp(structstoch.fields,char(field))));
+					if~(isequal(class(md.basalforcings),char(mdname)))
+						error('md.basalforcings does not agree with stochasticforcing field %s', char(field));
+					end
+				end
+				if(contains(field,'BasalforcingsSpatialDeepwaterMeltingRate'))
+					mdname = structstoch.mdnames(find(strcmp(structstoch.fields,char(field))));
+					if~(isequal(class(md.basalforcings),char(mdname)))
+						error('md.basalforcings does not agree with stochasticforcing field %s', char(field));
+					end
+				end
+				if(contains(field,'BasalforcingsDeepwaterMeltingRatearma'))
+					mdname = structstoch.mdnames(find(strcmp(structstoch.fields,char(field))));
+					if~(isequal(class(md.basalforcings),char(mdname)))
+						error('md.basalforcings does not agree with stochasticforcing field %s', char(field));
+					end
+				end
+				if(contains(field,'WaterPressure'))
+
+					mdnames = structstoch.mdnames(find(strcmp(structstoch.fields,char(field))));
+					found   = 0;
+					for(ii=[1:numel(mdnames)])
+						if(isequal(class(md.friction),char(mdnames{ii}))) found=1; end
+					end
+					if(found==0)
+						error('md.friction does not agree with stochasticforcing field %s', char(field));
+					end
+					if(strcmp(class(md.friction),'friction') || strcmp(class(md.friction),'frictionschoof') || strcmp(class(md.friction),'frictioncoulomb'))
+						if(md.friction.coupling~=0 && md.friction.coupling~=1 && md.friction.coupling~=2)
+							error('stochasticforcing field %s is only implemented for cases md.friction.coupling 0 or 1 or 2', char(field));
+						end
+					end
+					if(strcmp(class(md.friction),'friction'))
+						if(any(md.friction.q==0))
+							error('stochasticforcing field %s requires non-zero q exponent',char(field));
+						end
+					end
+				end
+				%Checking for specific dimensions
+				if ~(strcmp(field,'SMBarma') || strcmp(field,'FrontalForcingsRignotarma') || strcmp(field,'BasalforcingsDeepwaterMeltingRatearma') || strcmp(field,'FrontalForcingsSubglacialDischargearma') || ((strcmp(field,'FrictionWaterPressure') && ispwHydroarma)))
+					checkdefaults = true; %field with non-specific dimensionality
+				end
+			end
+			%Retrieve all the field dimensionalities
+			dimensions = self.defaultdimension*ones(1,num_fields);
+			indSMBarma = -1; %about to check for index of SMBarma
+			indTFarma  = -1; %about to check for index of FrontalForcingsRignotarma
+			indSdarma  = -1; %about to check for index of SubglacialDischargearma
+			indBDWarma = -1; %about to check for index of BasalforcingsDeepwaterMeltingRatearma
+			indPwarma  = -1; %about to check for index of hydrologyarmapw
+			
+
+			if any(contains(self.fields,'SMBarma'))
+				indSMBarma = find(contains(self.fields,'SMBarma')); %index of SMBarma, now check for consistency with other arma timesteps 
+				dimensions(indSMBarma) = md.smb.num_basins;
+				if(md.smb.arma_timestep<self.stochastictimestep)
+					error('SMBarma cannot have a timestep shorter than stochastictimestep');
+				end
+			end
+			if any(contains(self.fields,'FrontalForcingsRignotarma'))
+				indTFarma	= find(contains(self.fields,'FrontalForcingsRignotarma')); %index of TFarma, now check for consistency with other arma timesteps 
+				dimensions(indTFarma) = md.frontalforcings.num_basins;
+				if(md.frontalforcings.arma_timestep<self.stochastictimestep)
+					error('FrontalForcingsRignotarma cannot have a timestep shorter than stochastictimestep');
+				end
+			end
+			if any(contains(self.fields,'FrontalForcingsSubglacialDischargearma'))
+				indSdarma	= find(contains(self.fields,'FrontalForcingsSubglacialDischargearma')); %index of Sdarma, now check for consistency with other arma timesteps 
+				dimensions(indSdarma) = md.frontalforcings.num_basins;
+				if(md.frontalforcings.sd_arma_timestep<self.stochastictimestep)
+					error('FrontalForcingsSubglacialDischargearma cannot have a timestep shorter than stochastictimestep');
+				end
+			end
+			if any(contains(self.fields,'BasalforcingsDeepwaterMeltingRatearma'))
+				indBDWarma	= find(contains(self.fields,'BasalforcingsDeepwaterMeltingRatearma')); %index of BDWarma, now check for consistency with other arma timesteps 
+				dimensions(indBDWarma) = md.basalforcings.num_basins;
+				if(md.basalforcings.arma_timestep<self.stochastictimestep)
+					error('BasalforcingsDeepwaterMeltingRatearma cannot have a timestep shorter than stochastictimestep');
+				end
+			end
+			if (any(contains(self.fields,'FrictionWaterPressure')) && ispwHydroarma)
+				indPwarma	= find(contains(self.fields,'FrictionWaterPressure')); %index of Pwarma, now check for consistency with other arma timesteps 
+				dimensions(indPwarma) = md.hydrology.num_basins;
+				if(md.hydrology.arma_timestep<self.stochastictimestep)
+					error('hydrologyarmapw cannot have a timestep shorter than stochastictimestep');
+				end
+			end
+			size_tot = sum(dimensions);
+
+			%%% Check consistency between ARMA models %%%
+			if(indBDWarma~=-1)
+				if(indPwarma~=-1)
+					if(md.basalforcings.arma_timestep~=md.hydrology.arma_timestep)
+						for(ii=[1:numel(lsCovmats)])
+							covm = lsCovmats{ii};
+							crossentries = reshape(covm(1+sum(dimensions(1:indBDWarma-1)):sum(dimensions(1:indBDWarma)),1+sum(dimensions(1:indPwarma-1)):sum(dimensions(1:indPwarma))),1,[]);
+							if any(crossentries~=0)
+								error('BasalforcingsDeepwaterMeltingRatearma and hydrologyarmapw have different arma_timestep and non-zero covariance');
+							end
+						end
+					end
+				elseif(indSdarma~=-1)
+					if(md.frontalforcings.sd_arma_timestep~=md.basalforcings.arma_timestep)
+						for(ii=[1:numel(lsCovmats)])
+							covm = lsCovmats{ii};
+							crossentries = reshape(covm(1+sum(dimensions(1:indSdarma-1)):sum(dimensions(1:indSdarma)),1+sum(dimensions(1:indBDWarma-1)):sum(dimensions(1:indBDWarma))),1,[]);
+							if any(crossentries~=0)
+								error('FrontalForcingsSubglacialDischargearma and BasalforcingsDeepwaterMeltingRatearma have different arma_timestep and non-zero covariance');
+							end
+						end
+					end
+				elseif(indSMBarma~=-1)
+					if(md.smb.arma_timestep~=md.basalforcings.arma_timestep)
+						for(ii=[1:numel(lsCovmats)])
+							covm = lsCovmats{ii};
+							crossentries = reshape(covm(1+sum(dimensions(1:indSMBarma-1)):sum(dimensions(1:indSMBarma)),1+sum(dimensions(1:indBDWarma-1)):sum(dimensions(1:indBDWarma))),1,[]);
+							if any(crossentries~=0)
+								error('SMBarma and BasalforcingsDeepwaterMeltingRatearma have different arma_timestep and non-zero covariance');
+							end
+						end
+					end
+				elseif(indTFarma~=-1)
+					if(md.frontalforcings.arma_timestep~=md.basalforcings.arma_timestep)
+						for(ii=[1:numel(lsCovmats)])
+							covm = lsCovmats{ii};
+							crossentries = reshape(covm(1+sum(dimensions(1:indTFarma-1)):sum(dimensions(1:indTFarma)),1+sum(dimensions(1:indBDWarma-1)):sum(dimensions(1:indBDWarma))),1,[]);
+							if any(crossentries~=0)
+								error('FrontalForcingsRignotarma and BasalforcingsDeepwaterMeltingRatearma have different arma_timestep and non-zero covariance');
+							end
+						end
+					end
+				end
+			elseif(indPwarma~=-1)
+				if(indSdarma~=-1)
+					if(md.frontalforcings.sd_arma_timestep~=md.hydrology.arma_timestep)
+						for(ii=[1:numel(lsCovmats)])
+							covm = lsCovmats{ii};
+							crossentries = reshape(covm(1+sum(dimensions(1:indSdarma-1)):sum(dimensions(1:indSdarma)),1+sum(dimensions(1:indPwarma-1)):sum(dimensions(1:indPwarma))),1,[]);
+							if any(crossentries~=0)
+								error('FrontalForcingsSubglacialDischargearma and hydrologyarmapw have different arma_timestep and non-zero covariance');
+							end
+						end
+					end
+				elseif(indSMBarma~=-1)
+					if(md.smb.arma_timestep~=md.hydrology.arma_timestep)
+						for(ii=[1:numel(lsCovmats)])
+							covm = lsCovmats{ii};
+							crossentries = reshape(covm(1+sum(dimensions(1:indSMBarma-1)):sum(dimensions(1:indSMBarma)),1+sum(dimensions(1:indPwarma-1)):sum(dimensions(1:indPwarma))),1,[]);
+							if any(crossentries~=0)
+								error('SMBarma and hydrologyarmapw have different arma_timestep and non-zero covariance');
+							end
+						end
+					end
+				elseif(indTFarma~=-1)
+					if(md.frontalforcings.arma_timestep~=md.hydrology.arma_timestep)
+						for(ii=[1:numel(lsCovmats)])
+							covm = lsCovmats{ii};
+							crossentries = reshape(covm(1+sum(dimensions(1:indTFarma-1)):sum(dimensions(1:indTFarma)),1+sum(dimensions(1:indPwarma-1)):sum(dimensions(1:indPwarma))),1,[]);
+							if any(crossentries~=0)
+								error('FrontalForcingsRignotarma and hydrologyarmapw have different arma_timestep and non-zero covariance');
+							end
+						end
+					end
+				end
+			elseif(indSdarma~=-1)
+				if(indSMBarma~=-1)
+					if(md.smb.arma_timestep~=md.frontalforcings.sd_arma_timestep)
+						for(ii=[1:numel(lsCovmats)])
+							covm = lsCovmats{ii};
+							crossentries = reshape(covm(1+sum(dimensions(1:indSMBarma-1)):sum(dimensions(1:indSMBarma)),1+sum(dimensions(1:indSdarma-1)):sum(dimensions(1:indSdarma))),1,[]);
+							if any(crossentries~=0)
+								error('SMBarma and FrontalForcingsSubglacialDischargearma have different arma_timestep and non-zero covariance');
+							end
+						end
+					end
+				elseif(indTFarma~=-1)
+					if(md.frontalforcings.sd_arma_timestep~=md.frontalforcings.arma_timestep)
+						for(ii=[1:numel(lsCovmats)])
+							covm = lsCovmats{ii};
+							crossentries = reshape(covm(1+sum(dimensions(1:indSdarma-1)):sum(dimensions(1:indSdarma)),1+sum(dimensions(1:indTFarma-1)):sum(dimensions(1:indTFarma))),1,[]);
+							if any(crossentries~=0)
+								error('FrontalForcingsRignotarma and FrontalForcingsSubglacialDischargearma have different arma_timestep and non-zero covariance');
+							end
+						end
+					end
+				end
+			elseif(indSMBarma~=-1)
+				if(indTFarma~=-1)
+					if(md.smb.arma_timestep~=md.frontalforcings.arma_timestep)
+						for(ii=[1:numel(lsCovmats)])
+							covm = lsCovmats{ii};
+							crossentries = reshape(covm(1+sum(dimensions(1:indSMBarma-1)):sum(dimensions(1:indSMBarma)),1+sum(dimensions(1:indTFarma-1)):sum(dimensions(1:indTFarma))),1,[]);
+							if any(crossentries~=0)
+								error('SMBarma and FrontalForcingsRignotarma have different arma_timestep and non-zero covariance');
+							end
+						end
+					end
+				end
+			end
+			%%% End of consistency checks between ARMA models %%%
+
+			md = checkfield(md,'fieldname','stochasticforcing.isstochasticforcing','values',[0 1]);
+			md = checkfield(md,'fieldname','stochasticforcing.fields','numel',num_fields,'cell',1,'values',supportedstochforcings());
+			md = checkfield(md,'fieldname','stochasticforcing.covariance','NaN',1,'Inf',1,'size',[size_tot,size_tot,numtcovmat]); %global covariance matrix
+			md = checkfield(md,'fieldname','stochasticforcing.stochastictimestep','NaN',1,'Inf',1,'>=',md.timestepping.time_step);
+			md = checkfield(md,'fieldname','stochasticforcing.randomflag','numel',[1],'values',[0 1]);
+			if(numtcovmat>1) %check the time steps at which each covariance matrix starts to be applied
+				md = checkfield(md,'fieldname','stochasticforcing.timecovariance','NaN',1,'Inf',1,'>=',md.timestepping.start_time,'<=',md.timestepping.final_time,'size',[1,numtcovmat]);
+			end
+			if(checkdefaults) %need to check the defaults
+				md = checkfield(md,'fieldname','stochasticforcing.defaultdimension','numel',1,'NaN',1,'Inf',1,'>',0);
+				md = checkfield(md,'fieldname','stochasticforcing.default_id','Inf',1,'>=',0,'<=',self.defaultdimension,'size',[md.mesh.numberofelements,1]);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   stochasticforcing parameters:'));
+			fielddisplay(self,'isstochasticforcing','is stochasticity activated?');
+			fielddisplay(self,'fields','fields with stochasticity applied, ex: [{''SMBarma''}], or [{''SMBforcing''},{''DefaultCalving''}]');
+			fielddisplay(self,'defaultdimension','dimensionality of the noise terms (does not apply to fields with their specific dimension)');
+			fielddisplay(self,'default_id','id of each element for partitioning of the noise terms (does not apply to fields with their specific partition)');
+			fielddisplay(self,'covariance',{'covariance matrix for within- and between-fields covariance (units must be squared field units)','multiple matrices can be concatenated along 3rd dimension to apply different covariances in time'}); 
+			fielddisplay(self,'timecovariance','starting dates at which covariances apply (only applicabe if multiple covariance matrices are prescribed)'); 
+			fielddisplay(self,'stochastictimestep','timestep at which new stochastic noise terms are generated (default: md.timestepping.time_step)');
+			fielddisplay(self,'randomflag','whether to apply real randomness (true) or pseudo-randomness with fixed seed (false)');
+			disp('Available fields:');
+			for field=supportedstochforcings()
+				fprintf('   %s\n',string(field));
+			end
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+			num_fields = numel(self.fields);
+
+			WriteData(fid,prefix,'object',self,'fieldname','isstochasticforcing','format','Boolean');
+			if ~self.isstochasticforcing 
+				return
+			else
+
+				if(self.stochastictimestep==0)
+					disp('      stochasticforcing.stocahstictimestep not specified: set to md.timestepping.time_step');
+					self.stochastictimestep = md.timestepping.time_step; %by default: stochastictimestep set to ISSM time step
+				end
+
+				% Check if hydrolgyarmapw is used
+				if(strcmp(class(md.hydrology),'hydrologyarmapw') && md.transient.ishydrology==1)
+         	   ispwHydroarma = 1;
+         	else
+         	   ispwHydroarma = 0;
+         	end
+				%Retrieve dimensionality of each field
+				dimensions = self.defaultdimension*ones(1,num_fields);
+				ind = 1;
+				for field=self.fields
+					%Checking for specific dimensions
+					if(strcmp(field,'SMBarma'))
+						dimensions(ind) = md.smb.num_basins;
+					end
+					if(strcmp(field,'FrontalForcingsRignotarma'))
+						dimensions(ind) = md.frontalforcings.num_basins;
+					end
+					if(strcmp(field,'FrontalForcingsSubglacialDischargearma'))
+						dimensions(ind) = md.frontalforcings.num_basins;
+					end
+					if(strcmp(field,'BasalforcingsDeepwaterMeltingRatearma'))
+						dimensions(ind) = md.basalforcings.num_basins;
+					end
+					if(strcmp(field,'BasalforcingsDeepwaterMeltingRatearma'))
+						dimensions(ind) = md.basalforcings.num_basins;
+					end
+					if(strcmp(field,'FrictionWaterPressure') && ispwHydroarma)
+						dimensions(ind) = md.hydrology.num_basins;
+				   end
+					ind = ind+1;
+				end
+
+   			if(numel(size(self.covariance))==3)
+   				[nrow,ncol,numtcovmat] = size(self.covariance);
+   				lsCovmats = {};
+   				for ii=[1:numtcovmat] %loop over 3rd dimension
+   					lsCovmats{ii} = self.covariance(:,:,ii);
+   				end
+					if(md.timestepping.interp_forcing==1)
+					   disp('WARNING: md.timestepping.interp_forcing is 1, but be aware that there is no interpolation between covariance matrices');
+					   disp('         the changes between covariance matrices occur at the time steps specified in md.stochasticforcing.timecovariance');
+					end
+				elseif(numel(size(self.covariance)==2))
+   				[nrow,ncol] = size(self.covariance);
+   				numtcovmat = 1; %number of covariance matrices in time
+   				lsCovmats = {self.covariance};
+   			end
+   
+				%Scaling covariance matrix (scale column-by-column and row-by-row)
+				scaledfields = {'BasalforcingsDeepwaterMeltingRatearma','BasalforcingsSpatialDeepwaterMeltingRate','DefaultCalving','FloatingMeltRate','SMBarma','SMBforcing'}; %list of fields that need scaling *1/yts
+				tempcovariance2d = zeros(numtcovmat,sum(nrow*ncol)); %covariance matrices in 2d array
+				% Loop over covariance matrices %
+				for kk=[1:numtcovmat]
+					kkcov = self.covariance(:,:,kk); %extract covariance at index kk
+					% Loop over the fields %
+					for i=1:num_fields
+						if any(strcmp(scaledfields,self.fields(i)))
+							inds = [1+sum(dimensions(1:i-1)):1:sum(dimensions(1:i))];
+							for row=inds %scale rows corresponding to scaled field
+								kkcov(row,:) = 1./yts*kkcov(row,:);
+							end
+							for col=inds %scale columns corresponding to scaled field
+								kkcov(:,col) = 1./yts*kkcov(:,col);
+							end
+						end
+					end
+					% Save scaled covariance %
+					for rr=[1:nrow]
+						ind0 = 1+(rr-1)*ncol;
+						tempcovariance2d(kk,ind0:ind0+ncol-1) = kkcov(rr,:);
+					end
+				end
+				%Set dummy default_id vector if defaults not used
+				if isnan(self.default_id)
+					self.default_id = zeros(md.mesh.numberofelements,1);
+				end
+				%Set dummy timecovariance vector if a single covariance matrix is used
+				if(numtcovmat==1)
+					self.timecovariance = [md.timestepping.start_time];
+				end
+
+				WriteData(fid,prefix,'data',num_fields,'name','md.stochasticforcing.num_fields','format','Integer');
+				WriteData(fid,prefix,'object',self,'fieldname','fields','format','StringArray');
+				WriteData(fid,prefix,'data',dimensions,'name','md.stochasticforcing.dimensions','format','IntMat');
+				WriteData(fid,prefix,'object',self,'fieldname','default_id','data',self.default_id-1,'format','IntMat','mattype',2); %0-indexed
+				WriteData(fid,prefix,'object',self,'fieldname','defaultdimension','format','Integer');
+				WriteData(fid,prefix,'data',numtcovmat,'name','md.stochasticforcing.num_timescovariance','format','Integer');
+				WriteData(fid,prefix,'data',tempcovariance2d,'name','md.stochasticforcing.covariance','format','DoubleMat');
+				WriteData(fid,prefix,'object',self,'fieldname','timecovariance','format','DoubleMat','scale',yts);
+				WriteData(fid,prefix,'object',self,'fieldname','stochastictimestep','format','Double','scale',yts);
+				WriteData(fid,prefix,'object',self,'fieldname','randomflag','format','Boolean');
+			end
+		end % }}}
+	end
+end
+function list = supportedstochforcings() % {{{
+	% Defines list of fields supported
+	% by the class md.stochasticforcing
+
+	list = structstochforcing();
+	list = list.fields;
+end % }}}
+function structure = structstochforcing() % {{{
+	% Defines structure with list of fields
+	% supported and corresponding md names
+	structure.fields = {...
+		'BasalforcingsDeepwaterMeltingRatearma',...
+		'BasalforcingsSpatialDeepwaterMeltingRate',...
+		'DefaultCalving',...
+		'FloatingMeltRate',...
+		'FrictionWaterPressure',...
+		'FrictionWaterPressure',...
+		'FrictionWaterPressure',...
+		'FrontalForcingsRignotarma',...
+		'FrontalForcingsSubglacialDischargearma',...
+		'SMBarma',...
+		'SMBforcing'
+		};
+	structure.mdnames = {...
+		'linearbasalforcingsarma',...
+		'spatiallinearbasalforcings',...
+		'calving',...
+		'basalforcings',...
+		'friction',...
+		'frictioncoulomb',...
+		'frictionschoof',...
+		'frontalforcingsrignotarma',...
+		'frontalforcingsrignotarma',...
+		'SMBarma',...
+		'SMBforcing'
+	};
+end % }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/stochasticforcing.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/stochasticforcing.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/stochasticforcing.py	(revision 27955)
@@ -0,0 +1,376 @@
+import numpy as np
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class stochasticforcing(object):
+    """stochasticforcing class definition
+
+    Usage:
+        stochasticforcing = stochasticforcing()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.isstochasticforcing = 0
+        self.fields = np.nan
+        self.defaultdimension = 0
+        self.default_id = np.nan
+        self.covariance = np.nan
+        self.timecovariance = np.nan
+        self.stochastictimestep = 0
+        self.randomflag = 1
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            raise RuntimeError('constructor not supported for stochasticforcing')
+
+    def __repr__(self):  # {{{
+        s = '   stochasticforcing parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'isstochasticforcing', 'is stochasticity activated?'))
+        s += '{}\n'.format(fielddisplay(self, 'fields', 'fields with stochasticity applied, ex: [\'SMBautoregression\'], or [\'SMBforcing\',\'DefaultCalving\']'))
+        s += '{}\n'.format(fielddisplay(self, 'defaultdimension', 'dimensionality of the noise terms (does not apply to fields with their specific dimension)'))
+        s += '{}\n'.format(fielddisplay(self, 'default_id', 'id of each element for partitioning of the noise terms (does not apply to fields with their specific partition)'))
+        s += '{}\n'.format(fielddisplay(self, 'covariance', 'covariance matrix for within- and between-fields covariance (units must be squared field units),multiple matrices can be concatenated along 3rd dimension to apply different covariances in time'))
+        s += '{}\n'.format(fielddisplay(self, 'timecovariance', 'starting dates at which covariances apply (only applicabe if multiple covariance matrices are prescribed)'))
+        s += '{}\n'.format(fielddisplay(self, 'stochastictimestep', 'timestep at which new stochastic noise terms are generated (default: md.timestepping.time_step)'))
+        s += '{}\n'.format(fielddisplay(self, 'randomflag', 'whether to apply real randomness (true) or pseudo-randomness with fixed seed (false)'))
+        s += 'Available fields:\n'
+        s += '   BasalforcingsDeepwaterMeltingRatearma\n'
+        s += '   BasalforcingsSpatialDeepwaterMeltingRate\n'
+        s += '   DefaultCalving\n'
+        s += '   FloatingMeltRate\n'
+        s += '   FrictionWaterPressure\n'
+        s += '   FrictionCoulombWaterPressure\n'
+        s += '   FrictionSchoofWaterPressure\n'
+        s += '   FrontalForcingsRignotarma (thermal forcing)\n'
+        s += '   FrontalForcingsSubglacialDischargearma\n'
+        s += '   SMBarma\n'
+        s += '   SMBforcing\n'
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Type of stabilization used
+        self.isstochasticforcing = 0  # stochasticforcing is turned off by default
+        self.fields = []  # Need to initialize to list to avoid "RuntimeError: object of type 'float' has no len()" on import of class
+        self.randomflag = 1  # true randomness is implemented by default
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if not self.isstochasticforcing:
+            return md
+
+        num_fields = len(self.fields)
+        if self.stochastictimestep == 0:
+            md.stochasticforcing.stochastictimestep = md.timestepping.time_step #by default: stochastictimestep set to ISSM time step
+            print('      stochasticforcing.stocahstictimestep not specified: set to md.timestepping.time_step')
+
+        if(len(np.shape(self.covariance))==3):
+           numtcovmat = np.shape(self.covariance)[2] #number of covariance matrices in time
+           lsCovmats = []
+           for ii in range(numtcovmat):
+               lsCovmats.append(self.covariance[:,:,ii])
+               try:
+                   np.linalg.cholesky(self.covariance[:,:,ii])
+               except:
+                   raise TypeError('an entry in md.stochasticforcing.covariance is not positive definite')
+        elif(len(np.shape(self.covariance))==2):
+            numtcovmat = 1
+            lsCovmats = [self.covariance]
+            # Check that covariance matrix is positive definite (this is done internally by linalg)
+            try:
+                np.linalg.cholesky(self.covariance)
+            except:
+                raise TypeError('md.stochasticforcing.covariance is not positive definite')
+
+        # Check that all fields agree with the corresponding md class and if any field needs the default params
+        checkdefaults = False  # Need to check defaults only if one of the fields does not have its own dimensionality
+        structstoch = self.structstochforcing()
+        # Check if hydrologyarmapw is used
+        if((type(md.hydrology).__name__ == 'hydrologyarmapw') and md.transient.ishydrology==1):
+            ispwHydroarma = 1
+        else:
+            ispwHydroarma = 0
+        for field in self.fields:
+            # Checking agreement of classes
+            if 'SMBarma' in field:
+                mdname = structstoch[field]
+                if type(md.smb).__name__ != mdname:
+                    raise TypeError('md.smb does not agree with stochasticforcing field {}'.format(field))
+            if 'SMBforcing' in field:
+                mdname = structstoch[field]
+                if type(md.smb).__name__ != mdname:
+                    raise TypeError('md.smb does not agree with stochasticforcing field {}'.format(field))
+            if 'FrontalForcings' in field:
+                mdname = structstoch[field]
+                if type(md.frontalforcings).__name__ != mdname:
+                    raise TypeError('md.frontalforcings does not agree with stochasticforcing field {}'.format(field))
+            if 'Calving' in field:
+                mdname = structstoch[field]
+                if type(md.calving).__name__ != mdname:
+                    raise TypeError('md.calving does not agree with stochasticforcing field {}'.format(field))
+            if 'BasalforcingsFloatingice' in field:
+                mdname = structstoch[field]
+                if type(md.basalforcings).__name__ != mdname:
+                    raise TypeError('md.basalforcings does not agree with stochasticforcing field {}'.format(field))
+            if 'BasalforcingsSpatialDeepwaterMeltingRate' in field:
+                mdname = structstoch[field]
+                if type(md.basalforcings).__name__ != mdname:
+                    raise TypeError('md.basalforcings does not agree with stochasticforcing field {}'.format(field))
+            if 'BasalforcingsDeepwaterMeltingRatearma' in field:
+                mdname = structstoch[field]
+                if type(md.basalforcings).__name__ != mdname:
+                    raise TypeError('md.basalforcings does not agree with stochasticforcing field {}'.format(field))
+            if 'WaterPressure' in field:
+                #mdname = structstoch[field]
+                mdnames = ['friction','frictioncoulomb','frictionschoof']
+                found   = 0
+                for ii in range(len(mdnames)):
+                    if type(md.friction).__name__ == mdnames[ii]:
+                        found = 1
+                if not found:
+                    raise TypeError('md.friction does not agree with stochasticforcing field {}'.format(field))
+                #if (type(md.friction).__name__ != mdname):
+                #    raise TypeError('md.friction does not agree with stochasticforcing field {}'.format(field))
+                if type(md.friction).__name__ == 'friction' or type(md.friction).__name__ == 'frictionschoof' or type(md.friction).__name__=='frictioncoulomb':
+                    if md.friction.coupling not in[0, 1, 2]:
+                        raise TypeError('stochasticforcing field {} is only implemented for cases md.friction.coupling 0 or 1 or 2'.format(field))
+                if type(md.friction).__name__ == 'friction':
+                    if (np.any(md.friction.q == 0)):
+                        raise TypeError('stochasticforcing field {} requires non-zero q exponent'.format(field))
+
+            # Checking for specific dimensions
+            if field not in ['SMBarma', 'FrontalForcingsRignotarma','BasalforcingsDeepwaterMeltingRatearma']  and not (field == 'FrictionWaterPressure' and ispwHydroarma == True):
+                checkdefaults = True  # field with non-specific dimensionality
+
+        # Retrieve sum of all the field dimensionalities
+        dimensions = self.defaultdimension * np.ones((num_fields))
+        indSMBarma   = -1  # About to check for index of SMBarma
+        indTFarma    = -1  # About to check for index of FrontalForcingsRignotarma
+        indSdarma    = -1  # About to check for index of FrontalForcingsSubglacialDischargearma
+        indBDWarma   = -1  # About to check for index of BasalforcingsDeepwaterMeltingRatearma
+        indPwarma    = -1  # About to check for index of hydrologyarmapw
+        if 'SMBarma' in self.fields:
+            indSMBarma = self.fields.index('SMBarma')  # Index of SMBarma, now check for consistency with other timesteps
+            dimensions[indSMBarma] = md.smb.num_basins
+            if(md.smb.arma_timestep<self.stochastictimestep):
+                raise TypeError('SMBarma cannot have a timestep shorter than stochastictimestep')
+        if 'FrontalForcingsRignotarma' in self.fields:
+            indTFarma = self.fields.index('FrontalForcingsRignotarma')  # Index of TFarma, now check for consistency with other timesteps
+            dimensions[indTFarma] = md.frontalforcings.num_basins
+            if md.frontalforcings.arma_timestep < self.stochastictimestep:
+                raise TypeError('FrontalForcingsRignotarma cannot have a timestep shorter than stochastictimestep')
+        if 'FrontalForcingsSubglacialDischargearma' in self.fields:
+            indSdarma = self.fields.index('FrontalForcingsSubglacialDischargearma')  # Index of Sdarma, now check for consistency with other timesteps
+            dimensions[indSdarma] = md.frontalforcings.num_basins
+            if md.frontalforcings.sd_arma_timestep < self.stochastictimestep:
+                raise TypeError('FrontalForcingsSubglacialDischargearma cannot have a timestep shorter than stochastictimestep')
+        if 'BasalforcingsDeepwaterMeltingRatearma' in self.fields:
+            indBDWarma = self.fields.index('BasalforcingsDeepwaterMeltingRatearma')  # Index of BDWarma, now check for consistency with other timesteps
+            dimensions[indTFarma] = md.basalforcings.num_basins
+            if md.basalforcings.arma_timestep < self.stochastictimestep:
+                raise TypeError('BasalforcingsDeepwaterMeltingRatearma cannot have a timestep shorter than stochastictimestep')
+        if 'FrictionWaterPressure' in self.fields and ispwHydroarma:
+            indPwarma = self.fields.index('FrictionWaterPressure')  # Index of Pwarma, now check for consistency with other timesteps
+            dimensions[indPwarma] = md.hydrology.num_basins
+            if md.hydrology.arma_timestep < self.stochastictimestep:
+                raise TypeError('hydrologyarmapw cannot have a timestep shorter than stochastictimestep')
+        size_tot = np.sum(dimensions)
+
+        if indBDWarma != -1:
+            if indPwarma != -1:
+                for ii in range(len(lsCovmats)):
+                    covm = lsCovmats[ii]
+                    covsum = covm[np.sum(dimensions[0:indBDWarma]).astype(int):np.sum(dimensions[0:indBDWarma + 1]).astype(int), np.sum(dimensions[0:indPwarma]).astype(int):np.sum(dimensions[0:indPwarma + 1]).astype(int)]
+                    if md.smb.arma_timestep != md.hydrology.arma_timestep and np.any(covsum != 0):
+                        raise IOError('BasalforcingsDeepwaterMeltingRatarma and hydrologyarmapw have different arma_timestep and non-zero covariance')
+            elif indSdarma != -1:
+                for ii in range(len(lsCovmats)):
+                    covm = lsCovmats[ii]
+                    covsum = covm[np.sum(dimensions[0:indSdarma]).astype(int):np.sum(dimensions[0:indSdarma + 1]).astype(int), np.sum(dimensions[0:indBDWarma]).astype(int):np.sum(dimensions[0:indBDWarma + 1]).astype(int)]
+                    if md.frontalforcings.sd_arma_timestep != md.basalforcings.arma_timestep and np.any(covsum != 0):
+                        raise IOError('FrontalForcingsSubglacialDischargearma and BasalforcingsDeepwaterMeltingRatearma have different arma_timestep and non-zero covariance')
+            elif indSMBarma != -1:
+                for ii in range(len(lsCovmats)):
+                    covm = lsCovmats[ii]
+                    covsum = covm[np.sum(dimensions[0:indSMBarma]).astype(int):np.sum(dimensions[0:indSMBarma + 1]).astype(int), np.sum(dimensions[0:indBDWarma]).astype(int):np.sum(dimensions[0:indBDWarma + 1]).astype(int)]
+                    if md.smb.arma_timestep != md.basalforcings.arma_timestep and np.any(covsum != 0):
+                        raise IOError('SMBarma and BasalforcingsDeepwaterMeltingRatearma have different arma_timestep and non-zero covariance')
+            elif indTFarma != -1:
+                for ii in range(len(lsCovmats)):
+                    covm = lsCovmats[ii]
+                    covsum = covm[np.sum(dimensions[0:indTFarma]).astype(int):np.sum(dimensions[0:indTFarma + 1]).astype(int), np.sum(dimensions[0:indBDWarma]).astype(int):np.sum(dimensions[0:indBDWarma + 1]).astype(int)]
+                    if md.frontalforcings.arma_timestep != md.basalforcings.arma_timestep and np.any(covsum != 0):
+                        raise IOError('FrontalForcingsRignotarma and BasalforcingsDeepwaterMeltingRatearma have different arma_timestep and non-zero covariance')
+        elif indPwarma != -1:
+            if indSdarma != -1:
+                for ii in range(len(lsCovmats)):
+                    covm = lsCovmats[ii]
+                    covsum = covm[np.sum(dimensions[0:indSdarma]).astype(int):np.sum(dimensions[0:indSdarma + 1]).astype(int), np.sum(dimensions[0:indPwarma]).astype(int):np.sum(dimensions[0:indPwarma + 1]).astype(int)]
+                    if md.frontalforcings.sd_arma_timestep != md.hydrology.arma_timestep and np.any(covsum != 0):
+                        raise IOError('FrontalForingsSubglacialDischargearma and hydrologyarmapw have different arma_timestep and non-zero covariance')
+            elif indSMBarma != -1:
+                for ii in range(len(lsCovmats)):
+                    covm = lsCovmats[ii]
+                    covsum = covm[np.sum(dimensions[0:indSMBarma]).astype(int):np.sum(dimensions[0:indSMBarma + 1]).astype(int), np.sum(dimensions[0:indPwarma]).astype(int):np.sum(dimensions[0:indPwarma + 1]).astype(int)]
+                    if md.smb.arma_timestep != md.hydrology.arma_timestep and np.any(covsum != 0):
+                        raise IOError('SMBarma and hydrologyarmapw have different arma_timestep and non-zero covariance')
+            elif indTFarma != -1:
+                for ii in range(len(lsCovmats)):
+                    covm = lsCovmats[ii]
+                    covsum = covm[np.sum(dimensions[0:indTFarma]).astype(int):np.sum(dimensions[0:indTFarma + 1]).astype(int), np.sum(dimensions[0:indPwarma]).astype(int):np.sum(dimensions[0:indPwarma + 1]).astype(int)]
+                    if md.frontalforcings.arma_timestep != md.hydrology.arma_timestep and np.any(covsum != 0):
+                        raise IOError('FrontalForcingsRignotarma and hydrologyarmapw have different arma_timestep and non-zero covariance')
+        elif indSdarma != -1:
+            if indSMBarma != -1:
+                for ii in range(len(lsCovmats)):
+                    covm = lsCovmats[ii]
+                    covsum = covm[np.sum(dimensions[0:indSMBarma]).astype(int):np.sum(dimensions[0:indSMBarma + 1]).astype(int), np.sum(dimensions[0:indSdarma]).astype(int):np.sum(dimensions[0:indSdarma + 1]).astype(int)]
+                    if md.smb.arma_timestep != md.frontalforcings.sd_arma_timestep and np.any(covsum != 0):
+                        raise IOError('SMBarma and FrontalForcingsSubglacialDischargearma have different arma_timestep and non-zero covariance')
+            elif indTFarma != -1:
+                for ii in range(len(lsCovmats)):
+                    covm = lsCovmats[ii]
+                    covsum = covm[np.sum(dimensions[0:indSdarma]).astype(int):np.sum(dimensions[0:indSdarma + 1]).astype(int), np.sum(dimensions[0:indTFarma]).astype(int):np.sum(dimensions[0:indTFarma + 1]).astype(int)]
+                    if md.frontalforcings.sd_arma_timestep != md.frontalforcings.arma_timestep and np.any(covsum != 0):
+                        raise IOError('FrontalForcingsSubglacialDischargearma and FrontalForcingsRignotarma have different arma_timestep and non-zero covariance')
+        elif indSMBarma != -1:
+            if indTFarma != -1:
+                for ii in range(len(lsCovmats)):
+                    covm = lsCovmats[ii]
+                    covsum = covm[np.sum(dimensions[0:indSMBarma]).astype(int):np.sum(dimensions[0:indSMBarma + 1]).astype(int), np.sum(dimensions[0:indTFarma]).astype(int):np.sum(dimensions[0:indTFarma + 1]).astype(int)]
+                    if md.smb.arma_timestep != md.frontalforcings.arma_timestep and np.any(covsum != 0):
+                        raise IOError('SMBarma and FrontalForcingsRignotarma have different arma_timestep and non-zero covariance')
+
+        md = checkfield(md, 'fieldname', 'stochasticforcing.isstochasticforcing', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'stochasticforcing.fields', 'numel', num_fields, 'cell', 1, 'values', self.supportedstochforcings())
+        md = checkfield(md, 'fieldname', 'stochasticforcing.covariance', 'NaN', 1, 'Inf', 1, 'size', [size_tot, size_tot, numtcovmat])  # global covariance matrix
+        md = checkfield(md, 'fieldname', 'stochasticforcing.stochastictimestep', 'NaN', 1,'Inf', 1, '>=', md.timestepping.time_step)
+        md = checkfield(md, 'fieldname', 'stochasticforcing.randomflag', 'numel', [1], 'values', [0, 1])
+        if(numtcovmat>1): #check the time steps at which each covariance matrix starts to be applie
+            md = checkfield(md, 'fieldname', 'stochasticforcing.timecovariance', 'NaN', 1, 'Inf', 1, '>=',md.timestepping.start_time,'<=',md.timestepping.final_time,'size',[1,numtcovmat])  # global covariance matrix
+        if checkdefaults:
+            md = checkfield(md, 'fieldname', 'stochasticforcing.defaultdimension', 'numel', 1, 'NaN', 1, 'Inf', 1, '>', 0)
+            md = checkfield(md, 'fieldname', 'stochasticforcing.default_id', 'Inf', 1, 'NaN', 1, '>=', 0, '<=', self.defaultdimension, 'size', [md.mesh.numberofelements])
+        return md
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.default_id = project3d(md,'vector',self.default_id,'type','element')
+        return self
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isstochasticforcing', 'format', 'Boolean')
+        if not self.isstochasticforcing:
+            return md
+        else:
+            num_fields = len(self.fields)
+            if self.stochastictimestep == 0:
+                md.stochasticforcing.stochastictimestep = md.timestepping.time_step #by default: stochastictimestep set to ISSM time step
+            # Check if hydroarmapw is used
+            if((type(md.hydrology).__name__ == 'hydrologyarmapw') and md.transient.ishydrology==1):
+                ispwHydroarma = 1
+            else:
+                ispwHydroarma = 0
+
+            # Retrieve dimensionality of each field
+            dimensions = self.defaultdimension * np.ones((num_fields))
+            for ind, field in enumerate(self.fields):
+                # Checking for specific dimensions
+                if field == 'SMBarma':
+                    dimensions[ind] = md.smb.num_basins
+                elif field == 'FrontalForcingsRignotarma':
+                    dimensions[ind] = md.frontalforcings.num_basins
+                elif field == 'FrontalForcingsSubglacialDischargearma':
+                    dimensions[ind] = md.frontalforcings.num_basins
+                elif field == 'BasalforcingsDeepwaterMeltingRatearma':
+                    dimensions[ind] = md.basalforcings.num_basins
+                elif field == 'FrictionWaterPressure' and ispwHydroarma:
+                    dimensions[ind] = md.hydrology.num_basins
+            
+            if(len(np.shape(self.covariance))==3):
+                nrow,ncol,numtcovmat = np.shape(self.covariance)
+                lsCovmats = []
+                for ii in range(numtcovmat):
+                    lsCovmats.append(self.covariance[:,:,ii])
+                if(md.timestepping.interp_forcing==1):
+                    print('WARNING: md.timestepping.interp_forcing is 1, but be aware that there is no interpolation between covariance matrices')
+                    print('         the changes between covariance matrices occur at the time steps specified in md.stochasticforcing.timecovariance')
+            elif(len(np.shape(self.covariance))==2):
+                nrow,ncol = np.shape(self.covariance)
+                numtcovmat = 1
+                lsCovmats = [self.covariance]
+
+            # Scaling covariance matrix (scale column-by-column and row-by-row)
+            scaledfields = ['BasalforcingsDeepwaterMeltingRatearma','BasalforcingsSpatialDeepwaterMeltingRate','DefaultCalving', 'FloatingMeltRate', 'SMBarma', 'SMBforcing']  # list of fields that need scaling * 1 / yts
+            tempcovariance2d = np.zeros((numtcovmat,nrow*ncol))
+            # Loop over covariance matrices #
+            for kk in range(numtcovmat):
+                kkcov = lsCovmats[kk]
+                # Loop over the fields #
+                for i in range(num_fields):
+                    if self.fields[i] in scaledfields:
+                        inds = range(int(np.sum(dimensions[0:i])), int(np.sum(dimensions[0:i + 1])))
+                        for row in inds:  # scale rows corresponding to scaled field
+                            kkcov[row, :] = 1 / yts * kkcov[row, :]
+                        for col in inds:  # scale columns corresponding to scaled field
+                            kkcov[:, col] = 1 / yts * kkcov[:, col]
+                # Save scaled covariance #
+                for rr in range(nrow):
+                    ind0 = rr*ncol
+                    tempcovariance2d[kk,ind0:ind0+ncol] = np.copy(kkcov[rr,:])
+                    
+            # Set dummy default_id vector if defaults not used
+            if np.any(np.isnan(self.default_id)):
+                self.default_id = np.zeros(md.mesh.numberofelements)
+            # Set dummy timecovariance vector if a single covariance matrix is used
+            if(numtcovmat==1):
+                self.timecovariance = np.array([md.timestepping.start_time])
+            # Reshape dimensions as column array for marshalling
+            dimensions = dimensions.reshape(1, len(dimensions))
+
+            WriteData(fid, prefix, 'data', num_fields, 'name', 'md.stochasticforcing.num_fields', 'format', 'Integer')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'fields', 'format', 'StringArray')
+            WriteData(fid, prefix, 'data', dimensions, 'name', 'md.stochasticforcing.dimensions', 'format', 'IntMat', 'mattype', 2)
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'default_id', 'data', self.default_id - 1, 'format', 'IntMat', 'mattype', 2)  #12Nov2021 make sure this is zero-indexed!
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'defaultdimension', 'format', 'Integer')
+            WriteData(fid, prefix, 'data', numtcovmat, 'name', 'md.stochasticforcing.num_timescovariance', 'format', 'Integer')
+            WriteData(fid, prefix, 'data', tempcovariance2d, 'name', 'md.stochasticforcing.covariance', 'format', 'DoubleMat')
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'timecovariance', 'format', 'DoubleMat', 'scale', yts)
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'stochastictimestep', 'format', 'Double', 'scale', yts)
+            WriteData(fid, prefix, 'object', self, 'fieldname', 'randomflag', 'format', 'Boolean')
+    # }}}
+
+    def supportedstochforcings(self):  # {{{
+        """Defines list of fields supported by the class md.stochasticforcing
+        """
+        list1 = self.structstochforcing()
+        list1 = list1.keys()
+        return list(list1)
+    # }}}
+
+    def structstochforcing(self):  # {{{
+        """Defines dictionary with list of fields
+           supported and corresponding md names
+        """
+        structure = {'BasalforcingsDeepwaterMeltingRatearma': 'linearbasalforcingsarma',
+                     'BasalforcingsSpatialDeepwaterMeltingRate': 'spatiallinearbasalforcings',
+                     'DefaultCalving': 'calving',
+                     'FloatingMeltRate': 'basalforcings',
+                     'FrictionWaterPressure': 'friction',
+                     'FrictionWaterPressure': 'frictioncoulomb',
+                     'FrictionWaterPressure': 'frictionschoof',
+                     'FrontalForcingsRignotarma': 'frontalforcingsrignotarma',
+                     'FrontalForcingsSubglacialDischargearma': 'frontalforcingsrignotarma',
+                     'SMBarma': 'SMBarma',
+                     'SMBforcing': 'SMBforcing'}
+        return structure
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/stressbalance.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/stressbalance.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/stressbalance.js	(revision 27955)
@@ -0,0 +1,218 @@
+//STRESSBALANCE class definition
+//
+//   Usage:
+//      stressbalance=new stressbalance();
+
+function stressbalance (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//maximum of non-linear iterations.
+		this.maxiter=100;
+
+		//Convergence criterion: absolute, relative and residual
+		this.restol=Math.pow(10,-4); 
+		this.reltol=0.01;
+		this.abstol=10;
+
+		this.FSreconditioning=Math.pow(10,13);
+		this.shelf_dampening=0;
+
+		//Penalty factor applied kappa=max(stiffness matrix)*10^penalty_factor
+		this.penalty_factor=3;
+
+		//Stop the iterations of rift if below a threshold
+		this.rift_penalty_threshold=0;
+
+		//in some solutions, it might be needed to stop a run when only
+		//a few constraints remain unstable. For thermal computation, this
+		//parameter is often used.
+		this.rift_penalty_lock=10;
+
+		//output default:
+		this.requested_outputs=['default'];
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   StressBalance solution parameters:'));
+
+		console.log(sprintf('\n      %s','Convergence criteria:'));
+		fielddisplay(this,'restol','mechanical equilibrium residual convergence criterion');
+		fielddisplay(this,'reltol','velocity relative convergence criterion, NaN: not applied');
+		fielddisplay(this,'abstol','velocity absolute convergence criterion, NaN: not applied');
+		fielddisplay(this,'isnewton',"0: Picard's fixed point, 1: Newton's method, 2: hybrid");
+		fielddisplay(this,'maxiter','maximum number of nonlinear iterations');
+
+		console.log(sprintf('\n      %s','boundary conditions:'));
+		fielddisplay(this,'spcvx','x-axis velocity constraint (NaN means no constraint) [m/yr]');
+		fielddisplay(this,'spcvy','y-axis velocity constraint (NaN means no constraint) [m/yr]');
+		fielddisplay(this,'spcvz','z-axis velocity constraint (NaN means no constraint) [m/yr]');
+
+		console.log(sprintf('\n      %s','Rift options:'));
+		fielddisplay(this,'rift_penalty_threshold','threshold for instability of mechanical constraints');
+		fielddisplay(this,'rift_penalty_lock','number of iterations before rift penalties are locked');
+
+		console.log(sprintf('\n      %s','Penalty options:'));
+		fielddisplay(this,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset');
+		fielddisplay(this,'vertex_pairing','pairs of vertices that are penalized');
+
+		console.log(sprintf('\n      %s','Other:'));
+		fielddisplay(this,'shelf_dampening','use dampening for floating ice ? Only for FS model');
+		fielddisplay(this,'FSreconditioning','multiplier for incompressibility equation. Only for FS model');
+		fielddisplay(this,'referential','local referential');
+		fielddisplay(this,'loadingforce','loading force applied on each point [N/m^3]');
+		fielddisplay(this,'requested_outputs','additional outputs requested');
+
+
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "stressbalance";
+	}// }}}
+	this.extrude = function(md) {//{{{
+		this.spcvx=project3d(md,'vector',this.spcvx,'type','node');
+		this.spcvy=project3d(md,'vector',this.spcvy,'type','node');
+		this.spcvz=project3d(md,'vector',this.spcvz,'type','node');
+		this.referential=project3d(md,'vector',this.referential,'type','node');
+		this.loadingforce=project3d(md,'vector',this.loadingforce,'type','node');
+		return this;
+	}//}}}
+	this.checkconsistency = function(md,solution,analyses) { //{{{
+
+		//Early return
+		if(ArrayAnyEqual(ArrayIsMember('StressbalanceAnalysis',analyses),0))return;
+
+		checkfield(md,'fieldname','stressbalance.spcvx','Inf',1,'timeseries',1);
+		checkfield(md,'fieldname','stressbalance.spcvy','Inf',1,'timeseries',1);
+		checkfield(md,'fieldname','stressbalance.spcvz','Inf',1,'timeseries',1);
+		checkfield(md,'fieldname','stressbalance.restol','size',[1, 1],'>',0,'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','stressbalance.reltol','size',[1, 1]);
+		checkfield(md,'fieldname','stressbalance.abstol','size',[1, 1]);
+		checkfield(md,'fieldname','stressbalance.isnewton','numel',[1],'values',[0, 1, 2]);
+		checkfield(md,'fieldname','stressbalance.FSreconditioning','size',[1, 1],'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','stressbalance.maxiter','size',[1, 1],'>=',1);
+		checkfield(md,'fieldname','stressbalance.referential','size',[md.mesh.numberofvertices, 6]);
+		checkfield(md,'fieldname','stressbalance.loadingforce','size',[md.mesh.numberofvertices, 3]);
+		checkfield(md,'fieldname','stressbalance.requested_outputs','stringrow',1);
+
+		//singular solution
+		if(!ArrayAnyNaN(md.stressbalance.spcvx) | !ArrayAnyNaN(md.stressbalance.spcvy) |  !ArrayAnyAboveStrict(md.mask.ocean_levelset,0)){
+			md = checkmessage(md,'model is not well posed (singular). You need at least one node with fixed velocity!');
+			console.log(sprintf('\n !!! Warning: no spc applied, model might not be well posed if no basal friction is applied, check for solution crash\n'));
+		}
+		//CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES
+		for(var i=0;i<md.stressbalance.referential.length;i++){
+			var sum=0;
+			for(j=0;j<md.stressbalance.referential[0].length;j++)sum+=md.stressbalance.referential[i][j];
+			if (sum!=0 & sum!=6){
+				md = checkmessage(md,'Each line of stressbalance.referential should contain either only NaN values or no NaN values');
+				break;
+			}
+		}
+		//CHECK THAT THE TWO VECTORS PROVIDED ARE ORTHOGONAL
+		for(var i=0;i<md.stressbalance.referential.length;i++){
+			var sum=0;
+			for(j=0;j<md.stressbalance.referential[0].length;j++)sum+=md.stressbalance.referential[i][j];
+			if(sum==0){
+				var dot=0;
+				for(j=0;j<3;j++)dot+=md.stressbalance.referential[i][j]*md.stressbalance.referential[i][j+3];
+				dot=Math.abs(dot);
+				if(dot>Math.pow(10,-18)){
+					md.checkmessage('Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal');
+					break;
+				}
+			}
+		}
+		//CHECK THAT NO rotation specified for FS Grounded ice at base
+		if (md.mesh.domaintype() == '3D' & md.flowequation.isFS){
+			for(var i=0;i<md.mask.ocean_levelset.length;i++){
+				if(md.mask.ocean_levelset[i]>0 & md.mesh.vertexonbase[i]){
+					if(!ArrayIsNan(md.stressbalance.referential[i])){
+						md.checkmessage('no referential should be specified for basal vertices of grounded ice');
+						break;
+					}
+				}
+			}
+			checkfield(md,'fieldname','stressbalance.FSreconditioning','>',0);
+		}
+	} // }}}
+	this.marshall=function(md,prefix,fid) { //{{{
+
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','vertex_pairing','format','DoubleMat','mattype',3);
+
+		var yts=md.constants.yts;
+
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','restol','format','Double');
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','reltol','format','Double');
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','abstol','format','Double','scale',1./yts);
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','isnewton','format','Integer');
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','FSreconditioning','format','Double');
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','maxiter','format','Integer');
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','shelf_dampening','format','Integer');
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','penalty_factor','format','Double');
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','rift_penalty_lock','format','Integer');
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','rift_penalty_threshold','format','Integer');
+		WriteData(fid,prefix,'object',this,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1);
+
+		if (size(this.loadingforce,1)==3) {
+			WriteData(fid,prefix,'data',ArrayCol(this.loadingforce,0),'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcex');
+			WriteData(fid,prefix,'data',ArrayCol(this.loadingforce,1),'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcey');
+			WriteData(fid,prefix,'data',ArrayCol(this.loadingforce,2),'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcez');
+		}
+
+		//process requested outputs
+		var outputs = this.requested_outputs;
+		for (var i=0;i<outputs.length;i++){
+			if (outputs[i] == 'default') {
+				outputs.splice(i,1);
+				var newoutputs=this.defaultoutputs(md);
+				for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+			}
+		}
+		WriteData(fid,prefix,'data',outputs,'name','md.stressbalance.requested_outputs','format','StringArray');
+	}//}}}
+	this.defaultoutputs = function(md){ // {{{
+
+		var list;
+		if (md.mesh.dimension() == 3) list = ['Vx','Vy','Vz','Vel','Pressure'];
+		else if (md.mesh.dimension()==2) list = ['Vx','Vy','Vel','Pressure'];
+		else throw Error('mesh type not supported yet');
+		return list;
+
+	}//}}}
+	this.fix=function() { //{{{
+		this.abstol=NullFix(this.abstol,NaN);
+		this.rift_penalty_lock=NullFix(this.rift_penalty_lock,NaN);
+		this.referential=NullFix(this.referential,NaN);
+		this.loadingforce=NullFix(this.loadingforce,NaN);
+		this.spcvx=NullFix(this.spcvx,NaN);
+		this.spcvy=NullFix(this.spcvy,NaN);
+		this.spcvz=NullFix(this.spcvz,NaN);
+		if(this.vertex_pairing=[])this.vertex_pairing=NaN;
+	}//}}}
+	//properties 
+	// {{{
+	this.spcvx                  = NaN;
+	this.spcvy                  = NaN;
+	this.spcvz                  = NaN;
+	this.restol                 = 0;
+	this.reltol                 = 0;
+	this.abstol                 = 0;
+	this.isnewton               = 0;
+	this.FSreconditioning       = 0;
+	this.maxiter                = 0;
+	this.shelf_dampening        = 0;
+	this.vertex_pairing         = NaN;
+	this.penalty_factor         = NaN;
+	this.rift_penalty_lock      = NaN;
+	this.rift_penalty_threshold = 0;
+	this.referential            = NaN;
+	this.loadingforce           = NaN;
+	this.requested_outputs      = []
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/stressbalance.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/stressbalance.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/stressbalance.m	(revision 27955)
@@ -0,0 +1,262 @@
+%STRESSBALANCE class definition
+%
+%   Usage:
+%      stressbalance=stressbalance();
+
+classdef stressbalance
+	properties (SetAccess=public)
+		spcvx                  = NaN;
+		spcvy                  = NaN;
+		spcvx_base             = NaN;
+		spcvy_base             = NaN;
+		spcvx_shear            = NaN;
+		spcvy_shear            = NaN;
+		spcvz                  = NaN;
+		restol                 = 0;
+		reltol                 = 0;
+		abstol                 = 0;
+		isnewton               = 0;
+		FSreconditioning       = 0;
+		maxiter                = 0;
+		shelf_dampening        = 0;
+		vertex_pairing         = NaN;
+		penalty_factor         = NaN;
+		rift_penalty_lock      = NaN;
+		rift_penalty_threshold = 0;
+		referential            = NaN;
+		loadingforce           = NaN;
+		requested_outputs      = {};
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.spcvx=project3d(md,'vector',self.spcvx,'type','node');
+			self.spcvy=project3d(md,'vector',self.spcvy,'type','node');
+			self.spcvz=project3d(md,'vector',self.spcvz,'type','node');
+			self.referential=project3d(md,'vector',self.referential,'type','node');
+			self.loadingforce=project3d(md,'vector',self.loadingforce,'type','node');
+
+			% for MOLHO
+			if md.flowequation.isMOLHO
+				self.spcvx_base=project3d(md,'vector',self.spcvx_base,'type','node');
+				self.spcvy_base=project3d(md,'vector',self.spcvy_base,'type','node');
+				self.spcvx_shear=project3d(md,'vector',self.spcvx_shear,'type','poly','degree',4);
+				self.spcvy_shear=project3d(md,'vector',self.spcvy_shear,'type','poly','degree',4);
+			end
+		end % }}}
+		function self = stressbalance(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('stressbalance');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%maximum of non-linear iterations.
+			self.maxiter=100;
+
+			%Convergence criterion: absolute, relative and residual
+			self.restol=10^-4;
+			self.reltol=0.01;
+			self.abstol=10;
+
+			self.FSreconditioning=10^13;
+			self.shelf_dampening=0;
+
+			%Penalty factor applied kappa=max(stiffness matrix)*10^penalty_factor
+			self.penalty_factor=3;
+
+			%Stop the iterations of rift if below a threshold
+			self.rift_penalty_threshold=0;
+
+			%in some solutions, it might be needed to stop a run when only
+			%a few constraints remain unstable. For thermal computation, this
+			%parameter is often used.
+			self.rift_penalty_lock=10;
+
+			%output default:
+			self.requested_outputs={'default'};
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember('StressbalanceAnalysis',analyses), return; end
+			if (strcmp(solution,'TransientSolution') & md.transient.isstressbalance == 0), return; end
+
+			md = checkfield(md,'fieldname','stressbalance.spcvx','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','stressbalance.spcvy','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','stressbalance.spcvz','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','stressbalance.restol','size',[1 1],'>',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','stressbalance.reltol','size',[1 1]);
+			md = checkfield(md,'fieldname','stressbalance.abstol','size',[1 1]);
+			md = checkfield(md,'fieldname','stressbalance.isnewton','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','stressbalance.FSreconditioning','size',[1 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','stressbalance.maxiter','size',[1 1],'>=',1);
+			md = checkfield(md,'fieldname','stressbalance.referential','size',[md.mesh.numberofvertices 6]);
+			md = checkfield(md,'fieldname','stressbalance.loadingforce','size',[md.mesh.numberofvertices 3]);
+			md = checkfield(md,'fieldname','stressbalance.requested_outputs','stringrow',1);
+			if ~any(isnan(md.stressbalance.vertex_pairing)),
+				md = checkfield(md,'fieldname','stressbalance.vertex_pairing','>',0);
+			end
+			%singular solution
+			if ((~(any(~isnan(md.stressbalance.spcvx)) | any(~isnan(md.stressbalance.spcvy)))) & ~any(md.mask.ocean_levelset>0)),
+				disp(sprintf('\n !!! Warning: no spc applied, model might not be well posed if no basal friction is applied, check for solution crash\n'));
+			end
+			%CHECK THAT EACH LINE CONTAINS ONLY NAN VALUES OR NO NAN VALUES
+			if any(sum(isnan(md.stressbalance.referential),2)~=0 & sum(isnan(md.stressbalance.referential),2)~=6),
+				md = checkmessage(md,['Each line of stressbalance.referential should contain either only NaN values or no NaN values']);
+			end
+			%CHECK THAT THE TWO VECTORS PROVIDED ARE ORTHOGONAL
+			if any(sum(isnan(md.stressbalance.referential),2)==0),
+				pos=find(sum(isnan(md.stressbalance.referential),2)==0);
+				if any(abs(dot(md.stressbalance.referential(pos,1:3),md.stressbalance.referential(pos,4:6),2))>eps),
+					md = checkmessage(md,['Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal']);
+				end
+			end
+			%CHECK THAT NO rotation specified for FS Grounded ice at base
+			if strcmp(domaintype(md.mesh),'3D') & md.flowequation.isFS,
+				pos=find(md.mask.ocean_levelset>0. & md.mesh.vertexonbase);
+				if any(~isnan(md.stressbalance.referential(pos,:))),
+					md = checkmessage(md,['no referential should be specified for basal vertices of grounded ice']);
+				end
+				md = checkfield(md,'fieldname','stressbalance.FSreconditioning','>',0);
+			end
+			% CHECK THIS ONLY WORKS FOR MOLHO
+			if md.flowequation.isMOLHO
+				md = checkfield(md,'fieldname','stressbalance.spcvx_base','Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','stressbalance.spcvy_base','Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','stressbalance.spcvx_shear','Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','stressbalance.spcvy_shear','Inf',1,'timeseries',1);
+			end
+		end % }}}
+		function list=defaultoutputs(self,md) % {{{
+
+			if dimension(md.mesh)==3,
+				list = {'Vx','Vy','Vz','Vel','Pressure'};
+			elseif dimension(md.mesh)==2,
+				list = {'Vx','Vy','Vel','Pressure'};
+			else
+				error('mesh type not supported yet');
+			end
+
+		end % }}}
+		function disp(self) % {{{
+
+			disp(sprintf('   StressBalance solution parameters:'));
+
+			disp(sprintf('\n      %s','Convergence criteria:'));
+			fielddisplay(self,'restol','mechanical equilibrium residual convergence criterion');
+			fielddisplay(self,'reltol','velocity relative convergence criterion, NaN: not applied');
+			fielddisplay(self,'abstol','velocity absolute convergence criterion, NaN: not applied');
+			fielddisplay(self,'isnewton','0: Picard''s fixed point, 1: Newton''s method, 2: hybrid');
+			fielddisplay(self,'maxiter','maximum number of nonlinear iterations');
+
+			disp(sprintf('\n      %s','boundary conditions:'));
+			fielddisplay(self,'spcvx','x-axis velocity constraint (NaN means no constraint) [m/yr]');
+			fielddisplay(self,'spcvy','y-axis velocity constraint (NaN means no constraint) [m/yr]');
+			fielddisplay(self,'spcvz','z-axis velocity constraint (NaN means no constraint) [m/yr]');
+
+			disp(sprintf('\n      %s','MOLHO boundary conditions:'));
+			fielddisplay(self,'spcvx_base','x-axis basal velocity constraint (NaN means no constraint) [m/yr]');
+			fielddisplay(self,'spcvy_base','y-axis basal velocity constraint (NaN means no constraint) [m/yr]');
+			fielddisplay(self,'spcvx_shear','x-axis shear velocity constraint (NaN means no constraint) [m/yr]');
+			fielddisplay(self,'spcvy_shear','y-axis shear velocity constraint (NaN means no constraint) [m/yr]');
+
+			disp(sprintf('\n      %s','Rift options:'));
+			fielddisplay(self,'rift_penalty_threshold','threshold for instability of mechanical constraints');
+			fielddisplay(self,'rift_penalty_lock','number of iterations before rift penalties are locked');
+
+			disp(sprintf('\n      %s','Penalty options:'));
+			fielddisplay(self,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset');
+			fielddisplay(self,'vertex_pairing','pairs of vertices that are penalized');
+
+			disp(sprintf('\n      %s','Other:'));
+			fielddisplay(self,'shelf_dampening','use dampening for floating ice ? Only for FS model');
+			fielddisplay(self,'FSreconditioning','multiplier for incompressibility equation. Only for FS model');
+			fielddisplay(self,'referential','local referential');
+			fielddisplay(self,'loadingforce','loading force applied on each point [N/m^3]');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','vertex_pairing','format','DoubleMat','mattype',3);
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','restol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','reltol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','abstol','format','Double','scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','isnewton','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','FSreconditioning','format','Double');
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','shelf_dampening','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','penalty_factor','format','Double');
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','rift_penalty_lock','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','rift_penalty_threshold','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1);
+
+			if size(self.loadingforce,2)==3,
+				WriteData(fid,prefix,'data',self.loadingforce(:,1),'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcex');
+				WriteData(fid,prefix,'data',self.loadingforce(:,2),'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcey');
+				WriteData(fid,prefix,'data',self.loadingforce(:,3),'format','DoubleMat','mattype',1,'name','md.stressbalance.loadingforcez');
+			end
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.stressbalance.requested_outputs','format','StringArray');
+			% for MOLHO
+			if (md.flowequation.isMOLHO)
+				WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvx_base','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvy_base','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvx_shear','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','stressbalance','fieldname','spcvy_shear','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			end
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			writejs1Darray(fid,[modelname '.stressbalance.spcvx'],self.spcvx);
+			writejs1Darray(fid,[modelname '.stressbalance.spcvy'],self.spcvy);
+			writejs1Darray(fid,[modelname '.stressbalance.spcvz'],self.spcvz);
+			writejsdouble(fid,[modelname '.stressbalance.restol'],self.restol);
+			writejsdouble(fid,[modelname '.stressbalance.reltol'],self.reltol);
+			writejsdouble(fid,[modelname '.stressbalance.abstol'],self.abstol);
+			writejsdouble(fid,[modelname '.stressbalance.isnewton'],self.isnewton);
+			writejsdouble(fid,[modelname '.stressbalance.FSreconditioning'],self.FSreconditioning);
+			writejsdouble(fid,[modelname '.stressbalance.maxiter'],self.maxiter);
+			writejsdouble(fid,[modelname '.stressbalance.shelf_dampening'],self.shelf_dampening);
+			writejs1Darray(fid,[modelname '.stressbalance.vertex_pairing'],self.vertex_pairing);
+			writejsdouble(fid,[modelname '.stressbalance.penalty_factor'],self.penalty_factor);
+			writejsdouble(fid,[modelname '.stressbalance.rift_penalty_lock'],self.rift_penalty_lock);
+			writejsdouble(fid,[modelname '.stressbalance.rift_penalty_threshold'],self.rift_penalty_threshold);
+			writejs2Darray(fid,[modelname '.stressbalance.referential'],self.referential);
+			writejs2Darray(fid,[modelname '.stressbalance.loadingforce'],self.loadingforce);
+			writejscellstring(fid,[modelname '.stressbalance.requested_outputs'],self.requested_outputs);
+
+			writejs1Darray(fid,[modelname '.stressbalance.spcvx_base'],self.spcvx_shear);
+			writejs1Darray(fid,[modelname '.stressbalance.spcvy_base'],self.spcvy_shear);
+			writejs1Darray(fid,[modelname '.stressbalance.spcvx_shear'],self.spcvx_shear);
+			writejs1Darray(fid,[modelname '.stressbalance.spcvy_shear'],self.spcvy_shear);
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/stressbalance.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/stressbalance.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/stressbalance.py	(revision 27955)
@@ -0,0 +1,217 @@
+import sys
+
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+import MatlabFuncs as m
+from project3d import project3d
+from WriteData import WriteData
+
+
+class stressbalance(object):
+    """STRESSBALANCE class definition
+
+    Usage:
+        stressbalance = stressbalance()
+    """
+
+    def __init__(self):  # {{{
+        self.spcvx = np.nan
+        self.spcvy = np.nan
+        self.spcvx_base = np.nan
+        self.spcvy_base = np.nan
+        self.spcvx_shear = np.nan
+        self.spcvy_shear = np.nan
+        self.spcvz = np.nan
+        self.restol = 0
+        self.reltol = 0
+        self.abstol = 0
+        self.isnewton = 0
+        self.FSreconditioning = 0
+        self.icefront = np.nan
+        self.maxiter = 0
+        self.shelf_dampening = 0
+        self.vertex_pairing = np.nan
+        self.penalty_factor = np.nan
+        self.rift_penalty_lock = np.nan
+        self.rift_penalty_threshold = 0
+        self.referential = np.nan
+        self.loadingforce = np.nan
+        self.requested_outputs = []
+
+        # Set defaults
+        self.setdefaultparameters()
+
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   StressBalance solution parameters:\n'
+        s += '      Convergence criteria:\n'
+        s += '{}\n'.format(fielddisplay(self, 'restol', 'mechanical equilibrium residual convergence criterion'))
+        s += '{}\n'.format(fielddisplay(self, 'reltol', 'velocity relative convergence criterion, NaN: not applied'))
+        s += '{}\n'.format(fielddisplay(self, 'abstol', 'velocity absolute convergence criterion, NaN: not applied'))
+        s += '{}\n'.format(fielddisplay(self, 'isnewton', '0: Picard\'s fixed point, 1: Newton\'s method, 2: hybrid'))
+        s += '{}\n'.format(fielddisplay(self, 'maxiter', 'maximum number of nonlinear iterations'))
+        s += '      boundary conditions:\n'
+        s += '{}\n'.format(fielddisplay(self, 'spcvx', 'x-axis velocity constraint (NaN means no constraint) [m / yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'spcvy', 'y-axis velocity constraint (NaN means no constraint) [m / yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'spcvz', 'z-axis velocity constraint (NaN means no constraint) [m / yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'icefront', 'segments on ice front list (last column 0: Air, 1: Water, 2: Ice'))
+        s += '      MOLHO boundary conditions:\n'
+        s += '{}\n'.format(fielddisplay(self, 'spcvx_base', 'x-axis basal velocity constraint (NaN means no constraint) [m / yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'spcvy_base', 'y-axis basal velocity constraint (NaN means no constraint) [m / yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'spcvx_shear', 'x-axis shear velocity constraint (NaN means no constraint) [m / yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'spcvy_shear', 'y-axis shear velocity constraint (NaN means no constraint) [m / yr]'))
+        s += '      Rift options:\n'
+        s += '{}\n'.format(fielddisplay(self, 'rift_penalty_threshold', 'threshold for instability of mechanical constraints'))
+        s += '{}\n'.format(fielddisplay(self, 'rift_penalty_lock', 'number of iterations before rift penalties are locked'))
+        s += '      Penalty options:\n'
+        s += '{}\n'.format(fielddisplay(self, 'penalty_factor', 'offset used by penalties: penalty = Kmax * 10^offset'))
+        s += '{}\n'.format(fielddisplay(self, 'vertex_pairing', 'pairs of vertices that are penalized'))
+        s += '      Other:\n'
+        s += '{}\n'.format(fielddisplay(self, 'shelf_dampening', 'use dampening for floating ice ? Only for FS model'))
+        s += '{}\n'.format(fielddisplay(self, 'FSreconditioning', 'multiplier for incompressibility equation. Only for FS model'))
+        s += '{}\n'.format(fielddisplay(self, 'referential', 'local referential'))
+        s += '{}\n'.format(fielddisplay(self, 'loadingforce', 'loading force applied on each point [N/m^3]'))
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.spcvx = project3d(md, 'vector', self.spcvx, 'type', 'node')
+        self.spcvy = project3d(md, 'vector', self.spcvy, 'type', 'node')
+        self.spcvz = project3d(md, 'vector', self.spcvz, 'type', 'node')
+        self.referential = project3d(md, 'vector', self.referential, 'type', 'node')
+        self.loadingforce = project3d(md, 'vector', self.loadingforce, 'type', 'node')
+
+        if md.flowequation.isMOLHO:
+            self.spcvx_base = project3d(md, 'vector', self.spcvx_base, 'type', 'node')
+            self.spcvy_base = project3d(md, 'vector', self.spcvy_base, 'type', 'node')
+            self.spcvx_shear = project3d(md, 'vector', self.spcvx_shear, 'type', 'poly', 'degree', 4)
+            self.spcvy_shear = project3d(md, 'vector', self.spcvy_shear, 'type', 'poly', 'degree', 4)
+
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Maximum of non-linear iterations
+        self.maxiter = 100
+
+        # Convergence criterion: absolute, relative and residual
+        self.restol = pow(10, -4)
+        self.reltol = 0.01
+        self.abstol = 10
+
+        self.FSreconditioning = pow(10, 13)
+        self.shelf_dampening = 0
+
+        # Penalty factor applied kappa = max(stiffness matrix) * 1.0^penalty_factor
+        self.penalty_factor = 3
+
+        # Stop the iterations of rift if below a threshold
+        self.rift_penalty_threshold = 0
+
+        # In some solutions, it might be needed to stop a run when only a few 
+        # constraints remain unstable. For thermal computation, this parameter 
+        # is often used.
+        self.rift_penalty_lock = 10
+
+        # Output default
+        self.requested_outputs = ['default']
+        return self
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        if md.mesh.dimension() == 3:
+            list = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+        else:
+            list = ['Vx', 'Vy', 'Vel', 'Pressure']
+        return list
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if 'StressbalanceAnalysis' not in analyses:
+            return md
+        if solution == 'TransientSolution' and not md.transient.isstressbalance:
+            return md
+
+        md = checkfield(md, 'fieldname', 'stressbalance.spcvx', 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'stressbalance.spcvy', 'Inf', 1, 'timeseries', 1)
+        if m.strcmp(md.mesh.domaintype(), '3D'):
+            md = checkfield(md, 'fieldname', 'stressbalance.spcvz', 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'stressbalance.restol', 'size', [1], '>', 0)
+        md = checkfield(md, 'fieldname', 'stressbalance.reltol', 'size', [1])
+        md = checkfield(md, 'fieldname', 'stressbalance.abstol', 'size', [1])
+        md = checkfield(md, 'fieldname', 'stressbalance.isnewton', 'numel', [1], 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'stressbalance.FSreconditioning', 'size', [1], 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'stressbalance.maxiter', 'size', [1], '>=', 1)
+        md = checkfield(md, 'fieldname', 'stressbalance.referential', 'size', [md.mesh.numberofvertices, 6])
+        md = checkfield(md, 'fieldname', 'stressbalance.loadingforce', 'size', [md.mesh.numberofvertices, 3])
+        md = checkfield(md, 'fieldname', 'stressbalance.requested_outputs', 'stringrow', 1)
+        if not np.any(np.isnan(self.vertex_pairing)) and len(self.vertex_pairing) > 0:
+            md = checkfield(md, 'fieldname', 'stressbalance.vertex_pairing', '>', 0)
+        # Singular solution
+        if (not np.any(np.logical_or(np.logical_not(np.isnan(md.stressbalance.spcvx)), np.logical_not(np.isnan(md.stressbalance.spcvy))))) & (not np.any(md.mask.ocean_levelset>0)):
+            print('\n !!! Warning: no spc applied, model might not be well posed if no basal friction is applied, check for solution crash\n')
+        # CHECK THAT EACH LINES CONTAIN ONLY NAN VALUES OR NO NAN VALUES
+        if np.any(np.logical_and(np.sum(np.isnan(md.stressbalance.referential), axis=1) != 0, np.sum(np.isnan(md.stressbalance.referential), axis=1) != 6)):
+            md.checkmessage('Each line of stressbalance.referential should contain either only NaN values or no NaN values')
+        # CHECK THAT THE TWO VECTORS PROVIDED ARE ORTHOGONAL
+        if np.any(np.sum(np.isnan(md.stressbalance.referential), axis=1) == 0):
+            pos = [i for i, item in enumerate(np.sum(np.isnan(md.stressbalance.referential), axis=1)) if item == 0]
+            for item in md.stressbalance.referential[pos, :]:
+                if np.abs(np.inner(item[0:2], item[3:5])) > sys.float_info.epsilon:
+                    md.checkmessage('Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal')
+        # CHECK THAT NO rotation specified for FS Grounded ice at base
+        if m.strcmp(md.mesh.domaintype(), '3D') and md.flowequation.isFS:
+            pos = np.nonzero(np.logical_and(md.mask.ocean_levelset, md.mesh.vertexonbase))
+            if np.any(np.logical_not(np.isnan(md.stressbalance.referential[pos, :]))):
+                md.checkmessage('no referential should be specified for basal vertices of grounded ice')
+        if md.flowequation.isMOLHO:
+            md = checkfield(md, 'fieldname', 'stressbalance.spcvx_base', 'Inf', 1, 'timeseries', 1)
+            md = checkfield(md, 'fieldname', 'stressbalance.spcvy_base', 'Inf', 1, 'timeseries', 1)
+            md = checkfield(md, 'fieldname', 'stressbalance.spcvx_shear', 'Inf', 1, 'timeseries', 1)
+            md = checkfield(md, 'fieldname', 'stressbalance.spcvy_shear', 'Inf', 1, 'timeseries', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+
+        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'vertex_pairing', 'format', 'DoubleMat', 'mattype', 3)
+
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvx', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvy', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvz', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'restol', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'reltol', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'abstol', 'format', 'Double', 'scale', 1. / yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'isnewton', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'FSreconditioning', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'maxiter', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'shelf_dampening', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'penalty_factor', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'rift_penalty_lock', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'rift_penalty_threshold', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'referential', 'format', 'DoubleMat', 'mattype', 1)
+        if isinstance(self.loadingforce, (list, tuple, np.ndarray)) and np.size(self.loadingforce, 1) == 3:
+            WriteData(fid, prefix, 'data', self.loadingforce[:, 0], 'format', 'DoubleMat', 'mattype', 1, 'name', 'md.stressbalance.loadingforcex')
+            WriteData(fid, prefix, 'data', self.loadingforce[:, 1], 'format', 'DoubleMat', 'mattype', 1, 'name', 'md.stressbalance.loadingforcey')
+            WriteData(fid, prefix, 'data', self.loadingforce[:, 2], 'format', 'DoubleMat', 'mattype', 1, 'name', 'md.stressbalance.loadingforcez')
+        # Process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.stressbalance.requested_outputs', 'format', 'StringArray')
+        # MOLHO
+        if md.flowequation.isMOLHO:
+            WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvx_base', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvy_base', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvx_shear', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'stressbalance', 'fieldname', 'spcvy_shear', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/surfaceload.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/surfaceload.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/surfaceload.m	(revision 27955)
@@ -0,0 +1,165 @@
+%SURFACELOAD class definition
+%
+%   Usage:
+%      surfaceload=surfaceload();
+
+classdef surfaceload
+	properties (SetAccess=public) 
+		icethicknesschange     = [];
+		waterheightchange      = [];
+		otherchange            = [];
+	end
+	methods
+		function self = surfaceload(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			icethicknesschange=[];
+			waterheightchange=[];
+			otherchange=[];
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ismember('SealevelchangeAnalysis',analyses) | (strcmp(solution,'TransientSolution') & md.transient.isslc==0), 
+				return; 
+			end
+			if ~isempty(self.icethicknesschange),
+				if isa(self.icethicknesschange,'cell'),
+					for i=1:length(self.icethicknesschange),
+						md = checkfield(md,'field',self.icethicknesschange{i},'NaN',0,'Inf',1,'timeserieslength',1,'Inf',1);
+					end
+				else
+					md = checkfield(md,'field',self.icethicknesschange,'NaN',1,'Inf',1,'timeserieslength',1,'Inf',1);
+				end
+			end
+			if ~isempty(self.waterheightchange),
+				md = checkfield(md,'fieldname','solidearth.surfaceload.waterheightchange','timeseries',1,'NaN',1,'Inf',1);
+			end
+			if ~isempty(self.otherchange),
+				md = checkfield(md,'fieldname','solidearth.surfaceload.other','timeseries',1,'NaN',1,'Inf',1);
+			end
+
+			%cross check that whereever we have an ice load, the mask is <0 on each vertex:  legacy
+			%pos=find(self.deltathickness);
+			%maskpos=md.mask.ice_levelset(md.mesh.elements(pos,:)); 
+			%[els,vertices]=find(maskpos>0);
+			%if length(els),
+			%	warning('solidearth checkconsistency fail: there are elements with ice loads where some vertices are not on the ice!');
+			%end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surfaceload:'));
+
+			fielddisplay(self,'icethicknesschange','thickness change: ice height equivalent [mIce/yr]');
+			fielddisplay(self,'waterheightchange','water height change: water height equivalent [mWater/yr]');
+			fielddisplay(self,'otherchange','other loads (sediments) [kg/m^2/yr]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			%deal with ice thickness change: {{{
+			if isempty(self.icethicknesschange),
+				self.icethicknesschange=zeros(md.mesh.numberofelements+1,1);
+			end
+
+			yts=md.constants.yts;
+
+			if isa(self.icethicknesschange,'cell'),
+				%transform our cell array of time series into cell array of time series of rates 
+				nummodels=length(self.icethicknesschange);
+				for i=1:nummodels,
+					icethicknesschange=self.icethicknesschange{i}; 
+					time=icethicknesschange(end,:);
+					dt=diff(time,1,2);
+					icethicknesschange_rate=diff(icethicknesschange(1:end-1,:),1,2)./dt;
+					self.icethicknesschange{i}=icethicknesschange_rate; 
+				end
+				WriteData(fid,prefix,'object',self,'fieldname','icethicknesschange','name','md.solidearth.surfaceload.icethicknesschange',...
+				'format','MatArray','timeserieslength',md.mesh.numberofelements+1,'yts',yts,'scale',1/yts);
+			else
+				icethicknesschange=self.icethicknesschange;
+				time=icethicknesschange(end,:);
+				dt=diff(time,1,2);
+				icethicknesschange_rate=diff(icethicknesschange(1:end-1,:),1,2)./dt;
+				self.icethicknesschange=icethicknesschange_rate; 
+
+				WriteData(fid,prefix,'object',self,'fieldname','icethicknesschange','name','md.solidearth.surfaceload.icethicknesschange',...
+				'format','MatArray','timeserieslength',md.mesh.numberofelements+1,'yts',yts,'scale',1/yts);
+			end
+			%}}}
+			%deal with water height change: {{{
+			if isempty(self.waterheightchange),
+				self.waterheightchange=zeros(md.mesh.numberofelements+1,1);
+			end
+
+			if isa(self.waterheightchange,'cell'),
+				%transform our cell array of time series into cell array of time series of rates 
+				nummodels=length(self.waterheightchange);
+				for i=1:nummodels,
+					waterheightchange=self.waterheightchange{i}; 
+					time=waterheightchange(end,:);
+					dt=diff(time,1,2);
+					waterheightchange_rate=diff(waterheightchange(1:end-1,:),1,2)./dt;
+					self.waterheightchange{i}=waterheightchange_rate; 
+				end
+				WriteData(fid,prefix,'object',self,'fieldname','waterheightchange','name','md.solidearth.surfaceload.waterheightchange',...
+				'format','MatArray','timeserieslength',md.mesh.numberofelements+1,'yts',yts,'scale',1/yts);
+			else
+				waterheightchange=self.waterheightchange;
+				time=waterheightchange(end,:);
+				dt=diff(time,1,2);
+				waterheightchange_rate=diff(waterheightchange(1:end-1,:),1,2)./dt;
+				self.waterheightchange=waterheightchange_rate; 
+
+				WriteData(fid,prefix,'object',self,'fieldname','waterheightchange','name','md.solidearth.surfaceload.waterheightchange',...
+				'format','MatArray','timeserieslength',md.mesh.numberofelements+1,'yts',yts,'scale',1/yts);
+			end
+			%}}}
+			%deal with other: {{{
+			if isempty(self.otherchange),
+				self.otherchange=zeros(md.mesh.numberofelements+1,1);
+			end
+
+			if isa(self.otherchange,'cell'),
+				%transform our cell array of time series into cell array of time series of rates 
+				nummodels=length(self.otherchange);
+				for i=1:nummodels,
+					otherchange=self.otherchange{i}; 
+					time=otherchange(end,:);
+					dt=diff(time,1,2);
+					otherchange_rate=diff(otherchange(1:end-1,:),1,2)./dt;
+					self.otherchange{i}=otherchange_rate; 
+				end
+				WriteData(fid,prefix,'object',self,'fieldname','otherchange','name','md.solidearth.surfaceload.otherchange',...
+				'format','MatArray','timeserieslength',md.mesh.numberofelements+1,'yts',yts,'scale',1/yts);
+			else
+				otherchange=self.otherchange;
+				time=otherchange(end,:);
+				dt=diff(time,1,2);
+				otherchange_rate=diff(otherchange(1:end-1,:),1,2)./dt;
+				self.otherchange=otherchange_rate; 
+
+				WriteData(fid,prefix,'object',self,'fieldname','otherchange','name','md.solidearth.surfaceload.otherchange',...
+				'format','MatArray','timeserieslength',md.mesh.numberofelements+1,'yts',yts,'scale',1/yts);
+			end
+			%}}}
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			writejs1Darray(fid,[modelname '.surfaceload.icethicknesschange'],self.icethicknesschange);
+			writejs1Darray(fid,[modelname '.surfaceload.waterheightchange'],self.waterheightchange);
+			writejs1Darray(fid,[modelname '.surfaceload.otherchange'],self.otherchange);
+		end % }}}
+		function self = extrude(self,md) % {{{
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/surfaceload.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/surfaceload.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/surfaceload.py	(revision 27955)
@@ -0,0 +1,81 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from WriteData import WriteData
+
+
+class surfaceload(object):
+    """SURFACELOAD class definition
+
+    Usage:
+        surfaceload = surfaceload()
+    """
+
+    def __init__(self, *args):  #{{{
+        self.icethicknesschange = np.nan
+        self.waterheightchange = np.nan
+        self.other = np.nan
+
+        nargin = len(args)
+
+        if nargin == 0:
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  #{{{
+        s = '   surfaceload:\n'
+        s += '{}\n'.format(fielddisplay(self, 'icethicknesschange', 'thickness change: ice height equivalent [mIce/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'waterheightchange', 'water height change: water height equivalent [mWater/yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'other', 'other loads (sediments) [kg/m^2/yr]'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if ('SealevelchangeAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
+            return md
+        if type(self.icethicknesschange) == np.ndarray:
+            md = checkfield(md, 'fieldname', 'solidearth.surfaceload.icethicknesschange', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        if type(self.waterheightchange) == np.ndarray:
+            md = checkfield(md, 'fieldname', 'solidearth.surfaceload.waterheightchange', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        if type(self.other) == np.ndarray:
+            md = checkfield(md, 'fieldname', 'solidearth.surfaceload.other', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  #{{{
+        # TODO
+        # - When surfaceload class is used eventually, check premarshall 
+        # modifications against those done in MATLAB
+        #
+
+        # Deal with ice thickness change
+        if np.isempty(self.icethicknesschange):
+            self.icethicknesschange = np.zeros((md.mesh.numberofelements + 1, ))
+
+        yts = md.constants.yts
+
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'icethicknesschange', 'name', 'md.solidearth.surfaceload.icethicknesschange', 'format', 'MatArray', 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts, 'scale', 1 / yts)
+
+        # Deal with ice thickness change
+        if np.isempty(self.waterheightchange):
+            self.waterheightchange = np.zeros((md.mesh.numberofelements + 1, ))
+
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'waterheightchange', 'name', 'md.solidearth.surfaceload.waterheightchange', 'format', 'MatArray', 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts, 'scale', 1 / yts)
+
+        # Deal with ice thickness change
+        if np.isempty(self.otherchange):
+            self.otherchange = np.zeros((md.mesh.numberofelements + 1, ))
+
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'otherchange', 'name', 'md.solidearth.surfaceload.otherchange', 'format', 'MatArray', 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts, 'scale', 1 / yts)
+    # }}}
+
+    def extrude(self, md):  #{{{
+        return self
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/taoinversion.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/taoinversion.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/taoinversion.m	(revision 27955)
@@ -0,0 +1,198 @@
+%TAOINVERSION class definition
+%
+%   Usage:
+%      taoinversion=taoinversion();
+
+classdef taoinversion
+	properties (SetAccess=public) 
+		iscontrol                   = 0
+		incomplete_adjoint          = 0
+		control_parameters          = NaN
+		maxsteps                    = 0
+		maxiter                     = 0
+		fatol                       = 0
+		frtol                       = 0
+		gatol                       = 0
+		grtol                       = 0
+		gttol                       = 0
+		algorithm                   = ''
+		cost_functions              = NaN
+		cost_functions_coefficients = NaN
+		min_parameters              = NaN
+		max_parameters              = NaN
+		vx_obs                      = NaN
+		vy_obs                      = NaN
+		vz_obs                      = NaN
+		vel_obs                     = NaN
+		thickness_obs               = NaN
+		surface_obs               = NaN
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node');
+			self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node');
+			self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node');
+			self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node');
+			if numel(self.cost_functions_coefficients)>1,self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node');end;
+			if numel(self.min_parameters)>1,self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node');end;
+			if numel(self.max_parameters)>1,self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node');end;
+		end % }}}
+		function self = taoinversion(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(taoinversion(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%default is incomplete adjoint for now
+			self.incomplete_adjoint=1;
+
+			%parameter to be inferred by control methods (only
+			%drag and B are supported yet)
+			self.control_parameters={'FrictionCoefficient'};
+
+			%number of iterations and steps
+			self.maxsteps=20;
+			self.maxiter =30;
+
+			%default tolerances
+			self.fatol = 0;
+			self.frtol = 0;
+			self.gatol = 0;
+			self.grtol = 0;
+			self.gttol = 1e-4;
+
+			%minimization algorithm
+			PETSCMAJOR = IssmConfig('_PETSC_MAJOR_');
+			PETSCMINOR = IssmConfig('_PETSC_MINOR_');
+			if(PETSCMAJOR>3 | (PETSCMAJOR==3 & PETSCMINOR>=5))
+				self.algorithm = 'blmvm';
+			else
+				self.algorithm = 'tao_blmvm';
+			end
+
+			%several responses can be used:
+			self.cost_functions=101;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~self.iscontrol, return; end
+
+			if ~IssmConfig('_HAVE_TAO_'),
+				md = checkmessage(md,['TAO has not been installed, ISSM needs to be reconfigured and recompiled with TAO']);
+			end
+
+			num_controls=numel(md.inversion.control_parameters);
+			num_costfunc=size(md.inversion.cost_functions,2);
+
+			md = checkfield(md,'fieldname','inversion.iscontrol','values',[0 1]);
+			md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 1]);
+			md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols());
+			md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.maxiter','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.fatol','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.frtol','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.gatol','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.grtol','numel',1,'>=',0);
+			md = checkfield(md,'fieldname','inversion.gttol','numel',1,'>=',0);
+
+			PETSCMAJOR = IssmConfig('_PETSC_MAJOR_');
+			PETSCMINOR = IssmConfig('_PETSC_MINOR_');
+			if(PETSCMAJOR>3 | (PETSCMAJOR==3 & PETSCMINOR>=5))
+				md = checkfield(md,'fieldname','inversion.algorithm','values',{'blmvm','cg','lmvm'});
+			else
+				md = checkfield(md,'fieldname','inversion.algorithm','values',{'tao_blmvm','tao_cg','tao_lmvm'});
+			end
+
+			md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values',supportedcostfunctions());
+			md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0);
+			md = checkfield(md,'fieldname','inversion.min_parameters','size',[NaN num_controls]);
+			md = checkfield(md,'fieldname','inversion.max_parameters','size',[NaN num_controls]);
+
+			if strcmp(solution,'BalancethicknessSolution')
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			elseif strcmp(solution,'BalancethicknessSoftSolution')
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			else
+				md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   taoinversion parameters:'));
+			fielddisplay(self,'iscontrol','is inversion activated?');
+			fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
+			fielddisplay(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}');
+			fielddisplay(self,'maxsteps','maximum number of iterations (gradient computation)');
+			fielddisplay(self,'maxiter','maximum number of Function evaluation (forward run)');
+			fielddisplay(self,'fatol','convergence criterion: f(X)-f(X*) (X: current iteration, X*: "true" solution, f: cost function)');
+			fielddisplay(self,'frtol','convergence criterion: |f(X)-f(X*)|/|f(X*)|');
+			fielddisplay(self,'gatol','convergence criterion: ||g(X)|| (g: gradient of the cost function)');
+			fielddisplay(self,'grtol','convergence criterion: ||g(X)||/|f(X)|');
+			fielddisplay(self,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)');
+			fielddisplay(self,'algorithm','minimization algorithm: ''tao_blmvm'', ''tao_cg'', ''tao_lmvm''');
+			fielddisplay(self,'cost_functions','indicate the type of response for each optimization step');
+			fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
+			fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
+			fielddisplay(self,'vx_obs','observed velocity x component [m/yr]');
+			fielddisplay(self,'vy_obs','observed velocity y component [m/yr]');
+			fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]');
+			fielddisplay(self,'thickness_obs','observed thickness [m]');
+			fielddisplay(self,'surface_obs','observed surface elevation [m]');
+			disp('Available cost functions:');
+			disp('   101: SurfaceAbsVelMisfit');
+			disp('   102: SurfaceRelVelMisfit');
+			disp('   103: SurfaceLogVelMisfit');
+			disp('   104: SurfaceLogVxVyMisfit');
+			disp('   105: SurfaceAverageVelMisfit');
+			disp('   201: ThicknessAbsMisfit');
+			disp('   501: DragCoefficientAbsGradient');
+			disp('   502: RheologyBbarAbsGradient');
+			disp('   503: ThicknessAbsGradient');
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			yts=md.constants.yts;
+
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean');
+			WriteData(fid,prefix,'name','md.inversion.type','data',1,'format','Integer');
+			if ~self.iscontrol, return; end
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','incomplete_adjoint','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxsteps','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','fatol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','frtol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','gatol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','grtol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','gttol','format','Double');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','algorithm','format','String');
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',1);
+			WriteData(fid,prefix,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',1);
+
+			%process control parameters
+			num_control_parameters=numel(self.control_parameters);
+			WriteData(fid,prefix,'object',self,'fieldname','control_parameters','format','StringArray');
+			WriteData(fid,prefix,'data',num_control_parameters,'name','md.inversion.num_control_parameters','format','Integer');
+
+			%process cost functions
+			num_cost_functions=size(self.cost_functions,2);
+			data=marshallcostfunctions(self.cost_functions);
+			WriteData(fid,prefix,'data',data,'name','md.inversion.cost_functions','format','StringArray');
+			WriteData(fid,prefix,'data',num_cost_functions,'name','md.inversion.num_cost_functions','format','Integer');
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/taoinversion.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/taoinversion.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/taoinversion.py	(revision 27955)
@@ -0,0 +1,199 @@
+import numpy as np
+from checkfield import checkfield
+from IssmConfig import IssmConfig
+from marshallcostfunctions import marshallcostfunctions
+from fielddisplay import fielddisplay
+from project3d import project3d
+from supportedcontrols import *
+from supportedcostfunctions import *
+from WriteData import WriteData
+
+
+class taoinversion(object):  # {{{
+    """TAOINVERSION class definition
+
+    Usage:
+        inversion = taoinversion()
+    """
+
+    def __init__(self):
+        self.iscontrol = 0
+        self.incomplete_adjoint = 0
+        self.control_parameters = np.nan
+        self.maxsteps = 0
+        self.maxiter = 0
+        self.fatol = 0
+        self.frtol = 0
+        self.gatol = 0
+        self.grtol = 0
+        self.gttol = 0
+        self.algorithm = ''
+        self.cost_functions = np.nan
+        self.cost_functions_coefficients = np.nan
+        self.min_parameters = np.nan
+        self.max_parameters = np.nan
+        self.vx_obs = np.nan
+        self.vy_obs = np.nan
+        self.vz_obs = np.nan
+        self.vel_obs = np.nan
+        self.thickness_obs = np.nan
+        self.surface_obs = np.nan
+
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):
+        s = '   taoinversion parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'iscontrol', 'is inversion activated?'))
+        # s += '{}\n'.format(fielddisplay(self, 'mantle_viscosity', 'mantle viscosity constraints (NaN means no constraint) (Pa s)'))
+        # s += '{}\n'.format(fielddisplay(self, 'lithosphere_thickness', 'lithosphere thickness constraints (NaN means no constraint) (m)'))
+        # s += '{}\n'.format(fielddisplay(self, 'cross_section_shape', "1: square-edged, 2: elliptical - edged surface"))
+        s += '{}\n'.format(fielddisplay(self, 'incomplete_adjoint', '1: linear viscosity, 0: non - linear viscosity'))
+        s += '{}\n'.format(fielddisplay(self, 'control_parameters', 'ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))
+        s += '{}\n'.format(fielddisplay(self, 'maxsteps', 'maximum number of iterations (gradient computation)'))
+        s += '{}\n'.format(fielddisplay(self, 'maxiter', 'maximum number of Function evaluation (forward run)'))
+        s += '{}\n'.format(fielddisplay(self, 'fatol', 'convergence criterion: f(X) - f(X * ) (X: current iteration, X * : "true" solution, f: cost function)'))
+        s += '{}\n'.format(fielddisplay(self, 'frtol', 'convergence criterion: |f(X) - f(X * )| / |f(X * )|'))
+        s += '{}\n'.format(fielddisplay(self, 'gatol', 'convergence criterion: ||g(X)|| (g: gradient of the cost function)'))
+        s += '{}\n'.format(fielddisplay(self, 'grtol', 'convergence criterion: ||g(X)|| / |f(X)|'))
+        s += '{}\n'.format(fielddisplay(self, 'gttol', 'convergence criterion: ||g(X)|| / ||g(X0)|| (g(X0): gradient at initial guess X0)'))
+        s += '{}\n'.format(fielddisplay(self, 'algorithm', 'minimization algorithm: ''tao_blmvm'', ''tao_cg'', ''tao_lmvm'''))
+        s += '{}\n'.format(fielddisplay(self, 'cost_functions', 'indicate the type of response for each optimization step'))
+        s += '{}\n'.format(fielddisplay(self, 'cost_functions_coefficients', 'cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
+        s += '{}\n'.format(fielddisplay(self, 'min_parameters', 'absolute minimum acceptable value of the inversed parameter on each vertex'))
+        s += '{}\n'.format(fielddisplay(self, 'max_parameters', 'absolute maximum acceptable value of the inversed parameter on each vertex'))
+        s += '{}\n'.format(fielddisplay(self, 'vx_obs', 'observed velocity x component [m / yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'vy_obs', 'observed velocity y component [m / yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'vel_obs', 'observed velocity magnitude [m / yr]'))
+        s += '{}\n'.format(fielddisplay(self, 'thickness_obs', 'observed thickness [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'surface_obs', 'observed surface elevation [m]'))
+        s += '{}\n'.format('Available cost functions:')
+        s += '{}\n'.format('   101: SurfaceAbsVelMisfit')
+        s += '{}\n'.format('   102: SurfaceRelVelMisfit')
+        s += '{}\n'.format('   103: SurfaceLogVelMisfit')
+        s += '{}\n'.format('   104: SurfaceLogVxVyMisfit')
+        s += '{}\n'.format('   105: SurfaceAverageVelMisfit')
+        s += '{}\n'.format('   201: ThicknessAbsMisfit')
+        s += '{}\n'.format('   501: DragCoefficientAbsGradient')
+        s += '{}\n'.format('   502: RheologyBbarAbsGradient')
+        s += '{}\n'.format('   503: ThicknessAbsGradient')
+        return s
+
+    def setdefaultparameters(self):
+        #default is incomplete adjoint for now
+        self.incomplete_adjoint = 1
+        #parameter to be inferred by control methods (only
+        #drag and B are supported yet)
+        self.control_parameters = ['FrictionCoefficient']
+        #number of iterations and steps
+        self.maxsteps = 20
+        self.maxiter = 30
+        #default tolerances
+        self.fatol = 0
+        self.frtol = 0
+        self.gatol = 0
+        self.grtol = 0
+        self.gttol = 1e-4
+        #minimization algorithm
+        PETSCMAJOR = IssmConfig('_PETSC_MAJOR_')[0]
+        PETSCMINOR = IssmConfig('_PETSC_MINOR_')[0]
+        if(PETSCMAJOR > 3 or (PETSCMAJOR == 3 and PETSCMINOR >= 5)):
+            self.algorithm = 'blmvm'
+        else:
+            self.algorithm = 'tao_blmvm'
+        #several responses can be used:
+        self.cost_functions = 101
+        return self
+
+    def extrude(self, md):
+        self.vx_obs = project3d(md, 'vector', self.vx_obs, 'type', 'node')
+        self.vy_obs = project3d(md, 'vector', self.vy_obs, 'type', 'node')
+        self.vel_obs = project3d(md, 'vector', self.vel_obs, 'type', 'node')
+        self.thickness_obs = project3d(md, 'vector', self.thickness_obs, 'type', 'node')
+
+        if numel(self.cost_functions_coefficients) > 1:
+            self.cost_functions_coefficients = project3d(md, 'vector', self.cost_functions_coefficients, 'type', 'node')
+
+        if numel(self.min_parameters) > 1:
+            self.min_parameters = project3d(md, 'vector', self.min_parameters, 'type', 'node')
+
+        if numel(self.max_parameters) > 1:
+            self.max_parameters = project3d(md, 'vector', self.max_parameters, 'type', 'node')
+
+        return self
+
+    def checkconsistency(self, md, solution, analyses):
+        if not self.iscontrol:
+            return md
+        if not IssmConfig('_HAVE_TAO_')[0]:
+            md = md.checkmessage('TAO has not been installed, ISSM needs to be reconfigured and recompiled with TAO')
+
+        num_controls = np.size(md.inversion.control_parameters)
+        num_costfunc = np.size(md.inversion.cost_functions)
+
+        md = checkfield(md, 'fieldname', 'inversion.iscontrol', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'inversion.incomplete_adjoint', 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'inversion.control_parameters', 'cell', 1, 'values', supportedcontrols())
+        md = checkfield(md, 'fieldname', 'inversion.maxsteps', 'numel', 1, '>=', 0)
+        md = checkfield(md, 'fieldname', 'inversion.maxiter', 'numel', 1, '>=', 0)
+        md = checkfield(md, 'fieldname', 'inversion.fatol', 'numel', 1, '>=', 0)
+        md = checkfield(md, 'fieldname', 'inversion.frtol', 'numel', 1, '>=', 0)
+        md = checkfield(md, 'fieldname', 'inversion.gatol', 'numel', 1, '>=', 0)
+        md = checkfield(md, 'fieldname', 'inversion.grtol', 'numel', 1, '>=', 0)
+        md = checkfield(md, 'fieldname', 'inversion.gttol', 'numel', 1, '>=', 0)
+
+        PETSCMAJOR = IssmConfig('_PETSC_MAJOR_')[0]
+        PETSCMINOR = IssmConfig('_PETSC_MINOR_')[0]
+        if(PETSCMAJOR > 3 or (PETSCMAJOR == 3 and PETSCMINOR >= 5)):
+            md = checkfield(md, 'fieldname', 'inversion.algorithm', 'values', ['blmvm', 'cg', 'lmvm'])
+        else:
+            md = checkfield(md, 'fieldname', 'inversion.algorithm', 'values', ['tao_blmvm', 'tao_cg', 'tao_lmvm'])
+
+        md = checkfield(md, 'fieldname', 'inversion.cost_functions', 'size', [num_costfunc], 'values', supportedcostfunctions())
+        md = checkfield(md, 'fieldname', 'inversion.cost_functions_coefficients', 'size', [md.mesh.numberofvertices, num_costfunc], '>=', 0)
+        md = checkfield(md, 'fieldname', 'inversion.min_parameters', 'size', [md.mesh.numberofvertices, num_controls])
+        md = checkfield(md, 'fieldname', 'inversion.max_parameters', 'size', [md.mesh.numberofvertices, num_controls])
+
+        if solution == 'BalancethicknessSolution':
+            md = checkfield(md, 'fieldname', 'inversion.thickness_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+        elif solution == 'BalancethicknessSoftSolution':
+            md = checkfield(md, 'fieldname', 'inversion.thickness_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+        else:
+            md = checkfield(md, 'fieldname', 'inversion.vx_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'inversion.vy_obs', 'size', [md.mesh.numberofvertices], 'NaN', 1, 'Inf', 1)
+
+    def marshall(self, prefix, md, fid):
+
+        yts = md.constants.yts
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'iscontrol', 'format', 'Boolean')
+        WriteData(fid, prefix, 'name', 'md.inversion.type', 'data', 1, 'format', 'Integer')
+        if not self.iscontrol:
+            return
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'incomplete_adjoint', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'maxsteps', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'maxiter', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'fatol', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'frtol', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'gatol', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'grtol', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'gttol', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'algorithm', 'format', 'String')
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'cost_functions_coefficients', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'min_parameters', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'max_parameters', 'format', 'DoubleMat', 'mattype', 3)
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'vx_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'vy_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'vz_obs', 'format', 'DoubleMat', 'mattype', 1, 'scale', 1. / yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'thickness_obs', 'format', 'DoubleMat', 'mattype', 1)
+        WriteData(fid, prefix, 'object', self, 'class', 'inversion', 'fieldname', 'surface_obs', 'format', 'DoubleMat', 'mattype', 1)
+
+    #process control parameters
+        num_control_parameters = np.size(self.control_parameters)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'control_parameters', 'format', 'StringArray')
+        WriteData(fid, prefix, 'data', num_control_parameters, 'name', 'md.inversion.num_control_parameters', 'format', 'Integer')
+
+    #process cost functions
+        num_cost_functions = np.size(self.cost_functions)
+        data = marshallcostfunctions(self.cost_functions)
+        WriteData(fid, prefix, 'data', data, 'name', 'md.inversion.cost_functions', 'format', 'StringArray')
+        WriteData(fid, prefix, 'data', num_cost_functions, 'name', 'md.inversion.num_cost_functions', 'format', 'Integer')
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/template.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/template.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/template.js	(revision 27955)
@@ -0,0 +1,18 @@
+//TEMPLATE class definition
+//
+//   Usage:
+//      template=new template();
+
+function template (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   template class echo:'));
+
+	}// }}}
+	//properties 
+	// {{{
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/thermal.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/thermal.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/thermal.js	(revision 27955)
@@ -0,0 +1,181 @@
+//THERMAL class definition
+//
+//   Usage:
+//      thermal=new thermal();
+
+function thermal (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//Number of unstable constraints acceptable
+		this.penalty_threshold=0;
+
+		//Type of stabilization used
+		this.stabilization=1;
+
+		//Relative tolerance for the enthalpy convergence
+		this.reltol=0.01;
+
+		//Maximum number of iterations
+		this.maxiter=100;
+
+		//factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor
+		this.penalty_factor=3;
+
+		//Should we use cold ice (default) or enthalpy formulation
+		this.isenthalpy=0;
+
+		//will basal boundary conditions be set dynamically
+		this.isdynamicbasalspc=0;
+
+		//wether waterfraction drainage is enabled
+		this.isdrainicecolumn=1;
+
+		//set an upper limit for local stored watercolumn
+		this.watercolumn_upperlimit=1000;
+		
+		//Linear elements by default
+		this.fe='P1';
+
+		//default output
+		this.requested_outputs=['default'];
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   Thermal solution parameters:'));
+
+		fielddisplay(this,'spctemperature','temperature constraints (NaN means no constraint) [K]');
+		fielddisplay(this,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG');
+		fielddisplay(this,'reltol','relative tolerance convergence criterion for enthalpy');
+		fielddisplay(this,'maxiter','maximum number of non linear iterations');
+		fielddisplay(this,'penalty_lock','stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)');
+		fielddisplay(this,'penalty_threshold','threshold to declare convergence of thermal solution (default is 0)');
+		fielddisplay(this,'penalty_factor','scaling exponent (default is 3)');
+		fielddisplay(this,'isenthalpy','use an enthalpy formulation to include temperate ice (default is 0)');
+		fielddisplay(this,'isdynamicbasalspc','enable dynamic setting of basal forcing. required for enthalpy formulation (default is 0)');
+		fielddisplay(this,'isdrainicecolumn','wether waterfraction drainage is enabled for enthalpy formulation (default is 1)'); 
+		fielddisplay(this,'watercolumn_upperlimit','upper limit of basal watercolumn for enthalpy formulation (default is 1000m)');
+		fielddisplay(this,'fe','Finite Element type: "P1" (default), "P1xP2"');
+		fielddisplay(this,'requested_outputs','additional outputs requested');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "thermal";
+	}// }}}
+    this.extrude = function(md) {//{{{
+        this.spctemperature=project3d(md,'vector',this.spctemperature,'type','node','layer',md.mesh.numberoflayers,'padding',NaN);
+        if (md.initialization.temperature.length===md.mesh.numberofvertices) {
+            this.spctemperature = NewArrayFill(md.mesh.numberofvertices, NaN);
+            var pos=ArrayFindNot(md.mesh.vertexonsurface, 0);
+			// impose observed temperature on surface
+			for (var i=0,posIndex=0,count=0;i<md.initialization.temperature.length;i++){
+				if(count===pos[posIndex]){
+					this.spctemperature[i] = md.initialization.temperature[i][0];
+					posIndex++;
+				}
+				count++;
+			}
+//            this.spctemperature = NewArrayFill2D(md.mesh.numberofvertices, 1, NaN);
+//            var pos=ArrayFindNot2D(md.mesh.vertexonsurface, 0);
+//			// impose observed temperature on surface
+//			for (var i=0,posIndex=0,count=0;i<md.initialization.temperature.length;i++){
+//				for (var j=0;j<md.initialization.temperature[i].length;j++){
+//					if(count===pos[posIndex]){
+//						this.spctemperature[i][j] = md.initialization.temperature[i][j];
+//						posIndex++;
+//					}
+//					count++;
+//				}
+//			}
+        }
+
+        return this;
+    }//}}}
+	this.checkconsistency = function(md,solution,analyses){ // {{{
+
+		//Early return
+		if(!ArrayAnyEqual(ArrayIsMember('ThermalAnalysis',analyses),1) & !ArrayAnyEqual(ArrayIsMember('EnthalpyAnalysis',analyses),1)  | (solution == 'TransientSolution' & md.trans.isthermal==0)) return;
+
+		checkfield(md,'fieldname','thermal.stabilization','numel',[1],'values',[0 ,1, 2]);
+		checkfield(md,'fieldname','thermal.spctemperature','Inf',1,'timeseries',1);
+		checkfield(md,'fieldname','thermal.fe','values',['P1','P1xP2','P1xP3']);
+		if(ArrayAnyEqual(ArrayIsMember('EnthalpyAnalysis',analyses),1) & md.thermal.isenthalpy & md.mesh.dimension() == 3){
+			checkfield(md,'fieldname','thermal.isdrainicecolumn','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','thermal.watercolumn_upperlimit','>=',0);
+			
+			for(var i=0;i<md.mesh.numberofvertices;i++){
+				for(var j=0;j<md.thermal.spctemperature[0].length;j++){
+					if (!isNaN(md.thermal.spctemperature[i][j])){
+						var rep=md.geometry.surface[i]-md.mesh.z[i];
+						if (md.thermal.spctemperature[i][j] <= md.materials.melting-md.materials.beta*md.materials.rho_ice*md.constants.g*rep+Math.pow(10,-5)){
+
+							md.checkmessage('spctemperature should be less or equal than the adjusted melting point');
+							break;
+						}
+					}
+				}
+			}
+			checkfield(md,'fieldname','thermal.isenthalpy','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','thermal.isdynamicbasalspc','numel', [1],'values',[0, 1]);
+			if(md.thermal.isenthalpy){
+				if (isNan(md.stressbalance.reltol)){
+					md.checkmessage('for a steadystate computation, thermal.reltol (relative convergence criterion) must be defined!');
+				}
+				checkfield(md,'fieldname','thermal.reltol','>',0.,'message','reltol must be larger than zero');
+			}
+		}
+		checkfield(md,'fieldname','thermal.requested_outputs','stringrow',1);
+	} // }}} 
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'object',this,'fieldname','spctemperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',this,'fieldname','penalty_threshold','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','stabilization','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','reltol','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','penalty_lock','format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','penalty_factor','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','isenthalpy','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isdrainicecolumn','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','watercolumn_upperlimit','format','Double');
+			WriteData(fid,prefix,'object',this,'fieldname','fe','format','String');
+			WriteData(fid,prefix,'object',this,'fieldname','isdynamicbasalspc','format','Boolean');
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}
+			WriteData(fid,prefix,'data',outputs,'name','md.thermal.requested_outputs','format','StringArray');
+        	}//}}}
+		this.defaultoutputs = function(md) { //{{{
+
+			if (this.isenthalpy) return ['Enthalpy','Temperature','Waterfraction','Watercolumn','BasalforcingsGroundediceMeltingRate'];
+			else return ['Temperature','BasalforcingsGroundediceMeltingRate'];
+		}//}}}
+		this.fix=function() { //{{{
+			this.spctemperature=NullFix(this.spctemperature,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.spctemperature    		= NaN;
+	this.penalty_threshold 		= 0;
+	this.stabilization     		= 0;
+	this.reltol			   		= 0;
+	this.maxiter           		= 0;
+	this.penalty_lock      		= 0;
+	this.penalty_factor    		= 0;
+	this.isenthalpy        		= 0;
+	this.isdynamicbasalspc 		= 0;
+	this.isdrainicecolumn  		= 0;
+	this.watercolumn_upperlimit = 0;
+	this.fe                		= 'P1';
+	this.requested_outputs 		= [];
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/thermal.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/thermal.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/thermal.m	(revision 27955)
@@ -0,0 +1,173 @@
+%THERMAL class definition
+%
+%   Usage:
+%      thermal=thermal();
+
+classdef thermal
+	properties (SetAccess=public) 
+		spctemperature    = NaN;
+		penalty_threshold = 0;
+		stabilization     = 0;
+		reltol				= 0;
+		maxiter           = 0;
+		penalty_lock      = 0;
+		penalty_factor    = 0;
+		isenthalpy        = 0;
+		isdynamicbasalspc = 0;
+		isdrainicecolumn   = 0;
+		watercolumn_upperlimit= 0;
+		fe                = 'P1';
+		requested_outputs = {};
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.spctemperature=project3d(md,'vector',self.spctemperature,'type','node','layer',md.mesh.numberoflayers,'padding',NaN);
+			if (length(md.initialization.temperature)==md.mesh.numberofvertices),
+				self.spctemperature=NaN(md.mesh.numberofvertices,1);
+				pos=find(md.mesh.vertexonsurface);
+				self.spctemperature(pos)=md.initialization.temperature(pos); %impose observed temperature on surface
+			end
+		end % }}}
+		function self = thermal(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+
+			if self.isenthalpy,
+				list = {'Enthalpy','Temperature','Waterfraction','Watercolumn','BasalforcingsGroundediceMeltingRate'};
+			else
+				list = {'Temperature','BasalforcingsGroundediceMeltingRate'};
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%Number of unstable constraints acceptable
+			self.penalty_threshold=0;
+
+			%Type of stabilization used
+			self.stabilization=1;
+
+			%Relative tolerance for the enthalpy convergence
+			self.reltol=0.01;
+
+			%Maximum number of iterations
+			self.maxiter=100;
+
+			%factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor
+			self.penalty_factor=3;
+
+			%Should we use cold ice (default) or enthalpy formulation
+			self.isenthalpy=0;
+
+			%will basal boundary conditions be set dynamically
+			self.isdynamicbasalspc=0;
+		
+			%wether waterfraction drainage is enabled
+			self.isdrainicecolumn=1;
+
+			%set an upper limit for local stored watercolumn
+			self.watercolumn_upperlimit=1000;
+
+			%Linear elements by default
+			self.fe='P1';
+
+			%default output
+			self.requested_outputs={'default'};
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if (~ismember('ThermalAnalysis',analyses) & ~ismember('EnthalpyAnalysis',analyses)) | (strcmp(solution,'TransientSolution') & md.transient.isthermal==0), return; end
+
+			md = checkfield(md,'fieldname','thermal.stabilization','numel',[1],'values',[0 1 2 3]);
+			md = checkfield(md,'fieldname','thermal.spctemperature','Inf',1,'timeseries',1,'>=',0);
+			md = checkfield(md,'fieldname','thermal.fe','values',{'P1','P1xP2','P1xP3'});
+			if (ismember('EnthalpyAnalysis',analyses) & md.thermal.isenthalpy & dimension(md.mesh)==3),
+				md = checkfield(md,'fieldname','thermal.isdrainicecolumn','numel',[1],'values',[0 1]);
+				md = checkfield(md,'fieldname','thermal.watercolumn_upperlimit','>=',0);
+
+				%Make sure the spc are less than melting point (Josh commented out the next 2 lines)
+				TEMP=md.thermal.spctemperature(1:md.mesh.numberofvertices,:);
+				replicate=repmat(md.geometry.surface-md.mesh.z,1,size(md.thermal.spctemperature,2));
+				pos=find(~isnan(TEMP));
+				md = checkfield(md,'fieldname','thermal.spctemperature','field',TEMP(pos)',...
+					'<=',md.materials.meltingpoint-md.materials.beta*md.materials.rho_ice*md.constants.g*replicate(pos)+10^-5,...
+					'message','spctemperature should be less or equal than the adjusted melting point');
+
+				md = checkfield(md,'fieldname','thermal.isenthalpy','numel',[1],'values',[0 1]);
+				md = checkfield(md,'fieldname','thermal.isdynamicbasalspc','numel', [1],'values',[0 1]);
+				if(md.thermal.isenthalpy)
+					if isnan(md.stressbalance.reltol),
+						md = checkmessage(md,['for a steadystate computation, thermal.reltol (relative convergence criterion) must be defined!']);
+					end 
+					md = checkfield(md,'fieldname','thermal.reltol','>',0.,'message','reltol must be larger than zero');
+				end
+			end
+
+		 md = checkfield(md,'fieldname','thermal.requested_outputs','stringrow',1);
+    end % }}} 
+		function disp(self) % {{{
+			disp(sprintf('   Thermal solution parameters:'));
+
+			fielddisplay(self,'spctemperature','temperature constraints (NaN means no constraint) [K]');
+			fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG, 3: anisotropic SUPG');
+			fielddisplay(self,'reltol','relative tolerance convergence criterion for enthalpy');
+			fielddisplay(self,'maxiter','maximum number of non linear iterations');
+			fielddisplay(self,'penalty_lock','stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)');
+			fielddisplay(self,'penalty_threshold','threshold to declare convergence of thermal solution (default is 0)');
+			fielddisplay(self,'penalty_factor','scaling exponent (default is 3)');
+			fielddisplay(self,'isenthalpy','use an enthalpy formulation to include temperate ice (default is 0)');
+			fielddisplay(self,'isdynamicbasalspc','enable dynamic setting of basal forcing. required for enthalpy formulation (default is 0)');
+			fielddisplay(self,'isdrainicecolumn','wether waterfraction drainage is enabled for enthalpy formulation (default is 1)'); 
+			fielddisplay(self,'watercolumn_upperlimit','upper limit of basal watercolumn for enthalpy formulation (default is 1000m)');
+			fielddisplay(self,'fe','Finite Element type: ''P1'' (default), ''P1xP2''');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','spctemperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','penalty_threshold','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','stabilization','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','reltol','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','maxiter','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','penalty_lock','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','penalty_factor','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','isenthalpy','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isdrainicecolumn','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','watercolumn_upperlimit','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','fe','format','String');
+			WriteData(fid,prefix,'object',self,'fieldname','isdynamicbasalspc','format','Boolean');
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.thermal.requested_outputs','format','StringArray');
+        	end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.thermal.spctemperature'],self.spctemperature);
+			writejsdouble(fid,[modelname '.thermal.penalty_threshold'],self.penalty_threshold);
+			writejsdouble(fid,[modelname '.thermal.stabilization'],self.stabilization);
+			writejsdouble(fid,[modelname '.thermal.reltol'],self.reltol);
+			writejsdouble(fid,[modelname '.thermal.maxiter'],self.maxiter);
+			writejsdouble(fid,[modelname '.thermal.penalty_lock'],self.penalty_lock);
+			writejsdouble(fid,[modelname '.thermal.penalty_factor'],self.penalty_factor);
+			writejsdouble(fid,[modelname '.thermal.isenthalpy'],self.isenthalpy);
+			writejsdouble(fid,[modelname '.thermal.isdrainicecolumn'],self.isdrainicecolumn);
+			writejsdouble(fid,[modelname '.thermal.watercolumn_upperlimit'],self.watercolumn_upperlimit);
+			writejsdouble(fid,[modelname '.thermal.isdynamicbasalspc'],self.isdynamicbasalspc);
+			writejscellstring(fid,[modelname '.thermal.requested_outputs'],self.requested_outputs);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/thermal.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/thermal.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/thermal.py	(revision 27955)
@@ -0,0 +1,144 @@
+import numpy as np
+
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from project3d import project3d
+from WriteData import WriteData
+
+
+class thermal(object):
+    """THERMAL class definition
+
+       Usage:
+          thermal = thermal()
+    """
+
+    def __init__(self):  # {{{
+        self.spctemperature = np.nan
+        self.penalty_threshold = 0
+        self.stabilization = 0
+        self.reltol = 0
+        self.maxiter = 0
+        self.penalty_lock = 0
+        self.penalty_factor = 0
+        self.isenthalpy = 0
+        self.isdynamicbasalspc = 0
+        self.isdrainicecolumn = 0
+        self.watercolumn_upperlimit = 0
+        self.fe = 'P1'
+        self.requested_outputs = []
+        self.setdefaultparameters()
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   Thermal solution parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'spctemperature', 'temperature constraints (NaN means no constraint) [K]'))
+        s += '{}\n'.format(fielddisplay(self, 'stabilization', '0: no, 1: artificial_diffusivity, 2: SUPG'))
+        s += '{}\n'.format(fielddisplay(self, 'maxiter', 'maximum number of non linear iterations'))
+        s += '{}\n'.format(fielddisplay(self, 'reltol', 'relative tolerance criterion'))
+        s += '{}\n'.format(fielddisplay(self, 'penalty_lock', 'stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)'))
+        s += '{}\n'.format(fielddisplay(self, 'penalty_threshold', 'threshold to declare convergence of thermal solution (default is 0)'))
+        s += '{}\n'.format(fielddisplay(self, 'isenthalpy', 'use an enthalpy formulation to include temperate ice (default is 0)'))
+        s += '{}\n'.format(fielddisplay(self, 'isdynamicbasalspc', 'enable dynamic setting of basal forcing. required for enthalpy formulation (default is 0)'))
+        s += '{}\n'.format(fielddisplay(self, 'isdrainicecolumn', 'wether waterfraction drainage is enabled for enthalpy formulation (default is 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'watercolumn_upperlimit', 'upper limit of basal watercolumn for enthalpy formulation (default is 1000m)'))
+        s += '{}\n'.format(fielddisplay(self, 'fe', 'Finite Element type: ''P1'' (default), ''P1xP2'''))
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
+        return s
+    # }}}
+
+    def extrude(self, md):  # {{{
+        self.spctemperature = project3d(md, 'vector', self.spctemperature, 'type', 'node', 'layer', md.mesh.numberoflayers, 'padding', np.nan)
+        if isinstance(md.initialization.temperature, np.ndarray) and np.size(md.initialization.temperature, axis=0) == md.mesh.numberofvertices:
+            self.spctemperature = float('NaN') * np.ones((md.mesh.numberofvertices))
+            pos = np.where(md.mesh.vertexonsurface)[0]
+            self.spctemperature[pos] = md.initialization.temperature[pos]  #impose observed temperature on surface
+        return self
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        if self.isenthalpy:
+            return ['Enthalpy', 'Temperature', 'Waterfraction', 'Watercolumn', 'BasalforcingsGroundediceMeltingRate']
+        else:
+            return ['Temperature', 'BasalforcingsGroundediceMeltingRate']
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        #Number of unstable constraints acceptable
+        self.penalty_threshold = 0
+        #Type of stabilization used
+        self.stabilization = 1
+        #Relative tolerance for the enthalpy convergence
+        self.reltol = 0.01
+        #Maximum number of iterations
+        self.maxiter = 100
+        #factor used to compute the values of the penalties: kappa = max(stiffness matrix) * 1.0**penalty_factor
+        self.penalty_factor = 3
+        #Should we use cold ice (default) or enthalpy formulation
+        self.isenthalpy = 0
+        #will basal boundary conditions be set dynamically
+        self.isdynamicbasalspc = 0
+        #wether waterfraction drainage is enabled
+        self.isdrainicecolumn = 1
+        #set an upper limit for local stored watercolumn
+        self.watercolumn_upperlimit = 1000
+        #Finite element interpolation
+        self.fe = 'P1'
+        #default output
+        self.requested_outputs = ['default']
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        # Early return
+        if ('ThermalAnalysis' not in analyses and 'EnthalpyAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isthermal):
+            return md
+        md = checkfield(md, 'fieldname', 'thermal.stabilization', 'numel', [1], 'values', [0, 1, 2, 3])
+        md = checkfield(md, 'fieldname', 'thermal.spctemperature', 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md,'fieldname', 'thermal.fe', 'values', ['P1', 'P1xP2', 'P1xP3'])
+        md = checkfield(md, 'fieldname', 'thermal.requested_outputs', 'stringrow', 1)
+        if 'EnthalpyAnalysis' in analyses and md.thermal.isenthalpy and md.mesh.dimension() == 3:
+            md = checkfield(md, 'fieldname', 'thermal.isdrainicecolumn', 'numel', [1], 'values', [0, 1])
+            md = checkfield(md, 'fieldname', 'thermal.watercolumn_upperlimit', '>=', 0)
+
+            TEMP = md.thermal.spctemperature[:-1].flatten()
+            pos = np.where(~np.isnan(TEMP))
+            try:
+                spccol = np.size(md.thermal.spctemperature, 1)
+            except IndexError:
+                spccol = 1
+
+            replicate = np.tile(md.geometry.surface - md.mesh.z, (spccol)).flatten()
+            control = md.materials.meltingpoint - md.materials.beta * md.materials.rho_ice * md.constants.g * replicate + 1.0e-5
+            md = checkfield(md, 'fieldname', 'thermal.spctemperature', 'field', md.thermal.spctemperature.flatten()[pos], '<=', control[pos], 'message', "spctemperature should be below the adjusted melting point")
+            md = checkfield(md, 'fieldname', 'thermal.isenthalpy', 'numel', [1], 'values', [0, 1])
+            md = checkfield(md, 'fieldname', 'thermal.isdynamicbasalspc', 'numel', [1], 'values', [0, 1])
+            if(md.thermal.isenthalpy):
+                if np.isnan(md.stressbalance.reltol):
+                    md.checkmessage("for a steadystate computation, thermal.reltol (relative convergence criterion) must be defined!")
+                md = checkfield(md, 'fieldname', 'thermal.reltol', '>', 0., 'message', "reltol must be larger than zero")
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'spctemperature', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'penalty_threshold', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'stabilization', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'reltol', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'maxiter', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'penalty_lock', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'penalty_factor', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isenthalpy', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isdrainicecolumn', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'watercolumn_upperlimit', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'fe', 'format', 'String')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isdynamicbasalspc', 'format', 'Boolean')
+
+    #process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.thermal.requested_outputs', 'format', 'StringArray')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/timestepping.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/timestepping.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/timestepping.js	(revision 27955)
@@ -0,0 +1,78 @@
+//TIMESTEPPING class definition
+//
+//   Usage:
+//      timestepping=new timestepping();
+
+function timestepping (){
+	//methods
+	this.setdefaultparameters = function(){ //{{{
+		//time between 2 time steps
+		this.time_step=1./2.;
+
+		//final time
+		this.final_time=10.*this.time_step;
+
+		//should we interpolate forcings between timesteps?
+		this.interp_forcing=1;
+		this.cycle_forcing=0;
+	} //}}}
+	this.disp= function(){ //{{{
+
+		var unit;
+		console.log(sprintf('   timestepping parameters:'));
+		unit = 'yr';
+		fielddisplay(this,'start_time','simulation starting time ['+ unit + ']');
+		fielddisplay(this,'final_time','final time to stop the simulation ['+ unit + ']');
+		fielddisplay(this,'time_step','length of time steps [' +unit+ ']');
+		fielddisplay(this,'interp_forcing','interpolate in time between requested forcing values ? (0 or 1)');
+		fielddisplay(this,'cycle_forcing','cycle through forcing ? (0 or 1)');
+		fielddisplay(this,'coupling_time','length of coupling time steps with ocean model [' +unit+ ']');
+
+	} //}}}
+	this.classname= function(){ //{{{
+		return "timestepping";
+
+	} //}}}
+	this.checkconsistency = function(md,solution,analyses) { //{{{
+
+		checkfield(md,'fieldname','timestepping.start_time','numel',[1],'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','timestepping.final_time','numel',[1],'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','timestepping.interp_forcing','numel',[1],'values',[0,1]);
+		checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0,1]);
+		checkfield(md,'fieldname','timestepping.coupling_time','numel',[1],'>=',0,'NaN',1,'Inf',1);
+		if (this.final_time-this.start_time<0){
+			md.checkmessage('timestepping.final_time should be larger than timestepping.start_time');
+		}
+		if (solution=='TransientSolution'){
+			checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>',0,'NaN',1,'Inf',1);
+		}
+	} // }}}
+	this.marshall=function(md,prefix,fid) { //{{{
+
+		var scale;
+		scale = md.constants.yts;
+
+		WriteData(fid,prefix,'name','md.timestepping.type','data',1,'format','Integer');
+		WriteData(fid,prefix,'object',this,'fieldname','start_time','format','Double','scale',scale);
+		WriteData(fid,prefix,'object',this,'fieldname','final_time','format','Double','scale',scale);
+		WriteData(fid,prefix,'object',this,'fieldname','time_step','format','Double','scale',scale);
+		WriteData(fid,prefix,'object',this,'fieldname','interp_forcing','format','Boolean');
+		WriteData(fid,prefix,'object',this,'fieldname','cycle_forcing','format','Boolean');
+		WriteData(fid,prefix,'object',this,'fieldname','coupling_time','format','Double','scale',scale);
+
+	}//}}}
+	this.fix=function() { //{{{
+	}//}}}
+	//properties 
+	// {{{
+	this.start_time      = 0.;
+	this.final_time      = 0.;
+	this.time_step       = 0.;
+	this.interp_forcing  = 1;
+	this.cycle_forcing   = 1;
+	this.coupling_time   = 0.;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/timestepping.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/timestepping.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/timestepping.m	(revision 27955)
@@ -0,0 +1,91 @@
+%TIMESTEPPING Class definition
+%
+%   Usage:
+%      timestepping=timestepping();
+
+classdef timestepping
+	properties (SetAccess=public)
+		start_time      = 0.;
+		final_time      = 0.;
+		time_step       = 0.;
+		interp_forcing  = 1;
+		average_forcing  = 0;
+		cycle_forcing   = 0;
+		coupling_time   = 0.;
+	end
+	methods
+		function self = timestepping(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(timestepping(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   timestepping parameters:'));
+
+			unit = 'yr';
+			fielddisplay(self,'start_time',['simulation starting time [' unit ']']);
+			fielddisplay(self,'final_time',['final time to stop the simulation [' unit ']']);
+			fielddisplay(self,'time_step',['length of time steps [' unit ']']);
+			fielddisplay(self,'interp_forcing','interpolate in time between requested forcing values? (0 or 1)');
+			fielddisplay(self,'average_forcing','average in time if there are several forcing values between steps? (0 or 1, default is 0)');
+			fielddisplay(self,'cycle_forcing','cycle through forcing? (0 or 1)');
+			fielddisplay(self,'coupling_time',['length of coupling time step with ocean model [' unit ']']);
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%time between 2 time steps
+			self.time_step=1./2.;
+
+			%final time
+			self.final_time=10.*self.time_step;
+
+			%should we interpolate forcing between timesteps?
+			self.interp_forcing=1;
+			self.average_forcing=0;
+			self.cycle_forcing=0;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','timestepping.start_time','numel',[1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','timestepping.final_time','numel',[1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','timestepping.interp_forcing','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','timestepping.average_forcing','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0 1]);
+			if self.final_time-self.start_time<0,
+				md = checkmessage(md,'timestepping.final_time should be larger than timestepping.start_time');
+			end
+			if strcmp(solution,'TransientSolution'),
+				md = checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>',0,'NaN',1,'Inf',1);
+			end
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			scale = md.constants.yts;
+			WriteData(fid,prefix,'name','md.timestepping.type','data',1,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','start_time','format','Double','scale',scale);
+			WriteData(fid,prefix,'object',self,'fieldname','final_time','format','Double','scale',scale);
+			WriteData(fid,prefix,'object',self,'fieldname','time_step','format','Double','scale',scale);
+			WriteData(fid,prefix,'object',self,'fieldname','interp_forcing','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','average_forcing','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','cycle_forcing','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','coupling_time','format','Double','scale',scale);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			writejsdouble(fid,[modelname '.timestepping.start_time'],self.start_time);
+			writejsdouble(fid,[modelname '.timestepping.final_time'],self.final_time);
+			writejsdouble(fid,[modelname '.timestepping.time_step'],self.time_step);
+			writejsdouble(fid,[modelname '.timestepping.interp_forcing'],self.interp_forcing);
+			writejsdouble(fid,[modelname '.timestepping.average_forcing'],self.interp_forcing);
+			writejsdouble(fid,[modelname '.timestepping.cycle_forcing'],self.cycle_forcing);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/timestepping.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/timestepping.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/timestepping.py	(revision 27955)
@@ -0,0 +1,81 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class timestepping(object):
+    """TIMESTEPPING Class definition
+
+    Usage:
+        timestepping = timestepping()
+    """
+
+    def __init__(self, *args):  #{{{
+        self.start_time = 0
+        self.final_time = 0
+        self.time_step = 0
+        self.interp_forcing = 1
+        self.average_forcing = 0
+        self.cycle_forcing = 0
+        self.coupling_time = 0
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            raise RuntimeError('constructor not supported')
+    # }}}
+
+    def __repr__(self):  #{{{
+        s = '   timestepping parameters:\n'
+        unit = 'yr'
+        s += '{}\n'.format(fielddisplay(self, 'start_time', 'simulation starting time [' + unit + ']'))
+        s += '{}\n'.format(fielddisplay(self, 'final_time', 'final time to stop the simulation [' + unit + ']'))
+        s += '{}\n'.format(fielddisplay(self, 'time_step', 'length of time steps [' + unit + ']'))
+        s += '{}\n'.format(fielddisplay(self, 'interp_forcing', 'interpolate in time between requested forcing values? (0 or 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'average_forcing', 'average in time if there are several forcing values between steps? (0 or 1, default is 0)'))
+        s += '{}\n'.format(fielddisplay(self, 'cycle_forcing', 'cycle through forcing? (0 or 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'coupling_time', 'length of coupling time steps with ocean model [' + unit + ']'))
+        return s
+    # }}}
+
+    def setdefaultparameters(self):  #{{{
+        # Time between 2 time steps
+        self.time_step = 1 / 2
+
+        # Final time
+        self.final_time = 10 * self.time_step
+
+        # Should we interpolate forcing between timesteps?
+        self.interp_forcing = 1
+        self.average_forcing = 0
+        self.cycle_forcing = 0
+
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  #{{{
+        md = checkfield(md, 'fieldname', 'timestepping.start_time', 'numel', [1], 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'timestepping.final_time', 'numel', [1], 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'timestepping.time_step', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'timestepping.interp_forcing', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'timestepping.average_forcing', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'timestepping.cycle_forcing', 'numel', [1], 'values', [0, 1])
+        if (self.final_time - self.start_time) < 0:
+            md.checkmessage('timestepping.final_time should be larger than timestepping.start_time')
+        if solution == 'TransientSolution':
+            md = checkfield(md, 'fieldname', 'timestepping.time_step', 'numel', [1], '>', 0, 'NaN', 1, 'Inf', 1)
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  #{{{
+        scale = md.constants.yts
+        WriteData(fid, prefix, 'name', 'md.timestepping.type', 'data', 1, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'start_time', 'format', 'Double', 'scale', scale)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'final_time', 'format', 'Double', 'scale', scale)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'time_step', 'format', 'Double', 'scale', scale)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'interp_forcing', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'average_forcing', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'cycle_forcing', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'coupling_time', 'format', 'Double', 'scale', scale)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/timesteppingadaptive.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/timesteppingadaptive.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/timesteppingadaptive.js	(revision 27955)
@@ -0,0 +1,87 @@
+//TIMESTEPPINGADAPTIVE class definition
+//
+//   Usage:
+//      timesteppingadaptive=new timesteppingadaptive();
+
+function timesteppingadaptive (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		//time between 2 time steps
+		this.time_step_min=0.01;
+		this.time_step_max=10.;
+
+		//final time
+		this.final_time=10.*this.time_step_max;
+
+		//time adaptation? 
+		this.cfl_coefficient=0.5;
+
+		//should we interpolate forcings between timesteps?
+		this.interp_forcings=1;
+		this.cycle_forcing=0;
+	}// }}}
+	this.disp= function(){// {{{
+
+		var unit;
+		console.log(sprintf('   timesteppingadaptive parameters:'));
+		unit = 'yr';
+		fielddisplay(this,'start_time','simulation starting time ['+ unit + ']');
+		fielddisplay(this,'final_time','final time to stop the simulation ['+ unit + ']');
+		fielddisplay(this,'time_step_min','minimum length of time steps [' +unit+ ']');
+		fielddisplay(this,'time_step_max','maximum length of time steps [' +unit+ ']');
+		fielddisplay(this,'cfl_coefficient','coefficient applied to cfl condition');
+		fielddisplay(this,'interp_forcings','interpolate in time between requested forcing values ? (0 or 1)');
+		fielddisplay(this,'cycle_forcing','cycle through forcing ? (0 or 1)');
+		fielddisplay(this,'coupling_time','coupling time steps with ocean model [' +unit+ ']');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "timesteppingadaptive";
+
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) { //{{{
+
+		checkfield(md,'fieldname','timestepping.start_time','numel',[1],'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','timestepping.final_time','numel',[1],'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','timestepping.time_step_min','numel',[1],'>=',0,'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','timestepping.time_step_max','numel',[1],'>=',md.timestepping.time_step_max,'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1);
+		checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0,1]);
+		checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0,1]);
+		if (this.final_time-this.start_time<0){
+			md.checkmessage('timestepping.final_time should be larger than timestepping.start_time');
+		}
+		checkfield(md,'fieldname','timestepping.coupling_time','numel',[1],'>=',0,'NaN',1,'Inf',1);
+	} // }}}
+	this.marshall=function(md,prefix,fid) { //{{{
+
+		var scale;
+		scale = md.constants.yts;
+
+		WriteData(fid,prefix,'name','md.timestepping.type','data',2,'format','Integer');
+		WriteData(fid,prefix,'object',this,'class','timestepping','fieldname','start_time','format','Double','scale',scale);
+		WriteData(fid,prefix,'object',this,'class','timestepping','fieldname','final_time','format','Double','scale',scale);
+		WriteData(fid,prefix,'object',this,'class','timestepping','fieldname','time_step_min','format','Double','scale',scale);
+		WriteData(fid,prefix,'object',this,'class','timestepping','fieldname','time_step_max','format','Double','scale',scale);
+		WriteData(fid,prefix,'object',this,'class','timestepping','fieldname','cfl_coefficient','format','Double');
+		WriteData(fid,prefix,'object',this,'class','timestepping','fieldname','interp_forcings','format','Boolean');
+		WriteData(fid,prefix,'object',this,'class','timestepping','fieldname','cycle_forcing','format','Boolean');
+		WriteData(fid,prefix,'object',this,'class','timestepping','fieldname','coupling_time','format','Double','scale',scale);
+
+	}//}}}
+	this.fix=function() { //{{{
+	}//}}}
+	//properties 
+	// {{{
+	this.start_time      = 0.;
+	this.final_time      = 0.;
+	this.time_step_min   = 0.;
+	this.time_step_max   = 0.;
+	this.cfl_coefficient = 0.;
+	this.interp_forcings = 1;
+	this.cycle_forcing   = 0;
+	this.coupling_time   = 0.;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/timesteppingadaptive.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/timesteppingadaptive.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/timesteppingadaptive.m	(revision 27955)
@@ -0,0 +1,104 @@
+%TIMESTEPPINGADAPTIVE Class definition
+%
+%   Usage:
+%      timesteppingadaptive=timesteppingadaptive();
+
+classdef timesteppingadaptive
+	properties (SetAccess=public)
+		start_time      = 0.;
+		final_time      = 0.;
+		time_step_min   = 0.;
+		time_step_max   = 0.;
+		cfl_coefficient = 0.;
+		interp_forcing  = 1;
+		average_forcing = 0;
+		cycle_forcing   = 0;
+		coupling_time   = 0.;
+	end
+	methods
+		function self = timesteppingadaptive(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(timesteppingadaptive(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%time between 2 time steps
+			self.time_step_min = 0.01;
+			self.time_step_max = 10.;
+
+			%final time
+			self.final_time=10.*self.time_step_max;
+
+			%default CFL coefficient
+			self.cfl_coefficient=0.5;
+
+			%should we interpolate forcing between timesteps?
+			self.interp_forcing=1;
+			self.average_forcing=0;
+			self.cycle_forcing=0;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','timestepping.start_time','numel',[1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','timestepping.final_time','numel',[1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','timestepping.time_step_min','numel',[1],'>=',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','timestepping.time_step_max','numel',[1],'>=',md.timestepping.time_step_min,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1);
+			md = checkfield(md,'fieldname','timestepping.interp_forcing','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','timestepping.average_forcing','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','timestepping.coupling_time','numel',[1],'>=',md.timestepping.coupling_time,'NaN',1,'Inf',1);
+			if self.final_time-self.start_time<0,
+				md = checkmessage(md,'timestepping.final_time should be larger than timestepping.start_time');
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   timesteppingadaptive parameters:'));
+
+			unit = 'yr';
+			fielddisplay(self,'start_time',['simulation starting time [' unit ']']);
+			fielddisplay(self,'final_time',['final time to stop the simulation [' unit ']']);
+			fielddisplay(self,'time_step_min',['minimum length of time step [' unit ']']);
+			fielddisplay(self,'time_step_max',['maximum length of time step [' unit ']']);
+			fielddisplay(self,'cfl_coefficient','coefficient applied to cfl condition');
+			fielddisplay(self,'interp_forcing','interpolate in time between requested forcing values ? (0 or 1)');
+			fielddisplay(self,'average_forcing','average in time if there are several forcing values between steps? (0 or 1, default is 0)');
+			fielddisplay(self,'cycle_forcing','cycle through forcing ? (0 or 1)');
+			fielddisplay(self,'coupling_time',['coupling time step with ocean model [' unit ']']);
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+
+			scale = md.constants.yts;
+			WriteData(fid,prefix,'name','md.timestepping.type','data',2,'format','Integer');
+			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','start_time','format','Double','scale',scale);
+			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','final_time','format','Double','scale',scale);
+			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','time_step_min','format','Double','scale',scale);
+			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','time_step_max','format','Double','scale',scale);
+			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','cfl_coefficient','format','Double');
+			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','interp_forcing','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','average_forcing','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','cycle_forcing','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','coupling_time','format','Double','scale',scale);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			writejsdouble(fid,[modelname '.timesteppingadaptive.start_time'],self.start_time);
+			writejsdouble(fid,[modelname '.timesteppingadaptive.final_time'],self.final_time);
+			writejsdouble(fid,[modelname '.timesteppingadaptive.time_step_min'],self.time_step_min);
+			writejsdouble(fid,[modelname '.timesteppingadaptive.time_step_max'],self.time_step_max);
+			writejsdouble(fid,[modelname '.timesteppingadaptive.cfl_coefficient'],self.cfl_coefficient);
+			writejsdouble(fid,[modelname '.timesteppingadaptive.interp_forcing'],self.interp_forcing);
+			writejsdouble(fid,[modelname '.timesteppingadaptive.average_forcing'],self.interp_forcing);
+			writejsdouble(fid,[modelname '.timesteppingadaptive.cycle_forcing'],self.cycle_forcing);
+			writejsdouble(fid,[modelname '.timesteppingadaptive.coupling_time'],self.time_step_max);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/timesteppingadaptive.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/timesteppingadaptive.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/timesteppingadaptive.py	(revision 27955)
@@ -0,0 +1,101 @@
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+
+class timesteppingadaptive(object):
+    """
+    TIMESTEPPINGADAPTIVE Class definition
+
+       Usage:
+          timesteppingadaptive = timesteppingadaptive()
+    """
+
+    def __init__(self, *args):  # {{{
+        if not len(args):
+            self.start_time = 0.
+            self.final_time = 0.
+            self.time_step_min = 0.
+            self.time_step_max = 0.
+            self.cfl_coefficient = 0.
+            self.interp_forcing = 1
+            self.average_forcing = 0
+            self.cycle_forcing = 0
+            self.coupling_time = 0.
+
+            #set defaults
+            self.setdefaultparameters()
+
+        elif len(args) == 1 and args[0].__module__ == 'timestepping':
+            old = args[0]
+            #first call setdefaultparameters:
+            self.setdefaultparameters()
+            self.start_time = old.start_time
+            self.final_time = old.final_time
+            self.interp_forcing = old.interp_forcing
+            self.average_forcing = old.average_forcing
+            self.cycle_forcing = old.cycle_forcing
+            self.coupling_time = old.coupling_time
+
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        string = "   timesteppingadaptive parameters:"
+        string = '{}\n{}'.format (string, fielddisplay(self, "start_time", "simulation starting time [yr]"))
+        string = '{}\n{}'.format(string, fielddisplay(self, "final_time", "final time to stop the simulation [yr]"))
+        string = '{}\n{}'.format (string, fielddisplay(self, "time_step_min", "minimum length of time steps [yr]"))
+        string = '{}\n{}'.format (string, fielddisplay(self, "time_step_max", "maximum length of time steps [yr]"))
+        string = '{}\n{}'.format (string, fielddisplay(self, "cfl_coefficient", "coefficient applied to cfl condition"))
+        string = '{}\n{}'.format (string, fielddisplay(self, "interp_forcing", "interpolate in time between requested forcing values ? (0 or 1)"))
+        string = '{}\n{}'.format(string, fielddisplay(self, 'average_forcing', 'average in time if there are several forcing values between steps? (0 or 1, default is 0)'))
+        string = '{}\n{}'.format(string, fielddisplay(self, "cycle_forcing", "cycle through forcing ? (0 or 1)"))
+        string = '{}\n{}'.format(string, fielddisplay(self, "coupling_time", "coupling time steps with ocean model [yr]"))
+        return string
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        #time between 2 time steps
+        self.time_step_min = 0.01
+        self.time_step_max = 10.
+        #final time
+        self.final_time = 10. * self.time_step_max
+        #time adaptation?
+        self.cfl_coefficient = 0.5
+        #should we interpolate forcing between timesteps?
+        self.interp_forcing = 1
+        self.average_forcing = 0
+        self.cycle_forcing   = 0
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        md = checkfield(md, 'fieldname', 'timestepping.start_time', 'numel', [1], 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'timestepping.final_time', 'numel', [1], 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'timestepping.time_step_min', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'timestepping.time_step_max', 'numel', [1], '>=', md.timestepping.time_step_min, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'timestepping.cfl_coefficient', 'numel', [1], '>', 0, '<=', 1)
+        if self.final_time - self.start_time < 0:
+            md.checkmessage("timestepping.final_time should be larger than timestepping.start_time")
+        md = checkfield(md, 'fieldname', 'timestepping.interp_forcing', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'timestepping.average_forcing', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'timestepping.cycle_forcing', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'timestepping.coupling_time', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
+
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        yts = md.constants.yts
+        WriteData(fid, prefix, 'name', 'md.timestepping.type', 'data', 2, 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'start_time', 'format', 'Double', 'scale', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'final_time', 'format', 'Double', 'scale', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'time_step_min', 'format', 'Double', 'scale', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'time_step_max', 'format', 'Double', 'scale', yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'cfl_coefficient', 'format', 'Double')
+        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'interp_forcing', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'average_forcing', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'cycle_forcing', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'coupling_time', 'format', 'Double', 'scale', yts)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/toolkits.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/toolkits.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/toolkits.js	(revision 27955)
@@ -0,0 +1,103 @@
+//TOOLKITS class definition
+//
+//   Usage:
+//      toolkits=new toolkits();
+
+function toolkits (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//default toolkits: 
+		if (IssmConfig('_HAVE_PETSC_')){
+			//MUMPS is the default toolkits
+			if (IssmConfig('_HAVE_MUMPS_')){
+				this.DefaultAnalysis           = mumpsoptions();
+			}
+			else{
+				this.DefaultAnalysis           = iluasmoptions(); 
+			}
+		}
+		else{
+			if (IssmConfig('_HAVE_MUMPS_')){
+				this.DefaultAnalysis           = issmmumpssolver(); 
+			}
+			else if (IssmConfig('_HAVE_GSL_')){
+				this.DefaultAnalysis           = issmgslsolver(); 
+			}
+			else{
+				console.warn('toolkits setdefaultparameters message: need at least Mumps or Gsl to define an issm solver type, no default solver assigned');
+			}
+		}
+
+		this.RecoveryAnalysis = this.DefaultAnalysis;
+	}// }}}
+	this.disp = function(){// {{{
+		console.log(sprintf('List of toolkits options per analysis:\n'));
+		for(var prop in this){
+			if(typeof this[prop] == 'object'){
+				console.log(prop+ ':',this[prop]);
+			}
+		}
+	}// }}}
+	this.checkconsistency = function (md,solution,analyses) { // {{{
+		for(var prop in this){
+			if(typeof this[prop] == 'object'){
+				if (this[prop] == ''){
+					md.checkmessage(sprintf("md.toolkits.%s is empty",prop));
+				}
+			}
+		}
+	} // }}}
+		 this.ToolkitsFile = function(filename) { //{{{
+		 //TOOLKITSFILE - build toolkits file (in string format)
+		 //
+		 //   Build a Petsc compatible options string, from the toolkits model field  + return options string. 
+		 //   This file string will also be used when the toolkit used is 'issm' instead of 'petsc'
+		 //
+		 //   Usage:     var toolkitsstring = toolkits.ToolkitsFile();
+
+			 var string = '';
+
+			 //write header
+			 string += sprintf('%s%s%s\n','\%Toolkits options file: ',filename,' written from Javascript toolkits array');
+
+			 //start writing options
+			 for (var analysis in this){
+				 var options;
+				 
+				 if(typeof this[analysis] == 'object') options=this[analysis]; else continue;
+
+				 //first write analysis:
+				 string += sprintf('\n+%s\n',analysis); //append a + to recognize it's an analysis string
+
+				 //now, write options
+			
+				 for(var optionname in options){
+					 var optionvalue=options[optionname];
+
+					 if (optionvalue.length==0){
+						 //this option has only one argument
+						 string+=sprintf('-%s\n',optionname);
+					 }
+					 else{
+						 //option with value. value can be string or scalar
+						 if (typeof optionvalue == 'number'){
+							 string+=sprintf('-%s %g\n',optionname,optionvalue);
+						 }
+						 else if (typeof optionvalue == 'string'){
+							 string+=sprintf('-%s %s\n',optionname,optionvalue);
+						 }
+						 else throw Error(sprintf("ToolkitsFile error: option '%s' is not well formatted",optionname));
+					 }
+				 }
+			 }
+			 return string;
+		 } //}}}
+	//properties 
+	// {{{
+	this.DefaultAnalysis  = [];
+	this.RecoveryAnalysis = [];
+	//The other properties are dynamic
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/toolkits.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/toolkits.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/toolkits.m	(revision 27955)
@@ -0,0 +1,186 @@
+%TOOLKITS class definition
+%
+%   Usage:
+%      self=toolkits();
+
+classdef toolkits < dynamicprops
+	properties (SetAccess=public) 
+		DefaultAnalysis  = struct();
+		RecoveryAnalysis = struct();
+		%The other properties are dynamic
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. Update old properties here
+
+			if isempty(fieldnames(self.RecoveryAnalysis));
+				disp('WARNING: updating toolkits (RecoveryAnalysis not set)');
+				self.RecoveryAnalysis  = self.DefaultAnalysis;
+			end
+		end% }}}
+	end
+	methods
+		function self = toolkits(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(self,varargin{1});
+				otherwise
+					error('constructor not supported');
+				end
+			end % }}}
+		function self = addoptions(self,analysis,varargin) % {{{
+		%ADDOPTIONS - add analysis to md.toolkits.analysis
+		%
+		%   Optional third parameter adds toolkits options to analysis.
+		%
+		%   Usage:
+		%      md.toolkits=addoptions(md.toolkits,'StressbalanceAnalysis',FSoptions());
+		%      md.toolkits=addoptions(md.toolkits,'StressbalanceAnalysis');
+
+			%Create dynamic property if property does not exist yet
+			if ~ismember(analysis,properties(self)),
+				self.addprop(analysis);
+			end
+
+			%Add toolkits options to analysis
+			if nargin==3,
+				self.(analysis) = varargin{1};
+			end
+		end
+		%}}}
+		function self = setdefaultparameters(self) % {{{
+
+			%default toolkits: 
+			if IssmConfig('_HAVE_PETSC_'),
+				%MUMPS is the default toolkits
+				if IssmConfig('_HAVE_MUMPS_'),
+					self.DefaultAnalysis           = mumpsoptions();
+				else
+					self.DefaultAnalysis           = iluasmoptions(); 
+				end
+			else
+				if IssmConfig('_HAVE_MUMPS_'),
+					self.DefaultAnalysis           = issmmumpssolver(); 
+				elseif IssmConfig('_HAVE_GSL_'),
+					self.DefaultAnalysis           = issmgslsolver(); 
+				else 
+					disp('WARNING: Need at least MUMPS or GSL to define an ISSM solver type, no default solver assigned');
+				end
+			end
+
+			%Use same solver for Recovery mode
+			self.RecoveryAnalysis = self.DefaultAnalysis;
+
+
+		end % }}}
+		function disp(self) % {{{
+			analyses=properties(self);
+			disp(sprintf('List of toolkits options per analysis:\n'));
+			for i=1:numel(analyses),
+				analysis=analyses{i};
+				disp([analysis ':']);
+				disp(self.(analysis));
+			end
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			analyses=properties(self);
+			for i=1:numel(analyses),
+				switch analyses{i}
+					case 'DefaultAnalysis'
+					case 'RecoveryAnalysis'
+					case 'StressbalanceAnalysis'
+					case 'GLheightadvectionAnalysis'
+					case 'MasstransportAnalysis'
+					case 'ThermalAnalysis'
+					case 'EnthalpyAnalysis'
+					case 'AdjointBalancethicknessAnalysis'
+					case 'BalancethicknessAnalysis'
+					case 'Balancethickness2Analysis'
+					case 'BalancethicknessSoftAnalysis'
+					case 'BalancevelocityAnalysis'
+					case 'DamageEvolutionAnalysis'
+					case 'LoveAnalysis'
+					case 'EsaAnalysis'
+					case 'SealevelchangeAnalysis'
+					case 'FreeSurfaceBaseAnalysis'
+					case 'FreeSurfaceTopAnalysis'
+					case 'LevelsetAnalysis'
+					case 'DebrisAnalysis'
+					case 'L2ProjectionBaseAnalysis'
+					case 'ExtrudeFromBaseAnalysis'
+					case 'ExtrudeFromTopAnalysis'
+					otherwise
+						md = checkmessage(md,['md.toolkits.' analyses{i} ' not supported yet']);
+				end
+				if isempty(fieldnames(self.(analyses{i})))
+					md = checkmessage(md,['md.toolkits.' analyses{i} ' is empty']);
+				end
+			end
+		end % }}}
+		function ToolkitsFile(toolkits,filename) % {{{
+			%TOOLKITSFILE - build toolkits file
+			%
+			%   Build a Petsc compatible options file, from the toolkits model field and return options string.
+			%   This file will also be used when the toolkit used is 'issm' instead of 'petsc'.
+			%
+			%   Usage:     ToolkitsFile(toolkits,filename);
+
+			%open file for writing
+			fid=fopen(filename,'w');
+			if fid==-1,
+				error(['ToolkitsFile error: could not open ' filename ' for writing']);
+			end
+
+			%write header
+			fprintf(fid,'%s%s%s\n','%Toolkits options file: ',filename,' written from Matlab toolkits array');
+
+			%start writing options
+			analyses=properties(toolkits);
+			for i=1:numel(analyses),
+				analysis=analyses{i};
+				options=toolkits.(analysis);
+
+				%first write analysis:
+				fprintf(fid,'\n+%s\n',analysis); %append a + to recognize it's an analysis enum
+
+				%now, write options
+				optionslist=fieldnames(options);
+				for j=1:numel(optionslist),
+					optionname=optionslist{j};
+					optionvalue=options.(optionname);
+
+					if isempty(optionvalue),
+						%this option has only one argument
+						fprintf(fid,'-%s\n',optionname);
+					else
+						%option with value. value can be string or scalar
+						if isnumeric(optionvalue),
+							fprintf(fid,'-%s %g\n',optionname,optionvalue);
+						elseif ischar(optionvalue),
+							fprintf(fid,'-%s %s\n',optionname,optionvalue);
+						else
+							error(['ToolkitsFile error: option ' optionname ' is not well formatted']);
+						end
+					end
+				end
+			end
+
+			fclose(fid);
+		end %}}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			analyses=properties(self);
+			for i=1:numel(analyses),
+				if isempty(fieldnames(self.(analyses{i})))
+					error(['md.toolkits.' analyses{i} ' is empty']);
+				else
+					writejsstruct(fid,[modelname '.toolkits.' analyses{i}],self.(analyses{i}));
+				end
+			end
+
+		end % }}}
+	end
+ end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/toolkits.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/toolkits.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/toolkits.py	(revision 27955)
@@ -0,0 +1,160 @@
+from fielddisplay import fielddisplay
+from iluasmoptions import iluasmoptions
+from IssmConfig import IssmConfig
+from issmgslsolver import issmgslsolver
+from issmmumpssolver import issmmumpssolver
+from mumpsoptions import mumpsoptions
+
+
+class toolkits(object):
+    """toolkits class definition
+
+    Usage:
+        self = toolkits()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.DefaultAnalysis = None
+        self.RecoveryAnalysis = None
+
+        nargs = len(args)
+        if nargs == 0:
+            self.setdefaultparameters()
+        elif nargs == 1:
+            # TODO: Replace the following with constructor
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = "List of toolkits options per analysis:\n\n"
+        for analysis in list(vars(self).keys()):
+            s += "{}\n".format(fielddisplay(self, analysis, ''))
+
+        return s
+    # }}}
+
+    def addoptions(self, analysis, *args):  # {{{
+        """addoptions - add analysis to md.toolkits.analysis
+
+        Optional third parameter adds toolkits options to analysis.
+        
+        Usage:
+            md.toolkits = addoptions(md.toolkits, 'StressbalanceAnalysis', FSoptions())
+            md.toolkits = addoptions(md.toolkits, 'StressbalanceAnalysis')
+        """
+
+        # Create dynamic property if property does not exist yet
+        if not hasattr(self, analysis):
+            setattr(self, analysis, None)
+
+        # Add toolkits options to analysis
+        if len(args) == 1:
+            setattr(self, analysis, args[0])
+
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Default toolkits
+        if IssmConfig('_HAVE_PETSC_')[0]:
+            # MUMPS is the default toolkits
+            if IssmConfig('_HAVE_MUMPS_')[0]:
+                self.DefaultAnalysis = mumpsoptions()
+            else:
+                self.DefaultAnalysis = iluasmoptions()
+        else:
+            if IssmConfig('_HAVE_MUMPS_')[0]:
+                self.DefaultAnalysis = issmmumpssolver()
+            elif IssmConfig('_HAVE_GSL_')[0]:
+                self.DefaultAnalysis = issmgslsolver()
+            else:
+                raise IOError('ToolkitsFile error: need at least MUMPS or GSL to define ISSM solver type, no default solver assigned')
+
+        # Use same solver for Recovery mode
+        self.RecoveryAnalysis = self.DefaultAnalysis
+
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        supported_analyses = [
+            'DefaultAnalysis',
+            'RecoveryAnalysis',
+            'StressbalanceAnalysis',
+            'GLheightadvectionAnalysis',
+            'MasstransportAnalysis',
+            'ThermalAnalysis',
+            'EnthalpyAnalysis',
+            'AdjointBalancethicknessAnalysis',
+            'BalancethicknessAnalysis',
+            'Balancethickness2Analysis',
+            'BalancethicknessSoftAnalysis',
+            'BalancevelocityAnalysis',
+            'DamageEvolutionAnalysis',
+            'LoveAnalysis',
+            'EsaAnalysis',
+            'SealevelchangeAnalysis',
+            'FreeSurfaceBaseAnalysis',
+            'FreeSurfaceTopAnalysis',
+            'LevelsetAnalysis',
+            'DebrisAnalysis',
+            'L2ProjectionBaseAnalysis',
+            'ExtrudeFromBaseAnalysis',
+            'ExtrudeFromTopAnalysis'
+        ]
+        analyses = list(vars(self).keys())
+        for analysis in analyses:
+            if analysis not in supported_analyses:
+                md.checkmessage('md.toolkits.{} not supported yet'.format(analysis))
+
+            if not getattr(self, analysis):
+                md.checkmessage('md.toolkits.{} is empty'.format(analysis))
+
+        return md
+    # }}}
+
+    def ToolkitsFile(self, filename):  # {{{
+        """ToolkitsFile - build toolkits file
+
+        Build a PETSc compatible options file, from the toolkits model field and return options string.
+        This file will also be used when the toolkit used is 'issm' instead of 'petsc'.
+
+        Usage:
+            ToolkitsFile(toolkits, filename)
+        """
+
+        # Open file for writing
+        try:
+            fid = open(filename, 'w')
+        except IOError as e:
+            raise IOError('ToolkitsFile error: could not open {} for writing due to {}'.format(filename), e)
+
+        # Write header
+        fid.write('{}{}{}\n'.format('%Toolkits options file: ', filename, ' written from Python toolkits array'))
+
+        # Start writing options
+        for analysis in list(vars(self).keys()):
+            options = getattr(self, analysis)
+
+            # First write analysis
+            fid.write('\n+{}\n'.format(analysis))  # Append a + to recognize it's an analysis enum
+
+            # Now, write options
+            for optionname, optionvalue in list(options.items()):
+
+                if not optionvalue:
+                    # This option has only one argument
+                    fid.write('-{}\n'.format(optionname))
+                else:
+                    # Option with value. Value can be string or scalar.
+                    if isinstance(optionvalue, (bool, int, float)):
+                        fid.write('-{} {}\n'.format(optionname, optionvalue))
+                    elif isinstance(optionvalue, str):
+                        fid.write('-{} {}\n'.format(optionname, optionvalue))
+                    else:
+                        raise TypeError('ToolkitsFile error: option {} is not well formatted'.format(optionname))
+
+        fid.close()
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/transient.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/transient.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/transient.js	(revision 27955)
@@ -0,0 +1,139 @@
+//TRANSIENT class definition
+//
+//   Usage:
+//      transient =new transient();
+
+function transient (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
+		this.isage             = 0;
+		this.issmb             = 1;
+		this.ismasstransport   = 1;
+		this.isstressbalance   = 1;
+		this.isthermal         = 0;
+		this.isgroundingline   = 0;
+		this.isgia             = 0;
+		this.isesa             = 0;
+		this.isdamageevolution = 0;
+		this.ismovingfront     = 0;
+		this.ishydrology       = 0;
+		this.isdebris          = 0;
+		this.issampling        = 0;
+		this.isslr             = 0;
+		this.isoceancoupling   = 0;
+		this.iscoupler         = 0;
+		this.amr_frequency     = 0;
+
+		//default output
+		this.requested_outputs=['default'];
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   transient solution parameters:'));
+
+		fielddisplay(this,'isage','indicates whether age model is requested in the transient');
+		fielddisplay(this,'issmb','indicates whether a surface mass balance solution is used in the transient');
+		fielddisplay(this,'ismasstransport','indicates whether a masstransport solution is used in the transient');
+		fielddisplay(this,'isstressbalance','indicates whether a stressbalance solution is used in the transient');
+		fielddisplay(this,'isthermal','indicates whether a thermal solution is used in the transient');
+		fielddisplay(this,'isgroundingline','indicates whether a groundingline migration is used in the transient');
+		fielddisplay(this,'isgia','indicates whether a postglacial rebound model is used in the transient');
+		fielddisplay(this,'isesa','indicates whether an elastic adjustment model is used in the transient');
+		fielddisplay(this,'isdamageevolution','indicates whether damage evolution is used in the transient');
+		fielddisplay(this,'ismovingfront','indicates whether a moving front capability is used in the transient');
+		fielddisplay(this,'ishydrology','indicates whether an hydrology model is used');
+		fielddisplay(this,'isslr','indicates whether a sea-level rise model is used');
+		fielddisplay(this,'isoceancoupling','indicates whether a coupling with an ocean model is used in the transient');
+		fielddisplay(this,'iscoupler','indicates whether different models are being run with need for coupling');
+		fielddisplay(this,'amr_frequency','frequency at which mesh is refined in simulations with multiple time_steps');
+		fielddisplay(this,'requested_outputs','list of additional outputs requested');
+
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "transient";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { // {{{
+
+			//Early return
+			if (solution!='TransientSolution') return;
+
+			checkfield(md,'fieldname','transient.isage','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','transient.issmb','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','transient.ismasstransport','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','transient.isstressbalance','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','transient.isthermal','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','transient.isgroundingline','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','transient.isgia','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','transient.isesa','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','transient.isdamageevolution','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','transient.ismovingfront','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','transient.ishydrology','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','transient.isslr','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','transient.isoceancoupling','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','transient.iscoupler','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','transient.amr_frequency','numel',[1],'>=',0,'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','transient.requested_outputs','stringrow',1);
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+
+			prefix='md.transient';
+			WriteData(fid,prefix,'object',this,'fieldname','isage','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','issmb','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','ismasstransport','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isoceantransport','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isstressbalance','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isthermal','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isgroundingline','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isesa','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isdamageevolution','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','ishydrology','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','ismovingfront','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isdebris','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','issampling','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isslc','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','isoceancoupling','format','Boolean');
+			WriteData(fid,prefix,'object',this,'fieldname','amr_frequency','format','Integer');
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}			
+			WriteData(fid,prefix,'data',outputs,'name','md.transient.requested_outputs','format','StringArray');
+		}//}}}
+		this.defaultoutputs = function(md) { //{{{
+			return [];
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+
+	this.isage             = 0;
+	this.issmb             = 0;
+	this.ismasstransport   = 0;
+	this.isstressbalance   = 0;
+	this.isthermal         = 0;
+	this.isgroundingline   = 0;
+	this.isgia             = 0;
+	this.isesa             = 0;
+	this.isdamageevolution = 0;
+	this.ismovingfront     = 0;
+	this.ishydrology       = 0;
+	this.isslr             = 0;
+	this.isoceancoupling   = 0;
+	this.iscoupler         = 0;
+	this.amr_frequency	   = 0;
+	this.requested_outputs = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/transient.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/transient.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/transient.m	(revision 27955)
@@ -0,0 +1,185 @@
+%TRANSIENT class definition
+%
+%   Usage:
+%      transient=transient();
+
+classdef transient
+	properties (SetAccess=public) 
+		isage             = 0;
+		issmb             = 0;
+		ismasstransport   = 0;
+		isoceantransport  = 0;
+		isstressbalance   = 0;
+		isthermal         = 0;
+		isgroundingline   = 0;
+		isesa             = 0;
+		isdamageevolution = 0;
+		ismovingfront     = 0;
+		ishydrology       = 0;
+		isdebris          = 0;
+		issampling        = 0;
+		isslc             = 0;
+		amr_frequency     = 0;
+		isoceancoupling   = 0;
+		requested_outputs = {};
+	end
+	methods
+		function self = transient(varargin) % {{{
+			switch nargin
+				case 0
+					self = setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = deactivateall(self) % {{{
+
+			%full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
+			self.isage             = 0;
+			self.issmb             = 0;
+			self.ismasstransport   = 0;
+			self.isoceantransport  = 0;
+			self.isstressbalance   = 0;
+			self.isthermal         = 0;
+			self.isgroundingline   = 0;
+			self.isesa             = 0;
+			self.isdamageevolution = 0;
+			self.ismovingfront     = 0;
+			self.ishydrology       = 0;
+			self.isdebris          = 0;
+			self.issampling        = 0;
+			self.isslc             = 0;
+			self.isoceancoupling   = 0;
+			self.amr_frequency     = 0;
+
+			%default output
+			self.requested_outputs={};
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
+			self.isage             = 0;
+			self.issmb             = 1;
+			self.ismasstransport   = 1;
+			self.isoceantransport  = 0;
+			self.isstressbalance   = 1;
+			self.isthermal         = 1;
+			self.isgroundingline   = 0;
+			self.isesa             = 0;
+			self.isdamageevolution = 0;
+			self.ismovingfront     = 0;
+			self.ishydrology       = 0;
+			self.isdebris= 0;
+			self.issampling        = 0;
+			self.isslc             = 0;
+			self.isoceancoupling   = 0;
+			self.amr_frequency     = 0;
+
+			%default output
+			self.requested_outputs={'default'};
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {};
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~strcmp(solution,'TransientSolution'), return; end
+
+			md = checkfield(md,'fieldname','transient.isage','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.issmb','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.ismasstransport','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.isoceantransport','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.isstressbalance','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.isthermal','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.isgroundingline','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.isesa','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.isdamageevolution','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.ismovingfront','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.ishydrology','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.isdebris','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.requested_outputs','stringrow',1);
+			md = checkfield(md,'fieldname','transient.isslc','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.isoceancoupling','numel',[1],'values',[0 1 2]);
+			md = checkfield(md,'fieldname','transient.issampling','numel',[1],'values',[0 1]);  
+			md = checkfield(md,'fieldname','transient.amr_frequency','numel',[1],'>=',0,'NaN',1,'Inf',1);
+
+			if (~strcmp(solution,'TransientSolution') & md.transient.iscoupling==1), 
+				md = checkmessage(md,['Coupling with ocean model can only be performed for transient simulations!']);
+			end
+			if (md.transient.isdamageevolution & ~isa(md.materials,'matdamageice')), 
+				md = checkmessage(md,['requesting damage evolution but md.materials is not of class matdamageice']);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   transient solution parameters:'));
+
+			fielddisplay(self,'isage','indicates whether an age model is used in the transient');
+			fielddisplay(self,'issmb','indicates whether a surface mass balance solution is used in the transient');
+			fielddisplay(self,'ismasstransport','indicates whether a masstransport solution is used in the transient');
+			fielddisplay(self,'isoceantransport','indicates whether an ocean masstransport solution is used in the transient');
+			fielddisplay(self,'isstressbalance','indicates whether a stressbalance solution is used in the transient');
+			fielddisplay(self,'isthermal','indicates whether a thermal solution is used in the transient');
+			fielddisplay(self,'isgroundingline','indicates whether a groundingline migration is used in the transient');
+			fielddisplay(self,'isesa','indicates whether an elastic adjustment model is used in the transient');
+			fielddisplay(self,'isdamageevolution','indicates whether damage evolution is used in the transient');
+			fielddisplay(self,'ismovingfront','indicates whether a moving front capability is used in the transient');
+			fielddisplay(self,'ishydrology','indicates whether an hydrology model is used');
+			fielddisplay(self,'isdebris','indicates whether a debris model is used');
+			fielddisplay(self,'issampling','indicates whether sampling is used in the transient')
+			fielddisplay(self,'isslc','indicates whether a sea-level change solution is used in the transient');
+			fielddisplay(self,'isoceancoupling','indicates whether a coupling with an ocean model is used in the transient (1 for cartesian coordinates, 2 for lat/long coordinates');
+			fielddisplay(self,'amr_frequency','frequency at which mesh is refined in simulations with multiple time_steps');
+			fielddisplay(self,'requested_outputs','list of additional outputs requested');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'object',self,'fieldname','isage','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','issmb','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','ismasstransport','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isoceantransport','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isstressbalance','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isthermal','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isgroundingline','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isesa','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isdamageevolution','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','ismovingfront','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','ishydrology','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isdebris','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','issampling','format','Boolean'); 
+			WriteData(fid,prefix,'object',self,'fieldname','isslc','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','isoceancoupling','format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','amr_frequency','format','Integer');
+
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,prefix,'data',outputs,'name','md.transient.requested_outputs','format','StringArray');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.trans.isage'],self.isage);
+			writejsdouble(fid,[modelname '.trans.issmb'],self.issmb);
+			writejsdouble(fid,[modelname '.trans.ismasstransport'],self.ismasstransport);
+			writejsdouble(fid,[modelname '.trans.isoceantransport'],self.isoceantransport);
+			writejsdouble(fid,[modelname '.trans.isstressbalance'],self.isstressbalance);
+			writejsdouble(fid,[modelname '.trans.isthermal'],self.isthermal);
+			writejsdouble(fid,[modelname '.trans.isgroundingline'],self.isgroundingline);
+			writejsdouble(fid,[modelname '.trans.isesa'],self.isesa);
+			writejsdouble(fid,[modelname '.trans.isdamageevolution'],self.isdamageevolution);
+			writejsdouble(fid,[modelname '.trans.ismovingfront'],self.ismovingfront);
+			writejsdouble(fid,[modelname '.trans.ishydrology'],self.ishydrology);
+			writejsdouble(fid,[modelname '.trans.isdebris'],self.isdebris);
+			writejsdouble(fid,[modelname '.trans.issampling'],self.issampling); 
+			writejsdouble(fid,[modelname '.trans.isslc'],self.isslc);
+			writejsdouble(fid,[modelname '.trans.isoceancoupling'],self.isoceancoupling);
+			writejsdouble(fid,[modelname '.trans.amr_frequency'],self.amr_frequency);
+			writejscellstring(fid,[modelname '.trans.requested_outputs'],self.requested_outputs);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/transient.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/transient.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/transient.py	(revision 27955)
@@ -0,0 +1,166 @@
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from WriteData import WriteData
+
+
+class transient(object):
+    """TRANSIENT class definition
+
+    Usage:
+        transient = transient()
+    """
+
+    def __init__(self, *args):  # {{{
+        self.isage = 0
+        self.issmb = 0
+        self.ismasstransport = 0
+        self.isoceantransport = 0
+        self.isstressbalance = 0
+        self.isthermal = 0
+        self.isgroundingline = 0
+        self.isesa = 0
+        self.isdamageevolution = 0
+        self.ismovingfront = 0
+        self.ishydrology = 0
+        self.isdebris = 0
+        self.issampling = 0
+        self.isslc = 0
+        self.amr_frequency = 0
+        self.isoceancoupling = 0
+        self.requested_outputs = []
+
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = '   transient solution parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'isage', 'indicates if age model is requested in the transient'))
+        s += '{}\n'.format(fielddisplay(self, 'issmb', 'indicates if a surface mass balance solution is used in the transient'))
+        s += '{}\n'.format(fielddisplay(self, 'ismasstransport', 'indicates if a masstransport solution is used in the transient'))
+        s += '{}\n'.format(fielddisplay(self, 'isoceantransport', 'indicates whether an ocean masstransport solution is used in the transient'))
+        s += '{}\n'.format(fielddisplay(self, 'isstressbalance', 'indicates if a stressbalance solution is used in the transient'))
+        s += '{}\n'.format(fielddisplay(self, 'isthermal', 'indicates if a thermal solution is used in the transient'))
+        s += '{}\n'.format(fielddisplay(self, 'isgroundingline', 'indicates if a groundingline migration is used in the transient'))
+        s += '{}\n'.format(fielddisplay(self, 'isesa', 'indicates whether an elastic adjustment model is used in the transient'))
+        s += '{}\n'.format(fielddisplay(self, 'isdamageevolution', 'indicates whether damage evolution is used in the transient'))
+        s += '{}\n'.format(fielddisplay(self, 'ismovingfront', 'indicates whether a moving front capability is used in the transient'))
+        s += '{}\n'.format(fielddisplay(self, 'ishydrology', 'indicates whether an hydrology model is used'))
+        s += '{}\n'.format(fielddisplay(self, 'isdebris', 'indicates whether a debris model is used'))
+        s += '{}\n'.format(fielddisplay(self, 'issampling', 'indicates whether sampling is used in the transient'))
+        s += '{}\n'.format(fielddisplay(self, 'isslc', 'indicates if a sea level change solution is used in the transient'))
+        s += '{}\n'.format(fielddisplay(self, 'isoceancoupling', 'indicates whether coupling with an ocean model is used in the transient (1 for cartesian coordinates, 2 for lat/long coordinates'))
+        s += '{}\n'.format(fielddisplay(self, 'amr_frequency', 'frequency at which mesh is refined in simulations with multiple time_steps'))
+        s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'list of additional outputs requested'))
+        return s
+    # }}}
+
+    def defaultoutputs(self, md):  # {{{
+        return []
+    # }}}
+
+    def deactivateall(self):  #{{{
+        self.isage = 0
+        self.issmb = 0
+        self.ismasstransport = 0
+        self.isoceantransport = 0
+        self.isstressbalance = 0
+        self.isthermal = 0
+        self.isgroundingline = 0
+        self.isesa = 0
+        self.isdamageevolution = 0
+        self.ismovingfront = 0
+        self.ishydrology = 0
+        self.isdebris = 0
+        self.issampling = 0
+        self.isslc = 0
+        self.isoceancoupling = 0
+        self.amr_frequency = 0
+
+        # Default output
+        self.requested_outputs = []
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
+        # Full analysis: Stressbalance, Masstransport and Thermal but no 
+        # groundingline migration for now
+        self.isage = 0
+        self.issmb = 1
+        self.ismasstransport = 1
+        self.isoceantransport = 0
+        self.isstressbalance = 1
+        self.isthermal = 1
+        self.isgroundingline = 0
+        self.isesa = 0
+        self.isdamageevolution = 0
+        self.ismovingfront = 0
+        self.ishydrology = 0
+        self.isdebris = 0
+        self.issampling = 0
+        self.isslc = 0
+        self.isoceancoupling = 0
+        self.amr_frequency = 0
+
+        # Default output
+        self.requested_outputs = ['default']
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        #Early return
+        if not solution == 'TransientSolution':
+            return md
+
+        md = checkfield(md, 'fieldname', 'transient.isage', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'transient.issmb', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'transient.ismasstransport', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'transient.isoceantransport', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'transient.isstressbalance', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'transient.isthermal', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'transient.isgroundingline', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'transient.isesa', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'transient.isdamageevolution', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'transient.ishydrology', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'transient.isdebris', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'transient.issampling', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'transient.ismovingfront', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'transient.isslc', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'transient.isoceancoupling', 'numel', [1], 'values', [0, 1, 2])
+        md = checkfield(md, 'fieldname', 'transient.amr_frequency', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
+
+        if solution != 'TransientSolution' and md.transient.iscoupling:
+            md.checkmessage("Coupling with ocean can only be done in transient simulations!")
+        if md.transient.isdamageevolution and not hasattr(md.materials, 'matdamageice'):
+            md.checkmessage("requesting damage evolution but md.materials is not of class matdamageice")
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isage', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'issmb', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'ismasstransport', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isoceantransport', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isstressbalance', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isthermal', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isgroundingline', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isesa', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isdamageevolution', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'ismovingfront', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'ishydrology', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isdebris', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'issampling', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isslc', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'isoceancoupling', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'amr_frequency', 'format', 'Integer')
+
+        # Process requested outputs
+        outputs = self.requested_outputs
+        indices = [i for i, x in enumerate(outputs) if x == 'default']
+        if len(indices) > 0:
+            outputscopy = outputs[0:max(0, indices[0] - 1)] + self.defaultoutputs(md) + outputs[indices[0] + 1:]
+            outputs = outputscopy
+        WriteData(fid, prefix, 'data', outputs, 'name', 'md.transient.requested_outputs', 'format', 'StringArray')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/verbose.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/verbose.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/verbose.js	(revision 27955)
@@ -0,0 +1,86 @@
+//VERBOSE class definition
+//
+//   Available verbosity levels:
+//      mprocessor  : model processing 
+//      module      : modules
+//      solution    : solution sequence
+//      solver      : solver info (extensive)
+//      convergence : convergence criteria
+//      control     : control method
+//      qmu         : sensitivity analysis
+//      autodiff    : AD analysis
+//      smb         : smb analysis
+//
+//   Usage:
+//      verbose=verbose();
+//      verbose=verbose(3);
+//      verbose=verbose('all');
+//      verbose=verbose('001100');
+//      verbose=verbose('module',true,'solver',false);
+
+//WARNING: some parts of this file are Synchronized with src/c/shared/Numerics/Verbosity.h
+//         Do not modify these sections. See src/c/shared/Numerics/README for more info
+
+function verbose (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		//switch(nargin),
+			//case 0,
+		this.verbose.solution=true;
+		this.verbose.qmu=true;
+		this.verbose.control=true;
+	}// }}}
+	this.disp= function(){// {{{
+		//BEGINDISP
+		console.log(sprintf('verbose class echo:'));
+		console.log(sprintf('   %s : %i','mprocessor',this.mprocessor));
+		console.log(sprintf('   %s : %i','module',this.module));
+		console.log(sprintf('   %s : %i','solution',this.solution));
+		console.log(sprintf('   %s : %i','solver',this.solver));
+		console.log(sprintf('   %s : %i','convergence',this.convergence));
+		console.log(sprintf('   %s : %i','control',this.control));
+		console.log(sprintf('   %s : %i','qmu',this.qmu));
+		console.log(sprintf('   %s : %i','autodiff',this.autodiff));
+		console.log(sprintf('   %s : %i','smb',this.smb));
+		//ENDDISP
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses){ // {{{
+
+		} // }}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			WriteData(fid,prefix,'data',this.VerboseToBinary(),'name','md.verbose','format','Integer');
+		}//}}}
+		this.VerboseToBinary = function () { //{{{
+
+			//BEGINVERB2BIN
+			var binary=0;
+			if (this.mprocessor) binary=binary|1; 
+			if (this.module) binary=binary|2; 
+			if (this.solution) binary=binary|4; 
+			if (this.solver) binary=binary|8; 
+			if (this.convergence) binary=binary|16; 
+			if (this.control) binary=binary|32; 
+			if (this.qmu) binary=binary|64; 
+			if (this.autodiff) binary=binary|128; 
+			if (this.smb) binary=binary|256; 
+			//ENDVERB2BIN
+			return binary;
+
+		} //}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.mprocessor=false;
+	this.module=false;
+	this.solution=false;
+	this.solver=false;
+	this.convergence=false;
+	this.control=false;
+	this.qmu=false;
+	this.autodiff=false;
+	this.smb=false;
+
+	this.setdefaultparameters();
+	// }}}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/verbose.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/verbose.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/verbose.m	(revision 27955)
@@ -0,0 +1,158 @@
+%VERBOSE class definition
+%
+%   Available verbosity levels:
+%      mprocessor  : model processing 
+%      module      : modules
+%      solution    : solution sequence
+%      solver      : solver info (extensive)
+%      convergence : convergence criteria
+%      control     : control method
+%      qmu         : sensitivity analysis
+%      autodiff    : AD analysis
+%      smb         : smb analysis
+%
+%   Usage:
+%      verbose=verbose();
+%      verbose=verbose(3);
+%      verbose=verbose('all');
+%      verbose=verbose('001100');
+%      verbose=verbose('module',true,'solver',false);
+
+%WARNING: some parts of this file are Synchronized with src/c/shared/Numerics/Verbosity.h
+%         Do not modify these sections. See src/c/shared/Numerics/README for more info
+
+classdef verbose
+	properties (SetAccess=public) 
+		% {{{
+		%BEGINFIELDS
+		mprocessor=false;
+		module=false;
+		solution=false;
+		solver=false;
+		convergence=false;
+		control=false;
+		qmu=false;
+		autodiff=false;
+		smb=false;
+		%ENDFIELDS
+		% }}}
+	end
+	%}}}
+	methods
+		function verbose=verbose(varargin) % {{{
+
+			switch(nargin),
+				case 0,
+					verbose.solution=true;
+					verbose.qmu=true;
+					verbose.control=true;
+				case 1,
+					binary=varargin{1};
+					if     ischar(binary),
+						if strcmpi(binary,'all'),
+							binary=2^11-1; %all ones
+							verbose=BinaryToVerbose(verbose,binary);
+							verbose.solver=false; %Do not use by default
+						else
+							binary=bin2dec(binary);
+							verbose=BinaryToVerbose(verbose,binary);
+						end
+					elseif isnumeric(binary),
+						verbose=BinaryToVerbose(verbose,binary);
+					end 
+				otherwise,
+					%Use options to initialize object
+					verbose=AssignObjectFields(pairoptions(varargin{:}),verbose);
+
+					%Cast to logicals
+					listproperties=properties('verbose');
+					for i=1:numel(listproperties),
+						fieldname=listproperties{i};
+						fieldvalue=verbose.(fieldname);
+						if (islogical(fieldvalue) | isnumeric(fieldvalue)) & numel(fieldvalue)==1,
+							verbose.(fieldname)=logical(fieldvalue);
+						else
+							error('verbose supported field values are logicals only (true or false)');
+						end
+					end
+			end
+		end
+		%}}}
+		function binary=VerboseToBinary(verbose) % {{{
+
+		%BEGINVERB2BIN
+		binary=0;
+		if (verbose.mprocessor), binary=bitor(binary,1); end
+		if (verbose.module), binary=bitor(binary,2); end
+		if (verbose.solution), binary=bitor(binary,4); end
+		if (verbose.solver), binary=bitor(binary,8); end
+		if (verbose.convergence), binary=bitor(binary,16); end
+		if (verbose.control), binary=bitor(binary,32); end
+		if (verbose.qmu), binary=bitor(binary,64); end
+		if (verbose.autodiff), binary=bitor(binary,128); end
+		if (verbose.smb), binary=bitor(binary,256); end
+		%ENDVERB2BIN
+
+		end
+		%}}}
+		function verbose=BinaryToVerbose(verbose,binary) % {{{
+
+		%BEGINBIN2VERB
+		if bitand(binary,1), verbose.mprocessor=true; else verbose.mprocessor=false; end
+		if bitand(binary,2), verbose.module=true; else verbose.module=false; end
+		if bitand(binary,4), verbose.solution=true; else verbose.solution=false; end
+		if bitand(binary,8), verbose.solver=true; else verbose.solver=false; end
+		if bitand(binary,16), verbose.convergence=true; else verbose.convergence=false; end
+		if bitand(binary,32), verbose.control=true; else verbose.control=false; end
+		if bitand(binary,64), verbose.qmu=true; else verbose.qmu=false; end
+		if bitand(binary,128), verbose.autodiff=true; else verbose.autodiff=false; end
+		if bitand(binary,256), verbose.smb=true; else verbose.smb=false; end
+		%ENDBIN2VERB
+
+		end
+		%}}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if md.inversion.iscontrol
+				temp = verbose('control',1);
+				if(VerboseToBinary(self) ~= VerboseToBinary(temp))
+					disp('INFO: the outlog will look better if only md.verbose.control is turned on');
+				end
+			end
+
+		end % }}}
+		function disp(verbose) % {{{
+
+		%BEGINDISP
+		disp(sprintf('class ''%s''  = ',class(verbose)));
+		disp(sprintf('   %15s : %s','mprocessor',mat2str(verbose.mprocessor)));
+		disp(sprintf('   %15s : %s','module',mat2str(verbose.module)));
+		disp(sprintf('   %15s : %s','solution',mat2str(verbose.solution)));
+		disp(sprintf('   %15s : %s','solver',mat2str(verbose.solver)));
+		disp(sprintf('   %15s : %s','convergence',mat2str(verbose.convergence)));
+		disp(sprintf('   %15s : %s','control',mat2str(verbose.control)));
+		disp(sprintf('   %15s : %s','qmu',mat2str(verbose.qmu)));
+		disp(sprintf('   %15s : %s','autodiff',mat2str(verbose.autodiff)));
+		disp(sprintf('   %15s : %s','smb',mat2str(verbose.smb)));
+		%ENDDISP
+
+		end
+		%}}}
+		function marshall(self,prefix,md,fid) % {{{
+			WriteData(fid,prefix,'data',VerboseToBinary(self),'name','md.verbose','format','Integer');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.verbose.mprocessor'],self.mprocessor);
+			writejsdouble(fid,[modelname '.verbose.module'],self.module);
+			writejsdouble(fid,[modelname '.verbose.solution'],self.solution);
+			writejsdouble(fid,[modelname '.verbose.solver'],self.solver);
+			writejsdouble(fid,[modelname '.verbose.convergence'],self.convergence);
+			writejsdouble(fid,[modelname '.verbose.control'],self.control);
+			writejsdouble(fid,[modelname '.verbose.qmu'],self.qmu);
+			writejsdouble(fid,[modelname '.verbose.autodiff'],self.autodiff);
+			writejsdouble(fid,[modelname '.verbose.smb'],self.smb);
+
+		end % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/classes/verbose.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/classes/verbose.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/classes/verbose.py	(revision 27955)
@@ -0,0 +1,141 @@
+from pairoptions import pairoptions
+from WriteData import WriteData
+
+
+class verbose(object):
+    """VERBOSE class definition
+
+    Available verbosity levels:
+        mprocessor  : model processing
+        module      : modules
+        solution    : solution sequence
+        solver      : solver info (extensive)
+        convergence : convergence criteria
+        control     : control method
+        qmu         : sensitivity analysis
+        autodiff    : AD analysis
+        smb         : SMB analysis
+
+    Usage:
+        verbose = verbose()
+        verbose = verbose(3)
+        verbose = verbose('001100')
+        verbose = verbose('module', True, 'solver', False)
+
+    NOTE:
+    - Some parts of this file are Synchronized with 
+    src/c/shared/Numerics/Verbosity.h. Do not modify these sections. See 
+    src/c/shared/Numerics/README for more info.
+    """
+
+    def __init__(self, *args):  # {{{
+        #BEGINFIELDS
+        self.mprocessor = False
+        self.module = False
+        self.solution = False
+        self.solver = False
+        self.convergence = False
+        self.control = False
+        self.qmu = False
+        self.autodiff = False
+        self.smb = False
+        #ENDFIELDS
+
+        if not len(args):
+            # Don't do anything
+            self.solution = True
+            self.qmu = True
+            self.control = True
+            pass
+
+        elif len(args) == 1:
+            binary = args[0]
+            if isinstance(binary, str):
+                if binary.lower() == 'all':
+                    binary = pow(2, 11) - 1  # all ones
+                    self.BinaryToVerbose(binary)
+                    self.solver = False  # Do not use by default
+                else:
+                    binary = int(binary, 2)
+                    self.BinaryToVerbose(binary)
+            elif isinstance(binary, (int, float)):
+                self.BinaryToVerbose(int(binary))
+
+        else:
+            # Use options to initialize object
+            self = pairoptions(*args).AssignObjectFields(self)
+
+            # Cast to logicals
+            listproperties = vars(self)
+            for fieldname, fieldvalue in list(listproperties.items()):
+                if isinstance(fieldvalue, bool) or isinstance(fieldvalue, (int, float)):
+                    setattr(self, fieldname, bool(fieldvalue))
+                else:
+                    raise TypeError("verbose supported field values are logicals only (True or False)")
+    # }}}
+
+    def __repr__(self):  # {{{
+
+        #BEGINDISP
+        s = "class '%s' = \n" % type(self)
+        s += "   %15s : %s\n" % ('mprocessor', self.mprocessor)
+        s += "   %15s : %s\n" % ('module', self.module)
+        s += "   %15s : %s\n" % ('solution', self.solution)
+        s += "   %15s : %s\n" % ('solver', self.solver)
+        s += "   %15s : %s\n" % ('convergence', self.convergence)
+        s += "   %15s : %s\n" % ('control', self.control)
+        s += "   %15s : %s\n" % ('qmu', self.qmu)
+        s += "   %15s : %s\n" % ('autodiff', self.autodiff)
+        s += "   %15s : %s\n" % ('smb', self.smb)
+        #ENDDISP
+        return s
+    # }}}
+
+    def VerboseToBinary(self):  # {{{
+        #BEGINVERB2BIN
+        binary = 0
+        if self.mprocessor:
+            binary = binary | 1
+        if self.module:
+            binary = binary | 2
+        if self.solution:
+            binary = binary | 4
+        if self.solver:
+            binary = binary | 8
+        if self.convergence:
+            binary = binary | 16
+        if self.control:
+            binary = binary | 32
+        if self.qmu:
+            binary = binary | 64
+        if self.autodiff:
+            binary = binary | 128
+        if self.smb:
+            binary = binary | 256
+        #ENDVERB2BIN
+
+        return binary
+    # }}}
+
+    def BinaryToVerbose(self, binary):  # {{{
+
+        #BEGINBIN2VERB
+        self.mprocessor = bool(binary & 1)
+        self.module = bool(binary & 2)
+        self.solution = bool(binary & 4)
+        self.solver = bool(binary & 8)
+        self.convergence = bool(binary & 16)
+        self.control = bool(binary & 32)
+        self.qmu = bool(binary & 64)
+        self.autodiff = bool(binary & 128)
+        self.smb = bool(binary & 256)
+    #ENDBIN2VERB
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
+        WriteData(fid, prefix, 'data', self.VerboseToBinary(), 'name', 'md.verbose', 'format', 'Integer')
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/consistency/QueueRequirements.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/consistency/QueueRequirements.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/consistency/QueueRequirements.m	(revision 27955)
@@ -0,0 +1,35 @@
+function QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,queue,np,time)
+%QUEUEREQUIREMENTS - queue requirements in time, number of cpus, by name of queue.
+%
+%   Usage: 
+%      QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,np,time)
+
+%Ok, go through requirements for current queue:
+index=ismemberi(queue,available_queues);
+if  ~index,
+	%ok, either we a generic cluster, with 'none' queue, or we could not find the queue reqruirements
+	if strcmpi(available_queues{1},'none'),
+		%reset index to 1, so we can fish the requirements
+		index=1;
+	else
+		string=available_queues{1};
+		for i=2:length(available_queues),
+			string=[string ' ' available_queues{i}];
+		end
+		error(['QueueRequirements error message: availables queues are ' string]);
+	end
+end
+
+%check on time requirements
+rtime=queue_requirements_time(index);
+if time<=0,
+	error('QueueRequirements: time should be a positive number');
+end
+if time>rtime,
+	error(['QueueRequirements: time should be < ' num2str(rtime) ' for queue: ' queue]);
+end
+
+%check on np requirements
+if np<=0,
+	error('QueueRequirements: np should be a positive number');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/consistency/QueueRequirements.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/consistency/QueueRequirements.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/consistency/QueueRequirements.py	(revision 27955)
@@ -0,0 +1,20 @@
+def QueueRequirements(queudict, queue, np, time):
+    #QUEUEREQUIREMENTS - queue requirements in time, number of cpus, by name of queue.
+    #
+    #   Usage:
+    #      QueueRequirements(available_queues, queue_requirements_time, queue_requirements_np, np, time)
+
+    #Ok, go through requirements for current queue:
+    try:
+        rtime = queudict[queue][0]
+    except KeyError:
+        raise Exception('QueueRequirements error message: availables queues are ' + queudict.keys)
+
+    if time <= 0:
+        raise Exception('QueueRequirements: time should be a positive number')
+    if time > rtime:
+        raise Exception('QueueRequirements: time should be < ' + str(rtime) + ' for queue: ' + queue)
+
+    #check on np requirements
+    if np <= 0:
+        raise Exception('QueueRequirements: np should be a positive number')
Index: /issm/branches/trunk-dlcheng-ASE/src/m/consistency/checkfield.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/consistency/checkfield.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/consistency/checkfield.js	(revision 27955)
@@ -0,0 +1,272 @@
+function checkfield(md){
+//CHECKFIELD - check field consistency
+//
+//   Used to check model consistency.
+//   Requires: 
+//     'field' or 'fieldname' option. If 'fieldname' is provided, it will retrieve it from the model md. (md.(fieldname)) 
+//             If 'field' is provided, it will assume the argument following 'field' is a numeric array.
+//   Available options:
+//      - NaN: 1 if check that there is no NaN
+//      - Inf: 1 if check that there is no Inf
+//      - size: [lines cols], NaN for non checked dimensions
+//      - >:  greater than provided value
+//      - >=: greater or equal to provided value
+//      - <:  smallerthan provided value
+//      - <=: smaller or equal to provided value
+//      - < vec:  smallerthan provided values on each vertex
+//      - timeseries: 1 if check time series consistency (size and time)
+//      - values: array of strings or vector of acceptable values
+//      - numel: list of acceptable number of elements
+//      - array: 1 if check that is array
+//      - empty: 1 if check that non empty
+//      - message: overloaded error message
+//
+//   Usage:
+//      checkfield(md,fieldname,options);
+
+	//get options
+	var args = Array.prototype.slice.call(arguments);
+	var  options = new pairoptions(args.slice(1,args.length));
+	
+	//get field: 
+	if (options.exist('field')){
+		field=options.getfieldvalue('field'); 
+		fieldname=options.getfieldvalue('fieldname','no fieldname'); 
+	}
+	else{
+		fieldname=options.getfieldvalue('fieldname'); 
+		eval("field=md." + fieldname + ";");
+	}
+
+	//check empty
+	if (options.exist('empty')){
+		if (field.length == 0){
+			md.checkmessage(options.getfieldvalue('message','field ' + "'" + fieldname + "'" + 'is empty'));
+		}
+	}
+
+	//Check size
+	if (options.exist('size')){
+		fieldsize=options.getfieldvalue('size');
+		if (isNaN(fieldsize[0])){
+			if (field[0].length !=fieldsize[1]){
+				md.checkmessage(options.getfieldvalue('message', sprintf("field '%s' should have %i columns",fieldname,fieldsize[1])));
+			}
+		}
+		else if (isNaN(fieldsize[1])){
+			if (field.length!= fieldsize[0]){
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have %i lines",fieldname,fieldsize[0])));
+			}
+		}
+		else{
+			if (IsArray(field)){
+				if ((field.length!=fieldsize[0])){
+					md.checkmessage(options.getfieldvalue('message', sprintf("field '%s' should be %ix%i",fieldname,fieldsize[0],fieldsize[1])));
+				}
+			}
+			if (IsArray(field[0])){
+				if(field[0].length!=fieldsize[1]){
+					md.checkmessage(options.getfieldvalue('message', sprintf("field '%s' should be %ix%i",fieldname,fieldsize[0],fieldsize[1])));
+				}
+			}
+		}
+	}
+
+	//Check numel
+	if (options.exist('numel')){
+		fieldnumel=options.getfieldvalue('numel');
+		if (!ArrayIsMember(fieldnumel,[field.length])){
+			if (fieldnumel.length==1){
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' size should be %i",fieldname,fieldnumel[0])));
+			}
+			else if (fieldnumel.length==2){
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' size should be %i or %i",fieldname,fieldnumel[0],fieldnumel[1])));
+			}
+			else{
+				var string=''; 
+				for (var i=0;i<fieldnumel.length;i++)string=sprintf("%s or %i",string,fieldnumel[i]);
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' size should be %s",fieldname,string)));
+			}
+		}
+	}
+
+	//check NaN
+	if (options.getfieldvalue('NaN',0)){
+		field2=MatrixToList(field);
+		if (ArrayAnyEqual(field2,NaN)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("NaN values found in field %s",field)));
+		}
+	}
+
+	//check Inf
+	if (options.getfieldvalue('Inf',0)){
+		field2=MatrixToList(field);
+		if (ArrayAnyEqual(field2,Infinity)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("Inf values found in field %s",field)));
+		}
+	}
+
+	//check arry
+	if (options.getfieldvalue('array',0)){
+		if (!IsArray(field)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should be an array!",fieldname)));
+		}
+	}
+
+	//check values
+	if (options.exist('values')){
+		fieldvalues=options.getfieldvalue('values');
+		if (typeof fieldvalues[0]== 'string'){
+			if (typeof field == 'string'){
+				if(ArrayAnyEqual(ArrayIsMember([field],fieldvalues),0)){
+					if (fieldvalues.length==1){
+						md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' value should be %s",fieldname,fieldvalues[0])));
+					}
+					else if (fieldvalues.length==2){
+						md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' values should be %s or %s",fieldname,fieldvalues[0],fieldvalues[1])));
+					}
+					else{
+						var string=''; 
+						for (var i=0;i<fieldvalues.length;i++)string=sprintf("%s or %s",string,fieldvalues[i]);
+						md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values in %s",fieldname,string)));
+					}
+				}
+			}
+			else{
+				var string=''; for (var i=0;i<fieldvalues.length;i++)string=sprintf("%s or %s",string,fieldvalues[i]);
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values in %s",fieldname,string)));
+			}
+		}
+		else{
+			if (typeof field == 'number') field2=MatrixToList([field]);
+			else field2=MatrixToList(field);
+			if (typeof field2[0] == 'number'){
+				if(ArrayAnyEqual(ArrayIsMember(field2,fieldvalues),0)){
+					var string=''; for (var i=0;i<fieldvalues.length;i++)string=sprintf("%s or %g",string,fieldvalues[i]);
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values in %s",fieldname,string)));
+				}
+			}
+			else{
+				var string=''; for (var i=0;i<fieldvalues.length;i++)string=sprintf("%s or %g",string,fieldvalues[i]);
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should be a number in %s",fieldname,string)));
+			}
+		}
+	}
+	
+	//check greater
+	if (options.exist('>=')){
+		lowerbound=options.getfieldvalue('>=');
+		field2=MatrixToList(field);
+		if (options.getfieldvalue('timeseries',0)) field2=MatrixToList(ArrayCopy(field).splice(-1,1));
+
+		if (ArrayAnyBelowStrict(field2,lowerbound)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values above %g",fieldname,lowerbound)));
+		}
+	}
+	if (options.exist('>')){
+		lowerbound=options.getfieldvalue('>');
+		field2=MatrixToList(field);
+		if (options.getfieldvalue('timeseries',0)) field2=MatrixToList(ArrayCopy(field).splice(-1,1));
+
+		if (ArrayAnyBelowOrEqual(field2,lowerbound)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values above %g",fieldname,lowerbound)));
+		}
+	}
+	
+	//check smaller
+	if (options.exist('<=')){
+		upperbound=options.getfieldvalue('<=');
+		field2=MatrixToList(field);
+		if (options.getfieldvalue('timeseries',0)) field2=MatrixToList(ArrayCopy(field).splice(-1,1));
+
+		if (ArrayAnyAboveOrEqual(field2,upperbound)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values below %g",fieldname,upperbound)));
+		}
+	}
+	
+	
+	if (options.exist('<')){
+		upperbound=options.getfieldvalue('<');
+		field2=MatrixToList(field);
+		if (options.getfieldvalue('timeseries',0)) field2=MatrixToList(ArrayCopy(field).splice(-1,1));
+		if (ArrayAnyAboveStrict(field2,upperbound)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values below %g",fieldname,upperbound)));
+		}
+	}
+
+	//Check row of stringrow
+	if (options.getfieldvalue('stringrow',0)){
+		if (IsArray(field[0])){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have only one row",field)));
+		}
+		if (!IsArray(field)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should be an array of string",fieldname)));
+		}
+		else{
+			for(var i=0;i<field.length;i++){
+				if (!(typeof field[i] == 'string')){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' values should be a cell of strings",fieldname)));
+				}
+			}
+		}
+	}
+
+	//check file
+	if (options.getfieldvalue('file',0)){
+		/*if ~exist(field,'file')
+			md.checkmessage(['file provided in ''' fieldname ''': ''' field ''' does not exist']);
+		end*/
+		throw Error("checkfield error message: file checking on javascript not supported yet!");
+	}
+
+	//Check forcings (size and times)
+	if (options.getfieldvalue('timeseries',0)){
+		if (field.length==md.mesh.numberofvertices | field.length==md.mesh.numberofelements){
+			if (IsArray(field[0])){
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have only one column as there are md.mesh.numberofvertices lines",fieldname)));
+			}
+		}
+		else if ((field.length==md.mesh.numberofvertices+1) | (field.length==md.mesh.numberofelements+1)){
+			var times=field[field.length-1]; var sorted_times=ArraySort(times);
+			for(var i=0;i<times.length;i++){
+				if(times[i] !=sorted_times[i]){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' columns should be sorted chronologically",fieldname)));
+					break;
+				}
+			}
+			var timesm=ArrayCopy(times).splice(0,-1); var timesp=ArrayCopy(times).shift();
+			for(var i=0;i<timesm.length;i++){
+				if(timesm[i]==timesp[i]){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' columns must not contain duplicate timesteps",fieldname)));
+					break;
+				}
+			}
+		}
+		else{
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have md.mesh.numberofvertices or md.mesh.numberofvertices+1 lines",fieldname)));
+		}
+	}
+
+	//Check single value forcings (size and times)
+	if (options.getfieldvalue('singletimeseries',0)){
+		if (field.length==2){
+			var times=field[1]; var sorted_times=ArraySort(times);
+			for(var i=0;i<times.length;i++){
+				if(times[i] !=sorted_times[i]){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' columns should be sorted chronologically",fieldname)));
+					break;
+				}
+			}
+			var timesm=ArrayCopy(times).splice(0,-1); var timesp=ArrayCopy(times).shift();
+			for(var i=0;i<timesm.length;i++){
+				if(timesm[i]==timesp[i]){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' columns must not contain duplicate timesteps",fieldname)));
+					break;
+				}
+			}
+		}
+		else{
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have 2 lines",fieldname)));
+		}
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/consistency/checkfield.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/consistency/checkfield.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/consistency/checkfield.m	(revision 27955)
@@ -0,0 +1,296 @@
+function md = checkfield(md,varargin)
+%CHECKFIELD - check field consistency
+%
+%   Used to check model consistency.
+%   Requires: 
+%     'field' or 'fieldname' option. If 'fieldname' is provided, it will retrieve it from the model md. (md.(fieldname)) 
+%             If 'field' is provided, it will assume the argument following 'field' is a numeric array.
+%   Available options:
+%      - NaN: 1 if check that there is no NaN
+%      - Inf: 1 if check that there is no Inf
+%      - size: [lines cols], NaN for non checked dimensions, or 'universal' for any input type (nodal, element, time series, etc)
+%      - >:  greater than provided value
+%      - >=: greater or equal to provided value
+%      - <:  smallerthan provided value
+%      - <=: smaller or equal to provided value
+%      - < vec:  smallerthan provided values on each vertex
+%      - timeseries: 1 if check time series consistency (size and time)
+%      - values: cell of strings or vector of acceptable values
+%      - numel: list of acceptable number of elements
+%      - cell: 1 if check that is cell
+%      - empty: 1 if check that non empty
+%      - message: overloaded error message
+%
+%   Usage:
+%      md = checkfield(md,fieldname,options);
+
+%get options
+options=pairoptions(varargin{:});
+
+%get field: 
+if exist(options,'field'), 
+	field=getfieldvalue(options,'field'); 
+	fieldname=getfieldvalue(options,'fieldname','no fieldname'); 
+else
+	fieldname=getfieldvalue(options,'fieldname'); 
+	eval(['field=md.' fieldname ';']);
+end
+
+%check empty
+if exist(options,'empty')
+	if isempty(field),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' is empty']));
+	end
+end
+
+%Check size
+if exist(options,'size')
+	fieldsize=getfieldvalue(options,'size');
+	if ischar(fieldsize),
+		if strcmp(fieldsize,'universal'),
+
+			%Check that vector size will not be confusing for ModelProcessorx
+			if (md.mesh.numberofvertices==md.mesh.numberofelements),
+				error('number of vertices is the same as number of elements');
+			elseif (md.mesh.numberofvertices+1==md.mesh.numberofelements),
+				error('number of vertices +1 is the same as number of elements');
+			elseif (md.mesh.numberofvertices==md.mesh.numberofelements+1),
+				error('number of vertices is the same as number of elements +1');
+			end
+
+			%Uniform field
+			if (size(field,1)==1),
+				if (size(field,2)~=1),
+					md = checkmessage(md,getfieldvalue(options,'message',['field ''' fieldname ''' is not supported']));
+				end
+
+			%vertex oriented input, only one column allowed
+			elseif (size(field,1)==md.mesh.numberofvertices),
+				if (size(field,2)~=1),
+					md = checkmessage(md,getfieldvalue(options,'message',['field ''' fieldname ''' is not supported']));
+				end
+
+			%element oriented input, one or more column (patch) is ok 
+			elseif (size(field,1)==md.mesh.numberofelements),
+				%nothing to do here (either constant per element, or defined on nodes)
+
+			%vertex time series
+			elseif (size(field,1)==md.mesh.numberofvertices+1),
+				if (size(field,2)<=1),
+					md = checkmessage(md,getfieldvalue(options,'message',['field ''' fieldname ''' is not supported']));
+				end
+
+			%element time series
+			elseif (size(field,1)==md.mesh.numberofelements+1),
+				if (size(field,2)<=1),
+					md = checkmessage(md,getfieldvalue(options,'message',['field ''' fieldname ''' is not supported']));
+				end
+
+			%else not supported
+			else
+				md = checkmessage(md,getfieldvalue(options,'message',['field ''' fieldname ''' is not supported']));
+			end
+		else
+			error(['fieldsize ''' fieldsize ''' not supported yet']);
+		end
+	else
+		for i=1:numel(fieldsize)
+			if ~isnan(fieldsize(i)) & (size(field,i)~=fieldsize(i))
+				md = checkmessage(md,getfieldvalue(options,'message',['field ''' fieldname ''' dimension # ' num2str(i) ' should be of size ' num2str(fieldsize(i))]));
+			end
+		end
+	end
+end
+
+%Check numel
+if exist(options,'numel')
+	fieldnumel=getfieldvalue(options,'numel');
+	if ~ismember(numel(field),fieldnumel),
+		if length(fieldnumel)==1
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' size should be ' sprintf('%g ',fieldnumel) ]));
+		elseif length(fieldnumel)==2
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' size should be ' num2str(fieldnumel(1)) ' or ' num2str(fieldnumel(2)) ]));
+		else
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' size should be ' sprintf('%g, ',fieldnumel(1:end-1)) ' or ' num2str(fieldnumel(end)) ]));
+		end
+	end
+end
+
+%check NaN
+if getfieldvalue(options,'NaN',0);
+	field2=reshape(field,prod(size(field)),1);
+	if any(isnan(field2)),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['NaN values found in field ''' fieldname '''']));
+	end
+end
+
+%check Inf
+if getfieldvalue(options,'Inf',0);
+	field2=reshape(field,prod(size(field)),1);
+	if any(isinf(field2)),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['Inf values found in field ''' fieldname '''']));
+	end
+end
+
+%check cell
+if getfieldvalue(options,'cell',0);
+	if ~iscell(field),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' should be a cell']));
+	end
+end
+
+%check values
+if exist(options,'values')
+	fieldvalues=getfieldvalue(options,'values');
+	if iscell(fieldvalues), %strings
+		if ischar(field) | iscell(fieldvalues),
+			if any(~ismember(field,fieldvalues)),
+				if length(fieldvalues)==1
+					md = checkmessage(md,getfieldvalue(options,'message',...
+						['field ''' fieldname ''' value should be ''' fieldvalues{1} '''']));
+				elseif length(fieldvalues)==2
+					md = checkmessage(md,getfieldvalue(options,'message',...
+						['field ''' fieldname ''' values should be ''' fieldvalues{1} ''' or ''' fieldvalues{2} '''']));
+				else
+					md = checkmessage(md,getfieldvalue(options,'message',...
+						['field ''' fieldname ''' should have values in ' sprintf('''%s'', ',fieldvalues{1:end-1}) 'or ''' fieldvalues{end} '''']));
+				end
+			end
+		else
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' should be one of the following strings: ' sprintf('''%s'', ',fieldvalues{1:end-1}) 'or ''' fieldvalues{end} '''']));
+		end
+	else
+		field2=reshape(field,prod(size(field)),1);
+		if isnumeric(field),
+			if any(~ismember(field2,fieldvalues)),
+				md = checkmessage(md,getfieldvalue(options,'message',...
+					['field ''' fieldname ''' should have values in [' num2str(fieldvalues) ']']));
+			end
+		else
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' should be a number in [' num2str(fieldvalues) ']']));
+		end
+	end
+end
+
+%check greater
+if exist(options,'>=')
+	lowerbound=getfieldvalue(options,'>=');
+	field2=reshape(field,prod(size(field)),1);
+	if getfieldvalue(options,'timeseries',0),       field2=reshape(field(1:end-1,:),prod(size(field(1:end-1,:))),1); end
+	if getfieldvalue(options,'singletimeseries',0), field2=reshape(field(1,:),prod(size(field(1,:))),1); end
+	if any(field2<lowerbound),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' should have values above ' num2str(lowerbound(1,1))]));
+	end
+end
+if exist(options,'>')
+	lowerbound=getfieldvalue(options,'>');
+	field2=reshape(field,prod(size(field)),1);
+	if getfieldvalue(options,'timeseries',0),       field2=reshape(field(1:end-1,:),prod(size(field(1:end-1,:))),1); end
+	if getfieldvalue(options,'singletimeseries',0), field2=reshape(field(1,:),prod(size(field(1,:))),1); end
+	if any(field2<=lowerbound),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' should have values above ' num2str(lowerbound(1,1))]));
+	end
+end
+
+%check smaller
+if exist(options,'<=')
+	upperbound=getfieldvalue(options,'<=');
+	field2=reshape(field,prod(size(field)),1);
+	if getfieldvalue(options,'timeseries',0), field2=reshape(field(1:end-1,:),prod(size(field(1:end-1,:))),1); end
+	if getfieldvalue(options,'singletimeseries',0), field2=reshape(field(1,:),prod(size(field(1,:))),1); end
+	if any(field2>upperbound),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' should have values below ' num2str(upperbound(1,1))]));
+	end
+end
+if exist(options,'<')
+	upperbound=getfieldvalue(options,'<');
+	field2=reshape(field,prod(size(field)),1);
+	if getfieldvalue(options,'timeseries',0), field2=reshape(field(1:end-1,:),prod(size(field(1:end-1,:))),1); end
+	if getfieldvalue(options,'singletimeseries',0), field2=reshape(field(1,:),prod(size(field(1,:))),1); end
+	if any(field2>=upperbound),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' should have values below ' num2str(upperbound(1,1))]));
+	end
+end
+
+%Check row of stringrow
+if getfieldvalue(options,'stringrow',0),
+	if(size(field,1)~=1 & size(field,1)~=0),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' should have only one row']));
+	end
+	if ~iscell(field),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' should be a cell of strings']));
+	else
+		for i=1:size(field,2),
+			if ~ischar(field{i}),
+				md = checkmessage(md,getfieldvalue(options,'message',...
+					['field ''' fieldname ''' values should a cell of chars']));
+			end
+		end
+	end
+end
+
+%check file
+if getfieldvalue(options,'file',0),
+	if ~exist(field,'file')
+		md = checkmessage(md,['file provided in ''' fieldname ''': ''' field ''' does not exist']);
+	end
+end
+
+%Check forcings (size and times)
+if getfieldvalue(options,'timeseries',0),
+	if (size(field,1)==md.mesh.numberofvertices | size(field,1)==md.mesh.numberofelements),
+		if size(field,2)~=1,
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' should have only one column as there are md.mesh.numberofvertices lines']));
+		end
+	elseif (size(field,1)==md.mesh.numberofvertices+1 | size(field,1)==md.mesh.numberofelements+1),
+		if any(field(end,:)~=sort(field(end,:))),
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' columns should be sorted chronologically']));
+		end
+		if any(field(end,1:end-1)==field(end,2:end)),
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' columns must not contain duplicate timesteps']));
+		end
+	else
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' should have md.mesh.numberofvertices or md.mesh.numberofvertices+1 lines']));
+	end
+end
+
+%Check single value forcings (size and times)
+if getfieldvalue(options,'singletimeseries',0),
+	if size(field,1)==2
+		if any(field(end,:)~=sort(field(end,:))),
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' columns should be sorted chronologically']));
+		end
+		if any(field(end,1:end-1)==field(end,2:end)),
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' columns must not contain duplicate timesteps']));
+		end
+	elseif size(field,1)==1,
+		if size(field,2)~=1, 
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' should be either a scalar or have 2 lines']));
+		end
+	else
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' should have 2 lines or be a scalar']));
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/consistency/checkfield.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/consistency/checkfield.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/consistency/checkfield.py	(revision 27955)
@@ -0,0 +1,284 @@
+import numpy as np
+import os
+from re import findall, split
+from pairoptions import pairoptions
+from operator import attrgetter
+import MatlabFuncs as m
+
+
+def checkfield(md, *args):
+    """CHECKFIELD - check field consistency
+
+    Used to check model consistency
+    Requires:
+        'field' or 'fieldname' option. If 'fieldname' is provided, it will
+        retrieve it from the model md. (md.(fieldname))
+        If 'field' is provided, it will assume the argument following 'field'
+        is a numeric array.
+
+    Available options:
+        - NaN: 1 if check that there is no NaN
+        - size: [lines cols], NaN for non checked dimensions, or 'universal'
+        for any input type (nodal, element, time series, etc)
+        - > :  greater than provided value
+        - >= : greater or equal to provided value
+        - < :  smallerthan provided value
+        - <=: smaller or equal to provided value
+        - < vec:  smallerthan provided values on each vertex
+        - timeseries: 1 if check time series consistency (size and time)
+        - values: list of acceptable values
+        - numel: list of acceptable number of elements
+        - cell: 1 if check that is cell
+        - empty: 1 if check that non empty
+        - message: overloaded error message
+
+    Usage:
+        md = checkfield(md, fieldname, options)
+    """
+
+    #get options
+    options = pairoptions(*args)
+
+    #get field from model
+    if options.exist('field'):
+        field = options.getfieldvalue('field')
+        fieldname = options.getfieldvalue('fieldname', 'no fieldname')
+    else:
+        fieldname = options.getfieldvalue('fieldname')
+        fieldprefix = split(r'\[(.*?)\]', fieldname)[0]
+        fieldindexes = findall(r'\[(.*?)\]', fieldname)
+        field = attrgetter(fieldprefix)(md)
+        for index in fieldindexes:
+            try:
+                field = field[index.strip("\'")]
+            except TypeError:
+                field = field[int(index)]  #looking for an index and not a key
+
+    # that works for py2
+    #        exec("field = md.{}".format(fieldname))
+    #        exec("field = md.{}".format(fieldname), namespace)
+
+    if isinstance(field, (bool, int, float)):
+        field = np.array([field])
+
+    #check empty
+    if options.exist('empty'):
+        if not field:
+            md = md.checkmessage(options.getfieldvalue('message', "field '{}' is empty".format(fieldname)))
+
+    #Check size
+    if options.exist('size'):
+        fieldsize = options.getfieldvalue('size')
+        if type(fieldsize) == str:
+            if fieldsize == 'universal':
+                #Check that vector size will not be confusing for ModelProcessorx
+                if (md.mesh.numberofvertices == md.mesh.numberofelements):
+                    raise Exception('number of vertices is the same as number of elements')
+                elif (md.mesh.numberofvertices + 1 == md.mesh.numberofelements):
+                    raise Exception('number of vertices + 1 is the same as number of elements')
+                elif (md.mesh.numberofvertices == md.mesh.numberofelements + 1):
+                    raise Exception('number of vertices is the same as number of elements + 1')
+
+                #Uniform field
+                if (field.shape[0] == 1):
+                    if (np.ndim(field) > 1 and np.shape(field)[1] != 1):
+                        md = md.checkmessage(options.getfieldvalue('message', "field '{}' is not supported".format(fieldname)))
+
+                #vertex oriented input, only one column allowed
+                elif (np.shape(field)[0] == md.mesh.numberofvertices):
+                    if (np.ndim(field) > 1 and np.shape(field)[1] != 1):
+                        md = md.checkmessage(options.getfieldvalue('message', "field '{}' is not supported".format(fieldname)))
+
+                #element oriented input, one or more column (patch) is ok
+                elif (np.shape(field)[0] == md.mesh.numberofelements):
+                    #nothing to do here (either constant per element, or defined on nodes)
+                    pass
+
+                #vertex time series
+                elif (np.shape(field)[0] == md.mesh.numberofvertices + 1):
+                    if (np.ndim(field) > 1 and np.shape(field)[1] <= 1):
+                        md = md.checkmessage(options.getfieldvalue('message', "field '{}' is not supported".format(fieldname)))
+
+                #element time series
+                elif (np.shape(field)[0] == md.mesh.numberofelements + 1):
+                    if (np.ndim(field) > 1 and np.shape(field)[1] <= 1):
+                        md = md.checkmessage(options.getfieldvalue('message', "field '{}' is not supported".format(fieldname)))
+
+                #else not supported
+                else:
+                    md = md.checkmessage(options.getfieldvalue('message', "field '{}' is not supported".format(fieldname)))
+
+            else:
+                raise Exception("fieldsize '{}' not supported yet".format(fieldsize))
+
+        else:
+            if len(np.shape(field)) < len(fieldsize):
+                if fieldsize[-1] > 1:
+                    md = md.checkmessage(options.getfieldvalue('message', "field {} has size {} but should be size {}".format(fieldname, np.shape(field), fieldsize)))
+                else:
+                    #The last dimension is one that follows matlab 2D array regulation but usually not what we do in python, we allow the difference in shape only if the number of element is equal
+                    if np.prod(np.shape(field)) != np.prod(fieldsize):
+                        md = md.checkmessage(options.getfieldvalue('message', "field {} has size {} but should be size {}".format(fieldname, np.shape(field), fieldsize)))
+            else:
+                for i in range(np.size(fieldsize)):
+                    if (not np.isnan(fieldsize[i])) and (np.shape(field)[i] != fieldsize[i]):
+                        md = md.checkmessage(options.getfieldvalue('message', "field {} dimension  # {} should be of size {}".format(fieldname, i, fieldsize[i])))
+
+    #Check numel
+    if options.exist('numel'):
+        fieldnumel = options.getfieldvalue('numel')
+        if (type(fieldnumel) == int and np.size(field) != fieldnumel) or (type(fieldnumel) == list and np.size(field) not in fieldnumel):
+            if len(fieldnumel) == 1:
+                md = md.checkmessage(options.getfieldvalue('message', "field '{}' size should be {}".format(fieldname, fieldnumel)))
+            elif len(fieldnumel) == 2:
+                md = md.checkmessage(options.getfieldvalue('message', "field '{}' size should be {} or {}".format(fieldname, fieldnumel[0], fieldnumel[1])))
+            else:
+                md = md.checkmessage(options.getfieldvalue('message', "field '{}' size should be {}".format(fieldname, fieldnumel)))
+
+    #check NaN
+    if options.getfieldvalue('NaN', 0):
+        if np.any(np.isnan(field)):
+            md = md.checkmessage(options.getfieldvalue('message', "NaN values found in field '{}'".format(fieldname)))
+
+    #check Inf
+    if options.getfieldvalue('Inf', 0):
+        if np.any(np.isinf(field)):
+            md = md.checkmessage(options.getfieldvalue('message', "Inf values found in field '{}'".format(fieldname)))
+
+    #check cell
+    if options.getfieldvalue('cell', 0):
+        if not isinstance(field, (tuple, list, dict)):
+            md = md.checkmessage(options.getfieldvalue('message', "field '{}' should be a tuple, list, or dict".format(fieldname)))
+
+    #check values
+    if options.exist('values'):
+        fieldvalues = options.getfieldvalue('values')
+        if False in m.ismember(field, fieldvalues):
+            if len(fieldvalues) == 1:
+                md = md.checkmessage(options.getfieldvalue('message', "field '{}' value should be '{}'".format(fieldname, fieldvalues[0])))
+            elif len(fieldvalues) == 2:
+                md = md.checkmessage(options.getfieldvalue('message', "field '{}' values should be '{}' or '{}'".format(fieldname, fieldvalues[0], fieldvalues[1])))
+            else:
+                md = md.checkmessage(options.getfieldvalue('message', "field '{}' should have values in {}".format(fieldname, fieldvalues)))
+
+    #check greater
+    if options.exist('>='):
+        lowerbound = options.getfieldvalue('>=')
+        if type(lowerbound) is str:
+            lowerbound = attrgetter(lowerbound)(md)
+        if np.size(lowerbound) > 1:  #checking elementwise
+            if any(field < lowerbound):
+                md = md.checkmessage(options.getfieldvalue('message', "field {} should have values above {}".format(fieldname, lowerbound)))
+        else:
+            minval = np.nanmin(field)
+            if options.getfieldvalue('timeseries', 0):
+                minval = np.nanmin(field[:-1])
+            elif options.getfieldvalue('singletimeseries', 0):
+                if np.size(field) == 1:  #some singletimeseries are just one value
+                    minval = field
+                else:
+                    minval = np.nanmin(field[0])
+
+            if minval < lowerbound:
+                md = md.checkmessage(options.getfieldvalue('message', "field {} should have values above {}".format(fieldname, lowerbound)))
+
+    if options.exist('>'):
+        lowerbound = options.getfieldvalue('>')
+        if type(lowerbound) is str:
+            lowerbound = attrgetter(lowerbound)(md)
+        if np.size(lowerbound) > 1:  #checking elementwise
+            if any(field <= lowerbound):
+                md = md.checkmessage(options.getfieldvalue('message', "field {} should have values above {}".format(fieldname, lowerbound)))
+        else:
+            minval = np.nanmin(field)
+            if options.getfieldvalue('timeseries', 0):
+                minval = np.nanmin(field[:-1])
+            elif options.getfieldvalue('singletimeseries', 0):
+                if np.size(field) == 1:  #some singletimeseries are just one value
+                    minval = field
+                else:
+                    minval = np.nanmin(field[0])
+
+            if minval <= lowerbound:
+                md = md.checkmessage(options.getfieldvalue('message', "field {} should have values above {}".format(fieldname, lowerbound)))
+
+    #check smaller
+    if options.exist('<='):
+        upperbound = options.getfieldvalue('<=')
+        if type(upperbound) is str:
+            upperbound = attrgetter(upperbound)(md)
+        if np.size(upperbound) > 1:  #checking elementwise
+            if any(field > upperbound):
+                md = md.checkmessage(options.getfieldvalue('message', "field {} should have values below {}".format(fieldname, upperbound)))
+        else:
+            maxval = np.nanmax(field)
+            if options.getfieldvalue('timeseries', 0):
+                maxval = np.nanmax(field[:-1])
+            elif options.getfieldvalue('singletimeseries', 0):
+                if np.size(field) == 1:  #some singletimeseries are just one value
+                    maxval = field
+                else:
+                    maxval = np.nanmax(field[0])
+            elif hasattr(field, 'fov_forward_indices'):
+                maxval = field.fov_forward_indices[0]
+            if maxval > upperbound:
+                md = md.checkmessage(options.getfieldvalue('message', "field {} should have values below {}".format(fieldname, upperbound)))
+
+    if options.exist('<'):
+        upperbound = options.getfieldvalue('<')
+        if type(upperbound) is str:
+            upperbound = attrgetter(upperbound)(md)
+        if np.size(upperbound) > 1:  #checking elementwise
+            if any(field >= upperbound):
+                md = md.checkmessage(options.getfieldvalue('message', "field {} should have values below {}".format(fieldname, upperbound)))
+
+        else:
+            maxval = np.nanmax(field)
+            if options.getfieldvalue('timeseries', 0):
+                maxval = np.nanmax(field[:-1])
+            elif options.getfieldvalue('singletimeseries', 0):
+                if np.size(field) == 1:  #some singletimeseries are just one value
+                    maxval = field.copy()
+                else:
+                    maxval = np.nanmax(field[0])
+
+                if maxval >= upperbound:
+                    md = md.checkmessage(options.getfieldvalue('message', "field {} should have values below {}".format(fieldname, upperbound)))
+
+    #check file
+    if options.getfieldvalue('file', 0):
+        if not os.path.exists(field):
+            md = md.checkmessage("file provided in {}: {} does not exist".format(fieldname, field))
+
+    #Check row of strings
+    if options.exist('stringrow'):
+        if not isinstance(field, list):
+            md = md.checkmessage(options.getfieldvalue('message', "field {} should be a list".format(fieldname)))
+
+    #Check forcings (size and times)
+    if options.getfieldvalue('timeseries', 0):
+        if field.shape[0] == md.mesh.numberofvertices or field.shape[0] == md.mesh.numberofelements:
+            if np.ndim(field) > 1 and not np.size(field, 1) == 1:
+                md = md.checkmessage(options.getfieldvalue('message', "field {} should have only one column as there are md.mesh.numberofvertices lines".format(fieldname)))
+        elif field.shape[0] == md.mesh.numberofvertices + 1 or field.shape[0] == md.mesh.numberofelements + 1:
+            if np.ndim(field) > 1 and not all(field[-1, :] == np.sort(field[-1, :])):
+                md = md.checkmessage(options.getfieldvalue('message', "field {} columns should be sorted chronologically".format(fieldname)))
+            if np.ndim(field) > 1 and any(field[-1, 0:-1] == field[-1, 1:]):
+                md = md.checkmessage(options.getfieldvalue('message', "field {} columns must not contain duplicate timesteps".format(fieldname)))
+        else:
+            md = md.checkmessage(options.getfieldvalue('message', "field {} should have md.mesh.numberofvertices or md.mesh.numberofvertices + 1 lines".format(fieldname)))
+
+    #Check single value forcings (size and times)
+    if options.getfieldvalue('singletimeseries', 0):
+        if field.shape[0] == 2:
+            if not all(field[-1, :] == np.sort(field[-1, :])):
+                md = md.checkmessage(options.getfieldvalue('message', "field {} columns should be sorted chronologically".format(fieldname)))
+            if any(field[-1, 0:-1] == field[-1, 1:]):
+                md = md.checkmessage(options.getfieldvalue('message', "field {} columns must not contain duplicate timesteps".format(fieldname)))
+        elif field.shape[0] == 1:
+            if np.ndim(field) > 1 and not np.size(field, 1) == 1:
+                md = md.checkmessage(options.getfieldvalue('message', "field {} should be either a scalar or have 2 lines".format(fieldname)))
+        else:
+            md = md.checkmessage(options.getfieldvalue('message', "field {} should have 2 lines or be a scalar".format(fieldname)))
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/consistency/comparemodels.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/consistency/comparemodels.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/consistency/comparemodels.m	(revision 27955)
@@ -0,0 +1,47 @@
+function comparemodels(md1,md2);
+
+	%loop over model fields
+	model_fields=fieldnames(md1);
+	for i=1:length(model_fields),
+		field1=md1.(model_fields{i});
+		field2=md2.(model_fields{i});
+		if isobject(field1), %recursive call
+			if ~strcmp(class(field1),class(field2))
+				disp(['Skipping ''' model_fields{i} ''' because classes are not consistent']);
+				continue;
+			end
+			object_fields=fieldnames(md1.(model_fields{i}));
+			for j=1:length(object_fields),
+				field1=md1.(model_fields{i}).(object_fields{j});
+				field2=md2.(model_fields{i}).(object_fields{j});
+				compare([model_fields{i} '.' object_fields{j}],field1,field2);
+			end
+		else
+			compare(model_fields{i},field1,field2);
+		end
+	end
+
+end
+
+function compare(fieldname,field1,field2),
+	if any(size(field1)~=size(field2)),
+		disp([fieldname ' do not have the same size']);
+	elseif isnumeric(field1)
+		if numel(field1)==1 & isnan(field1) & isnan(field2),
+			%Do not do anything
+		elseif any(field1(:)~=field2(:))
+			%Deal with NaN...
+			pos1=find(isnan(field1));
+			pos2=find(isnan(field2));
+			if numel(pos1)==numel(pos2) & all(pos1==pos2),
+				field1(pos1)=0; field2(pos2)=0;
+				if any(field1(:)~=field2(:))
+					disp([fieldname ' differs']);
+				end
+			else
+				disp([fieldname ' differs']);
+			end
+		end
+	end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/consistency/ismodelselfconsistent.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/consistency/ismodelselfconsistent.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/consistency/ismodelselfconsistent.js	(revision 27955)
@@ -0,0 +1,95 @@
+function ismodelselfconsistent(md){
+//ISMODELSELFCONSISTENT - check that model forms a closed form solvable problem.
+//
+//   Usage:
+//      ismodelselfconsistent(md),
+
+	//initialize consistency as true
+	md.priv.isconsistent=true;
+
+	//Get solution and associated analyses
+	solution=md.priv.solution;
+	if(typeof solution !== 'string')throw Error('ismodelselfconsistent: did not provide correct solution type in the private class!');
+	
+	var analyses = AnalysisConfiguration(solution);
+
+	//Go through a model field, check that it is a class, and call checkconsistency
+	for(field in md){
+
+		//Some properties do not need to be checked
+		if (field == 'results' | field == 'debug' | field == 'radaroverlay'){
+			continue;
+		}
+
+		//Check that current field is a class
+		if(typeof md[field] == 'function'){
+			continue;
+		}
+
+		//Check consistency of the class
+		md[field].checkconsistency(md,solution,analyses);
+	}
+
+	//error message if mode is not consistent
+	if (md.priv.isconsistent==false){
+		throw Error('Model not consistent, see messages above');
+	}
+}
+
+function AnalysisConfiguration(solutiontype){ // {{{
+	//ANALYSISCONFIGURATION - return type of analyses, number of analyses 
+	//
+	//   Usage:
+	//      [analyses]=AnalysisConfiguration(solutiontype);
+
+	var analyses=[];
+		
+	if(solutiontype === 'StressbalanceSolution'){
+		analyses=['StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis'];
+		
+	}else if(solutiontype ==='SteadystateSolution'){
+		analyses=['StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis','ThermalAnalysis','MeltingAnalysis'];
+		
+	}else if(solutiontype ==='ThermalSolution'){
+		analyses=['EnthalpyAnalysis','ThermalAnalysis','MeltingAnalysis'];
+		
+	}else if(solutiontype ==='MasstransportSolution'){
+		analyses=['MasstransportAnalysis'];
+		
+	}else if(solutiontype ==='BalancethicknessSolution'){
+		analyses=['BalancethicknessAnalysis'];
+		
+	}else if(solutiontype ==='Balancethickness2Solution'){
+		analyses=['Balancethickness2Analysis'];
+		
+	}else if(solutiontype ==='BalancethicknessSoftSolution'){
+		analyses=['BalancethicknessAnalysis'];
+		
+	}else if(solutiontype ==='BalancevelocitySolution'){
+		analyses=['BalancevelocityAnalysis'];
+		
+	}else if(solutiontype ==='SurfaceSlopeSolution'){
+		analyses=['L2ProjectionBaseAnalysis'];
+		
+	}else if(solutiontype ==='BedSlopeSolution'){
+		analyses=['L2ProjectionBaseAnalysis'];
+		
+	}else if(solutiontype ==='GiaSolution'){
+		analyses=['GiaIvinsAnalysis'];
+		
+	}else if(solutiontype ==='TransientSolution'){
+		analyses=['StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis','ThermalAnalysis','MeltingAnalysis','EnthalpyAnalysis','MasstransportAnalysis','HydrologyShaktiAnalysis','HydrologyGladsAnalysis'];
+		
+	}else if(solutiontype ==='SealevelriseSolution'){
+		analyses=['SealevelriseAnalysis'];
+		
+	}else if(solutiontype ==='HydrologySolution'){
+		analyses=['L2ProjectionBaseAnalysis','HydrologyShreveAnalysis','HydrologyDCInefficientAnalysis','HydrologyDCEfficientAnalysis'];
+		
+	}else if(solutiontype ==='DamageEvolutionSolution'){
+		analyses=['DamageEvolutionAnalysis'];
+	}else{
+		throw Error(sprintf("%s%s%s\n",' solution type: ',solutiontype,' not supported yet!'));
+	}
+	return analyses;
+} // }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/consistency/ismodelselfconsistent.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/consistency/ismodelselfconsistent.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/consistency/ismodelselfconsistent.m	(revision 27955)
@@ -0,0 +1,87 @@
+function ismodelselfconsistent(md),
+%ISMODELSELFCONSISTENT - check that model forms a closed form solvable problem.
+%
+%   Usage:
+%      ismodelselfconsistent(md);
+
+%initialize consistency as true
+md.private.isconsistent=true;
+
+%Get solution and associated analyses
+solution=md.private.solution;
+[analyses]=AnalysisConfiguration(solution);
+
+%Go through a model field, check that it is a class, and call checkconsistency
+fields=properties('model');
+for i=1:length(fields),
+	field=fields{i};
+
+	%Some properties do not need to be checked
+	if ismember(field,{'results' 'debug' 'radaroverlay'}),
+		continue;
+	end
+
+	%Check that current field is an object
+	if ~isobject(md.(field))
+		md=checkmessage(md,['field ''' char(field) ''' is not an object']);
+		continue;
+	end
+
+	%Check consistency of the object
+	md=checkconsistency(md.(field),md,solution,analyses);
+end
+
+%error message if mode is not consistent
+if md.private.isconsistent==false,
+	error('Model not consistent, see messages above');
+end
+end
+
+function [analyses]=AnalysisConfiguration(solutiontype), % {{{
+%ANALYSISCONFIGURATION - return type of analyses, number of analyses
+%
+%   Usage:
+%      [analyses]=AnalysisConfiguration(solutiontype);
+
+	if strcmp(solutiontype,'StressbalanceSolution')
+		analyses={'StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis','AgeAnalysis'};
+	elseif strcmp(solutiontype,'SteadystateSolution')
+		analyses={'StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis','ThermalAnalysis','MeltingAnalysis','EnthalpyAnalysis','AgeAnalysis'};
+	elseif strcmp(solutiontype,'ThermalSolution')
+		analyses={'EnthalpyAnalysis','ThermalAnalysis','MeltingAnalysis'};
+	elseif strcmp(solutiontype,'MasstransportSolution')
+		analyses={'MasstransportAnalysis'};
+	elseif strcmp(solutiontype,'OceantransportSolution')
+		analyses={'OceantransportAnalysis'};
+	elseif strcmp(solutiontype,'BalancethicknessSolution')
+		analyses={'BalancethicknessAnalysis'};
+	elseif strcmp(solutiontype,'Balancethickness2Solution')
+		analyses={'Balancethickness2Analysis'};
+	elseif strcmp(solutiontype,'BalancethicknessSoftSolution')
+		analyses={'BalancethicknessAnalysis'};
+	elseif strcmp(solutiontype,'BalancevelocitySolution')
+		analyses={'BalancevelocityAnalysis'};
+	elseif strcmp(solutiontype,'SurfaceSlopeSolution')
+		analyses={'L2ProjectionBaseAnalysis'};
+	elseif strcmp(solutiontype,'BedSlopeSolution')
+		analyses={'L2ProjectionBaseAnalysis'};
+	elseif strcmp(solutiontype,'GiaSolution')
+		analyses={'GiaIvinsAnalysis'};
+	elseif strcmp(solutiontype,'LoveSolution')
+		analyses={'LoveAnalysis'};
+	elseif strcmp(solutiontype,'EsaSolution')
+		analyses={'EsaAnalysis'};
+	elseif strcmp(solutiontype,'TransientSolution')
+		analyses={'StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis','ThermalAnalysis','MeltingAnalysis','EnthalpyAnalysis','MasstransportAnalysis','OceantransportAnalysis','HydrologyShaktiAnalysis','HydrologyGladsAnalysis','HydrologyShreveAnalysis','HydrologyTwsAnalysis','HydrologyDCInefficientAnalysis','HydrologyDCEfficientAnalysis','SealevelchangeAnalysis','AgeAnalysis','HydrologyArmapwAnalysis','AgeAnalysis','DebrisAnalysis'};
+	elseif strcmp(solutiontype,'SealevelchangeSolution')
+		analyses={'SealevelchangeAnalysis'};
+	elseif strcmp(solutiontype,'HydrologySolution')
+		analyses={'L2ProjectionBaseAnalysis','HydrologyShreveAnalysis','HydrologyDCInefficientAnalysis','HydrologyDCEfficientAnalysis','HydrologyGladsAnalysis','HydrologyShaktiAnalysis','HydrologyTwsAnalysis','HydrologyArmapwAnalysis'};
+	elseif strcmp(solutiontype,'DamageEvolutionSolution')
+		analyses={'DamageEvolutionAnalysis'};
+    elseif strcmp(solutiontype,'SamplingSolution')
+		analyses={'SamplingAnalysis'};    
+	else
+		error(' solution type: %s' , solutiontype, ' not supported yet!');
+	end
+end % }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/consistency/ismodelselfconsistent.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/consistency/ismodelselfconsistent.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/consistency/ismodelselfconsistent.py	(revision 27955)
@@ -0,0 +1,86 @@
+def ismodelselfconsistent(md):  #{{{
+    """ISMODELSELFCONSISTENT - check that model forms a closed form solvable problem.
+
+    Usage:
+        ismodelselfconsistent(md)
+    """
+
+    # Initialize consistency as true
+    md.private.isconsistent = True
+
+    # print(md.mesh.z)
+    # exit()
+
+    # Get solution and associated analyses
+    solution = md.private.solution
+    analyses = AnalysisConfiguration(solution)
+    # Go through a model fields, check that it is a class, and call checkconsistency
+    #fields = vars(md)
+    #for field in fields.iterkeys():
+    for field in md.properties():
+        # Some properties do not need to be checked
+        if field in ['results', 'debug', 'radaroverlay']:
+            continue
+
+        # Check that current field is an object
+        if not hasattr(getattr(md, field), 'checkconsistency'):
+            md.checkmessage('field {} is not an object.'.format(field))
+
+        # Check consistency of the object
+        exec('md.{}.checkconsistency(md, \'{}\', {})'.format(field, solution, analyses))
+
+    # Error message if mode is not consistent
+    if not md.private.isconsistent:
+        raise RuntimeError('Model not consistent, see messages above.')
+# }}}
+
+def AnalysisConfiguration(solutiontype):  #{{{
+    """ANALYSISCONFIGURATION - return type of analyses, number of analyses
+
+    Usage:
+        [analyses] = AnalysisConfiguration(solutiontype)
+    """
+
+    if solutiontype == 'StressbalanceSolution':
+        analyses = ['StressbalanceAnalysis', 'StressbalanceVerticalAnalysis', 'StressbalanceSIAAnalysis', 'L2ProjectionBaseAnalysis']
+    elif solutiontype == 'SteadystateSolution':
+        analyses = ['StressbalanceAnalysis', 'StressbalanceVerticalAnalysis', 'StressbalanceSIAAnalysis', 'L2ProjectionBaseAnalysis', 'ThermalAnalysis', 'MeltingAnalysis', 'EnthalpyAnalysis','AgeAnalysis']
+    elif solutiontype == 'ThermalSolution':
+        analyses = ['EnthalpyAnalysis', 'ThermalAnalysis', 'MeltingAnalysis']
+    elif solutiontype == 'MasstransportSolution':
+        analyses = ['MasstransportAnalysis']
+    elif solutiontype == 'OceantransportSolution':
+        analyses = ['OceantransportAnalysis']
+    elif solutiontype == 'BalancethicknessSolution':
+        analyses = ['BalancethicknessAnalysis']
+    elif solutiontype == 'Balancethickness2Solution':
+        analyses = ['Balancethickness2Analysis']
+    elif solutiontype == 'BalancethicknessSoftSolution':
+        analyses = ['BalancethicknessAnalysis']
+    elif solutiontype == 'BalancevelocitySolution':
+        analyses = ['BalancevelocityAnalysis']
+    elif solutiontype == 'SurfaceSlopeSolution':
+        analyses = ['L2ProjectionBaseAnalysis']
+    elif solutiontype == 'BedSlopeSolution':
+        analyses = ['L2ProjectionBaseAnalysis']
+    elif solutiontype == 'GiaSolution':
+        analyses = ['GiaIvinsAnalysis']
+    elif solutiontype == 'LoveSolution':
+        analyses = ['LoveAnalysis']
+    elif solutiontype == 'EsaSolution':
+        analyses = ['EsaAnalysis']
+    elif solutiontype == 'TransientSolution':
+        analyses = ['StressbalanceAnalysis', 'StressbalanceVerticalAnalysis', 'StressbalanceSIAAnalysis', 'L2ProjectionBaseAnalysis', 'ThermalAnalysis', 'MeltingAnalysis', 'EnthalpyAnalysis', 'MasstransportAnalysis', 'OceantransportAnalysis', 'HydrologyShaktiAnalysis', 'HydrologyGladsAnalysis', 'HydrologyShreveAnalysis', 'HydrologyTwsAnalysis', 'HydrologyDCInefficientAnalysis', 'HydrologyDCEfficientAnalysis', 'SealevelchangeAnalysis', 'AgeAnalysis', 'HydrologyArmapwAnalysis', 'DebrisAnalysis', 'AgeAnalysis']
+    elif solutiontype == 'SealevelchangeSolution':
+        analyses = ['SealevelchangeAnalysis']
+    elif solutiontype == 'HydrologySolution':
+        analyses = ['L2ProjectionBaseAnalysis', 'HydrologyShreveAnalysis', 'HydrologyDCInefficientAnalysis', 'HydrologyDCEfficientAnalysis', 'HydrologyGladsAnalysis', 'HydrologyShaktiAnalysis', 'HydrologyTwsAnalysis', 'HydrologyArmapwAnalysis']
+    elif 'DamageEvolutionSolution':
+        analyses = ['DamageEvolutionAnalysis']
+    elif 'SamplingSolution':
+        analyses = ['SamplingAnalysis']
+    else:
+        raise TypeError('solution type: {} not supported yet!'.format(solutiontype))
+
+    return analyses
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/adhikari2016GMD_slr_solver/SESAWslr.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/adhikari2016GMD_slr_solver/SESAWslr.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/adhikari2016GMD_slr_solver/SESAWslr.m	(revision 27955)
@@ -0,0 +1,125 @@
+function [eust,rsl,vlm,geoid] = SESAWslr(index,lat,long,greens,para) 
+%SESAWslr :: computes GRD slr due to applied surface loads based on SESAW method. 
+% 
+%Reference: Adhikari et al., 2016, GMD: https://doi.org/10.5194/gmd-9-1087-2016 
+%
+%   Usage:
+%      [eus,rsl,vlm,geoid]=greensfunctions(md.mesh.elements,md.mesh.lat,md.mesh.long,greens,para) 
+% 
+%      eus = eustatic aka barystatic sea level
+%      rsl = relative sea level 
+%      vlm = vertical land motion 
+%      geoid = change in geoid height 
+%      
+%      greens.Grigid = Gravitational Green's function for the rigid planet. 
+%      greens.Gelast = Gravitational Green's function for the elastic planet.
+%      greens.Uelast = Deformational (radial displacement) Green's function.
+% 
+%      para.ocean_element = ocean funnction mapped onto elemental centroid. 
+%      para.loads_element = land loads (ice or water) [m] 
+%      para.area_element = area of elements [m^2]  
+%      para.earth_density = averae density of the solid earth [kg/m^3] 
+%      para.ocean_density = ocean water density [kg/m^3] 
+%      para.loads_density = land loads (ice or freshwater) density [kg/m^3] 
+%      para.rel_tol = relative tolerance for iterative SLR solver 
+% 
+%      para.solidearth = rheological model for solid Earth: 'rigid' or 'elastic' 
+% 
+%      para.rotational.flag = Do we want to accoutn for rotational feedback? 1 (yes) or 0 (no) 
+%      para.rotational.earth_radius = mean radius of the Earth [m] 
+%      para.rotational.load_love_k2 = degree 2 load love number k  
+%      para.rotational.tide_love_k2 = degree 2 tide love number k  
+%      para.rotational.tide_love_h2 = degree 2 tide love number h 
+%      para.rotational.tide_love_k2secular = degree 2 secular tide love number k  
+%      para.rotational.moi_p = polar moment of inertia [kg m^2]  
+%      para.rotational.moi_e = mean equatorial moment of inertia [kg m^2]  
+%      para.rotational.omega = mean rotational velocity of earth [rad per second]  
+
+area_element = para.area_element; 
+ocean_element = para.ocean_element; 
+loads_element = para.loads_element; 
+rho_o = para.ocean_density; 
+rho_l = para.loads_density; % land loads, ice or water... 
+rho_e = para.earth_density; 
+rel_tol = para.rel_tol; 
+
+rot_flag = para.rotational.flag; 
+
+% total Green's function for elastic earth, i.e. (1+k_l-h_l)
+if strcmpi(para.solidearth,'rigid') 
+	Galpha = greens.Grigid; 
+elseif strcmpi(para.solidearth,'elastic') 
+	Galpha = greens.Grigid + greens.Gelast - greens.Uelast;		
+else
+	error(['Unknown solidearth model:' para.solidearth, '; Should be rigid or elastic']); 
+end
+
+if rot_flag 
+	% set up parameters for rotationalfeedback function. 
+	para_rot = para.rotational; 
+	para_rot.area_element =  para.area_element; 
+	para_rot.loads_element = para.loads_element; 
+	para_rot.loads_density = para.loads_density;  
+end
+
+% densitity ratios 
+density_o_e = rho_o/rho_e; 
+density_l_e = rho_l/rho_e; 
+density_l_o = rho_l/rho_o; 
+
+% ocean and earth's surface areas: 
+ocean_area = sum(ocean_element.*area_element); 
+earth_area = sum(area_element); 
+
+% eustatic term 
+eust = -density_l_o*sum(loads_element.*area_element)/ocean_area; 
+
+term1 = 3*density_l_e.*sum(bsxfun(@times,Galpha,(loads_element.*area_element)'),2)./earth_area; 
+if rot_flag
+	term1 = term1 + rotationalfeedback(index,lat,long,para_rot); 
+end
+func3 = mean(term1(index),2).*ocean_element;
+term3 = sum(func3.*area_element)./ocean_area; 
+
+% computation of sea level change 
+rsl = eust+term1-term3;
+
+norm_diff = 10;	p = 0; 
+while norm_diff > rel_tol
+	norm_old = sqrt(sum(rsl.^2)); 
+	%
+	term2 = 3*density_o_e.*sum(bsxfun(@times,Galpha,(mean(rsl(index),2).*ocean_element.*area_element)'),2)./earth_area; 
+	if rot_flag
+		para_rot.loads_element = mean(rsl(index),2).*ocean_element; 
+		para_rot.loads_density = para.ocean_density; 
+		term2 = term2 + rotationalfeedback(index,lat,long,para_rot); 
+	end
+	func4 = mean(term2(index),2).*ocean_element;
+	term4 = sum(func4.*area_element)./ocean_area; 
+	% 
+	rsl = eust+term1+term2-term3-term4; 
+	norm_new  = sqrt(sum(rsl.^2));
+	norm_diff = abs(norm_new-norm_old)./norm_old;
+	p = p+1;
+	if norm_diff > rel_tol
+		disp(['     iteration # ', num2str(p), ' :: difference in norm = ', num2str(norm_diff)]);
+	else
+		disp(['     iteration # ', num2str(p), ' :: difference in norm = ', num2str(norm_diff)]);
+		disp(['     solution converged! ']);
+	end
+end 
+
+% compute bedrock motion aka VLM (vertical land motion) and geoid height change 
+geoid = term1+term2; % eus-term3-term4 is excluded from rsl. See Tamisiea, 2011. 
+if strcmpi(para.solidearth,'rigid')
+	vlm = 0.0*rsl;
+elseif strcmpi(para.solidearth,'elastic') 
+	% reset Green's function for VLM, i.e. h_l
+	Galpha = greens.Uelast;		
+	term1 = 3*density_l_e.*sum(bsxfun(@times,Galpha,(loads_element.*area_element)'),2)./earth_area; 
+	term2 = 3*density_o_e.*sum(bsxfun(@times,Galpha,(mean(rsl(index),2).*ocean_element.*area_element)'),2)./earth_area; 
+	vlm = term1+term2; 
+end
+% now add VLM. 
+geoid = geoid+vlm; 
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/adhikari2016GMD_slr_solver/greensfunctions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/adhikari2016GMD_slr_solver/greensfunctions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/adhikari2016GMD_slr_solver/greensfunctions.m	(revision 27955)
@@ -0,0 +1,50 @@
+function [Grigid,Gelastic,Uelastic] = greensfunctions(mesh_elements,mesh_lat,mesh_long,love_numbers) 
+%greensfunctions :: computes Greens funtions for rigid and elastic Earth. 
+%
+%   Usage:
+%      [Grigid,Gelastic,Uelastic]=greensfunctions(md.mesh.elements,md.mesh.lat,md.mesh.long,md.solidearth.lovenumbers); 
+
+ne = length(mesh_elements); 
+nv = length(mesh_lat); 
+
+% compute lat,long at elemental centroids. 
+[late,longe] = latelonge(mesh_elements,mesh_lat,mesh_long); 
+
+% love numbers. 
+loveH = love_numbers.h;  % radial displacement (height) 
+loveK = love_numbers.k;  % gravitational potential (phi) 
+love_num=length(loveH)-1; % maximum Legendre degree 
+
+Grigid=zeros(nv,ne);			Gelastic=zeros(nv,ne);			Uelastic=zeros(nv,ne);  
+loveH_inf=loveH-ones(length(loveH),1).*loveH(love_num+1); 
+loveK_inf=loveK-ones(length(loveK),1).*loveK(love_num+1); 
+
+phi1=zeros(ne,1);        lambda1=zeros(ne,1); 
+phi2=late/180*pi;			 lambda2=longe/180*pi; 
+delPhi=zeros(nv,1);		 delLambda=zeros(nv,1); 
+% refine in the nearfield.
+theta_rad_nearfield = [0:0.001:0.01]; 
+theta_rad_farfield = [0.01:0.01:180]; 
+theta_rad = unique([theta_rad_nearfield theta_rad_farfield])*pi/180;  
+xx=cos(theta_rad); 
+legendreP=p_polynomial_value(length(xx),love_num,xx'); 
+elast_loveK=(loveK(love_num+1).*0.5./sin(0.5.*theta_rad))'...
+	+ sum(bsxfun(@times,legendreP,loveK_inf'),2); 
+elast_loveH=(loveH(love_num+1).*0.5./sin(0.5.*theta_rad))'...
+	+ sum(bsxfun(@times,legendreP,loveH_inf'),2); 
+
+qq=1; 
+for j=1:nv 
+	phi1(:,1)=mesh_lat(j)./180.*pi;	lambda1(:,1)=mesh_long(j)./180.*pi; % size #vertices 
+	delPhi=abs(phi2-phi1);					delLambda=abs(lambda2-lambda1);
+	alpha=2.*asin(sqrt(sin(delPhi./2).^2+cos(phi1).*cos(phi2).*sin(delLambda./2).^2)); 
+	Grigid(j,:)=0.5./sin(0.5.*alpha); % analytical soln 
+	Gelastic(j,:)=interp1(xx,elast_loveK,cos(alpha)); 
+	Uelastic(j,:)=interp1(xx,elast_loveH,cos(alpha)); 
+	if (j==500*qq)
+		display([num2str(j),' of ', num2str(nv),' vertices done!']);
+		qq=qq+1; 
+	end 
+end  
+
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/adhikari2016GMD_slr_solver/latelonge.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/adhikari2016GMD_slr_solver/latelonge.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/adhikari2016GMD_slr_solver/latelonge.m	(revision 27955)
@@ -0,0 +1,47 @@
+function [late,longe] = latelonge(mesh_elements,mesh_lat,mesh_long) 
+%latelonge :: computes lat,long at elemental centroids on spherical surface
+%
+%   Usage:
+%      [late,longe]=latelonge(md.mesh.elements,md.mesh.lat,md.mesh.long) 
+
+ne = length(mesh_elements); 
+nv = length(mesh_lat); 
+
+% lat -> [0,180]; long -> [0,360] to compute centroids 
+lat=90-mesh_lat;		lon=mesh_long; 
+lon(lon<0)=180+(180+lon(lon<0)); 
+
+ax_0=lat(mesh_elements(:,1)); ay_0=lon(mesh_elements(:,1)); 
+bx_0=lat(mesh_elements(:,2)); by_0=lon(mesh_elements(:,2)); 
+cx_0=lat(mesh_elements(:,3)); cy_0=lon(mesh_elements(:,3)); 
+% find whether long is 0 or 360! This is important to compute centroids as well as elemental area 
+for ii=1:ne 
+	if (min([ay_0(ii),by_0(ii),cy_0(ii)])==0 && max([ay_0(ii),by_0(ii),cy_0(ii)])>180)
+		if ay_0(ii)==0
+			ay_0(ii)=360;
+		end 
+		if by_0(ii)==0
+			by_0(ii)=360; 
+		end 
+		if cy_0(ii)==0 
+			cy_0(ii)=360; 
+		end
+	end 
+end
+% correction at the north pole 
+ay_0(ax_0==0)=(by_0(ax_0==0)+cy_0(ax_0==0))./2; 
+by_0(bx_0==0)=(cy_0(bx_0==0)+ay_0(bx_0==0))./2; 
+cy_0(cx_0==0)=(ay_0(cx_0==0)+by_0(cx_0==0))./2; 
+% correction at the south pole 
+ay_0(ax_0==180)=(by_0(ax_0==180)+cy_0(ax_0==180))./2; 
+by_0(bx_0==180)=(cy_0(bx_0==180)+ay_0(bx_0==180))./2; 
+cy_0(cx_0==180)=(ay_0(cx_0==180)+by_0(cx_0==180))./2; 
+% 
+late=(ax_0+bx_0+cx_0)/3; 
+longe=(ay_0+by_0+cy_0)/3;
+
+% back to [-90 90] [-180 180] ranges. 
+late = 90-late; 
+longe(longe>180) = longe(longe>180)-360; 
+
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/adhikari2016GMD_slr_solver/rotationalfeedback.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/adhikari2016GMD_slr_solver/rotationalfeedback.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/adhikari2016GMD_slr_solver/rotationalfeedback.m	(revision 27955)
@@ -0,0 +1,53 @@
+function [rsl_rot] = rotationalfeedback(index,lat,long,para_rot) 
+%rotationalfeedback :: computes rotational feedback for slr based on SESAW method. 
+% 
+%   Usage:
+%      rsl = otationalfeedback(md.mesh.elements,md.mesh.lat,md.mesh.long,para_rot) 
+%      
+%      para_rot.area_element =  para.area_element [m^2]; 
+%      para_rot.loads_element = surface loads (ice, terrestrial water storae, sea level) [m] 
+%      para_rot.loads_density = surface loads (ice, freshwater, ocean water) density [kg.m^3];  
+% 
+%      para_rot.earth_radius = mean radius of the Earth [m] 
+%      para_rot.load_love_k2 = degree 2 load love number k  
+%      para_rot.tide_love_k2 = degree 2 tide love number k  
+%      para_rot.tide_love_h2 = degree 2 tide love number h 
+%      para_rot.tide_love_k2secular = degree 2 secular tide love number k  
+%      para_rot.moi_p = polar moment of inertia [kg m^2]  
+%      para_rot.moi_e = mean equatorial moment of inertia [kg m^2]  
+%      para_rot.omega = mean rotational velocity of earth [rad per second]  
+
+area_element = para_rot.area_element; 
+loads = para_rot.loads_element;   
+rho_loads = para_rot.loads_density;  
+re = para_rot.earth_radius;   
+load_love_k2 = para_rot.load_love_k2; 
+tide_love_k2 = para_rot.tide_love_k2; 
+tide_love_h2 = para_rot.tide_love_h2;  
+tide_love_k2secular =para_rot.tide_love_k2secular;  
+moi_p = para_rot.moi_p;  
+moi_e = para_rot.moi_e;  
+omega = para_rot.omega;  
+
+% compute lat,long at elemental centroids. 
+[late,longe] = latelonge(index,lat,long); 
+lat = lat*pi/180;    long = long*pi/180; 
+late= late*pi/180;   longe = longe*pi/180; 
+
+% Perturbation terms for moment of inertia (moi_list):
+% computed analytically (see Wu & Peltier, eqs 10 & 32); also consistent with my GMD formulation!
+moi_list_1 = -re^2 *rho_loads*sum((loads.*area_element).*(sin(late).*cos(late).*cos(longe))); 
+moi_list_2 = -re^2 *rho_loads*sum((loads.*area_element).*(sin(late).*cos(late).*sin(longe))); 
+moi_list_3 =  re^2 *rho_loads*sum((loads.*area_element).*(1-sin(late).^2)); 
+
+% compute perturbation terms for angular velocity vector: 
+m1 = 1/(1-tide_love_k2/tide_love_k2secular) * (1+load_love_k2)/(moi_p-moi_e) * moi_list_1;
+m2 = 1/(1-tide_love_k2/tide_love_k2secular) * (1+load_love_k2)/(moi_p-moi_e) * moi_list_2;
+m3 = -(1+load_love_k2)/moi_p * moi_list_3;   % term associated with fluid number (3-order-of-magnitude smaller) is negelected
+
+% Green's function (1+k_2-h_2/g): checked against Glenn Milne's thesis Chapter 3 (eqs: 3.3-4, 3.10-11)
+% Perturbation terms for angular velocity vector (m1, m2, m3): checked against Mitrovica (2005 Appendix) & Jensen et al (2013 Appendix A3)
+% Sea level rotational feedback: checked against GMD eqs 8-9 (only first order terms, i.e., degree 2 order 0 & 1 considered)
+% only first order terms are considered now: 
+rsl_rot = ((1.0+tide_love_k2-tide_love_h2)/9.81)*(omega*re)^2*(-m3/6.0 + 0.5*m3*cos(2*lat) - 0.5*sin(2*lat).*(m1*cos(long)+m2*sin(long)));
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/spada_elastic_loading_deg_h_l_k
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/spada_elastic_loading_deg_h_l_k	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/spada_elastic_loading_deg_h_l_k	(revision 27955)
@@ -0,0 +1,256 @@
+   1.0000000e+00  -1.0174843e+00  -1.0812225e+00  -1.0000000e+00
+   2.0000000e+00  -4.5391558e-01  -1.2822149e-01  -2.4398316e-01
+   3.0000000e+00  -4.6059872e-01  -6.7237923e-02  -1.6379886e-01
+   4.0000000e+00  -4.5309444e-01  -5.5499093e-02  -1.1738574e-01
+   5.0000000e+00  -4.6928802e-01  -5.2118844e-02  -9.4729633e-02
+   6.0000000e+00  -5.0250864e-01  -4.9400247e-02  -8.2798997e-02
+   7.0000000e+00  -5.4461057e-01  -4.6511227e-02  -7.5661973e-02
+   8.0000000e+00  -5.9099136e-01  -4.3533330e-02  -7.0876960e-02
+   9.0000000e+00  -6.3929293e-01  -4.0574433e-02  -6.7382243e-02
+   1.0000000e+01  -6.8826078e-01  -3.7696411e-02  -6.4667126e-02
+   1.1000000e+01  -7.3715675e-01  -3.4933543e-02  -6.2457221e-02
+   1.2000000e+01  -7.8549164e-01  -3.2306343e-02  -6.0590006e-02
+   1.3000000e+01  -8.3290879e-01  -2.9827453e-02  -5.8961962e-02
+   1.4000000e+01  -8.7913342e-01  -2.7503986e-02  -5.7503906e-02
+   1.5000000e+01  -9.2394969e-01  -2.5338734e-02  -5.6168242e-02
+   1.6000000e+01  -9.6718906e-01  -2.3331053e-02  -5.4921701e-02
+   1.7000000e+01  -1.0087235e+00  -2.1477633e-02  -5.3740879e-02
+   1.8000000e+01  -1.0484605e+00  -1.9773171e-02  -5.2609330e-02
+   1.9000000e+01  -1.0863395e+00  -1.8210945e-02  -5.1515594e-02
+   2.0000000e+01  -1.1223277e+00  -1.6783281e-02  -5.0451814e-02
+   2.1000000e+01  -1.1564172e+00  -1.5481933e-02  -4.9412744e-02
+   2.2000000e+01  -1.1886217e+00  -1.4298375e-02  -4.8395026e-02
+   2.3000000e+01  -1.2189730e+00  -1.3224031e-02  -4.7396659e-02
+   2.4000000e+01  -1.2475181e+00  -1.2250448e-02  -4.6416594e-02
+   2.5000000e+01  -1.2743164e+00  -1.1369421e-02  -4.5454440e-02
+   2.6000000e+01  -1.2994371e+00  -1.0573091e-02  -4.4510240e-02
+   2.7000000e+01  -1.3229563e+00  -9.8540048e-03  -4.3584303e-02
+   2.8000000e+01  -1.3449552e+00  -9.2051531e-03  -4.2677085e-02
+   2.9000000e+01  -1.3655182e+00  -8.6199962e-03  -4.1789098e-02
+   3.0000000e+01  -1.3847310e+00  -8.0924688e-03  -4.0920852e-02
+   3.1000000e+01  -1.4026793e+00  -7.6169763e-03  -4.0072805e-02
+   3.2000000e+01  -1.4194476e+00  -7.1883830e-03  -3.9245346e-02
+   3.3000000e+01  -1.4351185e+00  -6.8019936e-03  -3.8438771e-02
+   3.4000000e+01  -1.4497718e+00  -6.4535307e-03  -3.7653280e-02
+   3.5000000e+01  -1.4634840e+00  -6.1391097e-03  -3.6888976e-02
+   3.6000000e+01  -1.4763279e+00  -5.8552122e-03  -3.6145868e-02
+   3.7000000e+01  -1.4883726e+00  -5.5986592e-03  -3.5423873e-02
+   3.8000000e+01  -1.4996830e+00  -5.3665837e-03  -3.4722831e-02
+   3.9000000e+01  -1.5103200e+00  -5.1564052e-03  -3.4042508e-02
+   4.0000000e+01  -1.5203405e+00  -4.9658039e-03  -3.3382607e-02
+   4.1000000e+01  -1.5297975e+00  -4.7926976e-03  -3.2742777e-02
+   4.2000000e+01  -1.5387402e+00  -4.6352193e-03  -3.2122622e-02
+   4.3000000e+01  -1.5472139e+00  -4.4916962e-03  -3.1521708e-02
+   4.4000000e+01  -1.5552606e+00  -4.3606312e-03  -3.0939571e-02
+   4.5000000e+01  -1.5629191e+00  -4.2406852e-03  -3.0375725e-02
+   4.6000000e+01  -1.5702248e+00  -4.1306611e-03  -2.9829666e-02
+   4.7000000e+01  -1.5772104e+00  -4.0294892e-03  -2.9300878e-02
+   4.8000000e+01  -1.5839058e+00  -3.9362144e-03  -2.8788839e-02
+   4.9000000e+01  -1.5903384e+00  -3.8499839e-03  -2.8293024e-02
+   5.0000000e+01  -1.5965331e+00  -3.7700368e-03  -2.7812905e-02
+   5.1000000e+01  -1.6025129e+00  -3.6956940e-03  -2.7347963e-02
+   5.2000000e+01  -1.6082983e+00  -3.6263503e-03  -2.6897680e-02
+   5.3000000e+01  -1.6139085e+00  -3.5614658e-03  -2.6461548e-02
+   5.4000000e+01  -1.6193607e+00  -3.5005594e-03  -2.6039069e-02
+   5.5000000e+01  -1.6246704e+00  -3.4432022e-03  -2.5629754e-02
+   5.6000000e+01  -1.6298519e+00  -3.3890124e-03  -2.5233126e-02
+   5.7000000e+01  -1.6349180e+00  -3.3376497e-03  -2.4848723e-02
+   5.8000000e+01  -1.6398805e+00  -3.2888115e-03  -2.4476093e-02
+   5.9000000e+01  -1.6447497e+00  -3.2422280e-03  -2.4114801e-02
+   6.0000000e+01  -1.6495354e+00  -3.1976595e-03  -2.3764423e-02
+   6.1000000e+01  -1.6542460e+00  -3.1548927e-03  -2.3424550e-02
+   6.2000000e+01  -1.6588893e+00  -3.1137380e-03  -2.3094789e-02
+   6.3000000e+01  -1.6634723e+00  -3.0740268e-03  -2.2774758e-02
+   6.4000000e+01  -1.6680013e+00  -3.0356095e-03  -2.2464090e-02
+   6.5000000e+01  -1.6724818e+00  -2.9983532e-03  -2.2162433e-02
+   6.6000000e+01  -1.6769188e+00  -2.9621400e-03  -2.1869446e-02
+   6.7000000e+01  -1.6813170e+00  -2.9268653e-03  -2.1584804e-02
+   6.8000000e+01  -1.6856803e+00  -2.8924365e-03  -2.1308191e-02
+   6.9000000e+01  -1.6900123e+00  -2.8587714e-03  -2.1039308e-02
+   7.0000000e+01  -1.6943161e+00  -2.8257976e-03  -2.0777864e-02
+   7.1000000e+01  -1.6985947e+00  -2.7934507e-03  -2.0523581e-02
+   7.2000000e+01  -1.7028504e+00  -2.7616741e-03  -2.0276193e-02
+   7.3000000e+01  -1.7070854e+00  -2.7304177e-03  -2.0035445e-02
+   7.4000000e+01  -1.7113018e+00  -2.6996374e-03  -1.9801092e-02
+   7.5000000e+01  -1.7155011e+00  -2.6692944e-03  -1.9572897e-02
+   7.6000000e+01  -1.7196848e+00  -2.6393545e-03  -1.9350637e-02
+   7.7000000e+01  -1.7238542e+00  -2.6097878e-03  -1.9134095e-02
+   7.8000000e+01  -1.7280104e+00  -2.5805679e-03  -1.8923064e-02
+   7.9000000e+01  -1.7321542e+00  -2.5516718e-03  -1.8717346e-02
+   8.0000000e+01  -1.7362865e+00  -2.5230796e-03  -1.8516750e-02
+   8.1000000e+01  -1.7404079e+00  -2.4947735e-03  -1.8321094e-02
+   8.2000000e+01  -1.7445188e+00  -2.4667386e-03  -1.8130204e-02
+   8.3000000e+01  -1.7486198e+00  -2.4389615e-03  -1.7943911e-02
+   8.4000000e+01  -1.7527112e+00  -2.4114308e-03  -1.7762056e-02
+   8.5000000e+01  -1.7567931e+00  -2.3841367e-03  -1.7584485e-02
+   8.6000000e+01  -1.7608658e+00  -2.3570708e-03  -1.7411049e-02
+   8.7000000e+01  -1.7649294e+00  -2.3302259e-03  -1.7241607e-02
+   8.8000000e+01  -1.7689838e+00  -2.3035958e-03  -1.7076023e-02
+   8.9000000e+01  -1.7730291e+00  -2.2771754e-03  -1.6914167e-02
+   9.0000000e+01  -1.7770652e+00  -2.2509603e-03  -1.6755915e-02
+   9.1000000e+01  -1.7810920e+00  -2.2249469e-03  -1.6601145e-02
+   9.2000000e+01  -1.7851093e+00  -2.1991322e-03  -1.6449744e-02
+   9.3000000e+01  -1.7891171e+00  -2.1735138e-03  -1.6301600e-02
+   9.4000000e+01  -1.7931149e+00  -2.1480897e-03  -1.6156607e-02
+   9.5000000e+01  -1.7971028e+00  -2.1228584e-03  -1.6014664e-02
+   9.6000000e+01  -1.8010803e+00  -2.0978186e-03  -1.5875673e-02
+   9.7000000e+01  -1.8050472e+00  -2.0729696e-03  -1.5739539e-02
+   9.8000000e+01  -1.8090033e+00  -2.0483106e-03  -1.5606173e-02
+   9.9000000e+01  -1.8129483e+00  -2.0238413e-03  -1.5475487e-02
+   1.0000000e+02  -1.8168817e+00  -1.9995615e-03  -1.5347398e-02
+   1.0100000e+02  -1.8208034e+00  -1.9754711e-03  -1.5221826e-02
+   1.0200000e+02  -1.8247130e+00  -1.9515702e-03  -1.5098694e-02
+   1.0300000e+02  -1.8286102e+00  -1.9278589e-03  -1.4977927e-02
+   1.0400000e+02  -1.8324947e+00  -1.9043375e-03  -1.4859455e-02
+   1.0500000e+02  -1.8363660e+00  -1.8810063e-03  -1.4743207e-02
+   1.0600000e+02  -1.8402240e+00  -1.8578657e-03  -1.4629119e-02
+   1.0700000e+02  -1.8440681e+00  -1.8349161e-03  -1.4517126e-02
+   1.0800000e+02  -1.8478982e+00  -1.8121578e-03  -1.4407167e-02
+   1.0900000e+02  -1.8517139e+00  -1.7895912e-03  -1.4299183e-02
+   1.1000000e+02  -1.8555148e+00  -1.7672168e-03  -1.4193117e-02
+   1.1100000e+02  -1.8593007e+00  -1.7450351e-03  -1.4088914e-02
+   1.1200000e+02  -1.8630711e+00  -1.7230462e-03  -1.3986521e-02
+   1.1300000e+02  -1.8668259e+00  -1.7012507e-03  -1.3885888e-02
+   1.1400000e+02  -1.8705646e+00  -1.6796489e-03  -1.3786964e-02
+   1.1500000e+02  -1.8742869e+00  -1.6582410e-03  -1.3689703e-02
+   1.1600000e+02  -1.8779926e+00  -1.6370273e-03  -1.3594059e-02
+   1.1700000e+02  -1.8816814e+00  -1.6160080e-03  -1.3499988e-02
+   1.1800000e+02  -1.8853529e+00  -1.5951834e-03  -1.3407447e-02
+   1.1900000e+02  -1.8890069e+00  -1.5745535e-03  -1.3316394e-02
+   1.2000000e+02  -1.8926431e+00  -1.5541185e-03  -1.3226791e-02
+   1.2100000e+02  -1.8962612e+00  -1.5338784e-03  -1.3138599e-02
+   1.2200000e+02  -1.8998610e+00  -1.5138331e-03  -1.3051780e-02
+   1.2300000e+02  -1.9034422e+00  -1.4939827e-03  -1.2966299e-02
+   1.2400000e+02  -1.9070045e+00  -1.4743270e-03  -1.2882122e-02
+   1.2500000e+02  -1.9105477e+00  -1.4548659e-03  -1.2799214e-02
+   1.2600000e+02  -1.9140716e+00  -1.4355992e-03  -1.2717543e-02
+   1.2700000e+02  -1.9175759e+00  -1.4165266e-03  -1.2637079e-02
+   1.2800000e+02  -1.9210604e+00  -1.3976479e-03  -1.2557791e-02
+   1.2900000e+02  -1.9245249e+00  -1.3789627e-03  -1.2479649e-02
+   1.3000000e+02  -1.9279692e+00  -1.3604707e-03  -1.2402626e-02
+   1.3100000e+02  -1.9313930e+00  -1.3421713e-03  -1.2326694e-02
+   1.3200000e+02  -1.9347962e+00  -1.3240642e-03  -1.2251826e-02
+   1.3300000e+02  -1.9381787e+00  -1.3061488e-03  -1.2177997e-02
+   1.3400000e+02  -1.9415401e+00  -1.2884245e-03  -1.2105181e-02
+   1.3500000e+02  -1.9448804e+00  -1.2708908e-03  -1.2033356e-02
+   1.3600000e+02  -1.9481994e+00  -1.2535470e-03  -1.1962497e-02
+   1.3700000e+02  -1.9514969e+00  -1.2363924e-03  -1.1892581e-02
+   1.3800000e+02  -1.9547728e+00  -1.2194264e-03  -1.1823588e-02
+   1.3900000e+02  -1.9580269e+00  -1.2026480e-03  -1.1755495e-02
+   1.4000000e+02  -1.9612591e+00  -1.1860567e-03  -1.1688283e-02
+   1.4100000e+02  -1.9644693e+00  -1.1696514e-03  -1.1621930e-02
+   1.4200000e+02  -1.9676573e+00  -1.1534315e-03  -1.1556419e-02
+   1.4300000e+02  -1.9708230e+00  -1.1373959e-03  -1.1491730e-02
+   1.4400000e+02  -1.9739663e+00  -1.1215437e-03  -1.1427844e-02
+   1.4500000e+02  -1.9770872e+00  -1.1058741e-03  -1.1364745e-02
+   1.4600000e+02  -1.9801855e+00  -1.0903860e-03  -1.1302415e-02
+   1.4700000e+02  -1.9832611e+00  -1.0750784e-03  -1.1240837e-02
+   1.4800000e+02  -1.9863139e+00  -1.0599503e-03  -1.1179996e-02
+   1.4900000e+02  -1.9893439e+00  -1.0450006e-03  -1.1119876e-02
+   1.5000000e+02  -1.9923510e+00  -1.0302282e-03  -1.1060461e-02
+   1.5100000e+02  -1.9953352e+00  -1.0156321e-03  -1.1001737e-02
+   1.5200000e+02  -1.9982963e+00  -1.0012110e-03  -1.0943689e-02
+   1.5300000e+02  -2.0012343e+00  -9.8696387e-04  -1.0886304e-02
+   1.5400000e+02  -2.0041492e+00  -9.7288951e-04  -1.0829568e-02
+   1.5500000e+02  -2.0070410e+00  -9.5898673e-04  -1.0773467e-02
+   1.5600000e+02  -2.0099095e+00  -9.4525432e-04  -1.0717990e-02
+   1.5700000e+02  -2.0127548e+00  -9.3169105e-04  -1.0663123e-02
+   1.5800000e+02  -2.0155769e+00  -9.1829568e-04  -1.0608855e-02
+   1.5900000e+02  -2.0183757e+00  -9.0506695e-04  -1.0555173e-02
+   1.6000000e+02  -2.0211512e+00  -8.9200360e-04  -1.0502067e-02
+   1.6100000e+02  -2.0239035e+00  -8.7910434e-04  -1.0449525e-02
+   1.6200000e+02  -2.0266324e+00  -8.6636787e-04  -1.0397537e-02
+   1.6300000e+02  -2.0293381e+00  -8.5379289e-04  -1.0346092e-02
+   1.6400000e+02  -2.0320204e+00  -8.4137808e-04  -1.0295179e-02
+   1.6500000e+02  -2.0346795e+00  -8.2912211e-04  -1.0244790e-02
+   1.6600000e+02  -2.0373154e+00  -8.1702363e-04  -1.0194913e-02
+   1.6700000e+02  -2.0399280e+00  -8.0508131e-04  -1.0145541e-02
+   1.6800000e+02  -2.0425174e+00  -7.9329379e-04  -1.0096663e-02
+   1.6900000e+02  -2.0450836e+00  -7.8165970e-04  -1.0048270e-02
+   1.7000000e+02  -2.0476267e+00  -7.7017769e-04  -1.0000355e-02
+   1.7100000e+02  -2.0501467e+00  -7.5884637e-04  -9.9529078e-03
+   1.7200000e+02  -2.0526436e+00  -7.4766437e-04  -9.9059211e-03
+   1.7300000e+02  -2.0551175e+00  -7.3663030e-04  -9.8593867e-03
+   1.7400000e+02  -2.0575685e+00  -7.2574279e-04  -9.8132966e-03
+   1.7500000e+02  -2.0599965e+00  -7.1500043e-04  -9.7676433e-03
+   1.7600000e+02  -2.0624018e+00  -7.0440185e-04  -9.7224194e-03
+   1.7700000e+02  -2.0647842e+00  -6.9394563e-04  -9.6776175e-03
+   1.7800000e+02  -2.0671439e+00  -6.8363040e-04  -9.6332307e-03
+   1.7900000e+02  -2.0694810e+00  -6.7345475e-04  -9.5892521e-03
+   1.8000000e+02  -2.0717955e+00  -6.6341728e-04  -9.5456749e-03
+   1.8100000e+02  -2.0740875e+00  -6.5351661e-04  -9.5024926e-03
+   1.8200000e+02  -2.0763570e+00  -6.4375133e-04  -9.4596988e-03
+   1.8300000e+02  -2.0786043e+00  -6.3412004e-04  -9.4172873e-03
+   1.8400000e+02  -2.0808293e+00  -6.2462136e-04  -9.3752520e-03
+   1.8500000e+02  -2.0830321e+00  -6.1525390e-04  -9.3335870e-03
+   1.8600000e+02  -2.0852129e+00  -6.0601626e-04  -9.2922865e-03
+   1.8700000e+02  -2.0873717e+00  -5.9690706e-04  -9.2513449e-03
+   1.8800000e+02  -2.0895086e+00  -5.8792491e-04  -9.2107566e-03
+   1.8900000e+02  -2.0916238e+00  -5.7906844e-04  -9.1705162e-03
+   1.9000000e+02  -2.0937173e+00  -5.7033627e-04  -9.1306186e-03
+   1.9100000e+02  -2.0957892e+00  -5.6172703e-04  -9.0910585e-03
+   1.9200000e+02  -2.0978396e+00  -5.5323935e-04  -9.0518309e-03
+   1.9300000e+02  -2.0998687e+00  -5.4487188e-04  -9.0129310e-03
+   1.9400000e+02  -2.1018765e+00  -5.3662324e-04  -8.9743540e-03
+   1.9500000e+02  -2.1038633e+00  -5.2849210e-04  -8.9360952e-03
+   1.9600000e+02  -2.1058290e+00  -5.2047711e-04  -8.8981501e-03
+   1.9700000e+02  -2.1077738e+00  -5.1257692e-04  -8.8605141e-03
+   1.9800000e+02  -2.1096979e+00  -5.0479021e-04  -8.8231829e-03
+   1.9900000e+02  -2.1116012e+00  -4.9711565e-04  -8.7861522e-03
+   2.0000000e+02  -2.1134841e+00  -4.8955192e-04  -8.7494180e-03
+   2.0100000e+02  -2.1153466e+00  -4.8209771e-04  -8.7129760e-03
+   2.0200000e+02  -2.1171888e+00  -4.7475171e-04  -8.6768223e-03
+   2.0300000e+02  -2.1190108e+00  -4.6751262e-04  -8.6409530e-03
+   2.0400000e+02  -2.1208128e+00  -4.6037917e-04  -8.6053643e-03
+   2.0500000e+02  -2.1225950e+00  -4.5335005e-04  -8.5700524e-03
+   2.0600000e+02  -2.1243573e+00  -4.4642401e-04  -8.5350138e-03
+   2.0700000e+02  -2.1261001e+00  -4.3959977e-04  -8.5002447e-03
+   2.0800000e+02  -2.1278234e+00  -4.3287608e-04  -8.4657417e-03
+   2.0900000e+02  -2.1295273e+00  -4.2625169e-04  -8.4315015e-03
+   2.1000000e+02  -2.1312120e+00  -4.1972536e-04  -8.3975205e-03
+   2.1100000e+02  -2.1328776e+00  -4.1329586e-04  -8.3637956e-03
+   2.1200000e+02  -2.1345243e+00  -4.0696196e-04  -8.3303235e-03
+   2.1300000e+02  -2.1361522e+00  -4.0072247e-04  -8.2971011e-03
+   2.1400000e+02  -2.1377614e+00  -3.9457616e-04  -8.2641252e-03
+   2.1500000e+02  -2.1393521e+00  -3.8852186e-04  -8.2313929e-03
+   2.1600000e+02  -2.1409245e+00  -3.8255837e-04  -8.1989012e-03
+   2.1700000e+02  -2.1424786e+00  -3.7668452e-04  -8.1666472e-03
+   2.1800000e+02  -2.1440147e+00  -3.7089914e-04  -8.1346279e-03
+   2.1900000e+02  -2.1455328e+00  -3.6520108e-04  -8.1028407e-03
+   2.2000000e+02  -2.1470331e+00  -3.5958920e-04  -8.0712828e-03
+   2.2100000e+02  -2.1485157e+00  -3.5406235e-04  -8.0399515e-03
+   2.2200000e+02  -2.1499809e+00  -3.4861942e-04  -8.0088441e-03
+   2.2300000e+02  -2.1514287e+00  -3.4325929e-04  -7.9779581e-03
+   2.2400000e+02  -2.1528592e+00  -3.3798084e-04  -7.9472910e-03
+   2.2500000e+02  -2.1542728e+00  -3.3278299e-04  -7.9168402e-03
+   2.2600000e+02  -2.1556693e+00  -3.2766466e-04  -7.8866033e-03
+   2.2700000e+02  -2.1570492e+00  -3.2262476e-04  -7.8565780e-03
+   2.2800000e+02  -2.1584124e+00  -3.1766223e-04  -7.8267618e-03
+   2.2900000e+02  -2.1597591e+00  -3.1277601e-04  -7.7971524e-03
+   2.3000000e+02  -2.1610895e+00  -3.0796507e-04  -7.7677477e-03
+   2.3100000e+02  -2.1624037e+00  -3.0322837e-04  -7.7385453e-03
+   2.3200000e+02  -2.1637018e+00  -2.9856488e-04  -7.7095430e-03
+   2.3300000e+02  -2.1649841e+00  -2.9397360e-04  -7.6807388e-03
+   2.3400000e+02  -2.1662507e+00  -2.8945351e-04  -7.6521305e-03
+   2.3500000e+02  -2.1675016e+00  -2.8500363e-04  -7.6237161e-03
+   2.3600000e+02  -2.1687371e+00  -2.8062298e-04  -7.5954934e-03
+   2.3700000e+02  -2.1699573e+00  -2.7631057e-04  -7.5674606e-03
+   2.3800000e+02  -2.1711623e+00  -2.7206546e-04  -7.5396155e-03
+   2.3900000e+02  -2.1723524e+00  -2.6788668e-04  -7.5119564e-03
+   2.4000000e+02  -2.1735275e+00  -2.6377331e-04  -7.4844812e-03
+   2.4100000e+02  -2.1746880e+00  -2.5972440e-04  -7.4571882e-03
+   2.4200000e+02  -2.1758339e+00  -2.5573903e-04  -7.4300754e-03
+   2.4300000e+02  -2.1769653e+00  -2.5181631e-04  -7.4031411e-03
+   2.4400000e+02  -2.1780825e+00  -2.4795532e-04  -7.3763835e-03
+   2.4500000e+02  -2.1791855e+00  -2.4415518e-04  -7.3498008e-03
+   2.4600000e+02  -2.1802746e+00  -2.4041500e-04  -7.3233913e-03
+   2.4700000e+02  -2.1813498e+00  -2.3673392e-04  -7.2971533e-03
+   2.4800000e+02  -2.1824113e+00  -2.3311108e-04  -7.2710852e-03
+   2.4900000e+02  -2.1834592e+00  -2.2954563e-04  -7.2451852e-03
+   2.5000000e+02  -2.1844936e+00  -2.2603672e-04  -7.2194519e-03
+   2.5100000e+02  -2.1855148e+00  -2.2258354e-04  -7.1938835e-03
+   2.5200000e+02  -2.1865229e+00  -2.1918525e-04  -7.1684785e-03
+   2.5300000e+02  -2.1875179e+00  -2.1584105e-04  -7.1432354e-03
+   2.5400000e+02  -2.1885001e+00  -2.1255014e-04  -7.1181527e-03
+   2.5500000e+02  -2.1894696e+00  -2.0931172e-04  -7.0932287e-03
+   2.5600000e+02  -2.1904264e+00  -2.0612502e-04  -7.0684622e-03
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/spada_elastic_tidal_deg_h_l_k
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/spada_elastic_tidal_deg_h_l_k	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/spada_elastic_tidal_deg_h_l_k	(revision 27955)
@@ -0,0 +1,255 @@
+	2.0000000e+00   5.4744782e-01   1.1029682e-01   3.0346466e-01
+   3.0000000e+00   2.5766837e-01   2.2788734e-02   9.3869509e-02
+   4.0000000e+00   1.5957356e-01   1.2562200e-02   4.2187811e-02
+   5.0000000e+00   1.1921659e-01   9.3177606e-03   2.4486955e-02
+   6.0000000e+00   9.9436022e-02   7.2994385e-03   1.6637026e-02
+   7.0000000e+00   8.8064364e-02   5.8379801e-03   1.2402391e-02
+   8.0000000e+00   8.0668711e-02   4.7430749e-03   9.7917502e-03
+   9.0000000e+00   7.5415348e-02   3.9037826e-03   8.0331055e-03
+   1.0000000e+01   7.1441106e-02   3.2464521e-03   6.7739794e-03
+   1.1000000e+01   6.8288713e-02   2.7219539e-03   5.8314917e-03
+   1.2000000e+01   6.5691337e-02   2.2971237e-03   5.1013304e-03
+   1.3000000e+01   6.3481712e-02   1.9489854e-03   4.5197498e-03
+   1.4000000e+01   6.1549656e-02   1.6611085e-03   4.0457497e-03
+   1.5000000e+01   5.9820137e-02   1.4213753e-03   3.6518954e-03
+   1.6000000e+01   5.8240933e-02   1.2206063e-03   3.3192323e-03
+   1.7000000e+01   5.6775186e-02   1.0516936e-03   3.0343073e-03
+   1.8000000e+01   5.5396676e-02   9.0903588e-04   2.7873457e-03
+   1.9000000e+01   5.4086692e-02   7.8815649e-04   2.5710971e-03
+   2.0000000e+01   5.2831896e-02   6.8543736e-04   2.3800814e-03
+   2.1000000e+01   5.1622829e-02   5.9792755e-04   2.2100853e-03
+   2.2000000e+01   5.0452844e-02   5.2320223e-04   2.0578178e-03
+   2.3000000e+01   4.9317329e-02   4.5925655e-04   1.9206701e-03
+   2.4000000e+01   4.8213140e-02   4.0442439e-04   1.7965459e-03
+   2.5000000e+01   4.7138179e-02   3.5731516e-04   1.6837387e-03
+   2.6000000e+01   4.6091082e-02   3.1676404e-04   1.5808426e-03
+   2.7000000e+01   4.5070989e-02   2.8179230e-04   1.4866865e-03
+   2.8000000e+01   4.4077369e-02   2.5157544e-04   1.4002843e-03
+   2.9000000e+01   4.3109896e-02   2.2541725e-04   1.3207982e-03
+   3.0000000e+01   4.2168361e-02   2.0272872e-04   1.2475097e-03
+   3.1000000e+01   4.1252603e-02   1.8301062e-04   1.1797982e-03
+   3.2000000e+01   4.0362469e-02   1.6583915e-04   1.1171231e-03
+   3.3000000e+01   3.9497782e-02   1.5085402e-04   1.0590112e-03
+   3.4000000e+01   3.8658325e-02   1.3774848e-04   1.0050453e-03
+   3.5000000e+01   3.7843832e-02   1.2626105e-04   9.5485603e-04
+   3.6000000e+01   3.7053983e-02   1.1616856e-04   9.0811484e-04
+   3.7000000e+01   3.6288401e-02   1.0728028e-04   8.6452817e-04
+   3.8000000e+01   3.5546664e-02   9.9433027e-05   8.2383285e-04
+   3.9000000e+01   3.4828300e-02   9.2487008e-05   7.8579226e-04
+   4.0000000e+01   3.4132800e-02   8.6322336e-05   7.5019296e-04
+   4.1000000e+01   3.3459619e-02   8.0836065e-05   7.1684200e-04
+   4.2000000e+01   3.2808187e-02   7.5939696e-05   6.8556452e-04
+   4.3000000e+01   3.2177910e-02   7.1557059e-05   6.5620174e-04
+   4.4000000e+01   3.1568180e-02   6.7622515e-05   6.2860920e-04
+   4.5000000e+01   3.0978380e-02   6.4079438e-05   6.0265527e-04
+   4.6000000e+01   3.0407886e-02   6.0878914e-05   5.7821978e-04
+   4.7000000e+01   2.9856071e-02   5.7978646e-05   5.5519291e-04
+   4.8000000e+01   2.9322314e-02   5.5342011e-05   5.3347412e-04
+   4.9000000e+01   2.8805995e-02   5.2937264e-05   5.1297126e-04
+   5.0000000e+01   2.8306505e-02   5.0736855e-05   4.9359979e-04
+   5.1000000e+01   2.7823245e-02   4.8716848e-05   4.7528203e-04
+   5.2000000e+01   2.7355627e-02   4.6856417e-05   4.5794653e-04
+   5.3000000e+01   2.6903076e-02   4.5137427e-05   4.4152754e-04
+   5.4000000e+01   2.6465033e-02   4.3544064e-05   4.2596441e-04
+   5.5000000e+01   2.6040955e-02   4.2062521e-05   4.1120124e-04
+   5.6000000e+01   2.5630313e-02   4.0680731e-05   3.9718639e-04
+   5.7000000e+01   2.5232595e-02   3.9388130e-05   3.8387212e-04
+   5.8000000e+01   2.4847308e-02   3.8175466e-05   3.7121428e-04
+   5.9000000e+01   2.4473973e-02   3.7034619e-05   3.5917199e-04
+   6.0000000e+01   2.4112130e-02   3.5958456e-05   3.4770736e-04
+   6.1000000e+01   2.3761336e-02   3.4940703e-05   3.3678525e-04
+   6.2000000e+01   2.3421162e-02   3.3975833e-05   3.2637305e-04
+   6.3000000e+01   2.3091198e-02   3.3058973e-05   3.1644044e-04
+   6.4000000e+01   2.2771049e-02   3.2185817e-05   3.0695926e-04
+   6.5000000e+01   2.2460336e-02   3.1352556e-05   2.9790328e-04
+   6.6000000e+01   2.2158694e-02   3.0555816e-05   2.8924810e-04
+   6.7000000e+01   2.1865775e-02   2.9792604e-05   2.8097096e-04
+   6.8000000e+01   2.1581242e-02   2.9060258e-05   2.7305064e-04
+   6.9000000e+01   2.1304775e-02   2.8356411e-05   2.6546736e-04
+   7.0000000e+01   2.1036066e-02   2.7678949e-05   2.5820261e-04
+   7.1000000e+01   2.0774820e-02   2.7025985e-05   2.5123912e-04
+   7.2000000e+01   2.0520754e-02   2.6395830e-05   2.4456071e-04
+   7.3000000e+01   2.0273597e-02   2.5786969e-05   2.3815227e-04
+   7.4000000e+01   2.0033091e-02   2.5198040e-05   2.3199963e-04
+   7.5000000e+01   1.9798987e-02   2.4627817e-05   2.2608950e-04
+   7.6000000e+01   1.9571046e-02   2.4075194e-05   2.2040945e-04
+   7.7000000e+01   1.9349043e-02   2.3539170e-05   2.1494778e-04
+   7.8000000e+01   1.9132757e-02   2.3018837e-05   2.0969354e-04
+   7.9000000e+01   1.8921982e-02   2.2513371e-05   2.0463641e-04
+   8.0000000e+01   1.8716516e-02   2.2022022e-05   1.9976670e-04
+   8.1000000e+01   1.8516169e-02   2.1544104e-05   1.9507530e-04
+   8.2000000e+01   1.8320757e-02   2.1078989e-05   1.9055363e-04
+   8.3000000e+01   1.8130105e-02   2.0626101e-05   1.8619362e-04
+   8.4000000e+01   1.7944044e-02   2.0184912e-05   1.8198763e-04
+   8.5000000e+01   1.7762413e-02   1.9754933e-05   1.7792850e-04
+   8.6000000e+01   1.7585058e-02   1.9335712e-05   1.7400946e-04
+   8.7000000e+01   1.7411831e-02   1.8926831e-05   1.7022409e-04
+   8.8000000e+01   1.7242589e-02   1.8527902e-05   1.6656638e-04
+   8.9000000e+01   1.7077198e-02   1.8138561e-05   1.6303060e-04
+   9.0000000e+01   1.6915526e-02   1.7758472e-05   1.5961135e-04
+   9.1000000e+01   1.6757449e-02   1.7387317e-05   1.5630354e-04
+   9.2000000e+01   1.6602846e-02   1.7024800e-05   1.5310233e-04
+   9.3000000e+01   1.6451603e-02   1.6670642e-05   1.5000314e-04
+   9.4000000e+01   1.6303609e-02   1.6324579e-05   1.4700163e-04
+   9.5000000e+01   1.6158758e-02   1.5986364e-05   1.4409370e-04
+   9.6000000e+01   1.6016948e-02   1.5655761e-05   1.4127544e-04
+   9.7000000e+01   1.5878082e-02   1.5332547e-05   1.3854314e-04
+   9.8000000e+01   1.5742066e-02   1.5016511e-05   1.3589331e-04
+   9.9000000e+01   1.5608809e-02   1.4707452e-05   1.3332259e-04
+   1.0000000e+02   1.5478226e-02   1.4405176e-05   1.3082782e-04
+   1.0100000e+02   1.5350232e-02   1.4109502e-05   1.2840598e-04
+   1.0200000e+02   1.5224748e-02   1.3820252e-05   1.2605421e-04
+   1.0300000e+02   1.5101697e-02   1.3537261e-05   1.2376977e-04
+   1.0400000e+02   1.4981005e-02   1.3260365e-05   1.2155007e-04
+   1.0500000e+02   1.4862600e-02   1.2989411e-05   1.1939263e-04
+   1.0600000e+02   1.4746414e-02   1.2724249e-05   1.1729509e-04
+   1.0700000e+02   1.4632381e-02   1.2464737e-05   1.1525520e-04
+   1.0800000e+02   1.4520438e-02   1.2210736e-05   1.1327083e-04
+   1.0900000e+02   1.4410523e-02   1.1962113e-05   1.1133993e-04
+   1.1000000e+02   1.4302577e-02   1.1718739e-05   1.0946053e-04
+   1.1100000e+02   1.4196545e-02   1.1480491e-05   1.0763079e-04
+   1.1200000e+02   1.4092370e-02   1.1247247e-05   1.0584892e-04
+   1.1300000e+02   1.3990001e-02   1.1018891e-05   1.0411322e-04
+   1.1400000e+02   1.3889386e-02   1.0795311e-05   1.0242205e-04
+   1.1500000e+02   1.3790477e-02   1.0576397e-05   1.0077388e-04
+   1.1600000e+02   1.3693227e-02   1.0362042e-05   9.9167206e-05
+   1.1700000e+02   1.3597589e-02   1.0152145e-05   9.7600608e-05
+   1.1800000e+02   1.3503520e-02   9.9466043e-06   9.6072723e-05
+   1.1900000e+02   1.3410977e-02   9.7453233e-06   9.4582245e-05
+   1.2000000e+02   1.3319919e-02   9.5482073e-06   9.3127924e-05
+   1.2100000e+02   1.3230307e-02   9.3551644e-06   9.1708561e-05
+   1.2200000e+02   1.3142103e-02   9.1661051e-06   9.0323008e-05
+   1.2300000e+02   1.3055269e-02   8.9809423e-06   8.8970163e-05
+   1.2400000e+02   1.2969770e-02   8.7995912e-06   8.7648969e-05
+   1.2500000e+02   1.2885572e-02   8.6219692e-06   8.6358410e-05
+   1.2600000e+02   1.2802641e-02   8.4479957e-06   8.5097515e-05
+   1.2700000e+02   1.2720945e-02   8.2775922e-06   8.3865346e-05
+   1.2800000e+02   1.2640452e-02   8.1106822e-06   8.2661008e-05
+   1.2900000e+02   1.2561133e-02   7.9471910e-06   8.1483635e-05
+   1.3000000e+02   1.2482959e-02   7.7870457e-06   8.0332400e-05
+   1.3100000e+02   1.2405900e-02   7.6301755e-06   7.9206503e-05
+   1.3200000e+02   1.2329931e-02   7.4765107e-06   7.8105180e-05
+   1.3300000e+02   1.2255024e-02   7.3259839e-06   7.7027690e-05
+   1.3400000e+02   1.2181155e-02   7.1785287e-06   7.5973326e-05
+   1.3500000e+02   1.2108297e-02   7.0340807e-06   7.4941402e-05
+   1.3600000e+02   1.2036428e-02   6.8925768e-06   7.3931262e-05
+   1.3700000e+02   1.1965524e-02   6.7539553e-06   7.2942271e-05
+   1.3800000e+02   1.1895562e-02   6.6181561e-06   7.1973819e-05
+   1.3900000e+02   1.1826521e-02   6.4851203e-06   7.1025318e-05
+   1.4000000e+02   1.1758379e-02   6.3547904e-06   7.0096200e-05
+   1.4100000e+02   1.1691116e-02   6.2271103e-06   6.9185919e-05
+   1.4200000e+02   1.1624713e-02   6.1020249e-06   6.8293947e-05
+   1.4300000e+02   1.1559149e-02   5.9794806e-06   6.7419776e-05
+   1.4400000e+02   1.1494407e-02   5.8594247e-06   6.6562915e-05
+   1.4500000e+02   1.1430468e-02   5.7418060e-06   6.5722890e-05
+   1.4600000e+02   1.1367314e-02   5.6265742e-06   6.4899245e-05
+   1.4700000e+02   1.1304929e-02   5.5136802e-06   6.4091536e-05
+   1.4800000e+02   1.1243296e-02   5.4030757e-06   6.3299339e-05
+   1.4900000e+02   1.1182398e-02   5.2947140e-06   6.2522241e-05
+   1.5000000e+02   1.1122221e-02   5.1885488e-06   6.1759844e-05
+   1.5100000e+02   1.1062749e-02   5.0845352e-06   6.1011763e-05
+   1.5200000e+02   1.1003967e-02   4.9826292e-06   6.0277626e-05
+   1.5300000e+02   1.0945861e-02   4.8827875e-06   5.9557073e-05
+   1.5400000e+02   1.0888417e-02   4.7849681e-06   5.8849757e-05
+   1.5500000e+02   1.0831622e-02   4.6891296e-06   5.8155340e-05
+   1.5600000e+02   1.0775463e-02   4.5952316e-06   5.7473498e-05
+   1.5700000e+02   1.0719927e-02   4.5032345e-06   5.6803914e-05
+   1.5800000e+02   1.0665001e-02   4.4130997e-06   5.6146284e-05
+   1.5900000e+02   1.0610673e-02   4.3247891e-06   5.5500313e-05
+   1.6000000e+02   1.0556933e-02   4.2382656e-06   5.4865713e-05
+   1.6100000e+02   1.0503768e-02   4.1534930e-06   5.4242209e-05
+   1.6200000e+02   1.0451167e-02   4.0704356e-06   5.3629530e-05
+   1.6300000e+02   1.0399119e-02   3.9890585e-06   5.3027418e-05
+   1.6400000e+02   1.0347615e-02   3.9093278e-06   5.2435620e-05
+   1.6500000e+02   1.0296644e-02   3.8312098e-06   5.1853891e-05
+   1.6600000e+02   1.0246195e-02   3.7546721e-06   5.1281994e-05
+   1.6700000e+02   1.0196260e-02   3.6796824e-06   5.0719699e-05
+   1.6800000e+02   1.0146829e-02   3.6062094e-06   5.0166783e-05
+   1.6900000e+02   1.0097893e-02   3.5342225e-06   4.9623030e-05
+   1.7000000e+02   1.0049443e-02   3.4636914e-06   4.9088229e-05
+   1.7100000e+02   1.0001470e-02   3.3945868e-06   4.8562177e-05
+   1.7200000e+02   9.9539658e-03   3.3268797e-06   4.8044676e-05
+   1.7300000e+02   9.9069222e-03   3.2605418e-06   4.7535534e-05
+   1.7400000e+02   9.8603312e-03   3.1955455e-06   4.7034563e-05
+   1.7500000e+02   9.8141849e-03   3.1318637e-06   4.6541584e-05
+   1.7600000e+02   9.7684758e-03   3.0694697e-06   4.6056419e-05
+   1.7700000e+02   9.7231964e-03   3.0083375e-06   4.5578897e-05
+   1.7800000e+02   9.6783396e-03   2.9484416e-06   4.5108853e-05
+   1.7900000e+02   9.6338982e-03   2.8897570e-06   4.4646124e-05
+   1.8000000e+02   9.5898654e-03   2.8322592e-06   4.4190554e-05
+   1.8100000e+02   9.5462346e-03   2.7759243e-06   4.3741990e-05
+   1.8200000e+02   9.5029991e-03   2.7207288e-06   4.3300283e-05
+   1.8300000e+02   9.4601526e-03   2.6666496e-06   4.2865289e-05
+   1.8400000e+02   9.4176889e-03   2.6136642e-06   4.2436867e-05
+   1.8500000e+02   9.3756019e-03   2.5617504e-06   4.2014880e-05
+   1.8600000e+02   9.3338857e-03   2.5108868e-06   4.1599196e-05
+   1.8700000e+02   9.2925346e-03   2.4610519e-06   4.1189684e-05
+   1.8800000e+02   9.2515428e-03   2.4122251e-06   4.0786218e-05
+   1.8900000e+02   9.2109049e-03   2.3643860e-06   4.0388677e-05
+   1.9000000e+02   9.1706155e-03   2.3175146e-06   3.9996940e-05
+   1.9100000e+02   9.1306694e-03   2.2715915e-06   3.9610890e-05
+   1.9200000e+02   9.0910613e-03   2.2265973e-06   3.9230415e-05
+   1.9300000e+02   9.0517864e-03   2.1825135e-06   3.8855403e-05
+   1.9400000e+02   9.0128398e-03   2.1393215e-06   3.8485748e-05
+   1.9500000e+02   8.9742166e-03   2.0970034e-06   3.8121344e-05
+   1.9600000e+02   8.9359122e-03   2.0555415e-06   3.7762089e-05
+   1.9700000e+02   8.8979220e-03   2.0149185e-06   3.7407883e-05
+   1.9800000e+02   8.8602415e-03   1.9751175e-06   3.7058629e-05
+   1.9900000e+02   8.8228665e-03   1.9361218e-06   3.6714233e-05
+   2.0000000e+02   8.7857926e-03   1.8979152e-06   3.6374601e-05
+   2.0100000e+02   8.7490156e-03   1.8604817e-06   3.6039645e-05
+   2.0200000e+02   8.7125316e-03   1.8238057e-06   3.5709275e-05
+   2.0300000e+02   8.6763364e-03   1.7878718e-06   3.5383406e-05
+   2.0400000e+02   8.6404262e-03   1.7526651e-06   3.5061954e-05
+   2.0500000e+02   8.6047973e-03   1.7181709e-06   3.4744838e-05
+   2.0600000e+02   8.5694457e-03   1.6843748e-06   3.4431977e-05
+   2.0700000e+02   8.5343680e-03   1.6512625e-06   3.4123295e-05
+   2.0800000e+02   8.4995605e-03   1.6188204e-06   3.3818714e-05
+   2.0900000e+02   8.4650196e-03   1.5870347e-06   3.3518162e-05
+   2.1000000e+02   8.4307421e-03   1.5558923e-06   3.3221564e-05
+   2.1100000e+02   8.3967245e-03   1.5253802e-06   3.2928852e-05
+   2.1200000e+02   8.3629635e-03   1.4954855e-06   3.2639954e-05
+   2.1300000e+02   8.3294559e-03   1.4661957e-06   3.2354804e-05
+   2.1400000e+02   8.2961986e-03   1.4374987e-06   3.2073337e-05
+   2.1500000e+02   8.2631884e-03   1.4093823e-06   3.1795486e-05
+   2.1600000e+02   8.2304224e-03   1.3818349e-06   3.1521190e-05
+   2.1700000e+02   8.1978975e-03   1.3548449e-06   3.1250386e-05
+   2.1800000e+02   8.1656109e-03   1.3284009e-06   3.0983015e-05
+   2.1900000e+02   8.1335597e-03   1.3024921e-06   3.0719017e-05
+   2.2000000e+02   8.1017411e-03   1.2771074e-06   3.0458336e-05
+   2.2100000e+02   8.0701524e-03   1.2522362e-06   3.0200914e-05
+   2.2200000e+02   8.0387908e-03   1.2278682e-06   2.9946696e-05
+   2.2300000e+02   8.0076537e-03   1.2039931e-06   2.9695629e-05
+   2.2400000e+02   7.9767386e-03   1.1806010e-06   2.9447661e-05
+   2.2500000e+02   7.9460429e-03   1.1576820e-06   2.9202739e-05
+   2.2600000e+02   7.9155641e-03   1.1352265e-06   2.8960812e-05
+   2.2700000e+02   7.8852998e-03   1.1132251e-06   2.8721833e-05
+   2.2800000e+02   7.8552475e-03   1.0916686e-06   2.8485752e-05
+   2.2900000e+02   7.8254049e-03   1.0705479e-06   2.8252521e-05
+   2.3000000e+02   7.7957698e-03   1.0498543e-06   2.8022096e-05
+   2.3100000e+02   7.7663397e-03   1.0295789e-06   2.7794430e-05
+   2.3200000e+02   7.7371125e-03   1.0097134e-06   2.7569479e-05
+   2.3300000e+02   7.7080860e-03   9.9024937e-07   2.7347199e-05
+   2.3400000e+02   7.6792581e-03   9.7117867e-07   2.7127549e-05
+   2.3500000e+02   7.6506266e-03   9.5249329e-07   2.6910485e-05
+   2.3600000e+02   7.6221894e-03   9.3418540e-07   2.6695969e-05
+   2.3700000e+02   7.5939445e-03   9.1624732e-07   2.6483958e-05
+   2.3800000e+02   7.5658899e-03   8.9867152e-07   2.6274415e-05
+   2.3900000e+02   7.5380237e-03   8.8145063e-07   2.6067301e-05
+   2.4000000e+02   7.5103438e-03   8.6457743e-07   2.5862578e-05
+   2.4100000e+02   7.4828484e-03   8.4804484e-07   2.5660209e-05
+   2.4200000e+02   7.4555356e-03   8.3184592e-07   2.5460159e-05
+   2.4300000e+02   7.4284035e-03   8.1597388e-07   2.5262391e-05
+   2.4400000e+02   7.4014503e-03   8.0042206e-07   2.5066871e-05
+   2.4500000e+02   7.3746743e-03   7.8518393e-07   2.4873565e-05
+   2.4600000e+02   7.3480737e-03   7.7025310e-07   2.4682439e-05
+   2.4700000e+02   7.3216468e-03   7.5562332e-07   2.4493462e-05
+   2.4800000e+02   7.2953918e-03   7.4128843e-07   2.4306599e-05
+   2.4900000e+02   7.2693071e-03   7.2724244e-07   2.4121821e-05
+   2.5000000e+02   7.2433910e-03   7.1347945e-07   2.3939096e-05
+   2.5100000e+02   7.2176419e-03   6.9999369e-07   2.3758394e-05
+   2.5200000e+02   7.1920582e-03   6.8677951e-07   2.3579685e-05
+   2.5300000e+02   7.1666384e-03   6.7383136e-07   2.3402940e-05
+   2.5400000e+02   7.1413808e-03   6.6114381e-07   2.3228130e-05
+   2.5500000e+02   7.1162840e-03   6.4871156e-07   2.3055227e-05
+   2.5600000e+02   7.0913464e-03   6.3652939e-07   2.2884204e-05
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/SHslr.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/SHslr.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/SHslr.m	(revision 27955)
@@ -0,0 +1,103 @@
+function [barystatic, sealevel, geoid, bed] = SHslr(sh,para,force,ocean,rot_flag); 
+
+% slrlm :: a function to compute SH coefficients of slr fields. 
+% reference. Adhikari et al., 2019, ESSD, https://doi.org/10.5194/essd-11-629-2019 
+	
+	% retrieve SH parameters 
+	[nPix num_lm] = size(sh); 
+	lMax = sqrt(num_lm)-1; 
+
+	% SH coefficients of forcing function and ocean function. 
+	force_lm = funlm(lMax,nPix,force,sh);  
+	oce_lm = funlm(lMax,nPix,ocean,sh); 
+
+	% allocate. {{{
+	%sealevel = zeros(num_time,nPix);		% relative sea-level
+	%geoid = zeros(num_time,nPix);		% geoid height  
+	%bed = zeros(num_time,nPix);		% bed height 
+	%sealevel_lm = zeros(num_time,num_lm);	% relative sea-level SH coefficients 
+	%geoid_lm = zeros(num_time,num_lm);	% geoid height SH coefficients 
+	%bed_lm = zeros(num_time,num_lm);		% bed height SH coefficients 
+	% }}} 
+
+	% Compute SH coefficients for shat  {{{ 
+	ehat_lm = ehatlm(force_lm,oce_lm);  % starting solution for shat_lm (eq. B17 of Adhikari&Ivins, 2018, ESSD) 
+	shat_lm = ehat_lm;  % initialize shat_lm 
+	norm_diff = 1.0;
+	p = 0;
+	while norm_diff > para.rel_tol  
+		
+		load_lm = force_lm + shat_lm; 
+
+		norm_old = sqrt(sum(shat_lm.^2)); 
+		xhat_lm = xhatlm(load_lm,ocean,lMax,nPix,sh,para); 
+		phat_lm = phatlm(load_lm,ocean,lMax,nPix,sh,para);  
+		chat_lm = chatlm(force_lm,shat_lm,oce_lm,lMax,para,rot_flag); 
+		
+		if (rot_flag==0)
+			shat_lm = xhat_lm + phat_lm + chat_lm; 
+		elseif (rot_flag==1) 
+			yhat_lm = yhatlm(load_lm,ocean,lMax,nPix,sh,para); 
+			qhat_lm = qhatlm(load_lm,ocean,lMax,nPix,sh,para);  
+			shat_lm = xhat_lm + phat_lm + chat_lm + yhat_lm + qhat_lm; 
+		else 
+			error('rotational flag should be set either to 0 or 1'); 
+		end
+		
+		norm_new  = sqrt(sum(shat_lm.^2));
+		norm_diff = abs(norm_new-norm_old)/abs(norm_old); % relative change in solutions...  
+		p = p+1; 
+		if norm_diff > para.rel_tol 
+			disp(['     iteration # ', num2str(p), ' :: difference in norm = ', num2str(norm_diff)]); 
+		else 
+			disp(['     iteration # ', num2str(p), ' :: difference in norm = ', num2str(norm_diff)]); 
+			disp(['     solution converged! ']); 
+		end
+	end 
+	%}}}
+
+	% Compute SH coefficients for slr {{{ 
+	x_lm = xpq(load_lm,lMax,para);  
+	p_lm = ppq(load_lm,lMax,para); 
+	c_lm = cpq(force_lm,shat_lm,oce_lm,lMax,para,rot_flag); 
+
+	if (rot_flag==0); 
+		slr_lm = x_lm + p_lm + c_lm; 
+		geoid_lm = x_lm;	% \Phi /g [m]  
+		bed_lm = -(p_lm);	% U [m] 
+	elseif (rot_flag==1) 
+		y_lm = ypq(load_lm,lMax,para); 
+		q_lm = qpq(load_lm,lMax,para); 
+		slr_lm = x_lm + p_lm + c_lm + y_lm + q_lm; 
+		geoid_lm = x_lm+y_lm;	% \Phi /g [m]  
+		bed_lm = -(p_lm+q_lm);	% U [m] 
+	else 
+		error('rotational flag should be set either to 0 or 1'); 
+	end
+	%}}}
+
+	% Compute final solutions {{{ 
+	p = 0;
+	sealevel = zeros(1,nPix);  % self-gravitating (relative) sea level 
+	geoid = zeros(1,nPix);  % self-gravitating geoid height 
+	bed = zeros(1,nPix);  % self-gravitating bed height 
+	for l=0:lMax 
+		for m = -l:l
+			sealevel = sealevel + slr_lm(1+p).*sh(:,1+p)'; 
+			geoid = geoid + geoid_lm(1+p).*sh(:,1+p)'; 
+			bed = bed + bed_lm(1+p).*sh(:,1+p)'; 
+			p = p+1;
+		end
+	end 
+	%}}}
+
+	% Test whether mass is conserved (to ensure the solution is trustworthy!) {{{ 
+	% ocean-average sea level and eustatic value must be equal! 
+	barystatic = -force_lm(1)/oce_lm(1); % see equation B16 
+	gmsl = sum(sealevel.*ocean)/nnz(ocean); % we can do this because of equal-area pixelization 
+	sol_diff = abs(abs(gmsl) - abs(barystatic))/abs(gmsl)*100; % per cent 
+	if (sol_diff > 1) % per cent. 
+		error('Ocean-average (eustatic - sealevel) is NOT negligible. Returning.'); 
+	end
+	%}}} 
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/chatlm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/chatlm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/chatlm.m	(revision 27955)
@@ -0,0 +1,16 @@
+function chat_lm = chatlm(force_pq,shat_pq,oce_pq,lMax,para,rotation) 
+
+%---------------------------------------------------------------------
+% chatlm :: a function to compute SH coefficients for \hat{C} 
+% Adhikari & Ivins, ESSD, 2018: Equation B17 
+%---------------------------------------------------------------------
+% (c) S. Adhikari 
+%     Jet Propulsion Laboratory, Caltech 
+%     October 29, 2018
+%---------------------------------------------------------------------
+
+% obtain c_pq 
+c_pq = cpq(force_pq,shat_pq,oce_pq,lMax,para,rotation); 
+
+chat_lm = c_pq.*oce_pq; 
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/cpq.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/cpq.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/cpq.m	(revision 27955)
@@ -0,0 +1,30 @@
+function c_pq = cpq(force_pq,shat_pq,oce_pq,lMax,para,rotation) 
+
+%---------------------------------------------------------------------
+% cpq :: a function to compute SH coefficient for C 
+% Adhikari & Ivins, ESSD, 2018: Equation B17 
+%---------------------------------------------------------------------
+% (c) S. Adhikari 
+%     Jet Propulsion Laboratory, Caltech 
+%     October 29, 2018
+%---------------------------------------------------------------------
+
+q1 = 0; 
+
+load_pq = force_pq+shat_pq; 
+x_pq = xpq(load_pq,lMax,para); 
+p_pq = ppq(load_pq,lMax,para); 
+y_pq = ypq(load_pq,lMax,para); 
+q_pq = qpq(load_pq,lMax,para);  
+
+if (rotation==0); 
+	c_pq_0 = x_pq+p_pq; 
+elseif (rotation==1); 
+	c_pq_0 = x_pq+p_pq + y_pq+q_pq; 
+else 
+	error('rotational flag should be set either to 0 or 1'); 
+end
+
+c_pq = zeros(1,(lMax+1)^2);
+c_pq(1) = -force_pq(1)/oce_pq(1) -sum(c_pq_0.*oce_pq)/oce_pq(1);  
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/ehatlm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/ehatlm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/ehatlm.m	(revision 27955)
@@ -0,0 +1,13 @@
+function ehat_lm = ehatlm(force_lm,oce_lm) 
+
+%---------------------------------------------------------------------
+% ehatlm :: a function to compute SH coefficients for eustatic terms \hat{E}
+% Adhikari & Ivins, ESSD, 2018: Equation B17 
+%---------------------------------------------------------------------
+% (c) S. Adhikari 
+%     Jet Propulsion Laboratory, Caltech 
+%     October 29, 2018
+%---------------------------------------------------------------------
+
+ehat_lm = -(force_lm(1)/oce_lm(1))*oce_lm;
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/funlm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/funlm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/funlm.m	(revision 27955)
@@ -0,0 +1,23 @@
+function fun_lm = funlm(lMax,nPix,fun,sh) 
+
+%---------------------------------------------------------------------
+% funlm :: a function to compute SH coefficients of "fun" function 
+%---------------------------------------------------------------------
+% This code is written as a part of the ISSM-PSL project
+% (c) S. Adhikari 
+%     Jet Propulsion Laboratory, Caltech 
+%     November 3, 2014
+%---------------------------------------------------------------------
+p1 = 0; 
+
+fun_lm = zeros(1,(lMax+1)^2); 
+
+for l=0:lMax
+   for m=-l:l
+      fun_lm(1+p1) = sum(sh(:,1+p1).*fun');
+      p1 = p1+1;
+   end
+end
+
+fun_lm = fun_lm/nPix;
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/gmtOcean.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/gmtOcean.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/gmtOcean.m	(revision 27955)
@@ -0,0 +1,43 @@
+function gmtOce(num) 
+
+%---------------------------------------------------------------------
+% gmtOce :: a function to write a GMT code for selecting pixels (e.g., ocean function) 
+%---------------------------------------------------------------------
+% This code is written as a part of the ISSM-PSL project
+% (c) S. Adhikari 
+%     Jet Propulsion Laboratory, Caltech 
+%     November 3, 2014
+%---------------------------------------------------------------------
+
+text0 = ''; 
+text1 = '#!/bin/sh'; 
+text2 = '# GMT code for selecting ocean and continental data (from Selen)'; 
+text3 = '# This code is written as a part of the ISSM-PSL project'; 
+text4 = '# (c) Surendra Adhikari'; 
+text5 = '#     Jet Propulsion Laboratory, Caltech'; 
+text6 = '#     November 3, 2014'; 
+text7 = sprintf('pixAll="./gmtdir/pixels/pix%dall.txt"',num); 
+text8 = sprintf('pixOce="./gmtdir/pixels/pix%doce.txt"',num); 
+text9 = sprintf('pixCon="./gmtdir/pixels/pix%dcon.txt"',num); 
+text10 = '# Select ocean (and continent) pixels'; 
+text11 = 'gmt gmtselect $pixAll -h0 -Df -R0/360/-90/90  -A0 -JQ180/200 -Nk/s/k/s/k > $pixOce'; 
+text12 = '#gmt gmtselect $pixAll -h0 -Df -R              -A0 -JQ        -Ns/k/s/k/s > $pixCon'; 
+% 
+fid = fopen(sprintf('./gmtdir/oceanFunc.sh'),'w');  % "./" = ISSM_PSL directory! 
+fprintf(fid,'%s\n',text1); 
+fprintf(fid,'%s\n',text0); 
+fprintf(fid,'%s\n',text2); 
+fprintf(fid,'%s\n',text3); 
+fprintf(fid,'%s\n',text4); 
+fprintf(fid,'%s\n',text5); 
+fprintf(fid,'%s\n',text6); 
+fprintf(fid,'%s\n',text0); 
+fprintf(fid,'%s\n',text7); 
+fprintf(fid,'%s\n',text8); 
+fprintf(fid,'%s\n',text9); 
+fprintf(fid,'%s\n',text0); 
+fprintf(fid,'%s\n',text10); 
+fprintf(fid,'%s\n',text11); 
+fprintf(fid,'%s\n',text12); 
+fclose(fid); 
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/lonLat.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/lonLat.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/lonLat.m	(revision 27955)
@@ -0,0 +1,20 @@
+function lon_lat = lonLat(nSide,nPix)
+
+%---------------------------------------------------------------------
+% lonLat :: a function to compute (long, lat) in degrees for GMT 
+%---------------------------------------------------------------------
+% This code is written as a part of the ISSM-PSL project
+% (c) S. Adhikari 
+%     Jet Propulsion Laboratory, Caltech 
+%     November 3, 2014
+%---------------------------------------------------------------------
+
+thetaLambda = pix2ang(nSide); 
+data = cell2mat(thetaLambda); 
+data = data*180/pi;  % in degrees 
+data(1,:) = -data(1,:)+90;  % lat \in [-90, 90] in GMT 
+% 
+lon_lat = zeros(2,nPix); 
+lon_lat(1,:) = data(2,:); 
+lon_lat(2,:) = data(1,:); 
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/oceFun.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/oceFun.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/oceFun.m	(revision 27955)
@@ -0,0 +1,22 @@
+function ocean = oceFun(nSide,nPix,oce_pix) 
+
+%---------------------------------------------------------------------
+% oceFun :: a function to compute ocean function 
+%---------------------------------------------------------------------
+% This code is written as a part of the ISSM-PSL project
+% (c) S. Adhikari 
+%     Jet Propulsion Laboratory, Caltech 
+%     November 3, 2014
+%---------------------------------------------------------------------
+
+oce_fun = oce_pix';
+oce_fun(2,:) = -(oce_fun(2,:)-90);  % lat in [0,180] from North pole 
+oce_fun = oce_fun*pi/180;
+oce_fun_latLon = zeros(size(oce_fun));  % write in lat,long now 
+oce_fun_latLon(1,:) = oce_fun(2,:);
+oce_fun_latLon(2,:) = oce_fun(1,:);
+ocean = zeros(1,nPix);  % initialize the ocean function 
+oce_array = arrayfun(@(x,y)([x;y]),oce_fun_latLon(1,:),oce_fun_latLon(2,:),'UniformOutput',false); 
+ocean_res = ang2pix(nSide,oce_array); 
+ocean(ocean_res) = 1.0; 
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/phatlm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/phatlm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/phatlm.m	(revision 27955)
@@ -0,0 +1,36 @@
+function phat_lm = phatlm(load_pq,ocean,lMax,nPix,sh,para)
+
+%---------------------------------------------------------------------
+% phatlm :: a function to compute SH coefficients for \hat{P} 
+% Adhikari & Ivins, ESSD, 2018: Equation B17 
+%---------------------------------------------------------------------
+% (c) S. Adhikari 
+%     Jet Propulsion Laboratory, Caltech 
+%     October 29, 2018
+%---------------------------------------------------------------------
+
+q1 = 0; 
+q2 = 0; 
+
+% obtain p_pq 
+p_pq = ppq(load_pq,lMax,para); 
+
+% compute xp, i.e. x' 
+xp = zeros(1,nPix);
+for p=0:lMax
+   for q = -p:p
+      xp = xp + p_pq(1+q1).*sh(:,1+q1)';
+      q1 = q1 + 1;
+   end
+end
+
+phat_lm = zeros(1,(lMax+1)^2);
+for l=0:lMax
+   for m=-l:l
+      phat_lm(1+q2) = sum((xp'.*sh(:,1+q2)).*ocean');
+      q2 = q2+1;
+   end
+end
+% 
+phat_lm = phat_lm/nPix;
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/ppq.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/ppq.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/ppq.m	(revision 27955)
@@ -0,0 +1,24 @@
+function p_pq = ppq(load_pq,lMax,para) 
+
+%---------------------------------------------------------------------
+% ppq :: a function to compute SH coefficient for P
+% Adhikari & Ivins, ESSD, 2018: Equation B17 
+%---------------------------------------------------------------------
+% (c) S. Adhikari 
+%     Jet Propulsion Laboratory, Caltech 
+%     October 29, 2018
+%---------------------------------------------------------------------
+
+q1 = 0; 
+
+for p=0:lMax
+   for q=-p:p 
+      if (p<1) 
+         p_pq(1+q1) = 0; 
+      else 
+         p_pq(1+q1) = -3*(para.rho_ocean/para.rho_earth)*load_pq(1+q1)*para.loveH(p+1)/(2*p+1);
+      end
+      q1 = q1+1; 
+   end 
+end 
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/qhatlm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/qhatlm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/qhatlm.m	(revision 27955)
@@ -0,0 +1,36 @@
+function qhat_lm = qhatlm(load_pq,ocean,lMax,nPix,sh,para) 
+
+%---------------------------------------------------------------------
+% qhatlm :: a function to compute SH coefficients for \hat{Q} 
+% Adhikari & Ivins, ESSD, 2018: Equation B17 
+%---------------------------------------------------------------------
+% (c) S. Adhikari 
+%     Jet Propulsion Laboratory, Caltech 
+%     October 29, 2018
+%---------------------------------------------------------------------
+
+q1 = 0; 
+q2 = 0; 
+
+% obtain q_pq 
+q_pq = qpq(load_pq,lMax,para); 
+
+% compute xp, i.e. x' 
+xp = zeros(1,nPix);
+for p=0:lMax
+   for q = -p:p
+      xp = xp + q_pq(1+q1).*sh(:,1+q1)';
+      q1 = q1 + 1;
+   end
+end
+
+qhat_lm = zeros(1,(lMax+1)^2);
+for l=0:lMax
+   for m=-l:l
+      qhat_lm(1+q2) = sum((xp'.*sh(:,1+q2)).*ocean');
+      q2 = q2+1;
+   end
+end
+% 
+qhat_lm = qhat_lm/nPix;
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/qpq.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/qpq.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/qpq.m	(revision 27955)
@@ -0,0 +1,56 @@
+function q_pq = qpq(load_pq,lMax,para) 
+
+%---------------------------------------------------------------------
+% qpq :: a function to compute SH coefficient for Q 
+% Adhikari & Ivins, ESSD, 2018: Equation B21 
+%---------------------------------------------------------------------
+% (c) S. Adhikari 
+%     Jet Propulsion Laboratory, Caltech 
+%     October 29, 2018
+%---------------------------------------------------------------------
+
+a = para.earth_radius; 
+rho_o = para.rho_ocean;
+Omega = para.Omega; 
+loveK = para.loveK;
+A = para.A;
+C = para.C;
+g = para.g; 
+h2 = para.h2;
+k2 = para.k2;
+ks = para.ks; 
+
+% Chandler wobble frequency 
+sigma_0 = (1-k2/ks)*Omega*(C-A)/A; 
+
+dI_13 = -(4*pi/sqrt(15)) *rho_o *a^4 *load_pq(8); 
+dI_23 = -(4*pi/sqrt(15)) *rho_o *a^4 *load_pq(6); 
+dI_33 = (8*pi/3) *rho_o *a^4 *(load_pq(1) - (1/sqrt(5))*load_pq(7)); 
+
+m1 = dI_13 * Omega*(1+loveK(3))/(A*sigma_0);  % loveK(3) is degree-2 load Love number 
+m2 = dI_23 * Omega*(1+loveK(3))/(A*sigma_0); 
+m3 = dI_23 * -(1+loveK(3))/C; 
+
+lambda_00 = (2/3) * a^2 * Omega^2 * m3;  
+lambda_20 = (-2/(3*sqrt(5))) *a^2 *Omega^2 *m3;  
+lambda_21p = (-1/sqrt(15)) *a^2 *Omega^2 *m1;  
+lambda_21m = (-1/sqrt(15)) *a^2 *Omega^2 *m2;  
+
+q_pq = zeros(1,(lMax+1)^2);
+
+q1 = 0; 
+for p=0:lMax
+   for q=-p:p 
+		if (p==2)
+			if (q==-1)
+				q_pq(1+q1) = -h2*lambda_21m/g; 
+			elseif (q==0)
+				q_pq(1+q1) = -h2*lambda_20/g; 
+			elseif (q==1)
+				q_pq(1+q1) = -h2*lambda_21p/g; 
+			end
+      end
+      q1 = q1+1; 
+   end 
+end 
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/xhatlm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/xhatlm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/xhatlm.m	(revision 27955)
@@ -0,0 +1,37 @@
+function xhat_lm = xhatlm(load_pq,ocean,lMax,nPix,sh,para)
+
+%---------------------------------------------------------------------
+% xhatlm :: a function to compute SH coefficients for \hat{X} 
+% Adhikari & Ivins, ESSD, 2018: Equation B17 
+%---------------------------------------------------------------------
+% (c) S. Adhikari 
+%     Jet Propulsion Laboratory, Caltech 
+%     October 29, 2018
+%---------------------------------------------------------------------
+
+q1 = 0; 
+q2 = 0; 
+
+% obtain x_pq 
+x_pq = xpq(load_pq,lMax,para); 
+
+% compute xp, i.e. x' 
+xp = zeros(1,nPix);
+for p=0:lMax
+   for q = -p:p
+      xp = xp + x_pq(1+q1).*sh(:,1+q1)';
+      q1 = q1 + 1;
+   end
+end
+
+xhat_lm = zeros(1,(lMax+1)^2);
+for l=0:lMax
+   for m=-l:l
+      xhat_lm(1+q2) = sum((xp'.*sh(:,1+q2)).*ocean');
+      q2 = q2+1;
+   end
+end
+% 
+xhat_lm = xhat_lm/nPix;
+
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/xpq.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/xpq.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/xpq.m	(revision 27955)
@@ -0,0 +1,26 @@
+function x_pq = xpq(load_pq,lMax,para) 
+
+%---------------------------------------------------------------------
+% xpq :: a function to compute SH coefficient for X 
+% Adhikari & Ivins, ESSD, 2018: Equation B17 
+%---------------------------------------------------------------------
+% (c) S. Adhikari 
+%     Jet Propulsion Laboratory, Caltech 
+%     October 29, 2018
+%---------------------------------------------------------------------
+
+q1 = 0;
+rho_o2e = para.rho_ocean/para.rho_earth; 
+loveK = para.loveK; 
+
+for p=0:lMax
+   for q=-p:p 
+      if (p<1) 
+         x_pq(1+q1) = 3*rho_o2e*load_pq(1+q1)/(2*p+1);
+      else 
+         x_pq(1+q1) = 3*rho_o2e*load_pq(1+q1)*(1+loveK(p+1))/(2*p+1);
+      end
+      q1 = q1+1; 
+   end 
+end 
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/yhatlm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/yhatlm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/yhatlm.m	(revision 27955)
@@ -0,0 +1,36 @@
+function yhat_lm = yhatlm(load_pq,ocean,lMax,nPix,sh,para) 
+
+%---------------------------------------------------------------------
+% yhatlm :: a function to compute SH coefficients for \hat{Y} 
+% Adhikari & Ivins, ESSD, 2018: Equation B17 
+%---------------------------------------------------------------------
+% (c) S. Adhikari 
+%     Jet Propulsion Laboratory, Caltech 
+%     October 29, 2018
+%---------------------------------------------------------------------
+
+q1 = 0; 
+q2 = 0; 
+
+% obtain y_pq 
+y_pq = ypq(load_pq,lMax,para); 
+
+% compute xp, i.e. x' 
+xp = zeros(1,nPix);
+for p=0:lMax
+   for q = -p:p
+      xp = xp + y_pq(1+q1).*sh(:,1+q1)';
+      q1 = q1 + 1;
+   end
+end
+
+yhat_lm = zeros(1,(lMax+1)^2);
+for l=0:lMax
+   for m=-l:l
+      yhat_lm(1+q2) = sum((xp'.*sh(:,1+q2)).*ocean');
+      q2 = q2+1;
+   end
+end
+% 
+yhat_lm = yhat_lm/nPix;
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/ypq.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/ypq.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/sphericalharmonic_slr_solver/ypq.m	(revision 27955)
@@ -0,0 +1,57 @@
+function y_pq = ypq(load_pq,lMax,para)
+
+%---------------------------------------------------------------------
+% ypq :: a function to compute SH coefficient for Y
+% Adhikari & Ivins, ESSD, 2018: Equation B21 
+%---------------------------------------------------------------------
+% (c) S. Adhikari 
+%     Jet Propulsion Laboratory, Caltech 
+%     October 29, 2018
+%---------------------------------------------------------------------
+
+a = para.earth_radius; 
+rho_o = para.rho_ocean;
+Omega = para.Omega; 
+loveK = para.loveK;
+A = para.A;
+C = para.C;
+g = para.g; 
+k2 = para.k2;
+ks = para.ks; 
+
+% Chandler wobble frequency 
+sigma_0 = (1-k2/ks)*Omega*(C-A)/A; 
+
+dI_13 = -(4*pi/sqrt(15)) *rho_o *a^4 *load_pq(8); 
+dI_23 = -(4*pi/sqrt(15)) *rho_o *a^4 *load_pq(6); 
+dI_33 = (8*pi/3) *rho_o *a^4 *(load_pq(1) - (1/sqrt(5))*load_pq(7)); 
+
+m1 = dI_13 * Omega*(1+loveK(3))/(A*sigma_0);  % loveK(3) is degree-2 load Love number 
+m2 = dI_23 * Omega*(1+loveK(3))/(A*sigma_0); 
+m3 = dI_23 * -(1+loveK(3))/C; 
+
+lambda_00 = (2/3) * a^2 * Omega^2 * m3;  
+lambda_20 = (-2/(3*sqrt(5))) *a^2 *Omega^2 *m3;  
+lambda_21p = (-1/sqrt(15)) *a^2 *Omega^2 *m1;  
+lambda_21m = (-1/sqrt(15)) *a^2 *Omega^2 *m2;  
+
+y_pq = zeros(1,(lMax+1)^2);
+
+q1 = 0; 
+for p=0:lMax
+   for q=-p:p 
+      if (p==0) 
+         y_pq(1+q1) = lambda_00/g; 
+		elseif (p==2)
+			if (q==-1)
+				y_pq(1+q1) = (1+k2)*lambda_21m/g; 
+			elseif (q==0)
+				y_pq(1+q1) = (1+k2)*lambda_20/g; 
+			elseif (q==1)
+				y_pq(1+q1) = (1+k2)*lambda_21p/g; 
+			end
+      end
+      q1 = q1+1; 
+   end 
+end 
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/wahr.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/wahr.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/wahr.m	(revision 27955)
@@ -0,0 +1,58 @@
+function [vert, horz] = wahr(disc_rad,xi,love_h,love_l); 
+% a function to compute vertical and horizontal crustal motion... 
+% ...for a disc load, inspired by Figure 1 of Wahr et al., 2013. 
+% 
+% usage: 
+%		[vert, horz] = wahr(disc_rad,xi,love_h,love_l); 
+%		
+%		vert = vertical crustal motion [m] 
+%		horz = horizontal crustal motion [m] 
+%		disc_rad = disc radius [m] => set to 20 km to replicate the Wahr experiment. 
+%		xi = grid points along the distance away from the disc center [m] 
+%		love_h = load Love numbers h for the vertical crustal motion. 
+%		love_l = load Love numbers l for the horizontal crustal motion. 
+%		
+
+	disc_rad = disc_rad/1000; % km 
+	% compute P(x), dP(x)/dx, d2P(x)/dx2
+	%---------------------------------------------------------------------
+	% compute p_value 
+	theta=km2deg(xi/1000)';
+	ang = theta/180*pi; 
+	alpha=cos(ang);
+	m=length(alpha);
+	n=length(love_h)-1; 
+	p_value = p_polynomial_value(m,n,alpha);
+	p_prime = p_polynomial_prime(m,n,alpha);
+	%---------------------------------------------------------------------
+	nn=[0:n];
+	nn_plus_1=nn+1; 
+
+	% disc radius in degree 
+	disc_rad = km2deg(disc_rad)/180*pi; 
+	tau=zeros(size(love_h)); 
+	tau(1) = 0.5*(1-cos(disc_rad)); % tau_0 
+	p_value_disc = p_polynomial_value(1,n+1,cos(disc_rad));
+	p_prime_disc = p_polynomial_prime(1,n,cos(disc_rad));
+	for jj=2:n+1
+		nnn = jj-1; 
+		tau(jj) = 0.5 * (p_value_disc(jj-1) - p_value_disc(jj+1)); 
+	end
+
+	const=zeros(size(love_h)); 
+	for jj=1:n+1
+		const(jj) = 1/(2*(jj-1)+1); 
+	end
+
+	disc=sum(bsxfun(@times,p_value,tau'),2); 
+
+	g1 = -sum(bsxfun(@times,p_value,(tau.*love_h.*const)'),2); 
+	g5 = -sum(bsxfun(@times,-sin(ang),bsxfun(@times,p_prime,(tau.*love_l.*const)')),2); 
+
+	% coeff 
+	coeff = 1000*4*pi*(6.67408*10^-11)*(6.3781*10^6)/9.81; 
+
+	% vertical and horizontal solutions
+	vert = g1*coeff; % m 
+	horz = g5*coeff; % m 
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/yi_analytic_homogenous.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/yi_analytic_homogenous.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/adhikari/yi_analytic_homogenous.m	(revision 27955)
@@ -0,0 +1,49 @@
+
+function yana = love_analytic(param); 
+	% param = required parameters 
+	% param.rho = earth density [kg/m3]
+	% param.mu = shear modulus [Pa]
+	% param.G = universal gravitational constant [m3 kg-1 s-2] 
+	% param.radius = radius of the surface and internal layers of the planet. [m] 
+	% param.g0 = acceleration due to gravity on the planetary surface. [m s-2]
+	% param.source = model forcing type [9 volumentaric potential, 11 surface loads] 
+	% param.degree = SH degree;
+
+	%dbstop if naninf
+
+	rho = param.rho; 
+	mu = param.mu; 
+	G = param.G; 
+	a = max(param.radius); 
+	g0 = param.g0; 
+	r = param.radius; 
+	source = param.source; 
+	n = param.degree; 
+
+	C1=0;
+	C2=0;
+	C6=0;
+	if (source==9)
+		C3 = -1/2*n*(n+1)*rho/((2*n^2+4*n+3)*mu+n*rho*g0*a)*a^(-n);
+		C4 = 1/2/(n-1)*n^2*(n+2)*rho/((2*n^2+4*n+3)*mu+n*rho*g0*a)*a^(-n+2);
+		C5 = (1+3/2/(n-1)*n*rho*g0*a/((2*n^2+4*n+3)*mu+n*rho*g0*a))*a^(-n);
+	elseif (source==11)
+		C3=(n*rho*(n^2 - 1)) / (a^n*(4*G*pi*a^2*n*rho^2 + 3*mu*(2*n^2 + 4*n + 3))); 
+		C4=-(a^2*n^2*rho*(n + 2)) / (a^n*(4*G*pi*a^2*n*rho^2 + 3*mu*(2*n^2 + 4*n + 3))); 
+		C5=(3*mu*(2*n^2 + 4*n + 3)) / (a^n*(4*G*pi*a^2*n*rho^2 + 3*mu*(2*n^2 + 4*n + 3))); 
+		%C3 = rho*(n-1)^2*(n+1)*n / (6*mu*a^n*(n-1)*(2*n^2+4*n+3) - 4*pi*G*rho^2*n*(3*a^(-n+2)-(2*n+1)*a^(n+2))); 
+		%C4 = -a^2*(n+2)*n/(n^2-1) * C3; 
+		%C5 = 1/a^n - 4*pi*G*rho*a^2/(n^2-1) * C3; 
+	end
+
+	y1 = C1./r.^n + C2./r.^(n+2) + C3*r.^(n+1) + C4*r.^(n-1);
+	y2 = 2*mu*( (-n^2-3*n+1)/(n+1)*C1*r.^(-n-1) - (n+2)*C2*r.^(-n-3) +...
+		(n^2-n-3)/n*C3*r.^n + (n-1)*C4*r.^(n-2) ) + 4/3*pi*G*rho^2*( C1*r.^(-n+1) +...
+		C2*r.^(-n-1) + C3*r.^(n+2) + C4*r.^n ) - rho*C5*r.^n - rho*C6*r.^(-n-1);
+	y3 = -(n-2)/(n*(n+1))*C1*r.^(-n) - 1/(n+1)*C2*r.^(-n-2) + (n+3)/(n*(n+1))*C3*r.^(n+1) + C4/n*r.^(n-1);
+	y4 = 2*mu*( (n-1)/n*C1*r.^(-n-1) + (n+2)/(n+1)*C2*r.^(-n-3) + (n+2)/(n+1)*C3*r.^n + (n-1)/n*C4*r.^(n-2) );
+	y5 = C5*r.^n + C6*r.^(-n-1);
+	y6 = n*C5*r.^(n-1) - (n+1)*C6*r.^(-n-2) - 4*pi*G*rho*( C1*r.^(-n) + C2*r.^(-n-2) + C3*r.^(n+1) + C4*r.^(n-1));
+
+	yana = [y1 y2 y3 y4 y5 y6]; 
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/akesson/interpMAR.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/akesson/interpMAR.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/akesson/interpMAR.m	(revision 27955)
@@ -0,0 +1,59 @@
+function output = interpMAR(X,Y,string,loadyear)
+%%%%%% %Interpolate from MAR (Fettweis et al 2017)
+
+%Available outputs
+	% -LAT
+	% -LON
+	% -ME					(Melt)
+	% -MSK_BAM01		(Mask Bamber et al 2001 5x5 km)
+	% -MSK_BAM13		(Mask Bamber et al 2013 1x1 km)
+	% -MSK_MAR			(MAR 10x10 km Ice Mask)
+	% -RF					(Rainfall)
+	% -RU					(Runoff)
+	% -SF					(Snowfall)
+	% -SMB				(Surface Mass Balance (without corrections)
+	% -SMBCORR			(Surface Mass Balance (with corrections)
+	% -SRF_BAM01		(Bamber et al 2001 5x5km Surface height)
+	% -SRF_BAM13		(Bamber et al 2013 1x1 km Surface height)
+	% -SRF_MAR			(MAR 10x10 km Surface height)
+	% -ST					(Surface temperature)
+	% -ST					(Surface temperature (with corrections)
+	% -SU					(Sublimation/Evaporation)
+	% -TIME				(Time)
+	% -X					(x)
+	% -Y					(y)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+if nargin==2,
+	string = 'SMBCORR';
+	loadyear = 2014;
+end
+
+isverbose=0;
+
+%Define data source
+ncpath='/Users/henning/issm/trunk-jpl/projects/ModelData/MAR3/MARv3.5.2-10km-yearly-ERA-Interim-1979-2014.nc';
+
+% Build grid from Bamber2001
+xdata = -800000:5000:700000;
+ydata = -3400000:5000:-600000;
+
+%Convert to MAR projections
+if isverbose, disp('   -- MAR: converting coordinates'); end
+[LAT,LON] = xy2ll(double(X(:)),double(Y(:)),+1,45,70); %convert model mesh xy to Bamber's projection
+[xMAR,yMAR] = ll2xy(LAT,LON,+1,39,71); %convert from lat/long Bamber's to MAR projection xy
+
+if isverbose, disp('   -- MAR: loading data'); end
+data  = double(ncread(ncpath,string));
+
+%Define what year to load data for 1979-2014
+startyear=1979;
+year=loadyear-startyear+1;
+
+%Get data from given year
+data2=squeeze(data(:,:,year));
+
+if isverbose, disp('   -- MAR: interpolating data to grid'); end
+output = InterpFromGrid(xdata,ydata,data2',xMAR,yMAR);
+output = reshape(output,size(X,1),size(X,2));
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/badgeley/interpICESat2ATL1415.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/badgeley/interpICESat2ATL1415.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/badgeley/interpICESat2ATL1415.m	(revision 27955)
@@ -0,0 +1,81 @@
+function hout = interpICESat2ATL1415(X,Y,ncfile14,ncfile15)
+%interpICESat2ATL1415 - interpolate ICESat2 ATL14 + ATL15 data onto X and Y
+%
+%   Input:
+%     - optional 3rd input argument: path to ATL14 dataset
+%     - optional 4th input argument: path to ATL15 dataset
+%
+%   Output: 
+%     - hout: matrix of size number_of_vertices+1 x ATL15_num_timesteps
+%             it is a P1 timeseries
+%     NOTE: The output does not include ATL14 directly. ATL14 is only used 
+%           as a reference for getting absolute surface values from ATL15.
+%
+%   Examples:
+%      surface = interpICESat2ATL1415(md.mesh.x,md.mesh.y);
+%      surface = interpICESat2ATL1415(md.mesh.x,md.mesh.y,'~/ATL14_GL_0314_100m_002_01.nc','~/ATL15_GL_0314_01km_002_01.nc');
+%
+% Version 04/27/2023 Jessica Badgeley jessica.a.badgeley@dartmouth.edu
+
+if nargin==3
+   filename_h = ncfile14;
+else
+   filename_h = '/totten_1/ModelData/Greenland/ICESat2_ATL1415/ATL14_GL_0314_100m_002_01.nc';
+end
+if nargin==4
+	filename_dh = ncfile15;
+else
+   filename_dh = '/totten_1/ModelData/Greenland/ICESat2_ATL1415/ATL15_GL_0314_01km_002_01.nc';
+end
+
+xh = ncread(filename_h,'x');
+yh = ncread(filename_h,'y');
+
+xdh = ncread(filename_dh,'delta_h/x');
+ydh = ncread(filename_dh,'delta_h/y');
+tdh = ncread(filename_dh,'delta_h/time');
+
+tref = datetime('2018-01-01-00-00-00','format','yyyy-MM-dd-hh-mm-ss');
+ths = datenum(tref + days(tdh))./365.25;
+
+offset=2;
+
+xmin=min(X(:)); xmax=max(X(:));
+
+posxh=find(xh<=xmax);
+id1xh=max(1,find(xh>=xmin,1)-offset);
+id2xh=min(numel(xh),posxh(end)+offset);
+
+posxdh=find(xdh<=xmax);
+id1xdh=max(1,find(xdh>=xmin,1)-offset);
+id2xdh=min(numel(xdh),posxdh(end)+offset);
+
+ymin=min(Y(:)); ymax=max(Y(:));
+
+posyh=find(yh>=ymin);
+id1yh=max(1,find(yh<=ymax,1)-offset);
+id2yh=min(numel(yh),posyh(end)+offset);
+
+posydh=find(ydh>=ymin);
+id1ydh=max(1,find(ydh<=ymax,1)-offset);
+id2ydh=min(numel(ydh),posydh(end)+offset);
+
+xh = xh(id1xh:id2xh);
+yh = yh(id1yh:id2yh);
+
+xdh = xdh(id1xdh:id2xdh);
+ydh = ydh(id1ydh:id2ydh);
+
+disp('   --ICESat2 ATL1415: loading surface elevations');
+h = double(ncread(filename_h,'h',[id1xh id1yh],[id2xh-id1xh+1 id2yh-id1yh+1],[1 1]));
+dh = double(ncread(filename_dh,'delta_h/delta_h',[id1xdh id1ydh 1],[id2xdh-id1xdh+1 id2ydh-id1ydh+1 length(tdh)],[1 1 1]));
+geoid = interpBedmachineGreenland(X,Y,'geoid');
+
+disp('   --ICESat2 ATL1415: interpolating');
+href = InterpFromGrid(xh,yh,h',X,Y) - geoid; %this reference DEM is for 2020.0, but it is not currently included in hout
+
+hout = ones([length(Y)+1,length(tdh)]);
+for ii = 1:length(tdh)
+	hout(1:end-1,ii) = InterpFromGrid(xdh,ydh,dh(:,:,ii)',X,Y) + href;
+	hout(end,ii) = ths(ii);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/Makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/Makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/Makefile	(revision 27955)
@@ -0,0 +1,11 @@
+all:
+		g++ vfsa_mpi.cpp  \
+			-I$(ISSM_DIR)/externalpackages/gsl/install/include \
+			-L$(ISSM_DIR)/externalpackages/gsl/install/lib -lgsl -lgslcblas \
+		   -I$(ISSM_DIR)/externalpackages/mpich/install/include/ \
+		   -L$(ISSM_DIR)/externalpackages/mpich/install/lib/ -lmpich -lpmpich -lmpl -o forward.exe 
+
+forward:
+	   mpirun -np 4 ./forward.exe
+clean:
+		rm ./forward.exe
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/code_densite/Makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/code_densite/Makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/code_densite/Makefile	(revision 27955)
@@ -0,0 +1,11 @@
+all:
+		g++ density_rock_uneven.cpp  \
+			-I$(ISSM_DIR)/externalpackages/gsl/install/include \
+			-L$(ISSM_DIR)/externalpackages/gsl/install/lib -lgsl -lgslcblas \
+		   -I$(ISSM_DIR)/externalpackages/mpich/install/include/ \
+		   -L$(ISSM_DIR)/externalpackages/mpich/install/lib/ -lmpich -lpmpich -lmpl -o forward.exe 
+
+forward:
+	   mpirun -np 4 ./forward.exe
+run -np 4 ./forward.execlean:
+		rm ./forward.exe
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/code_densite/density_rock.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/code_densite/density_rock.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/code_densite/density_rock.cpp	(revision 27955)
@@ -0,0 +1,510 @@
+#include <iostream>
+#include <cmath>
+#include <fstream>
+#include <string>
+#include <cstdio>
+#include <cstdlib>
+#include <time.h>
+#include <cassert>
+#include <gsl/gsl_multifit.h>
+#include "mpi.h"
+using namespace std;
+
+class Matrix{/*{{{*/
+	private:
+		int     M;        /*Number of lines   */
+		int     N;        /*Number if Columns */
+		double *values;
+	public:
+		Matrix(int m_in,int n_in){/*{{{*/
+			this->M = m_in;
+			this->N = n_in;
+			this->values = new double[M*N]();
+		}/*}}}*/
+		~Matrix(){/*{{{*/
+			delete [] this->values;
+		}/*}}}*/
+		void Echo(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					cout << " " << this->values[i*N+j];
+				}
+				cout << endl;
+			}
+		}/*}}}*/
+		void SetValue(int i,int j,double value){/*{{{*/
+			this->values[i*N+j] = value;
+		}/*}}}*/
+		double GetValue(int i,int j){/*{{{*/
+			return this->values[i*N+j];
+		}/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM = this->M;
+			*pN = this->N;
+		}/*}}}*/
+		double* GetPointer(void){/*{{{*/
+			return this->values;
+		}/*}}}*/
+		void MatrixSum(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) + B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixDiff(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) - B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixAbs(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,fabs(A->GetValue(i,j)));
+				}
+			}
+		}/*}}}*/
+		void MatrixEqual(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		double MatrixInternSum(){/*{{{*/
+			double sum=0;
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					sum+=this->GetValue(i,j);
+				}
+			}
+			return sum;
+		}/*}}}*/
+		void ExtractLine(Matrix* A,int i){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(M_A==1 && this->N==N_A);
+			for(int j=0;j<this->N;j++){
+				A->SetValue(0,j,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void ExtractColumn(Matrix* A,int j){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(N_A==1 && this->M==M_A);
+			for(int i=0;i<this->M;i++){
+				A->SetValue(i,0,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void AddNumber(double a){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,this->GetValue(i,j) + a);
+				}
+			}
+		}/*}}}*/
+};/*}}}*/
+
+/*Local prototypes{{{*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy);
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny);
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel);
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix *evalid,int my_rank,int num_procs);
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny);
+void reshape(Matrix* V,Matrix* V1,int nx,int ny);
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs);
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B);
+/*}}}*/
+
+int main(int argc,char *argv[]){/*{{{*/
+
+	int my_rank,num_procs;
+
+	MPI_Init(&argc, &argv);
+
+	MPI_Comm_size(MPI_COMM_WORLD,&num_procs);
+	MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
+
+	/* Define the variables {{{*/
+
+	int    dx     = 1000;   /* prism dimension in x-direction                           */
+	int    dy     = 1000;   /* prism dimension in y-direction                           */
+	int    mx     = 99;    /* number of prisms in x-direction                          */
+	int    my     = 99;    /* number of prisms in y-direction                          */
+	int    nx     = 99;    /* number of data points in x-direction                     */
+	int    ny     = 99;    /* number of data points in y-direction                     */
+	int    dn     = 15000; /* distance for neighbouting prisms for gravity calculation */
+
+	Matrix *Pobs=new Matrix(nx*ny,2); /* data positions */
+	makep(Pobs,nx,ny,dx,dy);
+	// Pobs->Echo();
+
+
+
+	Matrix *Pp=new Matrix(mx*my,2); /* prisms positions */
+	makep(Pp,mx,my,dx,dy);
+	// Pp->Echo();
+
+	double  rhoi = 917;           /* ice density     */
+	double  rhow = 1030;          /* water density   */
+	// double  rhos = 2013;		      /* sediment density */
+
+	double rhoc_min=2000.;
+	double rhoc_max=3000.;
+
+	Matrix *Rho  = new Matrix(1,2);
+	Rho->SetValue(0,0,rhoi);
+	Rho->SetValue(0,1,rhow);
+	Matrix *rho1  = new Matrix(1,3);
+	rho1->SetValue(0,0,rhoi);
+	rho1->SetValue(0,1,rhow);
+	rho1->SetValue(0,2,rhoc_min);
+	Matrix *rho2  = new Matrix(1,2);
+	rho2->SetValue(0,0,rhoi-rhoc_min);
+	rho2->SetValue(0,1,rhow-rhoc_min);
+
+	double dlevel=3134;         /* level of data acquisition */
+
+
+	Matrix *xobs= new Matrix(ny,nx);
+	Matrix *yobs= new Matrix(ny,nx);
+
+	vec2grid(Pobs,xobs,yobs,nx,ny);
+	//	xobs->Echo();
+	//	yobs->Echo();
+
+
+	/*}}}*/     
+	/* load the data {{{*/
+
+
+	double inputnumber;
+
+	/* Observed gravity anomaly */
+
+	ifstream file1("gravityraw.txt");
+	Matrix * gobs= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){ 
+		file1 >> inputnumber;
+		gobs->SetValue(i,0, inputnumber*1e-5);
+	}
+	file1.close();
+	//	gobs->Echo();
+
+
+	/* id of grid to evaluate misfit */
+
+
+	ifstream file4("evalid1.txt");
+	Matrix * evalid= new Matrix(nx*ny,1);
+	for(int s=0;s<nx*ny; s++){ 
+		file4 >> inputnumber;
+		evalid->SetValue(s,0,inputnumber);
+	}
+	file4.close();
+	//	evalid->Echo();
+
+	/* initial guess of the model */
+
+	ifstream file5("m0_102714contzach.txt");
+	Matrix * mesh_ini= new Matrix(mx*my,3);
+	for(int s=0;s<mx*my; s++){ 
+		for(int j=0;j<3;j++){
+			file5 >> inputnumber;
+			mesh_ini->SetValue(s,j,inputnumber);
+		}
+	}
+	file5.close();
+	//	mesh_ini->Echo();
+	/*}}}*/
+	/* Test {{{ */
+
+
+	double rhoc=rhoc_min;
+	double rhoc_opti=rhoc_min;
+	double E=misfit(mesh_ini,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my,my_rank,num_procs);
+	double E_opti=E;
+
+	for(int i=rhoc_min;i<rhoc_max+1;i++){
+		rhoc=i;
+		rho1->SetValue(0,2,rhoc);
+		rho2->SetValue(0,0,rhoi-rhoc);
+		rho2->SetValue(0,1,rhow-rhoc);
+
+		E=misfit(mesh_ini,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my,my_rank,num_procs);
+
+		if(E<E_opti){
+			E_opti=E;
+			rhoc_opti=rhoc;
+		}
+		if(my_rank==0){
+			cout<<rhoc<<"  "<<rhoc_opti<<"  "<<E<<"  "<<E_opti<<endl;
+		}
+	}
+
+
+
+
+	delete Pobs;
+	delete Pp;
+	delete Rho;
+	delete rho1;
+	delete rho2;
+	delete xobs;
+	delete yobs;
+	delete mesh_ini;
+	delete evalid;
+	delete gobs;
+
+	/*}}}*/
+
+	MPI_Finalize();
+
+	return 0;
+}/*}}}*/
+
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B){/*{{{*/
+
+	/*GSL Matrices and vectors: */
+	int    M,N;
+	double chisq;
+	/*Get system size*/
+	A->GetSize(&M,&N);
+
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix* a = gsl_matrix_alloc(M,N);
+	for(int i=0;i<M;i++){
+		for(int j=0;j<N;j++){
+			gsl_matrix_set (a,i,j,A->GetValue(i,j));
+		}
+	}
+	gsl_vector* b = gsl_vector_alloc(M);
+	for(int i=0;i<M;i++){
+		gsl_vector_set(b,i,B->GetValue(i,0));
+	}
+
+	gsl_vector* x = gsl_vector_alloc(N);
+	gsl_matrix* cov = gsl_matrix_alloc(N,N);
+
+	/*Least square fit: */
+	gsl_multifit_linear_workspace* work = gsl_multifit_linear_alloc(M,N);
+	gsl_multifit_linear (a, b, x, cov, &chisq, work);
+	gsl_multifit_linear_free (work);
+
+	/*Clean up and assign output pointer*/
+	Matrix* X = new Matrix(N,1);
+	for(int j=0;j<N;j++){
+		X->SetValue(j,0,gsl_vector_get(x,j));
+	}
+	*pX = X;
+
+	gsl_matrix_free(a);
+	gsl_vector_free(x);
+	gsl_vector_free(b);
+	gsl_matrix_free(cov);
+
+}/*}}}*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			Pobs->SetValue(j+nx*i,0,j*dx);
+			Pobs->SetValue(j+nx*i,1,i*dy);
+		}
+	}
+}/*}}}*/
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+			V2->SetValue(i,j, V->GetValue(j+nx*i,1));
+		}
+	}
+}/*}}}*/
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel){/*{{{*/
+	int sizem1,sizem2;
+	m->GetSize(&sizem1,&sizem2);
+	for(int i=0;i<sizem1;i++){
+		for(int j=0;j<sizem2+1;j++){
+			if(j<sizem2){
+				m1->SetValue(i,j,1e-10*(sizem2+1-j));
+				m2->SetValue(i,j,m->GetValue(i,j));
+				if(m->GetValue(i,j)<0){
+					m1->SetValue(i,j,m->GetValue(i,j));
+					m2->SetValue(i,j,i*1e-10);
+				}
+				m1->SetValue(i,j,m1->GetValue(i,j));
+				m2->SetValue(i,j,m2->GetValue(i,j));
+			}
+			else{
+				m1->SetValue(i,j,1e-10);
+			}
+		}
+	}
+	m1->AddNumber(dlevel);
+	m2->AddNumber(dlevel);
+}/*}}}*/
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix *evalid,int my_rank,int num_procs){/*{{{*/
+	double gg=6.673e-11;
+	int si,sj,id,s;
+	double R,Q,P;
+	Matrix *xp= new Matrix(1,2);
+	Matrix *yp= new Matrix(1,2);
+	Matrix *xpp= new Matrix(1,2);
+	Matrix *ypp= new Matrix(1,2);
+	Matrix *U= new Matrix(l,4);
+	Matrix *U1=new Matrix(1,4);
+	Matrix *U2=new Matrix(1,4);
+	Matrix *gl= new Matrix(1,l-1);
+	bool test=true;
+
+	double *glocal=new double[n]();
+
+	for(int c=my_rank;c<n;c+=num_procs){
+		glocal[c]=0;
+		if(evalid->GetValue(c,0)==1){
+			for(int a=0;a<m;a++){
+				test=true;
+				xp->SetValue(0,0,Pp->GetValue(a,0)-Pobs->GetValue(c,0));
+				xp->SetValue(0,1,Pp->GetValue(a,0)-Pobs->GetValue(c,0)+dx);
+				if(xp->GetValue(0,0)<0 && xp->GetValue(0,0)<xp->GetValue(0,1) && xp->GetValue(0,0)*xp->GetValue(0,1)>=0){
+					xpp->SetValue(0,0,xp->GetValue(0,1));
+					xpp->SetValue(0,1,xp->GetValue(0,0));
+					xp->MatrixAbs(xpp);
+				}
+				yp->SetValue(0,0,Pp->GetValue(a,1)-Pobs->GetValue(c,1));
+				yp->SetValue(0,1,Pp->GetValue(a,1)-Pobs->GetValue(c,1)+dy);
+				if(yp->GetValue(0,0)<0 && yp->GetValue(0,0)<yp->GetValue(0,1) && yp->GetValue(0,0)*yp->GetValue(0,1)>=0){
+					ypp->SetValue(0,0,yp->GetValue(0,1));
+					ypp->SetValue(0,1,yp->GetValue(0,0));
+					yp->MatrixAbs(ypp);
+				}
+				P=sqrt(xp->GetValue(0,0)*xp->GetValue(0,0)+yp->GetValue(0,0)*yp->GetValue(0,0));
+				if(P>dn){
+					test=false;
+					for(int i=0;i<l-1;i++){
+						gl->SetValue(0,i,0);
+					}
+				}
+				if(test==true){
+					si=1;
+					sj=1;
+					id=0;
+					for(int i=0;i<2;i++){
+						si*=-1;
+						for(int j=0;j<2;j++){
+							sj*=-1;
+							s=si*sj;
+							for(int k=0;k<l;k++){
+								R=sqrt(xp->GetValue(0,i)*xp->GetValue(0,i)+yp->GetValue(0,j)*yp->GetValue(0,j)+mesh->GetValue(a,k)*mesh->GetValue(a,k));
+								Q=atan(xp->GetValue(0,i)*yp->GetValue(0,j)/(mesh->GetValue(a,k)*R));
+								U->SetValue(k,id,s*(mesh->GetValue(a,k)*Q-xp->GetValue(0,i)*log(R+yp->GetValue(0,j))-yp->GetValue(0,j)*log(R+xp->GetValue(0,i))));
+							}
+							id++;
+						}
+					}
+					for(int b=0;b<l-1;b++){
+						U->ExtractLine(U1,b);
+						U->ExtractLine(U2,b+1);
+						gl->SetValue(0,b,rho->GetValue(0,b)*(U1->MatrixInternSum()*(-1)+U2->MatrixInternSum()));
+					}
+				}
+				glocal[c]=glocal[c]+gg*gl->MatrixInternSum();
+			}
+		}
+	}
+
+	MPI_Allreduce(glocal,g->GetPointer(),n,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
+
+	delete xp;
+	delete yp;
+	delete xpp;
+	delete ypp;
+	delete gl;
+	delete U;
+	delete U1;
+	delete U2;
+	delete []glocal;
+}/*}}}*/
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+		}
+	}
+}/*}}}*/
+void reshape(Matrix* V,Matrix* V1,int nx,int ny){/*{{{*/
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			V1->SetValue(j+nx*i,0,V->GetValue(i,j));
+		}
+	}
+}/*}}}*/
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs){/*{{{*/
+	Matrix* m1=new Matrix(mx*my,4);
+	Matrix* m2=new Matrix(mx*my,3);
+	Matrix* g1=new Matrix(nx*ny,1);
+	Matrix* g2=new Matrix(nx*ny,1);
+	Matrix* g=new Matrix(nx*ny,1);
+	Matrix* gcalgr=new Matrix(ny,nx);
+	Matrix* gcalvec=new Matrix(nx*ny,1);
+	Matrix* df=new Matrix(nx*ny,1);
+	Matrix* G=new Matrix(nx*ny,3);
+	double a=0;
+	double b=0;
+	double e=0;
+	msplit(m0,m1,m2,dlevel);
+	plouff(g1,Pobs,Pp,m1,rho1,dx,dy,dn,mx*my,nx*ny,4,evalid, my_rank, num_procs);
+	plouff(g2,Pobs,Pp,m2,rho2,dx,dy,dn,mx*my,nx*ny,3,evalid, my_rank, num_procs);
+	g->MatrixSum(g1,g2);
+	vec2gridsimple(g,gcalgr,nx,ny);
+	reshape(gcalgr,gcalvec,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		df->SetValue(i,0,evalid->GetValue(i,0)*(gobs->GetValue(i,0)-gcalvec->GetValue(i,0)));
+		G->SetValue(i,0,evalid->GetValue(i,0)*Pobs->GetValue(i,0));
+		G->SetValue(i,1,evalid->GetValue(i,0)*Pobs->GetValue(i,1));
+		G->SetValue(i,2,evalid->GetValue(i,0));
+	}
+	Matrix* M = NULL;
+	GSLsquarefit(&M,G,df);
+
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			gcalgr->SetValue(i,j,gcalgr->GetValue(i,j)+xobs->GetValue(i,j)*M->GetValue(0,0)+yobs->GetValue(i,j)*M->GetValue(1,0)+M->GetValue(2,0));
+		}
+	}
+	reshape(gcalgr,g,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		a=a+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)-g->GetValue(i,0)));
+		b=b+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)+g->GetValue(i,0)));
+	}
+	e=2*a/(a+b);
+
+	delete m1;
+	delete m2;
+	delete g1;
+	delete g2;
+	delete g;
+	delete gcalgr;
+	delete gcalvec;
+	delete df;
+	delete G;
+	delete M;
+
+	return e;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/code_densite/density_rock_uneven.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/code_densite/density_rock_uneven.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/code_densite/density_rock_uneven.cpp	(revision 27955)
@@ -0,0 +1,516 @@
+#include <iostream>
+#include <cmath>
+#include <fstream>
+#include <string>
+#include <cstdio>
+#include <cstdlib>
+#include <time.h>
+#include <cassert>
+#include <gsl/gsl_multifit.h>
+#include "mpi.h"
+using namespace std;
+
+class Matrix{/*{{{*/
+	private:
+		int     M;        /*Number of lines   */
+		int     N;        /*Number if Columns */
+		double *values;
+	public:
+		Matrix(int m_in,int n_in){/*{{{*/
+			this->M = m_in;
+			this->N = n_in;
+			this->values = new double[M*N]();
+		}/*}}}*/
+		~Matrix(){/*{{{*/
+			delete [] this->values;
+		}/*}}}*/
+		void Echo(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					cout << " " << this->values[i*N+j];
+				}
+				cout << endl;
+			}
+		}/*}}}*/
+		void SetValue(int i,int j,double value){/*{{{*/
+			this->values[i*N+j] = value;
+		}/*}}}*/
+		double GetValue(int i,int j){/*{{{*/
+			return this->values[i*N+j];
+		}/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM = this->M;
+			*pN = this->N;
+		}/*}}}*/
+		double* GetPointer(void){/*{{{*/
+			return this->values;
+		}/*}}}*/
+		void MatrixSum(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) + B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixDiff(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) - B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixAbs(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,fabs(A->GetValue(i,j)));
+				}
+			}
+		}/*}}}*/
+		void MatrixEqual(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		double MatrixInternSum(){/*{{{*/
+			double sum=0;
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					sum+=this->GetValue(i,j);
+				}
+			}
+			return sum;
+		}/*}}}*/
+		void ExtractLine(Matrix* A,int i){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(M_A==1 && this->N==N_A);
+			for(int j=0;j<this->N;j++){
+				A->SetValue(0,j,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void ExtractColumn(Matrix* A,int j){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(N_A==1 && this->M==M_A);
+			for(int i=0;i<this->M;i++){
+				A->SetValue(i,0,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void AddNumber(double a){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,this->GetValue(i,j) + a);
+				}
+			}
+		}/*}}}*/
+};/*}}}*/
+
+/*Local prototypes{{{*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy);
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny);
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,Matrix *dlevel);
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix *evalid,int my_rank,int num_procs);
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny);
+void reshape(Matrix* V,Matrix* V1,int nx,int ny);
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,Matrix *dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs);
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B);
+/*}}}*/
+
+int main(int argc,char *argv[]){/*{{{*/
+
+	int my_rank,num_procs;
+
+	MPI_Init(&argc, &argv);
+
+	MPI_Comm_size(MPI_COMM_WORLD,&num_procs);
+	MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
+
+	/* Define the variables {{{*/
+
+	int    dx     = 1000;   /* prism dimension in x-direction                           */
+	int    dy     = 1000;   /* prism dimension in y-direction                           */
+	int    mx     = 99;    /* number of prisms in x-direction                          */
+	int    my     = 99;    /* number of prisms in y-direction                          */
+	int    nx     = 99;    /* number of data points in x-direction                     */
+	int    ny     = 99;    /* number of data points in y-direction                     */
+	int    dn     = 15000; /* distance for neighbouting prisms for gravity calculation */
+
+	Matrix *Pobs=new Matrix(nx*ny,2); /* data positions */
+	makep(Pobs,nx,ny,dx,dy);
+	// Pobs->Echo();
+
+
+
+	Matrix *Pp=new Matrix(mx*my,2); /* prisms positions */
+	makep(Pp,mx,my,dx,dy);
+	// Pp->Echo();
+
+	double  rhoi = 917;           /* ice density     */
+	double  rhow = 1030;          /* water density   */
+	// double  rhos = 2013;		      /* sediment density */
+
+	double rhoc_min=2000.;
+	double rhoc_max=3000.;
+
+	Matrix *Rho  = new Matrix(1,2);
+	Rho->SetValue(0,0,rhoi);
+	Rho->SetValue(0,1,rhow);
+	Matrix *rho1  = new Matrix(1,3);
+	rho1->SetValue(0,0,rhoi);
+	rho1->SetValue(0,1,rhow);
+	rho1->SetValue(0,2,rhoc_min);
+	Matrix *rho2  = new Matrix(1,2);
+	rho2->SetValue(0,0,rhoi-rhoc_min);
+	rho2->SetValue(0,1,rhow-rhoc_min);
+
+
+	Matrix *xobs= new Matrix(ny,nx);
+	Matrix *yobs= new Matrix(ny,nx);
+
+	vec2grid(Pobs,xobs,yobs,nx,ny);
+	//	xobs->Echo();
+	//	yobs->Echo();
+
+
+	/*}}}*/     
+	/* load the data {{{*/
+
+
+	double inputnumber;
+
+	/* Levels of data acquisition */
+
+	ifstream file0("dataalti.txt");
+	Matrix * dlevel= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){
+		file0 >> inputnumber;
+		dlevel->SetValue(i,0,inputnumber);
+	}
+	file0.close();
+
+	/* Observed gravity anomaly */
+
+	ifstream file1("gravityraw.txt");
+	Matrix * gobs= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){ 
+		file1 >> inputnumber;
+		gobs->SetValue(i,0, inputnumber*1e-5);
+	}
+	file1.close();
+	//	gobs->Echo();
+
+
+	/* id of grid to evaluate misfit */
+
+
+	ifstream file4("evalid1.txt");
+	Matrix * evalid= new Matrix(nx*ny,1);
+	for(int s=0;s<nx*ny; s++){ 
+		file4 >> inputnumber;
+		evalid->SetValue(s,0,inputnumber);
+	}
+	file4.close();
+	//	evalid->Echo();
+
+	/* initial guess of the model */
+
+	ifstream file5("m0_102714contzach.txt");
+	Matrix * mesh_ini= new Matrix(mx*my,3);
+	for(int s=0;s<mx*my; s++){ 
+		for(int j=0;j<3;j++){
+			file5 >> inputnumber;
+			mesh_ini->SetValue(s,j,inputnumber);
+		}
+	}
+	file5.close();
+	//	mesh_ini->Echo();
+	/*}}}*/
+	/* Test {{{ */
+
+
+	double rhoc=rhoc_min;
+	double rhoc_opti=rhoc_min;
+	double E=misfit(mesh_ini,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my,my_rank,num_procs);
+	double E_opti=E;
+
+	for(int i=rhoc_min;i<rhoc_max+1;i++){
+		rhoc=i;
+		rho1->SetValue(0,2,rhoc);
+		rho2->SetValue(0,0,rhoi-rhoc);
+		rho2->SetValue(0,1,rhow-rhoc);
+
+		E=misfit(mesh_ini,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my,my_rank,num_procs);
+
+		if(E<E_opti){
+			E_opti=E;
+			rhoc_opti=rhoc;
+		}
+		if(my_rank==0){
+			cout<<rhoc<<"  "<<rhoc_opti<<"  "<<E<<"  "<<E_opti<<endl;
+		}
+	}
+
+
+
+
+	delete Pobs;
+	delete Pp;
+	delete Rho;
+	delete rho1;
+	delete rho2;
+	delete xobs;
+	delete yobs;
+	delete mesh_ini;
+	delete evalid;
+	delete gobs;
+
+	/*}}}*/
+
+	MPI_Finalize();
+
+	return 0;
+}/*}}}*/
+
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B){/*{{{*/
+
+	/*GSL Matrices and vectors: */
+	int    M,N;
+	double chisq;
+	/*Get system size*/
+	A->GetSize(&M,&N);
+
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix* a = gsl_matrix_alloc(M,N);
+	for(int i=0;i<M;i++){
+		for(int j=0;j<N;j++){
+			gsl_matrix_set (a,i,j,A->GetValue(i,j));
+		}
+	}
+	gsl_vector* b = gsl_vector_alloc(M);
+	for(int i=0;i<M;i++){
+		gsl_vector_set(b,i,B->GetValue(i,0));
+	}
+
+	gsl_vector* x = gsl_vector_alloc(N);
+	gsl_matrix* cov = gsl_matrix_alloc(N,N);
+
+	/*Least square fit: */
+	gsl_multifit_linear_workspace* work = gsl_multifit_linear_alloc(M,N);
+	gsl_multifit_linear (a, b, x, cov, &chisq, work);
+	gsl_multifit_linear_free (work);
+
+	/*Clean up and assign output pointer*/
+	Matrix* X = new Matrix(N,1);
+	for(int j=0;j<N;j++){
+		X->SetValue(j,0,gsl_vector_get(x,j));
+	}
+	*pX = X;
+
+	gsl_matrix_free(a);
+	gsl_vector_free(x);
+	gsl_vector_free(b);
+	gsl_matrix_free(cov);
+
+}/*}}}*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			Pobs->SetValue(j+nx*i,0,j*dx);
+			Pobs->SetValue(j+nx*i,1,i*dy);
+		}
+	}
+}/*}}}*/
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+			V2->SetValue(i,j, V->GetValue(j+nx*i,1));
+		}
+	}
+}/*}}}*/
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,Matrix* dlevel){/*{{{*/
+	int sizem1,sizem2;
+	m->GetSize(&sizem1,&sizem2);
+	for(int i=0;i<sizem1;i++){
+		for(int j=0;j<sizem2+1;j++){
+			if(j<sizem2){
+				m1->SetValue(i,j,1e-10*(sizem2+1-j));
+				m2->SetValue(i,j,m->GetValue(i,j));
+				if(m->GetValue(i,j)<0){
+					m1->SetValue(i,j,m->GetValue(i,j));
+					m2->SetValue(i,j,i*1e-10);
+				}
+				m1->SetValue(i,j,m1->GetValue(i,j)+dlevel->GetValue(i,1));
+				m2->SetValue(i,j,m2->GetValue(i,j)+dlevel->GetValue(i,1));
+			}
+			else{
+				m1->SetValue(i,j,1e-10+dlevel->GetValue(i,1));
+			}
+		}
+	}
+}/*}}}*/
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix *evalid,int my_rank,int num_procs){/*{{{*/
+	double gg=6.673e-11;
+	int si,sj,id,s;
+	double R,Q,P;
+	Matrix *xp= new Matrix(1,2);
+	Matrix *yp= new Matrix(1,2);
+	Matrix *xpp= new Matrix(1,2);
+	Matrix *ypp= new Matrix(1,2);
+	Matrix *U= new Matrix(l,4);
+	Matrix *U1=new Matrix(1,4);
+	Matrix *U2=new Matrix(1,4);
+	Matrix *gl= new Matrix(1,l-1);
+	bool test=true;
+
+	double *glocal=new double[n]();
+
+	for(int c=my_rank;c<n;c+=num_procs){
+		glocal[c]=0;
+		if(evalid->GetValue(c,0)==1){
+			for(int a=0;a<m;a++){
+				test=true;
+				xp->SetValue(0,0,Pp->GetValue(a,0)-Pobs->GetValue(c,0));
+				xp->SetValue(0,1,Pp->GetValue(a,0)-Pobs->GetValue(c,0)+dx);
+				if(xp->GetValue(0,0)<0 && xp->GetValue(0,0)<xp->GetValue(0,1) && xp->GetValue(0,0)*xp->GetValue(0,1)>=0){
+					xpp->SetValue(0,0,xp->GetValue(0,1));
+					xpp->SetValue(0,1,xp->GetValue(0,0));
+					xp->MatrixAbs(xpp);
+				}
+				yp->SetValue(0,0,Pp->GetValue(a,1)-Pobs->GetValue(c,1));
+				yp->SetValue(0,1,Pp->GetValue(a,1)-Pobs->GetValue(c,1)+dy);
+				if(yp->GetValue(0,0)<0 && yp->GetValue(0,0)<yp->GetValue(0,1) && yp->GetValue(0,0)*yp->GetValue(0,1)>=0){
+					ypp->SetValue(0,0,yp->GetValue(0,1));
+					ypp->SetValue(0,1,yp->GetValue(0,0));
+					yp->MatrixAbs(ypp);
+				}
+				P=sqrt(xp->GetValue(0,0)*xp->GetValue(0,0)+yp->GetValue(0,0)*yp->GetValue(0,0));
+				if(P>dn){
+					test=false;
+					for(int i=0;i<l-1;i++){
+						gl->SetValue(0,i,0);
+					}
+				}
+				if(test==true){
+					si=1;
+					sj=1;
+					id=0;
+					for(int i=0;i<2;i++){
+						si*=-1;
+						for(int j=0;j<2;j++){
+							sj*=-1;
+							s=si*sj;
+							for(int k=0;k<l;k++){
+								R=sqrt(xp->GetValue(0,i)*xp->GetValue(0,i)+yp->GetValue(0,j)*yp->GetValue(0,j)+mesh->GetValue(a,k)*mesh->GetValue(a,k));
+								Q=atan(xp->GetValue(0,i)*yp->GetValue(0,j)/(mesh->GetValue(a,k)*R));
+								U->SetValue(k,id,s*(mesh->GetValue(a,k)*Q-xp->GetValue(0,i)*log(R+yp->GetValue(0,j))-yp->GetValue(0,j)*log(R+xp->GetValue(0,i))));
+							}
+							id++;
+						}
+					}
+					for(int b=0;b<l-1;b++){
+						U->ExtractLine(U1,b);
+						U->ExtractLine(U2,b+1);
+						gl->SetValue(0,b,rho->GetValue(0,b)*(U1->MatrixInternSum()*(-1)+U2->MatrixInternSum()));
+					}
+				}
+				glocal[c]=glocal[c]+gg*gl->MatrixInternSum();
+			}
+		}
+	}
+
+	MPI_Allreduce(glocal,g->GetPointer(),n,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
+
+	delete xp;
+	delete yp;
+	delete xpp;
+	delete ypp;
+	delete gl;
+	delete U;
+	delete U1;
+	delete U2;
+	delete []glocal;
+}/*}}}*/
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+		}
+	}
+}/*}}}*/
+void reshape(Matrix* V,Matrix* V1,int nx,int ny){/*{{{*/
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			V1->SetValue(j+nx*i,0,V->GetValue(i,j));
+		}
+	}
+}/*}}}*/
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,Matrix *dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs){/*{{{*/
+	Matrix* m1=new Matrix(mx*my,4);
+	Matrix* m2=new Matrix(mx*my,3);
+	Matrix* g1=new Matrix(nx*ny,1);
+	Matrix* g2=new Matrix(nx*ny,1);
+	Matrix* g=new Matrix(nx*ny,1);
+	Matrix* gcalgr=new Matrix(ny,nx);
+	Matrix* gcalvec=new Matrix(nx*ny,1);
+	Matrix* df=new Matrix(nx*ny,1);
+	Matrix* G=new Matrix(nx*ny,3);
+	double a=0;
+	double b=0;
+	double e=0;
+	msplit(m0,m1,m2,dlevel);
+	plouff(g1,Pobs,Pp,m1,rho1,dx,dy,dn,mx*my,nx*ny,4,evalid, my_rank, num_procs);
+	plouff(g2,Pobs,Pp,m2,rho2,dx,dy,dn,mx*my,nx*ny,3,evalid, my_rank, num_procs);
+	g->MatrixSum(g1,g2);
+	vec2gridsimple(g,gcalgr,nx,ny);
+	reshape(gcalgr,gcalvec,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		df->SetValue(i,0,evalid->GetValue(i,0)*(gobs->GetValue(i,0)-gcalvec->GetValue(i,0)));
+		G->SetValue(i,0,evalid->GetValue(i,0)*Pobs->GetValue(i,0));
+		G->SetValue(i,1,evalid->GetValue(i,0)*Pobs->GetValue(i,1));
+		G->SetValue(i,2,evalid->GetValue(i,0));
+	}
+	Matrix* M = NULL;
+	GSLsquarefit(&M,G,df);
+
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			gcalgr->SetValue(i,j,gcalgr->GetValue(i,j)+xobs->GetValue(i,j)*M->GetValue(0,0)+yobs->GetValue(i,j)*M->GetValue(1,0)+M->GetValue(2,0));
+		}
+	}
+	reshape(gcalgr,g,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		a=a+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)-g->GetValue(i,0)));
+		b=b+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)+g->GetValue(i,0)));
+	}
+	e=2*a/(a+b);
+
+	delete m1;
+	delete m2;
+	delete g1;
+	delete g2;
+	delete g;
+	delete gcalgr;
+	delete gcalvec;
+	delete df;
+	delete G;
+	delete M;
+
+	return e;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/code_inversion/vfsa_mpi.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/code_inversion/vfsa_mpi.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/code_inversion/vfsa_mpi.cpp	(revision 27955)
@@ -0,0 +1,876 @@
+#include <iostream>
+#include <cmath>
+#include <fstream>
+#include <string>
+#include <cstdio>
+#include <cstdlib>
+#include <time.h>
+#include <cassert>
+#include <gsl/gsl_multifit.h>
+#include "mpi.h"
+using namespace std;
+
+class Matrix{/*{{{*/
+	private:
+		int     M;        /*Number of lines   */
+		int     N;        /*Number if Columns */
+		double *values;
+	public:
+		Matrix(int m_in,int n_in){/*{{{*/
+			this->M = m_in;
+			this->N = n_in;
+			this->values = new double[M*N]();
+		}/*}}}*/
+		~Matrix(){/*{{{*/
+			delete [] this->values;
+		}/*}}}*/
+		void Echo(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					cout << " " << this->values[i*N+j];
+				}
+				cout << endl;
+			}
+		}/*}}}*/
+		void SetValue(int i,int j,double value){/*{{{*/
+			this->values[i*N+j] = value;
+		}/*}}}*/
+		double GetValue(int i,int j){/*{{{*/
+			return this->values[i*N+j];
+		}/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM = this->M;
+			*pN = this->N;
+		}/*}}}*/
+		double* GetPointer(void){/*{{{*/
+			return this->values;
+		}/*}}}*/
+		void MatrixSum(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) + B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixDiff(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) - B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixAbs(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,fabs(A->GetValue(i,j)));
+				}
+			}
+		}/*}}}*/
+		void MatrixEqual(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		double MatrixInternSum(){/*{{{*/
+			double sum=0;
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					sum+=this->GetValue(i,j);
+				}
+			}
+			return sum;
+		}/*}}}*/
+		void ExtractLine(Matrix* A,int i){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(M_A==1 && this->N==N_A);
+			for(int j=0;j<this->N;j++){
+				A->SetValue(0,j,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void ExtractColumn(Matrix* A,int j){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(N_A==1 && this->M==M_A);
+			for(int i=0;i<this->M;i++){
+				A->SetValue(i,0,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void AddNumber(double a){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,this->GetValue(i,j) + a);
+				}
+			}
+		}/*}}}*/
+};/*}}}*/
+
+/*Local prototypes{{{*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy);
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny);
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel);
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix *evalid,int my_rank,int num_procs);
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny);
+void reshape(Matrix* V,Matrix* V1,int nx,int ny);
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs);
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B);
+double signe(double a);
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my);
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd, Matrix *landmask);
+double coolshed(double T0,double k,double c,double D);
+/*}}}*/
+
+int main(int argc,char *argv[]){/*{{{*/
+	
+	int my_rank,num_procs;
+
+	MPI_Init(&argc, &argv);
+
+	MPI_Comm_size(MPI_COMM_WORLD,&num_procs);
+	MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
+
+	/* Seed the random number generator {{{*/
+		srand (time(NULL));            /*}}}*/
+	/* Define the variables {{{*/
+
+	int    dx     = 1000;   /* prism dimension in x-direction                           */
+	int    dy     = 1000;   /* prism dimension in y-direction                           */
+	int    mx     = 99;    /* number of prisms in x-direction                          */
+	int    my     = 99;    /* number of prisms in y-direction                          */
+	int    nx     = 99;    /* number of data points in x-direction                     */
+	int    ny     = 99;    /* number of data points in y-direction                     */
+	int    dn     = 15000; /* distance for neighbouting prisms for gravity calculation */
+	double ptval  = 100.;  /* max. amount to perturb model                             */
+	double ptval2 = 100.;
+
+	Matrix *Pobs=new Matrix(nx*ny,2); /* data positions */
+	makep(Pobs,nx,ny,dx,dy);
+	// Pobs->Echo();
+
+
+	Matrix *Pp=new Matrix(mx*my,2); /* prisms positions */
+	makep(Pp,mx,my,dx,dy);
+	// Pp->Echo();
+
+	double  rhoi = 917;           /* ice density     */
+	double  rhow = 1030;          /* water density   */
+	// double  rhos = 2013;		      /* sediment density */
+	double  rhoc = 2670;          /* bedrock density */
+
+	Matrix *Rho  = new Matrix(1,2);
+	Rho->SetValue(0,0,rhoi);
+	Rho->SetValue(0,1,rhow);
+	Matrix *rho1  = new Matrix(1,3);
+	rho1->SetValue(0,0,rhoi);
+	rho1->SetValue(0,1,rhow);
+	rho1->SetValue(0,2,rhoc);
+	Matrix *rho2  = new Matrix(1,2);
+	rho2->SetValue(0,0,rhoi-rhoc);
+	rho2->SetValue(0,1,rhow-rhoc);
+
+	double dlevel=3134;         /* level of data acquisition */
+
+	double ctr=1;            /* parameter for filtering */
+	double sd=0.1;
+
+	Matrix *xobs= new Matrix(ny,nx);
+	Matrix *yobs= new Matrix(ny,nx);
+
+	vec2grid(Pobs,xobs,yobs,nx,ny);
+	//	xobs->Echo();
+	//	yobs->Echo();
+
+
+	double mmax  = 1000;               /* max value for layer interfaces */
+	double mmax2 = 1000;
+	double mmax3 = 1000;
+
+	/* control parameter for temperature schedule  */
+
+	double ca=0.9;                    /* for acceptance */
+	double cm=0.5;                    /* for model perturbation */
+
+	double T0a          = 0.1;      /* initial temperature for acceptance           */
+	double T0m          = 0.9;      /* initial temperature for model perturbation   */
+	double D            = 2;        /* dimension of the model                       */
+	int    maxconsecrej = 1000;     /* max consecutive rejection                    */
+	int    maxsuccess   = 100;      /* max number of success within one temperature */
+	double T_min        = 1e-10;    /* stopping temp                                */
+	double Tred         = 1;
+	double E_min        = -1000000;
+	double E_exp        = 0.0291;   /* expected misfit                              */
+	int    maxiter      = 10000;
+	int    maxtotaliter = 1000000;
+	double Tol          = 1e-10;    /* tolerance on misfit                          */
+	int    sfreq        = 100;
+
+	/*}}}*/     
+	/* load the data {{{*/
+
+	/*landmask */
+
+	ifstream file("landmaskzach.txt");
+	Matrix * landmask= new Matrix(nx*ny,1);
+	double inputnumber;
+	for(int i=0;i<ny*nx; i++){ 
+		file >> inputnumber;
+		landmask->SetValue(i,0,inputnumber);
+	}
+	file.close();
+
+	/* Observed gravity anomaly */
+
+	ifstream file1("gravityzach.txt");
+	Matrix * gobs= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){ 
+		file1 >> inputnumber;
+		gobs->SetValue(i,0, inputnumber*1e-5);
+	}
+	file1.close();
+	//	gobs->Echo();
+
+	/* load data about the ice thickness */
+
+	ifstream file2("icethickzach.txt");
+	Matrix * icethick= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file2 >> inputnumber;
+		icethick->SetValue(s,0,inputnumber);
+	}
+	file2.close();
+	//	icethick->Echo();
+
+	/* load the batimethry data */
+
+	ifstream file3("bathymetryzach.txt");
+	Matrix * bathy= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file3 >> inputnumber;
+		bathy->SetValue(s,0,inputnumber);
+	}
+	file3.close();
+	//	bathy->Echo();
+
+	/* id of grid to evaluate misfit */
+
+
+	ifstream file4("evalidzach.txt");
+	Matrix * evalid= new Matrix(nx*ny,1);
+	for(int s=0;s<nx*ny; s++){ 
+		file4 >> inputnumber;
+		evalid->SetValue(s,0,inputnumber);
+	}
+	file4.close();
+	//	evalid->Echo();
+
+	/* initial guess of the model */
+
+	ifstream file5("m0_102714contzach.txt");
+	Matrix * mesh_ini= new Matrix(mx*my,3);
+	for(int s=0;s<mx*my; s++){ 
+		for(int j=0;j<3;j++){
+			file5 >> inputnumber;
+			mesh_ini->SetValue(s,j,inputnumber);
+		}
+	}
+	file5.close();
+	//	mesh_ini->Echo();
+	/*}}}*/
+	/* VFSA {{{ */
+
+	/* name of the files to save results */
+	std::ofstream savefile1 ("r_zach.txt");
+	std::ofstream savefile2("m_zach.txt");
+
+	/* counters initialization */
+	int    success   = 0;
+	int    finished  = 0;
+	int    consec    = 0;
+	double Ta        = T0a;
+	double Tm        = T0m;
+	int    iterT     = 0;   /* iteration within a T      */
+	int    total     = 0;   /* total number of iteration */
+	int    totaliter = 0;
+	int    msave     = 0;
+	double E_new;
+	double E_final;
+	double dE;
+	double P;
+	double rn;
+	Matrix* m_old    = new Matrix(mx *my,3);
+	Matrix* m_min    = new Matrix(mx *my,3);
+	Matrix* m_new    = new Matrix(mx *my,3);
+	m_old->MatrixEqual(mesh_ini);
+
+	/* calculate initial misfit */
+	double E_old=misfit(m_old,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my, my_rank, num_procs);
+	/* record initial settings */
+	if(!my_rank){
+		savefile1 << "P     "<< "Ta    "<< "Tm    "<< "Eold  "<< "totaliter "<< "Tred   "<< endl;
+		savefile1 << "nan   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+		savefile2 << totaliter<< endl;
+		for(int i=0;i<mx*my;i++){
+			savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+		}
+		savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+	}
+	/* beginning of the loop */
+
+	while(finished==0){
+		iterT++;
+		totaliter++;
+
+		/* stop or reduce T */
+		if(iterT>=maxiter || success>maxsuccess){
+			if(Ta<T_min || total>maxtotaliter || fabs(E_old)<=Tol){
+				finished=1;
+				total+=iterT;
+				break;
+			}
+			else{ /* reduce T */
+				Ta=coolshed(T0a,Tred,ca,D);
+				Tm=coolshed(T0m,Tred,cm,D);
+				total+=iterT;
+				iterT=0;
+				success=1;
+				Tred++;
+				consec=0;
+			}
+		}
+
+		/* update model and calculate energy */
+
+		newmodelgen(m_old,m_new,bathy,icethick,mx,my,Tm,ptval,mmax,mmax2,ctr,sd, landmask);  /* new model */
+		E_new=misfit(m_new,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my, my_rank, num_procs); /* new energy */
+		dE=E_new-E_old;                                        /* energy difference */
+
+		/* acceptance probability */
+
+		P=exp(-dE/Ta);
+
+		/* stop if energy is lower than specified minimum */
+		if (E_new<E_min){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			break;
+		}
+
+		rn=rand()/double (RAND_MAX);
+
+		/* accept new model or not */
+		if(dE<=0){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			E_final=E_old;
+			success++;
+			consec=0;
+			if(!my_rank){
+				savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+			}
+			if(Ta<1e-3){
+				if(!my_rank){
+					savefile2 << totaliter<< endl;
+					for(int i=0;i<mx*my;i++){
+						savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+					}
+					savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+				}
+			}
+		}
+		else{
+			if(P>rn){
+				m_old->MatrixEqual(m_new);
+				E_old=E_new;
+				success++;
+				consec=0;
+				if(!my_rank){
+					savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+					if(Ta<1e-3){
+						savefile2 << totaliter<< endl;
+						for(int i=0;i<mx*my;i++){
+							savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+						}
+						savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+					}
+				}
+			}
+			else{
+				consec++;
+			}
+		}
+	}
+
+	m_min->MatrixEqual(m_old);
+	if(!my_rank){
+		savefile1 << "nan"<<"   "<<  "nan"<<"   "<< "nan"<<"   "<< E_final<<"     "<< "nan"<<"         "<< "nan" <<"  "<< endl;
+		savefile2 << " Mesh final"<< endl;
+		for(int i=0;i<mx*my;i++){
+			savefile2 << m_min->GetValue(i,0)<<"   "<< m_min->GetValue(i,1)<<"   "<< m_min->GetValue(i,2)<<endl;
+		}
+	}
+	savefile1.close();
+	savefile2.close();
+
+	delete m_old;
+	delete m_min;
+	delete m_new;
+	delete Pobs;
+	delete Pp;
+	delete Rho;
+	delete rho1;
+	delete rho2;
+	delete xobs;
+	delete yobs;
+	delete mesh_ini;
+	delete bathy;
+	delete icethick;
+	delete evalid;
+	delete gobs;
+	delete landmask;
+
+	/*}}}*/
+
+   MPI_Finalize();
+
+	return 0;
+}/*}}}*/
+
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B){/*{{{*/
+
+	/*GSL Matrices and vectors: */
+	int    M,N;
+	double chisq;
+	/*Get system size*/
+	A->GetSize(&M,&N);
+
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix* a = gsl_matrix_alloc(M,N);
+	for(int i=0;i<M;i++){
+		for(int j=0;j<N;j++){
+			gsl_matrix_set (a,i,j,A->GetValue(i,j));
+		}
+	}
+	gsl_vector* b = gsl_vector_alloc(M);
+	for(int i=0;i<M;i++){
+		gsl_vector_set(b,i,B->GetValue(i,0));
+	}
+
+	gsl_vector* x = gsl_vector_alloc(N);
+	gsl_matrix* cov = gsl_matrix_alloc(N,N);
+
+	/*Least square fit: */
+	gsl_multifit_linear_workspace* work = gsl_multifit_linear_alloc(M,N);
+	gsl_multifit_linear (a, b, x, cov, &chisq, work);
+	gsl_multifit_linear_free (work);
+
+	/*Clean up and assign output pointer*/
+	Matrix* X = new Matrix(N,1);
+	for(int j=0;j<N;j++){
+		X->SetValue(j,0,gsl_vector_get(x,j));
+	}
+	*pX = X;
+
+	gsl_matrix_free(a);
+	gsl_vector_free(x);
+	gsl_vector_free(b);
+	gsl_matrix_free(cov);
+
+}/*}}}*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			Pobs->SetValue(j+nx*i,0,j*dx);
+			Pobs->SetValue(j+nx*i,1,i*dy);
+		}
+	}
+}/*}}}*/
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+			V2->SetValue(i,j, V->GetValue(j+nx*i,1));
+		}
+	}
+}/*}}}*/
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel){/*{{{*/
+	int sizem1,sizem2;
+	m->GetSize(&sizem1,&sizem2);
+	for(int i=0;i<sizem1;i++){
+		for(int j=0;j<sizem2+1;j++){
+			if(j<sizem2){
+				m1->SetValue(i,j,1e-10*(sizem2+1-j));
+				m2->SetValue(i,j,m->GetValue(i,j));
+				if(m->GetValue(i,j)<0){
+					m1->SetValue(i,j,m->GetValue(i,j));
+					m2->SetValue(i,j,i*1e-10);
+				}
+				m1->SetValue(i,j,m1->GetValue(i,j));
+				m2->SetValue(i,j,m2->GetValue(i,j));
+			}
+			else{
+				m1->SetValue(i,j,1e-10);
+			}
+		}
+	}
+	m1->AddNumber(dlevel);
+	m2->AddNumber(dlevel);
+}/*}}}*/
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix* evalid,int my_rank,int num_procs){/*{{{*/
+	double gg=6.673e-11;
+	int si,sj,id,s;
+	double R,Q,P;
+	Matrix *xp= new Matrix(1,2);
+	Matrix *yp= new Matrix(1,2);
+	Matrix *xpp= new Matrix(1,2);
+	Matrix *ypp= new Matrix(1,2);
+	Matrix *U= new Matrix(l,4);
+	Matrix *U1=new Matrix(1,4);
+	Matrix *U2=new Matrix(1,4);
+	Matrix *gl= new Matrix(1,l-1);
+	bool test=true;
+
+	double *glocal=new double[n]();
+
+	for(int c=my_rank;c<n;c+=num_procs){
+		glocal[c]=0;
+		if(evalid->GetValue(i,0)==1){
+			for(int a=0;a<m;a++){
+				test=true;
+				xp->SetValue(0,0,Pp->GetValue(a,0)-Pobs->GetValue(c,0));
+				xp->SetValue(0,1,Pp->GetValue(a,0)-Pobs->GetValue(c,0)+dx);
+				if(xp->GetValue(0,0)<0 && xp->GetValue(0,0)<xp->GetValue(0,1) && xp->GetValue(0,0)*xp->GetValue(0,1)>=0){
+					xpp->SetValue(0,0,xp->GetValue(0,1));
+					xpp->SetValue(0,1,xp->GetValue(0,0));
+					xp->MatrixAbs(xpp);
+				}
+				yp->SetValue(0,0,Pp->GetValue(a,1)-Pobs->GetValue(c,1));
+				yp->SetValue(0,1,Pp->GetValue(a,1)-Pobs->GetValue(c,1)+dy);
+				if(yp->GetValue(0,0)<0 && yp->GetValue(0,0)<yp->GetValue(0,1) && yp->GetValue(0,0)*yp->GetValue(0,1)>=0){
+					ypp->SetValue(0,0,yp->GetValue(0,1));
+					ypp->SetValue(0,1,yp->GetValue(0,0));
+					yp->MatrixAbs(ypp);
+				}
+				P=sqrt(xp->GetValue(0,0)*xp->GetValue(0,0)+yp->GetValue(0,0)*yp->GetValue(0,0));
+				if(P>dn){
+					test=false;
+					for(int i=0;i<l-1;i++){
+						gl->SetValue(0,i,0);
+					}
+				}
+				if(test==true){
+					si=1;
+					sj=1;
+					id=0;
+					for(int i=0;i<2;i++){
+						si*=-1;
+						for(int j=0;j<2;j++){
+							sj*=-1;
+							s=si*sj;
+							for(int k=0;k<l;k++){
+								R=sqrt(xp->GetValue(0,i)*xp->GetValue(0,i)+yp->GetValue(0,j)*yp->GetValue(0,j)+mesh->GetValue(a,k)*mesh->GetValue(a,k));
+								Q=atan(xp->GetValue(0,i)*yp->GetValue(0,j)/(mesh->GetValue(a,k)*R));
+								U->SetValue(k,id,s*(mesh->GetValue(a,k)*Q-xp->GetValue(0,i)*log(R+yp->GetValue(0,j))-yp->GetValue(0,j)*log(R+xp->GetValue(0,i))));
+							}
+							id++;
+						}
+					}
+					for(int b=0;b<l-1;b++){
+						U->ExtractLine(U1,b);
+						U->ExtractLine(U2,b+1);
+						gl->SetValue(0,b,rho->GetValue(0,b)*(U1->MatrixInternSum()*(-1)+U2->MatrixInternSum()));
+					}
+				}
+				glocal[c]=glocal[c]+gg*gl->MatrixInternSum();
+			}
+		}
+	}
+
+	MPI_Allreduce(glocal,g->GetPointer(),n,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
+
+	delete xp;
+	delete yp;
+	delete xpp;
+	delete ypp;
+	delete gl;
+	delete U;
+	delete U1;
+	delete U2;
+	delete []glocal;
+}/*}}}*/
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+		}
+	}
+}/*}}}*/
+void reshape(Matrix* V,Matrix* V1,int nx,int ny){/*{{{*/
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			V1->SetValue(j+nx*i,0,V->GetValue(i,j));
+		}
+	}
+}/*}}}*/
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs){/*{{{*/
+	Matrix* m1=new Matrix(mx*my,4);
+	Matrix* m2=new Matrix(mx*my,3);
+	Matrix* g1=new Matrix(nx*ny,1);
+	Matrix* g2=new Matrix(nx*ny,1);
+	Matrix* g=new Matrix(nx*ny,1);
+	Matrix* gcalgr=new Matrix(ny,nx);
+	Matrix* gcalvec=new Matrix(nx*ny,1);
+	Matrix* df=new Matrix(nx*ny,1);
+	Matrix* G=new Matrix(nx*ny,3);
+	double a=0;
+	double b=0;
+	double e=0;
+	msplit(m0,m1,m2,dlevel);
+	plouff(g1,Pobs,Pp,m1,rho1,dx,dy,dn,mx*my,nx*ny,4,evalid, my_rank, num_procs);
+	plouff(g2,Pobs,Pp,m2,rho2,dx,dy,dn,mx*my,nx*ny,3,evalid, my_rank, num_procs);
+	g->MatrixSum(g1,g2);
+	vec2gridsimple(g,gcalgr,nx,ny);
+	reshape(gcalgr,gcalvec,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		df->SetValue(i,0,evalid->GetValue(i,0)*(gobs->GetValue(i,0)-gcalvec->GetValue(i,0)));
+		G->SetValue(i,0,evalid->GetValue(i,0)*Pobs->GetValue(i,0));
+		G->SetValue(i,1,evalid->GetValue(i,0)*Pobs->GetValue(i,1));
+		G->SetValue(i,2,evalid->GetValue(i,0));
+	}
+	Matrix* M = NULL;
+	GSLsquarefit(&M,G,df);
+
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			gcalgr->SetValue(i,j,gcalgr->GetValue(i,j)+xobs->GetValue(i,j)*M->GetValue(0,0)+yobs->GetValue(i,j)*M->GetValue(1,0)+M->GetValue(2,0));
+		}
+	}
+	reshape(gcalgr,g,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		a=a+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)-g->GetValue(i,0)));
+		b=b+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)+g->GetValue(i,0)));
+	}
+	e=2*a/(a+b);
+
+	delete m1;
+	delete m2;
+	delete g1;
+	delete g2;
+	delete g;
+	delete gcalgr;
+	delete gcalvec;
+	delete df;
+	delete G;
+	delete M;
+
+	return e;
+}/*}}}*/
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd, Matrix *landmask){/*{{{*/
+	Matrix* m1gr=new Matrix(my,mx);
+	Matrix* m1grsm=new Matrix(my,mx);
+	Matrix* m1col=new Matrix(mx*my,1);
+	Matrix* m1gr2=new Matrix(my,mx);
+	Matrix* m1grsm2=new Matrix(my,mx);
+	Matrix* m1col2=new Matrix(mx*my,1);
+	Matrix* nptflag= new Matrix(mx*my,1);
+	double u=0;
+	double y=0;
+	m1->MatrixEqual(m0);
+	nptflag->MatrixSum(icethick,bathy);
+	/* first layer: ice */
+	for (int i=0;i<mx*my;i++){
+		if(landmask->GetValue(i,0)==2){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,1,m0->GetValue(i,1)+y*ptval);
+				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(m1->GetValue(i,1)>=m1->GetValue(i,0)+mmax){
+					m1->SetValue(i,1,m1->GetValue(i,0)+mmax);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+		}
+		else if(landmask->GetValue(i,0)==0){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+				if(m1->GetValue(i,2)<=m1->GetValue(i,0)){
+					m1->SetValue(i,2,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,2)>=m1->GetValue(i,0)+mmax2){
+					m1->SetValue(i,2,m1->GetValue(i,0)+mmax2);
+				}
+			}
+		}
+		else if(landmask->GetValue(i,0)==3){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,1,m0->GetValue(i,1)+y*ptval);
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,1)>=m1->GetValue(i,0)+mmax){
+					m1->SetValue(i,1,m1->GetValue(i,0)+mmax);
+				}
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+				if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(m1->GetValue(i,2)>=m1->GetValue(i,1)+mmax2){
+					m1->SetValue(i,2,m1->GetValue(i,1)+mmax2);
+				}
+			}
+		}
+	}
+
+	m1->ExtractColumn(m1col,1);
+	vec2gridsimple(m1col,m1gr,mx,my);
+	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+	reshape(m1grsm,m1col,mx,my);
+	m1->ExtractColumn(m1col2,2);
+	vec2gridsimple(m1col2,m1gr2,mx,my);
+	filtergrav(m1grsm2,m1gr2,ctr,sd,mx,my);
+	reshape(m1grsm2,m1col2,mx,my);
+
+	for (int i=0;i<mx*my;i++){
+		if(landmask->GetValue(i,0)==2){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,1,m1col->GetValue(i,0));
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(fabs(m1->GetValue(i,2)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else if(landmask->GetValue(i,0)==0){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,2)<=m1->GetValue(i,0)){
+					m1->SetValue(i,2,m1->GetValue(i,0)+1e-10);
+				}
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else if(landmask->GetValue(i,0)==3){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,1,m1col->GetValue(i,0));
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else {
+			if(nptflag->GetValue(i,0)==0){
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,1,m1->GetValue(i,0));
+				}
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,2))>1){
+					m1->SetValue(i,2,m1->GetValue(i,0));
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+	}
+
+				/* second layer: water */
+//	for (int i=0;i<mx*my;i++){
+//		if(bathy->GetValue(i,0)==0){
+//			u=double (rand())/ double(RAND_MAX);
+//			y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+//			m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+//			if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+//				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+//			}
+//			if(m1->GetValue(i,2)>=m1->GetValue(i,1)+mmax2){
+//				m1->SetValue(i,2,m1->GetValue(i,1)+mmax2);
+//			}
+//		}
+//	}
+//	m1->ExtractColumn(m1col,2);
+//	vec2gridsimple(m1col,m1gr,mx,my);
+//	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+//	reshape(m1grsm,m1col,mx,my);
+//	for (int i=0;i<mx*my;i++){
+//		if(bathy->GetValue(i,0)==0){
+//			m1->SetValue(i,2,m1col->GetValue(i,0));
+//		}
+//		else{
+//			m1->SetValue(i,2,m0->GetValue(i,2));
+//		}
+//		if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+//			m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+//		}
+//	}
+	delete m1gr;
+	delete m1grsm;
+	delete m1col;
+	delete m1gr2;
+	delete m1grsm2;
+	delete m1col2;
+	delete nptflag;
+}/*}}}*/
+double signe(double a){/*{{{*/
+	if(a<0){return -1;}
+	else{return 1;}
+}/*}}}*/
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my){/*{{{*/
+	A->MatrixEqual(Ain);
+	for (int i=1;i<my-1;i++){
+		for(int j=1;j<mx-1;j++){
+			A->SetValue(i,j,(ctr*Ain->GetValue(i,j)+sd*(Ain->GetValue(i-1,j)+Ain->GetValue(i+1,j)+Ain->GetValue(i,j-1)+Ain->GetValue(i,j+1)))/(ctr+4*sd));
+		}
+	}
+}/*}}}*/
+double coolshed(double T0,double k,double c,double D){/*{{{*/
+	double T1=T0*exp(-c*pow(k,1/D));
+	return T1;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/code_inversion/vfsa_mpi_uneven.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/code_inversion/vfsa_mpi_uneven.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/code_inversion/vfsa_mpi_uneven.cpp	(revision 27955)
@@ -0,0 +1,882 @@
+#include <iostream>
+#include <cmath>
+#include <fstream>
+#include <string>
+#include <cstdio>
+#include <cstdlib>
+#include <time.h>
+#include <cassert>
+#include <gsl/gsl_multifit.h>
+#include "mpi.h"
+using namespace std;
+
+class Matrix{/*{{{*/
+	private:
+		int     M;        /*Number of lines   */
+		int     N;        /*Number if Columns */
+		double *values;
+	public:
+		Matrix(int m_in,int n_in){/*{{{*/
+			this->M = m_in;
+			this->N = n_in;
+			this->values = new double[M*N]();
+		}/*}}}*/
+		~Matrix(){/*{{{*/
+			delete [] this->values;
+		}/*}}}*/
+		void Echo(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					cout << " " << this->values[i*N+j];
+				}
+				cout << endl;
+			}
+		}/*}}}*/
+		void SetValue(int i,int j,double value){/*{{{*/
+			this->values[i*N+j] = value;
+		}/*}}}*/
+		double GetValue(int i,int j){/*{{{*/
+			return this->values[i*N+j];
+		}/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM = this->M;
+			*pN = this->N;
+		}/*}}}*/
+		double* GetPointer(void){/*{{{*/
+			return this->values;
+		}/*}}}*/
+		void MatrixSum(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) + B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixDiff(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) - B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixAbs(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,fabs(A->GetValue(i,j)));
+				}
+			}
+		}/*}}}*/
+		void MatrixEqual(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		double MatrixInternSum(){/*{{{*/
+			double sum=0;
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					sum+=this->GetValue(i,j);
+				}
+			}
+			return sum;
+		}/*}}}*/
+		void ExtractLine(Matrix* A,int i){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(M_A==1 && this->N==N_A);
+			for(int j=0;j<this->N;j++){
+				A->SetValue(0,j,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void ExtractColumn(Matrix* A,int j){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(N_A==1 && this->M==M_A);
+			for(int i=0;i<this->M;i++){
+				A->SetValue(i,0,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void AddNumber(double a){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,this->GetValue(i,j) + a);
+				}
+			}
+		}/*}}}*/
+};/*}}}*/
+
+/*Local prototypes{{{*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy);
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny);
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,Matrix *dlevel);
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix *evalid,int my_rank,int num_procs);
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny);
+void reshape(Matrix* V,Matrix* V1,int nx,int ny);
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,Matrix *dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs);
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B);
+double signe(double a);
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my);
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd, Matrix *landmask);
+double coolshed(double T0,double k,double c,double D);
+/*}}}*/
+
+int main(int argc,char *argv[]){/*{{{*/
+	
+	int my_rank,num_procs;
+
+	MPI_Init(&argc, &argv);
+
+	MPI_Comm_size(MPI_COMM_WORLD,&num_procs);
+	MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
+
+	/* Seed the random number generator {{{*/
+		srand (time(NULL));            /*}}}*/
+	/* Define the variables {{{*/
+
+	int    dx     = 1000;   /* prism dimension in x-direction                           */
+	int    dy     = 1000;   /* prism dimension in y-direction                           */
+	int    mx     = 99;    /* number of prisms in x-direction                          */
+	int    my     = 99;    /* number of prisms in y-direction                          */
+	int    nx     = 99;    /* number of data points in x-direction                     */
+	int    ny     = 99;    /* number of data points in y-direction                     */
+	int    dn     = 15000; /* distance for neighbouting prisms for gravity calculation */
+	double ptval  = 100.;  /* max. amount to perturb model                             */
+	double ptval2 = 100.;
+
+	Matrix *Pobs=new Matrix(nx*ny,2); /* data positions */
+	makep(Pobs,nx,ny,dx,dy);
+	// Pobs->Echo();
+
+
+	Matrix *Pp=new Matrix(mx*my,2); /* prisms positions */
+	makep(Pp,mx,my,dx,dy);
+	// Pp->Echo();
+
+	double  rhoi = 917;           /* ice density     */
+	double  rhow = 1030;          /* water density   */
+	// double  rhos = 2013;		      /* sediment density */
+	double  rhoc = 2670;          /* bedrock density */
+
+	Matrix *Rho  = new Matrix(1,2);
+	Rho->SetValue(0,0,rhoi);
+	Rho->SetValue(0,1,rhow);
+	Matrix *rho1  = new Matrix(1,3);
+	rho1->SetValue(0,0,rhoi);
+	rho1->SetValue(0,1,rhow);
+	rho1->SetValue(0,2,rhoc);
+	Matrix *rho2  = new Matrix(1,2);
+	rho2->SetValue(0,0,rhoi-rhoc);
+	rho2->SetValue(0,1,rhow-rhoc);
+
+	double ctr=1;            /* parameter for filtering */
+	double sd=0.1;
+
+	Matrix *xobs= new Matrix(ny,nx);
+	Matrix *yobs= new Matrix(ny,nx);
+
+	vec2grid(Pobs,xobs,yobs,nx,ny);
+	//	xobs->Echo();
+	//	yobs->Echo();
+
+
+	double mmax  = 1000;               /* max value for layer interfaces */
+	double mmax2 = 1000;
+	double mmax3 = 1000;
+
+	/* control parameter for temperature schedule  */
+
+	double ca=0.9;                    /* for acceptance */
+	double cm=0.5;                    /* for model perturbation */
+
+	double T0a          = 0.1;      /* initial temperature for acceptance           */
+	double T0m          = 0.9;      /* initial temperature for model perturbation   */
+	double D            = 2;        /* dimension of the model                       */
+	int    maxconsecrej = 1000;     /* max consecutive rejection                    */
+	int    maxsuccess   = 100;      /* max number of success within one temperature */
+	double T_min        = 1e-10;    /* stopping temp                                */
+	double Tred         = 1;
+	double E_min        = -1000000;
+	double E_exp        = 0.0291;   /* expected misfit                              */
+	int    maxiter      = 10000;
+	int    maxtotaliter = 1000000;
+	double Tol          = 1e-10;    /* tolerance on misfit                          */
+	int    sfreq        = 100;
+
+	/*}}}*/     
+	/* load the data {{{*/
+
+	/*landmask */
+
+	ifstream file("landmaskzach.txt");
+	Matrix * landmask= new Matrix(nx*ny,1);
+	double inputnumber;
+	for(int i=0;i<ny*nx; i++){ 
+		file >> inputnumber;
+		landmask->SetValue(i,0,inputnumber);
+	}
+	file.close();
+
+	/* Levels of data acquisition */
+
+	ifstream file0("altizach.txt");
+	Matrix * dlevel= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){
+		file0 >> inputnumber;
+		dlevel->SetValue(i,0,inputnumber);
+	}
+	file0.close();
+
+	/* Observed gravity anomaly */
+
+	ifstream file1("gravityzach.txt");
+	Matrix * gobs= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){ 
+		file1 >> inputnumber;
+		gobs->SetValue(i,0, inputnumber*1e-5);
+	}
+	file1.close();
+	//	gobs->Echo();
+
+	/* load data about the ice thickness */
+
+	ifstream file2("icethickzach.txt");
+	Matrix * icethick= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file2 >> inputnumber;
+		icethick->SetValue(s,0,inputnumber);
+	}
+	file2.close();
+	//	icethick->Echo();
+
+	/* load the batimethry data */
+
+	ifstream file3("bathymetryzach.txt");
+	Matrix * bathy= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file3 >> inputnumber;
+		bathy->SetValue(s,0,inputnumber);
+	}
+	file3.close();
+	//	bathy->Echo();
+
+	/* id of grid to evaluate misfit */
+
+
+	ifstream file4("evalidzach.txt");
+	Matrix * evalid= new Matrix(nx*ny,1);
+	for(int s=0;s<nx*ny; s++){ 
+		file4 >> inputnumber;
+		evalid->SetValue(s,0,inputnumber);
+	}
+	file4.close();
+	//	evalid->Echo();
+
+	/* initial guess of the model */
+
+	ifstream file5("m0_102714contzach.txt");
+	Matrix * mesh_ini= new Matrix(mx*my,3);
+	for(int s=0;s<mx*my; s++){ 
+		for(int j=0;j<3;j++){
+			file5 >> inputnumber;
+			mesh_ini->SetValue(s,j,inputnumber);
+		}
+	}
+	file5.close();
+	//	mesh_ini->Echo();
+	/*}}}*/
+	/* VFSA {{{ */
+
+	/* name of the files to save results */
+	std::ofstream savefile1 ("r_zach.txt");
+	std::ofstream savefile2("m_zach.txt");
+
+	/* counters initialization */
+	int    success   = 0;
+	int    finished  = 0;
+	int    consec    = 0;
+	double Ta        = T0a;
+	double Tm        = T0m;
+	int    iterT     = 0;   /* iteration within a T      */
+	int    total     = 0;   /* total number of iteration */
+	int    totaliter = 0;
+	int    msave     = 0;
+	double E_new;
+	double E_final;
+	double dE;
+	double P;
+	double rn;
+	Matrix* m_old    = new Matrix(mx *my,3);
+	Matrix* m_min    = new Matrix(mx *my,3);
+	Matrix* m_new    = new Matrix(mx *my,3);
+	m_old->MatrixEqual(mesh_ini);
+
+	/* calculate initial misfit */
+	double E_old=misfit(m_old,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my, my_rank, num_procs);
+	/* record initial settings */
+	if(!my_rank){
+		savefile1 << "P     "<< "Ta    "<< "Tm    "<< "Eold  "<< "totaliter "<< "Tred   "<< endl;
+		savefile1 << "nan   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+		savefile2 << totaliter<< endl;
+		for(int i=0;i<mx*my;i++){
+			savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+		}
+		savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+	}
+	/* beginning of the loop */
+
+	while(finished==0){
+		iterT++;
+		totaliter++;
+
+		/* stop or reduce T */
+		if(iterT>=maxiter || success>maxsuccess){
+			if(Ta<T_min || total>maxtotaliter || fabs(E_old)<=Tol){
+				finished=1;
+				total+=iterT;
+				break;
+			}
+			else{ /* reduce T */
+				Ta=coolshed(T0a,Tred,ca,D);
+				Tm=coolshed(T0m,Tred,cm,D);
+				total+=iterT;
+				iterT=0;
+				success=1;
+				Tred++;
+				consec=0;
+			}
+		}
+
+		/* update model and calculate energy */
+
+		newmodelgen(m_old,m_new,bathy,icethick,mx,my,Tm,ptval,mmax,mmax2,ctr,sd, landmask);  /* new model */
+		E_new=misfit(m_new,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my, my_rank, num_procs); /* new energy */
+		dE=E_new-E_old;                                        /* energy difference */
+
+		/* acceptance probability */
+
+		P=exp(-dE/Ta);
+
+		/* stop if energy is lower than specified minimum */
+		if (E_new<E_min){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			break;
+		}
+
+		rn=rand()/double (RAND_MAX);
+
+		/* accept new model or not */
+		if(dE<=0){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			E_final=E_old;
+			success++;
+			consec=0;
+			if(!my_rank){
+				savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+			}
+			if(Ta<1e-3){
+				if(!my_rank){
+					savefile2 << totaliter<< endl;
+					for(int i=0;i<mx*my;i++){
+						savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+					}
+					savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+				}
+			}
+		}
+		else{
+			if(P>rn){
+				m_old->MatrixEqual(m_new);
+				E_old=E_new;
+				success++;
+				consec=0;
+				if(!my_rank){
+					savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+					if(Ta<1e-3){
+						savefile2 << totaliter<< endl;
+						for(int i=0;i<mx*my;i++){
+							savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+						}
+						savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+					}
+				}
+			}
+			else{
+				consec++;
+			}
+		}
+	}
+
+	m_min->MatrixEqual(m_old);
+	if(!my_rank){
+		savefile1 << "nan"<<"   "<<  "nan"<<"   "<< "nan"<<"   "<< E_final<<"     "<< "nan"<<"         "<< "nan" <<"  "<< endl;
+		savefile2 << " Mesh final"<< endl;
+		for(int i=0;i<mx*my;i++){
+			savefile2 << m_min->GetValue(i,0)<<"   "<< m_min->GetValue(i,1)<<"   "<< m_min->GetValue(i,2)<<endl;
+		}
+	}
+	savefile1.close();
+	savefile2.close();
+
+	delete m_old;
+	delete m_min;
+	delete m_new;
+	delete Pobs;
+	delete Pp;
+	delete Rho;
+	delete rho1;
+	delete rho2;
+	delete xobs;
+	delete yobs;
+	delete mesh_ini;
+	delete bathy;
+	delete icethick;
+	delete evalid;
+	delete gobs;
+	delete landmask;
+
+	/*}}}*/
+
+   MPI_Finalize();
+
+	return 0;
+}/*}}}*/
+
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B){/*{{{*/
+
+	/*GSL Matrices and vectors: */
+	int    M,N;
+	double chisq;
+	/*Get system size*/
+	A->GetSize(&M,&N);
+
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix* a = gsl_matrix_alloc(M,N);
+	for(int i=0;i<M;i++){
+		for(int j=0;j<N;j++){
+			gsl_matrix_set (a,i,j,A->GetValue(i,j));
+		}
+	}
+	gsl_vector* b = gsl_vector_alloc(M);
+	for(int i=0;i<M;i++){
+		gsl_vector_set(b,i,B->GetValue(i,0));
+	}
+
+	gsl_vector* x = gsl_vector_alloc(N);
+	gsl_matrix* cov = gsl_matrix_alloc(N,N);
+
+	/*Least square fit: */
+	gsl_multifit_linear_workspace* work = gsl_multifit_linear_alloc(M,N);
+	gsl_multifit_linear (a, b, x, cov, &chisq, work);
+	gsl_multifit_linear_free (work);
+
+	/*Clean up and assign output pointer*/
+	Matrix* X = new Matrix(N,1);
+	for(int j=0;j<N;j++){
+		X->SetValue(j,0,gsl_vector_get(x,j));
+	}
+	*pX = X;
+
+	gsl_matrix_free(a);
+	gsl_vector_free(x);
+	gsl_vector_free(b);
+	gsl_matrix_free(cov);
+
+}/*}}}*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			Pobs->SetValue(j+nx*i,0,j*dx);
+			Pobs->SetValue(j+nx*i,1,i*dy);
+		}
+	}
+}/*}}}*/
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+			V2->SetValue(i,j, V->GetValue(j+nx*i,1));
+		}
+	}
+}/*}}}*/
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,Matrix* dlevel){/*{{{*/
+	int sizem1,sizem2;
+	m->GetSize(&sizem1,&sizem2);
+	for(int i=0;i<sizem1;i++){
+		for(int j=0;j<sizem2+1;j++){
+			if(j<sizem2){
+				m1->SetValue(i,j,1e-10*(sizem2+1-j));
+				m2->SetValue(i,j,m->GetValue(i,j));
+				if(m->GetValue(i,j)<0){
+					m1->SetValue(i,j,m->GetValue(i,j));
+					m2->SetValue(i,j,i*1e-10);
+				}
+				m1->SetValue(i,j,m1->GetValue(i,j)+dlevel->GetValue(i,1));
+				m2->SetValue(i,j,m2->GetValue(i,j)+dlevel->GetValue(i,1));
+			}
+			else{
+				m1->SetValue(i,j,1e-10+dlevel->GetValue(i,1));
+			}
+		}
+	}
+}/*}}}*/
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix* evalid,int my_rank,int num_procs){/*{{{*/
+	double gg=6.673e-11;
+	int si,sj,id,s;
+	double R,Q,P;
+	Matrix *xp= new Matrix(1,2);
+	Matrix *yp= new Matrix(1,2);
+	Matrix *xpp= new Matrix(1,2);
+	Matrix *ypp= new Matrix(1,2);
+	Matrix *U= new Matrix(l,4);
+	Matrix *U1=new Matrix(1,4);
+	Matrix *U2=new Matrix(1,4);
+	Matrix *gl= new Matrix(1,l-1);
+	bool test=true;
+
+	double *glocal=new double[n]();
+
+	for(int c=my_rank;c<n;c+=num_procs){
+		glocal[c]=0;
+		if(evalid->GetValue(i,0)==1){
+			for(int a=0;a<m;a++){
+				test=true;
+				xp->SetValue(0,0,Pp->GetValue(a,0)-Pobs->GetValue(c,0));
+				xp->SetValue(0,1,Pp->GetValue(a,0)-Pobs->GetValue(c,0)+dx);
+				if(xp->GetValue(0,0)<0 && xp->GetValue(0,0)<xp->GetValue(0,1) && xp->GetValue(0,0)*xp->GetValue(0,1)>=0){
+					xpp->SetValue(0,0,xp->GetValue(0,1));
+					xpp->SetValue(0,1,xp->GetValue(0,0));
+					xp->MatrixAbs(xpp);
+				}
+				yp->SetValue(0,0,Pp->GetValue(a,1)-Pobs->GetValue(c,1));
+				yp->SetValue(0,1,Pp->GetValue(a,1)-Pobs->GetValue(c,1)+dy);
+				if(yp->GetValue(0,0)<0 && yp->GetValue(0,0)<yp->GetValue(0,1) && yp->GetValue(0,0)*yp->GetValue(0,1)>=0){
+					ypp->SetValue(0,0,yp->GetValue(0,1));
+					ypp->SetValue(0,1,yp->GetValue(0,0));
+					yp->MatrixAbs(ypp);
+				}
+				P=sqrt(xp->GetValue(0,0)*xp->GetValue(0,0)+yp->GetValue(0,0)*yp->GetValue(0,0));
+				if(P>dn){
+					test=false;
+					for(int i=0;i<l-1;i++){
+						gl->SetValue(0,i,0);
+					}
+				}
+				if(test==true){
+					si=1;
+					sj=1;
+					id=0;
+					for(int i=0;i<2;i++){
+						si*=-1;
+						for(int j=0;j<2;j++){
+							sj*=-1;
+							s=si*sj;
+							for(int k=0;k<l;k++){
+								R=sqrt(xp->GetValue(0,i)*xp->GetValue(0,i)+yp->GetValue(0,j)*yp->GetValue(0,j)+mesh->GetValue(a,k)*mesh->GetValue(a,k));
+								Q=atan(xp->GetValue(0,i)*yp->GetValue(0,j)/(mesh->GetValue(a,k)*R));
+								U->SetValue(k,id,s*(mesh->GetValue(a,k)*Q-xp->GetValue(0,i)*log(R+yp->GetValue(0,j))-yp->GetValue(0,j)*log(R+xp->GetValue(0,i))));
+							}
+							id++;
+						}
+					}
+					for(int b=0;b<l-1;b++){
+						U->ExtractLine(U1,b);
+						U->ExtractLine(U2,b+1);
+						gl->SetValue(0,b,rho->GetValue(0,b)*(U1->MatrixInternSum()*(-1)+U2->MatrixInternSum()));
+					}
+				}
+				glocal[c]=glocal[c]+gg*gl->MatrixInternSum();
+			}
+		}
+	}
+
+	MPI_Allreduce(glocal,g->GetPointer(),n,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
+
+	delete xp;
+	delete yp;
+	delete xpp;
+	delete ypp;
+	delete gl;
+	delete U;
+	delete U1;
+	delete U2;
+	delete []glocal;
+}/*}}}*/
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+		}
+	}
+}/*}}}*/
+void reshape(Matrix* V,Matrix* V1,int nx,int ny){/*{{{*/
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			V1->SetValue(j+nx*i,0,V->GetValue(i,j));
+		}
+	}
+}/*}}}*/
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,Matrix *dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs){/*{{{*/
+	Matrix* m1=new Matrix(mx*my,4);
+	Matrix* m2=new Matrix(mx*my,3);
+	Matrix* g1=new Matrix(nx*ny,1);
+	Matrix* g2=new Matrix(nx*ny,1);
+	Matrix* g=new Matrix(nx*ny,1);
+	Matrix* gcalgr=new Matrix(ny,nx);
+	Matrix* gcalvec=new Matrix(nx*ny,1);
+	Matrix* df=new Matrix(nx*ny,1);
+	Matrix* G=new Matrix(nx*ny,3);
+	double a=0;
+	double b=0;
+	double e=0;
+	msplit(m0,m1,m2,dlevel);
+	plouff(g1,Pobs,Pp,m1,rho1,dx,dy,dn,mx*my,nx*ny,4,evalid, my_rank, num_procs);
+	plouff(g2,Pobs,Pp,m2,rho2,dx,dy,dn,mx*my,nx*ny,3,evalid, my_rank, num_procs);
+	g->MatrixSum(g1,g2);
+	vec2gridsimple(g,gcalgr,nx,ny);
+	reshape(gcalgr,gcalvec,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		df->SetValue(i,0,evalid->GetValue(i,0)*(gobs->GetValue(i,0)-gcalvec->GetValue(i,0)));
+		G->SetValue(i,0,evalid->GetValue(i,0)*Pobs->GetValue(i,0));
+		G->SetValue(i,1,evalid->GetValue(i,0)*Pobs->GetValue(i,1));
+		G->SetValue(i,2,evalid->GetValue(i,0));
+	}
+	Matrix* M = NULL;
+	GSLsquarefit(&M,G,df);
+
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			gcalgr->SetValue(i,j,gcalgr->GetValue(i,j)+xobs->GetValue(i,j)*M->GetValue(0,0)+yobs->GetValue(i,j)*M->GetValue(1,0)+M->GetValue(2,0));
+		}
+	}
+	reshape(gcalgr,g,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		a=a+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)-g->GetValue(i,0)));
+		b=b+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)+g->GetValue(i,0)));
+	}
+	e=2*a/(a+b);
+
+	delete m1;
+	delete m2;
+	delete g1;
+	delete g2;
+	delete g;
+	delete gcalgr;
+	delete gcalvec;
+	delete df;
+	delete G;
+	delete M;
+
+	return e;
+}/*}}}*/
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd, Matrix *landmask){/*{{{*/
+	Matrix* m1gr=new Matrix(my,mx);
+	Matrix* m1grsm=new Matrix(my,mx);
+	Matrix* m1col=new Matrix(mx*my,1);
+	Matrix* m1gr2=new Matrix(my,mx);
+	Matrix* m1grsm2=new Matrix(my,mx);
+	Matrix* m1col2=new Matrix(mx*my,1);
+	Matrix* nptflag= new Matrix(mx*my,1);
+	double u=0;
+	double y=0;
+	m1->MatrixEqual(m0);
+	nptflag->MatrixSum(icethick,bathy);
+	/* first layer: ice */
+	for (int i=0;i<mx*my;i++){
+		if(landmask->GetValue(i,0)==2){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,1,m0->GetValue(i,1)+y*ptval);
+				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(m1->GetValue(i,1)>=m1->GetValue(i,0)+mmax){
+					m1->SetValue(i,1,m1->GetValue(i,0)+mmax);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+		}
+		else if(landmask->GetValue(i,0)==0){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+				if(m1->GetValue(i,2)<=m1->GetValue(i,0)){
+					m1->SetValue(i,2,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,2)>=m1->GetValue(i,0)+mmax2){
+					m1->SetValue(i,2,m1->GetValue(i,0)+mmax2);
+				}
+			}
+		}
+		else if(landmask->GetValue(i,0)==3){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,1,m0->GetValue(i,1)+y*ptval);
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,1)>=m1->GetValue(i,0)+mmax){
+					m1->SetValue(i,1,m1->GetValue(i,0)+mmax);
+				}
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+				if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(m1->GetValue(i,2)>=m1->GetValue(i,1)+mmax2){
+					m1->SetValue(i,2,m1->GetValue(i,1)+mmax2);
+				}
+			}
+		}
+	}
+
+	m1->ExtractColumn(m1col,1);
+	vec2gridsimple(m1col,m1gr,mx,my);
+	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+	reshape(m1grsm,m1col,mx,my);
+	m1->ExtractColumn(m1col2,2);
+	vec2gridsimple(m1col2,m1gr2,mx,my);
+	filtergrav(m1grsm2,m1gr2,ctr,sd,mx,my);
+	reshape(m1grsm2,m1col2,mx,my);
+
+	for (int i=0;i<mx*my;i++){
+		if(landmask->GetValue(i,0)==2){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,1,m1col->GetValue(i,0));
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(fabs(m1->GetValue(i,2)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else if(landmask->GetValue(i,0)==0){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,2)<=m1->GetValue(i,0)){
+					m1->SetValue(i,2,m1->GetValue(i,0)+1e-10);
+				}
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else if(landmask->GetValue(i,0)==3){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,1,m1col->GetValue(i,0));
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else {
+			if(nptflag->GetValue(i,0)==0){
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,1,m1->GetValue(i,0));
+				}
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,2))>1){
+					m1->SetValue(i,2,m1->GetValue(i,0));
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+	}
+
+				/* second layer: water */
+//	for (int i=0;i<mx*my;i++){
+//		if(bathy->GetValue(i,0)==0){
+//			u=double (rand())/ double(RAND_MAX);
+//			y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+//			m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+//			if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+//				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+//			}
+//			if(m1->GetValue(i,2)>=m1->GetValue(i,1)+mmax2){
+//				m1->SetValue(i,2,m1->GetValue(i,1)+mmax2);
+//			}
+//		}
+//	}
+//	m1->ExtractColumn(m1col,2);
+//	vec2gridsimple(m1col,m1gr,mx,my);
+//	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+//	reshape(m1grsm,m1col,mx,my);
+//	for (int i=0;i<mx*my;i++){
+//		if(bathy->GetValue(i,0)==0){
+//			m1->SetValue(i,2,m1col->GetValue(i,0));
+//		}
+//		else{
+//			m1->SetValue(i,2,m0->GetValue(i,2));
+//		}
+//		if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+//			m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+//		}
+//	}
+	delete m1gr;
+	delete m1grsm;
+	delete m1col;
+	delete m1gr2;
+	delete m1grsm2;
+	delete m1col2;
+	delete nptflag;
+}/*}}}*/
+double signe(double a){/*{{{*/
+	if(a<0){return -1;}
+	else{return 1;}
+}/*}}}*/
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my){/*{{{*/
+	A->MatrixEqual(Ain);
+	for (int i=1;i<my-1;i++){
+		for(int j=1;j<mx-1;j++){
+			A->SetValue(i,j,(ctr*Ain->GetValue(i,j)+sd*(Ain->GetValue(i-1,j)+Ain->GetValue(i+1,j)+Ain->GetValue(i,j-1)+Ain->GetValue(i,j+1)))/(ctr+4*sd));
+		}
+	}
+}/*}}}*/
+double coolshed(double T0,double k,double c,double D){/*{{{*/
+	double T1=T0*exp(-c*pow(k,1/D));
+	return T1;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/vfsa.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/vfsa.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/vfsa.cpp	(revision 27955)
@@ -0,0 +1,823 @@
+#include <iostream>
+#include <cmath>
+#include <fstream>
+#include <string>
+#include <cstdio>
+#include <cstdlib>
+#include <time.h>
+#include <cassert>
+#include <gsl/gsl_multifit.h>
+#include <pthread.h>
+
+using namespace std;
+
+class Matrix{/*{{{*/
+	private:
+		int     M;        /*Number of lines   */
+		int     N;        /*Number if Columns */
+		double *values;
+	public:
+		Matrix(int m_in,int n_in){/*{{{*/
+			this->M = m_in;
+			this->N = n_in;
+			this->values = new double[M*N];
+		}/*}}}*/
+		~Matrix(){/*{{{*/
+			delete [] this->values;
+		}/*}}}*/
+		void Echo(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					cout << " " << this->values[i*N+j];
+				}
+				cout << endl;
+			}
+		}/*}}}*/
+		void SetValue(int i,int j,double value){/*{{{*/
+			this->values[i*N+j] = value;
+		}/*}}}*/
+		double GetValue(int i,int j){/*{{{*/
+			return this->values[i*N+j];
+		}/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM = this->M;
+			*pN = this->N;
+		}/*}}}*/
+		double* GetPointer(void){/*{{{*/
+			return this->values;
+		}/*}}}*/
+		void MatrixSum(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) + B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixDiff(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) - B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixAbs(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,fabs(A->GetValue(i,j)));
+				}
+			}
+		}/*}}}*/
+		void MatrixEqual(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		double MatrixInternSum(){/*{{{*/
+			double sum=0;
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					sum+=this->GetValue(i,j);
+				}
+			}
+			return sum;
+		}/*}}}*/
+		void ExtractLine(Matrix* A,int i){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(M_A==1 && this->N==N_A);
+			for(int j=0;j<this->N;j++){
+				A->SetValue(0,j,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void ExtractColumn(Matrix* A,int j){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(N_A==1 && this->M==M_A);
+			for(int i=0;i<this->M;i++){
+				A->SetValue(i,0,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void AddNumber(double a){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,this->GetValue(i,j) + a);
+				}
+			}
+		}/*}}}*/
+};/*}}}*/
+
+/*Local prototypes{{{*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy);
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny);
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel);
+void* plouffT(void* vpthread_handle);
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny);
+void reshape(Matrix* V,Matrix* V1,int nx,int ny);
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my);
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B);
+double signe(double a);
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my);
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd);
+double coolshed(double T0,double k,double c,double D);
+void   LaunchThread(void* function(void*), void* usr,int num_threads);
+/*}}}*/
+
+/*Multithreading structures {{{*/
+typedef struct{
+	void* usr;
+	int   my_thread;
+	int   num_threads;
+} pthread_handle;
+
+typedef struct{
+	Matrix *g;
+	Matrix *Pobs;
+	Matrix *Pp;
+	Matrix *mesh;
+	Matrix *rho;
+	int dx;
+	int dy;
+	int dn;
+	int m;
+	int n;
+	int l;
+} AppStruct;
+/*}}}*/
+
+int main(){/*{{{*/
+
+	/* Seed the random number generator {{{*/
+	srand (time(NULL));               /*}}}*/
+	/* Define the variables {{{*/
+
+	int    dx     = 500;   /* prism dimension in x-direction                           */
+	int    dy     = 500;   /* prism dimension in y-direction                           */
+	int    mx     = 39;    /* number of prisms in x-direction                          */
+	int    my     = 60;    /* number of prisms in y-direction                          */
+	int    nx     = 39;    /* number of data points in x-direction                     */
+	int    ny     = 60;    /* number of data points in y-direction                     */
+	int    dn     = 15000; /* distance for neighbouting prisms for gravity calculation */
+	double ptval  = 100.;  /* max. amount to perturb model                             */
+	double ptval2 = 100.;
+
+	Matrix *Pobs=new Matrix(nx*ny,2); /* data positions */
+	makep(Pobs,nx,ny,dx,dy);
+// Pobs->Echo();
+
+
+	Matrix *Pp=new Matrix(mx*my,2); /* data positions */
+	makep(Pp,mx,my,dx,dy);
+// Pp->Echo();
+
+	double  rhoi = 890;           /* ice density     */
+	double  rhow = 1030;          /* water density   */
+// double  rhos = 2013;		      /* sediment density */
+	double  rhoc = 2670;          /* bedrock density */
+	
+	Matrix *Rho  = new Matrix(1,2);
+	Rho->SetValue(0,0,rhoi);
+	Rho->SetValue(0,1,rhow);
+	Matrix *rho1  = new Matrix(1,3);
+	rho1->SetValue(0,0,rhoi);
+	rho1->SetValue(0,1,rhow);
+	rho1->SetValue(0,2,rhoc);
+	Matrix *rho2  = new Matrix(1,2);
+	rho2->SetValue(0,0,rhoi-rhoc);
+	rho2->SetValue(0,1,rhow-rhoc);
+	
+	double ctr=1;            /* parameter for filtering */
+	double sd=0.1;
+
+	Matrix *xobs= new Matrix(ny,nx);
+	Matrix *yobs= new Matrix(ny,nx);
+
+	vec2grid(Pobs,xobs,yobs,nx,ny);
+//	xobs->Echo();
+//	yobs->Echo();
+
+	double dlevel= 860;                /* mean level of data acquisition */
+
+	double mmax  = 1000;               /* max value for layer interfaces */
+	double mmax2 = 1000;
+	double mmax3 = 1000;
+
+	/* control parameter for temperature schedule  */
+
+	double ca=0.9;                    /* for acceptance */
+	double cm=0.5;                    /* for model perturbation */
+
+	double T0a          = 0.1;      /* initial temperature for acceptance           */
+	double T0m          = 0.9;      /* initial temperature for model perturbation   */
+	double D            = 2;        /* dimension of the model                       */
+	int    maxconsecrej = 1000;     /* max consecutive rejection                    */
+	int    maxsuccess   = 100;      /* max number of success within one temperature */
+	double T_min        = 1e-10;    /* stopping temp                                */
+	double Tred         = 1;
+	double E_min        = -1000000;
+	double E_exp        = 0.0291;   /* expected misfit                              */
+	int    maxiter      = 10000;
+	int    maxtotaliter = 1000000;
+	double Tol          = 1e-10;    /* tolerance on misfit                          */
+	int    sfreq        = 100;
+
+	                     /*}}}*/     
+	/* load the data {{{*/
+
+	/* Observed gravity anomaly */
+
+	ifstream file1("store_fa500_36s.txt");
+	Matrix * gobs= new Matrix(nx*ny,1);
+	double inputnumber;
+	for(int i=0;i<ny*nx; i++){ 
+		file1 >> inputnumber;
+		gobs->SetValue(i,0, inputnumber*1e-5);
+	}
+	file1.close();
+//	gobs->Echo();
+	
+	/* load data about the ice thickness */
+
+	ifstream file2("store_flag_icethick500.txt");
+	Matrix * icethick= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file2 >> inputnumber;
+		icethick->SetValue(s,0,inputnumber);
+	}
+	file2.close();
+//	icethick->Echo();
+
+	/* load the batimethry data */
+
+	ifstream file3("store_flag_bathy500.txt");
+	Matrix * bathy= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file3 >> inputnumber;
+		bathy->SetValue(s,0,inputnumber);
+	}
+	file3.close();
+//	bathy->Echo();
+	
+	/* id of grid to evaluate misfit */
+
+
+	ifstream file4("store_flag_eval500.txt");
+	Matrix * evalid= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file4 >> inputnumber;
+		evalid->SetValue(s,0,inputnumber);
+	}
+	file4.close();
+//	evalid->Echo();
+	
+	/* initial guess of the model */
+
+	ifstream file5("m0_140114b.txt");
+	Matrix * mesh_ini= new Matrix(mx*my,3);
+	for(int s=0;s<mx*my; s++){ 
+		for(int j=0;j<3;j++){
+		file5 >> inputnumber;
+		mesh_ini->SetValue(s,j,inputnumber);
+	}
+	}
+	file5.close();
+//	mesh_ini->Echo();
+                           /*}}}*/
+		/* VFSA {{{ */
+
+	/* name of the files to save results */
+	std::ofstream savefile1 ("r_140114b.txt");
+	std::ofstream savefile2("m_140114b.txt");
+
+	/* counters initialization */
+	int    success   = 0;
+	int    finished  = 0;
+	int    consec    = 0;
+	double Ta        = T0a;
+	double Tm        = T0m;
+	int    iterT     = 0;   /* iteration within a T      */
+	int    total     = 0;   /* total number of iteration */
+	int    totaliter = 0;
+	int    msave     = 0;
+	double E_new;
+	double E_final;
+	double dE;
+	double P;
+	double rn;
+	Matrix* m_old    = new Matrix(mx *my,3);
+	Matrix* m_min    = new Matrix(mx *my,3);
+	Matrix* m_new    = new Matrix(mx *my,3);
+	m_old->MatrixEqual(mesh_ini);
+
+	/* calculate initial misfit */
+	double E_old=misfit(m_old,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my);
+
+	/* record initial settings */
+	savefile1 << "P     "<< "Ta    "<< "Tm    "<< "Eold  "<< "totaliter "<< "Tred   "<< endl;
+	savefile1 << "nan   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+	savefile2 << totaliter<< endl;
+	for(int i=0;i<mx*my;i++){
+		savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+	}
+	savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+
+	/* beginning of the loop */
+
+	while(finished==0){
+
+		iterT++;
+		totaliter++;
+
+		/* stop or reduce T */
+		if(iterT>=maxiter || success>maxsuccess){
+			if(Ta<T_min || total>maxtotaliter || fabs(E_old)<=Tol){
+				finished=1;
+				total+=iterT;
+				break;
+			}
+			else{ /* reduce T */
+				Ta=coolshed(T0a,Tred,ca,D);
+				Tm=coolshed(T0m,Tred,cm,D);
+				total+=iterT;
+				iterT=0;
+				success=1;
+				Tred++;
+				consec=0;
+			}
+		}
+
+		/* update model and calculate energy */
+
+		newmodelgen(m_old,m_new,bathy,icethick,mx,my,Tm,ptval,mmax,mmax2,ctr,sd);  /* new model */
+		E_new=misfit(m_new,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my); /* new energy */
+		dE=E_new-E_old;                                        /* energy difference */
+
+		/* acceptance probability */
+
+		P=exp(-dE/Ta);
+
+		/* stop if energy is lower than specified minimum */
+		if (E_new<E_min){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			break;
+		}
+
+		rn=rand()/double (RAND_MAX);
+
+		/* accept new model or not */
+		if(dE<=0){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			success++;
+			consec=0;
+			savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+			if(Ta<1e-3){
+				savefile2 << totaliter<< endl;
+				for(int i=0;i<mx*my;i++){
+					savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+				}
+				savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+			}
+		}
+		else{
+			if(P>rn){
+				m_old->MatrixEqual(m_new);
+				E_old=E_new;
+				success++;
+				consec=0;
+				savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+				if(Ta<1e-3){
+					savefile2 << totaliter<< endl;
+					for(int i=0;i<mx*my;i++){
+						savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+					}
+					savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+				}
+			}
+			else{
+				consec++;
+			}
+		}
+	cout<<totaliter<<endl;
+	}
+
+	m_min->MatrixEqual(m_old);
+	E_final=E_old;
+	savefile1 << "nan"<<"   "<<  "nan"<<"   "<< "nan"<<"   "<< E_final<<"     "<< "nan"<<"         "<< "nan" <<"  "<< endl;
+	savefile2 << " Mesh final"<< endl;
+	for(int i=0;i<mx*my;i++){
+		savefile2 << m_min->GetValue(i,0)<<"   "<< m_min->GetValue(i,1)<<"   "<< m_min->GetValue(i,2)<<endl;
+	}
+	savefile1.close();
+	savefile2.close();
+
+	delete m_old;
+	delete m_min;
+	delete m_new;
+	delete Pobs;
+	delete Pp;
+	delete Rho;
+	delete rho1;
+	delete rho2;
+	delete xobs;
+	delete yobs;
+	delete mesh_ini;
+	delete bathy;
+	delete icethick;
+	delete evalid;
+
+			/*}}}*/
+	return 0;
+}/*}}}*/
+
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B){/*{{{*/
+
+	/*GSL Matrices and vectors: */
+	int    M,N;
+	double chisq;
+
+	/*Get system size*/
+	A->GetSize(&M,&N);
+
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix* a = gsl_matrix_alloc(M,N);
+	for(int i=0;i<M;i++){
+		for(int j=0;j<N;j++){
+			gsl_matrix_set (a,i,j,A->GetValue(i,j));
+		}
+	}
+	gsl_vector* b = gsl_vector_alloc(M);
+	for(int i=0;i<M;i++){
+		gsl_vector_set(b,i,B->GetValue(i,0));
+	}
+
+	gsl_vector* x = gsl_vector_alloc(N);
+	gsl_matrix* cov = gsl_matrix_alloc(N,N);
+
+	/*Least square fit: */
+	gsl_multifit_linear_workspace* work = gsl_multifit_linear_alloc(M,N);
+	gsl_multifit_linear (a, b, x, cov, &chisq, work);
+	gsl_multifit_linear_free (work);
+
+	/*Clean up and assign output pointer*/
+	Matrix* X = new Matrix(N,1);
+	for(int j=0;j<N;j++){
+		X->SetValue(j,0,gsl_vector_get(x,j));
+	}
+	*pX = X;
+
+	gsl_matrix_free(a);
+	gsl_vector_free(b);
+	gsl_vector_free(x);
+	gsl_matrix_free(cov);
+
+}/*}}}*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			Pobs->SetValue(j+nx*i,0,j*dx);
+			Pobs->SetValue(j+nx*i,1,i*dy);
+		}
+	}
+}/*}}}*/
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+			V2->SetValue(i,j, V->GetValue(j+nx*i,1));
+		}
+	}
+}/*}}}*/
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel){/*{{{*/
+	int sizem1,sizem2;
+	m->GetSize(&sizem1,&sizem2);
+	for(int i=0;i<sizem1;i++){
+		for(int j=0;j<sizem2+1;j++){
+			if(j<sizem2){
+				m1->SetValue(i,j,1e-10*(sizem2+1-j));
+				m2->SetValue(i,j,m->GetValue(i,j));
+				if(m->GetValue(i,j)<0){
+					m1->SetValue(i,j,m->GetValue(i,j));
+					m2->SetValue(i,j,i*1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,j,1e-10);
+			}
+		}
+	}
+	m1->AddNumber(dlevel);
+	m2->AddNumber(dlevel);
+}/*}}}*/
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+		}
+	}
+}/*}}}*/
+void reshape(Matrix* V,Matrix* V1,int nx,int ny){/*{{{*/
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			V1->SetValue(j+nx*i,0,V->GetValue(i,j));
+		}
+	}
+}/*}}}*/
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my){/*{{{*/
+	Matrix* m1=new Matrix(mx*my,4);
+	Matrix* m2=new Matrix(mx*my,3);
+	Matrix* g1=new Matrix(nx*ny,1);
+	Matrix* g2=new Matrix(nx*ny,1);
+	Matrix* g=new Matrix(nx*ny,1);
+	Matrix* gcalgr=new Matrix(ny,nx);
+	Matrix* gcalvec=new Matrix(mx*my,1);
+	Matrix* df=new Matrix(mx*my,1);
+	Matrix* G=new Matrix(mx*my,3);
+	double a=0;
+	double b=0;
+	double e=0;
+	msplit(m0,m1,m2,dlevel);
+	
+	/*Multithreaded core*/
+	int       num_threads = 8;
+	AppStruct usr;
+	usr.g = g1;
+	usr.Pobs = Pobs;
+	usr.Pp=Pp;
+	usr.mesh= m1;
+	usr.rho= rho1;
+	usr.dx=dx;
+	usr.dy=dy;
+	usr.dn=dn;
+	usr.m=mx*my;
+	usr.n=nx*ny;
+	usr.l=4;
+	LaunchThread(plouffT,(void*)&usr,num_threads);
+	usr.g = g2;
+	usr.mesh= m2;
+	usr.rho= rho2;
+	usr.l=3;
+	LaunchThread(plouffT,(void*)&usr,num_threads);
+	g->MatrixSum(g1,g2);
+	vec2gridsimple(g,gcalgr,nx,ny);
+	reshape(gcalgr,gcalvec,mx,my);
+	for (int i=0;i<mx*my;i++){
+		df->SetValue(i,0,evalid->GetValue(i,0)*(gobs->GetValue(i,0)-gcalvec->GetValue(i,0)));
+		G->SetValue(i,0,evalid->GetValue(i,0)*Pobs->GetValue(i,0));
+		G->SetValue(i,1,evalid->GetValue(i,0)*Pobs->GetValue(i,1));
+		G->SetValue(i,2,evalid->GetValue(i,0));
+	}
+	Matrix* M = NULL;
+	GSLsquarefit(&M,G,df);
+
+	for (int i=0;i<my;i++){
+		for(int j=0;j<mx;j++){
+			gcalgr->SetValue(i,j,gcalgr->GetValue(i,j)+xobs->GetValue(i,j)*M->GetValue(0,0)+yobs->GetValue(i,j)*M->GetValue(1,0)+M->GetValue(2,0));
+		}
+	}
+	reshape(gcalgr,g,mx,my);
+	for (int i=0;i<mx*my;i++){
+		a=a+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)-g->GetValue(i,0)));
+		b=b+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)+g->GetValue(i,0)));
+	}
+	e=2*a/(a+b);
+
+	delete m1;
+	delete m2;
+	delete g1;
+	delete g2;
+	delete g;
+	delete gcalgr;
+	delete gcalvec;
+	delete df;
+	delete G;
+	delete M;
+
+	return e;
+}/*}}}*/
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd){/*{{{*/
+	Matrix* m1gr=new Matrix(my,mx);
+	Matrix* m1grsm=new Matrix(my,mx);
+	Matrix* m1col=new Matrix(mx*my,1);
+	double u=0;
+	double y=0;
+	m1->MatrixEqual(m0);
+	for (int i=0;i<mx*my;i++){
+		if(icethick->GetValue(i,0)==0){
+			u=double (rand())/ double(RAND_MAX);
+			y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+			m1->SetValue(i,1,m0->GetValue(i,1)+y*ptval);
+			if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+				m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+			}
+			if(m1->GetValue(i,1)>=m1->GetValue(i,0)+mmax){
+				m1->SetValue(i,1,m1->GetValue(i,0)+mmax);
+			}
+		}
+	}
+	m1->ExtractColumn(m1col,1);
+	vec2gridsimple(m1col,m1gr,mx,my);
+	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+	reshape(m1grsm,m1col,mx,my);
+	for (int i=0;i<mx*my;i++){
+		if(icethick->GetValue(i,0)==0){
+			m1->SetValue(i,1,m1col->GetValue(i,0));
+		}
+		else{
+			m1->SetValue(i,1,m0->GetValue(i,1));
+		}
+		if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+			m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+		}
+	}
+
+	for (int i=0;i<mx*my;i++){
+		if(bathy->GetValue(i,0)==0){
+			u=double (rand())/ double(RAND_MAX);
+			y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+			m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+			if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+			}
+			if(m1->GetValue(i,2)>=m1->GetValue(i,1)+mmax2){
+				m1->SetValue(i,2,m1->GetValue(i,1)+mmax2);
+			}
+		}
+	}
+	m1->ExtractColumn(m1col,2);
+	vec2gridsimple(m1col,m1gr,mx,my);
+	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+	reshape(m1grsm,m1col,mx,my);
+	for (int i=0;i<mx*my;i++){
+		if(bathy->GetValue(i,0)==0){
+			m1->SetValue(i,2,m1col->GetValue(i,0));
+		}
+		else{
+			m1->SetValue(i,2,m0->GetValue(i,2));
+		}
+		if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+			m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+		}
+	}
+	delete m1gr;
+	delete m1grsm;
+	delete m1col;
+}/*}}}*/
+double signe(double a){/*{{{*/
+	if(a<0){return -1;}
+	else{return 1;}
+}/*}}}*/
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my){/*{{{*/
+	A->MatrixEqual(Ain);
+	for (int i=1;i<my-1;i++){
+		for(int j=1;j<mx-1;j++){
+			A->SetValue(i,j,(ctr*Ain->GetValue(i,j)+sd*(Ain->GetValue(i-1,j)+Ain->GetValue(i+1,j)+Ain->GetValue(i,j-1)+Ain->GetValue(i,j+1)))/(ctr+4*sd));
+		}
+	}
+}/*}}}*/
+double coolshed(double T0,double k,double c,double D){/*{{{*/
+	double T1=T0*exp(-c*pow(k,1/D));
+	return T1;
+}/*}}}*/
+void* plouffT(void* vpthread_handle){/*{{{*/
+
+	/*recover this thread info*/
+	pthread_handle *handle = (pthread_handle*)vpthread_handle;
+	int my_thread   = handle->my_thread;
+	int num_threads = handle->num_threads;
+
+	/*Recover struct*/
+	AppStruct *usr = (AppStruct*)handle->usr;
+	Matrix *g = usr->g;
+	Matrix *Pobs = usr->Pobs;
+	Matrix *Pp = usr->Pp;
+	Matrix *mesh = usr->mesh;
+	Matrix *rho = usr->rho;
+	int dx =usr->dx;
+	int dy =usr->dy;
+	int dn =usr->dn;
+	int m =usr->m;
+	int n =usr->n;
+	int l =usr->l;
+
+	double gg=6.673e-11;
+	int si,sj,id,s;
+	double R,Q,P;
+	Matrix *xp= new Matrix(1,2);
+	Matrix *yp= new Matrix(1,2);
+	Matrix *xpp= new Matrix(1,2);
+	Matrix *ypp= new Matrix(1,2);
+	Matrix *U= new Matrix(l,4);
+	Matrix *U1=new Matrix(1,4);
+	Matrix *U2=new Matrix(1,4);
+	Matrix *gl= new Matrix(1,l-1);
+	bool test=true;
+	for(int c=my_thread;c<n;c+=num_threads){
+		g->SetValue(c,0,0);
+		for(int a=0;a<m;a++){
+			test=true;
+			xp->SetValue(0,0,Pp->GetValue(a,0)-Pobs->GetValue(c,0));
+			xp->SetValue(0,1,Pp->GetValue(a,0)-Pobs->GetValue(c,0)+dx);
+			if(xp->GetValue(0,0)<0 && xp->GetValue(0,0)<xp->GetValue(0,1) && xp->GetValue(0,0)*xp->GetValue(0,1)>=0){
+				xpp->SetValue(0,0,xp->GetValue(0,1));
+				xpp->SetValue(0,1,xp->GetValue(0,0));
+				xp->MatrixAbs(xpp);
+			}
+			yp->SetValue(0,0,Pp->GetValue(a,1)-Pobs->GetValue(c,1));
+			yp->SetValue(0,1,Pp->GetValue(a,1)-Pobs->GetValue(c,1)+dy);
+			if(yp->GetValue(0,0)<0 && yp->GetValue(0,0)<yp->GetValue(0,1) && yp->GetValue(0,0)*yp->GetValue(0,1)>=0){
+				ypp->SetValue(0,0,yp->GetValue(0,1));
+				ypp->SetValue(0,1,yp->GetValue(0,0));
+				yp->MatrixAbs(ypp);
+			}
+			P=sqrt(xp->GetValue(0,0)*xp->GetValue(0,0)+yp->GetValue(0,0)*yp->GetValue(0,0));
+			if(P>dn){
+				test=false;
+				for(int i=0;i<l-1;i++){
+					gl->SetValue(0,i,0);
+				}
+			}
+			if(test==true){
+				si=1;
+				sj=1;
+				id=0;
+				for(int i=0;i<2;i++){
+					si*=-1;
+					for(int j=0;j<2;j++){
+						si*=-1;
+						s=si*sj;
+						for(int k=0;k<l;k++){
+							R=sqrt(xp->GetValue(0,i)*xp->GetValue(0,i)+yp->GetValue(0,j)*yp->GetValue(0,j)+mesh->GetValue(a,k)*mesh->GetValue(a,k));
+							Q=atan(xp->GetValue(0,i)*yp->GetValue(0,j)/(mesh->GetValue(a,k)*R));
+							U->SetValue(k,id,s*(mesh->GetValue(a,k)*Q-xp->GetValue(0,i)*log(R+yp->GetValue(0,j))-yp->GetValue(0,j)*log(R+xp->GetValue(0,i))));
+						}
+						id++;
+					}
+				}
+				for(int b=0;b<l-1;b++){
+					U->ExtractLine(U1,b);
+					U->ExtractLine(U2,b+1);
+					gl->SetValue(0,b,rho->GetValue(0,b)*(U1->MatrixInternSum()*(-1)+U2->MatrixInternSum()));
+				}
+			}
+			g->SetValue(c,0,g->GetValue(c,0)+gg*gl->MatrixInternSum());
+		}
+	}
+	delete xp;
+	delete yp;
+	delete xpp;
+	delete ypp;
+	delete gl;
+	delete U;
+	delete U1;
+	delete U2;
+
+	return NULL;
+}/*}}}*/
+void LaunchThread(void* function(void*), void* usr,int num_threads){/*{{{*/
+
+	int i;
+	int            *status  = NULL;
+	pthread_t      *threads = NULL;
+	pthread_handle *handles = NULL;
+
+	/*dynamically allocate: */
+	threads=(pthread_t*)malloc(num_threads*sizeof(pthread_t));
+	handles=(pthread_handle*)malloc(num_threads*sizeof(pthread_handle));
+
+	for(i=0;i<num_threads;i++){
+		handles[i].usr=usr;
+		handles[i].my_thread  =i;
+		handles[i].num_threads=num_threads;
+	}
+	for(i=0;i<num_threads;i++){
+		if(pthread_create(threads+i,NULL,function,(void*)(handles+i))){
+			std::cerr<<"pthread_create error";
+		}
+	}
+	for(i=0;i<num_threads;i++){
+		if(pthread_join(threads[i],(void**)&status)){
+			std::cerr<<"pthread_join error";
+		}
+	}
+
+	/*Free resources:*/
+	delete threads;
+	delete handles;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/vfsa_mpi.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/vfsa_mpi.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/buzzi/gravity/vfsa_mpi.cpp	(revision 27955)
@@ -0,0 +1,835 @@
+#include <iostream>
+#include <cmath>
+#include <fstream>
+#include <string>
+#include <cstdio>
+#include <cstdlib>
+#include <time.h>
+#include <cassert>
+#include <gsl/gsl_multifit.h>
+#include "mpi.h"
+using namespace std;
+
+class Matrix{/*{{{*/
+	private:
+		int     M;        /*Number of lines   */
+		int     N;        /*Number if Columns */
+		double *values;
+	public:
+		Matrix(int m_in,int n_in){/*{{{*/
+			this->M = m_in;
+			this->N = n_in;
+			this->values = new double[M*N]();
+		}/*}}}*/
+		~Matrix(){/*{{{*/
+			delete [] this->values;
+		}/*}}}*/
+		void Echo(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					cout << " " << this->values[i*N+j];
+				}
+				cout << endl;
+			}
+		}/*}}}*/
+		void SetValue(int i,int j,double value){/*{{{*/
+			this->values[i*N+j] = value;
+		}/*}}}*/
+		double GetValue(int i,int j){/*{{{*/
+			return this->values[i*N+j];
+		}/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM = this->M;
+			*pN = this->N;
+		}/*}}}*/
+		double* GetPointer(void){/*{{{*/
+			return this->values;
+		}/*}}}*/
+		void MatrixSum(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) + B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixDiff(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) - B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixAbs(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,fabs(A->GetValue(i,j)));
+				}
+			}
+		}/*}}}*/
+		void MatrixEqual(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		double MatrixInternSum(){/*{{{*/
+			double sum=0;
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					sum+=this->GetValue(i,j);
+				}
+			}
+			return sum;
+		}/*}}}*/
+		void ExtractLine(Matrix* A,int i){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(M_A==1 && this->N==N_A);
+			for(int j=0;j<this->N;j++){
+				A->SetValue(0,j,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void ExtractColumn(Matrix* A,int j){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(N_A==1 && this->M==M_A);
+			for(int i=0;i<this->M;i++){
+				A->SetValue(i,0,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void AddNumber(double a){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,this->GetValue(i,j) + a);
+				}
+			}
+		}/*}}}*/
+};/*}}}*/
+
+/*Local prototypes{{{*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy);
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny);
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel);
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,int my_rank,int num_procs);
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny);
+void reshape(Matrix* V,Matrix* V1,int nx,int ny);
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs);
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B);
+double signe(double a);
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my);
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd, Matrix *landmask);
+double coolshed(double T0,double k,double c,double D);
+/*}}}*/
+
+int main(int argc,char *argv[]){/*{{{*/
+	
+	int my_rank,num_procs;
+
+	MPI_Init(&argc, &argv);
+
+	MPI_Comm_size(MPI_COMM_WORLD,&num_procs);
+	MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
+
+	/* Seed the random number generator {{{*/
+		srand (time(NULL));            /*}}}*/
+	/* Define the variables {{{*/
+
+	int    dx     = 1000;   /* prism dimension in x-direction                           */
+	int    dy     = 1000;   /* prism dimension in y-direction                           */
+	int    mx     = 99;    /* number of prisms in x-direction                          */
+	int    my     = 99;    /* number of prisms in y-direction                          */
+	int    nx     = 99;    /* number of data points in x-direction                     */
+	int    ny     = 99;    /* number of data points in y-direction                     */
+	int    dn     = 15000; /* distance for neighbouting prisms for gravity calculation */
+	double ptval  = 100.;  /* max. amount to perturb model                             */
+	double ptval2 = 100.;
+
+	Matrix *Pobs=new Matrix(nx*ny,2); /* data positions */
+	makep(Pobs,nx,ny,dx,dy);
+	// Pobs->Echo();
+
+
+	Matrix *Pp=new Matrix(mx*my,2); /* prisms positions */
+	makep(Pp,mx,my,dx,dy);
+	// Pp->Echo();
+
+	double  rhoi = 917;           /* ice density     */
+	double  rhow = 1030;          /* water density   */
+	// double  rhos = 2013;		      /* sediment density */
+	double  rhoc = 2670;          /* bedrock density */
+
+	Matrix *Rho  = new Matrix(1,2);
+	Rho->SetValue(0,0,rhoi);
+	Rho->SetValue(0,1,rhow);
+	Matrix *rho1  = new Matrix(1,3);
+	rho1->SetValue(0,0,rhoi);
+	rho1->SetValue(0,1,rhow);
+	rho1->SetValue(0,2,rhoc);
+	Matrix *rho2  = new Matrix(1,2);
+	rho2->SetValue(0,0,rhoi-rhoc);
+	rho2->SetValue(0,1,rhow-rhoc);
+
+	double dlevel=2400;         /* level of data acquisition */
+
+	double ctr=1;            /* parameter for filtering */
+	double sd=0.1;
+
+	Matrix *xobs= new Matrix(ny,nx);
+	Matrix *yobs= new Matrix(ny,nx);
+
+	vec2grid(Pobs,xobs,yobs,nx,ny);
+	//	xobs->Echo();
+	//	yobs->Echo();
+
+
+	double mmax  = 2000;               /* max value for layer interfaces */
+	double mmax2 = 2000;
+	double mmax3 = 2000;
+
+	/* control parameter for temperature schedule  */
+
+	double ca=0.9;                    /* for acceptance */
+	double cm=0.5;                    /* for model perturbation */
+
+	double T0a          = 0.1;      /* initial temperature for acceptance           */
+	double T0m          = 0.9;      /* initial temperature for model perturbation   */
+	double D            = 2;        /* dimension of the model                       */
+	int    maxconsecrej = 1000;     /* max consecutive rejection                    */
+	int    maxsuccess   = 100;      /* max number of success within one temperature */
+	double T_min        = 1e-10;    /* stopping temp                                */
+	double Tred         = 1;
+	double E_min        = -1000000;
+	double E_exp        = 0.0291;   /* expected misfit                              */
+	int    maxiter      = 10000;
+	int    maxtotaliter = 1000000;
+	double Tol          = 1e-10;    /* tolerance on misfit                          */
+	int    sfreq        = 100;
+
+	/*}}}*/     
+	/* load the data {{{*/
+
+	/*landmask */
+
+	ifstream file("landmaskzach.txt");
+	Matrix * landmask= new Matrix(nx*ny,1);
+	double inputnumber;
+	for(int i=0;i<ny*nx; i++){ 
+		file >> inputnumber;
+		landmask->SetValue(i,0,inputnumber);
+	}
+	file.close();
+
+	/* Observed gravity anomaly */
+
+	ifstream file1("gravityzach.txt");
+	Matrix * gobs= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){ 
+		file1 >> inputnumber;
+		gobs->SetValue(i,0, inputnumber*1e-5);
+	}
+	file1.close();
+	//	gobs->Echo();
+
+	/* load data about the ice thickness */
+
+	ifstream file2("icethickzach.txt");
+	Matrix * icethick= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file2 >> inputnumber;
+		icethick->SetValue(s,0,inputnumber);
+	}
+	file2.close();
+	//	icethick->Echo();
+
+	/* load the batimethry data */
+
+	ifstream file3("bathymetryzach.txt");
+	Matrix * bathy= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file3 >> inputnumber;
+		bathy->SetValue(s,0,inputnumber);
+	}
+	file3.close();
+	//	bathy->Echo();
+
+	/* id of grid to evaluate misfit */
+
+
+	ifstream file4("evalidzach.txt");
+	Matrix * evalid= new Matrix(nx*ny,1);
+	for(int s=0;s<nx*ny; s++){ 
+		file4 >> inputnumber;
+		evalid->SetValue(s,0,inputnumber);
+	}
+	file4.close();
+	//	evalid->Echo();
+
+	/* initial guess of the model */
+
+	ifstream file5("m0_092614zach.txt");
+	Matrix * mesh_ini= new Matrix(mx*my,3);
+	for(int s=0;s<mx*my; s++){ 
+		for(int j=0;j<3;j++){
+			file5 >> inputnumber;
+			mesh_ini->SetValue(s,j,inputnumber);
+		}
+	}
+	file5.close();
+	//	mesh_ini->Echo();
+	/*}}}*/
+	/* VFSA {{{ */
+
+	/* name of the files to save results */
+	std::ofstream savefile1 ("r_zach.txt");
+	std::ofstream savefile2("m_zach.txt");
+
+	/* counters initialization */
+	int    success   = 0;
+	int    finished  = 0;
+	int    consec    = 0;
+	double Ta        = T0a;
+	double Tm        = T0m;
+	int    iterT     = 0;   /* iteration within a T      */
+	int    total     = 0;   /* total number of iteration */
+	int    totaliter = 0;
+	int    msave     = 0;
+	double E_new;
+	double E_final;
+	double dE;
+	double P;
+	double rn;
+	Matrix* m_old    = new Matrix(mx *my,3);
+	Matrix* m_min    = new Matrix(mx *my,3);
+	Matrix* m_new    = new Matrix(mx *my,3);
+	m_old->MatrixEqual(mesh_ini);
+
+	/* calculate initial misfit */
+	double E_old=misfit(m_old,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my, my_rank, num_procs);
+	/* record initial settings */
+	if(!my_rank){
+		savefile1 << "P     "<< "Ta    "<< "Tm    "<< "Eold  "<< "totaliter "<< "Tred   "<< endl;
+		savefile1 << "nan   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+		savefile2 << totaliter<< endl;
+		for(int i=0;i<mx*my;i++){
+			savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+		}
+		savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+	}
+	/* beginning of the loop */
+
+	while(finished==0){
+		iterT++;
+		totaliter++;
+
+		/* stop or reduce T */
+		if(iterT>=maxiter || success>maxsuccess){
+			if(Ta<T_min || total>maxtotaliter || fabs(E_old)<=Tol){
+				finished=1;
+				total+=iterT;
+				break;
+			}
+			else{ /* reduce T */
+				Ta=coolshed(T0a,Tred,ca,D);
+				Tm=coolshed(T0m,Tred,cm,D);
+				total+=iterT;
+				iterT=0;
+				success=1;
+				Tred++;
+				consec=0;
+			}
+		}
+
+		/* update model and calculate energy */
+
+		newmodelgen(m_old,m_new,bathy,icethick,mx,my,Tm,ptval,mmax,mmax2,ctr,sd, landmask);  /* new model */
+		E_new=misfit(m_new,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my, my_rank, num_procs); /* new energy */
+		dE=E_new-E_old;                                        /* energy difference */
+
+		/* acceptance probability */
+
+		P=exp(-dE/Ta);
+
+		/* stop if energy is lower than specified minimum */
+		if (E_new<E_min){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			break;
+		}
+
+		rn=rand()/double (RAND_MAX);
+
+		/* accept new model or not */
+		if(dE<=0){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			success++;
+			consec=0;
+			if(!my_rank){
+				savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+			}
+			if(Ta<1e-3){
+				if(!my_rank){
+					savefile2 << totaliter<< endl;
+					for(int i=0;i<mx*my;i++){
+						savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+					}
+					savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+				}
+			}
+		}
+		else{
+			if(P>rn){
+				m_old->MatrixEqual(m_new);
+				E_old=E_new;
+				success++;
+				consec=0;
+				if(!my_rank){
+					savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+					if(Ta<1e-3){
+						savefile2 << totaliter<< endl;
+						for(int i=0;i<mx*my;i++){
+							savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+						}
+						savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+					}
+				}
+			}
+			else{
+				consec++;
+			}
+		}
+	}
+
+	m_min->MatrixEqual(m_old);
+	E_final=E_old;
+	if(!my_rank){
+		savefile1 << "nan"<<"   "<<  "nan"<<"   "<< "nan"<<"   "<< E_final<<"     "<< "nan"<<"         "<< "nan" <<"  "<< endl;
+		savefile2 << " Mesh final"<< endl;
+		for(int i=0;i<mx*my;i++){
+			savefile2 << m_min->GetValue(i,0)<<"   "<< m_min->GetValue(i,1)<<"   "<< m_min->GetValue(i,2)<<endl;
+		}
+	}
+	savefile1.close();
+	savefile2.close();
+
+	delete m_old;
+	delete m_min;
+	delete m_new;
+	delete Pobs;
+	delete Pp;
+	delete Rho;
+	delete rho1;
+	delete rho2;
+	delete xobs;
+	delete yobs;
+	delete mesh_ini;
+	delete bathy;
+	delete icethick;
+	delete evalid;
+
+	/*}}}*/
+
+   MPI_Finalize();
+
+	return 0;
+}/*}}}*/
+
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B){/*{{{*/
+
+	/*GSL Matrices and vectors: */
+	int    M,N;
+	double chisq;
+	/*Get system size*/
+	A->GetSize(&M,&N);
+
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix* a = gsl_matrix_alloc(M,N);
+	for(int i=0;i<M;i++){
+		for(int j=0;j<N;j++){
+			gsl_matrix_set (a,i,j,A->GetValue(i,j));
+		}
+	}
+	gsl_vector* b = gsl_vector_alloc(M);
+	for(int i=0;i<M;i++){
+		gsl_vector_set(b,i,B->GetValue(i,0));
+	}
+
+	gsl_vector* x = gsl_vector_alloc(N);
+	gsl_matrix* cov = gsl_matrix_alloc(N,N);
+
+	/*Least square fit: */
+	gsl_multifit_linear_workspace* work = gsl_multifit_linear_alloc(M,N);
+	gsl_multifit_linear (a, b, x, cov, &chisq, work);
+	gsl_multifit_linear_free (work);
+
+	/*Clean up and assign output pointer*/
+	Matrix* X = new Matrix(N,1);
+	for(int j=0;j<N;j++){
+		X->SetValue(j,0,gsl_vector_get(x,j));
+	}
+	*pX = X;
+
+	gsl_matrix_free(a);
+	gsl_vector_free(x);
+	gsl_vector_free(b);
+	gsl_matrix_free(cov);
+
+}/*}}}*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			Pobs->SetValue(j+nx*i,0,j*dx);
+			Pobs->SetValue(j+nx*i,1,i*dy);
+		}
+	}
+}/*}}}*/
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+			V2->SetValue(i,j, V->GetValue(j+nx*i,1));
+		}
+	}
+}/*}}}*/
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel){/*{{{*/
+	int sizem1,sizem2;
+	m->GetSize(&sizem1,&sizem2);
+	for(int i=0;i<sizem1;i++){
+		for(int j=0;j<sizem2+1;j++){
+			if(j<sizem2){
+				m1->SetValue(i,j,1e-10*(sizem2+1-j));
+				m2->SetValue(i,j,m->GetValue(i,j));
+				if(m->GetValue(i,j)<0){
+					m1->SetValue(i,j,m->GetValue(i,j));
+					m2->SetValue(i,j,i*1e-10);
+				}
+				m1->SetValue(i,j,m1->GetValue(i,j));
+				m2->SetValue(i,j,m2->GetValue(i,j));
+			}
+			else{
+				m1->SetValue(i,j,1e-10);
+			}
+		}
+	}
+	m1->AddNumber(dlevel);
+	m2->AddNumber(dlevel);
+}/*}}}*/
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,int my_rank,int num_procs){/*{{{*/
+	double gg=6.673e-11;
+	int si,sj,id,s;
+	double R,Q,P;
+	Matrix *xp= new Matrix(1,2);
+	Matrix *yp= new Matrix(1,2);
+	Matrix *xpp= new Matrix(1,2);
+	Matrix *ypp= new Matrix(1,2);
+	Matrix *U= new Matrix(l,4);
+	Matrix *U1=new Matrix(1,4);
+	Matrix *U2=new Matrix(1,4);
+	Matrix *gl= new Matrix(1,l-1);
+	bool test=true;
+
+	double *glocal=new double[n]();
+
+	for(int c=my_rank;c<n;c+=num_procs){
+		glocal[c]=0;
+		for(int a=0;a<m;a++){
+			test=true;
+			xp->SetValue(0,0,Pp->GetValue(a,0)-Pobs->GetValue(c,0));
+			xp->SetValue(0,1,Pp->GetValue(a,0)-Pobs->GetValue(c,0)+dx);
+			if(xp->GetValue(0,0)<0 && xp->GetValue(0,0)<xp->GetValue(0,1) && xp->GetValue(0,0)*xp->GetValue(0,1)>=0){
+				xpp->SetValue(0,0,xp->GetValue(0,1));
+				xpp->SetValue(0,1,xp->GetValue(0,0));
+				xp->MatrixAbs(xpp);
+			}
+			yp->SetValue(0,0,Pp->GetValue(a,1)-Pobs->GetValue(c,1));
+			yp->SetValue(0,1,Pp->GetValue(a,1)-Pobs->GetValue(c,1)+dy);
+			if(yp->GetValue(0,0)<0 && yp->GetValue(0,0)<yp->GetValue(0,1) && yp->GetValue(0,0)*yp->GetValue(0,1)>=0){
+				ypp->SetValue(0,0,yp->GetValue(0,1));
+				ypp->SetValue(0,1,yp->GetValue(0,0));
+				yp->MatrixAbs(ypp);
+			}
+			P=sqrt(xp->GetValue(0,0)*xp->GetValue(0,0)+yp->GetValue(0,0)*yp->GetValue(0,0));
+			if(P>dn){
+				test=false;
+				for(int i=0;i<l-1;i++){
+					gl->SetValue(0,i,0);
+				}
+			}
+			if(test==true){
+				si=1;
+				sj=1;
+				id=0;
+				for(int i=0;i<2;i++){
+					si*=-1;
+					for(int j=0;j<2;j++){
+						sj*=-1;
+						s=si*sj;
+						for(int k=0;k<l;k++){
+							R=sqrt(xp->GetValue(0,i)*xp->GetValue(0,i)+yp->GetValue(0,j)*yp->GetValue(0,j)+mesh->GetValue(a,k)*mesh->GetValue(a,k));
+							Q=atan(xp->GetValue(0,i)*yp->GetValue(0,j)/(mesh->GetValue(a,k)*R));
+							U->SetValue(k,id,s*(mesh->GetValue(a,k)*Q-xp->GetValue(0,i)*log(R+yp->GetValue(0,j))-yp->GetValue(0,j)*log(R+xp->GetValue(0,i))));
+						}
+						id++;
+					}
+				}
+				for(int b=0;b<l-1;b++){
+					U->ExtractLine(U1,b);
+					U->ExtractLine(U2,b+1);
+					gl->SetValue(0,b,rho->GetValue(0,b)*(U1->MatrixInternSum()*(-1)+U2->MatrixInternSum()));
+				}
+			}
+			glocal[c]=glocal[c]+gg*gl->MatrixInternSum();
+
+		}
+	}
+
+	MPI_Allreduce(glocal,g->GetPointer(),n,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
+
+	delete xp;
+	delete yp;
+	delete xpp;
+	delete ypp;
+	delete gl;
+	delete U;
+	delete U1;
+	delete U2;
+	delete []glocal;
+}/*}}}*/
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+		}
+	}
+}/*}}}*/
+void reshape(Matrix* V,Matrix* V1,int nx,int ny){/*{{{*/
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			V1->SetValue(j+nx*i,0,V->GetValue(i,j));
+		}
+	}
+}/*}}}*/
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs){/*{{{*/
+	Matrix* m1=new Matrix(mx*my,4);
+	Matrix* m2=new Matrix(mx*my,3);
+	Matrix* g1=new Matrix(nx*ny,1);
+	Matrix* g2=new Matrix(nx*ny,1);
+	Matrix* g=new Matrix(nx*ny,1);
+	Matrix* gcalgr=new Matrix(ny,nx);
+	Matrix* gcalvec=new Matrix(nx*ny,1);
+	Matrix* df=new Matrix(nx*ny,1);
+	Matrix* G=new Matrix(nx*ny,3);
+	double a=0;
+	double b=0;
+	double e=0;
+	msplit(m0,m1,m2,dlevel);
+	plouff(g1,Pobs,Pp,m1,rho1,dx,dy,dn,mx*my,nx*ny,4, my_rank, num_procs);
+	plouff(g2,Pobs,Pp,m2,rho2,dx,dy,dn,mx*my,nx*ny,3, my_rank, num_procs);
+	g->MatrixSum(g1,g2);
+	vec2gridsimple(g,gcalgr,nx,ny);
+	reshape(gcalgr,gcalvec,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		df->SetValue(i,0,evalid->GetValue(i,0)*(gobs->GetValue(i,0)-gcalvec->GetValue(i,0)));
+		G->SetValue(i,0,evalid->GetValue(i,0)*Pobs->GetValue(i,0));
+		G->SetValue(i,1,evalid->GetValue(i,0)*Pobs->GetValue(i,1));
+		G->SetValue(i,2,evalid->GetValue(i,0));
+	}
+	Matrix* M = NULL;
+	GSLsquarefit(&M,G,df);
+
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			gcalgr->SetValue(i,j,gcalgr->GetValue(i,j)+xobs->GetValue(i,j)*M->GetValue(0,0)+yobs->GetValue(i,j)*M->GetValue(1,0)+M->GetValue(2,0));
+		}
+	}
+	reshape(gcalgr,g,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		a=a+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)-g->GetValue(i,0)));
+		b=b+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)+g->GetValue(i,0)));
+	}
+	e=2*a/(a+b);
+
+	delete m1;
+	delete m2;
+	delete g1;
+	delete g2;
+	delete g;
+	delete gcalgr;
+	delete gcalvec;
+	delete df;
+	delete G;
+	delete M;
+
+	return e;
+}/*}}}*/
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd, Matrix *landmask){/*{{{*/
+	Matrix* m1gr=new Matrix(my,mx);
+	Matrix* m1grsm=new Matrix(my,mx);
+	Matrix* m1col=new Matrix(mx*my,1);
+	Matrix* m1gr2=new Matrix(my,mx);
+	Matrix* m1grsm2=new Matrix(my,mx);
+	Matrix* m1col2=new Matrix(mx*my,1);
+	Matrix* nptflag= new Matrix(mx*my,1);
+	double u=0;
+	double y=0;
+	m1->MatrixEqual(m0);
+	nptflag->MatrixSum(icethick,bathy);
+	/* first layer: ice */
+	for (int i=0;i<mx*my;i++){
+		if(landmask->GetValue(i,0)==2){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,1,m0->GetValue(i,1)+y*ptval);
+				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(m1->GetValue(i,1)>=m1->GetValue(i,0)+mmax){
+					m1->SetValue(i,1,m1->GetValue(i,0)+mmax);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+		}
+		else if(landmask->GetValue(i,0)==0){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+				if(m1->GetValue(i,2)<=m1->GetValue(i,0)){
+					m1->SetValue(i,2,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,2)>=m1->GetValue(i,0)+mmax2){
+					m1->SetValue(i,2,m1->GetValue(i,0)+mmax2);
+				}
+			}
+		}
+	}
+
+	m1->ExtractColumn(m1col,1);
+	vec2gridsimple(m1col,m1gr,mx,my);
+	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+	reshape(m1grsm,m1col,mx,my);
+	m1->ExtractColumn(m1col2,2);
+	vec2gridsimple(m1col2,m1gr2,mx,my);
+	filtergrav(m1grsm2,m1gr2,ctr,sd,mx,my);
+	reshape(m1grsm2,m1col2,mx,my);
+
+	for (int i=0;i<mx*my;i++){
+		if(landmask->GetValue(i,0)==2){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,1,m1col->GetValue(i,0));
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(fabs(m1->GetValue(i,2)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else if(landmask->GetValue(i,0)==0){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,2)<=m1->GetValue(i,0)){
+					m1->SetValue(i,2,m1->GetValue(i,0)+1e-10);
+				}
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else {
+			if(nptflag->GetValue(i,0)==0){
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,1,m1->GetValue(i,0));
+				}
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,2))>1){
+					m1->SetValue(i,2,m1->GetValue(i,0));
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+	}
+
+				/* second layer: water */
+//	for (int i=0;i<mx*my;i++){
+//		if(bathy->GetValue(i,0)==0){
+//			u=double (rand())/ double(RAND_MAX);
+//			y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+//			m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+//			if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+//				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+//			}
+//			if(m1->GetValue(i,2)>=m1->GetValue(i,1)+mmax2){
+//				m1->SetValue(i,2,m1->GetValue(i,1)+mmax2);
+//			}
+//		}
+//	}
+//	m1->ExtractColumn(m1col,2);
+//	vec2gridsimple(m1col,m1gr,mx,my);
+//	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+//	reshape(m1grsm,m1col,mx,my);
+//	for (int i=0;i<mx*my;i++){
+//		if(bathy->GetValue(i,0)==0){
+//			m1->SetValue(i,2,m1col->GetValue(i,0));
+//		}
+//		else{
+//			m1->SetValue(i,2,m0->GetValue(i,2));
+//		}
+//		if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+//			m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+//		}
+//	}
+	delete m1gr;
+	delete m1grsm;
+	delete m1col;
+	delete m1gr2;
+	delete m1grsm2;
+	delete m1col2;
+	delete nptflag;
+}/*}}}*/
+double signe(double a){/*{{{*/
+	if(a<0){return -1;}
+	else{return 1;}
+}/*}}}*/
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my){/*{{{*/
+	A->MatrixEqual(Ain);
+	for (int i=1;i<my-1;i++){
+		for(int j=1;j<mx-1;j++){
+			A->SetValue(i,j,(ctr*Ain->GetValue(i,j)+sd*(Ain->GetValue(i-1,j)+Ain->GetValue(i+1,j)+Ain->GetValue(i,j-1)+Ain->GetValue(i,j+1)))/(ctr+4*sd));
+		}
+	}
+}/*}}}*/
+double coolshed(double T0,double k,double c,double D){/*{{{*/
+	double T1=T0*exp(-c*pow(k,1/D));
+	return T1;
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/README.md
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/README.md	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/README.md	(revision 27955)
@@ -0,0 +1,15 @@
+# Function List
+
+* analyzeCalvingFront.m				--		Interpolate the transient solutions to the calving front positions of the given flowlines
+* averageOverTime.m					--		For a given range, average transient data in time
+* computeGrad.m						--		Compute the gradient of a given field
+* extractTransientSolutions.m		--		Load a model with transient solutions, and put each of the items into individual array
+* interpZeroPos.m						--		Find zero positions (y=0) of the given curve defined by (X,Y)
+* integrateOverDomain.m				--		integrate a given variable over the whole domain, can set a mask
+* integrateOverTime.m				--		integrate a time series over the given time steps
+* inverseHistograms.m				--		Compute the inverse quantile function
+* npsd.m									--		Compute normalized power spectral density
+* projectToFlowlines.m				--		Project data from a mesh to a given flowline
+* psd.m									--		Compute power spectral density 
+* rescalegradientNan.m				--		Replace Nan by 0 in the cost function, then rescale it
+* wfDistance.m							--		Compute Wasserstein-Fourier distance
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/analyzeCalvingFront.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/analyzeCalvingFront.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/analyzeCalvingFront.m	(revision 27955)
@@ -0,0 +1,62 @@
+function [flowline, icemaskFL] = analyzeCalvingFront(md, flowline, transientSolutions)
+%analyzeCalvingFront - to find calving front position at the given flowline,
+%                   if the given model contains transient solutions, then
+%                   return a time dependent calving front with
+%                   [Xmain, positionx, positiony, time], icemask, calving rate,
+%                   melting rate and velocity magnitude, sigma, thickness
+% Author: Cheng Gong
+% Last modified: 2020-09-25
+
+transient = isfield(md.results,'TransientSolution');
+
+if transient
+    % extract data from model
+    icemaskFL = InterpFromMeshToMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,transientSolutions.ice_levelset,flowline.x,flowline.y);
+    
+    % solve for the calving front coordinates
+    cf = interpZeroPos([flowline.Xmain(:), flowline.x, flowline.y], icemaskFL);
+    positionx = cf(:, 2);
+    positiony = cf(:, 3);
+    
+    % Calving rate C
+    cRate = InterpFromMeshToMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,...
+		 transientSolutions.calvingRate,positionx, positiony);
+    cRate = diag(cRate); % not very efficient, but works
+    
+    % melting rate M
+    mRateTemp = InterpFromMeshToMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,...
+		 transientSolutions.meltingRate,positionx, positiony);
+    mRate = diag(mRateTemp); % not very efficient, but works
+    
+    % velocity
+    vel = InterpFromMeshToMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,...
+		 transientSolutions.vel, positionx, positiony);
+    vel = diag(vel);
+    
+    % sigmaVM
+    SigmaVM = InterpFromMeshToMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,...
+		 transientSolutions.SigmaVM, positionx, positiony);
+    SigmaVM = diag(SigmaVM);
+    
+    % calving front
+    calvingFront = [cf, transientSolutions.time(:)];
+    
+    % solutions along the flowline
+    SigmaVM_FL = InterpFromMeshToMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,...
+		 transientSolutions.SigmaVM,flowline.x, flowline.y);
+    
+    % Thickness along the flowlines
+    thickness = InterpFromMeshToMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,...
+		 transientSolutions.thickness, flowline.x, flowline.y);
+    
+    % save to flowline
+    flowline.calvingFront = calvingFront;
+    flowline.cRate = cRate;
+    flowline.mRate = mRate;
+    flowline.vel = vel;
+    flowline.SigmaVM = SigmaVM;
+    flowline.SigmaVM_FL = SigmaVM_FL;
+    flowline.thickness = thickness;
+else
+    error('Calving front detectiong for the steady state is not implemented yet!')
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/averageOverTime.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/averageOverTime.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/averageOverTime.m	(revision 27955)
@@ -0,0 +1,86 @@
+function averagedData = averageOverTime(data, time, startP, endP)
+%averageOverTime - compute the time averaged value of data in the range [startP, endP]
+%
+%   data: time dependent data,
+%   time: has same number of columns as data, sorted in ascending order
+%   startP: start time point for averaging, can be at any time point, or
+%   even not coincide with the given points in 'time'
+%   endP: end time point for averaging. if this is the same as the startP,
+%   or not given, then the output will be the linear interpolation of the
+%   data at startP.
+%
+% if out of the given time range, use constant extrapolation,
+% if within the range, do linear interpolation.
+%
+%   Author: Cheng Gong
+%   Last modified: 2020-09-09
+if nargin < 4
+    endP = startP;
+end
+
+Nt = length(time);
+if Nt ~= size(data,2)
+    error('The data and time does not match!');
+end
+
+if startP > endP
+    error('The given start point has to be smaller than the end point!');
+elseif startP == endP
+    % extrapolation if earlier than the first time point
+    if startP <= time(1)
+        i1 = 1;
+        i2 = 2;
+    % extrapolation if later than the last time point
+    elseif startP >= time(Nt)
+        i1 = Nt-1;
+        i2 = Nt;
+    else
+        pos = (time > startP);
+        i2 = find(pos, 1, 'first');
+        i1 = i2 - 1;
+    end
+    % linear interpolation 
+    averagedData = data(:, i1) + (data(:, i1)-data(:, i2)).*(startP-time(i1))./(time(i1)-time(i2));
+else
+    % find the first and last ID in the time series within the given range
+    pos = ((time>=startP) & (time<=endP));
+    firstId = find(pos, 1, 'first');
+    lastId = find(pos, 1, 'last');
+    if isempty(firstId) | isempty(lastId)
+		 averagedData = nan(size(data,1), 1);
+       % error('Time points out of range');
+	 else
+		 % computed the integral with trapzoidal rule
+   	 integData = zeros(size(data,1), 1);
+   	 for i = firstId:lastId-1
+   	     integData = integData + (data(:,i+1) + data(:,i)) .* (time(i+1) - time(i)).*0.5;
+   	 end
+   	 
+   	 % special treatment for the first and last time step, which are not
+   	 % complete steps.
+   	 if firstId == 1
+   	     % extrapolation
+   	     integData = integData + data(:,1) .* (time(1)-startP);
+   	 else
+   	     % interpolation
+   	     integData = integData + 0.5.*(time(firstId)-startP)./ ...
+   	         (time(firstId)-time(firstId-1)) .* ...
+   	         ((time(firstId)-startP) .* data(:,firstId-1) + ...
+   	         (time(firstId)+startP-2*time(firstId-1)).*data(:,firstId));
+   	 end
+   	 
+   	 if lastId == Nt
+   	     % extrapolation
+   	     integData = integData + data(:,Nt) .* (endP-time(Nt));
+   	 else
+   	     % interpolation
+   	     integData = integData + 0.5.*(time(lastId)-endP)./ ...
+   	         (time(lastId+1)-time(lastId)) .* ...
+   	         ((time(lastId)-endP) .* data(:,lastId+1) + ...
+   	         (time(lastId)+endP-2*time(lastId+1)).*data(:,lastId));
+   	 end
+   	 
+   	 averagedData = integData ./ (endP-startP);
+	end
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/computeGrad.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/computeGrad.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/computeGrad.m	(revision 27955)
@@ -0,0 +1,45 @@
+function [gradx, grady]=computeGrad(index,x,y,field)
+%COMPUTEGRAD - compute the gradient from a field
+
+%some variables
+numberofnodes=length(x);
+numberofelements=size(index,1);
+numberoftime = size(field, 2);
+
+%some checks
+if (length(field)~=numberofnodes) && (length(field)~=numberofelements)
+    error('ComputeHessian error message: the given field size not supported yet');
+end
+%initialization
+line=index(:);
+linesize=3*numberofelements;
+
+%get areas and nodal functions coefficients N(x,y)=alpha x + beta y + gamma
+[alpha, beta]=GetNodalFunctionsCoeff(index,x,y);
+areas=GetAreas(index,x,y);
+
+%compute weights that hold the volume of all the element holding the node i
+weights=sparse(line,ones(linesize,1),repmat(areas,3,1),numberofnodes,1);
+
+%compute field on nodes if on elements
+if length(field)==numberofelements
+    field=sparse(line,ones(linesize,1),repmat(areas.*field,3,1),numberofnodes,1)./weights ;
+end
+
+%Compute gradient for each element
+if numberoftime == 1
+    grad_elx=sum(field(index).*alpha,2);
+    grad_ely=sum(field(index).*beta,2);
+else
+    grad_elx = zeros(numberofelements,numberoftime);
+    grad_ely = zeros(numberofelements,numberoftime);    
+    for i = 1:3
+        grad_elx = grad_elx + field(index(:,i), :).*alpha(:,i);
+        grad_ely = grad_ely + field(index(:,i), :).*beta(:,i);
+    end
+end
+%Compute gradient for each node (average of the elements around)
+gradx=sparse(repmat(line,1,numberoftime),cumsum(ones(linesize,numberoftime),2),repmat(areas.*grad_elx,3,1),numberofnodes,numberoftime);
+grady=sparse(repmat(line,1,numberoftime),cumsum(ones(linesize,numberoftime),2),repmat(areas.*grad_ely,3,1),numberofnodes,numberoftime);
+gradx=gradx./weights;
+grady=grady./weights;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/expxy2shpll.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/expxy2shpll.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/expxy2shpll.m	(revision 27955)
@@ -0,0 +1,69 @@
+function expxy2shpll(expfilename,shpfilename,geometry)
+%expxy2shpll
+%  Convert .exp to .shp file
+%
+%   Usage:
+%			expxy2shpll('glacier.exp', 'glacier.shp')
+%			expxy2shpll('glacier.exp', 'glacier.shp', geometry)
+%
+%		geometry (optional)-	'MultiPoint' : point clouds
+%									'Point' : single point
+%									'Line' : two points line
+%									'polygon' : multiple points
+%
+
+%check file extensions
+[pathstr,name,ext] = fileparts(shpfilename);
+if ~strcmp(ext,'.shp'),
+   error(['Shapefile ' shpfilename ' does not have an extension .shp']);
+end
+
+[pathstr,name,ext] = fileparts(expfilename);
+if ~strcmp(ext,'.exp'),
+   error(['Exp file ' expfilename ' does not have an extension .exp']);
+end
+
+shp=expread(expfilename);
+[lat, lon] = xy2ll(shp.x, shp.y, 1, 45, 70);
+shp.x = lon;
+shp.y = lat;
+
+%initialize number of profile
+count=1;
+
+contours=struct([]);
+for i=1:length(shp),
+   if nargin < 3
+
+      %TEMP
+      %if contains(shp(i).name,'_pointcloud');
+      %  continue;
+      %end
+
+      if length(shp(i).x) == 0
+         continue;
+      elseif contains(shp(i).name,'_pointcloud');
+         geometry = 'MultiPoint';
+         shp(i).name = erase(shp(i).name,'_pointcloud');
+      elseif length(shp(i).x) == 1
+         geometry = 'Point';
+      elseif length(shp(i).x) < 3
+         geometry = 'Line';
+      else
+         if (shp(i).x(end)==shp(i).x(1) && shp(i).y(end)==shp(i).y(1)),
+            geometry = 'Polygon';
+         else
+            geometry = 'Line';
+         end
+      end
+   end
+   contours(count).Geometry=geometry;
+   contours(count).id=i;
+   contours(count).Name=shp(i).name;
+   contours(count).X=shp(i).x;
+   contours(count).Y=shp(i).y;
+   count = count+1;
+end
+
+%Make sure it is one single geometry otherwise it will yell at you
+shapewrite(contours,shpfilename);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/extractTransientSolutions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/extractTransientSolutions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/extractTransientSolutions.m	(revision 27955)
@@ -0,0 +1,16 @@
+function [transientSolutions]=extractTransientSolutions(md)
+%extractTransientSolutions - take the transient solutions out from model
+%                            and put each of them into an individual array.
+transientSolutions.time = cell2mat({md.results.TransientSolution(:).time});
+transientSolutions.vx = cell2mat({md.results.TransientSolution(:).Vx});
+transientSolutions.vy = cell2mat({md.results.TransientSolution(:).Vy});
+transientSolutions.vel = cell2mat({md.results.TransientSolution(:).Vel});
+transientSolutions.volume = cell2mat({md.results.TransientSolution(:).IceVolume});
+transientSolutions.thickness = cell2mat({md.results.TransientSolution(:).Thickness});
+transientSolutions.SigmaVM = cell2mat({md.results.TransientSolution(:).SigmaVM});
+if (isfield(md.results.TransientSolution, 'SmbMassBalance'))
+	transientSolutions.smb = cell2mat({md.results.TransientSolution(:).SmbMassBalance});
+end
+transientSolutions.ice_levelset = cell2mat({md.results.TransientSolution(:).MaskIceLevelset});
+transientSolutions.calvingRate = cell2mat({md.results.TransientSolution(:).CalvingCalvingrate});
+transientSolutions.meltingRate = cell2mat({md.results.TransientSolution(:).CalvingMeltingrate});
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/fillInNan.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/fillInNan.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/fillInNan.m	(revision 27955)
@@ -0,0 +1,26 @@
+function newdata = fillInNan(md, data, varargin)
+%fillInNan - use the mean of surrouding data to iteratidatay fill in the Nan in data
+%		data should have the same size as md.mesh.x
+%
+% Author: Cheng Gong
+% Last modified: 2021-12-08
+nanvflag = find(isnan(data));
+NNanv = length(nanvflag);
+
+options    = pairoptions(varargin{:});
+maxiter    = getfieldvalue(options,'maxiter', 10);
+count = 1;
+
+while((NNanv>0) & (count<=maxiter))
+   disp(['Iter ', num2str(count), ': found ', num2str(NNanv), ' Nan in the initial data, fill in them with the mean of their surroudings.']);
+   for i = 1:NNanv
+      [eleid, ~] = find(md.mesh.elements == nanvflag(i));
+      nodeid = md.mesh.elements(eleid, :);
+      data(nanvflag(i)) = mean(data(nodeid(:)) , 'omitnan');
+   end
+   nanvflag = find(isnan(data));
+   NNanv = length(nanvflag);
+	count = count + 1;
+end
+newdata = data;
+	
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/integrateOverDomain.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/integrateOverDomain.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/integrateOverDomain.m	(revision 27955)
@@ -0,0 +1,34 @@
+function [intData, meanData, areas] = integrateOverDomain(md, data, masked, weights)
+% integrateOverDomain - integrating data over the whole domain
+%
+%   intData: integral of the data over each element
+%   meanData: intData/areas
+%   areas: areas of the domain
+if nargin < 4
+	weights = ones(size(data));
+	if nargin<3
+		masked = logical(zeros(size(data)));
+	end
+end
+
+masked = masked | isnan(data) | isnan(weights);
+% Set the area with masked=1 to nan
+data(masked) = nan;
+weights(masked) =nan;
+
+
+% get the mesh
+elements=md.mesh.elements;
+x=md.mesh.x;
+y=md.mesh.y;
+
+%compute areas;
+eleAreas=GetAreas(elements,x,y);
+
+% integrate nodal data to element
+eleData = 1/3*eleAreas.*(data(elements(:,1),:).*weights(elements(:,1),:) + data(elements(:,2),:).*weights(elements(:,2),:) + data(elements(:,3),:).*weights(elements(:,3),:));
+eleAreas = 1/3*eleAreas.*(weights(elements(:,1),:)+weights(elements(:,2),:)+weights(elements(:,3),:));
+
+intData = sum(eleData, 1, 'omitnan');
+areas = sum(eleAreas, 1, 'omitnan');
+meanData = intData ./ areas;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/integrateOverTime.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/integrateOverTime.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/integrateOverTime.m	(revision 27955)
@@ -0,0 +1,26 @@
+function [newData, intData] = integrateOverTime(tdata, data, time, Nintdt)
+% integrateOverDomain - integrating data over the whole domain
+%
+%	 Input:
+%		tdata:		time steps of data
+%		data:			time series of the data 
+%		time:			time steps to be used for integration
+%		Nintdt:		number of time steps in 'time' to be used for integration
+%
+%	 Return:
+%		newData:		data projected on to 'time'
+%		intData:		integrated 'newData'	
+
+dt = abs(time(2) -time(1));
+% patch the first N time steps
+intTime = [[-Nintdt:-1]*dt+time(1), time];
+% integration scheme
+integ = ones(1, Nintdt) * dt;
+
+% interpolate data from the time scheme 'tdata' to 'time'
+newData = interp1(double(tdata), double(data), intTime, 'linear', 'extrap'); 
+
+% integrated, only works for equidistance time steps for now
+intData = conv(integ, newData);
+intData = intData(Nintdt:end-Nintdt);
+newData = newData(Nintdt+1: end);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/interpZeroPos.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/interpZeroPos.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/interpZeroPos.m	(revision 27955)
@@ -0,0 +1,52 @@
+function X0 = interpZeroPos(X, Y)
+%interpZeroPos - find the x values for y=0 with line interpolation of the
+%                given X and Y coordinates.  
+%                   X: is a matrix of size mxn, each column represent a dimension
+%                   Y: is a matrix of size mxk, k is the number of date sets, and each 
+%                       data set must contains positive and negative values.
+%                 The return value:
+%                   x0: is a matrix of size kxn, the rows correspond to each column
+%                   of X and the columns are for each data set.
+%                
+%               The method is to find the two consective values y1 and y2 where
+%               Y changes the sign, and the corresponding X are x1 and x2.
+%                      x2*y1-x1*y2
+%                x0 = -------------
+%                        y1-y2
+% Author: Cheng Gong
+% Last modified: 2020-10-20
+[m, n] = size(X);
+[my, k] = size(Y);
+if m~=my
+    error('rows of X and Y are not the same!');
+end
+
+% find the place where Y changes signs, or y=0 at some points
+mask = (Y(1:m-1,:).*Y(2:m,:) <=0);
+[row, col] = find(mask);
+ind = row;
+
+% use only the first index from each column
+if length(col)>k
+    disp('Multiple candidates of the y=0 values are found in one data set! Be defalut, take the first y=0 from upstream.');
+    [col, ia, ~] = unique(col);
+    ind = row(ia);
+end
+
+if length(col)<k
+	disp('y does not contain both positive and negative values, find the closest value to 0');
+	[~,ind] = min(abs(Y(1:m-1,:)));
+	ind = ind';
+	col= [1:k]';
+	if (length(ind) ~= length(col))
+		error('Size of the row and col indicators are not consistent!');
+	end
+end
+
+a1 = zeros(1,k);
+for i =1:k
+    a1(i) =  Y(ind(i),col(i))./(Y(ind(i),col(i))-Y(ind(i)+1,col(i)));
+end
+
+a2 = 1- a1; 
+X0 = X(ind+1,:).*a1(:) + X(ind,:).*a2(:);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/inverseHistograms.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/inverseHistograms.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/inverseHistograms.m	(revision 27955)
@@ -0,0 +1,34 @@
+function [cdfa, q_Sinv] = inverseHistograms(mu, S, Sinv)
+%     Given a distribution mu compute its inverse quantile function
+%     Parameters
+%     ----------
+%     mu     : histogram
+%     S      : support of the histogram
+%     Sinv   : support of the quantile function
+%     Returns
+%     -------
+%     cdfa   : the cumulative distribution function and
+%     q_Sinv : the inverse quantile function of the distribution mu
+
+epsilon = 1e-14;
+A = (mu>epsilon);
+Sa = S(A);
+
+% cummulative sum
+cdf = cumtrapz(S, mu);
+cdfa = cdf(A);
+
+% set the first value to 0 and last value to 1
+cdfa(1) = 0;
+Sa(1) = 0;
+
+if cdfa(end) < 1
+    cdfa = [cdfa(:);1];
+    Sa = [Sa(:);S(end)];
+end
+
+[~, ind] = unique(cdfa);
+% linear interpolation
+q_Sinv = interp1(cdfa(ind), Sa(ind), Sinv);
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/movingAverage.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/movingAverage.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/movingAverage.m	(revision 27955)
@@ -0,0 +1,42 @@
+function outdata =  movingAverage(rawdata, varargin)
+%
+% rawdata is an MxN matrix, where the first M-1 rows are the raw data, the row M is the time
+
+options    = pairoptions(varargin{:});
+timeWindow	= getfieldvalue(options, 'time window', 30); % unit in days
+resamp = getfieldvalue(options, 'resample', 1); % resample the data set with the size of window
+
+% get data info {{{
+[M, N] = size(rawdata);
+if M < 2
+	error('The data has to be at least two rows!');
+end
+if N < 2
+	error('The data has to be at least two columns!');
+end
+
+% sort the time
+time = rawdata(M, :);
+[time, tI] = sort(time);
+data = rawdata(1:M-1, :);
+data = data(:, tI);
+
+dt = time(2) - time(1);
+if dt < 0
+	error('The time need to be in ascending order.');
+end
+windowSize = ceil(timeWindow/365/dt);
+%}}}
+%% filter {{{
+if resamp
+	ind = [1:timeWindow:N];
+else
+	ind = [1:N];
+end
+b = (1/windowSize)*ones(1,windowSize);
+a = 1;
+disp(['Applying filter of width ', num2str(timeWindow)]);
+smoothdata = filter(b,a,data,[],2);
+time = time(ind);
+outdata = [smoothdata(:,ind);time];
+%}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/npsd.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/npsd.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/npsd.m	(revision 27955)
@@ -0,0 +1,32 @@
+function [npsdx, psdx, freq] = npsd(x)
+%npsd - Normalized Power Spectral Density (using fft)
+%
+%   x: time series
+%
+%   psdx: Power Spectral Density(right half plane, value doubled)
+%   freq: frequency(non-negative half)
+%
+%   Author: Cheng Gong
+%   Date: 2021-08-17
+
+% length of data
+Nx = length(x);
+% fft
+xdft = fft(x);
+xdft = xdft(1:floor(Nx/2+1));
+% power specturm
+psdx = (1/(2*pi*Nx)) * abs(xdft).^2;
+%  In order to conserve the total power, multiply all frequencies that
+%  occur in both sets - the positive and negative frequencies — by a factor of 2
+psdx(2:end-1) = 2*psdx(2:end-1);
+freq = 0:(2*pi)/Nx:pi;
+% normalize(trapzoidal rule)
+intS = trapz(freq, psdx);
+if intS == 0
+    psdx = 1 +psdx;
+    intS = trapz(freq, psdx);
+end
+npsdx = psdx ./ intS;
+
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/projectToFlowlines.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/projectToFlowlines.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/projectToFlowlines.m	(revision 27955)
@@ -0,0 +1,16 @@
+% Function to project values on the mesh to a flowline
+%
+%	md			-	ISSM model with mesh
+%	pValue	-	data on the mesh
+%	fx			-	x coordinates of the flowline
+%	fy			-	y coordinates of the flowline
+%
+% Author: Cheng Gong
+% Last modified: 2021-01-27
+
+function valueC = projectToFlowlines(md, pValue, fx, fy)
+    temp = InterpFromMeshToMesh2d(md.mesh.elements, md.mesh.x, md.mesh.y,...
+        pValue, fx, fy);
+    temp = diag(temp); % not very efficient, but works
+    valueC = temp(:)';
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/psd.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/psd.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/psd.m	(revision 27955)
@@ -0,0 +1,24 @@
+function [psdx, freq] = psd(x)
+%psd - Power Spectral Density (using fft)
+%
+%   x: time series
+%   
+%   psdx: Power Spectral Density(right half plane, value doubled)
+%   freq: frequency(non-negative half)
+%
+%   Author: Cheng Gong
+%   Date: 2021-08-17
+
+% length of data
+Nx = length(x);
+% fft
+xdft = fft(x);
+xdft = xdft(1:floor(Nx/2+1));
+% power specturm
+psdx = (1/(2*pi*Nx)) * abs(xdft).^2;
+%  In order to conserve the total power, multiply all frequencies that 
+%  occur in both sets - the positive and negative frequencies — by a factor of 2
+psdx(2:end-1) = 2*psdx(2:end-1);
+freq = 0:(2*pi)/Nx:pi;
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/rescalegradientNan.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/rescalegradientNan.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/rescalegradientNan.m	(revision 27955)
@@ -0,0 +1,7 @@
+% function to replace Nan by 0 in J, then rescale with the mass matrix
+%
+function J = rescalegradientNan(md, unscaledJ)
+
+nanflag = isnan(unscaledJ);
+unscaledJ(nanflag) = 0;
+J = rescalegradient(md, unscaledJ);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/wfDistance.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/wfDistance.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/dataprocessing/wfDistance.m	(revision 27955)
@@ -0,0 +1,26 @@
+function w2 = wfDistance(x, y)
+%wfDistance - compute Wasserstein-Fourier Distance, according to Cazelles, E.,
+%         Robert, A. & Tobar, F. The Wasserstein-Fourier Distance for 
+%         Stationary Time Series. Ieee T Signal Proces 69, 709–721 (2019).
+%
+%   x: first time series
+%   y: second time series
+%
+%   w2:  Wasserstein-Fourier Distance, or W2 distance of sx and sy
+%
+%   Author: Cheng Gong
+%   Date: 2021-08-18
+N = length(x);
+Sinv=linspace(0,1,N);
+
+[csx, ~, freqx] = npsd(x);
+[csy, ~, freqy] = npsd(y);
+
+% inverse cummulative function
+[~, qx] = inverseHistograms(csx, freqx, Sinv);
+[~, qy] = inverseHistograms(csy, freqy, Sinv);
+
+%
+w2 = sqrt(trapz(Sinv ,(qx-qy).^2));
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/modeldata/interpFromAtlasDEM.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/modeldata/interpFromAtlasDEM.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/modeldata/interpFromAtlasDEM.m	(revision 27955)
@@ -0,0 +1,106 @@
+function dataout = interpFromAtlasDEM(X,Y,Tstart,Tend,varargin)
+	%interpFromAtlasDEM: 
+	%	This function calls src/m/contrib/morlighem/modeldata/interpFromGeotiff.m for multiple times to load all avaliable 
+	%
+	%   Usage:
+	%		 dataout = interpFromAtlasDEM(X,Y,Tstart,Tend, varargin)
+	%
+	%	X, Y are the coordinates of the mesh 
+	%	Tstart and Tend decimal year of the start and end time
+	%
+	%   Example:
+	%			obsData = interpFromAtlasDEM(md.mesh.x,md.mesh.y, tstart, tend);
+	%
+	%   Options:
+	options    = pairoptions(varargin{:});
+
+	foldername = '/totten_1/ModelData/Greenland/Helheim_ATLAS/';
+
+	% get the time info from file names
+	templist = dir([foldername,'*.tif']);
+	Ndata = length(templist);
+	dataTime = zeros(Ndata,1);
+
+	for i = 1:Ndata
+		tempConv = split(templist(i).name, '-');
+		% follow the naming convention
+		dataTime(i) = date2decyear(datenum(tempConv{1}, 'yymmdd_hhMMss'));
+	end
+	disp(['  Found ', num2str(Ndata), ' records in ', foldername]);
+	disp(['    from ', datestr(decyear2date(min(dataTime)),'yyyy-mm-dd'), ' to ', datestr(decyear2date(max(dataTime)),'yyyy-mm-dd') ]);
+
+
+	% find all the data files with Tstart<=t<=Tend
+	dataInd = (dataTime>=Tstart) & (dataTime<=Tend);
+	disp([' For the selected period: ', datestr(decyear2date((Tstart)),'yyyy-mm-dd'), ' to ', datestr(decyear2date((Tend)),'yyyy-mm-dd'), ', there are ', num2str(sum(dataInd)), ' records' ]);
+
+	dataToLoad = {templist(dataInd).name};
+	timeToload = dataTime(dataInd);
+
+	for i = 1:length(dataToLoad)
+		tifdata= interpFromTif([foldername, dataToLoad{i}], X, Y, 2e9);
+		dataout(i).name = dataToLoad{i};
+		dataout(i).surface = tifdata(:,:,3);
+		dataout(i).Time = timeToload(i);
+	end
+
+end
+
+	function dataout = interpFromTif(tifname,X,Y,nanValue) % {{{
+
+		if nargin < 4
+			nanValue = 10^30;
+		end
+
+		usemap = 0;
+
+		%Get image info
+		Tinfo = imfinfo(tifname);
+		N     = Tinfo(1).Width;
+		M     = Tinfo(1).Height;
+		dx    = Tinfo(1).ModelPixelScaleTag(1);
+		dy    = Tinfo(1).ModelPixelScaleTag(2);
+		minx  = Tinfo(1).ModelTiepointTag(4);
+		maxy  = Tinfo(1).ModelTiepointTag(5);
+
+		%Generate vectors
+		xdata = minx + dx/2 + ((0:N-1).*dx);
+		ydata = maxy - dy/2 - ((M  -1:-1:0).*dy);
+
+		%Read image
+		assert(dx>0); assert(dy>0);
+		ydata = fliplr(ydata);
+
+		%Get pixels we are interested in
+		offset=2;
+		xmin=min(X(:)); xmax=max(X(:));
+		posx=find(xdata<=xmax);
+		id1x=max(1,find(xdata>=xmin,1)-offset);
+		id2x=min(numel(xdata),posx(end)+offset);
+
+		ymin=min(Y(:)); ymax=max(Y(:));
+		posy=find(ydata>=ymin);
+		id1y=max(1,find(ydata<=ymax,1)-offset);
+		id2y=min(numel(ydata),posy(end)+offset);
+
+		data  = double(imread(tifname,'PixelRegion',{[id1y,id2y],[id1x,id2x]}));
+		xdata=xdata(id1x:id2x);
+		ydata=ydata(id1y:id2y);
+
+		if nanValue > 0
+			data(find(abs(data)>=nanValue))=NaN;
+		else
+			data(find(data<=nanValue))=NaN;
+		end
+
+		if ndims(data) == 2
+			dataout = InterpFromGrid(xdata,ydata,data,X,Y);
+		elseif ndims(data) == 3
+			for i = 1:size(data, 3)
+				dataout(:,:,i) = InterpFromGrid(xdata, ydata, data(:,:, i), X, Y);
+			end
+		else
+			error(['not implemented for data of ', num2str(ndims(data)), 'dimensions!'])
+		end
+		dataout(dataout==-9999)=NaN;
+	end %}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/modeldata/interpFromITSLIVE.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/modeldata/interpFromITSLIVE.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/modeldata/interpFromITSLIVE.m	(revision 27955)
@@ -0,0 +1,87 @@
+function [vx_out, vy_out, vx_err, vy_err] = interpFromITSLIVE(X,Y,Tstart,Tend,varargin)
+	%interpFromITSLIVE: 
+	%	Interpolate ITS_LIVE velocity data to the given mesh
+	%
+	%   Usage:
+	%		 [vx_out, vy_out] = interpFromITSLIVE(X,Y,Tstart,Tend,varargin)
+	%
+	%	X, Y are the coordinates of the mesh 
+	%	Tstart and Tend decimal year of the start and end time
+	%
+	%   Example:
+	%			[vx, vy] = interpFromITSLIVE(md.mesh.x,md.mesh.y, tstart, tend);
+	%
+	%   Options:
+	options    = pairoptions(varargin{:});
+
+	foldername = '/totten_1/ModelData/Greenland/ITS_LIVE/';
+
+	% get the time info from file names
+	templist = dir([foldername,'*.nc']);
+	Ndata = length(templist);
+	dataTime = zeros(Ndata,1);
+
+	for i = 1:Ndata
+		[~, fname, ~] = fileparts(templist(i).name);
+		tempConv = split(fname, '_');
+		% follow the naming convention
+		dataTime(i) = date2decyear(datenum(tempConv{end}, 'yyyy'));
+	end
+	disp(['  Found ', num2str(Ndata), ' records in ', foldername]);
+	disp(['    from ', datestr(decyear2date(min(dataTime)),'yyyy-mm-dd'), ' to ', datestr(decyear2date(max(dataTime)),'yyyy-mm-dd') ]);
+
+	% 0000 is a ref velocity
+
+	% find all the data files with Tstart<=t<=Tend
+	dataInd = (dataTime>=Tstart) & (dataTime<=Tend);
+	disp([' For the selected period: ', datestr(decyear2date((Tstart)),'yyyy-mm-dd'), ' to ', datestr(decyear2date((Tend)),'yyyy-mm-dd'), ', there are ', num2str(sum(dataInd)), ' records' ]);
+
+	dataToLoad = {templist(dataInd).name};
+	timeToload = dataTime(dataInd);
+
+	% Load x,y for GRE_G0240_0000.nc
+	refNF = [foldername, templist(1).name];
+	xh = ncread(refNF, 'x');
+	yh = ncread(refNF, 'y');
+
+	xmin = min(X(:)); xmax = max(X(:));
+	ymin = min(Y(:)); ymax = max(Y(:));
+	offset = max([diff(xh);diff(yh)]);
+
+	posxh = ((xh>=xmin-offset) & (xh<=xmax+offset));
+	id1xh = find(posxh, 1, 'first');
+	id2xh = find(posxh, 1, 'last');
+
+	posyh = ((yh>=ymin-offset) & (yh<=ymax+offset));
+	id1yh = find(posyh, 1, 'first');
+	id2yh = find(posyh, 1, 'last');
+
+	xh = xh(id1xh:id2xh);
+	yh = yh(id1yh:id2yh);
+
+	% loop through all the files
+	vx_out = zeros(numel(X)+1, numel(timeToload)); 
+	vy_out = zeros(numel(X)+1, numel(timeToload)); 
+	vx_err = zeros(numel(X)+1, numel(timeToload)); 
+	vy_err = zeros(numel(X)+1, numel(timeToload)); 
+	for i = 1:length(dataToLoad)
+
+		filename = [foldername, dataToLoad{i}];
+		vx = (ncread(filename,'vx',[id1xh id1yh],[id2xh-id1xh+1 id2yh-id1yh+1],[1 1]));
+		vy = (ncread(filename,'vy',[id1xh id1yh],[id2xh-id1xh+1 id2yh-id1yh+1],[1 1]));
+		vxerr = (ncread(filename,'vx_err',[id1xh id1yh],[id2xh-id1xh+1 id2yh-id1yh+1],[1 1]));
+		vyerr = (ncread(filename,'vy_err',[id1xh id1yh],[id2xh-id1xh+1 id2yh-id1yh+1],[1 1]));
+
+		vx(vx<-32760) = nan;
+		vy(vy<-32760) = nan;
+		vx_out(1:end-1,i) = InterpFromGrid(xh, yh, double(vx'), X, Y);
+		vx_out(end, i) = timeToload(i);
+		vy_out(1:end-1,i) = InterpFromGrid(xh, yh, double(vy'), X, Y);
+		vy_out(end, i) = timeToload(i);
+		vx_err(1:end-1,i) = InterpFromGrid(xh, yh, double(vxerr'), X, Y);
+		vx_err(end, i) = timeToload(i);
+		vy_err(1:end-1,i) = InterpFromGrid(xh, yh, double(vyerr'), X, Y);
+		vy_err(end, i) = timeToload(i);
+	end
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/modeldata/interpFromMEaSUREsGeotiff.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/modeldata/interpFromMEaSUREsGeotiff.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/modeldata/interpFromMEaSUREsGeotiff.m	(revision 27955)
@@ -0,0 +1,68 @@
+function dataout = interpFromMEaSUREsGeotiff(X,Y,Tstart,Tend,varargin)
+%interpFromMEaSUREsGeotiff: 
+%	This function calls src/m/contrib/morlighem/modeldata/interpFromGeotiff.m for multiple times to load all avaliable 
+%	tif data in  /totten_1/ModelData/Greenland/VelMEaSUREs/Jakobshavn_2008_2021/ within the given time period (in decimal years)
+%	For some reason, each .tif file in this folder contains two sets of data, only the first dataset is useful
+%
+%   Usage:
+%		 dataout = interpFromMEaSUREsGeotiff(X,Y,Tstart,Tend, varargin)
+%
+%	X, Y are the coordinates of the mesh 
+%	Tstart and Tend decimal year of the start and end time
+%
+%   Example:
+%			obsData = interpFromMEaSUREsGeotiff(md.mesh.x,md.mesh.y, tstart, tend);
+%
+%   Options:
+%      - 'glacier':  which glacier to look for
+options    = pairoptions(varargin{:});
+glacier    = getfieldvalue(options,'glacier','Jakobshavn');
+
+if strcmp(glacier, 'Jakobshavn')
+	foldername = '/totten_1/ModelData/Greenland/VelMEaSUREs/Jakobshavn_2008_2021/';
+elseif strcmp(glacier, 'Kangerlussuaq')
+	foldername = '/totten_1/ModelData/Greenland/VelMEaSUREs/Kangerlussuaq_2006_2021/';
+elseif strcmp(glacier, 'Store')
+	foldername = '/totten_1/ModelData/Greenland/VelMEaSUREs/Store_2008_2021/';
+elseif strcmp(glacier, 'Rink')
+	foldername = '/totten_1/ModelData/Greenland/VelMEaSUREs/Rink_2008_2022/';
+elseif strcmp(glacier, 'Upernavik')
+	foldername = '/totten_1/ModelData/Greenland/VelMEaSUREs/Upernavik_2008_2022/';
+elseif strcmp(glacier, 'Helheim')
+	foldername = '/totten_1/ModelData/Greenland/VelMEaSUREs/Helheim_2008_2023/';
+else
+	error(['The velocity data for ', glacier, ' is not available, please download from NSIDC first.']);
+end
+
+% get the time info from file names
+templist = dir([foldername,'*.meta']);
+Ndata = length(templist);
+dataTstart = zeros(Ndata,1);
+dataTend = zeros(Ndata,1);
+
+for i = 1:Ndata
+	tempConv = split(templist(i).name, '_');
+	% follow the naming convention
+	dataPrefix(i) = join(tempConv(1:5), '_');
+	dataTstart(i) = date2decyear(datenum(tempConv{3}));
+	dataTend(i) = date2decyear(datenum(tempConv{4}));
+end
+disp(['  Found ', num2str(Ndata), ' records in ', foldername]);
+disp(['    from ', datestr(decyear2date(min(dataTstart)),'yyyy-mm-dd'), ' to ', datestr(decyear2date(max(dataTend)),'yyyy-mm-dd') ]);
+
+
+% find all the data files with Tstart<=t<=Tend
+dataInd = (dataTend>=Tstart) & (dataTstart<=Tend);
+disp([' For the selected period: ', datestr(decyear2date((Tstart)),'yyyy-mm-dd'), ' to ', datestr(decyear2date((Tend)),'yyyy-mm-dd'), ', there are ', num2str(sum(dataInd)), ' records' ]);
+
+dataToLoad = dataPrefix(dataInd);
+TstartToload = dataTstart(dataInd);
+TendToload = dataTend(dataInd);
+
+for i = 1:length(dataToLoad)
+	dataout(i).vx = interpFromGeotiff([foldername, dataToLoad{i}, '_vx_v04.0.tif'], X, Y, 2e9);
+	dataout(i).vy = interpFromGeotiff([foldername, dataToLoad{i}, '_vy_v04.0.tif'], X, Y, 2e9);
+	dataout(i).vel = interpFromGeotiff([foldername, dataToLoad{i}, '_vv_v04.0.tif'], X, Y, -1);
+	dataout(i).Tstart = TstartToload(i);
+	dataout(i).Tend = TendToload(i);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/modeldata/interpISMIP6Temp.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/modeldata/interpISMIP6Temp.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/modeldata/interpISMIP6Temp.m	(revision 27955)
@@ -0,0 +1,15 @@
+function temp = interpISMIP6Temp(X, Y)
+%interpISMIP6Temp - interpolate land ice basal temperature to the given mesh
+%
+%	X and Y are the coordinates of the mesh
+%
+%  Author: Cheng Gong
+%  Last modified: 2021-12-06
+
+filename = '/totten_1/ModelData/Greenland/ISMIP6/GreenlandISMIP6-Morlighem-2020-10-01.nc';
+
+x = ncread(filename, 'x');
+y = ncread(filename, 'y');
+tb = ncread(filename, 'tb');
+
+temp = InterpFromGrid(double(x), double(y), double(tb'), X, Y);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/modeldata/interpMonthlyIceMaskGreene.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/modeldata/interpMonthlyIceMaskGreene.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/modeldata/interpMonthlyIceMaskGreene.m	(revision 27955)
@@ -0,0 +1,68 @@
+function icemask = interpMonthlyIceMaskGreene(X, Y, time, includedRockMask, ncdata)
+%INTERPMONTHLYICEMASKGREENE - interpolate monthly reconstructed ice masks onto X and Y, within the given time period
+%
+%	 Usage:
+%		distance = interpMonthlyIceMaskGreene(md.mesh.x, md.mesh.y, [md.timestepping.start_time, md.timestepping.final_time]);
+%
+%
+%   - X, Y: coordinates of the mesh or grid
+%	 - time: the starting and end point of the time series
+%   - optional 4th input argument: a flag to cover rock mask by ice and merge it into the ice mask, 
+%											so that there is no hole in the interior part of the domain, 
+%											and the mask will only represent the levelset of the ice front 
+%   - optional 5th input argument: path to the data file, by default it is the path on totten
+%
+%   Author: Cheng Gong
+%   Last modified: 2023-04-19
+
+% set icemask=-1 for the region with rocks
+if nargin < 4
+	includedRockMask = 1;
+end
+if nargin < 5
+	ncdata = '/totten_1/ModelData/Greenland/IceFrontsGreene/greenland_ice_masks_1972-2022_v1.nc';
+end
+
+x = ncread(ncdata, 'x');
+y = ncread(ncdata, 'y');
+d = ncread(ncdata, 'time');
+% convert t to decyear
+t = date2decyear(datenum(datetime('1900-01-01')+days(d)));
+
+offset=2;
+
+% get x-index covers the domain
+xmin=min(X(:)); xmax=max(X(:));
+idx = sort(find((x>=xmin) & (x<=xmax)));
+idx_min = max(idx(1)-offset, 1);
+idx_max = min(idx(end)+offset, length(x));
+x = x(idx_min:idx_max);
+
+% get y-index covers the domain
+ymin=min(Y(:)); ymax=max(Y(:));
+idy = sort(find((y>=ymin) & (y<=ymax)));
+idy_min = max(idy(1)-offset, 1);
+idy_max = min(idy(end)+offset, length(y));
+y = y(idy_min:idy_max);
+
+% get time index
+idt_min = max(find(t<=time(1), 1, 'last'), 1);
+idt_max = min(find(t>=time(end), 1, 'first'), length(t));
+t = t(idt_min:idt_max);
+
+% load icemask and rockmask from netCDF
+ice = ncread(ncdata, 'ice', [idx_min, idy_min, idt_min], [idx_max-idx_min+1, idy_max-idy_min+1, idt_max-idt_min+1], [1,1,1]);
+rock = ncread(ncdata, 'rock', [idx_min, idy_min], [idx_max-idx_min+1, idy_max-idy_min+1], [1,1]);
+
+% merge ice and rock
+if includedRockMask
+	iceall = ice + rock;
+else 
+	iceall = ice;
+end
+% Convert to ice_levelset values
+icemask = zeros(numel(X)+1, numel(t));
+icemask(end,:) = t;
+for i = 1:numel(t)
+	icemask(1:end-1, i) = InterpFromGrid(x, y, double(1-2*iceall(:,:,i)'), X, Y,'nearest');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/visualization/imageNonUni.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/visualization/imageNonUni.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/visualization/imageNonUni.m	(revision 27955)
@@ -0,0 +1,23 @@
+function imageNonUni(varargin)
+%imageNonUni - draw an image with non uniform grid
+%
+% Author: Cheng Gong
+% Last modified: 2020-08-24
+x = varargin{1};
+y = varargin{2};
+C = varargin{3};
+
+nx = length(x);
+ny = length(y);
+[ncy, ncx] = size(C);
+
+if ((nx ~= ncx) || (ny~=ncy))
+    error('The size of x-y coordinates do not match the data!');
+end
+
+X = repmat(x(:)',ny , 1);
+Y = repmat(y(:), 1, nx);
+
+
+surf(X, Y, zeros(ny,nx), C, 'EdgeColor','None');
+view(2);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/visualization/plotCompareTransientFlowline.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/visualization/plotCompareTransientFlowline.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/chenggong/visualization/plotCompareTransientFlowline.m	(revision 27955)
@@ -0,0 +1,48 @@
+function plotCompareTransientFlowline(velList, titleList, md, flowline, TStart, TEnd, xl, yl, ca)
+%plotCompareTransientFlowline - to compare the solutions along a given
+%  flowine for the given time periods
+%
+%   velList:	a cell of transient velocities on the model mesh
+%   titleList: names of the velocity data
+%   md:			ISSM model
+%   flowline:	a flowline data structure contains flowline.x and flowline.y. 
+%					If possible, it should also contains flowline.Xmain, which is 
+%					the distance along the flowline from upstream to the terminus position.
+%   TStart:		a list of start time points
+%   TEnd:		a list of end time points
+%   ca:			caixs value in plot
+%   xl:			xlim value
+%   yl:			ylim value
+%
+%   Author: Cheng Gong
+%   Date: 2021-12-06
+
+N = length(velList);
+vel_flowline = cell(N,1);
+if ~isfield(flowline, 'Xmain')
+    flowline.Xmain = cumsum([0;sqrt((flowline.x(2:end)- flowline.x(1:end-1)).^2 + (flowline.y(2:end)- flowline.y(1:end-1)).^2)]')/1000;
+end
+
+for i = 1:N
+    vel_flowline{i} = InterpFromMeshToMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,velList{i},flowline.x,flowline.y);
+end
+
+for p = 1:N
+    subplot(N,1,p)
+    hold on
+    for i = 1:length(TStart)
+        overlay = [vel_flowline{p}(:,i), vel_flowline{p}(:,i)]';
+        imAlpha = ones(size(overlay));
+        imAlpha(isnan(overlay)) = 0;
+        imageNonUni(flowline.Xmain, [TStart(i), TEnd(i)], overlay);
+    end
+    title(titleList{p}, 'Interpreter', 'latex');
+    xlim(xl)
+    xlabel('x(km)')
+    ylabel('year')
+    ylim(yl);
+    caxis(ca)
+    colormap('jet')
+    h=colorbar;
+    title(h,'m/a')
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/defleurian/netCDF/export_netCDF.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/defleurian/netCDF/export_netCDF.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/defleurian/netCDF/export_netCDF.m	(revision 27955)
@@ -0,0 +1,515 @@
+function export_netCDF(md,filename)
+%verbosity of the code, 0 is no messages, 5 is chatty
+	verbose = 5;
+	if exist(filename),
+		delete(filename)
+		% disp(sprintf('File %s allready exist', filename));
+		% prompt = 'Give a new name or "delete" to replace: ';
+		% newname = input(prompt,'s');
+		% if strcmp(newname,'delete')
+		% 	delete(filename)
+		% else
+		% 	disp(sprintf('New file name is %s ', newname));
+		% 	filename=newname
+		% end
+	end
+	%open file and write description
+	mode = netcdf.getConstant('NC_NETCDF4');
+	mode = bitor(mode,netcdf.getConstant('NC_NOCLOBBER')); %NOCLOBBER to avoid overwrite
+	ncid = netcdf.create(filename,mode);
+	netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'description',['Results for run ' md.miscellaneous.name]);
+	netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'history',['Created ' datestr(now)]);
+
+	%gather geometry and timestepping as dimensions
+	if isempty(fieldnames(md.results)),
+		%results as no field so no time is present
+		Duration = 0;
+	else
+		resfields = fieldnames(md.results);
+		Duration = size(eval(['md.results. ' resfields{1} ]),2);
+	end
+	if Duration>0,
+		StepNum = Duration;
+	else
+		StepNum=1;
+	end
+	DimSize(1).index=netcdf.defDim(ncid,'Time',StepNum);  %time is the first dimension
+	[DimSize(1).name,DimSize(1).value]=netcdf.inqDim(ncid,DimSize(1).index);
+	DimValue(1)=DimSize(1).value;
+	DimSize(2).index=netcdf.defDim(ncid,'UnLim',netcdf.getConstant('NC_UNLIMITED')); % we add an unlimited dimension if needed
+	[DimSize(2).name,DimSize(2).value]=netcdf.inqDim(ncid,DimSize(2).index);
+	DimValue(2)=DimSize(2).value;
+	% adding mesh related dimensions
+	dimlist=[2 40 md.mesh.numberofelements md.mesh.numberofvertices size(md.mesh.elements,2)];
+	dimnames=["DictDummy" "StringLength" "EltNum" "VertNum" "VertPerElt"];
+	if isprop(md.mesh, 'edges'),
+		dimlist(end+1)=md.mesh.numberofedges;
+		dimnames(end+1)="EdgeNum";
+	else
+		dimlist(end+1)=0;
+		dimnames(end+1)="EdgeNum";
+	end
+	if verbose > 0,
+		disp('===Creating dimensions ===');
+	end
+	%define netcdf dimensions
+	for i=1:length(dimlist)
+		% do not add the dimension if it exists already
+		if sum(dimlist(i) == DimValue) == 0
+			DimSize(i+2).index=netcdf.defDim(ncid,dimnames(i),dimlist(i));
+			[DimSize(i+2).name,DimSize(i+2).value]=netcdf.inqDim(ncid,DimSize(i+2).index);
+			DimValue(i+2)=DimSize(i+2).value;
+		end
+	end
+	issmclasses = fieldnames(md)';
+	typelist={'half', 'single','double','int8','int16'...
+		  ,'int32','int64','uint8','uint16','uint32'...
+		  ,'uint64','logical','char','string'};  %all malab types that are 0D
+
+	for cl=1:length(issmclasses),
+		if isempty(md.(issmclasses{cl})),
+			disp(sprintf("md.%s is empty and will be left as default",issmclasses{cl}));
+		else
+			subclasses=fieldnames(md.(issmclasses{cl}))';
+			for sc=1:length(subclasses),
+				if sum(strcmp(class(md.(issmclasses{cl}).(subclasses{sc})), typelist)) == 0,
+					issmclasses = [issmclasses class(md.(issmclasses{cl}).(subclasses{sc}))];
+				end
+			end
+		end
+	end
+	%get all model classes and create respective groups
+	groups=fieldnames(md);
+	if verbose > 0,
+		disp('===Creating and populating groups===');
+	end
+	for i=1:length(groups),
+		if verbose >1,
+			disp(sprintf('===Now treating %s===',groups{i}));
+		end
+		if any(strcmp(groups{i}, {'qmu'})),
+			disp('qmu is skipped until it is more stable');
+			continue
+		end
+		if any(strcmp(groups{i},{'radaroverlay'})),
+			disp(sprintf('%s is skipped.',groups{i}));
+			continue
+		end
+		groupID=netcdf.defGrp(ncid,groups{i});
+		%In each group gather the fields of the class
+		if isempty(md.(groups{i})),
+			disp(sprintf("WARNING: md.%s is empty, we skip it.",groups{i}))
+			continue
+		end
+		fields=fieldnames(md.(groups{i}));
+		if isempty(fields),
+			disp(sprintf("WARNING: md.%s as no fields, we skip it.",groups{i}))
+			continue
+		end
+		%looping on fields in each group
+		for j=1:length(fields),
+			Var=md.(groups{i}).(fields{j});
+			%treatment for lists
+			if isa(Var,'cell')
+				Stdlist=false;  %first assume it is not a standard list
+				if length(Var) == 0
+					Stdlist=true;  %It is empty and so standard (for us)
+				else
+					for k=1:length(typelist)
+						if isa(Var{1},typelist{k})
+							Stdlist=true;  %if the list is of a known type (to matlab) if not it is probably some exotic ISSM stuff
+						end
+					end
+				end
+				%print the issm class as a classtype attribute
+				klass = class(md.(groups{i}));
+				klasstring = strcat(klass, '.',klass);
+				netcdf.putAtt(groupID,netcdf.getConstant('NC_GLOBAL'),'classtype',klasstring);
+				if(Stdlist)  % this is a standard or empty list just proceed
+					if verbose > 4,
+						disp(sprintf("=££=creating var for %s.%s with classtype : %s",groups{i}, fields{j}, klasstring))
+					end
+					if ~isempty(Var) && isa(Var{1}, 'char'),  % we have a char array, pad it to a given length
+						Var=char(Var)';
+					end
+					[DimSize,DimValue,varid]=CreateVar(ncid,Var,groupID,fields{j},DimSize,DimValue);
+					if ~isempty(varid),
+						FillVar(Var,groupID,varid);
+					end
+
+				else % this is a list of fields, specific treatment needed (perhaps)
+					if verbose > 4,
+						disp(sprintf("=??=we have a list of fields for %s.%s with classtype : %s",groups{i}, fields{j}, klasstring));
+					end
+					if strcmp(groups{i}, 'outputdefinition'),
+						listsize=length(Var);
+						for k=1:listsize,
+							subgroupname=md.(groups{i}).(fields{j}){k}.definitionstring;
+							subgroupID=netcdf.defGrp(groupID,subgroupname);
+							klass=class(md.(groups{i}).(fields{j}){k});
+							klasstring = strcat(klass, '.',klass);
+							netcdf.putAtt(subgroupID,netcdf.getConstant('NC_GLOBAL'),'classtype',klasstring);
+							subfields=fieldnames(md.(groups{i}).(fields{j}){k});
+							for l=1:length(subfields)
+								if verbose > 4,
+									disp(sprintf("=--=creating var for %s.%s[%i].%s",groups{i}, fields{j}, k, subfields{l}));
+								end
+								Var = md.(groups{i}).(fields{j}){k}.(subfields{l});
+								if sum(numel(Var) == size(Var)) == 0,  %this is a 2D array or more (and not a vector with dimension 2 = 1)
+									Var = Var';
+								end
+								[DimSize,DimValue,varid]=CreateVar(ncid,Var,subgroupID,subfields{l},DimSize,DimValue);
+								if ~isempty(varid),
+									FillVar(Var,subgroupID,varid);
+								end
+							end
+						end
+					else
+						disp(sprintf("WARNING: unknown treatment for md.%s",groups{i}));
+					end
+				end
+			elseif sum(strcmp(class(Var), typelist))==1, %this is a standard matlab class with no subgrouping
+				if verbose > 4,
+					disp(sprintf("====creating var for %s.%s", groups{i}, fields{j}))
+				end
+				klass=class(md.(groups{i}));
+				klasstring = strcat(klass, '.',klass);
+				netcdf.putAtt(groupID,netcdf.getConstant('NC_GLOBAL'),'classgroup',groups{i});
+				netcdf.putAtt(groupID,netcdf.getConstant('NC_GLOBAL'),'classtype',klasstring);
+				if sum(numel(Var) == size(Var)) == 0,  %this is a 2D array or more (and not a vector with dimension 2 = 1)
+					Var = Var';
+				end
+
+				[DimSize,DimValue,varid]=CreateVar(ncid,Var,groupID,fields{j},DimSize,DimValue);
+				if ~isempty(varid),
+					FillVar(Var,groupID,varid);
+				end
+
+
+			elseif isa(Var,'struct')  % structures need special treatment
+				if strcmp(groups{i}, 'results'),
+					klasstring=strcat(groups{i} ,'.', groups{i});
+					netcdf.putAtt(groupID,netcdf.getConstant('NC_GLOBAL'),'classtype',klasstring);
+					Listsize= length(md.(groups{i}).(fields{j}));
+					subgroupname=fields{j};
+					subgroupID=netcdf.defGrp(groupID,subgroupname);
+					klasstring='results.solutionstep';
+					netcdf.putAtt(subgroupID,netcdf.getConstant('NC_GLOBAL'),'classtype',klasstring);
+					subfields=fieldnames(md.(groups{i}).(fields{j}));
+					if isempty(subfields),
+						disp(sprintf("WARNING: md.%s.%s as no subfields, we skip it.",groups{i}, fields{j}));
+						continue
+					end
+					for k=1:length(subfields),
+						if ~ismember(subfields{k}, {'errlog', 'outlog', 'SolutionType'})
+							StackedVar=restable();
+							for l=1:Listsize,
+								Var = md.(groups{i}).(fields{j})(l).(subfields{k});
+								if length(Var) == 0,
+									%Some variables only have data on the first step
+									break
+								end
+								lastindex=l;
+								StackedVar=StackedVar.update(Var);
+							end
+							if verbose > 4,
+								disp(sprintf("=$$=creating var for %s.%s.%s",groups{i}, fields{j}, subfields{k}));
+								disp(sprintf("last index on the list is %i",lastindex));
+							end
+							StackedVar=StackedVar.finalize(lastindex);
+							[DimSize,DimValue,varid]=CreateVar(ncid,StackedVar,subgroupID,subfields{k},DimSize,DimValue);
+							if ~isempty(varid),
+								FillVar(StackedVar,subgroupID,varid);
+							end
+						elseif ismember(subfields{k}, {'SolutionType'})
+							%We just add solution type once as an attribute
+							Var = md.(groups{i}).(fields{j})(1).(subfields{k});
+							[DimSize,DimValue,varid]=CreateVar(ncid,Var,subgroupID,subfields{k},DimSize,DimValue);
+							if ~isempty(varid),
+								FillVar(Var,subgroupID,varid);
+							end
+
+						end
+					end
+				elseif strcmp(groups{i}, 'toolkits'),
+					klasstring=strcat(groups{i} ,'.', groups{i});
+					netcdf.putAtt(groupID,netcdf.getConstant('NC_GLOBAL'),'classtype',klasstring);
+					if verbose > 4,
+						disp(sprintf("=}{=creating var for %s.%s",groups{i}, fields{j}));
+					end
+
+					[DimSize,DimValue,varid]=CreateVar(ncid,Var,groupID,fields{j},DimSize,DimValue);
+					if ~isempty(varid),
+						FillVar(Var,groupID,varid);
+					end
+
+				elseif isempty(fieldnames(md.(groups{i}).(fields{j}))) % this is an empty struct, jus treat it as normal
+					klass=class(md.(groups{i}));
+					klasstring = strcat(klass, '.',klass);
+					netcdf.putAtt(groupID,netcdf.getConstant('NC_GLOBAL'),'classtype',klasstring);
+					if verbose > 4,
+						disp(sprintf("=[]=creating var for %s.%s",groups{i}, fields{j}));
+					end
+
+					[DimSize,DimValue,varid]=CreateVar(ncid,Var,groupID,fields{j},DimSize,DimValue);
+					if ~isempty(varid),
+						FillVar(Var,groupID,varid);
+					end
+
+				else
+					disp(sprintf("WARNING, md.%s.%s is not treated as it does not fall in one of the existing cases with class '%s'.",groups{i}, fields{j}, class(md.(groups{i}).(fields{j}))))
+				end
+			elseif sum(strcmp(class(Var), issmclasses)) == 1,  % that is an issm class
+				if strcmp(class(Var), 'solution'),
+					if verbose > 4,
+						disp(sprintf("=$$=creating var for %s.%s",groups{i}, fields{j}))
+						disp("NEED treatment")
+					end
+				elseif strcmp(class(Var), 'dict'),  %we have potential for a dict in py not to sure what it translates to here.
+					if verbose > 4,
+						disp(sprintf("=WW=creating var for %s.%s",groups{i}, fields{j}))
+						disp("NEED Treatment")
+					end
+
+				else
+					klass=class(md.(groups{i}));
+					klasstring = strcat(klass, '.',klass);
+					netcdf.putAtt(groupID,netcdf.getConstant('NC_GLOBAL'),'classtype',klasstring);
+					subgroupID=netcdf.defGrp(groupID,fields{j});
+					klass=class(md.(groups{i}).(fields{j}));
+					klasstring = strcat(klass, '.',klass);
+					netcdf.putAtt(subgroupID,netcdf.getConstant('NC_GLOBAL'),'classtype',klasstring);
+					subfields=fieldnames(Var);
+					for k=1:length(subfields),
+						if sum(strcmp(subfields{k},["outlog" "errlog"])) == 0,
+							if verbose > 4,
+								disp(sprintf("+==+creating var for %s.%s.%s",groups{i}, fields{j}, subfields{k}))
+							end
+							Var=md.(groups{i}).(fields{j}).(subfields{k});
+							[DimSize,DimValue,varid]=CreateVar(ncid,Var,subgroupID,subfields{k},DimSize,DimValue);
+							if ~isempty(varid),
+								FillVar(Var,subgroupID,varid);
+							end
+						end
+					end
+
+				end
+			else
+				disp(sprintf("WARNING, md.%s.%s is not treated as it does not fall in one of the existing cases with class '%s'.",groups{i}, fields{j}, class(Var)))
+			end
+		end
+	end
+	netcdf.close(ncid);
+end
+
+function [DimSize,DimValue,varid]=CreateVar(ncid,Var,groupID,field,DimSize,DimValue)
+% Grab dimensions
+	varsize=size(Var);
+	varlength=length(Var);
+	% treating scalar string or bool as atribute
+	if isa(Var,'logical'),
+		if Var,
+			LogicString='True';
+		else,
+			LogicString='False';
+		end
+		netcdf.putAtt(groupID,netcdf.getConstant('NC_GLOBAL'),field,LogicString);
+		varid=[];
+
+	elseif isa(Var,'char'),
+		if strcmp(field,'name'),  % it looks like netCDF does not like attributes that are called "name"
+			field = 'varname';
+		end
+		if size(Var,1) <= 1  %that is a single string or empty
+			netcdf.putAtt(groupID,netcdf.getConstant('NC_GLOBAL'),field,Var);
+			varid=[];
+		else  % that is a character array
+			[dims,DimSize,DimValue]=GetDims(ncid,Var,DimSize,DimValue);
+			varid = netcdf.defVar(groupID,field,'NC_CHAR',dims);
+			if numel(Var)>1
+				netcdf.defVarDeflate(groupID,varid,true,true,4);
+			end
+		end
+
+	elseif isa(Var,'double'), %dealing with arrays
+		if all(mod(Var, 1) == 0, 'all')  %those are actually integers,
+			[dims,DimSize,DimValue]=GetDims(ncid,Var,DimSize,DimValue);
+			varid = netcdf.defVar(groupID,field,'NC_INT64',dims);
+			if numel(Var)>1
+				netcdf.defVarDeflate(groupID,varid,true,true,4);
+			end
+		else
+			[dims,DimSize,DimValue]=GetDims(ncid,Var,DimSize,DimValue);
+			varid = netcdf.defVar(groupID,field,'NC_DOUBLE',dims);
+			if numel(Var)>1
+				netcdf.defVarDeflate(groupID,varid,true,true,4);
+			end
+		end
+	elseif isa(Var,'cell'),
+		% cells can be a range of things, what are we dealing with here
+		if isempty(Var),
+			netcdf.putAtt(groupID,netcdf.getConstant('NC_GLOBAL'),field,'emptycell');
+			varid=[];
+		else
+			[dims,DimSize,DimValue]=GetDims(ncid,Var,DimSize,DimValue);
+			if isa(Var{1}, 'double'),
+				varid = netcdf.defVar(groupID,field,'NC_DOUBLE',dims);
+				if numel(Var)>1
+					netcdf.defVarDeflate(groupID,varid,true,true,4);
+				end
+			else
+				varid = netcdf.defVar(groupID,field,'NC_CHAR',dims);
+				if numel(Var)>1
+					netcdf.defVarDeflate(groupID,varid,true,true,4);
+				end
+			end
+		end
+	elseif isa(Var,'struct'),
+		if isempty(fieldnames(Var)),
+			netcdf.putAtt(groupID,netcdf.getConstant('NC_GLOBAL'),field,'emptystruct');
+			varid=[];
+		else
+			%Start by getting the structure fields and size
+			[dims,DimSize,DimValue]=GetDims(ncid,Var,DimSize,DimValue);
+			varid = netcdf.defVar(groupID,field,'NC_CHAR',dims);
+			if numel(Var)>1
+				netcdf.defVarDeflate(groupID,varid,true,true,4);
+			end
+		end
+	else
+		disp(sprintf('no support for class %s of field %s',class(Var),field));
+		varid=[];
+	end
+	return
+end
+
+
+function FillVar(Var,groupID,varid)
+% Grab dimensions
+	varsize=size(Var);
+	varlength=length(Var);
+	% treating scalar string or bool as atribute
+	if isa(Var,'double'), %dealing with arrays
+		if all(mod(Var, 1) == 0, 'all')  %those are actually integers,
+			Var = int64(Var);
+		end
+		if length(Var)==0,
+			netcdf.putVar(groupID,varid,NaN);
+		else
+			netcdf.putVar(groupID,varid,Var);
+		end
+	elseif isa(Var,'char'),  % at this point this should be a character array
+		netcdf.putVar(groupID,varid,Var);
+	elseif isa(Var,'cell'),  % there can be a number of things in a cell array
+		for i=1:length(Var),
+			if isa(Var{i},'char')  %for characters we limit the size to 40 for now
+				if length(Var)>1,
+					count=[min(length(Var{i}),40), 1];
+					startpoint=[0 i-1];
+				else
+					count=min(length(Var{i}),40);
+					startpoint=0;
+				end
+
+				if length(Var{i})>40,
+					netcdf.putVar(groupID,varid,startpoint,count,Var{i}(1:40));
+					disp(sprintf('some variable have been truncated'));
+				else
+					netcdf.putVar(groupID,varid,startpoint,count,Var{i});
+				end
+			elseif isa(Var{i},'double')
+				startpoint=[i-1];
+				count=[1 length(Var{i}) ndims(Var{i})];
+				for j=1:ndims(Var{i}),
+					startpoint=[startpoint 0];
+				end
+				netcdf.putVar(groupID,varid,startpoint,count,Var{i});
+			else
+				disp(sprintf("WARNING: cell of class %s is not supported.",class(Var{i})))
+			end
+		end
+	elseif isa(Var,'struct'),
+		%Start by getting the structure fields and size
+		locfields=fieldnames(Var);
+		for i=1:length(locfields),
+			for j=1:2,
+				if j==1,
+					CharVar=locfields{i}';
+					disp(size(CharVar))
+					if length(CharVar)==0
+						CharVar='emptystruct';
+					end
+					startpoint=[0,0,i-1]
+				else
+					if isa(Var.(locfields{i}),'char'),
+						CharVar=Var.(locfields{i})';
+					else
+						CharVar=num2str(Var.(locfields{i}))';
+					end
+					if length(CharVar)==0
+						CharVar='emptystruct';
+					end
+					startpoint=[0,1,i-1]
+				end
+
+				extent=[min(length(CharVar),40), 1, 1]
+				if length(CharVar)>40,
+					netcdf.putVar(groupID,varid,startpoint,extent,CharVar(1:40));
+					disp(sprintf('some variable have been truncated'));
+				else
+					netcdf.putVar(groupID,varid,startpoint,extent,CharVar);
+				end
+			end
+		end
+	else
+		disp(sprintf('no support for class %s',class(Var)));
+	end
+	return
+end
+
+function [dims,DimSize,DimValue]=GetDims(ncid,Var,DimSize,DimValue)
+	dims=[];
+	celldims=[];
+	dim=ndims(Var);
+	if isa(Var,'struct'),
+		varsize=length(fieldnames(Var));
+	else
+		varsize=size(Var);
+		if isa(Var, 'cell')
+			%we add the dimension of the cells themselves,
+			%that will most probably fail if cells have different sizes
+			for i=1:dim,
+				newdim=size(Var{i});
+				if ~ismember(newdim, celldims),
+					celldims=[celldims newdim];
+				end
+			end
+		end
+	end
+	varsize=[varsize celldims];
+	alldim=length(varsize);
+	if dim>0,
+		for i=1:alldim,
+			if size(Var, i)>1 || i>dim || isa(Var, 'struct'),  %we skip dimensions with zero lenght but want to add dimensions from cells
+				indsize=find(varsize(i)==DimValue);
+				if length(indsize)>0
+					dims=[dims DimSize(indsize).index];
+				else
+					indsize=length(DimSize)+1;
+					DimSize(indsize).index=netcdf.defDim(ncid,['DimNum' num2str(indsize)],varsize(i));
+					[DimSize(indsize).name,DimSize(indsize).value]=netcdf.inqDim(ncid,DimSize(indsize).index);
+					DimValue(indsize)=DimSize(indsize).value;
+					dims=[dims DimSize(indsize).index];
+				end
+			end
+		end
+	end
+	if isa(Var, 'cell') && isa(Var{1}, 'char'),
+		%if we have an cell variable with strings we need to add a stringlength
+		dims=[dims DimSize(4).index];
+	end
+	% struct also need an extra dimension 2, but only if non empty
+	if isa(Var,'struct'),
+		dims=[DimSize(4).index DimSize(3).index, dims];
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/defleurian/netCDF/export_netCDF.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/defleurian/netCDF/export_netCDF.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/defleurian/netCDF/export_netCDF.py	(revision 27955)
@@ -0,0 +1,536 @@
+from netCDF4 import Dataset
+import numpy as np
+import numpy.ma as ma
+import time
+import collections
+from inspect import isclass
+from os import path, remove
+
+
+class ResTable:
+    def __init__(self):
+        self.data = []
+        self.sizes = []
+
+    def update(self, stepvar):
+        #if we have a scalar we just add it to the end
+        #we save the size of the current step for further treatment
+        if len(np.shape(stepvar)) == 0:
+            self.sizes.append(1)
+            self.data.append(stepvar)
+        # if it is an array we add the values one by one
+        #we save the size of the current step for further treatment
+        else:
+            self.sizes.append([np.shape(stepvar)])
+            stackdat = np.squeeze(stepvar.flatten())
+            self.data = np.hstack((self.data, stackdat))
+
+    def finalize(self, rows):
+        #we have more scalars than steps, so we have an array
+        if len(self.data) > rows:
+            datasize = np.squeeze(self.sizes)
+            maxsize = []
+            try:
+                dims = np.arange(np.shape(datasize)[1])
+                for dim in dims:
+                    maxsize.append(np.nanmax(datasize[:, dim]))
+            except IndexError:
+                if datasize.ndim == 0:
+                    maxsize.append(datasize)
+                else:
+                    maxsize.append(np.nanmax(datasize[:]))
+            findim = np.insert(maxsize, 0, rows)
+            #first check if all steps are the same size
+            if datasize.ndim == 0:
+                SameSize = True
+            else:
+                SameSize = np.sum(np.abs(datasize - datasize[0])) == 0
+            if SameSize:
+                #same size for all steps, just reshape
+                return np.reshape(self.data, newshape=(findim))
+            else:
+                #different sizes at each steps, first create a table big enough for the biggest step
+                startpoint = 0
+                outdat = np.nan * np.ones(findim)
+                for step in range(rows):
+                    #slicer is the data slice in the final array
+                    slicer = [slice(0, d) for d in datasize[step, :]]
+                    slicer = np.insert(slicer, 0, step)
+                    curlen = int(np.prod(datasize[step, :]))
+                    outdat[tuple(slicer)] = np.reshape(self.data[startpoint:startpoint + curlen], newshape=(datasize[step, :]))
+                    startpoint += curlen
+                #outmasked = ma.masked_array(outdat, mask=np.where(np.isnan(outdat), 1, 0))
+                return outdat
+        #as much scalars as steps (or less) so just one value per step
+        else:
+            return np.squeeze(np.asarray(self.data))
+
+
+def export_netCDF(md, filename):  # {{{
+    #verbosity of the code, 0 is no messages, 5 is chatty
+    verbose = 0
+    if path.exists(filename):
+        print('File {} allready exist'.format(filename))
+        newname = input('Give a new name or "delete" to replace: ')
+        if newname == 'delete':
+            remove(filename)
+        else:
+            print(('New file name is {}'.format(newname)))
+            filename = newname
+    #create file and define it
+    NCData = Dataset(filename, 'w', format='NETCDF4')
+    NCData.description = 'Results for run' + md.miscellaneous.name
+    NCData.history = 'Created ' + time.ctime(time.time())
+    # define netCDF dimensions
+    #grab time from Transient if it exists
+    try:
+        StepNum = len(md.results.TransientSolution)
+    except AttributeError:  #no transient so just one timestep
+        StepNum = 1
+    except TypeError:  #this isnot a result so no results in there
+        StepNum = 0
+    TimeDim = NCData.createDimension('Time', StepNum)  # time is first
+    DimDict = {len(TimeDim): 'Time'}
+    dimindex = 1
+    UnlimDim = NCData.createDimension('Unlim', None)  # unlimited dimension if needed
+    DimDict[len(UnlimDim)] = {'Inf'}
+    dimindex = 2
+    #add mesh related dimension that we know are needed
+    dimlist = [2, 40, md.mesh.numberofelements, md.mesh.numberofvertices, np.shape(md.mesh.elements)[1]]
+    dimnames = ['DictDummy', 'StringLength', 'EltNum', 'VertNum', 'VertPerElt']
+    try:
+        dimlist = dimlist + [md.mesh.numberofedges]
+        dimnames = dimnames + ['EdgeNum']
+    except AttributeError:
+        #no edges on this mesh, we fix it at 0
+        dimlist += [0]
+        dimnames += ['EdgeNum']
+    if verbose > 0:
+        print('===Creating dimensions ===')
+    for i, newdim in enumerate(dimlist):
+        if newdim not in list(DimDict.keys()):
+            dimindex += 1
+            NewDim = NCData.createDimension(dimnames[i], newdim)
+            DimDict[len(NewDim)] = dimnames[i]
+
+    typelist = [bool, str, int, float, complex,
+                collections.OrderedDict,
+                np.int64, np.ndarray, np.float64]
+
+    # get all model classes and create respective groups
+    groups = dict.keys(md.__dict__)
+    if verbose > 0:
+        print('===Creating and populating groups===')
+    for group in groups:
+        if verbose > 1:
+            print('===Now treating {}==='.format(group))
+        if group == 'qmu':
+            print("qmu is skipped until it is more stable")
+            continue
+        NCgroup = NCData.createGroup(str(group))
+        # In each group gather the fields of the class
+        try:
+            fields = dict.keys(md.__dict__[group].__dict__)
+        except AttributeError:
+            print("WARNING: md.{} as no fields, we skip it.".format(group))
+            continue
+        # looping on fields in each group
+        for field in fields:
+            Var = md.__dict__[group].__dict__[field]
+            # Special treatment for list fields
+            if type(Var) == list:
+                StdList = False
+                if len(Var) == 0:
+                    StdList = True  #this is an empty list
+                else:
+                    #returns False for exotic types (typicaly results)
+                    StdList = type(Var[0]) in typelist
+                klass = type(md.__dict__[group]).__module__ + '.' + type(md.__dict__[group]).__name__
+                NCgroup.__setattr__('classtype', klass)
+                if StdList:  # this is a standard or empty list just proceed
+                    if verbose > 4:
+                        print("=££=creating var for {}.{} with classtype : {}".format(group, field, klass))
+                    Var = SqueezeVar(Var)
+                    DimDict, ncvar = CreateVar(NCData, Var, field, NCgroup, DimDict)
+                    if ncvar is not None:
+                        FillVar(ncvar, Var)
+                else:  # this is a list of fields, specific treatment needed (usually results or outputdefinitions)
+                    if verbose > 4:
+                        print("=??=we have a list of fields for {}.{} with classtype : {}".format(group, field, klass))
+                    Listsize = len(Var)
+                    if group == 'results':  #for results we reshape the datas following time rather than subgrouping
+                        Subgroup = NCgroup.createGroup(str(field))
+                        try:
+                            #take the class of the first element to define nc class and get the list of variables
+                            klass = type(md.__dict__[group].__dict__[field][0]).__module__ + '.' + type(md.__dict__[group].__dict__[field][0]).__name__
+                            Subgroup.__setattr__('classtype', klass)
+                            subfields = dict.keys(md.__dict__[group].__dict__[field][0].__dict__)
+                        except (IndexError, AttributeError):
+                            klass = type(md.__dict__[group].__dict__[field]).__module__ + '.' + type(md.__dict__[group].__dict__[field]).__name__
+                            Subgroup.__setattr__('classtype', klass)
+                            subfields = dict.keys(md.__dict__[group].__dict__[field].__getitem__(0))
+                        for subfield in subfields:
+                            if subfield not in ['errlog', 'outlog']:
+                                StackedVar = ResTable()
+                                #first loop over the field (result type) to find the index of the last subfield (variable)
+                                for listindex in range(0, Listsize):
+                                    try:
+                                        Var = md.__dict__[group].__dict__[field].__getitem__(listindex).__dict__[subfield]
+                                        lastindex = listindex + 1
+                                    except AttributeError:
+                                        Var = md.__dict__[group].__dict__[field].__getitem__(listindex)[subfield]
+                                    except KeyError:
+                                        #Some fields only exist for the first step
+                                        lastindex = listindex
+                                        continue
+                                    #Add the  subfield at the current step
+                                    Var = SqueezeVar(Var)
+                                    StackedVar.update(Var)
+                                if verbose > 4:
+                                    print("=@@=creating var for {}.{}.{}".format(group, field, subfield))
+                                    print("last index of the list is {}".format(lastindex))
+                                StackedVar = SqueezeVar(StackedVar.finalize(int(lastindex)))
+                                DimDict, ncvar = CreateVar(NCData, StackedVar, subfield, Subgroup, DimDict)
+                                #and fill it up
+                                if ncvar is not None:
+                                    FillVar(ncvar, StackedVar)
+                    elif group == 'outputdefinition':  #for outputdefinition we keep a subgroup format
+                        for listindex in range(0, Listsize):
+                            Subgroupname = str(md.__dict__[group].__dict__[field][listindex].definitionstring)
+                            Subgroup = NCgroup.createGroup(Subgroupname)
+                            klass = type(md.__dict__[group].__dict__[field][listindex]).__module__ + '.' + type(md.__dict__[group].__dict__[field][listindex]).__name__
+                            Subgroup.__setattr__('classtype', klass)
+                            subfields = dict.keys(md.__dict__[group].__dict__[field][listindex].__dict__)
+                            for subfield in subfields:
+                                Var = md.__dict__[group].__dict__[field].__getitem__(listindex).__dict__[subfield]
+                                Var = SqueezeVar(Var)
+                                if verbose > 4:
+                                    print("=--=creating var for {}.{}[{}].{}".format(group, field, listindex, subfield))
+                                DimDict, ncvar = CreateVar(NCData, Var, subfield, Subgroup, DimDict)
+                                #and fill it up
+                                if ncvar is not None:
+                                    FillVar(ncvar, Var)
+                    else:
+                        print("WARNING: unknown treatment for md.{}".format(group))
+            # No subgroup, we directly treat the variable
+            elif type(md.__dict__[group].__dict__[field]) in typelist or field == 'bamg':
+                klass = type(md.__dict__[group]).__module__ + '.' + type(md.__dict__[group]).__name__
+                NCgroup.__setattr__('classtype', klass)
+                Var = md.__dict__[group].__dict__[field]
+                Var = SqueezeVar(Var)
+                if verbose > 4:
+                    print("====creating var for {}.{}".format(group, field))
+                DimDict, ncvar = CreateVar(NCData, Var, field, NCgroup, DimDict)
+                if ncvar is not None:
+                    FillVar(ncvar, Var)
+            # empty field, do nothing
+            elif md.__dict__[group].__dict__[field] is None:
+                print('field md.{}.{} is None'.format(group, field))
+            # if it is a masked array
+            elif type(md.__dict__[group].__dict__[field]) is np.ma.core.MaskedArray:
+                klass = type(md.__dict__[group]).__module__ + '.' + type(md.__dict__[group]).__name__
+                NCgroup.__setattr__('classtype', klass)
+                Var = md.__dict__[group].__dict__[field].data
+                Var = SqueezeVar(Var)
+                if verbose > 4:
+                    print("=++=creating var for {}.{}".format(group, field))
+                DimDict, ncvar = CreateVar(NCData, Var, field, NCgroup, DimDict)
+                if ncvar is not None:
+                    FillVar(ncvar, Var)
+            # this is an issm class
+            elif isclass(type(md.__dict__[group].__dict__[field])):
+                if type(md.__dict__[group].__dict__[field]).__name__ == 'solution':
+                    #for results we reshape the datas following time rather than subgrouping
+                    Listsize = len(md.__dict__[group].__dict__[field])
+                    Subgroup = NCgroup.createGroup(str(field))
+                    try:
+                        #take the class of the first element to define nc class and get the list of variables
+                        klass = type(md.__dict__[group].__dict__[field][0]).__module__ + '.' + type(md.__dict__[group].__dict__[field][0]).__name__
+                        Subgroup.__setattr__('classtype', klass)
+                        subfields = dict.keys(md.__dict__[group].__dict__[field][0].__dict__)
+                    except (IndexError, AttributeError):
+                        klass = type(md.__dict__[group].__dict__[field]).__module__ + '.' + type(md.__dict__[group].__dict__[field]).__name__
+                        Subgroup.__setattr__('classtype', klass)
+                        subfields = dict.keys(md.__dict__[group].__dict__[field].__getitem__(0))
+                    for subfield in subfields:
+                        if subfield not in ['errlog', 'outlog']:
+                            StackedVar = ResTable()
+                            for listindex in range(0, Listsize):
+                                try:
+                                    Var = md.__dict__[group].__dict__[field].__getitem__(listindex).__dict__[subfield]
+                                    lastindex = listindex + 1
+                                except AttributeError:
+                                    Var = md.__dict__[group].__dict__[field].__dict__[subfield]
+                                    lastindex = listindex
+                                except KeyError:
+                                    #Some fields only exist for the first step
+                                    lastindex = listindex
+                                    break
+                                Var = SqueezeVar(Var)
+                                StackedVar.update(Var)
+                            if verbose > 4:
+                                print("=$$=creating var for {}.{}.{}".format(group, field, subfield))
+                                print("last index of the list is {}".format(lastindex))
+                            StackedVar = SqueezeVar(StackedVar.finalize(int(lastindex)))
+                            DimDict, ncvar = CreateVar(NCData, StackedVar, subfield, Subgroup, DimDict)
+                            #and fill it up
+                            if ncvar is not None:
+                                FillVar(ncvar, StackedVar)
+                elif type(md.__dict__[group].__dict__[field]).__name__ == 'dict':
+                    # designed for a dict in dummy but might be used elsewhere
+                    # there is no subgroup
+                    klass = type(md.__dict__[group]).__module__ + '.' + type(md.__dict__[group]).__name__
+                    NCgroup.__setattr__('classtype', klass)
+                    Var = md.__dict__[group].__dict__[field]
+                    Var = SqueezeVar(Var)
+                    if verbose > 4:
+                        print("=WW=creating var for {}.{}".format(group, field))
+                    DimDict, ncvar = CreateVar(NCData, Var, field, NCgroup, DimDict)
+                    if ncvar is not None:
+                        FillVar(ncvar, Var)
+                else:
+                    klass = type(md.__dict__[group]).__module__ + '.' + type(md.__dict__[group]).__name__
+                    NCgroup.__setattr__('classtype', klass)
+                    Subgroup = NCgroup.createGroup(str(field))
+                    klass = type(md.__dict__[group].__dict__[field]).__module__ + '.' + type(md.__dict__[group].__dict__[field]).__name__
+                    Subgroup.__setattr__('classtype', klass)
+                    subfields = dict.keys(md.__dict__[group].__dict__[field].__dict__)
+                    for subfield in subfields:
+                        if str(subfield) not in ['errlog', 'outlog']:
+                            Var = md.__dict__[group].__dict__[field].__dict__[subfield]
+                            Var = SqueezeVar(Var)
+                            if verbose > 4:
+                                print("+==+creating var for {}.{}.{}".format(group, field, subfield))
+                            DimDict, ncvar = CreateVar(NCData, Var, subfield, Subgroup, DimDict)
+                            if ncvar is not None:
+                                FillVar(ncvar, Var)
+            else:
+                print("WARNING, md.{}.{} is not treated as it does not fall in one of the existing cases.".format(group, field))
+
+    NCData.close()
+
+# }}}
+
+
+def CreateVar(NCData, var, field, Group, DimDict, *SupDim):  # {{{
+    #=================================================================
+    # Define the variables
+    #=================================================================
+    # grab type
+    try:
+        val_type = str(var.dtype)
+        if val_type.startswith('<U'):
+            val_type = 'stringarray'
+    except AttributeError:
+        val_type = type(var)
+
+    # grab dimension
+    if val_type in [collections.OrderedDict, dict]:
+        val_shape = len(var.keys())
+        val_dim = 2
+    else:
+        val_shape = np.shape(var)
+        val_dim = np.shape(val_shape)[0]
+    TypeDict = {float: 'f8',
+                'float64': 'f8',
+                np.float64: 'f8',
+                int: 'i8',
+                'int64': 'i8',
+                np.int64: 'i8',
+                str: str,
+                dict: str}
+
+    # Now define and fill up variable
+    # treating scalar string or bool as atribute
+    if val_type in [str, bool]:
+        if field == 'name':  # it looks like netCDF does not like attributes that are called "name"
+            field = 'varname'
+        Group.__setattr__(str(field), str(var))
+        ncvar = None
+    # numpy array of strings
+    elif val_type == "stringarray":
+        #if all strings are the same set it as an attribute
+        try:
+            samestring = all(var == var[0])
+        except IndexError:
+            #Only one string
+            samestring = True
+        if samestring:
+            if field == 'name':
+                field = 'varname'
+            try:
+                Group.__setattr__(str(field), str(var[0]))
+            except IndexError:
+                Group.__setattr__(str(field), str(var))
+            ncvar = None
+        else:
+            dimensions, DimDict = GetDim(NCData, val_shape, val_type, DimDict, val_dim)
+            ncvar = Group.createVariable(str(field), str, dimensions=dimensions, zlib=True)
+    # treating list as string table
+    elif val_type == list:
+        # try to get the type from the first element
+        try:
+            nctype = TypeDict[type(var[0])]
+        except IndexError:
+            nctype = str  # most probably an empty list take str for that
+
+        if val_shape in [(), (0,), 0]:
+            ncvar = Group.createVariable(str(field), nctype, zlib=True)
+        else:
+            dimensions, DimDict = GetDim(NCData, val_shape, val_type, DimDict, val_dim)
+            ncvar = Group.createVariable(str(field), nctype, dimensions=dimensions, zlib=True)
+    # treating  dict as string tables
+    elif val_type in [collections.OrderedDict, dict]:
+        if val_shape in [(), (0,), 0]:
+            ncvar = Group.createVariable(str(field), str, zlib=True)
+        else:
+            dimensions, DimDict = GetDim(NCData, val_shape, val_type, DimDict, val_dim)
+            ncvar = Group.createVariable(str(field), str, dimensions=dimensions, zlib=True)
+    # treating bool as integers
+    elif val_type == 'bool':
+        if val_shape in [(), (0,), 0]:
+            ncvar = Group.createVariable(str(field), int, zlib=True)
+        else:
+            dimensions, DimDict = GetDim(NCData, val_shape, val_type, DimDict, val_dim)
+            ncvar = Group.createVariable(str(field), int, dimensions=dimensions, zlib=True)
+    # Now dealing with doubles, we convert them to int if possible
+    elif val_type in [float, 'float64', np.float64]:
+        try:
+            #check if we are integer and under C long overflow also skip empty arrays
+            IsInt = np.sum(np.mod(var, 1)) == 0 and np.all(abs(var) < 2147483647) and len(var) > 0
+        except TypeError:
+            #check if we are integer and under C long overflow
+            IsInt = np.mod(var, 1) == 0 and abs(var) < 2147483647
+        if IsInt:
+            val_type = 'int64'
+        if val_shape in [(), (0,), 0] and not SupDim:
+            ncvar = Group.createVariable(str(field), TypeDict[val_type], zlib=True)
+        else:
+            dimensions, DimDict = GetDim(NCData, val_shape, val_type, DimDict, val_dim)
+            if SupDim:
+                dimensions = SupDim + dimensions
+            ncvar = Group.createVariable(str(field), TypeDict[val_type], dimensions=dimensions, zlib=True)
+    elif val_type in [int, 'int64']:
+        if val_shape in [(), (0,), 0] and not SupDim:
+            ncvar = Group.createVariable(str(field), TypeDict[val_type], zlib=True)
+        else:
+            dimensions, DimDict = GetDim(NCData, val_shape, val_type, DimDict, val_dim)
+            if SupDim:
+                dimensions = SupDim + dimensions
+            ncvar = Group.createVariable(str(field), TypeDict[val_type], dimensions=dimensions, zlib=True)
+    else:
+        print(('WARNING type "{}" is unknown for "{}.{}"'.format(val_type, Group.name, field)))
+        ncvar = None
+    return DimDict, ncvar
+# }}}
+
+
+def FillVar(ncvar, invar, *UnlimIndex):  # {{{
+    #=================================================================
+    # Define the variables
+    #=================================================================
+    # grab type
+    try:
+        val_type = str(invar.dtype)
+        if val_type.startswith('<U'):
+            val_type = 'stringarray'
+    except AttributeError:
+        val_type = type(invar)
+    # grab dimension
+    if val_type in [collections.OrderedDict, dict]:
+        val_shape = len(invar)
+    else:
+        val_shape = np.shape(invar)
+
+    # Now fill up variable
+    # treating list as string table
+    if val_type == list:
+        if val_shape == 0:
+            ncvar = []
+        else:
+            for elt in range(0, val_shape[0]):
+                ncvar[elt] = invar[elt]
+    # writing string table
+    elif val_type == "stringarray":
+        for elt in range(0, val_shape[0]):
+            ncvar[elt] = invar[elt]
+    # treating bool tables as string tables
+    elif val_type == 'bool':
+        for elt in range(0, val_shape[0]):
+            ncvar[elt] = int(invar[elt])  #str(invar[elt])
+    # treating dictionaries as tables of strings
+    elif val_type in [collections.OrderedDict, dict]:
+        for elt, key in enumerate(dict.keys(invar)):
+            ncvar[elt, 0] = key
+            ncvar[elt, 1] = str(invar[key])  # converting to str to avoid potential problems
+    # Now dealing with numeric variables
+    elif val_type in [float, 'float64', np.float64, int, 'int64']:
+        try:
+            nan_val = np.isnan(invar)
+            if nan_val.all():
+                naned = 'NaN'
+            else:
+                naned = invar
+        except TypeError:  # type does not accept nan, get vallue of the variable
+            naned = invar
+
+        if UnlimIndex:
+            if len(val_shape) == 0:
+                ncvar[UnlimIndex] = naned
+            elif len(val_shape) == 1:
+                ncvar[UnlimIndex, :] = naned
+            elif len(val_shape) == 2:
+                ncvar[UnlimIndex, :, :] = naned
+            elif len(val_shape) == 3:
+                ncvar[UnlimIndex, :, :, :] = naned
+            else:
+                print('WARNING: dimension not supported')
+        else:
+            ncvar[:] = naned
+    else:
+        print(('WARNING type "{}" is unknown'.format(val_type)))
+    return
+# }}}
+
+
+def GetDim(NCData, val_shape, val_type, DimDict, val_dim):  #{{{
+    # ============================================================================
+    # retriev the dimension tuple from a dictionnary
+    # ============================================================================
+    output = []
+    if val_type in [collections.OrderedDict, dict]:  # dealling with a dictionnary
+        try:
+            output = [str(DimDict[val_shape])]  # first try to get the coresponding dimension if ti exists
+            output = output + [DimDict[2]]  # DictDummy is 2 to treat with dict
+        except KeyError:
+            index = len(DimDict) + 1  # if the dimension does not exist, increment naming
+            NewDim = NCData.createDimension('DimNum' + str(index), val_shape)  # create dimension
+            DimDict[len(NewDim)] = 'DimNum' + str(index)  # and update the dimension dictionary
+            output = [str(DimDict[val_shape])] + [DimDict[2]]  # now proceed with the shape of the value
+    else:
+        # loop on dimensions
+        for dim in range(0, val_dim):  # loop on the dimensions
+            try:
+                output = output + [str(DimDict[val_shape[dim]])]  # test if the dimension allready exist
+            except KeyError:  # if not create it
+                if (val_shape[dim]) > 0:
+                    index = len(DimDict) + 1
+                    NewDim = NCData.createDimension('DimNum' + str(index), (val_shape[dim]))
+                    DimDict[len(NewDim)] = 'DimNum' + str(index)
+                    output = output + [str(DimDict[val_shape[dim]])]
+    return tuple(output), DimDict
+# }}}
+
+
+def SqueezeVar(Var):  # {{{
+    vardim = len(np.shape(Var))
+    if vardim > 1:
+        Var = np.squeeze(Var)
+
+    return Var
+# }}}
+
+
+def grow(self, row):  # {{{
+    np.append(self.data, row)
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/defleurian/netCDF/read_netCDF.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/defleurian/netCDF/read_netCDF.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/defleurian/netCDF/read_netCDF.m	(revision 27955)
@@ -0,0 +1,110 @@
+function self=read_netCDF(filename)
+
+	% Different types in the netcdf standard are:
+	%   2 for char
+	%   4 for integer
+	%   6 for doubles	
+
+	ncid=netcdf.open(filename,'NC_NOWRITE');
+	groupIDs=netcdf.inqGrps(ncid);%retrieve group IDs
+	self=model;
+	%loop on groups
+	for i=1:length(groupIDs)
+		whichclass = netcdf.getAtt(groupIDs(i),netcdf.getConstant('NC_GLOBAL'),'classtype');
+		groupName = netcdf.inqGrpName(groupIDs(i));		
+		%results needs a special treatment as it is a structure
+		if strcmp(whichclass,'results'),
+			subgroupIDs=netcdf.inqGrps(groupIDs(i));%retrieve group IDs
+			%define the model structure
+			self=setfield(self,groupName,struct);
+			for j=1:length(subgroupIDs)
+				subclass = netcdf.getAtt(subgroupIDs(j),netcdf.getConstant('NC_GLOBAL'),'classtype');
+				self.results=setfield(self.results,subclass,struct);
+				[ndims nvar natts]=netcdf.inq(subgroupIDs(j));
+				varIDs=netcdf.inqVarIDs(subgroupIDs(j));
+				%first loop on group atributes
+				for k=1:natts,
+					attname = netcdf.inqAttName(subgroupIDs(j),netcdf.getConstant('NC_GLOBAL'),k-1);
+					[xtype,attlen] = netcdf.inqAtt(subgroupIDs(j),netcdf.getConstant('NC_GLOBAL'),attname);
+					disp(sprintf('In %s, Treating attribute %s of type %i',subclass,attname,xtype));
+					%classtype have done is job, no need to keep it any more
+					if ~strcmp(attname,'classtype'),
+						attval=netcdf.getAtt(subgroupIDs(j),netcdf.getConstant('NC_GLOBAL'),attname);
+						if strcmp(attval,'False'),
+							self.(groupName).(subclass).(attname)=false;
+						elseif strcmp(attval,'True')
+							self.(groupName).(subclass).(attname)=true;
+						else
+							self.(groupName).(subclass).(attname)=attval;
+						end
+					end
+				end
+				%now loop on variable in group
+				count=0;
+				for k=1:length(varIDs),
+					[varname, xtype, varDimIDs, varAtts] =netcdf.inqVar(subgroupIDs(j),varIDs(k));
+					disp(sprintf('In %s, Treating variable %s of type %i',whichclass,varname,xtype));
+					%time dimension seems to be last in our construction
+					for l=1:length(varDimIDs),
+						[dimname, dimlen] = netcdf.inqDim(ncid,varDimIDs(l));
+						count(l)=[dimlen];
+					end
+					startpoint=zeros(size(varDimIDs));
+					timestep=count(end);
+					count(end)=1;
+					for l=1:timestep,
+						data=netcdf.getVar(subgroupIDs(j),varIDs(k),startpoint,count);
+						self.(groupName).(subclass)(l).(varname)=data;
+						startpoint(end)=startpoint(end)+1;
+						self.(groupName).(subclass)(l).('errlog')='';
+						self.(groupName).(subclass)(l).('outlog')='';
+						self.(groupName).(subclass)(l).('SolutionType')=subclass;
+					end
+					count=0;
+				end
+			end
+		else,
+			%define the model structure
+			self.(groupName)=eval(whichclass);
+			varIDs=netcdf.inqVarIDs(groupIDs(i));
+			[ndims nvar natts]=netcdf.inq(groupIDs(i));
+			%first loop on group atributes
+			for j=1:natts,
+				attname = netcdf.inqAttName(groupIDs(i),netcdf.getConstant('NC_GLOBAL'),j-1);
+				[xtype,attlen] = netcdf.inqAtt(groupIDs(i),netcdf.getConstant('NC_GLOBAL'),attname);
+				disp(sprintf('In %s, Treating attribute %s of type %i',whichclass,attname,xtype));
+				%classtype have done is job, no need to keep it any more
+				if ~strcmp(attname,'classtype'),
+					attval=netcdf.getAtt(groupIDs(i),netcdf.getConstant('NC_GLOBAL'),attname);
+					if strcmp(attval,'False'),
+						self.(groupName).(attname)=false;
+					elseif strcmp(attval,'True')
+						self.(groupName).(attname)=true;
+					else
+						self.(groupName).(attname)=attval;
+					end
+				end
+			end
+			%now loop on variable in group
+			for j=1:length(varIDs),
+				[varname, xtype, varDimIDs, varAtts] =netcdf.inqVar(groupIDs(i),varIDs(j));
+				disp(sprintf('In %s, Treating variable %s of type %i',whichclass,varname,xtype));			
+				%if the value is a single string, we need to transpose it (cross check with python file is necessary)
+				if xtype==2
+					varval=netcdf.getVar(groupIDs(i),varIDs(j))';
+					varval=cellstr(varval)';
+					if strcmp(varval{1},'emptystruct'),
+						self.(groupName).(varname)=struct;
+					elseif strcmp(varval{1},'emptycell'),
+						self.(groupName).(varname)=cell(0,0);
+					else
+						self.(groupName).(varname)=varval;
+					end
+				else
+					self.(groupName).(varname)=netcdf.getVar(groupIDs(i),varIDs(j));
+				end
+			end
+		end
+	end
+	netcdf.close(ncid)
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/defleurian/netCDF/read_netCDF.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/defleurian/netCDF/read_netCDF.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/defleurian/netCDF/read_netCDF.py	(revision 27955)
@@ -0,0 +1,22 @@
+from netCDF4 import Dataset
+from os import path
+
+
+def netCDFRead(filename):
+    def walktree(data):
+        keys = list(data.groups.keys())
+        yield keys
+        for key in keys:
+            for children in walktree(data.groups[str(key)]):
+                yield children
+
+    if path.exists(filename):
+        print(('Opening {} for reading '.format(filename)))
+        NCData = Dataset(filename, 'r')
+        class_dict = {}
+
+        for children in walktree(NCData):
+            for child in children:
+                class_dict[str(child)] = str(getattr(NCData.groups[str(child)], 'classtype') + '()')
+
+        print(class_dict)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/defleurian/netCDF/restable.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/defleurian/netCDF/restable.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/defleurian/netCDF/restable.m	(revision 27955)
@@ -0,0 +1,60 @@
+classdef restable
+	properties(SetAccess=public)
+		data=[];
+		sizes=[];
+	end
+	methods
+		function self = update(self, stepvar)
+			if length(stepvar) == 1
+				%if we have a scalar we just add it to the end
+				%we save the size of the current step for further treatment
+				self.sizes=[self.sizes;1];
+				self.data=[self.data;stepvar];
+			else
+				% if it is an array we add the values one by one
+				%we save the size of the current step for further treatment
+				self.sizes=[self.sizes;fliplr(size(stepvar))];
+				%we need to transpose to follow the indexing
+				flatdata=reshape(stepvar', 1, []);
+				self.data=[self.data,flatdata];
+			end
+		end
+		function outdat = finalize(self, rows)
+			if length(self.data)>rows,
+				if size(self.sizes, 1)==1,
+					%just one step, data don't need treatment
+					outdat=self.data;
+				else,
+					%we have more scalars than steps, so we have an array
+					maxsize=[];
+					for d=1:size(self.sizes,2)
+						maxsize=[maxsize,max(self.sizes(:,d))];
+					end
+					findim=[maxsize, rows];
+					%first check if all steps are the same size
+					SameSize = sum(self.sizes - self.sizes(1, :))==0;
+					if SameSize,
+						%same size for all steps, just reshape
+						outdat=reshape(self.data, findim);
+					else,
+						%different sizes at each steps, first create a table big enough for the biggest step
+						startpoint=1;
+						datadim=ndims(self.data);
+						outdat=nan(findim);
+						for r=1:rows
+							curlen = prod(self.sizes(r, :));
+							outdat(1:self.sizes(r,1), 1:self.sizes(r,2), r) = reshape(self.data(startpoint:startpoint+ ...
+													  curlen-1),self.sizes(r,:));
+							startpoint = startpoint+curlen;
+						end
+
+					end
+				end,
+			else,
+				%as much scalars as steps (or less) so just one value per step
+				outdat=self.data;
+
+			end
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/dlcheng/MeshMergedOutlineToShp.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/dlcheng/MeshMergedOutlineToShp.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/dlcheng/MeshMergedOutlineToShp.m	(revision 27955)
@@ -0,0 +1,21 @@
+function MeshMergedOutlineToShp(mds,shapefilename)
+%MeshMergedOutlineToShp - export multiple mesh outlines to shp file
+%
+%   Usage:
+%      MeshMergedOutlineToShp({md1,md2},'Greenland.shp');
+
+	contours= struct([]);
+    count=1;
+    for i=1:length(mds)
+        md = mds{i};
+        for j=1:md.mesh.numberofvertices
+            if md.mesh.vertexonboundary(j)
+                contours(count).x = md.mesh.x(j);
+                contours(count).y = md.mesh.y(j);
+                contours(count).id = count;
+                contours(count).Geometry = 'Point';
+                count = count + 1;
+            end
+        end
+	end
+	shpwrite(contours,shapefilename);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/dlcheng/MeshOutlineToShp.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/dlcheng/MeshOutlineToShp.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/dlcheng/MeshOutlineToShp.m	(revision 27955)
@@ -0,0 +1,16 @@
+function MeshOutlineToShp(md,shapefilename)
+%MESHOUTLINETOSHP - export mesh outline to shp file
+%
+%   Usage:
+%      MeshOutlineToShp(md,'Greenland.shp');
+
+	contours= struct([]);
+	for i=1:md.mesh.numberofvertices
+        if md.mesh.vertexonboundary(i)
+            contours(i).x = md.mesh.x(i);
+            contours(i).y = md.mesh.y(i);
+            contours(i).id = i;
+            contours(i).Geometry = 'Point';
+        end
+	end
+	shpwrite(contours,shapefilename);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/dlcheng/VxVyToVv.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/dlcheng/VxVyToVv.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/dlcheng/VxVyToVv.m	(revision 27955)
@@ -0,0 +1,37 @@
+name='CWGreenland.'; %new Central West Greenland project to do AD from Store to Upernavik.
+org=organizer('repository','./Models','prefix',name,'steps',steps);
+NSIDCName='./Data/Greenland';
+WestCoastName='./Data/Rink/';
+modeldatapath='/Users/larour/ModelData/';
+modeldata2path='/Users/larour/ModelData2/';
+MARName=[modeldata2path 'MARv3.11/ERA/CW_Greenland/'];
+qgispath='/Users/larour/issm-jpl/proj-group/qgis/';
+greenlandshppath=[qgispath '/GreenlandStateEstimate/'];
+GIMP='/Users/larour/ModelData/HowatDEMGreenland2012/HowatDEMGreenland2012_90m_smooth.mat';
+
+%Path to shapefiles: 
+shppath=[qgispath '/Greenland/30km/'];
+shppathslr=[qgispath '/Slr/'];
+
+if perform(org,'GenerateLandsatVV'), % {{{
+    rootname = [modeldatapath '/VelHowat'];
+    infos = dir([rootname '/*/*/*_vx_*.tif']);
+    for i=1:length(infos),
+        filename = infos(i).name; %Example: OPT_W70.55N_1986-05_vx_v02.1.tif
+        path = [infos(i).folder '/' infos(i).name];
+
+        vx_path = path;
+        vy_path = strrep(vx_path, '_vx_', '_vy_');
+        vv_path = strrep(vx_path, '_vx_', '_vv_');
+
+        [vx,Rx] = readgeoraster(vx_path);
+        [vy,Ry] = readgeoraster(vy_path);
+        vx(vx==-99999)=nan;
+        vy(vy==-99999)=nan;
+
+        vel = sqrt(vx.^2+vy.^2);
+        disp(vv_path);
+        geotiffwrite(vv_path, vel, Rx, 'CoordRefSysCode', 3413);
+    end
+end % }}}
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/dlcheng/zoneaverage.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/dlcheng/zoneaverage.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/dlcheng/zoneaverage.m	(revision 27955)
@@ -0,0 +1,79 @@
+function avg=zoneaverage(md,field,parameter,width,distweight,areaweight,iter)
+%ZONEAVERAGE - averages the field over the elements within the distance specified by parameter .* width. 
+%               Average is weighted by the element area using model's triangulation.
+%               Width determines distance multiplier of parameter when calculating a node's distance for inclusion in an average.
+%               Distweight and Areaweight control how the node distance and area affect the weighted average.
+%               Iteration is the number of iterations to run the zone averaging.
+%
+%   Usage:
+%      avg=zone_average(md,field,parameter,width,distweight,areaweight)
+
+%TODO: HANDLE NARGINS/PAIROPTION STYLE ARGS FOR WIDTH, DISTWEIGHT, AREAWEIGHT, ITER
+
+if (dimension(md.mesh)==2),
+	numberofelements=md.mesh.numberofelements;
+	numberofnodes=md.mesh.numberofvertices;
+	index=md.mesh.elements;
+	x=md.mesh.x; y=md.mesh.y;
+else
+	numberofelements=md.mesh.numberofelements2d;
+	numberofnodes=md.mesh.numberofvertices2d;
+	index=md.mesh.elements2d;
+	x=md.mesh.x2d; y=md.mesh.y2d;
+end
+
+%node
+if numel(field)==numberofnodes,
+    areas=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y);
+
+    %calculate distances between nodes and reshape into addressable matrix
+    nodes=[md.mesh.x, md.mesh.y];
+    dist=pdist([nodes;nodes]);
+    dist=squareform(dist);
+    dist=dist(1:numberofnodes,numberofnodes+1:end);
+
+    %calculate max distance to average each vertex using parameter * width and mask distances
+    maxdist = parameter * width;
+    flags=dist<=maxdist;
+    
+    %calculate average area per node
+    nodeareas=zeros(numberofnodes,1);
+    elementspernode=zeros(numberofnodes,1);
+    for i=1:numberofelements,
+        for j=1:3,
+            node=index(i,j);
+            nodeareas(node)=nodeareas(node)+areas(i);
+            elementspernode(node)=elementspernode(node)+1;
+        end
+    end
+    nodeareas=nodeareas./elementspernode;
+    
+    %get distance/area weighted average of field within specified parameter width
+    avg=zeros(numberofnodes,1);
+    totalweight=distweight+areaweight;
+    distweight=distweight/totalweight;
+    areaweight=areaweight/totalweight;
+    for iter=1:iter,
+%     for iter=1:1,
+        for i=1:numberofnodes,
+            %distance weighting
+            distsum = sum(dist(i,flags(i,:))) + eps;
+            distmax = max(dist(i,flags(i,:)));
+            distweights = ones(sum(flags(i,:)),1);
+            distweights = distweights + 1 - distweight*(dist(i,(flags(i,:)))'/distsum); %inverse linear distance weight
+            distweights = distweights / sum(distweights);
+
+            %area weighting
+            areasum = sum(nodeareas(flags(i,:))) + eps;
+            areaweights = areaweight*nodeareas(flags(i,:))/areasum;
+            weights=distweights+areaweights;
+            avg(i)=nansum(weights.*field(flags(i,:)));
+            %avg(i)=nanmean(field(flags(i,:)),1);
+
+    %         areasum = sum(nodeareas(flags));
+    %         weights = nodeareas(flags)/areasum;
+    %         avg=nanmean(weights.*field(flags),2);
+        end
+        field=avg;
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/elmer/readelmermesh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/elmer/readelmermesh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/elmer/readelmermesh.m	(revision 27955)
@@ -0,0 +1,21 @@
+function md=readelmermesh(domainfile)
+
+	%Read node file
+	filename = [domainfile '.nodes'];
+	disp(['Reading ' filename]);
+	nodes = load(filename);
+
+	%Get coordinates
+	x = nodes(:,3);
+	y = nodes(:,4);
+
+	%Read element file
+	filename = [domainfile '.elements'];
+	disp(['Reading ' filename]);
+	elements = load(filename);
+
+	%Get indices
+	index = elements(:,4:6);
+
+	%Convert mesh
+	md=meshconvert(model,index,x,y);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/UQ/sampling.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/UQ/sampling.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/UQ/sampling.m	(revision 27955)
@@ -0,0 +1,29 @@
+function s=drawfrompdf(x,y,nsamples,mode)
+% Samples a 1-D pdf histogram
+% x: variable to be sampled
+% y: pdf histogram of x, best if y(1)=0 in continuous sample mode
+% nsamples: how many samples must be generated
+% mode: 'continuous' or 'discrete'. 'discrete' will generate only values provided in x, 'continuous' will interpolate such that values provided be < x(end), or in [x(1) x(end)] if y(1)=0 
+ y=[cumsum(y/sum(y))]; %compute the CDF
+ s=zeros(nsamples,1);
+
+if y(1)~=0 & strcmpi(mode,'continuous')
+    disp('WARNING: y(1)~=0, values < x(1) might be generated extrapolating y(2)-y(1)')
+end
+
+ for i=1:nsamples
+     r=rand(1); %uniform [0 1] sampling
+    j=2;    
+    while r>y(j)
+        j=j+1;
+    end
+    if strcmpi(mode,'continuous')
+    d=(r-y(j-1))/(y(j)-y(j-1));
+    s(i)=x(j-1)*(1.d0-d)+x(j)*d; %linear interpolation of the cdf to map r into x
+    elseif strcmpi(mode, 'discrete')
+        s(i)=x(j);
+    else 
+        error(' ''mode'' must be set to ''discrete'' or ''continuous'' ')
+    end
+ end
+ 
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/applyqgisstyle.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/applyqgisstyle.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/applyqgisstyle.m	(revision 27955)
@@ -0,0 +1,21 @@
+function applyqgisstyle(filename,type); 
+
+	%Getting extension out: 
+	[path,name,ext]=fileparts(filename);
+
+	%New name: 
+	if isempty(path),
+		newname=[name '.qml'];
+	else
+		newname=[path '/' name '.qml'];
+	end
+
+	if strcmpi(type,'mesh'),
+		system(['cp /Users/larour/issm-jpl/usr/larour/Qgis/Mesh.qml ' newname]);
+	elseif strcmpi(type,'line'),
+		system(['cp /Users/larour/issm-jpl/usr/larour/Qgis/LineStyle.qml ' newname]);
+	elseif strcmpi(type,'point'),
+		system(['cp /Users/larour/issm-jpl/usr/larour/Qgis/SummitStyle.qml ' newname]);
+	else
+		error(['applyqgisstyle error message: ' type ' style not supported yet']);
+	end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/confidenceintervals.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/confidenceintervals.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/confidenceintervals.m	(revision 27955)
@@ -0,0 +1,36 @@
+function level=confidenceintervals(x,h,threshold)
+%CONFIDENCEINTERVALS: build confidence interval from histogram.
+   
+	nods=size(h,1); nbins=size(h,2);
+
+	%make sure h is one column smaller than x
+	if size(x,2) ~= (size(h,2)+1),
+		error('x should be one column larger than the histogram');
+	end
+
+	%First build cdf: 
+	c=[zeros(nods,1) cumsum(h,2)];
+
+	%In percentage: 
+	threshold=threshold/100;
+
+	flags=zeros(nods,nbins+1);
+	pos=find(c<threshold);
+	flags(pos)=1;
+	diffc=diff(flags,1,2);
+
+	[ind,j]=find(diffc==-1);
+	indices=zeros(nods,1); 
+	indices(ind)=j;
+
+	%threshold was passed between j and j+1 for each node. try 
+	%to pin down the fraction better: 
+	idx = sub2ind(size(c), [1:size(c,1)]', indices);
+	idx2 = sub2ind(size(c), [1:size(c,1)]', indices+1);
+	val1=c(idx);
+	val2=c(idx2);
+	x1=x(idx);
+	x2=x(idx2);
+
+	fraction=(threshold-val1)./(val2-val1);
+	level=x1+fraction.*(x2-x1);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/contouradjust.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/contouradjust.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/contouradjust.m	(revision 27955)
@@ -0,0 +1,53 @@
+function [newxi,newyi]=contouradjust(xi,yi,x,y);
+
+	figure(1),clf,hold on;
+	plot(xi,yi,'r-o'); xl=xlim; yl=ylim;
+
+	newxi=xi;
+	newyi=yi;
+
+	for i=1:length(xi)-1,
+		x1=xi(i); y1=yi(i);
+		x2=xi(i+1); y2=yi(i+1);
+
+		%is there in x and y someone on the segments [x1,y1][x2,y2]
+		newx=[]; newy=[];
+		for j=1:length(x),
+			 if pointonsegment(x1,y1,x2,y2,x(j),y(j)),
+				 newx(end+1,1)=x(j);
+				 newy(end+1,1)=y(j);
+			end
+		end
+		plot(newx,newy,'k*'); xlim(xl),ylim(yl);
+		if ~isempty(newx),
+			%ok, we have found points on this segment, need to order them: 
+			distance=sqrt((newx-x1).^2+(newy-y1).^2);
+			distance
+			error
+		end
+
+	end
+end
+
+function on=pointonsegment(xA,yA,xB,yB,xC,yC) % {{{
+
+	on=0; 
+	
+	AB=[xB-xA; yB-yA;0];
+	AC=[xC-xA; yC-yA;0];
+
+	if ~norm(cross(AB,AC)), return; end
+
+	KAC=dot(AB,AC);
+	
+	if(KAC<0), return; end;
+	if(KAC==0), return; end;
+
+	KAB=dot(AB,AB);
+
+	if(KAC>KAB) return; end; 
+	if(KAC==KAB) return; end; 
+
+	on=1; 
+	return;
+end %}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/ecco/MeltingGroundingLines.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/ecco/MeltingGroundingLines.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/ecco/MeltingGroundingLines.m	(revision 27955)
@@ -0,0 +1,26 @@
+function md=MeltingGroundingLines(md,distance,value)
+%MELTINGGROUNDINGLINES - set melting near grounding lines to a constant value
+%
+%   Usage:
+%      md=MeltingGroundingLines(md,distance,value)
+%
+
+%get nodes on ice sheet and on ice shelf
+pos_shelf=find(md.mask.ocean_levelset<0.);
+pos_GL=intersect(unique(md.mesh.elements(find(md.mask.elementongroundedice),:)),unique(md.mesh.elements(find(md.mask.elementonfloatingice),:)));
+
+for i=1:length(pos_shelf)
+
+	if (mod(i,100)==0),
+		fprintf('\b\b\b\b\b\b\b%5.2f%s',i/length(pos_shelf)*100,' %');
+	end
+
+	%search the node on ice sheet the closest to i
+	[d posd]=min(sqrt((md.mesh.x(pos_shelf(i))-md.mesh.x(pos_GL)).^2+(md.mesh.y(pos_shelf(i))-md.mesh.y(pos_GL)).^2));
+
+	if d<distance,
+
+		md.melting(pos_shelf(i))=value;
+
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/ecco/PropagateFlagsUntilDistance.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/ecco/PropagateFlagsUntilDistance.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/ecco/PropagateFlagsUntilDistance.m	(revision 27955)
@@ -0,0 +1,60 @@
+function new_flags=PropagateFlagsUntilDistance(md,flags,distance)
+%PROPAGATEFLAGSUNTILDISTANCE
+%
+% Usage: 
+%              flags=PropagateFlagsUntilDistance(md,flags,distance)
+%
+%
+
+new_flags=flags;
+
+%make 3d work in 2d: 
+if dimension(md.mesh)==3,
+	md.mesh.x=md.mesh.x2d;
+	md.mesh.y=md.mesh.y2d;
+	md.mesh.elements=md.mesh.elements2d;
+end
+
+%find elements that are at the border of flags: 
+flag_elements=find(flags);
+conn=md.mesh.elementconnectivity(flag_elements,:);
+pos=find(conn);conn(pos)=~flags(conn(pos));
+sum_conn=sum(conn,2);
+border_elements=flag_elements(find(sum_conn>=1));
+
+%average x and y over elements: 
+x_elem=md.mesh.x(md.mesh.elements)*[1;1;1]/3;
+y_elem=md.mesh.y(md.mesh.elements)*[1;1;1]/3;
+
+while 1,
+
+	%keep copy of new_flags for this loop: 
+	new_flags_bak=new_flags;
+
+	%extend new flags by connectivity
+	pos=find(new_flags);
+
+	connected_elements=md.mesh.elementconnectivity(pos,:);
+	connected_elements=connected_elements(find(connected_elements));
+	new_flags(connected_elements)=1;
+
+	%get new elements: 
+	new_elements=find(new_flags & ~new_flags_bak);
+	if ~length(new_elements),
+		%we are done!
+		break;
+	end
+
+	%check which of these new elements are more than distance away from the border elements
+	for i=1:length(new_elements),
+		dist=sqrt(     (x_elem(border_elements)-x_elem(new_elements(i))).^2 + (y_elem(border_elements)-y_elem(new_elements(i))).^2)-distance;
+		if ~any(dist<0)
+			%none of the border elements are within distance, this element is outside out area of interest.
+			%ensure this element never gets found again in the connectivity.
+			pos=find(md.mesh.elementconnectivity==new_elements(i));
+			md.mesh.elementconnectivity(pos)=0;
+			%exclude this new element from the new_flags!
+			new_flags(new_elements(i))=0;
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/ecco/ecco32issm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/ecco/ecco32issm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/ecco/ecco32issm.m	(revision 27955)
@@ -0,0 +1,8 @@
+function nodefield=ecco32issm(field,transition,xecco3,yecco3)
+
+	xecco3linear=xecco3(:); yecco3linear=yecco3(:); %linearize
+	nodefieldlinear=zeros(length(xecco3linear),1);
+	nodefieldlinear(transition(:,1))=field(transition(:,2));
+	nodefield=xecco3;
+	nodefield(:)=nodefieldlinear;
+	%nodefield=nodefield'; %not sure we need that
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/ecco/issm2ecco3.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/ecco/issm2ecco3.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/ecco/issm2ecco3.m	(revision 27955)
@@ -0,0 +1,8 @@
+function nodefield=issm2ecco3(field,transition,xecco3,yecco3)
+
+	xecco3linear=xecco3(:); yecco3linear=yecco3(:); %linearize
+	nodefieldlinear=zeros(length(xecco3linear),1);
+	nodefieldlinear(transition(:,1))=field(transition(:,2));
+	nodefield=xecco3;
+	nodefield(:)=nodefieldlinear;
+	%nodefield=nodefield'; %not sure we need that
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/epsg34132shpprj.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/epsg34132shpprj.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/epsg34132shpprj.m	(revision 27955)
@@ -0,0 +1,8 @@
+function epsg34132shpprj(filename)
+
+	%filename: does it have an extension? remove it. 
+	[path,name,ext] = fileparts(filename);
+
+	fid=fopen([path '/' name '.prj'],'w');
+	fprintf(fid,'PROJCS["WGS_84_NSIDC_Sea_Ice_Polar_Stereographic_North",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic_North_Pole"],PARAMETER["standard_parallel_1",70],PARAMETER["central_meridian",-45],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter",1]]');
+	fclose(fid);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/equiprobable_histogram_uncertain.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/equiprobable_histogram_uncertain.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/equiprobable_histogram_uncertain.m	(revision 27955)
@@ -0,0 +1,6 @@
+function [abscissas,counts,pair_per_variable]=equiprobable_histogram_uncertain(numberabscissas)
+
+	pair_per_variable=numberabscissas+1;
+	abscissas=(1:(numberabscissas+1))';
+	p=ones(numberabscissas,1)/numberabscissas;
+	counts=[p;0]; counts=counts/sum(counts);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/exportpoint.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/exportpoint.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/exportpoint.m	(revision 27955)
@@ -0,0 +1,10 @@
+function exportpoint(x,y,shapefilename); 
+
+	contours=struct([]);
+	for i=1:length(x),
+		contours(i).id=i;
+		contours(i).Lon=x(i);
+		contours(i).Lat=y(i);
+		contours(i).Geometry='Point';
+	end
+	shapewrite(contours,shapefilename);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/glacier_inventory.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/glacier_inventory.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/glacier_inventory.m	(revision 27955)
@@ -0,0 +1,468 @@
+%GLACIER_INVENTORY class definition
+%
+%   Usage:
+%      inv = glacier_inventory(varargin)
+%
+%      where varargin is a variable list of options: 
+%
+%   Usage: 
+%      rgi = glacier_inventory('root',shapefileroot,...
+%                       'filenames',region_names,...
+%                       'boxes', region_boxes);
+%   Example: 
+%      rgi = glacier_inventory('root','~/ModelData',...
+%                       'filenames',{'01_rgi60_Alaska','02_rgi60_WesternCanadaUS'},...
+%                       'boxes','00_rgi60_O2Regions.shp');
+%
+%   Watch out boxes do not have to match the region shapefiles. Example: O1regions vs O2 regions shapefiles. 
+
+classdef glacier_inventory < handle
+	properties (SetAccess=public) %Model fields
+		root    = '';
+		regions          = struct();
+		boxes            = struct();
+		element_connectivity = [];
+		glacier_connectivity = [];
+	end
+	methods
+		
+		function self = glacier_inventory(varargin) % {{{
+
+			options=pairoptions(varargin{:}); 
+
+			self.root=getfieldvalue(options,'root');
+			region_names=getfieldvalue(options,'filenames');
+			boxes_filename=getfieldvalue(options,'boxes');
+
+			%first read boxes regions shapefile: 
+			disp('reading boxes for each region');
+			self.boxes=shpread([self.root '/' boxes_filename]);
+
+			%read the shape files and create the regions: 
+			counter=0;
+			self.regions=struct();
+			for i=1:length(region_names),
+				disp(['reading region: '  region_names{i}]);
+				self.regions(i).name=region_names{i};
+				self.regions(i).id=i;
+				contours=shpread([self.root '/' self.regions(i).name '.shp']);
+
+				%we can't keep all the info: build arrays of centroids instead of reading 
+				%the contours.
+				O1Region=zeros(length(contours),1);
+				O2Region=zeros(length(contours),1);
+				Area=zeros(length(contours),1);
+				CenLon=zeros(length(contours),1);
+				CenLat=zeros(length(contours),1);
+				Connectivity=zeros(length(contours),1);
+				for j=1:length(contours),
+					O1Region(j)=str2num(contours(j).O1Region);
+					O2Region(j)=str2num(contours(j).O2Region);
+					Area(j)=contours(j).Area;
+					CenLon(j)=contours(j).CenLon;
+					CenLat(j)=contours(j).CenLat;
+					Connectivity(j)=contours(j).Connect;
+				end
+				self.regions(i).Area=Area;
+				self.regions(i).O1Region=O1Region;
+				self.regions(i).O2Region=O2Region;
+				self.regions(i).CenLat=CenLat;
+				self.regions(i).CenLon=CenLon;
+				self.regions(i).Connectivity=Connectivity;
+				self.regions(i).lids=[1:length(contours)]';
+				self.regions(i).gids=self.regions(i).lids+counter;
+				counter=counter+length(contours);
+			end
+	end
+	%}}}
+		function readcontours(self) % {{{
+			%we are reading the contours from each shape file for each region, reproject
+			%the latlong in these contours to the local laea projection, and rewrite the shapefile
+			%we a different name extension.
+
+			for i=1:self.nregions,
+				
+				disp(['reading shapefile for region: '  self.regions(i).name]);
+				contours=shaperead([self.root '/' self.regions(i).name '.shp']);
+
+				disp(['concatenating contours (X,Y)']);
+				count=0;
+				for j=1:length(contours),
+					count=count+length(contours(j).X);
+				end
+				xc=zeros(count,1); 
+				yc=zeros(count,1);
+				count=0;
+				for j=1:length(contours),
+					nj=length(contours(j).X);
+					xc((count+j):(count+j+nj-1))=contours(j).X;
+					yc((count+j):(count+j+nj-1))=contours(j).Y;
+					count=count+nj;
+				end
+
+				disp(['projecting (X,Y)']);
+				lat0= fix(mean(self.regions(i).CenLat)); long0=fix(mean(self.regions(i).CenLon));
+				proj=laea(lat0,long0); self.regions(i).proj=proj;
+				[xc,yc]=gdaltransform(xc,yc,'EPSG:4326',proj);
+
+				disp(['plugging back into contours']);
+				count=0;
+				for j=1:length(contours),
+					nj=length(contours(j).X);
+					contours(j).X=xc((count+j):(count+j+nj-1));
+					contours(j).Y=yc((count+j):(count+j+nj-1));
+					count=count+nj;
+				end
+				disp(['saving new contours to disk']);
+				shapewrite(contours,[self.root '/' self.regions(i).name '.laeaproj.shp']);
+			end
+		end
+		%}}}
+		function varargout=loadcontour(self,id) % {{{
+			
+			%go find the projected contours for an 'id' region: 
+			disp(['reading projected shapefile for region: '  self.regions(id).name]);
+			contours=shaperead([self.root '/' self.regions(id).name '.laeaproj.shp']);
+			self.regions(id).contours=contours;
+
+			if nargout==1,
+				varargout{1}=contours;
+			end
+
+		end
+		%}}}
+		function disp(self) % {{{
+			disp(sprintf('   Glacier inventory:')); 
+
+			disp(['   number of regions: ' num2str(self.nregions())]);
+			for i=1:self.nregions(),
+				disp(sprintf('      region %i: ''%s'' %i glaciers ',i,self.regions(i).name,length(self.regions(i).Area)));
+			end
+
+		end % }}}
+		function mesh_connectivity(self,mesh,varargin) % {{{
+			
+			%retrieve options: 
+			options=pairoptions(varargin{:}); 
+
+			subsetregions=getfieldvalue(options,'regions',1:length(self.boxes));
+			errornotfound=getfieldvalue(options,'errornotfound',1);
+			plotr=getfieldvalue(options,'plot',0);
+			plotr=1;
+
+			%The way we run this is through the O2 zones defined in boxes. We go through 
+			%these  regions, figure out the centroid, figure out how many elements are close to
+			%this centroid (very important to do this through vertex lat,long, and not through elemnet
+			% lat,long which can be seriously warped because of the -180 to +180 longitude transition. 
+			%We then project the region in lamber azimuthal equal area, along with glaciers and elements. 
+			%Once projected, we figure out which glaciers belong to which element  in the local 
+			%projection system. 
+
+			%initialize glacier connectivity: 
+			self.glacier_connectivity=zeros(self.nglaciers,1);
+
+			%assume maximum width for connectivity table and initialize 
+			%as sparse matrix: 
+			ny=self.nglaciers(); self.element_connectivity=sparse(mesh.numberofelements,ny);
+				
+			disp('Building element and glacier connectivity table: ');
+
+			%O2 regions: 
+			o1=zeros(self.nglaciers(),1);
+			o2=zeros(self.nglaciers(),1);
+			counter=1;
+			for i=1:self.nregions(),
+				region=self.regions(i);
+				for j=1:length(region.CenLat),
+					o1(counter)=region.O1Region(j);
+					o2(counter)=region.O2Region(j);
+					counter=counter+1;
+				end
+			end
+
+			%Go through O2 regions: 
+			for i=subsetregions,
+			%for i=33,
+				string=self.boxes(i).RGI_CODE; 
+				disp(['progressing with region ' num2str(i) ' ' string]);
+				offset=findstr(string,'-'); 
+				o1i=str2num(string(1:offset-1));
+				o2i=str2num(string(offset+1:end));
+				glaciers=find(o1==o1i & o2==o2i);
+
+				if ~isempty(glaciers),
+					%find lat,long for laea projection: 
+					box=self.boxes(i).BoundingBox; 
+					long0=mean(box(:,1));
+					lat0=mean(box(:,2));
+					proj=laea(lat0,long0);
+
+					%find radius of box: 
+					minlat=min(box(:,2)); maxlong=max(box(:,1)); 
+					radius=sqrt( (lat0-minlat)^2+(long0-maxlong)^2);
+
+					%some radius adjustment:  {{{
+					switch i,
+						case 4, radius=40;
+						case 8, radius=60;
+						case 12, radius=25;
+						case 19, radius=60;
+						case 32, radius=60;
+						case 33, radius=10;
+						case 41, radius=75;
+						case 42, radius=45;
+						case 61, radius=66;
+						case 68, radius=10;
+						case 82, radius=30;
+						otherwise,
+					end % }}}
+
+					[lids,rids]=self.gidtolid(glaciers);
+					%quick check on the rids, should all be the same number: 
+					if min(rids)~=max(rids)error(sprintf('rids should only span on O1 region')); end;
+					rid=max(rids);
+
+					region=self.regions(rid);
+					elements=flaglatlongradiuselements(mesh.elements,mesh.lat,mesh.long,lat0,long0,radius);
+
+					if plotr, % {{{
+						figure(1),clf; 
+						subplot(2,1,1),hold on;
+						trisurf(mesh.elements(elements,:),mesh.long,mesh.lat,mesh.lat),view(2); 
+						plot3(box(1,1),box(1,2),1000,'r*','MarkerSize',10);
+						plot3(box(1,1),box(2,2),1000,'r*','MarkerSize',10);
+
+						plot3(box(2,1),box(1,2),1000,'r*','MarkerSize',10);
+						plot3(box(2,1),box(2,2),1000,'r*','MarkerSize',10);
+
+						plot3(region.CenLon(lids),region.CenLat(lids),1000*ones(length(lids),1),'k*');
+					end % }}}
+
+					%project lat,long: 
+					[x,y]=gdaltransform(mesh.long,mesh.lat,'EPSG:4326',proj);
+					[xlid,ylid]=gdaltransform(region.CenLon(lids),region.CenLat(lids),'EPSG:4326',proj);
+
+					if plotr, % {{{
+						figure(1),subplot(2,1,2), hold on;
+						trisurf(mesh.elements(elements,:),x,y,x),view(2); 
+						plot3(xlid,ylid,1000*ones(length(lids),1),'k*');
+						pause(.1);
+					end % }}}
+
+					%go through lids: 
+					for j=1:length(lids),
+						found=0;
+						x0=xlid(j); y0=ylid(j);
+						for k=1:length(elements),
+							el=elements(k);
+							x1=x(mesh.elements(el,1)); y1=y(mesh.elements(el,1));
+							x2=x(mesh.elements(el,2)); y2=y(mesh.elements(el,2));
+							x3=x(mesh.elements(el,3)); y3=y(mesh.elements(el,3));
+
+							if isintriangle(x0,x1,x2,x3,y0,y1,y2,y3),
+								found=1;
+								break;
+							end
+						end
+						if ~found,
+							if errornotfound,
+								error(sprintf('could not find element for glacier %i with lid %i',j,lids(j)));
+							end
+						end
+						if(found)self.glacier_connectivity(glaciers(j))=el; end;
+					end
+				end
+			end 
+
+			%build element connectivity table: 
+			for j=1:length(self.glacier_connectivity),
+				el=self.glacier_connectivity(j);
+				if ~el,continue; end;
+				count=self.element_connectivity(el,ny);
+				if count>ny,
+					error('need to enlarge connectivity table to at least');
+				end
+				self.element_connectivity(el,count+1)=j;
+				self.element_connectivity(el,ny)=count+1;
+			end
+
+			%Reduce the number of columns (we did not initially, so we chose an arbitrary ny:
+			nmax=max(self.element_connectivity(:,end));
+			self.element_connectivity=self.element_connectivity(:,[1:nmax,ny]);
+
+
+		end % }}}
+		function mesh_connectivity2d(self,md,proj,varargin) % {{{
+			
+			%retrieve options: 
+			options=pairoptions(varargin{:}); 
+
+			subsetregions=getfieldvalue(options,'regions',1:self.nregions());
+
+			%initialize glacier connectivity: 
+			self.glacier_connectivity=zeros(self.nglaciers,1);
+
+			%assume maximum width for connectivity table and initialize 
+			%as sparse matrix: 
+			ny=self.nglaciers(); self.element_connectivity=sparse(md.mesh.numberofelements,ny);
+				
+			disp('Building element and glacier connectivity table: ');
+			[lat0,long0]=projlatlong(proj);
+		
+			[mpartition,npartition]=self.partition();
+			for i=subsetregions,
+				region=self.regions(i);
+				disp(sprintf(' progress for region: %s',region.name));
+
+				%project lat,long: 
+				[xlid,ylid]=gdaltransform(region.CenLon,region.CenLat,'EPSG:4326',proj);
+
+				%go through lids: 
+				x0=xlid; y0=ylid;
+				x1=md.mesh.x(md.mesh.elements(:,1)); y1=md.mesh.y(md.mesh.elements(:,1));
+				x2=md.mesh.x(md.mesh.elements(:,2)); y2=md.mesh.y(md.mesh.elements(:,2));
+				x3=md.mesh.x(md.mesh.elements(:,3)); y3=md.mesh.y(md.mesh.elements(:,3));
+				in=isintrianglearraytotal(x0,x1,x2,x3,y0,y1,y2,y3);
+				[els,glacs]=find(in);
+				self.glacier_connectivity(mpartition(i)-1+glacs)=els;
+			end
+
+			%build element connectivity table: 
+			for j=1:length(self.glacier_connectivity),
+				el=self.glacier_connectivity(j);
+				if ~el,continue; end;
+				count=self.element_connectivity(el,ny);
+				if count>ny,
+					error('need to enlarge connectivity table to at least');
+				end
+				self.element_connectivity(el,count+1)=j;
+				self.element_connectivity(el,ny)=count+1;
+			end
+
+			%Reduce the number of columns (we did not initially, so we chose an arbitrary ny:
+			nmax=max(self.element_connectivity(:,end));
+			self.element_connectivity=self.element_connectivity(:,[1:nmax,ny]);
+
+
+		end % }}}
+		function checkconnectivity(self,mesh) % {{{
+
+			vector=find(self.element_connectivity(:,end));
+
+			for i=1:length(vector),
+				el=vector(i);
+
+				flags=zeros(mesh.numberofelements,1);
+				flags(el)=1;
+
+				nglaciers=self.element_connectivity(el,end); 
+				glaciers=self.element_connectivity(el,1:nglaciers);
+
+				[lids,rids]=self.gidtolid(glaciers);
+				lat=zeros(length(glaciers),1);
+				long=zeros(length(glaciers),1);
+				for j=1:nglaciers,
+					lat(j)=self.regions(rids(j)).CenLat(lids(j));
+					long(j)=self.regions(rids(j)).CenLon(lids(j));
+				end
+
+				proj=laea(lat(1),long(1));
+
+				figure(1),clf,hold on;
+				[x,y]=gdaltransform(mesh.long(mesh.elements(el,:)),mesh.lat(mesh.elements(el,:)),'EPSG:4326',proj);
+				p=patch('XData',x,'YData',y);  set(p,'FaceColor','red')
+
+				[x,y]=gdaltransform(long,lat,'EPSG:4326',proj);
+				plot(x,y,'k*');
+				pause(.1);
+			end
+
+		end % }}}
+		function totalarea=area(self,varargin) % {{{
+			region=-1;
+			totalarea=0;
+			if nargin==2,
+				region=varargin{1};
+			end
+			if region==-1,
+				%figure out the areas of everybody: 
+				for i=1:self.nregions(),
+					totalarea=totalarea+sum(self.regions(i).Area);
+				end
+			else
+				totalarea=totalarea+sum(self.regions(region).Area);
+			end
+
+		end % }}}
+		function [mpartition,npartition]=partition(self,varargin) % {{{
+			mpartition=zeros(self.nregions(),1);
+			npartition=zeros(self.nregions(),1);
+			counter=0;
+			for i=1:self.nregions(),
+				mpartition(i)=counter+1;
+				npartition(i)=counter+self.nglaciers(i);
+				counter=counter+self.nglaciers(i);
+			end
+
+		end % }}}
+		function n = nregions(self) % {{{
+			n=length(self.regions);
+		end
+		%}}}
+		function counter = nglaciers(self,varargin) % {{{
+
+			if nargin==1,
+				region=-1; %all regions.
+			else
+				region=varargin{1}; %only one.
+			end
+
+			if region==-1,
+				counter=0;
+				for i=1:self.nregions(),
+					counter=counter+length(self.regions(i).Area);
+				end
+			else
+				counter=length(self.regions(region).Area);
+			end
+		end
+		%}}}
+		function name=ridtoname(self,rid) % {{{
+			
+			fullname=self.regions(rid).name; 
+			name=fullname(10:end);
+
+		end % }}}
+		function [gid]=lidtogid(self,rid,lid) % {{{
+			[mpartition,npartition]=self.partition();
+			gid=mpartition(rid)+lid-1;
+		end % }}}
+		function [lid,rid]=gidtolid(self,gid) % {{{
+			[mpartition,npartition]=self.partition();
+			lid=zeros(length(gid),1);
+			rid=zeros(length(gid),1);
+			for i=1:self.nregions(),
+				pos=find(gid>=mpartition(i) & gid<=npartition(i)); 
+				rid(pos)=i;
+				lid(pos)=gid(pos)-mpartition(i)+1;
+			end
+
+		end % }}}
+		function units(self) % {{{
+			disp('Glacier inventory units: ');
+			disp('   areas: km^2');
+			disp('   mass: Gt');
+
+		end
+		%}}}
+		function listboxes(self) % {{{
+
+			for i=1:length(self.boxes),
+				b=self.boxes(i);
+				disp(sprintf('Region #%i: %s (%s)',i,b.FULL_NAME,b.RGI_CODE));
+			end
+			
+		end
+		%}}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/glaciermip.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/glaciermip.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/glaciermip.m	(revision 27955)
@@ -0,0 +1,190 @@
+%GLACIERMIP class definition
+%
+%   Usage:
+%      gmip = glaciermip('ncfile',glaciermipncfile,'version',1)
+%
+%
+
+classdef glaciermip < handle
+	properties (SetAccess=public) %Model fields
+		ncfile  = '';
+		version = NaN;
+
+		%version 2:
+		area =[];
+		mass =[];
+		region =[];
+		time =[];
+		glaciermodel =[];
+		climatemodel =[];
+		scenario =[];
+
+		%from version 1:
+		run=[];
+		forcingmodel=[];
+		realization=[];
+		volume=[];
+	end
+	methods
+		function self = glaciermip(varargin) % {{{
+
+			if nargin==0, 
+				self=setdefaultparameters(self);
+			else 
+				self=setdefaultparameters(self);
+
+				options=pairoptions(varargin{:});
+
+				self.ncfile=getfieldvalue(options,'ncfile');
+				self.version=getfieldvalue(options,'version');
+
+
+				%read variables:
+				if self.version==1,
+					self.region=ncread(self.ncfile,'region');
+					self.time=ncread(self.ncfile,'time');
+					self.run=ncread(self.ncfile,'run');
+					self.glaciermodel=ncread(self.ncfile,'glaciermodel');
+					self.forcingmodel=ncread(self.ncfile,'forcingmodel');
+					self.scenario=ncread(self.ncfile,'scenario');
+					self.realization=ncread(self.ncfile,'realization');
+					self.area=ncread(self.ncfile,'area');
+					self.volume=ncread(self.ncfile,'volume');
+				elseif self.version==2,
+					self.area=ncread(self.ncfile,'Area');
+					self.mass=ncread(self.ncfile,'Mass');
+					self.region=ncread(self.ncfile,'Region');
+					self.time=ncread(self.ncfile,'Time');
+					self.glaciermodel=ncread(self.ncfile,'Glacier_Model');
+					self.climatemodel=ncread(self.ncfile,'Climate_Model');
+					self.scenario=ncread(self.ncfile,'Scenario');
+					%mass(region,time,climatemodel,glaciermodel,scenario)
+				else 
+					error(sprintf('glaciermipfile constructor error message: version %i for MIP not supported!'),self.version);
+				end
+			end
+		end
+		%}}}
+		function inv = setdefaultparameters(inv) % {{{
+		end
+		%}}}
+		function t=gettime(self,varargin) % {{{
+			
+			options=pairoptions(varargin{:});
+			t=self.time;
+
+		end % }}}
+		function masses=getmass(self,varargin) % {{{
+			
+			options=pairoptions(varargin{:});
+
+			rg=getfieldvalue(options,'region',1:length(self.region));
+			cm=getfieldvalue(options,'climatemodel',1:length(self.climatemodel));
+			gm=getfieldvalue(options,'glaciermodel',1:length(self.glaciermodel));
+			sc=getfieldvalue(options,'scenario',1:length(self.scenario));
+			zerostonan=getfieldvalue(options,'zerostonan',0);
+			unit=getfieldvalue(options,'unit','Gt');
+			sumregion=getfieldvalue(options,'sumregion',0);
+
+			if self.version==1,
+				error(sprintf('getmass not supported yet for Glacier MIP version %i',self.version));
+			end
+
+			%serialize: 
+			if sumregion,
+				for i=rg,
+					masses_regioni=[];
+					for j=cm,
+						for k=gm,
+							for l=sc,
+								masses_regioni=[masses_regioni; squeeze(self.mass(i,:,j,k,l))];
+							end
+						end
+					end
+					if i==1, 
+						masses=masses_regioni;
+					else
+						masses=masses+masses_regioni;
+					end
+				end
+			else
+				masses=[];
+				for i=rg,
+					for j=cm,
+						for k=gm,
+							for l=sc,
+								masses=[masses; squeeze(self.mass(i,:,j,k,l))];
+							end
+						end
+					end
+				end
+			end
+			if zerostonan,
+				masses(find(masses==0))=NaN;
+			end
+			if strcmpi(unit,'mmSLE'),
+				masses=masses/sletogt();
+			end
+
+
+		end % }}}
+		function massrates=getmassrates(self,varargin) % {{{
+		
+			options=pairoptions(varargin{:});
+
+			unit=getfieldvalue(options,'unit','Gt/yr');
+
+			%get mass first: 
+			masses=self.getmass(varargin{:});
+
+			%compute mass rates: 
+			dt=diff(self.time);
+			dm=diff(masses,1,2);
+
+			massrates=dm;
+			for i=1:size(massrates,1),
+				massrates(i,:)= massrates(i,:)./dt';
+			end
+
+			if strcmpi(unit,'mmSLE/yr'),
+				massrates=massrates/sletogt();
+			end
+
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Glacier MIP (version %i):',self.version)); 
+
+			if self.version==1,
+				fielddisplay(self,'ncfile','netcdf file for GlacierMIP results');
+				fielddisplay(self,'time','time scale in yr');
+				fielddisplay(self,'region','region');
+				fielddisplay(self,'run','run');
+				fielddisplay(self,'glaciermodel','glacier model');
+				fielddisplay(self,'forcingmodel','forcing model');
+				fielddisplay(self,'scenario','scenario');
+				fielddisplay(self,'realization','realization');
+				fielddisplay(self,'area','area');
+				fielddisplay(self,'volume','volume');
+			end 
+			if self.version==2,
+				fielddisplay(self,'ncfile','netcdf file for GlacierMIP results');
+				fielddisplay(self,'time','time');
+				fielddisplay(self,'region','region');
+				fielddisplay(self,'glaciermodel','glaciermodel');
+				fielddisplay(self,'climatemodel','climatemodel');
+				fielddisplay(self,'scenario','scenario');
+				fielddisplay(self,'area','area');
+				fielddisplay(self,'mass','mass');
+			end
+		end % }}}
+		function part=partition(self,md,rgi2mesh,part,value) % {{{
+
+			for i=1:size(rgi2mesh,2),
+				dh=rgi2mesh(:,i);
+				pos=find(dh);
+				part(pos)=value;
+			end
+
+		end  % }}}
+	end 
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/graticule.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/graticule.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/graticule.m	(revision 27955)
@@ -0,0 +1,18 @@
+function grat=graticule(latdeg,longdeg,refdeg); 
+
+grat.lat=[];
+grat.long=[];
+
+for i=-180:longdeg:180,
+	for j=-90:refdeg:90,
+		grat.lat=[grat.lat; j];
+		grat.long=[grat.long; i];
+	end
+end
+
+for i=-90:latdeg:90,
+	for j=-180:refdeg:180,
+		grat.lat=[grat.lat; i];
+		grat.long=[grat.long; j];
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/interpBedmachine.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/interpBedmachine.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/interpBedmachine.m	(revision 27955)
@@ -0,0 +1,44 @@
+function output = interpBedmachine(X,Y,string,continent),
+
+if strcmpi(continent,'antarctica'),
+	ncdate='2014-09-23';
+	morlighemnc=['/Users/larour/ModelData2/MMAntarctica2013/AntarcticaMCdataset-' ncdate '.nc'];
+else
+	%ncdate='2015-10-05';
+	ncdate='2017-04-04';
+	morlighemnc=['/Users/larour/ModelData2/MMGreenland2013/MCdataset-' ncdate '.nc'];
+end
+
+disp(['   -- BedMachine version: ' ncdate]);
+xdata = double(ncread(morlighemnc,'x'));
+ydata = double(ncread(morlighemnc,'y'));
+
+offset=2;
+
+xmin=min(X(:)); xmax=max(X(:));
+posx=find(xdata<=xmax);
+id1x=max(1,find(xdata>=xmin,1)-offset);
+id2x=min(numel(xdata),posx(end)+offset);
+
+ymin=min(Y(:)); ymax=max(Y(:));
+posy=find(ydata>=ymin);
+id1y=max(1,find(ydata<=ymax,1)-offset);
+id2y=min(numel(ydata),posy(end)+offset);
+
+disp(sprintf('   -- BedMachine %s : loading %s',continent,string));
+data  = double(ncread(morlighemnc,string,[id1x id1y],[id2x-id1x+1 id2y-id1y+1],[1 1]))';
+xdata=xdata(id1x:id2x);
+ydata=ydata(id1y:id2y);
+data(find(data==-999999))=NaN;
+
+disp(sprintf('   -- BedMachine %s : interpolating %s',continent,string));
+if strcmp(string,'mask') | strcmp(string,'source'),
+	%Need nearest neighbor to avoid interpolation between 0 and 2
+	if strcmpi(continent,'greenland'), ydata=flipud(ydata); data=flipud(data); end
+	output = InterpFromGridToMesh(xdata,ydata,data,double(X),double(Y),0);
+else
+	ydata=flipud(ydata); data=flipud(data); 
+	output = InterpFromGridToMesh(xdata,ydata,data,double(X),double(Y),0);
+end
+
+output(find(output==-999999))=NaN;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/isintriangle.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/isintriangle.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/isintriangle.m	(revision 27955)
@@ -0,0 +1,29 @@
+function isin=isintriangle(x0,x1,x2,x3,y0,y1,y2,y3)
+
+	isin=1; %default choice;
+
+	dx = x0 - x3; dy = y0 - y3;
+	y23 = y2 - y3; x32 = x3 - x2; y31 = y3 - y1; x13 = x1 - x3; det = y23 * x13 - x32 * y31;
+	det = y23 * x13 - x32 * y31;
+	minD = min(det, 0); maxD = max(det, 0);
+
+
+	a = y23 * dx + x32 * dy;
+	if (a < minD || a > maxD)
+		isin=0; 
+		return;
+	end
+					
+	b = y31 * dx + x13 * dy;
+	if (b < minD || b > maxD)
+		isin=0;
+		return;
+	end
+						
+	c = det - a - b;
+	if (c < minD || c > maxD)
+		isin=0;
+		return;
+	end
+	return;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/isintrianglearray.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/isintrianglearray.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/isintrianglearray.m	(revision 27955)
@@ -0,0 +1,24 @@
+function isin=isintrianglearray(x0,x1,x2,x3,y0,y1,y2,y3)
+
+	isin=ones(length(x1),1);
+
+	dx = x0 - x3; dy = y0 - y3;
+	y23 = y2 - y3; x32 = x3 - x2; y31 = y3 - y1; x13 = x1 - x3; 
+	det = y23 .* x13 - x32 .* y31;
+	minD = min(det, 0); maxD = max(det, 0);
+
+
+	a = y23 .* dx + x32 .* dy;
+
+	pos=find( a < minD | a > maxD);
+	isin(pos)=0;
+					
+	b = y31 .* dx + x13 .* dy;
+	pos=find(b < minD | b > maxD);
+	isin(pos)=0;
+						
+	c = det - a - b;
+	pos=find(c < minD | c > maxD);
+	isin(pos)=0;
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/isintrianglearraytotal.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/isintrianglearraytotal.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/isintrianglearraytotal.m	(revision 27955)
@@ -0,0 +1,28 @@
+function isin=isintrianglearraytotal(x0,x1,x2,x3,y0,y1,y2,y3)
+
+	isin=ones(length(x1),length(x0));
+
+	x0=repmat(x0',length(x1),1);
+	y0=repmat(y0',length(x1),1);
+
+	dx = x0 - x3; 
+	dy = y0 - y3;
+
+	y23 = y2 - y3; x32 = x3 - x2; y31 = y3 - y1; x13 = x1 - x3; 
+	det = y23 .* x13 - x32 .* y31;
+	minD = min(det, 0); maxD = max(det, 0);
+
+	a = y23 .* dx + x32 .* dy;
+
+	pos=find( a < minD | a > maxD);
+	isin(pos)=0;
+					
+	b = y31 .* dx + x13 .* dy;
+	pos=find(b < minD | b > maxD);
+	isin(pos)=0;
+						
+	c = det - a - b;
+	pos=find(c < minD | c > maxD);
+	isin(pos)=0;
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/ismip6.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/ismip6.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/ismip6.m	(revision 27955)
@@ -0,0 +1,274 @@
+%ISMIP6 class definition
+%
+%   Usage:
+%      is6 = ismip6('root',rootdir,'dirs',listdirectories);
+%   Example: 
+%      is6 = ismip6('root','./gis/','dirs',{'UVW','ISSM'});
+
+classdef ismip6 < handle
+	properties (SetAccess=public) %Model fields
+		
+		root = ''; %where are the files for CMIP5
+		n   = 0;   %number of files
+		directories    = {};   %directories where the files are
+		experiments    = {};   %names of experiments
+		base           = {};   %placeholder for base
+		surface        = {};   %placeholder for surface
+		thickness      = {};   %placeholder for thicknesses
+		deltathickness = {};   %placeholder for delta thicknesses
+		deltathicknessvaf = {};   %placeholder for delta thicknesses above floatation
+		deltathicknesshal = {};   %placeholder for delta thicknesses halosteric origins
+		deltathicknessbar = {};   %placeholder for delta thicknesses halosteric origins
+		thicknesscorrection={};  
+		icemask        = {};   %placeholder for ice masks
+		oceanmask      = {};   %placeholder for ocean masks
+		time           = {};   %placeholder for times
+		timestart      = {};   %placeholder for times
+		calendar      = {};   %placeholder for times
+		di            = {}; %ice densities
+	end
+	methods
+		function self = ismip6(varargin) % {{{
+
+			if nargin==0, 
+				self=setdefaultparameters(self);
+			else 
+				self=setdefaultparameters(self);
+
+				options=pairoptions(varargin{:});
+
+				self.root=getfieldvalue(options,'root');
+				self.directories=getfieldvalue(options,'directories');
+				self.n=length(self.directories);
+
+				%verify the directories exist: 
+				for i=1:self.n,
+					if ~exist([self.root '/' self.directories{i}],'dir'),
+						error(['ismip6  constructor error: ' self.root '/' self.directories{i} ' does not exist']);
+					end
+				end
+
+				%figure out names of experiments: 
+				self.experiments=self.directories;
+				for i=1:self.n,
+					dir=self.directories{i};
+					ind=findstr(dir,'exp');
+					name=dir(1:ind-2);
+					name=strrep(name,'/','-');
+					self.experiments{i}=name;
+				end
+
+				%initialize fields: 
+				self.thickness=cell(self.n,1);
+				self.deltathickness=cell(self.n,1);
+				self.icemask=cell(self.n,1);
+				self.oceanmask=cell(self.n,1);
+
+			end
+		end
+		%}}}
+		function self = setdefaultparameters(self) % {{{
+		end
+		%}}}
+		function disp(self) % {{{
+			disp('   CMIP5 Ocean MIP:');
+
+			fielddisplay(self,'n','number of files');
+			fielddisplay(self,'root','where are the files for ISMIP6');
+			fielddisplay(self,'directories','directories');
+			fielddisplay(self,'experiments','experiments');
+			fielddisplay(self,'thickness','thickness');
+			fielddisplay(self,'deltathickness','deltathickness');
+			fielddisplay(self,'icemask','icemask');
+			fielddisplay(self,'oceanmask','oceanmask');
+			fielddisplay(self,'time','time');
+			fielddisplay(self,'timestart','timestart');
+			fielddisplay(self,'calendar','calendar');
+		end % }}}
+		function listexp(self) % {{{
+			disp('ISMIP6  list of experiments:');
+			for i=1:self.n,
+				disp(['   ' self.experiments{i}]);
+			end
+
+		end % }}}
+		function [output,time,timestart,calendar]=read(self,experiment,field) % {{{
+
+			%go through list of experiments and find the right one: 
+			if strcmpi(class(experiment),'double'),
+				ind=experiment;
+			elseif strcmpi(class(experiment),'char'),
+				for i=1:self.n,
+					if strcmpi(experiment,self.experiments{i}),
+						ind=i;
+						break;
+					end
+				end
+			else 
+				error(['ismip6 read error message: experiment should be a string or index']);
+			end
+
+			if ind==0 
+				error(['ismip6 read error message: experiment ' experiment ' could not be found!']);
+			end;
+
+			%figure out the files in this directory: 
+			dir=self.directories{ind};
+			currentdir=pwd;
+			cd([self.root '/' dir]); 
+			list=listfiles;
+			cd(currentdir);
+
+			%go through list of files and figure out which one starts with the field: 
+			for i=1:length(list),
+				file=list{i};
+				ind=findstr(file,'_');
+				file_field=file(1:ind-1);
+				if strcmpi(file_field,field),
+					break;
+				end
+			end
+
+			%read file: 
+			%output=ncread([self.root '/' dir '/' file],'file_field');
+			time=ncread([self.root '/' dir '/' file],'time');
+			output=ncread([self.root '/' dir '/' file ],field);
+
+			%figure out start time: 
+			info=ncinfo([self.root '/' dir '/' file]);
+			attributes=[];
+			for i=1:length(info.Variables),
+				if strcmpi(info.Variables(i).Name,'time'),
+					attributes=info.Variables(i).Attributes;
+					break;
+				end
+			end
+			for j=1:length(attributes),
+				if strcmpi(attributes(j).Name,'units') | strcmpi(attributes(j).Name,'unit'),
+					timestart=attributes(j).Value;
+				end
+				if strcmpi(attributes(j).Name,'calendar')
+					calendar=attributes(j).Value;
+				end
+			end
+
+			if ~exist('timestart','var'), timestart=2015; end
+			if ~exist('calendar','var'), calendar=0; end
+
+		end % }}}
+		function info=readinfo(self,experiment,field) % {{{
+
+			%go through list of experiments and find the right one: 
+			if strcmpi(class(experiment),'double'),
+				ind=experiment;
+			elseif strcmpi(class(experiment),'char'),
+				for i=1:self.n,
+					if strcmpi(experiment,self.experiments{i}),
+						ind=i;
+						break;
+					end
+				end
+			else 
+				error(['ismip6 read error message: experiment should be a string or index']);
+			end
+
+			if ind==0 
+				error(['ismip6 read error message: experiment ' experiment ' could not be found!']);
+			end;
+
+			%figure out the files in this directory: 
+			dir=self.directories{ind};
+			currentdir=pwd;
+			cd([self.root '/' dir]); 
+			list=listfiles;
+			cd(currentdir);
+
+			%go through list of files and figure out which one starts with the field: 
+			for i=1:length(list),
+				file=list{i};
+				ind=findstr(file,'_');
+				file_field=file(1:ind-1);
+				if strcmpi(file_field,field),
+					break;
+				end
+			end
+
+			%read attributes
+			info=ncinfo([self.root '/' dir '/' file]);
+
+		end % }}}
+		function interpolate(self,md,field,ismip2mesh,ismip2mesh_correction) % {{{
+
+			for i=1:self.n,
+				disp(['reading and interpolating field ' field ' for model ' self.experiments{i}]);
+
+				%read field from disk: 
+				[h,t,t0,cal]=self.read(i,field); nt=length(t);
+
+				%map onto 1 dimension field: 
+				ht=zeros(size(h,1)*size(h,2),nt);
+				for j=1:size(h,3),
+					hj= h(:,:,j)'; hj=hj(:); ht(:,j)=double(hj);
+				end
+
+				%map onto mesh: correct only for thicknesses
+				if strcmpi(field,'lithk') | strcmpi(field,'orog') | strcmpi(field,'base'),
+					hg=ismip2mesh_correction.*(ismip2mesh*ht) ;
+					%hg=ismip2mesh*ht ;
+				else
+					hg=ismip2mesh*ht ;
+				end
+
+				%keep field:
+				if strcmpi(field,'lithk'),
+					pos=find(isnan(hg)); hg(pos)=0;
+					self.thickness{i}=hg; 
+				end
+				if strcmpi(field,'orog'),
+					pos=find(isnan(hg)); hg(pos)=0;
+					self.surface{i}=hg; 
+				end
+				if strcmpi(field,'base'),
+					pos=find(isnan(hg)); hg(pos)=0;
+					self.base{i}=hg; 
+				end
+				if strcmpi(field,'sftgif'),
+					hge=ones(md.mesh.numberofvertices,size(hg,2));
+					for j=1:size(hg,2),
+						hgj=hg(:,j);
+						pos=find(hgj>0); 
+						hge(md.mesh.elements(pos,:),j)=-1;
+					end
+					self.icemask{i}=hge; 
+				end
+				if strcmpi(field,'sftgrf'),
+					hgv=-ones(md.mesh.numberofvertices,size(hg,2));
+					for j=1:size(hg,2),
+						hgj=hg(:,j);
+						pos=find(hgj>.99); %we want fully grounded
+						%pos=find(hgj>0); %we want slightly grounded
+						hgv(md.mesh.elements(pos,:),j)=1;
+					end
+					self.oceanmask{i}=hgv; 
+				end
+
+				self.time{i}=t;
+				self.timestart{i}=t0;
+				self.calendar{i}=cal;
+
+			end
+		end  % }}}
+		function part=partition(self,md,part,value) % {{{
+
+			for i=1:self.n,
+				dh=self.deltathickness{i}; 
+				for j=1:size(dh,2),
+					dhj=dh(:,j);
+					pos=find(dhj);
+					part(pos)=value;
+				end
+			end
+
+		end  % }}}
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/legendd.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/legendd.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/legendd.m	(revision 27955)
@@ -0,0 +1,27 @@
+function legendd(varargin)
+
+	options=pairoptions(varargin{:});
+
+	%retrieve arguments: 
+	x=getfieldvalue(options,'x',0); 
+	y=getfieldvalue(options,'y',0);
+	w=getfieldvalue(options,'w',1);
+	h=getfieldvalue(options,'h',1);
+	facecolor=getfieldvalue(options,'FaceColor','w');
+	edgecolor=getfieldvalue(options,'EdgeColor','k');
+	strings=getfieldvalue(options,'strings',{});
+	colors=getfieldvalue(options,'colors',{});
+	fontsize=getfieldvalue(options,'FontSize',12);
+	linewidth=getfieldvalue(options,'LineWidth',2);
+
+	hold on;
+	rectangle('Position',[x,y,w,h],'FaceColor',facecolor,'EdgeColor',edgecolor);
+	
+	nl=length(strings);
+	for i=1:nl,
+		l=line([x+w/6 x+w/3],[y+(nl+1-i)*h/(nl+1) y+(nl+1-i)*h/(nl+1)]);
+		set(l,'Color',colors{i});
+		set(l,'LineWidth',linewidth);
+		text(x+1.3*w/3,y+(nl+1-i)*h/(nl+1),strings{i},'FontSize',fontsize);
+	end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/mdanalysis.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/mdanalysis.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/mdanalysis.m	(revision 27955)
@@ -0,0 +1,1683 @@
+function varargout = mdanalysis(varargin)
+% MDANALYSIS MATLAB code for mdanalysis.fig {{{
+%      MDANALYSIS, by itself, creates a new MDANALYSIS or raises the existing
+%      singleton*.
+%
+%      H = MDANALYSIS returns the handle to a new MDANALYSIS or the handle to
+%      the existing singleton*.
+%
+%      MDANALYSIS('CALLBACK',hObject,eventData,handles,...) calls the local
+%      function named CALLBACK in MDANALYSIS.M with the given input arguments.
+%
+%      MDANALYSIS('Property','Value',...) creates a new MDANALYSIS or raises the
+%      existing singleton*.  Starting from the left, property value pairs are
+%      applied to the GUI before mdanalysis_OpeningFcn gets called.  An
+%      unrecognized property name or invalid value makes property application
+%      stop.  All inputs are passed to mdanalysis_OpeningFcn via varargin.
+%
+%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
+%      instance to run (singleton)".
+%
+% See also: GUIDE, GUIDATA, GUIHANDLES
+%variables: }}}
+%global variables:  %{{{
+global md  modelname
+if strcmpi(class(varargin{1}),'model') | strcmpi(class(varargin{1}),'sealevelmodel'), 
+	md=varargin{1};
+	modelname=inputname(1);
+end
+
+global logvalue
+global solutiontype
+global comparison 
+global reload
+global earth
+global whores
+%}}}
+%Initialization code{{{
+% Begin initialization code - DO NOT EDIT
+gui_Singleton = 1;
+gui_State = struct('gui_Name',       mfilename, ...
+                   'gui_Singleton',  gui_Singleton, ...
+                   'gui_OpeningFcn', @mdanalysis_OpeningFcn, ...
+                   'gui_OutputFcn',  @mdanalysis_OutputFcn, ...
+                   'gui_LayoutFcn',  [] , ...
+                   'gui_Callback',   []);
+if nargin && ischar(varargin{1})
+    gui_State.gui_Callback = str2func(varargin{1});
+end
+
+if nargout
+    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
+else
+    gui_mainfcn(gui_State, varargin{:});
+end
+% End initialization code - DO NOT EDIT
+
+
+% --- Executes just before mdanalysis is made visible.
+function mdanalysis_OpeningFcn(hObject, eventdata, handles, varargin)
+global md comparison logvalue solutiontype
+% This function has no output args, see OutputFcn.
+% hObject    handle to figure
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+% varargin   command line arguments to mdanalysis (see VARARGIN)
+
+% Choose default command line output for mdanalysis
+handles.output = hObject;
+
+% Update handles structure
+guidata(hObject, handles);
+
+% This sets up the initial plot - only do when we are invisible
+% so window can get raised using mdanalysis.
+if strcmp(get(hObject,'Visible'),'off')
+	comparison=0;
+	logvalue=0;
+	reload=0;
+	plotm();
+end
+
+% UIWAIT makes mdanalysis wait for user response (see UIRESUME)
+% uiwait(handles.figure1);
+
+
+% --- Outputs from this function are returned to the command line.
+function varargout = mdanalysis_OutputFcn(hObject, eventdata, handles) 
+% varargout  cell array for returning output args (see VARARGOUT);
+% hObject    handle to figure
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+
+% Get default command line output from handles structure
+varargout{1} = handles.output;
+%}}}
+%Interp faceting {{{
+% --- Executes on button press in Interp.
+function Interp_Callback(hObject, eventdata, handles)
+% hObject    handle to Interp (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+plotm();
+% Hint: get(hObject,'Value') returns toggle state of Interp
+
+% --- If Enable == 'on', executes on mouse press in 5 pixel border.
+% --- Otherwise, executes on mouse press in 5 pixel border or over Interp.
+function Interp_ButtonDownFcn(hObject, eventdata, handles)
+% hObject    handle to Interp (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+% }}}
+%Faceted facting {{{
+% --- Executes on button press in Faceted.
+function Faceted_Callback(hObject, eventdata, handles)
+% hObject    handle to Faceted (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+plotm();
+% Hint: get(hObject,'Value') returns toggle state of Faceted
+
+% --- If Enable == 'on', executes on mouse press in 5 pixel border.
+% --- Otherwise, executes on mouse press in 5 pixel border or over Faceted.
+function Faceted_ButtonDownFcn(hObject, eventdata, handles)
+% hObject    handle to Faceted (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+%}}}
+%Flat faceting {{{
+% --- Executes on button press in Flat.
+function Flat_Callback(hObject, eventdata, handles)
+% hObject    handle to Flat (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+plotm();
+% Hint: get(hObject,'Value') returns toggle state of Flat
+
+% --- If Enable == 'on', executes on mouse press in 5 pixel border.
+% --- Otherwise, executes on mouse press in 5 pixel border or over Flat.
+function Flat_ButtonDownFcn(hObject, eventdata, handles)
+% hObject    handle to Flat (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+%}}}
+%Step {{{
+% --- Executes on selection change in Step.
+function Step_Callback(hObject, eventdata, handles)
+global grounded ice  logvalue
+% hObject    handle to Step (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+plotm();
+
+% Hints: contents = cellstr(get(hObject,'String')) returns Step contents as cell array
+%        contents{get(hObject,'Value')} returns selected item from Step
+
+% --- Executes during object creation, after setting all properties.
+function Step_CreateFcn(hObject, eventdata, handles)
+global md grounded ice  logvalue 
+% hObject    handle to Step (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+if issealevel(), if isearth, results=md.earth.results; else results=md.icecaps{1}.results; end; else results=md.results; end;
+if isfield(results,'TransientSolution'),
+	strings=cell(length(results.TransientSolution),1);
+	for i=1:length(results.TransientSolution),
+		strings{i}=sprintf('%4.2f     (%i)',results.TransientSolution(i).time,i);
+	end
+	if length(strings)>40,
+		%too many strings, reduce!
+		lt=length(strings);
+		modlt=floor(lt/40);
+		strings=strings(1:modlt:end);
+	end
+	set(hObject,'String',strings);
+	set(hObject,'Value',1);
+else
+	set(hObject,'String',{});
+	set(hObject,'Value',1);
+end
+% Hint: popupmenu controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+%}}}
+%Log {{{
+% --- Executes on button press in Log.
+function Log_Callback(hObject, eventdata, handles)
+global grounded ice  logvalue
+% hObject    handle to Log (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+plotm();
+% Hint: get(hObject,'Value') returns toggle state of Log
+
+% --- Executes on button press in Lock.
+function Lock_Callback(hObject, eventdata, handles)
+% hObject    handle to Lock (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+plotm();
+% Hint: get(hObject,'Value') returns toggle state of Lock
+% }}}
+%Collock: not sure whether that one is working anymore: {{{
+% --- Executes on button press in Collock.
+function Collock_Callback(hObject, eventdata, handles)
+% hObject    handle to Collock (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+plotm();
+% Hint: get(hObject,'Value') returns toggle state of Collock
+% }}}
+%Field {{{
+% --- Executes on selection change in Field.
+function Field_Callback(hObject, eventdata, handles)
+global md  
+% hObject    handle to Field (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+
+strings=get(hObject,'String'); value=get(hObject,'Value');
+string=strings(value); 
+
+if strcmpi(string,'IceVolume') | strcmpi(string,'IceVolumeAboveFloatation'),
+	plotv();
+elseif strcmpi(string,'SealevelRSLEustatic'),
+	%display directly: 
+	displayscalar();
+else
+	plotm();
+end
+
+
+
+% Hints: contents = cellstr(get(hObject,'String')) returns Field contents as cell array
+%        contents{get(hObject,'Value')} returns selected item from Field
+
+% --- Executes during object creation, after setting all properties.
+function Field_CreateFcn(hObject, eventdata, handles)
+global md  
+% hObject    handle to Field (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+if issealevel(), if isearth, results=md.earth.results; else results=md.icecaps{1}.results; end; else results=md.results; end;
+if isfield(results,'TransientSolution'),
+	fields=listfields(results,'TransientSolution');
+	set(hObject,'String',fields);
+	for i=1:length(fields), 
+		if ~issealevel & strcmpi(fields{i},'Vel'),
+			set(hObject,'Value',i);
+			break;
+		end
+		if issealevel & isearth & strcmpi(fields{i},'Sealevel'),
+			set(hObject,'Value',i);
+			break;
+		end
+	end
+else
+	set(hObject,'String',{});
+	set(hObject,'Value',0);
+end
+
+% Hint: popupmenu controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+%}}}
+%Model Loading {{{
+% --- Executes on selection change in ModelChoice.
+function ModelChoice_Callback(hObject, eventdata, handles)
+	% hObject    handle to ModelChoice (see GCBO)
+	% eventdata  reserved - to be defined in a future version of MATLAB
+	% handles    structure with handles and user data (see GUIDATA)
+
+	% Hints: contents = cellstr(get(hObject,'String')) returns ModelChoice contents as cell array
+	%        contents{get(hObject,'Value')} returns selected item from ModelChoice
+	global modelname  md whores
+
+	%figure out which model is being loaded: 
+	strings=cellstr(get(hObject,'String'));
+	counter=get(hObject,'Value');
+	string=strings{counter};
+	counter=findstr(string,'(');
+	newmodelname=string(1:counter-2); 
+
+	%load model from base workspace:
+	md= evalin('base', newmodelname);
+
+	%replot: 
+	h = findobj('Tag','Field');
+	Field_Callback(h,eventdata,handles);
+
+
+	%eval([newmodelname '=md;']);
+	%close gcbf;
+	%eval(['mdanalysis(' newmodelname ');']); 
+
+% --- Executes during object creation, after setting all properties.
+function ModelChoice_CreateFcn(hObject, eventdata, handles)
+% hObject    handle to ModelChoice (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+global modelname
+
+
+%figure out how many models are in the workspace!
+whores=evalin('base','whos');
+flags=zeros(length(whores),1);
+for i=1:length(whores),
+	if strcmpi(whores(i).class,'model') | strcmpi(whores(i).class,'sealevelmodel'),
+		flags(i)=1;
+	end
+end
+pos=find(flags);
+whores=whores(pos);
+
+strings={};
+for i=1:length(whores),
+	strings{end+1}=[whores(i).name ' (' whores(i).class ')'];
+end
+
+%match with varargin{1}'s name: 
+counter=-1;
+for i=1:length(strings),
+	if strcmpi(modelname,whores(i).name),
+		counter=i;
+		break;
+	end
+end
+if counter==-1, 
+	error('could not find input model name matching base workspace names!');
+end
+
+set(hObject,'String',strings);
+set(hObject,'Value',counter);
+
+
+% Hint: popupmenu controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end 
+
+%}}}
+%Cmin {{{
+function Cmin_Callback(hObject, eventdata, handles)
+% hObject    handle to Cmin (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+plotm();
+% Hints: get(hObject,'String') returns contents of Cmin as text
+%        str2double(get(hObject,'String')) returns contents of Cmin as a double
+
+
+% --- Executes during object creation, after setting all properties.
+function Cmin_CreateFcn(hObject, eventdata, handles)
+% hObject    handle to Cmin (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+set(hObject,'String',num2str(NaN));
+% Hint: edit controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+%}}}
+%Cmax {{{
+function Cmax_Callback(hObject, eventdata, handles)
+% hObject    handle to Cmax (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+
+% Hints: get(hObject,'String') returns contents of Cmax as text
+%        str2double(get(hObject,'String')) returns contents of Cmax as a double
+plotm();
+
+% --- Executes during object creation, after setting all properties.
+function Cmax_CreateFcn(hObject, eventdata, handles)
+% hObject    handle to Cmax (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+set(hObject,'String',num2str(NaN));
+% Hint: edit controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+%}}}
+%Xmin {{{
+function xmin_Callback(hObject, eventdata, handles)
+% hObject    handle to xmin (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+
+% Hints: get(hObject,'String') returns contents of xmin as text
+%        str2double(get(hObject,'String')) returns contents of xmin as a double
+
+% --- Executes during object creation, after setting all properties.
+function xmin_CreateFcn(hObject, eventdata, handles)
+% hObject    handle to xmin (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+
+% Hint: edit controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+%}}}
+%Xmax {{{
+function xmax_Callback(hObject, eventdata, handles)
+% hObject    handle to xmax (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+% Hints: get(hObject,'String') returns contents of xmax as text
+%        str2double(get(hObject,'String')) returns contents of xmax as a double
+
+% --- Executes during object creation, after setting all properties.
+function xmax_CreateFcn(hObject, eventdata, handles)
+% hObject    handle to xmax (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+
+% Hint: edit controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+% }}}
+%Ymin {{{
+function ymin_Callback(hObject, eventdata, handles)
+% hObject    handle to ymin (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+% Hints: get(hObject,'String') returns contents of ymin as text
+%        str2double(get(hObject,'String')) returns contents of ymin as a double
+
+
+% --- Executes during object creation, after setting all properties.
+function ymin_CreateFcn(hObject, eventdata, handles)
+% hObject    handle to ymin (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+
+% Hint: edit controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+%}}}
+%Ymax {{{
+function ymax_Callback(hObject, eventdata, handles)
+% hObject    handle to ymax (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+% Hints: get(hObject,'String') returns contents of ymax as text
+%        str2double(get(hObject,'String')) returns contents of ymax as a double
+
+
+% --- Executes during object creation, after setting all properties.
+function ymax_CreateFcn(hObject, eventdata, handles)
+% hObject    handle to ymax (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+
+% Hint: edit controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+%}}}
+%Time lable {{{
+function Time_Callback(hObject, eventdata, handles)
+% hObject    handle to Time (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+
+% Hints: get(hObject,'String') returns contents of Time as text
+%        str2double(get(hObject,'String')) returns contents of Time as a double
+
+
+% --- Executes during object creation, after setting all properties.
+function Time_CreateFcn(hObject, eventdata, handles)
+global md 
+% hObject    handle to Time (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+if issealevel, if isearth, results=md.earth.results; else results=md.icecaps{1}.results; end; else results=md.results; end;
+if isfield(results,'TransientSolution'),
+	set(hObject,'String',sprintf('%4.2f',results.TransientSolution(1).time));
+else
+	set(hObject,'String',sprintf('%4.2f',0));
+end
+% Hint: edit controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+
+% --- If Enable == 'on', executes on mouse press in 5 pixel border.
+% --- Otherwise, executes on mouse press in 5 pixel border or over Time.
+function Time_ButtonDownFcn(hObject, eventdata, handles)
+% hObject    handle to Time (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+% }}}
+%Mask: {{{
+% --- Executes on selection change in Masque.
+function Masque_Callback(hObject, eventdata, handles)
+% hObject    handle to Masque (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+plotm();
+% Hints: contents = cellstr(get(hObject,'String')) returns Masque contents as cell array
+%        contents{get(hObject,'Value')} returns selected item from Masque
+
+% --- Executes during object creation, after setting all properties.
+function Masque_CreateFcn(hObject, eventdata, handles)
+global md 
+% hObject    handle to Masque (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+if issealevel, 
+	if isearth, 
+		mv=md.earth.mask; 
+	else 
+		mv=md.icecaps{1}.mask; 
+	end 
+else 
+	mv=md.mask; 
+end
+strings=fieldnames(mv);
+strings={'all',strings{:}};
+set(hObject,'String',strings);
+% Hint: popupmenu controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end 
+%}}}
+%DiffStep {{{
+% --- Executes on selection change in DiffStep.
+function DiffStep_Callback(hObject, eventdata, handles)
+% hObject    handle to DiffStep (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+plotm();
+
+% Hints: contents = cellstr(get(hObject,'String')) returns DiffStep contents as cell array
+%        contents{get(hObject,'Value')} returns selected item from DiffStep
+
+% --- Executes during object creation, after setting all properties.
+function DiffStep_CreateFcn(hObject, eventdata, handles)
+global md ;
+% hObject    handle to DiffStep (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+if issealevel, if isearth, results=md.earth.results; else results=md.icecaps{1}.results; end; else results=md.results; end;
+if isfield(results,'TransientSolution'),
+	strings=cell(length(results.TransientSolution),1);
+	for i=1:length(results.TransientSolution),
+		strings{i}=sprintf('%4.2f     (%i)',results.TransientSolution(i).time,i);
+	end
+	if length(strings)>20,
+		%too many strings, reduce!
+		lt=length(strings);
+		modlt=floor(lt/20);
+		strings=strings(1:modlt:end);
+	end
+	set(hObject,'String',strings);
+else
+	set(hObject,'String',{});
+end
+
+% Hint: popupmenu controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+% --- If Enable == 'on', executes on mouse press in 5 pixel border.
+% --- Otherwise, executes on mouse press in 5 pixel border or over DiffStep.
+function DiffStep_ButtonDownFcn(hObject, eventdata, handles)
+% hObject    handle to DiffStep (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+% }}}
+%Diff button {{{
+% --- Executes on button press in Diff.
+function Diff_Callback(hObject, eventdata, handles)
+% hObject    handle to Diff (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+plotm();
+% Hint: get(hObject,'Value') returns toggle state of Diff
+
+% --- Executes during object creation, after setting all properties.
+function Diff_CreateFcn(hObject, eventdata, handles)
+% hObject    handle to Diff (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+%}}}
+%Model Fields:  {{{
+% --- Executes on selection change in ModelFields.
+function ModelFields_Callback(hObject, eventdata, handles)
+% hObject    handle to ModelFields (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+plotm();
+% Hints: contents = cellstr(get(hObject,'String')) returns ModelFields contents as cell array
+%        contents{get(hObject,'Value')} returns selected item from ModelFields
+
+% --- Executes during object creation, after setting all properties.
+function ModelFields_CreateFcn(hObject, eventdata, handles)
+global md 
+% hObject    handle to ModelFields (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+
+
+% fields {{{ 
+fields={'geometry.thickness',...
+		 'geometry.surface',...
+		 'geometry.base',...
+		 'geometry.bed',...
+		 'inversion.vx_obs',...
+		 'inversion.vy_obs',...
+		 'inversion.vel_obs',...
+		 'friction.coefficient',...
+		 'materials.rheology_B',...
+		 'mask.ice_levelset',...
+		 'mask.groundedice_levelset',...
+		 'slr.deltathickness'...
+		 };
+
+ if issealevel(),
+	 if isearth,
+		 mask=md.earth.mask;
+	 else
+		 mask=md.icecaps{1}.mask;
+	 end
+ else
+	 mask=md.mask;
+ end
+
+ if  strcmpi(class(mask),'maskpsl'),
+	 fields{end+1}='mask.ocean_levelset';
+	 fields{end+1}='mask.land_levelset';
+ end
+
+
+% }}}
+set(hObject,'String',fields);
+% Hint: popupmenu controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+% }}}
+%Mf button: {{{
+% --- Executes on button press in Mf.
+function Mf_CreateFcn(varargin)
+function Mf_Callback(hObject, eventdata, handles)
+% hObject    handle to Mf (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+plotm();
+% Hint: get(hObject,'Value') returns toggle state of Mf
+%}}}
+%Solution menu {{{
+% --- Executes on selection change in popupmenu10.
+function popupmenu10_Callback(hObject, eventdata, handles)
+global solutiontype
+% hObject    handle to popupmenu10 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+
+%figure out what results we are plotting here: 
+value=get(hObject,'Value');
+strings=get(hObject,'String');
+solutiontype=strings(value);
+
+plotm();
+% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu10 contents as cell array
+%        contents{get(hObject,'Value')} returns selected item from popupmenu10
+
+% --- Executes during object creation, after setting all properties.
+function popupmenu10_CreateFcn(hObject, eventdata, handles)
+global md solutiontype 
+% hObject    handle to popupmenu10 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+if issealevel,
+	if isearth,
+		resultfields=fieldnames(md.earth.results);
+	else
+		resultfields=fieldnames(md.icecaps{1}.results);
+	end
+else
+	resultfields=fieldnames(md.results);
+end
+if isempty(resultfields),
+	resultfields={'None'};
+end
+
+%default solution: 
+for i=1:length(resultfields),
+	solutiontype=resultfields{i};
+	if strcmpi(solutiontype,'StressbalanceSolution'),
+		i0=i;
+		break;
+	elseif strcmpi(solutiontype,'StressbalanceSolution'),
+		i0=i;
+		break;
+	else
+		i0=1;
+	end
+end
+set(hObject,'String',resultfields);
+set(hObject,'Value',i0);
+
+% Hint: popupmenu controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end 
+% }}}
+%Icecaps menu: {{{
+% --- Executes on selection change in popupmenu11.
+function popupmenu11_Callback(hObject, eventdata, handles)
+global md
+% hObject    handle to popupmenu11 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+strings=get(hObject,'String');
+value=get(hObject,'Value');
+continent=strings{value};
+
+%update basin list: 
+basins=md.basinsfromcontinent(continent);
+strings={'All',basins{:}};
+obj=findobj('Tag', 'popupmenu12');
+set(obj,'String',strings');
+set(obj,'Value',1);
+
+plotm();
+% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu11 contents as cell array
+%        contents{get(hObject,'Value')} returns selected item from popupmenu11
+
+
+% --- Executes during object creation, after setting all properties.
+function popupmenu11_CreateFcn(hObject, eventdata, handles)
+% hObject    handle to popupmenu11 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+global md range;
+
+if issealevel(),
+	strings=md.continents();
+	set(hObject,'String',strings);
+	set(hObject,'Value',1);
+else
+	set(hObject,'String',{});
+	set(hObject,'Value',1);
+end
+
+
+% Hint: popupmenu controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end 
+% }}}
+%Basins menu{{{
+% --- Executes on selection change in popupmenu12.
+function popupmenu12_Callback(hObject, eventdata, handles)
+global md 
+% hObject    handle to popupmenu12 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+
+plotm();
+% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu12 contents as cell array
+%        contents{get(hObject,'Value')} returns selected item from popupmenu12
+
+% --- Executes during object creation, after setting all properties.
+function popupmenu12_CreateFcn(hObject, eventdata, handles)
+global md 
+% hObject    handle to popupmenu12 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+
+if issealevel(),
+
+	%need the continent name:  default first one.
+	continents=md.continents();
+	basins=md.basinsfromcontinent(continents{1});
+	strings={'All',basins{:}};
+	set(hObject,'String',strings);
+	set(hObject,'Value',1);
+else
+	set(hObject,'String',{});
+	set(hObject,'Value',1);
+end
+% Hint: popupmenu controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+    set(hObject,'BackgroundColor','white');
+end
+% }}}
+%Comparison: {{{
+
+% --- Executes on button press in radiobutton17.
+function radiobutton17_Callback(hObject, eventdata, handles)
+global comparison
+% hObject    handle to radiobutton17 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+comparison=get(hObject,'Value');
+plotm();
+% Hint: get(hObject,'Value') returns toggle state of radiobutton17
+% }}}
+%Earth button: {{{
+
+% --- Executes on button press in radiobutton18.
+function radiobutton18_Callback(hObject, eventdata, handles)
+% hObject    handle to radiobutton18 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+global md earth 
+earth=get(hObject,'value');
+
+%Change Field: 
+if issealevel, if isearth, results=md.earth.results; else results=md.icecaps{1}.results; end; else results=md.results; end;
+fieldHandle=findobj('Tag', 'Field');
+if isfield(results,'TransientSolution'),
+	fieldss=listfields(results,'TransientSolution');
+	set(fieldHandle,'String',fieldss);
+	set(fieldHandle,'Value',1);
+else 
+	set(fieldHandle,'String',{});
+	set(fieldHandle,'Value',1);
+end
+
+%Change Masque: 
+if issealevel, 
+	if isearth, 
+		mv=md.earth.mask; 
+	else 
+		mv=md.icecaps{1}.mask; 
+	end 
+else 
+	mv=md.mask; 
+end
+fieldHandle=findobj('Tag', 'Masque');
+strings=fieldnames(mv);
+strings={'all',strings{:}};
+set(fieldHandle,'String',strings);
+
+plotm();
+% Hint: get(hObject,'Value') returns toggle state of radiobutton18
+% --- Executes during object creation, after setting all properties.
+function radiobutton18_CreateFcn(hObject, eventdata, handles)
+% hObject    handle to radiobutton18 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+global earth 
+earth=1;
+set(hObject,'Value',earth);
+%}}}
+%Reload model:  {{{
+% --- Executes on button press in pushbutton1.
+function pushbutton1_Callback(hObject, eventdata, handles)
+% hObject    handle to pushbutton1 (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+global reload
+reload=1;
+plotm();
+%}}}
+%Scalar {{{
+function Scalar_Callback(hObject, eventdata, handles)
+% hObject    handle to Scalar (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    structure with handles and user data (see GUIDATA)
+
+% Hints: get(hObject,'String') returns contents of Scalar as text
+%        str2double(get(hObject,'String')) returns contents of Scalar as a double
+
+% --- Executes during object creation, after setting all properties.
+function Scalar_CreateFcn(hObject, eventdata, handles)
+% hObject    handle to Scalar (see GCBO)
+% eventdata  reserved - to be defined in a future version of MATLAB
+% handles    empty - handles not created until after all CreateFcns called
+
+% Hint: edit controls usually have a white background on Windows.
+%       See ISPC and COMPUTER.
+
+	scalarHandle=findobj('Tag', 'Scalar'); 
+	set(scalarHandle,'String',sprintf('%4.2f',NaN));
+
+	if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
+		set(hObject,'BackgroundColor','white');
+	end 
+% }}}
+function plotv() % {{{
+	global md   range
+
+	%field:  % {{{ 
+	fieldHandle=findobj('Tag', 'Field'); 
+	fieldstrings=get(fieldHandle,'String');
+	fieldvalue=get(fieldHandle,'Value');
+	field=fieldstrings{fieldvalue};
+	%}}}
+		%lock limits:  % {{{
+		lockHandle=findobj('Tag', 'Lock'); lockvalue=get(lockHandle,'Value');
+		if lockvalue,
+			xl=xlim; yl=ylim;
+		end
+		 %}}}
+	
+	cla, reset(gca);
+	hold on ;
+	if issealevel,
+		if isearth,
+			%do nothing. no ice volume.
+		else
+			dt=md.earth.timestepping.time_step*md.earth.settings.output_frequency;
+			for j=1:length(range),
+				i=range(j);
+				vols=resultstomatrix(md.icecaps{i},'TransientSolution',field);
+				if j==1,
+					volst=vols;
+				else
+					volst(1,:)=volst(1,:)+vols(1,:);
+				end
+			end
+			s1=subplot(2,1,1);
+			set(s1,'Position',[0.3300    0.6100    0.4750    0.3]);
+			plot(volst(2,:),(volst(1,:)-volst(1,1))*md.icecaps{1}.materials.rho_ice/1e12);
+			xlabel('time (yr)'); ylabel('Mass (Gt)'); colorbar off;
+			if lockvalue, xlim(xl), ylim(yl); end
+			
+			s2=subplot(2,1,2);
+			set(s2,'Position',[0.3300    0.1100    0.4750    0.3]);
+			dv=diff(volst(1,:))/dt;
+			plot(volst(2,1:end-1),dv*md.icecaps{1}.materials.rho_ice/1e12);
+			xlabel('time (yr)'); ylabel('Mass (Gt)'); colorbar off;
+			if lockvalue, xlim(xl), ylim(yl); end
+		end
+	else 
+		dt=md.timestepping.time_step*md.settings.output_frequency;
+		vols=resultstomatrix(md,'TransientSolution',field);
+		dv=diff(vols(1,:))/dt;
+		
+		s1=subplot(2,1,1);
+		set(s1,'Position',[0.3300    0.6100    0.4750    0.3]);
+		xlabel('time (yr)'); ylabel('Mass (Gt)'); colorbar off;
+		plot(vols(2,:),(vols(1,:)-vols(1,1))*md.materials.rho_ice/1e12);
+		if lockvalue, xlim(xl), ylim(yl); end
+
+		s2=subplot(2,1,2);
+		set(s2,'Position',[0.3300    0.1100    0.4750    0.3]);
+		xlabel('time (yr)'); ylabel('Mass (Gt)'); colorbar off;
+		plot(vols(2,1:end-1),dv*md.materials.rho_ice/1e12);
+		if lockvalue, xlim(xl), ylim(yl); end
+	end
+%}}}
+function displayscalar() % {{{
+	global md   range
+
+	%field:  % {{{ 
+	fieldHandle=findobj('Tag', 'Field'); 
+	fieldstrings=get(fieldHandle,'String');
+	fieldvalue=get(fieldHandle,'Value');
+	field=fieldstrings{fieldvalue};
+	%}}}
+	%counter:  % {{{ 
+	stepHandle=findobj('Tag', 'Step'); 
+	stepstrings=get(stepHandle,'String');
+	stepvalue=get(stepHandle,'Value');
+	if ~isempty(stepstrings),
+		stepstring=stepstrings{stepvalue};
+		%grab second integer: 
+		A=sscanf(stepstring,'%g (%i)'); counter=A(2);
+	else
+		counter=1;
+	end
+	%}}}
+			
+
+	if issealevel,
+		if isearth,
+		if strcmpi(field,'SealevelRSLEustatic'),
+			dt=md.earth.timestepping.time_step*md.earth.slr.geodetic_run_frequency;
+			eus=md.earth.results.TransientSolution(counter-1).(field)/dt*1000; %in mm/yr
+			scalarHandle=findobj('Tag', 'Scalar'); 
+			set(scalarHandle,'String',sprintf('%4.5f mm/yr',eus));
+		end
+		else
+			error('not supported yet!');
+		end
+	end
+%}}}
+function plotm() % {{{
+
+	%retrieve field: 
+	hObject=findobj('Tag', 'Field'); 
+	strings=get(hObject,'String'); value=get(hObject,'Value');
+
+	string='';
+	if value, 
+		if ~isempty(strings),
+			string=strings(value); 
+		end
+	end
+
+	if strcmpi(string,'IceVolume') | strcmpi(string,'IceVolumeAboveFloatation'),
+		plotv();
+	elseif strcmpi(string,'SealevelRSLEustatic'),
+		displayscalar();
+	else
+		if issealevel(),
+			plotsl();
+		else 
+			plotmd();
+		end
+	end
+%}}}
+	function plotmd() % {{{
+		global logvalue md solutiontype comparison 
+
+		%counter:  % {{{ 
+		stepHandle=findobj('Tag', 'Step'); 
+		stepstrings=get(stepHandle,'String');
+		stepvalue=get(stepHandle,'Value');
+		if ~isempty(stepstrings),
+			stepstring=stepstrings{stepvalue};
+			%grab second integer: 
+			A=sscanf(stepstring,'%g (%i)'); counter=A(2);
+		else
+			counter=1;
+		end
+		%}}}
+		%log:  % {{{ 
+		logHandle=findobj('Tag', 'Log'); logvalue=get(logHandle,'Value');
+		%}}}
+		%shading:  %{{{
+		interpHandle=findobj('Tag', 'Interp'); interpvalue=get(interpHandle,'Value');
+		flatHandle=findobj('Tag', 'Flat'); flatvalue=get(flatHandle,'Value');
+		facetedHandle=findobj('Tag', 'Faceted'); facetedvalue=get(facetedHandle,'Value');
+		if interpvalue,
+			shadingv='interp';
+		elseif flatvalue,
+			shadingv='flat';
+		elseif facetedvalue,
+			shadingv='faceted';
+		else 
+			shadingv='interp';
+		end
+		%}}}
+		%mask:  %{{{
+		maskfieldHandle=findobj('Tag', 'Masque'); 
+		maskfieldstrings=get(maskfieldHandle,'String');
+		maskfieldvalue=get(maskfieldHandle,'Value');
+		maskfield=maskfieldstrings(maskfieldvalue); 
+		maskfield=maskfield{:};
+		if strcmpi(maskfield,'all'),
+			maskv=ones(md.mesh.numberofvertices,1);
+		else
+			maskv=md.mask.(maskfield);
+		end
+		if strcmpi(maskfield,'all'),
+			%do nothing; 
+		elseif strcmpi(maskfield,'groundedice_levelset'),
+			maskv=maskv>=0;
+		elseif strcmpi(maskfield,'ice_levelset'),
+			maskv=maskv<=0;
+		elseif strcmpi(maskfield,'ocean_levelset'),
+			maskv=maskv==1;
+		elseif strcmpi(maskfield,'land_levelset'),
+			maskv=maskv==1;
+		elseif strcmpi(maskfield,'glacier_levelset'),
+			if isnan(maskv),
+				maskv=ones(md.mesh.numberofvertices,1);
+			else
+				maskv=maskv==1;
+			end
+		end
+		maskvalue=0;
+		%}}}
+		%lock limits:  % {{{
+		lockHandle=findobj('Tag', 'Lock'); lockvalue=get(lockHandle,'Value');
+		if lockvalue,
+			xl=xlim; yl=ylim;
+		else
+			xl=[min(md.mesh.x) max(md.mesh.x)];
+			yl=[min(md.mesh.y) max(md.mesh.y)];
+		end %}}}
+		%time: {{{	
+		timeHandle=findobj('Tag','Time');
+		if strcmpi(solutiontype,'TransientSolution'),
+			set(timeHandle,'String',sprintf('%4.2f',md.results.TransientSolution(counter).time));
+		else
+			set(timeHandle,'String',sprintf('%4.2f',0));
+		end
+		%}}}
+		%diffcounter:  % {{{ 
+		stepHandle=findobj('Tag', 'DiffStep'); 
+		stepstrings=get(stepHandle,'String');
+		stepvalue=get(stepHandle,'Value');
+		if ~isempty(stepstrings),
+			stepstring=stepstrings{stepvalue};
+			%grab second integer: 
+			A=sscanf(stepstring,'%g (%i)'); diffcounter=A(2);
+		else
+			diffcounter=1;
+		end
+		diffHandle=findobj('Tag', 'Diff'); 
+		diff=get(diffHandle,'Value');
+		%}}}
+		%field:  % {{{ 
+		fieldHandle=findobj('Tag', 'Field'); 
+		fieldstrings=get(fieldHandle,'String');
+		fieldvalue=get(fieldHandle,'Value');
+		if ~isempty(fieldstrings),
+			fieldv=fieldstrings{fieldvalue};
+		else
+			fieldv=NaN;
+		end
+		mfHandle=findobj('Tag', 'Mf'); 
+		mf=get(mfHandle,'Value');
+		if mf | strcmpi(solutiontype,'None'),
+			fieldHandle=findobj('Tag', 'ModelFields'); 
+			fieldstrings=get(fieldHandle,'String');
+			fieldvalue=get(fieldHandle,'Value');
+			fieldv=fieldstrings{fieldvalue};
+			eval(['field=md.' fieldv ';']);
+			if isnan(field),
+				field='mesh';
+			end
+		else
+			if strcmpi(solutiontype,'TransientSolution'),
+				field=md.results.TransientSolution(counter).(fieldv);
+				dfield=md.results.TransientSolution(diffcounter).(fieldv);
+			elseif strcmpi(solutiontype,'StressbalanceSolution'),
+				field=md.results.StressbalanceSolution.(fieldv);
+				dfield=NaN;
+			else 
+				error('unknown solution type!');
+			end
+		end
+		if comparison, 
+			if strcmpi(solutiontype,'None'),
+				error('cannot compare a solution field to model as no solution was run or selected!');
+			end
+			%figure out second field:
+			if strcmpi(fieldv,'Vel'),
+				field2=md.inversion.vel_obs;
+			end
+		end
+
+		%}}}
+		%color limits:  % {{{
+		cminHandle=findobj('Tag','Cmin'); cmin=str2num(get(cminHandle,'String'));
+		cmaxHandle=findobj('Tag','Cmax'); cmax=str2num(get(cmaxHandle,'String'));
+
+		if isnan(cmin)
+			if logvalue,
+				cmin=.1;
+			else
+				pos=find(maskv);
+				cmin=min(field(pos));
+			end
+		end
+		if isnan(cmax)
+			pos=find(maskv);
+			cmax=max(field(pos));
+		end
+		colaxis=[cmin,cmax];
+		%}}}
+
+		cla;
+		if logvalue,
+			plotmodel(md,'data',field,'figurestatement','off','clf','off','mask',maskv,'caxis',colaxis,'log',10,'xlim',xl,'ylim',yl,'shading',shadingv);
+		else
+			if ~diff,
+				if comparison,
+					plotmodel(md,'data',field,'data',field2,'figurestatement','off','clf','off','mask#all',maskv,'caxis#all',colaxis,'xlim#all',xl,'ylim#all',yl,'shading#all',shadingv,'nlines',2,'ncols',1);
+				else
+					if ischar(field) & strcmpi(field,'mesh'),
+						plotmodel(md,'data','mesh','figurestatement','off','clf','off','xlim',xl,'ylim',yl);
+					else
+						plotmodel(md,'data',field,'figurestatement','off','clf','off','mask',maskv,'caxis',colaxis,'xlim',xl,'ylim',yl,'shading',shadingv); 
+					end
+				end
+			else
+				plotmodel(md,'data',dfield-field,'figurestatement','off','clf','off','mask',maskv,'caxis',colaxis,'xlim',xl,'ylim',yl,'shading',shadingv);
+			end
+
+		end
+		set(gca,'Position',[0.2300    0.1100    0.7750    0.8150]);
+	%}}}
+function plotsl() % {{{
+	global logvalue md solutiontype comparison 
+
+	%counter:  % {{{ 
+	stepHandle=findobj('Tag', 'Step'); 
+	stepstrings=get(stepHandle,'String');
+	stepvalue=get(stepHandle,'Value');
+	if ~isempty(stepstrings),
+		stepstring=stepstrings{stepvalue};
+		%grab second integer: 
+		A=sscanf(stepstring,'%g (%i)'); counter=A(2);
+	else
+		counter=1;
+	end
+	%}}}
+	%log:  % {{{ 
+	logHandle=findobj('Tag', 'Log'); logvalue=get(logHandle,'Value');
+	%}}}
+	%shading:  %{{{
+	interpHandle=findobj('Tag', 'Interp'); interpvalue=get(interpHandle,'Value');
+	flatHandle=findobj('Tag', 'Flat'); flatvalue=get(flatHandle,'Value');
+	facetedHandle=findobj('Tag', 'Faceted'); facetedvalue=get(facetedHandle,'Value');
+	if interpvalue,
+		shadingv='interp';
+	elseif flatvalue,
+		shadingv='flat';
+	elseif facetedvalue,
+		shadingv='faceted';
+	else 
+		shadingv='interp';
+	end
+	%}}}
+	%time: {{{	
+	timeHandle=findobj('Tag','Time');
+	if strcmpi(solutiontype,'TransientSolution'),
+		if isearth,
+			set(timeHandle,'String',sprintf('%4.2f',md.earth.results.TransientSolution(counter).time));
+		else
+			set(timeHandle,'String',sprintf('%4.2f',md.icecaps{1}.results.TransientSolution(counter).time));
+		end
+	else
+		set(timeHandle,'String',sprintf('%4.2f',0));
+	end
+	%}}}
+	%diffcounter:  % {{{ 
+	stepHandle=findobj('Tag', 'DiffStep'); 
+	stepstrings=get(stepHandle,'String');
+	stepvalue=get(stepHandle,'Value');
+	if ~isempty(stepstrings),
+		stepstring=stepstrings{stepvalue};
+		%grab second integer: 
+		A=sscanf(stepstring,'%g (%i)'); diffcounter=A(2);
+	else
+		diffcounter=1;
+	end
+	diffHandle=findobj('Tag', 'Diff'); 
+	diff=get(diffHandle,'Value');
+	%}}}
+
+	if isearth, 
+		%Earth plotting: {{{
+		%field:  % {{{ 
+		fieldHandle=findobj('Tag', 'Field'); 
+		fieldstrings=get(fieldHandle,'String');
+		fieldvalue=get(fieldHandle,'Value');
+		if ~isempty(fieldstrings),
+			fieldv=fieldstrings{fieldvalue};
+		else
+			fieldv=NaN;
+		end
+		colorbartitle={fieldv,''};
+		if strcmpi(fieldv,'SealevelRSLRate'),
+			colorbartitle={'SealevelRSLRate (mm/yr)',''};
+		end
+
+		mfHandle=findobj('Tag', 'Mf'); 
+		mf=get(mfHandle,'Value');
+		if mf | strcmpi(solutiontype,'None'),
+			fieldHandle=findobj('Tag', 'ModelFields'); 
+			fieldstrings=get(fieldHandle,'String');
+			fieldvalue=get(fieldHandle,'Value');
+			fieldv=fieldstrings{fieldvalue};
+			eval(['field=md.earth.' fieldv ';']);
+			if isnan(field),
+				field='mesh';
+			end
+		else
+			if strcmpi(solutiontype,'TransientSolution'),
+				field=md.earth.results.TransientSolution(counter).(fieldv);
+				dfield=md.earth.results.TransientSolution(diffcounter).(fieldv);
+			elseif strcmpi(solutiontype,'StressbalanceSolution'),
+				field=md.earth.results.StressbalanceSolution.(fieldv);
+				dfield=NaN;
+			else 
+				error('unknown solution type!');
+			end
+		end
+		if comparison, 
+			if strcmpi(solutiontype,'None'),
+				error('cannot compare a solution field to model as no solution was run or selected!');
+			end
+			%figure out second field:
+			if strcmpi(fieldv,'Vel'), field2=md.earth.inversion.vel_obs; end
+			if strcmpi(fieldv,'Base'), field2=md.earth.geometry.base; end
+		end
+		%}}}
+		%mask:  %{{{
+		maskfieldHandle=findobj('Tag', 'Masque'); 
+		maskfieldstrings=get(maskfieldHandle,'String');
+		maskfieldvalue=get(maskfieldHandle,'Value');
+		maskfield=maskfieldstrings(maskfieldvalue); 
+		maskfield=maskfield{:};
+		if strcmpi(maskfield,'all'),
+			maskv=ones(md.earth.mesh.numberofvertices,1);
+		else
+			maskv=md.earth.mask.(maskfield);
+		end
+		if strcmpi(maskfield,'all'),
+			%do nothing; 
+		elseif strcmpi(maskfield,'groundedice_levelset'),
+			maskv=maskv>=0;
+		elseif strcmpi(maskfield,'ice_levelset'),
+			maskv=maskv<=0;
+		elseif strcmpi(maskfield,'ocean_levelset'),
+			maskv=maskv==1;
+		elseif strcmpi(maskfield,'land_levelset'),
+			maskv=maskv==1;
+		elseif strcmpi(maskfield,'glacier_levelset'),
+			if isnan(maskv),
+				maskv=ones(md.earth.mesh.numberofvertices,1);
+			else
+				maskv=maskv==1;
+			end
+		end
+		maskvalue=0;
+		%}}}
+		%color limits:  % {{{
+		if ~ischar(field),
+			cminHandle=findobj('Tag','Cmin'); cmin=str2num(get(cminHandle,'String'));
+			cmaxHandle=findobj('Tag','Cmax'); cmax=str2num(get(cmaxHandle,'String'));
+
+			if isnan(cmin)
+				if logvalue,
+					cmin=.1;
+				else
+					pos=find(maskv);
+					cmin=min(field(pos));
+				end
+			end
+			if isnan(cmax)
+				pos=find(maskv);
+				cmax=max(field(pos));
+			end
+
+			if cmin==cmax,
+				colaxis=[cmin-eps,cmax+eps];
+			else
+				colaxis=[cmin,cmax];
+			end
+		end
+
+		%}}}
+		%lock limits:  % {{{
+		lockHandle=findobj('Tag', 'Lock'); lockvalue=get(lockHandle,'Value');
+		if lockvalue,
+			xl=xlim; yl=ylim; zl=zlim;
+			[az,el]=view; v=[az,el];
+		else
+			xl=[min(md.earth.mesh.x) max(md.earth.mesh.x)];
+			yl=[min(md.earth.mesh.y) max(md.earth.mesh.y)];
+			zl=[min(md.earth.mesh.z) max(md.earth.mesh.z)];
+			v=[57,50];
+		end %}}}
+
+		%some quirks: 
+		cla;
+		if logvalue,
+			plotmodel(md.earth,'data',field,'figurestatement','off','clf','off','mask',maskv,'caxis',colaxis,'log',10,'xlim',xl,'ylim',yl,'zlim',zl,'shading',shadingv,'colorbar','on','view',v,'colorbartitle',colorbartitle);
+		else
+			if ~diff, 
+				if comparison,
+					plotmodel(md.earth,'data',field,'data',field2,'figurestatement','off','clf','off','mask#all',maskv,'caxis#all',colaxis,'xlim#all',xl,'ylim#all',yl,'zlim#all',zl,'shading#all',shadingv,'nlines',2,'ncols',1,'view#all',v,'colorbartitle',colorbartitle);
+				else
+					if ischar(field) & strcmpi(field,'mesh'),
+						plotmodel(md.earth,'data','mesh','figurestatement','off','clf','off','xlim',xl,'ylim',yl,'zlim',zl,'view#all',v,'colorbartitle',colorbartitle);
+					else
+						plotmodel(md.earth,'data',field,'figurestatement','off','clf','off','mask',maskv,'maskvalue',maskvalue,'caxis',colaxis,'xlim',xl,'ylim',yl,'zlim',zl,'shading',shadingv,'axes','equal','colorbarpos',[.95 .5 .01 .15],'view#all',v,'colorbartitle',colorbartitle);
+					end
+				end
+			else
+				plotmodel(md.earth,'data',dfield-field,'figurestatement','off','clf','off','mask',maskv,'caxis',colaxis,'xlim',xl,'ylim',yl,'zlim',zl,'shading',shadingv,'view#all',v,'colorbartitle',colorbartitle);
+			end
+		end
+
+		%coastlines and graticule: {{{
+		load coastlines
+		[x,y,z]=AboveGround(coastlat,coastlon,md.earth.mesh.r(1),1000);
+		hold on; p=plot3(x,y,z,'k-'); set(p,'Color','k');
+
+		%graticule:
+		grat=graticule(30,40,1);
+		[x,y,z]=AboveGround(grat.lat,grat.long,md.earth.mesh.r(1),1000);
+		hold on, p=plot3(x,y,z,'k.-','MarkerSize',.01); set(p,'Color','k');
+		%}}}
+		%}}}
+	else 
+		%IceCaps plotting:  {{{
+
+		%counter:  % {{{ 
+		stepHandle=findobj('Tag', 'Step'); 
+		stepstrings=get(stepHandle,'String');
+		stepvalue=get(stepHandle,'Value');
+		if ~isempty(stepstrings),
+			stepstring=stepstrings{stepvalue};
+			%grab second integer: 
+			A=sscanf(stepstring,'%g (%i)'); counter=A(2);
+		else
+			counter=1;
+		end
+		%}}}
+		%log:  % {{{ 
+		logHandle=findobj('Tag', 'Log'); logvalue=get(logHandle,'Value');
+		%}}}
+		%shading:  %{{{
+		interpHandle=findobj('Tag', 'Interp'); interpvalue=get(interpHandle,'Value');
+		flatHandle=findobj('Tag', 'Flat'); flatvalue=get(flatHandle,'Value');
+		facetedHandle=findobj('Tag', 'Faceted'); facetedvalue=get(facetedHandle,'Value');
+		if interpvalue,
+			shadingv='interp';
+		elseif flatvalue,
+			shadingv='flat';
+		elseif facetedvalue,
+			shadingv='faceted';
+		else 
+			shadingv='interp';
+		end
+		%}}}
+		%time: {{{	
+		timeHandle=findobj('Tag','Time');
+		if strcmpi(solutiontype,'TransientSolution'),
+			set(timeHandle,'String',sprintf('%4.2f',md.icecaps{1}.results.TransientSolution(counter).time));
+		else
+			set(timeHandle,'String',sprintf('%4.2f',0));
+		end
+		%}}}
+		%diffcounter:  % {{{ 
+		stepHandle=findobj('Tag', 'DiffStep'); 
+		stepstrings=get(stepHandle,'String');
+		stepvalue=get(stepHandle,'Value');
+		if ~isempty(stepstrings),
+			stepstring=stepstrings{stepvalue};
+			%grab second integer: 
+			A=sscanf(stepstring,'%g (%i)'); diffcounter=A(2);
+		else
+			diffcounter=1;
+		end
+		diffHandle=findobj('Tag', 'Diff'); 
+		diff=get(diffHandle,'Value');
+		%}}}
+		%range:  % {{{
+		basins=getbasins();
+		if strcmpi(basins,'All'),
+			range=md.basinindx('continent',{getcontinent()});
+		else
+			range=md.basinindx('basin',basins);
+		end
+
+		%}}}
+		cla;
+		for j=1:length(range), 
+			i=range(j);
+			%mask:  %{{{
+			maskfieldHandle=findobj('Tag', 'Masque'); 
+			maskfieldstrings=get(maskfieldHandle,'String');
+			maskfieldvalue=get(maskfieldHandle,'Value');
+			maskfield=maskfieldstrings(maskfieldvalue); 
+			maskfield=maskfield{:};
+			if strcmpi(maskfield,'all'),
+				maskv=ones(md.icecaps{i}.mesh.numberofvertices,1);
+			else
+				maskv=md.icecaps{i}.mask.(maskfield);
+			end
+			if strcmpi(maskfield,'all'),
+				%do nothing; 
+			elseif strcmpi(maskfield,'groundedice_levelset'),
+				maskv=maskv>=0;
+			elseif strcmpi(maskfield,'ice_levelset'),
+				maskv=maskv<=0;
+			elseif strcmpi(maskfield,'ocean_levelset'),
+				maskv=maskv==1;
+			elseif strcmpi(maskfield,'land_levelset'),
+				maskv=maskv==1;
+			elseif strcmpi(maskfield,'glacier_levelset'),
+				if isnan(maskv),
+					maskv=ones(md.icecaps{i}.mesh.numberofvertices,1);
+				else
+					maskv=maskv==1;
+				end
+			end
+			maskvalue=0;
+			%}}}
+			%lock limits:  % {{{
+			lockHandle=findobj('Tag', 'Lock'); lockvalue=get(lockHandle,'Value');
+			if lockvalue,
+				xl=xlim; yl=ylim;
+			else
+				if j==1,
+					xl=[min(md.icecaps{i}.mesh.x) max(md.icecaps{i}.mesh.x)];
+				else
+					xl=[min([md.icecaps{i}.mesh.x;xl(1)]) max([md.icecaps{i}.mesh.x;xl(2)])];
+				end
+				if j==1,
+					yl=[min(md.icecaps{i}.mesh.y) max(md.icecaps{i}.mesh.y)];
+				else
+					yl=[min([md.icecaps{i}.mesh.y; yl(1)]) max([md.icecaps{i}.mesh.y; yl(2)])];
+				end
+			end %}}}
+			%field:  % {{{ 
+			fieldHandle=findobj('Tag', 'Field'); 
+			fieldstrings=get(fieldHandle,'String');
+			fieldvalue=get(fieldHandle,'Value');
+			if ~isempty(fieldstrings),
+				fieldv=fieldstrings{fieldvalue};
+			else
+				fieldv=NaN;
+			end
+			mfHandle=findobj('Tag', 'Mf'); 
+			mf=get(mfHandle,'Value');
+			if mf | strcmpi(solutiontype,'None'),
+				fieldHandle=findobj('Tag', 'ModelFields'); 
+				fieldstrings=get(fieldHandle,'String');
+				fieldvalue=get(fieldHandle,'Value');
+				fieldv=fieldstrings{fieldvalue};
+				eval(['field=md.icecaps{' num2str(i) '}.' fieldv ';']);
+				if isnan(field),
+					field='mesh';
+				end
+			else
+				if strcmpi(solutiontype,'TransientSolution'),
+					field=md.icecaps{i}.results.TransientSolution(counter).(fieldv);
+					dfield=md.icecaps{i}.results.TransientSolution(diffcounter).(fieldv);
+				elseif strcmpi(solutiontype,'StressbalanceSolution'),
+					field=md.icecaps{i}.results.StressbalanceSolution.(fieldv);
+					dfield=NaN;
+				else 
+					error('unknown solution type!');
+				end
+			end
+			if comparison, 
+				if strcmpi(solutiontype,'None'),
+					error('cannot compare a solution field to model as no solution was run or selected!');
+				end
+				%figure out second field:
+				if strcmpi(fieldv,'Vel'), field2=md.icecaps{i}.inversion.vel_obs; end
+				if strcmpi(fieldv,'Base'), field2=md.icecaps{i}.geometry.base; end
+				if strcmpi(fieldv,'Bed'), field2=md.icecaps{i}.geometry.bed; end
+				if strcmpi(fieldv,'Thickness'), field2=md.icecaps{i}.geometry.thickness; end
+				if strcmpi(fieldv,'Surface'), field2=md.icecaps{i}.geometry.surface; end
+			end
+
+			%}}}
+			%color limits:  % {{{
+			cminHandle=findobj('Tag','Cmin'); cminfield=str2num(get(cminHandle,'String'));
+			cmaxHandle=findobj('Tag','Cmax'); cmaxfield=str2num(get(cmaxHandle,'String'));
+
+			if isnan(cminfield)
+				if logvalue,
+					cmin=.1;
+				else
+					pos=find(maskv);
+					if j==1,
+						cmin=min(field(pos));
+					else
+						cmin=min(min(field(pos)),cmin);
+					end
+				end
+			else
+				cmin=cminfield;
+			end
+			if isnan(cmaxfield)
+				pos=find(maskv);
+				if j==1
+					cmax=max(field(pos));
+				else
+					cmax=max(max(field(pos)),cmax);
+				end
+			else
+				cmax=cmaxfield;
+			end
+			if cmin==cmax,
+				cmin=cmin-1e-10; cmax=cmax+1e-10;
+			end
+			colaxis=[cmin,cmax];
+			%}}}
+			%contour levels? {{{
+			contourlevels=0;
+			if strncmpi(fieldv,'Mask',4),
+				contourexp=[tempname '.exp'];
+				isoline(md.icecaps{i},field,'output',contourexp);
+				contourlevels=1;
+
+				if diff,
+					contourdiffexp=[tempname '.exp'];
+					isoline(md.icecaps{i},dfield,'output',contourdiffexp);
+				end
+			end
+			%}}}
+			%display : {{{ 
+			if logvalue,
+				plotmodel(md.icecaps{i},'data',field,'figurestatement','off','clf','off','mask',maskv,'caxis',colaxis,'log',10,'xlim',xl,'ylim',yl,'shading',shadingv);
+			else
+				if ~diff,
+					if comparison,
+						plotmodel(md.icecaps{i},'data',field,'data',field2,'figurestatement','off','clf','off','mask#all',maskv,'caxis#all',colaxis,'xlim#all',xl,'ylim#all',yl,'shading#all',shadingv,'nlines',2,'ncols',1);
+					else
+						if ischar(field) & strcmpi(field,'mesh'),
+							plotmodel(md.icecaps{i},'data','mesh','figurestatement','off','clf','off','xlim',xl,'ylim',yl);
+						else
+							plotmodel(md.icecaps{i},'data',field,'figurestatement','off','clf','off','mask',maskv,'caxis',colaxis,'xlim',xl,'ylim',yl,'shading',shadingv); 
+							if contourlevels,
+								contour=expread(contourexp);
+								hold on; 
+								for k=1:length(contour),
+									plot(contour(k).x,contour(k).y,'r-');
+								end
+							end
+						end
+					end
+				else
+					plotmodel(md.icecaps{i},'data',dfield-field,'figurestatement','off','clf','off','mask',maskv,'caxis',colaxis,'xlim',xl,'ylim',yl,'shading',shadingv);
+					if contourlevels,
+						contour=expread(contourexp);
+						hold on; 
+						for k=1:length(contour),
+							plot(contour(k).x,contour(k).y,'k-');
+						end
+						dcontour=expread(contourdiffexp);
+						hold on; 
+						for k=1:length(dcontour),
+							plot(dcontour(k).x,dcontour(k).y,'r-');
+						end
+					end
+				end
+			end 
+			% }}} 
+
+		end %end for
+
+		if ~comparison,
+			set(gca,'Position',[0.2300    0.1100    0.7750    0.8150]); 
+		end % }}}
+	end 
+% }}}
+function result=isearth() % {{{
+	global earth;
+	result=earth;
+%}}}
+function result=issealevel() % {{{
+	global md;
+	if strcmpi(class(md),'sealevelmodel'),
+		result=1;
+	else 
+		result=0;
+	end
+%}}}
+function  continent=getcontinent() % {{{
+
+	continentHandle=findobj('Tag', 'popupmenu11');
+	strings=get(continentHandle,'String');
+	value=get(continentHandle,'Value');
+	continent=strings{value};
+
+%}}}
+function  basins=getbasins() % {{{
+
+	basinHandle=findobj('Tag', 'popupmenu12'); 
+	strings=get(basinHandle,'String');
+	value=get(basinHandle,'Value');
+	basins=strings{value};
+% }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/mme_autotime_correlation_matrix.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/mme_autotime_correlation_matrix.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/mme_autotime_correlation_matrix.m	(revision 27955)
@@ -0,0 +1,20 @@
+function matrix=mme_autotime_correlation_matrix(mme,type)
+
+
+	%Out of a multi model ensemble (nsamples x nsteps) of runs, build 
+	%a temporal correlation matrix (of size nsteps x nsteps)
+
+	nsamples=size(mme,1);
+	nsteps=size(mme,2);
+
+	%initialize with 1 in the diagonal: 
+	matrix=eye(nsteps,nsteps);
+
+	%go through time steps, and fill up the top part. 
+	for i=1:nsteps,
+		for j=i+1:nsteps,
+			matrix(i,j)=corr(mme(:,i),mme(:,j),'Type',type);
+			matrix(j,i)=matrix(i,j);
+		end
+	end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/aggregation.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/aggregation.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/aggregation.m	(revision 27955)
@@ -0,0 +1,64 @@
+function [mask,varargout]=aggregation(mask,windowsize,threshhold,varargin)
+%AGGREGATION - aggregation of an image to a lower sized image
+% 
+%  mask is an image of arbitrary size, format binary, with values 1 for foreground, and 0 for background
+%  mask is first convoluted with a square matrix of size windowsize (where windowsize is an even number), 
+%       it is then filtered according to the threshhold value, and finally subsampled using 1/windowsize as 
+%       sample scaling. 
+%  x,y can be provided as optional arguments, as coordinates of the center points of the mask. aggregation will 
+%       then return subsampled x,y arguments in output.
+% 
+%  Usage:   mask2=aggregation(mask,7,7^2/2);
+%           [mask2,x2,y2]=aggregation(mask,7,7^2,x,y];
+%
+%  See also CLOSING, OPENING, DILATION, EROSION
+
+%check input arguments  %{{{
+%even windowsize
+if mod(windowsize,2)==0,
+	error('windowsize should be an even number');
+end
+
+%check on presence of varargin: 
+optional=0;
+if nargin>3,
+	if nargin~=5,
+		help aggregation;
+		error('wrong number of optional arguments specified');
+	else
+		optional=1;
+		x=varargin{1};
+		y=varargin{2};
+	end
+end
+
+%check on presence of varargout: 
+if optional,
+	if nargout~=3,
+		help aggregation;
+		error('wrong number of optional output arguments specified');
+	end
+end
+%}}}
+
+%convolve mask
+matrix=ones(windowsize,windowsize); 
+mask=filter2(matrix,mask,'same');
+
+%apply threshhold
+pos=find(mask>threshhold); 
+pos2=find(mask<=threshhold); 
+mask(pos)=1;
+mask(pos2)=0;
+
+%mask has been transformed into double format from the filter2  operation. Bring back to binary. 
+mask=logical(mask);
+
+%subsample: 
+s=size(mask);
+mask=mask(1:windowsize:s(1),1:windowsize:s(2));
+
+if optional,
+	varargout{1}=x(1:windowsize:s(2));
+	varargout{2}=y(1:windowsize:s(1));
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/closing.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/closing.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/closing.m	(revision 27955)
@@ -0,0 +1,5 @@
+function mask=closing(mask,neighboorhood)
+%closing algorithm using neighboorhood pixel neighboors.
+
+mask=dilation(mask,neighboorhood);
+mask=erosion(mask,neighboorhood);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/dilation.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/dilation.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/dilation.m	(revision 27955)
@@ -0,0 +1,25 @@
+function mask=dilation(mask,neighboorhood)
+%deletion algorithm using 4 pixel neighboors.
+
+%convolve: 
+
+matrix=ones(3,3); 
+
+%4 neighboorhood: 
+%corners
+if neighboorhood==4,
+	matrix(1,1)=0;
+	matrix(1,3)=0;
+	matrix(3,1)=0;
+	matrix(3,3)=0;
+end
+%center
+matrix(2,2)=0;
+
+%convolve mask: 
+convol=filter2(matrix,mask,'same');
+
+pos=find(mask==0);
+pos2=find(convol(pos)~=0);
+
+mask(pos(pos2))=1;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/erosion.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/erosion.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/erosion.m	(revision 27955)
@@ -0,0 +1,26 @@
+function mask=erosion(mask,neighboorhood)
+%erosion algorithm using neighboorhood pixel neighboors.
+
+%convolve: 
+
+matrix=ones(3,3); 
+
+%4 neighboorhood: 
+%corners
+if neighboorhood==4,
+	matrix(1,1)=0;
+	matrix(1,3)=0;
+	matrix(3,1)=0;
+	matrix(3,3)=0;
+end
+
+%center
+matrix(2,2)=0;
+
+%convolve mask: 
+convol=filter2(matrix,mask,'same');
+
+pos=find(mask==1);
+pos2=find(convol(pos)<neighboorhood);
+
+mask(pos(pos2))=0;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/nunataks.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/nunataks.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/nunataks.m	(revision 27955)
@@ -0,0 +1,20 @@
+function [mask]=nunataks(mask)
+%NUNATAKS - bias mask towards increased 0 coverage
+% 
+%  mask is an image of arbitrary size, format binary, with values 1 for foreground, and 0 for background
+% 
+%  Usage:   mask=nunataks(mask)
+%           [mask]=aggregation(mask);
+%
+%  See also CLOSING, OPENING, DILATION, EROSION, AGGREGATION
+
+rocks=~mask;
+
+%matrices for convolution: 
+matrix=[0 1 0; 1 0 1; 0 1 0];
+
+%do not exist, i.e. locations that stand pretty much alone. 
+mask=filter2(matrix1,mask,'same');
+pos=find(~crocks & rocks);
+
+mask(pos)=0;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/opening.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/opening.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/opening.m	(revision 27955)
@@ -0,0 +1,5 @@
+function mask=opening(mask,neighboorhood)
+%opening algorithm using neighboorhood pixel neighboors.
+
+mask=erosion(mask,neighboorhood);
+mask=dilation(mask,neighboorhood);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/vectorialize.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/vectorialize.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/morphological/vectorialize.m	(revision 27955)
@@ -0,0 +1,11 @@
+function contours=vectorialize(mask,connectivity);
+
+	vec=bwboundaries(mask,connectivity);
+
+	contours=struct([]);
+	for i=1:length(vec),
+		contours(end+1).x=vec{i}(:,2);
+		contours(end).y=vec{i}(:,1);
+		contours(end).density=1;
+	end
+	contours(1).name='';
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/oceanmip.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/oceanmip.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/oceanmip.m	(revision 27955)
@@ -0,0 +1,304 @@
+%OCEANMIP class definition
+%
+%   Usage:
+%      omip = oceanmip('root',rootdir,'files',listfiles);
+%
+
+classdef oceanmip < handle
+	properties (SetAccess=public) %Model fields
+		
+		root = ''; %where are the files for CMIP5
+		n   = 0;   %number of files
+		files   = {};   %netcdf files
+		zos = {}; % local sea-level anomalies with zero mean over the oceans (in mm) (lat,lon,time): 
+		zostoga = {}; % global-mean thermosteric sea level anomalies (in mm) (time)
+		time = {}; %time in year
+		pbo = {}; %local ocean-bottom pressure changes. Also have zero mean over the oceans (lat,lon,time)
+		lat = {};
+		long = {};
+		scenario = {}; 
+		model = {}; 
+		mesh_zos = {}; %interpolated (onto model mesh) zos field
+		mesh_pbo = {}; %interpolated (onto model mesh) pbo field
+
+	end
+	methods
+		function self = oceanmip(varargin) % {{{
+
+			if nargin==0, 
+				self=setdefaultparameters(self);
+			else 
+				self=setdefaultparameters(self);
+
+				options=pairoptions(varargin{:});
+
+				self.root=getfieldvalue(options,'root');
+				self.files=getfieldvalue(options,'files');
+				self.n=length(self.files);
+
+				%read files: 
+				for f=1:self.n,
+					file=[self.root '/' self.files{f}];
+					disp(['reading file ' file]);
+					
+					%figure out time interval and remove historical:
+					time=ncread(file,'time');
+					pos=find(diff(time)<0); 
+					if isempty(pos),
+						%pos=(length(time)-12*100+1):length(time);
+						pos=1:length(time);
+					else
+						pos=[(pos+1):length(time)]; 
+					end
+					time2=time(pos); 
+					pos2=find(time2<=2099 & time2>=2006);
+					pos=pos(pos2);
+					time=time(pos); nt=length(time);
+
+					%reduce datasets: 
+					time=floor(time(12:12:nt)); 
+					self.time{end+1}=time;
+					
+					%zos: 
+					zos=ncread(file,'zos'); nx=size(zos,1); ny=size(zos,2); zos=zos(:,:,pos);
+					zosm=zeros(nx,ny,nt/12);
+					for i=12:12:nt,
+						year=i/12;
+						zosm(:,:,year)=mean(zos(:,:,(i-11):i),3);
+					end
+					self.zos{end+1}=zosm; clear zos;
+
+					%zostoga:
+					zostoga=ncread(file,'zostoga'); zostoga=zostoga(pos);
+					zostogam=zeros(nt/12,1);
+					for i=12:12:nt,
+						year=i/12;
+						zostogam(year)=mean(zostoga(i-11:i));
+					end
+					%control against 2006: 
+					zostogam=zostogam-zostogam(1);
+					self.zostoga{end+1}=zostogam; clear zostoga;
+
+					%pbo: 
+					pbo=ncread(file,'pbo'); nx=size(pbo,1); ny=size(pbo,2); pbo=pbo(:,:,pos);
+					pbom=zeros(nx,ny,nt/12);
+					for i=12:12:nt,
+						year=i/12;
+						pbom(:,:,year)=mean(pbo(:,:,i-11:i),3);
+					end
+					self.pbo{end+1}=pbom; clear pbo;
+
+					self.lat{end+1}=ncread(file,'lat');
+					self.long{end+1}=ncread(file,'lon');
+
+					%scenario and model: 
+					file=self.files{f};
+					ind=findstr(file,'rcp'); 
+					self.scenario{end+1}=str2num(file(ind+3:ind+4));
+					self.model{end+1}=file(1:ind-2);
+				end
+
+			end
+		end
+		%}}}
+		function self = interpolate(self,md) % {{{
+
+			%retrieve long and lat from mesh: 
+			meshlong=md.mesh.long;
+			pos=find(meshlong<0); meshlong(pos)=meshlong(pos)+360;
+			meshlat=md.mesh.lat;
+
+			for i=1:self.n,
+				disp(['interpolating model ' self.model{i} ' onto model mesh']);
+
+				%If we have 182 cells in long, trim by 1 on each side:
+				if size(self.pbo{i},1)==182,
+					self.pbo{i}=self.pbo{i}(2:181,:,:);
+					self.zos{i}=self.zos{i}(2:181,:,:);
+					self.long{i}=self.long{i}(2:181,:,:);
+					self.lat{i}=self.lat{i}(2:181,:,:);
+				end
+
+
+				%triangulation: 
+				long=double(self.long{i});  long=long(:); 
+				pos=find(long<0); long(pos)=long(pos)+360;
+				lat=double(self.lat{i}); lat=lat(:);
+				[newl,uniqpos]=unique([lat,long],'rows','stable');
+				long=long(uniqpos); lat=lat(uniqpos);
+				index=delaunay(long,lat);
+
+				%some checks: 
+				areas=GetAreas(index,long,lat); indneg=find(areas<0);  
+				index(indneg,:)=[index(indneg,1),index(indneg,3),index(indneg,2)];
+				areas=GetAreas(index,long,lat); 
+				ind=find(areas<1e-8); index(ind,:)=[];
+
+				%fix if we have orphans
+				[index long lat dummy newpos]=FixMesh(index,long,lat,1:length(long));
+
+				time=self.time{i};
+				%retrieve fields:
+				omip_pbo=self.pbo{i};
+				omip_zos=self.zos{i};
+				omip_zostoga=self.zostoga{i};
+
+				%interpolate:
+				mesh_pbo=zeros(md.mesh.numberofvertices,length(time));
+				mesh_zos=zeros(md.mesh.numberofvertices,length(time));
+
+				parfor j=1:length(time),
+				%for j=1:length(time),
+					if mod(j,10)==0, 
+						s=sprintf('   progress: %.2g ',j/length(time)*100);
+						fprintf(s); pause(1e-3); fprintf(repmat('\b',1,numel(s))); 
+					end
+
+					pbo=omip_pbo(:,:,j); pbo=pbo(:); pbo=pbo(uniqpos); 
+					zos=omip_zos(:,:,j); zos=zos(:); zos=zos(uniqpos);
+
+					pboj= InterpFromMeshToMesh2d(index,long,lat,pbo(newpos),meshlong,meshlat);
+					pos=find(abs(pboj)>1e4); pboj(pos)=0;
+					mesh_pbo(:,j)=pboj;
+
+					zosj=InterpFromMeshToMesh2d(index,long,lat,zos(newpos),meshlong,meshlat);
+					pos=find(abs(zosj)>1e5); zosj(pos)=0;
+					mesh_zos(:,j)=zosj;
+				end
+				self.mesh_pbo{end+1}=mesh_pbo;
+				self.mesh_zos{end+1}=mesh_zos;
+
+				%clear for memory purposes: 
+				self.pbo{i}=[];
+				self.zos{i}=[];
+			end
+		end
+
+		%}}}
+		function self = setdefaultparameters(self) % {{{
+		end
+		%}}}
+		function self = rawclean(self) % {{{
+			for i=1:self.n,
+				self.zos{i}=[];
+				self.pbo{i}=[];
+			end
+		end
+		%}}}
+		function [rate,time]= zostoga_mean(self) % {{{
+			series=zeros(length(self.time{1}),self.n);
+			for i=1:self.n,
+				series(:,i)=self.zostoga{i};
+			end
+			rate=mean(series,2);
+			time=self.time{1};
+		end
+		%}}}
+		function [rate,time]= zostoga_std(self) % {{{
+			series=zeros(length(self.time{1}),self.n);
+			for i=1:self.n,
+				series(:,i)=self.zostoga{i};
+			end
+			rate=std(series,1,2);
+			time=self.time{1};
+		end
+		%}}}
+		function [average,stddev,time]= zostoga_stats(self) % {{{
+			series=zeros(length(self.time{1}),self.n);
+			for i=1:self.n,
+				series(:,i)=self.zostoga{i};
+			end
+			average=mean(series,2);
+			stddev=std(series,1,2);
+			time=self.time{1};
+		end
+		%}}}
+	function array= bottompressure(self,model,gridded) % {{{
+			for i=1:self.n,
+				if strcmpi(model,self.model{i}),
+					if gridded,
+						pbo=self.pbo{i}; pbo=pbo/1000; %in meters
+					else
+						pbo=self.mesh_pbo{i}; pbo=pbo/1000; %in meters
+					end
+					array=pbo;
+					break;
+				end
+			end
+		end
+		%}}}
+	function arrays= dbottompressures(self,varargin) % {{{
+		options=pairoptions(varargin{:});
+		units=getfieldvalue(options,'units','mm/yr');
+		
+		arrays=cell(self.n,1);
+		for i=1:self.n,
+			pbo=self.mesh_pbo{i}; 
+			dpbo=diff(pbo,1,2);
+			if strcmpi(units,'m/yr'),
+				dpbo=dpbo/1000;
+			end
+			time=self.time{i}; time=time(1:end-1);
+			array=[dpbo;time'];
+			arrays{i}=array;
+		end
+	end %}}}
+	function arrays= dzoss(self,varargin) % {{{
+		options=pairoptions(varargin{:});
+		units=getfieldvalue(options,'units','mm/yr');
+		
+		arrays=cell(self.n,1);
+		for i=1:self.n,
+			zos=self.mesh_zos{i}; 
+			dzos=diff(zos,1,2);
+			if strcmpi(units,'m/yr'),
+				dzos=dzos/1000;
+			end
+			time=self.time{i};time=time(1:end-1);
+			array=[dzos;time'];
+			arrays{i}=array;
+		end
+	end	%}}}
+	function arrays= dzostogass(self,varargin) % {{{
+		options=pairoptions(varargin{:});
+		units=getfieldvalue(options,'units','mm/yr');
+
+		arrays=cell(self.n,1);
+		for i=1:self.n,
+			zostoga=self.zostoga{i}; 
+			dzostoga=diff(zostoga);
+			if strcmpi(units,'m/yr'),
+				dzostoga=dzostoga/1000;
+			end
+			time=self.time{i};time=time(1:end-1);
+			array=[dzostoga';time'];
+			arrays{i}=array;
+		end
+	end	%}}}
+		function [lat,long]= latlong(self,model) % {{{
+			for i=1:self.n,
+				if strcmpi(model,self.model{i}),
+					lat=self.lat{i};
+					long=self.long{i};
+					break;
+				end
+			end
+		end
+		%}}}
+		function disp(self) % {{{
+			disp('   CMIP5 Ocean MIP:');
+
+				fielddisplay(self,'n','number of files');
+				fielddisplay(self,'root','where are the files for CMIP5');
+				fielddisplay(self,'files','CMIP5 ocean files');
+				fielddisplay(self,'zos','local sea-level anomalies with zero mean over the oceans (in mm) (lat,lon,time)');
+				fielddisplay(self,'zostoga','global-mean thermosteric sea level anomalies (in mm) (time)');
+				fielddisplay(self,'time','time in years');
+				fielddisplay(self,'pbo','local ocean-bottom pressure changes. Also have zero mean over the oceans (lat,lon,time)');
+				fielddisplay(self,'lat','latitudes');
+				fielddisplay(self,'long','longitudes');
+				fielddisplay(self,'scenario','scenarios');
+				fielddisplay(self,'model','model names');
+		end % }}}
+	end 
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/prjwrite.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/prjwrite.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/prjwrite.m	(revision 27955)
@@ -0,0 +1,13 @@
+function prjwrite(filename,proj)
+
+	[path,name,ext] = fileparts(filename);
+	projname=[path '/' name '.prj'];
+
+	projdir='/Users/larour/issm-jpl/proj-group/qgis/Proj/';
+	if strcmpi(proj,'EPSG:3031'),
+		copyfile([projdir '/3031.prj'],projname,'f');
+	elseif strcmpi(proj,'EPSG:3413'),
+		copyfile([projdir '/3413.prj'],projname,'f');
+	else 
+		error('not supported yet');
+	end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/proj2shpprj.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/proj2shpprj.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/proj2shpprj.m	(revision 27955)
@@ -0,0 +1,11 @@
+function proj2shpprj(filename,proj)
+
+	%filename: does it have an extension? remove it. 
+	[path,name,ext] = fileparts(filename);
+
+	%Figure out central meridian and latitude of origin: 
+	[lat,long]=projlatlong(proj);
+
+	fid=fopen([path '/' name '.prj'],'w');
+	fprintf(fid,'PROJCS["Lambert_Azimuthal_Equal_Area",GEOGCS["GCS_WGS_1984",DATUM["D_unknown",SPHEROID["WGS84",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Lambert_Azimuthal_Equal_Area"],PARAMETER["latitude_of_origin",%g],PARAMETER["central_meridian",%g],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter",1]]',lat,long);
+	fclose(fid);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/resultstomatrix.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/resultstomatrix.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/larour/resultstomatrix.m	(revision 27955)
@@ -0,0 +1,64 @@
+function matrix=resultstomatrix(md,resultname,field,varargin)
+%RESULTSTOMATRIX - go grab in the model results structure the vector results for each time step (which is not empty), 
+%                  and line them up in a matrix.  If time vector is provided, resample.
+%
+%   Usage:
+%      matrix=resultstomatrix(model,solutioname,fieldname)
+%
+%   Available options:
+%      - 'time'     : vector providing new time tags used to resample time
+%
+%   Example:
+%      vel=resultstomatrix(md,'TransientSolution','Vel');
+%      vel=resultstomatrix(md,'TransientSolution','Vel','time',2008:1/12:2014);
+%
+%   See also MODEL  resample
+
+
+	options=pairoptions(varargin{:});
+
+	results=md.results.(resultname);
+
+	%first, figure out the size: 
+	count=0;
+	nods=0;
+	for i=1:length(results),
+		if ~isempty(results(i).(field)),
+			count=count+1;
+			nods=size(results(i).(field),1);
+		end
+	end
+
+	if ~count, 
+		error(['could not find any result ' field ' in ' resultname]);
+	end
+
+	%initialize: 
+	matrix=zeros(nods+1,count);
+
+	%fill it up: 
+	count=0;
+	for i=1:length(results),
+		if ~isempty(results(i).(field)),
+			count=count+1;
+			matrix(1:end-1,count)=results(i).(field);
+			matrix(end,count)=results(i).time;
+		end
+	end
+
+	newtime=getfieldvalue(options,'time',[]);
+	if ~isempty(newtime),
+		newmatrix=zeros(nods+1,length(newtime));
+		newmatrix(end,:)=newtime;
+		%we are asked to reinterpolate to this new time: 
+
+		for i=1:nods,
+			warning off;
+			ts=timeseries(matrix(i,:), matrix(end,:));
+			ts=resample(ts,newtime);
+			warning on;
+			newmatrix(i,:)=ts.Data;
+		end
+
+		matrix=newmatrix;
+	end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/ad/rescalegradient.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/ad/rescalegradient.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/ad/rescalegradient.m	(revision 27955)
@@ -0,0 +1,53 @@
+function grad_out = rescalegradient(md,grad_in);
+%RESCALEGRADIENT - rescale gradient using mass matrix
+%
+%   Usage:
+%      grad_out = rescalegradient(md,grad_in);
+
+   %Define index
+	index = md.mesh.elements;
+
+	%Get surface areas of all elements
+	A = GetAreas(index,md.mesh.x,md.mesh.y);
+
+	%Preallocate to speed up computation
+	disp('Constructing mass matrix...');
+	tic
+	row   = zeros(10*md.mesh.numberofvertices,1);
+	col   = zeros(10*md.mesh.numberofvertices,1);
+	value = zeros(10*md.mesh.numberofvertices,1);
+
+	%Construct mass matrix using MATLAB's sparse function
+	count = 0;
+	for n=1:md.mesh.numberofelements
+		for l=1:3
+			for k=1:3
+				count=count+1;
+				row(count) = index(n,k);
+				col(count) = index(n,l);
+				if l == k
+					value(count) = A(n)/6.;  % \int_E phi_i * phi_i dE = A/6
+				else
+					value(count) = A(n)/12.; % \int_E phi_i * phi_i dE = A/12
+				end 
+			end
+		end
+	end
+
+	%Delete unused elements
+	row = row(1:count);
+	col = col(1:count);
+	value = value(1:count);
+
+	%Make mass matrix
+	M=sparse(row,col,value);
+	toc
+
+	tic
+	disp('Solving...');
+	grad_out = M\grad_in;
+	toc
+
+	disp('Adjusting output');
+	pos = find(grad_in==0);
+	grad_out(pos)==0;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/BamgCall.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/BamgCall.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/BamgCall.m	(revision 27955)
@@ -0,0 +1,79 @@
+function md=BamgCall(md,field,hmin,hmax,gradation,epsilon),
+%BAMGCALL - call bam
+%
+%   build a metric using the Hessian of the given field
+%   call Bamg and the output mesh is plugged onto the model
+%   -hmin = minimum edge length (m)
+%   -hmax = maximum edge length (m)
+%   -gradation = maximum edge length gradation between 2 elements
+%   -epsilon = average error on each element (m/yr)
+%
+%   Usage:
+%      md=BamgCall(md,field,hmin,hmax,gradation,epsilon);
+%
+%   Example:
+%      md=BamgCall(md,md.inversion.vel_obs,1500,10^8,1.3,0.9);
+
+%2d geometric parameter (do not change)
+scale=2/9; 
+
+%Compute Hessian
+t1=clock; fprintf('%s','      computing Hessian...');
+hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,field,'node');
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%Compute metric
+t1=clock; fprintf('%s','      computing metric...');
+metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,[]);
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%write files
+t1=clock; fprintf('%s','      writing initial mesh files...');
+fid=fopen('carre0.met','w');
+fprintf(fid,'%i %i\n',md.mesh.numberofvertices,3);
+fprintf(fid,'%i %i %i\n',metric');
+fclose(fid);
+
+fid=fopen('carre0.mesh','w');
+
+%initialiation
+fprintf(fid,'%s %i\n','MeshVersionFormatted',0);
+
+%dimension
+fprintf(fid,'\n%s\n%i\n','Dimension',2);
+
+%Vertices
+fprintf(fid,'\n%s\n%i\n\n','Vertices',md.mesh.numberofvertices);
+fprintf(fid,'%8g %8g %i\n',[md.mesh.x md.mesh.y ones(md.mesh.numberofvertices,1)]');
+
+%Triangles
+fprintf(fid,'\n\n%s\n%i\n\n','Triangles',md.mesh.numberofelements);
+fprintf(fid,'%i %i %i %i\n',[md.mesh.elements ones(md.mesh.numberofelements,1)]');
+numberofelements1=md.mesh.numberofelements;
+
+%close
+fclose(fid);
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%call bamg
+fprintf('%s\n','      call Bamg...');
+system(['bamg -ratio ' num2str(gradation) ' -splitpbedge -nbv 1000000 -M carre0.met -b carre0.mesh -o carre1.mesh']);
+
+%plug new mesh
+t1=clock; fprintf('\n%s','      reading final mesh files...');
+A=meshread('carre1.mesh');
+md.mesh.x=A.x;
+md.mesh.y=A.y;
+md.z=zeros(A.nods,1);
+md.mesh.elements=A.index;
+md.mesh.numberofvertices=A.nods;
+md.mesh.numberofelements=A.nels;
+numberofelements2=md.mesh.numberofelements;
+t2=clock;fprintf('%s\n\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%display number of elements
+fprintf('\n%s %i','      inital number of elements:',numberofelements1);
+fprintf('\n%s %i\n\n','      new    number of elements:',numberofelements2);
+
+%clean up:
+system('rm carre0.mesh carre0.met carre1.mesh carre1.mesh.gmsh');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/BamgCallFromMetric.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/BamgCallFromMetric.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/BamgCallFromMetric.m	(revision 27955)
@@ -0,0 +1,65 @@
+function md=BamgCallFromMetric(md,metric,gradation),
+%BAMGCALL - call bam
+%
+%   call Bamg and the output mesh is plugged onto the model
+%   -gradation = maximum edge length gradation between 2 elements
+%
+%   Usage:
+%      md=BamgCallFromMetric(md,metric,gradation);
+%
+%   Example:
+%      md=BamgCall(md,metric,1500,10^8,1.3,0.9);
+
+%2d geometric parameter (do not change)
+scale=2/9; 
+
+%write files
+t1=clock; fprintf('%s','      writing initial mesh files...');
+fid=fopen('carre0.met','w');
+fprintf(fid,'%i %i\n',md.mesh.numberofvertices,3);
+fprintf(fid,'%i %i %i\n',metric');
+fclose(fid);
+
+fid=fopen('carre0.mesh','w');
+
+%initialiation
+fprintf(fid,'%s %i\n','MeshVersionFormatted',0);
+
+%dimension
+fprintf(fid,'\n%s\n%i\n','Dimension',2);
+
+%Vertices
+fprintf(fid,'\n%s\n%i\n\n','Vertices',md.mesh.numberofvertices);
+fprintf(fid,'%8g %8g %i\n',[md.mesh.x md.mesh.y ones(md.mesh.numberofvertices,1)]');
+
+%Triangles
+fprintf(fid,'\n\n%s\n%i\n\n','Triangles',md.mesh.numberofelements);
+fprintf(fid,'%i %i %i %i\n',[md.mesh.elements ones(md.mesh.numberofelements,1)]');
+numberofelements1=md.mesh.numberofelements;
+
+%close
+fclose(fid);
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%call bamg
+fprintf('%s\n','      call Bamg...');
+system(['bamg -ratio ' num2str(gradation) ' -splitpbedge -nbv 1000000 -M carre0.met -b carre0.mesh -o carre1.mesh']);
+
+%plug new mesh
+t1=clock; fprintf('\n%s','      reading final mesh files...');
+A=meshread('carre1.mesh');
+md.mesh.x=A.x;
+md.mesh.y=A.y;
+md.z=zeros(A.nods,1);
+md.mesh.elements=A.index;
+md.mesh.numberofvertices=A.nods;
+md.mesh.numberofelements=A.nels;
+numberofelements2=md.mesh.numberofelements;
+t2=clock;fprintf('%s\n\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%display number of elements
+fprintf('\n%s %i','      inital number of elements:',numberofelements1);
+fprintf('\n%s %i\n\n','      new    number of elements:',numberofelements2);
+
+%clean up:
+system('rm carre0.mesh carre0.met carre1.mesh carre1.mesh.gmsh');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/YamsCall.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/YamsCall.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/YamsCall.m	(revision 27955)
@@ -0,0 +1,98 @@
+function md=YamsCall(md,field,hmin,hmax,gradation,epsilon),
+%YAMSCALL - call yams
+%
+%   build a metric using the Hessian of the given field
+%   call Yams and the output mesh is plugged onto the model
+%   -hmin = minimum edge length (m)
+%   -hmax = maximum edge length (m)
+%   -gradation = maximum edge length gradation between 2 elements
+%   -epsilon = average error on each element (m/yr)
+%
+%   Usage:
+%      md=YamsCall(md,field,hmin,hmax,gradation,epsilon);
+%
+%   Example:
+%      md=YamsCall(md,md.inversion.vel_obs,1500,10^8,1.3,0.9);
+
+%2d geometric parameter (do not change)
+scale=2./9.;
+
+%Compute Hessian
+t1=clock; fprintf('%s','      computing Hessian...');
+hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,field,'node');
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%Compute metric
+t1=clock; fprintf('%s','      computing metric...');
+metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,[]);
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%write files
+t1=clock; fprintf('%s','      writing initial mesh files...');
+save -ascii carre0.met  metric
+
+fid=fopen('carre0.mesh','w');
+
+%initialiation
+fprintf(fid,'\n%s\n%i\n','MeshVersionFormatted',1);
+
+%dimension
+fprintf(fid,'\n%s\n%i\n','Dimension',2);
+
+%Vertices
+fprintf(fid,'\n%s\n%i\n\n','Vertices',md.mesh.numberofvertices);
+fprintf(fid,'%8g %8g %i\n',[md.mesh.x md.mesh.y zeros(md.mesh.numberofvertices,1)]');
+
+%Triangles
+fprintf(fid,'\n\n%s\n%i\n\n','Triangles',md.mesh.numberofelements);
+fprintf(fid,'%i %i %i %i\n',[md.mesh.elements zeros(md.mesh.numberofelements,1)]');
+numberofelements1=md.mesh.numberofelements;
+
+%Deal with rifts
+if ~isnan(md.rifts.riftstruct),
+
+	%we have the list of triangles that make up the rift. keep those triangles around during refinement.
+	triangles=[];
+	for i=1:size(md.rifts.riftstruct,1),
+		triangles=[triangles md.rifts(i).riftstruct.segments(:,3)'];
+	end
+
+	fprintf(fid,'\n\n%s\n%i\n\n','RequiredTriangles',length(triangles));
+	fprintf(fid,'%i\n',triangles);
+end
+
+%close
+fclose(fid);
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%call yams
+fprintf('%s\n','      call Yams...');
+if ispc()
+	%windows
+	system(['yams2-win -O 1 -v -0 -ecp -hgrad ' num2str(gradation)  ' carre0 carre1']);
+elseif ismac()
+	%Macosx
+	system(['yams2-osx -O 1 -v -0 -ecp -hgrad ' num2str(gradation)  ' carre0 carre1']);
+else
+	%Linux
+	system(['yams2-linux -O 1 -v -0 -ecp -hgrad ' num2str(gradation)  ' carre0 carre1']);
+end
+
+%plug new mesh
+t1=clock; fprintf('\n%s','      reading final mesh files...');
+Tria=load('carre1.tria');
+Coor=load('carre1.coor');
+md.mesh.x=Coor(:,1);
+md.mesh.y=Coor(:,2);
+md.mesh.elements=Tria;
+md.mesh.numberofvertices=size(Coor,1);
+md.mesh.numberofelements=size(Tria,1);
+numberofelements2=md.mesh.numberofelements;
+t2=clock;fprintf('%s\n\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%display number of elements
+fprintf('\n%s %i','      inital number of elements:',numberofelements1);
+fprintf('\n%s %i\n\n','      new    number of elements:',numberofelements2);
+
+%clean up:
+system('rm carre0.mesh carre0.met carre1.tria carre1.coor carre1.meshb');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/YamsCall.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/YamsCall.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/YamsCall.py	(revision 27955)
@@ -0,0 +1,124 @@
+import numpy as np
+import MatlabFuncs as m
+import time
+import subprocess
+import os
+from ComputeHessian import ComputeHessian
+from ComputeMetric import ComputeMetric
+
+
+def YamsCall(md, field, hmin, hmax, gradation, epsilon):
+    """
+    YAMSCALL - call yams
+
+       build a metric using the Hessian of the given field
+       call Yams and the output mesh is plugged onto the model
+     - hmin = minimum edge length (m)
+     - hmax = maximum edge length (m)
+     - gradation = maximum edge length gradation between 2 elements
+     - epsilon = average error on each element (m / yr)
+
+       Usage:
+          md = YamsCall(md, field, hmin, hmax, gradation, epsilon)
+
+       Example:
+          md = YamsCall(md, md.inversion.vel_obs, 1500, 1.0e8, 1.3, 0.9)
+    """
+
+    #2d geometric parameter (do not change)
+    scale = 2. / 9.
+
+    #Compute Hessian
+    t1 = time.time()
+    print(("%s" % '      computing Hessian...'))
+    hessian = ComputeHessian(md.mesh.elements, md.mesh.x, md.mesh.y, field, 'node')
+    t2 = time.time()
+    print(("%s%d%s\n" % (' done (', t2 - t1, ' seconds)')))
+
+    #Compute metric
+    t1 = time.time()
+    print(("%s" % '      computing metric...'))
+    metric = ComputeMetric(hessian, scale, epsilon, hmin, hmax, np.empty(0, int))
+    t2 = time.time()
+    print(("%s%d%s\n" % (' done (', t2 - t1, ' seconds)')))
+
+    #write files
+    t1 = time.time()
+    print(("%s" % '      writing initial mesh files...'))
+    np.savetxt('carre0.met', metric)
+
+    f = open('carre0.mesh', 'w')
+
+    #initialiation
+    f.write("\n%s\n%i\n" % ('MeshVersionFormatted', 1))
+
+    #dimension
+    f.write("\n%s\n%i\n" % ('Dimension', 2))
+
+    #Vertices
+    f.write("\n%s\n%i\n\n" % ('Vertices', md.mesh.numberofvertices))
+    for i in range(0, md.mesh.numberofvertices):
+        f.write("%8g %8g %i\n" % (md.mesh.x[i], md.mesh.y[i], 0))
+
+    #Triangles
+    f.write("\n\n%s\n%i\n\n" % ('Triangles', md.mesh.numberofelements))
+    for i in range(0, md.mesh.numberofelements):
+        f.write("%i %i %i %i\n" % (md.mesh.elements[i, 0], md.mesh.elements[i, 1], md.mesh.elements[i, 2], 0))
+    numberofelements1 = md.mesh.numberofelements
+
+    #Deal with rifts
+    if np.any(not np.isnan(md.rifts.riftstruct)):
+
+        #we have the list of triangles that make up the rift. keep those triangles around during refinement.
+        triangles = np.empty(0, int)
+        for riftstruct in md.rifts.riftstruct:
+            triangles = np.concatenate((triangles, riftstruct.segments[:, 2]))
+
+        f.write("\n\n%s\n%i\n\n" % ('RequiredTriangles', np.size(triangles)))
+        for triangle in triangles:
+            f.write("%i\n" % triangle)
+
+    #close
+    f.close()
+    t2 = time.time()
+    print(("%s%d%s\n" % (' done (', t2 - t1, ' seconds)')))
+
+    #call yams
+    print(("%s\n" % '      call Yams...'))
+    if m.ispc():
+        #windows
+        subprocess.call('yams2 - win - O 1 - v - 0 - ecp - hgrad %g carre0 carre1' % gradation, shell=True)
+    elif m.ismac():
+        #Macosx
+        subprocess.call('yams2 - osx - O 1 - v - 0 - ecp - hgrad %g carre0 carre1' % gradation, shell=True)
+    else:
+        #Linux
+        subprocess.call('yams2 - linux - O 1 - v - 0 - ecp - hgrad %g carre0 carre1' % gradation, shell=True)
+
+    #plug new mesh
+    t1 = time.time()
+    print(("\n%s" % '      reading final mesh files...'))
+    Tria = np.loadtxt('carre1.tria', int)
+    Coor = np.loadtxt('carre1.coor', float)
+    md.mesh.x = Coor[:, 0]
+    md.mesh.y = Coor[:, 1]
+    md.mesh.z = np.zeros((np.size(Coor, axis=0), 1))
+    md.mesh.elements = Tria
+    md.mesh.numberofvertices = np.size(Coor, axis=0)
+    md.mesh.numberofelements = np.size(Tria, axis=0)
+    numberofelements2 = md.mesh.numberofelements
+    t2 = time.time()
+    print(("%s%d%s\n\n" % (' done (', t2 - t1, ' seconds)')))
+
+    #display number of elements
+    print(("\n%s %i" % ('      inital number of elements:', numberofelements1)))
+    print(("\n%s %i\n\n" % ('      new    number of elements:', numberofelements2)))
+
+    #clean up:
+    os.remove('carre0.mesh')
+    os.remove('carre0.met')
+    os.remove('carre1.tria')
+    os.remove('carre1.coor')
+    os.remove('carre1.meshb')
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/gmsh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/gmsh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/gmsh.m	(revision 27955)
@@ -0,0 +1,48 @@
+function md=gmsh(md,domainfile,h),
+
+%Read domain
+domain=expread(domainfile);
+x   = domain.x(1:end-1);
+y   = domain.y(1:end-1);
+nbv = numel(x);
+
+%write files
+t1=clock; fprintf('%s','      writing initial mesh files...');
+fid=fopen('model.geo','w');
+fprintf(fid,['// Gmsh input file, created by ISSM on ' date '\n']);
+for i=1:nbv,
+	fprintf(fid,'Point(%i) = {%8g, %8g, %8g};\n',i,x(i),y(i),0.);
+end
+for i=1:nbv-1
+	fprintf(fid,'Line(%i) = {%i, %i};\n',i,i,i+1);
+end
+fprintf(fid,'Line(%i) = {%i, %i};\n',nbv,nbv,1);
+fprintf(fid,'Line Loop(5) = {');
+for i=1:nbv-1
+	fprintf(fid,'%i,',i);
+end
+fprintf(fid,'%i};\n',nbv);
+fprintf(fid,'Plane Surface(6) = {5};\n');
+
+%Physical lines and surfaces
+fprintf(fid,'Physical Line(2) = {1};\n');
+fprintf(fid,'Physical Line(4) = {2};\n');
+fprintf(fid,'Physical Line(5) = {3};\n');
+fprintf(fid,'Physical Line(1) = {4};\n');
+fprintf(fid,'Physical Surface(7) = {6};\n');
+
+%resolution
+fprintf(fid,'Mesh.CharacteristicLengthMax = %g;',h);
+
+%fprintf(fid,'Plane Surface(7) = {6, 2};\n');
+fclose(fid);
+
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%call gmsh
+fprintf('%s\n','      call gmsh...');
+system([issmdir() '/externalpackages/gmsh/install/gmsh -2 model.geo']);
+
+%plug new mesh
+t1=clock; fprintf('\n%s','      reading final mesh files...');
+md=importgmsh('model.msh',2);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/gmsh3d.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/gmsh3d.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/gmsh3d.m	(revision 27955)
@@ -0,0 +1,103 @@
+function md=gmsh3d(md,domainfile,h),
+
+%Read domain
+domain=expread(domainfile);
+x   = domain.x(1:end-1);
+y   = domain.y(1:end-1);
+nbv = numel(x);
+
+%write files
+t1=clock; fprintf('%s','      writing initial mesh files...');
+fid=fopen('model.geo','w');
+fprintf(fid,['// Gmsh input file, created by ISSM on ' date '\n']);
+
+%Lower points
+for i=1:nbv,
+	fprintf(fid,'Point(%i) = {%8g, %8g, %8g};\n',i,x(i),y(i),0.);
+end
+%Upper points
+for i=1:nbv,
+	fprintf(fid,'Point(%i) = {%8g, %8g, %8g};\n',nbv+i,x(i),y(i),1.);
+end
+
+%Lower lines
+for i=1:nbv-1
+	fprintf(fid,'Line(%i) = {%i, %i};\n',i,i,i+1);
+end
+fprintf(fid,'Line(%i) = {%i, %i};\n',nbv,nbv,1);
+%Upper lines
+for i=nbv+1:2*nbv-1
+	fprintf(fid,'Line(%i) = {%i, %i};\n',i,i,i+1);
+end
+fprintf(fid,'Line(%i) = {%i, %i};\n',2*nbv,2*nbv,nbv+1);
+%Side lines
+for i=1:nbv
+	fprintf(fid,'Line(%i) = {%i, %i};\n',2*nbv+i,i,nbv+i);
+end
+
+counter = 3*nbv;
+ps = zeros(nbv+2,1);
+%Lower surface Loop and surface
+counter = counter+1;
+fprintf(fid,['Line Loop(' num2str(counter) ') = {']);
+for i=1:nbv-1
+	fprintf(fid,'%i,',i);
+end
+fprintf(fid,'%i};\n',nbv);
+fprintf(fid,['Plane Surface(' num2str(counter+1) ') = {' num2str(counter) '};\n']);
+ps(1)=counter+1;
+counter = counter+1;
+%Upper surface Loop and surface
+counter = counter+1;
+fprintf(fid,['Line Loop(' num2str(counter) ') = {']);
+for i=nbv+1:2*nbv-1
+	fprintf(fid,'%i,',i);
+end
+fprintf(fid,'%i};\n',2*nbv);
+ps(2)=counter+1;
+fprintf(fid,['Plane Surface(' num2str(counter+1) ') = {' num2str(counter) '};\n']);
+counter = counter+2;
+%Sides surfaces
+for i=1:nbv-1,
+	fprintf(fid,['Line Loop(' num2str(counter) ') = {' num2str(i) ',' num2str(2*nbv+i+1) ',-' num2str(nbv+i) ',-' num2str(2*nbv+i) '};\n']);
+	fprintf(fid,['Plane Surface(' num2str(counter+1) ') = {' num2str(counter) '};\n']);
+	ps(2+i)=counter+1;
+	counter=counter+2;
+end
+fprintf(fid,['Line Loop(' num2str(counter) ') = {' num2str(nbv) ',' num2str(2*nbv+1) ',-' num2str(2*nbv) ',-' num2str(3*nbv) '};\n']);
+fprintf(fid,['Plane Surface(' num2str(counter+1) ') = {' num2str(counter) '};\n']);
+ps(2+nbv)=counter+1;
+counter=counter+2;
+
+%Physical surfaces
+counter = counter+1;
+fprintf(fid,['Surface Loop(' num2str(counter) ') = {']);
+for i=1:numel(ps)-1
+	fprintf(fid,'%i,',ps(i));
+end
+fprintf(fid,'%i};\n',ps(end));
+fprintf(fid,['Physical Surface(1) = {' num2str(ps(2)) '};\n']);
+fprintf(fid,['Physical Surface(2) = {' num2str(ps(1)) '};\n']);
+fprintf(fid,['Physical Surface(3) = {']);
+for i=3:numel(ps)-1
+	fprintf(fid,'%i,',ps(i));
+end
+fprintf(fid,'%i};\n',ps(end));
+
+%Volume
+fprintf(fid,['Volume(1) = {' num2str(counter) '};\n']);
+fprintf(fid,['Physical Volume(2) = {1};\n']);
+
+%resolution
+fprintf(fid,'Mesh.CharacteristicLengthMax = %g;',h);
+fclose(fid);
+
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%call gmsh
+fprintf('%s\n','      call gmsh...');
+system([issmdir() '/externalpackages/gmsh/install/gmsh -3 -v 0 model.geo']);
+
+%plug new mesh
+t1=clock; fprintf('\n%s','      reading final mesh files...');
+md=importgmsh('model.msh',3);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/meshread.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/meshread.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/meshread.m	(revision 27955)
@@ -0,0 +1,41 @@
+function Struct=meshread(filename)
+
+%some checks
+if ~exist(filename),
+	error(['meshread error message: file ' filename ' not found!']);
+end
+
+fid=fopen(filename,'r');
+
+while (~feof(fid)),
+
+	A=fscanf(fid,'%s',1);
+
+	if strcmp(A,'MeshVersionFormatted');
+		Struct.Version=fscanf(fid,'%s',1);
+
+	elseif strcmp(A,'Dimension'),
+		Struct.Dimension=fscanf(fid,'%i',1);
+
+	elseif strcmp(A,'Vertices'),
+		Struct.nods=fscanf(fid,'%i',1);
+		A=fscanf(fid,'%f %f %f',[3 Struct.nods]);
+		Struct.x=A(1,:)';
+		Struct.y=A(2,:)';
+
+	elseif strcmp(A,'Triangles'),
+		Struct.nels=fscanf(fid,'%i',1);
+		A=fscanf(fid,'%i %i %i',[4 Struct.nels]);
+		Struct.index=A(1:3,:)';
+
+	elseif strcmp(A,'Quadrilaterals'),
+		Struct.nels=fscanf(fid,'%i',1);
+		A=fscanf(fid,'%i %i %i %i',[5 Struct.nels]);
+		Struct.index=A(1:4,:)';
+	else
+		%do nothing
+
+	end
+end
+
+fclose(fid);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/yams.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/yams.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/bamg/yams.m	(revision 27955)
@@ -0,0 +1,153 @@
+function md=yams(md,varargin)
+%MESHYAMS - Build model of Antarctica by refining according to observed velocity error estimator
+%
+%   Usage:
+%      md=yams(md,varargin);
+%      where varargin is a lit of paired arguments. 
+%      arguments can be: 'domainoutline': Argus file containing the outline of the domain to be meshed
+%      arguments can be: 'velocities': matlab file containing the velocities [m/yr]
+%      optional arguments: 'groundeddomain': Argus file containing the outline of the grounded ice
+%                          this option is used to minimize the metric on water (no refinement)
+%      optional arguments: 'resolution': initial mesh resolution [m]
+%      optional arguments: 'nsteps': number of steps of mesh adaptation
+%      optional arguments: 'epsilon': average interpolation error wished [m/yr]
+%      optional arguments: 'hmin': minimum edge length
+%      optional arguments: 'hmanx': maximum edge
+%      optional arguments: 'riftoutline': if rifts are present, specifies rift outline file.
+%      
+%
+%   Examples:
+%      md=yams(md,'domainoutline','Domain.exp','velocities','vel.mat');
+%      md=yams(md,'domainoutline','Domain.exp','velocities','vel.mat','groundeddomain','ground.exp');
+%      md=yams(md,'domainoutline','Domain.exp','velocities','vel.mat','groundeddomain','ground.exp','nsteps',6,'epsilon',2,'hmin',500,'hmax',30000);
+
+%recover options
+options=pairoptions(varargin{:});
+options=deleteduplicates(options,1);
+
+%recover some fields
+disp('MeshYams Options:')
+domainoutline=getfieldvalue(options,'domainoutline');
+disp(sprintf('   %-15s: ''%s''','DomainOutline',domainoutline));
+riftoutline=getfieldvalue(options,'riftoutline','N/A');
+disp(sprintf('   %-15s: ''%s''','riftoutline',riftoutline));
+groundeddomain=getfieldvalue(options,'groundeddomain','N/A');
+disp(sprintf('   %-15s: ''%s''','GroundedDomain',groundeddomain));
+velocities=getfieldvalue(options,'velocities');
+disp(sprintf('   %-15s: ''%s''','Velocities',velocities));
+resolution=getfieldvalue(options,'resolution',5000);
+disp(sprintf('   %-15s: %f','Resolution',resolution));
+nsteps=getfieldvalue(options,'nsteps',6);
+disp(sprintf('   %-15s: %i','nsteps',nsteps));
+gradation=getfieldvalue(options,'gradation',2*ones(nsteps,1));
+disp(sprintf('   %-15s: %g','gradation',gradation(1)));
+epsilon=getfieldvalue(options,'epsilon',3);
+disp(sprintf('   %-15s: %f','epsilon',epsilon));
+hmin=getfieldvalue(options,'hmin',500);
+disp(sprintf('   %-15s: %f','hmin',hmin));
+hmax=getfieldvalue(options,'hmax',150*10^3);
+disp(sprintf('   %-15s: %f\n','hmax',hmax));
+
+%mesh with initial resolution
+disp('Initial mesh generation...');
+if strcmpi(riftoutline,'N/A');
+	md=setmesh(md,domainoutline,resolution);
+else
+	md=setmesh(md,domainoutline,riftoutline,resolution);
+	md=meshprocessrifts(md,domainoutline);
+end
+disp(['Initial mesh, number of elements: ' num2str(md.mesh.numberofelements)]);
+
+%load velocities 
+disp('loading velocities...');
+Names=VelFindVarNames(velocities);
+Vel=load(velocities);
+
+%start mesh adaptation
+for i=1:nsteps,
+	disp(['Iteration #' num2str(i) '/' num2str(nsteps)]);
+
+	%interpolate velocities onto mesh
+	disp('   interpolating velocities...');
+	if strcmpi(Names.interp,'node'),
+		vx_obs=InterpFromGridToMesh(Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vxname),md.mesh.x,md.mesh.y,0);
+		vy_obs=InterpFromGridToMesh(Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vyname),md.mesh.x,md.mesh.y,0);
+	else
+		vx_obs=InterpFromMeshToMesh2d(Vel.(Names.indexname),Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vxname),md.mesh.x,md.mesh.y,0);
+		vy_obs=InterpFromMeshToMesh2d(Vel.(Names.indexname),Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vyname),md.mesh.x,md.mesh.y,0);
+	end
+	field=sqrt(vx_obs.^2+vy_obs.^2);
+
+	%adapt according to velocities
+	disp('   adapting...');
+	md=YamsCall(md,field,hmin,hmax,gradation(i),epsilon);
+
+	%if we have rifts, we just messed them up, we need to recreate the segments that constitute those 
+	%rifts, because the segments are used in YamsCall to freeze the rifts elements during refinement.
+	if md.rifts.numrifts, 
+		md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+		md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+		md.mesh.segments=findsegments(md);
+		md=yamsrecreateriftsegments(md);
+	end
+
+end
+
+disp(['Final mesh, number of elements: ' num2str(md.mesh.numberofelements)]);
+
+%Now, build the connectivity tables for this mesh.
+md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+
+%recreate segments
+md.mesh.segments=findsegments(md);
+md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+
+%Fill in rest of fields:
+md.mesh.z=zeros(md.mesh.numberofvertices,1);
+md.mesh.vertexonbase=ones(md.mesh.numberofvertices,1);
+md.mesh.vertexonsurface=ones(md.mesh.numberofvertices,1);
+if strcmpi(Names.interp,'node'),
+	md.inversion.vx_obs=InterpFromGridToMesh(Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vxname),md.mesh.x,md.mesh.y,0);
+	md.inversion.vy_obs=InterpFromGridToMesh(Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vyname),md.mesh.x,md.mesh.y,0);
+else
+	md.inversion.vx_obs=InterpFromMeshToMesh2d(Vel.(Names.indexname),Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vxname),md.mesh.x,md.mesh.y,0);
+	md.inversion.vy_obs=InterpFromMeshToMesh2d(Vel.(Names.indexname),Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vyname),md.mesh.x,md.mesh.y,0);
+end
+md.inversion.vel_obs=sqrt(md.inversion.vx_obs.^2+md.inversion.vy_obs.^2);
+
+%deal with rifts 
+if md.rifts.numrifts,
+	%first, recreate rift segments
+	md=meshyamsrecreateriftsegments(md);
+
+	%using the segments, recreate the penaltypairs
+	for j=1:md.rifts.numrifts,
+		rift=md.rifts.riftstruct(j);
+
+		%build normals and lengths of segments:
+		lengths=sqrt((md.mesh.x(rift.segments(:,1))-md.mesh.x(rift.segments(:,2))).^2 + (md.mesh.y(rift.segments(:,1))-md.mesh.y(rift.segments(:,2))).^2 );
+		normalsx=cos(atan2((md.mesh.x(rift.segments(:,1))-md.mesh.x(rift.segments(:,2))) , (md.mesh.y(rift.segments(:,2))-md.mesh.y(rift.segments(:,1)))));
+		normalsy=sin(atan2((md.mesh.x(rift.segments(:,1))-md.mesh.x(rift.segments(:,2))) , (md.mesh.y(rift.segments(:,2))-md.mesh.y(rift.segments(:,1)))));
+
+		%ok, build penaltypairs: 
+		numpenaltypairs=length(rift.segments)/2-1;
+		rift.penaltypairs=zeros(numpenaltypairs,7);
+
+		for i=1:numpenaltypairs,
+			rift.penaltypairs(i,1)=rift.segments(i,2);
+			rift.penaltypairs(i,2)=rift.segments(end-i,2);
+			rift.penaltypairs(i,3)=rift.segments(i,3);
+			rift.penaltypairs(i,4)=rift.segments(end-i,3);
+			rift.penaltypairs(i,5)=normalsx(i)+normalsx(i+1);
+			rift.penaltypairs(i,6)=normalsy(i)+normalsy(i+1);
+			rift.penaltypairs(i,7)=(lengths(i)+lengths(i+1))/2;
+		end
+		%renormalize norms: 
+		norms=sqrt(rift.penaltypairs(:,5).^2+rift.penaltypairs(:,6).^2);
+		rift.penaltypairs(:,5)=rift.penaltypairs(:,5)./norms;
+		rift.penaltypairs(:,6)=rift.penaltypairs(:,6)./norms;
+
+		md.rifts.riftstruct(j)=rift;
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/dassflow/exportgmsh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/dassflow/exportgmsh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/dassflow/exportgmsh.m	(revision 27955)
@@ -0,0 +1,52 @@
+function exportgmsh(mesh,ocean_levelset,filename),
+%EXPORTGMSH - export mesh to gmsh format
+%
+%   http://www.geuz.org/gmsh/doc/texinfo/#MSH-ASCII-file-format
+%
+%   Usage:
+%      exportgmsh(mesh,ocean_levelset,filename)
+%
+%   Example:
+%      exportgmsh(md.mesh,md.mask.ocean_levelset,'temp.msh')
+
+fid=fopen(filename,'w');
+
+%Header
+fprintf(fid,'$MeshFormat\n');
+fprintf(fid,'2.2 0 8\n');
+fprintf(fid,'$EndMeshFormat\n');
+
+%Vertices
+nbv = mesh.numberofvertices;
+fprintf(fid,'$Nodes\n');
+fprintf(fid,'%i\n',nbv);
+fprintf(fid,'%i %8g %8g %8g\n',[[1:nbv]' mesh.x mesh.y zeros(nbv,1)]');
+fprintf(fid,'$EndNodes\n');
+
+%Boundary Elements first
+nbe     = mesh.numberofelements;
+nbs     = size(mesh.segments,1);
+segment = 1;
+tria    = 2;
+
+%Create flags
+grounded = sum(ocean_levelset(mesh.segments(:,1:2))>0,2);
+A = zeros(nbs,2);
+pos = find(mesh.segmentmarkers==4);
+A(pos,:)=repmat([1,4],[numel(pos) 1]);
+pos = find(mesh.segmentmarkers==1 &  grounded);
+A(pos,:)=repmat([2,1],[numel(pos) 1]);
+pos = find(mesh.segmentmarkers==1 & ~grounded);
+A(pos,:)=repmat([3,5],[numel(pos) 1]);
+pos = find(mesh.segmentmarkers==2);
+A(pos,:)=repmat([4,2],[numel(pos) 1]);
+pos = find(mesh.segmentmarkers==3);
+A(pos,:)=repmat([5,3],[numel(pos) 1]);
+
+fprintf(fid,'$Elements\n');
+fprintf(fid,'%i\n',nbe+nbs);
+fprintf(fid,'%i %i %i %i %i %i %i\n',[[1    :nbs    ]' segment*ones(nbs,1) 2*ones(nbs,1) A mesh.segments(:,1:2)]');
+fprintf(fid,'%i %i %i %i %i %i %i %i\n',[[nbs+1:nbs+nbe]' tria*ones(nbe,1) 2*ones(nbe,1) 7*ones(nbe,1) 6*ones(nbe,1) mesh.elements]');
+fprintf(fid,'$EndElements\n');
+
+fclose(fid);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/dassflow/importgmsh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/dassflow/importgmsh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/dassflow/importgmsh.m	(revision 27955)
@@ -0,0 +1,155 @@
+function md = importgmsh(filename,dim)
+
+%some checks
+if ~exist(filename),
+	error(['expread error message: file ' filename ' not found!']);
+end
+
+%open file
+fid=fopen(filename,'r');
+
+%Get Mesh format
+A=fscanf(fid,'%s',1);
+if ~strcmp(A,'$MeshFormat'), 
+	error(['Expecting $MeshFormat (' A ')']);
+end
+A=fscanf(fid,'%f %i %i',[1 3]);
+A=fscanf(fid,'%s',1);
+if ~strcmp(A,'$EndMeshFormat'), 
+	error(['Expecting $EndMeshFormat (' A ')']);
+end
+
+%Nodes
+A=fscanf(fid,'%s',1);
+if ~strcmp(A,'$Nodes'), 
+	error(['Expecting $Nodes (' A ')']);
+end
+nbv=fscanf(fid,'%i',1);
+disp(['Number of nodes: ' num2str(nbv) ]);
+A=fscanf(fid,'%i %f %f %f',[4 nbv]);
+x = A(2,:)';
+y = A(3,:)';
+z = A(4,:)';
+
+A=fscanf(fid,'%s',1);
+if ~strcmp(A,'$EndNodes'), 
+	error(['Expecting $EndNodes (' A ')']);
+end
+
+%Elements
+A=fscanf(fid,'%s',1);
+if ~strcmp(A,'$Elements'), 
+	error(['Expecting $Elements (' A ')']);
+end
+nbt=fscanf(fid,'%i',1);
+disp(['Number of elements: ' num2str(nbt) ]);
+counter = 0;
+if (dim==2),
+	index   = zeros(0,3);
+	segments       = zeros(0,2);
+	segmentmarkers = zeros(0,1);
+elseif (dim==3),
+	index   = zeros(0,4);
+	segments       = zeros(0,3);
+	segmentmarkers = zeros(0,1);
+else
+	error('not supported');
+end
+
+while(counter<nbt);
+	id = fscanf(fid,'%i',1);
+	ty = fscanf(fid,'%i',1);
+	nbf = fscanf(fid,'%i',1);
+	flags = fscanf(fid,'%i',nbf);
+
+	switch(ty)
+		case 1, %segments
+			A=fscanf(fid,'%i %i',2);
+			if (dim==2),  %Actual element
+				segments(end+1,:)=A;
+				if    (flags(1)==5 & flags(2)==3), segmentmarkers(end+1)=3; 
+				elseif(flags(1)==1 & flags(2)==4), segmentmarkers(end+1)=4;
+				elseif(flags(1)==2 & flags(2)==1), segmentmarkers(end+1)=1;
+				elseif(flags(1)==4 & flags(2)==2), segmentmarkers(end+1)=2;
+				else error(['flags ' num2str(flags') ' not supported']);
+				end
+			else
+				error('not supported');
+			end
+		case 2, %tria
+			A=fscanf(fid,'%i %i %i',3);
+			if (dim==2), %Actual element
+				index(end+1,:)=A;
+			else         %Boundary element
+				segments(end+1,:)=A;
+				if    (flags(1)==1), segmentmarkers(end+1)=1; 
+				elseif(flags(1)==2), segmentmarkers(end+1)=2;
+				elseif(flags(1)==3), segmentmarkers(end+1)=3;
+				elseif(flags(1)==4), segmentmarkers(end+1)=4;
+				else error(['flags ' num2str(flags') ' not supported']);
+				end
+			end
+		case 4, %tetra
+			A=fscanf(fid,'%i %i %i %i',4);
+			if (dim==3), %Actual element
+				index(end+1,:)=A;
+			else
+				error('not supported');
+			end
+		case 15, %point
+			A=fscanf(fid,'%i',1);
+			continue;
+		otherwise,
+			error(['Type ' num2str(ty) ' not supported']);
+	end
+	counter = counter + 1;
+end
+
+%recreate segments
+if dim==2,
+	nbs = size(segments,1);
+	segments = [segments zeros(nbs,1)];
+	for i=1:nbs,
+		E = find(sum(ismember(index,segments(i,:)),2)>1);
+		segments(i,3)=E;
+	end
+else
+	nbs = size(segments,1);
+	segments = [segments zeros(nbs,1)];
+	for i=1:nbs,
+		E = find(sum(ismember(index,segments(i,:)),2)>2);
+		segments(i,4)=E;
+	end
+end
+
+%close file
+fclose(fid);
+
+%Create model
+if dim==2, %2d triangles
+	md=meshconvert(model,index,x,y);
+	md.mesh=mesh2dvertical(md.mesh);
+	md.mesh.segmentmarkers=segmentmarkers;
+	md.mesh.segments=segments;
+	md.mesh.vertexonbase=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonbase(find(vertexflags(md.mesh,1)))=1;
+	md.mesh.vertexonsurface=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonsurface(find(vertexflags(md.mesh,3)))=1;
+else
+	md=model();
+	md.mesh=mesh3dtetras();
+	md.mesh.x = x;
+	md.mesh.y = y;
+	md.mesh.z = z;
+	md.mesh.elements = index;
+	md.mesh.numberofelements=size(md.mesh.elements,1);
+	md.mesh.numberofvertices=length(md.mesh.x);
+
+	%base 2, surface 1, inflow 3, outflow 4
+	md.mesh.vertexonbase=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonbase(segments(find(segmentmarkers==2),1:3))=1;
+	md.mesh.vertexonsurface=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonsurface(segments(find(segmentmarkers==1),1:3))=1;
+	md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonboundary(segments(:,1:3))=1;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/gslib/gamv.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/gslib/gamv.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/gslib/gamv.m	(revision 27955)
@@ -0,0 +1,70 @@
+function output = gamv(x,y,data,varargin)
+%GAMV - use gslib for Kriging
+%
+%   Usage:
+%      output = gamv(x,y,data,varargin)
+
+options=pairoptions(varargin{:});
+
+nlag = getfieldvalue(options,'nlag', 20);
+dlag = getfieldvalue(options,'dlag', 1000);
+
+%Write data file
+fid=fopen('cluster.dat','w');
+fprintf(fid,'%s\n','Data file');
+fprintf(fid,'%i\n',3);
+fprintf(fid,'%s\n','Xlocation');
+fprintf(fid,'%s\n','Ylocation');
+fprintf(fid,'%s\n','Data');
+fprintf(fid,'%g %g %g\n',[x y data]');
+fclose(fid);
+
+%Write parameter file
+fid=fopen('gamv.par','w');
+fprintf(fid,'\t\t\t\t%s\n','Parameters for GAMV');
+fprintf(fid,'\t\t\t\t%s\n','*******************');
+fprintf(fid,'\n');
+fprintf(fid,'%s\n','START OF PARAMETERS:');
+fprintf(fid,'%-30s %s\n','./cluster.dat'              ,'\file with data');
+fprintf(fid,'%-30s %s\n','1 2 0'                      ,'\columns for X, Y, Z coordinates');
+fprintf(fid,'%-30s %s\n','1 3  '                      ,'\number of variables, column number');
+fprintf(fid,'%-30s %s\n','-1.0e21 1.0e21'             ,'\trimming limits');
+fprintf(fid,'%-30s %s\n','gamv.out'                   ,'\file for variogram output');
+fprintf(fid,'%-30s %s\n',num2str(nlag,'%i')           ,'\number of lags');
+fprintf(fid,'%-30s %s\n',num2str(dlag,'%g')           ,'\lag separation distance');
+fprintf(fid,'%-30s %s\n',num2str(dlag/2,'%g')         ,'\lag tolerance');
+fprintf(fid,'%-30s %s\n','3'                          ,'\number of directions');
+fprintf(fid,'%-30s %s\n','0.0 90.0 50.0 0.0 90.0 50.0','\azm, atol, bandh, dip, dtol, bandv');
+fprintf(fid,'%-30s %s\n','0.0 22.5 25.0 0.0 22.5 25.0','\azm, atol, bandh, dip, dtol, bandv');
+fprintf(fid,'%-30s %s\n','90. 22.5 25.0 0.0 22.5 25.0','\azm, atol, bandh, dip, dtol, bandv');
+fprintf(fid,'%-30s %s\n','0'                          ,'\standardize sill? (0=no, 1=yes)');
+fprintf(fid,'%-30s %s\n','2'                          ,'\number of variograms');
+fprintf(fid,'%-30s %s\n','1 1 1'                      ,'\tail var., head vars., variogram type');
+fprintf(fid,'%-30s %s\n','1 1 3'                      ,'\tail var., head vars., variogram type');
+fclose(fid);
+
+%Call gamv
+system([issmdir() '/externalpackages/gslib/install/gamv gamv.par']);
+delete('gamv.par');
+
+%Read output
+output   = struct('Semivariogram',[],'Covariance',[]);
+counter1 = 1;
+counter2 = 1;
+fid=fopen('gamv.out','r');
+while (~feof(fid)),
+	A=fscanf(fid,'%s',1);
+	if strcmp(A,'Covariance');
+		A=fscanf(fid,'%s',4); %Read tail:Data head:Data direction  2
+		output(counter1).Covariance=fscanf(fid,'%i %g %g %i %g %g',[6 nlag+2])';
+		counter1=counter1+1;
+	elseif strcmp(A,'Semivariogram'),
+		A=fscanf(fid,'%s',4); %Read tail:Data head:Data direction  2
+		output(counter2).Semivariogram=fscanf(fid,'%i %g %g %i %g %g',[6 nlag+2])';
+		counter2=counter2+1;
+	else
+		%do nothing
+	end
+end
+fclose(fid);
+delete('gamv.out')
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/gslib/gslib.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/gslib/gslib.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/gslib/gslib.m	(revision 27955)
@@ -0,0 +1,107 @@
+function [B E] = gslib(x,y,data,xmin,ymin,nx,ny,deltax,deltay,varargin)
+%GSLIB - use gslib for Kriging
+%
+%   Usage:
+%      output = gslib(x,y,data,varargin)
+
+%process options
+options = pairoptions(varargin{:});
+
+%Variogram
+nugget= getfieldvalue(options,'nugget',10);
+sill  = getfieldvalue(options,'sill',164);
+range = getfieldvalue(options,'range',25763);
+
+%Kriging options
+mindata = getfieldvalue(options,'mindata',1);
+maxdata = getfieldvalue(options,'maxdata',50);
+maxsearchradius = getfieldvalue(options,'searchrange',50000);
+
+%Some intermediaries (Convert to gslib's parameters);
+c = (sill-nugget);
+a = sqrt(3)*range;
+
+%Write data file
+fid=fopen('cluster.dat','w');
+fprintf(fid,'%s\n','Data file');
+fprintf(fid,'%i\n',3);
+fprintf(fid,'%s\n','Xlocation');
+fprintf(fid,'%s\n','Ylocation');
+fprintf(fid,'%s\n','Data');
+fprintf(fid,'%g %g %g\n',[x y data]');
+fclose(fid);
+
+if 0, %GAMV
+	%Write parameter file
+	fid=fopen('gamv.par','w');
+	fprintf(fid,'\t\t\t\t%s\n','Parameters for GAMV');
+	fprintf(fid,'\t\t\t\t%s\n','*******************');
+	fprintf(fid,'\n');
+	fprintf(fid,'%s\n','START OF PARAMETERS:');
+	fprintf(fid,'%-30s %s\n','./cluster.dat'              ,'\file with data');
+	fprintf(fid,'%-30s %s\n','1 2 0'                      ,'\columns for X, Y, Z coordinates');
+	fprintf(fid,'%-30s %s\n','1 3  '                      ,'\number of variables, column number');
+	fprintf(fid,'%-30s %s\n','-1.0e21 1.0e21'             ,'\trimming limits');
+	fprintf(fid,'%-30s %s\n','gamv.out'                   ,'\file for variogram output');
+	fprintf(fid,'%-30s %s\n','20'                         ,'\number of lags');
+	fprintf(fid,'%-30s %s\n','5.0'                        ,'\lag separation distance');
+	fprintf(fid,'%-30s %s\n','3.0'                        ,'\lag tolerance');
+	fprintf(fid,'%-30s %s\n','3'                          ,'\number of directions');
+	fprintf(fid,'%-30s %s\n','0.0 90.0 50.0 0.0 90.0 50.0','\azm, atol, bandh, dip, dtol, bandv');
+	fprintf(fid,'%-30s %s\n','0.0 22.5 25.0 0.0 22.5 25.0','\azm, atol, bandh, dip, dtol, bandv');
+	fprintf(fid,'%-30s %s\n','90. 22.5 25.0 0.0 22.5 25.0','\azm, atol, bandh, dip, dtol, bandv');
+	fprintf(fid,'%-30s %s\n','0'                          ,'\standardize sill? (0=no, 1=yes)');
+	fprintf(fid,'%-30s %s\n','2'                          ,'\number of variograms');
+	fprintf(fid,'%-30s %s\n','1 1 1'                      ,'\tail var., head vars., variogram type');
+	fprintf(fid,'%-30s %s\n','1 1 3'                      ,'\tail var., head vars., variogram type');
+	fclose(fid);
+
+	%Call gamv
+	system([issmdir() '/externalpackages/gslib/install/gamv gamv.par']);
+
+else, %Kriging KB2D
+	%Write parameter file
+	fid=fopen('kb2d.par','w');
+	fprintf(fid,'\t\t\t\t%s\n','Parameters for KB2D');
+	fprintf(fid,'\t\t\t\t%s\n','*******************');
+	fprintf(fid,'\n');
+	fprintf(fid,'%s\n','START OF PARAMETERS:');
+	fprintf(fid,'%-30s %s\n','./cluster.dat'                  ,'\file with data');
+	fprintf(fid,'%-30s %s\n','1 2 3'                          ,'\columns for X, Y and variable');
+	fprintf(fid,'%-30s %s\n','-1.0e21 1.0e21'                 ,'\trimming limits');
+	fprintf(fid,'%-30s %s\n','0'                              ,'\debugging level: 0,1,2,3');
+	fprintf(fid,'%-30s %s\n','kb2d.dbg'                       ,'\file for debuggging output');
+	fprintf(fid,'%-30s %s\n','kb2d.out'                       ,'\file for kriged output');
+	fprintf(fid,'%-30s %s\n',num2str([nx xmin deltax],'%i %10g %6g')  ,'\nx, xmn, xsiz');
+	fprintf(fid,'%-30s %s\n',num2str([ny ymin deltay],'%i %10g %6g')  ,'\nx, xmn, xsiz');
+	fprintf(fid,'%-30s %s\n','1 1'                            ,'\x and y block discretization');
+	fprintf(fid,'%-30s %s\n',num2str([mindata maxdata],'%6g') ,'\min and max data for kriging');
+	fprintf(fid,'%-30s %s\n',num2str(maxsearchradius,'%6g')   ,'\max search radius');
+	fprintf(fid,'%-30s %s\n','1 2.302'                        ,'\0=SK, 1=OK, (mean if SK)');
+	fprintf(fid,'%-30s %s\n',['1 ' num2str(nugget)]           ,'\nst, nugget effect');
+	fprintf(fid,'%-30s %s\n',['3 ' num2str([c 0.0 a a],'%10g')],'\it, c, azm, a_max, a_min');
+	fclose(fid);
+
+	tic;system([issmdir() '/externalpackages/gslib/install/kb2d kb2d.par']);toc;
+	delete('kb2d.par');
+
+	%Read output
+	fid=fopen('kb2d.out','r');
+	while (~feof(fid)),
+		A=fscanf(fid,'%s',1);
+		if strcmp(A,'KB2D');
+			A=fscanf(fid,'%s',1); %Read output
+			params=fscanf(fid,'%i %i %i %i %g %g %g %g %g %g %1',[11 1]);
+		elseif strcmp(A,' Estimate'),
+			continue;
+		elseif strcmp(A,'Estimation'),
+			A=fscanf(fid,'%s',1); %Read Variance
+			A=fscanf(fid,'%g %g',[params(1) params(2)*params(3)]);
+			B=A(1,:); B=reshape(B,[params(3),params(2)])';
+			E=A(2,:); E=reshape(E,[params(3),params(2)])';
+		else
+			%do nothing
+		end
+	end
+	fclose(fid);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/gslib/pkriging.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/gslib/pkriging.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/gslib/pkriging.m	(revision 27955)
@@ -0,0 +1,58 @@
+function [B E]=pkriging(x,y,observations,x_interp,y_interp,varargin)
+%PKRIGING - parallel Kriging
+%
+%   Usage:
+%      [B E]=pkriging(x,y,observations,x_interp,y_interp,varargin);
+
+options=pairoptions(varargin{:});
+cluster=getfieldvalue(options,'cluster',generic('np',1));
+options=removefield(options,'cluster',0);
+name   = ['krig' num2str(feature('GetPid'))];
+
+if 1,
+% =========================================   MARSHALL.m =================================================
+disp(['marshalling file ' name '.bin']);
+fid=fopen([name '.bin'],'wb');
+if fid==-1,
+	error(['marshall error message: could not open ' name '.bin file for binary writing']);
+end
+
+%Write all data
+WriteData(fid,'','name','md.x','data',x,'format','DoubleMat');
+WriteData(fid,'','name','md.y','data',y,'format','DoubleMat');
+WriteData(fid,'','name','md.data','data',observations,'format','DoubleMat');
+WriteData(fid,'','name','md.x_interp','data',x_interp,'format','DoubleMat');
+WriteData(fid,'','name','md.y_interp','data',y_interp,'format','DoubleMat');
+
+%Now, write number of options
+options.marshall(fid);
+
+%Last, write "md.EOF" to make sure that the binary file is not corrupt
+WriteData(fid,'','name','md.EOF','data',true,'format','Boolean');
+
+%Launch job on remote cluster
+BuildKrigingQueueScript(cluster,name,'',1,0,0); %gather, valgrind, gprof
+UploadQueueJob(cluster,name,name,{[name '.bin'] [name '.queue']})
+LaunchQueueJob(cluster,name,name,{[name '.bin'] [name '.queue']},'',0);
+
+%Call waitonlock
+md=model; md.cluster=cluster; md.settings.waitonlock=Inf; md.private.runtimename=name;md.miscellaneous.name=name;
+waitonlock(md);
+
+%Download
+end
+Download(cluster,name,{[name '.outbin']});
+structure=parseresultsfromdisk(md,[name '.outbin'],0);
+delete([name '.outlog']);
+delete([name '.errlog']);
+delete([name '.outbin']);
+delete([name '.bin']);
+if ~ispc(),
+	delete([name '.tar.gz']);
+end
+
+%Process results
+B=structure.predictions;
+B=reshape(B,size(x_interp,2),size(x_interp,1))';
+E=structure.error;
+E=reshape(E,size(x_interp,2),size(x_interp,1))';
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/gslib/varmap.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/gslib/varmap.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/gslib/varmap.m	(revision 27955)
@@ -0,0 +1,55 @@
+function output = varmap(x,y,data,varargin)
+%VARMAP - use gslib for Kriging
+%
+%   Usage:
+%      output = varmap(x,y,data,varargin)
+
+options=pairoptions(varargin{:});
+
+nxlag = getfieldvalue(options,'nxlag', 20);
+nylag = getfieldvalue(options,'nylag', 20);
+dxlag = getfieldvalue(options,'dxlag', 1000);
+dylag = getfieldvalue(options,'dylag', 1000);
+
+%Write data file
+fid=fopen('cluster.dat','w');
+fprintf(fid,'%s\n','Data file');
+fprintf(fid,'%i\n',3);
+fprintf(fid,'%s\n','Xlocation');
+fprintf(fid,'%s\n','Ylocation');
+fprintf(fid,'%s\n','Data');
+fprintf(fid,'%g %g %g\n',[x y data]');
+fclose(fid);
+
+%Write parameter file
+fid=fopen('varmap.par','w');
+fprintf(fid,'\t\t\t\t%s\n','Parameters for GAMV');
+fprintf(fid,'\t\t\t\t%s\n','*******************');
+fprintf(fid,'\n');
+fprintf(fid,'%s\n','START OF PARAMETERS:');
+fprintf(fid,'%-30s %s\n','./cluster.dat'              ,'\file with data');
+fprintf(fid,'%-30s %s\n','1 3  '                      ,'\number of variables, column number');
+fprintf(fid,'%-30s %s\n','-1.0e21 1.0e21'             ,'\trimming limits');
+fprintf(fid,'%-30s %s\n','0    '                      ,'\1=regular grid, 0=scattered values');
+fprintf(fid,'%-30s %s\n','50 50 1'                    ,'\if =1: nx, ny, nz');
+fprintf(fid,'%-30s %s\n','1.0 1.0 1.0'                ,'\       xsiz, ysiz, zsiz if igrid=1');
+fprintf(fid,'%-30s %s\n','1 2 0'                      ,'\if =0: columns for x, y and z coordinates');
+fprintf(fid,'%-30s %s\n','varmap.out'                 ,'\file for variogram output');
+fprintf(fid,'%-30s %s\n',num2str([nxlag nylag 0],'%i '),'\nxlag, nylag, nzlag');
+fprintf(fid,'%-30s %s\n',num2str([dxlag dylag 1],'%g %g %i'),'\dxlag, dylag, dzlag');
+fprintf(fid,'%-30s %s\n','5'                          ,'\minimum number of pairs');
+fprintf(fid,'%-30s %s\n','0'                          ,'\standardize sill? (0=no, 1=yes)');
+fprintf(fid,'%-30s %s\n','1'                          ,'\number of variograms');
+fprintf(fid,'%-30s %s\n','1 1 1'                      ,'\tail, head, variogram type');
+fclose(fid);
+
+%Call varmap
+system([issmdir() '/externalpackages/gslib/install/varmap varmap.par']);
+delete('varmap.par');
+
+%Read output
+fid=fopen('varmap.out','r');
+A = textscan(fid,'%f %f %f %f %f %f','headerlines',8);
+fclose(fid);
+delete('varmap.out')
+output = reshape(A{1},[2*nxlag+1 2*nylag+1]);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/ismip6/date2decyear.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/ismip6/date2decyear.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/ismip6/date2decyear.m	(revision 27955)
@@ -0,0 +1,30 @@
+function decyear = date2decyear(datein)
+%DATE2DECYEAR - convert date to decimal year (for ISSM)
+%
+%   input argument must be a serial date (see datenum)
+%
+%   Usage:
+%      year = date2decyear(datein)
+%
+%   Example:
+%      year = date2decyear(datenum('19-May-2000'))
+
+
+%Make table from date coming in
+timevec = datevec(datein);
+
+%Set everything in the date vector to 0 except for the year
+%to compute the date for the beginninf of the year
+timevec(:,2:end) = 0;
+dateYearBegin = datenum(timevec);
+
+%Compute date of end of year
+timevec2 = timevec;
+timevec2(:,1) = timevec2(:,1) + 1;
+dateYearEnd = datenum(timevec2);
+
+%Calculate the day of the year
+doy = datein - dateYearBegin;
+
+%Finally, we can create the decimal year time
+decyear =  timevec(:,1) + (doy - 1) ./ (dateYearEnd - dateYearBegin);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/ismip6/decyear2date.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/ismip6/decyear2date.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/ismip6/decyear2date.m	(revision 27955)
@@ -0,0 +1,24 @@
+function dateout = decyear2date(decyear)
+%DECYEAR2DATE - converts decimal year to serial date
+%
+%   Usage:
+%      dateout = decyear2date(decyear)
+%
+%   Example:
+%      dateout = decyear2date(2011.001)
+
+decyear = decyear(:);
+
+%Get year
+year = floor(decyear);
+fraction = mod(decyear,1);
+
+%Get date of beginning and end of year
+date0 = datenum((num2str(year)),'yyyy');
+date1 = datenum((num2str(year+1)),'yyyy');
+
+%Compute number of days in year
+numdays = date1 - date0;
+
+%Compute date
+dateout= date0 + fraction .* numdays;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/massbalance/contourmassbalance.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/massbalance/contourmassbalance.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/massbalance/contourmassbalance.m	(revision 27955)
@@ -0,0 +1,45 @@
+function dhdt=contourmassbalance(md,file)
+%CONTOURMASSBALANCE - compute the mass balance on a contour
+%
+%   Usage:
+%      dhdt=contourmassbalance(md,file)
+
+%some checks
+if nargin~=2,
+	help contourmassbalance
+	error('contourmassbalance error message: bad usage');
+end
+if ((length(md.initialization.vx)~=md.mesh.numberofvertices)|(length(md.initialization.vy)~=md.mesh.numberofvertices))
+	error(['thicknessevolution error message: vx and vy should have a length of ' num2str(md.mesh.numberofvertices)])
+end
+if ~exist(file),
+	error(['thicknessevolution error message: file ' file ' not found']);
+end
+
+%Get segments enveloping contour
+segments=contourenvelope(md.mesh,file);
+%md.stressbalance.icefront=segments; plotmodel(md,'data','pressureload','expdisp',file);
+
+%get flag list of elements and nodes inside the contour
+nodein=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,file,'node',1);
+elemin=(sum(nodein(md.mesh.elements),2)==size(md.mesh.elements,2));
+
+%conputing Mass flux
+x=md.mesh.x;
+y=md.mesh.y;
+vx=mean(md.initialization.vx(segments(:,1:end-1)),2);
+vy=mean(md.initialization.vy(segments(:,1:end-1)),2);
+H=mean(md.geometry.thickness(segments(:,1:end-1)),2);
+nx=cos(atan2((x(segments(:,1))-x(segments(:,2))) , (y(segments(:,2))-y(segments(:,1)))));
+ny=sin(atan2((x(segments(:,1))-x(segments(:,2))) , (y(segments(:,2))-y(segments(:,1)))));
+L=sqrt((x(segments(:,1))-x(segments(:,2))).^2+(y(segments(:,2))-y(segments(:,1))).^2);
+flux = - md.materials.rho_ice*sum(L.*H.*(vx.*nx+vy.*ny)); %outflux is negative!
+disp(['mass outflux on ' file ' = ' num2str(-flux/10^9) ' Gt/yr']);
+areas=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y);
+dhdt=flux/(sum(areas(find(elemin)))*md.materials.rho_ice);
+disp(['dhdt on ' file ' (Flux  method) = ' num2str(dhdt) ' m/yr']);
+
+dhdt=thicknessevolution(md);
+in=find(elemin);
+dhdt=sum(dhdt(in).*areas(in))/sum(areas(in));
+disp(['dhdt on ' file ' (divHV method) = ' num2str(dhdt) ' m/yr']);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/massbalance/divergence.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/massbalance/divergence.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/massbalance/divergence.m	(revision 27955)
@@ -0,0 +1,27 @@
+function div=divergence(md,a,b)
+%DIVERGENCE - divergence of [a;b] vector, using model's triangulation.
+%
+%   Usage:
+%      div=divergence(md,a,b)
+
+if (dimension(md.mesh)==2),
+	numberofelements=md.mesh.numberofelements;
+	numberofnodes=md.mesh.numberofvertices;
+	index=md.mesh.elements;
+	x=md.mesh.x; y=md.mesh.y; z=md.mesh.z;
+else
+	numberofelements=md.mesh.numberofelements2d;
+	numberofnodes=md.mesh.numberofvertices2d;
+	index=md.mesh.elements2d;
+	x=md.mesh.x2d; y=md.mesh.y2d;
+end
+
+%compute nodal functions coefficients N(x,y)=alpha x + beta y + gamma
+[alpha beta]=GetNodalFunctionsCoeff(index,x,y);
+
+summation=[1;1;1];
+dx=(a(index).*alpha)*summation;
+dy=(b(index).*beta)*summation;
+
+div=dx+dy;
+div=averaging(md,div,1);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/massbalance/outflow.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/massbalance/outflow.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/massbalance/outflow.m	(revision 27955)
@@ -0,0 +1,18 @@
+function flag=outflow(md)
+%OUTFLOW - flag nodes on outflux boundary
+%
+%   Usage:
+%      flag=outflow(md);
+
+A=md.mesh.segments(:,1);
+B=md.mesh.segments(:,2);
+Nx=-(md.mesh.y(A)-md.mesh.y(B));
+Ny=  md.mesh.x(A)-md.mesh.x(B);
+Vx=(md.initialization.vx(A)+md.initialization.vx(B))/2;
+Vy=(md.initialization.vy(A)+md.initialization.vy(B))/2;
+
+%dot product
+VdotN=Vx.*Nx+Vy.*Ny;
+
+flag=zeros(md.mesh.numberofvertices,1);
+flag(A(find(VdotN>0)))=1;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/massbalance/outflux.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/massbalance/outflux.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/massbalance/outflux.m	(revision 27955)
@@ -0,0 +1,48 @@
+function flux=outflux(md,varargin)
+%OUTFLUX - flag nodes on outflux boundary
+%
+%   Usage:
+%      flag=outflow(md);
+%      flag=outflow(md,step);
+
+A=md.mesh.segments(:,1);
+B=md.mesh.segments(:,2);
+
+lx=-(md.mesh.y(A)-md.mesh.y(B));
+ly=  md.mesh.x(A)-md.mesh.x(B);
+L=sqrt(lx.^2+ly.^2);
+Nx=lx./L;
+Ny=ly./L;
+
+if nargin==1,
+	if dimension(md.mesh)==3,
+		vxa=DepthAverage(md,md.initialization.vx);
+		vya=DepthAverage(md,md.initialization.vy);
+	else
+		vxa=md.initialization.vx;
+		vya=md.initialization.vy;
+	end
+	Vx=(vxa(A)+vxa(B))/2;
+	Vy=(vya(A)+vya(B))/2;
+	H=(md.geometry.thickness(A)+md.geometry.thickness(B))/2;
+else
+	step=varargin{1};
+	if dimension(md.mesh)==3,
+		vxa=DepthAverage(md,md.results.TransientSolution(step).Vx);
+		vya=DepthAverage(md,md.results.TransientSolution(step).Vy);
+	else
+		vxa=md.results.TransientSolution(step).Vx;
+		vya=md.results.TransientSolution(step).Vy;
+	end
+	Vx=(vxa(A)+vxa(B))/2;
+	Vy=(vya(A)+vya(B))/2;
+	H=(md.results.TransientSolution(step).Thickness(A)+md.results.TransientSolution(step).Thickness(B))/2;
+end
+
+%dot product
+HVdotN=H.*(Vx.*Nx+Vy.*Ny).*L;
+
+%plot_scatter(md.mesh.x(A),md.mesh.y(A),md.materials.rho_ice*HVdotN,'MarkerSize',4);
+flux=md.materials.rho_ice*sum(HVdotN)/10^12;
+
+disp(['Out flux is ' num2str(flux) ' Gt/yr'])
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/sia.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/sia.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/sia.m	(revision 27955)
@@ -0,0 +1,26 @@
+function [velx,vely,vel]=sia(md)
+%SIA - computation of Shallow Ice velocities
+%
+%   This routine uses the model of SIA to compute the velocities
+%   of a 2d model using the surface slope
+%
+%   Usage:
+%      [velx,vely,vel]=sia(md)
+
+if md.mesh.dimension~=2,
+	error('Only 2d meshes are allowed to compute velocity balances');
+end
+
+%Get slope
+[sx,sy,s]=slope(md);
+
+%Average thickness and B over all elements.
+summer=[1;1;1];
+hel=md.geometry.thickness(md.mesh.elements)*summer/3;
+Bel=md.materials.rheology_B(md.mesh.elements)*summer/3;
+
+Ael=Bel.^(-3);
+
+velx=-2*(md.materials.rho_ice*md.constants.g)^3*s.^2.*sx.*Ael/4.*hel.^4;
+vely=-2*(md.materials.rho_ice*md.constants.g)^3*s.^2.*sy.*Ael/4.*hel.^4;
+vel=sqrt(velx.^2+vely.^2);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/sia_vz.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/sia_vz.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/sia_vz.m	(revision 27955)
@@ -0,0 +1,18 @@
+function [velz]=sia_vz(md)
+%SIA_VZ - computation vertical speed based on Shallow Ice Approximation
+%
+%   Usage:
+%      [vz]=sia_vz(md)
+
+if md.mesh.dimension~=3
+	error('Only 3d meshes are allowed to compute vz');
+end
+
+ws = - md.surfaceforcings.mass_balance;
+n  = md.materials.rheology_n(1); %just take the first one
+z  = md.mesh.z;
+b  = md.geometry.base;
+H  = md.geometry.thickness;
+s  = md.geometry.surface;
+
+vz = ws.*(n+2)/(n+1).*((z-b)./H + 1/(n+2)*(((s-z)./H).^(n+2)-1));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/thicknessevolution.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/thicknessevolution.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/morlighem/thicknessevolution.m	(revision 27955)
@@ -0,0 +1,28 @@
+function dhdt=thicknessevolution(md)
+%THICKNESSEVOLUTION - compute the new thickness of a model after ∆t
+%
+%   This routine compute the new thickness of a model after a time step
+%   according to the following formula:
+%   dh/dt=-div(Hu)
+%
+%   Usage:
+%      dhdt=thicknessevolution(md)
+
+if (length(md.initialization.vx)~=md.mesh.numberofvertices)|(length(md.initialization.vy)~=md.mesh.numberofvertices)
+	error(['thicknessevolution error message: vx and vy should have a length of ' num2str(md.mesh.numberofvertices)])
+end
+
+%load some variables 
+H=md.geometry.thickness;
+vx=md.initialization.vx;
+vy=md.initialization.vy;
+index=md.mesh.elements;
+
+%compute nodal functions coefficients N(x,y)=alpha x + beta y + gamma
+[alpha beta]=GetNodalFunctionsCoeff(md.mesh.elements,md.mesh.x,md.mesh.y); 
+
+%compute dhdt=div(Hu)
+summation=1/3*ones(3,1);
+dhdt=(vx(index)*summation).*sum( H(index).*alpha,2) + (vy(index)*summation).*sum(H(index).*beta,2) ...
+	+ ( H(index)*summation).*sum(vx(index).*alpha,2) + ( H(index)*summation).*sum(vy(index).*beta,2);
+dhdt=-dhdt;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/musselman/README.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/musselman/README.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/musselman/README.txt	(revision 27955)
@@ -0,0 +1,53 @@
+The write_netCDF and read_netCDF modules provide a convenient way to save and restore the state of a model class instance 
+in binary format via NetCDF4. This allows users to store the class state on disk and retrieve it later, facilitating seamless 
+transitions between Python and MATLAB environments.
+
+To save a model, call either write_netCDF.py or write_netCDF.m depending on whether your class is in matlab or python. 
+To read a saved model, call either read_netCDF.py or read_netCDF.m depending on what language you prefer to use the model in.
+
+Usage Instructions:
+
+    Python:
+        - Saving a model: 
+            from write_netCDF import write_netCDF
+
+            md = bamg(model(), foo.csv, .01)
+
+            write_netCDF(md, 'md', 'adress_to_save/../filename.nc')
+
+        - Reading a model:
+            from read_netCDF import read_netCDF
+
+            md = read_netCDF('adress_to_file/../filename.nc')
+
+    MATLAB:
+        - Saving a model: 
+            import write_netCDF
+
+            write_netCDF(md, adress_to_save/../filename.nc)
+
+        - Reading a model:
+            import read_netCDF
+
+            md = read_netCDF(adress_to_file/../filename.nc)
+
+
+
+Dependencies:
+    Python: 
+        - NumPy 
+        - NetCDF4.Dataset
+        - The model() class
+
+    MATLAB: 
+        - The model() class
+
+
+Additional Information:
+
+There are currently datatypes that both write_netCDF and read_netCDF modules may not be able to handle. These datatypes might 
+include dictionaries with multiple value datatypes, lists with multiple datatypes, lists of dicts ect. 
+
+To add functionality for these additional cases, one must simply create a function to handle the case and call it using a 
+conditional case within the create_var() function. To read the data from the NetCDF4 file, add the case to the 
+copy_variable_data_to_new_model() function so that the data can be added to a new model() instance. 
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/musselman/read_netCDF_beta.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/musselman/read_netCDF_beta.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/musselman/read_netCDF_beta.py	(revision 27955)
@@ -0,0 +1,90 @@
+# imports
+from netCDF4 import Dataset
+import numpy as np
+import numpy.ma as ma
+from os import path, remove
+from model import *
+import re
+
+
+'''
+Given a NetCDF4 file, this set of functions will perform the following:
+    1. Enter each group of the file.
+    2. For each variable in each group, update an empty model with the variable's data
+'''
+
+
+# make a model framework to fill that is in the scope of this file
+model_copy = model()
+
+
+def read_netCDF(filename):
+    # check if path exists
+    if path.exists(filename):
+        print('Opening {} for reading'.format(filename))
+
+        # open the given netCDF4 file
+        global NCData   
+        NCData = Dataset(filename, 'r')
+        # remove masks from numpy arrays for easy conversion
+        NCData.set_auto_mask(False)
+    
+
+    # read the contents of the groups
+
+    '''
+    this function navigates like: 
+
+    filename.groups.keys() -> filename.groups['group1'] -> 
+    filename.groups['group1'].groups.keys() -> filename.groups['group1'].groups['group1.1'] ->
+    filename.groups['group1'].groups['group1.1'].groups.keys() ->
+    filename.groups['group1'].groups['group1.1'].groups['group1.1.1'] etc. etc.
+    '''
+    # walk through each group looking for subgroups and variables
+    for group in NCData.groups.keys():
+        print('walking ' + str(group))
+        # have to send a custom name to this function: filename.groups['group']
+        name = "NCData.groups['" + str(group) + "']"
+        print('name sent to walker is: ' + name)
+        walk_nested_groups(name)
+    
+    return model_copy
+
+
+def walk_nested_groups(group_location_in_file):
+    # first, we enter the group by: filename.groups['group_name']
+    # second we search the current level for variables: filename.groups['group_name'].variables.keys()
+    # third we get nested group keys by: filename.groups['group_name'].groups.keys()
+    # if the variables exist, copy the data to the model framework by calling a custom function
+    # if the nested groups exist, repeat. 
+
+    for variable in eval(group_location_in_file + '.variables.keys()'):
+        print('got a variable: ' + str(variable))
+        location_of_variable_in_file = group_location_in_file + ".variables['" + str(variable) + "']"
+        # group_location_in_file is like filename.groups['group1'].groups['group1.1'].groups['group1.1.1']
+        # Define the regex pattern to match the groups within brackets
+        pattern = r"\['(.*?)'\]"
+        # Use regex to find all matches and return something like 'group1.group1.1.group1.1.1 ...' where the last value is the name of the variable
+        matches = re.findall(pattern, location_of_variable_in_file)
+        variable_name = matches[-1]
+        location_of_variable_in_model = '.'.join(matches[:-1])
+        copy_variable_data_to_new_model(location_of_variable_in_file, location_of_variable_in_model, variable_name)
+
+    for nested_group in eval(group_location_in_file + '.groups.keys()'):
+        print('got a nested group: ' + nested_group)
+        new_nested_group = group_location_in_file + ".groups['" + str(nested_group) + "']"
+        print('the location of this nested group in the file is: ' + new_nested_group)
+        walk_nested_groups(new_nested_group)
+
+
+
+def copy_variable_data_to_new_model(location_of_variable_in_file, location_of_variable_in_model, variable_name):
+    # this should be as simple as navigating to the location_of_variable_in_model and setting it equal to the location_of_variable_in_file
+    print('adress in file: ' + location_of_variable_in_file)
+    print('adress in model: ' + location_of_variable_in_model)
+    print('the value of the variable is: ')
+    print(eval(location_of_variable_in_file + '[:]'))
+    print('the name of the varialbe is: ' + variable_name)
+    print('the type of the variable is: ' + str(type(eval(location_of_variable_in_file + '[:]'))))
+    setattr(eval('model_copy.' + location_of_variable_in_model), variable_name, eval(location_of_variable_in_file + '[:]'))
+    print('successfully saved var to model')
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/musselman/read_netCDF_commit.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/musselman/read_netCDF_commit.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/musselman/read_netCDF_commit.py	(revision 27955)
@@ -0,0 +1,86 @@
+# imports
+from netCDF4 import Dataset
+import numpy as np
+import numpy.ma as ma
+from os import path, remove
+from model import *
+import re
+
+
+'''
+Given a NetCDF4 file, this set of functions will perform the following:
+    1. Enter each group of the file.
+    2. For each variable in each group, update an empty model with the variable's data
+    3. Enter nested groups and repeat
+'''
+
+
+# make a model framework to fill that is in the scope of this file
+model_copy = model()
+
+
+def read_netCDF(filename):
+    # check if path exists
+    if path.exists(filename):
+        print('Opening {} for reading'.format(filename))
+
+        # open the given netCDF4 file
+        global NCData   
+        NCData = Dataset(filename, 'r')
+        # remove masks from numpy arrays for easy conversion
+        NCData.set_auto_mask(False)
+    
+
+    # read the contents of the groups
+
+    '''
+    this function navigates like: 
+
+    filename.groups.keys() -> filename.groups['group1'] -> 
+    filename.groups['group1'].groups.keys() -> filename.groups['group1'].groups['group1.1'] ->
+    filename.groups['group1'].groups['group1.1'].groups.keys() ->
+    filename.groups['group1'].groups['group1.1'].groups['group1.1.1'] etc. etc.
+    '''
+    # walk through each group looking for subgroups and variables
+    for group in NCData.groups.keys():
+        # have to send a custom name to this function: filename.groups['group']
+        name = "NCData.groups['" + str(group) + "']"
+        walk_nested_groups(name)
+    
+    return model_copy
+
+
+def walk_nested_groups(group_location_in_file):
+    # first, we enter the group by: filename.groups['group_name']
+    # second we search the current level for variables: filename.groups['group_name'].variables.keys()
+    # third we get nested group keys by: filename.groups['group_name'].groups.keys()
+    # if a variables exists, copy the data to the model framework by calling copy function
+    # if a nested groups exist, repeat all
+
+    for variable in eval(group_location_in_file + '.variables.keys()'):
+        location_of_variable_in_file = group_location_in_file + ".variables['" + str(variable) + "']"
+        # group_location_in_file is like filename.groups['group1'].groups['group1.1'].groups['group1.1.1']
+        # Define the regex pattern to match the groups within brackets
+        pattern = r"\['(.*?)'\]"
+        # Use regex to find all matches and return something like 'group1.group1.1.group1.1.1 ...' where the last value is the name of the variable
+        matches = re.findall(pattern, location_of_variable_in_file)
+        variable_name = matches[-1]
+        location_of_variable_in_model = '.'.join(matches[:-1])
+        copy_variable_data_to_new_model(location_of_variable_in_file, location_of_variable_in_model, variable_name)
+
+    for nested_group in eval(group_location_in_file + '.groups.keys()'):
+        new_nested_group = group_location_in_file + ".groups['" + str(nested_group) + "']"
+        walk_nested_groups(new_nested_group)
+
+
+
+def copy_variable_data_to_new_model(location_of_variable_in_file, location_of_variable_in_model, variable_name):
+    # as simple as navigating to the location_of_variable_in_model and setting it equal to the location_of_variable_in_file
+    
+    # but there are a couple of cases we need to compensate for, like an arrary of a single integer should just be an integer and not an array
+    if len(eval(location_of_variable_in_file))>1:
+        setattr(eval('model_copy.' + location_of_variable_in_model), variable_name, eval(location_of_variable_in_file + '[:]'))
+    else:
+        setattr(eval('model_copy.' + location_of_variable_in_model), variable_name, eval(location_of_variable_in_file + '[:][0]')) # note the [0] on the end
+        
+    print('Successfully saved ' + location_of_variable_in_model + '.' + variable_name + ' to model.')
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/musselman/write_netCDF_beta.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/musselman/write_netCDF_beta.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/musselman/write_netCDF_beta.py	(revision 27955)
@@ -0,0 +1,226 @@
+# imports
+from netCDF4 import Dataset
+import numpy as np
+import numpy.ma as ma
+import time
+from os import path, remove
+from model import *
+
+
+'''
+this is like my todo list
+
+Given a model, this set of functions will perform the following:
+    1. Enter each nested class of the model.
+    2. View each attribute of each nested class.
+    3. Compare state of attribute in the model to an empty model class.
+    4. If states are identical, pass.
+    5. Else, create group named after original class.
+    6. Create variable named after nested class attribute and assign value to it.
+    7. 
+'''
+
+'''
+need to add cases for nested arrays, dicts, etc...
+To do this I need to: 
+    know exactly the data types that are generating problems
+'''
+
+
+def write_netCDF(model_var, model_name: str, filename: str):
+    '''
+    model_var = class object to be saved
+    model_name = name of class instance variable but inside quotation marks: ie if md = model(), then model_name = 'md'
+    filename = path and name to save file under
+    '''
+      
+    globals()[model_name] = model_var
+
+    # a sanity check
+    print('sanity check to make sure names are defined: ' + str(model_var == eval(model_name)))
+    
+    # Create a NetCDF file to write to
+    make_NetCDF(filename)
+    
+    # Create an instance of an empty model class to compare model_var against
+    global empty_model
+    empty_model = model()
+
+    # Walk through the model_var class and compare subclass states to empty_model
+    walk_through_model(model_var, model_name)
+    
+    NetCDF.close()
+    
+
+    
+def make_NetCDF(filename: str):
+    # Check if file already exists
+    if path.exists(filename):
+        print('File {} allready exist'.format(filename))
+    
+        # If so, inqure for a new name or to do delete existing file
+        newname = input('Give a new name or "delete" to replace: ')
+
+        if newname == 'delete':
+            remove(filename)
+        else:
+            print(('New file name is {}'.format(newname)))
+            filename = newname
+
+    # Create file and define it globally (global variables are stored in memory/global namespace)
+    global NetCDF
+    NetCDF = Dataset(filename, 'w', format='NETCDF4')
+    NetCDF.history = 'Created ' + time.ctime(time.time())
+    NetCDF.createDimension('Unlim', None)  # unlimited dimension
+    NetCDF.createDimension('float', 1)     # single integer dimension
+    NetCDF.createDimension('int', 1)       # single float dimension
+    
+    print('Successfully created ' + filename)
+
+
+    
+def walk_through_model(model_var, model_name: str):
+    # Iterate over first layer of model_var attributes and assume this first layer is only classes
+    for group in model_var.__dict__.keys():
+        print(str(group))
+        adress = str(model_name + '.' + str(group))
+        print(adress)
+        # Recursively walk through subclasses
+        walk_through_subclasses(model_var, adress, model_name)       
+        
+
+        
+def walk_through_subclasses(model_var, adress: str, model_name: str):
+    # Iterate over each subclass' attributes
+    # Use try/except since it's either a class or it's not, no unknown exceptions
+    try:
+        # enter the subclass, see if it has nested classes and/or attributes
+        # then compare attributes between models and write to netCDF if they differ
+        # if subclass found, walk through it and repeat
+        for child in eval(adress + '.__dict__.keys()'):
+            # make a string variable so we can send thru this func again
+            adress_of_child = str(adress + '.' + str(child))
+            print('adress_of_child: ' + adress_of_child)
+            # If the attribute is unchanged, move onto the next layer
+            adress_of_child_in_empty_class = 'empty_model' + adress_of_child.removeprefix(str(model_name))
+            print('adress_of_child_in_empty_class: '+ adress_of_child_in_empty_class + '\n')
+            # using try/except here because sometimes a model can have class instances/attributes that are not 
+            # in the framework of an empty model. If this is the case, we move to the except statement
+            try:
+                if type(child) == type(eval(adress_of_child_in_empty_class)):
+                    print('passed a non-variable\n')
+                    walk_through_subclasses(model_var, adress_of_child, model_name)
+                # If it has been modified, record it in the NetCDF file
+                else:
+                    create_group(model_var, adress_of_child)
+                    walk_through_subclasses(model_var, adress_of_child, model_name)
+            except AttributeError:
+                create_group(model_var, adress_of_child)
+                walk_through_subclasses(model_var, adress_of_child, model_name)
+    except Exception as e: print(e)
+
+
+    
+def create_group(model_var, adress_of_child):
+    # start by splitting the adress_of_child into its components
+    print('entered create for: ' + adress_of_child + '\n')
+    print('the type is: ' + str(type(eval(adress_of_child))) + '\n')
+    levels_of_class = adress_of_child.split('.')
+    print(levels_of_class)
+
+    # Handle the first layer of the group(s)
+    group_name = levels_of_class[1]
+    group = NetCDF.createGroup(str(group_name))
+
+    # if the data is nested, create nested groups to match class structure
+    if len(levels_of_class) > 3:
+        for name in levels_of_class[2:-1]:
+            group = group.createGroup(str(name))
+    else: pass
+
+    # Lastly, handle the variable(s)
+    variable_name = levels_of_class[-1]
+    create_var(variable_name, adress_of_child, group)
+
+
+
+
+def create_var(variable_name, adress_of_child, group):
+    # There are lots of different variable types that we need to handle from the model class
+    
+    # This first conditional statement will catch numpy arrays of any dimension and save them
+    if isinstance(eval(adress_of_child), np.ndarray):
+        write_numpy_array_to_netcdf(variable_name, adress_of_child, group)
+        
+    elif isinstance(eval(adress_of_child), int):
+        print('caught an int!')
+        variable = group.createVariable(variable_name, int, ('int',))
+        variable[:] = eval(adress_of_child)
+        
+    elif isinstance(eval(adress_of_child), float):
+        print('caught a float!')
+        variable = group.createVariable(variable_name, float, ('float',))
+        variable[:] = eval(adress_of_child)
+        
+    else:
+        try:
+            variable = group.createVariable(variable_name, type(eval(adress_of_child)), ('Unlim',))
+            variable = eval(adress_of_child)
+        except Exception as e: print(e)
+
+    print('successfully wrote ' + adress_of_child + ' to netcdf file')
+    
+    
+    
+
+def write_numpy_array_to_netcdf(variable_name, adress_of_child, group):
+    print('entered write_numpy_array_to_netcdf for: ' + variable_name)
+    # to make a nested array in netCDF, we have to get the dimensions of the array,
+    # create corresponding dimensions in the netCDF file, then we can make a variable
+    # in the netCDF with dimensions identical to those in the original array
+    
+    # start by getting the data type at the lowest level in the array:
+    typeis = eval(adress_of_child + '.dtype')
+    print('the type of elements are: ' + str(typeis))
+    
+    # if the array is 1D, we don't need to do anything fancy
+    # sometimes an array has just 1 element in it though, so we need to account for those cases here:
+    if len(eval(adress_of_child)) == 1:
+        if typeis is np.dtype('float64'):
+            variable = group.createVariable(variable_name, typeis, ('float',))
+            variable[:] = eval(adress_of_child)            
+        elif typeis is np.dtype('int64'):
+            variable = group.createVariable(variable_name, typeis, ('int',))
+            variable[:] = eval(adress_of_child)            
+        else:
+            variable = group.createVariable(variable_name, typeis, ('Unlim',))
+            variable[:] = eval(adress_of_child)
+    
+    # this is the 1D case:
+    elif len(np.shape(eval(adress_of_child))) == 1: 
+        variable = group.createVariable(variable_name, typeis, ('Unlim',))
+        variable[:] = eval(adress_of_child)
+    
+    # But if the array is >1D, we do need to be fancy:
+    else:
+        # make the dimensions
+        dimensions = []
+        for dimension in np.shape(eval(adress_of_child)):
+            dimensions.append(str('dim' + str(dimension)))
+            # if the dimension already exists we can't have a duplicate
+            try:
+                group.createDimension(str('dim' + str(dimension)), dimension)
+            except: pass # this would mean that the dimension already exists
+
+        print('the dimensions are: ' + str(dimensions))
+
+        # create the variable:
+        variable = group.createVariable(variable_name, typeis, tuple(dimensions))
+        print('created variable OK')
+
+        # write the variable:
+        variable[:] = eval(adress_of_child)
+
+        
+        
+        
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/musselman/write_netCDF_commit.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/musselman/write_netCDF_commit.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/musselman/write_netCDF_commit.py	(revision 27955)
@@ -0,0 +1,281 @@
+# imports
+import netCDF4
+from netCDF4 import Dataset
+import numpy as np
+import numpy.ma as ma
+import time
+from os import path, remove
+from model import *
+from results import *
+
+
+'''
+Given a model, this set of functions will perform the following:
+    1. Enter each nested class of the model.
+    2. View each attribute of each nested class.
+    3. Compare state of attribute in the model to an empty model class.
+    4. If states are identical, pass.
+    5. Otherwise, create nested groups named after class structure.
+    6. Create variable named after class attribute and assign value to it.
+'''
+
+
+def write_netCDF(model_var, model_name: str, filename: str):
+    '''
+    model_var = class object to be saved
+    model_name = name of class instance variable but inside quotation marks: ie if md = model(), then model_name = 'md'
+    filename = path and name to save file under
+    '''
+    # this assigns the name model_name to the class object model_var... very important
+    globals()[model_name] = model_var
+    
+    # Create a NetCDF file to write to
+    make_NetCDF(filename)
+    
+    # Create an instance of an empty model class to compare model_var against
+    global empty_model
+    empty_model = model()
+
+    # Walk through the model_var class and compare subclass states to empty_model
+    walk_through_model(model_var, model_name)
+
+    # in order to handle some subclasses in the results class, we have to utilize this band-aid
+    # there will likely be more band-aids added unless a class name library is created with all class names that might be added to a model
+    try:
+        # if results has meaningful data, save the name of the subclass and class instance
+        NetCDF.groups['results']
+        results_subclasses_bandaid(model_var)
+        # otherwise, ignore
+    except KeyError:
+        pass
+        
+    NetCDF.close()
+    print('Model successfully saved as NetCDF4')
+    
+
+
+def results_subclasses_bandaid(model_var):
+    # since the results class may have nested classes within it, we need to record the name of the 
+    # nested class instance variable as it appears in the model that we're trying to save
+    quality_control = []
+    for class_instance_name in model_var.results.__dict__.keys():
+        # for each class instance in results, see which class its from and record that info in the netcdf to recreate structure later
+        # check to see if there is a solutionstep class instance
+        if isinstance(model_var.results.__dict__[class_instance_name],solutionstep):
+            quality_control.append(1)
+            write_string_to_netcdf(variable_name=str('solutionstep'), adress_of_child=str(class_instance_name), group=NetCDF.groups['results'])
+        # check to see if there is a solution class instance
+        if isinstance(model_var.results.__dict__[class_instance_name],solution):
+            quality_control.append(1)
+            write_string_to_netcdf(variable_name=str('solution'), adress_of_child=str(class_instance_name), group=NetCDF.groups['results'])
+        # check to see if there is a resultsdakota class instance
+        if isinstance(model_var.results.__dict__[class_instance_name],resultsdakota):
+            quality_control.append(1)
+            write_string_to_netcdf(variable_name=str('resultsdakota'), adress_of_child=str(class_instance_name), group=NetCDF.groups['results'])
+    if len(quality_control) != len(model_var.results.__dict__.keys()):
+        print('Error: The class instance within your model.results class is not currently supported by this application')
+        print(type(model_var.results.__dict__[class_instance_name]))
+    else:
+        print('The results class was successfully stored on disk')
+
+
+    
+def make_NetCDF(filename: str):
+    # If file already exists delete / rename it
+    if path.exists(filename):
+        print('File {} allready exist'.format(filename))
+    
+        # If so, inqure for a new name or to do delete the existing file
+        newname = input('Give a new name or "delete" to replace: ')
+
+        if newname == 'delete':
+            remove(filename)
+        else:
+            print(('New file name is {}'.format(newname)))
+            filename = newname
+    else:
+        # Otherwise create the file and define it globally so other functions can call it
+        global NetCDF
+        NetCDF = Dataset(filename, 'w', format='NETCDF4')
+        NetCDF.history = 'Created ' + time.ctime(time.time())
+        NetCDF.createDimension('Unlim', None)  # unlimited dimension
+        NetCDF.createDimension('float', 1)     # single integer dimension
+        NetCDF.createDimension('int', 1)       # single float dimension
+    
+    print('Successfully created ' + filename)
+
+
+    
+def walk_through_model(model_var, model_name: str):
+    # Iterate over first layer of model_var attributes and assume this first layer is only classes
+    for group in model_var.__dict__.keys():
+        adress = str(model_name + '.' + str(group))
+        # Recursively walk through subclasses
+        walk_through_subclasses(model_var, adress, model_name)       
+        
+
+def walk_through_subclasses(model_var, adress: str, model_name: str):
+    # Iterate over each subclass' attributes
+    # Use try/except since it's either a class or it's not, no unknown exceptions
+    try:
+        # enter the subclass, see if it has nested classes and/or attributes
+        # then compare attributes between models and write to netCDF if they differ
+        # if subclass found, walk through it and repeat
+        for child in eval(adress + '.__dict__.keys()'):
+            # make a string variable so we can send thru this func again
+            adress_of_child = str(adress + '.' + str(child))
+            # If the attribute is unchanged, move onto the next layer
+            adress_of_child_in_empty_class = 'empty_model' + adress_of_child.removeprefix(str(model_name))
+            # using try/except here because sometimes a model can have class instances/attributes that are not 
+            # in the framework of an empty model. If this is the case, we move to the except statement
+            try:
+                if type(child) == type(eval(adress_of_child_in_empty_class)):
+                    walk_through_subclasses(model_var, adress_of_child, model_name)
+                # If it has been modified, record it in the NetCDF file
+                else:
+                    create_group(model_var, adress_of_child)
+                    walk_through_subclasses(model_var, adress_of_child, model_name)
+            except AttributeError:
+                create_group(model_var, adress_of_child)
+                walk_through_subclasses(model_var, adress_of_child, model_name)
+    except Exception as e: print(e)
+
+
+        
+def create_group(model_var, adress_of_child):
+    # start by splitting the adress_of_child into its components
+    levels_of_class = adress_of_child.split('.')
+
+    # Handle the first layer of the group(s)
+    group_name = levels_of_class[1]
+    group = NetCDF.createGroup(str(group_name))
+
+    # if the data is nested, create nested groups to match class structure
+    if len(levels_of_class) > 3:
+        for name in levels_of_class[2:-1]:
+            group = group.createGroup(str(name))
+    else: pass
+
+    # Lastly, handle the variable(s)
+    variable_name = levels_of_class[-1]
+    create_var(variable_name, adress_of_child, group)
+
+
+def create_var(variable_name, adress_of_child, group):
+    # There are lots of different variable types that we need to handle from the model class
+    
+    # This first conditional statement will catch numpy arrays of any dimension and save them
+    if isinstance(eval(adress_of_child), np.ndarray):
+        write_numpy_array_to_netcdf(variable_name, adress_of_child, group)
+    
+    # check if it's an int
+    elif isinstance(eval(adress_of_child), int):
+        variable = group.createVariable(variable_name, int, ('int',))
+        variable[:] = eval(adress_of_child)
+    
+    # or a float
+    elif isinstance(eval(adress_of_child), float):
+        variable = group.createVariable(variable_name, float, ('float',))
+        variable[:] = eval(adress_of_child)
+
+    # or a string
+    elif isinstance(eval(adress_of_child), str):
+        write_string_to_netcdf(variable_name, adress_of_child, group)
+        
+    # or an empty list
+    elif isinstance(eval(adress_of_child), list) and len(eval(adress_of_child))==0:
+        variable = group.createVariable(variable_name, int, ('int',))
+
+    # or a list of strings -- this needs work as it can only handle a list of 1 string
+    elif isinstance(eval(adress_of_child),list) and isinstance(eval(adress_of_child)[0],str):
+        for string in eval(adress_of_child):
+            write_string_to_netcdf(variable_name, string, group)
+
+    # or a regular list
+    elif isinstance(eval(adress_of_child), list):
+        print(eval(adress_of_child))
+        variable = group.createVariable(variable_name, type(eval(adress_of_child)[0]), ('Unlim',))
+        variable[:] = eval(adress_of_child)
+
+    # anything else... (will likely need to add more cases; ie dict)
+    else:
+        try:
+            variable = group.createVariable(variable_name, type(eval(adress_of_child)), ('Unlim',))
+            variable[:] = eval(adress_of_child)
+        except Exception as e: 
+            print(e)
+            print('Datatype given: ' + str(type(eval(adress_of_child))))
+
+    print('Successfully transferred data from ' + adress_of_child + ' to the NetCDF')
+    
+
+
+
+def write_string_to_netcdf(variable_name, adress_of_child, group):
+    # netcdf and strings dont get along.. we have to do it 'custom':
+    # if we hand it an adress we need to do it this way:
+    try:
+        the_string_to_save = eval(adress_of_child)
+        length_of_the_string = len(the_string_to_save)
+        numpy_datatype = 'S' + str(length_of_the_string)
+        str_out = netCDF4.stringtochar(np.array([the_string_to_save], dtype=numpy_datatype))
+    #otherwise we need to treat it like a string:
+    except: 
+        the_string_to_save = adress_of_child
+        length_of_the_string = len(the_string_to_save)
+        numpy_datatype = 'S' + str(length_of_the_string)
+        str_out = netCDF4.stringtochar(np.array([the_string_to_save], dtype=numpy_datatype))        
+
+    # we'll need to make a new dimension for the string if it doesn't already exist
+    name_of_dimension = 'char' + str(length_of_the_string)
+    try: 
+        group.createDimension(name_of_dimension, length_of_the_string)
+    except: pass
+    # now we can make a variable in this dimension:
+    string = group.createVariable(variable_name, 'S1', (name_of_dimension))
+    #finally we can write the variable:
+    string[:] = str_out
+
+
+def write_numpy_array_to_netcdf(variable_name, adress_of_child, group):
+    # to make a nested array in netCDF, we have to get the dimensions of the array,
+    # create corresponding dimensions in the netCDF file, then we can make a variable
+    # in the netCDF with dimensions identical to those in the original array
+    
+    # start by getting the data type at the lowest level in the array:
+    typeis = eval(adress_of_child + '.dtype')
+    
+    # if the array is 1D, we don't need to do anything fancy
+    # sometimes an array has just 1 element in it though, so we need to account for those cases here:
+    if len(eval(adress_of_child)) == 1:
+        if typeis is np.dtype('float64'):
+            variable = group.createVariable(variable_name, typeis, ('float',))
+            variable[:] = eval(adress_of_child)            
+        elif typeis is np.dtype('int64'):
+            variable = group.createVariable(variable_name, typeis, ('int',))
+            variable[:] = eval(adress_of_child)            
+        else:
+            variable = group.createVariable(variable_name, typeis, ('Unlim',))
+            variable[:] = eval(adress_of_child)
+    
+    # this is the 1D case:
+    elif len(np.shape(eval(adress_of_child))) == 1: 
+        variable = group.createVariable(variable_name, typeis, ('Unlim',))
+        variable[:] = eval(adress_of_child)
+    
+    # But if the array is >1D, we do need to be fancy:
+    else:
+        # make the dimensions
+        dimensions = []
+        for dimension in np.shape(eval(adress_of_child)):
+            dimensions.append(str('dim' + str(dimension)))
+            # if the dimension already exists we can't have a duplicate
+            try:
+                group.createDimension(str('dim' + str(dimension)), dimension)
+            except: pass # this would mean that the dimension already exists
+
+        # create the variable:
+        variable = group.createVariable(variable_name, typeis, tuple(dimensions))
+
+        # write the variable:
+        variable[:] = eval(adress_of_child)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/seroussi/oasis/carter.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/seroussi/oasis/carter.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/seroussi/oasis/carter.m	(revision 27955)
@@ -0,0 +1,28 @@
+function attenuation=carter(temperature)
+%CARTER - attenuation as a function of temperature
+%
+%   TWO WAY - Attenuation (in dB/m) as a function of temperature (K)
+%   From Carter at al. 2007 (Radar-based subglacial lake classification in Antarctica)
+%   Figure 4
+%
+%   Usage:
+%      attenuation=carter(temperature)
+
+if(temperature<0)
+	error('input temperature should be in Kelvin (positive)');
+end
+T=temperature-273.15;
+
+Temp=[-50 -45 -40 -35 -30 -25 -20 -15 -10 -5 0]';
+A=[0.0015 0.002 0.003 0.0042 0.0055 0.0083 0.012 0.0175 0.026 0.038 0.055]';
+
+%Now, do a cubic fit between Temp and B: 
+[cfun,gof,output]=fit(Temp,A,'cubicspline');
+%breaks=cfun.p.breaks;
+%coeff=cfun.p.coefs;
+
+%Calculate attenuation
+attenuation=cfun(T);
+
+%Make it a 2 way attenuation
+attenuation=2*attenuation;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/AMRexportVTK.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/AMRexportVTK.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/AMRexportVTK.m	(revision 27955)
@@ -0,0 +1,217 @@
+function AMRexportVTK(filename,model,varargin)
+%AMREXPORTVTK -  vtk export
+%
+%   function AMRexportVTK(filename,model)
+%   creates a directory with the vtk files for displays in paraview
+%   (only work for triangle based on their number of nodes)
+%   By default only the results are exported
+%
+%   USAGE:
+%      AMRexportVTK(filename,model,varargin)
+%
+%   EXAMPLE:
+%      AMRexportVTK('ResultSimulation1',md)
+
+[path,name,ext]=fileparts(filename);
+separator=filesep;
+mkdir(filename);
+
+%get the element related variables
+if dimension(model.mesh)==2,
+	points=[model.mesh.x model.mesh.y zeros(model.mesh.numberofvertices,1)];
+else
+	error('Dimension not supported yet \n');
+end
+
+[num_of_points,dim]=size(points);
+[num_of_elt]=size(model.mesh.elements,1);
+[point_per_elt]=size(model.mesh.elements,2);
+
+%Select the type of element function of the number of nodes per elements
+if point_per_elt==3;
+	celltype=5; %triangles
+elseif point_per_elt==6;
+	error('Element type not supported yet \n')
+else
+	error('Your Element definition is not taken into account \n');
+end
+
+%this is the result structure (just the Transient solution)
+res_struct=model.results;
+%checking for results
+if (length(fields(res_struct))>0);
+	%Getting all the solutions of the model
+	solnames=fields(res_struct);
+	num_of_sols=length(solnames);
+	num_of_timesteps=1;
+	%building solution structure 
+	for i=1:num_of_sols
+		sol_struct{i}=res_struct.(solnames{i});
+		%looking for multiple time steps
+		if(size(sol_struct{i},2)>num_of_timesteps);
+			num_of_timesteps=size(sol_struct{i},2);
+			outstep=model.timestepping.time_step*model.settings.output_frequency;
+	  end
+  end
+else
+	num_of_timesteps=1;
+end
+for step=1:num_of_timesteps;
+	
+	timestep=step;
+ 	if(isfield(model.results.TransientSolution,'MeshElements'))
+   	index = model.results.TransientSolution(step).MeshElements;
+   	x     = model.results.TransientSolution(step).MeshX;
+   	y     = model.results.TransientSolution(step).MeshY;
+   else
+   	index = model.mesh.elements;
+   	x     = model.mesh.x;
+   	y     = model.mesh.y;
+   end
+	
+	points=[x y zeros(size(x))];
+	[num_of_points,dim]=size(points);
+	[num_of_elt]=size(index,1);
+
+	fid = fopen(strcat(path,filesep,name,filesep,'timestep.vtk',int2str(timestep),'.vtk'),'w+');
+	fprintf(fid,'# vtk DataFile Version 2.0 \n');
+	fprintf(fid,'Data for run %s \n',model.miscellaneous.name);
+	fprintf(fid,'ASCII \n');
+	fprintf(fid,'DATASET UNSTRUCTURED_GRID \n');
+	
+	fprintf(fid,'POINTS %d float\n',num_of_points);
+	if(dim==3);
+		s='%f %f %f \n';
+	elseif(dim==2);
+		s='%f %f \n';
+  end
+	P=[points zeros(num_of_points,3-dim)];
+	fprintf(fid,s,P');
+	
+	fprintf(fid,'CELLS %d %d\n',num_of_elt,num_of_elt*(point_per_elt+1));
+	s='%d';
+	for j=1:point_per_elt
+		s=horzcat(s,{' %d'});
+  end
+	s=cell2mat(horzcat(s,{'\n'}));
+		fprintf(fid,s,[(point_per_elt)*ones(num_of_elt,1) index-1]');
+	
+	fprintf(fid,'CELL_TYPES %d\n',num_of_elt);
+	s='%d\n';
+	fprintf(fid,s,celltype*ones(num_of_elt,1));
+	fprintf(fid,'POINT_DATA %s \n',num2str(num_of_points));
+
+	%loop over the different solution structures
+	if (exist('num_of_sols'));
+		for j=1:num_of_sols
+			%dealing with results on different timesteps
+			if(size(sol_struct{j},2)>timestep);
+				timestep = step;
+			else
+				timestep = size(sol_struct{j},2);
+			end
+			
+			%getting the number of fields in the solution
+			fieldnames=fields(sol_struct{j}(timestep));
+			num_of_fields=length(fieldnames);
+			
+			%check which field is a real result and print
+			for k=1:num_of_fields
+				if ((numel(sol_struct{j}(timestep).(fieldnames{k})))==num_of_points);
+					%paraview does not like NaN, replacing
+					nanval=find(isnan(sol_struct{j}(timestep).(fieldnames{k})));
+					sol_struct{j}(timestep).(fieldnames{k})(nanval)=-9999;
+					%also checking for verry small value that mess up
+					smallval=(abs(sol_struct{j}(timestep).(fieldnames{k}))<1.0e-20);
+					sol_struct{j}(timestep).(fieldnames{k})(smallval)=0.0;
+					fprintf(fid,'SCALARS %s float 1 \n',fieldnames{k});
+					fprintf(fid,'LOOKUP_TABLE default\n');
+					s='%e\n';
+					fprintf(fid,s,sol_struct{j}(timestep).(fieldnames{k}));
+				end
+			end
+			fprintf(fid,'CELL_DATA %s \n',num2str(num_of_elt));
+			for k=1:num_of_fields
+				if ((numel(sol_struct{j}(timestep).(fieldnames{k})))==num_of_elt);
+					%paraview does not like NaN, replacing
+					nanval=find(isnan(sol_struct{j}(timestep).(fieldnames{k})));
+					sol_struct{j}(timestep).(fieldnames{k})(nanval)=-9999;
+					%also checking for verry small value that mess up
+					smallval=(abs(sol_struct{j}(timestep).(fieldnames{k}))<1.0e-20);
+					sol_struct{j}(timestep).(fieldnames{k})(smallval)=0.0;
+					fprintf(fid,'SCALARS %s float 1 \n',fieldnames{k});
+					fprintf(fid,'LOOKUP_TABLE default\n');
+					s='%e\n';
+					fprintf(fid,s,sol_struct{j}(timestep).(fieldnames{k}));
+				end		
+			end
+	  end
+  end
+	%loop on arguments, if something other than result is asked, do
+	%it now
+	for j= 1:nargin-2
+		res_struct=model.(varargin{j});
+		fieldnames=fields(res_struct);
+		num_of_fields=length(fieldnames);
+		for k=1:num_of_fields
+			if ((numel(res_struct.(fieldnames{k})))==num_of_points);
+				%paraview does not like NaN, replacing
+				nanval=find(isnan(res_struct.(fieldnames{k})));
+				res_struct.(fieldnames{k})(nanval)=-9999;
+				%also checking for verry small value that mess up
+				smallval=(abs(res_struct.(fieldnames{k}))<1.0e-20);
+				res_struct.(fieldnames{k})(smallval)=0.0;
+				fprintf(fid,'SCALARS %s float 1 \n',fieldnames{k});
+				fprintf(fid,'LOOKUP_TABLE default\n');
+				s='%e\n';
+				fprintf(fid,s,res_struct.(fieldnames{k}));
+				%check for forcings	
+			elseif (size(res_struct.(fieldnames{k}),1)==num_of_points+1);
+				%paraview does not like NaN, replacing
+				nanval=find(isnan(res_struct.(fieldnames{k})));
+				res_struct.(fieldnames{k})(nanval)=-9999;
+				%also checking for verry small value that mess up
+				smallval=(abs(res_struct.(fieldnames{k}))<1.0e-20);
+				res_struct.(fieldnames{k})(smallval)=0.0;
+				if (size(res_struct.(fieldnames{k}),2)==num_of_timesteps),
+					fprintf(fid,'SCALARS %s float 1 \n',fieldnames{k});
+					fprintf(fid,'LOOKUP_TABLE default\n');
+					s='%e\n';
+					fprintf(fid,s,res_struct.(fieldnames{k})(1:end-1,timestep));
+				else,
+					%forcing and results not on the same timestep,need some treatment
+					fprintf(fid,'SCALARS %s float 1 \n',fieldnames{k});
+					fprintf(fid,'LOOKUP_TABLE default\n');
+					index=1;
+					currenttime=((timestep-1)*outstep)+model.timestepping.start_time;
+					while (res_struct.(fieldnames{k})(end,index)<=currenttime);
+						if index==size(res_struct.(fieldnames{k}),2)
+							break
+						end	
+						index=index+1;
+		      end
+					uptime=res_struct.(fieldnames{k})(end,index);
+					uplim=res_struct.(fieldnames{k})(1:end-1,index);
+					while (res_struct.(fieldnames{k})(end,index)>=currenttime);
+						if index==1
+							break
+			      end
+						index=index-1;
+		      end
+					lowtime=res_struct.(fieldnames{k})(end,index);
+					lowlim=res_struct.(fieldnames{k})(1:end-1,index);
+					if uptime==currenttime,
+						interp=uplim;
+					elseif lowtime==currenttime,
+						interp=lowlim;
+					else
+						interp=lowlim+(uplim-lowlim)*((currenttime-lowtime)/(uptime-lowtime));
+					end
+					s='%e\n';
+					fprintf(fid,s,interp);
+				end
+		  end		
+		end 
+	end
+	fclose(fid);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/integrate_field.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/integrate_field.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/integrate_field.m	(revision 27955)
@@ -0,0 +1,22 @@
+function total=integrate_field(index,x,y,field)
+%INTEGRATE_FIELD: integrate a field over a 2D mesh
+%
+%   Usage:
+%      total=integrate_field(index,x,y,field);
+%
+%   Examples:
+%      volume=integrate_field(md.mesh.elements,md.mesh.x,md.mesh.y,md.geometry.thickness);
+
+% areas of each element
+x1=x(index(:,1)); x2=x(index(:,2)); x3=x(index(:,3));
+y1=y(index(:,1)); y2=y(index(:,2)); y3=y(index(:,3));
+areas=(0.5*((x2-x1).*(y3-y1)-(y2-y1).*(x3-x1)));
+
+% element-wise integration
+v1=index(:,1);	v2=index(:,2);	v3=index(:,3);
+elem_int=areas.*mean(field([v1 v2 v3]),2);
+
+% compute integration
+total=sum(elem_int);
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/MismipGLPosition.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/MismipGLPosition.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/MismipGLPosition.m	(revision 27955)
@@ -0,0 +1,29 @@
+%GLy0 : grounding line position @ y=0km
+%GLy40 : grounding line position @ y=40km
+
+function [GLy0 GLy40] = MismipGLPosition(xGL,yGL,t),
+
+	GLy0		= [];
+	GLy40		= [];
+	nsteps	= length(t);
+
+	for i=1:nsteps,
+		
+		xi	 = xGL(i,:);
+		yi	 = yGL(i,:);
+		
+		%find GL position at y=0km
+		pos		= find(min(yi)==yi);
+		GLy0(i)  = max(xi(pos)); %max(xi(pos)) Helene, here
+		
+		%find GL position at y=40km
+		pos		= find(yi<45 & yi>35);
+		x			= yi(pos);
+		v			= xi(pos);
+		xq			= [38:0.1:42];
+		vq			= interp1(x,v,xq,'linear');
+		pos		= find(xq==40);
+		GLy40(i) = vq(pos);
+	end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/generate_plot.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/generate_plot.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/generate_plot.m	(revision 27955)
@@ -0,0 +1,175 @@
+%L0 and L1 {{{
+md0			= loadmodel('./L0_viscous/Transient_Steadystate_Level_0.mat');
+md1			= loadmodel('./L1/L1_viscous/Transient_steadystate.mat');
+md_L1_R5		= loadmodel('./R5/L1_viscous/Transient_steadystate.mat');
+md_L1_R15	= loadmodel('./R15/L1_viscous/Transient_steadystate.mat');
+md_L1_R30	= loadmodel('./R30/L1_viscous/Transient_steadystate.mat');
+md_L1_R40	= loadmodel('./R40/L1_viscous/Transient_steadystate.mat');
+
+[ga0 iv0 ivaf0 GLy400 ne0 t0] = ice_evolution(md0);
+[gaL1 ivL1 ivafL1 GLy40L1 neL1 tL1] = ice_evolution(md1);
+[ga1 iv1 ivaf1 GLy401 ne1 t1] = ice_evolution(md_L1_R5);
+[ga2 iv2 ivaf2 GLy402 ne2 t2] = ice_evolution(md_L1_R15);
+[ga3 iv3 ivaf3 GLy403 ne3 t3] = ice_evolution(md_L1_R30);
+[ga4 iv4 ivaf4 GLy404 ne4 t4] = ice_evolution(md_L1_R40);
+% }}}
+%L2 {{{
+md_L2_R5		= loadmodel('./R5/L2_viscous/Transient_steadystate.mat');
+md_L2_R15	= loadmodel('./R15/L2_viscous/Transient_steadystate.mat');
+md_L2_R20	= loadmodel('./R20/L2_viscous/Transient_steadystate.mat');
+md_L2_R30	= loadmodel('./R30/L2_viscous/Transient_steadystate.mat');
+
+[ga5 iv5 ivaf5 GLy405 ne5 t5] = ice_evolution(md_L2_R5);
+[ga6 iv6 ivaf6 GLy406 ne6 t6] = ice_evolution(md_L2_R15);
+[ga7 iv7 ivaf7 GLy407 ne7 t7] = ice_evolution(md_L2_R20);
+[ga8 iv8 ivaf8 GLy408 ne8 t8] = ice_evolution(md_L2_R30);
+% }}}
+%L3 {{{
+md_L3_R30	= loadmodel('./L3_viscous/Transient_steadystate.mat');
+[ga9 iv9 ivaf9 GLy409 ne9 t9] = ice_evolution(md_L3_R30);
+% }}}
+
+%L4 {{{
+md_L4_R30	= loadmodel('./L4_viscous/Transient_steadystate.mat');
+[ga10 iv10 ivaf10 GLy4010 ne10 t10] = ice_evolution(md_L4_R30);
+% }}}
+
+% Scaling {{{
+t0=t0/1000;
+tL1=tL1/1000;
+t1=t1/1000;
+t2=t2/1000;
+t3=t3/1000;
+t4=t4/1000;
+t5=t5/1000;
+t6=t6/1000;
+t7=t7/1000;
+t8=t8/1000;
+t9=t9/1000;
+t10=t10/1000;
+
+GLy400=GLy400/1000;
+GLy40L1=GLy40L1/1000;
+GLy401=GLy401/1000;
+GLy402=GLy402/1000;
+GLy403=GLy403/1000;
+GLy404=GLy404/1000;
+GLy405=GLy405/1000;
+GLy406=GLy406/1000;
+GLy407=GLy407/1000;
+GLy408=GLy408/1000;
+GLy409=GLy409/1000;
+GLy4010=GLy4010/1000;
+
+ivaf0=ivaf0/10^12;
+ivafL1=ivafL1/10^12;
+ivaf1=ivaf1/10^12;
+ivaf2=ivaf2/10^12;
+ivaf3=ivaf3/10^12;
+ivaf4=ivaf4/10^12;
+ivaf5=ivaf5/10^12;
+ivaf6=ivaf6/10^12;
+ivaf7=ivaf7/10^12;
+ivaf8=ivaf8/10^12;
+ivaf9=ivaf9/10^12;
+ivaf10=ivaf10/10^12;
+% }}}
+
+figure(1) % {{{
+hold on
+plot(t0,GLy400,'*',tL1,GLy40L1,'r+',t1,GLy401,'b',t2,GLy402,'g',t3,GLy403,'m',t4,GLy404,'r','LineWidth',1.5)
+axis([0 25 365 455])
+legend('L0','L1','L1-R5','L1-R15','L1-R30','L1-R40','Location','southeast')
+title('\fontsize{16} Mismip+ steady state - Rmax analysis')
+ylabel('GL @ y=40km (km)')
+xlabel('t (kyr)')
+hold off
+% }}}
+
+figure(2) % {{{
+hold on
+plot(t0,GLy400,'*',t5,GLy405,'b',t6,GLy406,'g',t7,GLy407,'m',t8,GLy408,'r','LineWidth',1.5)
+axis([0 25 365 455])
+legend('L0','L2-R5','L2-R15','L2-R20','L2-R30','Location','southeast')
+title('\fontsize{16} Mismip+ steady state - Rmax analysis')
+ylabel('GL @ y=40km (km)')
+xlabel('t (kyr)')
+hold off
+% }}}
+
+figure(3) % {{{
+res	= [2 1];
+res30 = [2 1 0.5 0.25];
+r5		= [GLy401(end) GLy405(end)];
+r15	= [GLy402(end) GLy406(end)];
+r30	= [GLy403(end) GLy408(end) GLy409(end) GLy4010(end)];
+hold on
+plot(log(4),GLy400(end),'^','MarkerSize',7,'MarkerFaceColor','b','MarkerEdgeColor','k');
+plot(log(2),GLy40L1(end),'^','MarkerSize',7,'MarkerFaceColor','k','MarkerEdgeColor','k');
+plot(log(res),r5,'^','MarkerSize',7,'MarkerFaceColor','g','MarkerEdgeColor','k');
+plot(log(res),r15,'^','MarkerSize',7,'MarkerFaceColor','y','MarkerEdgeColor','k');
+plot(log(res30),r30,'^','MarkerSize',7,'MarkerFaceColor','r','MarkerEdgeColor','k');
+plot(log(res(1)),GLy404(end),'^','MarkerSize',7,'MarkerFaceColor','m','MarkerEdgeColor','k');
+plot(log(res(2)),GLy407(end),'^','MarkerSize',7,'MarkerFaceColor','c','MarkerEdgeColor','k');
+axis([log(0.2) log(5) 437 458])
+legend('L0','L1','R5','R15','R30','L1-R40','L2-R20','Location','northeast')
+title('\fontsize{15} Mismip+ steady state: GLpos X Rmax')
+ylabel('GL @ y=40km (km)')
+xlabel('Resolution (km)')
+xtickslabel = [0.25 0.5 1 2 4];
+xticks = log(xtickslabel);
+ytickslabel = [440 445 450 455];
+yticks = ytickslabel;
+ax = gca;
+set(ax,'XTick',xticks);
+set(ax,'XTickLabel',xtickslabel);
+set(ax,'YTick',yticks);
+set(ax,'YTickLabel',ytickslabel);
+box on
+%set(gca,'xscale','log')
+hold off
+% }}}
+
+figure(4) % {{{
+res	= [2 1];
+res30	= [2 1 0.5 0.25];
+r5		= [ivaf1(end) ivaf5(end)];
+r15	= [ivaf2(end) ivaf6(end)];
+r30	= [ivaf3(end) ivaf8(end) ivaf9(end) ivaf10(end)];
+hold on
+plot(log(4),ivaf0(end),'^','MarkerSize',7,'MarkerFaceColor','b','MarkerEdgeColor','k');
+plot(log(2),ivafL1(end),'^','MarkerSize',7,'MarkerFaceColor','k','MarkerEdgeColor','k');
+plot(log(res),r5,'^','MarkerSize',7,'MarkerFaceColor','g','MarkerEdgeColor','k');
+plot(log(res),r15,'^','MarkerSize',7,'MarkerFaceColor','y','MarkerEdgeColor','k');
+plot(log(res30),r30,'^','MarkerSize',7,'MarkerFaceColor','r','MarkerEdgeColor','k');
+plot(log(res(1)),ivaf4(end),'^','MarkerSize',7,'MarkerFaceColor','m','MarkerEdgeColor','k');
+plot(log(res(2)),ivaf7(end),'^','MarkerSize',7,'MarkerFaceColor','c','MarkerEdgeColor','k');
+axis([log(0.2) log(5) 34.3 37.2])
+legend('L0','L1','R5','R15','R30','L1-R40','L2-R20','Location','northeast')
+title('\fontsize{15} Mismip+ steady state: IVAF X Rmax')
+ylabel('Ice volume above floatation (1000 x km3)')
+xlabel('Resolution (km)')
+xtickslabel = [0.25 0.5 1 2 4];
+xticks = log(xtickslabel);
+ytickslabel = [34.5 35.0 35.5 36.0 36.5 37.0];
+yticks = ytickslabel;
+ax = gca;
+set(ax,'XTick',xticks);
+set(ax,'XTickLabel',xtickslabel);
+set(ax,'YTick',yticks);
+set(ax,'YTickLabel',ytickslabel);
+box on
+%set(gca,'xscale','log')
+hold off
+% }}}
+
+figure(5) % {{{
+hold on
+plot(t0,GLy400,'*',t3,GLy403,'b',t8,GLy408,'m',t9,GLy409,'r',t10,GLy4010,'g','LineWidth',1.5)
+axis([0 25 365 460])
+legend('L0','L1-R30','L2-R30','L3-R30','L4-R30','Location','southeast')
+title('\fontsize{16} Mismip+ steady state - Rmax analysis')
+ylabel('GL @ y=40km (km)')
+xlabel('t (kyr)')
+hold off
+% }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/gl_position.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/gl_position.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/gl_position.m	(revision 27955)
@@ -0,0 +1,200 @@
+function [glx gly] = gl_position(md,step,level),
+
+		%initialization of some variables
+		if isfield(md.results,'TransientSolution')
+			data		= md.results.TransientSolution(step).MaskOceanLevelset;
+			if isfield(md.results.TransientSolution,'MeshElements')
+				index	= md.results.TransientSolution(step).MeshElements;
+				x		= md.results.TransientSolution(step).MeshX;
+				y		= md.results.TransientSolution(step).MeshY;
+			else
+				index	= md.mesh.elements;
+				x		= md.mesh.x;
+				y		= md.mesh.y;
+			end
+		else
+			data	= md.mask.ocean_levelset;
+			index	= md.mesh.elements;
+			x		= md.mesh.x;
+			y		= md.mesh.y;
+		end
+		numberofelements	= size(index,1);
+		elementslist		= 1:numberofelements;
+		c						= [];
+		h						= [];
+
+		%get unique edges in mesh
+		%1: list of edges
+		edges=[index(:,[1,2]); index(:,[2,3]); index(:,[3,1])];
+		%2: find unique edges
+		[edges,I,J]=unique(sort(edges,2),'rows');
+		%3: unique edge numbers
+		vec=J;
+		%4: unique edges numbers in each triangle (2 triangles sharing the same edge will have
+		%   the same edge number)
+		edges_tria=[vec(elementslist), vec(elementslist+numberofelements), vec(elementslist+2*numberofelements)];
+
+		%segments [nodes1 nodes2]
+		Seg1=index(:,[1 2]);
+		Seg2=index(:,[2 3]);
+		Seg3=index(:,[3 1]);
+
+		%segment numbers [1;4;6;...]
+		Seg1_num=edges_tria(:,1);
+		Seg2_num=edges_tria(:,2);
+		Seg3_num=edges_tria(:,3);
+
+		%value of data on each tips of the segments
+		Data1=data(Seg1);
+		Data2=data(Seg2);
+		Data3=data(Seg3);
+
+		%get the ranges for each segment
+		Range1=sort(Data1,2);
+		Range2=sort(Data2,2);
+		Range3=sort(Data3,2);
+
+		%find the segments that contain this value
+		pos1=(Range1(:,1)<level & Range1(:,2)>level);
+		pos2=(Range2(:,1)<level & Range2(:,2)>level);
+		pos3=(Range3(:,1)<level & Range3(:,2)>level);
+
+		%get elements
+		poselem12=(pos1 & pos2);
+		poselem13=(pos1 & pos3);
+		poselem23=(pos2 & pos3);
+		poselem=find(poselem12 | poselem13 | poselem23);
+		numelems=length(poselem);
+
+		%if no element has been flagged, skip to the next level
+		if numelems==0,
+			return,
+		end
+
+		%go through the elements and build the coordinates for each segment (1 by element)
+		x1=zeros(numelems,1);
+		x2=zeros(numelems,1);
+		y1=zeros(numelems,1);
+		y2=zeros(numelems,1);
+		edge_l=zeros(numelems,2);
+
+		for j=1:numelems,
+
+			weight1=(level-Data1(poselem(j),1))/(Data1(poselem(j),2)-Data1(poselem(j),1));
+			weight2=(level-Data2(poselem(j),1))/(Data2(poselem(j),2)-Data2(poselem(j),1));
+			weight3=(level-Data3(poselem(j),1))/(Data3(poselem(j),2)-Data3(poselem(j),1));
+
+			if poselem12(poselem(j));
+
+				x1(j)=x(Seg1(poselem(j),1))+weight1*(x(Seg1(poselem(j),2))-x(Seg1(poselem(j),1)));
+				x2(j)=x(Seg2(poselem(j),1))+weight2*(x(Seg2(poselem(j),2))-x(Seg2(poselem(j),1)));
+				y1(j)=y(Seg1(poselem(j),1))+weight1*(y(Seg1(poselem(j),2))-y(Seg1(poselem(j),1)));
+				y2(j)=y(Seg2(poselem(j),1))+weight2*(y(Seg2(poselem(j),2))-y(Seg2(poselem(j),1)));
+				edge_l(j,1)=Seg1_num(poselem(j));
+				edge_l(j,2)=Seg2_num(poselem(j));
+
+			elseif poselem13(poselem(j)),
+
+				x1(j)=x(Seg1(poselem(j),1))+weight1*(x(Seg1(poselem(j),2))-x(Seg1(poselem(j),1)));
+				x2(j)=x(Seg3(poselem(j),1))+weight3*(x(Seg3(poselem(j),2))-x(Seg3(poselem(j),1)));
+				y1(j)=y(Seg1(poselem(j),1))+weight1*(y(Seg1(poselem(j),2))-y(Seg1(poselem(j),1)));
+				y2(j)=y(Seg3(poselem(j),1))+weight3*(y(Seg3(poselem(j),2))-y(Seg3(poselem(j),1)));
+				edge_l(j,1)=Seg1_num(poselem(j));
+				edge_l(j,2)=Seg3_num(poselem(j));
+
+			elseif poselem23(poselem(j)),
+
+				x1(j)=x(Seg2(poselem(j),1))+weight2*(x(Seg2(poselem(j),2))-x(Seg2(poselem(j),1)));
+				x2(j)=x(Seg3(poselem(j),1))+weight3*(x(Seg3(poselem(j),2))-x(Seg3(poselem(j),1)));
+				y1(j)=y(Seg2(poselem(j),1))+weight2*(y(Seg2(poselem(j),2))-y(Seg2(poselem(j),1)));
+				y2(j)=y(Seg3(poselem(j),1))+weight3*(y(Seg3(poselem(j),2))-y(Seg3(poselem(j),1)));
+				edge_l(j,1)=Seg2_num(poselem(j));
+				edge_l(j,2)=Seg3_num(poselem(j));
+			else
+				%it shoud not go here
+			end
+		end
+
+		%now that we have the segments, we must try to connect them...
+
+		%loop over the subcontours
+		indice=0;
+		while ~isempty(edge_l),
+			indice=indice+1;
+
+			%take the right edge of the second segment and connect it to the next segments if any
+			e1=edge_l(1,1);   e2=edge_l(1,2);
+			xc=[x1(1);x2(1)]; yc=[y1(1);y2(1)];
+
+			%erase the lines corresponding to this edge
+			edge_l(1,:)=[];
+			x1(1)=[]; x2(1)=[];
+			y1(1)=[]; y2(1)=[];
+
+			[ro1,co1]=find(edge_l==e1);
+
+			while ~isempty(ro1)
+
+				if co1==1,
+					xc=[x2(ro1);xc]; yc=[y2(ro1);yc];
+
+					%next edge:
+					e1=edge_l(ro1,2);
+
+				else
+					xc=[x1(ro1);xc]; yc=[y1(ro1);yc];
+
+					%next edge:
+					e1=edge_l(ro1,1);
+				end
+
+				%erase the lines of this
+				edge_l(ro1,:)=[];
+				x1(ro1)=[]; x2(ro1)=[];
+				y1(ro1)=[]; y2(ro1)=[];
+
+				%next connection
+				[ro1,co1]=find(edge_l==e1);
+			end
+
+			%same thing the other way (to the right)
+			[ro2,co2]=find(edge_l==e2);
+
+			while ~isempty(ro2)
+
+				if co2==1,
+					xc=[xc;x2(ro2)]; yc=[yc;y2(ro2)];
+
+					%next edge:
+					e2=edge_l(ro2,2);
+				else
+					xc=[xc;x1(ro2)]; yc=[yc;y1(ro2)];
+
+					%next edge:
+					e2=edge_l(ro2,1);
+				end
+
+				%erase the lines of this
+				edge_l(ro2,:)=[];
+				x1(ro2)=[]; x2(ro2)=[];
+				y1(ro2)=[]; y2(ro2)=[];
+
+				%next connection
+				[ro2,co2]=find(edge_l==e2);
+			end
+
+			% Update the CS data structure as per "contours.m"
+			% so that clabel works
+			c = horzcat(c,[level, xc'; length(xc), yc']);
+	%		y0=find(c(2,:)==0);
+	%		y50=find(c(2,:)==50000);
+	%		gl0(glstep)=c(1,y0);
+	%		gl50(glstep)=c(1,y50);
+	glx=c(1,1:end)';
+	gly=c(2,1:end)';
+	pos=find(glx~=0);
+	glx=glx(pos);
+	gly=gly(pos);
+
+end
+	%min(c(1,2:end))
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/gl_position_static.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/gl_position_static.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/gl_position_static.m	(revision 27955)
@@ -0,0 +1,200 @@
+function [glx gly] = gl_position(md,step,level),
+
+		%initialization of some variables
+		if isfield(md.results,'TransientSolution') & false
+			data		= md.results.TransientSolution(step).MaskOceanLevelset;
+			if isfield(md.results.TransientSolution,'MeshElements')
+				index	= md.results.TransientSolution(step).MeshElements;
+				x		= md.results.TransientSolution(step).MeshX;
+				y		= md.results.TransientSolution(step).MeshY;
+			else
+				index	= md.mesh.elements;
+				x		= md.mesh.x;
+				y		= md.mesh.y;
+			end
+		else
+			data	= md.mask.ocean_levelset;
+			index	= md.mesh.elements;
+			x		= md.mesh.x;
+			y		= md.mesh.y;
+		end
+		numberofelements	= size(index,1);
+		elementslist		= 1:numberofelements;
+		c						= [];
+		h						= [];
+
+		%get unique edges in mesh
+		%1: list of edges
+		edges=[index(:,[1,2]); index(:,[2,3]); index(:,[3,1])];
+		%2: find unique edges
+		[edges,I,J]=unique(sort(edges,2),'rows');
+		%3: unique edge numbers
+		vec=J;
+		%4: unique edges numbers in each triangle (2 triangles sharing the same edge will have
+		%   the same edge number)
+		edges_tria=[vec(elementslist), vec(elementslist+numberofelements), vec(elementslist+2*numberofelements)];
+
+		%segments [nodes1 nodes2]
+		Seg1=index(:,[1 2]);
+		Seg2=index(:,[2 3]);
+		Seg3=index(:,[3 1]);
+
+		%segment numbers [1;4;6;...]
+		Seg1_num=edges_tria(:,1);
+		Seg2_num=edges_tria(:,2);
+		Seg3_num=edges_tria(:,3);
+
+		%value of data on each tips of the segments
+		Data1=data(Seg1);
+		Data2=data(Seg2);
+		Data3=data(Seg3);
+
+		%get the ranges for each segment
+		Range1=sort(Data1,2);
+		Range2=sort(Data2,2);
+		Range3=sort(Data3,2);
+
+		%find the segments that contain this value
+		pos1=(Range1(:,1)<level & Range1(:,2)>level);
+		pos2=(Range2(:,1)<level & Range2(:,2)>level);
+		pos3=(Range3(:,1)<level & Range3(:,2)>level);
+
+		%get elements
+		poselem12=(pos1 & pos2);
+		poselem13=(pos1 & pos3);
+		poselem23=(pos2 & pos3);
+		poselem=find(poselem12 | poselem13 | poselem23);
+		numelems=length(poselem);
+
+		%if no element has been flagged, skip to the next level
+		if numelems==0,
+			return,
+		end
+
+		%go through the elements and build the coordinates for each segment (1 by element)
+		x1=zeros(numelems,1);
+		x2=zeros(numelems,1);
+		y1=zeros(numelems,1);
+		y2=zeros(numelems,1);
+		edge_l=zeros(numelems,2);
+
+		for j=1:numelems,
+
+			weight1=(level-Data1(poselem(j),1))/(Data1(poselem(j),2)-Data1(poselem(j),1));
+			weight2=(level-Data2(poselem(j),1))/(Data2(poselem(j),2)-Data2(poselem(j),1));
+			weight3=(level-Data3(poselem(j),1))/(Data3(poselem(j),2)-Data3(poselem(j),1));
+
+			if poselem12(poselem(j));
+
+				x1(j)=x(Seg1(poselem(j),1))+weight1*(x(Seg1(poselem(j),2))-x(Seg1(poselem(j),1)));
+				x2(j)=x(Seg2(poselem(j),1))+weight2*(x(Seg2(poselem(j),2))-x(Seg2(poselem(j),1)));
+				y1(j)=y(Seg1(poselem(j),1))+weight1*(y(Seg1(poselem(j),2))-y(Seg1(poselem(j),1)));
+				y2(j)=y(Seg2(poselem(j),1))+weight2*(y(Seg2(poselem(j),2))-y(Seg2(poselem(j),1)));
+				edge_l(j,1)=Seg1_num(poselem(j));
+				edge_l(j,2)=Seg2_num(poselem(j));
+
+			elseif poselem13(poselem(j)),
+
+				x1(j)=x(Seg1(poselem(j),1))+weight1*(x(Seg1(poselem(j),2))-x(Seg1(poselem(j),1)));
+				x2(j)=x(Seg3(poselem(j),1))+weight3*(x(Seg3(poselem(j),2))-x(Seg3(poselem(j),1)));
+				y1(j)=y(Seg1(poselem(j),1))+weight1*(y(Seg1(poselem(j),2))-y(Seg1(poselem(j),1)));
+				y2(j)=y(Seg3(poselem(j),1))+weight3*(y(Seg3(poselem(j),2))-y(Seg3(poselem(j),1)));
+				edge_l(j,1)=Seg1_num(poselem(j));
+				edge_l(j,2)=Seg3_num(poselem(j));
+
+			elseif poselem23(poselem(j)),
+
+				x1(j)=x(Seg2(poselem(j),1))+weight2*(x(Seg2(poselem(j),2))-x(Seg2(poselem(j),1)));
+				x2(j)=x(Seg3(poselem(j),1))+weight3*(x(Seg3(poselem(j),2))-x(Seg3(poselem(j),1)));
+				y1(j)=y(Seg2(poselem(j),1))+weight2*(y(Seg2(poselem(j),2))-y(Seg2(poselem(j),1)));
+				y2(j)=y(Seg3(poselem(j),1))+weight3*(y(Seg3(poselem(j),2))-y(Seg3(poselem(j),1)));
+				edge_l(j,1)=Seg2_num(poselem(j));
+				edge_l(j,2)=Seg3_num(poselem(j));
+			else
+				%it shoud not go here
+			end
+		end
+
+		%now that we have the segments, we must try to connect them...
+
+		%loop over the subcontours
+		indice=0;
+		while ~isempty(edge_l),
+			indice=indice+1;
+
+			%take the right edge of the second segment and connect it to the next segments if any
+			e1=edge_l(1,1);   e2=edge_l(1,2);
+			xc=[x1(1);x2(1)]; yc=[y1(1);y2(1)];
+
+			%erase the lines corresponding to this edge
+			edge_l(1,:)=[];
+			x1(1)=[]; x2(1)=[];
+			y1(1)=[]; y2(1)=[];
+
+			[ro1,co1]=find(edge_l==e1);
+
+			while ~isempty(ro1)
+
+				if co1==1,
+					xc=[x2(ro1);xc]; yc=[y2(ro1);yc];
+
+					%next edge:
+					e1=edge_l(ro1,2);
+
+				else
+					xc=[x1(ro1);xc]; yc=[y1(ro1);yc];
+
+					%next edge:
+					e1=edge_l(ro1,1);
+				end
+
+				%erase the lines of this
+				edge_l(ro1,:)=[];
+				x1(ro1)=[]; x2(ro1)=[];
+				y1(ro1)=[]; y2(ro1)=[];
+
+				%next connection
+				[ro1,co1]=find(edge_l==e1);
+			end
+
+			%same thing the other way (to the right)
+			[ro2,co2]=find(edge_l==e2);
+
+			while ~isempty(ro2)
+
+				if co2==1,
+					xc=[xc;x2(ro2)]; yc=[yc;y2(ro2)];
+
+					%next edge:
+					e2=edge_l(ro2,2);
+				else
+					xc=[xc;x1(ro2)]; yc=[yc;y1(ro2)];
+
+					%next edge:
+					e2=edge_l(ro2,1);
+				end
+
+				%erase the lines of this
+				edge_l(ro2,:)=[];
+				x1(ro2)=[]; x2(ro2)=[];
+				y1(ro2)=[]; y2(ro2)=[];
+
+				%next connection
+				[ro2,co2]=find(edge_l==e2);
+			end
+
+			% Update the CS data structure as per "contours.m"
+			% so that clabel works
+			c = horzcat(c,[level, xc'; length(xc), yc']);
+	%		y0=find(c(2,:)==0);
+	%		y50=find(c(2,:)==50000);
+	%		gl0(glstep)=c(1,y0);
+	%		gl50(glstep)=c(1,y50);
+	glx=c(1,1:end)';
+	gly=c(2,1:end)';
+	pos=find(glx~=0);
+	glx=glx(pos);
+	gly=gly(pos);
+
+end
+	%min(c(1,2:end))
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/ice_evolution.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/ice_evolution.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/ice_evolution.m	(revision 27955)
@@ -0,0 +1,118 @@
+%ga: grounded area
+%iv: ice volume
+%ivaf: ice volume above floatation
+%GL_y : grounding line position @ y (y comes in m)
+%nelem : number of elements
+% usage:
+%
+% Default: y=40km, i0=1
+% [ga iv ivaf GL_y IF_y nelem t] = ice_evolution(md);
+%
+% Default: y=40km
+% [ga iv ivaf GL_y IF_y nelem t] = ice_evolution(md,i0);
+%
+% Use this for y the borders (y=0 or y=ymax)
+% [ga iv ivaf GL_y IF_y nelem t] = ice_evolution(md,i0,y);
+%
+%
+
+function [ga iv ivaf GL_y IF_y nelem t] = ice_evolution(varargin),
+
+	ga			= [];
+	iv			= [];
+	ivaf		= [];
+	GL_y		= [];
+	IF_y		= [];
+	nelem		= [];
+	t			= [];
+
+	if(nargin==0)
+		error('it is necessary the model!')
+	elseif(nargin==1)
+		% Defoult is y=40km
+		i0	= 1;
+		y0	= 35000;
+		y1 = 45000;
+		dy = 100;
+		y  = 40000;
+	elseif(nargin==2)
+		i0=varargin{2};
+		% Defoult is y=40km
+		y0	= 35000;
+		y1 = 45000;
+		dy = 100;
+		y  = 40000;
+	elseif(nargin==3)
+		i0 = varargin{2};
+		y  = varargin{3};
+		dy = 10;
+		y0	= y-dy;
+		y1 = y+dy;
+	else
+		error('number of inputs is more than 3');
+	end
+	%set the model
+	md			=varargin{1};
+	nsteps	= length(md.results.TransientSolution);
+
+
+	for i=i0:nsteps,
+		ga(i)			= md.results.TransientSolution(i).GroundedArea;
+		iv(i)			= md.results.TransientSolution(i).IceVolume;
+		ivaf(i)		= md.results.TransientSolution(i).IceVolumeAboveFloatation;
+		if(isfield(md.results.TransientSolution,'MeshElements'))
+			nelem(i)		= size(md.results.TransientSolution(i).MeshElements,1);
+		else
+			nelem(i)		= md.mesh.numberofelements;
+		end
+		t(i)			= md.results.TransientSolution(i).time;	
+		%find GL position between y0 and y1 {{{
+		[glx gly]	= gl_position(md,i,0);
+		pos			= find(gly<y1 & gly>y0);
+		x				= gly(pos);
+		v				= glx(pos);
+		if(length(pos)==0)
+			error('pos is null')
+		elseif(length(pos)==1)
+			%this should be used for y=0 or y=ymax
+			GL_y(i)	= v;
+		else
+			%this should be used when y is inside the domain; so, use linear interpolation
+			xq			= [y0:dy:y1];
+			vq			= interp1(x,v,xq,'linear');
+			pos		= find(xq==y);
+			if(pos)
+				GL_y(i)	= vq(pos);
+			else
+				error('pos is null')
+			end
+		end
+		%}}}	
+		%find IF position between y0 and y1 {{{
+		[ifx ify]	= if_position(md,i,0);
+		if(length(ifx)==0)
+			continue
+		end
+		pos			= find(ify<y1 & ify>y0);
+		x				= ify(pos);
+		v				= ifx(pos);
+		if(length(pos)==0)
+			error('pos is null')
+		elseif(length(pos)==1)
+			%this should be used for y=0 or y=ymax
+			IF_y(i)	= v;
+		else
+			%this should be used when y is inside the domain; so, use linear interpolation
+			xq			= [y0:dy:y1];
+			vq			= interp1(x,v,xq,'linear');
+			pos		= find(xq==y);
+			if(pos)
+				IF_y(i)	= vq(pos);
+			else
+				error('pos is null')
+			end
+		end
+		%}}}
+	end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/if_position.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/if_position.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/if_position.m	(revision 27955)
@@ -0,0 +1,199 @@
+function [ifx ify] = if_position(md,step,level),
+
+		if(~isfield(md.results.TransientSolution,'MaskIceLevelset'))
+			ifx=[];
+			ify=[];
+			return
+		end
+
+		%initialization of some variables
+		data						= md.results.TransientSolution(step).MaskIceLevelset;
+		if(isfield(md.results.TransientSolution,'MeshElements'))
+			index					= md.results.TransientSolution(step).MeshElements;
+			x						= md.results.TransientSolution(step).MeshX;
+			y						= md.results.TransientSolution(step).MeshY;
+		else
+			index					= md.mesh.elements;
+			x						= md.mesh.x;
+			y						= md.mesh.y;
+		end
+		numberofelements		= size(index,1);
+		elementslist			= 1:numberofelements;
+		c							= [];
+		h							= [];
+
+		%get unique edges in mesh
+		%1: list of edges
+		edges=[index(:,[1,2]); index(:,[2,3]); index(:,[3,1])];
+		%2: find unique edges
+		[edges,I,J]=unique(sort(edges,2),'rows');
+		%3: unique edge numbers
+		vec=J;
+		%4: unique edges numbers in each triangle (2 triangles sharing the same edge will have
+		%   the same edge number)
+		edges_tria=[vec(elementslist), vec(elementslist+numberofelements), vec(elementslist+2*numberofelements)];
+
+		%segments [nodes1 nodes2]
+		Seg1=index(:,[1 2]);
+		Seg2=index(:,[2 3]);
+		Seg3=index(:,[3 1]);
+
+		%segment numbers [1;4;6;...]
+		Seg1_num=edges_tria(:,1);
+		Seg2_num=edges_tria(:,2);
+		Seg3_num=edges_tria(:,3);
+
+		%value of data on each tips of the segments
+		Data1=data(Seg1);
+		Data2=data(Seg2);
+		Data3=data(Seg3);
+
+		%get the ranges for each segment
+		Range1=sort(Data1,2);
+		Range2=sort(Data2,2);
+		Range3=sort(Data3,2);
+
+		%find the segments that contain this value
+		pos1=(Range1(:,1)<level & Range1(:,2)>level);
+		pos2=(Range2(:,1)<level & Range2(:,2)>level);
+		pos3=(Range3(:,1)<level & Range3(:,2)>level);
+
+		%get elements
+		poselem12=(pos1 & pos2);
+		poselem13=(pos1 & pos3);
+		poselem23=(pos2 & pos3);
+		poselem=find(poselem12 | poselem13 | poselem23);
+		numelems=length(poselem);
+
+		%if no element has been flagged, skip to the next level
+		if numelems==0,
+			return,
+		end
+
+		%go through the elements and build the coordinates for each segment (1 by element)
+		x1=zeros(numelems,1);
+		x2=zeros(numelems,1);
+		y1=zeros(numelems,1);
+		y2=zeros(numelems,1);
+		edge_l=zeros(numelems,2);
+
+		for j=1:numelems,
+
+			weight1=(level-Data1(poselem(j),1))/(Data1(poselem(j),2)-Data1(poselem(j),1));
+			weight2=(level-Data2(poselem(j),1))/(Data2(poselem(j),2)-Data2(poselem(j),1));
+			weight3=(level-Data3(poselem(j),1))/(Data3(poselem(j),2)-Data3(poselem(j),1));
+
+			if poselem12(poselem(j));
+
+				x1(j)=x(Seg1(poselem(j),1))+weight1*(x(Seg1(poselem(j),2))-x(Seg1(poselem(j),1)));
+				x2(j)=x(Seg2(poselem(j),1))+weight2*(x(Seg2(poselem(j),2))-x(Seg2(poselem(j),1)));
+				y1(j)=y(Seg1(poselem(j),1))+weight1*(y(Seg1(poselem(j),2))-y(Seg1(poselem(j),1)));
+				y2(j)=y(Seg2(poselem(j),1))+weight2*(y(Seg2(poselem(j),2))-y(Seg2(poselem(j),1)));
+				edge_l(j,1)=Seg1_num(poselem(j));
+				edge_l(j,2)=Seg2_num(poselem(j));
+
+			elseif poselem13(poselem(j)),
+
+				x1(j)=x(Seg1(poselem(j),1))+weight1*(x(Seg1(poselem(j),2))-x(Seg1(poselem(j),1)));
+				x2(j)=x(Seg3(poselem(j),1))+weight3*(x(Seg3(poselem(j),2))-x(Seg3(poselem(j),1)));
+				y1(j)=y(Seg1(poselem(j),1))+weight1*(y(Seg1(poselem(j),2))-y(Seg1(poselem(j),1)));
+				y2(j)=y(Seg3(poselem(j),1))+weight3*(y(Seg3(poselem(j),2))-y(Seg3(poselem(j),1)));
+				edge_l(j,1)=Seg1_num(poselem(j));
+				edge_l(j,2)=Seg3_num(poselem(j));
+
+			elseif poselem23(poselem(j)),
+
+				x1(j)=x(Seg2(poselem(j),1))+weight2*(x(Seg2(poselem(j),2))-x(Seg2(poselem(j),1)));
+				x2(j)=x(Seg3(poselem(j),1))+weight3*(x(Seg3(poselem(j),2))-x(Seg3(poselem(j),1)));
+				y1(j)=y(Seg2(poselem(j),1))+weight2*(y(Seg2(poselem(j),2))-y(Seg2(poselem(j),1)));
+				y2(j)=y(Seg3(poselem(j),1))+weight3*(y(Seg3(poselem(j),2))-y(Seg3(poselem(j),1)));
+				edge_l(j,1)=Seg2_num(poselem(j));
+				edge_l(j,2)=Seg3_num(poselem(j));
+			else
+				%it shoud not go here
+			end
+		end
+
+		%now that we have the segments, we must try to connect them...
+
+		%loop over the subcontours
+		indice=0;
+		while ~isempty(edge_l),
+			indice=indice+1;
+
+			%take the right edge of the second segment and connect it to the next segments if any
+			e1=edge_l(1,1);   e2=edge_l(1,2);
+			xc=[x1(1);x2(1)]; yc=[y1(1);y2(1)];
+
+			%erase the lines corresponding to this edge
+			edge_l(1,:)=[];
+			x1(1)=[]; x2(1)=[];
+			y1(1)=[]; y2(1)=[];
+
+			[ro1,co1]=find(edge_l==e1);
+
+			while ~isempty(ro1)
+
+				if co1==1,
+					xc=[x2(ro1);xc]; yc=[y2(ro1);yc];
+
+					%next edge:
+					e1=edge_l(ro1,2);
+
+				else
+					xc=[x1(ro1);xc]; yc=[y1(ro1);yc];
+
+					%next edge:
+					e1=edge_l(ro1,1);
+				end
+
+				%erase the lines of this
+				edge_l(ro1,:)=[];
+				x1(ro1)=[]; x2(ro1)=[];
+				y1(ro1)=[]; y2(ro1)=[];
+
+				%next connection
+				[ro1,co1]=find(edge_l==e1);
+			end
+
+			%same thing the other way (to the right)
+			[ro2,co2]=find(edge_l==e2);
+
+			while ~isempty(ro2)
+
+				if co2==1,
+					xc=[xc;x2(ro2)]; yc=[yc;y2(ro2)];
+
+					%next edge:
+					e2=edge_l(ro2,2);
+				else
+					xc=[xc;x1(ro2)]; yc=[yc;y1(ro2)];
+
+					%next edge:
+					e2=edge_l(ro2,1);
+				end
+
+				%erase the lines of this
+				edge_l(ro2,:)=[];
+				x1(ro2)=[]; x2(ro2)=[];
+				y1(ro2)=[]; y2(ro2)=[];
+
+				%next connection
+				[ro2,co2]=find(edge_l==e2);
+			end
+
+			% Update the CS data structure as per "contours.m"
+			% so that clabel works
+			c = horzcat(c,[level, xc'; length(xc), yc']);
+	%		y0=find(c(2,:)==0);
+	%		y50=find(c(2,:)==50000);
+	%		gl0(glstep)=c(1,y0);
+	%		gl50(glstep)=c(1,y50);
+	ifx=c(1,1:end)';
+	ify=c(2,1:end)';
+	pos=find(ifx~=0);
+	ifx=ifx(pos);
+	ify=ify(pos);
+
+end
+	%min(c(1,2:end))
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/writeNetCDF.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/writeNetCDF.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/mismip/writeNetCDF.m	(revision 27955)
@@ -0,0 +1,122 @@
+function writeNetCDF(md0,md,step,dt,ncfile),
+
+ 	xGL={};
+   yGL={};
+   iceThicknessGL={};
+   uBaseGL={};
+   vBaseGL={};
+   iceVolume=[];
+   iceVAF=[];
+   groundedArea=[];
+   time=[];
+
+	%Inserting time 0. md0 must be last experiment (e.g., Ice1r for Ice1ra)
+	if(isfield(md0.results.TransientSolution,'MeshElements'))
+      x     = md0.results.TransientSolution(end).MeshX;
+      y     = md0.results.TransientSolution(end).MeshY;
+   else
+      x     = md0.mesh.x;
+      y     = md0.mesh.y;
+   end	
+	time(1)					= 0;
+	[xgl_step ygl_step]	= gl_position(md0,length(md0.results.TransientSolution),0);
+	xGL{1}					= xgl_step;
+	yGL{1}					= ygl_step;
+	iceVolume(1)			= md0.results.TransientSolution(end).IceVolume;
+	iceVAF(1)				= md0.results.TransientSolution(end).IceVolumeAboveFloatation;
+	groundedArea(1)		= md0.results.TransientSolution(end).GroundedArea;
+	iceThicknessGL{1}		= griddata(x,y,md0.results.TransientSolution(end).Thickness,xgl_step,ygl_step);
+	uBaseGL{1}				= griddata(x,y,md0.results.TransientSolution(end).Vx,xgl_step,ygl_step);
+	vBaseGL{1}				= griddata(x,y,md0.results.TransientSolution(end).Vy,xgl_step,ygl_step);
+
+   for i=2:length(step),
+		if(isfield(md.results.TransientSolution,'MeshElements'))
+			x     = md.results.TransientSolution(step(i)).MeshX;
+			y     = md.results.TransientSolution(step(i)).MeshY;
+		else
+			x     = md.mesh.x;
+			y     = md.mesh.y;
+		end	
+		time(i)=md.results.TransientSolution(step(i)).time;	
+		[xgl_step ygl_step]=gl_position(md,step(i),0);
+      xGL{i}=xgl_step;
+      yGL{i}=ygl_step;
+      iceVolume(i)=md.results.TransientSolution(step(i)).IceVolume;
+      iceVAF(i)=md.results.TransientSolution(step(i)).IceVolumeAboveFloatation;
+      groundedArea(i)=md.results.TransientSolution(step(i)).GroundedArea;
+      iceThicknessGL{i}=griddata(x,y,md.results.TransientSolution(step(i)).Thickness,xgl_step,ygl_step);
+      uBaseGL{i}=griddata(x,y,md.results.TransientSolution(step(i)).Vx,xgl_step,ygl_step);
+      vBaseGL{i}=griddata(x,y,md.results.TransientSolution(step(i)).Vy,xgl_step,ygl_step);
+   end
+   uSurfaceGL=uBaseGL;
+   vSurfaceGL=vBaseGL;
+   uMeanGL=uBaseGL;
+   vMeanGL=vBaseGL;
+	
+	 %Create netcdf
+   mode = netcdf.getConstant('NETCDF4');
+   mode = bitor(mode,netcdf.getConstant('CLASSIC_MODEL'));
+   ncid=netcdf.create(ncfile,mode);
+
+   %General attributes
+   netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Author','Helene Seroussi (helene.seroussi@jpl.nasa.gov)');
+   netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Model','ISSM (Ice Sheet System Model)');
+   netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Notes','Experiments performed at Caltech Jet Propulsion Laboratory, Pasadena');
+   netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Date',date());
+
+   %Define dimensions
+   gl_id    = netcdf.defDim(ncid,'nPointGL',netcdf.getConstant('NC_UNLIMITED'));
+   ntime_id  = netcdf.defDim(ncid,'nTime',length(time));
+
+   %Define variables
+   volume_var_id = netcdf.defVar(ncid,'iceVolume','NC_FLOAT',[ntime_id]);
+   VAF_var_id = netcdf.defVar(ncid,'iceVAF','NC_FLOAT',[ntime_id]);
+   grounded_var_id = netcdf.defVar(ncid,'groundedArea','NC_FLOAT',[ntime_id]);
+   xgl_var_id = netcdf.defVar(ncid,'xGL','NC_FLOAT',[ntime_id,gl_id]);
+   ygl_var_id = netcdf.defVar(ncid,'yGL','NC_FLOAT',[ntime_id,gl_id]);
+   thickness_var_id = netcdf.defVar(ncid,'iceThicknessGL','NC_FLOAT',[ntime_id,gl_id]);
+   ubase_var_id = netcdf.defVar(ncid,'uBaseGL','NC_FLOAT',[ntime_id,gl_id]);
+   vbase_var_id = netcdf.defVar(ncid,'vBaseGL','NC_FLOAT',[ntime_id,gl_id]);
+   usurface_var_id = netcdf.defVar(ncid,'uSurfaceGL','NC_FLOAT',[ntime_id,gl_id]);
+   vsurface_var_id = netcdf.defVar(ncid,'vSurfaceGL','NC_FLOAT',[ntime_id,gl_id]);
+   umean_var_id = netcdf.defVar(ncid,'uMeanGL','NC_FLOAT',[ntime_id,gl_id]);
+   vmean_var_id = netcdf.defVar(ncid,'vMeanGL','NC_FLOAT',[ntime_id,gl_id]);
+   time_var_id = netcdf.defVar(ncid,'time','NC_FLOAT',[ntime_id]);
+
+	%Define default fill values
+   if(false),
+		netcdf.defVarFill(ncid,xgl_var_id,false,NaN);
+		netcdf.defVarFill(ncid,ygl_var_id,false,NaN);
+		netcdf.defVarFill(ncid,thickness_var_id,false,NaN);
+		netcdf.defVarFill(ncid,ubase_var_id,false,NaN);
+		netcdf.defVarFill(ncid,vbase_var_id,false,NaN);
+		netcdf.defVarFill(ncid,usurface_var_id,false,NaN);
+		netcdf.defVarFill(ncid,vsurface_var_id,false,NaN);
+		netcdf.defVarFill(ncid,umean_var_id,false,NaN);
+		netcdf.defVarFill(ncid,vmean_var_id,false,NaN);
+	end
+   
+	netcdf.endDef(ncid);
+	
+	%Write variables
+   netcdf.putVar(ncid,volume_var_id,iceVolume);
+   netcdf.putVar(ncid,VAF_var_id,iceVAF);
+   netcdf.putVar(ncid,grounded_var_id,groundedArea);
+   for i=1:length(time),
+      netcdf.putVar(ncid,xgl_var_id,[i-1,0],[1,length(xGL{i})],xGL{i}');
+      netcdf.putVar(ncid,ygl_var_id,[i-1,0],[1,length(xGL{i})],yGL{i}');
+      netcdf.putVar(ncid,thickness_var_id,[i-1,0],[1,length(xGL{i})],iceThicknessGL{i}');
+      netcdf.putVar(ncid,ubase_var_id,[i-1,0],[1,length(xGL{i})],uBaseGL{i}');
+      netcdf.putVar(ncid,vbase_var_id,[i-1,0],[1,length(xGL{i})],vBaseGL{i}');
+      netcdf.putVar(ncid,usurface_var_id,[i-1,0],[1,length(xGL{i})],uSurfaceGL{i}');
+      netcdf.putVar(ncid,vsurface_var_id,[i-1,0],[1,length(xGL{i})],vSurfaceGL{i}');
+      netcdf.putVar(ncid,umean_var_id,[i-1,0],[1,length(xGL{i})],uMeanGL{i}');
+      netcdf.putVar(ncid,vmean_var_id,[i-1,0],[1,length(xGL{i})],vMeanGL{i}');
+   end
+   netcdf.putVar(ncid,time_var_id,time+dt);
+
+   %Close netcdf
+   netcdf.close(ncid)
+
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/remesh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/remesh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/contrib/tsantos/remesh.m	(revision 27955)
@@ -0,0 +1,81 @@
+function mdOut = remesh(md,parfile,time_step)
+%Set the new mesh (refined) into the model md
+if nargin<3,
+	time_step=length(md.results.TransientSolution);
+end
+
+NewModel = model;
+
+% geometry
+NewModel.mesh				= mesh2d();
+NewModel.mesh.x			= md.results.TransientSolution(time_step).MeshX;
+NewModel.mesh.y			= md.results.TransientSolution(time_step).MeshY;
+NewModel.mesh.elements	= md.results.TransientSolution(time_step).MeshElements;
+
+% build segments. CONVEX HULL: IT JUST WORKS FOR REGULAR MESHES, WITHOUT "BAYS"
+disp('Building segments: searching vertices by convex hull...');
+k					= convhull(NewModel.mesh.x,NewModel.mesh.y);
+nsegments		= length(k)-1;
+nelements		= size(NewModel.mesh.elements,1);
+segments			= zeros(nsegments,3);
+segments(:,1)	= k(1:nsegments);
+segments(:,2)	= k(2:(nsegments+1));
+disp('Building segments: searching boundary elements...');
+for s=1:nsegments,
+	for e=1:nelements,
+		if any(NewModel.mesh.elements(e,:)==segments(s,1)) && any(NewModel.mesh.elements(e,:)==segments(s,2))
+			segments(s,3)=e;
+			break;
+		end
+	end
+
+	if segments(s,3)==0,
+		%error('Element not found!');
+	end
+end
+
+NewModel.mesh.segments  = segments;
+%NewModel.mesh.segmentmarkers = segmentmarkers;
+
+% connectivity
+% Fill in rest of fields:
+NewModel.mesh.numberofelements = size(NewModel.mesh.elements,1);
+NewModel.mesh.numberofvertices = length(NewModel.mesh.x);
+NewModel.mesh.vertexonboundary = zeros(NewModel.mesh.numberofvertices,1);
+NewModel.mesh.vertexonboundary(NewModel.mesh.segments(:,1:2)) = 1;
+
+% Now, build the connectivity tables for this mesh.
+NewModel.mesh.vertexconnectivity = NodeConnectivity(NewModel.mesh.elements,NewModel.mesh.numberofvertices);
+NewModel.mesh.elementconnectivity = ElementConnectivity(NewModel.mesh.elements,NewModel.mesh.vertexconnectivity);
+
+% Building a bed topography and others parameters
+NewModel = setmask(NewModel,'','');
+NewModel = parameterize(NewModel, parfile);
+
+% Setting initialization
+NewModel.initialization.vx				= md.results.TransientSolution(time_step).Vx;
+NewModel.initialization.vy				= md.results.TransientSolution(time_step).Vy;
+NewModel.initialization.vz				= zeros(md.mesh.numberofvertices,1);
+NewModel.initialization.vel			= md.results.TransientSolution(time_step).Vel;
+NewModel.initialization.pressure    = md.results.TransientSolution(time_step).Pressure;
+NewModel.geometry.surface				= md.results.TransientSolution(time_step).Surface;
+NewModel.geometry.base					= md.results.TransientSolution(time_step).Base;
+NewModel.geometry.bed					= md.results.TransientSolution(time_step).Bed;%md.geometry.bed; %use from parameterize
+NewModel.geometry.thickness			= md.results.TransientSolution(time_step).Thickness;
+NewModel.mask.ocean_levelset  = md.results.TransientSolution(time_step).MaskOceanLevelset;
+    
+%copy other data
+NewModel.miscellaneous          = md.miscellaneous;
+NewModel.timestepping           = md.timestepping;
+NewModel.settings               = md.settings;
+NewModel.stressbalance.maxiter  = md.stressbalance.maxiter;
+NewModel.stressbalance.abstol   = md.stressbalance.abstol;
+NewModel.stressbalance.restol   = md.stressbalance.restol;
+NewModel.verbose                = md.verbose;
+NewModel.cluster                = md.cluster;
+NewModel.transient              = md.transient;
+NewModel.amr                    = md.amr;
+
+mdOut = NewModel;
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/epsg2proj.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/epsg2proj.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/epsg2proj.m	(revision 27955)
@@ -0,0 +1,20 @@
+function string = epsg2proj(epsg)
+%EPSG2PROJ - uses gdalsrsinfo to provide PROJ.4 compatible string from 
+%EPSG code
+%
+%   Usage:
+%      proj4string = epsg2proj(4326);
+%
+%   Example:
+%      proj4string = epsg2proj(4326);
+%      return proj4string='+proj=longlat +datum=wgs84 +no_defs'
+%
+
+%Call PROJ library
+[status, string]=system(['projinfo -o PROJ -q epsg:' num2str(epsg)]);
+
+%Check status
+if status~=0; error(string); end
+
+%remove trailing  blanks
+string = deblank(string);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/epsg2proj.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/epsg2proj.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/epsg2proj.py	(revision 27955)
@@ -0,0 +1,30 @@
+import subprocess
+
+
+def epsg2proj(epsg):  #{{{
+    """EPSG2PROJ - uses gdalsrsinfo to provide PROJ.4 compatible string
+    from EPSG code
+
+    Usage:
+        proj4string = epsg2proj(4326)
+
+    Example:
+        proj4string = epsg2proj(4326)
+        return proj4string = '+proj=longlat +datum=wgs84 +no_defs'
+
+    TODO:
+    - Implement try/catch for subproc.communicate()
+        - In case of Python 2, except socket.timeout: https://docs.python.org/3/library/socket.html?highlight=socket%20timeout#socket.timeout
+        - In case of Python 3, except TimeoutExpired: https://docs.python.org/3/library/subprocess.html#subprocess.SubprocessError
+    """
+
+    #First, get GDAL version
+    #subproc_args = "gdalsrsinfo --version | awk '{print $2}' | cut -d '.' -f1"
+    subproc_args = "projinfo -o PROJ -q epsg:{}".format(epsg)
+    subproc = subprocess.Popen(subproc_args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
+    outs, errs = subproc.communicate()
+    if errs != '':
+        raise RuntimeError("epsg2proj: call to projinfo failed: {}".format(errs))
+
+    return outs
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/flaglatlongradius.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/flaglatlongradius.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/flaglatlongradius.m	(revision 27955)
@@ -0,0 +1,15 @@
+function indices=flaglatlongradius(lat,long,lat0,long0,radius) % {{{
+%FLAGLATLONGRADIUS - given a vector of lat,long, and a circle of radius degrees around lat0,long0, 
+%                    return the indices into lat,long that are within this circle. 
+%                    lat and long should be between -90 and 90, and -180 and +180 respectively.
+
+	%three cases, depending on whether our circle goes past the -180 +180 longitude line: 
+	if (long0-radius)<=-180,
+		pos=find(long>0); long(pos)=long(pos)-360;
+	elseif (long0+radius)>=180,
+		pos=find(long<0); long(pos)=360+long(pos);
+	else
+	end
+	distance=sqrt( (lat-lat0).^2+ (long-long0).^2);
+	indices=find(distance<=radius);
+% }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/flaglatlongradius.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/flaglatlongradius.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/flaglatlongradius.py	(revision 27955)
@@ -0,0 +1,31 @@
+import math
+
+import numpy as np
+
+
+def flaglatlogradius(lat, long, lat0, long0, radius):  # {{{
+    '''
+    FLAGLATLONGRADIUS - given a vector of lat, long, and a circle of radius 
+                        degrees around lat0, long0, return the indices into 
+                        lat, long that are within this circle.
+                        lat and long should be between -90 and 90, and -180 and 
+                        +180 respectively.
+    '''
+
+    #three cases, depending on whether our circle goes past the -180 +180 longitude line:
+    if (long0 - radius) <= -180:
+        for i in range(len(long)):
+            if long[i] > 0:
+                long[i] = long[i] - 360
+    elif (long0 + radius) >= 180:
+        for i in range(len(long)):
+            if long[i] < 0:
+                long[i] = long[i] + 360
+    else:
+        pass
+
+    distance    = np.array(math.sqrt(pow((lat[i] - lat0[i]), 2) + pow((long[i] - long0[i]), 2)))
+    indices     = (distance <= radius).nonzero() 
+
+    return indices
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/flaglatlongradiuselements.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/flaglatlongradiuselements.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/flaglatlongradiuselements.m	(revision 27955)
@@ -0,0 +1,24 @@
+function outelements=flaglatlongradiuselements(elements,lat,long,lat0,long0,radius)
+%FLAGLATLONGRADIUSELEMENTS - given a vector of lat,long, and a circle of radius degrees around lat0,long0, 
+%                    return the indices into lat,long that are within this circle. 
+%                    lat and long should be between -90 and 90, and -180 and +180 respectively. 
+
+	distance=sqrt( (lat-lat0).^2+ (long-long0).^2);
+	
+	%three cases, depending on whether our circle goes past the -180 +180 longitude line: 
+	if (long0-radius)<=-180,
+		pos=find(long>0); long(pos)=long(pos)-360;
+	elseif (long0+radius)>=180,
+		pos=find(long<0); long(pos)=360+long(pos);
+	else
+	end
+	distance=sqrt( (lat-lat0).^2+ (long-long0).^2);
+	indices=find(distance<=radius);
+
+	%now that we know the indices, determine elements which own these indices: 
+	outelements=zeros(length(elements),1);
+	for i=1:length(indices),
+		[pos,dummy]=find(elements==indices(i));
+		outelements(pos)=1;
+	end
+	outelements=find(outelements);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/flagradiuselements.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/flagradiuselements.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/flagradiuselements.m	(revision 27955)
@@ -0,0 +1,19 @@
+function outelements=flagradiuselements(elements,x,y,z,lat0,long0,radius)
+
+	%get x0,y0,z0: 
+	R=planetradius('earth');
+	x0 = R .* cosd(lat0) .* cosd(long0);
+	y0 = R .* cosd(lat0) .* sind(long0);
+	z0 = R .* sind(lat0);
+
+	distance=sqrt( (x-x0).^2+ (y-y0).^2 + (z-z0).^2);
+	
+	indices=find(distance<=radius*1000);
+
+	%now that we know the indices, determine elements which own these indices: 
+	outelements=zeros(length(elements),1);
+	for i=1:length(indices),
+		[pos,dummy]=find(elements==indices(i));
+		outelements(pos)=1;
+	end
+	outelements=find(outelements);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/flagradiuselements.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/flagradiuselements.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/flagradiuselements.py	(revision 27955)
@@ -0,0 +1,28 @@
+import math
+
+import numpy as np
+
+from planetradius import *
+
+
+def flagradiuselements(elements, x, y, z, lat0, long0, radius):  # {{{
+    # get x0,y0,z0:
+    R   = planetradius('earth')
+    x0  = R * np.cos(np.deg2rad(lat0)) * np.cos(np.deg2rad(long0))
+    y0  = R * np.cos(np.deg2rad(lat0)) * np.sin(np.deg2rad(long0))
+    z0  = R * np.sin(np.deg2rad(lat0))
+
+    distance    = np.array(math.sqrt(pow((x - x0), 2) + pow((y - y0), 2) + pow((z - z0), 2)))
+    indices     = (distance <= radius * 1000).nonzero()
+
+    #now that we know the indices, determine elements with own these indices:
+    outelements = np.zeros(len(elements))
+    for i in range(len(indices)):
+        pos = np.array()
+        pos = (elements == indices[i]).nonzero()
+        for j in range(len(pos)):
+            outelements[pos[j]] = 1
+    outelements = outelements.nonzero()
+
+    return outelements
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/gdalinfo.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/gdalinfo.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/gdalinfo.m	(revision 27955)
@@ -0,0 +1,39 @@
+function info=gdalinfo(imagename)
+%GDALINFO - retrieve information from a geotiff or georeferenced image
+%
+%   Usage:
+%      gdalinfo(imagename)
+%
+%
+
+	%first, get pixel size: 
+	[s,r]=system(sprintf('gdalinfo %s | command grep "Pixel Size"',imagename));
+	if s, error('gdalinfo error message: could not run system command gdalinfo to find pixel size'); end
+	d=sscanf(r,'Pixel Size = (%g,%g)');
+	info.dx=abs(d(1)); info.dy=abs(d(2));
+
+	%get upper left: 
+	[s,r]=system(sprintf('gdalinfo %s | command grep "Upper Left"',imagename));
+	if s, error('gdalinfo error message: could not run system command gdalinfo to find upper left'); end
+	d=sscanf(r,'Upper Left ( %g,%g) %s');
+	info.xmin=d(1);
+	info.ymax=d(2);
+	
+	%get lower right: 
+	[s,r]=system(sprintf('gdalinfo %s | command grep "Lower Right"',imagename));
+	if s, error('gdalinfo error message: could not run system command gdalinfo to find lower right'); end
+	d=sscanf(r,'Lower Right ( %g,%g) %s');
+	info.xmax=d(1);
+	info.ymin=d(2);
+
+	%Size: 
+	[s,r]=system(sprintf('gdalinfo %s | command grep "Size is"',imagename));
+	if s, error('gdalinfo error message: could not run system command gdalinfo to find size'); end
+	d=sscanf(r,'Size is %g, %g');
+	info.nx=d(1);
+	info.ny=d(2);
+
+	%Name: 
+	[pathstr,name,ext] = fileparts(imagename);
+	info.rootname=name;
+	info.ext=ext;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/gdaltransform.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/gdaltransform.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/gdaltransform.m	(revision 27955)
@@ -0,0 +1,47 @@
+function [xout,yout] = gdaltransform(x,y,proj_in,proj_out)
+%GDALTRANSFORM - switch from one projection system to another 
+%
+%	Usage:
+%		[x,y] = gdaltransform(x1,y1,epsg_in, epsg_out);
+%
+%	Example:
+%		[x,y] = gdaltransform(md.mesh.long,md.mesh.lat,'EPSG:4326','EPSG:3031')
+%
+%	For reference:
+%		EPSG: 4326 (lat,long)
+%		EPSG: 3411 (Greenland,  UPS 45W, 70N)
+%		EPSG: 3031 (Antarctica, UPS 0E,  71S)
+%
+%		ll2xy default projection Antarctica:
+%			+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.448564109 +units=m +no_defs
+%		ll2xy default projection Greenland:
+%			+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.448564109 +units=m +no_defs
+%		Bamber's Greeland projection
+%			+proj=stere +lat_0=90 +lat_ts=71 +lon_0=-39 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.448564109 +units=m +no_defs
+%
+%	To get PROJ.4 string from EPSG, use gdalsrsinfo. Example:
+%		gdalsrsinfo epsg:4326 | grep "PROJ.4" | sed "s/PROJ.4 : //"
+
+	%give ourselves unique file names
+	filename_in  = tempname();
+	filename_out = tempname();
+
+	fid=fopen(filename_in,'w');
+	fprintf(fid,'%8g %8g\n',[x(:) y(:)]');
+	fclose(fid);
+
+	[s,r]=system(['gdaltransform -s_srs "',proj_in,'" -t_srs "',proj_out,'" < ' filename_in ' > ' filename_out]);
+	if s~=0 | ~isempty(deblank(r)),
+		error(r);
+	end
+
+	A=load(filename_out);
+
+	%clean up
+	delete(filename_in);
+	delete(filename_out);
+
+	xout=A(:,1);
+	xout=reshape(xout,size(x));
+	yout=A(:,2);
+	yout=reshape(yout,size(y));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/gdaltransform.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/gdaltransform.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/gdaltransform.py	(revision 27955)
@@ -0,0 +1,72 @@
+from os import remove
+import shlex
+import subprocess
+import tempfile
+
+import numpy as np
+
+from loadvars import *
+
+
+def gdaltransform(x, y, proj_in, proj_out):  # {{{
+    """GDALTRANSFORM - switch from one projection system to another
+
+    Usage:
+        [x, y] = gdaltransform(x1, y1, epsg_in, epsg_out)
+
+    Example:
+        [x, y] = gdaltranform(md.mesh.long, md.mesh.lat, 'EPSG:4326', 'EPSG:3031')
+
+    For reference:
+        EPSG: 4326 (lat, long)
+        EPSG: 3341 (Greenland,  UPS 45W, 70N)
+        EPSG: 3031 (Antarctica, UPS 0E,  71S)
+
+    ll2xy default projection Antarctica:
+        +proj = stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.448564109 +units=m +no_defs
+    ll2xy default projection Greenland:
+        +proj = stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.448564109 +units=m +no_defs
+    Bamber's Greenland projection
+        +proj = stere +lat_0=90 +lat_ts=71 +lon_0=-39 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.448564109 +units=m +no_defs
+
+    To get proj.4 string from EPSG, use gdalsrsinfo. Example:
+        gdalsrsinfo epsg:4326 | grep "PROJ.4" | sed "s/PROJ.4 : //"
+    """
+
+    # Give ourselves unique file names
+    file_in = tempfile.NamedTemporaryFile('w', delete=False)
+    filename_in = file_in.name
+    file_out = tempfile.NamedTemporaryFile('w', delete=False)
+    filename_out = file_out.name
+
+    points = np.vstack((x, y)).T
+    np.savetxt(file_in, points, fmt='%8g %8g')
+    file_in.close() # NOTE: Opening file in 'r+' or 'w+' mode does not allow subsequent reading by subprocess. We therefore need to close it and reopen it.
+    file_in = open(filename_in) # Open for reading by subprocess
+
+    subproc_args = shlex.split("gdaltransform -s_srs '{}' -t_srs '{}'".format(proj_in, proj_out))
+    subproc = subprocess.Popen(subproc_args, bufsize=-1, stdin=file_in, stdout=file_out, stderr=subprocess.PIPE, close_fds=True, universal_newlines=True)
+    outs, errs = subproc.communicate()
+    if errs != '':
+        raise RuntimeError("gdaltransform: call to gdaltransform failed: {}".format(errs))
+
+    A = np.loadtxt(filename_out)
+
+    # Clean up
+    file_in.close()
+    file_out.close()
+    remove(filename_in)
+    remove(filename_out)
+
+    if np.ndim(A) > 1:
+        xout = np.array(A[:,0])
+        yout = np.array(A[:,1])
+        # if type(x) == "np.ndarray":
+        #     xout = xout.reshape(x.shape) # TODO: Do we need to do this?
+        #     yout = yout.reshape(y.shape) # TODO: Do we need to do this?
+    else:
+        xout = [A[0]]
+        yout = [A[1]]
+
+    return [xout, yout]
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/gmtmask.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/gmtmask.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/gmtmask.m	(revision 27955)
@@ -0,0 +1,73 @@
+function mask = gmtmask(lat,long,varargin)
+%GMTMASK - figure out which lat,long points are on the ocean
+%
+%   Usage:
+%      mask.ocean = gmtmask(md.mesh.lat,md.mesh.long);
+%
+%	TODO: Standardize discovery of GMT bin path and whether or not we have GMT 
+%	modules (i.e. `gmt select`) between this file, gmtmask.py, and 
+%	gmtmaskparallel.m
+
+	%are we doing a recursive call? 
+	if nargin==3,
+		recursive=1;
+	else 
+		recursive=0;
+	end
+	
+	if(recursive)disp(sprintf('             recursing: num vertices %i',length(lat)));
+	else disp(sprintf('gmtmask: num vertices %i',length(lat)));
+	end
+	
+	%Check lat and long size is not more than 50,000; If so, recursively call gmtmask: 
+	if length(lat)>50000,
+		for i=1:50000:length(lat),
+			j=i+50000-1;
+			if j>length(lat),
+				j=length(lat);
+			end
+			mask(i:j)=gmtmask(lat(i:j),long(i:j),1);
+		end
+		return
+	end
+	
+	%First, write our lat,long file for gmt:
+	nv=length(lat);
+	filename_suffix=[num2str(feature('GetPid')) '.txt'];
+	filename_all=['all_vertices-' filename_suffix]; 
+	filename_oce=['oce_vertices-' filename_suffix];
+	dlmwrite(filename_all,[long lat (1:nv)'],'delimiter','\t','precision',10);
+
+	%figure out which vertices are on the ocean, which one on the continent:
+	%
+	% NOTE: Remove -Ve option to enable warnings if this method is not working 
+	%		expected
+	% 
+	gmt_select_options='-Ve -h0 -Df -R0/360/-90/90 -A0 -JQ180/200 -Nk/s/s/k/s';
+	[status,result]=system(['gmt select ./' filename_all ' ' gmt_select_options ' > ./' filename_oce]);
+	if status~=0,
+		%assume we are working with GMT 6.0.0
+		gmt_select_options='-h0 -Df -R0/360/-90/90 -A0 -JQ180/200 -Nk/s/s/k/s';
+		[status,result] = system(['gmtselect ./' filename_all ' ' gmt_select_options ' > ./' filename_oce]);
+		if status~=0,
+			error(result);
+		end
+	end
+
+	%read the con_vertices.txt file and flag our mesh vertices on the continent
+	fid=fopen(['./' filename_oce],'r');
+	line=fgets(fid); 
+	line=fgets(fid);
+	oce_vertices=[];
+	while line~=-1,
+		ind=str2num(line); ind=ind(3);
+		oce_vertices=[oce_vertices;ind];
+		line=fgets(fid);
+	end
+
+
+	mask=zeros(nv,1);
+	mask(oce_vertices)=1;
+	
+	system(['rm -rf ./' filename_all ' ./' filename_oce ' ./gmt.history']);
+	if ~recursive, disp(sprintf('gmtmask: done')); end;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/gmtmask.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/gmtmask.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/gmtmask.py	(revision 27955)
@@ -0,0 +1,80 @@
+import os
+import subprocess
+
+import numpy as np
+
+from issmdir import *
+from MatlabFuncs import *
+from model import *
+
+
+def gmtmask(lat, long, *args):
+    """gmtmask - figure out which lat, long points are on the ocean
+
+    Usage:
+        mask.ocean = gmtmask(md.mesh.lat, md.mesh.long)
+    """
+    lenlat = len(lat)
+    mask = np.empty(lenlat)
+
+    #are we doing a recursive call?
+    if len(args) == 3:
+        recursive = 1
+    else:
+        recursive = 0
+
+    if recursive:
+        print(('             recursing: num vertices  #' + str(lenlat)))
+    else:
+        print(('gmtmask: num vertices ' + str(lenlat)))
+
+    # Check lat and long size is not more than 50,000. If so, recursively call gmtmask.
+    if lenlat > 50000:
+        for i in range(int(ceil(lenlat / 50000))):
+            j = (i + 1) * 50000 - 1
+            if j > lenlat:
+                j = lenlat
+            mask[i:j] = gmtmask(lat[i:j], int[i:j], 1)
+        return mask
+
+    # First, write our lat, long file for gmt
+    nv = lenlat
+    #print(np.transpose([int, lat, np.arange(1, nv + 1)]))
+    np.savetxt('./all_vertices.txt', np.transpose([long, lat, np.arange(1, nv + 1)]), delimiter='\t', fmt='%.10f')
+
+    # Figure out which vertices are on the ocean, which one on the continent:
+    #
+    # NOTE: Remove -Ve option to enable warnings if this method is not working 
+    #       expected
+    #
+    gmt_select_options = '-Ve -h0 -Df -R0/360/-90/90 -A0 -JQ180/200 -Nk/s/s/k/s'
+    subproc_cmd = 'gmt select ./all_vertices.txt ' + gmt_select_options + ' > ./oce_vertices.txt'
+    subproc = subprocess.Popen(subproc_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
+    outs, errs = subproc.communicate()
+    if errs != '':
+        # Assume we are working with GMT 6.0.0
+        gmt_select_options = '-h0 -Df -R0/360/-90/90 -A0 -JQ180/200 -Nk/s/s/k/s'
+        subproc_cmd = 'gmtselect ./all_vertices.txt ' + gmt_select_options + ' > ./oce_vertices.txt'
+        subproc = subprocess.Popen(subproc_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
+        outs, errs = subproc.communicate()
+        if errs != '':
+            raise RuntimeError('gmtmask: calls to both gmt and gmtselect failed: {}'.format(errs))
+
+    # Read the con_vertices.txt file and flag our mesh vertices on the continent
+    fid = open('./oce_vertices.txt', 'r')
+    line = fid.readline()
+    line = fid.readline()
+    oce_vertices = []
+    while line:
+        ind = int(float(line.split()[2])) - 1
+        oce_vertices.append(ind)
+        line = fid.readline()
+    fid.close()
+
+    mask = np.zeros(nv)
+    mask[oce_vertices] = 1
+
+    subprocess.call('rm -rf ./all_vertices.txt ./oce_vertices.txt ./gmt.history', shell=True)
+    if not recursive:
+        print('gmtmask: done')
+    return mask
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/gmtmaskparallel.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/gmtmaskparallel.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/gmtmaskparallel.m	(revision 27955)
@@ -0,0 +1,72 @@
+function mask = gmtmaskparallel(lat,long,ncores)
+%GMTMASKPARALLEL- parallel driver for the gmtmask utility
+%
+%   Usage:
+%      mask.ocean = gmtmaskparallel(md.mesh.lat,md.mesh.long,8);
+%
+%   TODO:
+%   - Remove hardcoded paths and instead find paths dynamically
+%
+
+	%First, write our lat,long file for gmt:
+	nv=length(lat);
+
+	%Split: 
+	nnv=1:floor(nv/ncores):nv;
+	nnv(end)=nv+1;
+
+	%For each segment, write all vertices file: 
+	for i=1:length(nnv)-1,
+	dlmwrite(['./all_vertices' num2str(i) '.txt'],[long(nnv(i):nnv(i+1)-1) lat(nnv(i):nnv(i+1)-1) (nnv(i):nnv(i+1)-1)'],'delimiter','\t','precision',7);
+	end
+
+	if ismac,
+		dyld_library_path_old=getenv('DYLD_LIBRARY_PATH');
+		setenv('DYLD_LIBRARY_PATH',[ issmdir '/externalpackages/curl/install/lib:' issmdir '/externalpackages/hdf5/install/lib:' issmdir '/externalpackages/netcdf/install/lib' ]);
+	end
+
+	%Find path to gmt, list all possible known paths to gmt (you may need to add yours to the list)
+	paths = {[issmdir() '/bin'],[issmdir() '/externalpackages/gmt/install/bin'],'/Applications/GMT-5.4.3.app/Contents/Resources/bin'};
+	gmt_path = '';
+	for i=paths
+		if exist([i{1} '/gmt'],'file'),
+			gmt_path = i{1};
+			break;
+		end
+	end
+	if isempty(gmt_path),
+		error('gmt not found, make sure it is properly installed, or add its path to this file (line 26)');
+	end
+
+	%Figure out if we have gmtselect executable
+	if exist([gmt_path '/gmtselect'],'file'),
+		gmt_exec=[gmt_path '/gmtselect'];
+	else,
+		gmt_exec=[gmt_path '/gmtselect'];
+	end
+
+	%Build xjobs script:
+	fid=fopen('xjobs.script','w');
+	for i=1:length(nnv)-1,
+		fprintf(fid,'%s ./all_vertices%i.txt -h0 -Df -R0/360/-90/90 -A0 -JQ180/200 -Nk/s/s/k/s > ./oce_vertices%i.txt\n',gmt_exec,i,i);
+	end
+	fclose(fid);
+
+	%Call xjobs: 
+	system(sprintf('xjobs -j %i -s ./xjobs.script',ncores));
+
+	%reset DYLD_LIBRARY_PATH to what it was: 
+	if ismac,
+		setenv('DYLD_LIBRARY_PATH',dyld_library_path_old);
+	end
+
+	%concatenate: 
+	system('cat oce_vertices*.txt | command grep -v Command | awk ''{printf("%s\n",$3);}''> vertices.txt');
+
+	%read the vertices.txt file and flag our mesh vertices on the continent
+	flags=dlmread('./vertices.txt');
+
+	mask=zeros(nv,1);
+	mask(flags)=1;
+
+	system('rm -rf ./all_vertices*.txt ./oce_vertices*.txt vertices.txt ./gmt.history ./xjobs.script');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/laea.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/laea.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/laea.m	(revision 27955)
@@ -0,0 +1,11 @@
+function string = laea(lat,long)
+%Lambert Azimuthal Equal Area projection at lat,long projection center. 
+%
+%   Usage:
+%      string = laea(45,-90);
+%
+%   Example: 
+%      string = laea(45,-90); 
+%      return string='+proj=laea +lat_0=45 +lon_0=-90 +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs'
+
+	string=sprintf('+proj=laea +lat_0=%i +lon_0=%i +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs',lat,long);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/laea.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/laea.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/laea.py	(revision 27955)
@@ -0,0 +1,14 @@
+def laea(lat, long):  # {{{
+    """LAEA - Lambert Azimuthal Equal Area projection at lat, long projection 
+    center.
+
+        Usage:
+            string = laea(45, -90)
+
+        Example:
+            string = laea(45, -90)
+            return string = '+proj=laea +lat_0=45 +lon_0=-90 +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs'
+    """
+
+    return '+proj=laea +lat_0={} +lon_0={} +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs'.format(lat, long)
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/laea_inv.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/laea_inv.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/laea_inv.m	(revision 27955)
@@ -0,0 +1,63 @@
+function [lat,lon] = laea_inv(x,y,lat1,lon0,falseeasting,falsenorthing)
+% laea_inv performs an inverse Lambert Azimuthal Equal Area projection
+% for a simple spherical Earth of radius 6371000 meters. 
+% 
+%% Syntax 
+% 
+%  [lat,lon] = laea_inv(x,y,lat1,lon0)
+%  [lat,lon] = laea_inv(x,y,lat1,lon0,falseeasting,falsenorthing)
+% 
+%% Description 
+% 
+% [lat,lon] = laea_inv(x,y,lat1,lon0) transforms the coordinates x,y (in 
+% meters) into geographic coordinates lat,lon. Inputs lat1 and lon0 specify 
+% the origin.
+%
+% [lat,lon] = laea_inv(x,y,lat1,lon0,falseeasting,falsenorthing) also allows
+% inclusion of false eastings and northings in meters. 
+% 
+%% Author Info 
+% Function written by Chad A. Greene of NASA Jet Propulsion Laboratory. 
+% December 2020. 
+% Formulas taken directly from Snyder 1987's classic tome, "Map Projections 
+% A Working Manual" starting around page 185. 
+
+%% Parse inputs: 
+
+narginchk(4,6)
+assert(isequal(size(lat1),size(lon0),[1 1]),'Error: Inputs lat1 and lon0 must both be scalars.')
+assert(abs(lat1)<=90,'lat1 cannot exceed +/-90 degrees.') 
+assert(abs(lon0)<=360,'lon0 cannot exceed +/-360 degrees.') 
+assert(isequal(size(x),size(y)),'Dimensions of x and y must match.') 
+
+if nargin<5
+   falseeasting = 0; 
+   falsenorthing = 0; 
+end
+
+%% 
+% Projection formulas:
+% From Snyder 1987, MAP PROJECTIONS-A WORKING MANUAL, page 185: https://pubs.usgs.gov/pp/1395/report.pdf
+
+% Account for false easting, northing: 
+x = x - falseeasting; 
+y = y - falsenorthing; 
+
+% Define constants: 
+R = 6371000; % earth radius (meters) 
+rho = hypot(x,y); 
+c = 2*asind(rho./(2*R)); 
+
+% Unproject: 
+lat = asind(cosd(c) .* sind(lat1) + (y .* sind(c) .* cosd(lat1))./rho); 
+
+switch lon0
+   case 90
+      lon = lon0 + atand(-x./y);
+   case -90
+      lon = lon0 + atand(x./y); 
+   otherwise
+      lon = lon0 + atand((x .* sind(c))./(rho.*cosd(lat1) .*cosd(c) - y.*sind(lat1).*sind(c))); 
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/lambert2xy.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/lambert2xy.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/lambert2xy.m	(revision 27955)
@@ -0,0 +1,68 @@
+function [x,y] = lambert2xy(lat,lon,sgn,projection_center_lat,projection_center_lon)  
+%LAMBERT2XY - converts lat long from Lambert Azimuthal to Polar Stereographic
+%
+%   Converts from geodetic latitude and longitude that are 
+%   in Lambert Azimuthal (equal area) projections to Polar 
+%   Stereographic (X,Y) coordinates for the polar regions.
+%
+%   Usage:
+%      [x,y] = lambert2xy(lat,lon,sgn)
+%      [x,y] = lambert2xy(lat,lon,sgn,projection_center_lat,projection_center_lon)
+%
+%      - provide lat in [-90,90] and lon in [-180,180].
+
+%      - sgn = +1 N hemisphere [default projection center lat = 90 lon=0]
+%              -1 S hemisphere [default projection center lat = -90 lon=0]
+
+%Get projection_center_lat and projection_center_lon 
+if nargin==5,
+	latitude0  = projection_center_lat;
+	longitude0 = projection_center_lon;
+elseif nargin==3,
+	if sgn==1,
+		latitude0 = 90; longitude0 = 0;
+		disp('Info: creating coordinates in polar stereographic (Projection center lat: 90N lon: 0)');
+	elseif sgn==-1,
+		latitude0 = -90; longitude0 = 0;
+		disp('Info: creating coordinates in polar stereographic (Projection center lat: 90S lon: 0)');
+	else
+		error('Sign should be either +1 or -1');
+	end
+else
+	help lambert2xy
+	error('bad usage');
+end
+
+% Radius of the earth in meters 
+a = 6378137.0;
+% Eccentricity of the Hughes ellipsoid squared
+e = 0.081819191;
+
+% Projection center latitude and longitude in radians 
+phi0 = latitude0 * pi/180; 
+lam0 = longitude0 * pi/180; 
+
+% Some constant based on phi0 and lam0
+qp= (1-e^2)*((1/(1-e^2))-((1/(2*e))*log((1-e)/(1+e))));
+q0=(1-e^2)*((sin(phi0)/(1-e^2*sin(phi0)*sin(phi0)))-((1/(2*e))*log((1-e*sin(phi0))/(1+e*sin(phi0)))));
+Rq=a*sqrt(qp/2);
+b0=asin(q0/qp);
+D =a*(cos(phi0)/sqrt(1-e^2*sin(phi0)*sin(phi0)))/(Rq*cos(b0));
+
+% Latitude and longitude in radians 
+phi = lat*pi/180;
+lam = lon*pi/180;
+
+% Some other phi,lam dependent parameters 
+q=(1-e^2)*((sin(phi)/(1-e^2*sin(phi)*sin(phi)))-((1/(2*e))*log((1-e*sin(phi))/(1+e*sin(phi)))));
+b =asin(q/qp);
+B =Rq*sqrt(2/(1+sin(b0)*sin(b)+(cos(b0)*cos(b)*cos(lam-lam0))));
+
+% Calculation of x and y
+if(abs(lat)==90)
+	x=0.0; 
+	y=0.0; 
+else
+	x=(B*D)*(cos(b)*sin(lam-lam0));
+	y=(B/D)*((cos(b0)*sin(b))-(sin(b0)*cos(b)*cos(lam-lam0)));
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/ll2mercator.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/ll2mercator.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/ll2mercator.m	(revision 27955)
@@ -0,0 +1,13 @@
+function [mx my]=ll2mercator(lat, lon),
+%LL2MERCATOR - transform lat long to mercator projection
+%
+%   Usage:
+%      [mx my]=ll2mercator(lat, lon)
+
+EARTH_RADIUS = 6378137;
+EQUATOR_CIRCUMFERENCE = 2 * pi * EARTH_RADIUS;
+ORIGIN_SHIFT = EQUATOR_CIRCUMFERENCE / 2.0;
+
+mx = (lon * ORIGIN_SHIFT) / 180.0;
+my = log(tan((90 + lat) * pi/360.0))/(pi/180.0);
+my = (my * ORIGIN_SHIFT) /180.0;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/ll2utm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/ll2utm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/ll2utm.m	(revision 27955)
@@ -0,0 +1,239 @@
+function [x,y,f]=ll2utm(varargin)
+%LL2UTM Lat/Lon to UTM coordinates precise conversion.
+%	[X,Y]=LL2UTM2(LAT,LON) or LL2UTM([LAT,LON]) converts coordinates 
+%	LAT,LON (in degrees) to UTM X and Y (in meters). Default datum is WGS84.
+%
+%	LAT and LON can be scalars, vectors or matrix. Outputs X and Y will
+%	have the same size as inputs.
+%
+%	LL2UTM(...,DATUM) uses specific DATUM for conversion. DATUM can be one
+%	of the following char strings:
+%		'wgs84': World Geodetic System 1984 (default)
+%		'nad27': North American Datum 1927
+%		'clk66': Clarke 1866
+%		'nad83': North American Datum 1983
+%		'grs80': Geodetic Reference System 1980
+%		'int24': International 1924 / Hayford 1909
+%	or DATUM can be a 2-element vector [A,F] where A is semimajor axis (in
+%	meters)	and F is flattening of the user-defined ellipsoid.
+%
+%	LL2UTM(...,ZONE) forces the UTM ZONE (scalar integer or same size as
+%   LAT and LON) instead of automatic set.
+%
+%	[X,Y,ZONE]=LL2UTM(...) returns also the computed UTM ZONE (negative
+%	value for southern hemisphere points).
+%
+%
+%	XY=LL2UTM(...) or without any output argument returns a 2-column 
+%	matrix [X,Y].
+%
+%	Note:
+%		- LL2UTM does not perform cross-datum conversion.
+%		- precision is near a millimeter.
+%
+%
+%	Reference:
+%		I.G.N., Projection cartographique Mercator Transverse: Algorithmes,
+%		   Notes Techniques NT/G 76, janvier 1995.
+%
+%	Acknowledgments: Mathieu, Frederic Christen.
+%
+%
+%	Author: Francois Beauducel, <beauducel@ipgp.fr>
+%	Created: 2003-12-02
+%	Updated: 2019-05-29
+
+
+%	Copyright (c) 2001-2019, François Beauducel, covered by BSD License.
+%	All rights reserved.
+%
+%	Redistribution and use in source and binary forms, with or without 
+%	modification, are permitted provided that the following conditions are 
+%	met:
+%
+%	   * Redistributions of source code must retain the above copyright 
+%	     notice, this list of conditions and the following disclaimer.
+%	   * 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
+%	                           
+%	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 OWNER 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.
+
+% Available datums
+datums = [ ...
+	{ 'wgs84', 6378137.0, 298.257223563 };
+	{ 'nad83', 6378137.0, 298.257222101 };
+	{ 'grs80', 6378137.0, 298.257222101 };
+	{ 'nad27', 6378206.4, 294.978698214 };
+	{ 'int24', 6378388.0, 297.000000000 };
+	{ 'clk66', 6378206.4, 294.978698214 };
+];
+
+% constants
+D0 = 180/pi;	% conversion rad to deg
+K0 = 0.9996;	% UTM scale factor
+X0 = 500000;	% UTM false East (m)
+
+% defaults
+datum = 'wgs84';
+zone = [];
+
+if nargin < 1
+	error('Not enough input arguments.')
+end
+
+if nargin > 1 && isnumeric(varargin{1}) && isnumeric(varargin{2}) ...
+		&& (all(size(varargin{1})==size(varargin{2})) ...
+		|| isscalar(varargin(1)) || isscalar(varargin{2}))
+	lat = varargin{1};
+	lon = varargin{2};
+	v = 2;
+elseif isnumeric(varargin{1}) && size(varargin{1},2) == 2
+	lat = varargin{1}(:,1);
+	lon = varargin{1}(:,2);
+	v = 1;
+else
+	error('Single input argument must be a 2-column matrix [LAT,LON].')
+end
+
+if all([numel(lat),numel(lon)] > 1) && any(size(lat) ~= size(lon))
+	error('LAT and LON must be the same size or scalars.')
+end
+
+if any(abs(lat)>90)
+	error('LAT absolute values must be lower than 90.')
+end
+
+% checks for DATUM and/or ZONE syntax
+% NOTE: the following strategy works in any case except if ZONE argument
+% has a size of 1x2 (in that case it will be interpreted as a DATUM). To
+% force the ZONE syntax with 2 elements, just use ZONE(:) to make a colum
+% vector of 2x1.
+for n = (v+1):nargin
+	% LL2UTM(...,DATUM)
+	if ischar(varargin{n}) || (isnumeric(varargin{n}) ...
+			&& all(size(varargin{n})==[1,2]))
+		datum = varargin{n};
+	% LL2UTM(...,ZONE)
+	elseif isnumeric(varargin{n}) && (isscalar(varargin{n}) ...
+			|| (isscalar(lat) || all(size(varargin{n})==size(lat))) ...
+			&& (isscalar(lon) || all(size(varargin{n})==size(lon))))
+		zone = round(varargin{n});
+	else
+		error('Unknown argument #%d. See documentation.',n)
+	end
+end
+
+if ischar(datum)
+	% LL2UTM(...,DATUM) with DATUM as char
+	if ~any(strcmpi(datum,datums(:,1)))
+		error('Unkown DATUM name "%s"',datum);
+	end
+	k = find(strcmpi(datum,datums(:,1)));
+	A1 = datums{k,2};
+	F1 = datums{k,3};	
+else
+	% LL2UTM(...,DATUM) with DATUM as [A,F] user-defined
+	A1 = datum(1);
+	F1 = datum(2);
+end
+
+p1 = lat/D0;			% Phi = Latitude (rad)
+l1 = lon/D0;			% Lambda = Longitude (rad)
+
+% UTM zone automatic setting
+if isempty(zone)
+	F0 = round((l1*D0 + 183)/6);
+else
+	F0 = abs(zone);
+end
+
+B1 = A1*(1 - 1/F1);
+E1 = sqrt((A1*A1 - B1*B1)/(A1*A1));
+P0 = 0/D0;
+L0 = (6*F0 - 183)/D0;	% UTM origin longitude (rad)
+Y0 = 1e7*(p1 < 0);		% UTM false northern (m)
+N = K0*A1;
+
+C = coef(E1,0);
+B = C(1)*P0 + C(2)*sin(2*P0) + C(3)*sin(4*P0) + C(4)*sin(6*P0) + C(5)*sin(8*P0);
+YS = Y0 - N*B;
+
+C = coef(E1,2);
+L = log(tan(pi/4 + p1/2).*(((1 - E1*sin(p1))./(1 + E1*sin(p1))).^(E1/2)));
+z = complex(atan(sinh(L)./cos(l1 - L0)),log(tan(pi/4 + asin(sin(l1 - L0)./cosh(L))/2)));
+Z = N.*C(1).*z + N.*(C(2)*sin(2*z) + C(3)*sin(4*z) + C(4)*sin(6*z) + C(5)*sin(8*z));
+xs = imag(Z) + X0;
+ys = real(Z) + YS;
+
+% outputs zone if needed: scalar value if unique, or vector/matrix of the
+% same size as x/y in case of crossed zones
+if nargout > 2
+   	f = F0.*sign(lat);
+	fu = unique(f);
+	if isscalar(fu)
+		f = fu;
+	end
+end
+
+if nargout < 2
+	x = [xs(:),ys(:)];
+else
+	x = xs;
+	y = ys;
+end
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function c = coef(e,m)
+%COEF Projection coefficients
+%	COEF(E,M) returns a vector of 5 coefficients from:
+%		E = first ellipsoid excentricity
+%		M = 0 for transverse mercator
+%		M = 1 for transverse mercator reverse coefficients
+%		M = 2 for merdian arc
+
+
+if nargin < 2
+	m = 0;
+end
+
+switch m
+	case 0
+	c0 = [-175/16384, 0,   -5/256, 0,  -3/64, 0, -1/4, 0, 1;
+           -105/4096, 0, -45/1024, 0,  -3/32, 0, -3/8, 0, 0;
+           525/16384, 0,  45/1024, 0, 15/256, 0,    0, 0, 0;
+          -175/12288, 0, -35/3072, 0,      0, 0,    0, 0, 0;
+          315/131072, 0,        0, 0,      0, 0,    0, 0, 0];
+	  
+	case 1
+	c0 = [-175/16384, 0,   -5/256, 0,  -3/64, 0, -1/4, 0, 1;
+             1/61440, 0,   7/2048, 0,   1/48, 0,  1/8, 0, 0;
+          559/368640, 0,   3/1280, 0,  1/768, 0,    0, 0, 0;
+          283/430080, 0, 17/30720, 0,      0, 0,    0, 0, 0;
+       4397/41287680, 0,        0, 0,      0, 0,    0, 0, 0];
+
+	case 2
+	c0 = [-175/16384, 0,   -5/256, 0,  -3/64, 0, -1/4, 0, 1;
+         -901/184320, 0,  -9/1024, 0,  -1/96, 0,  1/8, 0, 0;
+         -311/737280, 0,  17/5120, 0, 13/768, 0,    0, 0, 0;
+          899/430080, 0, 61/15360, 0,      0, 0,    0, 0, 0;
+      49561/41287680, 0,        0, 0,      0, 0,    0, 0, 0];
+   
+end
+c = zeros(size(c0,1),1);
+
+for i = 1:size(c0,1)
+    c(i) = polyval(c0(i,:),e);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/ll2xy.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/ll2xy.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/ll2xy.m	(revision 27955)
@@ -0,0 +1,85 @@
+function [x,y,scale_factor] = ll2xy(lat,lon,sgn,central_meridian,standard_parallel)
+%LL2XY - converts lat long to polar stereographic
+%
+%   Converts from geodetic latitude and longitude to Polar
+%   Stereographic (X,Y) coordinates for the polar regions.
+%   Optional scale factor provides the scaling factor needed to correct projection error
+%   in areas and volumes
+%   Author: Michael P. Schodlok, December 2003 (map2ll)
+%
+%   Usage:
+%      [x,y] = ll2xy(lat,lon,sgn)
+%      [x,y,scale_factor] = ll2xy(lat,lon,sgn)
+%      [x,y] = ll2xy(lat,lon,sgn,central_meridian,standard_parallel)
+%
+%      - sgn = Sign of latitude		1 : north latitude (default is mer=45 lat=70)
+%                              	   -1 : south latitude (default is mer=0  lat=71)
+
+%Get central_meridian and standard_parallel depending on hemisphere
+if nargin==5,
+	delta = central_meridian;
+	slat  = standard_parallel;
+elseif nargin==3
+	if sgn == 1,
+		delta = 45; slat = 70;
+		disp('Info: creating coordinates in polar stereographic (Std Latitude: 70ºN Meridian: 45º)');
+	elseif sgn==-1,
+		delta = 0;  slat = 71;
+		disp('Info: creating coordinates in polar stereographic (Std Latitude: 71ºS Meridian: 0º)');
+	else
+		error('Sign should be either +1 or -1');
+	end
+else
+	help ll2xy
+	error('bad usage');
+end
+
+if nargout~=3 & nargout~=2,
+	help ll2xy
+	error('bad usage');
+end
+
+%Choose ellipsoid
+if 0
+	%Hughes ellipsoid
+	re   = 6378.273*10^3; % Radius of the earth in meters
+	ex2 = .006693883;     % Eccentricity of the Hughes ellipsoid squared
+else
+	%WGS84 ellipsoid
+	re = 6378137;         % Radius of the earth in meters
+	f  = 1./298.257223563;% Earth flattening
+	ex2 = 2*f-f^2;        % Eccentricity squared
+end
+
+% Eccentricity 
+ex = sqrt(ex2);
+
+latitude  = abs(lat) * pi/180.;
+longitude = (lon + delta) * pi/180.;
+
+% compute X and Y in grid coordinates.
+T = tan(pi/4-latitude/2) ./ ((1-ex*sin(latitude))./(1+ex*sin(latitude))).^(ex/2);
+
+if (90 - slat) <  1.e-5
+	rho = 2.*re*T/sqrt((1.+ex)^(1.+ex)*(1.-ex)^(1.-ex));
+else
+	sl  = slat*pi/180.;
+	tc  = tan(pi/4.-sl/2.)/((1.-ex*sin(sl))/(1.+ex*sin(sl)))^(ex/2.);
+	mc  = cos(sl)/sqrt(1.0-ex2*(sin(sl)^2));
+	rho = re*mc*T/tc;
+end
+
+y = -rho .* sgn .* cos(sgn.*longitude);
+x =  rho .* sgn .* sin(sgn.*longitude);
+
+[cnt1,cnt2] = find(latitude(:) >= pi / 2.);
+
+if cnt1
+	x(cnt1) = 0.0;
+	y(cnt1) = 0.0;
+end
+
+if nargout==3,
+	m=((1+sin(abs(slat)*pi/180))*ones(length(lat),1)./(1+sin(abs(lat)*pi/180)));
+	scale_factor=(1./m).^2;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/ll2xy.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/ll2xy.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/ll2xy.py	(revision 27955)
@@ -0,0 +1,76 @@
+import numpy as np
+
+
+def ll2xy(lat, lon, sgn, *args):
+    """LL2XY - converts lat lon to polar stereographic
+
+    Converts from geodetic latitude and longitude to Polar
+    Stereographic (X, Y) coordinates for the polar regions.
+    Author: Michael P. Schodlok, December 2003 (map2ll)
+
+    Usage:
+        x, y = ll2xy(lat, lon, sgn)
+        x, y = ll2xy(lat, lon, sgn, central_meridian, standard_parallel)
+
+    - sgn = Sign of latitude    1 : north latitude (default is mer = 45 lat = 70)
+                               -1 : south latitude (default is mer = 0  lat = 71)
+    """
+    assert sgn == 1 or sgn == -1, 'error: sgn should be either 1 or -1'
+
+         # Get central_meridian and standard_parallel depending on hemisphere
+    if len(args) == 2:
+        delta = args[0]
+        slat = args[1]
+    elif len(args) == 0:
+        if sgn == 1:
+            delta = 45.
+            slat = 70.
+            print('        ll2xy: creating coordinates in north polar stereographic (Std Latitude: 70degN Meridian: 45deg)')
+        elif sgn == -1:
+            delta = 0.
+            slat = 71.
+            print('        ll2xy: creating coordinates in south polar stereographic (Std Latitude: 71degS Meridian: 0deg)')
+        else:
+            raise ValueError('sgn should be either 1 or -1')
+    else:
+        raise Exception('bad usage: type "help(ll2xy)" for details')
+
+    # if lat, lon passed as lists, convert to np.arrays
+    if type(lat) != "np.ndarray":
+        lat = np.array(lat)
+    if type(lon) != "np.ndarray":
+        lon = np.array(lon)
+
+    # Conversion constant from degrees to radians
+    #cde = 57.29577951
+    # Radius of the earth in meters
+    re = 6378.273 * pow(10, 3)
+    # Eccentricity of the Hughes ellipsoid squared
+    ex2 = 0.006693883
+    # Eccentricity of the Hughes ellipsoid
+    ex = np.sqrt(ex2)
+
+    latitude = np.abs(lat) * np.pi / 180.
+    longitude = (lon + delta) * np.pi / 180.
+
+    # compute X and Y in grid coordinates.
+    T = np.tan(np.pi / 4 - latitude / 2) / ((1 - ex * np.sin(latitude)) / (1 + ex * np.sin(latitude)))**(ex / 2)
+
+    if (90 - slat) < 1.e-5:
+        rho = 2. * re * T / np.sqrt((1. + ex)**(1. + ex) * (1. - ex)**(1. - ex))
+    else:
+        sl = slat * np.pi / 180.
+        tc = np.tan(np.pi / 4. - sl / 2.) / ((1. - ex * np.sin(sl)) / (1. + ex * np.sin(sl)))**(ex / 2.)
+        mc = np.cos(sl) / np.sqrt(1.0 - ex2 * (np.sin(sl)**2))
+        rho = re * mc * T / tc
+
+    y = -rho * sgn * np.cos(sgn * longitude)
+    x = rho * sgn * np.sin(sgn * longitude)
+
+    cnt1 = np.nonzero(latitude >= np.pi / 2.)[0]
+
+    if len(cnt1)>0:
+        x[cnt1] = 0.0
+        y[cnt1] = 0.0
+
+    return x, y
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/mercator2ll.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/mercator2ll.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/mercator2ll.m	(revision 27955)
@@ -0,0 +1,13 @@
+function [lat lon]=mercator2ll(mx,my),
+%LL2MERCATOR - transform mercator projection to lat/lon
+%
+%   Usage:
+%      [lat lon]=mercator2ll(mx,my)
+
+EARTH_RADIUS = 6378137;
+EQUATOR_CIRCUMFERENCE = 2 * pi * EARTH_RADIUS;
+ORIGIN_SHIFT = EQUATOR_CIRCUMFERENCE / 2.0;
+
+lon = mx * 180.0 / ORIGIN_SHIFT;
+lat = my * 180.0 /ORIGIN_SHIFT;
+lat = 180.0/pi*(2.0*atan(exp(lat*pi/180.0))-pi/2.0);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/projlatlong.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/projlatlong.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/projlatlong.m	(revision 27955)
@@ -0,0 +1,17 @@
+function [lat,lon]=projlatlong(proj)
+
+	%lat: 
+	ind=findstr(proj,'+lat_0');
+	projlat=proj(ind+1:end);
+	ind=findstr(projlat,'+');
+	projlat=projlat(1:ind-2);
+	ind=findstr(projlat,'=');
+	lat=str2num(projlat(ind+1:end));
+
+	%lon: 
+	ind=findstr(proj,'+lon_0');
+	projlon=proj(ind+1:end);
+	ind=findstr(projlon,'+');
+	projlon=projlon(1:ind-2);
+	ind=findstr(projlon,'=');
+	lon=str2num(projlon(ind+1:end));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/projtype.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/projtype.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/projtype.m	(revision 27955)
@@ -0,0 +1,8 @@
+function type=projtype(proj)
+
+	ind=findstr(proj,'+proj');
+	proj=proj(ind+1:end);
+	ind=findstr(proj,'+');
+	proj=proj(1:ind-2);
+	ind=findstr(proj,'=');
+	type=proj(ind+1:end);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/utm2ll.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/utm2ll.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/utm2ll.m	(revision 27955)
@@ -0,0 +1,205 @@
+function [lat,lon]=utm2ll(x,y,f,datum,varargin)
+%UTM2LL UTM to Lat/Lon coordinates precise conversion.
+%	[LAT,LON]=UTM2LL(X,Y,ZONE) converts UTM coordinates X,Y (in meters)
+%	defined in the UTM ZONE (integer) to latitude LAT and longitude LON 
+%	(in degrees). Default datum is WGS84.
+%
+%	X, Y and F can be scalars, vectors or matrix. Outputs LAT and LON will
+%	have the same size as inputs.
+%
+%	For southern hemisphere points, use negative zone -ZONE.
+%
+%	UTM2LL(X,Y,ZONE,DATUM) uses specific DATUM for conversion. DATUM can be
+%	a string in the following list:
+%		'wgs84': World Geodetic System 1984 (default)
+%		'nad27': North American Datum 1927
+%		'clk66': Clarke 1866
+%		'nad83': North American Datum 1983
+%		'grs80': Geodetic Reference System 1980
+%		'int24': International 1924 / Hayford 1909
+%	or DATUM can be a 2-element vector [A,F] where A is semimajor axis (in
+%	meters)	and F is flattening of the user-defined ellipsoid.
+%
+%	Notice:
+%		- UTM2LL does not perform cross-datum conversion.
+%		- precision is near a millimeter.
+%
+%
+%	Reference:
+%		I.G.N., Projection cartographique Mercator Transverse: Algorithmes,
+%		   Notes Techniques NT/G 76, janvier 1995.
+%
+%	Author: Francois Beauducel, <beauducel@ipgp.fr>
+%	Created: 2001-08-23
+%	Updated: 2019-05-29
+
+%	Revision history:
+%
+%	[2019-05-29]
+%	  - fix an issue when X or Y are matrices.
+
+%	Copyright (c) 2001-2019, François Beauducel, covered by BSD License.
+%	All rights reserved.
+%
+%	Redistribution and use in source and binary forms, with or without 
+%	modification, are permitted provided that the following conditions are 
+%	met:
+%
+%	   * Redistributions of source code must retain the above copyright 
+%	     notice, this list of conditions and the following disclaimer.
+%	   * 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
+%	                           
+%	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 OWNER 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.
+
+% Available datums
+datums = [ ...
+	{ 'wgs84', 6378137.0, 298.257223563 };
+	{ 'nad83', 6378137.0, 298.257222101 };
+	{ 'grs80', 6378137.0, 298.257222101 };
+	{ 'nad27', 6378206.4, 294.978698214 };
+	{ 'int24', 6378388.0, 297.000000000 };
+	{ 'clk66', 6378206.4, 294.978698214 };
+];
+
+if nargin < 3
+	error('Not enough input arguments.')
+end
+
+% checks if input arguments have compatible sizes using unique(complex)
+sz = [size(x);size(y);size(f)];
+sz = complex(sz(:,1),sz(:,2));
+if length(unique(sz(sz~=complex(1,1)))) > 1
+	error('X, Y and ZONE must be scalar or vector/matrix of the same size.')
+end
+
+if ~isnumeric(f) || any(f ~= round(f))
+	error('ZONE must be integer value.')
+end
+
+if nargin < 4
+	datum = 'wgs84';
+end
+
+if ischar(datum)
+	if ~any(strcmpi(datum,datums(:,1)))
+		error('Unkown DATUM name "%s"',datum);
+	end
+	k = find(strcmpi(datum,datums(:,1)));
+	A1 = datums{k,2};
+	F1 = datums{k,3};	
+else
+	if numel(datum) ~= 2
+		error('User defined DATUM must be a vector [A,F].');
+	end
+	A1 = datum(1);
+	F1 = datum(2);
+end
+
+% calculations are made on column vectors
+x = x(:);
+y = y(:);
+f = f(:);
+
+% constants
+D0 = 180/pi;	% conversion rad to deg
+maxiter = 100;	% maximum iteration for latitude computation
+eps = 1e-11;	% minimum residue for latitude computation
+
+K0 = 0.9996;					% UTM scale factor
+X0 = 500000;					% UTM false East (m)
+Y0 = 1e7*(f < 0);				% UTM false North (m)
+P0 = 0;						% UTM origin latitude (rad)
+L0 = (6*abs(f) - 183)/D0;			% UTM origin longitude (rad)
+E1 = sqrt((A1^2 - (A1*(1 - 1/F1))^2)/A1^2);	% ellpsoid excentricity
+N = K0*A1;
+
+% computing parameters for Mercator Transverse projection
+C = coef(E1,0);
+YS = Y0 - N*(C(1)*P0 + C(2)*sin(2*P0) + C(3)*sin(4*P0) + C(4)*sin(6*P0) + C(5)*sin(8*P0));
+
+C = coef(E1,1);
+zt = complex((y - YS)/N/C(1),(x - X0)/N/C(1));
+z = zt - C(2)*sin(2*zt) - C(3)*sin(4*zt) - C(4)*sin(6*zt) - C(5)*sin(8*zt);
+L = real(z);
+LS = imag(z);
+
+l = L0 + atan(sinh(LS)./cos(L));
+p = asin(sin(L)./cosh(LS));
+
+L = log(tan(pi/4 + p/2));
+
+% calculates latitude from the isometric latitude
+p = 2*atan(exp(L)) - pi/2;
+p0 = NaN;
+n = 0;
+while any(isnan(p0) | abs(p - p0) > eps) && n < maxiter
+	p0 = p;
+	es = E1*sin(p0);
+	p = 2*atan(((1 + es)./(1 - es)).^(E1/2).*exp(L)) - pi/2;
+	n = n + 1;
+end
+
+if nargout < 2
+	lat = D0*[p,l];
+else
+	% reshapes vectors to x/y/f original size
+	sz = max([size(x);size(y);size(f)]);
+	lat = reshape(p*D0,sz);
+	lon = reshape(l*D0,sz);
+end
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function c = coef(e,m)
+%COEF Projection coefficients
+%	COEF(E,M) returns a vector of 5 coefficients from:
+%		E = first ellipsoid excentricity
+%		M = 0 for transverse mercator
+%		M = 1 for transverse mercator reverse coefficients
+%		M = 2 for merdian arc
+
+
+if nargin < 2
+	m = 0;
+end
+
+switch m
+	case 0
+	c0 = [-175/16384, 0,   -5/256, 0,  -3/64, 0, -1/4, 0, 1;
+           -105/4096, 0, -45/1024, 0,  -3/32, 0, -3/8, 0, 0;
+           525/16384, 0,  45/1024, 0, 15/256, 0,    0, 0, 0;
+          -175/12288, 0, -35/3072, 0,      0, 0,    0, 0, 0;
+          315/131072, 0,        0, 0,      0, 0,    0, 0, 0];
+	  
+	case 1
+	c0 = [-175/16384, 0,   -5/256, 0,  -3/64, 0, -1/4, 0, 1;
+             1/61440, 0,   7/2048, 0,   1/48, 0,  1/8, 0, 0;
+          559/368640, 0,   3/1280, 0,  1/768, 0,    0, 0, 0;
+          283/430080, 0, 17/30720, 0,      0, 0,    0, 0, 0;
+       4397/41287680, 0,        0, 0,      0, 0,    0, 0, 0];
+
+	case 2
+	c0 = [-175/16384, 0,   -5/256, 0,  -3/64, 0, -1/4, 0, 1;
+         -901/184320, 0,  -9/1024, 0,  -1/96, 0,  1/8, 0, 0;
+         -311/737280, 0,  17/5120, 0, 13/768, 0,    0, 0, 0;
+          899/430080, 0, 61/15360, 0,      0, 0,    0, 0, 0;
+      49561/41287680, 0,        0, 0,      0, 0,    0, 0, 0];
+   
+end
+c = zeros(size(c0,1),1);
+
+for i = 1:size(c0,1)
+    c(i) = polyval(c0(i,:),e);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/xy2lambert.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/xy2lambert.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/xy2lambert.m	(revision 27955)
@@ -0,0 +1,68 @@
+function [lat,lon] = xy2lambert(x,y,sgn,projection_center_lat,projection_center_lon)  
+%XY2LAMBERT - converts xy to lat lon in Lambert Azimuthal
+%
+%   Converts from Ploar Stereographic (X,Y) coordinates to geodetic 
+%   lat lon that are in Lambert Azimuthal (equal area) projection.
+%
+%   Usage:
+%      [lat,lon] = xy2lambert(x,y,sgn)
+%      [lat,lon] = xy2lambert(x,y,sgn,projection_center_lat,projection_center_lon)
+%
+%      - provide lat in [-90,90] and lon in [-180,180].
+%
+%      - sgn = +1 N hemisphere [default projection center lat = 90 lon=0]
+%              -1 S hemisphere [default projection center lat = -90 lon=0]
+
+%Get projection_center_lat and projection_center_lon 
+if nargin==5,
+	latitude0  = projection_center_lat;
+	longitude0 = projection_center_lon;
+elseif nargin==3,
+	if sgn==1,
+		latitude0 = 90; longitude0 = 0;
+		disp('Info: creating coordinates in Lambert Azimuthal equal-area (Projection center lat: 90N lon: 0)');
+	elseif sgn==-1,
+		latitude0 = -90; longitude0 = 0;
+		disp('Info: creating coordinates in Lambert Azimuthal equal-area (Projection center lat: 90S lon: 0)');
+	else
+		error('Sign should be either +1 or -1');
+	end
+else
+	help xy2lambert
+	error('bad usage');
+end
+
+% Radius of the earth in meters 
+a = 6378137.0;
+% Eccentricity of the Hughes ellipsoid squared
+e = 0.081819191;
+
+% Projection center latitude and longitude in radians 
+phi0 = latitude0 * pi/180; 
+lam0 = longitude0 * pi/180; 
+
+% Some constants based on phi0 and lam0
+% (as in forward calculation)
+qp= (1-e^2)*((1/(1-e^2))-((1/(2*e))*log((1-e)/(1+e))));
+q0=(1-e^2)*((sin(phi0)/(1-e^2*sin(phi0)*sin(phi0)))-((1/(2*e))*log((1-e*sin(phi0))/(1+e*sin(phi0)))));
+Rq=a*sqrt(qp/2);
+b0=asin(q0/qp);
+D =a*(cos(phi0)/sqrt(1-e^2*sin(phi0)*sin(phi0)))/(Rq*cos(b0));
+
+% Some other (x,y) dependent parameters 
+rho=sqrt((x/D)^2+(D*y)^2);
+C=2*asin(rho/(2*Rq));
+b_prime=asin((cos(C)*sin(b0))+((D*y*sin(C)*cos(b0))/rho));
+
+% Calculation of lat and lon 
+dist=sqrt(x^2+y^2);
+if(dist<=0.1)
+	lat=sgn*90.0;
+	lon=0.0;
+else
+	lat_rad=b_prime+((e^2/3+31*e^4/180+517*e^6/5040)*sin(2*b_prime))+((23*e^4/360+251*e^6/3780)*sin(4*b_prime))+((761*e^6/45360)*sin(6*b_prime));
+	lon_rad=lam0+atan(x*sin(C)/(D*rho*cos(b0)*cos(C)-D^2*y*sin(b0)*sin(C)));
+	% in degrees 
+	lat=lat_rad*180/pi;
+	lon=lon_rad*180/pi;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/xy2ll.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/xy2ll.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/xy2ll.m	(revision 27955)
@@ -0,0 +1,85 @@
+function [lat,lon,scale_factor] = xy2ll(x,y,sgn,central_meridian,standard_parallel)
+%XY2LL - converts xy to lat long
+%
+%   Converts Polar  Stereographic (X,Y) coordinates for the polar regions to
+%   latitude and longitude Stereographic (X,Y) coordinates for the polar
+%   regions.
+%   Optional scale factor provides the scaling factor needed to correct projection error
+%   in areas and volumes
+%   Author: Michael P. Schodlok, December 2003 (map2xy.m)
+%
+%   Usage:
+%      [lat,lon] = xy2ll(x,y,sgn);
+%      [lat,lon,scale_factor] = xy2ll(x,y,sgn);
+%      [lat,lon] = xy2ll(x,y,sgn,central_meridian,standard_parallel);
+%
+%      - sgn = Sign of latitude		1 : north latitude (default is mer=45 lat=70)
+%                              	   -1 : south latitude (default is mer=0  lat=71)
+
+%Get central_meridian and standard_parallel depending on hemisphere
+if nargin==5,
+	delta = central_meridian;
+	slat  = standard_parallel;
+elseif nargin==3
+	if sgn == 1,
+		delta = 45; slat = 70;
+		disp('Warning: expecting coordinates in polar stereographic (Std Latitude: 70ºN Meridian: 45º)');
+	elseif sgn==-1,
+		delta = 0;  slat = 71;
+		disp('Warning: expecting coordinates in polar stereographic (Std Latitude: 71ºS Meridian: 0º)');
+	else
+		error('Sign should be either 1 or -1');
+	end
+else
+	help xy2ll
+	error('bad usage');
+end
+
+%Choose ellipsoid
+if 0
+	%Hughes ellipsoid
+	re   = 6378.273*10^3; % Radius of the earth in meters
+	ex2 = .006693883;     % Eccentricity of the Hughes ellipsoid squared
+else
+	%WGS84 ellipsoid
+	re = 6378137;         % Radius of the earth in meters
+	f  = 1./298.257223563;% Earth flattening
+	ex2 = 2*f-f^2;        % Eccentricity squared
+end
+
+% Eccentricity 
+ex = sqrt(ex2);
+
+sl  = slat*pi/180.;
+rho = sqrt(x.^2 + y.^2);
+cm = cos(sl) / sqrt(1.0 - ex2 * (sin(sl)^2));
+T = tan((pi / 4.0) - (sl / 2.0)) / ((1.0 - ex * sin(sl)) / (1.0 + ex * sin(sl)))^(ex / 2.0);
+
+if  abs(slat-90.) < 1.e-5
+	T = rho * sqrt((1. + ex)^(1. + ex) * (1. - ex)^(1. - ex)) / 2. / re;
+else
+	T = rho * T / (re * cm);
+end
+
+chi = (pi / 2.0) - 2.0 * atan(T);
+lat = chi + ((ex2 / 2.0) + (5.0 * ex2^2.0 / 24.0) + (ex2^3.0 / 12.0)) * ...
+	sin(2 * chi) + ((7.0 * ex2^2.0 / 48.0) + (29.0 * ex2^3 / 240.0)) * ...
+	sin(4.0 * chi) + (7.0 * ex2^3.0 / 120.0) * sin(6.0 * chi) ;
+
+lat = sgn * lat;
+lon = atan2(sgn * x,-sgn * y);
+lon = sgn * lon;
+
+[res1,res2] = find(rho(:) <= 0.1);
+if res1
+	lat(res1) = pi/2. * sgn;
+	lon(res1) = 0.0;
+end
+
+lon = lon * 180. / pi;
+lat = lat * 180. / pi;
+lon = lon - delta;
+if nargout==3,
+	m=((1+sin(abs(slat)*pi/180))*ones(length(lat),1)./(1+sin(abs(lat)*pi/180)));
+	scale_factor=(1./m).^2;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/xy2ll.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/xy2ll.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/coordsystems/xy2ll.py	(revision 27955)
@@ -0,0 +1,80 @@
+import numpy as np
+from math import pi
+
+
+def xy2ll(x, y, sgn, *args):
+    """XY2LL - converts xy to lat long
+
+    Converts Polar  Stereographic (X, Y) coordinates for the polar regions to
+    latitude and longitude Stereographic (X, Y) coordinates for the polar
+    regions.
+    Author: Michael P. Schodlok, December 2003 (map2xy.m)
+
+    Usage:
+        [lat, lon] = xy2ll(x, y, sgn)
+        [lat, lon] = xy2ll(x, y, sgn, central_meridian, standard_parallel)
+
+    - sgn = Sign of latitude	1 : north latitude (default is mer = 45 lat = 70)
+    						   -1 : south latitude (default is mer = 0  lat = 71)
+    """
+
+    # Get central_meridian and standard_parallel depending on hemisphere
+    if len(args) == 2:
+        delta = args[0]
+        slat = args[1]
+    elif len(args) == 0:
+        if sgn == 1:
+            delta = 45.
+            slat = 70.
+            print('        xy2ll: creating coordinates in north polar stereographic (Std Latitude: 70degN Meridian: 45deg)')
+        elif sgn == -1:
+            delta = 0.
+            slat = 71.
+            print('        xy2ll: creating coordinates in south polar stereographic (Std Latitude: 71degS Meridian: 0deg)')
+        else:
+            raise ValueError('sgn should be either 1 or -1')
+    else:
+        raise Exception('bad usage: type "help(xy2ll)" for details')
+
+    # if x, y passed as lists, convert to np.arrays
+    if type(x) != "np.ndarray":
+        x = np.array(x)
+    if type(y) != "np.ndarray":
+        y = np.array(y)
+
+    # Conversion constant from degrees to radians
+    #cde = 57.29577951
+    # Radius of the earth in meters
+    re = 6378.273 * pow(10, 3)
+    # Eccentricity of the Hughes ellipsoid squared
+    ex2 = 0.006693883
+    # Eccentricity of the Hughes ellipsoid
+    ex = np.sqrt(ex2)
+
+    sl = slat * pi / 180.0
+    rho = np.sqrt(x**2 + y**2)
+    cm = np.cos(sl) / np.sqrt(1.0 - ex2 * (np.sin(sl)**2))
+    T = np.tan((pi / 4.0) - (sl / 2.0)) / ((1.0 - ex * np.sin(sl)) / (1.0 + ex * np.sin(sl)))**(ex / 2.0)
+
+    if abs(slat - 90.) < 1.e-5:
+        T = rho * np.sqrt((1. + ex)**(1. + ex) * (1. - ex)**(1. - ex)) / 2. / re
+    else:
+        T = rho * T / (re * cm)
+
+    chi = (pi / 2.0) - 2.0 * np.arctan(T)
+    lat = chi + ((ex2 / 2.0) + (5.0 * ex2**2.0 / 24.0) + (ex2**3.0 / 12.0)) * np.sin(2 * chi) + ((7.0 * ex2**2.0 / 48.0) + (29.0 * ex2**3 / 240.0)) * np.sin(4.0 * chi) + (7.0 * ex2**3.0 / 120.0) * np.sin(6.0 * chi)
+
+    lat = sgn * lat
+    lon = np.arctan2(sgn * x, -sgn * y)
+    lon = sgn * lon
+
+    res1 = np.nonzero(rho <= 0.1)[0]
+    if len(res1) > 0:
+        lat[res1] = pi / 2. * sgn
+        lon[res1] = 0.0
+
+    lon = lon * 180. / pi
+    lat = lat * 180. / pi
+    lon = lon - delta
+
+    return lat, lon
Index: /issm/branches/trunk-dlcheng-ASE/src/m/dev/ISSM.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/dev/ISSM.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/dev/ISSM.py	(revision 27955)
@@ -0,0 +1,74 @@
+print('WARNING: EXPERIMENTAL FEATURE ISSM.py: universal Python ISSM import')
+#Most common imports
+import numpy as np
+import scipy.io as spio
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from IssmConfig import *
+from MatlabFuncs import *
+
+#Secondary imports
+import copy
+from scipy.interpolate import interp1d
+from operator import itemgetter
+from generic import generic
+from materials import *
+from bamg import *
+from SMBgemb import *
+from calvingminthickness import *
+from calvingvonmises import *
+from bamgflowband import *
+from paterson import *
+from frictionsommers import *
+from hydrologysommers import *
+from transient import *
+from mismipbasalforcings import *
+from ComputeHessian import *
+from ComputeMetric import *
+
+# qmu
+from dakota_method import *
+from qmu_classes import *
+from partitioner import *
+from dmeth_params_set import *
+from dmeth_params_write import *
+
+
+#Helper functions
+def python_help():
+    '''Prints out key code fragments that may be useful to users'''
+    print('Differences between Python and Matlab code:')
+    #...
+
+
+def find(to_find):
+    '''analagous to matlab's find function but requires separate and / or functions'''
+    return np.array(np.where(to_find))
+
+
+def find_and(*args):
+    '''analagous to matlab's a & b functionality when used in conjunction with find(),
+        returns overlap across a and b
+        takes an arbitrary number of arguments of similar shape'''
+    result = args[0]
+    for arg in args[1:]:
+        if type(arg) != np.ndarray:
+            arg = np.array(arg)
+        result = np.intersect1d(result, arg)
+    return result
+
+
+def find_or(*args):
+    '''analagous to matlab's a | b functionality when used in conjunction with find(),
+        returns all unique values across a and b
+        takes an arbitrary number of arguments of similar shape'''
+    result = args[0]
+    for arg in args[1:]:
+        if type(arg) != np.ndarray:
+            arg = np.array(arg)
+        result = np.unique(np.concatenate((result, arg)))
+    return result
Index: /issm/branches/trunk-dlcheng-ASE/src/m/dev/devpath.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/dev/devpath.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/dev/devpath.m	(revision 27955)
@@ -0,0 +1,47 @@
+% clear the last warning to focus on the warnings of the ISSM path
+lastwarn(''); 
+
+%Recover ISSM_DIR , or if on a Windows machine, ISSM_DIR_WIN
+if ispc,
+	ISSM_DIR=getenv('ISSM_DIR_WIN');
+else
+	ISSM_DIR=getenv('ISSM_DIR');
+end
+
+if (isempty(ISSM_DIR)),
+	error('''ISSM_DIR'' environment variable is empty! You should define ISSM_DIR in your .cshrc or .bashrc!');
+end
+
+%Now add all issm code paths necessary to run issm smoothly. 
+%We capture the error output, so that we can warn the user to update 
+%the variable ISSM_DIR in this file, in case it is not correctly setup. 
+
+%ISSM path
+addpath([ISSM_DIR '/src/m/os/']);       %load recursivepath
+addpath([ISSM_DIR '/lib']);             %load MEX files
+addpath(recursivepath([ISSM_DIR '/src/m']));
+addpath(recursivepath([ISSM_DIR '/externalpackages/scotch']));
+addpath(recursivepath([ISSM_DIR '/externalpackages/canos']));
+addpath(recursivepath([ISSM_DIR '/externalpackages/kml']));
+addpath(recursivepath([ISSM_DIR '/externalpackages/export_fig']));
+addpath(recursivepath([ISSM_DIR '/externalpackages/googleearthtoolbox']));
+addpath(recursivepath([ISSM_DIR '/externalpackages/howatmask']));
+addpath(recursivepath([ISSM_DIR '/externalpackages/dem']));
+addpath(recursivepath([ISSM_DIR '/externalpackages/mealpix']));
+addpath(recursivepath([ISSM_DIR '/externalpackages/pcatool']));
+
+%Check on any warning messages that might indicate that the paths were not correct. 
+if ~isempty(lastwarn),
+	fprintf('\n  Error trying to setup ''ISSM'' code paths. Try and update the ISSM_DIR variable in your .cshrc or .bashrc!\n');
+	fprintf('  ''ISSM'' will not  work at all until this is resolved\n\n');
+else
+	fprintf('\n  ISSM development path correctly loaded\n\n');
+end
+
+warning ('off','all');
+addpath([ISSM_DIR '/lib-precompiled']); %load MEX files (precompiled; remove after MEX file compilation is supported on Silicon-based Macs)
+warning ('on','all');
+clear ISSM_DIR;
+
+%disable matlab bell!
+beep off;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/dev/devpath.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/dev/devpath.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/dev/devpath.py	(revision 27955)
@@ -0,0 +1,55 @@
+#!/usr/bin/env python3
+import os
+import sys
+
+# Recover ISSM_DIR and USERNAME
+ISSM_DIR = os.getenv('ISSM_DIR')
+USERNAME = os.getenv('USER')
+JPL_SVN = os.getenv('JPL_SVN')
+if ISSM_DIR is None:
+    raise NameError('"ISSM_DIR" environment variable is empty! You should define ISSM_DIR in your .cshrc or .bashrc!')
+
+# Go through src/m and append any directory that contains a *.py file to PATH
+for root, dirs, files in os.walk(ISSM_DIR + '/src/m'):
+    if '.svn' in dirs:
+        dirs.remove('.svn')
+    for file in files:
+        if file.find('.py') != -1:
+            if file.find('.pyc') == -1:
+                if root not in sys.path:
+                    sys.path.append(root)
+
+# Also add the Nightly run directory
+if ISSM_DIR + '/test/NightlyRun' not in sys.path:
+    sys.path.append(ISSM_DIR + '/test/NightlyRun')
+if ISSM_DIR + '/lib' not in sys.path:
+    sys.path.append(ISSM_DIR + '/lib')
+if ISSM_DIR + '/lib-precompiled' not in sys.path:
+    sys.path.append(ISSM_DIR + '/lib-precompiled') # load precompiled MEX files; remove after MEX file compilation is supported on Silicon-based Macs
+if ISSM_DIR + '/src/wrappers/python/.libs' not in sys.path:
+    sys.path.append(ISSM_DIR + '/src/wrappers/python/.libs')
+
+# If using clusters, we need to have the path to the cluster settings directory
+if JPL_SVN is not None:
+    jpl_path = JPL_SVN + '/usr/' + USERNAME
+    if os.path.exists(jpl_path):
+        if jpl_path not in sys.path:
+            sys.path.append(jpl_path)
+    else:
+        print('Warning: devpath.py: cluster settings should be in {}'.format(jpl_path))
+
+try: # Avoid circular import
+    from runme import runme  # First, because plotmodel may fail
+except:
+    pass
+from plotmodel import plotmodel
+
+#c = get_ipython().config
+#c.InteractiveShellApp.exec_lines = []
+#c.InteractiveShellApp.exec_lines.append('%load_ext autoreload')
+#c.InteractiveShellApp.exec_lines.append('%autoreload 2')
+#c.InteractiveShellApp.exec_lines.append('print "Warning: disable autoreload in startup.py to improve performance." ')
+
+# print("\n  ISSM development path correctly loaded")
+# print("Current path is {}\n\n".format(ISSM_DIR))
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/dev/issmversion.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/dev/issmversion.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/dev/issmversion.m	(revision 27955)
@@ -0,0 +1,28 @@
+function vers = issmversion(),
+%ISSMVERSION - display ISSM version
+%
+%   Usage:
+%      issmversion()
+%      version = issmversion()
+
+
+if exist('IssmConfig_matlab')~=3,
+	error('ISSM not correctly installed. "IssmConfig_matlab" not found');
+end
+
+if nargout==1
+	vers = IssmConfig('PACKAGE_VERSION');
+	return;
+end
+
+disp([' ']);
+disp([IssmConfig('PACKAGE_NAME') ' Version ' IssmConfig('PACKAGE_VERSION')]);
+disp(['(website: ' IssmConfig('PACKAGE_URL') ' contact: ' IssmConfig('PACKAGE_BUGREPORT') ')']);
+disp([' ']);
+disp(['Build date: ' IssmConfig('PACKAGE_BUILD_DATE')]);
+disp(['Compiled on ' IssmConfig('HOST_VENDOR') ' ' IssmConfig('HOST_OS') ' ' IssmConfig('HOST_ARCH') ' by ' IssmConfig('USER_NAME')]);
+disp([' ']);
+disp(['Copyright (c) 2009-2023 California Institute of Technology']);
+disp([' ']);
+disp(['    to get started type: issmdoc']);
+disp([' ']);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/dev/issmversion.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/dev/issmversion.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/dev/issmversion.py	(revision 27955)
@@ -0,0 +1,21 @@
+from IssmConfig import IssmConfig
+
+
+def issmversion():
+    """
+    ISSMVERSION - display ISSM version
+
+        Usage:
+            issmversion()
+    """
+
+
+print(' ')
+print((IssmConfig('PACKAGE_NAME')[0] + ' Version ' + IssmConfig('PACKAGE_VERSION')[0]))
+print(('(website: ' + IssmConfig('PACKAGE_URL')[0] + ' contact: ' + IssmConfig('PACKAGE_BUGREPORT')[0] + ')'))
+print(' ')
+print(('Build date: ' + IssmConfig('PACKAGE_BUILD_DATE')[0]))
+print('Copyright (c) 2009-2023 California Institute of Technology')
+print(' ')
+print('    to get started type: issmdoc')
+print(' ')
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/clicktoflowline.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/clicktoflowline.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/clicktoflowline.m	(revision 27955)
@@ -0,0 +1,24 @@
+function clicktoflowline(index,x,y,u,v,filename)
+%CLICKTOFLOWLINE - create a flowline ARGUS file
+%
+%   create a flowline contour file (named 'filename') by clicking
+%   on a velocity field once (velocity must be plotted first)
+%
+%   Usage: 
+%      clicktoflowline(index,x,y,u,v,x0,y0,filename)
+%
+%   Example: 
+%      clicktoflowline(md.mesh.elements,md.mesh.x,md.mesh.y,md.inversion.vx_obs,md.inversion.vy_obs,'flowline.exp')
+
+%Get click position
+[x0,y0]=exp_ginput(1,options);
+
+%Get flowline
+line=flowlines(index,x,y,u,v,x0,y0);
+
+%plot
+hold on
+plot(line.x,line.y,'r-');
+
+%Write argus file
+expwrite(line,filename);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/contourlevelzero.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/contourlevelzero.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/contourlevelzero.m	(revision 27955)
@@ -0,0 +1,3 @@
+function contours=contourlevelzero(md,mask,level,varargin)
+
+	error('this function has been renamed: A = isoline(md,mask);');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/contourlevelzero.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/contourlevelzero.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/contourlevelzero.py	(revision 27955)
@@ -0,0 +1,230 @@
+import os.path
+import numpy as np
+from collections import OrderedDict
+
+
+def contourlevelzero(md,mask,level):
+    """CONTOURLEVELZERO - figure out the zero level (or offset thereof, 
+    specified by the level value of a vectorial mask, and vectorialize it into 
+    an exp or shp compatible structure.
+
+    Usage:
+        contours=contourlevelzero(md,mask,level)
+
+        See also: PLOT_CONTOUR
+    """
+
+    # Process data 
+    if md.mesh.dimension() == 3:
+        x = md.mesh.x2d
+        y = md.mesh.y2d
+        z = md.mesh.z
+        index = md.mesh.elements2d - 1
+    else:
+        x = md.mesh.x
+        y = md.mesh.y
+        index = md.mesh.elements - 1
+        z = np.zeros((md.mesh.numberofvertices, 1))
+
+    if len(mask) == 0:
+        raise OSError("mask provided is empty")
+
+    if md.mesh.dimension() == 3:
+        if len(mask) != md.mesh.numberofvertices2d: 
+            raise OSError("mask provided should be specified at the vertices of the mesh")
+    else:
+        if len(mask) != md.mesh.numberofvertices:
+            raise OSError("mask provided should be specified at the vertices of the mesh")
+
+    # Initialization of some variables
+    numberofelements = np.size(index, 0)
+    elementslist = np.c_[0:numberofelements]
+    c = []
+    h = []
+
+    # Get unique edges in mesh
+    # 1: list of edges
+    edges = np.vstack((np.vstack((index[:, (0, 1)], index[:, (1, 2)])), index[:, (2, 0)]))
+    # 2: find unique edges
+    [edges, J] = np.unique(np.sort(edges, 1), axis=0, return_inverse=True)
+    # 3: unique edge numbers
+    vec = J
+    # 4: unique edges numbers in each triangle (2 triangles sharing the same 
+    # edge will have the same edge number)
+    edges_tria = np.hstack((np.hstack((vec[elementslist], vec[elementslist + numberofelements])), vec[elementslist + 2 * numberofelements]))
+
+    # Segments [nodes1 nodes2]
+    Seg1 = index[:, (0, 1)]
+    Seg2 = index[:, (1, 2)]
+    Seg3 = index[:, (2, 0)]
+
+    # Segment numbers [1;4;6;...]
+    Seg1_num = edges_tria[:, 0]
+    Seg2_num = edges_tria[:, 1]
+    Seg3_num = edges_tria[:, 2]
+
+    #value of data on each tips of the segments
+    Data1 = mask[Seg1]
+    Data2 = mask[Seg2]
+    Data3 = mask[Seg3]
+
+    # Get the ranges for each segment
+    Range1 = np.sort(Data1, 1)
+    Range2 = np.sort(Data2, 1)
+    Range3 = np.sort(Data3, 1)
+
+    # Find the segments that contain this value
+    pos1 = (Range1[:, 0] < level) & (Range1[:, 1] >= level)
+    pos2 = (Range2[:, 0] < level) & (Range2[:, 1] >= level)
+    pos3 = (Range3[:, 0] < level) & (Range3[:, 1] >= level)
+
+    # Get elements
+    poselem12 = (pos1) & (pos2)
+    poselem13 = (pos1) & (pos3)
+    poselem23 = (pos2) & (pos3)
+    poselem = np.where((poselem12) | (poselem13) | (poselem23))
+    poselem = poselem[0]
+    numelems = len(poselem)
+
+    # If no element has been flagged, skip to the next level
+    if numelems == 0:
+        raise Exception('contourlevelzero warning message: no elements found with corresponding level value in mask')
+        contours = []
+        return contours
+
+    # Go through the elements and build the coordinates for each segment (1 by element)
+    x1 = np.zeros((numelems, 1))
+    x2 = np.zeros((numelems, 1))
+    y1 = np.zeros((numelems, 1))
+    y2 = np.zeros((numelems, 1))
+    z1 = np.zeros((numelems, 1))
+    z2 = np.zeros((numelems, 1))
+
+    edge_l = np.zeros((numelems, 2))
+
+    for j in range(0, numelems):
+        with np.errstate(divide='ignore', invalid='ignore'):
+            weight1 = np.divide(level - Data1[poselem[j], 0],Data1[poselem[j], 1] - Data1[poselem[j], 0])
+            weight2 = np.divide(level - Data2[poselem[j], 0],Data2[poselem[j], 1] - Data2[poselem[j], 0])
+            weight3 = np.divide(level - Data3[poselem[j], 0],Data3[poselem[j], 1] - Data3[poselem[j], 0])
+
+        if poselem12[poselem[j]] == True:
+            x1[j] = x[Seg1[poselem[j], 0]] + weight1 * [x[Seg1[poselem[j], 1]] - x[Seg1[poselem[j], 0]]]
+            x2[j] = x[Seg2[poselem[j], 0]] + weight2 * [x[Seg2[poselem[j], 1]] - x[Seg2[poselem[j], 0]]]
+            y1[j] = y[Seg1[poselem[j], 0]] + weight1 * [y[Seg1[poselem[j], 1]] - y[Seg1[poselem[j], 0]]]
+            y2[j] = y[Seg2[poselem[j], 0]] + weight2 * [y[Seg2[poselem[j], 1]] - y[Seg2[poselem[j], 0]]]
+            z1[j] = z[Seg1[poselem[j], 0]] + weight1 * [z[Seg1[poselem[j], 1]] - z[Seg1[poselem[j], 0]]]
+            z2[j] = z[Seg2[poselem[j], 0]] + weight2 * [z[Seg2[poselem[j], 1]] - z[Seg2[poselem[j], 0]]]
+
+            edge_l[j, 0] = Seg1_num[poselem[j]]
+            edge_l[j, 1] = Seg2_num[poselem[j]]
+        elif poselem13[poselem[j]] == True:
+            x1[j] = x[Seg1[poselem[j], 0]] + weight1 * [x[Seg1[poselem[j], 1]] - x[Seg1[poselem[j], 0]]]
+            x2[j] = x[Seg3[poselem[j], 0]] + weight3 * [x[Seg3[poselem[j], 1]] - x[Seg3[poselem[j], 0]]]
+            y1[j] = y[Seg1[poselem[j], 0]] + weight1 * [y[Seg1[poselem[j], 1]] - y[Seg1[poselem[j], 0]]]
+            y2[j] = y[Seg3[poselem[j], 0]] + weight3 * [y[Seg3[poselem[j], 1]] - y[Seg3[poselem[j], 0]]]
+            z1[j] = z[Seg1[poselem[j], 0]] + weight1 * [z[Seg1[poselem[j], 1]] - z[Seg1[poselem[j], 0]]]
+            z2[j] = z[Seg3[poselem[j], 0]] + weight3 * [z[Seg3[poselem[j], 1]] - z[Seg3[poselem[j], 0]]]
+
+            edge_l[j, 0] = Seg1_num[poselem[j]]
+            edge_l[j, 1] = Seg3_num[poselem[j]]
+        elif poselem23[poselem[j]] == True:
+            x1[j] = x[Seg2[poselem[j], 0]] + weight2 * [x[Seg2[poselem[j], 1]] - x[Seg2[poselem[j], 0]]]
+            x2[j] = x[Seg3[poselem[j], 0]] + weight3 * [x[Seg3[poselem[j], 1]] - x[Seg3[poselem[j], 0]]]
+            y1[j] = y[Seg2[poselem[j], 0]] + weight2 * [y[Seg2[poselem[j], 1]] - y[Seg2[poselem[j], 0]]]
+            y2[j] = y[Seg3[poselem[j], 0]] + weight3 * [y[Seg3[poselem[j], 1]] - y[Seg3[poselem[j], 0]]]
+            z1[j] = z[Seg2[poselem[j], 0]] + weight2 * [z[Seg2[poselem[j], 1]] - z[Seg2[poselem[j], 0]]]
+            z2[j] = z[Seg3[poselem[j], 0]] + weight3 * [z[Seg3[poselem[j], 1]] - z[Seg3[poselem[j], 0]]]
+
+            edge_l[j, 0] = Seg2_num[poselem[j]]
+            edge_l[j, 1] = Seg3_num[poselem[j]]
+        # else:
+        # Should never get here
+
+    # Now that we have the segments, we must try to connect them...
+
+    # Loop over the subcontours
+    contours = []
+
+    while len(edge_l) > 0:
+        # Take the right edge of the second segment and connect it to the next segments if any
+        e1 = edge_l[0, 0]
+        e2 = edge_l[0, 1]
+        xc = np.vstack((x1[0], x2[0]))
+        yc = np.vstack((y1[0], y2[0]))
+        zc = np.vstack((z1[0], z2[0]))
+        # Erase the lines corresponding to this edge
+        edge_l = np.delete(edge_l, 0, axis=0)
+        x1 = np.delete(x1, 0, axis=0)
+        x2 = np.delete(x2, 0, axis=0)
+        y1 = np.delete(y1, 0, axis=0)
+        y2 = np.delete(y2, 0, axis=0)
+        z1 = np.delete(z1, 0, axis=0)
+        z2 = np.delete(z2,0,axis=0)
+        pos1 = np.where(edge_l == e1)
+        
+        while len(pos1[0]) > 0:
+            if np.all(pos1[1] == 0):
+                xc = np.vstack((x2[pos1[0]], xc))
+                yc = np.vstack((y2[pos1[0]], yc))
+                zc = np.vstack((z2[pos1[0]], zc))
+                # Next edge:
+                e1 = edge_l[pos1[0], 1]
+            else:
+                xc = np.vstack((x1[pos1[0]], xc))
+                yc = np.vstack((y1[pos1[0]], yc))
+                zc = np.vstack((z1[pos1[0]], zc))
+                # Next edge:
+                e1 = edge_l[pos1[0], 0]
+
+            # Erase the lines of this
+            edge_l = np.delete(edge_l, pos1[0], axis=0)
+            x1 = np.delete(x1, pos1[0], axis=0)
+            x2 = np.delete(x2, pos1[0], axis=0)
+            y1 = np.delete(y1, pos1[0], axis=0)
+            y2 = np.delete(y2, pos1[0], axis=0)
+            z1 = np.delete(z1, pos1[0], axis=0)
+            z2 = np.delete(z2, pos1[0], axis=0)
+            # Next connection
+            pos1 = np.where(edge_l == e1)
+
+        # Same thing the other way (to the right)
+        pos2 = np.where(edge_l == e2)
+
+        while len(pos2[0]) > 0:
+            if np.all(pos2[1] == 0):
+                xc = np.vstack((xc, x2[pos2[0]]))
+                yc = np.vstack((yc, y2[pos2[0]]))
+                zc = np.vstack((zc, z2[pos2[0]]))
+                # Next edge:
+                e2 = edge_l[pos2[0], 1]
+            else:
+                xc = np.vstack((xc, x1[pos2[0]]))
+                yc = np.vstack((yc, y1[pos2[0]]))
+                zc = np.vstack((zc, z1[pos2[0]]))
+                # Next edge:
+                e2 = edge_l[pos2[0], 0]
+
+            # Erase the lines of this
+            edge_l = np.delete(edge_l, pos2[0], axis=0)
+            x1 = np.delete(x1, pos2[0], axis=0)
+            x2 = np.delete(x2, pos2[0], axis=0)
+            y1 = np.delete(y1, pos2[0], axis=0)
+            y2 = np.delete(y2, pos2[0], axis=0)
+            z1 = np.delete(z1, pos2[0], axis=0)
+            z2 = np.delete(z2, pos2[0], axis=0)
+            # Next connection
+            pos2 = np.where(edge_l == e2)
+
+        # Save xc, yc contour:
+        newcontour = OrderedDict()
+        newcontour['nods'] = np.size(xc)
+        newcontour['density'] = 1
+        newcontour['closed'] = 0
+        newcontour['x'] = np.ma.filled(xc.astype(float), np.nan)
+        newcontour['y'] = np.ma.filled(yc.astype(float), np.nan)
+        newcontour['z'] = np.ma.filled(zc.astype(float), np.nan)
+        newcontour['name'] = ''
+        contours.append(newcontour)
+
+    return contours
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/exp2levelsetfunction.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/exp2levelsetfunction.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/exp2levelsetfunction.m	(revision 27955)
@@ -0,0 +1,51 @@
+function lsf=exp2levelsetfunction(md, exp_icedomain)
+	%EXP2LEVELSETFUNCTION: returns signed distance function from EXP-file
+	%
+	%   This routine computes a signed distance function from an EXP-file given in the input.
+	%   It can be used with the level-set method.
+	%
+	%   USAGE:
+	%      levelsetfunction=exp2levelsetfunction(md, exp_icedomain)
+	%
+
+	mesh=md.mesh;
+	profiles=expread(exp_icedomain);
+
+	min_dist=NaN(size(mesh.x));
+	for p=1:size(profiles,2)
+		profile=profiles(p);
+
+		%construct ice domain segments
+		inds_v=1:profile.nods-1;
+		inds_w=2:profile.nods;
+		segments.v.x=profile.x(inds_v);	segments.v.y=profile.y(inds_v);
+		segments.w.x=profile.x(inds_w);	segments.w.y=profile.y(inds_w);
+		segments.numsegments=length(segments.v.x);
+
+		% compute minimum distance to segments
+		for s=1:segments.numsegments
+			segment.v.x=segments.v.x(s);	segment.v.y=segments.v.y(s);
+			segment.w.x=segments.w.x(s);	segment.w.y=segments.w.y(s);
+			min_dist=min(min_dist, compute_distance_to_segment(segment, mesh.x, mesh.y));
+		end
+	end
+
+	% set sign of lsf
+	sign_lsf=ones(mesh.numberofvertices,1);
+	isice=ContourToMesh(mesh.elements,mesh.x,mesh.y,exp_icedomain,'node',2);
+	sign_lsf(find(isice))=-1;
+
+	lsf=sign_lsf.*min_dist;
+
+	function dist=compute_distance_to_segment(segment,x,y)
+		%compute horizontal euclidean distance to segment
+		v=[segment.v.x segment.v.y];
+		w=[segment.w.x segment.w.y];
+		verts=[x y];
+		dist_vw2=norm(w-v)^2;
+		if(dist_vw2==0.),	t=zeros(size(x)); %cover case where segment has length 0
+		else t=[x-v(1) y-v(2)]*(w-v)'/dist_vw2; end %projection of verts on line defined by v and w
+		dist_vec=(ones(length(x),1)*v+max(0,min(1,t))*(w-v))-verts; %vector of shortest distance between verts and segment v-w
+		dist=sqrt(sum(abs(dist_vec).^2,2));
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/exp2shp.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/exp2shp.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/exp2shp.m	(revision 27955)
@@ -0,0 +1,65 @@
+function exp2shp(expfilename,shpfilename,geometry)
+%SHPWRITE - write a shape file from a contour structure
+%
+%   Usage:
+%      exp2shp(expfilename,shpfilename,geometry)
+%
+%   Example:
+%      exp2shp('domainoutline.exp','domainoutline.shp')
+%      exp2shp('domainoutline.exp','domainoutline.shp','Polygon')
+%      exp2shp('massfluxgate.exp','massfluxgate.shp','Line')
+%
+%   See also SHPREAD, SHPWRITE, SHP2EXP
+
+%check file extensions
+[pathstr,name,ext] = fileparts(shpfilename);
+if ~strcmp(ext,'.shp'),
+	error(['Shapefile ' shpfilename ' does not have an extension .shp']);
+end
+
+[pathstr,name,ext] = fileparts(expfilename);
+if ~strcmp(ext,'.exp'),
+	error(['Exp file ' expfilename ' does not have an extension .exp']);
+end
+
+shp=expread(expfilename);
+
+%initialize number of profile
+count=1;
+
+contours=struct([]);
+for i=1:length(shp),
+	if nargin < 3
+
+		%TEMP
+		%if contains(shp(i).name,'_pointcloud');
+		%	continue;
+		%end
+
+		if length(shp(i).x) == 0
+			continue;
+		elseif contains(shp(i).name,'_pointcloud');
+			geometry = 'MultiPoint';
+			shp(i).name = erase(shp(i).name,'_pointcloud');
+		elseif length(shp(i).x) == 1
+			geometry = 'Point';
+		elseif length(shp(i).x) < 3
+			geometry = 'Line';
+		else 
+			if (shp(i).x(end)==shp(i).x(1) && shp(i).y(end)==shp(i).y(1)),
+				geometry = 'Polygon';
+			else
+				geometry = 'Line';
+			end
+		end
+	end
+	contours(count).Geometry=geometry;
+	contours(count).id=i;
+	contours(count).Name=shp(i).name;
+	contours(count).X=shp(i).x;
+	contours(count).Y=shp(i).y;
+	count = count+1;
+end
+
+%Make sure it is one single geometry otherwise it will yell at you
+shapewrite(contours,shpfilename);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/expbox.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/expbox.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/expbox.m	(revision 27955)
@@ -0,0 +1,41 @@
+function expbox(filename)
+%EXPBOX - Create an ARGUS file using two clicks
+%
+%   Two clicks on a plot are used to generate a rectangular box
+%   This box is written in EXP format on filename
+%
+%   Usage:
+%      expbox(filename)
+
+%check
+if exist(filename,'file'),
+	choice=input(['A file ' filename ' already exists, do you want to modify it? (y/n)'],'s');
+	if ~strcmpi(choice,'y'),
+		disp('no modification done ... exiting');
+		return
+	end
+end
+
+%Get points
+disp('Click twice to define a rectangular domain. First click for upper left corner, second for lower right corner');
+[x,y]=ginput(2);
+
+x1=x(1);
+x2=x(2);
+x3=x2;
+x4=x1;
+
+y1=y(1);
+y2=y1;
+y3=y(2);
+y4=y3;
+
+%Build Exp structure
+A=struct();
+A.nods=5;
+A.density=1;
+A.x=[x1 x2 x3 x4 x1]';
+A.y=[y1 y2 y3 y4 y1]';
+
+%Write structure
+expwrite(A,filename);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/expcircle.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/expcircle.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/expcircle.m	(revision 27955)
@@ -0,0 +1,31 @@
+function expcircle(filename,x0,y0,radius,numberofnodes)
+%EXPCIRCLE - create a circular contour corresponding to given parameters
+%
+%   Creates a closed argus contour centered on x,y of radius size.
+%   The contour is made of numberofnodes
+%
+%   Usage:
+%      expcircle(filename,x0,y0,radius,numberofnodes)
+%
+%   See also EXPMASTER, EXPDOC
+
+%Calculate the cartesians coordinates of the points
+x_list=ones(numberofnodes+1,1);
+y_list=ones(numberofnodes+1,1);
+
+theta=(0:2*pi/numberofnodes:2*pi*(1-1/numberofnodes))';
+theta=[theta;0];
+
+x_list=radius*x_list.*cos(theta);
+y_list=radius*y_list.*sin(theta);
+
+%offset x_list and y_list by x0 and y0:
+x_list=x_list+x0;
+y_list=y_list+y0;
+
+contour.x=x_list;
+contour.y=y_list;
+contour.density=1;
+contour.name='circle';
+
+expwrite(contour,filename);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/expcoarsen.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/expcoarsen.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/expcoarsen.m	(revision 27955)
@@ -0,0 +1,83 @@
+function expcoarsen(newfile,varargin)
+%EXPCOARSEN - coarsen an exp contour
+%
+%   This routine read an Argus file and remove points with respect to
+%   the resolution (in meters) given in input. 
+%
+%   Usage:
+%      expcoarsen(newfile,oldfile,resolution)
+%      expcoarsen(file,resolution)
+%
+%   Example:
+%       expcoarsen('DomainOutline.exp','Antarctica.exp',4000)
+
+%Some checks
+if nargin==2,
+	resolution = varargin{1};
+	oldfile= newfile;
+elseif nargin==3,
+	oldfile = varargin{1};
+	resolution = varargin{2};
+else
+	error('bad usage');
+end
+
+if ~exist(oldfile)
+	error(['expcoarsen error message: file ''' oldfile ''' does not exist'])
+elseif exist(newfile),
+	choice=input(['A file ' newfile ' already exists, do you want to modify it? (y/n)'],'s');
+	if ~strcmpi(choice,'y'),
+		disp('no modification done ... exiting');
+		return;
+	end
+end
+
+%Get exp oldfile
+[path root ext]=fileparts(oldfile);
+A=expread(oldfile);
+numprofiles=size(A,2);
+
+%Go through the profiles
+count=1;
+while count<=numprofiles,
+
+	%get number of points and initialize j
+	numpoints=length(A(count).x);
+	j=1;
+
+	%stop if we have reached end of profile (always keep the last point)
+	while j<numpoints,
+
+		%See whether we keep this point or not
+		distance=sqrt((A(count).x(j)-A(count).x(j+1))^2+(A(count).y(j)-A(count).y(j+1))^2);
+		if distance<resolution & j<numpoints-1  %do not remove last point
+			A(count).x(j+1)=[];
+			A(count).y(j+1)=[];
+			numpoints=numpoints-1;
+		else
+			division=floor(distance/resolution)+1;
+			if division>=2,
+				x=linspace(A(count).x(j),A(count).x(j+1),division)';
+				y=linspace(A(count).y(j),A(count).y(j+1),division)';
+				A(count).x=[A(count).x(1:j);x(2:end-1); A(count).x(j+1:end)];
+				A(count).y=[A(count).y(1:j);y(2:end-1); A(count).y(j+1:end)];
+
+				%update current point
+				j=j+1+division-2;
+				numpoints=numpoints+division-2;
+			else
+				%update current point
+				j=j+1;
+			end
+		end
+	end
+	if length(A(count).x)<=1,
+		A(count)=[];
+		numprofiles=numprofiles-1;
+	else
+		count=count+1;
+	end
+end
+
+%write output
+expwrite(A,newfile);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/expcoarsen.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/expcoarsen.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/expcoarsen.py	(revision 27955)
@@ -0,0 +1,77 @@
+import os.path
+import numpy as np
+from collections import OrderedDict
+from expread import expread
+from expwrite import expwrite
+
+
+def expcoarsen(newfile, oldfile, resolution):
+    """
+    EXPCOARSEN - coarsen an exp contour
+
+    This routine read an Argus file and remove points with respect to
+    the resolution (in meters) given in input.
+
+    Usage:
+      expcoarsen(newfile, oldfile, resolution)
+
+    Example:
+       expcoarsen('DomainOutline.exp', 'Antarctica.exp', 4000)
+    """
+
+    #Some checks
+    if not os.path.exists(oldfile):
+        raise OSError("expcoarsen error message: file '%s' not found!" % oldfile)
+    if os.path.exists(newfile):
+        choice = eval(input('A file ' + newfile + ' already exists, do you want to modify it? (y / n)'))
+        if choice not in 'y':
+            print('no modification done ... exiting')
+            return 0
+
+    #Get exp oldfile
+    contours = expread(oldfile)
+    newcontours = []
+
+    for contour in contours:
+        numpoints = np.size(contour['x'])
+
+        j = 0
+        x = contour['x']
+        y = contour['y']
+
+        #stop if we have reached end of profile (always keep the last point)
+        while j < numpoints - 1:
+
+            #see whether we keep this point or not
+            distance = np.sqrt((x[j] - x[j + 1])**2 + (y[j] - y[j + 1])**2)
+            if distance < resolution and j < numpoints - 2:  #do not remove last point
+                x = np.delete(x, j + 1, 0)
+                y = np.delete(y, j + 1, 0)
+                numpoints = numpoints - 1
+            else:
+                division = int(np.floor(distance / resolution) + 1)
+                if division >= 2:
+                    xi = np.linspace(x[j], x[j + 1], division)
+                    yi = np.linspace(y[j], y[j + 1], division)
+
+                    x = np.hstack((x[0:j + 1], xi[1:-1], x[j + 1:]))
+                    y = np.hstack((y[0:j + 1], yi[1:-1], y[j + 1:]))
+
+                    #update current point
+                    j = j + 1 + division - 2
+                    numpoints = numpoints + division - 2
+                else:
+                    #update current point
+                    j = j + 1
+
+        if np.size(x) > 1:
+            #keep the (x, y) contour arond
+            newcontour = OrderedDict()
+            newcontour['nods'] = np.size(x)
+            newcontour['density'] = contour['density']
+            newcontour['x'] = x
+            newcontour['y'] = y
+            newcontours.append(newcontour)
+
+    #write output
+    expwrite(newcontours, newfile)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/expcontourlevelzero.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/expcontourlevelzero.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/expcontourlevelzero.m	(revision 27955)
@@ -0,0 +1,3 @@
+function expcontourlevelzero(md,mask,level,filename)
+
+error(['this function has been renamed: isoline(md,mask,''output'',''' filename ''');']);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/expcontract.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/expcontract.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/expcontract.m	(revision 27955)
@@ -0,0 +1,33 @@
+function normal_node=expcontract(newfile,oldfile,distance)
+%EXPCONTRACT - contract or expand a profile, according to the normal.
+% 
+%   Usage:
+%      expcontract(newfile,oldfile,distance)
+%
+%   See also EXPMASTER, EXPDOC
+
+contour=expread(oldfile);
+num=numel(contour.x);
+
+normal=zeros(num-1,2);
+normal_node=zeros(num-1,2);
+
+for i=1:num-1,
+	normal(i,:)=[ contour.y(i)-contour.y(i+1) contour.x(i+1)-contour.x(i)];
+	normal(i,:)=normal(i,:)/sqrt(normal(i,1)^2+normal(i,2)^2);
+end
+
+normal_node(2:end,:)=[normal(1:end-1,:)+normal(2:end,:)];
+normal_node(1,:)=normal(1,:)+normal(end,:);
+
+normal_node_norm=sqrt(normal_node(:,1).^2+normal_node(:,2).^2);
+normal_node(:,1)=normal_node(:,1)./normal_node_norm;
+normal_node(:,2)=normal_node(:,2)./normal_node_norm;
+
+contour.x(1:end-1)=contour.x(1:end-1)+distance*normal_node(:,1);
+contour.y(1:end-1)=contour.y(1:end-1)+distance*normal_node(:,2);
+
+contour.x(end)=contour.x(1);
+contour.y(end)=contour.y(1);
+
+expwrite(contour,newfile);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/expdisp.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/expdisp.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/expdisp.m	(revision 27955)
@@ -0,0 +1,58 @@
+function expdisp(domainoutline,varargin)
+%EXPDISP - plot the contours of a domain outline file
+%
+%   This routine reads in a domain outline file (Argus format) and plots all the contours 
+%
+%   Usage:
+%      expdisp(domainoutline,options)
+%
+%   Available options:
+%      - 'figure'     : figure number or handle
+%      - 'linestyle'  : line style ('r--','-y',...)
+%      - 'linewidth'  : line width (1,2,...)
+%      - 'multiplier' : coordinate multiplier (10^3 if the plot is in km)
+%      - 'title'      : do we add contour names to each contour
+%      - 'patch'      : do we want the contour to be filled
+%
+%   Example:
+%      expdisp('Domain.exp','figure',1,'linestyle','--r','linewidth',2,'multiplier',10^3);
+%
+%   See also EXPMASTER, EXPDOC
+
+%Get and process options
+options = pairoptions(varargin{:});
+unitmultiplier = getfieldvalue(options,'multiplier',1);
+linewidth      = getfieldvalue(options,'linewidth',1);
+linestyle      = getfieldvalue(options,'linestyle','-r');
+ispatch        = getfieldvalue(options,'patch',0);
+
+%read file
+domain=expread(domainoutline);
+
+%Create figure if needed and hold
+if exist(options,'figure'),
+	figure(getfieldvalue(options,'figure'));
+end
+hold on
+
+for i=1:length(domain),		
+	if domain(i).nods==1
+		plot(domain(i).x*unitmultiplier,domain(i).y*unitmultiplier,'o','MarkerEdgeColor','k','MarkerFaceColor','r','MarkerSize',10);
+		if exist(options,'title')
+			text(domain(i).x*unitmultiplier,domain(i).y*unitmultiplier,domain(i).name,'BackgroundColor',[1. .0 .0]);
+		end
+	else
+		if ispatch,
+			patch(domain(i).x*unitmultiplier,domain(i).y*unitmultiplier,linestyle);
+		else
+			if (isnumeric(linestyle))
+				plot(domain(i).x*unitmultiplier,domain(i).y*unitmultiplier,'Color',linestyle,'linewidth',linewidth);
+			else
+				plot(domain(i).x*unitmultiplier,domain(i).y*unitmultiplier,linestyle,'linewidth',linewidth);
+			end
+		end
+		if exist(options,'title')
+			text(domain(i).x(1)*unitmultiplier,domain(i).y(1)*unitmultiplier,domain(i).name,'BackgroundColor',[.7 .9 .7]);
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/expdisp.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/expdisp.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/expdisp.py	(revision 27955)
@@ -0,0 +1,60 @@
+from expread import expread
+import numpy as np
+from matplotlib.path import Path
+import matplotlib.patches as patches
+
+
+def expdisp(ax, options):
+    '''
+    plot the contents of a domain outline file
+
+    This routine reads in an exp file and plots all of the x, y points / lines / patches
+
+    'ax' is a handle to the current plot axes, onto which we want to plot
+
+    Usage:
+    expdisp(ax, options)
+
+    List of options passable to plotmodel:
+    'expdisp'      : path (or list of paths) to the exp file to be plotted
+    'explinewidth' : linewidth
+    'explinestyle' : matplotlib linestyle string
+    'explinecolor' : matplotlib color string
+    'expfill'      : (True / False) fill a closed contour
+    'expfillcolor' : Color for a filled contour, only used if expfill is True
+    'expfillalpha' : alpha transparency for filled contour
+
+    All options should be passed as lists of length len(number of exp files passed)
+    '''
+
+    filenames = options.getfieldvalue('expdisp')
+    linewidth = options.getfieldvalue('explinewidth', [1] * len(filenames))
+    linestyle = options.getfieldvalue('explinestyle', ['-'] * len(filenames))
+    linecolor = options.getfieldvalue('explinecolor', ['k'] * len(filenames))
+    fill = options.getfieldvalue('expfill', [0] * len(filenames))
+    alpha = options.getfieldvalue('expfillalpha', [1] * len(filenames))
+    facecolor = options.getfieldvalue('expfillcolor', ['r'] * len(filenames))
+    unitmultiplier = options.getfieldvalue('unit', 1)
+    for i in range(len(filenames)):
+        linestylei = linestyle[i]
+        linecolori = linecolor[i]
+        linewidthi = linewidth[i]
+        alphai = alpha[i]
+        facecolori = facecolor[i]
+        filenamei = filenames[i]
+        filli = fill[i]
+        domain = expread(filenamei)
+        for j in range(len(domain)):
+            if domain[j]['nods'] == 1:
+                ax.plot(domain[j]['x'] * unitmultiplier, domain[j]['y'] * unitmultiplier, 'o', mec='k', mfc='r', ms=10)
+            elif filli:
+                verts = np.column_stack((domain[j]['x'], domain[j]['y']))
+                codes = [Path.MOVETO] + [Path.LINETO] * (len(domain[j]['x']) - 2) + [Path.CLOSEPOLY]
+                path = Path(verts, codes)
+                patch = patches.PathPatch(path, facecolor=facecolori, edgecolor=linecolori, alpha=alphai,
+                                          lw=linewidthi)
+                ax.add_patch(patch)
+            else:
+                x = domain[j]['x'].tolist()  # since expread returns a string representation of the arrays
+                y = domain[j]['y'].tolist()
+                ax.plot(x * unitmultiplier, y * unitmultiplier, ls=linestylei, lw=linewidthi, c=linecolori)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/expexcludeoutliers.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/expexcludeoutliers.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/expexcludeoutliers.m	(revision 27955)
@@ -0,0 +1,18 @@
+function excludeoutliers(newcontourname,contourname,domainname)
+%EXCLUDEOUTLIERS - exclude points of contour that are not within the domain
+%contour. return new contours in a different file.
+%
+%        Usage: excludeoutliers('NewContour.exp','Contour.exp','DomainOutline.exp');
+%
+%
+%   See also EXPMASTER, EXPDOC
+
+contour=expread(contourname);
+
+for i=1:length(contour),
+	flags=ContourToNodes(contour(i).x,contour(i).y,domainname,0);
+	contour(i).x=contour(i).x(find(flags));
+	contour(i).y=contour(i).y(find(flags));
+end
+
+expwrite(contour,newcontourname);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/expflip.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/expflip.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/expflip.m	(revision 27955)
@@ -0,0 +1,15 @@
+function expflip(domainname)
+%EXPFLIP: flip orientation of all contours and domains in domainname exp file.
+%
+%Usage: expflip('MassFlux1.exp');a
+%
+%
+
+a=expread(domainname);
+
+for i=1:length(a),
+	a(i).x=flipud(a(i).x);
+	a(i).y=flipud(a(i).y);
+end
+
+expwrite(a,domainname);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/explink.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/explink.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/explink.m	(revision 27955)
@@ -0,0 +1,28 @@
+function explink(domainoutline,minthreshold,step)
+%EXPLINK - allow to link several segments of domain outline together
+%
+%   Takes a domain outline made of various segments, and links them together in one 
+%   domain outline. Use expview to see end result.
+%
+%   Usage:
+%      explink(domainoutline,minthreshold,step)
+%
+%   See also EXPMASTER, EXPDOC
+
+notdone=1;
+
+while notdone,
+
+	for i=1:1000,
+		status=expconcatenate(domainoutline,minthreshold+(i-1)*step);
+		if status==0,
+			return;
+		end
+		if status==1,
+			break;
+		end
+		if status==-1,
+			continue;
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/expll2xy.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/expll2xy.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/expll2xy.m	(revision 27955)
@@ -0,0 +1,36 @@
+function expll2xy(filename,sgn,central_meridian,standard_parallel)  
+%EXPLL2XY: switch exp argus file from lat,long to x,y
+%   Usage:
+%      expll2xy(filename,sgn,central_meridian,standard_parallel)
+%      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+%                               -1 : south latitude (default is mer=0  lat=71)
+
+%Get central_meridian and standard_parallel depending on hemisphere
+if nargin==4,
+	delta = central_meridian;
+	slat  = standard_parallel;
+elseif nargin==2
+	if sgn == 1,
+		delta = 45; slat = 70;
+		disp('Info: creating coordinates in polar stereographic (Std Latitude: 70ºN Meridian: 45º)');
+	elseif sgn==-1,
+		delta = 0;  slat = 71;
+		disp('Info: creating coordinates in polar stereographic (Std Latitude: 71ºS Meridian: 0º)');
+	else
+		error('Sign should be either +1 or -1');
+	end
+else
+	help expll2xy
+	error('bad usage');
+end
+
+%read filename: 
+domain=expread(filename);
+
+%change to x,y: 
+for i=1:length(domain),
+	[domain(i).x domain(i).y]= ll2xy(domain(i).y,domain(i).x,sgn,delta,slat);
+end
+
+%write back to filename: 
+expwrite(domain,filename);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/expread.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/expread.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/expread.js	(revision 27955)
@@ -0,0 +1,181 @@
+/*
+	DIRECTIVES
+*/
+
+/* globals jQuery */
+
+// Execute script in strict mode
+'use strict';
+
+/******************************************************************************/
+
+/**
+ * expread - Read a string containing the contents of an .exp file and return an object
+ *
+ *	This function takes as input a string containing the contents of an .exp file read in with FileReader.readAsText(),
+ *	and an instance of class Callout, which is used for error reporting to the user.
+ *
+ *	The function builds and outputs an array of objects, each containing,
+ *		the file name,
+ *		the number of nodes,
+ *		the density, 
+ *		and a boolean representing whether or not the domain is closed
+ *	for each of the profiles represented in the input file.
+ *
+ *	Usage:
+ *		let contours = expread(file, callout)
+ *
+ *	Example (assumes HTML5, jQuery, and class vesl.Callout):
+ *      HTML:
+ *			<div id="loadDomainCalloutId" class="callout">
+ *				<h4 class="callout-header"></h4>
+ *				<div class="callout-content"></div>
+ * 			</div>
+ *	
+ *			<input id="fileInput" type="file">
+ *		
+ *		Javascript:
+ *			let loadDomainCallout = new vesl.Callout('loadDomainCalloutId');
+ *
+ *			$('#fileInput').change(function(event) {
+ *  			let contours 	= {};
+ *	 			let file 		= event.target.files[0];
+ *				let fileReader 	= new FileReader();
+ *							
+ *				fileReader.onload = function(event) {
+ *					contours = expread(event.target.result, loadDomainCallout);
+ *                  // Now if contours is not empty or undefined, do something with it
+ *				};
+ *						
+ *				fileReader.readAsText(file);
+ *			});
+ *
+ *	See also /js/Callout.js
+ */
+function expread(file, callout) {//{{{
+	return new Promise(function(resolve, reject) {
+		/*
+			Constants
+		*/
+		//{{{
+		let CALLOUT_ERROR_HEADER = 'Oh no!';
+		//}}}
+		
+		
+		/*
+			Variables
+		*/
+		//{{{
+		let contour 	= {};
+		let contours 	= [];
+		let count 		= 0;
+		let lineTokens 	= [];
+		let lines 		= [];
+		let linesIndex	= 0;
+		//}}}
+		
+		
+		// Split file contents on either Linux or Windows line breaks
+		lines = file.split(/[\r\n]+/g);
+		
+		// Loop over the number of profiles
+		while (lines[linesIndex + 1] !== undefined) { // May need to convert this comparison if parsing of EOF as undefined changes in the future
+			// Update number of profiles
+			contour 			= {};
+			contours[count++] 	= contour; 
+			
+			/*
+				Get file name
+			*/
+			//{{{
+			lineTokens = lines[linesIndex++].split(/[\s\t]+/);
+			
+			if (!(lineTokens.length === 2 && lineTokens[0] === '##' && lineTokens[1].slice(0, 5) === 'Name:')) {
+				callout.set(CALLOUT_ERROR_HEADER, 'File name line of profile ' + count + ' is not in a valid format.');
+				callout.show();
+				reject('File name line of profile ' + count + ' is not in a valid format.');
+			}
+			
+			if (lineTokens[1].length > 5) {
+				contour['name'] = lineTokens[1].slice(5);
+			} else {
+				contour['name'] = '';
+			}
+			//}}}
+			
+			
+			/*
+				Get icon
+			*/
+			//{{{
+			lineTokens = lines[linesIndex++].split(/[\s\t]+/);
+			
+			if (!(lineTokens.length === 2 && lineTokens[0] === '##' && lineTokens[1].slice(0, 5) === 'Icon:')) {
+				callout.set(CALLOUT_ERROR_HEADER, 'Icon line of profile ' + count + ' is not in a valid format.');
+				callout.show();
+				reject('Icon line of profile ' + count + ' is not in a valid format.');
+			}
+			//}}}
+			
+			
+			/*
+				Get info
+			*/
+			//{{{
+			lineTokens = lines[linesIndex++].split(/[\s\t]+/);
+			
+			if (!(lineTokens.length === 4 && lineTokens[0] === '#' && lineTokens[1] === 'Points')) {
+				callout.set(CALLOUT_ERROR_HEADER, 'First info line of profile ' + count + ' is not in a valid format.');
+				callout.show();
+				reject('First info line of profile ' + count + ' is not in a valid format.');
+			}
+			//}}}
+	
+			
+			// Get number of nodes and density
+			//{{{
+			lineTokens = lines[linesIndex++].split(/[\s\t]+/);
+			
+			contour['nods'] 	= parseInt(lineTokens[0]);
+			contour['density'] 	= parseInt(lineTokens[1]);
+			//}}}
+			
+			
+			// Get info
+			//{{{
+			lineTokens = lines[linesIndex++].split(/[\s\t]+/);
+			
+			if (!(lineTokens.join('') === '#XposYpos')) {
+				callout.set(CALLOUT_ERROR_HEADER, 'Second info line of profile ' + count + ' is not in a valid format.');
+				callout.show();
+				reject('Second info line of profile ' + count + ' is not in a valid format.');
+			}
+			//}}}
+			
+			
+			// Get coordinates
+			//{{{
+			contour['x'] = [];
+			contour['y'] = [];
+			
+			for (let i = 0; i < contour['nods']; ++i) {
+				lineTokens = lines[linesIndex++].split(/[\s\t]+/); // Note that after last iteration of this loop, lines[linesIndex] points to blank line following the most recently parsed profile		
+				contour['x'][i] = parseFloat(lineTokens[0]);
+				contour['y'][i]	= parseFloat(lineTokens[1]);
+			}
+			//}}}
+			
+			
+			// Check if closed
+			if (contour['nods'] > 1 &&
+				contour['x'][-1] === contour['x'][0] &&
+				contour['y'][-1] === contour['y'][0]) {
+				contour['closed'] = true;	
+			} else {
+				contour['closed'] = false;
+			}
+		}
+		
+		resolve(contour);
+	});
+}//}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/expread.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/expread.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/expread.m	(revision 27955)
@@ -0,0 +1,97 @@
+function Struct=expread(filename,varargin)
+%EXPREAD - read a file exp and build a Structure
+%
+%   This routine reads a file .exp and build a Structure containing the 
+%   fields x and y corresponding to the coordinates, one for the filename of
+%   the exp file, for the density, for the nodes, and a field closed to 
+%   indicate if the domain is closed. 
+%   The first argument is the .exp file to be read and the second one (optional) 
+%   indicate if the last point shall be read (1 to read it, 0 not to).
+%
+%   Usage:
+%      Struct=expread(filename)
+%
+%   Example:
+%      Struct=expread('domainoutline.exp')
+%      Struct=expread('domainoutline.exp')
+%
+%   See also EXPDOC, EXPWRITEASVERTICES
+
+%recover options
+options=pairoptions(varargin{:});
+
+%some checks
+if ~exist(filename),
+	error(['expread error message: file ' filename ' not found!']);
+end
+
+%initialize number of profile
+count=0;
+Struct = struct();
+
+%open file
+fid=fopen(filename,'r');
+
+%loop over the number of profiles
+while (~feof(fid)),
+
+	%update number of profiles
+	count=count+1;
+
+	%Get file name
+	A=fscanf(fid,'%s %s',2);
+	if ~strncmp(A,'##Name:',7), break; end
+	if length(A)>7, 
+		Struct(count).name=A(8:end);
+	else
+		Struct(count).name='';
+	end
+
+	%Get Icon
+	A=fscanf(fid,'%s %s',2);
+	if ~strncmp(A,'##Icon:',7), break; end
+
+	%Get Info
+	A=fscanf(fid,'%s %s %s %s',4);
+	if ~strncmp(A,'#Points',7), break; end
+
+	%Get number of nodes and density
+	A=fscanf(fid,'%f %f',[1 2]);
+	Struct(count).nods=A(1);
+	Struct(count).density=A(2);
+
+	%Get Info
+	A=fscanf(fid,'%s %s %s %s',5);
+	if ~strncmp(A,'#XposYpos',9), break; end
+
+	%Get Coordinates
+	A=fscanf(fid,'%f %f',[2 Struct(count).nods]);
+	Struct(count).x=A(1,:)';
+	Struct(count).y=A(2,:)';
+	if any(isnan(A))
+		warning('NaNs found in coordinates, note that some tools like exptool will not work properly with NaNs');
+	end
+
+	if(Struct(count).nods~=length(Struct(count).x))error(['Profile ' num2str(count) ' reports incorrect length']); end;
+
+	%Check if closed
+	if (Struct(count).nods > 1) && ...
+	   (Struct(count).x(end) == Struct(count).x(1)) && ...
+	   (Struct(count).y(end) == Struct(count).y(1))
+		Struct(count).closed=true;
+	else
+		Struct(count).closed=false;
+	end
+end
+
+
+%close file
+fclose(fid);
+	
+invert=getfieldvalue(options,'invert',0);
+if invert,
+	for i=1:length(Struct),
+		Struct(i).x=flipud(Struct(i).x);
+		Struct(i).y=flipud(Struct(i).y);
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/expread.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/expread.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/expread.py	(revision 27955)
@@ -0,0 +1,104 @@
+from collections import OrderedDict
+import os.path
+
+import numpy as np
+
+import MatlabFuncs as m
+
+
+def expread(filename):
+    """EXPREAD - read a exp file and build a list of OrderedDicts
+
+    This routine reads a file .exp and builds a list of OrderedDicts containing 
+    the fields x and y corresponding to the coordinates, one for the filename 
+    of the exp file, for the density, for the nodes, and a field closed to
+    indicate if the domain is closed. The first argument is the .exp file to be 
+    read and the second one (optional) indicate if the last point shall be read 
+    (1 to read it, 0 not to).
+
+    Usage:
+        contours = expread(filename)
+
+    Example:
+        contours = expread('domainoutline.exp')
+        contours = expread('domainoutline.exp')
+
+    See Also:
+    - EXPDOC
+    - EXPWRITEASVERTICES
+
+    TODO:
+    - Convert returned data structure from list of OrderedDict objects to list 
+    of OrderedStruct objects (see also src/m/shp/shpread.py). Also, modify 
+    handling of returned data structure in,
+        - src/m/exp/expcoarsen.py
+        - src/m/exp/expdisp.py
+        - src/m/interp/SectionValues.py
+        - src/m/mesh/bamg.py
+    May also need to modify addressing in corresponding FetchData function, or
+    create new one, in src/wrappers/ContoursToNodes/ContoursToNodes.cpp.
+    """
+
+    #some checks
+    if not os.path.exists(filename):
+        raise OSError("expread error message: file '%s' not found!" % filename)
+
+    #initialize number of profile
+    contours = []
+    #open file
+    fid = open(filename, 'r')
+    #loop over the number of profiles
+    while True:
+        #update number of profiles
+        contour = OrderedDict()
+        #Get file name
+        A = fid.readline()
+        while A == '\n':
+            A = fid.readline()
+        if not A:
+            break
+        A = A.split(None, 1)
+        if not (len(A) == 2 and m.strcmp(A[0], '##') and m.strncmp(A[1], 'Name:', 5)):
+            break
+
+        if len(A[1]) > 5:
+            contour['name'] = A[1][5:-1]
+        else:
+            contour['name'] = ''
+
+        #Get Icon
+        A = fid.readline().split(None, 1)
+        if not (len(A) == 2 and m.strcmp(A[0], '##') and m.strncmp(A[1], 'Icon:', 5)):
+            break
+        #Get Info
+        A = fid.readline().split()
+        if not (len(A) == 4 and m.strcmp(A[0], '#') and m.strcmp(A[1], 'Points')):
+            break
+
+        #Get number of nodes and density
+        A = fid.readline().split()
+        contour['nods'] = int(A[0])
+        contour['density'] = float(A[1])
+
+        #Get Info
+        A = fid.readline().split()
+        if not (len(A) == 5 and m.strcmp(A[0], '#') and m.strcmp(A[1], 'X') and m.strcmp(A[2], 'pos') and m.strcmp(A[3], 'Y') and m.strcmp(A[4], 'pos')):
+            break
+    #Get Coordinates
+        contour['x'] = np.empty(contour['nods'])
+        contour['y'] = np.empty(contour['nods'])
+        for i in range(int(contour['nods'])):
+            A = fid.readline().split()
+            contour['x'][i] = float(A[0])
+            contour['y'][i] = float(A[1])
+
+    #Check if closed
+        if (contour['nods'] > 1) and (contour['x'][-1] == contour['x'][0]) and (contour['y'][-1] == contour['y'][0]):
+            contour['closed'] = True
+        else:
+            contour['closed'] = False
+
+        contours.append(contour)
+    #close file
+    fid.close()
+    return contours
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/expsquare.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/expsquare.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/expsquare.m	(revision 27955)
@@ -0,0 +1,45 @@
+function expsquare(filename)
+%EXPBOX - Create a ARGUS file using to clicks
+%
+%   Two clicks on a plot are used to generate a square box
+%   This box is written in EXP format on filename
+%
+%   Usage:
+%      expbox(filename)
+
+%check
+if exist(filename,'file'),
+	choice=input(['A file ' filename ' already exists, do you want to modify it? (y/n)'],'s');
+	if ~strcmpi(choice,'y'),
+		disp('no modification done ... exiting');
+		return
+	end
+end
+
+%Get points
+disp('Click twice to define a square domain. First click for upper left corner, second for lower right corner');
+[x,y]=ginput(2);
+
+xmiddle=mean(x);
+ymiddle=mean(y);
+
+x1=x(1); y1=y(1);
+x3=x(2); y3=y(2);
+
+Diag=[x1-xmiddle;y1-ymiddle];
+
+Vector=[xmiddle;ymiddle]+[-Diag(2);Diag(1)];
+x2=Vector(1); y2=Vector(2);
+
+Vector=[xmiddle;ymiddle]-[-Diag(2);Diag(1)];
+x4=Vector(1); y4=Vector(2);
+
+%Build Exp structure
+A=struct();
+A.nods=5;
+A.density=1;
+A.x=[x1 x2 x3 x4 x1]';
+A.y=[y1 y2 y3 y4 y1]';
+
+%Write structure
+expwrite(A,filename);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/exptool.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/exptool.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/exptool.m	(revision 27955)
@@ -0,0 +1,372 @@
+function exptool(newfile,varargin)
+%EXPTOOL - allow to create, modify, add, cut, .. segments of domain outline together
+%
+%   this routine is used to create, modify, cut,... an Argus file (.exp)
+%
+%   exptool(newprofile,'optionname',optionvalue)
+%      creation of an argus file newprofile
+%
+%   Available options:
+%      - include: include list of existing ARGUS files
+%      - color: line color (default='r')
+%      - selectioncolor: line color of selected profiles (default='b')
+%      - linestyle (default='-')
+%      - linewidth (default=0.2)
+%      - marker (default='+')
+%      - markersize (default=7)
+%      - markeredgecolor (default='r')
+%      - nofigurecopy (default=0) do not copy current figure, this is needed on some platform to avoid an offset in the figure
+%
+%   Usage:
+%      exptool(newfile,varargin)
+%
+%   Example:
+%      exptool('domain.exp','include',{'domain1.exp' 'domain2.exp'},'color','g','marker','+')
+%
+%   See also EXPDOC
+
+%recover options
+options=pairoptions(varargin{:});
+
+%Some checks
+if ~nargin | nargout
+	error('exptool usage: exptool(newfile,varargin)')
+elseif exist(newfile,'file'),
+	%recursive call to exptool if file already exists
+	if ~exist(options,'include'),
+		exptool(newfile,'include',newfile,varargin{:});
+		return;
+	end
+
+	%check modification
+	choice=input(['A file ' newfile ' already exists, do you want to modify it? (y/n)'],'s');
+	if ~strcmpi(choice,'y'),
+		disp('no modification done ... exiting');
+		return
+	end
+end
+
+%Add default options
+options=addfielddefault(options,'color','r');
+options=addfielddefault(options,'selectioncolor','b');
+options=addfielddefault(options,'LineStyle','-');
+options=addfielddefault(options,'LineWidth',0.2);
+options=addfielddefault(options,'Marker','+');
+options=addfielddefault(options,'MarkerSize',7);
+options=addfielddefault(options,'MarkerEdgeColor','r');
+
+%put all the argus profiles given in input in one structure A
+A=struct([]);
+numprofiles=0;
+numpoints=0;
+closed=[];
+
+%initialize the variables with files provided by 'include' option
+if exist(options,'include'),
+	files=getfieldvalue(options,'include');
+	if ischar(files), files={files}; end
+	for i=1:length(files),
+		filename=files{i};
+		if ~exist(filename,'file'),
+			error(['exptool error message:, ' filename ' does not exist. Exiting...']);
+		else
+			%read file
+			B=expread(filename);
+			%go through all profiles of B
+			for i=1:size(B,2)
+				%plug profile in A
+				if numprofiles
+					A(numprofiles+1)=B(i);
+				else
+					A=B(i);
+				end
+				%update numprofiles and numpoints
+				numpoints=numpoints+length(B(i).x);
+				numprofiles=numprofiles+1;
+				%figure out if the profile is closed or not
+				if (B(i).x(1)==B(i).x(end) & B(i).y(1)==B(i).y(end) & length(B(i).x)>1 )
+					closed(numprofiles)=1;
+				else
+					closed(numprofiles)=0;
+				end
+			end
+		end
+	end
+end
+
+%Get root of newfile
+[path root ext]=fileparts(newfile);
+
+%get current figure
+nofigurecopy=getfieldvalue(options,'nofigurecopy',1);
+if ~nofigurecopy,
+	if ~isempty(get(0,'children')),%if there is already a figure (return the number of opened figures)
+		set(gcf,'Renderer','zbuffer'); %fixes a bug on Mac OS X (not needed in future Matlab version)
+		P=get(gcf,'position');
+		Fp=get(gca,'position');
+		F=getframe(gca);
+		F=F.cdata;
+		%get current axis
+		xlim=get(gca,'Xlim');
+		ylim=get(gca,'Ylim');
+		%recreate x_m and y_m
+		x_m=linspace(xlim(1),xlim(2),size(F,2));
+		y_m=linspace(ylim(2),ylim(1),size(F,1)); %getframe reverse axis...
+		%plot the data in another figure
+		lim = axis();
+		f2 = figure();
+		set(gcf,'position',P); 
+		%set(gca,'position',Fp); 
+		imagesc(x_m,y_m,F); 
+		axis xy equal
+		axis(lim);
+		prevplot=1;
+		prevplot2=1;
+	else
+		figure
+		prevplot=0;
+		prevplot2=0;
+	end
+else
+	g=get(gca,'children');
+	L=length(g);
+	prevplot=L;
+	prevplot2=L;
+end
+
+%plot existing profile if any
+hold on
+disableDefaultInteractivity(gca); %disables the built-in interactions for the specified axes
+
+%Build backup structure for do and redo
+backup=cell(1,3);
+backup{1,1}=A;
+backup{1,2}=numprofiles;
+backup{1,3}=numpoints;
+backup{1,4}=closed;
+
+loop=1;
+counter=1;
+while loop
+
+	%Go through A and rule out the empty profiles
+	list=[];
+	for i=1:size(A,2);
+		if length(A(i).x)==0
+			list(end+1)=i;
+			numprofiles=numprofiles-1;
+		end
+	end
+	A(list)=[];
+	closed(list)=[];
+
+	%Now erase all that have been done and plot the new structure A as it is
+	undoplots(prevplot);
+	if numprofiles
+		if ~nofigurecopy,
+			prevplot2=1;
+		else
+			prevplot2=L;
+		end
+		for i=1:numprofiles
+			if length(A(i).x)==1,
+				plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+					'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker','o');
+			else
+				plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+			end
+			prevplot2=prevplot2+1;
+		end
+	end
+
+	%display menu
+	title('Main Menu','FontSize',14);
+   UIControl_FontSize_bak = get(0, 'DefaultUIControlFontSize');
+   set(0, 'DefaultUIControlFontSize',10);
+   button=menu('exptool menu',...
+      'add a profile (open)',...                %1
+      'add a contour (closed)',...              %2
+      'remove a profile',...                    %3
+      'modify the position of a point',...      %4
+      'add points inside a profile',...         %5
+      'add points at the end of a profile',...  %6
+      'remove points',...                       %7
+      'remove several points',...               %8
+      'cut a segment',...                       %9
+      'cut a large area',...                    %10
+      'merge profiles',...                      %11
+      'close profile',...                       %12
+		'change orientation',...                  %13
+      'undo',...                                %14
+      'redo',...                                %15
+      'quit');                                  %16
+   set(0, 'DefaultUIControlFontSize', UIControl_FontSize_bak);
+
+	%UNDO??
+	if button==14;
+		if counter==1
+			disp('Already at oldest change');
+		else
+			counter=counter-1;
+			A=backup{counter,1};
+			numprofiles=backup{counter,2};
+			numpoints=backup{counter,3};
+			closed=backup{counter,4};
+		end
+	%REDO??
+	elseif button==15
+		if counter==size(backup,1)
+			disp('Already at newest change');
+		else
+			counter=counter+1;
+			A=backup{counter,1};
+			numprofiles=backup{counter,2};
+			numpoints=backup{counter,3};
+			closed=backup{counter,4};
+		end
+	end
+
+	switch button
+
+		case 1
+
+			[A,numprofiles,numpoints,closed]=addprofile(A,numprofiles,numpoints,closed,prevplot2,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 2
+
+			[A,numprofiles,numpoints,closed]=addcontour(A,numprofiles,numpoints,closed,prevplot2,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 3
+
+			[A,numprofiles,numpoints,closed]=removeprofile(A,numprofiles,numpoints,closed,prevplot2,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 4
+
+			[A,numprofiles,numpoints,closed]=modifyposition(A,numprofiles,numpoints,closed,prevplot,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 5
+
+			[A,numprofiles,numpoints,closed]=addinsideprofile(A,numprofiles,numpoints,closed,prevplot,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 6
+
+			[A,numprofiles,numpoints,closed]=addendprofile(A,numprofiles,numpoints,closed,prevplot2,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 7
+
+			[A,numprofiles,numpoints,closed]=removepoints(A,numprofiles,numpoints,closed,prevplot,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 8
+
+			[A,numprofiles,numpoints,closed]=removeseveralpoints(A,numprofiles,numpoints,closed,prevplot,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 9
+
+			[A,numprofiles,numpoints,closed]=cutprofile(A,numprofiles,numpoints,closed,prevplot,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 10
+
+			[A,numprofiles,numpoints,closed]=cutarea(A,numprofiles,numpoints,closed,prevplot,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 11
+
+			[A,numprofiles,numpoints,closed]=mergeprofiles(A,numprofiles,numpoints,closed,prevplot,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 12
+
+			[A,numprofiles,numpoints,closed]=closeprofile(A,numprofiles,numpoints,closed,prevplot,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+		case 13
+
+			[A,numprofiles,numpoints,closed]=orientprofile(A,numprofiles,numpoints,closed,prevplot,root,options);
+			counter=counter+1;
+			backup{counter,1}=A;
+			backup{counter,2}=numprofiles;
+			backup{counter,3}=numpoints;
+			backup{counter,4}=closed;
+
+			%QUIT
+		case 16
+
+			loop=0;
+
+		otherwise
+			%do nothing
+	end
+
+end
+
+hold off
+
+%write contour using expwrite
+title('New file written, exiting...','FontSize',14);
+if isempty(A)
+	disp('Profile empty, no file written')
+else
+	expwrite(A,newfile);
+end
+
+%close window
+if ~nofigurecopy,
+	close;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/expwrite.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/expwrite.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/expwrite.m	(revision 27955)
@@ -0,0 +1,65 @@
+function expwrite(a,filename)
+%EXPWRITE - write an Argus file from a structure given in input
+%
+%   This routine write an Argus file form a structure containing the fields:
+%   x and y of the coordinates of the points.
+%   The first argument is the structure containing the points coordinates 
+%   and the second one the file to be write.
+%
+%   Usage:
+%      expwrite(a,filename)
+% 
+%   Example:
+%      expwrite(coordstruct,'domainoutline.exp')
+%
+%   See also EXPDOC, EXPREAD, EXPWRITEASVERTICES
+
+%check input variable
+if ~isstruct(a),
+	error('first argument is not a structure');
+end
+
+%Add density if it's not there
+if ~isfield(a,'density'),
+	for n=1:length(a),
+		a(n).density=1;
+	end
+end
+
+fid=fopen(filename,'w');
+if fid==-1,
+	choice=input(['WARNING: file ' filename ' could not be created, would you like to save your exp as ./temp_expwrite.exp? (y/n)'],'s');
+	if ~strcmpi(choice,'y'),
+		disp('no file written... exiting');
+		return
+	end
+	fid=fopen('./temp_expwrite.exp','w');
+end
+for n=1:length(a),
+	if(length(a(n).x)~=length(a(n).y)),
+		error('contours x and y coordinates must be of identical size');
+	end
+
+	if isfield(a,'name'),
+		fprintf(fid,'%s%s\n','## Name:',a(n).name);
+	else
+		fprintf(fid,'%s%s\n','## Name:',filename);
+	end
+
+	fprintf(fid,'%s\n','## Icon:0');
+	fprintf(fid,'%s\n','# Points Count Value');
+	if isfield(a,'density'),
+		if ~isempty(a(n).density),
+			fprintf(fid,'%i %f\n',[length(a(n).x) a(n).density]);
+		else
+			fprintf(fid,'%i %f\n',[length(a(n).x) 1.]);
+		end
+	else
+		fprintf(fid,'%i %f\n',[length(a(n).x) 1.]);
+	end
+	fprintf(fid,'%s\n','# X pos Y pos');
+	fprintf(fid,'%10.10f %10.10f\n',[a(n).x(:) a(n).y(:)]');
+	fprintf(fid,'\n');
+
+end
+fclose(fid);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/expwrite.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/expwrite.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/expwrite.py	(revision 27955)
@@ -0,0 +1,83 @@
+import numpy as np
+
+
+def expwrite(contours, filename):
+    """EXPWRITE - write an Argus file from a dictionary given in input
+
+    This routine writes an Argus file from a dict containing the fields:
+    x and y of the coordinates of the points.
+    The first argument is the list containing the points coordinates and the
+    second one the file to be written.
+
+    Usage:
+        expwrite(contours, filename)
+
+    Example:
+        expwrite(coordstruct, 'domainoutline.exp')
+
+    See also EXPDOC, EXPREAD, EXPWRITEASVERTICES
+    """
+
+    fid = open(filename, 'w')
+    #if it is a list we need to loop on several contours
+    if isinstance(contours, list):
+        for contour in contours:
+            #if it is some kind of array it is a contour and we loop on indexes
+            if isinstance(contour['x'], (list, tuple, np.ndarray)):
+                writegeomlist(contour, fid, filename)
+            #else it is an index and we just write it down
+            else:
+                writegeom(contour, fid, filename)
+    #if it is a dict type it means just one contour
+    else:
+        #if it is some kind of array it is a contour and we loop on indexes
+        if isinstance(contours['x'], (list, tuple, np.ndarray)):
+            writegeomlist(contours, fid, filename)
+        #else it is an index and we just write it down
+        else:
+            writegeom(contours, fid, filename)
+
+    fid.close()
+
+
+def writegeomlist(contour, fid, filename):
+    if len(contour['x']) != len(contour['y']):
+        raise RuntimeError('contours x and y coordinates must be of identical size')
+    if 'name' in contour:
+        fid.write('{}{}\n'.format('## Name:', contour['name']))
+    else:
+        fid.write('{}{}\n'.format('## Name:', filename))
+
+    fid.write('{}\n'.format('## Icon:0'))
+    fid.write('{}\n'.format('# Points Count Value'))
+    if 'density' in contour:
+        if isinstance(contour['density'], int):
+            fid.write('{} {}\n'.format(np.size(contour['x']), contour['density']))
+        else:
+            fid.write('{} {}\n'.format(np.size(contour['x']), 1.))
+    else:
+        fid.write('{} {}\n'.format(np.size(contour['x']), 1.))
+    fid.write('{}\n'.format('# X pos Y pos'))
+    for x, y in zip(contour['x'], contour['y']):
+        fid.write('%10.10f %10.10f\n' % (x, y))
+    fid.write('\n')
+
+
+def writegeom(contour, fid, filename):
+    if 'name' in contour:
+        fid.write('{}{}\n'.format('## Name:', contour['name']))
+    else:
+        fid.write('{}{}\n'.format('## Name:', filename))
+
+    fid.write('{}\n'.format('## Icon:0'))
+    fid.write('{}\n'.format('# Points Count Value'))
+    if 'density' in contour:
+        if isinstance(contour['density'], int):
+            fid.write('{} {}\n'.format(1, contour['density']))
+        else:
+            fid.write('{} {}\n'.format(1, 1.))
+    else:
+        fid.write('{} {}\n'.format(1, 1.))
+    fid.write('{}\n'.format('# X pos Y pos'))
+    fid.write('%10.10f %10.10f\n' % (contour['x'], contour['y']))
+    fid.write('\n')
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/expxy2ll.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/expxy2ll.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/expxy2ll.m	(revision 27955)
@@ -0,0 +1,36 @@
+function expxy2ll(filename,sgn,central_meridian,standard_parallel)  
+%EXPLL2XY: switch exp argus file from lat,long to x,y
+%   Usage:
+%      expxy2ll(filename,sgn,central_meridian,standard_parallel)
+%      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+%                               -1 : south latitude (default is mer=0  lat=71)
+
+%Get central_meridian and standard_parallel depending on hemisphere
+if nargin==4,
+	delta = central_meridian;
+	slat  = standard_parallel;
+elseif nargin==2
+	if sgn == 1,
+		delta = 45; slat = 70;
+		disp('Info: creating coordinates in polar stereographic (Std Latitude: 70ºN Meridian: 45º)');
+	elseif sgn==-1,
+		delta = 0;  slat = 71;
+		disp('Info: creating coordinates in polar stereographic (Std Latitude: 71ºS Meridian: 0º)');
+	else
+		error('Sign should be either +1 or -1');
+	end
+else
+	help expxy2ll
+	error('bad usage');
+end
+
+%read filename: 
+domain=expread(filename);
+
+%change to x,y: 
+for i=1:length(domain),
+	[domain(i).y domain(i).x]= xy2ll(domain(i).x,domain(i).y,sgn,delta,slat); %watch out to swap lat and long
+end
+
+%write back to filename: 
+expwrite(domain,filename);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/flowlines.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/flowlines.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/flowlines.m	(revision 27955)
@@ -0,0 +1,168 @@
+function flowpath=flowlines(index,x,y,u,v,x0,y0,varargin)
+%FLOWLINES - compute flowlines from a given set of seed points
+%
+%   Usage:
+%      flowpath=flowlines(index,x,y,u,v,x0,y0,varargin)
+%
+%   the velocity field is given by the couple (u,v) and the coordinates
+%   of the seed points are (x0,y0). One can use one or several seed 
+%   points
+%
+%   Example:
+%      flowpath=flowlines(md.mesh.elements,md.mesh.x,md.mesh.y,md.initialization.vx,md.initialization.vy,x0,y0)
+%
+%   Options:
+%      - 'maxiter':   how many steps upstream and downstream of the seed points (default: 200)
+%      - 'precision': division of each segment (higer precision increases number of segments, default: 1)
+%      - 'downstream':flow line upstream of the seed points (default: 1)
+%      - 'upstream':  flow line upstream of the seed points (default: 1)
+
+%check input
+if (length(x)~=length(y) | length(x)~=length(u) | length(x)~=length(v)),
+	error('flowlines error message: x,y,u and v must have the same length');
+end
+if length(x)<3,
+	error('flowlines error message: at least one element is required');
+end
+if length(x0)~=length(y0),
+	error('flowlines error message: x0 and y0 do not have the same length');
+end
+
+%process options
+options    = pairoptions(varargin{:});
+maxiter    = getfieldvalue(options,'maxiter',200);
+precision  = getfieldvalue(options,'precision',1);
+downstream = getfieldvalue(options,'downstream',1);
+upstream   = getfieldvalue(options,'upstream',1);
+
+%Create triangulation once for all and check seed points
+trep = triangulation(index,x,y);
+tria = pointLocation(trep,[x0 y0]);
+pos=find(isnan(tria));
+x0(pos)=[];
+y0(pos)=[];
+
+%initialize other variables
+N=length(x0);
+X=x0; Y=y0;
+flowpath=struct('x',cell(N,1),'y',cell(N,1),'name','','density',1);
+for i=1:N,
+	flowpath(i).x=x0(i);
+	flowpath(i).y=y0(i);
+end
+done=zeros(N,1);
+
+%get avegared length of each element
+length_tria=1/3*(sqrt( (x(index(:,1))-x(index(:,2))).^2+(y(index(:,1))-y(index(:,2))).^2 )+...
+	sqrt((x(index(:,1))-x(index(:,3))).^2+(y(index(:,1))-y(index(:,3))).^2 )+...
+	sqrt((x(index(:,2))-x(index(:,3))).^2+(y(index(:,2))-y(index(:,3))).^2 ));
+
+%take velocity for each element
+u=u(index)*[1;1;1]/3;
+v=v(index)*[1;1;1]/3;
+
+if downstream,
+	%initialization:
+	counter=1;
+
+	while any(~done) 
+
+		%find current triangle
+		queue=find(~done);
+		tria = pointLocation(trep,[X(queue),Y(queue)]);
+
+		%check that the point is actually inside a triangle of the mesh
+		listnan=find(isnan(tria));
+		for i=1:length(listnan)
+			%remove the last point
+			flowpath(queue(listnan(i))).x(end)=[];
+			flowpath(queue(listnan(i))).y(end)=[];
+			done(queue(listnan(i)))=1;
+		end
+		tria(listnan)=[]; 
+		queue(listnan)=[];
+
+		if isempty(tria),
+			break;
+		end
+
+		%velocity of the current triangle and norm it
+		ut=u(tria); vt=v(tria); normv=max(eps,sqrt(ut.^2+vt.^2));
+		ut=ut./normv;vt=vt./normv;
+
+		%check counter
+		if counter>maxiter
+			disp(['Maximum number of iterations (' num2str(maxiter) ') reached while going forward'])
+			break
+		end
+		counter=counter+1;
+
+		%remove stagnant point
+		done(queue(find(ut==0 & vt==0)))=1;
+
+		%build next point
+		for i=1:length(queue)
+			X(queue(i))=flowpath(queue(i)).x(end)+ut(i)*length_tria(tria(i))/precision;
+			Y(queue(i))=flowpath(queue(i)).y(end)+vt(i)*length_tria(tria(i))/precision;
+			flowpath(queue(i)).x=[flowpath(queue(i)).x;flowpath(queue(i)).x(end)+ut(i)*length_tria(tria(i))/precision];
+			flowpath(queue(i)).y=[flowpath(queue(i)).y;flowpath(queue(i)).y(end)+vt(i)*length_tria(tria(i))/precision];
+		end
+	end
+end
+
+%same process but reverse (vel=-vel) to have a vcomplete flow line
+if upstream,
+	queue=[];
+	counter=1;
+	X=x0; Y=y0;
+	done=zeros(N,1);
+
+	while any(~done) 
+
+		%find current triangle
+		queue=find(~done);
+		tria = pointLocation(trep,[X(queue),Y(queue)]);
+
+		%check that the point is actually inside a triangle of the mesh
+		listnan=find(isnan(tria));
+		for i=1:length(listnan)
+			%remove the last point
+			flowpath(queue(listnan(i))).x(1)=[];
+			flowpath(queue(listnan(i))).y(1)=[];
+			done(queue(listnan(i)))=1;
+		end
+		tria(listnan)=[]; 
+		queue(listnan)=[];
+
+		if isempty(tria),
+			break;
+		end
+
+		%velocity of the current triangle and norm it
+		ut=-u(tria); vt=-v(tria); normv=max(eps,sqrt(ut.^2+vt.^2));
+		ut=ut./normv;vt=vt./normv;
+
+		%check counter
+		if counter>maxiter
+			disp(['Maximum number of iterations (' num2str(maxiter) ') reached while going backward'])
+			break
+		end
+		counter=counter+1;
+
+		%remove stagnant point
+		done(queue(find(ut==0 & vt==0)))=1;
+
+		%build next point
+		for i=1:length(queue)
+			X(queue(i))=flowpath(queue(i)).x(1)+ut(i)*length_tria(tria(i))/precision;
+			Y(queue(i))=flowpath(queue(i)).y(1)+vt(i)*length_tria(tria(i))/precision;
+			flowpath(queue(i)).x=[flowpath(queue(i)).x(1)+ut(i)*length_tria(tria(i))/precision; flowpath(queue(i)).x];
+			flowpath(queue(i)).y=[flowpath(queue(i)).y(1)+vt(i)*length_tria(tria(i))/precision; flowpath(queue(i)).y];
+		end
+	end
+end
+
+%EXP compatibility (add name)
+for i=1:length(queue)
+	flowpath(queue(i)).name=['flowline' num2str(i)];
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/flowlines.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/flowlines.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/flowlines.py	(revision 27955)
@@ -0,0 +1,148 @@
+import numpy as np
+from pairoptions import pairoptions
+try:
+    import matplotlib.tri as tri
+except ImportError:
+    print("could not import matplotlib which is needed for triangulation")
+
+
+def flowlines(index, x, y, u, v, x0, y0, *args):
+    #FLOWLINES - compute flowlines from a given set of seed points
+    #
+    #   Usage:
+    #      flowpath = flowlines(index, x, y, u, v, x0, y0, varargin)
+    #
+    #   the velocity field is given by the couple (u, v) and the coordinates
+    #   of the seed points are (x0, y0). One can use one or several seed
+    #   points
+    #
+    #   Example:
+    #      flowpath = flowlines(md.mesh.elements, md.mesh.x, md.mesh.y, md.initialization.vx, md.initialization.vy, x0, y0)
+    #
+    #   Options:
+    # - 'maxiter':   how many steps upstream and downstream of the seed points (default: 200)
+    # - 'precision': division of each segment (higer precision increases number of segments, default: 1)
+    # - 'downstream':flow line upstream of the seed points (default: 1)
+    # - 'upstream':  flow line upstream of the seed points (default: 1)
+
+    #check input
+    if (not len(x) == len(y) == len(u) == len(v)):
+        raise IOError('flowlines error message: x, y, u and v must have the same length')
+
+    if len(x) < 3:
+        raise IOError('flowlines error message: at least one element is required')
+
+    if len(x0) != len(y0):
+        raise IOError('flowlines error message: x0 and y0 do not have the same length')
+
+    #check if we have matlab indexing and translate
+    if np.nanmin(index) > 0:
+        index -= 1
+
+    #process options
+    options = pairoptions(*args)
+    maxiter = options.getfieldvalue('maxiter', 200)
+    precision = options.getfieldvalue('precision', 1)
+
+    #Squeeze the result to fix shape issues
+    u = np.squeeze(u)
+    v = np.squeeze(v)
+
+    #Create triangulation once for all and check seed points
+    trep = tri.Triangulation(x, y, index)
+    trifinder = trep.get_trifinder()
+    tria = trifinder(x0, y0)
+    pos = np.where(tria < 0)[0]
+    if len(pos) > 0:
+        x0 = np.delete(x0, pos)
+        y0 = np.delete(y0, pos)
+
+    #initialize other variables
+    N = len(x0)
+    flowpath = {}
+    flowpath['x'] = list.copy(x0)
+    flowpath['y'] = list.copy(y0)
+    flowpath['name'] = 'flowline{}'.format(0)
+    for i in np.arange(1, len(flowpath['x'])):
+        flowpath['name'] = np.append(flowpath['name'], 'flowline{}'.format(i))
+
+    #get avegared length of each element
+    dist0_1 = np.sqrt((x[index[:, 0]] - x[index[:, 1]])**2 + (y[index[:, 0]] - y[index[:, 1]])**2)
+    dist0_2 = np.sqrt((x[index[:, 0]] - x[index[:, 2]])**2 + (y[index[:, 0]] - y[index[:, 2]])**2)
+    dist1_2 = np.sqrt((x[index[:, 1]] - x[index[:, 2]])**2 + (y[index[:, 1]] - y[index[:, 2]])**2)
+    length_tria = 1 / 3 * (dist0_1 + dist0_2 + dist1_2)
+
+    #take velocity for each element
+    u = np.nanmean(u[index], axis=1)
+    v = np.nanmean(v[index], axis=1)
+
+    for flowdirection in ['downstream', 'upstream']:
+        print('Dealing with the {} flowlines'.format(flowdirection))
+    #initialization:
+        counter = 1
+        treatdirection = options.getfieldvalue(flowdirection, 1)
+        done = np.zeros(N)
+        queue = []
+        X = np.array(x0)
+        Y = np.array(y0)
+
+        if treatdirection:
+            if flowdirection == 'upstream':
+                flowindex = 0
+            elif flowdirection == 'downstream':
+                flowindex = -1
+
+            while not all(done):
+                #find current triangle
+                queue = np.where(done == 0)[0]
+                tria = trifinder(X[queue], Y[queue])
+                #check that the point are actually inside a triangle of the mesh
+                outsiders = np.where(tria < 0)[0]
+                print('outsider is {} with queue {}'.format(outsiders, queue))
+                if np.size(outsiders) > 0:
+                    for outsider in outsiders:
+                        flowpath['x'][queue[outsider]] = np.delete(flowpath['x'][queue[outsider]][:], flowindex)
+                        flowpath['y'][queue[outsider]] = np.delete(flowpath['y'][queue[outsider]][:], flowindex)
+
+                    done[queue[outsiders]] = 1
+
+                    tria = np.delete(tria, outsiders)
+                    queue = np.delete(queue, outsiders)
+
+                #velocity of the current triangle and norm it
+                if flowdirection == 'upstream':
+                    ut = -u[tria]
+                    vt = -v[tria]
+                if flowdirection == 'downstream':
+                    ut = u[tria]
+                    vt = v[tria]
+                normv = np.sqrt(ut**2 + vt**2)
+                normv[np.where(normv < 1.0e-10)] = 1.0e-10
+                ut = ut / normv
+                vt = vt / normv
+
+                if counter > maxiter:
+                    print('Maximum number of iterations ({}) reached while going {}'.format(maxiter, flowdirection))
+                    break
+
+                counter += 1
+
+                #remove stagnant point
+                stagnants = np.where(np.logical_and(ut == 0, vt == 0))
+                done[queue[stagnants]] = 1
+                #build next point
+                for i in np.arange(0, len(queue)):
+                    if np.size(flowpath['x'][queue[i]]) == 1:
+                        X[queue[i]] = flowpath['x'][queue[i]] + ut[i] * length_tria[tria[i]] / precision
+                        Y[queue[i]] = flowpath['y'][queue[i]] + vt[i] * length_tria[tria[i]] / precision
+                    else:
+                        X[queue[i]] = flowpath['x'][queue[i]][flowindex] + ut[i] * length_tria[tria[i]] / precision
+                        Y[queue[i]] = flowpath['y'][queue[i]][flowindex] + vt[i] * length_tria[tria[i]] / precision
+                    if flowdirection == 'upstream':
+                        flowpath['x'][queue[i]] = np.append(X[queue[i]], flowpath['x'][queue[i]])
+                        flowpath['y'][queue[i]] = np.append(Y[queue[i]], flowpath['y'][queue[i]])
+                    elif flowdirection == 'downstream':
+                        flowpath['x'][queue[i]] = np.append(flowpath['x'][queue[i]], X[queue[i]])
+                        flowpath['y'][queue[i]] = np.append(flowpath['y'][queue[i]], Y[queue[i]])
+
+    return flowpath
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/functionSignatures.json
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/functionSignatures.json	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/functionSignatures.json	(revision 27955)
@@ -0,0 +1,25 @@
+{
+	"expdisp":
+	  {
+		"inputs":
+		  [
+			 {"name":"filename1", "kind":"required",   "type":"filepath=*.exp"},
+			 {"name":"varargin", "kind":"optional", "multiplicity":"append"}
+		]
+	  },
+	"expread":
+	  {
+		"inputs":
+		  [
+			 {"name":"filename1", "kind":"required",   "type":"filepath=*.exp"}
+		]
+	  },
+	"exptool":
+	  {
+		"inputs":
+		  [
+			 {"name":"filename1", "kind":"required",   "type":"filepath=*.exp"},
+			 {"name":"varargin", "kind":"optional", "multiplicity":"append"}
+		]
+	  }
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/isexp.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/isexp.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/isexp.m	(revision 27955)
@@ -0,0 +1,14 @@
+function bool=isexp(filename)
+%ISEXP - is a file an expfile? 
+%
+%   Usage:
+%      isexp(filename);
+%
+%   See also EXPREAD, EXPDOC
+
+[path,name,ext]=fileparts(filename); 
+if strcmpi(ext,'.exp'),
+	bool=1;
+else 
+	bool=0;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/isoline.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/isoline.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/isoline.m	(revision 27955)
@@ -0,0 +1,271 @@
+function contours=isoline(md,field,varargin)
+%ISOLINE - construct isovalue lines based on field provided
+%
+%   Usage:
+%      contours=isoline(md,field,varargin)
+%
+%   Supported options:
+%      'value': isoline value, default is 0
+%      'output': 'struct' exp structure with individual contours (default)
+%                'matrix' contours are concatenated and separated by NaNs
+%                'filename.exp' saved as exp file
+%
+%   Example:
+%      contours=isoline(md, md.results.TransientSolution(end).MaskOceanLevelset,'value',0);
+%      contours=isoline(md, md.results.TransientSolution(end).MaskOceanLevelset,'output','vector');
+%      contours=isoline(md, md.results.TransientSolution(end).MaskIceLevelset,'output','Icefront.exp');
+
+%Process options
+options = pairoptions(varargin{:});
+
+%process data 
+if dimension(md.mesh)==3,
+	% error('contourlevelzero error message: routine not supported for 3d meshes, project on a layer');
+	x = md.mesh.x2d;
+	y = md.mesh.y2d;
+	index=md.mesh.elements2d;
+else
+	x=md.mesh.x;
+	y=md.mesh.y;
+	index=md.mesh.elements;
+end
+if exist(options,'amr')
+	amr = getfieldvalue(options,'amr');
+	x=amr.MeshX;
+	y=amr.MeshY;
+	index=amr.MeshElements;
+end
+
+%Deal with z coordinate
+if isprop(md.mesh,'z'),
+	z=md.mesh.z;
+else
+	z=zeros(md.mesh.numberofvertices,1);
+end
+
+if isempty(field), error('field provided is empty'); end
+if dimension(md.mesh)==3,
+	if length(field)~=md.mesh.numberofvertices2d
+		error('field provided should be of size md.mesh.numberofvertices2d'); 
+	end
+else
+	if length(field)~=numel(x)
+		error('field provided should be of size md.mesh.numberofvertices'); 
+	end
+end
+
+%What is the value we are trying to track
+level = getfieldvalue(options,'value',0.);
+
+%initialization of some variables
+numberofelements=size(index,1);
+elementslist=1:numberofelements;
+c=[];
+h=[];
+
+%get unique edges in mesh
+%1: list of edges
+edges=[index(:,[1,2]); index(:,[2,3]); index(:,[3,1])];
+%2: find unique edges
+[edges,I,J]=unique(sort(edges,2),'rows');
+%3: unique edge numbers
+vec=J;
+%4: unique edges numbers in each triangle (2 triangles sharing the same edge will have
+%   the same edge number)
+edges_tria=[vec(elementslist), vec(elementslist+numberofelements), vec(elementslist+2*numberofelements)];
+
+%segments [nodes1 nodes2]
+Seg1=index(:,[1 2]);
+Seg2=index(:,[2 3]);
+Seg3=index(:,[3 1]);
+
+%segment numbers [1;4;6;...]
+Seg1_num=edges_tria(:,1);
+Seg2_num=edges_tria(:,2);
+Seg3_num=edges_tria(:,3);
+
+%value of data on each tips of the segments
+Data1=field(Seg1);
+Data2=field(Seg2);
+Data3=field(Seg3);
+
+%get the ranges for each segment
+Range1=sort(Data1,2);
+Range2=sort(Data2,2);
+Range3=sort(Data3,2);
+
+%find the segments that contain this value
+pos1=(Range1(:,1)<level & Range1(:,2)>=level);
+pos2=(Range2(:,1)<level & Range2(:,2)>=level);
+pos3=(Range3(:,1)<level & Range3(:,2)>=level);
+
+%get elements
+poselem12=(pos1 & pos2);
+poselem13=(pos1 & pos3);
+poselem23=(pos2 & pos3);
+poselem=find(poselem12 | poselem13 | poselem23);
+numelems=length(poselem);
+
+%if no element has been flagged, skip to the next level
+if numelems==0,
+	warning('isoline warning message: no elements found with corresponding value');
+	contours=struct([]);
+	return;
+end
+
+%go through the elements and build the coordinates for each segment (1 by element)
+x1=zeros(numelems,1);
+x2=zeros(numelems,1);
+y1=zeros(numelems,1);
+y2=zeros(numelems,1);
+z1=zeros(numelems,1);
+z2=zeros(numelems,1);
+
+edge_l=zeros(numelems,2);
+
+for j=1:numelems,
+
+	weight1=(level-Data1(poselem(j),1))/(Data1(poselem(j),2)-Data1(poselem(j),1));
+	weight2=(level-Data2(poselem(j),1))/(Data2(poselem(j),2)-Data2(poselem(j),1));
+	weight3=(level-Data3(poselem(j),1))/(Data3(poselem(j),2)-Data3(poselem(j),1));
+
+	if poselem12(poselem(j));
+
+		x1(j)=x(Seg1(poselem(j),1))+weight1*(x(Seg1(poselem(j),2))-x(Seg1(poselem(j),1)));
+		x2(j)=x(Seg2(poselem(j),1))+weight2*(x(Seg2(poselem(j),2))-x(Seg2(poselem(j),1)));
+		y1(j)=y(Seg1(poselem(j),1))+weight1*(y(Seg1(poselem(j),2))-y(Seg1(poselem(j),1)));
+		y2(j)=y(Seg2(poselem(j),1))+weight2*(y(Seg2(poselem(j),2))-y(Seg2(poselem(j),1)));
+		z1(j)=z(Seg1(poselem(j),1))+weight1*(z(Seg1(poselem(j),2))-z(Seg1(poselem(j),1)));
+		z2(j)=z(Seg2(poselem(j),1))+weight2*(z(Seg2(poselem(j),2))-z(Seg2(poselem(j),1)));
+
+		edge_l(j,1)=Seg1_num(poselem(j));
+		edge_l(j,2)=Seg2_num(poselem(j));
+
+	elseif poselem13(poselem(j)),
+
+		x1(j)=x(Seg1(poselem(j),1))+weight1*(x(Seg1(poselem(j),2))-x(Seg1(poselem(j),1)));
+		x2(j)=x(Seg3(poselem(j),1))+weight3*(x(Seg3(poselem(j),2))-x(Seg3(poselem(j),1)));
+		y1(j)=y(Seg1(poselem(j),1))+weight1*(y(Seg1(poselem(j),2))-y(Seg1(poselem(j),1)));
+		y2(j)=y(Seg3(poselem(j),1))+weight3*(y(Seg3(poselem(j),2))-y(Seg3(poselem(j),1)));
+		z1(j)=z(Seg1(poselem(j),1))+weight1*(z(Seg1(poselem(j),2))-z(Seg1(poselem(j),1)));
+		z2(j)=z(Seg3(poselem(j),1))+weight3*(z(Seg3(poselem(j),2))-z(Seg3(poselem(j),1)));
+
+		edge_l(j,1)=Seg1_num(poselem(j));
+		edge_l(j,2)=Seg3_num(poselem(j));
+
+	elseif poselem23(poselem(j)),
+
+		x1(j)=x(Seg2(poselem(j),1))+weight2*(x(Seg2(poselem(j),2))-x(Seg2(poselem(j),1)));
+		x2(j)=x(Seg3(poselem(j),1))+weight3*(x(Seg3(poselem(j),2))-x(Seg3(poselem(j),1)));
+		y1(j)=y(Seg2(poselem(j),1))+weight2*(y(Seg2(poselem(j),2))-y(Seg2(poselem(j),1)));
+		y2(j)=y(Seg3(poselem(j),1))+weight3*(y(Seg3(poselem(j),2))-y(Seg3(poselem(j),1)));
+		z1(j)=z(Seg2(poselem(j),1))+weight2*(z(Seg2(poselem(j),2))-z(Seg2(poselem(j),1)));
+		z2(j)=z(Seg3(poselem(j),1))+weight3*(z(Seg3(poselem(j),2))-z(Seg3(poselem(j),1)));
+
+		edge_l(j,1)=Seg2_num(poselem(j));
+		edge_l(j,2)=Seg3_num(poselem(j));
+	else
+		%it shoud not go here
+	end
+end
+
+%now that we have the segments, we must try to connect them...
+
+%loop over the subcontours
+contours=struct([]);
+
+while ~isempty(edge_l),
+
+	%take the right edge of the second segment and connect it to the next segments if any
+	e1=edge_l(1,1);   e2=edge_l(1,2);
+	xc=[x1(1);x2(1)]; yc=[y1(1);y2(1)]; zc=[z1(1);z2(1)];
+
+
+	%erase the lines corresponding to this edge
+	edge_l(1,:)=[];
+	x1(1)=[]; x2(1)=[];
+	y1(1)=[]; y2(1)=[];
+	z1(1)=[]; z2(1)=[];
+
+	[ro1,co1]=find(edge_l==e1);
+
+	while ~isempty(ro1)
+
+		if co1==1,
+			xc=[x2(ro1);xc]; yc=[y2(ro1);yc];zc=[z2(ro1);zc];
+
+			%next edge:
+			e1=edge_l(ro1,2);
+
+		else
+			xc=[x1(ro1);xc]; yc=[y1(ro1);yc];zc=[z1(ro1);zc];
+
+			%next edge:
+			e1=edge_l(ro1,1);
+		end
+
+		%erase the lines of this
+		edge_l(ro1,:)=[];
+		x1(ro1)=[]; x2(ro1)=[];
+		y1(ro1)=[]; y2(ro1)=[];
+		z1(ro1)=[]; z2(ro1)=[];
+
+		%next connection
+		[ro1,co1]=find(edge_l==e1);
+	end
+
+	%same thing the other way (to the right)
+	[ro2,co2]=find(edge_l==e2);
+
+	while ~isempty(ro2)
+
+		if co2==1,
+			xc=[xc;x2(ro2)]; yc=[yc;y2(ro2)];zc=[zc;z2(ro2)];
+
+			%next edge:
+			e2=edge_l(ro2,2);
+		else
+			xc=[xc;x1(ro2)]; yc=[yc;y1(ro2)]; zc=[zc;z1(ro2)];
+
+			%next edge:
+			e2=edge_l(ro2,1);
+		end
+
+		%erase the lines of this
+		edge_l(ro2,:)=[];
+		x1(ro2)=[]; x2(ro2)=[];
+		y1(ro2)=[]; y2(ro2)=[];
+		z1(ro2)=[]; z2(ro2)=[];
+
+		%next connection
+		[ro2,co2]=find(edge_l==e2);
+	end
+
+	%save xc,yc contour: 
+	contours(end+1).x=xc;
+	contours(end).y=yc;
+	contours(end).z=zc;
+	contours(end).name='';
+	contours(end).nods=length(xc);
+	contours(end).density=1;
+	contours(end).closed=0;
+end
+
+%process output
+outputformat = getfieldvalue(options,'output','struct');
+if strcmp(outputformat,'matrix')
+	x = cell2mat(cellfun(@(x) [x;NaN],{contours(:).x},'UniformOutput',0)');
+	y = cell2mat(cellfun(@(x) [x;NaN],{contours(:).y},'UniformOutput',0)');
+
+	contours = [x y];
+elseif strcmp(outputformat(end-3:end),'.exp')
+	disp(['Saving output as ' outputformat]);
+	expwrite(contours,outputformat);
+elseif strcmp(outputformat,'struct')
+	%nothing to do, this is the default
+elseif strcmp(outputformat,'longest')
+	[~, mId] = max([contours.nods]);
+	contours = contours(mId);
+else
+	disp('output format not supported, returning struct');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/masktoexp.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/masktoexp.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/masktoexp.m	(revision 27955)
@@ -0,0 +1,33 @@
+function masktoexp(x,y,mask,threshold,filename)
+%MASKTOEXP - mask to exp file
+%
+%   Usage:
+%      masktoexp(x,y,mask,threshold,filename)
+%
+%   Example:
+%      if A is a matrix of 0 and 1, and we want an exp for
+%      the transition:
+%      masktoexp(x,y,A,0.5,'contour.exp');
+%      To be combined with ExpSimplify
+
+%Create contour for threshold
+c=contourc(double(x),double(y),double(mask),[threshold threshold]);
+done=0; i=1; j=1;
+while (i<length(c))
+	num=c(2,i); i=i+1;
+	s(j).x=c(1,i:(i+num-1));
+	s(j).y=c(2,i:(i+num-1));
+	s(j).v=c(1,i);
+	i=i+num; j=j+1;
+end;
+
+%Create exp structure
+A=struct();
+if(j-1<1), error('no contour found'); end
+for i=1:j-1,
+	A(i).x=s(i).x;
+	A(i).y=s(i).y;
+end;
+
+%write exp
+expwrite(A,filename);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/meshtodomain.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/meshtodomain.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/meshtodomain.m	(revision 27955)
@@ -0,0 +1,39 @@
+function meshtodomain(mh,domainname,varargin)
+%MESHTODOMAIN - recover a domain outline  from a model's mesh's segments
+%
+%   Usage:
+%      meshtodomain(mh,domainname,varargin)
+%
+%   Example:
+%      meshtodomain(md.mesh,'domainoutline.exp','latlong','on');
+%
+%   See also EXPREAD
+
+	%handle options: 
+	options=pairoptions(varargin{:});
+
+	segments=mh.segments; nt=length(segments);
+
+	%build domain contour: 
+	x=[];  y=[]; 
+
+	if strcmpi(getfieldvalue(options,'latlong','off'),'on'),
+		if isnan(mh.lat) | isnan(mh.long), error('meshtodomain error message: requested domain be output in lat,long referential, but mesh does not contain this information!'); end
+		for i=1:nt,
+		   x=[x;mh.long(segments(i,1))];
+		   y=[y;mh.lat(segments(i,1))];
+		end
+	else
+		for i=1:nt,
+		   x=[x;mh.x(segments(i,1))];
+		   y=[y;mh.y(segments(i,1))];
+		end
+	end
+
+	domain.x=x; 
+	domain.y=y; 
+	domain.density=1; 
+	domain.name=domainname;
+
+	expwrite(domain,domainname);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/addcontour.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/addcontour.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/addcontour.m	(revision 27955)
@@ -0,0 +1,50 @@
+function [A,numprofiles,numpoints,closed]=addcontour(A,numprofiles,numpoints,closed,prevplot,root,options)
+%ADDCONTOUR - add a closed contour
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=addcontour(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	title('click to add a point to the new profile, RETURN to exit','FontSize',14)
+	hold on
+
+	loop=1;
+	x=[];
+	y=[];
+
+	while loop
+
+		[xi,yi] = exp_ginput(1,options);
+
+		if ~isempty(xi)
+			x(end+1,1)=xi;
+			y(end+1,1)=yi;
+
+			%plot everything
+			undoplots(prevplot);
+			plot(x,y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+				'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+			plot(x(end),y(end),'MarkerEdgeColor',getfieldvalue(options,'selectioncolor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+
+		else
+
+			%check that the profile is not empty
+			if ~isempty(x)
+				x(end+1)=x(1);
+				y(end+1)=y(1);
+				A(end+1).x=x; 
+				A(end).y=y; 
+				A(end).name=root; 
+				A(end).density=1; 
+				numprofiles=numprofiles+1;
+				numpoints=numpoints+length(x);
+				closed(end+1)=1;
+			end
+
+			%get out
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/addendprofile.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/addendprofile.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/addendprofile.m	(revision 27955)
@@ -0,0 +1,86 @@
+function [A,numprofiles,numpoints,closed]=addendprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+%ADDENDPROFILE - add point at the end of a n existing profile
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=addendprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	%some checks
+	if numprofiles==0
+		disp('no profile present, exiting...')
+		return
+	end	   
+	if ~any(~closed)
+		disp('all profiles are closed')
+		return
+	end	   
+	%select a profile first
+	if numprofiles>1
+		%first step, select a profile
+		isclosed=1;
+		title('click on a profile, RETURN to exit','FontSize',14)
+		while isclosed
+			[xi,yi] = exp_ginput(1,options);
+			if ~isempty(xi)
+				%get the closest point 
+				[profsel indsel]=closestpoint(A,numprofiles,xi,yi);
+				if closed(profsel)
+					disp('selected profile is closed, make another selection')
+				else
+					isclosed=0;
+				end
+
+			else
+				%RETURN -> out
+				return
+			end
+		end
+	else
+		profsel=1;
+	end
+
+	%initialize x and y
+	x=A(profsel).x;
+	y=A(profsel).y;
+
+	%plot the selected profile
+	hold on
+	plot(x,y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+		'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+	plot(x(end),y(end),'MarkerEdgeColor',getfieldvalue(options,'selectioncolor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+
+	loop=1;
+	while loop
+
+		%first step, select a profile
+		title('click to add point to the selected profile, RETURN to exit','FontSize',14)
+		[xi,yi] = exp_ginput(1,options);
+
+		if ~isempty(xi)
+			x(end+1,1)=xi;
+			y(end+1,1)=yi;
+
+			%plot everything
+			undoplots(prevplot);
+			plot(x,y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+				'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+			plot(x(end),y(end),'MarkerEdgeColor',getfieldvalue(options,'selectioncolor'),'MarkerSize',getfieldvalue(options,'MarkerSize')+2,'Marker',getfieldvalue(options,'Marker'));
+
+		else
+
+			%check that the profile is not empty
+			if ~isempty(x)
+				A(profsel).x=x; 
+				A(profsel).y=y; 
+				A(profsel).name=root; 
+				A(profsel).density=1; 
+				numpoints=numpoints+length(x);
+			end
+
+			%get out
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/addinsideprofile.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/addinsideprofile.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/addinsideprofile.m	(revision 27955)
@@ -0,0 +1,79 @@
+function [A,numprofiles,numpoints,closed]=addinsideprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+%ADDINSIDEPROFILE - add apoint inside a profile
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=addinsideprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	%some checks
+	if numprofiles==0
+		disp('no profile present, exiting...')
+		return
+	end	   
+	if numpoints<2
+		disp('at least two points are required, exiting...')
+		return
+	end	   
+	hold on
+
+	%plot squares
+	for i=1:numprofiles
+		plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+			'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+	end
+
+	loop=1;
+	while loop
+
+		%first step, select a segment
+		title('click on a segment, RETURN to exit','FontSize',14)
+		[xi,yi] = exp_ginput(1,options);
+
+		%first click
+		if ~isempty(xi)
+
+			%get the closest segment
+			[profsel indsel]=closestsegment(A,numprofiles,xi,yi);
+
+			%check that at least one segment exists
+			if indsel==0
+				disp('at least two points in one profile are required, exiting...')
+				return
+			end
+
+			%highlight selected segment
+			plot([A(profsel).x(indsel) A(profsel).x(indsel+1)],[A(profsel).y(indsel) A(profsel).y(indsel+1)],...
+				'color',getfieldvalue(options,'selectioncolor'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+				'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+
+			%next click
+			title('click on the new point''s location, RETURN to exit','FontSize',14)
+			[xi,yi,but] = exp_ginput(1,options);
+
+			%second click
+			if ~isempty(xi)
+
+				%add point to A
+				A(profsel).x=[A(profsel).x(1:indsel,1); xi; A(profsel).x(indsel+1:end,1)];
+				A(profsel).y=[A(profsel).y(1:indsel,1); yi; A(profsel).y(indsel+1:end,1)];
+				numpoints=numpoints+1;
+
+				%plot new profile
+				undoplots(prevplot);
+				for i=1:numprofiles
+					plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+						'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+				end
+
+			else
+				%RETURN->exit
+				return
+			end
+		else
+			%RETURN-> exit
+			return
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/addprofile.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/addprofile.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/addprofile.m	(revision 27955)
@@ -0,0 +1,48 @@
+function [A,numprofiles,numpoints,closed]=addprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+%ADDPROFILE - add a profile
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=addprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	title('click to add a point to the new profile, RETURN to exit','FontSize',14)
+	hold on
+
+	loop=1;
+	x=[];
+	y=[];
+
+	while loop
+
+		[xi,yi] = exp_ginput(1,options);
+
+		if ~isempty(xi)
+			x(end+1,1)=xi;
+			y(end+1,1)=yi;
+
+			%plot everything
+			undoplots(prevplot);
+			plot(x,y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+				'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+			plot(x(end),y(end),'MarkerEdgeColor',getfieldvalue(options,'selectioncolor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+
+		else
+
+			%check that the profile is not empty
+			if ~isempty(x)
+				A(end+1).x=x; 
+				A(end).y=y; 
+				A(end).name=root; 
+				A(end).density=1; 
+				numprofiles=numprofiles+1;
+				numpoints=numpoints+length(x);
+				closed(end+1)=0;
+			end
+
+			%get out
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/closeprofile.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/closeprofile.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/closeprofile.m	(revision 27955)
@@ -0,0 +1,68 @@
+function [A,numprofiles,numpoints,closed]=closeprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+%CLOSEPROFILE - close one or several profile
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=closeprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	%some checks
+	if numprofiles==0
+		disp('no profile to be closed')
+		return
+	end
+
+	title('click on the profiles to be closed, RETURN to exit','FontSize',14)
+	hold on
+
+	loop=1;
+	selection=[];
+
+	while loop
+
+		%some checks,
+		if numprofiles==0    
+			disp('no profile present, exiting...')
+			return            
+		end  
+		if ~any(~closed),
+			disp('All the profiles are closed, exiting...')
+			return
+		end
+
+		[xi,yi] = exp_ginput(1,options);
+
+		if ~isempty(xi)
+
+			%get closest profile
+			[profsel indsel]=closestpoint(A,numprofiles,xi,yi);
+
+			if ismember(profsel,selection)
+				%profile was in selection, remove it from the selection
+				selection(find(selection==profsel))=[];
+				%back to regular color
+				plot(A(profsel).x,A(profsel).y,...
+					'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+			elseif closed(profsel),
+				%profile already closed, do nothing
+				disp('selected profile aready closed, make another selection'),
+			else
+				%add the profile to the list to be closed
+				selection(end+1)=profsel;
+				%in selectioncolor
+				plot(A(profsel).x,A(profsel).y,...
+					'color',getfieldvalue(options,'selectioncolor'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+			end
+		else
+			%close the profiles
+			for i=1:length(selection),
+				A(selection(i)).x(end+1)=A(selection(i)).x(1);
+				A(selection(i)).y(end+1)=A(selection(i)).y(1);
+				numpoints=numpoints+1;
+				closed(selection(i))=1;
+			end
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/closestpoint.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/closestpoint.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/closestpoint.m	(revision 27955)
@@ -0,0 +1,21 @@
+function [profsel indsel]=closestpoint(A,numprofiles,xi,yi)
+%CLOSESTPOINT - find the closest point of a profile
+%
+%   This routine find the point of the profile A that is the closest
+%   to (xi,yi) and return the number of the profile and the number of
+%   the point
+%
+%   Usage:
+%     [profsel indsel]=closestpoint(A,numprofiles,xi,yi) 
+
+	%loop over the points of each profile, find the closest to (xi,yi)
+	for i=1:numprofiles,
+		distance=(xi-A(i).x).^2+(yi-A(i).y).^2;
+		[newdistance p]=min(distance);
+		if ((i==1) | (newdistance<olddistance)),
+			indsel=p;
+			profsel=i;
+			olddistance=newdistance;
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/closestsegment.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/closestsegment.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/closestsegment.m	(revision 27955)
@@ -0,0 +1,28 @@
+function [profsel indsel]=closestsegment(A,numprofiles,xi,yi)
+%CLOSESTSEGMENT - find the closest segment of a profile
+%
+%   This routine find the segment of the profile A that is the closest
+%   to (xi,yi) and return the number of the profile and the number of
+%   the first point belonging to this closest segment
+%
+%   Usage:
+%     [profsel indsel]=closestsegment(A,numprofiles,xi,yi) 
+
+	%loop over the middles of each profile, find the closest to (xi,yi)
+	profsel=0;
+	indsel=0;
+	first=1;
+	for i=1:numprofiles,
+		if length(A(i).x)>1
+			middles=[(A(i).x(1:end-1)+A(i).x(2:end))/2 (A(i).y(1:end-1)+A(i).y(2:end))/2];
+			distance=(xi-middles(:,1)).^2+(yi-middles(:,2)).^2;
+			[newdistance p]=min(distance);
+			if (first | (newdistance<olddistance)),
+				first=0;
+				indsel=p;
+				profsel=i;
+				olddistance=newdistance;
+			end
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/cutarea.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/cutarea.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/cutarea.m	(revision 27955)
@@ -0,0 +1,156 @@
+function [A,numprofiles,numpoints,closed]=cutarea(A,numprofiles,numpoints,closed,prevplot,root,options)
+%CUTAREA - cut several point of a profile
+%
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile. The user must click 3 times to select the
+%   area to be removed. Twice to select the tips and one to select
+%   the part of the profile to be removed
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=cutarea(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	hold on
+	loop=1;
+
+	%plot squares
+	for i=1:numprofiles
+		plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+			'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+	end
+
+	points=[];
+
+	%loop (at least 3 clicks needed)
+	while loop
+
+		%some checks
+		if numprofiles==0
+			disp('no profile present, exiting...')
+			return
+		end	   
+		if numpoints<3
+			disp('at least two points are needed, exiting...')
+			return
+		end	   
+
+		%select a point
+		if isempty(points)
+			title('click on the first tip, RETURN to exit','FontSize',14)
+		elseif length(points)==1
+			title('click on the second tip, RETURN to exit','FontSize',14)
+		else
+			title('click in the middle of the area to be cut, RETURN to exit','FontSize',14)
+		end
+
+		[xi,yi] = exp_ginput(1,options);
+
+		if ~isempty(xi)
+			%get the closest point
+			%first time, look at all profiles
+			if isempty(points)
+				[profsel indsel]=closestpoint(A,numprofiles,xi,yi);
+				if ((closed(profsel) & length(A(profsel).x)<4) |  (~closed(profsel) & length(A(profsel).x)<3)),
+					disp('the selected profile has less than 3 points, make another selection');
+				else
+					selection=profsel;
+					points(end+1)=indsel;
+					plot(A(profsel).x,A(profsel).y,...
+						'color',getfieldvalue(options,'selectioncolor'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+					text(A(selection).x(indsel),A(selection).y(indsel),num2str(1),'FontSize',14,'background',[0.7 0.7 0.9]);
+				end
+			else
+				%get the 2d or 3d point for the given contou
+				[profsel indsel]=closestpoint(A(selection),1,xi,yi);
+				if ismember(indsel,points)
+					disp('the selected points must be distinct')
+				else
+					%second click?
+					if length(points)==1,
+						points(end+1)=indsel;
+						text(A(selection).x(indsel),A(selection).y(indsel),num2str(2),'FontSize',14,'background',[0.7 0.7 0.9]);
+					%third click?
+					else
+						p1=points(1); p2=points(2); p3=indsel;
+						x=A(selection).x; y=A(selection).y;
+						if p1<p2
+							if p3>p1 & p3<p2
+								if closed(selection)
+									%open the profile
+									n=length(A(selection).x);
+									A(selection).x=[A(selection).x(p2:end-1,1);A(selection).x(1:p1,1)];
+									A(selection).y=[A(selection).y(p2:end-1,1);A(selection).y(1:p1,1)];
+									numpoints=numpoints-(n-length(A(selection).x));
+									closed(selection)=0;
+								else
+									%cut in 2 profiles
+									A(selection).x=x(1:p1);
+									A(selection).y=y(1:p1);
+									closed(selection)=0;
+									A(end+1).x=x(p2:end);
+									A(end).y=y(p2:end);
+									A(end).density=A(selection).density;
+									A(end).name=A(selection).name;
+									closed(end+1)=0;
+									numprofiles=numprofiles+1;
+									numpoints=numpoints-(p2-p1-1);
+								end
+							else
+								%only point removal
+								n=length(A(selection).x);
+								A(selection).x=x(p1:p2);
+								A(selection).y=y(p1:p2);
+								numpoints=numpoints-(n-length(A(selection).x));
+								closed(selection)=0;
+							end
+						else
+							if p3>p2 & p3<p1
+								if closed(selection)
+									%open the profile
+									n=length(A(selection).x);
+									A(selection).x=[A(selection).x(p1:end-1,1);A(selection).x(1:p2,1)];
+									A(selection).y=[A(selection).y(p1:end-1,1);A(selection).y(1:p2,1)];
+									numpoints=numpoints-(n-length(A(selection).x));
+									closed(selection)=0;
+								else
+									%cut in 2 profiles
+									closed(selection)=0;
+									A(selection).x=x(1:p2);
+									A(selection).y=y(1:p2);
+									A(end+1).x=x(p1:end);
+									A(end).y=y(p1:end);
+									A(end).density=A(selection).density;
+									A(end).name=A(selection).name;
+									closed(end+1)=0;
+									numprofiles=numprofiles+1;
+									numpoints=numpoints-(p1-p2-1);
+								end
+							else
+								%only point removal
+								n=length(A(selection).x);
+								x(1:p2-1)=[];x(p1-p2+2:end)=[];%it should have been x(p2+1:end)
+								y(1:p2-1)=[];y(p1-p2+2:end)=[];
+								A(selection).x=x;
+								A(selection).y=y;
+								numpoints=numpoints-(n-length(A(selection).x));
+								closed(selection)=0;
+							end
+						end
+
+						%plot new profile
+						undoplots(prevplot);
+						for i=1:numprofiles
+							plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+								'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+						end
+						points=[];
+
+					end
+				end
+			end
+		else
+			%RETRUN-> quit
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/cutprofile.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/cutprofile.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/cutprofile.m	(revision 27955)
@@ -0,0 +1,79 @@
+function [A,numprofiles,numpoints,closed]=cutprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+%CUTPROFILE - cut a profile
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=cutprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	%some checks
+	if numprofiles==0
+		disp('no profile present, exiting...')
+		return
+	end	   
+	if numpoints<2
+		disp('at least two points are needed')
+		return
+	end	   
+	hold on
+
+	%plot squares
+	for i=1:numprofiles
+		plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+			'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+	end
+
+	loop=1;
+	while loop
+
+		%select a segment
+		title('click the segment to cut, RETURN to exit','FontSize',14)
+		[xi,yi] = exp_ginput(1,options);
+
+		if ~isempty(xi)
+
+			%get the closest segment
+			[profsel indsel]=closestsegment(A,numprofiles,xi,yi);
+
+			%check that at least one segment exists
+			if indsel==0
+				disp('at least 2 points are required');
+				return,
+			end
+
+			if ((closed(profsel) & length(A(profsel).x)<3) | (~closed(profsel) & length(A(profsel).x)<2))
+				disp('at least 2 points are required, make another selection');
+			else
+				%cut A
+				if closed(profsel)
+					%open the contour
+					A(profsel).x=[A(profsel).x(indsel+1:end-1,1);A(profsel).x(1:indsel,1)];
+					A(profsel).y=[A(profsel).y(indsel+1:end-1,1);A(profsel).y(1:indsel,1)];
+					numpoints=numpoints-1;
+					closed(profsel)=0;
+				else
+					%cut the contour in 2 profiles
+					A(end+1).x=A(profsel).x(indsel+1:end,1);
+					A(end).y=A(profsel).y(indsel+1:end,1);
+					A(end).name=root; 
+					A(end).density=1; 
+					A(profsel).x=A(profsel).x(1:indsel,1);
+					A(profsel).y=A(profsel).y(1:indsel,1);
+					numprofiles=numprofiles+1;
+					closed(end+1)=0;
+				end
+
+				%plot new profile
+				undoplots(prevplot);
+				for i=1:numprofiles
+					plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+						'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+				end
+			end
+		else
+			%RETURN->exit
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/exp_ginput.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/exp_ginput.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/exp_ginput.m	(revision 27955)
@@ -0,0 +1,17 @@
+function [xi yi but] = exp_ginput(numclicks,options);
+%EXP_GINPUT - equivalent to MATLAB's ginput function but with more options
+%
+%   Usage:
+%      [xi yi] = exp_ginput(numclicks,options);
+
+%ginputtype = getfieldvalue(options,'ginputtype','default');
+ginputtype = getfieldvalue(options,'ginputtype','myginput');
+
+switch ginputtype
+	case 'default'
+		[xi yi but] = ginput(numclicks);
+	case 'myginput'
+		[xi yi but] = myginput(numclicks,'arrow');
+	otherwise
+		error('not supported yet');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/mergeprofiles.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/mergeprofiles.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/mergeprofiles.m	(revision 27955)
@@ -0,0 +1,152 @@
+function [A,numprofiles,numpoints,closed]=mergeprofiles(A,numprofiles,numpoints,closed,prevplot,root,options)
+%MERGEPROFILES - merge profiles
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile. The user must select the two tips that
+%   he/she wants to merge
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=mergeprofiles(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+hold on
+loop=1;
+
+%Take all the tips coordinates of open profiles
+counter=1; tips=[];
+for i=1:numprofiles
+	if ~closed(i),
+		%x and y coord, profile number, 1 if beginning, 2 and if end
+		if length(A(i).x)==1,
+			tips(counter,:)=[A(i).x(1)   A(i).y(1)   i  1];
+			counter=counter+1;
+		else
+			tips(counter,:)=[A(i).x(1)   A(i).y(1)   i  1];
+			tips(counter+1,:) = [A(i).x(end) A(i).y(end) i  2];
+			counter=counter+2;
+		end
+	end
+end
+
+if size(tips,1)<2
+	disp('at least one unclosed profile is required')
+	return
+end
+
+%plot the tips only
+plot(tips(:,1),tips(:,2),...
+	'LineStyle','none','MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+firsttip=1;
+
+%loop (at least 2 clicks needed)
+while loop
+
+	%some checks
+	if size(tips,1)<2
+		disp('at least one unclosed profiles are required')
+		return
+	end
+
+	%select a point
+	if firsttip
+		title('click on the first tip, RETURN to exit','FontSize',14)
+	else
+		title('click on the second tip, RETURN to exit','FontSize',14)
+	end
+
+	[xi,yi] = exp_ginput(1,options);
+
+	if ~isempty(xi)
+
+		if firsttip
+			%find the selected tip
+			distance=(xi-tips(:,1)).^2+(yi-tips(:,2)).^2;
+			[dmin tip1]=min(distance);
+			numprofile1=tips(tip1,3);
+			firsttip=0;
+
+			%remove tip1 from tips list
+			newtips=tips;
+			newtips(tip1,:)=[];
+
+			%plot selected tip
+			plot(tips(tip1,1),tips(tip1,2),...
+				'LineStyle','none','MarkerEdgeColor',getfieldvalue(options,'selectioncolor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+			plot(A(numprofile1).x,A(numprofile1).y,...
+				'color',getfieldvalue(options,'selectioncolor'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+
+		%second selection
+		else
+			distance=(xi-newtips(:,1)).^2+(yi-newtips(:,2)).^2;
+			[dmin tip2]=min(distance);
+			numprofile2=newtips(tip2,3);
+
+			if numprofile1==numprofile2
+				%close the profile
+				A(numprofile1).x(end+1)=A(numprofile1).x(1);
+				A(numprofile1).y(end+1)=A(numprofile1).y(1);
+				numpoints=numpoints+1;
+				closed(numprofile1)=1;
+
+			else
+
+				if tips(tip1,4)==1 & newtips(tip2,4)==1,
+					A(numprofile1).x=[flipud(A(numprofile2).x); A(numprofile1).x];
+					A(numprofile1).y=[flipud(A(numprofile2).y); A(numprofile1).y];
+					numprofiles=numprofiles-1;
+
+				elseif tips(tip1,4)==1 & newtips(tip2,4)==2,
+					A(numprofile1).x=[A(numprofile2).x; A(numprofile1).x];
+					A(numprofile1).y=[A(numprofile2).y; A(numprofile1).y];
+					numprofiles=numprofiles-1;
+
+				elseif tips(tip1,4)==2 & newtips(tip2,4)==1,
+					A(numprofile1).x=[A(numprofile1).x; A(numprofile2).x];
+					A(numprofile1).y=[A(numprofile1).y; A(numprofile2).y];
+					numprofiles=numprofiles-1;
+
+				elseif tips(tip1,4)==2 & newtips(tip2,4)==2,
+					A(numprofile1).x=[A(numprofile1).x; flipud(A(numprofile2).x)];
+					A(numprofile1).y=[A(numprofile1).y; flipud(A(numprofile2).y)];
+					numprofiles=numprofiles-1;
+				end
+
+				%delete profile2
+				A(numprofile2)=[];
+				closed(numprofile2)=[];
+
+			end
+
+			%update tips
+			counter=1; tips=[];
+			for i=1:numprofiles
+				if ~closed(i),
+					%x and y coord, profile number, 1 if beginning, 2 and if end
+					if length(A(i).x)==1,
+						tips(counter,:)=[A(i).x(1)   A(i).y(1)   i  1];
+						counter=counter+1;
+					else
+						tips(counter,:)=[A(i).x(1)   A(i).y(1)   i  1];
+						tips(counter+1,:) = [A(i).x(end) A(i).y(end) i  2];
+						counter=counter+2;
+					end
+				end
+			end
+
+			%plot new profile
+			undoplots(prevplot);
+			for i=1:numprofiles
+				plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+			end
+			if ~isempty(tips)
+				plot(tips(:,1),tips(:,2),...
+					'LineStyle','none','MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+			end
+
+			%back to beginning
+			firsttip=1;
+		end
+	else
+		%RETRUN-> quit
+		loop=0;
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/modifyposition.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/modifyposition.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/modifyposition.m	(revision 27955)
@@ -0,0 +1,77 @@
+function [A,numprofiles,numpoints,closed]=modifyposition(A,numprofiles,numpoints,closed,prevplot,root,options)
+%MODIFYPOSITION - modify the prosition of a point of a profile
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=modifyposition(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	%some checks
+	if numprofiles==0
+		disp('no profile present, exiting..')
+		return
+	end
+
+	hold on
+	loop=1;
+
+	%plot squares
+	for i=1:numprofiles
+		plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+			'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+	end
+
+	while loop
+
+		%select a point to be modified 
+		title('click on the point to be modified, RETURN to exit','FontSize',14)
+		[xi,yi] = exp_ginput(1,options);
+
+		if ~isempty(xi)
+
+			%get the closest point
+			[profsel indsel]=closestpoint(A,numprofiles,xi,yi);
+
+			%plot the point in blue
+			plot(A(profsel).x(indsel),A(profsel).y(indsel),...
+				'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+				'MarkerEdgeColor',getfieldvalue(options,'selectioncolor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+
+			%select new location
+			title('click on the new location, RETURN to exit','FontSize',14)
+			[xi,yi] = exp_ginput(1,options);
+
+			if ~isempty(xi)
+
+				%modification of its coordinates
+				A(profsel).x(indsel)=xi;
+				A(profsel).y(indsel)=yi;
+
+				%modify the last point if the profile is closed and indsel=end or 1
+				if closed(profsel)
+					if indsel==1 
+						A(profsel).x(end)=xi;
+						A(profsel).y(end)=yi;
+					elseif indsel==length(A(profsel).x)
+						A(profsel).x(1)=xi;
+						A(profsel).y(1)=yi;
+					end
+				end
+
+				%plot new profile
+				undoplots(prevplot);
+				for i=1:numprofiles
+					plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+						'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+				end
+			else
+				%RETURN-> exit
+				loop=0;
+			end
+		else
+			%RETURN-> exit
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/myginput.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/myginput.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/myginput.m	(revision 27955)
@@ -0,0 +1,223 @@
+function [out1,out2,out3] = myginput(arg1,strpointertype)
+%MYGINPUT Graphical input from mouse with custum cursor pointer.
+%   [X,Y] = MYGINPUT(N) gets N points from the current axes and returns 
+%   the X- and Y-coordinates in length N vectors X and Y.
+%
+%   [X,Y] = MYGINPUT(N, POINTER) also specifies the cursor pointer, e.g.
+%   'crosshair', 'arrow', 'circle' etc. See "Specifying the Figure Pointer"
+%   in Matlab's documentation  to see the list of available pointers.
+%   
+%   MYGINPUT is strictly equivalent to Matlab's original GINPUT, except
+%   that a second argument specifies the cursor pointer instead of the
+%   default 'fullcrosshair' pointer.
+%
+%   Example:
+%     plot(1:2,1:2,'s');
+%     hold on
+%     [x,y] = myginput(1,'crosshair');
+%     plot(x,y,'o');
+%     hold off
+%
+%   MYGINPUT is copied from Matlab's GINPUT rev. 5.32.4.4.
+%
+%   See also GINPUT.
+
+%   F. Moisy, moisy_at_fast.u-psud.fr
+%   Revision: 1.02,  Date: 2006/10/24
+
+% History:
+% 2005/10/31: v1.00, first version, from GINPUT rev. 5.32.4.4.
+% 2005/11/25: v1.01, line 'uisuspend' modified (for compatibility with
+%                    ML7.00)
+% 2006/10/24: v1.02, help text improved
+
+out1 = []; out2 = []; out3 = []; y = [];
+
+if nargin<1     % modified MYGINPUT
+    strpointertype='fullcrosshair'; % default GINPUT pointer
+end
+
+c = computer;
+if ~strcmp(c(1:2),'PC') 
+   tp = get(0,'TerminalProtocol');
+else
+   tp = 'micro';
+end
+
+if ~strcmp(tp,'none') & ~strcmp(tp,'x') & ~strcmp(tp,'micro'),
+   if nargout == 1,
+      if nargin == 1,
+         out1 = trmginput(arg1);
+      else
+         out1 = trmginput;
+      end
+   elseif nargout == 2 | nargout == 0,
+      if nargin == 1,
+         [out1,out2] = trmginput(arg1);
+      else
+         [out1,out2] = trmginput;
+      end
+      if  nargout == 0
+         out1 = [ out1 out2 ];
+      end
+   elseif nargout == 3,
+      if nargin == 1,
+         [out1,out2,out3] = trmginput(arg1);
+      else
+         [out1,out2,out3] = trmginput;
+      end
+   end
+else
+   
+   fig = gcf;
+   figure(gcf);
+   
+   if nargin == 0
+      how_many = -1;
+      b = [];
+   else
+      how_many = arg1;
+      b = [];
+      if  isstr(how_many) ...
+            | size(how_many,1) ~= 1 | size(how_many,2) ~= 1 ...
+            | ~(fix(how_many) == how_many) ...
+            | how_many < 0
+         error('Requires a positive integer.')
+      end
+      if how_many == 0
+         ptr_fig = 0;
+         while(ptr_fig ~= fig)
+            ptr_fig = get(0,'PointerWindow');
+         end
+         scrn_pt = get(0,'PointerLocation');
+         loc = get(fig,'Position');
+         pt = [scrn_pt(1) - loc(1), scrn_pt(2) - loc(2)];
+         out1 = pt(1); y = pt(2);
+      elseif how_many < 0
+         error('Argument must be a positive integer.')
+      end
+   end
+   
+   % Suspend axes functions
+       %haxes = findobj(fig,'type','axes');
+        state = uisuspend(fig);
+   %haxes = findobj(fig,'type','axes');
+   %state = uisuspend(haxes);
+   pointer = get(gcf,'pointer');
+   set(gcf,'pointer',strpointertype);  % modified MYGINPUT
+   fig_units = get(fig,'units');
+   char = 0;
+
+   % We need to pump the event queue on unix
+   % before calling WAITFORBUTTONPRESS 
+   drawnow
+   
+   while how_many ~= 0
+      % Use no-side effect WAITFORBUTTONPRESS
+      waserr = 0;
+      try
+	keydown = wfbp;
+      catch
+	waserr = 1;
+      end
+      if(waserr == 1)
+         if(ishandle(fig))
+            set(fig,'units',fig_units);
+	    uirestore(state);
+            error('Interrupted');
+         else
+            error('Interrupted by figure deletion');
+         end
+      end
+      
+      ptr_fig = get(0,'CurrentFigure');
+      if(ptr_fig == fig)
+         if keydown
+            char = get(fig, 'CurrentCharacter');
+            button = abs(get(fig, 'CurrentCharacter'));
+            scrn_pt = get(0, 'PointerLocation');
+            set(fig,'units','pixels')
+            loc = get(fig, 'Position');
+            pt = [scrn_pt(1) - loc(1), scrn_pt(2) - loc(2)];
+            set(fig,'CurrentPoint',pt);         
+         else
+            button = get(fig, 'SelectionType');
+            if strcmp(button,'open') 
+               button = 1;
+            elseif strcmp(button,'normal') 
+               button = 1;
+            elseif strcmp(button,'extend')
+               button = 2;
+            elseif strcmp(button,'alt') 
+               button = 3;
+            else
+               error('Invalid mouse selection.')
+            end
+         end
+         pt = get(gca, 'CurrentPoint');
+         
+         how_many = how_many - 1;
+         
+         if(char == 13) % & how_many ~= 0)
+            % if the return key was pressed, char will == 13,
+            % and that's our signal to break out of here whether
+            % or not we have collected all the requested data
+            % points.  
+            % If this was an early breakout, don't include
+            % the <Return> key info in the return arrays.
+            % We will no longer count it if it's the last input.
+            break;
+         end
+         
+         out1 = [out1;pt(1,1)];
+         y = [y;pt(1,2)];
+         b = [b;button];
+      end
+   end
+   
+   uirestore(state);
+   set(fig,'units',fig_units);
+   
+   if nargout > 1
+      out2 = y;
+      if nargout > 2
+         out3 = b;
+      end
+   else
+      out1 = [out1 y];
+   end
+   
+end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function key = wfbp
+%WFBP   Replacement for WAITFORBUTTONPRESS that has no side effects.
+
+fig = gcf;
+current_char = [];
+
+% Now wait for that buttonpress, and check for error conditions
+waserr = 0;
+try
+  h=findall(fig,'type','uimenu','accel','C');   % Disabling ^C for edit menu so the only ^C is for
+  set(h,'accel','');                            % interrupting the function.
+  keydown = waitforbuttonpress;
+  current_char = double(get(fig,'CurrentCharacter')); % Capturing the character.
+  if~isempty(current_char) & (keydown == 1)           % If the character was generated by the 
+	  if(current_char == 3)                       % current keypress AND is ^C, set 'waserr'to 1
+		  waserr = 1;                             % so that it errors out. 
+	  end
+  end
+  
+  set(h,'accel','C');                                 % Set back the accelerator for edit menu.
+catch
+  waserr = 1;
+end
+drawnow;
+if(waserr == 1)
+   set(h,'accel','C');                                % Set back the accelerator if it errored out.
+   error('Interrupted');
+end
+
+if nargout>0, key = keydown; end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/orientprofile.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/orientprofile.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/orientprofile.m	(revision 27955)
@@ -0,0 +1,54 @@
+function [A,numprofiles,numpoints,closed]=orientprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+%ORIENTPROFILE - cahnge profile orientation
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=orientprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	title('click on the profiles to be reoriented, RETURN to exit','FontSize',14)
+	hold on
+
+	loop=1;
+	selection=[];
+
+	while loop
+
+		%some checks
+		if numprofiles==0
+			disp('no profile to be reoriented, exiting...')
+			return
+		end
+
+		[xi,yi] = exp_ginput(1,options);
+
+		if ~isempty(xi)
+
+			%get closest profile
+			[profsel indsel]=closestpoint(A,numprofiles,xi,yi);
+
+			if ismember(profsel,selection)
+				%profile was in selection, remove it from list
+				selection(find(selection==profsel))=[];
+				%back to regular color
+				plot(A(profsel).x,A(profsel).y,...
+					'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+			else
+				%add the profile to the list to be removed
+				selection(end+1)=profsel;
+				%in selectioncolor
+				plot(A(profsel).x,A(profsel).y,...
+					'color',getfieldvalue(options,'selectioncolor'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+			end
+		else
+			%reorient profiles
+			selection=sort(selection);
+			for i=1:length(selection),
+				A(selection(i)).x=flipud(A(selection(i)).x);
+				A(selection(i)).y=flipud(A(selection(i)).y);
+			end
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/removepoints.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/removepoints.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/removepoints.m	(revision 27955)
@@ -0,0 +1,85 @@
+function [A,numprofiles,numpoints,closed]=removepoints(A,numprofiles,numpoints,closed,prevplot,root,options)
+%REMOVEPOINTS - remove a point from a profile
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=removepoints(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	%some checks
+	if numprofiles==0
+		disp('no profile present, exiting...')
+		return
+	end
+
+	hold on
+	loop=1;
+
+	%plot squares
+	for i=1:numprofiles
+		plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+			'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+
+	end
+
+	while loop
+
+		%check that at least one point is present
+		if numpoints==0
+			disp('at least one point are needed')
+			return
+		end	   
+
+		%select a point to be deleted
+		title('click on the point to be removed, RETURN to exit','FontSize',14)
+		[xi,yi] = exp_ginput(1,options);
+
+		if ~isempty(xi)
+
+			%get the closest point
+			[profsel indsel]=closestpoint(A,numprofiles,xi,yi);
+
+			%remove point of A
+			A(profsel).x(indsel)=[];
+			A(profsel).y(indsel)=[];
+
+			%unclose the domain if only 2 points remaining
+			if closed(profsel)
+				if length(A(profsel).x)==3
+					A(profsel).x(end)=[];
+					A(profsel).y(end)=[];
+					numpoints=numpoints-1;
+					closed(profsel)=0;
+				end
+			end
+
+			%remove the last point if the profile is closed and indsel=end or 1
+			if closed(profsel)
+				if indsel==1 
+					A(profsel).x(end)=A(profsel).x(1);
+					A(profsel).y(end)=A(profsel).y(1);
+				elseif indsel==length(A(profsel).x)
+					A(profsel).x(1)=A(profsel).x(end);
+					A(profsel).y(1)=A(profsel).y(end);
+				end
+			end
+			numpoints=numpoints-1;
+
+			%plot new profile
+			undoplots(prevplot);
+			for i=1:numprofiles
+				plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+					'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+				if length(A(i).x)==1
+					plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+						'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker','o');
+				end
+			end
+
+		else
+			%RETURN-> exit
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/removeprofile.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/removeprofile.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/removeprofile.m	(revision 27955)
@@ -0,0 +1,56 @@
+function [A,numprofiles,numpoints,closed]=removeprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+%REMOVEPROFILE - delete a profile
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=removeprofile(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	title('click on the profiles to be removed, RETURN to exit','FontSize',14)
+	hold on
+
+	loop=1;
+	selection=[];
+
+	while loop
+
+		%some checks
+		if numprofiles==0
+			disp('no profile to be removed, exiting...')
+			return
+		end
+
+		[xi,yi] = exp_ginput(1,options);
+
+		if ~isempty(xi)
+
+			%get closest profile
+			[profsel indsel]=closestpoint(A,numprofiles,xi,yi);
+
+			if ismember(profsel,selection)
+				%profile was in selection, remove it
+				selection(find(selection==profsel))=[];
+				%back to regular color
+				plot(A(profsel).x,A(profsel).y,...
+					'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+			else
+				%add the profile to the list to be removed
+				selection(end+1)=profsel;
+				%in selectioncolor
+				plot(A(profsel).x,A(profsel).y,...
+					'color',getfieldvalue(options,'selectioncolor'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+			end
+		else
+			%remove the profiles
+			selection=sort(selection);
+			for i=1:length(selection),
+				numprofiles=numprofiles-1;
+				numpoints=numpoints-length(A(selection(i)-(i-1)).x);
+				A(selection(i)-(i-1))=[];
+				closed(selection(i)-(i-1))=[];
+			end
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/removeseveralpoints.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/removeseveralpoints.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/removeseveralpoints.m	(revision 27955)
@@ -0,0 +1,130 @@
+function [A,numprofiles,numpoints,closed]=removeseveralpoints(A,numprofiles,numpoints,closed,prevplot,root,options)
+%REMOVESEVERALPOINTS - remove several point
+%
+%   this script is used by exptool as an elementary operation
+%   on an ARGUS profile
+%
+%   Usage:
+%      [A,numprofiles,numpoints,closed]=removeseveralpoints(A,numprofiles,numpoints,closed,prevplot,root,options)
+
+	%some checks
+	if numprofiles==0
+		disp('no profile present, exiting...')
+		return
+	end	   
+	if numpoints<3
+		disp('at least 3 points are required, exiting...')
+		return
+	end	   
+	hold on
+	loop=1;
+
+	%plot squares
+	for i=1:numprofiles
+		plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+			'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+	end
+
+	points=[];
+
+	%loop (at least 3 clicks needed)
+	while loop
+
+		%some checks
+		if numpoints<3
+			disp('at least 3 points are required, exiting...')
+			return
+		end
+
+		%select a point
+		if isempty(points)
+			title('click on the first tip, RETURN to exit','FontSize',14)
+		elseif length(points)==1
+			title('click on the second tip, RETURN to exit','FontSize',14)
+		else
+			title('click in the middle of the area to be removed, RETURN to exit','FontSize',14)
+		end
+
+		[xi,yi] = exp_ginput(1,options);
+
+		if ~isempty(xi)
+			%get the closest point
+			%first time, look at all profiles
+			if isempty(points)
+				[profsel indsel]=closestpoint(A,numprofiles,xi,yi);
+				if ((closed(profsel) & length(A(profsel).x)<4) |  (~closed(profsel) & length(A(profsel).x)<3)),
+					disp('the selected profile has less than 3 points, make another selection');
+				else
+					selection=profsel;
+					points(end+1)=indsel;
+					plot(A(profsel).x,A(profsel).y,...
+						'color',getfieldvalue(options,'selectioncolor'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'));
+					text(A(selection).x(indsel),A(selection).y(indsel),num2str(1),'FontSize',14,'background',[0.7 0.7 0.9]);
+				end
+				%disp(['p1= ' num2str(indsel)]),
+			else
+				%get the 2d or 3d point for the given contou
+				[profsel indsel]=closestpoint(A(selection),1,xi,yi);
+				if ismember(indsel,points)
+					disp('the selected points must be distinct')
+				else
+					%second click?
+					if length(points)==1,
+						points(end+1)=indsel;
+						text(A(selection).x(indsel),A(selection).y(indsel),num2str(2),'FontSize',14,'background',[0.7 0.7 0.9]);
+						%disp(['p2= ' num2str(indsel)]),
+					%third click?
+					else
+						p1=points(1); p2=points(2); p3=indsel;
+						%disp(['p3= ' num2str(indsel)]),
+						if p1<p2
+							if p3>p1 & p3<p2
+								A(selection).x(p1+1:p2-1)=[];
+								A(selection).y(p1+1:p2-1)=[];
+								numpoints=numpoints-(p2-p1-1);
+							else
+								A(selection).x=A(selection).x(p1:p2);
+								A(selection).y=A(selection).y(p1:p2);
+								numpoints=numpoints-(numpoints-1-p2)-(p1-1);
+								if closed(selection)
+									%reattach the tips
+									A(selection).x(end+1)=A(selection).x(1);
+									A(selection).y(end+1)=A(selection).y(1);
+									numpoints=numpoints+1;
+								end
+							end
+						else
+							if p3>p2 & p3<p1
+								A(selection).x(p2+1:p1-1)=[];
+								A(selection).y(p2+1:p1-1)=[];
+								numpoints=numpoints-(p1-p2-1);
+							else
+								A(selection).x=A(selection).x(p2:p1);
+								A(selection).y=A(selection).y(p2:p1);
+								numpoints=numpoints-(numpoints-1-p1)-(p2-1);
+								if closed(selection)
+									%reattach the tips
+									A(selection).x(end+1)=A(selection).x(1);
+									A(selection).y(end+1)=A(selection).y(1);
+									numpoints=numpoints+1;
+								end
+							end
+						end
+
+						%plot new profiles
+						undoplots(prevplot);
+						for i=1:numprofiles
+							plot(A(i).x,A(i).y,'color',getfieldvalue(options,'color'),'LineStyle',getfieldvalue(options,'LineStyle'),'LineWidth',getfieldvalue(options,'LineWidth'),...
+								'MarkerEdgeColor',getfieldvalue(options,'MarkerEdgeColor'),'MarkerSize',getfieldvalue(options,'MarkerSize'),'Marker',getfieldvalue(options,'Marker'));
+						end
+						points=[];
+
+					end
+				end
+			end
+		else
+			%RETRUN-> quit
+			loop=0;
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/undoplots.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/undoplots.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/operation/undoplots.m	(revision 27955)
@@ -0,0 +1,12 @@
+function  undoplots(prevplot)
+%UNDOPLOTS - undo plots
+%
+%   Usage:undoplots(prevplot)
+
+	%erase all previous plots
+	g=get(gca,'children');
+	L=length(g);
+	for i=1:L-prevplot
+		delete(g(i));
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/exp/segmentstobasin.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/exp/segmentstobasin.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/exp/segmentstobasin.m	(revision 27955)
@@ -0,0 +1,52 @@
+function segmentstobasin(basin,varargin)
+%SEGMENTSTOBASIN - read exp or shp files corresponding to the boundaries of a basin, and assemble 
+%   a basin file accordingly (by concatenating the segments). The segments might not be oriented 
+%   the right way, so the list of exp segment files given goes along booleans that determined whether 
+%   each segment should be inverted or not. 
+%
+%   Usage:
+%      segmentstobasin(basinname,basin1,invert1,basin2,invert2,...)
+%
+%   Example:
+%      segmentstobasin('Antarctica.exp','Antarctica1.exp',0,'Antarctica2.shp',1); %we inverte the segments in Antarctica2.shp
+%
+%   See also EXPREAD
+
+	%some checks
+	if exist(basin),
+		%choice=input(['A file ' basin ' already exists, do you want to modify it? (y/n)'],'s');
+		%if ~strcmpi(choice,'y'),
+		%	disp('no modification done ... exiting');
+		%	return;
+		%end
+	end
+	
+	%go through the list of basins 
+	if mod(length(varargin),2)~=0,
+		error('an even number of arguments should be provided after the basin name');
+	end
+
+	domain.x=[]; domain.y=[]; domain.nods=1;
+	for i=1:nargin/2,
+		expfile=varargin{(i-1)*2+1};
+		invert=varargin{(i-1)*2+2};
+		if isexp(expfile),
+			expstruct=expread(expfile,'invert',invert);
+		else
+			expstruct=shpread(expfile,'invert',invert);
+		end
+		domain.x=[domain.x;expstruct.x];
+		domain.y=[domain.y;expstruct.y];
+		domain.nods=domain.nods+length(expstruct.x);
+	end
+
+	domain.nods=domain.nods+1;
+	domain.x=[domain.x;domain.x(1)];
+	domain.y=[domain.y;domain.y(1)];
+	domain.Geometry='Polygon';
+		
+	if isexp(basin),
+		expwrite(domain,basin);
+	else
+		shpwrite(domain,basin);
+	end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/DepthAverage.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/DepthAverage.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/DepthAverage.js	(revision 27955)
@@ -0,0 +1,52 @@
+function DepthAverage(md,vector) {
+    // DEPTHAVERAGE - computes depth average of 3d vector using the trapezoidal rule, and returns the value on 2d mesh. 
+    // 
+    //    Usage:
+    //       vector_average=DepthAverage(md,vector);
+    // 
+    //    Example:
+    //       vel_bar=DepthAverage(md,md.initialization.vel);
+
+    // check that the model given in input is 3d
+    if (md.mesh.elementtype() !== 'Penta') {
+        console.error('DepthAverage error message: the model given in input must be 3d');
+    }
+
+    // nods data
+    if (vector.length === md.mesh.numberofvertices) {
+        var vector_average=zeros(md.mesh.numberofvertices2d,1);
+
+        for (var i = 1; i < md.mesh.numberoflayers-1; ++i) {
+            vector_average = vector_average.map(function(x) {
+                return x + (project2d(md, vector, i) + project2d(md,vector,i+1))/2;
+            }).map(function(y) {
+                return y * (project2d(md, md.mesh.z, i+1) - project2d(md, md.mesh.z, i));
+            });
+        }
+
+        vector_average = vector_average.map(function(z) {
+            return z / project2d(md, md.geometry.thickness, 1);
+        });
+
+        return vector_average;
+    }
+    // element data
+    else if (vector.length === md.mesh.numberofelements) {
+        var vector_average=zeros(md.mesh.numberofelements2d,1);
+        for (var i = 1; i < md.mesh.numberoflayers-1; ++i) {
+            vector_average = vector_average.map(function(x) {
+                return x + project2d(md, vector, i);
+            }).map(function(y) {
+                return y * (project2d(md, md.mesh.z, i+1) - project2d(md, md.mesh.z, i));
+            });
+        }
+
+        vector_average = vector_average.map(function(z) {
+            return z / project2d(md, md.geometry.thickness, 1);
+        });
+
+        return vector_average;
+    } else {
+        console.error('vector size not supported yet');
+    }
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/DepthAverage.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/DepthAverage.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/DepthAverage.m	(revision 27955)
@@ -0,0 +1,39 @@
+function  vector_average=DepthAverage(md,vector)
+%DEPTHAVERAGE - computes depth average of 3d vector using the trapezoidal rule, and returns the value on 2d mesh. 
+%
+%   Usage:
+%      vector_average=DepthAverage(md,vector);
+%
+%   Example:
+%      vel_bar=DepthAverage(md,md.initialization.vel);
+
+%check that the model given in input is 3d
+if ~strcmp(md.mesh.elementtype(),'Penta');
+	error('DepthAverage error message: the model given in input must be 3d')
+end
+
+%nods data
+if (length(vector)==md.mesh.numberofvertices),
+	vector_average=zeros(md.mesh.numberofvertices2d,1);
+	for i=1:md.mesh.numberoflayers-1,
+		vector_average=vector_average+(project2d(md,vector,i)+project2d(md,vector,i+1))/2.*(project2d(md,md.mesh.z,i+1)-project2d(md,md.mesh.z,i));
+	end
+	vector_average=vector_average./project2d(md,md.geometry.thickness,1);
+
+%element data
+elseif (length(vector)==md.mesh.numberofelements),
+	vector_average=zeros(md.mesh.numberofelements2d,1);
+	for i=1:md.mesh.numberoflayers-1,
+		vertices_dz = (project2d(md,md.mesh.z,i+1)-project2d(md,md.mesh.z,i));
+		elements_dz = mean(vertices_dz(md.mesh.elements2d),2);
+		vector_average = vector_average+project2d(md,vector,i).*elements_dz;
+		%vector_average=vector_average+project2d(md,vector,i).*(project2d(md,md.mesh.z,i+1)-project2d(md,md.mesh.z,i));
+	end
+	vertices_thickness = project2d(md,md.geometry.thickness,1);
+	elements_thickness = mean(vertices_thickness(md.mesh.elements2d),2);
+	vector_average = vector_average./elements_thickness;
+	%vector_average=vector_average./project2d(md,md.geometry.thickness,1);
+
+else
+	error('vector size not supported yet');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/DepthAverage.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/DepthAverage.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/DepthAverage.py	(revision 27955)
@@ -0,0 +1,57 @@
+import numpy as np
+from project2d import project2d
+
+
+def DepthAverage(md, vector):
+    '''
+    computes depth average of 3d vector using the trapezoidal rule, and returns
+    the value on the 2d mesh.
+
+    Usage:
+            vector_average = DepthAverage(md, vector)
+
+    Example:
+            vel_bar = DepthAverage(md, md.initialization.vel)
+    '''
+
+    #check that the model given in input is 3d
+    if md.mesh.elementtype() != 'Penta':
+        raise TypeError('DepthAverage error message: the model given in input must be 3d')
+
+    # coerce to array in case float is passed
+    if type(vector) not in [np.ndarray, np.ma.core.MaskedArray]:
+        print('coercing array')
+        vector = np.array(vector)
+
+    vec2d = False
+    if vector.ndim == 2:
+        vec2d = True
+        vector = vector.reshape(-1, )
+
+    #nods data
+    if vector.shape[0] == md.mesh.numberofvertices:
+        vector_average = np.zeros(md.mesh.numberofvertices2d)
+        for i in range(1, md.mesh.numberoflayers):
+            vector_average = vector_average + (project2d(md, vector, i) + project2d(md, vector, i + 1)) / 2. * (project2d(md, md.mesh.z, i + 1) - project2d(md, md.mesh.z, i))
+        vector_average = vector_average / project2d(md, md.geometry.thickness, 1)
+
+    #element data
+    elif vector.shape[0] == md.mesh.numberofelements:
+        vector_average = np.zeros(md.mesh.numberofelements2d)
+        for i in range(1, md.mesh.numberoflayers):
+            vertices_dz = (project2d(md, md.mesh.z, i + 1) - project2d(md, md.mesh.z, i))
+            elements_dz = vertices_dz.mean(1)
+            vector_average = vector_average + project2d(md, vector, i) * elements_dz
+    #vector_average = vector_average + project2d(md, vector, i) * (project2d(md, md.mesh.z, i + 1) - project2d(md, md.mesh.z, i))
+        vertices_thickness = project2d(md, md.geometry.thickness, 1)
+        elements_thickness = vertices_thickness.mean(1)
+        vector_average = vector_average / elements_thickness
+    #vector_average = vector_average / project2d(md, md.geometry.thickness, 1)
+
+    else:
+        raise ValueError('vector size not supported yet')
+
+    if vec2d:
+        vector_average = vector_average.reshape(-1, )
+
+    return vector_average
Index: /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/project2d.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/project2d.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/project2d.js	(revision 27955)
@@ -0,0 +1,46 @@
+function project2d(md3d,value,layer) {
+    // PROJECT2D - returns the value of a field for a given layer of the mesh
+    // 
+    //    returns the value of a vector for a given layer from extruded mesh onto the 2d mesh 
+    //    used to do the extrusion. This function is used to compare values between different
+    //    layers of a 3d mesh.
+    // 
+    //    Usage:
+    //       projection_value=project2d(md3d,value,layer)
+    // 
+    //    Example:
+    //       vel2=project2d(md3d,md3d.initialization.vel,2);
+    //       returns the velocity of the second layer (1 is the base)
+
+    // some checks on list of arguments
+    if (arguments.length !== 3) {
+        console.error('project2d error message');
+    }
+
+    if (md3d.mesh.domaintype() !== '3D') {
+        console.error("wrong model type ... should be ''3d''");
+    }
+
+    if (layer<1 || layer>md3d.mesh.numberoflayers) {
+        console.error(['layer must be between 1 and ' + num2str(md3d.mesh.numberoflayers)]);
+    }
+
+    // Return the projection value
+    var temp = [];
+    if (value.length === md3d.mesh.numberofvertices) {
+        for (var i = (layer-1)*md3d.mesh.numberofvertices2d; i <= layer*md3d.mesh.numberofvertices2d; ++i) {
+            temp.push(value[i]);
+        }
+    } else if (value.length === md3d.mesh.numberofvertices+1) {
+        for (var i = (layer-1)*md3d.mesh.numberofvertices2d; i <= layer*md3d.mesh.numberofvertices2d; ++i) {
+            temp.push(value[i]);
+        }
+        temp.push(value[value.length-1]);
+    } else {
+        for (var i = (layer-1)*md3d.mesh.numberofelements; i <= layer*md3d.mesh.numberofelements2d; ++i) {
+            temp.push(value[i]);
+        }
+    }
+
+    return temp;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/project2d.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/project2d.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/project2d.m	(revision 27955)
@@ -0,0 +1,39 @@
+function projection_value=project2d(md3d,value,layer)
+%PROJECT2D - returns the value of a field for a given layer of the mesh
+%
+%   returns the value of a vector for a given layer from extruded mesh onto the 2d mesh 
+%   used to do the extrusion. This function is used to compare values between different
+%   layers of a 3d mesh.
+%
+%   Usage:
+%      projection_value=project2d(md3d,value,layer)
+%
+%   Example:
+%      vel2=project2d(md3d,md3d.initialization.vel,2);
+%      returns the velocity of the second layer (1 is the base)
+
+%some checks on list of arguments
+if ((nargin~=3) ),
+	help project2d
+	error('project2d error message');
+end
+
+if ~strcmp(md3d.mesh.domaintype,'3D');
+	error('wrong model type ... should be ''3d''');
+end
+
+if ((layer<1) | (layer>md3d.mesh.numberoflayers)),
+	error(['layer must be between 1 and ' num2str(md3d.mesh.numberoflayers)]);
+end
+
+if numel(value)==1
+	projection_value=value;
+elseif size(value,1)==md3d.mesh.numberofvertices,
+	projection_value=value((layer-1)*md3d.mesh.numberofvertices2d+1:layer*md3d.mesh.numberofvertices2d,:);
+elseif size(value,1)==md3d.mesh.numberofvertices+1
+	projection_value=[value((layer-1)*md3d.mesh.numberofvertices2d+1:layer*md3d.mesh.numberofvertices2d,:); value(end,:)];
+elseif size(value,1)==md3d.mesh.numberofelements
+	projection_value=value((layer-1)*md3d.mesh.numberofelements2d+1:layer*md3d.mesh.numberofelements2d,:);
+else
+	error('Dimensions not supported yet');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/project2d.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/project2d.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/project2d.py	(revision 27955)
@@ -0,0 +1,52 @@
+import numpy as np
+
+
+def project2d(md3d, value, layer):
+    '''
+        returns the value of a field for a given layer of the mesh
+
+    returns the value of a vector for a given layer from extruded mesh onto the 2d mesh
+    used to do the extrusion. This function is used to compare values between different
+    layers of a 3d mesh.
+
+    Usage:
+      projection_value = project2d(md3d, value, layer)
+
+    Example:
+      vel2 = project2d(md3d, md3d.initialization.vel, 2)
+      returns the velocity of the second layer (1 is the base)
+        '''
+
+    if md3d.mesh.domaintype().lower() != '3d':
+        raise Exception("model passed to project2d function should be 3D")
+
+    if layer < 1 or layer > md3d.mesh.numberoflayers:
+        raise ValueError("layer must be between 0 and {}".format(md3d.mesh.numberoflayers))
+
+    # coerce to array in case float is passed
+    if type(value) not in [np.ndarray, np.ma.core.MaskedArray]:
+        print('coercing array')
+        value = np.array(value)
+
+    vec2d = False
+    if value.ndim == 2 and value.shape[1] == 1:
+        value = value.reshape(-1, )
+        vec2d = True
+
+    if value.size == 1:
+        projection_value = value[(layer - 1) * md3d.mesh.numberofelements2d:layer * md3d.mesh.numberofelements2d]
+    elif value.shape[0] == md3d.mesh.numberofvertices:
+        #print 'indices: ', (layer - 1) * md3d.mesh.numberofvertices2d, layer * md3d.mesh.numberofvertices2d
+        projection_value = value[(layer - 1) * md3d.mesh.numberofvertices2d:layer * md3d.mesh.numberofvertices2d]
+    elif value.shape[0] == md3d.mesh.numberofvertices + 1:
+        if np.ndim(value) == 1:
+            projection_value = np.hstack((value[(layer - 1) * md3d.mesh.numberofvertices2d:layer * md3d.mesh.numberofvertices2d], value[-1]))
+        else:
+            projection_value = np.vstack((value[(layer - 1) * md3d.mesh.numberofvertices2d:layer * md3d.mesh.numberofvertices2d], value[-1]))
+    else:
+        projection_value = value[(layer - 1) * md3d.mesh.numberofelements2d:layer * md3d.mesh.numberofelements2d]
+
+    if vec2d:
+        projection_value = projection_value.reshape(-1, )
+
+    return projection_value
Index: /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/project3d.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/project3d.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/project3d.js	(revision 27955)
@@ -0,0 +1,91 @@
+function project3d() {
+	//PROJECT3D - vertically project a vector from 2d mesh
+	//
+	//   vertically project a vector from 2d mesh (split in noncoll and coll areas) into a 3d mesh.
+	//   This vector can be a node vector of size (md.mesh.numberofvertices2d,N/A) or an 
+	//   element vector of size (md.mesh.numberofelements2d,N/A). 
+	//   arguments: 
+	//      'vector': 2d vector
+	//      'type': 'element' or 'node'. 
+	//   options: 
+	//      'layer' a layer number where vector should keep its values. If not specified, all layers adopt the 
+	//             value of the 2d vector.
+	//      'padding': default to 0 (value adopted by other 3d layers not being projected0
+	//
+	//   Egs:
+	// md.extruded_vector=project3d(md,'vector',vector2d,'type','node','layer',1,'padding',null);
+	// md.extruded_vector=project3d(md,'vector',vector2d,'type','element','padding',0);
+	// md.extruded_vector=project3d(md,'vector',vector2d,'type','node');
+
+	//some regular checks
+	if (arguments.length===1 || arguments.length===0) {
+		console.error('project3d bad usage');
+	}
+	if (md.mesh.elementtype() !== 'Penta') {
+		console.error('input model is not 3d');
+	}
+
+	//retrieve parameters from options.
+	var options      = new pairoptions(Array.prototype.slice.call(arguments, 1)); // slice to remove md
+	var vector2d     = options.getfieldvalue('vector');     //mandatory
+	var type         = options.getfieldvalue('type');       //mandatory
+	var layer        = options.getfieldvalue('layer',0);    //optional (do all layers default:)
+	var paddingvalue = options.getfieldvalue('padding',0);  //0 by default
+
+	if (Number.isNaN(vector2d) || vector2d === 0 || vector2d.length === 1) { // NaN treated as length 1 in MATLAB
+		projected_vector=vector2d;
+	} else if (type.toLowerCase() === 'node') {
+		//Initialize 3d vector
+		if (vector2d.length===md.mesh.numberofvertices2d) {
+			projected_vector=NewArrayFill(md.mesh.numberofvertices,paddingvalue);
+		} else if (vector2d.length===md.mesh.numberofvertices2d+1) {
+			projected_vector=NewArrayFill(md.mesh.numberofvertices+1,paddingvalue);
+			projected_vector[projected_vector.length-1] = vector2d[vector2d.length-1];
+			vector2d.pop();
+		} else {
+			console.error('vector length not supported')
+		}
+
+		//Fill in
+		if (layer===0) {
+			for (var i = 1; i <= md.mesh.numberoflayers; ++i) {
+				for (var j = (i-1)*md.mesh.numberofvertices2d, k = 0; j < i*md.mesh.numberofvertices2d; j++, k++) {
+					projected_vector[j] = vector2d[k];
+				}
+			}
+		} else {
+			for (var j = (layer-1)*md.mesh.numberofvertices2d, k = 0; j < layer*md.mesh.numberofvertices2d; j++, k++) {
+				projected_vector[j] = vector2d[k];
+			}
+		}
+	} else if (type.toLowerCase() === 'element') {
+		//Initialize 3d vector
+		//var vector2d_size2 = Array.isArray(vector2d[0]) ? vector2d[0].length : 1; //get size of vector2d's 2nd axis
+		if (vector2d.length===md.mesh.numberofelements2d) {
+			projected_vector=NewArrayFill(md.mesh.numberofelements,paddingvalue);
+		} else if (vector2d.length===md.mesh.numberofelements2d+1) {
+			projected_vector=NewArrayFill(md.mesh.numberofelements+1,paddingvalue);
+			projected_vector[projected_vector.length-1] = vector2d[vector2d.length-1];
+			vector2d.pop();
+		} else {
+			console.error('vector length not supported')
+		}
+
+		//Fill in
+		if (layer===0) {
+			for (var i = 1; i <= md.mesh.numberoflayers-1; ++i) {
+				for (var j = (i-1)*md.mesh.numberofelements2d, k = 0; j < i*md.mesh.numberofelements2d; j++, k++) {
+					projected_vector[j] = vector2d[k];
+				}
+			}
+		} else {
+			for (var j = (layer-1)*md.mesh.numberofelements2d, k = 0; j < layer*md.mesh.numberofelements2d; j++, k++) {
+				projected_vector[j] = vector2d[k];
+			}
+		}
+	} else {
+		console.error('project3d error message: unknown projection type');
+	}
+
+	return projected_vector;
+};
Index: /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/project3d.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/project3d.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/project3d.m	(revision 27955)
@@ -0,0 +1,109 @@
+function projected_vector=project3d(md,varargin)
+%PROJECT3D - vertically project a vector from 2d mesh
+%
+%   vertically project a vector from 2d mesh (split in noncoll and coll areas) into a 3d mesh.
+%   This vector can be a node vector of size (md.mesh.numberofvertices2d,N/A) or an 
+%   element vector of size (md.mesh.numberofelements2d,N/A). 
+%   arguments: 
+%      'vector': 2d vector
+%      'type': 'element' or 'node' or 'poly'
+%   options: 
+%      'layer' a layer number where vector should keep its values. If not specified, all layers adopt the 
+%             value of the 2d vector.
+%      'padding': default to 0 (value adopted by other 3d layers not being projected0
+%		 'degree': degree of polynomials when extrude from bottom to the top
+%
+%   Egs:
+%      extruded_vector=project3d(md,'vector',vector2d,'type','node','layer',1,'padding',NaN);
+%      extruded_vector=project3d(md,'vector',vector2d,'type','element','padding',0);
+%      extruded_vector=project3d(md,'vector',vector2d,'type','node');
+
+%some regular checks
+if nargin==0,
+	help project3d
+	error('bad usage');
+end
+if ~strcmp(elementtype(md.mesh),'Penta')
+	error('input model is not 3d');
+end
+
+%retrieve parameters from options.
+options      = pairoptions(varargin{:});
+vector2d     = getfieldvalue(options,'vector');     %mandatory
+type         = getfieldvalue(options,'type');       %mandatory
+layer        = getfieldvalue(options,'layer',0);    %optional (do all layers otherwise)
+paddingvalue = getfieldvalue(options,'padding',0);  %0 by default
+polyexponent = getfieldvalue(options,'degree',0);   %0 by default, 0-degree polynomial
+
+if length(vector2d)==1,
+	projected_vector=vector2d;
+
+elseif strcmpi(type,'node'),
+	%Initialize 3d vector
+	if size(vector2d,1)==md.mesh.numberofvertices2d
+		projected_vector=paddingvalue*ones(md.mesh.numberofvertices, size(vector2d,2));
+	elseif size(vector2d,1)==md.mesh.numberofvertices2d+1
+		projected_vector=paddingvalue*ones(md.mesh.numberofvertices+1,size(vector2d,2));
+		projected_vector(end,:)=vector2d(end,:);
+		vector2d=vector2d(1:end-1,:);
+	else
+		error('vector length not supported')
+	end
+
+	%Fill in
+	if layer==0,
+		for i=1:md.mesh.numberoflayers,
+			projected_vector(((i-1)*md.mesh.numberofvertices2d+1):(i*md.mesh.numberofvertices2d),:)=vector2d;
+		end
+	else
+		projected_vector(((layer-1)*md.mesh.numberofvertices2d+1):(layer*md.mesh.numberofvertices2d),:)=vector2d;
+	end
+
+elseif strcmpi(type,'element'),
+
+	%Initialize 3d vector
+	if size(vector2d,1)==md.mesh.numberofelements2d
+		projected_vector=paddingvalue*ones(md.mesh.numberofelements,  size(vector2d,2));
+	elseif size(vector2d,1)==md.mesh.numberofelements2d+1
+		projected_vector=paddingvalue*ones(md.mesh.numberofelements+1,size(vector2d,2));
+		projected_vector(end,:)=vector2d(end,:);
+		vector2d=vector2d(1:end-1,:);
+	else
+		error('vector length not supported')
+	end
+
+	%Fill in
+	if layer==0,
+		for i=1:(md.mesh.numberoflayers-1),
+			projected_vector( ((i-1)*md.mesh.numberofelements2d+1):(i*md.mesh.numberofelements2d),:)=vector2d;
+		end
+	else
+		projected_vector( ((layer-1)*md.mesh.numberofelements2d+1):(layer*md.mesh.numberofelements2d),:)=vector2d;
+	end
+
+elseif strcmpi(type,'poly'), % interpolate values from 0 to 1 with a polynomial degree n
+	%Initialize 3d vector
+	if size(vector2d,1)==md.mesh.numberofvertices2d
+		projected_vector=paddingvalue*ones(md.mesh.numberofvertices, size(vector2d,2));
+	elseif size(vector2d,1)==md.mesh.numberofvertices2d+1
+		projected_vector=paddingvalue*ones(md.mesh.numberofvertices+1,size(vector2d,2));
+		projected_vector(end,:)=vector2d(end,:);
+		vector2d=vector2d(1:end-1,:);
+	else
+		error('vector length not supported')
+	end
+
+	polycoeff = [0:1./(md.mesh.numberoflayers-1):1];
+
+	%Fill in
+	if layer==0,
+		for i=1:md.mesh.numberoflayers,
+			projected_vector(((i-1)*md.mesh.numberofvertices2d+1):(i*md.mesh.numberofvertices2d),:)=vector2d*(1-(1-polycoeff(i)).^polyexponent);
+		end
+	else
+		projected_vector(((layer-1)*md.mesh.numberofvertices2d+1):(layer*md.mesh.numberofvertices2d),:)=vector2d*(1-(1-polycoeff(layer)).^polyexponent);
+	end
+
+else
+	error('project3d error message: unknown projection type');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/project3d.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/project3d.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/extrusion/project3d.py	(revision 27955)
@@ -0,0 +1,153 @@
+import numpy as np
+from pairoptions import pairoptions
+
+
+def project3d(md, *args):
+    '''
+    PROJECT3D - vertically project a vector from 2d mesh
+
+        vertically project a vector from 2d mesh (split in noncoll and coll
+        areas) into a 3d mesh.
+        This vector can be a node vector of size (md.mesh.numberofvertices2d,
+        N/A) or an element vector of size (md.mesh.numberofelements2d, N/A).
+
+        arguments:
+            'vector': 2d vector
+            'type': 'element' or 'node' or 'poly'
+
+        options:
+            'layer'     a layer number where vector should keep its values. If
+                        not specified, all layers adopt the value of the 2d
+                        vector.
+            'padding':  default to 0 (value adopted by other 3d layers not
+                        being projected.
+            'degree':   degree of polynomials when extrude from bottom to the top
+
+        Examples:
+            extruded_vector = project3d(md, 'vector', vector2d, 'type', 'node', 'layer', 1, 'padding', NaN)
+            extruded_vector = project3d(md, 'vector', vector2d, 'type', 'element', 'padding', 0)
+            extruded_vector = project3d(md, 'vector', vector2d, 'type', 'node')
+    '''
+
+    #some regular checks
+    if not md:
+        raise TypeError("bad usage")
+    if md.mesh.domaintype().lower() != '3d':
+        raise TypeError("input model is not 3d")
+
+    #retrieve parameters from options.
+    options = pairoptions(*args)
+    vector2d = options.getfieldvalue('vector')  #mandatory
+    vectype = options.getfieldvalue('type')  #mandatory
+    layer = options.getfieldvalue('layer', 0)  #optional (do all layers otherwise)
+    paddingvalue = options.getfieldvalue('padding', 0)  #0 by default
+    polyexponent = options.getfieldvalue('degree', 0)  #0 by default, 0-degree polynomial
+
+    #Handle special case where vector2d is single element (differs from representation in MATLAB)
+    if isinstance(vector2d, (bool, int, float)):
+        projected_vector = vector2d
+
+    if np.size(vector2d) == 1:
+        projected_vector = vector2d
+
+    elif vectype.lower() == 'node':
+        #Initialize 3d vector
+        if np.ndim(vector2d) == 1:
+            if vector2d.shape[0] == md.mesh.numberofvertices2d:
+                projected_vector = (paddingvalue * np.ones((md.mesh.numberofvertices))).astype(vector2d.dtype)
+            elif vector2d.shape[0] == md.mesh.numberofvertices2d + 1:
+                projected_vector = (paddingvalue * np.ones((md.mesh.numberofvertices + 1))).astype(vector2d.dtype)
+                projected_vector[-1] = vector2d[-1]
+                vector2d = vector2d[:-1]
+            else:
+                raise TypeError("vector length not supported")
+            #Fill in
+            if layer == 0:
+                for i in range(md.mesh.numberoflayers):
+                    projected_vector[(i * md.mesh.numberofvertices2d):((i + 1) * md.mesh.numberofvertices2d)] = vector2d
+            else:
+                projected_vector[((layer - 1) * md.mesh.numberofvertices2d):(layer * md.mesh.numberofvertices2d)] = vector2d
+        else:
+            if vector2d.shape[0] == md.mesh.numberofvertices2d:
+                projected_vector = (paddingvalue * np.ones((md.mesh.numberofvertices, np.size(vector2d, axis=1)))).astype(vector2d.dtype)
+            elif vector2d.shape[0] == md.mesh.numberofvertices2d + 1:
+                projected_vector = (paddingvalue * np.ones((md.mesh.numberofvertices + 1, np.size(vector2d, axis=1)))).astype(vector2d.dtype)
+                projected_vector[-1, :] = vector2d[-1, :]
+                vector2d = vector2d[:-1, :]
+            else:
+                raise TypeError("vector length not supported")
+            #Fill in
+            if layer == 0:
+                for i in range(md.mesh.numberoflayers):
+                    projected_vector[(i * md.mesh.numberofvertices2d):((i + 1) * md.mesh.numberofvertices2d), :] = vector2d
+            else:
+                projected_vector[((layer - 1) * md.mesh.numberofvertices2d):(layer * md.mesh.numberofvertices2d), :] = vector2d
+
+    elif vectype.lower() == 'element':
+        #Initialize 3d vector
+        if np.ndim(vector2d) == 1:
+            if vector2d.shape[0] == md.mesh.numberofelements2d:
+                projected_vector = (paddingvalue * np.ones((md.mesh.numberofelements))).astype(vector2d.dtype)
+            elif vector2d.shape[0] == md.mesh.numberofelements2d + 1:
+                projected_vector = (paddingvalue * np.ones((md.mesh.numberofelements + 1))).astype(vector2d.dtype)
+                projected_vector[-1] = vector2d[-1]
+                vector2d = vector2d[:-1]
+            else:
+                raise TypeError("vector length not supported")
+            #Fill in
+            if layer == 0:
+                for i in range(md.mesh.numberoflayers - 1):
+                    projected_vector[(i * md.mesh.numberofelements2d):((i + 1) * md.mesh.numberofelements2d)] = vector2d
+            else:
+                projected_vector[((layer - 1) * md.mesh.numberofelements2d):(layer * md.mesh.numberofelements2d)] = vector2d
+        else:
+            if vector2d.shape[0] == md.mesh.numberofelements2d:
+                projected_vector = (paddingvalue * np.ones((md.mesh.numberofelements, np.size(vector2d, axis=1)))).astype(vector2d.dtype)
+            elif vector2d.shape[0] == md.mesh.numberofelements2d + 1:
+                projected_vector = (paddingvalue * np.ones((md.mesh.numberofelements + 1, np.size(vector2d, axis=1)))).astype(vector2d.dtype)
+                projected_vector[-1, :] = vector2d[-1, :]
+                vector2d = vector2d[:-1, :]
+            else:
+                raise TypeError("vector length not supported")
+            #Fill in
+            if layer == 0:
+                for i in range(md.mesh.numberoflayers - 1):
+                    projected_vector[(i * md.mesh.numberofelements2d):((i + 1) * md.mesh.numberofelements2d), :] = vector2d
+            else:
+                projected_vector[((layer - 1) * md.mesh.numberofelements2d):(layer * md.mesh.numberofelements2d), :] = vector2d
+    elif vectype.lower() == 'poly':
+        #Initialize 3d vector
+        if np.ndim(vector2d) == 1:
+            if vector2d.shape[0] == md.mesh.numberofvertices2d:
+                projected_vector = (paddingvalue * np.ones((md.mesh.numberofvertices))).astype(vector2d.dtype)
+            elif vector2d.shape[0] == md.mesh.numberofvertices2d + 1:
+                projected_vector = (paddingvalue * np.ones((md.mesh.numberofvertices + 1))).astype(vector2d.dtype)
+                projected_vector[-1] = vector2d[-1]
+                vector2d = vector2d[:-1]
+            else:
+                raise TypeError("vector length not supported")
+            #Fill in
+            if layer == 0:
+                for i in range(md.mesh.numberoflayers - 1):
+                    projected_vector[(i * md.mesh.numberofvertices2d):((i + 1) * md.mesh.numberofvertices2d)] = vector2d * (1.0 - (1.0 - i / (md.mesh.numberoflayers - 1.0))**polyexponent)
+            else:
+                projected_vector[((layer - 1) * md.mesh.numberofvertices2d):(layer * md.mesh.numberofvertices2d)] = vector2d * (1.0 - (1.0 - layer / (md.mesh.numberoflayers - 1.0))**polyexponent)
+        else:
+            if vector2d.shape[0] == md.mesh.numberofvertices2d:
+                projected_vector = (paddingvalue * np.ones((md.mesh.numberofvertices, np.size(vector2d, axis=1)))).astype(vector2d.dtype)
+            elif vector2d.shape[0] == md.mesh.numberofvertices2d + 1:
+                projected_vector = (paddingvalue * np.ones((md.mesh.numberofvertices + 1, np.size(vector2d, axis=1)))).astype(vector2d.dtype)
+                projected_vector[-1, :] = vector2d[-1, :]
+                vector2d = vector2d[:-1, :]
+            else:
+                raise TypeError("vector length not supported")
+            #Fill in
+            if layer == 0:
+                for i in range(md.mesh.numberoflayers - 1):
+                    projected_vector[(i * md.mesh.numberofvertices2d):((i + 1) * md.mesh.numberofvertices2d), :] = vector2d * (1.0 - (1.0 - i / (md.mesh.numberoflayers - 1.0))**polyexponent)
+            else:
+                projected_vector[((layer - 1) * md.mesh.numberofvertices2d):(layer * md.mesh.numberofvertices2d), :] = vector2d * (1.0 - (1.0 - layer / (md.mesh.numberoflayers - 1.0))**polyexponent)
+    else:
+        raise TypeError("project3d error message: unknown projection type")
+
+    return projected_vector
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/AboveGround.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/AboveGround.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/AboveGround.m	(revision 27955)
@@ -0,0 +1,6 @@
+function [x,y,z]=AboveGround(lat,lon,r,height); 
+
+	r=r+height;  
+	x = r .* cosd(lat) .* cosd(lon);
+	y = r .* cosd(lat) .* sind(lon);
+	z = r .*sind(lat);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/AboveGround.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/AboveGround.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/AboveGround.py	(revision 27955)
@@ -0,0 +1,8 @@
+import numpy as np
+
+def AboveGround(lat, long, r, height):  # {{{
+    r = r + height
+    x = r * np.cos(np.deg2rad(lat)) * np.cos(np.deg2rad(long))
+    y = r * np.cos(np.deg2rad(lat)) * np.sin(np.deg2rad(long))
+    z = r * np.sin(np.deg2rad(lat))
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/FlagElements.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/FlagElements.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/FlagElements.js	(revision 27955)
@@ -0,0 +1,49 @@
+function FlagElements(md,region){
+//FLAGELEMENTS - flag the elements in an region
+//
+//   The region can be given as a string, or as a javascript array
+//
+//   Usage: 
+//      flag=FlagElements(md,region);
+//
+//   Example:
+//      flag=FlagElements(md,'all');
+//      flag=FlagElements(md,'');
+//      flag=FlagElements(md,domain);
+
+	//variables
+	var flag;
+	
+	if (typeof region == 'string'){
+		if (region === ''){
+			flag=NewArrayFill(md.mesh.numberofelements,0);
+		}
+		else if (region === 'all'){
+			flag=NewArrayFill(md.mesh.numberofelements,1);
+		}
+		else{
+			flag=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,region,'element',1);
+		}
+	}
+	else if(IsArray(region)){
+		if (region.length==md.mesh.numberofelements){
+			flag=region;
+		}
+		else if (region.length==md.mesh.numberofvertices){
+			var flag=NewArrayFill(md.mesh.numberofelements,0);
+			for (var i=0;i<md.mesh.numberofelements;i++)
+				var sum=0;
+				for(var j=0;j<md.mesh.elements[0].length;j++){
+					sum += region[md.mesh.element[i][j]-1];
+				}
+				if (sum==md.mesh.elements[0].length)flag[i]=1;
+		}
+		else{
+			throw Error('Flaglist for region must be of same size as number of elements in model');
+		}
+	}
+	else{
+		throw Error('Invalid region option');
+	}
+	return flag;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/FlagElements.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/FlagElements.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/FlagElements.m	(revision 27955)
@@ -0,0 +1,59 @@
+function flag=FlagElements(md,region),
+%FLAGELEMENTS - flag the elements in an region
+%
+%   The region can be given with an exp file, a list of elements or vertices
+%
+%   Usage: 
+%      flag=FlagElements(md,region);
+%
+%   Example:
+%      flag=FlagElements(md,'all');
+%      flag=FlagElements(md,'');
+%      flag=FlagElements(md,'Domain.exp');
+%      flag=FlagElements(md,'~Domain.exp');
+
+	if ischar(region),
+		if isempty(region),
+			flag=zeros(md.mesh.numberofelements,1);
+			invert=0;
+		elseif strcmpi(region,'all')
+			flag=ones(md.mesh.numberofelements,1);
+			invert=0;
+		else
+			%make sure that we actually don't want the elements outside the domain outline!
+			if strcmpi(region(1),'~'),
+				region=region(2:length(region));
+				invert=1;
+			else
+				invert=0;
+			end
+
+			%does the region domain outline exist or do we have to look for xlim,ylim in basinzoom?
+			if ~exist(region,'file'),
+				if (length(region)>3 & ~strcmp(region(end-3),'.exp')),
+					error(['Error: File ' region ' not found!']);
+				end
+				[xlim,ylim]=basinzoom('basin',region);
+				flag_nodes=double(md.mesh.x<xlim(2) & md.mesh.x>xlim(1) &  md.mesh.y<ylim(2) & md.mesh.y>ylim(1));
+				flag=prod(flag_nodes(md.mesh.elements),2);
+			else
+				%ok, flag elements
+				flag=ContourToMesh(md.mesh.elements(:,1:3),md.mesh.x,md.mesh.y,region,'element',1);
+			end
+		end
+		if invert,
+			flag=~flag;
+		end
+	elseif isfloat(region) | islogical(region),
+		if size(region,1)==md.mesh.numberofelements,
+			flag=region;
+		elseif size(region,1)==md.mesh.numberofvertices,
+			flag=logical(sum(region(md.mesh.elements)>0,2)==size(md.mesh.elements,2));
+		else
+			help FlagElements
+			error('Flaglist for region must be of same size as number of elements in model');
+		end
+	else
+		error('Invalid region option');
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/FlagElements.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/FlagElements.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/FlagElements.py	(revision 27955)
@@ -0,0 +1,66 @@
+import numpy as np
+import os
+from ContourToMesh import ContourToMesh
+import MatlabFuncs as m
+import PythonFuncs as p
+
+
+def FlagElements(md, region):
+    """
+    FLAGELEMENTS - flag the elements in an region
+
+       The region can be given with an exp file, a list of elements or vertices
+
+       Usage:
+          flag = FlagElements(md, region)
+
+       Example:
+          flag = FlagElements(md, 'all')
+          flag = FlagElements(md, '')
+          flag = FlagElements(md, 'Domain.exp')
+          flag = FlagElements(md, '~Domain.exp')
+    """
+
+    if isinstance(region, str):
+        if not region:
+            flag = np.zeros(md.mesh.numberofelements, bool)
+            invert = 0
+        elif m.strcmpi(region, 'all'):
+            flag = np.ones(md.mesh.numberofelements, bool)
+            invert = 0
+        else:
+            #make sure that we actually don't want the elements outside the domain outline!
+            if m.strcmpi(region[0], '~'):
+                region = region[1:]
+                invert = 1
+            else:
+                invert = 0
+
+                #does the region domain outline exist or do we have to look for xlim, ylim in basinzoom?
+            if not os.path.exists(region):
+                if len(region) > 3 and not m.strcmp(region[-4:], '.exp'):
+                    raise IOError("Error: File 'region' not found!" % region)
+                raise RuntimeError("FlagElements.py calling basinzoom.py is not complete.")
+                xlim, ylim = basinzoom('basin', region)
+                flag_nodes = p.logical_and_n(md.mesh.x < xlim[1], md.mesh.x > xlim[0], md.mesh.y < ylim[1], md.mesh.y > ylim[0])
+                flag = np.prod(flag_nodes[md.mesh.elements], axis=1).astype(bool)
+            else:
+                #ok, flag elements
+                flag = ContourToMesh(md.mesh.elements[:, 0:3].copy(), md.mesh.x, md.mesh.y, region, 'element', 1)
+                flag = flag.astype(bool)
+
+        if invert:
+            flag = np.logical_not(flag)
+
+    elif isinstance(region, np.ndarray) or isinstance(region, bool):
+        if np.size(region, 0) == md.mesh.numberofelements:
+            flag = region
+        elif np.size(region, 0) == md.mesh.numberofvertices:
+            flag = (np.sum(region[md.mesh.elements - 1] > 0, axis=1) == np.size(md.mesh.elements, 1))
+        else:
+            raise TypeError("Flaglist for region must be of same size as number of elements in model.")
+
+    else:
+        raise TypeError("Invalid region option")
+
+    return flag
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/GetAreas.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/GetAreas.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/GetAreas.m	(revision 27955)
@@ -0,0 +1,51 @@
+function areas=GetAreas(index,x,y,varargin)
+%GETAREAS - compute areas or volumes of elements
+%
+%   compute areas of triangular elements or volumes 
+%   of pentahedrons
+%
+%   Usage:
+%      areas  =GetAreas(index,x,y);
+%      volumes=GetAreas(index,x,y,z);
+%
+%   Examples:
+%      areas  =GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y);
+%      volumes=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y,md.z);
+
+%get number of elements and number of nodes
+nels=size(index,1);
+nods=length(x);
+if nargin==4, z=varargin{1}; end
+
+%some checks
+if nargout~=1 | (nargin~=3 & nargin~=4),
+	help GetAreas
+	error('GetAreas error message: bad usage')
+end
+if ((length(y)~=nods) | (nargin==4 & length(z)~=nods)),
+	error('GetAreas error message: x,y and z do not have the same length')
+end
+if max(index(:))>nods,
+	error(['GetAreas error message: index should not have values above ' num2str(nods) ])
+end
+if (nargin==3 & size(index,2)~=3),
+	error('GetAreas error message: index should have 3 columns for 2d meshes.')
+end
+if (nargin==4 & size(index,2)~=6),
+	error('GetAreas error message: index should have 6 columns for 3d meshes.')
+end
+
+%initialization
+areas=zeros(nels,1);
+x1=x(index(:,1)); x2=x(index(:,2)); x3=x(index(:,3));
+y1=y(index(:,1)); y2=y(index(:,2)); y3=y(index(:,3));
+
+%compute the volume of each element
+if nargin==3,
+	%compute the surface of the triangle
+	areas=(0.5*((x2-x1).*(y3-y1)-(y2-y1).*(x3-x1)));
+else
+	%V=area(triangle)*1/3(z1+z2+z3)
+	thickness=mean(z(index(:,4:6)),2)-mean(z(index(:,1:3)),2);
+	areas=(0.5*((x2-x1).*(y3-y1)-(y2-y1).*(x3-x1))).*thickness;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/GetAreas.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/GetAreas.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/GetAreas.py	(revision 27955)
@@ -0,0 +1,52 @@
+import numpy as np
+
+
+def GetAreas(index, x, y, z=np.array([])):
+    """
+    GETAREAS - compute areas or volumes of elements
+
+       compute areas of triangular elements or volumes
+       of pentahedrons
+
+       Usage:
+          areas  =GetAreas(index, x, y)
+          volumes = GetAreas(index, x, y, z)
+
+       Examples:
+          areas  =GetAreas(md.mesh.elements, md.mesh.x, md.mesh.y)
+          volumes = GetAreas(md.mesh.elements, md.mesh.x, md.mesh.y, md.z)
+    """
+
+    #get number of elements and number of nodes
+    nels = np.size(index, axis=0)
+    nods = np.size(x)
+
+    #some checks
+    if np.size(y) != nods or (z and np.size(z) != nods):
+        raise TypeError("GetAreas error message: x, y and z do not have the same length.")
+    if np.max(index) > nods:
+        raise TypeError("GetAreas error message: index should not have values above %d." % nods)
+    if (not z and np.size(index, axis=1) != 3):
+        raise TypeError("GetAreas error message: index should have 3 columns for 2d meshes.")
+    if (z and np.size(index, axis=1) != 6):
+        raise TypeError("GetAreas error message: index should have 6 columns for 3d meshes.")
+
+    #initialization
+    areas = np.zeros(nels)
+    x1 = x[index[:, 0] - 1]
+    x2 = x[index[:, 1] - 1]
+    x3 = x[index[:, 2] - 1]
+    y1 = y[index[:, 0] - 1]
+    y2 = y[index[:, 1] - 1]
+    y3 = y[index[:, 2] - 1]
+
+    #compute the volume of each element
+    if not z:
+        #compute the surface of the triangle
+        areas = (0.5 * ((x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1)))
+    else:
+        #V = area(triangle) * 1 / 3(z1 + z2 + z3)
+        thickness = np.mean(z[index[:, 3:6] - 1]) - np.mean(z[index[:, 0:3] - 1])
+        areas = (0.5 * ((x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1))) * thickness
+
+    return areas
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/GetAreas3DTria.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/GetAreas3DTria.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/GetAreas3DTria.m	(revision 27955)
@@ -0,0 +1,47 @@
+function areas=GetAreas3DTria(index,x,y,z,varargin)
+%GETAREAS3DTRIA - compute areas of triangles with 3D coordinates 
+%
+%   Compute areas of triangles with 3D coordinates 
+%
+%   Usage:
+%      areas=GetAreas3DTria(index,x,y,z);
+%
+%   Examples:
+%      areas=GetAreas3DTria(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z);
+
+%get number of elements and number of nodes
+nels=size(index,1);
+nods=length(x);
+
+%some checks
+if nargout~=1 | (nargin~=3 & nargin~=4),
+	help GetAreas3DTria
+	error('GetAreas3DTria error message: bad usage')
+end
+if ((length(y)~=nods) | (nargin==4 & length(z)~=nods)),
+	error('GetAreas3DTria error message: x, y, and z do not have the same length')
+end
+
+if max(index(:))>nods,
+	error(['GetAreas3DTria error message: index should not have values above ' num2str(nods) ])
+end
+if (nargin==4 & size(index,2)~=3),
+	error('GetAreas3DTria error message: index should have 3 columns for 2d meshes')
+end
+
+%initialization
+areas=zeros(nels,1);
+x1=x(index(:,1)); x2=x(index(:,2)); x3=x(index(:,3));
+y1=y(index(:,1)); y2=y(index(:,2)); y3=y(index(:,3));
+z1=z(index(:,1)); z2=z(index(:,2)); z3=z(index(:,3));
+
+%compute the volume of each element
+if nargin==4,
+	% area of triangles with 3D coordinates
+	for i=1:nels
+		m1=[x1(i) x2(i) x3(i); y1(i) y2(i) y3(i); 1 1 1];
+		m2=[y1(i) y2(i) y3(i); z1(i) z2(i) z3(i); 1 1 1];
+		m3=[z1(i) z2(i) z3(i); x1(i) x2(i) x3(i); 1 1 1];
+		areas(i)=sqrt(det(m1)^2 + det(m2)^2 + det(m3)^2)/2;
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/GetAreas3DTria.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/GetAreas3DTria.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/GetAreas3DTria.py	(revision 27955)
@@ -0,0 +1,62 @@
+import numpy as np
+
+
+def GetAreas3DTria(index, x, y, z, *args):
+    """GETAREAS3DTRIA - compute areas of triangles with 3D coordinates
+
+    Compute areas of triangles with 3D coordinates.
+
+    Usage:
+        areas = GetAreas3DTria(index, x, y, z)
+
+    Examples:
+        areas = GetAreas3DTria(md.mesh.elements, md.mesh.x, md.mesh.y, md.mesh.z)
+
+    TODO:
+    - Determine if *args is needed.
+    """
+
+    # Get number of elements and number of nodes
+    nels = index.shape[0]
+    nods = len(x)
+
+    # Some checks
+    nargs = len(args)
+
+    # TODO: Do we really need this under Python (first 4 arguments are required)?
+    # if nargs != 3 and nargs != 4:
+    #     print(GetAreas3DTria.__doc__)
+    #     raise Exception('GetAreas3DTria error message: bad usage')
+
+    if len(y) != nods or (nargs == 4 and len(z) != nods):
+        print(GetAreas3DTria.__doc__)
+        raise Exception('GetAreas3DTria error message: x, y, and z do not have the same length')
+
+    if np.max(index) > nods:
+        print(GetAreas3DTria.__doc__)
+        raise Exception('GetAreas3DTria error message: index should not have values above {}'.format(nods))
+
+    if nargs == 4 and index.shape[1] != 3:
+        print(GetAreas3DTria.__doc__)
+        raise Exception('GetAreas3DTria error message: index should have 3 columns for 2d meshes')
+
+    # Initialization
+    areas = np.zeros((nels, ))
+    x1 = x[index[:, 0] - 1]
+    x2 = x[index[:, 1] - 1]
+    x3 = x[index[:, 2] - 1]
+    y1 = y[index[:, 0] - 1]
+    y2 = y[index[:, 1] - 1]
+    y3 = y[index[:, 2] - 1]
+    z1 = z[index[:, 0] - 1]
+    z2 = z[index[:, 1] - 1]
+    z3 = z[index[:, 2] - 1]
+
+    # Area of triangles with 3D coordinates
+    for i in range(nels):
+        m1 = np.vstack(([x1[i], x2[i], x3[i]], [y1[i], y2[i], y3[i]], [1, 1, 1]))
+        m2 = np.vstack(([y1[i], y2[i], y3[i]], [z1[i], z2[i], z3[i]], [1, 1, 1]))
+        m3 = np.vstack(([z1[i], z2[i], z3[i]], [x1[i], x2[i], x3[i]], [1, 1, 1]))
+        areas[i] = ((np.linalg.det(m1) ** 2 + np.linalg.det(m2) ** 2 + np.linalg.det(m3) ** 2) ** 0.5) / 2 # NOTE: math.sqrt cannot be applied element-wise to a list/numpy.array
+
+    return areas
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/GetAreasSphericalTria.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/GetAreasSphericalTria.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/GetAreasSphericalTria.m	(revision 27955)
@@ -0,0 +1,48 @@
+function areas=GetAreasSphericalTria(index,x,y,rad_e,varargin)
+%GETAREASSPHERICALTRIA - compute areas of spherical triangles 
+%
+%   compute areas of spherical trianguls 
+%
+%   Usage:
+%      areas  =GetAreasSphericalTria(index,x,y,r);
+%
+%   Examples:
+%      areas  =GetAreasSphericalTria(md.mesh.elements,md.mesh.lat,md.mesh.long,earth_radius);
+%		 
+
+%get number of elements and number of nodes
+nels=size(index,1); 
+nods=length(x);  
+
+%some checks
+if nargout~=1 | (nargin~=3 & nargin~=4),
+	help GetAreasSphericalTria
+	error('GetAreasSphericalTria error message: bad usage')
+end
+if (length(y)~=nods),
+	error('GetAreasSphericalTria error message: x and y do not have the same length')
+end
+if max(index(:))>nods,
+	error(['GetAreasSphericalTria error message: index should not have values above ' num2str(nods) ])
+end
+
+%initialization
+areas=zeros(nels,1);
+x1=x(index(:,1)); x2=x(index(:,2)); x3=x(index(:,3));
+y1=y(index(:,1)); y2=y(index(:,2)); y3=y(index(:,3));
+
+%compute the volume of each element
+if nargin==4,
+   % arc lengths 
+	arc_12=distance(x1,y1,x2,y2).*pi./180;
+	arc_23=distance(x2,y2,x3,y3).*pi./180;
+	arc_31=distance(x3,y3,x1,y1).*pi./180;
+	% semi perimeter 
+	semi_peri=(arc_12+arc_23+arc_31)./2; 
+	% spherical excess 
+	excess=4*atan(sqrt(tan(semi_peri./2).*tan((semi_peri-arc_12)./2)...
+		.*tan((semi_peri-arc_23)./2).*tan((semi_peri-arc_31)./2))); 
+	% spherical triangle areas 
+	areas=excess.*rad_e.^2; 	
+end 
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/NowickiProfile.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/NowickiProfile.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/NowickiProfile.m	(revision 27955)
@@ -0,0 +1,39 @@
+function [b h sea] = NowickiProfile(x),
+%NOWICKIPROFILE - Create profile at the transition zone based on Sophie Nowicki's thesis
+%
+%   Usage:
+%      [b h] = NowickiProfile(x)
+%
+%      - h = ice thickness
+%      - b = ice base
+%      - x = along flow coordinate
+
+%Constant for theoretical profile
+delta = 0.1;          % ratio of water density and ice density -1
+hg    = 1;            % ice thickness at grounding line
+sea   = hg/(1+delta); % sea level
+lamda = 0.1;          % ration of deviatoric stress and water pressure
+beta  = 5;            % friction coefficient
+ms    = 0.005;        % surface accumulation rat
+mu    = 5;            % viscosity
+q     = 0.801;        % ice mass flux
+
+%mesh parameters
+b=zeros(numel(x),1);
+h=zeros(numel(x),1);
+
+%upstream of the GL
+for i = 1:ceil(numel(x)/2)
+	ss=roots([1,4*lamda*beta,0,0,6*lamda*ms*x(i)^2+12*lamda*q*x(i)-hg^4-4*lamda*beta*hg^3]);
+	for j=1:4
+		if (real(ss(j)) > 0) && (imag(ss(j)) == 0), s(i)=ss(j); end
+	end
+	h(i) = s(i);
+	b(i) = 0.;
+end
+
+%downstream of the GL
+for i = ceil(numel(x)/2):numel(x)
+	h(i) = (x(i)/(4*(delta+1)*q)+hg^(-2))^(-0.5); % ice thickness for ice shelf from (3.1)
+	b(i) = sea-h(i)*(1/(1+delta));
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/NowickiProfile.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/NowickiProfile.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/NowickiProfile.py	(revision 27955)
@@ -0,0 +1,44 @@
+import numpy as np
+
+
+def NowickiProfile(x):
+    """
+    NOWICKIPROFILE - Create profile at the transition zone based on Sophie Nowicki's thesis
+
+    Usage:
+        [b h] = NowickiProfile(x)
+
+         - h = ice thickness
+         - b = ice base
+         - x = along flow coordinate
+    """
+    #Constant for theoretical profile
+    delta = 0.1  #ratio of water density and ice density - 1
+    hg = 1.  #ice thickness at grounding line
+    sea = hg / (1 + delta)  #sea level
+    lamda = 0.1  #ration of deviatoric stress and water pressure
+    beta = 5.  #friction coefficient
+    ms = 0.005  #surface accumulation rat
+    mu = 5.  #viscosity
+    q = 0.801  #ice mass flux
+
+    #mesh parameters
+    b = np.zeros((np.size(x), ))
+    h = np.zeros((np.size(x), ))
+    s = np.zeros((np.size(x), ))
+
+    #upstream of the GL
+    for i in range(int(np.size(x) / 2)):
+        ss = np.roots([1, 4 * lamda * beta, 0, 0, 6 * lamda * ms * x[i]**2 + 12 * lamda * q * x[i] - hg**4 - 4 * lamda * beta * hg**3])
+        for j in range(4):
+            if (np.isreal(ss[j]) > 0) and (np.imag(ss[j]) == 0):
+                s[i] = ss[j]
+        h[i] = s[i]
+        b[i] = 0.
+
+    #downstream of the GL
+    for i in range(int(np.size(x) / 2), int(np.size(x))):
+        h[i] = (x[i] / (4. * (delta + 1) * q) + hg**(-2))**(-0.5)  # ice thickness for ice shelf from (3.1)
+        b[i] = sea - h[i] * (1. / (1 + delta))
+
+    return [b, h, sea]
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/SegIntersect.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/SegIntersect.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/SegIntersect.m	(revision 27955)
@@ -0,0 +1,79 @@
+function bval=SegIntersect(seg1,seg2)
+%SEGINTERSECT - test of segments intersection
+%
+%   return 1 if the two segments intersect
+%   seg1=[x1 y1; x2 y2]
+%   seg2=[x1 y1; x2 y2]
+%
+%   Usage:
+%      bval=SegIntersect(seg1,seg2)
+
+bval=1;
+
+xA=seg1(1,1); yA=seg1(1,2);
+xB=seg1(2,1); yB=seg1(2,2);
+xC=seg2(1,1); yC=seg2(1,2);
+xD=seg2(2,1); yD=seg2(2,2);
+
+O2A=[xA;yA]-[xD/2.+xC/2.;yD/2.+yC/2.];
+O2B=[xB;yB]-[xD/2.+xC/2.;yD/2.+yC/2.];
+O1C=[xC;yC]-[xA/2.+xB/2.;yB/2.+yA/2.];
+O1D=[xD;yD]-[xA/2.+xB/2.;yB/2.+yA/2.];
+
+n1=[yA-yB;xB-xA]; %normal vector to segA
+n2=[yC-yD;xD-xC]; %normal vector to segB
+
+test1=n2'*O2A;
+test2=n2'*O2B;
+
+if test1*test2>0
+	bval=0;
+	return;
+end
+
+test3=n1'*O1C;
+test4=n1'*O1D;
+
+if test3*test4>0
+	bval=0;
+	return;
+end
+
+%if colinear
+if test1*test2==0 & test3*test4==0 & det([n1 n2])==0
+
+	%projection on the axis O1O2
+	O2O1=[xA/2.+xB/2.;yB/2.+yA/2.]-[xD/2.+xC/2.;yD/2.+yC/2.];
+	O1A=O2O1'*(O2A-O2O1);
+	O1B=O2O1'*(O2B-O2O1);
+	O1C=O2O1'*O1C;
+	O1D=O2O1'*O1D;
+
+	%test if one point is included in the other segment (->bval=1)
+	if (O1C-O1A)*(O1D-O1A)<0
+		bval=1;
+		return;
+	end
+	if (O1C-O1B)*(O1D-O1B)<0
+		bval=1;
+		return;
+	end
+	if (O1A-O1C)*(O1B-O1C)<0
+		bval=1;
+		return;
+	end
+	if (O1A-O1D)*(O1B-O1D)<0
+		bval=1;
+		return;
+	end
+
+	 %test if the 2 segments have the same middle (->bval=1)
+	if O2O1==0
+		bval=1;
+		return;
+	end
+
+	%else
+	bval=0;
+	return;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/SegIntersect.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/SegIntersect.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/SegIntersect.py	(revision 27955)
@@ -0,0 +1,82 @@
+import numpy as np
+
+
+def SegIntersect(seg1, seg2):
+    """
+    SEGINTERSECT - test of segments intersection
+
+       return 1 if the two segments intersect
+       seg1 = [x1 y1; x2 y2]
+       seg2 = [x1 y1; x2 y2]
+
+       Usage:
+          bval = SegIntersect(seg1, seg2)
+    """
+
+    bval = 1
+
+    xA = seg1[0, 0]
+    yA = seg1[0, 1]
+    xB = seg1[1, 0]
+    yB = seg1[1, 1]
+    xC = seg2[0, 0]
+    yC = seg2[0, 1]
+    xD = seg2[1, 0]
+    yD = seg2[1, 1]
+
+    O2A = np.array([xA, yA]) - np.array([xD / 2. + xC / 2., yD / 2. + yC / 2.])
+    O2B = np.array([xB, yB]) - np.array([xD / 2. + xC / 2., yD / 2. + yC / 2.])
+    O1C = np.array([xC, yC]) - np.array([xA / 2. + xB / 2., yB / 2. + yA / 2.])
+    O1D = np.array([xD, yD]) - np.array([xA / 2. + xB / 2., yB / 2. + yA / 2.])
+
+    n1 = np.array([yA - yB, xB - xA])  #normal vector to segA
+    n2 = np.array([yC - yD, xD - xC])  #normal vector to segB
+
+    test1 = np.dot(n2, O2A)
+    test2 = np.dot(n2, O2B)
+
+    if test1 * test2 > 0:
+        bval = 0
+        return bval
+
+    test3 = np.dot(n1, O1C)
+    test4 = np.dot(n1, O1D)
+
+    if test3 * test4 > 0:
+        bval = 0
+        return bval
+
+    #if colinear
+    if test1 * test2 == 0 and test3 * test4 == 0 and np.linalg.det(np.hstack((n1.reshape((-1, )), n2.reshape(-1, )))) == 0:
+
+        #projection on the axis O1O2
+        O2O1 = np.array([xA / 2. + xB / 2., yB / 2. + yA / 2.]) - np.array([xD / 2. + xC / 2., yD / 2. + yC / 2.])
+        O1A = np.dot(O2O1, (O2A - O2O1))
+        O1B = np.dot(O2O1, (O2B - O2O1))
+        O1C = np.dot(O2O1, O1C)
+        O1D = np.dot(O2O1, O1D)
+
+    #test if one point is included in the other segment (-> bval = 1)
+        if (O1C - O1A) * (O1D - O1A) < 0:
+            bval = 1
+            return bval
+        if (O1C - O1B) * (O1D - O1B) < 0:
+            bval = 1
+            return bval
+        if (O1A - O1C) * (O1B - O1C) < 0:
+            bval = 1
+            return bval
+        if (O1A - O1D) * (O1B - O1D) < 0:
+            bval = 1
+            return bval
+
+    #test if the 2 segments have the same middle (-> bval = 1)
+        if O2O1 == 0:
+            bval = 1
+            return bval
+
+    #else
+        bval = 0
+        return bval
+
+    return bval
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/VolumeAboveFloatation.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/VolumeAboveFloatation.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/VolumeAboveFloatation.m	(revision 27955)
@@ -0,0 +1,65 @@
+function V = VolumeAboveFloatation(md,step,flags)
+%VOLUMEABOVEFLOATATION - returns volume above floatation
+%
+%   Usage:
+%      V = VolumeAboveFloatation(md)          % uses model fiels alone
+%      V = VolumeAboveFloatation(md,10)       % Will look at step 10 of transient solution
+%      V = VolumeAboveFloatation(md,10,flags) % Will look at step 10 of transient solution, only flaged elements
+
+%Special case if 3d
+if isa(md.mesh,'mesh3dprisms')
+	index = md.mesh.elements2d;
+	x = md.mesh.x2d;
+	y = md.mesh.y2d;
+elseif isa(md.mesh,'mesh2d'),
+	index = md.mesh.elements;
+	x = md.mesh.x;
+	y = md.mesh.y;
+else
+	error('not supported yet');
+end
+
+%1. get some parameters
+rho_ice   = md.materials.rho_ice;
+rho_water = md.materials.rho_water;
+
+%2. compute averages
+if nargin==1
+	base           = mean(md.geometry.base(index),2);
+	surface        = mean(md.geometry.surface(index),2);
+	bathymetry     = mean(md.geometry.bed(index),2);
+	ice_levelset   = md.mask.ice_levelset;
+	ocean_levelset = md.mask.ocean_levelset;
+else
+	if isprop(md.results.TransientSolution(step),'MaskIceLevelset')
+		ice_levelset   = md.results.TransientSolution(step).MaskIceLevelset;
+	else
+		ice_levelset   = md.mask.ice_levelset;
+	end
+   ocean_levelset = md.results.TransientSolution(step).MaskOceanLevelset;
+   base           = mean(md.results.TransientSolution(step).Base(index),2);
+   surface        = mean(md.results.TransientSolution(step).Surface(index),2);
+	if isprop(md.results.TransientSolution(step),'Bed')
+		bathymetry  = mean(md.results.TransientSolution(step).Bed(index),2);
+	else
+		 bathymetry  = mean(md.geometry.bed(index),2);
+	 end
+end
+
+%3. get areas of all triangles
+areas = GetAreas(index,x,y);
+
+%4. Compute volume above floatation
+V = areas.*(surface-base+min(rho_water/rho_ice*bathymetry,0.));
+
+%5. take out the ones that are outside of levelset or floating
+pos = find(min(ice_levelset(index),[],2)>0 | min(ocean_levelset(index),[],2)<0);
+V(pos) = 0;
+
+%In case we are only looking at one portion of the domain...
+if nargin==3
+	V(find(~flags)) = 0;
+end
+
+%sum individual contributions
+V = sum(V);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/VolumeAboveFloatation.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/VolumeAboveFloatation.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/VolumeAboveFloatation.py	(revision 27955)
@@ -0,0 +1,84 @@
+#!/usr/bin/env python
+from model import model
+import numpy as np
+from GetAreas import GetAreas
+from mesh3dprisms import mesh3dprisms
+from mesh2d import mesh2d
+
+def VolumeAboveFloatation(md, step=None, flags=None):
+   '''
+VOLUMEABOVEFLOATATION - returns volume above floatation
+
+   Usage:
+      V = VolumeAboveFloatation(md)          % uses model fiels alone
+      V = VolumeAboveFloatation(md,10)       % Will look at step 10 of transient solution
+      V = VolumeAboveFloatation(md,10,flags) % Will look at step 10 of transient solution, only flaged elements
+   '''
+   isverb = 0 # verbosity.
+
+   #Special case if 3d
+   if isinstance(md.mesh, mesh3dprisms):
+      index = md.mesh.elements2d-1;
+      x = md.mesh.x2d;
+      y = md.mesh.y2d;
+   elif isinstance(md.mesh, mesh2d):
+      index = md.mesh.elements-1;
+      x = md.mesh.x;
+      y = md.mesh.y;
+   else:
+      raise Exception('not supported yet for {}.'%(type(md.mesh)));
+
+   #1. get some parameters
+   rho_ice   = md.materials.rho_ice
+   rho_water = md.materials.rho_water
+
+   #2. compute averages
+   if (not step) and (not flags):
+      base           = np.mean(md.geometry.base[index],axis=1);
+      surface        = np.mean(md.geometry.surface[index],axis=1);
+      bathymetry     = np.mean(md.geometry.bed[index],axis=1);
+      ice_levelset   = md.mask.ice_levelset;
+      ocean_levelset = md.mask.ocean_levelset;
+   else:
+      if 'MaskIceLevelset' in md.results.TransientSolution[step].keys():
+      #if isprop(md.results.TransientSolution(step),'MaskIceLevelset')
+         ice_levelset   = md.results.TransientSolution[step].MaskIceLevelset;
+      else:
+         ice_levelset   = md.mask.ice_levelset;
+      ocean_levelset = md.results.TransientSolution[step].MaskOceanLevelset;
+      base           = np.mean(md.results.TransientSolution[step].Base[index],axis=1);
+      surface        = np.mean(md.results.TransientSolution[step].Surface[index],axis=1);
+      if 'Bed' in md.results.TransientSolution[step].keys(): #,'Bed')
+         bathymetry  = np.mean(md.results.TransientSolution[step].Bed[index],axis=1);
+      else:
+         bathymetry  = np.mean(md.geometry.bed[index],axis=1);
+
+   #3. get areas of all triangles
+   areas = GetAreas(index+1,x,y);
+
+   #4. Compute volume above floatation
+   if isverb:
+      print(np.shape(areas))
+      print(np.shape(surface))
+      print(np.shape(base))
+      print(np.shape(bathymetry))
+
+   V = areas*(surface-base+np.minimum(rho_water/rho_ice*bathymetry,0.))
+   if isverb:
+      print(np.shape(V))
+
+   #5. take out the ones that are outside of levelset or floating
+   pos = np.where((np.min(ice_levelset[index],axis=1)>0) | (np.min(ocean_levelset[index],axis=1)<0))
+   V[pos] = 0;
+
+   #In case we are only looking at one portion of the domain...
+   if flags:
+      V[~flags] = 0;
+
+   #sum individual contributions
+   V = np.sum(V);
+
+   if isverb:
+      print('   potential volume is: %e m^3'%(V))
+
+   return V
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/delaunay.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/delaunay.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/delaunay.py	(revision 27955)
@@ -0,0 +1,48 @@
+import numpy as np
+from scipy.spatial import Delaunay # See also: https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.Delaunay.html?highlight=delaunay#scipy.spatial.Delaunay
+
+
+def delaunay(*args):
+    """DELAUNAY - Delaunay triangulation
+
+    Replicates behaviour of MATLAB's 'delaunay'.
+
+    Usage:
+        # Creates a 2-D or 3-D Delaunay triangulation from the points in a 
+        matrix P. The output DT is a three-column (for two dimensions) or 
+        four-column (for three dimensions) matrix where each row contains the 
+        row indices of the input points that make up a triangle or tetrahedron 
+        in the triangulation.
+
+        DT = delaunay(P)
+
+        # Creates a 2-D Delaunay triangulation from the points in vectors x and 
+        y.
+
+        DT = delaunay(x, y)
+
+        # Creates a 3-D Delaunay triangulation from the points in vectors x, y, 
+        and z.
+
+        DT = delaunay(x, y, z)
+
+    Sources:
+    - https://www.mathworks.com/help/matlab/ref/delaunay.html
+    """
+
+    nargs = len(args)
+
+    if nargs == 1:
+        points = args[0]
+    elif nargs == 2:
+        points = np.vstack((args[0], args[1])).T
+    elif nargs == 3:
+        # NOTE: Not tested, but it is assumed that 3-D triangulation would work.
+        points = np.vstack((args[0], args[1], args[1])).T
+    else:
+        print(delaunay.__doc__)
+        raise Exception('Wrong usage (see above)')
+
+    simplices = Delaunay(points).simplices.astype(int) # NOTE: Need to covert to array of int so that it can be fetched properly by core
+
+    return simplices
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/delaunayn.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/delaunayn.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/delaunayn.py	(revision 27955)
@@ -0,0 +1,52 @@
+import numpy as np
+from scipy.spatial import Delaunay # See also: https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.Delaunay.html?highlight=delaunay#scipy.spatial.Delaunay
+
+
+def delaunayn(X, options=[]):
+    """DELAUNAYN - N-D Delaunay triangulation
+
+    Replicates behaviour of MATLAB's 'delaunayn'.
+
+    Usage:
+        # Computes a set of simplices such that no data points of X are 
+        contained in any circumspheres of the simplices. The set of simplices 
+        forms the Delaunay triangulation. X is an m-by-n array representing m 
+        points in n-dimensional space. T is a numt-by-(n+1) array where each 
+        row contains the indices into X of the vertices of the corresponding 
+        simplex.
+
+        T = delaunayn(X)
+
+        # Specifies a cell array of options. The default options are:
+        - {'Qt','Qbb','Qc'} for 2- and 3-dimensional input
+        - {'Qt','Qbb','Qc','Qx'} for 4 and higher-dimensional input
+        If options is [], the default options used. If options is {''}, no options are used, not even the default.
+
+        T = delaunayn(X, options)
+
+    Sources:
+    - https://www.mathworks.com/help/matlab/ref/delaunayn.html
+    - https://stackoverflow.com/questions/36604172/difference-between-matlab-delaunayn-and-scipy-delaunay
+    """
+
+    # Get dimensions of points
+    ndims = X.shape[1]
+
+    # Set up default options
+    if options == []:
+        options = 'Qt Qbb Qc' if ndims <= 3 else 'Qt Qbb Qc Qx'
+
+    # Triangulate
+    triangles = Delaunay(X, qhull_options=options).simplices
+
+    # Strip the zero area/volume simplices that may have been created in the 
+    # presence of degeneracy.
+    keep = np.ones((len(triangles), ), dtype=bool)
+
+    for i, t in enumerate(triangles):
+        if abs(np.linalg.det(np.hstack((X[t], np.ones([1, ndims + 1]).T)))) < 1e-15:
+            keep[i] = False
+
+    triangles = triangles[keep].astype(int) # NOTE: Need to covert to array of int so that it can be fetched properly by core
+
+    return triangles
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/find_point.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/find_point.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/find_point.m	(revision 27955)
@@ -0,0 +1,14 @@
+function f=find_point(tabx,taby,pointx,pointy)
+%FIND_POINT - find closest point
+%
+%   find which point of the list (tabx,taby) is the closest to (pointx,pointy)
+%
+%   Usage:
+%      f=find_point(tabx,taby,pointx,pointy)
+
+%Compute distance between point and cloud of points
+distance=sqrt((tabx-pointx).^2+(taby-pointy).^2);
+
+%find index of the minimum distance and return the first one only
+%f=find(distance==min(min(distance)),1);
+[~,f]=min(distance(:));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/find_point.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/find_point.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/find_point.py	(revision 27955)
@@ -0,0 +1,19 @@
+import numpy as np
+
+
+def find_point(tabx, taby, pointx, pointy):
+    """FIND_POINT - find closest point
+
+    Find which point of the list (tabx, taby) is the closest to (pointx, pointy)
+
+    Usage:
+        f = find_point(tabx, taby, pointx, pointy)
+    """
+
+    # Compute distance between point and cloud of points
+    distance = ((tabx - pointx) ** 2 + (taby - pointy) ** 2) ** 0.5 # NOTE: math.sqrt cannot be applied element-wise to a list/numpy.array
+
+    # Find index of the minimum distance and return the first one only
+    f = np.where(distance == np.min(distance))[0][0] # NOTE: numpy.where returns a tuple whose first element is a list, and we want the first element of that list
+
+    return f
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/inpolygon.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/inpolygon.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/inpolygon.py	(revision 27955)
@@ -0,0 +1,27 @@
+import matplotlib.path as path
+import numpy as np
+
+def inpolygon(xq, yq, xv, yv):  # {{{
+    """
+    INPOLYGON - Returns points located inside polygonal region.
+
+    Partial implementation of MATLAB's inpolygon function. Returns in 
+    indicating if the query points specified by xq and yq are inside or on the 
+    edge of the polygon area defined by xv and yv.
+
+    Usage:
+        in_polygon = inpolygon(xq, yq, xv, yv)
+
+    Sources:
+    - https://www.mathworks.com/help/matlab/ref/inpolygon.html
+    - https://stackoverflow.com/questions/31542843/inpolygon-for-python-examples-of-matplotlib-path-path-contains-points-method/31543337#31543337
+    """
+
+    points = np.array((xq, yq)).T
+    vertices = np.array((xv, yv)).T
+    polygon = path.Path(vertices)
+    in_polygon = polygon.contains_points(points)
+    in_polygon = in_polygon.astype(int) # Convert from bool to int
+
+    return in_polygon
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/isconnected.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/isconnected.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/isconnected.m	(revision 27955)
@@ -0,0 +1,13 @@
+function flag=isconnected(elements,A,B)
+%ISCONNECTED: are two nodes connected by a triangulation?
+%
+%   Usage: flag=isconnected(elements,A,B)
+%
+%
+
+elements=ElementsFromEdge(elements,A,B);
+if isempty(elements),
+	flag=0;
+else
+	flag=1;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/locationtonode.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/locationtonode.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/locationtonode.m	(revision 27955)
@@ -0,0 +1,26 @@
+function nodes=locationtonode(md,location,varargin)
+%LOCATIONTONODE - find, given a string location (ex: 'LA', 'new york', the nearest node on a mesh3dsurface.
+%
+%   Usage:
+%      node=locationnode(md,'LA');
+%      nodes=locationnode(md,'LA',100); %option, specify a distance (km) around the location that will return nodes
+%
+%   See also: geoCode (in externalpackages), find_point
+
+	if nargin==3,
+		radius=varargin{1};
+	else
+		radius=0;
+	end
+
+	coords=geoCode(location,'osm');  
+	latny=coords(1); longny=coords(2);
+	node=find_point(md.mesh.lat,md.mesh.long,latny,longny);
+
+	if radius>0,
+		distance=sqrt( (md.mesh.x-md.mesh.x(node)).^2 + (md.mesh.y-md.mesh.y(node)).^2 + (md.mesh.z-md.mesh.z(node)).^2);
+		nodes=find(distance<radius*1000);
+	else
+		nodes=node;
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/planetradius.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/planetradius.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/planetradius.js	(revision 27955)
@@ -0,0 +1,20 @@
+function planetradius(planet) {//{{{
+	/**
+	 * PLANETRADIUS - return planet radius according to planetary body name
+	 *
+	 * Usage:
+	 *     radius = planetradius(planet);
+	 *
+	 * Examples:
+	 * earthradius = planetradius('earth');
+	 */
+
+	let radius = 0;
+	if (planet === 'earth') {
+		radius = 6.371012e6;
+	} else if (planet === 'europa') {
+		radius = 1.5008e6;
+	} else {
+		error('planet type ' + planet + ' not supported yet!');
+	}
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/planetradius.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/planetradius.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/planetradius.m	(revision 27955)
@@ -0,0 +1,16 @@
+function radius=planetradius(planet)
+%PLANETRADIUS - return planet radius according to planetary body name.
+%
+%   Usage:
+%      radius=planetradius(planet);
+%
+%   Examples:
+%      earthradius=planetradius('earth');
+
+if strcmpi(planet,'earth'),
+	radius=6.371012*10^6;
+elseif strcmpi(planet,'europa'),
+	radius=1.5008*10^6;
+else 
+	error(['planet type ' planet ' not supported yet!']);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/planetradius.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/planetradius.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/planetradius.py	(revision 27955)
@@ -0,0 +1,20 @@
+def planetradius(planet):  # {{{
+    '''
+    PLANETRADIUS - return planet radius according to planetary body name
+
+        Usage:
+            radius = planetradius(planet)
+
+        Examples:
+            earthradius = planetradius('earth')
+    '''
+
+    if planet == 'earth':
+        radius = 6.371012e6
+    elif planet == 'europa':
+        radius = 1.5008e6
+    else:
+        raise TypeError("planet type %s not supported yet!" % planet)
+
+    return radius
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/polyarea.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/polyarea.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/polyarea.py	(revision 27955)
@@ -0,0 +1,28 @@
+import math
+
+import numpy as np
+
+
+def polyarea(x, y):  # {{{
+    """POLYAREA - returns the area of the 2-D polygon defined by the vertices in 
+    lists x and y
+    
+    Partial implementation of MATLAB's polyarea function. If x and y are 
+    lists of the same length, then polyarea returns the scalar area of the 
+    polygon defined by x and y.
+
+    Usage:
+        a = polyarea(x, y)
+
+    Sources:
+    - https://www.mathworks.com/help/matlab/ref/polyarea.html
+    - https://stackoverflow.com/questions/24467972/calculate-area-of-polygon-given-x-y-coordinates
+    - https://en.wikipedia.org/wiki/Shoelace_formula
+
+    TODO:
+    - Test that output falls within some tolerance of MATLAB's polyarea 
+    function.
+    """
+
+    return 0.5 * np.abs(np.dot(x, np.roll(y, 1)) - np.dot(y, np.roll(x, 1)))
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/slope.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/slope.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/slope.m	(revision 27955)
@@ -0,0 +1,36 @@
+function [sx,sy,s]=slope(md,surf)
+%SLOPE - compute the surface slope
+%
+%   Usage:
+%      [sx,sy,s]=slope(md)
+%      [sx,sy,s]=slope(md,md.results.TransientSolution(1).Surface)
+
+%load some variables (it is much faster if the variab;es are loaded from md once for all) 
+if dimension(md.mesh)==2,
+	numberofelements=md.mesh.numberofelements;
+	numberofnodes=md.mesh.numberofvertices;
+	index=md.mesh.elements;
+	x=md.mesh.x; y=md.mesh.y;
+else
+	numberofelements=md.mesh.numberofelements2d;
+	numberofnodes=md.mesh.numberofvertices2d;
+	index=md.mesh.elements2d;
+	x=md.mesh.x2d; y=md.mesh.y2d;
+end
+
+if nargin==1,
+	surf=md.geometry.surface;
+end
+%compute nodal functions coefficients N(x,y)=alpha x + beta y + gamma
+[alpha beta]=GetNodalFunctionsCoeff(index,x,y);
+
+summation=[1;1;1];
+sx=(surf(index).*alpha)*summation;
+sy=(surf(index).*beta)*summation;
+s=sqrt(sx.^2+sy.^2);
+
+if dimension(md.mesh)==3,
+	sx=project3d(md,'vector',sx,'type','element');
+	sy=project3d(md,'vector',sy,'type','element');
+	s=sqrt(sx.^2+sy.^2);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/geometry/slope.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/geometry/slope.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/geometry/slope.py	(revision 27955)
@@ -0,0 +1,46 @@
+import numpy as np
+from GetNodalFunctionsCoeff import GetNodalFunctionsCoeff
+from project3d import project3d
+
+
+def slope(md, *args):
+    """
+    SLOPE - compute the surface slope
+
+    Usage:
+            sx, sy, s = slope(md)
+            sx, sy, s = slope(md, md.results.TransientSolution(1).Surface)
+    """
+
+    #load some variables (it is much faster if the variables are loaded from md once for all)
+    if md.mesh.dimension() == 2:
+        index = md.mesh.elements
+        x = md.mesh.x
+        y = md.mesh.y
+    else:
+        index = md.mesh.elements2d
+        x = md.mesh.x2d
+        y = md.mesh.y2d
+
+    if len(args) == 0:
+        surf = md.geometry.surface
+    elif len(args) == 1:
+        surf = args[0]
+    else:
+        raise RuntimeError("slope.py usage error")
+
+    #%compute nodal functions coefficients N(x, y)=alpha x + beta y + gamma
+    alpha, beta = GetNodalFunctionsCoeff(index, x, y)[0:2]
+
+    summation = np.array([[1], [1], [1]])
+    sx = np.dot(surf[index - 1] * alpha, summation).reshape(-1, )
+    sy = np.dot(surf[index - 1] * beta, summation).reshape(-1, )
+
+    s = np.sqrt(sx**2 + sy**2)
+
+    if md.mesh.dimension() == 3:
+        sx = project3d(md, 'vector', sx, 'type', 'element')
+        sy = project3d(md, 'vector', sy, 'type', 'element')
+        s = np.sqrt(sx**2 + sy**2)
+
+    return (sx, sy, s)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/interp/InterpFromFile.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/interp/InterpFromFile.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/interp/InterpFromFile.m	(revision 27955)
@@ -0,0 +1,203 @@
+function data_out=InterpFromFile(x,y,filename,default_value)
+%INTERPFROMFILE - load data and interpolate on the given nodes
+%
+%   load a matlab file (extension .mat) which holds 3 or 4 variables
+%   and interpolate the data on the mesh and plug it onto the model.
+%
+%   o 3 variables
+%     - a vector x (if the name of the variable do not begin with "x", an error can appear)
+%     - a vector y (if the name of the variable do not begin with "y", an error can appear)
+%     - a vector or matrix data (if the name of the variable do not begin with the field name, an error can appear)
+%   o 4 variables
+%     - a vector x (if the name of the variable do not begin with "x", an error can appear)
+%     - a vector y (if the name of the variable do not begin with "y", an error can appear)
+%     - a matrix with 3 columns (if the name of the variable do not begin with "index" or "elements", an error can appear)
+%     - a vector data (if the name of the variable do not begin with the field name, an error can appear)
+%
+%   Usage:
+%      data=InterpFromFile(x,y,filename,default_value);
+%
+%   Example:
+%      md.geometry.surface=InterpFromFile(md.mesh.x,md.mesh.y,'surfacefile.mat',0);
+%
+%   See also: PLUGVELOCITIES, INTERPFROMGRID, INTERPFROMMESH2D, INTERPFROMMESH3D
+
+%some checks
+if nargin~=4 | nargout~=1
+	help InterpFromFile
+	error('plugdata error message: bad usage');
+end
+if ~exist(filename)
+	error(['plugdata error message: file ' filename  ' does not exist']);
+end
+if length(x)~=length(y),
+	error('plugdata error message: x and y should have the same length');
+end
+
+%load file
+Names=FieldFindVarNames(filename);
+Data=load(filename);
+disp('WARNING: function deprecated, replace InterpFromFile by the following command:');
+if strcmpi(Names.interp,'node'),
+	disp(['   data=InterpFromGridToMesh(' Names.xname ',' Names.yname ',' Names.dataname ',x,y,default_value);']);
+	data_out=InterpFromGridToMesh(Data.(Names.xname),Data.(Names.yname),Data.(Names.dataname),x,y,default_value);
+else
+	disp(['   data=InterpFromMeshToMesh2d(' Names.indexname ',' Names.xname ',' Names.yname ',' Names.dataname ',x,y);']);
+	data_out=InterpFromMeshToMesh2d(Data.(Names.indexname),Data.(Names.xname),Data.(Names.yname),Data.(Names.dataname),x,y);
+end
+
+end
+function Names=FieldFindVarNames(filename)
+%FIELDFINDVARNAMES - find names of variables in a data set file
+%
+%   This routines looks at the variables contained in a file and finds out
+%   the names of the variables that are needed for an interpolation (x,y,data)
+%   or (index,x,y,data)
+%
+%   Usage:
+%      Names=FieldFindVarNames(filename)
+%
+%   Example:
+%      Names=FieldFindVarNames('thickness.mat')
+%
+%   See also: INTERPFROMFILE, GRIDDATA
+
+%some checks
+if nargin~=1 | nargout~=1
+	help FieldFindVarNames
+	error('FieldFindVarNames error message: bad usage');
+end
+if ~exist(filename)
+	error(['FieldFindVarNames error message: file ' filename  ' does not exist']);
+end
+
+%Get variables
+A=whos('-file',filename);
+
+%find x,y,vx and vy
+xenum=NaN; yenum=NaN; dataenum=NaN; indexenum=NaN;
+if length(A)==3,
+	isnode=1;
+	for i=1:3
+		if strcmpi(A(i).name(1),'x');
+			xenum=i;
+		elseif strcmpi(A(i).name(1),'y');
+			yenum=i;
+		elseif (strncmpi(A(i).name,filename,3) | strncmpi(A(i).name,'data',4)),
+			dataenum=i;
+		else
+			%nothing
+		end
+	end
+elseif length(A)==4,
+	isnode=0;
+	for i=1:4
+		if strcmpi(A(i).name(1),'x');
+			xenum=i;
+		elseif strcmpi(A(i).name(1),'y');
+			yenum=i;
+		elseif (strncmpi(A(i).name,'index',5) | strncmpi(A(i).name,'elements',7));
+			indexenum=i;
+		elseif (strncmpi(A(i).name,filename,3) | strncmpi(A(i).name,'data',4)),
+			dataenum=i;
+		else
+			%nothing
+		end
+	end
+else
+	error(['FieldFindVarNames error message: file ' filename  ' not supported yet (it should hold 3 variables x,y and data (for nodes) OR 4 variables  x,y,index and data (for mesh))']);
+end
+
+%2: if only one item is missing, find it by elimination
+if ~isnode,
+	pos=find(isnan([xenum yenum indexenum dataenum]));
+	if length(pos)==1,
+		list=[xenum yenum indexenum dataenum]; list(pos)=[];
+		if pos==1,
+			xenum=setdiff(1:4,list);
+		elseif pos==2,
+			yenum=setdiff(1:4,list);
+		elseif pos==3,
+			indexenum=setdiff(1:4,list);
+		elseif pos==4,
+			dataenum=setdiff(1:4,list);
+		end
+	end
+else
+	pos=find(isnan([xenum yenum dataenum]));
+	if length(pos)==1,
+		list=[xenum yenum indexenum dataenum]; list(pos)=[];
+		if pos==1,
+			xenum=setdiff(1:3,list);
+		elseif pos==2,
+			yenum=setdiff(1:3,list);
+		elseif pos==3,
+			dataenum=setdiff(1:3,list);
+		end
+	end
+end
+
+%assum that we have found at least xenum and yenum
+if ( isnan(xenum) | isnan(yenum))
+	error(['FieldFindVarNames error message: file ' filename  ' not supported yet (the coordinates vectors should be named x and y)']);
+end
+
+%find index
+if (~isnode & isnan(indexenum)),
+	for i=1:4
+		lengthi=min(A(i).size);
+		if (lengthi==3),
+			indexenum=i;
+		end
+	end
+	if isnan(indexenum),
+		error(['FieldFindVarNames error message: file ' filename  ' not supported yet (index not found)']);
+	end
+end
+
+%4: last chance
+if ~isnode,
+	pos=find(isnan([xenum yenum indexenum dataenum]));
+	if length(pos)==1,
+		list=[xenum yenum indexenum dataenum]; list(pos)=[];
+		if pos==1,
+			xenum=setdiff(1:4,list);
+		elseif pos==2,
+			yenum=setdiff(1:4,list);
+		elseif pos==3,
+			indexenum=setdiff(1:4,list);
+		elseif pos==4,
+			dataenum=setdiff(1:4,list);
+		end
+	end
+else
+	pos=find(isnan([xenum yenum dataenum]));
+	if length(pos)==1,
+		list=[xenum yenum indexenum dataenum]; list(pos)=[];
+		if pos==1,
+			xenum=setdiff(1:3,list);
+		elseif pos==2,
+			yenum=setdiff(1:3,list);
+		elseif pos==3,
+			dataenum=setdiff(1:3,list);
+		end
+	end
+end
+
+%last check
+if isnan(dataenum)
+	error(['FieldFindVarNames error message: file ' filename  ' not supported yet (data not found)']);
+end
+
+%create output
+Names=struct();
+Names.xname=A(xenum).name;
+Names.yname=A(yenum).name;
+Names.dataname=A(dataenum).name;
+if ~isnode,
+	Names.indexname=A(indexenum).name; 
+	Names.interp='mesh';
+else
+	Names.interp='node';
+end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/interp/InterpFromModel3dToMesh2d.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/interp/InterpFromModel3dToMesh2d.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/interp/InterpFromModel3dToMesh2d.m	(revision 27955)
@@ -0,0 +1,74 @@
+function data_prime = InterpFromModel3dToMesh2d(md,data,x_prime,y_prime,sigma,default_value);
+%INTERPFROMMODEL3DTOMESH2D - Interpolation from a 3d hexahedron mesh onto a list of 2d points
+%
+%   Usage:
+%      md:  3d model holding the data to be interpolated onto the 2d mesh
+%      data:	matrix holding the data to be interpolated onto the 2d mesh
+%      x_prime,y_prime:	coordinates of the points onto which we interpolate
+%      sigma:  scaled vertical coordinates from which the data will be interpolated (from base=0; from surface=1, NaN=vertical average of data)
+%      default_value:	default value if no data is found (holes)
+%      data_prime:	vector of mesh interpolated data
+%
+%   Example:
+%      load('temperature.mat');
+%
+%      % interpolating the temperature from the base of a 3d model:
+%      md.initialization.temperature=InterpFromModel3dToMesh2d(md3d,temperature,md.mesh.x,md.mesh.y,0,253);
+%
+%      % interpolating the temperature from the surface of a 3d model:
+%      md.initialization.temperature=InterpFromModel3dToMesh2d(md3d,temperature,md.mesh.x,md.mesh.y,1,253);
+%
+%      % averaging the temperature over the vertical layers and then interpolating onto the 2d mesh:
+%      md.initialization.temperature=InterpFromModel3dToMesh2d(md3d,temperature,md.mesh.x,md.mesh.y,NaN,253);
+
+% Check usage
+if nargin~=6
+	help InterpFromModel3dToMesh2d
+	error('Wrong usage (see above)');
+end
+
+if dimension(md.mesh)~=3
+	error('Model should be 3d');
+end
+
+if (length(data)~=md.mesh.numberofelements & length(data)~=md.mesh.numberofvertices),
+   error('Data not supported yet');
+end
+
+if sigma<0 | sigma>1
+	help InterpFromModel3dToMesh2d
+	error('Wrong value for sigma. It should be between 0 and 1, or NaN (see above)');
+end
+
+if length(x_prime)~=length(y_prime)
+	error('x and y should have the same size')
+end
+
+% First, check if a vertical average should be performed. If yes, perform a interpolation from a 2d mesh  
+if isnan(sigma),
+	% average data and then interpolate onto the 2d mesh
+	averaged_data = DepthAverage(md,data);
+	data_prime = InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,averaged_data,x_prime,y_prime,'default',default_value);
+else
+	% Ok, perform an interpolation from a 3d mesh into a 2d mesh 
+	% Scaling the z coordinate (3d mesh)
+	alpha = (md.mesh.z-md.geometry.base)./md.geometry.thickness;
+
+	if  alpha<0 | alpha>1
+		error('Wrong value for alpha. Check the geometry of your model');
+	end
+
+	% Building the z coordinate for the 2d mesh
+	z_prime = sigma*ones(size(x_prime));
+
+	% Adjusting such that the 2d mesh is inside the 3d mesh
+	if sigma==0,
+		z_prime = z_prime+eps;
+	elseif sigma==1,
+		z_prime = z_prime-eps;
+	end
+
+	% Now, call the 3d interpolation
+	data_prime = InterpFromMeshToMesh3d(md.mesh.elements,md.mesh.x,md.mesh.y,alpha,data,x_prime,y_prime,z_prime,default_value);
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/interp/InterpFromModelToModel3d.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/interp/InterpFromModelToModel3d.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/interp/InterpFromModelToModel3d.m	(revision 27955)
@@ -0,0 +1,42 @@
+function data_prime = InterpFromModelToModel3d(md1,data,md2,default_value);
+%INTERPFROMMODELTOMODEL3D - Interpolation from a 3d hexahedron mesh onto another 3d hexahedron mesh
+%
+%   Usage:
+%      md1:  3d model holding the data to be interpolated onto another 3d model
+%      data:  matrix holding the data to be interpolated onto another 3d mesh
+%      md2:  3d model for which the data will be interpolated
+%      default_value:  default value if no data is found (holes)
+%      data_prime:  vector of 3d mesh interpolated data
+%
+%   Example:
+%
+%      % interpolating the temperature from 3d mesh model:
+%      md2.initialization.temperature = InterpFromModelToModel3d(md1,md1.results.ThermalSolution.Temperature,md2,253);
+%
+
+% Check usage
+if nargin~=4
+   help InterpFromModelToModel3d
+   error('Wrong usage (see above)');
+end
+
+if (length(data)~=md1.mesh.numberofelements & length(data)~=md1.mesh.numberofvertices),
+   error('Data not supported yet');
+end
+
+if (dimension(md1.mesh)~=3 | dimension(md2.mesh)~=3)
+      error('Both models should be 3d');
+end
+
+% Scaling the vertical coordinates:
+sigma1 = (md1.mesh.z-md1.geometry.base)./md1.geometry.thickness;
+sigma2 = (md2.mesh.z-md2.geometry.base)./md2.geometry.thickness;
+
+% Adjusting sigma2 such that mesh 2 is inside mesh 1
+pos = find(sigma2==0);
+sigma2(pos) = sigma2(pos)+eps; 
+pos = find(sigma2==1);
+sigma2(pos) = sigma2(pos)-eps;
+
+% Now, perform the interpolation
+data_prime = InterpFromMeshToMesh3d(md1.mesh.elements,md1.mesh.x,md1.mesh.y,sigma1,data,md2.mesh.x,md2.mesh.y,sigma2,default_value); 
Index: /issm/branches/trunk-dlcheng-ASE/src/m/interp/PointValues.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/interp/PointValues.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/interp/PointValues.m	(revision 27955)
@@ -0,0 +1,14 @@
+function [data_interp]=PointValues(md,data,xpoint,ypoint)
+%POINTVALUES - compute the value of a field on a single point
+%
+%   This routine gets the value of a given field of the model on points
+%
+%   Usage:
+%      [z,data]=PointValues(md,data,X,Y,Z)
+
+%Get bed and surface for each 2d point, offset to make sure that it is inside the glacier system
+%offset=10^-3;
+%bed=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.bed,1),xpoint,ypoint)+offset;
+%surface=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.surface,1),xpoint,ypoint)-offset;
+
+data_interp=InterpFromMeshToMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,data,xpoint,ypoint);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/interp/ProfileValues.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/interp/ProfileValues.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/interp/ProfileValues.m	(revision 27955)
@@ -0,0 +1,20 @@
+function [Z,data_interp]=ProfileValues(md,data,xprof,yprof,resolution)
+%PROFILEVALUES - compute the value of a field on a vertical profile
+%
+%   This routine gets the value of a given field of the model on 
+%   a point given by its coordinates
+%
+%   Usage:
+%      [z,data]=ProfileValues(md,data,xcoord,ycoord,resolution)
+
+%Get bed and surface for each 2d point, offset to make sure that it is inside the glacier system
+offset=10^-3;
+bed=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.base,1),xprof,yprof)+offset;
+surface=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.surface,1),xprof,yprof)-offset;
+
+%Some useful parameters
+layers=ceil(mean(md.geometry.thickness)/resolution);
+Z=(bed:resolution:surface)';
+X=xprof*ones(size(Z));
+Y=yprof*ones(size(Z));
+data_interp=InterpFromMeshToMesh3d(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z,data,X,Y,Z,NaN);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/interp/SectionValues.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/interp/SectionValues.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/interp/SectionValues.m	(revision 27955)
@@ -0,0 +1,126 @@
+function [index,X,Y,Z,S,data_interp]=SectionValues(md,data,infile,resolution)
+%SECTIONVALUES - compute the value of a field on a section
+%
+%   This routine gets the value of a given field of the model on points
+%   given by filname (Argus type file)
+%
+%   Usage:
+%      [elements,x,y,z,s,data]=SectionValues(md,data,filename,resolution)
+%      [elements,x,y,z,s,data]=SectionValues(md,data,profile_structure,resolution)
+
+%check what we have for profile as input
+if ischar(infile),
+	%read infile:
+	profile=expread(infile);
+	nods=profile.nods;
+	x=profile.x;
+	y=profile.y;
+else
+	%read infile:
+	nods=infile.nods;
+	x=infile.x;
+	y=infile.y;
+end
+
+%get the specified resolution
+if isnumeric(resolution(1))
+	res_h=resolution(1);
+else
+	error('SectionValues error message: wrong resolution type. Resolution must be an array [horizontal_resolution vertical_resolution]')
+end
+if dimension(md.mesh)==3
+	if (length(resolution)==2 & isnumeric(resolution(2)))
+		res_v=resolution(2);
+	else
+		error('SectionValues error message: wrong resolution type. Resolution must be an array [horizontal_resolution vertical_resolution]')
+	end
+end
+
+%initialization
+X=[]; %X-coordinate
+Y=[]; %Y-coordinate
+S=0;  %curvilinear coordinate
+
+for i=1:nods-1
+
+	x_start=x(i);
+	x_end=x(i+1);
+	y_start=y(i);
+	y_end=y(i+1);
+	s_start=S(end);
+
+	length_segment=sqrt((x_end-x_start)^2+(y_end-y_start)^2);
+	portion=ceil(length_segment/res_h);
+
+	x_segment=zeros(portion,1);
+	y_segment=zeros(portion,1);
+	s_segment=zeros(portion,1);
+
+	for j=1:portion
+		x_segment(j)=x_start+(j-1)*(x_end-x_start)/portion;
+		y_segment(j)=y_start+(j-1)*(y_end-y_start)/portion;
+		s_segment(j)=s_start+j*length_segment/portion;
+	end
+
+	%plug into X and Y
+	X=[X;x_segment];
+	Y=[Y;y_segment];
+	S=[S;s_segment];
+end
+X(end+1)=x(nods);
+Y(end+1)=y(nods);
+
+%Number of nodes:
+numberofnodes=size(X,1);
+
+%Compute Z
+Z=zeros(numberofnodes,1);
+
+%New mesh and Data interpolation
+if (dimension(md.mesh)==2)
+
+	%Interpolation of data on specified points
+	data_interp=InterpFromMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,data,X,Y);
+	%data_interp=InterpFromMeshToMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,data,X,Y);
+	%data_interp=griddata(md.mesh.x,md.mesh.y,data,X,Y);
+
+	%Compute index
+	index=[1:1:(numberofnodes-1);2:1:numberofnodes]';
+
+else
+
+	%vertically extrude mesh
+
+	%Get base and surface for each 2d point, offset to make sure that it is inside the glacier system
+	offset=10^-3;
+	base=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.base,1),X,Y)+offset;
+	surface=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.surface,1),X,Y)-offset;
+
+	%Some useful parameters
+	layers=ceil(mean(md.geometry.thickness)/res_v);
+	nodesperlayer=numberofnodes;
+	nodestot=nodesperlayer*layers;
+	elementsperlayer=nodesperlayer-1;
+	elementstot=(nodesperlayer-1)*(layers-1);
+
+	%initialization
+	X3=zeros(nodesperlayer*layers,1); Y3=zeros(nodesperlayer*layers,1); Z3=zeros(nodesperlayer*layers,1); S3=zeros(nodesperlayer*layers,1); index3=zeros(elementstot,4);
+
+	%Get new coordinates in 3d
+	for i=1:layers
+		X3(i:layers:end)=X;
+		Y3(i:layers:end)=Y;
+		Z3(i:layers:end)=base+(i-1)*(surface-base)/(layers-1);
+		S3(i:layers:end)=S;
+
+		if i<layers %Build index3 with quads
+			index3((i-1)*elementsperlayer+1:i*elementsperlayer,:)=[i:layers:nodestot-layers; i+1:layers:nodestot-layers; i+layers+1:layers:nodestot; i+layers:layers:nodestot]';
+		end
+	end
+
+	%Interpolation of data on specified points
+	data_interp=InterpFromMeshToMesh3d(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z,data,X3,Y3,Z3,NaN);
+
+	%build outputs
+	X=X3; Y=Y3; Z=Z3;  S=S3; index=index3;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/interp/SectionValues.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/interp/SectionValues.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/interp/SectionValues.py	(revision 27955)
@@ -0,0 +1,139 @@
+import os
+
+import numpy as np
+
+from expread import expread
+#from InterpFromMesh2d import InterpFromMesh2d
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from InterpFromMeshToMesh3d import InterpFromMeshToMesh3d
+from project2d import project2d
+
+
+def SectionValues(md, data, infile, resolution):
+    """SECTIONVALUES - compute the value of a field on a section
+
+    This routine gets the value of a given field of the model on points
+    given in the file infile (Argus type file). Resolution must be a list
+    [horizontal_resolution, vertical_resolution]
+
+    Usage:
+        [elements, x, y, z, s, data] = SectionValues(md, data, filename, resolution)
+        [elements, x, y, z, s, data] = SectionValues(md, data, profile_structure, resolution)
+    """
+
+    if os.path.isfile(infile):
+        profile = expread(infile)[0]
+        nods = profile['nods']
+        x = profile['x']
+        y = profile['y']
+    else:
+        raise IOError('file %s not found' % infile)
+
+    #get the specified resolution
+    if len(resolution) != 2:
+        raise ValueError('SectionValues error message: Resolution must be a list [horizontal_resolution, vertical_resolution]')
+    else:
+        res_h = resolution[0]
+
+    if md.mesh.domaintype().lower() == '3d':
+        if isinstance(resolution[1], int) or isinstance(resolution[1], float):
+            res_v = resolution[1]
+        else:
+            raise ValueError('SectionValues error: resolution must be a length - 2 list of integers or floats')
+
+    #initialization
+    X = np.array([])  #X - coordinate
+    Y = np.array([])  #Y - coordinate
+    S = np.array([0.])  #curvilinear coordinate
+
+    for i in range(nods - 1):
+
+        x_start = x[i]
+        x_end = x[i + 1]
+        y_start = y[i]
+        y_end = y[i + 1]
+        s_start = S[-1]
+
+        length_segment = np.sqrt((x_end - x_start)**2 + (y_end - y_start)**2)
+        portion = int(np.ceil(length_segment / res_h))
+
+        x_segment = np.zeros(portion)
+        y_segment = np.zeros(portion)
+        s_segment = np.zeros(portion)
+
+        for j in range(int(portion)):
+            x_segment[j] = x_start + (j) * (x_end - x_start) / portion
+            y_segment[j] = y_start + (j) * (y_end - y_start) / portion
+            s_segment[j] = s_start + j * length_segment / portion
+
+    #plug into X and Y
+        X = np.append(X, x_segment)
+        Y = np.append(Y, y_segment)
+        S = np.append(S, s_segment)
+
+    X = np.append(X, x[nods - 1])
+    Y = np.append(Y, y[nods - 1])
+
+    #Number of nodes:
+    numberofnodes = X.shape[0]
+
+    #Compute Z
+    Z = np.zeros(numberofnodes)
+
+    #New mesh and Data interpolation
+    if '2d' in md.mesh.domaintype().lower():
+
+        #Interpolation of data on specified points
+        #data_interp = InterpFromMesh2d(md.mesh.elements, md.mesh.x, md.mesh.y, data, X, Y)
+        data_interp = InterpFromMeshToMesh2d(md.mesh.elements, md.mesh.x, md.mesh.y, data, X, Y)
+    #data_interp = griddata(md.mesh.x, md.mesh.y, data, X, Y)
+
+    #Compute index
+        index = np.array([list(range(1, numberofnodes)), list(range(2, numberofnodes + 1))]).T
+
+    else:
+        #vertically extrude mesh
+        #Get base and surface for each 2d point, offset to make sure that it is inside the glacier system
+        offset = 1.e-3
+        base = InterpFromMeshToMesh2d(md.mesh.elements2d, md.mesh.x2d, md.mesh.y2d, project2d(md, md.geometry.base, 1), X, Y) + offset
+        base = base.reshape(-1, )
+        surface = InterpFromMeshToMesh2d(md.mesh.elements2d, md.mesh.x2d, md.mesh.y2d, project2d(md, md.geometry.surface, 1), X, Y) - offset
+        surface = surface.reshape(-1, )
+
+    #Some useful parameters
+        layers = int(np.ceil(np.mean(md.geometry.thickness) / res_v))
+        nodesperlayer = int(numberofnodes)
+        nodestot = int(nodesperlayer * layers)
+        elementsperlayer = int(nodesperlayer - 1)
+        elementstot = int((nodesperlayer - 1) * (layers - 1))
+
+    #initialization
+        X3 = np.zeros(nodesperlayer * layers)
+        Y3 = np.zeros(nodesperlayer * layers)
+        Z3 = np.zeros(nodesperlayer * layers)
+        S3 = np.zeros(nodesperlayer * layers)
+        index3 = np.zeros((elementstot, 4))
+
+    #Get new coordinates in 3d
+        for i in range(1, layers + 1):
+            X3[i - 1::layers] = X
+            Y3[i - 1::layers] = Y
+            Z3[i - 1::layers] = base + (i - 1) * (surface - base) / (layers - 1)
+            S3[i - 1::layers] = S
+
+            if i < layers - 1:  #Build index3 with quads
+                ids = np.vstack((np.arange(i, nodestot - layers, layers), np.arange(i + 1, nodestot - layers, layers), np.arange(i + layers + 1, nodestot, layers), np.arange(i + layers, nodestot, layers))).T
+                index3[(i - 1) * elementsperlayer:i * elementsperlayer, :] = ids
+
+    #Interpolation of data on specified points
+        data_interp = InterpFromMeshToMesh3d(md.mesh.elements, md.mesh.x, md.mesh.y, md.mesh.z, data, X3, Y3, Z3, np.nan)
+
+    #build outputs
+        X = X3
+        Y = Y3
+        Z = Z3
+        S = S3
+
+        index = index3
+
+    return index, X, Y, Z, S, data_interp
Index: /issm/branches/trunk-dlcheng-ASE/src/m/interp/averaging.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/interp/averaging.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/interp/averaging.m	(revision 27955)
@@ -0,0 +1,94 @@
+function average=averaging(md,data,iterations,varargin)
+%AVERAGING - smooths the input over the mesh
+%
+%   This routine takes a list over the elements or the nodes in input
+%   and return a list over the nodes.
+%   For each iterations it computes the average over each element (average 
+%   of the vertices values) and then computes the average over each node
+%   by taking the average of the element around a node weighted by the
+%   elements volume
+%   For 3d mesh, a last argument can be added to specify the layer to be averaged on.
+%
+%   Usage:
+%      smoothdata=averaging(md,data,iterations)
+%      smoothdata=averaging(md,data,iterations,layer)
+%
+%   Examples:
+%      velsmoothed=averaging(md,md.initialization.vel,4);
+%      pressure=averaging(md,md.initialization.pressure,0);
+%      temperature=averaging(md,md.initialization.temperature,1,1);
+
+if ((nargin~=4) & (nargin~=3)),
+	error('averaging error message: wrong number of arguments');
+end
+if (length(data)~=md.mesh.numberofelements & length(data)~=md.mesh.numberofvertices),
+	error('averaging error message: data not supported yet');
+end
+if dimension(md.mesh)==3 & nargin==4,
+	if varargin{1}<=0 | varargin{1}>md.mesh.numberoflayers,
+		error('layer should be between 1 and md.mesh.numberoflayers');
+	end
+	layer=varargin{1};
+else
+	layer=0;
+end
+
+%initialization
+if layer==0,
+	weights=zeros(md.mesh.numberofvertices,1);
+	data=data(:);
+else 
+	weights=zeros(md.mesh.numberofvertices2d,1);
+	data=data((layer-1)*md.mesh.numberofvertices2d+1:layer*md.mesh.numberofvertices2d,:);
+end
+
+%load some variables (it is much faster if the variables are loaded from md once for all)
+if layer==0,
+	index=md.mesh.elements;
+	numberofnodes=md.mesh.numberofvertices;
+	numberofelements=md.mesh.numberofelements;
+else
+	index=md.mesh.elements2d;
+	numberofnodes=md.mesh.numberofvertices2d;
+	numberofelements=md.mesh.numberofelements2d;
+end
+
+%build some variables
+line=index(:);
+if dimension(md.mesh)==3 & layer==0,
+	rep=6;
+	areas=GetAreas(index,md.mesh.x,md.mesh.y,md.mesh.z);
+elseif dimension(md.mesh)==2,
+	rep=3;
+	areas=GetAreas(index,md.mesh.x,md.mesh.y);
+else
+	rep=3;
+	if isa(md.mesh,'mesh3dsurface'),
+		areas=GetAreas3DTria(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z);
+	else
+		areas=GetAreas(index,md.mesh.x,md.mesh.y);
+	end
+end
+summation=1/rep*ones(rep,1);
+linesize=rep*numberofelements;
+
+%update weights that hold the volume of all the element holding the node i
+weights=sparse(line,ones(linesize,1),repmat(areas,rep,1),numberofnodes,1);
+
+%initialization
+if length(data)==numberofelements
+	average_node=sparse(line,ones(linesize,1),repmat(areas.*data,rep,1),numberofnodes,1);
+	average_node=average_node./weights;
+else
+	average_node=data;
+end
+
+%loop over iteration
+for i=1:iterations
+	average_el=average_node(index)*summation;
+	average_node=sparse(line,ones(linesize,1),repmat(areas.*average_el,rep,1),numberofnodes,1);
+	average_node=average_node./weights;
+end
+
+%return output as a full matrix (C code does not like sparse matrices)
+average=full(average_node);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/interp/averaging.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/interp/averaging.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/interp/averaging.py	(revision 27955)
@@ -0,0 +1,95 @@
+import numpy as np
+try:
+    from scipy.sparse import csc_matrix
+except ImportError:
+    print("could not import scipy, no averaging capabilities enabled")
+
+from GetAreas import GetAreas
+
+
+def averaging(md, data, iterations, layer=0):
+    """AVERAGING - smooths the input over the mesh
+
+    This routine takes a list of the elements or the nodes in input and return 
+    a list over the nodes.
+    For each iterations it computes the average over each element (average of 
+    the vertices values) and then computes the average over each node by taking 
+    the average of the element around a node weighted by the elements volume.
+    For 3d mesh, a last argument can be added to specify the layer to be 
+    averaged on.
+
+    Usage:
+        smoothdata = averaging(md, data, iterations)
+        smoothdata = averaging(md, data, iterations, layer)
+
+    Examples:
+        velsmoothed = averaging(md, md.initialization.vel, 4)
+        pressure = averaging(md, md.initialization.pressure, 0)
+        temperature = averaging(md, md.initialization.temperature, 1, 1)
+    """
+
+    if (len(data) != md.mesh.numberofelements) & (len(data) != md.mesh.numberofvertices):
+        raise Exception('averaging error message: data not supported yet')
+    if (md.mesh.dimension() == 3) & (layer != 0):
+        if (layer <= 0) | (layer > md.mesh.numberoflayers):
+            raise ValueError('layer should be between 1 and md.mesh.numberoflayers')
+    else:
+        layer = 0
+
+    # Initialization
+    if layer == 0:
+        weights = np.zeros((md.mesh.numberofvertices, ))
+        data = np.asarray(data).flatten()
+    else:
+        weights = np.zeros((md.mesh.numberofvertices2d, ))
+        data = data[(layer - 1) * md.mesh.numberofvertices2d + 1:layer * md.mesh.numberofvertices2d - 1, :]
+
+    # Load some variables (it is much faster if the variables are loaded from md once for all)
+    if layer == 0:
+        index = md.mesh.elements
+        numberofnodes = md.mesh.numberofvertices
+        numberofelements = md.mesh.numberofelements
+    else:
+        index = md.mesh.elements2d
+        numberofnodes = md.mesh.numberofvertices2d
+        numberofelements = md.mesh.numberofelements2d
+
+    # Build some variables
+    if (md.mesh.dimension() == 3) & (layer == 0):
+        rep = 6
+        areas = GetAreas(index, md.mesh.x, md.mesh.y, md.mesh.z)
+    elif md.mesh.dimension() == 2:
+        rep = 3
+        areas = GetAreas(index, md.mesh.x, md.mesh.y)
+    else:
+        rep = 3
+        areas = GetAreas(index, md.mesh.x2d, md.mesh.y2d)
+
+    index = index - 1  # Python indexes from zero
+    line=index.T.flatten()
+    areas = np.vstack(areas).reshape(-1, )
+    summation = 1. / rep * np.ones((rep,1) )
+    linesize = rep * numberofelements
+
+    # Update weights that hold the volume of all the element holding the node i
+    weights = csc_matrix((np.tile(areas, (1, rep)).reshape(-1,), (line, np.zeros(linesize, ))), shape=(numberofnodes, 1))
+
+    # Initialization
+    if len(data) == numberofelements:
+        average_node = csc_matrix((np.tile(np.multiply(areas,data), (1, rep)).reshape(-1, ), (line, np.zeros(linesize, ))), shape=(numberofnodes, 1))
+        average_node = np.divide(average_node,weights)
+        average_node = csc_matrix(average_node)
+    else:
+        average_node = csc_matrix(data.reshape(-1, 1))
+
+    # Loop over iteration
+    for i in np.arange(1, iterations + 1):
+        average_el = np.asarray(average_node.todense()[index].reshape(numberofelements, rep)*summation).reshape(-1, )
+        average_node = csc_matrix((np.tile(np.multiply(areas,average_el.reshape(-1)), (1, rep)).reshape(-1, ), (line, np.zeros(linesize, ))), shape=(numberofnodes, 1))
+        average_node = np.divide(average_node,weights)
+        average_node = csc_matrix(average_node)
+
+    # Return output as a full matrix (C code does not like sparse matrices)
+    average = np.expand_dims(np.asarray(average_node.todense()).reshape(-1, ),axis=1)
+
+    return average
Index: /issm/branches/trunk-dlcheng-ASE/src/m/interp/holefiller.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/interp/holefiller.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/interp/holefiller.py	(revision 27955)
@@ -0,0 +1,47 @@
+import numpy as np
+from scipy.spatial import cKDTree
+
+
+def nearestneighbors(x, y, data, goodids, badids, knn):
+    '''
+    fill holes using nearest neigbors.  Arguments include:
+
+
+    x, y:        the coordinates of data to be filled
+    data:        the data field to be filled (full field, including holes)
+    goodids:    id's into the vertices that have good data
+    badids:    id's into the vertices with missing / bad data
+    knn:        integer representing the k nearest neighbors to use for filling
+                holes.  The average data value over the k nearest neighbors is
+                then used to fill the hole.
+
+    Usage:
+        filleddata = nearestneighbors(x, y, data, goodids, badids, knn)
+
+    Example:
+        filledthickness = nearestneighbors(x, y, data, goodids, badids, 5)
+    '''
+
+    if type(knn) != int or knn < 1:
+        raise TypeError('nearestneighbors error: knn should be an integer > 1')
+
+    if len(x) != len(data) or len(y) != len(data):
+        raise Exception('nearestneighbors error: x and y should have the same length as "data"')
+
+    filled = data
+
+    XYGood = np.dstack([x[goodids], y[goodids]])[0]
+    XYBad = np.dstack([x[badids], y[badids]])[0]
+    tree = cKDTree(XYGood)
+    nearest = tree.query(XYBad, k=knn)[1]
+
+    if knn == 1:
+        filled[badids] = filled[goodids][nearest]  # can add k = N to return the N nearest neighbors
+    else:
+        for i in range(len(badids)):
+            neardat = []
+            for j in range(knn):
+                neardat.append(filled[goodids][nearest[i][j]])
+                filled[badids[i]] = np.mean(neardat)
+
+    return filled
Index: /issm/branches/trunk-dlcheng-ASE/src/m/interp/interp.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/interp/interp.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/interp/interp.py	(revision 27955)
@@ -0,0 +1,249 @@
+# module for inperpolating / smoothing data
+import numpy as np
+from scipy.interpolate import CloughTocher2DInterpolator, Rbf
+from scipy.spatial import cKDTree
+try:
+    import matplotlib.pyplot as plt
+except ImportError:
+    print('could not import matplotlib, no plotting functions enabled. Set plotonly = False in function call')
+
+
+def MeshSplineToMesh2d(x, y, data, xi, yi, tol=1e-6, fill_nans=False, **kwargs):  #{{{
+    '''
+    Piecewise cubic, C1 smooth, curvature-minimizing interpolant in 2D.
+    The interpolant is guaranteed to be continuously differentiable,
+    and the gradients are chosen such that the curvature of the interpolant
+    is approximately minimized.
+
+    Uses scipy.interpolate.CloughTocher2DInterpolator
+
+    x, y:            data point coordinates
+    data:            data to be interpolated (same length as x, y)
+    xi, yi:        coordintes to interpolate data onto
+    tol:            tolerance for gradient estimation (default 1e-6)
+    fill_nans:    fill nan's (holes) in data using the spline fit?
+    **kwargs:    optional keywork arguments:
+                    maxiter: maximum iterations in gradient estimation
+
+    Returns interpolated data at given x, y coordinates.
+
+    Usage:
+        interpdata = CloughToucher2d(x, y, data)
+
+    Examples:
+        interpdata = CloughToucher2d(md.mesh.x, md.mesh.y, data)
+        interpdata = CloughToucher2d(md.mesh.x, md.mesh.y, data, tol = 1e-3, maxiter = 100)
+    '''
+
+    # unpack kwargs
+    maxiter = kwargs.pop('maxiter', None)
+    if 'maxiter' in kwargs:
+        del kwargs['maxiter']
+    if maxiter:
+        assert type(maxiter) == int, 'error, maxiter should be an integer'
+    assert len(kwargs) == 0, 'error, unexpected or misspelled kwargs'
+
+    # create sub - vectors that just cover the limits of xi and yi
+    # TODO x, y not necessarily a grid, so need a better definition of dx, dy (e.g. average element size)
+    dx = 500
+    dy = 500
+    #dx = x[1] - x[0]
+    #dy = y[1] - y[0]
+    xlim = [min(xi) - dx, max(xi) + dx]
+    ylim = [min(yi) - dy, max(yi) + dy]
+    xflag = np.logical_and(x > xlim[0], x < xlim[1])
+    yflag = np.logical_and(y > ylim[0], y < ylim[1])
+    bothind = np.squeeze(np.where(np.logical_and(xflag, yflag))).astype(int)
+    subdata = data[bothind]
+    subx = x[bothind]
+    suby = y[bothind]
+    points = np.array([subx, suby]).T
+
+    # mask out any nan's in the data and corresponding coordinate points
+    mask = np.isnan(subdata)
+    ind = np.nonzero(mask)[0]
+    if len(ind) and fill_nans:
+        print("        WARNING: filling nans using spline fit through good data points, which may or may not be appropriate. Check results carefully.")
+    subdata = np.delete(subdata, ind)
+    points = np.delete(points, ind, axis=0)
+
+    if maxiter:
+        spline = CloughTocher2DInterpolator(points, subdata, tol, maxiter=maxiter)
+    else:
+        spline = CloughTocher2DInterpolator(points, subdata, tol)
+
+    interpdata = spline(xi, yi)
+
+    if not fill_nans:
+        # identify nan's in xi, yi using nearest neighbors
+        xyinterp = np.dstack([xi, yi])[0]
+        xg, yg = np.meshgrid(subx, suby)
+        xydata = np.dstack([subx, suby])[0]
+        tree = cKDTree(xydata)
+        nearest = tree.query(xyinterp)[1]
+        pos = np.nonzero(np.isnan(subdata[nearest]))
+        interpdata[pos] = subdata[nearest][pos]
+
+    return interpdata
+    # }}}
+
+
+def GridSplineToMesh2d(x, y, data, xi, yi, default_value=np.nan, plotonly=False, fill_nans=False):  #{{{
+    '''
+    python analog to InterpFromGridToMesh.  This routine uses
+    scipy.interpolate.CloughTocher2dInterpolator to create a bivariate spline
+    interpolation of the input data and then return values of the spline
+    on the x, y coordinates of the model mesh.  The interpolant is piece-wise
+    cubic, C1 smooth (continuously differentiable) and has approximately
+    minimized curvature.  See "help(scipy.interpolate.CloughTocher2dInterpolator)"
+    for more information on the routine.
+
+    NOTE: this routine will not be appropriate if there are large holes (nan's) in
+    the input data.  A non - spline interpolation scheme should be used in that case.
+
+    x, y:                vectors defining the coordinates of the input data
+    data:                2D array of input data
+    xi, yi:            x and y coordinates to be interpolated onto
+    default_value:    default value if points lie outside the convex hull of input
+                        points (defaults to nan if not specified)
+    plotonly:        plot the data to be interpolated using imshow (useful for
+    fill_nans:        fill nan's (holes) in data using the spline fit?
+
+    Usage:
+        interpdata = GridToMesh(x, y, data, xi, yi, default_value = np.nan, plotonly = False, fill_nans = False)
+
+    Examples:
+        interpdata = GridToMesh(x_m, y_m, data, md.mesh.x, md.mesh.y, 0)
+    '''
+
+    if np.ndim(x) == 2:
+        x = x.reshape(-1, )
+    if np.ndim(y) == 2:
+        y = y.reshape(-1, )
+    if len(x) != data.shape[1] + 1 and len(x) != data.shape[1]:
+        raise ValueError('x should have same length as ncols(data) or ncols(data) + 1')
+    if len(y) != data.shape[0] + 1 and len(y) != data.shape[0]:
+        raise ValueError('y should have same length as nrows(data) or nrows(data) + 1')
+
+    # create sub - grid that just covers the limits of xi and yi
+    dx = x[1] - x[0]
+    dy = y[1] - y[0]
+    xlim = [min(xi) - dx, max(xi) + dx]
+    ylim = [min(yi) - dy, max(yi) + dy]
+
+    # TODO create grid differently depending on whether data is defined at x, y
+    # or at the center of a grid cell with corner coordinates defined by xi, yi
+    # create points array and flattened data array
+    if len(x) == data.shape[1] and len(y) == data.shape[0]:
+        print('        x, y taken to define the center of data grid cells')
+        xind = np.nonzero(np.logical_and(x > xlim[0], x < xlim[1]))[0]
+        yind = np.nonzero(np.logical_and(y > ylim[0], y < ylim[1]))[0]
+        xg, yg = np.meshgrid(x[xind], y[yind])
+        subdata = data[yind[0]:yind[-1] + 1, xind[0]:xind[-1] + 1]
+    elif len(x) == data.shape[1] + 1 and len(y) == data.shape[0] + 1:
+        print('        x, y taken to define the corners of data grid cells')
+        xcenter = np.fromiter(((x[i] + x[i + 1]) / 2 for i in range(len(x) - 1)), np.float)
+        ycenter = np.fromiter(((y[i] + y[i + 1]) / 2 for i in range(len(y) - 1)), np.float)
+        xind = np.nonzero(np.logical_and(xcenter > xlim[0], xcenter < xlim[1]))[0]
+        yind = np.nonzero(np.logical_and(ycenter > ylim[0], ycenter < ylim[1]))[0]
+        xg, yg = np.meshgrid(xcenter[xind], ycenter[yind])
+        subdata = data[yind[0]:yind[-1] + 1, xind[0]:xind[-1] + 1]
+    else:
+        raise ValueError('x and y have inconsistent sizes: both should have length ncols(data) / nrows(data) or ncols(data) + 1 / nrows(data) + 1')
+
+    points = np.array([xg.ravel(), yg.ravel()]).T
+    flatsubdata = subdata.ravel()
+
+    if plotonly:
+        plt.imshow(np.flipud(subdata), origin='upper')
+        plt.show()
+        return
+
+    # mask out any nan's in the data and corresponding coordinate points
+    mask = np.isnan(flatsubdata)
+    ind = np.nonzero(mask)[0]
+    if len(ind) and fill_nans:
+        print("        WARNING: filling nans using spline fit through good data points, which may or may not be appropriate. Check results carefully.")
+    goodsubdata = np.delete(flatsubdata, ind)
+    goodpoints = np.delete(points, ind, axis=0)
+
+    # create spline and index spline at mesh points
+    spline = CloughTocher2DInterpolator(goodpoints, goodsubdata)
+    interpdata = spline(xi, yi)
+
+    if not fill_nans:
+        # identify nan's in xi, yi using nearest neighbors
+        xyinterp = np.dstack([xi, yi])[0]
+        xydata = np.dstack([xg.ravel(), yg.ravel()])[0]
+        tree = cKDTree(xydata)
+        nearest = tree.query(xyinterp)[1]
+        pos = np.nonzero(np.isnan(flatsubdata[nearest]))
+        interpdata[pos] = flatsubdata[nearest][pos]
+
+    return interpdata
+    # }}}
+
+
+def RadialInterp(x, y, data, xi, yi, **kwargs):  #{{{
+    '''
+    Interpolation using a radial basis function in 2 or 3 dimensions.
+    Useful for smoothing input data after interpolation.
+
+    Uses scipy.interpolate.Rbf
+
+    x, y:            data point coordinates
+    data:            data to be interpolated (same length as x, y)
+    xi, yi:        coordinates to interpolate onto
+    function:    form of radial basis function for interpolation:
+                    'multiquadric': sqrt((r / self.epsilon)**2 + 1) (default)
+                    'inverse': 1.0 / sqrt((r / self.epsilon)**2 + 1)
+                    'gaussian': exp(-(r / self.epsilon)**2)
+                    'linear': r
+                    'cubic': r**3
+                    'quintic': r**5
+                    'thin_plate': r**2 * log(r)
+    epsilon:        adjustable constant for scaling radial distance.  Defaults to
+                    approximate average distance between nodes.
+    smooth:        float > 0, adjusts the amount of smoothing applied.  Defaults to 0,
+                    such that the function always passes through nodal points.
+    z:                coordinate array if interpolating in 3 dimensions
+    zi:            coordinate array if interpolating in 3 dimensions
+
+    Usage:
+        interpdata = RadialInterp(x, y, data,**kwargs)
+
+    Examples:
+        interpdata = RadialInterp(md.mesh.x, md.mesh.y, data)
+        interpdata = RadialInterp(md.mesh.x, md.mesh.y, data, function = 'gaussian', epsilon = 100, smooth = 1)
+    '''
+
+    # unpack kwargs
+    function = kwargs.pop('function', 'gaussian')
+    if 'function' in kwargs:
+        del kwargs['function']
+    epsilon = kwargs.pop('epsilon', None)
+    if 'epsilon' in kwargs:
+        del kwargs['epsilon']
+    smooth = kwargs.pop('smooth', 0)
+    if 'smooth' in kwargs:
+        del kwargs['smooth']
+    z = kwargs.pop('z', None)
+    if 'z' in kwargs:
+        del kwargs['z']
+    assert len(kwargs) == 0, 'error, unexpected or misspelled kwargs'
+
+    if z:
+        if epsilon:
+            rbfi = Rbf(x, y, z, data, function=function, smooth=smooth, epsilon=epsilon)
+        else:
+            rbfi = Rbf(x, y, z, data, function=function, smooth=smooth)
+        interpdata = rbfi(xi, yi, zi)
+    else:
+        if epsilon:
+            rbfi = Rbf(x, y, data, function=function, smooth=smooth, epsilon=epsilon)
+        else:
+            rbfi = Rbf(x, y, data, function=function, smooth=smooth)
+        interpdata = rbfi(xi, yi)
+
+    return interpdata
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/interp/plugvelocities.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/interp/plugvelocities.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/interp/plugvelocities.m	(revision 27955)
@@ -0,0 +1,167 @@
+function md=plugvelocities(md,filename,default_value)
+%PLUGVELOCITIES - load velocities on a model
+%
+%   load a matlab file (extension .mat) which holds 4 variables
+%   x,y,vx,vy to be plugged onto the model (or similar names)
+%   x and y must be vectors, vx, vy matrices
+%
+%   Usage:
+%      md=plugvelocities(md,filename,default_value)
+%
+%   Example:
+%      md=plugvelocities(md,'velocityfile.mat',0);
+%
+%   See also: INTERPFROMFILE, GRIDDATA
+
+disp('WARNING: deprecated functions (plugvelocities)');
+%some checks
+if nargin~=3 | nargout~=1
+	help plugvelocities
+	error('plugvelocities error message: bad usage');
+end
+if ~exist(filename)
+	error(['plugvelocities error message: file ' filename  ' does not exist']);
+end
+
+%load velocities 
+Names=VelFindVarNames(filename);
+Vel=load(filename);
+
+%Interpolation
+if strcmpi(Names.interp,'node'),
+	md.inversion.vx_obs=InterpFromGridToMesh(Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vxname),md.mesh.x,md.mesh.y,default_value);
+	md.inversion.vy_obs=InterpFromGridToMesh(Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vyname),md.mesh.x,md.mesh.y,default_value);
+else
+	md.inversion.vx_obs=InterpFromMeshToMesh2d(Vel.(Names.indexname),Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vxname),md.mesh.x,md.mesh.y,default_value);
+	md.inversion.vy_obs=InterpFromMeshToMesh2d(Vel.(Names.indexname),Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vyname),md.mesh.x,md.mesh.y,default_value);
+end
+
+md.inversion.vel_obs=sqrt(md.inversion.vx_obs.^2+md.inversion.vy_obs.^2);
+md.initialization.vx=md.inversion.vx_obs;
+md.initialization.vy=md.inversion.vy_obs;
+md.initialization.vel=md.inversion.vel_obs;
+end
+
+function Names=VelFindVarNames(filename)
+%VELFINDVARNAMES - find names of variables in a velocity data set file
+%
+%   This routines looks at the variables contained in a file and finds out
+%   the names of the variables that are needed for an interpolation (x,y,vx,vy)
+%   or (index,x,y,vx,vy)
+%
+%   Usage:
+%      Names=VelFindVarNames(filename)
+%
+%   Example:
+%      Names=VelFindVarNames('velocities.mat')
+%
+%   See also: INTERPFROMFILE, GRIDDATA
+
+%some checks
+if nargin~=1 | nargout~=1
+	help VelFindVarNames
+	error('VelFindVarNames error message: bad usage');
+end
+if ~exist(filename)
+	error(['VelFindVarNames error message: file ' filename  ' does not exist']);
+end
+
+%Get variables
+A=whos('-file',filename);
+
+%find x,y,vx and vy
+xenum=NaN; yenum=NaN; vxenum=NaN; vyenum=NaN; indexenum=NaN;
+if length(A)==4,
+	isnode=1;
+	for i=1:4
+		if strcmpi(A(i).name(1),'x');
+			xenum=i;
+		elseif strcmpi(A(i).name(1),'y');
+			yenum=i;
+		else
+			if (strcmpi(A(i).name(end),'x') | strncmpi(A(i).name,'vx',2));
+				vxenum=i;
+			elseif (strcmpi(A(i).name(end),'y') | strncmpi(A(i).name,'vy',2));
+				vyenum=i;
+			end
+		end
+	end
+elseif length(A)==5,
+	isnode=0;
+	for i=1:5
+		if strcmpi(A(i).name(1),'x');
+			xenum=i;
+		elseif strcmpi(A(i).name(1),'y');
+			yenum=i;
+		elseif (strcmpi(A(i).name(1),'index') | strcmpi(A(i).name(1),'elements'));
+			indexenum=i;
+		else
+			if (strcmpi(A(i).name(end),'x') | strncmpi(A(i).name,'vx',2));
+				vxenum=i;
+			elseif (strcmpi(A(i).name(end),'y') | strncmpi(A(i).name,'vy',2));
+				vyenum=i;
+			end
+		end
+	end
+else
+	error(['VelFindVarNames error message: file ' filename  ' not supported yet (it should hold 4 variables x,y,vx and vy (for nodes) OR 5 variables  x,y,index,vx and vy (for mesh))']);
+end
+
+%assum that we have found at least vxenum and vyenum
+if ( isnan(vxenum) | isnan(vyenum))
+	error(['VelFindVarNames error message: file ' filename  ' not supported yet (the velocities should be named vx and vy)']);
+end
+
+%find index
+if (~isnode & isnan(indexenum)),
+	for i=1:5
+		lengthi=min(A(i).size);
+		if (lengthi==3),
+			indexenum=i;
+		end
+	end
+	if isnan(indexenum),
+		error(['VelFindVarNames error message: file ' filename  ' not supported yet (index not found)']);
+	end
+end
+
+%find x y
+if (isnan(xenum) | isnan(yenum))
+
+	%check the size
+	if A(vxenum).size(1)==A(vxenum).size(2),
+		error(['VelFindVarNames error message: file ' filename  ' not supported (velocities is a square matrix, save x and y with another name)']);
+	end
+	if ~(A(vxenum).size(1)==A(vyenum).size(1) & A(vxenum).size(2)==A(vyenum).size(2)),
+		error(['VelFindVarNames error message: file ' filename  ' not supported (vx and vy matrices do not have the same size)']);
+	end
+
+	%find xenum and yenum
+	for i=1:4
+		lengthi=max(A(i).size);
+		if ((i~=vxenum) & (lengthi==A(vxenum).size(1) | lengthi==A(vxenum).size(1)+1)),
+			yenum=i;
+		elseif ((i~=vxenum) & (lengthi==A(vxenum).size(2) | lengthi==A(vxenum).size(2)+1)),
+			xenum=i;
+		end
+	end
+
+	%last check
+	if (isnan(xenum) | isnan(yenum))
+		error(['plugdata error message: file ' filename  ' not supported yet']);
+	end
+end
+
+%create output
+Names=struct();
+Names.xname=A(xenum).name;
+Names.yname=A(yenum).name;
+Names.vxname=A(vxenum).name;
+Names.vyname=A(vyenum).name;
+if ~isnode,
+	Names.indexname=A(indexenum).name; 
+	Names.interp='mesh';
+else
+	Names.interp='node';
+end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/inversions/marshallcostfunctions.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/inversions/marshallcostfunctions.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/inversions/marshallcostfunctions.js	(revision 27955)
@@ -0,0 +1,19 @@
+function  marshallcostfunctions(cost_functions){
+	for(var i=0;i<cost_functions.length;i++){
+		if(cost_functions[i]==101) data[i]='SurfaceAbsVelMisfit';
+		if(cost_functions[i]==102) data[i]='SurfaceRelVelMisfit';
+		if(cost_functions[i]==103) data[i]='SurfaceLogVelMisfit';
+		if(cost_functions[i]==104) data[i]='SurfaceLogVxVyMisfit';
+		if(cost_functions[i]==105) data[i]='SurfaceAverageVelMisfit';
+		if(cost_functions[i]==201) data[i]='ThicknessAbsMisfit';
+		if(cost_functions[i]==501) data[i]='DragCoefficientAbsGradient';
+		if(cost_functions[i]==502) data[i]='RheologyBbarAbsGradient';
+		if(cost_functions[i]==503) data[i]='ThicknessAbsGradient';
+		if(cost_functions[i]==504) data[i]='ThicknessAlongGradient';
+		if(cost_functions[i]==505) data[i]='ThicknessAcrossGradient';
+		if(cost_functions[i]==506) data[i]='BalancethicknessMisfit';
+		if(cost_functions[i]==507) data[i]='RheologyBAbsGradient';
+		if(cost_functions[i]==601) data[i]='SurfaceAbsMisfit';
+	}
+	return data;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/inversions/marshallcostfunctions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/inversions/marshallcostfunctions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/inversions/marshallcostfunctions.m	(revision 27955)
@@ -0,0 +1,17 @@
+function data = marshallcostfunctions(cost_functions)
+	pos=find(cost_functions==101); data(pos) = {'SurfaceAbsVelMisfit'};
+	pos=find(cost_functions==102); data(pos) = {'SurfaceRelVelMisfit'};
+	pos=find(cost_functions==103); data(pos) = {'SurfaceLogVelMisfit'};
+	pos=find(cost_functions==104); data(pos) = {'SurfaceLogVxVyMisfit'};
+	pos=find(cost_functions==105); data(pos) = {'SurfaceAverageVelMisfit'};
+	pos=find(cost_functions==201); data(pos) = {'ThicknessAbsMisfit'};
+	pos=find(cost_functions==501); data(pos) = {'DragCoefficientAbsGradient'};
+	pos=find(cost_functions==502); data(pos) = {'RheologyBbarAbsGradient'};
+	pos=find(cost_functions==503); data(pos) = {'ThicknessAbsGradient'};
+	pos=find(cost_functions==504); data(pos) = {'ThicknessAlongGradient'};
+	pos=find(cost_functions==505); data(pos) = {'ThicknessAcrossGradient'};
+	pos=find(cost_functions==506); data(pos) = {'BalancethicknessMisfit'};
+	pos=find(cost_functions==507); data(pos) = {'RheologyBAbsGradient'};
+	pos=find(cost_functions==508); data(pos) = {'RheologyBInitialguessMisfit'};
+	pos=find(cost_functions==510); data(pos) = {'ThicknessPositive'};
+	pos=find(cost_functions==601); data(pos) = {'SurfaceAbsMisfit'};
Index: /issm/branches/trunk-dlcheng-ASE/src/m/inversions/marshallcostfunctions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/inversions/marshallcostfunctions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/inversions/marshallcostfunctions.py	(revision 27955)
@@ -0,0 +1,47 @@
+
+def marshallcostfunctions(cost_functions):
+
+    cfDict = {101: 'SurfaceAbsVelMisfit',
+              102: 'SurfaceRelVelMisfit',
+              103: 'SurfaceLogVelMisfit',
+              104: 'SurfaceLogVxVyMisfit',
+              105: 'SurfaceAverageVelMisfit',
+              201: 'ThicknessAbsMisfit',
+              501: 'DragCoefficientAbsGradient',
+              502: 'RheologyBbarAbsGradient',
+              503: 'ThicknessAbsGradient',
+              504: 'ThicknessAlongGradient',
+              505: 'ThicknessAcrossGradient'}
+
+    if type(cost_functions) == int:
+        data = [cfDict[cost_functions]]
+    else:
+        data = [cfDict[cf] for cf in cost_functions]
+    #  #copy list first
+    # data = copy.deepcopy(cost_functions)
+
+    #  #convert to strings
+    # pos = [i for i, x in enumerate(cost_functions) if x == 101]
+    # for i in pos: data[i] = 'SurfaceAbsVelMisfit'
+    # pos = [i for i, x in enumerate(cost_functions) if x == 102]
+    # for i in pos: data[i] = 'SurfaceRelVelMisfit'
+    # pos = [i for i, x in enumerate(cost_functions) if x == 103]
+    # for i in pos: data[i] = 'SurfaceLogVelMisfit'
+    # pos = [i for i, x in enumerate(cost_functions) if x == 104]
+    # for i in pos: data[i] = 'SurfaceLogVxVyMisfit'
+    # pos = [i for i, x in enumerate(cost_functions) if x == 105]
+    # for i in pos: data[i] = 'SurfaceAverageVelMisfit'
+    # pos = [i for i, x in enumerate(cost_functions) if x == 201]
+    # for i in pos: data[i] = 'ThicknessAbsMisfit'
+    # pos = [i for i, x in enumerate(cost_functions) if x == 501]
+    # for i in pos: data[i] = 'DragCoefficientAbsGradient'
+    # pos = [i for i, x in enumerate(cost_functions) if x == 502]
+    # for i in pos: data[i] = 'RheologyBbarAbsGradient'
+    # pos = [i for i, x in enumerate(cost_functions) if x == 503]
+    # for i in pos: data[i] = 'ThicknessAbsGradient'
+    # pos = [i for i, x in enumerate(cost_functions) if x == 504]
+    # for i in pos: data[i] = 'ThicknessAlongGradient'
+    # pos = [i for i, x in enumerate(cost_functions) if x == 505]
+    # for i in pos: data[i] = 'ThicknessAcrossGradient'
+
+    return data
Index: /issm/branches/trunk-dlcheng-ASE/src/m/inversions/parametercontrolB.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/inversions/parametercontrolB.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/inversions/parametercontrolB.m	(revision 27955)
@@ -0,0 +1,121 @@
+function md=parametercontrolB(md,varargin),
+%PARAMETERCONTROLB - parameterization for control method on B
+%
+%   It is possible to specify the number of steps, values for the
+%   minimum and maximum values of B, the 
+%   kind of cm_responses to use or the the optscal.
+%   
+%   Usage:
+%       md=parametercontrolB(md,varargin)
+%
+%   Example:
+%      md=parametercontrolB(md)
+%      md=parametercontrolB(md,'nsteps',20,'cm_responses',0)
+%      md=parametercontrolB(md,'cm_min',10,'cm_max',10^8,'cm_jump',0.99,'maxiter',20)
+%      md=parametercontrolB(md,eps_cm',10^-4,'optscal',[10^7 10^8])
+%
+%   See also  PARAMETERCONTROLDRAG
+
+%process options
+options=pairoptions(varargin{:});
+
+%control type
+md.inversion.control_parameters={'MaterialsRheologyBbar'};
+
+%weights
+weights=getfieldvalue(options,'weights',ones(md.mesh.numberofvertices,1));
+if (length(weights)~=md.mesh.numberofvertices)
+	md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+else
+	md.inversion.cost_functions_coefficients=weights;
+end
+
+%nsteps
+nsteps=getfieldvalue(options,'nsteps',100);
+if (length(nsteps)~=1 | nsteps<=0 | floor(nsteps)~=nsteps)
+	md.inversion.nsteps=100;
+else
+	md.inversion.nsteps=nsteps;
+end
+
+%cm_min
+cm_min=getfieldvalue(options,'cm_min',paterson(273.15+5)*ones(md.mesh.numberofvertices,1));
+if (length(cm_min)==1)
+	md.inversion.min_parameters=cm_min*ones(md.mesh.numberofvertices,1);
+elseif (length(cm_min)==md.mesh.numberofvertices)
+	md.inversion.min_parameters=cm_min;
+else
+	md.inversion.min_parameters=cm_min;
+end
+
+%cm_max
+cm_max=getfieldvalue(options,'cm_max',paterson(273.15-70)*ones(md.mesh.numberofvertices,1));
+if (length(cm_max)==1)
+	md.inversion.max_parameters=cm_max*ones(md.mesh.numberofvertices,1);
+elseif (length(cm_max)==md.mesh.numberofvertices)
+	md.inversion.max_parameters=cm_max;
+else
+	md.inversion.max_parameters=cm_max;
+end
+
+%eps_cm
+eps_cm=getfieldvalue(options,'eps_cm',NaN);
+if (length(eps_cm)~=1 | eps_cm<0 )
+	md.inversion.cost_function_threshold=NaN;
+else
+	md.inversion.cost_function_threshold=eps_cm;
+end
+
+%maxiter
+maxiter=getfieldvalue(options,'maxiter',10*ones(md.inversion.nsteps,1));
+if (any(maxiter<0) | any(floor(maxiter)~=maxiter))
+	md.inversion.maxiter_per_step=10*ones(md.inversion.nsteps,1);
+else
+	md.inversion.maxiter_per_step=repmat(maxiter(:),md.inversion.nsteps,1);
+	md.inversion.maxiter_per_step(md.inversion.nsteps+1:end)=[];
+end
+
+%cm_jump
+cm_jump=getfieldvalue(options,'cm_jump',0.9*ones(md.inversion.nsteps,1));
+if ~isreal(cm_jump)
+	md.inversion.step_threshold=0.9*ones(md.inversion.nsteps,1);
+else
+	md.inversion.step_threshold=repmat(cm_jump(:),md.inversion.nsteps,1);
+	md.inversion.step_threshold(md.inversion.nsteps+1:end)=[];
+end
+
+%cm_responses
+found=0;
+if exist(options,'cm_responses'),
+	cm_responses=getfieldvalue(options,'cm_responses');
+	if ~any(~ismember(cm_responses,[ 101:105])),
+		md.inversion.cost_functions=repmat(cm_responses(:),md.inversion.nsteps,1);
+		md.inversion.cost_functions(md.inversion.nsteps+1:end)=[];
+		found=1;
+	end
+end
+if ~found
+	third=ceil(md.inversion.nsteps/3);
+	md.inversion.cost_functions=[...
+		103*ones(third,1);...
+		101*ones(third,1);...
+		repmat([101;101;103;101],third,1)...
+		];
+	md.inversion.cost_functions(md.inversion.nsteps+1:end)=[];
+end
+
+%optscal
+found=0;
+if exist(options,'optscal'),
+	optscal=getfieldvalue(options,'optscal');
+	if ~any(optscal<0),
+		md.inversion.gradient_scaling=repmat(optscal(:),md.inversion.nsteps,1);
+		md.inversion.gradient_scaling(md.inversion.nsteps+1:end)=[];
+		found=1;
+	end
+end
+if ~found
+	third=ceil(md.inversion.nsteps/3);
+	md.inversion.gradient_scaling=[2*10^8*ones(3,1);10^8*ones(third-3,1);10^7*ones(2*third,1);];
+	md.inversion.gradient_scaling(md.inversion.nsteps+1:end)=[];
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/inversions/parametercontroldrag.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/inversions/parametercontroldrag.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/inversions/parametercontroldrag.m	(revision 27955)
@@ -0,0 +1,121 @@
+function md=parametercontroldrag(md,varargin),
+%PARAMETERCONTROLDRAG - parameterization for control method on drag
+%
+%   It is possible to specify the number of steps, values for the
+%   minimum and maximum values of the drag, the 
+%   kind of cm_responses to use or the the optscal.
+%   
+%   Usage:
+%       md=parametercontroldrag(md,varargin)
+%
+%   Example:
+%      md=parametercontroldrag(md)
+%      md=parametercontroldrag(md,'nsteps',20,'cm_responses',0)
+%      md=parametercontroldrag(md,'cm_min',1,'cm_max',150,'cm_jump',0.99,'maxiter',20)
+%      md=parametercontroldrag(md,eps_cm',10^-4,'optscal',[10^7 10^8])
+%
+%   See also PARAMETERCONTROLB
+
+%process options
+options=pairoptions(varargin{:});
+
+%control type
+md.inversion.control_parameters={'FrictionCoefficient'};
+
+%weights
+weights=getfieldvalue(options,'weights',ones(md.mesh.numberofvertices,1));
+if (length(weights)~=md.mesh.numberofvertices)
+	md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+else
+	md.inversion.cost_functions_coefficients=weights;
+end
+
+%nsteps
+nsteps=getfieldvalue(options,'nsteps',100);
+if (length(nsteps)~=1 | nsteps<=0 | floor(nsteps)~=nsteps)
+	md.inversion.nsteps=100;
+else
+	md.inversion.nsteps=nsteps;
+end
+
+%cm_min
+cm_min=getfieldvalue(options,'cm_min',1*ones(md.mesh.numberofvertices,1));
+if (length(cm_min)==1)
+	md.inversion.min_parameters=cm_min*ones(md.mesh.numberofvertices,1);
+elseif (length(cm_min)==md.mesh.numberofvertices)
+	md.inversion.min_parameters=cm_min;
+else
+	md.inversion.min_parameters=cm_min;
+end
+
+%cm_max
+cm_max=getfieldvalue(options,'cm_max',250*ones(md.mesh.numberofvertices,1));
+if (length(cm_max)==1)
+	md.inversion.max_parameters=cm_max*ones(md.mesh.numberofvertices,1);
+elseif (length(cm_max)==md.mesh.numberofvertices)
+	md.inversion.max_parameters=cm_max;
+else
+	md.inversion.max_parameters=cm_max;
+end
+
+%eps_cm
+eps_cm=getfieldvalue(options,'eps_cm',NaN);
+if (length(eps_cm)~=1 | eps_cm<0 )
+	md.inversion.cost_function_threshold=NaN;
+else
+	md.inversion.cost_function_threshold=eps_cm;
+end
+
+%maxiter
+maxiter=getfieldvalue(options,'maxiter',10*ones(md.inversion.nsteps,1));
+if (any(maxiter<0) | any(floor(maxiter)~=maxiter))
+	md.inversion.maxiter_per_step=10*ones(md.inversion.nsteps,1);
+else
+	md.inversion.maxiter_per_step=repmat(maxiter(:),md.inversion.nsteps,1);
+	md.inversion.maxiter_per_step(md.inversion.nsteps+1:end)=[];
+end
+
+%cm_jump
+cm_jump=getfieldvalue(options,'cm_jump',0.8*ones(md.inversion.nsteps,1));
+if ~isreal(cm_jump)
+	md.inversion.step_threshold=0.8*ones(md.inversion.nsteps,1);
+else
+	md.inversion.step_threshold=repmat(cm_jump(:),md.inversion.nsteps,1);
+	md.inversion.step_threshold(md.inversion.nsteps+1:end)=[];
+end
+
+%cm_responses
+found=0;
+if exist(options,'cm_responses'),
+	cm_responses=getfieldvalue(options,'cm_responses');
+	if ~any(~ismember(cm_responses,[101 105]))
+		md.inversion.cost_functions=repmat(cm_responses(:),md.inversion.nsteps,1);
+		md.inversion.cost_functions(md.inversion.nsteps+1:end)=[];
+		found=1;
+	end
+end
+if ~found
+	third=ceil(md.inversion.nsteps/3);
+	md.inversion.cost_functions=[...
+		103*ones(third,1);...
+		101*ones(third,1);...
+		repmat([101;101;103;101],third,1)...
+		];
+	md.inversion.cost_functions(md.inversion.nsteps+1:end)=[];
+end
+
+%optscal
+found=0;
+if exist(options,'optscal'),
+	optscal=getfieldvalue(options,'optscal');
+	if ~any(optscal<0),
+		md.inversion.gradient_scaling=repmat(optscal(:),md.inversion.nsteps,1);
+		md.inversion.gradient_scaling(md.inversion.nsteps+1:end)=[];
+		found=1;
+	end
+end
+if ~found
+	third=ceil(md.inversion.nsteps/3);
+	md.inversion.gradient_scaling=[50*ones(3,1);15*ones(third-3,1);10*ones(third,1);repmat([10;10;20;10],third,1)];
+	md.inversion.gradient_scaling(md.inversion.nsteps+1:end)=[];
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/inversions/parametercontroldrag.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/inversions/parametercontroldrag.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/inversions/parametercontroldrag.py	(revision 27955)
@@ -0,0 +1,120 @@
+import numpy as np
+from pairoptions import pairoptions
+
+
+def parametercontroldrag(md, *args):
+    """
+    PARAMETERCONTROLDRAG - parameterization for control method on drag
+
+    It is possible to specify the number of steps, values for the
+    minimum and maximum values of the drag, the
+    kind of cm_responses to use or the the optscal.
+
+    Usage:
+       md = parametercontroldrag(md, varargin)
+
+    Example:
+      md = parametercontroldrag(md)
+      md = parametercontroldrag(md, 'nsteps', 20, 'cm_responses', 0)
+      md = parametercontroldrag(md, 'cm_min', 1, 'cm_max', 150, 'cm_jump', 0.99, 'maxiter', 20)
+      md = parametercontroldrag(md, eps_cm', 1.0e-4, 'optscal', [1.0e7 1.0e8])
+
+    See also PARAMETERCONTROLB
+    """
+
+    #process options
+    options = pairoptions(*args)
+
+    #control type
+    md.inversion.control_parameters = 'FrictionCoefficient'
+
+    #weights
+    weights = options.getfieldvalue('weights', np.ones(md.mesh.numberofvertices))
+    if np.size(weights) != md.mesh.numberofvertices:
+        md.inversion.cost_functions_coefficients = np.ones(md.mesh.numberofvertices)
+    else:
+        md.inversion.cost_functions_coefficients = weights
+
+    #nsteps
+    nsteps = options.getfieldvalue('nsteps', 100)
+    if (np.size(nsteps) != 1) | (nsteps <= 0) | (np.floor(nsteps) != nsteps):
+        md.inversion.nsteps = 100
+    else:
+        md.inversion.nsteps = nsteps
+
+    #cm_min
+    cm_min = options.getfieldvalue('cm_min', np.ones(md.mesh.numberofvertices))
+    if (np.size(cm_min) == 1):
+        md.inversion.min_parameters = cm_min * np.ones(md.mesh.numberofvertices)
+    elif (np.size(cm_min) == md.mesh.numberofvertices):
+        md.inversion.min_parameters = cm_min
+    else:
+        md.inversion.min_parameters = cm_min
+
+    #cm_max
+    cm_max = options.getfieldvalue('cm_max', 250 * np.ones(md.mesh.numberofvertices))
+    if (np.size(cm_max) == 1):
+        md.inversion.max_parameters = cm_max * np.ones(md.mesh.numberofvertices)
+    elif (np.size(cm_max) == md.mesh.numberofvertices):
+        md.inversion.max_parameters = cm_max
+    else:
+        md.inversion.max_parameters = cm_max
+
+    #eps_cm
+    eps_cm = options.getfieldvalue('eps_cm', float('nan'))
+    if (np.size(eps_cm) != 1 | eps_cm < 0):
+        md.inversion.cost_function_threshold = float('nan')
+    else:
+        md.inversion.cost_function_threshold = eps_cm
+
+    #maxiter
+    maxiter = options.getfieldvalue('maxiter', 10 * np.ones(md.inversion.nsteps))
+    if (np.any(maxiter < 0) | np.any(np.floor(maxiter) != maxiter)):
+        md.inversion.maxiter_per_step = 10 * np.ones(md.inversion.nsteps)
+    else:
+        raise RuntimeError("not implemented yet, see below matlab lines")
+    #md.inversion.maxiter_per_step = repmat(maxiter(:), md.inversion.nsteps, 1)
+    #md.inversion.maxiter_per_step(md.inversion.nsteps + 1:end) = []
+
+    #cm_jump
+    cm_jump = options.getfieldvalue('cm_jump', 0.8 * np.ones(md.inversion.nsteps))
+    if not np.isreal(cm_jump):
+        md.inversion.step_threshold = 0.8 * np.ones(md.inversion.nsteps)
+    else:
+        raise RuntimeError("not implemented yet, see below matlab lines")
+    #md.inversion.step_threshold = repmat(cm_jump(:), md.inversion.nsteps, 1)
+    #md.inversion.step_threshold(md.inversion.nsteps + 1:end) = []
+
+    #cm_responses
+    found = 0
+    if options.exist('cm_responses'):
+        cm_responses = options.getfieldvalue('cm_responses')
+        if not any(cm_responses not in [101, 105]):
+            md.inversion.cost_functions = np.tile(cm_responses[:], (md.inversion.nsteps, 1))
+            md.inversion.cost_functions[md.inversion.nsteps:] = []
+            found = 1
+    if not found:
+        third = np.ceil(md.inversion.nsteps / 3)
+        md.inversion.cost_functions = [103 * np.ones(third, 1),
+                                       101 * np.ones(third, 1),
+                                       np.tile([101, 101, 103, 101], (third, 1))]
+        md.inversion.cost_functions[md.inversion.nsteps:] = []
+
+    #optscal
+    found = 0
+    if options.exist('optscal'):
+        optscal = options.getfieldvalue('optscal')
+        if not any(optscal < 0):
+            md.inversion.gradient_scaling = np.tile(optscal[:], (md.inversion.nsteps, 1))
+            md.inversion.gradient_scaling[md.inversion.nsteps:] = []
+            found = 1
+
+    if not found:
+        third = np.ceil(md.inversion.nsteps / 3)
+        md.inversion.gradient_scaling = [50 * np.ones(3, 1),
+                                         15 * np.ones(third - 3, 1),
+                                         10 * np.ones(third, 1),
+                                         np.tile([10, 10, 20, 10], (third, 1))]
+        md.inversion.gradient_scaling[md.inversion.nsteps:] = []
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/inversions/supportedcontrols.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/inversions/supportedcontrols.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/inversions/supportedcontrols.js	(revision 27955)
@@ -0,0 +1,16 @@
+function supportedcontrols() {
+    var list = [
+        'BalancethicknessThickeningRate',
+        'FrictionCoefficient',
+        'FrictionAs',
+        'MaterialsRheologyBbar',
+        'DamageDbar',
+        'Vx',
+        'Vy',
+        'Thickness',
+        'BalancethicknessOmega',
+        'BalancethicknessApparentMassbalance',
+        'MaterialsRheologyB'];
+
+    return list;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/inversions/supportedcontrols.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/inversions/supportedcontrols.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/inversions/supportedcontrols.m	(revision 27955)
@@ -0,0 +1,15 @@
+function list = supportedcontrols(),
+
+	list = {...
+		'BalancethicknessThickeningRate',...
+		'FrictionCoefficient',...
+		'FrictionC',...
+		'FrictionAs',...
+		'MaterialsRheologyBbar',...
+		'DamageDbar',...
+		'Vx',...
+		'Vy',...
+		'Thickness',...
+		'BalancethicknessOmega',...
+		'BalancethicknessApparentMassbalance',...
+		'MaterialsRheologyB'};
Index: /issm/branches/trunk-dlcheng-ASE/src/m/inversions/supportedcontrols.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/inversions/supportedcontrols.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/inversions/supportedcontrols.py	(revision 27955)
@@ -0,0 +1,15 @@
+def supportedcontrols():
+    return [
+        'BalancethicknessThickeningRate',
+        'FrictionCoefficient',
+        'FrictionC',
+        'FrictionAs',
+        'MaterialsRheologyBbar',
+        'DamageDbar',
+        'Vx',
+        'Vy',
+        'Thickness',
+        'BalancethicknessOmega',
+        'BalancethicknessApparentMassbalance',
+        'MaterialsRheologyB'
+    ]
Index: /issm/branches/trunk-dlcheng-ASE/src/m/inversions/supportedcostfunctions.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/inversions/supportedcostfunctions.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/inversions/supportedcostfunctions.js	(revision 27955)
@@ -0,0 +1,10 @@
+function supportedcostfunctions() {
+    function range(start, count) {
+      return Array.apply(0, Array(count))
+        .map(function (element, index) { 
+          return index + start;  
+      });
+    }
+    var list = range(101,5).concat(range(201,1).concat(range(501,7)).concat(range(510,1)).concat(range(601,4)));
+    return list;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/inversions/supportedcostfunctions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/inversions/supportedcostfunctions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/inversions/supportedcostfunctions.m	(revision 27955)
@@ -0,0 +1,3 @@
+function list = supportedcostfunctions(),
+
+	list = [101:105 201 501:508 510 601:604];
Index: /issm/branches/trunk-dlcheng-ASE/src/m/inversions/supportedcostfunctions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/inversions/supportedcostfunctions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/inversions/supportedcostfunctions.py	(revision 27955)
@@ -0,0 +1,2 @@
+def supportedcostfunctions():
+    return list(range(101, 105 + 1)) + [201] + list(range(501, 508 + 1)) + [510] + list(range(601, 604 + 1))
Index: /issm/branches/trunk-dlcheng-ASE/src/m/inversions/velocitymisfit.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/inversions/velocitymisfit.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/inversions/velocitymisfit.m	(revision 27955)
@@ -0,0 +1,39 @@
+function J=misfit(md)
+%MISFIT - compute misfit
+%
+%   Usage:
+%      J=misfit(md)
+%
+%   Example:
+%      J=misfit(md)
+%
+
+if dimension(md.mesh)==2,
+	elements=md.mesh.elements;
+	x=md.mesh.x;
+	y=md.mesh.y;
+	%vx=md.initialization.vx;
+	%vy=md.initialization.vy;
+	vx=md.results.StressbalanceSolution.Vx;
+	vy=md.results.StressbalanceSolution.Vy;
+	vx_obs=md.inversion.vx_obs;
+	vy_obs=md.inversion.vy_obs;
+else
+	elements=md.mesh.elements2d;
+	x=md.mesh.x2d;
+	y=md.mesh.y2d;
+	vx=project2d(md,md.initialization.vx,md.mesh.numberoflayers);
+	vy=project2d(md,md.initialization.vy,md.mesh.numberoflayers);
+	vx_obs=project2d(md,md.inversion.vx_obs,md.mesh.numberoflayers);
+	vy_obs=project2d(md,md.inversion.vy_obs,md.mesh.numberoflayers);
+end
+
+%compute areas;
+areas=GetAreas(elements,x,y);
+
+%compute delta v on elements
+deltav=1/2*(   (vx-vx_obs).^2+(vy-vy_obs).^2)/md.constants.yts^2;
+deltav_elem=deltav(elements)*[1;1;1]/3;
+
+%compute misfit
+J=sum(deltav_elem.*areas);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/io/fileptr.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/io/fileptr.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/io/fileptr.js	(revision 27955)
@@ -0,0 +1,151 @@
+//FILEPTR class definition
+////
+//// Usage: 
+//// var fid = new fileptr(); 
+//
+//
+
+function fileptr() {
+	//properties
+	this.increment=NaN;
+	this.buffer =NaN;
+	this.view =NaN;
+	this.ptr =NaN;
+	this.buffersize =NaN;
+	this.mode ='';
+	this.options = new pairoptions(Array.prototype.slice.call(arguments));
+	
+	//methods
+		this.disp = function () { //{{{
+			console.log(sprintf("   fileptr:")); 
+
+			console.log(sprintf("       buffer: ArrayBuffer{ byteLength: %i }\n",this.buffer.byteLength));
+			console.log(sprintf("       ptr: %i\n",this.ptr));
+			console.log(sprintf("       increment: %i\n",this.increment));
+			console.log(sprintf("       mode: %s\n",this.mode));
+
+		} //}}}
+		this.setdefaultparameters = function (options) { //{{{
+	
+			this.mode=options.getfieldvalue('mode');
+			this.ptr=0;
+			this.increment=0;
+			this.buffersize=0;
+			if (this.mode=='w'){
+				this.increment=options.getfieldvalue('increment',8000000); //80000 bytes,  10000 doubles.
+				this.buffer=new ArrayBuffer(this.increment);
+				this.view=new DataView(this.buffer);
+			}
+			else if(this.mode == 'r'){
+				
+				/*recover buffer and its size: */
+				var bufferin= options.getfieldvalue('buffer');
+				this.buffersize= options.getfieldvalue('buffersize');
+				
+				/*crete a typed array buffer: */
+				this.buffer=new ArrayBuffer(this.buffersize);
+				this.view=new DataView(this.buffer); 
+				for(var i=0;i<this.buffersize;i++) this.view.setUint8(i,bufferin[i]);
+			}
+
+		} //}}}
+		this.fwrite = function (value,format) { //{{{
+
+			
+			if(format == 'int'){
+				if(this.ptr+4>=this.buffer.byteLength)this.resize();
+				this.view.setUint32(this.ptr,value,true); this.ptr+=4;
+			}
+			else if(format == 'char'){
+				if(this.ptr+value.length>=this.buffer.byteLength)this.resize();
+				for(var i=0;i<value.length;i++){
+					this.view.setUint8(this.ptr,value.charCodeAt(i),true); 
+					this.ptr+=1;
+				}
+			}
+			else if(format == 'double'){
+				if(this.ptr+8>=this.buffer.byteLength)this.resize();
+				if (!IsArray(value)){
+					this.view.setFloat64(this.ptr,value,true);
+					this.ptr+=8;
+				}
+				else{
+					if (!IsArray(value[0])){
+						if(this.ptr+value.length*8>=this.buffer.byteLength){
+							this.resize();
+							if(this.ptr+value.length*8>=this.buffer.byteLength)throw Error('fileptr.fwrite error: need to increase increment size!');
+						}
+						for(var i=0;i<value.length;i++){
+							this.view.setFloat64(this.ptr,value[i],true);
+							this.ptr+=8;
+						}
+					}
+					else{
+						if(this.ptr+value.length*value[0].length*8>=this.buffer.byteLength)this.resize();
+						for(var i=0;i<value.length;i++){
+							for(var j=0;j<value[0].length;j++){
+								this.view.setFloat64(this.ptr,value[i][j],true);
+								this.ptr+=8;
+							}
+						}
+					}
+				}
+			}
+			else throw Error('fileptr.fwrite error message: wrong type of format');
+		} //}}}
+		this.fread = function (size,format) { //{{{
+			
+			var value;
+
+			if(this.ptr==this.buffersize)return -1;
+			if(format == 'int'){
+				if(size==1){
+					value=this.view.getInt32(this.ptr,true); 
+					this.ptr+=4;
+				}
+				else{
+					value = new Int32Array(size);
+					for(var i=0;i<size;i++){
+						value[i]=this.view.getInt32(this.ptr,true); 
+						this.ptr+=4;
+					}
+				}
+			}
+			else if(format == 'char'){
+				value = ''; 
+				for(var i=0;i<(size-1);i++){
+					value+= String.fromCharCode(this.view.getUint8(this.ptr,true));
+					this.ptr+=1;
+				}
+				this.ptr+=1; //pass over the '\0';
+
+			}
+			else if(format == 'double'){
+				if(size==1){
+					value=this.view.getFloat64(this.ptr,true);
+					this.ptr+=8;
+				}
+				else{ 
+					value = new Float64Array(size);
+					for(var i=0;i<size;i++){
+						value[i]=this.view.getFloat64(this.ptr,true);
+						this.ptr+=8;
+					}
+				}
+			}
+			else throw Error('fileptr.fwrite error message: wrong type of format');
+			
+			return value;
+		} //}}}
+		this.rawbuffer = function () { //{{{
+			return this.buffer.slice(0,this.ptr);
+		} //}}}
+		this.resize = function () { //{{{
+			var  newbuffer = new ArrayBuffer(this.buffer.byteLength+this.increment);
+			new Uint8Array(newbuffer).set(new Uint8Array(this.buffer));
+			this.buffer=newbuffer;
+			this.view=new DataView(this.buffer);
+		} //}}}
+	//set defaults
+	this.setdefaultparameters(this.options);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/io/getShapeTypeInfo.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/io/getShapeTypeInfo.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/io/getShapeTypeInfo.m	(revision 27955)
@@ -0,0 +1,181 @@
+function result = getShapeTypeInfo(shapeTypeCode,requestOrQuery)
+
+% CAUTION:  This file contains experimental code that has had only
+%           minimal, informal testing.
+%
+%GETSHAPETYPEINFO   Get information about a shape type.
+%   Returns a single value, based on the second argument:
+%     'TypeString'             -- Return a string
+%     'IsValid'                -- Return a scalar logical
+%     'IsSupported'            -- Return a scalar logical
+%     'BoundingBoxSubscripts'  -- Return a 1-by-n double array
+%     'ShapeRecordReadFcn'     -- Return a function handle
+%     'ShapeDataFieldNames'    -- Return a cell array of string.
+
+% Copyright 1996-2010 The MathWorks, Inc.
+% $Revision$  $Date$
+
+lutFields = { 'TypeCode',...
+              'TypeString',...
+              'IsValid',...
+              'IsSupported',...
+              'BoundingBoxSubscripts',...
+              'ShapeRecordReadFcn',...
+              'ShapeDataFieldNames' };
+
+% Three kinds of bounding box subscripts
+bbs2D = [1 2; 3 4];
+bbsZ  = [1 2 5; 3 4 6]; % Ignore M for now, otherwise use [1 2 5 7; 3 4 6 8]
+bbsM  = [1 2 7; 3 4 8];
+
+typeLUT = {...
+   -1, 'Not Valid',   false, false, [],    [], {''};... 
+    0, 'Null Shape',  true,  true,  [],    [], {''};... 
+    1, 'Point',       true,  true,  bbs2D, @readPoint,      {'Geometry','X','Y'};... 
+    3, 'PolyLine',    true,  true,  bbs2D, @readPolyLine,   {'Geometry','BoundingBox','X','Y'};...
+    5, 'Polygon',     true,  true,  bbs2D, @readPolygon,    {'Geometry','BoundingBox','X','Y'};...
+    8, 'MultiPoint',  true,  true,  bbs2D, @readMultiPoint, {'Geometry','BoundingBox','X','Y'};...
+   11, 'PointZ',      true,  false, bbsZ,  [], {''};...
+   13, 'PolyLineZ',   true,  true,  bbsZ,  @readPolyLineZ,  {'Geometry','BoundingBox','X','Y','Z'};... 
+   15, 'PolygonZ',    true,  true,  bbsZ,  @readPolygonZ,   {'Geometry','BoundingBox','X','Y','Z'};... 
+   18, 'MultiPointZ', true,  false, bbsZ,  [], {''};... 
+   21, 'PointM',      true,  false, bbsM,  [], {''};... 
+   23, 'PolyLineM',   true,  false, bbsM,  [], {''};... 
+   25, 'PolygonM',    true,  false, bbsM,  [], {''};... 
+   28, 'MultiPointM', true,  false, bbsM,  [], {''};... 
+   31, 'MultiPatch',  true,  false, bbsZ,  [], {''};... 
+  };
+notValidRow = 1;
+types = [typeLUT{:,1}];
+
+% MAINTENANCE NOTE: To add support for additional types, add more rows
+% to the type look up table (typeLUT), but be sure to keep 'Not Valid'
+% in the first row.
+
+row = find(shapeTypeCode == types);
+if length(row) ~= 1
+    row = notValidRow;
+end
+
+col = strmatch(lower(requestOrQuery),lower(lutFields));
+if length(col) ~= 1;
+    eid = sprintf('%s:%s:internalProblem',getcomp,mfilename);
+    error(eid,'Internal error: Invalid second argument in private function.');
+end
+
+result = typeLUT{row,col};
+
+%---------------------------------------------------------------------------
+function shp = readPoint(fid)
+
+point = fread(fid,[2 1],'double','ieee-le');
+shp = {'Point', point(1), point(2)};
+
+%---------------------------------------------------------------------------
+function shp = readMultiPoint(fid)
+
+boundingBox    = fread(fid,4,'double','ieee-le');
+numPoints      = fread(fid,1,'uint32','ieee-le');
+points         = fread(fid,[2 numPoints],'double','ieee-le')';
+shp = {'MultiPoint', boundingBox([1 2; 3 4]), points(:,1)', points(:,2)'};
+
+%---------------------------------------------------------------------------
+function shp = readPolyLine(fid)
+
+boundingBox    = fread(fid,4,'double','ieee-le');
+numPartsPoints = fread(fid,2,'uint32','ieee-le');
+partOffsets    = fread(fid,[1 numPartsPoints(1)],'uint32','ieee-le');
+points         = fread(fid,[2 numPartsPoints(2)],'double','ieee-le')';
+[x,y] = organizeParts2D(partOffsets,points);
+shp = {'Line', boundingBox([1 2; 3 4]), x, y};
+
+%---------------------------------------------------------------------------
+function shp = readPolygon(fid)
+
+boundingBox    = fread(fid,4,'double','ieee-le');
+numPartsPoints = fread(fid,2,'uint32','ieee-le');
+partOffsets    = fread(fid,[1 numPartsPoints(1)],'uint32','ieee-le');
+points         = fread(fid,[2 numPartsPoints(2)],'double','ieee-le')';
+[x,y] = organizeParts2D(partOffsets,points);
+shp = {'Polygon', boundingBox([1 2; 3 4]), x, y};
+
+%---------------------------------------------------------------------------
+function [x,y] = organizeParts2D(partOffsets,points)
+
+numParts  = size(partOffsets,2);
+numPoints = size(points,1);
+% Initialize x and y to be row vectors of NaN
+% with length numPoints * numParts
+x = NaN + zeros(1, numPoints + numParts);
+y = x;
+if numParts == 1
+    x(1, 1:numPoints) = points(:,1);
+    y(1, 1:numPoints) = points(:,2);
+else
+    partStart = 1 + partOffsets;
+    partEnd   = [partOffsets(2:end) numPoints];
+    for k = 1:numParts
+        xyStart = partStart(k) + (k - 1);
+        xyEnd   = partEnd(k)   + (k - 1);
+        x(1, xyStart:xyEnd) = points(partStart(k):partEnd(k), 1);
+        y(1, xyStart:xyEnd) = points(partStart(k):partEnd(k), 2);
+    end
+end
+
+%---------------------------------------------------------------------------
+function shp = readPolyLineZ(fid)
+
+boundingBox    = fread(fid,4,'double','ieee-le');
+numPartsPoints = fread(fid,2,'uint32','ieee-le');
+partOffsets    = fread(fid,[1 numPartsPoints(1)],'uint32','ieee-le');
+points         = fread(fid,[2 numPartsPoints(2)],'double','ieee-le')';
+zRange         = fread(fid,2,'double','ieee-le'); %#ok
+zArray         = fread(fid, numPartsPoints(2), 'double', 'ieee-le');
+[x,y,z] = organizeParts3D(partOffsets,points,zArray);
+% shp = {'Line', [boundingBox([1 2; 3 4]) zRange], x, y, z};
+% Note:
+%   Keep bounding box 2-D for now for compatibility with
+%   mapshow and geoshow.
+shp = {'Line', boundingBox([1 2; 3 4]), x, y, z};
+
+%---------------------------------------------------------------------------
+function shp = readPolygonZ(fid)
+
+boundingBox    = fread(fid,4,'double','ieee-le');
+numPartsPoints = fread(fid,2,'uint32','ieee-le');
+partOffsets    = fread(fid,[1 numPartsPoints(1)],'uint32','ieee-le');
+points         = fread(fid,[2 numPartsPoints(2)],'double','ieee-le')';
+zRange         = fread(fid,2,'double','ieee-le'); %#ok
+zArray         = fread(fid, numPartsPoints(2), 'double', 'ieee-le');
+[x,y,z] = organizeParts3D(partOffsets,points,zArray);
+% shp = {'Polygon', [boundingBox([1 2; 3 4]) zRange], x, y, z};
+% Note:
+%   Keep bounding box 2-D for now for compatibility with
+%   mapshow and geoshow.
+shp = {'Polygon', boundingBox([1 2; 3 4]), x, y, z};
+
+%---------------------------------------------------------------------------
+function [x,y,z] = organizeParts3D(partOffsets,points,zArray)
+
+numParts  = size(partOffsets,2);
+numPoints = size(points,1);
+% Initialize x and y to be row vectors of NaN
+% with length numPoints * numParts
+x = NaN + zeros(1, numPoints + numParts);
+y = x;
+z = x;
+if numParts == 1
+    x(1, 1:numPoints) = points(:,1);
+    y(1, 1:numPoints) = points(:,2);
+    z(1, 1:numPoints) = zArray(:,1);
+else
+    partStart = 1 + partOffsets;
+    partEnd   = [partOffsets(2:end) numPoints];
+    for k = 1:numParts
+        xyzStart = partStart(k) + (k - 1);
+        xyzEnd   = partEnd(k)   + (k - 1);
+        x(1, xyzStart:xyzEnd) = points(partStart(k):partEnd(k), 1);
+        y(1, xyzStart:xyzEnd) = points(partStart(k):partEnd(k), 2);
+        z(1, xyzStart:xyzEnd) = zArray(partStart(k):partEnd(k), 1);
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/io/loadmodel.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/io/loadmodel.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/io/loadmodel.js	(revision 27955)
@@ -0,0 +1,6 @@
+function loadmodel(modelstring) {
+
+	var md=JSONfn.parse(decodeURI(modelstring));
+	md.fix();
+	return md;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/io/loadmodel.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/io/loadmodel.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/io/loadmodel.m	(revision 27955)
@@ -0,0 +1,46 @@
+function varargout=loadmodel(path)
+%LOADMODEL - load a model using built-in load module 
+%
+%   check that model prototype has not changed. if so, adapt to new model prototype.
+%
+%   Usage:
+%      md=loadmodel(path)
+%      loadmodel path
+
+%check nargout
+if nargout>1,
+	error('loadmodel usage error: md=loadmodel(path)');
+end
+
+%check existence
+if exist(path,'file')
+	%do nothing
+elseif exist([path '.mat'],'file')
+	%add extension
+	path = [path '.mat'];
+else
+	error(['loadmodel error message: file ' path ' does not exist']);
+end
+
+try,
+	%recover model on file and name it md
+	warning off MATLAB:unknownElementsNowStruc;
+	warning off MATLAB:load:classNotFound
+	struc=load(path,'-mat');
+	warning on MATLAB:unknownElementsNowStruc;
+	warning on MATLAB:load:classNotFound
+
+	name=char(fieldnames(struc));
+	if size(name,1)>1,
+		error(['loadmodel error message: file ' path ' contains several variables. Only one model should be present.']); 
+	end
+	md=struc.(name);
+	if nargout,
+		varargout{1}=md;
+	else
+		assignin('caller',name,md);
+	end
+catch me
+	disp(getReport(me))
+	error(['could not load model ' path]);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/io/loadmodel.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/io/loadmodel.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/io/loadmodel.py	(revision 27955)
@@ -0,0 +1,39 @@
+from loadvars import loadvars
+# Hack to keep python 2 compatibility
+try:
+    from dbm import whichdb # Python 3
+except ImportError:
+    from whichdb import whichdb # Python 2
+
+from netCDF4 import Dataset
+
+
+def loadmodel(path, singletime=None, singleres=None):
+    """LOADMODEL - load a model
+
+    Check that model prototype has not changed: if if has, adapt to new model prototype.
+
+    Usage:
+        md = loadmodel(path)
+    """
+
+    #check existence of database (independent of file extension!)
+    if whichdb(path):
+        #do nothing
+        pass
+    else:
+        try:
+            NCFile = Dataset(path, mode='r')
+            NCFile.close()
+            pass
+        except RuntimeError:
+            raise IOError("loadmodel error message: file '%s' does not exist" % path)
+    #       try:
+    #recover model on file and name it md
+    struc = loadvars(path, singletime=singletime, singleres=singleres)
+    name = [key for key in list(struc.keys())]
+    if len(name) > 1:
+        raise IOError("loadmodel error message: file '%s' contains several variables. Only one model should be present." % path)
+
+    md = struc[name[0]]
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/io/loadmodellist.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/io/loadmodellist.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/io/loadmodellist.m	(revision 27955)
@@ -0,0 +1,50 @@
+function varargout=loadmodellist(path)
+%LOADMODELLIST- load a model using built-in load module
+%
+%   check that modellist prototype has not changed. if so, adapt to new modellist prototype.
+%
+%   Usage:
+%      mds=loadmodellist(path)
+%      loadmodellist path
+
+%check nargout
+if nargout>1,
+	error('loadmodellist usage error: mds=loadmodellist(path)');
+end
+%check existence
+if ~exist(path)
+	error(['loadmodellist error message: file ' path ' does not exist']);
+end
+
+%check that the file is readable
+[stat,mess]=fileattrib(path);
+if( stat==0 | mess.UserRead~=1),
+	error(['loadmodellist error message: file ' path ' is not readable (permission dinied).']);
+end
+
+%check number of variables
+if length(whos('-file',path))>1,
+	error(['loadmodellist error message: file ' path ' contains several variables. Only one model should be present.']);
+end
+
+try,
+	struc=load(path,'-mat');
+
+	%get name of model variable
+	fieldname=char(fieldnames(struc));
+	mds=eval(['struc.' fieldname]);
+	if ~strcmpi(class(mds),'model'),
+		mds2=modellist;
+		mds2=structtomodel(mds2,mds);
+		mds=mds2;
+		clear mds2;
+	end
+	if nargout,
+		varargout{1}=mds;
+	else
+		assignin('caller',fieldname,mds);
+	end
+catch me
+	disp(getReport(me))
+	error(['could not load model ' path]);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/io/loadvars.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/io/loadvars.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/io/loadvars.py	(revision 27955)
@@ -0,0 +1,429 @@
+from collections import OrderedDict
+# Hack to keep python 2 compatibility
+try:
+    from dbm import whichdb # Python 3
+except ImportError:
+    from whichdb import whichdb # Python 2
+from re import findall, split
+import shelve
+from netCDF4 import Dataset, chartostring
+import numpy as np
+import numpy.ma as ma
+from importlib import import_module
+from model import *
+
+
+def loadvars(*args, **kwargs):
+    """LOADVARS - function to load variables from a file
+
+    This function loads one or more variables from a file. The names of the
+    variables must be supplied. If more than one variable is specified, it may
+    be done with a list of names or a dictionary of name as keys. The output
+    type will correspond to the input type. All the variables in the file may
+    be loaded by specifying only the file name.
+
+    Usage:
+        a = loadvars('shelve.dat', 'a')
+        [a, b] = loadvars('shelve.dat', ['a', 'b'])
+        nvdict = loadvars('shelve.dat', {'a':None, 'b':None})
+        nvdict = loadvars('shelve.dat')
+    """
+
+    filename = ''
+    nvdict = {}
+    verbose = 0  # 0 for silent 5 for chatty
+
+    if len(args) >= 1 and isinstance(args[0], str):
+        filename = args[0]
+        if not filename:
+            filename = '/tmp/shelve.dat'
+    else:
+        raise TypeError("Missing file name.")
+
+    if len(args) >= 2 and isinstance(args[1], str):  # (filename, name)
+        for name in args[1:]:
+            nvdict[name] = None
+    elif len(args) == 2 and isinstance(args[1], list):  # (filename, [names])
+        for name in args[1]:
+            nvdict[name] = None
+    elif len(args) == 2 and isinstance(args[1], dict):  # (filename, {names:values})
+        nvdict = args[1]
+    elif len(args) == 1:  #  (filename)
+        pass
+    else:
+        raise TypeError("Unrecognized input arguments.")
+
+    timeindex = False
+    SteadySols = ['ThermalSolution', 'HydrologySolution', 'StressbalanceSolution']
+
+    for key, value in kwargs.items():
+        if key == 'singletime':
+            timeindex = value
+        if key == 'singleres':
+            resname = value
+
+    if whichdb(filename):   #We used python pickle for the save
+        print("Loading variables from file {}.".format(filename))
+        my_shelf = shelve.open(filename, 'r')  # 'r' for read - only
+        if nvdict:
+            for name in list(nvdict.keys()):
+                try:
+                    nvdict[name] = my_shelf[name]
+                    print(("Variable '%s' loaded." % name))
+                except KeyError:
+                    value = None
+                    print("Variable '{}' not found.".format(name))
+
+        else:
+            for name in list(my_shelf.keys()):
+                nvdict[name] = my_shelf[name]
+                print(("Variable '%s' loaded." % name))
+        my_shelf.close()
+    else:  #We used netcdf for the save
+        try:
+            NCFile = Dataset(filename, mode='r')
+            NCFile.close()
+        except RuntimeError:
+            raise IOError("File '{}' not found.".format(filename))
+
+        classtype, classtree = netCDFread(filename)
+        nvdict['md'] = model()
+        NCFile = Dataset(filename, mode='r')
+        for mod in dict.keys(classtype):
+            #==== First we create the model structure  {{{
+            if verbose > 0:
+                print(' ==== Now treating classtype {}'.format(mod))
+            if mod not in classtree.keys():
+                print("WARNING: {} classe is not in the model anymore and will be omited.".format(mod))
+            elif np.size(classtree[mod]) > 1:
+                # this points to a subclass (results.TransientSolution for example)
+                curclass = NCFile.groups[classtree[mod][0]].groups[classtree[mod][1]]
+                if verbose > 0:
+                    print("    ==> {} is of class {}".format(mod, classtype[mod]))
+                if classtype[mod][0] == 'results.solutionstep':  #Treating results {{{
+                    keylist = [key for key in curclass.groups]
+                    #that is the current treatment
+                    #here we have a more NC approach with time being a dimension
+                    listtype = split(r'\.', classtype[mod][0])[1]
+                    try:
+                        soltype = str(getattr(curclass, 'SolutionType'))
+                    except AttributeError:
+                        #might be an older format try that instead :
+                        soltype = str(getattr(curclass, 'sOLUTIONtYPE'))
+                    if len(NCFile.dimensions['Time']) == 1 or soltype in SteadySols:
+                        nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]] = getattr(classtype[mod][1], listtype)()
+                        Tree = nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]]
+                    else:
+                        #Time dimension is in all the variables so we take that as stepnumber for the results
+                        if timeindex:   #we load only the last result to save on time and memory
+                            nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]] = [getattr(classtype[mod][1], listtype)()]
+                            Tree = nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]]
+                        else:
+                            setattr(nvdict['md'].__dict__[classtree[mod][0]], classtree[mod][1], getattr(classtype[mod][1], 'solution')([]))
+                            for i in range(max(1, len(NCFile.dimensions['Time']))):
+                                nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]].steps.append(getattr(classtype[mod][1], 'solutionstep')())
+                            Tree = nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]][:]
+                # }}}
+                elif "results" in mod and classtype[mod][0] == 'list':  #this is the old style of results where every step has a group{{{
+                    keylist = [key for key in curclass.groups]
+                    #one group per step so use that in place of time
+                    stepnum = len(NCFile.groups[classtree[mod][0]].groups[classtree[mod][1]].groups)
+                    #we need to redefine classtype from list to result
+                    listtype = 'results'
+                    classtype[mod].append(__import__(listtype))
+                    if stepnum == 1:
+                        nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]] = getattr(classtype[mod][1], listtype)()
+                        Tree = nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]]
+                    else:
+                        if timeindex:   #we load only the last result to save on time and memory
+                            nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]] = [getattr(classtype[mod][1], listtype)()]
+                            Tree = nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]]
+                        else:
+                            setattr(nvdict['md'].__dict__[classtree[mod][0]], classtree[mod][1], getattr(classtype[mod][1], 'solution')([]))
+                            for i in range(max(1, stepnum)):
+                                nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]].steps.append(getattr(classtype[mod][1], 'solutionstep')())
+                            Tree = nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]][:]
+                    # }}}
+                #elif classtype[mod][0] == 'massfluxatgate.massfluxatgate':  #this is for output definitions {{{
+                elif mod.startswith('outputdefinition'):  #this is for output definitions {{{
+                    defname = split('Output|[0-9]+', classtree[mod][1])[1] + 's'
+                    defindex = int(findall('[0-9]+', classtree[mod][1])[0])
+                    outdeftype = split(r'\.', classtype[mod][0])[0]
+                    nvdict['md'].__dict__[classtree[mod][0]].__dict__[defname].append(getattr(classtype[mod][1], outdeftype)())
+                    Tree = nvdict['md'].__dict__[classtree[mod][0]].__dict__[defname][defindex - 1]
+                # }}}
+                elif classtype[mod][0] == 'collections.OrderedDict':  #Treating multiple toolkits {{{
+                    nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]] = getattr(classtype[mod][1], 'OrderedDict')
+                    Tree = nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]]
+                else:
+                    if verbose > 0:
+                        print("    Using the default for md.{}.{}, is that right??".format(classtree[mod][0], classtree[mod][1]))
+                    try:
+                        modulename = split(r'\.', classtype[mod][0])[0]
+                        if verbose > 0:
+                            print("    trying to import {} from {}".format(classtype[mod][0], modulename))
+                        nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]] = getattr(classtype[mod][1], modulename)()
+                    except AttributeError:
+                        print("WARNING: md.{}.{} is not initialized, hopefully that was done in the main group:".format(classtree[mod][0], classtree[mod][1]))
+                    Tree = nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]]
+            elif classtype[mod][0] == 'SMBgemb.SMBgemb':
+                curclass = NCFile.groups[classtree[mod][0]]
+                modulename = split(r'\.', classtype[mod][0])[0]
+                nvdict['md'].__dict__[mod] = getattr(classtype[mod][1], modulename)(nvdict['md'].__dict__['mesh'], nvdict['md'].__dict__['geometry'])
+                Tree = nvdict['md'].__dict__[classtree[mod][0]]
+            else:
+                curclass = NCFile.groups[classtree[mod][0]]
+                modulename = split(r'\.', classtype[mod][0])[0]
+                nvdict['md'].__dict__[mod] = getattr(classtype[mod][1], modulename)()
+                Tree = nvdict['md'].__dict__[classtree[mod][0]]
+            if verbose > 0:
+                print("    for {} Tree is a {} with len {}".format(mod, Tree.__class__.__name__, len(curclass.groups)))
+            # }}}
+            #==== Then we populate it {{{
+            #for i in range(0, max(1, len(curclass.groups))):
+            if len(curclass.groups) > 0:  #that is presumably only for old style NC where each result step had its own group
+                if timeindex:
+                    if timeindex < 0:
+                        groupclass = [curclass.groups[keylist[len(curclass.groups) - timeindex]]]
+                    else:
+                        groupclass = [curclass.groups[keylist[timeindex]]]
+                else:
+                    groupclass = [curclass.groups[key] for key in keylist]
+            else:
+                groupclass = [curclass]
+            for groupindex, listclass in enumerate(groupclass):
+                try:
+                    soltype = str(getattr(listclass, 'SolutionType'))
+                except AttributeError:
+                    soltype = 'NoSol'
+                #==== We deal with Variables {{{
+                for var in listclass.variables:
+                    if not resname or var == resname:
+                        if var not in ['errlog', 'outlog']:
+                            varval = listclass.variables[str(var)]
+                            vardim = varval.ndim
+                            if verbose > 0:
+                                print("    ==> treating var {} of dimension {}".format(var, vardim))
+                            #There is a special treatment for results to account for its specific structure
+                            #that is the new export version where time is a named dimension
+                            NewFormat = 'Time' in NCFile.dimensions
+                            if type(Tree) == list:  # and NewFormat:
+                                if timeindex:
+                                    if NewFormat:
+                                        if vardim == 0:
+                                            try:
+                                                Tree[0].__dict__[str(var)] = varval[timeindex].data
+                                            except IndexError:
+                                                print('WARNING: No data on index {} for {} reverting to last time.'.format(timeindex, str(var)))
+                                                Tree[0].__dict__[str(var)] = varval[-1].data
+                                        elif vardim == 1:
+                                            try:
+                                                Tree[0].__dict__[str(var)] = varval[timeindex].data
+                                            except IndexError:
+                                                print('WARNING: No data on index {} for {} reverting to last time.'.format(timeindex, str(var)))
+                                                Tree[0].__dict__[str(var)] = varval[-1].data
+                                        elif vardim == 2:
+                                            Tree[0].__dict__[str(var)] = varval[timeindex, :].data
+                                        elif vardim == 3:
+                                            Tree[0].__dict__[str(var)] = varval[timeindex, :, :].data
+                                        else:
+                                            print('table dimension greater than 3 not implemented yet')
+                                    elif soltype in SteadySols:
+                                        Tree.__dict__[str(var)] = varval[:].data
+                                    else:  #old format had step sorted in difeerent group so last group is last time
+                                        Tree[0].__dict__[str(var)] = varval[:].data
+                                else:
+                                    if NewFormat:
+                                        incomplete = 'Time' not in varval.dimensions and soltype not in SteadySols
+                                        if incomplete:
+                                            try:
+                                                chosendim = varval.dimensions[0]
+                                                timelist = np.arange(0, len(NCFile.dimensions[chosendim]))
+                                                print('WARNING, {} is not present on every times, we chose {}({}) as the dimension to write it with'.format(var, chosendim, len(NCFile.dimensions[chosendim])))
+                                            except IndexError:
+                                                #just one step, so no dimension, we just put it on the first solutionstep
+                                                timelist = [0]
+                                        elif soltype in SteadySols:
+                                            timelist = [0]
+                                        else:
+                                            timelist = np.arange(0, len(NCFile.dimensions['Time']))
+                                        if soltype in SteadySols:
+                                            Tree.__dict__[str(var)] = varval[:].data
+                                        else:
+                                            for t in timelist:
+                                                if verbose > 5:
+                                                    print("filing step {} for {}".format(t, var))
+                                                if vardim == 0:
+                                                    Tree[t].__dict__[str(var)] = varval[:].data
+                                                elif vardim == 1:
+                                                    stepval = ma.masked_array(varval[t].data, mask=np.where(np.isnan(varval[t]), 1, 0))
+                                                    Tree[t].__dict__[str(var)] = ma.compressed(stepval)
+                                                elif vardim == 2:
+                                                    stepval = ma.masked_array(varval[t, :].data, mask=np.where(np.isnan(varval[t, :]), 1, 0))
+                                                    Tree[t].__dict__[str(var)] = ma.compressed(stepval)
+                                                elif vardim == 3:
+                                                    stepval = ma.masked_array(varval[t, :, :].data, mask=np.where(np.isnan(varval[t, :, :]), 1, 0))
+                                                    Tree[t].__dict__[str(var)] = ma.compressed(stepval).reshape((stepval.count(0)[0], stepval.count(1)[0]))
+                                                else:
+                                                    print('table dimension greater than 3 not implemented yet')
+                                    else:
+                                        if verbose > 0:
+                                            print("filing step {} for {}".format(groupindex, var))
+                                        Tree[groupindex].__dict__[str(var)] = varval[:].data
+                            else:
+                                if vardim == 0:  #that is a scalar
+                                    if str(varval[0]) in ['', '--', 'emptycell']:  #no value
+                                        Tree.__dict__[str(var)] = []
+                                    elif varval[0] == 'True':  #treatin bool
+                                        Tree.__dict__[str(var)] = True
+                                    elif varval[0] == 'False':  #treatin bool
+                                        Tree.__dict__[str(var)] = False
+                                    else:
+                                        Tree.__dict__[str(var)] = varval[0].item()
+
+                                elif vardim == 1:  #that is a vector
+                                    if verbose > 0:
+                                        print("   for variable {} type is {}".format(str(var), varval.dtype))
+                                    if varval.dtype == str:
+                                        if varval.shape[0] == 1:
+                                            Tree.__dict__[str(var)] = [str(varval[0]), ]
+                                        elif 'True' in varval[:] or 'False' in varval[:]:
+                                            Tree.__dict__[str(var)] = np.asarray([V == 'True' for V in varval[:]], dtype=bool)
+                                        else:
+                                            Tree.__dict__[str(var)] = [str(vallue) for vallue in varval[:]]
+                                    elif varval.dtype == "|S1":  #that is for matlab chararcter arrays
+                                        stringlist = chartostring(varval[:])
+                                        Tree.__dict__[str(var)] = [stringlist.tolist(), ]
+                                    else:
+                                        try:
+                                            #some thing specifically require a list
+                                            mdtype = type(Tree.__dict__[str(var)])
+                                        except KeyError:
+                                            mdtype = float
+                                        if mdtype == list:
+                                            Tree.__dict__[str(var)] = [mdval for mdval in varval[:]]
+                                        else:
+                                            Tree.__dict__[str(var)] = varval[:].data
+
+                                elif vardim == 2:
+                                    #dealling with dict
+                                    if verbose > 0:
+                                        print("   for variable {} type is {}".format(str(var), varval.dtype))
+                                    if varval.dtype == str:  #that is for dictionaries
+                                        if any(varval[:, 0] == 'toolkit'):  #toolkit definition have to be first
+                                            Tree.__dict__[str(var)] = OrderedDict([('toolkit', str(varval[np.where(varval[:, 0] == 'toolkit')[0][0], 1]))])
+                                            strings1 = [str(arg[0]) for arg in varval if arg[0] != 'toolkits']
+                                            strings2 = [str(arg[1]) for arg in varval if arg[0] != 'toolkits']
+                                            Tree.__dict__[str(var)].update(list(zip(strings1, strings2)))
+                                        else:
+                                            strings1 = [str(arg[0]) for arg in varval]
+                                            strings2 = [str(arg[1]) for arg in varval]
+                                            Tree.__dict__[str(var)] = OrderedDict(list(zip(strings1, strings2)))
+                                    elif varval.dtype == "|S1":  #that is for matlab chararcter arrays
+                                        stringlist = chartostring(varval[:, :])
+                                        stringlist = [string.strip() for string in stringlist]
+                                        Tree.__dict__[str(var)] = stringlist
+                                    else:
+                                        if type(Tree) == list:
+                                            t = indexlist[i]
+                                            if listtype == 'dict':
+                                                Tree[t][str(var)] = varval[:, :].data
+                                            else:
+                                                Tree[t].__dict__[str(var)] = varval[:, :].data
+                                        else:
+                                            Tree.__dict__[str(var)] = varval[:, :].data
+                                elif vardim == 3:
+                                    if varval.dtype == "|S1":  #that is for matlab chararcter arrays
+                                        #most likely that is a toolkit dictionar so should be treated as such
+                                        #first we convert the character table to strings
+                                        stringtable = []
+                                        for i in range(np.shape(varval)[0]):
+                                            stringtable.append([chartostring(varval[i, 0, :]), chartostring(varval[i, 1, :])])
+                                        stringtable = np.asarray(stringtable, dtype=str)
+                                        Tree.__dict__[str(var)] = OrderedDict([('toolkit', str(varval[np.where(stringtable[:, 0] == 'toolkit')[0][0], 1]))])
+                                        strings1 = [str(arg[0]) for arg in stringtable if arg[0] != 'toolkits']
+                                        strings2 = [str(arg[1]) for arg in stringtable if arg[0] != 'toolkits']
+                                        Tree.__dict__[str(var)].update(list(zip(strings1, strings2)))
+                                    else:
+                                        Tree.__dict__[str(var)] = varval[:, :, :].data
+                                else:
+                                    print('table dimension greater than 3 not implemented yet')
+                # }}}
+                #==== And with atribute {{{
+                for attr in listclass.ncattrs():
+                    if verbose > 0:
+                        print("      ==> treating attribute {}".format(attr))
+                    if attr != 'classtype':  #classtype is for treatment, don't get it back
+                        if attr == 'varname':
+                            attribute = 'name'
+                        else:
+                            attribute = attr
+                        if type(Tree) == list:
+                            if verbose > 0:
+                                print("        printing with index 0")
+                            if listtype == 'dict':
+                                Tree[0][attribute] = str(listclass.getncattr(attr))
+                            else:
+                                Tree[0].__dict__[attribute] = str(listclass.getncattr(attr))
+                        else:
+                            if listclass.getncattr(attr) == 'True':
+                                Tree.__dict__[attribute] = True
+                            elif listclass.getncattr(attr) == 'False':
+                                Tree.__dict__[attribute] = False
+                            elif listclass.getncattr(attr) == 'emptycell':
+                                Tree.__dict__[attribute] = []
+                            else:
+                                Tree.__dict__[attribute] = str(listclass.getncattr(attr))
+                # }}}
+            # }}}
+        NCFile.close()
+    if len(args) >= 2 and isinstance(args[1], str):  # (value)
+        value = [nvdict[name] for name in args[1:]]
+        return value
+
+    elif len(args) == 2 and isinstance(args[1], list):  # ([values])
+        value = [nvdict[name] for name in args[1]]
+        return value
+
+    elif (len(args) == 2 and isinstance(args[1], dict)) or (len(args) == 1):  # ({names:values})
+        return nvdict
+
+
+def netCDFread(filename):
+    print(('Opening {} for reading '.format(filename)))
+    NCData = Dataset(filename, 'r')
+    class_dict = {}
+    class_tree = {}
+
+    for group in NCData.groups:
+        if len(NCData.groups[group].groups) > 0:
+            for subgroup in NCData.groups[group].groups:
+                classe = str(group) + '.' + str(subgroup)
+                grpclass = str(getattr(NCData.groups[group].groups[subgroup], 'classtype'))
+                class_dict[classe] = [grpclass, ]
+                if class_dict[classe][0] not in ['dict', 'list', 'cell']:
+                    try:
+                        modulename = split(r'\.', class_dict[classe][0])[0]
+                        class_dict[classe].append(import_module(modulename))
+                    except ModuleNotFoundError:
+                        #submodule probably has a different name
+                        modulename = str(getattr(NCData.groups[group].groups[subgroup], 'classtype'))
+                        print("WARNING importing {} rather than {}".format(modulename, class_dict[classe][0]))
+                        class_dict[classe].append(import_module(modulename))
+                class_tree[classe] = [group, subgroup]
+        else:
+            classe = str(group)
+            try:
+                class_dict[classe] = [str(getattr(NCData.groups[group], 'classtype')), ]
+                if class_dict[classe][0] not in ['dict', 'list', 'cell']:
+                    modulename = split(r'\.', class_dict[classe][0])[0]
+                    try:
+                        class_dict[classe].append(import_module(modulename))
+                        class_tree[classe] = [group, ]
+                    except ModuleNotFoundError:
+                        print("WARNING: module {} does not exist anymore and is skipped".format(modulename))
+
+            except AttributeError:
+                print(('group {} is empty'.format(group)))
+    NCData.close()
+    return class_dict, class_tree
Index: /issm/branches/trunk-dlcheng-ASE/src/m/io/savemodel.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/io/savemodel.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/io/savemodel.js	(revision 27955)
@@ -0,0 +1,8 @@
+function savemodel(md) {
+
+	var string=encodeURI(JSONfn.stringify(md));
+
+	var url='data:text/json:charset=utf8,' + encodeURIComponent(string);
+	window.open(url, '_blank');
+	window.focus();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/io/savevars.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/io/savevars.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/io/savevars.py	(revision 27955)
@@ -0,0 +1,62 @@
+import shelve
+import os.path
+
+
+def savevars(*args):
+    """
+    SAVEVARS - function to save variables to a file.
+
+    This function saves one or more variables to a file.  The names of the variables
+    must be supplied.  If more than one variable is specified, it may be done with
+    lists of names and values or a dictionary of name:value pairs.  All the variables
+    in the workspace may be saved by specifying the globals() dictionary, but this
+    may include a lot of extraneous data.
+
+    Usage:
+       savevars('shelve.dat', 'a', a)
+       savevars('shelve.dat', ['a', 'b'], [a, b])
+       savevars('shelve.dat', {'a':a, 'b':b})
+       savevars('shelve.dat', globals())
+
+    """
+
+    filename = ''
+    nvdict = {}
+
+    if len(args) >= 1 and isinstance(args[0], str):
+        filename = args[0]
+        if not filename:
+            filename = '/tmp/shelve.dat'
+
+    else:
+        raise TypeError("Missing file name.")
+
+    if len(args) >= 3 and isinstance(args[1], str):  # (filename, name, value)
+        for i in range(1, len(args), 2):
+            nvdict[args[i]] = args[i + 1]
+
+    elif len(args) == 3 and isinstance(args[1], list) and isinstance(args[2], list):  # (filename, [names], [values])
+        for name, value in zip(args[1], args[2]):
+            nvdict[name] = value
+
+    elif len(args) == 2 and isinstance(args[1], dict):  # (filename, {names:values})
+        nvdict = args[1]
+
+    else:
+        raise TypeError("Unrecognized input arguments.")
+
+    if os.path.exists(filename):
+        print(("Shelving variables to existing file '%s'." % filename))
+    else:
+        print(("Shelving variables to new file '%s'." % filename))
+
+    my_shelf = shelve.open(filename, 'c')  # 'c' for create if not exist, else 'n' for new
+
+    for name, value in list(nvdict.items()):
+        try:
+            my_shelf[name] = value
+            print(("Variable '%s' shelved." % name))
+        except TypeError:
+            print(("Variable '%s' not shelved." % name))
+
+    my_shelf.close()
Index: /issm/branches/trunk-dlcheng-ASE/src/m/io/structtonc.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/io/structtonc.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/io/structtonc.m	(revision 27955)
@@ -0,0 +1,132 @@
+function [var_id,counter] = structtonc(ncid,fieldname,field,depth,var_id,counter,step);
+%STRUCTTONC- fill nc file with structure fields
+%
+%   WARNING: Do not use this function, this function is called
+%            by netcdf(model);
+%
+
+%update counter
+counter   = counter+1;
+
+%Check that field is not empty
+if isempty(field) | (isa(field,'struct') & numel(fields(field))==0),
+	if(step==1), disp(['skipping ' fieldname ' (empty)...']); end
+	return;
+end
+
+%Write field class
+[var_id,counter] = declareclass(ncid,[fieldname '_class'],class(field),depth,var_id,counter,step);
+
+%Double scalar
+if isa(field,'double') & numel(field)==1,
+	if step==1,
+		var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_DOUBLE',[]);
+	else
+		netcdf.putVar(ncid,var_id(counter),field);
+	end
+
+%Double vector
+elseif isa(field,'double') & size(field,2)==1,
+
+if step==1,
+		dim_id          = netcdf.defDim(ncid,[fieldname '_size1'],size(field,1));
+		var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_DOUBLE',dim_id);
+	else
+		netcdf.putVar(ncid,var_id(counter),field);
+	end
+
+%double matrix
+elseif isa(field,'double') & size(field,2)>1,
+	if step==1,
+		dim1_id         = netcdf.defDim(ncid,[fieldname '_size1'],size(field,1));
+		dim2_id         = netcdf.defDim(ncid,[fieldname '_size2'],size(field,2));
+		var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_DOUBLE',[dim2_id dim1_id]);
+	else
+		netcdf.putVar(ncid,var_id(counter),transpose(field));
+	end
+
+%string
+elseif isa(field,'char') 
+		if step==1,
+			dim_id          = netcdf.defDim(ncid,[fieldname '_size1'],numel(field));
+			var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_CHAR',dim_id);
+		else
+			netcdf.putVar(ncid,var_id(counter),field);
+		end
+
+%Boolean of size 1
+elseif isa(field,'logical') & numel(field)==1,
+	if step==1,
+		var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_BYTE',[]);
+	else
+		netcdf.putVar(ncid,var_id(counter),int8(field));
+	end
+
+%Structures
+elseif isa(field,'struct'),
+	sublength = numel(field);
+	subfields = fields(field);
+	allsubfields = '';
+	for i=1:length(subfields),
+		allsubfields=[allsubfields subfields{i}];
+		if i~=length(subfields), allsubfields=[allsubfields ' ']; end
+	end
+	%Write size
+	if step==1,
+		var_id(counter) = netcdf.defVar(ncid,[fieldname '_length'],'NC_INT',[]);
+	else
+		netcdf.putVar(ncid,var_id(counter),sublength);
+	end
+	counter=counter+1;
+	%Write fields
+	if step==1,
+
+		dim_id          = netcdf.defDim(ncid,[fieldname '_fields_length'],numel(allsubfields));
+		var_id(counter) = netcdf.defVar(ncid,[fieldname '_fields'],'NC_CHAR',dim_id);
+	else
+		netcdf.putVar(ncid,var_id(counter),allsubfields);
+	end
+	for n=1:sublength,
+		for i=1:length(subfields),
+			[var_id,counter] = structtonc(ncid,[fieldname '.' subfields{i} '(' num2str(n) ')'],field(n).(subfields{i}),depth+1,var_id,counter,step);
+		end
+	end
+
+%Cell
+elseif isa(field,'cell'),
+	sublength = numel(field);
+	%Write size
+	if step==1,
+		var_id(counter) = netcdf.defVar(ncid,[fieldname '_length'],'NC_INT',[]);
+	else
+		netcdf.putVar(ncid,var_id(counter),sublength);
+	end
+	for i=1:sublength,
+		[var_id,counter] = structtonc(ncid,[fieldname '{' num2str(i) '}'],field{i},depth+1,var_id,counter,step);
+	end
+
+%Objects
+elseif isobject(field),
+	subfields = fields(field);
+	for i=1:length(subfields),
+		[var_id,counter] = structtonc(ncid,[fieldname '.' subfields{i}],field.(subfields{i}),depth+1,var_id,counter,step);
+	end
+else
+	disp(['skipping ' fieldname ' (format not supported)...']);
+end
+
+function [var_id,counter] = declareclass(ncid,fieldname,field,depth,var_id,counter,step);
+
+if isa(field,'char') 
+	if step==1,
+		dim_id          = netcdf.defDim(ncid,[fieldname '_length'],numel(field));
+		var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_CHAR',dim_id);
+	else
+		netcdf.putVar(ncid,var_id(counter),field);
+	end
+else
+	error('class name is not a string');
+end
+
+%update counter
+counter   = counter+1;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/io/writetofile.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/io/writetofile.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/io/writetofile.js	(revision 27955)
@@ -0,0 +1,111 @@
+//download.js v4.0, by dandavis; 2008-2015. [CCBY2] see http://danml.com/download.html for tests/usage
+// v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime
+// v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs
+// v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support. 3.1 improved safari handling.
+// v4 adds AMD/UMD, commonJS, and plain browser support
+// https://github.com/rndme/download
+
+function writetofile(data, strFileName, strMimeType) {
+	
+	var self = window, // this script is only for browsers anyway...
+		u = "application/octet-stream", // this default mime also triggers iframe downloads
+		m = strMimeType || u,
+		x = data,
+		D = document,
+		a = D.createElement("a"),
+		z = function(a){return String(a);},
+		B = (self.Blob || self.MozBlob || self.WebKitBlob || z);
+		B=B.call ? B.bind(self) : Blob ;
+		var fn = strFileName || "download",
+		blob,
+		fr;
+
+	if(String(this)==="true"){ //reverse arguments, allowing download.bind(true, "text/xml", "export.xml") to act as a callback
+		x=[x, m];
+		m=x[0];
+		x=x[1];
+	}
+
+	//go ahead and download dataURLs right away
+	if(String(x).match(/^data\:[\w+\-]+\/[\w+\-]+[,;]/)){
+		return navigator.msSaveBlob ?  // IE10 can't do a[download], only Blobs:
+			navigator.msSaveBlob(d2b(x), fn) :
+			saver(x) ; // everyone else can save dataURLs un-processed
+	}//end if dataURL passed?
+
+	blob = x instanceof B ?
+		x :
+		new B([x], {type: m}) ;
+
+	function d2b(u) {
+		var p= u.split(/[:;,]/),
+		t= p[1],
+		dec= p[2] == "base64" ? atob : decodeURIComponent,
+		bin= dec(p.pop()),
+		mx= bin.length,
+		i= 0,
+		uia= new Uint8Array(mx);
+
+		for(i;i<mx;++i) uia[i]= bin.charCodeAt(i);
+
+		return new B([uia], {type: t});
+	}
+
+	function saver(url, winMode){
+		if ('download' in a) { //html5 A[download]
+			a.href = url;
+			a.setAttribute("download", fn);
+			a.innerHTML = "downloading...";
+			D.body.appendChild(a);
+			setTimeout(function() {
+				a.click();
+				D.body.removeChild(a);
+				if(winMode===true){setTimeout(function(){ self.URL.revokeObjectURL(a.href);}, 250 );}
+			}, 66);
+			return true;
+		}
+
+		if(typeof safari !=="undefined" ){ // handle non-a[download] safari as best we can:
+			url="data:"+url.replace(/^data:([\w\/\-\+]+)/, u);
+			if(!window.open(url)){ // popup blocked, offer direct download:
+				if(confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")){ location.href=url; }
+			}
+			return true;
+		}
+
+		//do iframe dataURL download (old ch+FF):
+		var f = D.createElement("iframe");
+		D.body.appendChild(f);
+
+		if(!winMode){ // force a mime that will download:
+			url="data:"+url.replace(/^data:([\w\/\-\+]+)/, u);
+		}
+		f.src=url;
+		setTimeout(function(){ D.body.removeChild(f); }, 333);
+	}//end saver
+
+	if (navigator.msSaveBlob) { // IE10+ : (has Blob, but not a[download] or URL)
+		return navigator.msSaveBlob(blob, fn);
+	}
+
+	if(self.URL){ // simple fast and modern way using Blob and URL:
+		saver(self.URL.createObjectURL(blob), true);
+	}else{
+		// handle non-Blob()+non-URL browsers:
+		if(typeof blob === "string" || blob.constructor===z ){
+			try{
+				return saver( "data:" +  m   + ";base64,"  +  self.btoa(blob)  );
+			}catch(y){
+				return saver( "data:" +  m   + "," + encodeURIComponent(blob)  );
+			}
+		}
+
+		// Blob but not URL:
+		fr=new FileReader();
+		fr.onload=function(e){
+			saver(this.result);
+		};
+		fr.readAsDataURL(blob);
+	}
+	return true;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/js/writejs1Darray.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/js/writejs1Darray.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/js/writejs1Darray.m	(revision 27955)
@@ -0,0 +1,14 @@
+function writejs1Darray(fid,prefix,array)
+
+	if isempty(array)
+		fprintf(fid,'%s=[];\n',prefix);
+	else if  isscalar(array),
+		fprintf(fid,'%s=%g;\n',prefix,array);
+	else
+		fprintf(fid,'%s=[',prefix);
+		for i=1:length(array)-1,
+			fprintf(fid,'%g,',array(i));
+		end
+		fprintf(fid,'%g];\n',array(end));
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/js/writejs2Darray.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/js/writejs2Darray.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/js/writejs2Darray.m	(revision 27955)
@@ -0,0 +1,20 @@
+function writejs2Darray(fid,prefix,array)
+
+	if  isscalar(array),
+		fprintf(fid,'%s=%g;\n',prefix,array);
+	else
+		fprintf(fid,'%s=[',prefix);
+		for i=1:size(array,1)-1,
+			fprintf(fid,'[%g,',array(i,1));
+			for j=2:size(array,2)-1,
+				fprintf(fid,'%g,',array(i,j));
+			end
+			fprintf(fid,'%g],',array(i,end));
+		end
+		fprintf(fid,'[%g,',array(end,1));
+		for j=2:size(array,2)-1,
+			fprintf(fid,'%g,',array(end,j));
+		end
+		fprintf(fid,'%g]];\n',array(end,end));
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/js/writejscellarray.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/js/writejscellarray.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/js/writejscellarray.m	(revision 27955)
@@ -0,0 +1,21 @@
+function writejscellarray(fid,prefix,cell)
+
+
+	if ~iscell(cell),
+		fprintf(fid,'%s=%g;\n',prefix,cell);
+	else
+		fprintf(fid,'%s=[',prefix);
+		for i=1:length(cell),
+			array=cell{i};
+			fprintf(fid,'[');
+			for j=1:length(array)-1,
+				fprintf(fid,'%g,',array(j));
+			end
+			fprintf(fid,'%g]',array(end));
+			if i<length(cell), fprintf(fid,','); end
+		end
+		fprintf(fid,'];\n');
+	end
+
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/js/writejscellstring.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/js/writejscellstring.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/js/writejscellstring.m	(revision 27955)
@@ -0,0 +1,22 @@
+function writejscellstring(fid,prefix,cell)
+
+
+	if ~iscell(cell),
+		fprintf(fid,'%s=%g;\n',prefix,cell);
+	else
+		if length(cell),
+			if length(cell)==1,
+				fprintf(fid,'%s=[''%s''];\n',prefix,cell{1});
+			else
+				fprintf(fid,'%s=[''%s'',',prefix,cell{1});
+				for i=2:length(cell)-1,
+					fprintf(fid,'''%s'',',cell{i});
+				end
+				fprintf(fid,'''%s''];\n',cell{end});
+			end
+		else
+			fprintf(fid,'%s=[];\n',prefix);
+		end
+	end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/js/writejsdouble.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/js/writejsdouble.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/js/writejsdouble.m	(revision 27955)
@@ -0,0 +1,7 @@
+function writejsdouble(fid,prefix,scalar)
+	if  isinf(scalar),
+		fprintf(fid,'%s=Infinity;\n',prefix);
+	else
+		fprintf(fid,'%s=%g;\n',prefix,scalar);
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/js/writejsstring.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/js/writejsstring.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/js/writejsstring.m	(revision 27955)
@@ -0,0 +1,3 @@
+function writejsstring(fid,prefix,string)
+	fprintf(fid,'%s=''%s'';\n',prefix,string);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/js/writejsstruct.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/js/writejsstruct.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/js/writejsstruct.m	(revision 27955)
@@ -0,0 +1,16 @@
+function writejsstruct(fid,prefix,structure)
+	
+	fprintf(fid,'%s={};\n',prefix);
+
+	fields=fieldnames(structure);
+	for i=1:numel(fields),
+		fieldname=fields{i};
+		field=structure.(fieldname);
+		if isscalar(field),
+			fprintf(fid,'%s[''%s'']=%g;\n',prefix,fieldname,field);
+		end
+		if ischar(field),
+			fprintf(fid,'%s[''%s'']=''%s'';\n',prefix,fieldname,field);
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/README.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/README.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/README.txt	(revision 27955)
@@ -0,0 +1,66 @@
+The Matlab scripts in the kml directory may be divided into three areas:
+    1. kml class definitions
+    2. kml utilities
+    3. kml drivers
+
+Each of the three will be discussed below.
+
+I.  KML Class Definitions
+
+All the kml is defined using the reference:
+http://code.google.com/apis/kml/documentation/kmlreference.html
+
+Many of the kml objects described in the first figure of the kml reference are defined as Matlab objects, with most or all of the kml properties.  The classes consist of one base class and several levels of derived classes (super and sub, respectively, in Matlab terminology).  The hierarchy of these classes are as follows.
+
+kml_object.m
+    kml_feature.m
+        kml_placemark.m
+        kml_container.m
+            kml_folder.m
+            kml_document.m
+    kml_geometry.m
+        kml_point.m
+        kml_linestring.m
+        kml_linearring.m
+        kml_polygon.m
+        kml_multigeometry.m
+    kml_styleselector.m
+        kml_style.m
+    kml_substyle.m
+        kml_colorstyle.m
+            kml_linestyle.m
+            kml_polystyle.m
+
+For each class, the methods consist of a constructor, a display method, a fieldnames method (since objects can not use the Matlab "fieldnames" function), a set method, and a write method.  All of the methods, as well as the properties, inherit the base classes where appropriate rather than repeating any functionality.  The Matlab "help" command can be used to list the documentation for any of the classes.
+
+II.  KML Utilities
+
+The kml utilities take an ISSM model (and optionally results) and write it into a kml object, typically a kml folder, in various ways.  The kml object could then be written into a file, by itself or with others, and imported into Google Earth.  Note that kml polygons can only be one color, not interpolated.
+
+The following kml utilities have been written.  The kml_mesh_elem and kml_partitions are probably the most useful, because the rest are intermediate results.  The Matlab "help" command can again be used to list the documentation.
+
+kml_mesh_elem.m      - write a kml folder with each ISSM element as a kml polygon (color-coded by results, if provided)
+kml_part_flagedges.m - write a kml folder with each segment between two ISSM partitions as a kml linestring
+kml_unsh_edges.m     - write a kml folder with each unshared segment of an ISSM partition as a kml linestring
+kml_part_elems.m     - write a kml folder with all the elements of each ISSM partition as kml polygons, noting that elements are repeated for each partition in which they have nodes (color-coded by results, if provided)
+kml_part_edges.m     - write a kml folder with all the edges of each ISSM partition as a kml linestring (color-coded by results, if provided)
+kml_partitions.m     - write a kml folder with each ISSM partition as a kml polygon (color-coded by results, if provided)
+
+In order the write any and all kml objects that have been constructed to a file for import into Google Earth, the following function has been written.
+
+kml_file_write.m     - write a kml file of the specified kml objects (may open and/or close file)
+
+III.  KML Drivers
+
+There is one kml driver, which may be used as a model for custom drivers.  It takes an ISSM model, converts the data from node to element (if necessary), and writes some kml headers and style templates.  In addition, it constructs six kml folders for the first six kml utilities above, then writes those to the file and closes the file.
+
+kml_mesh_write.m     - write a kml file of the ISSM model (color-coded by results, if provided)
+
+IV.  Other Utilities
+
+There are some other utilities that are used in the construction of topological tables for the kml writing.
+
+kmlnodeconnectivity.m   - create a node connectivity table (nnodes x mxepg+1)
+edgeadjacency.m      - create an edge adjacency array (elems x edges)
+edgeperimeter.m      - create an edge perimeter (edgeper x 2) and element perimeter (edgeper x 1) list
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/edgeadjacency.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/edgeadjacency.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/edgeadjacency.m	(revision 27955)
@@ -0,0 +1,47 @@
+%
+%  create an edge adjacency table for the elements in the model.
+%
+%  [edgeadj]=edgeadjacency(elem,nodecon)
+%
+%  where the required input is:
+%    elem          (numeric, element connectivity array (elems x nodes))
+%    nodecon       (numeric, node connectivity array (nodes x elems+1))
+%
+%  and the required output is:
+%    edgeadj       (numeric, edge adjacency array (elems x edges))
+%
+function [edgeadj]=edgeadjacency(elem,nodecon)
+
+if ~nargin
+    help edgeadjacency
+    return
+end
+
+%%  create the edge adjacency array
+
+edgeadj=zeros(size(elem));
+
+%  loop over the elements
+
+for i=1:size(elem,1)
+
+%  loop over the edges for each element (trias only for now)
+
+    for j=1:size(elem,2)
+        inode1=elem(i,j);
+        inode2=elem(i,mod(j,size(elem,2))+1);
+
+%  loop over the elements containing the first node of the edge to see
+%  if they contain the second node of the edge
+
+        for k=1:nodecon(inode1,end)
+            if (nodecon(inode1,k) ~= i) && ...
+               ~isempty(find(elem(nodecon(inode1,k),:)==inode2,1))
+                edgeadj(i,j)=nodecon(inode1,k);
+                break;
+            end
+        end
+    end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/edgeperimeter.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/edgeperimeter.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/edgeperimeter.m	(revision 27955)
@@ -0,0 +1,87 @@
+%
+%  create an edge perimeter list for the elements in the model.
+%
+%  [edgeper,elemper,iloop]=edgeperimeter(elem,nodecon,edgeadj)
+%
+%  where the required input is:
+%    elem          (numeric, element connectivity array (elems x nodes))
+%    nodecon       (numeric, node connectivity array (nodes x elems+1))
+%
+%  and the required output is:
+%    edgeper       (numeric, edge perimeter list (edgeper x 2))
+%    elemper       (numeric, element perimeter list (edgeper x 1))
+%    iloop         (numeric, index for each loop (nloop))
+%
+%  the optional input is:
+%    edgeadj       (numeric, edge adjacency array (elems x edges))
+%
+function [edgeper,elemper,iloop]=edgeperimeter(elem,nodecon,edgeadj)
+
+if ~nargin
+    help edgeperimeter
+    return
+end
+
+%%  create the edge adjacency array
+
+if ~exist('edgeadj','var') || isempty(edgeadj)
+    edgeadj=edgeadjacency(elem,nodecon);
+end
+
+%%  create the unshared edge list
+
+[icol,irow]=find(edgeadj'==0);
+edgeuns=zeros(length(irow),2);
+elemuns=zeros(length(irow),1);
+
+%  loop over the edges
+
+for i=1:length(irow)
+    edgeuns(i,1)=elem(irow(i),icol(i));
+    edgeuns(i,2)=elem(irow(i),mod(icol(i),size(elem,2))+1);
+    elemuns(i)=irow(i);
+end
+
+%%  create the edge perimeter list
+
+edgeper=zeros(size(edgeuns));
+elemper=zeros(size(elemuns));
+iloop=[];
+ipt=0;
+
+%  find the beginning of a loop
+
+while ~isempty(find(edgeuns,1))
+    ipt=ipt+1;
+    iloop(end+1)=ipt;
+    [irow,icol]=find(edgeuns,1);
+    edgeper(ipt,:)=edgeuns(irow,:);
+    elemper(ipt)  =elemuns(irow);
+    edgeuns(irow,:)=[0 0];
+    elemuns(irow)  =0;
+    [irow,icol]=find(edgeuns==edgeper(ipt,2),1);
+
+%  continue following the loop
+
+    while ~isempty(irow)
+        ipt=ipt+1;
+        if (icol == 1)
+            edgeper(ipt,:)=edgeuns(irow,:);
+        else
+            edgeper(ipt,1)=edgeuns(irow,2);
+            edgeper(ipt,2)=edgeuns(irow,1);
+        end
+        elemper(ipt)  =elemuns(irow);
+        edgeuns(irow,:)=[0 0];
+        elemuns(irow)  =0;
+        [irow,icol]=find(edgeuns==edgeper(ipt,2),1);
+    end
+
+%  check to see if loop is closed
+
+    if (edgeper(iloop(end),1) ~= edgeper(ipt,2))
+        warning('Loop %d is not closed.\n',length(loop));
+    end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml2exp.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml2exp.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml2exp.m	(revision 27955)
@@ -0,0 +1,26 @@
+function kml2exp(input,output)
+%KML2EXP: transform kml file Argus exp file.
+%
+% Usage:    kmltoexp('temp.kml','temp2.exp')
+%
+%
+
+%First, read polygon kml file.
+structure=kml_shapefile(input);
+
+%create exp file: 
+domain=struct();
+for i=1:length(structure),
+
+	if isfield(structure,'name'),
+		domain(end+1).name=structure(i).name;
+	else
+		domain(end+1).name='NaN';
+	end
+
+	domain(end).density=1;
+	domain(end).x=structure(i).X;
+	domain(end).y=structure(i).Y;
+end
+domain=domain(2:end);
+expwrite(domain,output);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml2expg.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml2expg.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml2expg.m	(revision 27955)
@@ -0,0 +1,13 @@
+function kml2expg(filename)
+
+	[path,name,ext]=fileparts(filename);
+
+	if strcmpi(ext,'.kmz'),
+		eval(['!unzip ' filename]);
+		eval(['!mv doc.kml ' name '.kml']);
+		kml2exp([name '.kml'],[name '.exp']);
+		expll2xy([name '.exp'],1);
+	end
+
+	kml2exp([name '.kml'],[name '.exp']);
+	expll2xy([name '.exp'],1);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_colorstyle.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_colorstyle.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_colorstyle.m	(revision 27955)
@@ -0,0 +1,201 @@
+%
+%  definition for the kml_colorstyle super (base) and sub (derived) abstract class.
+%
+%  [kml]=kml_colorstyle(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, colorstyle id, '')
+%    color         (char, opacity/color in hex aabbggrr, 'ffffffff')
+%    colormode     (char, color mode , 'normal')
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_colorstyle < kml_substyle
+    properties
+        color     ='ffffffff';
+        colormode ='normal';
+    end
+
+    methods
+        function [kml]=kml_colorstyle(varargin)
+
+            kml=kml@kml_substyle(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_colorstyle());
+
+                        for i=length(fieldnames(kml_substyle()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                if strcmp(class(kml),'kml_colorstyle')
+                    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                        class(kml),inputname(1),string_dim(kml,i)));
+                end
+                disp@kml_substyle(kml(i));
+                disp(sprintf('         color: ''%s'''  ,kml(i).color));
+                if strcmp(class(kml),'kml_colorstyle')
+                    disp(sprintf('     colormode: ''%s''\n',kml(i).colormode));
+                else
+                    disp(sprintf('     colormode: ''%s'''  ,kml(i).colormode));
+                end
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_substyle());
+            fnames={fnames{:} ...
+                    'color' ...
+                    'colormode' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the colorstyles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_colorstyle')
+                    if ~isempty(kmli.id)
+                        fprintf(fid,'%s<!ColorStyle id="%s">\n',indent,kmli.id);
+                    else
+                        fprintf(fid,'%s<!ColorStyle>\n',indent);
+                    end
+                end
+                kml_write@kml_substyle(kmli,fid,indent);
+                if ~isempty(kmli.color)
+                    fprintf(fid,'%s  <color>%s</color>\n',indent,kmli.color);
+                end
+                if ~isempty(kmli.colormode)
+                    fprintf(fid,'%s  <colorMode>%s</colorMode>\n',indent,kmli.colormode);
+                end
+                if strcmp(class(kml),'kml_colorstyle')
+                    fprintf(fid,'%s</!ColorStyle>\n',indent);
+                end
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the colorstyles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_colorstyle')
+                    if ~isempty(kmli.id)
+                        sbuf=add(sbuf,sprintf('%s<!ColorStyle id="%s">\n',indent,kmli.id));
+                    else
+                        sbuf=add(sbuf,sprintf('%s<!ColorStyle>\n',indent));
+                    end
+                end
+                sbuf=kml_swrite@kml_substyle(kmli,sbuf,indent);
+                if ~isempty(kmli.color)
+                    sbuf=add(sbuf,sprintf('%s  <color>%s</color>\n',indent,kmli.color));
+                end
+                if ~isempty(kmli.colormode)
+                    sbuf=add(sbuf,sprintf('%s  <colorMode>%s</colorMode>\n',indent,kmli.colormode));
+                end
+                if strcmp(class(kml),'kml_colorstyle')
+                    sbuf=add(sbuf,sprintf('%s</!ColorStyle>\n',indent));
+                end
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_container.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_container.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_container.m	(revision 27955)
@@ -0,0 +1,198 @@
+%
+%  definition for the kml_container super (base) and sub (derived) abstract class.
+%
+%  [kml]=kml_container(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, container id, '')
+%    name          (char, name, '')
+%    visibility    (logical, visibility, true)
+%    open          (logical, open, false)
+%    snippet       (char, snippet, '')
+%    descript      (char, description, '')
+%    styleurl      (char, style url, '')
+%    style         (cell array, styles)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_container < kml_feature
+    properties
+    end
+
+    methods
+        function [kml]=kml_container(varargin)
+
+            kml=kml@kml_feature(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_container());
+
+                        for i=length(fieldnames(kml_feature()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                if strcmp(class(kml),'kml_container')
+                    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                        class(kml),inputname(1),string_dim(kml,i)));
+                end
+                disp@kml_feature(kml(i));
+                if strcmp(class(kml),'kml_container')
+                    disp(sprintf('\n'));
+                end
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_feature());
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the containers
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_container')
+                    if ~isempty(kmli.id)
+                        fprintf(fid,'%s<!Container id="%s">\n',indent,kmli.id);
+                    else
+                        fprintf(fid,'%s<!Container>\n',indent);
+                    end
+                end
+                kml_write@kml_feature(kmli,fid,indent);
+                if strcmp(class(kml),'kml_container')
+                    fprintf(fid,'%s<!/Container>\n',indent);
+                end
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the containers
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_container')
+                    if ~isempty(kmli.id)
+                        sbuf=add(sbuf,sprintf('%s<!Container id="%s">\n',indent,kmli.id));
+                    else
+                        sbuf=add(sbuf,sprintf('%s<!Container>\n',indent));
+                    end
+                end
+                sbuf=kml_swrite@kml_feature(kmli,sbuf,indent);
+                if strcmp(class(kml),'kml_container')
+                    sbuf=add(sbuf,sprintf('%s<!/Container>\n',indent));
+                end
+            end
+
+        end
+
+%  delete the object
+
+        function []=delete(kml)
+
+%  loop over the containers
+
+            for i=numel(kml):-1:1
+                kmli=kml(i);
+                delete@kml_feature(kmli);
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_document.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_document.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_document.m	(revision 27955)
@@ -0,0 +1,235 @@
+%
+%  definition for the kml_document sub (derived) class.
+%
+%  [kml]=kml_document(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, document id, '')
+%    name          (char, name, '')
+%    visibility    (logical, visibility, true)
+%    open          (logical, open, false)
+%    snippet       (char, snippet, '')
+%    descript      (char, description, '')
+%    styleurl      (char, style url, '')
+%    style         (cell array, styles)
+%    feature       (cell array, placemark features)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_document < kml_container
+    properties
+        feature   ={};
+    end
+
+    methods
+        function [kml]=kml_document(varargin)
+
+            kml=kml@kml_container(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_document());
+
+                        for i=length(fieldnames(kml_container()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_container(kml(i));
+                disp(sprintf('       feature: %s %s\n' ,string_size(kml(i).feature),...
+                             class(kml(i).feature)));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_feature());
+            fnames={fnames{:} ...
+                    'feature' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the documents
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<Document id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<Document>\n',indent);
+                end
+                kml_write@kml_container(kmli,fid,indent);
+
+%  loop over the features for each document
+
+                for j=1:numel(kmli.feature)
+                    if ~isempty(kmli.feature{j})
+                        if isa(kmli.feature{j},'kml_feature')
+                            kml_write(kmli.feature{j},fid,[indent '  ']);
+                        else
+                            warning('kml(%d).feature{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmli.feature{j}),'kml_feature');
+                        end
+                    end
+                end
+
+                fprintf(fid,'%s</Document>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the documents
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<Document id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<Document>\n',indent));
+                end
+                sbuf=kml_swrite@kml_container(kmli,sbuf,indent);
+
+%  loop over the features for each document
+
+                for j=1:numel(kmli.feature)
+                    if ~isempty(kmli.feature{j})
+                        if isa(kmli.feature{j},'kml_feature')
+                            sbuf=kml_swrite(kmli.feature{j},sbuf,[indent '  ']);
+                        else
+                            warning('kml(%d).feature{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmli.feature{j}),'kml_feature');
+                        end
+                    end
+                end
+
+                sbuf=add(sbuf,sprintf('%s</Document>\n',indent));
+            end
+
+        end
+
+%  delete the object
+
+        function []=delete(kml)
+
+%  loop over the documents
+
+            for i=numel(kml):-1:1
+                kmli=kml(i);
+                delete@kml_container(kmli);
+
+%  loop over the features for each document
+
+                for j=numel(kmli.feature):-1:1
+                    if ~isempty(kmli.feature{j})
+                        if isa(kmli.feature{j},'kml_feature')
+                            delete(kmli.feature{j});
+                        else
+                            warning('kml(%d).feature{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmli.feature{j}),'kml_feature');
+                        end
+                    end
+                end
+                kmli.feature   ={};
+
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_feature.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_feature.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_feature.m	(revision 27955)
@@ -0,0 +1,294 @@
+%
+%  definition for the kml_feature super (base) and sub (derived) abstract class.
+%
+%  [kml]=kml_feature(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, feature id, '')
+%    name          (char, name, '')
+%    visibility    (logical, visibility, true)
+%    open          (logical, open, false)
+%    snippet       (char, snippet, '')
+%    descript      (char, description, '')
+%    styleurl      (char, style url, '')
+%    style         (cell array, styles)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_feature < kml_object
+    properties
+        name      ='';
+        visibility=true;
+        open      =false;
+        snippet   ='';
+        descript  ='';
+        styleurl  ='';
+        style     ={};
+    end
+
+    methods
+        function [kml]=kml_feature(varargin)
+
+            kml=kml@kml_object(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_feature());
+
+                        for i=length(fieldnames(kml_object()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                if strcmp(class(kml),'kml_feature')
+                    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                        class(kml),inputname(1),string_dim(kml,i)));
+                end
+                disp@kml_object(kml(i));
+                disp(sprintf('          name: ''%s'''  ,kml(i).name));
+                disp(sprintf('    visibility: %g'      ,kml(i).visibility));
+                disp(sprintf('          open: %g'      ,kml(i).open));
+                disp(sprintf('       snippet: ''%s'''  ,kml(i).snippet));
+                disp(sprintf('      descript: ''%s'''  ,kml(i).descript));
+                disp(sprintf('      styleurl: ''%s'''  ,kml(i).styleurl));
+                if strcmp(class(kml),'kml_feature')
+                    disp(sprintf('         style: %s %s\n' ,string_size(kml(i).style),...
+                                 class(kml(i).style)));
+                else
+                    disp(sprintf('         style: %s %s'   ,string_size(kml(i).style),...
+                                 class(kml(i).style)));
+                end
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_object());
+            fnames={fnames{:} ...
+                    'name' ...
+                    'visibility' ...
+                    'open' ...
+                    'snippet' ...
+                    'descript' ...
+                    'styleurl' ...
+                    'style' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the features
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_feature')
+                    if ~isempty(kmli.id)
+                        fprintf(fid,'%s<!Feature id="%s">\n',indent,kmli.id);
+                    else
+                        fprintf(fid,'%s<!Feature>\n',indent);
+                    end
+                end
+                kml_write@kml_object(kmli,fid,indent);
+                if ~isempty(kmli.name)
+                    fprintf(fid,'%s  <name>%s</name>\n',indent,kmli.name);
+                end
+                fprintf(fid,'%s  <visibility>%d</visibility>\n',indent,kmli.visibility);
+                fprintf(fid,'%s  <open>%d</open>\n',indent,kmli.open);
+                if ~isempty(kmli.snippet)
+                    fprintf(fid,'%s  <Snippet maxLines="2">%s</Snippet>\n',indent,kmli.snippet);
+                end
+                if ~isempty(kmli.descript)
+                    fprintf(fid,'%s  <description>%s</description>\n',indent,kmli.descript);
+                end
+                if ~isempty(kmli.styleurl)
+                    fprintf(fid,'%s  <styleUrl>%s</styleUrl>\n',indent,kmli.styleurl);
+                end
+
+%  loop over the styles for each feature
+
+                for j=1:numel(kmli.style)
+                    if ~isempty(kmli.style{j})
+                        if isa(kmli.style{j},'kml_styleselector')
+                            kml_write(kmli.style{j},fid,[indent '  ']);
+                        else
+                            warning('kml(%d).style{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmli.style{j}),'kml_styleselector');
+                        end
+                    end
+                end
+
+                if strcmp(class(kml),'kml_feature')
+                    fprintf(fid,'%s<!/Feature>\n',indent);
+                end
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the features
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_feature')
+                    if ~isempty(kmli.id)
+                        sbuf=add(sbuf,sprintf('%s<!Feature id="%s">\n',indent,kmli.id));
+                    else
+                        sbuf=add(sbuf,sprintf('%s<!Feature>\n',indent));
+                    end
+                end
+                sbuf=kml_swrite@kml_object(kmli,sbuf,indent);
+                if ~isempty(kmli.name)
+                    sbuf=add(sbuf,sprintf('%s  <name>%s</name>\n',indent,kmli.name));
+                end
+                sbuf=add(sbuf,sprintf('%s  <visibility>%d</visibility>\n',indent,kmli.visibility));
+                sbuf=add(sbuf,sprintf('%s  <open>%d</open>\n',indent,kmli.open));
+                if ~isempty(kmli.snippet)
+                    sbuf=add(sbuf,sprintf('%s  <Snippet maxLines="2">%s</Snippet>\n',indent,kmli.snippet));
+                end
+                if ~isempty(kmli.descript)
+                    sbuf=add(sbuf,sprintf('%s  <description>%s</description>\n',indent,kmli.descript));
+                end
+                if ~isempty(kmli.styleurl)
+                    sbuf=add(sbuf,sprintf('%s  <styleUrl>%s</styleUrl>\n',indent,kmli.styleurl));
+                end
+
+%  loop over the styles for each feature
+
+                for j=1:numel(kmli.style)
+                    if ~isempty(kmli.style{j})
+                        if isa(kmli.style{j},'kml_styleselector')
+                            sbuf=kml_swrite(kmli.style{j},sbuf,[indent '  ']);
+                        else
+                            warning('kml(%d).style{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmli.style{j}),'kml_styleselector');
+                        end
+                    end
+                end
+
+                if strcmp(class(kml),'kml_feature')
+                    sbuf=add(sbuf,sprintf('%s<!/Feature>\n',indent));
+                end
+            end
+
+        end
+
+%  delete the object
+
+        function []=delete(kml)
+
+%  loop over the features
+
+            for i=numel(kml):-1:1
+                kmli=kml(i);
+
+%  loop over the styles for each feature
+
+                for j=numel(kmli.style):-1:1
+                    if ~isempty(kmli.style{j})
+                        if isa(kmli.style{j},'kml_styleselector')
+                            delete(kmli.style{j});
+                        else
+                            warning('kml(%d).style{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmli.style{j}),'kml_styleselector');
+                        end
+                    end
+                end
+                kmli.style     ={};
+
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_file_swrite.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_file_swrite.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_file_swrite.m	(revision 27955)
@@ -0,0 +1,131 @@
+%
+%  string write a kml file of the kml objects.
+%
+%  [fid]=kml_file_swrite(kobj,filek,indent)
+%
+%  where the required input is:
+%    kobj          (kml_object, kml object to be written)
+%     or
+%    kobj          (cell array, array of kml objects)
+%
+%  the optional input is:
+%    filek         (char, name of .kml file)
+%     or
+%    filek         (numeric, file ID of already-open file,
+%                            noting 1=stdout and 2=stderr)
+%    indent        (char, indention string)
+%
+%  and the optional output is:
+%    fid           (numeric, file ID of still-open file)
+%
+function [fid]=kml_file_swrite(kobj,filek,indent)
+
+if ~nargin
+    help kml_file_swrite
+    return
+end
+
+%%  process input data
+
+if ~iscell(kobj)
+    kobj={kobj};
+end
+
+fid=0;
+if ~exist('filek' ,'var') || (~ischar(filek) && ~isnumeric(filek))
+    filek='';
+elseif ischar(filek)
+    if     strcmpi(filek,'stdout')
+        fid=1;
+    elseif strcmpi(filek,'stderr')
+        fid=2;
+    end
+elseif isnumeric(filek)
+    fid=filek;
+    if     (fid == 1)
+        filek='stdout';
+    elseif (fid == 2)
+        filek='stderr';
+    else
+        filek='';
+    end
+end
+
+if ~exist('indent','var') || ~ischar(indent)
+    indent='  ';
+end
+
+%%  string write kml file
+
+sbuf=string_buf;
+
+%  open file and write header data (if necessary)
+
+if ~fid
+    if isempty(filek)
+        filek=input('kml file to write?  ','s');
+    end
+    [pathstr,name,ext,versn] = fileparts(filek);
+    if isempty(ext)
+        ext='.kml';
+    end
+    filek=fullfile(pathstr,[name ext versn]);
+
+    display(sprintf('Opening kml file ''%s''.',filek));
+    fid=fopen(sprintf('%s',filek),'w');
+    if (fid < 0)
+        error('File ''%s'' could not be opened.',filek);
+    end
+
+    sbuf=add(sbuf,sprintf('<?xml version="1.0" encoding="UTF-8"?>\n'));
+    sbuf=add(sbuf,sprintf('<kml xmlns="http://www.opengis.net/kml/2.2">\n'));
+end
+
+%  string write kml objects
+
+if ~isempty(filek)
+    display(sprintf('Writing to kml file ''%s'':',filek));
+else
+    display(sprintf('Writing to kml file id=%d:',fid));
+end
+for i=1:numel(kobj)
+    if isa(kobj{i},'kml_object')
+        display(sprintf('  Writing object %d of class ''%s'' and size %s.',...
+            i,class(kobj{i}),string_size(kobj{i})));
+        sbuf=kml_swrite(kobj{i},sbuf,indent);
+    else
+        if ~isempty(inputname(1))
+            warning('Object ''%s{%d}'' is a ''%s'' class object, not ''%s''.',...
+                inputname(1),i,class(kobj{i}),'kml_object');
+        else
+            warning('Object {%d} is a ''%s'' class object, not ''%s''.',...
+                             i,class(kobj{i}),'kml_object');
+        end
+    end
+end
+
+%  write trailer data and close file (if necessary)
+
+if ~nargout && (fid >= 3)
+    sbuf=add(sbuf,sprintf('</kml>\n'));
+    fprintf(fid,'%s',str(sbuf));
+
+    if (fclose(fid) < 0)
+        if ~isempty(filek)
+            error('File ''%s'' could not be closed.',filek);
+        else
+            error('File id=%d could not be closed.',fid);
+        end
+    else
+        if ~isempty(filek)
+            disp(['End of file ''' filek ''' successfully written.']);
+        else
+            disp(['End of file successfully written.']);
+        end
+    end
+
+else
+    fprintf(fid,'%s',str(sbuf));
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_file_write.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_file_write.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_file_write.m	(revision 27955)
@@ -0,0 +1,125 @@
+%
+%  write a kml file of the kml objects.
+%
+%  [fid]=kml_file_write(kobj,filek,indent)
+%
+%  where the required input is:
+%    kobj          (kml_object, kml object to be written)
+%     or
+%    kobj          (cell array, array of kml objects)
+%
+%  the optional input is:
+%    filek         (char, name of .kml file)
+%     or
+%    filek         (numeric, file ID of already-open file,
+%                            noting 1=stdout and 2=stderr)
+%    indent        (char, indention string)
+%
+%  and the optional output is:
+%    fid           (numeric, file ID of still-open file)
+%
+function [fid]=kml_file_write(kobj,filek,indent)
+
+if ~nargin
+    help kml_file_write
+    return
+end
+
+%%  process input data
+
+if ~iscell(kobj)
+    kobj={kobj};
+end
+
+fid=0;
+if ~exist('filek' ,'var') || (~ischar(filek) && ~isnumeric(filek))
+    filek='';
+elseif ischar(filek)
+    if     strcmpi(filek,'stdout')
+        fid=1;
+    elseif strcmpi(filek,'stderr')
+        fid=2;
+    end
+elseif isnumeric(filek)
+    fid=filek;
+    if     (fid == 1)
+        filek='stdout';
+    elseif (fid == 2)
+        filek='stderr';
+    else
+        filek='';
+    end
+end
+
+if ~exist('indent','var') || ~ischar(indent)
+    indent='  ';
+end
+
+%%  write kml file
+
+%  open file and write header data (if necessary)
+
+if ~fid
+    if isempty(filek)
+        filek=input('kml file to write?  ','s');
+    end
+    [pathstr,name,ext,versn] = fileparts(filek);
+    if isempty(ext)
+        ext='.kml';
+    end
+    filek=fullfile(pathstr,[name ext versn]);
+
+    display(sprintf('Opening kml file ''%s''.',filek));
+    fid=fopen(sprintf('%s',filek),'w');
+    if (fid < 0)
+        error('File ''%s'' could not be opened.',filek);
+    end
+
+    fprintf(fid,'<?xml version="1.0" encoding="UTF-8"?>\n');
+    fprintf(fid,'<kml xmlns="http://www.opengis.net/kml/2.2">\n');
+end
+
+%  write kml objects
+
+if ~isempty(filek)
+    display(sprintf('Writing to kml file ''%s'':',filek));
+else
+    display(sprintf('Writing to kml file id=%d:',fid));
+end
+for i=1:numel(kobj)
+    if isa(kobj{i},'kml_object')
+        display(sprintf('  Writing object %d of class ''%s'' and size %s.',...
+            i,class(kobj{i}),string_size(kobj{i})));
+        kml_write(kobj{i},fid,indent);
+    else
+        if ~isempty(inputname(1))
+            warning('Object ''%s{%d}'' is a ''%s'' class object, not ''%s''.',...
+                inputname(1),i,class(kobj{i}),'kml_object');
+        else
+            warning('Object {%d} is a ''%s'' class object, not ''%s''.',...
+                             i,class(kobj{i}),'kml_object');
+        end
+    end
+end
+
+%  write trailer data and close file (if necessary)
+
+if ~nargout && (fid >= 3)
+    fprintf(fid,'</kml>\n');
+
+    if (fclose(fid) < 0)
+        if ~isempty(filek)
+            error('File ''%s'' could not be closed.',filek);
+        else
+            error('File id=%d could not be closed.',fid);
+        end
+    else
+        if ~isempty(filek)
+            disp(['End of file ''' filek ''' successfully written.']);
+        else
+            disp(['End of file successfully written.']);
+        end
+    end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_folder.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_folder.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_folder.m	(revision 27955)
@@ -0,0 +1,235 @@
+%
+%  definition for the kml_folder sub (derived) class.
+%
+%  [kml]=kml_folder(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, folder id, '')
+%    name          (char, name, '')
+%    visibility    (logical, visibility, true)
+%    open          (logical, open, false)
+%    snippet       (char, snippet, '')
+%    descript      (char, description, '')
+%    styleurl      (char, style url, '')
+%    style         (cell array, styles)
+%    feature       (cell array, placemark features)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_folder < kml_container
+    properties
+        feature   ={};
+    end
+
+    methods
+        function [kml]=kml_folder(varargin)
+
+            kml=kml@kml_container(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_folder());
+
+                        for i=length(fieldnames(kml_container()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_container(kml(i));
+                disp(sprintf('       feature: %s %s\n' ,string_size(kml(i).feature),...
+                             class(kml(i).feature)));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_container());
+            fnames={fnames{:} ...
+                    'feature' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the folders
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<Folder id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<Folder>\n',indent);
+                end
+                kml_write@kml_container(kmli,fid,indent);
+
+%  loop over the features for each folder
+
+                for j=1:numel(kmli.feature)
+                    if ~isempty(kmli.feature{j})
+                        if isa(kmli.feature{j},'kml_feature')
+                            kml_write(kmli.feature{j},fid,[indent '  ']);
+                        else
+                            warning('kml(%d).feature{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmli.feature{j}),'kml_feature');
+                        end
+                    end
+                end
+
+                fprintf(fid,'%s</Folder>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the folders
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<Folder id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<Folder>\n',indent));
+                end
+                sbuf=kml_swrite@kml_container(kmli,sbuf,indent);
+
+%  loop over the features for each folder
+
+                for j=1:numel(kmli.feature)
+                    if ~isempty(kmli.feature{j})
+                        if isa(kmli.feature{j},'kml_feature')
+                            sbuf=kml_swrite(kmli.feature{j},sbuf,[indent '  ']);
+                        else
+                            warning('kml(%d).feature{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmli.feature{j}),'kml_feature');
+                        end
+                    end
+                end
+
+                sbuf=add(sbuf,sprintf('%s</Folder>\n',indent));
+            end
+
+        end
+
+%  delete the object
+
+        function []=delete(kml)
+
+%  loop over the folders
+
+            for i=numel(kml):-1:1
+                kmli=kml(i);
+                delete@kml_container(kmli);
+
+%  loop over the features for each folder
+
+                for j=numel(kmli.feature):-1:1
+                    if ~isempty(kmli.feature{j})
+                        if isa(kmli.feature{j},'kml_feature')
+                            delete(kmli.feature{j});
+                        else
+                            warning('kml(%d).feature{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmli.feature{j}),'kml_feature');
+                        end
+                    end
+                end
+                kmli.feature   ={};
+
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_geometry.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_geometry.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_geometry.m	(revision 27955)
@@ -0,0 +1,178 @@
+%
+%  definition for the kml_geometry super (base) and sub (derived) abstract class.
+%
+%  [kml]=kml_geometry(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, geometry id, '')
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_geometry < kml_object
+    properties
+    end
+
+    methods
+        function [kml]=kml_geometry(varargin)
+
+            kml=kml@kml_object(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_geometry());
+
+                        for i=length(fieldnames(kml_object()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                if strcmp(class(kml),'kml_geometry')
+                    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                        class(kml),inputname(1),string_dim(kml,i)));
+                end
+                disp@kml_object(kml(i));
+                if strcmp(class(kml),'kml_geometry')
+                    disp(sprintf('\n'));
+                end
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_object());
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the geometries
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_geometry')
+                    if ~isempty(kmli.id)
+                        fprintf(fid,'%s<!Geometry id="%s">\n',indent,kmli.id);
+                    else
+                        fprintf(fid,'%s<!Geometry>\n',indent);
+                    end
+                end
+                kml_write@kml_object(kmli,fid,indent);
+                if strcmp(class(kml),'kml_geometry')
+                    fprintf(fid,'%s</!Geometry>\n',indent);
+                end
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the geometries
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_geometry')
+                    if ~isempty(kmli.id)
+                        sbuf=add(sbuf,sprintf('%s<!Geometry id="%s">\n',indent,kmli.id));
+                    else
+                        sbuf=add(sbuf,sprintf('%s<!Geometry>\n',indent));
+                    end
+                end
+                sbuf=kml_swrite@kml_object(kmli,sbuf,indent);
+                if strcmp(class(kml),'kml_geometry')
+                    sbuf=add(sbuf,sprintf('%s</!Geometry>\n',indent));
+                end
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_linearring.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_linearring.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_linearring.m	(revision 27955)
@@ -0,0 +1,208 @@
+%
+%  definition for the kml_linearring sub (derived) class.
+%
+%  [kml]=kml_linearring(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, linearring id, '')
+%    extrude       (logical, extrusion, false)
+%    tessellate    (logical, tessellation, false)
+%    altmode       (char, altitude mode, 'clampToGround')
+%    coords        (numeric, long/lat/alt (n x 3), empty)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_linearring < kml_geometry
+    properties
+        extrude   =false;
+        tessellate=false;
+        altmode   ='clampToGround';
+        coords    =zeros(0,3);
+    end
+
+    methods
+        function [kml]=kml_linearring(varargin)
+
+            kml=kml@kml_geometry(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_linearring());
+
+                        for i=length(fieldnames(kml_geometry()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_geometry(kml(i));
+                disp(sprintf('       extrude: %g'      ,kml(i).extrude));
+                disp(sprintf('    tessellate: %g'      ,kml(i).tessellate));
+                disp(sprintf('       altmode: ''%s'''  ,kml(i).altmode));
+                disp(sprintf('        coords: %s %s\n' ,string_size(kml(i).coords),...
+                             class(kml(i).coords)));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_geometry());
+            fnames={fnames{:} ...
+                    'extrude' ...
+                    'tessellate' ...
+                    'altmode' ...
+                    'coords' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+            if ~exist('fid','var') || isempty(fid)
+                fid=1;
+            end
+            if ~exist('indent','var') || isempty(indent)
+                indent='';
+            end
+
+%  loop over the linearrings
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<LinearRing id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<LinearRing>\n',indent);
+                end
+                kml_write@kml_geometry(kmli,fid,indent);
+                fprintf(fid,'%s  <extrude>%d</extrude>\n',indent,kmli.extrude);
+                fprintf(fid,'%s  <tessellate>%d</tessellate>\n',indent,kmli.tessellate);
+                fprintf(fid,'%s  <altitudeMode>%s</altitudeMode>\n',indent,kmli.altmode);
+                fprintf(fid,'%s  <coordinates>\n',indent);
+
+%  loop over the coordinates for each linearring
+
+                for j=1:size(kmli.coords,1)
+                    fprintf(fid,'%s    %0.16g,%0.16g,%0.16g\n',indent,kmli.coords(j,:));
+                end
+
+                fprintf(fid,'%s  </coordinates>\n',indent);
+                fprintf(fid,'%s</LinearRing>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+            if ~exist('sbuf','var') || isempty(sbuf)
+                sbuf=string_buf;
+            end
+            if ~exist('indent','var') || isempty(indent)
+                indent='';
+            end
+
+%  loop over the linearrings
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<LinearRing id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<LinearRing>\n',indent));
+                end
+                sbuf=kml_swrite@kml_geometry(kmli,sbuf,indent);
+                sbuf=add(sbuf,sprintf('%s  <extrude>%d</extrude>\n',indent,kmli.extrude));
+                sbuf=add(sbuf,sprintf('%s  <tessellate>%d</tessellate>\n',indent,kmli.tessellate));
+                sbuf=add(sbuf,sprintf('%s  <altitudeMode>%s</altitudeMode>\n',indent,kmli.altmode));
+                sbuf=add(sbuf,sprintf('%s  <coordinates>\n',indent));
+
+%  loop over the coordinates for each linearring
+
+                for j=1:size(kmli.coords,1)
+                    sbuf=add(sbuf,sprintf('%s    %0.16g,%0.16g,%0.16g\n',indent,kmli.coords(j,:)));
+                end
+
+                sbuf=add(sbuf,sprintf('%s  </coordinates>\n',indent));
+                sbuf=add(sbuf,sprintf('%s</LinearRing>\n',indent));
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_linestring.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_linestring.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_linestring.m	(revision 27955)
@@ -0,0 +1,208 @@
+%
+%  definition for the kml_linestring sub (derived) class.
+%
+%  [kml]=kml_linestring(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, linestring id, '')
+%    extrude       (logical, extrusion, false)
+%    tessellate    (logical, tessellation, false)
+%    altmode       (char, altitude mode, 'clampToGround')
+%    coords        (numeric, long/lat/alt (n x 3), empty)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_linestring < kml_geometry
+    properties
+        extrude   =false;
+        tessellate=false;
+        altmode   ='clampToGround';
+        coords    =zeros(0,3);
+    end
+
+    methods
+        function [kml]=kml_linestring(varargin)
+
+            kml=kml@kml_geometry(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_linestring());
+
+                        for i=length(fieldnames(kml_geometry()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_geometry(kml(i));
+                disp(sprintf('       extrude: %g'      ,kml(i).extrude));
+                disp(sprintf('    tessellate: %g'      ,kml(i).tessellate));
+                disp(sprintf('       altmode: ''%s'''  ,kml(i).altmode));
+                disp(sprintf('        coords: %s %s\n' ,string_size(kml(i).coords),...
+                             class(kml(i).coords)));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_geometry());
+            fnames={fnames{:} ...
+                    'extrude' ...
+                    'tessellate' ...
+                    'altmode' ...
+                    'coords' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+            if ~exist('fid','var') || isempty(fid)
+                fid=1;
+            end
+            if ~exist('indent','var') || isempty(indent)
+                indent='';
+            end
+
+%  loop over the linestrings
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<LineString id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<LineString>\n',indent);
+                end
+                kml_write@kml_geometry(kmli,fid,indent);
+                fprintf(fid,'%s  <extrude>%d</extrude>\n',indent,kmli.extrude);
+                fprintf(fid,'%s  <tessellate>%d</tessellate>\n',indent,kmli.tessellate);
+                fprintf(fid,'%s  <altitudeMode>%s</altitudeMode>\n',indent,kmli.altmode);
+                fprintf(fid,'%s  <coordinates>\n',indent);
+
+%  loop over the coordinates for each linestring
+
+                for j=1:size(kmli.coords,1)
+                    fprintf(fid,'%s    %0.16g,%0.16g,%0.16g\n',indent,kmli.coords(j,:));
+                end
+
+                fprintf(fid,'%s  </coordinates>\n',indent);
+                fprintf(fid,'%s</LineString>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+            if ~exist('sbuf','var') || isempty(sbuf)
+                sbuf=string_buf;
+            end
+            if ~exist('indent','var') || isempty(indent)
+                indent='';
+            end
+
+%  loop over the linestrings
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<LineString id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<LineString>\n',indent));
+                end
+                sbuf=kml_swrite@kml_geometry(kmli,sbuf,indent);
+                sbuf=add(sbuf,sprintf('%s  <extrude>%d</extrude>\n',indent,kmli.extrude));
+                sbuf=add(sbuf,sprintf('%s  <tessellate>%d</tessellate>\n',indent,kmli.tessellate));
+                sbuf=add(sbuf,sprintf('%s  <altitudeMode>%s</altitudeMode>\n',indent,kmli.altmode));
+                sbuf=add(sbuf,sprintf('%s  <coordinates>\n',indent));
+
+%  loop over the coordinates for each linestring
+
+                for j=1:size(kmli.coords,1)
+                    sbuf=add(sbuf,sprintf('%s    %0.16g,%0.16g,%0.16g\n',indent,kmli.coords(j,:)));
+                end
+
+                sbuf=add(sbuf,sprintf('%s  </coordinates>\n',indent));
+                sbuf=add(sbuf,sprintf('%s</LineString>\n',indent));
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_linestyle.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_linestyle.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_linestyle.m	(revision 27955)
@@ -0,0 +1,175 @@
+%
+%  definition for the kml_linestyle sub (derived) class.
+%
+%  [kml]=kml_linestyle(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, linestyle id, '')
+%    color         (char, opacity/color in hex aabbggrr, 'ffffffff')
+%    colormode     (char, color mode , 'normal')
+%    width         (numeric, line width (in pixels), 1)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_linestyle < kml_colorstyle
+    properties
+        width     =1;
+    end
+
+    methods
+        function [kml]=kml_linestyle(varargin)
+
+            kml=kml@kml_colorstyle(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_linestyle());
+
+                        for i=length(fieldnames(kml_colorstyle()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_colorstyle(kml(i));
+                disp(sprintf('         width: %d\n'    ,kml(i).width));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_colorstyle());
+            fnames={fnames{:} ...
+                    'width' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the linestyles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<LineStyle id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<LineStyle>\n',indent);
+                end
+                kml_write@kml_colorstyle(kmli,fid,indent);
+                fprintf(fid,'%s  <width>%d</width>\n',indent,kmli.width);
+                fprintf(fid,'%s</LineStyle>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the linestyles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<LineStyle id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<LineStyle>\n',indent));
+                end
+                sbuf=kml_swrite@kml_colorstyle(kmli,sbuf,indent);
+                sbuf=add(sbuf,sprintf('%s  <width>%d</width>\n',indent,kmli.width));
+                sbuf=add(sbuf,sprintf('%s</LineStyle>\n',indent));
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_mesh_elem.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_mesh_elem.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_mesh_elem.m	(revision 27955)
@@ -0,0 +1,176 @@
+%%
+%  create kml polygons for the element mesh.
+%
+%  [kfold]=kml_mesh_elem(md,params)
+%
+%  where the required input is:
+%    md            (model, model class object)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  and the optional input is:
+%    latsgn        (numeric, +1/-1 for north/south latitude)
+%    data          (numeric, element or nodal results data)
+%    alt           (numeric, altitude for polygons, default 10000)
+%    cmin          (numeric, minimum of color map)
+%    cmax          (numeric, maximum of color map)
+%    cmap          (char or numeric, colormap definition)
+%
+%  and the required output is:
+%    kfold         (kml_folder, folder of polygon placemarks)
+%
+function [kfold]=kml_mesh_elem(varargin)
+
+if ~nargin
+    help kml_mesh_elem
+    return
+end
+
+%%  process input data
+
+iarg=1;
+if (nargin >= 1)
+    md=varargin{1};
+end
+if ~exist('md','var') || isempty(md) || ~isa(md,'model')
+    error(['Model ''' inputname(iarg) ''' is unrecognized class ''' class(md) '''.']);
+end
+
+%  parameters
+
+iarg=iarg+1;
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'latsgn','data','alt',...
+                 'cmin','cmax','cmap'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1},20) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1},20) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    if strcmpi(varargin{iarg},'data')
+        cdata=inputname(iarg+1);
+    end
+    iarg=iarg+2;
+end
+
+if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
+   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
+    if     ~exist('latsgn','var')
+        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
+    elseif (abs(latsgn) ~= 1)
+        error(['Incorrect latsgn=' num2str(latsgn) ' parameter to calculate missing lat/long data.']);
+    else
+        display('Converting x/y data to lat/long data.');
+        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
+    end
+end
+
+if exist('data','var') && ~isempty(data)
+    if     (numel(data)==md.mesh.numberofelements)
+        edata=data;
+    elseif (numel(data)==md.mesh.numberofvertices)
+        ndata=data;
+        display('Averaging nodal data to element data.');
+        edata=zeros(1,md.mesh.numberofelements);
+        for i=1:size(md.mesh.elements,1)
+            for j=1:size(md.mesh.elements,2)
+                edata(i)=edata(i)+ndata(md.mesh.elements(i,j));
+            end
+            edata(i)=edata(i)/size(md.mesh.elements,2);
+        end
+    else
+        error(['Data has incorrect number of ' num2str(numel(data)) ' values.']);
+    end
+end
+
+%  colormap command operates on a figure, so create an invisible one
+%  (could also directly call colormaps, e.g. jet(64), but risky)
+
+hfig=figure('Visible','off');
+if exist('cmap','var')
+    colormap(cmap)
+end
+cmap=colormap;
+close(hfig)
+
+if exist('edata','var')
+    if ~exist('cmin','var')
+        cmin=min(min(edata));
+    end
+    if ~exist('cmax','var')
+        cmax=max(max(edata));
+    end
+end
+
+if ~exist('alt','var')
+    alt=10000;
+end
+
+%%  write folder for mesh
+
+kfold=kml_folder();
+if exist('cdata','var') && ~isempty(cdata)
+    kfold.name      =sprintf('Data: %s',cdata);
+else
+    kfold.name      =sprintf('Mesh');
+end
+kfold.visibility=1;
+kfold.descript  =sprintf('Elements=%d, Nodes=%d',...
+    md.mesh.numberofelements,md.mesh.numberofvertices);
+% see matlab_oop, "initializing a handle object array"
+%kfold.feature   ={repmat(kml_placemark(),1,size(md.mesh.elements,1))};
+kfeat(size(md.mesh.elements,1))=kml_placemark();
+kfold.feature={kfeat};
+
+%  write each element as a polygon placemark
+
+disp(['Writing ' num2str(size(md.mesh.elements,1)) ' tria elements as KML polygons.']);
+for i=1:size(md.mesh.elements,1)
+    kplace=kml_placemark();
+    kplace.name      =sprintf('Element %d',i);
+    kplace.visibility=1;
+    if exist('edata','var')
+%        kplace.descript  =sprintf('Element data: %g',edata(i));
+        kplace.descript  =sprintf('campaign{\n  deformation 1 %g quad_pol ascending right asap;\n}',edata(i));
+        imap = fix((edata(i)-cmin)/(cmax-cmin)*size(cmap,1))+1;
+        if     (imap >= 1) && (imap <= size(cmap,1))
+            kplace.styleurl  =sprintf('#MatlabColor%d',imap);
+        elseif (edata(i) == cmax)
+            kplace.styleurl  =sprintf('#MatlabColor%d',size(cmap,1));
+        else
+            kplace.styleurl  =sprintf('#BlackLineEmptyPoly');
+        end
+    else
+        kplace.styleurl  =sprintf('#BlackLineRandomPoly');
+    end
+
+    kpoly=kml_polygon();
+    kpoly.extrude   =1;
+    kpoly.altmode   ='relativeToGround';
+
+    kring=kml_linearring();
+    kring.coords    =zeros(size(md.mesh.elements,2)+1,3);
+
+    for j=1:size(md.mesh.elements,2)
+        kring.coords(j,:)=[md.mesh.long(md.mesh.elements(i,j)) md.mesh.lat(md.mesh.elements(i,j)) alt];
+    end
+    kring.coords(end,:)=kring.coords(1,:);
+
+    kpoly.outer=kring;
+    kplace.geometry=kpoly;
+    kfold.feature{1}(i)=kplace;
+    clear kring kpoly kplace
+
+    if ~mod(i,1000)
+        disp(['  ' num2str(i) ' tria elements written.']);
+    end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_mesh_write.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_mesh_write.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_mesh_write.m	(revision 27955)
@@ -0,0 +1,260 @@
+%%
+%  write a kml file of the mesh from the model.
+%
+%  []=kml_mesh_write(filek,md,params)
+%
+%  where the required input is:
+%    filek         (char, name of .kml file)
+%    md            (model, model class object)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  and the optional input is:
+%    latsgn        (numeric, +1/-1 for north/south latitude)
+%    data          (numeric, element or nodal results data)
+%    alt           (numeric, altitude for polygons, default 10000)
+%    lwidth        (numeric, line width in pixels, default 1)
+%    popac         (numeric, polygon opacity, default 0.50)
+%    cmin          (numeric, minimum of color map)
+%    cmax          (numeric, maximum of color map)
+%    cmap          (char or numeric, colormap definition)
+%    prtplt        (char, 'off'/'no' for partition segment plot)
+%
+function []=kml_mesh_write(varargin)
+
+if ~nargin
+    help kml_mesh_write
+    return
+end
+
+%%  process input data
+
+iarg=1;
+if (nargin >= 1)
+    filek=varargin{1};
+end
+
+iarg=iarg+1;
+if (nargin >= 2)
+    md=varargin{2};
+end
+if ~exist('md','var') || isempty(md) || ~isa(md,'model')
+    error(['Model ''' inputname(iarg) ''' is unrecognized class ''' class(md) '''.']);
+end
+
+%  parameters
+
+iarg=iarg+1;
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'latsgn','data','alt','lwidth','popac',...
+                 'cmin','cmax','cmap','prtplt'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1},20) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1},20) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    if strcmpi(varargin{iarg},'data')
+        cdata=inputname(iarg+1);
+    end
+    iarg=iarg+2;
+end
+
+if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
+   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
+    if     ~exist('latsgn','var')
+        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
+    elseif (abs(latsgn) ~= 1)
+        error(['Incorrect latsgn=' num2str(latsgn) ' parameter to calculate missing lat/long data.']);
+    else
+        display('Converting x/y data to lat/long data.');
+        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
+    end
+end
+
+if exist('data','var') && ~isempty(data)
+    if     (numel(data)==md.mesh.numberofelements)
+        edata=data;
+    elseif (numel(data)==md.mesh.numberofvertices)
+        ndata=data;
+        display('Averaging nodal data to element data.');
+        edata=zeros(1,md.mesh.numberofelements);
+        for i=1:size(md.mesh.elements,1)
+            for j=1:size(md.mesh.elements,2)
+                edata(i)=edata(i)+ndata(md.mesh.elements(i,j));
+            end
+            edata(i)=edata(i)/size(md.mesh.elements,2);
+        end
+    else
+        error(['Data has incorrect number of ' num2str(numel(data)) ' values.']);
+    end
+end
+
+if exist('edata','var')
+    if ~exist('cmin','var')
+        cmin=min(min(edata));
+    end
+    if ~exist('cmax','var')
+        cmax=max(max(edata));
+    end
+end
+
+if ~exist('alt','var')
+    alt=10000;
+end
+
+%%  construct kml document
+
+kdoc=kml_document();
+kdoc.name      =sprintf('ISSM Mesh: %s',md.miscellaneous.name);
+kdoc.open      =1;
+ifirst=true;
+for i=1:numel(md.miscellaneous.notes)
+    if ~isempty(md.miscellaneous.notes{i})
+        if ~ifirst
+            kdoc.descript  =[kdoc.descript sprintf('\n')];
+        end
+        ifirst=false;
+        kdoc.descript  =[kdoc.descript sprintf('%s',md.miscellaneous.notes{i})];
+    end
+end
+clear ifirst
+kdoc.style     ={repmat(kml_style(),0,0)};
+kdoc.feature   ={repmat(kml_folder(),0,0)};
+
+%  write style templates for defaults and for each color of the matlab
+%  colormap (note that matlab colormap format is rgb, where each varies
+%  from 0 to 1, whereas the kml color format is aabbggrr, where each
+%  varies from 00 to ff.)
+
+if ~exist('lwidth','var')
+    lwidth=1;
+end
+if ~exist('popac','var')
+    popac=0.50;
+end
+
+klsty=kml_linestyle();
+klsty.color     ='ff000000';
+klsty.colormode ='normal';
+klsty.width     =lwidth;
+kpsty=kml_polystyle();
+kpsty.color     =sprintf('%02xffffff',round(popac*255));
+kpsty.colormode ='random';
+kstyle=kml_style();
+kstyle.id        =sprintf('BlackLineRandomPoly');
+kstyle.line      =klsty;
+kstyle.poly      =kpsty;
+kdoc.style{1}(end+1)=kstyle;
+clear kstyle kpsty klsty
+
+klsty=kml_linestyle();
+klsty.color     ='ff000000';
+klsty.colormode ='normal';
+klsty.width     =lwidth;
+kpsty=kml_polystyle();
+kpsty.color     =sprintf('00ffffff');
+kpsty.colormode ='random';
+kstyle=kml_style();
+kstyle.id        =sprintf('BlackLineEmptyPoly');
+kstyle.line      =klsty;
+kstyle.poly      =kpsty;
+kdoc.style{1}(end+1)=kstyle;
+clear kstyle kpsty klsty
+
+klsty=kml_linestyle();
+klsty.color     ='ff0000ff';
+klsty.colormode ='normal';
+klsty.width     =lwidth;
+kpsty=kml_polystyle();
+kpsty.color     =sprintf('%02x0000ff',round(popac*255));
+kpsty.colormode ='random';
+kstyle=kml_style();
+kstyle.id        =sprintf('RedLineRedPoly');
+kstyle.line      =klsty;
+kstyle.poly      =kpsty;
+kdoc.style{1}(end+1)=kstyle;
+clear kstyle kpsty klsty
+
+%  colormap command operates on a figure, so create an invisible one
+%  (could also directly call colormaps, e.g. jet(64), but risky)
+
+if exist('edata','var')
+    hfig=figure('Visible','off');
+    if exist('cmap','var')
+        colormap(cmap)
+    end
+    cmap=colormap;
+    close(hfig)
+
+    disp(['Writing ' num2str(size(cmap,1)) ' Matlab colors as KML style templates.']);
+    for i=1:size(cmap,1)
+        klsty=kml_linestyle();
+        klsty.color     ='ff000000';
+        klsty.colormode ='normal';
+        klsty.width     =lwidth;
+        kpsty=kml_polystyle();
+        kpsty.color     =sprintf('%02x%02x%02x%02x',round(popac*255),...
+            round(cmap(i,3)*255),round(cmap(i,2)*255),round(cmap(i,1)*255));
+        kpsty.colormode ='normal';
+        kstyle=kml_style();
+        kstyle.id        =sprintf('MatlabColor%d',i);
+        kstyle.line      =klsty;
+        kstyle.poly      =kpsty;
+        kdoc.style{1}(end+1)=kstyle;
+        clear kstyle kpsty klsty
+    end
+end
+
+%  write folder for mesh
+
+kdoc.feature{1}(end+1)=kml_mesh_elem(md,varargin{3:end});
+
+%  write folder for partition segments
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    kdoc.feature{1}(end+1)=kml_part_flagedges(md,varargin{3:end});
+end
+
+%  write folder for unshared edges
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    kdoc.feature{1}(end+1)=kml_unsh_edges(md,varargin{3:end});
+end
+
+%  write folder for partition elements
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    kdoc.feature{1}(end+1)=kml_part_elems(md,varargin{3:end});
+end
+
+%  write folder for partition edges
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    kdoc.feature{1}(end+1)=kml_part_edges(md,varargin{3:end});
+end
+
+%  write folder for partitions
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    kdoc.feature{1}(end+1)=kml_partitions(md,varargin{3:end});
+end
+
+%%  write kml file
+
+kml_file_write(kdoc,filek);
+% kml_file_swrite(kdoc,filek);
+delete(kdoc);
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_multigeometry.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_multigeometry.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_multigeometry.m	(revision 27955)
@@ -0,0 +1,230 @@
+%
+%  definition for the kml_multigeometry sub (derived) class.
+%
+%  [kml]=kml_multigeometry(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, multigeometry id, '')
+%    geometry      (cell array, multigeometry geometry)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_multigeometry < kml_geometry
+    properties
+        geometry  ={};
+    end
+
+    methods
+        function [kml]=kml_multigeometry(varargin)
+
+            kml=kml@kml_geometry(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_multigeometry());
+
+                        for i=length(fieldnames(kml_geometry()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_geometry(kml(i));
+                disp(sprintf('      geometry: %s %s\n' ,string_size(kml(i).geometry),...
+                             class(kml(i).geometry)));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_geometry());
+            fnames={fnames{:} ...
+                    'geometry' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the multigeometry
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<MultiGeometry id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<MultiGeometry>\n',indent);
+                end
+                kml_write@kml_geometry(kmli,fid,indent);
+
+%  loop over the geometry elements for each multigeometry
+
+                for j=1:numel(kmli.geometry)
+                    kmlij=kmli.geometry{j};
+                    if ~isempty(kmlij)
+                        if isa(kmlij,'kml_geometry')
+                            kml_write(kmlij,fid,[indent '  ']);
+                        else
+                            warning('kml(%d).geometry{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmlij),'kml_geometry');
+                        end
+                    end
+                end
+
+                fprintf(fid,'%s</MultiGeometry>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the multigeometry
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<MultiGeometry id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<MultiGeometry>\n',indent));
+                end
+                sbuf=kml_swrite@kml_geometry(kmli,sbuf,indent);
+
+%  loop over the geometry elements for each multigeometry
+
+                for j=1:numel(kmli.geometry)
+                    kmlij=kmli.geometry{j};
+                    if ~isempty(kmlij)
+                        if isa(kmlij,'kml_geometry')
+                            sbuf=kml_swrite(kmlij,sbuf,[indent '  ']);
+                        else
+                            warning('kml(%d).geometry{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmlij),'kml_geometry');
+                        end
+                    end
+                end
+
+                sbuf=add(sbuf,sprintf('%s</MultiGeometry>\n',indent));
+            end
+
+        end
+
+%  delete the object
+
+        function []=delete(kml)
+
+%  loop over the multigeometry
+
+            for i=numel(kml):-1:1
+                kmli=kml(i);
+
+%  loop over the geometry elements for each multigeometry
+
+                for j=numel(kmli.geometry):-1:1
+                    kmlij=kmli.geometry{j};
+                    if ~isempty(kmlij)
+                        if isa(kmlij,'kml_geometry')
+                            delete(kmlij);
+                        else
+                            warning('kml(%d).geometry{%d} is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmlij),'kml_geometry');
+                        end
+                    end
+                end
+                kmli.geometry  ={};
+
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_object.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_object.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_object.m	(revision 27955)
@@ -0,0 +1,179 @@
+%
+%  definition for the kml_object super (base) abstract class.
+%
+%  [kml]=kml_object(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, object id, '')
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_object < handle
+    properties
+        id        ='';
+    end
+
+    methods
+        function [kml]=kml_object(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_object());
+
+                        for i=1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                if strcmp(class(kml),'kml_object')
+                    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                        class(kml),inputname(1),string_dim(kml,i)));
+                end
+
+                if strcmp(class(kml),'kml_object')
+                    disp(sprintf('            id: ''%s''\n',kml(i).id));
+                else
+                    disp(sprintf('            id: ''%s'''  ,kml(i).id));
+                end
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames={'id'};
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the objects
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_object')
+                    if ~isempty(kmli.id)
+                        fprintf(fid,'%s<!Object id="%s">\n',indent,kmli.id);
+                    else
+                        fprintf(fid,'%s<!Object>\n',indent);
+                    end
+                end
+
+                if strcmp(class(kml),'kml_object')
+                    fprintf(fid,'%s</!Object>\n',indent);
+                end
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the objects
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_object')
+                    if ~isempty(kmli.id)
+                        sbuf=add(sbuf,sprintf('%s<!Object id="%s">\n',indent,kmli.id));
+                    else
+                        sbuf=add(sbuf,sprintf('%s<!Object>\n',indent));
+                    end
+                end
+
+                if strcmp(class(kml),'kml_object')
+                    sbuf=add(sbuf,sprintf('%s</!Object>\n',indent));
+                end
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_part_edges.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_part_edges.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_part_edges.m	(revision 27955)
@@ -0,0 +1,482 @@
+%%
+%  create kml linestrings for the partition edges.
+%
+%  [kfold]=kml_part_edges(md,params)
+%
+%  where the required input is:
+%    md            (model, model class object)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  and the optional input is:
+%    latsgn        (numeric, +1/-1 for north/south latitude)
+%    data          (numeric, element or nodal results data)
+%    alt           (numeric, altitude for polygons, default 10000)
+%    cmin          (numeric, minimum of color map)
+%    cmax          (numeric, maximum of color map)
+%    cmap          (char or numeric, colormap definition)
+%    prtplt        (char, 'off'/'no' for partition segment plot)
+%
+%  and the required output is:
+%    kfold         (kml_folder, folder of linestring placemarks)
+%
+function [kfold]=kml_part_edges(varargin)
+
+if ~nargin
+    help kml_part_edges
+    return
+end
+
+%%  process input data
+
+iarg=1;
+if (nargin >= 1)
+    md=varargin{1};
+end
+if ~exist('md','var') || isempty(md) || ~isa(md,'model')
+    error(['Model ''' inputname(iarg) ''' is unrecognized class ''' class(md) '''.']);
+end
+
+%  parameters
+
+iarg=iarg+1;
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'latsgn','data','alt',...
+                 'cmin','cmax','cmap','prtplt'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1},20) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1},20) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    if strcmpi(varargin{iarg},'data')
+        cdata=inputname(iarg+1);
+    end
+    iarg=iarg+2;
+end
+
+if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
+   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
+    if     ~exist('latsgn','var')
+        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
+    elseif (abs(latsgn) ~= 1)
+        error(['Incorrect latsgn=' num2str(latsgn) ' parameter to calculate missing lat/long data.']);
+    else
+        display('Converting x/y data to lat/long data.');
+        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
+    end
+end
+
+if exist('data','var') && ~isempty(data)
+    if     (numel(data)==md.mesh.numberofelements)
+        edata=data;
+    elseif (numel(data)==md.mesh.numberofvertices)
+        ndata=data;
+        display('Averaging nodal data to element data.');
+        edata=zeros(1,md.mesh.numberofelements);
+        for i=1:size(md.mesh.elements,1)
+            for j=1:size(md.mesh.elements,2)
+                edata(i)=edata(i)+ndata(md.mesh.elements(i,j));
+            end
+            edata(i)=edata(i)/size(md.mesh.elements,2);
+        end
+    else
+        error(['Data has incorrect number of ' num2str(numel(data)) ' values.']);
+    end
+end
+
+%  colormap command operates on a figure, so create an invisible one
+%  (could also directly call colormaps, e.g. jet(64), but risky)
+
+hfig=figure('Visible','off');
+if exist('cmap','var')
+    colormap(cmap)
+end
+cmap=colormap;
+close(hfig)
+
+if exist('edata','var')
+    if ~exist('cmin','var')
+        cmin=min(min(edata));
+    end
+    if ~exist('cmax','var')
+        cmax=max(max(edata));
+    end
+end
+
+if ~exist('alt','var')
+    alt=10000;
+end
+
+%%  write folder for partition edges
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    kfold=kml_folder();
+    kfold.name      ='Partition Edges';
+    kfold.visibility=1;
+    kfold.descript  =sprintf('Partitions=%d, Nodes=%d',...
+        md.qmu.numberofpartitions,md.mesh.numberofvertices);
+    kfold.feature   ={repmat(kml_placemark(),1,md.qmu.numberofpartitions)};
+
+%  write each partition as a linestring multigeometry placemark
+
+    disp(['Writing ' num2str(md.qmu.numberofpartitions) ' partitions as KML linestrings.']);
+    epart=md.qmu.partition(md.mesh.elements)+1;
+    if exist('ndata','var') || exist('edata','var')
+        pdata=zeros(1,md.qmu.numberofpartitions);
+        pdata(:)=NaN;
+    end
+
+%  loop over each partition
+
+    for k=1:md.qmu.numberofpartitions
+%        disp(['partition k=' int2str(k)])
+
+%  for each partition, find all the included elements and determine the
+%  perimeter (including those shared by another partition)
+
+        [icol,irow]=find(epart'==k);
+        if isempty(irow)
+            continue;
+        end
+        irow=unique(irow);
+        elemp=md.mesh.elements(irow,:);
+        epartp=epart(irow,:);
+        nodeconp=kmlnodeconnectivity(elemp,md.mesh.numberofvertices);
+        [edgeadjp]=edgeadjacency(elemp,nodeconp);
+        [edgeper,elemper,iloop]=edgeperimeter(elemp,nodeconp,edgeadjp);
+        iloop(end+1)=size(edgeper,1)+1;
+
+%  determine the data to be used for the colors (if any)
+
+        if exist('ndata','var')
+            pdata(k)=ndata(find(md.qmu.partition+1==k,1));
+        elseif exist('edata','var')
+            for i=1:size(epartp,1)
+                if isempty(find(epart(i,:)~=k,1))
+                    pdata(k)=edata(irow(i));
+                    break
+                end
+            end
+            if isnan(pdata(k))
+                warning('Data for Partition %d is not defined.\n',k)
+            end
+        end
+
+%  set up the placemark with multigeometry
+
+        kplace=kml_placemark();
+        if (length(iloop)-1 > 1)
+            kplace.name      =sprintf('Partition %d (%d loops)',k,length(iloop)-1);
+        else
+            kplace.name      =sprintf('Partition %d',k);
+        end
+        kplace.visibility=1;
+        if exist('pdata','var')
+            kplace.descript  =sprintf('Partition data: %g',pdata(k));
+            imap = fix((pdata(k)-cmin)/(cmax-cmin)*size(cmap,1))+1;
+            if     (imap >= 1) && (imap <= size(cmap,1))
+                kplace.styleurl  =sprintf('#MatlabColor%d',imap);
+            elseif (pdata(k) == cmax)
+                kplace.styleurl  =sprintf('#MatlabColor%d',size(cmap,1));
+            else
+                kplace.styleurl  =sprintf('#BlackLineEmptyPoly');
+            end
+        else
+            kplace.styleurl  =sprintf('#BlackLineRandomPoly');
+        end
+
+        kmgeom=kml_multigeometry();
+        kmgeom.geometry  ={repmat(kml_linestring(),1,length(iloop)-1)};
+
+%  loop over each loop of the perimeter for the given partition
+
+        for i=1:length(iloop)-1
+            kline=kml_linestring();
+            kline.extrude   =1;
+            kline.tessellate=1;
+            kline.altmode   ='relativeToGround';
+            kline.coords    =zeros(0,3);
+
+            elast=0;
+            nlast=0;
+            slast=0;
+            lat=[];
+            long=[];
+
+%  loop over the element edges on the loop of the partition
+
+            j=iloop(i);
+            while (j < iloop(i+1))
+%  find which side of element is referenced in perimeter list
+                for l=1:size(elemp,2)
+                    if ((elemp(elemper(j),l)          == edgeper(j,1)) && ...
+                        (elemp(elemper(j),mod(l,3)+1) == edgeper(j,2))) || ...
+                       ((elemp(elemper(j),l)          == edgeper(j,2)) && ...
+                        (elemp(elemper(j),mod(l,3)+1) == edgeper(j,1)))
+                        jedge=l;
+                        break
+                    end
+                end
+
+%  check if element side connects nodes in partition
+                if (epartp(elemper(j),jedge)          == k) && ...
+                   (epartp(elemper(j),mod(jedge,3)+1) == k)
+%  write out specified element side
+%                    disp(['segment j=' int2str(j) ' unshared edge ' int2str(edgeper(j,1)) ' to ' int2str(edgeper(j,2)) ' on side ' int2str(jedge) ' from element ' int2str(elemper(j)) ' written.'])
+%  if first edge, write out first node
+                    if ~elast
+                        kline.coords(end+1,:)=[md.mesh.long(edgeper(j,1)) md.mesh.lat(edgeper(j,1)) alt];
+                    end
+                    kline.coords(end+1,:)=[md.mesh.long(edgeper(j,2)) md.mesh.lat(edgeper(j,2)) alt];
+                    elast=elemper(j);
+                    nlast=edgeper(j,2);
+                    slast=0;
+                    j=j+1;
+
+%  element not entirely within partition, so figure out boundary
+                else
+%                    disp(['segment j=' int2str(j) ' from element ' int2str(elemper(j)) ' shared by other partitions.'])
+                    ielem=elemper(j);
+
+%  follow partition boundary through elements not wholly in partition
+%  (may include elements not in perimeter list)
+
+                    while 1
+%  if first edge, figure out direction from perimeter edge direction
+                        if ~nlast && ~slast
+                            nlast=find(elemp(ielem,:)==edgeper(j,1));
+                            nnext=find(elemp(ielem,:)==edgeper(j,2));
+                            if     (nlast+nnext == 3)
+                                slast=1;
+                            elseif (nlast+nnext == 5)
+                                slast=2;
+                            elseif (nlast+nnext == 4)
+                                slast=3;
+                            end
+                            if     (nnext+(6-nlast-nnext) == 3)
+                                snext=1;
+                            elseif (nnext+(6-nlast-nnext) == 5)
+                                snext=2;
+                            elseif (nnext+(6-nlast-nnext) == 4)
+                                snext=3;
+                            end
+
+%  find how many nodes of current element are in current partition
+%  (1 or 2, not 3) and handle each permutation separately
+                            ipart=find(epartp(ielem,:)==k);
+%  two nodes are in current partition, so cut off other node
+                            if (length(ipart) == 2)
+                                switch 6-sum(ipart)
+                                    case nlast
+                                        slast=6-slast-snext;
+                                        nlast=0;
+                                    case nnext
+                                        if (epartp(ielem,nnext) == k)
+                                            nlast=nnext;
+                                        end
+                                    otherwise
+                                        slast=6-slast-snext;
+                                        nlast=0;
+                                end
+%  one node is in current partition
+                            else
+%  all different, so cut through centroid
+                                if (epartp(ielem,1) ~= epartp(ielem,2)) && ...
+                                   (epartp(ielem,2) ~= epartp(ielem,3)) && ...
+                                   (epartp(ielem,3) ~= epartp(ielem,1))
+                                    switch ipart
+                                        case {nlast,nnext}
+                                            if (epartp(ielem,nnext) == k)
+                                                nlast=nnext;
+                                            end
+                                        otherwise
+                                            slast=6-slast-snext;
+                                            nlast=0;
+                                    end
+%  other two are in the same partition, so cut them off
+                                else
+                                    switch ipart
+                                        case nlast
+                                            if (epartp(ielem,nnext) == k)
+                                                nlast=nnext;
+                                            end
+                                        case nnext
+                                            slast=snext;
+                                            nlast=0;
+                                        otherwise
+                                            slast=6-slast-snext;
+                                            nlast=0;
+                                    end
+                                end
+                            end
+
+%  last edge exited last element at node
+                            if nlast
+%  write out first node of first side for half-edge to midpoint
+%                                disp(['segment j=' int2str(j) ' unshared half edge from node ' int2str(elemp(ielem,nlast)) ' (node ' int2str(nlast) ') on side ' int2str(slast) ' from element ' int2str(ielem) ' written.'])
+                                kline.coords(end+1,:)=[md.mesh.long(elemp(ielem,nlast)) ...
+                                                       md.mesh.lat(elemp(ielem,nlast)) alt];
+                            end
+                            nlast=0;
+
+%  write out midpoint of first side
+                            kline.coords(end+1,:)=[(md.mesh.long(elemp(ielem,slast))...
+                                                   +md.mesh.long(elemp(ielem,mod(slast,3)+1)))/2. ...
+                                                   (md.mesh.lat(elemp(ielem,slast))...
+                                                   +md.mesh.lat(elemp(ielem,mod(slast,3)+1)))/2. alt];
+                        end
+
+%  last edge exited last element at node
+                        if nlast
+                            if elast
+%  find where last node on previous element occurs on current element
+                                nlast=find(elemp(ielem,:)==nlast,1);
+                            end
+%  half-edge occurs on unshared side from current node (unique unless mesh
+%  is only attached at node)
+                            switch nlast
+                                case 1
+                                    if ~edgeadjp(ielem,1)
+                                        nnext=2;
+                                        slast=1;
+                                    else
+                                        nnext=3;
+                                        slast=3;
+                                    end
+                                case 2
+                                    if ~edgeadjp(ielem,2)
+                                        nnext=3;
+                                        slast=2;
+                                    else
+                                        nnext=1;
+                                        slast=1;
+                                    end
+                                case 3
+                                    if ~edgeadjp(ielem,3)
+                                        nnext=1;
+                                        slast=3;
+                                    else
+                                        nnext=2;
+                                        slast=2;
+                                    end
+                            end
+%  write out half-edge from current node to midpoint of unshared side
+%                            disp(['segment j=' int2str(j) ' unshared half edge from node ' int2str(elemp(ielem,nlast)) ' (node ' int2str(nlast) ') on side ' int2str(slast) ' from element ' int2str(ielem) ' written.'])
+                            kline.coords(end+1,:)=[(md.mesh.long(elemp(ielem,nlast))...
+                                                   +md.mesh.long(elemp(ielem,nnext)))/2. ...
+                                                   (md.mesh.lat(elemp(ielem,nlast))...
+                                                   +md.mesh.lat(elemp(ielem,nnext)))/2. alt];
+                            nlast=0;
+
+%  last edge exited last element at midpoint of side
+                        elseif slast
+                            if elast
+%  find where last side on previous element occurs on current element
+                                slast=find(edgeadjp(ielem,:)==elast,1);
+                            end
+                        end
+
+%  find how many nodes of current element are in current partition
+%  (1 or 2, not 3) and handle each permutation separately
+                        ipart=find(epartp(ielem,:)==k);
+                        if (length(ipart) == 2)
+%  two nodes are in current partition, so cut off other node
+                            switch 6-sum(ipart)
+                                case 1
+                                    snext=3+1-slast;
+                                case 2
+                                    snext=1+2-slast;
+                                case 3
+                                    snext=2+3-slast;
+                            end
+                        else
+                            if (epartp(ielem,1) ~= epartp(ielem,2)) && ...
+                               (epartp(ielem,2) ~= epartp(ielem,3)) && ...
+                               (epartp(ielem,3) ~= epartp(ielem,1))
+%  all different, so cut through centroid
+%                                disp(['element ielem=' int2str(ielem) ' centroid written.'])
+                                kline.coords(end+1,:)=[sum(md.mesh.long(elemp(ielem,:)))/3. ...
+                                                       sum(md.mesh.lat(elemp(ielem,:)))/3. alt];
+                            end
+%  one node is in current partition, so cut off other two nodes
+                            switch ipart
+                                case 1
+                                    snext=3+1-slast;
+                                case 2
+                                    snext=1+2-slast;
+                                case 3
+                                    snext=2+3-slast;
+                            end
+                        end
+%  write out midpoint of opposite side
+%                        disp(['segment j=' int2str(j) ' internal edge from side ' int2str(slast) ' to side ' int2str(snext) ' from element ' int2str(ielem) ' written.'])
+                        kline.coords(end+1,:)=[(md.mesh.long(elemp(ielem,snext))...
+                                               +md.mesh.long(elemp(ielem,mod(snext,3)+1)))/2. ...
+                                               (md.mesh.lat(elemp(ielem,snext))...
+                                               +md.mesh.lat(elemp(ielem,mod(snext,3)+1)))/2. alt];
+                        elast=ielem;
+                        nlast=0;
+                        slast=snext;
+%  find adjacent element to opposite side
+                        ielem=edgeadjp(elast,slast);
+%  if opposite side is unshared, find it in edge perimeter list
+                        if ~ielem
+                            jlast=find(elemper(j:end)==elast)+j-1;
+                            j=0;
+                            for l=1:length(jlast)
+                                if ((elemp(elast,slast)          == edgeper(jlast(l),1)) && ...
+                                    (elemp(elast,mod(slast,3)+1) == edgeper(jlast(l),2))) || ...
+                                   ((elemp(elast,slast)          == edgeper(jlast(l),2)) && ...
+                                    (elemp(elast,mod(slast,3)+1) == edgeper(jlast(l),1)))
+                                    j=jlast(l);
+                                    break
+                                end
+                            end
+                            if ~j
+                                j=iloop(i+1)-1;
+                            end
+%  write out half-edge from midpoint of unshared side to node
+                            if (epartp(elast,slast) == k)
+                                nnext=slast;
+                            else
+                                nnext=mod(slast,3)+1;
+                            end
+%                            disp(['segment j=' int2str(j) ' unshared half edge on side ' int2str(slast) ' to node ' int2str(elemp(elast,nnext)) ' (node ' int2str(nnext) ') from element ' int2str(elast) ' written.'])
+                            kline.coords(end+1,:)=[md.mesh.long(elemp(elast,nnext)) ...
+                                                   md.mesh.lat(elemp(elast,nnext)) alt];
+                            break
+%  if not unshared, advance perimeter list and watch for end
+                        else
+                            if (elast == elemper(j))
+                                if (j+1 < iloop(i+1)) && ...
+                                   ~isempty(find(elemper(j+1:end)~=elast,1))
+                                    j=j+find(elemper(j+1:end)~=elast,1);
+                                else
+                                    break
+                                end
+                            end
+                        end
+                    end
+                    j=j+1;
+                end
+            end
+
+            kmgeom.geometry{1}(i)=kline;
+            clear kline
+        end
+
+        kplace.geometry=kmgeom;
+        kfold.feature{1}(k)=kplace;
+        clear kmgeom kplace
+    end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_part_elems.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_part_elems.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_part_elems.m	(revision 27955)
@@ -0,0 +1,216 @@
+%%
+%  create kml polygons for the partition elements.
+%
+%  [kfold]=kml_part_elems(md,params)
+%
+%  where the required input is:
+%    md            (model, model class object)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  and the optional input is:
+%    latsgn        (numeric, +1/-1 for north/south latitude)
+%    data          (numeric, element or nodal results data)
+%    alt           (numeric, altitude for polygons, default 10000)
+%    cmin          (numeric, minimum of color map)
+%    cmax          (numeric, maximum of color map)
+%    cmap          (char or numeric, colormap definition)
+%    prtplt        (char, 'off'/'no' for partition segment plot)
+%
+%  and the required output is:
+%    kfold         (kml_folder, folder of polygon placemarks)
+%
+function [kfold]=kml_part_elems(varargin)
+
+if ~nargin
+    help kml_part_elems
+    return
+end
+
+%%  process input data
+
+iarg=1;
+if (nargin >= 1)
+    md=varargin{1};
+end
+if ~exist('md','var') || isempty(md) || ~isa(md,'model')
+    error(['Model ''' inputname(iarg) ''' is unrecognized class ''' class(md) '''.']);
+end
+
+%  parameters
+
+iarg=iarg+1;
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'latsgn','data','alt',...
+                 'cmin','cmax','cmap','prtplt'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1},20) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1},20) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    if strcmpi(varargin{iarg},'data')
+        cdata=inputname(iarg+1);
+    end
+    iarg=iarg+2;
+end
+
+if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
+   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
+    if     ~exist('latsgn','var')
+        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
+    elseif (abs(latsgn) ~= 1)
+        error(['Incorrect latsgn=' num2str(latsgn) ' parameter to calculate missing lat/long data.']);
+    else
+        display('Converting x/y data to lat/long data.');
+        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
+    end
+end
+
+if exist('data','var') && ~isempty(data)
+    if     (numel(data)==md.mesh.numberofelements)
+        edata=data;
+    elseif (numel(data)==md.mesh.numberofvertices)
+        ndata=data;
+        display('Averaging nodal data to element data.');
+        edata=zeros(1,md.mesh.numberofelements);
+        for i=1:size(md.mesh.elements,1)
+            for j=1:size(md.mesh.elements,2)
+                edata(i)=edata(i)+ndata(md.mesh.elements(i,j));
+            end
+            edata(i)=edata(i)/size(md.mesh.elements,2);
+        end
+    else
+        error(['Data has incorrect number of ' num2str(numel(data)) ' values.']);
+    end
+end
+
+%  colormap command operates on a figure, so create an invisible one
+%  (could also directly call colormaps, e.g. jet(64), but risky)
+
+hfig=figure('Visible','off');
+if exist('cmap','var')
+    colormap(cmap)
+end
+cmap=colormap;
+close(hfig)
+
+if exist('edata','var')
+    if ~exist('cmin','var')
+        cmin=min(min(edata));
+    end
+    if ~exist('cmax','var')
+        cmax=max(max(edata));
+    end
+end
+
+if ~exist('alt','var')
+    alt=10000;
+end
+
+%  write folder for partition elements
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    kfold=kml_folder();
+    kfold.name      ='Partition Elements';
+    kfold.visibility=1;
+    kfold.descript  =sprintf('Partitions=%d, Nodes=%d\n',...
+        md.qmu.numberofpartitions,md.mesh.numberofvertices);
+    kfold.feature   ={repmat(kml_placemark(),1,md.qmu.numberofpartitions)};
+
+%  write each partition loop as a polygon multigeometry placemark
+
+    disp(['Writing ' num2str(md.qmu.numberofpartitions) ' partitions as KML polygons.']);
+    epart=md.qmu.partition(md.mesh.elements)+1;
+    if exist('ndata','var') || exist('edata','var')
+        pdata=zeros(1,md.qmu.numberofpartitions);
+        pdata(:)=NaN;
+    end
+
+%  loop over each partition
+
+    for k=1:md.qmu.numberofpartitions
+
+%  for each partition, find all the included elements
+
+        [icol,irow]=find(epart'==k);
+        if isempty(irow)
+            continue;
+        end
+        irow=unique(irow);
+        elem=md.mesh.elements(irow,:);
+
+%  determine the data to be used for the colors (if any)
+
+        if exist('ndata','var')
+            pdata(k)=ndata(find(md.qmu.partition+1==k,1));
+        elseif exist('edata','var')
+            for i=1:size(epart,1)
+                if isempty(find(epart(i,:)~=k,1))
+                    pdata(k)=edata(i);
+                    break
+                end
+            end
+            if isnan(pdata(k))
+                warning('Data for Partition %d is not defined.\n',k)
+            end
+        end
+
+%  set up the placemark with multigeometry
+
+        kplace=kml_placemark();
+        kplace.name      =sprintf('Partition %d (%d elements)',k,size(elem,1));
+        kplace.visibility=1;
+        if exist('pdata','var')
+            kplace.descript  =sprintf('Partition data: %g',pdata(k));
+            imap = fix((pdata(k)-cmin)/(cmax-cmin)*size(cmap,1))+1;
+            if     (imap >= 1) && (imap <= size(cmap,1))
+                kplace.styleurl  =sprintf('#MatlabColor%d',imap);
+            elseif (pdata(k) == cmax)
+                kplace.styleurl  =sprintf('#MatlabColor%d',size(cmap,1));
+            else
+                kplace.styleurl  =sprintf('#BlackLineEmptyPoly');
+            end
+        else
+            kplace.styleurl  =sprintf('#BlackLineRandomPoly');
+        end
+
+        kmgeom=kml_multigeometry();
+        kmgeom.geometry  ={repmat(kml_polygon(),1,size(elem,1))};
+
+%  loop over each element for the given partition
+
+        for i=1:size(elem,1)
+            kpoly=kml_polygon();
+            kpoly.extrude   =1;
+            kpoly.altmode   ='relativeToGround';
+
+            kring=kml_linearring();
+            kring.coords    =zeros(size(elem,2)+1,3);
+
+%  loop over the element nodes
+
+            for j=1:size(elem,2)
+                kring.coords(j,:)=[md.mesh.long(elem(i,j)) md.mesh.lat(elem(i,j)) alt];
+            end
+            kring.coords(end,:)=kring.coords(1,:);
+
+            kpoly.outer=kring;
+            kmgeom.geometry{1}(i)=kpoly;
+            clear kring kpoly
+        end
+
+        kplace.geometry=kmgeom;
+        kfold.feature{1}(k)=kplace;
+        clear kmgeom kplace
+    end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_part_flagedges.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_part_flagedges.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_part_flagedges.m	(revision 27955)
@@ -0,0 +1,109 @@
+%%
+%  create kml linestrings for the flagged partition edges.
+%
+%  [kfold]=kml_part_flagedges(md,params)
+%
+%  where the required input is:
+%    md            (model, model class object)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  and the optional input is:
+%    latsgn        (numeric, +1/-1 for north/south latitude)
+%    alt           (numeric, altitude for polygons, default 10000)
+%    prtplt        (char, 'off'/'no' for partition edge plot)
+%
+%  and the required output is:
+%    kfold         (kml_folder, folder of linestring placemarks)
+%
+function [kfold]=kml_part_flagedges(varargin)
+
+if ~nargin
+    help kml_part_flagedges
+    return
+end
+
+%%  process input data
+
+iarg=1;
+if (nargin >= 1)
+    md=varargin{1};
+end
+if ~exist('md','var') || isempty(md) || ~isa(md,'model')
+    error(['Model ''' inputname(iarg) ''' is unrecognized class ''' class(md) '''.']);
+end
+
+%  parameters
+
+iarg=iarg+1;
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'latsgn','alt','prtplt'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1},20) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1},20) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
+   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
+    if     ~exist('latsgn','var')
+        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
+    elseif (abs(latsgn) ~= 1)
+        error(['Incorrect latsgn=' num2str(latsgn) ' parameter to calculate missing lat/long data.']);
+    else
+        display('Converting x/y data to lat/long data.');
+        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
+    end
+end
+
+if ~exist('alt','var')
+    alt=10000;
+end
+
+%%  write folder for partition segments
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    [latseg,lonseg]=flagedges(md.mesh.elements,md.mesh.lat,md.mesh.long,md.qmu.partition);
+    kfold=kml_folder();
+    kfold.name      ='Partition Segments';
+    kfold.visibility=1;
+    kfold.descript  =sprintf('Partitions=%d, Segments=%d',...
+        md.qmu.numberofpartitions,size(latseg,1));
+    kfold.feature   ={repmat(kml_placemark(),1,size(latseg,1))};
+
+%  write each segment as a linestring placemark
+
+    disp(['Writing ' num2str(size(latseg,1)) ' partition segments as KML linestrings.']);
+    for i=1:size(latseg,1)
+        kplace=kml_placemark();
+        kplace.name      =sprintf('Segment %d',i);
+        kplace.visibility=1;
+        kplace.styleurl  ='#RedLineRedPoly';
+
+        kline=kml_linestring();
+        kline.extrude   =1;
+        kline.tessellate=1;
+        kline.altmode   ='relativeToGround';
+        kline.coords    =zeros(2,3);
+
+        for j=1:2
+            kline.coords(j,:)=[lonseg(i,j) latseg(i,j) alt];
+        end
+
+        kplace.geometry=kline;
+        kfold.feature{1}(i)=kplace;
+        clear kline kplace
+    end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_partitions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_partitions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_partitions.m	(revision 27955)
@@ -0,0 +1,485 @@
+%%
+%  create kml polygons for the partitions.
+%
+%  [kfold]=kml_partitions(fid,md,params)
+%
+%  where the required input is:
+%    fid           (char, file ID of .kml file)
+%    md            (model, model class object)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  and the optional input is:
+%    latsgn        (numeric, +1/-1 for north/south latitude)
+%    data          (numeric, element or nodal results data)
+%    alt           (numeric, altitude for polygons, default 10000)
+%    cmin          (numeric, minimum of color map)
+%    cmax          (numeric, maximum of color map)
+%    cmap          (char or numeric, colormap definition)
+%    prtplt        (char, 'off'/'no' for partition segment plot)
+%
+%  and the required output is:
+%    kfold         (kml_folder, folder of polygon placemarks)
+%
+function [kfold]=kml_partitions(varargin)
+
+if ~nargin
+    help kml_part_edges
+    return
+end
+
+%%  process input data
+
+iarg=1;
+if (nargin >= 1)
+    md=varargin{1};
+end
+if ~exist('md','var') || isempty(md) || ~isa(md,'model')
+    error(['Model ''' inputname(iarg) ''' is unrecognized class ''' class(md) '''.']);
+end
+
+%  parameters
+
+iarg=iarg+1;
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'latsgn','data','alt',...
+                 'cmin','cmax','cmap','prtplt'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1},20) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1},20) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    if strcmpi(varargin{iarg},'data')
+        cdata=inputname(iarg+1);
+    end
+    iarg=iarg+2;
+end
+
+if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
+   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
+    if     ~exist('latsgn','var')
+        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
+    elseif (abs(latsgn) ~= 1)
+        error(['Incorrect latsgn=' num2str(latsgn) ' parameter to calculate missing lat/long data.']);
+    else
+        display('Converting x/y data to lat/long data.');
+        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
+    end
+end
+
+if exist('data','var') && ~isempty(data)
+    if     (numel(data)==md.mesh.numberofelements)
+        edata=data;
+    elseif (numel(data)==md.mesh.numberofvertices)
+        ndata=data;
+        display('Averaging nodal data to element data.');
+        edata=zeros(1,md.mesh.numberofelements);
+        for i=1:size(md.mesh.elements,1)
+            for j=1:size(md.mesh.elements,2)
+                edata(i)=edata(i)+ndata(md.mesh.elements(i,j));
+            end
+            edata(i)=edata(i)/size(md.mesh.elements,2);
+        end
+    else
+        error(['Data has incorrect number of ' num2str(numel(data)) ' values.']);
+    end
+end
+
+%  colormap command operates on a figure, so create an invisible one
+%  (could also directly call colormaps, e.g. jet(64), but risky)
+
+hfig=figure('Visible','off');
+if exist('cmap','var')
+    colormap(cmap)
+end
+cmap=colormap;
+close(hfig)
+
+if exist('edata','var')
+    if ~exist('cmin','var')
+        cmin=min(min(edata));
+    end
+    if ~exist('cmax','var')
+        cmax=max(max(edata));
+    end
+end
+
+if ~exist('alt','var')
+    alt=10000;
+end
+
+%%  write folder for partitions
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    kfold=kml_folder();
+    kfold.name      ='Partitions';
+    kfold.visibility=1;
+    kfold.descript  =sprintf('Partitions=%d, Nodes=%d',...
+        md.qmu.numberofpartitions,md.mesh.numberofvertices);
+    kfold.feature   ={repmat(kml_placemark(),1,md.qmu.numberofpartitions)};
+
+%  write each partition as a polygon multigeometry placemark
+
+    disp(['Writing ' num2str(md.qmu.numberofpartitions) ' partitions as KML polygons.']);
+    epart=md.qmu.partition(md.mesh.elements)+1;
+    if exist('ndata','var') || exist('edata','var')
+        pdata=zeros(1,md.qmu.numberofpartitions);
+        pdata(:)=NaN;
+    end
+
+%  loop over each partition
+
+    for k=1:md.qmu.numberofpartitions
+%        disp(['partition k=' int2str(k)])
+
+%  for each partition, find all the included elements and determine the
+%  perimeter (including those shared by another partition)
+
+        [icol,irow]=find(epart'==k);
+        if isempty(irow)
+            continue;
+        end
+        irow=unique(irow);
+        elemp=md.mesh.elements(irow,:);
+        epartp=epart(irow,:);
+        nodeconp=kmlnodeconnectivity(elemp,md.mesh.numberofvertices);
+        [edgeadjp]=edgeadjacency(elemp,nodeconp);
+        [edgeper,elemper,iloop]=edgeperimeter(elemp,nodeconp,edgeadjp);
+        iloop(end+1)=size(edgeper,1)+1;
+
+%  determine the data to be used for the colors (if any)
+
+        if exist('ndata','var')
+            pdata(k)=ndata(find(md.qmu.partition+1==k,1));
+        elseif exist('edata','var')
+            for i=1:size(epartp,1)
+                if isempty(find(epart(i,:)~=k,1))
+                    pdata(k)=edata(irow(i));
+                    break
+                end
+            end
+            if isnan(pdata(k))
+                warning('Data for Partition %d is not defined.\n',k)
+            end
+        end
+
+%  set up the placemark with multigeometry
+
+        kplace=kml_placemark();
+        if (length(iloop)-1 > 1)
+            kplace.name      =sprintf('Partition %d (%d loops)',k,length(iloop)-1);
+        else
+            kplace.name      =sprintf('Partition %d',k);
+        end
+        kplace.visibility=1;
+        if exist('pdata','var')
+            kplace.descript  =sprintf('Partition data: %g',pdata(k));
+            imap = fix((pdata(k)-cmin)/(cmax-cmin)*size(cmap,1))+1;
+            if     (imap >= 1) && (imap <= size(cmap,1))
+                kplace.styleurl  =sprintf('#MatlabColor%d',imap);
+            elseif (pdata(k) == cmax)
+                kplace.styleurl  =sprintf('#MatlabColor%d',size(cmap,1));
+            else
+                kplace.styleurl  =sprintf('#BlackLineEmptyPoly');
+            end
+        else
+            kplace.styleurl  =sprintf('#BlackLineRandomPoly');
+        end
+
+        kmgeom=kml_multigeometry();
+        kmgeom.geometry  ={repmat(kml_polygon(),1,length(iloop)-1)};
+
+%  loop over each loop of the perimeter for the given partition
+
+        for i=1:length(iloop)-1
+            kpoly=kml_polygon();
+            kpoly.extrude   =1;
+            kpoly.altmode   ='relativeToGround';
+
+            kring=kml_linearring();
+            kring.coords    =zeros(0,3);
+
+            elast=0;
+            nlast=0;
+            slast=0;
+            lat=[];
+            long=[];
+
+%  loop over the element edges on the loop of the partition
+
+            j=iloop(i);
+            while (j < iloop(i+1))
+%  find which side of element is referenced in perimeter list
+                for l=1:size(elemp,2)
+                    if ((elemp(elemper(j),l)          == edgeper(j,1)) && ...
+                        (elemp(elemper(j),mod(l,3)+1) == edgeper(j,2))) || ...
+                       ((elemp(elemper(j),l)          == edgeper(j,2)) && ...
+                        (elemp(elemper(j),mod(l,3)+1) == edgeper(j,1)))
+                        jedge=l;
+                        break
+                    end
+                end
+
+%  check if element side connects nodes in partition
+                if (epartp(elemper(j),jedge)          == k) && ...
+                   (epartp(elemper(j),mod(jedge,3)+1) == k)
+%  write out specified element side
+%                    disp(['segment j=' int2str(j) ' unshared edge ' int2str(edgeper(j,1)) ' to ' int2str(edgeper(j,2)) ' on side ' int2str(jedge) ' from element ' int2str(elemper(j)) ' written.'])
+%  if first edge, write out first node
+                    if ~elast
+                        kring.coords(end+1,:)=[md.mesh.long(edgeper(j,1)) md.mesh.lat(edgeper(j,1)) alt];
+                    end
+                    kring.coords(end+1,:)=[md.mesh.long(edgeper(j,2)) md.mesh.lat(edgeper(j,2)) alt];
+                    elast=elemper(j);
+                    nlast=edgeper(j,2);
+                    slast=0;
+                    j=j+1;
+
+%  element not entirely within partition, so figure out boundary
+                else
+%                    disp(['segment j=' int2str(j) ' from element ' int2str(elemper(j)) ' shared by other partitions.'])
+                    ielem=elemper(j);
+
+%  follow partition boundary through elements not wholly in partition
+%  (may include elements not in perimeter list)
+
+                    while 1
+%  if first edge, figure out direction from perimeter edge direction
+                        if ~nlast && ~slast
+                            nlast=find(elemp(ielem,:)==edgeper(j,1));
+                            nnext=find(elemp(ielem,:)==edgeper(j,2));
+                            if     (nlast+nnext == 3)
+                                slast=1;
+                            elseif (nlast+nnext == 5)
+                                slast=2;
+                            elseif (nlast+nnext == 4)
+                                slast=3;
+                            end
+                            if     (nnext+(6-nlast-nnext) == 3)
+                                snext=1;
+                            elseif (nnext+(6-nlast-nnext) == 5)
+                                snext=2;
+                            elseif (nnext+(6-nlast-nnext) == 4)
+                                snext=3;
+                            end
+
+%  find how many nodes of current element are in current partition
+%  (1 or 2, not 3) and handle each permutation separately
+                            ipart=find(epartp(ielem,:)==k);
+%  two nodes are in current partition, so cut off other node
+                            if (length(ipart) == 2)
+                                switch 6-sum(ipart)
+                                    case nlast
+                                        slast=6-slast-snext;
+                                        nlast=0;
+                                    case nnext
+                                        if (epartp(ielem,nnext) == k)
+                                            nlast=nnext;
+                                        end
+                                    otherwise
+                                        slast=6-slast-snext;
+                                        nlast=0;
+                                end
+%  one node is in current partition
+                            else
+%  all different, so cut through centroid
+                                if (epartp(ielem,1) ~= epartp(ielem,2)) && ...
+                                   (epartp(ielem,2) ~= epartp(ielem,3)) && ...
+                                   (epartp(ielem,3) ~= epartp(ielem,1))
+                                    switch ipart
+                                        case {nlast,nnext}
+                                            if (epartp(ielem,nnext) == k)
+                                                nlast=nnext;
+                                            end
+                                        otherwise
+                                            slast=6-slast-snext;
+                                            nlast=0;
+                                    end
+%  other two are in the same partition, so cut them off
+                                else
+                                    switch ipart
+                                        case nlast
+                                            if (epartp(ielem,nnext) == k)
+                                                nlast=nnext;
+                                            end
+                                        case nnext
+                                            slast=snext;
+                                            nlast=0;
+                                        otherwise
+                                            slast=6-slast-snext;
+                                            nlast=0;
+                                    end
+                                end
+                            end
+
+%  last edge exited last element at node
+                            if nlast
+%  write out first node of first side for half-edge to midpoint
+%                                disp(['segment j=' int2str(j) ' unshared half edge from node ' int2str(elemp(ielem,nlast)) ' (node ' int2str(nlast) ') on side ' int2str(slast) ' from element ' int2str(ielem) ' written.'])
+                                kring.coords(end+1,:)=[md.mesh.long(elemp(ielem,nlast)) ...
+                                                       md.mesh.lat(elemp(ielem,nlast)) alt];
+                            end
+                            nlast=0;
+
+%  write out midpoint of first side
+                            kring.coords(end+1,:)=[(md.mesh.long(elemp(ielem,slast))...
+                                                   +md.mesh.long(elemp(ielem,mod(slast,3)+1)))/2. ...
+                                                   (md.mesh.lat(elemp(ielem,slast))...
+                                                   +md.mesh.lat(elemp(ielem,mod(slast,3)+1)))/2. alt];
+                        end
+
+%  last edge exited last element at node
+                        if nlast
+                            if elast
+%  find where last node on previous element occurs on current element
+                                nlast=find(elemp(ielem,:)==nlast,1);
+                            end
+%  half-edge occurs on unshared side from current node (unique unless mesh
+%  is only attached at node)
+                            switch nlast
+                                case 1
+                                    if ~edgeadjp(ielem,1)
+                                        nnext=2;
+                                        slast=1;
+                                    else
+                                        nnext=3;
+                                        slast=3;
+                                    end
+                                case 2
+                                    if ~edgeadjp(ielem,2)
+                                        nnext=3;
+                                        slast=2;
+                                    else
+                                        nnext=1;
+                                        slast=1;
+                                    end
+                                case 3
+                                    if ~edgeadjp(ielem,3)
+                                        nnext=1;
+                                        slast=3;
+                                    else
+                                        nnext=2;
+                                        slast=2;
+                                    end
+                            end
+%  write out half-edge from current node to midpoint of unshared side
+%                            disp(['segment j=' int2str(j) ' unshared half edge from node ' int2str(elemp(ielem,nlast)) ' (node ' int2str(nlast) ') on side ' int2str(slast) ' from element ' int2str(ielem) ' written.'])
+                            kring.coords(end+1,:)=[(md.mesh.long(elemp(ielem,nlast))...
+                                                   +md.mesh.long(elemp(ielem,nnext)))/2. ...
+                                                   (md.mesh.lat(elemp(ielem,nlast))...
+                                                   +md.mesh.lat(elemp(ielem,nnext)))/2. alt];
+                            nlast=0;
+
+%  last edge exited last element at midpoint of side
+                        elseif slast
+                            if elast
+%  find where last side on previous element occurs on current element
+                                slast=find(edgeadjp(ielem,:)==elast,1);
+                            end
+                        end
+
+%  find how many nodes of current element are in current partition
+%  (1 or 2, not 3) and handle each permutation separately
+                        ipart=find(epartp(ielem,:)==k);
+                        if (length(ipart) == 2)
+%  two nodes are in current partition, so cut off other node
+                            switch 6-sum(ipart)
+                                case 1
+                                    snext=3+1-slast;
+                                case 2
+                                    snext=1+2-slast;
+                                case 3
+                                    snext=2+3-slast;
+                            end
+                        else
+                            if (epartp(ielem,1) ~= epartp(ielem,2)) && ...
+                               (epartp(ielem,2) ~= epartp(ielem,3)) && ...
+                               (epartp(ielem,3) ~= epartp(ielem,1))
+%  all different, so cut through centroid
+%                                disp(['element ielem=' int2str(ielem) ' centroid written.'])
+                                kring.coords(end+1,:)=[sum(md.mesh.long(elemp(ielem,:)))/3. ...
+                                                       sum(md.mesh.lat(elemp(ielem,:)))/3. alt];
+                            end
+%  one node is in current partition, so cut off other two nodes
+                            switch ipart
+                                case 1
+                                    snext=3+1-slast;
+                                case 2
+                                    snext=1+2-slast;
+                                case 3
+                                    snext=2+3-slast;
+                            end
+                        end
+%  write out midpoint of opposite side
+%                        disp(['segment j=' int2str(j) ' internal edge from side ' int2str(slast) ' to side ' int2str(snext) ' from element ' int2str(ielem) ' written.'])
+                        kring.coords(end+1,:)=[(md.mesh.long(elemp(ielem,snext))...
+                                               +md.mesh.long(elemp(ielem,mod(snext,3)+1)))/2. ...
+                                               (md.mesh.lat(elemp(ielem,snext))...
+                                               +md.mesh.lat(elemp(ielem,mod(snext,3)+1)))/2. alt];
+                        elast=ielem;
+                        nlast=0;
+                        slast=snext;
+%  find adjacent element to opposite side
+                        ielem=edgeadjp(elast,slast);
+%  if opposite side is unshared, find it in edge perimeter list
+                        if ~ielem
+                            jlast=find(elemper(j:end)==elast)+j-1;
+                            j=0;
+                            for l=1:length(jlast)
+                                if ((elemp(elast,slast)          == edgeper(jlast(l),1)) && ...
+                                    (elemp(elast,mod(slast,3)+1) == edgeper(jlast(l),2))) || ...
+                                   ((elemp(elast,slast)          == edgeper(jlast(l),2)) && ...
+                                    (elemp(elast,mod(slast,3)+1) == edgeper(jlast(l),1)))
+                                    j=jlast(l);
+                                    break
+                                end
+                            end
+                            if ~j
+                                j=iloop(i+1)-1;
+                            end
+%  write out half-edge from midpoint of unshared side to node
+                            if (epartp(elast,slast) == k)
+                                nnext=slast;
+                            else
+                                nnext=mod(slast,3)+1;
+                            end
+%                            disp(['segment j=' int2str(j) ' unshared half edge on side ' int2str(slast) ' to node ' int2str(elemp(elast,nnext)) ' (node ' int2str(nnext) ') from element ' int2str(elast) ' written.'])
+                            kring.coords(end+1,:)=[md.mesh.long(elemp(elast,nnext)) ...
+                                                   md.mesh.lat(elemp(elast,nnext)) alt];
+                            break
+%  if not unshared, advance perimeter list and watch for end
+                        else
+                            if (elast == elemper(j))
+                                if (j+1 < iloop(i+1)) && ...
+                                   ~isempty(find(elemper(j+1:end)~=elast,1))
+                                    j=j+find(elemper(j+1:end)~=elast,1);
+                                else
+                                    break
+                                end
+                            end
+                        end
+                    end
+                    j=j+1;
+                end
+            end
+
+            kpoly.outer=kring;
+            kmgeom.geometry{1}(i)=kpoly;
+            clear kring kpoly
+        end
+
+        kplace.geometry=kmgeom;
+        kfold.feature{1}(k)=kplace;
+        clear kmgeom kplace
+    end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_placemark.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_placemark.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_placemark.m	(revision 27955)
@@ -0,0 +1,238 @@
+%
+%  definition for the kml_placemark sub (derived) class.
+%
+%  [kml]=kml_placemark(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, placemark id, '')
+%    name          (char, name, '')
+%    visibility    (logical, visibility, true)
+%    open          (logical, open, false)
+%    snippet       (char, snippet, '')
+%    descript      (char, description, '')
+%    styleurl      (char, style url, '')
+%    style         (cell array, styles)
+%    geometry      (kml_geometry, placemark geometry)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_placemark < kml_feature
+    properties
+        geometry  =kml_geometry.empty();
+    end
+
+    methods
+        function [kml]=kml_placemark(varargin)
+
+            kml=kml@kml_feature(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_placemark());
+
+                        for i=length(fieldnames(kml_feature()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_feature(kml(i));
+                disp(sprintf('      geometry: %s %s\n' ,string_size(kml(i).geometry),...
+                             class(kml(i).geometry)));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_feature());
+            fnames={fnames{:} ...
+                    'geometry' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the placemarks
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<Placemark id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<Placemark>\n',indent);
+                end
+                kml_write@kml_feature(kmli,fid,indent);
+
+%  loop over the geometry elements for each placemark
+
+                for j=1:min(1,numel(kmli.geometry))
+                    kmlij=kmli.geometry(j);
+                    if ~isempty(kmlij)
+                        if isa(kmlij,'kml_geometry')
+                            kml_write(kmlij,fid,[indent '  ']);
+                        else
+                            warning('kml(%d).geometry(%d) is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmlij),'kml_geometry');
+                        end
+                    end
+                end
+
+                fprintf(fid,'%s</Placemark>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the placemarks
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<Placemark id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<Placemark>\n',indent));
+                end
+                sbuf=kml_swrite@kml_feature(kmli,sbuf,indent);
+
+%  loop over the geometry elements for each placemark
+
+                for j=1:min(1,numel(kmli.geometry))
+                    kmlij=kmli.geometry(j);
+                    if ~isempty(kmlij)
+                        if isa(kmlij,'kml_geometry')
+                            sbuf=kml_swrite(kmlij,sbuf,[indent '  ']);
+                        else
+                            warning('kml(%d).geometry(%d) is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmlij),'kml_geometry');
+                        end
+                    end
+                end
+
+                sbuf=add(sbuf,sprintf('%s</Placemark>\n',indent));
+            end
+
+        end
+
+%  delete the object
+
+        function []=delete(kml)
+
+%  loop over the placemarks
+
+            for i=numel(kml):-1:1
+                kmli=kml(i);
+                delete@kml_feature(kmli);
+
+%  loop over the geometry elements for each placemark
+
+                for j=min(1,numel(kmli.geometry)):-1:1
+                    kmlij=kmli.geometry(j);
+                    if ~isempty(kmlij)
+                        if isa(kmlij,'kml_geometry')
+                            delete(kmlij);
+                        else
+                            warning('kml(%d).geometry(%d) is a ''%s'' class object, not ''%s''.',...
+                                i,j,class(kmlij),'kml_geometry');
+                        end
+                    end
+                end
+                kmli.geometry  =kml_geometry.empty();
+
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_polygon.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_polygon.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_polygon.m	(revision 27955)
@@ -0,0 +1,271 @@
+%
+%  definition for the kml_polygon sub (derived) class.
+%
+%  [kml]=kml_polygon(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, polygon id, '')
+%    extrude       (logical, extrusion, false)
+%    tessellate    (logical, tessellation, false)
+%    altmode       (char, altitude mode, 'clampToGround')
+%    outer         (kml_linearring, outer boundary)
+%    inner         (kml_linearring, inner boundaries)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_polygon < kml_geometry
+    properties
+        extrude   =false;
+        tessellate=false;
+        altmode   ='clampToGround';
+        outer     =kml_linearring.empty();
+        inner     =kml_linearring.empty();
+    end
+
+    methods
+        function [kml]=kml_polygon(varargin)
+
+            kml=kml@kml_geometry(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_polygon());
+
+                        for i=length(fieldnames(kml_geometry()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_geometry(kml(i));
+                disp(sprintf('       extrude: %g'      ,kml(i).extrude));
+                disp(sprintf('    tessellate: %g'      ,kml(i).tessellate));
+                disp(sprintf('       altmode: ''%s'''  ,kml(i).altmode));
+                disp(sprintf('         outer: %s %s'   ,string_size(kml(i).outer),...
+                             class(kml(i).outer)));
+                disp(sprintf('         inner: %s %s\n' ,string_size(kml(i).inner),...
+                             class(kml(i).inner)));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_geometry());
+            fnames={fnames{:} ...
+                    'extrude' ...
+                    'tessellate' ...
+                    'altmode' ...
+                    'outer' ...
+                    'inner' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the polygons
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<Polygon id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<Polygon>\n',indent);
+                end
+                kml_write@kml_geometry(kmli,fid,indent);
+                fprintf(fid,'%s  <extrude>%d</extrude>\n',indent,kmli.extrude);
+                fprintf(fid,'%s  <tessellate>%d</tessellate>\n',indent,kmli.tessellate);
+                fprintf(fid,'%s  <altitudeMode>%s</altitudeMode>\n',indent,kmli.altmode);
+                fprintf(fid,'%s  <outerBoundaryIs>\n',indent);
+                if isa(kmli.outer,'kml_linearring')
+                    kml_write(kmli.outer,fid,[indent '    ']);
+                else
+                    warning('kml(%d).outer is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.outer),'kml_linearring');
+                end
+                fprintf(fid,'%s  </outerBoundaryIs>\n',indent);
+
+%  loop over any inner boundaries for each polygon
+
+                if isa(kmli.inner,'kml_linearring')
+                    for j=1:numel(kmli.inner)
+                        fprintf(fid,'%s  <innerBoundaryIs>\n',indent);
+                        kml_write(kmli.inner(j),fid,[indent '    ']);
+                        fprintf(fid,'%s  </innerBoundaryIs>\n',indent);
+                    end
+                else
+                    warning('kml(%d).inner is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.inner),'kml_linearring');
+                end
+
+                fprintf(fid,'%s</Polygon>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the polygons
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<Polygon id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<Polygon>\n',indent));
+                end
+                sbuf=kml_swrite@kml_geometry(kmli,sbuf,indent);
+                sbuf=add(sbuf,sprintf('%s  <extrude>%d</extrude>\n',indent,kmli.extrude));
+                sbuf=add(sbuf,sprintf('%s  <tessellate>%d</tessellate>\n',indent,kmli.tessellate));
+                sbuf=add(sbuf,sprintf('%s  <altitudeMode>%s</altitudeMode>\n',indent,kmli.altmode));
+                sbuf=add(sbuf,sprintf('%s  <outerBoundaryIs>\n',indent));
+                if isa(kmli.outer,'kml_linearring')
+                    sbuf=kml_swrite(kmli.outer,sbuf,[indent '    ']);
+                else
+                    warning('kml(%d).outer is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.outer),'kml_linearring');
+                end
+                sbuf=add(sbuf,sprintf('%s  </outerBoundaryIs>\n',indent));
+
+%  loop over any inner boundaries for each polygon
+
+                if isa(kmli.inner,'kml_linearring')
+                    for j=1:numel(kmli.inner)
+                        sbuf=add(sbuf,sprintf('%s  <innerBoundaryIs>\n',indent));
+                        sbuf=kml_swrite(kmli.inner(j),sbuf,[indent '    ']);
+                        sbuf=add(sbuf,sprintf('%s  </innerBoundaryIs>\n',indent));
+                    end
+                else
+                    warning('kml(%d).inner is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.inner),'kml_linearring');
+                end
+
+                sbuf=add(sbuf,sprintf('%s</Polygon>\n',indent));
+            end
+
+        end
+
+%  delete the object
+
+        function []=delete(kml)
+
+%  loop over the polygons
+
+            for i=numel(kml):-1:1
+                kmli=kml(i);
+                if isa(kmli.outer,'kml_linearring')
+                    delete(kmli.outer);
+                else
+                    warning('kml(%d).outer is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.outer),'kml_linearring');
+                end
+                kmli.outer     =kml_linearring.empty();
+
+%  loop over any inner boundaries for each polygon
+
+                if isa(kmli.inner,'kml_linearring')
+                    for j=numel(kmli.inner):-1:1
+                        delete(kmli.inner(j));
+                    end
+                else
+                    warning('kml(%d).inner is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.inner),'kml_linearring');
+                end
+                kmli.inner     =kml_linearring.empty();
+
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_polystyle.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_polystyle.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_polystyle.m	(revision 27955)
@@ -0,0 +1,181 @@
+%
+%  definition for the kml_polystyle sub (derived) class.
+%
+%  [kml]=kml_polystyle(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, polystyle id, '')
+%    color         (char, opacity/color in hex aabbggrr, 'ffffffff')
+%    colormode     (char, color mode , 'normal')
+%    fill          (logical, polygon fill, true)
+%    outline       (logical, polygon outline, true)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_polystyle < kml_colorstyle
+    properties
+        fill      =true;
+        outline   =true;
+    end
+
+    methods
+        function [kml]=kml_polystyle(varargin)
+
+            kml=kml@kml_colorstyle(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_polystyle());
+
+                        for i=length(fieldnames(kml_colorstyle()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_colorstyle(kml(i));
+                disp(sprintf('          fill: %d'      ,kml(i).fill));
+                disp(sprintf('       outline: %d\n'    ,kml(i).outline));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_colorstyle());
+            fnames={fnames{:} ...
+                    'fill' ...
+                    'outline' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the polystyles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<PolyStyle id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<PolyStyle>\n',indent);
+                end
+                kml_write@kml_colorstyle(kmli,fid,indent);
+                fprintf(fid,'%s  <fill>%d</fill>\n',indent,kmli.fill);
+                fprintf(fid,'%s  <outline>%d</outline>\n',indent,kmli.outline);
+                fprintf(fid,'%s</PolyStyle>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the polystyles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<PolyStyle id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<PolyStyle>\n',indent));
+                end
+                sbuf=kml_swrite@kml_colorstyle(kmli,sbuf,indent);
+                sbuf=add(sbuf,sprintf('%s  <fill>%d</fill>\n',indent,kmli.fill));
+                sbuf=add(sbuf,sprintf('%s  <outline>%d</outline>\n',indent,kmli.outline));
+                sbuf=add(sbuf,sprintf('%s</PolyStyle>\n',indent));
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_style.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_style.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_style.m	(revision 27955)
@@ -0,0 +1,327 @@
+%
+%  definition for the kml_style sub (derived) class.
+%
+%  [kml]=kml_style(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, style id, '')
+%    icon          (char, icon style, '')
+%    label         (char, label style, '')
+%    line          (char, line style, '')
+%    poly          (char, poly style, '')
+%    balloon       (char, balloon style, '')
+%    list          (char, list style, '')
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_style < kml_styleselector
+    properties
+%         icon      =kml_iconstyle.empty();
+%         label     =kml_labelstyle.empty();
+        icon      =[];
+        label     =[];
+        line      =kml_linestyle.empty();
+        poly      =kml_polystyle.empty();
+%         balloon   =kml_balloonstyle.empty();
+%         list      =kml_liststyle.empty();
+        balloon   =[];
+        list      =[];
+    end
+
+    methods
+        function [kml]=kml_style(varargin)
+
+            kml=kml@kml_styleselector(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_style());
+
+                        for i=length(fieldnames(kml_styleselector()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(kml),inputname(1),string_dim(kml,i)));
+                disp@kml_styleselector(kml(i));
+                disp(sprintf('          icon: %s %s'   ,string_size(kml(i).icon),...
+                             class(kml(i).icon)));
+                disp(sprintf('         label: %s %s'   ,string_size(kml(i).label),...
+                             class(kml(i).label)));
+                disp(sprintf('          line: %s %s'   ,string_size(kml(i).line),...
+                             class(kml(i).line)));
+                disp(sprintf('          poly: %s %s'   ,string_size(kml(i).poly),...
+                             class(kml(i).poly)));
+                disp(sprintf('       balloon: %s %s'   ,string_size(kml(i).balloon),...
+                             class(kml(i).balloon)));
+                disp(sprintf('          list: %s %s\n' ,string_size(kml(i).list),...
+                             class(kml(i).list)));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_styleselector());
+            fnames={fnames{:} ...
+                    'icon' ...
+                    'label' ...
+                    'line' ...
+                    'poly' ...
+                    'balloon' ...
+                    'list' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the styles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    fprintf(fid,'%s<Style id="%s">\n',indent,kmli.id);
+                else
+                    fprintf(fid,'%s<Style>\n',indent);
+                end
+                kml_write@kml_styleselector(kmli,fid,indent);
+%                 if isa(kmli.icon,'kml_iconstyle')
+%                     kml_write(kmli.icon,fid,[indent '  ']);
+%                 else
+%                     warning('kml(%d).icon is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.icon),'kml_iconstyle');
+%                 end
+%                 if isa(kmli.label,'kml_labelstyle')
+%                     kml_write(kmli.label,fid,[indent '  ']);
+%                 else
+%                     warning('kml(%d).label is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.label),'kml_labelstyle');
+%                 end
+                if isa(kmli.line,'kml_linestyle')
+                    kml_write(kmli.line,fid,[indent '  ']);
+                else
+                    warning('kml(%d).line is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.line),'kml_linestyle');
+                end
+                if isa(kmli.poly,'kml_polystyle')
+                    kml_write(kmli.poly,fid,[indent '  ']);
+                else
+                    warning('kml(%d).poly is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.poly),'kml_polystyle');
+                end
+%                 if isa(kmli.balloon,'kml_balloonstyle')
+%                     kml_write(kmli.balloon,fid,[indent '  ']);
+%                 else
+%                     warning('kml(%d).balloon is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.balloon),'kml_balloonstyle');
+%                 end
+%                 if isa(kmli.list,'kml_liststyle')
+%                     kml_write(kmli.list,fid,[indent '  ']);
+%                 else
+%                     warning('kml(%d).list is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.list),'kml_liststyle');
+%                 end
+                fprintf(fid,'%s</Style>\n',indent);
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the styles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if ~isempty(kmli.id)
+                    sbuf=add(sbuf,sprintf('%s<Style id="%s">\n',indent,kmli.id));
+                else
+                    sbuf=add(sbuf,sprintf('%s<Style>\n',indent));
+                end
+                sbuf=kml_swrite@kml_styleselector(kmli,sbuf,indent);
+%                 if isa(kmli.icon,'kml_iconstyle')
+%                     sbuf=kml_swrite(kmli.icon,sbuf,[indent '  ']);
+%                 else
+%                     warning('kml(%d).icon is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.icon),'kml_iconstyle');
+%                 end
+%                 if isa(kmli.label,'kml_labelstyle')
+%                     sbuf=kml_swrite(kmli.label,sbuf,[indent '  ']);
+%                 else
+%                     warning('kml(%d).label is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.label),'kml_labelstyle');
+%                 end
+                if isa(kmli.line,'kml_linestyle')
+                    sbuf=kml_swrite(kmli.line,sbuf,[indent '  ']);
+                else
+                    warning('kml(%d).line is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.line),'kml_linestyle');
+                end
+                if isa(kmli.poly,'kml_polystyle')
+                    sbuf=kml_swrite(kmli.poly,sbuf,[indent '  ']);
+                else
+                    warning('kml(%d).poly is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.poly),'kml_polystyle');
+                end
+%                 if isa(kmli.balloon,'kml_balloonstyle')
+%                     sbuf=kml_swrite(kmli.balloon,sbuf,[indent '  ']);
+%                 else
+%                     warning('kml(%d).balloon is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.balloon),'kml_balloonstyle');
+%                 end
+%                 if isa(kmli.list,'kml_liststyle')
+%                     sbuf=kml_swrite(kmli.list,sbuf,[indent '  ']);
+%                 else
+%                     warning('kml(%d).list is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.list),'kml_liststyle');
+%                 end
+                sbuf=add(sbuf,sprintf('%s</Style>\n',indent));
+            end
+
+        end
+
+%  delete the object
+
+        function []=delete(kml)
+
+%  loop over the styles
+
+            for i=numel(kml):-1:1
+                kmli=kml(i);
+%                 if isa(kmli.icon,'kml_iconstyle')
+%                     delete(kmli.icon);
+%                 else
+%                     warning('kml(%d).icon is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.icon),'kml_iconstyle');
+%                 end
+%                 kmli.icon      =kml_iconstyle.empty();
+%                 if isa(kmli.label,'kml_labelstyle')
+%                     delete(kmli.label);
+%                 else
+%                     warning('kml(%d).label is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.label),'kml_labelstyle');
+%                 end
+%                 kmli.label     =kml_labelstyle.empty();
+                if isa(kmli.line,'kml_linestyle')
+                    delete(kmli.line);
+                else
+                    warning('kml(%d).line is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.line),'kml_linestyle');
+                end
+                kmli.line      =kml_linestyle.empty();
+                if isa(kmli.poly,'kml_polystyle')
+                    delete(kmli.poly);
+                else
+                    warning('kml(%d).poly is a ''%s'' class object, not ''%s''.',...
+                        i,class(kmli.poly),'kml_polystyle');
+                end
+                kmli.poly      =kml_polystyle.empty();
+%                 if isa(kmli.balloon,'kml_balloonstyle')
+%                     delete(kmli.balloon);
+%                 else
+%                     warning('kml(%d).balloon is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.balloon),'kml_balloonstyle');
+%                 end
+%                 kmli.balloon   =kml_balloonstyle.empty();
+%                 if isa(kmli.list,'kml_liststyle')
+%                     delete(kmli.list);
+%                 else
+%                     warning('kml(%d).list is a ''%s'' class object, not ''%s''.',...
+%                         i,class(kmli.list),'kml_liststyle');
+%                 end
+%                 kmli.list      =kml_liststyle.empty();
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_styleselector.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_styleselector.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_styleselector.m	(revision 27955)
@@ -0,0 +1,178 @@
+%
+%  definition for the kml_styleselector super (base) and sub (derived) abstract class.
+%
+%  [kml]=kml_styleselector(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, styleselector id, '')
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_styleselector < kml_object
+    properties
+    end
+
+    methods
+        function [kml]=kml_styleselector(varargin)
+
+            kml=kml@kml_object(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_styleselector());
+
+                        for i=length(fieldnames(kml_object()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                if strcmp(class(kml),'kml_styleselector')
+                    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                        class(kml),inputname(1),string_dim(kml,i)));
+                end
+                disp@kml_object(kml(i));
+                if strcmp(class(kml),'kml_styleselector')
+                    disp(sprintf('\n'));
+                end
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_object());
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the styleselectors
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_styleselector')
+                    if ~isempty(kmli.id)
+                        fprintf(fid,'%s<!StyleSelector id="%s">\n',indent,kmli.id);
+                    else
+                        fprintf(fid,'%s<!StyleSelector>\n',indent);
+                    end
+                end
+                kml_write@kml_object(kmli,fid,indent);
+                if strcmp(class(kml),'kml_styleselector')
+                    fprintf(fid,'%s</!StyleSelector>\n',indent);
+                end
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the styleselectors
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_styleselector')
+                    if ~isempty(kmli.id)
+                        sbuf=add(sbuf,sprintf('%s<!StyleSelector id="%s">\n',indent,kmli.id));
+                    else
+                        sbuf=add(sbuf,sprintf('%s<!StyleSelector>\n',indent));
+                    end
+                end
+                sbuf=kml_swrite@kml_object(kmli,sbuf,indent);
+                if strcmp(class(kml),'kml_styleselector')
+                    sbuf=add(sbuf,sprintf('%s</!StyleSelector>\n',indent));
+                end
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_substyle.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_substyle.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_substyle.m	(revision 27955)
@@ -0,0 +1,178 @@
+%
+%  definition for the kml_substyle super (base) and sub (derived) abstract class.
+%
+%  [kml]=kml_substyle(varargin)
+%
+%  where the optional varargin and defaults are:
+%    id            (char, substyle id, '')
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef kml_substyle < kml_object
+    properties
+    end
+
+    methods
+        function [kml]=kml_substyle(varargin)
+
+            kml=kml@kml_object(varargin{:});
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(kml))
+                        kml=varargin{1};
+
+                    else
+                        fnames=fieldnames(kml_substyle());
+
+                        for i=length(fieldnames(kml_object()))+1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(kml.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    kml.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(kml.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+        end
+
+%  display the object
+
+        function []=disp(kml)
+
+            for i=1:numel(kml)
+                if strcmp(class(kml),'kml_substyle')
+                    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                        class(kml),inputname(1),string_dim(kml,i)));
+                end
+                disp@kml_object(kml(i));
+                if strcmp(class(kml),'kml_substyle')
+                    disp(sprintf('\n'));
+                end
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(kml)
+
+%  fieldnames for a sub (derived) class list those before super (base)
+
+            fnames=fieldnames(kml_object());
+
+        end
+
+%  set the properties of the object
+
+        function [kml]=setprops(kml,varargin)
+
+            kmlref=feval(class(kml));
+            fnames=fieldnames(kmlref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(kmlref.(varargin{i})))
+                        kml.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(kmlref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(kmlref));
+                end
+            end
+
+        end
+
+%  write the object
+
+        function []=kml_write(kml,fid,indent)
+
+           if ~exist('fid','var') || isempty(fid)
+               fid=1;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the substyles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_substyle')
+                    if ~isempty(kmli.id)
+                        fprintf(fid,'%s<!SubStyle id="%s">\n',indent,kmli.id);
+                    else
+                        fprintf(fid,'%s<!SubStyle>\n',indent);
+                    end
+                end
+                kml_write@kml_object(kmli,fid,indent);
+                if strcmp(class(kml),'kml_substyle')
+                    fprintf(fid,'%s<!/SubStyle>\n',indent);
+                end
+            end
+
+        end
+
+%  string write the object
+
+        function [sbuf]=kml_swrite(kml,sbuf,indent)
+
+           if ~exist('sbuf','var') || isempty(sbuf)
+               sbuf=string_buf;
+           end
+           if ~exist('indent','var') || isempty(indent)
+               indent='';
+           end
+
+%  loop over the substyles
+
+            for i=1:numel(kml)
+                kmli=kml(i);
+                if strcmp(class(kml),'kml_substyle')
+                    if ~isempty(kmli.id)
+                        sbuf=add(sbuf,sprintf('%s<!SubStyle id="%s">\n',indent,kmli.id));
+                    else
+                        sbuf=add(sbuf,sprintf('%s<!SubStyle>\n',indent));
+                    end
+                end
+                sbuf=kml_swrite@kml_object(kmli,sbuf,indent);
+                if strcmp(class(kml),'kml_substyle')
+                    sbuf=add(sbuf,sprintf('%s<!/SubStyle>\n',indent));
+                end
+            end
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_unsh_edges.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_unsh_edges.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kml_unsh_edges.m	(revision 27955)
@@ -0,0 +1,115 @@
+%%
+%  create kml linestrings for the unshared element edges.
+%
+%  [kfold]=kml_unsh_edges(md,params)
+%
+%  where the required input is:
+%    md            (model, model class object)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  and the optional input is:
+%    latsgn        (numeric, +1/-1 for north/south latitude)
+%    alt           (numeric, altitude for polygons, default 10000)
+%    prtplt        (char, 'off'/'no' for partition edge plot)
+%
+%  and the required output is:
+%    kfold         (kml_folder, folder of linestring placemarks)
+%
+function [kfold]=kml_unsh_edges(varargin)
+
+if ~nargin
+    help kml_unsh_edges
+    return
+end
+
+%%  process input data
+
+iarg=1;
+if (nargin >= 1)
+    md=varargin{1};
+end
+if ~exist('md','var') || isempty(md) || ~isa(md,'model')
+    error(['Model ''' inputname(iarg) ''' is unrecognized class ''' class(md) '''.']);
+end
+
+%  parameters
+
+iarg=iarg+1;
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'latsgn','alt','prtplt'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1},20) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1},20) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+if isempty(md.mesh.lat)  || ((numel(md.mesh.lat) == 1)  && isnan(md.mesh.lat)) || ...
+   isempty(md.mesh.long) || ((numel(md.mesh.long) == 1) && isnan(md.mesh.long))
+    if     ~exist('latsgn','var')
+        error(['Missing ''latsgn'' parameter to calculate missing lat/long data.']);
+    elseif (abs(latsgn) ~= 1)
+        error(['Incorrect latsgn=' num2str(latsgn) ' parameter to calculate missing lat/long data.']);
+    else
+        display('Converting x/y data to lat/long data.');
+        [md.mesh.lat,md.mesh.long]=xy2ll(md.x,md.y,latsgn);
+    end
+end
+
+if ~exist('alt','var')
+    alt=10000;
+end
+
+%%  write folder for unshared edges
+
+if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
+    md.qmu.numberofpartitions
+    [edgeadj]=edgeadjacency(md.mesh.elements,md.kmlnodeconnectivity);
+    [icol,irow]=find(edgeadj'==0);
+    edgeuns=zeros(length(irow),2);
+    for i=1:length(irow)
+        edgeuns(i,1)=md.mesh.elements(irow(i),icol(i));
+        edgeuns(i,2)=md.mesh.elements(irow(i),mod(icol(i),size(md.mesh.elements,2))+1);
+    end
+    kfold=kml_folder();
+    kfold.name      ='Unshared Edges';
+    kfold.visibility=1;
+    kfold.descript  =sprintf('Partitions=%d, Edges=%d',...
+        md.qmu.numberofpartitions,size(edgeuns,1));
+    kfold.feature   ={repmat(kml_placemark(),1,size(edgeuns,1))};
+
+%  write each edge as a linestring placemark
+
+    disp(['Writing ' num2str(size(edgeuns,1)) ' unshared edges as KML linestrings.']);
+    for i=1:size(edgeuns,1)
+        kplace=kml_placemark();
+        kplace.name      =sprintf('Edge %d',i);
+        kplace.visibility=1;
+        kplace.styleurl  ='#RedLineRedPoly';
+
+        kline=kml_linestring();
+        kline.extrude   =1;
+        kline.tessellate=1;
+        kline.altmode   ='relativeToGround';
+        kline.coords    =zeros(2,3);
+
+        for j=1:2
+            kline.coords(j,:)=[md.mesh.long(edgeuns(i,j)) md.mesh.lat(edgeuns(i,j)) alt];
+        end
+
+        kplace.geometry=kline;
+        kfold.feature{1}(i)=kplace;
+        clear kline kplace
+    end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kmlimagesc.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kmlimagesc.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kmlimagesc.m	(revision 27955)
@@ -0,0 +1,67 @@
+function kmlimagesc(md,fieldname,varargin)
+%KMLIMAGESC - create lat,long kml image
+%
+%   Usage:
+%      kmlimagesc(md,field,options);
+%
+%   Options: 
+%      'hemisphere': default +1;
+%      'central_meridian: 45 for Greenland and 0 for Antarctica
+%      'standard_parallel: 70 for Greenland and 71 for Antarctica
+%      'posting': default .1 degree
+%
+
+%process varargin for options: 
+options=pairoptions(varargin{:});
+
+%recover field: 
+field=md.(fieldname);
+
+%recover some options, and set defaults
+fontsize=getfieldvalue(options,'fontsize',12);
+posting=getfieldvalue(options,'posting',.1);
+minlong=getfieldvalue(options,'minlong',min(md.mesh.long));
+maxlong=getfieldvalue(options,'maxlong',max(md.mesh.long));
+minlat=getfieldvalue(options,'minlat',min(md.mesh.lat));
+maxlat=getfieldvalue(options,'maxlat',max(md.mesh.lat));
+minfield=getfieldvalue(options,'minfield',min(field));
+maxfield=getfieldvalue(options,'maxfield',max(field));
+
+%do we have hemisphere setup?:
+if ~isstr(md.mesh.hemisphere),
+	error('md.mesh.hemisphere should be ''s'' or ''n''');
+end
+
+if strcmpi(md.mesh.hemisphere,'s'),
+	hemisphere=1;
+	central_meridian=getfieldvalue(options,'central_meridian',45);
+	standard_parallel=getfieldvalue(options,'standard_parallel',70);
+elseif strcmpi(md.mesh.hemisphere,'n'),
+	hemisphere=-1;
+	central_meridian=getfieldvalue(options,'central_meridian',0);
+	standard_parallel=getfieldvalue(options,'standard_parallel',71);
+else
+	error('md.mesh.hemisphere should be ''s'' or ''n''');
+end
+
+%figure out nlines and ncols in our image
+x_m = minlong:posting:maxlong;
+y_m = minlat:posting:maxlat;
+
+%regrid to lat,long grid
+field=InterpFromMeshToGrid(md.mesh.elements,md.mesh.long,md.mesh.lat,field,x_m,y_m,NaN);
+field=flipud(field);
+
+%massage  and log:
+pos=find(field<minfield); field(pos)=minfield;
+pos=find(field>maxfield);field(pos)=maxfield;
+
+%create google earth kml file out of this regridded dataset:
+imagestr=ge_imagesc(x_m,y_m,field,'imgURL',[fieldname '.png'],'name',fieldname);
+imagestr=ge_folder(fieldname,imagestr);
+colorbarstr=ge_colorbar((min(x_m)+max(x_m))/2,(min(y_m)+max(y_m))/2,field,'name',fieldname);
+colorbarstr=ge_folder('Colorbar',colorbarstr);
+ge_output([fieldname '.kml'],[imagestr colorbarstr]);
+
+%now, create kmz file:
+system(['mv ' [fieldname '.kml'] ' doc.kml && zip ' [fieldname '.kmz'] ' doc.kml ' fieldname '.png && rm -rf doc.kml ' [fieldname '.png'] ]);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/kmlnodeconnectivity.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/kmlnodeconnectivity.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/kmlnodeconnectivity.m	(revision 27955)
@@ -0,0 +1,58 @@
+%
+%  create a node connectivity table for the elements in the model.
+%
+%  [nodecon]=edgeadjacency(elem,nnodes,mxepg)
+%
+%  where the required input is:
+%    elem          (numeric, element connectivity array (elems x nodes))
+%
+%  and the required output is:
+%    nodecon       (numeric, node connectivity array (nnodes x mxepg+1))
+%
+%  the optional input is:
+%    nnodes        (numeric, number of nodes)
+%    mxepg         (numeric, max elements per node)
+%
+function [nodecon]=kmlnodeconnectivity(elem,nnodes,mxepg)
+
+if ~nargin
+    help kmlnodeconnectivity
+    return
+end
+
+if ~exist('nnodes','var') || isempty(nnodes)
+    nnodes=max(max(elem));
+end
+if ~exist('mxepg','var') || isempty(mxepg)
+    mxepg=25;
+end
+
+%%  create the node connectivity array
+
+nodecon=zeros(nnodes,mxepg+1);
+
+%  loop over the elements
+
+for i=1:size(elem,1)
+
+%  loop over the nodes for each element
+
+    for j=1:size(elem,2)
+        if elem(i,j)
+            nodecon(elem(i,j),nodecon(elem(i,j),end)+1)=i;
+            nodecon(elem(i,j),end)=nodecon(elem(i,j),end)+1;
+        end
+    end
+end
+
+%%  sort the node connectivity array
+
+%  loop over the nodes
+
+for i=1:size(nodecon,1)
+    if (nodecon(i,end) > 1)
+        nodecon(i,1:nodecon(i,end))=sort(nodecon(i,1:nodecon(i,end)));
+    end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/kml/string_buf.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/kml/string_buf.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/kml/string_buf.m	(revision 27955)
@@ -0,0 +1,188 @@
+%
+%  definition for the string_buf class.
+%
+%  [sbuf]=string_buf(varargin)
+%
+%  where the optional varargin and defaults are:
+%    init          (numeric, initial size)
+%    inc           (numeric, incremental size)
+%    max           (numeric, maximum size)
+%
+%  and the protected properties are:
+%    string        (char, string buffer)
+%    size          (numeric, current size of buffer)
+%    len           (numeric, current length of string in buffer)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and two or more
+%  arguments constructs a new instance from the arguments.
+%
+classdef string_buf < handle
+    properties
+        init      =10000000;
+        inc       =1000000;
+        max       =100000000;
+    end
+%     properties (SetAccess = private, GetAccess = private)
+    properties (SetAccess = private)
+        string    ='';
+        size      =0;
+        len       =0;
+    end
+
+    methods
+        function [sbuf]=string_buf(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object or create the object from the input
+
+                otherwise
+                    if (nargin == 1) && isa(varargin{1},class(string_buf))
+                        sbuf=varargin{1};
+
+                    else
+                        fnames=fieldnames(string_buf());
+
+                        for i=1:min(nargin,length(fnames))
+                            if isa(varargin{i},class(sbuf.(fnames{i})))
+                                if ~isempty(varargin{i})
+                                    sbuf.(fnames{i})=varargin{i};
+                                end
+                            else
+                                if ~isempty(inputname(i))
+                                    warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        inputname(i),fnames{i},class(varargin{i}),class(sbuf.(fnames{i})));
+                                else
+                                    warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                        i           ,fnames{i},class(varargin{i}),class(sbuf.(fnames{i})));
+                                end
+                            end
+                        end
+                    end
+
+            end
+
+            sbuf.string=blanks(sbuf.init);
+            sbuf.size  =sbuf.init;
+
+        end
+
+%  display the object
+
+        function []=disp(sbuf)
+
+            for i=1:numel(sbuf)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(sbuf),inputname(1),string_dim(sbuf,i)));
+                disp(sprintf('          init: %d'      ,sbuf(i).init));
+                disp(sprintf('           inc: %d'      ,sbuf(i).inc));
+                disp(sprintf('           max: %d'      ,sbuf(i).max));
+                disp(sprintf('        string: %s'      ,any2str(sbuf(i).string,40)));
+                disp(sprintf('          size: %d'      ,sbuf(i).size));
+                disp(sprintf('           len: %d\n'    ,sbuf(i).len));
+            end
+
+        end
+
+%  return the fieldnames of the object
+
+        function [fnames]=fieldnames(sbuf)
+
+            fnames={'init' ...
+                    'inc' ...
+                    'max' ...
+                   }';
+
+        end
+
+%  set the properties of the object
+
+        function [sbuf]=set(sbuf,varargin)
+
+            sbufref=feval(class(sbuf));
+            fnames=fieldnames(sbufref);
+
+%  loop through each parameter in the input list (comparing to the reference
+%  object in case property types have been changed)
+
+            for i=1:2:length(varargin)
+                if ismember(varargin{i},fnames) && (i+1 <= length(varargin))
+                    if isa(varargin{i+1},class(sbufref.(varargin{i})))
+                        sbuf.(varargin{i})=varargin{i+1};
+                    else
+                        if ~isempty(inputname(i+1))
+                            warning('Argument ''%s'' for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                inputname(i+2),varargin{i},class(varargin{i+1}),class(sbufref.(varargin{i})));
+                        else
+                            warning('Argument %d for property ''%s'' is a ''%s'' class object, not ''%s''.',...
+                                i+2           ,varargin{i},class(varargin{i+1}),class(sbufref.(varargin{i})));
+                        end
+                    end
+                else
+                    warning('Property ''%s'' for class ''%s'' does not exist.',...
+                        varargin{i},class(sbufref));
+                end
+            end
+
+        end
+
+%  add a string to the object
+
+        function [sbuf]=add(sbuf,str)
+
+            if ~ischar(str)
+                if ~isempty(inputname(2))
+                    warning('Argument ''%s'' for string is a ''%s'' class object, not ''%s''.',...
+                        inputname(2),class(str),'char');
+                else
+                    warning('Argument %d for string is a ''%s'' class object, not ''%s''.',...
+                        2           ,class(str),'char');
+                end
+            end
+
+%  check the buffer size and increase as necessary
+
+            slen=length(str);
+            while (sbuf.len+slen > sbuf.size)
+                if (sbuf.size+sbuf.inc <= sbuf.max)
+                    sbuf.string=[sbuf.string blanks(sbuf.inc)];
+                    sbuf.size  =sbuf.size+sbuf.inc;
+                else
+                    error('String buffer length of %d would exceed maximum of %d.',...
+                        sbuf.size+sbuf.inc,sbuf.max);
+                end
+            end
+
+%  copy the string into the buffer
+
+            sbuf.string(sbuf.len+1:sbuf.len+slen)=str;
+            sbuf.len=sbuf.len+slen;
+
+        end
+
+%  return the string from the object
+
+        function [str]=str(sbuf)
+
+           str=sbuf.string(1:sbuf.len);
+
+        end
+
+%  reset the object
+
+        function [sbuf]=reset(sbuf)
+
+            string    ='';
+            size      =0;
+            len       =0;
+
+        end
+
+    end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/materials/TMeltingPoint.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/materials/TMeltingPoint.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/materials/TMeltingPoint.m	(revision 27955)
@@ -0,0 +1,15 @@
+function Tm=TMeltingPoint(reftemp, pressure)
+%TMELTINGPOINT- calculate pressure melting point of ice
+%
+%   reftemp is the melting temperature at atmospheric pressure (initialized in md.materials.meltingpoint)   
+%
+%   pressure is in Pa   
+%
+%   Usage:
+%   Tm=TMeltingPoint(md.materials.meltingpoint,pressure)
+
+%variables
+beta=7.9e-8; % K Pa^-1
+
+Tm=reftemp-beta*pressure;
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/materials/TMeltingPoint.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/materials/TMeltingPoint.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/materials/TMeltingPoint.py	(revision 27955)
@@ -0,0 +1,20 @@
+
+def TMeltingPoint(reftemp, pressure):
+    '''
+    Calculate the pressure melting point of ice at a given pressure
+
+    reftemp is the melting temperature in K at atmospheric pressure (initialized in md.materials.meltingpoint)
+
+    pressure is in Pa
+
+    Usage:
+        Tm = TMeltingPoint(md.materials.meltingpoint, pressure)
+    '''
+
+    #variables
+    beta = 7.9e-8
+
+    #ensure ref is same dimension as pressure
+    ref = reftemp - beta * pressure
+
+    return ref
Index: /issm/branches/trunk-dlcheng-ASE/src/m/materials/arrhenius.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/materials/arrhenius.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/materials/arrhenius.m	(revision 27955)
@@ -0,0 +1,82 @@
+function rigidity=arrhenius(temperature, waterfraction, pressure)
+%ARRHENIUS - figure out the rigidity of ice for a given temperature and waterfraction
+%
+%   rigidity (in s^(1/3)Pa) is the flow law parameter in the flow law sigma=B*e(1/3) (Paterson, p97). 
+%   temperature is in Kelvin degrees
+%   
+%   Usage:
+%   rigidity=arrhenius(temperature, waterfraction, pressure)
+
+%variables
+T0=273.15;
+n=3.;
+beta=7.9e-8; % K Pa^-1
+R=8.314; % J mol^-1 K^-1  
+T_switch=T0-10.;
+
+if(temperature<0)
+    error('input temperature should be in Kelvin (positive)');
+end
+
+if(temperature>TMeltingPoint(T0,pressure))
+    error('input temperature is above pressure melting point.');
+end
+
+if(isnan(waterfraction))
+    waterfraction=zeros(size(temperature));
+end
+
+if(waterfraction<0)
+    error('waterfraction is negative');
+end
+
+wf_max=1.;
+if(any(waterfraction>wf_max))
+    error(['waterfraction exceeds permitted maximum of ' num2str(wf_max) '.']);
+end
+
+%limit waterfraction to 1%
+pos1p=find(waterfraction>0.01);
+waterfraction(pos1p)=0.01;
+
+pos=find((temperature<TMeltingPoint(T0,pressure)) & (waterfraction>0)); % cold, wet ice
+if (length(pos)>0)
+    error('cold ice with positive waterfraction detected.');
+end
+
+%   values for Activation energy Q and pre-exponential constants from
+%   Grewe/Blatter 2009, p54
+
+    function A0=GetA0(T)
+        A0=zeros(size(T));
+        pos0=find(T<T_switch);
+        pos1=find(T>=T_switch);
+        A0(pos0)=3.985e-13; %Grewe Blatter 2009
+        A0(pos1)=1.916e3;
+    end
+
+    function Q=GetQa(T)
+        Q=zeros(size(T));
+        pos0=find(T<T_switch);
+        pos1=find(T>=T_switch);
+        Q(pos0)=6.e4; % J mol^-1 % Paterson 2010
+        Q(pos1)=1.39e5;
+    end
+
+    function A=GetA(T, w)
+        Qa=GetQa(T); 
+        A0=GetA0(T);
+        if(w>0.01)
+           w=0.01;
+        end
+        A=A0.*exp(-Qa./(R*T)).*(1+181.25*w);        
+    end
+    
+    function B=GetRigidity(T,w,pressure)
+        Thom=TMeltingPoint(T, pressure);
+        A=GetA(Thom, w);
+        B=1./(A.^(1/n));
+    end
+
+rigidity=GetRigidity(temperature, waterfraction, pressure);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/materials/buddjacka.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/materials/buddjacka.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/materials/buddjacka.m	(revision 27955)
@@ -0,0 +1,71 @@
+function rigidity=buddjacka(temperature)
+% BUDDJACKA - calculates ice rigidity as a function of temperature
+%
+%   rigidity (in s^(1/3)Pa) is the flow law parameter in the flow law sigma=B*e(1/3)
+%   Budd and Jacka (1989)
+%   temperature is in Kelvin degrees
+%
+%   Usage:
+%      rigidity=buddjacka(temperature)
+
+if any(temperature<0)
+	error('input temperature should be in Kelvin (positive)');
+end
+T=temperature-273.15;
+
+%BJtable=[-5.0000000e-02   1.1690833e-05
+%-1.0000000e+00   6.6642879e-06
+%-2.0000000e+00   4.0324422e-06
+%-5.0000000e+00   1.3461342e-06
+%-1.0000000e+01   4.6586675e-07
+%-1.5000000e+01   2.2686290e-07
+%-2.0000000e+01   1.1855922e-07
+%-2.5000000e+01   6.3886499e-08
+%-3.0000000e+01   3.5479579e-08
+%-3.5000000e+01   1.9228991e-08
+%-4.0000000e+01   9.1625910e-09
+%-5.0000000e+01   1.4769247e-09];
+%
+%Temp=BJtable(:,1);
+%Ao=BJtable(:,2)*1e-18; %conversion from MPa^-3 to Pa^-3
+%Ae=Ao*(2/3)^((3-1)/2);
+%B=Ae.^(-1/3);
+%fittedmodel=fit(Temp,B,'cubicspline');
+%rigidity=fittedmodel(T);
+%return
+
+%Temp=[-50:1:0];                                    
+%Bcall=buddjacka(Temp+273.15);
+%Bbjall=buddjacka(Temp+273.15);
+%Acall=(Bcall.^-3)*(2/3)*1e18;
+%Abjall=(Bbjall.^-3)*(2/3)*1e18
+%semilogy(Temp,Acall,'--k',Temp,Abjall,'k')
+%semilogy(Temp,Bcall,'--k',Temp,Bbjall,'k')
+
+
+rigidity=zeros(size(T));
+pos=find(T<=-40);
+rigidity(pos)=1e9*(-0.000031098521204*(T(pos)+50).^3+ 0.002234792114381*(T(pos)+50).^2-0.065051516643164*(T(pos)+50)+1.005181071430026);
+pos=find(-40<T & T<=-35);
+rigidity(pos)=1e9*(-0.000031098521204*(T(pos)+40).^3+ 0.001301836478264*(T(pos)+40).^2-0.029685230716715*(T(pos)+40)+0.547046595232583);
+pos=find(-35<T & T<=-30);
+rigidity(pos)=1e9*(-0.000038394040864*(T(pos)+35).^3+ 0.000835358660205*(T(pos)+35).^2-0.018999255024368*(T(pos)+35)+0.427279038455119);
+pos=find(-30<T & T<=-25);
+rigidity(pos)=1e9*(-0.000007037062330*(T(pos)+30).^3+ 0.000259448047242*(T(pos)+30).^2-0.013525221487131*(T(pos)+30)+0.348367474730384);
+pos=find(-25<T & T<=-20);
+rigidity(pos)=1e9*( 0.000000905055684*(T(pos)+25).^3+ 0.000153892112291*(T(pos)+25).^2-0.011458520689465*(T(pos)+25)+0.286347935684521);
+pos=find(-20<T & T<=-15);
+rigidity(pos)=1e9*(-0.000002025865930*(T(pos)+20).^3+ 0.000167467947546*(T(pos)+20).^2-0.009851720390281*(T(pos)+20)+0.233015767004928);
+pos=find(-15<T & T<=-10);
+rigidity(pos)=1e9*(-0.000014464671112*(T(pos)+15).^3+ 0.000137079958603*(T(pos)+15).^2-0.008328980859537*(T(pos)+15)+0.187690630500981);
+pos=find(-10<T & T<=-5);
+rigidity(pos)=1e9*(-0.000014230086582*(T(pos)+10).^3+-0.000079890108083*(T(pos)+10).^2-0.008043031606935*(T(pos)+10)+0.147664641279324);
+pos=find(-5<T & T<=-2);
+rigidity(pos)=1e9*( 0.000022694046251*(T(pos)+5).^3+-0.000293341406806*(T(pos)+5).^2-0.009909189181377*(T(pos)+5)+0.103673469719891);
+pos=find(-2<T & T<=-1);
+rigidity(pos)=1e9*( 0.000056280347425*(T(pos)+2).^3+-0.000089094990549*(T(pos)+2).^2-0.011056498373441*(T(pos)+2)+0.071918568763277);
+pos=find(-1<T);
+rigidity(pos)=1e9*( 0.000056280347425*(T(pos)+1).^3+ 0.000079746051725*(T(pos)+1).^2-0.011065847312265*(T(pos)+1)+0.060829255746712);
+
+%Now make sure that rigidity is positive
+pos=find(rigidity<0);        rigidity(pos)=10^6;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/materials/cuffey.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/materials/cuffey.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/materials/cuffey.m	(revision 27955)
@@ -0,0 +1,41 @@
+function rigidity=cuffey(temperature)
+%CUFFEY - calculates ice rigidity as a function of temperature
+%
+%   rigidity (in s^(1/3)Pa) is the flow law parameter in the flow law sigma=B*e(1/3)
+%   (Cuffey and Paterson, p75). 
+%   temperature is in Kelvin degrees
+%
+%   Usage:
+%      rigidity=cuffey(temperature)
+
+if any(temperature<0)
+	error('input temperature should be in Kelvin (positive)');
+end
+T=temperature-273.15;
+
+%The routine below is equivalent to:
+% n=3; T=temperature-273;
+% %From cuffey
+% Temp=[0;-2;-5;-10;-15;-20;-25;-30;-35;-40;-45;-50];
+% A=[2.4*10^-24;1.7*10^-24;9.3*10^-25;3.5*10^-25;2.1*10^-25;1.2*10^-25;6.8*10^-26;3.7*10^-26;2.0*10^-26;1.0*10^-26;5.2*10^-27;2.6*10^-27];%s-1(Pa-3)
+% %Convert into rigidity B
+% B=A.^(-1/n); %s^(1/3)Pa
+% %Now, do a cubic fit between Temp and B: 
+% fittedmodel=fit(Temp,B,'cubicspline');
+% rigidity=fittedmodel(temperature);
+
+rigidity=zeros(size(T));
+pos=find(T<=-45);         rigidity(pos)=10^8*(-0.000396645116301*(T(pos)+50).^3+ 0.013345579471334*(T(pos)+50).^2  -0.356868703259105*(T(pos)+50)+7.272363035371383);
+pos=find(-45<=T & T<-40); rigidity(pos)=10^8*(-0.000396645116301*(T(pos)+45).^3+ 0.007395902726819*(T(pos)+45).^2  -0.253161292268336*(T(pos)+45)+5.772078366321591);
+pos=find(-40<=T & T<-35); rigidity(pos)=10^8*(0.000408322072669*(T(pos)+40).^3+  0.001446225982305*(T(pos)+40).^2  -0.208950648722716*(T(pos)+40)+4.641588833612773);
+pos=find(-35<=T & T<-30); rigidity(pos)=10^8*(-0.000423888728124*(T(pos)+35).^3+ 0.007571057072334*(T(pos)+35).^2  -0.163864233449525*(T(pos)+35)+3.684031498640382);
+pos=find(-30<=T & T<-25); rigidity(pos)=10^8*(0.000147154327025*(T(pos)+30).^3+ 0.001212726150476*(T(pos)+30).^2  -0.119945317335478*(T(pos)+30)+3.001000667185614);
+pos=find(-25<=T & T<-20); rigidity(pos)=10^8*(-0.000193435838672*(T(pos)+25).^3+ 0.003420041055847*(T(pos)+25).^2  -0.096781481303861*(T(pos)+25)+2.449986525148220);
+pos=find(-20<=T & T<-15); rigidity(pos)=10^8*(0.000219771255067*(T(pos)+20).^3+  0.000518503475772*(T(pos)+20).^2  -0.077088758645767*(T(pos)+20)+2.027400665191131);
+pos=find(-15<=T & T<-10); rigidity(pos)=10^8*(-0.000653438900191*(T(pos)+15).^3+ 0.003815072301777*(T(pos)+15).^2  -0.055420879758021*(T(pos)+15)+1.682390865739973);
+pos=find(-10<=T & T<-5);  rigidity(pos)=10^8*(0.000692439419762*(T(pos)+10).^3 -0.005986511201093 *(T(pos)+10).^2 -0.066278074254598*(T(pos)+10)+1.418983411970382);
+pos=find(-5<=T & T<-2);   rigidity(pos)=10^8*(-0.000132282004110*(T(pos)+5).^3 +0.004400080095332*(T(pos)+5).^2    -0.074210229783403*(T(pos)+5)+ 1.024485188140279);
+pos=find(-2<=T);          rigidity(pos)=10^8*(-0.000132282004110*(T(pos)+2).^3 +0.003209542058346*(T(pos)+2).^2    -0.051381363322371*(T(pos)+2)+ 0.837883605537096);
+
+%Now make sure that rigidity is positive
+pos=find(rigidity<0);        rigidity(pos)=10^6;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/materials/cuffey.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/materials/cuffey.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/materials/cuffey.py	(revision 27955)
@@ -0,0 +1,66 @@
+import numpy as np
+
+
+def cuffey(temperature):
+    """CUFFEY - calculates ice rigidity as a function of temperature
+
+    rigidity (in s^(1/3)Pa) is the flow law parameter in the flow law 
+    sigma = B * e(1/3) (Cuffey and Paterson, p75).
+
+    temperature is in Kelvin degrees
+
+    Usage:
+        rigidity = cuffey(temperature)
+    """
+
+    if np.any(temperature < 0.0):
+        raise RuntimeError('input temperature should be in Kelvin (positive)')
+
+    if np.ndim(temperature) == 2:
+        #T = temperature.reshape(-1, ) - 273.15
+        T = temperature.flatten() - 273.15
+    elif isinstance(temperature, float) or isinstance(temperature, int):
+        T = np.array([temperature]) - 273.15
+    else:
+        T = temperature - 273.15
+
+    rigidity = np.zeros_like(T)
+    pos = np.nonzero(T <= -45)
+    if len(pos):
+        rigidity[pos] = pow(10, 8) * (-0.000396645116301 * (T[pos] + 50)**3 + 0.013345579471334 * (T[pos] + 50)**2 - 0.356868703259105 * (T[pos] + 50) + 7.272363035371383)
+    pos = np.nonzero(np.logical_and(-45 <= T, T < -40))
+    if len(pos):
+        rigidity[pos] = pow(10, 8) * (-0.000396645116301 * (T[pos] + 45)**3 + 0.007395902726819 * (T[pos] + 45)**2 - 0.253161292268336 * (T[pos] + 45) + 5.772078366321591)
+    pos = np.nonzero(np.logical_and(-40 <= T, T < -35))
+    if len(pos):
+        rigidity[pos] = pow(10, 8) * (0.000408322072669 * (T[pos] + 40)**3 + 0.001446225982305 * (T[pos] + 40)**2 - 0.208950648722716 * (T[pos] + 40) + 4.641588833612773)
+    pos = np.nonzero(np.logical_and(-35 <= T, T < -30))
+    if len(pos):
+        rigidity[pos] = pow(10, 8) * (-0.000423888728124 * (T[pos] + 35)**3 + 0.007571057072334 * (T[pos] + 35)**2 - 0.163864233449525 * (T[pos] + 35) + 3.684031498640382)
+    pos = np.nonzero(np.logical_and(-30 <= T, T < -25))
+    if len(pos):
+        rigidity[pos] = pow(10, 8) * (0.000147154327025 * (T[pos] + 30)**3 + 0.001212726150476 * (T[pos] + 30)**2 - 0.119945317335478 * (T[pos] + 30) + 3.001000667185614)
+    pos = np.nonzero(np.logical_and(-25 <= T, T < -20))
+    if len(pos):
+        rigidity[pos] = pow(10, 8) * (-0.000193435838672 * (T[pos] + 25)**3 + 0.003420041055847 * (T[pos] + 25)**2 - 0.096781481303861 * (T[pos] + 25) + 2.449986525148220)
+    pos = np.nonzero(np.logical_and(-20 <= T, T < -15))
+    if len(pos):
+        rigidity[pos] = pow(10, 8) * (0.000219771255067 * (T[pos] + 20)**3 + 0.000518503475772 * (T[pos] + 20)**2 - 0.077088758645767 * (T[pos] + 20) + 2.027400665191131)
+    pos = np.nonzero(np.logical_and(-15 <= T, T < -10))
+    if len(pos):
+        rigidity[pos] = pow(10, 8) * (-0.000653438900191 * (T[pos] + 15)**3 + 0.003815072301777 * (T[pos] + 15)**2 - 0.055420879758021 * (T[pos] + 15) + 1.682390865739973)
+    pos = np.nonzero(np.logical_and(-10 <= T, T < -5))
+    if len(pos):
+        rigidity[pos] = pow(10, 8) * (0.000692439419762 * (T[pos] + 10)**3 - 0.005986511201093 * (T[pos] + 10)**2 - 0.066278074254598 * (T[pos] + 10) + 1.418983411970382)
+    pos = np.nonzero(np.logical_and(-5 <= T, T < -2))
+    if len(pos):
+        rigidity[pos] = pow(10, 8) * (-0.000132282004110 * (T[pos] + 5)**3 + 0.004400080095332 * (T[pos] + 5)**2 - 0.074210229783403 * (T[pos] + 5) + 1.024485188140279)
+    pos = np.nonzero(-2 <= T)
+    if len(pos):
+        rigidity[pos] = pow(10, 8) * (-0.000132282004110 * (T[pos] + 2)**3 + 0.003209542058346 * (T[pos] + 2)**2 - 0.051381363322371 * (T[pos] + 2) + 0.837883605537096)
+
+    # Now make sure that rigidity is positive
+    pos = np.nonzero(rigidity < 0)
+    rigidity[pos] = pow(1, 6)
+
+    return rigidity
Index: /issm/branches/trunk-dlcheng-ASE/src/m/materials/cuffeytemperate.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/materials/cuffeytemperate.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/materials/cuffeytemperate.m	(revision 27955)
@@ -0,0 +1,21 @@
+function rigidity=cuffeytemperate(temperature, waterfraction, stressexp)
+%CUFFEYTEMPERATE - calculates ice rigidity as a function of temperature and waterfraction
+%
+%   rigidity (in s^(1/3)Pa) is the flow law parameter in the flow law sigma=B*e(1/3)
+%   (Cuffey and Paterson, p75). 
+%   temperature is in Kelvin degrees
+%
+%   Usage:
+%      rigidity=cuffeytemperate(temperature, waterfraction, stressexp)
+
+if (any(size(temperature)~=size(waterfraction))),
+	error('input temperature and waterfraction should have same size!');
+end
+if any(temperature<0)
+	error('input temperature should be in Kelvin (positive)');
+end
+if any(waterfraction<0 | waterfraction>1)
+	error('input waterfraction should be between 0 and 1');
+end
+
+rigidity=cuffey(temperature).*(1+181.25*max(0., min(0.01, waterfraction))).^(-1/stressexp);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/materials/cuffeytemperate.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/materials/cuffeytemperate.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/materials/cuffeytemperate.py	(revision 27955)
@@ -0,0 +1,28 @@
+import numpy as np
+import cuffey
+
+
+def cuffeytemperate(temperature, waterfraction, stressexp):
+    '''
+    CUFFEYTEMPERATE - calculates ice rigidity as a function of temperature and waterfraction
+
+   rigidity (in s^(1 / 3)Pa) is the flow law parameter in the flow law sigma = B * e(1 / 3)
+   (Cuffey and Paterson, p75).
+   temperature is in Kelvin degrees
+
+   Usage:
+      rigidity = cuffeytemperate(temperature, waterfraction, stressexp)
+    '''
+
+    if np.any(temperature < 0.):
+        raise RuntimeError("input temperature should be in Kelvin (positive)")
+
+    if (np.any(temperature.shape in waterfraction.shape)):
+        error('input temperature and waterfraction should have same size!')
+
+    if np.any(waterfraction < 0 | waterfraction > 1):
+        error('input waterfraction should be between 0 and 1')
+
+    rigidity = np.multiply(cuffey(temperature), (1 * np.ones(waterfraction.shape) + 181.25 * np.maximum(np.zeros(waterfraction.shape), np.minimum(0.01 * np.ones(waterfraction.shape), waterfraction)))**(-1 / stressexp))
+
+    return rigidity
Index: /issm/branches/trunk-dlcheng-ASE/src/m/materials/nye.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/materials/nye.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/materials/nye.m	(revision 27955)
@@ -0,0 +1,43 @@
+function rigidity = nye(temperature,ice_type)
+%NYE - Nye viscosity coefficient
+%
+%   Compute rigidity of ice (either CO2 or H2O) for a given temperature
+%   rigidity (in s^(1/n)Pa) is the flow law parameter in the flow law
+%   sigma=B*e(1/n) (Nye, p2000).  temperature is in Kelvin degrees
+%
+%   Usage:
+%      rigidity=nye(temperature,ice_type) % ice_type = 1: CO2 ice // ice_type = 2: H2O ice
+
+	% Beyond-melting-point cases
+	warning OFF BACKTRACE
+	if (ice_type==1)
+		if (any(temperature>200&temperature<220))
+			warning('nye.m: CO2 ICE - POSSIBLE MELTING. Some temperature values are between 200K and 220K.\nLook at indexes: %s', mat2str(find(temperature>200 & temperature<220))');
+		end
+		if (any(temperature>=220))
+			warning('nye.m: CO2 ICE - GUARANTEED MELTING. Some temperature values are beyond 220K.\nLook at indexes: %s', mat2str(find(temperature>=220))');
+		end
+	elseif ((ice_type==2)&&(any(temperature>273.15)))
+		warning('nye.m: H2O ICE - GUARANTEED MELTING. Some temperature values are beyond 273.15K.\nLook at indexes: %s', mat2str(find(temperature>273.15))');
+	end
+
+	% Coefficients
+	Rg=8.3144598;       % J mol^-1 K^-1
+
+	if(ice_type==1)     % CO2 ice
+		A_const     = 10^(13.0);    % s^-1 MPa
+		Q           = 66900;        % J mol^-1
+		n           = 8;            % Glen's exponent
+	elseif(ice_type==2) % H2O ice
+		A_const     = 9e4;          % s^-1 MPa
+		Q           = 60000;        % J mol^-1
+		n           = 3;            % Glen's exponent
+	else
+		error('Ice type not supported');
+	end
+
+	% Arrhenius Law
+	A=A_const*exp(-Q./(temperature*Rg));  % s^-1 MPa
+	rigidity=A.^(-1/n)*1e6;               % s^(1/n) Pa
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/materials/nye.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/materials/nye.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/materials/nye.py	(revision 27955)
@@ -0,0 +1,51 @@
+import numpy as np
+
+
+def nye(temperature, ice_type):
+    """NYE - figure out the rigidity of ice (either CO2 or H2O) for a given 
+    temperature rigidity (in s^(1/n)Pa) is the flow law parameter in the flow 
+    law sigma=B*e(1/n) (Nye, p2000). Temperature is in Kelvin degrees.
+
+    Usage:
+        rigidity=nye(temperature,ice_type) % ice_type = 1: CO2 ice // ice_type = 2: H2O ice
+    """
+
+    # Declaring temperature and rigidity arrays
+    if np.ndim(temperature) == 2:
+        T = temperature.flatten()
+    elif isinstance(temperature, float) or isinstance(temperature, int):
+        T = np.array([temperature])
+    else:
+        T = temperature
+    rigidity = np.zeros_like(T)
+
+    # Beyond-melting-point cases
+    if (ice_type == 1):
+        for i in range(len(T)):
+            if (200 < T[i] < 220):
+                print('Warning: nye.py: CO2 ICE - POSSIBLE MELTING. Some temperature values are between 200K and 220K.')
+            break
+        if ((T >= 220).any()):
+            print('Warning: nye.py: CO2 ICE - GUARANTEED MELTING. Some temperature values are beyond 220K.')
+    elif (ice_type == 2) and ((T > 273.15).any()):
+        print('Warning: nye.py: H2O ICE - GUARANTEED MELTING. Some temperature values are beyond 273.15K.')
+
+    Rg = 8.3144598              # J mol^-1 K^-1
+
+    if ice_type == 1:           # CO2 ice
+        A_const = 1.0e13    # s^-1 MPa
+        Q = 66900.              # J mol^-1
+        n = 8.                  # Glen's exponent
+    elif ice_type == 2:         # H2O ice
+        A_const = 9e4       # s^-1 MPa
+        Q = 60000.              #  J mol^-1
+        n = 3.                  # Glen's exponent
+    else:
+        raise RuntimeError('Ice type not supported')
+
+    # Arrhenius Law
+    A = A_const * np.exp(-1 * Q / (T * Rg))  # s^-1 MPa
+    rigidity = A**(-1 / n) * 1.0e6  # s^(1/n) Pa
+
+    # Return output
+    return rigidity
Index: /issm/branches/trunk-dlcheng-ASE/src/m/materials/paterson.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/materials/paterson.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/materials/paterson.js	(revision 27955)
@@ -0,0 +1,53 @@
+function paterson(temperature){
+//PATERSON - figure out the rigidity of ice for a given temperature
+//
+//   rigidity (in s^(1/3)Pa) is the flow law paramter in the flow law sigma=B*e(1/3) (Paterson, p97). 
+//   temperature is in Kelvin degrees
+//
+//   Usage:
+//      var rigidity=paterson(temperature)
+
+	//variables:
+	var T=[];
+
+	if (ArrayAnyBelowStrict(temperature,0)){
+		throw Error('input temperature should be in Kelvin (positive)');
+	}
+	
+	T=temperature.slice(0);
+	for(var i=0;i<temperature.length;i++)T[i]=temperature[i]-273.15;
+
+	//The routine below is equivalent to:
+
+	// n=3; T=temperature-273;
+	// //From paterson,
+	// Temp=[0;-2;-5;-10;-15;-20;-25;-30;-35;-40;-45;-50];
+	// A=[6.8*10^-15;2.4*10^-15;1.6*10^-15;4.9*10^-16;2.9*10^-16;1.7*10^-16;9.4*
+	// 10^-17;5.1*10^-17;2.7*10^-17;1.4*10^-17;7.3*10^-18;3.6*10^-18];;//s-1(kPa-3)
+	// //Convert into rigidity B
+	// B=A.^(-1/n)*10^3; //s^(1/3)Pa
+	// //Now, do a cubic fit between Temp and B: 
+	// fittedmodel=fit(Temp,B,'cubicspline');
+	// rigidity=fittedmodel(temperature);
+
+	var rigidity=NewArrayFill(T.length,0);
+	
+	for (var i=0;i<T.length;i++){
+		
+		if(T[i]<=-45)              rigidity[i]=Math.pow(10,8)*(-0.000292866376675*Math.pow(T[i]+50,3)+ 0.011672640664130*Math.pow(T[i]+50,2)  -0.325004442485481*(T[i]+50)+  6.524779401948101);
+		if(-45<=T[i] & T[i]<-40)   rigidity[i]=Math.pow(10,8)*(-0.000292866376675*Math.pow(T[i]+45,3)+ 0.007279645014004*Math.pow(T[i]+45,2)  -0.230243014094813*(T[i]+45)+  5.154964909039554);
+		if(-40<=T[i] & T[i]<-35)   rigidity[i]=Math.pow(10,8)*(0.000072737147457*Math.pow(T[i]+40,3)+  0.002886649363879*Math.pow(T[i]+40,2)  -0.179411542205399*(T[i]+40)+  4.149132666831214);
+		if(-35<=T[i] & T[i]<-30)   rigidity[i]=Math.pow(10,8)*(-0.000086144770023*Math.pow(T[i]+35,3)+ 0.003977706575736*Math.pow(T[i]+35,2)  -0.145089762507325*(T[i]+35)+  3.333333333333331);
+		if(-30<=T[i] & T[i]<-25)   rigidity[i]=Math.pow(10,8)*(-0.000043984685769*Math.pow(T[i]+30,3)+ 0.002685535025386*Math.pow(T[i]+30,2)  -0.111773554501713*(T[i]+30)+  2.696559088937191);
+		if(-25<=T[i] & T[i]<-20)   rigidity[i]=Math.pow(10,8)*(-0.000029799523463*Math.pow(T[i]+25,3)+ 0.002025764738854*Math.pow(T[i]+25,2)  -0.088217055680511*(T[i]+25)+  2.199331606342181);
+		if(-20<=T[i] & T[i]<-15)   rigidity[i]=Math.pow(10,8)*(0.000136920904777*Math.pow(T[i]+20,3)+  0.001578771886910*Math.pow(T[i]+20,2)  -0.070194372551690*(T[i]+20)+  1.805165505978111);
+		if(-15<=T[i] & T[i]<-10)   rigidity[i]=Math.pow(10,8)*(-0.000899763781026*Math.pow(T[i]+15,3)+ 0.003632585458564*Math.pow(T[i]+15,2)  -0.044137585824322*(T[i]+15)+  1.510778053489523);
+		if(-10<=T[i] & T[i]<-5)    rigidity[i]=Math.pow(10,8)*(0.001676964325070*Math.pow(T[i]+10,3)-  0.009863871256831*Math.pow(T[i]+10,2)  -0.075294014815659*(T[i]+10)+  1.268434288203714);
+		if(-5<=T[i] & T[i]<-2)     rigidity[i]=Math.pow(10,8)*(-0.003748937622487*Math.pow(T[i]+5,3)+0.015290593619213*Math.pow(T[i]+5,2)  -0.048160403003748*(T[i]+5)+  0.854987973338348);
+		if(-2<=T[i])              rigidity[i]=Math.pow(10,8)*(-0.003748937622488*Math.pow(T[i]+2,3)-0.018449844983174*Math.pow(T[i]+2,2)  -0.057638157095631*(T[i]+2)+  0.746900791092860);
+
+		//Now make sure that rigidity is positive
+		if(rigidity[i]<0)          rigidity[i]=Math.pow(10,6);
+	}
+	return rigidity;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/materials/paterson.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/materials/paterson.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/materials/paterson.m	(revision 27955)
@@ -0,0 +1,42 @@
+function rigidity=paterson(temperature)
+%PATERSON - figure out the rigidity of ice for a given temperature
+%
+%   rigidity (in s^(1/3)Pa) is the flow law paramter in the flow law sigma=B*e(1/3) (Paterson, p97). 
+%   temperature is in Kelvin degrees
+%
+%   Usage:
+%      rigidity=paterson(temperature)
+
+if any(temperature<0)
+	error('input temperature should be in Kelvin (positive)');
+end
+T=temperature-273.15;
+
+%The routine below is equivalent to:
+
+% n=3; T=temperature-273;
+% %From paterson,
+% Temp=[0;-2;-5;-10;-15;-20;-25;-30;-35;-40;-45;-50];
+% A=[6.8*10^-15;2.4*10^-15;1.6*10^-15;4.9*10^-16;2.9*10^-16;1.7*10^-16;9.4*
+% 10^-17;5.1*10^-17;2.7*10^-17;1.4*10^-17;7.3*10^-18;3.6*10^-18];;%s-1(kPa-3)
+% %Convert into rigidity B
+% B=A.^(-1/n)*10^3; %s^(1/3)Pa
+% %Now, do a cubic fit between Temp and B: 
+% fittedmodel=fit(Temp,B,'cubicspline');
+% rigidity=fittedmodel(temperature);
+
+rigidity=zeros(length(T),1);
+pos1=find(T<=-45);           rigidity(pos1)=10^8*(-0.000292866376675*(T(pos1)+50).^3+ 0.011672640664130*(T(pos1)+50).^2  -0.325004442485481*(T(pos1)+50)+  6.524779401948101);
+pos2=find(-45<=T & T<-40);   rigidity(pos2)=10^8*(-0.000292866376675*(T(pos2)+45).^3+ 0.007279645014004*(T(pos2)+45).^2  -0.230243014094813*(T(pos2)+45)+  5.154964909039554);
+pos3=find(-40<=T & T<-35);   rigidity(pos3)=10^8*(0.000072737147457*(T(pos3)+40).^3+  0.002886649363879*(T(pos3)+40).^2  -0.179411542205399*(T(pos3)+40)+  4.149132666831214);
+pos4=find(-35<=T & T<-30);   rigidity(pos4)=10^8*(-0.000086144770023*(T(pos4)+35).^3+ 0.003977706575736*(T(pos4)+35).^2  -0.145089762507325*(T(pos4)+35)+  3.333333333333331);
+pos5=find(-30<=T & T<-25);   rigidity(pos5)=10^8*(-0.000043984685769*(T(pos5)+30).^3+ 0.002685535025386*(T(pos5)+30).^2  -0.111773554501713*(T(pos5)+30)+  2.696559088937191);
+pos6=find(-25<=T & T<-20);   rigidity(pos6)=10^8*(-0.000029799523463*(T(pos6)+25).^3+ 0.002025764738854*(T(pos6)+25).^2  -0.088217055680511*(T(pos6)+25)+  2.199331606342181);
+pos7=find(-20<=T & T<-15);   rigidity(pos7)=10^8*(0.000136920904777*(T(pos7)+20).^3+  0.001578771886910*(T(pos7)+20).^2  -0.070194372551690*(T(pos7)+20)+  1.805165505978111);
+pos8=find(-15<=T & T<-10);   rigidity(pos8)=10^8*(-0.000899763781026*(T(pos8)+15).^3+ 0.003632585458564*(T(pos8)+15).^2  -0.044137585824322*(T(pos8)+15)+  1.510778053489523);
+pos9=find(-10<=T & T<-5);    rigidity(pos9)=10^8*(0.001676964325070*(T(pos9)+10).^3-  0.009863871256831*(T(pos9)+10).^2  -0.075294014815659*(T(pos9)+10)+  1.268434288203714);
+pos10=find(-5<=T & T<-2);    rigidity(pos10)=10^8*(-0.003748937622487*(T(pos10)+5).^3+0.015290593619213*(T(pos10)+5).^2  -0.048160403003748*(T(pos10)+5)+  0.854987973338348);
+pos11=find(-2<=T);           rigidity(pos11)=10^8*(-0.003748937622488*(T(pos11)+2).^3-0.018449844983174*(T(pos11)+2).^2  -0.057638157095631*(T(pos11)+2)+  0.746900791092860);
+
+%Now make sure that rigidity is positive
+pos=find(rigidity<0);        rigidity(pos)=10^6;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/materials/paterson.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/materials/paterson.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/materials/paterson.py	(revision 27955)
@@ -0,0 +1,80 @@
+import numpy as np
+
+
+def paterson(temperature):
+    """PATERSON - figure out the rigidity of ice for a given temperature
+
+    rigidity (in s^(1/3)Pa) is the flow law paramter in the flow law 
+    sigma = B * e(1/3) (Paterson, p97).
+
+    temperature is in Kelvin degrees
+
+    Usage:
+        rigidity = paterson(temperature)
+    """
+
+    if np.any(temperature < 0.0):
+        raise RuntimeError('input temperature should be in Kelvin (positive)')
+
+    if np.ndim(temperature) == 2:
+        #T = temperature.reshape(-1, ) - 273.15
+        T = temperature.flatten() - 273.15
+    elif isinstance(temperature, float) or isinstance(temperature, int):
+        T = np.array([temperature]) - 273.15
+    else:
+        T = temperature - 273.15
+
+    # The routine below is equivalent to:
+
+    # n = 3; T = temperature-273
+    # %From paterson,
+    # Temp = [0; -2; -5; -10; -15; -20; -25; -30; -35; -40; -45; -50]
+    # A = [6.8 * 1.0e-15;2.4 * 1.0e-15;1.6 * 1.0e-15;4.9 * 1.0e-16;2.9 * 1.0e-16;1.7 * 1.0e-16;9.4 *
+    # 1.0e-17;5.1 * 1.0e-17;2.7 * 1.0e-17;1.4 * 1.0e-17;7.3 * 1.0e-18;3.6 * 1.0e-18];;%s - 1(kPa - 3)
+    # %Convert into rigidity B
+    # B = A.^(-1 / n) * 1.0e3; %s^(1 / 3)Pa
+    # %Now, do a cubic fit between Temp and B:
+    # fittedmodel = fit(Temp, B, 'cubicspline')
+    # rigidity = fittedmodel(temperature)
+
+    rigidity = np.zeros_like(T)
+    pos1 = np.nonzero(T <= -45)[0]
+    if len(pos1):
+        rigidity[pos1] = pow(10, 8) * (-0.000292866376675 * (T[pos1] + 50)**3 + 0.011672640664130 * (T[pos1] + 50)**2 - 0.325004442485481 * (T[pos1] + 50) + 6.524779401948101)
+    pos2 = np.nonzero(np.logical_and(-45 <= T, T < -40))[0]
+    if len(pos2):
+        rigidity[pos2] = pow(10, 8) * (-0.000292866376675 * (T[pos2] + 45)**3 + 0.007279645014004 * (T[pos2] + 45)**2 - 0.230243014094813 * (T[pos2] + 45) + 5.154964909039554)
+    pos3 = np.nonzero(np.logical_and(-40 <= T, T < -35))[0]
+    if len(pos3):
+        rigidity[pos3] = pow(10, 8) * (0.000072737147457 * (T[pos3] + 40)**3 + 0.002886649363879 * (T[pos3] + 40)**2 - 0.179411542205399 * (T[pos3] + 40) + 4.149132666831214)
+    pos4 = np.nonzero(np.logical_and(-35 <= T, T < -30))[0]
+    if len(pos4):
+        rigidity[pos4] = pow(10, 8) * (-0.000086144770023 * (T[pos4] + 35)**3 + 0.003977706575736 * (T[pos4] + 35)**2 - 0.145089762507325 * (T[pos4] + 35) + 3.333333333333331)
+    pos5 = np.nonzero(np.logical_and(-30 <= T, T < -25))[0]
+    if len(pos5):
+        rigidity[pos5] = pow(10, 8) * (-0.000043984685769 * (T[pos5] + 30)**3 + 0.002685535025386 * (T[pos5] + 30)**2 - 0.111773554501713 * (T[pos5] + 30) + 2.696559088937191)
+    pos6 = np.nonzero(np.logical_and(-25 <= T, T < -20))[0]
+    if len(pos6):
+        rigidity[pos6] = pow(10, 8) * (-0.000029799523463 * (T[pos6] + 25)**3 + 0.002025764738854 * (T[pos6] + 25)**2 - 0.088217055680511 * (T[pos6] + 25) + 2.199331606342181)
+    pos7 = np.nonzero(np.logical_and(-20 <= T, T < -15))[0]
+    if len(pos7):
+        rigidity[pos7] = pow(10, 8) * (0.000136920904777 * (T[pos7] + 20)**3 + 0.001578771886910 * (T[pos7] + 20)**2 - 0.070194372551690 * (T[pos7] + 20) + 1.805165505978111)
+    pos8 = np.nonzero(np.logical_and(-15 <= T, T < -10))[0]
+    if len(pos8):
+        rigidity[pos8] = pow(10, 8) * (-0.000899763781026 * (T[pos8] + 15)**3 + 0.003632585458564 * (T[pos8] + 15)**2 - 0.044137585824322 * (T[pos8] + 15) + 1.510778053489523)
+    pos9 = np.nonzero(np.logical_and(-10 <= T, T < -5))[0]
+    if len(pos9):
+        rigidity[pos9] = pow(10, 8) * (0.001676964325070 * (T[pos9] + 10)**3 - 0.009863871256831 * (T[pos9] + 10)**2 - 0.075294014815659 * (T[pos9] + 10) + 1.268434288203714)
+    pos10 = np.nonzero(np.logical_and(-5 <= T, T < -2))[0]
+    if len(pos10):
+        rigidity[pos10] = pow(10, 8) * (-0.003748937622487 * (T[pos10] + 5)**3 + 0.015290593619213 * (T[pos10] + 5)**2 - 0.048160403003748 * (T[pos10] + 5) + 0.854987973338348)
+    pos11 = np.nonzero(-2 <= T)[0]
+    if len(pos11):
+        rigidity[pos11] = pow(10, 8) * (-0.003748937622488 * (T[pos11] + 2)**3 - 0.018449844983174 * (T[pos11] + 2)**2 - 0.057638157095631 * (T[pos11] + 2) + 0.746900791092860)
+
+    #Now make sure that rigidity is positive
+    pos = np.nonzero(rigidity < 0)[0]
+    if len(pos):
+        rigidity[pos] = 1.0e6
+
+    return rigidity
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/analyticaldamage.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/analyticaldamage.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/analyticaldamage.m	(revision 27955)
@@ -0,0 +1,105 @@
+function [damage,B,backstress]=analyticaldamage(md,varargin)
+%ANALYTICALDAMAGE - compute damage for an ice shelf 
+%
+%	 This routine computes damage as a function of water/ice
+%	 material properties, ice thickness, strain rate, and ice 
+%	 rigidity.  The model must contain computed strain rates,
+%	 either from observed or modeled ice velocities.
+%
+%   Available options:
+%		- 'eq'			: analytical equation to use in the calculation.  Must be one of:
+%								'Weertman1D' for a confined ice shelf free to flow in one direction
+%								'Weertman2D' for an unconfined ice shelf free to spread in any direction
+%								'Thomas' for a 2D ice shelf, taking into account full strain rate tensor (default)
+%		- 'smoothing'	: the amount of smoothing to be applied to the strain rate data.
+%								Type 'help averaging' for more information on its
+%								usage. Defaults to 0.
+%		- 'sigmab'		: a-priori backstress in opposition to the driving stress.
+%								Defaults to 0 everywhere. 
+
+%		- 'coordsys'	: coordinate system for calculating the strain rate
+%							components. Must be one of: 
+%				'longitudinal': x axis aligned along a flowline at every point (default)
+%				'principal': x axis aligned along maximum principal strain rate
+%					at every point
+%				'xy': x and y axes same as in polar stereographic projection 
+%
+%   Return values:
+%		'damage' which is truncated in the range [0,1-1e-9]
+%
+%	   'B' is the ice rigidity calculated assuming D=0 everywhere. 
+%
+%		'backstress' is the inferred backstress necessary to balance the
+%		analytical solution (keeping damage within its appropriate limits, e.g. D
+%		in [0,1]).
+%
+%   Usage:
+%      [damage,B,backstress]=analyticaldamage(md,options)
+%
+%   Example:
+%      [damage,B,backstress]=analyticaldamage(md,'eq','Weertman2D','smoothing',2,'sigmab',10e3,'coordsys','longitudinal');
+
+% check inputs
+if (nargin<1),
+	help analyticaldamage
+	error('bad usage');
+end
+if isempty(fieldnames(md.results)),
+	error(['md.results.strainrate is not present.  Calculate using md=mechanicalproperties(md,vx,vy)']);
+end
+if dimension(md.mesh)~=2,
+	error('only 2d model supported currently');
+end
+if any(md.flowequation.element_equation~=2),
+	disp('Warning: the model has some non SSA elements. These will be treated like SSA elements');
+end
+
+% process options
+options = pairoptions(varargin{:});
+eq = getfieldvalue(options,'eq','Thomas');
+smoothing = getfieldvalue(options,'smoothing',0);
+sigmab = getfieldvalue(options,'sigmab',0);
+coordsys = getfieldvalue(options,'coordsys','longitudinal');
+if length(sigmab)==1,
+	sigmab=sigmab*ones(md.mesh.numberofvertices,1);
+end
+
+[a,b,theta,ex]=thomasparams(md,'eq',eq,'smoothing',smoothing,'coordsys',coordsys);
+
+% spreading stress
+rhoi=md.materials.rho_ice;
+rhow=md.materials.rho_water;
+C=0.5*rhoi*md.constants.g*(1-rhoi/rhow);
+T=C*md.geometry.thickness;
+
+% rheology
+B=md.materials.rheology_B;
+n=averaging(md,md.materials.rheology_n,0);
+
+D=1-(1+a+a.^2+b.^2).^((n-1)./(2*n))./abs(ex).^(1./n).*(T-sigmab)./B./(2+a)./sign(ex);
+
+% D>1 where (2+a).*sign(ex)<0, compressive regions where high backstress needed
+pos=find(D>1);
+D(pos)=0;
+
+backstress=zeros(md.mesh.numberofvertices,1);
+
+% backstress to bring D down to one 
+backstress(pos)=T(pos)-(1-D(pos)).*B(pos).*sign(ex(pos)).*(2+a(pos)).*abs(ex(pos)).^(1./n(pos))./(1+a(pos)+a(pos).^2).^((n(pos)-1)/2./n(pos));
+
+pos=find(D<0);
+mask=ismember(1:md.mesh.numberofvertices,pos);
+D(pos)=0;
+
+% backstress to bring negative damage to zero
+backstress(pos)=T(pos)-(1-D(pos)).*B(pos).*sign(ex(pos)).*(2+a(pos)).*abs(ex(pos)).^(1./n(pos))./(1+a(pos)+a(pos).^2).^((n(pos)-1)/2./n(pos));
+
+pos=find(backstress<0);
+backstress(pos)=0;
+
+% rigidity from Thomas relation for D=0 and backstress=0
+B=sign(ex)./(2+a).*(1+a+a.^2).^((n-1)/2./n).*T./(abs(ex).^(1./n));
+pos=find(B<0);
+B(pos)=md.materials.rheology_B(pos);
+
+damage=D;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/analyticaldamage.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/analyticaldamage.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/analyticaldamage.py	(revision 27955)
@@ -0,0 +1,111 @@
+import numpy as np
+
+from averaging import averaging
+from thomasparams import thomasparams
+
+
+def analyticaldamage(md, **kwargs):
+    '''
+    ANALYTICALDAMAGE - compute damage for an ice shelf
+
+         This routine computes damage as a function of water / ice
+         material properties, ice thickness, strain rate, and ice
+         rigidity.  The model must contain computed strain rates,
+         either from observed or modeled ice velocities.
+
+       Available options:
+             - eq            : analytical equation to use in the calculation.  Must be one of:
+                                    'Weertman1D' for a confined ice shelf free to flow in one direction
+                                    'Weertman2D' for an unconfined ice shelf free to spread in any direction
+                                    'Thomas' for a 2D ice shelf, taking into account full strain rate tensor (default)
+             - smoothing    : the amount of smoothing to be applied to the strain rate data.
+                                    Type 'help averaging' for more information on its usage.
+             - coordsys    : coordinate system for calculating the strain rate
+                        components. Must be one of:
+             - sigmab        : a compressive backstress term to be subtracted from the driving stress
+                                    in the damage calculation
+
+       Return values:
+            'damage' which is truncated in the range [0, 1 - 1e-9]
+
+           'B' is the rigidity, which is equal to md.materials.rheology_B in areas outside
+            those defined by 'mask.'  Within areas defined by 'mask, ' where negative damage
+            is inferred, 'B' is updated to make damage equal to zero.
+
+            'backstress' is the inferred backstress necessary to balance the analytical solution
+            (keeping damage within its appropriate limits, e.g. D in [0, 1]).
+
+       Usage:
+          damage, B, backstress = analyticaldamage(md, kwargs)
+
+       Example:
+          damage, B, backstress = analyticaldamage(md, eq = 'Weertman2D', smoothing = 2, sigmab = 1.0e3)
+    '''
+
+    #unpack kwargs
+    eq = kwargs.pop('eq', 'Thomas')
+    if 'eq' in kwargs:
+        del kwargs['eq']
+    smoothing = kwargs.pop('smoothing', 0)
+    if 'smoothing' in kwargs:
+        del kwargs['smoothing']
+    coordsys = kwargs.pop('coordsys', 'longitudinal')
+    if 'coordsys' in kwargs:
+        del kwargs['coordsys']
+    sigmab = kwargs.pop('sigmab', 0)
+    if 'sigmab' in kwargs:
+        del kwargs['sigmab']
+    assert len(kwargs) == 0, 'error, unexpected or misspelled kwargs'
+
+    if isinstance(sigmab, (int, float)):
+        sigmab = sigmab * np.ones((md.mesh.numberofvertices, ))
+
+    # check inputs
+    if 'strainrate' not in md.results.__dict__:
+        raise Exception('md.results.strainrate not present.  Calculate using md = mechanicalproperties(md, vx, vy)')
+    if '2d' not in md.mesh.__doc__:
+        raise Exception('only 2d (planview) model supported currently')
+    if np.any(md.flowequation.element_equation != 2):
+        print('Warning: the model has some non SSA elements. These will be treated like SSA elements')
+
+    a, b, theta, ex = thomasparams(md, eq=eq, smoothing=smoothing, coordsys=coordsys)
+
+    # spreading stress
+    rhoi = md.materials.rho_ice
+    rhow = md.materials.rho_water
+    C = 0.5 * rhoi * md.constants.g * (1. - rhoi / rhow)
+    T = C * md.geometry.thickness
+
+    # rheology
+    B = md.materials.rheology_B
+    n = averaging(md, md.materials.rheology_n, 0)
+
+    D = 1. - (1. + a + a**2 + b**2)**((n - 1.) / (2. * n)) / np.abs(ex)**(1. / n) * (T - sigmab) / B / (2. + a) / np.sign(ex)
+
+    # D > 1 where (2 + a). * sign(ex) < 0, compressive regions where high backstress needed
+    pos = np.nonzero(D > 1)
+    D[pos] = 0
+
+    backstress = np.zeros((md.mesh.numberofvertices, ))
+
+    # backstress to bring D down to one
+    backstress[pos] = T[pos] - (1. - D[pos]) * B[pos] * np.sign(ex[pos]) * (2. + a[pos]) * np.abs(ex[pos])**(1. / n[pos]) / (1. + a[pos] + a[pos]**2)**((n[pos] - 1.) / 2. / n[pos])
+
+    pos = np.nonzero(D < 0)
+    #mask = ismember(1:md.mesh.numberofvertices, pos)
+    D[pos] = 0
+
+    # backstress to bring negative damage to zero
+    backstress[pos] = T[pos] - (1. - D[pos]) * B[pos] * np.sign(ex[pos]) * (2. + a[pos]) * np.abs(ex[pos])**(1. / n[pos]) / (1. + a[pos] + a[pos]**2)**((n[pos] - 1.) / 2. / n[pos])
+
+    pos = np.nonzero(backstress < 0)
+    backstress[pos] = 0
+
+    # rigidity from Thomas relation for D = 0 and backstress = 0
+    B = np.sign(ex) / (2. + a) * (1. + a + a**2)**((n - 1.) / 2. / n) * T / (np.abs(ex)**(1. / n))
+    pos = np.nonzero(B < 0)
+    B[pos] = md.materials.rheology_B[pos]
+
+    damage = D
+
+    return damage, B, backstress
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/backstressfrominversion.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/backstressfrominversion.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/backstressfrominversion.m	(revision 27955)
@@ -0,0 +1,70 @@
+function backstress=backstressfrominversion(md,varargin)
+%BACKSTRESSFROMINVERSION - compute ice shelf backstress from inversion results 
+%
+%	 This routine computes backstress based on the analytical formalism of
+%	 Thomas (1973) and Borstad et al. (2013).  The model must contain inversion
+%	 results for ice rigidity.  Strain rates must also be included, either from
+%	 observed or modeled velocities.  Ice rigidity B is assumed to be
+%	 parameterized by the ice temperature in md.materials.rheology_B.
+%
+%   Available options:
+%		- 'tempmask'	: mask the inverted rigidity to be no more than
+%							appropriate for the temperature of the ice?  
+%							Boolean, defaults to false.
+%		- 'smoothing'	: the amount of smoothing to be applied to the strain rate data.
+%								Type 'help averaging' for more information on its
+%								usage. Defaults to 0.
+%		- 'coordsys'	: coordinate system for calculating the strain rate
+%							components. Must be one of: 
+%				'longitudinal': x axis aligned along a flowline at every point (default)
+%				'principal': x axis aligned along maximum principal strain rate
+%					at every point
+%				'xy': x and y axes same as in polar stereographic projection 
+%
+%   Return values:
+%		'backstress' is the inferred backstress based on the analytical
+%		solution for ice shelf creep
+%
+%   Usage:
+%      backstress=backstressfrominversion(md,options)
+%
+%   Example:
+%      backstress=backstressfrominversion(md,'smoothing',2,'coordsys','longitudinal','tempmask',true);
+
+% check inputs
+if (nargin<1),
+	help backstressfrominversion
+	error('bad usage');
+end
+if isempty(fieldnames(md.results)),
+	error(['md.results.strainrate is not present.  Calculate using md=mechanicalproperties(md,vx,vy)']);
+end
+if dimension(md.mesh)~=2,
+	error('only 2d model supported currently');
+end
+if any(md.flowequation.element_equation~=2),
+	disp('Warning: the model has some non SSA elements. These will be treated like SSA elements');
+end
+
+% process options
+options = pairoptions(varargin{:});
+smoothing = getfieldvalue(options,'smoothing',0);
+coordsys = getfieldvalue(options,'coordsys','longitudinal');
+tempmask = getfieldvalue(options,'tempmask',false);
+
+T=0.5*md.materials.rho_ice*md.constants.g*(1-md.materials.rho_ice/md.materials.rho_water)*md.geometry.thickness;
+n=averaging(md,md.materials.rheology_n,0);
+B=md.materials.rheology_B;
+Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar;
+
+[a0,b0,theta0,ex0]=thomasparams(md,'eq','Thomas','smoothing',smoothing,'coordsys',coordsys);
+
+if tempmask
+	Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar;
+   pos=find(Bi>md.materials.rheology_B);
+   Bi(pos)=md.materials.rheology_B(pos);
+end
+
+% analytical backstress solution
+backstress=T-Bi.*sign(ex0).*(2+a0).*abs(ex0).^(1./n)./((1+a0+a0.^2+b0.^2).^((n-1)/2./n));
+backstress(find(backstress<0))=0;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/backstressfrominversion.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/backstressfrominversion.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/backstressfrominversion.py	(revision 27955)
@@ -0,0 +1,77 @@
+import numpy as np
+from averaging import averaging
+from thomasparams import thomasparams
+
+
+def backstressfrominversion(md, **kwargs):
+    '''
+    Compute ice shelf backstress from inversion results.
+
+    This routine computes backstress based on the analytical formalism of
+    Thomas (1973) and Borstad et al. (2013, The Cryosphere).  The model
+    must contain inversion results for ice rigidity.  Strain rates must
+    also be included, either from observed or modeled velocities.  Ice
+    rigidity B is assumed to be parameterized by the ice temperature in
+    md.materials.rheology_B.
+
+   Available options:
+         - 'tempmask'    : mask the inverted rigidity to be no more than
+                            appropriate for the temperature of the ice?
+                            Boolean, defaults to false.
+         - 'smoothing'    : the amount of smoothing to be applied to the strain rate data.
+                                Type 'help averaging' for more information on its
+                                usage. Defaults to 0.
+         - 'coordsys'    : coordinate system for calculating the strain rate
+                            components. Must be one of:
+                'longitudinal': x axis aligned along a flowline at every point (default)
+                'principal': x axis aligned along maximum principal strain rate
+                    at every point
+                'xy': x and y axes same as in polar stereographic projection
+
+   Return values:
+        'backstress' is the inferred backstress based on the analytical
+        solution for ice shelf creep
+
+   Usage:
+      backstress = backstressfrominversion(md, options)
+
+   Example:
+      backstress = backstressfrominversion(md, 'smoothing', 2, 'coordsys', 'longitudinal', 'tempmask', true)
+    '''
+
+    # unpack kwargs
+    tempmask = kwargs.pop('tempmask', False)
+    if 'tempmask' in kwargs:
+        del kwargs['maxiter']
+    smoothing = kwargs.pop('smoothing', 0)
+    if 'smoothing' in kwargs:
+        del kwargs['smoothing']
+    coordsys = kwargs.pop('coordsys', 'longitudinal')
+    if 'coordsys' in kwargs:
+        del kwargs['coordsys']
+    assert len(kwargs) == 0, 'error, unexpected or misspelled kwargs'
+
+    # some checks
+    if not hasattr(md.results, 'strainrate'):
+        raise Exception('md.results.strainrate not present.  Calculate using md = mechanicalproperties(md, vx, vy)')
+    if '2d' not in md.mesh.__doc__:
+        raise Exception('only 2d (planview) model supported currently')
+    if any(md.flowequation.element_equation != 2):
+        raise Exception('Warning: the model has some non - SSA elements.  These will be treated like SSA elements')
+
+    T = 0.5 * md.materials.rho_ice * md.constants.g * (1 - md.materials.rho_ice / md.materials.rho_water) * md.geometry.thickness
+    n = averaging(md, md.materials.rheology_n, 0)
+    Bi = md.results.StressbalanceSolution.MaterialsRheologyBbar.reshape(-1, )
+
+    a0, b0, theta0, ex0 = thomasparams(md, eq='Thomas', smoothing=smoothing, coordsys=coordsys)
+
+    if tempmask:
+        Bi = md.results.StressbalanceSolution.MaterialsRheologyBbar
+        pos = np.nonzero(Bi > md.materials.rheology_B)
+        Bi[pos] = md.materials.rheology_B[pos]
+
+    # analytical backstress solution
+    backstress = T - Bi * np.sign(ex0) * (2 + a0) * np.abs(ex0)**(1. / n) / ((1 + a0 + a0**2 + b0**2)**((n - 1.) / 2. / n))
+    backstress[np.nonzero(backstress < 0)] = 0
+
+    return backstress
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/basalstress.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/basalstress.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/basalstress.m	(revision 27955)
@@ -0,0 +1,39 @@
+function [bx by b]=basalstress(md)
+%BASALSTRESS - compute basal stress from basal drag and geometric information. 
+%
+%      Computes basal stress from geometric information and ice velocity in md.initialization.
+%
+%   Usage:
+%      [bx by b]=basalstress(md);
+%
+%   See also: plot_basaldrag
+
+%compute exponents
+s=averaging(md,1./md.friction.p,0);
+r=averaging(md,md.friction.q./md.friction.p,0);
+
+%Compute effective pressure
+switch(md.friction.coupling)
+	case 0
+		N = max(md.constants.g*(md.materials.rho_ice*md.geometry.thickness+md.materials.rho_water*md.geometry.base),0);
+	case 3
+		N = max(md.friction.effective_pressure, 0);
+	otherwise
+		error('not supported yet');
+end
+
+%compute sliding velocity
+ub=sqrt(md.initialization.vx.^2+md.initialization.vy.^2)/md.constants.yts;
+ubx=md.initialization.vx/md.constants.yts;
+uby=md.initialization.vy/md.constants.yts;
+
+%compute basal drag (S.I.)
+alpha2 = (N.^r).*(md.friction.coefficient.^2).*(ub.^(s-1));
+b  =  alpha2.*ub;
+bx = -alpha2.*ubx;
+by = -alpha2.*uby;
+
+%return magnitude of only one output is requested
+if nargout==1
+	bx = b;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/calcbackstress.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/calcbackstress.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/calcbackstress.m	(revision 27955)
@@ -0,0 +1,66 @@
+function backstress=calcbackstress(md,varargin)
+%BACKSTRESSFROMINVERSION - compute ice shelf backstress  
+%
+%	 This routine computes backstress based on the analytical formalism of
+%	 Thomas (1973) and Borstad et al. (2013) based on the ice rigidity,
+%	 thickness, the densities of ice and seawater, and (optionally)
+%	 damage. Strain rates must also be included, either from observed or
+%	 modeled velocities.
+
+%   Available options:
+%		- 'smoothing'	: the amount of smoothing to be applied to the strain rate data.
+%								Type 'help averaging' for more information on its
+%								usage. Defaults to 0.
+%		- 'coordsys'	: coordinate system for calculating the strain rate
+%							components. Must be one of: 
+%				'longitudinal': x axis aligned along a flowline at every point (default)
+%				'principal': x axis aligned along maximum principal strain rate
+%					at every point
+%				'xy': x and y axes same as in polar stereographic projection 
+%
+%   Return values:
+%		'backstress' is the inferred backstress based on the analytical
+%		solution for ice shelf creep
+%
+%   Usage:
+%      backstress=calcbackstress(md,options)
+%
+%   Example:
+%      backstress=backstressfrominversion(md,'smoothing',2,'coordsys','longitudinal');
+
+% check inputs
+if (nargin<1),
+	help backstressfrominversion
+	error('bad usage');
+end
+if isempty(fieldnames(md.results)),
+	error(['md.results.strainrate is not present.  Calculate using md=mechanicalproperties(md,vx,vy)']);
+end
+if dimension(md.mesh)~=2,
+	error('only 2d model supported currently');
+end
+if any(md.flowequation.element_equation~=2),
+	disp('Warning: the model has some non SSA elements. These will be treated like SSA elements');
+end
+
+% process options
+options = pairoptions(varargin{:});
+smoothing = getfieldvalue(options,'smoothing',0);
+coordsys = getfieldvalue(options,'coordsys','longitudinal');
+tempmask = getfieldvalue(options,'tempmask',false);
+
+T=0.5*md.materials.rho_ice*md.constants.g*(1-md.materials.rho_ice/md.materials.rho_water)*md.geometry.thickness;
+n=averaging(md,md.materials.rheology_n,0);
+B=md.materials.rheology_B;
+if md.damage.isdamage,
+	D=md.damage.D
+else
+	D=0;
+end
+
+[a0,b0,theta0,ex0]=thomasparams(md,'eq','Thomas','smoothing',smoothing,'coordsys',coordsys);
+
+% analytical backstress solution
+%backstress=T-(1.-D).*B.*sign(ex0).*(2+a0).*abs(ex0).^(1./n)./((1+a0+a0.^2+b0.^2).^((n-1)/2./n));
+backstress=1-((1.-D).*B.*sign(ex0).*(2+a0).*abs(ex0).^(1./n)./((1+a0+a0.^2+b0.^2).^((n-1)/2./n)))./T; %fix
+backstress(find(backstress<0))=0;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/calcbackstress.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/calcbackstress.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/calcbackstress.py	(revision 27955)
@@ -0,0 +1,69 @@
+import numpy as np
+from averaging import averaging
+from thomasparams import thomasparams
+
+
+def calcbackstress(md, **kwargs):
+    '''
+    Compute ice shelf backstress.
+
+    This routine computes backstress based on the analytical formalism of
+    Thomas (1973) and Borstad et al. (2013, The Cryosphere) based on the
+    ice rigidity, thickness, the densities of ice and seawater, and
+    (optionally) damage.  Strain rates must also be included, either from
+    observed or modeled velocities.
+
+    Available options:
+         - 'smoothing'    : the amount of smoothing to be applied to the strain rate data.
+                                Type 'help averaging' for more information on its
+                                usage. Defaults to 0.
+         - 'coordsys'    : coordinate system for calculating the strain rate
+                            components. Must be one of:
+                'longitudinal': x axis aligned along a flowline at every point (default)
+                'principal': x axis aligned along maximum principal strain rate
+                    at every point
+                'xy': x and y axes same as in polar stereographic projection
+
+   Return values:
+        'backstress' is the inferred backstress based on the analytical
+        solution for ice shelf creep
+
+   Usage:
+      backstress = calcbackstress(md, options)
+
+   Example:
+      backstress = calcbackstress(md, 'smoothing', 2, 'coordsys', 'longitudinal')
+    '''
+
+    # unpack kwargs
+    smoothing = kwargs.pop('smoothing', 0)
+    if 'smoothing' in kwargs:
+        del kwargs['smoothing']
+    coordsys = kwargs.pop('coordsys', 'longitudinal')
+    if 'coordsys' in kwargs:
+        del kwargs['coordsys']
+    assert len(kwargs) == 0, 'error, unexpected or misspelled kwargs'
+
+    # some checks
+    if not hasattr(md.results, 'strainrate'):
+        raise Exception('md.results.strainrate not present.  Calculate using md = mechanicalproperties(md, vx, vy)')
+    if '2d' not in md.mesh.__doc__:
+        raise Exception('only 2d (planview) model supported currently')
+    if any(md.flowequation.element_equation != 2):
+        raise Exception('Warning: the model has some non - SSA elements.  These will be treated like SSA elements')
+
+    T = 0.5 * md.materials.rho_ice * md.constants.g * (1 - md.materials.rho_ice / md.materials.rho_water) * md.geometry.thickness
+    n = averaging(md, md.materials.rheology_n, 0)
+    B = md.materials.rheology_B
+    if md.damage.isdamage:
+        D = md.damage.D
+    else:
+        D = 0.
+
+    a0, b0, theta0, ex0 = thomasparams(md, eq='Thomas', smoothing=smoothing, coordsys=coordsys)
+
+    # analytical backstress solution
+    backstress = T - (1. - D) * B * np.sign(ex0) * (2 + a0) * np.abs(ex0)**(1. / n) / ((1 + a0 + a0**2 + b0**2)**((n - 1.) / 2. / n))
+    backstress[np.nonzero(backstress < 0)] = 0
+
+    return backstress
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/cfl_step.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/cfl_step.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/cfl_step.m	(revision 27955)
@@ -0,0 +1,23 @@
+function maxtime=cfl_step(md,vx,vy)
+%CFL_STEP - return the maximum time step for the model in years
+%
+%   Dt < 0.5 / ( u/Dx +v/Dy )
+%
+%   Usage:
+%      maxtime=cfl_step(md,vx,vy);
+%
+%   Example:
+%      dt=cfl_step(md,md.results.StressbalanceSolution.Vx,md.results.StressbalanceSolution.Vy)
+
+%Check length of velocities 
+if size(vx,1)~=md.mesh.numberofvertices & size(vy,1)~=md.mesh.numberofvertices,
+	error('timestpes error message: size of velocity components must be the same as md.mesh.numberofvertices');
+end
+
+index=md.mesh.elements;
+edgex=max(md.mesh.x(index),[],2)-min(md.mesh.x(index),[],2);
+edgey=max(md.mesh.y(index),[],2)-min(md.mesh.y(index),[],2);
+vx=max(abs(vx(index)),[],2);
+vy=max(abs(vy(index)),[],2);
+
+maxtime=1/2*min(1./(vx./edgex+vy./edgey));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/damagefrominversion.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/damagefrominversion.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/damagefrominversion.m	(revision 27955)
@@ -0,0 +1,33 @@
+function damage=damagefrominversion(md)
+%DAMAGEFROMINVERSION - compute ice shelf damage from inversion results
+%
+%	This routine computes damage based on the analytical formalism of Borstad et
+%	al. (2013).  The model must contain inversion results for ice rigidity.  Ice
+%	rigidity B is assumed to be parameterized by the ice temperature in
+%	md.materials.rheology_B. 
+%
+%	Usage:
+%		damage=damagefrominversion(md)
+%
+%	Example:
+%		damage=damagefrominversion(md)
+
+% check inputs
+if (nargin<1),
+	help backstressfrominversion
+	error('bad usage');
+end
+if isempty(fieldnames(md.results)),
+	error(['md.results.strainrate is not present.  Calculate using md=mechanicalproperties(md,vx,vy)']);
+end
+if dimension(md.mesh)~=2,
+	error('only 2d model supported currently');
+end
+if any(md.flowequation.element_equation~=2),
+	disp('Warning: the model has some non SSA elements. These will be treated like SSA elements');
+end
+
+damage=zeros(md.mesh.numberofvertices,1);
+% Damage where Bi softer than B(T)
+pos=find(md.results.StressbalanceSolution.MaterialsRheologyBbar<md.materials.rheology_B);
+damage(pos)=1-md.results.StressbalanceSolution.MaterialsRheologyBbar(pos)./md.materials.rheology_B(pos);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/damagefrominversion.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/damagefrominversion.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/damagefrominversion.py	(revision 27955)
@@ -0,0 +1,45 @@
+import numpy as np
+
+
+def damagefrominversion(md):
+    '''
+    compute ice shelf damage from inversion results
+
+    This routine computes damage based on the analytical formalism of Borstad et
+    al. (2013, The Cryosphere).  The model must contain inversion results for
+    ice rigidity.  Ice rigidity B is assumed to be parameterized by the ice
+    temperature in md.materials.rheology_B.
+
+    Usage:
+        damage = damagefrominversion(md)
+
+    Example:
+        damage = damagefrominversion(md)
+    '''
+
+    # check inputs
+    if not hasattr(md.results, 'strainrate'):
+        raise Exception('md.results.strainrate is not present.  Calculate using md = mechanicalproperties(md, vx, vy)')
+    if '2d' not in md.mesh.__doc__:
+        raise Exception('only 2d (planview) model supported currently')
+    if any(md.flowequation.element_equation != 2):
+        raise Exception('Warning: the model has some non - SSA elements.  These will be treated like SSA elements')
+    if np.ndim(md.results.StressbalanceSolution.MaterialsRheologyBbar) == 2:
+        Bi = md.results.StressbalanceSolution.MaterialsRheologyBbar.reshape(-1, )
+    else:
+        Bi = md.results.StressbalanceSolution.MaterialsRheologyBbar
+    if np.ndim(md.materials.rheology_B) == 2:
+        BT = md.materials.rheology_B.reshape(-1, )
+    else:
+        BT = md.materials.rheology_B
+
+    damage = np.zeros_like(Bi)
+
+    # Damage where Bi softer than B(T)
+    pos = np.nonzero(Bi < BT)[0]
+    damage[pos] = 1. - Bi[pos] / BT[pos]
+
+    pos = np.nonzero(damage < 0)
+    damage[pos] = 0
+
+    return damage
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/drivingstress.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/drivingstress.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/drivingstress.m	(revision 27955)
@@ -0,0 +1,18 @@
+function [px,py,pmag]=drivingstress(md)
+%DRIVINGSTRESS -  evaluates the driving stress
+%
+%   The driving stress is computed according to the following formula: 
+%   driving stress= rho_ice*g*H*slope
+%
+%   Usage:
+%      [Fx,Fy,Fmag]=drivingstress(md)
+
+%Get slope
+[sx,sy,s]=slope(md);
+
+%Average thickness over elements
+thickness_bar=(md.geometry.thickness(md.mesh.elements(:,1))+md.geometry.thickness(md.mesh.elements(:,2))+md.geometry.thickness(md.mesh.elements(:,3)))/3;
+
+px=-md.materials.rho_ice*md.constants.g*thickness_bar.*sx;
+py=-md.materials.rho_ice*md.constants.g*thickness_bar.*sy;
+pmag=sqrt(px.^2+py.^2);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/mechanicalproperties.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/mechanicalproperties.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/mechanicalproperties.m	(revision 27955)
@@ -0,0 +1,138 @@
+function md=mechanicalproperties(md,vx,vy,varargin)
+%MECHANICALPROPERTIES - compute stress and strain rate for a given velocity
+%
+%   this routine computes the components of the (deviatoric) stress tensor,
+%   the strain rate tensor, and their respective principal directions.
+%   The results are in the model md: md.results
+%
+%   Usage:
+%      md=mechanicalproperties(md,vx,vy)
+%
+%   Example:
+%      md=mechanicalproperties(md,md.initialization.vx,md.initialization.vy);
+%      md=mechanicalproperties(md,md.inversion.vx_obs,md.inversion.vy_obs);
+
+%some checks
+if length(vx)~=md.mesh.numberofvertices | length(vy)~=md.mesh.numberofvertices,
+	%error(['the input velocity should be of size ' num2str(md.mesh.numberofvertices) '!'])
+end
+if dimension(md.mesh)~=2
+	error('only 2d model supported yet');
+end
+if any(md.flowequation.element_equation~=2),
+	disp('Warning: the model has some non SSA elements. These will be treated like SSA''s elements');
+end
+
+%get damage, if passed
+options = pairoptions(varargin{:});
+damage = getfieldvalue(options,'damage',zeros(md.mesh.numberofvertices,1));
+
+%initialization
+numberofelements=md.mesh.numberofelements;
+index=md.mesh.elements;
+summation=[1;1;1];
+directionsstress=zeros(numberofelements,4);
+directionsstrain=zeros(numberofelements,4);
+valuesstress=zeros(numberofelements,2);
+valuesstrain=zeros(numberofelements,2);
+
+%compute nodal functions coefficients N(x,y)=alpha x + beta y +gamma
+[alpha beta]=GetNodalFunctionsCoeff(index,md.mesh.x,md.mesh.y);
+
+%compute shear
+vxlist=vx(index)/md.constants.yts;
+vylist=vy(index)/md.constants.yts;
+ux=(vxlist.*alpha)*summation;
+uy=(vxlist.*beta)*summation;
+vx=(vylist.*alpha)*summation;
+vy=(vylist.*beta)*summation;						
+uyvx=(vx+uy)./2;
+clear vxlist vylist
+
+%compute viscosity
+nu=zeros(numberofelements,1);
+B_bar=md.materials.rheology_B(index)*summation/3;
+power=(md.materials.rheology_n-1)./(2*md.materials.rheology_n);
+second_inv=(ux.^2+vy.^2+((uy+vx).^2)/4+ux.*vy);
+
+%some corrections
+location=find(second_inv==0 & power~=0);
+nu(location)=10^18; 	%arbitrary maximum viscosity to apply where there is no effective shear
+
+if isa(md.materials,'matice')
+	location=find(second_inv~=0);
+	nu(location)=B_bar(location)./(second_inv(location).^power(location));
+	location=find(second_inv==0 & power==0);
+	nu(location)=B_bar(location);
+elseif isa(md.materials,'matdamageice')
+	Zinv=1-damage(index)*summation/3;
+	location=find(second_inv~=0);
+	nu(location)=Zinv(location).*B_bar(location)./(second_inv(location).^power(location));
+	location=find(second_inv==0 & power==0);
+	nu(location)=Zinv(location).*B_bar(location);
+	clear Zinv
+else
+	error(['class of md.materials (' class(md.materials) ') not recognized or not supported']);
+end
+clear B_bar location second_inv power
+
+%compute stress
+tau_xx=nu.*ux;
+tau_yy=nu.*vy;
+tau_xy=nu.*uyvx;
+
+%compute principal properties of stress
+for i=1:numberofelements,
+
+	%compute stress and strainrate matrices
+	stress=[tau_xx(i) tau_xy(i)
+	tau_xy(i)  tau_yy(i)];
+	strain=[ux(i) uyvx(i)
+	uyvx(i)  vy(i)];
+
+	%eigen values and vectors
+	[directions,value]=eig(stress);
+	%sort by algebraic value of eigenvalue (not absolute value) in descending order
+	[val,idx]=sort(diag(value),'descend');
+	%re-order eigenvalues and associated vectors 
+	value=value(idx,idx);
+	directions=directions(:,idx);
+	valuesstress(i,:)=[value(1,1) value(2,2)];
+	directionsstress(i,:)=directions(:)';
+	[directions,value]=eig(strain);
+	%same for strainrate
+	[val,idx]=sort(diag(value),'descend');
+	value=value(idx,idx);
+	directions=directions(:,idx);
+	valuesstrain(i,:)=[value(1,1) value(2,2)];
+	directionsstrain(i,:)=directions(:)';
+end
+
+%plug onto the model
+%NB: Matlab sorts the eigen value in increasing order, we want the reverse
+strainrate=struct('xx',[],'yy',[],'xy',[],'principalvalue1',[],'principalaxis1',[],'principalvalue2',[],'principalaxis2',[],'effectivevalue',[]);
+strainrate.xx=ux*md.constants.yts; %strain rate in 1/a instead of 1/s
+strainrate.yy=vy*md.constants.yts; 
+strainrate.xy=uyvx*md.constants.yts; 
+strainrate.principalvalue1=valuesstrain(:,1)*md.constants.yts; 
+strainrate.principalaxis1=directionsstrain(:,1:2);
+strainrate.principalvalue2=valuesstrain(:,2)*md.constants.yts; 
+strainrate.principalaxis2=directionsstrain(:,3:4);
+strainrate.effectivevalue=1/sqrt(2)*sqrt(strainrate.xx.^2+strainrate.yy.^2+2*strainrate.xy.^2);
+md.results.strainrate=strainrate;
+
+%exact same stress as above
+deviatoricstress=struct('xx',[],'yy',[],'xy',[],'principalvalue1',[],'principalaxis1',[],'principalvalue2',[],'principalaxis2',[],'effectivevalue',[]);
+deviatoricstress.xx=tau_xx;
+deviatoricstress.yy=tau_yy;
+deviatoricstress.xy=tau_xy;
+deviatoricstress.principalvalue1=valuesstress(:,1);
+deviatoricstress.principalaxis1=directionsstress(:,1:2);
+deviatoricstress.principalvalue2=valuesstress(:,2);
+deviatoricstress.principalaxis2=directionsstress(:,3:4);
+deviatoricstress.effectivevalue=1/sqrt(2)*sqrt(deviatoricstress.xx.^2+deviatoricstress.yy.^2+2*deviatoricstress.xy.^2);
+md.results.deviatoricstress=deviatoricstress;
+
+viscosity=struct('nu',[]);
+viscosity.nu=nu;
+md.results.viscosity=viscosity;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/mechanicalproperties.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/mechanicalproperties.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/mechanicalproperties.py	(revision 27955)
@@ -0,0 +1,150 @@
+import numpy as np
+from GetNodalFunctionsCoeff import GetNodalFunctionsCoeff
+from results import results
+
+
+def mechanicalproperties(md, vx, vy, **kwargs):
+    """MECHANICALPROPERTIES - compute stress and strain rate for a given 
+    velocity
+
+    This routine computes the components of the stress tensor strain rate 
+    tensor and their respective principal directions. The results are in the 
+    model md: md.results
+
+    Usage:
+        md = mechanicalproperties(md, vx, vy)
+
+    Example:
+        md = mechanicalproperties(md, md.initialization.vx, md.initialization.vy)
+        md = mechanicalproperties(md, md.inversion.vx_obs, md.inversion.vy_obs)
+    """
+
+    #some checks
+    if len(vx) != md.mesh.numberofvertices or len(vy) != md.mesh.numberofvertices:
+        raise ValueError('the input velocity should be of size ' + md.mesh.numberofvertices)
+
+    #if md.mesh.dimension != 2:
+    #    raise StandardError('only 2D model supported currently')
+
+    if np.any(md.flowequation.element_equation != 2):
+        print('Warning: the model has some non SSA elements. These will be treated like SSA elements')
+
+    #unpack kwargs
+    if 'damage' in kwargs:
+        damage = kwargs.pop('damage')
+        if len(damage) != md.mesh.numberofvertices:
+            raise ValueError('if damage is supplied it should be of size ' + md.mesh.numberofvertices)
+            if np.ndim(damage) == 2:
+                damage = np.squeeze(damage)
+        else:
+            damage = None
+
+    if np.ndim(vx) == 2:
+        vx = np.squeeze(vx)
+    if np.ndim(vy) == 2:
+        vy = np.squeeze(vy)
+
+    #initialization
+    numberofelements = md.mesh.numberofelements
+    index = md.mesh.elements
+    summation = np.array([[1], [1], [1]])
+    directionsstress = np.zeros((numberofelements, 4))
+    directionsstrain = np.zeros((numberofelements, 4))
+    valuesstress = np.zeros((numberofelements, 2))
+    valuesstrain = np.zeros((numberofelements, 2))
+
+    #compute nodal functions coefficients N(x, y)=alpha x + beta y + gamma
+    alpha, beta = GetNodalFunctionsCoeff(index, md.mesh.x, md.mesh.y)[0:2]
+
+    #compute shear
+    vxlist = vx[index - 1] / md.constants.yts
+    vylist = vy[index - 1] / md.constants.yts
+    ux = np.dot((vxlist * alpha), summation).reshape(-1, )
+    uy = np.dot((vxlist * beta), summation).reshape(-1, )
+    vx = np.dot((vylist * alpha), summation).reshape(-1, )
+    vy = np.dot((vylist * beta), summation).reshape(-1, )
+    uyvx = (vx + uy) / 2.
+    #clear vxlist vylist
+
+    #compute viscosity
+    nu = np.zeros((numberofelements, ))
+    B_bar = np.dot(md.materials.rheology_B[index - 1], summation / 3.).reshape(-1, )
+    power = ((md.materials.rheology_n - 1.) / (2. * md.materials.rheology_n)).reshape(-1, )
+    second_inv = (ux**2. + vy**2. + ((uy + vx)**2.) / 4. + ux * vy).reshape(-1, )
+
+    #some corrections
+    location = np.nonzero(np.logical_and(second_inv == 0, power != 0))
+    nu[location] = pow(10, 18) #arbitrary maximum viscosity to apply where there is no effective shear
+
+    if 'matice' in md.materials.__module__:
+        location = np.nonzero(second_inv)
+        nu[location] = B_bar[location] / (second_inv[location]**power[location])
+        location = np.nonzero(np.logical_and(second_inv == 0, power == 0))
+        nu[location] = B_bar[location]
+        location = np.nonzero(np.logical_and(second_inv == 0, power != 0))
+        nu[location] = pow(10, 18)
+    elif 'matdamageice' in md.materials.__module__ and damage is not None:
+        print('computing damage-dependent properties!')
+        Zinv = np.dot(1 - damage[index - 1], summation / 3.).reshape(-1, )
+        location = np.nonzero(second_inv)
+        nu[location] = Zinv[location] * B_bar[location] / np.power(second_inv[location], power[location])
+        location = np.nonzero(np.logical_and(second_inv == 0, power == 0))
+        nu[location] = Zinv[location] * B_bar[location]
+    #clear Zinv
+    else:
+        raise Exception('class of md.materials (' + md.materials.__module__ + ') not recognized or not supported')
+
+    #compute stress
+    tau_xx = nu * ux
+    tau_yy = nu * vy
+    tau_xy = nu * uyvx
+
+    #compute principal properties of stress
+    for i in np.arange(numberofelements):
+
+        #compute stress and strainrate matrices
+        stress = np.array([[tau_xx[i], tau_xy[i]], [tau_xy[i], tau_yy[i]]])
+        strain = np.array([[ux[i], uyvx[i]], [uyvx[i], vy[i]]])
+
+    #eigenvalues and vectors for stress
+        value, directions = np.linalg.eig(stress)
+        idx = value.argsort()[::-1]  # sort in descending algebraic (not absolute) order
+        value = value[idx]
+        directions = directions[:, idx]
+        valuesstress[i, :] = [value[0], value[1]]
+        directionsstress[i, :] = directions.transpose().flatten()
+
+    #eigenvalues and vectors for strain
+        value, directions = np.linalg.eig(strain)
+        idx = value.argsort()[::-1]  # sort in descending order
+        value = value[idx]
+        directions = directions[:, idx]
+        valuesstrain[i, :] = [value[0], value[1]]
+        directionsstrain[i, :] = directions.transpose().flatten()
+
+    #plug onto the model
+    #NB: Matlab sorts the eigen value in increasing order, we want the reverse
+
+    strainrate = results()
+    strainrate.xx = ux * md.constants.yts  #strain rate in 1 / a instead of 1 / s
+    strainrate.yy = vy * md.constants.yts
+    strainrate.xy = uyvx * md.constants.yts
+    strainrate.principalvalue1 = valuesstrain[:, 0] * md.constants.yts
+    strainrate.principalaxis1 = directionsstrain[:, 0:2]
+    strainrate.principalvalue2 = valuesstrain[:, 1] * md.constants.yts
+    strainrate.principalaxis2 = directionsstrain[:, 2:4]
+    strainrate.effectivevalue = 1. / np.sqrt(2.) * np.sqrt(strainrate.xx**2 + strainrate.yy**2 + 2. * strainrate.xy**2)
+    md.results.strainrate = strainrate
+
+    deviatoricstress = results()
+    deviatoricstress.xx = tau_xx
+    deviatoricstress.yy = tau_yy
+    deviatoricstress.xy = tau_xy
+    deviatoricstress.principalvalue1 = valuesstress[:, 0]
+    deviatoricstress.principalaxis1 = directionsstress[:, 1:2]
+    deviatoricstress.principalvalue2 = valuesstress[:, 1]
+    deviatoricstress.principalaxis2 = directionsstress[:, 2:4]
+    deviatoricstress.effectivevalue = 1. / np.sqrt(2.) * np.sqrt(stress.xx**2 + stress.yy**2 + 2. * stress.xy**2)
+    md.results.deviatoricstress = deviatoricstress
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/newforcing.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/newforcing.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/newforcing.m	(revision 27955)
@@ -0,0 +1,35 @@
+function forcing=newforcing(t0,t1,deltaT,f0,f1,nodes)
+%NEWFORCING - Build forcing that extends temporally from t0 to t1, and in 
+%magnitude from f0 to f1. Equal time and magnitude spacing. 
+%
+%   Usage: forcing=newforcing(t0,t1,deltaT,f0,f1,nodes);  
+%   
+%   Where: 
+%      t0:t1: time interval. 
+%      deltaT: time step
+%      f0:f1: magnitude interval.
+%      nodes: number of vertices where we have a temporal forcing
+%
+%   Example: 
+%      md.smb.mass_balance=newforcing(md.timestepping.start_time,md.timestepping.final_time,md.timestepping.time_step,-1,+2,md.mesh.numberofvertices);
+%
+
+	%some cheks:
+	if nargin~=6, error('newforcing error message: should have 5 input arguments'); end
+
+	%Number of time steps: 
+	nsteps=(t1-t0)/deltaT+1;
+
+	%delta forcing:
+	deltaf=(f1-f0)/(nsteps-1);
+
+	%creates times:
+	times=t0:deltaT:t1;
+
+	%create forcing:
+	forcing=(f0:deltaf:f1);
+
+	%replicate for all nodes
+	forcing=repmat(forcing,nodes+1,1);
+	forcing(end,:)=times;
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/newforcing.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/newforcing.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/newforcing.py	(revision 27955)
@@ -0,0 +1,43 @@
+import numpy as np
+
+
+def newforcing(t0, t1, deltaT, f0, f1, nodes):
+    '''
+    NEWFORCING - Build forcing that extends temporally from t0 to t1, and in magnitude from f0 to f1. Equal time
+                    and magnitude spacing.
+
+    Usage: forcing = newforcing(t0, t1, deltaT, f0, f1, nodes);
+    
+    Where:
+        t0:t1: time interval.
+        deltaT: time step
+        f0:f1: magnitude interval.
+        nodes: number of vertices where we have a temporal forcing
+
+    Example:
+        md.smb.mass_balance = newforcing(
+            md.timestepping.start_time, 
+            md.timestepping.final_time, 
+            md.timestepping.time_step, 
+            -1, 
+            +2, 
+            md.mesh.numberofvertices
+            )
+    '''
+    
+    #Number of time steps:
+    nsteps = (t1 - t0) / deltaT + 1
+
+    #delta forcing:
+    deltaf = (f1 - f0) / (nsteps - 1)
+
+    #creates times:
+    times = np.arange(t0, t1 + deltaT, deltaT)  #Add deltaT to fix python / matlab discrepency
+
+    #create forcing:
+    forcing = np.arange(f0, f1 + deltaf, deltaf)  #Add deltaf to fix python / matlab discrepency
+
+    #replicate for all nodes
+    forcing = np.tile(forcing, (nodes + 1, 1))
+    forcing[-1, :] = times
+    return forcing
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/robintemperature.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/robintemperature.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/robintemperature.m	(revision 27955)
@@ -0,0 +1,42 @@
+function tprofile=robintemperature(heatflux,accumrate,thickness,surftemp,z)
+%ROBINTEMPERATURE - compute vertical temperature profile of an ice sheet (Robin, 1955)
+%
+%	This routine computes the vertical temperature profile of an 
+%	ice sheet according to the solution of Robin (1955), neglecting 
+%	friction and horizontal advection.  The solution is thus most
+%  appropriate at an ice divide.
+%
+%	The coordinate system for the solution runs from z=0 at the base 
+%	to z=H at the surface of the ice.
+%
+%	Parameters (SI units):
+%		-heatflux	Geothermal heat flux (W m^-2)
+%		-accumrate	Surface accumulation rate (m s^-1 ice equivalent)
+%		-thickness	Ice thickness (m)
+%		-surftemp	Surface temperature (K)
+%		-z				Vertical position at which to calculate temperature
+%						(z can be a scalar or a vector)
+%
+%	Returns a vector the same length as z containing the temperature in K
+%
+%	Usage:
+%		tprofile=robintemperature(heatflux,accumrate,thickness,surftemp,z)
+
+%checks
+if nargin~=5
+	help robintemperature
+	error('bad usage - wrong number of arguments.')
+end
+
+%some constants (from Holland and Jenkins, 1999)
+alphaT=1.14e-6; % thermal diffusivity (m^2 s^-1)
+c=2009; % specific heat capacity (J kg^-1 K^-1)
+rho=917; % ice density (kg m^-3)
+
+%create vertical coordinate variable
+zstar=sqrt(2*alphaT*thickness./accumrate);
+
+tprofile=surftemp+sqrt(2*thickness*pi./accumrate/alphaT).*(-heatflux)/2/rho/c.*(erf(z./zstar)-erf(thickness./zstar));
+
+% difference between surface and base temperature for check (Cuffey2010 p412):
+% tprofile-surftemp
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/robintemperature.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/robintemperature.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/robintemperature.py	(revision 27955)
@@ -0,0 +1,43 @@
+import numpy as np
+from scipy.special import erf
+
+
+def robintemperature(heatflux, accumrate, thickness, surftemp, z):
+    '''
+    Compute vertical temperature profile of an ice sheet (Robin, 1955)
+
+    This routine computes the vertical temperature profile of an ice sheet
+    according to the solution of Robin (1955), neglecting friction and
+    horizontal advection.  The solution is thus most appropriate at an ice
+    divide.
+
+    The coordinate system for the solution runs from z = 0 at the base
+    to z = H at the surface of the ice.
+
+    Parameters (SI units):
+         - heatflux    Geothermal heat flux (W m^-2)
+         - accumrate    Surface accumulation rate (m s^-1 ice equivalent)
+         - thickness    Ice thickness (m)
+         - surftemp    Surface temperature (K)
+         - z                Vertical position at which to calculate temperature
+                        (z can be a scalar or a vector)
+
+    Returns a vector the same length as z containing the temperature in K
+
+    Usage:
+        tprofile = robintemperature(heatflux, accumrate, thickness, surftemp, z)
+    '''
+
+    # some constants (from Holland and Jenkins, 1999)
+    alphaT = 1.14e-6  # thermal diffusivity (m^2 s^-1)
+    c = 2009.  # specific heat capacity (J kg^-1 K^-1)
+    rho = 917.  # ice density (kg m^-3)
+
+    #create vertical coordinate variable
+    zstar = np.sqrt(2. * alphaT * thickness / accumrate)
+
+    tprofile = surftemp + np.sqrt(2. * thickness * np.pi / accumrate / alphaT) * (-heatflux) / 2. / rho / c * (erf(z / zstar) - erf(thickness / zstar))
+
+    return tprofile
+    # difference between surface and base temperature for check (Cuffey2010 p412):
+    # print tprofile-surftemp
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/shear2d.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/shear2d.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/shear2d.m	(revision 27955)
@@ -0,0 +1,23 @@
+function [sx,sy,sxy,s]=shear2d(md)
+%SHEAR2D - computes 2d strain rate
+%
+%   This routine computes the strain rate of 2d models
+%
+%   Usage:
+%      [sx,sy,sxy,s]=shear2d(md);
+%      s=shear2d(md);
+
+[alpha beta]=GetNodalFunctionsCoeff(md.mesh.elements,md.mesh.x,md.mesh.y); 
+
+summation=[1;1;1];
+sx=(md.initialization.vx(md.mesh.elements).*alpha)*summation;
+uy=(md.initialization.vx(md.mesh.elements).*beta)*summation;
+vx=(md.initialization.vy(md.mesh.elements).*alpha)*summation;
+sy=(md.initialization.vy(md.mesh.elements).*beta)*summation;						
+sxy=(uy+vx)/2;
+s=sqrt(sx.^2+sy.^2+sxy.^2+sx.*sy);
+
+%if user requested only one output, it must be the norm
+if nargout==1,
+	sx=s;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/steadystateiceshelftemp.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/steadystateiceshelftemp.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/steadystateiceshelftemp.m	(revision 27955)
@@ -0,0 +1,60 @@
+function temperature=steadystateiceshelftemp(md,surfacetemp,basaltemp)
+%STEADYSTATEICESHELFTEMP - compute depth-averaged steady-state temperature of an ice shelf 
+%
+%   This routine computes the depth-averaged temperature accounting for vertical advection 
+%   and diffusion of heat into the base of the ice shelf as a function of surface and 
+%   basal temperature and the basal melting rate.  Horizontal advection is ignored.
+%   The solution is a depth-averaged version of Equation 25 in Holland and Jenkins (1999).
+%
+%	 In addition to supplying md, the surface and basal temperatures of the ice shelf must
+%	 be supplied in degrees Kelvin.
+%
+%	 The model md must also contain the fields: 
+%	 md.geometry.thickness
+%	 md.basalforcings.floatingice_melting_rate (positive for melting, negative for freezing)
+
+%   Usage:
+%      temperature=steadystateiceshelftemp(md,surfacetemp,basaltemp)
+
+if (length(md.geometry.thickness)~=md.mesh.numberofvertices)
+	error(['steadystateiceshelftemp error message: thickness should have a length of ' num2str(md.mesh.numberofvertices)])
+end
+
+%surface and basal temperatures in degrees C
+if (length(surfacetemp)~=md.mesh.numberofvertices)
+	error(['steadystateiceshelftemp error message: surfacetemp should have a length of ' num2str(md.mesh.numberofvertices)])
+end
+
+if (length(basaltemp)~=md.mesh.numberofvertices)
+	error(['steadystateiceshelftemp error message: basaltemp should have a length of ' num2str(md.mesh.numberofvertices)])
+end
+
+% Convert temps to Celsius for Holland and Jenkins (1999) equation
+Ts=-273.15+surfacetemp;
+Tb=-273.15+basaltemp;
+
+Hi=md.geometry.thickness;
+ki=1.14e-6*md.constants.yts; % ice shelf thermal diffusivity from Holland and Jenkins (1999) converted to m^2/yr 
+
+%vertical velocity of ice shelf, calculated from melting rate 
+wi=md.materials.rho_water/md.materials.rho_ice.*md.basalforcings.floatingice_melting_rate; 
+
+%temperature profile is linear if melting rate is zero, depth-averaged temp is simple average in this case
+temperature=(Ts+Tb)/2;  % where wi~=0
+
+pos=find(abs(wi)>=1e-4); % to avoid division by zero
+
+%calculate depth-averaged temperature (in Celsius)
+temperature(pos)=-( (Tb(pos)-Ts(pos))*ki./wi(pos) + Hi(pos).*Tb(pos) - (Hi(pos).*Ts(pos) + (Tb(pos)-Ts(pos))*ki./wi(pos)).*exp(Hi(pos).*wi(pos)/ki) )./( Hi(pos).*(exp(Hi(pos).*wi(pos)/ki)-1));
+%temperature(pos)=-( ((Tb(pos)-Ts(pos))*ki./wi(pos) + Hi(pos).*Tb(pos))./exp(Hi(pos).*wi(pos)/ki) - Hi(pos).*Ts(pos) + (Tb(pos)-Ts(pos))*ki./wi(pos))./( Hi(pos).*(1-exp(-Hi(pos).*wi(pos)/ki)));
+
+%temperature should not be less than surface temp
+pos=find(temperature<Ts);
+temperature(pos)=Ts(pos);
+
+% NaN where melt rates are too high (infinity/infinity in exponential)
+pos=find(isnan(temperature));
+temperature(pos)=Ts(pos);
+
+%convert to Kelvin
+temperature=temperature+273.15;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/steadystateiceshelftemp.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/steadystateiceshelftemp.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/steadystateiceshelftemp.py	(revision 27955)
@@ -0,0 +1,65 @@
+import numpy as np
+
+
+def steadystateiceshelftemp(md, surfacetemp, basaltemp):
+    """
+    Compute the depth - averaged steady - state temperature of an ice shelf
+    This routine computes the depth - averaged temperature accounting for vertical advection
+    and diffusion of heat into the base of the ice shelf as a function of surface and basal
+    temperature and the basal melting rate.  Horizontal advection is ignored.
+   The solution is a depth - averaged version of Equation 25 in Holland and Jenkins (1999).
+
+    In addition to supplying md, the surface and basal temperatures of the ice shelf must be supplied in degrees Kelvin.
+
+    The model md must also contain the fields:
+    md.geometry.thickness
+    md.basalforcings.floatingice_melting_rate (positive for melting, negative for freezing)
+
+   Usage:
+      temperature = steadystateiceshelftemp(md, surfacetemp, basaltemp)
+    """
+    if len(md.geometry.thickness) != md.mesh.numberofvertices:
+        raise ValueError('steadystateiceshelftemp error message: thickness should have a length of ' + md.mesh.numberofvertices)
+
+    #surface and basal temperatures in degrees C
+    if len(surfacetemp) != md.mesh.numberofvertices:
+        raise ValueError('steadystateiceshelftemp error message: surfacetemp should have a length of ' + md.mesh.numberofvertices)
+
+    if len(basaltemp) != md.mesh.numberofvertices:
+        raise ValueError('steadystateiceshelftemp error message: basaltemp should have a length of ' + md.mesh.numberofvertices)
+
+    # Convert temps to Celsius for Holland and Jenkins (1999) equation
+    Ts = -273.15 + surfacetemp
+    Tb = -273.15 + basaltemp
+
+    Hi = md.geometry.thickness
+    ki = 1.14e-6 * md.constants.yts  # ice shelf thermal diffusivity from Holland and Jenkins (1999) converted to m^2 / yr
+
+    #vertical velocity of ice shelf, calculated from melting rate
+    wi = md.materials.rho_water / md.materials.rho_ice * md.basalforcings.floatingice_melting_rate
+
+    #temperature profile is linear if melting rate is zero, depth - averaged temp is simple average in this case
+    temperature = (Ts + Tb) / 2  # where wi~=0
+
+    pos = np.nonzero(abs(wi) >= 1e-4)  # to avoid division by zero
+
+    np.seterr(over='raise', divide='raise')  # raise errors if floating point exceptions are encountered in following calculation
+    #calculate depth - averaged temperature (in Celsius)
+    try:
+        temperature[pos] = -((Tb[pos] - Ts[pos]) * ki / wi[pos] + Hi[pos] * Tb[pos] - (Hi[pos] * Ts[pos] + (Tb[pos] - Ts[pos]) * ki / wi[pos]) * np.exp(Hi[pos] * wi[pos] / ki)) / (Hi[pos] * (np.exp(Hi[pos] * wi[pos] / ki) - 1))
+    except FloatingPointError:
+        print('Warning: steadystateiceshelf.py: overflow encountered in multipy/divide/exp, trying another formulation.')
+        temperature[pos] = -(((Tb[pos] - Ts[pos]) * ki / wi[pos] + Hi[pos] * Tb[pos]) / np.exp(Hi[pos] * wi[pos] / ki) - Hi[pos] * Ts[pos] + (Tb[pos] - Ts[pos]) * ki / wi[pos]) / (Hi[pos] * (1 - np.exp(-Hi[pos] * wi[pos] / ki)))
+
+    #temperature should not be less than surface temp
+    pos = np.nonzero(temperature < Ts)
+    temperature[pos] = Ts[pos]
+
+    # NaN where melt rates are too high (infinity / infinity in exponential)
+    pos = np.nonzero(np.isnan(temperature))
+    temperature[pos] = Ts[pos]
+
+    #convert to Kelvin
+    temperature = temperature + 273.15
+
+    return temperature
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/strainrateuncert.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/strainrateuncert.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/strainrateuncert.m	(revision 27955)
@@ -0,0 +1,73 @@
+function md=strainratuncert(md,vx,vy,dvx,dvy)
+%STRAINRATEUNCERT - compute uncertainty in strain rate components
+%
+%   this routine computes the uncertainties in the strain rate tensor
+%	 components given the uncertainty in surface velocity data.
+%   The results are stored in md.results
+%
+%	 'dvx' and 'dvy' are velocity errors in x and y components in m/yr.  
+%   These can either be scalars or arrays of length md.mesh.numberofvertices
+%
+%   Usage:
+%      md=strainrateuncert(md,vx,vy,dv)
+%
+%   Example:
+%      md=mechanicalproperties(md,md.initialization.vx,md.initialization.vy,5);
+%      md=mechanicalproperties(md,md.inversion.vx_obs,md.inversion.vy_obs,dv);
+
+%some checks
+if length(vx)~=md.mesh.numberofvertices | length(vy)~=md.mesh.numberofvertices,
+	error(['the input velocity should be of size ' num2str(md.mesh.numberofvertices) '!'])
+end
+if length(dvx)==1,
+	dvx=dvx*ones(md.mesh.numberofelements,1);
+end
+if length(dvx)~=md.mesh.numberofelements,
+	error(['the velocity error dvx should be of size ' num2str(md.mesh.numberofelements) ' or 1!'])
+end
+if length(dvy)==1,
+	dvy=dvy*ones(md.mesh.numberofelements,1);
+end
+if length(dvy)~=md.mesh.numberofelements,
+	error(['the velocity error dvy should be of size ' num2str(md.mesh.numberofelements) ' or 1!'])
+end
+if dimension(md.mesh)~=2,
+	error('only 2d model supported yet');
+end
+if any(md.flowequation.element_equation~=2),
+	disp('Warning: the model has some non SSA elements. These will be treated like SSA''s elements');
+end
+
+%initialization
+index=md.mesh.elements;
+summation=[1;1;1];
+dvxlist=dvx(index);
+dvylist=dvy(index);
+
+%compute nodal functions coefficients N(x,y)=alpha x + beta y +gamma
+[alpha beta]=GetNodalFunctionsCoeff(index,md.mesh.x,md.mesh.y);
+
+strainrateuncert=struct('xx',[],'yy',[],'xy',[],'principalvalue1',[],'principalvalue2',[],'effectivevalue',[]);
+
+strainrateuncert.xx=sqrt((dvxlist.*alpha).^2*summation);
+strainrateuncert.yy=sqrt((dvylist.*beta).^2*summation);
+strainrateuncert.xy=0.5*sqrt((dvxlist.*beta).^2*summation+(dvylist.*alpha).^2*summation);
+
+exx=md.results.strainrate.xx; 
+eyy=md.results.strainrate.yy;
+exy=md.results.strainrate.xy;
+p1a=strainrateuncert.xx.*(0.5+0.25*(((exx-eyy)/2).^2+exy.^2).^(-1./2).*(exx-eyy));
+p2a=strainrateuncert.yy.*(0.5-0.25*(((exx-eyy)/2).^2+exy.^2).^(-1./2).*(exx-eyy));
+p3a=strainrateuncert.xy.*((((exx-eyy)/2).^2+exy.^2).^(-1./2).*exy);
+p1b=strainrateuncert.xx.*(0.5-0.25*(((exx-eyy)/2).^2+exy.^2).^(-1./2).*(exx-eyy));
+p2b=strainrateuncert.yy.*(0.5+0.25*(((exx-eyy)/2).^2+exy.^2).^(-1./2).*(exx-eyy));
+p3b=strainrateuncert.xy.*(-(((exx-eyy)/2).^2+exy.^2).^(-1./2).*exy);
+strainrateuncert.principalvalue1=sqrt(p1a.^2+p2a.^2+p3a.^2);
+strainrateuncert.principalvalue2=sqrt(p1b.^2+p2b.^2+p3b.^2);
+
+effa=strainrateuncert.xx/sqrt(2).*(exx.^2+eyy.^2+2*exy.^2).^(-1./2).*exx;
+effb=strainrateuncert.yy/sqrt(2).*(exx.^2+eyy.^2+2*exy.^2).^(-1./2).*eyy;
+effc=2*strainrateuncert.xy/sqrt(2).*(exx.^2+eyy.^2+2*exy.^2).^(-1./2).*exy;
+strainrateuncert.effectivevalue=sqrt(effa.^2+effb.^2+effc.^2);
+
+md.results.strainrateuncert=strainrateuncert;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/thomasparams.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/thomasparams.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/thomasparams.m	(revision 27955)
@@ -0,0 +1,151 @@
+function [alpha,beta,theta,ex,sigxx]=thomasparams(md,varargin)
+%THOMASPARAMS - compute Thomas' geometric parameters for an ice shelf 
+%
+%	 This routine computes geometric parameters representing ratios between
+%	 components of the horizontal strain rate tensor for an ice shelf, as
+%	 originally developed in Thomas (1973).  The model must contain computed
+%	 strain rates, either from observed or modeled ice velocities.
+%
+%   Available options:
+%	 -'eq'			: analytical equation to use in the calculation.  Must be one of:
+%				'Thomas' for a 2D ice shelf, taking into account full strain rate
+%					tensor (default)
+%				'Weertman1D' for a confined ice shelf free to flow in one direction
+%				'Weertman2D' for an unconfined ice shelf free to spread in any direction
+%
+%	 -'smoothing'	: an integer smoothing parameter for the averaging function
+%						(default 0) Type 'help averaging' for more information on its usage.
+%
+%	 -'coordsys'	: coordinate system for calculating the strain rate
+%						components. Must be one of:
+%				'longitudinal': x axis aligned along a flowline at every point (default)
+%				'principal': x axis aligned along maximum principal strain rate
+%					at every point
+%				'xy': x and y axes same as in polar stereographic projection 
+%
+%   Return values: 
+%
+%		'alpha' which is the ratio e_yy/e_xx between components of the strain
+%		rate tensor
+%
+%		'beta' which is the ratio e_xy/e_xx between components of the strain rate
+%		tensor
+%
+%		'theta' which is a combination of alpha and beta arising from the form of
+%		the equivalent stress
+%
+%		'exx' is the strain rate along a coordinate system defined by 'coordsys' 
+%
+%		'sigxx' is the deviatoric stress along a coordinate system defined by 'coordsys' 
+%
+%   Usage: [alpha,beta,theta,exx,sigxx]=ThomasParams(md,options)
+%
+%   Example: [alpha,beta,theta,exx,sigxx]=ThomasParams(md,'eq','Thomas','smoothing',2,'coordsys','longitudinal')
+
+%some checks
+if (nargin<4)
+	help ThomasParams
+	error('bad usage');
+end
+if isempty(fieldnames(md.results)),
+	error(['md.results.strainrate is not present.  Calculate using md=mechanicalproperties(md,vx,vy)'])
+end
+if dimension(md.mesh)~=2,
+	error('only 2d model supported currently');
+end
+if any(md.flowequation.element_equation~=2),
+	disp('Warning: the model has some non SSA elements. These will be treated like SSA elements');
+end
+
+% process options
+options = pairoptions(varargin{:});
+eq = getfieldvalue(options,'eq','Thomas');
+smoothing = getfieldvalue(options,'smoothing',0);
+coordsys = getfieldvalue(options,'coordsys','longitudinal');
+
+% average element strain rates onto vertices
+e1=averaging(md,md.results.strainrate.principalvalue1,smoothing)/md.constants.yts; % convert to s^-1
+e2=averaging(md,md.results.strainrate.principalvalue2,smoothing)/md.constants.yts;
+exx=averaging(md,md.results.strainrate.xx,smoothing)/md.constants.yts;
+eyy=averaging(md,md.results.strainrate.yy,smoothing)/md.constants.yts;
+exy=averaging(md,md.results.strainrate.xy,smoothing)/md.constants.yts;
+
+% checks: any of e1 or e2 equal to zero?
+pos=find(e1==0);
+if any(pos==1)
+	disp('WARNING: first principal strain rate equal to zero.  Value set to 1e-13 s^-1');
+	e1(pos)=1e-13;
+end
+pos=find(e2==0);
+if any(pos==1)
+	disp('WARNING: second principal strain rate equal to zero.  Value set to 1e-13 s^-1');
+	e2(pos)=1e-13;
+end
+
+% rheology
+n=averaging(md,md.materials.rheology_n,0);
+B=md.materials.rheology_B;
+
+switch coordsys
+	case 'principal'
+		b=zeros(md.mesh.numberofvertices,1);
+		ex=e1;
+		a=e2./e1;
+		pos=find(e1<0 & e2>0); % longitudinal compression and lateral tension
+		a(pos)=e1(pos)./e2(pos);
+		ex(pos)=e2(pos);
+		pos2=find(e1<0 & e2<0 & abs(e1)<abs(e2)); % lateral and longitudinal compression
+		a(pos2)=e1(pos2)./e2(pos2);
+		ex(pos2)=e2(pos2);
+		pos3=find(e1>0 & e2>0 & abs(e1)<abs(e2)); % lateral and longitudinal tension
+		a(pos3)=e1(pos3)./e2(pos3);
+		ex(pos3)=e2(pos3);
+		id=find(e1<0 & e2<0);
+		a(id)=-a(id); % where both strain rates are compressive, enforce negative alpha
+		sigxx=(abs(ex)./((1+a+a.^2).^((n-1)/2))).^(1./n).*B;
+		%mask=ismember(1:md.mesh.numberofvertices,id);
+		%plotmodel(md,'data',ex,'mask',mask)
+	case 'xy'
+		ex=exx;
+		a=eyy./exx;
+		b=exy./exx;
+	case 'longitudinal'
+		% using longitudinal strain rates defined by observed velocity vector
+		velangle=atan(md.initialization.vy./md.initialization.vx);
+		pos=find(md.initialization.vx==0);
+		velangle(pos)=pi/2;
+		ex=0.5*(exx+eyy)+0.5*(exx-eyy).*cos(2*velangle)+exy.*sin(2*velangle);
+		ey=exx+eyy-ex; % trace of strain rate tensor is invariant
+		exy=-0.5*(exx-eyy).*sin(2*velangle)+exy.*cos(2*velangle);
+		a=ey./ex;
+		b=exy./ex;
+		%pos=find(ex<0 & ey<0);
+		%a(pos)=-a(pos);
+		%sigxx=(abs(ex)./((1+a+a.^2+b.^2).^((n-1)/2))).^(1./n).*B;
+		sigxx=abs(ex).^(1./n-1).*ex./((1+a+a.^2+b.^2).^((n-1)./(2*n))).*B;
+	otherwise
+		error('argument passed to "coordsys" not valid');
+end
+
+% a < -1 in areas of strong lateral compression or longitudinal compression and
+% theta flips sign at a = -2
+pos=find(abs((abs(a)-2))<1e-3);
+if length(pos)>0,
+	disp(['Warning: ', num2str(length(pos)), ' vertices have alpha within 1e-3 of -2'])
+end
+a(pos)=-2+1e-3;
+
+switch eq
+	case 'Weertman1D'
+		theta=1./8;
+		a=zeros(md.mesh.numberofvertices,1);
+	case 'Weertman2D'
+		theta=1./9;
+		a=ones(md.mesh.numberofvertices,1);
+	case 'Thomas'
+		theta=((1+a+a.^2+b.^2).^((n-1)/2))./(abs(2+a).^n);
+	otherwise
+		error('argument passed to "eq" not valid.  Type "help zinv" for usage');
+end
+alpha=a;
+beta=b;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mech/thomasparams.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mech/thomasparams.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mech/thomasparams.py	(revision 27955)
@@ -0,0 +1,149 @@
+import numpy as np
+from averaging import averaging
+
+
+def thomasparams(md, **kwargs):
+    '''
+    compute Thomas' geometric parameters for an ice shelf
+
+    This routine computes geometric parameters representing ratios between
+    components of the horizontal strain rate tensor for an ice shelf, as
+    originally developed in Thomas (1973).  The model must contain computed
+    strain rates, either from observed or modeled ice velocities.
+
+   Available options:
+     - eq            : analytical equation to use in the calculation.  Must be one of:
+                'Thomas' for a 2D ice shelf, taking into account full strain rate
+                    tensor (default)
+                'Weertman1D' for a confined ice shelf free to flow in one direction
+                'Weertman2D' for an unconfined ice shelf free to spread in any direction
+
+     - smoothing    : an integer smoothing parameter for the averaging function
+                        (default 0) Type 'help averaging' for more information on its usage.
+
+     - coordsys    : coordinate system for calculating the strain rate
+                        components. Must be one of:
+                'longitudinal': x axis aligned along a flowline at every point (default)
+                'principal': x axis aligned along maximum principal strain rate
+                    at every point
+                'xy': x and y axes same as in polar stereographic projection
+
+   Return values:
+
+        'alpha' which is the ratio e_yy / e_xx between components of the strain
+        rate tensor
+
+        'beta' which is the ratio e_xy / e_xx between components of the strain rate
+        tensor
+
+        'theta' which is a combination of alpha and beta arising from the form of
+        the equivalent stress
+
+        'exx' is the strain rate along a coordinate system defined by 'coordsys'
+
+        'sigxx' is the deviatoric stress along a coordinate system defined by 'coordsys'
+
+   Usage:
+        alpha, beta, theta, exx, sigxx = thomasparams(md)
+
+   Example:
+        alpha, beta, theta, exx, sigxx = thomasparams(md, eq = 'Thomas', smoothing = 2, coordsys = 'longitudinal')
+    '''
+
+    #unpack kwargs
+    eq = kwargs.pop('eq', 'Thomas')
+    if 'eq' in kwargs:
+        del kwargs['eq']
+    smoothing = kwargs.pop('smoothing', 0)
+    if 'smoothing' in kwargs:
+        del kwargs['smoothing']
+    coordsys = kwargs.pop('coordsys', 'longitudinal')
+    if 'coordsys' in kwargs:
+        del kwargs['coordsys']
+    assert len(kwargs) == 0, 'error, unexpected or misspelled kwargs'
+
+    # some checks
+    if not hasattr(md.results, 'strainrate'):
+        raise Exception('md.results.strainrate not present.  Calculate using md = mechanicalproperties(md, vx, vy)')
+    if '2d' not in md.mesh.__doc__:
+        raise Exception('only 2d (planview) model supported currently')
+    if any(md.flowequation.element_equation != 2):
+        raise Exception('Warning: the model has some non - SSA elements.  These will be treated like SSA elements')
+
+    # average element strain rates onto vertices
+    e1 = averaging(md, md.results.strainrate.principalvalue1, smoothing) / md.constants.yts  # convert to s^-1
+    e2 = averaging(md, md.results.strainrate.principalvalue2, smoothing) / md.constants.yts
+    exx = averaging(md, md.results.strainrate.xx, smoothing) / md.constants.yts
+    eyy = averaging(md, md.results.strainrate.yy, smoothing) / md.constants.yts
+    exy = averaging(md, md.results.strainrate.xy, smoothing) / md.constants.yts
+
+    # checks: any of e1 or e2 equal to zero?
+    pos = np.nonzero(e1 == 0)
+    if np.any(pos == 1):
+        print('WARNING: first principal strain rate equal to zero.  Value set to 1e-13 s^-1')
+        e1[pos] = 1.e-13
+    pos = np.nonzero(e2 == 0)
+    if np.any(pos == 1):
+        print('WARNING: second principal strain rate equal to zero.  Value set to 1e-13 s^-1')
+        e2[pos] = 1.e-13
+
+    # rheology
+    n = averaging(md, md.materials.rheology_n, 0)
+    B = md.materials.rheology_B
+
+    if coordsys == 'principal':
+        b = np.zeros((md.mesh.numberofvertices, ))
+        ex = e1
+        a = e2 / e1
+        pos = np.nonzero(np.logical_and(e1 < 0, e2 > 0))  # longitudinal compression and lateral tension
+        a[pos] = e1[pos] / e2[pos]
+        ex[pos] = e2[pos]
+        pos2 = np.nonzero(e1 < 0 & e2 < 0 & np.abs(e1) < np.abs(e2))  # lateral and longitudinal compression
+        a[pos2] = e1[pos2] / e2[pos2]
+        ex[pos2] = e2[pos2]
+        pos3 = np.nonzero(e1 > 0 & e2 > 0 & np.abs(e1) < np.abs(e2))  # lateral and longitudinal tension
+        a[pos3] = e1[pos3] / e2[pos3]
+        ex[pos3] = e2[pos3]
+        ind = np.nonzero(e1 < 0 & e2 < 0)
+        a[ind] = -a[ind]  # where both strain rates are compressive, enforce negative alpha
+        sigxx = (np.abs(ex) / ((1. + a + a**2)**((n - 1.) / 2.)))**(1. / n) * B
+    elif coordsys == 'xy':
+        ex = exx
+        a = eyy / exx
+        b = exy / exx
+    elif coordsys == 'longitudinal':
+        # using longitudinal strain rates defined by observed velocity vector
+        velangle = np.arctan(md.initialization.vy / md.initialization.vx)
+        pos = np.nonzero(md.initialization.vx == 0)
+        velangle[pos] = np.pi / 2
+        ex = 0.5 * (exx + eyy) + 0.5 * (exx - eyy) * np.cos(2. * velangle) + exy * np.sin(2. * velangle)
+        ey = exx + eyy - ex  # trace of strain rate tensor is invariant
+        exy = -0.5 * (exx - eyy) * np.sin(2. * velangle) + exy * np.cos(2. * velangle)
+        a = ey / ex
+        b = exy / ex
+        sigxx = abs(ex)**(1. / n - 1.) * ex / ((1. + a + a**2 + b**2)**((n - 1.) / (2. * n))) * B
+    else:
+        raise ValueError('argument passed to "coordsys" not valid')
+
+    # a < -1 in areas of strong lateral compression or longitudinal compression and
+    # theta flips sign at a = -2
+    pos = np.nonzero(np.abs((np.abs(a) - 2.)) < 1.e-3)
+    if len(pos) > 0:
+        print(('Warning: ', len(pos), ' vertices have alpha within 1e-3 of -2'))
+    a[pos] = -2 + 1e-3
+
+    if eq == 'Weertman1D':
+        theta = 1. / 8
+        a = np.zeros((md.mesh.numberofvertices, ))
+    elif eq == 'Weertman2D':
+        theta = 1. / 9
+        a = np.ones((md.mesh.numberofvertices, ))
+    elif eq == 'Thomas':
+        theta = ((1. + a + a**2 + b**2)**((n - 1.) / 2.)) / (np.abs(2. + a)**n)
+    else:
+        raise ValueError('argument passed to "eq" not valid')
+
+    alpha = a
+    beta = b
+
+    return alpha, beta, theta, ex
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ComputeHessian.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ComputeHessian.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ComputeHessian.m	(revision 27955)
@@ -0,0 +1,60 @@
+function hessian=ComputeHessian(index,x,y,field,type)
+%COMPUTEHESSIAN - compute hessian matrix from a field
+%
+%   Compute the hessian matrix of a given field
+%   return the three components Hxx Hxy Hyy
+%   for each element or each node
+%
+%   Usage:
+%      hessian=ComputeHessian(index,x,y,field,type)
+%
+%   Example:
+%      hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,md.inversion.vel_obs,'node')
+
+%some variables
+numberofnodes=length(x);
+numberofelements=size(index,1);
+
+%some checks
+if length(field)~=numberofnodes & length(field)~=numberofelements,
+	error('ComputeHessian error message: the given field size not supported yet');
+end
+if ~strcmpi(type,'node') & ~strcmpi(type,'element'),
+	error('ComputeHessian error message: only ''node'' or ''element'' type supported yet');
+end
+
+%initialization
+line=index(:);
+linesize=3*numberofelements;
+
+%get areas and nodal functions coefficients N(x,y)=alpha x + beta y + gamma 
+[alpha beta]=GetNodalFunctionsCoeff(index,x,y);
+areas=GetAreas(index,x,y);
+
+%compute weights that hold the volume of all the element holding the node i
+weights=sparse(line,ones(linesize,1),repmat(areas,3,1),numberofnodes,1);
+
+%compute field on nodes if on elements
+if length(field)==numberofelements,
+	field=sparse(line,ones(linesize,1),repmat(areas.*field,3,1),numberofnodes,1)./weights ;
+end
+
+%Compute gradient for each element
+grad_elx=sum(field(index).*alpha,2); 
+grad_ely=sum(field(index).*beta,2);
+
+%Compute gradient for each node (average of the elements around)
+gradx=sparse(line,ones(linesize,1),repmat(areas.*grad_elx,3,1),numberofnodes,1);
+grady=sparse(line,ones(linesize,1),repmat(areas.*grad_ely,3,1),numberofnodes,1);
+gradx=gradx./weights;
+grady=grady./weights;
+
+%Compute hessian for each element
+hessian=[sum(gradx(index).*alpha,2) sum(grady(index).*alpha,2) sum(grady(index).*beta,2)];
+
+if strcmpi(type,'node')
+	%Compute Hessian on the nodes (average of the elements around)
+	hessian=[sparse(line,ones(linesize,1),repmat(areas.*hessian(:,1),3,1),numberofnodes,1)./weights ...
+		sparse(line,ones(linesize,1),repmat(areas.*hessian(:,2),3,1),numberofnodes,1)./weights ...
+		sparse(line,ones(linesize,1),repmat(areas.*hessian(:,3),3,1),numberofnodes,1)./weights ];
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ComputeHessian.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ComputeHessian.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ComputeHessian.py	(revision 27955)
@@ -0,0 +1,66 @@
+import numpy as np
+from GetNodalFunctionsCoeff import GetNodalFunctionsCoeff
+from GetAreas import GetAreas
+import MatlabFuncs as m
+
+
+def ComputeHessian(index, x, y, field, type):
+    """
+    COMPUTEHESSIAN - compute hessian matrix from a field
+
+       Compute the hessian matrix of a given field
+       return the three components Hxx Hxy Hyy
+       for each element or each node
+
+       Usage:
+          hessian = ComputeHessian(index, x, y, field, type)
+
+       Example:
+          hessian = ComputeHessian(md.mesh.elements, md.mesh.x, md.mesh.y, md.inversion.vel_obs, 'node')
+    """
+
+    #some variables
+    numberofnodes = np.size(x)
+    numberofelements = np.size(index, axis=0)
+
+    #some checks
+    if np.size(field) != numberofnodes and np.size(field) != numberofelements:
+        raise TypeError("ComputeHessian error message: the given field size not supported yet")
+    if not m.strcmpi(type, 'node') and not m.strcmpi(type, 'element'):
+        raise TypeError("ComputeHessian error message: only 'node' or 'element' type supported yet")
+
+    #initialization
+    line = index.reshape(-1, order='F')
+    linesize = 3 * numberofelements
+
+    #get areas and nodal functions coefficients N(x, y)=alpha x + beta y + gamma
+    [alpha, beta, dum] = GetNodalFunctionsCoeff(index, x, y)
+    areas = GetAreas(index, x, y)
+
+    #compute weights that hold the volume of all the element holding the node i
+    weights = m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile(areas, (1, 3)), numberofnodes, 1)
+
+    #compute field on nodes if on elements
+    if np.size(field, axis=0) == numberofelements:
+        field = m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile(areas * field, (1, 3)), numberofnodes, 1) / weights
+
+    #Compute gradient for each element
+    grad_elx = np.sum(field[index - 1] * alpha, axis=1)
+    grad_ely = np.sum(field[index - 1] * beta, axis=1)
+
+    #Compute gradient for each node (average of the elements around)
+    gradx = m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * grad_elx), (1, 3)), numberofnodes, 1)
+    grady = m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * grad_ely), (1, 3)), numberofnodes, 1)
+    gradx = gradx / weights
+    grady = grady / weights
+
+    #Compute hessian for each element
+    hessian = np.vstack((np.sum(gradx[index - 1, 0] * alpha, axis=1), np.sum(grady[index - 1, 0] * alpha, axis=1), np.sum(grady[index - 1, 0] * beta, axis=1))).T
+
+    if m.strcmpi(type, 'node'):
+        #Compute Hessian on the nodes (average of the elements around)
+        hessian = np.hstack((m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * hessian[:, 0]), (1, 3)), numberofnodes, 1) / weights,
+                             m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * hessian[:, 1]), (1, 3)), numberofnodes, 1) / weights,
+                             m.sparse(line, np.ones((linesize, 1), dtype=int), np.tile((areas * hessian[:, 2]), (1, 3)), numberofnodes, 1) / weights))
+
+    return hessian
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ComputeMetric.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ComputeMetric.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ComputeMetric.m	(revision 27955)
@@ -0,0 +1,66 @@
+function metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,pos)
+%COMPUTEMETRIC - compute metric from an Hessian
+%
+%   Usage:
+%      metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,pos)
+%      pos is contains the positions where the metric is wished to be maximized (water?)
+%
+%   Example:
+%      metric=ComputeMetric(hessian,2/9,10^-1,100,10^5,[])
+
+%first, find the eigen values of each line of H=[hessian(i,1) hessian(i,2); hessian(i,2) hessian(i,3)]
+a=hessian(:,1); b=hessian(:,2); d=hessian(:,3);
+lambda1=0.5*((a+d)+sqrt(4.*b.^2+(a-d).^2));
+lambda2=0.5*((a+d)-sqrt(4.*b.^2+(a-d).^2));
+pos1=find(lambda1==0.);
+pos2=find(lambda2==0.);
+pos3=find(b==0. & lambda1==lambda2);
+
+%Modify the eigen values to control the shape of the elements
+lambda1=min(max(abs(lambda1)*scale/epsilon,1./hmax^2),1./hmin^2);
+lambda2=min(max(abs(lambda2)*scale/epsilon,1./hmax^2),1./hmin^2);
+
+%compute eigen vectors
+norm1=sqrt(8.*b.^2+2.*(d-a).^2+2.*(d-a).*sqrt((a-d).^2+4.*b.^2));
+v1x=2.*b./norm1;
+v1y=((d-a)+sqrt((a-d).^2+4.*b.^2))./norm1;
+norm2=sqrt(8.*b.^2+2.*(d-a).^2-2.*(d-a).*sqrt((a-d).^2+4.*b.^2));
+v2x=2.*b./norm2;
+v2y=((d-a)-sqrt((a-d).^2+4.*b.^2))./norm2;
+
+v1x(pos3)=1.; v1y(pos3)=0.;
+v2x(pos3)=0.; v2y(pos3)=1.;
+
+%Compute new metric (for each node M=V*Lambda*V^-1)
+metric=full([(v1x.*v2y-v1y.*v2x).^(-1).*(lambda1.*v2y.*v1x-lambda2.*v1y.*v2x) ...
+	(v1x.*v2y-v1y.*v2x).^(-1).*(lambda1.*v1y.*v2y-lambda2.*v1y.*v2y) ...
+	(v1x.*v2y-v1y.*v2x).^(-1).*(-lambda1.*v2x.*v1y+lambda2.*v1x.*v2y)]);
+
+%some corrections for 0 eigen values
+metric(pos1,:)=repmat([1./hmax^2 0. 1./hmax^2],length(pos1),1);
+metric(pos2,:)=repmat([1./hmax^2 0. 1./hmax^2],length(pos2),1);
+
+%take care of water elements
+metric(pos,:)=repmat([1./hmax^2 0. 1./hmax^2],length(pos),1);
+
+%take care of NaNs if any (use Matlab eig in a loop)
+[pos posj]=find(isnan(metric)); clear posj;
+if ~isempty(pos),
+	fprintf(' %i %s',length(pos),'NaN found in the metric. Use Matlab routine...');
+	for i=1:length(pos)
+		H=[hessian(pos(i),1) hessian(pos(i),2)
+		hessian(pos(i),2) hessian(pos(i),3)];
+		[u,v]=eig(full(H));
+		lambda1=v(1,1);
+		lambda2=v(2,2);
+		v(1,1)=min(max(abs(lambda1)*scale/epsilon,1./hmax^2),1./hmin^2);
+		v(2,2)=min(max(abs(lambda2)*scale/epsilon,1./hmax^2),1./hmin^2);
+
+		metricTria=u*v*u^(-1);
+		metric(pos(i),:)=[metricTria(1,1) metricTria(1,2) metricTria(2,2)];
+	end
+end
+
+if any(isnan(metric)),
+	error('ComputeMetric error message: NaN in the metric despite our efforts...')
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ComputeMetric.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ComputeMetric.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ComputeMetric.py	(revision 27955)
@@ -0,0 +1,75 @@
+import numpy as np
+
+
+def ComputeMetric(hessian, scale, epsilon, hmin, hmax, pos):
+    """
+    COMPUTEMETRIC - compute metric from an Hessian
+
+       Usage:
+          metric = ComputeMetric(hessian, scale, epsilon, hmin, hmax, pos)
+          pos is contains the positions where the metric is wished to be maximized (water?)
+
+       Example:
+          metric = ComputeMetric(hessian, 2 / 9, 1.0e-1, 100, 1.0e5, [])
+    """
+
+    #first, find the eigen values of each line of H = [hessian(i, 1) hessian(i, 2); hessian(i, 2) hessian(i, 3)]
+    a = hessian[:, 0]
+    b = hessian[:, 1]
+    d = hessian[:, 2]
+    lambda1 = 0.5 * ((a + d) + np.sqrt(4. * b**2 + (a - d)**2))
+    lambda2 = 0.5 * ((a + d) - np.sqrt(4. * b**2 + (a - d)**2))
+    pos1 = np.nonzero(lambda1 == 0.)[0]
+    pos2 = np.nonzero(lambda2 == 0.)[0]
+    pos3 = np.nonzero(np.logical_and(b == 0., lambda1 == lambda2))[0]
+
+    #Modify the eigen values to control the shape of the elements
+    lambda1 = np.minimum(np.maximum(np.abs(lambda1) * scale / epsilon, 1. / hmax**2), 1. / hmin**2)
+    lambda2 = np.minimum(np.maximum(np.abs(lambda2) * scale / epsilon, 1. / hmax**2), 1. / hmin**2)
+
+    #compute eigen vectors
+    norm1 = np.sqrt(8. * b**2 + 2. * (d - a)**2 + 2. * (d - a) * np.sqrt((a - d)**2 + 4. * b**2))
+    v1x = 2. * b / norm1
+    v1y = ((d - a) + np.sqrt((a - d)**2 + 4. * b**2)) / norm1
+    norm2 = np.sqrt(8. * b**2 + 2. * (d - a)**2 - 2. * (d - a) * np.sqrt((a - d)**2 + 4. * b**2))
+    v2x = 2. * b / norm2
+    v2y = ((d - a) - np.sqrt((a - d)**2 + 4. * b**2)) / norm2
+
+    v1x[pos3] = 1.
+    v1y[pos3] = 0.
+    v2x[pos3] = 0.
+    v2y[pos3] = 1.
+
+    #Compute new metric (for each node M = V * Lambda * V^-1)
+
+    metric = np.vstack((((v1x * v2y - v1y * v2x)**(-1) * (lambda1 * v2y * v1x - lambda2 * v1y * v2x)).reshape(-1, ),
+                        ((v1x * v2y - v1y * v2x)**(-1) * (lambda1 * v1y * v2y - lambda2 * v1y * v2y)).reshape(-1, ),
+                        ((v1x * v2y - v1y * v2x)**(-1) * (-lambda1 * v2x * v1y + lambda2 * v1x * v2y)).reshape(-1, ))).T
+
+    #some corrections for 0 eigen values
+    metric[pos1, :] = np.tile(np.array([[1. / hmax**2, 0., 1. / hmax**2]]), (np.size(pos1), 1))
+    metric[pos2, :] = np.tile(np.array([[1. / hmax**2, 0., 1. / hmax**2]]), (np.size(pos2), 1))
+
+    #take care of water elements
+    metric[pos, :] = np.tile(np.array([[1. / hmax**2, 0., 1. / hmax**2]]), (np.size(pos), 1))
+
+    #take care of NaNs if any (use Numpy eig in a loop)
+    pos = np.nonzero(np.isnan(metric))[0]
+    if np.size(pos):
+        print((" %i NaN found in the metric. Use Numpy routine..." % np.size(pos)))
+        for posi in pos:
+            H = np.array([[hessian[posi, 0], hessian[posi, 1]], [hessian[posi, 1], hessian[posi, 2]]])
+            [v, u] = np.linalg.eig(H)
+            v = np.diag(v)
+            lambda1 = v[0, 0]
+            lambda2 = v[1, 1]
+            v[0, 0] = np.minimum(np.maximum(np.abs(lambda1) * scale / epsilon, 1. / hmax**2), 1. / hmin**2)
+            v[1, 1] = np.minimum(np.maximum(np.abs(lambda2) * scale / epsilon, 1. / hmax**2), 1. / hmin**2)
+
+            metricTria = np.dot(np.dot(u, v), np.linalg.inv(u))
+            metric[posi, :] = np.array([metricTria[0, 0], metricTria[0, 1], metricTria[1, 1]])
+
+    if np.any(np.isnan(metric)):
+        raise RunTimeError("ComputeMetric error message: NaN in the metric despite our efforts...")
+
+    return metric
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ElementsFromEdge.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ElementsFromEdge.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ElementsFromEdge.m	(revision 27955)
@@ -0,0 +1,15 @@
+function edgeelements=ElementsFromEdge(elements,A,B)
+%ELEMENTSFROMEDGE: find elements connected to one edge defined by nodes A and B
+%
+%   Usage: edgeelements=ElementsFromEdge(elements,A,B) 
+%
+%   Eg:    edgeelements=ElementsFromEdge(md.mesh.elements,tip1,tip2)
+%
+%
+edgeelements=find(...
+	(elements(:,1)==A & elements(:,2)==B )| ...
+	(elements(:,1)==A & elements(:,3)==B )| ...
+	(elements(:,2)==A & elements(:,3)==B )| ...
+	(elements(:,2)==A & elements(:,1)==B )| ...
+	(elements(:,3)==A & elements(:,1)==B )| ...
+	(elements(:,3)==A & elements(:,2)==B ));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ElementsFromEdge.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ElementsFromEdge.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ElementsFromEdge.py	(revision 27955)
@@ -0,0 +1,23 @@
+import numpy as np
+import PythonFuncs as p
+
+
+def ElementsFromEdge(elements, A, B):
+    """
+    ELEMENTSFROMEDGE: find elements connected to one edge defined by nodes A and B
+
+       Usage: edgeelements = ElementsFromEdge(elements, A, B)
+
+       Eg:    edgeelements = ElementsFromEdge(md.mesh.elements, tip1, tip2)
+
+    """
+
+    edgeelements = np.nonzero(
+        p.logical_or_n(np.logical_and(elements[:, 0] == A, elements[:, 1] == B),
+                       np.logical_and(elements[:, 0] == A, elements[:, 2] == B),
+                       np.logical_and(elements[:, 1] == A, elements[:, 2] == B),
+                       np.logical_and(elements[:, 1] == A, elements[:, 0] == B),
+                       np.logical_and(elements[:, 2] == A, elements[:, 0] == B),
+                       np.logical_and(elements[:, 2] == A, elements[:, 1] == B)))[0] + 1
+
+    return edgeelements
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ExportGmsh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ExportGmsh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ExportGmsh.m	(revision 27955)
@@ -0,0 +1,54 @@
+function ExportGmsh(md,filename)
+%EXPORTGMSH - export mesh to gmsh format
+%
+%   Usage:
+%      ExportGmsh(md,filename)
+
+t1=clock;fprintf('%s',['writing gmsh mesh file']);
+fid=fopen(filename,'w');
+
+%initialization
+fprintf(fid,'$MeshFormat \n');
+fprintf(fid,'2.2 0 8 \n');
+fprintf(fid,'$EndMeshFormat \n');
+fprintf(fid,'$Nodes \n');
+fprintf(fid,'%i \n',md.mesh.numberofvertices);
+np=0;
+%printing point positions
+for ii=1:md.mesh.numberofvertices
+	np = np+1;
+	fprintf(fid,'%g %14.7e %14.7e 0.0 \n',np,md.mesh.x(np),md.mesh.y(np));
+end
+
+fprintf(fid,'$EndNodes \n');
+fprintf(fid,'$Elements \n');
+fprintf(fid,'%i \n',md.mesh.numberofelements+size(md.mesh.segments,1));
+np=0;
+
+%printing elements caracteristics for boundaries
+
+for ii=1:size(md.mesh.segments,1)
+	np = np+1;
+	if(md.mesh.x(md.mesh.segments(np,1))==max(md.mesh.x(:))&&md.mesh.x(md.mesh.segments(np,2))==max(md.mesh.x(:))),
+		bc_id=1;
+	elseif(md.mesh.y(md.mesh.segments(np,1))==max(md.mesh.y(:))&&md.mesh.y(md.mesh.segments(np,2))==max(md.mesh.y(:))),
+		bc_id=2;
+	elseif(md.mesh.x(md.mesh.segments(np,1))==min(md.mesh.x(:))&&md.mesh.x(md.mesh.segments(np,2))==min(md.mesh.x(:))),
+		bc_id=3;
+	elseif(md.mesh.y(md.mesh.segments(np,1))==min(md.mesh.y(:))&&md.mesh.y(md.mesh.segments(np,2))==min(md.mesh.y(:))),
+		bc_id=4;
+	else
+		bc_id=5;
+  end
+  fprintf(fid,'%g 1 2 %g 1 %g %g \n',np,bc_id,md.mesh.segments(np,1),md.mesh.segments(np,2));
+end
+%and for the body
+body_id=1;
+for ii=1:md.mesh.numberofelements
+  np = np+1;
+  fprintf(fid,'%g 2 2 %g 3 %g %g %g \n',np,body_id,md.mesh.elements(ii,1),md.mesh.elements(ii,2),md.mesh.elements(ii,3));
+end
+fprintf(fid,'$EndElements \n');
+%close
+fclose(fid);
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ExportGmsh.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ExportGmsh.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ExportGmsh.py	(revision 27955)
@@ -0,0 +1,51 @@
+import numpy as np
+"""
+EXPORTGMSH - export mesh to gmsh format
+
+   Usage:
+      ExportGmsh(md,filename)
+"""
+
+
+def ExportGmsh(md, filename):
+
+    print('writing gmsh mesh file')
+    with open(filename, 'w+') as GmshFile:
+
+        #initialization
+        GmshFile.write('$MeshFormat \n')
+        GmshFile.write('2.2 0 8 \n')
+        GmshFile.write('$EndMeshFormat \n')
+        GmshFile.write('$Nodes \n')
+        GmshFile.write('{} \n'.format(md.mesh.numberofvertices))
+
+        #printing point positions
+        for j, eX in enumerate(md.mesh.x):
+            GmshFile.write('{:g} {:14.7e} {:14.7e} 0.0 \n'.format(j + 1, eX, md.mesh.y[j]))
+
+        GmshFile.write('$EndNodes \n')
+        GmshFile.write('$Elements \n')
+        GmshFile.write('{:d} \n'.format(md.mesh.numberofelements + np.shape(md.mesh.segments)[0]))
+
+        #printing elements caracteristics for boundaries
+        for ind, segment in enumerate(md.mesh.segments):
+            if md.mesh.x[segment[0]] == np.nanmax(md.mesh.x) and md.mesh.x[segment[1]] == np.nanmax(md.mesh.x):
+                bc_id = 1
+            elif md.mesh.y[segment[0]] == np.nanmax(md.mesh.y) and md.mesh.y[segment[1]] == np.nanmax(md.mesh.y):
+                bc_id = 2
+            elif md.mesh.x[segment[0]] == np.nanmin(md.mesh.x) and md.mesh.x[segment[1]] == np.nanmin(md.mesh.x):
+                bc_id = 3
+            elif md.mesh.y[segment[0]] == np.nanmin(md.mesh.y) and md.mesh.y[segment[1]] == np.nanmin(md.mesh.y):
+                bc_id = 4
+            else:
+                bc_id = 0
+
+            GmshFile.write('{:g} 1 2 {:g} 1 {:g} {:g} \n'.format(ind + 1, bc_id, segment[0], segment[1]))
+
+        #and for the body
+        body_id = 1
+        for elt, element in enumerate(md.mesh.elements):
+            GmshFile.write('{:g} 2 2 {:g} 3 {:g} {:g} {:g} \n'.format(elt + 1, body_id, element[0], element[1], element[2]))
+        GmshFile.write('$EndElements \n')
+        #close
+        GmshFile.close()
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ExportXml.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ExportXml.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ExportXml.m	(revision 27955)
@@ -0,0 +1,46 @@
+function ExportXml(md,filename)
+%EXPORTGMSH - export mesh to xml format (For FEniCS)
+%
+%   Usage:
+%      ExportXml(md,filename)
+
+t1=clock;fprintf('%s',['writing xml mesh file']);
+fid=fopen(filename,'w');
+
+%initialization
+fprintf(fid,'<?xml version="1.0" encoding="UTF-8"?>\n');
+fprintf(fid,'\n');
+fprintf(fid,'<dolfin xmlns:dolfin="http://www.fenicsproject.org">\n');
+if isa(md.mesh,'mesh2d')
+	fprintf(fid,'  <mesh celltype="triangle" dim="2">\n');
+elseif isa(md.mesh,'mesh3dtetras')
+	fprintf(fid,'  <mesh celltype="tetrahedron" dim="3">\n');
+else
+	error('only triangles and tets are supported');
+end
+
+%printing point positions
+fprintf(fid,'    <vertices size="%i">\n',md.mesh.numberofvertices);
+for i=1:md.mesh.numberofvertices
+	fprintf(fid,'      <vertex index="%i" x="%17.15e" y="%17.15e" z="%17.15e"/>\n',i-1,md.mesh.x(i),md.mesh.y(i),md.mesh.z(i));
+end
+fprintf(fid,'    </vertices>\n');
+fprintf(fid,'    <cells size="%i">\n',md.mesh.numberofelements);
+if isa(md.mesh,'mesh2d')
+	for i=1:md.mesh.numberofelements
+		fprintf(fid,'      <triangle index="%i" v0="%i" v1="%i" v2="%i"/>\n',i-1,md.mesh.elements(i,1)-1,md.mesh.elements(i,2)-1,md.mesh.elements(i,3)-1);
+	end
+elseif isa(md.mesh,'mesh3dtetras')
+	for i=1:md.mesh.numberofelements
+		fprintf(fid,'      <tetrahedron index="%i" v0="%i" v1="%i" v2="%i" v3="%i"/>\n',i-1,md.mesh.elements(i,1)-1,md.mesh.elements(i,2)-1,md.mesh.elements(i,3)-1,md.mesh.elements(i,4)-1);
+	end
+else
+	error('only triangles and tets are supported');
+end
+fprintf(fid,'    </cells>\n');
+fprintf(fid,'  </mesh>\n');
+fprintf(fid,'</dolfin>\n');
+
+%close
+fclose(fid);
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/FixMesh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/FixMesh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/FixMesh.m	(revision 27955)
@@ -0,0 +1,47 @@
+function  [index2 x2 y2 value2 newpos]=FixMesh(index,x,y,value)
+% FIXMESH - FixMesh fix mesh with broken triangles, orphan vertices, etc ...
+%
+%   Usage: 
+%      [index2 x2 y2 value2]=FixMesh(index,x,y,value)
+%      where index,x,y is a delaunay triangulation, 
+%      value is a field on the input triangulation, with values at the vertices
+%      index2,x2,y2,value2 is the repaired triangulation, with new values on new vertices
+%
+%
+
+%duplicate inputs
+index2=index;
+x2=x;
+y2=y;
+value2=value;
+newpos=1:length(x);
+
+%First, look for orphan vertices, and take them out.
+flags=zeros(length(x2),1); flags(index2)=1;
+orphans=find(flags==0);
+
+while ~isempty(orphans),
+
+	%take the first orphan, the lower numbered, and take it out
+	orphan=orphans(1);
+
+	%first x,y,value
+	x2(orphan)=[];
+	y2(orphan)=[];
+	value2(orphan)=[];
+	newpos(orphan)=[];
+
+	%now, the index:
+	pos=find(index2>orphan); index2(pos)=index2(pos)-1;
+
+	%look again for orphans on new mesh
+	flags=zeros(length(x2),1);flags(index2)=1;
+	orphans=find(flags==0);
+end
+
+%Check all triangles are well oriented.
+aires=GetAreas(index2,x2,y2);
+pos=find(aires<0);
+temp=index2(pos,1);
+index2(pos,1)=index2(pos,2);
+index2(pos,2)=temp;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/GetNodalFunctionsCoeff.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/GetNodalFunctionsCoeff.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/GetNodalFunctionsCoeff.m	(revision 27955)
@@ -0,0 +1,56 @@
+function [alpha beta varargout]=GetNodalFunctionsCoeff(index,x,y)
+%GETNODELFUNCTIONSCOEFF - compute nodal functions coefficients
+%
+%   Compute the coefficients alpha beta and optionaly gamma of
+%   2d triangular elements. For each element, the nodal function
+%   is defined as:
+%   N(x,y)=sum(i=1:3) alpha_i * x + beta_i * y + gamma_i
+%
+%   Usage:
+%      [alpha beta]=GetNodalFunctionsCoeff(index,x,y);
+%      [alpha beta gamma]=GetNodalFunctionsCoeff(index,x,y);
+%
+%   Example:
+%      [alpha beta gamma]=GetNodalFunctionsCoeff(md.mesh.elements,md.mesh.x,md.mesh.y);
+
+%make columns out of x and y
+x=x(:); y=y(:);
+
+%get nels and nods
+nels=size(index,1);
+nods=length(x);
+
+%some checks
+if nargin~=3 | (nargout~=2 & nargout~=3),
+	help GetNodalFunctionsCoeff
+	error('GetNodalFunctionsCoeff error message: bad usage')
+end
+if length(y)~=nods,
+	error('GetNodalFunctionsCoeff error message: x and y do not have the same length')
+end
+if max(index(:))>nods,
+	error(['GetNodalFunctionsCoeff error message: index should not have values above ' num2str(nods) ])
+end
+if size(index,2)~=3,
+	error('GetNodalFunctionsCoeff error message: only 2d meshes supported. index should have 3 columns.')
+end
+
+%initialize output
+alpha=zeros(nels,3);
+beta=zeros(nels,3);
+
+%compute nodal functions coefficients N(x,y)=alpha x + beta y +gamma
+x1=x(index(:,1)); x2=x(index(:,2)); x3=x(index(:,3));
+y1=y(index(:,1)); y2=y(index(:,2)); y3=y(index(:,3));
+invdet=1./(x1.*(y2-y3)-x2.*(y1-y3)+x3.*(y1-y2));
+
+%get alpha and beta
+alpha=[invdet.*(y2-y3) invdet.*(y3-y1) invdet.*(y1-y2)];
+beta =[invdet.*(x3-x2) invdet.*(x1-x3) invdet.*(x2-x1)];
+
+%get gamma if requested
+if nargout==3,
+	gamma=zeros(nels,3);
+	gamma=[invdet.*(x2.*y3-x3.*y2) invdet.*(y1.*x3-y3.*x1) invdet.*(x1.*y2-x2.*y1)];
+	varargout{1}=gamma;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/GetNodalFunctionsCoeff.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/GetNodalFunctionsCoeff.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/GetNodalFunctionsCoeff.py	(revision 27955)
@@ -0,0 +1,58 @@
+import numpy as np
+
+
+def GetNodalFunctionsCoeff(index, x, y):
+    """
+    GETNODELFUNCTIONSCOEFF - compute nodal functions coefficients
+
+       Compute the coefficients alpha beta and optionaly gamma of
+       2d triangular elements. For each element, the nodal function
+       is defined as:
+       N(x, y)=sum(i = 1:3) alpha_i * x + beta_i * y + gamma_i
+
+       Usage:
+          [alpha beta] = GetNodalFunctionsCoeff(index, x, y)
+          [alpha beta gamma] = GetNodalFunctionsCoeff(index, x, y)
+
+       Example:
+          [alpha beta gamma] = GetNodalFunctionsCoeff(md.mesh.elements, md.mesh.x, md.mesh.y)
+    """
+
+    #make columns out of x and y
+    x = x.reshape(-1)
+    y = y.reshape(-1)
+
+    #get nels and nods
+    nels = np.size(index, axis=0)
+    nods = np.size(x)
+
+    #some checks
+    if np.size(y) != nods:
+        raise TypeError("GetNodalFunctionsCoeff error message: x and y do not have the same length.")
+    if np.max(index) > nods:
+        raise TypeError("GetNodalFunctionsCoeff error message: index should not have values above {}.".format(nods))
+    if np.size(index, axis=1) != 3:
+        raise TypeError("GetNodalFunctionsCoeff error message: only 2d meshes supported. index should have 3 columns.")
+
+    #initialize output
+    alpha = np.zeros((nels, 3))
+    beta = np.zeros((nels, 3))
+
+    #compute nodal functions coefficients N(x, y) = alpha x + beta y + gamma
+    x1 = x[index[:, 0] - 1]
+    x2 = x[index[:, 1] - 1]
+    x3 = x[index[:, 2] - 1]
+    y1 = y[index[:, 0] - 1]
+    y2 = y[index[:, 1] - 1]
+    y3 = y[index[:, 2] - 1]
+    invdet = 1. / (x1 * (y2 - y3) - x2 * (y1 - y3) + x3 * (y1 - y2))
+
+    #get alpha and beta
+    alpha = np.vstack(((invdet * (y2 - y3)).reshape(-1, ), (invdet * (y3 - y1)).reshape(-1, ), (invdet * (y1 - y2)).reshape(-1, ))).T
+    beta = np.vstack(((invdet * (x3 - x2)).reshape(-1, ), (invdet * (x1 - x3)).reshape(-1, ), (invdet * (x2 - x1)).reshape(-1, ))).T
+
+    #get gamma if requested
+    gamma = np.zeros((nels, 3))
+    gamma = np.vstack(((invdet * (x2 * y3 - x3 * y2)).reshape(-1, ), (invdet * (y1 * x3 - y3 * x1)).reshape(-1, ), (invdet * (x1 * y2 - x2 * y1)).reshape(-1, ))).T
+
+    return alpha, beta, gamma
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/MergeMetrics.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/MergeMetrics.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/MergeMetrics.m	(revision 27955)
@@ -0,0 +1,15 @@
+function metric=MergeMetrics(metric1,metric2)
+
+M1xx=metric1(:,1); M1xy=metric1(:,2); M1yy=metric1(:,3);
+M1lambda1=0.5*((M1xx+M1yy)+sqrt(4*M1xy.^2+(M1xx-M1yy).^2));
+M1lambda2=0.5*((M1xx+M1yy)-sqrt(4*M1xy.^2+(M1xx-M1yy).^2));
+lambda1=min(M1lambda1,M1lambda2);
+
+M2xx=metric1(:,1); M2xy=metric1(:,2); M2yy=metric1(:,3);
+M2lambda1=0.5*((M2xx+M2yy)+sqrt(4*M2xy.^2+(M2xx-M2yy).^2));
+M2lambda2=0.5*((M2xx+M2yy)-sqrt(4*M2xy.^2+(M2xx-M2yy).^2));
+lambda2=min(M2lambda2,M2lambda2);
+
+metric=metric1;
+pos=find(lambda2<lambda1);
+metric(pos,:)=metric2(pos,:);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/MeshQuality.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/MeshQuality.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/MeshQuality.m	(revision 27955)
@@ -0,0 +1,77 @@
+function quality=MeshQuality(md,epsilon,hmin,hmax)
+%MESHQUALITY - compute mesh quality
+%
+%   Usage:
+%      MeshQuality(md,epsilon,hmin,hmax);
+
+%Get some variables from the model
+index=md.mesh.elements;
+x=md.mesh.x;
+y=md.mesh.y;
+
+%2d geometric parameter (do not change)
+scale=2/9; 
+
+%Compute Hessian
+hessian=ComputeHessian(index,x,y,md.inversion.vel_obs,'node');
+
+%Compute metric
+metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,[]);
+
+%Get Areas
+areas=GetAreas(index,x,y);
+
+%length edges vectors
+e1x=[x(index(:,2))-x(index(:,1))];
+e1y=[y(index(:,2))-y(index(:,1))];
+e2x=[x(index(:,3))-x(index(:,2))];
+e2y=[y(index(:,3))-y(index(:,2))];
+e3x=[x(index(:,1))-x(index(:,3))];
+e3y=[y(index(:,1))-y(index(:,3))];
+
+%metric of each the 3 nodes for each element
+M1=metric(index(:,1),:);
+M2=metric(index(:,2),:);
+M3=metric(index(:,3),:);
+
+%Get edge length in the metric
+L1=1/2*(sqrt(e2x.*(M2(:,1).*e2x+M2(:,2).*e2y)+e2y.*(M2(:,2).*e2x+M2(:,3).*e2y))+sqrt(e1x.*(M1(:,1).*e1x+M1(:,2).*e1y)+e1y.*(M1(:,2).*e1x+M1(:,3).*e1y)));
+L2=1/2*(sqrt(e3x.*(M3(:,1).*e3x+M3(:,2).*e3y)+e3y.*(M3(:,2).*e3x+M3(:,3).*e3y))+sqrt(e2x.*(M2(:,1).*e2x+M2(:,2).*e2y)+e2y.*(M2(:,2).*e2x+M2(:,3).*e2y)));
+L3=1/2*(sqrt(e1x.*(M1(:,1).*e1x+M1(:,2).*e1y)+e1y.*(M1(:,2).*e1x+M1(:,3).*e1y))+sqrt(e3x.*(M3(:,1).*e3x+M3(:,2).*e3y)+e3y.*(M3(:,2).*e3x+M3(:,3).*e3y)));
+
+%area in the metric
+V=1/3*areas.*(sqrt(M1(:,1).*M1(:,3)-M1(:,2).^2)+sqrt(M2(:,1).*M2(:,3)-M2(:,2).^2)+sqrt(M3(:,1).*M3(:,3)-M3(:,2).^2));
+
+%compute quality:
+quality=4*sqrt(3)*V./(L1+L2+L3);
+
+%compute error
+a=hessian(:,1); b=hessian(:,2); d=hessian(:,3);
+a=a(index)*[1;1;1]/3;
+b=b(index)*[1;1;1]/3;
+d=d(index)*[1;1;1]/3;
+lambda1=0.5*((a+d)+sqrt(4*b.^2+(a-d).^2));
+lambda2=0.5*((a+d)-sqrt(4*b.^2+(a-d).^2));
+lambda1=min(max(abs(lambda1)*scale/epsilon,1/hmax^2),1/hmin^2);
+lambda2=min(max(abs(lambda2)*scale/epsilon,1/hmax^2),1/hmin^2);
+if length(md.nodeonwater)==md.mesh.numberofvertices;
+	pos=find(md.nodeonwater);
+	lambda1(pos)=0;
+	lambda2(pos)=0;
+end
+lambda1=lambda1(index)*[1;1;1]/3;
+lambda2=lambda2(index)*[1;1;1]/3;
+
+lambdamax=max(lambda1,lambda2);
+hmax=max(max(sqrt(e1x.^2+e1y.^2),sqrt(e2x.^2+e2y.^2)),sqrt(e3x.^2+e3y.^2));
+epsilon=scale*hmax.^2.*lambdamax;
+
+%display
+%X=0:0.1:4; hist(quality,X); xlim([0 3]); title('mesh quality distribution','FontSize',14);
+%plotmodel(md,'data',epsilon,'title','Interpolation error','figure',2)
+disp(sprintf('\n%s','Mesh Quality'));
+disp(sprintf('   %s %g','Average Mesh quality: ',mean(quality)));
+disp(sprintf('   %s %g','Worst Element quality:',max(quality)));
+disp(sprintf('\n%s','Interpolation Error'));
+disp(sprintf('   %s %g %s','Average interpolation error:',mean(epsilon),'m/yr'));
+disp(sprintf('   %s %g %s','Maximum interpolation error:',max(epsilon),'m/yr'));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/MeshToShp.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/MeshToShp.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/MeshToShp.m	(revision 27955)
@@ -0,0 +1,14 @@
+function MeshToShp(md,shapefilename)
+%MESHTOSHP - export mesh to shp file
+%
+%   Usage:
+%      MeshToShp(md,'Greenland.shp');
+
+	contours= struct([]);
+	for i=1:md.mesh.numberofvertices,
+		contours(i).x = md.mesh.x(i);
+		contours(i).y = md.mesh.y(i);
+		contours(i).id = i;
+		contours(i).Geometry = 'Point';
+	end
+	shpwrite(contours,shapefilename);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/NodeInElement.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/NodeInElement.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/NodeInElement.m	(revision 27955)
@@ -0,0 +1,42 @@
+function node_in_element=NodeInElement(newx,newy,elements,x,y,nodeconnectivity)
+% NODEINELEMENT - find for a list of nodes (in newx,newy), which elements in the mesh (elements,x,y) they belong to.
+%
+%    Usage:
+%      node_in_element=NodeInElement(newx,newy,elements,x,y,md.mesh.vertexconnectivity);
+%
+%  See also Nodeconnectivity
+%
+epsilon=10^-10;
+
+%compute some quantities that will speed up the process
+x3x1=x(elements(:,1))-x(elements(:,3));
+y3y1=y(elements(:,1))-y(elements(:,3));
+x3x2=x(elements(:,2))-x(elements(:,3));
+y3y2=y(elements(:,2))-y(elements(:,3));
+x3=x(elements(:,3));
+y3=y(elements(:,3));
+delta=x(elements(:,2)).*y(elements(:,3))-y(elements(:,2)).*x(elements(:,3))-x(elements(:,1)).*y(elements(:,3))+y(elements(:,1)).*x(elements(:,3))+x(elements(:,1)).*y(elements(:,2))-y(elements(:,1)).*x(elements(:,2));
+
+%max connectivity:
+max_connectivity=max(nodeconnectivity(:,end));
+node_in_element=zeros(length(newx),max_connectivity+1); %last column is the number of elements to which the row node is connected.
+
+for i=1:length(newx),
+	x0=newx(i);
+	y0=newy(i);
+
+	%first area coordinate
+	area_1=(y3y2.*(x0-x3)-x3x2.*(y0-y3))./delta;
+	%second area coordinate
+	area_2=(x3x1.*(y0-y3)-y3y1.*(x0-x3))./delta;
+	%third area coordinate
+	area_3=1-area_1-area_2;
+
+	%get elements for which all area coordinates are positive (meaning (x0,y0) belongs to these elements
+	pos=find((area_1>=0-epsilon) & (area_2>=0-epsilon) & (area_3>=0-epsilon));
+
+	num_elements=length(pos);
+
+	node_in_element(i,1:num_elements)=pos;
+	node_in_element(i,end)=num_elements;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ProfileProjectOntoMesh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ProfileProjectOntoMesh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/ProfileProjectOntoMesh.m	(revision 27955)
@@ -0,0 +1,66 @@
+function mesh_profile=ProfileProjectOntoMesh(md,profile)
+%PROFILEPROJECTONTOMESH: project a profile (made of arbitrary points) onto a mesh, so that we end 
+%                        up with a list of segments self contained onto elements.
+%
+% Usage: mesh_profile=ProfileProjectOntoMesh(md,profile)
+%
+% See also intersections.m
+
+%make a curve out of the mesh, to use the intersections routine.
+rows=[md.mesh.elements md.mesh.elements(:,1)]'; rows=rows(:);
+x=md.mesh.x(rows);
+y=md.mesh.y(rows);
+
+%[x0,y0] = intersections(profile.x,profile.y,x,y,1);
+[x0,y0,indices,j] = intersections(profile.x,profile.y,x,y);
+
+%  sort intersections to create segments in order and continuous along profile
+[indices,isort]=sort(indices);
+j =j (isort);
+x0=x0(isort);
+y0=y0(isort);
+
+%process x0,y0 so they do not include profile.x or profile.y
+processed_indices=[];
+processed_x=[];
+processed_y=[];
+for i=1:numel(indices),
+	if(((indices(i)-floor(indices(i)))~=0) && ((ceil(indices(i))-indices(i))~=0))
+		processed_indices=[processed_indices;floor(indices(i))];
+		processed_x=[processed_x;x0(i)];
+		processed_y=[processed_y;y0(i)];
+	end
+end
+
+%now merge profile.x,profile.y with processed_x,processed_y, at locations processed_indices:
+newx=profile.x;
+newy=profile.y;
+
+count=1;
+for i=1:numel(profile.x),
+	pos=find(processed_indices==i);
+	if ~isempty(pos),
+		newx=[newx(1:count); processed_x(pos); newx(count+1:end)];
+		newy=[newy(1:count); processed_y(pos); newy(count+1:end)];
+		count=count+length(pos)+1;
+	end
+end
+
+%now, for each node, figure out which element it belongs to.
+node_in_element=NodeInElement(newx,newy,md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.vertexconnectivity);
+
+% eliminate nodes that don't fall in any element
+% (profile may start and/or end externally and/or cross holes in the model)
+
+ind=find(node_in_element(:,end)>0);
+newx=newx(ind,:);
+newy=newy(ind,:);
+node_in_element=node_in_element(ind,:);
+
+mesh_profile=[newx(1:end-1) newy(1:end-1) newx(2:end) newy(2:end) zeros(length(newy(2:end)),1)];
+
+%find which element each segment belongs to.
+for i=1:length(newx)-1,
+	common=intersect(node_in_element(i,1:node_in_element(i,end)), node_in_element(i+1,1:node_in_element(i+1,end)));
+	mesh_profile(i,end)=common(1);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/TwoDToThreeD.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/TwoDToThreeD.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/TwoDToThreeD.m	(revision 27955)
@@ -0,0 +1,33 @@
+function md=TwoDToThreeD(md,planet)
+	%reproject model into lat,long if necessary:
+	if ~strcmpi(md.mesh.proj,epsg2proj(4326)),
+		[md.mesh.x,md.mesh.y]=gdaltransform(md.mesh.x,md.mesh.y,md.mesh.proj,'EPSG:4326');
+	end
+
+	%Make a 3dsurface mesh out of this: 
+	R=planetradius(planet);
+
+	%we assume x and y hold the long,lat values:
+	long=md.mesh.x;
+	lat=md.mesh.y;
+
+	%Assume spherical body: 
+	x = R .* cosd(lat) .* cosd(long);
+	y = R .* cosd(lat) .* sind(long);
+	z = R .* sind(lat);
+
+	elements=md.mesh.elements;
+	vc=md.mesh.vertexconnectivity;
+	vb=md.mesh.vertexonboundary;
+	md.mesh=mesh3dsurface();
+	md.mesh.lat=lat;
+	md.mesh.long=long;
+	md.mesh.x=x;
+	md.mesh.y=y;
+	md.mesh.z=z;
+	md.mesh.elements=elements;
+	md.mesh.numberofelements=length(elements);
+	md.mesh.numberofvertices=length(lat);
+	md.mesh.r=R*ones(md.mesh.numberofvertices,1);
+	md.mesh.vertexconnectivity=vc;
+	md.mesh.vertexonboundary=vb;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/TwoDToThreeD.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/TwoDToThreeD.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/TwoDToThreeD.py	(revision 27955)
@@ -0,0 +1,42 @@
+import numpy as np
+
+from epsg2proj import epsg2proj
+from gdaltransform import gdaltransform
+from mesh3dsurface import mesh3dsurface
+from planetradius import planetradius
+
+
+def TwoDToThreeD(md, planet):
+    # Reproject model into lat, long if necessary
+    if md.mesh.proj != epsg2proj(4326):
+        md.mesh.x, md.mesh.y = gdaltransform(md.mesh.x, md.mesh.y, md.mesh.proj, 'EPSG:4326')
+
+    # Make a 3dsurface mesh out of this
+    R = planetradius(planet)
+
+    # We assume x and y hold the long, lat values
+    longe = md.mesh.x
+    late = md.mesh.y
+
+    # Assume spherical body
+    x = R * np.cos(np.deg2rad(late)) * np.cos(np.deg2rad(longe))
+    y = R * np.cos(np.deg2rad(late)) * np.sin(np.deg2rad(longe))
+    z = R * np.sin(np.deg2rad(late))
+
+    elements = md.mesh.elements
+    vc = md.mesh.vertexconnectivity
+    vb = md.mesh.vertexonboundary
+    md.mesh = mesh3dsurface()
+    md.mesh.lat = late
+    md.mesh.long = longe
+    md.mesh.x = x
+    md.mesh.y = y
+    md.mesh.z = z
+    md.mesh.elements = elements
+    md.mesh.numberofelements = len(elements)
+    md.mesh.numberofvertices = len(late)
+    md.mesh.r = R * np.ones((md.mesh.numberofvertices, ))
+    md.mesh.vertexconnectivity = vc
+    md.mesh.vertexonboundary = vb
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/argusmesh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/argusmesh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/argusmesh.m	(revision 27955)
@@ -0,0 +1,91 @@
+function md=argusmesh(md,infile)
+%ARGUSMESH - load an Argus mesh onto a model
+%
+%   Convert an Argus mesh contained in a file into
+%   fields needed for the mesh in a model md.
+%
+%   Usage:
+%      md=argusmesh(md,infile)
+%
+%   Example:
+%     md=argusmesh(md,'Domain.exp')
+
+%some argument check: 
+if nargin~=2 | nargout~=1,
+	help argustomodel;
+	error('argustomodel error message: bad usage');
+end
+
+%determine root of infile: strip extension
+[a,root,b,c]=fileparts(infile);
+
+%inform user we start the script: 
+disp(['   Translating argus file ''' infile ''' into matlab model object']);
+
+%open infile: 
+fileid=fopen(infile,'r');
+if fileid==-1,
+	error(['Could not open file ' infile  ' for reading']);
+end
+
+%Read first line of the argus mesh: node and element parameters
+[buffer,bytecount]=fscanf(fileid,'%i %i %i %i',[1 4]);
+if bytecount~=4, 
+	error(['Problem reading ' infile ' file at line #1']);
+end
+nel=buffer(1);
+nods=buffer(2);
+num_element_parameters=buffer(3);
+num_node_parameters=buffer(4);
+disp(['      argus model '''   root ''' contains ' num2str(nel) ' elements and ' num2str(nods) ' nodes.']);
+
+%initialize elements and nodes
+elements=zeros(nel,3);
+element_parameters=zeros(nel,num_element_parameters);
+x=zeros(nods,1);
+y=zeros(nods,1);
+z=zeros(nods,1);
+node_parameters=zeros(nods,num_node_parameters);
+
+%read nodes:
+format_string='%s %i %f %f ';
+for n=1:num_node_parameters,
+	format_string=[format_string ' %i '];
+end
+
+for n=1:nods,
+	[buffer,bytecount]=fscanf(fileid,format_string,[1,num_node_parameters+4]);
+	x(n)=buffer(3);
+	y(n)=buffer(4);
+	node_parameters(n,:)=buffer(5:length(buffer));
+end
+
+%read elements: 
+format_string='%s %i %i %i %i';
+for n=1:num_element_parameters,
+	format_string=[format_string ' %i '];
+end
+for n=1:nel,
+	[buffer,bytecount]=fscanf(fileid,format_string,[1,num_element_parameters+5]);
+	elements(n,:)=buffer(3:5);
+	element_parameters(n,:)=buffer(6:length(buffer));
+end
+
+%Create a name and a note for this model: 
+notes=['Model created by Argus from input file: ' infile ' and parameter file: ' root '.par on: ' date];
+name=root;
+
+%Finally, use model constructor to build a complete model: 
+md.mesh=mesh2d();
+md.mesh.elements=elements;
+md.mesh.x=x;
+md.mesh.y=y;
+md.mesh.numberofvertices=size(md.mesh.x,1);
+md.mesh.numberofelements=size(md.mesh.elements,1);
+md=addnote(md,notes);
+
+%Add segments and nodes on boundary
+md.mesh.segments=findsegments(md);
+md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1);
+md.mesh.vertexonboundary(md.mesh.segments(:,1))=1;
+md.mesh.vertexonboundary(md.mesh.segments(:,2))=1;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/augment2dmesh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/augment2dmesh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/augment2dmesh.m	(revision 27955)
@@ -0,0 +1,112 @@
+function [mh,internalsegments,internalelements]=augment2dmesh(mh,mhband,varargin)
+%AUGMENT2DMESH - augment mh mesh with a band around it (provided by mhband)
+%
+%   Usage:
+%      mh=augment2dmesh(mh,mhband);
+%      [mh,internalsegments]=augment2dmesh(mh,mhband);
+%
+%   Example: 
+%      md.mesh=augment2dmesh(md.mesh,md2.mesh);
+%
+
+%First process options
+options=pairoptions(varargin{:});
+
+%Offset the mesh band elements: 
+mhband.elements=mhband.elements+mh.numberofvertices;
+mhband.segments(:,1:2)=mhband.segments(:,1:2)+mh.numberofvertices;
+mhband.segments(:,3)=mhband.segments(:,3)+mh.numberofelements;
+
+bandsegments=mhband.segments; %keep  a copy around for when user requests this be returned. 
+
+%The innner segments of mhband and the outer segments of mh are identical. Go into  the elements of 
+%mhband and set them to their md1 equivalent: 
+tol=getfieldvalue(options,'tolerance',1); %1 meter 
+for i=1:length(mhband.segments),
+	node2=mhband.segments(i,1);
+	%this node2 has an equivalent on the segments  of mdh: 
+	for j=1:length(mh.segments),
+		node1=mh.segments(j,1);
+		%if mhband.x(node2-mh.numberofvertices) == mh.x(node1) &&  mhband.y(node2-mh.numberofvertices) == mh.y(node1),
+		if sqrt((mhband.x(node2-mh.numberofvertices) - mh.x(node1))^2 + (mhband.y(node2-mh.numberofvertices) - mh.y(node1))^2)<tol,
+			%go into the mesh of mhband, and replace by node1.
+			pos=find(mhband.elements==node2); mhband.elements(pos)=node1;
+			segs=mhband.segments(:,1:2); pos=find(segs==node2); segs(pos)=node1; mhband.segments(:,1:2)=segs; bandsegments(:,1:2)=segs;
+			%flag the segment for future erasal: 
+			pos=find(mhband.segments(:,1)==node1 | mhband.segments(:,2)==node1); mhband.segments(pos,3)=NaN; 
+			break;
+		end
+	end
+end
+
+%Do the merge: 
+internalelements=mh.elements;
+mh.elements=[mh.elements;mhband.elements];
+mh.x=[mh.x;mhband.x];
+mh.y=[mh.y;mhband.y];
+if ~isnan(mh.lat), mh.lat=[mh.lat;mhband.lat]; end
+if ~isnan(mh.long), mh.long=[mh.long;mhband.long];  end
+mh.segments=[mhband.segments]; 
+
+%segments that are internal mght have been requested: 
+if strcmpi(getfieldvalue(options,'internalsegments','off'),'on'),
+	pos=find(isnan(mh.segments(:,3)));
+	internalsegments=bandsegments(pos,:);
+end
+
+%get rid of segments that are internal: 
+pos=find(~isnan(mh.segments(:,3)));
+mh.segments=mh.segments(pos,:); 
+
+%Remove orphans:
+x=mh.x; y=mh.y; lat=mh.lat; long=mh.long; 
+elements=mh.elements; segments=mh.segments;
+orphan=find(~ismember([1:length(x)],sort(unique(elements(:)))));
+for i=1:length(orphan),
+	%disp('WARNING: removing orphans');
+	%get rid of the orphan node i
+	%update x and y
+	x=[x(1:orphan(i)-(i-1)-1); x(orphan(i)-(i-1)+1:end)];
+	y=[y(1:orphan(i)-(i-1)-1); y(orphan(i)-(i-1)+1:end)];
+	if ~isnan(lat), lat=[lat(1:orphan(i)-(i-1)-1); lat(orphan(i)-(i-1)+1:end)]; end
+		if ~isnan(long), long=[long(1:orphan(i)-(i-1)-1); long(orphan(i)-(i-1)+1:end)]; end
+	%update elements
+	pos=find(elements>orphan(i)-(i-1));
+	elements(pos)=elements(pos)-1;
+	%update segments
+	pos1=find(segments(:,1)>orphan(i)-(i-1));
+	pos2=find(segments(:,2)>orphan(i)-(i-1));
+	segments(pos1,1)=segments(pos1,1)-1;
+	segments(pos2,2)=segments(pos2,2)-1;
+end
+
+mh.elements=elements;
+mh.x=x;
+mh.y=y;
+mh.lat=lat;
+mh.long=long;
+mh.segments=segments;
+mh.numberofelements=length(mh.elements);
+mh.numberofvertices=length(mh.x);
+
+%vertex on boundaries: 
+mh.vertexonboundary=zeros(mh.numberofvertices,1);
+mh.vertexonboundary(mh.segments(:,1:2))=1;
+
+%connectivities: 
+mh.vertexconnectivity=NodeConnectivity(mh.elements,mh.numberofvertices);
+mh.elementconnectivity=ElementConnectivity(mh.elements,mh.vertexconnectivity);
+
+%return: 
+if nargout==1,
+	varargout{1}=mh;
+elseif nargout==2,
+	varargout{1}=mh;
+	varargout{2}=internalsegments;
+elseif nargout==3,
+	varargout{1}=mh;
+	varargout{2}=internalsegments;
+	varargout{3}=internalelements;
+else 
+	error('unknow number of output arguments')
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/bamg.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/bamg.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/bamg.js	(revision 27955)
@@ -0,0 +1,706 @@
+function bamg(md){
+    //BAMG - mesh generation
+    //
+    //   Available options (for more details see ISSM website http://issm.jpl.nasa.gov/):
+    //
+    //   - domain :            followed by an ARGUS file that prescribes the domain outline
+    //   - holes :             followed by an ARGUS file that prescribes the holes
+    //   - subdomains :        followed by an ARGUS file that prescribes the list of
+    //                         subdomains (that need to be inside domain)
+    //
+    //   - hmin :              minimum edge length (default is 10^-100)
+    //   - hmax :              maximum edge length (default is 10^100)
+    //   - hVertices :         imposed edge length for each vertex (geometry or mesh)
+    //   - hminVertices :      minimum edge length for each vertex (mesh)
+    //   - hmaxVertices :      maximum edge length for each vertex (mesh)
+    //
+    //   - anisomax :          maximum ratio between the smallest and largest edges (default is 10^30)
+    //   - coeff :             coefficient applied to the metric (2-> twice as many elements, default is 1)
+    //   - cutoff :            scalar used to compute the metric when metric type 2 or 3 are applied
+    //   - err :               error used to generate the metric from a field
+    //   - errg :              geometric error (default is 0.1)
+    //   - field :             field of the model that will be used to compute the metric
+    //                         to apply several fields, use one column per field
+    //   - gradation :         maximum ratio between two adjacent edges
+    //   - Hessiantype :       0 -> use double L2 projection (default)
+    //                         1 -> use Green formula
+    //   - KeepVertices :      try to keep initial vertices when adaptation is done on an existing mesh (default 1)
+    //   - NoBoundaryRefinment: do not refine boundary, only follow contour provided (default 0)
+    //   - maxnbv :            maximum number of vertices used to allocate memory (default is 10^6)
+    //   - maxsubdiv :         maximum subdivision of exisiting elements (default is 10)
+    //   - metric :            matrix (numberofnodes x 3) used as a metric
+    //   - Metrictype :        0 -> absolute error          c/(err coeff^2) * Abs(H)        (default)
+    //                         1 -> relative error          c/(err coeff^2) * Abs(H)/max(s,cutoff*max(s))
+    //                         2 -> rescaled absolute error c/(err coeff^2) * Abs(H)/(smax-smin)
+    //   - nbjacoby :          correction used by Hessiantype=1 (default is 1)
+    //   - nbsmooth :          number of metric smoothing procedure (default is 3)
+    //   - omega :             relaxation parameter of the smoothing procedure (default is 1.8)
+    //   - power :             power applied to the metric (default is 1)
+    //   - splitcorners :      split triangles whuch have 3 vertices on the outline (default is 1)
+    //   - verbose :           level of verbosity (default is 1)
+    //
+    //   - vertical :          is this a 2d vertical mesh (flowband, default is 0)
+    //   - rifts :             followed by an ARGUS file that prescribes the rifts
+    //   - toltip :            tolerance to move tip on an existing point of the domain outline
+    //   - tracks :            followed by an ARGUS file that prescribes the tracks that the mesh will stick to
+    //   - RequiredVertices :  mesh vertices that are required. [x,y,ref]; ref is optional
+    //   - tol :               if the distance between 2 points of the domain outline is less than tol, they
+    //                         will be merged
+    //
+    //   Examples:
+    //      md=bamg(md,'domain','DomainOutline.exp','hmax',3000);
+    //      md=bamg(md,'field',[md.inversion.vel_obs md.geometry.thickness],'hmax',20000,'hmin',1000);
+    //      md=bamg(md,'metric',A,'hmin',1000,'hmax',20000,'gradation',3,'anisomax',1);
+
+    //process options
+    var args = Array.prototype.slice.call(arguments);
+    var options = new pairoptions(args.slice(1,args.length));
+    options.deleteduplicates(1);
+
+    //initialize the structures required as input of Bamg
+    var bamg_options = {}
+    var bamg_geometry = new bamggeom();
+    var bamg_mesh = new bamgmesh();
+
+    var subdomain_ref = 1;
+    var hole_ref = 1;
+    // Bamg Geometry parameters {{{
+    if (options.exist('domain')) {
+
+        //Check that file exists
+        var domainfile=options.getfieldvalue('domain');
+        if ((typeof domainfile) === 'string') {
+            console.log('bamg error message: file ' + domainfile + ' loading from file path not supported - domain must be file object (.shp or .exp)');
+        } else if ((typeof domainfile) === 'object') {
+            domain = domainfile;
+        } else {
+            console.log('"domain" type not supported yet - ' + (typeof domainfile));
+        }
+
+        var holes = [];
+        if (options.exist('holes')) {
+            var holesfile=options.getfieldvalue('holes');
+            if ((typeof holesfile) === 'string') {
+                console.log('bamg error message: file ' + holesfile + ' loading from file path not supported - holes must be file object (.shp or .exp)');
+            } else if ((typeof holesfile) === 'object') {
+                holes = holesfile;
+            } else {
+                console.log('"holes" type not supported yet - ' + (typeof holesfile));
+            }
+        }
+        var subdomains = [];
+        if (options.exist('subdomains')) {
+            var subdomainsfile=options.getfieldvalue('subdomains');
+            if ((typeof subdomainsfile) === 'string') {
+                console.log('bamg error message: file ' + subdomainsfile + ' loading from file path not supported - subdomains must be file object (.shp or .exp)');
+            } else if ((typeof subdomainsfile) === 'object') {
+                subdomains = subdomainsfile;
+            } else {
+                console.log('"subdomains" type not supported yet - ' + (typeof subdomainsfile));
+            }
+        }
+
+        //Build geometry 
+        var count=0;
+        for (var i=0; i < domain.length; i++) {
+
+            //Check that the domain is closed
+            if (domain[i].x[0] != domain[i].x[domain[i].x.length-1] || domain[i].y[0] != domain[i].y[domain[i].y.length-1]) {
+                console.log('bamg error message: all contours provided in "domain" should be closed');
+            }
+
+            //TODO: Implement ContourToNodes
+            //Checks that all holes are INSIDE the principle domain outline
+            //if (i>1) {
+            //    flags=ContourToNodes(domain[i].x,domain[i].y,domain[0],0);
+            //    if (ArrayAny(ArrayFlip(flags))) {
+            //        console.log('bamg error message: All holes should be strictly inside the principal domain');
+            //    }
+            //}
+            console.log('bamg warning message: All holes should be strictly inside the principal domain. No checks are currently implemented.');
+
+            //Check orientation
+            var nods = domain[i].nods-1; //the domain are closed 1=end;
+            var test = ArraySum(ArrayMultiply(ArraySubtract(domain[i].x.slice(1,nods+1), domain[i].x.slice(0,nods)), ArrayAdd(domain[i].y.slice(1,nods+1), domain[i].y.slice(0,nods))));
+            if ((i==0 && test>0) || (i>0 && test<0)) {
+                console.log('At least one contour was not correctly oriented and has been re-oriented');
+		domain[i].x.reverse();
+		domain[i].y.reverse();
+            }
+
+            //Add all points to bamg_geometry
+            for (var j = 0; j < nods; j++) {
+                bamg_geometry.Vertices.push([domain[i].x[j], domain[i].y[j], 1]);
+            }
+            var edges1 = ArrayRange(count + 1, count + nods);
+            var edges2 = ArrayConcat(ArrayRange(count + 2, count + nods), [count + 1]);
+            for (var j = 0; j < nods; j++) {
+                bamg_geometry.Edges.push([edges1[j], edges2[j], 1]);
+            }
+            if (i > 1) {
+                bamg_geometry.SubDomains.push([2, count + 1, 1, -subdomain_ref]);
+                subdomain_ref = subdomain_ref + 1;
+            } else {
+                bamg_geometry.SubDomains.push([2, count + 1, 1, 0]);
+            }
+
+            //update counter
+            count=count+nods;
+        }
+        for (var i=0; i < holes.length; i++) {
+
+            //Check that the subdomains is closed
+            if (holes[i].x[0] != holes[i].x[holes[i].x.length-1] || holes[i].y[0] != holes[i].y[holes[i].y.length-1]) {
+                console.log('bamg error message: all contours provided in "domain" should be closed');
+            }
+            //Checks that all holes are INSIDE the principle domain outline
+            //flags=ContourToNodes(holes[i].x,holes[i].y,domain[0],0);
+            //if ArrayAny(ArrayFlip(flags)) { console.log('bamg error message: All holes should be strictly inside the principal domain'); }
+
+            //TODO: Implement ContourToNodes
+            //Checks that all holes are INSIDE the principle domain outline
+            //if (i>1) {
+            //    flags=ContourToNodes(domain[i].x,domain[i].y,domain[0],0);
+            //    if (ArrayAny(ArrayFlip(flags))) {
+            //        console.log('bamg error message: All holes should be strictly inside the principal domain');
+            //    }
+            //}
+            console.log('bamg warning message: all holes should be strictly inside the principal domain. no checks are currently implemented.');
+
+            //Check that hole is correctly oriented
+            var nods = holes[i].nods-1; //the holes are closed 1=end;
+            var test = ArraySum(ArrayMultiply(ArraySubtract(holes[i].x.slice(1,nods+1), holes[i].x.slice(0,nods)), ArrayAdd(holes[i].y.slice(1,nods+1), holes[i].y.slice(0,nods))));
+            if ((i==0 && test>0) || (i>0 && test<0)) {
+                console.log('At least one contour was not correctly oriented and has been re-oriented');
+		holes[i].x.reverse();
+		holes[i].y.reverse();
+            }
+
+            //Add all points to bamg_geometry
+            for (var j = 0; j < nods; j++) {
+                bamg_geometry.Vertices.push([holes[i].x[j], holes[i].y[j], 1]);
+            }
+            var edges1 = ArrayRange(count + 1, count + nods);
+            var edges2 = ArrayConcat(ArrayRange(count + 2, count + nods), [count + 1]);
+            for (var j = 0; j < nods; j++) {
+                bamg_geometry.Edges.push([edges1[j], edges2[j], 1]);
+            }
+            bamg_geometry.SubDomains.push([2, count + 1, 1, -hole_ref]);
+            hole_ref = hole_ref + 1;
+
+            //update counter
+            count=count+nods;
+        }
+        for (var i=0; i < subdomains.length; i++) {
+
+            //Check that the subdomains is closed
+            if (subdomains[i].x[0] != subdomains[i].x[subdomains[i].x.length-1] || subdomains[i].y[0] != subdomains[i].y[subdomains[i].y.length-1]) {
+                console.log('bamg error message: all contours provided in "subdomains" should be closed');
+            }
+
+            //TODO: Implement ContourToNodes
+            //Checks that all holes are INSIDE the principle domain outline
+            //flags=ContourToNodes(subdomains[i].x,subdomains[i].y,domain[0],0);
+            //if ArrayAny(ArrayFlip(flags)) {
+            //    console.log('bamg error message: All holes should be strictly inside the principal domain');
+            //}
+            console.log('bamg warning message: all holes should be strictly inside the principal domain. no checks are currently implemented.');
+
+            //Check that hole is correctly oriented
+            var nods=subdomains[i].nods-1; //the subdomains are closed 1=end;
+            var test = ArraySum(ArrayMultiply(ArraySubtract(subdomain[i].x.slice(1,nods+1), subdomain[i].x.slice(0,nods)), ArrayAdd(subdomain[i].y.slice(1,nods+1), subdomain[i].y.slice(0,nods))));
+            if ((i==0 && test>0) || (i>0 && test<0)) {
+                console.log('At least one contour was not correctly oriented and has been re-oriented');
+		subdomains[i].x.reverse();
+		subdomains[i].y.reverse();
+            }
+
+            //Add all points to bamg_geometry
+            for (var j = 0; j < nods; j++) {
+                bamg_geometry.Vertices.push([subdomains[i].x[j], subdomains[i].y[j], 1]);
+            }
+            var edges1 = ArrayRange(count + 1, count + nods);
+            var edges2 = ArrayConcat(ArrayRange(count + 2, count + nods), [count + 1]);
+            for (var j = 0; j < nods; j++) {
+                bamg_geometry.Edges.push([edges1[j], edges2[j], 1]);
+            }
+            bamg_geometry.SubDomains.push([2, count + 1, 1, subdomain_ref]);
+            subdomain_ref = subdomain_ref + 1;
+
+            //update counter
+            count=count+nods;
+        }
+        if (options.getfieldvalue('vertical',0)) {
+            if (options.getfieldvalue('Markers',[]).length != bamg_geometry.Edges.length) {
+                console.log('for 2d vertical mesh, "Markers" option is required, and should be of size ' + bamg_geometry.Edges.length);
+            }
+        }
+        if (options.getfieldvalue('Markers',[]).length == bamg_geometry.Edges.length) {
+            var markers = options.getfieldvalue('Markers');
+            for (var i = 0; i < markers.length; i++) {
+                bamg_geometry.Edges[i][2] = markers[i];
+            }
+        }
+        /*
+
+        //take care of rifts
+        if options.exist('rifts') {
+
+            //Check that file exists
+            riftfile=options.getfieldvalue('rifts');
+            [pathr,namer,extr]=fileparts(riftfile);
+            if !exist(riftfile {'file')
+                console.log(['bamg error message: file ' riftfile ' not found ']);
+            } else if strcmp(extr,'.exp') {
+                rift=expread(riftfile);
+            } else if strcmp(extr,'.shp') {
+                rift=shpread(riftfile);
+            }
+            //read rift file according to its extension: 
+            [path,name,ext]=fileparts(riftfile);
+            if strcmp(ext,'.exp') {
+                rift=expread(riftfile);
+            } else if strcmp(ext,'.shp') {
+                rift=shpread(riftfile);
+            } else {
+                console.log(['bamg error message: file ' riftfile ' format not supported (.shp or .exp)']);
+            }
+
+            for i=1:length(rift) {
+
+                //detect whether all points of the rift are inside the domain
+                flags=ContourToNodes(rift[i].x,rift[i].y,domain[0],0);
+                if (ArrayFlip(flags)) {
+                    console.log('one rift has all its points outside of the domain outline'),
+
+                } else if (ArrayAny(ArrayFlip(flags))) {
+                    //We LOTS of work to do
+                    console.log('Rift tip outside of or on the domain has been detected and is being processed...');
+
+                    //check that only one point is outside (for now)
+                    if (ArraySum(ArrayFlip(flags))!=1) {
+                        console.log('bamg error message: only one point outside of the domain is supported yet');
+                    }
+
+                    //Move tip outside to the first position
+                    if (flags[0]==0) {
+                        //OK, first point is outside (do nothing),
+                    } else if (flags[flags.length-1]==0) {
+                        rift[i].x=flipud(rift[i].x);
+                        rift[i].y=flipud(rift[i].y);
+                    } else {
+                        console.log('bamg error message: only a rift tip can be outside of the domain');
+                    }
+
+                    //Get cordinate of intersection point
+                    x1=rift[i].x[0]; y1=rift[i].y[0];
+                    x2=rift[i].x[1]; y2=rift[i].y[1];
+                    for (var j=0; j < domain[0].x)-1 j++) {
+                        if SegIntersect([x1 y1; x2 y2],[domain[0].x(j) domain[0].y(j); domain[0].x(j+1) domain[0].y(j+1)]) {
+
+                            //Get position of the two nodes of the edge in domain
+                            i1=j;
+                            i2=j+1;
+
+                            //rift is crossing edge [i1 i2] of the domain
+                            //Get coordinate of intersection point (http://mathworld.wolfram.com/Line-LineIntersection.html)
+                            x3=domain[0].x[i1]; y3=domain[0].y[i1];
+                            x4=domain[0].x[i2]; y4=domain[0].y[i2];
+                            x=det([det([x1 y1; x2 y2])  x1-x2;det([x3 y3; x4 y4])  x3-x4])/det([x1-x2 y1-y2;x3-x4 y3-y4]);
+                            y=det([det([x1 y1; x2 y2])  y1-y2;det([x3 y3; x4 y4])  y3-y4])/det([x1-x2 y1-y2;x3-x4 y3-y4]);
+
+                            segdis= sqrt((x4-x3)^2+(y4-y3)^2);
+                            tipdis=[sqrt((x-x3)^2+(y-y3)^2)  sqrt((x-x4)^2+(y-y4)^2)];
+
+                            if (min(tipdis)/segdis) < options.getfieldvalue('toltip',0) {
+                                disp('moving tip-domain intersection point');
+
+                                //Get position of the closer point
+                                if tipdis[0]>tipdis[1] {
+                                    pos=i2;
+                                } else {
+                                    pos=i1;
+                                }
+
+                                //This point is only in Vertices (number pos).
+                                //OK, now we can add our own rift
+                                nods=rift[i].nods-1;
+                                bamg_geometry.Vertices=[bamg_geometry.Vertices; [rift[i].x(2:end) rift[i].y(2:end) ones(nods,1)]];
+                                bamg_geometry.Edges=[bamg_geometry.Edges;...
+                                    pos count+1  (1+i);...
+                                    [transpose(count+1:count+nods-1) transpose(count+2:count+nods)  (1+i)*ones(nods-1,1)]];
+                                count=count+nods;
+
+                                break;
+
+                            } else {
+                                //Add intersection point to Vertices
+                                bamg_geometry.Vertices=[bamg_geometry.Vertices; x y 1];
+                                count=count+1;
+
+                                //Decompose the crossing edge into 2 subedges
+                                pos=find(bamg_geometry.Edges(:,1)==i1 & bamg_geometry.Edges(:,2)==i2);
+                                if isempty(pos) console.log('bamg error message: a problem occurred...'); }
+                                bamg_geometry.Edges=[bamg_geometry.Edges(1:pos-1,:);...
+                                    bamg_geometry.Edges(pos,1) count                      bamg_geometry.Edges(pos,3);...
+                                    count                      bamg_geometry.Edges(pos,2) bamg_geometry.Edges(pos,3);...
+                                    bamg_geometry.Edges(pos+1:end,:)];
+
+                                //OK, now we can add our own rift
+                                nods=rift[i].nods-1;
+                                bamg_geometry.Vertices=[bamg_geometry.Vertices; [rift[i].x(2:end) rift[i].y(2:end) ones(nods,1)]];
+                                bamg_geometry.Edges=[bamg_geometry.Edges;...
+                                    count  count+1  2 ;...
+                                    [transpose(count+1:count+nods-1) transpose(count+2:count+nods)  (1+i)*ones(nods-1,1)]];
+                                count=count+nods;
+
+                                break;
+                            }
+                        }
+                    }
+                } else {
+                    nods=rift[i].nods-1;
+                    bamg_geometry.Vertices=[bamg_geometry.Vertices; [rift[i].x(:) rift[i].y(:) ones(nods+1,1)]];
+                    bamg_geometry.Edges=[bamg_geometry.Edges; [transpose(count+1:count+nods) transpose(count+2:count+nods+1)  (1+i)*ones(nods,1)]];
+                    count=count+nods+1;
+                }
+            }
+        }
+
+        //Deal with tracks
+        if options.exist('tracks') {
+
+            //read tracks
+            track=options.getfieldvalue('tracks');
+            if all(ischar(track)) {
+                A=expread(track);
+                track=[];
+                for i=1:length(A), 
+                    track=[track; [A[i].x A[i].y]];
+                }
+            } else {
+                track=double(track); //for some reason, it is of class "single"
+            }
+            if(size(track,2)==2), track=[track 3.*ones(size(track,1),1)]; }
+
+            //only keep those inside
+            flags=ContourToNodes(track(:,1),track(:,2),domainfile,0);
+            track=track(find(flags),:);
+
+            //Add all points to bamg_geometry
+            nods=size(track,1);
+            bamg_geometry.Vertices=[bamg_geometry.Vertices; track];
+            bamg_geometry.Edges=[bamg_geometry.Edges; [transpose(count+1:count+nods-1) transpose(count+2:count+nods)  3.*ones(nods-1,1)]];
+
+            //update counter
+            count=count+nods;
+        }
+
+        //Deal with vertices that need to be kept by mesher
+        if (options.exist('RequiredVertices')) {
+
+            //recover RequiredVertices
+            requiredvertices = options.getfieldvalue('RequiredVertices'); //for some reason, it is of class "single"
+            if (requiredvertices[0].length == 2) {
+                 requiredvertices=[requiredvertices 4.*ones(size(requiredvertices,1),1)];
+            }    
+
+            //only keep those inside
+            flags=ContourToNodes(requiredvertices(:,1),requiredvertices(:,2),domain[0],0);
+            requiredvertices=requiredvertices(find(flags),:);
+
+            //Add all points to bamg_geometry
+            nods=size(requiredvertices,1);
+            bamg_geometry.Vertices=[bamg_geometry.Vertices; requiredvertices];
+
+            //update counter
+            count=count+nods;
+
+        }
+        */
+
+        //Deal with RequiredEdges
+        if (options.getfieldvalue('NoBoundaryRefinment', 0) == 1) {
+            bamg_geometry.RequiredEdges = ArrayTranspose(ArrayRange(1, bamg_geometry.Edges.length));
+        }
+
+        //process geom
+        //bamg_geometry=processgeometry(bamg_geometry,options.getfieldvalue('tol',NaN),domain[0]);
+
+    } else if ((typeof md.priv.bamg === 'object') && ('geometry' in md.priv.bamg)) {
+        bamg_geometry = new bamggeom(md.priv.bamg.geometry); 
+    } else {
+        //do nothing...
+    }
+    //}}}
+    // Bamg Mesh parameters {{{
+    if (!options.exist('domain') && md.mesh.numberofvertices != 0 && md.mesh.elementtype() == 'Tria') {
+
+        if ((typeof md.priv.bamg === 'object') && ('mesh' in md.priv.bamg)) {
+            bamg_mesh = new bamgmesh(md.priv.bamg.mesh);
+        } else {
+            for (var i = 0; i < md.mesh.numberofvertices; i++) {
+                bamg_mesh.Vertices.push([md.mesh.x[i], md.mesh.y.y[i], 1]);
+            }
+            for (var i = 0; i < md.mesh.numberofelements; i++) {
+                bamg_mesh.Triangles.push([md.mesh.elements[i][0], md.mesh.elements[i][1], md.mesh.elements[i][2], 1]);
+            }
+        }
+
+        if (typeof md.rifts.riftstruct === 'object') {
+            console.log('bamg error message: rifts not supported yet. Do meshprocessrift AFTER bamg');
+        }
+    }
+    //}}}
+    // Bamg Options {{{
+    bamg_options.Crack=options.getfieldvalue('Crack',0);
+    bamg_options.anisomax=options.getfieldvalue('anisomax',Math.pow(10,30));
+    bamg_options.coeff=options.getfieldvalue('coeff',1.);
+    bamg_options.cutoff=options.getfieldvalue('cutoff',Math.pow(10,-5));
+    bamg_options.err=options.getfieldvalue('err',0.01);
+    bamg_options.errg=options.getfieldvalue('errg',0.1);
+    bamg_options.field=options.getfieldvalue('field',[]);
+    bamg_options.gradation=options.getfieldvalue('gradation',1.5);
+    bamg_options.Hessiantype=options.getfieldvalue('Hessiantype',0);
+    bamg_options.hmin=options.getfieldvalue('hmin',Math.pow(10,-100));
+    bamg_options.hmax=options.getfieldvalue('hmax',Math.pow(10,100));
+    bamg_options.hminVertices=options.getfieldvalue('hminVertices',[]);
+    bamg_options.hmaxVertices=options.getfieldvalue('hmaxVertices',[]);
+    bamg_options.hVertices=options.getfieldvalue('hVertices',[]);
+    bamg_options.KeepVertices=options.getfieldvalue('KeepVertices',1);
+    bamg_options.maxnbv=options.getfieldvalue('maxnbv',Math.pow(10,6));
+    bamg_options.maxsubdiv=options.getfieldvalue('maxsubdiv',10.);
+    bamg_options.metric=options.getfieldvalue('metric',[]);
+    bamg_options.Metrictype=options.getfieldvalue('Metrictype',0);
+    bamg_options.nbjacobi=options.getfieldvalue('nbjacobi',1);
+    bamg_options.nbsmooth=options.getfieldvalue('nbsmooth',3);
+    bamg_options.omega=options.getfieldvalue('omega',1.8);
+    bamg_options.power=options.getfieldvalue('power',1.);
+    bamg_options.splitcorners=options.getfieldvalue('splitcorners',1);
+    bamg_options.verbose=options.getfieldvalue('verbose',1);
+    //}}}
+
+    //call Bamg
+    console.log("calling BamgMesher");
+    var return_array=BamgMesher(bamg_mesh,bamg_geometry,bamg_options);
+    var bamgmesh_out=return_array[0];
+    var bamggeom_out=return_array[1];
+
+    if (options.getfieldvalue('vertical', 0) != 0) {
+        md.mesh                     = new mesh2dvertical();
+        md.mesh.x                   = ArrayCol(bamgmesh_out.Vertices, 0);
+        md.mesh.y                   = ArrayCol(bamgmesh_out.Vertices, 1);
+        md.mesh.elements            = ArrayCol(bamgmesh_out.Triangles, [0, 2]);
+        md.mesh.edges               = bamgmesh_out.IssmEdges;
+        md.mesh.segments            = ArrayCol(bamgmesh_out.IssmSegments, [0, 2]);
+        md.mesh.segmentmarkers      = ArrayCol(bamgmesh_out.IssmSegments, 3);
+
+        //Fill in rest of fields:
+        md.mesh.numberofelements    = md.mesh.elements.length;
+        md.mesh.numberofvertices    = md.mesh.x.length;
+        md.mesh.numberofedges       = md.mesh.edges.length;
+        for (var i = 0; i < md.mesh.segments.length; i++) {
+            md.mesh.vertexonboundary[md.mesh.segments[i][0]] = 1;
+            md.mesh.vertexonboundary[md.mesh.segments[i][1]] = 1;
+        }
+    } else if (options.getfieldvalue('3dsurface', 0) != 0) {
+        md.mesh                     = new mesh3dsurface();
+        md.mesh.x                   = ArrayCol(bamgmesh_out.Vertices, 0);
+        md.mesh.y                   = ArrayCol(bamgmesh_out.Vertices, 1);
+        md.mesh.z                   = NewArrayFill(md.mesh.x.length, 0);
+        md.mesh.elements            = ArrayCol(bamgmesh_out.Triangles, [0, 2]);
+        md.mesh.edges               = bamgmesh_out.IssmEdges;
+        md.mesh.segments            = ArrayCol(bamgmesh_out.IssmSegments, [0, 2]);
+        md.mesh.segmentmarkers      = ArrayCol(bamgmesh_out.IssmSegments, 3);
+
+        //Fill in rest of fields:
+        md.mesh.numberofelements    = md.mesh.elements.length;
+        md.mesh.numberofvertices    = md.mesh.x.length;
+        md.mesh.numberofedges       = md.mesh.edges.length;
+        for (var i = 0; i < md.mesh.segments.length; i++) {
+            md.mesh.vertexonboundary[md.mesh.segments[i][0]] = 1;
+            md.mesh.vertexonboundary[md.mesh.segments[i][1]] = 1;
+        }
+    } else { 
+        md.mesh                     = new mesh2d();
+        md.mesh.x                   = ArrayCol(bamgmesh_out.Vertices, 0);
+        md.mesh.y                   = ArrayCol(bamgmesh_out.Vertices, 1);
+        md.mesh.elements            = ArrayCol(bamgmesh_out.Triangles, [0, 2]);
+        md.mesh.edges               = bamgmesh_out.IssmEdges;
+        md.mesh.segments            = ArrayCol(bamgmesh_out.IssmSegments, [0, 2]);
+        md.mesh.segmentmarkers      = ArrayCol(bamgmesh_out.IssmSegments, 3);
+
+        //Fill in rest of fields:
+        md.mesh.numberofelements    = md.mesh.elements.length;
+        md.mesh.numberofvertices    = md.mesh.x.length;
+        md.mesh.numberofedges       = md.mesh.edges.length;
+        md.mesh.vertexonboundary    = NewArrayFill(md.mesh.numberofvertices, 0);
+        for (var i = 0; i < md.mesh.segments.length; i++) {
+            md.mesh.vertexonboundary[md.mesh.segments[i][0]] = 1;
+            md.mesh.vertexonboundary[md.mesh.segments[i][1]] = 1;
+        }
+    }
+
+    //Bamg private fields
+    md.priv.bamg                 = [];
+    md.priv.bamg.mesh            = new bamgmesh(bamgmesh_out);
+    md.priv.bamg.geometry        = new bamggeom(bamggeom_out);
+    md.mesh.elementconnectivity  = md.priv.bamg.mesh.ElementConnectivity;
+    for (var i = 0; i < md.mesh.elementconnectivity.length; i++) {
+        if (isNaN(md.mesh.elementconnectivity[i])) {
+            md.mesh.elementconnectivity[i] = 0;
+        }
+    }
+
+    //Check for orphan
+    for (var i = 0; i < md.mesh.numberofelements; i++) {
+        for (var j = 0; j < 3; j++) {
+            if (md.mesh.elements[i][j] > md.mesh.numberofvertices) {
+                console.log('Output mesh has orphans. Check your Domain and/or RequiredVertices');
+                break;
+            }
+        }
+    }
+} 
+
+function processgeometry(geom,tol,outline){ // {{{
+
+//    //Deal with edges
+//    disp('Checking Edge crossing...');
+//    i=0;
+//    while (i<size(geom.Edges,1)),
+//
+//        //edge counter
+//        i=i+1;
+//
+//        //Get coordinates
+//        x1=geom.Vertices(geom.Edges(i,1),1);
+//        y1=geom.Vertices(geom.Edges(i,1),2);
+//        x2=geom.Vertices(geom.Edges(i,2),1);
+//        y2=geom.Vertices(geom.Edges(i,2),2);
+//        color1=geom.Edges(i,3);
+//
+//        j=i; //test edges located AFTER i only
+//        while (j<size(geom.Edges,1)),
+//
+//            //edge counter
+//            j=j+1;
+//
+//            //Skip if the two edges already have a vertex in common
+//            if ArrayAny(ismember(geom.Edges(i,1:2),geom.Edges(j,1:2))),
+//                continue
+//            }
+//
+//            //Get coordinates
+//            x3=geom.Vertices(geom.Edges(j,1),1);
+//            y3=geom.Vertices(geom.Edges(j,1),2);
+//            x4=geom.Vertices(geom.Edges(j,2),1);
+//            y4=geom.Vertices(geom.Edges(j,2),2);
+//            color2=geom.Edges(j,3);
+//
+//            //Check if the two edges are crossing one another
+//            if SegIntersect([x1 y1; x2 y2],[x3 y3; x4 y4]),
+//
+//                //Get coordinate of intersection point (http://mathworld.wolfram.com/Line-LineIntersection.html)
+//                x=det([det([x1 y1; x2 y2])  x1-x2;det([x3 y3; x4 y4])  x3-x4])/det([x1-x2 y1-y2;x3-x4 y3-y4]);
+//                y=det([det([x1 y1; x2 y2])  y1-y2;det([x3 y3; x4 y4])  y3-y4])/det([x1-x2 y1-y2;x3-x4 y3-y4]);
+//
+//                //Add vertex to the list of vertices
+//                geom.Vertices(end+1,:)=[x y min(color1,color2)];
+//                id=size(geom.Vertices,1);
+//
+//                //Update edges i and j
+//                edgei=geom.Edges(i,:);
+//                edgej=geom.Edges(j,:);
+//                geom.Edges(i,:)    =[edgei[0] id       edgei(3)];
+//                geom.Edges(end+1,:)=[id       edgei[1] edgei(3)];
+//                geom.Edges(j,:)    =[edgej[0] id       edgej(3)];
+//                geom.Edges(end+1,:)=[id       edgej[1] edgej(3)];
+//
+//                //update current edge second tip
+//                x2=x; y2=y;
+//            }
+//        }
+//
+//    }
+//
+//    //Check point outside
+//    disp('Checking for points outside the domain...');
+//    i=0;
+//    num=0;
+//    while (i<size(geom.Vertices,1)),
+//
+//        //vertex counter
+//        i=i+1;
+//
+//        //Get coordinates
+//        x=geom.Vertices(i,1);
+//        y=geom.Vertices(i,2);
+//        color=geom.Vertices(i,3);
+//
+//        //Check that the point is inside the domain
+//        if (color!=1 & !ContourToNodes(x,y,outline[0],1)),
+//
+//            //Remove points from list of Vertices
+//            num=num+1;
+//            geom.Vertices(i,:)=[];
+//
+//            //update edges
+//            [posedges dummy]=find(geom.Edges==i);
+//            geom.Edges(posedges,:)=[];
+//            posedges=find(geom.Edges>i);
+//            geom.Edges(posedges)=geom.Edges(posedges)-1;
+//
+//            //update counter
+//            i=i-1;
+//        }
+//    }
+//    if num,
+//        disp(['WARNING: ' num2str(num) ' points outside the domain outline have been removed']);
+//    }
+//
+//    //Check point spacing
+//    if !isnan(tol),
+//        disp('Checking point spacing...');
+//        i=0;
+//        while (i<size(geom.Vertices,1)),
+//
+//            //vertex counter
+//            i=i+1;
+//
+//            //Get coordinates
+//            x1=geom.Vertices(i,1);
+//            y1=geom.Vertices(i,2);
+//
+//            j=i; //test edges located AFTER i only
+//            while (j<size(geom.Vertices,1)),
+//
+//                //vertex counter
+//                j=j+1;
+//
+//                //Get coordinates
+//                x2=geom.Vertices(j,1);
+//                y2=geom.Vertices(j,2);
+//
+//                //Check whether the two vertices are too close
+//                if ((x2-x1)^2+(y2-y1)^2<tol^2)
+//
+//                    //Remove points from list of Vertices
+//                    geom.Vertices(j,:)=[];
+//
+//                    //update edges
+//                    posedges=find(ismember(geom.Edges,j));
+//                    geom.Edges(posedges)=i;
+//                    posedges=find(geom.Edges>j);
+//                    geom.Edges(posedges)=geom.Edges(posedges)-1;
+//
+//                    //update counter
+//                    j=j-1;
+//
+//                }
+//            }
+//        }
+//    }
+//    //remove empty edges
+//    geom.Edges(find(geom.Edges(:,1)==geom.Edges(:,2)),:)=[];
+} // }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/bamg.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/bamg.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/bamg.m	(revision 27955)
@@ -0,0 +1,705 @@
+function md=bamg(md,varargin)
+%BAMG - mesh generation
+%
+%   Available options (for more details see ISSM website http://issm.jpl.nasa.gov/):
+%
+%   - domain :            followed by an ARGUS file that prescribes the domain outline
+%   - holes :             followed by an ARGUS file that prescribes the holes
+%   - subdomains :        followed by an ARGUS file that prescribes the list of
+%                         subdomains (that need to be inside domain)
+%
+%   - hmin :              minimum edge length (default is 10^-100)
+%   - hmax :              maximum edge length (default is 10^100)
+%   - hVertices :         imposed edge length for each vertex (geometry or mesh)
+%   - hminVertices :      minimum edge length for each vertex (mesh)
+%   - hmaxVertices :      maximum edge length for each vertex (mesh)
+%
+%   - anisomax :          maximum ratio between the smallest and largest edges (default is 10^30)
+%   - coeff :             coefficient applied to the metric (2-> twice as many elements, default is 1)
+%   - cutoff :            scalar used to compute the metric when metric type 2 or 3 are applied
+%   - err :               error used to generate the metric from a field
+%   - errg :              geometric error (default is 0.1)
+%   - field :             field of the model that will be used to compute the metric
+%                         to apply several fields, use one column per field
+%   - gradation :         maximum ratio between two adjacent edges
+%   - Hessiantype :       0 -> use double L2 projection (default)
+%                         1 -> use Green formula
+%   - KeepVertices :      try to keep initial vertices when adaptation is done on an existing mesh (default 1)
+%   - NoBoundaryRefinement: do not refine boundary, only follow contour provided (default 0). Allow subdomain boundary refinement though.
+%   - NoBoundaryRefinementAllBoundaries: do not refine boundary, only follow contour provided (default 0)
+%   - maxnbv :            maximum number of vertices used to allocate memory (default is 10^6)
+%   - maxsubdiv :         maximum subdivision of exisiting elements (default is 10)
+%   - metric :            matrix (numberofnodes x 3) used as a metric
+%   - Metrictype :        0 -> absolute error          c/(err coeff^2) * Abs(H)        (default)
+%                         1 -> relative error          c/(err coeff^2) * Abs(H)/max(s,cutoff*max(s))
+%                         2 -> rescaled absolute error c/(err coeff^2) * Abs(H)/(smax-smin)
+%   - nbjacoby :          correction used by Hessiantype=1 (default is 1)
+%   - nbsmooth :          number of metric smoothing procedure (default is 3)
+%   - omega :             relaxation parameter of the smoothing procedure (default is 1.8)
+%   - power :             power applied to the metric (default is 1)
+%   - splitcorners :      split triangles which have 3 vertices on the outline (default is 1)
+%   - verbose :           level of verbosity (default is 1)
+%
+%   - vertical :          is this a 2d vertical mesh (flowband, default is 0)
+%   - rifts :             followed by an ARGUS file that prescribes the rifts
+%   - toltip :            tolerance to move tip on an existing point of the domain outline
+%   - tracks :            followed by an ARGUS file that prescribes the tracks that the mesh will stick to
+%   - RequiredVertices :  mesh vertices that are required. [x,y,ref]; ref is optional
+%   - tol :               if the distance between 2 points of the domain outline is less than tol, they
+%                         will be merged
+%
+%   Examples:
+%      md=bamg(md,'domain','DomainOutline.exp','hmax',3000);
+%      md=bamg(md,'field',[md.inversion.vel_obs md.geometry.thickness],'hmax',20000,'hmin',1000);
+%      md=bamg(md,'metric',A,'hmin',1000,'hmax',20000,'gradation',3,'anisomax',1);
+
+%process options
+options=pairoptions(varargin{:});
+options=deleteduplicates(options,1);
+
+%initialize the structures required as input of Bamg
+bamg_options=struct();
+bamg_geometry=bamggeom();
+bamg_mesh=bamgmesh();
+
+subdomain_ref = 1;
+hole_ref = 1;
+% Bamg Geometry parameters {{{
+if exist(options,'domain'),
+
+	%Check that file exists
+	domainfile=getfieldvalue(options,'domain');
+	if ischar(domainfile),
+		if ~exist(domainfile,'file') error(['bamg error message: file ' domainfile ' not found']); end
+
+		%read domain according to its extension: 
+		[path,name,ext]=fileparts(domainfile);
+		if strcmp(ext,'.exp'),
+			domain=expread(domainfile);
+		elseif strcmp(ext,'.shp'),
+			domain=shpread(domainfile);
+		else
+			error(['bamg error message: file ' domainfile ' format not supported (.exp or .shp)']);
+		end
+	elseif isstruct(domainfile),
+		domain = domainfile;
+	else
+		error('''domain'' type not supported yet');
+	end
+
+	holes = [];
+	if exist(options,'holes'),
+		holesfile=getfieldvalue(options,'holes');
+		if ischar(holesfile),
+			if ~exist(holesfile,'file') error(['bamg error message: file ' holesfile ' not found']); end
+
+			%read holes according to its extension: 
+			[path,name,ext]=fileparts(holesfile);
+			if strcmp(ext,'.exp'),
+				holes=expread(holesfile);
+			elseif strcmp(ext,'.shp'),
+				holes=shpread(holesfile);
+			else
+				error(['bamg error message: file ' holesfile ' format not supported (.shp or .exp)']);
+			end
+		elseif isstruct(holesfile),
+			holes = holesfile;
+		else
+			error('''holes'' type not supported yet');
+		end
+	end
+	subdomains = [];
+	if exist(options,'subdomains'),
+		subdomainsfile=getfieldvalue(options,'subdomains');
+		if ischar(subdomainsfile),
+			if ~exist(subdomainsfile,'file') error(['bamg error message: file ' subdomainsfile ' not found']); end
+
+			%read subdomains according to its extension: 
+			[path,name,ext]=fileparts(subdomainsfile);
+			if strcmp(ext,'.exp'),
+				subdomains=expread(subdomainsfile);
+			elseif strcmp(ext,'.shp'),
+				subdomains=shpread(subdomainsfile);
+			else
+				error(['bamg error message: file ' subdomainsfile ' format not supported (.shp or .exp)']);
+			end
+		elseif isstruct(subdomainsfile),
+			subdomains = subdomainsfile;
+		else
+			error('''subdomains'' type not supported yet');
+		end
+	end
+
+	%Build geometry 
+	count=0;
+	for i=1:length(domain),
+
+		%Check that the domain is closed
+		if (domain(i).x(1)~=domain(i).x(end) | domain(i).y(1)~=domain(i).y(end)),
+			error('bamg error message: all contours provided in ''domain'' should be closed');
+		end
+
+		%Check that all holes are INSIDE the principle domain outline
+		if i>1,
+			flags=ContourToNodes(domain(i).x,domain(i).y,domain(1),0);
+			if any(~flags),
+				error('bamg error message: All holes should be strictly inside the principal domain');
+			end
+		end
+
+		%Check orientation
+		nods=domain(i).nods-1; %the domain is closed (domain[1] = domain[end])
+		test = sum([(domain(i).x(2:nods+1) - domain(i).x(1:nods)).*(domain(i).y(2:nods+1) + domain(i).y(1:nods))]);
+		if (i==1 && test>0) || (i>1 && test<0),
+			disp('At least one contour was not correctly oriented and has been re-oriented');
+			domain(i).x = flipud(domain(i).x); domain(i).y = flipud(domain(i).y);
+		end
+
+		%Flag how many edges we have so far: 
+		edge_length=length(bamg_geometry.Edges);
+
+		%Add all points to bamg_geometry
+		bamg_geometry.Vertices=[bamg_geometry.Vertices; [domain(i).x(1:nods) domain(i).y(1:nods) ones(nods,1)]];
+		bamg_geometry.Edges   =[bamg_geometry.Edges;    [transpose(count+1:count+nods) transpose([count+2:count+nods count+1])  1*ones(nods,1)]];
+
+		% Flag how many edges we have now, that way we know which edges belong 
+		% to the domain. Will be used later for required edges if 
+		% NoBoundaryRefinement equals 1.
+		new_edge_length=length(bamg_geometry.Edges);
+		edges_required=(edge_length+1):new_edge_length;
+
+		if i>1,
+			bamg_geometry.SubDomains=[bamg_geometry.SubDomains; 2 count+1 1 -subdomain_ref]; 
+			subdomain_ref = subdomain_ref+1;
+		else
+			bamg_geometry.SubDomains=[bamg_geometry.SubDomains; 2 count+1 1 0];
+		end
+
+		%update counter
+		count=count+nods;
+	end
+	for i=1:length(holes),
+
+		%Check that the hole is closed
+		if (holes(i).x(1)~=holes(i).x(end) | holes(i).y(1)~=holes(i).y(end)),
+			error('bamg error message: all contours provided in ''holes'' should be closed');
+		end
+
+		%Check that all holes are INSIDE the principal domain (principal domain should be index 0)
+		flags=ContourToNodes(holes(i).x,holes(i).y,domain(1),0);
+		if any(~flags), error('bamg error message: All holes should be strictly inside the principal domain'); end
+
+		%Check that hole is correctly oriented
+		nods=holes(i).nods-1; %the hole is closed (hole[1] = hole[end])
+		if(sum([(holes(i).x(2:nods+1) - holes(i).x(1:nods)).*(holes(i).y(2:nods+1) + holes(i).y(1:nods))]))<0
+			disp('At least one hole was not correctly oriented and has been re-oriented');
+			holes(i).x = flipud(holes(i).x); holes(i).y = flipud(holes(i).y);
+		end
+
+		%Add all points to bamg_geometry
+		bamg_geometry.Vertices=[bamg_geometry.Vertices; [holes(i).x(1:nods) holes(i).y(1:nods) ones(nods,1)]];
+		bamg_geometry.Edges   =[bamg_geometry.Edges;    [transpose(count+1:count+nods) transpose([count+2:count+nods count+1])  1.*ones(nods,1)]];
+		bamg_geometry.SubDomains=[bamg_geometry.SubDomains; 2 count+1 1 -hole_ref]; hole_ref = hole_ref+1;
+
+		%update counter
+		count=count+nods;
+	end
+	for i=1:length(subdomains),
+
+		%Check that the subdomain is closed
+		if (subdomains(i).x(1)~=subdomains(i).x(end) | subdomains(i).y(1)~=subdomains(i).y(end)),
+			error('bamg error message: all contours provided in ''subdomains'' should be closed');
+		end
+
+		%Checks that all subdomains are INSIDE the principal domain (principal domain should be index 0)
+		flags=ContourToNodes(subdomains(i).x,subdomains(i).y,domain(1),0);
+		if any(~flags),
+			error('bamg error message: All subdomains should be strictly inside the principal domain');
+		end
+
+		%Check that subdomain is correctly oriented
+		nods=subdomains(i).nods-1; % the subdomains are closed (subdomains[1] = subdomains[end])
+		if(sum([(subdomains(i).x(2:nods+1) - subdomains(i).x(1:nods)).*(subdomains(i).y(2:nods+1) + subdomains(i).y(1:nods))]))>0
+			disp('At least one subdomain was not correctly oriented and has been re-oriented');
+			subdomains(i).x = flipud(subdomains(i).x); 
+			subdomains(i).y = flipud(subdomains(i).y);
+		end
+
+		%Add all points to bamg_geometry
+		bamg_geometry.Vertices=[bamg_geometry.Vertices; [subdomains(i).x(1:nods) subdomains(i).y(1:nods) ones(nods,1)]];
+		bamg_geometry.Edges   =[bamg_geometry.Edges;    [transpose(count+1:count+nods) transpose([count+2:count+nods count+1])  1.*ones(nods,1)]];
+		
+		bamg_geometry.SubDomains=[bamg_geometry.SubDomains; 2 count+1 1 subdomain_ref];
+		subdomain_ref = subdomain_ref+1;
+		
+		%update counter
+		count=count+nods;
+	end
+
+	if getfieldvalue(options,'vertical',0),
+		if numel(getfieldvalue(options,'Markers',[]))~=size(bamg_geometry.Edges,1),
+			error(['for 2d vertical mesh, ''Markers'' option is required, and should be of size ' num2str(size(bamg_geometry.Edges,1))]);
+		end
+	end
+	if numel(getfieldvalue(options,'Markers',[]))==size(bamg_geometry.Edges,1),
+		bamg_geometry.Edges(:,3)=getfieldvalue(options,'Markers');
+	end
+
+	%take care of rifts
+	if exist(options,'rifts'),
+		%read rift file according to its extension: 
+		riftfile=getfieldvalue(options,'rifts');
+		[path,name,ext]=fileparts(riftfile);
+		if strcmp(ext,'.exp'),
+			rift=expread(riftfile);
+		elseif strcmp(ext,'.shp'),
+			rift=shpread(riftfile);
+		else
+			error(['bamg error message: file ' riftfile ' format not supported (.exp or .shp)']);
+		end
+
+		for i=1:length(rift),
+
+			%detect whether all points of the rift are inside the domain
+			flags=ContourToNodes(rift(i).x,rift(i).y,domain(1),0);
+			if ~flags,
+				error('one rift has all its points outside of the domain outline'),
+
+			elseif any(~flags),
+				%We have LOTS of work to do
+				disp('Rift tip outside of or on the domain has been detected and is being processed...');
+
+				%check that only one point is outside (for now)
+				if sum(~flags)~=1,
+					error('bamg error message: only one point outside of the domain is supported at this time');
+				end
+
+				%Move tip outside to the first position
+				if flags(1)==0,
+					%OK, first point is outside (do nothing),
+				elseif (flags(end)==0),
+					rift(i).x=flipud(rift(i).x);
+					rift(i).y=flipud(rift(i).y);
+				else
+					error('bamg error message: only a rift tip can be outside of the domain');
+				end
+
+				%Get coordinate of intersection point
+				x1=rift(i).x(1);
+				y1=rift(i).y(1);
+				x2=rift(i).x(2);
+				y2=rift(i).y(2);
+				for j=1:length(domain(1).x)-1;
+					if SegIntersect([x1 y1; x2 y2],[domain(1).x(j) domain(1).y(j); domain(1).x(j+1) domain(1).y(j+1)]),
+
+						%Get position of the two nodes of the edge in domain
+						i1=j;
+						i2=j+1;
+
+						%rift is crossing edge [i1 i2] of the domain
+						%Get coordinate of intersection point (http://mathworld.wolfram.com/Line-LineIntersection.html)
+						x3=domain(1).x(i1); y3=domain(1).y(i1);
+						x4=domain(1).x(i2); y4=domain(1).y(i2);
+						x=det([det([x1 y1; x2 y2])  x1-x2;det([x3 y3; x4 y4])  x3-x4])/det([x1-x2 y1-y2;x3-x4 y3-y4]);
+						y=det([det([x1 y1; x2 y2])  y1-y2;det([x3 y3; x4 y4])  y3-y4])/det([x1-x2 y1-y2;x3-x4 y3-y4]);
+
+						segdis= sqrt((x4-x3)^2+(y4-y3)^2);
+						tipdis=[sqrt((x-x3)^2+(y-y3)^2)  sqrt((x-x4)^2+(y-y4)^2)];
+
+						if (min(tipdis)/segdis) < getfieldvalue(options,'toltip',0),
+							disp('moving tip-domain intersection point');
+
+							%Get position of the closer point
+							if tipdis(1)>tipdis(2),
+								pos=i2;
+							else
+								pos=i1;
+							end
+
+							%This point is only in Vertices (number pos).
+							%OK, now we can add our own rift
+							nods=rift(i).nods-1;
+							bamg_geometry.Vertices=[bamg_geometry.Vertices; [rift(i).x(2:end) rift(i).y(2:end) ones(nods,1)]];
+							bamg_geometry.Edges=[bamg_geometry.Edges;...
+								pos count+1  (1+i);...
+								[transpose(count+1:count+nods-1) transpose(count+2:count+nods)  (1+i)*ones(nods-1,1)]];
+							count=count+nods;
+
+							break;
+
+						else
+							%Add intersection point to Vertices
+							bamg_geometry.Vertices=[bamg_geometry.Vertices; x y 1];
+							count=count+1;
+
+							%Decompose the crossing edge into 2 subedges
+							pos=find(bamg_geometry.Edges(:,1)==i1 & bamg_geometry.Edges(:,2)==i2);
+							if isempty(pos) error('bamg error message: a problem occurred...'); end
+							bamg_geometry.Edges=[bamg_geometry.Edges(1:pos-1,:);...
+								bamg_geometry.Edges(pos,1) count                      bamg_geometry.Edges(pos,3);...
+								count                      bamg_geometry.Edges(pos,2) bamg_geometry.Edges(pos,3);...
+								bamg_geometry.Edges(pos+1:end,:)];
+
+							%OK, now we can add our own rift
+							nods=rift(i).nods-1;
+							bamg_geometry.Vertices=[bamg_geometry.Vertices; [rift(i).x(2:end) rift(i).y(2:end) ones(nods,1)]];
+							bamg_geometry.Edges=[bamg_geometry.Edges;...
+								count  count+1  2 ;...
+								[transpose(count+1:count+nods-1) transpose(count+2:count+nods)  (1+i)*ones(nods-1,1)]];
+							count=count+nods;
+
+							break;
+						end
+					end
+				end
+			else
+				nods=rift(i).nods-1;
+				bamg_geometry.Vertices=[bamg_geometry.Vertices; [rift(i).x(:) rift(i).y(:) ones(nods+1,1)]];
+				bamg_geometry.Edges=[bamg_geometry.Edges; [transpose(count+1:count+nods) transpose(count+2:count+nods+1)  (1+i)*ones(nods,1)]];
+				count=count+nods+1;
+			end
+		end
+	end
+
+	%Deal with tracks
+	if exist(options,'tracks'),
+		%read tracks
+		intrack=getfieldvalue(options,'tracks');
+		if all(ischar(intrack)),
+			intrack=expread(intrack);
+        else
+            intrack=double(intrack); %for some reason, it is of class "single"
+            intrack=struct('x',intrack(:,1),'y',intrack(:,2));
+            intrack=repmat(intrack, [1,1]);
+        end
+        
+        %Process multiple tracks and handle domain intersections
+        track=[];
+        edges=[];
+        newcount=count;
+        for i=1:length(intrack), 
+            nods=size(intrack(i).x,1);
+            newtrack=[intrack(i).x intrack(i).y];
+            newedges=[transpose(newcount+1:newcount+nods-1) transpose(newcount+2:newcount+nods) 3.*ones(nods-1,1)];
+
+            %only keep those inside
+            flags=ContourToNodes(newtrack(:,1),newtrack(:,2),domainfile,0);
+            edgeflags = flags(1:end-1) & flags(2:end);
+
+            %calculate edge offset, accounting for broken tracks
+            offsets=zeros(size(edgeflags,1)+1,3);
+            for j=2:size(offsets,1),
+                if edgeflags(j-1)==0,
+                    offsets(j,:)=offsets(j-1,:)+[1 1 0];
+                else
+                    offsets(j,:)=offsets(j-1,:);
+                end
+            end
+            newedges=newedges-offsets(2:end,:);
+
+            %add track segments
+            newtrack=newtrack(find(flags),:);
+            newedges=newedges(find(edgeflags),:);
+            nods=size(newtrack,1);
+            track=[track; newtrack];
+            edges=[edges; newedges];
+            newcount=newcount+nods;
+        end
+		if(size(track,2)==2), track=[track 3.*ones(size(track,1),1)]; end
+        
+		%Add all points to bamg_geometry
+		nods=size(track,1);
+		bamg_geometry.Vertices=[bamg_geometry.Vertices; track];
+		bamg_geometry.Edges=[bamg_geometry.Edges; edges];
+
+		%update counter
+		count=count+nods;
+	end
+
+	%Deal with vertices that need to be kept by mesher
+	if exist(options,'RequiredVertices'),
+
+		%recover RequiredVertices
+		requiredvertices=double(getfieldvalue(options,'RequiredVertices')); %for some reason, it is of class "single"
+		if(size(requiredvertices,2)==2), requiredvertices=[requiredvertices 4.*ones(size(requiredvertices,1),1)]; end
+
+		%only keep those inside
+		flags=ContourToNodes(requiredvertices(:,1),requiredvertices(:,2),domain(1),0);
+		requiredvertices=requiredvertices(find(flags),:);
+
+		%Add all points to bamg_geometry
+		nods=size(requiredvertices,1);
+		bamg_geometry.Vertices=[bamg_geometry.Vertices; requiredvertices];
+
+		%update counter
+		count=count+nods;
+
+	end
+
+	%Deal with RequiredEdges
+	if getfieldvalue(options,'NoBoundaryRefinement',0)==1,
+		bamg_geometry.RequiredEdges=edges_required';
+	elseif getfieldvalue(options,'NoBoundaryRefinementAllBoundaries',0)==1,
+		bamg_geometry.RequiredEdges=[1:size(bamg_geometry.Edges,1)]';
+	end
+
+	%process geom
+	%bamg_geometry=processgeometry(bamg_geometry,getfieldvalue(options,'tol',NaN),domain(1));
+
+elseif isstruct(md.private.bamg) & isfield(md.private.bamg,'geometry'),
+	bamg_geometry=bamggeom(md.private.bamg.geometry); 
+else
+	%do nothing...
+end
+%}}}
+% Bamg Mesh parameters {{{
+if (~exist(options,'domain') & md.mesh.numberofvertices~=0 & strcmp(elementtype(md.mesh),'Tria')),
+
+	if isstruct(md.private.bamg) & isfield(md.private.bamg,'mesh'),
+		bamg_mesh=bamgmesh(md.private.bamg.mesh);
+	else
+		bamg_mesh.Vertices=[md.mesh.x md.mesh.y ones(md.mesh.numberofvertices,1)];
+		bamg_mesh.Triangles=[md.mesh.elements ones(md.mesh.numberofelements,1)];
+	end
+
+	if isstruct(md.rifts.riftstruct)
+		error('bamg error message: rifts not supported yet. Do meshprocessrift AFTER bamg');
+	end
+end
+%}}}
+% Bamg Options {{{
+bamg_options.Crack=getfieldvalue(options,'Crack',0);
+bamg_options.anisomax=getfieldvalue(options,'anisomax',10.^30);
+bamg_options.coeff=getfieldvalue(options,'coeff',1.);
+bamg_options.cutoff=getfieldvalue(options,'cutoff',10.^-5);
+bamg_options.err=getfieldvalue(options,'err',0.01);
+bamg_options.errg=getfieldvalue(options,'errg',0.1);
+bamg_options.field=getfieldvalue(options,'field',[]);
+bamg_options.gradation=getfieldvalue(options,'gradation',1.5);
+bamg_options.Hessiantype=getfieldvalue(options,'Hessiantype',0);
+bamg_options.hmin=getfieldvalue(options,'hmin',10.^-100);
+bamg_options.hmax=getfieldvalue(options,'hmax',10.^100);
+bamg_options.hminVertices=getfieldvalue(options,'hminVertices',[]);
+bamg_options.hmaxVertices=getfieldvalue(options,'hmaxVertices',[]);
+bamg_options.hVertices=getfieldvalue(options,'hVertices',[]);
+bamg_options.KeepVertices=getfieldvalue(options,'KeepVertices',1);
+bamg_options.maxnbv=getfieldvalue(options,'maxnbv',10^6);
+bamg_options.maxsubdiv=getfieldvalue(options,'maxsubdiv',10.);
+bamg_options.metric=getfieldvalue(options,'metric',[]);
+bamg_options.Metrictype=getfieldvalue(options,'Metrictype',0);
+bamg_options.nbjacobi=getfieldvalue(options,'nbjacobi',1);
+bamg_options.nbsmooth=getfieldvalue(options,'nbsmooth',3);
+bamg_options.omega=getfieldvalue(options,'omega',1.8);
+bamg_options.power=getfieldvalue(options,'power',1.);
+bamg_options.splitcorners=getfieldvalue(options,'splitcorners',1);
+bamg_options.verbose=getfieldvalue(options,'verbose',1);
+%}}}
+
+%call Bamg
+[bamgmesh_out bamggeom_out]=BamgMesher(bamg_mesh,bamg_geometry,bamg_options);
+
+if getfieldvalue(options,'vertical',0),
+	md.mesh=mesh2dvertical();
+	md.mesh.x=bamgmesh_out.Vertices(:,1);
+	md.mesh.y=bamgmesh_out.Vertices(:,2);
+	md.mesh.elements=bamgmesh_out.Triangles(:,1:3);
+	md.mesh.edges=bamgmesh_out.IssmEdges;
+	md.mesh.segments=bamgmesh_out.IssmSegments(:,1:3);
+	md.mesh.segmentmarkers=bamgmesh_out.IssmSegments(:,4);
+
+	%Fill in rest of fields:
+	md.mesh.numberofelements=size(md.mesh.elements,1);
+	md.mesh.numberofvertices=length(md.mesh.x);
+	md.mesh.numberofedges=size(md.mesh.edges,1);
+	md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+
+elseif getfieldvalue(options,'3dsurface',0),
+	
+	md.mesh=mesh3dsurface();
+	md.mesh.x=bamgmesh_out.Vertices(:,1);
+	md.mesh.y=bamgmesh_out.Vertices(:,2);
+	md.mesh.z=md.mesh.x; md.mesh.z(:)=0;
+	md.mesh.elements=bamgmesh_out.Triangles(:,1:3);
+	md.mesh.edges=bamgmesh_out.IssmEdges;
+	md.mesh.segments=bamgmesh_out.IssmSegments(:,1:3);
+	md.mesh.segmentmarkers=bamgmesh_out.IssmSegments(:,4);
+
+	%Fill in rest of fields:
+	md.mesh.numberofelements=size(md.mesh.elements,1);
+	md.mesh.numberofvertices=length(md.mesh.x);
+	md.mesh.numberofedges=size(md.mesh.edges,1);
+	md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+
+else 
+	md.mesh=mesh2d();
+	md.mesh.x=bamgmesh_out.Vertices(:,1);
+	md.mesh.y=bamgmesh_out.Vertices(:,2);
+	md.mesh.elements=bamgmesh_out.Triangles(:,1:3);
+	md.mesh.edges=bamgmesh_out.IssmEdges;
+	md.mesh.segments=bamgmesh_out.IssmSegments(:,1:3);
+	md.mesh.segmentmarkers=bamgmesh_out.IssmSegments(:,4);
+
+	%Fill in rest of fields:
+	md.mesh.numberofelements=size(md.mesh.elements,1);
+	md.mesh.numberofvertices=length(md.mesh.x);
+	md.mesh.numberofedges=size(md.mesh.edges,1);
+	md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+end
+
+%Bamg private fields
+md.private.bamg=struct();
+md.private.bamg.mesh=bamgmesh(bamgmesh_out);
+md.private.bamg.geometry=bamggeom(bamggeom_out);
+md.mesh.elementconnectivity=md.private.bamg.mesh.ElementConnectivity;
+md.mesh.elementconnectivity(find(isnan(md.mesh.elementconnectivity)))=0;
+
+%Check for orphan
+if any(~ismember(1:md.mesh.numberofvertices,sort(unique(reshape(md.mesh.elements,3*md.mesh.numberofelements,1)))))
+	error('Output mesh has orphans. Check your Domain and/or RequiredVertices');
+end
+end 
+
+function geom=processgeometry(geom,tol,outline) % {{{
+
+%Deal with edges
+disp('Checking Edge crossing...');
+i=0;
+while (i<size(geom.Edges,1)),
+
+	%edge counter
+	i=i+1;
+
+	%Get coordinates
+	x1=geom.Vertices(geom.Edges(i,1),1);
+	y1=geom.Vertices(geom.Edges(i,1),2);
+	x2=geom.Vertices(geom.Edges(i,2),1);
+	y2=geom.Vertices(geom.Edges(i,2),2);
+	color1=geom.Edges(i,3);
+
+	j=i; %test edges located AFTER i only
+	while (j<size(geom.Edges,1)),
+
+		%edge counter
+		j=j+1;
+
+		%Skip if the two edges already have a vertex in common
+		if any(ismember(geom.Edges(i,1:2),geom.Edges(j,1:2))),
+			continue
+		end
+
+		%Get coordinates
+		x3=geom.Vertices(geom.Edges(j,1),1);
+		y3=geom.Vertices(geom.Edges(j,1),2);
+		x4=geom.Vertices(geom.Edges(j,2),1);
+		y4=geom.Vertices(geom.Edges(j,2),2);
+		color2=geom.Edges(j,3);
+
+		%Check if the two edges are crossing one another
+		if SegIntersect([x1 y1; x2 y2],[x3 y3; x4 y4]),
+
+			%Get coordinate of intersection point (http://mathworld.wolfram.com/Line-LineIntersection.html)
+			x=det([det([x1 y1; x2 y2])  x1-x2;det([x3 y3; x4 y4])  x3-x4])/det([x1-x2 y1-y2;x3-x4 y3-y4]);
+			y=det([det([x1 y1; x2 y2])  y1-y2;det([x3 y3; x4 y4])  y3-y4])/det([x1-x2 y1-y2;x3-x4 y3-y4]);
+
+			%Add vertex to the list of vertices
+			geom.Vertices(end+1,:)=[x y min(color1,color2)];
+			id=size(geom.Vertices,1);
+
+			%Update edges i and j
+			edgei=geom.Edges(i,:);
+			edgej=geom.Edges(j,:);
+			geom.Edges(i,:)    =[edgei(1) id       edgei(3)];
+			geom.Edges(end+1,:)=[id       edgei(2) edgei(3)];
+			geom.Edges(j,:)    =[edgej(1) id       edgej(3)];
+			geom.Edges(end+1,:)=[id       edgej(2) edgej(3)];
+
+			%update current edge second tip
+			x2=x; y2=y;
+		end
+	end
+
+end
+
+%Check point outside
+disp('Checking for points outside the domain...');
+i=0;
+num=0;
+while (i<size(geom.Vertices,1)),
+
+	%vertex counter
+	i=i+1;
+
+	%Get coordinates
+	x=geom.Vertices(i,1);
+	y=geom.Vertices(i,2);
+	color=geom.Vertices(i,3);
+
+	%Check that the point is inside the domain
+	if (color~=1 & ~ContourToNodes(x,y,outline(1),1)),
+
+		%Remove points from list of Vertices
+		num=num+1;
+		geom.Vertices(i,:)=[];
+
+		%update edges
+		[posedges dummy]=find(geom.Edges==i);
+		geom.Edges(posedges,:)=[];
+		posedges=find(geom.Edges>i);
+		geom.Edges(posedges)=geom.Edges(posedges)-1;
+
+		%update counter
+		i=i-1;
+	end
+end
+if num,
+	disp(['WARNING: ' num2str(num) ' points outside the domain outline have been removed']);
+end
+
+%Check point spacing
+if ~isnan(tol),
+	disp('Checking point spacing...');
+	i=0;
+	while (i<size(geom.Vertices,1)),
+
+		%vertex counter
+		i=i+1;
+
+		%Get coordinates
+		x1=geom.Vertices(i,1);
+		y1=geom.Vertices(i,2);
+
+		j=i; %test edges located AFTER i only
+		while (j<size(geom.Vertices,1)),
+
+			%vertex counter
+			j=j+1;
+
+			%Get coordinates
+			x2=geom.Vertices(j,1);
+			y2=geom.Vertices(j,2);
+
+			%Check whether the two vertices are too close
+			if ((x2-x1)^2+(y2-y1)^2<tol^2)
+
+				%Remove points from list of Vertices
+				geom.Vertices(j,:)=[];
+
+				%update edges
+				posedges=find(ismember(geom.Edges,j));
+				geom.Edges(posedges)=i;
+				posedges=find(geom.Edges>j);
+				geom.Edges(posedges)=geom.Edges(posedges)-1;
+
+				%update counter
+				j=j-1;
+
+			end
+		end
+	end
+end
+%remove empty edges
+geom.Edges(find(geom.Edges(:,1)==geom.Edges(:,2)),:)=[];
+end % }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/bamg.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/bamg.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/bamg.py	(revision 27955)
@@ -0,0 +1,783 @@
+from collections import namedtuple, OrderedDict
+import os.path
+
+import numpy as np
+
+from bamggeom import bamggeom
+from BamgMesher import BamgMesher
+from bamgmesh import bamgmesh
+from ContourToNodes import ContourToNodes
+from expread import expread
+from helpers import fileparts, OrderedStruct
+from mesh2d import *
+from mesh2dvertical import *
+from mesh3dsurface import *
+from pairoptions import pairoptions
+from SegIntersect import SegIntersect
+from shpread import shpread
+
+
+def bamg(md, *args):
+    """BAMG - mesh generation
+
+    Available options (for more details see ISSM website http://issm.jpl.nasa.gov/):
+
+    - domain :                              followed by an ARGUS file that
+                                            prescribes the domain outline
+    - holes :                               followed by an ARGUS file that
+                                            prescribes the holes
+    - subdomains :                          followed by an ARGUS file that
+                                            prescribes the list of subdomains
+                                            (that need to be inside domain)
+
+    - hmin :                                minimum edge length (default is
+                                            1.0e-100)
+    - hmax :                                maximum edge length (default is
+                                            1.0e100)
+    - hVertices :                           imposed edge length for each vertex
+                                            (geometry or mesh)
+    - hminVertices :                        minimum edge length for each vertex
+                                            (mesh)
+    - hmaxVertices :                        maximum edge length for each vertex
+                                            (mesh)
+
+    - anisomax :                            maximum ratio between the smallest
+                                            and largest edges (default is
+                                            1.0e30)
+    - coeff :                               coefficient applied to the metric
+                                            (2 -> twice as many elements,
+                                            default is 1)
+    - cutoff :                              scalar used to compute the metric
+                                            when metric type 2 or 3 are applied
+    - err :                                 error used to generate the metric
+                                            from a field
+    - errg :                                geometric error (default is 0.1)
+    - field :                               field of the model that will be
+                                            used to compute the metric to apply
+                                            several fields, use one column per
+                                            field
+    - gradation :                           maximum ratio between two adjacent
+                                            edges
+    - Hessiantype :                         0 -> use double P2 projection
+                                            (default)
+                                            1 -> use Green formula
+    - KeepVertices :                        try to keep initial vertices when
+                                            adaptation is done on an existing
+                                            mesh (default 1)
+    - NoBoundaryRefinement :                do not refine boundary, only follow
+                                            contour provided (default 0). Allow
+                                            subdomain boundary refinement
+                                            though
+    - NoBoundaryRefinementAllBoundaries :   do not refine boundary, only follow
+                                            contour provided (default 0)
+    - maxnbv :                              maximum number of vertices used to
+                                            allocate memory (default is 1.0e6)
+    - maxsubdiv :                           maximum subdivision of exisiting
+                                            elements (default is 10)
+    - metric :                              matrix (numberofnodes x 3) used as
+                                            a metric
+    - Metrictype :                          1 -> absolute error
+                                            c/(err coeff^2) * Abs(H) (default)
+                                            2 -> relative error
+                                            c / (err coeff^2) * Abs(H) /
+                                            max(s, cutoff * max(s))
+                                            3 -> rescaled absolute error
+                                            c / (err coeff^2) * Abs(H) /
+                                            (smax - smin)
+    - nbjacoby :                            correction used by Hessiantype = 1
+                                            (default is 1)
+    - nbsmooth :                            number of metric smoothing
+                                            procedure (default is 3)
+    - omega :                               relaxation parameter of the
+                                            smoothing procedure (default is
+                                            1.8)
+    - power :                               power applied to the metric
+                                            (default is 1)
+    - splitcorners :                        split triangles which have 3
+                                            vertices on the outline (default is
+                                            1)
+    - verbose :                             level of verbosity (default is 1)
+
+    - rifts :                               followed by an ARGUS file that
+                                            prescribes the rifts
+    - toltip :                              tolerance to move tip on an
+                                            existing point of the domain
+                                            outline
+    - tracks :                              followed by an ARGUS file that
+                                            prescribes the tracks that the mesh
+                                            will stick to
+    - RequiredVertices :                    mesh vertices that are required.
+                                            [x, y, ref]; ref is optional
+    - tol :                                 if the distance between 2 points of
+                                            the domain outline is less than
+                                            tol, they will be merged
+
+    Examples:
+        md = bamg(md, 'domain', 'DomainOutline.exp', 'hmax', 3000)
+        md = bamg(md, 'field', [md.inversion.vel_obs md.geometry.thickness], 'hmax', 20000, 'hmin', 1000)
+        md = bamg(md, 'metric', A, 'hmin', 1000, 'hmax', 20000, 'gradation', 3, 'anisomax', 1)
+
+    TODO:
+    - Verify that values of third column of bamg_geometry.Vertices and bamg_geometry.Edges are valid (compare to src/m/mesh/bamg.m)
+    """
+
+    # Process options
+    options = pairoptions(*args)
+    #options = deleteduplicates(options, 1)
+
+    # Initialize the structures required as input of Bamg
+    bamg_options = OrderedDict()
+    bamg_geometry = bamggeom()
+    bamg_mesh = bamgmesh()
+
+    subdomain_ref = 1
+    hole_ref = 1
+
+    # Bamg Geometry parameters {{{
+    if options.exist('domain'):
+        #Check that file exists
+        domainfile = options.getfieldvalue('domain')
+        if type(domainfile) == str:
+            if not os.path.exists(domainfile):
+                raise IOError("bamg error message: file {} not found".format( domainfile))
+
+            # Read domain according to its extension
+            path, name, ext = fileparts(domainfile)
+            if ext == '.exp':
+                domain = expread(domainfile)
+            elif ext == '.shp':
+                domain = shpread(domainfile)
+            else:
+                raise Exception('bamg error message: file {} format not supported (.exp or .shp)'.format(domainfile))
+            domain = expread(domainfile)
+        elif type(domainfile) == list:
+            if len(domainfile):
+                if type(domainfile[0]) in [dict, OrderedDict]:
+                    domain = domainfile
+                else:
+                    raise Exception("bamg error message: if 'domain' is a list, its elements must be of type dict or OrderedDict")
+            else:
+                domain = domainfile
+        elif type(domainfile) in [dict, OrderedDict]:
+            domain = [domainfile]
+        else:
+            raise Exception("bamg error message: 'domain' type {} not supported yet".format(type(domainfile)))
+
+        holes = []
+        if options.exist('holes'):
+            holesfile = options.getfieldvalue('holes')
+            if type(holesfile) == str:
+                if not os.path.exists(holesfile):
+                    raise IOError("bamg error message: file {} not found".format(holesfile))
+
+                # Read holes accoridng to its extension
+                path, name, ext = fileparts(holesfile)
+                if ext == '.exp':
+                    holes = expread(holesfile)
+                elif ext == '.shp':
+                    holes = shpread(holesfile)
+                else:
+                    raise Exception('bamg error message: file {} format not supported (.exp or .shp)'.format(holesfile))
+            elif type(holesfile) == list:
+                if len(holesfile):
+                    if type(holesfile[0]) in [dict, OrderedDict]:
+                        holes = holesfile
+                    else:
+                        raise Exception('bamg error message: if \'holes\' is a list, its elements must be of type dict or OrderedDict')
+                else:
+                    holes = holesfile
+            elif type(holesfile) in [dict, OrderedDict]:
+                holes = [holesfile]
+            else:
+                raise Exception('\'holes\' type {} not supported yet'.format(type(holesfile)))
+
+        subdomains = []
+        if options.exist('subdomains'):
+            subdomainsfile = options.getfieldvalue('subdomains')
+            if type(subdomainsfile) == str:
+                if not os.path.exists(subdomainsfile):
+                    raise IOError('bamg error message: file {} not found'.format(subdomainsfile))
+
+                # Read subdomains accoridng to its extension
+                path, name, ext = fileparts(subdomainsfile)
+                if ext == '.exp':
+                    subdomains = expread(subdomainsfile)
+                elif ext == '.shp':
+                    subdomains = shpread(subdomainsfile)
+                else:
+                    raise Exception('bamg error message: file {} format not supported (.exp or .shp)'.format(subdomainsfile))
+            elif type(subdomainsfile) == list:
+                if len(subdomainsfile):
+                    if type(subdomainsfile[0]) in [dict, OrderedDict]:
+                        subdomains = subdomainsfile
+                    else:
+                        raise Exception('bamg error message: if \'subdomains\' is a list, its elements must be of type dict or OrderedDict')
+                else:
+                    subdomains = subdomainsfile
+            elif type(subdomainsfile) in [dict, OrderedDict]:
+                subdomains = [subdomainsfile]
+            else:
+                raise Exception('\'subdomains\' type {} not supported yet'.format(type(subdomainsfile)))
+
+        # Build geometry
+        count = 0
+        for i in range(len(domain)):
+            # Check that the domain is closed
+            if (domain[i]['x'][0] != domain[i]['x'][-1] or domain[i]['y'][0] != domain[i]['y'][-1]):
+                raise RuntimeError('bamg error message: all contours provided in \'domain\' should be closed')
+
+            # Check that all holes are INSIDE the principle domain outline
+            if i:
+                flags = ContourToNodes(domain[i]['x'], domain[i]['y'], [domain[0]], 0)[0] # NOTE: Down stack call to FetchPythonData requires contour to be a list of struct if we are not passing in a path to a file, hence the odd addressing: '[domain[0]]'
+                if np.any(np.logical_not(flags)):
+                    raise RuntimeError('bamg error message: All holes should be strictly inside the principal domain')
+
+            # Check orientation
+            nods = domain[i]['nods'] - 1  # the domain is closed (domain[0] = domain[-1])
+            test = np.sum((domain[i]['x'][1:nods + 1] - domain[i]['x'][0:nods]) * (domain[i]['y'][1:nods + 1] + domain[i]['y'][0:nods]))
+            if (i == 0 and test > 0) or (i > 0 and test < 0):
+                print('At least one contour was not correctly oriented and has been re-oriented')
+                domain[i]['x'] = np.flipud(domain[i]['x'])
+                domain[i]['y'] = np.flipud(domain[i]['y'])
+
+            # Flag how many edges we have so far
+            edge_length = len(bamg_geometry.Edges)
+
+            # Add all points to bamg_geometry
+            #nods = domain[i]['nods'] - 1  #the domain are closed 0 = end
+            bamg_geometry.Vertices = np.vstack((bamg_geometry.Vertices, np.vstack((domain[i]['x'][0:nods], domain[i]['y'][0:nods], np.ones((nods)))).T))
+            bamg_geometry.Edges = np.vstack((bamg_geometry.Edges, np.vstack((np.arange(count + 1, count + nods + 1), np.hstack((np.arange(count + 2, count + nods + 1), count + 1)), 1. * np.ones((nods)))).T))
+
+            # Flag how many edges we have now, that way we know which edges
+            # belong to the subdomain. Will be used later fo required edges
+            # if NoBoundaryRefinement equals 1.
+            new_edge_length = len(bamg_geometry.Edges)
+            edges_required = np.asarray(range((edge_length + 1), (new_edge_length + 1)))  # NOTE: Upper bound of range is non-inclusive (compare to src/m/mesh/bamg.m)
+            if i: # NOTE: same as `if i > 0` (MATLAB is `if i > 1`)
+                bamg_geometry.SubDomains = np.vstack((bamg_geometry.SubDomains, [2, count + 1, 1, -subdomain_ref]))
+                subdomain_ref = subdomain_ref + 1
+            else:
+                bamg_geometry.SubDomains = np.vstack((bamg_geometry.SubDomains, [2, count + 1, 1, 0]))
+
+            # Update counter
+            count += nods
+
+        for i in range(len(holes)):
+            # heck that the hole is closed
+            if (holes[i]['x'][0] != holes[i]['x'][-1] or holes[i]['y'][0] != holes[i]['y'][-1]):
+                raise RuntimeError('bamg error message: all contours provided in \'hole\' should be closed')
+
+            # Check that all holes are INSIDE the principal domain (principal domain should be index 0)
+            flags = ContourToNodes(holes[i]['x'], holes[i]['y'], [domain[0]], 0)[0] # NOTE: Down stack call to FetchPythonData requires contour to be a list of struct if we are not passing in a path to a file, hence the odd addressing: '[domain[0]]'
+            if np.any(np.logical_not(flags)):
+                raise RuntimeError('bamg error message: All holes should be strictly inside the principal domain')
+
+            # Check that hole is correctly oriented
+            nods = holes[i]['nods'] - 1  # the holes are closed (holes[0] = holes[-1])
+            test = np.sum((holes[i]['x'][1:nods + 1] - holes[i]['x'][0:nods]) * (holes[i]['y'][1:nods + 1] + holes[i]['y'][0:nods]))
+            if test < 0:
+                print('At least one hole was not correctly oriented and has been re-oriented')
+                holes[i]['x'] = np.flipud(holes[i]['x'])
+                holes[i]['y'] = np.flipud(holes[i]['y'])
+
+            # Add all points to bamg_geometry
+            #nods = holes[i]['nods'] - 1  # the hole is closed (hole[0] = hole[-1])
+            bamg_geometry.Vertices = np.vstack((bamg_geometry.Vertices, np.vstack((holes[i]['x'][0:nods], holes[i]['y'][0:nods], np.ones((nods)))).T))
+            bamg_geometry.Edges = np.vstack((bamg_geometry.Edges, np.vstack((np.arange(count + 1, count + nods + 1), np.hstack((np.arange(count + 2, count + nods + 1), count + 1)), 1. * np.ones((nods)))).T))
+            bamg.geometry.SubDomains = np.vstack((bamg_geometry.SubDomains, [2, count + 1, 1, -hole_ref]))
+            hole_ref = hole_ref + 1
+
+            # Update counter
+            count += nods
+
+        for i in range(len(subdomains)):
+            # Check that the subdomain is closed
+            if (subdomains[i]['x'][0] != subdomains[i]['x'][-1] or subdomains[i]['y'][0] != subdomains[i]['y'][-1]):
+                raise RuntimeError('bamg error message: all contours provided in \'subdomains\' should be closed')
+
+            # Check that all subdomains are INSIDE the principal domain (principal domain should be index 0)
+            flags = ContourToNodes(subdomains[i]['x'], subdomains[i]['y'], [domain[0]], 0)[0] # NOTE: Down stack call to FetchPythonData requires contour to be a list of struct if we are not passing in a path to a file, hence the odd addressing: '[domain[0]]'
+            if np.any(np.logical_not(flags)):
+                raise RuntimeError('bamg error message: All subdomains should be strictly inside the principal domain')
+
+            # Check that subdomain is correctly oriented
+            nods = subdomains[i]['nods'] - 1  # the subdomains are closed (subdomains[0] = subdomains[-1])
+
+            test = np.sum((subdomains[i]['x'][1:nods + 1] - subdomains[i]['x'][0:nods]) * (subdomains[i]['y'][1:nods + 1] + subdomains[i]['y'][0:nods]))
+            if test:
+                print('At least one subcontour was not correctly oriented and has been re-oriented')
+                subdomains[i]['x'] = np.flipud(subdomains[i]['x'])
+                subdomains[i]['y'] = np.flipud(subdomains[i]['y'])
+
+            #Add all points to bamg_geometry
+            #nods = subdomains[i]['nods'] - 1  # the subdomains are closed (subdomains[0] = subdomains[-1])
+            bamg_geometry.Vertices = np.vstack((bamg_geometry.Vertices, np.vstack((subdomains[i]['x'][0:nods], subdomains[i]['y'][0:nods], np.ones((nods)))).T))
+            bamg_geometry.Edges = np.vstack((bamg_geometry.Edges, np.vstack((np.arange(count + 1, count + nods + 1), np.hstack((np.arange(count + 2, count + nods + 1), count + 1)), 1. * np.ones((nods)))).T))
+            bamg_geometry.SubDomains = np.vstack((bamg_geometry.SubDomains, [2, count + 1, 1, subdomain_ref]))
+            subdomain_ref = subdomain_ref + 1
+
+            # Update counter
+            count += nods
+
+        if options.getfieldvalue('vertical', 0):
+            if np.size(options.getfieldvalue('Markers', [])) != np.size(bamg_geometry.Edges, 0):
+                raise RuntimeError('for 2d vertical mesh, \'Markers\' option is required, and should be of size {}'.format(str(np.size(bamg_geometry.Edges, 0))))
+        if np.size(options.getfieldvalue('Markers', [])) == np.size(bamg_geometry.Edges, 0):
+            bamg_geometry.Edges[:, 2] = options.getfieldvalue('Markers')
+
+        # Take care of rifts
+        if options.exist('rifts'):
+            # Read rift file according to its extension
+            riftfile = options.getfieldvalue('rifts')
+            path, name, ext = fileparts(riftfile)
+            if ext == '.exp':
+                rift = expread(riftfile)
+            elif ext == '.shp':
+                rift = shpread(riftfile)
+            else:
+                raise IOError('bamg error message: file \'{}\' format not supported (.exp or .shp)'.format(riftfile))
+
+            for i in range(len(rift)):
+                # Detect whether all points of the rift are inside the domain
+                flags = ContourToNodes(rift[i]['x'], rift[i]['y'], [domain[0]], 0)[0] # NOTE: Down stack call to FetchPythonData requires contour to be a list of struct if we are not passing in a path to a file, hence the odd addressing: '[domain[0]]'
+                if np.all(np.logical_not(flags)):
+                    raise RuntimeError('one rift has all its points outside of the domain outline')
+                elif np.any(np.logical_not(flags)):
+                    # We have LOTS of work to do
+                    print('Rift tip outside of or on the domain has been detected and is being processed...')
+
+                    # Check that only one point is outside (for now)
+                    if np.sum(np.logical_not(flags).astype(int)) != 1:
+                        raise RuntimeError('bamg error message: only one point outside of the domain is supported at this time')
+
+                    # Move tip outside to the first position
+                    if not flags[0]:
+                        # OK, first point is outside (do nothing),
+                        pass
+                    elif not flags[-1]:
+                        rift[i]['x'] = np.flipud(rift[i]['x'])
+                        rift[i]['y'] = np.flipud(rift[i]['y'])
+                    else:
+                        raise RuntimeError('bamg error message: only a rift tip can be outside of the domain')
+
+                    # Get coordinate of intersection point
+                    x1 = rift[i]['x'][0]
+                    y1 = rift[i]['y'][0]
+                    x2 = rift[i]['x'][1]
+                    y2 = rift[i]['y'][1]
+                    for j in range(0, np.size(domain[0]['x']) - 1):
+                        if SegIntersect(np.array([[x1, y1], [x2, y2]]), np.array([[domain[0]['x'][j], domain[0]['y'][j]], [domain[0]['x'][j + 1], domain[0]['y'][j + 1]]])):
+
+                            # Get position of the two nodes of the edge in domain
+                            i1 = j
+                            i2 = j + 1
+
+                            # Rift is crossing edge [i1, i2] of the domain
+                            # Get coordinate of intersection point (http://mathworld.wolfram.com/Line-LineIntersection.html)
+                            x3 = domain[0]['x'][i1]
+                            y3 = domain[0]['y'][i1]
+                            x4 = domain[0]['x'][i2]
+                            y4 = domain[0]['y'][i2]
+                            x = np.linalg.det(np.array([[np.linalg.det(np.array([[x1, y1], [x2, y2]])), x1 - x2], [np.linalg.det(np.array([[x3, y3], [x4, y4]])), x3 - x4]])) / np.linalg.det(np.array([[x1 - x2, y1 - y2], [x3 - x4, y3 - y4]]))
+                            y = np.linalg.det(np.array([[np.linalg.det(np.array([[x1, y1], [x2, y2]])), y1 - y2], [np.linalg.det(np.array([[x3, y3], [x4, y4]])), y3 - y4]])) / np.linalg.det(np.array([[x1 - x2, y1 - y2], [x3 - x4, y3 - y4]]))
+
+                            segdis = sqrt((x4 - x3)**2 + (y4 - y3)**2)
+                            tipdis = np.array([sqrt((x - x3)**2 + (y - y3)**2), sqrt((x - x4)**2 + (y - y4)**2)])
+
+                            if np.min(tipdis) / segdis < options.getfieldvalue('toltip', 0):
+                                print('moving tip-domain intersection point')
+
+                                # Get position of the closer point
+                                if tipdis[0] > tipdis[1]:
+                                    pos = i2
+                                else:
+                                    pos = i1
+
+                                # This point is only in Vertices (number pos).
+                                # OK, now we can add our own rift
+                                nods = rift[i]['nods'] - 1
+                                bamg_geometry.Vertices = np.vstack((bamg_geometry.Vertices, np.hstack((rift[i]['x'][1:].reshape(-1, ), rift[i]['y'][1:].reshape(-1, ), np.ones((nods, 1))))))
+                                bamg_geometry.Edges = np.vstack((
+                                    bamg_geometry.Edges,
+                                    np.array([[pos, count + 1, (1 + i)]]),
+                                    np.hstack((np.arange(count + 1, count + nods).reshape(-1, ), np.arange(count + 2, count + nods + 1).reshape(-1, ), (1 + i) * np.ones((nods - 1, 1))))
+                                ))
+                                count += nods
+                                break
+                            else:
+                                # Add intersection point to Vertices
+                                bamg_geometry.Vertices = np.vstack((bamg_geometry.Vertices,
+                                    np.array([[x, y, 1]])
+                                ))
+                                count += 1
+
+                                # Decompose the crossing edge into 2 subedges
+                                pos = np.nonzero(np.logical_and(bamg_geometry.Edges[:, 0] == i1, bamg_geometry.Edges[:, 1] == i2))[0]
+                                if not pos:
+                                    raise RuntimeError('bamg error message: a problem occurred...')
+                                bamg_geometry.Edges = np.vstack((
+                                    bamg_geometry.Edges[0:pos - 1, :],
+                                    np.array([[
+                                        bamg_geometry.Edges[pos, 0],
+                                        count,
+                                        bamg_geometry.Edges[pos, 2]
+                                    ]]),
+                                    np.array([[
+                                        count,
+                                        bamg_geometry.Edges[pos, 1],
+                                        bamg_geometry.Edges[pos, 2]
+                                    ]]),
+                                    bamg_geometry.Edges[pos + 1:, :]
+                                ))
+
+                                # OK, now we can add our own rift
+                                nods = rift[i]['nods'] - 1
+                                bamg_geometry.Vertices = np.vstack((bamg_geometry.Vertices,
+                                    np.hstack((
+                                        rift[i]['x'][1:].reshape(-1, ),
+                                        rift[i]['y'][1:].reshape(-1, ),
+                                        np.ones((nods, 1))
+                                    ))
+                                ))
+                                bamg_geometry.Edges = np.vstack((
+                                    bamg_geometry.Edges,
+                                    np.array([[count, count + 1, 2]]),
+                                    np.hstack((
+                                        np.arange(count + 1, count + nods).reshape(-1, ),
+                                        np.arange(count + 2, count + nods + 1).reshape(-1, ),
+                                        (1 + i) * np.ones((nods - 1, 1))
+                                    ))
+                                ))
+                                count += nods
+                                break
+                else:
+                    nods = rift[i]['nods'] - 1
+                    bamg_geometry.Vertices = np.vstack((
+                        bamg_geometry.Vertices,
+                        np.hstack((
+                            rift[i]['x'][:],
+                            rift[i]['y'][:],
+                            np.ones((nods + 1, 1))
+                        ))
+                    ))
+                    bamg_geometry.Edges = np.vstack((
+                        bamg_geometry.Edges,
+                        np.hstack((
+                            np.arange(count + 1, count + nods).reshape(-1, ),
+                            np.arange(count + 2, count + nods + 1).reshape(-1, ),
+                            i * np.ones((nods, 1))
+                        ))
+                    ))
+                    count += (nods + 1)
+
+        # Deal with tracks
+        if options.exist('tracks'):
+            # Read tracks
+            track = options.getfieldvalue('tracks')
+            if all(isinstance(track, str)):
+                A = expread(track)
+                track = np.hstack((A.x.reshape(-1, ), A.y.reshape(-1, )))
+            else:
+                track = float(track)
+
+            if np.size(track, axis=1) == 2:
+                track = np.hstack((track, 3. * np.ones((size(track, axis=0), 1))))
+
+            # Only keep those inside
+            flags = ContourToNodes(track[:, 0], track[:, 1], [domain[0]], 0)[0] # NOTE: Down stack call to FetchPythonData requires contour to be a list of struct if we are not passing in a path to a file, hence the odd addressing: '[domain[0]]'
+            track = track[np.nonzero(flags), :]
+
+            # Add all points to bamg_geometry
+            nods = np.size(track, axis=0)
+            bamg_geometry.Vertices = np.vstack((bamg_geometry.Vertices, track))
+            bamg_geometry.Edges = np.vstack((
+                bamg_geometry.Edges,
+                np.hstack((
+                    np.arange(count + 1, count + nods).reshape(-1, ),
+                    np.arange(count + 2, count + nods + 1).reshape(-1, ),
+                    3. * np.ones((nods - 1, 1))
+                ))
+            ))
+
+            # Update counter
+            count += nods
+
+        # Deal with vertices that need to be kept by mesher
+        if options.exist('RequiredVertices'):
+            # Recover RequiredVertices
+            requiredvertices = options.getfieldvalue('RequiredVertices')
+            if np.size(requiredvertices, axis=1) == 2:
+                requiredvertices = np.hstack((requiredvertices, 4. * np.ones((np.size(requiredvertices, axis=0), 1))))
+
+            # Only keep those inside
+            flags = ContourToNodes(requiredvertices[:, 0], requiredvertices[:, 1], [domain[0]], 0)[0] # NOTE: Down stack call to FetchPythonData requires contour to be a list of struct if we are not passing in a path to a file, hence the odd addressing: '[domain[0]]'
+            requiredvertices = requiredvertices[np.nonzero(flags)[0], :]
+
+            # Add all points to bamg_geometry
+            nods = np.size(requiredvertices, axis=0)
+            bamg_geometry.Vertices = np.vstack((bamg_geometry.Vertices, requiredvertices))
+
+            # Update counter
+            count += nods
+
+        # Deal with RequiredEdges
+        if options.getfieldvalue('NoBoundaryRefinement', 0):
+            bamg_geometry.RequiredEdges = edges_required
+        elif options.getfieldvalue('NoBoundaryRefinementAllBoundaries', 0):
+            bamg_geometry.RequiredEdges = np.arange(1, bamg_geometry.Edges.shape[0]).T
+
+        # Process geom
+        #bamg_geometry = processgeometry(bamg_geometry, options.getfieldvalue('tol', np.nan), domain[0])
+    elif isinstance(md.private.bamg, dict) and 'geometry' in md.private.bamg:
+        bamg_geometry = bamggeom(md.private.bamg['geometry'].__dict__)
+    else:
+        #do nothing...
+        pass
+    # }}}
+    # Bamg mesh parameters {{{
+    if not options.exist('domain') and md.mesh.numberofvertices and md.mesh.elementtype() == 'Tria':
+        if isinstance(md.private.bamg, dict) and 'mesh' in md.private.bamg:
+            bamg_mesh = bamgmesh(md.private.bamg['mesh'].__dict__)
+        else:
+            bamg_mesh.Vertices = np.vstack((
+                md.mesh.x,
+                md.mesh.y,
+                np.ones((md.mesh.numberofvertices))
+            )).T
+            bamg_mesh.Triangles = np.hstack((md.mesh.elements, np.ones((md.mesh.numberofelements, 1))))
+
+        if isinstance(md.rifts.riftstruct, dict):
+            raise TypeError("bamg error message: rifts not supported yet. Do meshprocessrift AFTER bamg")
+    # }}}
+    # Bamg options {{{
+    bamg_options['Crack'] = options.getfieldvalue('Crack', 0)
+    bamg_options['anisomax'] = options.getfieldvalue('anisomax', pow(10.0, 18))
+    bamg_options['coeff'] = options.getfieldvalue('coeff', 1.0)
+    bamg_options['cutoff'] = options.getfieldvalue('cutoff', pow(10.0, -5))
+    bamg_options['err'] = options.getfieldvalue('err', np.array([[0.01]]))
+    bamg_options['errg'] = options.getfieldvalue('errg', 0.1)
+    bamg_options['field'] = options.getfieldvalue('field', np.empty((0, 1)))
+    bamg_options['gradation'] = options.getfieldvalue('gradation', 1.5)
+    bamg_options['Hessiantype'] = options.getfieldvalue('Hessiantype', 0)
+    bamg_options['hmin'] = options.getfieldvalue('hmin', pow(10.0, -100))
+    bamg_options['hmax'] = options.getfieldvalue('hmax', pow(10.0, 100))
+    bamg_options['hminVertices'] = options.getfieldvalue('hminVertices', np.empty((0, 1)))
+    bamg_options['hmaxVertices'] = options.getfieldvalue('hmaxVertices', np.empty((0, 1)))
+    bamg_options['hVertices'] = options.getfieldvalue('hVertices', np.empty((0, 1)))
+    bamg_options['KeepVertices'] = options.getfieldvalue('KeepVertices', 1)
+    bamg_options['maxnbv'] = options.getfieldvalue('maxnbv', pow(10, 6))
+    bamg_options['maxsubdiv'] = options.getfieldvalue('maxsubdiv', 10.0)
+    bamg_options['metric'] = options.getfieldvalue('metric', np.empty((0, 1)))
+    bamg_options['Metrictype'] = options.getfieldvalue('Metrictype', 0)
+    bamg_options['nbjacobi'] = options.getfieldvalue('nbjacobi', 1)
+    bamg_options['nbsmooth'] = options.getfieldvalue('nbsmooth', 3)
+    bamg_options['omega'] = options.getfieldvalue('omega', 1.8)
+    bamg_options['power'] = options.getfieldvalue('power', 1.0)
+    bamg_options['splitcorners'] = options.getfieldvalue('splitcorners', 1)
+    bamg_options['verbose'] = options.getfieldvalue('verbose', 1)
+    # }}}
+
+    # Call Bamg
+    bamgmesh_out, bamggeom_out = BamgMesher(bamg_mesh.__dict__, bamg_geometry.__dict__, bamg_options)
+
+    # Plug results onto model
+    if options.getfieldvalue('vertical', 0):
+        md.mesh = mesh2dvertical()
+        md.mesh.x = bamgmesh_out['Vertices'][:, 0].copy()
+        md.mesh.y = bamgmesh_out['Vertices'][:, 1].copy()
+        md.mesh.elements = bamgmesh_out['Triangles'][:, 0:3].astype(int)
+        md.mesh.edges = bamgmesh_out['IssmEdges'].astype(int)
+        md.mesh.segments = bamgmesh_out['IssmSegments'][:, 0:3].astype(int)
+        md.mesh.segmentmarkers = bamgmesh_out['IssmSegments'][:, 3].astype(int)
+
+        # Fill in rest of fields
+        md.mesh.numberofelements = np.size(md.mesh.elements, axis=0)
+        md.mesh.numberofvertices = np.size(md.mesh.x)
+        md.mesh.numberofedges = np.size(md.mesh.edges, axis=0)
+        md.mesh.vertexonboundary = np.zeros(md.mesh.numberofvertices, int)
+        md.mesh.vertexonboundary[md.mesh.segments[:, 0:2] - 1] = 1
+
+    elif options.getfieldvalue('3dsurface', 0):
+        md.mesh = mesh3dsurface()
+        md.mesh.x = bamgmesh_out['Vertices'][:, 0].copy()
+        md.mesh.y = bamgmesh_out['Vertices'][:, 1].copy()
+        md.mesh.z = md.mesh.x
+        md.mesh.z[:] = 0
+        md.mesh.elements = bamgmesh_out['Triangles'][:, 0:3].astype(int)
+        md.mesh.edges = bamgmesh_out['IssmEdges'].astype(int)
+        md.mesh.segments = bamgmesh_out['IssmSegments'][:, 0:3].astype(int)
+        md.mesh.segmentmarkers = bamgmesh_out['IssmSegments'][:, 3].astype(int)
+
+        # Fill in rest of fields
+        md.mesh.numberofelements = np.size(md.mesh.elements, axis=0)
+        md.mesh.numberofvertices = np.size(md.mesh.x)
+        md.mesh.numberofedges = np.size(md.mesh.edges, axis=0)
+        md.mesh.vertexonboundary = np.zeros(md.mesh.numberofvertices, int)
+        md.mesh.vertexonboundary[md.mesh.segments[:, 0:2] - 1] = 1
+
+    else:
+        md.mesh = mesh2d()
+        md.mesh.x = bamgmesh_out['Vertices'][:, 0].copy()
+        md.mesh.y = bamgmesh_out['Vertices'][:, 1].copy()
+        md.mesh.elements = bamgmesh_out['Triangles'][:, 0:3].astype(int)
+        md.mesh.edges = bamgmesh_out['IssmEdges'].astype(int)
+        md.mesh.segments = bamgmesh_out['IssmSegments'][:, 0:3].astype(int)
+        md.mesh.segmentmarkers = bamgmesh_out['IssmSegments'][:, 3].astype(int)
+
+        # Fill in rest of fields
+        md.mesh.numberofelements = np.size(md.mesh.elements, axis=0)
+        md.mesh.numberofvertices = np.size(md.mesh.x)
+        md.mesh.numberofedges = np.size(md.mesh.edges, axis=0)
+        md.mesh.vertexonboundary = np.zeros(md.mesh.numberofvertices, int)
+        md.mesh.vertexonboundary[md.mesh.segments[:, 0:2] - 1] = 1
+
+    # Bamg private fields
+    md.private.bamg = OrderedDict()
+    md.private.bamg['mesh'] = bamgmesh(bamgmesh_out)
+    md.private.bamg['geometry'] = bamggeom(bamggeom_out)
+    md.mesh.elementconnectivity = md.private.bamg['mesh'].ElementConnectivity
+    md.mesh.elementconnectivity[np.nonzero(np.isnan(md.mesh.elementconnectivity))] = 0
+    md.mesh.elementconnectivity = md.mesh.elementconnectivity.astype(int)
+
+    # Check for orphan
+    if np.any(np.logical_not(np.in1d(np.arange(1, md.mesh.numberofvertices + 1), md.mesh.elements.flat))):
+        raise RuntimeError('Output mesh has orphans. Check your Domain and/or RequiredVertices')
+
+    return md
+
+
+def processgeometry(geom, tol, outline):  # {{{
+    raise RuntimeError('bamg.py::processgeometry is not complete.')
+
+    # Deal with edges
+    print('Checking Edge crossing...')
+    i = 0
+    while (i < np.size(geom.Edges, axis=0)):
+        # Edge counter
+        i += 1
+
+        # Get coordinates
+        x1 = geom.Vertices[geom.Edges[i, 0], 0]
+        y1 = geom.Vertices[geom.Edges[i, 0], 1]
+        x2 = geom.Vertices[geom.Edges[i, 1], 0]
+        y2 = geom.Vertices[geom.Edges[i, 1], 1]
+        color1 = geom.Edges[i, 2]
+
+        j = i # Test edges located AFTER i only
+        while (j < np.size(geom.Edges, axis=0)):
+            # Edge counter
+            j += 1
+
+            # Skip if the two edges already have a vertex in common
+            if any(m.ismember(geom.Edges[i, 0:2], geom.Edges[j, 0:2])):
+                continue
+
+            # Get coordinates
+            x3 = geom.Vertices[geom.Edges[j, 0], 0]
+            y3 = geom.Vertices[geom.Edges[j, 0], 1]
+            x4 = geom.Vertices[geom.Edges[j, 1], 0]
+            y4 = geom.Vertices[geom.Edges[j, 1], 1]
+            color2 = geom.Edges[j, 2]
+
+            # Check if the two edges are crossing one another
+            if SegIntersect(np.array([[x1, y1], [x2, y2]]), np.array([[x3, y3], [x4, y4]])):
+
+                # Get coordinate of intersection point (http://mathworld.wolfram.com/Line-LineIntersection.html)
+                x = np.linalg.det(np.array([np.linalg.det(np.array([[x1, y1], [x2, y2]])), x1 - x2], [np.linalg.det(np.array([[x3, y3], [x4, y4]])), x3 - x4]) / np.linalg.det(np.array([[x1 - x2, y1 - y2], [x3 - x4, y3 - y4]])))
+                y = np.linalg.det(np.array([np.linalg.det(np.array([[x1, y1], [x2, y2]])), y1 - y2], [np.linalg.det(np.array([[x3, y3], [x4, y4]])), y3 - y4]) / np.linalg.det(np.array([[x1 - x2, y1 - y2], [x3 - x4, y3 - y4]])))
+
+                # Add vertex to the list of vertices
+                geom.Vertices = np.vstack((geom.Vertices, [x, y, min(color1, color2)]))
+                id = np.size(geom.Vertices, axis=0)
+
+                # Update edges i and j
+                edgei = geom.Edges[i, :].copy()
+                edgej = geom.Edges[j, :].copy()
+                geom.Edges[i, :] = [edgei(0), id, edgei(2)]
+                geom.Edges = np.vstack((geom.Edges, [id, edgei(1), edgei(2)]))
+                geom.Edges[j, :] = [edgej(0), id, edgej(2)]
+                geom.Edges = np.vstack((geom.Edges, [id, edgej(1), edgej(2)]))
+
+                # Update current edge second tip
+                x2 = x
+                y2 = y
+
+    # Check point outside
+    print('Checking for points outside the domain...')
+    i = 0
+    num = 0
+    while (i < np.size(geom.Vertices, axis=0)):
+        # Vertex counter
+        i += 1
+
+        # Get coordinates
+        x = geom.Vertices[i, 0]
+        y = geom.Vertices[i, 1]
+        color = geom.Vertices[i, 2]
+
+        # Check that the point is inside the domain
+        if color != 1 and not ContourToNodes(x, y, outline[0], 1):
+            # Remove points from list of Vertices
+            num += 1
+            geom.Vertices[i, :] = []
+
+            # Update edges
+            posedges = np.nonzero(geom.Edges == i)
+            geom.Edges[posedges[0], :] = []
+            posedges = np.nonzero(geom.Edges > i)
+            geom.Edges[posedges] = geom.Edges[posedges] - 1
+
+            # Update counter
+            i -= 1
+
+    if num:
+        print(('WARNING: {} points outside the domain outline have been removed'.format(num)))
+
+    """
+    %Check point spacing
+    if ~isnan(tol),
+            print('Checking point spacing...')
+            i = 0
+            while (i < size(geom.Vertices, 1)),
+
+                    %vertex counter
+                    i = i + 1
+
+                    %Get coordinates
+                    x1 = geom.Vertices(i, 1)
+                    y1 = geom.Vertices(i, 2)
+
+                    j = i; %test edges located AFTER i only
+                    while (j < size(geom.Vertices, 1)),
+
+                            %vertex counter
+                            j = j + 1
+
+                            %Get coordinates
+                            x2 = geom.Vertices(j, 1)
+                            y2 = geom.Vertices(j, 2)
+
+                            %Check whether the two vertices are too close
+                            if ((x2 - x1)**2 + (y2 - y1)**2 < tol**2)
+
+                                    %Remove points from list of Vertices
+                                    geom.Vertices(j, :) = []
+
+                                    %update edges
+                                    posedges = find(m.ismember(geom.Edges, j))
+                                    geom.Edges(posedges)=i
+                                    posedges = find(geom.Edges > j)
+                                    geom.Edges(posedges)=geom.Edges(posedges) - 1
+
+                                    %update counter
+                                    j = j - 1
+
+                            end
+                    end
+            end
+    end
+    %remove empty edges
+    geom.Edges(find(geom.Edges(:, 1) == geom.Edges(:, 2)), :) = []
+    """
+    return geom
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/bamgflowband.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/bamgflowband.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/bamgflowband.m	(revision 27955)
@@ -0,0 +1,36 @@
+function md=bamgflowband(md,x,surf,base,varargin);
+%BAMGFLOWBAND - create flowband mesh with bamg
+%
+%   Usage:
+%      md=bamgflowband(md,x,surf,base,OPTIONS)
+%
+%      surf and bed are the surface elevation and base for each x provided
+%      x must be increasing
+%      OPTIONS are bamg options
+%
+%   Example:
+%      x =[1:100:3000];
+%      h=linspace(1000,300,numel(x));
+%      b=-917/1023*h;
+%      md=bamgflowband(model,b+h,b,'hmax',80,'vertical',1,'Markers',m);
+
+%Write expfile with domain outline
+A=struct();
+A.x=[x;flipud(x);x(1)];
+A.y=[base;flipud(surf);base(1)];
+A.nods = numel(A.x);
+
+%markers:
+m                          = ones(numel(A.x)-1,1); % base        = 1
+m(numel(x))                = 2;                    % right side  = 2
+m(numel(x)+1:2*numel(x)-1) = 3;                    % top surface = 3
+m(2*numel(x))              = 4;                    % left side   = 4
+
+%mesh domain
+md=bamg(model(),'domain',A,'vertical',1,'Markers',m,varargin{:});
+
+%Deal with vertices on bed
+md.mesh.vertexonbase=zeros(md.mesh.numberofvertices,1);
+md.mesh.vertexonbase(find(vertexflags(md.mesh,1)))=1;
+md.mesh.vertexonsurface=zeros(md.mesh.numberofvertices,1);
+md.mesh.vertexonsurface(find(vertexflags(md.mesh,3)))=1;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/bamgflowband.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/bamgflowband.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/bamgflowband.py	(revision 27955)
@@ -0,0 +1,47 @@
+import numpy as np
+from model import *
+from collections import OrderedDict
+from bamg import *
+from mesh2dvertical import *
+
+
+def bamgflowband(md, x, surf, base, *args):
+    """BAMGFLOWBAND - create flowband mesh with bamg
+
+    Usage:
+        md = bamgflowband(md, x, surf, base, OPTIONS)
+
+        surf and bed are the surface elevation and base for each x provided
+        x must be increasing
+        OPTIONS are bamg options
+
+    Example:
+        x = np.arrange(1, 3001, 100)
+        h = linspace(1000, 300, numel(x))
+        b= -917 / 1023 * h
+        md = bamgflowband(model, b + h, b, 'hmax', 80, 'vertical', 1, 'Markers', m)
+    """
+
+    #Write expfile with domain outline
+    A = OrderedDict()
+    A['x'] = np.concatenate((x, np.flipud(x), [x[0]]))
+    A['y'] = np.concatenate((base, np.flipud(surf), [base[0]]))
+    A['nods'] = np.size(A['x'])
+
+    #markers:
+    m = np.ones((np.size(A['x']) - 1, ))  # base = 1
+    m[np.size(x) - 1] = 2  # right side = 2
+    m[np.size(x):2 * np.size(x) - 1] = 3  # top surface = 3
+    m[2 * np.size(x) - 1] = 4  # left side = 4
+
+    #mesh domain
+    md = bamg(model(), 'domain', [A], 'vertical', 1, 'Markers', m, *args)
+    #print md.mesh.numberofvertices
+
+    #Deal with vertices on bed
+    md.mesh.vertexonbase = np.zeros((md.mesh.numberofvertices, ))
+    md.mesh.vertexonbase[np.where(md.mesh.vertexflags(1))] = 1
+    md.mesh.vertexonsurface = np.zeros((md.mesh.numberofvertices, ))
+    md.mesh.vertexonsurface[np.where(md.mesh.vertexflags(3))] = 1
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/findsegments.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/findsegments.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/findsegments.m	(revision 27955)
@@ -0,0 +1,91 @@
+function segments=findsegments(md,varargin)
+%FINDSEGMENTS - build segments model field
+%
+%   Usage:
+%      segments=findsegments(md,varargin);
+%
+%   Optional inputs:
+%      'mesh.elementconnectivity'
+
+%get options
+options=pairoptions(varargin{:});
+
+%Get connectivity
+mesh.elementconnectivity=getfieldvalue(options,'mesh.elementconnectivity',md.mesh.elementconnectivity);
+
+%Now, build the connectivity tables for this mesh if not correctly done
+if size(md.mesh.elementconnectivity,1)~=md.mesh.numberofelements,
+	if exist(options,'mesh.elementconnectivity'),
+		error('''mesh.elementconnectivity'' option does not have thge right size.');
+	else
+		mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+	end
+end
+
+%Recreate the segments
+elementonboundary=double(mesh.elementconnectivity(:,3)==0);
+pos=find(elementonboundary);
+num_segments=length(pos);
+segments=zeros(num_segments,3);
+count=1;
+
+%loop over the segments
+for i=1:num_segments,
+
+	%get current element on boundary
+	el1=pos(i);
+
+	%get elements connected to el1
+	els2=mesh.elementconnectivity(el1,find(mesh.elementconnectivity(el1,:)));
+
+	%get nodes of 'el1'
+	nods1=md.mesh.elements(el1,:);
+
+	%'el1' is connected to 2 other elements
+	if length(els2)>1,
+
+		%find the common vertices to the two elements connected to el1 (1 or 2)
+		flag=intersect(md.mesh.elements(els2(1),:),md.mesh.elements(els2(2),:));
+
+		%get the vertices on the boundary and build segment
+		nods1(find(ismember(nods1,flag)))=[];
+		segments(count,:)=[nods1 el1];
+
+		%swap segment nodes if necessary
+		ord1=find(nods1(1)==md.mesh.elements(el1,:));
+		ord2=find(nods1(2)==md.mesh.elements(el1,:));
+
+		if ( (ord1==1 & ord2==2) | (ord1==2 & ord2==3) | (ord1==3 & ord2==1) ),
+			temp=segments(count,1);
+			segments(count,1)=segments(count,2);
+			segments(count,2)=temp;
+		end
+		segments(count,1:2)=fliplr(segments(count,1:2));
+		count=count+1;
+
+	%'el1' is connected to only one element
+	else
+		%find the vertex that 'el1' does not share with 'els2'
+		flag=setdiff(nods1,md.mesh.elements(els2,:));
+
+		for j=1:3,
+			nods=nods1;
+			nods(j)=[];
+			if any(ismember(flag,nods)),
+
+				segments(count,:)=[nods el1];
+
+				%swap segment nodes if necessary
+				ord1=find(nods(1)==md.mesh.elements(el1,:));
+				ord2=find(nods(2)==md.mesh.elements(el1,:));
+				if ( (ord1==1 & ord2==2) | (ord1==2 & ord2==3) | (ord1==3 & ord2==1) ),
+					temp=segments(count,1);
+					segments(count,1)=segments(count,2);
+					segments(count,2)=temp;
+				end
+				segments(count,1:2)=fliplr(segments(count,1:2));
+				count=count+1;
+			end
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/findsegments.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/findsegments.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/findsegments.py	(revision 27955)
@@ -0,0 +1,98 @@
+import numpy as np
+
+from ElementConnectivity import ElementConnectivity
+from helpers import struct
+from intersect import intersect
+from pairoptions import pairoptions
+
+def findsegments(md, *args):  # {{{
+    """FINDSEGMENTS - build segments model field
+
+    Usage:
+        segments = findsegments(md, args)
+
+    Optional inputs:
+        'mesh.elementconnectivity'
+    """
+
+    # Get options
+    options = pairoptions(*args)
+
+    # Get connectivity
+    mesh = struct()
+    mesh.elementconnectivity = options.getfieldvalue('mesh.elementconnectivity', md.mesh.elementconnectivity)
+
+    # Now, build the connectivity tables for this mesh if not correctly done
+    if md.mesh.elementconnectivity.shape[0] != md.mesh.numberofelements:
+        if options.exist('mesh.elementconnectivity'):
+            raise Exception('\'mesh.elementconnectivity\' option does not have the right size.')
+        else:
+            mesh.elementconnectivity = ElementConnectivity(md.mesh.elements, md.mesh.vertexconnectivity)
+
+    # Recreate the segments
+    elementonboundary = np.zeros((md.mesh.numberofelements, ))
+    elementonboundary[np.where(mesh.elementconnectivity[:, 2] == 0)[0]] = 1
+    pos = np.nonzero(elementonboundary)[0]
+    num_segments = len(pos)
+    segments = np.zeros((num_segments, 3)).astype(int)
+    count = 0
+
+    # Loop over the segments
+    for i in range(num_segments):
+        # Get current element on boundary
+        el1 = pos[i]
+
+        # Get elements connected to 'el1'
+        els2 = mesh.elementconnectivity[el1, np.nonzero(mesh.elementconnectivity[el1, :])[0]]
+
+        # Get nodes of 'el1'
+        nods1 = md.mesh.elements[el1, :]
+
+        # 'el1' is connected to 2 other elements
+        if len(els2) > 1:
+
+            # Find the common vertices to the two elements connected to 'el1' (1 or 2)
+            flag = intersect(md.mesh.elements[els2[0] - 1, :], md.mesh.elements[els2[1] - 1, :])[0] # NOTE: Throwing away second- and third- position values returned from call
+
+            # Get the vertices on the boundary and build segment
+            nods1 = np.delete(nods1, np.where(np.in1d(nods1, flag, assume_unique=True)))
+            segments[count, :] = np.append(nods1, el1 + 1)
+
+            # Swap segment nodes if necessary
+            ord1 = np.where(nods1[0] == md.mesh.elements[el1, :])[0][0]
+            ord2 = np.where(nods1[1] == md.mesh.elements[el1, :])[0][0]
+
+            if ((ord1 == 0 and ord2 == 1) or (ord1 == 1 and ord2 == 2) or (ord1 == 2 and ord2 == 0)):
+                temp = segments[count, 0]
+                segments[count, 0] = segments[count, 1]
+                segments[count, 1] = temp
+
+            segments[count, 0:2] = np.flip(segments[count, 0:2]) # NOTE: Upper bound of index range is non-inclusive
+            count = count + 1
+        # 'el1' is connected to only one element
+        else:
+            # NOTE: This block is untested as it does not get touched by test2004 (remove this note once it has been tested)
+
+            # Find the vertex that 'el1' does not share with 'els2'
+            flag = np.setdiff1d(nods, md.mesh.elements[els2, :])
+
+            for j in range(3):
+                nods = nods1
+                nods = np.delete(nods, j)
+                if np.any(np.in1d(flag, nods)):
+                    segments[count, :] = np.append(nods, el1 + 1)
+
+                    # Swap segment nodes if necessary
+                    ord1 = np.where(nods1[0] == md.mesh.elements[el1, :])[0][0]
+                    ord2 = np.where(nods1[1] == md.mesh.elements[el1, :])[0][0]
+
+                    if ((ord1 == 0 and ord2 == 1) or (ord1 == 1 and ord2 == 2) or (ord1 == 2 and ord2 == 0)):
+                        temp = segments[count, 0]
+                        segments[count, 0] = segments[count, 1]
+                        segments[count, 1] = temp
+
+                    segments[count, 0:2] = np.flip(segments[count, 0:2]) # NOTE: Upper bound of index range is non-inclusive
+                    count = count + 1
+
+    return segments
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/intersections.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/intersections.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/intersections.m	(revision 27955)
@@ -0,0 +1,279 @@
+function [x0,y0,iout,jout] = intersections(x1,y1,x2,y2,robust)
+%INTERSECTIONS Intersections of curves.
+%   Computes the (x,y) locations where two curves intersect.  The curves
+%   can be broken with NaNs or have vertical segments.
+%
+% Example:
+%   [X0,Y0] = intersections(X1,Y1,X2,Y2,ROBUST);
+%
+% where X1 and Y1 are equal-length vectors of at least two points and
+% represent curve 1.  Similarly, X2 and Y2 represent curve 2.
+% X0 and Y0 are column vectors containing the points at which the two
+% curves intersect.
+%
+% ROBUST (optional) set to 1 or true means to use a slight variation of the
+% algorithm that might return duplicates of some intersection points, and
+% then remove those duplicates.  The default is true, but since the
+% algorithm is slightly slower you can set it to false if you know that
+% your curves don't intersect at any segment boundaries.  Also, the robust
+% version properly handles parallel and overlapping segments.
+%
+% The algorithm can return two additional vectors that indicate which
+% segment pairs contain intersections and where they are:
+%
+%   [X0,Y0,I,J] = intersections(X1,Y1,X2,Y2,ROBUST);
+%
+% For each element of the vector I, I(k) = (segment number of (X1,Y1)) +
+% (how far along this segment the intersection is).  For example, if I(k) =
+% 45.25 then the intersection lies a quarter of the way between the line
+% segment connecting (X1(45),Y1(45)) and (X1(46),Y1(46)).  Similarly for
+% the vector J and the segments in (X2,Y2).
+%
+% You can also get intersections of a curve with itself.  Simply pass in
+% only one curve, i.e.,
+%
+%   [X0,Y0] = intersections(X1,Y1,ROBUST);
+%
+% where, as before, ROBUST is optional.
+
+% Version: 1.10, 25 February 2008
+% Author:  Douglas M. Schwarz
+% Email:   dmschwarz=ieee*org, dmschwarz=urgrad*rochester*edu
+% Real_email = regexprep(Email,{'=','*'},{'@','.'})
+
+
+% Theory of operation:
+%
+% Given two line segments, L1 and L2,
+%
+%   L1 endpoints:  (x1(1),y1(1)) and (x1(2),y1(2))
+%   L2 endpoints:  (x2(1),y2(1)) and (x2(2),y2(2))
+%
+% we can write four equations with four unknowns and then solve them.  The
+% four unknowns are t1, t2, x0 and y0, where (x0,y0) is the intersection of
+% L1 and L2, t1 is the distance from the starting point of L1 to the
+% intersection relative to the length of L1 and t2 is the distance from the
+% starting point of L2 to the intersection relative to the length of L2.
+%
+% So, the four equations are
+%
+%    (x1(2) - x1(1))*t1 = x0 - x1(1)
+%    (x2(2) - x2(1))*t2 = x0 - x2(1)
+%    (y1(2) - y1(1))*t1 = y0 - y1(1)
+%    (y2(2) - y2(1))*t2 = y0 - y2(1)
+%
+% Rearranging and writing in matrix form,
+%
+%  [x1(2)-x1(1)       0       -1   0;      [t1;      [-x1(1);
+%        0       x2(2)-x2(1)  -1   0;   *   t2;   =   -x2(1);
+%   y1(2)-y1(1)       0        0  -1;       x0;       -y1(1);
+%        0       y2(2)-y2(1)   0  -1]       y0]       -y2(1)]
+%
+% Let's call that A*T = B.  We can solve for T with T = A\B.
+%
+% Once we have our solution we just have to look at t1 and t2 to determine
+% whether L1 and L2 intersect.  If 0 <= t1 < 1 and 0 <= t2 < 1 then the two
+% line segments cross and we can include (x0,y0) in the output.
+%
+% In principle, we have to perform this computation on every pair of line
+% segments in the input data.  This can be quite a large number of pairs so
+% we will reduce it by doing a simple preliminary check to eliminate line
+% segment pairs that could not possibly cross.  The check is to look at the
+% smallest enclosing rectangles (with sides parallel to the axes) for each
+% line segment pair and see if they overlap.  If they do then we have to
+% compute t1 and t2 (via the A\B computation) to see if the line segments
+% cross, but if they don't then the line segments cannot cross.  In a
+% typical application, this technique will eliminate most of the potential
+% line segment pairs.
+
+
+% Input checks.
+error(nargchk(2,5,nargin))
+
+% Adjustments when fewer than five arguments are supplied.
+switch nargin
+	case 2
+		robust = true;
+		x2 = x1;
+		y2 = y1;
+		self_intersect = true;
+	case 3
+		robust = x2;
+		x2 = x1;
+		y2 = y1;
+		self_intersect = true;
+	case 4
+		robust = true;
+		self_intersect = false;
+	case 5
+		self_intersect = false;
+end
+
+% x1 and y1 must be vectors with same number of points (at least 2).
+if sum(size(x1) > 1) ~= 1 || sum(size(y1) > 1) ~= 1 || ...
+		length(x1) ~= length(y1)
+	error('X1 and Y1 must be equal-length vectors of at least 2 points.')
+end
+% x2 and y2 must be vectors with same number of points (at least 2).
+if sum(size(x2) > 1) ~= 1 || sum(size(y2) > 1) ~= 1 || ...
+		length(x2) ~= length(y2)
+	error('X2 and Y2 must be equal-length vectors of at least 2 points.')
+end
+
+
+% Force all inputs to be column vectors.
+x1 = x1(:);
+y1 = y1(:);
+x2 = x2(:);
+y2 = y2(:);
+
+% Compute number of line segments in each curve and some differences we'll
+% need later.
+n1 = length(x1) - 1;
+n2 = length(x2) - 1;
+xy1 = [x1 y1];
+xy2 = [x2 y2];
+dxy1 = diff(xy1);
+dxy2 = diff(xy2);
+
+% Determine the combinations of i and j where the rectangle enclosing the
+% i'th line segment of curve 1 overlaps with the rectangle enclosing the
+% j'th line segment of curve 2.
+[i,j] = find(repmat(min(x1(1:end-1),x1(2:end)),1,n2) <= ...
+	repmat(max(x2(1:end-1),x2(2:end)).',n1,1) & ...
+	repmat(max(x1(1:end-1),x1(2:end)),1,n2) >= ...
+	repmat(min(x2(1:end-1),x2(2:end)).',n1,1) & ...
+	repmat(min(y1(1:end-1),y1(2:end)),1,n2) <= ...
+	repmat(max(y2(1:end-1),y2(2:end)).',n1,1) & ...
+	repmat(max(y1(1:end-1),y1(2:end)),1,n2) >= ...
+	repmat(min(y2(1:end-1),y2(2:end)).',n1,1));
+
+% For one segment in x1,y1, i and j are returned as row vectors.  They
+% need to be column vectors, or iout and jout below will err out.
+% (jes, 6/11/10)
+
+if (size(i,1) == 1)
+    i=i';
+end
+if (size(j,1) == 1)
+    j=j';
+end
+
+% Find segments pairs which have at least one vertex = NaN and remove them.
+% This line is a fast way of finding such segment pairs.  We take
+% advantage of the fact that NaNs propagate through calculations, in
+% particular subtraction (in the calculation of dxy1 and dxy2, which we
+% need anyway) and addition.
+% At the same time we can remove redundant combinations of i and j in the
+% case of finding intersections of a line with itself.
+if self_intersect
+	remove = isnan(sum(dxy1(i,:) + dxy2(j,:),2)) | j <= i + 1;
+else
+	remove = isnan(sum(dxy1(i,:) + dxy2(j,:),2));
+end
+i(remove) = [];
+j(remove) = [];
+
+% Initialize matrices.  We'll put the T's and B's in matrices and use them
+% one column at a time.  AA is a 3-D extension of A where we'll use one
+% plane at a time.
+n = length(i);
+T = zeros(4,n);
+AA = zeros(4,4,n);
+AA([1 2],3,:) = -1;
+AA([3 4],4,:) = -1;
+AA([1 3],1,:) = dxy1(i,:).';
+AA([2 4],2,:) = dxy2(j,:).';
+B = -[x1(i) x2(j) y1(i) y2(j)].';
+
+% Loop through possibilities.  Trap singularity warning and then use
+% lastwarn to see if that plane of AA is near singular.  Process any such
+% segment pairs to determine if they are colinear (overlap) or merely
+% parallel.  That test consists of checking to see if one of the endpoints
+% of the curve 2 segment lies on the curve 1 segment.  This is done by
+% checking the cross product
+%
+%   (x1(2),y1(2)) - (x1(1),y1(1)) x (x2(2),y2(2)) - (x1(1),y1(1)).
+%
+% If this is close to zero then the segments overlap.
+
+% If the robust option is false then we assume no two segment pairs are
+% parallel and just go ahead and do the computation.  If A is ever singular
+% a warning will appear.  This is faster and obviously you should use it
+% only when you know you will never have overlapping or parallel segment
+% pairs.
+
+if robust
+	overlap = false(1,n);
+	warning_state = warning('off','MATLAB:singularMatrix');
+	% Use try-catch to guarantee original warning state is restored.
+	try
+		lastwarn('')
+		for k = 1:n
+			T(:,k) = AA(:,:,k)\B(:,k);
+			[unused,last_warn] = lastwarn;
+			lastwarn('')
+			if strcmp(last_warn,'MATLAB:singularMatrix')
+				% Force in_range(k) to be false.
+				T(1,k) = NaN;
+				% Determine if these segments overlap or are just parallel.
+				overlap(k) = rcond([dxy1(i(k),:);xy2(j(k),:) - xy1(i(k),:)]) < eps;
+			end
+		end
+		warning(warning_state)
+	catch
+		warning(warning_state)
+		rethrow(lasterror)
+	end
+	% Find where t1 and t2 are between 0 and 1 and return the corresponding
+	% x0 and y0 values.
+	in_range = T(1,:) >= 0 & T(2,:) >= 0 & T(1,:) <= 1 & T(2,:) <= 1;
+	% For overlapping segment pairs the algorithm will return an
+	% intersection point that is at the center of the overlapping region.
+	if any(overlap)
+		ia = i(overlap);
+		ja = j(overlap);
+		% set x0 and y0 to middle of overlapping region.
+		T(3,overlap) = (max(min(x1(ia),x1(ia+1)),min(x2(ja),x2(ja+1))) + ...
+			min(max(x1(ia),x1(ia+1)),max(x2(ja),x2(ja+1)))).'/2;
+		T(4,overlap) = (max(min(y1(ia),y1(ia+1)),min(y2(ja),y2(ja+1))) + ...
+			min(max(y1(ia),y1(ia+1)),max(y2(ja),y2(ja+1)))).'/2;
+		selected = in_range | overlap;
+	else
+		selected = in_range;
+	end
+	xy0 = T(3:4,selected).';
+	
+	% Remove duplicate intersection points.
+	[xy0,index] = unique(xy0,'rows');
+	x0 = xy0(:,1);
+	y0 = xy0(:,2);
+	
+	% Compute how far along each line segment the intersections are.
+	if nargout > 2
+		sel_index = find(selected);
+		sel = sel_index(index);
+		iout = i(sel) + T(1,sel).';
+		jout = j(sel) + T(2,sel).';
+	end
+else % non-robust option
+	for k = 1:n
+		[L,U] = lu(AA(:,:,k));
+		T(:,k) = U\(L\B(:,k));
+	end
+	
+	% Find where t1 and t2 are between 0 and 1 and return the corresponding
+	% x0 and y0 values.
+	in_range = T(1,:) >= 0 & T(2,:) >= 0 & T(1,:) < 1 & T(2,:) < 1;
+	x0 = T(3,in_range).';
+	y0 = T(4,in_range).';
+	
+	% Compute how far along each line segment the intersections are.
+	if nargout > 2
+		iout = i(in_range) + T(1,in_range).';
+		jout = j(in_range) + T(2,in_range).';
+	end
+end
+
+% Plot the results (useful for debugging).
+% plot(x1,y1,x2,y2,x0,y0,'ok');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/labelconnectedregions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/labelconnectedregions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/labelconnectedregions.m	(revision 27955)
@@ -0,0 +1,26 @@
+function labels = labelconnectedregions(md)
+%LABELCONNECTEDREGIONS - label connected components of a mesh
+%
+%   Usage:
+%      labels = labelconnectedregions(md)
+
+if size(md.mesh.elements,2)~=3,
+	error('not suppored yet (but easy to extend :)');
+end
+
+disp('Generate adjacency matrix');
+pairs = [
+md.mesh.elements(:,[1 2])
+md.mesh.elements(:,[2 1])
+md.mesh.elements(:,[2 3])
+md.mesh.elements(:,[3 2])
+md.mesh.elements(:,[3 1])
+md.mesh.elements(:,[1 3])
+];
+A = sparse(pairs(:,1), pairs(:,2), 1);
+
+disp('Construct graph');
+G = graph(A);
+
+disp('Label connected pieces');
+labels = conncomp(G);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/loneedges.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/loneedges.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/loneedges.m	(revision 27955)
@@ -0,0 +1,24 @@
+function edges=loneedges(md)
+
+	edges=[];
+
+	for e=1:md.mesh.numberofelements, 
+		for j=1:3, 
+			if j==3,
+				ind1=md.mesh.elements(e,3);
+				ind2=md.mesh.elements(e,1);
+			else
+				ind1=md.mesh.elements(e,j);
+				ind2=md.mesh.elements(e,j+1);
+			end
+
+			%edge ind1 and ind2: 
+			els1=md.mesh.vertexconnectivity(ind1,1: md.mesh.vertexconnectivity(ind1,end));
+			els2=md.mesh.vertexconnectivity(ind2,1: md.mesh.vertexconnectivity(ind2,end));
+			els=intersect(els1,els2);
+			if length(els)~=2,
+				edges=[edges;[ind1,ind2]];
+			end
+			end
+		end
+	end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/mesh3dsurfaceplug2d.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/mesh3dsurfaceplug2d.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/mesh3dsurfaceplug2d.m	(revision 27955)
@@ -0,0 +1,77 @@
+function mh=mh3dsurfaceplug2d(mh,mh2,flags,segments,xsegs,ysegs,varargin)
+%MESH3DSURFACEPLUG2D - plug 2d mesh into a 3D surface mesh
+%
+%   Usage:
+%      mh=mesh3dsurfaceplug2d(mh,mh2);
+%
+
+	%First process options
+	options=pairoptions(varargin{:});
+
+	%Remove the elements that are flagged: 
+	pos=find(flags); 
+	mh.elements(pos,:)=[];
+	mh.numberofelements=size(mh.elements,1);
+
+	%Offset mh2.elements by number of vertices in the 3D structure: 
+	mh2.elements=mh2.elements+mh.numberofvertices;
+	mh2.segments(:,1:2)=mh2.segments(:,1:2)+mh.numberofvertices;
+	mh2.segments(:,3)=mh2.segments(:,3)+mh.numberofelements;
+
+	%The segments of md2 and the outer segments of md are identical. Go into  the elements of 
+	%dmd2 and set them to their md equivalent: 
+	for i=1:length(mh2.segments),
+		node2=mh2.segments(i,1);
+		%this node2 has an equivalent on the segments  of md: 
+		for j=1:length(segments),
+			node1=segments(j,1);
+			if mh2.x(node2-mh.numberofvertices) == xsegs(j) &&  mh2.y(node2-mh.numberofvertices) == ysegs(j),
+				%go into the mesh of md2, and replace by node1.
+				pos=find(mh2.elements==node2); mh2.elements(pos)=node1;
+				segs=mh2.segments(:,1:2); pos=find(segs==node2); segs(pos)=node1; mh2.segments(:,1:2)=segs;
+				break;
+			end
+		end
+	end
+
+	%Do the merge: 
+	mh.elements=[mh.elements;mh2.elements];
+	mh.lat=[mh.lat;mh2.lat];
+	mh.long=[mh.long;mh2.long];
+	mh.segments=[mh.segments;mh2.segments];
+	mh.numberofvertices=length(mh.lat);
+	mh.numberofelements=size(mh.elements,1);
+	
+	%Remove orphans:
+	lat=mh.lat; long=mh.long; 
+	elements=mh.elements; segments=mh.segments;
+	orphan=find(~ismember([1:length(lat)],sort(unique(elements(:)))));
+	for i=1:length(orphan),
+		%disp('WARNING: removing orphans');
+		%get rid of the orphan node i
+		%update lat and long
+		lat=[lat(1:orphan(i)-(i-1)-1); lat(orphan(i)-(i-1)+1:end)];
+		long=[long(1:orphan(i)-(i-1)-1); long(orphan(i)-(i-1)+1:end)];
+		%update elements
+		pos=find(elements>orphan(i)-(i-1));
+		elements(pos)=elements(pos)-1;
+		%update segments
+		pos1=find(segments(:,1)>orphan(i)-(i-1));
+		pos2=find(segments(:,2)>orphan(i)-(i-1));
+		segments(pos1,1)=segments(pos1,1)-1;
+		segments(pos2,2)=segments(pos2,2)-1;
+	end
+	
+	mh.elements=elements;
+	mh.lat=lat;
+	mh.long=long;
+	mh.segments=segments;
+	mh.numberofelements=length(mh.elements);
+	mh.numberofvertices=length(mh.lat);
+
+	%reconstruct x,y and z:
+	R=mh.r(1);
+	mh.x = R .* cosd(mh.lat) .* cosd(mh.long);
+	mh.y = R .* cosd(mh.lat) .* sind(mh.long);
+	mh.z = R .* sind(mh.lat);
+	mh.r=sqrt(mh.x.^2+mh.y.^2+mh.z.^2);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshband.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshband.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshband.m	(revision 27955)
@@ -0,0 +1,92 @@
+function band=meshband(mh,outerdomain,varargin)
+
+	%process options: 
+	options=pairoptions(varargin{:});
+
+	%some checks on the mesh: 
+	if (isempty(mh.x) | isempty(mh.y)  ) 
+		error('meshband error message: mesh has one of the following empty: ''x'',''y''');
+	end
+
+	%give ourselves a unique temporary directory: 
+	temproot=tempname; mkdir(temproot);
+
+	%align external segments on internal mesh: 
+	mh.segments=alignsegments(mh.segments);
+
+	%figure out domain outline: 
+	meshtodomain(mh,[temproot '/innerdomain.exp']);
+
+	%create domain outine from inner and outer domain
+	inner=expread([temproot '/innerdomain.exp']);
+	if inner.closed==0,
+		inner.nods=inner.nods+1;
+		inner.x(end+1)=inner.x(1);
+		inner.y(end+1)=inner.y(1);
+		inner.closed=1;
+		if getfieldvalue(options,'invert',0),
+			inner.x=flipud(inner.x);
+			inner.y=flipud(inner.y);
+		end
+	end
+
+	[path,name,ext]=fileparts(outerdomain);
+	if strcmpi(ext,'.shp'),
+		outer=shpread(outerdomain);
+	else
+		outer=expread(outerdomain);
+	end
+	if outer.closed==0,
+		outer.nods=outer.nods+1;
+		outer.x(end+1)=outer.x(1);
+		outer.y(end+1)=outer.y(1);
+		outer.closed=1;
+	end
+
+	domain(1).x=outer.x; 
+	domain(1).y=outer.y; 
+	domain(1).density=outer.density; 
+	domain(1).nods=outer.nods; 
+	domain(1).closed=outer.closed;
+	
+	
+	domain(2).x=inner.x; 
+	domain(2).y=inner.y; 
+	domain(2).density=inner.density; 
+	domain(2).nods=inner.nods; 
+	domain(2).closed=inner.closed;
+
+
+	expwrite(domain,[temproot '/Band.exp']);
+	
+	if getfieldvalue(options,'plot',0),
+		figure(1),clf,hold on,axis image;
+		expdisp([temproot '/Band.exp'],'linestyle','k-*');
+	end
+
+	%mesh: 
+	md=bamg(model(),'domain',[temproot '/Band.exp'],'MaxCornerAngle',1e-15,'gradation',10000); band=md.mesh; clear md;
+
+	if getfieldvalue(options,'plot',0),
+		figure(2),clf,trisurf(band.elements,band.x,band.y,band.x),view(2),shading faceted;
+		hold on,expdisp([temproot '/Band.exp'],'linestyle','k-*');
+	end
+
+	%check that the domain vertices = the number of segments: 
+	if abs(length(band.segments) - (length(domain(1).x)+length(domain(2).x)-2))>=2,
+		disp(sprintf('band mesh not consistent: %i!=%i+%i\n',length(band.segments), length(domain(1).x), length(domain(2).x)));
+
+		figure(3),clf,expdisp([temproot '/Band.exp'],'linestyle','r*');
+		hold on; 
+		for i=1:length(band.segments),
+			i1=band.segments(i,1); i2=band.segments(i,2);
+			plot([band.x(i1) band.x(i2)],[band.y(i1) band.y(i2)],'k*-');
+			plot([band.x(i1)+ band.x(i2)]/2,[band.y(i1)+ band.y(i2)]/2,'g*');
+		end
+		%error('band mesh not consistent');
+	end
+
+	%erase temporary directory: 
+	system(['rm -rf ' temproot]);
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshconvert.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshconvert.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshconvert.m	(revision 27955)
@@ -0,0 +1,43 @@
+function md=meshconvert(md,varargin)
+%CONVERTMESH - convert mesh to bamg mesh
+%
+%   Usage:
+%      md=meshconvert(md);
+%      md=meshconvert(md,index,x,y);
+
+if nargin~=1 & nargin~=4,
+	help meshconvert
+	error('meshconvert error message: bad usage');
+end
+
+if nargin==1,
+	index = md.mesh.elements;
+	x     = md.mesh.x;
+	y     = md.mesh.y;
+else
+	index = varargin{1};
+	x     = varargin{2};
+	y     = varargin{3};
+end
+
+%call Bamg
+[bamgmesh_out bamggeom_out]=BamgConvertMesh(index,x,y);
+
+% plug results onto model
+md.private.bamg          = struct();
+md.private.bamg.mesh     = bamgmesh(bamgmesh_out);
+md.private.bamg.geometry = bamggeom(bamggeom_out);
+md.mesh.x              = bamgmesh_out.Vertices(:,1);
+md.mesh.y              = bamgmesh_out.Vertices(:,2);
+md.mesh.elements       = bamgmesh_out.Triangles(:,1:3);
+md.mesh.edges          = bamgmesh_out.IssmEdges;
+md.mesh.segments       = bamgmesh_out.IssmSegments(:,1:3);
+md.mesh.segmentmarkers = bamgmesh_out.IssmSegments(:,4);
+
+%Fill in rest of fields:
+md.mesh.numberofelements = size(md.mesh.elements,1);
+md.mesh.numberofvertices = length(md.mesh.x);
+md.mesh.numberofedges    = size(md.mesh.edges,1);
+md.mesh.vertexonboundary = zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2)) = 1;
+md.mesh.elementconnectivity=md.private.bamg.mesh.ElementConnectivity;
+md.mesh.elementconnectivity(find(isnan(md.mesh.elementconnectivity)))=0;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshconvert.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshconvert.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshconvert.py	(revision 27955)
@@ -0,0 +1,54 @@
+import numpy as np
+
+from BamgConvertMesh import BamgConvertMesh
+from bamggeom import bamggeom
+from bamgmesh import bamgmesh
+from collections import OrderedDict
+from mesh2d import mesh2d
+
+
+def meshconvert(md, *args):
+    """CONVERTMESH - convert mesh to bamg mesh
+
+    Usage:
+        md = meshconvert(md)
+        md = meshconvert(md, index, x, y)
+    """
+
+    nargs = len(args)
+
+    if not nargs == 0 and not nargs == 3:
+        raise TypeError("meshconvert error message: bad usage")
+
+    if not nargs:
+        index = md.mesh.elements
+        x = md.mesh.x
+        y = md.mesh.y
+    else:
+        index = args[0]
+        x = args[1]
+        y = args[2]
+
+    #call Bamg
+    bamgmesh_out, bamggeom_out = BamgConvertMesh(index, x, y)
+
+    # plug results onto model
+    md.private.bamg = OrderedDict()
+    md.private.bamg['mesh'] = bamgmesh(bamgmesh_out)
+    md.private.bamg['geometry'] = bamggeom(bamggeom_out)
+    md.mesh = mesh2d()
+    md.mesh.x = bamgmesh_out['Vertices'][:, 0].copy()
+    md.mesh.y = bamgmesh_out['Vertices'][:, 1].copy()
+    md.mesh.elements = bamgmesh_out['Triangles'][:, 0:3].astype(int)
+    md.mesh.edges = bamgmesh_out['IssmEdges'].astype(int)
+    md.mesh.segments = bamgmesh_out['IssmSegments'][:, 0:3].astype(int)
+    md.mesh.segmentmarkers = bamgmesh_out['IssmSegments'][:, 3].astype(int)
+
+    #Fill in rest of fields:
+    md.mesh.numberofelements = np.size(md.mesh.elements, axis=0)
+    md.mesh.numberofvertices = np.size(md.mesh.x)
+    md.mesh.numberofedges = np.size(md.mesh.edges, axis=0)
+    md.mesh.vertexonboundary = np.zeros(md.mesh.numberofvertices, int)
+    md.mesh.vertexonboundary[md.mesh.segments[:, 0:2] - 1] = 1
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshintersect.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshintersect.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshintersect.m	(revision 27955)
@@ -0,0 +1,37 @@
+function indices=meshintersect(lat,long,lats,longs,varargin)
+%MESHINTERSECT - return indices (into lat and long) of common values between (lat,long) and (lats,longs). 
+%  i.e: lat(index)=lats; long(index)=longs;
+%
+%   Usage:
+%      index=meshintersect(md.mesh.lat,md.mesh.long,mdsmaller.mesh.lat,mdsmaller.mesh.long);
+%      index=meshintersect(md.mesh.lat,md.mesh.long,mdsmaller.mesh.lat,mdsmaller.mesh.long,'tolerance',1e-10); %within a certain tolerance.
+
+
+	%process options: 
+	options=pairoptions(varargin{:});
+
+	%retrieve tolerance: 
+	tolerance=getfieldvalue(options,'tolerance',1e-5);
+
+	%go through lats,longs and find within tolerance, the index of the corresponding value in lat,long: 
+	indices=zeros(length(lats),1);
+	
+	for i=1:length(lats),
+		distance=sqrt((lat-lats(i)).^2+(long-longs(i)).^2);
+		s=find(distance<tolerance);
+		if length(s)>1,
+			indices(i)=s(1);
+			format long
+			[lats(i) longs(i)]
+			for j=1:length(s),
+				[lat(s(j)) long(s(j))]
+			end
+			error('one or more vertices on the global mesh were duplicated!');
+		elseif isempty(s),
+			plot(distance)
+			min(distance)
+			error('could not find vertices in common, relax tolerance?');
+		else
+			indices(i)=s;
+		end
+	end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshintersect2d.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshintersect2d.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshintersect2d.m	(revision 27955)
@@ -0,0 +1,89 @@
+function indices=meshintersect2d(x,y,xs,ys,varargin)
+%MESHINTERSECT - return indices (into x,y) of common values between (x,y) and (xs,ys). 
+%  i.e: x(index)=xs; y(index)=ys;
+%
+
+
+	%process options: 
+	options=pairoptions(varargin{:});
+
+	%retrieve tolerance: 
+	maxtol=getfieldvalue(options,'maxtol',100000); %100 km.
+	tolincrement=getfieldvalue(options,'tolincrement',10);
+	force=getfieldvalue(options,'force',0);
+
+	%go through lats,longs and find within tolerance, the index of the corresponding value in lat,long: 
+	indices=zeros(length(xs),1);
+	
+	for i=1:length(xs),
+		tolerance=0;
+		distance=sqrt((x-xs(i)).^2+(y-ys(i)).^2);
+
+		s=find(distance==0); 
+		if ~isempty(s), 
+			if length(s)>1,
+
+				%we have two vertices that are coincident! Not good. 
+				for j=1:length(s),
+					hold on;plot(x(s(j)),y(s(j)),'c.','MarkerSize',40)
+				end
+				disp(['Vertex ' num2str(i) ' of input mesh coincides with the following output mesh vertices ']);
+				s
+				if force,
+					indices(i)=s(1);
+				else
+					error('');
+				end
+			else
+				indices(i)=s;
+			end
+		else
+
+			%we could not find a 0 distance, find the lowest tolerance that generates a find: 
+			count=1;
+			while isempty(s),
+				if count>1000,
+					disp(['could not find a vertex matching vertex ' num2str(i) ' of input mesh!']);
+					disp('Might think about changing tolerance increment');
+					error('');
+				end
+				tolerance=tolerance+tolincrement;
+				s=find(distance<tolerance);
+				count=count+1;
+			end
+			if tolerance>maxtol, 
+				disp(['found matching vertices ' num2str(s) ' in output mesh for input mesh vertex ' num2str(i) ]);
+				disp(' however, these vertices are farther that the max tolerance allowed!');
+				error('');
+			end
+
+			%recover minimum distance: 
+			sf=distance(s);
+			pos=find(sf==min(sf)); 
+			s=s(pos);
+			indices(i)=s;
+		end
+	end
+
+	if(~isempty(find(indices==0))) error('issue with transition vector having one empty slot'); end;
+
+
+%		if length(s)>1,
+%			for j=1:length(s),
+%				hold on;plot3(x(s(j)),y(s(j)),z(s(j)),'c.','MarkerSize',40)
+%			end
+%			if force,
+%				indices(i)=s(1);
+%			else
+%				distance(s)
+%				error(sprintf('one or more vertices on the global mesh were duplicated (offset %i)',i));
+%			end
+%		elseif isempty(s),
+%			plot(distance);
+%			min(distance);
+%			i
+%			error('cannot find concurrent vertics!');
+%		else
+%			indices(i)=s;
+%		end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshintersect3d.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshintersect3d.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshintersect3d.m	(revision 27955)
@@ -0,0 +1,90 @@
+function indices=meshintersect3d(x,y,z,xs,ys,zs,varargin)
+%MESHINTERSECT - return indices (into x,y and z) of common values between 
+%(x,y,z) and (xs,ys,zs).
+%   i.e: x(index)=xs; y(index)=ys;
+%
+
+
+	%process options: 
+	options=pairoptions(varargin{:});
+
+	%retrieve tolerance: 
+	maxtol=getfieldvalue(options,'maxtol',100000); %100 km.
+	tolincrement=getfieldvalue(options,'tolincrement',10);
+	force=getfieldvalue(options,'force',0);
+
+	%go through lats,longs and find within tolerance, the index of the corresponding value in lat,long: 
+	indices=zeros(length(xs),1);
+	
+	for i=1:length(xs),
+		tolerance=0;
+		distance=sqrt((x-xs(i)).^2+(y-ys(i)).^2+(z-zs(i)).^2);
+
+		s=find(distance==0); 
+		if ~isempty(s), 
+			if length(s)>1,
+
+				%we have two vertices that are coincident! Not good. 
+				for j=1:length(s),
+					hold on;plot3(x(s(j)),y(s(j)),z(s(j)),'c.','MarkerSize',40)
+				end
+				disp(['Vertex ' num2str(i) ' of input mesh coincides with the following output mesh vertices ']);
+				s
+				if force,
+					indices(i)=s(1);
+				else
+					error('');
+				end
+			else
+				indices(i)=s;
+			end
+		else
+
+			%we could not find a 0 distance, find the lowest tolerance that generates a find: 
+			count=1;
+			while isempty(s),
+				if count>1000,
+					disp(['could not find a vertex matching vertex ' num2str(i) ' of input mesh!']);
+					disp('Might think about changing tolerance increment');
+					error('');
+				end
+				tolerance=tolerance+tolincrement;
+				s=find(distance<tolerance);
+				count=count+1;
+			end
+			if tolerance>maxtol, 
+				disp(['found matching vertices ' num2str(s) ' in output mesh for input mesh vertex ' num2str(i) ]);
+				disp(' however, these vertices are farther that the max tolerance allowed!');
+				error('');
+			end
+
+			%recover minimum distance: 
+			sf=distance(s);
+			pos=find(sf==min(sf)); 
+			s=s(pos);
+			indices(i)=s;
+		end
+	end
+
+	if(~isempty(find(indices==0))) error('issue with transition vector having one empty slot'); end;
+
+
+%		if length(s)>1,
+%			for j=1:length(s),
+%				hold on;plot3(x(s(j)),y(s(j)),z(s(j)),'c.','MarkerSize',40)
+%			end
+%			if force,
+%				indices(i)=s(1);
+%			else
+%				distance(s)
+%				error(sprintf('one or more vertices on the global mesh were duplicated (offset %i)',i));
+%			end
+%		elseif isempty(s),
+%			plot(distance);
+%			min(distance);
+%			i
+%			error('cannot find concurrent vertics!');
+%		else
+%			indices(i)=s;
+%		end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshintersect3d.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshintersect3d.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/meshintersect3d.py	(revision 27955)
@@ -0,0 +1,70 @@
+import matplotlib.pyplot as plt
+from mpl_toolkits.mplot3d import Axes3D
+import numpy as np
+
+from pairoptions import pairoptions
+
+
+def meshintersect3d(x, y, z, xs, ys, zs, *args):  # {{{
+    """MESHINTERSECT - returns indices (into x, y, and z) of common values 
+    between (x, y, z) and (xs, ys, zs) (i.e. x(index) = xs; y(index) = ys).
+    """
+
+    # Process options
+    options = pairoptions(*args)
+
+    # Retrieve tolerance
+    maxtol = options.getfieldvalue('maxtol', 100000) # 100 km
+    tolincrement = options.getfieldvalue('tolincrement', 10)
+    force = options.getfieldvalue('force', 0)
+
+    # Go through lats, longs and find, within tolerance, the index of the corresponding value in lat, long
+    indices = np.zeros((len(xs), ))
+
+    for i in range(len(xs)):
+        tolerance = 0
+        distance = ((x - xs[i]) ** 2 + (y - ys[i]) ** 2 + (z - zs[i]) ** 2) ** 0.5 # NOTE: math.sqrt cannot be applied element-wise to a list/numpy.array
+        s = np.where(distance == 0)[0]
+
+        if len(s):
+            if len(s) > 1:
+                # We have two vertices that are coincident! Not good
+                #
+                # TODO: Reconfigure the following in the process of bringing plotting online
+                for j in range(len(s)):
+                    plot(x[s[j]], y[s[j]], z[s[j]], c='cyan', s=40)
+                print('Vertex %i of input mesh coincides with the following ouput mesh vertices ' % i)
+                print(s)
+                if force:
+                    indices[i] = s[0]
+                else:
+                    raise RuntimeError('')
+            else:
+                indices[i] = s
+        else:
+            # We could not find a 0 distance, find the lowest tolerance that generates a find
+            count = 1
+            while not len(s):
+                if count > 1000:
+                    raise Exception('could not find a vertex matching vertex {} of input mesh!\nMight think anbout changing tolerance increment'.format(i))
+                tolerance = tolerance + tolincrement
+                s = np.where(distance < tolerance)[0]
+                count = count + 1
+            if tolerance > maxtol:
+                raise Exception('found matching vertices {} in output mesh for input mesh vertex {}\nhowever, these vertices are farther than the max tolerance allowed!'.format(s, i))
+
+            # Recover minimum distance
+            sf = distance[s]
+            pos = np.where(sf == np.min(sf))[0]
+            s = s[pos]
+            indices[i] = s
+
+    if len(np.where(indices == 0)[0]) > 1: # NOTE: This check is different than the corresponding one under MATLAB as one index may indeed be '0'
+        raise RuntimeError('issue with transition vector having one empty slot')
+
+    # Convert results to type 'int' to avoid modifying structures to which 
+    # results are assigned
+    indices = indices.astype(int)
+
+    return indices
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/modelmerge2d.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/modelmerge2d.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/modelmerge2d.m	(revision 27955)
@@ -0,0 +1,178 @@
+function md=modelmerge2d(md1,md2,varargin)
+%MODELMERGE  - merge two models by merging their meshes
+%
+%   Usage:
+%      md=modelmerge(md1,md2);
+	
+	%process options: 
+	options=pairoptions(varargin{:});
+	
+	tolerance=getfieldvalue(options,'tolerance',10^-5);
+	
+	md=md1; %by default, we transfer all the settings from md1 to md.
+
+	%first ,copy md1 mesh into md.mesh to initialize: 
+	md.mesh=md1.mesh;
+
+	%some initializatoin: 
+	elements1=md1.mesh.elements;
+	x1=md1.mesh.x;
+	y1=md1.mesh.y;
+	nods1=md1.mesh.numberofvertices;
+	nel1=md1.mesh.numberofelements;
+
+	elements2=md2.mesh.elements;
+	x2=md2.mesh.x;
+	y2=md2.mesh.y;
+	nods2=md2.mesh.numberofvertices;
+	nel2=md2.mesh.numberofelements;
+	segs2=md2.mesh.segments;
+
+	%offset elements2 by nods1: 
+	elements2=elements2+nods1;
+
+	%go into the vertices on boundary of mesh 1, and figure out which ones are common to mesh2: 
+	verticesonboundary=find(md1.mesh.vertexonboundary); 
+	for i=1:length(verticesonboundary),
+		node1=verticesonboundary(i); xnode1=x1(node1); ynode1=y1(node1);
+		%is there another node with these coordinates in mesh2? 
+		ind=find(sqrt(((x2-xnode1).^2+(y2-ynode1).^2))<tolerance);
+		if ~isempty(ind),
+			x2(ind)=NaN;
+			y2(ind)=NaN;
+			pos=find(elements2==(ind+nods1)); elements2(pos)=node1;
+		end
+	end
+
+	%go through elements2 and drop counter on each vertex that is above the x2 and y2 vertices being dropped: 
+	while( ~isempty(find(isnan(x2)))),
+		for i=1:length(x2),
+			if isnan(x2(i)),
+				pos=find(elements2>(i+nods1));
+				elements2(pos)=elements2(pos)-1;
+				x2(i)=[];
+				y2(i)=[];
+				break;
+			end
+		end
+	end
+
+	%merge elements: 
+	elements=[elements1;elements2];
+
+	%merge vertices: 
+	x=[x1;x2]; 
+	y=[y1;y2];
+
+	%output: 
+	md.mesh.x=x;
+	md.mesh.y=y;
+	md.mesh.elements=elements;
+	md.mesh.numberofvertices=length(x);
+	md.mesh.numberofelements=size(elements,1);
+
+	%connectivities: 
+	md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+	md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+
+	%find segments: 
+	md.mesh.segments=findsegments(md);
+
+	%vertex on boundary: 
+	md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+
+	if getfieldvalue(options,'full',0),
+		%we are asked to merge the classes fields too. We need have vertex and element mappings first: 
+		%vertex intersections:
+		md.mesh.extractedvertices={meshintersect(x,y,md1.mesh.x,md1.mesh.y,'tolerance',1e-5), meshintersect(x,y,md2.mesh.x,md2.mesh.y,'tolerance',1e-5)};
+		%element intersections:
+		xe=x(md.mesh.elements)*[1;1;1]/3; ye=y(md.mesh.elements)*[1;1;1]/3;
+		x1e=md1.mesh.x(md1.mesh.elements)*[1;1;1]/3; y1e=md1.mesh.y(md1.mesh.elements)*[1;1;1]/3;
+		x2e=md2.mesh.x(md2.mesh.elements)*[1;1;1]/3; y2e=md2.mesh.y(md2.mesh.elements)*[1;1;1]/3;
+		md.mesh.extractedelements= {meshintersect(xe,ye,x1e,y1e,'tolerance',1e-5) , meshintersect(xe,ye,x2e,y2e,'tolerance',1e-5)};
+
+		%now we can go through classes and transfer.
+		md=transfer_fields(md,md1,md2,'geometry',{'thickness','surface','bed','base'});
+		md=transfer_fields(md,md1,md2,'mask',{'ocean_levelset','ice_levelset','ocean_levelset','land_levelset','glacier_levelset'});
+		md=transfer_fields(md,md1,md2,'smb',{'mass_balance'});
+		if strcmpi(class(md1.basalforcings),'linearbasalforcings'),
+			md=transfer_fields(md,md1,md2,'basalforcings',{'groundedice_melting_rate','geothermalflux'});
+		else
+			md=transfer_fields(md,md1,md2,'basalforcings',{'groundedice_melting_rate','deepwater_melting_rate','deepwater_elevation','upperwater_elevation','geothermalflux'});
+		end
+		md=transfer_fields(md,md1,md2,'materials',{'rheology_B','rheology_n'});
+		md=transfer_fields(md,md1,md2,'friction',{'coefficient','p','q'});
+		md=transfer_fields(md,md1,md2,'flowequation',{'vertex_equation','element_equation','borderSSA','borderFS','borderHO'});
+		md=transfer_fields(md,md1,md2,'initialization',{'vx','vy','vz','vel','pressure','temperature'});
+		md=transfer_fields(md,md1,md2,'slr',{'deltathickness','sealevel','spcthickness','steric_rate'});
+		md=transfer_fields(md,md1,md2,'masstransport',{'spcthickness'});
+		md=transfer_fields(md,md1,md2,'thermal',{'spctemperature'});
+		md=transfer_fields(md,md1,md2,'inversion',{'min_parameters','max_parameters','vx_obs','vy_obs','vz_obs'});
+		md.inversion.cost_functions_coefficients=zeros(md.mesh.numberofvertices,3);
+		md.inversion.cost_functions_coefficients(md.mesh.extractedvertices{1},:)=md1.inversion.cost_functions_coefficients;
+		md.inversion.cost_functions_coefficients(md.mesh.extractedvertices{2},:)=md2.inversion.cost_functions_coefficients;
+
+		%boundary conditions: 
+		md=transfer_fields(md,md1,md2,'stressbalance',{'spcvx','spcvy','spcvz'});
+		md.stressbalance.loadingforce=zeros(md.mesh.numberofvertices,3);
+		md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+		bound1=zeros(md.mesh.numberofvertices,1); bound1(md.mesh.extractedvertices{1})=md1.mesh.vertexonboundary;
+		bound2=zeros(md.mesh.numberofvertices,1); bound2(md.mesh.extractedvertices{2})=md2.mesh.vertexonboundary;
+		boundary=bound1 & bound2;
+		
+		%identify corners between both basins
+		ends=[];
+		for i=1:length(pos),
+			v=pos(i); [indi,indj]=find(md.mesh.elements==v); 
+			conn=unique(md.mesh.elements(indi,:));
+			if (sum(boundary(conn))==2),
+				ends(end+1)=v;
+			end
+		end
+		boundary(ends)=0; %exclude these ends from the boundary that is going to become neumann.
+		pos=find(boundary); md.stressbalance.spcvx(pos)=NaN; md.stressbalance.spcvy(pos)=NaN; md.stressbalance.spcvz(pos)=NaN;
+
+	end
+
+	
+	%some checks: 
+	if max(md.mesh.elements)>md.mesh.numberofvertices, 
+		error('issue in modelmerge, one of the element ids is > number of vertices!');
+	end
+
+end %end of function
+
+function prop=transfer_vertices(md,md1,md2,field1,field2) % {{{
+	f1=getfield(md1,field1); f2=getfield(f1,field2); 
+	if length(f2)==md1.mesh.numberofvertices,
+		prop=zeros(md.mesh.numberofvertices,1); 
+		prop(md.mesh.extractedvertices{1})=f2;
+		f1=getfield(md2,field1); f2=getfield(f1,field2); prop(md.mesh.extractedvertices{2})=f2;
+	else
+		prop=zeros(md.mesh.numberofvertices+1,1);  prop(end)=f2(end);
+		prop(md.mesh.extractedvertices{1})=f2(1:end-1);
+		f1=getfield(md2,field1); f2=getfield(f1,field2); prop(md.mesh.extractedvertices{2})=f2(1:end-1);
+		prop=zeros(md.mesh.numberofvertices+1,1); 
+	end
+	
+	
+end %end of function %}}}
+function prop=transfer_elements(md,md1,md2,field1,field2) % {{{
+	prop=zeros(md.mesh.numberofelements,1); 
+	f1=getfield(md1,field1); f2=getfield(f1,field2); prop(md.mesh.extractedelements{1})=f2;
+	f1=getfield(md2,field1); f2=getfield(f1,field2); prop(md.mesh.extractedelements{2})=f2;
+
+end %end of function %}}}
+function md=transfer_fields(md,md1,md2,classname,classfields) % {{{
+
+	for i=1:length(classfields),
+		field1=eval(['md1.' classname '.' classfields{i}]); 
+		if length(field1)==md1.mesh.numberofvertices | length(field1)==md1.mesh.numberofvertices+1,
+			eval(['md.' classname '.' classfields{i} '=transfer_vertices(md,md1,md2,''' classname ''',''' classfields{i} ''');']);
+		else
+			eval(['md.' classname '.' classfields{i} '=transfer_elements(md,md1,md2,''' classname ''',''' classfields{i} ''');']);
+		end
+	end
+
+end %end of function %}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/modelmerge3d.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/modelmerge3d.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/modelmerge3d.m	(revision 27955)
@@ -0,0 +1,103 @@
+function md=modelmerge3d(md1,md2,varargin)
+%MODELMERGE  - merge two models by merging their meshes
+%
+%   Usage:
+%      md=modelmerge(md1,md2);
+	
+	%process options: 
+	options=pairoptions(varargin{:});
+	
+	tolerance=getfieldvalue(options,'tolerance',1e-4);
+	
+	md=model();
+
+	%first ,copy md1 mesh into md.mesh to initialize, and additional classes:
+	md.mesh=md1.mesh;
+	md.private=md1.private;
+
+	%some initialization: 
+	elements1=md1.mesh.elements;
+	x1=md1.mesh.x;
+	y1=md1.mesh.y;
+	z1=md1.mesh.z;
+	nods1=md1.mesh.numberofvertices;
+	nel1=md1.mesh.numberofelements;
+
+	elements2=md2.mesh.elements;
+	x2=md2.mesh.x;
+	y2=md2.mesh.y;
+	z2=md2.mesh.z;
+	nods2=md2.mesh.numberofvertices;
+	nel2=md2.mesh.numberofelements;
+
+	%offset elements2 by nods1: 
+	elements2=elements2+nods1;
+
+	%go into the vertices on boundary of mesh 1 and figure out which ones are common with mesh2: 
+	verticesonboundary=find(md1.mesh.vertexonboundary);
+
+	for i=1:length(verticesonboundary),
+		node1=verticesonboundary(i);
+		xnode1=x1(node1);
+		ynode1=y1(node1);
+		znode1=z1(node1);
+
+		%is there another node with these coordinates in mesh 2?
+		ind=find(sqrt((x2-xnode1).^2+(y2-ynode1).^2+(z2-znode1).^2)<tolerance);
+		if length(ind)>1,
+			disp('should reduce the tolerance, several vertices picked up!');
+		end
+		if ~isempty(ind),
+			x2(ind)=NaN;
+			y2(ind)=NaN;
+			z2(ind)=NaN;
+			pos=find(elements2==(ind+nods1));
+			elements2(pos)=node1;
+		end
+	end
+	%go through elements2 and drop counter on each vertex that is above the x2 and y2 vertices being dropped:
+	indices_nan=isnan(x2);
+	while(~isempty(indices_nan)),
+		% Use the index of the first instance of 'nan' value to remove that element from 'x2', 'y2', and 'z2'
+		index_nan=indices_nan(1);
+		pos=find(elements2>(index_nan+nods1));
+		elements2(pos)=elements2(pos)-1;
+		x2(index_nan)=[];
+		y2(index_nan)=[];
+		z2(index_nan)=[];
+
+		% Check again in 'x2' for instances of 'nan'
+		indices_nan=find(isnan(x2));
+	end
+
+	%merge elements: 
+	elements=[elements1;elements2];
+
+	%merge vertices: 
+	x=[x1;x2]; 
+	y=[y1;y2];
+	z=[z1;z2];
+
+	%output: 
+	md.mesh.x=x;
+	md.mesh.y=y;
+	md.mesh.z=z;
+	md.mesh.elements=elements;
+	md.mesh.numberofvertices=length(x);
+	md.mesh.numberofelements=size(elements,1);
+
+	%connectivities: 
+	md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+	md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+
+	%find segments: 
+	md.mesh.segments=findsegments(md);
+
+	%vertex on boundary: 
+	md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+
+	%some checks: 
+	if max(md.mesh.elements)>md.mesh.numberofvertices, 
+		error('issue in modelmerge, one of the element ids is > number of vertices!');
+	end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/modelmerge3d.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/modelmerge3d.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/modelmerge3d.py	(revision 27955)
@@ -0,0 +1,123 @@
+from copy import copy, deepcopy
+
+import numpy as np
+
+from ElementConnectivity import ElementConnectivity
+from findsegments import findsegments
+from model import model
+from NodeConnectivity import NodeConnectivity
+from pairoptions import pairoptions
+
+
+def modelmerge3d(md1, md2, *args):
+    """MODELMERGE - Merge two models by merging their meshes.
+
+    Usage:
+        md = modelmerge(md1, md2)
+    """
+
+    # Process options
+    options = pairoptions(*args)
+
+    tolerance = options.getfieldvalue('tolerance', 1e-4)
+
+    md = model()
+
+    # First, copy md1 mesh into md.mesh to initialize, and additional classes
+    md.mesh = deepcopy(md1.mesh)
+    md.private = deepcopy(md1.private)
+
+    # Some initialization
+    elements1 = copy(md1.mesh.elements)
+    x1 = copy(md1.mesh.x)
+    y1 = copy(md1.mesh.y)
+    z1 = copy(md1.mesh.z)
+    nods1 = copy(md1.mesh.numberofvertices)
+    nel1 = copy(md1.mesh.numberofelements)
+
+    elements2 = copy(md2.mesh.elements)
+    x2 = copy(md2.mesh.x)
+    y2 = copy(md2.mesh.y)
+    z2 = copy(md2.mesh.z)
+    nods2 = copy(md2.mesh.numberofvertices)
+    nel2 = copy(md2.mesh.numberofelements)
+
+    # Offset elements2 by nods1
+    elements2 = elements2 + nods1
+
+    # Go into the vertices on boundary of mesh 1 and figure out which ones are common with mesh 2
+    verticesonboundary = np.nonzero(md1.mesh.vertexonboundary)[0]
+
+    # Do not display "RuntimeWarning: invalid value encountered in less" warning when comparing against np.nan values in 'x2', 'y2', and 'z2'
+    #
+    # TODO: Investigate if we should use some other value to represent null elements
+    np.warnings.filterwarnings('ignore')
+
+    for i in range(len(verticesonboundary)):
+        node1 = verticesonboundary[i]
+        xnode1 = x1[node1]
+        ynode1 = y1[node1]
+        znode1 = z1[node1]
+
+        # Is there another node with these coordinates in mesh 2?
+        ind = np.where(np.logical_and.reduce((~np.isnan(x2), ~np.isnan(y2), ~np.isnan(z2), ((x2 - xnode1) ** 2 + (y2 - ynode1) ** 2 + (z2 - znode1) ** 2) ** 0.5 < tolerance)))[0] # NOTE: math.sqrt cannot be applied element-wise to a list/numpy.array
+        if len(ind) > 1:
+            print('should reduce the tolerance, several vertices picked up!')
+        if len(ind):
+            x2[ind] = np.nan
+            y2[ind] = np.nan
+            z2[ind] = np.nan
+            pos = np.where(elements2 == ((ind + 1) + nods1))
+            elements2[pos] = (node1 + 1) # NOTE: 'elements2' is 2D array, so 'numpy.where' returns two lists of indices
+
+    # Go through elements2 and drop counter on each vertex that is above the x2 and y2 vertices being dropped
+    indices_nan = np.nonzero(np.isnan(x2).astype(int))[0]
+    while indices_nan.size:
+        # Use the index of the first instance of 'nan' value to remove that element from 'x2', 'y2', and 'z2'
+        index_nan = indices_nan[0]
+        pos = np.where(elements2 > ((index_nan + 1) + nods1))
+        elements2[pos] = elements2[pos] - 1
+        # TODO: Maybe set to None, then pop all None after this loop
+        x2 = np.delete(x2, index_nan)
+        y2 = np.delete(y2, index_nan)
+        z2 = np.delete(z2, index_nan)
+
+        # Check again in 'x2' for instances of 'nan'
+        indices_nan = np.nonzero(np.isnan(x2).astype(int))[0]
+
+    # Merge elements
+    elements = np.concatenate((elements1, elements2))
+
+    # Merge vertices
+    x = np.concatenate((x1, x2))
+    y = np.concatenate((y1, y2))
+    z = np.concatenate((z1, z2))
+
+    # Output
+    md.mesh.x = x
+    md.mesh.y = y
+    md.mesh.z = z
+    md.mesh.elements = elements
+    md.mesh.numberofvertices = len(x)
+    md.mesh.numberofelements = elements.shape[0]
+
+    # Connectivities
+    md.mesh.vertexconnectivity = NodeConnectivity(md.mesh.elements, md.mesh.numberofvertices)
+    # print(md.mesh.vertexconnectivity)
+    md.mesh.elementconnectivity = ElementConnectivity(md.mesh.elements, md.mesh.vertexconnectivity)
+    # print(md.mesh.elementconnectivity)
+
+    # Find segments
+    md.mesh.segments = findsegments(md)
+
+    # Vertex on boundary
+    md.mesh.vertexonboundary = np.zeros((md.mesh.numberofvertices, ))
+    md.mesh.vertexonboundary[md.mesh.segments[:, 0:2] - 1] = 1
+
+    # Some checks
+    if np.max(md.mesh.elements) > md.mesh.numberofvertices:
+        raise Exception('issue in modelmerge, one of the element ids is > number of vertices!')
+
+    return md
+
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/patchglobe.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/patchglobe.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/patchglobe.m	(revision 27955)
@@ -0,0 +1,93 @@
+function mh=patchglobe(mh,mh2d,varargin)
+
+	%process options: 
+	options=pairoptions(varargin{:});
+
+	%recover basic options:
+	bandwidth=getfieldvalue(options,'bandwidth',100000);
+
+	%some checks on the mesh: 
+	if (isempty(mh.x) | isempty(mh.y) | isempty(mh.z) | isempty(mh.lat) | isempty(mh.long) | isempty(mh.r) ) 
+		error('patchglobe error message: 3D planet mesh has one of the following empty: ''x'',''y'',''z'',''lat'',''long'' or ''r''');
+	end
+	if (isempty(mh2d.x) | isempty(mh2d.y) | isempty(mh2d.lat) | isempty(mh2d.long)) 
+		error('patchglobe error message: 3D planet mesh has one of the following empty: ''x'',''y'',''lat'' or ''long''');
+	end
+
+	%give ourselves a unique temporary directory: 
+	temproot=tempname; mkdir(temproot);
+
+	%align external segments on 2d model: 
+	mh2d.segments=alignsegments(mh2d.segments);
+
+	%figure out domain outline: 
+	meshtodomain(mh2d,[temproot '/Patch.exp']);
+
+	%broaden this domain outline: 
+	expcoarsen([temproot '/PatchBroad.exp'],[temproot '/Patch.exp'],200000);
+	expcontract([temproot '/PatchBroad.exp'],[temproot '/PatchBroad.exp'],-bandwidth);
+
+	%now flag vertices (from mh2d's broad contour that are on the global mesh: do this in the local 2d mesh reference system. 
+	[x,y]=gdaltransform(mh.long,mh.lat,'EPSG:4326',['EPSG:' num2str(mh2d.epsg)]);
+	flagsnods=ContourToNodes(x,y,[temproot '/PatchBroad.exp'],1);
+
+	%expand flags to any element that touches the contour: 
+	pos=find(sum(flagsnods(mh.elements),2));
+	flags=zeros(mh.numberofelements,1); flags(pos)=1;
+
+	%need to find the segment enveloppe of these elements:
+	mh.segments=contourenvelope(mh,flags);
+
+	%segments need to be ordered in line: 
+	mh.segments=alignsegments(mh.segments);
+
+	%x,y for segments: 
+	[xsegs,ysegs]=gdaltransform(mh.long(mh.segments(:,1)),mh.lat(mh.segments(:,1)),'EPSG:4326',['EPSG:' num2str(mh2d.epsg)]);
+
+	%create lat,long contour out of these segments:
+	meshtodomain(mh,[temproot '/PatchEnveloppe.exp'],'latlong','on');
+		
+	%get these lat,long transformed to local mesh referencial:
+	env=expread([temproot '/PatchEnveloppe.exp']); 
+	[env.x,env.y]=gdaltransform(env.x,env.y,'EPSG:4326',['EPSG:' num2str(mh2d.epsg)]);
+
+	%now, create domain outine from broad enveloppe and initial mesh 
+	dom=expread([temproot '/Patch.exp']);
+	
+	%close the contours:
+	env(1).x=[env(1).x;env(1).x(1)];
+	env(1).y=[env(1).y;env(1).y(1)];
+	dom(1).x=[dom(1).x;dom(1).x(1)];
+	dom(1).y=[dom(1).y;dom(1).y(1)];
+
+	%flip inner hole: 
+	dom(1).x=flipud(dom(1).x);
+	dom(1).y=flipud(dom(1).y);
+
+	domain(1)=env; 
+	domain(2)=dom;
+	expwrite(domain,[temproot '/PatchBand.exp']);
+
+	%plot mesh: 
+	if  getfieldvalue(options,'plot',0), expdisp([temproot '/PatchBand.exp']); end
+
+	%mesh: 
+	mdb=bamg(model(),'domain',[temproot '/PatchBand.exp'],'MaxCornerAngle',1e-15,'gradation',10000,'NoBoundaryRefinment',1); 
+	mhb=mdb.mesh; clear mdb;
+
+	%double check: 
+	if length(mhb.segments) ~= (length(dom(1).x)+length(env(1).x)-2),
+		error('band mesh not consistent');
+	end
+
+	%augment patch with band
+	[mhb.long,mhb.lat]=gdaltransform(mhb.x,mhb.y,['EPSG:' num2str(mh2d.epsg)],'EPSG:4326');
+	mh2db=augment2dmesh(mh2d,mhb);
+
+	%merge inner band and earth: 
+	mh=mesh3dsurfaceplug2d(mh,mh2db,flags,mh.segments,xsegs,ysegs);
+
+	%erase temporary directory: 
+	system(['rm -rf ' temproot]);
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/gmsh/gmshplanet.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/gmsh/gmshplanet.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/gmsh/gmshplanet.js	(revision 27955)
@@ -0,0 +1,60 @@
+//GMSHPLANET - mesh generation for a sphere. Very specific code for gmsh from $ISSM_DIR/src/demos/simple_geo/sphere.geo
+//
+//   Available options (for more details see ISSM website http://issm.jpl.nasa.gov/):
+//
+//   - radius:             radius of the planet in km
+//   - resolution:         resolution in km
+//   - refine:             provide mesh
+//   - refinemetric:       mesh quantity to specify resolution
+//
+//   Returns 'mesh3dsurface' type mesh
+//
+//   Examples:
+//      md.mesh=gmshplanet('radius',6000,'resolution',100);
+//      md.mesh=gmshplanet('radius',6000,'resolution',100);
+async function gmshplanet(md) {
+	let args = Array.prototype.slice.call(arguments, 1);
+	let options = new pairoptions(args);
+	let radius = options.getfieldvalue('radius', planetradius('earth')); //warning: planetradius in m, not km
+	let resolution = options.getfieldvalue('resolution', 700);
+
+	md.cluster = cluster;
+	md = await solve(md, 'gmsh', 'checkconsistency', 'false', 'hmin', resolution);
+
+	//methods 
+	let results = md.results[0];
+	let mesh = new mesh3dsurface();
+	let elements = [];
+	for (let i = 0; i < results.Elements.length; i=i+3){
+		elements.push(results.Elements.slice(i, i+3));
+	}
+	mesh.numberofelements = results.NumberOfElements;
+	mesh.numberofvertices =  results.NumberOfVertices;
+	mesh.x = results.X;
+	mesh.y = results.Y;
+	mesh.z = results.Z;
+	mesh.r = results.R;
+	mesh.elements = elements;
+	mesh.lat = results.Lat;
+	mesh.long = results.Long;
+	mesh.average_vertex_connectivity = results.AverageVertexConnectivity;
+
+	//a little technicality here. the mesh generate is not exactly on the 
+	//sphere. we create lat,long coordinates, and reproject on an exact sphere. 
+	mesh.r=ArraySqrt(ArrayAdd(ArrayAdd(ArrayPow(mesh.x,2),ArrayPow(mesh.y,2)),ArrayPow(mesh.z,2)));
+
+	//make sure we don't have south and north pole: 
+	let pos=find(ArrayAnd(ArrayEqual(mesh.x,0), ArrayEqual(mesh.y,0)));
+	mesh.lat = asind(ArrayDivide(mesh.z,mesh.r));
+	mesh.long = atan2d(mesh.y,mesh.x);
+	pos=find(ArrayEqual(mesh.lat,90)); ArrayIndex(mesh.lat,pos,90-.01);
+	pos=find(ArrayEqual(mesh.lat,-90)); ArrayIndex(mesh.lat,pos,-90+.01);
+
+	let radius = planetradius('earth');
+	mesh.r=NewArrayFill(mesh.numberofvertices,radius);
+	mesh.x=ArrayMultiply(radius,ArrayMultiply(cosd(mesh.lat),cosd(mesh.long)));
+	mesh.y=ArrayMultiply(radius,ArrayMultiply(cosd(mesh.lat),sind(mesh.long)));
+	mesh.z=ArrayMultiply(radius,sind(mesh.lat));
+
+	return mesh;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/gmsh/gmshplanet.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/gmsh/gmshplanet.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/gmsh/gmshplanet.m	(revision 27955)
@@ -0,0 +1,241 @@
+function mesh=gmshplanet(varargin)
+%GMSHPLANET - mesh generation for a sphere. Very specific code for Gmsh from $ISSM_DIR/src/demos/simple_geo/sphere.geo
+%
+%   Available options (for more details see ISSM website http://issm.jpl.nasa.gov/):
+%
+%   - radius:             radius of the planet in km
+%   - resolution:         resolution in km
+%   - refine:             provide mesh
+%   - refinemetric:       mesh quantity to specify resolution
+%
+%   Returns 'mesh3dsurface' type mesh
+%
+%   Examples:
+%      md.mesh=gmshplanet('radius',6000,'resolution',100);
+%      md.mesh=gmshplanet('radius',6000,'resolution',100);
+
+	%Get Gmsh version
+	[s,r]=system(['gmsh -info | command grep ''Version'' | sed -e ''s/Version[[:blank:]]*:[[:blank:]]//'' | cut -d ''.'' -f1']);
+	if contains(r, 'dyld'),
+		error(['gmshplanet: ' r]);
+	end
+	if s~=0,
+		%gmsh executable may not be on path; attempt to find it
+
+		paths={
+			[getenv('ISSM_EXT_DIR') '/shared/gmsh/install/bin'],...
+			[getenv('ISSM_EXT_DIR') '/static/gmsh/install/bin'],...
+			[getenv('ISSM_EXT_DIR') '/gmsh/install/bin'],...
+			[issmdir() '/externalpackages/gmsh/install/bin'],...
+			[issmdir() '/bin'],...
+			['/usr/bin']...
+		};
+		gmshpath='';
+		for i=paths
+			if exist([i{1} '/gmsh'],'file'),
+				gmshpath = i{1};
+				break;
+			end
+		end
+		if isempty(gmshpath),
+			error('gmshplanet: gmsh executable not found!');
+		end
+		setenv('PATH', [gmshpath ':' getenv('PATH')]);
+
+		%Get Gmsh version
+		[s,r]=system(['gmsh -info | command grep ''Version'' | sed -e ''s/Version[[:blank:]]*:[[:blank:]]//'' | cut -d ''.'' -f1']);
+		if contains(r, 'dyld'),
+			error(['gmshplanet: ' r]);
+		end
+	end
+
+	gmshmajorversion=str2num(r);
+	if ~ismember([3,4],gmshmajorversion),
+		error(['gmshplanet: Gmsh major version ' gmshmajorversion ' not supported!']);
+	end
+
+	%process options
+	options=pairoptions(varargin{:});
+	options=deleteduplicates(options,1);
+
+	%recover parameters:
+	radius=getfieldvalue(options,'radius')*1000;
+	resolution=getfieldvalue(options,'resolution')*1000;
+
+	%initialize mesh:
+	mesh=mesh3dsurface;
+
+	%create .geo file:  {{{
+	fid=fopen('sphere.geo','w');
+
+	% NOTE:
+	% - The default format in Gmsh 3 is "msh2". Rather than conditionally
+	% modifying our parsing scheme for Gmsh 4, for now, we simply set the
+	% 'Mesh.MshFileVersion' option.
+	% - Decreasing the value of the 'Mesh.RandomFactor' option leads to an
+	% equal number of nodes and elements being produced under macOS and Linux
+	% at certain resolutions using certain meshing algorithms.
+	%
+	fprintf(fid,'Mesh.Algorithm = 1;\n'); % MeshAdapt
+	fprintf(fid,'Mesh.MshFileVersion = 2;\n');
+	fprintf(fid,'Mesh.RandomFactor = 1e-10;\n');
+	if  exist(options,'refine'),
+		fprintf(fid,'Mesh.Algorithm = 7;\n'); % BAMG
+		fprintf(fid,'Mesh.CharacteristicLengthFromPoints = 0;\n');
+		if gmshmajorversion == 3,
+			fprintf(fid,'Mesh.RemeshAlgorithm = 1;\n');
+		end
+	end
+	fprintf(fid,'resolution=%g;\n',resolution);
+	fprintf(fid,'radius=%g;\n',radius);
+	fprintf(fid,'Point(1) = {0.0,0.0,0.0,resolution};\n');
+	fprintf(fid,'Point(2) = {radius,0.0,0.0,resolution};\n');
+	fprintf(fid,'Point(3) = {0,radius,0.0,resolution};\n');
+	fprintf(fid,'Circle(1) = {2,1,3};\n');
+	fprintf(fid,'Point(4) = {-radius,0,0.0,resolution};\n');
+	fprintf(fid,'Point(5) = {0,-radius,0.0,resolution};\n');
+	fprintf(fid,'Circle(2) = {3,1,4};\n');
+	fprintf(fid,'Circle(3) = {4,1,5};\n');
+	fprintf(fid,'Circle(4) = {5,1,2};\n');
+	fprintf(fid,'Point(6) = {0,0,-radius,resolution};\n');
+	fprintf(fid,'Point(7) = {0,0,radius,resolution};\n');
+	fprintf(fid,'Circle(5) = {3,1,6};\n');
+	fprintf(fid,'Circle(6) = {6,1,5};\n');
+	fprintf(fid,'Circle(7) = {5,1,7};\n');
+	fprintf(fid,'Circle(8) = {7,1,3};\n');
+	fprintf(fid,'Circle(9) = {2,1,7};\n');
+	fprintf(fid,'Circle(10) = {7,1,4};\n');
+	fprintf(fid,'Circle(11) = {4,1,6};\n');
+	fprintf(fid,'Circle(12) = {6,1,2};\n');
+
+	if gmshmajorversion == 3,
+		curvename='Line Loop';
+	elseif gmshmajorversion == 4,
+		curvename='Curve Loop';
+	end
+
+	fprintf(fid,'%s(13) = {2,8,-10};\n',curvename);
+	fprintf(fid,'Surface(14) = {13};\n');
+	fprintf(fid,'%s(15) = {10,3,7};\n',curvename);
+	fprintf(fid,'Surface(16) = {15};\n');
+	fprintf(fid,'%s(17) = {-8,-9,1};\n',curvename);
+	fprintf(fid,'Surface(18) = {17};\n');
+	fprintf(fid,'%s(19) = {-11,-2,5};\n',curvename);
+	fprintf(fid,'Surface(20) = {19};\n');
+	fprintf(fid,'%s(21) = {-5,-12,-1};\n',curvename);
+	fprintf(fid,'Surface(22) = {21};\n');
+	fprintf(fid,'%s(23) = {-3,11,6};\n',curvename);
+	fprintf(fid,'Surface(24) = {23};\n');
+	fprintf(fid,'%s(25) = {-7,4,9};\n',curvename);
+	fprintf(fid,'Surface(26) = {25};\n');
+	fprintf(fid,'%s(27) = {-4,12,-6};\n',curvename);
+	fprintf(fid,'Surface(28) = {27};\n');
+	fprintf(fid,'Surface Loop(29) = {28,26,16,14,20,24,22,18};\n');
+	fprintf(fid,'Volume(30) = {29};\n');
+	fprintf(fid,'Physical Surface(1) = {28,26,16,14,20,24,22,18};\n');
+	fprintf(fid,'Physical Volume(2) = 30;\n');
+	fclose(fid);
+	%}}}
+
+	if  exist(options,'refine'),
+		meshini=getfieldvalue(options,'refine');
+		metric=getfieldvalue(options,'refinemetric');
+
+		%create .pos file with existing mesh and refining metric:  {{{
+		fid=fopen('sphere.pos','w');
+
+		fprintf(fid,'View "background mesh" {\n');
+		for i=1:meshini.numberofelements,
+			fprintf(fid,'ST(%g,%g,%g,%g,%g,%g,%g,%g,%g){%g,%g,%g};\n',...
+			meshini.x(meshini.elements(i,1)), meshini.y(meshini.elements(i,1)), meshini.z(meshini.elements(i,1)),...
+			meshini.x(meshini.elements(i,2)), meshini.y(meshini.elements(i,2)), meshini.z(meshini.elements(i,2)),...
+			meshini.x(meshini.elements(i,3)), meshini.y(meshini.elements(i,3)), meshini.z(meshini.elements(i,3)),...
+			metric(meshini.elements(i,1)), metric(meshini.elements(i,2)), metric(meshini.elements(i,3))...
+			);
+		end
+		fprintf(fid,'};\n');
+
+		fclose(fid);
+		% }}}
+	end
+
+	% Call gmsh
+	%
+	% NOTE: The default format in Gmsh 3 is "msh2". Rather than conditionally
+	%		modifying our parsing scheme for Gmsh 4, for now, we simply set the
+	%		"-format" option.
+	%
+	if  exist(options,'refine'),
+		system(['gmsh -2 sphere.geo -bgm sphere.pos']);
+	else
+		system(['gmsh -2 sphere.geo']);
+	end
+
+	%import mesh:  {{{
+	fid=fopen('sphere.msh','r');
+
+	%Get Mesh format
+	A=fscanf(fid,'%s',1);
+	if ~strcmp(A,'$MeshFormat'),
+		error(['Expecting $MeshFormat (' A ')']);
+	end
+
+	A=fscanf(fid,'%f %i %i',[1 3]);
+	A=fscanf(fid,'%s',1);
+	if ~strcmp(A,'$EndMeshFormat'),
+		error(['Expecting $EndMeshFormat (' A ')']);
+	end
+
+	%Nodes
+	A=fscanf(fid,'%s',1);
+	if ~strcmp(A,'$Nodes'),
+		error(['Expecting $Nodes (' A ')']);
+	end
+
+	mesh.numberofvertices=fscanf(fid,'%i',1);
+	A=fscanf(fid,'%i %f %f %f',[4 mesh.numberofvertices]);
+	mesh.x = A(2,:)';
+	mesh.y = A(3,:)';
+	mesh.z = A(4,:)';
+
+	A=fscanf(fid,'%s',1);
+	if ~strcmp(A,'$EndNodes'),
+		error(['Expecting $EndNodes (' A ')']);
+	end
+
+	%Elements
+	A=fscanf(fid,'%s',1);
+	if ~strcmp(A,'$Elements'),
+		error(['Expecting $Elements (' A ')']);
+	end
+	mesh.numberofelements=fscanf(fid,'%i',1);
+	A=fscanf(fid,'%i %i %i %i %i %i %i %i',[8 mesh.numberofelements]);
+	mesh.elements=A(6:8,:)';
+	A=fscanf(fid,'%s',1);
+	if ~strcmp(A,'$EndElements'),
+		error(['Expecting $EndElements (' A ')']);
+	end
+	fclose(fid);
+	%}}}
+
+	%a little technicality here. the mesh generate is not exactly on the
+	%sphere. we create lat,long coordinates, and reproject on an exact sphere.
+	mesh.r=sqrt(mesh.x.^2+mesh.y.^2+mesh.z.^2);
+
+	%make sure we don't have south and north pole:
+	pos=find(mesh.x==0 & mesh.y==0);
+	mesh.lat = asind(mesh.z./mesh.r);
+	mesh.long = atan2d(mesh.y,mesh.x);
+	pos=find(mesh.lat==90); mesh.lat(pos)=90-.01;
+	pos=find(mesh.lat==-90); mesh.lat(pos)=-90+.01;
+
+	mesh.r=radius*ones(mesh.numberofvertices,1);
+	mesh.x=radius*cosd(mesh.lat).*cosd(mesh.long);
+	mesh.y=radius*cosd(mesh.lat).*sind(mesh.long);
+	mesh.z=radius*sind(mesh.lat);
+
+	%erase files:
+	system('rm -rf sphere.geo sphere.msh sphere.pos');
+
+	%return mesh:
+	return;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/gmsh/gmshplanet.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/gmsh/gmshplanet.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/gmsh/gmshplanet.py	(revision 27955)
@@ -0,0 +1,249 @@
+import os
+import subprocess
+import numpy as np
+from issmdir import issmdir
+from MatlabFuncs import *
+from mesh3dsurface import *
+from pairoptions import *
+
+
+def gmshplanet(*args):
+    """gmshplanet - mesh generation for a sphere. Very specific code for Gmsh from $ISSM_DIR/src/demos/simple_geo/sphere.geo
+
+    Available options (for more details see ISSM website http://issm.jpl.nasa.gov/):
+    - radius:             radius of the planet in km
+    - resolution:         resolution in km
+    - refine:             provide mesh
+    - refinemetric:       mesh quantity to specify resolution
+
+    Returns 'mesh3dsurface' type mesh
+
+    Examples:
+        md.mesh = gmshplanet('radius', 6000, 'resolution', 100);
+        md.mesh = gmshplanet('radius', 6000, 'resolution', 100);
+    """
+
+    # Get Gmsh version
+    subproc_args = 'gmsh -info 2>&1 | command grep \'Version\' | sed -e \'s/Version[[:blank:]]*:[[:blank:]]//\' | cut -d \'.\' -f1'
+    subproc = subprocess.Popen(subproc_args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
+    outs, errs = subproc.communicate()
+    try:
+        strErrs = errs.decode()
+    except AttributeError:  # this is not a byte variable, let's assume string
+        strErrs = errs
+    if strErrs != '':
+        # gmsh executable may not be on path; attempt to find it
+        paths = [
+            os.environ.get('ISSM_EXT_DIR') + '/shared/gmsh/install/bin',
+            os.environ.get('ISSM_EXT_DIR') + '/static/gmsh/install/bin',
+            os.environ.get('ISSM_EXT_DIR') + '/gmsh/install/bin',
+            issmdir() + '/externalpackages/gmsh/install/bin',
+            issmdir() + '/bin',
+            '/usr/bin'
+        ]
+        gmshpath = ''
+        for path in paths:
+            if exists(path + '/gmsh'):
+                gmshpath = path
+                break
+        if gmshpath == '':
+            error('gmshplanet: gmsh executable not found!')
+
+        os.environ['PATH'] = gmshpath ':' os.environ.get['PATH']
+
+        # Get Gmsh version
+        subproc_args = 'gmsh -info 2>&1 | command grep \'Version\' | sed -e \'s/Version[[:blank:]]*:[[:blank:]]//\' | cut -d \'.\' -f1'
+        subproc = subprocess.Popen(subproc_args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
+        outs, errs = subproc.communicate()
+        try:
+            strErrs = errs.decode()
+        except AttributeError:  # this is not a byte variable, let's assume string
+            strErrs = errs
+        if strErrs != '':
+            raise Exception('gmshplanet: call to gmsh failed: {}'.format(errs))
+
+    gmshmajorversion = int(outs)
+    if gmshmajorversion not in [3, 4]:
+        raise RuntimeError('gmshplanet: Gmsh major version {} not supported!'.format(gmshmajorversion))
+
+    # Process options
+    options = pairoptions(*args)
+    #options = deleteduplicates(options, 1)
+
+    # Recover parameters
+    radius = options.getfieldvalue('radius') * 1000
+    resolution = options.getfieldvalue('resolution') * 1000
+
+    # Initialize mesh
+    mesh = mesh3dsurface()
+    # Create .geo file:  {{{
+    fid = open('sphere.geo', 'w')
+
+    # Call gmsh
+    #
+    # NOTE:
+    # - The default format in Gmsh 3 is "msh2". Rather than conditionally
+    # modifying our parsing scheme for Gmsh 4, for now, we simply set the
+    # 'Mesh.MshFileVersion' option.
+    # - Decreasing the value of the 'Mesh.RandomFactor' option leads to an
+    # equal number of nodes and elements being produced under macOS and Linux
+    # at certain resolutions using certain meshing algorithms.
+    #
+    fid.write('Mesh.Algorithm = 1;\n') # MeshAdapt
+    fid.write('Mesh.MshFileVersion = 2;\n')
+    fid.write('Mesh.RandomFactor = 1e-10;\n')
+    if options.exist('refine'):
+        fid.write('Mesh.Algorithm = 7;\n') # BAMG
+        fid.write('Mesh.CharacteristicLengthFromPoints = 0;\n')
+        if gmshmajorversion == 3:
+            fid.write('Mesh.RemeshAlgorithm = 1;\n')
+    fid.write('resolution = %g;\n' % resolution)
+    fid.write('radius = %g;\n' % radius)
+    fid.write('Point(1) = {0.0, 0.0, 0.0, resolution};\n')
+    fid.write('Point(2) = {radius, 0.0, 0.0, resolution};\n')
+    fid.write('Point(3) = {0, radius, 0.0, resolution};\n')
+    fid.write('Circle(1) = {2, 1, 3};\n')
+    fid.write('Point(4) = {-radius, 0, 0.0, resolution};\n')
+    fid.write('Point(5) = {0, -radius, 0.0, resolution};\n')
+    fid.write('Circle(2) = {3, 1, 4};\n')
+    fid.write('Circle(3) = {4, 1, 5};\n')
+    fid.write('Circle(4) = {5, 1, 2};\n')
+    fid.write('Point(6) = {0, 0, -radius, resolution};\n')
+    fid.write('Point(7) = {0, 0, radius, resolution};\n')
+    fid.write('Circle(5) = {3, 1, 6};\n')
+    fid.write('Circle(6) = {6, 1, 5};\n')
+    fid.write('Circle(7) = {5, 1, 7};\n')
+    fid.write('Circle(8) = {7, 1, 3};\n')
+    fid.write('Circle(9) = {2, 1, 7};\n')
+    fid.write('Circle(10) = {7, 1, 4};\n')
+    fid.write('Circle(11) = {4, 1, 6};\n')
+    fid.write('Circle(12) = {6, 1, 2};\n')
+
+    if gmshmajorversion == 3:
+        curvename = 'Line Loop'
+    elif gmshmajorversion == 4:
+        curvename = 'Curve Loop'
+
+    fid.write('%s(13) = {2,8,-10};\n' % curvename)
+    fid.write('Surface(14) = {13};\n')
+    fid.write('%s(15) = {10,3,7};\n' % curvename)
+    fid.write('Surface(16) = {15};\n')
+    fid.write('%s(17) = {-8,-9,1};\n' % curvename)
+    fid.write('Surface(18) = {17};\n')
+    fid.write('%s(19) = {-11,-2,5};\n' % curvename)
+    fid.write('Surface(20) = {19};\n')
+    fid.write('%s(21) = {-5,-12,-1};\n' % curvename)
+    fid.write('Surface(22) = {21};\n')
+    fid.write('%s(23) = {-3,11,6};\n' % curvename)
+    fid.write('Surface(24) = {23};\n')
+    fid.write('%s(25) = {-7,4,9};\n' % curvename)
+    fid.write('Surface(26) = {25};\n')
+    fid.write('%s(27) = {-4,12,-6};\n' % curvename)
+    fid.write('Surface(28) = {27};\n')
+    fid.write('Surface Loop(29) = {28,26,16,14,20,24,22,18};\n')
+    fid.write('Volume(30) = {29};\n')
+    fid.write('Physical Surface(1) = {28,26,16,14,20,24,22,18};\n')
+    fid.write('Physical Volume(2) = 30;\n')
+    fid.close()
+    # }}}
+
+    if options.exist('refine'):
+        meshini = options.getfieldvalue('refine')
+        metric = options.getfieldvalue('refinemetric')
+
+        # Create .pos file with existing mesh and refining metric:  {{{
+        fid = open('sphere.pos', 'w')
+
+        fid.write('View "background mesh" {\n')
+        for i in range(meshini.numberofelements):
+            fid.write('ST(%g,%g,%g,%g,%g,%g,%g,%g,%g){%g,%g,%g};\n'
+                      % (meshini.x[meshini.elements[i, 0] - 1], meshini.y[meshini.elements[i, 0] - 1], meshini.z[meshini.elements[i, 0] - 1],
+                         meshini.x[meshini.elements[i, 1] - 1], meshini.y[meshini.elements[i, 1] - 1], meshini.z[meshini.elements[i, 1] - 1],
+                         meshini.x[meshini.elements[i, 2] - 1], meshini.y[meshini.elements[i, 2] - 1], meshini.z[meshini.elements[i, 2] - 1],
+                         metric[meshini.elements[i, 0] - 1], metric[meshini.elements[i, 1] - 1], metric[meshini.elements[i, 2] - 1]))
+        fid.write('};\n')
+        fid.close()
+        # }}}
+
+    # Call gmsh
+    #
+    # NOTE: The default format in Gmsh 3 is "msh2". Rather than conditionally
+    #       modifying our parsing scheme for Gmsh 4, for now, we simply set the
+    #       "-format" option.
+    #
+    if options.exist('refine'):
+        subprocess.call('gmsh -2 sphere.geo -bgm sphere.pos', shell=True)
+    else:
+        subprocess.call('gmsh -2 sphere.geo', shell=True)
+
+    # Import mesh  {{{
+    fid = open('sphere.msh', 'r')
+
+    # Get mesh format
+    A = fid.readline().strip()
+    if A != '$MeshFormat':
+        raise RuntimeError(['Expecting $MeshFormat (', A, ')'])
+
+    A = fid.readline().split()
+    A = fid.readline().strip()
+    if A != '$EndMeshFormat':
+        raise RuntimeError(['Expecting $EndMeshFormat (', A, ')'])
+
+    # Nodes
+    A = fid.readline().strip()
+    if A != '$Nodes':
+        raise RuntimeError(['Expecting $Nodes (', A, ')'])
+
+    mesh.numberofvertices = int(fid.readline().strip())
+    mesh.x = np.empty(mesh.numberofvertices)
+    mesh.y = np.empty(mesh.numberofvertices)
+    mesh.z = np.empty(mesh.numberofvertices)
+    for i in range(mesh.numberofvertices):
+        A = fid.readline().split()
+        mesh.x[i] = float(A[1])
+        mesh.y[i] = float(A[2])
+        mesh.z[i] = float(A[3])
+
+    A = fid.readline().strip()
+    if A != '$EndNodes':
+        raise RuntimeError(['Expecting $EndNodes (', A, ')'])
+
+    # Elements
+    A = fid.readline().strip()
+    if A != '$Elements':
+        raise RuntimeError(['Expecting $Elements (', A, ')'])
+    mesh.numberofelements = int(fid.readline().strip())
+    mesh.elements = np.zeros([mesh.numberofelements, 3])
+    for i in range(mesh.numberofelements):
+        A = fid.readline().split()
+        mesh.elements[i] = [int(A[5]), int(A[6]), int(A[7])]
+    mesh.elements = mesh.elements.astype(int)
+    A = fid.readline().strip()
+    if A != '$EndElements':
+        raise RuntimeError(['Expecting $EndElements (', A, ')'])
+    fid.close()
+    # }}}
+
+    # A little technicality here. The mesh is not exactly on the sphere. We
+    # create lat,long coordinates, and reproject onto an exact sphere.
+    mesh.r = np.sqrt(mesh.x ** 2 + mesh.y ** 2 + mesh.z ** 2)
+
+    # Make sure we don't have south and north pole
+    pos = np.where(np.logical_and.reduce((mesh.x == 0, mesh.y == 0)))[0]
+    mesh.lat = asind(mesh.z / mesh.r)
+    mesh.long = atan2d(mesh.y, mesh.x)
+    pos = np.where(mesh.lat == 90)[0]
+    mesh.lat[pos] = 90 - 0.01
+    pos = np.where(mesh.lat == -90)[0]
+    mesh.lat[pos] = -90 + 0.01
+
+    mesh.r = radius * np.ones((mesh.numberofvertices, ))
+    mesh.x = radius * cosd(mesh.lat) * cosd(mesh.long)
+    mesh.y = radius * cosd(mesh.lat) * sind(mesh.long)
+    mesh.z = radius * sind(mesh.lat)
+
+    # Erase files
+    subprocess.call('rm -rf sphere.geo sphere.msh sphere.pos', shell=True)
+
+    # Return mesh
+    return mesh
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/spheretri/mesh_refine_tri4.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/spheretri/mesh_refine_tri4.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/spheretri/mesh_refine_tri4.m	(revision 27955)
@@ -0,0 +1,143 @@
+function [ FV ] = mesh_refine_tri4(FV)
+
+% mesh_refine_tri4 - creates 4 triangle from each triangle of a mesh
+%
+% [ FV ] = mesh_refine_tri4( FV )
+%
+% FV.vertices   - mesh vertices (Nx3 matrix)
+% FV.faces      - faces with indices into 3 rows
+%                 of FV.vertices (Mx3 matrix)
+% 
+% For each face, 3 new vertices are created at the 
+% triangle edge midpoints.  Each face is divided into 4
+% faces and returned in FV.
+%
+%        B
+%       /\
+%      /  \
+%    a/____\b       Construct new triangles
+%    /\    /\       [A,a,c]
+%   /  \  /  \      [a,B,b]
+%  /____\/____\     [c,b,C]
+% A	     c	   C    [a,b,c]
+% 
+% It is assumed that the vertices are listed in clockwise order in
+% FV.faces (A,B,C above), as viewed from the outside in a RHS coordinate
+% system.
+% 
+% See also: mesh_refine, sphere_tri, sphere_project
+% 
+
+% ---this method is not implemented, but the idea here remains...
+% This can be done until some minimal distance (D) of the mean 
+% distance between vertices of all triangles is achieved.  If
+% no D argument is given, the function refines the mesh once.
+% Alternatively, it could be done until some minimum mean 
+% area of faces is achieved.  As is, it just refines once.
+
+% $Revision: 1.1 $ $Date: 2004/11/12 01:32:35 $
+
+% Licence:  GNU GPL, no implied or express warranties
+% History:  05/2002, Darren.Weber_at_radiology.ucsf.edu, created
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+tic;
+fprintf('...refining mesh (tri4)...')
+
+% NOTE
+% The centroid is located one third of the way from each vertex to 
+% the midpoint of the opposite side. Each median divides the triangle 
+% into two equal areas; all the medians together divide it into six 
+% equal parts, and the lines from the median point to the vertices 
+% divide the whole into three equivalent triangles.
+
+% Each input triangle with vertices labelled [A,B,C] as shown
+% below will be turned into four new triangles:
+%
+% Make new midpoints
+% a = (A+B)/2
+% b = (B+C)/2
+% c = (C+A)/2
+%
+%        B
+%       /\
+%      /  \
+%    a/____\b       Construct new triangles
+%    /\    /\       [A,a,c]
+%   /  \  /  \      [a,B,b]
+%  /____\/____\     [c,b,C]
+% A	     c	   C    [a,b,c]
+%
+
+% Initialise a new vertices and faces matrix
+Nvert = size(FV.vertices,1);
+Nface = size(FV.faces,1);
+V2 = zeros(Nface*3,3);
+F2 = zeros(Nface*4,3);
+
+for f = 1:Nface,
+
+    % Get the triangle vertex indices
+    NA = FV.faces(f,1);
+    NB = FV.faces(f,2);
+    NC = FV.faces(f,3);
+
+    % Get the triangle vertex coordinates
+    A = FV.vertices(NA,:);
+    B = FV.vertices(NB,:);
+    C = FV.vertices(NC,:);
+
+    % Now find the midpoints between vertices
+    a = (A + B) ./ 2;
+    b = (B + C) ./ 2;
+    c = (C + A) ./ 2;
+
+    % Find the length of each median
+    %A2blen = sqrt ( sum( (A - b).^2, 2 ) );
+    %B2clen = sqrt ( sum( (B - c).^2, 2 ) );
+    %C2alen = sqrt ( sum( (C - a).^2, 2 ) );
+
+    % Store the midpoint vertices, while
+    % checking if midpoint vertex already exists
+    [FV, Na] = mesh_find_vertex(FV,a);
+    [FV, Nb] = mesh_find_vertex(FV,b);
+    [FV, Nc] = mesh_find_vertex(FV,c);
+
+    % Create new faces with orig vertices plus midpoints
+    F2(f*4-3,:) = [ NA, Na, Nc ];
+    F2(f*4-2,:) = [ Na, NB, Nb ];
+    F2(f*4-1,:) = [ Nc, Nb, NC ];
+    F2(f*4-0,:) = [ Na, Nb, Nc ];
+
+end
+
+% Replace the faces matrix
+FV.faces = F2;
+
+t=toc; fprintf('done (%5.2f sec)\n',t);
+
+return
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function [FV, N] = mesh_find_vertex(FV,vertex)
+
+    Vn = size(FV.vertices,1);
+    Va = repmat(vertex,Vn,1);
+    Vexist = find( FV.vertices(:,1) == Va(:,1) & ...
+                   FV.vertices(:,2) == Va(:,2) & ...
+                   FV.vertices(:,3) == Va(:,3) );
+    if Vexist,
+        if size(Vexist) == [1,1],
+            N = Vexist;
+        else,
+            msg = sprintf('replicated vertices');
+            error(msg);
+        end
+    else
+        FV.vertices(end+1,:) = vertex;
+        N = size(FV.vertices,1);
+    end
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/spheretri/planettrimesh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/spheretri/planettrimesh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/spheretri/planettrimesh.m	(revision 27955)
@@ -0,0 +1,19 @@
+function md=planettrimesh(md,shape,radius,refinement)
+%PLANETTRIMESH: build 2d shell mesh
+%
+% Usage: md=planettrimesh(md,shape,radius,refinement)
+%
+
+results = sphere_tri(shape,refinement,radius);
+md.mesh=mesh3dsurface(); %???
+md.mesh.x=results.vertices(:,1);
+md.mesh.y=results.vertices(:,2);
+md.mesh.z=results.vertices(:,3);
+md.mesh.elements=results.faces;
+
+md.mesh.r=sqrt(md.mesh.x.^2+md.mesh.y.^2+md.mesh.z.^2);
+md.mesh.lat=acos(md.mesh.z./md.mesh.r);
+md.mesh.long=atan2(md.mesh.y,md.mesh.x);
+
+md.mesh.numberofvertices=length(md.mesh.x);
+md.mesh.numberofelements=size(md.mesh.elements,1);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/spheretri/sphere_project.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/spheretri/sphere_project.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/spheretri/sphere_project.m	(revision 27955)
@@ -0,0 +1,65 @@
+function V = sphere_project(v,r,c)
+
+% sphere_project - project point X,Y,Z to the surface of sphere radius r
+% 
+% V = sphere_project(v,r,c)
+% 
+% Cartesian inputs:
+% v is the vertex matrix, Nx3 (XYZ)
+% r is the sphere radius, 1x1 (default 1)
+% c is the sphere centroid, 1x3 (default 0,0,0)
+%
+% XYZ are converted to spherical coordinates and their radius is
+% adjusted according to r, from c toward XYZ (defined with theta,phi)
+% 
+% V is returned as Cartesian 3D coordinates
+% 
+
+% $Revision: 1.1 $ $Date: 2004/11/12 01:32:36 $
+
+% Licence:  GNU GPL, no implied or express warranties
+% History:  06/2002, Darren.Weber_at_radiology.ucsf.edu, created
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+if ~exist('v','var'),
+    msg = sprintf('SPHERE_PROJECT: No input vertices (X,Y,Z)\n');
+    error(msg);
+end
+
+X = v(:,1);
+Y = v(:,2);
+Z = v(:,3);
+
+if ~exist('c','var'),
+    xo = 0;
+    yo = 0;
+    zo = 0;
+else
+    xo = c(1);
+    yo = c(2);
+    zo = c(3);
+end
+
+if ~exist('r','var'), r = 1; end
+
+% alternate method is to use unit vector of V
+% [ n = 'magnitude(V)'; unitV = V ./ n; ]
+% to change the radius, multiply the unitV
+% by the radius required.  This avoids the
+% use of arctan functions, which have branches.
+
+% Convert Cartesian X,Y,Z to spherical (radians)
+theta = atan2( (Y-yo), (X-xo) );
+phi   = atan2( sqrt( (X-xo).^2 + (Y-yo).^2 ), (Z-zo) );
+% do not calc: r = sqrt( (X-xo).^2 + (Y-yo).^2 + (Z-zo).^2);
+
+%   Recalculate X,Y,Z for constant r, given theta & phi.
+R = ones(size(phi)) * r;
+x = R .* sin(phi) .* cos(theta);
+y = R .* sin(phi) .* sin(theta);
+z = R .* cos(phi);
+
+V = [x y z];
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/spheretri/sphere_tri.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/spheretri/sphere_tri.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/planet/spheretri/sphere_tri.m	(revision 27955)
@@ -0,0 +1,200 @@
+function [FV] = sphere_tri(shape,maxlevel,r,winding)
+
+% sphere_tri - generate a triangle mesh approximating a sphere
+% 
+% Usage: FV = sphere_tri(shape,Nrecurse,r,winding)
+% 
+%   shape is a string, either of the following:
+%   'ico'   starts with icosahedron (most even, default)
+%   'oct'   starts with octahedron
+%   'tetra' starts with tetrahedron (least even)
+%
+%   Nrecurse is int >= 0, setting the recursions (default 0)
+%
+%   r is the radius of the sphere (default 1)
+%
+%   winding is 0 for clockwise, 1 for counterclockwise (default 0).  The
+%   matlab patch command gives outward surface normals for clockwise
+%   order of vertices in the faces (viewed from outside the surface).
+%
+%   FV has fields FV.vertices and FV.faces.  The vertices 
+%   are listed in clockwise order in FV.faces, as viewed 
+%   from the outside in a RHS coordinate system.
+% 
+% The function uses recursive subdivision.  The first
+% approximation is an platonic solid, either an  icosahedron,
+% octahedron or a tetrahedron.  Each level of refinement 
+% subdivides each triangle face by a factor of 4 (see also 
+% mesh_refine).  At each refinement, the vertices are 
+% projected to the sphere surface (see sphere_project).
+% 
+% A recursion level of 3 or 4 is a good sphere surface, if
+% gouraud shading is used for rendering.
+% 
+% The returned struct can be used in the patch command, eg:
+% 
+% % create and plot, vertices: [2562x3] and faces: [5120x3]
+% FV = sphere_tri('ico',4,1);
+% lighting phong; shading interp; figure;
+% patch('vertices',FV.vertices,'faces',FV.faces,...
+%       'facecolor',[1 0 0],'edgecolor',[.2 .2 .6]);
+% axis off; camlight infinite; camproj('perspective');
+% 
+% See also: mesh_refine, sphere_project
+%
+
+% $Revision: 1.2 $ $Date: 2005/07/20 23:07:03 $
+
+% Licence:  GNU GPL, no implied or express warranties
+% Jon Leech (leech @ cs.unc.edu) 3/24/89
+% icosahedral code added by Jim Buddenhagen (jb1556@daditz.sbc.com) 5/93
+% 06/2002, adapted from c to matlab by Darren.Weber_at_radiology.ucsf.edu
+% 05/2004, reorder of the faces for the 'ico' surface so they are indeed
+% clockwise!  Now the surface normals are directed outward.  Also reset the
+% default recursions to zero, so we can get out just the platonic solids.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+eegversion = '$Revision: 1.2 $';
+fprintf('SPHERE_TRI [v %s]\n',eegversion(11:15)); tic
+
+if ~exist('shape','var') || isempty(shape),
+    shape = 'ico';
+end
+fprintf('...creating sphere tesselation based on %s\n',shape);
+
+% default maximum subdivision level
+if ~exist('maxlevel','var') || isempty(maxlevel) || maxlevel < 0,
+    maxlevel = 0;
+end
+
+% default radius
+if ~exist('r','var') || isempty(r),
+    r = 1;
+end
+
+if ~exist('winding','var') || isempty(winding),
+    winding = 0;
+end
+
+% -----------------
+% define the starting shapes
+
+shape = lower(shape);
+
+switch shape,
+case 'tetra',
+
+    % Vertices of a tetrahedron
+    sqrt_3 = 0.5773502692;
+
+    tetra.v = [  sqrt_3,  sqrt_3,  sqrt_3 ;   % +X, +Y, +Z  - PPP
+                -sqrt_3, -sqrt_3,  sqrt_3 ;   % -X, -Y, +Z  - MMP
+                -sqrt_3,  sqrt_3, -sqrt_3 ;   % -X, +Y, -Z  - MPM
+                 sqrt_3, -sqrt_3, -sqrt_3 ];  % +X, -Y, -Z  - PMM
+
+    % Structure describing a tetrahedron
+    tetra.f = [ 1, 2, 3;
+                1, 4, 2;
+                3, 2, 4;
+                4, 1, 3 ];
+
+    FV.vertices = tetra.v;
+    FV.faces    = tetra.f;
+
+case 'oct',
+
+    % Six equidistant points lying on the unit sphere
+    oct.v = [  1,  0,  0 ;  %  X
+              -1,  0,  0 ; 	% -X
+               0,  1,  0 ;  %  Y
+               0, -1,  0 ; 	% -Y
+               0,  0,  1 ; 	%  Z
+               0,  0, -1 ];	% -Z
+
+    % Join vertices to create a unit octahedron
+    oct.f = [ 1 5 3 ;    %  X  Z  Y  -  First the top half
+              3 5 2 ;    %  Y  Z -X
+              2 5 4 ;    % -X  Z -Y
+              4 5 1 ;    % -Y  Z  X
+              1 3 6 ;    %  X  Y -Z  -  Now the bottom half
+              3 2 6 ;    %  Y  Z -Z
+              2 4 6 ;    % -X  Z -Z
+              4 1 6 ];   % -Y  Z -Z
+
+    FV.vertices = oct.v;
+    FV.faces    = oct.f;
+
+case 'ico',
+
+    % Twelve vertices of icosahedron on unit sphere
+    tau = 0.8506508084; % t=(1+sqrt(5))/2, tau=t/sqrt(1+t^2)
+    one = 0.5257311121; % one=1/sqrt(1+t^2) , unit sphere
+
+    ico.v( 1,:) = [  tau,  one,    0 ]; % ZA
+    ico.v( 2,:) = [ -tau,  one,    0 ]; % ZB
+    ico.v( 3,:) = [ -tau, -one,    0 ]; % ZC
+    ico.v( 4,:) = [  tau, -one,    0 ]; % ZD
+    ico.v( 5,:) = [  one,   0 ,  tau ]; % YA
+    ico.v( 6,:) = [  one,   0 , -tau ]; % YB
+    ico.v( 7,:) = [ -one,   0 , -tau ]; % YC
+    ico.v( 8,:) = [ -one,   0 ,  tau ]; % YD
+    ico.v( 9,:) = [   0 ,  tau,  one ]; % XA
+    ico.v(10,:) = [   0 , -tau,  one ]; % XB
+    ico.v(11,:) = [   0 , -tau, -one ]; % XC
+    ico.v(12,:) = [   0 ,  tau, -one ]; % XD
+
+    % Structure for unit icosahedron
+    ico.f = [  5,  8,  9 ;
+               5, 10,  8 ;
+               6, 12,  7 ;
+               6,  7, 11 ;
+               1,  4,  5 ;
+               1,  6,  4 ;
+               3,  2,  8 ;
+               3,  7,  2 ;
+               9, 12,  1 ;
+               9,  2, 12 ;
+              10,  4, 11 ;
+              10, 11,  3 ;
+               9,  1,  5 ;
+              12,  6,  1 ;
+               5,  4, 10 ;
+               6, 11,  4 ;
+               8,  2,  9 ;
+               7, 12,  2 ;
+               8, 10,  3 ;
+               7,  3, 11 ];
+
+    FV.vertices = ico.v;
+    FV.faces    = ico.f;
+end
+
+% -----------------
+% refine the starting shapes with subdivisions
+if maxlevel,
+
+    % Subdivide each starting triangle (maxlevel) times
+    for level = 1:maxlevel,
+
+        % Subdivide each triangle and normalize the new points thus
+        % generated to lie on the surface of a sphere radius r.
+        FV = mesh_refine_tri4(FV);
+        FV.vertices = sphere_project(FV.vertices,r);
+
+        % An alternative might be to define a min distance
+        % between vertices and recurse or use fminsearch
+
+    end
+end
+
+if winding,
+    fprintf('...returning counterclockwise vertex order (viewed from outside)\n');
+    FV.faces = FV.faces(:,[1 3 2]);
+else
+    fprintf('...returning clockwise vertex order (viewed from outside)\n');
+end
+
+t=toc; fprintf('...done (%6.2f sec)\n\n',t);
+
+return
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshaddrifts.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshaddrifts.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshaddrifts.m	(revision 27955)
@@ -0,0 +1,85 @@
+function md=meshaddrifts(md,riftname)
+%MESHADDRIFTS - add rifts to a preloaded mesh (typically, an argus mesh)
+%
+%   Usage:
+%      md=meshaddrifts(md,riftname);
+%
+%        where md is a model with a preexisting mesh, and riftname is the name of an .exp file.
+%        The format of the riftname file is as follows: a list of pairs of closed and open contours. 
+%        The closed contour defines the envelop of the rift, the open contour that follows in the 
+%        file defines the rift. The density of the rift should be chosen carefully in the file, as it 
+%        will be used to define the rift contour density of the mesh. The open contour density will 
+%        be preserved. There can be as many pairs of closed contour and rift contour as wished.
+
+%read rift: 
+domains=expread(riftname);
+contours=domains(1:2:end);
+rifts=domains(2:2:end);
+
+%now loop over rifts: 
+for rift_i=1:length(rifts),
+
+	%refine rift to desired resolution: 
+	contour=contours(rift_i);
+	rift=rifts(rift_i);
+
+	delete('Meshaddrifts.Rift.exp');
+	expwrite(rift,'Meshaddrifts.Rift.Coarse.exp');
+	expcoarsen('Meshaddrifts.Rift.exp','Meshaddrifts.Rift.Coarse.exp',rift.density);
+	delete('Meshaddrifts.Rift.Coarse.exp');
+
+	%extract model:
+	expwrite(contour,'Meshaddrifts.Contour.exp');
+	md2=modelextract(md,'Meshaddrifts.Contour.exp');
+
+	%create domain of md2 model: 
+	md2.mesh.segments=contourenvelope(md2.mesh,'Meshaddrifts.Contour.exp');
+	domain_index=md2.mesh.segments(1,1:2);
+	while (domain_index(end)~=domain_index(1)),
+		pos=find(md2.mesh.segments(:,1)==domain_index(end));
+		domain_index(end+1)=md2.mesh.segments(pos,2);
+	end
+
+	domain.x=md2.mesh.x(domain_index);
+	domain.y=md2.mesh.y(domain_index);
+	domain.name='Meshaddrifts.Domain.exp';
+	domain.density=1;
+	expwrite(domain,'Meshaddrifts.Domain.exp');
+
+	%unloop domain index: used for later.
+	domain_index=domain_index(1:end-1);
+
+	%remesh md2 using new domain outline, and rift profile: 
+	md2=meshnodensity(md2,'Meshaddrifts.Domain.exp','Meshaddrifts.Rift.exp');
+	md2=meshprocessrifts(md2);
+
+	%plug md2 mesh into md mesh: 
+	[md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z,md.mesh.numberofelements,md.mesh.numberofvertices,elconv,nodeconv,elconv2,nodeconv2]=meshplug(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z,...
+								md2.mesh.elements,md2.mesh.x,md2.mesh.y,md2.mesh.z,md2.extractednodes,md2.extractedelements,domain_index);
+
+	%update md2 rifts using elconv and nodeconv, and plug them into md: 
+	md2.rifts=updateriftindexing(md2.rifts,elconv2,nodeconv2);
+
+	for i=1:md.rifts.numrifts,
+		md.rifts.riftstruct(i)=updateriftindexing(md.rifts.riftstruct(i),elconv,nodeconv);
+	end
+
+	if md.rifts.numrifts==0,
+		md.rifts.riftstruct=md2.rifts;
+		md.rifts.numrifts=1;
+	else
+		md.rifts.riftstruct(end+1,1)=md2.rifts;
+		md.rifts.numrifts=md.rifts.numrifts+1;
+	end
+
+	md.mesh.segments(:,1:2)=nodeconv(md.mesh.segments(:,1:2));
+	md.mesh.segments(:,3)=elconv(md.mesh.segments(:,3));
+
+end
+
+%finish up "a la" mesh.h
+md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+
+%Now, build the connectivity tables for this mesh.
+md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshplug.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshplug.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshplug.m	(revision 27955)
@@ -0,0 +1,85 @@
+function [elements,x,y,z,numberofelements,numberofnodes,elconv,nodeconv,elconv2,nodeconv2]=meshplug(elements,x,y,z,elements2,x2,y2,z2,extractednodes,extractedelements,domain)
+%MESHPLUG - embed mesh into another one
+%     See also meshaddrifts
+
+%initialize elconv,nodeconv conversion tables from md mesh to new md mesh
+elconv=1:size(elements,1); elconv=elconv';
+nodeconv=1:size(x,1); nodeconv=nodeconv';
+
+%take away old elements in area of interest: 
+elements(extractedelements,:)=[];
+element_offset=size(elements,1);
+
+%update elconv after having extracted the area of interest elements
+temp_elconv=elconv; temp_elconv(extractedelements)=[];
+temp_elconvnum=1:length(temp_elconv);
+elconv(temp_elconv)=temp_elconvnum;
+elconv(extractedelements)=NaN;
+
+%initialize elconv2 and nodeconv2, conversion tables from md2 mesh to new md mesh
+elconv2=1:size(elements2,1);elconv2=elconv2'+element_offset;
+nodeconv2=(size(x,1)+1):(size(x,1)+size(x2,1)); nodeconv2=nodeconv2';
+
+extractednodes_minusborder=extractednodes;
+extractednodes_minusborder(domain)=[];
+
+x(extractednodes_minusborder)=NaN;
+y(extractednodes_minusborder)=NaN;
+
+%now, plug md2 mesh: 
+
+%first, offset all ids of md2 mesh
+elements2=elements2+length(x);
+
+%NaN border nodes in second mesh
+x2(1:length(domain))=NaN;
+y2(1:length(domain))=NaN;
+
+%redirect border nodes in elements2  to elements
+for i=1:length(domain),
+	pos=find(elements2==(i+length(x)));
+	elements2(pos)=extractednodes(domain(i));
+end
+
+%same deal for nodeconv2:
+for i=1:length(domain),
+	nodeconv2(i)=extractednodes(domain(i));
+end
+
+%plug elements
+elements=[elements;elements2];
+
+%now, increase number of nodes
+x=[x; x2];
+y=[y; y2];
+z=[z; z2];
+
+%now, get rid of NaN in x:
+while  ~isempty(find(isnan(x))),
+
+	pos=find(isnan(x));
+	node=pos(1);
+
+	%collapse node
+	x(node)=[];
+	y(node)=[];
+	z(node)=[];
+
+	%renumber all nodes > node in elements
+	pos=find(elements>node);
+	elements(pos)=elements(pos)-1;
+
+	%same deal for nodeconv2: 
+	pos=find(nodeconv2>node);
+	nodeconv2(pos)=nodeconv2(pos)-1;
+
+end
+
+numberofnodes=length(x);
+numberofelements=length(elements);
+
+%finish nodeconv: 
+temp_nodeconv=nodeconv;  temp_nodeconv(extractednodes_minusborder)=[];
+temp_nodeconvnum=1:length(temp_nodeconv);
+nodeconv(temp_nodeconv)=temp_nodeconvnum;
+nodeconv(extractednodes_minusborder)=NaN;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshprocessoutsiderifts.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshprocessoutsiderifts.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshprocessoutsiderifts.m	(revision 27955)
@@ -0,0 +1,100 @@
+function md=meshprocessoutsiderifts(md,domainoutline)
+%MESHPROCESSOUTSIDERIFTS - process rifts when they touch the domain outline
+%
+%   Usage:
+%      md=meshprocessoutsiderifts(md,domain)
+%
+
+%go through rifts, and figure out which ones touch the domain outline
+for i=1:length(md.rifts.riftstruct),
+
+	%first, flag nodes that belong to the domain outline
+	flags=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,domainoutline,'node',0);
+
+	rift=md.rifts.riftstruct(i);
+	tips=rift.tips;
+	outsidetips=tips(find(flags(rift.tips)==0));
+
+	%we have found outsidetips, tips that touch the domain outline. go through them
+	for j=1:length(outsidetips),
+
+		tip=outsidetips(j);
+		%find tip in the segments, take first segment (there should be 2) that holds tip, 
+		%and node_connected_to_tip is the other node on this segment:
+		tipindex=find(rift.segments(:,1)==tip); 
+		if length(tipindex),
+			tipindex=tipindex(1);
+			node_connected_to_tip=rift.segments(tipindex,2);
+		else
+			tipindex=find(rift.segments(:,2)==tip); tipindex=tipindex(1);
+			node_connected_to_tip=rift.segments(tipindex,1);
+		end
+
+		%ok, we have the tip node, and the first node connected to it, on the rift. Now, 
+		%identify all the elements that are connected to the tip, and that are on the same 
+		%side of the rift.
+		A=tip;
+		B=node_connected_to_tip;
+
+		elements=[];
+
+		while flags(B), %as long as B does not belong to the domain outline, keep looking.
+			%detect elements on edge A,B:
+			edgeelements=ElementsFromEdge(md.mesh.elements,A,B);
+			%rule out those we already detected
+			already_detected=ismember(edgeelements,elements);
+			nextelement=edgeelements(find(~already_detected));
+			%add new detected element to the list of elements we are looking for.
+			elements=[elements;nextelement];
+			%new B:
+			B=md.mesh.elements(nextelement,find(~ismember(md.mesh.elements(nextelement,:),[A B])));
+		end
+
+		%take the list of elements on one side of the rift that connect to the tip, 
+		%and duplicate the tip on them, so as to open the rift to the outside.
+		num=length(md.mesh.x)+1;
+		md.mesh.x=[md.mesh.x;md.mesh.x(tip)];
+		md.mesh.y=[md.mesh.y;md.mesh.y(tip)];
+		md.mesh.numberofvertices=num;
+
+		%replace tip in elements
+		newelements=md.mesh.elements(elements,:);
+		pos=find(newelements==tip);
+		newelements(pos)=num;
+		md.mesh.elements(elements,:)=newelements;
+		md.rifts.riftstruct(i).tips=[md.rifts.riftstruct(i).tips num];
+
+		%deal with segments
+		tipsegments=find((md.mesh.segments(:,1)==tip) | (md.mesh.segments(:,2)==tip));
+		for k=1:length(tipsegments),
+			segment_index=tipsegments(k);
+			pos=find(md.mesh.segments(segment_index,1:2)~=tip);
+			other_node=md.mesh.segments(segment_index,pos);
+			if ~isconnected(md.mesh.elements,other_node,tip),
+				pos=find(md.mesh.segments(segment_index,1:2)==tip);
+				md.mesh.segments(segment_index,pos)=num;
+			end
+		end
+	end
+end
+
+%Fill in rest of fields:
+md.mesh.numberofelements=length(md.mesh.elements);
+md.mesh.numberofvertices=length(md.mesh.x);
+md.mesh.vertexonboundary=zeros(length(md.mesh.x),1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+end
+
+function flag=isconnected(elements,A,B)% {{{
+	%ISCONNECTED: are two nodes connected by a triangulation?
+	%
+	%   Usage: flag=isconnected(elements,A,B)
+	%
+	%
+
+	elements=ElementsFromEdge(elements,A,B);
+	if isempty(elements),
+		flag=0;
+	else
+		flag=1;
+	end
+end % }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshprocessoutsiderifts.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshprocessoutsiderifts.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshprocessoutsiderifts.py	(revision 27955)
@@ -0,0 +1,103 @@
+import numpy as np
+
+from ContourToMesh import ContourToMesh
+from ElementsFromEdge import ElementsFromEdge
+import MatlabFuncs as m
+
+
+def meshprocessoutsiderifts(md, domainoutline):
+    """MESHPROCESSOUTSIDERIFTS - process rifts when they touch the domain outline
+
+    Usage:
+        md = meshprocessoutsiderifts(md, domain)
+    """
+
+    #go through rifts, and figure out which ones touch the domain outline
+    for rift in md.rifts.riftstruct:
+
+        #first, flag nodes that belong to the domain outline
+        flags = ContourToMesh(md.mesh.elements, md.mesh.x, md.mesh.y, domainoutline, 'node', 0)
+
+        tips = rift.tips
+        outsidetips = tips[np.nonzero(flags[rift.tips - 1])[0]]
+
+        #we have found outsidetips, tips that touch the domain outline. go through them
+        for tip in outsidetips:
+            #find tip in the segments, take first segment (there should be 2) that holds tip,
+            #and node_connected_to_tip is the other node on this segment:
+            tipindex = np.nonzero(rift.segments[:, 0] == tip)[0]
+            if tipindex:
+                tipindex = tipindex[0]
+                node_connected_to_tip = rift.segments[tipindex, 1]
+            else:
+                tipindex = np.nonzero(rift.segments[:, 1] == tip)[0]
+                tipindex = tipindex[0]
+                node_connected_to_tip = rift.segments[tipindex, 1]
+
+            #ok, we have the tip node, and the first node connected to it, on the rift. Now,
+            #identify all the elements that are connected to the tip, and that are on the same
+            #side of the rift.
+            A = tip
+            B = node_connected_to_tip
+
+            elements = np.empty(0, int)
+
+            while flags(B):  #as long as B does not belong to the domain outline, keep looking.
+                #detect elements on edge A, B:
+                edgeelements = ElementsFromEdge(md.mesh.elements, A, B)
+                #rule out those we already detected
+                already_detected = m.ismember(edgeelements, elements)
+                nextelement = edgeelements(np.nonzero(np.logical_not(already_detected))[0])
+                #add new detected element to the list of elements we are looking for.
+                elements = np.concatenate((elements, nextelement))
+                #new B:
+                B = md.mesh.elements[nextelement - 1, np.nonzero(np.logical_not(m.ismember(md.mesh.elements[nextelement - 1, :], np.array([A, B]))))[0]]
+
+            #take the list of elements on one side of the rift that connect to the tip,
+            #and duplicate the tip on them, so as to open the rift to the outside.
+            num = np.size(md.mesh.x) + 1
+            md.mesh.x = np.concatenate((md.mesh.x, md.mesh.x[tip]))
+            md.mesh.y = np.concatenate((md.mesh.y, md.mesh.y[tip]))
+            md.mesh.numberofvertices = num
+
+            #replace tip in elements
+            newelements = md.mesh.elements[elements - 1, :]
+            pos = np.nonzero(newelements == tip)[0]
+            newelements[pos] = num
+            md.mesh.elements[elements - 1, :] = newelements
+            rift.tips = np.concatenate((rift.tips, num))
+
+            #deal with segments
+            tipsegments = np.nonzero(np.logical_or(md.mesh.segments[:, 0] == tip, md.mesh.segments[:, 1] == tip))[0]
+            for segment_index in tipsegments:
+                pos = np.nonzero(md.mesh.segments[segment_index, 0:2] != tip)[0]
+                other_node = md.mesh.segments[segment_index, pos]
+                if not isconnected(md.mesh.elements, other_node, tip):
+                    pos = np.nonzero(md.mesh.segments[segment_index, 0:2] == tip)[0]
+                    md.mesh.segments[segment_index, pos] = num
+
+    #Fill in rest of fields:
+    md.mesh.numberofelements = np.size(md.mesh.elements, axis=0)
+    md.mesh.numberofvertices = np.size(md.mesh.x)
+    md.mesh.vertexonboundary = np.zeros(np.size(md.mesh.x), int)
+    md.mesh.vertexonboundary[md.mesh.segments[:, 0:2] - 1] = 1
+    md.rifts.numrifts = np.length(md.rifts.riftstruct)
+
+    return md
+
+
+def isconnected(elements, A, B):  #{{{
+    """ISCONNECTED: are two nodes connected by a triangulation?
+
+    Usage:
+        flag = isconnected(elements, A, B)
+    """
+
+    elements = ElementsFromEdge(elements, A, B)
+    if not elements:
+        flag = 0
+    else:
+        flag = 1
+
+    return flag
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshprocessrifts.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshprocessrifts.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshprocessrifts.m	(revision 27955)
@@ -0,0 +1,69 @@
+function md=meshprocessrifts(md,domainoutline)
+%MESHPROCESSRIFTS - process mesh when rifts are present
+%
+%   split rifts inside mesh (rifts are defined by presence of
+%   segments inside the domain outline)
+%   if domain outline is provided, check for rifts that could touch it, and open them up.
+%
+%   Usage:
+%      md=meshprocessrifts(md,domainoutline)
+%
+%   Ex: 
+%      md=meshprocessrifts(md,'DomainOutline.exp');
+%
+
+%some checks on arguments: 
+if nargout~=1,
+	help meshprocessrifts
+	error('meshprocessrifts usage error:');
+end
+
+if nargin~=2,
+	help meshprocessrifts
+	error('meshprocessrifts usage error:');
+end
+
+%Call MEX file
+[md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.segments,md.mesh.segmentmarkers,md.rifts.riftstruct]=ProcessRifts(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.segments,md.mesh.segmentmarkers);
+if ~isstruct(md.rifts.riftstruct),
+	error('ProcessRifts did not find any rift');
+end
+
+%Fill in rest of fields:
+numrifts=length(md.rifts.riftstruct);
+md.mesh.numberofelements=length(md.mesh.elements);
+md.mesh.numberofvertices=length(md.mesh.x);
+md.mesh.vertexonboundary=zeros(length(md.mesh.x),1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+
+%get coordinates of rift tips
+for i=1:numrifts,
+	md.rifts.riftstruct(i).tip1coordinates=[md.mesh.x(md.rifts.riftstruct(i).tips(1)) md.mesh.y(md.rifts.riftstruct(i).tips(1))];
+	md.rifts.riftstruct(i).tip2coordinates=[md.mesh.x(md.rifts.riftstruct(i).tips(2)) md.mesh.y(md.rifts.riftstruct(i).tips(2))];
+end
+
+%In case we have rifts that open up the domain outline, we need to open them: 
+flags=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,domainoutline,'node',0);
+found=0;
+for i=1:numrifts,
+	if flags(md.rifts.riftstruct(i).tips(1))==0,
+		found=1;
+		break;
+	end
+	if flags(md.rifts.riftstruct(i).tips(2))==0,
+		found=1;
+		break;
+	end
+end
+if found,
+	md=meshprocessoutsiderifts(md,domainoutline);
+end
+
+%get elements that are not correctly oriented in the correct direction:
+aires=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y);
+pos=find(aires<0);
+md.mesh.elements(pos,:)=[md.mesh.elements(pos,2) md.mesh.elements(pos,1) md.mesh.elements(pos,3)];
+
+%case of 3D surface mesh: 
+if strcmpi(class(md.mesh),'mesh3dsurface'),
+	md.mesh.z=md.mesh.x; md.mesh.z(:)=0;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshprocessrifts.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshprocessrifts.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshprocessrifts.py	(revision 27955)
@@ -0,0 +1,62 @@
+import numpy as np
+
+from ContourToMesh import ContourToMesh
+from GetAreas import GetAreas
+from meshprocessoutsiderifts import meshprocessoutsiderifts
+from ProcessRifts import ProcessRifts
+
+
+def meshprocessrifts(md, domainoutline):
+    """MESHPROCESSRIFTS - process mesh when rifts are present
+
+    split rifts inside mesh (rifts are defined by presence of
+    segments inside the domain outline)
+    if domain outline is provided, check for rifts that could touch it, and open them up.
+
+    Usage:
+        md = meshprocessrifts(md, domainoutline)
+
+    Example:
+        md = meshprocessrifts(md, 'DomainOutline.exp')
+    """
+
+    # Call Python module
+    md.mesh.elements, md.mesh.x, md.mesh.y, md.mesh.segments, md.mesh.segmentmarkers, md.rifts.riftstruct = ProcessRifts(md.mesh.elements, md.mesh.x, md.mesh.y, md.mesh.segments, md.mesh.segmentmarkers)
+    md.mesh.elements = md.mesh.elements.astype(int)
+    md.mesh.x = md.mesh.x.reshape(-1)
+    md.mesh.y = md.mesh.y.reshape(-1)
+    md.mesh.segments = md.mesh.segments.astype(int)
+    md.mesh.segmentmarkers = md.mesh.segmentmarkers.astype(int)
+    if not isinstance(md.rifts.riftstruct, list) or not md.rifts.riftstruct:
+        raise RuntimeError("ProcessRifts did not find any rift")
+
+    #Fill in rest of fields:
+    md.mesh.numberofelements = np.size(md.mesh.elements, axis=0)
+    md.mesh.numberofvertices = np.size(md.mesh.x)
+    md.mesh.vertexonboundary = np.zeros(np.size(md.mesh.x), int)
+    md.mesh.vertexonboundary[md.mesh.segments[:, 0:2] - 1] = 1
+
+    #get coordinates of rift tips
+    for rift in md.rifts.riftstruct:
+        rift['tip1coordinates'] = np.hstack((md.mesh.x[rift['tips'][0, 0].astype(int) - 1].reshape(-1, ), md.mesh.y[rift['tips'][0, 0].astype(int) - 1].reshape(-1, )))
+        rift['tip2coordinates'] = np.hstack((md.mesh.x[rift['tips'][0, 1].astype(int) - 1].reshape(-1, ), md.mesh.y[rift['tips'][0, 1].astype(int) - 1].reshape(-1, )))
+
+    #In case we have rifts that open up the domain outline, we need to open them:
+    flags = ContourToMesh(md.mesh.elements, md.mesh.x, md.mesh.y, domainoutline, 'node', 0)
+    found = 0
+    for rift in md.rifts.riftstruct:
+        if flags[rift['tips'][0, 0].astype(int) - 1] == 0:
+            found = 1
+            break
+        if flags[rift['tips'][0, 1].astype(int) - 1] == 0:
+            found = 1
+            break
+    if found:
+        md = meshprocessoutsiderifts(md, domainoutline)
+
+    #get elements that are not correctly oriented in the correct direction:
+    aires = GetAreas(md.mesh.elements, md.mesh.x, md.mesh.y)
+    pos = np.nonzero(aires < 0)[0]
+    md.mesh.elements[pos, :] = np.vstack((md.mesh.elements[pos, 1], md.mesh.elements[pos, 0], md.mesh.elements[pos, 2])).T
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshyamsrecreateriftsegments.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshyamsrecreateriftsegments.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/meshyamsrecreateriftsegments.m	(revision 27955)
@@ -0,0 +1,90 @@
+function md=meshyamsrecreateriftsegments(md)
+
+	%recreate rift segments: just used for yams. temporaroy routine.
+	pos_record=[];
+	if md.rifts.numrifts,
+		for i=1:md.rifts.numrifts,
+			rift=md.rifts.riftstruct(i);
+
+			%closed rifts first:
+			if length(rift.tips)==2,
+
+				%find tip1 and tip2 for this rift, in the new mesh created by yams.
+				pos=find_point(md.mesh.x(md.mesh.segments(:,1)),md.mesh.y(md.mesh.segments(:,1)),rift.tip1coordinates(1),rift.tip1coordinates(2));
+				tip1=md.mesh.segments(pos,1);
+				pos=find_point(md.mesh.x(md.mesh.segments(:,1)),md.mesh.y(md.mesh.segments(:,1)),rift.tip2coordinates(1),rift.tip2coordinates(2));
+				tip2=md.mesh.segments(pos,1);
+
+				%start from tip1, and build segments of this rift. 
+				pos=find_point(md.mesh.x(md.mesh.segments(:,1)),md.mesh.y(md.mesh.segments(:,1)),rift.tip1coordinates(1),rift.tip1coordinates(2));
+				pos_record=[pos_record; pos];
+				riftsegs=md.mesh.segments(pos,:);
+				while 1,
+					A=riftsegs(end,1); B=riftsegs(end,2); el=riftsegs(end,3);
+					%find other segment that holds B.
+					pos=find(md.mesh.segments(:,1)==B);
+					pos_record=[pos_record; pos];
+					riftsegs=[riftsegs; md.mesh.segments(pos,:)];
+					if riftsegs(end,2)==tip1, 
+						break;
+					end
+				end
+				md.rifts.riftstruct(i).segments=riftsegs;
+				md.rifts.riftstruct(i).tips=[tip1 tip2];
+
+			else
+				%ok, this is a rift that opens up to the domain outline.  One tip is going to be 
+				%double, the other one, single. We are going to start from the single tip, towards the two 
+				%other doubles
+
+				%find tip1 and tip2 for this rift, in the new mesh created by yams.
+				pos1=find_point(md.mesh.x(md.mesh.segments(:,1)),md.mesh.y(md.mesh.segments(:,1)),rift.tip1coordinates(1),rift.tip1coordinates(2));
+				tip1=md.mesh.segments(pos1,1);
+				pos2=find_point(md.mesh.x(md.mesh.segments(:,1)),md.mesh.y(md.mesh.segments(:,1)),rift.tip2coordinates(1),rift.tip2coordinates(2));
+				tip2=md.mesh.segments(pos2,1);
+				if length(tip1)==2,
+					%swap.
+					temp=tip1; tip1=tip2; tip2=temp;
+					temp=pos1; pos1=pos2; pos2=temp;
+					pos=pos1;
+				else
+					pos=pos1;
+				end
+
+				pos_record=[pos_record; pos];
+				riftsegs=md.mesh.segments(pos,:);
+				while 1,
+					A=riftsegs(end,1); B=riftsegs(end,2); el=riftsegs(end,3);
+					%find other segment that holds B.
+					pos=find(md.mesh.segments(:,1)==B);
+					pos_record=[pos_record; pos];
+					riftsegs=[riftsegs; md.mesh.segments(pos,:)];
+					if ((riftsegs(end,2)==tip2(1)) | (riftsegs(end,2)==tip2(2))), 
+						%figure out which tip we reached
+						if riftsegs(end,2)==tip2(1), index=2; else index=1; end
+						break;
+					end
+				end
+
+				%ok, now, we start from the other tip2, towards tip1
+				pos=pos2(index);
+				pos_record=[pos_record; pos];
+				riftsegs=[riftsegs; md.mesh.segments(pos,:)];
+				while 1,
+					A=riftsegs(end,1); B=riftsegs(end,2); el=riftsegs(end,3);
+					%find other segment that holds B.
+					pos=find(md.mesh.segments(:,1)==B);
+					pos_record=[pos_record; pos];
+					riftsegs=[riftsegs; md.mesh.segments(pos,:)];
+					if riftsegs(end,2)==tip1, 
+						break;
+					end
+				end
+				md.rifts.riftstruct(i).segments=riftsegs;
+				md.rifts.riftstruct(i).tips=[tip1 tip2(1) tip2(2)];
+
+			end
+		end
+	end
+	%take out rift segments from segments
+	md.mesh.segments(pos_record,:)=[];
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/rifttipsonmesh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/rifttipsonmesh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/rifttipsonmesh.m	(revision 27955)
@@ -0,0 +1,32 @@
+function tips=rifttipsonmesh(md,riftoutline)
+%RIFTTIPSONMESH: identify, using a rift outline, the nodes that are tips of 
+%                rifts.
+
+%read rift file according to its extension: 
+[path,name,ext]=fileparts(riftoutline);
+if strcmp(ext,'.exp'),
+	rifts=expread(riftoutline);
+elseif strcmp(ext,'.shp'),
+	rifts=shpread(riftoutline);
+else
+	error(['bamg error message: file ' riftoutline ' format not supported (.shp or .exp)']);
+end
+
+tips=[];
+
+for i=1:length(rifts),
+	rift=rifts(i);
+
+	x_tip=rift.x(1);
+	y_tip=rift.y(1);
+
+	index=find_point(md.mesh.x,md.mesh.y,x_tip,y_tip);
+	tips(end+1)=index;
+
+	x_tip=rift.x(end);
+	y_tip=rift.y(end);
+
+	index=find_point(md.mesh.x,md.mesh.y,x_tip,y_tip);
+	tips(end+1)=index;
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/rifttipsrefine.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/rifttipsrefine.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/rifttipsrefine.m	(revision 27955)
@@ -0,0 +1,26 @@
+function md=rifttipsrefine(md,filename,resolution,circleradius)
+%RIFTTIPSREFINE - refine mesh near rift tips
+%
+%   Usage:
+%      md=rifttipsrefine(md,filename,resolution,circleradius);
+
+numberofnodes=50;
+
+%take rifts, and create refinement circles around tips
+rifts=expread(filename);
+
+!echo -n "" > Circles.exp
+for i=1:length(rifts),
+	tip1=[rifts(i).x(1) rifts(i).y(1)];
+	tip2=[rifts(i).x(end) rifts(i).y(end)];
+	%create circle around tip
+	expcreatecircle('Circle1.exp',tip1(1),tip1(2),circleradius,numberofnodes);
+	expcreatecircle('Circle2.exp',tip2(1),tip2(2),circleradius,numberofnodes);
+	!cat Circles.exp Circle1.exp Circle2.exp > Circles2.exp
+	!mv Circles2.exp Circles.exp
+	!rm -rf Circle1.exp Circle2.exp
+end
+
+md=meshexprefine(md,'Circles.exp',resolution);
+
+system('rm -rf Circles.exp');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/updateriftindexing.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/updateriftindexing.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/rifts/updateriftindexing.m	(revision 27955)
@@ -0,0 +1,11 @@
+function rift=updateriftindexing(rift,elconv,nodeconv)
+%UPDATERIFTINDEXING - update rift indexing, using mesh to new mesh conversion tables
+%     See also meshaddrift
+
+rift.segments(:,1:2)=nodeconv(rift.segments(:,1:2));
+rift.segments(:,3)=elconv(rift.segments(:,3));
+rift.pairs=elconv(rift.pairs);
+rift.tips=nodeconv(rift.tips);
+
+rift.penaltypairs(:,1:2)=nodeconv(rift.penaltypairs(:,1:2));
+rift.penaltypairs(:,3:4)=elconv(rift.penaltypairs(:,3:4));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/roundmesh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/roundmesh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/roundmesh.m	(revision 27955)
@@ -0,0 +1,54 @@
+function md=roundmesh(md,radius,resolution,varargin)
+%ROUNDMESH - create an unstructured round mesh 
+%
+%   This script will generate an unstructured round mesh
+%   - radius     : specifies the radius of the circle in meters
+%   - resolution : specifies the resolution in meters
+%
+%   Usage:
+%      md=roundmesh(md,radius,resolution)
+%      md=roundmesh(md,radius,resolution,'domain.exp')
+
+%First we have to create the domain outline 
+if nargin>=4
+	expname = varargin{1};
+else
+	expname = [tempname() '.exp'];
+end
+
+%Get number of points on the circle
+pointsonedge=floor((2.*pi*radius) / resolution)+1; %+1 to close the outline
+
+%Calculate the Cartesian coordinates of the points
+theta=linspace(0,2*pi,pointsonedge)';
+x_list=roundsigfig(radius*cos(theta),12);
+y_list=roundsigfig(radius*sin(theta),12);
+A=struct('x',x_list,'y',y_list,'density',1.);
+expwrite(A,expname);
+
+%Call mesher
+md=triangle(md,expname,resolution);
+%md=bamg(md,'domain','RoundDomainOutline.exp','hmin',resolution);
+
+%move the closest node to the center
+[minimum pos]=min(md.mesh.x.^2+md.mesh.y.^2);
+md.mesh.x(pos)=0.;
+md.mesh.y(pos)=0.;
+
+%delete domain
+if nargin<4
+	delete(expname);
+end
+end
+
+function x=roundsigfig(x,n)
+
+digits=ceil(log10(abs(x)));
+x=x./10.^digits;
+x=round(x.*10.^n)./10.^n;
+x=x.*10.^digits;
+
+pos=find(isnan(x));
+x(pos)=0.;
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/roundmesh.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/roundmesh.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/roundmesh.py	(revision 27955)
@@ -0,0 +1,61 @@
+import numpy as np
+import os
+from collections import OrderedDict
+from expwrite import expwrite
+from MatlabFuncs import tempname
+from triangle import triangle
+
+
+def roundmesh(md, radius, resolution, *args):
+    """roundmesh - create an unstructured round mesh
+
+    This script will generate an unstructured round mesh
+    - radius     : specifies the radius of the circle in meters
+    - resolution : specifies the resolution in meters
+
+    Usage:
+        md = roundmesh(md, radius, resolution)
+        md = roundmesh(md, radius, resolution, 'domain.exp')
+    """
+    # First we have to create the domain outline
+    if len(args):
+        expname = args[0]
+    else:
+        expname = tempname() + '.exp'
+
+    # Get number of points on the circle
+    pointsonedge = int(np.floor((2. * np.pi * radius) / resolution) + 1)  # +1 to close the outline
+
+    # Calculate the Cartesian coordinates of the points
+    theta = np.linspace(0., 2. * np.pi, pointsonedge)
+    x_list = roundsigfig(radius * np.cos(theta), 12)
+    y_list = roundsigfig(radius * np.sin(theta), 12)
+    A = OrderedDict()
+    A['x'] = x_list
+    A['y'] = y_list
+    A['density'] = 1.
+    expwrite(A, expname)
+
+    # Call mesher
+    md = triangle(md, expname, resolution)
+    # md = bamg(md, 'domain', 'RoundDomainOutline.exp', 'hmin', resolution)
+
+    # Move the closest node to the center
+    pos = np.argmin(np.add(np.power(md.mesh.x, 2), np.power(md.mesh.y, 2)))
+    md.mesh.x[pos] = 0.
+    md.mesh.y[pos] = 0.
+
+    # Delete domain
+    if not len(args):
+        os.remove(expname)
+
+    return md
+
+
+def roundsigfig(x, n):
+    nonzeros = np.where(x != 0)
+    digits = np.ceil(np.log10(np.abs(x[nonzeros])))
+    x[nonzeros] = x[nonzeros] / 10.**digits
+    x[nonzeros] = np.round(x[nonzeros], decimals=n)
+    x[nonzeros] = x[nonzeros] * 10.**digits
+    return x
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/squaremesh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/squaremesh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/squaremesh.m	(revision 27955)
@@ -0,0 +1,107 @@
+function md=squaremesh(md,Lx,Ly,nx,ny,computeconnectivity)
+%SQUAREMESH - create a structured square mesh 
+%
+%   This script will generate a structured square mesh
+%   Lx and Ly are the dimension of the domain (in meters)
+%   nx anx ny are the number of nodes in the x and y direction
+%   The coordinates x and y returned are in meters.
+%
+%   Usage:
+%      [md]=squaremesh(md,Lx,Ly,nx,ny)
+
+%process options
+if nargin == 5,
+	computeconnectivity = 1;
+end
+
+%get number of elements and number of nodes
+nel=(nx-1)*(ny-1)*2;
+nods=nx*ny;
+
+%Old method
+if 0,
+	%initialization
+	index=zeros(nel,3);
+	x=zeros(nx*ny,1);
+	y=zeros(nx*ny,1);
+
+	%create coordinates
+	for n=1:nx,
+		for m=1:ny,
+			x((n-1)*ny+m)=(n-1.);
+			y((n-1)*ny+m)=(m-1.);
+		end
+	end
+
+	%create index
+	for n=1:(nx-1)
+		for m=1:(ny-1),
+			A=(n-1)*ny+m;
+			B=A+1;
+			C=n*ny+m;
+			D=C+1;
+			index((n-1)*(ny-1)*2+2*(m-1)+1,:)=[A C B];
+			index((n-1)*(ny-1)*2+2*m,:)=[B C D];
+		end
+	end
+
+	%Scale  x and y
+	x=x/max(x)*Lx;
+	y=y/max(y)*Ly;
+else
+	%New method (faster!)
+	x = repmat(linspace(0,Lx,nx),[ny 1]);
+	x = reshape(x,[nx*ny 1]);
+	y = repmat(linspace(0,Ly,ny)',[1 nx]);
+	y = reshape(y,[nx*ny 1]);
+
+	%do first column of elements first
+	nels1 = 2*(ny-1);
+	index = ones(nels1,3);
+	%First column
+	index(2:2:nels1,1) = 2:ny;
+	index(3:2:nels1,1) = 2:ny-1;
+	%2d column
+	index(1:2:nels1,2) = ny+1:2*ny-1;
+	index(2:2:nels1,2) = ny+1:2*ny-1;
+	%3rd column
+	index(1:2:nels1,3) = 2:ny;
+	index(2:2:nels1,3) = ny+2:2*ny;
+
+	%Now copy column and offset with ny, nx times
+	index = repmat(index,[nx-1 1]);
+	offset = repmat([0:ny:(nx-2)*ny],[nels1 1]);
+	offset = reshape(offset,[(nx-1)*nels1,1]);
+	offset = repmat(offset,[1,3]);
+	index = index + offset;
+end
+
+
+%create segments
+segments=zeros(2*(nx-1)+2*(ny-1),3);
+%left edge:
+segments(1:ny-1,:)=[[2:ny]' [1:ny-1]' 2*[1:ny-1]'-1];
+%right edge:
+segments(ny:2*(ny-1),:)=[[ny*(nx-1)+1:nx*ny-1]' [ny*(nx-1)+2:nx*ny]' 2*[(ny-1)*(nx-2)+1:(nx-1)*(ny-1)]'];
+%front edge:
+segments(2*(ny-1)+1:2*(ny-1)+(nx-1),:)=[[2*ny:ny:ny*nx]' [ny:ny:ny*(nx-1)]' [2*(ny-1):2*(ny-1):2*(nx-1)*(ny-1)]'];
+%back edge
+segments(2*(ny-1)+(nx-1)+1:2*(nx-1)+2*(ny-1),:)=[[1:ny:(nx-2)*ny+1]' [ny+1:ny:ny*(nx-1)+1]' [1:2*(ny-1):2*(nx-2)*(ny-1)+1]'];
+
+%plug coordinates and nodes
+md.mesh=mesh2d();
+md.mesh.x=x;
+md.mesh.y=y;
+md.mesh.numberofvertices=nods;
+md.mesh.vertexonboundary=zeros(nods,1);md.mesh.vertexonboundary(segments(:,1:2))=1;
+
+%plug elements
+md.mesh.elements=index;
+md.mesh.segments=segments;
+md.mesh.numberofelements=nel;
+
+%Now, build the connectivity tables for this mesh.
+if computeconnectivity,
+	md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+	md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/squaremesh.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/squaremesh.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/squaremesh.py	(revision 27955)
@@ -0,0 +1,77 @@
+import numpy as np
+
+from ElementConnectivity import ElementConnectivity
+from mesh2d import mesh2d
+from NodeConnectivity import NodeConnectivity
+
+
+def squaremesh(md, Lx, Ly, nx, ny):
+    """SQUAREMESH - create a structured square mesh
+
+    This script will generate a structured square mesh
+    Lx and Ly are the dimension of the domain (in meters)
+    nx anx ny are the number of nodes in the x and y direction
+    The coordinates x and y returned are in meters.
+
+    Usage:
+        [md] = squaremesh(md, Lx, Ly, nx, ny)
+    """
+
+    #get number of elements and number of nodes
+    nel = (nx - 1) * (ny - 1) * 2
+    nods = nx * ny
+
+    #initialization
+    index = np.zeros((nel, 3), int)
+    x = np.zeros((nx * ny, ))
+    y = np.zeros((nx * ny, ))
+
+    #create coordinates
+    for n in range(0, nx):
+        for m in range(0, ny):
+            x[n * ny + m] = float(n)
+            y[n * ny + m] = float(m)
+
+    #create index
+    for n in range(0, nx - 1):
+        for m in range(0, ny - 1):
+            A = n * ny + (m + 1)
+            B = A + 1
+            C = (n + 1) * ny + (m + 1)
+            D = C + 1
+            index[n * (ny - 1) * 2 + 2 * m, :] = [A, C, B]
+            index[n * (ny - 1) * 2 + 2 * (m + 1) - 1, :] = [B, C, D]
+
+    #Scale  x and y
+    x = x / np.max(x) * Lx
+    y = y / np.max(y) * Ly
+
+    #create segments
+    segments = np.zeros((2 * (nx - 1) + 2 * (ny - 1), 3), int)
+    #left edge:
+    segments[0:ny - 1, :] = np.vstack((np.arange(2, ny + 1), np.arange(1, ny), (2 * np.arange(1, ny) - 1))).T
+    #right edge:
+    segments[ny - 1:2 * (ny - 1), :] = np.vstack((np.arange(ny * (nx - 1) + 1, nx * ny), np.arange(ny * (nx - 1) + 2, nx * ny + 1), 2 * np.arange((ny - 1) * (nx - 2) + 1, (nx - 1) * (ny - 1) + 1))).T
+    #front edge:
+    segments[2 * (ny - 1):2 * (ny - 1) + (nx - 1), :] = np.vstack((np.arange(2 * ny, ny * nx + 1, ny), np.arange(ny, ny * (nx - 1) + 1, ny), np.arange(2 * (ny - 1), 2 * (nx - 1) * (ny - 1) + 1, 2 * (ny - 1)))).T
+    #back edge
+    segments[2 * (ny - 1) + (nx - 1):2 * (nx - 1) + 2 * (ny - 1), :] = np.vstack((np.arange(1, (nx - 2) * ny + 2, ny), np.arange(ny + 1, ny * (nx - 1) + 2, ny), np.arange(1, 2 * (nx - 2) * (ny - 1) + 2, 2 * (ny - 1)))).T
+
+    #plug coordinates and nodes
+    md.mesh = mesh2d()
+    md.mesh.x = x
+    md.mesh.y = y
+    md.mesh.numberofvertices = nods
+    md.mesh.vertexonboundary = np.zeros(nods, int)
+    md.mesh.vertexonboundary[segments[:, 0:2] - 1] = 1
+
+    #plug elements
+    md.mesh.elements = index
+    md.mesh.segments = segments
+    md.mesh.numberofelements = nel
+
+    #Now, build the connectivity tables for this mesh.
+    md.mesh.vertexconnectivity = NodeConnectivity(md.mesh.elements, md.mesh.numberofvertices)
+    md.mesh.elementconnectivity = ElementConnectivity(md.mesh.elements, md.mesh.vertexconnectivity)
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/triangle.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/triangle.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/triangle.js	(revision 27955)
@@ -0,0 +1,58 @@
+function triangle(md){
+//TRIANGLE - create model mesh using the triangle package
+//
+//   This routine creates a model mesh using Triangle and a domain outline, to within a certain resolution
+//   where md is a @model object, domainname is the name of an Argus domain outline file, 
+//   and resolution is a characteristic length for the mesh (same unit as the domain outline
+//   unit). Riftname is an optional argument (Argus domain outline) describing rifts.
+//
+//   Usage:
+//      triangle(md,domain,resolution)
+//   or triangle(md,domain,riftname, resolution)
+//
+//   Examples:
+//      triangle(md,domain,1000);
+//      triangle(md,domain, rifts, 1500);
+
+	if (!(arguments.length==3 | arguments.length==4)){
+		console.log('triangle usage error.');
+	}
+	
+	var md=arguments[0];
+	var domain=arguments[1];
+
+	if (arguments.length==3){
+		var resolution=arguments[2];
+		var rifts=[];
+	}
+	if (arguments.length==4){
+		var rifts=arguments[2];
+		var resolution=arguments[3];
+	}
+
+	//Figure out a characteristic area. Resolution is a node oriented concept (ex a 1000m  resolution node would 
+	//be made of 1000*1000 area squares). 
+	var area=Math.pow(resolution,2);
+
+	//Call mesher: 
+	var return_array=Triangle(md, domain, rifts, area); 
+
+	//Plug into md:
+	md.mesh.elements=return_array[0];
+	md.mesh.x=return_array[1];
+	md.mesh.y=return_array[2];
+	md.mesh.segments=return_array[3];
+	md.mesh.segmentmarkers=return_array[4];
+	
+	//Fill in rest of fields:
+	md.mesh.numberofelements=md.mesh.elements.length;
+	md.mesh.numberofvertices=md.mesh.x.length;
+	md.mesh.vertexonboundary=new Float64Array(md.mesh.numberofvertices); 
+
+	for (i=0;i<md.mesh.segments.length;i++) for(var j=0;j<2;j++) md.mesh.vertexonboundary[md.mesh.segments[i][j]-1]=1;
+
+	//Now, build the connectivity tables for this mesh.
+	md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+	md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);	
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/triangle.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/triangle.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/triangle.m	(revision 27955)
@@ -0,0 +1,85 @@
+function md=triangle(md,domainname,varargin)
+%TRIANGLE - create model mesh using the triangle package
+%
+%   This routine creates a model mesh using Triangle and a domain outline, to within a certain resolution
+%   where md is a @model object, domainname is the name of an Argus domain outline file, 
+%   and resolution is a characteristic length for the mesh (same unit as the domain outline
+%   unit). Riftname is an optional argument (Argus domain outline) describing rifts.
+%
+%   Usage:
+%      md=triangle(md,domainname,resolution)
+%   or md=triangle(md,domainname,riftname, resolution)
+%
+%   Examples:
+%      md=triangle(md,'DomainOutline.exp',1000);
+%      md=triangle(md,'DomainOutline.exp','Rifts.exp',1500);
+
+%Figure out a characteristic area. Resolution is a node oriented concept (ex a 1000m  resolution node would 
+%be made of 1000*1000 area squares). 
+if (nargin==3),
+	resolution=varargin{1};
+	riftname='';
+end
+if (nargin==4),
+	riftname=varargin{1};
+	resolution=varargin{2};
+end
+
+%Check that mesh was not already run, and warn user: 
+if md.mesh.numberofelements~=0,
+	choice=input('This model already has a mesh. Are you sure you want to go ahead? (y/n)','s');
+	if ~strcmp(choice,'y')
+		disp('no meshing done ... exiting');
+		return
+	end
+end
+
+area=resolution^2;
+
+%Check that file exist (this is a very very common mistake)
+if ~exist(domainname)
+	error(['file "' domainname '" not found']);
+end
+
+%Mesh using Triangle
+[elements,x,y,segments,segmentmarkers]=Triangle_matlab(domainname,riftname,area);
+
+%check that all the created nodes belong to at least one element
+removeorphans=1;
+if removeorphans,
+	uniqueelements=sort(unique(elements(:)));
+	orphans=find(~ismember([1:length(x)],uniqueelements));
+	for i=1:length(orphans),
+		disp('WARNING: removing orphans');
+		%get rid of the orphan node i
+		%update x and y
+		x=[x(1:orphans(i)-(i-1)-1); x(orphans(i)-(i-1)+1:end)];
+		y=[y(1:orphans(i)-(i-1)-1); y(orphans(i)-(i-1)+1:end)];
+		%update elements
+		pos=find(elements>orphans(i)-(i-1));
+		elements(pos)=elements(pos)-1;
+		%update segments
+		pos1=find(segments(:,1)>orphans(i)-(i-1));
+		pos2=find(segments(:,2)>orphans(i)-(i-1));
+		segments(pos1,1)=segments(pos1,1)-1;
+		segments(pos2,2)=segments(pos2,2)-1;
+	end
+end
+
+%plug into md
+md.mesh=mesh2d();
+md.mesh.x=x;
+md.mesh.y=y;
+md.mesh.elements=elements;
+md.mesh.segments=segments;
+md.mesh.segmentmarkers=segmentmarkers;
+
+%Fill in rest of fields:
+md.mesh.numberofelements=size(md.mesh.elements,1);
+md.mesh.numberofvertices=length(md.mesh.x);
+md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1);
+md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+
+%Now, build the connectivity tables for this mesh.
+md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/triangle.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/triangle.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/triangle.py	(revision 27955)
@@ -0,0 +1,98 @@
+import os.path
+
+import numpy as np
+
+from ElementConnectivity import ElementConnectivity
+from mesh2d import mesh2d
+from NodeConnectivity import NodeConnectivity
+from Triangle_python import Triangle_python
+
+
+def triangle(md, domainname, *args):
+    """triangle - create model mesh using the triangle package
+
+    This routine creates a model mesh using Triangle and a domain outline, to 
+    within a certain resolution where md is a @model object, domainname is the 
+    name of an Argus domain outline file, and resolution is a characteristic 
+    length for the mesh (same unit as the domain outline unit). Riftname is an optional argument (Argus domain outline) describing rifts.
+
+    Usage:
+        md = triangle(md, domainname, resolution)
+        OR
+        md = triangle(md, domainname, resolution, riftname)
+
+    Examples:
+        md = triangle(md, 'DomainOutline.exp', 1000)
+        md = triangle(md, 'DomainOutline.exp', 1000, 'Rifts.exp')
+    """
+
+    # Figure out a characteristic area. Resolution is a node oriented concept 
+    # (ex a 1000m resolution node would be made of 1000 * 1000 area squares).
+
+    if len(args) == 1:
+        resolution = args[0]
+        riftname = ''
+    if len(args) == 2:
+        riftname = args[0]
+        resolution = args[1]
+
+    # Check that mesh was not already run, and warn user
+    if md.mesh.numberofelements:
+        choice = input('This model already has a mesh. Are you sure you want to go ahead? (y / n)')
+        if choice not in ['y', 'n']:
+            print('bad answer try you should use \'y\' or \'n\' ... exiting')
+            return None
+        if choice == 'n':
+            print('no meshing done ... exiting')
+            return None
+
+    area = resolution ** 2
+
+    # Check that file exists (this is a very common mistake)
+    if not os.path.exists(domainname):
+        raise IOError('file {} not found'.format(domainname))
+
+    # Mesh using Triangle
+    elements, x, y, segments, segmentmarkers = Triangle_python(domainname, riftname, area)
+
+    # Check that all the created nodes belong to at least one element
+    removeorphans = 1
+    if removeorphans:
+        uniqueelements = np.sort(np.unique(elements))
+        orphans = np.nonzero((~np.isin(range(1, len(x)), uniqueelements)).astype(int))[0]
+        for i in range(0, len(orphans)):
+            print('WARNING: removing orphans')
+            # Get rid of the orphan node i
+            # Update x and y
+            x = np.concatenate((x[0:(orphans[i] - i)], x[(orphans[i] - i + 1):]))
+            y = np.concatenate((y[0:(orphans[i] - i)], y[(orphans[i] - i + 1):]))
+            # Update elements
+            pos = np.nonzero((elements > (orphans[i] - i)).flatten(order='F'))[0]
+            elementstmp = elements.flatten(order='F')
+            elementstmp[pos] -= 1
+            elements = elementstmp.reshape(np.shape(elements), order='F')
+            # Update segments
+            pos1 = np.nonzero(segments[:,0] > (orphans[i] - i))[0]
+            pos2 = np.nonzero(segments[:,1] > (orphans[i] - i))[0]
+            segments[pos1, 0] -= 1
+            segments[pos2, 1] -= 1
+
+    # Plug into md
+    md.mesh = mesh2d()
+    md.mesh.x = x
+    md.mesh.y = y
+    md.mesh.elements = elements.astype(int)
+    md.mesh.segments = segments.astype(int)
+    md.mesh.segmentmarkers = segmentmarkers.astype(int)
+
+    # Fill in rest of fields
+    md.mesh.numberofelements = np.size(md.mesh.elements, axis=0)
+    md.mesh.numberofvertices = np.size(md.mesh.x)
+    md.mesh.vertexonboundary = np.zeros(md.mesh.numberofvertices, int)
+    md.mesh.vertexonboundary[md.mesh.segments[:, 0:2] - 1] = 1
+
+    # Now, build the connectivity tables for this mesh
+    md.mesh.vertexconnectivity = NodeConnectivity(md.mesh.elements, md.mesh.numberofvertices)
+    md.mesh.elementconnectivity = ElementConnectivity(md.mesh.elements, md.mesh.vertexconnectivity)
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/mesh/triangle2dvertical.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/mesh/triangle2dvertical.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/mesh/triangle2dvertical.m	(revision 27955)
@@ -0,0 +1,62 @@
+function md=triangle(md,domainname,resolution)
+%TRIANGLE - create model mesh using the triangle package
+%
+%   This routine creates a model mesh using Triangle and a domain outline, to within a certain resolution
+%   where md is a @model object, domainname is the name of an Argus domain outline file, 
+%   and resolution is a characteristic length for the mesh (same unit as the domain outline
+%   unit). Riftname is an optional argument (Argus domain outline) describing rifts.
+%
+%   Usage:
+%      md=triangle(md,domainname,resolution)
+%
+%   Examples:
+%      md=triangle(md,'DomainOutline.exp',1000);
+
+%Check that mesh was not already run, and warn user: 
+if md.mesh.numberofelements~=0,
+	choice=input('This model already has a mesh. Are you sure you want to go ahead? (y/n)','s');
+	if ~strcmp(choice,'y')
+		disp('no meshing done ... exiting');
+		return
+	end
+end
+
+area=resolution^2;
+
+%Mesh using Triangle
+[elements,x,z,segments,segmentmarkers]=Triangle_matlab(domainname,'',area);
+
+%check that all the created nodes belong to at least one element
+orphan=find(~ismember([1:length(x)],sort(unique(elements(:)))));
+for i=1:length(orphan),
+	disp('WARNING: removing orphans');
+	%get rid of the orphan node i
+	%update x and y
+	x=[x(1:orphan(i)-(i-1)-1); x(orphan(i)-(i-1)+1:end)];
+	z=[z(1:orphan(i)-(i-1)-1); z(orphan(i)-(i-1)+1:end)];
+	%update elements
+	pos=find(elements>orphan(i)-(i-1));
+	elements(pos)=elements(pos)-1;
+	%update segments
+	pos1=find(segments(:,1)>orphan(i)-(i-1));
+	pos2=find(segments(:,2)>orphan(i)-(i-1));
+	segments(pos1,1)=segments(pos1,1)-1;
+	segments(pos2,2)=segments(pos2,2)-1;
+end
+
+%plug into md
+md.mesh=mesh2dvertical();
+md.mesh.x=x;
+md.mesh.z=z;
+md.mesh.elements=elements;
+md.mesh.segments=segments;
+md.mesh.segmentmarkers=segmentmarkers;
+
+%Fill in rest of fields:
+md.mesh.numberofelements=size(md.mesh.elements,1);
+md.mesh.numberofvertices=length(md.mesh.x);
+md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+
+%Now, build the connectivity tables for this mesh.
+md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/MatlabFuncs.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/MatlabFuncs.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/MatlabFuncs.js	(revision 27955)
@@ -0,0 +1,566 @@
+/*
+A collection of functions that replicate the behavior of MATLAB built-in
+functions of the same, respective name.
+
+Where possible, users are encouraged to use native and/or the most efficient 
+methods in JavaScript, but we provide these functions as a way to make 
+translations from the MATLAB to the JavaScript ISSM API more seamless.
+
+NOTE:
+- We cannot implement the following MATLAB built-in functions by name as their
+names are reserved keywords in JavaScript,
+    class
+
+TODO:
+- Implement,
+    sort
+    unique
+
+Sources:
+- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#keywords
+*/
+
+/**
+ * FUNCTION any - Determine if any array elements are nonzero
+ *
+ * Replicates behavior of MATLAB's 'any' function.
+ *
+ * Usage:
+ *     B = any(A);
+ *
+ * Sources:
+ * - https://www.mathworks.com/help/matlab/ref/any.html
+ *
+ * NOTE:
+ * - Only basic functionality is implemented
+ */
+function any(A) {//{{{
+    for (let i = 0; i < A.length; ++i) {
+        if (A[i] !== 0) {
+            return true;
+        }
+    }
+    return false;
+} //}}}
+
+/**
+ * FUNCTION diff - Differences and approximate derivatives
+ *
+ * Replicates behavior of MATLAB's 'diff' function.
+ * 
+ * Y = diff(X) calculates differences between adjacent elements of X.
+ *
+ * Usage:
+ *     Y = diff(X);
+ *
+ * Sources:
+ * - https://www.mathworks.com/help/matlab/ref/diff.html
+ *
+ * NOTE:
+ * - Not all functionality is implemented
+ */
+function diff(X) {//{{{
+    let diffs = [];
+    for (let i = 0; i < (X.length - 1); ++i) {
+        diffs[i] = X[i + 1] - X[i];
+    }
+    return diffs;
+} //}}}
+
+/**
+ * FUNCTION disp - Display value of variable
+ *
+ * Replicates behavior of MATLAB's 'disp' function.
+ *
+ * Output is logged to console.
+ *
+ * Usage:
+ *     disp(X);
+ *
+ * Sources:
+ * - https://www.mathworks.com/help/matlab/ref/disp.html
+ */
+function disp(X) {//{{{
+    console.log(X);
+} //}}}
+
+/**
+ * FUNCTION error - Throw error and display message
+ *
+ * Replicates behavior of MATLAB's 'error' function
+ *
+ * Usage:
+ *     error(msg);
+ *
+ * Sources:
+ * - https://www.mathworks.com/help/matlab/ref/error.html
+ *
+ * NOTE:
+ * - Only basic functionality is implemented
+ */
+function error(msg) {//{{{
+    throw new Error(msg);
+} //}}}
+
+/**
+ * FUNCTION find - Find indices and values of nonzero elements
+ *
+ * Replicates behavior of MATLAB's 'find' function
+ *
+ * Sources:
+ * - https://www.mathworks.com/help/matlab/ref/find.html
+ *
+ * TODO:
+ * - Implement support for multidimensional arrays
+ * - Implement 'n' parameter
+ * - Implement 'direction' parameter
+ */
+function find(X, n, direction) {//{{{
+    if (typeof(X[0]) == 'number') {
+        let indices = [];
+        for (let i = 0; i < X.length; ++i) {
+            if (X[i] != 0) {
+                indices.push(i);
+            }
+        }
+        return indices;
+    } else { //TODO: If 2d array, assume return rows & cols - try to find a way to not always return rows/cols
+        let rowindices = [];
+        let colindices = [];
+        for (let i = 0; i < X.length; ++i) {
+            for (let j = 0; j < X[i].length; ++j) {
+                if (X[i][j] != 0) {
+                    rowindices.push(i);
+                    colindices.push(j);
+                }
+            }
+        }
+        return [rowindices, colindices];
+    }
+} //}}}
+
+/**
+ * FUNCTION isempty - Determine whether array is empty
+ *
+ * Replicates behavior of MATLAB's 'isempty' function
+ *
+ * Sources:
+ * - https://www.mathworks.com/help/matlab/ref/isempty.html
+ *
+ * TODO:
+ * - Implement support for multidimensional arrays
+ */
+function isempty(A) {//{{{
+    //NOTE: Expanded for clarity/debugging. Can reduce later.
+    if (A === undefined) {
+        return 1; //TODO: Fix this: for now, treat undefined as empty
+    } else {
+        return A.length == 0;
+    }
+} //}}}
+
+/**
+ * FUNCTION ismember - Array elements that are members of set array
+ *
+ * Replicates basic behavior of MATLAB's 'ismember' function with an important 
+ * modification: because of the way we use ismember under MATLAB (to determine 
+ * if *any* element of A is in B) and because the truthiness of an empty array 
+ * in JavaScript is true, we return 0 if the A is not in B.
+ *
+ * Sources:
+ * - https://www.mathworks.com/help/matlab/ref/double.ismember.html
+ *
+ * TODO:
+ * - Implement support for multidimensional arrays
+ */
+function ismember(A, B) {//{{{
+    let b = B;
+    if (typeof(B) == 'number' || typeof(B) == 'string') {
+        b = [B];
+    }
+    let indices = zeros(A.length);
+    for (let i = 0; i < A.length; ++i) {
+        for (let j = 0; j < b.length; ++j) {
+            if (A[i] === b[j]) {
+                indices[i] = 1;
+            }
+        }
+    }
+    if (indices.length) {
+        return indices;
+    } else {
+        return 0;
+    }
+} //}}}
+
+/**
+ * FUNCTION isnan - Determine which array elements are NaN
+ *
+ * Replicates behavior of MATLAB's 'isnan' function
+ *
+ * Usage:
+ *     TF = isnan(A)
+ *
+ * Sources:
+ * - https://www.mathworks.com/help/matlab/ref/isnan.html
+ * - https://medium.com/coding-in-simple-english/how-to-check-for-nan-in-javascript-4294e555b447
+ * 
+ * NOTE:
+ * - Not to be confused with JavaScript built-in function isNaN
+ * - Not to be confused with function Number.isNaN
+ */
+function isnan(A) {//{{{
+    if (A.constructor !== Array) {
+        error('isnan: argument must be an array')
+    }
+    is_nan = [];
+    for (let i = 0; i < A.length; ++i) {
+        if (Number.isNaN(A[i])) {
+            is_nan.push(1);
+        } else {
+            is_nan.push(0);
+        }
+    }
+    return is_nan;
+} //}}}/*
+
+/**
+ * FUNCTION length - Length of largest array dimension
+ *
+ * Replicates behavior of MATLAB's 'length' function
+ *
+ * Usage:
+ *     L = length(X)
+ *
+ * Sources:
+ * - https://www.mathworks.com/help/matlab/ref/length.html
+ *
+ * TODO:
+ * - Implement support for multidimensional arrays
+ */
+function length(A) {//{{{
+    return A.length;
+} //}}}/*
+
+/**
+ * FUNCTION max - Maximum elements of an array
+ *
+ * Replicates behavior of MATLAB's 'max' function
+ *
+ * Usage:
+ *     M = max(A)
+ *
+ * Sources:
+ * - https://www.mathworks.com/help/matlab/ref/max.html
+ *
+ * TODO:
+ * - Implement support for multidimensional arrays
+ * - Implement 'nanflag' parameter
+ */
+function max(A) {//{{{
+    return Math.max.apply(null, A);
+} //}}}/*
+
+/**
+ * FUNCTION min - Minimum elements of an array
+ *
+ * Replicates behavior of MATLAB's 'min' function
+ *
+ * Usage:
+ *     M = min(A)
+ *
+ * Sources:
+ * - https://www.mathworks.com/help/matlab/ref/min.html
+ *
+ * TODO:
+ * - Implement support for multidimensional arrays
+ * - Implement 'nanflag' parameter
+ */
+function min(A) {//{{{
+    return Math.min.apply(null, A);
+} //}}}/*
+
+/**
+ * FUNCTION ones - Create array of all ones
+ *
+ * Replicates behavior of MATLAB's 'zeros' function
+ * 
+ * Usage:
+ *     X = ones
+ *     X = ones(n)
+ *     X = ones(sz1,...,szN)
+ *     X = ones(sz)
+ *
+ * Sources:
+ * - https://www.mathworks.com/help/matlab/ref/ones.html
+ *
+ * TODO:
+ * - Create lower-level function to handle both ones and zeros functions as 
+ * they are essentially the same
+ * - Implement functionality for more than 2 dimensions
+ */
+function ones() {//{{{
+    nargs = arguments.length;
+    if (nargs == 0) {
+        return 1;
+    } else if (nargs == 1) {
+        let arg = arguments[0];
+        if (typeof(arg) == 'number') {
+            return NewArrayFill(arg, 1);
+        } else if (arg.constructor == Array) {
+            return ones(...arg); // spread array of sizes
+        } else {
+            error('ones: functionality for greater than 2 dimensions is not currently implemented')
+        }
+    } else if (nargs == 2) {
+        return NewArrayFill2D(arguments[0], arguments[1], 1);
+    } else {
+        error('ones: functionality for greater than 2 dimensions is not currently implemented')
+    }
+} //}}}
+
+/**
+ * FUNCTION size - Array size
+ *
+ * Replicates behavior of MATLAB's 'size' function
+ * 
+ * Usage:
+ *     sz = size(A);
+ *     szdim = size(A, dim);
+ *
+ * Sources:
+ * - https://www.mathworks.com/help/matlab/ref/size.html
+ * 
+ * NOTE:
+ * - Not all functionality is implemented
+ * - In a 2D array, if length of all columns are not equal, unexpected behavior 
+ * may result from subsequent processing based on the values returned from this 
+ * function.
+ */
+function size(A, dim) {//{{{
+    let nargs = arguments.length;
+    if (nargs == 0) {
+        error('size: at least one argument is required');
+    } else if (nargs == 1) {
+        if (typeof(A) == 'number') { // scalar numbers are of size [1, 1]
+            return [1, 1];
+        } else if (A.constructor != Array) {
+            error('size: A argument must be a number or an Array');
+        }
+        if (typeof(A) == 'undefined' || isNaN(A)) {
+            return [0];
+        } else if (A.length && A[0].constructor == Array) {
+            return [A.length, A[0].length];
+        } else {
+            return [A.length];
+        }
+    } else if (nargs == 2) {
+        if (typeof(dim) != 'number' || dim < 0 || dim > 1) {
+            error('size: dim argument must be a number between 0 and 1, inclusive');
+        }
+        if (dim == 0) {
+            if (typeof(A) == 'number') { // scalar numbers are of size [1, 1]
+                return 1;
+            } else {
+                return A.length;
+            }
+        } else {
+            if (typeof(A) == 'number') { // scalar numbers are of size [1, 1]
+                return 1;
+            } else if (typeof(A) == 'undefined' || isNaN(A)) {
+                return 0;
+            } else if (A[0].constructor != Array) {
+                error('size: A[0] is not an Array');
+            }
+            return A[0].length;
+        }
+    } else {
+        error('size: functionality for more than 2 arguments is not currently implemented');
+    }
+} //}}}
+
+/**
+ * FUNCTION strcmpi - Compare strings (case insensitive)
+ *
+ * Replicates behavior of MATLAB's 'strcmpi' function
+ *
+ * Sources:
+ * - https://www.mathworks.com/help/matlab/ref/strcmpi.html
+ */
+function strcmpi(s1, s2) {//{{{
+    return s1.toLowerCase() == s2.toLowerCase();
+} //}}}
+
+/**
+ * FUNCTION sum - Sum of elements of an array
+ *
+ * Replicates behavior of MATLAB's 'sum' function
+ *
+ * Usage:
+ *     S = sum(A)
+ *
+ * Sources:
+ * - https://www.mathworks.com/help/matlab/ref/sum.html
+ *
+ * TODO:
+ * - Implement support for multidimensional arrays
+ * - Implement 'nanflag' parameter
+ */
+function sum(A) {//{{{
+    return ArraySum(A);
+} //}}}
+
+/**
+ * FUNCTION zeros - Create array of all zeros
+ *
+ * Replicates behavior of MATLAB's 'zeros' function
+ * 
+ * Usage:
+ *     X = zeros
+ *     X = zeros(n)
+ *     X = zeros(sz1,...,szN)
+ *     X = zeros(sz)
+ *
+ * Sources:
+ * - https://www.mathworks.com/help/matlab/ref/zeros.html
+ *
+ * TODO:
+ * - Create lower-level function to handle both ones and zeros functions as 
+ * they are essentially the same
+ * - Implement functionality for more than 2 dimensions
+ */
+function zeros() {//{{{
+    nargs = arguments.length;
+    if (nargs == 0) {
+        return 0;
+    } else if (nargs == 1) {
+        let arg = arguments[0];
+        if (typeof(arg) == 'number') {
+            return NewArrayFill(arg, 0);
+        } else if (arg.constructor == Array) {
+            return zeros(...arg); // spread array of sizes
+        } else {
+            error('zeros: functionality for greater than 2 dimensions is not currently implemented')
+        }
+    } else if (nargs == 2) {
+        return NewArrayFill2D(arguments[0], arguments[1], 0);
+    } else {
+        error('zeros: functionality for greater than 2 dimensions is not currently implemented')
+    }
+} //}}}
+
+/**
+ * FUNCTIONS sin, cos, tan, asin, acos, atan2 - trig functions that work with radians
+ *
+ * Replicates behavior of MATLAB's trig functions
+ *
+ * Sources:
+ * - https://www.mathworks.com/help/matlab/trigonometry.html
+ *
+ */
+function sin(X) {//{{{
+    let result = NewArrayFill(size, X.length);
+    for (let i = 0; i < X.length; ++i) {
+        result[i] = Math.sin(X[i]);
+    }
+    return result;
+} //}}}
+
+function cos(X) {//{{{
+    let result = NewArrayFill(size, X.length);
+    for (let i = 0; i < X.length; ++i) {
+        result[i] = Math.cos(X[i]);
+    }
+    return result;
+} //}}}
+
+function tan(X) {//{{{
+    let result = NewArrayFill(size, X.length);
+    for (let i = 0; i < X.length; ++i) {
+        result[i] = Math.tan(X[i]);
+    }
+    return result;
+} //}}}
+
+function asin(X) {//{{{
+    let result = NewArrayFill(size, X.length);
+    for (let i = 0; i < X.length; ++i) {
+        result[i] = Math.asin(X[i]);
+    }
+    return result;
+} //}}}
+
+function acos(X) {//{{{
+    let result = NewArrayFill(size, X.length);
+    for (let i = 0; i < X.length; ++i) {
+        result[i] = Math.acos(X[i]);
+    }
+    return result;
+} //}}}
+
+// TODO: Test that the arguments do not need to be reversed, as they are in MATLAB and Python
+function atan2(X, Y) {//{{{
+    let result = NewArrayFill(size, X.length);
+    for (let i = 0; i < X.length; ++i) {
+        result[i] = Math.atan2(X[i], Y[i]);
+    }
+    return result;
+} //}}}
+
+/**
+ * FUNCTIONS sind, cosd, tand, asind, acosd, atan2d - trig functions that work with degrees
+ *
+ * Replicates behavior of MATLAB's trig functions
+ *
+ * Sources:
+ * - https://www.mathworks.com/help/matlab/trigonometry.html
+ *
+ */
+function sind(X) {//{{{
+    let result = NewArrayFill(size, X.length);
+    for (let i = 0; i < X.length; ++i) {
+        result[i] = Math.sin(X[i] * DEG2RAD);
+    }
+    return result;
+} //}}}
+
+function cosd(X) {//{{{
+    let result = NewArrayFill(size, X.length);
+    for (let i = 0; i < X.length; ++i) {
+        result[i] = Math.cos(X[i] * DEG2RAD);
+    }
+    return result;
+} //}}}
+
+function tand(X) {//{{{
+    let result = NewArrayFill(size, X.length);
+    for (let i = 0; i < X.length; ++i) {
+        result[i] = Math.tan(X[i] * DEG2RAD);
+    }
+    return result;
+} //}}}
+
+function asind(X) {//{{{
+    let result = NewArrayFill(size, X.length);
+    for (let i = 0; i < X.length; ++i) {
+        result[i] = RAD2DEG * Math.asin(X[i]);
+    }
+    return result;
+} //}}}
+
+function acosd(X) {//{{{
+    let result = NewArrayFill(size, X.length);
+    for (let i = 0; i < X.length; ++i) {
+        result[i] = RAD2DEG * Math.acos(X[i]);
+    }
+    return result;
+} //}}}
+
+// TODO: Test that the arguments do not need to be reversed, as they are in MATLAB and Python
+function atan2d(X, Y) {//{{{
+    let result = NewArrayFill(size, X.length);
+    for (let i = 0; i < X.length; ++i) {
+        result[i] = RAD2DEG * Math.atan2(X[i], Y[i]);
+    }
+    return result;
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/MatlabFuncs.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/MatlabFuncs.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/MatlabFuncs.py	(revision 27955)
@@ -0,0 +1,381 @@
+"""A collection of functions that replicate the behavior of MATLAB built-in
+functions of the same, respective name.
+
+Where possible, users are encouraged to use native and/or the most efficient
+methods in Python, but we provide these functions as a way to make translations
+from the MATLAB to the Python ISSM API more seamless.
+"""
+
+def acosd(X):  # {{{
+    """function acosd - Inverse cosine in degrees
+
+    Usage:
+        Y = acosd(X)
+    """
+    import numpy as np
+
+    return np.degrees(np.arccos(X))
+# }}}
+
+def asind(X):  # {{{
+    """function asind - Inverse sine in degrees
+
+    Usage:
+        Y = asind(X)
+    """
+    import numpy as np
+
+    return np.degrees(np.arcsin(X))
+# }}}
+
+def atand(X):  # {{{
+    """function atand - Inverse tangent in degrees
+
+    Usage:
+        Y = atand(X)
+    """
+    import numpy as np
+
+    return np.degrees(np.arctan(X))
+# }}}
+
+
+def atan2d(Y, X):  # {{{
+    """function atan2d - Four-quadrant inverse tangent in degrees
+
+    Usage:
+        D = atan2d(Y, X)
+    """
+    import numpy as np
+
+    return np.degrees(np.arctan2(Y, X))
+# }}}
+
+def contains(str, pat):  #{{{
+    """function contains - Determine if pattern is in strings
+
+    Usage:
+        TF = contains(str, pat)
+
+    TODO:
+    - Implement 'IgnoreCase' option
+    """
+
+# }}}
+
+def cosd(X):  # {{{
+    """function cosd - Cosine of argument in degrees
+
+    Usage:
+        Y = cosd(X)
+    """
+    import numpy as np
+
+    if type(X) == np.ndarray:
+        Y = np.array([])
+        for x in X:
+            Y = np.append(Y, cosdsingle(x))
+        return Y
+    else:
+        return cosdsingle(X)
+# }}}
+
+def cosdsingle(x):  # {{{
+    """function cosdsingle - Helper function for cosd to reduce repetition of
+    logic
+
+    Usage:
+        y = cosdsingle(x)
+    """
+    import numpy as np
+
+    while x >= 360:
+        x = x - 360
+
+    if x == 0:
+        return 1
+    elif x == 90 or x == 270:
+        return 0
+    elif x == 180:
+        return -1
+    else:
+        return np.cos(np.radians(x))
+# }}}
+
+def det(a):  # {{{
+    if a.shape == (1, ):
+        return a[0]
+    elif a.shape == (1, 1):
+        return a[0, 0]
+    elif a.shape == (2, 2):
+        return a[0, 0] * a[1, 1] - a[0, 1] * a[1, 0]
+    else:
+        raise TypeError('MatlabFunc.det only implemented for shape (2, 2), not for shape {}.'.format(a.shape))
+# }}}
+
+def error(msg):  # {{{
+    raise Exception(msg)
+# }}}
+
+def etime(t2, t1):  # {{{
+    return t2 - t1
+# }}}
+
+def find(*args):  # {{{
+    nargs = len(args)
+    if nargs >= 1 or nargs <= 2:
+        X = args[0]
+        n = len(args[0])
+        if nargs == 2:
+            n = args[1]
+        indices=[]
+        for i in range(n):
+            if X[i] != 0:
+                indices.push(i)
+        return indices
+    else:
+        raise Exception('find: must have 1 or 2 arguments')
+# }}}
+
+def floor(X):  # {{{
+    import math
+
+    return int(math.floor(X))
+# }}}
+
+def heaviside(x):  # {{{
+    import numpy as np
+
+    y = np.zeros_like(x)
+    y[np.nonzero(x > 0.)] = 1.
+    y[np.nonzero(x == 0.)] = 0.5
+
+    return y
+# }}}
+
+def intersect(A, B):  # {{{
+    """function intersect - Set intersection of two arrays
+
+    Usage:
+        C = intersect(A, B)
+
+    NOTE:
+    - Only the following functionality is currently implemented:
+        - C = intersect(A,B) returns the data common to both A and B, with no
+        repetitions. C is in sorted order.
+
+    """
+    import numpy as np
+
+    return np.intersect1d(A, B)
+# }}}
+
+def isa(A, dataType):  # {{{
+    """function isa
+
+    NOTE:
+    - Takes a type as its second argument (in contrast to the MATLAB function
+    that it replicates, which takes a string representing the name of a type)
+    """
+    return type(A) == dataType
+# }}}
+
+# NOTE: Conflicts with definition of isempty in $ISSM_DIR/src/m/qmu/helpers.py
+#
+# def isempty(A):  # {{{
+#     return len(A) > 0
+# # }}}
+
+def isfile(fileName):  # {{{
+    import os
+
+    return os.path.exists(fileName)
+# }}}
+
+def ismac():  # {{{
+    import platform
+
+    if 'Darwin' in platform.system():
+        return True
+    else:
+        return False
+# }}}
+
+def ismember(a, s):  # {{{
+    import numpy as np
+    if not isinstance(s, (tuple, list, dict, np.ndarray)):
+        s = [s]
+
+    if not isinstance(a, (tuple, list, dict, np.ndarray)):
+        a = [a]
+
+    if not isinstance(a, np.ndarray):
+        b = [item in s for item in a]
+    else:
+        if not isinstance(s, np.ndarray):
+            b = np.empty_like(a).flat
+            for i, item in enumerate(a.flat):
+                b[i] = item in s
+        else:
+            b = np.in1d(a.flat, s.flat).reshape(a.shape)
+    return b
+# }}}
+
+def isnan(A):  # {{{
+    import numpy as np
+
+    return np.isnan(A)
+# }}}
+
+def ispc():  # {{{
+    import platform
+
+    if 'Windows' in platform.system():
+        return True
+    else:
+        return False
+# }}}
+
+def isprop(obj, PropertyName):  # {{{
+    return hasattr(obj, PropertyName)
+# }}}
+
+def mod(a, m):  # {{{
+    return a % m
+# }}}
+
+def numel(A):  # {{{
+    """function numel - Number of array elements
+
+    Usage:
+        n = numel(A))
+    """
+    import numpy as np
+
+    return np.size(A)
+# }}}
+
+def pause(n):  # {{{
+    import time
+
+    time.sleep(n)
+# }}}
+
+def pwd():  # {{{
+    import os
+
+    return os.getcwd()
+# }}}
+
+def oshostname():  # {{{
+    import socket
+    hostname = socket.gethostname()
+
+    return hostname.lower()
+# }}}
+
+def rem(a, b):  # {{{
+    return a % b
+# }}}
+
+def sind(X):  # {{{
+    """function sind - Sine of argument in degrees
+
+    Usage:
+        Y = sind(X)
+    """
+    import numpy as np
+
+    if type(X) == np.ndarray:
+        Y = np.array([])
+        for x in X:
+            Y = np.append(Y, sindsingle(x))
+        return Y
+    else:
+        return sindsingle(X)
+# }}}
+
+def sindsingle(x):  # {{{
+    """function sindsingle - Helper function for sind to reduce repetition of
+    logic
+
+    Usage:
+        y = sindsingle(x)
+    """
+    import numpy as np
+
+    while x >= 360:
+        x = x - 360
+
+    if x == 0 or x == 180:
+        return 0
+    elif x == 90:
+        return 1
+    elif x == 270:
+        return -1
+    else:
+        return np.sin(np.radians(x))
+# }}}
+
+def sparse(ivec, jvec, svec, m=0, n=0, nzmax=0):  # {{{
+    import numpy as np
+
+    if not m:
+        m = np.max(ivec)
+    if not n:
+        n = np.max(jvec)
+
+    a = np.zeros((m, n))
+
+    for i, j, s in zip(ivec.reshape(-1, order='F'), jvec.reshape(-1, order='F'), svec.reshape(-1, order='F')):
+        a[i - 1, j - 1] += s
+
+    return a
+# }}}
+
+def strcmp(s1, s2):  # {{{
+    if s1 == s2:
+        return True
+    else:
+        return False
+# }}}
+
+def strcmpi(s1, s2):  # {{{
+    if s1.lower() == s2.lower():
+        return True
+    else:
+        return False
+# }}}
+
+def strjoin(*args):  # {{{
+    nargs = len(args)
+    if nargs >= 1 or nargs <= 2:
+        sep = ' '
+        if nargs == 2:
+            sep = args[1]
+        return sep.join(args[0])
+    else:
+        raise Exception('strjoin: must have 1 or 2 arguments')
+# }}}
+
+def strncmp(s1, s2, n):  # {{{
+    if s1[0:n] == s2[0:n]:
+        return True
+    else:
+        return False
+# }}}
+
+def strncmpi(s1, s2, n):  # {{{
+    if s1.lower()[0:n] == s2.lower()[0:n]:
+        return True
+    else:
+        return False
+# }}}
+
+def tempname():  # {{{
+    import random
+    import string
+
+    alphanumlist = string.ascii_lowercase + string.digits
+    return '/tmp/tp' + ''.join(random.choices(alphanumlist, k=8)) + '_' + ''.join(random.choices(alphanumlist, k=4)) + '_' + ''.join(random.choices(alphanumlist, k=4)) + '_' + ''.join(random.choices(alphanumlist, k=4)) + '_' + ''.join(random.choices(alphanumlist, k=12))
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/PythonFuncs.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/PythonFuncs.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/PythonFuncs.py	(revision 27955)
@@ -0,0 +1,22 @@
+import numpy as np
+
+
+def logical_and_n(*arg):  # {{{
+    if len(arg):
+        result = arg[0]
+        for item in arg[1:]:
+            result = np.logical_and(result, item)
+        return result
+    else:
+        return None
+# }}}
+
+def logical_or_n(*arg):  # {{{
+    if len(arg):
+        result = arg[0]
+        for item in arg[1:]:
+            result = np.logical_or(result, item)
+        return result
+    else:
+        return None
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/alignsegments.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/alignsegments.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/alignsegments.m	(revision 27955)
@@ -0,0 +1,19 @@
+function newsegments=alignsegments(segments)
+%ALIGNSEGMENTS: 
+% 
+%
+
+	nt=length(segments);
+	newsegments=zeros(nt,3);
+	newsegments(1,:)=segments(1,:);
+
+	for  i=2:nt, 
+		last=newsegments(i-1,2); %last vertex of the previous segment: 
+		for j=1:nt,
+			if last==segments(j,1),
+				%we found the next segment: 
+				newsegments(i,:)=segments(j,:);
+				break;
+			end
+		end
+	end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/colinearity.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/colinearity.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/colinearity.m	(revision 27955)
@@ -0,0 +1,32 @@
+function theta = colinearity(md)
+
+%load some variables (it is much faster if the variab;es are loaded from md once for all) 
+if ~strcmpi(meshtype(md.mesh),'3D'),
+	numberofelements=md.mesh.numberofelements;
+	numberofnodes=md.mesh.numberofvertices;
+	index=md.mesh.elements;
+	x=md.mesh.x; y=md.mesh.y;
+else
+	numberofelements=md.mesh.numberofelements2d;
+	numberofnodes=md.mesh.numberofvertices2d;
+	index=md.mesh.elements2d;
+	x=md.mesh.x2d; y=md.mesh.y2d;
+end
+
+%compute nodal functions coefficients N(x,y)=alpha x + beta y + gamma
+[alpha beta]=GetNodalFunctionsCoeff(index,x,y);
+
+s = averaging(md,md.geometry.surface,2);
+
+summation=[1;1;1];
+dsdx=(s(index).*alpha)*summation;
+dsdy=(s(index).*beta)*summation;
+dsdx = -averaging(md,dsdx,0);
+dsdy = -averaging(md,dsdy,0);
+
+vx = md.inversion.vx_obs;
+vy = md.inversion.vy_obs;
+v  = md.inversion.vel_obs;
+v2 = sqrt(dsdx.^2 + dsdy.^2);
+
+theta = acos((vx.*dsdx + vy.*dsdy)./(v.*v2+eps));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/colorbars.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/colorbars.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/colorbars.js	(revision 27955)
@@ -0,0 +1,322 @@
+var colorbars={};
+colorbars["jet"]=[[0.000000,0.000000,0.750000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.250000,1.000000],
+[0.000000,0.500000,1.000000],
+[0.000000,0.750000,1.000000],
+[0.000000,1.000000,1.000000],
+[0.250000,1.000000,0.750000],
+[0.500000,1.000000,0.500000],
+[0.750000,1.000000,0.250000],
+[1.000000,1.000000,0.000000],
+[1.000000,0.750000,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,0.250000,0.000000],
+[1.000000,0.000000,0.000000],
+[0.750000,0.000000,0.000000],
+[0.500000,0.000000,0.000000]];
+colorbars["hsv"]=[[1.000000,0.000000,0.000000],
+[1.000000,0.375000,0.000000],
+[1.000000,0.750000,0.000000],
+[0.875000,1.000000,0.000000],
+[0.500000,1.000000,0.000000],
+[0.125000,1.000000,0.000000],
+[0.000000,1.000000,0.250000],
+[0.000000,1.000000,0.625000],
+[0.000000,1.000000,1.000000],
+[0.000000,0.625000,1.000000],
+[0.000000,0.250000,1.000000],
+[0.125000,0.000000,1.000000],
+[0.500000,0.000000,1.000000],
+[0.875000,0.000000,1.000000],
+[1.000000,0.000000,0.750000],
+[1.000000,0.000000,0.375000]];
+colorbars["hot"]=[[0.166667,0.000000,0.000000],
+[0.333333,0.000000,0.000000],
+[0.500000,0.000000,0.000000],
+[0.666667,0.000000,0.000000],
+[0.833333,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,0.166667,0.000000],
+[1.000000,0.333333,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,0.666667,0.000000],
+[1.000000,0.833333,0.000000],
+[1.000000,1.000000,0.000000],
+[1.000000,1.000000,0.250000],
+[1.000000,1.000000,0.500000],
+[1.000000,1.000000,0.750000],
+[1.000000,1.000000,1.000000]];
+colorbars["gray"]=[[0.200000,0.200000,0.200000],
+[0.253333,0.253333,0.253333],
+[0.306667,0.306667,0.306667],
+[0.360000,0.360000,0.360000],
+[0.413333,0.413333,0.413333],
+[0.466667,0.466667,0.466667],
+[0.520000,0.520000,0.520000],
+[0.573333,0.573333,0.573333],
+[0.626667,0.626667,0.626667],
+[0.680000,0.680000,0.680000],
+[0.733333,0.733333,0.733333],
+[0.786667,0.786667,0.786667],
+[0.840000,0.840000,0.840000],
+[0.893333,0.893333,0.893333],
+[0.946667,0.946667,0.946667],
+[1.000000,1.000000,1.000000]];
+colorbars["bone"]=[[0.000000,0.000000,0.020833],
+[0.058333,0.058333,0.100000],
+[0.116667,0.116667,0.179167],
+[0.175000,0.175000,0.258333],
+[0.233333,0.233333,0.337500],
+[0.291667,0.291667,0.416667],
+[0.350000,0.370833,0.475000],
+[0.408333,0.450000,0.533333],
+[0.466667,0.529167,0.591667],
+[0.525000,0.608333,0.650000],
+[0.583333,0.687500,0.708333],
+[0.641667,0.766667,0.766667],
+[0.731250,0.825000,0.825000],
+[0.820833,0.883333,0.883333],
+[0.910417,0.941667,0.941667],
+[1.000000,1.000000,1.000000]];
+colorbars["copper"]=[[0.000000,0.000000,0.000000],
+[0.083333,0.052080,0.033167],
+[0.166667,0.104160,0.066333],
+[0.250000,0.156240,0.099500],
+[0.333333,0.208320,0.132667],
+[0.416667,0.260400,0.165833],
+[0.500000,0.312480,0.199000],
+[0.583333,0.364560,0.232167],
+[0.666667,0.416640,0.265333],
+[0.750000,0.468720,0.298500],
+[0.833333,0.520800,0.331667],
+[0.916667,0.572880,0.364833],
+[1.000000,0.624960,0.398000],
+[1.000000,0.677040,0.431167],
+[1.000000,0.729120,0.464333],
+[1.000000,0.781200,0.497500]];
+colorbars["pink"]=[[0.235702,0.000000,0.000000],
+[0.394405,0.210819,0.210819],
+[0.505525,0.298142,0.298142],
+[0.596285,0.365148,0.365148],
+[0.674949,0.421637,0.421637],
+[0.745356,0.471405,0.471405],
+[0.774597,0.567646,0.516398],
+[0.802773,0.649786,0.557773],
+[0.829993,0.722649,0.596285],
+[0.856349,0.788811,0.632456],
+[0.881917,0.849837,0.666667],
+[0.906765,0.906765,0.699206],
+[0.930949,0.930949,0.785281],
+[0.954521,0.954521,0.862812],
+[0.977525,0.977525,0.933928],
+[1.000000,1.000000,1.000000]];
+colorbars["white"]=[[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000]];
+colorbars["flag"]=[[1.000000,0.000000,0.000000],
+[1.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000]];
+colorbars["lines"]=[[0.000000,0.000000,1.000000],
+[0.000000,0.500000,0.000000],
+[1.000000,0.000000,0.000000],
+[0.000000,0.750000,0.750000],
+[0.750000,0.000000,0.750000],
+[0.750000,0.750000,0.000000],
+[0.250000,0.250000,0.250000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.500000,0.000000],
+[1.000000,0.000000,0.000000],
+[0.000000,0.750000,0.750000],
+[0.750000,0.000000,0.750000],
+[0.750000,0.750000,0.000000],
+[0.250000,0.250000,0.250000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.500000,0.000000]];
+colorbars["colorcube"]=[[1.000000,1.000000,0.000000],
+[0.000000,1.000000,1.000000],
+[1.000000,0.000000,1.000000],
+[0.333333,0.000000,0.000000],
+[0.666667,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[0.000000,0.333333,0.000000],
+[0.000000,0.666667,0.000000],
+[0.000000,1.000000,0.000000],
+[0.000000,0.000000,0.333333],
+[0.000000,0.000000,0.666667],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[0.333333,0.333333,0.333333],
+[0.666667,0.666667,0.666667],
+[1.000000,1.000000,1.000000]];
+colorbars["vga"]=[[1.000000,1.000000,1.000000],
+[0.750000,0.750000,0.750000],
+[1.000000,0.000000,0.000000],
+[1.000000,1.000000,0.000000],
+[0.000000,1.000000,0.000000],
+[0.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[1.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[0.500000,0.500000,0.500000],
+[0.500000,0.000000,0.000000],
+[0.500000,0.500000,0.000000],
+[0.000000,0.500000,0.000000],
+[0.000000,0.500000,0.500000],
+[0.000000,0.000000,0.500000],
+[0.500000,0.000000,0.500000]];
+colorbars["prism"]=[[1.000000,0.000000,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,1.000000,0.000000],
+[0.000000,1.000000,0.000000],
+[0.000000,0.000000,1.000000],
+[0.666667,0.000000,1.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,1.000000,0.000000],
+[0.000000,1.000000,0.000000],
+[0.000000,0.000000,1.000000],
+[0.666667,0.000000,1.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,1.000000,0.000000],
+[0.000000,1.000000,0.000000]];
+colorbars["cool"]=[[0.000000,1.000000,1.000000],
+[0.066667,0.933333,1.000000],
+[0.133333,0.866667,1.000000],
+[0.200000,0.800000,1.000000],
+[0.266667,0.733333,1.000000],
+[0.333333,0.666667,1.000000],
+[0.400000,0.600000,1.000000],
+[0.466667,0.533333,1.000000],
+[0.533333,0.466667,1.000000],
+[0.600000,0.400000,1.000000],
+[0.666667,0.333333,1.000000],
+[0.733333,0.266667,1.000000],
+[0.800000,0.200000,1.000000],
+[0.866667,0.133333,1.000000],
+[0.933333,0.066667,1.000000],
+[1.000000,0.000000,1.000000]];
+colorbars["autumn"]=[[1.000000,0.000000,0.000000],
+[1.000000,0.066667,0.000000],
+[1.000000,0.133333,0.000000],
+[1.000000,0.200000,0.000000],
+[1.000000,0.266667,0.000000],
+[1.000000,0.333333,0.000000],
+[1.000000,0.400000,0.000000],
+[1.000000,0.466667,0.000000],
+[1.000000,0.533333,0.000000],
+[1.000000,0.600000,0.000000],
+[1.000000,0.666667,0.000000],
+[1.000000,0.733333,0.000000],
+[1.000000,0.800000,0.000000],
+[1.000000,0.866667,0.000000],
+[1.000000,0.933333,0.000000],
+[1.000000,1.000000,0.000000]];
+colorbars["spring"]=[[1.000000,0.000000,1.000000],
+[1.000000,0.066667,0.933333],
+[1.000000,0.133333,0.866667],
+[1.000000,0.200000,0.800000],
+[1.000000,0.266667,0.733333],
+[1.000000,0.333333,0.666667],
+[1.000000,0.400000,0.600000],
+[1.000000,0.466667,0.533333],
+[1.000000,0.533333,0.466667],
+[1.000000,0.600000,0.400000],
+[1.000000,0.666667,0.333333],
+[1.000000,0.733333,0.266667],
+[1.000000,0.800000,0.200000],
+[1.000000,0.866667,0.133333],
+[1.000000,0.933333,0.066667],
+[1.000000,1.000000,0.000000]];
+colorbars["winter"]=[[0.000000,0.000000,1.000000],
+[0.000000,0.066667,0.966667],
+[0.000000,0.133333,0.933333],
+[0.000000,0.200000,0.900000],
+[0.000000,0.266667,0.866667],
+[0.000000,0.333333,0.833333],
+[0.000000,0.400000,0.800000],
+[0.000000,0.466667,0.766667],
+[0.000000,0.533333,0.733333],
+[0.000000,0.600000,0.700000],
+[0.000000,0.666667,0.666667],
+[0.000000,0.733333,0.633333],
+[0.000000,0.800000,0.600000],
+[0.000000,0.866667,0.566667],
+[0.000000,0.933333,0.533333],
+[0.000000,1.000000,0.500000]];
+colorbars["summer"]=[[0.000000,0.500000,0.400000],
+[0.066667,0.533333,0.400000],
+[0.133333,0.566667,0.400000],
+[0.200000,0.600000,0.400000],
+[0.266667,0.633333,0.400000],
+[0.333333,0.666667,0.400000],
+[0.400000,0.700000,0.400000],
+[0.466667,0.733333,0.400000],
+[0.533333,0.766667,0.400000],
+[0.600000,0.800000,0.400000],
+[0.666667,0.833333,0.400000],
+[0.733333,0.866667,0.400000],
+[0.800000,0.900000,0.400000],
+[0.866667,0.933333,0.400000],
+[0.933333,0.966667,0.400000],
+[1.000000,1.000000,0.400000]];
+colorbars["land"]=[[0.000000,0.000000,0.500000],
+[0.160000,0.266700,0.766700],
+[0.326700,0.513400,1.000000],
+[0.540500,0.620200,1.000000],
+[0.521000,0.934200,0.521000],
+[0.200400,0.667000,0.200400],
+[0.120000,0.540000,0.040000],
+[0.440000,0.646700,0.146700],
+[0.573300,0.660000,0.186700],
+[0.520000,0.580000,0.160000],
+[0.466700,0.500000,0.133300],
+[0.413300,0.420000,0.106700],
+[0.360000,0.340000,0.080000],
+[0.306700,0.260000,0.053300],
+[0.253300,0.180000,0.026700],
+[0.200000,0.100000,0.000000]];
+colorbars["sea"]=[[0.000000,0.000000,0.2000],
+[0.000000,0.000000,0.2930],
+[0.000000,0.000000,0.3859],
+[0.000000,0.000000,0.4789],
+[0.000000,0.000000,0.5718],
+[0.000000,0.000000,0.6648],
+[0.000000,0.000000,0.7577],
+[0.000000,0.000000,0.8507],
+[0.000000,0.000000,0.9436],
+[0.000000,0.102400,1.0000],
+[0.000000,0.362700,1.0000],
+[0.000000,0.622900,1.0000],
+[0.093600,0.810400,1.0000],
+[0.386600,0.843000,1.0000],
+[0.679500,0.875500,1.0000],
+[0.800000,0.400000,0.4000]];
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/converttopowerof2.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/converttopowerof2.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/converttopowerof2.m	(revision 27955)
@@ -0,0 +1,33 @@
+function converttopowerof2(tiffname,pngname)
+%CONVERTTOPOWEROF2: read it a tiff, resize it so its xy dimensions are multiples of 2, and convert to png 
+%
+%  Usage:    converttopowerof2('temp.tif','temp.png')
+%
+
+	if ismac,
+		dyld_library_path_old=getenv('DYLD_LIBRARY_PATH');
+		setenv('DYLD_LIBRARY_PATH','/opt/local/lib:/usr/lib');
+	end
+
+	%figure out the size of the tiff
+	[status,width]=system(['tiffinfo ' tiffname ' 2>/dev/null | command grep "Image Width" | awk ''{printf("%s\n",$3);}''']); 
+	[status,length]=system(['tiffinfo ' tiffname ' 2>/dev/null | command grep "Image Width" | awk ''{printf("%s\n",$6);}''']);
+	width=str2num(width); length=str2num(length);
+
+	
+	%Now, figure out the highest multiple of 2 for both width and length:
+	width=2^nextpow2(width); length=2^nextpow2(length);
+
+	%make sure the width and length are < 2000: 
+	if width>2^11, width=2^11; end
+	if length>2^11, length=2^11; end
+
+	%convert image to that size: 
+	setenv('DYLD_LIBRARY_PATH','/opt/local/lib:/usr/lib');
+	
+	[status,result]=system(sprintf('convert %s -resize %ix%i! %s',tiffname,width,length,pngname));
+	system(sprintf('rm -rf %s',tiffname));
+
+	%reset DYLD_LIBRARY_PATH to what it was:
+	if ismac, setenv('DYLD_LIBRARY_PATH',dyld_library_path_old); end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/diagnostics.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/diagnostics.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/diagnostics.m	(revision 27955)
@@ -0,0 +1,71 @@
+function diagnostics(md,varargin) 
+%DIAGNOSTICS - output diagnostics for use in qgis
+%
+%
+%   Usage:
+%      diagnostics(md,options)
+%   
+%      where options include: 
+%            'path': where are the diagnostics file output
+%            'mesh': 0 or 1 (output mesh?, default 0)
+%            'gl': 0 or 1 (output grounding line position?, default 0)
+%            'vel': defaults to md.initialization.vel (can suplly another field if need be)
+%                Suboptions include:
+%                 'velposting': resolution at which the tiff file will be printed.
+%            'hotspots' (0 or 1, default 0). spots where md.results.TransientSolution(i).Vel>threshold
+%                Suboptions include:
+%                 'threshold': vel value
+%                 'hotspotsi': index into results.TransientSolution
+%
+%           
+%
+%   Examples:
+%      diagnostics(md,'vel',md.initialization.vel,'gl',1,'hotspots',1,'hotspotsi',10,'threshold',500);
+
+
+	%process options: 
+	options=pairoptions(varargin{:});
+	path=getfieldvalue(options,'path','./');
+
+	%mesh:
+	if getfieldvalue(options,'mesh',0),
+		mesh2shp(md,[path '/mesh']);
+	end
+
+	%grounding line : 
+	if getfieldvalue(options,'gl',0),
+		contours=isoline(md,md.mask.ocean_levelset);
+		expwrite(contours,[path '/groundingline.exp']);
+		exp2shp([path '/groundingline.shp'],[path '/groundingline.exp']);
+	end
+
+	%velocity: 
+	if exist(options,'vel'),
+		vel=getfieldvalue(options,'vel',md.initialization.vel);
+		xposting=getfieldvalue(options,'velposting',500);
+		yposting=getfieldvalue(options,'velposting',500);
+
+		xmin=min(md.mesh.x); ymax=max(md.mesh.y); 
+		ncols=(max(md.mesh.x)-min(md.mesh.x))/xposting+1;
+		nlines=(max(md.mesh.y)-min(md.mesh.y))/yposting+1;
+		
+		[xm,ym,vel]=InterpFromMeshToGrid(md.mesh.elements,md.mesh.x,md.mesh.y,vel,xmin,ymax,xposting,yposting,nlines,ncols,0);
+		vel=uint16(flipud(vel));
+
+		imwrite(vel,[path '/veltemp.tif'],'tiff');
+
+		string=sprintf('!gdal_translate -a_srs EPSG:3031 -a_ullr %g %g %g %g %s/veltemp.tif %s/vel.tif',...
+		min(md.mesh.x),max(md.mesh.y),max(md.mesh.x),min(md.mesh.y),path,path);
+		eval(string);
+		delete([path '/veltemp.tif']);
+	end
+
+	%hot spots: 
+	if getfieldvalue(options,'hotspots',0),
+		threshold=getfieldvalue(options,'threshold',5000);
+		i=getfieldvalue(options,'hotspotsi',length(md.results.TransientSolution));
+		pos=find(md.results.TransientSolution(i).Vel>threshold);
+		contour.x=md.mesh.x(pos); contour.y=md.mesh.y(pos); contour.density=1;
+		expwrite(contour,[path '/hotspots.exp']);
+		exp2shp([path '/hotspots.shp'],[path '/hotspots.exp']);
+	end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/fielddisplay.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/fielddisplay.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/fielddisplay.js	(revision 27955)
@@ -0,0 +1,89 @@
+function fielddisplay(md,name,comment){
+//FIELDDISPLAY - display model field
+//
+//   Usage:
+//      fielddisplay(md,name,comment)
+
+	//get field
+	field=md[name];
+
+	//disp corresponding line as a function of field type (offset set as 9 spaces)
+	parsedisplay('         ',name,field,comment);
+}
+
+function parsedisplay(offset,name,field,comment) { //{{{
+
+	//string
+	if (typeof(field) == "string"){
+
+		if (field.length > 30){
+			displayunit(offset,name,"not displayed",comment);
+		}
+		else{
+			displayunit(offset,name,"'"+field+"'",comment);
+		}
+	}
+	//numeric
+	else if (typeof(field) == "number"){
+		
+		displayunit(offset,name,sprintf("%g",field),comment);
+
+	}
+	//logical
+	else if (typeof(field) == "boolean") {
+
+		if (field){
+			displayunit(offset,name,"true",comment);
+		}
+		else{
+			displayunit(offset,name,"false",comment);
+		}
+
+	}
+	//object
+	else if (typeof(field) == "object"){
+
+		if(field.length == 0) displayunit(offset,name,sprintf("(%i)",field.length),comment);
+		else if ((field[0].length==0) | (typeof field[0].length =='undefined')){
+			displayunit(offset,name,sprintf("(%i)",field.length),comment);
+		}
+		else{
+			displayunit(offset,name,sprintf("(%i,%i)",field.length,field[0].length),comment);
+		}
+
+	}
+	else{
+		displayunit(offset,name,"not displayed",comment);
+	}
+} //}}}
+
+function displayunit(offset,name,characterization,comment){ // {{{
+
+	//take care of name
+	if (name.length>23){
+		name=name.slice(0,21) + "...";
+	}
+
+	//take care of characterization
+	if ( characterization == "\" \"" || characterization == "NaN" ){
+	
+		characterization="N/A";
+	}
+	if (characterization.length>15){
+		characterization=characterization.slice(0,13) + "...";
+	}
+
+	//print
+	if (comment.length==0){
+		console.log(sprintf("%s%-23s: %-15s",offset,name,characterization));
+	}
+	else{
+		if (typeof(comment) == "string"){
+			//console.log(sprintf("%s%-23s: %-15s -- %s",offset,name,characterization,comment));
+			console.log(sprintf("%s%s: %-15s -- %s",offset,name,characterization,comment));
+		}
+		else{
+			throw Error("fielddisplay error message: format for comment not supported yet");
+		}
+	}
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/fielddisplay.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/fielddisplay.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/fielddisplay.m	(revision 27955)
@@ -0,0 +1,150 @@
+function fielddisplay(md,name,comment)
+%FIELDDISPLAY - display model field
+%
+%   Usage:
+%      fielddisplay(md,name,comment)
+
+	%get field
+	field=md.(name);
+
+	%disp corresponding line as a function of field type (offset set as 9 spaces)
+	parsedisplay('         ',name,field,comment);
+
+end %function
+
+function parsedisplay(offset,name,field,comment) % {{{
+
+	%string
+	if ischar(field),
+
+		displayunit(offset,name,['''' field ''''],comment)
+
+	%numeric
+	elseif isnumeric(field)
+
+		%double
+		if numel(field)==1,
+			displayunit(offset,name,num2str(field),comment)
+		%matrix
+		else
+			fieldsize=size(field);
+			string = '(';
+			for i=1:numel(fieldsize)
+				string = [string num2str(fieldsize(i)) 'x' ];
+			end
+			string = [string(1:end-1) ')'];
+			displayunit(offset,name,string,comment)
+		end
+
+	%logical
+	elseif islogical(field)
+
+		%get size
+		fieldsize=size(field);
+
+		%single value
+		if max(fieldsize)==1,
+			if (field)
+				displayunit(offset,name,'true',comment)
+			else
+				displayunit(offset,name,'false',comment)
+			end
+		%matrix
+		else
+			displayunit(offset,name,['(' num2str(fieldsize(1)) 'x' num2str(fieldsize(2)) ')'],comment)
+		end
+
+	%structure
+	elseif isstruct(field),
+		struct_display(offset,name,field,comment)
+
+	%cell
+	elseif iscell(field),
+		cell_display(offset,name,field,comment)
+
+	else
+		displayunit(offset,name,'not displayed',comment)
+
+	end
+end%}}}
+
+function struct_display(offset,name,field,comment) % {{{
+
+	if ~isempty(fieldnames(field))
+		displayunit(offset,name,'(structure)',comment)
+		offset=[offset '   '];
+
+		structure_fields=fieldnames(field);
+
+		for i=1:length(structure_fields),
+
+			%get current field
+			sfield=field.(structure_fields{i});
+
+			%display value
+			parsedisplay(offset,structure_fields{i},sfield,'');
+		end
+
+	else
+		displayunit(offset,name,'N/A',comment)
+
+	end
+end% }}}
+function cell_display(offset,name,field,comment) % {{{
+
+	%initialization
+	string='{';
+
+	%go through the cell and fill string
+	if length(field)<5;
+		for i=1:length(field),
+			if ischar(field{i}),
+				string=[string ''''  field{i} ''','];
+			elseif (isnumeric(field{i}) & length(field{i})==1)
+				string=[string num2str(field{i}) ',' ];
+			else
+				string='{';
+				break
+			end
+		end
+	end
+	if strcmp(string,'{'),
+		string=['(' num2str(size(field,1)) 'x' num2str(size(field,2)) ')'];
+	else
+		string=[string(1:end-1) '}'];
+	end
+
+	%call displayunit
+	displayunit(offset,name,string,comment);
+end% }}}
+function displayunit(offset,name,characterization,comment)% {{{
+
+	%take care of name
+	if length(name)>23,
+		name=[name(1:20) '...'];
+	end
+
+	%take care of characterization
+	if (strcmp(characterization,['''' '''']) | strcmp(characterization,'NaN')),
+		characterization='N/A';
+	end
+	if length(characterization)>15,
+		characterization=[characterization(1:12) '...'];
+	end
+
+	%print
+	if isempty(comment)
+		disp(sprintf('%s%-23s: %-15s',offset,name,characterization));
+	else
+		if ischar(comment),
+			disp(sprintf('%s%-23s: %-15s -- %s',offset,name,characterization,comment));
+		elseif iscell(comment),
+			disp(sprintf('%s%-23s: %-15s -- %s',offset,name,characterization,comment{1}));
+			for i=2:length(comment),
+				disp(sprintf('%s%-23s  %-15s    %s',offset,'','',comment{i}));
+			end
+		else
+			error('fielddisplay error message: format for comment not supported yet');
+		end
+	end
+end% }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/fielddisplay.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/fielddisplay.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/fielddisplay.py	(revision 27955)
@@ -0,0 +1,138 @@
+import numpy as np
+
+import MatlabFuncs as m
+
+
+def fielddisplay(md, name, comment):
+    '''
+    FIELDDISPLAY - display model field
+
+       Usage:
+          fielddisplay(md, name, comment)
+    '''
+
+    #get field
+    field = getattr(md, name)
+
+    #disp corresponding line as a function of field type (offset set as 9 spaces)
+    return parsedisplay("         ", name, field, comment)
+
+
+def parsedisplay(offset, name, field, comment):  # {{{
+    #string
+    if isinstance(field, str):
+        if len(field) > 30:
+            string = displayunit(offset, name, "not displayed", comment)
+        else:
+            string = displayunit(offset, name, "'%s'" % field, comment)
+
+    #numeric
+    elif isinstance(field, (int, float)):
+        string = displayunit(offset, name, str(field), comment)
+
+    #matrix
+    elif isinstance(field, np.ndarray):
+        string = displayunit(offset, name, str(field.shape), comment)
+
+    #logical
+    elif isinstance(field, bool):
+        if field:
+            string = displayunit(offset, name, "True", comment)
+        else:
+            string = displayunit(offset, name, "False", comment)
+
+    #dictionary
+    elif isinstance(field, dict):
+        string = dict_display(offset, name, field, comment)
+
+    #list or tuple
+    elif isinstance(field, (list, tuple)):
+        string = list_display(offset, name, field, comment)
+
+    #None
+    elif field is None:
+        string = displayunit(offset, name, "None", comment)
+
+    else:
+        string = displayunit(offset, name, "not displayed", comment)
+
+    return string
+    # }}}
+
+
+def dict_display(offset, name, field, comment):  # {{{
+    if field:
+        string = displayunit(offset, name, '{dictionary}', comment) + '\n'
+        offset += '   '
+
+        for structure_field, sfield in list(field.items()):
+            string += parsedisplay(offset, str(structure_field), sfield, '') + '\n'
+
+        if string and string[-1] == '\n':
+            string = string[:-1]
+
+    else:
+        string = displayunit(offset, name, 'N/A', comment)
+
+    return string
+    # }}}
+
+
+def list_display(offset, name, field, comment):  # {{{
+    #initialization
+    if isinstance(field, list):
+        sbeg = '['
+        send = ']'
+    elif isinstance(field, tuple):
+        sbeg = '('
+        send = ')'
+    string = sbeg
+
+    #go through the cell and fill string
+    if len(field) < 5:
+        for fieldi in field:
+            if isinstance(fieldi, str):
+                string += "'%s', " % fieldi
+            elif isinstance(fieldi, (bool, int, float)):
+                string += "%s, " % str(fieldi)
+            else:
+                string = sbeg
+                break
+
+    if m.strcmp(string, sbeg):
+        string = "%s%dx1%s" % (sbeg, len(field), send)
+    else:
+        string = string[:-1] + send
+
+    #call displayunit
+    return displayunit(offset, name, string, comment)
+    # }}}
+
+
+def displayunit(offset, name, characterization, comment):  #{{{
+    #take care of name
+    if len(name) > 23:
+        name = "%s..." % name[:20]
+
+    #take care of characterization
+    if characterization in ["''", '""', 'nan', np.nan, 'NaN', "[0x1]"]:
+        characterization = "N/A"
+
+    if len(characterization) > 15:
+        characterization = "%s..." % characterization[:12]
+
+    #print
+    if not comment:
+        string = "%s% - 23s: % - 15s" % (offset, name, characterization)
+    else:
+        if isinstance(comment, str):
+            string = "%s% - 23s: % - 15s -- %s" % (offset, name, characterization, comment)
+        elif isinstance(comment, list):
+            string = "%s% - 23s: % - 15s -- %s" % (offset, name, characterization, comment[0])
+            for commenti in comment:
+                string += "\n%s% - 23s  % - 15s    %s" % (offset, '', '', commenti)
+        else:
+            raise RuntimeError("fielddisplay error message: format for comment not supported yet")
+
+    return string
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/getsubattr.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/getsubattr.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/getsubattr.py	(revision 27955)
@@ -0,0 +1,27 @@
+def getsubattr(obj, string):
+    """GETSUBATTR - Returns a reference to the desired attribute of 'obj' based 
+    on 'string'.
+
+    If 'string' represents a single attribute, this function works just like 
+    'getattr'.
+
+    Usage:
+        attr = getsubattr(obj, string)
+
+        where 'object' is a structure that can be addressed with dot notation 
+        and 'string' is a string with one or more attributes separated by '.'.
+
+    Example:
+        attr = getsubattr(md, 'mask.land_levelset')
+        attr = getsubattr(md, 'mask') # Works just like getattr(md, 'mask')
+    """
+
+    attrs = string.split('.')
+
+    # Recurse until we get desired attribute
+    if len(attrs) > 1:
+        attr = getsubattr(getattr(obj, attrs[0]), '.'.join(attrs[1:]))
+    else:
+        attr = getattr(obj, string)
+    
+    return attr
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/intersect.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/intersect.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/intersect.py	(revision 27955)
@@ -0,0 +1,25 @@
+import numpy as np
+
+
+def intersect(a, b):  # {{{
+    """INTERSECT - Python implementation of MATLAB's 'intersect' function
+
+    Usage:
+        c = intersect(a, b) => Returns a list of values common to both 'a' and 'b', with no repetitions. 'c' is in sorted order.
+
+        c, ia, ib = intersect(a, b) => Also returns index lists 'ia' and 'ib'.
+
+    Sources:
+    - https://www.mathworks.com/help/matlab/ref/double.intersect.html
+    - https://stackoverflow.com/a/45645177
+    """
+    a_unique, ia = np.unique(a, return_index=True)
+    b_unique, ib = np.unique(b, return_index=True)
+
+    all_unique = np.concatenate((a_unique, b_unique))
+    all_unique.sort()
+
+    c = all_unique[:-1][all_unique[1:] == all_unique[:-1]]
+
+    return c, ia[np.isin(a_unique, c)], ib[np.isin(b_unique, c)]
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/isnans.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/isnans.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/isnans.m	(revision 27955)
@@ -0,0 +1,14 @@
+function returnvalue=isnans(array)
+%ISNANS: figure out if an array is nan. wrapper to isnan from matlab which stupidly does not allow this test  for structures!
+%
+%  Usage:    isnans(array)
+%
+%  See also : ISNAN 
+
+if isstruct(array), 
+	returnvalue=0;
+elseif iscell(array)
+	returnvalue=0;
+else
+	returnvalue=isnan(array);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/isnans.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/isnans.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/isnans.py	(revision 27955)
@@ -0,0 +1,18 @@
+import numpy as np
+
+
+def isnans(array):
+    """
+    ISNANS: figure out if an array is nan. wrapper to isnan from matlab which stupidly does not allow this test  for structures!
+
+       Usage:    isnans(array)
+
+          See also : ISNAN
+    """
+
+    if isinstance(array, (tuple, list, dict)):
+        returnvalue = 0
+    else:
+        returnvalue = np.isnan(array)
+
+    return returnvalue
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/issmdoc.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/issmdoc.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/issmdoc.m	(revision 27955)
@@ -0,0 +1,15 @@
+%Quick documentation for ISSM
+
+%First get ISSM tier: 
+ISSM_DIR=issmdir();
+
+disp('  A comprehensive documentation is available on http://issm.jpl.nasa.gov');
+disp('  Example: how to create a square ice shelf');
+disp(['       go to ',ISSM_DIR,'/examples/SquareIceShelf']);
+disp(sprintf('%-63s %s','       md=model;','%creates a new empty model structure'));
+disp(sprintf('%-63s %s','       md=triangle(md,''DomainOutline.exp'',50000);','%creates a mesh of the domain outline with a resolution of 50000 m'));
+disp(sprintf('%-63s %s','       md=setmask(md,''all'','''');','%defines the glacier system as an ice shelf (no island)'));
+disp(sprintf('%-63s %s','       md=parameterize(md,''Square.par'');','%fills all the other fields of the model'));
+disp(sprintf('%-63s %s','       md=setflowequation(md,''SSA'',''all'');','%defines all elements as SSA''s SSA'));
+disp(sprintf('%-63s %s','       md=solve(md,''Stressbalance'');','%solve for stress balance'));
+disp(sprintf('%-63s %s','       plotmodel(md,''data'',md.results.StressbalanceSolution.Vel);','%displays the velocity (type plotdoc for plotmodel help)'));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/netcdf2struct.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/netcdf2struct.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/netcdf2struct.m	(revision 27955)
@@ -0,0 +1,173 @@
+function S=netcdf2struct(File)
+%NETCDF2STRUCT - load netcdf file and convert to a matlab structure
+%
+%   Usage:
+%      S=netcdf2struct(File);
+
+	%Read netcdf file
+	data=readnetcdf(File);
+
+	%initialize output
+	S=struct();
+
+	%All the variables are in VarArray field
+	variables=data.VarArray;
+	for i=1:size(variables,2),
+		fieldname=deblank(variables(i).Str);
+		fieldvalue=double(squeeze(variables(i).Data));
+		S.(fieldname)=fieldvalue;
+	end
+
+	%All the variables are in AttArray field
+	variables=data.AttArray;
+	for i=1:size(variables,2),
+		fieldname=deblank(variables(i).Str);
+		fieldvalue=double(variables(i).Val);
+		S.(fieldname)=fieldvalue;
+	end
+end
+
+function S = readnetcdf(File,varargin)
+% Function to read NetCDF files
+%   S = netcdf(File)
+% Input Arguments
+%   File = NetCDF file to read
+% Optional Input Arguments:
+%   'Var',Var - Read data for VarArray(Var), default [1:length(S.VarArray)]
+%   'Rec',Rec - Read data for Record(Rec), default [1:S.NumRecs]
+% Output Arguments:
+%   S    = Structure of NetCDF data organised as per NetCDF definition
+% Notes:
+%   Only version 1, classic 32bit, NetCDF files are supported. By default
+% data are extracted into the S.VarArray().Data field for all variables.
+% To read the header only call S = netcdf(File,'Var',[]);
+%
+% SEE ALSO
+% ---------------------------------------------------------------------------
+S = [];
+
+try
+   if exist(File,'file') fp = fopen(File,'r','b');
+   else fp = []; error('File not found'); end
+   if fp == -1   error('Unable to open file'); end
+
+% Read header
+   Magic = fread(fp,4,'uint8=>char');
+   if strcmp(Magic(1:3),'CDF') error('Not a NetCDF file'); end
+   if uint8(Magic(4))~=1       error('Version not supported'); end
+   S.NumRecs  = fread(fp,1,'uint32=>uint32');
+   S.DimArray = DimArray(fp);
+   S.AttArray = AttArray(fp);
+   S.VarArray = VarArray(fp);
+
+% Setup indexing to arrays and records
+   Var = ones(1,length(S.VarArray));
+   Rec = ones(1,S.NumRecs);
+   for i = 1:2:length(varargin)
+      if     strcmp(upper(varargin{i}),'VAR') Var=Var*0; Var(varargin{i+1})=1;
+      elseif strcmp(upper(varargin{i}),'REC') Rec=Rec*0; Rec(varargin{i+1})=1;
+      else error('Optional input argument not recognised'); end
+   end
+   if sum(Var)==0 fclose(fp); return; end
+
+% Read non-record variables
+   Dim = double(cat(2,S.DimArray.Dim));
+   ID  = double(cat(2,S.VarArray.Type));
+
+   for i = 1:length(S.VarArray)
+      D = Dim(S.VarArray(i).DimID+1); N = prod(D); RecID{i}=find(D==0);
+      if isempty(RecID{i})
+         if length(D)==0 D = [1,1]; N = 1; elseif length(D)==1 D=[D,1]; end
+         if Var(i)
+            S.VarArray(i).Data = ReOrder(fread(fp,N,[Type(ID(i)),'=>',Type(ID(i))]),D);
+            fread(fp,(Pad(N,ID(i))-N)*Size(ID(i)),'uint8=>uint8');
+         else fseek(fp,Pad(N,ID(i))*Size(ID(i)),'cof'); end
+      else S.VarArray(i).Data = []; end
+   end
+
+% Read record variables
+   for k = 1:S.NumRecs
+      for i = 1:length(S.VarArray)
+         if ~isempty(RecID{i})
+            D = Dim(S.VarArray(i).DimID+1); D(RecID{i}) = 1; N = prod(D);
+            if length(D)==1 D=[D,1]; end
+            if Var(i) & Rec(k)
+               S.VarArray(i).Data = cat(RecID{i},S.VarArray(i).Data,...
+                  ReOrder(fread(fp,N,[Type(ID(i)),'=>',Type(ID(i))]),D));
+               if N > 1 fread(fp,(Pad(N,ID(i))-N)*Size(ID(i)),'uint8=>uint8'); end
+            else fseek(fp,Pad(N,ID(i))*Size(ID(i)),'cof'); end
+         end
+      end
+   end
+
+   fclose(fp);
+catch
+   Err = lasterror; fprintf('%s\n',Err.message);
+   if ~isempty(fp) && fp ~= -1 fclose(fp); end
+end
+
+% ---------------------------------------------------------------------------------------
+% Utility functions
+
+function S = Size(ID)
+% Size of NetCDF data type, ID, in bytes
+   S = subsref([1,1,2,4,4,8],struct('type','()','subs',{{ID}}));
+end
+
+function T = Type(ID)
+% Matlab string for CDF data type, ID
+   T = subsref({'int8','char','int16','int32','single','double'},...
+		struct('type','{}','subs',{{ID}}));
+end
+
+function N = Pad(Num,ID)
+% Number of elements to read after padding to 4 bytes for type ID
+   N = (double(Num) + mod(4-double(Num)*Size(ID),4)/Size(ID)).*(Num~=0);
+end
+
+function S = String(fp)
+% Read a CDF string; Size,[String,[Padding]]
+   S = fread(fp,Pad(fread(fp,1,'uint32=>uint32'),1),'uint8=>char').';
+end
+
+function A = ReOrder(A,S)
+% Rearrange CDF array A to size S with matlab ordering
+   A = permute(reshape(A,fliplr(S)),fliplr(1:length(S)));
+end
+
+function S = DimArray(fp)
+% Read DimArray into structure
+   if fread(fp,1,'uint32=>uint32') == 10 % NC_DIMENSION
+      for i = 1:fread(fp,1,'uint32=>uint32')
+         S(i).Str = String(fp);
+         S(i).Dim = fread(fp,1,'uint32=>uint32');
+      end
+   else fread(fp,1,'uint32=>uint32'); S = []; end
+end
+
+function S = AttArray(fp)
+% Read AttArray into structure
+   if fread(fp,1,'uint32=>uint32') == 12 % NC_ATTRIBUTE
+      for i = 1:fread(fp,1,'uint32=>uint32')
+         S(i).Str = String(fp);
+         ID       = fread(fp,1,'uint32=>uint32');
+         Num      = fread(fp,1,'uint32=>uint32');
+         S(i).Val = fread(fp,Pad(Num,ID),[Type(ID),'=>',Type(ID)]).';
+      end
+   else fread(fp,1,'uint32=>uint32'); S = []; end
+end
+
+function S = VarArray(fp)
+% Read VarArray into structure
+   if fread(fp,1,'uint32=>uint32') == 11 % NC_VARIABLE
+      for i = 1:fread(fp,1,'uint32=>uint32')
+         S(i).Str      = String(fp);
+         Num           = double(fread(fp,1,'uint32=>uint32'));
+         S(i).DimID    = double(fread(fp,Num,'uint32=>uint32'));
+         S(i).AttArray = AttArray(fp);
+         S(i).Type     = fread(fp,1,'uint32=>uint32');
+         S(i).VSize    = fread(fp,1,'uint32=>uint32');
+         S(i).Begin    = fread(fp,1,'uint32=>uint32'); % Classic 32 bit format only
+      end
+   else fread(fp,1,'uint32=>uint32'); S = []; end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/normcdf_issm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/normcdf_issm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/normcdf_issm.m	(revision 27955)
@@ -0,0 +1,8 @@
+%
+%  wrapper for normcdf to avoid using the matlab statistics toolbox.
+%
+function [p]=normcdf_issm(x,mu,sigma)
+
+	p=(1.+erf((x-mu)/(sigma*sqrt(2.))))/2.;
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/normfit_issm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/normfit_issm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/normfit_issm.m	(revision 27955)
@@ -0,0 +1,60 @@
+%
+%  wrapper for normfit to avoid using the matlab statistics toolbox.
+%
+function [muhat,sigmahat,muci,sigmaci]=normfit_issm(x,alpha)
+
+	if ~exist('alpha','var')
+		alpha=0.05;
+	end
+
+%  check for any NaN in any columns
+
+	if ~any(any((isnan(x))))
+
+%  explicitly calculate the moments
+
+		muhat   =mean(x);
+		sigmahat=std(x);
+
+		if (nargout>2)
+			prob=1.-alpha/2.;
+
+			if (size(x,1) == 1)
+				% operate like matlab normfit, mean, std, etc.
+				n=length(x);
+			else
+				n=size(x,1);
+			end
+
+			muci    =zeros(2,length(muhat   ));
+			sigmaci =zeros(2,length(sigmahat));
+
+			try
+				muci(1,:)   =muhat-tinv(prob,n-1)*sigmahat/sqrt(n);
+				muci(2,:)   =muhat+tinv(prob,n-1)*sigmahat/sqrt(n);
+				sigmaci(1,:)=sigmahat*sqrt((n-1)/chi2inv(prob   ,n-1));
+				sigmaci(2,:)=sigmahat*sqrt((n-1)/chi2inv(1.-prob,n-1));
+			catch me
+				muci(1,:)   =muhat;
+				muci(2,:)   =muhat;
+				sigmaci(1,:)=sigmahat;
+				sigmaci(2,:)=sigmahat;
+			end
+		end
+
+	else
+
+%  must loop over columns, since number of elements could be different
+
+		muhat   =zeros(1,size(x,2));
+		sigmahat=zeros(1,size(x,2));
+		muci    =zeros(2,size(x,2));
+		sigmaci =zeros(2,size(x,2));
+
+%  remove any NaN and recursively call column
+
+		for j=1:size(x,2)
+			[muhat(j),sigmahat(j),muci(:,j),sigmaci(:,j)]=normfit_issm(x(~isnan(x(:,j)),j),alpha);
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/normfit_issm.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/normfit_issm.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/normfit_issm.py	(revision 27955)
@@ -0,0 +1,52 @@
+import numpy as np
+from scipy.stats import chi2, t
+#  wrapper for normfit to avoid using the matlab statistics toolbox.
+
+
+def normfit_issm(x, alpha=None):
+    if alpha is None:
+        alpha = 0.05
+
+    #  check for any NaN in any columns
+    if not np.isnan(x).any():
+
+        #  explicitly calculate the moments
+        muhat = np.mean(x, 0)
+    # numpy defaults to 0 delta degrees of freedom; matlab uses 1
+        sigmahat = np.std(x, 0, ddof=1)
+
+    # no way to ask this in python, assume 4 outputs
+    #if (nargout > 2):
+        prob = 1. - alpha / 2.
+
+        if (np.size(x, 0) == 1):
+            # operate like matlab normfit, mean, std, etc.
+            n = np.size(x)
+        else:
+            n = np.size(x, 0)
+
+        muci = np.zeros((2, np.size(muhat)))
+        sigmaci = np.zeros((2, np.size(sigmahat)))
+
+        try:
+            muci[0, :] = muhat - t.ppf(prob, n - 1) * sigmahat / np.sqrt(n)
+            muci[1, :] = muhat + t.ppf(prob, n - 1) * sigmahat / np.sqrt(n)
+            sigmaci[0, :] = sigmahat * np.sqrt((n - 1) / chi2.ppf(prob, n - 1))
+            sigmaci[1, :] = sigmahat * np.sqrt((n - 1) / chi2.ppf(1. - prob, n - 1))
+        except:
+            muci[0, :] = muhat
+            muci[1, :] = muhat
+            sigmaci[0, :] = sigmahat
+            sigmaci[1, :] = sigmahat
+    else:
+        #  must loop over columns, since number of elements could be different
+        muhat = np.zeros((1, np.size(x, 1)))
+        sigmahat = np.zeros((1, np.size(x, 1)))
+        muci = np.zeros((2, np.size(x, 1)))
+        sigmaci = np.zeros((2, np.size(x, 1)))
+
+    #  remove any NaN and recursively call column
+        for j in range(np.shape(x, 1)):
+            [muhat[j], sigmahat[j], muci[:, j], sigmaci[:, j]] = normfit_issm(x[not np.isnan(x[:, j]), j], alpha)
+
+    return [muhat, sigmahat, muci, sigmaci]
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/norminv_issm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/norminv_issm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/norminv_issm.m	(revision 27955)
@@ -0,0 +1,8 @@
+%
+%  wrapper for norminv to avoid using the matlab statistics toolbox.
+%
+function [x]=norminv_issm(p,mu,sigma)
+
+	x=mu+sigma*sqrt(2.)*erfinv(2.*p-1.);
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/parallelrange.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/parallelrange.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/parallelrange.m	(revision 27955)
@@ -0,0 +1,22 @@
+function [i1,i2]=parallelrange(rank,numprocs,globalsize)
+%PARALLELRANGE - from a rank, and a number of processors, figure out a range, for parallel tasks.
+%
+%   Usage: 
+%      [i1,i1]=parallelrange(rank,numprocs,globalsize)
+
+num_local_rows=zeros(numprocs,1);
+
+for i=1:numprocs,
+	%we use floor. we under distribute rows. The rows left  are then redistributed, therefore resulting in a more even distribution.
+	num_local_rows(i)=floor(globalsize/numprocs);
+end
+
+%There may be some rows left. Distribute evenly.
+row_rest=globalsize - numprocs*floor(globalsize/numprocs);
+
+for i=1:row_rest,
+	num_local_rows(i)=num_local_rows(i)+1;
+end
+
+i1=sum(num_local_rows(1:rank-1))+1;
+i2=i1+num_local_rows(rank)-1;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/parallelrange.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/parallelrange.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/parallelrange.py	(revision 27955)
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+def parallelrange(rank, numprocs, globalsize):
+    """
+    PARALLELRANGE - from a rank, and a number of processors, figure out a range, for parallel tasks.
+
+       Usage:
+          i1, i2 = parallelrange(rank, numprocs, globalsize)
+    """
+
+    #We use floor. we under distribute rows. The rows left are then redistributed, therefore resulting in a more even distribution.
+    num_local_rows = [int(globalsize / numprocs) for i in range(numprocs)]
+
+    #There may be some rows left. Distribute evenly.
+    row_rest = globalsize - numprocs * int(globalsize / numprocs)
+
+    for i in range(row_rest):
+        num_local_rows[i] = num_local_rows[i] + 1
+
+    i1 = 0
+    for i in range(rank - 1):
+        i1 += num_local_rows[i]
+    i2 = i1 + num_local_rows[rank - 1] - 1
+
+    return i1, i2
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/prctile_issm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/prctile_issm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/prctile_issm.m	(revision 27955)
@@ -0,0 +1,83 @@
+%
+%  wrapper for prctile to avoid using the matlab statistics toolbox.
+%
+function [y]=prctile_issm(x,p,dim)
+
+	try
+		y=prctile(argin{:});
+
+	catch me
+		if length(size(x)) > 2
+			error('Number of dimensions %d not implemented.',length(size(x)));
+		end
+		if ~exist('dim','var')
+			dim=0;
+			for i=1:length(size(x))
+				if ~dim && size(x,i)>1
+					dim=i;
+				end
+			end
+			if ~dim
+				dim=1;
+			end
+		end
+
+		psize=size(p);
+		if size(p,2)>1
+			p=transpose(p);
+		end
+
+		xsize=size(x);
+		if dim==2
+			x=transpose(x);
+		end
+
+%  check for any NaN in any columns
+
+		if ~any(any((isnan(x))))
+			x=sort(x,1);
+			n=size(x,1);
+
+%  branch based on number of elements
+
+			if     n>1
+
+%  set up percent values and interpolate
+
+				xi=transpose(100.*([1:n]-0.5)/n);
+				y=interp1q(xi,x,p);
+
+%  fill in high and low values
+				y(p<xi(1),:)=repmat(x(1,:),nnz(p<xi(1)),1);
+				y(p>xi(n),:)=repmat(x(n,:),nnz(p>xi(n)),1);
+
+%  if one value, just copy it
+
+			elseif n==1
+				y=repmat(x(1,:),length(p),1);
+
+%  if no values, use NaN
+
+			else
+				y=repmat(NaN,size(p,1),size(x,2));
+			end
+
+		else
+
+%  must loop over columns, since number of elements could be different
+
+			y=zeros(size(p,1),size(x,2));
+			for j=1:size(x,2)
+
+%  remove any NaN and recursively call column
+
+				y(:,j)=prctile_issm(x(~isnan(x(:,j)),j),p);
+			end
+		end
+
+		if (min(xsize)==1 && xsize(dim)>1 && psize(2)>1) || ...
+		   (min(xsize)> 1 && dim==2)
+			y=transpose(y);
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/prctile_issm.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/prctile_issm.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/prctile_issm.py	(revision 27955)
@@ -0,0 +1,61 @@
+import numpy as np
+from scipy.interpolate import interp1d
+
+
+def prctile_issm(x, p, dim):
+    # NumPy has no interpolation method that matches MATLAB's percentile function
+    #y = np.percentile(x, p, dim, interpolation = 'higher')
+
+    if len(np.shape(x)) > 2:
+        raise RuntimeError('Number of dimensions {} not implemented.'.format(len(np.shape(x))))
+
+    # presumably at least 1 input value has been given
+    #    np.shape(integer) -> (), must be at least (1, )
+    psize = np.shape(p) or (1, )
+    if len(psize) > 1 and np.size(p, 1) > 1:
+        p = p.T
+
+    xsize = np.shape(x) or (1, )
+    if dim == 2:
+        x = x.T
+
+    #  check for any NaN in any columns
+    if not np.isnan(x).any():
+        x = np.sort(x, axis=0)
+        n = np.size(x, 0)
+
+        #  branch based on number of elements
+        if n > 1:
+            #  set up percent values and interpolate
+            xi = [((i + 0.5) * 100 / n) for i in range(n)]
+            # scipy's interp1d returns a function
+            y = interp1d(xi, x, axis=dim, bounds_error=False)
+            y = y(p)
+
+            #  fill in high and low values outside of interp range
+            if p > xi[n - 1]:
+                y = np.tile(x[n - 1, :], 1)
+            if p < xi[0]:
+                y = np.tile(x[0, :], 1)
+
+        #  if one value, just copy it
+        elif n == 1:
+            if isinstance(p, int):
+                y = x[0, :]
+            else:
+                y = np.tile(x[0, :], (len(p), 1))
+
+        #  if no values, use NaN
+        else:
+            y = np.tile(float('NaN'), (np.size(p, 0), np.size(x, 0)))
+    else:
+        #  must loop over columns, since number of elements could be different
+        y = np.zeros((np.size(p, 0), np.size(x, 1)))
+        for j in range(np.size(x, 1)):
+            #  remove any NaN and recursively call column
+            y[:, j] = prctile_issm(x[np.where(not np.isnan(x[:, j]), j)], p)
+
+    if (np.min(xsize) == 1 and len(xsize) > 1 and xsize[dim] > 1 and len(p) > 1 and psize[1] > 1) or (np.min(xsize) > 1 and dim == 2):
+        y = y.T
+
+    return y
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/pretty_print.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/pretty_print.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/pretty_print.m	(revision 27955)
@@ -0,0 +1,70 @@
+function pretty_print(data)
+%PRETTY_PRINT - print longer structures as they would be under Python
+%
+%   Utility function for debugging to print large structures.
+%
+%   Usage:
+%      pretty_print(data)
+%
+%   NOTE:
+%   - Currently only handles 1- and 2D structures.
+%
+%   TODO:
+%   - Add an argument that allows the user to specify what constitutes a "long" 
+%   large data structure (default is length of 6).
+%   - Add an argument that allows the user to specify the number of values that 
+%   they would like to display from the head and tail of each dimension of 
+%   'data' (default is 3 from each end).
+%   - Add an argument that allows the user to designate the number of 
+%   significant figures to print for each floating point value (default is 8).
+
+if ndims(data)==1
+	if length(data)>6
+		output=sprintf('[%.8f %.8f %.8f ... %.8f %.8f %.8f]',data(1),data(2),data(3),data(end-2),data(end-1),data(end));
+	else
+		output=sprintf('%.8f',data);
+	end
+elseif ndims(data)==2
+	shape=size(data);
+	if shape(1)>6
+		if shape(2)>6
+			output=sprintf('[[%.8f %.8f %.8f ... %.8f %.8f %.8f]\n',data(1,1),data(1,2),data(1,3),data(1,end-2),data(1,end-1),data(1,end));
+			output=sprintf('%s [%.8f %.8f %.8f ... %.8f %.8f %.8f]\n',output,data(2,1),data(2,2),data(2,3),data(2,end-2),data(2,end-1),data(2,end));
+			output=sprintf('%s [%.8f %.8f %.8f ... %.8f %.8f %.8f]\n',output,data(3,1),data(3,2),data(3,3),data(3,end-2),data(3,end-1),data(3,end));
+			output=sprintf('%s ...\n',output);
+			output=sprintf('%s [%.8f %.8f %.8f ... %.8f %.8f %.8f]\n',output,data(end-2,1),data(end-2,2),data(end-2,3),data(end-2,end-2),data(end-2,end-1),data(end-2,end));
+			output=sprintf('%s [%.8f %.8f %.8f ... %.8f %.8f %.8f]\n',output,data(end-1,1),data(end-1,2),data(end-1,3),data(end-1,end-2),data(end-1,end-1),data(end-1,end));
+			output=sprintf('%s [%.8f %.8f %.8f ... %.8f %.8f %.8f]]',output,data(end,1),data(end,2),data(end,3),data(end,end-2),data(end,end-1),data(end,end));
+		else
+			output=sprintf('[[%.8f]\n',data(1,:));
+			output=sprintf('%s [%.8f]\n',output,data(2,:));
+			output=sprintf('%s [%.8f]\n',output,data(3,:));
+			output=sprintf('%s ...\n',output);
+			output=sprintf('%s [%.8f]\n',output,data(end-2,:));
+			output=sprintf('%s [%.8f]\n',output,data(end-1,:));
+			output=sprintf('%s [%.8f]]',output,data(end,:));
+		end
+	else
+		if shape(2)>6
+			for i=1:shape(1)
+				if i==1
+					output='[';
+				else
+					output=sprintf('%s ',output);
+				end
+
+				output=sprintf('%s[%.8f %.8f %.8f ... %.8f %.8f %.8f]',output,data(i,1),data(i,2),data(i,3),data(i,end-2),data(i,end-1),data(i,end));
+
+				if i==shape(1)
+					output=sprintf('%s]',output);
+				end
+			end
+		else
+			output=sprintf('%.8f',data);
+		end
+	end
+else
+	output=sprintf('%.8f',data);
+end
+
+disp(output);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/readnetcdf.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/readnetcdf.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/readnetcdf.m	(revision 27955)
@@ -0,0 +1,185 @@
+function S = readnetcdf(File,varargin)
+% Function to read NetCDF files
+%   S = netcdf(File)
+% Input Arguments
+%   File = NetCDF file to read
+% Optional Input Arguments:
+%   'Var',Var - Read data for VarArray(Var), default [1:length(S.VarArray)]
+%   'Rec',Rec - Read data for Record(Rec), default [1:S.NumRecs]
+% Output Arguments:
+%   S    = Structure of NetCDF data organised as per NetCDF definition
+% Notes:
+%   Only version 1, classic 32bit, NetCDF files are supported. By default
+% data are extracted into the S.VarArray().Data field for all variables.
+% To read the header only call S = netcdf(File,'Var',[]);
+%
+% SEE ALSO
+% ---------------------------------------------------------------------------
+S = [];
+
+try
+   if exist(File,'file') 
+		fp = fopen(File,'r','b');
+   else 
+		fp = []; 
+		error('File not found'); 
+	end
+   
+	if fp == -1   
+		error('Unable to open file'); 
+	end
+
+% Read header
+   Magic = fread(fp,4,'uint8=>char');
+   if strcmp(Magic(1:3),'CDF') 
+		error('Not a NetCDF file'); 
+	end
+   if uint8(Magic(4))~=1       
+		error('Version not supported'); 
+	end
+  
+	S.NumRecs  = fread(fp,1,'uint32=>uint32');
+   S.DimArray = DimArray(fp);
+   S.AttArray = AttArray(fp);
+   S.VarArray = VarArray(fp);
+
+% Setup indexing to arrays and records
+   Var = ones(1,length(S.VarArray));
+   Rec = ones(1,S.NumRecs);
+   for i = 1:2:length(varargin)
+      if     strcmp(upper(varargin{i}),'VAR') 
+			Var=Var*0; 
+			Var(varargin{i+1})=1;
+      elseif strcmp(upper(varargin{i}),'REC') 
+			Rec=Rec*0; 
+			Rec(varargin{i+1})=1;
+      else 
+			error('Optional input argument not recognised'); 
+		end
+   end
+   
+	if sum(Var)==0 
+		fclose(fp); 
+		return; 
+	end
+
+% Read non-record variables
+   Dim = double(cat(2,S.DimArray.Dim));
+   ID  = double(cat(2,S.VarArray.Type));
+
+   for i = 1:length(S.VarArray)
+      D = Dim(S.VarArray(i).DimID+1); N = prod(D); RecID{i}=find(D==0);
+      if isempty(RecID{i})
+         if length(D)==0 
+				D = [1,1]; 
+				N = 1; 
+			elseif length(D)==1 
+				D=[D,1]; 
+			end
+
+         if Var(i)
+            S.VarArray(i).Data = ReOrder(fread(fp,N,[Type(ID(i)),'=>',Type(ID(i))]),D);
+            fread(fp,(Pad(N,ID(i))-N)*Size(ID(i)),'uint8=>uint8');
+         else 
+				fseek(fp,Pad(N,ID(i))*Size(ID(i)),'cof'); 
+			end
+      else 
+			S.VarArray(i).Data = []; 
+		end
+   end
+
+% Read record variables
+   for k = 1:S.NumRecs
+      for i = 1:length(S.VarArray)
+         if ~isempty(RecID{i})
+            D = Dim(S.VarArray(i).DimID+1); D(RecID{i}) = 1; N = prod(D);
+            if length(D)==1 
+					D=[D,1]; 
+				end
+            if Var(i) & Rec(k)
+               S.VarArray(i).Data = cat(RecID{i},S.VarArray(i).Data,...
+                  ReOrder(fread(fp,N,[Type(ID(i)),'=>',Type(ID(i))]),D));
+               if N > 1 
+						fread(fp,(Pad(N,ID(i))-N)*Size(ID(i)),'uint8=>uint8'); 
+					end
+            else 
+					fseek(fp,Pad(N,ID(i))*Size(ID(i)),'cof'); 
+				end
+         end
+      end
+   end
+
+   fclose(fp);
+catch
+   Err = lasterror; fprintf('%s\n',Err.message);
+   if ~isempty(fp) && fp ~= -1 
+		fclose(fp); 
+	end
+end
+end
+
+% ---------------------------------------------------------------------------------------
+% Utility functions
+
+function S = Size(ID)
+% Size of NetCDF data type, ID, in bytes
+   S = subsref([1,1,2,4,4,8],struct('type','()','subs',{{ID}}));
+end
+
+function T = Type(ID)
+% Matlab string for CDF data type, ID
+   T = subsref({'int8','char','int16','int32','single','double'},...
+		struct('type','{}','subs',{{ID}}));
+end
+
+function N = Pad(Num,ID)
+% Number of elements to read after padding to 4 bytes for type ID
+   N = (double(Num) + mod(4-double(Num)*Size(ID),4)/Size(ID)).*(Num~=0);
+end
+
+function S = String(fp)
+% Read a CDF string; Size,[String,[Padding]]
+   S = fread(fp,Pad(fread(fp,1,'uint32=>uint32'),1),'uint8=>char').';
+end
+
+function A = ReOrder(A,S)
+% Rearrange CDF array A to size S with matlab ordering
+   A = permute(reshape(A,fliplr(S)),fliplr(1:length(S)));
+end
+
+function S = DimArray(fp)
+% Read DimArray into structure
+   if fread(fp,1,'uint32=>uint32') == 10 % NC_DIMENSION
+      for i = 1:fread(fp,1,'uint32=>uint32')
+         S(i).Str = String(fp);
+         S(i).Dim = fread(fp,1,'uint32=>uint32');
+      end
+   else fread(fp,1,'uint32=>uint32'); S = []; end
+end
+
+function S = AttArray(fp)
+% Read AttArray into structure
+   if fread(fp,1,'uint32=>uint32') == 12 % NC_ATTRIBUTE
+      for i = 1:fread(fp,1,'uint32=>uint32')
+         S(i).Str = String(fp);
+         ID       = fread(fp,1,'uint32=>uint32');
+         Num      = fread(fp,1,'uint32=>uint32');
+         S(i).Val = fread(fp,Pad(Num,ID),[Type(ID),'=>',Type(ID)]).';
+      end
+   else fread(fp,1,'uint32=>uint32'); S = []; end
+end
+
+function S = VarArray(fp)
+% Read VarArray into structure
+   if fread(fp,1,'uint32=>uint32') == 11 % NC_VARIABLE
+      for i = 1:fread(fp,1,'uint32=>uint32')
+         S(i).Str      = String(fp);
+         Num           = double(fread(fp,1,'uint32=>uint32'));
+         S(i).DimID    = double(fread(fp,Num,'uint32=>uint32'));
+         S(i).AttArray = AttArray(fp);
+         S(i).Type     = fread(fp,1,'uint32=>uint32');
+         S(i).VSize    = fread(fp,1,'uint32=>uint32');
+         S(i).Begin    = fread(fp,1,'uint32=>uint32'); % Classic 32 bit format only
+      end
+   else fread(fp,1,'uint32=>uint32'); S = []; end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/rgbcolor.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/rgbcolor.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/rgbcolor.js	(revision 27955)
@@ -0,0 +1,288 @@
+/**
+ * A class to parse color values
+ * @author Stoyan Stefanov <sstoo@gmail.com>
+ * @link   http://www.phpied.com/rgb-color-parser-in-javascript/
+ * @license Use it if you like it
+ */
+function RGBColor(color_string)
+{
+    this.ok = false;
+
+    // strip any leading #
+    if (color_string.charAt(0) == '#') { // remove # if any
+        color_string = color_string.substr(1,6);
+    }
+
+    color_string = color_string.replace(/ /g,'');
+    color_string = color_string.toLowerCase();
+
+    // before getting into regexps, try simple matches
+    // and overwrite the input
+    var simple_colors = {
+        aliceblue: 'f0f8ff',
+        antiquewhite: 'faebd7',
+        aqua: '00ffff',
+        aquamarine: '7fffd4',
+        azure: 'f0ffff',
+        beige: 'f5f5dc',
+        bisque: 'ffe4c4',
+        black: '000000',
+        blanchedalmond: 'ffebcd',
+        blue: '0000ff',
+        blueviolet: '8a2be2',
+        brown: 'a52a2a',
+        burlywood: 'deb887',
+        cadetblue: '5f9ea0',
+        chartreuse: '7fff00',
+        chocolate: 'd2691e',
+        coral: 'ff7f50',
+        cornflowerblue: '6495ed',
+        cornsilk: 'fff8dc',
+        crimson: 'dc143c',
+        cyan: '00ffff',
+        darkblue: '00008b',
+        darkcyan: '008b8b',
+        darkgoldenrod: 'b8860b',
+        darkgray: 'a9a9a9',
+        darkgreen: '006400',
+        darkkhaki: 'bdb76b',
+        darkmagenta: '8b008b',
+        darkolivegreen: '556b2f',
+        darkorange: 'ff8c00',
+        darkorchid: '9932cc',
+        darkred: '8b0000',
+        darksalmon: 'e9967a',
+        darkseagreen: '8fbc8f',
+        darkslateblue: '483d8b',
+        darkslategray: '2f4f4f',
+        darkturquoise: '00ced1',
+        darkviolet: '9400d3',
+        deeppink: 'ff1493',
+        deepskyblue: '00bfff',
+        dimgray: '696969',
+        dodgerblue: '1e90ff',
+        feldspar: 'd19275',
+        firebrick: 'b22222',
+        floralwhite: 'fffaf0',
+        forestgreen: '228b22',
+        fuchsia: 'ff00ff',
+        gainsboro: 'dcdcdc',
+        ghostwhite: 'f8f8ff',
+        gold: 'ffd700',
+        goldenrod: 'daa520',
+        gray: '808080',
+        green: '008000',
+        greenyellow: 'adff2f',
+        honeydew: 'f0fff0',
+        hotpink: 'ff69b4',
+        indianred : 'cd5c5c',
+        indigo : '4b0082',
+        ivory: 'fffff0',
+        khaki: 'f0e68c',
+        lavender: 'e6e6fa',
+        lavenderblush: 'fff0f5',
+        lawngreen: '7cfc00',
+        lemonchiffon: 'fffacd',
+        lightblue: 'add8e6',
+        lightcoral: 'f08080',
+        lightcyan: 'e0ffff',
+        lightgoldenrodyellow: 'fafad2',
+        lightgrey: 'd3d3d3',
+        lightgreen: '90ee90',
+        lightpink: 'ffb6c1',
+        lightsalmon: 'ffa07a',
+        lightseagreen: '20b2aa',
+        lightskyblue: '87cefa',
+        lightslateblue: '8470ff',
+        lightslategray: '778899',
+        lightsteelblue: 'b0c4de',
+        lightyellow: 'ffffe0',
+        lime: '00ff00',
+        limegreen: '32cd32',
+        linen: 'faf0e6',
+        magenta: 'ff00ff',
+        maroon: '800000',
+        mediumaquamarine: '66cdaa',
+        mediumblue: '0000cd',
+        mediumorchid: 'ba55d3',
+        mediumpurple: '9370d8',
+        mediumseagreen: '3cb371',
+        mediumslateblue: '7b68ee',
+        mediumspringgreen: '00fa9a',
+        mediumturquoise: '48d1cc',
+        mediumvioletred: 'c71585',
+        midnightblue: '191970',
+        mintcream: 'f5fffa',
+        mistyrose: 'ffe4e1',
+        moccasin: 'ffe4b5',
+        navajowhite: 'ffdead',
+        navy: '000080',
+        oldlace: 'fdf5e6',
+        olive: '808000',
+        olivedrab: '6b8e23',
+        orange: 'ffa500',
+        orangered: 'ff4500',
+        orchid: 'da70d6',
+        palegoldenrod: 'eee8aa',
+        palegreen: '98fb98',
+        paleturquoise: 'afeeee',
+        palevioletred: 'd87093',
+        papayawhip: 'ffefd5',
+        peachpuff: 'ffdab9',
+        peru: 'cd853f',
+        pink: 'ffc0cb',
+        plum: 'dda0dd',
+        powderblue: 'b0e0e6',
+        purple: '800080',
+        red: 'ff0000',
+        rosybrown: 'bc8f8f',
+        royalblue: '4169e1',
+        saddlebrown: '8b4513',
+        salmon: 'fa8072',
+        sandybrown: 'f4a460',
+        seagreen: '2e8b57',
+        seashell: 'fff5ee',
+        sienna: 'a0522d',
+        silver: 'c0c0c0',
+        skyblue: '87ceeb',
+        slateblue: '6a5acd',
+        slategray: '708090',
+        snow: 'fffafa',
+        springgreen: '00ff7f',
+        steelblue: '4682b4',
+        tan: 'd2b48c',
+        teal: '008080',
+        thistle: 'd8bfd8',
+        tomato: 'ff6347',
+        turquoise: '40e0d0',
+        violet: 'ee82ee',
+        violetred: 'd02090',
+        wheat: 'f5deb3',
+        white: 'ffffff',
+        whitesmoke: 'f5f5f5',
+        yellow: 'ffff00',
+        yellowgreen: '9acd32'
+    };
+    for (var key in simple_colors) {
+        if (color_string == key) {
+            color_string = simple_colors[key];
+        }
+    }
+    // emd of simple type-in colors
+
+    // array of color definition objects
+    var color_defs = [
+        {
+            re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
+            example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1]),
+                    parseInt(bits[2]),
+                    parseInt(bits[3])
+                ];
+            }
+        },
+        {
+            re: /^(\w{2})(\w{2})(\w{2})$/,
+            example: ['#00ff00', '336699'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1], 16),
+                    parseInt(bits[2], 16),
+                    parseInt(bits[3], 16)
+                ];
+            }
+        },
+        {
+            re: /^(\w{1})(\w{1})(\w{1})$/,
+            example: ['#fb0', 'f0f'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1] + bits[1], 16),
+                    parseInt(bits[2] + bits[2], 16),
+                    parseInt(bits[3] + bits[3], 16)
+                ];
+            }
+        }
+    ];
+
+    // search through the definitions to find a match
+    for (var i = 0; i < color_defs.length; i++) {
+        var re = color_defs[i].re;
+        var processor = color_defs[i].process;
+        var bits = re.exec(color_string);
+        if (bits) {
+            channels = processor(bits);
+            this.r = channels[0];
+            this.g = channels[1];
+            this.b = channels[2];
+            this.ok = true;
+        }
+
+    }
+
+    // validate/cleanup values
+    this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);
+    this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);
+    this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);
+
+    // some getters
+    this.toRGB = function () {
+        return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';
+    }
+    this.toHex = function () {
+        var r = this.r.toString(16);
+        var g = this.g.toString(16);
+        var b = this.b.toString(16);
+        if (r.length == 1) r = '0' + r;
+        if (g.length == 1) g = '0' + g;
+        if (b.length == 1) b = '0' + b;
+        return '#' + r + g + b;
+    }
+
+    // help
+    this.getHelpXML = function () {
+
+        var examples = new Array();
+        // add regexps
+        for (var i = 0; i < color_defs.length; i++) {
+            var example = color_defs[i].example;
+            for (var j = 0; j < example.length; j++) {
+                examples[examples.length] = example[j];
+            }
+        }
+        // add type-in colors
+        for (var sc in simple_colors) {
+            examples[examples.length] = sc;
+        }
+
+        var xml = document.createElement('ul');
+        xml.setAttribute('id', 'rgbcolor-examples');
+        for (var i = 0; i < examples.length; i++) {
+            try {
+                var list_item = document.createElement('li');
+                var list_color = new RGBColor(examples[i]);
+                var example_div = document.createElement('div');
+                example_div.style.cssText =
+                        'margin: 3px; '
+                        + 'border: 1px solid black; '
+                        + 'background:' + list_color.toHex() + '; '
+                        + 'color:' + list_color.toHex()
+                ;
+                example_div.appendChild(document.createTextNode('test'));
+                var list_item_value = document.createTextNode(
+                    ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()
+                );
+                list_item.appendChild(example_div);
+                list_item.appendChild(list_item_value);
+                xml.appendChild(list_item);
+
+            } catch(e){}
+        }
+        return xml;
+
+    }
+
+}
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/round_ice.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/round_ice.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/round_ice.m	(revision 27955)
@@ -0,0 +1,36 @@
+function new_x=round_ice(x,numnonzeros)
+%ROUND_ICE - rounds up x so that it has only numnonzeros non zero digits
+%
+%   numnonzeros must be an integer larger or equal to 1
+%
+%   Usage:
+%      new_x=round_ice(x,numnonzeros)
+
+%some checks
+if (nargin ~=2 | nargout>1),
+	error('round_ice usage: new_x=round_ice(x,numonzeros)');
+end
+if ~isnumeric(x)
+	error('round_ice error message: x must be a number and numzeros an integer');
+end
+if round(numnonzeros)~=numnonzeros
+	error('round_ice error message: numnonzeros must be an integer larger or equal to 1')
+end
+if any(numnonzeros<1)
+	error('round_ice error message: numnonzeros must be an integer larger or equal to 1')
+end
+if (length(numnonzeros)~=1 & size(numnonzeros)~=size(x))
+	error('round_ice error message: numnonzeros must be an integer larger or equal to 1 or a list of integers of length length(x)')
+end
+
+%figure out how long x is
+lengthx=ceil(log10(abs(x)));
+
+%if x contains 0, lengthx=-Inf
+lengthx(isinf(lengthx))=1;
+
+%get its sign
+si=sign(x);
+
+%rule out zeros
+new_x=si.*round(abs(x).*10.^(-lengthx+numnonzeros)).*10.^(lengthx-numnonzeros);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/setsubattr.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/setsubattr.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/setsubattr.py	(revision 27955)
@@ -0,0 +1,26 @@
+def setsubattr(obj, string, value):
+    """SETSUBATTR - Sets the desired attribute of 'obj' based on 'string' to 
+    the value supplied to 'value'.
+
+    If 'string' represents a single attribute, this function works just like 
+    'setattr'.
+
+    Usage:
+        setsubattr(obj, string, value)
+
+        where 'object' is a structure that can be addressed with dot notation, 
+        'string' is a string with one or more attributes separated by '.', and 
+        'value' is any value.
+
+    Example:
+        attr = getsubattr(md, 'mask.land_levelset')
+        attr = getsubattr(md, 'mask') # Works just like getattr(md, 'mask')
+    """
+
+    attrs = string.split('.')
+
+    # Recurse until we get desired attribute
+    if len(attrs) > 1:
+        setsubattr(getattr(obj, attrs[0]), '.'.join(attrs[1:]), value)
+    else:
+        setattr(obj, string, value)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/structtoobj.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/structtoobj.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/structtoobj.m	(revision 27955)
@@ -0,0 +1,16 @@
+function obj=structtoobj(obj,S),
+%Convert struct to object
+
+	%Get object and structure fields
+	structfields=fieldnames(S);
+	objprops    =properties(class(obj));
+
+	%recover object properties
+	for i=1:length(structfields),
+		fieldname=structfields{i};
+		if ismember(fieldname,objprops),
+			fieldvalue=getfield(S,fieldname);
+			obj=setfield(obj,fieldname,fieldvalue);
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/structtoobj.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/structtoobj.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/structtoobj.py	(revision 27955)
@@ -0,0 +1,18 @@
+def structtoobj(obj, S):
+    """STRUCTTOOBJ - Convert struct to obj
+
+    NOTE: The following semantics are not Pythonic, but attempt to recreate the 
+    same function from MATLAB.
+    """
+
+    # Get object and structure fields
+    structfields = S.__dict__.keys()
+    objprops = vars(obj)
+
+    # Recover object properties
+    for structfield in structfields:
+        if structfield in objprops:
+            fieldvalue = getattr(S, structfield)
+            setattr(obj, structfield, fieldvalue)
+
+    return obj
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/transientrestart.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/transientrestart.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/transientrestart.m	(revision 27955)
@@ -0,0 +1,69 @@
+function md = transientrestart(md,step)
+%TRANSIENTRESTART - reinitialize model from last transient step
+%
+%   Usage:
+%      md = transientrestart(md)
+%      md = transientrestart(md,step)
+%
+%   By default, transientrestart will use the last step provided in md.results.TransientSolution
+
+%Get result and save it again
+if nargin==1,
+	step = numel(md.results.TransientSolution);
+end
+if step<1,
+	error('step needs to be >0');
+elseif step>numel(md.results.TransientSolution)
+	error(['md.results.TransientSolution has only ' num2str(numel(md.results.TransientSolution)) ' steps']);
+end
+results = md.results.TransientSolution(step);
+
+newname = ['TransientSolution' num2str(numel(fields(md.results))+1)];
+if isfield(md.results,newname)
+	error(['Cannot save ' newname ' in md.results']);
+else
+	disp(['Moving results to ' newname]);
+	md.results.(newname) = md.results.TransientSolution;
+	md.results.TransientSolution  = struct();
+end
+
+%Change time
+md.timestepping.start_time = results.time;
+
+%Change initialization fields
+if isfield(results,'Vx'),          md.initialization.vx=results.Vx; end
+if isfield(results,'Vy'),          md.initialization.vy=results.Vy; end
+if isfield(results,'Vz'),          md.initialization.vz=results.Vz; end
+if isfield(results,'Vel'),         md.initialization.vel=results.Vel; end
+if isfield(results,'Temperature'), md.initialization.temperature=results.Temperature; end
+if isfield(results,'Pressure'),    md.initialization.pressure=results.Pressure; end
+if isfield(results,'Waterfraction'),md.initialization.waterfraction=results.Waterfraction; end
+if isfield(results,'Watercolumn'), md.initialization.watercolumn=results.Watercolumn; end
+if isfield(results,'Enthalpy'),    md.initialization.enthalpy=results.Enthalpy; end
+if isfield(results,'DebrisThickness'),md.initialization.debris=results.DebrisThickness; end
+
+%Deal with new geometry
+if isfield(results,'Base') & isfield(results,'Thickness'),
+	base=results.Base;
+	thickness=results.Thickness;
+	if isa(md.mesh,'mesh3dprisms')
+		md.mesh.z=base+thickness./md.geometry.thickness.*(md.mesh.z-md.geometry.base);
+	elseif isa(md.mesh,'mesh2dvertical')
+		md.mesh.y=base+thickness./md.geometry.thickness.*(md.mesh.y-md.geometry.base);
+	end
+	md.geometry.base=base;
+	md.geometry.thickness=thickness;
+	md.geometry.surface=md.geometry.base+md.geometry.thickness;
+end
+
+%Update mask
+if isfield(results,'MaskOceanLevelset'),
+	md.mask.ocean_levelset = results.MaskOceanLevelset;
+end
+if isfield(results,'MaskIceLevelset'),
+	md.mask.ice_levelset = results.MaskIceLevelset;
+end
+%Update mask in case of old model version, before name change groundedice -> ocean levelset
+if isfield(results,'MaskGroundediceLevelset'),
+	md.mask.ocean_levelset = results.MaskGroundediceLevelset;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/vorticity.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/vorticity.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/miscellaneous/vorticity.m	(revision 27955)
@@ -0,0 +1,33 @@
+function rot = vorticity(md,vx,vy)
+%VORTICITY - calculates 2d vorticity
+%
+%   rot = d/dx(vy) - d/dy(vx)
+%
+%   Usage:
+%      rot = vorticity(vx,vy)
+
+
+%load some variables (it is much faster if the variab;es are loaded from md once for all) 
+if ~strcmpi(md.mesh.domaintype(),'3D'),
+	numberofelements=md.mesh.numberofelements;
+	numberofnodes=md.mesh.numberofvertices;
+	index=md.mesh.elements;
+	x=md.mesh.x; y=md.mesh.y;
+else
+	numberofelements=md.mesh.numberofelements2d;
+	numberofnodes=md.mesh.numberofvertices2d;
+	index=md.mesh.elements2d;
+	x=md.mesh.x2d; y=md.mesh.y2d;
+end
+
+%compute nodal functions coefficients N(x,y)=alpha x + beta y + gamma
+[alpha beta]=GetNodalFunctionsCoeff(index,x,y);
+
+summation=[1;1;1];
+dvydx=(vy(index).*alpha)*summation;
+dvxdy=(vx(index).*beta)*summation;
+rot=dvxdy - dvydx;
+
+if strcmpi(domaintype(md.mesh),'3D'),
+	rot=project3d(md,'vector',rot,'type','element');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/InterpFromGrid.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/InterpFromGrid.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/InterpFromGrid.cpp	(revision 27955)
@@ -0,0 +1,567 @@
+/*Written by Mathieu Morlighem April 19th 2019*/
+
+/*includes*/
+#include <mex.h>
+#include <pthread.h>
+#include <math.h>   //for isnan
+#include <cstring>  // for strcmp
+#define f(m,n)\
+  data[n*dataM+m] //Warning: matrix is transposed!
+
+/*Inputs{{{*/
+#define DATAX   (mxArray*)prhs[0]
+#define DATAY   (mxArray*)prhs[1]
+#define DATA    (mxArray*)prhs[2]
+#define INTERPX (mxArray*)prhs[3]
+#define INTERPY (mxArray*)prhs[4]
+#define METHOD  (mxArray*)prhs[5]
+/*}}}*/
+/*Outputs{{{*/
+#define INTERP (mxArray**)&plhs[0]
+/*}}}*/
+/*threading structs{{{*/
+typedef struct{
+	void* usr;
+	int   my_thread;
+	int   num_threads;
+} pthread_handle;
+
+typedef struct{
+	int     dataM;
+	int     dataN;
+	double* datax;
+	double* datay;
+	double* data;
+	int     interpN;
+	double* interpx;
+	double* interpy;
+	double* interp;
+	int     method;
+} AppStruct; /*}}}*/
+/*Prototypes{{{*/
+void  FetchMatrixPointer(double** pmatrix,int *pM,int *pN,const mxArray* dataref);
+void  FetchVectorPointer(double** pvector,int *pN,const mxArray* dataref);
+void  FetchString(char** pstring,const mxArray* dataref);
+void  WriteMatrix(mxArray** pdataref,double* matrix,int M,int N);
+void  WriteVector(mxArray** pdataref,double* vector,int N);
+void* InterpFromGridt(void* vpthread_handle);
+void  LaunchThread(void* function(void*), void* usr,int num_threads);
+bool  binary_search_increasing(int* pindex,double target,double* list,int n);
+bool  binary_search_decreasing(int* pindex,double target,double* list,int n);
+void  dataderivatives(double* A,double* x,double* y,double* data,int M,int N, int m0, int m1,int m2,int m3, int n0, int n1,int n2,int n3);
+/*}}}*/
+
+void mexFunction(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]){/*{{{*/
+
+	double *datax   = NULL;
+	double *datay   = NULL;
+	double *data    = NULL;
+	int     dataM,dataN;
+	double *interpx = NULL;
+	double *interpy = NULL;
+	double *interp  = NULL;
+	int     interpM,interpN;
+
+	int     num_threads = 20;
+	int     test1,test2,test3,test4;
+	int     method = 1; // 0 = nearest, 1 = bilinear, 2 = bicubic
+
+	/*Check arguments to avoid crash*/
+	if(nlhs>1 || (nrhs<5 || nrhs>6)) mexErrMsgTxt("Wrong usage");
+
+	/*Get variables from matlab to C*/
+	FetchVectorPointer(&datax,&dataN,DATAX);
+	FetchVectorPointer(&datay,&dataM,DATAY);
+	FetchMatrixPointer(&data ,&test1,&test2,DATA); 
+	FetchMatrixPointer(&interpx,&interpM,&interpN,INTERPX);
+	FetchMatrixPointer(&interpy,&test3,&test4,INTERPY);
+	if(!dataM*dataN)     mexErrMsgTxt("data is empty");
+	if(!interpM*interpN) mexErrMsgTxt("no interpolation requested");
+	if(test1!=dataM)     mexErrMsgTxt("x should have as many elements as there are columns in the data");
+	if(test2!=dataN)     mexErrMsgTxt("y should have as many elements as there are lines in the data");
+	if(test3!=interpM)   mexErrMsgTxt("interpolation locations (x,y) do not have the same size");
+	if(test4!=interpN)   mexErrMsgTxt("interpolation locations (x,y) do not have the same size");
+	if(nrhs==6){
+		char* method_string = NULL;
+		FetchString(&method_string,METHOD);
+		if(strcmp(method_string,"nearest")==0)      method = 0;
+		else if(strcmp(method_string,"linear")==0)  method = 1;
+		else if(strcmp(method_string,"cubic")==0)   method = 2;
+		else{
+			mexErrMsgTxt("Method not supported yet");
+		}
+
+		mxFree(method_string);
+	}
+
+	/*Check inputs*/
+	if(true){
+		for(int i=0;i<interpM*interpN;i++){
+			if(isnan(interpx[i])) mexErrMsgTxt("NaN found in interpx");
+			if(isnan(interpy[i])) mexErrMsgTxt("NaN found in interpy");
+		}
+	}
+	if(method==3){
+		if(datax[1]-datax[0]<0) mexErrMsgTxt("x needs to be increasing for cubic interpolation");
+		if(datay[1]-datay[0]<0) mexErrMsgTxt("y needs to be increasing for cubic interpolation");
+	}
+
+	/*Allocate output*/
+	interp=(double*)mxMalloc(interpM*interpN*sizeof(double));
+
+	/*Multithreaded core*/
+	AppStruct usr;
+	usr.dataM   = dataM;
+	usr.dataN   = dataN;
+	usr.datax   = datax;
+	usr.datay   = datay;
+	usr.data    = data;
+	usr.interpN = interpM*interpN;
+	usr.interpx = interpx;
+	usr.interpy = interpy;
+	usr.interp  = interp;
+	usr.method  = method;
+	LaunchThread(InterpFromGridt,(void*)&usr,num_threads);
+
+	/*Write output vector*/
+	WriteMatrix(INTERP,interp,interpM,interpN);
+
+	/*Clean-up and return*/
+	/*Do not erase pointers!*/
+	return;
+}/*}}}*/
+
+/*InterpFromGridt{{{*/
+void* InterpFromGridt(void* vpthread_handle){
+
+	/*recover this thread info*/
+	pthread_handle *handle = (pthread_handle*)vpthread_handle;
+	int my_thread   = handle->my_thread;
+	int num_threads = handle->num_threads;
+
+	/*Recover struct*/
+	AppStruct *usr = (AppStruct*)handle->usr;
+	int     dataM   = usr->dataM;
+	int     dataN   = usr->dataN;
+	double *datax   = usr->datax;
+	double *datay   = usr->datay;
+	double *data    = usr->data;
+	int     interpN = usr->interpN;
+	double *interpx = usr->interpx;
+	double *interpy = usr->interpy;
+	double *interp  = usr->interp;
+	int     method = usr->method;
+
+	/*Intermediary*/
+	double xprime,yprime;
+	double x,y,x0,x1,x2,x3,y0,y1,y2,y3;
+	double Q11,Q12;
+	double Q21,Q22;
+	double A[16];
+	int    m,n,m0,m1,m2,m3,n0,n1,n2,n3;
+	int    oldm=-1,oldn=-1;
+
+	/*Is our matrix inverted?*/
+	bool invertx = (datax[1]-datax[0])<0 ? true:false;
+	bool inverty = (datay[1]-datay[0])<0 ? true:false;
+
+	for(int idx=my_thread;idx<interpN;idx+=num_threads){
+
+		x=interpx[idx];
+		y=interpy[idx];
+
+		/*Find indices m and n into y and x, for which  y(m)<=y_grids<=y(m+1) and x(n)<=x_grid<=x(n+1)*/
+		if(invertx) binary_search_decreasing(&n,x,datax,dataN);
+		else        binary_search_increasing(&n,x,datax,dataN);
+		if(inverty) binary_search_decreasing(&m,y,datay,dataM);
+		else        binary_search_increasing(&m,y,datay,dataM);
+
+		if(n>=0 && n<dataN && m>=0 && m<dataM){
+
+			/*    Q12             Q22
+			 * y2 x---------+-----x
+			 *    |         |     |
+			 *    |         |P    |
+			 *    |---------+-----|
+			 *    |         |     |
+			 *    |         |     |
+			 * y1 x---------+-----x Q21
+			 *    x1                 x2       
+			 *
+			 */
+			if(invertx){
+				n1=n+1; n2=n;
+			}
+			else{
+				n1=n; n2=n+1;
+			}
+			if(inverty){
+				m1=m+1; m2=m;
+			}
+			else{
+				m1=m; m2=m+1;
+			}
+
+			x1 = datax[n1]; x2 = datax[n2];
+			y1 = datay[m1]; y2 = datay[m2];
+
+			if(method==0){
+				/*Nearest neighbor interpolation*/
+				if(x > (x1+x2)/2.){
+					if(y > (y1+y2)/2.)
+						interp[idx] = f(m2,n2);
+					else
+						interp[idx] = f(m1,n2);
+					}
+				else{
+					if(y > (y1+y2)/2.)
+						interp[idx] = f(m2,n1);
+					else
+						interp[idx] = f(m1,n1);
+				}
+				continue;
+			}
+			else if(method==1){
+				/*Bilinear interpolation*/
+				if(Q11==-9999 || Q12==-9999 || Q21==-9999 || Q22==-9999){
+					interp[idx] = -9999;
+					continue;
+				}
+
+				interp[idx] =
+				  +f(m1,n1)*(x2-x)*(y2-y)/((x2-x1)*(y2-y1))
+				  +f(m1,n2)*(x-x1)*(y2-y)/((x2-x1)*(y2-y1))
+				  +f(m2,n1)*(x2-x)*(y-y1)/((x2-x1)*(y2-y1))
+				  +f(m2,n2)*(x-x1)*(y-y1)/((x2-x1)*(y2-y1));
+			}
+			else{
+				/*Bicubic interpolation*/
+				if(invertx){n0=n+2; n3=n-1;}
+				else{ n0=n-1; n3=n+2; }
+				if(inverty){ m0=m+2; m3=m-1; }
+				else{ m0=m-1; m3=m+2; }
+
+				if(n0<0 || n3>=dataN || m0<0 || m3>=dataM){
+					interp[idx] = -9999.;
+					continue;
+				}
+
+				/*Local coordinates (between 0 and 1)*/
+				xprime = (x - datax[n1])/(datax[n2]-datax[n1]);
+				yprime = (y - datay[m1])/(datay[m2]-datay[m1]);
+
+				/*Get derivatives at current pixel*/
+				if(oldm!=m || oldn!=n){
+					dataderivatives(&A[0],datax,datay,data,dataM,dataN,m0,m1,m2,m3,n0,n1,n2,n3);
+					oldm = m;
+					oldn = n;
+				}
+
+				double a00 = A[0];
+				double a10 = A[4];
+				double a20 = -3*A[0]+3*A[1]-2*A[4]-A[5];
+				double a30 = 2*A[0]-2*A[1]+A[4]+A[5];
+				double a01 = A[8];
+				double a11 = A[12];
+				double a21 = -3*A[8]+3*A[9]-2*A[12]-A[13];
+				double a31 = 2*A[8]-2*A[9]+A[12]+A[13];
+				double a02 = -3*A[0]+3*A[2]-2*A[8]-A[10];
+				double a12 = -3*A[4]+3*A[6]-2*A[12]-A[14];
+				double a22 = 9*A[0]-9*A[1]-9*A[2]+9*A[3]+6*A[4]+3*A[5]-6*A[6]-3*A[7]+6*A[8]-6*A[9]+3*A[10]-3*A[11]+4*A[12]+2*A[13]+2*A[14]+A[15];
+				double a32 =-6*A[0]+6*A[1]+6*A[2]-6*A[3]-3*A[4]-3*A[5]+3*A[6]+3*A[7]-4*A[8]+4*A[9]-2*A[10]+2*A[11]-2*A[12]-2*A[13]-A[14]-A[15];
+				double a03 = 2*A[0]-2*A[2]+A[8]+A[10];
+				double a13 = 2*A[4]-2*A[6]+A[12]+A[14];
+				double a23 =-6*A[0]+6*A[1]+6*A[2]-6*A[3]-4*A[4]-2*A[5]+4*A[6]+2*A[7]-3*A[8]+3*A[9]-3*A[10]+3*A[11]-2*A[12]-A[13]-2*A[14]-A[15] ;
+				double a33 = 4*A[0]-4*A[1]-4*A[2]+4*A[3]+2*A[4]+2*A[5]-2*A[6]-2*A[7]+2*A[8]-2*A[9]+2*A[10]-2*A[11]+A[12]+A[13]+A[14]+A[15];
+
+				x1= xprime;
+				x2= x1*x1;
+				x3= x2*x1;
+				y1= yprime;
+				y2= y1*y1;
+				y3= y2*y1;
+				interp[idx] = (a00+a01*y1+a02*y2+a03*y3)+(a10+a11*y1+a12*y2+a13*y3)*x1+(a20+a21*y1+a22*y2+a23*y3)*x2+(a30+a31*y1+a32*y2+a33*y3)*x3;
+			}
+		}
+		else{
+			interp[idx] = -9999.;
+		}
+	}
+	//if(my_thread==0) printf("\r   interpolation progress = %5.1f%%\n",100.);
+
+	return NULL;
+}/*}}}*/
+/*binary_search_increasing {{{*/
+bool binary_search_increasing(int* pindex,double target,double* list,int n){
+
+	/*output*/
+	int  index;       //index, if found
+	bool found=false; //found=0 if target is not found, 1 otherwise.
+
+	/*intermediary*/
+	int n0 = 0;
+	int n1 = int(n/2);
+	//int n1 = int((target-list[0])/(list[1]-list[0]));
+	int n2 = n-1;
+
+	if(target<list[n0]){
+		found  = true;
+		index  = -1;
+	}
+	else if(target>list[n2]){
+		found  = true;
+		index  = n;
+	}
+	else{
+		while(!found){
+			/*did we find the target?*/
+			if(list[n1]<=target && list[n1+1]>=target){
+				found = true;
+				index = n1;
+				break;
+			}
+			if(target < list[n1]){
+				n2 = n1;
+				n1 = n0 + int((n2-n0)/2);
+			}
+			else{
+				n0 = n1;
+				n1 = n0 + int((n2-n0)/2);
+			}
+		}
+	}
+
+	/*Assign output pointers:*/
+	*pindex=index;
+	
+	/*Return result: */
+	return found;
+}/*}}}*/
+/*binary_search_decreasing{{{*/
+bool binary_search_decreasing(int* pindex,double target,double* list,int n){
+
+	/*output*/
+	int  index;       //index, if found
+	bool found=false; //found=0 if target is not found, 1 otherwise.
+
+	/*intermediary*/
+	int n0 = 0;
+	int n1 = int(n/2);
+	//int n1 = int((target-list[0])/(list[0]-list[1]));
+	int n2 = n-1;
+
+	if (target>list[n0]){
+		found  = true;
+		index  = -1;
+	}
+	else if(target<list[n2]){
+		found  = true;
+		index  = n;
+	}
+	else{
+		while(!found){
+			/*did we find the target?*/
+			if(list[n1]>=target && list[n1+1]<=target){
+				found = true;
+				index = n1;
+				break;
+			}
+			if(target > list[n1]){
+				n2 = n1;
+				n1 = n0 + int((n2-n0)/2);
+			}
+			else{
+				n0 = n1;
+				n1 = n0 + int((n2-n0)/2);
+			}
+		}
+	}
+
+	/*Assign output pointers:*/
+	*pindex=index;
+
+	/*Return result: */
+	return found;
+}/*}}}*/
+/*dataderivatives{{{*/
+void  dataderivatives(double* A,double* x,double* y,double* data,int dataM,int dataN,
+			int m0, int m1,int m2,int m3, int n0, int n1,int n2,int n3){
+
+   /* i+1 +  +-------+ f(1,1)
+    *     |  |       |
+    *     |  |f(0,0) |
+    *   i +  +-------+ f(1,0)
+    *     +--+-------+-----> x
+    *        j       j+1
+	 */
+
+
+   /*Function at corners*/
+   A[0] = f(m1,n1); // f(0,0)
+   A[1] = f(m1,n2); // f(1,0)
+   A[2] = f(m2,n1); // f(0,1)
+   A[3] = f(m2,n2); // f(1,1)
+
+   /*x component of the gradient*/
+   A[4] = .5*(f(m1,n2) - f(m1,n0));///(x[n2]-x[n0]); // dfdx(0,0)
+   A[5] = .5*(f(m1,n3) - f(m1,n1));///(x[n3]-x[n1]); // dfdx(1,0)
+   A[6] = .5*(f(m2,n2) - f(m2,n0));///(x[n2]-x[n0]); // dfdx(0,1)
+   A[7] = .5*(f(m2,n3) - f(m2,n1));///(x[n3]-x[n1]); // dfdx(1,1)
+
+   /*y component of the gradient*/
+   A[ 8] = .5*(f(m2,n1) - f(m0,n1));///(y[m2]-y[m0]); // dfdy(0,0)
+   A[ 9] = .5*(f(m2,n2) - f(m0,n2));///(y[m2]-y[m0]); // dfdy(1,0)
+   A[10] = .5*(f(m3,n1) - f(m1,n1));///(y[m3]-y[m1]); // dfdy(0,1)
+   A[11] = .5*(f(m3,n2) - f(m1,n2));///(y[m3]-y[m1]); // dfdy(1,1)
+
+   /*cross-component of the gradient*/
+   A[12] = .25*( (f(m2,n2) - f(m2,n0)) - (f(m0,n2) - f(m0,n0)) );///( (x[n2]-x[n0])*(y[m2]-y[m0]) ); // d2f/dxdy (0,0)
+   A[13] = .25*( (f(m2,n3) - f(m2,n1)) - (f(m0,n3) - f(m0,n1)) );///( (x[n3]-x[n1])*(y[m2]-y[m0]) ); // d2f/dxdy (1,0)
+   A[14] = .25*( (f(m3,n2) - f(m3,n0)) - (f(m1,n2) - f(m1,n0)) );///( (x[n2]-x[n0])*(y[m3]-y[m1]) ); // d2f/dxdy (0,1)
+   A[15] = .25*( (f(m3,n3) - f(m3,n1)) - (f(m1,n3) - f(m1,n1)) );///( (x[n3]-x[n1])*(y[m3]-y[m1]) ); // d2f/dxdy (1,1)
+}/*}}}*/
+/*LaunchThread{{{*/
+void LaunchThread(void* function(void*), void* usr,int num_threads){
+
+	int i;
+	int            *status  = NULL;
+	pthread_t      *threads = NULL;
+	pthread_handle *handles = NULL;
+
+	/*dynamically allocate: */
+	threads=(pthread_t*)mxMalloc(num_threads*sizeof(pthread_t));
+	handles=(pthread_handle*)mxMalloc(num_threads*sizeof(pthread_handle));
+
+	for(i=0;i<num_threads;i++){
+		handles[i].usr=usr;
+		handles[i].my_thread  =i;
+		handles[i].num_threads=num_threads;
+	}
+
+	if(num_threads==1){
+		function(handles);
+	}
+	else{
+		for(i=0;i<num_threads;i++){
+			if(pthread_create(threads+i,NULL,function,(void*)(handles+i))){
+				mexErrMsgTxt("pthread_create error");
+			}
+		}
+		for(i=0;i<num_threads;i++){
+			if(pthread_join(threads[i],(void**)&status)){
+				mexErrMsgTxt("pthread_join error");
+			}
+		}
+	}
+
+	/*Free resources:*/
+	mxFree(threads);
+	mxFree(handles);
+}/*}}}*/
+/*FetchMatrixPointer {{{*/
+void FetchMatrixPointer(double** pmatrix,int *pM,int *pN,const mxArray* dataref){
+
+	double *matrix=NULL;
+	double *values=NULL;
+	int     N,M;
+
+	if(mxIsEmpty(dataref) ){
+		M=N=0;
+		matrix=NULL;
+	}
+	else if (mxIsDouble(dataref) ){
+		M=mxGetM(dataref);
+		N=mxGetN(dataref);
+		matrix=(double*)mxGetPr(dataref);
+	}
+	else{
+		mexErrMsgTxt("matrix type not supported");
+	}
+
+	*pmatrix=matrix;
+	if (pN)*pN=N;
+	if (pM)*pM=M;
+}/*}}}*/
+/*FetchVectorPointer {{{*/
+void FetchVectorPointer(double** pvector,int *pN,const mxArray* dataref){
+
+	double *vector=NULL;
+	double *values=NULL;
+	int     N;
+
+	if(mxIsEmpty(dataref) ){
+		N=0;
+		vector=NULL;
+	}
+	else if (mxIsDouble(dataref) ){
+		if(mxGetM(dataref)!=1 && mxGetN(dataref)!=1){
+			mexErrMsgTxt("input is a matrix and not a vector");
+		}
+		N=mxGetN(dataref)*mxGetM(dataref);
+		vector=(double*)mxGetPr(dataref);
+	}
+	else{
+		mexErrMsgTxt("vector type not supported");
+	}
+
+	*pvector=vector;
+	if (pN)*pN=N;
+}/*}}}*/
+/*FetchString{{{*/
+void FetchString(char** pstring,const mxArray* dataref){
+
+	char* outstring=NULL;
+
+	/*Ok, the string should be coming directly from the matlab workspace: */
+	if (!mxIsClass(dataref,"char")){
+		mexErrMsgTxt("input data_type is not a string!");
+	}
+	else{
+		/*Recover the string:*/
+		int stringlen;
+
+		stringlen = mxGetM(dataref)*mxGetN(dataref)+1;
+		outstring = (char*)mxMalloc(stringlen*sizeof(char));
+		mxGetString(dataref,outstring,stringlen);
+	}
+
+	/*Assign output pointers:*/
+	*pstring=outstring;
+	return;
+}/*}}}*/
+/*WriteMatrix {{{*/
+void WriteMatrix(mxArray** pdataref,double* matrix,int M,int N){
+
+	mxArray* dataref=NULL;
+
+	if(matrix){
+		/*data is a double* pointer. set pointer and invert sizes*/
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+		mxSetM(dataref,(mwSize)M); 
+		mxSetN(dataref,(mwSize)N);
+		mxSetPr(dataref,(double*)matrix);
+	}
+	else{
+		dataref = mxCreateDoubleScalar(0.0);
+	}
+	*pdataref=dataref;
+}
+/*}}}*/
+/*WriteVector {{{*/
+void WriteVector(mxArray** pdataref,double* vector,int N){
+
+	mxArray* dataref=NULL;
+
+	if(vector){
+		/*data is a double* pointer. Copy into a vector: */
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+		mxSetM(dataref,(mwSize)N);
+		mxSetN(dataref,(mwSize)1);
+		mxSetPr(dataref,(double*)vector);
+	}
+	else{
+		dataref = mxCreateDoubleScalar(0.0);
+	}
+	*pdataref=dataref;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/Makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/Makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/Makefile	(revision 27955)
@@ -0,0 +1,2 @@
+all:
+	/Applications/MATLAB_R2019a.app/bin/mex InterpFromGrid.cpp
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpAdusumilliIceShelfMelt.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpAdusumilliIceShelfMelt.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpAdusumilliIceShelfMelt.m	(revision 27955)
@@ -0,0 +1,38 @@
+function output = interpAdusumilliIceShelfMelt(X,Y)
+%INTERPADUSUMILLIICESHELFMELT - imports basal melt rates from (Adusumilli et al., 2020).
+%   About the data: "Average basal melt rates for Antarctic ice shelves for the 2010–2018 period at 
+%   high spatial resolution, estimated using CryoSat-2 data. This data file was last updated on 2020-06-11."
+%
+%   Citation: Adusumilli, Susheel; Fricker, Helen A.; Medley, Brooke C.; Padman, Laurie; Siegfried, Matthew R. (2020). 
+%   Data from: Interannual variations in meltwater input to the Southern Ocean from Antarctic ice shelves. 
+%   UC San Diego Library Digital Collections. https://doi.org/10.6075/J04Q7SHT
+%
+%   Usage:
+%      output = interpAdusumilliIceShelfMelt(X,Y)
+
+% define path and filename for this machine
+switch (oshostname()),
+	case {'totten'}
+		filename ='/totten_1/ModelData/Antarctica/Adusumilli2020IceShelfMelt/ANT_iceshelf_melt_rates_CS2_2010-2018_v0.h5';
+	otherwise
+		error('hostname not supported yet');
+end
+
+disp(['   -- Adusumilli Ice Shelf Melt: loading melt data']);
+% read in coordinates:
+%	coordinates are in Polar Stereographic projection 'PS-71'
+xdata = double(h5read(filename,'/x'));
+ydata = double(h5read(filename,'/y'));
+
+% read in data:
+% 'Basal melt rate (2010–2018), in meters of ice equivalent per year, positive is melting'
+% 'For ice shelf areas where CryoSat-2 data were not available, w_b_interp provides the 
+%  mean melt rate measured at the same ice draft as the grid cell elsewhere on the ice shelf. 
+%  Ice draft was estimated using BedMachine data.'
+data = double(h5read(filename,'/w_b'));
+data_interp = double(h5read(filename,'/w_b_interp'));
+data = data';
+disp(['   -- Adusumilli Ice Shelf Melt: interpolating melt data']);
+data(isnan(data)) = data_interp(isnan(data));
+output = InterpFromGrid(xdata,ydata,data,X(:),Y(:));
+output = reshape(output,size(X,1),size(X,2));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpArcticdem.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpArcticdem.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpArcticdem.m	(revision 27955)
@@ -0,0 +1,68 @@
+function sout = interpArcticdem(X,Y),
+
+switch oshostname(),
+	case {'ronne'}
+		path='/home/ModelData/Greenland/ArcticDemMosaic/arcticdem_mosaic_100m_v3.0.tif';
+	case {'totten'}
+		path='/totten_1/ModelData/Greenland/ArcticDemMosaic/arcticdem_mosaic_100m_v3.0.tif';
+	otherwise
+		error('machine not supported yet');
+end
+
+usemap = 0;
+if license('test','map_toolbox')==0,
+	disp('WARNING: map toolbox not installed, trying house code');
+	usemap = 0;
+elseif license('checkout','map_toolbox')==0
+	disp('WARNING: map toolbox not available (checkout failed), trying house code');
+	usemap = 0;
+end
+
+if usemap,
+	[data,R] = geotiffread(path);
+	data=double(flipud(data));
+	xdata=R.XLimWorld(1):R.DeltaX:R.XLimWorld(2); xdata=xdata(:);
+	xdata =(xdata(1:end-1)+xdata(2:end))/2;
+	ydata=R.YLimWorld(2):R.DeltaY:R.YLimWorld(1); ydata=flipud(ydata(:));
+	ydata =(ydata(1:end-1)+ydata(2:end))/2;
+else
+
+	%Get image info
+	Tinfo = imfinfo(path);
+	N     = Tinfo.Width;
+	M     = Tinfo.Height;
+	dx    = Tinfo.ModelPixelScaleTag(1);
+	dy    = Tinfo.ModelPixelScaleTag(2);
+	minx  = Tinfo.ModelTiepointTag(4);
+	maxy  = Tinfo.ModelTiepointTag(5);
+
+	%Generate vectors
+	xdata = minx + dx/2 + ((0:N-1).*dx);
+	ydata = maxy - dy/2 - ((M  -1:-1:0).*dy);
+	ydata = fliplr(ydata);
+
+	%Get pixels we are interested in
+	offset=2;
+	xmin=min(X(:)); xmax=max(X(:));
+	posx=find(xdata<=xmax);
+	id1x=max(1,find(xdata>=xmin,1)-offset);
+	id2x=min(numel(xdata),posx(end)+offset);
+
+	if 0,
+		ymin=min(Y(:)); ymax=max(Y(:));
+		posy=find(ydata<=ymax);
+		id1y=max(1,find(ydata>=ymin,1)-offset);
+		id2y=min(numel(ydata),posy(end)+offset);
+	else
+		ymin=min(Y(:)); ymax=max(Y(:));
+		posy=find(ydata>=ymin);
+		id1y=max(1,find(ydata<=ymax,1)-offset);
+		id2y=min(numel(ydata),posy(end)+offset);
+	end
+
+	data  = double(imread(path,'PixelRegion',{[id1y,id2y],[id1x,id2x]}));
+	xdata=xdata(id1x:id2x);
+	ydata=ydata(id1y:id2y);
+end
+
+sout = InterpFromGrid(xdata,ydata,data,X,Y);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBamber2001.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBamber2001.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBamber2001.m	(revision 27955)
@@ -0,0 +1,36 @@
+function [bedout thicknessout] = interpBamber2001(X,Y),
+
+switch oshostname(),
+	case {'murdo','thwaites','astrid'}
+		bamber2001bedpath ='/u/astrid-r1b/ModelData/BamberDEMGreenland5km/bedrock.mat';
+		bamber2001thxpath ='/u/astrid-r1b/ModelData/BamberDEMGreenland5km/thickness.mat';
+	case {'ronne'}
+		bamber2001bedpath ='/home/ModelData/Greenland/Bamber2001/bedrock.mat';
+		bamber2001thxpath ='/home/ModelData/Greenland/Bamber2001/thickness.mat';
+	case {'totten'}
+		bamber2001bedpath ='/totten_1/ModelData/Greenland/Bamber2001/bedrock.mat';
+		bamber2001thxpath ='/totten_1/ModelData/Greenland/Bamber2001/thickness.mat';
+	otherwise
+		error('machine not supported yet');
+end
+
+verbose = 0;
+
+%Convert to Bamber's projections
+if verbose, disp('   -- Bamber2001: converting coordinates'); end
+[LAT,  LON  ] = xy2ll(double(X(:)),double(Y(:)),+1,45,70);
+[x3971,y3971] = ll2xy(LAT,LON  ,+1,39,71);
+
+if verbose, disp('   -- Bamber2001: loading bed'); end
+load(bamber2001bedpath);
+if verbose, disp('   -- Bamber2001: interpolating bed'); end
+bedout = InterpFromGrid((x_m(1:end-1)+x_m(2:end))/2,(y_m(1:end-1)+y_m(2:end))/2,bedrock,x3971,y3971);
+bedout = reshape(bedout,size(X,1),size(X,2));
+
+if nargout>1
+	if verbose, disp('   -- Bamber2001: loading thickness'); end
+	load(bamber2001thxpath);
+	if verbose, disp('   -- Bamber2001: interpolating thickness'); end
+	thicknessout = InterpFromGrid((x_m(1:end-1)+x_m(2:end))/2,(y_m(1:end-1)+y_m(2:end))/2,thickness,x3971,y3971);
+	thicknessout = reshape(thicknessout,size(X,1),size(X,2));
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBamber2009.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBamber2009.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBamber2009.m	(revision 27955)
@@ -0,0 +1,21 @@
+function demout = interpBamber2009(X, Y)
+%INTERPBAMBER2009 - interpolate surface dem of Bamber 2009
+%
+%   Surface dem Nominal year 2004 (WGS84, no firn correction)
+%
+%   Usage:
+%      demout = interpBamber2009(X, Y)
+
+switch oshostname(),
+	case {'totten'}
+		bamber2009path ='/totten_1/ModelData/Antarctica/Bamber2009DEM/krigged_dem_nsidc.mat';
+	otherwise
+		error('machine not supported yet');
+end
+
+%Convert to Bamber's projections
+%disp('   -- Bamber2009: loading dem'); 
+load(bamber2009path);
+
+disp('   -- Bamber2009: interpolating dem (WGS84)');
+demout = InterpFromGrid(x, y, surfacedem, X, Y);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBamber2013.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBamber2013.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBamber2013.m	(revision 27955)
@@ -0,0 +1,52 @@
+function output = interpBamber2013(X,Y,string),
+%INTERPBAMBER2013 - interpolate Bamber 2013 data
+%
+%   Available data:
+%      BedrockElevation
+%      SurfaceElevation
+%      IceThickness
+%      SurfaceRMSE
+%      BedrockError
+%      LandMask (Land mask, 0=ocean, 1=land, 2=ice sheet, 3=non-Greenlandic land, 4=ice shelf)
+%      NumberAirbornePoints
+%      Geoid
+%      BedrockChangeMask
+%      IceShelfSourceMask
+%      BedrockElevation_unprocessed
+%      IceThickness_unprocessed
+%      BathymetryDataMask
+
+switch oshostname(),
+	case {'murdo','thwaites','astrid'}
+		bamber2013nc='/u/astrid-r1b/morlighe/issmjpl/proj-morlighem/DatasetGreenland/Data/Bamber2013/Greenland_bedrock_topography_V3.nc';
+	case {'ronne'}
+		bamber2013nc='/home/ModelData/Greenland/Bamber2013/Greenland_bedrock_topography_V3.nc';
+	case {'totten'}
+		bamber2013nc='/totten_1/ModelData/Greenland/Bamber2013/Greenland_bedrock_topography_V3.nc';
+	otherwise
+		error('machine not supported yet');
+end
+verbose = 0;
+
+if nargin==2,
+	string = 'BedrockElevation';
+end
+
+%Convert to Bamber's projections
+if verbose, disp('   -- Bamber2013: converting coordinates'); end
+[LAT,  LON  ] = xy2ll(double(X(:)),double(Y(:)),+1,45,70);
+[x3971,y3971] = ll2xy(LAT,LON  ,+1,39,71);
+
+if verbose, disp('   -- Bamber2013: loading coordinates'); end
+xdata = double(ncread(bamber2013nc,'projection_x_coordinate'));%*1000;
+ydata = double(ncread(bamber2013nc,'projection_y_coordinate'));%*1000;
+
+if verbose, disp(['   -- Bamber2013: loading ' string]); end
+data  = double(ncread(bamber2013nc,string))';
+if verbose, disp(['   -- Bamber2013: interpolating ' string]); end
+if strcmpi(string,'LandMask');
+	output = InterpFromGrid(xdata,ydata,data,x3971,y3971,'nearest');
+else
+	output = InterpFromGrid(xdata,ydata,data,x3971,y3971);
+end
+output = reshape(output,size(X,1),size(X,2));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBedmachineAntarctica.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBedmachineAntarctica.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBedmachineAntarctica.m	(revision 27955)
@@ -0,0 +1,165 @@
+function output = interpBedmachineAntarctica(X,Y,string,method,ncdate)
+%INTERPBEDMACHINEANTARCTICA - interpolate BedMachine data onto X and Y
+%
+%   Examples:
+%      bed       = interpBedmachineAntarctica(X,Y,'bed');
+%      surface   = interpBedmachineAntarctica(X,Y,'surface');
+%      thickness = interpBedmachineAntarctica(X,Y,'thickness');
+%      mask      = interpBedmachineAntarctica(X,Y,'mask');
+%      mask      = interpBedmachineAntarctica(X,Y,'mask','nearest','../Data/BedMachineAntarctica_2020-07-15_v02.nc');
+%
+%   - mask:   0 ocean, 1 land (ice free), 2 grounded ice, 3 floating ice
+%   - source: 1 IBCSO/RTopo-2, 2 MC, 3 interpolation, 4 hydrostatic eq, 
+%             5 Streamline diffusion, 6 Gravity inversion
+%   - optional 4th input argument: interpolation method.
+%             Supported interpolation methos: 'linear','cubic','nearest'
+%   - optional 5th input argument: path to dataset.
+%
+% Version 11/30/2018 Mathieu Morlighem mmorligh@uci.edu
+
+if nargin<3, string = 'bed'; end
+if nargin<4
+	if strcmp(string,'mask') | strcmp(string,'source')
+		method='nearest'; % default method
+	else
+		method='cubic'; % default method
+	end
+end
+if nargin<5
+	ncdate='2020-07-15'; %BedMachine v2
+	ncdate='v3.5';       %Official v3 release
+end
+basename = 'BedMachineAntarctica';
+
+if nargin==5
+	ncfile = ncdate;
+else
+	%List of common paths to try
+	paths = {...
+		['/u/astrid-r1b/ModelData/BedMachine/' basename '-' ncdate '.nc'],...
+		['/home/ModelData/Antarctica/BedMachine/' basename '-' ncdate '.nc'],...
+		['/totten_1/ModelData/Antarctica/BedMachine/' basename '-' ncdate '.nc'],...
+		['/Users/larour/ModelData/BedMachine/' basename '-' ncdate '.nc'],...
+		['./' basename '-' ncdate '.nc'],...
+		};
+
+	found = 0;
+	for i=1:numel(paths)
+		if exist(paths{i},'file')
+			ncfile = paths{i};
+			found = 1;
+			break;
+		end
+	end
+
+	if ~found
+		error(['Could not find ' basename '-' ncdate '.nc, you can add the path to the list or provide its path as a 5th argument']);
+	end
+end
+
+disp(['   -- BedMachine Antarctica version: ' ncdate]);
+xdata = double(ncread(ncfile,'x'));
+ydata = double(ncread(ncfile,'y'));
+
+offset=2;
+
+xmin=min(X(:)); xmax=max(X(:));
+posx=find(xdata<=xmax);
+if isempty(posx), posx=numel(xdata); end
+id1x=max(1,find(xdata>=xmin,1)-offset);
+id2x=min(numel(xdata),posx(end)+offset);
+
+ymin=min(Y(:)); ymax=max(Y(:));
+posy=find(ydata>=ymin);
+if isempty(posy), posy=numel(ydata); end
+id1y=max(1,find(ydata<=ymax,1)-offset);
+id2y=min(numel(ydata),posy(end)+offset);
+
+if strcmp(string,'icemask'),
+	disp(['   -- BedMachine Antarctica: loading ' string]);
+	%data  = double(ncread(ncfile,'mask'))';
+	data  = double(ncread(ncfile,'mask',[id1x id1y],[id2x-id1x+1 id2y-id1y+1],[1 1]))';
+	xdata=xdata(id1x:id2x);
+	ydata=ydata(id1y:id2y);
+	%ice ocean interface is between 0 and 3, so we might get some 1 by interpolating
+	data(find(data==3))=0;
+else
+	disp(['   -- BedMachine Antarctica: loading ' string]);
+	%data  = double(ncread(ncfile,string))';
+	data  = double(ncread(ncfile,string,[id1x id1y],[id2x-id1x+1 id2y-id1y+1],[1 1]))';
+	xdata=xdata(id1x:id2x);
+	ydata=ydata(id1y:id2y);
+end
+
+disp(['   -- BedMachine Antarctica: interpolating ' string]);
+disp(['       -- Interpolation method: ' method]);
+if strcmp(string,'mask') | strcmp(string,'source'),
+	%Need nearest neighbor to avoid interpolation between 0 and 2
+	output = InterpFromGrid(xdata,ydata,data,double(X),double(Y),'nearest');
+	%tic
+	%output = FastInterp(xdata,ydata,data,X,Y,'nearest');
+	%toc
+else
+	%disp('InterpFromGrid');
+	%tic
+	%output = InterpFromGrid(xdata,ydata,data,double(X),double(Y),'cubic'); 
+	output = InterpFromGrid(xdata,ydata,data,double(X),double(Y),method); % now the interpolation method can be defined by the user
+	%toc
+	%disp('FastInterp');
+	%tic
+	%output = FastInterp(xdata,ydata,data,X,Y,'bilinear');
+	%toc
+end
+
+end
+function zi = FastInterp(x,y,data,xi,yi,method)
+
+	%get data size
+	[M N] = size(data);
+
+	% Get X and Y library array spacing
+	ndx = 1/(x(2)-x(1));    ndy = 1/(y(2)-y(1));
+	% Begin mapping xi and yi vectors onto index space by subtracting library
+	% array minima and scaling to index spacing
+
+	xi = (xi - x(1))*ndx;       yi = (yi - y(1))*ndy;
+
+	% Fill Zi with NaNs
+	zi = NaN(size(xi));
+
+	if strcmpi(method,'nearest'),
+		% Find the nearest point in index space
+		rxi = round(xi)+1;  ryi = round(yi)+1;
+		% Find points that are in X,Y range
+		flag = rxi>0 & rxi<=N & ~isnan(rxi) & ryi>0 & ryi<=M & ~isnan(ryi);
+		% Map subscripts to indices
+		ind = ryi + M*(rxi-1);
+		zi(flag) = data(ind(flag));
+
+	else %Bilinear
+
+		% Transform to unit square
+		fxi = floor(xi)+1;  fyi = floor(yi)+1; % x_i and y_i
+		dfxi = xi-fxi+1;    dfyi = yi-fyi+1;   % Location in unit square
+
+		% flagIn determines whether the requested location is inside of the data arrays
+		flagIn = fxi>0 & fxi<N & ~isnan(fxi) & fyi>0 & fyi<M & ~isnan(fyi);
+
+		%Toss all out-of-bounds variables now to save time
+		fxi  = fxi(flagIn);  fyi  = fyi(flagIn);
+		dfxi = dfxi(flagIn); dfyi = dfyi(flagIn);
+
+		%Find bounding vertices
+		ind1 = fyi + M*(fxi-1);     % indices of (  x_i  ,  y_i  )
+		ind2 = fyi + M*fxi;         % indices of ( x_i+1 ,  y_i  )
+		ind3 = fyi + 1 + M*fxi;     % indices of ( x_i+1 , y_i+1 )
+		ind4 = fyi + 1 + M*(fxi-1); % indices of (  x_i  , y_i+1 )
+
+		% Bilinear interpolation
+		zi(flagIn) = ...
+			data(ind1).*(1-dfxi).*(1-dfyi) + ...
+			data(ind2).*dfxi.*(1-dfyi) + ...
+			data(ind4).*(1-dfxi).*dfyi + ...
+			data(ind3).*dfxi.*dfyi;
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBedmachineGreenland.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBedmachineGreenland.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBedmachineGreenland.m	(revision 27955)
@@ -0,0 +1,151 @@
+function output = interpBedmachineGreenland(X,Y,string,method,ncdate)
+%INTERPBEDMACHINEGREENLAND - interpolate BedMachine data onto X and Y
+%
+%   Examples:
+%      bed       = interpBedmachineGreenland(X,Y,'bed');
+%      surface   = interpBedmachineGreenland(X,Y,'surface');
+%      thickness = interpBedmachineGreenland(X,Y,'thickness');
+%      mask      = interpBedmachineGreenland(X,Y,'mask');
+%      mask      = interpBedmachineGreenland(X,Y,'mask','nearest','../Data/BedMachineGreenland_2020-07-15_v03.nc');
+%
+%   - mask:   0 ocean, 1 land (ice free), 2 grounded ice, 3 floating ice
+%   - source: 1 IBCSO/RTopo-2, 2 MC, 3 interpolation, 4 hydrostatic eq, 
+%             5 Streamline diffusion, 6 Gravity inversion
+%   - optional 4th input argument: interpolation method.
+%             Supported interpolation methos: 'linear','cubic','nearest'
+%   - optional 5th input argument: path to dataset.
+%
+% Version 11/30/2018 Mathieu Morlighem mmorligh@uci.edu
+
+if nargin<3, string = 'bed'; end
+if nargin<4
+	if strcmp(string,'mask') | strcmp(string,'source')
+		method='nearest'; % default method
+	else
+		method='cubic'; % default method
+	end
+end
+if nargin<5
+	%ncdate='2015-04-27'; %BedMachine v2
+	ncdate='2017-09-25'; %BedMachine v3
+	ncdate='2020-04-14';
+	ncdate='2021-08-27';
+	ncdate='2022-03-17';
+	ncdate='2022-05-18';
+	ncdate='2022-07-28';
+	ncdate='v6.0';
+	ncdate='v6.1';
+end
+basename = 'BedMachineGreenland';
+
+if nargin==5
+	ncfile = ncdate;
+else
+	%List of common paths to try
+	paths = {...
+		['/u/astrid-r1b/ModelData/ModelData/MCdataset-' ncdate '.nc'],...
+		['/home/ModelData/Greenland/BedMachine/' basename '-' ncdate '.nc'],...
+		['/totten_1/ModelData/Greenland/BedMachine/' basename '-' ncdate '.nc'],...
+		['/Users/larour/ModelData/BedMachine/' basename '-' ncdate '.nc'],...
+		['./' basename '-' ncdate '.nc'],...
+		};
+
+	found = 0;
+	for i=1:numel(paths)
+		if exist(paths{i},'file')
+			ncfile = paths{i};
+			found = 1;
+			break;
+		end
+	end
+
+	if ~found
+		error(['Could not find ' basename '-' ncdate '.nc, you can add the path to the list or provide its path as a 5th argument']);
+	end
+end
+
+disp(['   -- BedMachine Greenland version: ' ncdate]);
+xdata = double(ncread(ncfile,'x'));
+ydata = double(ncread(ncfile,'y'));
+
+offset=2;
+
+xmin=min(X(:)); xmax=max(X(:));
+posx=find(xdata<=xmax);
+if isempty(posx), posx=numel(xdata); end
+id1x=max(1,find(xdata>=xmin,1)-offset);
+id2x=min(numel(xdata),posx(end)+offset);
+
+ymin=min(Y(:)); ymax=max(Y(:));
+posy=find(ydata>=ymin);
+if isempty(posy), posy=numel(ydata); end
+id1y=max(1,find(ydata<=ymax,1)-offset);
+id2y=min(numel(ydata),posy(end)+offset);
+
+disp(['   -- BedMachine Greenland: loading ' string]);
+data  = double(ncread(ncfile,string,[id1x id1y],[id2x-id1x+1 id2y-id1y+1],[1 1]))';
+xdata=xdata(id1x:id2x);
+ydata=ydata(id1y:id2y);
+data(find(data==-9999))=NaN;
+
+disp(['   -- BedMachine Greenland: interpolating ' string]);
+disp(['       -- Interpolation method: ' method]);
+if strcmp(string,'mask') | strcmp(string,'source'),
+	%Need nearest neighbor to avoid interpolation between 0 and 2
+	output = InterpFromGrid(xdata,ydata,data,double(X),double(Y),'nearest');
+else
+	output = InterpFromGrid(xdata,ydata,data,double(X),double(Y));
+end
+
+end
+function zi = FastInterp(x,y,data,xi,yi,method)
+
+	%get data size
+	[M N] = size(data);
+
+	% Get X and Y library array spacing
+	ndx = 1/(x(2)-x(1));    ndy = 1/(y(2)-y(1));
+	% Begin mapping xi and yi vectors onto index space by subtracting library
+	% array minima and scaling to index spacing
+
+	xi = (xi - x(1))*ndx;       yi = (yi - y(1))*ndy;
+
+	% Fill Zi with NaNs
+	zi = NaN(size(xi));
+
+	if strcmpi(method,'nearest'),
+		% Find the nearest point in index space
+		rxi = round(xi)+1;  ryi = round(yi)+1;
+		% Find points that are in X,Y range
+		flag = rxi>0 & rxi<=N & ~isnan(rxi) & ryi>0 & ryi<=M & ~isnan(ryi);
+		% Map subscripts to indices
+		ind = ryi + M*(rxi-1);
+		zi(flag) = data(ind(flag));
+
+	else %Bilinear
+
+		% Transform to unit square
+		fxi = floor(xi)+1;  fyi = floor(yi)+1; % x_i and y_i
+		dfxi = xi-fxi+1;    dfyi = yi-fyi+1;   % Location in unit square
+
+		% flagIn determines whether the requested location is inside of the data arrays
+		flagIn = fxi>0 & fxi<N & ~isnan(fxi) & fyi>0 & fyi<M & ~isnan(fyi);
+
+		%Toss all out-of-bounds variables now to save time
+		fxi  = fxi(flagIn);  fyi  = fyi(flagIn);
+		dfxi = dfxi(flagIn); dfyi = dfyi(flagIn);
+
+		%Find bounding vertices
+		ind1 = fyi + M*(fxi-1);     % indices of (  x_i  ,  y_i  )
+		ind2 = fyi + M*fxi;         % indices of ( x_i+1 ,  y_i  )
+		ind3 = fyi + 1 + M*fxi;     % indices of ( x_i+1 , y_i+1 )
+		ind4 = fyi + 1 + M*(fxi-1); % indices of (  x_i  , y_i+1 )
+
+		% Bilinear interpolation
+		zi(flagIn) = ...
+			data(ind1).*(1-dfxi).*(1-dfyi) + ...
+			data(ind2).*dfxi.*(1-dfyi) + ...
+			data(ind4).*(1-dfxi).*dfyi + ...
+			data(ind3).*dfxi.*dfyi;
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBedmap.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBedmap.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBedmap.m	(revision 27955)
@@ -0,0 +1,27 @@
+function [dataout] = interpBedmap(X,Y,string),
+%INTERPBEDMAP - interpolate bedmap data
+%
+%   Available data:
+%      1. bed                          is bed height
+%      2. thickness                    is ice thickness
+%
+%   Usage:
+%      [dataout] = interpBedmap(X,Y,string)
+
+path=[jplsvn() '/proj-morlighem/DatasetAntarctica/Data/BedMap/gridded/'];
+
+if strcmp(string,'bed'),
+	path = [path '/bed.mat'];
+	load(path);
+	x_m =(x_m(2:end)+x_m(1:end-1))/2.;
+	y_m =(y_m(2:end)+y_m(1:end-1))/2.;
+	dataout = InterpFromGrid(x_m,y_m,bed,double(X),double(Y));
+elseif strcmp(string,'thickness')
+	path = [path '/thickness.mat'];
+	load(path);
+	x_m =(x_m(2:end)+x_m(1:end-1))/2.;
+	y_m =(y_m(2:end)+y_m(1:end-1))/2.;
+	dataout = InterpFromGrid(x_m,y_m,thickness,double(X),double(Y));
+else
+	error('not supported');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBedmap2.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBedmap2.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpBedmap2.m	(revision 27955)
@@ -0,0 +1,110 @@
+function [output] = interpBedmap2(X,Y,string),
+%INTERPBEDMAP2 - interpolate bedmap2 data
+%
+%   Available data:
+%      1. bed                          is bed height
+%      2. surface                      is surface height
+%      3. thickness                    is ice thickness
+%      4. icemask_grounded_and_shelves is a mask file showing the grounding line and the extent of the floating ice shelves
+%      5. rockmask                     is a mask file showing rock outcrops
+%      6. lakemask_vostok              is a mask file showing the extent of the lake cavity of Lake Vostok
+%      7. grounded_bed_uncertainty     is the bed uncertainty grid shown in figure 12 of the manuscript
+%      8. thickness_uncertainty_5km    is the thickness uncertainty grid shown in figure 11 of the manuscript
+%      9. coverage                     is a binary grid showing the distribution of ice thickness data used in the grid of ice thickness
+%     10. gl04c_geoid_to_wgs84         is the height conversion values (as floating point) used to convert from WGS84 datum heights to
+%                                      g104c geoidal heights (to convert back to WGS84, add this grid)
+%
+%   Usage:
+%      [dataout] = interpBedmap2(X,Y,string)
+
+switch (oshostname()),
+	case {'ronne'}
+		nc = '/home/ModelData/Antarctica/BedMap2/bedmap2_bin/Bedmap2.nc';
+	case {'totten'}
+		nc = '/totten_1/ModelData/Antarctica/BedMap2/bedmap2_bin/Bedmap2.nc';
+	otherwise
+		error('hostname not supported yet');
+end
+if exist(nc,'file')
+	if strcmp(string,'thickness_uncertainty_5km')
+		xdata = double(ncread(nc,'x_5km'));
+		ydata = double(ncread(nc,'y_5km'));
+	else
+		xdata = double(ncread(nc,'x'));
+		ydata = double(ncread(nc,'y'));
+	end
+
+	offset=2;
+
+	xmin=min(X(:)); xmax=max(X(:));
+	posx=find(xdata<=xmax);
+	id1x=max(1,find(xdata>=xmin,1)-offset);
+	id2x=min(numel(xdata),posx(end)+offset);
+
+	ymin=min(Y(:)); ymax=max(Y(:));
+	posy=find(ydata>=ymin);
+	id1y=max(1,find(ydata<=ymax,1)-offset);
+	id2y=min(numel(ydata),posy(end)+offset);
+
+	data  = double(ncread(nc,string,[id1x id1y],[id2x-id1x+1 id2y-id1y+1],[1 1]))';
+	xdata=xdata(id1x:id2x);
+	ydata=ydata(id1y:id2y);
+
+	if ~strcmp(string,'coverage'),
+		data(find(data==-9999))=NaN;
+	end
+
+	if strcmpi(string,'icemask_grounded_and_shelves') | strcmpi(string,'rockmask'),
+		output = InterpFromGrid(xdata,ydata,data,double(X),double(Y),'nearest');
+	else
+		output = InterpFromGrid(xdata,ydata,data,double(X),double(Y)); % linear interpolation is default
+	end
+	return;
+
+%For Eric's computer (using Binary files)
+elseif exist('/Users/larour/ModelData/BedMap2/bedmap2_bin/','dir')
+	% ================================  OLD ===============================================
+	path='/Users/larour/ModelData/BedMap2/bedmap2_bin/'
+	if strcmp(string,'gl04c_geoid_to_wgs84'),
+		filepath = [path '/gl04c_geiod_to_wgs84.flt'];
+	else
+		filepath = [path '/bedmap2_' string '.flt'];
+	end
+	fid=fopen(filepath,'r','l');
+	data=fread(fid,[6667,6667],'float32');
+	fclose(fid);
+
+	% define grid
+	if strcmp(string,'thickness_uncertainty_5km'),
+		ncols    =1361;
+		nrows    =1361;
+		xll      =-3401000;
+		yll      =-3402000;
+		gridsize =5000;
+	else
+		ncols    =6667;
+		nrows    =6667;
+		xll      =-3333000;
+		yll      =-3333000;
+		gridsize =1000;
+	end
+	x_m=xll+(0:1:ncols-1)'*gridsize;
+	y_m=yll+(0:1:nrows-1)'*gridsize;
+
+	%Change default to NaN
+	if ~strcmp(string,'coverage'),
+		data(find(data==-9999))=NaN;
+	end
+
+	%rotate 90 degrees clockwise
+	data = rot90(data);
+
+	%Interpolate
+	if strcmpi(string,'icemask_grounded_and_shelves') | strcmpi(string,'rockmask'),
+		dataout = InterpFromGrid(x_m,y_m,data,double(X),double(Y),'nearest');
+	else
+		dataout = InterpFromGrid(x_m,y_m,data,double(X),double(Y));
+	end
+else
+	error('not supported');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpChuter2015.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpChuter2015.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpChuter2015.m	(revision 27955)
@@ -0,0 +1,13 @@
+function output = interpChuter2015(X,Y),
+
+ncfile='/home/ModelData/Antarctica/ChuterBamberIceShelfH/ChuterBamber_2015_CS2_ice_equivalent_ice_shelf_thickness_Rignot_gl.nc';
+verbose = 0;
+
+if verbose, disp('   -- Chuter2015: loading coordinates'); end
+xdata = double(ncread(ncfile,'x_dimensions'))';
+ydata = double(ncread(ncfile,'y_dimensions'))';
+
+if verbose, disp(['   -- Chuter2015: loading thickenss']); end
+data  = double(ncread(ncfile,'ice_shelf_thickness'))';
+if verbose, disp(['   -- Chuter2015: interpolating ' string]); end
+output = InterpFromGrid(xdata(1,:),ydata(:,1),data,X,Y);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpDTU19MDT.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpDTU19MDT.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpDTU19MDT.m	(revision 27955)
@@ -0,0 +1,35 @@
+function mdt = interpDTU19MDT(X,Y,varargin);
+
+switch oshostname(),
+	case {'ronne'}
+		rootname='/ronne_2/home/ModelData/Global/DTU19MDT/dtu19mdt.mat';
+	case {'totten'}
+		rootname='/totten_1/ModelData/Global/DTU19MDT/dtu19mdt.mat';
+	otherwise
+		error('machine not supported yet');
+end
+verbose = 1;
+
+if nargin==3,
+	hemisphere = varargin{1};
+else
+	hemisphere = +1;
+end
+
+if hemisphere==+1,
+	if verbose, disp('   -- DTU19MDT: convert to lat/lon using Greenland projection'); end
+	[LAT,  LON  ] = xy2ll(double(X(:)),double(Y(:)),+1,45,70);
+else
+	if verbose, disp('   -- DTU19MDT: convert to lat/lon using Antarctica projection'); end
+	[LAT,  LON  ] = xy2ll(double(X(:)),double(Y(:)),-1,0,71);
+end
+pos=find(LON<0);
+LON(pos) =360+LON(pos);
+LAT=reshape(LAT,size(X));
+LON=reshape(LON,size(X));
+
+if verbose, disp('   -- DTU19MDT: loading DTU19MDT'); end
+A=load(rootname);
+
+if verbose, disp('   -- DTU19MDT: interpolating'); end
+mdt = InterpFromGrid(A.lon_ext,A.lat_ext,A.mdt_ext,LON,LAT);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpDhdt.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpDhdt.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpDhdt.m	(revision 27955)
@@ -0,0 +1,55 @@
+function out = interpDhdt(X,Y),
+
+switch oshostname(),
+	case {'ronne'}
+		dhdtpath='/home/ModelData/Greenland/DHDT/dhdt0306.tif';
+	case {'totten'}
+		dhdtpath='/totten_1/ModelData/Greenland/DHDT/dhdt0306.tif';
+	otherwise
+		error('machine not supported yet');
+end
+
+%convert coordinates:
+[lat lon] = xy2ll(X,Y,+1);
+[X Y] = ll2utm(lat,lon,24);
+
+%Get image info
+Tinfo = imfinfo(dhdtpath);
+N     = Tinfo.Width;
+M     = Tinfo.Height;
+dx    = Tinfo.ModelPixelScaleTag(1);
+dy    = Tinfo.ModelPixelScaleTag(2);
+minx  = Tinfo.ModelTiepointTag(4);
+maxy  = Tinfo.ModelTiepointTag(5);
+
+%Generate vectors
+xdata = minx + dx/2 + ((0:N-1).*dx);
+ydata = maxy - dy/2 - ((M  -1:-1:0).*dy);
+ydata = fliplr(ydata);
+
+%Get pixels we are interested in
+offset=2;
+xmin=min(X(:)); xmax=max(X(:));
+posx=find(xdata<=xmax);
+id1x=max(1,find(xdata>=xmin,1)-offset);
+id2x=min(numel(xdata),posx(end)+offset);
+
+if 0,
+	ymin=min(Y(:)); ymax=max(Y(:));
+	posy=find(ydata<=ymax);
+	id1y=max(1,find(ydata>=ymin,1)-offset);
+	id2y=min(numel(ydata),posy(end)+offset);
+else
+	ymin=min(Y(:)); ymax=max(Y(:));
+	posy=find(ydata>=ymin);
+	id1y=max(1,find(ydata<=ymax,1)-offset);
+	id2y=min(numel(ydata),posy(end)+offset);
+end
+
+data  = double(imread(dhdtpath,'PixelRegion',{[id1y,id2y],[id1x,id2x]}));
+xdata=xdata(id1x:id2x);
+ydata=ydata(id1y:id2y);
+data(find(data>+10^3)) = 0;
+data(find(data<-10^3)) = 0;
+
+out = InterpFromGrid(xdata,ydata,data,X,Y);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpFromGeotiff.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpFromGeotiff.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpFromGeotiff.m	(revision 27955)
@@ -0,0 +1,84 @@
+function dataout = interpFromGeotiff(geotiffname,X,Y,nanValue,fillholes)
+%INTERPFROMGEOTIFF - interpolate field in geotiff onto list of points
+%
+%   Usage:
+%      dataout = interpFromGeotiff(geotiffname,X,Y,nanValue,fillholes)
+%      dataout = interpFromGeotiff(geotiffname,X,Y);
+
+
+if nargin < 4
+	nanValue = 10^30;
+	fillholes = false;
+end
+if nargin < 5
+	fillholes = false;
+end
+
+usemap = 0;
+if license('test','map_toolbox')==0,
+	disp('WARNING: map toolbox not installed, trying house code');
+	usemap = 0;
+elseif license('checkout','map_toolbox')==0
+	disp('WARNING: map toolbox not available (checkout failed), trying house code');
+	usemap = 0;
+end
+
+if usemap,
+	[data,R] = geotiffread(geotiffname);
+	data=double(flipud(data));
+	xdata=R.XLimWorld(1):R.DeltaX:R.XLimWorld(2); xdata=xdata(:);
+	xdata =(xdata(1:end-1)+xdata(2:end))/2;
+	ydata=R.YLimWorld(2):R.DeltaY:R.YLimWorld(1); ydata=flipud(ydata(:));
+	ydata =(ydata(1:end-1)+ydata(2:end))/2;
+else
+
+	%Get image info
+	Tinfo = imfinfo(geotiffname);
+	N     = Tinfo(1).Width;
+	M     = Tinfo(1).Height;
+	dx    = Tinfo(1).ModelPixelScaleTag(1);
+	dy    = Tinfo(1).ModelPixelScaleTag(2);
+	minx  = Tinfo(1).ModelTiepointTag(4);
+	maxy  = Tinfo(1).ModelTiepointTag(5);
+
+	%Generate vectors
+	xdata = minx + dx/2 + ((0:N-1).*dx);
+	ydata = maxy - dy/2 - ((M  -1:-1:0).*dy);
+
+	%Read image
+	if 1
+		assert(dx>0); assert(dy>0);
+		ydata = fliplr(ydata);
+
+		%Get pixels we are interested in
+		offset=2;
+		xmin=min(X(:)); xmax=max(X(:));
+		posx=find(xdata<=xmax);
+		id1x=max(1,find(xdata>=xmin,1)-offset);
+		id2x=min(numel(xdata),posx(end)+offset);
+
+		ymin=min(Y(:)); ymax=max(Y(:));
+		posy=find(ydata>=ymin);
+		id1y=max(1,find(ydata<=ymax,1)-offset);
+		id2y=min(numel(ydata),posy(end)+offset);
+
+		data  = double(imread(geotiffname,'PixelRegion',{[id1y,id2y],[id1x,id2x]}));
+		xdata=xdata(id1x:id2x);
+		ydata=ydata(id1y:id2y);
+	else
+		data=double(flipud(imread(geotiffname)));
+	end
+	if nanValue > 0
+		data(find(abs(data)>=nanValue))=NaN;
+	else 
+		data(find(data<=nanValue))=NaN;
+	end
+	if fillholes
+		disp('Filling holes');
+		data = inpaint_nans(data);
+		disp('done');
+	end
+end
+
+dataout = InterpFromGrid(xdata,ydata,data,X,Y);
+dataout(dataout==-9999)=NaN;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGeoid.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGeoid.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGeoid.m	(revision 27955)
@@ -0,0 +1,36 @@
+function [geoid] = interpGeoid(X,Y,varargin),
+
+switch oshostname(),
+	case {'murdo','thwaites','astrid'}
+		rootname=[jplsvn() '/proj-morlighem/DatasetGreenland/Data/Geoid/eigen-6c4-1970.mat'];
+	case {'ronne'}
+		rootname='/home/ModelData/Global/Geoid/eigen-6c4-1970.mat';
+	case {'totten'}
+		rootname='/totten_1/ModelData/Global/Geoid/eigen-6c4-1970.mat';
+	otherwise
+		error('machine not supported yet');
+end
+verbose = 1;
+
+if nargin==3,
+	hemisphere = varargin{1};
+else
+	hemisphere = +1;
+end
+
+if hemisphere==+1,
+	if verbose, disp('   -- Geoid: convert to lat/lon using Greenland projection'); end
+	[LAT,  LON  ] = xy2ll(double(X(:)),double(Y(:)),+1,45,70);
+else
+	if verbose, disp('   -- Geoid: convert to lat/lon using Antarctica projection'); end
+	[LAT,  LON  ] = xy2ll(double(X(:)),double(Y(:)),-1,0,71);
+end
+pos=find(LON<0);
+LON(pos) =360+LON(pos);
+
+if verbose, disp('   -- Geoid: loading eigen-6c4 '); end
+A=load(rootname);
+
+if verbose, disp('   -- Geoid: interpolating'); end
+geoid = InterpFromGrid(A.lon,A.lat,A.geoid,LON,LAT);
+geoid = reshape(geoid,size(X));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGimpdem.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGimpdem.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGimpdem.m	(revision 27955)
@@ -0,0 +1,71 @@
+function sout = interpGimpdem(X,Y),
+
+switch oshostname(),
+	case {'murdo','thwaites','astrid'}
+		howatpath='/u/astrid-r1b/morlighe/issmjpl/proj-morlighem/DatasetGreenland/Data/gimpdem/gimpdem_90m.tif';
+	case {'ronne'}
+		howatpath='/home/ModelData/Greenland/gimpdem/gimpdem_90m.tif';
+	case {'totten'}
+		%howatpath='/totten_1/ModelData/Greenland/gimpdem/gimpdem_90m_v01.1.tif';
+		howatpath='/totten_1/ModelData/Greenland/gimpdem/gimpdem_90m.tif';
+	otherwise
+		error('machine not supported yet');
+end
+
+usemap = 0;
+if license('test','map_toolbox')==0,
+	disp('WARNING: map toolbox not installed, trying house code');
+	usemap = 0;
+elseif license('checkout','map_toolbox')==0
+	disp('WARNING: map toolbox not available (checkout failed), trying house code');
+	usemap = 0;
+end
+
+if usemap,
+	[data,R] = geotiffread(howatpath);
+	data=double(flipud(data));
+	xdata=R.XLimWorld(1):R.DeltaX:R.XLimWorld(2); xdata=xdata(:);
+	xdata =(xdata(1:end-1)+xdata(2:end))/2;
+	ydata=R.YLimWorld(2):R.DeltaY:R.YLimWorld(1); ydata=flipud(ydata(:));
+	ydata =(ydata(1:end-1)+ydata(2:end))/2;
+else
+
+	%Get image info
+	Tinfo = imfinfo(howatpath);
+	N     = Tinfo.Width;
+	M     = Tinfo.Height;
+	dx    = Tinfo.ModelPixelScaleTag(1);
+	dy    = Tinfo.ModelPixelScaleTag(2);
+	minx  = Tinfo.ModelTiepointTag(4);
+	maxy  = Tinfo.ModelTiepointTag(5);
+
+	%Generate vectors
+	xdata = minx + dx/2 + ((0:N-1).*dx);
+	ydata = maxy - dy/2 - ((M  -1:-1:0).*dy);
+	ydata = fliplr(ydata);
+
+	%Get pixels we are interested in
+	offset=2;
+	xmin=min(X(:)); xmax=max(X(:));
+	posx=find(xdata<=xmax);
+	id1x=max(1,find(xdata>=xmin,1)-offset);
+	id2x=min(numel(xdata),posx(end)+offset);
+
+	if 0,
+		ymin=min(Y(:)); ymax=max(Y(:));
+		posy=find(ydata<=ymax);
+		id1y=max(1,find(ydata>=ymin,1)-offset);
+		id2y=min(numel(ydata),posy(end)+offset);
+	else
+		ymin=min(Y(:)); ymax=max(Y(:));
+		posy=find(ydata>=ymin);
+		id1y=max(1,find(ydata<=ymax,1)-offset);
+		id2y=min(numel(ydata),posy(end)+offset);
+	end
+
+	data  = double(imread(howatpath,'PixelRegion',{[id1y,id2y],[id1x,id2x]}));
+	xdata=xdata(id1x:id2x);
+	ydata=ydata(id1y:id2y);
+end
+
+sout = InterpFromGrid(xdata,ydata,data,X,Y);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGimpicemask.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGimpicemask.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGimpicemask.m	(revision 27955)
@@ -0,0 +1,71 @@
+function sout = interpGimpicemask(X,Y),
+
+switch oshostname(),
+	case {'ronne'}
+		howatpath='/home/ModelData/Greenland/gimpmask/GimpIceMask_90m.tif';
+	case {'totten'}
+		howatpath='/totten_1/ModelData/Greenland/gimpmask/GimpIceMask_90m.tif';
+	otherwise
+		error('machine not supported yet');
+end
+
+usemap = 0;
+if license('test','map_toolbox')==0,
+	disp('WARNING: map toolbox not installed, trying house code');
+	usemap = 0;
+elseif license('checkout','map_toolbox')==0
+	disp('WARNING: map toolbox not available (checkout failed), trying house code');
+	usemap = 0;
+end
+
+if usemap,
+	[data,R] = geotiffread(howatpath);
+	data=double(flipud(data));
+	xdata=R.XLimWorld(1):R.DeltaX:R.XLimWorld(2); xdata=xdata(:);
+	xdata =(xdata(1:end-1)+xdata(2:end))/2;
+	ydata=R.YLimWorld(2):R.DeltaY:R.YLimWorld(1); ydata=flipud(ydata(:));
+	ydata =(ydata(1:end-1)+ydata(2:end))/2;
+else
+
+	%Get image info
+	Tinfo = imfinfo(howatpath);
+	N     = Tinfo.Width;
+	M     = Tinfo.Height;
+	dx    = Tinfo.ModelPixelScaleTag(1);
+	dy    = Tinfo.ModelPixelScaleTag(2);
+	minx  = Tinfo.ModelTiepointTag(4);
+	maxy  = Tinfo.ModelTiepointTag(5);
+
+	%Generate vectors
+	xdata = minx + dx/2 + ((0:N-1).*dx);
+	ydata = maxy - dy/2 - ((M  -1:-1:0).*dy);
+	ydata = fliplr(ydata);
+
+	%Get pixels we are interested in
+	offset=2;
+	xmin=min(X(:)); xmax=max(X(:));
+	posx=find(xdata<=xmax);
+	id1x=max(1,find(xdata>=xmin,1)-offset);
+	id2x=min(numel(xdata),posx(end)+offset);
+
+	if 0,
+		ymin=min(Y(:)); ymax=max(Y(:));
+		posy=find(ydata<=ymax);
+		id1y=max(1,find(ydata>=ymin,1)-offset);
+		id2y=min(numel(ydata),posy(end)+offset);
+	else
+		ymin=min(Y(:)); ymax=max(Y(:));
+		posy=find(ydata>=ymin);
+		id1y=max(1,find(ydata<=ymax,1)-offset);
+		id2y=min(numel(ydata),posy(end)+offset);
+	end
+
+	data  = double(imread(howatpath,'PixelRegion',{[id1y,id2y],[id1x,id2x]}));
+	xdata=xdata(id1x:id2x);
+	ydata=ydata(id1y:id2y);
+end
+
+sout = InterpFromGrid(xdata,ydata,data,X,Y,'nearest');
+
+%Post process output (undefined = not ice)
+sout(find(sout==-9999))=0;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGimpoceanmask.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGimpoceanmask.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGimpoceanmask.m	(revision 27955)
@@ -0,0 +1,71 @@
+function sout = interpGimpoceanmask(X,Y),
+
+switch oshostname(),
+	case {'ronne'}
+		howatpath='/home/ModelData/Greenland/gimpmask/GimpOceanMask_90m.tif';
+	case {'totten'}
+		howatpath='/totten_1/ModelData/Greenland/gimpmask/GimpOceanMask_90m.tif';
+	otherwise
+		error('machine not supported yet');
+end
+
+usemap = 0;
+if license('test','map_toolbox')==0,
+	disp('WARNING: map toolbox not installed, trying house code');
+	usemap = 0;
+elseif license('checkout','map_toolbox')==0
+	disp('WARNING: map toolbox not available (checkout failed), trying house code');
+	usemap = 0;
+end
+
+if usemap,
+	[data,R] = geotiffread(howatpath);
+	data=double(flipud(data));
+	xdata=R.XLimWorld(1):R.DeltaX:R.XLimWorld(2); xdata=xdata(:);
+	xdata =(xdata(1:end-1)+xdata(2:end))/2;
+	ydata=R.YLimWorld(2):R.DeltaY:R.YLimWorld(1); ydata=flipud(ydata(:));
+	ydata =(ydata(1:end-1)+ydata(2:end))/2;
+else
+
+	%Get image info
+	Tinfo = imfinfo(howatpath);
+	N     = Tinfo.Width;
+	M     = Tinfo.Height;
+	dx    = Tinfo.ModelPixelScaleTag(1);
+	dy    = Tinfo.ModelPixelScaleTag(2);
+	minx  = Tinfo.ModelTiepointTag(4);
+	maxy  = Tinfo.ModelTiepointTag(5);
+
+	%Generate vectors
+	xdata = minx + dx/2 + ((0:N-1).*dx);
+	ydata = maxy - dy/2 - ((M  -1:-1:0).*dy);
+	ydata = fliplr(ydata);
+
+	%Get pixels we are interested in
+	offset=2;
+	xmin=min(X(:)); xmax=max(X(:));
+	posx=find(xdata<=xmax);
+	id1x=max(1,find(xdata>=xmin,1)-offset);
+	id2x=min(numel(xdata),posx(end)+offset);
+
+	if 0,
+		ymin=min(Y(:)); ymax=max(Y(:));
+		posy=find(ydata<=ymax);
+		id1y=max(1,find(ydata>=ymin,1)-offset);
+		id2y=min(numel(ydata),posy(end)+offset);
+	else
+		ymin=min(Y(:)); ymax=max(Y(:));
+		posy=find(ydata>=ymin);
+		id1y=max(1,find(ydata<=ymax,1)-offset);
+		id2y=min(numel(ydata),posy(end)+offset);
+	end
+
+	data  = double(imread(howatpath,'PixelRegion',{[id1y,id2y],[id1x,id2x]}));
+	xdata=xdata(id1x:id2x);
+	ydata=ydata(id1y:id2y);
+end
+
+sout = InterpFromGrid(xdata,ydata,data,X,Y,'nearest');
+
+%Post process output (undefined = ocean)
+sout(find(sout==-9999))=1;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGrIMP.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGrIMP.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGrIMP.m	(revision 27955)
@@ -0,0 +1,66 @@
+function sout = interpGimpdem(X,Y),
+
+switch oshostname(),
+	case {'totten'}
+		howatpath='/totten_1/ModelData/Greenland/GrIMP/GrIMP_100m.tif';
+	otherwise
+		error('machine not supported yet');
+end
+
+usemap = 0;
+if license('test','map_toolbox')==0,
+	disp('WARNING: map toolbox not installed, trying house code');
+	usemap = 0;
+elseif license('checkout','map_toolbox')==0
+	disp('WARNING: map toolbox not available (checkout failed), trying house code');
+	usemap = 0;
+end
+
+if usemap,
+	[data,R] = geotiffread(howatpath);
+	data=double(flipud(data));
+	xdata=R.XLimWorld(1):R.DeltaX:R.XLimWorld(2); xdata=xdata(:);
+	xdata =(xdata(1:end-1)+xdata(2:end))/2;
+	ydata=R.YLimWorld(2):R.DeltaY:R.YLimWorld(1); ydata=flipud(ydata(:));
+	ydata =(ydata(1:end-1)+ydata(2:end))/2;
+else
+
+	%Get image info
+	Tinfo = imfinfo(howatpath);
+	N     = Tinfo.Width;
+	M     = Tinfo.Height;
+	dx    = Tinfo.ModelPixelScaleTag(1);
+	dy    = Tinfo.ModelPixelScaleTag(2);
+	minx  = Tinfo.ModelTiepointTag(4);
+	maxy  = Tinfo.ModelTiepointTag(5);
+
+	%Generate vectors
+	xdata = minx + dx/2 + ((0:N-1).*dx);
+	ydata = maxy - dy/2 - ((M  -1:-1:0).*dy);
+	ydata = fliplr(ydata);
+
+	%Get pixels we are interested in
+	offset=2;
+	xmin=min(X(:)); xmax=max(X(:));
+	posx=find(xdata<=xmax);
+	id1x=max(1,find(xdata>=xmin,1)-offset);
+	id2x=min(numel(xdata),posx(end)+offset);
+
+	if 0,
+		ymin=min(Y(:)); ymax=max(Y(:));
+		posy=find(ydata<=ymax);
+		id1y=max(1,find(ydata>=ymin,1)-offset);
+		id2y=min(numel(ydata),posy(end)+offset);
+	else
+		ymin=min(Y(:)); ymax=max(Y(:));
+		posy=find(ydata>=ymin);
+		id1y=max(1,find(ydata<=ymax,1)-offset);
+		id2y=min(numel(ydata),posy(end)+offset);
+	end
+
+	data  = double(imread(howatpath,'PixelRegion',{[id1y,id2y],[id1x,id2x]}));
+	xdata=xdata(id1x:id2x);
+	ydata=ydata(id1y:id2y);
+end
+
+sout = InterpFromGrid(xdata,ydata,data,X,Y);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGridsCReSIS.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGridsCReSIS.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGridsCReSIS.m	(revision 27955)
@@ -0,0 +1,30 @@
+function output = interpGridsCReSIS(X,Y,filename),
+
+%Convert to lat/lon
+disp('   -- Griggs2013: converting coordinates');
+[LAT,  LON  ] = xy2ll(double(X(:)),double(Y(:)),+1,45,70);
+
+disp(['   -- GridsCReSIS: loading data']);
+if ~exist(filename)
+	error([filename ' does not exist']);
+end
+fid   = fopen(filename);
+for i=1:6,
+	thisline = fgetl(fid);
+	dummy    = regexp(thisline,'(\S+)','match');
+	if strcmp(dummy{1},'ncols'),       ncols=str2num(dummy{2}); end
+	if strcmp(dummy{1},'nrows'),       nrows=str2num(dummy{2}); end
+	if strcmp(dummy{1},'xllcorner'),    xllcorner=str2num(dummy{2}); end
+	if strcmp(dummy{1},'yllcorner'),    yllcorner=str2num(dummy{2}); end
+	if strcmp(dummy{1},'cellsize'),     cellsize=str2num(dummy{2}); end
+	if strcmp(dummy{1},'NODATA_value'), nodata=str2num(dummy{2}); end
+end
+data  = fscanf(fid,'%g %g %g %g %g',[ncols nrows])';
+fclose(fid);
+
+xdata=linspace(xllcorner+cellsize/2,xllcorner+cellsize/2+(ncols-1)*cellsize,ncols);
+ydata=linspace(yllcorner+cellsize/2,yllcorner+cellsize/2+(nrows-1)*cellsize,nrows);
+
+disp(['   -- GridsCReSIS: interpolating ']);
+output = InterpFromGrid(xdata,ydata,data,LAT,LON);
+output = reshape(output,size(X,1),size(X,2));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGriggs2013.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGriggs2013.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpGriggs2013.m	(revision 27955)
@@ -0,0 +1,29 @@
+function output = interpGriggs2013(X,Y,string),
+
+disp('============================================');
+disp(' ');
+disp('WARNING: interpBamber2013 should now be used');
+disp(' ');
+disp('============================================');
+error('interpBamber2013 should now be used');
+griggs2013nc='/u/astrid-r1b/morlighe/issmjpl/proj-morlighem/DatasetGreenland/Data/Griggs2012/Greenland_bedrock_topography_and_geometry_062012_JGriggs.nc';
+verbose = 0;
+
+if nargout==2,
+	string = 'BedrockElevation';
+end
+
+%Convert to Bamber's projections
+if verbose, disp('   -- Griggs2013: converting coordinates'); end
+[LAT,  LON  ] = xy2ll(double(X(:)),double(Y(:)),+1,45,70);
+[x3971,y3971] = ll2xy(LAT,LON  ,+1,39,71);
+
+if verbose, disp('   -- Griggs2013: loading coordinates'); end
+xdata = double(ncread(griggs2013nc,'projection_x_coordinate'))*1000;
+ydata = double(ncread(griggs2013nc,'projection_y_coordinate'))*1000;
+
+if verbose, disp(['   -- Griggs2013: loading ' string]); end
+data  = double(ncread(griggs2013nc,string))';
+if verbose, disp(['   -- Griggs2013: interpolating ' string]); end
+output = InterpFromGrid(xdata,ydata,data,x3971,y3971);
+output = reshape(output,size(X,1),size(X,2));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpIBCSO.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpIBCSO.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpIBCSO.m	(revision 27955)
@@ -0,0 +1,41 @@
+function [bedout sid] = interpIBCSO(X,Y),
+
+%read data
+switch (oshostname()),
+	case {'ronne'}
+		ncpath='/home/ModelData/Antarctica/IBCSO/ibcso_v1_bed.grd';
+		sidpath='/home/ModelData/Antarctica/IBCSO/ibcso_v1_sid.grd';
+	case {'totten'}
+		ncpath='/totten_1/ModelData/Antarctica/IBCSO/ibcso_v1_bed.grd';
+		sidpath='/totten_1/ModelData/Antarctica/IBCSO/ibcso_v1_sid.grd';
+	otherwise
+		error('hostname not supported yet');
+end
+
+disp('   -- IBCSO: loading bathymetry');
+x_range = double(ncread(ncpath,'x_range'));
+y_range = double(ncread(ncpath,'y_range'));
+spacing = double(ncread(ncpath,'spacing'));
+xdata = (x_range(1)-spacing(1)/2) : spacing(1) : (x_range(2)-spacing(1)/2); 
+ydata = (y_range(1)-spacing(2)/2) : spacing(2) : (y_range(2)-spacing(2)/2); 
+data  = double(ncread(ncpath,'z'));
+data(find(data==-9999 | isinf(data))) = NaN;
+data  = reshape(data,[numel(xdata) numel(ydata)])';
+disp('   -- IBCSO: interpolating bed');
+bedout = InterpFromGrid(xdata,fliplr(ydata),data,double(X),double(Y));
+
+if nargout==2,
+	disp('   -- IBCSO: bathymetry sid');
+	xdata = ncread(sidpath,'x');
+	ydata = ncread(sidpath,'y');
+	data  = ncread(sidpath,'z')';
+	disp('   -- IBCSO: transforming coordinates');
+	[LAT,LON] = xy2ll(double(X(:)),double(Y(:)),-1,0,71);
+	[x065,y065] = ll2xy(LAT,LON,-1,0,65);
+	x065 = reshape(x065,size(X));
+	y065 = reshape(y065,size(Y));
+	disp('   -- IBCSO: interpolating sids');
+	sid = InterpFromGrid(xdata,ydata,data,x065,y065,'nearest');
+	sid(find(sid<200000)) = 0;
+	sid(find(sid>399999)) = 0;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpIBCSO2.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpIBCSO2.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpIBCSO2.m	(revision 27955)
@@ -0,0 +1,27 @@
+function [bedout sid] = interpIBCSO2(X,Y),
+
+%read data
+switch (oshostname()),
+	case {'totten'}
+		ncpath='/totten_1/ModelData/Antarctica/IBCSO2/IBCSO_v2_bed.nc';
+		sidpath='/totten_1/ModelData/Antarctica/IBCSO2/IBCSO_v2_TID.nc';
+	otherwise
+		error('hostname not supported yet');
+end
+
+disp('   -- IBCSOv2: Changing Coordinate system from 3031 to 9354');
+[X Y]=CoordTransform(double(X),double(Y),'EPSG:3031','EPSG:9354');
+
+disp('   -- IBCSOv2: loading bathymetry');
+xdata = double(ncread(ncpath,'x'));
+ydata = double(ncread(ncpath,'y'));
+data  = double(ncread(ncpath,'z'))';
+disp('   -- IBCSOv2: interpolating bed');
+bedout = InterpFromGrid(xdata,ydata,data,double(X),double(Y));
+
+if nargout==2,
+	disp('   -- IBCSOv2: bathymetry sid');
+	data  = ncread(sidpath,'tid')';
+	disp('   -- IBCSOv2: interpolating sids');
+	sid = InterpFromGrid(xdata,ydata,data,double(X),double(Y),'nearest');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpJakobsson2012.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpJakobsson2012.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpJakobsson2012.m	(revision 27955)
@@ -0,0 +1,35 @@
+function [bedout sourceout] = interpJakobsson2012(X,Y,string),
+
+switch oshostname(),
+	case {'murdo','thwaites','astrid'}
+		ncpath ='/u/astrid-r1b/morlighe/issmjpl/proj-morlighem/DatasetGreenland/Data/IBCAO/IBCAO_V3_500m_RR.grd';
+	case {'ronne'}
+		ncpath ='/home/ModelData/Greenland/IBCAO/IBCAO_V3_500m_RR.grd';
+	otherwise
+		error('machine not supported yet');
+end
+
+%Convert to IBCAO projections
+disp('   -- Jakobsson2012: converting coordinates');
+[LAT,  LON  ] = xy2ll(double(X(:)),double(Y(:)),+1,45,70);
+[x0075,y0075] = ll2xy(LAT,LON,+1,0,75);
+
+disp('   -- Jakobsson2012: loading bathymetry');
+xdata = double(ncread(ncpath,'x'));
+ydata = double(ncread(ncpath,'y'));
+data  = double(ncread(ncpath,'z'))';
+
+disp('   -- Jakobsson2012: interpolating bed');
+bedout = InterpFromGrid(xdata,ydata,data,x0075,y0075);
+bedout = reshape(bedout,size(X,1),size(X,2));
+
+if nargout==2,
+	ncpath ='/home/ModelData/Greenland/IBCAO/IBCAO_V3_SID_500m.grd';
+	disp('   -- Jakobsson2012: loading source');
+	xdata = double(ncread(ncpath,'x'));
+	ydata = double(ncread(ncpath,'y'));
+	data  = double(ncread(ncpath,'z'))';
+	disp('   -- Jakobsson2012: interpolating source');
+	sourceout = InterpFromGrid(xdata,ydata,data,x0075,y0075,'nearest');
+	sourceout = reshape(sourceout,size(X,1),size(X,2));
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpJakobsson2020.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpJakobsson2020.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpJakobsson2020.m	(revision 27955)
@@ -0,0 +1,49 @@
+function [bedout sourceout] = interpJakobsson2020(X,Y,string),
+
+switch oshostname(),
+	case {'ronne'}
+		ncpath ='/home/ModelData/Greenland/IBCAO/IBCAO_v4_200m.nc';
+	case {'totten'}
+		ncpath ='/totten_1/ModelData/Greenland/IBCAO/IBCAO_v4_200m.nc';
+	otherwise
+		error('machine not supported yet');
+end
+
+%Convert to IBCAO projections
+disp('   -- Jakobsson2020: converting coordinates');
+[LAT,  LON  ] = xy2ll(double(X(:)),double(Y(:)),+1,45,70);
+[x0075,y0075] = ll2xy(LAT,LON,+1,0,75);
+
+disp('   -- Jakobsson2020: loading coordinates');
+xdata = double(ncread(ncpath,'x'));
+ydata = double(ncread(ncpath,'y'));
+
+offset=2;
+
+xmin=min(x0075(:)); xmax=max(x0075(:));
+posx=find(xdata<=xmax);
+id1x=max(1,find(xdata>=xmin,1)-offset);
+id2x=min(numel(xdata),posx(end)+offset);
+
+ymin=min(y0075(:)); ymax=max(y0075(:));
+posy=find(ydata>=ymin);
+id1y=max(1,find(ydata<=ymax,1)-offset);
+id2y=min(numel(ydata),posy(end)+offset);
+
+disp(['   -- Jakobsson2020: loading bathymetry']);
+data = double(ncread(ncpath,'z',[id1x id1y],[id2x-id1x+1 id2y-id1y+1],[1 1]))';
+xdata=xdata(id1x:id2x);
+ydata=ydata(id1y:id2y);
+
+disp('   -- Jakobsson2020: interpolating bed');
+bedout = InterpFromGrid(xdata,ydata,data,x0075,y0075);
+bedout = reshape(bedout,size(X,1),size(X,2));
+
+if nargout==2,
+	ncpath ='/totten_1/ModelData/Greenland/IBCAO/IBCAO_v4_200m_TID.nc';
+	disp('   -- Jakobsson2020: loading source');
+	data = double(ncread(ncpath,'z',[id1x id1y],[id2x-id1x+1 id2y-id1y+1],[1 1]))';
+	disp('   -- Jakobsson2020: interpolating source');
+	sourceout = InterpFromGrid(xdata,ydata,data,x0075,y0075,'nearest');
+	sourceout = reshape(sourceout,size(X,1),size(X,2));
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpJoughin.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpJoughin.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpJoughin.m	(revision 27955)
@@ -0,0 +1,97 @@
+function [vxout vyout] = interpJoughin(X,Y,Date),
+	%Available dates:
+	% 2000 2005 2006 2007 2008
+
+switch oshostname(),
+	case {'murdo','thwaites','astrid'}
+		if nargin==3,
+			rootname = ['/u/astrid-r1b/morlighe/issmjpl/proj-morlighem/DatasetGreenland/Data/Vel/Joughin/' num2str(Date) '/'];
+		else
+			error('not supported');
+		end
+	case {'ronne'}
+		error('not supported');
+	otherwise
+		error('machine not supported yet');
+end
+verbose = 1;
+
+if ~exist(rootname,'dir'),
+	error(['file ' rootname ' not found']);
+end
+
+rootname = [rootname 'greenland_vel_mosaic500_' num2str(Date) '_' num2str(Date+1)];
+
+if verbose, disp('   -- Joughin: loading vx'); end
+[data,R] = geotiffread([rootname '_vx.tif']);
+pos=find(data<-10^9); data(pos)=NaN;
+data=double(flipud(data));
+xdata=R.XLimWorld(1):R.DeltaX:R.XLimWorld(2); xdata=xdata(:);
+xdata =(xdata(1:end-1)+xdata(2:end))/2;
+ydata=R.YLimWorld(2):R.DeltaY:R.YLimWorld(1); ydata=flipud(ydata(:));
+ydata =(ydata(1:end-1)+ydata(2:end))/2;
+if verbose, disp('   -- Joughin: interpolating vx'); end
+vxout = InterpFromGrid(xdata,ydata,data,X,Y);
+vxout = reshape(vxout,size(X,1),size(X,2));
+
+if verbose, disp('   -- Joughin: loading vy'); end
+[data,R] = geotiffread([rootname '_vy.tif']);
+pos=find(data<-10^9); data(pos)=NaN;
+data=double(flipud(data));
+xdata=R.XLimWorld(1):R.DeltaX:R.XLimWorld(2); xdata=xdata(:);
+xdata =(xdata(1:end-1)+xdata(2:end))/2;
+ydata=R.YLimWorld(2):R.DeltaY:R.YLimWorld(1); ydata=flipud(ydata(:));
+ydata =(ydata(1:end-1)+ydata(2:end))/2;
+if verbose, disp('   -- Joughin: interpolating vy'); end
+vyout = InterpFromGrid(xdata,ydata,data,X,Y);
+vyout = reshape(vyout,size(X,1),size(X,2));
+return
+
+% Get geodat info
+if verbose, disp('   -- Joughin: loading geodat info'); end
+xd=readgeodat(strcat(rootname,'.vx.geodat'));
+xmin=xd(3,1)*1000.+xd(2,1)/2;
+xmax=xd(3,1)*1000.+(xd(2,1)-1)*xd(1,1)+xd(2,1)/2;
+ymin=xd(3,2)*1000.+xd(2,2)/2;
+ymax=xd(3,2)*1000.+(xd(2,2)-1)*xd(1,2)+xd(2,2)/2;
+%xmin=xd(3,1)*1000.;
+%xmax=xd(3,1)*1000.+(xd(2,1)-1)*xd(1,1);
+%ymin=xd(3,2)*1000.;
+%ymax=xd(3,2)*1000.+(xd(2,2)-1)*xd(1,2);
+xdata=linspace(xmin,xmax,xd(1,1));
+ydata=linspace(ymin,ymax,xd(1,2));
+
+% Vx component
+if verbose, disp('   -- Joughin: loading vx'); end
+fid = fopen(strcat(rootname,'.vx'),'r','ieee-be');
+[data,count]=fread(fid,[xd(1,1) xd(1,2)],'float32');
+fclose(fid);
+
+if verbose, disp('   -- Joughin: interpolating vx'); end
+vxout = InterpFromGrid(xdata,ydata,data',X,Y);
+vxout = reshape(vxout,size(X,1),size(X,2));
+
+% Vy component
+fid = fopen(strcat(rootname,'.vy'),'r','ieee-be');
+[data,count]=fread(fid,[xd(1,1) xd(1,2)],'float32');
+fclose(fid);
+vyout = InterpFromGrid(xdata,ydata,data',X,Y);
+vyout = reshape(vyout,size(X,1),size(X,2));
+
+end
+
+function xgeo=readgeodat(filein)
+% Read a geodat file
+fid = fopen(filein,'r');
+xgeo=zeros(3,2);
+i=1;
+while ~feof(fid),
+	line=fgets(fid);
+	[A,count]=sscanf(line,'%f %f',[1 2]);
+	if(count == 2) 
+		xgeo(i,:)=A;
+		i=i+1;
+	end
+end
+fclose(fid);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpJoughinCompositeGreenland.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpJoughinCompositeGreenland.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpJoughinCompositeGreenland.m	(revision 27955)
@@ -0,0 +1,32 @@
+function [vxout vyout] = interpJoughinCompositeGreenland(X,Y),
+
+%data=load(['/u/astrid-r1b/morlighe/issmjpl/proj-morlighem/DatasetGreenland/Data/VelJoughin/IanGreenVel.mat']);
+filename = '/totten_1/ModelData/Greenland/VelJoughin/IanGreenVel.mat';
+
+%Figure out what subset of the matrix should be read
+load(filename,'x_m','y_m');
+velfile = matfile(filename);
+
+offset=2;
+
+xmin=min(X(:)); xmax=max(X(:));
+posx=find(x_m<=xmax);
+id1x=max(1,find(x_m>=xmin,1)-offset);
+id2x=min(numel(x_m),posx(end)+offset);
+
+ymin=min(Y(:)); ymax=max(Y(:));
+posy=find(y_m>=ymin);
+id1y=max(1,find(y_m<=ymax,1)-offset);
+id2y=min(numel(y_m),posy(end)+offset);
+
+vx = velfile.vx(id1y:id2y,id1x:id2x);
+vy = velfile.vy(id1y:id2y,id1x:id2x);
+x = x_m(id1x:id2x);
+y = y_m(id1y:id2y);
+
+vxout = InterpFromGrid(x,y,double(vx),X,Y);
+vyout = InterpFromGrid(x,y,double(vy),X,Y);
+
+if nargout==1,
+	vxout = sqrt(vxout.^2+vyout.^2);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpJoughinMosaic.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpJoughinMosaic.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpJoughinMosaic.m	(revision 27955)
@@ -0,0 +1,36 @@
+function [vxout vyout] = interpJoughinMosaic(X,Y),
+
+switch oshostname(),
+	case {'ronne'}
+		filename = '/home/ModelData/Greenland/VelJoughin/IanGreenVel.mat';
+	case {'totten'}
+		filename = '/totten_1/ModelData/Greenland/VelJoughin/IanGreenVel.mat';
+	otherwise
+		error('machine not supported yet');
+end
+verbose = 1;
+
+%Figure out what subset of the matrix should be read
+load(filename,'x_m','y_m');
+velfile = matfile(filename);
+
+offset=2;
+
+xmin=min(X(:)); xmax=max(X(:));
+posx=find(x_m<=xmax);
+id1x=max(1,find(x_m>=xmin,1)-offset);
+id2x=min(numel(x_m),posx(end)+offset);
+
+ymin=min(Y(:)); ymax=max(Y(:));
+posy=find(y_m>=ymin);
+id1y=max(1,find(y_m<=ymax,1)-offset);
+id2y=min(numel(y_m),posy(end)+offset);
+
+vx = velfile.vx(id1y:id2y,id1x:id2x);
+vy = velfile.vy(id1y:id2y,id1x:id2x);
+x_m = x_m(id1x:id2x);
+y_m = y_m(id1y:id2y);
+
+%load(filename);
+vxout = InterpFromGrid(x_m,y_m,vx,X,Y);
+vyout = InterpFromGrid(x_m,y_m,vy,X,Y);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpMartos2017.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpMartos2017.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpMartos2017.m	(revision 27955)
@@ -0,0 +1,18 @@
+function out = interpMartos2017(X,Y)
+%INTERPMARTOS2017 - interpolate geothermal heat flux
+%
+%   Usage:
+%      out = interpMartos2017(X,Y)
+
+switch oshostname(),
+	case {'ronne'}
+		gtfpath='/home/ModelData/Antarctica/GeothermalMartos/Antarctic_GHF.xyz';
+	otherwise
+		error('machine not supported yet');
+end
+
+%Load data
+data = load(gtfpath);
+
+%Interpolate using nearest neighbor (dataset stops at ocean boundary!)
+out = Kriging(data(:,1),data(:,2),data(:,3),X,Y,'output','nearestneighbor')/1e3; %from mW/m2 to W/m2
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpMouginotAnt2016.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpMouginotAnt2016.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpMouginotAnt2016.m	(revision 27955)
@@ -0,0 +1,46 @@
+function [vxout vyout]= interpMouginotAnt2016(X,Y),
+
+%read data
+switch (oshostname()),
+	case {'ronne'}
+		filename = '/home/ModelData/Antarctica/MouginotVel/vel_ant_5Apr2016.mat';
+	case {'thwaites','murdo','astrid'}
+		filename = '/u/astrid-r1b/ModelData/RignotAntarcticaVelMosaic450m/vel_ant_5Apr2016.mat';
+	otherwise
+		error('hostname not supported yet');
+end
+
+%Figure out what subset of the matrix should be read
+load(filename,'x','y');
+velfile = matfile(filename);
+
+offset=2;
+
+xmin=min(X(:)); xmax=max(X(:));
+posx=find(x<=xmax);
+id1x=max(1,find(x>=xmin,1)-offset);
+id2x=min(numel(x),posx(end)+offset);
+
+if y(2)-y(1)<0
+	ymin=min(Y(:)); ymax=max(Y(:));
+	posy=find(y>=ymin);
+	id1y=max(1,find(y<=ymax,1)-offset);
+	id2y=min(numel(y),posy(end)+offset);
+else
+	ymin=min(X(:)); ymax=max(X(:));
+	posy=find(y<=ymax);
+	id1y=max(1,find(y>=ymin,1)-offset);
+	id2y=min(numel(y),posy(end)+offset);
+end
+
+vx = velfile.vx(id1y:id2y,id1x:id2x);
+vy = velfile.vy(id1y:id2y,id1x:id2x);
+x = x(id1x:id2x);
+y = y(id1y:id2y);
+
+vxout = InterpFromGrid(x,y,double(vx),X,Y);
+vyout = InterpFromGrid(x,y,double(vy),X,Y);
+
+if nargout==1,
+	vxout = sqrt(vxout.^2+vyout.^2);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpMouginotAnt2017.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpMouginotAnt2017.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpMouginotAnt2017.m	(revision 27955)
@@ -0,0 +1,41 @@
+function [vxout vyout]= interpMouginotAnt2017(X,Y),
+
+%read data
+switch (oshostname()),
+	case {'ronne'}
+		nc = '/home/ModelData/Antarctica/MouginotVel/vel_nsidc.CF16_2.nc';
+	case {'totten'}
+		nc = '/totten_1/ModelData/Antarctica/MouginotVel/vel_nsidc.CF16_2.nc';
+	otherwise
+		error('hostname not supported yet');
+end
+
+xdata = double(ncread(nc,'x'));
+ydata = double(ncread(nc,'y'));
+
+offset=2;
+
+xmin=min(X(:)); xmax=max(X(:));
+posx=find(xdata<=xmax);
+id1x=max(1,find(xdata>=xmin,1)-offset);
+id2x=min(numel(xdata),posx(end)+offset);
+
+ymin=min(Y(:)); ymax=max(Y(:));
+posy=find(ydata>=ymin);
+id1y=max(1,find(ydata<=ymax,1)-offset);
+id2y=min(numel(ydata),posy(end)+offset);
+
+disp(['   -- Mouginot 2017: loading velocities']);
+vxdata = double(ncread(nc,'VX',[id1x id1y],[id2x-id1x+1 id2y-id1y+1],[1 1]))';
+vydata = double(ncread(nc,'VY',[id1x id1y],[id2x-id1x+1 id2y-id1y+1],[1 1]))';
+xdata=xdata(id1x:id2x);
+ydata=ydata(id1y:id2y);
+
+disp(['   -- Mouginot 2017: interpolating ']);
+vxout = InterpFromGrid(xdata,ydata,vxdata,double(X),double(Y));
+vyout = InterpFromGrid(xdata,ydata,vydata,double(X),double(Y));
+
+%return vel if only one output is requested
+if nargout==1,
+	vxout = sqrt(vxout.^2+vyout.^2);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpMouginotAnt2019.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpMouginotAnt2019.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpMouginotAnt2019.m	(revision 27955)
@@ -0,0 +1,41 @@
+function [vxout vyout]= interpMouginotAnt2019(X,Y),
+
+%read data
+switch (oshostname()),
+	case {'ronne'}
+		nc = '/home/ModelData/Antarctica/MouginotVel/v_mix.v13Mar2019.nc';
+	case {'totten'}
+		nc = '/totten_1/ModelData/Antarctica/MouginotVel/v_mix.v8Jul2019.nc';
+	otherwise
+		error('hostname not supported yet');
+end
+
+xdata = double(ncread(nc,'x'));
+ydata = double(ncread(nc,'y'));
+
+offset=2;
+
+xmin=min(X(:)); xmax=max(X(:));
+posx=find(xdata<=xmax);
+id1x=max(1,find(xdata>=xmin,1)-offset);
+id2x=min(numel(xdata),posx(end)+offset);
+
+ymin=min(Y(:)); ymax=max(Y(:));
+posy=find(ydata>=ymin);
+id1y=max(1,find(ydata<=ymax,1)-offset);
+id2y=min(numel(ydata),posy(end)+offset);
+
+disp(['   -- Mouginot 2019: loading velocities']);
+vxdata = double(ncread(nc,'VX',[id1x id1y],[id2x-id1x+1 id2y-id1y+1],[1 1]))';
+vydata = double(ncread(nc,'VY',[id1x id1y],[id2x-id1x+1 id2y-id1y+1],[1 1]))';
+xdata=xdata(id1x:id2x);
+ydata=ydata(id1y:id2y);
+
+disp(['   -- Mouginot 2019: interpolating ']);
+vxout = InterpFromGrid(xdata,ydata,vxdata,double(X),double(Y));
+vyout = InterpFromGrid(xdata,ydata,vydata,double(X),double(Y));
+
+%return vel if only one output is requested
+if nargout==1,
+	vxout = sqrt(vxout.^2+vyout.^2);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpMouginotAntTimeSeries1973to2018.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpMouginotAntTimeSeries1973to2018.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpMouginotAntTimeSeries1973to2018.m	(revision 27955)
@@ -0,0 +1,197 @@
+function [vxout vyout errxout erryout stdxout stdyout]= interpMouginotAntTimeSeries1973to2018(X,Y,T)
+%INTERPMOUGINOTANTTIMESERIES1973TO2018 - interpolate observed (time series) velocities 
+%
+%   Inputs
+%      X,Y: spatial (scatter) coordinates
+%      T: time (indexed by YEAR1 (YEAR2 is optional); see below) 
+%
+%   Outputs
+%      vxout,vyout: interpolated velocities at X,Y, for each time requested in T
+%
+%   Available time series:
+%
+%          YEAR1  YEAR2
+%    1     1973   1975
+%    2     1973   1984
+%    3     1973   1988
+%    4     1984   1988
+%    5     1986   1988
+%    6     1988   1990
+%    7     1991   1992
+%    8     1995   1996
+%    9     2000   2001
+%   10     2002   2003
+%   11     2003   2004
+%   12     2005   2006
+%   13     2006   2007
+%   14     2007   2008
+%   15     2008   2009
+%   16     2009   2010
+%   17     2010   2011
+%   18     2011   2012
+%   19     2012   2013
+%   20     2013   2014
+%   21     2014   2015
+%   22     2015   2016
+%   23     2016   2017
+%   24     2017   2018
+%
+%   Usage:
+%      T refers to YEAR1, but the user can also use YEAR2 (e.g., the "1973" case in YEAR1).
+%  
+%      Then, these codes generate the same results:
+%
+%      [vxout vyout]= interpMouginotAntTimeSeries1973to2018(md.mesh.x,md.mesh.y,[1986; 1991; 1995; 2000]);
+%      [vxout vyout]= interpMouginotAntTimeSeries1973to2018(md.mesh.x,md.mesh.y,[1986 1988; 1991 1992; 1995 1996; 2000 2001]);
+%
+%      Another examples:
+%      [vxout vyout]= interpMouginotAntTimeSeries1973to2018(md.mesh.x,md.mesh.y,[1973 1975; 1973 1988; 1991 1992; 2011 2012]);
+%      [vel]= interpMouginotAntTimeSeries1973to2018(md.mesh.x,md.mesh.y,[1986; 1991; 1995; 2000]);
+%      [vxout vyout errxout erryout stdxout stdyout]= interpMouginotAntTimeSeries1973to2018(md.mesh.x,md.mesh.y,[1986; 1991; 1995; 2000]);
+
+%read data
+switch (oshostname()),
+	case {'ronne'}
+		nc = '/home/ModelData/Antarctica/MouginotVel/ASE_TimeSeries_1973-2018.nc';
+	case {'totten'}
+		nc = '/totten_1/ModelData/Antarctica/MouginotVel/ASE_TimeSeries_1973-2018.nc';
+	otherwise
+		error('hostname not supported yet');
+end
+
+xdata = double(ncread(nc,'x'));
+ydata = double(ncread(nc,'y'));
+year1 = ncread(nc,'YEAR1');
+year2 = ncread(nc,'YEAR2');
+
+% get the positions related to T
+if nargin==3
+	% initial checks %{{{
+	if ~isvector(T)
+		error('Size of input T not supported!');
+	end
+	T=T(:);
+	if size(T,2)==1 & any(T(:,1)==1973),
+		disp(' ');
+		disp('   Found year=1973 in T (array). Please, specify the data series using a second index.');
+		disp('   Data available for 1973:');
+		disp('      1973   1975');
+		disp('      1973   1984');
+		disp('      1973   1988');
+		disp(' ');
+		disp('   Usage:');
+		disp('      [vxout vyout]= interpMouginotAntTimeSeries1973to2018(md.mesh.x,md.mesh.y,[1973 1975; 1973 1988; 1991 1992; 2011 2012])');
+		disp(' ');
+		error('   Change input T before continuing.');
+	end %}}}
+	pos = [];
+	for i=1:size(T,1),
+		flag = (T(i,1)==year1);
+		if size(T,2)==2, % ok, check both indexes (year1 and year2)
+			flag = (T(i,1)==year1).*(T(i,2)==year2);
+		end
+		pos = [pos; find(flag)];
+	end
+	% check again {{{
+	if length(pos)~=size(T,1) | length(unique(pos))~=length(pos),
+		disp(' ');
+		disp('   Time resquested does not exist in data set or is repeated!');
+		disp('   Data resquested:');
+		for i=1:length(T(:,1)),
+			str = ['      ' int2str(T(i,1)) '   '];
+			if size(T,2)==2, % ok, check both indexes (year1 and year2)
+				str = [str int2str(T(i,2))];
+			end
+			disp(str);
+		end
+		disp(' ');
+		disp('   Data available (24 series):');
+		for i=1:length(year1),
+			str = ['      ' int2str(year1(i)) '   ' int2str(year2(i))];
+			disp(str);
+		end
+		disp(' ');
+		disp('   Usage:');
+		disp('      [vxout vyout]= interpMouginotAntTimeSeries1973to2018(md.mesh.x,md.mesh.y,[1986; 1991; 1995; 2000])');
+		disp('      [vxout vyout]= interpMouginotAntTimeSeries1973to2018(md.mesh.x,md.mesh.y,[1986 1988; 1991 1992; 1995 1996; 2000 2001])');
+		disp('      [vxout vyout]= interpMouginotAntTimeSeries1973to2018(md.mesh.x,md.mesh.y,[1973 1975; 1973 1988; 1991 1992; 2011 2012])');
+		disp(' ');
+		error('   Change input T before continuing.');
+	end%}}}
+elseif nargin<3,
+	pos = 1:24; % all available data		
+else
+	error('nargin not supported yet!');
+end
+if nargout~=1 & nargout~=2 & nargout~=6
+	error('nargout not supported!');
+end
+
+
+% get the spatial positions
+offset=2;
+
+xmin=min(X(:)); xmax=max(X(:));
+posx=find(xdata<=xmax);
+id1x=max(1,find(xdata>=xmin,1)-offset);
+id2x=min(numel(xdata),posx(end)+offset);
+
+ymin=min(Y(:)); ymax=max(Y(:));
+posy=find(ydata>=ymin);
+id1y=max(1,find(ydata<=ymax,1)-offset);
+id2y=min(numel(ydata),posy(end)+offset);
+
+disp(['   -- Mouginot Time Series 1973 to 2018: loading velocities']);
+vxdata = [];
+vydata = [];
+if nargout==6 % it includes ERRX, ERRY, STDX and STDY
+	errxdata = [];
+	errydata = [];
+	stdxdata = [];
+	stdydata = [];
+end
+for i=1:length(pos), 
+	disp(['      step = ' int2str(i) '/' int2str(length(pos)) ', position = ' int2str(pos(i)) ', year = '  int2str(year1(pos(i))) ' - ' int2str(year2(pos(i)))]);
+	vx = double(ncread(nc,'VX',[id1x id1y pos(i)],[id2x-id1x+1 id2y-id1y+1 1],[1 1 1]));
+	vy = double(ncread(nc,'VY',[id1x id1y pos(i)],[id2x-id1x+1 id2y-id1y+1 1],[1 1 1]));
+	vxdata(:,:,i) = permute(vx,[2 1 3]);
+	vydata(:,:,i) = permute(vy,[2 1 3]);
+	if nargout==6 % it includes ERRX, ERRY, STDX and STDY
+		errx = double(ncread(nc,'ERRX',[id1x id1y pos(i)],[id2x-id1x+1 id2y-id1y+1 1],[1 1 1]));
+		erry = double(ncread(nc,'ERRY',[id1x id1y pos(i)],[id2x-id1x+1 id2y-id1y+1 1],[1 1 1]));	
+		stdx = double(ncread(nc,'STDX',[id1x id1y pos(i)],[id2x-id1x+1 id2y-id1y+1 1],[1 1 1]));
+		stdy = double(ncread(nc,'STDY',[id1x id1y pos(i)],[id2x-id1x+1 id2y-id1y+1 1],[1 1 1]));	
+		errxdata(:,:,i) = permute(errx,[2 1 3]);
+		errydata(:,:,i) = permute(erry,[2 1 3]);
+		stdxdata(:,:,i) = permute(stdx,[2 1 3]);
+		stdydata(:,:,i) = permute(stdy,[2 1 3]);
+	end
+end
+xdata=xdata(id1x:id2x);
+ydata=ydata(id1y:id2y);
+
+disp(['   -- Mouginot Time Series 1973 to 2018: interpolating']);
+vxout = [];
+vyout = [];
+if nargout==6 % it includes ERRX, ERRY, STDX and STDY
+	errxout = [];
+	erryout = [];
+	stdxout = [];
+	stdyout = [];
+end
+for i=1:length(pos),
+	disp(['      step = ' int2str(i) '/' int2str(length(pos)) ', position = ' int2str(pos(i)) ', year = '  int2str(year1(pos(i))) ' - ' int2str(year2(pos(i)))]);
+	vxout = [vxout InterpFromGrid(xdata,ydata,vxdata(:,:,i),double(X),double(Y))];
+	vyout = [vyout InterpFromGrid(xdata,ydata,vydata(:,:,i),double(X),double(Y))];
+	if nargout==6 % it includes ERRX, ERRY, STDX and STDY
+		errxout = [errxout InterpFromGrid(xdata,ydata,errxdata(:,:,i),double(X),double(Y))];
+		erryout = [erryout InterpFromGrid(xdata,ydata,errydata(:,:,i),double(X),double(Y))];
+		stdxout = [stdxout InterpFromGrid(xdata,ydata,stdxdata(:,:,i),double(X),double(Y))];
+		stdyout = [stdyout InterpFromGrid(xdata,ydata,stdydata(:,:,i),double(X),double(Y))];
+	end
+end
+
+%return vel if only one output is requested
+if nargout==1,
+	vxout = sqrt(vxout.^2+vyout.^2);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpPaolo2015.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpPaolo2015.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpPaolo2015.m	(revision 27955)
@@ -0,0 +1,193 @@
+function [dh_raw_out dh_fil_out T_out] = interpPaolo2015(X,Y,T,method)
+%INTERPPAOLO2015 - interpolate observed (time series) height change [m]
+%
+%   Time series are average height changes [m] with respect to 1994 every three months (72 time steps)
+%
+%   Inputs
+%      X,Y: spatial (scatter) coordinates
+%      T: time (see below the available years) 
+%      ATTENTION: it is assumed that X and Y come in Polar Stereographic Projection (Std Latitude: 71S Meridian: 0E)
+%
+%   Outputs
+%      dh_raw_out: interpolated raw height change at X,Y, for each time requested in T
+%      dh_fil_out: interpolated filtered height change at X,Y, for each time requested in T
+%      T_out: time related to dh_raw_out and dh_fil_out (see below)
+%
+%   Available time series:
+%
+% 		 1		 1994.038
+% 		 2		 1994.285
+% 		 3		 1994.534
+% 		 4		 1994.786
+% 		 5		 1995.038
+% 		 6		 1995.285
+% 		 7		 1995.534
+% 		 8		 1995.786
+% 		 9		 1996.038
+% 		10		 1996.287
+% 		11		 1996.536
+% 		12		 1996.787
+% 		13		 1997.038
+% 		14		 1997.285
+% 		15		 1997.534
+% 		16		 1997.786
+% 		17		 1998.038
+% 		18		 1998.285
+% 		19		 1998.534
+% 		20		 1998.786
+% 		21		 1999.038
+% 		22		 1999.285
+% 		23		 1999.534
+% 		24		 1999.786
+% 		25		 2000.038
+% 		26		 2000.287
+% 		27		 2000.536
+% 		28		 2000.787
+% 		29		 2001.038
+% 		30		 2001.285
+% 		31		 2001.534
+% 		32		 2001.786
+% 		33		 2002.038
+% 		34		 2002.285
+% 		35		 2002.534
+% 		36		 2002.786
+% 		37		 2003.038
+% 		38		 2003.285
+% 		39		 2003.534
+% 		40		 2003.786
+% 		41		 2004.038
+% 		42		 2004.287
+% 		43		 2004.536
+% 		44		 2004.787
+% 		45		 2005.038
+% 		46		 2005.285
+% 		47		 2005.534
+% 		48		 2005.786
+% 		49		 2006.038
+% 		50		 2006.285
+% 		51		 2006.534
+% 		52		 2006.786
+% 		53		 2007.038
+% 		54		 2007.285
+% 		55		 2007.534
+% 		56		 2007.786
+% 		57		 2008.038
+% 		58		 2008.287
+% 		59		 2008.536
+% 		60		 2008.787
+% 		61		 2009.038
+% 		62		 2009.285
+% 		63		 2009.534
+% 		64		 2009.786
+% 		65		 2010.038
+% 		66		 2010.285
+% 		67		 2010.534
+% 		68		 2010.786
+% 		69		 2011.038
+% 		70		 2011.285
+% 		71		 2011.534
+% 		72		 2011.786
+%
+%
+%   Usage:
+%      % Get data at specific time:
+%      % In this example, T_out = [2006.038; 2007.038; 2008.038].
+%      [dh_raw_out dh_fil_out T_out] = interpPaolo2015(md.mesh.x, md.mesh.y, [2006.038; 2007.038; 2008.038]);
+%
+% 		 % Get all data in the provided years:
+%      % In this example, T_out = [2006.038; 2006.285; 2006.534; 2006.786; 2007.038; 2007.285; 2007.534; 2007.786]. 
+%      [dh_raw dh_fil T_out] = interpPaolo2015(md.mesh.x, md.mesh.y, [2006; 2007]);
+%
+% 		 % Get all data set:
+%      % In this example, T_out = [1994.038; ... ; 2011.786]. (all available time)
+%      [dh_raw dh_fil T_out] = interpPaolo2015(md.mesh.x, md.mesh.y);
+%
+%
+%   Info from ice_shelf_dh_v1.h5:	
+%      The dataset is a rectangular grid (480 points in x, 80 points in y) with x- and y-axes being longitude and latitude, respectively.
+%      Longitude/latitude coordinates refer to the center of the grid cells.
+%      The grid has a resolution of lon x lat: 0.75 x 0.25 deg (~27 km at latitude -71).
+%
+%
+%   Data are (grids in HDF5, ice_shelf_dh_v1.h5):
+%      time         : time coordinate [year; 72 values at 3-month time step]
+%      lon          : x-coordinate [degrees east; range 0/360]
+%      lat          : y-coordinate [degrees north; range -82/-62]
+%      height_raw   : Raw time series of height change [m]     
+%      height_filt  : Filtered time series of height change [m]
+%      height_err   : 2-standard-error time series [m]
+%
+
+if nargin>4 | nargin<2,
+	error('nargin not supported yet!');
+end
+
+% read data
+switch (oshostname()),
+	case {'ronne'}
+		h5 = '/home/ModelData/Antarctica/Paolo2015/ice_shelf_dh_v1.h5';
+	otherwise
+		error('hostname not supported yet');
+end
+
+disp(['   -- Paolo''s Time Series 1994 to 2012: loading data set']);
+t_data = h5read(h5,'/time');
+lat_data = h5read(h5,'/lat');
+lon_data = h5read(h5,'/lon');
+dh_raw_data = h5read(h5,'/height_raw');
+dh_fil_data = h5read(h5,'/height_filt');
+
+% set interpolation method
+if nargin<4,
+	method = 'linear'; % default method
+end
+
+% get the positions related to T
+if nargin<3,
+	pos = 1:length(t_data); % all available data		
+else
+	% initial check %{{{
+	if size(T,2)>1 | size(T,1)<1 | size(T,2)<1,
+		error('Size of input T not supported!');
+	end 
+	if size(X,1)>1 & size(X,2)>1
+		error('Size of input X not supported! X and Y should be vectors');
+	end
+	%}}}
+	% Loop over T
+	pos = [];
+	epsilon = 5e-4;
+	for i=1:length(T),
+		% find specific time
+		flag = (T(i)-epsilon<t_data & T(i)+epsilon>t_data);
+		if ~any(flag), 
+			% ok, find the time related to the requested year
+			flag = (T(i)==floor(t_data));
+		end
+		if ~any(flag)
+			error(['requested time (' num2str(T(i)) ') not found in data set'])
+		end
+		pos = [pos; find(flag)];
+	end
+	% Check if there is repeated positions
+	posunique = unique(pos);
+	if length(posunique)~=length(pos),
+		disp('   WARNING: found repeated positions in requested time');
+	end
+end
+
+% convert x/y to lat/lon:
+[LAT, LON] = xy2ll(X,Y,-1); % attention: it is assumed that X and Y comes in Polar Stereographic Projection (Std Latitude: 71S Meridian: 0E)
+posLON = find(LON<0);
+LON(posLON) =360+LON(posLON);
+
+disp(['   -- Paolo''s Time Series 1994 to 2012: interpolating in Lat/Long grid']);
+dh_raw_out = [];
+dh_fil_out = [];
+for i=1:length(pos),
+	disp(['      step = ' int2str(i) '/' int2str(length(pos)) ', position = ' int2str(pos(i)) ', year = '  num2str(t_data(pos(i)))]);
+	dh_raw_out = [dh_raw_out InterpFromGrid(lat_data(1,:),lon_data(:,1),dh_raw_data(:,:,pos(i)),LAT,LON,method)];
+	dh_fil_out = [dh_fil_out InterpFromGrid(lat_data(1,:),lon_data(:,1),dh_fil_data(:,:,pos(i)),LAT,LON,method)];
+end
+
+T_out = t_data(pos);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpRACMO1km.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpRACMO1km.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpRACMO1km.m	(revision 27955)
@@ -0,0 +1,37 @@
+function [output] = interpRACMO1km(X,Y),
+
+switch oshostname(),
+	case {'ronne'}
+		rootname='/home/ModelData/Greenland/RACMO2_1km/SMB_MEAN1960-1989_150m.nc';
+	case {'totten'}
+		rootname='/totten_1/ModelData/Greenland/RACMO2_1km/SMB_MEAN1960-1989_150m.nc';
+	otherwise
+		error('machine not supported yet');
+end
+verbose = 1;
+
+xdata = double(ncread(rootname,'xaxis'));
+ydata = double(ncread(rootname,'yaxis'));
+
+offset=2;
+
+xmin=min(X(:)); xmax=max(X(:));
+posx=find(xdata<=xmax);
+id1x=max(1,find(xdata>=xmin,1)-offset);
+id2x=min(numel(xdata),posx(end)+offset);
+
+ymin=min(Y(:)); ymax=max(Y(:));
+posy=find(ydata<=ymax);
+id1y=max(1,find(ydata>=ymin,1)-offset);
+id2y=min(numel(ydata),posy(end)+offset);
+
+if verbose, disp('   -- RACMO 1-km: reading smb'); end
+data  = double(ncread(rootname,'SMB',[id1x id1y],[id2x-id1x+1 id2y-id1y+1],[1 1]))';
+xdata=xdata(id1x:id2x);
+ydata=ydata(id1y:id2y);
+data(find(data==-9999))=NaN;
+
+if verbose, disp('   -- RACMO 1-km: interpolating (assuming rho_ice = 917 kg/m^3)'); end
+%converting from mm / yr water eq to m/yr ice eq
+data = data/1000 * 1000/917;
+output = InterpFromGrid(xdata,ydata,data,double(X),double(Y));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpRACMOant.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpRACMOant.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpRACMOant.m	(revision 27955)
@@ -0,0 +1,18 @@
+function smb = interpRACMOant(x,y);
+
+switch oshostname(),
+	case {'ronne'}
+		smbfile = '/home/ModelData/Antarctica/RACMO2SMB/SMB_RACMO2.3_1979_2011.nc';
+	case {'totten'}
+		smbfile = '/totten_1/ModelData/Antarctica/RACMO2SMB/SMB_RACMO2.3_1979_2011.nc';
+	otherwise
+		error('machine not supported yet');
+end
+	LAT=ncread(smbfile,'lat2d')';
+	LON=ncread(smbfile,'lon2d')';
+	SMB=ncread(smbfile,'SMB')';
+	[X Y]=ll2xy(LAT,LON,-1,0,71);
+
+	disp('   -- RACMO2.3 1979 - 2011: interpolating (assuming rho_ice = 917 kg/m^3)');
+	rho_ice = 917;
+	smb = griddata(X,Y,SMB,x,y) / 917;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpREMA.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpREMA.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpREMA.m	(revision 27955)
@@ -0,0 +1,64 @@
+function sout = interpREMA(X,Y),
+
+switch oshostname(),
+	case {'ronne'}
+		remapath='/home/ModelData/Antarctica/REMA/REMA_200m_dem_filled.tif';
+	case {'totten'}
+		remapath='/totten_1/ModelData/Antarctica/REMA/REMA_200m_dem_filled.tif';
+	otherwise
+		error('machine not supported yet');
+end
+
+usemap = 0;
+if license('test','map_toolbox')==0,
+	disp('WARNING: map toolbox not installed, trying house code');
+	usemap = 0;
+elseif license('checkout','map_toolbox')==0
+	disp('WARNING: map toolbox not available (checkout failed), trying house code');
+	usemap = 0;
+end
+
+if usemap,
+	[data,R] = geotiffread(remapath);
+	data=double(flipud(data));
+	xdata=R.XLimWorld(1):R.DeltaX:R.XLimWorld(2); xdata=xdata(:);
+	xdata =(xdata(1:end-1)+xdata(2:end))/2;
+	ydata=R.YLimWorld(2):R.DeltaY:R.YLimWorld(1); ydata=flipud(ydata(:));
+	ydata =(ydata(1:end-1)+ydata(2:end))/2;
+else
+
+	%Get image info
+	Tinfo = imfinfo(remapath);
+	N     = Tinfo.Width;
+	M     = Tinfo.Height;
+	dx    = Tinfo.ModelPixelScaleTag(1);
+	dy    = Tinfo.ModelPixelScaleTag(2);
+	minx  = Tinfo.ModelTiepointTag(4);
+	maxy  = Tinfo.ModelTiepointTag(5);
+
+	%Generate vectors
+	xdata = minx + dx/2 + ((0:N-1).*dx);
+	ydata = maxy - dy/2 - ((M  -1:-1:0).*dy);
+	ydata = fliplr(ydata);
+
+	%Get pixels we are interested in
+	offset=2;
+	xmin=min(X(:)); xmax=max(X(:));
+	posx=find(xdata<=xmax);
+	id1x=max(1,find(xdata>=xmin,1)-offset);
+	id2x=min(numel(xdata),posx(end)+offset);
+
+	ymin=min(Y(:)); ymax=max(Y(:));
+	posy=find(ydata>=ymin);
+	id1y=max(1,find(ydata<=ymax,1)-offset);
+	id2y=min(numel(ydata),posy(end)+offset);
+
+	data  = double(imread(remapath,'PixelRegion',{[id1y,id2y],[id1x,id2x]}));
+	xdata=xdata(id1x:id2x);
+	ydata=ydata(id1y:id2y);
+end
+
+%convert no coverage data
+data(find(data==-9999))=NaN;
+
+sout = InterpFromGrid(xdata,ydata,data,X,Y);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpRTopo2.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpRTopo2.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpRTopo2.m	(revision 27955)
@@ -0,0 +1,61 @@
+function [output] = interpRTopo2(X,Y,varargin),
+%INTERPRTOPO2 - interp from RTOPO-2 onto X and Y
+%
+%   Usage:
+%      bed = interpRTopo2(X,Y,varargin),
+%
+%   varargin = 1 (Greenland), default
+%             -1 (Antarctica)
+
+switch oshostname(),
+	case {'ronne'}
+		rootname='/home/ModelData/Global/RTopo-2/RTopo-2.0.1_30sec_bedrock_topography.nc';
+	case {'totten'}
+		rootname='/totten_1/ModelData/Global/RTopo-2/RTopo-2.0.1_30sec_bedrock_topography.nc';
+	otherwise
+		error('machine not supported yet');
+end
+verbose = 1;
+
+if nargin==3,
+	hemisphere = varargin{1};
+else
+	hemisphere = +1;
+end
+if abs(hemisphere)~=1,
+	error('hemisphere should be +/-1');
+end
+
+if hemisphere==+1,
+	if verbose, disp('   -- RTopo-2: convert to lat/lon using Greenland projection'); end
+	[LAT,  LON  ] = xy2ll(double(X(:)),double(Y(:)),+1,45,70);
+else
+	if verbose, disp('   -- RTopo-2: convert to lat/lon using Antarctica projection'); end
+	[LAT,  LON  ] = xy2ll(double(X(:)),double(Y(:)),-1,0,71);
+end
+
+Y=reshape(LAT,size(X)); X=reshape(LON,size(X));
+
+xdata = double(ncread(rootname,'lon'));
+ydata = double(ncread(rootname,'lat'));
+
+offset=2;
+
+xmin=min(X(:)); xmax=max(X(:));
+posx=find(xdata<=xmax);
+id1x=max(1,find(xdata>=xmin,1)-offset);
+id2x=min(numel(xdata),posx(end)+offset);
+
+ymin=min(Y(:)); ymax=max(Y(:));
+posy=find(ydata<=ymax);
+id1y=max(1,find(ydata>=ymin,1)-offset);
+id2y=min(numel(ydata),posy(end)+offset);
+
+if verbose, disp('   -- RTopo-2: reading bed topography'); end
+data  = double(ncread(rootname,'bedrock_topography',[id1x id1y],[id2x-id1x+1 id2y-id1y+1],[1 1]))';
+xdata=xdata(id1x:id2x);
+ydata=ydata(id1y:id2y);
+data(find(data==-9999))=NaN;
+
+if verbose, disp('   -- RTopo-2: interpolating'); end
+output = InterpFromGrid(xdata,ydata,data,double(X),double(Y));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpRignot2012.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpRignot2012.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpRignot2012.m	(revision 27955)
@@ -0,0 +1,36 @@
+function [vxout vyout]= interpRignot2012(X,Y),
+
+filename = '/totten_1/ModelData/Greenland/VelMouginot/RignotGreenland2012Vel.mat';
+
+
+%Figure out what subset of the matrix should be read
+load(filename,'x','y');
+velfile = matfile(filename);
+
+offset=2;
+
+xmin=min(X(:)); xmax=max(X(:));
+posx=find(x<=xmax);
+id1x=max(1,find(x>=xmin,1)-offset);
+id2x=min(numel(x),posx(end)+offset);
+
+ymin=min(Y(:)); ymax=max(Y(:));
+%posy=find(y>=ymin);
+%id1y=max(1,find(y<=ymax,1)-offset);
+%id2y=min(numel(y),posy(end)+offset);
+posy=find(y<=ymax);
+id1y=max(1,find(y>=ymin,1)-offset);
+id2y=min(numel(y),posy(end)+offset);
+
+vx = velfile.vx(id1y:id2y,id1x:id2x);
+vy = velfile.vy(id1y:id2y,id1x:id2x);
+x = x(id1x:id2x);
+y = y(id1y:id2y);
+
+%load(filename);
+vxout = InterpFromGrid(x,y,double(vx),X,Y);
+vyout = InterpFromGrid(x,y,double(vy),X,Y);
+
+if nargout==1,
+	vxout = sqrt(vxout.^2+vyout.^2);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpRignotIceShelfMelt.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpRignotIceShelfMelt.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpRignotIceShelfMelt.m	(revision 27955)
@@ -0,0 +1,31 @@
+function output = interpRignotIceShelfMelt(X,Y,string)
+%INTERPRIGNOTICESHELFMELT - interp melt rates from Rignot et al. 2013
+%
+%   Usage:
+%      output = interpRignotIceShelfMelt(X,Y)
+
+switch (oshostname())
+	case {'ronne'}
+		rignotmelt='/home/ModelData/Antarctica/RignotMeltingrate/Ant_MeltingRate.nc';
+	case {'totten'}
+		rignotmelt='/totten_1/ModelData/Antarctica/RignotMeltingrate/Ant_MeltingRate.nc';
+	case {'thwaites','murdo','astrid'}
+		rignotmelt=['/home/seroussi/Data/Ant_MeltingRate.nc'];
+	otherwise
+		error('hostname not supported yet');
+end
+
+if nargin==2,
+	string = 'melt_actual';
+end
+
+disp(['   -- Rignot Ice Shelf Melt: loading ' string]);
+xdata = double(ncread(rignotmelt,'xaxis'));
+ydata = double(ncread(rignotmelt,'yaxis'));
+
+disp(['   -- Rignot Ice Shelf Melt: loading' string]);
+data  = double(ncread(rignotmelt,string))';
+
+disp(['   -- Rignot Ice Shelf Melt: interpolating ' string]);
+output = InterpFromGrid(xdata,ydata,data,X(:),Y(:));
+output = reshape(output,size(X,1),size(X,2));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpSeaRISE.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpSeaRISE.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpSeaRISE.m	(revision 27955)
@@ -0,0 +1,86 @@
+function [dataout] = interpSeaRISE(X,Y,string,varargin),
+%INTERPSEARISE - interpolate SeaRISE data
+%
+%   Available data:
+%      1.  sealeveltimes
+%      2.  dhdt
+%      3.  surfvelmag
+%      4.  balvelmag
+%      5.  oisotopestimes
+%      6.  bheatflx
+%      7.  presprcp
+%      8.  sealevel_time_series
+%      9.  usrf
+%      10. mapping
+%      11. surfvely
+%      12. surfvelx
+%      13. topg
+%      14. landcover
+%      15. temp_time_series
+%      16. thk
+%      17. time
+%      18. oisotopes_time_series
+%      19. runoff
+%      20. smb
+%      21. airtemp2m
+%      22. surftemp
+%
+%   Usage:
+%      [dataout] = interpBedmap2(X,Y,string)
+
+verbose=0;
+
+if nargin==3,
+	hemisphere = +1;
+else
+	hemisphere = varargin{1};
+end
+
+
+%read data
+switch (oshostname()),
+	case {'ronne'}
+		if hemisphere==1,
+			searisenc='/home/ModelData/SeaRISE/Greenland_5km_dev1.2.nc';
+		elseif hemisphere==-1,
+			searisenc='/home/ModelData/SeaRISE/Antarctica_5km_dev1.0.nc';
+		end
+	case {'thwaites','murdo','astrid'}
+		if hemisphere==1,
+			searisenc='/u/astrid-r1b/ModelData/SeaRISE/Greenland5km_v1.2/Greenland_5km_dev1.2.nc';
+		elseif hemisphere==-1,
+			searisenc='/u/astrid-r1b/ModelData/SeaRISE/Antarctica5km_shelves_v1.0/Antarctica_5km_dev1.0.nc';
+		end
+	case {'totten'}
+		if hemisphere==1,
+			searisenc='/totten_1/ModelData/SeaRISE/Greenland_5km_dev1.2.nc';
+		elseif hemisphere==-1,
+			searisenc='/totten_1/ModelData/SeaRISE/Antarctica_5km_dev1.0.nc';
+		end
+	otherwise
+		error('hostname not supported yet');
+end
+
+%convert coordinates to SeaRISE projection
+if verbose, disp('   -- SeaRISE: converting coordinates'); end
+if hemisphere==1,
+	[LAT,  LON  ] = xy2ll(double(X(:)),double(Y(:)),+1,45,70);
+	[xproj,yproj] = ll2xy(LAT,LON  ,+1,39,71);
+elseif hemisphere==-1,
+	xproj=X; yproj=Y;
+end
+
+if verbose, disp('   -- SeaRISE: loading coordinates'); end
+xdata = double(ncread(searisenc,'x1'));%*1000;
+ydata = double(ncread(searisenc,'y1'));%*1000;
+
+if verbose, disp(['   -- SeaRISE: loading ' string]); end
+data  = double(ncread(searisenc,string))';
+
+if verbose, disp(['   -- SeaRISE: interpolating ' string]); end
+if strcmpi(string,'LandMask');
+	dataout = InterpFromGrid(xdata,ydata,data,xproj,yproj,'nearest');
+else
+	dataout = InterpFromGrid(xdata,ydata,data,xproj,yproj);
+end
+dataout = reshape(dataout,size(X,1),size(X,2));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpShepherd2019.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpShepherd2019.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpShepherd2019.m	(revision 27955)
@@ -0,0 +1,55 @@
+function dhdt=interpShepherd2019(X,Y,string,varargin)
+%INTERPSHEPHERD2019 - interpolate Shepherd2019 data
+%
+%   Available data:
+%      1.  dhdt_1992_1996
+%      2.  dhdt_1997_2001
+%      3.  dhdt_2002_2006
+%      4.  dhdt_2007_2011
+%      5.  dhdt_2012_2016
+%      6.  dhdt_1992_2017
+%      7.  uncert_1992_1996
+%      8.  uncert_1997_2001
+%      9.  uncert_2002_2006
+%      10.  uncert_2007_2011
+%      11.  uncert_2012_2016
+%      12.  uncert_1992_2017
+%
+%   Usage:
+%      [dataout] = interpShepherd2019(X,Y,'dhdt_1992_2017')
+
+options={'dhdt_1992_1996','dhdt_1997_2001','dhdt_2002_2006','dhdt_2007_2011','dhdt_2012_2016','dhdt_1992_2017',...
+			'uncert_1992_1996','uncert_1997_2001','uncert_2002_2006','uncert_2007_2011','uncert_2012_2016','uncert_1992_2017'};
+tf=strcmp(string,options);
+
+if ~any(tf)
+	disp('String not available!');
+   disp('The options are:');
+   disp(options);
+   error('String not available. See message above.');
+end
+
+switch oshostname(),
+   case {'ronne'}
+		nc='/home/ModelData/Antarctica/DHDTShepherd/antarctic_dhdt_5km_grid_1992_2017.nc';
+	case {'totten'}
+		nc='/totten_1/ModelData/Antarctica/CPOM_dhdt/antarctic_dhdt_5km_grid_1992_2017.nc';
+	case {'recruta'}
+		nc='/home/santos/ModelData/CPOM_dhdt_shepherd_2019/antarctic_dhdt_5km_grid_1992_2017.nc';
+	otherwise
+      error('machine not supported yet');
+end
+
+if nargin==3,
+   method='linear';% default
+else
+   method=varargin{1};
+end
+
+xdata=double(ncread(nc,'x'));
+ydata=double(ncread(nc,'y'));
+data=double(ncread(nc,string))';
+
+dhdt=InterpFromGrid(xdata,ydata,data,X,Y,method);
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpSmith2020.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpSmith2020.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modeldata/interpSmith2020.m	(revision 27955)
@@ -0,0 +1,51 @@
+function dhdt=interpSmith2020(X,Y,string,varargin)
+%INTERPSMITH2020 - interpolate Smith2020 data
+%
+%	Available data:
+%		Filtered mass-change maps, for display only, units of m(ice-equivalent)/yr:
+%		ais_floating_filt
+%		ais_grounded_filt
+%		gris_filt
+%
+%		Raw mass-change maps, suitable for generation of basin-by-basin mass-change estimates, units of m(ice-equivalent)/yr:
+%		ais_floating
+%		ais_grounded
+%		gris
+%
+%   Usage:
+%      [dataout] = interpSmith2020(X,Y,'ais_floating_filt')
+
+options={'ais_floating_filt','ais_grounded_filt','gris_filt','ais_floating','ais_grounded','gris'};
+tf=strcmp(string,options);
+
+if ~any(tf)
+	disp('String not available!');
+	disp('The options are:');
+	disp(options);
+	error('String not available. See message above.');
+end
+	
+switch oshostname(),
+	case {'ronne'}
+		if strcmp(string,'gris_filt') | strcmp(string,'gris')
+			path='/home/ModelData/Greenland/DHDTSmith/';
+		else
+			path='/home/ModelData/Antarctica/DHDTSmith/';
+		end
+	case {'totten'}
+		if strcmp(string,'gris_filt') | strcmp(string,'gris')
+			path='/totten_1/ModelData/Greenland/DHDTSmith/';
+		else
+			path='/totten_1/ModelData/Antarctica/DHDTSmith/';
+		end
+	case {'recruta'}
+		path='/home/santos/ModelData/ICESat1_ICESat2_mass_change/';
+	otherwise
+		error('machine not supported yet');
+end
+
+file=strcat(path,string,'.tif');
+
+dhdt=interpFromGeotiff(file,X,Y);
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/BamgConvertMesh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/BamgConvertMesh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/BamgConvertMesh.m	(revision 27955)
@@ -0,0 +1,17 @@
+function [bamggeom, bamgmesh] = BamgConvertMesh(index,x,y);
+%BAMGCONVERTMESH - Convert [x y index] to a bamg geom and mesh geom
+%   
+%   Usage:
+%      [bamggeom, bamgmesh] = BamgConvertMesh(index,x,y);
+%   
+%   index: index of the mesh
+%   x,y: coordinates of the nodes
+
+% Check usage
+if nargin~=3
+	help BamgConvertMesh
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[bamggeom, bamgmesh] = BamgConvertMesh_matlab(index,x,y);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/BamgConvertMesh.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/BamgConvertMesh.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/BamgConvertMesh.py	(revision 27955)
@@ -0,0 +1,18 @@
+from BamgConvertMesh_python import BamgConvertMesh_python
+
+
+def BamgConvertMesh(index, x, y):
+    """
+    BAMGCONVERTMESH - Convert [index, x, y] to a bamg geom and mesh geom
+
+    Usage:
+        bamggeom, bamgmesh = BamgConvertMesh(index, x, y)
+        index: index of the mesh
+        x, y: coordinates of the nodes
+    """
+
+    #Call mex module
+    bamggeom, bamgmesh = BamgConvertMesh_python(index, x, y)
+
+    #return
+    return bamggeom, bamgmesh
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/BamgMesher.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/BamgMesher.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/BamgMesher.m	(revision 27955)
@@ -0,0 +1,19 @@
+function [bamgmesh,bamggeom] = BamgMesher(bamgmesh,bamggeom,bamgoptions);
+%BAMGMESHER
+%
+%   Usage:
+%      [bamgmesh, bamggeom] = BamgMesher(bamgmesh,bamggeom,bamgoptions);
+%
+%   bamgmesh: input bamg mesh
+%   bamggeom: input bamg geometry for the mesh
+%   bamgoptions: options for the bamg mesh
+
+% Check usage
+if nargin~=3
+	help BamgMesher
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[bamgmesh, bamggeom] = BamgMesher_matlab(bamgmesh,bamggeom,bamgoptions);
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/BamgMesher.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/BamgMesher.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/BamgMesher.py	(revision 27955)
@@ -0,0 +1,18 @@
+from BamgMesher_python import BamgMesher_python
+
+
+def BamgMesher(bamgmesh, bamggeom, bamgoptions):
+    """BAMGMESHER
+
+    bamgmesh: input bamg mesh
+    bamggeom: input bamg geometry for the mesh
+    bamgoptions: options for the bamg mesh
+
+    Usage:
+        bamgmesh, bamggeom = BamgMesher(bamgmesh, bamggeom, bamgoptions)
+    """
+
+    # Call module
+    bamgmesh, bamggeom = BamgMesher_python(bamgmesh, bamggeom, bamgoptions)
+
+    return bamgmesh, bamggeom
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/BamgTriangulate.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/BamgTriangulate.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/BamgTriangulate.m	(revision 27955)
@@ -0,0 +1,17 @@
+function index = BamgTriangulate(x,y);
+%BAMGTRIANGULATE - Delaunay Triangulation of a list of points
+%
+%   Usage:
+%      index=BamgTriangulate(x,y)
+%
+%      index: index of the triangulation
+%      x,y: coordinates of the nodes
+
+%Check usage
+if nargin~=2
+	help BamgTriangulate
+	error('Wrong usage (see above)');
+end
+
+%Call mex module
+[index] = BamgTriangulate_matlab(x,y);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/BamgTriangulate.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/BamgTriangulate.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/BamgTriangulate.py	(revision 27955)
@@ -0,0 +1,17 @@
+from BamgTriangulate_python import BamgTriangulate_python
+
+
+def BamgTriangulate(x, y):
+    """BAMGTRIANGULATE
+
+    Usage:
+        index = BamgTriangulate(x, y)
+
+        index   : index of the triangulation
+        x, y    : coordinates of the nodes
+    """
+
+    # Call Python module
+    index = BamgTriangulate_python(x, y)
+
+    return index[0]
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/Chaco.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/Chaco.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/Chaco.m	(revision 27955)
@@ -0,0 +1,22 @@
+function [assgn] = Chaco(A,vwgts,ewgts,x,y,z,options,nparts,goal);
+%CHACO
+%
+%   Usage:
+%      [assgn] = Chaco(A,vwgts,ewgts,x,y,z,options,nparts,goal);
+%
+%   A:			Input adjacency matrix
+%   vwgts:		weights for all vertices
+%   ewgts:		weights for all edges
+%   x,y,z:		coordinates for inertial method
+%   options:		architecture and partitioning options
+%   nparts:		number of parts options
+%   goal:		desired set sizes
+
+% Check usage
+if nargin~=9
+	help Chaco
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[assgn] = Chaco_matlab(A,vwgts,ewgts,x,y,z,options,nparts,goal);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/Chaco.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/Chaco.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/Chaco.py	(revision 27955)
@@ -0,0 +1,20 @@
+from Chaco_python import Chaco_python
+
+
+def Chaco(A, vwgts, ewgts, x, y, z, options, nparts, goal):
+    '''CHACO
+
+   Usage:
+      assgn = Chaco(A, vwgts, ewgts, x, y, z, options, nparts, goal)
+
+   A:            Input adjacency matrix
+   vwgts:        weights for all vertices
+   ewgts:        weights for all edges
+   x, y, z:        coordinates for inertial method
+   options:        architecture and partitioning options
+   nparts:        number of parts options
+   goal:        desired set sizes
+'''
+    # Call mex module
+    assgn = Chaco_python(A, vwgts, ewgts, x, y, z, options, nparts, goal)
+    return assgn
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/ContourToMesh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/ContourToMesh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/ContourToMesh.m	(revision 27955)
@@ -0,0 +1,54 @@
+function varargout = ContourToMesh(index,x,y,contourname,interptype,edgevalue);
+%CONTOURTOMESH - Flag the elements or nodes inside a contour
+%
+%   Usage:
+%      [in_nod,in_elem]=ContourToMesh(index,x,y,contourname,interptype,edgevalue);
+%	
+%   index,x,y: mesh triangulation
+%   contourname: name of .exp or .shp file containing the contours.
+%   interptype: string defining type of interpolation ('element', or 'node').
+%   edgevalue: integer (0, 1, or 2) defining the value associated to the nodes on the edges of the polygons.
+%   in_nod: vector of flags (0 or 1), of size nods if interptype is set to 'node' or 'element and node',
+%      or of size 0 otherwise
+%   in_elem: vector of flags (0 or 1), of size nel if interptype is set to 'element' or 'element and node',
+%      or of size 0 otherwise.    
+%
+%   Example:
+%      in_nod=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','node',1)
+%      in_elements=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element',0)
+%      [in_nodes,in_elements]=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element and node',0)
+
+%Check usage
+if nargin~=6
+	help ContourToMesh
+	error('Wrong usage(see above)');
+end
+
+%Some conversion of files: 
+if ischar(contourname),
+	[path,name,ext]=fileparts(contourname); 
+	if strcmpi(ext,'.shp'),
+		%read contour from shapefile
+		contourname=shpread(contourname); 
+
+		%FIXME: I don't think we need to convert it to a file, ContourToMesh_matlab should be able to take a structure
+		%write it to a temporary filename: 
+		%contourname=[tempname '.exp'];
+		%expwrite(contour,contourname);
+	end
+end
+
+%Call mex module
+[in_nod,in_elem] = ContourToMesh_matlab(index,x,y,contourname,interptype,edgevalue);
+
+switch(interptype)
+	case 'element'
+		varargout{1} = in_elem;
+	case 'node'
+		varargout{1} = in_nod;
+	case 'node and element'
+		varargout{1} = in_nod;
+		varargout{2} = in_elem;
+	otherwise
+		error(['interpolation type ''' interptype ''' not supported yet']);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/ContourToMesh.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/ContourToMesh.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/ContourToMesh.py	(revision 27955)
@@ -0,0 +1,36 @@
+from ContourToMesh_python import ContourToMesh_python
+
+
+def ContourToMesh(index, x, y, contourname, interptype, edgevalue):
+    """
+
+    CONTOURTOMESH - Flag the elements or nodes inside a contour
+
+        Usage:
+            [in_nod, in_elem] = ContourToMesh(index, x, y, contourname, interptype, edgevalue)
+
+            index, x, y: mesh triangulation.
+            contourname: name of .exp file containing the contours.
+            interptype: string defining type of interpolation ('element', or 'node').
+            edgevalue: integer (0, 1 or 2) defining the value associated to the nodes on the edges of the polygons.
+            in_nod: vector of flags (0 or 1), of size nel if interptype is set to 'node' or 'element and node',
+                or of size 0 otherwise.
+            in_elem: vector of flags (0 or 1), of size nel if interptype is set to 'element' or 'element and node',
+                or of size 0 otherwise.
+
+        Example:
+            in_nod = ContourToMesh(md.elements, md.x, md.y, 'Contour.exp', 'node', 1)
+            in_elements = ContourToMesh(md.elements, md.x, md.y, 'Contour.exp', 'element', 0)
+            [in_nodes, in_elements] = ContourToMesh(md.elements, md.x, md.y, 'Contour.exp', 'element and node', 0)
+    """
+    #Call mex module
+    in_nod, in_elem = ContourToMesh_python(index, x, y, contourname, interptype, edgevalue)
+
+    if interptype == 'element':
+        return in_elem
+    elif interptype == 'node':
+        return in_nod
+    elif interptype == 'element and node':
+        return in_nod, in_elem
+    else:
+        raise TypeError('interpolation type "{}" not supported yet'.format(interptype))
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/ContourToNodes.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/ContourToNodes.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/ContourToNodes.m	(revision 27955)
@@ -0,0 +1,33 @@
+function flags = ContourToNodes(x,y,contourname,edgevalue);
+%CONTOURTONODES - flags vertices inside contour
+%
+%   Usage:
+%      flags = ContourToNodes(x,y,contourname,edgevalue);
+%
+%   x,y: list of nodes
+%   contourname: name of Argus or Shape file containing the contours, or resulting structure from call to expread
+%   edgevalue: integer (0, 1 or 2) defining the value associated to the nodes on the edges of the polygons
+%   flags: vector of flags (0 or 1), of size nodes
+
+%Check usage
+if nargin~=4,
+	help ContourToNodes
+	error('Wrong usage (see above)');
+end
+
+%Some conversion of files:  
+if ischar(contourname),
+	[path,name,ext]=fileparts(contourname); 
+	if strcmpi(ext,'.shp'),
+		%read contour from shapefile:
+		contourname=shpread(contourname); 
+
+		%FIXME: I don't think we need to convert it to a file, ContourToMesh_matlab should be able to take a structure
+		%write it to a temporary filename: 
+		%contourname=[tempname '.exp'];
+		%expwrite(contour,contourname);
+	end
+end
+
+%Call mex module
+[flags] = ContourToNodes_matlab(x,y,contourname,edgevalue);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/ContourToNodes.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/ContourToNodes.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/ContourToNodes.py	(revision 27955)
@@ -0,0 +1,19 @@
+from ContourToNodes_python import ContourToNodes_python
+
+
+def ContourToNodes(x, y, contourname, edgevalue):
+    """CONTOURTONODES - flags vertices inside contour
+
+    x, y:           list of nodes
+    contourname:    name of .exp/.shp file containing the contours, or resulting structure from call to expread/shpread
+    edgevalue:      integer (0, 1 or 2) defining the value associated to the nodes on the edges of the polygons
+    flags:          vector of flags (0 or 1), of size nodes
+
+    Usage:
+        flags = ContourToNodes(x, y, contourname, edgevalue)
+    """
+
+    # Call Python module
+    flags = ContourToNodes_python(x, y, contourname, edgevalue)
+
+    return flags
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/CoordTransform.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/CoordTransform.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/CoordTransform.m	(revision 27955)
@@ -0,0 +1,44 @@
+function [xout,yout] = CoordTransform(xin,yin,projin,projout)
+%COORDTRANSFORM - use PROJ to transform coordinates
+%
+%   Usage:
+%      [xout,yout] = CoordTransform(xin,yin,projin,projout)
+%      - xin,  yin : input coordinates
+%      - xout, yout: output coordinates (in new projection)
+%      - projin,projout: input/output projection string (PROJ)
+%   
+%   Examples:
+%      [md.mesh.lat md.mesh.long] = CoordTransform(md.mesh.x,  md.mesh.y,   'EPSG:3413','EPSG:4326');
+%      [md.mesh.x   md.mesh.y]    = CoordTransform(md.mesh.lat,md.mesh.long,'EPSG:4326','EPSG:3413');
+%
+%   Example of Projections:
+%      lat/lon    = 'EPSG:4326'  or  lat/lon = '+proj=longlat +datum=WGS84'
+%      Greenland  = 'EPSG:3413' (polar stereographic 70N 45W)
+%      Antarctica = 'EPSG:3031' (polar stereographic 71S 0E)
+%      IBCAO      = 'EPSG:3996' (polar stereographic 75N 0E)
+%      
+%   ll2xy previous default equivalent (uses with Hugues Ellispoid S)
+%      Greenland  = '+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.448564109 +units=m +no_defs'
+%      Antarctica = '+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.448564109 +units=m +no_defs'
+%      Bamber Greenland = '+proj=stere +lat_0=90 +lat_ts=71 +lon_0=-39 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'
+%
+%   This function will only work if PROJ has been installed and --with-proj-dir
+%   option has been set to its location in ISSM configuration
+
+% Check usage
+if nargin~=4
+	help CoordTransform
+	error('Wrong usage (see above)');
+end
+
+% If this function is called from within one of our distributable packages, set 
+% the 'PROJ_LIB' environment variable so that the PROJ binary can find the 
+% assets it needs
+whatproj=what('share/proj');
+if ~isempty(whatproj) && isdir(whatproj.path)
+	setenv('PROJ_LIB', whatproj.path);
+end
+
+% Call mex module
+[xout, yout] = CoordTransform_matlab(xin,yin,projin,projout);
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/DistanceToMaskBoundary.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/DistanceToMaskBoundary.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/DistanceToMaskBoundary.m	(revision 27955)
@@ -0,0 +1,19 @@
+function [distance] = DistanceToMaskBoundary(x,y,mask);
+%DISTANCETOMASKBOUNDARY - Compute distance from any point in a mesh to a mask boundary
+%
+%   This is a multi-threaded mex file
+%   
+%   Usage:
+%      [distance]=DistanceToMaskBoundary(x,y,mask)
+%   
+%   x,y,mask: mesh vertices with corresponding mask values.
+%   distance: distance from x,y to the mask transition between 0 and 1
+
+% Check usage
+if nargin~=3
+	help DistanceToMaskBoundary
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[distance] = DistanceToMaskBoundary_matlab(x,y,mask);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/ElementConnectivity.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/ElementConnectivity.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/ElementConnectivity.m	(revision 27955)
@@ -0,0 +1,14 @@
+function elementconnectivity = ElementConnectivity(elements,nodeconnectivity);
+%ELEMENTCONNECTIVITY - Build element connectivity using node connectivity and elements
+%
+%   Usage:
+%      elementconnectivity = ElementConnectivity(elements,nodeconnectivity);
+
+% Check usage
+if nargin~=2
+	help ElementConnectivity
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+elementconnectivity = ElementConnectivity_matlab(elements,nodeconnectivity);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/ElementConnectivity.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/ElementConnectivity.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/ElementConnectivity.py	(revision 27955)
@@ -0,0 +1,14 @@
+from ElementConnectivity_python import ElementConnectivity_python
+
+
+def ElementConnectivity(elements, nodeconnectivity):
+    """ELEMENTCONNECTIVITY - Build element connectivity using node connectivity and elements
+
+    Usage:
+        elementconnectivity = ElementConnectivity(elements, nodeconnectivity)
+    """
+    
+    # Call Python module
+    elementconnectivity = ElementConnectivity_python(elements, nodeconnectivity)
+
+    return elementconnectivity[0] # NOTE: Value returned from wrapper function is a tuple, the first element of which being the result we actually want
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/ExpSimplify.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/ExpSimplify.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/ExpSimplify.m	(revision 27955)
@@ -0,0 +1,30 @@
+function ExpSimplify(varargin);
+%EXPSIMPLIFY - Simplify an Exp contour
+%
+%   Usage:
+%      ExpSimplify(expfile,tol);
+%
+%   expfile:	name of the expfile
+%   tol:	tolerance (maximal euclidean distance allowed between the new line and a vertex)
+%   min:	minimum number of vertices to save contours in an exp file (default is 3) [OPTIONAL]
+%
+%   Example:
+%      ExpSimplify('file.exp',100);
+%      ExpSimplify('file.exp',100,'min','4');
+
+% Check usage
+if nargin~=2 && nargin~=4
+	help ExpSimplify
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+switch nargin
+	case 2
+		ExpSimplify_matlab(varargin{1},varargin{2});
+	case 4
+		ExpSimplify_matlab(varargin{1},varargin{2},varargin{3},varargin{4});
+	otherwise
+		error('Exp2Kml not supported yet');
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/ExpToLevelSet.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/ExpToLevelSet.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/ExpToLevelSet.m	(revision 27955)
@@ -0,0 +1,52 @@
+function distance = ExpToLevelSet(x,y,contourname);
+%EXPTOLEVELSET - Determine levelset distance between a contour and a cloud of points
+%
+%   Usage:
+%      distance=ExpToLevelSet(x,y,contourname);
+%
+%   x,y:	cloud point
+%   contourname:	name of .exp file containing the contours
+%   distance:	distance vector representing a levelset where the 0 level is one of the contour segments
+%
+%   Example:
+%      distance=ExpToLevelSet(md.mesh.x,md.mesh.y,'Contour.exp');
+
+% Check usage
+if nargin~=3
+	help ExpToLevelSet
+	error('Wrong usage (see above)');
+end
+
+multipleShp = 0;
+
+if ischar(contourname),
+	[path,name,ext]=fileparts(contourname);
+	if strcmpi(ext,'.shp'),
+		%read contour from shapefile
+		contourname=shpread(contourname);
+		if isstruct(contourname)
+			multipleShp = size(contourname, 2);
+		end
+	end
+end
+
+% Call mex module
+if multipleShp>0 
+	% shp file contains multiple contours
+	distance = zeros(length(x)+1, multipleShp);
+	for i = 1:multipleShp
+		distance(1:end-1, i) = ExpToLevelSet_matlab(x,y,contourname(i));
+		% append the NAME information at the end of the distance
+		if isfield(contourname(i),'NAME')
+			distance(end, i) = contourname(i).NAME;
+		elseif isfield(contourname(i),'Date')
+			distance(end, i) = date2decyear(datenum(contourname(i).Date));
+			% to deal with 
+		else
+			distance(end, i) = i;
+		end        
+	end
+else
+	% single shape or exp file
+	distance = ExpToLevelSet_matlab(x,y,contourname);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/ExpToLevelSet.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/ExpToLevelSet.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/ExpToLevelSet.py	(revision 27955)
@@ -0,0 +1,37 @@
+from ExpToLevelSet_python import ExpToLevelSet_python
+from helpers import fileparts
+from shpread import shpread
+
+
+def ExpToLevelSet(x, y, contourname):  # {{{
+    """EXPTOLEVELSET - Determine levelset distance between a contour and a 
+    cloud of points
+
+    Usage:
+        distance = ExpToLevelSet(x, y, contourname)
+
+    x, y:           cloud point
+    contourname:    name of .exp file containing the contours
+    distance:       distance vector representing a levelset where the 0 
+                    level is one of the contour segments
+
+    Example:
+        distance = ExpToLevelSet(md.mesh.x, md.mesh.y, 'Contour.exp')
+
+    TODO:
+    - Need to compile Python version of ExpToLevelSet_matlab for this 
+    to work as intended (see src/m/modules/ExpToLevelSet.m)
+    """
+
+    if isinstance(contourname, str):
+        path, name, ext = fileparts(contourname)
+        if ext == '.shp':
+            #read contour from shapefile
+            contourname = shpread(contourname)
+
+    # NOTE: This module does not currently exist! See TODO list in function 
+    #       header.
+    distance = ExpToLevelSet_python(x, y, contourname)
+
+    return distance
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromGridToMesh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromGridToMesh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromGridToMesh.m	(revision 27955)
@@ -0,0 +1,23 @@
+function data_mesh = InterpFromGridToMesh(x,y,data,x_mesh,y_mesh,default_value);
+%INTERPFROMGRIDTOMESH - Interpolation from a grid onto a list of points
+%
+%   Usage:
+%      data_mesh=InterpFromGridToMesh(x,y,data,x_mesh,y_mesh,default_value);
+%
+%   data:		matrix holding the data to be interpolated onto the mesh
+%   x,y:		coordinates of matrix data (x and y must be in increasing order)
+%   x_mesh,y_mesh:	coordinates of the points onto which we interpolate
+%   default_value:	vector of mesh interpolated data
+%
+%	 Example:
+%      load('velocities.mat');
+%      md.inversion.vx_obs=InterpFromGridToMesh(x_n,y_m,vx,md.mesh.x,md.mesh.y,0);
+
+% Check usage
+if nargin~=6
+	help InterpFromGridToMesh
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+data_mesh=InterpFromGridToMesh_matlab(x,y,data,x_mesh,y_mesh,default_value);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromGridToMesh.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromGridToMesh.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromGridToMesh.py	(revision 27955)
@@ -0,0 +1,24 @@
+import numpy as np
+from InterpFromGridToMesh_python import InterpFromGridToMesh_python
+
+
+def InterpFromGridToMesh(x, y, data, x_mesh, y_mesh, default_value):
+    """
+    INTERPFROMGRIDTOMESH - Interpolation from a grid onto a list of points
+
+   Usage:
+      data_mesh = InterpFromGridToMesh(x, y, data, x_mesh, y_mesh, default_value)
+
+   data:        matrix holding the data to be interpolated onto the mesh
+   x, y:        coordinates of matrix data (x and y must be in increasing order)
+   x_mesh, y_mesh:    coordinates of the points onto which we interpolate
+    default_value:    vector of mesh interpolated data
+
+    Example:
+        load('velocities.mat')
+        md.inversion.vx_obs = InterpFromGridToMesh(x_n, y_m, vx, md.mesh.x, md.mesh.y, 0)
+    """
+    # Call mex module
+    data_mesh = InterpFromGridToMesh_python(x, y, data, x_mesh, y_mesh, default_value)
+    # Return
+    return np.squeeze(data_mesh)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMesh2d.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMesh2d.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMesh2d.m	(revision 27955)
@@ -0,0 +1,41 @@
+function data_prime=InterpFromMesh2d(varargin);
+%INTERPFROMMESH2D
+%
+%   Usage:
+%      data_prime=InterpFromMesh2d(index,x,y,data,x_prime,y_prime);
+%      OR
+%      data_prime=InterpFromMesh2d(index,x,y,data,x_prime,y_prime,default_value);
+%      OR
+%      data_prime=InterpFromMesh2d(index,x,y,data,x_prime,y_prime,default_value,contourname);
+%
+%   index:	index of the mesh where data is defined
+%   x,y:	coordinates of the nodes where data is defined
+%   data:	vector holding the data to be interpolated onto the points
+%   x_prime,y_prime:	coordinates of the mesh vertices onto which we interpolate
+%   default_value:	a scalar or vector of size length(x_prime)
+%   contourname:	linear interpolation will happen on all x_interp,y_interp inside the contour,
+%      default value will be adopted on the rest of the mesh.
+%
+%   data_prime:	vector of prime interpolated data
+
+% Check usage
+if nargin~=6 && nargin~=7 && nargin~=8
+	help InterpFromMesh2d
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+switch nargin
+	case 6
+		data_prime=InterpFromMesh2d_matlab(varargin{1},varargin{2},varargin{3},varargin{4},varargin{5},varargin{6});
+	case 7
+		data_prime=InterpFromMesh2d_matlab(varargin{1},varargin{2},varargin{3},varargin{4},varargin{5},varargin{6},varargin{7});
+	case 8 
+		data_prime=InterpFromMesh2d_matlab(varargin{1},varargin{2},varargin{3},varargin{4},varargin{5},varargin{6},varargin{7},varargin{8});
+	otherwise
+		% NOTE: Should never get here because of previous check
+		error('InterpFromMesh2d not supported');
+end
+
+
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMesh2d.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMesh2d.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMesh2d.py	(revision 27955)
@@ -0,0 +1,41 @@
+from InterpFromMesh2d_python import InterpFromMesh2d_python
+
+
+def InterpFromMesh2d(*args):  # {{{
+    """INTERPFROMMESH2D
+
+    Usage:
+        data_prime = InterpFromMesh2d(index, x, y, data, x_prime, y_prime)
+        OR
+        data_prime = InterpFromMesh2d(index, x, y, data, x_prime, y_prime, default_value)
+        OR
+        data_prime = InterpFromMesh2d(index, x, y, data, x_prime, y_prime, defualt_value, contourname)
+
+    index:              index of the mesh where data is defined
+    x, y:               coordinates of the nodes where data is defined
+    data:               vector holding the data to be intepolated onto the points
+    x_prime, y_prime:   coordinates of the mesh vertices onto which we interpolate
+    default_value:      a scalar or vector of size len(x_prime)
+    contourname:        linear interpolation will happen on all x_interp, y_interp inside the contour, default vlaue will be adopted on the rest of the mesh
+    data_prime:         vector of prime interpolated data
+    """
+
+    # Check usage
+    nargs = len(args)
+    if nargs != 6 and nargs != 7 and nargs != 8:
+        print(InterpFromMesh2d.__doc__)
+        raise Exception('Wrong usage (see above)')
+
+    # Call Python module
+    if nargs == 6:
+        data_prime = InterpFromMesh2d_python(args[0], args[1], args[2], args[3], args[4], args[5])
+    elif nargs == 7:
+        data_prime = InterpFromMesh2d_python(args[0], args[1], args[2], args[3], args[4], args[5], args[6])
+    elif nargs == 8:
+        data_prime = InterpFromMesh2d_python(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7])
+    else:
+        # NOTE: Should never get here because of previous check
+        raise Exception('InterpFromMesh2d not supported')
+
+    return data_prime[0] # NOTE: Value returned from wrapper function is a tuple, the first element of which being the result we actually want
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMeshToGrid.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMeshToGrid.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMeshToGrid.m	(revision 27955)
@@ -0,0 +1,23 @@
+function grid = InterpFromMeshToGrid(index,x,y,data,xgrid,ygrid,default_value);
+%INTERPFROMMESHTOGRID - Interpolation of a data defined on a mesh onto a grid
+%
+%   Usage:
+%      grid = InterpFromMeshToGrid(index,x,y,data,xgrid,ygrid,default_value)
+%
+%   This function is a multi-threaded mex file that interpolates a field defined on a triangular
+%   mesh onto a regular grid.
+%
+%   index,x,y:	delaunay triangulation defining the mesh
+%   meshdata:	vertex values of data to be interpolated
+%
+%   xgrid,ygrid:   parameters that define the grid
+%   default_value: value of points located out of the mesh
+
+% Check usage
+if nargin~=7
+	help InterpFromMeshToGrid
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+grid = InterpFromMeshToGrid_matlab(index,x,y,data,xgrid,ygrid,default_value);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMeshToGrid.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMeshToGrid.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMeshToGrid.py	(revision 27955)
@@ -0,0 +1,20 @@
+from InterpFromMeshToGrid_python import InterpFromMeshToGrid_python
+
+
+def InterpFromMeshToGrid(index, x, y, data, xgrid, ygrid, default_value):
+    """
+    INTERPFROMMESHTOGRID - Interpolation of a data defined on a mesh onto a grid
+
+        This function is a multi - threaded mex file that interpolates a field defined
+        on a triangular mesh onto a regular grid
+
+        index, x, y:    delaunay triangulation defining the mesh
+        meshdata:    vertex values of data to be interpolated
+
+        xgrid, ygrid, :    parameters that define the grid
+        default_value:    value of points located out of the mesh
+    """
+    # Call mex module
+    grid = InterpFromMeshToGrid_python(index, x, y, data, xgrid, ygrid, default_value)
+    # Return
+    return grid
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMeshToMesh2d.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMeshToMesh2d.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMeshToMesh2d.m	(revision 27955)
@@ -0,0 +1,28 @@
+function data_interp = InterpFromMeshToMesh2d(varargin);
+%INTERPFROMMESHTOMESH2D - Interpolation from a 2d triangular mesh onto a list of points
+%
+%   Usage:
+%      data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp);
+%      or data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp,OPTIONS);
+%
+%   index             : index of the mesh where data is defined (e.g. md.mesh.elements)
+%   x,y               : coordinates of the nodes where data is defined
+%   data              : matrix holding the data to be interpolated onto the mesh (one column per field)
+%   x_interp,y_interp : coordinates of the points onto which we interpolate
+%   data_interp       : vector of mesh interpolated data
+%   Available options:
+%      default:	default value if point is outsite of triangulation (instead of linear interpolation)
+%
+%   Example:
+%      load('temperature.mat');
+%      md.initialization.temperature=InterpFromMeshToMesh2d(index,x,y,temperature,md.mesh.x,md.mesh.y);
+%      md.initialization.temperature=InterpFromMeshToMesh2d(index,x,y,temperature,md.mesh.x,md.mesh.y,'default',253);
+
+% Check usage
+if nargin~=6 && nargin~=8
+	help InterpFromMeshToMesh2d
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+data_interp=InterpFromMeshToMesh2d_matlab(varargin{:});
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMeshToMesh2d.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMeshToMesh2d.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMeshToMesh2d.py	(revision 27955)
@@ -0,0 +1,36 @@
+from InterpFromMeshToMesh2d_python import InterpFromMeshToMesh2d_python
+
+
+def InterpFromMeshToMesh2d(*args):
+    """INTERPFROMMESHTOMESH2D - Interpolation from a 2d triangular mesh onto a list of points
+
+    Usage:
+        data_interp = InterpFromMeshToMesh2d(index, x, y, data, x_interp, y_interp)
+        OR
+        data_interp = InterpFromMeshToMesh2d(index, x, y, data, x_interp, y_interp, OPTIONS)
+
+    index:              index of the mesh where data is defined (e.g. md.mesh.elements)
+    x, y:               coordinates of the nodes where data is defined
+    data:               matrix holding the data to be interpolated onto the mesh (one column per field)
+    x_interp, y_interp: coordinates of the points onto which we interpolate
+    data_interp:        vector of mesh interpolated data
+    Available options:
+            default:    default value if point is outsite of triangulation (instead of linear interpolation)
+
+    All fields should be arrays and not lists as this would crash the code.
+
+    Example:
+        load('temperature.mat')
+        md.initialization.temperature = InterpFromMeshToMesh2d(index, x, y, temperature, md.mesh.x, md.mesh.y)
+        md.initialization.temperature = InterpFromMeshToMesh2d(index, x, y, temperature, md.mesh.x, md.mesh.y, 'default', 253)
+    """
+
+    # Check usage
+    nargs = len(args)
+    if nargs != 6 and nargs != 8:
+        print(InterpFromMeshToMesh2d.__doc__)
+        raise Exception('Wrong usage (see above)')
+
+    # Call Python module
+    data_interp = InterpFromMeshToMesh2d_python(*args)
+    return data_interp[0] # NOTE: Value returned from wrapper function is a tuple, the first element of which being the result we actually want
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMeshToMesh3d.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMeshToMesh3d.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMeshToMesh3d.m	(revision 27955)
@@ -0,0 +1,24 @@
+function data_prime = InterpFromMeshToMesh3d(index,x,y,z,data,x_prime,y_prime,z_prime,default_value);
+%INTERPFROMMESHTOMESH3D - Interpolation from a 3d hexahedron mesh onto a list of points
+%
+%   Usage:
+%      index:	index of the mesh where data is defined
+%      x,y,z:	coordinates of the nodes where data is defined
+%      data:	matrix holding the data to be interpolated onto the mesh
+%      x_prime,y_prime,z_prime:	coordinates of the points onto which we interpolate
+%      default_value:	default value if no data is found (holes)
+%      data_prime:	vector of mesh interpolated data
+%
+%   Example:
+%      load('temperature.mat');
+%      md.initialization.temperature=InterpFromMeshToMesh3d(index,x,y,z,temperature,md.mesh.x,md.mesh.y,md.mesh.z,253);
+
+% Check usage
+if nargin~=9
+	help InterpFromMeshToMesh3d
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+data_prime=InterpFromMeshToMesh3d_matlab(index,x,y,z,data,x_prime,y_prime,z_prime,default_value);
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMeshToMesh3d.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMeshToMesh3d.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/InterpFromMeshToMesh3d.py	(revision 27955)
@@ -0,0 +1,29 @@
+from InterpFromMeshToMesh3d_python import InterpFromMeshToMesh3d_python
+
+
+def InterpFromMeshToMesh3d(index, x, y, z, data, x_prime, y_prime, z_prime, default_value):
+    """INTERPFROMMESHTOMESH3D - Interpolation from a 3d hexahedron mesh onto a list of points
+
+    Usage:
+        index:                      index of the mesh where data is defined
+        x, y, z:                    coordinates of the nodes where data is defined
+        data:                       matrix holding the data to be interpolated onto the mesh
+        x_prime, y_prime, z_prime:  coordinates of the points onto which we interpolate
+        default_value:              default value if no data is found (holes)
+        data_prime:                 vector of mesh interpolated data
+
+    Example:
+        load('temperature.mat')
+        md.initialization.temperature = InterpFromMeshToMesh3d(index, x, y, z, temperature, md.mesh.x, md.mesh.y, md.mesh.z, 253)
+    """
+
+    # Check usage
+    nargs = len(args)
+    if nargs != 9:
+        print(InterpFromMeshToMesh3d.__doc__)
+        raise Exception('Wrong usage (see above)')
+
+    # Call Python module
+    data_prime = InterpFromMeshToMesh3d_python(index, x, y, z, data, x_prime, y_prime, z_prime, default_value)
+
+    return data_prime
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/IssmConfig.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/IssmConfig.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/IssmConfig.m	(revision 27955)
@@ -0,0 +1,14 @@
+function value = IssmConfig(string);
+%ISSMCONFIG
+%
+%   Usage:
+%      value = IssmConfig('string');
+
+% Check usage
+if nargin~=1
+	help IssmConfig
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+value = IssmConfig_matlab(string);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/IssmConfig.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/IssmConfig.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/IssmConfig.py	(revision 27955)
@@ -0,0 +1,15 @@
+from IssmConfig_python import IssmConfig_python
+
+
+def IssmConfig(string):
+    """
+    ISSMCONFIG
+
+        Usage:
+            value = IssmConfig('string')
+    """
+
+    # Call mex module
+    value = IssmConfig_python(string)
+    # Return
+    return value
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/Kriging.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/Kriging.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/Kriging.m	(revision 27955)
@@ -0,0 +1,22 @@
+function [predictions errors]= Kriging(x,y,observations,x_interp,y_interp,varargin);
+%KRIGING - Linear predictor
+%   Usage: predictions = Kriging(x,y,observations,x_interp,y_interp,'options');
+%   
+%   available options:
+%	   -'model': Available variogram models 'gaussian' (default),'spherical','power','exponential'
+%	      -'nugget': nugget effect (default 0.2)
+%	      -'range':  for gaussian, spherical and exponential models (default sqrt(3))
+%	      -'sill':   for gaussian, spherical and exponential models (default 1)
+%	      -'slope':  for power model (default 1)
+%	      -'power':  for power model (default 1)
+%	   -'searchradius': search radius for each prediction (default is observations span)
+%	   -'boxlength':    minimum length of quadtree boxes (useful to decrease the number of observations)
+%	   -'maxdata':      minimum number of observations for a prediction (default is 50)
+%	   -'mindata':      maximum number of observations for a prediction (default is 1)
+%	   -'maxtrimming':  maximum trimming value (default is -1.e+21)
+%	   -'mintrimming':  minimum trimming value (default is +1.e+21)
+%	   -'minspacing':   minimum distance between observation (default is 0.01)
+%	   -'numthreads':   number of threads, default is "<<num << "
+
+% Call mex module
+[predictions errors]= Kriging_matlab(x,y,observations,x_interp,y_interp,varargin{:});
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/M1qn3.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/M1qn3.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/M1qn3.m	(revision 27955)
@@ -0,0 +1,11 @@
+function X = M1qn3(varargin);
+%M1QN3 - Data interpolation from a list of (x,y,values) into mesh vertices
+%	   usage:
+%	         X=M1qn3(Xs,Gs);
+%	   where:
+%	      Xs are the X values (m x n, where m is the number of independents, n the number of evaluations previously carried out on X)
+%	      Gs are the G (gradient) values (m x n, where m is the number of independents, n the number of evaluations previously carried out on X,G)
+%	      X - the new direction.
+
+% Call mex module
+X = M1qn3_matlab(varargin{:});
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/MeshPartition.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/MeshPartition.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/MeshPartition.m	(revision 27955)
@@ -0,0 +1,37 @@
+function [element_partitioning, node_partitioning] = MeshPartition(md,numpartitions)
+%MESHPARTITION - Partition mesh according to the number of areas, using Metis library.
+%
+%	   Usage:
+%			[element_partitioning,node_partitioning]=MeshPartition(md,numpartitions);
+%
+%	   element_partitioning: Vector of partitioning area numbers, for every element.
+%	   node_partitioning: Vector of partitioning area numbers, for every node.
+
+% Check usage
+if nargin~=2
+	help MeshPartition
+	error('Wrong usage (see above)');
+end
+
+%Get mesh info from md.mesh
+numberofvertices = md.mesh.numberofvertices;
+numberofelements = md.mesh.numberofelements;
+elements         = md.mesh.elements;
+numberofelements2d = 0;
+numberofvertices2d = 0;
+numberoflayers     = 1;
+elements2d         = [];
+if isa(md.mesh,'mesh3dprisms')
+	elementtype = 'Penta';
+	numberofelements2d = md.mesh.numberofelements2d;
+	numberofvertices2d = md.mesh.numberofvertices2d;
+	numberoflayers     = md.mesh.numberoflayers;
+	elements2d         = md.mesh.elements2d;
+elseif isa(md.mesh,'mesh2d')
+	elementtype = 'Tria';
+elseif isa(md.mesh,'mesh2dvertical')
+	elementtype = 'Tria';
+end
+
+% Call mex module
+[element_partitioning, node_partitioning] = MeshPartition_matlab(numberofvertices,elements,numberofvertices2d,elements2d,numberoflayers,elementtype,numpartitions);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/MeshPartition.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/MeshPartition.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/MeshPartition.py	(revision 27955)
@@ -0,0 +1,39 @@
+from MeshPartition_python import MeshPartition_python
+from mesh3dprisms import *
+from mesh2d import *
+from mesh2dvertical import *
+
+
+def MeshPartition(md, numpartitions):
+    '''MESHPARTITION - Partition mesh according to the number of areas, using Metis library.
+
+       Usage:
+            [element_partitioning, node_partitioning] = MeshPartition(md.mesh, numpartitions)
+
+       element_partitioning: Vector of partitioning area numbers, for every element.
+       node_partitioning: Vector of partitioning area numbers, for every node.
+'''
+    if md is None or numpartitions is None:
+        print((MeshPartition.__doc__))
+        raise RuntimeError('Wrong usage (see above)')
+
+    #Get mesh info from md.mesh
+    numberofvertices = md.mesh.numberofvertices
+    elements = md.mesh.elements
+    numberofvertices2d = 0
+    numberoflayers = 1
+    elements2d = []
+    if isinstance(md.mesh, mesh3dprisms):
+        elementtype = 'Penta'
+        numberofvertices2d = md.mesh.numberofvertices2d
+        numberoflayers = md.mesh.numberoflayers
+        elements2d = md.mesh.elements2d
+    elif isinstance(md.mesh, mesh2d):
+        elementtype = 'Tria'
+    elif isinstance(md.mesh, mesh2dvertical):
+        elementtype = 'Tria'
+
+    #Call module
+    [element_partitioning, node_partitioning] = MeshPartition_python(numberofvertices, elements, numberofvertices2d, elements2d, numberoflayers, elementtype, numpartitions)
+
+    return [element_partitioning, node_partitioning]
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/MeshProfileIntersection.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/MeshProfileIntersection.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/MeshProfileIntersection.m	(revision 27955)
@@ -0,0 +1,31 @@
+function [segments] = MeshProfileIntersection(index,x,y,filename);
+%MESHPROFILEINTERSECTION - Take a .exp file (made of several profiles), and figures out its intersection with a mesh.
+%
+%	   usage:
+%	   [segments]=MeshProfileIntersection(index,x,y,filename);
+%
+%	   input:
+%	        index,x,y is a triangulation
+%	        filename: name of Argus or Shape file containing the segments (can be groups of disconnected segments)
+%	   output:
+%	        segments: array made of x1,y1,x2,y2,element_id lines (x1,y1) and (x2,y2) are segment extremities for a segment 
+%	        belonging to the elemnt_id element. there are as many lines in segments as there are segments intersecting the 
+%	        mesh.
+
+% Check usage
+if nargin~=4
+	help MeshProfileIntersection
+	error('Wrong usage (see above)');
+end
+
+[path,name,ext]=fileparts(filename); 
+if strcmpi(ext,'.shp'),
+	
+	%convert to expfile and store in a temporary directory: 
+	oldfilename=filename;
+	filename=[tempname '.exp'];
+	shp2exp(oldfilename,filename);
+end
+
+% Call mex module
+[segments] = MeshProfileIntersection_matlab(index,x,y,filename);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/MeshProfileIntersection.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/MeshProfileIntersection.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/MeshProfileIntersection.py	(revision 27955)
@@ -0,0 +1,24 @@
+from MeshProfileIntersection_python import MeshProfileIntersection_python
+
+
+def MeshProfileIntersection(index, x, y, filename):
+    """
+    MESHPROFILEINTERSECTION - Takes a .exp file (made of several profiles), and figures out its intersection with a mesh
+        Usage:
+            [segments] = MeshProfileIntersection(index, x, y, filename)
+
+        input:
+              index, x, y is a triangulation
+              filename: name of Argus style .exp file containing the segments (can be groups of disconnected segments)
+
+        output:
+              segments: array made of x1, y1, x2, y2, element_id lines (x1, y1) and (x2, y2) are segment extremities for a segment
+              belonging to the elemnt_id element. there are as many lines in segments as there are segments intersecting the
+              mesh.
+    """
+
+    # Call mex module
+    segments = MeshProfileIntersection_python(index, x, y, filename)
+
+    # Return
+    return segments
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/NodeConnectivity.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/NodeConnectivity.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/NodeConnectivity.m	(revision 27955)
@@ -0,0 +1,14 @@
+function connectivity = NodeConnectivity(elements,numnodes);
+%NODECONNECTIVITY - Build node connectivity from elements
+%
+%   Usage:
+%      connectivity = NodeConnectivity(elements,numnodes);
+
+% Check usage
+if nargin~=2
+	help NodeConnectivity
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+connectivity = NodeConnectivity_matlab(elements,numnodes);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/NodeConnectivity.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/NodeConnectivity.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/NodeConnectivity.py	(revision 27955)
@@ -0,0 +1,14 @@
+from NodeConnectivity_python import NodeConnectivity_python
+
+
+def NodeConnectivity(elements, numnodes):
+    """NODECONNECTIVITY - Build node connectivity from elements
+
+    Usage:
+        connectivity = NodeConnectivity(elements, numnodes)
+    """
+
+    # Call Python module
+    connectivity = NodeConnectivity_python(elements, numnodes)
+
+    return connectivity[0] # NOTE: Value returned from wrapper function is a tuple, the first element of which being the result we actually want
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/PointCloudFindNeighbors.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/PointCloudFindNeighbors.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/PointCloudFindNeighbors.m	(revision 27955)
@@ -0,0 +1,19 @@
+function [flags] = PointCloudFindNeighbors(x,y,mindistance,multithread);
+%POINTCLOUDFINDNEIGHBORS - Flag points that are too near one another, within an array of point coordinates
+%
+%	   Usage:
+%	      [flags]=PointCloudFindNeighbors(x,y,mindistance,multithread);
+%
+%	      x,y: list of points.
+%	      mindistance: minimum distance that should exist between points in the cloud.
+%	      multithread: run multithreaded or not. with multithreads, flags can get 1 and 2 values in duplicates.
+%	      flags: array of flags (flag==1 means point is within mindistance of another point)
+
+% Check usage
+if nargin~=4
+	help PointCloudFindNeighbors
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[flags] = PointCloudFindNeighbors_matlab(x,y,mindistance,multithread);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/ProcessRifts.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/ProcessRifts.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/ProcessRifts.m	(revision 27955)
@@ -0,0 +1,17 @@
+function [index2,x2,y2,segments2,segmentmarkers2,rifts2] = ProcessRifts(index1,x1,y1,segments1,segmentmarkers1);
+%TRIMESHPROCESSRIFTS - Split a mesh where a rift (or fault) is present
+%
+%   Usage: 
+%      [index2,x2,y2,segments2,segmentmarkers2,rifts2]=ProcessRifts(index1,x1,y1,segments1,segmentmarkers1); 
+%   
+%   (index1,x1,y1,segments1,segmentmarkers1):	An initial triangulation.
+%   [index2,x2,y2,segments2,segmentmarkers2,rifts2]:	The resulting triangulation where rifts have been processed.
+
+% Check usage
+if nargin~=5 && nargout~=6
+	help ProcessRifts
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[index2,x2,y2,segments2,segmentmarkers2,rifts2] = ProcessRifts_matlab(index1,x1,y1,segments1,segmentmarkers1);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/ProcessRifts.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/ProcessRifts.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/ProcessRifts.py	(revision 27955)
@@ -0,0 +1,17 @@
+from ProcessRifts_python import ProcessRifts_python
+
+
+def ProcessRifts(index1, x1, y1, segments1, segmentmarkers1):
+    """
+    TRIMESHPROCESSRIFTS - Split a mesh where a rift (or fault) is present
+
+       Usage:
+           [index2, x2, y2, segments2, segmentmarkers2, rifts2] = ProcessRifts(index1, x1, y1, segments1, segmentmarkers1)
+
+       (index1, x1, y1, segments1, segmentmarkers1):    An initial triangulation.
+       [index2, x2, y2, segments2, segmentmarkers2, rifts2]:    The resulting triangulation where rifts have been processed.
+    """
+    # Call mex module
+    index2, x2, y2, segments2, segmentmarkers2, rifts2 = ProcessRifts_python(index1, x1, y1, segments1, segmentmarkers1)
+    # Return
+    return index2, x2, y2, segments2, segmentmarkers2, rifts2
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/PropagateFlagsFromConnectivity.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/PropagateFlagsFromConnectivity.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/PropagateFlagsFromConnectivity.m	(revision 27955)
@@ -0,0 +1,14 @@
+function [pool] = PropagateFlagsFromConnectivity(connectivity,pool,index,flags);
+%PROPAGATEFLAGSFROMCONNECTIVITY - Propagate flags onto mesh, element by element, using connectivity
+%
+%   Usage:
+%      [pool] = PropagateFlagsFromConnectivity(connectivity,pool,index,flags);
+
+% Check usage
+if nargin~=4
+	help PropagateFlagsFromConnectivity
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[pool] = PropagateFlagsFromConnectivity_matlab(connectivity,pool,index,flags);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/Scotch.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/Scotch.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/Scotch.m	(revision 27955)
@@ -0,0 +1,14 @@
+function [maptab] = Scotch(varargin);
+%SCOTCH - Scotch partitioner
+%
+%   Usage:
+%      [maptab]=Scotch(adjmat,vertlb,vertwt,edgewt,archtyp,archpar,Scotch-specific parameters);
+
+% Check usage
+if nargin<6
+	help Scotch
+	error('Wrong usage (see above)');
+end
+
+% Call mex module
+[maptab]=Scotch_matlab(varargin{:});
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/Scotch.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/Scotch.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/Scotch.py	(revision 27955)
@@ -0,0 +1,13 @@
+from Scotch_python import Scotch_python
+
+
+def Scotch(*varargin):
+    '''SCOTCH - Scotch partitioner
+
+   Usage:
+      maptab = Scotch(adjmat, vertlb, vertwt, edgewt, archtyp, archpar, Scotch - specific parameters)
+'''
+    # Call mex module
+    maptab = Scotch_python(*varargin)
+
+    return maptab
Index: /issm/branches/trunk-dlcheng-ASE/src/m/modules/ShpRead.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/modules/ShpRead.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/modules/ShpRead.m	(revision 27955)
@@ -0,0 +1,19 @@
+function structout = ShpRead(filename);
+%	SHPREAD - Read shapefile
+%	
+%	   This module reads shapefiles and converts them to matlab/python structures
+%	
+%	   Usage:
+%	      structout = ShpRead(filename);
+%	
+%	   Examples:
+%	      structout = ShpRead('file.shp');
+
+% Check usage
+if nargin~=1
+	help ShpRead
+	error('Wrong usage: No file specified');
+end
+
+% Call mex module
+structout = ShpRead_matlab(filename);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/netcdf/README.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/netcdf/README.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/netcdf/README.txt	(revision 27955)
@@ -0,0 +1,87 @@
+The write_netCDF and read_netCDF modules provide a convenient way to save and restore the state of a model class instance 
+in binary format via NetCDF4. This allows users to store the class state on disk and retrieve it later, facilitating seamless 
+transitions between Python and MATLAB environments.
+
+To save a model, call either write_netCDF.py or write_netCDF.m depending on whether your class is in matlab or python. 
+To read a saved model, call either read_netCDF.py or read_netCDF.m depending on what language you prefer to use the model in.
+If you would like to log the names and locations of variables being stored, add the argument verbose = True (verbose = true for matlab).
+
+Usage Instructions:
+
+    Python:
+        - Saving a model: 
+            from write_netCDF import write_netCDF
+
+            md = bamg(model(), foo.csv, .01)
+
+            write_netCDF(md, 'adress_to_save/../filename.nc')            
+
+        - Reading a model:
+            from read_netCDF import read_netCDF
+
+            md = read_netCDF('adress_to_file/../filename.nc')
+
+        Verbose examples:
+            write_netCDF(md, adress_to_save/../filename.nc, verbose = True)
+            md = read_netCDF(adress_to_file/../filename.nc, verbose = True)
+
+    MATLAB:
+        - Saving a model:
+
+            write_netCDF(md, adress_to_save/../filename.nc);
+
+        - Reading a model:
+
+            md = read_netCDF(adress_to_file/../filename.nc);
+
+        Verbose examples:
+            write_netCDF(md, adress_to_save/../filename.nc, verbose = true);
+	    
+          or:
+
+	    write_netCDF(md, adress_to_save/../filename.nc, verbose);
+            md = read_netCDF(adress_to_file/../filename.nc, verbose = true);
+
+Dependencies:
+    Python: 
+        - NumPy 
+        - NetCDF4 / NetCDF4.Dataset
+        - The model() class
+        - results.solution / results.solutionstep / results.resultsdakota
+        - inversion.inversion / inversion.m1qn3inversion / inversion.taoinversion
+
+    MATLAB: 
+        - The model() class
+        - inversion.inversion / inversion.m1qn3inversion / inversion.taoinversion
+
+
+Additional Information:
+
+There are currently datatypes that both write_netCDF and read_netCDF modules may not be able to handle. These datatypes might 
+include lists with multiple datatypes (ie, ['number', 1, 'letter', a, 'color', 'blue']), lists of dicts ect. 
+
+To add functionality for these additional cases, one must simply create a function to handle the case and call it using a 
+conditional case within the create_var() function. To read the data from the NetCDF4 file, add the case to the 
+copy_variable_data_to_new_model() function in read_netCDF so that the data can be added to a new model() instance.
+
+Known issues:
+
+Unlike Python, MATLAB doesn't utilize subclasses in its model class. This leads to a loss of certain subclass instances. 
+For instance, the results.solutionstep() class poses a known issue. In MATLAB, there's no direct equivalent. The fields in 
+'md.results' in MATLAB might correspond to instances of resultsdakota(), solution(), or solutionstep() in Python, but 
+because those classes don't exist in MATLAB, there is no way for python to know which instance it needs. 
+
+The current workaround, while not theoretically sound, involves searching for the class name string in MATLAB's 'results' 
+field names. For instance, 'md.results.TransientSolution' is recorded as a solution() class instance. However, problems arise 
+in cases like 'md.results.StressbalanceSolution', where the code notes a solution() instance, while in Python, it should be a 
+solutionstep() instance.
+
+So far, there have been no recorded problems swapping a solutionstep() instance for a solution() instance.
+
+Potential solutions are:
+
+    - Restructure both Python and MATLAB solve frameworks. In Python, when creating an md.results.<solutionstep()> instance, 
+    embed 'solutionstep' in the class instance name.
+        >> This solution is very involved, and would include the tedious modification of >5 files in total
+    - Create a hash table linking solutions with their corresponding 'md.results.<class>' for reference when saving models to 
+    the netCDF file. 
Index: /issm/branches/trunk-dlcheng-ASE/src/m/netcdf/read_netCDF.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/netcdf/read_netCDF.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/netcdf/read_netCDF.m	(revision 27955)
@@ -0,0 +1,526 @@
+%{
+Given a NetCDF4 file, this set of functions will perform the following:
+    1. Enter each group of the file.
+    2. For each variable in each group, update an empty model with the variable's data
+    3. Enter nested groups and repeat
+
+
+If the model you saved has subclass instances that are not in the standard model() class
+you can:
+    1. Copy lines 30-35, set the "results" string to the name of the subclass instance,
+    2. Copy and modify the make_results_subclasses() function to create the new subclass 
+        instances you need. 
+From there, the rest of this script will automatically create the new subclass 
+instance in the model you're writing to and store the data from the netcdf file there.
+%}
+
+
+function model_copy = read_netCDF(filename, varargin)
+    if nargin > 1
+        verbose = true;
+    else
+        verbose = false;
+    end
+    
+    if verbose
+        fprintf('NetCDF42C v1.1.14\n');
+    end
+    % make a model framework to fill that is in the scope of this file
+    model_copy = model();
+
+    % Check if path exists
+    if exist(filename, 'file')
+        if verbose
+            fprintf('Opening %s for reading\n', filename);
+        end
+
+        % Open the given netCDF4 file
+        NCData = netcdf.open(filename, 'NOWRITE');
+        % Remove masks from netCDF data for easy conversion: NOT WORKING
+        %netcdf.setMask(NCData, 'NC_NOFILL');
+
+        % see if results is in there, if it is we have to instantiate some classes
+        try
+            results_group_id = netcdf.inqNcid(NCData, "results");
+            model_copy = make_results_subclasses(model_copy, NCData, verbose);
+        catch
+        end % 'results' group doesn't exist 
+
+        % see if inversion is in there, if it is we may have to instantiate some classes
+        try
+            inversion_group_id = netcdf.inqNcid(NCData, "inversion");
+            model_copy = check_inversion_class(model_copy, NCData, verbose);
+        catch
+        end % 'inversion' group doesn't exist 
+        
+        % loop over first layer of groups in netcdf file
+        for group = netcdf.inqGrps(NCData)
+            group_id = netcdf.inqNcid(NCData, netcdf.inqGrpName(group));
+            %disp(netcdf.inqGrpNameFull(group_id))
+            % hand off first level to recursive search
+            model_copy = walk_nested_groups(group_id, model_copy, NCData, verbose);
+        end
+        
+        % Close the netCDF file
+        netcdf.close(NCData);
+        if verbose
+            disp('Model Successfully Copied')
+        end
+    else
+        fprintf('File %s does not exist.\n', filename);
+    end
+end
+
+
+function model_copy = make_results_subclasses(model_copy, NCData, verbose)
+    resultsGroup = netcdf.inqNcid(NCData, "results");
+    variables = netcdf.inqVarIDs(resultsGroup);
+    for name = variables
+        class_instance = netcdf.inqVar(resultsGroup, name);
+        class_instance_names_raw = netcdf.getVar(resultsGroup, name, 'char').';
+        class_instance_names = cellstr(class_instance_names_raw);
+        for index = 1:numel(class_instance_names)
+            class_instance_name = class_instance_names{index};
+            model_copy.results = setfield(model_copy.results, class_instance_name, struct());
+        end
+        %model_copy.results = setfield(model_copy.results, class_instance, class_instance_name);
+    end
+    model_copy = model_copy;
+    if verbose
+        disp('Successfully recreated results structs:')
+        for fieldname = string(fieldnames(model_copy.results))
+            disp(fieldname)
+        end
+    end
+end
+
+
+function model_copy = check_inversion_class(model_copy, NCData, verbose)
+    % get the name of the inversion class: either inversion or m1qn3inversion or taoinversion
+    inversionGroup = netcdf.inqNcid(NCData, "inversion");
+    varid = netcdf.inqVarID(inversionGroup, 'inversion_class_name');
+    inversion_class = convertCharsToStrings(netcdf.getVar(inversionGroup, varid,'char'));
+    if strcmp(inversion_class, 'm1qn3inversion')
+        model_copy.inversion = m1qn3inversion();
+        if verbose
+            disp('Successfully created inversion class instance: m1qn3inversion')
+        end
+    elseif strcmp(inversion_class, 'taoinversion')
+        model_copy.inversion = taoinversion();
+        if verbose
+            disp('Successfully created inversion class instance: taoinversion')
+        end
+    else
+        if verbose
+            disp('No inversion class was found')
+        end
+    end
+    model_copy = model_copy;
+end
+
+
+function model_copy = walk_nested_groups(group_location_in_file, model_copy, NCData, verbose)  
+    % we search the current group level for variables by getting this struct
+    variables = netcdf.inqVarIDs(group_location_in_file); 
+
+    % from the variables struct get the info related to the variables
+    for variable = variables
+        [varname, xtype, dimids, numatts] = netcdf.inqVar(group_location_in_file, variable);
+        
+        % keep an eye out for nested structs:
+        if strcmp(varname, 'this_is_a_nested')
+            is_object = true;
+            model_copy = copy_nested_struct(group_location_in_file, model_copy, NCData, verbose);
+        elseif strcmp(varname, 'name_of_cell_array')
+            is_object = true;
+            model_copy = copy_cell_array_of_objects(variables, group_location_in_file, model_copy, NCData, verbose);
+        elseif strcmp(varname, 'solution')
+            % band-aid pass..
+        else
+            if logical(exist('is_object', 'var'))
+                % already handled
+            else
+                model_copy = copy_variable_data_to_new_model(group_location_in_file, varname, xtype, model_copy, NCData, verbose);
+            end
+        end
+    end
+
+    % try to find groups in current level, if it doesn't work it's because there is nothing there
+    %try
+    % if it's a nested struct the function copy_nested_struct has already been called
+    if logical(exist('is_object', 'var'))
+        % do nothing
+    else
+        % search for nested groups in the current level to feed back to this function
+        groups = netcdf.inqGrps(group_location_in_file);
+        if not(isempty(groups))
+            for group = groups
+                group_id = netcdf.inqNcid(group_location_in_file, netcdf.inqGrpName(group));
+                %disp(netcdf.inqGrpNameFull(group_id))
+                model_copy = walk_nested_groups(group, model_copy, NCData, verbose);
+            end
+        end
+    end
+    %catch % no nested groups here
+    %end
+end
+
+
+% to read cell arrays with objects: 
+function model_copy = copy_cell_array_of_objects(variables, group_location_in_file, model_copy, NCData, verbose);
+    %{
+        The structure in netcdf for groups with the name_of_cell_array variable is like:
+
+        group: 2x6_cell_array_of_objects {
+            name_of_cell_array = <name_of_cell_array>
+
+            group: Row_1_of_2 {
+                group: Col_1_of_6 {
+                    ... other groups can be here that refer to objects
+                } // group Col_6_of_6
+            } // group Row_1_of_2
+
+            group: Row_2_of_2 {
+                group: Col_1_of_6 {
+                    ... other groups can be here that refer to objects
+                } // group Col_6_of_6
+            } // group Row_2_of_2
+        } // group 2x6_cell_array_of_objects
+
+        We have to navigate this structure to extract all the data and recreate the 
+        original structure when the model was saved
+    %}
+
+    % get the name_of_cell_array, rows and cols vars
+    name_of_cell_array_varID = netcdf.inqVarID(group_location_in_file, 'name_of_cell_array');
+    rows_varID = netcdf.inqVarID(group_location_in_file, 'rows');
+    cols_varID = netcdf.inqVarID(group_location_in_file, 'cols');
+
+    name_of_cell_array = netcdf.getVar(group_location_in_file, name_of_cell_array_varID).'; % transpose
+    rows = netcdf.getVar(group_location_in_file, rows_varID);
+    cols = netcdf.getVar(group_location_in_file, cols_varID);
+
+    % now we work backwards: make the cell array, fill it in, and assign it to the model
+
+    % make the cell array
+    cell_array_placeholder = cell(rows, cols);
+
+    % get subgroups which are elements of the cell array
+    subgroups = netcdf.inqGrps(group_location_in_file); % numerical cell array with ID's of subgroups
+
+    % enter each subgroup, get the data, assign it to the corresponding index of cell array
+    if rows > 1
+        % we go over rows
+        % set index for cell array rows
+        row_idx = 1;
+        for row = subgroups
+            % now columns
+            columns = netcdf.inqGrps(group_location_in_file);
+            
+            % set index for cell array cols
+            col_idx = 1;
+            for column = columns
+                % now variables
+                current_column_varids = netcdf.inqVarIDs(column);
+
+                % if 'class_is_a' or 'this_is_a_nested' variables is present at this level we have to handle them accordingly
+                try
+                    class_is_aID = netcdf.inqVarID(column, 'class_is_a');
+                    col_data = deserialize_class(column, NCData, verbose);
+                    is_object = true;
+                catch
+                end
+                
+                try
+                    this_is_a_nestedID = netcdf.inqVarID(column, 'this_is_a_nested');
+                    % functionality not supported
+                    disp('Error: Cell Arrays of structs not yet supported!')
+                    % copy_nested_struct(column, model_copy, NCData, verbose)
+                    is_object = true;
+                catch
+                end
+
+                if logical(exist('is_object', 'var'))
+                    % already taken care of
+                else
+                    % store the variables as normal -- to be added later
+                    disp('Error: Cell Arrays of mixed objects not yet supported!')
+                    for var = current_column_varids
+                        % not supported
+                    end
+                end
+
+                cell_array_placeholder{row_idx, col_idx} = col_data;
+                col_idx = col_idx + 1;
+            end
+            row_idx = row_idx + 1;
+        end 
+    else
+        % set index for cell array
+        col_idx = 1;
+        for column = subgroups
+            % now variables
+            current_column_varids = netcdf.inqVarIDs(column);
+
+            % if 'class_is_a' or 'this_is_a_nested' variables is present at this level we have to handle them accordingly
+            try
+                classID = netcdf.inqVarID(column, 'class_is_a');
+                col_data = deserialize_class(classID, column, NCData, verbose);
+                is_object = true;
+            catch ME
+                rethrow(ME)
+            end
+            
+            try
+                this_is_a_nestedID = netcdf.inqVarID(column, 'this_is_a_nested');
+                % functionality not supported
+                disp('Error: Cell Arrays of structs not yet supported!')
+                % col_data = copy_nested_struct(column, model_copy, NCData, verbose);
+                is_object = true;
+            catch
+            end
+            if logical(exist('is_object', 'var'))
+                % already taken care of
+            else
+                % store the variables as normal -- to be added later
+                disp('Error: Cell Arrays of mixed objects not yet supported!')
+                for var = current_column_varids
+                    % col_data = not supported
+                end
+            end
+
+            cell_array_placeholder{col_idx} = col_data;
+            col_idx = col_idx + 1;
+
+        end 
+    end
+   
+
+    % Like in copy_nested_struct, we can only handle things 1 layer deep.
+    % assign cell array to model
+    address_to_attr_list = split(netcdf.inqGrpNameFull(group_location_in_file), '/');
+    address_to_attr = address_to_attr_list{2};
+    if isprop(model_copy.(address_to_attr), name_of_cell_array);
+        model_copy.(address_to_attr).(name_of_cell_array) = cell_array_placeholder;
+    else
+        model_copy = addprop(model_copy.(address_to_attr), name_of_cell_array, cell_array_placeholder);
+    end
+
+    if verbose
+        fprintf("Successfully loaded cell array %s to %s\n", name_of_cell_array,address_to_attr_list{2})
+    end
+end
+
+
+
+
+function output = deserialize_class(classID, group, NCData, verbose)
+    %{
+        This function will recreate a class
+    %}
+
+    % get the name of the class
+    name = netcdf.getVar(group, classID).';
+
+    % instantiate it
+    class_instance = eval([name, '()']);
+
+    % get and assign properties
+    subgroups = netcdf.inqGrps(group); % numerical cell array with ID's of subgroups
+
+    if numel(subgroups) == 1
+        % get properties
+        varIDs = netcdf.inqVarIDs(subgroups);
+        for varID = varIDs
+            % var metadata
+            [varname, xtype, dimids, numatts] = netcdf.inqVar(subgroups, varID);
+            % data
+            data = netcdf.getVar(subgroups, varID);
+
+            % netcdf uses Row Major Order but MATLAB uses Column Major Order so we need to transpose all arrays w/ more than 1 dim
+            if all(size(data)~=1) || xtype == 2
+                data = data.';
+            end
+
+            % some classes have permissions... so we skip those
+            try
+                % if property already exists, assign new value
+                if isprop(class_instance, varname)
+                    class_instance.(varname) = data;
+                else
+                    addprop(class_instance, varname, data);
+                end
+            catch
+            end
+        end
+    else
+        % not supported
+    end
+    output = class_instance;
+end
+
+
+function model_copy = copy_nested_struct(group_location_in_file, model_copy, NCData, verbose)
+    %{
+        A common multidimensional struct array is the 1xn md.results.TransientSolution struct. 
+        The process to recreate is as follows:
+            1. Get the name of the struct from group name
+            2. Get the fieldnames from the subgroups 
+            3. Recreate the struct with fieldnames 
+            4. Populate the fields with their respective values
+    %}
+
+    % step 1
+    name_of_struct = netcdf.inqGrpName(group_location_in_file);
+
+    % step 2
+    subgroups = netcdf.inqGrps(group_location_in_file); % numerical cell array with ID's of subgroups
+    % get single subgroup's data
+    single_subgroup_ID = subgroups(1);
+    subgroup_varids = netcdf.inqVarIDs(single_subgroup_ID);
+    fieldnames = {};
+    for variable = subgroup_varids
+        [varname, xtype, dimids, numatts] = netcdf.inqVar(single_subgroup_ID, variable);
+        fieldnames{end+1} = varname;
+    end
+
+    % step 3
+    address_in_model_raw = split(netcdf.inqGrpNameFull(group_location_in_file), '/');
+    address_in_model = address_in_model_raw{2};
+    
+    % we cannot assign a variable to represent this object as MATLAB treats all variables as copies
+    % and not pointers to the same memory address
+    % this means that if address_in_model has more than 1 layer, we need to modify the code. For now, 
+    % we just hope this will do. An example of a no-solution would be model().abc.def.ghi.field whereas we're only assuming model().abc.field now
+    
+    model_copy.(address_in_model).(name_of_struct) = struct();
+    % for every fieldname in the subgroup, create an empty field
+    for fieldname = string(fieldnames)
+        model_copy.(address_in_model).(name_of_struct).(fieldname) = {};
+    end
+
+    % use repmat to make the struct array multidimensional along the fields axis
+    number_of_dimensions = numel(subgroups);
+    model_copy.(address_in_model).(name_of_struct) = repmat(model_copy.(address_in_model).(name_of_struct), 1, number_of_dimensions);
+    
+    % step 4
+    % for every layer of the multidimensional struct array, populate the fields
+    for current_layer = 1:number_of_dimensions
+        % choose subgroup
+        current_layer_subgroup_ID = subgroups(current_layer);
+        % get all vars
+        current_layer_subgroup_varids = netcdf.inqVarIDs(current_layer_subgroup_ID);
+        % get individual vars and set fields at layer current_layer
+        for varid = current_layer_subgroup_varids
+            [varname, xtype, dimids, numatts] = netcdf.inqVar(current_layer_subgroup_ID, varid);
+            data = netcdf.getVar(current_layer_subgroup_ID, varid);
+
+            % netcdf uses Row Major Order but MATLAB uses Column Major Order so we need to transpose all arrays w/ more than 1 dim
+            if all(size(data)~=1) || xtype == 2
+                data = data.';
+            end
+            
+            % set the field
+            model_copy.(address_in_model).(name_of_struct)(current_layer).(varname) = data;
+            %address_to_struct_in_model = setfield(address_to_struct_in_model(current_layer), varname, data)
+        end
+        model_copy.(address_in_model).(name_of_struct)(current_layer);
+        if verbose
+            fprintf("Successfully loaded layer %s to multidimension struct array\n", num2str(current_layer))
+        end
+    end
+    model_copy = model_copy;
+    if verbose
+        fprintf('Successfully recreated multidimensional structure array %s in md.%s\n', name_of_struct, address_in_model)
+    end
+end
+
+
+
+
+%{
+Since there are two types of objects that MATLAB uses (classes and structs), we have to check 
+which object we're working with before we can set any fields/attributes of it. After this is completed,
+we can write the data to that location in the model.
+%}
+
+function model_copy = copy_variable_data_to_new_model(group_location_in_file, varname, xtype, model_copy, NCData, verbose)
+    %disp(varname)
+    % this is an inversion band-aid
+    if strcmp(varname, 'inversion_class_name') || strcmp(varname, 'name_of_struct') || strcmp(varname, 'solution')
+        % we don't need this
+    else
+        % putting try/catch here so that any errors generated while copying data are logged and not lost by the try/catch in walk_nested_groups function
+        try
+            %disp(netcdf.inqGrpNameFull(group_location_in_file))
+            %disp(class(netcdf.inqGrpNameFull(group_location_in_file)))
+            address_to_attr = strrep(netcdf.inqGrpNameFull(group_location_in_file), '/', '.');
+            varid = netcdf.inqVarID(group_location_in_file, varname);
+            data = netcdf.getVar(group_location_in_file, varid);
+            
+    
+            % if we have an empty string
+            if xtype == 2 && isempty(all(data))
+                data = cell(char());
+            % if we have an empty cell-char array
+            elseif numel(data) == 1 && xtype == 3 && data == -32767
+                data = cell(char());
+            elseif isempty(all(data))
+                data = []
+            end
+            % band-aid for some cell-char-arrays:
+            if xtype == 2 && strcmp(data, 'default')
+                data = {'default'};
+            end
+            
+            % netcdf uses Row Major Order but MATLAB uses Column Major Order so we need to transpose all arrays w/ more than 1 dim
+            if all(size(data)~=1) || xtype == 2
+                data = data.';
+            end
+    
+            % if we have a list of strings
+            if xtype == 2
+                try
+                    if strcmp(netcdf.getAtt(group_location_in_file, varid, "type_is"), 'cell_array_of_strings')
+                        data = cellstr(data);
+                    end
+                catch
+                    % no attr found so we pass
+                end
+            end
+            
+            % the issm c compiler does not work with int64 datatypes, so we need to convert those to int16
+            % reference this (very hard to find) link for netcdf4 datatypes: https://docs.unidata.ucar.edu/netcdf-c/current/netcdf_8h_source.html
+            %xtype
+            if xtype == 10
+                arg_to_eval = ['model_copy', address_to_attr, '.', varname, ' = ' , 'double(data);'];
+                eval(arg_to_eval);
+                %disp('Loaded int64 as int16')
+            else
+                arg_to_eval = ['model_copy', address_to_attr, '.', varname, ' = data;'];
+                eval(arg_to_eval);
+            end
+            
+            if verbose
+                full_addy = netcdf.inqGrpNameFull(group_location_in_file);
+                %disp(xtype)
+                %class(data)
+                fprintf('Successfully loaded %s to %s\n', varname, full_addy);
+            end
+
+        catch ME %ME is an MException struct
+            % Some error occurred if you get here.
+            fprintf(1,'There was an error with %s! \n', varname)
+            errorMessage = sprintf('Error in function %s() at line %d.\n\nError Message:\n%s', ME.stack.name, ME.stack.line, ME.message);
+            fprintf(1, '%s\n', errorMessage);
+            uiwait(warndlg(errorMessage));
+            %line = ME.stack.line
+            %fprintf(1,'There was an error with %s! \n', varname)
+            %fprintf('The message was:\n%s\n',ME.message);
+            %fprintf(1,'The identifier was:\n%s\n',ME.identifier);
+            
+            % more error handling...
+        end
+    end
+    model_copy = model_copy;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/netcdf/read_netCDF.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/netcdf/read_netCDF.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/netcdf/read_netCDF.py	(revision 27955)
@@ -0,0 +1,501 @@
+# imports
+from netCDF4 import Dataset
+import numpy as np
+import numpy.ma as ma
+from os import path, remove
+from model import *
+import re
+from results import *
+from m1qn3inversion import m1qn3inversion
+from taoinversion import taoinversion
+from collections import OrderedDict
+import sys
+from massfluxatgate import massfluxatgate
+
+
+
+'''
+Given a NetCDF4 file, this set of functions will perform the following:
+    1. Enter each group of the file.
+    2. For each variable in each group, update an empty model with the variable's data
+    3. Enter nested groups and repeat
+'''
+
+
+# make a model framework to fill that is in the scope of this file
+model_copy = model()
+
+def read_netCDF(filename, verbose = False):
+    if verbose:
+        print('NetCDF42C v1.2.0')
+
+    '''
+    filename = path and name to save file under
+    verbose = T/F = show or muted log statements. Naturally muted
+    '''
+
+    # this is a precaution so that data is not lost
+    try:
+        # check if path exists
+        if path.exists(filename):
+            if verbose:
+                print('Opening {} for reading'.format(filename))
+            else: pass
+    
+            # open the given netCDF4 file
+            NCData = Dataset(filename, 'r')
+            # remove masks from numpy arrays for easy conversion
+            NCData.set_auto_mask(False)
+        else:
+            return 'The file you entered does not exist or cannot be found in the current directory'
+        
+        # in order to handle some subclasses in the results class, we have to utilize this band-aid
+        # there will likely be more band-aids added unless a class name library is created with all class names that might be added to a md
+        try:
+            # if results has meaningful data, save the name of the subclass and class instance
+            NCData.groups['results']
+            make_results_subclasses(NCData, verbose)
+        except:
+            pass
+    
+        # similarly, we need to check and see if we have an m1qn3inversion class instance
+        try:
+            NCData.groups['inversion']
+            check_inversion_class(NCData, verbose)
+        except:
+            pass
+        
+        # walk through each group looking for subgroups and variables
+        for group in NCData.groups.keys():
+            if 'debris' in group:
+                pass
+            else:
+                # have to send a custom name to this function: filename.groups['group']
+                name = "NCData.groups['" + str(group) + "']"
+                walk_nested_groups(name, NCData, verbose)
+        
+        if verbose:
+            print("Model Successfully Loaded.")
+            
+        NCData.close()
+        
+        return model_copy
+
+    # just in case something unexpected happens
+    except Exception as e:
+        if 'NCData' in locals():
+            NCData.close()
+        raise e
+
+def make_results_subclasses(NCData, verbose = False):
+    '''
+        There are 3 possible subclasses: solution, solutionstep, resultsdakota.
+        In the NetCDF file these are saved as a list of strings. Ie, say there are 2
+        instances of solution under results, StressbalanceSolution and TransientSolution. 
+        In the NetCDF file we would see solution = "StressbalanceSolution", "TransientSolution"
+        To deconstruct this, we need to iteratively assign md.results.StressbalanceSolution = solution()
+        and md.results.TransientSolution = solution() and whatever else.
+    '''
+    # start with the subclasses
+    for subclass in NCData.groups['results'].variables.keys():
+        class_instance = subclass + '()'
+
+        # now handle the instances
+        for instance in NCData.groups['results'].variables[subclass][:]:
+            # this is an ndarray of numpy bytes_ that we have to convert to strings
+            class_instance_name = instance.tobytes().decode('utf-8').strip()
+            # from here we can make new subclasses named as they were in the model saved
+            setattr(model_copy.results, class_instance_name, eval(class_instance))
+            if verbose:
+                print(f'Successfully created results subclass instance {class_instance} named {class_instance_name}.')
+
+
+def check_inversion_class(NCData, verbose = False):
+    # get the name of the inversion class: either inversion or m1qn3inversion or taoinversion
+    inversion_class_is = NCData.groups['inversion'].variables['inversion_class_name'][:][...].tobytes().decode()
+    if inversion_class_is == 'm1qn3inversion':
+        # if it is m1qn3inversion we need to instantiate that class since it's not native to model()
+        model_copy.inversion = m1qn3inversion(model_copy.inversion)
+        if verbose:
+            print('Conversion successful')
+    elif inversion_class_is == 'taoinversion':
+        # if it is taoinversion we need to instantiate that class since it's not native to model()
+        model_copy.inversion = taoinverion()
+        if verbose:
+            print('Conversion successful')
+    else: pass
+
+
+def walk_nested_groups(group_location_in_file, NCData, verbose = False):
+    # first, we enter the group by: filename.groups['group_name']
+    # second we search the current level for variables: filename.groups['group_name'].variables.keys()
+    # at this step we check for multidimensional structure arrays/ arrays of objects and filter them out
+    # third we get nested group keys by: filename.groups['group_name'].groups.keys()
+    # if a nested groups exist, repeat all
+
+    for variable in eval(group_location_in_file + '.variables.keys()'):
+        if 'is_object' not in locals():
+            if variable == 'this_is_a_nested' and 'results' in group_location_in_file and 'qmu' not in group_location_in_file:
+                # have to do some string deconstruction to get the name of the class instance/last group from 'NetCDF.groups['group1'].groups['group1.1']'
+                pattern = r"\['(.*?)'\]"
+                matches = re.findall(pattern, group_location_in_file)
+                name_of_struct = matches[-1] #eval(group_location_in_file + ".variables['solution']") 
+                deserialize_nested_results_struct(group_location_in_file, name_of_struct, NCData)
+                is_object = True
+    
+            elif variable == 'name_of_cell_array':
+                # reconstruct an array of elements
+                deserialize_array_of_objects(group_location_in_file, model_copy, NCData, verbose)
+                is_object = True
+    
+            elif variable == 'this_is_a_nested' and 'qmu' in group_location_in_file:
+                if verbose:
+                    print('encountered qmu structure that is not yet supported.')
+                else: pass
+                    
+                is_object = True
+        
+            else:
+                location_of_variable_in_file = group_location_in_file + ".variables['" + str(variable) + "']"
+                # group_location_in_file is like filename.groups['group1'].groups['group1.1'].groups['group1.1.1']
+                # Define the regex pattern to match the groups within brackets
+                pattern = r"\['(.*?)'\]"
+                # Use regex to find all matches and return something like 'group1.group1.1.group1.1.1 ...' where the last value is the name of the variable
+                matches = re.findall(pattern, location_of_variable_in_file)
+                variable_name = matches[-1]
+                location_of_variable_in_model = '.'.join(matches[:-1])
+                deserialize_data(location_of_variable_in_file, location_of_variable_in_model, variable_name, NCData, verbose=verbose)
+
+    # if one of the variables above was an object, further subclasses will be taken care of when reconstructing it
+    if 'is_object' in locals():
+        pass
+    else:
+        for nested_group in eval(group_location_in_file + '.groups.keys()'):
+            new_nested_group = group_location_in_file + ".groups['" + str(nested_group) + "']"
+            walk_nested_groups(new_nested_group, NCData, verbose=verbose)
+
+
+
+'''
+    MATLAB has Multidimensional Structure Arrays in 2 known classes: results and qmu.
+    The python classes results.py and qmu.py emulate this MATLAB object in their own
+    unique ways. The functions in this script will assign data to either of these 
+    classes such that the final structure is compatible with its parent class.
+'''
+
+def deserialize_nested_results_struct(group_location_in_file, name_of_struct, NCData, verbose = False):
+    '''
+    A common multidimensional array is the 1xn md.results.TransientSolution object.
+
+    The way that this object emulates the MATLAB mutli-dim. struct. array is with 
+    the solution().steps attr. which is a list of solutionstep() instances
+        The process to recreate is as follows:
+            1. Get instance of solution() with solution variable (the instance is made in make_results_subclasses)
+            2. For each subgroup, create a solutionstep() class instance
+             2a. Populate the instance with the key:value pairs
+             2b. Append the instance to the solution().steps list
+    '''
+    # step 1
+    class_instance_name = name_of_struct
+    
+    # for some reason steps is not already a list
+    setattr(model_copy.results.__dict__[class_instance_name], 'steps', list())
+
+    steps = model_copy.results.__dict__[class_instance_name].steps
+    
+    # step 2
+    layer = 1
+    for subgroup in eval(group_location_in_file + ".groups.keys()"):
+        solutionstep_instance = solutionstep()
+        # step 2a
+        subgroup_location_in_file = group_location_in_file + ".groups['" + subgroup + "']"
+        for key in eval(subgroup_location_in_file + ".variables.keys()"):
+            value = eval(subgroup_location_in_file + ".variables['" + str(key) + "'][:]")
+            setattr(solutionstep_instance, key, value)
+        # step 2b
+        steps.append(solutionstep_instance)
+        if verbose:
+            print('Succesfully loaded layer ' + str(layer) + ' to results.' + str(class_instance_name) + ' struct.')
+        else: pass
+        layer += 1
+
+    if verbose:
+        print('Successfully recreated results structure ' + str(class_instance_name))
+
+
+
+def deserialize_array_of_objects(group_location_in_file, model_copy, NCData, verbose):
+    '''
+        The structure in netcdf for groups with the name_of_cell_array variable is like:
+
+        group: 2x6_cell_array_of_objects {
+            name_of_cell_array = <name_of_cell_array>
+
+            group: Row_1_of_2 {
+                group: Col_1_of_6 {
+                    ... other groups can be here that refer to objects
+                } // group Col_6_of_6
+            } // group Row_1_of_2
+
+            group: Row_2_of_2 {
+                group: Col_1_of_6 {
+                    ... other groups can be here that refer to objects
+                } // group Col_6_of_6
+            } // group Row_2_of_2
+        } // group 2x6_cell_array_of_objects
+
+        We have to navigate this structure to extract all the data and recreate the 
+        original structure when the model was saved
+    '''
+
+    if verbose: 
+        print(f"Loading array of objects.")
+
+    # get the name_of_cell_array, rows and cols vars
+    name_of_cell_array_varID = eval(group_location_in_file + ".variables['name_of_cell_array']")
+    rows_varID = eval(group_location_in_file + ".variables['rows']")
+    cols_varID = eval(group_location_in_file + ".variables['cols']")
+
+    name_of_cell_array = name_of_cell_array_varID[:][...].tobytes().decode()
+    rows = rows_varID[:]
+    cols = cols_varID[:]
+
+    # now we work backwards: make the array, fill it in, and assign it to the model
+
+    # make the array
+    array = list()
+
+    subgroups = eval(group_location_in_file + ".groups") #.keys()")
+
+    # enter each subgroup, get the data, assign it to the corresponding index of cell array
+    if rows > 1:
+        # we go over rows
+        # set index for rows
+        row_idx = 0
+        for row in list(subgroups):
+            # make list for each row
+            current_row = list()
+            columns = subgroups[str(row)].groups.keys()
+
+            # set index for columns
+            col_idx = 0
+
+            # iterate over columns
+            for col in list(columns):
+                # now get the variables 
+                current_col_vars = columns.groups[str(col)].variables
+
+                # check for special datastructures                
+                if "class_is_a" in current_col_vars:
+                    class_name = subgroups[str(col)].variables['class_is_a'][:][...].tobytes().decode()
+                    col_data = deserialize_class_instance(class_name, columns.groups[str(col)], NCData, verbose)
+                    is_object = True
+                elif "this_is_a_nested" in current_col_vars:
+                    # functionality not yet supported
+                    print('Error: Cell Arrays of structs not yet supported!')
+                    is_object = True
+                else:
+                    if 'is_object_' in locals():
+                        pass
+                        # already taken care of
+                    else:
+                        # store the variables as normal -- to be added later
+                        print('Error: Arrays of mixed objects not yet supported!')
+                        for var in current_col_vars:
+                            # this is where that functionality would be handled
+                            pass
+                col_idx += 1
+                # add the entry to our row list
+                current_row.append(col_data)
+
+            # add the list of columns to the array
+            array.append(current_row)
+            row_idx += 1
+
+    else:
+        # set index for columns
+        col_idx = 0
+
+        # iterate over columns
+        for col in list(subgroups):
+            # now get the variables 
+            current_col_vars = subgroups[str(col)].variables
+            
+            # check for special datastructures
+            if "class_is_a" in current_col_vars:
+                class_name = subgroups[str(col)].variables['class_is_a'][:][...].tobytes().decode()
+                col_data = deserialize_class_instance(class_name, subgroups[str(col)], NCData, verbose)
+                is_object = True
+            elif "this_is_a_nested" in current_col_vars:
+                # functionality not yet supported
+                print('Error: Cell Arrays of structs not yet supported!')
+                is_object = True
+            else:
+                if 'is_object_' in locals():
+                    pass
+                    # already taken care of
+                else:
+                    # store the variables as normal -- to be added later
+                    print('Error: Arrays of mixed objects not yet supported!')
+                    for var in current_col_vars:
+                        # this is where that functionality would be handled
+                        pass
+            col_idx += 1
+            # add the list of columns to the array
+            array.append(col_data)
+
+    # finally, add the attribute to the model
+    pattern = r"\['(.*?)'\]"
+    matches = re.findall(pattern, group_location_in_file)
+    variable_name = matches[0]
+    setattr(model_copy.__dict__[variable_name], name_of_cell_array, array)
+
+    if verbose:
+        print(f"Successfully loaded array of objects: {name_of_cell_array} to {variable_name}")
+
+
+
+def deserialize_class_instance(class_name, group, NCData, verbose=False):
+
+    if verbose:
+        print(f"Loading class: {class_name}")
+
+    # this function requires the class module to be imported into the namespace of this file.
+    # we make a custom error in case the class module is not in the list of imported classes.
+    # most ISSM classes are imported by from <name> import <name>
+    class ModuleError(Exception):
+        pass
+    
+    if class_name not in sys.modules:
+        raise ModuleError(str('Model requires the following class to be imported from a module: ' + class_name + ". Please add the import to read_netCDF.py in order to continue."))
+
+    # Instantiate the class
+    class_instance = eval(class_name + "()")
+
+    # Get and assign properties
+    subgroups = list(group.groups.keys())
+
+    if len(subgroups) == 1:
+        # Get properties
+        subgroup = group[subgroups[0]]
+        varIDs = subgroup.variables.keys()
+        for varname in varIDs:
+            # Variable metadata
+            var = subgroup[varname]
+
+            # Data
+            if 'char' in var.dimensions[0]:
+                data = var[:][...].tobytes().decode()
+            else:
+                data = var[:]
+
+            # Some classes may have permissions, so we skip those
+            try:
+                setattr(class_instance, varname, data)
+            except:
+                pass
+    else:
+        # Not supported
+        pass
+
+    if verbose: 
+        print(f"Successfully loaded class instance {class_name} to model")
+    return class_instance
+
+
+
+def deserialize_data(location_of_variable_in_file, location_of_variable_in_model, variable_name, NCData, verbose = False):
+    # as simple as navigating to the location_of_variable_in_model and setting it equal to the location_of_variable_in_file
+    # NetCDF4 has a property called "_FillValue" that sometimes saves empty lists, so we have to catch those
+    FillValue = -9223372036854775806
+    try:
+        # results band-aid...
+        if str(location_of_variable_in_model + '.' + variable_name) in ['results.solutionstep', 'results.solution', 'results.resultsdakota']:
+            pass
+        # qmu band-aid
+        elif 'qmu.statistics.method' in str(location_of_variable_in_model + '.' + variable_name):
+            pass
+        # handle any strings:
+        elif 'char' in eval(location_of_variable_in_file + '.dimensions[0]'):
+            setattr(eval('model_copy.' + location_of_variable_in_model), variable_name, eval(location_of_variable_in_file + '[:][...].tobytes().decode()'))
+        # handle ndarrays + lists
+        elif len(eval(location_of_variable_in_file + '[:]'))>1:
+            # check for bool
+            try: # there is only one datatype assigned the attribute 'units' and that is bool, so anything else will go right to except
+                if eval(location_of_variable_in_file + '.units') == 'bool':
+                    setattr(eval('model_copy.' + location_of_variable_in_model), variable_name, np.array(eval(location_of_variable_in_file + '[:]'), dtype = bool))
+                else:
+                    setattr(eval('model_copy.' + location_of_variable_in_model), variable_name, eval(location_of_variable_in_file + '[:]'))
+            except:
+                setattr(eval('model_copy.' + location_of_variable_in_model), variable_name, eval(location_of_variable_in_file + '[:]'))
+        # catch everything else
+        else:
+            # check for FillValue. use try/except because try block will only work on datatypes like int64, float, single element lists/arrays ect and not nd-arrays/n-lists etc
+            try:
+                # this try block will only work on single ints/floats/doubles and will skip to the except block for all other cases
+                var_to_save = eval(location_of_variable_in_file + '[:][0]')  # note the [0] on the end
+                if FillValue == var_to_save:
+                    setattr(eval('model_copy.' + location_of_variable_in_model), variable_name, [])
+                else:
+                    if var_to_save.is_integer():
+                        setattr(eval('model_copy.' + location_of_variable_in_model), variable_name, int(var_to_save))
+                    else:
+                        # we have to convert numpy datatypes to native python types with .item()
+                        setattr(eval('model_copy.' + location_of_variable_in_model), variable_name, var_to_save.item())
+            except:
+                setattr(eval('model_copy.' + location_of_variable_in_model), variable_name, eval(location_of_variable_in_file + '[:]'))
+    except AttributeError:
+        deserialize_dict(location_of_variable_in_file, location_of_variable_in_model, NCData, verbose=verbose)
+
+    if verbose:
+        print('Successfully loaded ' + location_of_variable_in_model + '.' + variable_name + ' into model.')
+
+
+
+def deserialize_dict(location_of_variable_in_file, location_of_variable_in_model, NCData, verbose = False):
+    FillValue = -9223372036854775806
+
+    # the key will be the last item in the location
+    key = ''.join(location_of_variable_in_model.split('.')[-1])
+
+    # update the location to point to the dict instead of the dict key
+    location_of_variable_in_model = '.'.join(location_of_variable_in_model.split('.')[:-1])
+
+    # verify we're working with a dict:
+    if isinstance(eval('model_copy.' + location_of_variable_in_model), OrderedDict):
+        dict_object = eval('model_copy.' + location_of_variable_in_model)
+        
+        # handle any strings:
+        if 'char' in eval(location_of_variable_in_file + '.dimensions[0]'):
+            data = eval(location_of_variable_in_file + '[:][...].tobytes().decode()')
+            dict_object.update({key: data})
+            
+        # handle ndarrays + lists
+        elif len(eval(location_of_variable_in_file + '[:]'))>1:
+            # check for bool
+            try: # there is only one datatype assigned the attribute 'units' and that is bool, so anything else will go right to except
+                if eval(location_of_variable_in_file + '.units') == 'bool':
+                    data = np.array(eval(location_of_variable_in_file + '[:]'), dtype = bool)
+                    dict_object.update({key: data})
+                else:
+                    data = eval(location_of_variable_in_file + '[:]')
+                    dict_object.update({key: data})
+            except:
+                data = eval(location_of_variable_in_file + '[:]')
+                dict_object.update({key: data})
+        # catch everything else
+        else:
+            # check for FillValue. use try/except because try block will only work on datatypes like int64, float, single element lists/arrays ect and not nd-arrays/n-lists etc
+            try:
+                # this try block will only work on single ints/floats/doubles and will skip to the except block for all other cases
+                if FillValue == eval(location_of_variable_in_file + '[:][0]'):
+                    dict_object.update({key: []})
+                else:
+                    # we have to convert numpy datatypes to native python types with .item()
+                    var_to_save = eval(location_of_variable_in_file + '[:][0]')  # note the [0] on the end
+                    dict_object.update({key:  var_to_save.item()})
+            except:
+                data = eval(location_of_variable_in_file + '[:]')
+                dict_object.update({key: data})
+    else:
+        print(f"Unrecognized object was saved to NetCDF file and cannot be reconstructed: {location_of_variable_in_model}")
Index: /issm/branches/trunk-dlcheng-ASE/src/m/netcdf/write_netCDF.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/netcdf/write_netCDF.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/netcdf/write_netCDF.m	(revision 27955)
@@ -0,0 +1,768 @@
+%{
+Given a model, this set of functions will perform the following:
+    1. Enter each nested class of the model.
+    2. View each attribute of each nested class.
+    3. Compare state of attribute in the model to an empty model class.
+    4. If states are identical, pass.
+    5. Otherwise, create nested groups named after class structure.
+    6. Create variable named after class attribute and assign value to it.
+%}
+
+
+function write_netCDF(model_var, filename, varargin)
+    if nargin > 2
+        verbose = true;
+    else
+        verbose = false;
+    end
+    if verbose
+        disp('MATLAB C2NetCDF4 v1.1.14');
+    end
+    
+    % model_var = class object to be saved
+    % filename = path and name to save file under
+    
+    % Create a NetCDF file to write to
+    NetCDF = make_NetCDF(filename, verbose);
+    
+    % Create an instance of an empty model class to compare model_var against
+    empty_model = model();
+
+    % Walk through the model_var class and compare subclass states to empty_model
+    walk_through_model(model_var, empty_model, NetCDF, verbose);
+
+    % in order to handle some subclasses in the results class, we have to utilize this band-aid
+    % there will likely be more band-aids added unless a class name library is created with all class names that might be added to a model
+    try
+        % if results had meaningful data, save the name of the subclass and class instance
+        netcdf.inqNcid(NetCDF,'results');
+        results_subclasses_bandaid(model_var, NetCDF, verbose);
+        % otherwise, ignore
+    catch
+    end
+    
+    netcdf.close(NetCDF);
+    if verbose
+        disp('Model successfully saved as NetCDF4');
+    end
+end
+
+
+
+function NetCDF = make_NetCDF(filename, verbose)
+    % matlab can't handle input in the jupyter interface, so we just yell at the user to rename
+    % their file if needed
+    % If file already exists delete / rename it
+    if exist(filename, 'file') == 2
+        fprintf('File %s already exists\n', filename);
+        disp('Please rename your file.')
+        return
+    
+        % If so, inquire for a new name or to delete the existing file
+        %newname = input('Give a new name or input "delete" to replace: ', 's');
+
+        %if strcmpi(newname, 'delete')
+            %delete filename;
+        %else
+            %fprintf('New file name is %s\n', newname);
+            %filename = newname;
+        %end
+    else
+        % Otherwise create the file and define it globally so other functions can call it
+        
+        NetCDF = netcdf.create(filename, 'NETCDF4');
+        netcdf.putAtt(NetCDF, netcdf.getConstant('NC_GLOBAL'), 'history', ['Created ', datestr(now)]);
+        netcdf.defDim(NetCDF, 'Unlim', netcdf.getConstant('NC_UNLIMITED')); % unlimited dimension
+        netcdf.defDim(NetCDF, 'float', 1);     % single integer dimension
+        netcdf.defDim(NetCDF, 'int', 1);       % single float dimension
+
+        if verbose
+            fprintf('Successfully created %s\n', filename);
+        end
+
+        return 
+    end
+end
+
+
+%{
+    Since python uses subclass instances and MATLAB uses fields, we need to guess which subclass instance python will need
+    given the name of the sub-field in MATLAB. We make this guess based on the name of the MATLAB subfield that will contain
+    the name of the python subclass instance. For example, md.results.StressbalanceSolution is an subfield in MATLAB,
+    but a class instance of solution(). Notice that StressbalanceSolution contains the name "Solution" in it. This is what
+    we will save to the netCDF file for python to pick up.
+%}
+
+function results_subclasses_bandaid(model_var, NetCDF, verbose)
+    
+    % The results class may have nested fields within it, so we need to record the name of 
+    % the nested field as it appears in the model that we're trying to save
+    quality_control = {};
+    
+    % Access the results subclass of model_var
+    results_var = model_var.results;
+
+    % get the results group id so we can write to it
+    groupid = netcdf.inqNcid(NetCDF,'results');
+    
+    % Loop through each class instance in results
+    class_instance_names = fieldnames(results_var);
+
+    % we save lists of instances to the netcdf
+    solutions = {};
+    solutionsteps = {};
+    resultsdakotas = {};
+    
+    for i = 1:numel(class_instance_names)
+        class_instance_name = class_instance_names{i};
+        % there are often mutliple instances of the same class/struct so we have to number them
+        % Check to see if there is a solutionstep class instance
+        if contains(class_instance_name, 'solutionstep',IgnoreCase=true)
+            quality_control{end+1} = 1;
+            solutionsteps{end+1} = class_instance_name;
+            if verbose
+                disp('Successfully stored class python subclass instance: solutionstep')
+            end
+        end
+        
+        % Check to see if there is a solution class instance
+        if contains(class_instance_name, 'solution',IgnoreCase=true)
+            quality_control{end+1} = 1;
+            solutions{end+1} = class_instance_name;
+            if verbose
+                disp('Successfully stored class python subclass instance: solution')
+            end
+        end
+        
+        % Check to see if there is a resultsdakota class instance
+        if contains(class_instance_name, 'resultsdakota',IgnoreCase=true)
+            quality_control{end+1} = 1;
+            resultsdakotas{end+1} = class_instance_name;
+            if verbose
+                disp('Successfully stored class python subclass instance: resultsdakota')
+            end
+        end
+    end
+    if ~isempty(solutionsteps)
+        write_cell_with_strings('solutionstep', solutionsteps, groupid, NetCDF, verbose)
+    end
+    if ~isempty(solutions)
+        write_cell_with_strings('solution', solutions, groupid, NetCDF, verbose)
+    end
+    if ~isempty(resultsdakotas)
+        write_cell_with_strings('resultsdakota', resultsdakotas, groupid, NetCDF, verbose)
+    end
+    
+    
+
+    % Check if all class instances were processed correctly
+    if numel(quality_control) ~= numel(class_instance_names)
+        disp('Error: The class instance within your model.results class is not currently supported by this application');
+    else
+        if verbose
+            disp('The results class was successfully stored on disk');
+        end
+    end
+end
+
+
+
+function walk_through_model(model_var, empty_model, NetCDF, verbose)
+    % Iterate over first layer of model_var attributes and assume this first layer is only classes fundamental to the model() class
+    % note that groups are the same as class instances/subfields in this context
+    groups = fieldnames(model_var);
+    for group = 1:numel(groups)
+        % now this new variable takes the form model.mesh , model.damage etc.
+        model_subclass = model_var.(groups{group});
+        empty_model_subclass = empty_model.(groups{group});
+        % Now we can recursively walk through the remaining subclasses
+        list_of_layers = {groups{group}};
+        walk_through_subclasses(model_subclass, empty_model_subclass, list_of_layers, empty_model, NetCDF, verbose);
+    end
+end
+        
+
+function walk_through_subclasses(model_subclass, empty_model_subclass, given_list_of_layers, empty_model, NetCDF, verbose)
+    % Recursivley iterate over each subclass' attributes and look for more subclasses and variables with relevant data
+    % model_subclass is an object (ie, md.mesh.elements)
+    % list_of_layers is a cell array of subclasses/attributes/fields so that we can copy the structure into netcdf (ie, {'mesh', 'elements'})
+    % need to check if inversion or m1qn3inversion or taoinversion class
+    if numel(given_list_of_layers) == 1
+        if strcmp(given_list_of_layers{1}, 'inversion')
+            create_group(model_subclass, given_list_of_layers, NetCDF, verbose);
+            check_inversion_class(model_subclass, NetCDF, verbose);
+        end
+    end
+    
+    % Use try/except since model_subclass is either a subclass/struct w/ props/fields or it's not, no unknown exceptions
+    try 
+        % look for children - this is where the catch would be called
+        children = fieldnames(model_subclass);
+
+        % if there are children, loop through them and see if we need to save any data
+        for child = 1:numel(children)
+            % record our current location
+            list_of_layers = given_list_of_layers;
+            current_child = children{child};
+            list_of_layers{end+1} = current_child;
+        
+            % this is the value of the current location in the model (ie, md.mesh.elements)
+            location_of_child = model_subclass.(current_child);
+            
+            % if the empty model does not have this attribute, it's because it's new so we save it to netcdf
+            % there are 2 cases: the location is a struct, the location is a class
+            if isstruct(model_subclass)
+                % if the current field is a nested struct assume it has valuable data that needs to be saved
+                if isstruct(location_of_child) && any(size(location_of_child) > 1)
+                    create_group(location_of_child, list_of_layers, NetCDF, verbose);
+                
+                % this would mean that the layer above the layer we're interested in is a struct, so
+                % we can navigate our empty model as such
+                elseif isfield(empty_model_subclass, current_child)
+                    % the layer we're interested in does exist, we just need to compare states
+                    location_of_child_in_empty_model = empty_model_subclass.(current_child);
+
+                    % if the current attribute is a numerical array assume it has valuable data that needs to be saved
+                    if isnumeric(location_of_child) && logical(numel(location_of_child) > 1)
+                        create_group(location_of_child, list_of_layers, NetCDF, verbose);
+                    % if the attributes are identical we don't need to save anything
+                    elseif (all(isnan(location_of_child)) && all(isnan(location_of_child_in_empty_model))) || isempty(setxor(location_of_child, location_of_child_in_empty_model))
+                        walk_through_subclasses(location_of_child, location_of_child_in_empty_model, list_of_layers, empty_model, NetCDF, verbose);
+                    % if the attributes are not the same we need to save ours
+                    else
+                        % THE ORDER OF THESE LINES IS CRITICAL
+                        walk_through_subclasses(location_of_child, location_of_child_in_empty_model, list_of_layers, empty_model, NetCDF, verbose);
+                        create_group(location_of_child, list_of_layers, NetCDF, verbose);
+                    end
+                % this would mean that the layer we're interested in is not fundamental to the model architecture
+                % and thus needs to be saved to the netcdf
+                else
+                    walk_through_subclasses(location_of_child, empty_model_subclass, list_of_layers, empty_model, NetCDF, verbose);
+                    create_group(location_of_child, list_of_layers, NetCDF, verbose);
+                end
+            % this would mean it's not a struct, and must be a class/subclass
+            % we now check the state of the class property
+            else 
+                try
+                    if isprop(empty_model_subclass, current_child)
+                        % the layer we're interested in does exist, we just need to compare states
+                        location_of_child_in_empty_model = empty_model_subclass.(current_child);
+                        % if the current attribute is a numerical array assume it has valuable data that needs to be saved
+                        if isnumeric(location_of_child) && logical(numel(location_of_child) > 1)
+                            create_group(location_of_child, list_of_layers, NetCDF, verbose);
+                        
+                        elseif iscell(location_of_child)
+                            % if the attributes are identical we don't need to save anything
+                            if isempty(setxor(location_of_child, location_of_child_in_empty_model))
+                                % pass
+                            else
+                            % otherwise we need to save
+                                walk_through_subclasses(location_of_child, empty_model_subclass, list_of_layers, empty_model, NetCDF, verbose);
+                                create_group(location_of_child, list_of_layers, NetCDF, verbose);
+                            end
+                        elseif (all(isnan(location_of_child)) && all(isnan(location_of_child_in_empty_model)))
+                            walk_through_subclasses(location_of_child, location_of_child_in_empty_model, list_of_layers, empty_model, NetCDF, verbose);
+                        % if the attributes are not the same we need to save ours
+                        else
+                            % THE ORDER OF THESE LINES IS CRITICAL
+                            walk_through_subclasses(location_of_child, location_of_child_in_empty_model, list_of_layers, empty_model, NetCDF, verbose);
+                            create_group(location_of_child, list_of_layers, NetCDF, verbose);
+                        end
+                    else
+                        walk_through_subclasses(location_of_child, empty_model_subclass, list_of_layers, empty_model, NetCDF, verbose);
+                        create_group(location_of_child, list_of_layers, NetCDF, verbose);
+                    end
+                catch
+                    walk_through_subclasses(location_of_child, empty_model_subclass, list_of_layers, empty_model, NetCDF, verbose);
+                    create_group(location_of_child, list_of_layers, NetCDF, verbose);
+                end
+            end
+        end
+    catch ME
+        % If the caught error is a fieldname error, it's just saying that a variable has no fields and thus can be ignored
+        if strcmp(ME.identifier, 'MATLAB:fieldnames:InvalidInput')
+            % do nothing
+        % this is if we come accross instances/subfields in our model that are not fundamental to the model class (ie, taoinversion)
+        elseif strcmp(ME.identifier, 'MATLAB:UndefinedFunction')
+            walk_through_subclasses(location_of_child, empty_model_subclass, given_list_of_layers, empty_model, NetCDF, verbose);
+            create_group(location_of_child, list_of_layers, NetCDF, verbose);
+        % If it's a different error, rethrow it to MATLAB's default error handling
+        else
+            disp(ME.identifier)
+            disp(given_list_of_layers)
+            rethrow(ME);
+        end
+    end
+end 
+        
+
+function create_group(location_of_child, list_of_layers, NetCDF, verbose)
+    %disp(list_of_layers)
+    % location_of_child is an object
+    % list_of_layers is a list like {'inversion', 'StressbalanceSolution','cost_functions_coefficients'}
+    % first we make the group at the highest level (ie, inversion)
+    group_name = list_of_layers{1};
+    variable_name = list_of_layers{end};
+    
+    % if the group is already made, get it's ID instead of creating it again
+    try % group hasn't been made
+        group = netcdf.defGrp(NetCDF, group_name);
+    catch % group was already made
+        group = netcdf.inqNcid(NetCDF, group_name);    
+    end
+
+    % if the data is nested, create nested groups to match class structure
+    if numel(list_of_layers) > 2
+        % the string() method is really important here since matlab apparently can't handle the infinite complexity of a string without the string method.
+        for name = string(list_of_layers(2:end-1))
+            % the group levels may have already been made
+            try % group hasn't been made
+                group = netcdf.defGrp(group, name);
+            catch % group was already made
+                group = netcdf.inqNcid(group, name);
+            end
+        end
+    end
+    % sometimes objects are passed through twice so we account for that with this try/catch
+    try
+        % we may be dealing with an object
+        % first we screen for structs
+        if isstruct(location_of_child) % && any(size(location_of_child) > 1) -- this is being tested
+            % we have a struct
+            copy_nested_struct(variable_name, location_of_child, group, NetCDF, verbose);
+        
+        % now for cell arrays of datastructures:
+        elseif logical(~isstruct(location_of_child) && iscell(location_of_child) && isobject(location_of_child{1}))
+            copy_cell_array_of_objects(variable_name, location_of_child, group, NetCDF, verbose);
+        else
+            if ~isobject(location_of_child) && ~isstruct(location_of_child)
+                % we're dealing with raw data
+                create_var(variable_name, location_of_child, group, NetCDF, verbose);
+            end
+        end
+    catch
+        % do nothing
+    end
+end
+
+
+
+function copy_cell_array_of_objects(variable_name, address_of_child, group, NetCDF, verbose)
+    % make subgroup to represent the array
+    [rows, cols] = size(address_of_child);
+    name_of_subgroup = [num2str(rows), 'x', num2str(cols), '_cell_array_of_objects'];
+    subgroup = netcdf.defGrp(group, name_of_subgroup);
+
+    % save the name of the cell array
+    write_string_to_netcdf('name_of_cell_array', variable_name, subgroup, NetCDF, verbose);
+
+    % save the dimensions of the cell array
+    create_var('rows', rows, subgroup, NetCDF, verbose);
+    create_var('cols', cols, subgroup, NetCDF, verbose);
+
+    % if this is a multidimensional cell array, iterate over rows here and cols in copy_objects
+    if rows>1
+        for row = 1:rows
+            % make a subgroup for each row
+            name_of_subgroup = ['Row_', num2str(row), '_of_', num2str(rows)];
+            subgroup = netcdf.defGrp(group, name_of_subgroup);
+            copy_objects(address_of_child, subgroup, NetCDF, cols, verbose);
+        end
+    else
+        copy_objects(address_of_child, subgroup, NetCDF, cols, verbose);
+    end
+end
+
+
+
+function copy_objects(address_of_child, group, NetCDF, cols, verbose)
+    for col = 1:cols
+        % make subgroup to contain each col of array
+        name_of_subgroup = ['Col_', num2str(col), '_of_', num2str(cols)];
+        subgroup = netcdf.defGrp(group, name_of_subgroup);
+
+        % get the kind of object we're working with:
+        if isstruct(address_of_child{col})
+            % handle structs
+            name_raw = fields(address_of_child{col});
+            variable_name = name_raw{1};
+            copy_nested_struct(variable_name, address_of_child, subgroup, NetCDF, verbose);
+            
+        elseif numel(properties(address_of_child{col})) > 0
+            % handle class instances
+            copy_class_instance(address_of_child{col}, subgroup, NetCDF, verbose);
+        else
+            disp('ERROR: Cell arrays of mixed types are not yet supported in read_netCDF!\n Deserialization will not be able to complete!')
+            % handle regular datastructures that are already supported
+            name_raw = fields(address_of_child);
+            variable_name = name_raw{col};
+            create_var(variable_name, address_of_child, subgroup, NetCDF, verbose);
+        end
+    end
+end
+
+
+function copy_class_instance(address_of_child, subgroup, NetCDF, verbose)
+    % get parent class name
+    name = class(address_of_child);
+
+    % save the name of the class
+    write_string_to_netcdf('class_is_a', name, subgroup, NetCDF, verbose);
+    
+    % make subgroup to contain properties
+    name_of_subgroup = ['Properties_of_', name];
+    subgroup = netcdf.defGrp(subgroup, name_of_subgroup);
+
+    % get properties
+    props = properties(address_of_child);
+
+    for property = 1:length(props)
+        variable_name = props{property};
+        create_var(variable_name, address_of_child.(variable_name), subgroup, NetCDF, verbose);
+    end
+
+end
+
+
+function copy_nested_struct(parent_struct_name, address_of_struct, group, NetCDF, verbose)
+    %{
+        This function takes a struct of structs and saves them to netcdf. 
+
+        It also works with single structs.
+
+        To do this, we get the number of dimensions (substructs) of the parent struct.
+        Next, we iterate through each substruct and record the data. 
+        For each substruct, we create a subgroup of the main struct.
+        For each variable, we create dimensions that are assigned to each subgroup uniquely.
+    %}
+
+    % make a new subgroup to contain all the others:
+    group = netcdf.defGrp(group, parent_struct_name);
+    
+    % make sure other systems can flag the nested struct type
+    dimID = netcdf.defDim(group, 'struct', 6);
+    string_var = netcdf.defVar(group, 'this_is_a_nested', "NC_CHAR", dimID);
+    uint_method=uint8('struct').';
+    method_ID = char(uint_method);
+    netcdf.putVar(group, string_var, method_ID);
+
+    % other systems know the name of the parent struct because it's covered by the results/qmu functions above
+    
+    % 'a' will always be 1 and is not useful to us
+    [a, no_of_dims] = size(address_of_struct);
+
+    for substruct = 1:no_of_dims
+        % we start by making subgroups with nice names like "TransientSolution_substruct_44"
+        name_of_subgroup = ['1x', num2str(substruct)];
+        subgroup = netcdf.defGrp(group, name_of_subgroup);
+
+        % do some housekeeping to keep track of the current layer
+        current_substruct = address_of_struct(substruct);
+        substruct_fields = fieldnames(current_substruct)'; % transpose because matlab only interates over n x 1 arrays
+        
+        % now we need to iterate over each variable of the nested struct and save it to this new subgroup
+        for variable_name = string(substruct_fields)
+            address_of_child = current_substruct.(variable_name);
+            create_var(variable_name, address_of_child, subgroup, NetCDF, verbose);
+        end
+    end
+    if verbose
+        fprintf(["Succesfully transferred nested MATLAB struct ",  parent_struct_name, " to the NetCDF\n"])
+    end
+end
+
+
+
+% ironically inversion does not have the same problem as results as inversion subfields
+% are actually subclasses and not fields
+function check_inversion_class(model_var, NetCDF, verbose)
+    
+    % Define a persistent variable to ensure this function is only run once
+    persistent executed;
+    % Check if the function has already been executed
+    if isempty(executed)
+        if verbose
+            disp('Deconstructing Inversion class instance')
+        end
+        % Need to make sure that we have the right inversion class: inversion, m1qn3inversion, taoinversion
+        groupid = netcdf.inqNcid(NetCDF,'inversion');
+
+        if isa(model_var, 'm1qn3inversion')
+            write_string_to_netcdf('inversion_class_name', 'm1qn3inversion', groupid, NetCDF, verbose);
+            if verbose
+                disp('Successfully saved inversion class instance m1qn3inversion')
+            end
+        elseif isa(model_var, 'taoinversion')
+            write_string_to_netcdf('inversion_class_name', 'taoinversion', groupid, NetCDF, verbose);
+            if verbose 
+                disp('Successfully saved inversion class instance taoinversion')
+            end
+        else
+            write_string_to_netcdf('inversion_class_name', 'inversion', groupid, NetCDF,  verbose);
+            if verbose
+                disp('Successfully saved inversion class instance inversion')
+            end
+        end
+        % Set the persistent variable to indicate that the function has been executed
+        executed = true;
+    end
+end
+
+
+function create_var(variable_name, address_of_child, group, NetCDF, verbose)
+    % There are lots of different variable types that we need to handle from the model class
+    
+    % get the dimensions we'll need
+    intdim = netcdf.inqDimID(NetCDF,'int');
+    floatdim = netcdf.inqDimID(NetCDF,'float');
+    unlimdim = netcdf.inqDimID(NetCDF,'Unlim');
+    
+    % This first conditional statement will catch numeric arrays (matrices) of any dimension and save them
+    if any(size(address_of_child)>1) && ~iscellstr(address_of_child) && ~ischar(address_of_child)
+        write_numeric_array_to_netcdf(variable_name, address_of_child, group, NetCDF, verbose);
+
+    % check if it's a string
+    elseif ischar(address_of_child)
+        write_string_to_netcdf(variable_name, address_of_child, group, NetCDF, verbose);
+
+    % or an empty variable
+    elseif isempty(address_of_child)
+        variable = netcdf.defVar(group, variable_name, "NC_DOUBLE", intdim);
+
+    % or a list of strings
+    elseif iscellstr(address_of_child) || iscell(address_of_child) && ischar(address_of_child{1})
+        write_cell_with_strings(variable_name, address_of_child, group, NetCDF, verbose)
+        
+    % or an empty list
+    elseif iscell(address_of_child) && isempty(address_of_child) || isa(address_of_child, 'double') && isempty(address_of_child)
+        variable = netcdf.defVar(group, variable_name, "NC_INT", intdim);
+        netcdf.putVar(group,variable, -32767);
+
+    % or a bool
+    elseif islogical(address_of_child)
+        % netcdf4 can't handle bool types like true/false so we convert all to int 1/0 and add an attribute named units with value 'bool'
+        variable = netcdf.defVar(group, variable_name, 'NC_SHORT', intdim);
+        netcdf.putVar(group,variable,int8(address_of_child));
+        % make sure other systems can flag the bool type
+        netcdf.putAtt(group,variable,'units','bool');
+
+    % or a regular list
+    elseif iscell(address_of_child)
+        disp('made list w/ unlim dim')
+        variable = netcdf.defVar(group, variable_name, "NC_DOUBLE", unlimdim);
+        netcdf.putVar(group,variable,address_of_child);
+        
+    % or a float
+    elseif isfloat(address_of_child) && numel(address_of_child) == 1
+        variable = netcdf.defVar(group, variable_name, "NC_DOUBLE", floatdim);
+        netcdf.putVar(group,variable,address_of_child);
+        
+    % or a int
+    elseif mod(address_of_child,1) == 0 || isinteger(address_of_child) && numel(address_of_child) == 1
+        variable = netcdf.defVar(group, variable_name, "NC_SHORT", intdim);
+        netcdf.putVar(group,variable,address_of_child);
+
+    % anything else... (will likely need to add more cases; ie dict)
+    else
+        try
+            variable = netcdf.defVar(group, variable_name, "NC_DOUBLE", unlimdim);
+            netcdf.putVar(group,variable,address_of_child);
+        catch ME
+            disp(ME.message);
+            disp(['Datatype given: ', class(address_of_child)]);
+        end
+    end
+    if verbose
+        fprintf('Successfully transferred data from %s to the NetCDF\n', variable_name);
+    end
+end
+
+
+function write_cell_with_strings(variable_name, address_of_child, group, NetCDF, verbose)
+    %{
+    Write cell array (ie {'one' 'two' 'three'}) to netcdf
+    %}
+    
+    if isempty(address_of_child)
+        % if the char array is empty, save an empty char
+        name_of_dimension = ['char', num2str(0)];
+        try
+            dimID = netcdf.defDim(group, name_of_dimension, 0);
+        catch
+            dimID = netcdf.inqDimID(group, name_of_dimension);
+        end
+        % Now we can make a variable in this dimension:
+        string_var = netcdf.defVar(group, variable_name, "NC_CHAR", [dimID]);
+        % we leave empty now
+    else
+        % covert data to char array
+        method_ID = char(address_of_child);
+    
+        % make dimensions
+        [rows, cols] = size(method_ID);
+        
+        IDDim1 = netcdf.defDim(group,'cols',cols);
+        IDDim2 = netcdf.defDim(group,'rows',rows);
+    
+        % create the variable slot
+        IDVarId = netcdf.defVar(group,variable_name,'NC_CHAR', [IDDim1 IDDim2]);
+    
+        % save the variable
+        netcdf.putVar(group, IDVarId, method_ID'); %transpose
+    
+        % tell other platforms that this is a cell of strings
+        netcdf.putAtt(group, IDVarId, 'type_is','cell_array_of_strings');
+    end
+end
+
+
+function write_string_to_netcdf(variable_name, address_of_child, group, NetCDF, verbose)
+    % netcdf and strings don't get along.. we have to do it 'custom':
+
+    the_string_to_save = address_of_child;
+
+    if isempty(the_string_to_save)
+        % if the char array is empty, save an empty char
+        name_of_dimension = ['char', num2str(0)];
+        try
+            dimID = netcdf.defDim(group, name_of_dimension, 0);
+        catch
+            dimID = netcdf.inqDimID(group, name_of_dimension);
+        end
+        % Now we can make a variable in this dimension:
+        string_var = netcdf.defVar(group, variable_name, "NC_CHAR", [dimID]);
+        % we leave empty now
+    else
+        % convert string to 
+        uint_method=uint8(the_string_to_save).';
+        method_ID = char(uint_method);
+        length_of_the_string = numel(method_ID);
+        
+        % Convert the string to character data using string array
+        %str_out = char(the_string_to_save)
+    
+        % Determine the length of the string
+        %length_of_the_string = numel(str_out)
+    
+        % Check if the dimension already exists, and if not, create it
+        name_of_dimension = ['char', num2str(length_of_the_string)];
+        try
+            dimID = netcdf.defDim(group, name_of_dimension, length_of_the_string);
+        catch
+            dimID = netcdf.inqDimID(group, name_of_dimension);
+        end
+        % Now we can make a variable in this dimension:
+        string_var = netcdf.defVar(group, variable_name, "NC_CHAR", [dimID]);
+        % Finally, we can write the variable (always transpose for matlab):
+        netcdf.putVar(group, string_var, method_ID);
+    end
+
+    if verbose
+        disp(['Successfully transferred data from ', variable_name, ' to the NetCDF']);
+    end
+end
+
+
+function write_numeric_array_to_netcdf(variable_name, address_of_child, group, NetCDF, verbose)
+
+    % get the dimensions we'll need
+    intdim = netcdf.inqDimID(NetCDF,'int');
+    floatdim = netcdf.inqDimID(NetCDF,'float');
+    unlimdim = netcdf.inqDimID(NetCDF,'Unlim');
+    
+    typeis = class(address_of_child);
+    
+    if isa(typeis, 'logical')
+            % because matlab transposes all data into and out of netcdf and because we want cross-platform-compat
+            % we need to transpose data before it goes into netcdf
+            data = address_of_child.';
+
+            % make the dimensions
+            dimensions = [];
+            for dimension = size(data)
+                dim_name = ['dim',int2str(dimension)];
+                % if the dimension already exists we can't have a duplicate
+                try
+                    dimID = netcdf.defDim(group, dim_name, dimension);
+                catch
+                    dimID = netcdf.inqDimID(group, dim_name);
+                end
+                % record the dimension for the variable
+                dimensions(end+1) = dimID;
+            end
+    
+            % write the variable
+            netcdf.putVar(group,variable,data);
+
+            % make sure other systems can flag the bool type
+            netcdf.putAtt(group,variable,'units','bool');
+            
+    % handle all other datatypes here
+    else
+        % sometimes an array has just 1 element in it, we account for those cases here:
+        if numel(address_of_child) == 1
+            if isinteger(address_of_child)
+                variable = netcdf.defVar(group, variable_name, "NC_SHORT", intdim);
+                netcdf.putVar(group,variable,address_of_child);
+            elseif isa(address_of_child, 'double') || isa(address_of_child, 'float')
+                variable = netcdf.defVar(group, variable_name, "NC_DOUBLE", floatdim);
+                netcdf.putVar(group,variable,address_of_child);
+            else 
+                disp('Encountered single datatype that was not float64 or int64, saving under unlimited dimension, may cause errors.')
+                variable = netcdf.defVar(group, variable_name, "NC_DOUBLE", unlimdim);
+                netcdf.putVar(group,variable,address_of_child);
+            end
+        % this is in case of lists so that python doesn't get a (nx1) numpy array and instead gets an n-element list
+        elseif any(size(address_of_child)==1)
+            % because matlab transposes all data into and out of netcdf and because we want cross-platform-compat
+            % we need to transpose data before it goes into netcdf
+            data = address_of_child.';
+
+            % make the dimensions
+            dimensions = [];
+            for dimension = size(data)
+                if dimension ~= 1
+                    dim_name = ['dim',int2str(dimension)];
+                    % if the dimension already exists we can't have a duplicate
+                    try
+                        dimID = netcdf.defDim(group, dim_name, dimension);
+                    catch
+                        dimID = netcdf.inqDimID(group, dim_name);
+                    end
+                    % record the dimension for the variable
+                    dimensions(end+1) = dimID;
+                end
+            end
+            % create the variable
+            variable = netcdf.defVar(group, variable_name, "NC_DOUBLE",dimensions);
+    
+            % write the variable
+            netcdf.putVar(group,variable,data);
+
+        % This catches all remaining arrays:
+        else
+            % because matlab transposes all data into and out of netcdf and because we want cross-platform-compat
+            % we need to transpose data before it goes into netcdf
+            data = address_of_child.';
+
+            % make the dimensions
+            dimensions = [];
+            for dimension = size(data)
+                dim_name = ['dim',int2str(dimension)];
+                % if the dimension already exists we can't have a duplicate
+                try
+                    dimID = netcdf.defDim(group, dim_name, dimension);
+                catch
+                    dimID = netcdf.inqDimID(group, dim_name);
+                end
+                % record the dimension for the variable
+                dimensions(end+1) = dimID;
+            end
+            % create the variable
+            variable = netcdf.defVar(group, variable_name, "NC_DOUBLE",dimensions);
+    
+            % write the variable
+            netcdf.putVar(group,variable,data);
+        end
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/netcdf/write_netCDF.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/netcdf/write_netCDF.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/netcdf/write_netCDF.py	(revision 27955)
@@ -0,0 +1,595 @@
+# imports
+import netCDF4
+from netCDF4 import Dataset
+import numpy as np
+import numpy.ma as ma
+import time
+import os
+from model import *
+from results import *
+from m1qn3inversion import m1qn3inversion
+from taoinversion import taoinversion
+#import OrderedStruct
+
+
+'''
+Given a md, this set of functions will perform the following:
+    1. View each attribute of each nested class.
+    2. Compare state of attribute in the model to an empty model.
+    3. If states are identical, pass. (except for np arrays which will always be saved)
+    4. Otherwise, create nested groups named after class structure.
+    5. Create variable named after class attribute and assign value to it.
+'''
+
+
+def write_netCDF(md, filename: str, verbose = False):
+    if verbose:
+        print('Python C2NetCDF4 v1.2.0')
+    else: pass
+    '''
+    md = model class instance to be saved
+    filename = path and name to save file under
+    verbose = T/F = show or muted log statements. Naturally muted
+    '''
+    # this is a precaution so that data is not lost
+    try:
+        # Create a NCData file to write to
+        NCData = create_NetCDF(filename, verbose)
+        
+        # Create an instance of an empty md class to compare md_var against
+        empty_model = model()
+    
+        # Walk through the md class and compare subclass states to empty_model
+        walk_through_model(md, empty_model, NCData, verbose)
+    
+        # in order to handle some subclasses in the results class, we have to utilize this band-aid
+        # there will likely be more band-aids added unless a class name library is created with all class names that might be added to a md
+        try:
+            # if results has meaningful data, save the name of the subclass and class instance
+            NCData.groups['results']
+            results_subclasses_bandaid(md, NCData, verbose)
+            # otherwise, ignore
+        except KeyError:
+            pass
+            
+        NCData.close()
+        if verbose:
+            print('Model successfully saved as NetCDF4')
+        else: pass
+
+    # just in case something unexpected happens
+    except Exception as e:
+        if 'NCData' in locals():
+            NCData.close()
+        raise e
+    
+
+def results_subclasses_bandaid(md, NCData, verbose = False):
+    # since the results class may have nested classes within it, we need to record the name of the 
+    # nested class instance variable as it appears in the md that we're trying to save
+    quality_control = []
+
+    # we save lists of instances to the NCData
+    solutions = []
+    solutionsteps = []
+    resultsdakotas = []
+    
+    for class_instance_name in md.results.__dict__.keys():
+        if verbose:
+            print(class_instance_name)
+        # for each class instance in results, see which class its from and record that info in the NCData to recreate structure later
+        # check to see if there is a solutionstep class instance
+        if isinstance(md.results.__dict__[class_instance_name],solutionstep):
+            quality_control.append(1)
+            solutionsteps.append(class_instance_name)
+
+        # check to see if there is a solution class instance
+        if isinstance(md.results.__dict__[class_instance_name],solution):
+            quality_control.append(1)
+            solutions.append(class_instance_name)
+
+        # check to see if there is a resultsdakota class instance
+        if isinstance(md.results.__dict__[class_instance_name],resultsdakota):
+            quality_control.append(1)
+            resultsdakotas.append(class_instance_name)
+
+    if solutionsteps != []:
+        serialize_string(variable_name=str('solutionstep'), address_of_child=solutionsteps, group=NCData.groups['results'], list=True, NCData=NCData, verbose=verbose)
+
+    if solutions != []:
+        serialize_string(variable_name=str('solution'), address_of_child=solutions, group=NCData.groups['results'], list=True, NCData=NCData, verbose=verbose)
+
+    if resultsdakotas != []:
+        serialize_string(variable_name=str('resultsdakota'), address_of_child=resultsdakotas, group=NCData.groups['results'], list=True, NCData=NCData, verbose=verbose)
+
+    
+    if len(quality_control) != len(md.results.__dict__.keys()):
+        print('Error: The class instance within your md.results class is not currently supported by this application')
+        print(type(md.results.__dict__[class_instance_name]))
+    else:
+        if verbose:
+            print('The results class was successfully stored on disk')
+        else: pass
+
+
+def create_NetCDF(filename: str, verbose = False):
+    # If file already exists delete / rename it
+    if os.path.exists(filename):
+        print('File {} allready exist'.format(filename))
+    
+        # If so, inqure for a new name or to do delete the existing file
+        newname = input('Give a new name or "delete" to replace: ')
+
+        if newname == 'delete':
+            os.remove(filename)
+        else:
+            print(('New file name is {}'.format(newname)))
+            filename = newname
+    else:
+        # Otherwise create the file and define it globally so other functions can call it
+        NCData = Dataset(filename, 'w', format='NETCDF4')
+        NCData.history = 'Created ' + time.ctime(time.time())
+        NCData.createDimension('Unlim', None)  # unlimited dimension
+        NCData.createDimension('float', 1)     # single integer dimension
+        NCData.createDimension('int', 1)       # single float dimension
+    
+    if verbose:
+        print('Successfully created ' + filename)
+
+    return NCData
+
+
+def walk_through_model(md, empty_model, NCData, verbose= False):
+    # Iterate over first layer of md attributes and assume this first layer is only classes
+    for group in md.__dict__.keys():
+        address = md.__dict__[group]
+        empty_address = empty_model.__dict__[group]
+        # we need to record the layers of the md so we can save them to the NCData file
+        layers = [group]
+
+        # Recursively walk through subclasses
+        walk_through_subclasses(address, empty_address, layers, NCData, empty_model, verbose)       
+
+
+def walk_through_subclasses(address, empty_address, layers: list, NCData, empty_model, verbose = False):
+    # See if we have an object with keys or a not
+    try:
+        address.__dict__.keys()
+        is_object = True
+    except: is_object = False # this is not an object with keys
+
+    if is_object:
+        # enter the subclass, see if it has nested classes and/or attributes
+        # then compare attributes between mds and write to NCData if they differ
+        # if subclass found, walk through it and repeat
+        for child in address.__dict__.keys():
+            # record the current location
+            current_layer = layers.copy()
+            current_layer.append(child)
+            
+            # navigate to child in each md
+            address_of_child = address.__dict__[child]
+            
+            # if the current object is a results.<solution> object and has nonzero steps attr it needs special treatment
+            if isinstance(address_of_child, solution) and len(address_of_child.steps) != 0:
+                create_group(address_of_child, current_layer, is_struct = True, is_special_list = False,  NCData=NCData, verbose = verbose)
+
+            # if the current object is a list of objects (currently only filters for lists/arrays of classes)
+            elif isinstance(address_of_child, list) and len(address_of_child) > 0 and hasattr(address_of_child[0], '__dict__'):
+                create_group(address_of_child, current_layer, is_struct = False, is_special_list = True, NCData=NCData, verbose = verbose)
+
+            # if the variable is an array, assume it has relevant data (this is because the next line cannot evaluate "==" with an array)
+            elif isinstance(address_of_child, np.ndarray):
+                create_group(address_of_child, current_layer, is_struct = False, is_special_list = False,  NCData=NCData, verbose = verbose)
+            
+            # see if the child exists in the empty md. If not, record it in the NCData
+            else:
+                try: 
+                    address_of_child_in_empty_class = empty_address.__dict__[child]
+                    # if that line worked, we can see how the mds' attributes at this layer compare:
+    
+                    # if the attributes are identical we don't need to save anything
+                    if address_of_child == address_of_child_in_empty_class:
+                        walk_through_subclasses(address_of_child, address_of_child_in_empty_class, current_layer, NCData, empty_model, verbose)
+    
+                    # If it has been modified, record it in the NCData file
+                    else:
+                        create_group(address_of_child, current_layer, is_struct = False, is_special_list = False,  NCData=NCData, verbose = verbose)
+                        walk_through_subclasses(address_of_child, address_of_child_in_empty_class, current_layer, NCData, empty_model, verbose)
+    
+                except KeyError: # record in NCData and continue to walk thru md
+                    walk_through_subclasses(address_of_child, empty_address, current_layer, NCData, empty_model, verbose)
+                    create_group(address_of_child, current_layer, is_struct = False, is_special_list = False,  NCData=NCData, verbose = verbose)
+    else: pass
+
+
+def create_group(address_of_child, layers, is_struct = False, is_special_list = False,  NCData=None, verbose = False):
+
+    # Handle the first layer of the group(s)
+    group_name = layers[0]
+    
+    # try to make a group unless the group is already made
+    try:
+        group = NCData.createGroup(str(group_name))
+    except:
+        group = NCData.groups[str(group_name)]
+
+    # need to check if inversion or m1qn3inversion class
+    if group_name == 'inversion':
+        check_inversion_class(address_of_child, NCData, verbose)
+    else: pass
+
+    # if the data is nested in md, create nested groups to match class structure
+    if len(layers) > 2:
+        for name in layers[1:-1]:
+            try:
+                group = group.createGroup(str(name))
+            except:
+                group = NCData.groups[str(name)]
+    else: pass
+
+    # Lastly, handle the variable(s)
+    if is_struct:
+        parent_struct_name = layers[-1]
+        serialize_nested_results_struct(parent_struct_name, address_of_child, group, NCData, verbose)
+
+    elif is_special_list:
+        list_name = layers[-1]
+        serialize_array_of_objects(list_name, address_of_child, group, NCData, verbose)
+    
+    else:
+        variable_name = layers[-1]
+        serialize_var(variable_name, address_of_child, group, NCData, verbose)
+            
+
+def singleton(func):
+    """
+    A decorator to ensure a function is only executed once.
+    """
+    def wrapper(*args, **kwargs):
+        if not wrapper.has_run:
+            wrapper.result = func(*args, **kwargs)
+            wrapper.has_run = True
+        return wrapper.result
+    wrapper.has_run = False
+    wrapper.result = None
+    return wrapper
+    
+
+@singleton
+def check_inversion_class(address_of_child, NCData, verbose = False):
+    # need to make sure that we have the right inversion class: inversion, m1qn3inversion, taoinversion
+    if isinstance(address_of_child, m1qn3inversion):
+        serialize_string(variable_name=str('inversion_class_name'), address_of_child=str('m1qn3inversion'), group=NCData.groups['inversion'], NCData=NCData, verbose = verbose)
+        if verbose:
+            print('Successfully saved inversion class instance ' + 'm1qn3inversion')
+    elif isinstance(address_of_child, taoinversion):
+        serialize_string(variable_name=str('inversion_class_name'), address_of_child=str('taoinversion'), group=NCData.groups['inversion'], NCData=NCData, verbose = verbose)
+        if verbose:
+            print('Successfully saved inversion class instance ' + 'taoinversion')
+    else:
+        serialize_string(variable_name=str('inversion_class_name'), address_of_child=str('inversion'), group=NCData.groups['inversion'], NCData=NCData, verbose = verbose)
+        if verbose:
+            print('Successfully saved inversion class instance ' + 'inversion')
+
+
+def serialize_nested_results_struct(parent_struct_name, address_of_struct, group, NCData, verbose = False):
+    '''
+        This function takes a results.solution class instance and saves the solutionstep instances from <solution>.steps to the NCData. 
+
+        To do this, we get the number of dimensions (substructs) of the parent struct (list).
+        Next, we iterate through each substruct and record the data. 
+        For each substruct, we create a subgroup of the main struct.
+        For each variable, we create dimensions that are assigned to each subgroup uniquely.
+    '''
+    if verbose:
+        print("Beginning transfer of nested MATLAB struct to the NCData")
+    
+    # make a new subgroup to contain all the others:
+    group = group.createGroup(str(parent_struct_name))
+
+    # make sure other systems can flag the nested struct type
+    serialize_string('this_is_a_nested', 'struct', group, list=False, NCData=NCData, verbose = verbose)
+
+    # other systems know the name of the parent struct because it's covered by the results/qmu functions above
+    no_of_dims = len(address_of_struct)
+    for substruct in range(0, no_of_dims):
+        # we start by making subgroups with nice names like "1x4"
+        name_of_subgroup = '1x' + str(substruct)
+        subgroup = group.createGroup(str(name_of_subgroup))
+
+        # do some housekeeping to keep track of the current layer
+        current_substruct = address_of_struct[substruct]
+        substruct_fields = current_substruct.__dict__.keys()
+
+        # now we need to iterate over each variable of the nested struct and save it to this new subgroup
+        for variable in substruct_fields:
+            address_of_child = current_substruct.__dict__[variable]
+            serialize_var(variable, address_of_child, subgroup, NCData, verbose = verbose)
+    
+    if verbose:
+        print(f'Successfully transferred struct {parent_struct_name} to the NCData\n')
+
+
+
+
+def serialize_array_of_objects(list_name, address_of_child, group, NCData, verbose):
+    if verbose: 
+        print(f"Serializing array of objects.")
+    
+    # Get the dimensions of the cell array
+    if len(np.shape(address_of_child)) > 1: 
+        rows, cols = np.shape(address_of_child)
+    else: rows, cols = 1, np.shape(address_of_child)[0]
+
+    # Make subgroup to represent the array
+    name_of_subgroup = f"{str(rows)}x{str(cols)}_cell_array_of_objects"
+    subgroup = group.createGroup(name_of_subgroup)
+
+    # Save the name of the cell array
+    serialize_string('name_of_cell_array', list_name, subgroup, NCData, verbose)
+
+    # Save the dimensions of the cell array
+    rowsID = subgroup.createVariable('rows', int, ('int',))
+    colsID = subgroup.createVariable('cols', int, ('int',))
+    rowsID[:] = rows
+    colsID[:] = cols
+
+
+    # If this is a multidimensional cell array, iterate over rows here and cols in serialize_objects
+    if rows > 1:
+        for row in range(rows):
+            # Make a subgroup for each row
+            name_of_subgroup = f"Row_{row+1}_of_{rows}"
+            subgroup = group.createGroup(name_of_subgroup)
+            serialize_objects(address_of_child, subgroup, NCData, cols, verbose)
+    else:
+        serialize_objects(address_of_child, subgroup, NCData, cols, verbose)
+        
+    if verbose:
+        print(f"Successfully serialized array of objects: {list_name}")
+
+
+def serialize_objects(address_of_child, group, NCData, cols, verbose):
+    for col in range(cols):
+        # Make subgroup to contain each col of array
+        name_of_subgroup = f'Col_{col+1}_of_{cols}'
+        subgroup = group.createGroup(name_of_subgroup)
+
+        # index the current item
+        variable = address_of_child[col]
+
+        # Get the kind of object we're working with:
+        # see if it's a solution instance
+        if isinstance(variable, solution) and len(variable.steps) != 0:
+            pass
+            # this needs more work...
+        
+        # see if it's a general class -- assume ISSM classes all have __dict__
+        elif hasattr(variable, '__dict__'):
+            # Handle class instances
+            serialize_class_instance(variable, subgroup, NCData, verbose)
+        else:
+            print('ERROR: Cell arrays of mixed types are not yet supported in read_NCData!')
+            print('Deserialization will not be able to complete!')
+            # Handle regular data structures that are already supported
+            serialize_var(variable_name, variable, subgroup, NCData, verbose)
+
+
+def serialize_class_instance(instance, group, NCData, verbose):
+    # get parent class name:
+    name = instance.__class__.__name__
+
+    # save the name of the class
+    serialize_string(variable_name='class_is_a', address_of_child=name, group=group, NCData=NCData, verbose = verbose)
+
+    # make subgroup to contain attributes
+    name_of_subgroup = 'Properties_of_' + name
+    subgroup = group.createGroup(name_of_subgroup)
+
+    # get attributes
+    keys = instance.__dict__.keys()
+
+    for name in keys:
+        serialize_var(name, instance.__dict__[name], subgroup, NCData, verbose)
+    
+
+
+        
+def serialize_var(variable_name, address_of_child, group, NCData, verbose = False):
+    # There are lots of different variable types that we need to handle from the md class
+    
+    # This first conditional statement will catch numpy arrays of any dimension and save them
+    if isinstance(address_of_child, np.ndarray):
+        serialize_numpy_array(variable_name, address_of_child, group, NCData, verbose=verbose)
+    
+    # check if it's an int
+    elif isinstance(address_of_child, int) or isinstance(address_of_child, np.integer):
+        variable = group.createVariable(variable_name, int, ('int',))
+        variable[:] = address_of_child
+    
+    # or a float
+    elif isinstance(address_of_child, float) or isinstance(address_of_child, np.floating):
+        variable = group.createVariable(variable_name, float, ('float',))
+        variable[:] = address_of_child
+
+    # or a string
+    elif isinstance(address_of_child, str):
+        serialize_string(variable_name, address_of_child, group, NCData, verbose=verbose)
+
+    #or a bool
+    elif isinstance(address_of_child, bool) or isinstance(address_of_child, np.bool_):
+        # NetCDF can't handle bool types like True/False so we convert all to int 1/0 and add an attribute named units with value 'bool'
+        variable = group.createVariable(variable_name, int, ('int',))
+        variable[:] = int(address_of_child)
+        variable.units = "bool"
+        
+    # or an empty list
+    elif isinstance(address_of_child, list) and len(address_of_child)==0:
+        variable = group.createVariable(variable_name, int, ('int',))
+
+    # or a list of strings -- this needs work as it can only handle a list of 1 string
+    elif isinstance(address_of_child,list) and isinstance(address_of_child[0],str):
+        for string in address_of_child:
+            serialize_string(variable_name, string, group, list=True, NCData=NCData, verbose=verbose)
+
+    # or a regular list
+    elif isinstance(address_of_child, list):
+        variable = group.createVariable(variable_name, type(address_of_child[0]), ('Unlim',))
+        variable[:] = address_of_child
+
+    # anything else... (will likely need to add more cases; ie helpers.OrderedStruct)
+    else:
+        try:
+            variable = group.createVariable(variable_name, type(address_of_child), ('Unlim',))
+            variable[:] = address_of_child
+            print(f'Unrecognized variable was saved {variable_name}')
+        except TypeError: pass # this would mean that we have an object, so we just let this continue to feed thru the recursive function above
+        except Exception as e:
+            print(f'There was error with {variable_name} in {group}')
+            print("The error message is:")
+            print(e)
+            print('Datatype given: ' + str(type(address_of_child)))
+    
+    if verbose:
+        print(f'Successfully transferred data from {variable_name} to the NCData')
+    
+
+def serialize_string(variable_name, address_of_child, group, list=False, NCData=None, verbose = False):
+    # NCData and strings dont get along.. we have to do it 'custom':
+    # if we hand it an address we need to do it this way:
+    if list:
+        """    
+        Convert a list of strings to a numpy.char_array with utf-8 encoded elements
+        and size rows x cols with each row the same # of cols and save to NCData
+        as char array.
+        """
+        try:
+            strings = address_of_child
+            # get dims of array to save
+            rows = len(strings)
+            cols = len(max(strings, key = len))
+    
+            # Define dimensions for the strings
+            rows_name = 'rows' + str(rows)
+            cols_name = 'cols' + str(cols)
+            try:
+                group.createDimension(rows_name, rows)
+            except: pass
+
+            try:
+                group.createDimension(cols_name, cols)
+            except: pass
+                
+            # Create a variable to store the strings
+            string_var = group.createVariable(str(variable_name), 'S1', (rows_name, cols_name))
+    
+            # break the list into a list of lists of words with the same length as the longest word:
+            # make words same sizes by adding spaces 
+            modded_strings = [word + ' ' * (len(max(strings, key=len)) - len(word)) for word in strings]
+            # encoded words into list of encoded lists
+            new_list = [[s.encode('utf-8') for s in word] for word in modded_strings]
+    
+            # make numpy char array with dims rows x cols
+            arr = np.chararray((rows, cols))
+    
+            # fill array with list of encoded lists
+            for i in range(len(new_list)):
+                arr[i] = new_list[i]
+    
+            # save array to NCData file
+            string_var[:] = arr
+
+            if verbose:
+                print(f'Saved {len(modded_strings)} strings to {variable_name}')
+    
+        except Exception as e:
+            print(f'Error: {e}')
+        
+    else:
+        the_string_to_save = address_of_child
+        length_of_the_string = len(the_string_to_save)
+        numpy_datatype = 'S' + str(length_of_the_string)
+        str_out = netCDF4.stringtochar(np.array([the_string_to_save], dtype=numpy_datatype))        
+    
+        # we'll need to make a new dimension for the string if it doesn't already exist
+        name_of_dimension = 'char' + str(length_of_the_string)
+        try: 
+            group.createDimension(name_of_dimension, length_of_the_string)
+        except: pass
+        # this is another band-aid to the results sub classes...
+        try:
+            # now we can make a variable in this dimension:
+            string = group.createVariable(variable_name, 'S1', (name_of_dimension))
+            #finally we can write the variable:
+            string[:] = str_out
+        #except RuntimeError: pass
+        except Exception as e:
+            print(f'There was an error saving a string from {variable_name}')
+            print(e)
+
+
+def serialize_numpy_array(variable_name, address_of_child, group, NCData, verbose = False):
+    # to make a nested array in NCData, we have to get the dimensions of the array,
+    # create corresponding dimensions in the NCData file, then we can make a variable
+    # in the NCData with dimensions identical to those in the original array
+    
+    # start by getting the data type at the lowest level in the array:
+    typeis = address_of_child.dtype
+
+    # catch boolean arrays here
+    if typeis == bool:
+        # sometimes an array has just 1 element in it, we account for those cases here:
+        if len(address_of_child) == 1:
+            variable = group.createVariable(variable_name, int, ('int',))
+            variable[:] = int(address_of_child)
+            variable.units = "bool"
+        else:
+            # make the dimensions
+            dimensions = []
+            for dimension in np.shape(address_of_child):
+                dimensions.append(str('dim' + str(dimension)))
+                # if the dimension already exists we can't have a duplicate
+                try:
+                    group.createDimension(str('dim' + str(dimension)), dimension)
+                except: pass # this would mean that the dimension already exists
+    
+            # create the variable:
+            variable = group.createVariable(variable_name, int, tuple(dimensions))
+            # write the variable:
+            variable[:] = address_of_child.astype(int)
+            variable.units = "bool"
+
+    # handle all other datatypes here
+    else:
+        # sometimes an array has just 1 element in it, we account for those cases here:
+        if len(address_of_child) == 1:
+            if typeis is np.dtype('float64'):
+                variable = group.createVariable(variable_name, typeis, ('float',))
+                variable[:] = address_of_child[0]
+            elif typeis is np.dtype('int64'):
+                variable = group.createVariable(variable_name, typeis, ('int',))
+                variable[:] = address_of_child[0]
+            else:
+                print(f'Encountered single datatype from {variable_name} that was not float64 or int64, saving under unlimited dimension, may cause errors.')
+                variable = group.createVariable(variable_name, typeis, ('Unlim',))
+                variable[:] = address_of_child[0]
+    
+        # This catches all arrays/lists:
+        else:
+            # make the dimensions
+            dimensions = []
+            for dimension in np.shape(address_of_child):
+                dimensions.append(str('dim' + str(dimension)))
+                # if the dimension already exists we can't have a duplicate
+                try:
+                    group.createDimension(str('dim' + str(dimension)), dimension)
+                except: pass # this would mean that the dimension already exists
+    
+            # create the variable:
+            variable = group.createVariable(variable_name, typeis, tuple(dimensions))
+    
+            # write the variable:
+            variable[:] = address_of_child
+
+            
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/ismingw.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/ismingw.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/ismingw.m	(revision 27955)
@@ -0,0 +1,11 @@
+function result=ismingw()
+%ISMINGW - Returns 1 if machine is running MinGW.
+%
+%   Usage:
+%      if ismingw,
+%         [...]
+%      end
+%
+
+[status,result]=system('uname -rs | grep "MINGW" | wc -l');
+result=str2num(result);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/issmbbftpin.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/issmbbftpin.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/issmbbftpin.m	(revision 27955)
@@ -0,0 +1,42 @@
+function issmbbftpin(host, login,port,numstreams,path, packages)
+%BBFTPIN get packages from host, using bbftp. assuming unix system here.
+%
+%   usage: scpin(host,packages,path)
+%
+%
+
+%first get hostname
+hostname=oshostname();
+
+%first be sure packages are not in the current directory, this could conflict with pscp on windows. 
+for i=1:numel(packages),
+	if exist(packages{i},'file'),
+		delete(packages{i});
+	end
+end
+
+%if hostname and host are the same, do a simple copy
+if strcmpi(hostname,host),
+
+    for i=1:numel(packages),
+		success=copyfile([path '/' packages{i}]); %keep going, even if success=0
+	end
+
+else
+
+	%build a string of the type: bbftp -s -u elarour -e 'setnbstream 8; cd /nobackupp10/elarour/Testing/Interactive3/; get Antarctica.outbin' pfe1.nas.nasa.gov
+	command=['!bbftp -s -V -u ' login ' -e ''setnbstream 8; cd ' path '; '];
+	for i=1:numel(packages),
+		command=[command 'get ' packages{i} ';'];
+	end
+	command=[command '''  pfe22.nas.nasa.gov'];
+
+	eval(command);
+
+	%check bbftp worked
+	for i=1:numel(packages),
+		if ~exist(['./' packages{i}],'file'),
+			error('scpin error message: could not call scp on *nix system');
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/issmbbftpout.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/issmbbftpout.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/issmbbftpout.m	(revision 27955)
@@ -0,0 +1,30 @@
+function issmbbftpout(host,path,login,port,numstreams,packages)
+%BBFTPOUT put packages onto host, using bbftp. assuming unix system here.
+%
+%   usage: bbftpout(host,path,login,port,numstream,packages)
+%
+%
+
+%get hostname
+hostname=oshostname();
+
+%if hostname and host are the same, do a simple copy
+if strcmpi(host,hostname),
+	for i=1:numel(packages),
+		here=pwd;
+		eval(['cd ' path])
+		system(['rm -rf ' packages{i} ]);
+		system(['ln -s ' here '/' packages{i} ' .']);
+		eval(['cd ' here]);
+	end
+else 
+
+	%build a string of the type: bbftp -s -u elarour -e 'setnbstream 8; cd /nobackupp10/elarour/Testing/Interactive3/; put Antarctica.tar.gz' pfe1.nas.nasa.gov
+	command=['!bbftp -s -V -u ' login ' -e ''setnbstream 8; cd ' path '; '];
+	for i=1:length(packages),
+		command=[command 'put ' packages{i} ';'];
+	end
+	command=[command '''  pfe22.nas.nasa.gov'];
+
+	eval(command);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/issmdir.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/issmdir.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/issmdir.m	(revision 27955)
@@ -0,0 +1,27 @@
+function ISSM_DIR=issmdir()
+%ISSMDIR - Get ISSM_DIR environment variable
+%
+%   Usage:
+%      ISSM_DIR=issmdir()
+
+%Initialize output ISSM_DIR
+ISSM_DIR='';
+
+%Get ISSM_DIR from function path (we do not want to force users to edit their bashrc)
+path = mfilename('fullpath');
+
+%issmdir might be in bin,
+slash = filesep();
+pos   = strfind(path,['bin' slash 'issmdir']);
+if ~isempty(pos),
+	ISSM_DIR=path(1:pos-1);
+else
+	pos=strfind(path,['src' slash 'm' slash 'os' slash 'issmdir']);
+	if ~isempty(pos),
+		ISSM_DIR=path(1:pos-1);
+	end
+end
+
+if isempty(ISSM_DIR),
+	error('Could not determine the location of ISSM...');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/issmdir.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/issmdir.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/issmdir.py	(revision 27955)
@@ -0,0 +1,23 @@
+import os
+import MatlabFuncs as m
+
+
+def issmdir():
+    """
+    ISSMDIR - Get ISSM_DIR environment variable
+
+       Usage:
+          ISSM_DIR = issmdir()
+    """
+
+    if not m.ispc():
+        ISSM_DIR = os.environ['ISSM_DIR']
+    else:
+        ISSM_DIR = os.environ['ISSM_DIR_WIN']
+        if m.strcmpi(ISSM_DIR[-1], '/') or m.strcmpi(ISSM_DIR[-1], '\\'):
+            ISSM_DIR = ISSM_DIR[:-1]  #shave off the last '/'
+
+    if not ISSM_DIR:
+        raise RuntimeError("issmdir error message: 'ISSM_DIR' environment variable is empty! You should define ISSM_DIR in your .cshrc or .bashrc!")
+
+    return ISSM_DIR
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/issmscpin.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/issmscpin.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/issmscpin.m	(revision 27955)
@@ -0,0 +1,69 @@
+function issmscpin(host, login,port,path, packages)
+%ISSMSCPIN get packages from host, using scp on unix, and pscp on windows
+%
+%   usage: issmscpin(host,packages,path)
+%
+%
+
+%first get hostname
+hostname=oshostname();
+
+%first be sure packages are not in the current directory, this could conflict with pscp on windows. 
+for i=1:numel(packages),
+	if exist(packages{i},'file'),
+		delete(packages{i});
+	end
+end
+
+%if hostname and host are the same, do a simple copy
+if strcmpi(hostname,host),
+	for i=1:numel(packages),
+		success=copyfile([path '/' packages{i}]); %keep going, even if success=0
+	end
+else
+	if ispc & ~ismingw,
+		%use the putty project pscp.exe: it should be in the path.
+
+		%get ISSM_DIR variable
+		[status,ISSM_DIR]=system('echo [%ISSM_DIR_WIN%]');
+		if status, 
+			error('issmscpin error message: could not find ISSM_DIR_WIN environment variable');
+		end
+		ISSM_DIR=ISSM_DIR(2:end-2);
+
+		username=input('Username: (quoted string) ');
+		key=input('Key: (quoted string) ');
+
+		for i=1:numel(packages),
+			[status,result]=system([ISSM_DIR '/externalpackages/ssh/pscp.exe -l "' username '" -pw "' key '" ' host ':' path '/' packages{i} ' ./']);
+			if status, 
+				error('issmscpin error message: could not call putty pscp');
+			end
+		end
+
+	else
+		%just use standard unix scp string to copy multiple files using scp: 
+		if numel(packages)==1,
+			string=packages{1};
+		else
+			string='\{';
+			for i=1:numel(packages)-1,
+				string=[string packages{i} ','];
+			end
+			string=[string packages{end} '\}'];
+		end
+
+		if port,
+			eval(['!scp -P ' num2str(port) ' ' login '@localhost:' path '/' string ' ./']);
+		else
+			eval(['!scp ' login '@' host ':' path '/' string ' ./']);
+		end
+
+		%check scp worked
+		for i=1:numel(packages),
+			if ~exist(['./' packages{i}]),
+				warning(['issmscpin error message: could not scp ' packages{i}]);
+			end
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/issmscpin.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/issmscpin.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/issmscpin.py	(revision 27955)
@@ -0,0 +1,57 @@
+import os
+import shutil
+import subprocess
+from MatlabFuncs import *
+
+
+def issmscpin(host, login, port, path, packages):
+    """ISSMSCPIN get packages from host, using scp on unix, and pscp on windows
+
+    Usage:
+        issmscpin(host, packages, path)
+    """
+
+    #first get hostname
+    hostname = oshostname()
+    #first be sure packages are not in the current directory, this could conflict with pscp on windows.
+    #remove warnings in case the files do not exist
+    for package in packages:
+        try:
+            os.remove(package)
+        except OSError as e:
+            pass
+    #if hostname and host are the same, do a simple copy
+    if strcmpi(hostname, host):  #hostname == host:
+        for package in packages:
+            try:
+                shutil.copy(os.path.join(path, package), os.getcwd())  #keep going, even if success = 0
+            except OSError as e:
+                pass
+    else:
+        if ispc():
+            #use the putty project pscp.exe: it should be in the path.
+            #get ISSM_DIR variable
+            if 'ISSM_DIR_WIN' in os.environ:
+                ISSM_DIR = os.environ['ISSM_DIR_WIN'][1:-2]
+            else:
+                raise OSError("issmscpin error message: could not find ISSM_DIR_WIN environment variable.")
+            username = eval(input('Username: (quoted string) '))
+            key = eval(input('Key: (quoted string) '))
+            for package in packages:
+                try:
+                    subprocess.check_call('%s/externalpackages/ssh/pscp.exe -l "%s" -pw "%s" %s:%s %s' % (ISSM_DIR, username, key, host, os.path.join(path, package), os.getcwd()), shell=True)
+                except CalledProcessError as e:
+                    raise CalledProcessError("issmscpin error message: could not call putty pscp due to ")
+
+        else:
+            #just use standard unix scp
+            #string to copy multiple files using scp:
+            string = "'{" + ','.join([str(x) for x in packages]) + "}'"
+            if port:
+                subprocess.call('scp -P {} {}@localhost:{} {}/. '.format(port, login, os.path.join(path, string), os.getcwd()), shell=True)
+            else:
+                subprocess.call('scp -T {}@{}:{} {}/.'.format(login, host, os.path.join(path, string), os.getcwd()), shell=True)
+    #check scp worked
+            for package in packages:
+                if not os.path.exists(os.path.join('.', package)):
+                    raise OSError("issmscpin error message: could not call scp on *nix system for file '{}'".format(package))
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/issmscpout.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/issmscpout.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/issmscpout.m	(revision 27955)
@@ -0,0 +1,68 @@
+function issmscpout(host,path,login,port,packages,varargin)
+%ISSMSCPOUT send packages to a host, using scp on unix, and pscp on windows
+%
+%   usage: issmscpout(host,path,login,port,packages)
+%
+%
+
+%get hostname
+hostname=oshostname();
+
+%are we disallowing symbolic links? 
+if nargin==6,
+	no_symlinks=1;
+else
+	no_symlinks=0;
+end
+
+%if hostname and host are the same, do a simple copy
+
+if strcmpi(host,hostname),
+	for i=1:numel(packages),
+		here=pwd;
+		eval(['cd ' path])
+		system(['rm -rf ' packages{i} ]);
+		if no_symlinks,
+			system(['cp ' here '/' packages{i} ' .']);
+		else
+			system(['ln -s ' here '/' packages{i} ' .']);
+		end
+		eval(['cd ' here]);
+	end
+else 
+	if ispc & ~ismingw,
+		%use the putty project pscp.exe: it should be in the path.
+
+		%get ISSM_DIR variable
+		[status,ISSM_DIR]=system('echo [%ISSM_DIR_WIN%]');
+		if status, 
+			error('issmscpout error message: could not find ISSM_DIR_WIN environment variable');
+		end
+		ISSM_DIR=ISSM_DIR(2:end-2);
+
+		username=input('Username: (quoted string) ');
+		key=input('Key: (quoted string) ');
+
+		for i=1:numel(packages),
+			[status,result]=system([ISSM_DIR '/externalpackages/ssh/pscp.exe -l "' username '" -pw "' key '" ' packages{i} ' ' host ':' path]);
+			if status, 
+				error('issmscpout error message: could not call putty pscp');
+			end
+		end
+
+	else
+		%just use standard unix scp
+		%create string of packages being sent
+		string='';
+		for i=1:numel(packages),
+			string=[string ' ' packages{i}];
+		end
+		string=[string ' '];
+
+		if port,
+			eval(['!scp -P ' num2str(port) ' ' string ' ' login '@localhost:' path]);
+		else
+			eval(['!scp ' string ' ' login '@' host ':' path]);
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/issmscpout.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/issmscpout.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/issmscpout.py	(revision 27955)
@@ -0,0 +1,57 @@
+import os
+import subprocess
+from MatlabFuncs import *
+
+
+def issmscpout(host, path, login, port, packages):
+    """ISSMSCPOUT send packages to a host, using scp on unix, and pscp on windows
+
+    Usage:
+        issmscpout(host, path, packages)
+    """
+
+    #get hostname
+    hostname = oshostname()
+
+    #if hostname and host are the same, do a simple copy
+
+    if strcmpi(host, hostname):  #host == hostname:
+        for package in packages:
+            here = os.getcwd()
+            os.chdir(path)
+            try:
+                os.remove(package)
+            except OSError:
+                pass
+            subprocess.call('ln -s %s %s' % (os.path.join(here, package), path), shell=True)
+            os.chdir(here)
+    else:
+        if ispc():
+            #use the putty project pscp.exe: it should be in the path.
+            #get ISSM_DIR variable
+            if 'ISSM_DIR_WIN' in os.environ:
+                ISSM_DIR = os.environ['ISSM_DIR_WIN'][1:-2]
+            else:
+                raise OSError("issmscpout error message: could not find ISSM_DIR_WIN environment variable.")
+
+            username = eval(input('Username: (quoted string) '))
+            key = eval(input('Key: (quoted string) '))
+
+            for package in packages:
+                try:
+                    subprocess.check_call('%s/externalpackages/ssh/pscp.exe -l "%s" -pw "%s" %s %s:%s' % (ISSM_DIR, username, key, package, host, path), shell=True)
+                except CalledProcessError as e:
+                    raise CalledProcessError("issmscpout error message: could not call putty pscp.")
+
+        else:
+            #just use standard unix scp
+            #create string of packages being sent
+            string = ''
+            for package in packages:
+                string += ' ' + package
+            string += ' '
+
+            if port:
+                subprocess.call('scp -P %d %s %s@localhost:%s' % (port, string, login, path), shell=True)
+            else:
+                subprocess.call('scp %s %s@%s:%s' % (string, login, host, path), shell=True)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/issmssh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/issmssh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/issmssh.m	(revision 27955)
@@ -0,0 +1,37 @@
+function issmssh(host,login,port,command)
+%ISSMSSH - wrapper for OS independent ssh command.
+%
+%   usage: 
+%      issmssh(host,command)
+
+%first get hostname 
+hostname=oshostname();
+
+%if same as host, just run the command. 
+if strcmpi(host,hostname),
+	system(command);
+else
+	if ispc & ~ismingw,
+		%use the putty project plink.exe: it should be in the path.
+
+		%get ISSM_DIR variable
+		[status,ISSM_DIR]=system('echo [%ISSM_DIR_WIN%]');
+		if status, 
+			error('issmssh error message: could not find ISSM_DIR_WIN environment variable');
+		end
+		ISSM_DIR=ISSM_DIR(2:end-2);
+
+		username=input('Username: (quoted string) ');
+		key=input('Key: (quoted string) ');
+
+		system([ISSM_DIR '/externalpackages/ssh/plink.exe -ssh -l "' username '" -pw "' key '" ' host ' "' command '"']);
+
+	else
+		%just use standard unix ssh
+		if port,
+			eval(['!ssh -l ' login ' -p ' num2str(port) ' localhost "' command '"']);
+		else
+			eval(['!ssh -l ' login ' ' host ' "' command '"']);
+		end
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/issmssh.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/issmssh.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/issmssh.py	(revision 27955)
@@ -0,0 +1,57 @@
+import os
+import subprocess
+from sys import platform as _platform
+from MatlabFuncs import *
+
+
+def issmssh(host, login, port, command):
+    """ISSMSSH - wrapper for OS independent ssh command.
+
+    Usage:
+        issmssh(host, command)
+    """
+
+    #first get hostname
+    hostname = oshostname()
+
+    #if same as host, just run the command.
+    if strcmpi(host, hostname):
+        subprocess.call(command, shell=True)
+    else:
+        if ispc():
+            #use the putty project plink.exe: it should be in the path.
+            #get ISSM_DIR variable
+            if 'ISSM_DIR_WIN' in os.environ:
+                ISSM_DIR = os.environ['ISSM_DIR_WIN'][1:-2]
+            else:
+                raise OSError("issmssh error message: could not find ISSM_DIR_WIN environment variable.")
+
+            username = eval(input('Username: (quoted string) '))
+            key = eval(input('Key: (quoted string) '))
+
+            subprocess.call('%s/externalpackages/ssh/plink.exe-ssh -l "%s" -pw "%s" %s "%s"' % (ISSM_DIR, username, key, host, command), shell=True)
+
+        else:
+            #just use standard unix ssh
+            if port:
+                subprocess.call('ssh -l %s -p %d localhost "%s"' % (login, port, command), shell=True)
+            else:
+                subprocess.call('ssh -l {} {} "{}"'.format(login, host, command), shell=True)
+
+    # The following code was added to fix:
+    # "IOError: [Errno 35] Resource temporarily unavailable"
+    # on the Mac when trying to display md after the solution.
+    # (from http://code.google.com/p/robotframework/issues/detail?id=995)
+    if _platform == "darwin":
+        # Make FreeBSD use blocking I / O like other platforms
+        import sys
+        import fcntl
+        from os import O_NONBLOCK
+
+        fd = sys.stdin.fileno()
+        flags = fcntl.fcntl(fd, fcntl.F_GETFL)
+        fcntl.fcntl(fd, fcntl.F_SETFL, flags & ~O_NONBLOCK)
+
+        fd = sys.stdout.fileno()
+        flags = fcntl.fcntl(fd, fcntl.F_GETFL)
+        fcntl.fcntl(fd, fcntl.F_SETFL, flags & ~O_NONBLOCK)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/issmstscpin.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/issmstscpin.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/issmstscpin.m	(revision 27955)
@@ -0,0 +1,37 @@
+function issmstscpin(host, login,path, packages)
+%ISSMSCPIN get packages from host, using scp on unix, and pscp on windows
+%
+%   usage: issmstscpin(host,long, path, packages)
+%
+%
+
+%get initial warning mode
+state=warning('query', 'all');
+%remove warnings in case the files do not exist
+warning off
+for i=1:numel(packages),
+	delete(packages{i});
+end
+%back to initial warning state
+warning(state);
+
+%use starcluster to scp 
+%string to copy multiple files using scp: 
+if numel(packages)==1,
+	string=packages{1};
+else
+	string='';
+	for i=1:numel(packages)-1,
+		string=[string ' ' path packages{i} ' '];
+	end
+	string=[string path packages{end}];
+end
+
+system([starcluster() ' get ' host ' -u ' login ' ' string  ' ./']);
+
+%check starcluster get  worked
+for i=1:numel(packages),
+	if ~exist(['./' packages{i}]),
+		error('issmstscpin error message: could not call scp on *nix system');
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/issmstscpout.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/issmstscpout.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/issmstscpout.m	(revision 27955)
@@ -0,0 +1,15 @@
+function issmstscpout(host,path,login,packages)
+%ISSMSTSCPOUT send packages to a host, using starcluster put on unix
+%
+%   usage: issmstscpout(host,path,login,packages)
+%
+%
+
+%create string of packages being sent
+string='';
+for i=1:numel(packages),
+	string=[string ' ' packages{i}];
+end
+string=[string ' '];
+
+system([ starcluster() ' put ' host ' -u ' login ' ' string ' ' path]);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/issmstssh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/issmstssh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/issmstssh.m	(revision 27955)
@@ -0,0 +1,9 @@
+function issmstssh(host,login,command)
+%ISSMSSH - wrapper for OS independent ssh command.
+%
+%   usage: 
+%      issmstssh(host,command)
+
+%just use starcluster command to pipe an ssh command through
+system([starcluster() ' sshmaster ' host ' --user ' login ' ''' command '''']);
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/jplsvn.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/jplsvn.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/jplsvn.m	(revision 27955)
@@ -0,0 +1,15 @@
+function JPL_SVN=jplsvn()
+%ISSMDIR - Get JPL_SVN environment variable
+%
+%   Usage:
+%      JPL_SVN=jplsvn()
+
+if ~ispc(),
+	JPL_SVN =getenv('JPL_SVN');
+else
+	JPL_SVN =getenv('JPL_SVN_WIN');
+end
+
+if (isempty(JPL_SVN)),
+	error('jplsvn error message: ''JPL_SVN'' environment variable is empty! You should define JPL_SVN in your .cshrc or .bashrc');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/listfiles.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/listfiles.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/listfiles.m	(revision 27955)
@@ -0,0 +1,22 @@
+function list=listfiles()
+%LISTFILES list files inside a directory
+%        this is very OS dependent.
+%
+%   usage: list=listfiles;
+%
+%
+%   see also LS DIR
+
+%use dir, as it seems to act OS independent
+
+first_list=dir;
+list={};
+
+for i=1:numel(first_list),
+	if (  ~strcmpi(first_list(i).name,'.') &...
+			~strcmpi(first_list(i).name,'..') &...
+			~strcmpi(first_list(i).name,'NightlyRun') &...
+			~strcmpi(first_list(i).name,'.svn')),
+		list{end+1}=first_list(i).name;
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/listfilesparallel.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/listfilesparallel.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/listfilesparallel.m	(revision 27955)
@@ -0,0 +1,15 @@
+function list=listfilesparallel(rank,numprocs)
+%LISTFILESPARALLEL list files inside a directory, depending on rank  and number of processors running this routine.
+%        this is very OS dependent.
+%
+%   usage: list=listfilesparallel(rank,numprocs);
+%
+%
+%   see also LS DIR LISTFILES
+
+list=listfiles';
+numfiles=numel(list);
+
+%we now have a list, split it between all the processors.
+[i1,i2]=parallelrange(rank,numprocs,numfiles);
+list=list(i1:i2);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/oshostname.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/oshostname.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/oshostname.m	(revision 27955)
@@ -0,0 +1,40 @@
+function hostname=oshostname()
+%OSHOSTNAME - Determine hostname, irrespective of os type
+%
+%   Usage:
+%      hostname=oshostname();
+
+%Initialize output
+hostname = '';
+
+%First try using java (most stable way)
+if usejava('jvm'),
+	hostname = char(getHostName(java.net.InetAddress.getLocalHost));
+end
+
+%Method 2: use system command (MATLAB bug includes what's in the clipboard)
+if isempty(hostname),
+	%See http://www.mathworks.com/help/matlab/ref/system.html "tips" section
+	%We need to add < /dev/null otherwise what is in the clipboard is added
+	[status,hostname]=system('hostname < /dev/null');
+end
+
+%Method 3, last chance
+if isempty(hostname),
+	if ispc % If OS is MinGW, $COMPUTERNAME and $HOSTNAME are identical
+		hostname = getenv('COMPUTERNAME');
+	else
+		hostname = getenv('HOSTNAME');
+	end
+end
+
+% Take out minus signs
+hostname = strrep(hostname,'-','');
+
+% Trim and lower case
+hostname = strtrim(lower(hostname));
+
+% Check that machine name is not empty
+if isempty(hostname),
+	error('Cannot determine machine name');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/recursivepath.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/recursivepath.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/recursivepath.m	(revision 27955)
@@ -0,0 +1,39 @@
+function p = recursivepath(d)
+%RECURSIVEPATH - generate paths in a directory
+%
+%   this routine is equivalent to Matlab's genpath except that it skips CVS and
+%   .svn directories
+%
+%   Usage:
+%      p = recursivepath(d)
+
+%initialize path to be returned
+p = '';
+sep=pathsep;  %directory separator
+
+% Generate path based on given root directory
+files=dir(d);
+if isempty(files)
+	return
+end
+
+% Add d to the path even if it is empty.
+p = [p d sep];
+
+% set logical vector for subdirectory entries in d
+isdir = logical(cat(1,files.isdir));
+
+% Recursively goes through the subdirectories of d
+dirs=files(isdir); % select only directory entries from the current listing
+for i=1:length(dirs)
+	dirname=dirs(i).name;
+	if ~strcmp(dirname,'.')    & ...
+		~strcmp(dirname,'..')   & ...
+		~strcmp(dirname,'.svn') & ...
+		~strcmp(dirname,'CVS')  & ...
+		~strncmp(dirname,'@',1) & ... %Method directories not allowed in MATLAB path
+		~strcmp(dirname,'private')    %private directories not allowed in MATLAB path
+
+		p = [p recursivepath(fullfile(d,dirname))];
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/sessionname.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/sessionname.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/sessionname.m	(revision 27955)
@@ -0,0 +1,16 @@
+function name=sessionname()
+%SESSIONNAME - Get screen session name
+%
+%   Usage:
+%      name=sessionname()
+
+
+	[status,styname]=system('export | grep STY'); 
+
+	sessionname=styname(17:end-2);
+	if isempty(sessionname),
+		name='none';
+		return;
+	end
+	index=findstr(sessionname,'.');
+	name=sessionname(index+1:end);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/os/starcluster.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/os/starcluster.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/os/starcluster.m	(revision 27955)
@@ -0,0 +1,7 @@
+function STARCLUSTER=starcluster()
+%STARCLUSTER - Get path to STARCLUSTER command
+%
+%   Usage:
+%      STARCLUSTER=STARCLUSTER()
+
+STARCLUSTER=[issmdir() '/externalpackages/python/install/bin/starcluster -c ' jplsvn '/proj-group/CloudComputing/starcluster.config'];
Index: /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/contourenvelope.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/contourenvelope.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/contourenvelope.m	(revision 27955)
@@ -0,0 +1,138 @@
+function segments=contourenvelope(mh,varargin)
+%CONTOURENVELOPE - build a set of segments enveloping a contour .exp
+%
+%   Usage:
+%      segments=contourenvelope(mh,varargin)
+%
+%   Example:
+%      segments=contourenvelope(mh,'Stream.exp');
+%      segments=contourenvelope(mh);
+
+%some checks
+if nargin>2,
+	help contourenvelope
+	error('contourenvelope error message: bad usage');
+end
+if nargin==2,
+	flags=varargin{1};
+
+	if ischar(flags),
+		file=flags;
+		if ~exist(file),
+			error(['contourenvelope error message: file ' file ' not found']);
+		end
+		isfile=1;
+	elseif isnumeric(flags),
+		%do nothing for now
+		isfile=0;
+	else
+		error('contourenvelope error message: second argument should be a file or an elements flag');
+	end
+end
+
+%Now, build the connectivity tables for this mesh.
+%Computing connectivity
+if isnan(mh.vertexconnectivity),
+	mh.vertexconnectivity=NodeConnectivity(mh.elements,mh.numberofvertices);
+end
+if isnan(mh.elementconnectivity),
+	mh.elementconnectivity=ElementConnectivity(mh.elements,mh.vertexconnectivity);
+end
+
+%get nodes inside profile
+mesh.elementconnectivity=mh.elementconnectivity;
+if dimension(mh)==2,
+	mesh.elements=mh.elements;
+	mesh.x=mh.x;
+	mesh.y=mh.y;
+	mesh.numberofvertices=mh.numberofvertices;
+	mesh.numberofelements=mh.numberofelements;
+else
+	mesh.elements=mh.elements2d;
+	mesh.x=mh.x2d;
+	mesh.y=mh.y2d;
+	mesh.numberofvertices=mh.numberofvertices2d;
+	mesh.numberofelements=mh.numberofelements2d;
+end
+
+if nargin==2,
+
+	if isfile,
+		%get flag list of elements and nodes inside the contour
+		nodein=ContourToMesh(mesh.elements,mesh.x,mesh.y,file,'node',1);
+		elemin=(sum(nodein(mesh.elements),2)==size(mesh.elements,2));
+		%modify element connectivity
+		elemout=find(~elemin);
+		mesh.elementconnectivity(elemout,:)=0;
+		mesh.elementconnectivity(find(ismember(mesh.elementconnectivity,elemout)))=0;
+	else
+		%get flag list of elements and nodes inside the contour
+		nodein=zeros(mesh.numberofvertices,1);
+		elemin=zeros(mesh.numberofelements,1);
+
+		pos=find(flags);
+		elemin(pos)=1;
+		nodein(mesh.elements(pos,:))=1;
+
+		%modify element connectivity
+		elemout=find(~elemin);
+		mesh.elementconnectivity(elemout,:)=0;
+		mesh.elementconnectivity(find(ismember(mesh.elementconnectivity,elemout)))=0;
+	end
+end
+
+%Find element on boundary
+%First: find elements on the boundary of the domain
+flag=mesh.elementconnectivity;
+if nargin==2,
+	flag(find(flag))=elemin(flag(find(flag)));
+end
+elementonboundary=double(prod(flag,2)==0 & sum(flag,2)>0);
+
+%Find segments on boundary
+pos=find(elementonboundary);
+num_segments=length(pos);
+segments=zeros(num_segments*3,3);
+count=1;
+
+for i=1:num_segments,
+	el1=pos(i);
+	els2=mesh.elementconnectivity(el1,find(mesh.elementconnectivity(el1,:)));
+	if length(els2)>1,
+		flag=intersect(intersect(mesh.elements(els2(1),:),mesh.elements(els2(2),:)),mesh.elements(el1,:));
+		nods1=mesh.elements(el1,:);
+		nods1(find(nods1==flag))=[];
+		segments(count,:)=[nods1 el1];
+
+		ord1=find(nods1(1)==mesh.elements(el1,:));
+		ord2=find(nods1(2)==mesh.elements(el1,:));
+
+		%swap segment nodes if necessary
+		if ( (ord1==1 & ord2==2) | (ord1==2 & ord2==3) | (ord1==3 & ord2==1) ),
+			temp=segments(count,1);
+			segments(count,1)=segments(count,2);
+			segments(count,2)=temp;
+		end
+		segments(count,1:2)=fliplr(segments(count,1:2));
+		count=count+1;
+	else
+		nods1=mesh.elements(el1,:);
+		flag=setdiff(nods1,mesh.elements(els2,:));
+		for j=1:3,
+			nods=nods1; nods(j)=[];
+			if any(ismember(flag,nods)),
+				segments(count,:)=[nods el1];
+				ord1=find(nods(1)==mesh.elements(el1,:));
+				ord2=find(nods(2)==mesh.elements(el1,:));
+				if ( (ord1==1 & ord2==2) | (ord1==2 & ord2==3) | (ord1==3 & ord2==1) ),
+					temp=segments(count,1);
+					segments(count,1)=segments(count,2);
+					segments(count,2)=temp;
+				end
+				segments(count,1:2)=fliplr(segments(count,1:2));
+				count=count+1;
+			end
+		end
+	end
+end
+segments=segments(1:count-1,:);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/contourenvelope.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/contourenvelope.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/contourenvelope.py	(revision 27955)
@@ -0,0 +1,136 @@
+import copy
+import os.path
+import numpy as np
+
+from ContourToMesh import ContourToMesh
+from ElementConnectivity import ElementConnectivity
+import MatlabFuncs as m
+from NodeConnectivity import NodeConnectivity
+
+
+def contourenvelope(mh, *args):
+    """CONTOURENVELOPE - build a set of segments enveloping a contour .exp
+
+    Usage:
+        segments = contourenvelope(mh, *args)
+
+    Example:
+        segments = contourenvelope(mh, 'Stream.exp')
+        segments = contourenvelope(mh)
+    """
+
+    # Some checks
+    nargs = len(args)
+
+    if nargs > 1:
+        print(contourenvelope.__doc__)
+        raise Exception("contourenvelope error message: bad usage")
+
+    if nargs == 1:
+        flags = args[0]
+
+        if isinstance(flags, str):
+            file = flags
+            if not os.path.exists(file):
+                raise IOError("contourenvelope error message: file '%s' not found" % file)
+            isfile = 1
+        elif isinstance(flags, (bool, int, float)):
+            #do nothing for now
+            isfile = 0
+        else:
+            raise TypeError("contourenvelope error message: second argument should be a file or an elements flag")
+
+    # Now, build the connectivity tables for this mesh
+    # Computing connectivity
+    if np.size(mh.vertexconnectivity, axis=0) != mh.numberofvertices and np.size(mh.vertexconnectivity, axis=0) != mh.numberofvertices2d:
+        mh.vertexconnectivity = NodeConnectivity(mh.elements, mh.numberofvertices)
+    if np.size(mh.elementconnectivity, axis=0) != mh.numberofelements and np.size(mh.elementconnectivity, axis=0) != mh.numberofelements2d:
+        mh.elementconnectivity = ElementConnectivity(mh.elements, mh.vertexconnectivity)
+
+    #get nodes inside profile
+    elementconnectivity = copy.deepcopy(mh.elementconnectivity)
+    if mh.dimension() == 2:
+        elements = copy.deepcopy(mh.elements)
+        x = copy.deepcopy(mh.x)
+        y = copy.deepcopy(mh.y)
+        numberofvertices = copy.deepcopy(mh.numberofvertices)
+        numberofelements = copy.deepcopy(mh.numberofelements)
+    else:
+        elements = copy.deepcopy(mh.elements2d)
+        x = copy.deepcopy(mh.x2d)
+        y = copy.deepcopy(mh.y2d)
+        numberofvertices = copy.deepcopy(mh.numberofvertices2d)
+        numberofelements = copy.deepcopy(mh.numberofelements2d)
+
+    if len(args) == 1:
+        if isfile:
+            # Get flag list of elements and nodes inside the contour
+            nodein = ContourToMesh(elements, x, y, file, 'node', 1)
+            elemin = (np.sum(nodein(elements), axis=1) == np.size(elements, axis=1))
+            # Modify element connectivity
+            elemout = np.nonzero(np.logical_not(elemin))[0]
+            elementconnectivity[elemout, :] = 0
+            elementconnectivity[np.nonzero(m.ismember(elementconnectivity, elemout + 1))] = 0
+        else:
+            # Get flag list of elements and nodes inside the contour
+            nodein = np.zeros(numberofvertices)
+            elemin = np.zeros(numberofelements)
+
+            pos = np.nonzero(flags)
+            elemin[pos] = 1
+            nodein[elements[pos, :] - 1] = 1
+
+            # Modify element connectivity
+            elemout = np.nonzero(np.logical_not(elemin))[0]
+            elementconnectivity[elemout, :] = 0
+            elementconnectivity[np.nonzero(m.ismember(elementconnectivity, elemout + 1))] = 0
+
+    # Find element on boundary
+    # First: find elements on the boundary of the domain
+    flag = copy.deepcopy(elementconnectivity)
+    if len(args) == 1:
+        flag[np.nonzero(flag)] = elemin[flag[np.nonzero(flag)]]
+    elementonboundary = np.logical_and(np.prod(flag, axis=1) == 0, np.sum(flag, axis=1) > 0)
+
+    # Find segments on boundary
+    pos = np.nonzero(elementonboundary)[0]
+    num_segments = np.size(pos)
+    segments = np.zeros((num_segments * 3, 3), int)
+    count = 0
+
+    for el1 in pos:
+        els2 = elementconnectivity[el1, np.nonzero(elementconnectivity[el1, :])[0]] - 1
+        if np.size(els2) > 1:
+            flag = np.intersect1d(np.intersect1d(elements[els2[0], :], elements[els2[1], :]), elements[el1, :])
+            nods1 = elements[el1, :]
+            nods1 = np.delete(nods1, np.nonzero(nods1 == flag))
+            segments[count, :] = [nods1[0], nods1[1], el1 + 1]
+
+            ord1 = np.nonzero(nods1[0] == elements[el1, :])[0][0]
+            ord2 = np.nonzero(nods1[1] == elements[el1, :])[0][0]
+
+    #swap segment nodes if necessary
+            if ((ord1 == 0 and ord2 == 1) or (ord1 == 1 and ord2 == 2) or (ord1 == 2 and ord2 == 0)):
+                temp = segments[count, 0]
+                segments[count, 0] = segments[count, 1]
+                segments[count, 1] = temp
+            segments[count, 0:2] = np.flipud(segments[count, 0:2])
+            count += 1
+        else:
+            nods1 = elements[el1, :]
+            flag = np.setdiff1d(nods1, elements[els2, :])
+            for j in range(0, 3):
+                nods = np.delete(nods1, j)
+                if np.any(m.ismember(flag, nods)):
+                    segments[count, :] = [nods[0], nods[1], el1 + 1]
+                    ord1 = np.nonzero(nods[0] == elements[el1, :])[0][0]
+                    ord2 = np.nonzero(nods[1] == elements[el1, :])[0][0]
+                    if ((ord1 == 0 and ord2 == 1) or (ord1 == 1 and ord2 == 2) or (ord1 == 2 and ord2 == 0)):
+                        temp = segments[count, 0]
+                        segments[count, 0] = segments[count, 1]
+                        segments[count, 1] = temp
+                    segments[count, 0:2] = np.flipud(segments[count, 0:2])
+                    count += 1
+    segments = segments[0:count, :]
+
+    return segments
Index: /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/killberg.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/killberg.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/killberg.m	(revision 27955)
@@ -0,0 +1,67 @@
+function ice_levelset = killberg(md)
+%KILLBERG - kill ice berg
+%
+%   check md.mask.ice_levelset and md.mask.ocean_levelset and
+%   remove icebergs from md.mask.ice_levelset. This function is adapted
+%   from src/c/modules/KillIcebergsx/KillIcebergsx.cpp
+%
+%   Usage:
+%      ice_levelset = killberg(md)
+
+%Get number of vertices per element
+nbv_per_element = size(md.mesh.elements,2);
+
+%Initialize vectors (mask = is active and connected to grounded ice)
+mask         = zeros(md.mesh.numberofvertices,1);
+element_flag = zeros(md.mesh.numberofelements,1);
+
+disp('Looking for isolated patches of floating ice (icebergs)');
+
+%do not go through elements that don't have ice, mark flag as 1 (done)
+isice = min(md.mask.ice_levelset(md.mesh.elements),[],2)<0;
+%isice = (sum(md.mask.ice_levelset(md.mesh.elements)<0,2)>1);
+element_flag(find(~isice)) = 1;
+
+%do not go through elements that are grounded, mark flag as 1 (done) need at least 2 vertices!
+%and initialize mask as 1 for all vertices of these elements
+isgrounded=(sum(md.mask.ocean_levelset(md.mesh.elements)>0,2)>2);
+%isgrounded = max(md.mask.ocean_levelset(md.mesh.elements),[],2)>0;
+pos = find(isgrounded);
+%element_flag(pos) = 1;
+mask(md.mesh.elements(pos,:)) = 1;
+mask(md.mask.ice_levelset>=0) = 0;
+
+iter = 1;
+more = true;
+while(more)
+	disp(['   -- iteration ' num2str(iter)]);
+	more = false;
+
+	for i=find(~element_flag)'
+		indices = md.mesh.elements(i,:);
+		test = sum(mask(indices)>0)>1;
+		if(~test)
+			continue;
+		else
+			element_flag(i) = 1;
+			mask(indices) = 1;
+			more = true;
+		end
+	end
+	iter = iter+1;
+end
+
+%OK now change ice_levelset accroding to mask
+pos = find(mask==0 & md.mask.ice_levelset<0);
+if numel(pos)
+	if numel(pos)==1
+		disp(['REMOVING ' num2str(numel(pos)) ' vertex on icebergs']);
+	else
+		disp(['REMOVING ' num2str(numel(pos)) ' vertices on icebergs']);
+	end
+	ice_levelset = md.mask.ice_levelset;
+	ice_levelset(pos) = +1;
+else
+	disp('No iceberg found!');
+	ice_levelset = md.mask.ice_levelset;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/parameterize.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/parameterize.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/parameterize.m	(revision 27955)
@@ -0,0 +1,58 @@
+function md=parameterize(md,parametername)
+%PARAMETERIZE - parameterize a model
+%
+%   from a parameter MATLAB file, start filling in all the @model fields that were not 
+%   filled in by the mesh.m and mask.m @model methods.
+%   Warning: the parameter file must be able to be run in MATLAB
+%
+%   Usage:
+%      md=parameterize(md,parametername)
+%
+%   Example:
+%      md=parameterize(md,'Square.par');
+
+%some checks
+if ~exist(parametername),
+	error(['parameterize error message: file ' parametername ' not found!']);
+end
+
+%Try and run parameter file.
+temporaryname=['TemporaryParameterFile' num2str(feature('GetPid')) ];
+copyfile(parametername,[temporaryname '.m']);
+
+%WARNING: this is a bug of matlab: the TemporaryParameterFile must be cleared
+%otherwise matlab keeps the previous version of this file which is not what
+%we want!!!
+eval(['clear ' temporaryname]);
+
+try,
+	eval(temporaryname);
+	delete([temporaryname '.m']);
+catch me,
+	delete([temporaryname '.m']);
+
+	%copy error message
+	me2=struct('message',me.message,'stack',me.stack);
+
+	%rename parameter file
+	for i=1:length(me2.stack)-1,
+		if strcmp(me2.stack(i).name,temporaryname)
+			me2.stack(i).file = strrep(me2.stack(i).file,temporaryname,parametername);
+			me2.stack(i).name = parametername;
+		end
+		if strcmp(me2.stack(i).name,'parameterize'),
+			%remove error (eval(temporaryname);) misleading
+			me2.stack(i)=[];
+		end
+	end
+
+	%throw error message
+	rethrow(me2);
+end
+
+%Name and notes
+if isempty(md.miscellaneous.name), 
+	[path,root,ext]=fileparts(parametername);
+	md.miscellaneous.name=root; 
+end
+md.miscellaneous.notes=['Model created by using parameter file: ' parametername ' on: ' datestr(now)];
Index: /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/parameterize.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/parameterize.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/parameterize.py	(revision 27955)
@@ -0,0 +1,32 @@
+import os
+import datetime
+
+
+def parameterize(md, parametername):
+    """parameterize - parameterize a model
+
+    From a parameter Python file, start filling in all the model fields that 
+    were not filled in by the mesh.py and mask.py model methods. 
+    Warning: the parameter file must be able to be run in Python
+
+    Usage:
+        md = parameterize(md, parametername)
+
+    Example:
+        md = parameterize(md, 'Square.py')
+    """
+
+    # Some checks
+    if not os.path.exists(parametername):
+        raise IOError("parameterize error message: file '%s' not found!" % parametername)
+
+    # Try and run parameter file
+    exec(compile(open(parametername).read(), parametername, 'exec'))
+
+    # Name and notes
+    if not md.miscellaneous.name:
+        md.miscellaneous.name = os.path.basename(parametername).split('.')[0]
+
+    md.miscellaneous.notes = 'Model created by using parameter file: \'%s\' on: %s.' % (parametername, datetime.datetime.strftime(datetime.datetime.now(), '%c'))
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/reinitializelevelset.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/reinitializelevelset.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/reinitializelevelset.m	(revision 27955)
@@ -0,0 +1,31 @@
+function levelsetnew = reinitializelevelset(md,levelset)
+%REINITIALIZELEVELSET - reinitialize levelset as a signed distance function
+%
+%   Usage:
+%      levelsetnew = reinitializelevelset(md,levelset)
+
+% if md is 3d, levelset should be projected on a 2d mesh 
+
+if isempty(levelset), error('levelset provided is empty'); end
+if dimension(md.mesh)==3,
+   if length(levelset)~=md.mesh.numberofvertices2d, error('levelset provided should be specified at the 2d vertices of the mesh'); end
+else
+   if length(levelset)~=md.mesh.numberofvertices, error('levelset provided should be specified at the vertices of the mesh'); end
+end
+
+%First: extract segments
+contours=isoline(md,levelset,'value',0);
+
+%Now, make this a distance field (might not be closed)
+levelsetnew=abs(ExpToLevelSet(md.mesh.x,md.mesh.y,contours)); % levelsetnew comes on the 3d vertices, if mesh is 3d
+
+%Finally, change sign
+pos=find(levelset<0); % if mesh is 3d, it refers to the vertices on the base
+if dimension(md.mesh)==3
+	for i=1:md.mesh.numberoflayers
+		pos3d=pos+(i-1)*md.mesh.numberofvertices2d;
+		levelsetnew(pos3d)=-levelsetnew(pos3d);
+	end	
+else
+	levelsetnew(pos)=-levelsetnew(pos);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/reinitializelevelset.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/reinitializelevelset.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/reinitializelevelset.py	(revision 27955)
@@ -0,0 +1,39 @@
+import numpy as np
+from model import model
+from contourlevelzero import *
+from ExpToLevelSet import *
+
+def reinitializelevelset(md,levelset):
+    """REINITIALIZELEVELSET - reinitialize levelset as a signed distance function
+
+    Usage:
+       levelsetnew = reinitializelevelset(md,levelset)
+    """
+    
+    # if md is 3d, levelset should be projected on a 2d mesh 
+    if len(levelset) == 0:
+        raise IOError("levelset provided is empty")
+    
+    if md.mesh.dimension() == 3:
+        if len(levelset)!=md.mesh.numberofvertices2d:
+            raise IOError("levelset provided should be specified at the 2d vertices of the mesh")
+        else:
+            if len(levelset)!=md.mesh.numberofvertices:
+                raise IOError("levelset provided should be specified at the vertices of the mesh")
+            
+    #First: extract segments
+    contours=contourlevelzero(md,levelset,0)
+    
+    #Now, make this a distance field (might not be closed)
+    levelsetnew=np.abs(ExpToLevelSet(md.mesh.x,md.mesh.y,contours)).T # levelsetnew comes on the 3d vertices, if mesh is 3d
+    
+    #Finally, change sign
+    pos=np.where(levelset<0) # if mesh is 3d, it refers to the vertices on the base
+    if md.mesh.dimension()==3:
+        for i in range(md.mesh.numberoflayers):
+            pos3d=pos[0]+i*md.mesh.numberofvertices2d
+            levelsetnew[pos3d]=-levelsetnew[pos3d]
+    else:
+        levelsetnew[pos[0]]=-1*levelsetnew[pos[0]]
+        
+    return levelsetnew
Index: /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setflowequation.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setflowequation.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setflowequation.js	(revision 27955)
@@ -0,0 +1,318 @@
+function setflowequation(md){
+//SETFLOWEQUATION - associate a solution type to each element
+//
+//   This routine works like plotmodel: it works with an even number of inputs
+//   'SIA','SSA','L1L2','MOLHO','HO','FS' and 'fill' are the possible options
+//   that must be followed by the corresponding exp file or flags list
+//   It can either be a domain file (argus type, .exp extension), or an array of element flags. 
+//   If user wants every element outside the domain to be 
+//   setflowequationd, add '~' to the name of the domain file (ex: '~HO.exp');
+//   an empty string '' will be considered as an empty domain
+//   a string 'all' will be considered as the entire domain
+//   You can specify the type of coupling, 'penalties' or 'tiling', to use with the input 'coupling'
+//   NB: L1L2 and MOLHO cannot currently be coupled to any other ice flow model
+//
+//   Usage:
+//      setflowequation(md,varargin)
+//
+//   Example:
+//      setflowequation(md,'HO',HO,'fill','SIA','coupling','tiling');
+
+	//some checks on list of arguments
+	if(arguments.length<3) throw Error('setflowequation error message');
+
+	//Process options
+	var args = Array.prototype.slice.call(arguments);
+	var options = new pairoptions(args.slice(1,args.length));
+	options.deleteduplicates(1);
+
+	//Find_out what kind of coupling to use
+	coupling_method=options.getfieldvalue('coupling','tiling');
+	if ((coupling_method != 'tiling') & !(coupling_method != 'penalties')){
+		throw error('coupling type can only be: tiling or penalties');
+	}
+
+	//recover elements distribution
+	SIAflag  = FlagElements(md,options.getfieldvalue('SIA',''));
+	SSAflag  = FlagElements(md,options.getfieldvalue('SSA',''));
+	HOflag   = FlagElements(md,options.getfieldvalue('HO',''));
+	L1L2flag = FlagElements(md,options.getfieldvalue('L1L2',''));
+	MOLHOflag = FlagElements(md,options.getfieldvalue('MOLHO',''));
+	FSflag   = FlagElements(md,options.getfieldvalue('FS',''));
+	filltype = options.getfieldvalue('fill','none');
+	options.displayunused();
+
+	//Flag the elements that have not been flagged as filltype
+	if (filltype === 'SIA'){
+		for(var i=0;i<md.mesh.numberofelements;i++)if(!(SSAflag[i] | HOflag[i]))SIAflag[i]=1;
+	}
+	else if (filltype === 'SSA'){
+		for(var i=0;i<md.mesh.numberofelements;i++)if(!(SIAflag[i] | HOflag[i] | FSflag[i]))SSAflag[i]=1;
+	}
+	else if (filltype === 'HO'){
+		for(var i=0;i<md.mesh.numberofelements;i++)if(!(SIAflag[i] | SSAflag[i] | FSflag[i]))HOflag[i]=1;
+	}
+
+	//check that each element has at least one flag
+	for(var i=0;i<md.mesh.numberofelements;i++)if((SIAflag[i] + SSAflag[i] + HOflag[i] + L1L2flag[i] + MOLHOflag[i] + FSflag[i])==0)
+	throw Error("elements type not assigned, supported models are 'SIA','SSA','HO' and 'FS'");
+
+	//check that each element has only one flag
+	if (ArrayAnyAboveStrict(ArrayXPY(SIAflag,SSAflag,HOflag,L1L2flag,MOLHOflag),1)){
+		console.log('setflowequation warning message: some elements have several types, higher order type is used for them')
+
+		for(var i=0;i<md.mesh.numberofelements;i++){
+			if(SIAflag[i] & SSAflag[i])SIAflag[i]=0;
+			if(SIAflag[i] & HOflag[i])SIAflag[i]=0;
+			if(SSAflag[i] & HOflag[i])SSAflag[i]=0;
+		}
+	}
+
+	//check that L1L2 is not coupled to any other model for now
+	if (ArrayAnyEqual(L1L2flag,1) & ArrayAnyEqual(ArrayOr(SIAflag,SSAflag,HOflag,FSflag),1)) throw Error('L1L2 cannot be coupled to any other model');
+	if (ArrayAnyEqual(MOLHOflag,1) & ArrayAnyEqual(ArrayOr(SIAflag,SSAflag,HOflag,FSflag),1)) throw Error('MOLHO cannot be coupled to any other model');
+
+	//Check that no HO or FS for 2d mesh
+	if (md.mesh.domaintype() == '2Dhorizontal'){
+		for(var i=0;i<FSflag.length;i++){
+			if(FSflag[i] | HOflag[i]) throw Error('FS and HO elements not allowed in 2d mesh, extrude it first')
+		}
+	}
+
+	//FS can only be used alone for now:
+	if (ArrayAnyEqual(FSflag,1) & ArrayAnyEqual(SIAflag,1)) throw Error('FS cannot be used with any other model for now, put FS everywhere')
+
+	//Initialize node fields
+	nodeonSIA=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(SIAflag,1);
+	for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonSIA[md.mesh.elements[pos[i]][j]-1]=1;
+	
+	nodeonSSA=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(SSAflag,1);
+	for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonSSA[md.mesh.elements[pos[i]][j]-1]=1;
+	
+	nodeonHO=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(HOflag,1);
+	for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonHO[md.mesh.elements[pos[i]][j]-1]=1;
+	
+	nodeonL1L2=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(L1L2flag,1);
+	for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonL1L2[md.mesh.elements[pos[i]][j]-1]=1;
+
+	nodeonMOLHO=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(MOLHOflag,1);
+	for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonMOLHO[md.mesh.elements[pos[i]][j]-1]=1;
+
+	nodeonFS=NewArrayFill(md.mesh.numberofvertices,0);
+	noneflag=NewArrayFill(md.mesh.numberofvertices,0);
+	
+	
+	//First modify FSflag to get rid of elements contrained everywhere (spc + border with HO or SSA)
+	if (ArrayAnyEqual(FSflag,1)){
+		throw Error("FS elements not supported yet!");
+		/*fullspcnodes=double((~isnan(md.stressbalance.spcvx)+~isnan(md.stressbalance.spcvy)+~isnan(md.stressbalance.spcvz))==3 | (nodeonHO & nodeonFS));         //find all the nodes on the boundary of the domain without icefront
+		fullspcelems=double(sum(fullspcnodes(md.mesh.elements),2)==6);         //find all the nodes on the boundary of the domain without icefront
+		FSflag(find(fullspcelems))=0;
+		nodeonFS(md.mesh.elements(find(FSflag),:))=1;*/
+	}
+
+	//Then complete with NoneApproximation or the other model used if there is no FS
+	if (ArrayAnyEqual(FSflag,1)){
+		throw Error("FS elements not supported yet!");
+		/*if any(HOflag), //fill with HO
+			HOflag(~FSflag)=1;
+			nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+		elseif any(SSAflag), //fill with SSA
+			SSAflag(~FSflag)=1;
+			nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+		else //fill with none 
+			noneflag(find(~FSflag))=1;
+		end*/
+	}
+
+	//Now take care of the coupling between SSA and HO
+	md.stressbalance.vertex_pairing=[];
+	nodeonSSAHO=NewArrayFill(md.mesh.numberofvertices,0);
+	nodeonHOFS=NewArrayFill(md.mesh.numberofvertices,0);
+	nodeonSSAFS=NewArrayFill(md.mesh.numberofvertices,0);
+	SSAHOflag=NewArrayFill(md.mesh.numberofelements,0);
+	SSAFSflag=NewArrayFill(md.mesh.numberofelements,0);
+	HOFSflag=NewArrayFill(md.mesh.numberofelements,0);
+
+	/*if strcmpi(coupling_method,'penalties'),
+		//Create the border nodes between HO and SSA and extrude them
+		numnodes2d=md.mesh.numberofvertices2d;
+		numlayers=md.mesh.numberoflayers;
+		bordernodes2d=find(nodeonHO(1:numnodes2d) & nodeonSSA(1:numnodes2d)); //Nodes connected to two different types of elements
+
+		//initialize and fill in penalties structure
+		if ~isnan(bordernodes2d),
+			penalties=[];
+			for	i=1:numlayers-1,
+				penalties=[penalties; [bordernodes2d bordernodes2d+md.mesh.numberofvertices2d*(i)]];
+			end
+			md.stressbalance.vertex_pairing=penalties;
+		end
+	elseif strcmpi(coupling_method,'tiling'),
+		if any(SSAflag) & any(HOflag), //coupling SSA HO
+			//Find node at the border
+			nodeonSSAHO(find(nodeonSSA & nodeonHO))=1;
+			//SSA elements in contact with this layer become SSAHO elements
+			matrixelements=ismember(md.mesh.elements,find(nodeonSSAHO));
+			commonelements=sum(matrixelements,2)~=0;
+			commonelements(find(HOflag))=0; //only one layer: the elements previously in SSA
+			SSAflag(find(commonelements))=0; //these elements are now SSAHOelements
+			SSAHOflag(find(commonelements))=1;
+			nodeonSSA(:)=0;
+			nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+
+			//rule out elements that don't touch the 2 boundaries
+			pos=find(SSAHOflag);
+			elist=zeros(length(pos),1);
+			elist = elist + any(sum(nodeonSSA(md.mesh.elements(pos,:)),2),2);
+			elist = elist - any(sum(nodeonHO(md.mesh.elements(pos,:))  ,2),2);
+			pos1=find(elist==1);
+			SSAflag(pos(pos1))=1;
+			SSAHOflag(pos(pos1))=0;
+			pos2=find(elist==-1);
+			HOflag(pos(pos2))=1;
+			SSAHOflag(pos(pos2))=0;
+
+			//Recompute nodes associated to these elements
+			nodeonSSA(:)=0;
+			nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+			nodeonHO(:)=0;
+			nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+			nodeonSSAHO(:)=0;
+			nodeonSSAHO(md.mesh.elements(find(SSAHOflag),:))=1;
+
+		elseif any(HOflag) & any(FSflag), //coupling HO FS
+			//Find node at the border
+			nodeonHOFS(find(nodeonHO & nodeonFS))=1;
+			//FS elements in contact with this layer become HOFS elements
+			matrixelements=ismember(md.mesh.elements,find(nodeonHOFS));
+			commonelements=sum(matrixelements,2)~=0;
+			commonelements(find(HOflag))=0; //only one layer: the elements previously in SSA
+			FSflag(find(commonelements))=0; //these elements are now SSAHOelements
+			HOFSflag(find(commonelements))=1;
+			nodeonFS=zeros(md.mesh.numberofvertices,1);
+			nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+
+			//rule out elements that don't touch the 2 boundaries
+			pos=find(HOFSflag);
+			elist=zeros(length(pos),1);
+			elist = elist + any(sum(nodeonFS(md.mesh.elements(pos,:)),2),2);
+			elist = elist - any(sum(nodeonHO(md.mesh.elements(pos,:)),2),2);
+			pos1=find(elist==1);
+			FSflag(pos(pos1))=1;
+			HOFSflag(pos(pos1))=0;
+			pos2=find(elist==-1);
+			HOflag(pos(pos2))=1;
+			HOFSflag(pos(pos2))=0;
+
+			//Recompute nodes associated to these elements
+			nodeonFS(:)=0;
+			nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+			nodeonHO(:)=0;
+			nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+			nodeonHOFS(:)=0;
+			nodeonHOFS(md.mesh.elements(find(HOFSflag),:))=1;
+
+		elseif any(FSflag) & any(SSAflag),
+			//Find node at the border
+			nodeonSSAFS(find(nodeonSSA & nodeonFS))=1;
+			//FS elements in contact with this layer become SSAFS elements
+			matrixelements=ismember(md.mesh.elements,find(nodeonSSAFS));
+			commonelements=sum(matrixelements,2)~=0;
+			commonelements(find(SSAflag))=0; //only one layer: the elements previously in SSA
+			FSflag(find(commonelements))=0; //these elements are now SSASSAelements
+			SSAFSflag(find(commonelements))=1;
+			nodeonFS=zeros(md.mesh.numberofvertices,1);
+			nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+
+			//rule out elements that don't touch the 2 boundaries
+			pos=find(SSAFSflag);
+			elist=zeros(length(pos),1);
+			elist = elist + any(sum(nodeonSSA(md.mesh.elements(pos,:)),2),2);
+			elist = elist - any(sum(nodeonFS(md.mesh.elements(pos,:))  ,2),2);
+			pos1=find(elist==1);
+			SSAflag(pos(pos1))=1;
+			SSAFSflag(pos(pos1))=0;
+			pos2=find(elist==-1);
+			FSflag(pos(pos2))=1;
+			SSAFSflag(pos(pos2))=0;
+
+			//Recompute nodes associated to these elements
+			nodeonSSA(:)=0;
+			nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+			nodeonFS(:)=0;
+			nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+			nodeonSSAFS(:)=0;
+			nodeonSSAFS(md.mesh.elements(find(SSAFSflag),:))=1;
+
+		elseif any(FSflag) & any(SIAflag),
+			error('type of coupling not supported yet');
+		end
+	end*/
+
+	//Create element equations
+	md.flowequation.element_equation=NewArrayFill(md.mesh.numberofelements,0);
+	pos=ArrayFind(noneflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=0;
+	pos=ArrayFind(SIAflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=1;
+	pos=ArrayFind(SSAflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=2;
+	pos=ArrayFind(L1L2flag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=3;
+	pos=ArrayFind(MOLHOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=4;
+	pos=ArrayFind(HOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=5;
+	pos=ArrayFind(FSflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=6;
+	pos=ArrayFind(SSAHOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=7;
+	pos=ArrayFind(SSAFSflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=8;
+	pos=ArrayFind(HOFSflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=9;
+
+
+	//border
+	md.flowequation.borderHO=nodeonHO;
+	md.flowequation.borderSSA=nodeonSSA;
+	md.flowequation.borderFS=nodeonFS;
+	
+
+	//Create vertices_type
+	md.flowequation.vertex_equation=NewArrayFill(md.mesh.numberofvertices,0);
+
+	pos=ArrayFind(nodeonSSA,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=2;
+	pos=ArrayFind(nodeonL1L2,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=3;
+	pos=ArrayFind(nodeonMOLHO,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=4;
+	pos=ArrayFind(nodeonHO,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=5;
+	pos=ArrayFind(nodeonFS,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=6;
+	//DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority)
+	pos=ArrayFind(nodeonSIA,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=1;
+	if (ArrayAnyEqual(FSflag,1)){
+		pos=ArrayFind(nodeonFS==0);
+		if(ArrayAnyEqual(HOflag,0) & ArrayAnyEqual(SSA,0)){
+			for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=0;
+		}
+	}
+
+	pos=ArrayFind(nodeonSSAHO,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=7;
+	pos=ArrayFind(nodeonHOFS,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=8;
+	pos=ArrayFind(nodeonSSAFS,2);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=9;
+
+	//figure out solution types
+	md.flowequation.isSIA  = ArrayAnyEqual(md.flowequation.element_equation,1);
+	md.flowequation.isSSA  = ArrayAnyEqual(md.flowequation.element_equation,2);
+	md.flowequation.isL1L2 = ArrayAnyEqual(md.flowequation.element_equation,3);
+	md.flowequation.isMOLHO = ArrayAnyEqual(md.flowequation.element_equation,4);
+	md.flowequation.isHO   = ArrayAnyEqual(md.flowequation.element_equation,5);
+	md.flowequation.isFS   = ArrayAnyEqual(md.flowequation.element_equation,6);
+	return
+
+	//Check that tiling can work:
+	/*if any(md.flowequation.borderSSA) & any(md.flowequation.borderHO) & any(md.flowequation.borderHO + md.flowequation.borderSSA ~=1),
+		error('error coupling domain too irregular');
+	end
+	if any(md.flowequation.borderSSA) & any(md.flowequation.borderFS) & any(md.flowequation.borderFS + md.flowequation.borderSSA ~=1),
+		error('error coupling domain too irregular');
+	end
+	if any(md.flowequation.borderFS) & any(md.flowequation.borderHO) & any(md.flowequation.borderHO + md.flowequation.borderFS~=1),
+		error('error coupling domain too irregular');
+	end*/
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setflowequation.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setflowequation.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setflowequation.m	(revision 27955)
@@ -0,0 +1,304 @@
+function md=setflowequation(md,varargin)
+%SETFLOWEQUATION - associate a solution type to each element
+%
+%   This routine works like plotmodel: it works with an even number of inputs
+%   'SIA','SSA','L1L2','MOLHO','HO','FS' and 'fill' are the possible options
+%   that must be followed by the corresponding exp file or flags list
+%   It can either be a domain file (argus type, .exp extension), or an array of element flags. 
+%   If user wants every element outside the domain to be 
+%   setflowequationd, add '~' to the name of the domain file (ex: '~HO.exp');
+%   an empty string '' will be considered as an empty domain
+%   a string 'all' will be considered as the entire domain
+%   You can specify the type of coupling, 'penalties' or 'tiling', to use with the input 'coupling'
+%   NB: L1L2 and MOLHO cannot currently be coupled to any other ice flow model
+%
+%   Usage:
+%      md=setflowequation(md,varargin)
+%
+%   Example:
+%      md=setflowequation(md,'HO','HO.exp',fill','SIA','coupling','tiling');
+
+%some checks on list of arguments
+if ((nargin<2) | (nargout~=1)),
+	error('setflowequation error message');
+end
+
+%Process options
+options=pairoptions(varargin{:});
+options=deleteduplicates(options,1);
+
+%Find_out what kind of coupling to use
+coupling_method=getfieldvalue(options,'coupling','tiling');
+if (~strcmpi(coupling_method,'tiling') & ~strcmpi(coupling_method,'penalties')),
+	error('coupling type can only be: tiling or penalties');
+end
+
+%recover elements distribution
+SIAflag  = FlagElements(md,getfieldvalue(options,'SIA',''));
+SSAflag  = FlagElements(md,getfieldvalue(options,'SSA',''));
+HOflag   = FlagElements(md,getfieldvalue(options,'HO',''));
+L1L2flag = FlagElements(md,getfieldvalue(options,'L1L2',''));
+MOLHOflag = FlagElements(md,getfieldvalue(options,'MOLHO',''));
+FSflag   = FlagElements(md,getfieldvalue(options,'FS',''));
+filltype = getfieldvalue(options,'fill','none');
+displayunused(options);
+
+%Flag the elements that have not been flagged as filltype
+if strcmpi(filltype,'SIA'),
+	SIAflag(find(~(SSAflag | HOflag)))=1;
+elseif strcmpi(filltype,'SSA'),
+	SSAflag(find(~(SIAflag | HOflag | FSflag)))=1;
+elseif strcmpi(filltype,'HO'),
+	HOflag(find(~(SIAflag | SSAflag | FSflag)))=1;
+end
+
+%check that each element has at least one flag
+if any(SIAflag+SSAflag+HOflag+L1L2flag+MOLHOflag+FSflag==0),
+	error('elements type not assigned, supported models are ''SIA'',''SSA'',''HO'',''MOLHO'' and ''FS''')
+end
+
+%check that each element has only one flag
+if any(SIAflag+SSAflag+HOflag+L1L2flag+MOLHOflag+FSflag>1),
+	disp('setflowequation.m: Warning: some elements have several types, higher order type is used for them')
+	SIAflag(find(SIAflag & SSAflag))=0;
+	SIAflag(find(SIAflag & HOflag))=0;
+	SSAflag(find(SSAflag & HOflag))=0;
+end
+
+%check that L1L2 is not coupled to any other model for now
+if any(L1L2flag) & any(SIAflag | SSAflag | HOflag | FSflag)
+	error('L1L2 cannot be coupled to any other model');
+end
+if any(MOLHOflag) & any(SIAflag | SSAflag | HOflag | FSflag)
+	error('MOLHO cannot be coupled to any other model');
+end
+
+%Check that no HO or FS for 2d mesh
+if strcmp(domaintype(md.mesh),'2Dhorizontal')
+	if any(FSflag | HOflag)
+		error('FS and HO elements not allowed in 2d mesh, extrude it first')
+	end
+end
+
+%FS can only be used alone for now:
+if any(FSflag) &any(SIAflag),
+	error('FS cannot be used with any other model for now, put FS everywhere')
+end
+
+%Initialize node fields
+nodeonSIA=zeros(md.mesh.numberofvertices,1);  nodeonSIA(md.mesh.elements(find(SIAflag),:))=1;
+nodeonSSA=zeros(md.mesh.numberofvertices,1);  nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+nodeonHO=zeros(md.mesh.numberofvertices,1);   nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+nodeonL1L2=zeros(md.mesh.numberofvertices,1); nodeonL1L2(md.mesh.elements(find(L1L2flag),:))=1;
+nodeonMOLHO=zeros(md.mesh.numberofvertices,1); nodeonMOLHO(md.mesh.elements(find(MOLHOflag),:))=1;
+nodeonFS=zeros(md.mesh.numberofvertices,1);
+noneflag=zeros(md.mesh.numberofelements,1);
+
+%First modify FSflag to get rid of elements contrained everywhere (spc + border with HO or SSA)
+if any(FSflag),
+	fullspcnodes=double((~isnan(md.stressbalance.spcvx)+~isnan(md.stressbalance.spcvy)+~isnan(md.stressbalance.spcvz))==3 | (nodeonHO & nodeonFS));         %find all the nodes on the boundary of the domain without icefront
+	fullspcelems=double(sum(fullspcnodes(md.mesh.elements),2)==6);         %find all the nodes on the boundary of the domain without icefront
+	FSflag(find(fullspcelems))=0;
+	nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+end
+
+%Then complete with NoneApproximation or the other model used if there is no FS
+if any(FSflag), 
+	if any(HOflag), %fill with HO
+		HOflag(~FSflag)=1;
+		nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+	elseif any(SSAflag), %fill with SSA
+		SSAflag(~FSflag)=1;
+		nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+	else %fill with none 
+		noneflag(find(~FSflag))=1;
+	end
+end
+
+%Now take care of the coupling between SSA and HO
+if strcmpi(coupling_method,'penalties'),
+	md.stressbalance.vertex_pairing=[];
+end
+nodeonSSAHO=zeros(md.mesh.numberofvertices,1);
+nodeonHOFS=zeros(md.mesh.numberofvertices,1);
+nodeonSSAFS=zeros(md.mesh.numberofvertices,1);
+SSAHOflag=zeros(md.mesh.numberofelements,1);
+SSAFSflag=zeros(md.mesh.numberofelements,1);
+HOFSflag=zeros(md.mesh.numberofelements,1);
+if strcmpi(coupling_method,'penalties'),
+	%Create the border nodes between HO and SSA and extrude them
+	numnodes2d=md.mesh.numberofvertices2d;
+	numlayers=md.mesh.numberoflayers;
+	bordernodes2d=find(nodeonHO(1:numnodes2d) & nodeonSSA(1:numnodes2d)); %Nodes connected to two different types of elements
+
+	%initialize and fill in penalties structure
+	if ~isnan(bordernodes2d),
+		penalties=[];
+		for	i=1:numlayers-1,
+			penalties=[penalties; [bordernodes2d bordernodes2d+md.mesh.numberofvertices2d*(i)]];
+		end
+		md.stressbalance.vertex_pairing=penalties;
+	end
+elseif strcmpi(coupling_method,'tiling'),
+	if any(SSAflag) & any(HOflag), %coupling SSA HO
+		%Find node at the border
+		nodeonSSAHO(find(nodeonSSA & nodeonHO))=1;
+		%SSA elements in contact with this layer become SSAHO elements
+		matrixelements=ismember(md.mesh.elements,find(nodeonSSAHO));
+		commonelements=sum(matrixelements,2)~=0;
+		commonelements(find(HOflag))=0; %only one layer: the elements previously in SSA
+		SSAflag(find(commonelements))=0; %these elements are now SSAHOelements
+		SSAHOflag(find(commonelements))=1;
+		nodeonSSA(:)=0;
+		nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+
+		%rule out elements that don't touch the 2 boundaries
+		pos=find(SSAHOflag);
+		elist=zeros(length(pos),1);
+		elist = elist + any(sum(nodeonSSA(md.mesh.elements(pos,:)),2),2);
+		elist = elist - any(sum(nodeonHO(md.mesh.elements(pos,:))  ,2),2);
+		pos1=find(elist==1);
+		SSAflag(pos(pos1))=1;
+		SSAHOflag(pos(pos1))=0;
+		pos2=find(elist==-1);
+		HOflag(pos(pos2))=1;
+		SSAHOflag(pos(pos2))=0;
+
+		%Recompute nodes associated to these elements
+		nodeonSSA(:)=0;
+		nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+		nodeonHO(:)=0;
+		nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+		nodeonSSAHO(:)=0;
+		nodeonSSAHO(md.mesh.elements(find(SSAHOflag),:))=1;
+
+	elseif any(HOflag) & any(FSflag), %coupling HO FS
+		%Find node at the border
+		nodeonHOFS(find(nodeonHO & nodeonFS))=1;
+		%FS elements in contact with this layer become HOFS elements
+		matrixelements=ismember(md.mesh.elements,find(nodeonHOFS));
+		commonelements=sum(matrixelements,2)~=0;
+		commonelements(find(HOflag))=0; %only one layer: the elements previously in SSA
+		FSflag(find(commonelements))=0; %these elements are now SSAHOelements
+		HOFSflag(find(commonelements))=1;
+		nodeonFS=zeros(md.mesh.numberofvertices,1);
+		nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+
+		%rule out elements that don't touch the 2 boundaries
+		pos=find(HOFSflag);
+		elist=zeros(length(pos),1);
+		elist = elist + any(sum(nodeonFS(md.mesh.elements(pos,:)),2),2);
+		elist = elist - any(sum(nodeonHO(md.mesh.elements(pos,:)),2),2);
+		pos1=find(elist==1);
+		FSflag(pos(pos1))=1;
+		HOFSflag(pos(pos1))=0;
+		pos2=find(elist==-1);
+		HOflag(pos(pos2))=1;
+		HOFSflag(pos(pos2))=0;
+
+		%Recompute nodes associated to these elements
+		nodeonFS(:)=0;
+		nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+		nodeonHO(:)=0;
+		nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+		nodeonHOFS(:)=0;
+		nodeonHOFS(md.mesh.elements(find(HOFSflag),:))=1;
+
+	elseif any(FSflag) & any(SSAflag),
+		%Find node at the border
+		nodeonSSAFS(find(nodeonSSA & nodeonFS))=1;
+		%FS elements in contact with this layer become SSAFS elements
+		matrixelements=ismember(md.mesh.elements,find(nodeonSSAFS));
+		commonelements=sum(matrixelements,2)~=0;
+		commonelements(find(SSAflag))=0; %only one layer: the elements previously in SSA
+		FSflag(find(commonelements))=0; %these elements are now SSASSAelements
+		SSAFSflag(find(commonelements))=1;
+		nodeonFS=zeros(md.mesh.numberofvertices,1);
+		nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+
+		%rule out elements that don't touch the 2 boundaries
+		pos=find(SSAFSflag);
+		elist=zeros(length(pos),1);
+		elist = elist + any(sum(nodeonSSA(md.mesh.elements(pos,:)),2),2);
+		elist = elist - any(sum(nodeonFS(md.mesh.elements(pos,:))  ,2),2);
+		pos1=find(elist==1);
+		SSAflag(pos(pos1))=1;
+		SSAFSflag(pos(pos1))=0;
+		pos2=find(elist==-1);
+		FSflag(pos(pos2))=1;
+		SSAFSflag(pos(pos2))=0;
+
+		%Recompute nodes associated to these elements
+		nodeonSSA(:)=0;
+		nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+		nodeonFS(:)=0;
+		nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+		nodeonSSAFS(:)=0;
+		nodeonSSAFS(md.mesh.elements(find(SSAFSflag),:))=1;
+
+	elseif any(FSflag) & any(SIAflag),
+		error('type of coupling not supported yet');
+	end
+end
+
+%Create element equations
+md.flowequation.element_equation=zeros(md.mesh.numberofelements,1);
+md.flowequation.element_equation(find(noneflag))=0;
+md.flowequation.element_equation(find(SIAflag))=1;
+md.flowequation.element_equation(find(SSAflag))=2;
+md.flowequation.element_equation(find(L1L2flag))=3;
+md.flowequation.element_equation(find(MOLHOflag))=4;
+md.flowequation.element_equation(find(HOflag))=5;
+md.flowequation.element_equation(find(FSflag))=6;
+md.flowequation.element_equation(find(SSAHOflag))=7;
+md.flowequation.element_equation(find(SSAFSflag))=8;
+md.flowequation.element_equation(find(HOFSflag))=9;
+
+%border
+md.flowequation.borderHO=nodeonHO;
+md.flowequation.borderSSA=nodeonSSA;
+md.flowequation.borderFS=nodeonFS;
+
+%Create vertices_type
+md.flowequation.vertex_equation=zeros(md.mesh.numberofvertices,1);
+pos=find(nodeonSSA);  md.flowequation.vertex_equation(pos)=2;
+pos=find(nodeonL1L2); md.flowequation.vertex_equation(pos)=3;
+pos=find(nodeonMOLHO); md.flowequation.vertex_equation(pos)=4;
+pos=find(nodeonHO);   md.flowequation.vertex_equation(pos)=5;
+pos=find(nodeonFS);   md.flowequation.vertex_equation(pos)=6;
+%DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority)
+pos=find(nodeonSIA);
+md.flowequation.vertex_equation(pos)=1;
+if any(FSflag),
+	pos=find(~nodeonFS);
+	if(~any(HOflag) & ~any(SSAflag)),
+		md.flowequation.vertex_equation(pos)=0;
+	end
+end
+pos=find(nodeonSSAHO);
+md.flowequation.vertex_equation(pos)=7;
+pos=find(nodeonHOFS);
+md.flowequation.vertex_equation(pos)=8;
+pos=find(nodeonSSAFS);
+md.flowequation.vertex_equation(pos)=9;
+
+%figure out solution types
+md.flowequation.isSIA  = double(any(md.flowequation.element_equation == 1));
+md.flowequation.isSSA  = double(any(md.flowequation.element_equation == 2));
+md.flowequation.isL1L2 = double(any(md.flowequation.element_equation == 3));
+md.flowequation.isMOLHO = double(any(md.flowequation.element_equation == 4));
+md.flowequation.isHO   = double(any(md.flowequation.element_equation == 5));
+md.flowequation.isFS   = double(any(md.flowequation.element_equation == 6));
+
+return
+
+%Check that tiling can work:
+if any(md.flowequation.borderSSA) & any(md.flowequation.borderHO) & any(md.flowequation.borderHO + md.flowequation.borderSSA ~=1),
+	error('error coupling domain too irregular');
+end
+if any(md.flowequation.borderSSA) & any(md.flowequation.borderFS) & any(md.flowequation.borderFS + md.flowequation.borderSSA ~=1),
+	error('error coupling domain too irregular');
+end
+if any(md.flowequation.borderFS) & any(md.flowequation.borderHO) & any(md.flowequation.borderHO + md.flowequation.borderFS~=1),
+	error('error coupling domain too irregular');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setflowequation.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setflowequation.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setflowequation.py	(revision 27955)
@@ -0,0 +1,299 @@
+import numpy as np
+from model import model
+from pairoptions import pairoptions
+from FlagElements import FlagElements
+
+
+def setflowequation(md, *args):
+    """SETFLOWEQUATION - associate a solution type to each element
+
+    This routine works like plotmodel: it works with an even number of inputs
+    'SIA', 'SSA', 'HO', 'L1L2', 'MOLHO', 'FS' and 'fill' are the possible 
+    options that must be followed by the corresponding exp file or flags list. 
+    It can either be a domain file (argus type, .exp extension), or an array of 
+    element flags.
+    If user wants every element outside the domain to be setflowequationd, add 
+    '~' to the name of the domain file (ex: '~HO.exp') an empty string '' will 
+    be considered as an empty domain a string 'all' will be considered as the 
+    entire domain.
+    You can specify the type of coupling, 'penalties' or 'tiling', to use with 
+    the input 'coupling'.
+
+    Usage:
+        md = setflowequation(md, varargin)
+
+    Example:
+        md = setflowequation(md, 'HO', 'HO.exp', fill', 'SIA', 'coupling', 'tiling')
+    """
+
+    #some checks on list of arguments
+    if not isinstance(md, model) or not len(args):
+        raise TypeError("setflowequation error message")
+
+    #process options
+    options = pairoptions(*args)
+    #    options = deleteduplicates(options, 1)
+
+    #Find_out what kind of coupling to use
+    coupling_method = options.getfieldvalue('coupling', 'tiling')
+    if coupling_method not in ['tiling', 'penalties']:
+        raise TypeError("coupling type can only be: tiling or penalties")
+
+    #recover elements distribution
+    SIAflag = FlagElements(md, options.getfieldvalue('SIA', ''))
+    SSAflag = FlagElements(md, options.getfieldvalue('SSA', ''))
+    HOflag = FlagElements(md, options.getfieldvalue('HO', ''))
+    L1L2flag = FlagElements(md, options.getfieldvalue('L1L2', ''))
+    MOLHOflag = FlagElements(md, options.getfieldvalue('MOLHO', ''))
+    FSflag = FlagElements(md, options.getfieldvalue('FS', ''))
+    filltype = options.getfieldvalue('fill', 'none')
+
+    #Flag the elements that have not been flagged as filltype
+    if 'SIA' in filltype:
+        SIAflag = ~SSAflag & ~HOflag
+    elif 'SSA' in filltype:
+        SSAflag = ~SIAflag & ~HOflag & ~FSflag
+    elif 'HO' in filltype:
+        HOflag = ~SIAflag & ~SSAflag & ~FSflag
+    #check that each element has at least one flag
+    if not any(SIAflag + SSAflag + L1L2flag + MOLHOflag + HOflag + FSflag):
+        raise TypeError("elements type not assigned, supported models are 'SIA', 'SSA', 'HO' and 'FS'")
+
+    #check that each element has only one flag
+    if any(SIAflag + SSAflag + L1L2flag + MOLHOflag + HOflag + FSflag > 1):
+        print('Warning: setflowequation.py: some elements have several types, higher order type is used for them')
+        SIAflag[np.where(np.logical_and(SIAflag, SSAflag))] = False
+        SIAflag[np.where(np.logical_and(SIAflag, HOflag))] = False
+        SSAflag[np.where(np.logical_and(SSAflag, HOflag))] = False
+
+        #check that L1L2 and MOLHO is not coupled to any other model for now
+        if any(L1L2flag) and any(SIAflag + SSAflag + HOflag + FSflag):
+            raise TypeError('L1L2 cannot be coupled to any other model')
+        if any(MOLHOflag) and any(SIAflag + SSAflag + HOflag + FSflag):
+            raise TypeError('MOLHO cannot be coupled to any other model')
+
+        #Check that no HO or FS for 2d mesh
+        if md.mesh.domaintype == '2Dhorizontal':
+            if any(FSflag + HOflag):
+                raise TypeError('FS and HO elements not allowed in 2d mesh, extrude it first')
+
+    #FS can only be used alone for now:
+    if any(FSflag) and any(SIAflag):
+        raise TypeError("FS cannot be used with any other model for now, put FS everywhere")
+
+    #Initialize node fields
+    nodeonSIA = np.zeros(md.mesh.numberofvertices, bool)
+    nodeonSIA[md.mesh.elements[np.where(SIAflag), :] - 1] = True
+    nodeonSSA = np.zeros(md.mesh.numberofvertices, bool)
+    nodeonSSA[md.mesh.elements[np.where(SSAflag), :] - 1] = True
+    nodeonL1L2 = np.zeros(md.mesh.numberofvertices, bool)
+    nodeonL1L2[md.mesh.elements[np.where(L1L2flag), :] - 1] = True
+    nodeonMOLHO = np.zeros(md.mesh.numberofvertices, bool)
+    nodeonMOLHO[md.mesh.elements[np.where(MOLHOflag), :] - 1] = True
+    nodeonHO = np.zeros(md.mesh.numberofvertices, bool)
+    nodeonHO[md.mesh.elements[np.where(HOflag), :] - 1] = True
+    nodeonFS = np.zeros(md.mesh.numberofvertices, bool)
+    noneflag = np.zeros(md.mesh.numberofelements, bool)
+
+    #First modify FSflag to get rid of elements contrained everywhere (spc + border with HO or SSA)
+    if any(FSflag):
+        fullspcnodes = np.logical_or(~np.isnan(md.stressbalance.spcvx) & ~np.isnan(md.stressbalance.spcvy) & ~np.isnan(md.stressbalance.spcvz), np.logical_and(nodeonHO, nodeonFS))  #find all the nodes on the boundary of the domain without icefront
+        fullspcelems = np.sum(fullspcnodes[md.mesh.elements - 1], axis=1) == 6  #find all the nodes on the boundary of the domain without icefront
+        FSflag[np.where(fullspcelems.reshape(-1))] = False
+        nodeonFS[md.mesh.elements[np.where(FSflag), :] - 1] = True
+
+    #Then complete with NoneApproximation or the other model used if there is no FS
+    if any(FSflag):
+        if any(HOflag):  #fill with HO
+            HOflag[~FSflag] = True
+            nodeonHO[md.mesh.elements[np.where(HOflag), :] - 1] = True
+        elif any(SSAflag):  #fill with SSA
+            SSAflag[~FSflag] = True
+            nodeonSSA[md.mesh.elements[np.where(SSAflag), :] - 1] = True
+        else:  #fill with none
+            noneflag[np.where(~FSflag)] = True
+
+    #Now take care of the coupling between SSA and HO
+    if coupling_method not in ['penalties']:
+        md.stressbalance.vertex_pairing = np.array([])
+    nodeonSSAHO = np.zeros(md.mesh.numberofvertices, bool)
+    nodeonHOFS = np.zeros(md.mesh.numberofvertices, bool)
+    nodeonSSAFS = np.zeros(md.mesh.numberofvertices, bool)
+    SSAHOflag = np.zeros(md.mesh.numberofelements, bool)
+    SSAFSflag = np.zeros(md.mesh.numberofelements, bool)
+    HOFSflag = np.zeros(md.mesh.numberofelements, bool)
+    if coupling_method == 'penalties':
+        #Create the border nodes between HO and SSA and extrude them
+        numnodes2d = md.mesh.numberofvertices2d
+        numlayers = md.mesh.numberoflayers
+        bordernodes2d = np.where(np.logical_and(nodeonHO[0:numnodes2d], nodeonSSA[0:numnodes2d]))[0] + 1  #Nodes connected to two different types of elements
+
+    #initialize and fill in penalties structure
+        if np.all(np.logical_not(np.isnan(bordernodes2d))):
+            penalties = np.zeros((0, 2))
+            for i in range(1, numlayers):
+                penalties = np.vstack((penalties, np.vstack((bordernodes2d, bordernodes2d + md.mesh.numberofvertices2d * (i))).T))
+            md.stressbalance.vertex_pairing = penalties
+
+    elif coupling_method == 'tiling':
+        if any(SSAflag) and any(HOflag):  #coupling SSA HO
+            #Find node at the border
+            nodeonSSAHO[np.where(np.logical_and(nodeonSSA, nodeonHO))] = True
+            #SSA elements in contact with this layer become SSAHO elements
+            matrixelements = nodeonSSAHO[md.mesh.elements - 1]
+            commonelements = np.sum(matrixelements, axis=1) != 0
+            commonelements[np.where(HOflag)] = False  #only one layer: the elements previously in SSA
+            SSAflag[np.where(commonelements)] = False  #these elements are now SSAHOelements
+            SSAHOflag[np.where(commonelements)] = True
+            nodeonSSA[:] = False
+            nodeonSSA[md.mesh.elements[np.where(SSAflag), :] - 1] = True
+
+            #rule out elements that don't touch the 2 boundaries
+            pos = np.where(SSAHOflag)[0]
+            elist = np.zeros(np.size(pos), dtype=int)
+            elist = elist + np.sum(nodeonSSA[md.mesh.elements[pos, :] - 1], axis=1).astype(bool)
+            elist = elist - np.sum(nodeonHO[md.mesh.elements[pos, :] - 1], axis=1).astype(bool)
+            pos1 = np.where(elist == 1)[0]
+            SSAflag[pos[pos1]] = True
+            SSAHOflag[pos[pos1]] = False
+            pos2 = np.where(elist == -1)[0]
+            HOflag[pos[pos2]] = True
+            SSAHOflag[pos[pos2]] = False
+
+            #Recompute nodes associated to these elements
+            nodeonSSA[:] = False
+            nodeonSSA[md.mesh.elements[np.where(SSAflag), :] - 1] = True
+            nodeonHO[:] = False
+            nodeonHO[md.mesh.elements[np.where(HOflag), :] - 1] = True
+            nodeonSSAHO[:] = False
+            nodeonSSAHO[md.mesh.elements[np.where(SSAHOflag), :] - 1] = True
+
+        elif any(HOflag) and any(FSflag):  #coupling HO FS
+            #Find node at the border
+            nodeonHOFS[np.where(np.logical_and(nodeonHO, nodeonFS))] = True
+            #FS elements in contact with this layer become HOFS elements
+            matrixelements = nodeonHOFS[md.mesh.elements - 1]
+            commonelements = np.sum(matrixelements, axis=1) != 0
+            commonelements[np.where(HOflag)] = False  #only one layer: the elements previously in SSA
+            FSflag[np.where(commonelements)] = False  #these elements are now SSAHOelements
+            HOFSflag[np.where(commonelements)] = True
+            nodeonFS = np.zeros(md.mesh.numberofvertices, bool)
+            nodeonFS[md.mesh.elements[np.where(FSflag), :] - 1] = True
+
+            #rule out elements that don't touch the 2 boundaries
+            pos = np.where(HOFSflag)[0]
+            elist = np.zeros(np.size(pos), dtype=int)
+            elist = elist + np.sum(nodeonFS[md.mesh.elements[pos, :] - 1], axis=1).astype(bool)
+            elist = elist - np.sum(nodeonHO[md.mesh.elements[pos, :] - 1], axis=1).astype(bool)
+            pos1 = np.where(elist == 1)[0]
+            FSflag[pos[pos1]] = True
+            HOFSflag[pos[pos1]] = False
+            pos2 = np.where(elist == -1)[0]
+            HOflag[pos[pos2]] = True
+            HOFSflag[pos[pos2]] = False
+
+            #Recompute nodes associated to these elements
+            nodeonFS[:] = False
+            nodeonFS[md.mesh.elements[np.where(FSflag), :] - 1] = True
+            nodeonHO[:] = False
+            nodeonHO[md.mesh.elements[np.where(HOflag), :] - 1] = True
+            nodeonHOFS[:] = False
+            nodeonHOFS[md.mesh.elements[np.where(HOFSflag), :] - 1] = True
+        elif any(FSflag) and any(SSAflag):
+            #Find node at the border
+            nodeonSSAFS[np.where(np.logical_and(nodeonSSA, nodeonFS))] = True
+            #FS elements in contact with this layer become SSAFS elements
+            matrixelements = nodeonSSAFS[md.mesh.elements - 1]
+            commonelements = np.sum(matrixelements, axis=1) != 0
+            commonelements[np.where(SSAflag)] = False  #only one layer: the elements previously in SSA
+            FSflag[np.where(commonelements)] = False  #these elements are now SSASSAelements
+            SSAFSflag[np.where(commonelements)] = True
+            nodeonFS = np.zeros(md.mesh.numberofvertices, bool)
+            nodeonFS[md.mesh.elements[np.where(FSflag), :] - 1] = True
+
+            #rule out elements that don't touch the 2 boundaries
+            pos = np.where(SSAFSflag)[0]
+            elist = np.zeros(np.size(pos), dtype=int)
+            elist = elist + np.sum(nodeonSSA[md.mesh.elements[pos, :] - 1], axis=1).astype(bool)
+            elist = elist - np.sum(nodeonFS[md.mesh.elements[pos, :] - 1], axis=1).astype(bool)
+            pos1 = np.where(elist == 1)[0]
+            SSAflag[pos[pos1]] = True
+            SSAFSflag[pos[pos1]] = False
+            pos2 = np.where(elist == -1)[0]
+            FSflag[pos[pos2]] = True
+            SSAFSflag[pos[pos2]] = False
+
+            #Recompute nodes associated to these elements
+            nodeonSSA[:] = False
+            nodeonSSA[md.mesh.elements[np.where(SSAflag), :] - 1] = True
+            nodeonFS[:] = False
+            nodeonFS[md.mesh.elements[np.where(FSflag), :] - 1] = True
+            nodeonSSAFS[:] = False
+            nodeonSSAFS[md.mesh.elements[np.where(SSAFSflag), :] - 1] = True
+
+        elif any(FSflag) and any(SIAflag):
+            raise TypeError("type of coupling not supported yet")
+
+    #Create SSAHOApproximation where needed
+    md.flowequation.element_equation = np.zeros(md.mesh.numberofelements, int)
+    md.flowequation.element_equation[np.where(noneflag)] = 0
+    md.flowequation.element_equation[np.where(SIAflag)] = 1
+    md.flowequation.element_equation[np.where(SSAflag)] = 2
+    md.flowequation.element_equation[np.where(L1L2flag)] = 3
+    md.flowequation.element_equation[np.where(MOLHOflag)] = 4
+    md.flowequation.element_equation[np.where(HOflag)] = 5
+    md.flowequation.element_equation[np.where(FSflag)] = 6
+    md.flowequation.element_equation[np.where(SSAHOflag)] = 7
+    md.flowequation.element_equation[np.where(SSAFSflag)] = 8
+    md.flowequation.element_equation[np.where(HOFSflag)] = 9
+
+    #border
+    md.flowequation.borderHO = nodeonHO
+    md.flowequation.borderSSA = nodeonSSA
+    md.flowequation.borderFS = nodeonFS
+
+    #Create vertices_type
+    md.flowequation.vertex_equation = np.zeros(md.mesh.numberofvertices, int)
+    pos = np.where(nodeonSSA)
+    md.flowequation.vertex_equation[pos] = 2
+    pos = np.where(nodeonL1L2)
+    md.flowequation.vertex_equation[pos] = 3
+    pos = np.where(nodeonMOLHO)
+    md.flowequation.vertex_equation[pos] = 4
+    pos = np.where(nodeonHO)
+    md.flowequation.vertex_equation[pos] = 5
+    pos = np.where(nodeonFS)
+    md.flowequation.vertex_equation[pos] = 6
+    #DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority)
+    pos = np.where(nodeonSIA)
+    md.flowequation.vertex_equation[pos] = 1
+    if any(FSflag):
+        pos = np.where(np.logical_not(nodeonFS))
+        if not (any(HOflag) or any(SSAflag)):
+            md.flowequation.vertex_equation[pos] = 0
+    pos = np.where(nodeonSSAHO)
+    md.flowequation.vertex_equation[pos] = 7
+    pos = np.where(nodeonHOFS)
+    md.flowequation.vertex_equation[pos] = 8
+    pos = np.where(nodeonSSAFS)
+    md.flowequation.vertex_equation[pos] = 9
+
+    #figure out solution types
+    md.flowequation.isSIA = any(md.flowequation.element_equation == 1)
+    md.flowequation.isSSA = any(md.flowequation.element_equation == 2)
+    md.flowequation.isL1L2= any(md.flowequation.element_equation == 3)
+    md.flowequation.isMOLHO= any(md.flowequation.element_equation == 4)
+    md.flowequation.isHO = any(md.flowequation.element_equation == 5)
+    md.flowequation.isFS = any(md.flowequation.element_equation == 6)
+
+    return md
+
+    #Check that tiling can work:
+    if any(md.flowequation.borderSSA) and any(md.flowequation.borderHO) and any(md.flowequation.borderHO + md.flowequation.borderSSA != 1):
+        raise TypeError("error coupling domain too irregular")
+    if any(md.flowequation.borderSSA) and any(md.flowequation.borderFS) and any(md.flowequation.borderFS + md.flowequation.borderSSA != 1):
+        raise TypeError("error coupling domain too irregular")
+    if any(md.flowequation.borderFS) and any(md.flowequation.borderHO) and any(md.flowequation.borderHO + md.flowequation.borderFS != 1):
+        raise TypeError("error coupling domain too irregular")
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/sethydrostaticmask.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/sethydrostaticmask.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/sethydrostaticmask.m	(revision 27955)
@@ -0,0 +1,29 @@
+function md=sethydrostaticmask(md)
+%SETHYDROSTATICMASK - establish ocean_levelset field
+%
+%   Determines grounded and floating ice position based on 
+%   md.geometry.bed and md.geometry.thickness
+%
+%   Usage:
+%      md=sethydrostaticmask(md)
+%
+%   Examples:
+%      md=sethydrostaticmask(md);
+
+if(length(md.geometry.bed)~=md.mesh.numberofvertices | length(md.geometry.thickness)~=md.mesh.numberofvertices | length(md.geometry.base)~=md.mesh.numberofvertices),
+		error('hydrostaticmask error message: fields in md.geometry do not have the right size.');
+end
+
+%grounded ice level set
+md.mask.ocean_levelset=md.geometry.thickness+md.geometry.bed*md.materials.rho_water/md.materials.rho_ice;
+
+%Check consistency of geometry
+pos=find(md.mask.ocean_levelset>0);
+if(any(md.geometry.base(pos)~=md.geometry.bed(pos))),
+	disp('WARNING: md.geometry.bed and md.geometry.base not equal on grounded ice');
+end
+
+pos=find(md.mask.ocean_levelset<=0);
+if(any(md.geometry.base(pos)<md.geometry.bed(pos))),
+	disp('WARNING: md.geometry.base < md.geometry.bed on floating ice');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/sethydrostaticmask.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/sethydrostaticmask.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/sethydrostaticmask.py	(revision 27955)
@@ -0,0 +1,31 @@
+import numpy as np
+
+
+def setmask(md):
+    """
+    SETHYDROSTATICMASK - establish ocean_levelset field
+
+   Determines grounded and floating ice position based on
+   md.geometry.bed and md.geometry.thickness
+
+   Usage:
+      md = sethydrostaticmask(md)
+
+   Examples:
+      md = sethydrostaticmask(md)
+   """
+
+    if np.size(md.geometry.bed, axis=0) != md.mesh.numberofvertices or np.size(md.geometry.base, axis=0) != md.mesh.numberofvertices or np.size(md.geometry.thickness, axis=0) != md.mesh.numberofvertices:
+        raise IOError("hydrostaticmask error message: fields in md.geometry do not have the right size.")
+
+    # grounded ice level set
+    md.mask.ocean_levelset = md.geometry.thickness + md.geometry.bed * md.materials.rho_water / md.materials.rho_ice
+
+    #Check consistency of geometry
+    if any(md.geometry.base[np.nonzero(md.mask.ocean_levelset > 0.)] != md.geometry.bed[np.nonzero(md.mask.ocean_levelset > 0.)]):
+        print("WARNING: md.geometry.bed and md.geometry.base not equal on grounded ice")
+
+    if any(md.geometry.base[np.nonzero(md.mask.ocean_levelset <= 0.)] < md.geometry.bed[np.nonzero(md.mask.ocean_levelset <= 0.)]):
+        print("WARNING: md.geometry.base < md.geometry.bed on floating ice")
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setmask.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setmask.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setmask.js	(revision 27955)
@@ -0,0 +1,78 @@
+function setmask(md,floatingice,groundedice){
+//SETMASK - establish boundaries between grounded and floating ice.
+//
+//   By default, ice is considered grounded. The contour floatingice defines nodes 
+//   for which ice is floating. The contour groundedice defines nodes inside a floatingice, 
+//   that are grounded (ie: ice rises, islands, etc ...)
+//   All inputs are either strings or actually javascript arrays (included in the html file)
+//   For example: 
+//
+//	   floatingice[0]['x']=[0,0,0,1];
+//	   floatingice[0]['y']=[0,1,1,1];
+//	   floatingice[1]['x']=[0,0.5,0.5,.5];
+//	   floatingice[1]['y']=[0,.5,.5,.5];
+//
+//
+//   Usage:
+//      md=setmask(md,floatingice,groundedice)
+//
+//   Examples:
+//      md=setmask(md,'all','');
+//      md=setmask(md,iceshelves,islands);
+
+	//variables: 
+	var  icedomain=[];
+	
+	//some checks on list of arguments
+	if (!((arguments.length==3) | (arguments.length==5))){
+		throw Error('mask error message: wrong usage.');
+	}
+
+	if(arguments.length>3){
+		if (arguments[3]=='icedomain'){
+			icedomain=arguments[4];
+		}
+		else{
+			throw Error('mask error message: wrong field specified. Only icedomain allowed for now.');
+		}
+		if (IsArray(icedomain)){
+			throw Error('setmask error message: icedomain should be an array!');
+		}
+	}
+	
+	//Get assigned fields
+	var x=md.mesh.x;
+	var y=md.mesh.y;
+	var elements=md.mesh.elements;
+
+	//Assign elementonfloatingice, elementongroundedice, vertexongroundedice and vertexonfloatingice. 
+	//Only change at your own peril! This is synchronized heavily with the GroundingLineMigration module. 
+	elementonfloatingice=FlagElements(md,floatingice);
+	elementongroundedice=FlagElements(md,groundedice);
+
+	//Because groundedice nodes and elements can be included into an floatingice, we need to update. Remember, all the previous 
+	//arrays come from domain outlines that can intersect one another: 
+	elementonfloatingice=ArrayAnd(elementonfloatingice,ArrayNot(elementongroundedice));
+	elementongroundedice=ArrayNot(elementonfloatingice);
+
+	//the order here is important. we choose vertexongroundedice as default on the grounding line.
+	vertexonfloatingice=NewArrayFill(md.mesh.numberofvertices,0);
+	vertexongroundedice=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(elementongroundedice,1); for (var i=0;i<pos.length;i++)for(var j=0;j<3;j++) vertexongroundedice[md.mesh.elements[i,j]-1]=1;
+	pos=ArrayFind(vertexongroundedice,0); for (var i=0;i<pos.length;i++)vertexonfloatingice[i]=1;
+
+	//level sets
+	ocean_levelset=vertexongroundedice;
+	pos=ArrayFind(vertexongroundedice,0);for(var i=0;i<pos.length;i++) ocean_levelset[i]=-1;
+	md.mask.ocean_levelset=ocean_levelset;
+
+	if(arguments.length>3){
+		md.mask.ice_levelset = NewArrayFill(md.mesh.numberofvertices,1.0);
+		//use contourtomesh to set ice values inside ice domain
+		//[vertexinsideicedomain,elementinsideicedomain]=ContourToMesh(elements,x,y,icedomain,'node',1);
+		pos=ArrayFind(vertexinsideicedomain,1.0);for(var i=0;i<pos.length;i++) md.mask.ice_levelset[pos]=-1;
+	}
+	else{
+		md.mask.ice_levelset = NewArrayFill(md.mesh.numberofvertices,-1);
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setmask.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setmask.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setmask.m	(revision 27955)
@@ -0,0 +1,70 @@
+function md=setmask(md,floatingicename,groundedicename,varargin)
+%SETMASK - establish boundaries between grounded and floating ice.
+%
+%   By default, ice is considered grounded. The contour floatingicename defines nodes 
+%   for which ice is floating. The contour groundedicename defines nodes inside an floatingice, 
+%   that are grounded (ie: ice rises, islands, etc ...)
+%   All input files are in the Argus format (extension .exp).
+%
+%   Usage:
+%      md=setmask(md,floatingicename,groundedicename)
+%
+%   Examples:
+%      md=setmask(md,'all','');
+%      md=setmask(md,'Iceshelves.exp','Islands.exp');
+
+%some checks on list of arguments
+if ((mod(nargin,2)==0) | (nargout~=1)),
+	help mask
+	error('mask error message');
+end
+
+if(nargin>3)
+	if(varargin(1)=='icedomain'),
+		icedomainname=varargin(2);	
+	else
+		error('mask error message: wrong field specified. Only icedomain allowed for now.');
+	end
+	if ~exist(icedomainname),
+        error(['setmask error message: file ' icedomainname ' not found!']);
+	end
+end
+
+%Get assigned fields
+x=md.mesh.x;
+y=md.mesh.y;
+elements=md.mesh.elements;
+
+%Assign elementonfloatingice, elementongroundedice, vertexongroundedice and vertexonfloatingice. Only change at your own peril! This is synchronized heavily with the GroundingLineMigration module. {{{
+elementonfloatingice=FlagElements(md,floatingicename);
+elementongroundedice=FlagElements(md,groundedicename);
+
+%Because groundedice nodes and elements can be included into an floatingice, we need to update. Remember, all the previous 
+%arrays come from domain outlines that can intersect one another: 
+elementonfloatingice=double((elementonfloatingice & ~elementongroundedice));
+elementongroundedice=double(~elementonfloatingice);
+
+%the order here is important. we choose vertexongroundedice as default on the grounding line.
+vertexonfloatingice=zeros(md.mesh.numberofvertices,1);
+vertexongroundedice=zeros(md.mesh.numberofvertices,1);
+vertexongroundedice(md.mesh.elements(find(elementongroundedice),:))=1;
+vertexonfloatingice(find(~vertexongroundedice))=1;
+%}}}
+
+%level sets
+md.mask.ocean_levelset=vertexongroundedice;
+md.mask.ocean_levelset(find(vertexongroundedice==0.))=-1.;
+
+if(nargin>3)
+	if(varargin(1)=='icedomain')
+		md.mask.ice_levelset = 1.*ones(md.mesh.numberofvertices,1);
+		%use contourtomesh to set ice values inside ice domain
+		[vertexinsideicedomain,elementinsideicedomain]=ContourToMesh(elements,x,y,icedomainname,'node',1);
+		pos=find(vertexinsideicedomain==1.);
+		md.mask.ice_levelset(pos) = -1.;
+	end
+else
+	md.mask.ice_levelset = -1.*ones(md.mesh.numberofvertices,1);
+end
+
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setmask.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setmask.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setmask.py	(revision 27955)
@@ -0,0 +1,72 @@
+import numpy as np
+import os
+from model import model
+from FlagElements import FlagElements
+import pairoptions
+from ContourToMesh import ContourToMesh
+
+
+def setmask(md, floatingicename, groundedicename, *args):
+    """
+    SETMASK - establish boundaries between grounded and floating ice.
+
+       By default, ice is considered grounded. The contour floatingicename defines nodes
+       for which ice is floating. The contour groundedicename defines nodes inside an floatingice,
+       that are grounded (ie: ice rises, islands, etc ...)
+       All input files are in the Argus format (extension .exp).
+
+       Usage:
+          md = setmask(md, floatingicename, groundedicename)
+
+       Examples:
+          md = setmask(md, 'all', '')
+          md = setmask(md, 'Iceshelves.exp', 'Islands.exp')
+    """
+    #some checks on list of arguments
+    if not isinstance(md, model):
+        raise TypeError("setmask error message")
+
+    if len(args) % 2:
+        raise TypeError("odd number of arguments provided in setmask")
+
+    #process options
+    options = pairoptions.pairoptions(*args)
+
+    #Get assigned fields
+    x = md.mesh.x
+    y = md.mesh.y
+    elements = md.mesh.elements
+
+    #Assign elementonfloatingice, elementongroundedice, vertexongroundedice and vertexonfloatingice. Only change at your own peril! This is synchronized heavily with the GroundingLineMigration module. {{{
+    elementonfloatingice = FlagElements(md, floatingicename)
+    elementongroundedice = FlagElements(md, groundedicename)
+
+    #Because groundedice nodes and elements can be included into an floatingice, we need to update. Remember, all the previous
+    #arrays come from domain outlines that can intersect one another:
+
+    elementonfloatingice = np.logical_and(elementonfloatingice, np.logical_not(elementongroundedice))
+    elementongroundedice = np.logical_not(elementonfloatingice)
+
+    #the order here is important. we choose vertexongroundedice as default on the grounding line.
+    vertexonfloatingice = np.zeros(md.mesh.numberofvertices, 'bool')
+    vertexongroundedice = np.zeros(md.mesh.numberofvertices, 'bool')
+    vertexongroundedice[md.mesh.elements[np.nonzero(elementongroundedice), :] - 1] = True
+    vertexonfloatingice[np.nonzero(np.logical_not(vertexongroundedice))] = True
+    # }}}
+
+    #level sets
+    md.mask.ocean_levelset = -1. * np.ones(md.mesh.numberofvertices)
+    md.mask.ocean_levelset[md.mesh.elements[np.nonzero(elementongroundedice), :] - 1] = 1.
+
+    if(len(args)):
+        md.mask.ice_levelset = 1. * np.ones(md.mesh.numberofvertices)
+        icedomainfile = options.getfieldvalue('icedomain', 'none')
+        if not os.path.exists(icedomainfile):
+            raise IOError("setmask error message: ice domain file '%s' not found." % icedomainfile)
+    #use contourtomesh to set ice values inside ice domain
+        vertexinsideicedomain, elementinsideicedomain = ContourToMesh(elements, x, y, icedomainfile, 'node', 1)
+        md.mask.ice_levelset[np.nonzero(vertexinsideicedomain)[0]] = -1.
+    else:
+        md.mask.ice_levelset = -1. * np.ones(md.mesh.numberofvertices)
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setmask2.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setmask2.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/parameterization/setmask2.m	(revision 27955)
@@ -0,0 +1,141 @@
+function md=setmask2(md,landname,floatingicename,groundedicename)
+%GEOGRAPHY2 - establish land, ice sheet and ice shelf areas in a domains.
+%
+%   Usage:
+%      md=setmask2(md,landname,floatingicename,groundedicename)
+%
+%   Examples:
+%      md=setmask2(md,'LandName.exp','Iceshelves.exp','Islands.exp');
+
+%Get assigned fields
+x=md.mesh.x;
+y=md.mesh.y;
+elements=md.mesh.elements;
+
+%recover elements and nodes on land.
+if ischar(landname),
+	[vertexonland,elementonland]=ContourToMesh(elements,x,y,landname,'element and node',2);
+elseif isfloat(landname),
+	if size(landname,1)~=md.mesh.numberofelements,
+		error('Landname for area must be of same size as number of elements in model');
+	end
+	elementonland=landname;
+	vertexonland=zeros(md.mesh.numberofvertices,1);
+	vertexonland(md.mesh.elements(find(elementonland),:))=1;
+else
+	error('Invalid area option option');
+end
+
+%Now, build the connectivity tables for this mesh.
+if size(md.mesh.vertexconnectivity,1)~=md.mesh.numberofvertices,
+	md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+end
+if size(md.mesh.elementconnectivity,1)~=md.mesh.numberofelements,
+	md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+end
+
+%any element with 3 nodes on land should be on land:
+elementsonwater=find(~elementonland);
+wrongelements=elementsonwater(find(( vertexonland(md.mesh.elements(elementsonwater,1)) + vertexonland(md.mesh.elements(elementsonwater,2)) + vertexonland(md.mesh.elements(elementsonwater,3)) ...
+                  )==3));
+elementonland(wrongelements)=1;
+
+%any element with its barycentre on land should be on land: (only if landname is an expfile)
+if ischar(landname),
+weights={[1;1;1],[2;1;1],[1;2;1],[1;1;2]};
+	for i=1:length(weights),
+		xelem=x(md.mesh.elements)*weights{i}/sum(weights{i});
+		yelem=y(md.mesh.elements)*weights{i}/sum(weights{i});
+	end
+	baryonland=ContourToNodes(xelem,yelem,landname,1);
+	pos=find(~baryonland); elementonland(pos)=0;
+	pos=find(baryonland); elementonland(pos)=1;
+end
+
+%figure out which elements on land are actually in the middle of the ocean!
+pos1=find(elementonland); 
+connectedtoland=md.mesh.elementconnectivity(pos1,:);
+pos=find(connectedtoland); connectedtoland(pos)=1-elementonland(connectedtoland(pos));
+connectedtolandsum=sum(connectedtoland,2);
+waterelements=pos1(find(connectedtolandsum==3));
+elementonland(waterelements)=0;
+
+%figure out which elements on water  are actually in the middle of the land!
+pos1=find(~elementonland); 
+connectedtowater=md.mesh.elementconnectivity(pos1,:);
+pos=find(connectedtowater); connectedtowater(pos)=elementonland(connectedtowater(pos));
+connectedtowatersum=sum(connectedtowater,2);
+landelements=pos1(find(connectedtowatersum==3));
+elementonland(landelements)=1;
+
+%recover arrays of ice shelf nodes and elements, and ice sheet nodes and elements.
+elementonfloatingice=FlagElements(md,floatingicename);
+elementongroundedice=FlagElements(md,groundedicename);
+
+%Because groundedice nodes and elements can be included into an floatingice, we need to update. Remember, all the previous 
+%arrays come from domain outlines that can intersect one another: 
+vertexonfloatingice=zeros(md.mesh.numberofvertices,1);
+vertexongroundedice=zeros(md.mesh.numberofvertices,1);
+elementonfloatingice=double((elementonfloatingice & ~elementongroundedice));
+elementongroundedice=double(~elementonfloatingice);
+vertexonfloatingice(md.mesh.elements(find(elementonfloatingice),:))=1;
+vertexongroundedice(md.mesh.elements(find(elementongroundedice),:))=1;
+
+%now correct, so that none of the floatingice and groundedice elements and nodes are in the water.
+pos=find(~elementonland);
+elementonfloatingice(pos)=0; 
+elementongroundedice(pos)=0;
+
+pos=find(~vertexonland);
+vertexonfloatingice(pos)=0; 
+vertexongroundedice(pos)=0;
+
+%create vertexonwater and elementonwater: 
+vertexonwater=double(~vertexonland);
+elementonwater=double(~elementonland);
+
+%correct for islands:
+vertexonfloatingice=double(vertexonfloatingice & ~vertexongroundedice);
+elementonfloatingice=double(elementonfloatingice & ~elementongroundedice);
+
+%now, groundedices are everything except iceshelves and water
+vertexongroundedice=double(~vertexonfloatingice & ~vertexonwater);
+elementongroundedice=double(~elementonfloatingice & ~elementonwater);
+
+%Deal with segments on neumann:
+
+%Get current connectivity
+mesh.elementconnectivity=md.mesh.elementconnectivity;
+
+%put 0 for elements on water
+pos=find(mesh.elementconnectivity);
+mesh.elementconnectivity(pos)=mesh.elementconnectivity(pos).*(~elementonwater(mesh.elementconnectivity(pos)));
+
+%put line of ones for elements on water
+pos=find(elementonwater);
+mesh.elementconnectivity(pos,:)=1;% line of ones for elements on water so they won't be considered
+
+%resort lines (zeros must be at the last column for findsegments)
+mesh.elementconnectivity=sort(mesh.elementconnectivity,2,'descend');
+
+%call findsegments to build segment using THIS conectivity
+md.mesh.segments=findsegments(md,'mesh.elementconnectivity',mesh.elementconnectivity);
+
+%some final checks: 
+%check that no node thinks it's on an ice shelf or ice sheet, and lies actually in the middle of the water.
+nodesgrounded=find(~vertexonwater);
+lengthconnectivity=size(md.mesh.vertexconnectivity,2);
+groundedcounters=md.mesh.vertexconnectivity(nodesgrounded,lengthconnectivity);
+groundedconnectivity=md.mesh.vertexconnectivity(nodesgrounded,1:lengthconnectivity-1);
+pos=find(groundedconnectivity);
+groundedconnectivity(pos)=elementonwater(groundedconnectivity(pos));
+groundedsum=sum(groundedconnectivity,2);
+errorflags=find(groundedsum==groundedcounters);
+errornodes=nodesgrounded(errorflags);
+
+vertexonwater(errornodes)=1;
+vertexongroundedice(errornodes)=0;
+vertexonfloatingice(errornodes)=0;
+
+%Return: 
+md.mesh.segmentmarkers(:)=1;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/paraview/exportVTK.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/paraview/exportVTK.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/paraview/exportVTK.m	(revision 27955)
@@ -0,0 +1,197 @@
+function exportVTK(filename,model,varargin)
+%EXPORTVTK -  vtk export
+%
+%   function exportVTK(filename,model)
+%   creates a directory with the vtk files for displays in paraview
+%   (only work for triangle and wedges based on their number of nodes)
+%   By default only the results are exported, you can add whichever
+%   field you need as a string:
+%   add 'geometry' to export md.geometry
+%
+%   USAGE:
+%      exportVTK(filename,model,varargin)
+%
+%   EXAMPLE:
+%      exportVTK('ResultSimulation1',md)
+
+[path,name,ext]=fileparts(filename);
+separator=filesep;
+mkdir(filename);
+
+%get the element related variables
+if dimension(model.mesh)==2,
+	points=[model.mesh.x model.mesh.y zeros(model.mesh.numberofvertices,1)];
+else
+	points=[model.mesh.x model.mesh.y model.mesh.z];
+end
+
+[num_of_points,dim]=size(points);
+[num_of_elt]=size(model.mesh.elements,1);
+[point_per_elt]=size(model.mesh.elements,2);
+
+%Select the type of element function of the number of nodes per elements
+if point_per_elt==3;
+	celltype=5; %triangles
+elseif point_per_elt==6;
+	celltype=13; %wedges
+else
+	error('Your Element definition is not taken into account \n');
+end
+
+%this is the result structure
+res_struct=model.results;
+%checking for results
+if (length(fields(res_struct))>0);
+	%Getting all the solutions of the model
+	solnames=fields(res_struct);
+	num_of_sols=length(solnames);
+	num_of_timesteps=1;
+	%building solution structure 
+	for i=1:num_of_sols
+		sol_struct{i}=res_struct.(solnames{i});
+		%looking for multiple time steps
+		if(size(sol_struct{i},2)>num_of_timesteps);
+			num_of_timesteps=size(sol_struct{i},2);
+			if isa(model.timestepping,'timesteppingadaptive')
+				disp('Warning: timesteppingadaptive not totally supported!');				
+			elseif isa(model.timestepping,'timestepping')
+				outstep=model.timestepping.time_step*model.settings.output_frequency;
+			else
+				error('timestepping class not supported!');
+			end
+		end
+	end
+else
+	num_of_timesteps=1;
+end
+for step=1:num_of_timesteps;
+	
+	timestep=step;
+
+	fid = fopen(strcat(path,filesep,name,filesep,'timestep.vtk',int2str(timestep),'.vtk'),'w+');
+	fprintf(fid,'# vtk DataFile Version 2.0 \n');
+	fprintf(fid,'Data for run %s \n',model.miscellaneous.name);
+	fprintf(fid,'ASCII \n');
+	fprintf(fid,'DATASET UNSTRUCTURED_GRID \n');
+	
+	fprintf(fid,'POINTS %d float\n',num_of_points);
+	if(dim==3);
+		s='%f %f %f \n';
+	elseif(dim==2);
+		s='%f %f \n';
+  end
+	P=[points zeros(num_of_points,3-dim)];
+	fprintf(fid,s,P');
+	
+	fprintf(fid,'CELLS %d %d\n',num_of_elt,num_of_elt*(point_per_elt+1));
+	s='%d';
+	for j=1:point_per_elt
+		s=horzcat(s,{' %d'});
+  end
+	s=cell2mat(horzcat(s,{'\n'}));
+		fprintf(fid,s,[(point_per_elt)*ones(num_of_elt,1)	model.mesh.elements-1]');
+	
+	fprintf(fid,'CELL_TYPES %d\n',num_of_elt);
+	s='%d\n';
+	fprintf(fid,s,celltype*ones(num_of_elt,1));
+	fprintf(fid,'POINT_DATA %s \n',num2str(num_of_points));
+
+	%loop over the different solution structures
+	if (exist('num_of_sols'));
+		for j=1:num_of_sols
+			%dealing with results on different timesteps
+			if(size(sol_struct{j},2)>timestep);
+				timestep = step;
+			else
+				timestep = size(sol_struct{j},2);
+	    end
+			
+			%getting the number of fields in the solution
+			fieldnames=fields(sol_struct{j}(timestep));
+			num_of_fields=length(fieldnames);
+			
+			%check which field is a real result and print
+			for k=1:num_of_fields
+				if ((numel(sol_struct{j}(timestep).(fieldnames{k})))==num_of_points);
+					%paraview does not like NaN, replacing
+					nanval=find(isnan(sol_struct{j}(timestep).(fieldnames{k})));
+					sol_struct{j}(timestep).(fieldnames{k})(nanval)=-9999;
+					%also checking for verry small value that mess up
+					smallval=(abs(sol_struct{j}(timestep).(fieldnames{k}))<1.0e-20);
+					sol_struct{j}(timestep).(fieldnames{k})(smallval)=0.0;
+					fprintf(fid,'SCALARS %s float 1 \n',fieldnames{k});
+					fprintf(fid,'LOOKUP_TABLE default\n');
+					s='%e\n';
+					fprintf(fid,s,sol_struct{j}(timestep).(fieldnames{k}));
+		    end		
+	    end 
+	  end
+  end
+	%loop on arguments, if something other than result is asked, do
+	%it now
+	for j= 1:nargin-2
+		res_struct=model.(varargin{j});
+		fieldnames=fields(res_struct);
+		num_of_fields=length(fieldnames);
+		for k=1:num_of_fields
+			if ((numel(res_struct.(fieldnames{k})))==num_of_points);
+				%paraview does not like NaN, replacing
+				nanval=find(isnan(res_struct.(fieldnames{k})));
+				res_struct.(fieldnames{k})(nanval)=-9999;
+				%also checking for verry small value that mess up
+				smallval=(abs(res_struct.(fieldnames{k}))<1.0e-20);
+				res_struct.(fieldnames{k})(smallval)=0.0;
+				fprintf(fid,'SCALARS %s float 1 \n',fieldnames{k});
+				fprintf(fid,'LOOKUP_TABLE default\n');
+				s='%e\n';
+				fprintf(fid,s,res_struct.(fieldnames{k}));
+				%check for forcings	
+			elseif (size(res_struct.(fieldnames{k}),1)==num_of_points+1);
+				%paraview does not like NaN, replacing
+				nanval=find(isnan(res_struct.(fieldnames{k})));
+				res_struct.(fieldnames{k})(nanval)=-9999;
+				%also checking for verry small value that mess up
+				smallval=(abs(res_struct.(fieldnames{k}))<1.0e-20);
+				res_struct.(fieldnames{k})(smallval)=0.0;
+				if (size(res_struct.(fieldnames{k}),2)==num_of_timesteps),
+					fprintf(fid,'SCALARS %s float 1 \n',fieldnames{k});
+					fprintf(fid,'LOOKUP_TABLE default\n');
+					s='%e\n';
+					fprintf(fid,s,res_struct.(fieldnames{k})(1:end-1,timestep));
+				else,
+					%forcing and results not on the same timestep,need some treatment
+					fprintf(fid,'SCALARS %s float 1 \n',fieldnames{k});
+					fprintf(fid,'LOOKUP_TABLE default\n');
+					index=1;
+					currenttime=((timestep-1)*outstep)+model.timestepping.start_time;
+					while (res_struct.(fieldnames{k})(end,index)<=currenttime);
+						if index==size(res_struct.(fieldnames{k}),2)
+							break
+						end	
+						index=index+1;
+		      end
+					uptime=res_struct.(fieldnames{k})(end,index);
+					uplim=res_struct.(fieldnames{k})(1:end-1,index);
+					while (res_struct.(fieldnames{k})(end,index)>=currenttime);
+						if index==1
+							break
+			      end
+						index=index-1;
+		      end
+					lowtime=res_struct.(fieldnames{k})(end,index);
+					lowlim=res_struct.(fieldnames{k})(1:end-1,index);
+					if uptime==currenttime,
+						interp=uplim;
+					elseif lowtime==currenttime,
+						interp=lowlim;
+					else
+						interp=lowlim+(uplim-lowlim)*((currenttime-lowtime)/(uptime-lowtime));
+					end
+					s='%e\n';
+					fprintf(fid,s,interp);
+				end
+		  end		
+		end 
+	end
+	fclose(fid);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/paraview/exportVTK.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/paraview/exportVTK.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/paraview/exportVTK.py	(revision 27955)
@@ -0,0 +1,537 @@
+import numpy as np
+from os import path, remove, mkdir
+from glob import glob
+
+
+def exportVTK(filename, md, *args, enveloppe=False, **kwargs):
+    '''
+    vtk export
+    function exportVTK(filename, md)
+    creates a directory with the vtk files for displays in paraview
+    (only work for triangle and wedges based on their number of nodes)
+
+    Usage:
+    exportVTK('DirName', md)
+    exportVTK('DirName', md, 'geometry', 'mesh')
+    exportVTK('DirName', md, 'geometry', 'mesh', enveloppe = True)
+
+    DirName is the name of the output directory, each timestep then has it
+    own file ('Timestep.vtkX.vtk') with X the number of the output step
+    enveloppe is an option keeping only the enveloppe of the md (it is False by default)
+
+    Options:
+        - clipping : allows to reduce your domain (cliping=[Xmin, Xmax, Ymin, Ymax])
+        - coarsetime : output one timestep every X (coarsetime=X, with X an integer)
+        - singletime : output only timestep X (singletime=X, with X an integer or -1 for last)
+
+    TODO: - make time easily accessible
+
+    Basile de Fleurian:
+    '''
+    #verbosity of the code, 0 is no messages, 5 is chatty
+    verbose = 0
+
+    print("""
+    =========================================
+    #     A                                 #
+    #    / \      exportVTK is now obsolete #
+    #   / | \     You should use export VTU #
+    #  /  |  \    faster, smaller files     #
+    # /   o   \   and more capacities       #
+    # ---------                             #
+    #========================================
+    """)
+
+
+    for key in kwargs.keys():
+        if key not in ['clipping', 'coarsetime', 'singletime']:
+            raise BadOption('Provided option "{}" is not supported possibilities are : {}'.format(key, ['cliping', 'coarsetime', 'singletime']))
+
+    if 'coarsetime' in kwargs.keys() and 'singletime' in kwargs.keys():
+        raise BadOption("You can't specify both 'coarsetime' and 'singletime'")
+
+    # File checking and creation {{{
+    Dir = path.basename(filename)
+    Path = filename[:-len(Dir)]
+    if path.exists(filename):
+        print(('File {} allready exist'.format(filename)))
+        newname = input('Give a new name or "delete" to replace: ')
+        if newname == 'delete':
+            filelist = glob(filename + '/* ')
+            for oldfile in filelist:
+                remove(oldfile)
+        else:
+            print(('New file name is {}'.format(newname)))
+            filename = newname
+            mkdir(filename)
+    else:
+        mkdir(filename)
+    # }}}
+
+    # this is the result structure {{{
+    if verbose > 3:
+        print('Getting accessorie variables')
+    res_struct = md.results
+    moving_mesh = False
+    if(type(res_struct) != list):
+        #Getting all the solutions of the md
+        solnames = dict.keys(res_struct.__dict__)
+        num_of_sols = len(solnames)
+        num_of_timesteps = 1
+        #%building solutionstructure
+        for solution in solnames:
+            #looking for multiple time steps
+            try:
+                if len(res_struct.__dict__[solution]) > num_of_timesteps:
+                    num_of_timesteps = len(res_struct.__dict__[solution])
+                    num_of_timesteps = int(num_of_timesteps)
+                    if 'Surface' in dict.keys(res_struct.__dict__[solution][0].__dict__):
+                        moving_mesh = True
+            except TypeError:
+                continue
+    else:
+        num_of_timesteps = 1
+    # }}}
+
+    # get the element related variables {{{
+    if verbose > 3:
+        print('Now treating  the mesh')
+    #first get the general things
+    dim = int(md.mesh.domaintype()[0])
+    every_nodes = md.mesh.numberofvertices
+    every_cells = md.mesh.numberofelements
+    try:
+        every_edges = md.mesh.numberofedges
+    except AttributeError:
+        #3D meshes do not have edges
+        every_edges = 0
+
+    if np.shape(md.mesh.elements)[1] == 3 or enveloppe:
+        point_per_elt = 3
+        celltype = 5  #triangles
+    elif np.shape(md.mesh.elements)[1] == 6:
+        point_per_elt = 6
+        celltype = 13  #wedges
+    else:
+        raise BadDimension('exportVTK does not support your element type')
+
+    #only keep the envelope and not the bulk of the results.
+    if enveloppe:
+        if dim == 3:
+            mesh_alti = '1'
+            is_enveloppe = np.logical_or(md.mesh.vertexonbase, md.mesh.vertexonsurface)
+            enveloppe_index = np.where(is_enveloppe)[0]
+            convert_index = np.nan * np.ones(np.shape(md.mesh.x))
+            convert_index = np.asarray([[i, np.where(enveloppe_index == i)[0][0]] for i, val in enumerate(convert_index) if any(enveloppe_index == i)])
+
+            num_of_points = np.size(enveloppe_index)
+            points = np.column_stack((md.mesh.x[enveloppe_index],
+                                      md.mesh.y[enveloppe_index],
+                                      md.mesh.z[enveloppe_index]))
+
+            num_of_elt = np.size(np.where(np.isnan(md.mesh.lowerelements))) + np.size(np.where(np.isnan(md.mesh.upperelements)))
+            connect = md.mesh.elements[np.where(is_enveloppe[md.mesh.elements - 1])].reshape(int(num_of_elt), 3) - 1
+            for elt in range(0, num_of_elt):
+                connect[elt, 0] = convert_index[np.where(convert_index == connect[elt, 0])[0], 1][0]
+                connect[elt, 1] = convert_index[np.where(convert_index == connect[elt, 1])[0], 1][0]
+                connect[elt, 2] = convert_index[np.where(convert_index == connect[elt, 2])[0], 1][0]
+
+            num_of_edges = every_edges  #looks like edges is only defined on the 2d mesh
+            if num_of_edges > 0:
+                edges = md.mesh.edges[:, 0:2].reshape(int(num_of_edges), 2) - 1
+
+        else:
+            raise BadDimension("exportVTK can't get an enveloppe for  dimension {}".format(dim))
+
+    else:
+        #we get all the mesh, mainly defining dummies
+        num_of_elt = every_cells
+        connect = md.mesh.elements - 1
+        num_of_edges = every_edges
+        if num_of_edges > 0:
+            edges = md.mesh.edges[:, 0:2].reshape(int(num_of_edges), 2) - 1
+        enveloppe_index = np.arange(0, np.size(md.mesh.x))
+        num_of_points = every_nodes
+        if dim == 2:
+            mesh_alti = input('''This is a 2D model, what should be the 3rd dimension of the mesh :
+                                        1 : md.geometry.surface
+                                        2 : md.geometry.base
+                                        3 : md.geometry.bed
+                                        4 : 0
+                                        5 : Custom\n''')
+            if mesh_alti == '1':
+                points = np.column_stack((md.mesh.x, md.mesh.y, md.geometry.surface))
+            elif mesh_alti == '2':
+                points = np.column_stack((md.mesh.x, md.mesh.y, md.geometry.base))
+            elif mesh_alti == '3':
+                points = np.column_stack((md.mesh.x, md.mesh.y, md.geometry.bed))
+            elif mesh_alti == '4':
+                points = np.column_stack((md.mesh.x, md.mesh.y, 0. * md.mesh.x))
+            elif mesh_alti == '5':
+                alti_field = input("Which field should be used as 3rd dimension: ")
+                alti_var = eval(alti_field)
+                if np.shape(np.squeeze(alti_var)) == np.shape(md.mesh.x):
+                    points = np.column_stack((md.mesh.x, md.mesh.y, np.squeeze(alti_var)))
+                else:
+                    raise BadDimension('field given for 3rd dimension should be defined on vertices {} is not.'.format(alti_field))
+            else:
+                points = np.column_stack((md.mesh.x, md.mesh.y, md.geometry.surface))
+        elif dim == 3:
+            mesh_alti = '1'
+            points = np.column_stack((md.mesh.x, md.mesh.y, md.mesh.z))
+        else:
+            raise BadDimension('exportVTK does not support dimension {}'.format(dim))
+
+    if 'clipping' in kwargs.keys():
+        if kwargs['clipping'] is not None:
+            # first get the boundaries and check them
+            [Xmin, Xmax, Ymin, Ymax] = kwargs['clipping']
+            if Xmin > Xmax:
+                raise ClipError('Xmax ({}) should be larger than Xmin ({})'.format(Xmax, Xmin))
+            if Ymin > Ymax:
+                raise ClipError('Ymax ({}) should be larger than Ymin ({})'.format(Ymax, Ymin))
+            if Xmin > np.nanmax(points[:, 0]) or Xmax < np.nanmin(points[:, 0]):
+                raise ClipError('Your X boundaries [{}, {}] are outside of the model domain [{},{}]'.format(Xmin, Xmax, np.nanmin(points[:, 0]), np.nanmax(points[:, 0])))
+            if Ymin > np.nanmax(points[:, 1]) or Ymax < np.nanmin(points[:, 1]):
+                raise ClipError('Your Y boundaries [{}, {}] are outside of the model domain [{},{}]'.format(Ymin, Ymax, np.nanmin(points[:, 1]), np.nanmax(points[:, 1])))
+
+            #boundaries should be fine lets do stuff
+            InX = np.where(np.logical_and(points[:, 0] >= Xmin, points[:, 0] <= Xmax))
+            InY = np.where(np.logical_and(points[:, 1] >= Ymin, points[:, 1] <= Ymax))
+
+            Isinside = np.zeros(np.shape(points)[0], dtype=bool)
+            clip_convert_index = np.nan * np.ones(np.shape(points)[0])
+
+            #define the vertices that are within clipping window
+            Inclipping = np.intersect1d(InX, InY)
+            Isinside[Inclipping] = True
+            points = points[Inclipping, :]
+            num_of_points = np.shape(points)[0]
+
+            #go thorough the elements and keep those for which one node is in the clipped arrea
+            clipconnect = np.asarray([], dtype=int)
+            for elt in connect:
+                if set(elt).issubset(Inclipping):
+                    clipconnect = np.append(clipconnect, elt, axis=0)
+
+            #reshape
+            num_of_elt = int(np.size(clipconnect) / 3)
+            connect = clipconnect.reshape(num_of_elt, 3)
+
+            clip_convert_index = np.asarray([[i, np.where(Inclipping == i)[0][0]] for i, val in enumerate(clip_convert_index) if any(Inclipping == i)])
+            enveloppe_index = enveloppe_index[clip_convert_index[:, 0]]
+
+            #convert indexing and exclude elements that are partly outside of the region
+            for elt in range(0, num_of_elt):
+                try:
+                    connect[elt, 0] = clip_convert_index[np.where(clip_convert_index == connect[elt, 0])[0], 1][0]
+                except IndexError:
+                    connect[elt, 0] = -1
+                try:
+                    connect[elt, 1] = clip_convert_index[np.where(clip_convert_index == connect[elt, 1])[0], 1][0]
+                except IndexError:
+                    connect[elt, 1] = -1
+                try:
+                    connect[elt, 2] = clip_convert_index[np.where(clip_convert_index == connect[elt, 2])[0], 1][0]
+                except IndexError:
+                    connect[elt, 2] = -1
+
+            connect = connect[np.where(connect != -1)[0], :]
+            num_of_elt = np.shape(connect)[0]
+
+            if num_of_edges > 0:
+                clipedges = np.asarray([], dtype=int)
+                for edge in edges:
+                    if set(edge).issubset(Inclipping):
+                        clipedges = np.append(clipedges, edge, axis=0)
+
+                num_of_edges = int(np.size(clipedges) / 2)
+                edges = clipedges.reshape(num_of_edges, 2)
+
+                for edge in range(0, num_of_edges):
+                    try:
+                        edges[edge, 0] = clip_convert_index[np.where(clip_convert_index == edges[edge, 0])[0], 1][0]
+                    except IndexError:
+                        edges[edge, 0] = -1
+                    try:
+                        edges[edge, 1] = clip_convert_index[np.where(clip_convert_index == edges[edge, 1])[0], 1][0]
+                    except IndexError:
+                        edges[edge, 1] = -1
+                edges = edges[np.where(edges != -1)[0], :]
+                num_of_edges = np.shape(edges)[0]
+
+    # }}}
+
+    # write header and mesh {{{
+    if verbose > 3:
+        print('Now starting to write stuff')
+
+    if 'coarsetime' in kwargs.keys():
+        steplist = range(0, num_of_timesteps, kwargs['coarsetime'])
+    elif 'singletime' in kwargs.keys():
+        steplist = [kwargs['singletime']]
+    else:
+        steplist = range(0, num_of_timesteps)
+
+    for step in steplist:
+        if verbose > 2:
+            print('Writing for step {}'.format(step))
+        saved_cells = {}
+        saved_edges = {}
+        timestep = step
+        with open((filename + '/Timestep.vtk' + str(timestep) + '.vtk'), 'w+') as fid:
+            fid.write('# vtk DataFile Version 3.0 \n')
+            fid.write('Data for run {} \n'.format(md.miscellaneous.name))
+            fid.write('ASCII \n')
+            fid.write('DATASET UNSTRUCTURED_GRID \n')
+            fid.write('POINTS {:d} float\n'.format(num_of_points))
+            #updating z for mesh evolution
+            if moving_mesh and mesh_alti in ['1', '2']:
+                base = np.squeeze(res_struct.__dict__['TransientSolution'][step].__dict__['Base'][enveloppe_index])
+                thick_change_ratio = (np.squeeze(res_struct.__dict__['TransientSolution'][step].__dict__['Thickness'][enveloppe_index]) / md.geometry.thickness[enveloppe_index])
+                above_bed = points[:, 2] - md.geometry.base[enveloppe_index]
+                altitude = base + thick_change_ratio * above_bed
+            else:
+                altitude = points[:, 2]
+            for index, point in enumerate(points):
+                fid.write('{:f} {:f} {:f} \n'.format(point[0], point[1], altitude[index]))
+
+            fid.write('CELLS {:d} {:d}\n'.format((num_of_elt + num_of_edges), num_of_elt  * (point_per_elt + 1) + num_of_edges * 3))
+
+            for elt in range(0, num_of_elt):
+                if celltype == 5:
+                    fid.write('3 {:d} {:d} {:d}\n'.format(connect[elt, 0],
+                                                          connect[elt, 1],
+                                                          connect[elt, 2]))
+                elif celltype == 13:
+                    fid.write('6 {:d} {:d} {:d} {:d} {:d} {:d}\n'.format(connect[elt, 0],
+                                                                         connect[elt, 1],
+                                                                         connect[elt, 2],
+                                                                         connect[elt, 3],
+                                                                         connect[elt, 4],
+                                                                         connect[elt, 5]))
+            for edge in range(0, num_of_edges):
+                fid.write('2 {:d} {:d}\n'.format(edges[edge, 0],
+                                                 edges[edge, 1]))
+
+            fid.write('CELL_TYPES {:d}\n'.format(num_of_elt + num_of_edges))
+            for elt in range(0, num_of_elt):
+                fid.write('{:d}\n'.format(celltype))
+                for edge in range(0, num_of_edges):
+                    fid.write('3\n')  #3 is for lines
+
+            fid.write('POINT_DATA {:s} \n'.format(str(num_of_points)))
+            # }}}
+            # {{{loop over the different solution structures
+            # first check if there are solutions to grab
+            if 'solnames' in locals():
+                for sol in solnames:
+                    treated_res = []
+                    #dealing with results on different timesteps
+                    try:
+                        if(len(res_struct.__dict__[sol]) > timestep):
+                            timestep = step
+                        else:
+                            timestep = np.size(res_struct.__dict__[sol])
+                    except TypeError:
+                        #result as no len() so no timesteps
+                        timestep = 1
+
+                    #getting the  fields in the solution
+                    if(type(res_struct.__dict__[sol]).__name__ == 'solution'):
+                        spe_res_struct = res_struct.__dict__[sol].__getitem__(timestep)
+                        fieldnames = list(dict.keys(spe_res_struct.__dict__))
+                    elif(type(res_struct.__dict__[sol]).__name__ == 'solutionstep'):
+                        spe_res_struct = res_struct.__dict__[sol]
+                        fieldnames = list(dict.keys(spe_res_struct.__dict__))
+                    elif(type(res_struct.__dict__[sol]).__name__ == 'results'):  #this is a result without steps
+                        spe_res_struct = res_struct.__dict__[sol]
+                        fieldnames = list(dict.keys(spe_res_struct.__dict__))
+                    else:
+                        print("WARNING, solution type '{}' is not recognise, exported results might be wrong".format(type(res_struct.__dict__[sol])))
+                        spe_res_struct = res_struct.__dict__[sol]
+                        fieldnames = list(dict.keys(spe_res_struct.__dict__))
+
+                    #Sorting scalars, vectors and tensors
+                    tensors = [field for field in fieldnames if field[-2:] in ['xx', 'yy', 'xy', 'zz', 'xz', 'yz']]
+                    non_tensor = [field for field in fieldnames if field not in tensors]
+                    vectors = [field for field in non_tensor if field[-1] in ['x', 'y', 'z'] and field[-4:] not in ['Flux']]
+                    #check which field is a real result and print
+                    for field in fieldnames:
+                        if verbose > 2:
+                            print("Treating {}".format(field))
+                        if field in treated_res:
+                            if verbose > 2:
+                                print("{} is already done".format(field))
+                            continue
+                        elif field in vectors:
+                            if verbose > 2:
+                                print("{} is a vector".format(field))
+                            try:
+                                Vxstruct = np.squeeze(spe_res_struct.__dict__[field[:-1] + 'x'])
+                                Vystruct = np.squeeze(spe_res_struct.__dict__[field[:-1] + 'y'])
+                                treated_res += [field[:-1] + 'x', field[:-1] + 'y']
+                                if dim == 3 and field[:-1] + 'z' in fieldnames:
+                                    #some fields like adjoint or always 2D
+                                    Vzstruct = np.squeeze(spe_res_struct.__dict__[field[:-1] + 'z'])
+                                    treated_res += [field[:-1] + 'z']
+
+                            except KeyError:
+                                fieldnames += field
+                                vectors.remove(field)
+
+                            fid.write('VECTORS {} float \n'.format(field[:-1]))
+                            for node in range(0, num_of_points):
+                                Vx = cleanOutliers(Vxstruct[enveloppe_index[node]])
+                                Vy = cleanOutliers(Vystruct[enveloppe_index[node]])
+                                if dim == 3 and field[:-1] + 'z' in fieldnames:
+                                    Vz = cleanOutliers(Vzstruct[enveloppe_index[node]])
+                                    fid.write('{:f} {:f} {:f}\n'.format(Vx, Vy, Vz))
+                                else:
+                                    fid.write('{:f} {:f} {:f}\n'.format(Vx, Vy, 0))
+
+                        elif field in tensors:
+                            if verbose > 2:
+                                print("{} is a tensor".format(field))
+                            try:
+                                Txxstruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'xx'])
+                                Txystruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'xy'])
+                                Tyystruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'yy'])
+                                treated_res += [field[:-2] + 'xx', field[:-2] + 'xy', field[:-2] + 'yy']
+                                if dim == 3:
+                                    Tzzstruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'zz'])
+                                    Txzstruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'xz'])
+                                    Tyzstruct = np.squeeze(spe_res_struct.__dict__[field[:-2] + 'yz'])
+                                    treated_res += [field[:-2] + 'zz', field[:-2] + 'xz', field[:-2] + 'yz']
+
+                            except KeyError:
+                                fieldnames += field
+                                tensors.remove(field)
+
+                            fid.write('TENSORS {} float \n'.format(field[:-2]))
+                            for node in range(0, num_of_points):
+                                Txx = cleanOutliers(Txxstruct[enveloppe_index[node]])
+                                Tyy = cleanOutliers(Tyystruct[enveloppe_index[node]])
+                                Txy = cleanOutliers(Txystruct[enveloppe_index[node]])
+                                if dim == 3:
+                                    Tzz = cleanOutliers(Tzzstruct[enveloppe_index[node]])
+                                    Txz = cleanOutliers(Txzstruct[enveloppe_index[node]])
+                                    Tyz = cleanOutliers(Tyzstruct[enveloppe_index[node]])
+                                    fid.write('{:f} {:f} {:f}\n'.format(Txx, Txy, Txz))
+                                    fid.write('{:f} {:f} {:f}\n'.format(Txy, Tyy, Tyz))
+                                    fid.write('{:f} {:f} {:f}\n'.format(Txz, Tyz, Tzz))
+                                elif dim == 2:
+                                    fid.write('{:f} {:f} {:f}\n'.format(Txx, Txy, 0))
+                                    fid.write('{:f} {:f} {:f}\n'.format(Txy, Tyy, 0))
+                                    fid.write('{:f} {:f} {:f}\n'.format(0, 0, 0))
+                        else:
+                            if np.size(spe_res_struct.__dict__[field]) == 1:
+                                if field == 'time':
+                                    current_time = spe_res_struct.__dict__[field]
+                                    #skipping integers
+                                continue
+                            elif np.size(spe_res_struct.__dict__[field]) == every_nodes:
+                                fid.write('SCALARS {} float 1 \n'.format(field))
+                                fid.write('LOOKUP_TABLE default\n')
+                                for node in range(0, num_of_points):
+                                    outval = cleanOutliers(np.squeeze(spe_res_struct.__dict__[field][enveloppe_index[node]]))
+                                    fid.write('{:f}\n'.format(outval))
+                            elif np.shape(spe_res_struct.__dict__[field])[0] == np.size(spe_res_struct.__dict__[field]) == every_cells:
+                                saved_cells[field] = np.squeeze(spe_res_struct.__dict__[field])
+                            elif np.shape(spe_res_struct.__dict__[field])[0] == np.size(spe_res_struct.__dict__[field]) == every_edges:
+                                saved_edges[field] = np.squeeze(spe_res_struct.__dict__[field])
+                            else:
+                                print("format for field {}.{} is not suported, field is skipped".format(sol, field))
+            # }}}
+            # loop on arguments, if something other than result is asked, do it now {{{
+            for other in args:
+                other_struct = md.__dict__[other]
+                othernames = (dict.keys(other_struct.__dict__))
+                for field in othernames:
+                    if np.size(other_struct.__dict__[field]) == 1:
+                        #skipping integers
+                        continue
+                    elif np.size(other_struct.__dict__[field]) == every_nodes:
+                        fid.write('SCALARS {} float 1 \n'.format(field))
+                        fid.write('LOOKUP_TABLE default\n')
+                        for node in range(0, num_of_points):
+                            outval = cleanOutliers(other_struct.__dict__[field][enveloppe_index[node]])
+                            fid.write('{:f}\n'.format(outval))
+                    elif np.shape(other_struct.__dict__[field])[0] == every_nodes + 1:
+                        #we are dealing with a forcing of some kind.
+                        forcing_time = other_struct.__dict__[field][-1, :]
+                        if any(forcing_time == current_time):
+                            forcing_index = np.where(forcing_time == current_time)
+                            forcing_val = other_struct.__dict__[field][:, forcing_index]
+                        elif forcing_time[0] > current_time:
+                            forcing_val = other_struct.__dict__[field][:, 0]
+                        elif forcing_time[-1] < current_time:
+                            forcing_val = other_struct.__dict__[field][:, -1]
+                        else:
+                            forcing_index = np.where(forcing_time < current_time)[-1][-1]
+                            delta_time = forcing_time[forcing_index + 1] - forcing_time[forcing_index]  #compute forcing Dt
+                            delta_current = current_time - forcing_time[forcing_index]  # time since last forcing
+                            ratio = delta_current / delta_time  #compute weighting factor for preceding forcing vallue
+                            forcing_evol = (other_struct.__dict__[field][:, forcing_index + 1] - other_struct.__dict__[field][:, forcing_index]) * ratio
+                            forcing_val = other_struct.__dict__[field][:, forcing_index] + forcing_evol
+                        # and now write it down
+                        fid.write('SCALARS {}_{} float 1 \n'.format(other, field))
+                        fid.write('LOOKUP_TABLE default\n')
+                        for node in range(0, num_of_points):
+                            outval = cleanOutliers(forcing_val[enveloppe_index[node]])
+                            fid.write('{:f}\n'.format(outval))
+                    elif np.shape(other_struct.__dict__[field])[0] == np.size(other_struct.__dict__[field]) == every_cells:
+                        saved_cells[field] = other_struct.__dict__[field]
+                    elif np.shape(other_struct.__dict__[field])[0] == np.size(other_struct.__dict__[field]) == every_edges:
+                        saved_edges[field] = other_struct.__dict__[field]
+                    else:
+                        print("format for field {}.{} is not suported, field is skipped".format(other, field))
+                        continue
+            # }}}
+            # Now writting cell variables {{{
+            if np.size(list(saved_cells.keys())) > 0:
+                fid.write('CELL_DATA {:d} \n'.format(num_of_elt + num_of_edges))
+                for key in list(saved_cells.keys()):
+                    fid.write('SCALARS {} float 1 \n'.format(key))
+                    fid.write('LOOKUP_TABLE default\n')
+                    for cell in range(0, num_of_elt):
+                        outval = cleanOutliers(saved_cells[key][cell])
+                        fid.write('{:f}\n'.format(outval))
+                    for edge in range(0, num_of_edges):
+                        fid.write('{:f}\n'.format(-9999.999))
+            # }}}
+            # Now writting edge variables {{{
+            if np.size(list(saved_edges.keys())) > 0:
+                for key in list(saved_edges.keys()):
+                    fid.write('SCALARS {} float 1 \n'.format(key))
+                    fid.write('LOOKUP_TABLE default\n')
+                    for cell in range(0, num_of_elt):
+                        fid.write('{:f}\n'.format(-9999.999))
+                    for edge in range(0, num_of_edges):
+                        outval = cleanOutliers(saved_edges[key][edge])
+                        fid.write('{:f}\n'.format(outval))
+    # }}}
+
+
+def cleanOutliers(Val):
+    #paraview does not like NaN, replacing
+    if np.isnan(Val):
+        CleanVal = -9999.999
+    #also checking for very small value that mess up
+    elif (abs(Val) < 1.0e-20):
+        CleanVal = 0.0
+    else:
+        CleanVal = Val
+    return CleanVal
+
+
+class BadDimension(Exception):
+    """The required dimension is not supported yet."""
+
+
+class BadOption(Exception):
+    """The given option does not exist."""
+
+
+class ClipError(Exception):
+    """Error while trying to clip the domain."""
Index: /issm/branches/trunk-dlcheng-ASE/src/m/paraview/exportVTU.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/paraview/exportVTU.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/paraview/exportVTU.py	(revision 27955)
@@ -0,0 +1,723 @@
+import numpy as np
+from base64 import b64encode
+from os import path, remove, mkdir
+from glob import glob
+
+
+def exportVTU(filename, md, *args, enveloppe=False, fmtout="binary", **kwargs):
+    '''
+    vtu export
+    function exportVTU(filename, md)
+    Exports resluts in XML based vtu format for visualisation in Paraview.
+    Hopefully it is based on the treatment for export VTK and only the output part is modified.
+    (only work for triangle and wedges based on their number of nodes)
+
+    Usage:
+    exportVTU('FileName', md)
+    exportVTU('FileName', md, 'geometry', 'mesh')
+    exportVTU('FileName', md, 'geometry', 'mesh', enveloppe = True)
+
+    DirName is the name of the output directory, each timestep then has it
+    own file ('Timestep.vtkX.vtk') with X the number of the output step
+    enveloppe is an option keeping only the enveloppe of the md (it is False by default)
+
+    Options:
+        - clipping : allows to reduce your domain (cliping=[Xmin, Xmax, Ymin, Ymax])
+        - coarsetime : output one timestep every X (coarsetime=X, with X an integer)
+        - singletime : output only timestep X (singletime=X, with X an integer or -1 for last)
+
+    TODO: - make time easily accessible
+
+    Basile de Fleurian:
+    '''
+    #verbosity of the code, 0 is no messages, 5 is chatty
+    verbose = 0
+
+    #first check if the user asked for some options to be applied
+    for key in kwargs.keys():
+        if key not in ['clipping', 'coarsetime', 'singletime']:
+            raise BadOption('Provided option "{}" is not supported possibilities are : {}'.format(key, ['cliping', 'coarsetime', 'singletime']))
+
+    if 'coarsetime' in kwargs.keys() and 'singletime' in kwargs.keys():
+        raise BadOption("You can't specify both 'coarsetime' and 'singletime'")
+
+    # File checking and creation {{{
+    Dir = path.basename(filename)
+    if path.exists(filename):
+        print(('File {} allready exist'.format(filename)))
+        newname = input('Give a new name or "delete" to replace: ')
+        if newname == 'delete':
+            filelist = glob(filename + '/* ')
+            for oldfile in filelist:
+                remove(oldfile)
+        else:
+            print(('New file name is {}'.format(newname)))
+            filename = newname
+            mkdir(filename)
+    else:
+        mkdir(filename)
+
+    # }}}
+
+    # make an alias for results {{{
+    if verbose > 3:
+        print('Getting accessory variables')
+    res_struct = md.results
+    moving_mesh = False
+    if(type(res_struct) != list):
+        #Getting all the solutions of the md
+        solnames = dict.keys(res_struct.__dict__)
+        num_of_timesteps = 1
+        #%building solutionstructure
+        for solution in solnames:
+            #looking for multiple time steps
+            try:
+                if len(res_struct.__dict__[solution]) > num_of_timesteps:
+                    num_of_timesteps = len(res_struct.__dict__[solution])
+                    num_of_timesteps = int(num_of_timesteps)
+                    #If Suface is in the resluts we considet that we have a moving mesh
+                    if 'Surface' in dict.keys(res_struct.__dict__[solution][0].__dict__):
+                        moving_mesh = True
+            except TypeError:
+                continue
+    else:
+        num_of_timesteps = 1
+    # }}}
+
+    # get the mesh related variables {{{
+    if verbose > 3:
+        print('Now treating  the mesh')
+    #first get the general things
+    dim = int(md.mesh.domaintype()[0])
+    every_nodes = md.mesh.numberofvertices
+    every_cells = md.mesh.numberofelements
+    try:
+        every_edges = md.mesh.numberofedges
+    except AttributeError:
+        #3D meshes do not have edges
+        every_edges = 0
+
+    if np.shape(md.mesh.elements)[1] == 3 or enveloppe:
+        point_per_elt = 3
+        celltype = 5  #triangles
+    elif np.shape(md.mesh.elements)[1] == 6:
+        point_per_elt = 6
+        celltype = 13  #wedges
+    else:
+        raise BadDimension('exportVTU does not support your element type')
+
+    #only keep the envelope and not the bulk of the results.
+    if enveloppe:  #Treating enveloppe{{{
+        if dim == 3:
+            mesh_alti = '0'
+            is_enveloppe = np.logical_or(md.mesh.vertexonbase, md.mesh.vertexonsurface)
+            enveloppe_index = np.where(is_enveloppe)[0]
+            convert_index = np.nan * np.ones(np.shape(md.mesh.x))
+            convert_index = np.asarray([[i, np.where(enveloppe_index == i)[0][0]] for i, val in enumerate(convert_index) if any(enveloppe_index == i)])
+
+            num_of_points = np.size(enveloppe_index)
+            points = np.column_stack((md.mesh.x[enveloppe_index],
+                                      md.mesh.y[enveloppe_index],
+                                      md.mesh.z[enveloppe_index]))
+
+            num_of_elt = np.size(np.where(np.isnan(md.mesh.lowerelements))) + np.size(np.where(np.isnan(md.mesh.upperelements)))
+            connect = md.mesh.elements[np.where(is_enveloppe[md.mesh.elements - 1])].reshape(int(num_of_elt), 3) - 1
+            for elt in range(0, num_of_elt):
+                connect[elt, 0] = convert_index[np.where(convert_index == connect[elt, 0])[0], 1][0]
+                connect[elt, 1] = convert_index[np.where(convert_index == connect[elt, 1])[0], 1][0]
+                connect[elt, 2] = convert_index[np.where(convert_index == connect[elt, 2])[0], 1][0]
+
+            num_of_edges = every_edges  #looks like edges is only defined on the 2d mesh
+            if num_of_edges > 0:
+                edges = md.mesh.edges[:, 0:2].reshape(int(num_of_edges), 2) - 1
+
+        else:
+            raise BadDimension("exportVTU can't get an enveloppe for  dimension {}".format(dim))
+    # }}}
+
+    else:  #treating mesh{{{
+        #we get all the mesh, mainly defining dummies
+        num_of_elt = every_cells
+        connect = md.mesh.elements - 1
+        num_of_edges = every_edges
+        if num_of_edges > 0:
+            edges = md.mesh.edges[:, 0:2].reshape(int(num_of_edges), 2) - 1
+        enveloppe_index = np.arange(0, np.size(md.mesh.x))
+        num_of_points = every_nodes
+        if dim == 2:
+            mesh_alti = input('''This is a 2D model, what should be the 3rd dimension of the mesh :
+                                        1 : md.geometry.surface
+                                        2 : md.geometry.base
+                                        3 : md.geometry.bed
+                                        4 : 0
+                                        5 : Custom\n''')
+            if mesh_alti == '1':
+                points = np.column_stack((md.mesh.x, md.mesh.y, md.geometry.surface))
+            elif mesh_alti == '2':
+                points = np.column_stack((md.mesh.x, md.mesh.y, md.geometry.base))
+            elif mesh_alti == '3':
+                points = np.column_stack((md.mesh.x, md.mesh.y, md.geometry.bed))
+            elif mesh_alti == '4':
+                points = np.column_stack((md.mesh.x, md.mesh.y, 0. * md.mesh.x))
+            elif mesh_alti == '5':
+                alti_field = input("Which field should be used as 3rd dimension: ")
+                alti_var = eval(alti_field)
+                if np.shape(np.squeeze(alti_var)) == np.shape(md.mesh.x):
+                    points = np.column_stack((md.mesh.x, md.mesh.y, np.squeeze(alti_var)))
+                else:
+                    raise BadDimension('field given for 3rd dimension should be defined on vertices {} is not.'.format(alti_field))
+            else:
+                points = np.column_stack((md.mesh.x, md.mesh.y, md.geometry.surface))
+        elif dim == 3:
+            mesh_alti = '0'
+            points = np.column_stack((md.mesh.x, md.mesh.y, md.mesh.z))
+        else:
+            raise BadDimension('exportVTU does not support dimension {}'.format(dim))
+    # }}}
+
+    if 'clipping' in kwargs.keys():
+        if kwargs['clipping'] is not None:
+            # first get the boundaries and check them
+            [Xmin, Xmax, Ymin, Ymax] = kwargs['clipping']
+            if Xmin > Xmax:
+                raise ClipError('Xmax ({}) should be larger than Xmin ({})'.format(Xmax, Xmin))
+            if Ymin > Ymax:
+                raise ClipError('Ymax ({}) should be larger than Ymin ({})'.format(Ymax, Ymin))
+            if Xmin > np.nanmax(points[:, 0]) or Xmax < np.nanmin(points[:, 0]):
+                raise ClipError('Your X boundaries [{}, {}] are outside of the model domain [{},{}]'.format(Xmin, Xmax, np.nanmin(points[:, 0]), np.nanmax(points[:, 0])))
+            if Ymin > np.nanmax(points[:, 1]) or Ymax < np.nanmin(points[:, 1]):
+                raise ClipError('Your Y boundaries [{}, {}] are outside of the model domain [{},{}]'.format(Ymin, Ymax, np.nanmin(points[:, 1]), np.nanmax(points[:, 1])))
+
+            #boundaries should be fine lets do stuff
+            InX = np.where(np.logical_and(points[:, 0] >= Xmin, points[:, 0] <= Xmax))
+            InY = np.where(np.logical_and(points[:, 1] >= Ymin, points[:, 1] <= Ymax))
+
+            Isinside = np.zeros(np.shape(points)[0], dtype=bool)
+            clip_convert_index = np.nan * np.ones(np.shape(points)[0])
+
+            #define the vertices that are within clipping window
+            Inclipping = np.intersect1d(InX, InY)
+            Isinside[Inclipping] = True
+            points = points[Inclipping, :]
+            num_of_points = np.shape(points)[0]
+
+            #go thorough the elements and keep those for which one node is in the clipped arrea
+            clipconnect = np.asarray([], dtype=int)
+            for elt in connect:
+                if set(elt).issubset(Inclipping):
+                    clipconnect = np.append(clipconnect, elt, axis=0)
+
+            #reshape
+            num_of_elt = int(np.size(clipconnect) / 3)
+            connect = clipconnect.reshape(num_of_elt, 3)
+
+            clip_convert_index = np.asarray([[i, np.where(Inclipping == i)[0][0]] for i, val in enumerate(clip_convert_index) if any(Inclipping == i)])
+            enveloppe_index = enveloppe_index[clip_convert_index[:, 0]]
+
+            #convert indexing and exclude elements that are partly outside of the region
+            for elt in range(0, num_of_elt):
+                try:
+                    connect[elt, 0] = clip_convert_index[np.where(clip_convert_index == connect[elt, 0])[0], 1][0]
+                except IndexError:
+                    connect[elt, 0] = -1
+                try:
+                    connect[elt, 1] = clip_convert_index[np.where(clip_convert_index == connect[elt, 1])[0], 1][0]
+                except IndexError:
+                    connect[elt, 1] = -1
+                try:
+                    connect[elt, 2] = clip_convert_index[np.where(clip_convert_index == connect[elt, 2])[0], 1][0]
+                except IndexError:
+                    connect[elt, 2] = -1
+
+            connect = connect[np.where(connect != -1)[0], :]
+            num_of_elt = np.shape(connect)[0]
+
+            if num_of_edges > 0:
+                clipedges = np.asarray([], dtype=int)
+                for edge in edges:
+                    if set(edge).issubset(Inclipping):
+                        clipedges = np.append(clipedges, edge, axis=0)
+
+                num_of_edges = int(np.size(clipedges) / 2)
+                edges = clipedges.reshape(num_of_edges, 2)
+
+                for edge in range(0, num_of_edges):
+                    try:
+                        edges[edge, 0] = clip_convert_index[np.where(clip_convert_index == edges[edge, 0])[0], 1][0]
+                    except IndexError:
+                        edges[edge, 0] = -1
+                    try:
+                        edges[edge, 1] = clip_convert_index[np.where(clip_convert_index == edges[edge, 1])[0], 1][0]
+                    except IndexError:
+                        edges[edge, 1] = -1
+                edges = edges[np.where(edges != -1)[0], :]
+                num_of_edges = np.shape(edges)[0]
+
+    # }}}
+
+    # write header and mesh {{{
+    if verbose > 3:
+        print('Now starting to write stuff')
+
+    if 'coarsetime' in kwargs.keys():
+        steplist = range(0, num_of_timesteps, kwargs['coarsetime'])
+    elif 'singletime' in kwargs.keys():
+        steplist = [kwargs['singletime']]
+    else:
+        steplist = range(0, num_of_timesteps)
+
+    for step in steplist:
+        if verbose > 2:
+            print('Writing for step {}'.format(step))
+
+        with open(('{}/{}_{}.vtu').format(filename, Dir, step), 'w+') as fid:
+            fid.write('<?xml version="1.0"?>\n')
+            fid.write('<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian">\n')
+            fid.write('  <UnstructuredGrid>\n')
+            fid.write('    <Piece NumberOfPoints="{}"  NumberOfCells="{}">\n'.format(num_of_points, num_of_elt + num_of_edges))
+            tensors = []
+            vectors = []
+            scalars = []
+            for sol in solnames:
+                #getting the  fields in the solution
+                if type(res_struct.__dict__[sol]).__name__ == 'solution':
+                    spe_res_struct = res_struct.__dict__[sol].__getitem__(0)
+                    fieldnames = list(dict.keys(spe_res_struct.__dict__))
+                elif type(res_struct.__dict__[sol]).__name__ in ['solutionstep', 'results']:
+                    spe_res_struct = res_struct.__dict__[sol]
+                    fieldnames = list(dict.keys(spe_res_struct.__dict__))
+                else:
+                    print("WARNING, solution type '{}' is not recognise, exported results might be wrong".format(type(res_struct.__dict__[sol])))
+                    spe_res_struct = res_struct.__dict__[sol]
+                    fieldnames = list(dict.keys(spe_res_struct.__dict__))
+
+                loctensors, locvectors, locscalars = SortFields(fieldnames)
+                tensors.extend(loctensors)
+                vectors.extend(locvectors)
+                scalars.extend(locscalars)
+            for other in args:
+                other_struct = md.__dict__[other]
+                othernames = list(dict.keys(other_struct.__dict__))
+
+                loctensors, locvectors, locscalars = SortFields(othernames)
+                tensors.extend(loctensors)
+                vectors.extend(locvectors)
+                scalars.extend(locscalars)
+
+            fid.write('      <PointData Scalars="{}"'.format(scalars))
+            if len(vectors) > 0:
+                fid.write(' Vectors="{}"'.format(vectors[:-1]))
+            if len(tensors) > 0:
+                fid.write(' Tensors="{}"'.format(tensors[:-2]))
+            fid.write('>\n')
+
+            saved_cells = {}
+            saved_edges = {}
+            saved_const = {}
+            timestep = step
+
+            # }}}
+            # {{{loop over the different solution structures
+            # first check if there are solutions to grab
+            for sol in solnames:
+                treated_res = []
+                #dealing with results on different timesteps
+                try:
+                    if(len(res_struct.__dict__[sol]) > timestep):
+                        timestep = step
+                    else:
+                        timestep = np.size(res_struct.__dict__[sol])
+                except TypeError:
+                    #result as no len() so no timesteps
+                    timestep = 1
+
+                #getting the  fields in the solution
+                if(type(res_struct.__dict__[sol]).__name__ == 'solution'):
+                    spe_res_struct = res_struct.__dict__[sol].__getitem__(timestep)
+                    fieldnames = list(dict.keys(spe_res_struct.__dict__))
+                elif(type(res_struct.__dict__[sol]).__name__ == 'solutionstep'):
+                    spe_res_struct = res_struct.__dict__[sol]
+                    fieldnames = list(dict.keys(spe_res_struct.__dict__))
+                elif(type(res_struct.__dict__[sol]).__name__ == 'results'):  #this is a result without steps
+                    spe_res_struct = res_struct.__dict__[sol]
+                    fieldnames = list(dict.keys(spe_res_struct.__dict__))
+                else:
+                    print("WARNING, solution type '{}' is not recognise, exported results might be wrong".format(type(res_struct.__dict__[sol])))
+                    spe_res_struct = res_struct.__dict__[sol]
+                    fieldnames = list(dict.keys(spe_res_struct.__dict__))
+
+                tensors, vectors, ScalarNames = SortFields(fieldnames)
+
+                #check which field is a real result and print
+                for field in fieldnames:
+                    if field in treated_res:
+                        if verbose > 2:
+                            print("{}.{} is already done".format(sol, field))
+                        continue
+
+                    elif field in vectors:
+                        if verbose > 2:
+                            print("Treating {}.{} as a vector ".format(sol, field))
+                        TreatVector(fid, fmtout, spe_res_struct, sol, field, treated_res, enveloppe_index)
+
+                    elif field in tensors:
+                        if verbose > 2:
+                            print("Treating {}.{} as a tensor ".format(sol, field))
+                        TreatTensor(fid, fmtout, spe_res_struct, sol, field, treated_res, enveloppe_index)
+
+                    else:
+                        if np.size(spe_res_struct.__dict__[field]) == 1:
+                            if verbose > 2:
+                                print("Treating {}.{} as a constant ".format(sol, field))
+                            if field == 'time':
+                                current_time = spe_res_struct.__dict__[field]
+                            saved_const[".".join((sol, field))] = np.squeeze(spe_res_struct.__dict__[field])
+
+                        elif np.size(spe_res_struct.__dict__[field]) == every_nodes:
+                            if verbose > 2:
+                                print("Treating {}.{} as a node variable ".format(sol, field))
+                            TreatScalar(fid, fmtout, spe_res_struct, sol, field, enveloppe_index)
+
+                        elif np.shape(spe_res_struct.__dict__[field])[0] == np.size(spe_res_struct.__dict__[field]) == every_cells:
+                            saved_cells[".".join((sol, field))] = np.squeeze(spe_res_struct.__dict__[field])
+
+                        elif np.shape(spe_res_struct.__dict__[field])[0] == np.size(spe_res_struct.__dict__[field]) == every_edges and num_of_edges > 0:
+                            saved_edges[".".join((sol, field))] = np.squeeze(spe_res_struct.__dict__[field])
+
+                        else:
+                            print("format for field {}.{} is not suported, field is skipped".format(sol, field))
+            # }}}
+            # loop on arguments, if something other than result is asked, do it now {{{
+            for other in args:
+                treated_res = []
+                if verbose > 3:
+                    print("Now treating {}".format(other))
+                other_struct = md.__dict__[other]
+                othernames = list(dict.keys(other_struct.__dict__))
+                tensors, vectors, ScalarNames = SortFields(othernames)
+                for field in othernames:
+                    if field in treated_res:
+                        if verbose > 2:
+                            print("{}.{} is already done".format(other, field))
+                        continue
+                    elif field in vectors:
+                        TreatVector(fid, fmtout, other_struct, other, field, treated_res, enveloppe_index)
+
+                    elif field in tensors:
+                        if verbose > 2:
+                            print("Treating {}.{} as a tensor ".format(sol, field))
+                        TreatTensor(fid, fmtout, other_struct, other, field, treated_res, enveloppe_index)
+                        #now treating fields that are not vectors or tensors
+
+                    else:
+                        if np.size(other_struct.__dict__[field]) == 1:
+                            if verbose > 2:
+                                print("Treating {}.{} as an constant ".format(other, field))
+                            if field == 'time':
+                                current_time = other_struct.__dict__[field]
+                            saved_const[".".join((other, field))] = np.squeeze(other_struct.__dict__[field])
+
+                        elif np.size(other_struct.__dict__[field]) == every_nodes:
+                            if verbose > 2:
+                                print("Treating {}.{} as a node variable ".format(other, field))
+                            TreatScalar(fid, fmtout, other_struct, other, field, enveloppe_index)
+
+                        elif np.shape(other_struct.__dict__[field])[0] == every_nodes + 1:
+                            if verbose > 3:
+                                print("Treating {}.{} as a node forcing variable".format(other, field))
+                            TreatForcing(fid, fmtout, other_struct, other, field, treated_res, enveloppe_index, current_time)
+
+                        elif np.shape(other_struct.__dict__[field])[0] == np.size(other_struct.__dict__[field]) == every_cells:
+                            if verbose > 3:
+                                print("Treating {}.{} as a cell variable".format(other, field))
+                            saved_cells[".".join((other, field))] = np.squeeze(other_struct.__dict__[field])
+
+                        elif np.shape(other_struct.__dict__[field])[0] == np.size(other_struct.__dict__[field]) == every_edges and num_of_edges > 0:
+                            if verbose > 3:
+                                print("Treating {}.{} as an edge variable".format(other, field))
+                            saved_edges[".".join((other, field))] = np.squeeze(other_struct.__dict__[field])
+
+                        else:
+                            print("format for field {}.{} is not suported, field is skipped".format(other, field))
+            fid.write('      </PointData>\n')
+            # }}}
+            # Now writting cell variables {{{
+            if np.size(list(saved_cells.keys())) > 0 or np.size(list(saved_edges.keys())) > 0:
+                cellkeys = list(saved_cells.keys())
+                edgekeys = list(saved_edges.keys())
+                if len(cellkeys) > 0 and len(edgekeys) > 0:
+                    savekeys = list(saved_cells.keys())
+                    savekeys.extend(edgekeys)
+                elif len(cellkeys) > 0:
+                    savekeys = cellkeys
+                elif len(edgekeys) > 0:
+                    savekeys = edgekeys
+                if verbose > 3:
+                    print("Saving cell for {}".format(savekeys))
+                fid.write('      <CellData Scalars="{}">\n'.format(savekeys))
+
+            if np.size(list(saved_cells.keys())) > 0:
+                for key in cellkeys:
+                    outval = saved_cells[key]
+                    if num_of_edges > 0:
+                        if fmtout == "binary":
+                            outval = np.append(outval, np.nan * np.ones((num_of_edges)))
+                        else:
+                            outval = np.append(outval, -9999.999 * np.ones((num_of_edges)))
+                    if verbose > 3:
+                        print("writing {} values of type {} for {}".format(len(outval), outval.dtype, key))
+
+                    fid.write('        <DataArray type="Float32" Name="{}" format="{}">\n'.format(key, fmtout))
+                    WriteIt(outval, fid, fmtout)
+                    fid.write('        </DataArray>\n')
+
+            # }}}
+            # Now writting edge variables {{{
+            if np.size(list(saved_edges.keys())) > 0:
+                for key in list(saved_edges.keys()):
+                    if fmtout == "binary":
+                        outval = np.nan * np.ones((num_of_elt))
+                    else:
+                        outval = -9999.999 * np.ones((num_of_elt))
+                    outval = np.append(outval, saved_edges[key])
+                    fid.write('        <DataArray type="Float32" Name="{}" format="{}">\n'.format(key, fmtout))
+                    WriteIt(outval, fid, fmtout)
+                    fid.write('        </DataArray>\n')
+            if np.size(list(saved_cells.keys())) > 0 or np.size(list(saved_edges.keys())) > 0:
+                fid.write('      </CellData>\n')
+            # }}}
+
+            # Now writting constants # {{{
+            if np.size(list(saved_const.keys())) > 0:
+                fid.write('      <FieldData>\n')
+                for key in list(saved_const.keys()):
+                    fid.write('        <DataArray type="Float32" Name="{}" format="{}">\n'.format(key, fmtout))
+                    WriteIt(saved_const[key], fid, fmtout)
+                    fid.write('        </DataArray>\n')
+                fid.write('      </FieldData>\n')
+            # }}}
+
+            #Mesh Treatment and write, it needs to loop to allow variable geometry {{{
+            #updating z for mesh evolution
+            if moving_mesh and mesh_alti == '1':
+                points[:, 2] = np.squeeze(res_struct.__dict__['TransientSolution'][step].__dict__['Surface'][enveloppe_index])
+            elif moving_mesh and mesh_alti == '2':
+                points[:, 2] = np.squeeze(res_struct.__dict__['TransientSolution'][step].__dict__['Base'][enveloppe_index])
+
+            #Now write points locations
+            fid.write('      <Points>\n')
+            fid.write('        <DataArray type="Float32" Name="Points" NumberOfComponents="3" format="{}">\n'.format(fmtout))
+            WriteIt(points, fid, fmtout)
+            fid.write('        </DataArray>\n')
+            fid.write('      </Points>\n')
+
+            #cells are a combination of element and edges
+            # we need node conectivity offsets and types
+            #offsets is the cummulative index of the last elemant of each cell (1 indexed)
+            flat_elt = connect.flatten()
+            elt_offset = np.arange(0, num_of_elt * point_per_elt, point_per_elt, dtype=np.int64) + point_per_elt
+            elt_type = celltype * np.ones((num_of_elt), dtype=np.uint8)
+            if num_of_edges > 0:
+                flat_edges = edges.flatten()
+                flat_cells = np.hstack((flat_elt, flat_edges))
+                edge_offset = np.arange(0, num_of_edges * 2, 2) + 2 + elt_offset[-1]
+                cell_offset = np.hstack((elt_offset, edge_offset))
+                edge_type = 3 * np.ones((num_of_edges), dtype=np.uint8)
+                cell_type = np.hstack((elt_type, edge_type))
+            else:
+                flat_cells = flat_elt
+                cell_offset = elt_offset
+                cell_type = elt_type
+
+            if verbose > 3:
+                print("""writing mesh structure:
+                                  connectivity of shape {}
+                                  cell offset of shape {}
+                                  cell types of shape{}""".format(np.shape(flat_cells), np.shape(cell_offset), np.shape(cell_type)))
+            #write cells Informations
+            fid.write('      <Cells>\n')
+            fid.write('        <DataArray type="Int64" Name="connectivity" format="{}">\n'.format(fmtout))
+            WriteIt(flat_cells, fid, fmtout)
+            fid.write('        </DataArray>\n')
+            fid.write('        <DataArray type="Int64" Name="offsets" format="{}">\n'.format(fmtout))
+            WriteIt(cell_offset, fid, fmtout)
+            fid.write('        </DataArray>\n')
+            fid.write('        <DataArray type="UInt8" Name="types" format="{}">\n'.format(fmtout))
+            WriteIt(cell_type, fid, fmtout)
+            fid.write('        </DataArray>\n')
+            fid.write('      </Cells>\n')
+            fid.write('    </Piece>\n')
+            fid.write('  </UnstructuredGrid>\n')
+            fid.write('</VTKFile>\n')
+            # }}}
+
+
+def SortFields(fieldnames):
+    #we check on sizes so there is a slight chance that logs can be picked as results, we remove them to avoid that
+    for trashfield in ['errlog', 'outlog']:
+        if trashfield in fieldnames:
+            fieldnames.remove(trashfield)
+
+    #Sorting scalars, vectors and tensors
+    tensors = [field for field in fieldnames if field[-2:] in ['xx', 'yy', 'xy', 'zz', 'xz', 'yz']]
+    non_tensor = [field for field in fieldnames if field not in tensors]
+    vectors = [field for field in non_tensor if field[-1] in ['x', 'y', 'z']]
+    #get the name of scalar fields remove, vectors, tensors and things that are not proper results
+    scalars = [field for field in fieldnames if field not in tensors + vectors]
+    dump = ["ConvergenceNumSteps", "step", "time"]
+    for trash in dump:
+        try:
+            scalars.remove(trash)
+        except ValueError:
+            [scalars.remove(name) for name in scalars if trash in name]
+            continue
+    #clean up vector and tensors that might be here and should not
+    # we check that at least two of the vector component are here
+    for namelist in [vectors, tensors]:
+        for name in list(namelist):
+            coord = name[-1]
+            if coord == 'x' and name[:-1] + 'y' in namelist:
+                continue
+            elif coord == 'y' and name[:-1] + 'x' in namelist:
+                continue
+            elif coord == 'z' and name[:-1] + 'x' in namelist:
+                continue
+            else:
+                scalars.extend([name])
+                namelist.remove(name)
+    return tensors, vectors, scalars
+
+
+def TreatScalar(fid, fmtout, structure, structname, fieldname, enveloppe_index):
+    array = np.squeeze(structure.__dict__[fieldname][enveloppe_index])
+    fid.write('        <DataArray type="Float32" Name="{}" NumberOfComponents="1" format="{}">\n'.format(".".join((structname, fieldname)), fmtout))
+    WriteIt(array, fid, fmtout)
+    fid.write('        </DataArray>\n')
+
+
+def TreatVector(fid, fmtout, structure, structname, fieldname, treated_res, enveloppe_index):
+    Vxstruct = np.squeeze(structure.__dict__[fieldname[:-1] + 'x'])
+    Vystruct = np.squeeze(structure.__dict__[fieldname[:-1] + 'y'])
+    Vx = Vxstruct[enveloppe_index]
+    Vy = Vystruct[enveloppe_index]
+    treated_res += [fieldname[:-1] + 'x', fieldname[:-1] + 'y']
+    try:
+        Vzstruct = np.squeeze(structure.__dict__[fieldname[:-1] + 'z'])
+        treated_res += [fieldname[:-1] + 'z']
+        Vz = Vzstruct[enveloppe_index]
+    except KeyError:
+        Vz = np.zeros(np.shape(Vx))
+    Vector = (np.vstack((Vx, Vy, Vz)).T).flatten()
+    fid.write('        <DataArray type="Float32" Name="{}" NumberOfComponents="3" format="{}">\n'.format(".".join((structname, fieldname[:-1])), fmtout))
+    WriteIt(Vector, fid, fmtout)
+    fid.write('        </DataArray>\n')
+
+
+def TreatTensor(fid, fmtout, structure, structname, fieldname, treated_res, enveloppe_index):
+    Txxstruct = np.squeeze(structure.__dict__[fieldname[:-2] + 'xx'])
+    Txystruct = np.squeeze(structure.__dict__[fieldname[:-2] + 'xy'])
+    Tyystruct = np.squeeze(structure.__dict__[fieldname[:-2] + 'yy'])
+    treated_res += [fieldname[:-2] + 'xx', fieldname[:-2] + 'xy', fieldname[:-2] + 'yy']
+    Txx = Txxstruct[enveloppe_index]
+    Tyy = Tyystruct[enveloppe_index]
+    Txy = Txystruct[enveloppe_index]
+    try:
+        Tzzstruct = np.squeeze(structure.__dict__[fieldname[:-2] + 'zz'])
+        Txzstruct = np.squeeze(structure.__dict__[fieldname[:-2] + 'xz'])
+        Tyzstruct = np.squeeze(structure.__dict__[fieldname[:-2] + 'yz'])
+        treated_res += [fieldname[:-2] + 'zz', fieldname[:-2] + 'xz', fieldname[:-2] + 'yz']
+        Tzz = Tzzstruct[enveloppe_index]
+        Txz = Txzstruct[enveloppe_index]
+        Tyz = Tyzstruct[enveloppe_index]
+    except KeyError:
+        Tzz = np.zeros(np.shape(Txx))
+        Txz = np.zeros(np.shape(Txx))
+        Tyz = np.zeros(np.shape(Txx))
+
+    Tensor = (np.vstack((Txx, Tyy, Tzz, Txy, Tyz, Txz)).T).flatten()
+    fid.write('        <DataArray type="Float32" Name="{}" NumberOfComponents="6" format="{}">\n'.format(".".join((structname, fieldname[:-1])), fmtout))
+    WriteIt(Tensor, fid, fmtout)
+    fid.write('        </DataArray>\n')
+
+
+def TreatForcing(fid, fmtout, structure, structname, fieldname, treated_res, enveloppe_index, current_time):
+    #we are dealing with a forcing of some kind.
+    forcing_time = structure.__dict__[fieldname][-1, :]
+    if any(forcing_time == current_time):
+        forcing_index = np.where(forcing_time == current_time)
+        forcing_val = structure.__dict__[fieldname][:, forcing_index]
+    elif forcing_time[0] > current_time:
+        forcing_val = structure.__dict__[fieldname][:, 0]
+    elif forcing_time[-1] < current_time:
+        forcing_val = structure.__dict__[fieldname][:, -1]
+    else:
+        forcing_index = np.where(forcing_time < current_time)[-1][-1]
+        delta_time = forcing_time[forcing_index + 1] - forcing_time[forcing_index]  #compute forcing Dt
+        delta_current = current_time - forcing_time[forcing_index]  # time since last forcing
+        ratio = delta_current / delta_time  #compute weighting factor for preceding forcing vallue
+        forcing_evol = (structure.__dict__[fieldname][:, forcing_index + 1] - structure.__dict__[fieldname][:, forcing_index]) * ratio
+        forcing_val = structure.__dict__[fieldname][:, forcing_index] + forcing_evol
+    array = forcing_val[enveloppe_index]
+    # and now write it down
+    fid.write('        <DataArray type="Float32" Name="{}" NumberOfComponents="1" format="{}">\n'.format(".".join((structname, fieldname)), fmtout))
+    WriteIt(array, fid, fmtout)
+    fid.write('        </DataArray>\n')
+
+
+def WriteIt(Data, fid, fmtout):
+    vtu_to_numpy_type = {
+        "Float32": np.dtype(np.float32),
+        "Float64": np.dtype(np.float64),
+        "Int8": np.dtype(np.int8),
+        "Int16": np.dtype(np.int16),
+        "Int32": np.dtype(np.int32),
+        "Int64": np.dtype(np.int64),
+        "UInt8": np.dtype(np.uint8),
+        "UInt16": np.dtype(np.uint16),
+        "UInt32": np.dtype(np.uint32),
+        "UInt64": np.dtype(np.uint64),
+    }
+    if fmtout == 'binary':
+        try:
+            datatype = Data.dtype
+        except AttributeError:
+            datatype = type(Data)
+        if datatype == np.float64:
+            Data = np.float32(Data)
+        try:
+            data_bytes = Data.tobytes()
+        except AttributeError:
+            data_bytes = np.asarray(Data).tobytes()
+        # collect header
+        header = np.array(len(data_bytes), dtype=vtu_to_numpy_type['UInt32'])
+        fid.write(b64encode(header.tobytes() + data_bytes).decode())
+        fid.write('\n')
+        #cell_type.tofile(fid)
+    elif fmtout == 'ascii':
+        np.savetxt(fid, Data, fmt='%g')
+
+
+def cleanOutliers(Val, fmtout):
+    #paraview does not like NaN in ascii files, replacing
+    if np.isnan(Val):
+        if fmtout == 'ascii':
+            CleanVal = -9999.999
+
+    #also checking for very small value that mess up
+    elif (abs(Val) < 1.0e-20):
+        CleanVal = 0.0
+    else:
+        CleanVal = Val
+    return CleanVal
+
+
+class BadDimension(Exception):
+    """The required dimension is not supported yet."""
+
+
+class BadOption(Exception):
+    """The given option does not exist."""
+
+
+class ClipError(Exception):
+    """Error while trying to clip the domain."""
Index: /issm/branches/trunk-dlcheng-ASE/src/m/partition/AreaAverageOntoPartition.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/partition/AreaAverageOntoPartition.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/partition/AreaAverageOntoPartition.m	(revision 27955)
@@ -0,0 +1,56 @@
+function partvector=AreaAverageOntoPartition(md,vector,partition,layer)
+%AREAAVERAGEONTOPARTITION 
+%   compute partition values for a certain vector expressed on the vertices of the mesh.
+%   Use area weighted average.
+%
+%   Usage:
+%      average=AreaAverageOntoPartition(md,vector)
+%      average=AreaAverageOntoPartition(md,vector,layer) %if in 3D, chose which layer is partitioned
+
+%some checks
+if dimension(md.mesh)==3,
+	if nargin~=3,
+		error('layer should be provided onto which Area Averaging occurs');
+	end
+	%save 3D model
+	md3d=md;
+
+	md.mesh.elements=md.mesh.elements2d;
+	md.mesh.x=md.mesh.x2d;
+	md.mesh.y=md.mesh.y2d;
+	md.mesh.numberofvertices=md.mesh.numberofvertices2d;
+	md.mesh.numberofelements=md.mesh.numberofelements2d;
+	md.qmu.vertex_weight=[];
+	md.mesh.vertexconnectivity=[];
+
+	%run connectivity routine
+	md=adjacency(md);
+
+	%finally, project vector: 
+	vector=project2d(md3d,vector,layer);
+	partition=project2d(md3d,partition,layer);
+end
+
+%ok, first check that part is Matlab indexed
+part=partition+1;
+
+%some check: 
+npart=qmupart2npart(partition);
+if npart~=max(part),
+	error('AreaAverageOntoPartition error message: ''npart'' should be equal to max(partition)');
+end
+
+%initialize output
+partvector=zeros(max(part),1);
+
+%start weight average
+weightedvector=vector.*md.qmu.vertex_weight;
+for i=1:max(part),
+	pos=find(part==i);
+	partvector(i)=sum(weightedvector(pos))/sum(md.qmu.vertex_weight(pos));
+end
+
+%in 3D, restore 3D model:
+if dimension(md.mesh)==3,
+	md=md3d;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/partition/AreaAverageOntoPartition.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/partition/AreaAverageOntoPartition.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/partition/AreaAverageOntoPartition.py	(revision 27955)
@@ -0,0 +1,65 @@
+import copy
+
+import numpy as np
+
+from adjacency import adjacency
+from project2d import project2d
+from qmupart2npart import qmupart2npart
+
+
+def AreaAverageOntoPartition(md, vector, partition, layer=None):
+    '''
+    AREAAVERAGEONTOPARTITION - compute partition values for a certain vector expressed on the vertices of the mesh.
+    Use area weighted average.
+
+    Usage:
+        average = AreaAverageOntoPartition(md, vector)
+        average = AreaAverageOntoPartition(md, vector, layer) # If in 3D, chose which layer is partitioned
+    '''
+
+    #some checks
+    if(md.mesh.dimension() == 3):
+        if layer is None:
+            raise RuntimeError('AreaAverageOntoPartition: layer should be provided onto which Area Averaging occurs')
+
+        #save 3D model
+        md3d = copy.deepcopy(md)
+
+        md.mesh.elements = md.mesh.elements2d
+        md.mesh.x = md.mesh.x2d
+        md.mesh.y = md.mesh.y2d
+        md.mesh.numberofvertices = md.mesh.numberofvertices2d
+        md.mesh.numberofelements = md.mesh.numberofelements2d
+        md.qmu.vertex_weight = []
+        md.mesh.vertexconnectivity = []
+
+        #run connectivity routine
+        md = adjacency(md)
+
+    #finally, project vector:
+        vector = project2d(md3d, vector, layer)
+        partition = project2d(md3d, partition, layer)
+
+    #ok, first check that part is Matlab indexed
+    part = partition.copy()
+    part = part.flatten() + 1
+
+    #some check:
+    npart = qmupart2npart(partition)
+    if npart != max(part):
+        raise RuntimeError('AreaAverageOntoPartition error message: ''npart'' should be equal to max(partition)')
+
+    #initialize output
+    partvector = np.zeros((max(part)))
+
+    #start weight average
+    weightedvector = vector.flatten() * md.qmu.vertex_weight
+    for i in range(max(part)):
+        pos = np.where((part - 1) == i)
+        partvector[i] = sum(weightedvector[pos]) / sum(md.qmu.vertex_weight[pos])
+
+    #in 3D, restore 3D model:
+    if(md.mesh.dimension() == 3):
+        md = copy.deepcopy(md3d)
+
+    return partvector
Index: /issm/branches/trunk-dlcheng-ASE/src/m/partition/adjacency.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/partition/adjacency.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/partition/adjacency.m	(revision 27955)
@@ -0,0 +1,26 @@
+function md=adjacency(md)
+%ADJACENCY -  compute adjacency matrix, list of vertices and list of weights.
+%
+%  function to create the adjacency matrix from the connectivity table.
+%
+%  the required output is:
+%    md.adj_mat     (double [sparse nv x nv], vertex adjacency matrix)
+%    md.qmu.vertex_weight        (double [nv], vertex weights)
+
+indi=[md.mesh.elements(:,1);md.mesh.elements(:,2);md.mesh.elements(:,3)];
+indj=[md.mesh.elements(:,2);md.mesh.elements(:,3);md.mesh.elements(:,1)];
+values=1;
+
+md.qmu.adjacency=sparse(indi,indj,values,md.mesh.numberofvertices,md.mesh.numberofvertices);
+md.qmu.adjacency=double([md.qmu.adjacency | md.qmu.adjacency']);
+
+%now, build vwgt:
+areas=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y);
+
+%get node connectivity
+md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+
+connectivity=md.mesh.vertexconnectivity(:,1:end-1);
+pos=find(connectivity);
+connectivity(pos)=areas(connectivity(pos))/3;
+md.qmu.vertex_weight=sum(connectivity,2);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/partition/adjacency.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/partition/adjacency.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/partition/adjacency.py	(revision 27955)
@@ -0,0 +1,36 @@
+import numpy as np
+
+from GetAreas import *
+import MatlabFuncs as m
+from NodeConnectivity import *
+
+
+def adjacency(md):
+    """ADJACENCY - compute adjacency matrix, list of vertices and list of weights.
+
+    function to create the adjacency matrix from the connectivity table.
+    
+    the required output is:
+        md.adj_mat     (double [sparse nv x nv], vertex adjacency matrix)
+        md.qmu.vertex_weight        (double [nv], vertex weights)
+    """
+
+    indi = np.array([md.mesh.elements[:, 0], md.mesh.elements[:, 1], md.mesh.elements[:, 2]])
+    indj = np.array([md.mesh.elements[:, 1], md.mesh.elements[:, 2], md.mesh.elements[:, 0]])
+    values = np.ones(np.shape(indi))
+
+    md.qmu.adjacency = m.sparse(indi, indj, values, md.mesh.numberofvertices, md.mesh.numberofvertices)
+    md.qmu.adjacency = np.logical_or(md.qmu.adjacency, md.qmu.adjacency.T).astype(float)  #change to reshape(-1, 1) if needed
+
+    #now, build vwgt:
+    areas = GetAreas(md.mesh.elements, md.mesh.x, md.mesh.y)
+
+    #get node connectivity
+    md.mesh.vertexconnectivity = NodeConnectivity(md.mesh.elements, md.mesh.numberofvertices)
+
+    connectivity = md.mesh.vertexconnectivity[:, 0:-1]
+    pos = np.where(connectivity)
+    connectivity[pos] = areas[connectivity[pos] - 1] / 3.
+    md.qmu.vertex_weight = np.sum(connectivity, 1)
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/partition/flagedges.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/partition/flagedges.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/partition/flagedges.m	(revision 27955)
@@ -0,0 +1,45 @@
+function [xsegments ysegments]=flagedges(elements,x,y,partition)
+%FLAGEDGES - return pairs of x,y segments, delimiting partitions.
+%
+%   Usage:
+%      [xsegments ysegments]=flagedges(elements,x,y,partition)
+
+xsegments=[];
+ysegments=[];
+
+for i=1:size(elements,1),
+	m1=partition(elements(i,1));
+	m2=partition(elements(i,2));
+	m3=partition(elements(i,3));
+	x1=x(elements(i,1));
+	x2=x(elements(i,2));
+	x3=x(elements(i,3));
+	y1=y(elements(i,1));
+	y2=y(elements(i,2));
+	y3=y(elements(i,3));
+
+	if (m1~=m2) & (m1~=m3) & (m2~=m3),
+		xmiddle=(x1+x2+x3)/3;
+		ymiddle=(y1+y2+y3)/3;
+		xsegments=[xsegments; (x1+x2)/2 xmiddle];
+		xsegments=[xsegments; (x1+x3)/2 xmiddle];
+		xsegments=[xsegments; (x2+x3)/2 xmiddle];
+		ysegments=[ysegments; (y1+y2)/2 ymiddle];
+		ysegments=[ysegments; (y1+y3)/2 ymiddle];
+		ysegments=[ysegments; (y2+y3)/2 ymiddle];
+	end
+
+	if (m1==m2) & (m1~=m3),
+		xsegments=[xsegments; (x1+x3)/2 (x2+x3)/2];
+		ysegments=[ysegments; (y1+y3)/2 (y2+y3)/2];
+	end
+	if (m1==m3) & (m2~=m3),
+		xsegments=[xsegments; (x1+x2)/2 (x2+x3)/2];
+		ysegments=[ysegments; (y1+y2)/2 (y2+y3)/2];
+	end
+
+	if (m2==m3) & (m1~=m3),
+		xsegments=[xsegments; (x1+x2)/2 (x1+x3)/2];
+		ysegments=[ysegments; (y1+y2)/2 (y1+y3)/2];
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/partition/partitioner.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/partition/partitioner.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/partition/partitioner.m	(revision 27955)
@@ -0,0 +1,144 @@
+function [partitionvector,md]=partitioner(md,varargin)
+%PARTITIONER - partition mesh 
+%
+%   List of options to partitioner: 
+%
+%   package: 'chaco', 'metis' or 'scotch'
+%   npart: number of partitions.
+%   weighting: 'on' or 'off': default off
+%   section:  1 by defaults(1=bisection, 2=quadrisection, 3=octasection)
+%   recomputeadjacency:  'on' by default (set to 'off' to compute existing one)
+%   type: 'node' or 'element' partition vector (default to 'node') 
+%   Output: partitionvector: the partition vector
+%   
+%   Usage:
+%      partitionvector=partitioner(md,'package','chaco','npart',100,'weighting','on');
+%      [partitionvector,md]=partitioner(md,'package','chaco','npart',100,'weighting','on');
+%
+
+%get options: 
+options=pairoptions(varargin{:});
+
+%set defaults
+options=addfielddefault(options,'package','chaco');
+options=addfielddefault(options,'npart',10);
+options=addfielddefault(options,'weighting','on');
+options=addfielddefault(options,'section',1);
+options=addfielddefault(options,'recomputeadjacency','on');
+options=addfielddefault(options,'type','node');
+
+%get package: 
+package=getfieldvalue(options,'package');
+npart=getfieldvalue(options,'npart');
+recomputeadjacency=getfieldvalue(options,'recomputeadjacency');
+vectortype=getfieldvalue(options,'type');
+
+if(dimension(md.mesh)==3),
+	%partitioning essentially happens in 2D. So partition in 2D, then 
+	%extrude the partition vector vertically. 
+	md3d=md; %save for later
+	md.mesh.elements=md.mesh.elements2d;
+	md.mesh.x=md.mesh.x2d;
+	md.mesh.y=md.mesh.y2d;
+	md.mesh.numberofvertices=md.mesh.numberofvertices2d;
+	md.mesh.numberofelements=md.mesh.numberofelements2d;
+	md.qmu.vertex_weight=[];
+	md.mesh.vertexconnectivity=[];
+	recomputeadjacency='on';
+end
+
+%adjacency matrix if needed:
+if strcmpi(recomputeadjacency,'on'),
+	md=adjacency(md);
+else
+	disp('skipping adjacency matrix computation as requested in the options');
+end
+
+if strcmpi(package,'chaco'),
+
+	if strcmpi(vectortype,'element')
+		error(['partitioner error message: package ' package ' does not allow element partitions.']);
+	else
+
+		%  default method (from chaco.m)
+		method=[1 1 0 0 1 1 50 0 .001 7654321]';
+		method(1)=3;    %  global method (3=inertial (geometric))
+		method(3)=0;    %  vertex weights (0=off, 1=on)
+
+		%specify bisection
+		method(6)=getfieldvalue(options,'section');%  ndims (1=bisection, 2=quadrisection, 3=octasection)
+
+		%are we using weights? 
+		if strcmpi(getfieldvalue(options,'weighting'),'on'),
+			weights=floor(md.qmu.vertex_weight/min(md.qmu.vertex_weight));
+			method(3)=1;
+		else 
+			weights=[];
+		end
+
+		%  partition into nparts
+		if isa(md.mesh,'mesh2d'),
+			part=Chaco(md.qmu.adjacency,weights,[],md.mesh.x,md.mesh.y,zeros(md.mesh.numberofvertices,1),method,npart,[])'+1; %index partitions from 1 up. like metis.
+		else
+			part=Chaco(md.qmu.adjacency,weights,[],md.mesh.x, md.mesh.y,md.mesh.z,method,npart,[])'+1; %index partitions from 1 up. like metis.
+		end
+
+	end
+
+elseif strcmpi(package,'scotch'),
+
+	if strcmpi(vectortype,'element')
+		error(['partitioner error message: package ' package ' does not allow element partitions.']);
+	else
+		%are we using weights? 
+		if strcmpi(getfieldvalue(options,'weighting'),'on'),
+			weights=floor(md.qmu.vertex_weight/min(md.qmu.vertex_weight));
+		else
+			weights=[];
+		end
+		maptab=Scotch(md.qmu.adjacency,[],weights,[],'cmplt',[npart]);
+
+		part=maptab(:,2)+1;%index partitions from 1 up. like metis.
+	end
+
+elseif strcmpi(package,'linear'),
+
+	if strcmpi(vectortype,'element')
+		part=1:1:md.mesh.numberofelements;
+		disp('Linear partitioner requesting partitions on elements');
+	else
+		part=1:1:md.mesh.numberofvertices;
+	end
+
+elseif strcmpi(package,'metis'),
+
+	if strcmpi(vectortype,'element')
+		error(['partitioner error message: package ' package ' does not allow element partitions.']);
+	else
+		[element_partitioning,part]=MeshPartition(md,md.qmu.numberofpartitions);
+	end
+
+else
+
+	error(['partitioner error message: could not find ' package ' partitioner']);
+	help partitioner
+end
+
+%extrude if we are in 3D:
+if dimension(md.mesh)==3,
+	md3d.qmu.vertex_weight=md.qmu.vertex_weight;
+	md3d.qmu.adjacency=md.qmu.adjacency;
+	md=md3d;
+	if strcmpi(vectortype,'element')
+		part=project3d(md,'vector',part','type','element');
+	else
+		part=project3d(md,'vector',part','type','node');
+	end
+end
+
+if size(part,1)==1
+	part=part';
+end
+
+%output 
+partitionvector=part;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/partition/partitioner.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/partition/partitioner.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/partition/partitioner.py	(revision 27955)
@@ -0,0 +1,133 @@
+import copy
+
+import numpy as np
+
+from adjacency import *
+from Chaco import *
+from mesh2d import *
+from MeshPartition import *
+from pairoptions import *
+from project3d import *
+
+
+def partitioner(md, *args):
+    '''
+    PARTITIONER - partition mesh
+
+        List of options to partitioner:
+            package: 'chaco', 'metis', or 'scotch'
+            npart: number of partitions
+            weighting: 'on' or 'off': default off
+            section: 1 by defaults(1=bisection, 2=quadrisection, 3=octasection)
+            recomputeadjacency: 'on' by default (set to 'off' to compute existing one)
+            type: 'node' or 'element' partition vector (default to 'node')
+            Output: partitionvector: the partition vector
+
+        Usage:
+            partitionvector, md = partitioner(md, 'package', 'chaco', 'npart', 100, 'weighting', 'on')
+    '''
+
+    #get options:
+    options = pairoptions(*args)
+
+    #set defaults
+    package = options.getfieldvalue('package', 'chaco')
+    npart = options.getfieldvalue('npart', 10)
+    weighting = options.getfieldvalue('weighting', 'on')
+    section = options.getfieldvalue('section', 1)
+    recomputeadjacency = options.getfieldvalue('recomputeadjacency', 'on')
+    vectortype = options.getfieldvalue('type', 'node')
+
+    # Python only: short-circuit
+    if vectortype == 'element' and not package == 'linear':
+        raise RuntimeError('partitioner error message: package {} does not allow element partitions.'.format(package))
+
+    if md.mesh.dimension() == 3:
+        #partitioning essentially happens in 2D. So partition in 2D, then
+        #extrude the partition vector vertically.
+        md3d = copy.deepcopy(md) # save for later
+        md.mesh.elements = md.mesh.elements2d
+        md.mesh.x = md.mesh.x2d
+        md.mesh.y = md.mesh.y2d
+        md.mesh.numberofvertices = md.mesh.numberofvertices2d
+        md.mesh.numberofelements = md.mesh.numberofelements2d
+        md.qmu.vertex_weight = []
+        md.mesh.vertexconnectivity = []
+        recomputeadjacency = 'on'
+
+    #adjacency matrix if needed:
+    if recomputeadjacency == 'on':
+        md = adjacency(md)
+    else:
+        print('skipping adjacency matrix computation as requested in the options')
+
+    if package == 'chaco':
+        if vectortype == 'element':
+            raise RuntimeError('partitioner error message: package {} does not allow element partitions.'.format(package))
+        else:
+            # default method (from chaco.m)
+            method = np.array([1, 1, 0, 0, 1, 1, 50, 0, 0.001, 7654321]).conj().transpose()
+            method[0] = 3  #  global method (3 = inertial (geometric))
+            method[2] = 0  #  vertex weights (0 = off, 1 = on)
+
+            #specify bisection
+            method[5] = section  #  ndims (1 = bisection, 2 = quadrisection, 3 = octasection)
+
+            #are we using weights?
+            if weighting == 'on':
+                weights = np.floor(md.qmu.vertex_weight / min(md.qmu.vertex_weight))
+                method[2] = 1
+            else:
+                weights = []
+
+            #method = method.reshape(-1, 1)  # transpose to 1x10 instead of 10
+
+            #  partition into nparts
+            if isinstance(md.mesh, mesh2d):
+                part = Chaco(md.qmu.adjacency, weights, np.array([]), md.mesh.x, md.mesh.y, np.zeros((md.mesh.numberofvertices, 1)), method, npart, np.array([]))[0].conj().transpose() + 1 #index partitions from 1 up. like metis.
+            else:
+                part = Chaco(md.qmu.adjacency, weights, np.array([]), md.mesh.x, md.mesh.y, md.mesh.z, method, npart, np.array([]))[0].conj().transpose() + 1 #index partitions from 1 up. like metis.
+    elif package == 'scotch':
+        if vectortype == 'element':
+            raise RuntimeError('partitioner error message: package %s does not allow element partitions.' % package)
+        else:
+            #are we using weights?
+            if m.strcmpi(options.getfieldvalue('weighting'), 'on'):
+                weights = np.floor(md.qmu.vertex_weight / min(md.qmu.vertex_weight))
+            else:
+                weights = []
+            maptab = Scotch(md.qmu.adjacency, [], weights, [], 'cmplt', [npart])
+
+            part = maptab[:, 1] + 1 #index partitions from 1 up. like metis.
+
+    elif package == 'linear':
+        if vectortype == 'element':
+            part = np.arange(1, 1 + md.mesh.numberofelements, 1)
+            print('Linear partitioner requesting partitions on elements')
+        else:
+            part = np.arange(1, 1 + md.mesh.numberofvertices, 1)
+
+    elif package == 'metis':
+        if vectortype == 'element':
+            raise RuntimeError('partitioner error message: package %s does not allow element partitions.' % package)
+        else:
+            [element_partitioning, part] = MeshPartition(md, md.qmu.numberofpartitions)
+
+    else:
+        raise RuntimeError('partitioner error message: could not find {} partitioner'.format(package))
+
+    #extrude if we are in 3D:
+    if md.mesh.dimension() == 3:
+        md3d.qmu.vertex_weight = md.qmu.vertex_weight
+        md3d.qmu.adjacency = md.qmu.adjacency
+        md = copy.deepcopy(md3d)
+        if vectortype == 'element':
+            part = project3d(md, 'vector', part.conj().transpose(), 'type', 'element')
+        else:
+            part = project3d(md, 'vector', part.conj().transpose(), 'type', 'node')
+
+    if part.shape[0] == 1:
+        part = part.conj().transpose()
+
+    # Output
+    return part, md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/applyoptions.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/applyoptions.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/applyoptions.js	(revision 27955)
@@ -0,0 +1,367 @@
+'use strict';
+
+function applyoptions(md, data, options, canvas) {
+	//APPLYOPTIONS - apply colobar, text, cloud, and expdisp options to current plot
+	//
+	//   Usage:
+	//      applyoptions(md, data, options)
+	//
+	//   See also: PLOTMODEL, PARSE_OPTIONS
+
+	//{{{ colorbar
+	let gl = canvas.gl;
+	
+	if (options.getfieldvalue('colorbar', false)) {
+		//{{{ Create colorbar labels
+		let cAxis = options.getfieldvalue('caxis');
+		let labels = [];
+		let divisions = options.getfieldvalue('colorbarnticks', 6);
+		let cAxisDelta = cAxis[1] - cAxis[0];
+		let precision = options.getfieldvalue('colorbarprecision', 3);
+		let format = options.getfieldvalue('colorbarformat', 'f').toLowerCase();
+		if (options.getfieldvalue('log','off') !== 'off') {
+			for (let i = divisions; i >= 0; i--) {
+				let scale = (Math.log10(cAxis[1]) - Math.log10(cAxis[0])) / Math.log10(options.getfieldvalue('log', 10));
+				if (format === 'f') {
+					labels[i] = (Math.pow(options.getfieldvalue('log', 10), Math.log10(cAxis[0]) / Math.log10(options.getfieldvalue('log', 10)) + scale * (divisions - i) / divisions)).toFixed(precision);
+				} else if (format === 'e') {
+					labels[i] = (Math.pow(options.getfieldvalue('log', 10), Math.log10(cAxis[0]) / Math.log10(options.getfieldvalue('log', 10)) + scale * (divisions - i) / divisions)).toPrecision(precision);
+				} else {
+					labels[i] = (Math.pow(options.getfieldvalue('log', 10), Math.log10(cAxis[0]) / Math.log10(options.getfieldvalue('log', 10)) + scale * (divisions - i) / divisions)).toFixed(precision);
+				}
+			}
+		} else {
+			for (let i = divisions; i >= 0; i--) {
+				if (format === 'f') {
+					labels[i] = (cAxisDelta * (divisions - i) / divisions + cAxis[0]).toFixed(precision);
+				} else if (format === 'e') {
+					labels[i] = (cAxisDelta * (divisions - i) / divisions + cAxis[0]).toPrecision(precision);
+				} else {
+					labels[i] = (cAxisDelta * (divisions - i) / divisions + cAxis[0]).toFixed(precision);
+				}
+			}
+		} //}}}
+		//{{{ Initialize colorbar canvas
+		let cCanvasId = options.getfieldvalue('colorbarid', options.getfieldvalue('canvasid') + ('-colorbar-canvas'));
+		let cCanvasIdBase = cCanvasId.substring(0, cCanvasId.lastIndexOf('-canvas'));
+		let cCanvas = document.getElementById(cCanvasId);
+		let cWidth = cCanvas.width * options.getfieldvalue('colorbarwidth', 1);
+		let cHeight = cCanvas.height * options.getfieldvalue('colorbarheight', 1);
+		let cContext = cCanvas.getContext('2d');
+		let cMap = options.getfieldvalue('colormap', 'amp');
+		
+		// If value of cMap is of type array, assume we have a custom colorbar; otherwise, look up colormap by name from global letiable "colorbars"
+		let colorbar = null;
+		
+		if (vesl.arrays.isArray(cMap)) {
+			colorbar = cMap;
+		} else {
+    		for (let colormap in colorbars) {
+        		if (colormap === cMap) {
+			        colorbar = colorbars[cMap];
+			        break;
+                }
+            }
+            
+            if (colorbar === null) {
+                for (let colormap in cmoceanColormaps) {
+            		if (colormap === cMap) {
+    			        colorbar = cmoceanColormaps[cMap];
+    			        break;
+                    }
+                }
+            }
+		}
+		
+		let gradient = cContext.createLinearGradient(0, 0, 0, cHeight);
+		//}}}
+		//{{{ Draw colorbar gradient
+		// TODO: Allow for passing the opacity in as a fourth value of each array of a colormap?
+		let applyOpacityToColorbar  = options.getfieldvalue('applyOpacityToColorbar', false);
+		let color                   = null;
+		let background              = options.getfieldvalue('colorbarBackground', null);
+		let offset                  = 1 / (colorbar.length - 1) / 2;
+		let opacity                 = options.getfieldvalue('opacity', 1.0);
+		let position                = null;
+		let scaling                 = 1 - 2 * offset;
+		
+		if (!applyOpacityToColorbar) {
+    		opacity = 1.0;
+		}
+		
+		if (background !== null) {
+    		background = [background[0] * 255, background[1] * 255, background[2] * 255];
+    		$('#' + cCanvasId).css('background', 'rgba(' + background.toString() + ', 1.0');
+		}
+		
+		for (let i = 0; i < colorbar.length; i++) {
+			color = colorbar[colorbar.length - i - 1];
+			color = [Math.round(color[0] * 255), Math.round(color[1] * 255), Math.round(color[2] * 255)];
+			position = (i / (colorbar.length - 1) * scaling) + offset;
+			gradient.addColorStop(position, 'rgba(' + color.toString() + ', ' + opacity + ')');
+		}
+		
+		cContext.clearRect(0, 0, cWidth, cHeight);
+		cContext.beginPath();
+		cContext.fillStyle = gradient;
+		cContext.fillRect(0, 0, cWidth, cHeight);
+		//}}}
+		//{{{ Draw colorbar border
+		cContext.beginPath();
+		cContext.lineWidth = '1';
+		cContext.strokeStyle=options.getfieldvalue('colorbarfontcolor','black');
+		cContext.rect(0, 0, cWidth, cHeight);
+		cContext.stroke();
+		//}}}
+		//{{{ Draw colorbar labels
+		let cLabelsId = cCanvasIdBase + '-labels';
+		let cLabels = $('#' + cLabelsId);
+		let cLabelString = '';
+		let x, y;
+		cLabels.empty();
+		for (let i = 0; i <= divisions; i++) {
+			y = (i + 0.5) / (divisions + 1) * cHeight;
+			x = 0.2 * cWidth;
+			cLabelString += '<li><span>' + labels[i] + '</span></li>';
+			cContext.beginPath();
+			cContext.moveTo(0, y);
+			cContext.lineTo(x, y);
+			cContext.moveTo(cWidth - x, y);
+			cContext.lineTo(cWidth, y);
+			cContext.stroke();
+		}
+		cLabels.append(cLabelString);
+		//}}}
+		//{{{ Draw colorbar title
+		let cTitleId = cCanvasIdBase + '-heading';
+		let cTitle = $('#' + cTitleId);
+		if (options.exist('colorbartitle')) { cTitle.html(options.getfieldvalue('colorbartitle')); }
+		//}}}
+		//{{{ Setup texture/alpha canvases
+		let $canvas 	= $(canvas);
+		let tCanvasId 	= options.getfieldvalue('texturecanvasid', 'texturecanvas');
+		let aCanvasId 	= options.getfieldvalue('alphacanvasid', 'alphacanvas');
+		let tCanvas 	= document.getElementById(tCanvasId);
+		let aCanvas 	= document.getElementById(aCanvasId);
+		
+		if (tCanvas == null) {
+			$('<canvas id="' + tCanvasId + '" width="256" height="256" style="display: none;"></canvas>').insertAfter($canvas);
+			tCanvas = document.getElementById(tCanvasId);
+		}
+		
+		if (aCanvas == null) {
+			$('<canvas id="' + aCanvasId + '" width="256" height="256" style="display: none;"></canvas>').insertAfter($canvas);
+			aCanvas = document.getElementById(aCanvasId);
+		}
+	
+		//Set up canvas drawing contexes and gradients.
+		let tContext = tCanvas.getContext('2d');
+		let aContext = aCanvas.getContext('2d');
+		let tGradient = tContext.createLinearGradient(0, 0, 0, 256);
+		let aGradient = aContext.createLinearGradient(0, 0, 0, 256);
+		
+		//Determine where in gradient to start unit mesh transparency
+		let maskAlphaEnabled = options.getfieldvalue('maskAlphaEnabled', false);
+		let maskAlphaTolerance = options.getfieldvalue('maskAlphaTolerance', 0.1);
+		let maskAlphaValue = options.getfieldvalue('maskAlphaValue', 1.1);
+		let maskAlphaUseColor = options.getfieldvalue('maskAlphaUseColor', false);
+		let maskAlphaColor = options.getfieldvalue('maskAlphaColor', 'rgba(0.0, 0.0, 255, 1.0)');
+		let alphaValue = (maskAlphaValue - cAxis[0]) / cAxisDelta;
+		
+		//Apply transparency to alpha map that enables alpha to be read from texture, and to actual texture alpha.
+		for (let i = 0; i < colorbar.length; i++) {
+			color = colorbar[colorbar.length - i - 1];
+			color = [Math.round(color[0] * 255), Math.round(color[1] * 255), Math.round(color[2] * 255)];
+			let colorStop = i / (colorbar.length - 1);
+			if (maskAlphaEnabled && (colorStop > 1 - alphaValue || colorStop == colorbar.length - 1)) {
+				if (maskAlphaUseColor) {
+					tGradient.addColorStop(colorStop, maskAlphaColor);
+					aGradient.addColorStop(colorStop, 'rgb(255, 255, 255)');
+				} else {
+					tGradient.addColorStop(colorStop, 'rgba(' + color.toString() + ', 0.0)');
+					aGradient.addColorStop(colorStop, 'rgb(0, 0, 0)');
+				}
+			} else {
+				tGradient.addColorStop(colorStop, 'rgba(' + color.toString() + ', 1.0)');
+				aGradient.addColorStop(colorStop, 'rgb(255, 255, 255)');
+			}
+		}
+		
+		//Draw gradients to canvaes.
+		tContext.fillStyle = tGradient;
+		aContext.fillStyle = aGradient;
+		tContext.fillRect(0, 0, 256, 256);
+		aContext.fillRect(0, 0, 256, 256);
+		
+		//Allow for special texture colors, drawing each color in equal width vertical rectangles. The last rectanglar section is reserved for the colormap.
+		if (options.exist('maskregion')) {
+			let maskObject = options.getfieldvalue('maskregion',{'enabled':false});
+			if (maskObject.enabled && !vesl.helpers.isEmptyOrUndefined(maskObject.colors)) {
+				let x = 0;
+				let sections = Object.keys(maskObject.colors).length + 1;
+				let size = 256;
+				let width = Math.floor(1 / sections * size);
+				for (let color in maskObject.colors) {
+					tContext.fillStyle = maskObject.colors[color];
+					tContext.fillRect(x++ * width, 0, width, size);
+				}
+			}
+		}
+		
+		//Read canvases as images, and load as textures in Three.js
+		let tURL            = tCanvas.toDataURL();
+		let aURL            = aCanvas.toDataURL();
+		let textureMap      = new THREE.TextureLoader().load(tURL);
+		let alphaMap        = new THREE.TextureLoader().load(aURL);
+		let unitOptions 	= options.getfieldvalue('unitOptions', {'name' : 'unit'});
+		let unitName 		= unitOptions.name;
+		let unitSceneNode 	= canvas.unitNodes[unitName].sceneNode;
+		unitSceneNode.material.map          = textureMap;
+		unitSceneNode.material.emissiveMap  = textureMap;
+		unitSceneNode.material.color        = new THREE.Color(0xffffff);
+		unitSceneNode.material.needsUpdate  = true;
+		
+		//Only apply alpha map if enabled.
+		if (maskAlphaEnabled) {
+			unitSceneNode.material.alphaMap = alphaMap;
+		}
+	} //}}}
+	//}}}
+	//{{{ Data marker
+	// TODO: Default parameters are already being handled by /js/vesl/DataMarker.js::constructor, so perhaps we should be initializing this elsewhere and/or by some other manner	
+	if (vesl.helpers.isEmptyOrUndefined(canvas.dataMarker)) { // Only define data marker once
+		let dataMarker 			= {};
+		let dataMarkerOptions 	= options.getfieldvalue('dataMarker', {});
+		
+		dataMarker = {
+			enabled: defaultFor(dataMarkerOptions.enabled, false)
+		};
+		
+		// Only initialize data marker object if we have enabled data markers for this canvas
+		if (dataMarker.enabled) {
+			dataMarker.object = new vesl.DataMarker(
+				{
+					canvas 			: canvas,
+					hasMarker 		: defaultFor(dataMarkerOptions.hasMarker, true),
+					markerImgPath 	: defaultFor(dataMarkerOptions.markerImgPath, '/canvas/data-markers/data-marker.svg'),
+					hasTooltip		: defaultFor(dataMarkerOptions.hasTooltip, false),
+					tooltipFormat	: defaultFor(dataMarkerOptions.tooltipFormat, ''),
+					tooltipFields	: defaultFor(dataMarkerOptions.tooltipFields, null),
+					width			: defaultFor(dataMarkerOptions.width, 32),
+					height			: defaultFor(dataMarkerOptions.height, 32)
+				}
+			);
+		}
+		
+		canvas.dataMarker = dataMarker;
+	}
+	//}}}
+	//contours
+	if (options.exist('contourlevels')) {
+		plot_contour(md,data,options,canvas);
+	}
+} //}}}
+function drawGroundingLines(md, canvas, options, renderObject, lines, colors) { //{{{
+	let renderObjects = options.getfieldvalue('render',{});
+	let state = canvas.state;
+	let scene = state.scene;
+	
+	let group = scene.getObjectByName('groundingLines');
+	if (group !== undefined) {
+		scene.remove(group); //Remove old group if already exists
+	}
+	group = new THREE.Group();
+	group.name = 'groundingLines';
+	
+	//Plot multiple grounding lines, each consisting of multiple polygons. 
+	for (let i = 0; i < lines.length; i++) {
+		let groundingLine = lines[i]; //of type Proxy (not object or array), thus must iterate without length attribute
+		let color = processColor(colors[i]);
+		let x = [];
+		let y = [];
+		let z = [];
+		//In order to show polygons correctly, must convert from line strip to line segments
+		for (let j in groundingLine) {
+			let polygon = groundingLine[j]
+			let lineStripX = polygon['x'];
+			let lineStripY = polygon['y'];
+			let lineStripZ = polygon['z'];
+			let lineSegmentsX = [lineStripX[0]];
+			let lineSegmentsY = [lineStripY[0]];
+			let lineSegmentsZ = [lineStripZ[0]];
+			//Must push same coordinates as end of previous segment and beginning of next segment
+			for (let k = 1; k < lineStripX.length - 1; k++) {
+				lineSegmentsX.push(lineStripX[k], lineStripX[k]);
+				lineSegmentsY.push(lineStripY[k], lineStripY[k]);
+				lineSegmentsZ.push(lineStripZ[k], lineStripZ[k]);
+			}
+			//Cap off last coordinate
+			lineSegmentsX.push(lineStripX[lineStripX.length - 1]);
+			lineSegmentsY.push(lineStripY[lineStripY.length - 1]);
+			lineSegmentsZ.push(lineStripZ[lineStripZ.length - 1]);
+			//Add polygon coordinates to existing groundingLine
+			x = x.concat(lineSegmentsX);
+			y = y.concat(lineSegmentsY);
+			if (renderObject.followsBed) {
+				z = z.concat(lineSegmentsZ);
+			} else {
+				z = z.concat(NewArrayFill(lineSegmentsX.length, 10 * i));
+			}
+		}
+		z = ArrayScale(z, options.getfieldvalue('heightscale', 1));
+		let vertices = [x, y, z];
+		//console.log('ArrayMin(x):', ArrayMin(x), 'ArrayMax(x):', ArrayMax(x), 'ArrayMin(y):', ArrayMin(y), 'ArrayMax(y):', ArrayMax(y));
+			
+		let node = new Node(
+			'canvas', canvas,
+			'options', options,
+			'renderObject', renderObject,
+			'name', 'groundingLine_' + String(i),
+			'shaderName', 'lines',
+			//'dashed', dashed,
+			'depthTest', false,
+			'diffuseColor', color,
+			'lineWidth', renderObject.lineWidth,
+			//'lineWidth', options.getfieldvalue('linewidth', 3),
+			'scale', [renderObject.scale, renderObject.scale, renderObject.scale]
+		);
+		node.patch('Vertices', vertices, 'group', group, 'ViewReset', false);
+	}
+	scene.add(group);
+	return group;
+} //}}}
+function drawText(state, options, textLabels) { //{{{
+	let camera = state.camera;
+	let overlayCanvas = state.overlayCanvas;
+	let ctx = overlayCanvas.getContext('2d');
+	let widthHalf = overlayCanvas.width / 2
+	let heightHalf = overlayCanvas.height / 2;
+	
+	for (let i = 0; i < textLabels.length; i++) {
+		let textLabel = textLabels[i];
+		let position = textLabel.position.clone();
+		let text = textLabel.text;
+		
+		//Project world coordinates to screenspace coordinates
+		position.project(camera);
+		let x = (position.x * widthHalf) + widthHalf;
+		let y = -(position.y * heightHalf) + heightHalf;
+		
+		ctx.font = 'bold ' + String(options.getfieldvalue('colorbarfontsize', 22))+'px Arial Black, sans-serif';
+		ctx.fillStyle = options.getfieldvalue('colorbarfontcolor','black');
+		ctx.strokeStyle = 'white';
+		ctx.textAlign = 'center';
+		ctx.textBaseline = 'middle';
+		ctx.fillText(text, x, y);
+		ctx.strokeText(text, x, y);
+	}
+} //}}}
+function processColor(color) { //{{{
+	//Update the diffuse color with an RGB color name or vec4 containing r, g, b, and opacity values from 0.0 to 1.0
+	if (typeof color === 'string') {
+		color = new THREE.Color(color);
+	} else if (Array.isArray(color)) {
+		color = new THREE.Color().fromArray(color);
+	}
+	return color;
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/applyoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/applyoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/applyoptions.m	(revision 27955)
@@ -0,0 +1,623 @@
+function applyoptions(md,data,options)
+%APPLYOPTIONS - apply the options to current plot
+%
+%   Usage:
+%      applyoptions(md,data,options)
+%
+%   See also: PLOTMODEL, PARSE_OPTIONS
+
+%fontsize
+fontsize=getfieldvalue(options,'fontsize',14);
+
+%fontweight
+fontweight=getfieldvalue(options,'fontweight','normal');
+
+%title
+if exist(options,'title')
+	titlevalue=getfieldvalue(options,'title');
+	if iscell(titlevalue),
+		title(titlevalue,'FontSize',fontsize,'FontWeight',fontweight);
+	else
+		if ~isnan(titlevalue),
+			title(titlevalue,'FontSize',fontsize,'FontWeight',fontweight);
+		end
+	end
+end
+
+%xlabel, ylabel and zlabel
+if exist(options,'xlabel');
+	xlabel(getfieldvalue(options,'xlabel'),'FontSize',fontsize,'FontWeight',fontweight);
+end
+if exist(options,'ylabel');
+	ylabel(getfieldvalue(options,'ylabel'),'FontSize',fontsize,'FontWeight',fontweight);
+end
+if exist(options,'zlabel');
+	zlabel(getfieldvalue(options,'zlabel'),'FontSize',fontsize,'FontWeight',fontweight);
+end
+
+%xticks, yticks and zticks
+if exist(options,'xtick'), set(gca,'XTick',getfieldvalue(options,'xtick')); end
+if exist(options,'ytick'), set(gca,'YTick',getfieldvalue(options,'ytick')); end
+if exist(options,'ztick'), set(gca,'ZTick',getfieldvalue(options,'ztick')); end
+
+%view 
+if dimension(md.mesh)==3 && ~(exist(options,'layer') || exist(options,'depthaverage'))
+	view(getfieldvalue(options,'view',3));
+else
+	view(getfieldvalue(options,'view',2));
+end
+
+%axis
+set(gca,'FontSize',getfieldvalue(options,'axisfontsize',fontsize));;
+if exist(options,'axis')
+	axisopts = getfieldvalue(options,'axis');
+	if ischar(axisopts) & any(axisopts==' ');
+		axisopts = strsplit(axisopts);
+		axis(axisopts{:});
+	else
+		axis(axisopts);
+	end
+else
+	if strcmp(domaintype(md.mesh),'3D'),
+		if ~(exist(options,'layer') || exist(options,'depthaverage'))
+			axis auto tight
+		else
+			axis tight equal
+		end
+	elseif strcmp(domaintype(md.mesh),'2Dvertical'),
+		axis auto tight
+	elseif strcmp(domaintype(md.mesh),'3Dsurface'),
+		axis auto tight
+
+	elseif strcmp(domaintype(md.mesh),'2Dhorizontal'),
+		axis tight equal;
+	else
+		error('type of domain not supported');
+	end
+end
+
+%box
+if exist(options,'box')
+	box(getfieldvalue(options,'box'));
+end
+
+%xlim, ylim and zlim
+if exist(options,'xlim');
+	xlim(getfieldvalue(options,'xlim'));
+end
+if exist(options,'ylim');
+	ylim(getfieldvalue(options,'ylim'));
+end
+if exist(options,'zlim');
+	zlim(getfieldvalue(options,'zlim'));
+end
+
+%latlon
+%Must be done here (before xlim and ylim??) so that it uses the same xlim and ylim as plot_overlay
+%these are changed by axis that follows
+if ~strcmpi(getfieldvalue(options,'latlon','off'),'off')
+	latlonoverlay(md,options);
+end
+
+%Basinzoom
+if exist(options,'basin');
+	basinzoom(options);
+end
+
+%Zoom
+if exist(options,'zoom');
+	zoom(getfieldvalue(options,'zoom',2));
+end
+
+%ShowBasins
+if strcmpi(getfieldvalue(options,'showbasins','off'),'on')
+	showbasins(options);
+end
+
+%Caxis
+if exist(options,'caxis'),
+	caxis(getfieldvalue(options,'caxis'));
+end
+
+%shading
+if exist(options,'shading'),
+	shading(getfieldvalue(options,'shading'));
+end
+
+%grid
+if exist(options,'grid'),
+	if strcmpi(getfieldvalue(options,'grid'),'on'),
+		grid on;
+	end
+end
+
+%colormap
+c = getcolormap(options);
+h = colormap(gca,c);
+
+%wrapping
+if exist(options,'wrapping'),
+	if ~exist(options,'colormap'),
+		h=jet;
+	end
+	colormap(repmat(h,getfieldvalue(options,'wrapping',1),1));
+end
+
+%colorbar
+if getfieldvalue(options,'colorbar',1)==1,
+	if exist(options,'colorbarcornerposition'),
+		c=colorbar(getfieldvalue(options,'colorbarcornerposition'),'peer',gca);
+	elseif exist(options,'colorbarpos') & ischar(getfieldvalue(options,'colorbarpos')),
+		c=colorbar(getfieldvalue(options,'colorbarpos'));
+	else 
+		c=colorbar('peer',gca);
+	end
+	set(c,'FontSize',getfieldvalue(options,'colorbarfontsize',fontsize),'YColor',getfieldvalue(options,'FontColor','k'));
+	if exist(options,'wrapping')
+		lim=get(c,'Ylim');
+		lim=[lim(1) lim(1)+(lim(2)-lim(1))/getfieldvalue(options,'wrapping')];
+		set(c,'Ylim',lim);
+	end
+	if exist(options,'colorbarpos') & isnumeric(getfieldvalue(options,'colorbarpos')),
+		set(c,'Position',getfieldvalue(options,'colorbarpos'));
+	end
+	if exist(options,'log'),
+		nlab=length(get(c,'YTick'));
+		logvalue=getfieldvalue(options,'log');
+
+		scaleminmax=caxis;
+		Min=min(scaleminmax);
+		Max=max(scaleminmax);
+		set(c,'YLim',[Min Max]); % set colorbar limits
+		set(c,'YTick',linspace(Min,Max,nlab));     % set tick mark locations
+
+		labels = cell(1,nlab);
+		tick_vals = linspace(Min,Max,nlab);
+		tick_vals = exp(log(logvalue)*tick_vals);
+		warning off MATLAB:log:logOfZero;
+		for i = 1:nlab
+			labels{i} = sprintf('%-3.4g',round_ice(tick_vals(i),2));
+			%labels{i} = sprintf('%-.4g',round_ice(tick_vals(i),2));
+		end
+		warning on MATLAB:log:logOfZero;
+		set(c,'YTickLabel',labels);
+	end 
+ 	if exist(options,'cbYLim'); 
+		set(c,'YLim',getfieldvalue(options,'cbYLim'));
+	end
+	if exist(options,'colorbartitle'),
+		set(get(c,'title'),'FontSize',getfieldvalue(options,'colorbarfontsize',fontsize),'String',getfieldvalue(options,'colorbartitle'),...
+			'Color',getfieldvalue(options,'FontColor','k'));
+	end
+	if exist(options,'colorbarYLabel'),
+		set(get(c,'Ylabel'),'FontSize',getfieldvalue(options,'colorbarfontsize',fontsize),'String',getfieldvalue(options,'colorbarYLabel'),...
+			'Color',getfieldvalue(options,'FontColor','k'));
+	end
+	if exist(options,'colorbarwidth'),
+		posaxes=get(gca,'Position');
+		alpha=getfieldvalue(options,'colorbarwidth',1);
+		position=get(c,'Position');
+		dx=position(3);
+		newdx=dx*alpha;
+		position(1)=position(1)+(dx-newdx)/2;
+		position(3)=newdx;
+		set(c,'Position',position);
+		set(gca,'Position',posaxes);
+	end
+	if exist(options,'colorbarheight'),
+		posaxes=get(gca,'Position');
+		alpha=getfieldvalue(options,'colorbarheight',1);
+		position=get(c,'Position');
+		dy=position(4);
+		newdy=dy*alpha;
+		position(2)=position(2)+(dy-newdy)/2;
+		position(4)=newdy;
+		set(c,'Position',position);
+		set(gca,'Position',posaxes);
+	end
+	if exist(options,'cbYTickLabel');
+		tick_vals=getfieldvalue(options,'cbYTickLabel');
+		if ~isnumeric(tick_vals) & strcmp(tick_vals,'on')
+			tick_vals=get(c,'YTick')';
+			if exist(options,'log')
+				logval= getfieldvalue(options,'log');
+				for i= 1:numel(tick_vals)
+					tick_vals(i)= logval^(tick_vals(i));
+				end
+			elseif numel(tick_vals) == 3
+				tick_vals=[tick_vals(1); mean(tick_vals(1:2)); tick_vals(2); ...
+					mean(tick_vals(2:3)); tick_vals(3)];
+				set(c,'YTick',tick_vals);
+			end
+		else
+			if exist(options,'log')
+				logvalue=getfieldvalue(options,'log');
+				set(c,'YTick',log(tick_vals)./log(logvalue));
+			else
+				set(c,'YTick',tick_vals);
+			end
+		end
+		labels = cell(1,numel(tick_vals));
+		for i = 1:numel(tick_vals)
+			labels{i} = num2str(tick_vals(i));
+		end
+		set(c,'YTickLabel',labels);
+	end
+
+elseif getfieldvalue(options,'colorbar',1)==0,
+	colorbar('off');
+else
+	%do nothing
+end
+
+%area
+if exist(options,'area'),
+	antzoom(getfieldvalue(options,'area'));
+end
+
+%expdisp
+if exist(options,'expdisp'),
+	filename=(getfieldvalue(options,'expdisp'));
+	style=(getfieldvalue(options,'expstyle'));
+	linewidth=(getfieldvalue(options,'linewidth',1));
+	for i=1:length(getfieldvalue(options,'expdisp')),
+		filenamei=filename{i};
+		stylei=style{i};
+		if length(linewidth)==1,
+			linewidthi=linewidth;
+		else
+			linewidthi=linewidth{i};
+		end
+		expdisp(filenamei,'linestyle',stylei,'linewidth',linewidthi,'multiplier',getfieldvalue(options,'unit',1));
+	end
+end
+
+%shpdisp
+if exist(options,'shpdisp'),
+	filename=(getfieldvalue(options,'shpdisp'));
+	style=(getfieldvalue(options,'shpstyle',{'r.-'}));
+	linewidth=(getfieldvalue(options,'linewidth',1));
+	for i=1:length(getfieldvalue(options,'shpdisp')),
+		filenamei=filename{i};
+		stylei=style{i};
+		if length(linewidth)==1,
+			linewidthi=linewidth;
+		else
+			linewidthi=linewidth{i};
+		end
+		%shpdisp(filenamei,'linestyle',stylei,'linewidth',linewidthi,'multiplier',getfieldvalue(options,'unit',1));
+		shpdisp(filenamei,1,stylei,linewidthi,getfieldvalue(options,'unit',1));
+	end
+end
+if exist(options,'contours'),
+
+	hold on;
+	contours=getfieldvalue(options,'contours');
+	style=getfieldvalue(options,'contourstyle',{'-'});
+	linewidth=getfieldvalue(options,'linewidth',{1});
+	color=getfieldvalue(options,'contourcolor',{'r'});
+	contourheight=getfieldvalue(options,'contourheight',1); 
+
+	radius=md.solidearth.planetradius;
+	ratio=1+(contourheight*1000/radius);
+
+	
+	if ~isa(contours,'cell'),
+		contours={contours};
+	end
+	nc=length(contours);
+	if ~isa(style,'cell'), error('contour style should be a cell array'); end
+	if ~isa(linewidth,'cell'), error('contour line width should be a cell array'); end
+	if ~isa(color,'cell'), error('contour color should be a cell array'); end
+
+	for i=1:length(contours),
+		ci=contours{i};
+		if length(style)==1, sti=style{1}; else sti=style{i}; end
+		if length(color)==1, coli=color{1}; else coli=color{i}; end
+		if length(linewidth)==1, li=linewidth{1}; else li=linewidth{i}; end
+
+		for j=1:length(ci),
+			cijx=ci(j).x*ratio;
+			cijy=ci(j).y*ratio;
+			cijz=ci(j).z*ratio;
+
+			plot3(cijx,cijy,cijz,'LineWidth',li,'LineStyle',sti,'Color',coli);
+		end
+	end
+
+end
+
+%shpdisp3d
+if exist(options,'shpdisp3d'),
+	filename=(getfieldvalue(options,'shpdisp3d'));
+	style=(getfieldvalue(options,'shpstyle',{'r.-'}));
+	linewidth=(getfieldvalue(options,'linewidth',1));
+	for i=1:length(getfieldvalue(options,'shpdisp3d')),
+		filenamei=filename{i};
+		stylei=style{i};
+		if length(linewidth)==1,
+			linewidthi=linewidth;
+		else
+			linewidthi=linewidth{i};
+		end
+		shpdisp3d(filenamei,'figure',1,'style',stylei,'linewidth',linewidthi);
+	end
+end
+
+%text (default value is empty, not NaN...)
+if exist(options,'text');
+	textstring=getfieldvalue(options,'text');
+	textweight=getfieldvalue(options,'textweight','b');
+	textsize=getfieldvalue(options,'textsize');
+	textcolor=getfieldvalue(options,'textcolor');
+	textposition=getfieldvalue(options,'textposition');
+	textrotation=getfieldvalue(options,'textrotation');
+	text3d=getfieldvalue(options,'text3d',0);
+	for i=1:length(getfieldvalue(options,'text'));
+		textstringi=textstring{i};
+		textweighti=textweight{i};
+		textsizei=textsize{i};
+		textcolori=textcolor{i};
+		textpositioni=textposition{i};
+		textrotationi=textrotation{i};
+		if ~text3d,
+			h=text(textpositioni(1),textpositioni(2),textstringi,'FontSize',textsizei,'FontWeight',textweighti,'Color',textcolori,'Rotation',textrotationi);
+		else
+			h=text(textpositioni(1),textpositioni(2),textpositioni(3),textstringi,'FontSize',textsizei,'FontWeight',textweighti,'Color',textcolori,'Rotation',textrotationi);
+		end
+		if strcmpi(getfieldvalue(options,'textclip','on'),'on'),
+			set(h,'Clipping','on'); %prevent text from appearing outside of the box
+		end
+	end
+end
+
+%north arrow
+if exist(options,'northarrow'),
+	northarrow(getfieldvalue(options,'northarrow'));
+end
+
+%curved arrow
+if exist(options,'curvedarrow'),
+	curvedoptions=getfieldvalue(options,'curvedarrow');
+	curvedarrow(curvedoptions{:});
+end
+
+%Scale ruler
+if exist(options,'scaleruler'),
+	scaleruler(options);
+end
+
+%streamlines
+if exist(options,'streamlines'),
+	plot_streamlines(md,options);
+end
+
+%contours
+if exist(options,'contourlevels'),
+	plot_contour(md,data,options);
+end
+
+%coastlines
+if (strcmpi(getfieldvalue(options,'coastlines','off'),'on') | ...
+	strcmpi(getfieldvalue(options,'coastlines','off'),'on'))
+	plot_coastlines(md.mesh,options);
+end
+
+%YTickLabel
+if exist(options,'yticklabel'),
+	set(gca,'YTickLabel',getfieldvalue(options,'YTickLabel'));
+end
+
+%XTickLabel
+if exist(options,'xticklabel'),
+	set(gca,'XTickLabel',getfieldvalue(options,'XTickLabel'));
+end
+
+%xtick
+if exist(options,'xtick'),
+	set(gca,'xtick',getfieldvalue(options,'xtick'));
+end
+
+%ytick
+if exist(options,'ytick'),
+	set(gca,'ytick',getfieldvalue(options,'ytick'));
+end
+
+%Axis positions
+if exist(options,'offsetaxispos'),
+	offset=getfieldvalue(options,'offsetaxispos');
+	P=get(gca,'pos');
+	P(1)=P(1)+offset(1);
+	P(2)=P(2)+offset(2);
+	P(3)=P(3)+offset(3);
+	P(3)=P(4)+offset(4);
+	set(gca,'pos',P);
+end
+if exist(options,'axispos'),
+	Axis=getfieldvalue(options,'axispos');
+	hold on
+	set(gca,'pos',Axis);
+end
+
+%showregion
+if strcmpi(getfieldvalue(options,'showregion','off'),'on'),
+	%Keep pointer of main axis
+	maingca=gca;
+	%get inset relative position (x,y,width,height)
+	insetpos=getfieldvalue(options,'insetpos',[0.02 0.70 0.18 0.18]);
+	%get current plos position
+	cplotpos=get(maingca,'pos');
+	%compute inset position
+	PosInset=[cplotpos(1)+insetpos(1)*cplotpos(3),cplotpos(2)+insetpos(2)*cplotpos(4), insetpos(3)*cplotpos(3), insetpos(4)*cplotpos(4)];
+	axes('pos',PosInset);
+	axis equal off
+	%box off
+	if md.mesh.epsg==3413,
+		A=expread('/u/astrid-r1b/ModelData/Exp/GreenlandBoxFront.exp');
+		[A.x A.y]=ll2xy(A.x,A.y,+1,45,70);
+		A.x = A.x(1:30:end);
+		A.y = A.y(1:30:end);
+	elseif md.mesh.epsg==3031,
+		A=expread('/u/astrid-r1b/ModelData/Exp/Antarctica.exp');
+	else
+		error('applyoptions error message: md.mesh.epsg not defined');
+	end
+	offset=3*10^4;
+	Ax=[min(A.x)-offset max(A.x)+offset];
+	Ay=[min(A.y)-offset max(A.y)+offset];
+	%if we are zooming on a basin, don't take the mesh for the boundaries!
+	if exist(options,'basin'),
+		[mdx mdy]=basinzoom(options);
+	elseif exist(options,'xlim') | exist(options,'ylim'),
+		mdx=getfieldvalue(options,'xlim');
+		mdy=getfieldvalue(options,'ylim');
+	else
+		mdx=[min(md.mesh.x)-offset max(md.mesh.x)+offset];
+		mdy=[min(md.mesh.y)-offset max(md.mesh.y)+offset];
+	end
+	line(A.x,A.y,ones(size(A.x)),'color','b');
+	patch([Ax(1)  Ax(2)  Ax(2)  Ax(1) Ax(1)],[Ay(1)  Ay(1)  Ay(2)  Ay(2) Ay(1)],[1 1 1],'EdgeColor',[0 0 0],'LineWidth',1,'FaceLighting','none')
+	patch([mdx(1) mdx(2) mdx(2) mdx(1)],[mdy(1) mdy(1) mdy(2) mdy(2)],ones(4,1),'EdgeColor',[0 0 0],'FaceColor','r','FaceAlpha',0.5)
+	colorbar('off');
+	%back to main gca
+	set(gcf,'CurrentAxes',maingca)
+end
+
+%flag edges of a partition
+%
+% TODO:
+% - Figure out how to expand string representing an object (e.g. 
+%	'md.qmu.variables.thickness.partition') to get the actual value *without* 
+%	using `eval` and like functions (md.('token').('token') works, but how do 
+%	we access md given the string 'md').
+if exist(options,'partition')
+	partition=getfieldvalue(options,'partition','');
+	if isvector(partition) & isnumeric(partition) % partition option is vector
+		% do nothing: we already have a partition vector
+	% elseif ischar(partition) & ~isempty(partition) % partition option is string
+	% 	% expand string
+	% 	partition=eval(partition);
+	% 	class(partition);
+	% 	if ~(isvector(partition) & isnumeric(partition))
+	% 		error('String passed to ''partition'' option does not represent a partition vector');
+	% 	end
+	else
+		error('If ''partition'' option is supplied, it should be a partition vector object');
+	end
+	mdp=md;
+	[xsegments ysegments]=flagedges(mdp.mesh.elements,mdp.mesh.x,mdp.mesh.y,partition);
+	xsegments=xsegments*getfieldvalue(options,'unit',1);
+	ysegments=ysegments*getfieldvalue(options,'unit',1);
+	color=getfieldvalue(options,'partitionedgescolor','r-');
+	linewidth=getfieldvalue(options,'linewidth',1);
+	hold on;
+	for i=1:length(xsegments),
+		if (isnumeric(color))
+			h=plot(xsegments(i,:),ysegments(i,:),'Color',color,'LineWidth',linewidth);
+		else
+			plot(xsegments(i,:),ysegments(i,:),color,'LineWidth',linewidth);
+		end
+	end
+end
+
+%Scatter
+if exist(options,'scatter')
+	data=getfieldvalue(options,'scatter');
+	hold on
+	plot_scatter(data(:,1),data(:,2),data(:,3),options);
+end
+
+%backgroundcolor
+set(gca,'color',getfieldvalue(options,'backgroundcolor','none'));
+
+%lighting
+if strcmpi(getfieldvalue(options,'light','off'),'on'),
+	set(gca,'FaceLighting','gouraud','FaceColor','interp','AmbientStrength',0.5);
+	light('Position',[0 0.1 0.1],'Style','infinite');
+end
+
+%cloud of points: 
+if exist(options,'cloud'),
+	field=getfieldvalue(options,'cloud');
+	x=field(:,1);
+	y=field(:,2);
+	%unit multiplier:
+	if exist(options,'unit'),
+		unit=getfieldvalue(options,'unit');
+		x=x*unit;
+		y=y*unit;
+	end
+	hold on,p=plot(x,y,'k.');
+	markersize=getfieldvalue(options,'markersize',12);
+	color=getfieldvalue(options,'cloudcolor','k');
+	set(p,'Color',color);
+	set(p,'MarkerSize',markersize);
+end
+
+%========================%
+%OK VERY LAST STEP: INSET|
+%========================%
+if exist(options,'inset'),
+
+	%Keep pointer of main axis
+	maingca=gca;
+	%get inset relative position (x,y,width,height)
+	insetpos=getfieldvalue(options,'insetpos',[0.56 0.55 0.35 0.35]);
+	%get current plot position
+	cplotpos=get(gca,'pos');
+
+	X1=getfieldvalue(options,'insetx',xlim);
+	Y1=getfieldvalue(options,'insety',ylim);
+
+	for i=1:length(getfieldvalue(options,'insetx')),
+		if length(insetpos)==4,
+			insetposi=insetpos;
+		else
+			insetposi=insetpos{i};
+		end
+		PosInseti=[cplotpos(1)+insetposi(1)*cplotpos(3),cplotpos(2)+insetposi(2)*cplotpos(4), insetposi(3)*cplotpos(3), insetposi(4)*cplotpos(4)];
+		%show pos
+		if iscell(X1),
+			X1i=X1{i};
+		else
+			X1i=X1;
+		end
+		if iscell(Y1),
+			Y1i=Y1{i};
+		else
+			Y1i=Y1;
+		end
+		if strcmpi(getfieldvalue(options,'showinset','off'),'on')
+			line(X1i([1 2 2 1 1]),Y1i([1 1 2 2 1]),zeros(1,5),'Color','k','LineWidth',2);
+		end
+
+		%Get current figure
+		ax1=gca;
+
+		%plot inset
+		axes('pos',PosInseti);
+		copyobj(get(ax1,'children'),gca);
+		patch('Faces',[1 2 3 4 1],'Vertices',[X1i([1 2 2 1])' Y1i([1 1 2 2])'],'FaceColor','None','EdgeColor','k','LineWidth',2);
+
+		%apply options
+		options=removefield(options,'text',0);
+		options=removefield(options,'title',0);
+		options=removefield(options,'xlabel',0);
+		options=removefield(options,'ylabel',0);
+		options=removefield(options,'inset',0);
+		options=removefield(options,'offsetaxispos',0);
+		options=removefield(options,'showregion',0);
+		options=changefieldvalue(options,'colorbar',0);
+		options=changefieldvalue(options,'latlon','off');
+		options=changefieldvalue(options,'axis','equal off');
+		options=changefieldvalue(options,'xlim',X1i);
+		options=changefieldvalue(options,'ylim',Y1i);
+		applyoptions(md,data,options);
+
+		%back to main gca
+		set(gcf,'CurrentAxes',maingca)
+	end
+end
+
+%clipping off always: 
+set(gca,'Clipping',getfieldvalue(options,'clipping','on'));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/applyoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/applyoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/applyoptions.py	(revision 27955)
@@ -0,0 +1,301 @@
+from cmaptools import getcolormap
+try:
+    import matplotlib as mpl
+    import matplotlib.pyplot as plt
+    from matplotlib.ticker import MaxNLocator
+except ImportError:
+    print("could not import pyplot, matplotlib has not been installed, no plotting capabilities enabled")
+import numpy as np
+
+from expdisp import expdisp
+from plot_contour import plot_contour
+from plot_streamlines import plot_streamlines
+from plot_edgeoverlay import plot_edgeoverlay
+
+
+def applyoptions(md, data, options, fig, axgrid, gridindex):
+    '''
+    APPLYOPTIONS - apply options to current plot
+
+    'plotobj' is the object returned by the specific plot call used to
+    render the data.  This object is used for adding a colorbar.
+
+    Usage:
+        applyoptions(md, data, options)
+
+    See also: PLOTMODEL, PARSE_OPTIONS
+    '''
+
+    # get handle to current figure and axes instance
+    #fig = p.gcf()
+    ax = axgrid[gridindex]
+
+    # {{{ font
+    fontsize = options.getfieldvalue('fontsize', 8)
+    fontweight = options.getfieldvalue('fontweight', 'normal')
+    fontfamily = options.getfieldvalue('fontfamily', 'sans-serif')
+    font = {
+        'fontsize': fontsize,
+        'fontweight': fontweight,
+        'family': fontfamily
+    }
+    # }}}
+    # {{{ title
+    if options.exist('title'):
+        title = options.getfieldvalue('title')
+        if options.exist('titlefontsize'):
+            titlefontsize = options.getfieldvalue('titlefontsize')
+        else:
+            titlefontsize = fontsize
+        if options.exist('titlefontweight'):
+            titlefontweight = options.getfieldvalue('titlefontweight')
+        else:
+            titlefontweight = fontweight
+    #title font
+        titlefont = font.copy()
+        titlefont['fontsize'] = titlefontsize
+        titlefont['fontweight'] = titlefontweight
+        ax.set_title(title, **titlefont)
+    # }}}
+    # {{{ xlabel, ylabel, zlabel
+    if options.exist('labelfontsize'):
+        labelfontsize = options.getfieldvalue('labelfontsize')
+    else:
+        labelfontsize = fontsize
+    if options.exist('labelfontweight'):
+        labelfontweight = options.getfieldvalue('labelfontweight')
+    else:
+        labelfontweight = fontweight
+
+    #font dict for labels
+    labelfont = font.copy()
+    labelfont['fontsize'] = labelfontsize
+    labelfont['fontweight'] = labelfontweight
+
+    if options.exist('xlabel'):
+        ax.set_xlabel(options.getfieldvalue('xlabel'), **labelfont)
+    if options.exist('ylabel'):
+        ax.set_ylabel(options.getfieldvalue('ylabel'), **labelfont)
+    if options.exist('zlabel'):
+        ax.set_zlabel(options.getfieldvalue('zlabel'), **labelfont)
+    # }}}
+    # {{{ xticks, yticks, zticks (tick locations)
+    if options.exist('xticks'):
+        if options.exist('xticklabels'):
+            xticklabels = options.getfieldvalue('xticklabels')
+            ax.set_xticks(options.getfieldvalue('xticks'), xticklabels)
+        else:
+            ax.set_xticks(options.getfieldvalue('xticks'))
+    if options.exist('yticks'):
+        if options.exist('yticklabels'):
+            yticklabels = options.getfieldvalue('yticklabels')
+            ax.set_yticks(options.getfieldvalue('yticks'), yticklabels)
+        else:
+            ax.set_yticks(options.getfieldvalue('yticks'))
+    if options.exist('zticks'):
+        if options.exist('zticklabels'):
+            zticklabels = options.getfieldvalue('zticklabels')
+            ax.set_zticks(options.getfieldvalue('zticks'), zticklabels)
+        else:
+            ax.set_zticks(options.getfieldvalue('zticks'))
+    # }}}
+    # {{{ xticklabels, yticklabels, zticklabels
+    if options.getfieldvalue('ticklabels', 'off') == 'off' or options.getfieldvalue('ticklabels', 0) == 0:
+        options.addfielddefault('xticklabels', [])
+        options.addfielddefault('yticklabels', [])
+    # TODO check if ax has a z - axis (e.g. is 3D)
+    if options.exist('xticklabels'):
+        xticklabels = options.getfieldvalue('xticklabels')
+        ax.set_xticklabels(xticklabels)
+    if options.exist('yticklabels'):
+        yticklabels = options.getfieldvalue('yticklabels')
+        ax.set_yticklabels(yticklabels)
+    if options.exist('zticklabels'):
+        zticklabels = options.getfieldvalue('zticklabels')
+        ax.set_zticklabels(zticklabels)
+    # }}}
+    # {{{ ticklabel notation
+    #ax.ticklabel_format(style = 'sci', scilimits=(0, 0))
+    # }}}
+    # {{{ ticklabelfontsize
+    if options.exist('ticklabelfontsize'):
+        for label in ax.get_xticklabels() + ax.get_yticklabels():
+            label.set_fontsize(options.getfieldvalue('ticklabelfontsize'))
+        if int(md.mesh.dimension) == 3:
+            for label in ax.get_zticklabels():
+                label.set_fontsize(options.getfieldvalue('ticklabelfontsize'))
+    # }}}
+    # {{{ view TOFIX
+    #if int(md.mesh.dimension) == 3 and options.exist('layer'):
+    #  #options.getfieldvalue('view') ?
+    #    ax = fig.gca(projection = '3d')
+    #plt.show()
+    # }}}
+    # {{{ axis
+    if options.exist('axis'):
+        if options.getfieldvalue('axis', True) == 'off':
+            ax.ticklabel_format(style='plain')
+            p.setp(ax.get_xticklabels(), visible=False)
+            p.setp(ax.get_yticklabels(), visible=False)
+    # }}}
+    # {{{ box
+    if options.exist('box'):
+        eval(options.getfieldvalue('box'))
+    # }}}
+    # {{{ xlim, ylim, zlim
+    if options.exist('xlim'):
+        ax.set_xlim(options.getfieldvalue('xlim'))
+    if options.exist('ylim'):
+        ax.set_ylim(options.getfieldvalue('ylim'))
+    if options.exist('zlim'):
+        ax.set_zlim(options.getfieldvalue('zlim'))
+    # }}}
+    # {{{ latlon TODO
+    # }}}
+    # {{{ Basinzoom TODO
+    # }}}
+    # {{{ ShowBasins TODO
+    # }}}
+    # {{{ caxis
+    if options.exist('caxis'):
+        lims = options.getfieldvalue('caxis')
+        assert len(lims) == 2, 'error, caxis should be passed as a list of length 2'
+        options.addfielddefault('caxis', lims)
+    else:
+        if len(data) > 0:
+            lims = [data.min(), data.max()]
+        else:
+            lims = [0, 1]
+    # }}}
+    # {{{ shading TODO
+    #if options.exist('shading'):
+    # }}}
+    # {{{ grid
+    if options.exist('grid'):
+        if 'on' in options.getfieldvalue('grid', 'on'):
+            ax.grid()
+    # }}}
+    # {{{ colormap
+    if options.exist('colornorm'):
+        norm = options.getfieldvalue('colornorm')
+    if options.exist('colormap'):
+        cmap = getcolormap(options)
+    cbar_extend = 0
+    if options.exist('cmap_set_over'):
+        cbar_extend += 1
+    if options.exist('cmap_set_under'):
+        cbar_extend += 2
+
+    # }}}
+    # {{{ colorbar extension
+    if options.exist('cbar_extend'):
+        extend = options.getfieldvalue('cbar_extend', 'neither')
+    else:
+        if cbar_extend == 0:
+            extend = 'neither'
+        elif cbar_extend == 1:
+            extend = 'max'
+        elif cbar_extend == 2:
+            extend = 'min'
+        elif cbar_extend == 3:
+            extend = 'both'
+        options.addfielddefault('cbar_extend', extend)
+    # }}}
+    # {{{ contours
+    if options.exist('contourlevels'):
+        plot_contour(md, data, options, ax)
+    # }}}
+    # {{{ edgeoverlay
+    if options.exist('edgeoverlay'):
+        edgedata = options.getfieldvalue('edgeoverlay')
+        plot_edgeoverlay(md, edgedata, options, ax)
+    # }}}
+    # {{{ wrapping TODO
+    # }}}
+    # {{{ colorbar
+    if options.getfieldvalue('colorbar', 1) == 1:
+        cb = mpl.colorbar.ColorbarBase(ax.cax, cmap=cmap, norm=norm, extend=extend)
+        if options.exist('alpha'):
+            cb.set_alpha(options.getfieldvalue('alpha'))
+        if options.exist('colorbarnumticks'):
+            cb.locator = MaxNLocator(nbins=options.getfieldvalue('colorbarnumticks', 5))
+        else:
+            cb.locator = MaxNLocator(nbins=5)  # default 5 ticks
+        if options.exist('colorbartickspacing'):
+            locs = np.arange(lims[0], lims[1] + 1, options.getfieldvalue('colorbartickspacing'))
+            cb.set_ticks(locs)
+        if options.exist('colorbarlines'):
+            locs = np.arange(lims[0], lims[1] + 1, options.getfieldvalue('colorbarlines'))
+            cb.add_lines(locs, ['k' for i in range(len(locs))], np.ones_like(locs))
+        if options.exist('colorbarlineatvalue'):
+            locs = options.getfieldvalue('colorbarlineatvalue')
+            colors = options.getfieldvalue('colorbarlineatvaluecolor', ['k' for i in range(len(locs))])
+            widths = options.getfieldvalue('colorbarlineatvaluewidth', np.ones_like(locs))
+            cb.add_lines(locs, colors, widths)
+        if options.exist('colorbartitle'):
+            if options.exist('colorbartitlepad'):
+                cb.set_label(options.getfieldvalue('colorbartitle'),
+                             labelpad=options.getfieldvalue('colorbartitlepad'),
+                             fontsize=fontsize)
+            else:
+                cb.set_label(options.getfieldvalue('colorbartitle'), fontsize=fontsize)
+        cb.ax.tick_params(labelsize=fontsize)
+        cb.solids.set_rasterized(True)
+        cb.update_ticks()
+        cb.draw_all()
+        if options.exist('colorbarfontsize'):
+            colorbarfontsize = options.getfieldvalue('colorbarfontsize')
+            cb.ax.tick_params(labelsize=colorbarfontsize)
+        if options.exist('colorbarticks'):
+            colorbarticks = options.getfieldvalue('colorbarticks')
+            cb.set_ticks(colorbarticks)
+        plt.sca(ax)  # return to original axes control
+    # }}}
+    # {{{ expdisp
+    if options.exist('expdisp'):
+        expdisp(ax, options)
+    # }}}
+    # {{{ area TODO
+    # }}}
+    # {{{ text
+    if options.exist('text'):
+        text = options.getfieldvalue('text')
+        textx = options.getfieldvalue('textx')
+        texty = options.getfieldvalue('texty')
+        textcolor = options.getfieldvalue('textcolor')
+        textweight = options.getfieldvalue('textweight')
+        textrotation = options.getfieldvalue('textrotation')
+        textfontsize = options.getfieldvalue('textfontsize')
+        for label, x, y, size, color, weight, rotation in zip(text, textx, texty, textfontsize, textcolor, textweight, textrotation):
+            ax.text(x, y, label, transform=ax.transAxes, fontsize=size, color=color, weight=weight, rotation=rotation)
+    # }}}
+    # {{{ north arrow TODO
+    # }}}
+    # {{{ scale ruler TODO
+    # }}}
+    # {{{ streamlines TOFIX
+    if options.exist('streamlines'):
+        plot_streamlines(md, options, ax)
+    # }}}
+    # {{{ axis positions TODO
+    # }}}
+    # {{{ figure position TODO
+    # }}}
+    # {{{ axes position TODO
+    # }}}
+    # {{{ showregion TODO
+    # }}}
+    # {{{ flat edges of a partition TODO
+    # }}}
+    # {{{ scatter TODO
+    # }}}
+    # {{{ backgroundcolor TODO
+    # }}}
+    # {{{ figurebackgroundcolor TODO
+    # }}}
+    # {{{ lighting TODO
+    # }}}
+    # {{{ point cloud TODO
+    # }}}
+    # {{{ inset TODO
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/arrow.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/arrow.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/arrow.m	(revision 27955)
@@ -0,0 +1,59 @@
+function arrow(x0,y0,x1,y1,varargin)
+%ARROW - plot arrow, using (x0,y0) and (x1,y1) as initial and end points. options can be specified.
+%
+%   Usage:
+%      arrow(x1,y1,x2,y2,options)
+%      where options is a lit of paired arguments of string OR enums
+%      options can be: 
+%            'ratio': default .5 (ratio headarrow/length)
+%            'widthratio': default is 1/10 of length
+
+%recover options
+options=pairoptions(varargin{:});
+ratio=getfieldvalue(options,'ratio',.5);
+widthratio=getfieldvalue(options,'widthratio',.1);
+color=getfieldvalue(options,'color','k');
+
+%compute some values out of (x1,y1) and (x2,y2)
+length=sqrt((x1-x0)^2+(y1-y0)^2);
+width=length*widthratio;
+
+%Build the two points Ap and Bp
+x=zeros(2,1);
+y=zeros(2,1);
+x(1)=x0; y(1)=y0;
+x(2)=x1; y(2)=y1;
+
+Ap=[x(1)
+   y(1)];
+Bp=[x(2)
+   y(2)];
+
+%Build arrowhead first
+ang2=150*2*pi/360;
+rotation=[cos(ang2), sin(ang2); -sin(ang2), cos(ang2)];
+
+E=ratio*rotation*(Bp-Ap)+Bp;
+F=Bp;
+G=ratio*rotation'*(Bp-Ap)+Bp;
+H=Bp/4+E*3/8+G*3/8;
+
+%Build rectangle
+u=Bp-Ap;
+alpha=atan2(u(2),u(1));
+
+A=Ap-[-width/2*sin(alpha)
+   width/2*cos(alpha)];
+ B=H-[-width/2*sin(alpha)
+   width/2*cos(alpha)];
+C=H+[-width/2*sin(alpha)
+   width/2*cos(alpha)];
+D=Ap+[-width/2*sin(alpha)
+   width/2*cos(alpha)];
+
+%Plot arrow
+hold on
+p1=patch([A(1) B(1) C(1) D(1)],[A(2) B(2) C(2) D(2)],color);
+set(p1,'EdgeColor',color); set(p1,'FaceColor',color);
+p2=patch([E(1) F(1) G(1) H(1)],[E(2) F(2) G(2) H(2)],color);
+set(p2,'EdgeColor',color); set(p2,'FaceColor',color);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/checkplotoptions.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/checkplotoptions.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/checkplotoptions.js	(revision 27955)
@@ -0,0 +1,231 @@
+function checkplotoptions(md,options){ //{{{
+	//PARSE_OPTIONS - build a structure that holds all plot options
+	//
+	//   Usage:
+	//      checkplotoptions(md,options);
+	//
+	//   See also: PLOTMODEL
+
+	//units
+	if (options.exist('unit')){
+		if (options.getfieldvalue('unit') === 'km'){
+			options.changefieldvalue('unit',Math.pow(10,-3));
+		}
+		if (options.getfieldvalue('unit') === '100km'){
+			options.changefieldvalue('unit',Math.pow(10,-5));
+		}
+	}
+
+	//density
+	if (options.exist('density')){
+		density=options.getfieldvalue('density');
+		options.changefieldvalue('density',Math.abs(Math.ceil(density)));
+	}
+
+	//Show section
+	if (options.exist('showsection')){
+		if (options.getfieldvalue('showsection') === 'on'){
+			options.changefieldvalue('showsection',4);
+		}
+	}
+
+	//smooth values
+	if (options.exist('smooth')){
+		if (options.getfieldvalue('smooth') === 'on'){
+			options.changefieldvalue('smooth',0);
+		}
+	}
+
+	//contouronly values
+	if (options.exist('contouronly')){
+		if (options.getfieldvalue('contouronly') === 'on'){
+			options.changefieldvalue('contouronly',1);
+		}
+	}
+
+	//Colorbar;
+	if (options.exist('colorbar')){
+		if (options.getfieldvalue('colorbar') === 'on'){
+			options.changefieldvalue('colorbar',1);
+		}
+		else if (options.getfieldvalue('colorbar') === 'off'){
+			options.changefieldvalue('colorbar',0);
+		}
+	}
+
+	//text
+	if (options.exist('text')){
+
+		//1: textvalue
+		textvalues=options.getfieldvalue('text');
+
+		//ischar if only one expstyle -> create a cell
+		if (typeof textvalues === 'string'){
+			textvalues=[textvalues];
+			numtext=1;
+		}
+		else if (IsArray(textvalues)){
+			numtext=textvalues.length;
+		}
+		else throw Error("plot error message: ''text'' option should be either a string or a cell");
+
+		//2: textweight
+		if (options.exist('textweight')){
+
+			textweightvalues=options.getfieldvalue('textweight');
+
+			//ischar if only one textweight -> create a cell
+			if (typeof textweightvalues === 'string'){
+				textweightvalues=[textweightvalues];
+			}
+			else if (!IsArray(textweightvalues)){
+				throw Error("plot error message: ''textweight'' option should be either a string or a cell");
+			}
+		}
+		else{
+			textweightvalues=['n'];
+		}
+		if (textweightvalues.length==1){
+			var value=textweightvalues[0];
+			for (var i=0;i<numtext-1;i++)textweightvalues.push(value);
+		}
+
+		//3: textsize
+		if (options.exist('textsize')){
+			textsizevalues=options.getfieldvalue('textsize');
+		}
+		//ischar if only one textsize -> create a cell
+		if (typeof textsizevalues === 'number'){
+			textsizevalues=[textsizevalues];
+		}
+		else if (!IsArray(textsizevalues)){
+			throw Error("plot error message: ''textsize'' option should be either a number or a cell");
+		}
+		else{
+			textsizevalues=[14];
+		}
+		if (textsizevalues.length==1){
+			var value=textsizevalues[0];
+			for (var i=0;i<numtext-1;i++)textsizevalues.push(value);
+		}
+			
+		//4: textcolor
+		if (options.exist('textcolor')){
+			textcolorvalues=options.getfieldvalue('textcolor');
+		}
+		if (typeof textcolorvalues === 'string'){ //ischar if only one textcolor -> create a cell
+			textcolorvalues=[textcolorvalues];
+		}
+		else if (!IsArray(textcolorvalues)){
+			throw Error("plot error message: ''textcolor'' option should be either a string or a cell");
+		}
+		else textcolorvalues=['k'];
+
+		if (textcolorvalues.length==1){
+			var value=textcolorvalues[0];
+			for (var i=0;i<numtext-1;i++)textcolorvalues.push(value);
+		}
+		
+		//5: textposition
+		if (options.exist('textposition')){
+			textpositionvalues=options.getfieldvalue('textposition');
+		}
+		//ischar if only one textposition -> create a cell
+		if (typeof textpositionvalues === 'number'){
+			textpositionvalues=[textpositionvalues];
+		}
+		else if(!IsArray(textpositionvalues)){
+			throw Error("plot error message: ''textposition'' option should be either a string or a cell");
+		}
+		else throw Error("plot error message: ''textposition'' option is missing");
+			
+		//6: textrotation
+		if (options.exist('textrotation')){
+			textrotationvalues=options.getfieldvalue('textrotation');
+		}
+		//ischar if only one textsize -> create a cell
+		if (typeof textrotationvalues === 'number'){
+			textrotationvalues=[textrotationvalues];
+		}
+		else if (!IsArray(textrotationvalues)){
+			throw Error("plot error message: ''textrotation'' option should be either a number or a cell");
+		}
+		else textrotationvalues=[0];
+		
+		if (textrotationvalues.length==1){
+			var value=textrotationvalues[0];
+			for (var i=0;i<numtext-1;i++)textrotationvalues.push(value);
+		}
+			
+		options.changefieldvalue('text',textvalues);
+		options.changefieldvalue('textsize',textsizevalues);
+		options.changefieldvalue('textweight',textweightvalues);
+		options.changefieldvalue('textcolor',textcolorvalues);
+		options.changefieldvalue('textposition',textpositionvalues);
+		options.changefieldvalue('textrotation',textrotationvalues);
+	}
+
+	//expdisp
+	expdispvaluesarray=[];
+	expstylevaluesarray=[];
+	expstylevalues=[];
+	if (options.exist('expstyle')){
+		expstylevalues=options.getfieldvalue('expstyle');
+		//ischar if only one expstyle -> create a cell
+		if (typeof expstylevalues === 'string'){
+			expstylevalues=[expstylevalues];
+		}
+		options.changefieldvalue('expdisp',expdispvaluesarray);
+	}
+		
+	if (options.exist('expdisp')){
+		expdispvalues=options.getfieldvalue('expdisp');
+	
+		//ischar if only one expstyle -> create a cell
+		if (typeof expdispvalues === 'string'){
+			expdispvalues=[expdispvalues];
+		}
+		for (var i=0; i< expdispvalues.length;i++){
+			expdispvaluesarray.push(expdispvalues[i]);
+			if (expstylevalues.length>i){
+				expstylevaluesarray.push(expstylevalues[i]);
+			}
+			else{
+				expstylevaluesarray.push('g-');
+			}
+		}
+		options.changefieldvalue('expstyle',expstylevaluesarray);
+	}
+
+	//latlonnumbering
+	if (options.exist('latlonclick')){
+		if (options.getfieldvalue('latlonclick') === 'on'){
+			options.changefieldvalue('latlonclick',1);
+		}
+	}
+
+	//north arrow
+	if (options.exist('northarrow')){
+	   if (options.getfieldvalue('northarrow') === 'on'){
+		   
+		   //default values
+		   Lx=ArrayMax(md.mesh.y)-ArrayMin(md.mesh.y);
+		   Ly=ArrayMax(md.mesh.y)-ArrayMin(md.mesh.y);
+		  
+		   //default values
+		   options.changefieldvalue('northarrow',[ArrayMin(md.mesh.x)+1/6*Lx,ArrayMin(md.mesh.y)+5/6*Ly,1/15*Ly,0.25,1/250*Ly]);
+	   }
+	}
+
+	//scale ruler
+	if (options.exist('scaleruler')){
+	   if (options.getfieldvalue('scaleruler') === 'on'){
+		   //default values
+		   Lx=ArrayMax(md.mesh.x)-ArrayMin(md.mesh.x);
+		   Ly=ArrayMax(md.mesh.y)-ArrayMin(md.mesh.y);
+		   
+		   //default values
+		   options.changefieldvalue('scaleruler',[ArrayMin(md.mesh.x)+6/8*Lx, ArrayMin(md.mesh.y)+1/10*Ly, Math.pow(10,(Math.ceil(Math.log10(Lx))))/5, Math.floor(Lx/100), 5]);
+	   }
+	}
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/checkplotoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/checkplotoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/checkplotoptions.m	(revision 27955)
@@ -0,0 +1,208 @@
+function options=checkplotoptions(md,options)
+%PARSE_OPTIONS - build a structure that holds all plot options
+%
+%   Usage:
+%      options=checkplotoptions(md,options);
+%
+%   See also: PLOTMODEL
+
+%units
+if exist(options,'unit'),
+	if strcmpi(getfieldvalue(options,'unit'),'km')
+		options=changefieldvalue(options,'unit',10^-3);
+	end
+	if strcmpi(getfieldvalue(options,'unit'),'100km')
+		options=changefieldvalue(options,'unit',10^-5);
+	end
+
+end
+
+%density
+if exist(options,'density'),
+	density=getfieldvalue(options,'density');
+	options=changefieldvalue(options,'density',abs(ceil(density)));
+end
+
+%Show section
+if exist(options,'showsection'),
+	if strcmpi(getfieldvalue(options,'showsection'),'on')
+		options=changefieldvalue(options,'showsection',4);
+	end
+end
+
+%smooth values
+if exist(options,'smooth'),
+	if strcmpi(getfieldvalue(options,'smooth'),'on')
+		options=changefieldvalue(options,'smooth',0);
+	end
+end
+
+%contouronly values
+if exist(options,'contouronly'),
+	if strcmpi(getfieldvalue(options,'contouronly'),'on')
+		options=changefieldvalue(options,'contouronly',1);
+	end
+end
+
+%Colorbar;
+if exist(options,'colorbar'),
+	if strcmpi(getfieldvalue(options,'colorbar'),'on')
+		options=changefieldvalue(options,'colorbar',1);
+	elseif strcmpi(getfieldvalue(options,'colorbar'),'off')
+			options=changefieldvalue(options,'colorbar',0);
+	end
+end
+
+%text
+if exist(options,'text'),
+	%1: textvalue
+	textvalues=getfieldvalue(options,'text');
+	%ischar if only one expstyle -> create a cell
+	if ischar(textvalues),
+		textvalues={textvalues};
+		numtext=1;
+	elseif iscell(textvalues),
+		numtext=length(textvalues);
+	else
+		error('plot error message: ''text'' option should be either a string or a cell');
+	end
+
+	%2: textweight
+	if exist(options,'textweight'),
+		textweightvalues=getfieldvalue(options,'textweight');
+		%ischar if only one textweight -> create a cell
+		if ischar(textweightvalues),
+			textweightvalues={textweightvalues};
+		elseif ~iscell(textweightvalues);
+			error('plot error message: ''textweight'' option should be either a string or a cell');
+		end
+	else
+		textweightvalues={'n'};
+	end
+	textweightvalues=repmat(textweightvalues,1,numtext); textweightvalues(numtext+1:end)=[];
+
+	%3: textsize
+	if exist(options,'textsize'),
+		textsizevalues=getfieldvalue(options,'textsize');
+		%ischar if only one textsize -> create a cell
+		if isnumeric(textsizevalues),
+			textsizevalues={textsizevalues};
+		elseif ~iscell(textsizevalues);
+			error('plot error message: ''textsize'' option should be either a number or a cell');
+		end
+	else
+		textsizevalues={14};
+	end
+	textsizevalues=repmat(textsizevalues,1,numtext); textsizevalues(numtext+1:end)=[];
+	%4: textcolor
+	if exist(options,'textcolor'),
+		textcolorvalues=getfieldvalue(options,'textcolor');
+		%ischar if only one textcolor -> create a cell
+		if ischar(textcolorvalues),
+			textcolorvalues={textcolorvalues};
+		elseif ~iscell(textcolorvalues);
+			error('plot error message: ''textcolor'' option should be either a string or a cell');
+		end
+	else
+		textcolorvalues={'k'};
+	end
+	textcolorvalues=repmat(textcolorvalues,1,numtext); textcolorvalues(numtext+1:end)=[];
+	%5: textposition
+	if exist(options,'textposition'),
+		textpositionvalues=getfieldvalue(options,'textposition');
+		%ischar if only one textposition -> create a cell
+		if isnumeric(textpositionvalues),
+			textpositionvalues={textpositionvalues};
+		elseif ~iscell(textpositionvalues);
+			error('plot error message: ''textposition'' option should be either a string or a cell');
+		end
+	else
+		error('plot error message: ''textposition'' option is missing');
+	end
+	%6: textrotation
+	if exist(options,'textrotation'),
+		textrotationvalues=getfieldvalue(options,'textrotation');
+		%ischar if only one textsize -> create a cell
+		if isnumeric(textrotationvalues),
+			textrotationvalues={textrotationvalues};
+		elseif ~iscell(textrotationvalues);
+			error('plot error message: ''textrotation'' option should be either a number or a cell');
+		end
+	else
+		textrotationvalues={0};
+	end
+	textrotationvalues=repmat(textrotationvalues,1,numtext); textrotationvalues(numtext+1:end)=[];
+	options=changefieldvalue(options,'text',textvalues);
+	options=changefieldvalue(options,'textsize',textsizevalues);
+	options=changefieldvalue(options,'textweight',textweightvalues);
+	options=changefieldvalue(options,'textcolor',textcolorvalues);
+	options=changefieldvalue(options,'textposition',textpositionvalues);
+	options=changefieldvalue(options,'textrotation',textrotationvalues);
+end
+
+%expdisp
+expdispvaluesarray=cell(0,0);
+expstylevaluesarray=cell(0,0);
+expstylevalues=cell(0,0);
+if exist(options,'expstyle'),
+	expstylevalues=getfieldvalue(options,'expstyle');
+	%ischar if only one expstyle -> create a cell
+	if ischar(expstylevalues),
+		expstylevalues={expstylevalues};
+	end
+end
+if exist(options,'expdisp'),
+	expdispvalues=getfieldvalue(options,'expdisp');
+	%ischar if only one expstyle -> create a cell
+	if ischar(expdispvalues),
+		expdispvalues={expdispvalues};
+	end
+	for i=1:length(expdispvalues)
+		expdispvaluesarray{end+1}=expdispvalues{i};
+		if (length(expstylevalues)>=i),
+			expstylevaluesarray{end+1}=expstylevalues{i};
+		else
+			expstylevaluesarray{end+1}='g-';
+		end
+	end
+end
+options=changefieldvalue(options,'expstyle',expstylevaluesarray);
+options=changefieldvalue(options,'expdisp',expdispvaluesarray);
+
+%latlonnumbering
+if exist(options,'latlonclick'),
+	if strcmpi(getfieldvalue(options,'latlonclick'),'on')
+		options=changefieldvalue(options,'latlonclick',1);
+	end
+end
+
+%north arrow
+if exist(options,'northarrow'),
+	if strcmpi(getfieldvalue(options,'northarrow'),'on')
+		%default values
+		Lx=max(md.mesh.y)-min(md.mesh.y);
+		Ly=max(md.mesh.y)-min(md.mesh.y);
+		%default values
+		options=changefieldvalue(options,'northarrow',[min(md.mesh.x)+1/6*Lx   min(md.mesh.y)+5/6*Ly   1/15*Ly   0.25   1/250*Ly]);
+	end
+end
+
+%scale ruler
+if exist(options,'scaleruler'),
+	if strcmpi(getfieldvalue(options,'scaleruler'),'on')
+		%default values
+		Lx=max(md.mesh.x)-min(md.mesh.x);
+		Ly=max(md.mesh.y)-min(md.mesh.y);
+		%default values
+		options=changefieldvalue(options,'scaleruler',[min(md.mesh.x)+6/8*Lx   min(md.mesh.y)+1/10*Ly   10^(ceil(log10(Lx)))/5 floor(Lx/100) 5]);
+	end
+end
+
+%Log scale (LOTS of changes to be performed
+if exist(options,'log'),
+	if exist(options,'caxis')
+		options=addfield(options,'caxis_pre',getfieldvalue(options,'caxis'));
+		options=changefieldvalue(options,'caxis',log(getfieldvalue(options,'caxis'))/log(getfieldvalue(options,'log')));
+	end
+	options=changefieldvalue(options,'cutoff',log(getfieldvalue(options,'cutoff',1.5))/log(getfieldvalue(options,'log')));
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/checkplotoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/checkplotoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/checkplotoptions.py	(revision 27955)
@@ -0,0 +1,169 @@
+import numpy as np
+
+
+def checkplotoptions(md, options):
+    """CHECKPLOTOPTIONS - build a structure that holds all plot options
+
+    Usage:
+        options = checkplotoptions(md, options)
+
+    See also: PLOTMODEL
+
+    NOTE: not fully implemented yet
+    """
+
+    # {{{ units
+    if options.exist('unit'):
+        if 'km' in options.getfieldvalue('unit', 'km'):
+            options.changefieldvalue('unit', pow(10, -3))
+        elif '100km' in options.getfieldvalue('unit', '100km'):
+            options.changefieldvalue('unit', pow(10, -5))
+    # }}}
+    # {{{ density
+    if options.exist('density'):
+        density = options.getfieldvalue('density')
+        options.changefieldvalue('density', abs(np.ceil(density)))
+    # }}}
+    # {{{ show section
+    if options.exist('showsection'):
+        if 'on' in options.getfieldvalue('showsection', 'on'):
+            options.changefieldvalue('showsection', 4)
+    # }}}
+    # {{{ smooth values
+    if options.exist('smooth'):
+        if 'on' in options.getfieldvalue('smooth', 'on'):
+            options.changefieldvalue('smooth', 0)
+    # }}}
+    # {{{ contouronly values
+    if options.exist('contouronly'):
+        if 'on' in options.getfieldvalue('contouronly', 'on'):
+            options.changefieldvalue('contouronly', 1)
+    # }}}
+    # {{{ colorbar
+    if options.exist('colorbar'):
+        if 'on' in options.getfieldvalue('colorbar', 'on'):
+            options.changefieldvalue('colorbar', 1)
+        elif 'off' in options.getfieldvalue('colorbar', 'off'):
+            options.changefieldvalue('colorbar', 0)
+    # }}}
+    # {{{ layer
+    if options.exist('layer'):
+        if options.getfieldvalue('layer') == 0:
+            raise Exception('Due to Matlab history first layer is numbered 1')
+        if options.getfieldvalue('layer') == md.mesh.numberoflayers - 1:
+            print('WARNING : you are plotting layer {}, surface is layer{}.'.format(md.mesh.numberoflayers - 1, md.mesh.numberoflayers))
+    # }}}
+    # {{{ text
+    if options.exist('text'):
+        # text values (coerce to list for consistent functionality)
+        textlist = []
+        text = options.getfieldvalue('text', 'default text')
+        textlist.extend([text] if isinstance(text, str) else text)
+        numtext = len(textlist)
+        # text position
+        textpos = options.getfieldvalue('textposition', [0.5, 0.5])
+        if not isinstance(textpos, list):
+            raise Exception('textposition should be passed as a list')
+        if any(isinstance(i, list) for i in textpos):
+            textx = [item[0] for item in textpos]
+            texty = [item[1] for item in textpos]
+        else:
+            textx = [textpos[0]]
+            texty = [textpos[1]]
+        if len(textx) != numtext or len(texty) != numtext:
+            raise Exception('textposition should contain one list of x, y vertices for every text instance')
+
+        # font size
+        if options.exist('textfontsize'):
+            textfontsize = options.getfieldvalue('textfontsize', 12)
+            sizelist = []
+            sizelist.extend(textfontsize if isinstance(textfontsize, list) else [textfontsize])
+        else:
+            sizelist = [12]
+        if len(sizelist) == 1:
+            sizelist = np.tile(sizelist, numtext)
+
+        # font color
+        if options.exist('textcolor'):
+            textcolor = options.getfieldvalue('textcolor', 'k')
+            colorlist = []
+            colorlist.extend(textcolor if isinstance(textcolor, list) else [textcolor])
+        else:
+            colorlist = ['k']
+        if len(colorlist) == 1:
+            colorlist = np.tile(colorlist, numtext)
+
+        # textweight
+        if options.exist('textweight'):
+            textweight = options.getfieldvalue('textweight')
+            weightlist = []
+            weightlist.extend(textweight if isinstance(textweight, list) else [textweight])
+        else:
+            weightlist = ['normal']
+        if len(weightlist) == 1:
+            weightlist = np.tile(weightlist, numtext)
+
+        # text rotation
+        if options.exist('textrotation'):
+            textrotation = options.getfieldvalue('textrotation', 0)
+            rotationlist = []
+            rotationlist.extend(textrotation if isinstance(textrotation, list) else [textrotation])
+        else:
+            rotationlist = [0]
+        if len(rotationlist) == 1:
+            rotationlist = np.tile(rotationlist, numtext)
+
+        options.changefieldvalue('text', textlist)
+        options.addfield('textx', textx)
+        options.addfield('texty', texty)
+        options.changefieldvalue('textfontsize', sizelist)
+        options.changefieldvalue('textcolor', colorlist)
+        options.changefieldvalue('textweight', weightlist)
+        options.changefieldvalue('textrotation', rotationlist)
+    # }}}
+    # {{{ expdisp
+    expdispvaluesarray = []
+    expstylevaluesarray = []
+    expstylevalues = []
+    if options.exist('expstyle'):
+        expstylevalues = options.getfieldvalue('expstyle')
+        if type(expstylevalues) == str:
+            expstylevalues = [expstylevalues]
+    if options.exist('expdisp'):
+        expdispvalues = options.getfieldvalue('expdisp')
+        if type(expdispvalues) == str:
+            expdispvalues = [expdispvalues]
+        for i in np.arange(len(expdispvalues)):
+            expdispvaluesarray.append(expdispvalues[i])
+            if len(expstylevalues) > i:
+                expstylevaluesarray.append(expstylevalues[i])
+            else:
+                expstylevaluesarray.append(' - k')
+    options.changefieldvalue('expstyle', expstylevaluesarray)
+    options.changefieldvalue('expdisp', expdispvaluesarray)
+    # }}}
+    # {{{ latlonnumbering
+    if options.exist('latlonclick'):
+        if 'on' in options.getfieldvalue('latlonclick', 'on'):
+            options.changefieldvalue('latlonclick', 1)
+    # }}}
+    # {{{ northarrow
+    if options.exist('northarrow'):
+        if 'on' in options.getfieldvalue('northarrow', 'on'):
+            # default values
+            Lx = max(md.mesh.x) - min(md.mesh.x)
+            Ly = max(md.mesh.y) - min(md.mesh.y)
+            options.changefieldvalue('northarrow', [min(md.mesh.x) + 1. / 6. * Lx, min(md.mesh.y) + 5. / 6. * Ly, 1. / 15. * Ly, 0.25, 1. / 250. * Ly])
+    # }}}
+    # {{{ scale ruler
+    if options.exist('scaleruler'):
+        if 'on' in options.getfieldvalue('scaleruler', 'off'):
+            Lx = max(md.mesh.x) - min(md.mesh.x)
+            Ly = max(md.mesh.y) - min(md.mesh.y)
+            options.changefieldvalue('scaleruler', [min(md.mesh.x) + 6. / 8. * Lx, min(md.mesh.y) + 1. / 10. * Ly, 10**(np.ceil(np.log10(Lx))) / 5, np.floor(Lx / 100), 5])
+    # }}}
+    # {{{ log scale
+    if options.exist('log'):
+        options.changefieldvalue('cutoff', np.log10(options.getfieldvalue('cutoff', 1.5)) / np.log10(options.getfieldvalue('log')))
+    # }}}
+    return options
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/bluewhitered.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/bluewhitered.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/bluewhitered.m	(revision 27955)
@@ -0,0 +1,125 @@
+function newmap = bluewhitered(m,CAXIS)
+%BLUEWHITERED   Blue, white, and red color map.
+%   BLUEWHITERED(M) returns an M-by-3 matrix containing a blue to white
+%   to red colormap, with white corresponding to the CAXIS value closest
+%   to zero.  This colormap is most useful for images and surface plots
+%   with positive and negative values.  BLUEWHITERED, by itself, is the
+%   same length as the current colormap.
+%
+%   Examples:
+%   ------------------------------
+%   figure
+%   imagesc(peaks(250));
+%   colormap(bluewhitered(256)), colorbar
+%
+%   figure
+%   imagesc(peaks(250), [0 8])
+%   colormap(bluewhitered), colorbar
+%
+%   figure
+%   imagesc(peaks(250), [-6 0])
+%   colormap(bluewhitered), colorbar
+%
+%   figure
+%   surf(peaks)
+%   colormap(bluewhitered)
+%   axis tight
+%
+%   See also HSV, HOT, COOL, BONE, COPPER, PINK, FLAG, 
+%   COLORMAP, RGBPLOT.
+
+
+if nargin < 1
+   m = size(get(gcf,'colormap'),1);
+end
+
+bottom = [0 0 0.5];
+botmiddle = [0 0.5 1];
+middle = [1 1 1];
+topmiddle = [1 0 0];
+top = [0.5 0 0];
+
+% Find middle
+if nargin < 2
+	lims = get(gca, 'CLim');
+else
+	lims = CAXIS;
+end
+
+% Find ratio of negative to positive
+if (lims(1) < 0) & (lims(2) > 0)
+    % It has both negative and positive
+    % Find ratio of negative to positive
+    ratio = abs(lims(1)) / (abs(lims(1)) + lims(2));
+    neglen = round(m*ratio);
+    poslen = m - neglen;
+    
+    % Just negative
+    new = [bottom; botmiddle; middle];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, neglen);
+    newmap1 = zeros(neglen, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap1(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+    % Just positive
+    new = [middle; topmiddle; top];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, poslen);
+    newmap = zeros(poslen, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+    % And put 'em together
+    newmap = [newmap1; newmap];
+    
+elseif lims(1) >= 0
+    % Just positive
+    new = [middle; topmiddle; top];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, m);
+    newmap = zeros(m, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+else
+    % Just negative
+    new = [bottom; botmiddle; middle];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, m);
+    newmap = zeros(m, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+end
+% 
+% m = 64;
+% new = [bottom; botmiddle; middle; topmiddle; top];
+% % x = 1:m;
+% 
+% oldsteps = linspace(0, 1, 5);
+% newsteps = linspace(0, 1, m);
+% newmap = zeros(m, 3);
+% 
+% for i=1:3
+%     % Interpolate over RGB spaces of colormap
+%     newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+% end
+% 
+% % set(gcf, 'colormap', newmap), colorbar
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/bluewhitered_smooth.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/bluewhitered_smooth.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/bluewhitered_smooth.m	(revision 27955)
@@ -0,0 +1,130 @@
+function newmap = bluewhitered_smooth(m,CAXIS)
+%BLUEWHITERED   Blue, white, and red color map.
+%   BLUEWHITERED(M) returns an M-by-3 matrix containing a blue to white
+%   to red colormap, with white corresponding to the CAXIS value closest
+%   to zero.  This colormap is most useful for images and surface plots
+%   with positive and negative values.  BLUEWHITERED, by itself, is the
+%   same length as the current colormap.
+%
+%   Examples:
+%   ------------------------------
+%   figure
+%   imagesc(peaks(250));
+%   colormap(bluewhitered(256)), colorbar
+%
+%   figure
+%   imagesc(peaks(250), [0 8])
+%   colormap(bluewhitered), colorbar
+%
+%   figure
+%   imagesc(peaks(250), [-6 0])
+%   colormap(bluewhitered), colorbar
+%
+%   figure
+%   surf(peaks)
+%   colormap(bluewhitered)
+%   axis tight
+%
+%   See also HSV, HOT, COOL, BONE, COPPER, PINK, FLAG, 
+%   COLORMAP, RGBPLOT.
+
+
+if nargin < 1
+   m = size(get(gcf,'colormap'),1);
+end
+
+bottom = [50 50 190]/255;
+botmiddle = [145 145 215]/255;
+middle = [240 240 240]/255;
+topmiddle = [215 145 145]/255;
+top = [190 50 50]/255;
+% bottom = [0.25 0.3 0.75];
+% botmiddle = [0.55 0.57 0.8];
+% middle = [0.85 0.85 0.85];
+% topmiddle = [0.77 0.43 0.5];
+% top = [0.7 0.0 0.15];
+
+% Find middle
+if nargin < 2
+	lims = get(gca, 'CLim');
+else
+	lims = CAXIS;
+end
+
+% Find ratio of negative to positive
+if (lims(1) < 0) & (lims(2) > 0)
+    % It has both negative and positive
+    % Find ratio of negative to positive
+    ratio = abs(lims(1)) / (abs(lims(1)) + lims(2));
+    neglen = round(m*ratio);
+    poslen = m - neglen;
+    
+    % Just negative
+    new = [bottom; botmiddle; middle];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, neglen);
+    newmap1 = zeros(neglen, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap1(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+    % Just positive
+    new = [middle; topmiddle; top];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, poslen);
+    newmap = zeros(poslen, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+    % And put 'em together
+    newmap = [newmap1; newmap];
+    
+elseif lims(1) >= 0
+    % Just positive
+    new = [middle; topmiddle; top];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, m);
+    newmap = zeros(m, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+else
+    % Just negative
+    new = [bottom; botmiddle; middle];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, m);
+    newmap = zeros(m, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+end
+% 
+% m = 64;
+% new = [bottom; botmiddle; middle; topmiddle; top];
+% % x = 1:m;
+% 
+% oldsteps = linspace(0, 1, 5);
+% newsteps = linspace(0, 1, m);
+% newmap = zeros(m, 3);
+% 
+% for i=1:3
+%     % Interpolate over RGB spaces of colormap
+%     newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+% end
+% 
+% % set(gcf, 'colormap', newmap), colorbar
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/cmaptools.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/cmaptools.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/cmaptools.py	(revision 27955)
@@ -0,0 +1,75 @@
+import numpy as np
+
+try:
+    import matplotlib as mpl
+    import matplotlib.pyplot as plt
+    from matplotlib.colors import ListedColormap, hsv_to_rgb
+except ImportError:
+    print('cannot import matplotlib, no plotting capabilities enabled')
+
+
+def getcolormap(options):
+    '''
+    get colormap from options and apply
+
+    default: viridis
+    supported:
+        matplotlib defaults (see: pyplot.colormaps())
+        Rignot
+        demmap(50, -300, 1200)
+        demmap(50, -300, 1200, 'ibcao')
+
+    Usage:
+        cmap = getcolormap(options)
+    '''
+
+    map_name = options.getfieldvalue('colormap')
+    cmap = 'viridis'
+
+    # already a valid colormap, the name of a valid colormap, or empty (use default)
+    if type(map_name) == mpl.colors.ListedColormap:
+        return map_name
+    elif map_name in plt.colormaps():
+        return map_name
+    elif map_name == '':
+        return cmap
+
+    # if we don't have a matching colormap, build one
+    if map_name == 'Rignot':
+        alpha = options.getfieldvalue('alpha', 1)
+        cmap = np.array((np.linspace(0, 1, 128, False), np.ones(128, ), np.ones(128, ))).T
+        cmap[:, 1] = np.maximum(np.minimum((0.1 + cmap[:, 0]**(1 / alpha)), 1), 0)
+        cmap = hsv_to_rgb(cmap)
+    # construct a colormap object from an array of shape (n, 3 / 4)
+        cmap = ListedColormap(cmap)
+
+    #elif map_name == 'Ala':
+
+    else:
+        # map is a library or executable function that constructs a colormap,
+        #   function must be imported above
+        try:
+            cmap = ListedColormap(eval(map_name))
+        except:
+            raise RuntimeError("getcolormap: Error: provided colormap must be supported map or map - constructing function with syntax: 'jet' or 'function(args)'")
+
+    return cmap
+
+
+def truncate_colormap(cmap, minval=0.0, maxval=1.0, n=100):
+    '''
+    truncate a colormap within normalized limits [0, 1]
+
+    cmap - a matplotlib colormap
+    minval - minimum value, normalized, of cmap to be returned.
+    maxval - maximum value, normalized, of cmap to be returned.
+    n - number of levels to use in constructing the new colormap
+
+    Example:
+        newcmap = truncate_colormap(oldcmap, minval = 0.2, maxval = 0.8, n = 128)
+
+    '''
+
+    new_cmap = mpl.colors.LinearSegmentedColormap.from_list('trunc({n}, {a:.2f}, {b:.2f})'.format(n=cmap.name, a=minval, b=maxval), cmap(np.linspace(minval, maxval, n)))
+
+    return new_cmap
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/cmocean.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/cmocean.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/cmocean.m	(revision 27955)
@@ -0,0 +1,6989 @@
+function cmap = cmocean(ColormapName,varargin) 
+% cmocean returns perceptually-uniform colormaps created by Kristen Thyng. 
+% 
+%% Syntax 
+% 
+%  cmocean 
+%  cmap = cmocean('ColormapName') 
+%  cmap = cmocean('-ColormapName') 
+%  cmap = cmocean(...,NLevels)
+%  cmap = cmocean(...,'pivot',PivotValue) 
+%  cmap = cmocean(...,'negative') 
+%  cmocean(...)
+% 
+%% Description 
+% 
+% cmocean without any inputs displays the options for colormaps. 
+% 
+% cmap = cmocean('ColormapName') returns a 256x3 colormap. ColormapName can be any of 
+% of the following: 
+% 
+%          SEQUENTIAL:                DIVERGING: 
+%          'thermal'                  'balance'
+%          'haline'                   'delta'
+%          'solar'                    'curl'
+%          'ice'                      'diff'
+%          'gray'                     'tarn'
+%          'oxy' 
+%          'deep'                     CONSTANT LIGHTNESS:
+%          'dense'                    'phase'
+%          'algae'                
+%          'matter'                   OTHER:
+%          'turbid'                   'topo'
+%          'speed'                    
+%          'amp'
+%          'tempo'
+%          'rain'
+%
+% cmap = cmocean('-ColormapName') a minus sign preceeding any ColormapName flips the
+% order of the colormap. 
+%
+% cmap = cmocean(...,NLevels) specifies a number of levels in the colormap.  Default
+% value is 256. 
+%
+% cmap = cmocean(...,'pivot',PivotValue) centers a diverging colormap such that white 
+% corresponds to a given value and maximum extents are set using current caxis limits. 
+% If no PivotValue is set, 0 is assumed. Early versions of this function used 'zero'
+% as the syntax for 'pivot',0 and the old syntax is still supported. 
+%
+% cmap = cmocean(...,'negative') inverts the lightness profile of the colormap. This can be 
+% useful particularly for divergent colormaps if the default white point of divergence
+% gets lost in a white background. 
+% 
+% cmocean(...) without any outputs sets the current colormap to the current axes.  
+% 
+%% Examples 
+% Using this sample plot: 
+% 
+%   imagesc(peaks(1000)+1)
+%   colorbar
+% 
+% Set the colormap to 'algae': 
+% 
+%   cmocean('algae') 
+% 
+% Same as above, but with an inverted algae colormap: 
+% 
+%   cmocean('-algae')
+% 
+% Set the colormap to a 12-level 'solar': 
+% 
+%   cmocean('solar',12)
+% 
+% Get the RGB values of a 5-level thermal colormap: 
+% 
+%   RGB = cmocean('thermal',5)
+% 
+% Some of those values are below zero and others are above. If this dataset represents
+% anomalies, perhaps a diverging colormap is more appropriate: 
+% 
+%   cmocean('balance') 
+% 
+% It's unlikely that 1.7776 is an interesting value about which the data values 
+% diverge.  If you want to center the colormap on zero using the current color 
+% axis limits, simply include the 'pivot' option:  
+% 
+%   cmocean('balance','pivot',0) 
+%
+%% Author Info 
+% This function was written by Chad A. Greene of the Institute for Geophysics at the 
+% University of Texas at Austin (UTIG), June 2016, using colormaps created by Kristen
+% Thyng of Texas A&M University, Department of Oceanography. More information on the
+% cmocean project can be found at http://matplotlib.org/cmocean/. 
+% 
+%% Citing this colormap: 
+% If you find an occasion to cite these colormaps for any reason, or if you just want
+% some nice beach reading, check out the following paper from the journal Oceanography: 
+% 
+% Thyng, K.M., C.A. Greene, R.D. Hetland, H.M. Zimmerle, and S.F. DiMarco. 2016. True 
+% colors of oceanography: Guidelines for effective and accurate colormap selection. 
+% Oceanography 29(3):9?13, http://dx.doi.org/10.5670/oceanog.2016.66.
+% 
+% See also colormap and caxis.  
+
+%% Display colormap options: 
+
+if nargin==0
+   figure('menubar','none','numbertitle','off','Name','cmocean options:')
+   
+   if license('test','image_toolbox')
+      imshow(imread('cmocean.png')); 
+   else
+      axes('pos',[0 0 1 1])
+      image(imread('cmocean.png')); 
+      axis image off
+   end
+   
+   return
+end
+%% Error checks: 
+
+assert(isnumeric(ColormapName)==0,'Input error: ColormapName must be a string.') 
+
+%% Set defaults: 
+
+NLevels = 256; 
+autopivot = false; 
+PivotValue = 0; 
+InvertedColormap = false; 
+
+%% Parse inputs: 
+
+% Does user want to flip the colormap direction? 
+dash = regexp(ColormapName,'-'); 
+if any(dash) 
+   InvertedColormap = true; 
+   ColormapName(dash) = []; 
+end
+
+% Forgive the British: 
+if strncmpi(ColormapName,'grey',4)
+   ColormapName = 'gray'; 
+end
+
+% Does the user want a "negative" version of the colormap (with an inverted lightness profile)? 
+tmp = strncmpi(varargin,'negative',3); 
+if any(tmp) 
+   negativeColormap = true; 
+   varargin = varargin(~tmp); 
+else
+   negativeColormap = false; 
+end
+
+% Does the user want to center a diverging colormap on a specific value? 
+% This parsing support original 'zero' syntax and current 'pivot' syntax. 
+ tmp = strncmpi(varargin,'pivot',3) | strncmpi(varargin,'zero',3); % Thanks to Phelype Oleinik for this suggestion. 
+ if any(tmp) 
+   autopivot = true; 
+   try
+      if isscalar(varargin{find(tmp)+1})
+         PivotValue = varargin{find(tmp)+1}; 
+         tmp(find(tmp)+1) = 1; 
+      end
+   end
+   varargin = varargin(~tmp); 
+end
+
+% Has user requested a specific number of levels? 
+tmp = isscalar(varargin); 
+if any(tmp) 
+   NLevels = varargin{tmp}; 
+end
+
+
+%% Load RGB values and interpolate to NLevels: 
+
+cmap = cmoceanRawRGB(ColormapName); % a subfunction provided below with RGB values of all maps. 
+
+if negativeColormap
+   
+   % Convert RGB to LAB colorspace: 
+   LAB = colorspace('RGB->LAB',cmap); 
+
+   % Operate on the lightness profile: 
+   L = LAB(:,1); 
+
+   % Flip the lightness profile and set the lowest point to black:
+   L = max(L) - L; 
+
+   % Stretch the lightness profile to make the lightest bits 95% white. (Going 100% white
+   % would make the ends of a divergent profile impossible to distinguish.)
+   L = L*(95/max(L)); 
+
+   % Make a new LAB matrix: 
+   LAB = [L LAB(:,2:3)]; 
+   
+   % Convert LAB back to RGB: 
+   cmap = colorspace('LAB->RGB',LAB); 
+end
+
+%% Invert the colormap if requested by user: 
+
+if InvertedColormap
+   cmap = flipud(cmap); 
+end
+
+%% Adjust values to current caxis limits? 
+
+if autopivot
+   clim = caxis; 
+   assert(PivotValue>=clim(1) & PivotValue<=clim(2),'Error: pivot value must be within the current color axis limits.') 
+   maxval = max(abs(clim-PivotValue)); 
+   cmap = interp1(linspace(-maxval,maxval,size(cmap,1))+PivotValue, cmap, linspace(clim(1),clim(2),size(cmap,1)),'linear');
+end
+
+%% Interpolate if necessary: 
+
+if NLevels~=size(cmap,1)
+   cmap = interp1(1:size(cmap,1), cmap, linspace(1,size(cmap,1),NLevels),'linear');
+end
+
+%% Clean up 
+
+if nargout==0
+   colormap(gca,cmap) 
+   clear cmap  
+end
+
+
+
+%%  S U B F U N C T I O N S 
+
+
+function RGB = cmoceanRawRGB(cmapName) 
+
+
+switch lower(cmapName(1:3))
+   case {'dee'} 
+      RGB = [9.928371765383620096e-01 9.943734553013935384e-01 8.001361955494933342e-01
+9.849374457410008388e-01 9.913545172197536504e-01 7.953271573982337861e-01
+9.770418482420034634e-01 9.883418276673759939e-01 7.905717472557142189e-01
+9.691488355955474310e-01 9.853357520972024775e-01 7.858697059005903540e-01
+9.612382061888059548e-01 9.823439661710483550e-01 7.812181455049906909e-01
+9.533233708513803029e-01 9.793607550577946297e-01 7.766197776697654209e-01
+9.454069776374501854e-01 9.763847481120443428e-01 7.720753845210462929e-01
+9.374799177499437697e-01 9.734191074102575003e-01 7.675843461643131471e-01
+9.295353395208965086e-01 9.704660061861888343e-01 7.631467470398153319e-01
+9.215850348376466439e-01 9.675205198521025229e-01 7.587646801057830181e-01
+9.136274030668488644e-01 9.645828701859077148e-01 7.544386825530340346e-01
+9.056514559384564178e-01 9.616567079910524063e-01 7.501688017241657791e-01
+8.976569922484586295e-01 9.587415918264282633e-01 7.459562027416458685e-01
+8.896512126622908578e-01 9.558344072358454513e-01 7.418023698547455691e-01
+8.816325974742758032e-01 9.529352564923027069e-01 7.377082218108865774e-01
+8.735986658557798323e-01 9.500445573198598170e-01 7.336747582572585857e-01
+8.655355018678880796e-01 9.471666805105979359e-01 7.297031220835451526e-01
+8.574559441871676402e-01 9.442965454208677167e-01 7.257948454644865821e-01
+8.493586413080321806e-01 9.414341108550433601e-01 7.219511807036801398e-01
+8.412422934868647451e-01 9.385792958890862847e-01 7.181734629573161000e-01
+8.331056602292961077e-01 9.357319779845385543e-01 7.144631077114116380e-01
+8.249438571064254822e-01 9.328932140048489252e-01 7.108218561594963347e-01
+8.167536485550084269e-01 9.300634438432798801e-01 7.072516022427790539e-01
+8.085407925860420564e-01 9.272401607530683654e-01 7.037535913222745521e-01
+8.003043988510905038e-01 9.244230580301131539e-01 7.003294929842703853e-01
+7.920436855303579771e-01 9.216117772405966191e-01 6.969810377273069069e-01
+7.837579923068553889e-01 9.188059058340631857e-01 6.937100117646464170e-01
+7.754467945117471395e-01 9.160049747102424478e-01 6.905182510191696377e-01
+7.671097184662585278e-01 9.132084557727712104e-01 6.874076341947011892e-01
+7.587465580267132026e-01 9.104157595099175992e-01 6.843800748081978469e-01
+7.503572923166539343e-01 9.076262326497597233e-01 6.814375120698907828e-01
+7.419421046029871514e-01 9.048391559449654453e-01 6.785819005039074314e-01
+7.335014022414247936e-01 9.020537421501462205e-01 6.758151982106467281e-01
+7.250358375800118882e-01 8.992691342626382145e-01 6.731393536848668813e-01
+7.165463296678448168e-01 8.964844041051395207e-01 6.705562911206142118e-01
+7.080340865696405084e-01 8.936985513356989763e-01 6.680678941563225059e-01
+6.995006280355556827e-01 8.909105029766873907e-01 6.656759880411459163e-01
+6.909478082204841831e-01 8.881191135591984809e-01 6.633823202371271766e-01
+6.823778380886152961e-01 8.853231659823359578e-01 6.611885395113676900e-01
+6.737933070789577927e-01 8.825213731875580780e-01 6.590961736178440056e-01
+6.651972035471812594e-01 8.797123807461469935e-01 6.571066057195337207e-01
+6.565929334411800822e-01 8.768947704523611941e-01 6.552210497573525139e-01
+6.479843366143701600e-01 8.740670650055498703e-01 6.534405250319036407e-01
+6.393757001353049807e-01 8.712277338509245572e-01 6.517658303256151919e-01
+6.307693113306602761e-01 8.683757593089920235e-01 6.501986071208971651e-01
+6.221681809999368706e-01 8.655099786991408140e-01 6.487403091120448329e-01
+6.135828162115329887e-01 8.626276255310663110e-01 6.473888753222819537e-01
+6.050194699551968425e-01 8.597270135144634562e-01 6.461439080647282118e-01
+5.964848373853082197e-01 8.568064537576968176e-01 6.450046593443751197e-01
+5.879840953182007279e-01 8.538646600753627691e-01 6.439710905713145195e-01
+5.795218127572832056e-01 8.509005270271372545e-01 6.430435569229606685e-01
+5.711115213696185133e-01 8.479112775740021979e-01 6.422171169895777298e-01
+5.627614837100215484e-01 8.448953489705807174e-01 6.414893854468299850e-01
+5.544783665092802849e-01 8.418515860497588488e-01 6.408587965640016870e-01
+5.462695843545278818e-01 8.387787842708503971e-01 6.403232223573597226e-01
+5.381481232862911357e-01 8.356748924828519831e-01 6.398763669277579558e-01
+5.301228248165350543e-01 8.325387580839158641e-01 6.395142187190840932e-01
+5.221997330825246530e-01 8.293697946738645133e-01 6.392346216632595057e-01
+5.143908532894702068e-01 8.261665755050031645e-01 6.390304309659169402e-01
+5.067050118087177424e-01 8.229283397233977393e-01 6.388963162980869637e-01
+4.991495064662723746e-01 8.196546689563362076e-01 6.388277739100475250e-01
+4.917330703220189059e-01 8.163450533427777378e-01 6.388184799685107107e-01
+4.844633050708381794e-01 8.129992646664957467e-01 6.388624455765857801e-01
+4.773469739538908629e-01 8.096172922533247940e-01 6.389538165444101914e-01
+4.703904182695624603e-01 8.061992786917829834e-01 6.390864379965265352e-01
+4.635986539031755060e-01 8.027456073395251579e-01 6.392548734619343254e-01
+4.569766618393767410e-01 7.992567478306369377e-01 6.394529319719780558e-01
+4.505287643111087204e-01 7.957333261733031682e-01 6.396742566585853496e-01
+4.442569334258392177e-01 7.921762343010834151e-01 6.399148201157260907e-01
+4.381634653667463852e-01 7.885863788123392837e-01 6.401694292235835526e-01
+4.322513883314121341e-01 7.849647158245569578e-01 6.404304190942151642e-01
+4.265195639210723755e-01 7.813124732411278472e-01 6.406960731925235297e-01
+4.209679602144861810e-01 7.776308288475485275e-01 6.409622276506293792e-01
+4.155968407812616339e-01 7.739210344346504344e-01 6.412227317683711902e-01
+4.104045242070183952e-01 7.701844253858858291e-01 6.414742347181462412e-01
+4.053883482522956383e-01 7.664223146281371468e-01 6.417151578859574546e-01
+4.005459328058830759e-01 7.626360316845265386e-01 6.419424749255564500e-01
+3.958750262046074608e-01 7.588270315806920907e-01 6.421508285001665817e-01
+3.913718273240804346e-01 7.549966666219802836e-01 6.423387337484185444e-01
+3.870322615152646528e-01 7.511462095764531721e-01 6.425055472082883412e-01
+3.828523536620307977e-01 7.472769743775978801e-01 6.426493131526664904e-01
+3.788278449989629926e-01 7.433902546660990929e-01 6.427683061328856029e-01
+3.749542811367644335e-01 7.394876286687900313e-01 6.428573615340694714e-01
+3.712266123106295335e-01 7.355700686179795778e-01 6.429189618774799886e-01
+3.676399929257251897e-01 7.316387718079003788e-01 6.429520487195032885e-01
+3.641894512092864744e-01 7.276949011320993366e-01 6.429557270674552960e-01
+3.608699207518579755e-01 7.237395816489646805e-01 6.429292709767442382e-01
+3.576762479926827720e-01 7.197739138067411613e-01 6.428719883285997083e-01
+3.546027248366774298e-01 7.157992458648064771e-01 6.427810759039616073e-01
+3.516446005650431528e-01 7.118162697085735902e-01 6.426589560156208414e-01
+3.487967412412643076e-01 7.078259414050183107e-01 6.425054728664090220e-01
+3.460540467004642462e-01 7.038291754672099110e-01 6.423205839967465192e-01
+3.434114694865876838e-01 6.998268449671132263e-01 6.421043512357870187e-01
+3.408640318201912600e-01 6.958197818437616977e-01 6.418569321473704958e-01
+3.384068406811324148e-01 6.918087773726725453e-01 6.415785719753461791e-01
+3.360351011011302735e-01 6.877945827659479594e-01 6.412695960850323118e-01
+3.337441277691141628e-01 6.837779098758932639e-01 6.409304028912300444e-01
+3.315291322901112725e-01 6.797595093162658308e-01 6.405610222271946874e-01
+3.293855731203558790e-01 6.757400463409192204e-01 6.401618521317685717e-01
+3.273095072934468774e-01 6.717199943156246800e-01 6.397341828681051279e-01
+3.252967835603527980e-01 6.676999151191671533e-01 6.392786349130804568e-01
+3.233433949344308722e-01 6.636803359579184214e-01 6.387958727683986648e-01
+3.214454825944703664e-01 6.596617502568347113e-01 6.382866005148117861e-01
+3.195993388733257556e-01 6.556446185422359907e-01 6.377515576836865208e-01
+3.178014094235615539e-01 6.516293693095515094e-01 6.371915154212616228e-01
+3.160482946464280851e-01 6.476163998706647718e-01 6.366072729215248582e-01
+3.143367504654775990e-01 6.436060771766987099e-01 6.359996541044424800e-01
+3.126636885203824545e-01 6.395987386132337971e-01 6.353695045172913503e-01
+3.110261758511674857e-01 6.355946927658273626e-01 6.347176884379418516e-01
+3.094214341373541788e-01 6.315942201545601264e-01 6.340450861601970578e-01
+3.078468385510386152e-01 6.275975739369872297e-01 6.333525914425652825e-01
+3.062999162775806861e-01 6.236049805794583456e-01 6.326411091031564071e-01
+3.047783447524610168e-01 6.196166404972232034e-01 6.319115527447410896e-01
+3.032799496578738041e-01 6.156327286641396501e-01 6.311648425953061414e-01
+3.018027027180503197e-01 6.116533951930802626e-01 6.304019034507418739e-01
+3.003447193279823457e-01 6.076787658883653354e-01 6.296236627075371128e-01
+2.989042560461285802e-01 6.037089427717098333e-01 6.288310484745529561e-01
+2.974797079780254205e-01 5.997440045832753697e-01 6.280249877540684533e-01
+2.960696060742640245e-01 5.957840072594756675e-01 6.272064046833601969e-01
+2.946726143633343065e-01 5.918289843891730850e-01 6.263762188290394883e-01
+2.932875271368584058e-01 5.878789476499071132e-01 6.255353435272825724e-01
+2.919132661023912667e-01 5.839338872257091584e-01 6.246846842638799080e-01
+2.905488775167375803e-01 5.799937722079637759e-01 6.238251370887518688e-01
+2.891935293105973304e-01 5.760585509806988025e-01 6.229575870601862242e-01
+2.878465082138687570e-01 5.721281515915097593e-01 6.220829067145717817e-01
+2.865071747347951447e-01 5.682024945496734203e-01 6.212019079466474247e-01
+2.851749861947763254e-01 5.642814857106783766e-01 6.203153697409601319e-01
+2.838497050469647731e-01 5.603649539888247988e-01 6.194242689076802089e-01
+2.825310677598035780e-01 5.564527485481920444e-01 6.185294158631611250e-01
+2.812189151446758406e-01 5.525446999518639490e-01 6.176316008625786225e-01
+2.799131896111074491e-01 5.486406204645675189e-01 6.167315925457064196e-01
+2.786139324558262742e-01 5.447403043452749838e-01 6.158301364812402978e-01
+2.773212811865227168e-01 5.408435281299215358e-01 6.149279537054621603e-01
+2.760354668808263079e-01 5.369500509042623992e-01 6.140257392505246159e-01
+2.747568115804877587e-01 5.330596145668072827e-01 6.131241606570347891e-01
+2.734857257205313141e-01 5.291719440816851083e-01 6.122238564648385672e-01
+2.722227055926091377e-01 5.252867477212617153e-01 6.113254346750160995e-01
+2.709683308416185876e-01 5.214037172983150281e-01 6.104294711750373192e-01
+2.697232619941725140e-01 5.175225283875982685e-01 6.095365081178055755e-01
+2.684882380171457750e-01 5.136428405367017280e-01 6.086470522439324515e-01
+2.672640739041831637e-01 5.097642974662250914e-01 6.077615731349965689e-01
+2.660516582874621339e-01 5.058865272594796902e-01 6.068805013837572648e-01
+2.648519510715739433e-01 5.020091425421505660e-01 6.060042266652778675e-01
+2.636659810857353015e-01 4.981317406526836744e-01 6.051330956906521008e-01
+2.624948437498288434e-01 4.942539038045714039e-01 6.042674100224807443e-01
+2.613396987489819967e-01 4.903751992421883643e-01 6.034074237284018372e-01
+2.602017811880152354e-01 4.864951750164123179e-01 6.025533553474511361e-01
+2.590825816132030779e-01 4.826133005480903182e-01 6.017055804809932074e-01
+2.579832374637801018e-01 4.787291639776031782e-01 6.008639770499764055e-01
+2.569051367797046126e-01 4.748422758923547815e-01 6.000285749995881712e-01
+2.558497193309375306e-01 4.709521329962904068e-01 5.991993407256713811e-01
+2.548184740794410263e-01 4.670582183399953347e-01 5.983761730113198452e-01
+2.538129365659009817e-01 4.631600015854966945e-01 5.975588985257048735e-01
+2.528346862021874641e-01 4.592569393176054171e-01 5.967472668238706923e-01
+2.518853434473967146e-01 4.553484754161292725e-01 5.959409447786497838e-01
+2.509665668417216944e-01 4.514340415062205181e-01 5.951395103673859932e-01
+2.500800498681828299e-01 4.475130575075850214e-01 5.943424457267542094e-01
+2.492275176071283571e-01 4.435849323073600692e-01 5.935491293785424283e-01
+2.484107231427581941e-01 4.396490645862106139e-01 5.927588275177814170e-01
+2.476314436738927260e-01 4.357048438328084417e-01 5.919706842419948378e-01
+2.468914762732849488e-01 4.317516515883728090e-01 5.911837105866416531e-01
+2.461926332303804310e-01 4.277888629705645096e-01 5.903967722170088139e-01
+2.455367369014649914e-01 4.238158485348740845e-01 5.896085756110598375e-01
+2.449256139784778408e-01 4.198319765418777605e-01 5.888176525512366366e-01
+2.443611399380560822e-01 4.158365980702596332e-01 5.880223891276964432e-01
+2.438461792188084676e-01 4.118287207942545325e-01 5.872218507211212080e-01
+2.433817108226277726e-01 4.078080077755985022e-01 5.864131553289283483e-01
+2.429695407602900925e-01 4.037738393736669540e-01 5.855939512690606641e-01
+2.426114394907277760e-01 3.997256137994158465e-01 5.847615988448080504e-01
+2.423091294682429564e-01 3.956627542073260506e-01 5.839131390484204598e-01
+2.420642707838099872e-01 3.915847171721096864e-01 5.830452587571144374e-01
+2.418784445905285962e-01 3.874910027793410650e-01 5.821542521747482546e-01
+2.417531339648231747e-01 3.833811665857123074e-01 5.812359783131098023e-01
+2.416897018162703636e-01 3.792548337300427064e-01 5.802858143751018494e-01
+2.416907565718227624e-01 3.751112253980636857e-01 5.792995847596160708e-01
+2.417595622535183009e-01 3.709493751547713325e-01 5.782729391945388153e-01
+2.418940089237943680e-01 3.667702659833258494e-01 5.771972660307567171e-01
+2.420946965383475313e-01 3.625739944720036134e-01 5.760653956197256953e-01
+2.423619198524908369e-01 3.583608468185064400e-01 5.748693688323588402e-01
+2.426978313653707087e-01 3.541305556383861908e-01 5.736016010478480753e-01
+2.431056167697961956e-01 3.498826161637011989e-01 5.722540340252517677e-01
+2.435790408918375727e-01 3.456199709880173332e-01 5.708127541670769967e-01
+2.441164681518231960e-01 3.413441041408621368e-01 5.692658625959313712e-01
+2.447220255685461088e-01 3.370546900675063240e-01 5.676029832475817383e-01
+2.453897790312707938e-01 3.327551263503047418e-01 5.658082210414479007e-01
+2.461121481740833894e-01 3.284495884603169102e-01 5.638648470620498676e-01
+2.468912126448456479e-01 3.241391993124722593e-01 5.617586120246663706e-01
+2.477157002362878613e-01 3.198299095156284522e-01 5.594704462476630669e-01
+2.485761162021524751e-01 3.155272777788998839e-01 5.569822129976372826e-01
+2.494682375867288693e-01 3.112353605277175528e-01 5.542766318947622839e-01
+2.503729202057394798e-01 3.069632816204772574e-01 5.513352372309007210e-01
+2.512817651002536290e-01 3.027167370222472731e-01 5.481422664464320471e-01
+2.521753740527091225e-01 2.985048904754492582e-01 5.446839245346258851e-01
+2.530378388279626023e-01 2.943355684042912035e-01 5.409499814033098541e-01
+2.538514672799476179e-01 2.902167617845944347e-01 5.369345375383627328e-01
+2.545978636988186494e-01 2.861560770732184955e-01 5.326370186681820273e-01
+2.552597334794323158e-01 2.821600341185547811e-01 5.280624026249696179e-01
+2.558254018044066047e-01 2.782328077909240194e-01 5.232189983935346955e-01
+2.562737222001675308e-01 2.743799915974786674e-01 5.181261586082565040e-01
+2.566051651711689918e-01 2.706008890121900934e-01 5.127963599343589030e-01
+2.568071232679735028e-01 2.668971447705413280e-01 5.072541841677337127e-01
+2.568729082739400482e-01 2.632680806498599591e-01 5.015251413221865073e-01
+2.568088786232387566e-01 2.597098435540172168e-01 4.956253550777797723e-01
+2.566151212870083631e-01 2.562195453869526296e-01 4.895770754997314511e-01
+2.562879598478859378e-01 2.527944349049762174e-01 4.834087259028412853e-01
+2.558322794870629413e-01 2.494300496133808887e-01 4.771399728195321877e-01
+2.552572079534596305e-01 2.461214417402471932e-01 4.707834286138410929e-01
+2.545675711557803811e-01 2.428643843006248471e-01 4.643557571030281772e-01
+2.537686502971923108e-01 2.396546885092911139e-01 4.578718126285494239e-01
+2.528659964243425984e-01 2.364882912834416206e-01 4.513446141213755536e-01
+2.518652755598765891e-01 2.333613180085921113e-01 4.447853910070804773e-01
+2.507721436866522935e-01 2.302701237479483076e-01 4.382036814126420432e-01
+2.495921493408267966e-01 2.272113165747541852e-01 4.316074651476269897e-01
+2.483306606950595463e-01 2.241817667402334346e-01 4.250033167249620547e-01
+2.469928136315570621e-01 2.211786051187170643e-01 4.183965667275956202e-01
+2.455817950644241798e-01 2.181991605590304917e-01 4.117955160707330586e-01
+2.440963016438912891e-01 2.152407079180826410e-01 4.052187485307188752e-01
+2.425474613143962510e-01 2.123011804696942062e-01 3.986531809377649171e-01
+2.409394174709658110e-01 2.093786088479052676e-01 3.921004515047561423e-01
+2.392760085101002243e-01 2.064712127546999287e-01 3.855616338648150121e-01
+2.375559510487991743e-01 2.035768990151702318e-01 3.790513023869773179e-01
+2.357791582066215419e-01 2.006936504843463420e-01 3.725810406048237766e-01
+2.339566833930070699e-01 1.978208439176197264e-01 3.661282774694271658e-01
+2.320913707908846546e-01 1.949572807641995476e-01 3.596924727656225507e-01
+2.301734316844865069e-01 1.921000566693645550e-01 3.533131710447778295e-01
+2.282155151615900546e-01 1.892493734782149939e-01 3.469585312854190362e-01
+2.262221013532286218e-01 1.864046213456004575e-01 3.406203233993785884e-01
+2.241821302892643142e-01 1.835626593748518609e-01 3.343431537784405938e-01
+2.221083620693462546e-01 1.807243380946543521e-01 3.280900612914751102e-01
+2.200027865362182422e-01 1.778889096627078448e-01 3.218593457818205161e-01
+2.178554139765243036e-01 1.750533261852178779e-01 3.156932341101472139e-01
+2.156819223383368844e-01 1.722195412332822306e-01 3.095395593647118360e-01
+2.134730781003147948e-01 1.693846918206770857e-01 3.034377234324792671e-01
+2.112350828916275125e-01 1.665490510713014960e-01 2.973690772834624574e-01
+2.089702734855372057e-01 1.637121940546225618e-01 2.913286801723345421e-01
+2.066728560428846562e-01 1.608719311731062473e-01 2.853437530392856081e-01
+2.043551063834350701e-01 1.580301135357929931e-01 2.793689192405632293e-01
+2.020028382233076125e-01 1.551826890051333785e-01 2.734655011163185101e-01
+1.996333580091984583e-01 1.523327614839000976e-01 2.675659276139747411e-01
+1.972319620276792862e-01 1.494761585027865047e-01 2.617344119314569673e-01
+1.948137533226730334e-01 1.466155558553730864e-01 2.559107021731873988e-01
+1.923665760685599468e-01 1.437473901381048913e-01 2.501489823140411461e-01
+1.899031789417767457e-01 1.408738040042367690e-01 2.443975812138057813e-01
+1.874125186315797886e-01 1.379915476831030108e-01 2.387062880680187460e-01
+1.849071752981109873e-01 1.351026683367795023e-01 2.330231779340583564e-01
+1.823751828761793481e-01 1.322038111876145949e-01 2.274020989868827392e-01
+1.798308834661569988e-01 1.292972741720705698e-01 2.217828373102059270e-01
+1.772595702951434704e-01 1.263792859047284667e-01 2.162309361702130506e-01
+1.746769766714075522e-01 1.234522307754042925e-01 2.106797904214151584e-01
+1.720703275074147443e-01 1.205129174047056828e-01 2.051860710532931176e-01
+1.694509066570421274e-01 1.175626362090423926e-01 1.997023294326863430e-01
+1.668117590877864764e-01 1.145994139402238821e-01 1.942594655847655616e-01
+1.641571774416621943e-01 1.116231764992316466e-01 1.888399155026514453e-01
+1.614878059346168959e-01 1.086331782717616379e-01 1.834416540200605461e-01
+1.587995102818766935e-01 1.056281331759973130e-01 1.780821476813713722e-01
+1.561019746507273376e-01 1.026082525875711138e-01 1.727215696232307918e-01]; 
+
+   case 'mat' 
+      RGB = [9.942936149611202312e-01 9.303277953232079733e-01 6.910969022498407721e-01
+9.938034737629607429e-01 9.248067799917484288e-01 6.856470896792071779e-01
+9.932915386396504731e-01 9.192993747690529904e-01 6.802308895677181555e-01
+9.927922245331627371e-01 9.137917294903226129e-01 6.748329403835298113e-01
+9.922937701498860674e-01 9.082882194233706796e-01 6.694590190525575579e-01
+9.917843550306121303e-01 9.027933977435592672e-01 6.641148019075449049e-01
+9.912962746539998315e-01 8.972938428980343772e-01 6.587860434151366906e-01
+9.907825925330567829e-01 8.918085346471608110e-01 6.534941055176841651e-01
+9.902949549053171596e-01 8.863158938146130650e-01 6.482161486636766057e-01
+9.897868190815676259e-01 8.808350065840212517e-01 6.429731121246738956e-01
+9.892857473867685547e-01 8.753541152485579957e-01 6.377529594546893499e-01
+9.887800796370288525e-01 8.698778821960219121e-01 6.325610007226144527e-01
+9.882646997282734658e-01 8.644083076900085372e-01 6.273995656371403884e-01
+9.877584964502673648e-01 8.589369989413550011e-01 6.222606017222616082e-01
+9.872280289134517384e-01 8.534782966339129473e-01 6.171585665698279266e-01
+9.867183884350317902e-01 8.480122040334344691e-01 6.120742768604477968e-01
+9.861766767190066618e-01 8.425618846460892764e-01 6.070302342911766402e-01
+9.856563017997251874e-01 8.371033300354000506e-01 6.020039838864913451e-01
+9.851070454224936102e-01 8.316588814371468352e-01 5.970165676525449605e-01
+9.845690242211674326e-01 8.262101763023093071e-01 5.920513492549713819e-01
+9.840096682146298734e-01 8.207718909127237339e-01 5.871217557569952117e-01
+9.834535848293927129e-01 8.153324961500217904e-01 5.822177451775890633e-01
+9.828817074848651414e-01 8.099006555998068402e-01 5.773470477348076058e-01
+9.823072425148250408e-01 8.044699893992296458e-01 5.725043678439867278e-01
+9.817205500240108185e-01 7.990448613324698801e-01 5.676935526547516320e-01
+9.811274651130897917e-01 7.936222997819741831e-01 5.629123141708799460e-01
+9.805237822250761903e-01 7.882041368744077126e-01 5.581623151179201381e-01
+9.799119019116716567e-01 7.827890166019746410e-01 5.534426550185235216e-01
+9.792891597791347769e-01 7.773780574795166043e-01 5.487543863553446810e-01
+9.786583517021393286e-01 7.719696800001862869e-01 5.440965033742034551e-01
+9.780145739702225116e-01 7.665661517278330450e-01 5.394708896034823287e-01
+9.773647283145959763e-01 7.611637891820339785e-01 5.348750765091280224e-01
+9.766980163585675667e-01 7.557679109997390565e-01 5.303130790083464552e-01
+9.760290252537030531e-01 7.503708130006796484e-01 5.257797515465254534e-01
+9.753375433133614214e-01 7.449828010040938642e-01 5.212823917018596376e-01
+9.746492807368433153e-01 7.395902023503717615e-01 5.168121142252199984e-01
+9.739312415395592337e-01 7.342102748450782812e-01 5.123804929986149892e-01
+9.732235441351503313e-01 7.288214038955377339e-01 5.079740009039053206e-01
+9.724836441494412176e-01 7.234462681298939879e-01 5.036071894033782304e-01
+9.717498445504565430e-01 7.180638747370174935e-01 4.992675340324776445e-01
+9.709912116410467364e-01 7.126909352035095679e-01 4.949654270232705655e-01
+9.702261620325377534e-01 7.073170976907954266e-01 4.906951514278061199e-01
+9.694484453171449134e-01 7.019455954348422511e-01 4.864590138179895606e-01
+9.686504017535663147e-01 6.965805969226914751e-01 4.822596297437949375e-01
+9.678531538881393059e-01 6.912098001765796251e-01 4.780909555078191597e-01
+9.670272977476158660e-01 6.858499112812684873e-01 4.739621016861336744e-01
+9.662030356838596790e-01 6.804831678592252464e-01 4.698646253054341027e-01
+9.653577621840926382e-01 6.751225363106635458e-01 4.658054627874114728e-01
+9.644956606754987449e-01 6.697653999656224544e-01 4.617837747090557943e-01
+9.636302007256901669e-01 6.644033993552483919e-01 4.577964421810854501e-01
+9.627382975013459854e-01 6.590502602174439506e-01 4.538500459526182973e-01
+9.618419029037778012e-01 6.536923650498338567e-01 4.499394348167297664e-01
+9.609293304705296412e-01 6.483365953124501369e-01 4.460681718992942080e-01
+9.599915754015638791e-01 6.429884241455728899e-01 4.422388634417756537e-01
+9.590555927894280908e-01 6.376305748866927248e-01 4.384459238793448344e-01
+9.580962561892508722e-01 6.322786777663680358e-01 4.346957499886874854e-01
+9.571138853949342495e-01 6.269324224641481536e-01 4.309887354294504314e-01
+9.561315297025726467e-01 6.215764963092997863e-01 4.273209635732272416e-01
+9.551250405128054455e-01 6.162263913356859080e-01 4.236980325915365997e-01
+9.540950546856811210e-01 6.108815734129118269e-01 4.201203681538954182e-01
+9.530626716897264705e-01 6.055275479248746207e-01 4.165851980241140895e-01
+9.520078397406573911e-01 6.001775213709300560e-01 4.130968208871531600e-01
+9.509298744158470873e-01 5.948318045431840728e-01 4.096560342134981103e-01
+9.498400194890849191e-01 5.894823244090308112e-01 4.062621760942275451e-01
+9.487347976692349638e-01 5.841311256224190895e-01 4.029168199567615405e-01
+9.476064491016543689e-01 5.787834319880815759e-01 3.996218296412110127e-01
+9.464553073333200617e-01 5.734388133376047136e-01 3.963780340202668340e-01
+9.452939757532162757e-01 5.680877777926379713e-01 3.931855149232086899e-01
+9.441119180634874875e-01 5.627376402983688131e-01 3.900463532360756713e-01
+9.429065439155045469e-01 5.573900694724827076e-01 3.869617715840133476e-01
+9.416779791961638058e-01 5.520447400757862999e-01 3.839328326459904850e-01
+9.404312902807343555e-01 5.466974929733746658e-01 3.809606687756254551e-01
+9.391670109637508812e-01 5.413475099598963336e-01 3.780467610439202097e-01
+9.378784499903906058e-01 5.359996531278976573e-01 3.751924384200013285e-01
+9.365655059652620018e-01 5.306537435419416138e-01 3.723989770682498146e-01
+9.352280123612883855e-01 5.253096443760549850e-01 3.696677100588824927e-01
+9.338657357609021492e-01 5.199672647340076725e-01 3.670000247302842578e-01
+9.324834513518638346e-01 5.146223341056469502e-01 3.643980039003675286e-01
+9.310764112648535207e-01 5.092783920261573227e-01 3.618628439391275986e-01
+9.296425700359164379e-01 5.039368520229430271e-01 3.593958605013685692e-01
+9.281814529069224440e-01 4.985978383651590851e-01 3.569985751712403399e-01
+9.266925163734759385e-01 4.932615377693159719e-01 3.546725399001493528e-01
+9.251751483021848355e-01 4.879282029910456120e-01 3.524193303048753223e-01
+9.236286685007274455e-01 4.825981562592266960e-01 3.502405381564949738e-01
+9.220523297832619036e-01 4.772717924986036864e-01 3.481377630517493160e-01
+9.204453195710341484e-01 4.719495822836188847e-01 3.461126032707011468e-01
+9.188067620643404210e-01 4.666320744633321582e-01 3.441666458384411431e-01
+9.171357210169962526e-01 4.613198983953663013e-01 3.423014558239780292e-01
+9.154312031382285664e-01 4.560137657258883093e-01 3.405185649261683878e-01
+9.136921621394280546e-01 4.507144716528461159e-01 3.388194594142976412e-01
+9.119175034344646491e-01 4.454228956112940563e-01 3.372055675093833527e-01
+9.101060894923883593e-01 4.401400013227078634e-01 3.356782463109665438e-01
+9.082567458304244834e-01 4.348668361548626016e-01 3.342387683926176800e-01
+9.063682676234201541e-01 4.296045297451883127e-01 3.328883082070119848e-01
+9.044394268935215253e-01 4.243542918485532223e-01 3.316279284576256203e-01
+9.024689802311073317e-01 4.191174093801583456e-01 3.304585666082093254e-01
+9.004556769853120368e-01 4.138952426354805536e-01 3.293810217125931472e-01
+8.983982678499889962e-01 4.086892206819806583e-01 3.283959417554291327e-01
+8.962955137593517918e-01 4.035008359311561543e-01 3.275038116986458414e-01
+8.941481104554649395e-01 3.983293983456084875e-01 3.267070561329722400e-01
+8.919536525149722728e-01 3.931778253066712803e-01 3.260048269152195366e-01
+8.897101199351982181e-01 3.880487567649602565e-01 3.253961697320843505e-01
+8.874163795567694413e-01 3.829439054205242554e-01 3.248807846244438635e-01
+8.850713585473568568e-01 3.778650063033766049e-01 3.244581619630766411e-01
+8.826755435924777959e-01 3.728118797277990004e-01 3.241299144458608672e-01
+8.802274289557096010e-01 3.677869127615048805e-01 3.238946418203613176e-01
+8.777249655021830410e-01 3.627933891756242590e-01 3.237493930733041925e-01
+8.751673985732256744e-01 3.578330531078428023e-01 3.236927558288430484e-01
+8.725555139394461923e-01 3.529055754992642124e-01 3.237261048951861064e-01
+8.698877548666956727e-01 3.480139364384642886e-01 3.238460395212981457e-01
+8.671629330678980452e-01 3.431608117920707524e-01 3.240490255671465425e-01
+8.643813155550574834e-01 3.383468700732272794e-01 3.243343280815126350e-01
+8.615430100192384977e-01 3.335730372253879472e-01 3.247007528957156497e-01
+8.586467469801843944e-01 3.288425164717434512e-01 3.251427866013465451e-01
+8.556930023091509074e-01 3.241559097884965657e-01 3.256590726700412941e-01
+8.526821206317460877e-01 3.195140519652634459e-01 3.262477399527137223e-01
+8.496135249080434271e-01 3.149194771604064691e-01 3.269031319055852869e-01
+8.464880691147448344e-01 3.103723490573296884e-01 3.276240607685041994e-01
+8.433059903582461603e-01 3.058739837233550030e-01 3.284066774658670473e-01
+8.400675201697129779e-01 3.014258630212182100e-01 3.292462412802209526e-01
+8.367737994501905918e-01 2.970277335155548926e-01 3.301419279880662416e-01
+8.334250817653976462e-01 2.926812202808505847e-01 3.310879308798391207e-01
+8.300223167271181257e-01 2.883865925403408248e-01 3.320815261966803544e-01
+8.265664528479066409e-01 2.841441353717970020e-01 3.331197789552536870e-01
+8.230582869411739999e-01 2.799545862699168719e-01 3.341980671944378423e-01
+8.194989991910379690e-01 2.758177426460852733e-01 3.353144156579274116e-01
+8.158895345625488682e-01 2.717340841090945536e-01 3.364643892127716640e-01
+8.122310472907531276e-01 2.677035350490168386e-01 3.376451421817873721e-01
+8.085246874446361254e-01 2.637260312682816465e-01 3.388536188130562565e-01
+8.047716060121338222e-01 2.598015433395364782e-01 3.400863817867416095e-01
+8.009730135703670983e-01 2.559297758719957794e-01 3.413409259751189473e-01
+7.971300939112275774e-01 2.521105612652171368e-01 3.426140174094376434e-01
+7.932440533013958017e-01 2.483435687707094552e-01 3.439030220163640239e-01
+7.893160890135294538e-01 2.446284526280468330e-01 3.452052771464595993e-01
+7.853473877765537736e-01 2.409648192333603833e-01 3.465182972816244766e-01
+7.813391260814397388e-01 2.373522835108513029e-01 3.478394483472491694e-01
+7.772924488739767490e-01 2.337903640474600642e-01 3.491667244042649942e-01
+7.732084983091196406e-01 2.302786572731657100e-01 3.504975234338518764e-01
+7.690883651827444822e-01 2.268166676306541119e-01 3.518300145036632465e-01
+7.649331213342656088e-01 2.234039396519906795e-01 3.531621316810459876e-01
+7.607438261029081383e-01 2.200400345294166726e-01 3.544916653625779235e-01
+7.565214435019435024e-01 2.167244640001846911e-01 3.558173116773682421e-01
+7.522670051172567485e-01 2.134568325306841485e-01 3.571365659018996275e-01
+7.479813874637180060e-01 2.102366867865238520e-01 3.584483801868486030e-01
+7.436655059621508634e-01 2.070636399021255625e-01 3.597509060488300325e-01
+7.393202434785964838e-01 2.039373173302497233e-01 3.610423849932817841e-01
+7.349463482724380992e-01 2.008573725915569486e-01 3.623219106278985358e-01
+7.305447136853985279e-01 1.978234802458921360e-01 3.635871804824805653e-01
+7.261159828724578214e-01 1.948353685346151387e-01 3.648375781480875379e-01
+7.216608959662019762e-01 1.918927853792166127e-01 3.660715129191122186e-01
+7.171801670483409774e-01 1.889955002148961394e-01 3.672874263418225982e-01
+7.126743300531552805e-01 1.861433788319636073e-01 3.684846837309949108e-01
+7.081441223914051175e-01 1.833362215388179839e-01 3.696612595209343710e-01
+7.035900061356136215e-01 1.805739799909275023e-01 3.708165722616917348e-01
+6.990125222046897902e-01 1.778565964180273684e-01 3.719494030784631367e-01
+6.944122804123707970e-01 1.751839824866724127e-01 3.730580800830735622e-01
+6.897896069146784992e-01 1.725562544195547443e-01 3.741422132560422997e-01
+6.851450759297335047e-01 1.699733803139570343e-01 3.752000809033200213e-01
+6.804790620490438480e-01 1.674354838987148208e-01 3.762308077572429355e-01
+6.757918752796293616e-01 1.649427652357627616e-01 3.772336599439788940e-01
+6.710841190288990843e-01 1.624951923227635209e-01 3.782065903997158807e-01
+6.663559221262009835e-01 1.600931455660249692e-01 3.791494395940231965e-01
+6.616076837858697601e-01 1.577367904785384745e-01 3.800608417430486607e-01
+6.568398281175149567e-01 1.554262673949660112e-01 3.809393122355112515e-01
+6.520524648278914759e-01 1.531620260338200923e-01 3.817844598609113071e-01
+6.472460502131879290e-01 1.509441834093387669e-01 3.825945806932325444e-01
+6.424208086222070735e-01 1.487730846896873349e-01 3.833687631504908433e-01
+6.375768667154826375e-01 1.466491860640934397e-01 3.841063458261376740e-01
+6.327147719614083510e-01 1.445724818775720732e-01 3.848052877974663111e-01
+6.278345360543612363e-01 1.425435417995506715e-01 3.854652342077181104e-01
+6.229363449371848604e-01 1.405627442689544315e-01 3.860852182514847852e-01
+6.180208267587814497e-01 1.386299275595349323e-01 3.866630046493146899e-01
+6.130878172636732293e-01 1.367458410848005068e-01 3.871986373954375282e-01
+6.081376300127646628e-01 1.349106539902725221e-01 3.876907660008953038e-01
+6.031708343692542273e-01 1.331241752511138077e-01 3.881374204452801013e-01
+5.981872594198538451e-01 1.313871076769131119e-01 3.885385758335542783e-01
+5.931872993271581906e-01 1.296994119208923768e-01 3.888927420384044042e-01
+5.881715194167826954e-01 1.280607661499650052e-01 3.891980996789912162e-01
+5.831397292746328676e-01 1.264718001616958465e-01 3.894546477166113685e-01
+5.780923809284296278e-01 1.249322477491876249e-01 3.896608882675748342e-01
+5.730301484941315859e-01 1.234414650841386962e-01 3.898149438393606059e-01
+5.679527785339369972e-01 1.220000281824430710e-01 3.899169825800337663e-01
+5.628606992123619257e-01 1.206075179177948653e-01 3.899657247446918218e-01
+5.577549128735556083e-01 1.192626131188577743e-01 3.899588733885684388e-01
+5.526350045348186191e-01 1.179659461688005728e-01 3.898969895870120772e-01
+5.475013145908723677e-01 1.167170132781017999e-01 3.897791516609607765e-01
+5.423552229242829537e-01 1.155136939391362971e-01 3.896026927627281311e-01
+5.371963110518728213e-01 1.143564329775472455e-01 3.893682721938278024e-01
+5.320248625085529648e-01 1.132445825251853777e-01 3.890752921818558807e-01
+5.268418790923193873e-01 1.121763322989662304e-01 3.887220732362928199e-01
+5.216480344214139420e-01 1.111502746625857019e-01 3.883076350820581779e-01
+5.164430850451627864e-01 1.101663332257847294e-01 3.878324664548168932e-01
+5.112275102681053118e-01 1.092232673876926685e-01 3.872959651352503863e-01
+5.060029073959358970e-01 1.083180273650512782e-01 3.866960834588916152e-01
+5.007692304925555060e-01 1.074500336043514026e-01 3.860332364294135066e-01
+4.955265944792267008e-01 1.066184092659498428e-01 3.853076049214476662e-01
+4.902755524910634155e-01 1.058215397414334347e-01 3.845188368245686661e-01
+4.850176459901380244e-01 1.050561979453382144e-01 3.836654992000479436e-01
+4.797532909040905236e-01 1.043208730187463462e-01 3.827476922012114091e-01
+4.744823785889252243e-01 1.036148463575309320e-01 3.817661365680148355e-01
+4.692055171112920475e-01 1.029362343090417242e-01 3.807207588669155873e-01
+4.639233255037821801e-01 1.022831037225876705e-01 3.796115541526619008e-01
+4.586377341242697248e-01 1.016514176559336347e-01 3.784373263419291700e-01
+4.533486056644123185e-01 1.010403969450098804e-01 3.771990792167705386e-01
+4.480561070398016432e-01 1.004487677966155457e-01 3.758974928385367953e-01
+4.427608762820601784e-01 9.987450133495995308e-02 3.745328419993724234e-01
+4.374635532679027050e-01 9.931556251859710582e-02 3.731054660236349796e-01
+4.321647778868571432e-01 9.876991822512792840e-02 3.716157670899542520e-01
+4.268658599998730319e-01 9.823449013050672418e-02 3.700637078536853086e-01
+4.215676735765455097e-01 9.770690573986753891e-02 3.684497084664269395e-01
+4.162699168504104819e-01 9.718665004270135577e-02 3.667750666255454317e-01
+4.109731987208080639e-01 9.667179308527124038e-02 3.650404160810349907e-01
+4.056781184785120398e-01 9.616044175324228727e-02 3.632464399813756240e-01
+4.003852641200214557e-01 9.565074509543119996e-02 3.613938677771775798e-01
+3.950952107257716950e-01 9.514089908082037916e-02 3.594834719896101149e-01
+3.898085189133677075e-01 9.462915077538672226e-02 3.575160648711968037e-01
+3.845257333758309581e-01 9.411380193352703039e-02 3.554924949866632988e-01
+3.792473815136121473e-01 9.359321200643175298e-02 3.534136437413167853e-01
+3.739739721678181361e-01 9.306580057655630678e-02 3.512804218838474490e-01
+3.687059944607640194e-01 9.253004923332719400e-02 3.490937660095801975e-01
+3.634439167485821742e-01 9.198450291035600856e-02 3.468546350890427399e-01
+3.581881856892511484e-01 9.142777070873894796e-02 3.445640070453340198e-01
+3.529392254280559471e-01 9.085852623447668308e-02 3.422228754021731101e-01
+3.476974369011708865e-01 9.027550748073234765e-02 3.398322460227614084e-01
+3.424631972568040195e-01 8.967751628755202264e-02 3.373931339577017074e-01
+3.372368593921474811e-01 8.906341741289613978e-02 3.349065604182628331e-01
+3.320187516032832020e-01 8.843213724940904297e-02 3.323735498892629314e-01
+3.268091773441717529e-01 8.778266222136388297e-02 3.297951273938287686e-01
+3.216084150899517491e-01 8.711403689571997622e-02 3.271723159202782338e-01
+3.164167182989683913e-01 8.642536184028648538e-02 3.245061340194448363e-01
+3.112343154672587153e-01 8.571579126067202514e-02 3.217975935788711661e-01
+3.060614102686342042e-01 8.498453044606019136e-02 3.190476977785482449e-01
+3.008981817730306263e-01 8.423083305194795090e-02 3.162574392312175187e-01
+2.957447847354051640e-01 8.345399824589613824e-02 3.134277983087430108e-01
+2.906013499472219208e-01 8.265336774002721154e-02 3.105597416546946876e-01
+2.854679846423482936e-01 8.182832273165288606e-02 3.076542208820723934e-01
+2.803477329331294232e-01 8.097431979192776241e-02 3.047120362305891783e-01
+2.752380681858879186e-01 8.009433346301736423e-02 3.017343316299965217e-01
+2.701389341759609652e-01 7.918798082745703848e-02 2.987220235093637766e-01
+2.650503484302856316e-01 7.825477700181371343e-02 2.956760032243300196e-01
+2.599723067663477494e-01 7.729426121855428877e-02 2.925971426566268407e-01
+2.549047838884308526e-01 7.630599343423161152e-02 2.894862939132400448e-01
+2.498493147092451516e-01 7.528752506190716787e-02 2.863443687052725228e-01
+2.448074110283037785e-01 7.423648337865965119e-02 2.831723508316192905e-01
+2.397761080979832760e-01 7.315619369923848092e-02 2.799709378403843485e-01
+2.347552980534894362e-01 7.204627593897616755e-02 2.767409087277542534e-01
+2.297448542911243452e-01 7.090635374932227619e-02 2.734830227534650882e-01
+2.247460435545195478e-01 6.973430487024689928e-02 2.701981884636781017e-01
+2.197617914493367186e-01 6.852599251980440176e-02 2.668875888727837431e-01
+2.147876871428340828e-01 6.728630515821912295e-02 2.635514822299450111e-01
+2.098235281541684927e-01 6.601485651366462148e-02 2.601905585020159450e-01
+2.048690954628696881e-01 6.471124480576789795e-02 2.568054914489818485e-01
+1.999302337340111424e-01 6.336777961956377436e-02 2.533980282310328569e-01
+1.950016002461211762e-01 6.199020593164828591e-02 2.499680455203335816e-01
+1.900821894571196047e-01 6.057894133574073109e-02 2.465160535124999996e-01
+1.851717128353368158e-01 5.913348735199071976e-02 2.430426744218359136e-01];
+
+   case 'alg'
+      RGB = [8.429022637670927631e-01 9.769128443086748659e-01 8.146495714674897304e-01
+8.379898654100343958e-01 9.732407342044756549e-01 8.088430556678033456e-01
+8.330792003033266058e-01 9.695822214541992556e-01 8.030532648620265501e-01
+8.281700574948731575e-01 9.659372187629376993e-01 7.972802422761141594e-01
+8.232591263824388106e-01 9.623071583180456967e-01 7.915177499867750432e-01
+8.183491723383330418e-01 9.586904682961984170e-01 7.857720506350698297e-01
+8.134400361234097598e-01 9.550870346415619716e-01 7.800433040617480440e-01
+8.085287334688994187e-01 9.514980955891142456e-01 7.743261813916382241e-01
+8.036173420648491383e-01 9.479224436104144447e-01 7.686253533397395810e-01
+7.987060409170214648e-01 9.443598003220095016e-01 7.629416545120045745e-01
+7.937925122347354590e-01 9.408110588423104215e-01 7.572712382873506565e-01
+7.888774721308737803e-01 9.372756747279427092e-01 7.516160461408240012e-01
+7.839617672758154576e-01 9.337530574201664546e-01 7.459781551153893409e-01
+7.790441380861869991e-01 9.302435915337518013e-01 7.403557861728765621e-01
+7.741231638352710220e-01 9.267477183327949009e-01 7.347469917710997001e-01
+7.692007373711554630e-01 9.232643756857683570e-01 7.291556698393132363e-01
+7.642766080322838107e-01 9.197934849334901131e-01 7.235818576277038838e-01
+7.593478268473826676e-01 9.163361556599034508e-01 7.180210830197953920e-01
+7.544162681443719043e-01 9.128913482866579665e-01 7.124771068936172069e-01
+7.494821658995169944e-01 9.094587642780913583e-01 7.069508171108205286e-01
+7.445446445348200548e-01 9.060385878865820919e-01 7.014412864903698530e-01
+7.396014349798241128e-01 9.026315871837650162e-01 6.959454639490867400e-01
+7.346547940498792117e-01 8.992365867115311717e-01 6.904675150024160990e-01
+7.297044319156630321e-01 8.958535131435325649e-01 6.850074822882207259e-01
+7.247490312042899063e-01 8.924827183233180472e-01 6.795638773235905816e-01
+7.197871536503424039e-01 8.891245874731169563e-01 6.741351421211713157e-01
+7.148205906315451275e-01 8.857781679670407859e-01 6.687245323963695309e-01
+7.098490222489788337e-01 8.824433898084057537e-01 6.633320978710508520e-01
+7.048715598638584101e-01 8.791204089748886341e-01 6.579571019276890809e-01
+6.998858807424097606e-01 8.758099421807559182e-01 6.525968888447420957e-01
+6.948941393454671767e-01 8.725109084606608167e-01 6.472550946180131159e-01
+6.898959788510803381e-01 8.692232412884600690e-01 6.419317800561787912e-01
+6.848910317118895863e-01 8.659468751996841629e-01 6.366270089015387823e-01
+6.798769490247473790e-01 8.626825033431277934e-01 6.313382981547220885e-01
+6.748542718513756977e-01 8.594296871845804597e-01 6.260670342676678546e-01
+6.698236059410382914e-01 8.561879728828601932e-01 6.208146206652157550e-01
+6.647845365512859983e-01 8.529572984927470403e-01 6.155811388293935815e-01
+6.597366350463846896e-01 8.497376032066983331e-01 6.103666749315915796e-01
+6.546778498073401176e-01 8.465294186026240952e-01 6.051694131498632778e-01
+6.496081377794251654e-01 8.433325185775547572e-01 5.999900369339508099e-01
+6.445282101635998462e-01 8.401464057748564418e-01 5.948300803069692666e-01
+6.394375788791967219e-01 8.369710226136972686e-01 5.896896565661723377e-01
+6.343357381511850468e-01 8.338063126244976697e-01 5.845688863102624921e-01
+6.292221635729954299e-01 8.306522204479636073e-01 5.794678980553558123e-01
+6.240950633957039750e-01 8.275091254279797193e-01 5.743855059995368606e-01
+6.189539477625067843e-01 8.243769361676358542e-01 5.693220109772474391e-01
+6.137994351057367570e-01 8.212551782044565929e-01 5.642788688985792556e-01
+6.086309233573077293e-01 8.181437984076060932e-01 5.592562516207922885e-01
+6.034477870757418705e-01 8.150427445292480755e-01 5.542543429870632199e-01
+5.982493762730075604e-01 8.119519651518264380e-01 5.492733398149425295e-01
+5.930350151926494506e-01 8.088714096235919415e-01 5.443134529660692555e-01
+5.878040010377325597e-01 8.058010279811619325e-01 5.393749085029397872e-01
+5.825556026472022975e-01 8.027407708577772860e-01 5.344579489389233995e-01
+5.772876663840377232e-01 7.996910315164064142e-01 5.295616097386441901e-01
+5.720007307801391327e-01 7.966513294788654109e-01 5.246873967172444031e-01
+5.666941554135628278e-01 7.936215585273497242e-01 5.198357685218710778e-01
+5.613670944828393905e-01 7.906016675911841096e-01 5.150070514423125134e-01
+5.560186672658552487e-01 7.875916053777574088e-01 5.102015958622602154e-01
+5.506479565076832783e-01 7.845913201632197520e-01 5.054197781680845880e-01
+5.452540067541281621e-01 7.816007595558720489e-01 5.006620028015225099e-01
+5.398358226320055797e-01 7.786198702294978569e-01 4.959287044657145205e-01
+5.343923670778303325e-01 7.756485976236309199e-01 4.912203504944597232e-01
+5.289225595174025241e-01 7.726868856074639025e-01 4.865374433949326005e-01
+5.234252739997397041e-01 7.697346761037856533e-01 4.818805235744546001e-01
+5.178993372898965664e-01 7.667919086690104802e-01 4.772501722621809717e-01
+5.123435269266533032e-01 7.638585200249727869e-01 4.726470146367432457e-01
+5.067565692524964582e-01 7.609344435378136984e-01 4.680717231709499715e-01
+5.011371374253174027e-01 7.580196086388175658e-01 4.635250212045694540e-01
+4.954838494233231860e-01 7.551139401816627794e-01 4.590076867559155782e-01
+4.897952660572904571e-01 7.522173577300403924e-01 4.545205565824696481e-01
+4.840681573071378696e-01 7.493302232220337977e-01 4.500635797773255287e-01
+4.783013360124501179e-01 7.464523294656015828e-01 4.456380221845723244e-01
+4.724940506024824516e-01 7.435833409938815697e-01 4.412454477696442501e-01
+4.666445818616462016e-01 7.407231498818752646e-01 4.368869875723455642e-01
+4.607511431720994755e-01 7.378716377692448036e-01 4.325638579641650772e-01
+4.548118791551377105e-01 7.350286745174200442e-01 4.282773665493129212e-01
+4.488246916697360978e-01 7.321941577075956609e-01 4.240288438198308585e-01
+4.427816707495262905e-01 7.293693063882581429e-01 4.198173776667764034e-01
+4.366861225292572590e-01 7.265526435148784712e-01 4.156470546985623349e-01
+4.305358706593315765e-01 7.237439753686812915e-01 4.115196426107185501e-01
+4.243286683688641259e-01 7.209430867475091764e-01 4.074370373866784134e-01
+4.180533691692684961e-01 7.181516616727471325e-01 4.033983548745580516e-01
+4.117152151566086937e-01 7.153676995586070175e-01 3.994086748894248862e-01
+4.053120447326638009e-01 7.125908305255362896e-01 3.954704830581987074e-01
+3.988310338161633051e-01 7.098228382481286403e-01 3.915835586978753668e-01
+3.922773504125326993e-01 7.070616628058336017e-01 3.877531715317056316e-01
+3.856453036392904488e-01 7.043074656954597668e-01 3.839816779215288745e-01
+3.789264219900637110e-01 7.015608428874934299e-01 3.802713204645660205e-01
+3.721249180146385394e-01 6.988198403254852753e-01 3.766273561291236249e-01
+3.652256292309092323e-01 6.960861432527269965e-01 3.730515342232093579e-01
+3.582353316782660446e-01 6.933572072574926137e-01 3.695499404331015203e-01
+3.511405088327756996e-01 6.906341612001636321e-01 3.661256768699447939e-01
+3.439420657842418572e-01 6.879154082481935273e-01 3.627843734908121065e-01
+3.366376245587633931e-01 6.851998988322398620e-01 3.595313212824273741e-01
+3.292131284244469436e-01 6.824884139177085363e-01 3.563714602024023459e-01
+3.216744583078648412e-01 6.797783170101999728e-01 3.533114882245381727e-01
+3.140172671350762723e-01 6.770686201449667152e-01 3.503575531959788325e-01
+3.062375560076174841e-01 6.743581777161754554e-01 3.475162179105460436e-01
+2.983302406892556213e-01 6.716458949569478198e-01 3.447945234485624288e-01
+2.903003733928296581e-01 6.689291557488895590e-01 3.421993121220623379e-01
+2.821497842888552321e-01 6.662058429849556651e-01 3.397373505300674279e-01
+2.738829008222237738e-01 6.634735172067438569e-01 3.374150438308454736e-01
+2.655071740281889081e-01 6.607294316207971141e-01 3.352380978850171278e-01
+2.570334211300853156e-01 6.579705722659228151e-01 3.332111341597794874e-01
+2.484760249031935930e-01 6.551937268253881230e-01 3.313372827145077970e-01
+2.398529309513116603e-01 6.523955825377709683e-01 3.296177905380952566e-01
+2.311841779376898609e-01 6.495729702230954583e-01 3.280520259104468539e-01
+2.224959725553208312e-01 6.467225401811796948e-01 3.266360450956267703e-01
+2.138146081063950210e-01 6.438414682793780486e-01 3.253637783252084081e-01
+2.051671661243615885e-01 6.409273967897467505e-01 3.242268145630948784e-01
+1.965805108315318850e-01 6.379785280095539024e-01 3.232146947371194456e-01
+1.880802465071397533e-01 6.349936851788878789e-01 3.223153652533572999e-01
+1.796913740541281890e-01 6.319722298814686168e-01 3.215149361924393712e-01
+1.714330705005376321e-01 6.289143429606669500e-01 3.208003886075819211e-01
+1.633223574014183166e-01 6.258206603139722102e-01 3.201583938437198018e-01
+1.553730387230779220e-01 6.226922583196569105e-01 3.195761743639152774e-01
+1.475958738836526396e-01 6.195305528827301789e-01 3.190418452926268023e-01
+1.399989467346693939e-01 6.163371978378411331e-01 3.185446364378627382e-01
+1.325881576814804952e-01 6.131139916341550311e-01 3.180750084472180883e-01
+1.253677831749437921e-01 6.098627973272553460e-01 3.176246802424351201e-01
+1.183415125249481503e-01 6.065854884488630638e-01 3.171858497741395500e-01
+1.115126074344926499e-01 6.032839586583695901e-01 3.167505890039074568e-01
+1.048819394515066727e-01 5.999599650973242992e-01 3.163157773881625778e-01
+9.845229630728663528e-02 5.966151576836506987e-01 3.158774289651596345e-01
+9.222723505152297108e-02 5.932511684885474201e-01 3.154305788787992171e-01
+8.620976681204781111e-02 5.898696713297170158e-01 3.149695047280966498e-01
+8.040588003861268152e-02 5.864717566016173222e-01 3.144963594445834287e-01
+7.481986998062370442e-02 5.830590393336594346e-01 3.140045327658092522e-01
+6.946029534260433902e-02 5.796325615836696032e-01 3.134943864901328370e-01
+6.433627993915527754e-02 5.761934589668912254e-01 3.129640951373787172e-01
+5.945721644433194647e-02 5.727428791151661924e-01 3.124113492075187293e-01
+5.483676528890226581e-02 5.692816942618841303e-01 3.118359557718813901e-01
+5.049036852106828649e-02 5.658107385911853582e-01 3.112374314935371089e-01
+4.642777154917742538e-02 5.623311839573432724e-01 3.106124662721929663e-01
+4.267873894906259319e-02 5.588431316231524670e-01 3.099653177208470112e-01
+3.923368215696795835e-02 5.553481890828847467e-01 3.092892996314257625e-01
+3.621581017331615415e-02 5.518464055245291267e-01 3.085882846661225365e-01
+3.367174260746116921e-02 5.483382191382968340e-01 3.078629031746034084e-01
+3.155357134880961562e-02 5.448249609075901390e-01 3.071084590117025281e-01
+2.984163194432063598e-02 5.413067537046710731e-01 3.063273483583937029e-01
+2.851433193286296089e-02 5.377838583018560437e-01 3.055207233916585885e-01
+2.754542481457317171e-02 5.342567759013212569e-01 3.046882377538095987e-01
+2.689570440508957244e-02 5.307265908415563782e-01 3.038266898313282116e-01
+2.655111347348209846e-02 5.271933424208224972e-01 3.029380668195990611e-01
+2.649479114279441189e-02 5.236572235511334217e-01 3.020233215230865298e-01
+2.670582470265941977e-02 5.201186270434556835e-01 3.010823500978198064e-01
+2.716440603849906016e-02 5.165779238412415708e-01 3.001150958048797168e-01
+2.785177445187870041e-02 5.130354641701924123e-01 2.991215440838268513e-01
+2.874507672231698188e-02 5.094917938725799234e-01 2.981008701035369746e-01
+2.982666070550293522e-02 5.059472607886396078e-01 2.970530677865693692e-01
+3.108771284944302979e-02 5.024018586614166226e-01 2.959794192966550552e-01
+3.251322799624088711e-02 4.988558619272636663e-01 2.948800270305382831e-01
+3.408899261646199802e-02 4.953095294092992318e-01 2.937550173740440806e-01
+3.580154506882658044e-02 4.917631050765793321e-01 2.926045381193648209e-01
+3.763813815230969417e-02 4.882168187516792712e-01 2.914287561365453416e-01
+3.958670383768114059e-02 4.846708867690439626e-01 2.902278552740369943e-01
+4.160606223970295808e-02 4.811255125865287474e-01 2.890020344652265427e-01
+4.364369199371629510e-02 4.775808873526497522e-01 2.877515060197786689e-01
+4.569661527765144643e-02 4.740371904320783147e-01 2.864764940804359616e-01
+4.775452753988133209e-02 4.704945898919368763e-01 2.851772332276043542e-01
+4.980869291606532939e-02 4.669532429514431926e-01 2.838539672156359384e-01
+5.185173623572528895e-02 4.634132963974310626e-01 2.825069478261687528e-01
+5.387745614388812082e-02 4.598748869682287022e-01 2.811364338252513306e-01
+5.588065991543698235e-02 4.563381417083428038e-01 2.797426900122344517e-01
+5.785701915204972262e-02 4.528031782963246044e-01 2.783259863495758379e-01
+5.979876706363549538e-02 4.492703547749640758e-01 2.768859613477449022e-01
+6.170040530833437870e-02 4.457399494079358759e-01 2.754224910913550817e-01
+6.356556527046725025e-02 4.422117069661303246e-01 2.739367706711952621e-01
+6.539233256679152784e-02 4.386857116546215574e-01 2.724290903132413622e-01
+6.717918154984042767e-02 4.351620395957427334e-01 2.708997417620619963e-01
+6.892491848697404611e-02 4.316407590421982854e-01 2.693490177429860299e-01
+7.062863315353248850e-02 4.281219305768591554e-01 2.677772114552923188e-01
+7.228965757688332605e-02 4.246056073010452958e-01 2.661846160919238424e-01
+7.389641781918890318e-02 4.210926586635973523e-01 2.645697649893180015e-01
+7.545434928417493747e-02 4.175827498520321979e-01 2.629338431200398118e-01
+7.696833442757364252e-02 4.140755522595082616e-01 2.612779353323396725e-01
+7.843838726966873010e-02 4.105710916270851607e-01 2.596023362544704338e-01
+7.986463095393955824e-02 4.070693869948522892e-01 2.579073383225120586e-01
+8.124183059024486786e-02 4.035709045576263421e-01 2.561923603053372633e-01
+8.256190184629638718e-02 4.000763929725326684e-01 2.544563479235497083e-01
+8.383876927413885793e-02 3.965847495529768452e-01 2.527017537470714892e-01
+8.507286345646175585e-02 3.930959685837552287e-01 2.509288633450958983e-01
+8.626466273198904466e-02 3.896100382985579480e-01 2.491379583258400143e-01
+8.739775523971837767e-02 3.861285039195596069e-01 2.473266151547285352e-01
+8.848513420336723279e-02 3.826502629618194207e-01 2.454971009362341139e-01
+8.953167205157094855e-02 3.791748988832845391e-01 2.436503732426347768e-01
+9.053797836732038751e-02 3.757023773832682267e-01 2.417867000353674523e-01
+9.148554097617969671e-02 3.722345634210443843e-01 2.399033173203807268e-01
+9.239032630846283345e-02 3.687699624551818989e-01 2.380029261610703828e-01
+9.325665476520708652e-02 3.653081665793141419e-01 2.360863630636709232e-01
+9.407947178296760526e-02 3.618497205076261491e-01 2.341529827160940824e-01
+9.484677589858042657e-02 3.583959460277540421e-01 2.322010660237076030e-01
+9.557752330564703303e-02 3.549448939617083076e-01 2.302337247418529409e-01
+9.627239441888107985e-02 3.514964944168565975e-01 2.282511932335974936e-01
+9.690948221035081134e-02 3.480532009152630946e-01 2.262502344543431132e-01
+9.750943240499498899e-02 3.446127832007709890e-01 2.242341737774653510e-01
+9.807545896746669434e-02 3.411748780303069384e-01 2.222036193428468254e-01
+9.858840445742730885e-02 3.377417205454144589e-01 2.201557955312036796e-01
+9.906254148928930747e-02 3.343117038364873950e-01 2.180929998845686502e-01
+9.950470237088998582e-02 3.308840188006390015e-01 2.160163648855405460e-01
+9.989442828501457483e-02 3.274611474658599142e-01 2.139229716850828411e-01
+1.002478051840671458e-01 3.240411780581063939e-01 2.118153315535568071e-01
+1.005711171338506127e-01 3.206233202298787721e-01 2.096944585359068469e-01
+1.008389569492894877e-01 3.172107795653626439e-01 2.075567848977897256e-01
+1.010766013830992904e-01 3.138003866895044958e-01 2.054060788674454963e-01
+1.012797610659880443e-01 3.103926683916618523e-01 2.032418103374508123e-01
+1.014336128495174072e-01 3.069895754355959072e-01 2.010620024754192769e-01
+1.015604574719611575e-01 3.035881742672912331e-01 1.988698806638831140e-01
+1.016439043068387282e-01 3.001906378105418383e-01 1.966632618336682237e-01
+1.016900146818882356e-01 2.967961587009928515e-01 1.944430867217927517e-01
+1.017093270307037889e-01 2.934032641989809398e-01 1.922108533595217328e-01
+1.016765444870794677e-01 2.900154576395235773e-01 1.899632762562097343e-01
+1.016196069311545991e-01 2.866288210415605109e-01 1.877041478451552947e-01
+1.015219485974463154e-01 2.832456655164396486e-01 1.854313688320031739e-01
+1.013890307775781596e-01 2.798651977505757227e-01 1.831457349733398854e-01
+1.012281681325793714e-01 2.764863132581988348e-01 1.808482324484150805e-01
+1.010210261960676481e-01 2.731116796865848406e-01 1.785366459436490416e-01
+1.007923256501605802e-01 2.697375956289435606e-01 1.762140933897481665e-01
+1.005175174628768486e-01 2.663676978648497062e-01 1.738776494133498218e-01
+1.002173006867299876e-01 2.629988175863644528e-01 1.715298624270491512e-01
+9.988042668340707531e-02 2.596326158562400344e-01 1.691694475105532114e-01
+9.951032875855422843e-02 2.562685171837931764e-01 1.667968626726523129e-01
+9.911165965335702599e-02 2.529057275734052368e-01 1.644126697900448464e-01
+9.867326641808749077e-02 2.495459516150641543e-01 1.620156747879235859e-01
+9.821309319240137392e-02 2.461862546952748865e-01 1.596078670948603284e-01
+9.770793688346479655e-02 2.428303047023268602e-01 1.571867977376794623e-01
+9.718522833757223256e-02 2.394735637952865592e-01 1.547553696066038820e-01
+9.661611889067361902e-02 2.361206836681891130e-01 1.523106424045232721e-01
+9.602890382911671852e-02 2.327668939738092857e-01 1.498554790261657776e-01
+9.539953637497836092e-02 2.294161153913850115e-01 1.473875249443533098e-01
+9.474917991081285851e-02 2.260646807246796119e-01 1.449088125658586357e-01
+9.405984876891312907e-02 2.227155420665202223e-01 1.424176598027472040e-01
+9.334764966575742617e-02 2.193658224428529091e-01 1.399155213806154985e-01
+9.259864172169812724e-02 2.160178161752643877e-01 1.374011522998845325e-01
+9.182582886012352619e-02 2.126691252719348779e-01 1.348756437215534176e-01
+9.101741805439966804e-02 2.093216946605545581e-01 1.323379906767623293e-01
+9.018514688041953664e-02 2.059732968223858540e-01 1.297890966546490499e-01
+8.931758876675888192e-02 2.026258321763433345e-01 1.272280374767779110e-01
+8.842693764273418244e-02 1.992769388914110706e-01 1.246556670387520271e-01
+8.750046390510707317e-02 1.959287732623697376e-01 1.220710201130164874e-01
+8.655243027600306727e-02 1.925785390204607095e-01 1.194750015988692016e-01
+8.556724308545121671e-02 1.892289432653286863e-01 1.168665204409958802e-01
+8.456273936118519075e-02 1.858764606951441301e-01 1.142465958957942507e-01
+8.351900544036733320e-02 1.825246377933723574e-01 1.116139631166048474e-01
+8.245885447713624528e-02 1.791689319540810954e-01 1.089697819472404405e-01
+8.135669872091313981e-02 1.758140104483569555e-01 1.063126024658284652e-01
+8.023864908973366017e-02 1.724546122292074379e-01 1.036435837789304870e-01
+7.908112723260085630e-02 1.690950585274078044e-01 1.009615075211427460e-01
+7.790439520871850210e-02 1.657311325223233545e-01 9.826708487284271931e-02
+7.669293821383046939e-02 1.623656063191788734e-01 9.555954478117026363e-02
+7.545752224924831553e-02 1.589960594221086487e-01 9.283909520333205601e-02
+7.419260617097681032e-02 1.556232855365611012e-01 9.010535811327979872e-02
+7.289843379575938753e-02 1.522469176001574609e-01 8.735814807810177163e-02
+7.158041455970551303e-02 1.488655123209624287e-01 8.459734502497687214e-02
+7.022733114464504989e-02 1.454810031009998728e-01 8.182251708486179553e-02
+6.885643403782271132e-02 1.420894601159049808e-01 7.903362825094448207e-02]; 
+
+   case 'den' 
+      RGB = [9.022021640633741679e-01 9.441797977915000750e-01 9.438027309131502562e-01
+8.954445384876381642e-01 9.409578903665054561e-01 9.410648759794842944e-01
+8.886855788874895579e-01 9.377403820634679921e-01 9.384098650760986926e-01
+8.819275100483495722e-01 9.345262546442011375e-01 9.358372814047579702e-01
+8.751724774625697645e-01 9.313145521613219735e-01 9.333465385891809296e-01
+8.684225465562396273e-01 9.281043788756372370e-01 9.309368983040341439e-01
+8.616797015669134252e-01 9.248948973050555855e-01 9.286074874996731454e-01
+8.549458444869071361e-01 9.216853262599870034e-01 9.263573151615366319e-01
+8.482227943572994144e-01 9.184749387758168737e-01 9.241852885114790750e-01
+8.415122870990738857e-01 9.152630598938195083e-01 9.220902285443438595e-01
+8.348159759916423672e-01 9.120490642716416740e-01 9.200708847923535494e-01
+8.281354328507813944e-01 9.088323736256948004e-01 9.181259492188009741e-01
+8.214721499137223049e-01 9.056124540224106401e-01 9.162540691578000551e-01
+8.148275424063925465e-01 9.023888130447765832e-01 9.144538592359539031e-01
+8.082029517444304645e-01 8.991609968660188024e-01 9.127239122325879750e-01
+8.015996493038702875e-01 8.959285872646755022e-01 9.110628088561002480e-01
+7.950188742001107478e-01 8.926911903474541443e-01 9.094690972400388818e-01
+7.884617893745216044e-01 8.894484461080551796e-01 9.079413399350437786e-01
+7.819294709222469608e-01 8.862000288332800846e-01 9.064781367807944745e-01
+7.754229463217646723e-01 8.829456358148736195e-01 9.050781031537078469e-01
+7.689431984424601740e-01 8.796849849240929720e-01 9.037398757679527828e-01
+7.624911712284807574e-01 8.764178119047121296e-01 9.024621162700895427e-01
+7.560677754202349554e-01 8.731438677954835859e-01 9.012435140344750018e-01
+7.496738942657009686e-01 8.698629164913183054e-01 9.000827882281617898e-01
+7.433103891809360597e-01 8.665747324492172332e-01 8.989786892140232410e-01
+7.369781053261772463e-01 8.632790985421132657e-01 8.979299993594229701e-01
+7.306778770702586634e-01 8.599758040613866283e-01 8.969355333152028154e-01
+7.244105333220340892e-01 8.566646428667109570e-01 8.959941378263615031e-01
+7.181769027125698424e-01 8.533454116802825506e-01 8.951046911317568355e-01
+7.119778186163850942e-01 8.500179085211370111e-01 8.942661020057923738e-01
+7.058142285268640403e-01 8.466819129479339345e-01 8.934771781429077242e-01
+6.996868754737947116e-01 8.433372425635760061e-01 8.927370216147950677e-01
+6.935966262281186845e-01 8.399836925869731408e-01 8.920446369253884900e-01
+6.875443783072674453e-01 8.366210531289836050e-01 8.913990435590287698e-01
+6.815310569542375463e-01 8.332491095447560614e-01 8.907992825434407624e-01
+6.755576190661271019e-01 8.298676415986731003e-01 8.902444142113377090e-01
+6.696250569512002260e-01 8.264764227239829175e-01 8.897335158509319664e-01
+6.637344019158556430e-01 8.230752193711802223e-01 8.892656792634947571e-01
+6.578867276821276366e-01 8.196637904396377738e-01 8.888400082431817673e-01
+6.520831536351689994e-01 8.162418867874922102e-01 8.884556159917510465e-01
+6.463248478988037338e-01 8.128092508153051954e-01 8.881116224784991742e-01
+6.406130302355731443e-01 8.093656161195516008e-01 8.878071517537653445e-01
+6.349489747657169891e-01 8.059107072125802906e-01 8.875413292226665973e-01
+6.293340124974293737e-01 8.024442393062223289e-01 8.873132788842952312e-01
+6.237695336583948258e-01 7.989659181568090629e-01 8.871221205404720145e-01
+6.182569898160699129e-01 7.954754399699002221e-01 8.869669669772310971e-01
+6.127978529026838483e-01 7.919724939438572697e-01 8.868470036964815062e-01
+6.073937143892588209e-01 7.884567552174953642e-01 8.867613059311603152e-01
+6.020462362204239692e-01 7.849278896215748924e-01 8.867089225926839680e-01
+5.967571335484213035e-01 7.813855546115021644e-01 8.866889106706612456e-01
+5.915281898823177009e-01 7.778293984625483937e-01 8.867003055015370006e-01
+5.863612575196054388e-01 7.742590605302298590e-01 8.867421178165009188e-01
+5.812582575983973321e-01 7.706741715732086107e-01 8.868133307743576443e-01
+5.762211797340099917e-01 7.670743541409147381e-01 8.869128969829140896e-01
+5.712520812007981785e-01 7.634592230284988901e-01 8.870397355132993988e-01
+5.663530856178774497e-01 7.598283858019500014e-01 8.871927289126763094e-01
+5.615263810949739920e-01 7.561814433965411419e-01 8.873707202219829338e-01
+5.567742177930775638e-01 7.525179907919229416e-01 8.875725100066919060e-01
+5.520989048532665144e-01 7.488376177673574663e-01 8.877968534100384446e-01
+5.475028066465008614e-01 7.451399097406838923e-01 8.880424572398104566e-01
+5.429883038774732107e-01 7.414244411965056347e-01 8.883081102246548344e-01
+5.385578037806126872e-01 7.376907727350942023e-01 8.885926739767254778e-01
+5.342139074650678054e-01 7.339384990781333551e-01 8.888943435724941944e-01
+5.299591516928192636e-01 7.301671976158840005e-01 8.892116013883853975e-01
+5.257960979209626018e-01 7.263764470411206986e-01 8.895428673545512366e-01
+5.217273234975481344e-01 7.225658287807643632e-01 8.898864965652431014e-01
+5.177554119038457747e-01 7.187349285333118898e-01 8.902407770595432979e-01
+5.138829420298184347e-01 7.148833379130644650e-01 8.906039278005388748e-01
+5.101124764807559719e-01 7.110106562012711295e-01 8.909740968830553998e-01
+5.064465489258500597e-01 7.071164922032951994e-01 8.913493600019622987e-01
+5.028876505140544850e-01 7.032004662097455228e-01 8.917277192147863296e-01
+4.994382152582386714e-01 6.992621674331673809e-01 8.921074350832908229e-01
+4.961006347215984325e-01 6.953012224940204877e-01 8.924864661543192579e-01
+4.928771955532800786e-01 6.913173542206699773e-01 8.928621485317782547e-01
+4.897700668589555772e-01 6.873102514205022828e-01 8.932321753875414050e-01
+4.867812943786045676e-01 6.832796259123631311e-01 8.935941653626673364e-01
+4.839127827295982009e-01 6.792252150037093594e-01 8.939456639464463672e-01
+4.811662774244846452e-01 6.751467840099739659e-01 8.942841454160184167e-01
+4.785433468471342322e-01 6.710441287994942661e-01 8.946070153685665716e-01
+4.760453643890875663e-01 6.669170783452496032e-01 8.949116138746746607e-01
+4.736736428294658352e-01 6.627653768113491717e-01 8.951957859716279664e-01
+4.714290262412598742e-01 6.585890168305761350e-01 8.954562723025643045e-01
+4.693121574935592011e-01 6.543879757664989860e-01 8.956900818434682110e-01
+4.673234528945732769e-01 6.501622438680934035e-01 8.958943277799077398e-01
+4.654630534005658737e-01 6.459118568983728270e-01 8.960660842179661856e-01
+4.637308126788352580e-01 6.416368981971656282e-01 8.962023935259622043e-01
+4.621262870085202645e-01 6.373375005637914592e-01 8.963002743257548754e-01
+4.606487857322991153e-01 6.330138155630400387e-01 8.963568414436460241e-01
+4.592973162762510886e-01 6.286660463835676005e-01 8.963691878774373567e-01
+4.580703339287382492e-01 6.242945769689846047e-01 8.963339924500021150e-01
+4.569661322748618804e-01 6.198997574323485971e-01 8.962482674873512023e-01
+4.559826907629682125e-01 6.154819930493959923e-01 8.961090514006179175e-01
+4.551176793504218554e-01 6.110417444047528956e-01 8.959134196000665407e-01
+4.543684658154031886e-01 6.065795271800727972e-01 8.956584955889488331e-01
+4.537321103072295414e-01 6.020959187639063348e-01 8.953414439077735931e-01
+4.532053056792195167e-01 5.975915899334859338e-01 8.949594061016020730e-01
+4.527845804849874312e-01 5.930672153918072897e-01 8.945097368602321630e-01
+4.524662055084718859e-01 5.885235252040261766e-01 8.939898705469653262e-01
+4.522462243009037208e-01 5.839612972830612314e-01 8.933973456284665104e-01
+4.521204742039108271e-01 5.793813548677185787e-01 8.927298144348156939e-01
+4.520846088132207119e-01 5.747845636677534342e-01 8.919850523005500298e-01
+4.521340640278729839e-01 5.701718535137081378e-01 8.911609204213972735e-01
+4.522636556547669495e-01 5.655443967339887079e-01 8.902550664458118712e-01
+4.524690821672368579e-01 5.609029696513448959e-01 8.892660746141660688e-01
+4.527455061379137002e-01 5.562485728577384325e-01 8.881923021329055645e-01
+4.530880320659124716e-01 5.515822303923638703e-01 8.870322627966300555e-01
+4.534917310405354729e-01 5.469049855617650335e-01 8.857846304506885593e-01
+4.539516647179116515e-01 5.422178966900855768e-01 8.844482413776627583e-01
+4.544629083695410077e-01 5.375220328430567740e-01 8.830220956021650469e-01
+4.550204443687518308e-01 5.328185230036192044e-01 8.815052933071011454e-01
+4.556185611092698484e-01 5.281088097066267695e-01 8.798967638851667994e-01
+4.562534204266542326e-01 5.233935859930700651e-01 8.781964868264527935e-01
+4.569203709084596610e-01 5.186739169401044514e-01 8.764041195297782583e-01
+4.576148706477833339e-01 5.139508576774439730e-01 8.745194730542404926e-01
+4.583325010790182952e-01 5.092254498718804534e-01 8.725425074817807491e-01
+4.590689790493137079e-01 5.044987184411230396e-01 8.704733265502938577e-01
+4.598201671313326133e-01 4.997716685175846441e-01 8.683121716406742019e-01
+4.605820822069772169e-01 4.950452826784434435e-01 8.660594152048119998e-01
+4.613509023726869995e-01 4.903205184540396222e-01 8.637155537234258995e-01
+4.621229722350553293e-01 4.855983061224402042e-01 8.612812002829223212e-01
+4.628948066804312034e-01 4.808795467939734336e-01 8.587570768592888149e-01
+4.636621617804746465e-01 4.761655004408036906e-01 8.561438461496413410e-01
+4.644228483348319947e-01 4.714566096078480206e-01 8.534426324219575033e-01
+4.651739386269664878e-01 4.667536635703780079e-01 8.506544391441875907e-01
+4.659126485884828583e-01 4.620574294334566789e-01 8.477803402103136765e-01
+4.666363628095652749e-01 4.573686402108441684e-01 8.448214774526084936e-01
+4.673426313321316639e-01 4.526879945693308982e-01 8.417790529251527598e-01
+4.680291657078233247e-01 4.480161567955825430e-01 8.386543213914651185e-01
+4.686938344285310198e-01 4.433537569692765912e-01 8.354485830591045215e-01
+4.693346578320167217e-01 4.387013913255956021e-01 8.321631765974399908e-01
+4.699498025791529199e-01 4.340596227897761117e-01 8.287994724682681280e-01
+4.705375757926853475e-01 4.294289816663295900e-01 8.253588665927664714e-01
+4.710964189403291091e-01 4.248099664657251084e-01 8.218427743723751844e-01
+4.716249015377835252e-01 4.202030448517347638e-01 8.182526250758133113e-01
+4.721217147398471536e-01 4.156086546932221681e-01 8.145898565994108553e-01
+4.725856648806062155e-01 4.110272052049120939e-01 8.108559106034937125e-01
+4.730156670165072685e-01 4.064590781625461724e-01 8.070522280235292722e-01
+4.734107385193607187e-01 4.019046291787961578e-01 8.031802449512829289e-01
+4.737699927598160721e-01 3.973641890273297284e-01 7.992413888782301523e-01
+4.740926329157582608e-01 3.928380650035104282e-01 7.952370752909331264e-01
+4.743779459344564242e-01 3.883265423112774450e-01 7.911687046060347228e-01
+4.746252966720311828e-01 3.838298854668622528e-01 7.870376594308572393e-01
+4.748341222291213026e-01 3.793483397110574140e-01 7.828453021343189100e-01
+4.750039264972926722e-01 3.748821324227855634e-01 7.785929727119723642e-01
+4.751342749269319987e-01 3.704314745277388354e-01 7.742819869283568135e-01
+4.752247895239137265e-01 3.659965618967846446e-01 7.699136347195338903e-01
+4.752751440794077964e-01 3.615775767297375043e-01 7.654891788385849161e-01
+4.752846577346016566e-01 3.571748688576533159e-01 7.610100397104845316e-01
+4.752531583445195884e-01 3.527885695695618384e-01 7.564774234071200976e-01
+4.751807975405666906e-01 3.484186721552497978e-01 7.518923528283415481e-01
+4.750674206653115461e-01 3.440653140404167365e-01 7.472559685686853692e-01
+4.749129042193905303e-01 3.397286256677667371e-01 7.425693796885003417e-01
+4.747171524182526858e-01 3.354087317676910929e-01 7.378336635067138660e-01
+4.744800939620510971e-01 3.311057526021228270e-01 7.330498655303070432e-01
+4.742016790105380575e-01 3.268198051821941674e-01 7.282189995072744226e-01
+4.738818763543148349e-01 3.225510044607445836e-01 7.233420475907058611e-01
+4.735206707734627707e-01 3.182994645010271961e-01 7.184199606025195584e-01
+4.731180605743212086e-01 3.140652996233325722e-01 7.134536583862346459e-01
+4.726740552951489982e-01 3.098486255314443216e-01 7.084440302390293542e-01
+4.721886735713431427e-01 3.056495604211318384e-01 7.033919354141809910e-01
+4.716613727297020442e-01 3.014684828248803128e-01 6.982986813805610593e-01
+4.710926963645384880e-01 2.973052870266812420e-01 6.931646771793222861e-01
+4.704828136289659901e-01 2.931600441838846383e-01 6.879905802658634606e-01
+4.698317639381846544e-01 2.890328918495519428e-01 6.827771264871377310e-01
+4.691395866583317198e-01 2.849239757466777712e-01 6.775250248474340431e-01
+4.684063197381936328e-01 2.808334508365700755e-01 6.722349583426855402e-01
+4.676319984415455155e-01 2.767614823885942155e-01 6.669075848245407112e-01
+4.668166541724163010e-01 2.727082470546194348e-01 6.615435378909206854e-01
+4.659603133859185342e-01 2.686739339515746283e-01 6.561434278004181220e-01
+4.650628643816827057e-01 2.646588038897796924e-01 6.507079958832593380e-01
+4.641242580497152992e-01 2.606631006122758221e-01 6.452378997676680994e-01
+4.631447877428095938e-01 2.566869305701654502e-01 6.397333527350717031e-01
+4.621244494694312643e-01 2.527305449360881529e-01 6.341948722101476976e-01
+4.610632293393826520e-01 2.487942133948352064e-01 6.286229575018943416e-01
+4.599611028558598380e-01 2.448782253548376642e-01 6.230180909006084455e-01
+4.588180342503813125e-01 2.409828911918876493e-01 6.173807387973655469e-01
+4.576339758554896497e-01 2.371085435285009702e-01 6.117113528277585699e-01
+4.564088675103588622e-01 2.332555385522245284e-01 6.060103710422047874e-01
+4.551426114844220883e-01 2.294242672454404608e-01 6.002782575500510420e-01
+4.538352109035017068e-01 2.256151009415963693e-01 5.945152849064858636e-01
+4.524865766439374881e-01 2.218284716492017750e-01 5.887218272221994564e-01
+4.510965881023942248e-01 2.180648477346619485e-01 5.828982757017970862e-01
+4.496651090864017264e-01 2.143247287775243981e-01 5.770450152504881247e-01
+4.481919873439485502e-01 2.106086471651167358e-01 5.711624259770210488e-01
+4.466770541000937844e-01 2.069171697362102713e-01 5.652508847626541710e-01
+4.451201235978615167e-01 2.032508994724643858e-01 5.593107669047254760e-01
+4.435210649059648236e-01 1.996104535682982628e-01 5.533422989220041499e-01
+4.418797550887742509e-01 1.959964848006353622e-01 5.473456323671032075e-01
+4.401958303868417355e-01 1.924097603751145913e-01 5.413213827196030614e-01
+4.384690252866834115e-01 1.888510510844303159e-01 5.352699392743940354e-01
+4.366990547337928352e-01 1.853211730457038908e-01 5.291917009058230148e-01
+4.348856137062026561e-01 1.818209895007495414e-01 5.230870785018020275e-01
+4.330283767917184612e-01 1.783514125901697334e-01 5.169564975681201213e-01
+4.311269977716754020e-01 1.749134050778043403e-01 5.108004010215621005e-01
+4.291811092153304252e-01 1.715079819968361174e-01 5.046192521919092844e-01
+4.271904344659923636e-01 1.681361967924985268e-01 4.984132106571174670e-01
+4.251546522673581574e-01 1.647991755952243342e-01 4.921824740309181379e-01
+4.230731286286127379e-01 1.614981359784699588e-01 4.859281380753826540e-01
+4.209454004136206628e-01 1.582343200442791198e-01 4.796507952549767251e-01
+4.187709818950797191e-01 1.550090272321758555e-01 4.733510791258234707e-01
+4.165493646911141434e-01 1.518236143519533232e-01 4.670296690947607909e-01
+4.142800178080069395e-01 1.486794951032471834e-01 4.606872955350938548e-01
+4.119623878145514673e-01 1.455781389789607694e-01 4.543247452773370720e-01
+4.095958991778662628e-01 1.425210694369028197e-01 4.479428674896456797e-01
+4.071799547953330878e-01 1.395098612110991787e-01 4.415425799574690391e-01
+4.047139367624922324e-01 1.365461366216895456e-01 4.351248757648299992e-01
+4.021972936019284628e-01 1.336316105494000928e-01 4.286903779176353124e-01
+3.996293630849273582e-01 1.307680150350410408e-01 4.222401836338272596e-01
+3.970093606178293211e-01 1.279570274853844003e-01 4.157761120045768699e-01
+3.943365976380542870e-01 1.252003942696350014e-01 4.092995513119635498e-01
+3.916103749033576498e-01 1.224998688123591362e-01 4.028120041341317625e-01
+3.888299858840064682e-01 1.198571984110099742e-01 3.963150954999720699e-01
+3.859947208059889556e-01 1.172741089547249538e-01 3.898105809973525515e-01
+3.831038714159066827e-01 1.147522874417901684e-01 3.833003546699703667e-01
+3.801567365353383798e-01 1.122933622374599760e-01 3.767864564999491295e-01
+3.771526284658990869e-01 1.098988810729940035e-01 3.702710792321893263e-01
+3.740908802950018708e-01 1.075702868621947472e-01 3.637565742534386581e-01
+3.709708541354928557e-01 1.053088915040240603e-01 3.572454561957943420e-01
+3.677919503089708275e-01 1.031158479486348478e-01 3.507404058933542013e-01
+3.645536174519507511e-01 1.009921209275927434e-01 3.442442712851704334e-01
+3.612553634855836804e-01 9.893845688361260771e-02 3.377600658314386384e-01
+3.578967673433453012e-01 9.695535377529579391e-02 3.312909639976103771e-01
+3.544774912975176551e-01 9.504303157033086591e-02 3.248402933678479765e-01
+3.509972936657820841e-01 9.320140436662560646e-02 3.184115229802063629e-01
+3.474560416161082133e-01 9.143005518316707492e-02 3.120082475359999274e-01
+3.438537237247893397e-01 8.972821452832538403e-02 3.056341672288407363e-01
+3.401904735486728781e-01 8.809468358171337887e-02 2.992931815755145442e-01
+3.364665724714709372e-01 8.652789261304066892e-02 2.929892038941975252e-01
+3.326824502647063309e-01 8.502592614588003195e-02 2.867260839053818455e-01
+3.288387024976534012e-01 8.358647051086640078e-02 2.805076847277695462e-01
+3.249360934730275985e-01 8.220683878873383255e-02 2.743378151941179288e-01
+3.209755584101655623e-01 8.088399100741089365e-02 2.682201871550352612e-01
+3.169582022236226426e-01 7.961456284429593855e-02 2.621583713198606391e-01
+3.128852946012805614e-01 7.839490235071094881e-02 2.561557528820557206e-01
+3.087582612248004899e-01 7.722111381434071387e-02 2.502154883125917717e-01
+3.045786711401687885e-01 7.608910749927882966e-02 2.443404647714875755e-01
+3.003482204670568367e-01 7.499465368295166190e-02 2.385332635717280492e-01
+2.960687128198414286e-01 7.393343917254721620e-02 2.327961290245241788e-01
+2.917420369856660312e-01 7.290112435224016529e-02 2.271309438018545013e-01
+2.873701425511966390e-01 7.189339879884681928e-02 2.215392116816457535e-01
+2.829550142767416343e-01 7.090603360902006380e-02 2.160220482113159313e-01
+2.784999277173711985e-01 6.993210653137302280e-02 2.105832735994622174e-01
+2.740068130913843047e-01 6.896804327168698512e-02 2.052225548327365479e-01
+2.694770905593398824e-01 6.801140076763184661e-02 1.999383122503714527e-01
+2.649127155611373241e-01 6.705861363954487842e-02 1.947301490341072916e-01
+2.603155555465970217e-01 6.610638194498252851e-02 1.895973275559961757e-01
+2.556873713350471533e-01 6.515168315524647036e-02 1.845388003264406274e-01
+2.510311382384792789e-01 6.418928564209233634e-02 1.795555007506528800e-01
+2.463515264850693609e-01 6.321115386076697762e-02 1.746505568409140452e-01
+2.416465428487372114e-01 6.222162722501616700e-02 1.698160042316500806e-01
+2.369174512696113344e-01 6.121879219616855466e-02 1.650498029374760922e-01
+2.321653556071113234e-01 6.020099184329732317e-02 1.603497740495725687e-01
+2.273975644358762205e-01 5.915624173942467950e-02 1.557218456563352615e-01
+2.226121431237116921e-01 5.808842465569693386e-02 1.511590815358170026e-01
+2.178074381899826051e-01 5.700049790743180050e-02 1.466558187034970040e-01
+2.129839422000848193e-01 5.589168645699472276e-02 1.422095068240733784e-01]; 
+
+   case 'bal' 
+      RGB = [9.317630180115785143e-02 1.111733294776027225e-01 2.615123885530547532e-01
+9.697151501690241815e-02 1.168702109792841837e-01 2.730963071061036085e-01
+1.009688451686782534e-01 1.223931506799195018e-01 2.849103610759459171e-01
+1.049927013864766501e-01 1.278243708004132007e-01 2.968738052891420898e-01
+1.089874020283561201e-01 1.331935038256579495e-01 3.089538370897204067e-01
+1.129223008178065757e-01 1.385131449459734432e-01 3.211528356563003173e-01
+1.167787372671460905e-01 1.437907235567953967e-01 3.334763137669404798e-01
+1.205463368759411846e-01 1.490330498991488395e-01 3.459192712822865556e-01
+1.242159653236002137e-01 1.542448960991174289e-01 3.584824902114073786e-01
+1.277778433781233958e-01 1.594292997650425259e-01 3.711737182907450250e-01
+1.312243830518974863e-01 1.645899274655008293e-01 3.839938980982077199e-01
+1.345490385720651272e-01 1.697307784244891371e-01 3.969402498465131601e-01
+1.377440294143187915e-01 1.748552489081271477e-01 4.100132193954066917e-01
+1.407996250839473606e-01 1.799660943911219058e-01 4.232173781877683894e-01
+1.437072840727513789e-01 1.850671827584920992e-01 4.365502201613832844e-01
+1.464560785040432134e-01 1.901619264187031366e-01 4.500130967746718835e-01
+1.490348239402249919e-01 1.952544786288682443e-01 4.636036238706138235e-01
+1.514309258266629821e-01 2.003493745808981319e-01 4.773185296806868871e-01
+1.536266468153191511e-01 2.054503782969492598e-01 4.911623505831314018e-01
+1.556073044691906326e-01 2.105638989188344801e-01 5.051241984185815825e-01
+1.573534941852142433e-01 2.156962129560367203e-01 5.191977165014443063e-01
+1.588411077773489166e-01 2.208540630983729658e-01 5.333780986311171812e-01
+1.600396310676128475e-01 2.260448054488821412e-01 5.476626851250718797e-01
+1.609205321230856855e-01 2.312792188936386995e-01 5.620307968352061812e-01
+1.614455266589641669e-01 2.365687572657042548e-01 5.764661948566720540e-01
+1.615687582201552897e-01 2.419271731798259828e-01 5.909472809712390529e-01
+1.612352769386722617e-01 2.473711867632350236e-01 6.054446786315181850e-01
+1.603793369556453796e-01 2.529213001868846900e-01 6.199179403497330210e-01
+1.589165703217830516e-01 2.586022090180682964e-01 6.343183928801525706e-01
+1.567387388150081051e-01 2.644444177118183137e-01 6.485832602021305293e-01
+1.537422741701028883e-01 2.704875236386605764e-01 6.625942914402649375e-01
+1.497539850217274870e-01 2.767772906869140348e-01 6.762428866538948702e-01
+1.446190280141932405e-01 2.833703371099008383e-01 6.893303155405390292e-01
+1.381506719438430897e-01 2.903290266080994497e-01 7.016166706228140759e-01
+1.301937481102784511e-01 2.977137475582261605e-01 7.127928058673724809e-01
+1.207056294812082625e-01 3.055623316038361126e-01 7.225101391519437311e-01
+1.098226938414934850e-01 3.138651882979107688e-01 7.304694442052537262e-01
+9.795843445627248902e-02 3.225431024585883599e-01 7.365271649499161022e-01
+8.570023827886968926e-02 3.314661612751826358e-01 7.407718073497575606e-01
+7.367688675533522191e-02 3.404967458048910878e-01 7.434693436710165804e-01
+6.252232597310111717e-02 3.495197377754474255e-01 7.449562973790243570e-01
+5.283258403911513662e-02 3.584600781237165523e-01 7.455451847703780111e-01
+4.520938539971628561e-02 3.672749347230809258e-01 7.454889092261348660e-01
+4.023631323597558207e-02 3.759418522020857023e-01 7.449841371058433248e-01
+3.831576485736640919e-02 3.844536826035842014e-01 7.441746283479093726e-01
+3.948349528027724625e-02 3.928137536670130436e-01 7.431581338661337188e-01
+4.345843888396401511e-02 4.010237097170425424e-01 7.420243047032398787e-01
+4.962431895510652918e-02 4.090953160508887798e-01 7.408166831290733390e-01
+5.739800117053886486e-02 4.170346954168047682e-01 7.395877539875740370e-01
+6.626017539288729663e-02 4.248521500099918247e-01 7.383650122111450331e-01
+7.582789138192139178e-02 4.325572249230948407e-01 7.371697936237424642e-01
+8.583710398799437868e-02 4.401583433039914506e-01 7.360206802189788178e-01
+9.611023898027164225e-02 4.476635745571445613e-01 7.349312516211791158e-01
+1.065303883460570755e-01 4.550804241299538089e-01 7.339117735870001047e-01
+1.170216465020320479e-01 4.624159111924117660e-01 7.329693696980987827e-01
+1.275357983203295742e-01 4.696767197731893662e-01 7.321074968220891988e-01
+1.380432121650685962e-01 4.768686794858796318e-01 7.313295149248254523e-01
+1.485266661140711986e-01 4.839970747487774561e-01 7.306374469250058734e-01
+1.589774367328510296e-01 4.910666599003393196e-01 7.300322634722052895e-01
+1.693927097070233589e-01 4.980816767007848478e-01 7.295140990156090410e-01
+1.797738575018875684e-01 5.050458714090990675e-01 7.290824177866462863e-01
+1.901252883653588299e-01 5.119625097219066001e-01 7.287361439246872186e-01
+2.004536741991692628e-01 5.188343886055641896e-01 7.284737667569484154e-01
+2.107674308545827713e-01 5.256638445778923918e-01 7.282934299212738827e-01
+2.210763664417479957e-01 5.324527583974503209e-01 7.281930113726282627e-01
+2.313914398990180310e-01 5.392025564688637251e-01 7.281702001646749300e-01
+2.417245888287989919e-01 5.459142096302009861e-01 7.282225751002735503e-01
+2.520885959217774586e-01 5.525882304010224511e-01 7.283476897674903139e-01
+2.624969693582706598e-01 5.592246702775622857e-01 7.285431679898072277e-01
+2.729638158446638374e-01 5.658231192947545951e-01 7.288068131774058100e-01
+2.835036864649327915e-01 5.723827108458280355e-01 7.291367343046032401e-01
+2.941313761905648416e-01 5.789021356407471064e-01 7.295314900628433463e-01
+3.048616586033888742e-01 5.853796696249742304e-01 7.299902509334000866e-01
+3.157089391891977348e-01 5.918132215225327952e-01 7.305129762764809298e-01
+3.266868146870496870e-01 5.982004061606387424e-01 7.311005998876300982e-01
+3.378075337747806772e-01 6.045386495071959354e-01 7.317552128195412564e-01
+3.490818000871770965e-01 6.108253115449155946e-01 7.324796800093837934e-01
+3.605169723334935572e-01 6.170578982409773428e-01 7.332792190500567742e-01
+3.721163789840524760e-01 6.232343167456089184e-01 7.341612307067191256e-01
+3.838798790902256397e-01 6.293530561660979350e-01 7.351337469132933622e-01
+3.958028137607393915e-01 6.354134382185918639e-01 7.362060213183361235e-01
+4.078755353103907799e-01 6.414158575290970221e-01 7.373884640869047269e-01
+4.200825599604326444e-01 6.473620651543986471e-01 7.386930839012650907e-01
+4.324066537782813580e-01 6.532548504780409937e-01 7.401294470548486215e-01
+4.448270147115060968e-01 6.590982595876608841e-01 7.417069328868316491e-01
+4.573210929073768805e-01 6.648973878622411737e-01 7.434335263117878290e-01
+4.698658823662555939e-01 6.706581495075844002e-01 7.453153847182404368e-01
+4.824391638200489774e-01 6.763869948243975694e-01 7.473565606883062484e-01
+4.950205546820442004e-01 6.820906132919950515e-01 7.495589040396917202e-01
+5.075922656244505893e-01 6.877756591216436233e-01 7.519221394187723950e-01
+5.201395209800695474e-01 6.934485275105084501e-01 7.544440922042097153e-01
+5.326506556783058288e-01 6.991151975856019218e-01 7.571210204550441469e-01
+5.451151059190834092e-01 7.047815278674717243e-01 7.599492971931861574e-01
+5.575181558550945660e-01 7.104543187762520917e-01 7.629291415211207905e-01
+5.698635397781144363e-01 7.161365136199150383e-01 7.660488334775965580e-01
+5.821485860154738123e-01 7.218322109491160932e-01 7.693023567855580280e-01
+5.943602368020499682e-01 7.275477994362923306e-01 7.726916325476315128e-01
+6.065080899095934841e-01 7.332844479726540188e-01 7.762041114816310428e-01
+6.185864665812587093e-01 7.390466790641196937e-01 7.798383670352863062e-01
+6.305963554035781682e-01 7.448373397672364282e-01 7.835892177406345027e-01
+6.425403291413834816e-01 7.506587685331359561e-01 7.874510644025978223e-01
+6.544185977825304201e-01 7.565137308188258913e-01 7.914204294842384080e-01
+6.662315287143806275e-01 7.624048800378464552e-01 7.954941819359623301e-01
+6.779850393157120791e-01 7.683332855369554570e-01 7.996659972294575258e-01
+6.896755013217630292e-01 7.743024253591546113e-01 8.039360994237751967e-01
+7.013107513266423343e-01 7.803126348729136907e-01 8.082975524678305268e-01
+7.128885314512861671e-01 7.863668558670167119e-01 8.127502175082055302e-01
+7.244112448085553435e-01 7.924667152464015540e-01 8.172911293271547528e-01
+7.358836989688380958e-01 7.986130654557248576e-01 8.219158971644889844e-01
+7.473044386446877629e-01 8.048084510111997991e-01 8.266243361574353576e-01
+7.586759860087319840e-01 8.110542493572184819e-01 8.314137476978961105e-01
+7.700007022560961811e-01 8.173518180665149124e-01 8.362815657919246970e-01
+7.812789490175476859e-01 8.237030526155880716e-01 8.412265533654796901e-01
+7.925116214732782494e-01 8.301096652946458043e-01 8.462470956714009951e-01
+8.036997510351909790e-01 8.365733017623517842e-01 8.513414099007207136e-01
+8.148431081888104499e-01 8.430959697406819053e-01 8.565084542610862384e-01
+8.259421593641688153e-01 8.496794646156250463e-01 8.617465433522450979e-01
+8.369967539127278755e-01 8.563257710703112702e-01 8.670541605111352634e-01
+8.480038340013845710e-01 8.630377874332209043e-01 8.724315628924932398e-01
+8.589628398368314155e-01 8.698176873531217046e-01 8.778768407867350021e-01
+8.698718779534676537e-01 8.766681056859056964e-01 8.833884311630415542e-01
+8.807225950585577667e-01 8.835937613774932364e-01 8.889689808541467730e-01
+8.915125639987498962e-01 8.905976582376062822e-01 8.946157932523199907e-01
+9.022321856472953483e-01 8.976851819173250480e-01 9.003303399902121695e-01
+9.128629530771473766e-01 9.048646775143293075e-01 9.061201920398328502e-01
+9.233906674988954233e-01 9.121434538185491103e-01 9.119872701021832784e-01
+9.337690699519377580e-01 9.195389121458987791e-01 9.179604265763980919e-01
+9.438768578707728008e-01 9.270905817099515112e-01 9.241478407896098757e-01
+9.450241336950316873e-01 9.267273985243987822e-01 9.232017297254778709e-01
+9.401771503305338396e-01 9.175010969420787088e-01 9.127353023021862466e-01
+9.357788176131993652e-01 9.081849602977229985e-01 9.019958970504049489e-01
+9.316195516453253944e-01 8.988455936080792519e-01 8.911247259869568005e-01
+9.276366903952597553e-01 8.895015346080178409e-01 8.801625091446737548e-01
+9.237963723082156520e-01 8.801619939913720714e-01 8.691306632065185500e-01
+9.200767818087643990e-01 8.708323115565800299e-01 8.580426479951916985e-01
+9.164622665155582881e-01 8.615158650696722598e-01 8.469079246742292622e-01
+9.129409700010679973e-01 8.522148302070590153e-01 8.357335125969563849e-01
+9.095033897880691054e-01 8.429306461313940124e-01 8.245249535921664874e-01
+9.061413505699446036e-01 8.336643536120030840e-01 8.132870275157044748e-01
+9.028482401464246188e-01 8.244164969479621519e-01 8.020234992942889551e-01
+8.996183458250350817e-01 8.151873435674267254e-01 7.907375926293952473e-01
+8.964464017336835067e-01 8.059770371403549571e-01 7.794323253122593664e-01
+8.933280984986637918e-01 7.967854062668440207e-01 7.681100636805964221e-01
+8.902585423162623357e-01 7.876125240246927284e-01 7.567737971546929510e-01
+8.872341531517662361e-01 7.784580066111700392e-01 7.454255275413548265e-01
+8.842515223931736168e-01 7.693214239645329577e-01 7.340672060990318659e-01
+8.813075692568397290e-01 7.602022354826803996e-01 7.227005864751234743e-01
+8.783989821496545058e-01 7.511000050313838550e-01 7.113277185683902770e-01
+8.755220238171187441e-01 7.420144833045193566e-01 6.999511354610528091e-01
+8.726749843514796101e-01 7.329446408023255755e-01 6.885716411869530207e-01
+8.698547215416584377e-01 7.238900130170270453e-01 6.771913952144653637e-01
+8.670596624933959440e-01 7.148495108503407636e-01 6.658111988100340328e-01
+8.642855405275950975e-01 7.058231520382152180e-01 6.544344321908397433e-01
+8.615312235931757989e-01 6.968096810882964398e-01 6.430616521710770250e-01
+8.587945613193220806e-01 6.878082471826545419e-01 6.316944172411573799e-01
+8.560737697641845889e-01 6.788178389092562881e-01 6.203340096274330140e-01
+8.533647514077651319e-01 6.698384520573987810e-01 6.089840337795546787e-01
+8.506671813652186831e-01 6.608684511065675560e-01 5.976445430267850467e-01
+8.479803760976425409e-01 6.519062997089123401e-01 5.863159553827915760e-01
+8.452992890124730874e-01 6.429524288345007665e-01 5.750030931030669645e-01
+8.426233261680482478e-01 6.340052727647743636e-01 5.637064935396088883e-01
+8.399526706457652869e-01 6.250628349958033958e-01 5.524259435430849408e-01
+8.372823606159069953e-01 6.161255232979981900e-01 5.411665126797099434e-01
+8.346115013722664733e-01 6.071918418882036317e-01 5.299292934604437066e-01
+8.319416971332159738e-01 5.982589838531851001e-01 5.187128588454869016e-01
+8.292658393187906096e-01 5.893284247613858051e-01 5.075248627530006829e-01
+8.265865191963318592e-01 5.803968068112989043e-01 4.963630791145096643e-01
+8.239007716165898110e-01 5.714634777707676694e-01 4.852311209906218226e-01
+8.212047236427109098e-01 5.625283035002011101e-01 4.741337367172645534e-01
+8.185028441784485409e-01 5.535866371885466153e-01 4.630669974760600605e-01
+8.157857974447502158e-01 5.446412013022012832e-01 4.520417208585162938e-01
+8.130598755024439628e-01 5.356861530869529986e-01 4.410523109242584505e-01
+8.103157295614864530e-01 5.267242547499885186e-01 4.301100025814295069e-01
+8.075600763067809496e-01 5.177491168092126506e-01 4.192090517728162546e-01
+8.047829983640772955e-01 5.087638530967844019e-01 4.083617627821872209e-01
+8.019913643823087801e-01 4.997616265469864705e-01 3.975626288212918968e-01
+7.991776069093209367e-01 4.907441098507538402e-01 3.868219510427612362e-01
+7.963412506983238437e-01 4.817086347924898759e-01 3.761426799347312722e-01
+7.934853391750592566e-01 4.726500967551418020e-01 3.655242898980974875e-01
+7.906020861628313412e-01 4.635701843716890092e-01 3.549783159786080722e-01
+7.876922078438237662e-01 4.544650164439674178e-01 3.445075235304189132e-01
+7.847584433242353885e-01 4.453290095612297272e-01 3.341130019968927001e-01
+7.817943763481589592e-01 4.361626378195018194e-01 3.238062118505327658e-01
+7.787986023472407426e-01 4.269628178617235204e-01 3.135938243777520174e-01
+7.757700306772615795e-01 4.177259860608659170e-01 3.034828822113839197e-01
+7.727073763310282617e-01 4.084484227667745659e-01 2.934814547614346680e-01
+7.696090956246998127e-01 3.991262801626034307e-01 2.835988305456279002e-01
+7.664733140591651894e-01 3.897556205902359405e-01 2.738457322824414675e-01
+7.632977462662783319e-01 3.803324674237734127e-01 2.642345539395078435e-01
+7.600796083228246180e-01 3.708528707479538111e-01 2.547796171102231777e-01
+7.568155232311498670e-01 3.613129902046505748e-01 2.454974414736316723e-01
+7.535014210471865370e-01 3.517091973617619272e-01 2.364070204678299647e-01
+7.501324359996863755e-01 3.420381997805444496e-01 2.275300884680255264e-01
+7.467083678923864820e-01 3.322917332197801166e-01 2.188868097223075626e-01
+7.432206214135255173e-01 3.224689513722865386e-01 2.105072965395320406e-01
+7.396626352495903056e-01 3.125667176366879740e-01 2.024226257801388651e-01
+7.360276592028781595e-01 3.025817058357924139e-01 1.946669682951213953e-01
+7.323075054306246168e-01 2.925115926125090304e-01 1.872788656593587786e-01
+7.284886793139783157e-01 2.823599622393618280e-01 1.803025816545419935e-01
+7.245597795551689257e-01 2.721283507524605572e-01 1.737830391183990686e-01
+7.205052554891407945e-01 2.618237699935750395e-01 1.677681078164939554e-01
+7.163077524522897255e-01 2.514568470079543427e-01 1.623050371038979034e-01
+7.119477511381474555e-01 2.410431671523047270e-01 1.574376915741905747e-01
+7.074046106878864038e-01 2.306029576903746436e-01 1.532027782639572566e-01
+7.026577763956233236e-01 2.201603247696940491e-01 1.496264194674281345e-01
+6.976856380676357272e-01 2.097462458983016809e-01 1.467193374830310926e-01
+6.924700993857928477e-01 1.993923480969033712e-01 1.444757571309586708e-01
+6.869956304794752056e-01 1.891326217641629281e-01 1.428720296451389260e-01
+6.812509389222788370e-01 1.790005719286615893e-01 1.418684919672574540e-01
+6.752290404511711586e-01 1.690283951735306323e-01 1.414126182563193168e-01
+6.689272347019628029e-01 1.592460113853382819e-01 1.414436246187784352e-01
+6.623462930327670417e-01 1.496814992323431404e-01 1.418966965532167945e-01
+6.554894621920681619e-01 1.403622590219790744e-01 1.427060758527507467e-01
+6.483618361407726960e-01 1.313154491044398742e-01 1.438093776439538507e-01
+6.409690900196458596e-01 1.225708994915949840e-01 1.451466621124405387e-01
+6.333171868548845840e-01 1.141616381299322275e-01 1.466635532234118466e-01
+6.254117682555888624e-01 1.061263207405454406e-01 1.483083323541042609e-01
+6.172580943089347461e-01 9.850955940169045522e-02 1.500342818055006577e-01
+6.088612137441752337e-01 9.136271116346880716e-02 1.517946748017894032e-01
+6.002260075568476294e-01 8.474268845605749390e-02 1.535471889644061949e-01
+5.913580665313180607e-01 7.870937974751122945e-02 1.552475962263118736e-01
+5.822640724597829553e-01 7.332110668924821106e-02 1.568528524628541587e-01
+5.729523242155735163e-01 6.862870182587510470e-02 1.583209522546889236e-01
+5.634337248699358147e-01 6.466696013382158825e-02 1.596097119552595534e-01
+5.537224099506778963e-01 6.144626935987178989e-02 1.606779590153868675e-01
+5.438351395676241928e-01 5.894914800814857886e-02 1.614895452047331870e-01
+5.337912133736735232e-01 5.712858102881844535e-02 1.620138116792186611e-01
+5.236119994512118403e-01 5.591095129374230172e-02 1.622265257547594042e-01
+5.133214710039554207e-01 5.519900277454217047e-02 1.621082697921440163e-01
+5.029415119053961547e-01 5.489268743951671026e-02 1.616521201270082198e-01
+4.924920560465744224e-01 5.489497800522934179e-02 1.608594568967110505e-01
+4.819970419875420631e-01 5.509874164212420766e-02 1.597294678457327477e-01
+4.714685312956432006e-01 5.543752958786138385e-02 1.582803570073196830e-01
+4.609298385556733768e-01 5.581817450175154821e-02 1.565161535498545142e-01
+4.503882306974699712e-01 5.620093240974462917e-02 1.544603609580012249e-01
+4.398550445667638309e-01 5.653967482715421822e-02 1.521296397207116124e-01
+4.293395854267749168e-01 5.679892905513854451e-02 1.495413040881575784e-01
+4.188488052114383020e-01 5.695351275720081374e-02 1.467131019928892832e-01
+4.083874753510262079e-01 5.698679735961746651e-02 1.436626150429021476e-01
+3.979584206972520133e-01 5.688899115379054960e-02 1.404067946849407167e-01
+3.875661805934746962e-01 5.664744510513378128e-02 1.369596232193354413e-01
+3.772162562473511671e-01 5.624858727791105101e-02 1.333332882463785507e-01
+3.669009710312429173e-01 5.571027577451325569e-02 1.295456315830630090e-01
+3.566289201162299305e-01 5.501236188184371184e-02 1.256041268313332904e-01
+3.463946141954395985e-01 5.416713051157899528e-02 1.215221064681567403e-01
+3.362018241761821069e-01 5.316577293008726418e-02 1.173074037138401304e-01
+3.260424402261492549e-01 5.202497987647033972e-02 1.129713889339670624e-01
+3.159278573165507087e-01 5.071934147936141973e-02 1.085175153831856448e-01
+3.058440467352613878e-01 4.927677960771512794e-02 1.039569210271578392e-01
+2.957906289005873823e-01 4.769542811326495796e-02 9.929501197500162357e-02
+2.857761694878986902e-01 4.595516903310007534e-02 9.453469664208309642e-02
+2.757883929056377248e-01 4.407729543414404955e-02 8.968329380554104779e-02
+2.658251433737037206e-01 4.206161274965801444e-02 8.474472186508703875e-02
+2.558840557281191197e-01 3.990046570244704105e-02 7.972236454569985031e-02
+2.459622220783502511e-01 3.762595141506584057e-02 7.461913567560218841e-02
+2.360563646646140490e-01 3.529747994604028744e-02 6.943744239412558139e-02]; 
+
+   case 'gra'
+      RGB = [5.119113838889112324e-07 2.052270195661655352e-06 5.982577941045682640e-06
+2.598440803609315740e-04 2.625944024536107477e-04 2.770622839605119624e-04
+8.656156394278343835e-04 8.570638031131799393e-04 8.794207369001087564e-04
+1.769403238430108027e-03 1.740368058158140796e-03 1.768607096399604827e-03
+2.949472160671299040e-03 2.891903379202926793e-03 2.924180394823831797e-03
+4.392323531342203803e-03 4.298904740810657703e-03 4.333431047933433700e-03
+6.088553115957890012e-03 5.952519318106651129e-03 5.987527380406317858e-03
+8.031191715623246449e-03 7.846222922619310730e-03 7.879950296964649201e-03
+1.021487523527209347e-02 9.975026089550139557e-03 1.000570608701620810e-02
+1.263537226121889262e-02 1.233502163300135256e-02 1.236087717148891089e-02
+1.528929074309834900e-02 1.492310361152201538e-02 1.494234288239030227e-02
+1.817388406754013447e-02 1.773678153559082871e-02 1.774759483393608533e-02
+2.128691657088564032e-02 2.077405157770592994e-02 2.077460893832101113e-02
+2.462656669738432988e-02 2.403330390048570228e-02 2.402175331762853791e-02
+2.819135511163322477e-02 2.751325392935317568e-02 2.748772001065160481e-02
+3.198008997843642537e-02 3.121289009539909495e-02 3.117147304311678954e-02
+3.599182442355883943e-02 3.513143325966101155e-02 3.507220810044759524e-02
+4.022582286584987926e-02 3.926830463975648777e-02 3.918932064337803806e-02
+4.449007920559793633e-02 4.350122490641009781e-02 4.340640025397465157e-02
+4.870367428407672977e-02 4.767846692745423415e-02 4.756790269604229543e-02
+5.287362099388332598e-02 5.181334368492381687e-02 5.168705396373681621e-02
+5.700314746954803641e-02 5.590901252301124641e-02 5.576700147480036923e-02
+6.109513723484618491e-02 5.996829329212761267e-02 5.981055680351737153e-02
+6.515218007540821143e-02 6.399371820125457355e-02 6.382024521975740439e-02
+6.917661353844734018e-02 6.798757248509634810e-02 6.779834611081525519e-02
+7.317055710313111194e-02 7.195192788781537563e-02 7.174692627103734788e-02
+7.713594055593872567e-02 7.588867046670466632e-02 7.566786755046528423e-02
+8.107452773767656606e-02 7.979952385914274027e-02 7.956288999694530184e-02
+8.498793655960165672e-02 8.368606889245686076e-02 8.343357136470588853e-02
+8.887765598636060416e-02 8.754976022063193364e-02 8.728136366834671200e-02
+9.274506053351619372e-02 9.139194052486757092e-02 9.110760731542752455e-02
+9.659142271361736976e-02 9.521385270343013518e-02 9.491354324016601507e-02
+1.004179237775132127e-01 9.901665039071003149e-02 9.870032337586748250e-02
+1.042256630300536779e-01 1.028014070791676282e-01 1.024690197379714285e-01
+1.080156659465895397e-01 1.065691240661386929e-01 1.062206323382679229e-01
+1.117888912751462127e-01 1.103207374067532442e-01 1.099560961104033285e-01
+1.155462372762081913e-01 1.140571240219185878e-01 1.136762869947187948e-01
+1.192885472257254331e-01 1.177791070845015386e-01 1.173820273048238605e-01
+1.230166142857740674e-01 1.214874607860790545e-01 1.210740904776794746e-01
+1.267311858301593541e-01 1.251829145698133972e-01 1.247532052922631640e-01
+1.304329672982797728e-01 1.288661569013136721e-01 1.284200596282795426e-01
+1.341226256391360172e-01 1.325378386381312334e-01 1.320753038252369949e-01
+1.378007923979476801e-01 1.361985760492960551e-01 1.357195536930293212e-01
+1.414680664900422602e-01 1.398489535286627783e-01 1.393533932175645418e-01
+1.451250167001958413e-01 1.434895260394738747e-01 1.429773769986621423e-01
+1.487721839401931478e-01 1.471208213222370831e-01 1.465920324521616802e-01
+1.524100832928171334e-01 1.507433418935591463e-01 1.501978618037517477e-01
+1.560392058666605075e-01 1.543575668598215767e-01 1.537953438982961329e-01
+1.596600204829017322e-01 1.579639535664100758e-01 1.573849358452757696e-01
+1.632729752124383871e-01 1.615629391005102000e-01 1.609670745182808227e-01
+1.668784987794287578e-01 1.651549416631863942e-01 1.645421779242018656e-01
+1.704770018452845537e-01 1.687403618244931736e-01 1.681106464558155544e-01
+1.740688781854339839e-01 1.723195836736857167e-01 1.716728640397789662e-01
+1.776545057697057339e-01 1.758929758751424655e-01 1.752291991906090307e-01
+1.812342477558830656e-01 1.794608926393625181e-01 1.787800059799695696e-01
+1.848084534049017069e-01 1.830236746173136975e-01 1.823256249295160947e-01
+1.883774589251684672e-01 1.865816497254700890e-01 1.858663838346062414e-01
+1.919415882526751271e-01 1.901351339080520064e-01 1.894025985253704192e-01
+1.955011537728245652e-01 1.936844318422726863e-01 1.929345735709248333e-01
+1.990564569892651070e-01 1.972298375917654889e-01 1.964626029318853884e-01
+2.026077891444517665e-01 2.007716352128197101e-01 1.999869705657932872e-01
+2.061554317961845073e-01 2.043100993175656077e-01 2.035079509895849070e-01
+2.096996573539102737e-01 2.078454955978322194e-01 2.070258098028130989e-01
+2.132407295782156598e-01 2.113780813130166081e-01 2.105408041749530779e-01
+2.167789040465809003e-01 2.149081057449790388e-01 2.140531832997963901e-01
+2.203144285881817321e-01 2.184358106226793050e-01 2.175631888196422614e-01
+2.238475436902406246e-01 2.219614305190086845e-01 2.210710552217338698e-01
+2.273784828782031697e-01 2.254851932220399702e-01 2.245770102091559361e-01
+2.309074730717983193e-01 2.290073200827110744e-01 2.280812750482046902e-01
+2.344347349188553031e-01 2.325280263407684678e-01 2.315840648940526436e-01
+2.379604831085705419e-01 2.360475214306362868e-01 2.350855890963675088e-01
+2.414849266657837501e-01 2.395660092687221798e-01 2.385860514863973880e-01
+2.450082692276646656e-01 2.430836885235431177e-01 2.420856506468980207e-01
+2.485307093041047577e-01 2.466007528699289408e-01 2.455845801661603045e-01
+2.520524405229936926e-01 2.501173912284589962e-01 2.490830288772885037e-01
+2.555736518614571962e-01 2.536337879911821358e-01 2.525811810837814142e-01
+2.590945278640408023e-01 2.571501232345917431e-01 2.560792167723802693e-01
+2.626152488487566439e-01 2.606665729207388593e-01 2.595773118140702884e-01
+2.661359911018202906e-01 2.641833090872994227e-01 2.630756381540483857e-01
+2.696569270618426883e-01 2.677005000273448010e-01 2.665743639914045504e-01
+2.731782254941877985e-01 2.712183104595063399e-01 2.700736539492059607e-01
+2.767000516561451962e-01 2.747369016891675342e-01 2.735736692356186550e-01
+2.802225674535130939e-01 2.782564317612734595e-01 2.770745677966527931e-01
+2.837459315891543987e-01 2.817770556052956454e-01 2.805765044610715742e-01
+2.872702997040328943e-01 2.852989251728569320e-01 2.840796310779650780e-01
+2.907958245112020612e-01 2.888221895684777163e-01 2.875840966474506044e-01
+2.943226559231933992e-01 2.923469951738719153e-01 2.910900474449292785e-01
+2.978509411732042089e-01 2.958734857661936557e-01 2.945976271392962698e-01
+3.013808249304671394e-01 2.994018026306028979e-01 2.981069769054734420e-01
+3.049124494101519978e-01 3.029320846674894985e-01 3.016182355316066044e-01
+3.084459544781194551e-01 3.064644684946828401e-01 3.051315395212462755e-01
+3.119814777508492787e-01 3.099990885449340761e-01 3.086470231908091666e-01
+3.155191546907993305e-01 3.135360771589531526e-01 3.121648187625948867e-01
+3.190591186974824911e-01 3.170755646742604017e-01 3.156850564536164416e-01
+3.226015011944919908e-01 3.206176795100827426e-01 3.192078645604823350e-01
+3.261464317127154011e-01 3.241625482485306353e-01 3.227333695405575908e-01
+3.296940379699381807e-01 3.277102957122579041e-01 3.262616960896098095e-01
+3.332444459470546017e-01 3.312610450388014383e-01 3.297929672161359349e-01
+3.367977799610606948e-01 3.348149177517827924e-01 3.333273043125560831e-01
+3.403541627350049614e-01 3.383720338291492657e-01 3.368648272234392449e-01
+3.439137154650676598e-01 3.419325117686051185e-01 3.404056543109294508e-01
+3.474765578849234871e-01 3.454964686503906313e-01 3.439499025175156155e-01
+3.510428083275172195e-01 3.490640201975497847e-01 3.474976874262884485e-01
+3.546125837844137374e-01 3.526352808338130695e-01 3.510491233188203775e-01
+3.581859999628214664e-01 3.562103637392293742e-01 3.546043232307861115e-01
+3.617631713404313443e-01 3.597893809036549762e-01 3.581633990054478578e-01
+3.653442112181757850e-01 3.633724431782132114e-01 3.617264613451083854e-01
+3.689292317710045621e-01 3.669596603248330147e-01 3.652936198606414053e-01
+3.725183440967992365e-01 3.705511410639528158e-01 3.688649831191926354e-01
+3.761116582634963512e-01 3.741469931204933763e-01 3.724406586901452543e-01
+3.797092833545231416e-01 3.777473232681791138e-01 3.760207531894346200e-01
+3.833113275126273645e-01 3.813522373722905701e-01 3.796053723222968523e-01
+3.869178979821737419e-01 3.849618404309278485e-01 3.831946209245254420e-01
+3.905291011499888443e-01 3.885762366148534097e-01 3.867886030023093280e-01
+3.941450425848224692e-01 3.921955293059884440e-01 3.903874217707223315e-01
+3.977658270754869663e-01 3.958198211346236617e-01 3.939911796909281172e-01
+4.013915586677523906e-01 3.994492140154045079e-01 3.975999785061617997e-01
+4.050223407000290154e-01 4.030838091821594138e-01 4.012139192765472040e-01
+4.086582758379366798e-01 4.067237072216087768e-01 4.048331024128048461e-01
+4.122994661077632461e-01 4.103690081060247796e-01 4.084576277089013163e-01
+4.159460129289094255e-01 4.140198112248798523e-01 4.120875943736929670e-01
+4.195980171453375096e-01 4.176762154155350126e-01 4.157231010616072031e-01
+4.232555790560795228e-01 4.213383189930122175e-01 4.193642459024058966e-01
+4.269187984448540862e-01 4.250062197788932461e-01 4.230111265300784962e-01
+4.305877746088247471e-01 4.286800151293829186e-01 4.266638401108986955e-01
+4.342626063865396291e-01 4.323598019625811695e-01 4.303224833706847940e-01
+4.379433921850948153e-01 4.360456767849914539e-01 4.339871526213026076e-01
+4.416302300065532149e-01 4.397377357173059553e-01 4.376579437864426825e-01
+4.453232174736505011e-01 4.434360745195019549e-01 4.413349524267043966e-01
+4.490224518548273092e-01 4.471407886152713451e-01 4.450182737640205333e-01
+4.527280300886077913e-01 4.508519731158264210e-01 4.487080027054508036e-01
+4.564400488073677153e-01 4.545697228430990999e-01 4.524042338663719076e-01
+4.601586043605019882e-01 4.582941323523668786e-01 4.561070615930931660e-01
+4.638837928370361241e-01 4.620252959543280080e-01 4.598165799849223689e-01
+4.676157100876950357e-01 4.657633077366521435e-01 4.635328829157047692e-01
+4.713544517464566819e-01 4.695082615850322827e-01 4.672560640548638067e-01
+4.751001132516106673e-01 4.732602512037566433e-01 4.709862168879611066e-01
+4.788527898663595406e-01 4.770193701358209082e-01 4.747234347367983998e-01
+4.826125766989533550e-01 4.807857117826079274e-01 4.784678107790839019e-01
+4.863795687224105602e-01 4.845593694231487558e-01 4.822194380676812497e-01
+4.901538607938191183e-01 4.883404362329857862e-01 4.859784095494587564e-01
+4.939355476732588124e-01 4.921290053026548539e-01 4.897448180837610798e-01
+4.977247240423329777e-01 4.959251696558080735e-01 4.935187564605149624e-01
+5.015214845223622264e-01 4.997290222669866222e-01 4.973003174179899122e-01
+5.053259236922266195e-01 5.035406560790653963e-01 5.010895936602286493e-01
+5.091381361058908706e-01 5.073601640203813101e-01 5.048866778741611938e-01
+5.129582163096103598e-01 5.111876390215642774e-01 5.086916627464180829e-01
+5.167862588588553185e-01 5.150231740320770912e-01 5.125046409798591496e-01
+5.206223583349409711e-01 5.188668620364874640e-01 5.163257053098251337e-01
+5.244666093614033242e-01 5.227187960704765546e-01 5.201549485201331091e-01
+5.283191066201067265e-01 5.265790692366016934e-01 5.239924634588227770e-01
+5.321799448671195032e-01 5.304477747198240722e-01 5.278383430536651710e-01
+5.360492189483508918e-01 5.343250058028127247e-01 5.316926803274503177e-01
+5.399270238149752599e-01 5.382108558810341226e-01 5.355555684130592908e-01
+5.438134545386418273e-01 5.421054184776434859e-01 5.394271005683370923e-01
+5.477086063264958726e-01 5.460087872581790291e-01 5.433073701907695785e-01
+5.516125745359978794e-01 5.499210560450835672e-01 5.471964708319829729e-01
+5.555254546895829204e-01 5.538423188320419355e-01 5.510944962120672974e-01
+5.594473424891353019e-01 5.577726697981703063e-01 5.550015402337400428e-01
+5.633783338303157695e-01 5.617122033220391941e-01 5.589176969963529640e-01
+5.673185248167353922e-01 5.656610139955613459e-01 5.628430608097579890e-01
+5.712680117739895591e-01 5.696191966377359694e-01 5.667777262080311296e-01
+5.752268912635538634e-01 5.735868463082712809e-01 5.707217879630733792e-01
+5.791952600965620812e-01 5.775640583210815970e-01 5.746753410980864896e-01
+5.831732153474624702e-01 5.815509282576770689e-01 5.786384809009386121e-01
+5.871608543675723713e-01 5.855475519804423934e-01 5.826113029374229146e-01
+5.911582747985197894e-01 5.895540256458231543e-01 5.865939030644199415e-01
+5.951655745855983781e-01 5.935704457174205695e-01 5.905863774429681579e-01
+5.991828519910353812e-01 5.975969089789966437e-01 5.945888225512460101e-01
+6.032102056071760865e-01 6.016335125474120415e-01 5.986013351974859287e-01
+6.072477343695864560e-01 6.056803538854835800e-01 6.026240125328050645e-01
+6.112955375701087934e-01 6.097375308147855444e-01 6.066569520639827351e-01
+6.153537148698353665e-01 6.138051415283823919e-01 6.107002516661682590e-01
+6.194223663120388412e-01 6.178832846035217097e-01 6.147540095955469353e-01
+6.235015923350435418e-01 6.219720590142719940e-01 6.188183245019491796e-01
+6.275914937850678443e-01 6.260715641441202406e-01 6.228932954414247991e-01
+6.316921719290113924e-01 6.301818997985384474e-01 6.269790218887789646e-01
+6.358037284672281020e-01 6.343031662175184771e-01 6.310756037500810933e-01
+6.399262655462556459e-01 6.384354640880801623e-01 6.351831413751425348e-01
+6.440598857715362779e-01 6.425788945567643129e-01 6.393017355699824877e-01
+6.482046922201168959e-01 6.467335592421092905e-01 6.434314876092731561e-01
+6.523607884533356716e-01 6.508995602471195907e-01 6.475724992487805753e-01
+6.565282785295067924e-01 6.550770001717296509e-01 6.517248727377952244e-01
+6.607072670166060924e-01 6.592659821252698782e-01 6.558887108315696324e-01
+6.648978590049534620e-01 6.634666097389374517e-01 6.600641168037573170e-01
+6.691001601199109139e-01 6.676789871782776720e-01 6.642511944588598283e-01
+6.733142765345891956e-01 6.719032191556818523e-01 6.684500481446935538e-01
+6.775403149825812710e-01 6.761394109429005317e-01 6.726607827648712901e-01
+6.817783827707052380e-01 6.803876683835863304e-01 6.768835037913099040e-01
+6.860285877917917663e-01 6.846480979058627847e-01 6.811183172767648619e-01
+6.902910385374814162e-01 6.889208065349254895e-01 6.853653298673966221e-01
+6.945658441110833525e-01 6.932059019056816540e-01 6.896246488153768839e-01
+6.988531142404552643e-01 6.975034922754330680e-01 6.938963819915323628e-01
+7.031529592909376847e-01 7.018136865365992572e-01 6.981806378980350836e-01
+7.074654902783347188e-01 7.061365942294985931e-01 7.024775256811436330e-01
+7.117908188819498383e-01 7.104723255551799177e-01 7.067871551439977029e-01
+7.161290574576848478e-01 7.148209913883080135e-01 7.111096367594695877e-01
+7.204803190511824829e-01 7.191827032901243477e-01 7.154450816830777438e-01
+7.248447174110647095e-01 7.235575735214593296e-01 7.197936017659686270e-01
+7.292223670022126569e-01 7.279457150558282796e-01 7.241553095679664764e-01
+7.336133830191388094e-01 7.323472415925961210e-01 7.285303183706990371e-01
+7.380178813994349163e-01 7.367622675702208968e-01 7.329187421908015532e-01
+7.424359788373007252e-01 7.411909081795812204e-01 7.373206957932009198e-01
+7.468677927971572039e-01 7.456332793773956524e-01 7.417362947044913168e-01
+7.513134415273599043e-01 7.500894978997243445e-01 7.461656552263956632e-01
+7.557730440739957034e-01 7.545596812755732685e-01 7.506088944493225501e-01
+7.602467202947890135e-01 7.590439478405959228e-01 7.550661302660249818e-01
+7.647345908731115749e-01 7.635424167508956250e-01 7.595374813853584817e-01
+7.692367773320856195e-01 7.680552079969388268e-01 7.640230673461460009e-01
+7.737534020488213704e-01 7.725824424175786742e-01 7.685230085311559600e-01
+7.782845882687531303e-01 7.771242417141914771e-01 7.730374261811926440e-01
+7.828304601200990476e-01 7.816807284649387455e-01 7.775664424093062799e-01
+7.873911426284513349e-01 7.862520261391466869e-01 7.821101802151280147e-01
+7.919667617314893882e-01 7.908382591118159333e-01 7.866687634993275724e-01
+7.965574442938269106e-01 7.954395526782646053e-01 7.912423170782062476e-01
+8.011633181219949273e-01 8.000560330689072686e-01 7.958309666984236808e-01
+8.057845119795647992e-01 8.046878274641713347e-01 8.004348390518634115e-01
+8.104211556024298879e-01 8.093350640095594573e-01 8.050540617906442042e-01
+8.150733797142104553e-01 8.139978718308641392e-01 8.096887635422753693e-01
+8.197413160418366429e-01 8.186763810495288896e-01 8.143390739249705135e-01
+8.244250973312831077e-01 8.233707227981730270e-01 8.190051235631107263e-01
+8.291248573634558694e-01 8.280810292362735803e-01 8.236870441028736334e-01
+8.338407309702662307e-01 8.328074335660153871e-01 8.283849682280266524e-01
+8.385728540508587958e-01 8.375500700483110572e-01 8.330990296758882252e-01
+8.433213635880250081e-01 8.423090740189962400e-01 8.378293632534637991e-01
+8.480863976647909919e-01 8.470845819052075232e-01 8.425761048537626641e-01
+8.528680954812019044e-01 8.518767312419356363e-01 8.473393914722943121e-01
+8.576665973712844782e-01 8.566856606887783832e-01 8.521193612237554227e-01
+8.624820448202135115e-01 8.615115100468785370e-01 8.569161533589082502e-01
+8.673145804816755344e-01 8.663544202760624646e-01 8.617299082816555211e-01
+8.721643481954295396e-01 8.712145335121869172e-01 8.665607675663183906e-01
+8.770314930050886471e-01 8.760919930846851056e-01 8.714088739751210122e-01
+8.819161611761232589e-01 8.809869435343266053e-01 8.762743714758871594e-01
+8.868185002140476225e-01 8.858995306312075213e-01 8.811574052599523421e-01
+8.917386588828791760e-01 8.908299013929442678e-01 8.860581217602967463e-01
+8.966767872237935144e-01 8.957782041031091547e-01 8.909766686699112093e-01
+9.016330365740294894e-01 9.007445883298949019e-01 8.959131949603859058e-01
+9.066075595860336733e-01 9.057292049450164084e-01 9.008678509007446156e-01
+9.116005102468445198e-01 9.107322061428585469e-01 9.058407880765154685e-01
+9.166120438977335416e-01 9.157537454598729809e-01 9.108321594090563744e-01
+9.216423172541110542e-01 9.207939777942257820e-01 9.158421191751267010e-01
+9.266914884256760576e-01 9.258530594257129431e-01 9.208708230267246275e-01
+9.317597169368545540e-01 9.309311480359353519e-01 9.259184280111854015e-01
+9.368471637474911073e-01 9.360284027287524289e-01 9.309850925915528208e-01
+9.419539912738585929e-01 9.411449840510025533e-01 9.360709766672253851e-01
+9.470803634098973189e-01 9.462810540135232484e-01 9.411762415948876637e-01
+9.522264455488126389e-01 9.514367761124457035e-01 9.463010502097274346e-01
+9.573924046049070435e-01 9.566123153508007126e-01 9.514455668469502525e-01
+9.625784090357906164e-01 9.618078382604079435e-01 9.566099573635956643e-01
+9.677846288648154216e-01 9.670235129241012695e-01 9.617943891606574036e-01
+9.730112357039150117e-01 9.722595089982409844e-01 9.669990312055217752e-01
+9.782584027767170509e-01 9.775159977355695196e-01 9.722240540547290033e-01
+9.835263049420009951e-01 9.827931520083860173e-01 9.774696298770532144e-01
+9.888151187175039381e-01 9.880911463320615207e-01 9.827359324769276983e-01
+9.941250223040635214e-01 9.934101568888956679e-01 9.880231373182063459e-01
+9.994561956101176703e-01 9.987503615523224410e-01 9.933314215482736964e-01]; 
+
+   case 'oxy' 
+      RGB = [2.503217690585841648e-01 2.046237300762866404e-02 1.966891524096342492e-02
+2.555648459031592545e-01 2.111591456205731687e-02 2.090007960568026485e-02
+2.608015512876060149e-01 2.176436656689777205e-02 2.215967228611414111e-02
+2.660446264484087608e-01 2.238303577293145399e-02 2.344016212259009482e-02
+2.712886712210940687e-01 2.298148595687718801e-02 2.474301784763054818e-02
+2.765326364024714989e-01 2.356133594445880552e-02 2.606762144216200061e-02
+2.817861616671273883e-01 2.410204070052599998e-02 2.740685289115278589e-02
+2.870367982396965223e-01 2.462864448899236905e-02 2.876669328790133415e-02
+2.922964729271802509e-01 2.511521382538545177e-02 3.013810573921637051e-02
+2.975597737008193189e-01 2.557236440082744783e-02 3.152275139605174165e-02
+3.028221259572578816e-01 2.600980779972315513e-02 3.292220687889551439e-02
+3.080989498969098905e-01 2.639179365308667174e-02 3.432344572619091400e-02
+3.133766829953620880e-01 2.674829090811269017e-02 3.573422597599480721e-02
+3.186553157006936643e-01 2.707912721943054463e-02 3.715280555634475207e-02
+3.239494929539773471e-01 2.734824710730623595e-02 3.856493364156053649e-02
+3.292456607259481305e-01 2.758740066123798601e-02 3.997915613902540410e-02
+3.345444278514146941e-01 2.779482795061332528e-02 4.137064065412290187e-02
+3.398547648028715784e-01 2.794706430858015858e-02 4.271748371599067701e-02
+3.451724938219263294e-01 2.805368502448264342e-02 4.402857557145471029e-02
+3.504942702458693216e-01 2.812284384388611183e-02 4.530588662285887219e-02
+3.558206849295221796e-01 2.815263330374409914e-02 4.654771396733792949e-02
+3.611591248942810362e-01 2.812226066677377817e-02 4.774545304821291997e-02
+3.665053860525750440e-01 2.804229091411641200e-02 4.890135088859193929e-02
+3.718571787846235432e-01 2.791864422174392124e-02 5.001583572284549334e-02
+3.772149143594046850e-01 2.774987601297047857e-02 5.108646119902058441e-02
+3.825789453973626464e-01 2.753471831366087474e-02 5.211053476335369278e-02
+3.879495474114582620e-01 2.727215754453635524e-02 5.308509691226611510e-02
+3.933299882018631566e-01 2.695211659028963827e-02 5.400332569218738860e-02
+3.987172740322774689e-01 2.658339014111724477e-02 5.486495007360833037e-02
+4.041100983203390062e-01 2.617015416328878283e-02 5.566751194225177252e-02
+4.095080947848049324e-01 2.571397721177636972e-02 5.640694245975855919e-02
+4.149106638808665037e-01 2.521741655377478589e-02 5.707880838445476140e-02
+4.203169224276966931e-01 2.468426285194311523e-02 5.767829102284769555e-02
+4.257256449760880579e-01 2.411983059354547848e-02 5.820016787208186909e-02
+4.311355423694091527e-01 2.353014014799948567e-02 5.863827924234723404e-02
+4.365491859863961932e-01 2.290868330200904537e-02 5.897909145270988779e-02
+4.419598927187284310e-01 2.228071155950197418e-02 5.922145534252384186e-02
+4.473641324377782280e-01 2.166211126655111924e-02 5.935827807305734533e-02
+4.527575481284770720e-01 2.107281505394200879e-02 5.938213194820316648e-02
+4.581418547792654450e-01 2.051270615727579169e-02 5.927134198778213209e-02
+4.635070947573724509e-01 2.002404746597910568e-02 5.902266227273281901e-02
+4.688449749746688711e-01 1.964556257714445905e-02 5.862776439317262528e-02
+4.741516624279997205e-01 1.940234058919213661e-02 5.806380572763907705e-02
+4.794118268811014549e-01 1.936335100061424216e-02 5.733101890860898414e-02
+4.846131761746131361e-01 1.958983233892800865e-02 5.642063175373675937e-02
+4.897434510076072445e-01 2.014613479230887780e-02 5.532001973850570603e-02
+4.947824246224634126e-01 2.112807697320261829e-02 5.404462487713374702e-02
+4.997137287427875774e-01 2.261949505617124809e-02 5.260678769207213085e-02
+5.045221796142561610e-01 2.470021881498402766e-02 5.103037173727244941e-02
+5.091962933960687554e-01 2.743497840685808764e-02 4.934858848197953146e-02
+5.137301598248652512e-01 3.086487576009750225e-02 4.759930860912273826e-02
+5.181239197849397682e-01 3.500462903556054994e-02 4.582042542223261489e-02
+5.223830134996687580e-01 3.984501254619848137e-02 4.404711326285257883e-02
+5.265167824786487483e-01 4.511655072324017440e-02 4.230178743284147141e-02
+5.305361428192386652e-01 5.056764255442364880e-02 4.059909753035081253e-02
+5.344521625028915146e-01 5.613230116634507910e-02 3.893707769140806324e-02
+5.382767330694612218e-01 6.174820344635036790e-02 3.738224682749225619e-02
+5.420185347623404093e-01 6.738177887118912412e-02 3.591446197845812871e-02
+5.456872157339706098e-01 7.300021292187203192e-02 3.454024418762975668e-02
+5.492896320812740152e-01 7.858770433534650879e-02 3.324672306620826689e-02
+5.528333528391162766e-01 8.412806121949528704e-02 3.203530971705802199e-02
+5.563218795889670609e-01 8.962115486157959388e-02 3.088637914922974861e-02
+5.597632862141976862e-01 9.505189218342754987e-02 2.981373160271517594e-02
+5.631590542003003241e-01 1.004271762153811642e-01 2.879663766133408118e-02
+3.124295956605860902e-01 3.104471192643529220e-01 3.090926227255514358e-01
+3.153354478588585863e-01 3.133524060708574033e-01 3.119821443435121244e-01
+3.182430598922476594e-01 3.162596157133579222e-01 3.148735451052371292e-01
+3.211522197125276645e-01 3.191685075353222212e-01 3.177665914743306730e-01
+3.240629875467020971e-01 3.220791403920337248e-01 3.206613422482794129e-01
+3.269754230998080380e-01 3.249915726322321063e-01 3.235578557174154657e-01
+3.298895855632509311e-01 3.279058621062435619e-01 3.264561896730452384e-01
+3.328058950511413872e-01 3.308224519789740858e-01 3.293567801282767382e-01
+3.357242465615515870e-01 3.337412216005199994e-01 3.322595102624680830e-01
+3.386445426634580036e-01 3.366620612448586458e-01 3.351642734426954484e-01
+3.415668398051758814e-01 3.395850261019035532e-01 3.380711247962143173e-01
+3.444911940093728364e-01 3.425101709489803414e-01 3.409801190370675417e-01
+3.474177171638533901e-01 3.454376095238633759e-01 3.438913688818530656e-01
+3.503469833885533569e-01 3.483679413950338533e-01 3.468054653691610145e-01
+3.532785135690075240e-01 3.513006555881026949e-01 3.497219068304560641e-01
+3.562123614381408343e-01 3.542358046622061107e-01 3.526407457578920046e-01
+3.591485803768168505e-01 3.571734408356729285e-01 3.555620343021813068e-01
+3.620872234195166572e-01 3.601136159915630519e-01 3.584858242781328586e-01
+3.650286939883333193e-01 3.630567477596149395e-01 3.614125280750120628e-01
+3.679730835603966521e-01 3.660029262684281748e-01 3.643422355711175009e-01
+3.709200935456273829e-01 3.689518358458999114e-01 3.672746363207957110e-01
+3.738697751287151094e-01 3.719035265860498596e-01 3.702097803460631664e-01
+3.768221792091647204e-01 3.748580483073254976e-01 3.731477173927215119e-01
+3.797773564061294738e-01 3.778154505573166899e-01 3.760884969350717366e-01
+3.827360799167192629e-01 3.807765314450937688e-01 3.790329075084533650e-01
+3.856977984917309143e-01 3.837407150183698712e-01 3.819803814059496427e-01
+3.886624779865983093e-01 3.867079629882915204e-01 3.849308813833784426e-01
+3.916301675373726754e-01 3.896783234711069799e-01 3.878844554799001365e-01
+3.946009160512599645e-01 3.926518443624523180e-01 3.908411515134125325e-01
+3.975750328941100031e-01 3.956288421370338648e-01 3.938012827103044011e-01
+4.005529526089701697e-01 3.986097611264988183e-01 3.967652888788774646e-01
+4.035341133137877456e-01 4.015940188237794861e-01 3.997325949836182390e-01
+4.065185627017746106e-01 4.045816619557017213e-01 4.027032476697736119e-01
+4.095063482817839495e-01 4.075727370718815190e-01 4.056772934047228052e-01
+4.124975173818349883e-01 4.105672905481647095e-01 4.086547784814160145e-01
+4.154927954346919750e-01 4.135660647292051517e-01 4.116364375734101744e-01
+4.184918779167747238e-01 4.165687434984514104e-01 4.146219586956935155e-01
+4.214945204326190908e-01 4.195750736283389015e-01 4.176110918403175276e-01
+4.245007693662425363e-01 4.225851005893354051e-01 4.206038823909587498e-01
+4.275106709591262044e-01 4.255988697155072553e-01 4.236003755942250870e-01
+4.305243725018209622e-01 4.286165297439478161e-01 4.266007190310782127e-01
+4.335427826643468152e-01 4.316390076472571558e-01 4.296058306451354114e-01
+4.365650183856102373e-01 4.346653972573469860e-01 4.326148141166248351e-01
+4.395911251655309493e-01 4.376957432004656146e-01 4.356277139803868548e-01
+4.426211483952462444e-01 4.407300899994052723e-01 4.386445746671270296e-01
+4.456551333598003373e-01 4.437684820761266802e-01 4.416654405060406741e-01
+4.486936890393982691e-01 4.468115388000440946e-01 4.446909251918003680e-01
+4.517368917688296959e-01 4.498593352768152642e-01 4.477211036271617761e-01
+4.547842258698517881e-01 4.529113434703738172e-01 4.507554532964671012e-01
+4.578357360933586473e-01 4.559676072973268823e-01 4.537940180195341733e-01
+4.608914671138729657e-01 4.590281706024677000e-01 4.568368415436758201e-01
+4.639514635319542113e-01 4.620930771611265198e-01 4.598839675460500431e-01
+4.670168649608225642e-01 4.651634846458155281e-01 4.629365433533288998e-01
+4.700867768827386439e-01 4.682384803878612001e-01 4.659936652121621781e-01
+4.731611215843889440e-01 4.713179837040911146e-01 4.690552534918061012e-01
+4.762399433154002049e-01 4.744020380433919271e-01 4.721213515388643089e-01
+4.793232862779120418e-01 4.774906868110462277e-01 4.751920026556298859e-01
+4.824115798157278534e-01 4.805843644813184157e-01 4.782676377512943278e-01
+4.855054065192261903e-01 4.836836604074202794e-01 4.813488413805353527e-01
+4.886039206405141666e-01 4.867877139846760737e-01 4.844347609063475724e-01
+4.917071661727567822e-01 4.898965684306006430e-01 4.875254394390606261e-01
+4.948151870857158130e-01 4.930102669426385531e-01 4.906209200682110083e-01
+4.979280273277140179e-01 4.961288527000837223e-01 4.937212458644600344e-01
+5.010466910650995809e-01 4.992533419227356273e-01 4.968274246952877893e-01
+5.041707018503041038e-01 5.023832495766817896e-01 4.999389760567756191e-01
+5.072996974715958673e-01 5.055182071194114224e-01 5.030555348110034020e-01
+5.104337218186610903e-01 5.086582576893806662e-01 5.061771439834861219e-01
+5.135728187816994694e-01 5.118034444283539042e-01 5.093038466023047661e-01
+5.167171776492902602e-01 5.149539576128636664e-01 5.124358316223290855e-01
+5.198680090904711504e-01 5.181110205469275920e-01 5.155743126495593298e-01
+5.230240786607408543e-01 5.212733823701987124e-01 5.187180494068470704e-01
+5.261854303107180719e-01 5.244410863000215084e-01 5.218670849934367029e-01
+5.293521080119285571e-01 5.276141755769954145e-01 5.250214625310645200e-01
+5.325241557584816654e-01 5.307926934666159502e-01 5.281812251655980672e-01
+5.357023822572596350e-01 5.339774558564434059e-01 5.313471825523317094e-01
+5.388868512651764364e-01 5.371685253040656693e-01 5.345193971027960567e-01
+5.420768564731617278e-01 5.403651867966881017e-01 5.376971597230371103e-01
+5.452724420645790326e-01 5.435674838014370458e-01 5.408805137559964393e-01
+5.484736522643940404e-01 5.467754598289500390e-01 5.440695025873386603e-01
+5.516805313407564526e-01 5.499891584349245743e-01 5.472641696469991990e-01
+5.548945759211054707e-01 5.532100885206570062e-01 5.504660124980879088e-01
+5.581145670784500856e-01 5.564370183489838473e-01 5.536738091851505228e-01
+5.613403945534086725e-01 5.596698355312789142e-01 5.568874483927889196e-01
+5.645721029241054234e-01 5.629085839430609806e-01 5.601069738660463537e-01
+5.678097368298002934e-01 5.661533075224889355e-01 5.633324294117918463e-01
+5.710538502837967378e-01 5.694045636227955676e-01 5.665643684189753948e-01
+5.743051694640114446e-01 5.726630826009092567e-01 5.698035160864106663e-01
+5.775625831679842559e-01 5.759277431077964859e-01 5.730487596836393305e-01
+5.808261364437535823e-01 5.791985894982362160e-01 5.763001434292895908e-01
+5.840958744176996120e-01 5.824756662065079249e-01 5.795577116206488411e-01
+5.873718422959868235e-01 5.857590177478061433e-01 5.828215086350755358e-01
+5.906553283643478647e-01 5.890499401540877367e-01 5.860928212875072818e-01
+5.939456863496749284e-01 5.923477811162676243e-01 5.893710023062436187e-01
+5.972424456095442036e-01 5.956520656886060694e-01 5.926555803959596691e-01
+6.005456518693509382e-01 5.989628389111977258e-01 5.959466004538667150e-01
+6.038553509508688411e-01 6.022801459213279474e-01 5.992441074734932149e-01
+6.071717820521228548e-01 6.056042263837068118e-01 6.025483395942317077e-01
+6.104964593110322468e-01 6.089366020846007643e-01 6.058608080471198365e-01
+6.138278031916972743e-01 6.122756828005896379e-01 6.091799341380006449e-01
+6.171658601273857236e-01 6.156215142843693977e-01 6.125057634705911580e-01
+6.205106766639508775e-01 6.189741424017308757e-01 6.158383417607966592e-01
+6.238622994612079697e-01 6.223336131329110232e-01 6.191777148380593898e-01
+6.272217495526114517e-01 6.257009516987572795e-01 6.225249009896979269e-01
+6.305890773753839440e-01 6.290762073460191006e-01 6.258799493857725160e-01
+6.339633886626701020e-01 6.324584802535679895e-01 6.292419666367617959e-01
+6.373447307909330117e-01 6.358478171202772700e-01 6.326109992853028441e-01
+6.407331512665517259e-01 6.392442647751326312e-01 6.359870940032011921e-01
+6.441286977271819536e-01 6.426478701785689474e-01 6.393702975927646470e-01
+6.475332468520634821e-01 6.460605168712778568e-01 6.427624810073024886e-01
+6.509452405110124351e-01 6.494806387834576311e-01 6.461620890521664329e-01
+6.543645413031805580e-01 6.529080970404893547e-01 6.495689839578402403e-01
+6.577911976868459076e-01 6.563429394235856806e-01 6.529832133417282636e-01
+6.612252582674151835e-01 6.597852138609858752e-01 6.564048249672772561e-01
+6.646674156910871156e-01 6.632356145596635111e-01 6.598345085785605191e-01
+6.681185471134806209e-01 6.666950204492557708e-01 6.632731374913205524e-01
+6.715772676011302345e-01 6.701620407069336371e-01 6.667193303275074090e-01
+6.750436266693425891e-01 6.736367241694728447e-01 6.701731357532019207e-01
+6.785176739964410286e-01 6.771191198362991326e-01 6.736346025961090778e-01
+6.819994594251277409e-01 6.806092768708275065e-01 6.771037798468937385e-01
+6.854905830673579947e-01 6.841087989309356798e-01 6.805822608627878356e-01
+6.889902152593658791e-01 6.876168527353629933e-01 6.840692180364433828e-01
+6.924977753545575876e-01 6.911328551431065170e-01 6.875640721906080000e-01
+6.960133142099522718e-01 6.946568563288202380e-01 6.910668733210059145e-01
+6.995368828630013081e-01 6.981889066469423311e-01 6.945776716020720665e-01
+7.030687808865530020e-01 7.017293055249038680e-01 6.980967646835468665e-01
+7.066108508007371558e-01 7.052798983395075494e-01 7.016259863087929149e-01
+7.101611448678148975e-01 7.088387320594561336e-01 7.051633961675597417e-01
+7.137197152305658765e-01 7.124058581399919099e-01 7.087090455286524371e-01
+7.172866142285043711e-01 7.159813282321918493e-01 7.122629858555886706e-01
+7.208618943992978201e-01 7.195651941843620447e-01 7.158252688079900228e-01
+7.244468165907456125e-01 7.231587179839266133e-01 7.193971485631489582e-01
+7.280414152493157598e-01 7.267619329076518975e-01 7.229786584068481625e-01
+7.316445953770737143e-01 7.303737413779746168e-01 7.265687078387530473e-01
+7.352564107249326408e-01 7.339941964502680882e-01 7.301673497187975981e-01
+7.388769152586618372e-01 7.376233513935839259e-01 7.337746371194190376e-01
+7.425061631603386836e-01 7.412612596920828967e-01 7.373906233269835742e-01
+7.461464606086873896e-01 7.449102288687008411e-01 7.410176017144567417e-01
+7.497958701755464972e-01 7.485683184324932737e-01 7.446536440345916663e-01
+7.534542299137884092e-01 7.522353655092588465e-01 7.482985885600491605e-01
+7.571215953297079082e-01 7.559114248995535412e-01 7.519524898864893281e-01
+7.607980221631284179e-01 7.595965516360115855e-01 7.556154028404162837e-01
+7.644843645869688897e-01 7.632915995427993483e-01 7.592881761602847668e-01
+7.681816678947460675e-01 7.669976132758333787e-01 7.629718483168250742e-01
+7.718882453269261257e-01 7.707129043795911683e-01 7.666647413348012252e-01
+7.756041540460802963e-01 7.744375293002100369e-01 7.703669114468018053e-01
+7.793294514661021077e-01 7.781715447334471847e-01 7.740784151337410934e-01
+7.830641952537596984e-01 7.819150076262105786e-01 7.777993091263859515e-01
+7.868103454866590685e-01 7.856698771694257122e-01 7.815315409597441976e-01
+7.905668625004234062e-01 7.894351125938581237e-01 7.852740763344663311e-01
+7.943330461869060333e-01 7.932100130488932699e-01 7.890262187563090723e-01
+7.981089557544192026e-01 7.969946370120729595e-01 7.927880264788568221e-01
+8.018946506826831744e-01 8.007890432303661488e-01 7.965595580237599949e-01
+8.056905050124041345e-01 8.045936048548131270e-01 8.003411844486416626e-01
+8.094987355104209525e-01 8.084105365473570615e-01 8.041351074326460457e-01
+8.133169785258600459e-01 8.122374748676888245e-01 8.079389777476483347e-01
+8.171452951864401903e-01 8.160744801984102237e-01 8.117528555427496739e-01
+8.209837469106039398e-01 8.199216132106035282e-01 8.155768012541027012e-01
+8.248323954092128263e-01 8.237789348655052413e-01 8.194108756065791033e-01
+8.286927840915763177e-01 8.276479863786950775e-01 8.232566109078919281e-01
+8.325649270796637857e-01 8.315287807573953360e-01 8.271140202815062681e-01
+8.364475027756378411e-01 8.354199968604651971e-01 8.309817904707684777e-01
+8.403405746677916621e-01 8.393216974124767527e-01 8.348599839552471868e-01
+8.442442065571257315e-01 8.432339454481773133e-01 8.387486635231791166e-01
+8.481584625591254145e-01 8.471568043142441162e-01 8.426478922732166810e-01
+8.520861550384412064e-01 8.510930816852287917e-01 8.465604617719046932e-01
+8.560249024716682920e-01 8.550403982451367790e-01 8.504840066608007065e-01
+8.599745194151316996e-01 8.589985681043337262e-01 8.544183422480284840e-01
+8.639350718981159138e-01 8.629676565074151373e-01 8.583635335210283435e-01
+8.679066262857828562e-01 8.669477290320206642e-01 8.623196457986929131e-01
+8.718902314626645333e-01 8.709398320337272681e-01 8.662877195686166099e-01
+8.758871280259100667e-01 8.749452028944590953e-01 8.702689853121506891e-01
+8.798952803818768098e-01 8.789618087644507360e-01 8.742614219551688715e-01
+8.839147569330807475e-01 8.829897172412359829e-01 8.782650968268708169e-01
+8.879456264404302912e-01 8.870289962776199966e-01 8.822800776100528930e-01
+8.919879580252079165e-01 8.910797141836338531e-01 8.863064323430556168e-01
+8.960441427301344408e-01 8.951442561280015253e-01 8.903465328361804820e-01
+9.001128904953542564e-01 8.992213337528862649e-01 8.943990982004267343e-01
+9.041933650584489390e-01 9.033101118731188262e-01 8.984632980967039995e-01
+9.082856377297909845e-01 9.074106609684426950e-01 9.025392027229122149e-01
+9.123897802040108473e-01 9.115230518994157372e-01 9.066268826559935601e-01
+9.165062601210144377e-01 9.156477504829055869e-01 9.107268012198581619e-01
+9.206377372962850636e-01 9.197874089604549663e-01 9.148415959800745290e-01
+9.247813586963474775e-01 9.239391805138976732e-01 9.189684361991556916e-01
+9.289371983431667923e-01 9.281031383100254439e-01 9.231073947496013510e-01
+9.331053306682361992e-01 9.322793559214043180e-01 9.272585449078167841e-01
+9.372858305148153990e-01 9.364679073285836486e-01 9.314219603563131944e-01
+9.414805849385761150e-01 9.406706735323028257e-01 9.355995118038626934e-01
+9.456895815303881792e-01 9.448876411191396985e-01 9.397911860891489111e-01
+9.499112324285693409e-01 9.491172259914930631e-01 9.439954080097928690e-01
+9.541456149743491322e-01 9.533595046046891008e-01 9.482122537117517735e-01
+9.583928069476742584e-01 9.576145538486544595e-01 9.524417997736036590e-01
+9.626528865695892501e-01 9.618824510502640424e-01 9.566841232088870717e-01
+9.717386353800526733e-01 9.973777600608618732e-01 4.115658643585359822e-01
+9.662006602777347686e-01 9.937266459819259490e-01 4.023251811958163393e-01
+9.607627521945550919e-01 9.900572267174857499e-01 3.929085929665734889e-01
+9.554415272451376451e-01 9.863634202187735456e-01 3.833020851902597670e-01
+9.502559385734440367e-01 9.826387048868144847e-01 3.734797610708937010e-01
+9.452247574758879667e-01 9.788787426033022099e-01 3.633572044040755400e-01
+9.403922547690045652e-01 9.750651532690909340e-01 3.529658674736868007e-01
+9.358012781940933111e-01 9.711846436929117976e-01 3.422125309180296115e-01
+9.315219006576069827e-01 9.672115998149192206e-01 3.310553617148976335e-01
+9.276515136764329483e-01 9.631091768055900504e-01 3.194750358456411865e-01
+9.243262891934023173e-01 9.588257749438183764e-01 3.074483567011621621e-01
+9.217020058646493430e-01 9.542951650631289473e-01 2.951579532336194300e-01
+9.198887370469149838e-01 9.494613758630886524e-01 2.829933059330041467e-01
+9.188014423728452229e-01 9.443342663663614189e-01 2.716012421636955776e-01
+9.181820869339853974e-01 9.389970698605141219e-01 2.614202290916152749e-01
+9.177841550998647735e-01 9.335426933786861170e-01 2.524800001657211412e-01
+9.174401026070885257e-01 9.280407871647589069e-01 2.446155106635521936e-01
+9.170895513231805962e-01 9.225221346800714928e-01 2.375965624445583457e-01
+9.167020828694254497e-01 9.170043397013648567e-01 2.312467382449614473e-01
+9.162674970718558409e-01 9.114958340077099486e-01 2.254318760810480882e-01
+9.157691900066246005e-01 9.060063912564605415e-01 2.200571360818813216e-01
+9.152197058922081352e-01 9.005338027659569589e-01 2.150417998700874245e-01
+9.146241645334555193e-01 8.950779708690549397e-01 2.103289435929298068e-01
+9.139711070576973517e-01 8.896449914470077047e-01 2.058761237663177535e-01
+9.132755157040669536e-01 8.842301350859270714e-01 2.016464740967732761e-01
+9.125407126803214419e-01 8.788330083046588248e-01 1.976125145460150279e-01
+9.117530169460994482e-01 8.734600806229881886e-01 1.937497985711440218e-01
+9.109311963239964394e-01 8.681043338417845368e-01 1.900403276536027364e-01
+9.100752049629435847e-01 8.627663273889324413e-01 1.864683841517677521e-01
+9.091854095601151764e-01 8.574463833033296734e-01 1.830203816986048226e-01
+9.082549005100644113e-01 8.521478984780772592e-01 1.796821188488442467e-01
+9.072929210165844305e-01 8.468673217860986924e-01 1.764454502969030336e-01
+9.063013792870692198e-01 8.416041433916346959e-01 1.733019473598792493e-01
+9.052811273728736952e-01 8.363582655293054779e-01 1.702439219249277103e-01
+9.042330703505969680e-01 8.311295331123278451e-01 1.672645945644082588e-01
+9.031581378443196417e-01 8.259177493137719317e-01 1.643579680291452627e-01
+9.020572628789119696e-01 8.207226877358885231e-01 1.615187200622499042e-01
+9.009313663687085194e-01 8.155441018959304067e-01 1.587421124067343314e-01
+8.997813459322432372e-01 8.103817325993176723e-01 1.560239134014781981e-01
+8.986080680213675009e-01 8.052353136482993667e-01 1.533603319950107013e-01
+8.974123625824063089e-01 8.001045762385368132e-01 1.507479613684808151e-01
+8.961950196441476058e-01 7.949892523212133133e-01 1.481837306596257842e-01
+8.949567873642767513e-01 7.898890771497076857e-01 1.456648635287154658e-01
+8.936983711718720080e-01 7.848037911839249592e-01 1.431888425141153720e-01
+8.924204337256359532e-01 7.797331414892141321e-01 1.407533782964209279e-01
+8.911216151255343387e-01 7.746778361440714855e-01 1.383548030403051743e-01
+8.898020181760183389e-01 7.696378889985142635e-01 1.359906608477614021e-01
+8.884645911096110682e-01 7.646119206511362565e-01 1.336610605915157513e-01
+8.871098774237282658e-01 7.595996914637694886e-01 1.313644302926826601e-01
+8.857383791003278217e-01 7.546009727066200767e-01 1.290993233143932217e-01
+8.843505587935225343e-01 7.496155463925207041e-01 1.268644048815629477e-01
+8.829468419986222782e-01 7.446432050409976799e-01 1.246584402943621550e-01
+8.815249085514379468e-01 7.396851204434677918e-01 1.224776444651401730e-01
+8.800852120157934833e-01 7.347410842227017902e-01 1.203208501022957344e-01
+8.786308879175975806e-01 7.298095076593623665e-01 1.181897480034229675e-01
+8.771622516330287445e-01 7.248902111580254326e-01 1.160834456649006141e-01
+8.756795889485279316e-01 7.199830249122411985e-01 1.140011085329386831e-01
+8.741818688473920185e-01 7.150884618420272343e-01 1.119405415999485953e-01
+8.726664701310860028e-01 7.102078845126149620e-01 1.098977185964423176e-01
+8.711380365425036576e-01 7.053388457490094021e-01 1.078767213026572136e-01
+8.695967618761146767e-01 7.004812035381728919e-01 1.058769266693721234e-01
+8.680428176626151515e-01 6.956348241211850469e-01 1.038977462027144416e-01
+8.664728647912948167e-01 6.908014665312249836e-01 1.019343675562955354e-01
+8.648889520799001307e-01 6.859800077414488495e-01 9.998838514326469085e-02];
+
+   case 'sol' 
+      RGB = [2.014250997833959556e-01 7.730778455372402935e-02 9.342024025258441333e-02
+2.062319592710875060e-01 7.906207768979725548e-02 9.541606071998920413e-02
+2.110428892884436691e-01 8.079536357043612393e-02 9.737846202556904585e-02
+2.158580822956807643e-01 8.250806203226229707e-02 9.930725029816905858e-02
+2.206777103783343352e-01 8.420058748958639261e-02 1.012022063667477878e-01
+2.255019582885565144e-01 8.587332122435217818e-02 1.030630633154644982e-01
+2.303310909623697555e-01 8.752655129320324745e-02 1.048894558390352783e-01
+2.351651244914957362e-01 8.916077192669072393e-02 1.066811567589351084e-01
+2.400041538413338893e-01 9.077639059472936145e-02 1.084378476867565166e-01
+2.448482542469172518e-01 9.237381813988079782e-02 1.101591880324293282e-01
+2.496974811012195872e-01 9.395347052392380438e-02 1.118448155598189275e-01
+2.545518697677066067e-01 9.551577058896976169e-02 1.134943469265998206e-01
+2.594114353201673606e-01 9.706114983944272301e-02 1.151073782157037984e-01
+2.642761722125430146e-01 9.859005025060077476e-02 1.166834854654446307e-01
+2.691460538812255332e-01 1.001029261086328892e-01 1.182222252052740896e-01
+2.740210322821139965e-01 1.016002458867145131e-01 1.197231350040377507e-01
+2.789010373645949281e-01 1.030824941607314804e-01 1.211857340375411263e-01
+2.837859764845531707e-01 1.045501735676682975e-01 1.226095236822268009e-01
+2.886757337585150185e-01 1.060038068088898222e-01 1.239939881417738143e-01
+2.935705596266552364e-01 1.074435592047325860e-01 1.253382180210721730e-01
+2.984708123016127645e-01 1.088694832683588798e-01 1.266411225341654012e-01
+3.033754705455499190e-01 1.102829776040219478e-01 1.279029157767591629e-01
+3.082843160981594277e-01 1.116846670615513903e-01 1.291230138435368602e-01
+3.131971029671865581e-01 1.130752078289798124e-01 1.303008196341493008e-01
+3.181135564546491157e-01 1.144552897453308959e-01 1.314357238709698839e-01
+3.230337594016901570e-01 1.158252511924781902e-01 1.325266762725714476e-01
+3.279584359813157990e-01 1.171847867104950369e-01 1.335718110238658662e-01
+3.328858414856893377e-01 1.185360731157172887e-01 1.345719725768937669e-01
+3.378155708245871303e-01 1.198799635036237599e-01 1.355265097514237183e-01
+3.427471842250678358e-01 1.212173573516503733e-01 1.364347662233350855e-01
+3.476817676568914606e-01 1.225476080130979417e-01 1.372941239039429107e-01
+3.526179187878998866e-01 1.238726093833323050e-01 1.381049156392651633e-01
+3.575544570498519481e-01 1.251940557912539775e-01 1.388672386602565201e-01
+3.624908511464776661e-01 1.265129959708437557e-01 1.395803418854749678e-01
+3.674287950126607916e-01 1.278281902872998865e-01 1.402403192837867185e-01
+3.723652245912653647e-01 1.291433283978542790e-01 1.408496559025098349e-01
+3.772994043575393919e-01 1.304597230378949646e-01 1.414077190879147183e-01
+3.822328244976108125e-01 1.317763828069311027e-01 1.419104659088263887e-01
+3.871627501840784191e-01 1.330967329073056149e-01 1.423599677282273157e-01
+3.920880611619059208e-01 1.344225444091708133e-01 1.427559829693639537e-01
+3.970102845366911826e-01 1.357528321160993978e-01 1.430939047058796265e-01
+4.019257908029647552e-01 1.370920335458912787e-01 1.433773252895977068e-01
+4.068349561616130816e-01 1.384404082220755672e-01 1.436033049025308150e-01
+4.117365731263126216e-01 1.397998954736640875e-01 1.437714012378476514e-01
+4.166285955020519460e-01 1.411733354490503911e-01 1.438826947863026673e-01
+4.215115464927484679e-01 1.425608842716513391e-01 1.439334793454142836e-01
+4.263818625509953053e-01 1.439670074541691269e-01 1.439276912848104217e-01
+4.312408181144407604e-01 1.453911021832318962e-01 1.438598606513883382e-01
+4.360843175580979003e-01 1.468382080621888075e-01 1.437352070106750757e-01
+4.409133399041038626e-01 1.483080544589621963e-01 1.435484892033262738e-01
+4.457240620502335715e-01 1.498053889889406909e-01 1.433047202671754727e-01
+4.505169861034231116e-01 1.513304477119505886e-01 1.429993558897900696e-01
+4.552886678338638471e-01 1.528875528172430887e-01 1.426369447211624508e-01
+4.600387072749128614e-01 1.544778583065680166e-01 1.422148901612839134e-01
+4.647645669051368444e-01 1.561046932382532393e-01 1.417359354431781127e-01
+4.694647696847664142e-01 1.577702615986552870e-01 1.412003046328143552e-01
+4.741377460736882488e-01 1.594768244179092798e-01 1.406085235372486197e-01
+4.787811635810699795e-01 1.612273475797827982e-01 1.399635953741071304e-01
+4.833940392196432456e-01 1.630233960258756498e-01 1.392646788568434324e-01
+4.879740080405346458e-01 1.648678210719416448e-01 1.385155272254653958e-01
+4.925195693223419213e-01 1.667625387560449646e-01 1.377175480485133274e-01
+4.970292850743541213e-01 1.687093212494573113e-01 1.368722045288005285e-01
+5.015013418271374590e-01 1.707101850535491239e-01 1.359828524777431658e-01
+5.059344608615837791e-01 1.727665378729273671e-01 1.350513348829507354e-01
+5.103272555076001638e-01 1.748797680652766917e-01 1.340804814887887886e-01
+5.146784999821305551e-01 1.770509926066398676e-01 1.330731030668735604e-01
+5.189871207659747521e-01 1.792810660321904059e-01 1.320320170625302603e-01
+5.232521628013230286e-01 1.815706081303557207e-01 1.309602397868673829e-01
+5.274729145399480457e-01 1.839199144444812750e-01 1.298602350351042156e-01
+5.316485781433754054e-01 1.863291944433481395e-01 1.287360215107217765e-01
+5.357788119794710813e-01 1.887982003317690283e-01 1.275896151617726404e-01
+5.398632980453529351e-01 1.913265486380361924e-01 1.264236887032485768e-01
+5.439016755531911329e-01 1.939137144580994065e-01 1.252427388260835273e-01
+5.478941342086204314e-01 1.965587857098634594e-01 1.240472431523338970e-01
+5.518406011876045847e-01 1.992608233247842864e-01 1.228416287224595171e-01
+5.557413604777560190e-01 2.020186434106095441e-01 1.216276788300265921e-01
+5.595967825163993270e-01 2.048309740311727856e-01 1.204067641590413351e-01
+5.634071785471536087e-01 2.076963248023981912e-01 1.191839172318373274e-01
+5.671732069794859221e-01 2.106133447776186718e-01 1.179569341314256059e-01
+5.708953502475510033e-01 2.135801749668952421e-01 1.167331750031382620e-01
+5.745743340603017835e-01 2.165955297740416174e-01 1.155086834950974917e-01
+5.782108774062354462e-01 2.196573476346848075e-01 1.142903383669127693e-01
+5.818056681759461446e-01 2.227643917275112795e-01 1.130745297734544186e-01
+5.853596324247829497e-01 2.259144368785390156e-01 1.118679346243981187e-01
+5.888733531729506421e-01 2.291064977832514282e-01 1.106657061174652901e-01
+5.923480147332496060e-01 2.323380142637169188e-01 1.094762267036840098e-01
+5.957840241257977842e-01 2.356083643285451501e-01 1.082930207415330470e-01
+5.991826510896112179e-01 2.389150535758420846e-01 1.071233989765111305e-01
+6.025444033584952397e-01 2.422572079085022478e-01 1.059638000704014038e-01
+6.058701491001592387e-01 2.456332409492081315e-01 1.048158025498839019e-01
+6.091610396494541169e-01 2.490411636600449730e-01 1.036832083023569995e-01
+6.124172967183565408e-01 2.524805655496659695e-01 1.025613962727195683e-01
+6.156402174450263942e-01 2.559493015306805175e-01 1.014554136320146294e-01
+6.188304674185852727e-01 2.594462946423264360e-01 1.003647858381197522e-01
+6.219883549579363624e-01 2.629709881912258296e-01 9.928701461787994842e-02
+6.251150949354874475e-01 2.665215196417168309e-01 9.822607331815666476e-02
+6.282114705640686747e-01 2.700967151118268128e-01 9.718275325572381385e-02
+6.312775931157122988e-01 2.736963322450938207e-01 9.615407260814298751e-02
+6.343140968307461325e-01 2.773194022482146082e-01 9.514062524056160486e-02
+6.373225940474543938e-01 2.809637253536654833e-01 9.414820920814792604e-02
+6.403029049301643960e-01 2.846294803262617856e-01 9.317287627515624671e-02
+6.432554503146770131e-01 2.883160464262430889e-01 9.221435672465166933e-02
+6.461807870545831500e-01 2.920226445998113096e-01 9.127322088316058846e-02
+6.490798649799141007e-01 2.957480457349839220e-01 9.035190862912848009e-02
+6.519534890851086395e-01 2.994912417888541123e-01 8.945207804511770555e-02
+6.548014840508611378e-01 3.032523985397311828e-01 8.857115779395227650e-02
+6.576243271404891289e-01 3.070309030666096284e-01 8.770973119670061324e-02
+6.604224780876138956e-01 3.108261780844247535e-01 8.686839073952234980e-02
+6.631963792788750922e-01 3.146376804982159436e-01 8.604773901491818977e-02
+6.659464950830153995e-01 3.184648571182398524e-01 8.524854019761693436e-02
+6.686740068110078594e-01 3.223063950997894223e-01 8.447431908919650345e-02
+6.713784685540787889e-01 3.261627733896342862e-01 8.372242463404078183e-02
+6.740602498156743616e-01 3.300335755312562847e-01 8.299350184989945367e-02
+6.767197045307955516e-01 3.339184117562906673e-01 8.228820834254704786e-02
+6.793571714405546302e-01 3.378169176731946055e-01 8.160721412236313088e-02
+6.819729744807380145e-01 3.417287529939577184e-01 8.095120122856311329e-02
+6.845674231809769639e-01 3.456536003014257785e-01 8.032086315939043764e-02
+6.871408130714994345e-01 3.495911638591582271e-01 7.971690410726239850e-02
+6.896934260947393813e-01 3.535411684651399988e-01 7.914003799874758105e-02
+6.922255310194272981e-01 3.575033583501715517e-01 7.859098734029026923e-02
+6.947373838550107150e-01 3.614774961213378379e-01 7.807048187183049381e-02
+6.972292282645524697e-01 3.654633617505798626e-01 7.757925703187978916e-02
+6.997012959744630667e-01 3.694607516080961052e-01 7.711805223920600860e-02
+7.021538071796381564e-01 3.734694775400307920e-01 7.668760899803153674e-02
+7.045869709427744487e-01 3.774893659897066711e-01 7.628866883556534306e-02
+7.070009855867870341e-01 3.815202571614760840e-01 7.592197108269088668e-02
+7.093960390794303850e-01 3.855620042261392877e-01 7.558825051079040569e-02
+7.117723094093527658e-01 3.896144725667428643e-01 7.528823483980665032e-02
+7.141299649529336824e-01 3.936775390635336991e-01 7.502264213486334321e-02
+7.164691648313716854e-01 3.977510914167320943e-01 7.479217811087204848e-02
+7.187900592575979797e-01 4.018350275057843701e-01 7.459753336661339995e-02
+7.210927898726463559e-01 4.059292547837213827e-01 7.443938057163165811e-02
+7.233774900712311995e-01 4.100336897052239138e-01 7.431837163097509968e-02
+7.256442853163093121e-01 4.141482571870220286e-01 7.423513485418420377e-02
+7.278932934424962031e-01 4.182728900992377374e-01 7.419027215599127700e-02
+7.301246249482277184e-01 4.224075287863344741e-01 7.418435631686179366e-02
+7.323383832766364732e-01 4.265521206163164214e-01 7.421792833176479864e-02
+7.345353882716817440e-01 4.307060349567022883e-01 7.429319537753659164e-02
+7.367156646423576039e-01 4.348693003618859243e-01 7.441039153688730479e-02
+7.388787494489402752e-01 4.390423308641819844e-01 7.456862859096566321e-02
+7.410247212778052761e-01 4.432250991934941209e-01 7.476828631581519669e-02
+7.431536528151155840e-01 4.474175832571065103e-01 7.500970147240951236e-02
+7.452656110665121236e-01 4.516197658271001170e-01 7.529316628527241151e-02
+7.473606575657232298e-01 4.558316342481479322e-01 7.561892717684162712e-02
+7.494388485722311977e-01 4.600531801646510766e-01 7.598718377039928584e-02
+7.515014494005359813e-01 4.642834853101814319e-01 7.640057068894035019e-02
+7.535482386381918696e-01 4.685227724793568638e-01 7.685851802683341116e-02
+7.555784292647326206e-01 4.727716755322179387e-01 7.735934440269953694e-02
+7.575920584303713623e-01 4.770302023787819645e-01 7.790304647924226056e-02
+7.595891587998102601e-01 4.812983641144596425e-01 7.848957351759905388e-02
+7.615697586917992146e-01 4.855761748409669898e-01 7.911882810663906085e-02
+7.635351559772435293e-01 4.898627402128037933e-01 7.979298836587264687e-02
+7.654855818523200739e-01 4.941579525945941076e-01 8.051210547168902165e-02
+7.674196884953543574e-01 4.984628195279873775e-01 8.127340285315723389e-02
+7.693374880099380642e-01 5.027773670563000508e-01 8.207659805554132215e-02
+7.712389886872909051e-01 5.071016234993879213e-01 8.292136945254757752e-02
+7.731249880551478437e-01 5.114350748098054344e-01 8.380866202872513937e-02
+7.749971634096607387e-01 5.157766247025432627e-01 8.474069791771285387e-02
+7.768531656759695148e-01 5.201279334240793695e-01 8.571310136491594456e-02
+7.786929885023088360e-01 5.244890387928055064e-01 8.672540635712724932e-02
+7.805166220614638828e-01 5.288599804136482341e-01 8.777711918476124864e-02
+7.823261306937436821e-01 5.332394286426104246e-01 8.887078595429290240e-02
+7.841211261331867410e-01 5.376277019226174403e-01 9.000512625428583324e-02
+7.859000063657322066e-01 5.420258982280999893e-01 9.117718483670700369e-02
+7.876627478111991598e-01 5.464340650106903619e-01 9.238637445837943885e-02
+7.894103755328435446e-01 5.508515783238705499e-01 9.363351104642655964e-02
+7.911449489936349666e-01 5.552771776345648558e-01 9.492063714767667859e-02
+7.928634178435132185e-01 5.597128604871853819e-01 9.624295938665472505e-02
+7.945657449982463927e-01 5.641586812836011378e-01 9.759983714409603550e-02
+7.962529317489702718e-01 5.686140495102688375e-01 9.899190462101559174e-02
+7.979274645055595139e-01 5.730774789890704657e-01 1.004214627980108965e-01
+7.995858497679293464e-01 5.775511834408552092e-01 1.018835148330231588e-01
+8.012280368308171141e-01 5.820352236202099849e-01 1.033774013447087969e-01
+8.028560740659145267e-01 5.865283957952628358e-01 1.049048199319871921e-01
+8.044707409966546097e-01 5.910302911313597418e-01 1.064658666440542745e-01
+8.060691629501393063e-01 5.955426815778210869e-01 1.080566579062864629e-01
+8.076512751425731773e-01 6.000656338781130694e-01 1.096765425113208070e-01
+8.092212933019986565e-01 6.045967120149606799e-01 1.113292481825315650e-01
+8.107760556043207556e-01 6.091378327200270837e-01 1.130107512069984665e-01
+8.123144185459451050e-01 6.136896959567099685e-01 1.147193037693588491e-01
+8.138381395305365196e-01 6.182513237945769236e-01 1.164560306092000397e-01
+8.153492559398581863e-01 6.228216087115111543e-01 1.182221687055251269e-01
+8.168438497700267753e-01 6.274028329685673588e-01 1.200133807424188237e-01
+8.183218295752512361e-01 6.319950736315883555e-01 1.218290715633482957e-01
+8.197890431479778472e-01 6.365951069307501653e-01 1.236738150663118929e-01
+8.212397496268510899e-01 6.412061948148843893e-01 1.255419007966243339e-01
+8.226736710596913582e-01 6.458285162251576894e-01 1.274326125224898576e-01
+8.240954168836683857e-01 6.504595882304867738e-01 1.293492244766023536e-01
+8.255020135816337756e-01 6.551010940717902908e-01 1.312886736975442947e-01
+8.268916161790003105e-01 6.597540661653059635e-01 1.332490015865780419e-01
+8.282680782241739204e-01 6.644164751020815718e-01 1.352327076170389830e-01
+8.296302321797530688e-01 6.690890043064162684e-01 1.372383190289331867e-01
+8.309751426979781197e-01 6.737732479628292248e-01 1.392631732853782667e-01
+8.323064093623322446e-01 6.784673500649637257e-01 1.413094448639914957e-01
+8.336236702662669362e-01 6.831715585604193341e-01 1.433763438952303237e-01
+8.349233956754664732e-01 6.878877450853391196e-01 1.454609632889922177e-01
+8.362094522088989734e-01 6.926139541357441143e-01 1.475655370255327115e-01
+8.374812451634525701e-01 6.973505478666088830e-01 1.496891818583828970e-01
+8.387351652304512184e-01 7.020993985062000675e-01 1.518291366884736149e-01
+8.399758860500933233e-01 7.068581852631129481e-01 1.539880238042938276e-01
+8.412015039419409312e-01 7.116279196951651453e-01 1.561642027825314583e-01
+8.424088634362330019e-01 7.164102051502189150e-01 1.583553901645263495e-01
+8.436040043728154636e-01 7.212020966440341185e-01 1.605648786739153067e-01
+8.447825998855326146e-01 7.260057762544317450e-01 1.627897017014220959e-01
+8.459425004297633777e-01 7.308223161702667170e-01 1.650283355910636407e-01
+8.470916909310660659e-01 7.356478948636396842e-01 1.672849872513207936e-01
+8.482222682093125687e-01 7.404863725972353761e-01 1.695548732398838021e-01
+8.493354922705429466e-01 7.453371669715372905e-01 1.718384513727829743e-01
+8.504363950839656239e-01 7.501979378252857655e-01 1.741381147288197651e-01
+8.515178010463546610e-01 7.550721145067320617e-01 1.764497766633903175e-01
+8.525841071331127230e-01 7.599576641399760080e-01 1.787754909642916834e-01
+8.536351063891680635e-01 7.648547324583224727e-01 1.811148665949305070e-01
+8.546660216706046809e-01 7.697655561558608417e-01 1.834652953721074564e-01
+8.556846647048813592e-01 7.746865865799383855e-01 1.858303883039418847e-01
+8.566843283862169978e-01 7.796209322090990046e-01 1.882066457578640828e-01
+8.576654697805085048e-01 7.845684046728831351e-01 1.905941213680029112e-01
+8.586333372669123776e-01 7.895266856020336510e-01 1.929950487363375766e-01
+8.595800514528921799e-01 7.944993343355386539e-01 1.954056082908571246e-01
+8.605118919067250571e-01 7.994835879345245644e-01 1.978284835821235155e-01
+8.614257659190140970e-01 8.044808542070145396e-01 2.002621028413892890e-01
+8.623187318174559968e-01 8.094924397675259398e-01 2.027050514589471275e-01
+8.631990866135879070e-01 8.145147714844941378e-01 2.051607456378260474e-01
+8.640570316077024193e-01 8.195521241156307202e-01 2.076248627732380503e-01
+8.648985892446832136e-01 8.246019286985761809e-01 2.100998205615737802e-01
+8.657217542057287218e-01 8.296650789343075205e-01 2.125846498551076103e-01
+8.665227359996962031e-01 8.347431960854363453e-01 2.150777232526754901e-01
+8.673102956545263309e-01 8.398326248425269647e-01 2.175824369796515168e-01
+8.680739840584389411e-01 8.449377672354075886e-01 2.200945521598048904e-01
+8.688209397597312922e-01 8.500556721057834775e-01 2.226167862486261861e-01
+8.695475257414353454e-01 8.551878730451877297e-01 2.251476450914057237e-01
+8.702518466222823879e-01 8.603351573784762119e-01 2.276863618988967386e-01
+8.709403456886846140e-01 8.654949292658645765e-01 2.302352780671254040e-01
+8.716032871795772463e-01 8.706711460791707324e-01 2.327907403748207260e-01
+8.722504095804027857e-01 8.758599106230183784e-01 2.353562666294088945e-01
+8.728735089177709350e-01 8.810645242778994968e-01 2.379288443348342996e-01
+8.734755480931443161e-01 8.862838169179700909e-01 2.405095194908647427e-01
+8.740576468844427627e-01 8.915173698391286594e-01 2.430986533749082690e-01
+8.746134519571161503e-01 8.967676725126847437e-01 2.456940353088591378e-01
+8.751533192048812637e-01 9.020307187484648548e-01 2.482992135687792645e-01
+8.756648875509137619e-01 9.073112946820588443e-01 2.509099777331614822e-01
+8.761579961220332669e-01 9.126056308170312770e-01 2.535296558873600947e-01
+8.766251762717257590e-01 9.179165870428791507e-01 2.561557673694155324e-01
+8.770689942806796369e-01 9.232431892037369359e-01 2.587891932203917889e-01
+8.774903570045399226e-01 9.285851079338152125e-01 2.614302497362179234e-01
+8.778834706355089779e-01 9.339444999568264905e-01 2.640771174844134261e-01
+8.782575035190057777e-01 9.393179743031147000e-01 2.667327577149610218e-01
+8.785999460636340075e-01 9.447101339348284998e-01 2.693932729818908633e-01
+8.789235199162210854e-01 9.501163253664915986e-01 2.720626987422674059e-01
+8.792160143882136181e-01 9.555409855460589297e-01 2.747373107314689533e-01
+8.794851333774609259e-01 9.609813222108515296e-01 2.774195521504189688e-01
+8.797259382267708094e-01 9.664391027363387066e-01 2.801079938733134767e-01
+8.799388863582034981e-01 9.719141474258771174e-01 2.828028665891310078e-01
+8.801261631980005218e-01 9.774056784469543624e-01 2.855049064351531940e-01
+8.802811281654138176e-01 9.829160047653974219e-01 2.882122575277183407e-01
+8.804129372223431504e-01 9.884419266545670935e-01 2.909276978215925569e-01
+8.805080058500511786e-01 9.939881188401472611e-01 2.936474048368232226e-01]; 
+
+   case 'pha' 
+      RGB = [6.583083928922510708e-01 4.699391690315133929e-01 4.941288203988051381e-02
+6.643374189373471017e-01 4.662019008569991407e-01 5.766473450402211792e-02
+6.702086925052345157e-01 4.624801381219734719e-01 6.534560309537773559e-02
+6.760429905334627287e-01 4.586983759956768103e-01 7.273174322210870790e-02
+6.817522846284524984e-01 4.549140651836585669e-01 7.979261956680192003e-02
+6.874028047282801923e-01 4.510841669914616436e-01 8.667102950867147659e-02
+6.929504980948593129e-01 4.472389296506211198e-01 9.335868960148416273e-02
+6.984261912087648128e-01 4.433576785927097474e-01 9.992839268327721736e-02
+7.038122981036579739e-01 4.394532762349419586e-01 1.063871045640915336e-01
+7.091206923190102041e-01 4.355176525107516405e-01 1.127717449252612913e-01
+7.143452449012380745e-01 4.315557562030358230e-01 1.190934789448820086e-01
+7.194928861674689813e-01 4.275627171694253437e-01 1.253760590955056708e-01
+7.245561927479047259e-01 4.235446971269447580e-01 1.316232516304018385e-01
+7.295489482895208821e-01 4.194909849233816046e-01 1.378630483492892522e-01
+7.344517242247444733e-01 4.154177405103107734e-01 1.440803933719045082e-01
+7.392949550641365608e-01 4.112997327023164562e-01 1.503221736968965161e-01
+7.440383351241327547e-01 4.071715772870146410e-01 1.565433461845777419e-01
+7.487369523694534790e-01 4.029851907815384382e-01 1.628228161295872112e-01
+7.533231937521204236e-01 3.988010690198531272e-01 1.690756638056752914e-01
+7.578808294584169492e-01 3.945424511336589335e-01 1.754217924072464518e-01
+7.623326022156785564e-01 3.902809567197497165e-01 1.817591538530497208e-01
+7.667320478995347521e-01 3.859654943537603744e-01 1.881681875043557384e-01
+7.710524721820763983e-01 3.816214148216601210e-01 1.946153193576832252e-01
+7.752952778457107286e-01 3.772473246523442292e-01 2.011065208945331251e-01
+7.794866593781552000e-01 3.728150850100374614e-01 2.076872953652798559e-01
+7.835853362619955575e-01 3.683677247727679127e-01 2.142973641992331202e-01
+7.876376313731141554e-01 3.638539950288945946e-01 2.210164757476915653e-01
+7.916113385801130109e-01 3.593080404226161040e-01 2.277974012097270795e-01
+7.955060552511121763e-01 3.547298979176854994e-01 2.346435260251332755e-01
+7.993539838133075781e-01 3.500795929482780067e-01 2.416183193481767355e-01
+8.031167084780931331e-01 3.454015163918872089e-01 2.486589162182153978e-01
+8.068103261859892461e-01 3.406745225101673324e-01 2.558007514596662979e-01
+8.104452043001210138e-01 3.358824841311982556e-01 2.630722168071251699e-01
+8.139968010634672790e-01 3.310553831960054150e-01 2.704318260711638389e-01
+8.174768947816700715e-01 3.261752637674419919e-01 2.779109619017897659e-01
+8.208941481936247175e-01 3.212262889577221503e-01 2.855384604486080891e-01
+8.242271261613036692e-01 3.162361985850312696e-01 2.932761677775464482e-01
+8.274766137520660481e-01 3.112015433453460544e-01 3.011338788484150264e-01
+8.306639856730879679e-01 3.060845940504859919e-01 3.091757851828964565e-01
+8.337630658888238733e-01 3.009224359536462057e-01 3.173492086215453090e-01
+8.367728587568070697e-01 2.957134612590129330e-01 3.256619937531243236e-01
+8.396969301670653696e-01 2.904472328682123905e-01 3.341366497709652439e-01
+8.425387334318170662e-01 2.851115076990556330e-01 3.427996193346179443e-01
+8.452829693062083871e-01 2.797291658336165110e-01 3.516207809735176215e-01
+8.479270414576970394e-01 2.743004518168249417e-01 3.606068061808916925e-01
+8.504679257105771661e-01 2.688262350691851821e-01 3.697639476988339724e-01
+8.529105574510703613e-01 2.632885874038991547e-01 3.791311611530527870e-01
+8.552420044048544279e-01 2.577088839643039142e-01 3.886821696092926381e-01
+8.574567263211506640e-01 2.520936658861107627e-01 3.984160108673813205e-01
+8.595502320723124035e-01 2.464473708549377862e-01 4.083362533435646036e-01
+8.615176695665305306e-01 2.407756349505418836e-01 4.184455712413106543e-01
+8.633539245616504987e-01 2.350852138633325872e-01 4.287460573240959860e-01
+8.650568452189218993e-01 2.293728768111193417e-01 4.392600781097817930e-01
+8.666160631462880293e-01 2.236630759123471868e-01 4.499612660389528673e-01
+8.680257787196800079e-01 2.179678524813165597e-01 4.608475800597766070e-01
+8.692800281403405549e-01 2.123013227323138907e-01 4.719155444862356830e-01
+8.703727414475561641e-01 2.066798807505955682e-01 4.831601540690036445e-01
+8.712978068076887572e-01 2.011223984119477337e-01 4.945747939602412324e-01
+8.720491402648608004e-01 1.956504128743852822e-01 5.061511790861612514e-01
+8.726207597696474805e-01 1.902882889012951495e-01 5.178793172539123413e-01
+8.730068619526127893e-01 1.850633392111822872e-01 5.297474998646168887e-01
+8.732018998073337590e-01 1.800058813906028066e-01 5.417423233741458510e-01
+8.732006592202997686e-01 1.751492049740893675e-01 5.538487436526324803e-01
+8.729983321570818910e-01 1.705294177324829519e-01 5.660501641838993070e-01
+8.725905843033689990e-01 1.661851370964102237e-01 5.783285576821829421e-01
+8.719736126526835829e-01 1.621569796196943858e-01 5.906646606873059424e-01
+8.711441430703839028e-01 1.584866680756561452e-01 6.030388085538075371e-01
+8.700996606911847175e-01 1.552168662477456385e-01 6.154284378630663355e-01
+8.688382315166471859e-01 1.523889228568965915e-01 6.278117548576560569e-01
+8.673585803491290491e-01 1.500419870434277214e-01 6.401665059420836856e-01
+8.656600953609360216e-01 1.482114935188816873e-01 6.524702171100530412e-01
+8.637428203708292784e-01 1.469276207331668138e-01 6.647004334019646077e-01
+8.616074355850228406e-01 1.462138565700954185e-01 6.768349518289993316e-01
+8.592552279602999610e-01 1.460858181738819150e-01 6.888520417478360969e-01
+8.566880526588371847e-01 1.465504601378146143e-01 7.007306474947510022e-01
+8.539082940810565070e-01 1.476057634824317899e-01 7.124505416663439172e-01
+8.509188132430276497e-01 1.492409439214724132e-01 7.239924974090546916e-01
+8.477228732160004832e-01 1.514371672020923265e-01 7.353384896921373315e-01
+8.443240935674275471e-01 1.541686506679828816e-01 7.464717393223647690e-01
+8.407263939629991967e-01 1.574040314553000475e-01 7.573767829039294019e-01
+8.369339386719339968e-01 1.611078555520196187e-01 7.680395184197363889e-01
+8.329510832270686782e-01 1.652420527841307607e-01 7.784472273410004695e-01
+8.287823240288615390e-01 1.697672910052525075e-01 7.885885755886976600e-01
+8.244322514509230260e-01 1.746441391323516057e-01 7.984535959358352031e-01
+8.199055067926670493e-01 1.798340046929527702e-01 8.080336545530442116e-01
+8.152067432395495583e-01 1.852998414406232253e-01 8.173214043862717659e-01
+8.103405908369269994e-01 1.910066437572490727e-01 8.263107279415592421e-01
+8.053117579051806141e-01 1.969216010609510237e-01 8.349964504885767358e-01
+8.001246695316600599e-01 2.030146524204510805e-01 8.433748621071933682e-01
+7.947836730093801316e-01 2.092582614636481764e-01 8.514431956464665330e-01
+7.892930180385833161e-01 2.156273737159832282e-01 8.591995655348122485e-01
+7.836568069717744223e-01 2.220993550443281506e-01 8.666429444356050782e-01
+7.778789796122015376e-01 2.286538551089048465e-01 8.737730828797295457e-01
+7.719633002465959848e-01 2.352726496465096795e-01 8.805904299224873721e-01
+7.659133466040326521e-01 2.419394735315277267e-01 8.870960555269299386e-01
+7.597325004651533931e-01 2.486398530394249295e-01 8.932915751926430170e-01
+7.534239396834068181e-01 2.553609429642716422e-01 8.991790771963389384e-01
+7.469906314200031039e-01 2.620913721366889826e-01 9.047610526867282399e-01
+7.404353264352245834e-01 2.688210993418901351e-01 9.100403287788533246e-01
+7.337605543192734503e-01 2.755412805372748908e-01 9.150200047193097763e-01
+7.269686195850667554e-01 2.822441475132592692e-01 9.197033911407090923e-01
+7.200615985827201193e-01 2.889228976436723495e-01 9.240939523881464002e-01
+7.130413372306516617e-01 2.955715940634778272e-01 9.281952518796100504e-01
+7.059094495911268918e-01 3.021850754377659598e-01 9.320109004535763741e-01
+6.986673173487639721e-01 3.087588744057577217e-01 9.355445076582962205e-01
+6.913160902792203633e-01 3.152891437666022756e-01 9.387996359465969887e-01
+6.838566878221142842e-01 3.217725894980000279e-01 9.417797577558794098e-01
+6.762898018976056802e-01 3.282064097483991527e-01 9.444882154741288671e-01
+6.686159011300095711e-01 3.345882390078672719e-01 9.469281843183131597e-01
+6.608352366648267973e-01 3.409160967342457216e-01 9.491026381806494383e-01
+6.529478497874137144e-01 3.471883397852293385e-01 9.510143185305323099e-01
+6.449535815726188392e-01 3.534036180803885596e-01 9.526657064947888776e-01
+6.368520848146350666e-01 3.595608329884161236e-01 9.540589982761437104e-01
+6.286428385050449874e-01 3.656590980031973470e-01 9.551960841088614762e-01
+6.203251651440072623e-01 3.716977013375789007e-01 9.560785309910512231e-01
+6.118982511841425387e-01 3.776760701263490727e-01 9.567075694743777392e-01
+6.033611709179768079e-01 3.835937359904362243e-01 9.570840848332117234e-01
+5.947129141266446206e-01 3.894503017735960748e-01 9.572086129751365968e-01
+5.859524178083830304e-01 3.952454093215529429e-01 9.570813414919564499e-01
+5.770786022984990549e-01 4.009787082326203289e-01 9.567021162826109260e-01
+5.680904120756430364e-01 4.066498255689147689e-01 9.560704542043091392e-01
+5.589868615201727398e-01 4.122583365789312393e-01 9.551855622225308151e-01
+5.497670858464057675e-01 4.178037365457583641e-01 9.540463635305430623e-01
+5.404303973688802110e-01 4.232854139404694238e-01 9.526515310905910860e-01
+5.309763471805271084e-01 4.287026251268353794e-01 9.509995290068892215e-01
+5.214047922154096959e-01 4.340544709302417981e-01 9.490886620701871612e-01
+5.117159675380545947e-01 4.393398754490472347e-01 9.469171337096092822e-01
+5.019105635439048418e-01 4.445575675481795996e-01 9.444831124449268867e-01
+4.919898075708288299e-01 4.497060655293146358e-01 9.417848067474301477e-01
+4.819555492105473404e-01 4.547836655159373520e-01 9.388205479873396042e-01
+4.718103483745911819e-01 4.597884341201938230e-01 9.355888808698555881e-01
+4.615575649166388517e-01 4.647182059669867082e-01 9.320886604427106592e-01
+4.511980082251949020e-01 4.695721776839077433e-01 9.283178636903177683e-01
+4.407385246316099514e-01 4.743468819302843476e-01 9.242766906682317041e-01
+4.301872191964954406e-01 4.790386406828319177e-01 9.199661970019400448e-01
+4.195516590423077341e-01 4.836443962749994996e-01 9.153875906397229700e-01
+4.088406331006777528e-01 4.881609386110861704e-01 9.105429315654867128e-01
+3.980642083018061106e-01 4.925849423947825101e-01 9.054352272162426996e-01
+3.872337717548847147e-01 4.969130108713233906e-01 9.000685170373873278e-01
+3.763620564988861550e-01 5.011417254753421924e-01 8.944479427537497251e-01
+3.654612663762428770e-01 5.052684034325813922e-01 8.885787674719856089e-01
+3.545465439790672080e-01 5.092897968880314430e-01 8.824681923036010733e-01
+3.436377931849474154e-01 5.132015795889635079e-01 8.761266360928694485e-01
+3.327530939137686161e-01 5.170008198204416594e-01 8.695640864822369309e-01
+3.219116583925260011e-01 5.206848733578030020e-01 8.627916585616799416e-01
+3.111337198622898259e-01 5.242514414427805747e-01 8.558215206665023000e-01
+3.004403986093719392e-01 5.276986238157412856e-01 8.486667948769511804e-01
+2.898532566310526581e-01 5.310250549915590534e-01 8.413412305522999235e-01
+2.793961594244663282e-01 5.342293148180886631e-01 8.338605094653681604e-01
+2.690918119759744820e-01 5.373109871573702456e-01 8.262398418700288572e-01
+2.589630009926549015e-01 5.402702010433201307e-01 8.184947475296583397e-01
+2.490323931623479869e-01 5.431076290262466522e-01 8.106408952154365855e-01
+2.393222899575573326e-01 5.458244839403564308e-01 8.026939223701164972e-01
+2.298566351816503373e-01 5.484218890000336355e-01 7.946712158983202379e-01
+2.206551002944838191e-01 5.509024141956824216e-01 7.865870626923798792e-01
+2.117364094415158937e-01 5.532690129113547739e-01 7.784553296976853831e-01
+2.031184306485467883e-01 5.555248911915373622e-01 7.702897347110843063e-01
+1.948172015035146420e-01 5.576736467032974431e-01 7.621031776295352778e-01
+1.868465966290397962e-01 5.597192229650957973e-01 7.539076339343501187e-01
+1.792179884783634825e-01 5.616658613090964591e-01 7.457140662049784874e-01
+1.719421959020442647e-01 5.635174702399022850e-01 7.375349843171632447e-01
+1.650229512673002386e-01 5.652791533635259658e-01 7.293775439873284583e-01
+1.584611602813638387e-01 5.669560017699032395e-01 7.212481886261494779e-01
+1.522549918213680353e-01 5.685529672520610589e-01 7.131532051881548373e-01
+1.463987618681510117e-01 5.700750569206646245e-01 7.050976866560473288e-01
+1.408828405908224835e-01 5.715272914520931336e-01 6.970855353349069139e-01
+1.356936625367466953e-01 5.729146658465781305e-01 6.891194758268863740e-01
+1.308138525417579801e-01 5.742421127377883572e-01 6.812010763134157543e-01
+1.262224734293325157e-01 5.755144682058210837e-01 6.733307769330967307e-01
+1.218953938035638729e-01 5.767364399826563348e-01 6.655079242329828837e-01
+1.178065439715534068e-01 5.779123523036159282e-01 6.577323260140637284e-01
+1.139261298009009160e-01 5.790467957802227783e-01 6.499998366451625875e-01
+1.102234782385779766e-01 5.801439808367224726e-01 6.423063681141680803e-01
+1.066673235183970281e-01 5.812078215483343913e-01 6.346473314887408623e-01
+1.032263067644274834e-01 5.822419757773840132e-01 6.270172879951815270e-01
+9.986970116659238395e-02 5.832498248631478033e-01 6.194100074982554771e-01
+9.656813269866712512e-02 5.842344549012296051e-01 6.118185305845139643e-01
+9.329429206118067253e-02 5.851986396650793454e-01 6.042352341768219004e-01
+9.002364276931534848e-02 5.861448252640329981e-01 5.966519005456781821e-01
+8.673514013646366205e-02 5.870751166646858143e-01 5.890597894857422245e-01
+8.341198598223345528e-02 5.879912662222103181e-01 5.814497133016774955e-01
+8.004245400348602990e-02 5.888946643728962815e-01 5.738121141059205899e-01
+7.662083060590932360e-02 5.897863326271246542e-01 5.661371427838456372e-01
+7.314852485397654869e-02 5.906669189727291602e-01 5.584147388414824054e-01
+6.963540714651897390e-02 5.915366957529474279e-01 5.506347102299997687e-01
+6.610143501147561218e-02 5.923955600227664986e-01 5.427868121514007882e-01
+6.257860760091599195e-02 5.932430363153763375e-01 5.348608238014407323e-01
+5.911303759975024968e-02 5.940783314685343930e-01 5.268461376019544229e-01
+5.576765010285392871e-02 5.949002975004614724e-01 5.187321979872163702e-01
+5.262510565424809855e-02 5.957073200832398996e-01 5.105097808257538228e-01
+4.978880680939656161e-02 5.964975038111670624e-01 5.021693595319391967e-01
+4.738319269394732774e-02 5.972686215557058143e-01 4.937017361708459506e-01
+4.555066847662456869e-02 5.980181252952141424e-01 4.850980867717663014e-01
+4.444396189302631667e-02 5.987431566697054564e-01 4.763500004038906943e-01
+4.421322948900235222e-02 5.994405566877633040e-01 4.674495124401222834e-01
+4.498917867710291313e-02 6.001068740129568146e-01 4.583891327826852824e-01
+4.686604485069371245e-02 6.007383712762072170e-01 4.491618701849053319e-01
+4.988979024235475762e-02 6.013310288983726437e-01 4.397612541729841729e-01
+5.405573006313083712e-02 6.018805543938667846e-01 4.301812015738862294e-01
+5.932208540209162745e-02 6.023828876312081748e-01 4.204054325617814780e-01
+6.560773880422715587e-02 6.028325831369402144e-01 4.104377156032376628e-01
+7.281962363892094392e-02 6.032244155970721833e-01 4.002736262351211383e-01
+8.086176781346332554e-02 6.035528335053932381e-01 3.899094149354802585e-01
+8.964365767756551917e-02 6.038119404209635332e-01 3.793420777858104165e-01
+9.908952486975769469e-02 6.039955435016706176e-01 3.685641184021282157e-01
+1.091461686387718844e-01 6.040969460876761676e-01 3.575579876882719055e-01
+1.197411868235576382e-01 6.041085844094219448e-01 3.463409605502589250e-01
+1.308274635712054768e-01 6.040228036354146068e-01 3.349141605174003056e-01
+1.423800347596975990e-01 6.038311914501962585e-01 3.232669997463486489e-01
+1.543847008629261053e-01 6.035242532835117801e-01 3.113882295486853913e-01
+1.667909278439370091e-01 6.030930063069259717e-01 2.993102878563658198e-01
+1.795975741928860503e-01 6.025266800569213377e-01 2.870237044475537069e-01
+1.927996570161342460e-01 6.018136381688595771e-01 2.745296424849442141e-01
+2.063446461864067438e-01 6.009446614046377588e-01 2.618794002040416569e-01
+2.202728729725795254e-01 5.999042993738278318e-01 2.490425136645111337e-01
+2.344983329249494819e-01 5.986859114745567423e-01 2.361102156981361166e-01
+2.490441577314199684e-01 5.972745984023483112e-01 2.230778046167814499e-01
+2.638200588853058526e-01 5.956665601719514092e-01 2.100467332369221340e-01
+2.788103972435367339e-01 5.938520960352462463e-01 1.970548426870546432e-01
+2.939149436021079032e-01 5.918334783865150106e-01 1.842162055743405413e-01
+3.090633958032663053e-01 5.896130197890373514e-01 1.716194213262129398e-01
+3.241557701146778325e-01 5.872013194176191053e-01 1.593775348465770181e-01
+3.391058987925449908e-01 5.846116417760637285e-01 1.475901239657965436e-01
+3.537962403050050608e-01 5.818679304916246631e-01 1.363773405186440579e-01
+3.681790539934771678e-01 5.789861015095073560e-01 1.258005415905540103e-01
+3.821596573789931561e-01 5.759951191731197406e-01 1.159503977992311363e-01
+3.957282445230750900e-01 5.729092809436007183e-01 1.068503820674790161e-01
+4.088192648913888116e-01 5.697572697905517458e-01 9.855521202608327758e-02
+4.214810649035653500e-01 5.665415862717396722e-01 9.104002246571415990e-02
+4.336495334558000403e-01 5.632929561600926727e-01 8.434116239111955071e-02
+4.453890783516751273e-01 5.600085906382493706e-01 7.841305443909030171e-02
+4.567242130853677584e-01 5.566942951475172263e-01 7.322913012508130981e-02
+4.676501707681009479e-01 5.533637269053324204e-01 6.876762134759795142e-02
+4.781913781821610088e-01 5.500213008191600084e-01 6.498435721988443659e-02
+4.883968612384750885e-01 5.466619506976900800e-01 6.182162837413415074e-02
+4.982892398787829857e-01 5.432873953595327432e-01 5.922725775013665955e-02
+5.078911374422868663e-01 5.398982668933685058e-01 5.714465998451528223e-02
+5.172247456455653092e-01 5.364942872197172585e-01 5.551476288204022086e-02
+5.263115025893324583e-01 5.330744300746458331e-01 5.427792556635833293e-02
+5.351718645250624906e-01 5.296370658817842747e-01 5.337566853443905662e-02
+5.438251536372012973e-01 5.261800887043684982e-01 5.275207547378853862e-02
+5.522894663786476199e-01 5.227010255649303661e-01 5.235479075452074277e-02
+5.605816294780567866e-01 5.191971290183284848e-01 5.213559944466891055e-02
+5.687171933168381210e-01 5.156654540879882509e-01 5.205062439450063722e-02
+5.767104547724090091e-01 5.121029206313181259e-01 5.206020204364426168e-02
+5.845745037500035268e-01 5.085063619725217476e-01 5.212850674796504907e-02
+5.923212894447653643e-01 5.048725602928031408e-01 5.222298774900729218e-02
+5.999617038945115333e-01 5.011982688438658684e-01 5.231366903560310394e-02
+6.075056816322426112e-01 4.974802205790658793e-01 5.237234455720112675e-02
+6.149623152735116394e-01 4.937151222923196747e-01 5.237168182411356537e-02
+6.223399877334323538e-01 4.898996328220020513e-01 5.228422613133864444e-02
+6.296465225194588511e-01 4.860303233135512824e-01 5.208127381405584094e-02
+6.368893542334475022e-01 4.821036169426133333e-01 5.173155232549151578e-02
+6.440757220432393737e-01 4.781157049081125598e-01 5.119960076823739520e-02
+6.512128893528150719e-01 4.740624350126631525e-01 5.044367478760234530e-02
+6.583083928921535932e-01 4.699391690315524728e-01 4.941288204103298082e-02];
+
+   case 'hal' 
+      RGB = [1.629529545569048110e-01 9.521591660747855124e-02 4.225729247643043585e-01
+1.648101130638113809e-01 9.635115909727909322e-02 4.318459659833655540e-01
+1.666161667445505146e-01 9.744967053737302320e-02 4.412064832719169161e-01
+1.683662394047173716e-01 9.851521320092249123e-02 4.506510991070378780e-01
+1.700547063176806595e-01 9.955275459284393391e-02 4.601751103492678907e-01
+1.716750780810941956e-01 1.005687314559364776e-01 4.697722208210775574e-01
+1.732198670017069397e-01 1.015713570251385311e-01 4.794342308257477092e-01
+1.746804342417165035e-01 1.025709733421875103e-01 4.891506793097686878e-01
+1.760433654254164593e-01 1.035658402770499587e-01 4.989416012077843576e-01
+1.772982333235153807e-01 1.045802467658180357e-01 5.087715885336102639e-01
+1.784322966250933284e-01 1.056380265564063059e-01 5.186108302832771466e-01
+1.794226692010022772e-01 1.067416562108134404e-01 5.284836071020164727e-01
+1.802542327126359922e-01 1.079356346679062328e-01 5.383245681077661882e-01
+1.808975365813079994e-01 1.092386640641496154e-01 5.481352134375515606e-01
+1.813298273265454008e-01 1.107042924622455293e-01 5.578435355461390799e-01
+1.815069308605478937e-01 1.123613365530294061e-01 5.674471854200233700e-01
+1.813959559086370799e-01 1.142804413027345978e-01 5.768505865319291104e-01
+1.809499433760710929e-01 1.165251530113385336e-01 5.859821014031293407e-01
+1.801166524094891808e-01 1.191682999758127970e-01 5.947494236872948870e-01
+1.788419557731087683e-01 1.222886104999623413e-01 6.030366129604394221e-01
+1.770751344832933727e-01 1.259620672997293078e-01 6.107077426144936760e-01
+1.747764954226868062e-01 1.302486445940692350e-01 6.176174300439590814e-01
+1.719255883800615836e-01 1.351768519397535118e-01 6.236290832033221099e-01
+1.685302279919113078e-01 1.407308818346016399e-01 6.286357211183263294e-01
+1.646373543798159977e-01 1.468433194330099889e-01 6.325796572366660930e-01
+1.603141656593721487e-01 1.534074847391770635e-01 6.354701889106297852e-01
+1.556539455727427579e-01 1.602911795924207572e-01 6.373742153046678682e-01
+1.507373567977903506e-01 1.673688895313445446e-01 6.383989700654711941e-01
+1.456427577979826360e-01 1.745293312408868480e-01 6.386687569056349600e-01
+1.404368075255880977e-01 1.816841459042554952e-01 6.383089542091028301e-01
+1.351726504089350855e-01 1.887688275072176014e-01 6.374350053971095109e-01
+1.298906561807787186e-01 1.957398580438490798e-01 6.361469852044080442e-01
+1.246205125693149729e-01 2.025703385486158914e-01 6.345282558695404251e-01
+1.193859004780570554e-01 2.092446623034395214e-01 6.326478270215730726e-01
+1.142294912197052703e-01 2.157456284251405010e-01 6.305768690676523125e-01
+1.091404911375367659e-01 2.220831206181900774e-01 6.283455167242665285e-01
+1.041438584244326337e-01 2.282546518282705383e-01 6.259979600528258192e-01
+9.926304855671816418e-02 2.342609767388125763e-01 6.235717761795677161e-01
+9.449512580805050077e-02 2.401139958170242505e-01 6.210816676451920149e-01
+8.986951574154733446e-02 2.458147193889331228e-01 6.185591936304666305e-01
+8.539285840535987271e-02 2.513729453557033144e-01 6.160166295227810229e-01
+8.106756674391193962e-02 2.567997050291829786e-01 6.134596708213713168e-01
+7.694418932732069449e-02 2.620915612909199277e-01 6.109238301118911085e-01
+7.300703739422578775e-02 2.672655035330154250e-01 6.083965011432549419e-01
+6.927650669442811382e-02 2.723273008096985248e-01 6.058873223830183452e-01
+6.578801445169751849e-02 2.772789491245566951e-01 6.034141752438300088e-01
+6.255595479554787453e-02 2.821282390686886132e-01 6.009787922718963227e-01
+5.959205181913470456e-02 2.868831717247524726e-01 5.985797542127682114e-01
+5.691772151374491912e-02 2.915488716281217640e-01 5.962214962176209943e-01
+5.455347307306369214e-02 2.961302536799313989e-01 5.939076044300871660e-01
+5.251889627870443694e-02 3.006318409387543356e-01 5.916414807294642086e-01
+5.083877347247430650e-02 3.050562292020492783e-01 5.894315315373579445e-01
+4.951454037014189208e-02 3.094102218220906031e-01 5.872714908845412252e-01
+4.855490408104565919e-02 3.136977658751046727e-01 5.851627302038014955e-01
+4.796369156225028380e-02 3.179225992994973993e-01 5.831062484926557987e-01
+4.773946305380068894e-02 3.220882581897950847e-01 5.811027291021745311e-01
+4.787545181415154422e-02 3.261980852298422273e-01 5.791525884087008746e-01
+4.835984720504159923e-02 3.302552388254387794e-01 5.772560174768572860e-01
+4.917638757411300215e-02 3.342627026038174076e-01 5.754130176762238813e-01
+5.030518671680884318e-02 3.382232950310170572e-01 5.736234310853615126e-01
+5.172369283691292258e-02 3.421396789632700219e-01 5.718869664041401624e-01
+5.340767549062541003e-02 3.460143709989857430e-01 5.702032209969470911e-01
+5.533215100674954839e-02 3.498497505368459159e-01 5.685716996038682192e-01
+5.747218306369886870e-02 3.536480684754851334e-01 5.669918301827847618e-01
+5.980352430527090951e-02 3.574114555130643578e-01 5.654629772812437283e-01
+6.230309069250609261e-02 3.611419300223894235e-01 5.639844532816007394e-01
+6.494927925026378057e-02 3.648414054902228698e-01 5.625555278152573058e-01
+6.772215122553368327e-02 3.685116975190721456e-01 5.611754356007422340e-01
+7.060350747784929770e-02 3.721545303967777607e-01 5.598433829250933913e-01
+7.357840396611611822e-02 3.757710087912914942e-01 5.585612898846836760e-01
+7.663101364217325684e-02 3.793629991309988569e-01 5.573268773673928367e-01
+7.974739830752586300e-02 3.829322364932883360e-01 5.561380319387883020e-01
+8.291580548873803136e-02 3.864801413799028307e-01 5.549938581786431069e-01
+8.612580955679122185e-02 3.900080689665953448e-01 5.538934528024703763e-01
+8.936817980172057085e-02 3.935173134989205512e-01 5.528359060062189023e-01
+9.263475301781654014e-02 3.970091123550867351e-01 5.518203023495191761e-01
+9.591831391237073956e-02 4.004846497947374129e-01 5.508457212473490960e-01
+9.921323508992196949e-02 4.039446967979293257e-01 5.499133654313189679e-01
+1.025139614653171327e-01 4.073902646845309894e-01 5.490228475752887416e-01
+1.058144853522852702e-01 4.108228877965505177e-01 5.481703859285301794e-01
+1.091104131658914012e-01 4.142435690118807523e-01 5.473550236322454188e-01
+1.123978495089298091e-01 4.176532725696484594e-01 5.465757987301745890e-01
+1.156733362160069500e-01 4.210529263321469151e-01 5.458317432175192607e-01
+1.189341701380315364e-01 4.244432161011251203e-01 5.451231873866256850e-01
+1.221781892974011241e-01 4.278246691926565481e-01 5.444513010684173260e-01
+1.254018943745988379e-01 4.311987106338182607e-01 5.438113725374379426e-01
+1.286031296249826039e-01 4.345661396549306832e-01 5.432023919026625070e-01
+1.317799711665625373e-01 4.379277275711909168e-01 5.426233385794481112e-01
+1.349307019221451520e-01 4.412842189714309415e-01 5.420731800699918335e-01
+1.380549051543558114e-01 4.446356900078314855e-01 5.415550926551251365e-01
+1.411501069188544899e-01 4.479834819017672332e-01 5.410638066180113448e-01
+1.442150210041465985e-01 4.513283116704150388e-01 5.405979268760919831e-01
+1.472485820103837661e-01 4.546708245755168298e-01 5.401563599016087069e-01
+1.502499341655997578e-01 4.580115969309521140e-01 5.397383042732707414e-01
+1.532192022679761678e-01 4.613507130792227628e-01 5.393460827274304537e-01
+1.561545863558880531e-01 4.646893652629560667e-01 5.389744586257710912e-01
+1.590554825896313418e-01 4.680281092699005163e-01 5.386222668134232894e-01
+1.619213854747377779e-01 4.713674796485894380e-01 5.382883230992108192e-01
+1.647524478987731911e-01 4.747077026242289555e-01 5.379733478625169374e-01
+1.675482630437002962e-01 4.780493319379570116e-01 5.376757027790604049e-01
+1.703080688452488778e-01 4.813931150452205876e-01 5.373922894579649112e-01
+1.730317245949949956e-01 4.847395013664480001e-01 5.371218460871988176e-01
+1.757193664968157432e-01 4.880888303994977417e-01 5.368636833242294015e-01
+1.783716503259393793e-01 4.914412289641479359e-01 5.366183612997760255e-01
+1.809878167761821144e-01 4.947975030047193079e-01 5.363817525707026412e-01
+1.835680719416625251e-01 4.981580161432020426e-01 5.361525222751042374e-01
+1.861127112291278973e-01 5.015231101060642072e-01 5.359293193132266264e-01
+1.886230405888700001e-01 5.048927132825591357e-01 5.357133548543864254e-01
+1.910985251486422565e-01 5.082675669534003626e-01 5.355003101591436776e-01
+1.935397227717326196e-01 5.116479477164066481e-01 5.352887824024628038e-01
+1.959472883340568350e-01 5.150341080561433582e-01 5.350773667248226451e-01
+1.983227076664061950e-01 5.184259856373716335e-01 5.348665525352744865e-01
+2.006660342507454731e-01 5.218241099237964642e-01 5.346528031121534630e-01
+2.029781360478647434e-01 5.252286912572143862e-01 5.344345169358406533e-01
+2.052600444742044838e-01 5.286398903414566419e-01 5.342102605335536936e-01
+2.075134652380221101e-01 5.320576287402744020e-01 5.339799959048032729e-01
+2.097389494614402272e-01 5.354822793223580346e-01 5.337406085215398166e-01
+2.119377691272176234e-01 5.389139515314046447e-01 5.334905459074957834e-01
+2.141113437844118228e-01 5.423527133674995726e-01 5.332283775266504211e-01
+2.162615771757636085e-01 5.457984712571943842e-01 5.329535750363618707e-01
+2.183895286205785324e-01 5.492514494924778390e-01 5.326634150194080597e-01
+2.204969036245257863e-01 5.527116487772890663e-01 5.323564832742772035e-01
+2.225855272635121618e-01 5.561790393438251767e-01 5.320314302436226495e-01
+2.246573660062902156e-01 5.596535532346759156e-01 5.316870266023980829e-01
+2.267141352300188206e-01 5.631352211554988552e-01 5.313212748929951879e-01
+2.287579175696445311e-01 5.666239548700177098e-01 5.309328290550865415e-01
+2.307908679682200148e-01 5.701196510565367248e-01 5.305203252817071169e-01
+2.328150701112509102e-01 5.736222405040750649e-01 5.300820599240353426e-01
+2.348328561421904603e-01 5.771315766359990107e-01 5.296167282704775658e-01
+2.368466495707550745e-01 5.806474896434283828e-01 5.291230766564496424e-01
+2.388588283644081933e-01 5.841698333340915594e-01 5.285995915811123602e-01
+2.408716822240541400e-01 5.876984999166237067e-01 5.280443921862176815e-01
+2.428880608722543410e-01 5.912331932277818947e-01 5.274567814051942527e-01
+2.449106759672304290e-01 5.947736703172152861e-01 5.268356212312692577e-01
+2.469420290965465559e-01 5.983197676291379663e-01 5.261791312000029253e-01
+2.489846702882144713e-01 6.018713111492172141e-01 5.254854952988164962e-01
+2.510418446331669773e-01 6.054278820406324702e-01 5.247545535679302153e-01
+2.531164830585315162e-01 6.089891735215487989e-01 5.239852980594518206e-01
+2.552111567013787274e-01 6.125550130731924892e-01 5.231756545447472373e-01
+2.573286340449815746e-01 6.161251617120727664e-01 5.223239185167128928e-01
+2.594724447386158594e-01 6.196990932330638246e-01 5.214304767886038805e-01
+2.616456589963800927e-01 6.232764459181282524e-01 5.204944566826074093e-01
+2.638509342960791981e-01 6.268570181766053295e-01 5.195136536074571598e-01
+2.660910828965943331e-01 6.304405546707460006e-01 5.184861377534477622e-01
+2.683698467163787016e-01 6.340264147511259774e-01 5.174130230514244477e-01
+2.706903509949471487e-01 6.376141889650659422e-01 5.162935692788781505e-01
+2.730554221838172868e-01 6.412035896296301996e-01 5.151259285643695618e-01
+2.754676310512871873e-01 6.447944545228798674e-01 5.139069764892589820e-01
+2.779309010023177096e-01 6.483859905965968506e-01 5.126390269795514376e-01
+2.804483318408275694e-01 6.519777450281342146e-01 5.113214639163841113e-01
+2.830229969716622218e-01 6.555692556652558123e-01 5.099537040511894492e-01
+2.856569925022096612e-01 6.591606030439277619e-01 5.085297306531970651e-01
+2.883543502639873135e-01 6.627507929293073863e-01 5.070537569679475220e-01
+2.911180907975667309e-01 6.663393219020087299e-01 5.055253556302098383e-01
+2.939511790083492726e-01 6.699256847308838747e-01 5.039440536705714901e-01
+2.968562131418951422e-01 6.735096490751359966e-01 5.023062065413991251e-01
+2.998362114418811064e-01 6.770906951012128916e-01 5.006109626120457401e-01
+3.028943961763405635e-01 6.806680059292820051e-01 4.988609220555944579e-01
+3.060335830069556007e-01 6.842410278074210206e-01 4.970557164988521071e-01
+3.092565373453909361e-01 6.878091952372648032e-01 4.951950035800954386e-01
+3.125659486948474952e-01 6.913723055472413836e-01 4.932732004330610542e-01
+3.159647522698377231e-01 6.949295261702347348e-01 4.912927476409480465e-01
+3.194556489243873809e-01 6.984800979280558764e-01 4.892553378582480961e-01
+3.230412442793148542e-01 7.020233920397538352e-01 4.871607422199746851e-01
+3.267240985578743762e-01 7.055587631720373620e-01 4.850087606010107799e-01
+3.305070751488592418e-01 7.090857414439620809e-01 4.827955626459811689e-01
+3.343929739199408280e-01 7.126036449951604901e-01 4.805201317683439055e-01
+3.383839618515475101e-01 7.161115318028217214e-01 4.781864627637871235e-01
+3.424824761777380822e-01 7.196086676710338192e-01 4.757945201032026117e-01
+3.466909265050957534e-01 7.230942938245445983e-01 4.733443136156250675e-01
+3.510117003671430203e-01 7.265676248366644829e-01 4.708359034900377327e-01
+3.554477481971078934e-01 7.300279237012574640e-01 4.682667163182038794e-01
+3.600022066505755847e-01 7.334743741555846963e-01 4.656343331651458528e-01
+3.646764457841936702e-01 7.369059239634064840e-01 4.629441295765394648e-01
+3.694728210602395979e-01 7.403216514270205550e-01 4.601965063235068931e-01
+3.743936915522128039e-01 7.437205957454258165e-01 4.573919681273960758e-01
+3.794414259131371203e-01 7.471017539541063845e-01 4.545311394783269621e-01
+3.846184079557829483e-01 7.504640777072076885e-01 4.516147832933739559e-01
+3.899270416022538321e-01 7.538064699246833644e-01 4.486438228496626990e-01
+3.953697549145612777e-01 7.571277813375660859e-01 4.456193674826627871e-01
+4.009508646485598904e-01 7.604267477869489644e-01 4.425380639654961090e-01
+4.066714019599443342e-01 7.637021069222051928e-01 4.394056497009877216e-01
+4.125334807152798988e-01 7.669525443587899005e-01 4.362249727525224774e-01
+4.185395667527040398e-01 7.701766751192415938e-01 4.329983295596441795e-01
+4.246921350385852723e-01 7.733730477083216037e-01 4.297284080553480656e-01
+4.309936593663836191e-01 7.765401418648604226e-01 4.264183470604332449e-01
+4.374465975304094312e-01 7.796763669997491819e-01 4.230718037095967943e-01
+4.440533711015541840e-01 7.827800615723168320e-01 4.196930295353452078e-01
+4.508163388346139722e-01 7.858494937119429036e-01 4.162869557148224930e-01
+4.577377626480225170e-01 7.888828634531382944e-01 4.128592877810690620e-01
+4.648197650471433406e-01 7.918783070193569085e-01 4.094166097874233912e-01
+4.720642768256655963e-01 7.948339036614172626e-01 4.059664974607166132e-01
+4.794729738954752185e-01 7.977476856267914362e-01 4.025176392507668344e-01
+4.870472021865835388e-01 8.006176519006481529e-01 3.990799633442549399e-01
+4.947878897554374711e-01 8.034417864099652196e-01 3.956647676266520364e-01
+5.026954455748450235e-01 8.062180814071850943e-01 3.922848482216537147e-01
+5.107722312752203120e-01 8.089441566688712060e-01 3.889513459863399025e-01
+5.190175807229889804e-01 8.116180108735555621e-01 3.856804341377490508e-01
+5.274270476594079549e-01 8.142382455983395717e-01 3.824934902796895964e-01
+5.359974387485314518e-01 8.168032862890818313e-01 3.794106529717772847e-01
+5.447242959015131669e-01 8.193118012377970105e-01 3.764539238160731771e-01
+5.536017493685388979e-01 8.217627673204914718e-01 3.736470734604069865e-01
+5.626223858732353200e-01 8.241555398979113489e-01 3.710154595070918049e-01
+5.717801732913297963e-01 8.264893011624766528e-01 3.685830453573430421e-01
+5.810619798273547465e-01 8.287648131945639651e-01 3.663798607459672341e-01
+5.904522695833789303e-01 8.309836316507100973e-01 3.644363382969363352e-01
+5.999363056699199559e-01 8.331474672067843423e-01 3.627802030453921023e-01
+6.094978370184862548e-01 8.352587020450518152e-01 3.614380620192426119e-01
+6.191178753985615568e-01 8.373207419267220120e-01 3.604354982890065617e-01
+6.287753075069072439e-01 8.393379672623436649e-01 3.597956834322972863e-01
+6.384515865712356852e-01 8.413146218129586851e-01 3.595361765343614291e-01
+6.481275660781142811e-01 8.432555569199260415e-01 3.596707668706327632e-01
+6.577845458065525452e-01 8.451659780810962808e-01 3.602086612732601778e-01
+6.674047070379289792e-01 8.470513147981415525e-01 3.611542742755425861e-01
+6.769617561788032756e-01 8.489198363378159806e-01 3.625096347273936148e-01
+6.864487597795673191e-01 8.507748949282539774e-01 3.642665641101618390e-01
+6.958544314564799604e-01 8.526212799355240568e-01 3.664154684319869681e-01
+7.051685608468114541e-01 8.544637256207057163e-01 3.689436786046771388e-01
+7.143830272263600456e-01 8.563065614925247093e-01 3.718358172740615641e-01
+7.234917624309317175e-01 8.581536540348341235e-01 3.750744951817871486e-01
+7.324906484647774052e-01 8.600083717860309562e-01 3.786409937540124448e-01
+7.413773645706981386e-01 8.618735721244006331e-01 3.825158976261986421e-01
+7.501511992657796668e-01 8.637516069265696039e-01 3.866796514151401021e-01
+7.588128421172509741e-01 8.656443435632366068e-01 3.911130257986148440e-01
+7.673641682613402404e-01 8.675531974405399360e-01 3.957974875667232828e-01
+7.758080262912036007e-01 8.694791724028596569e-01 4.007154759905482422e-01
+7.841480375461038488e-01 8.714229056785223193e-01 4.058505933213660266e-01
+7.923777293356836227e-01 8.733886508286130557e-01 4.111824877427081026e-01
+8.004976303968860396e-01 8.753781889640523950e-01 4.166935560611597644e-01
+8.085242857272323391e-01 8.773871783186646400e-01 4.223760515178233144e-01
+8.164630734789560806e-01 8.794151844938148388e-01 4.282186311869483064e-01
+8.243194501554683695e-01 8.814616081475756815e-01 4.342112747863317024e-01
+8.320860387263339097e-01 8.835308362945183402e-01 4.403358497380424619e-01
+8.397544323444476877e-01 8.856278479633188372e-01 4.465723185371322512e-01
+8.473543986252204396e-01 8.877421380157632935e-01 4.529306634208433713e-01
+8.548913210362114601e-01 8.898726582646793171e-01 4.594053245849991085e-01
+8.623409541601502193e-01 8.920307544658760968e-01 4.659650403812060637e-01
+8.697191661117472661e-01 8.942111604773197442e-01 4.726125804953009157e-01
+8.770479480763140323e-01 8.964055876253053112e-01 4.793596015320920611e-01
+8.843061388708378656e-01 8.986242192828276520e-01 4.861771826919926709e-01
+8.914967901846199139e-01 9.008669432468144889e-01 4.930589607663434237e-01
+8.986506618699680038e-01 9.031210853874221955e-01 5.000298200873778409e-01
+9.057328617844134788e-01 9.054032588350297006e-01 5.070444917818385244e-01
+9.127681739145864226e-01 9.077032841253237505e-01 5.141229319104883011e-01
+9.197719823668246697e-01 9.100148294768658497e-01 5.212774789419143406e-01
+9.266999503758117651e-01 9.123594905222979223e-01 5.284479861571415027e-01
+9.336093927737403320e-01 9.147111822755604749e-01 5.356989519972219504e-01
+9.404610328906413130e-01 9.170893351552455997e-01 5.429753047678268496e-01
+9.472803518326599059e-01 9.194825361628593541e-01 5.503044468166357062e-01
+9.540659681238262690e-01 9.218921210725944393e-01 5.576799909240343078e-01
+9.608049809199471492e-01 9.243252266483533708e-01 5.650790057480892248e-01
+9.675287370768704820e-01 9.267668902399696096e-01 5.725413863443260531e-01
+9.741967269037244970e-01 9.292382142036349491e-01 5.800041593344547053e-01
+9.808627042040826138e-01 9.317124815536732552e-01 5.875425838151492330e-01
+9.874684104099172854e-01 9.342202886448683907e-01 5.950648878797101249e-01
+9.940805805099582892e-01 9.367275819156850591e-01 6.026699962989522374e-01]; 
+
+   case 'spe' 
+      RGB = [9.996253193176977137e-01 9.913711226010460953e-01 8.041012438578545307e-01
+9.969312990878144154e-01 9.865865913107011442e-01 7.958196545688069889e-01
+9.942533588637104680e-01 9.818135789307643746e-01 7.875317815897165952e-01
+9.915896776086415842e-01 9.770525904709529419e-01 7.792374356109948996e-01
+9.889384786221749879e-01 9.723041153469224041e-01 7.709364896057565586e-01
+9.862980251266783016e-01 9.675686302753326862e-01 7.626288656679628408e-01
+9.836666169060123144e-01 9.628466015967408476e-01 7.543145233681930462e-01
+9.810425876106124710e-01 9.581384871880828102e-01 7.459934495167190871e-01
+9.784237290846492519e-01 9.534448589527805273e-01 7.376670490866494845e-01
+9.758091741853186507e-01 9.487660072025493330e-01 7.293335612360094533e-01
+9.731976797213667263e-01 9.441023023821585314e-01 7.209921595340745837e-01
+9.705876565172376624e-01 9.394541905537218129e-01 7.126429103405369503e-01
+9.679775344953384097e-01 9.348221172710475813e-01 7.042858810456844587e-01
+9.653657609756586266e-01 9.302065285603877687e-01 6.959211353452218196e-01
+9.627508763245108403e-01 9.256078555762781157e-01 6.875485248304887831e-01
+9.601317913231469658e-01 9.210264571207541495e-01 6.791669211618720503e-01
+9.575068348330096901e-01 9.164628209777989643e-01 6.707767168399573210e-01
+9.548744491996995487e-01 9.119174176425877132e-01 6.623780173986024700e-01
+9.522330808045905703e-01 9.073907239128325974e-01 6.539709177027834830e-01
+9.495811770290348841e-01 9.028832240271246201e-01 6.455555018977681137e-01
+9.469171829214290126e-01 8.983954108674836458e-01 6.371318441574638225e-01
+9.442402190659517913e-01 8.939276490907958062e-01 6.286979645113369708e-01
+9.415486437855169477e-01 8.894804711503382366e-01 6.202539985663386712e-01
+9.388403761261178149e-01 8.850545069722992597e-01 6.118014161078325630e-01
+9.361137658947894513e-01 8.806503085987659185e-01 6.033403762527677072e-01
+9.333671427931780062e-01 8.762684428171652051e-01 5.948710444843188228e-01
+9.305988122871574619e-01 8.719094924143574454e-01 5.863935979844183688e-01
+9.278070514355759579e-01 8.675740573997056115e-01 5.779082318269497254e-01
+9.249901047433721768e-01 8.632627561697012730e-01 5.694151660419812799e-01
+9.221469800733509414e-01 8.589760860685742294e-01 5.609116482547054083e-01
+9.192753048560652340e-01 8.547148108589553983e-01 5.523997440377725887e-01
+9.163728560349155838e-01 8.504796735679325259e-01 5.438810466983201586e-01
+9.134376867190158178e-01 8.462713800742609482e-01 5.353560484875481418e-01
+9.104678046010745707e-01 8.420906570028113824e-01 5.268253096213930675e-01
+9.074611700430375016e-01 8.379382516634488187e-01 5.182894693241438810e-01
+9.044156948810763152e-01 8.338149316350844664e-01 5.097492574011085464e-01
+9.013292420875533839e-01 8.297214839374013051e-01 5.012055062134753713e-01
+8.981996264328737656e-01 8.256587137313211588e-01 4.926591628979440363e-01
+8.950246162923013449e-01 8.216274424893472705e-01 4.841113016411668357e-01
+8.918019367410795484e-01 8.176285055788921063e-01 4.755631357855747976e-01
+8.885292740744069606e-01 8.136627492060259925e-01 4.670160295098501613e-01
+8.852042818763621312e-01 8.097310266740884721e-01 4.584715087957387802e-01
+8.818245887426444662e-01 8.058341939216442373e-01 4.499312713647861117e-01
+8.783878077356160885e-01 8.019731043176190344e-01 4.413971952459587733e-01
+8.748915476159051519e-01 7.981486027081815537e-01 4.328713456201330745e-01
+8.713334258529761289e-01 7.943615187300834268e-01 4.243559795823733105e-01
+8.677110833677242896e-01 7.906126594284177411e-01 4.158535484698712703e-01
+8.640222009043423412e-01 7.869028012426558805e-01 4.073666974243692063e-01
+8.602645168678531018e-01 7.832326814525909509e-01 3.988982618942717440e-01
+8.564358463998196225e-01 7.796029892044549214e-01 3.904512608343593816e-01
+8.525341014005127782e-01 7.760143562656642846e-01 3.820288864300384613e-01
+8.485573111443696082e-01 7.724673476829161389e-01 3.736344902575098326e-01
+8.445036430802366212e-01 7.689624525410815314e-01 3.652715658890242079e-01
+8.403714233625397823e-01 7.655000750378188057e-01 3.569437280604416673e-01
+8.361591566273345322e-01 7.620805260995172636e-01 3.486546886323707573e-01
+8.318655445115968883e-01 7.587040157667198637e-01 3.404082296912668837e-01
+8.274895024172935765e-01 7.553706465705579687e-01 3.322081742472747790e-01
+8.230301740454328829e-01 7.520804081054507373e-01 3.240583550855133943e-01
+8.184868212302832680e-01 7.488332616294635091e-01 3.159617825674137515e-01
+8.138590110822148116e-01 7.456289896604103573e-01 3.079221377655331771e-01
+8.091468181242912339e-01 7.424670871619818424e-01 2.999443469091602199e-01
+8.043504122379883103e-01 7.393470563716729727e-01 2.920319686576324791e-01
+7.994702184716161453e-01 7.362682828578653860e-01 2.841884012704181672e-01
+7.945069109411802000e-01 7.332300399833050486e-01 2.764168555307422448e-01
+7.894614033518293494e-01 7.302314948629916591e-01 2.687203309843908539e-01
+7.843348364120679150e-01 7.272717156577747089e-01 2.611015959667907227e-01
+7.791285260147496894e-01 7.243496994364320152e-01 2.535630684860531447e-01
+7.738440801480908071e-01 7.214643092911102729e-01 2.461071963221510561e-01
+7.684833208817296590e-01 7.186143199358207001e-01 2.387362039122769009e-01
+7.630481315977482026e-01 7.157984953860191402e-01 2.314517734491695622e-01
+7.575405230514773436e-01 7.130155515836559266e-01 2.242553190375982108e-01
+7.519626112766101267e-01 7.102641669372077304e-01 2.171479941172158035e-01
+7.463165956980535309e-01 7.075429925763011552e-01 2.101307026608347228e-01
+7.406047378440419049e-01 7.048506621488696000e-01 2.032041138079452858e-01
+7.348297350913484127e-01 7.021856197788983733e-01 1.963692968886621149e-01
+7.289936844492124202e-01 6.995466025992004289e-01 1.896260481458106884e-01
+7.230988483362374986e-01 6.969322773880018973e-01 1.829743149302962002e-01
+7.171475322086006132e-01 6.943412998823550453e-01 1.764139943240976283e-01
+7.111420143928013360e-01 6.917723467781027313e-01 1.699448658068684892e-01
+7.050845338608371371e-01 6.892241206236302542e-01 1.635666199792324693e-01
+6.989772797030316953e-01 6.866953538838792559e-01 1.572788888364401172e-01
+6.928223822517928232e-01 6.841848122132092591e-01 1.510812776309110872e-01
+6.866220524799201419e-01 6.816912363109779438e-01 1.449735254345622115e-01
+6.803786701652846380e-01 6.792133090629258740e-01 1.389555620195359609e-01
+6.740936196655853418e-01 6.767501306945983286e-01 1.330266252977832520e-01
+6.677687244983904202e-01 6.743006234739316040e-01 1.271865644636745452e-01
+6.614057275351008514e-01 6.718637487365417549e-01 1.214353970802317662e-01
+6.550062900453353931e-01 6.694385066322930955e-01 1.157733573283348805e-01
+6.485719915801509972e-01 6.670239355272904458e-01 1.102009495253571669e-01
+6.421043305819508218e-01 6.646191111168818777e-01 1.047190080781650323e-01
+6.356047256163376291e-01 6.622231453008022850e-01 9.932876523540395963e-02
+6.290745171295046845e-01 6.598351848668921882e-01 9.403192821288078318e-02
+6.225149696438274649e-01 6.574544100249212208e-01 8.883076747185855715e-02
+6.159272743135092432e-01 6.550800328272597950e-01 8.372821811088401733e-02
+6.093126663293514378e-01 6.527112545185101977e-01 7.872799706657532259e-02
+6.026723170612737768e-01 6.503473055396404856e-01 7.383469856963406630e-02
+5.960069280976730832e-01 6.479875866853281874e-01 6.905400752442764079e-02
+5.893174254692321590e-01 6.456314203776034599e-01 6.439287527349069062e-02
+5.826046784844106652e-01 6.432781520370909334e-01 5.985968924725062340e-02
+5.758695032242261425e-01 6.409271483905801814e-01 5.546448455059219823e-02
+5.691126660872921628e-01 6.385777958070207871e-01 5.121916775709036557e-02
+5.623348873683923221e-01 6.362294986703330713e-01 4.713774156788400754e-02
+5.555368448583254404e-01 6.338816777957024806e-01 4.323651096469569716e-02
+5.487191774565705060e-01 6.315337688945173999e-01 3.952487864258176498e-02
+5.418824887917018662e-01 6.291852210919098853e-01 3.612051121019213551e-02
+5.350273508472259687e-01 6.268354954999130202e-01 3.311399967360150604e-02
+5.281543075929241438e-01 6.244840638484698836e-01 3.049096132752013993e-02
+5.212638786236020172e-01 6.221304071760309640e-01 2.823775650583685778e-02
+5.143565628087404251e-01 6.197740145810481938e-01 2.634144880489198981e-02
+5.074328419576341620e-01 6.174143820354919265e-01 2.478976657062584646e-02
+5.004931845054064743e-01 6.150510112614009373e-01 2.357106560875196072e-02
+4.935380492257968599e-01 6.126834086714986194e-01 2.267429306479169446e-02
+4.865677337149327264e-01 6.103111278318402722e-01 2.208918519158591109e-02
+4.795827833081557912e-01 6.079336535225863258e-01 2.180564619063158835e-02
+4.725836555273193462e-01 6.055504983495709759e-01 2.181419194008693205e-02
+4.655708088649732068e-01 6.031611773523495312e-01 2.210580170001537684e-02
+4.585447116306416437e-01 6.007652058968021569e-01 2.267187969798983502e-02
+4.515058459835388782e-01 5.983620990282547680e-01 2.350422445657735990e-02
+4.444547120266517104e-01 5.959513709030562767e-01 2.459499875403014374e-02
+4.373918319618326778e-01 5.935325343022211930e-01 2.593670014651517156e-02
+4.303177543037495223e-01 5.911051002310937497e-01 2.752213198538535840e-02
+4.232330581488202292e-01 5.886685776092354105e-01 2.934437486930205341e-02
+4.161383574931313278e-01 5.862224730549979723e-01 3.139675847884770832e-02
+4.090343055913983616e-01 5.837662907693373926e-01 3.367283375013734037e-02
+4.019215993467592507e-01 5.812995325235387201e-01 3.616634535426579283e-02
+3.948009837190709082e-01 5.788216977554323517e-01 3.887120446073646235e-02
+3.876732561372571162e-01 5.763322837785355146e-01 4.174672181203834681e-02
+3.805386564470196742e-01 5.738309171411589693e-01 4.468566878513501733e-02
+3.733986391498164137e-01 5.713169711328536238e-01 4.768049787246867594e-02
+3.662542351622480874e-01 5.687899279044026368e-01 5.071835758395210753e-02
+3.591065040473656045e-01 5.662492786415918022e-01 5.378828392041421630e-02
+3.519565800474088735e-01 5.636945152858550134e-01 5.688085721725138350e-02
+3.448056760545124555e-01 5.611251315161035480e-01 5.998797256299469999e-02
+3.376550874229136134e-01 5.585406238589376571e-01 6.310263770132876204e-02
+3.305061956006355439e-01 5.559404929241524851e-01 6.621879773242350664e-02
+3.233604715607960034e-01 5.533242447607230607e-01 6.933118466356372189e-02
+3.162194790161148017e-01 5.506913923265978061e-01 7.243518928216058361e-02
+3.090846039651472532e-01 5.480415027343880086e-01 7.552721746757809496e-02
+3.019574288899705139e-01 5.453741321890830385e-01 7.860394456462099777e-02
+2.948403194287022577e-01 5.426887379559618418e-01 8.166128713902018332e-02
+2.877352499045566225e-01 5.399848761881764769e-01 8.469633286585029341e-02
+2.806442994214729536e-01 5.372621189537871711e-01 8.770643445761908130e-02
+2.735696535538801322e-01 5.345200561570193631e-01 9.068916512095565041e-02
+2.665136059049172390e-01 5.317582974656462902e-01 9.364228167891575083e-02
+2.594785595977833204e-01 5.289764742223507232e-01 9.656369418956520234e-02
+2.524670287821700332e-01 5.261742413169625543e-01 9.945144107016240520e-02
+2.454813557062531792e-01 5.233513142453691813e-01 1.023041162767710510e-01
+2.385245828710040317e-01 5.205073603004944927e-01 1.051194831525161522e-01
+2.315996737216303170e-01 5.176421037021866622e-01 1.078956959800008442e-01
+2.247096070811669399e-01 5.147553123030387257e-01 1.106311405318080310e-01
+2.178574824667257048e-01 5.118467857547527311e-01 1.133242655958566492e-01
+2.110465244393363582e-01 5.089163566221597268e-01 1.159735773093806543e-01
+2.042800881777394606e-01 5.059638913007615812e-01 1.185776351459725819e-01
+1.975616665475327660e-01 5.029892907239723598e-01 1.211350492651094846e-01
+1.908950317685597087e-01 4.999924798399172921e-01 1.236442618572499708e-01
+1.842839642352289697e-01 4.969734333710090213e-01 1.261039978961912833e-01
+1.777324020667393756e-01 4.939321620495928378e-01 1.285130506256617899e-01
+1.712444848635372441e-01 4.908687102327232155e-01 1.308702368677320538e-01
+1.648245567449286297e-01 4.877831568788963401e-01 1.331744245804179216e-01
+1.584771896665797541e-01 4.846756148389082530e-01 1.354245338303780855e-01
+1.522072108246106115e-01 4.815462299379932865e-01 1.376195378692431359e-01
+1.460197345452351747e-01 4.783951798632230523e-01 1.397584642177332193e-01
+1.399204939260773328e-01 4.752226638142488802e-01 1.418397751955981501e-01
+1.339151022806790436e-01 4.720289313790105301e-01 1.438629155677119409e-01
+1.280096392738992173e-01 4.688142535267130762e-01 1.458273227721058329e-01
+1.222107627052576584e-01 4.655789223639808516e-01 1.477322650340249788e-01
+1.165256528622910237e-01 4.623232537320298152e-01 1.495770677617926092e-01
+1.109620746853187123e-01 4.590475853271560047e-01 1.513611132825743999e-01
+1.055284430115649430e-01 4.557522747771929894e-01 1.530838402977779955e-01
+1.002338888313226428e-01 4.524376976954341267e-01 1.547447430577089666e-01
+9.508832342249537439e-02 4.491042457325262194e-01 1.563433702619193288e-01
+9.010250937510871916e-02 4.457523324675090604e-01 1.578790892676192326e-01
+8.528801833375249108e-02 4.423823989146767888e-01 1.593510674113139958e-01
+8.065727940861416867e-02 4.389948528858526600e-01 1.607597457256386420e-01
+7.622371216564308161e-02 4.355901307746828932e-01 1.621048834368656322e-01
+7.200158271604989446e-02 4.321686757028083692e-01 1.633862841279137557e-01
+6.800589086138220107e-02 4.287309359317861834e-01 1.646037933778843332e-01
+6.425218103335716968e-02 4.252773633715483670e-01 1.657572962977645059e-01
+6.075626148835750612e-02 4.218084121914437157e-01 1.668467149892300661e-01
+5.753381975108700502e-02 4.183245375382101949e-01 1.678720059529140995e-01
+5.459992971435845971e-02 4.148261943636451510e-01 1.688331574715942474e-01
+5.196845773512390881e-02 4.113138363632788397e-01 1.697301869925023354e-01
+4.965139124510086627e-02 4.077879150260529384e-01 1.705631385315065085e-01
+4.765813208284918473e-02 4.042488787938245398e-01 1.713320801202671551e-01
+4.599481449154869256e-02 4.006971723285012166e-01 1.720371013157572515e-01
+4.466371969486728627e-02 3.971332358837184051e-01 1.726783107897287561e-01
+4.366274483561478209e-02 3.935575133766276990e-01 1.732557671739120286e-01
+4.298497468310508857e-02 3.899704687794856572e-01 1.737693705957654433e-01
+4.262017645185838671e-02 3.863724827023667929e-01 1.742196255705478480e-01
+4.255352467768171859e-02 3.827639728113220174e-01 1.746066936456434071e-01
+4.276673184831410873e-02 3.791453506945430818e-01 1.749307448926006592e-01
+4.323878239983177524e-02 3.755170217599948512e-01 1.751919563188165385e-01
+4.394675081101364483e-02 3.718793851987791665e-01 1.753905104335057585e-01
+4.486662442701292580e-02 3.682328340080037177e-01 1.755265939730583369e-01
+4.597406436707644067e-02 3.645777550668193867e-01 1.756003967899375517e-01
+4.724505801823831314e-02 3.609145292591857124e-01 1.756121109084000098e-01
+4.865643856140024898e-02 3.572435316368365310e-01 1.755619297495205344e-01
+5.018626632042253594e-02 3.535651316158259783e-01 1.754500475272437465e-01
+5.181408104443557122e-02 3.498796931999255677e-01 1.752766588164567374e-01
+5.352104295989750654e-02 3.461875752240315962e-01 1.750419582933170903e-01
+5.528998425553303259e-02 3.424891316106106198e-01 1.747461406473147794e-01
+5.710539287663336100e-02 3.387847116320403806e-01 1.743894006636908245e-01
+5.895334846203271334e-02 3.350746601715560713e-01 1.739719334739151524e-01
+6.082142709649813322e-02 3.313593179753057116e-01 1.734939349708606859e-01
+6.269858808390260663e-02 3.276390218878380001e-01 1.729556023841174184e-01
+6.457505267241087088e-02 3.239141050631572094e-01 1.723571350094970367e-01
+6.644218183629055363e-02 3.201848971432968427e-01 1.716987350852014205e-01
+6.829235792686130790e-02 3.164517243962254311e-01 1.709806088053268391e-01
+7.011887323479765177e-02 3.127149098048046527e-01 1.702029674593475428e-01
+7.191582719453681882e-02 3.089747730984767071e-01 1.693660286839586415e-01
+7.367740139700959534e-02 3.052317018390342529e-01 1.684698187582648887e-01
+7.539908659075802988e-02 3.014860094828903936e-01 1.675145933863426417e-01
+7.707730571895973770e-02 2.977379606831319081e-01 1.665007348086736949e-01
+7.870852955781817983e-02 2.939878648964006636e-01 1.654284970811750188e-01
+8.028965953863020921e-02 2.902360278178472974e-01 1.642981478645798299e-01
+8.181797774419891089e-02 2.864827509313960796e-01 1.631099700093367744e-01
+8.329110360766753263e-02 2.827283309501391617e-01 1.618642630930951787e-01
+8.470695659424687385e-02 2.789730591425138573e-01 1.605613448745624727e-01
+8.606372418387428502e-02 2.752172205414125661e-01 1.592015526248838075e-01
+8.735983452008261319e-02 2.714610930351273321e-01 1.577852442954886525e-01
+8.859393314120664331e-02 2.677049463410028363e-01 1.563127994796906506e-01
+8.976486326081492551e-02 2.639490408648579312e-01 1.547846201243904263e-01
+9.087164911293293956e-02 2.601936264515474218e-01 1.532011309481255412e-01
+9.191348192284298779e-02 2.564389410344570241e-01 1.515627795225681362e-01
+9.288704312629730842e-02 2.526856315239155992e-01 1.498693699931691048e-01
+9.379283018859288501e-02 2.489337717503207204e-01 1.481216905842226428e-01
+9.463163644057562274e-02 2.451833792964967507e-01 1.463205652098015508e-01
+9.540318566942779244e-02 2.414346401225993533e-01 1.444665315338557743e-01
+9.610732643393554708e-02 2.376877206774311024e-01 1.425601463139360425e-01
+9.674402718144511915e-02 2.339427661170380146e-01 1.406019829499289553e-01
+9.731337192794831115e-02 2.301998985206034631e-01 1.385926284969124511e-01
+9.781527030012060475e-02 2.264592671684997338e-01 1.365326231802845014e-01
+9.824358966693200190e-02 2.227221381992704474e-01 1.344213498047777955e-01
+9.860476008591259611e-02 2.189874851640599696e-01 1.322606854144605382e-01
+9.889926458171927059e-02 2.152553323101172311e-01 1.300512525669721697e-01
+9.912768720083675600e-02 2.115256719866073221e-01 1.277936680974917916e-01
+9.929070945217863264e-02 2.077984630697710111e-01 1.254885372707029156e-01
+9.938536693535210409e-02 2.040743841747782450e-01 1.231359093599569132e-01
+9.940987528000957973e-02 2.003539028956775048e-01 1.207361104943659447e-01
+9.937074432198822471e-02 1.966357733029605592e-01 1.182905659078862248e-01
+9.926899950314096999e-02 1.929198155529378012e-01 1.157998086675786908e-01
+9.910574746809375224e-02 1.892058087816931022e-01 1.132643300609986470e-01
+9.887273365069987330e-02 1.854955476839638961e-01 1.106837415179452166e-01
+9.857702759168757156e-02 1.817875303344013982e-01 1.080592207487474365e-01
+9.822269753736714848e-02 1.780808239249605796e-01 1.053914161709541830e-01
+9.781113633355650872e-02 1.743750377566490040e-01 1.026806351620476176e-01
+9.733238005935909709e-02 1.706723687329834982e-01 9.992670564763897478e-02
+9.679537330416121410e-02 1.669706979907544520e-01 9.713043093317094701e-02
+9.620476860769888727e-02 1.632687911401897729e-01 9.429209466525781402e-02
+9.555840111219859878e-02 1.595669718044100127e-01 9.141177435708905397e-02
+9.484851695793727888e-02 1.558669291806107915e-01 8.848983773912671991e-02
+9.408911153954402362e-02 1.521650578561620781e-01 8.552628708305054506e-02
+9.328192094338655371e-02 1.484606091474970080e-01 8.252094903627574252e-02
+9.241015243151923242e-02 1.447574737795673805e-01 7.947496936453349314e-02
+9.149313879389489590e-02 1.410504572025015335e-01 7.638732537156053826e-02
+9.053276383981978537e-02 1.373386075843833487e-01 7.325761429945673586e-02]; 
+
+   case 'the' 
+      RGB = [1.555601333154079877e-02 1.382442454646408414e-01 2.018108864558305071e-01
+1.620183633850513089e-02 1.410507428866217272e-01 2.089765125440807836e-01
+1.685648942708358952e-02 1.438270143621834252e-01 2.162386804476043589e-01
+1.752640064782528401e-02 1.465717250667996630e-01 2.235996996833259920e-01
+1.821871873545745021e-02 1.492834638238061673e-01 2.310618693528040390e-01
+1.894137836902154426e-02 1.519607349643580241e-01 2.386274839825403005e-01
+1.969967580211434005e-02 1.546014513385217670e-01 2.463049741539924953e-01
+2.050331512714091350e-02 1.572037794856419868e-01 2.540971092002056730e-01
+2.136720981691051999e-02 1.597664500864496573e-01 2.619991459036808412e-01
+2.230340677460975612e-02 1.622875536944013708e-01 2.700132114112391291e-01
+2.332520459934065912e-02 1.647650548255009395e-01 2.781413941166567261e-01
+2.444727823684482437e-02 1.671967824349823439e-01 2.863857270216258466e-01
+2.568581629165060318e-02 1.695804203313354408e-01 2.947481661145329168e-01
+2.705867185137392564e-02 1.719134976584987262e-01 3.032305630924797546e-01
+2.858552764394725262e-02 1.741933796245943022e-01 3.118346316168387755e-01
+3.028807626872338093e-02 1.764172587161002559e-01 3.205619061457981589e-01
+3.219021609777513587e-02 1.785821467123839268e-01 3.294136922283489310e-01
+3.431826321592867240e-02 1.806848679100377109e-01 3.383910069732901649e-01
+3.670117943457189280e-02 1.827220540829147533e-01 3.474945082255425644e-01
+3.937081594703384368e-02 1.846901418460877020e-01 3.567244107935257369e-01
+4.230474116360182640e-02 1.865853732643254770e-01 3.660803878810173217e-01
+4.544128431656369732e-02 1.884038007524381497e-01 3.755614556934170345e-01
+4.879889459256544354e-02 1.901412975600472455e-01 3.851658390246698871e-01
+5.238564999909287728e-02 1.917935754201579024e-01 3.948908155057742619e-01
+5.620896927989652708e-02 1.933562112707872260e-01 4.047325361348014794e-01
+6.027560971317643540e-02 1.948246853300575621e-01 4.146858197468099028e-01
+6.459519137924149557e-02 1.961877478810097886e-01 4.247714594384868758e-01
+6.917293885235362150e-02 1.974458334676339466e-01 4.349572770994127868e-01
+7.401397924875777190e-02 1.985943734629224688e-01 4.452322549865626589e-01
+7.912632580773251711e-02 1.996251445642635014e-01 4.555965555444902448e-01
+8.452074659970570947e-02 2.005284212595413451e-01 4.660508732253974551e-01
+9.019392390291772199e-02 2.013079448693051998e-01 4.765478779135125520e-01
+9.616430834359415702e-02 2.019472529514862447e-01 4.871044455010897223e-01
+1.024253987466881288e-01 2.024520213616345932e-01 4.976646226688278829e-01
+1.089944270249512126e-01 2.028088855832538839e-01 5.082270885561682716e-01
+1.158597351626668159e-01 2.030273547727350913e-01 5.187245256305992314e-01
+1.230424263443430921e-01 2.030937970306834206e-01 5.291483757425788914e-01
+1.305276694613609623e-01 2.030217816424806365e-01 5.394201195013325068e-01
+1.383099125215292158e-01 2.028195613734770086e-01 5.494767764101642360e-01
+1.463797060150685281e-01 2.025001769277504637e-01 5.592461312000727158e-01
+1.547186326280874380e-01 2.020850680852618320e-01 5.686422620965899677e-01
+1.632970499077517346e-01 2.016054641193363861e-01 5.775676861911989146e-01
+1.720728231749732162e-01 2.011027291278179585e-01 5.859183845130113699e-01
+1.809917622181062835e-01 2.006270524284321510e-01 5.935918186078640302e-01
+1.899902199574210471e-01 2.002341583564870575e-01 6.004970669758479263e-01
+1.989997441940680178e-01 1.999802927301375655e-01 6.065651516258429021e-01
+2.079529779081165097e-01 1.999164256738651391e-01 6.117570630961892686e-01
+2.167895160216459782e-01 2.000830340237900185e-01 6.160673924886361785e-01
+2.254604257150365498e-01 2.005067081654643424e-01 6.195227918364496489e-01
+2.339306302023402284e-01 2.011991984057693306e-01 6.221760825969698816e-01
+2.421790683949211487e-01 2.021587162723321729e-01 6.240979346009031259e-01
+2.501971277034634733e-01 2.033727314506766359e-01 6.253682433520739714e-01
+2.579861074778473928e-01 2.048213417591974728e-01 6.260687943604991146e-01
+2.655544225081862275e-01 2.064804694302365684e-01 6.262779744769025880e-01
+2.729150389729214088e-01 2.083244557603688429e-01 6.260675767301320249e-01
+2.800833915559314269e-01 2.103279194298604549e-01 6.255013265069014894e-01
+2.870675074033041674e-01 2.124691386407265292e-01 6.246420009551492125e-01
+2.938851360627945386e-01 2.147254304183257023e-01 6.235380183242871244e-01
+3.005577213461362307e-01 2.170756514619715527e-01 6.222251903623999825e-01
+3.070843773107185259e-01 2.195059802015210115e-01 6.207554984633752992e-01
+3.134916285549604886e-01 2.219983100391352271e-01 6.191452159520036691e-01
+3.197798380866583856e-01 2.245420356602937373e-01 6.174343435010863912e-01
+3.259695527216341926e-01 2.271241237863139140e-01 6.156329324235468858e-01
+3.320579089479565038e-01 2.297373625924510887e-01 6.137771467682858750e-01
+3.380660052498126178e-01 2.323715331127139128e-01 6.118660583919267593e-01
+3.439917420525137604e-01 2.350215076527270575e-01 6.099280657295180763e-01
+3.498460685618723365e-01 2.376808945869600675e-01 6.079694872801727490e-01
+3.556384580181179977e-01 2.403444043084654869e-01 6.059953497614897211e-01
+3.613686295558476425e-01 2.430089153836439420e-01 6.040241385974032262e-01
+3.670434468015162932e-01 2.456707832167414618e-01 6.020607616318822686e-01
+3.726708785615932551e-01 2.483266964722255499e-01 6.001059364008434205e-01
+3.782547954216434749e-01 2.509743622345630976e-01 5.981656274234778969e-01
+3.837960822688916696e-01 2.536122834643630419e-01 5.962498766549472196e-01
+3.892988345534371120e-01 2.562387736058999166e-01 5.943618049976240325e-01
+3.947690991030736729e-01 2.588520700720948198e-01 5.924996351953921714e-01
+4.002098946086877773e-01 2.614510659770345469e-01 5.906660913059953444e-01
+4.056240909379103532e-01 2.640348396856425084e-01 5.888633104220148962e-01
+4.110144223076953041e-01 2.666026246434279878e-01 5.870929096766683841e-01
+4.163832172801885667e-01 2.691538344975527575e-01 5.853565951388559618e-01
+4.217313231007376317e-01 2.716882525666767800e-01 5.836583632684495537e-01
+4.270634345309600177e-01 2.742050306264073312e-01 5.819941042354170868e-01
+4.323818104897113601e-01 2.767038027770706843e-01 5.803639256565888971e-01
+4.376886243188534142e-01 2.791842625143060586e-01 5.787676418773346487e-01
+4.429859696643737577e-01 2.816461519867726748e-01 5.772048027503156042e-01
+4.482758654902720408e-01 2.840892531259122666e-01 5.756747186760452495e-01
+4.535602602863915700e-01 2.865133804028727749e-01 5.741764823913096949e-01
+4.588410355259065487e-01 2.889183750000149931e-01 5.727089879419176022e-01
+4.641200084236148382e-01 2.913041002126984247e-01 5.712709472315609105e-01
+4.693989340425177015e-01 2.936704379215548943e-01 5.698609044983501404e-01
+4.746795067933508583e-01 2.960172859965477521e-01 5.684772490345112450e-01
+4.799633613697112389e-01 2.983445565121622955e-01 5.671182264323321176e-01
+4.852520731601697723e-01 3.006521746683436525e-01 5.657819486102849682e-01
+4.905471581781303825e-01 3.029400783247205298e-01 5.644664028469250638e-01
+4.958500725502145712e-01 3.052082180664184574e-01 5.631694600262432404e-01
+5.011622116043696895e-01 3.074565577287760587e-01 5.618888822762294621e-01
+5.064849085998188727e-01 3.096850753156841218e-01 5.606223301621769961e-01
+5.118194331420761189e-01 3.118937642524056697e-01 5.593673695773668797e-01
+5.171669893275794294e-01 3.140826349187781363e-01 5.581214784559522801e-01
+5.225287136638799845e-01 3.162517164128481606e-01 5.568820534159194535e-01
+5.279056728126164666e-01 3.184010584984696690e-01 5.556464164236831760e-01
+5.332988612036093645e-01 3.205307336933521101e-01 5.544118215561065766e-01
+5.387091985692399332e-01 3.226408394566178117e-01 5.531754619204082291e-01
+5.441375274486375258e-01 3.247315004373090841e-01 5.519344767774559957e-01
+5.495846107110635703e-01 3.268028707475315597e-01 5.506859588994191812e-01
+5.550511291471261766e-01 3.288551362262008837e-01 5.494269621786239677e-01
+5.605376791749926424e-01 3.308885166617086537e-01 5.481545094908906179e-01
+5.660447559653561944e-01 3.329032737201366166e-01 5.468656290966650291e-01
+5.715723572408055730e-01 3.348998704862335973e-01 5.455581199822507887e-01
+5.771213104289429907e-01 3.368784486432290226e-01 5.442280104688511644e-01
+5.826918609018115758e-01 3.388393806259411556e-01 5.428722728323092106e-01
+5.882841610050709713e-01 3.407830824811499126e-01 5.414878910241607279e-01
+5.938982692324897839e-01 3.427100153754324974e-01 5.400718694374621043e-01
+5.995341497366565298e-01 3.446206869260000083e-01 5.386212416598933350e-01
+6.051916721861749782e-01 3.465156523493675422e-01 5.371330791454219655e-01
+6.108706119725975103e-01 3.483955154267821541e-01 5.356044997333838653e-01
+6.165706507631435462e-01 3.502609292895154658e-01 5.340326759432469927e-01
+6.222913773881607602e-01 3.521125970311436149e-01 5.324148429745680922e-01
+6.280322890453092777e-01 3.539512721578863541e-01 5.307483063447554494e-01
+6.337927927958686425e-01 3.557777588917046541e-01 5.290304491020394462e-01
+6.395721854014132512e-01 3.575929224264804973e-01 5.272587829694529438e-01
+6.453697498455218673e-01 3.593976455700171879e-01 5.254307632896803026e-01
+6.511846984697030605e-01 3.611928549527803622e-01 5.235439096149940852e-01
+6.570160963803246545e-01 3.629795579684892415e-01 5.215959730192853971e-01
+6.628629283562820218e-01 3.647588132682739737e-01 5.195848109675399451e-01
+6.687241012633005077e-01 3.665317306708469891e-01 5.175083912494201632e-01
+6.745984464659754432e-01 3.682994710922303794e-01 5.153647953022981731e-01
+6.804847221871188623e-01 3.700632465224873990e-01 5.131522209386339961e-01
+6.863816157645579175e-01 3.718243200760849021e-01 5.108689845040222943e-01
+6.922877457570544291e-01 3.735840061411623281e-01 5.085135225034096429e-01
+6.982016638532075881e-01 3.753436706510840937e-01 5.060843927435032530e-01
+7.041218565401857754e-01 3.771047314992945210e-01 5.035802750493091340e-01
+7.100468845018954589e-01 3.788685911907690995e-01 5.009996451582281463e-01
+7.159752518731292703e-01 3.806367017978663503e-01 4.983410633235164089e-01
+7.219050254760910335e-01 3.824107548202065887e-01 4.956041045679995816e-01
+7.278344332015346252e-01 3.841923879692217270e-01 4.927879483140180095e-01
+7.337616407032357957e-01 3.859832960516177969e-01 4.898918977085310877e-01
+7.396847510296571393e-01 3.877852324461281697e-01 4.869153794944616753e-01
+7.456018038508585022e-01 3.896000107579556393e-01 4.838579440403712462e-01
+7.515107742785041012e-01 3.914295066368485010e-01 4.807192656291401911e-01
+7.574095712835625660e-01 3.932756597383701980e-01 4.774991431076147097e-01
+7.632960357235062387e-01 3.951404758009958162e-01 4.741975009994948143e-01
+7.691679379984673881e-01 3.970260288041012053e-01 4.708143911830061090e-01
+7.750229753641669772e-01 3.989344631636088656e-01 4.673499952331199858e-01
+7.808587689384376418e-01 4.008679959130103665e-01 4.638046275250513051e-01
+7.866728604480874854e-01 4.028289188075652172e-01 4.601787391913814695e-01
+7.924627087737056153e-01 4.048196002786729752e-01 4.564729230191116316e-01
+7.982256863620216247e-01 4.068424871537119070e-01 4.526879193650572009e-01
+8.039590755885861473e-01 4.089001060440320967e-01 4.488246231577860956e-01
+8.096600651680347926e-01 4.109950642903736351e-01 4.448840920414381395e-01
+8.153258420561760866e-01 4.131300072582320126e-01 4.408672005707100494e-01
+8.209533846301936277e-01 4.153077124896901728e-01 4.367753702901882029e-01
+8.265394587133882975e-01 4.175310847974926798e-01 4.326106584748535266e-01
+8.320808476618816174e-01 4.198030498289601065e-01 4.283748912056176694e-01
+8.375742298072511582e-01 4.221266063894242304e-01 4.240701127101388912e-01
+8.430161781421201539e-01 4.245048216497959159e-01 4.196985997897492715e-01
+8.484031611801808870e-01 4.269408247931844591e-01 4.152628771038663902e-01
+8.537315452228415591e-01 4.294377989032187592e-01 4.107657331305429871e-01
+8.589975982777037222e-01 4.319989708985695898e-01 4.062102365684474026e-01
+8.641974958823694930e-01 4.346275993272235572e-01 4.015997528869852951e-01
+8.693273290890853877e-01 4.373269598520185819e-01 3.969379606684441675e-01
+8.743831148591909574e-01 4.401003282876529976e-01 3.922288673203608855e-01
+8.793608090992056647e-01 4.429509610905758565e-01 3.874768236699652202e-01
+8.842563225402819693e-01 4.458820732584555802e-01 3.826865368883226592e-01
+8.890655396175203284e-01 4.488968136663485375e-01 3.778630811333164030e-01
+8.937843693689974112e-01 4.519982404973394430e-01 3.730116014425700621e-01
+8.984086715918495614e-01 4.551892900487020666e-01 3.681382748140558103e-01
+9.029343899688814234e-01 4.584727367754222738e-01 3.632494215164466245e-01
+9.073575586033109097e-01 4.618511663085561048e-01 3.583516614288673741e-01
+9.116743277656134126e-01 4.653269421603676848e-01 3.534519722899168159e-01
+9.158809992051784032e-01 4.689021723136149178e-01 3.485576699619067353e-01
+9.199740625655835613e-01 4.725786767270368505e-01 3.436763818638891022e-01
+9.239502320744639174e-01 4.763579567194722864e-01 3.388160133952918263e-01
+9.278064825504417357e-01 4.802411672570275347e-01 3.339847073943023048e-01
+9.315400836682339314e-01 4.842290931875970483e-01 3.291907969273191181e-01
+9.351486313601243827e-01 4.883221304365225612e-01 3.244427519772630775e-01
+9.386300752174523421e-01 4.925202730905588466e-01 3.197491208755643965e-01
+9.419827407976890665e-01 4.968231071526066356e-01 3.151184675888816233e-01
+9.452053458453827384e-01 5.012298115494860928e-01 3.105593062092800172e-01
+9.482970095990234105e-01 5.057391667267315816e-01 3.060800341879720277e-01
+9.512572545755481057e-01 5.103495708806106146e-01 3.016888659817511531e-01
+9.540860004899643920e-01 5.150590635745326828e-01 2.973937688352701891e-01
+9.567835502644689294e-01 5.198653561843505910e-01 2.932024023936338208e-01
+9.593505683914355098e-01 5.247658683349885056e-01 2.891220637265379811e-01
+9.617880522174245828e-01 5.297577692490467172e-01 2.851596391521897811e-01
+9.640972969908582213e-01 5.348380227429672118e-01 2.813215639873033469e-01
+9.662798557460373639e-01 5.400034344900018768e-01 2.776137910349112392e-01
+9.683374952663609259e-01 5.452507001277228094e-01 2.740417682745930894e-01
+9.702721494708056449e-01 5.505764528210163045e-01 2.706104258619907443e-01
+9.720889605050128113e-01 5.559744240639272750e-01 2.673323057285149629e-01
+9.737882391976736551e-01 5.614431075234689317e-01 2.642051375197135843e-01
+9.753722517954447335e-01 5.669791681305653697e-01 2.612321043607351290e-01
+9.768433321430202154e-01 5.725792962307277856e-01 2.584161030939570725e-01
+9.782037550763590383e-01 5.782403184217296266e-01 2.557595328984585970e-01
+9.794556966363962003e-01 5.839592236834146854e-01 2.532643241222839459e-01
+9.806011989875685897e-01 5.897331838357899869e-01 2.509319710696591987e-01
+9.816445119805891073e-01 5.955576445021050214e-01 2.487674614053176358e-01
+9.825957966513861885e-01 6.014235301335163486e-01 2.467838886220111161e-01
+9.834484089207010671e-01 6.073354334336248384e-01 2.449669167474177733e-01
+9.842037798764916579e-01 6.132913094304376367e-01 2.433164315861336413e-01
+9.848630901763529844e-01 6.192893396808167861e-01 2.418320393357376030e-01
+9.854335855591603854e-01 6.253232095344845032e-01 2.405207443125048083e-01
+9.859266054527725531e-01 6.313839151833324781e-01 2.393924955683320310e-01
+9.863290788081210403e-01 6.374805817839866995e-01 2.384285005271009616e-01
+9.866412575432023102e-01 6.436122274808632193e-01 2.376272705850792089e-01
+9.868743031654042541e-01 6.497702193582076680e-01 2.369977788720153966e-01
+9.870387195949218428e-01 6.559468364085242476e-01 2.365460008515470891e-01
+9.871160198111447182e-01 6.621544902577213287e-01 2.362516434857291903e-01
+9.871054832314208882e-01 6.683929123881801049e-01 2.361125093170109435e-01
+9.870452158568817635e-01 6.746361467497961062e-01 2.361551640855951706e-01
+9.869008071972434903e-01 6.809069196703931848e-01 2.363489608363473771e-01
+9.866692878063002548e-01 6.872064512263130753e-01 2.366900769944741967e-01
+9.863929517876753872e-01 6.935072010148546351e-01 2.372025181179537867e-01
+9.860358081545986808e-01 6.998320059248218650e-01 2.378591308273384497e-01
+9.855936903889445100e-01 7.061828277187244263e-01 2.386553467137359497e-01
+9.851166760681809853e-01 7.125285611733751523e-01 2.396137846497558566e-01
+9.845515404596055786e-01 7.189016348706930293e-01 2.407027465239837682e-01
+9.839219208542443473e-01 7.252873073536283410e-01 2.419304971970357987e-01
+9.832411577231264799e-01 7.316776102841332508e-01 2.432981102176038357e-01
+9.824686360853925882e-01 7.380960010628512258e-01 2.447853973017022899e-01
+9.816675490572134288e-01 7.445058075421049359e-01 2.464118597749720974e-01
+9.807811261674898029e-01 7.509394073137781733e-01 2.481527624504580309e-01
+9.798377198237012697e-01 7.573804700508821597e-01 2.500137146942527089e-01
+9.788392654586509645e-01 7.638279008720277874e-01 2.519905378906656113e-01
+9.777574675384567149e-01 7.702969047505190403e-01 2.540716600569991046e-01
+9.766479350869351483e-01 7.767573771217611833e-01 2.562664070834250185e-01
+9.754356977304895482e-01 7.832491288133777152e-01 2.585534361426328198e-01
+9.742107025732685832e-01 7.897246981741067318e-01 2.609472103669700505e-01
+9.728835679779427315e-01 7.962305102434532600e-01 2.634261983272434549e-01
+9.715297353896644728e-01 8.027276438790406088e-01 2.659994820979044161e-01
+9.700861348373609472e-01 8.092479763321948072e-01 2.686528986078252079e-01
+9.686057099481873989e-01 8.157648637457888263e-01 2.713899293880046582e-01
+9.670430691608270513e-01 8.223006128282058791e-01 2.742007328066633498e-01
+9.654377156641301694e-01 8.288358297838601674e-01 2.770858440538391254e-01
+9.637524161478506768e-01 8.353882936883590959e-01 2.800376262549509332e-01
+9.620231537308009395e-01 8.419407901977008502e-01 2.830554448577937698e-01
+9.602104885023859948e-01 8.485116373841136150e-01 2.861325388392048086e-01
+9.583576301078738924e-01 8.550807238511934916e-01 2.892681513706822360e-01
+9.564117528707279936e-01 8.616719638797333269e-01 2.924557053792812833e-01
+9.544348419615947821e-01 8.682572954460299197e-01 2.956947937778980906e-01
+9.523487086523741985e-01 8.748712522095133393e-01 2.989788164145827376e-01
+9.502464564071694264e-01 8.814728114137494464e-01 3.023077648025994102e-01
+9.480141307284709606e-01 8.881110895508603775e-01 3.056751963404329420e-01
+9.457819798963852387e-01 8.947301765899248194e-01 3.090811208408512645e-01
+9.434198646152930356e-01 9.013849121338212145e-01 3.125200216900483885e-01
+9.410286159691669816e-01 9.080328518084608280e-01 3.159906396320988908e-01
+9.385331275251967975e-01 9.147047487143539213e-01 3.194893313796646206e-01
+9.359711083432949996e-01 9.213848126149789541e-01 3.230138415459749002e-01
+9.333375985220991877e-01 9.280748341844049509e-01 3.265615469169362850e-01
+9.305915654403119630e-01 9.347905093445134650e-01 3.301299810381577715e-01
+9.278142496620381818e-01 9.414998557883345054e-01 3.337168327083647745e-01
+9.248899165263079203e-01 9.482470197415310276e-01 3.373199677733378365e-01
+9.219411401959984875e-01 9.549849147932994997e-01 3.409370492608514991e-01
+9.188613878011584468e-01 9.617532494963948464e-01 3.445662997232426528e-01
+9.156931782520092433e-01 9.685354904254356301e-01 3.482056900726151483e-01
+9.124490701578419349e-01 9.753266872784461805e-01 3.518533597970244786e-01
+9.090418416674036495e-01 9.821574063216705897e-01 3.555078064299531104e-01]; 
+
+   case 'tur' 
+      RGB = [9.128247827303703765e-01 9.639053479101408195e-01 6.723488894068933019e-01
+9.105541439463002984e-01 9.592872094872512134e-01 6.663907644186453094e-01
+9.082861583229014935e-01 9.546805250318116665e-01 6.604691147501789983e-01
+9.060452334346256187e-01 9.500783067250512248e-01 6.545538618591559832e-01
+9.038150489008132116e-01 9.454849862587190179e-01 6.486649327173524826e-01
+9.016037749037892901e-01 9.408980925645457072e-01 6.427923205892623892e-01
+8.994100526612220925e-01 9.363178430715828338e-01 6.369376634451241470e-01
+8.972283335855062436e-01 9.317456838096750404e-01 6.311075587918794083e-01
+8.950696728809198754e-01 9.271782394664687121e-01 6.252888115672152747e-01
+8.929173737868275618e-01 9.226202315494650419e-01 6.195011901939884158e-01
+8.907923116926522722e-01 9.180653547565199579e-01 6.137200788543796248e-01
+8.886692522817520867e-01 9.135209242332905655e-01 6.079750370293484085e-01
+8.865762636352767512e-01 9.089784066893161762e-01 6.022333770048255985e-01
+8.844822115233714754e-01 9.044469910654970857e-01 5.965311430834745465e-01
+8.824197090505849772e-01 8.999166548769963470e-01 5.908308404756164034e-01
+8.803543805345617201e-01 8.953977033216384829e-01 5.851717778972109762e-01
+8.783207074075700671e-01 8.908794045328807254e-01 5.795148392301145979e-01
+8.762837291194094380e-01 8.863723903264537629e-01 5.738994936029852001e-01
+8.742771906432560414e-01 8.818660105043367725e-01 5.682879912596860983e-01
+8.722681388310039585e-01 8.773704198332279436e-01 5.627170493987142530e-01
+8.702869566172963811e-01 8.728758815872331711e-01 5.571531747195710427e-01
+8.683053185700908561e-01 8.683912265313378231e-01 5.516275115467151879e-01
+8.663476627856837586e-01 8.639084851022803546e-01 5.461135394992869818e-01
+8.643928371591906856e-01 8.594343049131268897e-01 5.406342206369587622e-01
+8.624568202066339451e-01 8.549633517080399425e-01 5.351725180271732496e-01
+8.605281096749168857e-01 8.504992167172934492e-01 5.297408107341389227e-01
+8.586117879987910095e-01 8.460400804193519697e-01 5.243338350869022335e-01
+8.567083921128474389e-01 8.415855961633933457e-01 5.189512185545770429e-01
+8.548097683783190126e-01 8.371383437933764826e-01 5.136015164012288636e-01
+8.529307767408889074e-01 8.326931553267608033e-01 5.082696912104300857e-01
+8.510506087990278301e-01 8.282569318779919865e-01 5.029770800265680464e-01
+8.491921882796159560e-01 8.238216896030918779e-01 4.977007922336022516e-01
+8.473354714528938958e-01 8.193941476796476886e-01 4.924611248003303854e-01
+8.454893810507302376e-01 8.149710832043290942e-01 4.872494055687389136e-01
+8.436548921629284381e-01 8.105519834307682858e-01 4.820650051378080891e-01
+8.418197380538857688e-01 8.061410299518165790e-01 4.769199747107543685e-01
+8.400053197367541857e-01 8.017304745289870471e-01 4.717941759727964368e-01
+8.381909179373602248e-01 7.973275360052080041e-01 4.667076177307682427e-01
+8.363830265089613469e-01 7.929297607375542789e-01 4.616544156277210820e-01
+8.345877920103869085e-01 7.885347495856604993e-01 4.566293264683093933e-01
+8.327919089080556558e-01 7.841472126590459668e-01 4.516448413369297810e-01
+8.310063135234079246e-01 7.797629900031863848e-01 4.466914503101058753e-01
+8.292275089883606176e-01 7.753832051359705879e-01 4.417727747802380756e-01
+8.274479714210091208e-01 7.710105395274703399e-01 4.368957512003675547e-01
+8.256785592470122781e-01 7.666407630966191045e-01 4.320514550589309999e-01
+8.239135967944541949e-01 7.622758578672201857e-01 4.272453035219374029e-01
+8.221475640634913207e-01 7.579178098056661428e-01 4.224823211006376589e-01
+8.203879070453153899e-01 7.535636173491093714e-01 4.177568735562176006e-01
+8.186335117171099629e-01 7.492135470811618347e-01 4.130705335781763021e-01
+8.168774297351566460e-01 7.448701849739395309e-01 4.084293549358841147e-01
+8.151208269598283485e-01 7.405329639445877854e-01 4.038328842986566580e-01
+8.133730042127403914e-01 7.361980289394938204e-01 3.992747817294182155e-01
+8.116225817355652294e-01 7.318697849631130570e-01 3.947642928691043052e-01
+8.098694933912269356e-01 7.275481580762414024e-01 3.903019868836329342e-01
+8.081161421647475862e-01 7.232320558774254504e-01 3.858867812020280175e-01
+8.063663538470418057e-01 7.189197605534187741e-01 3.815168716651668457e-01
+8.046125622407066524e-01 7.146142683294098852e-01 3.771981838442269308e-01
+8.028545343811845925e-01 7.103155798131343124e-01 3.729315169481128289e-01
+8.010919901003339394e-01 7.060237163039633224e-01 3.687177325408004802e-01
+7.993300055097595225e-01 7.017364019961147559e-01 3.645545873969476269e-01
+7.975634994838864955e-01 6.974556802865253813e-01 3.604460667960328046e-01
+7.957906047709230046e-01 6.931822615073386373e-01 3.563940392198953200e-01
+7.940108757837693876e-01 6.889162546167795220e-01 3.523995277667577586e-01
+7.922238209776574225e-01 6.846577925964051348e-01 3.484635956840971271e-01
+7.904293753935112132e-01 6.804068218754933950e-01 3.445871200261476641e-01
+7.886299371669703850e-01 6.761621751401072355e-01 3.407699499113064912e-01
+7.868208547545553211e-01 6.719258532155115704e-01 3.370151794848580962e-01
+7.850015016585555339e-01 6.676980777850795024e-01 3.333239143922641090e-01
+7.831712152651345571e-01 6.634790940463787257e-01 3.296972647086952590e-01
+7.813292995863233559e-01 6.592691702526117803e-01 3.261363364073748827e-01
+7.794750283869652518e-01 6.550685970372218669e-01 3.226422224503434077e-01
+7.776076486673221266e-01 6.508776865233487641e-01 3.192159935965748763e-01
+7.757263844650232887e-01 6.466967712234903409e-01 3.158586890319579621e-01
+7.738304409335882150e-01 6.425262027384857078e-01 3.125713069333992955e-01
+7.719190086491207747e-01 6.383663502685200664e-01 3.093547950848793415e-01
+7.699919228068800026e-01 6.342172763144198200e-01 3.062099646060428282e-01
+7.680475840592058123e-01 6.300797563557358760e-01 3.031377731717001534e-01
+7.660850744742599971e-01 6.259542495514858196e-01 3.001389551573931946e-01
+7.641036016288820232e-01 6.218411653176698639e-01 2.972141439455896483e-01
+7.621023798026289597e-01 6.177409214840726692e-01 2.943638837738908332e-01
+7.600806343242360041e-01 6.136539422033919777e-01 2.915886230831420400e-01
+7.580376057793873912e-01 6.095806558220696614e-01 2.888887086342720734e-01
+7.559725540291885038e-01 6.055214927394206859e-01 2.862643804685457427e-01
+7.538847619930633126e-01 6.014768832813116584e-01 2.837157677714013393e-01
+7.517735391550399715e-01 5.974472556137478962e-01 2.812428856843471325e-01
+7.496385821697367779e-01 5.934328401156596655e-01 2.788457594157026098e-01
+7.474790247249349928e-01 5.894341791373612915e-01 2.765241346674250367e-01
+7.452941571551999766e-01 5.854517449359323278e-01 2.742776443121395791e-01
+7.430834135426160891e-01 5.814859431780246002e-01 2.721058338160937673e-01
+7.408462686359136296e-01 5.775371675495697410e-01 2.700081319859798934e-01
+7.385822390693008721e-01 5.736057983656746018e-01 2.679838537450121017e-01
+7.362908841899132861e-01 5.696922013455091305e-01 2.660322037116858995e-01
+7.339718065076965559e-01 5.657967265562297010e-01 2.641522805055408485e-01
+7.316246517864810617e-01 5.619197075270785380e-01 2.623430816971141777e-01
+7.292491087989990683e-01 5.580614605321673194e-01 2.606035093141773062e-01
+7.268449087719649482e-01 5.542222840379915638e-01 2.589323758133949549e-01
+7.244119971505563749e-01 5.504023530996886571e-01 2.573286095051418587e-01
+7.219503397818252122e-01 5.466018316756788842e-01 2.557911025974954899e-01
+7.194594088198653647e-01 5.428211930643935812e-01 2.543180251101427314e-01
+7.169390970998404944e-01 5.390606612983260826e-01 2.529078914226555730e-01
+7.143893337983732161e-01 5.353204418367376594e-01 2.515591605975798783e-01
+7.118100825627617922e-01 5.316007218689121627e-01 2.502702433238302993e-01
+7.092013395547599464e-01 5.279016707079033921e-01 2.490395087311264022e-01
+7.065632761648270588e-01 5.242233436125348645e-01 2.478655721838471937e-01
+7.038960056028840118e-01 5.205658319141027723e-01 2.467469222620103930e-01
+7.011993601253575514e-01 5.169294192806536126e-01 2.456813814978507926e-01
+6.984734491802424561e-01 5.133142072042380377e-01 2.446672141412145063e-01
+6.957184043559518916e-01 5.097202822466132544e-01 2.437026738057547215e-01
+6.929343773945654261e-01 5.061477167394171639e-01 2.427860085204449625e-01
+6.901216982990902027e-01 5.025964514073363310e-01 2.419159412674971588e-01
+6.872804633072713276e-01 4.990665929836670123e-01 2.410905423858894503e-01
+6.844107686966893755e-01 4.955582518851005536e-01 2.403077709414531138e-01
+6.815128311469199618e-01 4.920714492259936068e-01 2.395658950635757289e-01
+6.785868785067301623e-01 4.886061954699182919e-01 2.388631970725307307e-01
+6.756332326667190413e-01 4.851624213327032087e-01 2.381983436213906957e-01
+6.726521288960277678e-01 4.817401209176369048e-01 2.375696985886235346e-01
+6.696437188359446457e-01 4.783393588339723279e-01 2.369751854422654791e-01
+6.666082635296274317e-01 4.749601080715157297e-01 2.364131671114735878e-01
+6.635460289039749604e-01 4.716023339061982678e-01 2.358820311548202042e-01
+6.604573673748913576e-01 4.682659130292578520e-01 2.353807610155446706e-01
+6.573424797961275878e-01 4.649508592384817285e-01 2.349074379402631418e-01
+6.542016086091390070e-01 4.616571492422122946e-01 2.344603126221481149e-01
+6.510350327978842166e-01 4.583847209004847101e-01 2.340378795902509079e-01
+6.478430515953373936e-01 4.551334824230311438e-01 2.336388774485689268e-01
+6.446259633611755024e-01 4.519033296020167900e-01 2.332622032236857934e-01
+6.413839940492124247e-01 4.486942500114745047e-01 2.329058642884746511e-01
+6.381174276440877424e-01 4.455061586981217681e-01 2.325684660088059297e-01
+6.348265500932614991e-01 4.423389620941622913e-01 2.322486831842977550e-01
+6.315116605695774155e-01 4.391925158791953887e-01 2.319458531661305334e-01
+6.281730104223729461e-01 4.360667833034455043e-01 2.316579279478628295e-01
+6.248108867019236401e-01 4.329616581049553492e-01 2.313836187886625928e-01
+6.214255770673621226e-01 4.298770280576157399e-01 2.311216752923600515e-01
+6.180173538237878628e-01 4.268127440894281532e-01 2.308715541128374960e-01
+6.145865084649400067e-01 4.237687269357882092e-01 2.306313089541623396e-01
+6.111333338376842006e-01 4.207448478787260138e-01 2.303997483300764260e-01
+6.076581198732585731e-01 4.177409699743503957e-01 2.301757903742778777e-01
+6.041611292458852756e-01 4.147569442408376994e-01 2.299587629276800271e-01
+6.006426901866908086e-01 4.117926430199113641e-01 2.297469460659757323e-01
+5.971031071270087587e-01 4.088479120598013661e-01 2.295392371763493311e-01
+5.935426680352169360e-01 4.059225898260850895e-01 2.293347588094398759e-01
+5.899616653081597439e-01 4.030165124281641087e-01 2.291325734316880802e-01
+5.863604503326285133e-01 4.001295067793814719e-01 2.289312648345211421e-01
+5.827393462725786177e-01 3.972613890222796984e-01 2.287298138873416486e-01
+5.790986411902667719e-01 3.944119738157387811e-01 2.285275119372468522e-01
+5.754386920094946012e-01 3.915810608797961612e-01 2.283231701874827158e-01
+5.717598595710956522e-01 3.887684389212705538e-01 2.281156877135243621e-01
+5.680624888217489232e-01 3.859738913687448258e-01 2.279041499218198430e-01
+5.643468987836690598e-01 3.831972016166527162e-01 2.276878398717704366e-01
+5.606135014398240246e-01 3.804381236067138072e-01 2.274655664744977823e-01
+5.568626686009898741e-01 3.776964124183660454e-01 2.272364567122592827e-01
+5.530947703612836275e-01 3.749718169415875435e-01 2.269997025952595338e-01
+5.493102061694418170e-01 3.722640707136085636e-01 2.267544107214977123e-01
+5.455093844474366849e-01 3.695728971647626593e-01 2.264997151134776621e-01
+5.416927086216569709e-01 3.668980144097471752e-01 2.262348350480499204e-01
+5.378606217947595747e-01 3.642391205981750923e-01 2.259588836659274236e-01
+5.340135354481294616e-01 3.615959178208362768e-01 2.256711679956127647e-01
+5.301518754638107067e-01 3.589680973433583278e-01 2.253709864348782954e-01
+5.262761094769513592e-01 3.563553292394111560e-01 2.250575362145477709e-01
+5.223867172868102982e-01 3.537572724565644089e-01 2.247300369556790578e-01
+5.184841017313481792e-01 3.511736091955309780e-01 2.243880288453043437e-01
+5.145687147834636654e-01 3.486039985632924942e-01 2.240309158662728284e-01
+5.106411440519553757e-01 3.460480410893026493e-01 2.236577184811773256e-01
+5.067017881423235837e-01 3.435054056903972253e-01 2.232681227570667559e-01
+5.027510796252681047e-01 3.409757445575836710e-01 2.228617265136721426e-01
+4.987895070653633467e-01 3.384586834157125024e-01 2.224379910665530979e-01
+4.948177548651969127e-01 3.359537625951555251e-01 2.219958720410014630e-01
+4.908360971463728295e-01 3.334606870942352086e-01 2.215355358785864315e-01
+4.868450056329213793e-01 3.309790783774143597e-01 2.210565950309411609e-01
+4.828450375686827445e-01 3.285085184570587513e-01 2.205584694191147777e-01
+4.788368359138705510e-01 3.260485487451708631e-01 2.200404115431305319e-01
+4.748206472212548879e-01 3.235988770790072522e-01 2.195027100981302715e-01
+4.707969362808618885e-01 3.211591169778729160e-01 2.189450971836008897e-01
+4.667662693795122109e-01 3.187288356425135860e-01 2.183670869460304087e-01
+4.627293116701075015e-01 3.163075541790801304e-01 2.177680072916463594e-01
+4.586862340695841422e-01 3.138950081558932736e-01 2.171483462825098965e-01
+4.546374811311343911e-01 3.114908131915107847e-01 2.165079490118044792e-01
+4.505834924512453488e-01 3.090945859801553230e-01 2.158466824363790559e-01
+4.465251651502277208e-01 3.067057384379430762e-01 2.151634647284257906e-01
+4.424624800332205288e-01 3.043240886593481798e-01 2.144591818414338102e-01
+4.383958498551490668e-01 3.019492632236420726e-01 2.137337799541155214e-01
+4.343256784780819557e-01 2.995808923379119637e-01 2.129872269867968959e-01
+4.302525491830334059e-01 2.972185251864662980e-01 2.122191462426318287e-01
+4.261769801706936645e-01 2.948617395754311588e-01 2.114293130588631442e-01
+4.220990387565126678e-01 2.925103169029278360e-01 2.106183606559913768e-01
+4.180190866768337399e-01 2.901639064725308748e-01 2.097863381928281035e-01
+4.139374748855114139e-01 2.878221627482029921e-01 2.089333114395358071e-01
+4.098546564000305481e-01 2.854846942476605975e-01 2.080591616116443943e-01
+4.057712419033978057e-01 2.831510381788182595e-01 2.071635039021454405e-01
+4.016871580256169971e-01 2.808210427866469350e-01 2.062471500335373853e-01
+3.976027082875563945e-01 2.784943860456884357e-01 2.053102247884384113e-01
+3.935181846712299536e-01 2.761707517515646915e-01 2.043528642900468983e-01
+3.894338675796663596e-01 2.738498295626687340e-01 2.033752150347126197e-01
+3.853501485284500094e-01 2.715312592611229259e-01 2.023772355615125473e-01
+3.812675049241057712e-01 2.692146423201499661e-01 2.013587500039031863e-01
+3.771858334106182320e-01 2.668998447434733912e-01 2.003204988638387918e-01
+3.731053664536302938e-01 2.645865804728991244e-01 1.992626621753412208e-01
+3.690263252725575205e-01 2.622745690957888343e-01 1.981854256387428070e-01
+3.649489199677356521e-01 2.599635357439662453e-01 1.970889798104242807e-01
+3.608733496668369289e-01 2.576532109746325627e-01 1.959735193223784977e-01
+3.567998026886545215e-01 2.553433306346174492e-01 1.948392421320772061e-01
+3.527288062385475209e-01 2.530334781151396539e-01 1.936858449182176090e-01
+3.486601920186409020e-01 2.507235512004114542e-01 1.925140265725779620e-01
+3.445940882588859333e-01 2.484133136793199026e-01 1.913240314183973223e-01
+3.405306410460574029e-01 2.461025213487854080e-01 1.901160637330516767e-01
+3.364699867832531277e-01 2.437909343510991644e-01 1.888903276956251931e-01
+3.324122524192171801e-01 2.414783169649092898e-01 1.876470268273142949e-01
+3.283575556825768516e-01 2.391644373879673879e-01 1.863863634598928731e-01
+3.243060053196711312e-01 2.368490675124892975e-01 1.851085382313104599e-01
+3.202577013347079893e-01 2.345319826939236685e-01 1.838137496073975197e-01
+3.162127352310978301e-01 2.322129615138344705e-01 1.825021934285724068e-01
+3.121713481873937823e-01 2.298917159046080516e-01 1.811738589048320913e-01
+3.081335147958294551e-01 2.275680750195018809e-01 1.798290697596431065e-01
+3.040992288572926250e-01 2.252418581754896398e-01 1.784681064582642751e-01
+3.000685503066236048e-01 2.229128543385760497e-01 1.770911493801810288e-01
+2.960415318405872354e-01 2.205808544095470558e-01 1.756983743063298686e-01
+2.920182191423447704e-01 2.182456509647304199e-01 1.742899520962044868e-01
+2.879986511013646333e-01 2.159070379936562922e-01 1.728660483803914072e-01
+2.839828600283449411e-01 2.135648106336759944e-01 1.714268232671206371e-01
+2.799708718647850314e-01 2.112187649015158653e-01 1.699724310614039724e-01
+2.759627063869375951e-01 2.088686974216710790e-01 1.685030199953476415e-01
+2.719583774039363577e-01 2.065144051514603007e-01 1.670187319682087390e-01
+2.679578929499804030e-01 2.041556851024882158e-01 1.655197022947889340e-01
+2.639612554705231817e-01 2.017923340581795344e-01 1.640060594607524180e-01
+2.599684620025124460e-01 1.994241482869618665e-01 1.624779248834790635e-01
+2.559795043487851918e-01 1.970509232505948671e-01 1.609354126770728421e-01
+2.519943692468365470e-01 1.946724533070429697e-01 1.593786294201690046e-01
+2.480130385322499298e-01 1.922885314071993146e-01 1.578076739252100846e-01
+2.440354892972040890e-01 1.898989487846577950e-01 1.562226370078938775e-01
+2.400616940445691738e-01 1.875034946376172018e-01 1.546236012555405048e-01
+2.360916208382524140e-01 1.851019558018774935e-01 1.530106407931814128e-01
+2.321252334505864434e-01 1.826941164137449169e-01 1.513838210462468969e-01
+2.281624915077672400e-01 1.802797575614995262e-01 1.497431984988283338e-01
+2.242033506345226801e-01 1.778586569239049842e-01 1.480888204466117852e-01
+2.202477625994911925e-01 1.754305883940150690e-01 1.464207247437575854e-01
+2.162956754630863121e-01 1.729953216862958332e-01 1.447389395432186476e-01
+2.123470337300349953e-01 1.705526219247719688e-01 1.430434830302904636e-01
+2.084017785092666109e-01 1.681022492095620435e-01 1.413343631495822261e-01
+2.044598476844710633e-01 1.656439581587243193e-01 1.396115773261282222e-01
+2.005211760994463077e-01 1.631774974218037078e-01 1.378751121820577796e-01
+1.965856988864305155e-01 1.607026079587815515e-01 1.361249399201315824e-01
+1.926533421135208923e-01 1.582190261881047944e-01 1.343610282823611279e-01
+1.887240316449029232e-01 1.557264800392861304e-01 1.325833310557416600e-01
+1.847976928565723820e-01 1.532246885529702785e-01 1.307917884786300444e-01
+1.808742494403644818e-01 1.507133617751950094e-01 1.289863286797117148e-01
+1.769536238533599426e-01 1.481921999716426241e-01 1.271668674796427312e-01
+1.730357378708484994e-01 1.456608927537091369e-01 1.253333082519507424e-01
+1.691205132766324948e-01 1.431191180966186194e-01 1.234855418704042807e-01
+1.652078727370975830e-01 1.405665412234658185e-01 1.216234467798024410e-01
+1.612977409237918991e-01 1.380028133201234297e-01 1.197468892401933882e-01
+1.573900459762036241e-01 1.354275700331004917e-01 1.178557238119506412e-01
+1.534847214366352741e-01 1.328404296837557008e-01 1.159497941721605863e-01
+1.495817088501062986e-01 1.302409911046356894e-01 1.140289343827514401e-01
+1.456809613162400874e-01 1.276288309622561901e-01 1.120929707687035870e-01
+1.417824484273444985e-01 1.250035003675231404e-01 1.101417246101454861e-01
+1.378861632611661503e-01 1.223645204774909678e-01 1.081750159008208478e-01
+1.339921324751868759e-01 1.197113766395997425e-01 1.061926684632616136e-01]; 
+
+   case 'del'
+      RGB = [6.597738601379860013e-02 1.238600499381984077e-01 2.494811599712867811e-01
+6.865757658541371544e-02 1.266324956800233548e-01 2.555762447808356264e-01
+7.132312021900141796e-02 1.293951489111998809e-01 2.616639066260320057e-01
+7.396584278365506138e-02 1.321405798946303223e-01 2.677947952348482819e-01
+7.658629323761953489e-02 1.348691618055914976e-01 2.739690401973952083e-01
+7.919241629978698849e-02 1.375884267331394517e-01 2.801420635219376565e-01
+8.176925318412744947e-02 1.402841919021537431e-01 2.864049855987979565e-01
+8.433406612792618273e-02 1.429731754896261531e-01 2.926562894753481636e-01
+8.687299291862357609e-02 1.456421509856402619e-01 2.989801852647154812e-01
+8.939564312621503528e-02 1.483008215820366127e-01 3.053194113218902772e-01
+9.189721302857964402e-02 1.509448355999061520e-01 3.117030007960572280e-01
+9.437767086491094526e-02 1.535746031892240571e-01 3.181307112978130625e-01
+9.684032408298676176e-02 1.561940161218882128e-01 3.245815662969073756e-01
+9.927796547462605647e-02 1.587964393005784070e-01 3.310975577575396844e-01
+1.016993930631445442e-01 1.613915446377360008e-01 3.376235806086802516e-01
+1.040929763606517067e-01 1.639684016677392386e-01 3.442267209045115073e-01
+1.064700341792961802e-01 1.665394889067980111e-01 3.508360219569039429e-01
+1.088176547667218386e-01 1.690928617928972866e-01 3.575240510639015601e-01
+1.111462403295262191e-01 1.716403013777595965e-01 3.642247640300367850e-01
+1.134452622240499642e-01 1.741726760902385374e-01 3.709940519253031033e-01
+1.157201477866866002e-01 1.766970342921256598e-01 3.777940670973845005e-01
+1.179671104159276951e-01 1.792114205608784372e-01 3.846393215051533421e-01
+1.201817230210445731e-01 1.817136143480379551e-01 3.915459113873127617e-01
+1.223722204783651013e-01 1.842136886386882277e-01 3.984598273467554463e-01
+1.245183567208241193e-01 1.866951930885134003e-01 4.054791326498645709e-01
+1.266365389448252943e-01 1.891762365105242871e-01 4.125046892271796994e-01
+1.287143460345438750e-01 1.916485918438771141e-01 4.195883119105888182e-01
+1.307469548160320461e-01 1.941117894471887095e-01 4.267380618771365319e-01
+1.327408430973604225e-01 1.965752427165133320e-01 4.339060811804626439e-01
+1.346828243039070450e-01 1.990323873082787132e-01 4.411366760117488295e-01
+1.365667394636138066e-01 2.014836986376687955e-01 4.484350095699139449e-01
+1.383960163689361422e-01 2.039374403932631141e-01 4.557622019510663702e-01
+1.401636755967774206e-01 2.063944663974329741e-01 4.631231418544201062e-01
+1.418540865672596740e-01 2.088512567417482035e-01 4.705504424282677678e-01
+1.434598643146114128e-01 2.113116730887077965e-01 4.780359058662089766e-01
+1.449764155851626657e-01 2.137823044275377615e-01 4.855569960092488979e-01
+1.463910004146321830e-01 2.162663403203769485e-01 4.931143386027379560e-01
+1.476886377469379952e-01 2.187680022007208458e-01 5.007063827574367298e-01
+1.488517278855215897e-01 2.212928540992544768e-01 5.083284550145572567e-01
+1.498596541692162332e-01 2.238481772327865493e-01 5.159715446979967757e-01
+1.506883975687731414e-01 2.264434023743985280e-01 5.236207927150543506e-01
+1.513102256748371788e-01 2.290905757285599531e-01 5.312536911875026524e-01
+1.516842522456439690e-01 2.318030303219635324e-01 5.388545690381982833e-01
+1.517570170754133085e-01 2.345981922008114062e-01 5.464014367414956608e-01
+1.515076197810979464e-01 2.375036749636269540e-01 5.537960248334482527e-01
+1.508527167578624095e-01 2.405440732043884755e-01 5.610095372512794443e-01
+1.497779955302820376e-01 2.437529689807156341e-01 5.679039092169722025e-01
+1.482412957217069116e-01 2.471597695361844038e-01 5.743778793359424206e-01
+1.462677401356168583e-01 2.507850610764148502e-01 5.802953371129300209e-01
+1.439355627545357286e-01 2.546290083660951442e-01 5.855507465326762473e-01
+1.413540769625598603e-01 2.586695514989866829e-01 5.901033497204623002e-01
+1.386407864858154870e-01 2.628687111034194723e-01 5.939785160116007878e-01
+1.358917366388572578e-01 2.671843825843605580e-01 5.972486725556511722e-01
+1.331956301615234428e-01 2.715742302472205494e-01 6.000063534918327335e-01
+1.305811350178066321e-01 2.760102973743540078e-01 6.023428893290788677e-01
+1.280671927186234904e-01 2.804711462805791200e-01 6.043358297286517411e-01
+1.256919911974779258e-01 2.849349146429925872e-01 6.060559435528747319e-01
+1.234353694092780451e-01 2.893960415099317007e-01 6.075503879105464966e-01
+1.213123684738988406e-01 2.938438245262708359e-01 6.088643085732736715e-01
+1.193314037280503725e-01 2.982710543730990871e-01 6.100344852684282948e-01
+1.174733533629070403e-01 3.026784028742006138e-01 6.110815570440700784e-01
+1.157410513288365805e-01 3.070626658343806881e-01 6.120282423760157187e-01
+1.141526088065836497e-01 3.114180400183615416e-01 6.129002396427197796e-01
+1.126916634208409429e-01 3.157472412451859389e-01 6.137061650582799066e-01
+1.113553786510952659e-01 3.200503527841166984e-01 6.144572065766925606e-01
+1.101437722183151724e-01 3.243271585465217766e-01 6.151637952792941011e-01
+1.090564770800171446e-01 3.285777842283311712e-01 6.158346267162948529e-01
+1.080928143315710299e-01 3.328026048887181565e-01 6.164769721944358682e-01
+1.072518450875257212e-01 3.370021743369620570e-01 6.170969325182951160e-01
+1.065324069530126649e-01 3.411771714425693713e-01 6.176996445247795453e-01
+1.059331395146229648e-01 3.453283595087877078e-01 6.182894491232916456e-01
+1.054525023039967757e-01 3.494565556897754055e-01 6.188700280655170527e-01
+1.050887878891080540e-01 3.535626081054415448e-01 6.194445153697799578e-01
+1.048401320993113395e-01 3.576473788404232468e-01 6.200155882238653771e-01
+1.047045228648097182e-01 3.617117314301156461e-01 6.205855412748909616e-01
+1.046798087267215294e-01 3.657565217601439489e-01 6.211563474636030424e-01
+1.047637077327939481e-01 3.697825915556448573e-01 6.217297079493111500e-01
+1.049538171612311999e-01 3.737907638293131996e-01 6.223070931774267178e-01
+1.052476243004594747e-01 3.777818398051627224e-01 6.228897767433481114e-01
+1.056425183464732021e-01 3.817565969485811617e-01 6.234788633863599383e-01
+1.061358033549051061e-01 3.857157878203879009e-01 6.240753121902191669e-01
+1.067247120960378159e-01 3.896601395393941014e-01 6.246799558608577829e-01
+1.074064206019045564e-01 3.935903536891926513e-01 6.252935167860671495e-01
+1.081780631610760601e-01 3.975071065441324047e-01 6.259166204489629015e-01
+1.090367475038964695e-01 4.014110495195324368e-01 6.265498066600397875e-01
+1.099820192670150909e-01 4.053023125398828030e-01 6.271951607472914247e-01
+1.110081883132479630e-01 4.091820642340333603e-01 6.278512759575444191e-01
+1.121122195896028517e-01 4.130509161123952500e-01 6.285183732165030568e-01
+1.132912658654391114e-01 4.169094262530252948e-01 6.291967191746730137e-01
+1.145425291517750410e-01 4.207581307564207673e-01 6.298865324820219769e-01
+1.158632717089364272e-01 4.245975446528400532e-01 6.305879875238334931e-01
+1.172508261265178542e-01 4.284281627655473490e-01 6.313012175820684746e-01
+1.187026044305651562e-01 4.322504605241775932e-01 6.320263175158151725e-01
+1.202170218035645832e-01 4.360647043028175740e-01 6.327640308933485391e-01
+1.217903323311140817e-01 4.398716102802121553e-01 6.335133964865322653e-01
+1.234201965028123016e-01 4.436716084893622125e-01 6.342743647718233069e-01
+1.251044458168622253e-01 4.474650989352985664e-01 6.350469034989063566e-01
+1.268410231661077081e-01 4.512524653607909442e-01 6.358309517935993860e-01
+1.286279862353579828e-01 4.550340757553759663e-01 6.366264210299322768e-01
+1.304635102569667859e-01 4.588102828035847680e-01 6.374331955697576380e-01
+1.323456332495375476e-01 4.625814799269595823e-01 6.382509181299536039e-01
+1.342726301857550264e-01 4.663480223415985004e-01 6.390792893119938700e-01
+1.362431133778941039e-01 4.701102048314840798e-01 6.399181612927934415e-01
+1.382557801777440920e-01 4.738683163523436659e-01 6.407673303740510917e-01
+1.403094518927116008e-01 4.776226319622609018e-01 6.416265687705522414e-01
+1.424030742552521711e-01 4.813734129303259279e-01 6.424956248215036858e-01
+1.445357177858233311e-01 4.851209067888150872e-01 6.433742231671184530e-01
+1.467060787915918652e-01 4.888654617396300250e-01 6.442615910488664888e-01
+1.489131851676200047e-01 4.926073688646966375e-01 6.451570946472290347e-01
+1.511571091366653297e-01 4.963466938037996434e-01 6.460609578935421204e-01
+1.534374568113274773e-01 5.000836224936368035e-01 6.469728308538383876e-01
+1.557539606313337044e-01 5.038183265492227614e-01 6.478923408808500151e-01
+1.581064802328551455e-01 5.075509629447428894e-01 6.488190927082100323e-01
+1.604950035510952222e-01 5.112816736254882644e-01 6.497526685562985405e-01
+1.629196481906860228e-01 5.150105850470044766e-01 6.506926282565553832e-01
+1.653806563676609720e-01 5.187378093247897448e-01 6.516385018000171447e-01
+1.678770878978581016e-01 5.224637768298545648e-01 6.525882706071722827e-01
+1.704107945748090658e-01 5.261882349061756114e-01 6.535428899563763272e-01
+1.729824594318147002e-01 5.299112360468477556e-01 6.545018545237717422e-01
+1.755929057918094727e-01 5.336328137580849118e-01 6.554646382342502742e-01
+1.782431006664247641e-01 5.373529815601206794e-01 6.564306947203235598e-01
+1.809341585475496006e-01 5.410717318764055594e-01 6.573994578824640111e-01
+1.836673455941881250e-01 5.447890348032889962e-01 6.583703425703313350e-01
+1.864440842101210971e-01 5.485048367520860557e-01 6.593427454071065785e-01
+1.892659579998643982e-01 5.522190589552509188e-01 6.603160457822994100e-01
+1.921347170798090864e-01 5.559315958284012371e-01 6.612896070418273764e-01
+1.950522837092731887e-01 5.596423131801995243e-01 6.622627779079297561e-01
+1.980207581910957138e-01 5.633510462626485360e-01 6.632348941655241692e-01
+2.010424249735310309e-01 5.670575976553166031e-01 6.642052806559789468e-01
+2.041197588637720939e-01 5.707617349784390726e-01 6.651732536238323945e-01
+2.072554312381834074e-01 5.744631884318825987e-01 6.661381234667468343e-01
+2.104523161046616408e-01 5.781616481597345869e-01 6.670991979438091191e-01
+2.137134958380619842e-01 5.818567614439515978e-01 6.680557859020190836e-01
+2.170422663699277943e-01 5.855481297352551628e-01 6.690072015853253395e-01
+2.204421415686979580e-01 5.892353055354571101e-01 6.699527695945174388e-01
+2.239168564955728025e-01 5.929177891529354705e-01 6.708918305694538953e-01
+2.274703691651913662e-01 5.965950253621812305e-01 6.718237476670261277e-01
+2.311068603787596043e-01 6.002664000095238039e-01 6.727479139084245885e-01
+2.348307311320150803e-01 6.039312366204897531e-01 6.736637604671461554e-01
+2.386465970323070063e-01 6.075887930799791503e-01 6.745707659639463838e-01
+2.425592790908820962e-01 6.112382584746600678e-01 6.754684668258670310e-01
+2.465737901908315322e-01 6.148787502077949219e-01 6.763564687525340791e-01
+2.506953164731830497e-01 6.185093115199363778e-01 6.772344593131256474e-01
+2.549296306833234715e-01 6.221293277287609502e-01 6.780979140255732895e-01
+2.592822774336291380e-01 6.257372346725570411e-01 6.789506539234843041e-01
+2.637588638514070660e-01 6.293318265564150638e-01 6.797927409484227912e-01
+2.683650223312705752e-01 6.329118213522958447e-01 6.806243803889014954e-01
+2.731063499524681304e-01 6.364758627686015746e-01 6.814459485792905280e-01
+2.779906740187598757e-01 6.400228375684388071e-01 6.822520389699539001e-01
+2.830218658907085461e-01 6.435508363165360901e-01 6.830490580497422526e-01
+2.882048880496008714e-01 6.470582889109053326e-01 6.838383084593062655e-01
+2.935458083139746988e-01 6.505436502020417455e-01 6.846186591669699562e-01
+2.990503892938236596e-01 6.540052313531840023e-01 6.853899295935115266e-01
+3.047196724248331101e-01 6.574412743642752410e-01 6.861585944188198782e-01
+3.105583191416750322e-01 6.608501423712110912e-01 6.869242652383956704e-01
+3.165691502323280671e-01 6.642301693361829518e-01 6.876887756715628353e-01
+3.227495057337754214e-01 6.675799504508616034e-01 6.884592417367911832e-01
+3.291028263869451576e-01 6.708979305506697077e-01 6.892345854413708395e-01
+3.356230778965553774e-01 6.741831128414313978e-01 6.900227469259155866e-01
+3.423073210907732200e-01 6.774345078849072221e-01 6.908268664523685709e-01
+3.491497562850178760e-01 6.806514618485436374e-01 6.916515776970183493e-01
+3.561412724149042863e-01 6.838337923407922236e-01 6.925029303903535993e-01
+3.632736859780383298e-01 6.869814453814443445e-01 6.933849146347551562e-01
+3.705348353526126681e-01 6.900949744532235419e-01 6.943034006383217438e-01
+3.779122643387600178e-01 6.931752240960002975e-01 6.952632699407041983e-01
+3.853938489959773395e-01 6.962232375904670034e-01 6.962682692318554745e-01
+3.929633165309669440e-01 6.992408157519413026e-01 6.973239952904880523e-01
+4.006094014150666793e-01 7.022293785228771457e-01 6.984322280579721154e-01
+4.083159356621580693e-01 7.051912169731731073e-01 6.995972410351208870e-01
+4.160701459275524816e-01 7.081283984755933902e-01 7.008208963157127602e-01
+4.238620058191452378e-01 7.110427636723841704e-01 7.021034222566255867e-01
+4.316725578542053299e-01 7.139377080072604187e-01 7.034496090272048807e-01
+4.394994714751406240e-01 7.168142170649683953e-01 7.048555730206492731e-01
+4.473284906527433269e-01 7.196752689920701274e-01 7.063236640655090604e-01
+4.551495147015194864e-01 7.225233370762427221e-01 7.078541344797719681e-01
+4.629611457318438261e-01 7.253594732048370686e-01 7.094433480260243785e-01
+4.707534852399093972e-01 7.281862590349524877e-01 7.110918876863899785e-01
+4.785169352473264692e-01 7.310063519486531547e-01 7.128002486509635860e-01
+4.862541175206331334e-01 7.338201861642941193e-01 7.145637643240034809e-01
+4.939610178122765816e-01 7.366294113512334985e-01 7.163810048013540266e-01
+5.016310591672418218e-01 7.394362226143922356e-01 7.182517850494093414e-01
+5.092596479997313352e-01 7.422424836790947333e-01 7.201752147893440981e-01
+5.168502920324100636e-01 7.450484101459822206e-01 7.221473089909000720e-01
+5.244013381888714687e-01 7.478552285559243451e-01 7.241664310755349110e-01
+5.319115488689606375e-01 7.506640750099188297e-01 7.262309445597783242e-01
+5.393800515498496928e-01 7.534759997433319034e-01 7.283392250016084146e-01
+5.468044438041703703e-01 7.562923850920999502e-01 7.304903735115424457e-01
+5.541839357415714318e-01 7.591142604468823496e-01 7.326829886087474764e-01
+5.615214997302344635e-01 7.619417788590748808e-01 7.349143832677361710e-01
+5.688172658612942190e-01 7.647756983657992835e-01 7.371830791535139982e-01
+5.760715228891868378e-01 7.676167208435804579e-01 7.394876421854478243e-01
+5.832846906737159109e-01 7.704654971547720832e-01 7.418266842236616032e-01
+5.904572957555410673e-01 7.733226320830066669e-01 7.441988638633715292e-01
+5.975899498408560051e-01 7.761886890212207346e-01 7.466028864742004778e-01
+6.046833309596043593e-01 7.790641943891402077e-01 7.490375036038013912e-01
+6.117381670592270115e-01 7.819496417678519773e-01 7.515015118481881418e-01
+6.187552218007135174e-01 7.848454957475322624e-01 7.539937512752844517e-01
+6.257352823331345792e-01 7.877521954909707524e-01 7.565131034734732252e-01
+6.326791488358145532e-01 7.906701580203755464e-01 7.590584892833606157e-01
+6.395876256322543529e-01 7.935997812385013894e-01 7.616288662585695146e-01
+6.464615136961924247e-01 7.965414466975205832e-01 7.642232258900538699e-01
+6.533016043869401823e-01 7.994955221304983484e-01 7.668405906180205678e-01
+6.601086742679306285e-01 8.024623637610888149e-01 7.694800106460160105e-01
+6.668834808789664281e-01 8.054423184071207720e-01 7.721405605628438584e-01
+6.736267593487160754e-01 8.084357253933542875e-01 7.748213357696444037e-01
+6.803392197495884419e-01 8.114429182878516444e-01 7.775214487015286169e-01
+6.870215451120499361e-01 8.144642264752101068e-01 7.802400248254467430e-01
+6.936743900300211818e-01 8.174999765783720340e-01 7.829761983884004906e-01
+7.002974950415432609e-01 8.205507454139520096e-01 7.857294359175189813e-01
+7.068916498938800919e-01 8.236168074562510988e-01 7.884988108515800231e-01
+7.134582338528936418e-01 8.266982574818713125e-01 7.912831565844938853e-01
+7.199978016303433259e-01 8.297954164160811219e-01 7.940815874530331442e-01
+7.265108777000938156e-01 8.329086081072485381e-01 7.968932005645313899e-01
+7.329979578454549616e-01 8.360381599792610086e-01 7.997170690214260302e-01
+7.394595112267420278e-01 8.391844035374615984e-01 8.025522344938926800e-01
+7.458959830242087863e-01 8.423476747120355324e-01 8.053976990501692246e-01
+7.523077977331221744e-01 8.455283140156318877e-01 8.082524161470656665e-01
+7.586951667693938584e-01 8.487267253083131680e-01 8.111153620935316333e-01
+7.650577483984875027e-01 8.519434804026106978e-01 8.139856782226038145e-01
+7.713970926011407547e-01 8.551785852225586293e-01 8.168616329686009259e-01
+7.777135915287802792e-01 8.584323939893921951e-01 8.197418712821458175e-01
+7.840076454752769042e-01 8.617052627327101977e-01 8.226249282969148036e-01
+7.902796732960170045e-01 8.649975472537146937e-01 8.255092131742095551e-01
+7.965301248451132077e-01 8.683096003971411125e-01 8.283929915814087774e-01
+8.027594957590121760e-01 8.716417684881572203e-01 8.312743668855639978e-01
+8.089680559912207913e-01 8.749944751017242339e-01 8.341514052269850543e-01
+8.151567019468018982e-01 8.783679611555336164e-01 8.370217075803022544e-01
+8.213264334358614249e-01 8.817624446744987132e-01 8.398826380716230000e-01
+8.274781243204414327e-01 8.851781910186152791e-01 8.427314427493727278e-01
+8.336128134834004388e-01 8.886154231077250110e-01 8.455651044543932571e-01
+8.397317396975054749e-01 8.920743090766621863e-01 8.483803273271105505e-01
+8.458363795503203164e-01 8.955549480225133419e-01 8.511735264537213519e-01
+8.519285410708211659e-01 8.990573377468378258e-01 8.539407899678711500e-01
+8.580104271310651232e-01 9.025813506938162867e-01 8.566778627755414766e-01
+8.640844411003687497e-01 9.061267859275130565e-01 8.593803204948170515e-01
+8.701533853242351402e-01 9.096933004913555498e-01 8.620435066748899366e-01
+8.762204735799774546e-01 9.132803958502141439e-01 8.646625969293003644e-01
+8.822893382459134903e-01 9.168874047650978909e-01 8.672326784644417419e-01
+8.883640160698558219e-01 9.205134840158590848e-01 8.697488518860556628e-01
+8.944490897569347121e-01 9.241575627749747390e-01 8.722061884634622064e-01
+9.005494862654843669e-01 9.278183935417740891e-01 8.745999527261957285e-01
+9.066697518672085510e-01 9.314947526919318266e-01 8.769263428234910229e-01
+9.128147816848455331e-01 9.351852279261616552e-01 8.791818556054207257e-01
+9.189893388971293042e-01 9.388883614412766310e-01 8.813636793355511534e-01
+9.251978653035416444e-01 9.426027146413026303e-01 8.834697874077058755e-01
+9.314442876100802460e-01 9.463269403919151168e-01 8.854989876415102490e-01
+9.377318363007438595e-01 9.500598571817585603e-01 8.874509187201842231e-01
+9.440634086681402026e-01 9.538003778631106711e-01 8.893253867710815275e-01
+9.504401533195278029e-01 9.575479274112385086e-01 8.911237616446540111e-01
+9.568622268534309194e-01 9.613022612892393459e-01 8.928479377657454474e-01
+9.633289971376283178e-01 9.650634347497447640e-01 8.944999044139121391e-01
+9.698388693863758681e-01 9.688318688917866295e-01 8.960818313086871267e-01
+9.763893802744164629e-01 9.726083363283349881e-01 8.975959074248138769e-01
+9.829773205072419584e-01 9.763939321161484441e-01 8.990442065973827113e-01
+9.895988716426143972e-01 9.801900344288262401e-01 9.004285886132605832e-01
+9.962497442478134291e-01 9.839982596313375796e-01 9.017506391251587372e-01
+9.996253193176977137e-01 9.913711226010460953e-01 8.041012438578545307e-01
+9.969312990878144154e-01 9.865865913107011442e-01 7.958196545688069889e-01
+9.942533588637104680e-01 9.818135789307643746e-01 7.875317815897165952e-01
+9.915896776086415842e-01 9.770525904709529419e-01 7.792374356109948996e-01
+9.889384786221749879e-01 9.723041153469224041e-01 7.709364896057565586e-01
+9.862980251266783016e-01 9.675686302753326862e-01 7.626288656679628408e-01
+9.836666169060123144e-01 9.628466015967408476e-01 7.543145233681930462e-01
+9.810425876106124710e-01 9.581384871880828102e-01 7.459934495167190871e-01
+9.784237290846492519e-01 9.534448589527805273e-01 7.376670490866494845e-01
+9.758091741853186507e-01 9.487660072025493330e-01 7.293335612360094533e-01
+9.731976797213667263e-01 9.441023023821585314e-01 7.209921595340745837e-01
+9.705876565172376624e-01 9.394541905537218129e-01 7.126429103405369503e-01
+9.679775344953384097e-01 9.348221172710475813e-01 7.042858810456844587e-01
+9.653657609756586266e-01 9.302065285603877687e-01 6.959211353452218196e-01
+9.627508763245108403e-01 9.256078555762781157e-01 6.875485248304887831e-01
+9.601317913231469658e-01 9.210264571207541495e-01 6.791669211618720503e-01
+9.575068348330096901e-01 9.164628209777989643e-01 6.707767168399573210e-01
+9.548744491996995487e-01 9.119174176425877132e-01 6.623780173986024700e-01
+9.522330808045905703e-01 9.073907239128325974e-01 6.539709177027834830e-01
+9.495811770290348841e-01 9.028832240271246201e-01 6.455555018977681137e-01
+9.469171829214290126e-01 8.983954108674836458e-01 6.371318441574638225e-01
+9.442402190659517913e-01 8.939276490907958062e-01 6.286979645113369708e-01
+9.415486437855169477e-01 8.894804711503382366e-01 6.202539985663386712e-01
+9.388403761261178149e-01 8.850545069722992597e-01 6.118014161078325630e-01
+9.361137658947894513e-01 8.806503085987659185e-01 6.033403762527677072e-01
+9.333671427931780062e-01 8.762684428171652051e-01 5.948710444843188228e-01
+9.305988122871574619e-01 8.719094924143574454e-01 5.863935979844183688e-01
+9.278070514355759579e-01 8.675740573997056115e-01 5.779082318269497254e-01
+9.249901047433721768e-01 8.632627561697012730e-01 5.694151660419812799e-01
+9.221469800733509414e-01 8.589760860685742294e-01 5.609116482547054083e-01
+9.192753048560652340e-01 8.547148108589553983e-01 5.523997440377725887e-01
+9.163728560349155838e-01 8.504796735679325259e-01 5.438810466983201586e-01
+9.134376867190158178e-01 8.462713800742609482e-01 5.353560484875481418e-01
+9.104678046010745707e-01 8.420906570028113824e-01 5.268253096213930675e-01
+9.074611700430375016e-01 8.379382516634488187e-01 5.182894693241438810e-01
+9.044156948810763152e-01 8.338149316350844664e-01 5.097492574011085464e-01
+9.013292420875533839e-01 8.297214839374013051e-01 5.012055062134753713e-01
+8.981996264328737656e-01 8.256587137313211588e-01 4.926591628979440363e-01
+8.950246162923013449e-01 8.216274424893472705e-01 4.841113016411668357e-01
+8.918019367410795484e-01 8.176285055788921063e-01 4.755631357855747976e-01
+8.885292740744069606e-01 8.136627492060259925e-01 4.670160295098501613e-01
+8.852042818763621312e-01 8.097310266740884721e-01 4.584715087957387802e-01
+8.818245887426444662e-01 8.058341939216442373e-01 4.499312713647861117e-01
+8.783878077356160885e-01 8.019731043176190344e-01 4.413971952459587733e-01
+8.748915476159051519e-01 7.981486027081815537e-01 4.328713456201330745e-01
+8.713334258529761289e-01 7.943615187300834268e-01 4.243559795823733105e-01
+8.677110833677242896e-01 7.906126594284177411e-01 4.158535484698712703e-01
+8.640222009043423412e-01 7.869028012426558805e-01 4.073666974243692063e-01
+8.602645168678531018e-01 7.832326814525909509e-01 3.988982618942717440e-01
+8.564358463998196225e-01 7.796029892044549214e-01 3.904512608343593816e-01
+8.525341014005127782e-01 7.760143562656642846e-01 3.820288864300384613e-01
+8.485573111443696082e-01 7.724673476829161389e-01 3.736344902575098326e-01
+8.445036430802366212e-01 7.689624525410815314e-01 3.652715658890242079e-01
+8.403714233625397823e-01 7.655000750378188057e-01 3.569437280604416673e-01
+8.361591566273345322e-01 7.620805260995172636e-01 3.486546886323707573e-01
+8.318655445115968883e-01 7.587040157667198637e-01 3.404082296912668837e-01
+8.274895024172935765e-01 7.553706465705579687e-01 3.322081742472747790e-01
+8.230301740454328829e-01 7.520804081054507373e-01 3.240583550855133943e-01
+8.184868212302832680e-01 7.488332616294635091e-01 3.159617825674137515e-01
+8.138590110822148116e-01 7.456289896604103573e-01 3.079221377655331771e-01
+8.091468181242912339e-01 7.424670871619818424e-01 2.999443469091602199e-01
+8.043504122379883103e-01 7.393470563716729727e-01 2.920319686576324791e-01
+7.994702184716161453e-01 7.362682828578653860e-01 2.841884012704181672e-01
+7.945069109411802000e-01 7.332300399833050486e-01 2.764168555307422448e-01
+7.894614033518293494e-01 7.302314948629916591e-01 2.687203309843908539e-01
+7.843348364120679150e-01 7.272717156577747089e-01 2.611015959667907227e-01
+7.791285260147496894e-01 7.243496994364320152e-01 2.535630684860531447e-01
+7.738440801480908071e-01 7.214643092911102729e-01 2.461071963221510561e-01
+7.684833208817296590e-01 7.186143199358207001e-01 2.387362039122769009e-01
+7.630481315977482026e-01 7.157984953860191402e-01 2.314517734491695622e-01
+7.575405230514773436e-01 7.130155515836559266e-01 2.242553190375982108e-01
+7.519626112766101267e-01 7.102641669372077304e-01 2.171479941172158035e-01
+7.463165956980535309e-01 7.075429925763011552e-01 2.101307026608347228e-01
+7.406047378440419049e-01 7.048506621488696000e-01 2.032041138079452858e-01
+7.348297350913484127e-01 7.021856197788983733e-01 1.963692968886621149e-01
+7.289936844492124202e-01 6.995466025992004289e-01 1.896260481458106884e-01
+7.230988483362374986e-01 6.969322773880018973e-01 1.829743149302962002e-01
+7.171475322086006132e-01 6.943412998823550453e-01 1.764139943240976283e-01
+7.111420143928013360e-01 6.917723467781027313e-01 1.699448658068684892e-01
+7.050845338608371371e-01 6.892241206236302542e-01 1.635666199792324693e-01
+6.989772797030316953e-01 6.866953538838792559e-01 1.572788888364401172e-01
+6.928223822517928232e-01 6.841848122132092591e-01 1.510812776309110872e-01
+6.866220524799201419e-01 6.816912363109779438e-01 1.449735254345622115e-01
+6.803786701652846380e-01 6.792133090629258740e-01 1.389555620195359609e-01
+6.740936196655853418e-01 6.767501306945983286e-01 1.330266252977832520e-01
+6.677687244983904202e-01 6.743006234739316040e-01 1.271865644636745452e-01
+6.614057275351008514e-01 6.718637487365417549e-01 1.214353970802317662e-01
+6.550062900453353931e-01 6.694385066322930955e-01 1.157733573283348805e-01
+6.485719915801509972e-01 6.670239355272904458e-01 1.102009495253571669e-01
+6.421043305819508218e-01 6.646191111168818777e-01 1.047190080781650323e-01
+6.356047256163376291e-01 6.622231453008022850e-01 9.932876523540395963e-02
+6.290745171295046845e-01 6.598351848668921882e-01 9.403192821288078318e-02
+6.225149696438274649e-01 6.574544100249212208e-01 8.883076747185855715e-02
+6.159272743135092432e-01 6.550800328272597950e-01 8.372821811088401733e-02
+6.093126663293514378e-01 6.527112545185101977e-01 7.872799706657532259e-02
+6.026723170612737768e-01 6.503473055396404856e-01 7.383469856963406630e-02
+5.960069280976730832e-01 6.479875866853281874e-01 6.905400752442764079e-02
+5.893174254692321590e-01 6.456314203776034599e-01 6.439287527349069062e-02
+5.826046784844106652e-01 6.432781520370909334e-01 5.985968924725062340e-02
+5.758695032242261425e-01 6.409271483905801814e-01 5.546448455059219823e-02
+5.691126660872921628e-01 6.385777958070207871e-01 5.121916775709036557e-02
+5.623348873683923221e-01 6.362294986703330713e-01 4.713774156788400754e-02
+5.555368448583254404e-01 6.338816777957024806e-01 4.323651096469569716e-02
+5.487191774565705060e-01 6.315337688945173999e-01 3.952487864258176498e-02
+5.418824887917018662e-01 6.291852210919098853e-01 3.612051121019213551e-02
+5.350273508472259687e-01 6.268354954999130202e-01 3.311399967360150604e-02
+5.281543075929241438e-01 6.244840638484698836e-01 3.049096132752013993e-02
+5.212638786236020172e-01 6.221304071760309640e-01 2.823775650583685778e-02
+5.143565628087404251e-01 6.197740145810481938e-01 2.634144880489198981e-02
+5.074328419576341620e-01 6.174143820354919265e-01 2.478976657062584646e-02
+5.004931845054064743e-01 6.150510112614009373e-01 2.357106560875196072e-02
+4.935380492257968599e-01 6.126834086714986194e-01 2.267429306479169446e-02
+4.865677337149327264e-01 6.103111278318402722e-01 2.208918519158591109e-02
+4.795827833081557912e-01 6.079336535225863258e-01 2.180564619063158835e-02
+4.725836555273193462e-01 6.055504983495709759e-01 2.181419194008693205e-02
+4.655708088649732068e-01 6.031611773523495312e-01 2.210580170001537684e-02
+4.585447116306416437e-01 6.007652058968021569e-01 2.267187969798983502e-02
+4.515058459835388782e-01 5.983620990282547680e-01 2.350422445657735990e-02
+4.444547120266517104e-01 5.959513709030562767e-01 2.459499875403014374e-02
+4.373918319618326778e-01 5.935325343022211930e-01 2.593670014651517156e-02
+4.303177543037495223e-01 5.911051002310937497e-01 2.752213198538535840e-02
+4.232330581488202292e-01 5.886685776092354105e-01 2.934437486930205341e-02
+4.161383574931313278e-01 5.862224730549979723e-01 3.139675847884770832e-02
+4.090343055913983616e-01 5.837662907693373926e-01 3.367283375013734037e-02
+4.019215993467592507e-01 5.812995325235387201e-01 3.616634535426579283e-02
+3.948009837190709082e-01 5.788216977554323517e-01 3.887120446073646235e-02
+3.876732561372571162e-01 5.763322837785355146e-01 4.174672181203834681e-02
+3.805386564470196742e-01 5.738309171411589693e-01 4.468566878513501733e-02
+3.733986391498164137e-01 5.713169711328536238e-01 4.768049787246867594e-02
+3.662542351622480874e-01 5.687899279044026368e-01 5.071835758395210753e-02
+3.591065040473656045e-01 5.662492786415918022e-01 5.378828392041421630e-02
+3.519565800474088735e-01 5.636945152858550134e-01 5.688085721725138350e-02
+3.448056760545124555e-01 5.611251315161035480e-01 5.998797256299469999e-02
+3.376550874229136134e-01 5.585406238589376571e-01 6.310263770132876204e-02
+3.305061956006355439e-01 5.559404929241524851e-01 6.621879773242350664e-02
+3.233604715607960034e-01 5.533242447607230607e-01 6.933118466356372189e-02
+3.162194790161148017e-01 5.506913923265978061e-01 7.243518928216058361e-02
+3.090846039651472532e-01 5.480415027343880086e-01 7.552721746757809496e-02
+3.019574288899705139e-01 5.453741321890830385e-01 7.860394456462099777e-02
+2.948403194287022577e-01 5.426887379559618418e-01 8.166128713902018332e-02
+2.877352499045566225e-01 5.399848761881764769e-01 8.469633286585029341e-02
+2.806442994214729536e-01 5.372621189537871711e-01 8.770643445761908130e-02
+2.735696535538801322e-01 5.345200561570193631e-01 9.068916512095565041e-02
+2.665136059049172390e-01 5.317582974656462902e-01 9.364228167891575083e-02
+2.594785595977833204e-01 5.289764742223507232e-01 9.656369418956520234e-02
+2.524670287821700332e-01 5.261742413169625543e-01 9.945144107016240520e-02
+2.454813557062531792e-01 5.233513142453691813e-01 1.023041162767710510e-01
+2.385245828710040317e-01 5.205073603004944927e-01 1.051194831525161522e-01
+2.315996737216303170e-01 5.176421037021866622e-01 1.078956959800008442e-01
+2.247096070811669399e-01 5.147553123030387257e-01 1.106311405318080310e-01
+2.178574824667257048e-01 5.118467857547527311e-01 1.133242655958566492e-01
+2.110465244393363582e-01 5.089163566221597268e-01 1.159735773093806543e-01
+2.042800881777394606e-01 5.059638913007615812e-01 1.185776351459725819e-01
+1.975616665475327660e-01 5.029892907239723598e-01 1.211350492651094846e-01
+1.908950317685597087e-01 4.999924798399172921e-01 1.236442618572499708e-01
+1.842839642352289697e-01 4.969734333710090213e-01 1.261039978961912833e-01
+1.777324020667393756e-01 4.939321620495928378e-01 1.285130506256617899e-01
+1.712444848635372441e-01 4.908687102327232155e-01 1.308702368677320538e-01
+1.648245567449286297e-01 4.877831568788963401e-01 1.331744245804179216e-01
+1.584771896665797541e-01 4.846756148389082530e-01 1.354245338303780855e-01
+1.522072108246106115e-01 4.815462299379932865e-01 1.376195378692431359e-01
+1.460197345452351747e-01 4.783951798632230523e-01 1.397584642177332193e-01
+1.399204939260773328e-01 4.752226638142488802e-01 1.418397751955981501e-01
+1.339151022806790436e-01 4.720289313790105301e-01 1.438629155677119409e-01
+1.280096392738992173e-01 4.688142535267130762e-01 1.458273227721058329e-01
+1.222107627052576584e-01 4.655789223639808516e-01 1.477322650340249788e-01
+1.165256528622910237e-01 4.623232537320298152e-01 1.495770677617926092e-01
+1.109620746853187123e-01 4.590475853271560047e-01 1.513611132825743999e-01
+1.055284430115649430e-01 4.557522747771929894e-01 1.530838402977779955e-01
+1.002338888313226428e-01 4.524376976954341267e-01 1.547447430577089666e-01
+9.508832342249537439e-02 4.491042457325262194e-01 1.563433702619193288e-01
+9.010250937510871916e-02 4.457523324675090604e-01 1.578790892676192326e-01
+8.528801833375249108e-02 4.423823989146767888e-01 1.593510674113139958e-01
+8.065727940861416867e-02 4.389948528858526600e-01 1.607597457256386420e-01
+7.622371216564308161e-02 4.355901307746828932e-01 1.621048834368656322e-01
+7.200158271604989446e-02 4.321686757028083692e-01 1.633862841279137557e-01
+6.800589086138220107e-02 4.287309359317861834e-01 1.646037933778843332e-01
+6.425218103335716968e-02 4.252773633715483670e-01 1.657572962977645059e-01
+6.075626148835750612e-02 4.218084121914437157e-01 1.668467149892300661e-01
+5.753381975108700502e-02 4.183245375382101949e-01 1.678720059529140995e-01
+5.459992971435845971e-02 4.148261943636451510e-01 1.688331574715942474e-01
+5.196845773512390881e-02 4.113138363632788397e-01 1.697301869925023354e-01
+4.965139124510086627e-02 4.077879150260529384e-01 1.705631385315065085e-01
+4.765813208284918473e-02 4.042488787938245398e-01 1.713320801202671551e-01
+4.599481449154869256e-02 4.006971723285012166e-01 1.720371013157572515e-01
+4.466371969486728627e-02 3.971332358837184051e-01 1.726783107897287561e-01
+4.366274483561478209e-02 3.935575133766276990e-01 1.732557671739120286e-01
+4.298497468310508857e-02 3.899704687794856572e-01 1.737693705957654433e-01
+4.262017645185838671e-02 3.863724827023667929e-01 1.742196255705478480e-01
+4.255352467768171859e-02 3.827639728113220174e-01 1.746066936456434071e-01
+4.276673184831410873e-02 3.791453506945430818e-01 1.749307448926006592e-01
+4.323878239983177524e-02 3.755170217599948512e-01 1.751919563188165385e-01
+4.394675081101364483e-02 3.718793851987791665e-01 1.753905104335057585e-01
+4.486662442701292580e-02 3.682328340080037177e-01 1.755265939730583369e-01
+4.597406436707644067e-02 3.645777550668193867e-01 1.756003967899375517e-01
+4.724505801823831314e-02 3.609145292591857124e-01 1.756121109084000098e-01
+4.865643856140024898e-02 3.572435316368365310e-01 1.755619297495205344e-01
+5.018626632042253594e-02 3.535651316158259783e-01 1.754500475272437465e-01
+5.181408104443557122e-02 3.498796931999255677e-01 1.752766588164567374e-01
+5.352104295989750654e-02 3.461875752240315962e-01 1.750419582933170903e-01
+5.528998425553303259e-02 3.424891316106106198e-01 1.747461406473147794e-01
+5.710539287663336100e-02 3.387847116320403806e-01 1.743894006636908245e-01
+5.895334846203271334e-02 3.350746601715560713e-01 1.739719334739151524e-01
+6.082142709649813322e-02 3.313593179753057116e-01 1.734939349708606859e-01
+6.269858808390260663e-02 3.276390218878380001e-01 1.729556023841174184e-01
+6.457505267241087088e-02 3.239141050631572094e-01 1.723571350094970367e-01
+6.644218183629055363e-02 3.201848971432968427e-01 1.716987350852014205e-01
+6.829235792686130790e-02 3.164517243962254311e-01 1.709806088053268391e-01
+7.011887323479765177e-02 3.127149098048046527e-01 1.702029674593475428e-01
+7.191582719453681882e-02 3.089747730984767071e-01 1.693660286839586415e-01
+7.367740139700959534e-02 3.052317018390342529e-01 1.684698187582648887e-01
+7.539908659075802988e-02 3.014860094828903936e-01 1.675145933863426417e-01
+7.707730571895973770e-02 2.977379606831319081e-01 1.665007348086736949e-01
+7.870852955781817983e-02 2.939878648964006636e-01 1.654284970811750188e-01
+8.028965953863020921e-02 2.902360278178472974e-01 1.642981478645798299e-01
+8.181797774419891089e-02 2.864827509313960796e-01 1.631099700093367744e-01
+8.329110360766753263e-02 2.827283309501391617e-01 1.618642630930951787e-01
+8.470695659424687385e-02 2.789730591425138573e-01 1.605613448745624727e-01
+8.606372418387428502e-02 2.752172205414125661e-01 1.592015526248838075e-01
+8.735983452008261319e-02 2.714610930351273321e-01 1.577852442954886525e-01
+8.859393314120664331e-02 2.677049463410028363e-01 1.563127994796906506e-01
+8.976486326081492551e-02 2.639490408648579312e-01 1.547846201243904263e-01
+9.087164911293293956e-02 2.601936264515474218e-01 1.532011309481255412e-01
+9.191348192284298779e-02 2.564389410344570241e-01 1.515627795225681362e-01
+9.288704312629730842e-02 2.526856315239155992e-01 1.498693699931691048e-01
+9.379283018859288501e-02 2.489337717503207204e-01 1.481216905842226428e-01
+9.463163644057562274e-02 2.451833792964967507e-01 1.463205652098015508e-01
+9.540318566942779244e-02 2.414346401225993533e-01 1.444665315338557743e-01
+9.610732643393554708e-02 2.376877206774311024e-01 1.425601463139360425e-01
+9.674402718144511915e-02 2.339427661170380146e-01 1.406019829499289553e-01
+9.731337192794831115e-02 2.301998985206034631e-01 1.385926284969124511e-01
+9.781527030012060475e-02 2.264592671684997338e-01 1.365326231802845014e-01
+9.824358966693200190e-02 2.227221381992704474e-01 1.344213498047777955e-01
+9.860476008591259611e-02 2.189874851640599696e-01 1.322606854144605382e-01
+9.889926458171927059e-02 2.152553323101172311e-01 1.300512525669721697e-01
+9.912768720083675600e-02 2.115256719866073221e-01 1.277936680974917916e-01
+9.929070945217863264e-02 2.077984630697710111e-01 1.254885372707029156e-01
+9.938536693535210409e-02 2.040743841747782450e-01 1.231359093599569132e-01
+9.940987528000957973e-02 2.003539028956775048e-01 1.207361104943659447e-01
+9.937074432198822471e-02 1.966357733029605592e-01 1.182905659078862248e-01
+9.926899950314096999e-02 1.929198155529378012e-01 1.157998086675786908e-01
+9.910574746809375224e-02 1.892058087816931022e-01 1.132643300609986470e-01
+9.887273365069987330e-02 1.854955476839638961e-01 1.106837415179452166e-01
+9.857702759168757156e-02 1.817875303344013982e-01 1.080592207487474365e-01
+9.822269753736714848e-02 1.780808239249605796e-01 1.053914161709541830e-01
+9.781113633355650872e-02 1.743750377566490040e-01 1.026806351620476176e-01
+9.733238005935909709e-02 1.706723687329834982e-01 9.992670564763897478e-02
+9.679537330416121410e-02 1.669706979907544520e-01 9.713043093317094701e-02
+9.620476860769888727e-02 1.632687911401897729e-01 9.429209466525781402e-02
+9.555840111219859878e-02 1.595669718044100127e-01 9.141177435708905397e-02
+9.484851695793727888e-02 1.558669291806107915e-01 8.848983773912671991e-02
+9.408911153954402362e-02 1.521650578561620781e-01 8.552628708305054506e-02
+9.328192094338655371e-02 1.484606091474970080e-01 8.252094903627574252e-02
+9.241015243151923242e-02 1.447574737795673805e-01 7.947496936453349314e-02
+9.149313879389489590e-02 1.410504572025015335e-01 7.638732537156053826e-02
+9.053276383981978537e-02 1.373386075843833487e-01 7.325761429945673586e-02];
+
+   case 'cur'
+      RGB = [8.225559928700268419e-02 1.149244079727295142e-01 2.647901677800857390e-01
+8.312616532498406929e-02 1.190383729463048712e-01 2.668628892216621806e-01
+8.400180885962132971e-02 1.231074880892656653e-01 2.689526699064171411e-01
+8.487294239495335457e-02 1.271387529060027943e-01 2.710541708402016137e-01
+8.574385298640457842e-02 1.311333174761502018e-01 2.731691209373900975e-01
+8.661249189260347703e-02 1.350944971238551839e-01 2.752961432065319514e-01
+8.747533041314431435e-02 1.390258052165279645e-01 2.774332852121961235e-01
+8.833858505105957049e-02 1.429270910011002649e-01 2.795831537842536352e-01
+8.919012906146844832e-02 1.468043594975814992e-01 2.817400195447572475e-01
+9.004099984169053328e-02 1.506555099870153513e-01 2.839086654207542693e-01
+9.088231952195491292e-02 1.544850037627045203e-01 2.860850125083750362e-01
+9.171714479257989105e-02 1.582931942356169963e-01 2.882702798507874586e-01
+9.254607948203208423e-02 1.620811665705463311e-01 2.904645825457518593e-01
+9.336173420340779239e-02 1.658523274558137695e-01 2.926648040593683997e-01
+9.417284157369981701e-02 1.696050767223750977e-01 2.948744162588470830e-01
+9.496899572502048859e-02 1.733434725855039771e-01 2.970892156823352059e-01
+9.575619444438937533e-02 1.770666290075273708e-01 2.993115284087380368e-01
+9.653316478613682694e-02 1.807757562460599599e-01 3.015407883893915231e-01
+9.729328810023782359e-02 1.844734436312414905e-01 3.037745103921251633e-01
+9.804493118338306057e-02 1.881580898967480098e-01 3.060157402408537064e-01
+9.877832247043097369e-02 1.918329889556127654e-01 3.082609202522414993e-01
+9.949803783218733044e-02 1.954975058870322413e-01 3.105116763778897337e-01
+1.002054858430543316e-01 1.991518634625495388e-01 3.127684262427183892e-01
+1.008900241588315538e-01 2.027992883367119026e-01 3.150275553737127421e-01
+1.015620277820400430e-01 2.064376400065636719e-01 3.172925125709148420e-01
+1.022150454689789434e-01 2.100689913462399083e-01 3.195611195376787395e-01
+1.028468845169810686e-01 2.136942776676366007e-01 3.218326666201724029e-01
+1.034637486817424901e-01 2.173124203806320875e-01 3.241090419310820314e-01
+1.040556247342821483e-01 2.209261472703716311e-01 3.263871052200472134e-01
+1.046272664909374817e-01 2.245346804307608024e-01 3.286682704446855507e-01
+1.051814556007013568e-01 2.281377376539149293e-01 3.309532535866355762e-01
+1.057055066316897329e-01 2.317384538919968207e-01 3.332383062494437276e-01
+1.062093640276061124e-01 2.353348932541681759e-01 3.355262248019345583e-01
+1.066927192498384747e-01 2.389274243968986799e-01 3.378167764830257158e-01
+1.071428862568302165e-01 2.425189920877232619e-01 3.401063918909076889e-01
+1.075713140889580088e-01 2.461073946949010050e-01 3.423980926413837667e-01
+1.079763885418836000e-01 2.496932209057829977e-01 3.446912766824791197e-01
+1.083460004297124302e-01 2.532791299120676354e-01 3.469826761312421182e-01
+1.086913329090623825e-01 2.568630402753477870e-01 3.492750549670107785e-01
+1.090116287119651528e-01 2.604453159192556266e-01 3.515680214913912693e-01
+1.092932808921200649e-01 2.640287615628073015e-01 3.538580573547516761e-01
+1.095478763802813504e-01 2.676112773022403801e-01 3.561478615212890775e-01
+1.097748910210358808e-01 2.711931376089152246e-01 3.584370856671010852e-01
+1.099635342633853707e-01 2.747764822051754763e-01 3.607229892872333421e-01
+1.101198294511886444e-01 2.783603021914852760e-01 3.630068099573608986e-01
+1.102460152182262176e-01 2.819443225282238785e-01 3.652888319764409086e-01
+1.103361572207214036e-01 2.855297163446686715e-01 3.675674754730824945e-01
+1.103867349279119559e-01 2.891171759115234718e-01 3.698417464033080804e-01
+1.104047114339987423e-01 2.927055780381122019e-01 3.721129484539063559e-01
+1.103893448894039397e-01 2.962951553198432397e-01 3.743806401368951486e-01
+1.103290785873510815e-01 2.998879083652261635e-01 3.766420819050353419e-01
+1.102317288825286901e-01 3.034825829921489193e-01 3.788986922133656954e-01
+1.100986315611906241e-01 3.070790351009552999e-01 3.811504545068737926e-01
+1.099286556573810802e-01 3.106775192369479188e-01 3.833968205472055302e-01
+1.097092559883022234e-01 3.142800415550652815e-01 3.856349205402823110e-01
+1.094518269158459012e-01 3.178848431435130073e-01 3.878667847148202785e-01
+1.091556968975302966e-01 3.214920812428978536e-01 3.900919340676701208e-01
+1.088202096165073185e-01 3.251019032868823211e-01 3.923098843692563453e-01
+1.084337294201929702e-01 3.287160421828903556e-01 3.945179917556369542e-01
+1.080052802278752000e-01 3.323331728550899533e-01 3.967176863054378000e-01
+1.075355258379605550e-01 3.359532282299735328e-01 3.989087127976621017e-01
+1.070239159802940931e-01 3.395763147211236510e-01 4.010905648833596460e-01
+1.064666158592602885e-01 3.432029795356145718e-01 4.032620996037361571e-01
+1.058582376509708545e-01 3.468339423292918222e-01 4.054218838433404359e-01
+1.052065591856250482e-01 3.504681464569319171e-01 4.075709632165070984e-01
+1.045112201334900126e-01 3.541056562885774861e-01 4.097088092956981398e-01
+1.037719209811681642e-01 3.577465259466254266e-01 4.118348877541359032e-01
+1.029884320307208612e-01 3.613907991323849767e-01 4.139486582680417803e-01
+1.021513134274243950e-01 3.650396452261166491e-01 4.160478671051655586e-01
+1.012689167529539358e-01 3.686920150348446112e-01 4.181335233490640069e-01
+1.003423119365809690e-01 3.723477936835040136e-01 4.202052548968338574e-01
+9.937169919107982641e-02 3.760069784468507703e-01 4.222625006231348066e-01
+9.835741884413440328e-02 3.796695548525758634e-01 4.243046936775203282e-01
+9.729997123759509536e-02 3.833354963232004087e-01 4.263312615677605777e-01
+9.620003933222870396e-02 3.870047637840662302e-01 4.283416262899890081e-01
+9.505172587236093706e-02 3.906780327832828914e-01 4.303339883746660766e-01
+9.386233813144639893e-02 3.943545459798681874e-01 4.323088724355508838e-01
+9.263427266200571775e-02 3.980341179549674036e-01 4.342658626828024837e-01
+9.136927887187012987e-02 4.017166535612498035e-01 4.362043674792987491e-01
+9.006945702453716951e-02 4.054020428715323643e-01 4.381237915805220595e-01
+8.873730500447504776e-02 4.090901606132017476e-01 4.400235366709063789e-01
+8.737577058920215078e-02 4.127808655736769361e-01 4.419030019956885491e-01
+8.598830961259482097e-02 4.164739999785817548e-01 4.437615850971945997e-01
+8.457895032121595658e-02 4.201693888446985103e-01 4.455986826648858368e-01
+8.315236408743081897e-02 4.238668393102046350e-01 4.474136915088433031e-01
+8.171394242970148047e-02 4.275661399451892164e-01 4.492060096666721791e-01
+8.026987997778653461e-02 4.312670600459782566e-01 4.509750376540915817e-01
+7.882726258105521300e-02 4.349693489173894201e-01 4.527201798696426915e-01
+7.739415915996109008e-02 4.386727351476746306e-01 4.544408461640829233e-01
+7.597971511267428979e-02 4.423769258816079852e-01 4.561364535850265800e-01
+7.459424408415230023e-02 4.460816060979165276e-01 4.578064283072901808e-01
+7.324931366840245484e-02 4.497864378980456768e-01 4.594502077591564038e-01
+7.195781915786156335e-02 4.534910598140922677e-01 4.610672429543411499e-01
+7.073403782879061907e-02 4.571950861446216208e-01 4.626570010388615928e-01
+6.959365457471067273e-02 4.608981063279830592e-01 4.642189680611767399e-01
+6.855374817251533304e-02 4.645996843636931994e-01 4.657526519729214276e-01
+6.763272639280798471e-02 4.682993582933911436e-01 4.672575858662252890e-01
+6.685019795786503738e-02 4.719966397538147285e-01 4.687333314519904204e-01
+6.622677049492370349e-02 4.756910136151853430e-01 4.701794827815656830e-01
+6.577673858968982601e-02 4.793824370720338179e-01 4.715941633832017588e-01
+6.552566064603559948e-02 4.830700650743400826e-01 4.729777438223161101e-01
+6.549820807888259711e-02 4.867530881918184504e-01 4.743305399824718216e-01
+6.571558023976076246e-02 4.904308747270616498e-01 4.756523204648347991e-01
+6.619782080433814220e-02 4.941027658684106760e-01 4.769429100625798834e-01
+6.696293828126623215e-02 4.977680989992983585e-01 4.782021118153178540e-01
+6.801610562745827315e-02 5.014269919387287500e-01 4.794267081520149909e-01
+6.938287907938911481e-02 5.050778255979795350e-01 4.806197953737798012e-01
+7.107372065756567547e-02 5.087198306495862576e-01 4.817814896929000779e-01
+7.309574065371191032e-02 5.123522156200341904e-01 4.829119931483520367e-01
+7.544312997722565917e-02 5.159750173542567708e-01 4.840076729265158639e-01
+7.812721320542403980e-02 5.195865216476734938e-01 4.850725749743695636e-01
+8.114572394888117102e-02 5.231858403590214923e-01 4.861073630469811557e-01
+8.448832972524200624e-02 5.267726392289812098e-01 4.871097239159773440e-01
+8.815110303261089464e-02 5.303457163263245455e-01 4.880817131293228583e-01
+9.212706115366336990e-02 5.339038791645212001e-01 4.890257976801760109e-01
+9.640117372078826907e-02 5.374467824904106683e-01 4.899392661237967350e-01
+1.009651127375016111e-01 5.409730397620680087e-01 4.908260102866368046e-01
+1.058058868411170528e-01 5.444817357603629615e-01 4.916873206428047927e-01
+1.109091719419828259e-01 5.479722539284174188e-01 4.925220286879308795e-01
+1.162631754482068569e-01 5.514432364311973034e-01 4.933355557142476422e-01
+1.218535592637135234e-01 5.548942058020517321e-01 4.941256571865651481e-01
+1.276672732366210816e-01 5.583239554235875923e-01 4.948978636889357907e-01
+1.336912106530599997e-01 5.617318570854707982e-01 4.956519172255148820e-01
+1.399119531735926458e-01 5.651170059000043544e-01 4.963918396953513335e-01
+1.463171276735238113e-01 5.684787369209851615e-01 4.971190242696297834e-01
+1.528937099908951325e-01 5.718163393279495077e-01 4.978371217540351057e-01
+1.596300036906863895e-01 5.751292412901443107e-01 4.985481743532478860e-01
+1.665133003434038084e-01 5.784169089899582339e-01 4.992561455145328453e-01
+1.735328783097749850e-01 5.816789154432452369e-01 4.999631315071642601e-01
+1.806761031013389140e-01 5.849149331180006905e-01 5.006736479698321585e-01
+1.879334378838529440e-01 5.881246912104457492e-01 5.013896313522919757e-01
+1.952924636272905801e-01 5.913080959200207598e-01 5.021159025525618880e-01
+2.027443124327554802e-01 5.944650539898058694e-01 5.028546409645925364e-01
+2.102776619158149840e-01 5.975956842983582984e-01 5.036102222376415138e-01
+2.178835011739876371e-01 6.007001216855215597e-01 5.043855354959408954e-01
+2.255521696872271886e-01 6.037786523436265984e-01 5.051841613954050070e-01
+2.332749143253212143e-01 6.068316286127126702e-01 5.060092633925864503e-01
+2.410430130087069522e-01 6.098595200479223211e-01 5.068641518721540562e-01
+2.488489441844971561e-01 6.128628192186393875e-01 5.077515718650474907e-01
+2.566840197606024554e-01 6.158422311486778655e-01 5.086750547256451149e-01
+2.645425291505308918e-01 6.187983086880044503e-01 5.096365792929340444e-01
+2.724162323640093031e-01 6.217319406932720893e-01 5.106395912364674050e-01
+2.803003746086680792e-01 6.246437759477415641e-01 5.116857725517640620e-01
+2.881881143962810587e-01 6.275347641630057982e-01 5.127779478270290126e-01
+2.960748324121407205e-01 6.304057046767445049e-01 5.139178767894679867e-01
+3.039555214161791530e-01 6.332575133378499643e-01 5.151075596956975478e-01
+3.118254758119217707e-01 6.360911463304157465e-01 5.163488722475468862e-01
+3.196814435511296515e-01 6.389074409416231060e-01 5.176430585409529384e-01
+3.275188103490194735e-01 6.417074699067215615e-01 5.189919719540163623e-01
+3.353355552299603914e-01 6.444920106677175520e-01 5.203963563323180663e-01
+3.431277348645550562e-01 6.472621506436356809e-01 5.218577640245062321e-01
+3.508936232465371674e-01 6.500187029053001719e-01 5.233768303957324619e-01
+3.586308928051362699e-01 6.527625972609284455e-01 5.249544352005411918e-01
+3.663368289249827603e-01 6.554948605761221625e-01 5.265915743478537525e-01
+3.740119682194762429e-01 6.582160193662682790e-01 5.282880419647097980e-01
+3.816510562742471135e-01 6.609275747235534570e-01 5.300456830101799577e-01
+3.892580517875900981e-01 6.636294950347043642e-01 5.318631054022345817e-01
+3.968261890078971788e-01 6.663236061846555813e-01 5.337425455110953454e-01
+4.043593499172888350e-01 6.690098785171258999e-01 5.356826761355167887e-01
+4.118554481683104340e-01 6.716893377862352965e-01 5.376841277217632165e-01
+4.193119538935562440e-01 6.743631277083362852e-01 5.397475699351562684e-01
+4.267325988888523436e-01 6.770311866202418649e-01 5.418718349209995511e-01
+4.341129901223799714e-01 6.796950319734580415e-01 5.440580596655568701e-01
+4.414547339722453279e-01 6.823550079810395408e-01 5.463056567639269501e-01
+4.487598229028739172e-01 6.850113432670585922e-01 5.486140038956078824e-01
+4.560240745098563253e-01 6.876655632831355502e-01 5.509839689679422170e-01
+4.632498634530364812e-01 6.903178139102768007e-01 5.534147775766539157e-01
+4.704389351347622594e-01 6.929683367461523247e-01 5.559058726658481220e-01
+4.775890398856753039e-01 6.956182556045346077e-01 5.584575291026864230e-01
+4.846997162615552246e-01 6.982683108816961637e-01 5.610695620964348818e-01
+4.917741270603506742e-01 7.009183842407572529e-01 5.637411222277634026e-01
+4.988124547076915882e-01 7.035690215604037956e-01 5.664719533702552434e-01
+5.058115298480653221e-01 7.062215879970826782e-01 5.692622613027222833e-01
+5.127738759690677606e-01 7.088760718122417703e-01 5.721113127309581659e-01
+5.197010257328686933e-01 7.115326679134365007e-01 5.750185876848199484e-01
+5.265932673521412921e-01 7.141918646847531527e-01 5.779837442967735717e-01
+5.334494816269396145e-01 7.168545129510710545e-01 5.810065526719623286e-01
+5.402690647877386176e-01 7.195213413684249382e-01 5.840866494502513495e-01
+5.470548736207613283e-01 7.221921468817737999e-01 5.872233804977959881e-01
+5.538072551957783363e-01 7.248673679611095100e-01 5.904163410524770894e-01
+5.605265661533928023e-01 7.275474322700724583e-01 5.936651120515976654e-01
+5.672131712764029166e-01 7.302327570205698892e-01 5.969692609600730782e-01
+5.738649923321349489e-01 7.329244536181049874e-01 6.003283620189617809e-01
+5.804845702488933279e-01 7.356223182652517067e-01 6.037418650719156288e-01
+5.870727421002424062e-01 7.383266077479672118e-01 6.072092971993915400e-01
+5.936298933201957784e-01 7.410376988478269977e-01 6.107301851240671819e-01
+6.001564124519274124e-01 7.437559595200373685e-01 6.143040456187923715e-01
+6.066526905401021796e-01 7.464817491552263595e-01 6.179303860708607044e-01
+6.131191206125891080e-01 7.492154188267443615e-01 6.216087050224498034e-01
+6.195560972423146406e-01 7.519573115237726535e-01 6.253384926911926822e-01
+6.259635861936422296e-01 7.547078996712067722e-01 6.291191822939783407e-01
+6.323414409254812796e-01 7.574676913865331374e-01 6.329501570682624090e-01
+6.386911927456534466e-01 7.602366470910791874e-01 6.368310037415121361e-01
+6.450132383997043695e-01 7.630150778921287458e-01 6.407611911364364810e-01
+6.513079749051275957e-01 7.658032878094622742e-01 6.447401822997557153e-01
+6.575757994324034073e-01 7.686015739346664377e-01 6.487674349657708284e-01
+6.638171092147175933e-01 7.714102265818907345e-01 6.528424020163275943e-01
+6.700323014813579503e-01 7.742295294309987641e-01 6.569645319377305226e-01
+6.762217734101813038e-01 7.770597596640953508e-01 6.611332692747456941e-01
+6.823859220949484161e-01 7.799011880964143995e-01 6.653480550814426797e-01
+6.885251445237092760e-01 7.827540793025653532e-01 6.696083273682165160e-01
+6.946398375648411561e-01 7.856186917391158042e-01 6.739135215439332471e-01
+7.007303979576740005e-01 7.884952778644843674e-01 6.782630708517513041e-01
+7.067972223051004477e-01 7.913840842570615264e-01 6.826564067967675342e-01
+7.128407070658809852e-01 7.942853517324697243e-01 6.870929595632513376e-01
+7.188612485448663270e-01 7.971993154607720511e-01 6.915721584188375681e-01
+7.248592428796667431e-01 8.001262050844080154e-01 6.960934321026465144e-01
+7.308350860228653989e-01 8.030662448375227580e-01 7.006562091939169123e-01
+7.367891737192681090e-01 8.060196536672460388e-01 7.052599184573171698e-01
+7.427219014782563411e-01 8.089866453573647531e-01 7.099039891607071828e-01
+7.486327256130643759e-01 8.119678017125729896e-01 7.145873998348200029e-01
+7.545223076817887398e-01 8.149632306197714948e-01 7.193096566367255251e-01
+7.603915796412942241e-01 8.179729213555224643e-01 7.240704295566047222e-01
+7.662409381414175824e-01 8.209970689783633313e-01 7.288691437189614986e-01
+7.720707796269933310e-01 8.240358639329949941e-01 7.337052258319404219e-01
+7.778815003305534770e-01 8.270894921786368092e-01 7.385781042557458820e-01
+7.836734962813408645e-01 8.301581353160575327e-01 7.434872090029538416e-01
+7.894471633387081244e-01 8.332419707110174656e-01 7.484319716624078245e-01
+7.952028972601549173e-01 8.363411716110775718e-01 7.534118252377455249e-01
+8.009401766621723207e-01 8.394563042330350777e-01 7.584255820860429376e-01
+8.066584706735069332e-01 8.425879497641356464e-01 7.634719632765348818e-01
+8.123599093553812711e-01 8.457355276105180675e-01 7.685515296147656938e-01
+8.180448941186928558e-01 8.488991950022984900e-01 7.736637090147417961e-01
+8.237138279483190439e-01 8.520791051833870311e-01 7.788079287668441264e-01
+8.293671160911614271e-01 8.552754073408689317e-01 7.839836146965878383e-01
+8.350048677827189847e-01 8.584883831868801440e-01 7.891899443847590900e-01
+8.406246724049463159e-01 8.617194786977677712e-01 7.944239257301034529e-01
+8.462299834685677036e-01 8.649674562084326279e-01 7.996873827745283325e-01
+8.518212329614019973e-01 8.682324447773152043e-01 8.049797193798620132e-01
+8.573988637074910768e-01 8.715145671024431273e-01 8.103003320898716222e-01
+8.629633327895804840e-01 8.748139384163003962e-01 8.156486084917724533e-01
+8.685112937853189941e-01 8.781325055194139084e-01 8.210202040569095638e-01
+8.740469282893844616e-01 8.814686228402575097e-01 8.264178662740626624e-01
+8.795708463666609411e-01 8.848223352046364898e-01 8.318410153090299852e-01
+8.850836254841629724e-01 8.881937049832523412e-01 8.372889893254339411e-01
+8.905836610629007666e-01 8.915838848352710677e-01 8.427587078675609078e-01
+8.960718329388820402e-01 8.949928217018373600e-01 8.482495190363266158e-01
+9.015509263802756745e-01 8.984195016922670307e-01 8.537628451897162352e-01
+9.070218374764418279e-01 9.018638497314315217e-01 8.592980228813623667e-01
+9.124832972967743538e-01 9.053269113370198129e-01 8.648517190341429295e-01
+9.179365336943248188e-01 9.088084827838653901e-01 8.704232606428425889e-01
+9.233851804191220980e-01 9.123071100087158936e-01 8.760148319228351355e-01
+9.288308811012930821e-01 9.158223472192428272e-01 8.816263177427966502e-01
+9.342716413123769437e-01 9.193556495997508016e-01 8.872531405900644375e-01
+9.397124373542273812e-01 9.229047657151164819e-01 8.928998260600508052e-01
+9.451563753217823161e-01 9.264682865796181055e-01 8.985697730985615639e-01
+9.506035559047821826e-01 9.300461763422669392e-01 9.042646579991682199e-01
+9.560531046363628382e-01 9.336385357088663461e-01 9.099886803187530182e-01
+9.615066616129493982e-01 9.372434217616608665e-01 9.157560566822336989e-01
+9.669573847273637002e-01 9.408624710997687268e-01 9.215795307640300971e-01
+9.723870692594612786e-01 9.445024597948724621e-01 9.274670258562995873e-01
+9.777785730890226068e-01 9.481687534308861354e-01 9.334364948680430318e-01
+9.831050718338244510e-01 9.518727670560837018e-01 9.394860306213083101e-01
+9.883417388454437402e-01 9.556282921109976458e-01 9.455836323325411685e-01
+9.934918422996558141e-01 9.594375624216472387e-01 9.516983192548315040e-01
+9.985763296811461798e-01 9.632965417140263442e-01 9.577895036430327247e-01
+9.942114721489739848e-01 9.649414783718816002e-01 9.591713509300946461e-01
+9.916915526798163460e-01 9.600677293546330260e-01 9.527406681900515428e-01
+9.892073759214962125e-01 9.552017644060696311e-01 9.462702365737246657e-01
+9.867719407557972167e-01 9.503380654950176476e-01 9.397586228881678050e-01
+9.843739071729306067e-01 9.454788135288768602e-01 9.332265558186634280e-01
+9.820182926871906526e-01 9.406217084851765664e-01 9.266730991029579201e-01
+9.797019478013845317e-01 9.357670195072623764e-01 9.201050706729160256e-01
+9.774207980730996725e-01 9.309154126689619391e-01 9.135293740478817037e-01
+9.751815609868391688e-01 9.260643851639969171e-01 9.069399044850446900e-01
+9.729704910473376822e-01 9.212176417076594070e-01 9.003536220502811327e-01
+9.708034919455280631e-01 9.163699401531895106e-01 8.937532865598888376e-01
+9.686635749176782939e-01 9.115260705110270756e-01 8.871590238431372732e-01
+9.665594650012595546e-01 9.066829842770773862e-01 8.805615104307024099e-01
+9.644872784946666444e-01 9.018415117599095643e-01 8.739656672915365743e-01
+9.624420742140847862e-01 8.970028582796596428e-01 8.673774626543144795e-01
+9.604345584612016262e-01 8.921632903093835720e-01 8.607852860310053478e-01
+9.584498054598472594e-01 8.873272041947983801e-01 8.542061390733795001e-01
+9.564989754176022041e-01 8.824906944948268661e-01 8.476279025304513937e-01
+9.545749598026603833e-01 8.776557062005478915e-01 8.410587414202306267e-01
+9.526745457712032517e-01 8.728229738617154787e-01 8.345024009748316374e-01
+9.508087846256844111e-01 8.679885222040847337e-01 8.279470532549256800e-01
+9.489631025192423186e-01 8.631568397645421609e-01 8.214088147188137734e-01
+9.471457599180185261e-01 8.583248540920686009e-01 8.148789280451533834e-01
+9.453550305765402451e-01 8.534927996091392632e-01 8.083595091982623826e-01
+9.435830323389927665e-01 8.486630445127123501e-01 8.018591800395635794e-01
+9.418425662160879730e-01 8.438308651791852633e-01 7.953645386207840451e-01
+9.401224124677813876e-01 8.389997911592477209e-01 7.888877269212305476e-01
+9.384205871436177571e-01 8.341702205035793627e-01 7.824309818729748844e-01
+9.367501034134483318e-01 8.293372224294222050e-01 7.759809608693934990e-01
+9.350962812812430025e-01 8.245056601392387607e-01 7.695531958095181979e-01
+9.334610667718560295e-01 8.196745424298020888e-01 7.631458380069808811e-01
+9.318539060108851357e-01 8.148400979617762552e-01 7.567494905851217535e-01
+9.302622555140654947e-01 8.100065567310004155e-01 7.503772218901773039e-01
+9.286876056094349741e-01 8.051730724177085241e-01 7.440277117015546837e-01
+9.271395831502474705e-01 8.003357056772891776e-01 7.376916134646933632e-01
+9.256059253327618697e-01 7.954987025858116789e-01 7.313814866564718464e-01
+9.240863437601837260e-01 7.906618776065421628e-01 7.250978248201844778e-01
+9.225925658427436282e-01 7.858203843156221780e-01 7.188294627149656169e-01
+9.211126169365579930e-01 7.809784744974170856e-01 7.125884635347393692e-01
+9.196455684792974594e-01 7.761362045971830215e-01 7.063759865046427278e-01
+9.181979022265810420e-01 7.712906810954774928e-01 7.001861662941214481e-01
+9.167672001571998130e-01 7.664424894801199484e-01 6.940217357022171463e-01
+9.153481567945904729e-01 7.615934195093969628e-01 6.878880649909780987e-01
+9.139404639768551331e-01 7.567432836340363123e-01 6.817857667786046960e-01
+9.125539294301500126e-01 7.518876928783747582e-01 6.757062380855892725e-01
+9.111780957235272593e-01 7.470305845086899765e-01 6.696595752391263368e-01
+9.098122501649290594e-01 7.421719339914916169e-01 6.636468136699643638e-01
+9.084563128768237128e-01 7.373114504136536462e-01 6.576684342801734084e-01
+9.071185731273107011e-01 7.324452193667679856e-01 6.517176237314421527e-01
+9.057893354554222842e-01 7.275770233727173464e-01 6.458034937673092779e-01
+9.044682125236334080e-01 7.227067015228565428e-01 6.399268508324190696e-01
+9.031548045364521382e-01 7.178340969900336432e-01 6.340885324865254136e-01
+9.018536281154535539e-01 7.129568373829493488e-01 6.282852974032566706e-01
+9.005618093543485969e-01 7.080758191596225881e-01 6.225202235043866272e-01
+8.992759701121831872e-01 7.031922144373208283e-01 6.167967177972875081e-01
+8.979956379512032960e-01 6.983059000713781606e-01 6.111157531581823399e-01
+8.967203212860314077e-01 6.934167616666734313e-01 6.054783383481375791e-01
+8.954526708976771054e-01 6.885231926405954717e-01 5.998830635410449252e-01
+8.941915566016080952e-01 6.836253365962329243e-01 5.943315847613384051e-01
+8.929334172678807802e-01 6.787245284319090022e-01 5.888273795844850556e-01
+8.916776705242244194e-01 6.738207055230612808e-01 5.833715948784413685e-01
+8.904237095992360018e-01 6.689138192653601989e-01 5.779654133729836829e-01
+8.891709022410747565e-01 6.640038362746348843e-01 5.726100532447696567e-01
+8.879187220887899690e-01 6.590906724758603952e-01 5.673066752652388134e-01
+8.866700510547862457e-01 6.541724962989774461e-01 5.620541403257021118e-01
+8.854200814778028228e-01 6.492513861023391231e-01 5.568566631651752363e-01
+8.841680786914359880e-01 6.443273831269403784e-01 5.517155748042765762e-01
+8.829132805112128723e-01 6.394005490891804255e-01 5.466322335097351104e-01
+8.816548969914349554e-01 6.344709672901969189e-01 5.416080224154796730e-01
+8.803921103664992254e-01 6.295387436822825755e-01 5.366443467601184070e-01
+8.791240751896489680e-01 6.246040078804957485e-01 5.317426307330340718e-01
+8.778499186810901911e-01 6.196669141071349252e-01 5.269043139249947050e-01
+8.765687412960717628e-01 6.147276420564155019e-01 5.221308473833028430e-01
+8.752796175219744734e-01 6.097863976665317542e-01 5.174236892760738504e-01
+8.739815969115529715e-01 6.048434137862945814e-01 5.127843001752147023e-01
+8.726737941588253999e-01 5.998988989392898263e-01 5.082140946168248741e-01
+8.713557496267209102e-01 5.949528226638209905e-01 5.037142772058214035e-01
+8.700256052408116281e-01 5.900059904309469250e-01 4.992866995883939452e-01
+8.686823445912698061e-01 5.850587401058766623e-01 4.949327569364067592e-01
+8.673249354213553586e-01 5.801114372307474287e-01 4.906538189940125583e-01
+8.659523319452930856e-01 5.751644748762787529e-01 4.864512237593011101e-01
+8.645634773771747605e-01 5.702182733234352208e-01 4.823262709991545383e-01
+8.631573066573615671e-01 5.652732795695735168e-01 4.782802156484906031e-01
+8.617327493598900823e-01 5.603299666552966629e-01 4.743142611496265482e-01
+8.602887327613949475e-01 5.553888328102728478e-01 4.704295527914130193e-01
+8.588244189007790963e-01 5.504502458314576296e-01 4.666271134383851993e-01
+8.573388771464994784e-01 5.455146532392860514e-01 4.629079425847138496e-01
+8.558307110590109845e-01 5.405828402802138610e-01 4.592730689337449212e-01
+8.542988567054966564e-01 5.356554029582069054e-01 4.557233480219839428e-01
+8.527422657992969057e-01 5.307329553519699594e-01 4.522595444303549317e-01
+8.511599092771463537e-01 5.258161276783985816e-01 4.488823265086418490e-01
+8.495507808257551918e-01 5.209055642285482790e-01 4.455922615760174454e-01
+8.479139003246871642e-01 5.160019211927755478e-01 4.423898116530999292e-01
+8.462483171732270160e-01 5.111058643932878676e-01 4.392753297751230135e-01
+8.445531134701587117e-01 5.062180669436533442e-01 4.362490569289804720e-01
+8.428274070171406507e-01 5.013392068558483183e-01 4.333111196492664408e-01
+8.410703541185753362e-01 4.964699646160714575e-01 4.304615283001137493e-01
+8.392811521535089581e-01 4.916110207509353791e-01 4.277001760608312164e-01
+8.374593644075595256e-01 4.867627987429819503e-01 4.250269048992098009e-01
+8.356043139975503076e-01 4.819259312622626301e-01 4.224414243859783702e-01
+8.337148868611683472e-01 4.771014353948369036e-01 4.199431953989596344e-01
+8.317904658009995789e-01 4.722899701137897588e-01 4.175316375108732991e-01
+8.298304844983901418e-01 4.674921821164159108e-01 4.152060584430907197e-01
+8.278344282915189867e-01 4.627087037890093568e-01 4.129656573155296440e-01
+8.258018346451376779e-01 4.579401513029328075e-01 4.108095284678619508e-01
+8.237322933175019735e-01 4.531871228543432051e-01 4.087366658020525345e-01
+8.216256878784896633e-01 4.484499819155622347e-01 4.067461112065531847e-01
+8.194815690724320811e-01 4.437294051177347876e-01 4.048366204140803060e-01
+8.172995050178583076e-01 4.390260854893064946e-01 4.030068099238640067e-01
+8.150792968857805132e-01 4.343405321271661679e-01 4.012553165972070901e-01
+8.128207950280410543e-01 4.296732294003547947e-01 3.995807052170325946e-01
+8.105238975108269850e-01 4.250246362540385792e-01 3.979814747698801614e-01
+8.081885484630557670e-01 4.203951856851556590e-01 3.964560648094507256e-01
+8.058148470586988799e-01 4.157851737769109879e-01 3.950029765120905423e-01
+8.034026962411985329e-01 4.111951046689115152e-01 3.936204324142628108e-01
+8.009521378981909745e-01 4.066253627118514569e-01 3.923066947182650144e-01
+7.984632874676697023e-01 4.020762706733001512e-01 3.910600267933756480e-01
+7.959362958998934534e-01 3.975481251157440554e-01 3.898786646276527490e-01
+7.933713473226599033e-01 3.930411968130258504e-01 3.887608225579017307e-01
+7.907686574783574507e-01 3.885557303926693296e-01 3.877046999689159890e-01
+7.881284544156301752e-01 3.840919640902587529e-01 3.867084595587381712e-01
+7.854510012103226302e-01 3.796501032751679605e-01 3.857702673246294345e-01
+7.827365958532629397e-01 3.752303177293505598e-01 3.848883050999601374e-01
+7.799855573279415033e-01 3.708327552306592834e-01 3.840607581802352732e-01
+7.771982233463431422e-01 3.664575425267851405e-01 3.832858192234025463e-01
+7.743749481448563010e-01 3.621047863617611329e-01 3.825616918198675998e-01
+7.715160518337467188e-01 3.577746368683014655e-01 3.818864831434901075e-01
+7.686219524815265380e-01 3.534671195520193154e-01 3.812584982442814296e-01
+7.656930517948008497e-01 3.491822750013692245e-01 3.806760122706670524e-01
+7.627297518608332494e-01 3.449201381780978570e-01 3.801373059981723590e-01
+7.597324610418284552e-01 3.406807299395016586e-01 3.796406843015277532e-01
+7.567015922742318379e-01 3.364640582281425152e-01 3.791844777860022275e-01
+7.536375467881040180e-01 3.322701411099439062e-01 3.787669970190922220e-01
+7.505407196227874556e-01 3.280990002753491619e-01 3.783865433211569540e-01
+7.474115712082280982e-01 3.239505493622616417e-01 3.780416634360889150e-01
+7.442505183508412170e-01 3.198247550352249502e-01 3.777308063416947026e-01
+7.410579750279425726e-01 3.157215772518807695e-01 3.774524509829353947e-01
+7.378343512384677449e-01 3.116409704467773545e-01 3.772051064266770948e-01
+7.345800519344474200e-01 3.075828847103421748e-01 3.769873118279194468e-01
+7.312954622460766663e-01 3.035472925968438762e-01 3.767975677519167510e-01
+7.279809779377566237e-01 2.995341347142527755e-01 3.766344783074295766e-01
+7.246370003939071047e-01 2.955433232127043786e-01 3.764967560209065978e-01
+7.212639047983969709e-01 2.915748020657008555e-01 3.763830604225979481e-01
+7.178620569041518351e-01 2.876285169108695472e-01 3.762920784118068407e-01
+7.144318123927204667e-01 2.837044162122266955e-01 3.762225233422813453e-01
+7.109735162895217675e-01 2.798024524280844916e-01 3.761731340017399616e-01
+7.074875003639726767e-01 2.759225885803616163e-01 3.761426556123988463e-01
+7.039740902088845731e-01 2.720647802144139371e-01 3.761299015349165442e-01
+7.004335983291459788e-01 2.682289908573779469e-01 3.761337091569335600e-01
+6.968663212773178461e-01 2.644152012227610760e-01 3.761529095527339495e-01
+6.932725426766019883e-01 2.606234021780075572e-01 3.761863526116585033e-01
+6.896525329109274294e-01 2.568535960113472738e-01 3.762329055321002591e-01
+6.860065488492232966e-01 2.531057977294109973e-01 3.762914512548127810e-01
+6.823348363761195801e-01 2.493800214422073891e-01 3.763609500820121467e-01
+6.786376242649662105e-01 2.456763038128263466e-01 3.764403535110733556e-01
+6.749151231751110425e-01 2.419947210999891518e-01 3.765285264384131692e-01
+6.711675324616499516e-01 2.383353539955441192e-01 3.766243994612780699e-01
+6.673950369964636309e-01 2.346983031289386346e-01 3.767269100578239382e-01
+6.635978070649097837e-01 2.310836906390836831e-01 3.768350007100279009e-01
+6.597759982863891093e-01 2.274916618065601082e-01 3.769476169820946132e-01
+6.559297473209481089e-01 2.239223513030393353e-01 3.770639116649144307e-01
+6.520591754729223588e-01 2.203759654266244650e-01 3.771828077558652681e-01
+6.481643941443696599e-01 2.168527541906234979e-01 3.773031206968150975e-01
+6.442454984979625321e-01 2.133529749202845993e-01 3.774237883397635329e-01
+6.403025689859566105e-01 2.098769174022531714e-01 3.775437410683403772e-01
+6.363356714241054091e-01 2.064249059420060206e-01 3.776618996147099727e-01
+6.323448551853009247e-01 2.029972985879547887e-01 3.777771986896097389e-01
+6.283301122985771592e-01 1.995944416686266654e-01 3.778890664877021521e-01
+6.242914965761068302e-01 1.962168403108488501e-01 3.779958773221168133e-01
+6.202290151835444521e-01 1.928649814733044143e-01 3.780964890449534654e-01
+6.161426615427991749e-01 1.895393981082279800e-01 3.781897379927290359e-01
+6.120324156302930918e-01 1.862406715933664081e-01 3.782744366000001524e-01
+6.078982443238682976e-01 1.829694341941491276e-01 3.783493709986866516e-01
+6.037399990506459035e-01 1.797263486622488471e-01 3.784140428470601503e-01
+5.995576965897967403e-01 1.765121975913181707e-01 3.784665259488561584e-01
+5.953512720943007208e-01 1.733277858871770660e-01 3.785054621982753553e-01
+5.911206437729070728e-01 1.701739770998706713e-01 3.785295035265708874e-01
+5.868657195674668037e-01 1.670516976788867514e-01 3.785372630540221883e-01
+5.825863435035250060e-01 1.639619511220119508e-01 3.785276019365447775e-01
+5.782823203682633251e-01 1.609058321765788335e-01 3.784994295515334839e-01
+5.739536466014196758e-01 1.578844538430557720e-01 3.784505787767488694e-01
+5.696001981012460691e-01 1.548990153349074916e-01 3.783794775494400686e-01
+5.652218458222221242e-01 1.519507861175737884e-01 3.782845039525286057e-01
+5.608184279263467298e-01 1.490411220014642157e-01 3.781641038386275300e-01
+5.563896048179566289e-01 1.461715605343842650e-01 3.780173288805740439e-01
+5.519354537512982661e-01 1.433434802585686063e-01 3.778414852793369194e-01
+5.474558435278772395e-01 1.405584279152288785e-01 3.776347269993366451e-01
+5.429506470730138812e-01 1.378180135121435668e-01 3.773951523619960002e-01
+5.384196501144510316e-01 1.351239813932839096e-01 3.771211030874267456e-01
+5.338626135422905872e-01 1.324781762459926737e-01 3.768109124380045194e-01
+5.292796498492590151e-01 1.298822067930652524e-01 3.764618033826110377e-01
+5.246706783487381509e-01 1.273378756852094063e-01 3.760716446399895441e-01
+5.200356363922209457e-01 1.248470120733735367e-01 3.756382551974452033e-01
+5.153742367301422656e-01 1.224117140591406694e-01 3.751600258018771838e-01
+5.106866581816573714e-01 1.200336468026920456e-01 3.746341300161435961e-01
+5.059729862980435477e-01 1.177145617740232852e-01 3.740580772636119544e-01
+5.012332745984564575e-01 1.154562389937715539e-01 3.734295174784395543e-01
+4.964674957217509177e-01 1.132605442683873864e-01 3.727463195168757570e-01
+4.916758190194626121e-01 1.111290906599490258e-01 3.720059818290880060e-01
+4.868585609140311798e-01 1.090632523851999269e-01 3.712058226357082269e-01
+4.820159589014604840e-01 1.070644243738244350e-01 3.703434438399521023e-01
+4.771482837998479165e-01 1.051338742417683159e-01 3.694164970204523168e-01
+4.722559296975721854e-01 1.032725993184717139e-01 3.684225499867860298e-01
+4.673393879073711177e-01 1.014813305146687883e-01 3.673591735272957459e-01
+4.623991454541829804e-01 9.976065343840129218e-02 3.662241176536292220e-01
+4.574358041489324234e-01 9.811082191626963045e-02 3.650151416090168244e-01
+4.524502157463570762e-01 9.653152558968838837e-02 3.637298817526759542e-01
+4.474429556959144683e-01 9.502266265951053725e-02 3.623665563347658880e-01
+4.424148033564082039e-01 9.358361785401031474e-02 3.609233190012756665e-01
+4.373666093617918915e-01 9.221344371517425920e-02 3.593984619211612608e-01
+4.323000061476657274e-01 9.090969474799345806e-02 3.577897503619592023e-01
+4.272154852828886629e-01 8.967151542383772211e-02 3.560963875772367726e-01
+4.221140984792258188e-01 8.849693359303587026e-02 3.543172112905775273e-01
+4.169969758462759302e-01 8.738362154375492463e-02 3.524512375858371849e-01
+4.118658301965831270e-01 8.632803919827600203e-02 3.504973239811765007e-01
+4.067221669675408213e-01 8.532676500724681312e-02 3.484548346345710534e-01
+4.015666852977432533e-01 8.437757766440442952e-02 3.463238990387739746e-01
+3.964007130297593218e-01 8.347701754004596686e-02 3.441044235724556866e-01
+3.912256097683191602e-01 8.262141527259461715e-02 3.417965388380971303e-01
+3.860430941874281596e-01 8.180633277581816909e-02 3.394004639140563162e-01
+3.808555339288969832e-01 8.102605665725876039e-02 3.369164884312597086e-01
+3.756631594887540060e-01 8.027857713191724476e-02 3.343459517649038371e-01
+3.704673590324250032e-01 7.955977986332424257e-02 3.316898655204278401e-01
+3.652695090362573227e-01 7.886552703397090025e-02 3.289494343067977944e-01
+3.600709660701238435e-01 7.819169210462800779e-02 3.261260438198446687e-01
+3.548730588141333908e-01 7.753419260275734581e-02 3.232212473818363851e-01
+3.496770804198256477e-01 7.688902041627435069e-02 3.202367511798585031e-01
+3.444853557545813350e-01 7.625034119537774102e-02 3.171743822649770728e-01
+3.392982604990861795e-01 7.561586038621423422e-02 3.140362188799208365e-01
+3.341166082970875029e-01 7.498254313274954619e-02 3.108243324765390669e-01
+3.289414559917514524e-01 7.434697155739058982e-02 3.075408588184366798e-01
+3.237737954171283072e-01 7.370590341662106026e-02 3.041879989569576392e-01
+3.186145498482620964e-01 7.305628171756148315e-02 3.007680026557595920e-01
+3.134645711821229530e-01 7.239524117563511663e-02 2.972831523530131137e-01
+3.083246378402036969e-01 7.172011173017686647e-02 2.937357478389135412e-01
+3.031954533707552635e-01 7.102841937235576664e-02 2.901280917978547591e-01
+2.980776457172774063e-01 7.031788456468926474e-02 2.864624763353166292e-01
+2.929717671102379239e-01 6.958641854495320467e-02 2.827411705802333475e-01
+2.878782945311796904e-01 6.883211781082057557e-02 2.789664094251954607e-01
+2.827976306923836725e-01 6.805325707674123037e-02 2.751403834400568682e-01
+2.777301054710668571e-01 6.724828098296936618e-02 2.712652299698696257e-01
+2.726759777346169922e-01 6.641579481976991883e-02 2.673430254060571443e-01
+2.676354374924288515e-01 6.555455450916861104e-02 2.633757786005420098e-01
+2.626097591395918363e-01 6.466149844681601255e-02 2.593660533804174051e-01
+2.575992689989206608e-01 6.373522644476575794e-02 2.553159580518031269e-01
+2.526028775756383737e-01 6.277674824557366584e-02 2.512267303676423147e-01
+2.476205211412589313e-01 6.178532806314660647e-02 2.471000835041496368e-01
+2.426520784951842757e-01 6.076032925135082391e-02 2.429376426307544024e-01
+2.376973739685813714e-01 5.970120319443159712e-02 2.387409437758167274e-01
+2.327561803770203386e-01 5.860747847771281133e-02 2.345114333677875140e-01
+2.278285229664566147e-01 5.747825339035907838e-02 2.302506881609430733e-01
+2.229180662380075839e-01 5.630663136815370479e-02 2.259630047830259447e-01
+2.180204522985965676e-01 5.509893160286010588e-02 2.216467626153181270e-01
+2.131352588343927157e-01 5.385491895770589538e-02 2.173030574920574165e-01
+2.082620235717315138e-01 5.257438772048273617e-02 2.129328977906284059e-01
+2.034002463374002811e-01 5.125715285178860520e-02 2.085372063771265272e-01]; 
+
+   case 'amp' 
+      RGB = [9.463470914425774483e-01 9.290101343908121478e-01 9.257532417012246384e-01
+9.437115115548888600e-01 9.244624965319422349e-01 9.206701514370421169e-01
+9.413263164430620833e-01 9.198473615841167295e-01 9.154240958990897958e-01
+9.390547090113202655e-01 9.152093965940418796e-01 9.101090387889319011e-01
+9.368634575300728295e-01 9.105592179043572321e-01 9.047473920040983719e-01
+9.347358946162058757e-01 9.059020202913443676e-01 8.993502288257003707e-01
+9.326614522721177192e-01 9.012410121503533489e-01 8.939244930449518067e-01
+9.306333250978273686e-01 8.965781745298962990e-01 8.884745648022901454e-01
+9.286461606427048876e-01 8.919150224616214651e-01 8.830038737434344753e-01
+9.266960476646858291e-01 8.872526027444326280e-01 8.775148739503740858e-01
+9.247795820079757201e-01 8.825918040419664656e-01 8.720097084454925263e-01
+9.228944807039246578e-01 8.779331456742857087e-01 8.664897344910690302e-01
+9.210380342808240917e-01 8.732773006486703737e-01 8.609566713320465636e-01
+9.192087851735465387e-01 8.686245228987975464e-01 8.554113284148980867e-01
+9.174048150925064871e-01 8.639752297661511538e-01 8.498548926033711037e-01
+9.156244455582711606e-01 8.593297631172468476e-01 8.442883976261035262e-01
+9.138671371679708555e-01 8.546880756641417332e-01 8.387120160257571788e-01
+9.121305737300281491e-01 8.500507404321120397e-01 8.331273220967562176e-01
+9.104149075499773369e-01 8.454174764656698926e-01 8.275339791691540547e-01
+9.087182868982504047e-01 8.407887046755945226e-01 8.219332381316957203e-01
+9.070398066265998871e-01 8.361645202367321561e-01 8.163256242481420344e-01
+9.053796160871283583e-01 8.315446471258203243e-01 8.107108259382036497e-01
+9.037352419915254398e-01 8.269297416714002091e-01 8.050906531516163200e-01
+9.021080083908009639e-01 8.223191128622155954e-01 7.994638601040017223e-01
+9.004956244333240933e-01 8.177133605075642686e-01 7.938321412777887831e-01
+8.988977241110835958e-01 8.131124010808855607e-01 7.881956419539296599e-01
+8.973148627806266653e-01 8.085158161746068828e-01 7.825537446961500221e-01
+8.957442417382828204e-01 8.039244072828748422e-01 7.769086245337948338e-01
+8.941881096565635900e-01 7.993371392915321616e-01 7.712582600059587623e-01
+8.926437234223070227e-01 7.947548018176209261e-01 7.656048088583016220e-01
+8.911109613594879741e-01 7.901772295732085727e-01 7.599482475326526654e-01
+8.895909134152744091e-01 7.856038035950861920e-01 7.542875143411862382e-01
+8.880802871606852111e-01 7.810355387672826000e-01 7.486252986030703660e-01
+8.865819248532246233e-01 7.764711589075004028e-01 7.429590373479496579e-01
+8.850930260657449145e-01 7.719115034698935673e-01 7.372910251414285243e-01
+8.836131402967402071e-01 7.673565360639147404e-01 7.316215502737657417e-01
+8.821444223454562028e-01 7.628052217660783452e-01 7.259486135652994943e-01
+8.806827953756125593e-01 7.582589101067193083e-01 7.202756895379377466e-01
+8.792311851397603961e-01 7.537162649935950087e-01 7.146000961578288235e-01
+8.777875677079440830e-01 7.491778548550656058e-01 7.089235227883947665e-01
+8.763501988878248383e-01 7.446441541668697983e-01 7.032474436364752890e-01
+8.749232756241082098e-01 7.401133023432254765e-01 6.975679937396324082e-01
+8.735014600514631189e-01 7.355871888710872053e-01 6.918898915870100863e-01
+8.720870217729678187e-01 7.310647072768980959e-01 6.862110066741609060e-01
+8.706800348126626510e-01 7.265456103843925817e-01 6.805311805702053407e-01
+8.692770022519556994e-01 7.220310948598716028e-01 6.748535454654478460e-01
+8.678827146915726320e-01 7.175190094979648769e-01 6.691736166956238074e-01
+8.664927921052477666e-01 7.130109157552886323e-01 6.634953613259193528e-01
+8.651068719926267025e-01 7.085067580022798017e-01 6.578190657407729791e-01
+8.637289803901067042e-01 7.040046558915140640e-01 6.521408976142408775e-01
+8.623534679961476490e-01 6.995067341461493893e-01 6.464660893001026309e-01
+8.609830606578612322e-01 6.950116457163946215e-01 6.407920274183934728e-01
+8.596180478330472940e-01 6.905190440208218705e-01 6.351183727606340979e-01
+8.582544825018789680e-01 6.860303869186620274e-01 6.294488360238388314e-01
+8.568970944227636277e-01 6.815434400545420379e-01 6.237788543057761759e-01
+8.555425925651013452e-01 6.770593865574592307e-01 6.181115291897923969e-01
+8.541886800910097888e-01 6.725790118919016125e-01 6.124490539806487499e-01
+8.528418735895523239e-01 6.680992506239646911e-01 6.067850786519378703e-01
+8.514956700712879023e-01 6.636227191543088155e-01 6.011258775897345696e-01
+8.501500355486913962e-01 6.591492264653023847e-01 5.954714806881288292e-01
+8.488106382652110815e-01 6.546760150904927800e-01 5.898162979999663769e-01
+8.474706581846417341e-01 6.502059048227525340e-01 5.841670108646530579e-01
+8.461313452075343022e-01 6.457381204225883797e-01 5.785223911431566224e-01
+8.447969154607379849e-01 6.412705018379197819e-01 5.728782339090506825e-01
+8.434612056654142709e-01 6.368056357299208825e-01 5.672406638938772838e-01
+8.421258352164873173e-01 6.323425572542190620e-01 5.616080798917625350e-01
+8.407944708783339216e-01 6.278793105389963713e-01 5.559767932481035624e-01
+8.394611847956942041e-01 6.234184331258648681e-01 5.503527766345649441e-01
+8.381273683455257029e-01 6.189590462186138620e-01 5.447346560426542528e-01
+8.367972635859407537e-01 6.144988712509784623e-01 5.391181340824646728e-01
+8.354646463246349075e-01 6.100406459813725313e-01 5.335095625632335636e-01
+8.341299717058989760e-01 6.055839279215072812e-01 5.279085280772741751e-01
+8.327994021627661558e-01 6.011254425561419756e-01 5.223087380798424606e-01
+8.314657754399900069e-01 5.966684488411785336e-01 5.167175843922774403e-01
+8.301288592609736838e-01 5.922128365915518833e-01 5.111353769747372100e-01
+8.287951011685089631e-01 5.877551092176589442e-01 5.055554913593263144e-01
+8.274588476811213233e-01 5.832978393600145584e-01 4.999838390239015884e-01
+8.261188250087038165e-01 5.788414339387950580e-01 4.944218283197156505e-01
+8.247786369803286055e-01 5.743837798031475872e-01 4.888657757771856516e-01
+8.234381838800088893e-01 5.699246359812502050e-01 4.833158537977020885e-01
+8.220935149852323098e-01 5.654657957469002572e-01 4.777762994077761616e-01
+8.207444566974767541e-01 5.610071021581608530e-01 4.722474096096786478e-01
+8.193981033425531413e-01 5.565444762341525964e-01 4.667217962382390062e-01
+8.180472685091408902e-01 5.520814646564632389e-01 4.612071590527028753e-01
+8.166916431769154494e-01 5.476179715812223847e-01 4.557039631596026541e-01
+8.153328745786677656e-01 5.431528161626910656e-01 4.502105997079735578e-01
+8.139743540529152943e-01 5.386837997184832361e-01 4.447235925743368568e-01
+8.126106579688792131e-01 5.342136249170785778e-01 4.392488743242201066e-01
+8.112416585089723409e-01 5.297420805368263652e-01 4.337867573467541482e-01
+8.098689150112462487e-01 5.252679783528519941e-01 4.283357546423488538e-01
+8.084956135344389949e-01 5.207891399756702233e-01 4.228926326123328416e-01
+8.071166424763304148e-01 5.163081809730883931e-01 4.174630770396351442e-01
+8.057318945579315939e-01 5.118248549122679236e-01 4.120474263101407963e-01
+8.043412708255589516e-01 5.073389039757838503e-01 4.066460228640024210e-01
+8.029498733805645605e-01 5.028469116894594970e-01 4.012536130705923743e-01
+8.015531888402489535e-01 4.983512104818560995e-01 3.958753217358975118e-01
+8.001502657810105612e-01 4.938520308181937879e-01 3.905124577505094119e-01
+7.987410157112331266e-01 4.893490771437783438e-01 3.851654167818974739e-01
+7.973253554907255847e-01 4.848420416222078422e-01 3.798346066585175373e-01
+7.959075773999774173e-01 4.803278114438007118e-01 3.745157291750967898e-01
+7.944838857609586302e-01 4.758083650556605426e-01 3.692132449197628175e-01
+7.930533836294737515e-01 4.712838795689627269e-01 3.639285059842314873e-01
+7.916159847493996482e-01 4.667540085796573757e-01 3.586620124504662499e-01
+7.901716040813833164e-01 4.622183930878590030e-01 3.534142884263108408e-01
+7.887201567691978221e-01 4.576766614569128255e-01 3.481858850345221357e-01
+7.872638957915846225e-01 4.531268310219068174e-01 3.429748729037092048e-01
+7.858016971109998972e-01 4.485691650403910713e-01 3.377829921447058070e-01
+7.843319196766078694e-01 4.440043051111859929e-01 3.326125640359084423e-01
+7.828544529945841157e-01 4.394318439857143876e-01 3.274643000606006771e-01
+7.813691807701973469e-01 4.348513628187685720e-01 3.223389566893520852e-01
+7.798759793897394044e-01 4.302624315207902450e-01 3.172373399087716761e-01
+7.783747162977331380e-01 4.256646092089760858e-01 3.121603100704657408e-01
+7.768652482649208713e-01 4.210574447687118194e-01 3.071087870719240720e-01
+7.753474195428932125e-01 4.164404775377301138e-01 3.020837558793280642e-01
+7.738210599017090185e-01 4.118132381262810671e-01 2.970862723999735389e-01
+7.722859825475274498e-01 4.071752493875019363e-01 2.921174697090146433e-01
+7.707419819180442166e-01 4.025260275530667675e-01 2.871785646313976814e-01
+7.691888313545882649e-01 3.978650835500125438e-01 2.822708646751007633e-01
+7.676262806509283054e-01 3.931919245154482101e-01 2.773957753058901021e-01
+7.660540534803422785e-01 3.885060555265225091e-01 2.725548075466420750e-01
+7.644718447042359033e-01 3.838069815635994364e-01 2.677495858756240299e-01
+7.628793175676447103e-01 3.790942097250059595e-01 2.629818563878072446e-01
+7.612761007893139586e-01 3.743672517119065457e-01 2.582534951710902527e-01
+7.596617855567490141e-01 3.696256266018116965e-01 2.535665168349998111e-01
+7.580359224396768791e-01 3.648688639288839575e-01 2.489230831128432242e-01
+7.563980182387591844e-01 3.600965070884658559e-01 2.443255114391649219e-01
+7.547475327902162245e-01 3.553081170821107415e-01 2.397762833825934359e-01
+7.530838757510928128e-01 3.505032766177708092e-01 2.352780527895846907e-01
+7.514064033944252152e-01 3.456815945775675858e-01 2.308336534671754370e-01
+7.497144154482878742e-01 3.408427108627715696e-01 2.264461062026797977e-01
+7.480093931719870026e-01 3.359841374696425076e-01 2.221167453210010634e-01
+7.462904219476443890e-01 3.311055722690471881e-01 2.178492138304993775e-01
+7.445546708594931173e-01 3.262086086142511610e-01 2.136488350090644528e-01
+7.428011522578348291e-01 3.212930797652773784e-01 2.095194932063288440e-01
+7.410289292300998865e-01 3.163587556773898579e-01 2.054651883130465539e-01
+7.392422371017411953e-01 3.113999367010875097e-01 2.014864526930904010e-01
+7.374344355234756510e-01 3.064221768888288899e-01 1.975919663992890540e-01
+7.356041908206575330e-01 3.014256456718681365e-01 1.937864841719280640e-01
+7.337546411878117514e-01 2.964055318272263428e-01 1.900722381207737011e-01
+7.318814451569350954e-01 2.913651536558918287e-01 1.864564514321402355e-01
+7.299813549163196580e-01 2.863068267986909055e-01 1.829454454677189867e-01
+7.280589696708802405e-01 2.812237436541007995e-01 1.795417572234761505e-01
+7.261058295804370122e-01 2.761243371138519809e-01 1.762545002124356330e-01
+7.241247102013246284e-01 2.710038520778982329e-01 1.730875525793737491e-01
+7.221106804386585587e-01 2.658668602953934146e-01 1.700480125370592843e-01
+7.200637636280236009e-01 2.607119201605753722e-01 1.671411340183387162e-01
+7.179797241720924372e-01 2.555430923618877692e-01 1.643731951674216596e-01
+7.158585660201038925e-01 2.503590497486887223e-01 1.617494125495184398e-01
+7.136946458601574061e-01 2.451661844345556784e-01 1.592752687470095629e-01
+7.114894074734618989e-01 2.399613853901303440e-01 1.569555549892431845e-01
+7.092368038757341786e-01 2.347521795395665634e-01 1.547943364998323190e-01
+7.069352804131667778e-01 2.295401028324536297e-01 1.527950884695459255e-01
+7.045831993890990796e-01 2.243269505217069248e-01 1.509608633015488421e-01
+7.021764206472544956e-01 2.191186683316911910e-01 1.492928085088980894e-01
+6.997128684389145592e-01 2.139184608731344861e-01 1.477916611410667047e-01
+6.971911916356166028e-01 2.087286324898059431e-01 1.464577951274126655e-01
+6.946080256946649545e-01 2.035552197097931226e-01 1.452888805599515110e-01
+6.919615635162069678e-01 1.984021504802455094e-01 1.442823442764895880e-01
+6.892502621260994111e-01 1.932732898312458647e-01 1.434346916240710201e-01
+6.864728173440260983e-01 1.881724668500568132e-01 1.427415573021981465e-01
+6.836276497375878280e-01 1.831044861638990162e-01 1.421968539256191488e-01
+6.807138936899735926e-01 1.780732451543534933e-01 1.417942947939738185e-01
+6.777309286205458472e-01 1.730825547177755885e-01 1.415269568275668299e-01
+6.746783856387729150e-01 1.681360921159456845e-01 1.413874528291547972e-01
+6.715560313350845689e-01 1.632376302346780217e-01 1.413677792054587046e-01
+6.683639211377226941e-01 1.583906644890515358e-01 1.414598772073469568e-01
+6.651023056640176234e-01 1.535985670708633066e-01 1.416556412086291405e-01
+6.617715794982882427e-01 1.488646699200451562e-01 1.419469640184388703e-01
+6.583721731985413550e-01 1.441925388486675619e-01 1.423253876471278490e-01
+6.549047613747174257e-01 1.395853626420375526e-01 1.427832909133252004e-01
+6.513700233144809060e-01 1.350465677963595956e-01 1.433130440041158193e-01
+6.477686724727176326e-01 1.305797355595543496e-01 1.439072462489923432e-01
+6.441014028993071738e-01 1.261888040474711814e-01 1.445583185074540422e-01
+6.403689740006455189e-01 1.218777495533199251e-01 1.452593821489098769e-01
+6.365721433135939078e-01 1.176507620626412731e-01 1.460041387809807023e-01
+6.327116135602410818e-01 1.135124987936143026e-01 1.467862349801432043e-01
+6.287880597206695343e-01 1.094681045314993273e-01 1.475989566519263774e-01
+6.248021600743940418e-01 1.055229431116234684e-01 1.484364140781085362e-01
+6.207545450778898521e-01 1.016827736772349666e-01 1.492933020681679601e-01
+6.166458126074587653e-01 9.795388132578869422e-02 1.501640386258630555e-01
+6.124766416655831325e-01 9.434293988806133346e-02 1.510418818628477822e-01
+6.082475860694411818e-01 9.085689252672626837e-02 1.519224424106922766e-01
+6.039592307964848361e-01 8.750309254173271878e-02 1.528005492303129986e-01
+5.996123270243045589e-01 8.428892340087804080e-02 1.536699242631612283e-01
+5.952075850399283219e-01 8.122188415501030434e-02 1.545253736600938343e-01
+5.907456431322212209e-01 7.830966313722748096e-02 1.553624952709374007e-01
+5.862275380722600238e-01 7.555913263658070589e-02 1.561749022891834038e-01
+5.816543085194019191e-01 7.297679500504322680e-02 1.569571524895727321e-01
+5.770267606447557762e-01 7.056924923284621509e-02 1.577054842373717958e-01
+5.723466647463710810e-01 6.834024207619035507e-02 1.584124407437495219e-01
+5.676151929412465158e-01 6.629402087598951221e-02 1.590741634973840690e-01
+5.628336935771917071e-01 6.443348056543876656e-02 1.596865619581833706e-01
+5.580050003714496221e-01 6.275633232081309631e-02 1.602413164863800144e-01
+5.531297300263749994e-01 6.126496600367018625e-02 1.607383872225261745e-01
+5.482116402359448193e-01 5.995167246350390639e-02 1.611686284256901580e-01
+5.432516061451815315e-01 5.881547808076787592e-02 1.615323341086055964e-01
+5.382535120903690906e-01 5.784532671126727671e-02 1.618221724924289173e-01
+5.332186175206464762e-01 5.703660923770780683e-02 1.620384025483199708e-01
+5.281513818389996784e-01 5.637398150597446728e-02 1.621742451273615881e-01
+5.230520756324539278e-01 5.585383743496476899e-02 1.622329744665089168e-01
+5.179273401770114749e-01 5.545235617321788574e-02 1.622049347095048388e-01
+5.127760391281988017e-01 5.516900039838320419e-02 1.620968226308776017e-01
+5.076034324141470711e-01 5.498326606891081741e-02 1.619030677004743290e-01
+5.024122108869354397e-01 5.488240340299161552e-02 1.616236282627719067e-01
+4.972028565812885437e-01 5.486041454189729411e-02 1.612621553479370584e-01
+4.919800125101927990e-01 5.489873490341760226e-02 1.608156853259256336e-01
+4.867469976088732442e-01 5.498319810891529741e-02 1.602839538682285792e-01
+4.815035401048063934e-01 5.511074616505500651e-02 1.596718589083305773e-01
+4.762519241645499224e-01 5.527092475320084103e-02 1.589804323039821221e-01
+4.709943156232950234e-01 5.545404644646995812e-02 1.582109529908402590e-01
+4.657362887691403608e-01 5.564106402926658618e-02 1.573608184133624133e-01
+4.604760106385220042e-01 5.583489737898188893e-02 1.564363997859181399e-01
+4.552150906427448462e-01 5.602873466021515009e-02 1.554396278095509509e-01
+4.499550509587917912e-01 5.621638605393316362e-02 1.543724780354263082e-01
+4.446972616844994119e-01 5.639243657216582578e-02 1.532370205267698793e-01
+4.394429409822757093e-01 5.655220574247237647e-02 1.520353945457279254e-01
+4.341931570608791313e-01 5.669170022106548995e-02 1.507697850177304177e-01
+4.289488317782668703e-01 5.680756188500035025e-02 1.494424009624717165e-01
+4.237107456338875533e-01 5.689701352302534848e-02 1.480554560097830374e-01
+4.184795439135307604e-01 5.695780383827742793e-02 1.466111510548973595e-01
+4.132557437526688804e-01 5.698815310778364979e-02 1.451116590521219496e-01
+4.080397418937663501e-01 5.698670052046273665e-02 1.435591118993865545e-01
+4.028318229277383922e-01 5.695245393890951274e-02 1.419555893285963655e-01
+3.976321678282654926e-01 5.688474259913823411e-02 1.403031096878759043e-01
+3.924408626085833518e-01 5.678317307342812398e-02 1.386036224809996942e-01
+3.872615129675306966e-01 5.663896210711539397e-02 1.368568732654815434e-01
+3.820928251575063661e-01 5.645532265747305739e-02 1.350656214594591342e-01
+3.769329700865952648e-01 5.623657775378711893e-02 1.332326547817182794e-01
+3.717817181595340914e-01 5.598316066775241989e-02 1.313596470261583493e-01
+3.666387821359218258e-01 5.569561666867810928e-02 1.294481844724836295e-01
+3.615063297404105258e-01 5.536890534251808632e-02 1.274985831214487109e-01
+3.563880603817025094e-01 5.499475479736596478e-02 1.255105734342905621e-01
+3.512776042297060530e-01 5.458755525687735560e-02 1.234884411194991649e-01
+3.461744793988128510e-01 5.414817693699586904e-02 1.214334602338749125e-01
+3.410813090262644343e-01 5.367068674831452363e-02 1.193455923090092352e-01
+3.360026615292399654e-01 5.314516420281268499e-02 1.172242123426087412e-01
+3.309302966511110111e-01 5.258939733233552322e-02 1.150735180048746420e-01
+3.258636162106021694e-01 5.200433045735335796e-02 1.128944817728364247e-01
+3.208133832347068171e-01 5.136699574271335472e-02 1.106843415414836551e-01
+3.157696216592825178e-01 5.069836482305852682e-02 1.084473347788683095e-01
+3.107301266925714400e-01 5.000263599039595636e-02 1.061847548036680688e-01
+3.057061331880795430e-01 4.925629172594595678e-02 1.038940386221758327e-01
+3.006879268630521240e-01 4.847913366710451116e-02 1.015787046192155041e-01
+2.956726217207689689e-01 4.767654364208809975e-02 9.923998323658683729e-02
+2.906746306466351792e-01 4.681900231021129261e-02 9.687492161154248604e-02
+2.856782002647242358e-01 4.593789236755790178e-02 9.448789214269404102e-02
+2.806890017083342181e-01 4.502128372335665457e-02 9.207800935320636926e-02
+2.757102955542003464e-01 4.406225179606895054e-02 8.964513100796869804e-02
+2.707312541226000180e-01 4.308157177910076213e-02 8.719176105781661912e-02
+2.657667372933599781e-01 4.204947038025994704e-02 8.471559044612611555e-02
+2.608025053402583393e-01 4.099314121499578883e-02 8.221947676879418077e-02
+2.558451747035172530e-01 3.989182795135969711e-02 7.970262452812598708e-02
+2.508938137991353901e-01 3.876029441108298085e-02 7.716551375026653448e-02
+2.459428063629143790e-01 3.762148549775875400e-02 7.460911056507216199e-02
+2.410021600694670640e-01 3.645746689804394564e-02 7.203245689473128377e-02
+2.360563646646140490e-01 3.529747994604028744e-02 6.943744239412558139e-02]; 
+
+   case 'tem' 
+      RGB = [9.985763296811461798e-01 9.632965417140263442e-01 9.577895036430327247e-01
+9.934918422996558141e-01 9.594375624216472387e-01 9.516983192548315040e-01
+9.883417388454437402e-01 9.556282921109976458e-01 9.455836323325411685e-01
+9.831050718338244510e-01 9.518727670560837018e-01 9.394860306213083101e-01
+9.777785730890226068e-01 9.481687534308861354e-01 9.334364948680430318e-01
+9.723870692594612786e-01 9.445024597948724621e-01 9.274670258562995873e-01
+9.669573847273637002e-01 9.408624710997687268e-01 9.215795307640300971e-01
+9.615066616129493982e-01 9.372434217616608665e-01 9.157560566822336989e-01
+9.560531046363628382e-01 9.336385357088663461e-01 9.099886803187530182e-01
+9.506035559047821826e-01 9.300461763422669392e-01 9.042646579991682199e-01
+9.451563753217823161e-01 9.264682865796181055e-01 8.985697730985615639e-01
+9.397124373542273812e-01 9.229047657151164819e-01 8.928998260600508052e-01
+9.342716413123769437e-01 9.193556495997508016e-01 8.872531405900644375e-01
+9.288308811012930821e-01 9.158223472192428272e-01 8.816263177427966502e-01
+9.233851804191220980e-01 9.123071100087158936e-01 8.760148319228351355e-01
+9.179365336943248188e-01 9.088084827838653901e-01 8.704232606428425889e-01
+9.124832972967743538e-01 9.053269113370198129e-01 8.648517190341429295e-01
+9.070218374764418279e-01 9.018638497314315217e-01 8.592980228813623667e-01
+9.015509263802756745e-01 8.984195016922670307e-01 8.537628451897162352e-01
+8.960718329388820402e-01 8.949928217018373600e-01 8.482495190363266158e-01
+8.905836610629007666e-01 8.915838848352710677e-01 8.427587078675609078e-01
+8.850836254841629724e-01 8.881937049832523412e-01 8.372889893254339411e-01
+8.795708463666609411e-01 8.848223352046364898e-01 8.318410153090299852e-01
+8.740469282893844616e-01 8.814686228402575097e-01 8.264178662740626624e-01
+8.685112937853189941e-01 8.781325055194139084e-01 8.210202040569095638e-01
+8.629633327895804840e-01 8.748139384163003962e-01 8.156486084917724533e-01
+8.573988637074910768e-01 8.715145671024431273e-01 8.103003320898716222e-01
+8.518212329614019973e-01 8.682324447773152043e-01 8.049797193798620132e-01
+8.462299834685677036e-01 8.649674562084326279e-01 7.996873827745283325e-01
+8.406246724049463159e-01 8.617194786977677712e-01 7.944239257301034529e-01
+8.350048677827189847e-01 8.584883831868801440e-01 7.891899443847590900e-01
+8.293671160911614271e-01 8.552754073408689317e-01 7.839836146965878383e-01
+8.237138279483190439e-01 8.520791051833870311e-01 7.788079287668441264e-01
+8.180448941186928558e-01 8.488991950022984900e-01 7.736637090147417961e-01
+8.123599093553812711e-01 8.457355276105180675e-01 7.685515296147656938e-01
+8.066584706735069332e-01 8.425879497641356464e-01 7.634719632765348818e-01
+8.009401766621723207e-01 8.394563042330350777e-01 7.584255820860429376e-01
+7.952028972601549173e-01 8.363411716110775718e-01 7.534118252377455249e-01
+7.894471633387081244e-01 8.332419707110174656e-01 7.484319716624078245e-01
+7.836734962813408645e-01 8.301581353160575327e-01 7.434872090029538416e-01
+7.778815003305534770e-01 8.270894921786368092e-01 7.385781042557458820e-01
+7.720707796269933310e-01 8.240358639329949941e-01 7.337052258319404219e-01
+7.662409381414175824e-01 8.209970689783633313e-01 7.288691437189614986e-01
+7.603915796412942241e-01 8.179729213555224643e-01 7.240704295566047222e-01
+7.545223076817887398e-01 8.149632306197714948e-01 7.193096566367255251e-01
+7.486327256130643759e-01 8.119678017125729896e-01 7.145873998348200029e-01
+7.427219014782563411e-01 8.089866453573647531e-01 7.099039891607071828e-01
+7.367891737192681090e-01 8.060196536672460388e-01 7.052599184573171698e-01
+7.308350860228653989e-01 8.030662448375227580e-01 7.006562091939169123e-01
+7.248592428796667431e-01 8.001262050844080154e-01 6.960934321026465144e-01
+7.188612485448663270e-01 7.971993154607720511e-01 6.915721584188375681e-01
+7.128407070658809852e-01 7.942853517324697243e-01 6.870929595632513376e-01
+7.067972223051004477e-01 7.913840842570615264e-01 6.826564067967675342e-01
+7.007303979576740005e-01 7.884952778644843674e-01 6.782630708517513041e-01
+6.946398375648411561e-01 7.856186917391158042e-01 6.739135215439332471e-01
+6.885251445237092760e-01 7.827540793025653532e-01 6.696083273682165160e-01
+6.823859220949484161e-01 7.799011880964143995e-01 6.653480550814426797e-01
+6.762217734101813038e-01 7.770597596640953508e-01 6.611332692747456941e-01
+6.700323014813579503e-01 7.742295294309987641e-01 6.569645319377305226e-01
+6.638171092147175933e-01 7.714102265818907345e-01 6.528424020163275943e-01
+6.575757994324034073e-01 7.686015739346664377e-01 6.487674349657708284e-01
+6.513079749051275957e-01 7.658032878094622742e-01 6.447401822997557153e-01
+6.450132383997043695e-01 7.630150778921287458e-01 6.407611911364364810e-01
+6.386911927456534466e-01 7.602366470910791874e-01 6.368310037415121361e-01
+6.323414409254812796e-01 7.574676913865331374e-01 6.329501570682624090e-01
+6.259635861936422296e-01 7.547078996712067722e-01 6.291191822939783407e-01
+6.195560972423146406e-01 7.519573115237726535e-01 6.253384926911926822e-01
+6.131191206125891080e-01 7.492154188267443615e-01 6.216087050224498034e-01
+6.066526905401021796e-01 7.464817491552263595e-01 6.179303860708607044e-01
+6.001564124519274124e-01 7.437559595200373685e-01 6.143040456187923715e-01
+5.936298933201957784e-01 7.410376988478269977e-01 6.107301851240671819e-01
+5.870727421002424062e-01 7.383266077479672118e-01 6.072092971993915400e-01
+5.804845702488933279e-01 7.356223182652517067e-01 6.037418650719156288e-01
+5.738649923321349489e-01 7.329244536181049874e-01 6.003283620189617809e-01
+5.672131712764029166e-01 7.302327570205698892e-01 5.969692609600730782e-01
+5.605265661533928023e-01 7.275474322700724583e-01 5.936651120515976654e-01
+5.538072551957783363e-01 7.248673679611095100e-01 5.904163410524770894e-01
+5.470548736207613283e-01 7.221921468817737999e-01 5.872233804977959881e-01
+5.402690647877386176e-01 7.195213413684249382e-01 5.840866494502513495e-01
+5.334494816269396145e-01 7.168545129510710545e-01 5.810065526719623286e-01
+5.265932673521412921e-01 7.141918646847531527e-01 5.779837442967735717e-01
+5.197010257328686933e-01 7.115326679134365007e-01 5.750185876848199484e-01
+5.127738759690677606e-01 7.088760718122417703e-01 5.721113127309581659e-01
+5.058115298480653221e-01 7.062215879970826782e-01 5.692622613027222833e-01
+4.988124547076915882e-01 7.035690215604037956e-01 5.664719533702552434e-01
+4.917741270603506742e-01 7.009183842407572529e-01 5.637411222277634026e-01
+4.846997162615552246e-01 6.982683108816961637e-01 5.610695620964348818e-01
+4.775890398856753039e-01 6.956182556045346077e-01 5.584575291026864230e-01
+4.704389351347622594e-01 6.929683367461523247e-01 5.559058726658481220e-01
+4.632498634530364812e-01 6.903178139102768007e-01 5.534147775766539157e-01
+4.560240745098563253e-01 6.876655632831355502e-01 5.509839689679422170e-01
+4.487598229028739172e-01 6.850113432670585922e-01 5.486140038956078824e-01
+4.414547339722453279e-01 6.823550079810395408e-01 5.463056567639269501e-01
+4.341129901223799714e-01 6.796950319734580415e-01 5.440580596655568701e-01
+4.267325988888523436e-01 6.770311866202418649e-01 5.418718349209995511e-01
+4.193119538935562440e-01 6.743631277083362852e-01 5.397475699351562684e-01
+4.118554481683104340e-01 6.716893377862352965e-01 5.376841277217632165e-01
+4.043593499172888350e-01 6.690098785171258999e-01 5.356826761355167887e-01
+3.968261890078971788e-01 6.663236061846555813e-01 5.337425455110953454e-01
+3.892580517875900981e-01 6.636294950347043642e-01 5.318631054022345817e-01
+3.816510562742471135e-01 6.609275747235534570e-01 5.300456830101799577e-01
+3.740119682194762429e-01 6.582160193662682790e-01 5.282880419647097980e-01
+3.663368289249827603e-01 6.554948605761221625e-01 5.265915743478537525e-01
+3.586308928051362699e-01 6.527625972609284455e-01 5.249544352005411918e-01
+3.508936232465371674e-01 6.500187029053001719e-01 5.233768303957324619e-01
+3.431277348645550562e-01 6.472621506436356809e-01 5.218577640245062321e-01
+3.353355552299603914e-01 6.444920106677175520e-01 5.203963563323180663e-01
+3.275188103490194735e-01 6.417074699067215615e-01 5.189919719540163623e-01
+3.196814435511296515e-01 6.389074409416231060e-01 5.176430585409529384e-01
+3.118254758119217707e-01 6.360911463304157465e-01 5.163488722475468862e-01
+3.039555214161791530e-01 6.332575133378499643e-01 5.151075596956975478e-01
+2.960748324121407205e-01 6.304057046767445049e-01 5.139178767894679867e-01
+2.881881143962810587e-01 6.275347641630057982e-01 5.127779478270290126e-01
+2.803003746086680792e-01 6.246437759477415641e-01 5.116857725517640620e-01
+2.724162323640093031e-01 6.217319406932720893e-01 5.106395912364674050e-01
+2.645425291505308918e-01 6.187983086880044503e-01 5.096365792929340444e-01
+2.566840197606024554e-01 6.158422311486778655e-01 5.086750547256451149e-01
+2.488489441844971561e-01 6.128628192186393875e-01 5.077515718650474907e-01
+2.410430130087069522e-01 6.098595200479223211e-01 5.068641518721540562e-01
+2.332749143253212143e-01 6.068316286127126702e-01 5.060092633925864503e-01
+2.255521696872271886e-01 6.037786523436265984e-01 5.051841613954050070e-01
+2.178835011739876371e-01 6.007001216855215597e-01 5.043855354959408954e-01
+2.102776619158149840e-01 5.975956842983582984e-01 5.036102222376415138e-01
+2.027443124327554802e-01 5.944650539898058694e-01 5.028546409645925364e-01
+1.952924636272905801e-01 5.913080959200207598e-01 5.021159025525618880e-01
+1.879334378838529440e-01 5.881246912104457492e-01 5.013896313522919757e-01
+1.806761031013389140e-01 5.849149331180006905e-01 5.006736479698321585e-01
+1.735328783097749850e-01 5.816789154432452369e-01 4.999631315071642601e-01
+1.665133003434038084e-01 5.784169089899582339e-01 4.992561455145328453e-01
+1.596300036906863895e-01 5.751292412901443107e-01 4.985481743532478860e-01
+1.528937099908951325e-01 5.718163393279495077e-01 4.978371217540351057e-01
+1.463171276735238113e-01 5.684787369209851615e-01 4.971190242696297834e-01
+1.399119531735926458e-01 5.651170059000043544e-01 4.963918396953513335e-01
+1.336912106530599997e-01 5.617318570854707982e-01 4.956519172255148820e-01
+1.276672732366210816e-01 5.583239554235875923e-01 4.948978636889357907e-01
+1.218535592637135234e-01 5.548942058020517321e-01 4.941256571865651481e-01
+1.162631754482068569e-01 5.514432364311973034e-01 4.933355557142476422e-01
+1.109091719419828259e-01 5.479722539284174188e-01 4.925220286879308795e-01
+1.058058868411170528e-01 5.444817357603629615e-01 4.916873206428047927e-01
+1.009651127375016111e-01 5.409730397620680087e-01 4.908260102866368046e-01
+9.640117372078826907e-02 5.374467824904106683e-01 4.899392661237967350e-01
+9.212706115366336990e-02 5.339038791645212001e-01 4.890257976801760109e-01
+8.815110303261089464e-02 5.303457163263245455e-01 4.880817131293228583e-01
+8.448832972524200624e-02 5.267726392289812098e-01 4.871097239159773440e-01
+8.114572394888117102e-02 5.231858403590214923e-01 4.861073630469811557e-01
+7.812721320542403980e-02 5.195865216476734938e-01 4.850725749743695636e-01
+7.544312997722565917e-02 5.159750173542567708e-01 4.840076729265158639e-01
+7.309574065371191032e-02 5.123522156200341904e-01 4.829119931483520367e-01
+7.107372065756567547e-02 5.087198306495862576e-01 4.817814896929000779e-01
+6.938287907938911481e-02 5.050778255979795350e-01 4.806197953737798012e-01
+6.801610562745827315e-02 5.014269919387287500e-01 4.794267081520149909e-01
+6.696293828126623215e-02 4.977680989992983585e-01 4.782021118153178540e-01
+6.619782080433814220e-02 4.941027658684106760e-01 4.769429100625798834e-01
+6.571558023976076246e-02 4.904308747270616498e-01 4.756523204648347991e-01
+6.549820807888259711e-02 4.867530881918184504e-01 4.743305399824718216e-01
+6.552566064603559948e-02 4.830700650743400826e-01 4.729777438223161101e-01
+6.577673858968982601e-02 4.793824370720338179e-01 4.715941633832017588e-01
+6.622677049492370349e-02 4.756910136151853430e-01 4.701794827815656830e-01
+6.685019795786503738e-02 4.719966397538147285e-01 4.687333314519904204e-01
+6.763272639280798471e-02 4.682993582933911436e-01 4.672575858662252890e-01
+6.855374817251533304e-02 4.645996843636931994e-01 4.657526519729214276e-01
+6.959365457471067273e-02 4.608981063279830592e-01 4.642189680611767399e-01
+7.073403782879061907e-02 4.571950861446216208e-01 4.626570010388615928e-01
+7.195781915786156335e-02 4.534910598140922677e-01 4.610672429543411499e-01
+7.324931366840245484e-02 4.497864378980456768e-01 4.594502077591564038e-01
+7.459424408415230023e-02 4.460816060979165276e-01 4.578064283072901808e-01
+7.597971511267428979e-02 4.423769258816079852e-01 4.561364535850265800e-01
+7.739415915996109008e-02 4.386727351476746306e-01 4.544408461640829233e-01
+7.882726258105521300e-02 4.349693489173894201e-01 4.527201798696426915e-01
+8.026987997778653461e-02 4.312670600459782566e-01 4.509750376540915817e-01
+8.171394242970148047e-02 4.275661399451892164e-01 4.492060096666721791e-01
+8.315236408743081897e-02 4.238668393102046350e-01 4.474136915088433031e-01
+8.457895032121595658e-02 4.201693888446985103e-01 4.455986826648858368e-01
+8.598830961259482097e-02 4.164739999785817548e-01 4.437615850971945997e-01
+8.737577058920215078e-02 4.127808655736769361e-01 4.419030019956885491e-01
+8.873730500447504776e-02 4.090901606132017476e-01 4.400235366709063789e-01
+9.006945702453716951e-02 4.054020428715323643e-01 4.381237915805220595e-01
+9.136927887187012987e-02 4.017166535612498035e-01 4.362043674792987491e-01
+9.263427266200571775e-02 3.980341179549674036e-01 4.342658626828024837e-01
+9.386233813144639893e-02 3.943545459798681874e-01 4.323088724355508838e-01
+9.505172587236093706e-02 3.906780327832828914e-01 4.303339883746660766e-01
+9.620003933222870396e-02 3.870047637840662302e-01 4.283416262899890081e-01
+9.729997123759509536e-02 3.833354963232004087e-01 4.263312615677605777e-01
+9.835741884413440328e-02 3.796695548525758634e-01 4.243046936775203282e-01
+9.937169919107982641e-02 3.760069784468507703e-01 4.222625006231348066e-01
+1.003423119365809690e-01 3.723477936835040136e-01 4.202052548968338574e-01
+1.012689167529539358e-01 3.686920150348446112e-01 4.181335233490640069e-01
+1.021513134274243950e-01 3.650396452261166491e-01 4.160478671051655586e-01
+1.029884320307208612e-01 3.613907991323849767e-01 4.139486582680417803e-01
+1.037719209811681642e-01 3.577465259466254266e-01 4.118348877541359032e-01
+1.045112201334900126e-01 3.541056562885774861e-01 4.097088092956981398e-01
+1.052065591856250482e-01 3.504681464569319171e-01 4.075709632165070984e-01
+1.058582376509708545e-01 3.468339423292918222e-01 4.054218838433404359e-01
+1.064666158592602885e-01 3.432029795356145718e-01 4.032620996037361571e-01
+1.070239159802940931e-01 3.395763147211236510e-01 4.010905648833596460e-01
+1.075355258379605550e-01 3.359532282299735328e-01 3.989087127976621017e-01
+1.080052802278752000e-01 3.323331728550899533e-01 3.967176863054378000e-01
+1.084337294201929702e-01 3.287160421828903556e-01 3.945179917556369542e-01
+1.088202096165073185e-01 3.251019032868823211e-01 3.923098843692563453e-01
+1.091556968975302966e-01 3.214920812428978536e-01 3.900919340676701208e-01
+1.094518269158459012e-01 3.178848431435130073e-01 3.878667847148202785e-01
+1.097092559883022234e-01 3.142800415550652815e-01 3.856349205402823110e-01
+1.099286556573810802e-01 3.106775192369479188e-01 3.833968205472055302e-01
+1.100986315611906241e-01 3.070790351009552999e-01 3.811504545068737926e-01
+1.102317288825286901e-01 3.034825829921489193e-01 3.788986922133656954e-01
+1.103290785873510815e-01 2.998879083652261635e-01 3.766420819050353419e-01
+1.103893448894039397e-01 2.962951553198432397e-01 3.743806401368951486e-01
+1.104047114339987423e-01 2.927055780381122019e-01 3.721129484539063559e-01
+1.103867349279119559e-01 2.891171759115234718e-01 3.698417464033080804e-01
+1.103361572207214036e-01 2.855297163446686715e-01 3.675674754730824945e-01
+1.102460152182262176e-01 2.819443225282238785e-01 3.652888319764409086e-01
+1.101198294511886444e-01 2.783603021914852760e-01 3.630068099573608986e-01
+1.099635342633853707e-01 2.747764822051754763e-01 3.607229892872333421e-01
+1.097748910210358808e-01 2.711931376089152246e-01 3.584370856671010852e-01
+1.095478763802813504e-01 2.676112773022403801e-01 3.561478615212890775e-01
+1.092932808921200649e-01 2.640287615628073015e-01 3.538580573547516761e-01
+1.090116287119651528e-01 2.604453159192556266e-01 3.515680214913912693e-01
+1.086913329090623825e-01 2.568630402753477870e-01 3.492750549670107785e-01
+1.083460004297124302e-01 2.532791299120676354e-01 3.469826761312421182e-01
+1.079763885418836000e-01 2.496932209057829977e-01 3.446912766824791197e-01
+1.075713140889580088e-01 2.461073946949010050e-01 3.423980926413837667e-01
+1.071428862568302165e-01 2.425189920877232619e-01 3.401063918909076889e-01
+1.066927192498384747e-01 2.389274243968986799e-01 3.378167764830257158e-01
+1.062093640276061124e-01 2.353348932541681759e-01 3.355262248019345583e-01
+1.057055066316897329e-01 2.317384538919968207e-01 3.332383062494437276e-01
+1.051814556007013568e-01 2.281377376539149293e-01 3.309532535866355762e-01
+1.046272664909374817e-01 2.245346804307608024e-01 3.286682704446855507e-01
+1.040556247342821483e-01 2.209261472703716311e-01 3.263871052200472134e-01
+1.034637486817424901e-01 2.173124203806320875e-01 3.241090419310820314e-01
+1.028468845169810686e-01 2.136942776676366007e-01 3.218326666201724029e-01
+1.022150454689789434e-01 2.100689913462399083e-01 3.195611195376787395e-01
+1.015620277820400430e-01 2.064376400065636719e-01 3.172925125709148420e-01
+1.008900241588315538e-01 2.027992883367119026e-01 3.150275553737127421e-01
+1.002054858430543316e-01 1.991518634625495388e-01 3.127684262427183892e-01
+9.949803783218733044e-02 1.954975058870322413e-01 3.105116763778897337e-01
+9.877832247043097369e-02 1.918329889556127654e-01 3.082609202522414993e-01
+9.804493118338306057e-02 1.881580898967480098e-01 3.060157402408537064e-01
+9.729328810023782359e-02 1.844734436312414905e-01 3.037745103921251633e-01
+9.653316478613682694e-02 1.807757562460599599e-01 3.015407883893915231e-01
+9.575619444438937533e-02 1.770666290075273708e-01 2.993115284087380368e-01
+9.496899572502048859e-02 1.733434725855039771e-01 2.970892156823352059e-01
+9.417284157369981701e-02 1.696050767223750977e-01 2.948744162588470830e-01
+9.336173420340779239e-02 1.658523274558137695e-01 2.926648040593683997e-01
+9.254607948203208423e-02 1.620811665705463311e-01 2.904645825457518593e-01
+9.171714479257989105e-02 1.582931942356169963e-01 2.882702798507874586e-01
+9.088231952195491292e-02 1.544850037627045203e-01 2.860850125083750362e-01
+9.004099984169053328e-02 1.506555099870153513e-01 2.839086654207542693e-01
+8.919012906146844832e-02 1.468043594975814992e-01 2.817400195447572475e-01
+8.833858505105957049e-02 1.429270910011002649e-01 2.795831537842536352e-01
+8.747533041314431435e-02 1.390258052165279645e-01 2.774332852121961235e-01
+8.661249189260347703e-02 1.350944971238551839e-01 2.752961432065319514e-01
+8.574385298640457842e-02 1.311333174761502018e-01 2.731691209373900975e-01
+8.487294239495335457e-02 1.271387529060027943e-01 2.710541708402016137e-01
+8.400180885962132971e-02 1.231074880892656653e-01 2.689526699064171411e-01
+8.312616532498406929e-02 1.190383729463048712e-01 2.668628892216621806e-01
+8.225559928700268419e-02 1.149244079727295142e-01 2.647901677800857390e-01]; 
+
+   case 'ice'
+      RGB = [1.531167435543729846e-02 2.252059388699531942e-02 7.272873735907764425e-02
+1.800549591959003243e-02 2.544551608389769570e-02 7.841879116825511975e-02
+2.090133006203173313e-02 2.852652245071044673e-02 8.407771577420969367e-02
+2.399818650587986005e-02 3.176264327218273481e-02 8.970750416351327972e-02
+2.729775749004114890e-02 3.514909496851363613e-02 9.532647230499821656e-02
+3.080428146052393429e-02 3.867708164670261017e-02 1.009662673440025749e-01
+3.450984373415445089e-02 4.229955636714784889e-02 1.065828165743578915e-01
+3.841359784116892689e-02 4.587404239998996852e-02 1.121776340643418912e-01
+4.245789616397358662e-02 4.939963679832150983e-02 1.177960773094180458e-01
+4.645777532344794875e-02 5.288489849108807955e-02 1.234176036286754041e-01
+5.041621762087678676e-02 5.633788824565918313e-02 1.290216830927681801e-01
+5.433779516873311205e-02 5.975737503280462853e-02 1.346239246672657763e-01
+5.823000255128838593e-02 6.313585840823013329e-02 1.402651739202840087e-01
+6.208647351275981691e-02 6.648865889594307577e-02 1.458921724026617794e-01
+6.590890827576056932e-02 6.981759532833076154e-02 1.515056185497818952e-01
+6.970669712558172360e-02 7.310909804078333241e-02 1.571701055775910905e-01
+7.347360805650121618e-02 7.637815581467355397e-02 1.628308265129313204e-01
+7.720982185882321880e-02 7.962820406611839652e-02 1.684800394051645944e-01
+8.092190572547824923e-02 8.284856571837034833e-02 1.741697304708636207e-01
+8.460722520622676601e-02 8.604719820880801784e-02 1.798725773914293391e-01
+8.826407983557263415e-02 8.923087230589588081e-02 1.855652548242135713e-01
+9.189748856643911723e-02 9.238991627825218766e-02 1.912953251540190358e-01
+9.550605637353798416e-02 9.552936548231369396e-02 1.970466344723810770e-01
+9.908760199831237458e-02 9.865735598928837558e-02 2.027885080271309981e-01
+1.026464276979975609e-01 1.017632832609889626e-01 2.085729006866037794e-01
+1.061807481293115807e-01 1.048533987828409453e-01 2.143771619600378098e-01
+1.096889023760894977e-01 1.079351702016392300e-01 2.201721871249775475e-01
+1.131748168296289048e-01 1.109951338044804781e-01 2.260236443434878173e-01
+1.166355654717963208e-01 1.140448383112346031e-01 2.318836318580280165e-01
+1.200706770784045196e-01 1.170883693387409774e-01 2.377372345137335197e-01
+1.234831126917021182e-01 1.201095785266100835e-01 2.436640854600494177e-01
+1.268694769189046001e-01 1.231271973707054601e-01 2.495809234356071160e-01
+1.302307935855599175e-01 1.261348273230401829e-01 2.555217697948003464e-01
+1.335669536543798996e-01 1.291293381943951213e-01 2.615060473838256017e-01
+1.368768735891793542e-01 1.321228390190112012e-01 2.674792268238664894e-01
+1.401607222303006828e-01 1.351007751267265800e-01 2.735164638309879881e-01
+1.434177197831119077e-01 1.380764808543884503e-01 2.795564348972031099e-01
+1.466474902267766722e-01 1.410468359199091026e-01 2.856183790033576808e-01
+1.498489657362017669e-01 1.440082826282148287e-01 2.917246687573430419e-01
+1.530229361070791771e-01 1.469729643095797900e-01 2.978170527656492372e-01
+1.561658891044421793e-01 1.499237839873007738e-01 3.039884751881400948e-01
+1.592803696822101267e-01 1.528796824181726244e-01 3.101441051875748478e-01
+1.623627513097627983e-01 1.558287612260276789e-01 3.163512211275710251e-01
+1.654142439360292427e-01 1.587796212856360245e-01 3.225680108254420086e-01
+1.684327965090609003e-01 1.617293084063355368e-01 3.288148930781844004e-01
+1.714174532656698446e-01 1.646790560305917694e-01 3.350897686326997915e-01
+1.743682562241114509e-01 1.676319105902342177e-01 3.413798820958920399e-01
+1.772818953778146633e-01 1.705846382439054620e-01 3.477088809140311265e-01
+1.801603634233710782e-01 1.735435075165488450e-01 3.540447583078508709e-01
+1.829984949769703495e-01 1.765034834295459432e-01 3.604229741636628126e-01
+1.857993799242090571e-01 1.794715454820642320e-01 3.668060399217007994e-01
+1.885572370561371114e-01 1.824432159549585208e-01 3.732275719698777694e-01
+1.912746410827655397e-01 1.854240146696699842e-01 3.796579628109393312e-01
+1.939472187446417972e-01 1.884119984733164943e-01 3.861158710011389772e-01
+1.965746218202921169e-01 1.914094687319768118e-01 3.925922579541862301e-01
+1.991567237202455654e-01 1.944185425759841768e-01 3.990785276243757895e-01
+2.016870280617926170e-01 1.974370231299186207e-01 4.055979452145534458e-01
+2.041733231959791395e-01 2.004720971993999568e-01 4.121034638774260794e-01
+2.065989175964332847e-01 2.035163285945146838e-01 4.186611530978023854e-01
+2.089769981124778853e-01 2.065792251897101139e-01 4.252032229400294350e-01
+2.112968541690966595e-01 2.096575161864902004e-01 4.317649751357993670e-01
+2.135580062034990179e-01 2.127534028876823524e-01 4.383374070580626225e-01
+2.157654857120719361e-01 2.158705959834085197e-01 4.448946358553702574e-01
+2.179027467031688925e-01 2.190056896370822792e-01 4.514821666358075913e-01
+2.199801557481101399e-01 2.221640817576028826e-01 4.580565150394946827e-01
+2.219970327313536274e-01 2.253470663668500351e-01 4.646129330923238210e-01
+2.239359400161920477e-01 2.285528452407099564e-01 4.711900504070519191e-01
+2.258093253298022463e-01 2.317859657097744996e-01 4.777445723729306093e-01
+2.276150386234590539e-01 2.350474802331274371e-01 4.842749179389621017e-01
+2.293411129842480300e-01 2.383375691596468227e-01 4.908001225098672093e-01
+2.309905102772738528e-01 2.416584626823640725e-01 4.973037406011600603e-01
+2.325653899945122616e-01 2.450118207268658921e-01 5.037733153263704855e-01
+2.340634217066668299e-01 2.483988011172711396e-01 5.102061969115925244e-01
+2.354739391855478203e-01 2.518205609488499142e-01 5.166133649735229483e-01
+2.368010268106580107e-01 2.552786891057904350e-01 5.229787612622226467e-01
+2.380459056014049835e-01 2.587743537954566575e-01 5.292929958163873350e-01
+2.392069166726323859e-01 2.623086175634496420e-01 5.355517448643010159e-01
+2.402826487140223288e-01 2.658824888638082751e-01 5.417502762699162311e-01
+2.412690379036540600e-01 2.694971451746652202e-01 5.478870668064361737e-01
+2.421646534827242569e-01 2.731536075359688454e-01 5.539567283353189486e-01
+2.429737663975502504e-01 2.768521950965758815e-01 5.599478852923390759e-01
+2.436964271327693443e-01 2.805934002738960653e-01 5.658549936523274981e-01
+2.443331406488099544e-01 2.843775500649446952e-01 5.716723986670918523e-01
+2.448849019911867875e-01 2.882047861966390290e-01 5.773944132373918237e-01
+2.453532261044997220e-01 2.920750479307156477e-01 5.830154006066263772e-01
+2.457401707423141346e-01 2.959880581924350662e-01 5.885298594478888257e-01
+2.460483514874983180e-01 2.999433136125404520e-01 5.939325092217595525e-01
+2.462809480744551638e-01 3.039400789577370587e-01 5.992183735671519074e-01
+2.464417014302806019e-01 3.079773862803035778e-01 6.043828594654379049e-01
+2.465349011179689409e-01 3.120540389489538935e-01 6.094218299971551067e-01
+2.465653631589233563e-01 3.161686205399514837e-01 6.143316686920637926e-01
+2.465383985194727345e-01 3.203195083804638021e-01 6.191093337508785099e-01
+2.464597728499572371e-01 3.245048913568406301e-01 6.237524007769893464e-01
+2.463356583484295759e-01 3.287227914401089635e-01 6.282590930787467220e-01
+2.461725788681820570e-01 3.329710882494058555e-01 6.326282990625464731e-01
+2.459773495859159942e-01 3.372475458788758984e-01 6.368595767065934332e-01
+2.457570126857825388e-01 3.415498411593856920e-01 6.409531455573861392e-01
+2.455187705883344895e-01 3.458755925146314025e-01 6.449098671004442895e-01
+2.452699182619971774e-01 3.502223885999685149e-01 6.487312147029243858e-01
+2.450177761015216449e-01 3.545878159769456084e-01 6.524192345935843074e-01
+2.447696247503935441e-01 3.589694851701816236e-01 6.559764995268344556e-01
+2.445326430925611194e-01 3.633650545677170052e-01 6.594060568707836856e-01
+2.443138504548736933e-01 3.677722517524962265e-01 6.627113728687089589e-01
+2.441200538578628954e-01 3.721888919827969766e-01 6.658962747586536501e-01
+2.439578009410017234e-01 3.766128936655925852e-01 6.689648923098728828e-01
+2.438333389800677597e-01 3.810422907829071337e-01 6.719216001624749302e-01
+2.437527166088169217e-01 3.854752048525493247e-01 6.747709927211151815e-01
+2.437215868067584834e-01 3.899098965838322384e-01 6.775178104933975431e-01
+2.437449691034339061e-01 3.943448306666547665e-01 6.801668228779059744e-01
+2.438275942988586409e-01 3.987785785872524635e-01 6.827228592773180171e-01
+2.439737834704199804e-01 4.032098481987659855e-01 6.851907482426946583e-01
+2.441874434968405727e-01 4.076374812199010655e-01 6.875752826204606372e-01
+2.444720671645514987e-01 4.120604493040472271e-01 6.898811893971661391e-01
+2.448307373736109405e-01 4.164778489638755743e-01 6.921131040949622948e-01
+2.452661349520961487e-01 4.208888956165576789e-01 6.942755494834951246e-01
+2.457805495927352646e-01 4.252929169900244166e-01 6.963729183108620102e-01
+2.463758934401020784e-01 4.296893461032649797e-01 6.984094597147249006e-01
+2.470537168787759197e-01 4.340777140051458871e-01 7.003892689515083259e-01
+2.478152261001809742e-01 4.384576424279668649e-01 7.023162800736911793e-01
+2.486613020564674703e-01 4.428288364849563008e-01 7.041942611893784454e-01
+2.495925204424470634e-01 4.471910775158167151e-01 7.060268119517866259e-01
+2.506091723801374682e-01 4.515442161617032046e-01 7.078173629464002969e-01
+2.517112855138260996e-01 4.558881657309074575e-01 7.095691766682096224e-01
+2.528986452564736531e-01 4.602228958990267071e-01 7.112853498087290394e-01
+2.541708159598920491e-01 4.645484267725444316e-01 7.129688166009963135e-01
+2.555271618114321464e-01 4.688648233323279846e-01 7.146223529992972168e-01
+2.569668672886404326e-01 4.731721902633665988e-01 7.162485814980906751e-01
+2.584889570301312500e-01 4.774706671689665227e-01 7.178499764208978728e-01
+2.600923150060586719e-01 4.817604241612176152e-01 7.194288695343957762e-01
+2.617757028946650633e-01 4.860416578147523370e-01 7.209874558653309728e-01
+2.635377775926647237e-01 4.903145874672710236e-01 7.225277996180770046e-01
+2.653771078065290112e-01 4.945794518478790480e-01 7.240518401086443179e-01
+2.672921896891591875e-01 4.988365060127348261e-01 7.255613976468211490e-01
+2.692814615020625024e-01 5.030860185666778950e-01 7.270581793119333947e-01
+2.713433172968592322e-01 5.073282691492603247e-01 7.285437845796602918e-01
+2.734761196220429347e-01 5.115635461637654258e-01 7.300197107675363561e-01
+2.756782112712242161e-01 5.157921447283394523e-01 7.314873582754417569e-01
+2.779479260979498267e-01 5.200143648290899145e-01 7.329480356046209621e-01
+2.802835989294344965e-01 5.242305096559424227e-01 7.344029641448335255e-01
+2.826835746175559994e-01 5.284408841030631132e-01 7.358532827242095786e-01
+2.851462162701056124e-01 5.326457934167407871e-01 7.373000519204292447e-01
+2.876699127088762631e-01 5.368455419747276691e-01 7.387442581351216786e-01
+2.902530852036724895e-01 5.410404321821302709e-01 7.401868174359758079e-01
+2.928941935330091062e-01 5.452307634699987693e-01 7.416285791730816701e-01
+2.955917414230262996e-01 5.494168313837994866e-01 7.430703293775968721e-01
+2.983442814164117829e-01 5.535989267498891975e-01 7.445127939520038707e-01
+3.011504192226619470e-01 5.577773349090259236e-01 7.459566416621068452e-01
+3.040088176001567444e-01 5.619523350067550105e-01 7.474024869415085703e-01
+3.069181998192390681e-01 5.661241993312904341e-01 7.488508925197547850e-01
+3.098773527540035766e-01 5.702931926901545490e-01 7.503023718855809099e-01
+3.128851296485514188e-01 5.744595718174968502e-01 7.517573915968616127e-01
+3.159404526017212111e-01 5.786235848045079289e-01 7.532163734489466522e-01
+3.190423148119757579e-01 5.827854705458642703e-01 7.546796965130810886e-01
+3.221897826221614136e-01 5.869454581955374506e-01 7.561476990566410317e-01
+3.253819974015382255e-01 5.911037666256608869e-01 7.576206803568952264e-01
+3.286181773003176154e-01 5.952606038824642676e-01 7.590989024200323065e-01
+3.318976189096972118e-01 5.994161666335501293e-01 7.605825916172537227e-01
+3.352196988582024639e-01 6.035706396009887786e-01 7.620719402498039585e-01
+3.385838753729217276e-01 6.077241949749224714e-01 7.635671080549891743e-01
+3.419896898320652912e-01 6.118769918024981047e-01 7.650682236654324786e-01
+3.454367683330621941e-01 6.160291753470886755e-01 7.665753860341149029e-01
+3.489248232981658759e-01 6.201808764128988738e-01 7.680886658381395060e-01
+3.524536551372777216e-01 6.243322106301375518e-01 7.696081068746097875e-01
+3.560231539852872773e-01 6.284832776960781464e-01 7.711337274625911231e-01
+3.596333015286877766e-01 6.326341605674558055e-01 7.726655218657797475e-01
+3.632841729334435055e-01 6.367849245998262742e-01 7.742034617512983941e-01
+3.669759388831845826e-01 6.409356166297031088e-01 7.757474977008770312e-01
+3.707088677332940896e-01 6.450862639955934341e-01 7.772975607916928764e-01
+3.744833277827505080e-01 6.492368734944050646e-01 7.788535642652039126e-01
+3.782997896612683153e-01 6.533874302701627723e-01 7.804154053034927374e-01
+3.821588288242804832e-01 6.575378966326091978e-01 7.819829669338883571e-01
+3.860611281425825880e-01 6.616882108040403887e-01 7.835561200839490370e-01
+3.900074788490647260e-01 6.658383310313947812e-01 7.851343555476577585e-01
+3.939988161696960089e-01 6.699882294160507401e-01 7.867167620565498343e-01
+3.980361943268375668e-01 6.741376428249236108e-01 7.883041180552029514e-01
+4.021207666563880734e-01 6.782863970632155848e-01 7.898962603978111341e-01
+4.062538088695973326e-01 6.824342860499125196e-01 7.914930279577012673e-01
+4.104367215482290221e-01 6.865810701317770492e-01 7.930942653099937178e-01
+4.146710323688317379e-01 6.907264743609855540e-01 7.946998267750712275e-01
+4.189583979456862339e-01 6.948701867544626598e-01 7.963095808534970121e-01
+4.233007615496491849e-01 6.990119462600449252e-01 7.979223720379219342e-01
+4.277003131396773239e-01 7.031514402219964932e-01 7.995369318160842065e-01
+4.321588772737992579e-01 7.072880516513097016e-01 8.011551464379941256e-01
+4.366786594847170133e-01 7.114212963902242226e-01 8.027769966740599950e-01
+4.412619934972313862e-01 7.155506445548852623e-01 8.044025095123854552e-01
+4.459117519235324401e-01 7.196756076604832186e-01 8.060302209280784114e-01
+4.506310977664646500e-01 7.237956107627850910e-01 8.076586979980320269e-01
+4.554220533607292176e-01 7.279097909870729799e-01 8.092910180447286939e-01
+4.602874296132978826e-01 7.320174174690982083e-01 8.109274975540664565e-01
+4.652312929955615961e-01 7.361178015074247849e-01 8.125654680881110314e-01
+4.702567132124945704e-01 7.402100378643735601e-01 8.142058631482380626e-01
+4.753658389170350440e-01 7.442931579112735951e-01 8.158518248191980460e-01
+4.805629989896973986e-01 7.483662565565446512e-01 8.175014285494428545e-01
+4.858519412014848382e-01 7.524283052190463561e-01 8.191547180510726500e-01
+4.912340123610521858e-01 7.564782715855419282e-01 8.208164230788980165e-01
+4.967149567998503934e-01 7.605150334733405959e-01 8.224828836016547795e-01
+5.022958597070651399e-01 7.645375459922270078e-01 8.241590313627700226e-01
+5.079798024989584659e-01 7.685447202464326111e-01 8.258458806918314021e-01
+5.137703056538149848e-01 7.725354056237694333e-01 8.275437918161917539e-01
+5.196672668780889515e-01 7.765087356564679411e-01 8.292580362563429786e-01
+5.256748803701343231e-01 7.804635126371105569e-01 8.309874864714956733e-01
+5.317909415132198170e-01 7.843991695298314637e-01 8.327389435984492438e-01
+5.380183963455860141e-01 7.883146743347385632e-01 8.345120959574837682e-01
+5.443539980151446134e-01 7.922097498034269547e-01 8.363133084981756449e-01
+5.507978944105677011e-01 7.960838061951434064e-01 8.381442735434428970e-01
+5.573464847507825226e-01 7.999368256977259506e-01 8.400099169225816453e-01
+5.639964685183691540e-01 8.037688733081099768e-01 8.419139099857662067e-01
+5.707439504576503619e-01 8.075802108116317823e-01 8.438596871365160457e-01
+5.775827793152761291e-01 8.113715803382598457e-01 8.458518352418533670e-01
+5.845080419432422403e-01 8.151436572177973572e-01 8.478930504633812593e-01
+5.915124079987543748e-01 8.188976525325087907e-01 8.499872730184475644e-01
+5.985892343607183141e-01 8.226347979507546704e-01 8.521371651406997039e-01
+6.057310635784716180e-01 8.263566000070049489e-01 8.543453938014868854e-01
+6.129312041392928068e-01 8.300645419348708920e-01 8.566135671784518291e-01
+6.201810118833709362e-01 8.337606033851390208e-01 8.589441737734759830e-01
+6.274752226888651307e-01 8.374461999354567698e-01 8.613371235909390577e-01
+6.348052546879014990e-01 8.411235111538640785e-01 8.637941988526561810e-01
+6.421662450761786989e-01 8.447940336859747212e-01 8.663146822269915948e-01
+6.495514829538971968e-01 8.484597208451428729e-01 8.688988750843767983e-01
+6.569557263949438175e-01 8.521222755106645508e-01 8.715461474797051578e-01
+6.643745794481599187e-01 8.557832593714448377e-01 8.742554091588357057e-01
+6.718027324561179903e-01 8.594444859176019191e-01 8.770260761340837874e-01
+6.792376399817107169e-01 8.631071655185147407e-01 8.798561771298264444e-01
+6.866744996748753715e-01 8.667730629390760777e-01 8.827449654904524490e-01
+6.941118238786820882e-01 8.704431765687035139e-01 8.856901351703097003e-01
+7.015458707010223671e-01 8.741190620646153153e-01 8.886905723641257415e-01
+7.089754732757992395e-01 8.778016574148082007e-01 8.917440383282461136e-01
+7.163982330943452492e-01 8.814922113687924110e-01 8.948489665590808606e-01
+7.238129051546876580e-01 8.851916892315870866e-01 8.980033539675886800e-01
+7.312183003174410612e-01 8.889010427774228784e-01 9.012052612065797330e-01
+7.386131643998257168e-01 8.926212432189428725e-01 9.044528466250297827e-01
+7.459969493141647146e-01 8.963530775374040083e-01 9.077440285167398537e-01
+7.533688986576650981e-01 9.000973872698678768e-01 9.110768604175860652e-01
+7.607282142588290830e-01 9.038550280130126513e-01 9.144494382489702922e-01
+7.680754104857114850e-01 9.076264985347726189e-01 9.178593407704264129e-01
+7.754086380463782735e-01 9.114129489376284754e-01 9.213050832886523489e-01
+7.827298656902449414e-01 9.152144780056820084e-01 9.247836307542580681e-01
+7.900362445563153813e-01 9.190325332798994218e-01 9.282937907772289554e-01
+7.973305798287271262e-01 9.228669845876559252e-01 9.318320585938411060e-01
+8.046093603619434154e-01 9.267195025159972177e-01 9.353972761089011101e-01
+8.118762521869845594e-01 9.305897288106829146e-01 9.389853083637165199e-01
+8.191262403047088192e-01 9.344798221317863751e-01 9.425952041745783161e-01
+8.263649511242520118e-01 9.383888950299160703e-01 9.462215400179357916e-01
+8.335857899787124659e-01 9.423196480542496145e-01 9.498633823775902707e-01
+8.407925617377357552e-01 9.462718000641171523e-01 9.535152044674145566e-01
+8.479820749115867251e-01 9.502471776949116267e-01 9.571737430642662803e-01
+8.551509499643907830e-01 9.542477482079624318e-01 9.608352118692636834e-01
+8.623025919332756306e-01 9.582735696851335527e-01 9.644920284238761576e-01
+8.694298092423108359e-01 9.623279528450340292e-01 9.681401921277593692e-01
+8.765283703934805271e-01 9.664134798374283131e-01 9.717733036205912223e-01
+8.835932645286533882e-01 9.705331352089504593e-01 9.753839343072715495e-01
+8.906174074108087479e-01 9.746907136098538205e-01 9.789640951138071090e-01
+8.975917485137434593e-01 9.788908041054119602e-01 9.825051528035059212e-01
+9.045013427138774986e-01 9.831399005223971921e-01 9.860005773650694083e-01
+9.113300542301955298e-01 9.874449459956177177e-01 9.894442642623689776e-01
+9.180592960081255249e-01 9.918135358838490179e-01 9.928328638314803944e-01]; 
+
+   case 'rai' % rain
+      RGB = [9.345899218079473103e-01 9.308468535401923649e-01 9.527121598234155053e-01
+9.317427384147130009e-01 9.265559169859566291e-01 9.461412847112190549e-01
+9.288323151212234396e-01 9.222903185306413620e-01 9.397258851930316848e-01
+9.259014656554976908e-01 9.180422099085187027e-01 9.333811647328228434e-01
+9.229490910874459386e-01 9.138118271011793636e-01 9.271087656276950639e-01
+9.199777474389575493e-01 9.095987388769878335e-01 9.209029155030628022e-01
+9.169834318717224875e-01 9.054037550731951489e-01 9.147707495523473842e-01
+9.139687227512254264e-01 9.012264798371935060e-01 9.087060404880972220e-01
+9.109285940266572679e-01 8.970679577253415360e-01 9.027176878689184836e-01
+9.078584183128727281e-01 8.929291295619988800e-01 8.968142426813552337e-01
+9.047531063535361184e-01 8.888107271516731966e-01 8.910081776220351024e-01
+9.016111241776750829e-01 8.847109979588536621e-01 8.853222084733923802e-01
+8.984773600020180551e-01 8.806072441106347348e-01 8.798005863890318023e-01
+8.957156578807984326e-01 8.763733055795923654e-01 8.742439953591307766e-01
+8.934429895784954390e-01 8.720376849990935098e-01 8.679132827136474271e-01
+8.911862289430210193e-01 8.677553071034195264e-01 8.611451293770118198e-01
+8.889359451831089221e-01 8.635014856893418189e-01 8.542095914675652546e-01
+8.867116938006094351e-01 8.592609509355686459e-01 8.471741066544885568e-01
+8.845266087736632921e-01 8.550269405833543779e-01 8.400488385945689140e-01
+8.823737459191345334e-01 8.507991274319443020e-01 8.328611900775441113e-01
+8.802551767793974635e-01 8.465759973509723313e-01 8.256144073735601774e-01
+8.781723156295014876e-01 8.423565112404021171e-01 8.183096182593350143e-01
+8.761185057025142608e-01 8.381415609718929627e-01 8.109618862038079357e-01
+8.740930473614691998e-01 8.339308508975332712e-01 8.035739688319240015e-01
+8.720952068860511330e-01 8.297241543120810192e-01 7.961481162736230299e-01
+8.701280658536796331e-01 8.255204305809771270e-01 7.886787238448926818e-01
+8.681860361945246130e-01 8.213205960844648379e-01 7.811769076946536439e-01
+8.662688819092574377e-01 8.171244030607883735e-01 7.736431720476375506e-01
+8.643746025935312716e-01 8.129320197586197283e-01 7.660813810727764572e-01
+8.625034879855904002e-01 8.087431068747142904e-01 7.584907829855329631e-01
+8.606546147206539654e-01 8.045576097831967921e-01 7.508729509413730741e-01
+8.588266729702948021e-01 8.003755742930238615e-01 7.432301838409289818e-01
+8.569623869913148839e-01 7.962191366375533930e-01 7.355859431728856146e-01
+8.550504938518290743e-01 7.920970771858082404e-01 7.278998746292554278e-01
+8.530849581648412006e-01 7.880123772917803082e-01 7.201683837184543746e-01
+8.510553489556228479e-01 7.839691860217244956e-01 7.123959661845170599e-01
+8.489330228346508855e-01 7.799787143731991002e-01 7.045972788504087925e-01
+8.467217087867040526e-01 7.760402896946996254e-01 6.967642500138357953e-01
+8.444094675146763818e-01 7.721590919106836592e-01 6.888992560450724056e-01
+8.419826946126204303e-01 7.683408791881058963e-01 6.810067521686843373e-01
+8.393858369850137890e-01 7.646065720377731578e-01 6.731281946153443441e-01
+8.366346261960659891e-01 7.609512703952114876e-01 6.652451363576846743e-01
+8.336844747046829873e-01 7.573915193569474846e-01 6.573955009267002936e-01
+8.305100496696308232e-01 7.539367518776275423e-01 6.496025429014220531e-01
+8.270795595522559829e-01 7.505979386186598656e-01 6.419039537235261550e-01
+8.233795339766563082e-01 7.473786068829111340e-01 6.343290132703457429e-01
+8.193527781515338448e-01 7.442973494709732574e-01 6.269543660928612594e-01
+8.150187381418861898e-01 7.413436869430644061e-01 6.197992186956774452e-01
+8.103671933740643762e-01 7.385171999523609809e-01 6.129154791955783166e-01
+8.053792270659873020e-01 7.358201042585071905e-01 6.063662921639977332e-01
+8.001091487009975856e-01 7.332281055474541009e-01 6.001460682932164836e-01
+7.945789023747689139e-01 7.307291829728559396e-01 5.942715305031909256e-01
+7.888006960769626819e-01 7.283155171589156263e-01 5.887591680450797726e-01
+7.828500773466386953e-01 7.259575374530320424e-01 5.835578074632412626e-01
+7.767061505166655833e-01 7.236609437130246958e-01 5.786949863565322705e-01
+7.704515166608618681e-01 7.213952841209190225e-01 5.740985082128049477e-01
+7.640735967706561160e-01 7.191644341873529855e-01 5.697767469661422224e-01
+7.576101573082332230e-01 7.169548408227417458e-01 5.656900597267850994e-01
+7.510868163729491620e-01 7.147576249864890929e-01 5.618076267722970085e-01
+7.445073291928260284e-01 7.125716412063957117e-01 5.581177337866775057e-01
+7.378726341804960898e-01 7.103967525656292858e-01 5.546105609434751615e-01
+7.312079622811540336e-01 7.082247740235839695e-01 5.512528292120718598e-01
+7.245223864166319139e-01 7.060527915800670629e-01 5.480303444985812344e-01
+7.178179126910454455e-01 7.038807344069457628e-01 5.449299707841194218e-01
+7.111005957174848513e-01 7.017068393561574080e-01 5.419396078954504814e-01
+7.043748082863551252e-01 6.995299965106114293e-01 5.390480504976655762e-01
+6.976428841540770476e-01 6.973498542230505137e-01 5.362451349156007741e-01
+6.909082389019516324e-01 6.951656049847189101e-01 5.335213672589386169e-01
+6.841729694681116802e-01 6.929769158960692454e-01 5.308681129719833303e-01
+6.774389689374403778e-01 6.907834967201277321e-01 5.282774232028493167e-01
+6.707084440130518521e-01 6.885849153944831880e-01 5.257418638258782861e-01
+6.639830918601468124e-01 6.863809064730829190e-01 5.232546086946955333e-01
+6.572628938239016838e-01 6.841717926007404582e-01 5.208097057295569821e-01
+6.505310175956583452e-01 6.819627798840676158e-01 5.184181252103758908e-01
+6.438052208637921048e-01 6.797486679084566719e-01 5.160591646972285673e-01
+6.370832823378153043e-01 6.775304469295674314e-01 5.137285370282342889e-01
+6.303705085075785863e-01 6.753064791862326555e-01 5.114205507376848869e-01
+6.236618961603839217e-01 6.730786409287115024e-01 5.091324121853675333e-01
+6.169335288716588650e-01 6.708537547863058226e-01 5.068827462564762243e-01
+6.102104324218552422e-01 6.686246254359063945e-01 5.046462757174120517e-01
+6.034898306929903367e-01 6.663922665431509795e-01 5.024201930501221991e-01
+5.967676345670763771e-01 6.641578140003113750e-01 5.002054482667135371e-01
+5.900234330755329548e-01 6.619267690502547152e-01 4.980175294001410458e-01
+5.832786395653163369e-01 6.596933136673572839e-01 4.958328661006338733e-01
+5.765340663187056292e-01 6.574571405303393234e-01 4.936489952759946509e-01
+5.697582662671993869e-01 6.552266499575032377e-01 4.914884851056534054e-01
+5.629730101905379147e-01 6.529958318145387963e-01 4.893302200215370878e-01
+5.561847270851512093e-01 6.507627829419350141e-01 4.871678208383450337e-01
+5.493551097307179942e-01 6.485375215149538075e-01 4.850265872147694890e-01
+5.425256305514831734e-01 6.463076874918682879e-01 4.828887171920029364e-01
+5.356612977693596678e-01 6.440835181737865067e-01 4.807599721985225671e-01
+5.287922197832997107e-01 6.418536560641270317e-01 4.786600904179345028e-01
+5.218850344197893953e-01 6.396291731218471943e-01 4.765733407479101902e-01
+5.149376539505706729e-01 6.374099915253575999e-01 4.745006244225868364e-01
+5.079766080089844760e-01 6.351862479551418916e-01 4.724595195428232253e-01
+5.009755431565769968e-01 6.329662155198152451e-01 4.704378162646060679e-01
+4.939285311779693655e-01 6.307509252620584483e-01 4.684356727521749586e-01
+4.868490205117793068e-01 6.285349533886431805e-01 4.664642845323079823e-01
+4.797346535241335252e-01 6.263183759111613513e-01 4.645235778249863778e-01
+4.725684462540446495e-01 6.241056609282084056e-01 4.626084796977160685e-01
+4.653487483821732718e-01 6.218962626011749206e-01 4.607211778296827487e-01
+4.580958304602617548e-01 6.196828431511897106e-01 4.588752179328909331e-01
+4.507924598809112671e-01 6.174698402959368781e-01 4.570641185207933721e-01
+4.434287999890613730e-01 6.152589986197224414e-01 4.552877084880677105e-01
+4.360045483020283386e-01 6.130492733714320019e-01 4.535480340189612103e-01
+4.285254867993349426e-01 6.108377350391323013e-01 4.518515677783579432e-01
+4.209986373257934011e-01 6.086212623350139017e-01 4.502044135688367255e-01
+4.134050226321455135e-01 6.064040523424363283e-01 4.486012173551829352e-01
+4.057442294957287476e-01 6.041849412176459877e-01 4.470442374703665345e-01
+3.980103804981384719e-01 6.019638983605486438e-01 4.455375274544488007e-01
+3.902063406549050040e-01 5.997389567937310151e-01 4.440824403586798308e-01
+3.823330219069303038e-01 5.975084478594807624e-01 4.426827692274404313e-01
+3.743994820234466392e-01 5.952685939479632760e-01 4.413464089373288490e-01
+3.663895342858319859e-01 5.930221303804210642e-01 4.400695063624517345e-01
+3.583027331816978078e-01 5.907676584219552218e-01 4.388545840675231458e-01
+3.501387968837356146e-01 5.885037242420276815e-01 4.377041322664636525e-01
+3.418974318117430355e-01 5.862288538856508247e-01 4.366206692939140765e-01
+3.335788357145262895e-01 5.839414671596280249e-01 4.356065575056938810e-01
+3.251833166933908448e-01 5.816399536413853211e-01 4.346641338993996184e-01
+3.167127839080131069e-01 5.793224392963164382e-01 4.337951239114763990e-01
+3.081690890879107969e-01 5.769870856598143805e-01 4.330012470667766733e-01
+2.995554017471688812e-01 5.746318865559506550e-01 4.322836619258556556e-01
+2.908749326626684506e-01 5.722548869131893756e-01 4.316434590630243706e-01
+2.821317603555529852e-01 5.698540727656976612e-01 4.310813189213763552e-01
+2.733327132702973450e-01 5.674271544637526921e-01 4.305966557525391369e-01
+2.644844543662756564e-01 5.649720080402284017e-01 4.301888298931589305e-01
+2.555934335426425785e-01 5.624866759386734083e-01 4.298572085857526592e-01
+2.466705752105852745e-01 5.599688410786282100e-01 4.295989836123562111e-01
+2.377250969065505815e-01 5.574166090031631438e-01 4.294119794031988069e-01
+2.287974288505327247e-01 5.548237349096721838e-01 4.292976581628650257e-01
+2.198778468774868489e-01 5.521921840191843511e-01 4.292473634163982976e-01
+2.109782428379559649e-01 5.495207384038700571e-01 4.292558006274433957e-01
+2.021129920761091103e-01 5.468081421831656463e-01 4.293174959448664008e-01
+1.932970840289524594e-01 5.440534055393755342e-01 4.294264526279761851e-01
+1.845458994968318112e-01 5.412558313792091846e-01 4.295762645205056240e-01
+1.758747242186788073e-01 5.384150471574241648e-01 4.297604082769522771e-01
+1.672992650076766952e-01 5.355309682751767664e-01 4.299719066013750202e-01
+1.588637533307953875e-01 5.326007152638789766e-01 4.302077664091210063e-01
+1.505683016211286918e-01 5.296267950764182997e-01 4.304586487604788458e-01
+1.424122559523727238e-01 5.266116064108816719e-01 4.307170632116699704e-01
+1.344085890794944338e-01 5.235562755642496624e-01 4.309766346935359205e-01
+1.265690627070247265e-01 5.204621553185740934e-01 4.312317121888489257e-01
+1.189042023704675322e-01 5.173307669769749984e-01 4.314776038001592595e-01
+1.114246335252623010e-01 5.141637863856259871e-01 4.317091179175960858e-01
+1.041396630107440102e-01 5.109629971472293697e-01 4.319221604647225932e-01
+9.705780332103111641e-02 5.077302369436778040e-01 4.321134999997184867e-01
+9.018737534593762595e-02 5.044674058535019157e-01 4.322799148264460101e-01
+8.353621797943017180e-02 5.011764305824176757e-01 4.324186435951988816e-01
+7.711177607780977938e-02 4.978592446938872595e-01 4.325273326417442554e-01
+7.092118659398483071e-02 4.945177606318418850e-01 4.326041097483195319e-01
+6.497112946544478240e-02 4.911539160136639270e-01 4.326469613219918742e-01
+5.926836252985791947e-02 4.877695081001428012e-01 4.326551664213393877e-01
+5.381952845223608034e-02 4.843663141865421351e-01 4.326279059471102584e-01
+4.863121397792258965e-02 4.809460446320443228e-01 4.325646545440974822e-01
+4.370962682231178259e-02 4.775103648435110038e-01 4.324649641775900610e-01
+3.905112341714592900e-02 4.740608794693825234e-01 4.323285604649402813e-01
+3.496888770654411893e-02 4.705940487017962748e-01 4.321582669839647561e-01
+3.143475353593022659e-02 4.671148853349996188e-01 4.319569510186779815e-01
+2.822939081579376591e-02 4.636310861634273528e-01 4.317228454236091695e-01
+2.532316922257733458e-02 4.601429344885760719e-01 4.314611817794063997e-01
+2.271621196496529868e-02 4.566502451321696188e-01 4.311704916368828688e-01
+2.041021909707332535e-02 4.531526976651161776e-01 4.308500436842361836e-01
+1.840750332198089895e-02 4.496499166924270985e-01 4.304993286811824582e-01
+1.672948316457980103e-02 4.461408970806849950e-01 4.301165746135667267e-01
+1.538958862814012937e-02 4.426249994353490536e-01 4.296990539873294934e-01
+1.435413070644788770e-02 4.391028750771387434e-01 4.292495981309878972e-01
+1.362474263231045098e-02 4.355741563391084537e-01 4.287674174473046218e-01
+1.320277209836126682e-02 4.320384817616971795e-01 4.282516463471394697e-01
+1.308981022524788491e-02 4.284954582700414294e-01 4.277015087056333931e-01
+1.328604261598065328e-02 4.249447744648222614e-01 4.271158498149437155e-01
+1.379162556189269216e-02 4.213861028127094399e-01 4.264935743343106211e-01
+1.460601943539846688e-02 4.178191447440461337e-01 4.258334705527410113e-01
+1.572829683901560624e-02 4.142436086986017174e-01 4.251343095806048300e-01
+1.715690277980158954e-02 4.106592256461835122e-01 4.243947975574930975e-01
+1.888987211594707338e-02 4.070657340951429060e-01 4.236136390627659454e-01
+2.092392860184388512e-02 4.034629389123669529e-01 4.227893563025114654e-01
+2.325551642690237841e-02 3.998506428553240677e-01 4.219205349032726371e-01
+2.587976864011615197e-02 3.962287140215077774e-01 4.210056239775798459e-01
+2.879190433075056593e-02 3.925969951003727698e-01 4.200432223313694258e-01
+3.198535565039070661e-02 3.889554251322902556e-01 4.190317351172953564e-01
+3.545196060096311025e-02 3.853040266354982313e-01 4.179694561300110189e-01
+3.918323414610008770e-02 3.816428245764514893e-01 4.168548033419602339e-01
+4.307413522281567514e-02 3.779718375548203335e-01 4.156863315515785251e-01
+4.697176598438539824e-02 3.742911911603020725e-01 4.144624688814931845e-01
+5.086969232374114608e-02 3.706011159074634187e-01 4.131815676575790186e-01
+5.475506718563923764e-02 3.669018229746837667e-01 4.118421970922833131e-01
+5.861718450656796392e-02 3.631935427420149298e-01 4.104430479071176641e-01
+6.244486447080809660e-02 3.594767157385404532e-01 4.089825820635137332e-01
+6.623026614707036575e-02 3.557516605834906143e-01 4.074596950461942813e-01
+6.998642301215993178e-02 3.520178004091850665e-01 4.058682797037249657e-01
+7.368349105094931795e-02 3.482766831924774542e-01 4.042119944889063232e-01
+7.731558236370641990e-02 3.445288253637411868e-01 4.024900881431115462e-01
+8.087676210173380675e-02 3.407748586458358986e-01 4.007018083483494530e-01
+8.436223121714692130e-02 3.370153951525706182e-01 3.988466436336530196e-01
+8.776750670667690657e-02 3.332510976549885595e-01 3.969242240138116662e-01
+9.108869400118912996e-02 3.294826406371675898e-01 3.949343703704463748e-01
+9.432201977980475549e-02 3.257107550258697137e-01 3.928770441587735585e-01
+9.746469555428810549e-02 3.219361155964274857e-01 3.907524596946260753e-01
+1.005137065660947904e-01 3.181594785366577693e-01 3.885609392070024093e-01
+1.034667829102825787e-01 3.143815541170876804e-01 3.863030299565164416e-01
+1.063234262084384596e-01 3.106029224571804637e-01 3.839789892033815266e-01
+1.090886774331554510e-01 3.068237947954853828e-01 3.815863917579840892e-01
+1.117516829166099457e-01 3.030455295972052654e-01 3.791303642957770670e-01
+1.143116567201993838e-01 2.992687663919490482e-01 3.766121406045498943e-01
+1.167670145114603486e-01 2.954942819265780063e-01 3.740330281243106070e-01
+1.191180972380510850e-01 2.917225736922783308e-01 3.713945692144456912e-01
+1.213648735453208283e-01 2.879541937006656616e-01 3.686983734293431958e-01
+1.235072626972245069e-01 2.841897016932966036e-01 3.659461400710485868e-01
+1.255450172977832790e-01 2.804296856157670326e-01 3.631396556775801088e-01
+1.274793353662031781e-01 2.766744826581494787e-01 3.602808188600382100e-01
+1.293108779906596839e-01 2.729245043006408022e-01 3.573715653564341621e-01
+1.310404714307908669e-01 2.691801184313953876e-01 3.544138839210129732e-01
+1.326690608188904053e-01 2.654416544155482338e-01 3.514098053356367601e-01
+1.341977870856449484e-01 2.617093858425083575e-01 3.483613905337877847e-01
+1.356276601953987637e-01 2.579835900091309586e-01 3.452707288070074876e-01
+1.369600353052619901e-01 2.542644558590421155e-01 3.421399178935836116e-01
+1.381965371841252788e-01 2.505520924183904374e-01 3.389710465513224302e-01
+1.393387446776407912e-01 2.468465884786986142e-01 3.357661977904279893e-01
+1.403881322096931505e-01 2.431480256484742086e-01 3.325274517113971373e-01
+1.413463644264434660e-01 2.394564173026069165e-01 3.292568607367298839e-01
+1.422150204492807768e-01 2.357717647764656088e-01 3.259564633033559256e-01
+1.430241411872627821e-01 2.320878753057155075e-01 3.226241875019154048e-01
+1.437206808568328997e-01 2.284105260214233102e-01 3.193108148264102164e-01
+1.443167183567656553e-01 2.247376722352139033e-01 3.160160321612740519e-01
+1.448172234122950819e-01 2.210687136739122871e-01 3.127401980544551319e-01
+1.452270337553944191e-01 2.174029799543943375e-01 3.094836465796388381e-01
+1.455503303753529210e-01 2.137398650159642033e-01 3.062467330039463920e-01
+1.457916124736327868e-01 2.100785929129088681e-01 3.030297495827782850e-01
+1.459553844105018761e-01 2.064182886269750883e-01 2.998329600953320573e-01
+1.460450738341802501e-01 2.027582683855788659e-01 2.966566757283218836e-01
+1.460639705951699008e-01 1.990978105534875198e-01 2.935011720342979302e-01
+1.460132039806032178e-01 1.954367333080272440e-01 2.903667875231270012e-01
+1.458975819392981654e-01 1.917737643090239308e-01 2.872535927880979223e-01
+1.457218019293262112e-01 1.881075422549224607e-01 2.841616643549851884e-01
+1.454887645921259243e-01 1.844371298576089335e-01 2.810911343097461934e-01
+1.452032543446299950e-01 1.807609202544633309e-01 2.780420590388025248e-01
+1.448676044101755434e-01 1.770779511005421691e-01 2.750145417929056313e-01
+1.444780219943526678e-01 1.733892008568175547e-01 2.720086027887532176e-01
+1.440413431328422811e-01 1.696921848838350289e-01 2.690241039839223469e-01
+1.435643975093518765e-01 1.659841914110155581e-01 2.660610427935709565e-01
+1.430436238988290198e-01 1.622659427289601941e-01 2.631191819624335571e-01
+1.424820569142489501e-01 1.585358695252926109e-01 2.601982981359077240e-01
+1.418869430340855831e-01 1.547906985932924473e-01 2.572984244859990999e-01
+1.412504255878399562e-01 1.510326235840303566e-01 2.544186879929528633e-01
+1.405847553781910952e-01 1.472562100690701925e-01 2.515594367076940396e-01
+1.398866955406879442e-01 1.434617145934828086e-01 2.487199683062358835e-01
+1.391555552990901834e-01 1.396484041206631221e-01 2.458995874149805250e-01
+1.383972370289156262e-01 1.358126929549585971e-01 2.430982825013351944e-01
+1.376119899169210015e-01 1.319530974585303440e-01 2.403154706816485464e-01
+1.368012914537950486e-01 1.280674462139133607e-01 2.375506853082148262e-01
+1.359688085852648887e-01 1.241523347647442155e-01 2.348038243218179000e-01
+1.351079666263714507e-01 1.202088638287985289e-01 2.320731097859522474e-01
+1.342294527149119343e-01 1.162298274455028368e-01 2.293596493763065958e-01
+1.333340174081290574e-01 1.122121767595207487e-01 2.266630565550546428e-01
+1.324249399956005380e-01 1.081511805079039545e-01 2.239835024348004189e-01
+1.315721561940036699e-01 1.040055590640546201e-01 2.213363669373892839e-01];
+
+   case {'dem','top'} % dem or topo
+      RGB = [1.561019746507273376e-01 1.026082525875711138e-01 1.727215696232307918e-01
+1.614878059346168959e-01 1.086331782717616379e-01 1.834416540200605461e-01
+1.668117590877864764e-01 1.145994139402238821e-01 1.942594655847655616e-01
+1.720703275074147443e-01 1.205129174047056828e-01 2.051860710532931176e-01
+1.772595702951434704e-01 1.263792859047284667e-01 2.162309361702130506e-01
+1.823751828761793481e-01 1.322038111876145949e-01 2.274020989868827392e-01
+1.874125186315797886e-01 1.379915476831030108e-01 2.387062880680187460e-01
+1.923665760685599468e-01 1.437473901381048913e-01 2.501489823140411461e-01
+1.972319620276792862e-01 1.494761585027865047e-01 2.617344119314569673e-01
+2.020028382233076125e-01 1.551826890051333785e-01 2.734655011163185101e-01
+2.066728560428846562e-01 1.608719311731062473e-01 2.853437530392856081e-01
+2.112350828916275125e-01 1.665490510713014960e-01 2.973690772834624574e-01
+2.156819223383368844e-01 1.722195412332822306e-01 3.095395593647118360e-01
+2.200027865362182422e-01 1.778889096627078448e-01 3.218593457818205161e-01
+2.241821302892643142e-01 1.835626593748518609e-01 3.343431537784405938e-01
+2.282155151615900546e-01 1.892493734782149939e-01 3.469585312854190362e-01
+2.320913707908846546e-01 1.949572807641995476e-01 3.596924727656225507e-01
+2.357791582066215419e-01 2.006936504843463420e-01 3.725810406048237766e-01
+2.392760085101002243e-01 2.064712127546999287e-01 3.855616338648150121e-01
+2.425474613143962510e-01 2.123011804696942062e-01 3.986531809377649171e-01
+2.455817950644241798e-01 2.181991605590304917e-01 4.117955160707330586e-01
+2.483306606950595463e-01 2.241817667402334346e-01 4.250033167249620547e-01
+2.507721436866522935e-01 2.302701237479483076e-01 4.382036814126420432e-01
+2.528659964243425984e-01 2.364882912834416206e-01 4.513446141213755536e-01
+2.545675711557803811e-01 2.428643843006248471e-01 4.643557571030281772e-01
+2.558322794870629413e-01 2.494300496133808887e-01 4.771399728195321877e-01
+2.566151212870083631e-01 2.562195453869526296e-01 4.895770754997314511e-01
+2.568729082739400482e-01 2.632680806498599591e-01 5.015251413221865073e-01
+2.566051651711689918e-01 2.706008890121900934e-01 5.127963599343589030e-01
+2.558254018044066047e-01 2.782328077909240194e-01 5.232189983935346955e-01
+2.545978636988186494e-01 2.861560770732184955e-01 5.326370186681820273e-01
+2.530378388279626023e-01 2.943355684042912035e-01 5.409499814033098541e-01
+2.512817651002536290e-01 3.027167370222472731e-01 5.481422664464320471e-01
+2.494682375867288693e-01 3.112353605277175528e-01 5.542766318947622839e-01
+2.477157002362878613e-01 3.198299095156284522e-01 5.594704462476630669e-01
+2.461121481740833894e-01 3.284495884603169102e-01 5.638648470620498676e-01
+2.447220255685461088e-01 3.370546900675063240e-01 5.676029832475817383e-01
+2.435790408918375727e-01 3.456199709880173332e-01 5.708127541670769967e-01
+2.426978313653707087e-01 3.541305556383861908e-01 5.736016010478480753e-01
+2.420946965383475313e-01 3.625739944720036134e-01 5.760653956197256953e-01
+2.417595622535183009e-01 3.709493751547713325e-01 5.782729391945388153e-01
+2.416897018162703636e-01 3.792548337300427064e-01 5.802858143751018494e-01
+2.418784445905285962e-01 3.874910027793410650e-01 5.821542521747482546e-01
+2.423091294682429564e-01 3.956627542073260506e-01 5.839131390484204598e-01
+2.429695407602900925e-01 4.037738393736669540e-01 5.855939512690606641e-01
+2.438461792188084676e-01 4.118287207942545325e-01 5.872218507211212080e-01
+2.449256139784778408e-01 4.198319765418777605e-01 5.888176525512366366e-01
+2.461926332303804310e-01 4.277888629705645096e-01 5.903967722170088139e-01
+2.476314436738927260e-01 4.357048438328084417e-01 5.919706842419948378e-01
+2.492275176071283571e-01 4.435849323073600692e-01 5.935491293785424283e-01
+2.509665668417216944e-01 4.514340415062205181e-01 5.951395103673859932e-01
+2.528346862021874641e-01 4.592569393176054171e-01 5.967472668238706923e-01
+2.548184740794410263e-01 4.670582183399953347e-01 5.983761730113198452e-01
+2.569051367797046126e-01 4.748422758923547815e-01 6.000285749995881712e-01
+2.590825816132030779e-01 4.826133005480903182e-01 6.017055804809932074e-01
+2.613396987489819967e-01 4.903751992421883643e-01 6.034074237284018372e-01
+2.636659810857353015e-01 4.981317406526836744e-01 6.051330956906521008e-01
+2.660516582874621339e-01 5.058865272594796902e-01 6.068805013837572648e-01
+2.684882380171457750e-01 5.136428405367017280e-01 6.086470522439324515e-01
+2.709683308416185876e-01 5.214037172983150281e-01 6.104294711750373192e-01
+2.734857257205313141e-01 5.291719440816851083e-01 6.122238564648385672e-01
+2.760354668808263079e-01 5.369500509042623992e-01 6.140257392505246159e-01
+2.786139324558262742e-01 5.447403043452749838e-01 6.158301364812402978e-01
+2.812189151446758406e-01 5.525446999518639490e-01 6.176316008625786225e-01
+2.838497050469647731e-01 5.603649539888247988e-01 6.194242689076802089e-01
+2.865071747347951447e-01 5.682024945496734203e-01 6.212019079466474247e-01
+2.891935293105973304e-01 5.760585509806988025e-01 6.229575870601862242e-01
+2.919132661023912667e-01 5.839338872257091584e-01 6.246846842638799080e-01
+2.946726143633343065e-01 5.918289843891730850e-01 6.263762188290394883e-01
+2.974797079780254205e-01 5.997440045832753697e-01 6.280249877540684533e-01
+3.003447193279823457e-01 6.076787658883653354e-01 6.296236627075371128e-01
+3.032799496578738041e-01 6.156327286641396501e-01 6.311648425953061414e-01
+3.062999162775806861e-01 6.236049805794583456e-01 6.326411091031564071e-01
+3.094214341373541788e-01 6.315942201545601264e-01 6.340450861601970578e-01
+3.126636885203824545e-01 6.395987386132337971e-01 6.353695045172913503e-01
+3.160482946464280851e-01 6.476163998706647718e-01 6.366072729215248582e-01
+3.195993388733257556e-01 6.556446185422359907e-01 6.377515576836865208e-01
+3.233433949344308722e-01 6.636803359579184214e-01 6.387958727683986648e-01
+3.273095072934468774e-01 6.717199943156246800e-01 6.397341828681051279e-01
+3.315291322901112725e-01 6.797595093162658308e-01 6.405610222271946874e-01
+3.360351011011302735e-01 6.877945827659479594e-01 6.412695960850323118e-01
+3.408640318201912600e-01 6.958197818437616977e-01 6.418569321473704958e-01
+3.460540467004642462e-01 7.038291754672099110e-01 6.423205839967465192e-01
+3.516446005650431528e-01 7.118162697085735902e-01 6.426589560156208414e-01
+3.576762479926827720e-01 7.197739138067411613e-01 6.428719883285997083e-01
+3.641894512092864744e-01 7.276949011320993366e-01 6.429557270674552960e-01
+3.712266123106295335e-01 7.355700686179795778e-01 6.429189618774799886e-01
+3.788278449989629926e-01 7.433902546660990929e-01 6.427683061328856029e-01
+3.870322615152646528e-01 7.511462095764531721e-01 6.425055472082883412e-01
+3.958750262046074608e-01 7.588270315806920907e-01 6.421508285001665817e-01
+4.053883482522956383e-01 7.664223146281371468e-01 6.417151578859574546e-01
+4.155968407812616339e-01 7.739210344346504344e-01 6.412227317683711902e-01
+4.265195639210723755e-01 7.813124732411278472e-01 6.406960731925235297e-01
+4.381634653667463852e-01 7.885863788123392837e-01 6.401694292235835526e-01
+4.505287643111087204e-01 7.957333261733031682e-01 6.396742566585853496e-01
+4.635986539031755060e-01 8.027456073395251579e-01 6.392548734619343254e-01
+4.773469739538908629e-01 8.096172922533247940e-01 6.389538165444101914e-01
+4.917330703220189059e-01 8.163450533427777378e-01 6.388184799685107107e-01
+5.067050118087177424e-01 8.229283397233977393e-01 6.388963162980869637e-01
+5.221997330825246530e-01 8.293697946738645133e-01 6.392346216632595057e-01
+5.381481232862911357e-01 8.356748924828519831e-01 6.398763669277579558e-01
+5.544783665092802849e-01 8.418515860497588488e-01 6.408587965640016870e-01
+5.711115213696185133e-01 8.479112775740021979e-01 6.422171169895777298e-01
+5.879840953182007279e-01 8.538646600753627691e-01 6.439710905713145195e-01
+6.050194699551968425e-01 8.597270135144634562e-01 6.461439080647282118e-01
+6.221681809999368706e-01 8.655099786991408140e-01 6.487403091120448329e-01
+6.393757001353049807e-01 8.712277338509245572e-01 6.517658303256151919e-01
+6.565929334411800822e-01 8.768947704523611941e-01 6.552210497573525139e-01
+6.737933070789577927e-01 8.825213731875580780e-01 6.590961736178440056e-01
+6.909478082204841831e-01 8.881191135591984809e-01 6.633823202371271766e-01
+7.080340865696405084e-01 8.936985513356989763e-01 6.680678941563225059e-01
+7.250358375800118882e-01 8.992691342626382145e-01 6.731393536848668813e-01
+7.419421046029871514e-01 9.048391559449654453e-01 6.785819005039074314e-01
+7.587465580267132026e-01 9.104157595099175992e-01 6.843800748081978469e-01
+7.754467945117471395e-01 9.160049747102424478e-01 6.905182510191696377e-01
+7.920436855303579771e-01 9.216117772405966191e-01 6.969810377273069069e-01
+8.085407925860420564e-01 9.272401607530683654e-01 7.037535913222745521e-01
+8.249438571064254822e-01 9.328932140048489252e-01 7.108218561594963347e-01
+8.412422934868647451e-01 9.385792958890862847e-01 7.181734629573161000e-01
+8.574559441871676402e-01 9.442965454208677167e-01 7.257948454644865821e-01
+8.735986658557798323e-01 9.500445573198598170e-01 7.336747582572585857e-01
+8.896512126622908578e-01 9.558344072358454513e-01 7.418023698547455691e-01
+9.056514559384564178e-01 9.616567079910524063e-01 7.501688017241657791e-01
+9.215850348376466439e-01 9.675205198521025229e-01 7.587646801057830181e-01
+9.374799177499437697e-01 9.734191074102575003e-01 7.675843461643131471e-01
+9.533233708513803029e-01 9.793607550577946297e-01 7.766197776697654209e-01
+9.691488355955474310e-01 9.853357520972024775e-01 7.858697059005903540e-01
+9.849374457410008388e-01 9.913545172197536504e-01 7.953271573982337861e-01
+5.237510688652501772e-02 1.452546228317073418e-01 7.751950190923809214e-02
+5.622628551680566161e-02 1.523457500722602831e-01 8.040279400454641845e-02
+6.007072166263575236e-02 1.593963705834963718e-01 8.324827330002768089e-02
+6.385205670255669763e-02 1.664232541404700172e-01 8.599651952193751447e-02
+6.756460338718012215e-02 1.734310951493893138e-01 8.864073081078854832e-02
+7.121409992638502717e-02 1.804216402085259963e-01 9.118655316732873772e-02
+7.479859509186639888e-02 1.873981595163995706e-01 9.363114185870033412e-02
+7.832196854697648369e-02 1.943623428359516903e-01 9.597819921125996800e-02
+8.178249510428708957e-02 2.013169715395964343e-01 9.822505767280115263e-02
+8.518219102467458614e-02 2.082637805063026204e-01 1.003733079455831900e-01
+8.852454157738801066e-02 2.152040105951080751e-01 1.024263253707545229e-01
+9.181013978863614144e-02 2.221394247672267563e-01 1.043841327744766678e-01
+9.503809838243432173e-02 2.290719902760253168e-01 1.062449430282469132e-01
+9.821010670676499910e-02 2.360029705984670323e-01 1.080100113958255836e-01
+1.013286574784400540e-01 2.429333482333665417e-01 1.096815914631605327e-01
+1.043934471701543076e-01 2.498646410896294690e-01 1.112585290437959340e-01
+1.074478296880792549e-01 2.567911108934768372e-01 1.127437202480449374e-01
+1.106260709129789077e-01 2.636946096457899458e-01 1.140997527427590474e-01
+1.139531706355643714e-01 2.705743606077580798e-01 1.152896296272559462e-01
+1.174768136636618332e-01 2.774250521408649361e-01 1.162908535730605153e-01
+1.213000971217181034e-01 2.842316842811704602e-01 1.170941428738193346e-01
+1.255340801183247312e-01 2.909784812573655843e-01 1.176678790007481823e-01
+1.303876420091158728e-01 2.976323416853482451e-01 1.179910028329904936e-01
+1.361775080109454139e-01 3.041399107394244794e-01 1.180416347026809198e-01
+1.434815209152097981e-01 3.103930959766884601e-01 1.179050440739785321e-01
+1.530522840464018097e-01 3.162194219215394564e-01 1.180658427800789778e-01
+1.647443020935283886e-01 3.215541086259602332e-01 1.195833209716834211e-01
+1.771224001134716619e-01 3.266051714744359624e-01 1.228383029974784990e-01
+1.893186680349762951e-01 3.315543486926041949e-01 1.273271390832197980e-01
+2.011470216295637714e-01 3.364693524047602802e-01 1.325809211223410999e-01
+2.126201126913634942e-01 3.413717760208538898e-01 1.383257062913032798e-01
+2.237814929443558420e-01 3.462703085838705896e-01 1.444001987716135027e-01
+2.346826504126838242e-01 3.511667839317458850e-01 1.507119862068962424e-01
+2.453653984352425765e-01 3.560619397292786315e-01 1.572020472843533856e-01
+2.558610883411705506e-01 3.609568875025493395e-01 1.638280010474283122e-01
+2.662540618029768935e-01 3.658464720551902194e-01 1.703646574946249270e-01
+2.766375890957337713e-01 3.707202928157689592e-01 1.766042606681927363e-01
+2.870120792807265286e-01 3.755815421723879277e-01 1.825448147300349488e-01
+2.973798701367175723e-01 3.804331662296118188e-01 1.881754975600970214e-01
+3.077385714853347887e-01 3.852782482569529487e-01 1.935061166107706343e-01
+3.180883154404229307e-01 3.901193934855016199e-01 1.985393196990216658e-01
+3.284295845809043213e-01 3.949589033692603168e-01 2.032788009798182638e-01
+3.387636524478269684e-01 3.997986013442899611e-01 2.077297610727937283e-01
+3.490920713533000597e-01 4.046399832445768951e-01 2.118988339848660862e-01
+3.594164000962936090e-01 4.094843090462684243e-01 2.157940430809284771e-01
+3.697392907451491073e-01 4.143322752680254073e-01 2.194241817700406383e-01
+3.800629535453087238e-01 4.191845097543299148e-01 2.227990620346612660e-01
+3.903897648146955057e-01 4.240414062699767728e-01 2.259290789901750585e-01
+4.007222760346346169e-01 4.289031445516293117e-01 2.288249032905495528e-01
+4.110629393231473583e-01 4.337698031247444463e-01 2.314973656174672545e-01
+4.214141346107081465e-01 4.386413758769234783e-01 2.339572260458537833e-01
+4.317776944235289238e-01 4.435179532313937023e-01 2.362153631413001498e-01
+4.421554582272910761e-01 4.483995629988481446e-01 2.382822640902987343e-01
+4.525491728091692312e-01 4.532862202325000367e-01 2.401679621083726013e-01
+4.629617793452492358e-01 4.581777295849584486e-01 2.418766613523773423e-01
+4.733964081044912953e-01 4.630738873787103027e-01 2.434097398165305792e-01
+4.838512407114513025e-01 4.679753825260214994e-01 2.447870115640884969e-01
+4.943280333549550654e-01 4.728822194350857377e-01 2.460147775573224282e-01
+5.048329973069679566e-01 4.777936355059679285e-01 2.470786486003125892e-01
+5.153613297132805249e-01 4.827109910092828859e-01 2.480074378391989298e-01
+5.259177888805488532e-01 4.876337443949864681e-01 2.487920646168808037e-01
+5.365028531047130178e-01 4.925622747803105050e-01 2.494384427855986242e-01
+5.471168004411860464e-01 4.974969337464568153e-01 2.499544447192391661e-01
+5.577636102245655536e-01 5.024372790562059432e-01 2.503320304175396527e-01
+5.684402705004985012e-01 5.073846875194365502e-01 2.505862169320990929e-01
+5.791517884291441653e-01 5.123382474891868821e-01 2.507078127142677859e-01
+5.898977118592134694e-01 5.172986884163369714e-01 2.507019666506383193e-01
+6.006780609928230596e-01 5.222664305265023454e-01 2.505758843768319810e-01
+6.114977839232860202e-01 5.272408795639659251e-01 2.503116806147138718e-01
+6.223533151135658414e-01 5.322233326069301107e-01 2.499311738427514862e-01
+6.332678499493179514e-01 5.372050254585409856e-01 2.494034423308610915e-01
+6.442492302385145475e-01 5.421770814367210534e-01 2.488390322915944863e-01
+6.553235853574364000e-01 5.471283166651099705e-01 2.482154543042252026e-01
+6.664663550324848584e-01 5.520678623990600276e-01 2.475959486163559209e-01
+6.777036161655425328e-01 5.569846941304811283e-01 2.469507035732461664e-01
+6.890381603900364027e-01 5.618763691265282745e-01 2.463040749474359470e-01
+7.004711944468632323e-01 5.667403668940831363e-01 2.456991151603213352e-01
+7.120126265469914895e-01 5.715693590145963787e-01 2.451873584080898616e-01
+7.236929482815777082e-01 5.763444689764196660e-01 2.448364505953754544e-01
+7.355168651190714391e-01 5.810504769862679941e-01 2.449163925191181757e-01
+7.475258033710173722e-01 5.856296804733571726e-01 2.462013043800762579e-01
+7.577499494457186069e-01 5.908503548553694085e-01 2.547905571379186496e-01
+7.635824979182088690e-01 5.981540408918001317e-01 2.695060335496625714e-01
+7.685008057442868079e-01 6.059656669084559910e-01 2.841339736308181596e-01
+7.731069113227515555e-01 6.139683821427790456e-01 2.985534874705023101e-01
+7.775652489236080100e-01 6.220751351043045663e-01 3.127742014086093980e-01
+7.819223609772602002e-01 6.302590951035305089e-01 3.268597741416817137e-01
+7.862053950616281206e-01 6.385051507786967395e-01 3.408479839175493908e-01
+7.904426037822046558e-01 6.467997885569605199e-01 3.547436291978552925e-01
+7.946574580110756791e-01 6.551326370117361853e-01 3.685463547975237342e-01
+7.988337796012735526e-01 6.635096250178373900e-01 3.823162323281250607e-01
+8.030088001380106810e-01 6.719161948372565085e-01 3.960118210517307724e-01
+8.071531032877933276e-01 6.803638144055433878e-01 4.097046504341926854e-01
+8.113041001849377043e-01 6.888386707654255980e-01 4.233460558902438220e-01
+8.154602754828877975e-01 6.973419981167042758e-01 4.369537331203900976e-01
+8.196058627154122478e-01 7.058802025749554288e-01 4.505666902424197429e-01
+8.237568818874844156e-01 7.144480574336203871e-01 4.641691373089507633e-01
+8.279197418246522222e-01 7.230440823922363869e-01 4.777602014010458586e-01
+8.320913582455962132e-01 7.316701160638459100e-01 4.913552497157864241e-01
+8.362534254444016213e-01 7.403317836360435722e-01 5.050123599879642322e-01
+8.404445466425872757e-01 7.490163102116410565e-01 5.186797759271363217e-01
+8.446648066780128028e-01 7.577248034134459465e-01 5.323633003798176055e-01
+8.489177724746317377e-01 7.664572638824626027e-01 5.460621193928290040e-01
+8.532123511454875464e-01 7.752120992980529035e-01 5.597655879096986586e-01
+8.575441658298394998e-01 7.839918355417494489e-01 5.734875036821195371e-01
+8.619146064360614368e-01 7.927971784487287676e-01 5.872309291049341295e-01
+8.663250853209770730e-01 8.016288174204664330e-01 6.009988751772729065e-01
+8.707820725499390013e-01 8.104859794311163323e-01 6.147852119944903215e-01
+8.752928841127598503e-01 8.193677275097041024e-01 6.285824125979521115e-01
+8.798495959466368088e-01 8.282774528639023082e-01 6.424105990843714808e-01
+8.844600743726268588e-01 8.372140407050960853e-01 6.562614074750376947e-01
+8.891318088448872947e-01 8.461765685160849149e-01 6.701273264224787418e-01
+8.938558100770686021e-01 8.551685709847908212e-01 6.840307207014526547e-01
+8.986544949798678239e-01 8.641851727809914951e-01 6.979374582474833222e-01
+9.035103927619371200e-01 8.732320822602240851e-01 7.118855904188222672e-01
+9.084448340107732500e-01 8.823048446731206473e-01 7.258432784575933328e-01
+9.134526188903524524e-01 8.914059055188421343e-01 7.398268438202468822e-01
+9.185353828258727704e-01 9.005358905803305669e-01 7.538405390559674846e-01
+9.237018976170942031e-01 9.096936780016002810e-01 7.678758238575987827e-01
+9.289597403884261029e-01 9.188785152907725795e-01 7.819264008239902308e-01
+9.343121189309133712e-01 9.280907276838803455e-01 7.959940980655445530e-01
+9.397648981125013012e-01 9.373300331729016444e-01 8.100759042872343052e-01
+9.453185269797627077e-01 9.465973949550759992e-01 8.241789901926560580e-01
+9.509801771850346919e-01 9.558922732509941289e-01 8.382978631896051969e-01
+9.567560362262098606e-01 9.652144306850017896e-01 8.524284880105463813e-01
+9.626518136622860267e-01 9.745638255706342568e-01 8.665671328953633568e-01
+9.686647318914142213e-01 9.839422330504176140e-01 8.807260550903986962e-01
+9.747892173640951841e-01 9.933519398287798952e-01 8.949228432580742520e-01];
+
+   case 'dif' % diff
+      RGB = [3.080165225110909760e-02 1.368487040065790861e-01 2.498464445599150041e-01
+3.427654989146505099e-02 1.437127028532935447e-01 2.573239494162229413e-01
+3.787813715751361943e-02 1.505402390894255427e-01 2.647902048135927777e-01
+4.156812010333730406e-02 1.573357824203455158e-01 2.722473736730874894e-01
+4.517179532760850352e-02 1.641035092921928340e-01 2.796979818302940402e-01
+4.870180895529663961e-02 1.708454227759541588e-01 2.871401983091831367e-01
+5.214717289956722485e-02 1.775659175978645810e-01 2.945787303179320804e-01
+5.551364141943334468e-02 1.842674761732781552e-01 3.020142881481510666e-01
+5.878267145509050856e-02 1.909546841623958602e-01 3.094531346302050734e-01
+6.203222237219494645e-02 1.976272549553735325e-01 3.168486096722107348e-01
+6.521944756836103863e-02 2.042923786219034143e-01 3.242073651148437707e-01
+6.833928990190613062e-02 2.109538539883098474e-01 3.315240779733869547e-01
+7.142525636138788436e-02 2.176109417067573770e-01 3.387875021305949974e-01
+7.444813366291075374e-02 2.242694950814881905e-01 3.459978826653878348e-01
+7.742364240945528997e-02 2.309308575473027481e-01 3.531440825838942366e-01
+8.038349666926730697e-02 2.375958135712563091e-01 3.602034285272879832e-01
+8.335927002300280719e-02 2.442657843736594225e-01 3.671480689795030838e-01
+8.636609239069936717e-02 2.509437864845217581e-01 3.739531368808389766e-01
+8.948430357745071340e-02 2.576279992007458053e-01 3.805657110274591748e-01
+9.284058523033036914e-02 2.643149709823168769e-01 3.868990078988859826e-01
+9.668345778728781870e-02 2.709875997226547928e-01 3.928398106800405909e-01
+1.013388564145758508e-01 2.776155815858447617e-01 3.982760426582682145e-01
+1.072606416994524026e-01 2.841399259508246011e-01 4.031326823215036770e-01
+1.144021508332261350e-01 2.905306843282992602e-01 4.075704938470787742e-01
+1.224943240061644456e-01 2.967876633109050588e-01 4.117594183512530703e-01
+1.310866885733582565e-01 3.029446515900964254e-01 4.158631835078765437e-01
+1.399259448624195767e-01 3.090284381668210734e-01 4.199407082636338884e-01
+1.488880808179499637e-01 3.150548708758020844e-01 4.240166515702193939e-01
+1.578509724192573571e-01 3.210422517899584882e-01 4.281197299059529837e-01
+1.668002459411131178e-01 3.269969805380745775e-01 4.322421588278035354e-01
+1.756791094481522930e-01 3.329300099876690844e-01 4.364047384684796027e-01
+1.845067584338563049e-01 3.388436977327556332e-01 4.405895801655569377e-01
+1.932823885204988379e-01 3.447414431949823999e-01 4.447966430522279913e-01
+2.019870459778479455e-01 3.506290556082184984e-01 4.490357338061347625e-01
+2.106258150884706692e-01 3.565090549124025343e-01 4.533046032331278785e-01
+2.192099721057354511e-01 3.623829850143509002e-01 4.575959954859014078e-01
+2.277275445301833456e-01 3.682546023486205078e-01 4.619233127548696971e-01
+2.361939130992141700e-01 3.741245762230066552e-01 4.662760464071296629e-01
+2.446124256489054516e-01 3.799946234495278352e-01 4.706542744097454434e-01
+2.529874638889413330e-01 3.858660993963552444e-01 4.750577339190826254e-01
+2.613341048773878406e-01 3.917383910736120800e-01 4.794796637798960925e-01
+2.696394299537646644e-01 3.976153747948966699e-01 4.839303534081906277e-01
+2.779049881050036919e-01 4.034985563305431566e-01 4.884111449080716372e-01
+2.861363993124647065e-01 4.093887667782184492e-01 4.929196308795206760e-01
+2.943389940220551004e-01 4.152865778556348864e-01 4.974548265548736636e-01
+3.025334250389247748e-01 4.211897194688838386e-01 5.020046120542877022e-01
+3.106982442651501364e-01 4.271034039757660716e-01 5.065852469354352738e-01
+3.188368260273997667e-01 4.330284571606364818e-01 5.111959566876937977e-01
+3.269657343217935996e-01 4.389628772920392552e-01 5.158284147455556301e-01
+3.350816436419064015e-01 4.449085811856242079e-01 5.204856000258065718e-01
+3.431739289326510289e-01 4.508688325370560634e-01 5.251766674651570099e-01
+3.512656069646695189e-01 4.568402506918622374e-01 5.298868083741347101e-01
+3.593506132834142774e-01 4.628250736129231879e-01 5.346217853574988244e-01
+3.674172478556836929e-01 4.688267836740107053e-01 5.393913336663840319e-01
+3.754973469427250743e-01 4.748398228270848676e-01 5.441739055327718955e-01
+3.835625614368970981e-01 4.808709517650425203e-01 5.489922576544932209e-01
+3.916201861820892138e-01 4.869196696786777800e-01 5.538424587653016928e-01
+3.996888560566008164e-01 4.929829902359726401e-01 5.587113837570589769e-01
+4.077452976164708254e-01 4.990668992329919118e-01 5.636172499463452112e-01
+4.158238363550112449e-01 5.051647578473101863e-01 5.685356950340605398e-01
+4.238869442834262147e-01 5.112855069066921665e-01 5.734980302852201728e-01
+4.319617699154935098e-01 5.174241819464946435e-01 5.784833267853278782e-01
+4.400436018491948320e-01 5.235826893170786311e-01 5.834960386464431714e-01
+4.481312796407512233e-01 5.297621053719542283e-01 5.885383546494945550e-01
+4.562263279894743229e-01 5.359626809225542798e-01 5.936121659102355785e-01
+4.643239808635050703e-01 5.421865887597332456e-01 5.987202656129063660e-01
+4.724486870344450362e-01 5.484289164378903791e-01 6.038441893417568762e-01
+4.805822297704738788e-01 5.546948405817618832e-01 6.089980501349065989e-01
+4.887172410474664441e-01 5.609869159623338541e-01 6.141889435023867305e-01
+4.968703980230008699e-01 5.673022611108096136e-01 6.194017678807255400e-01
+5.050230443352835552e-01 5.736457002325791033e-01 6.246566996141469374e-01
+5.132020014296254651e-01 5.800120364495556791e-01 6.299281926614284099e-01
+5.213837697997298903e-01 5.864072076681272616e-01 6.352414056079356275e-01
+5.295840791882617804e-01 5.928284223714805901e-01 6.405818144094436173e-01
+5.377985006631785803e-01 5.992773867217912054e-01 6.459553074236056291e-01
+5.460310568089291605e-01 6.057538951510261782e-01 6.513591302487201640e-01
+5.542803602235417681e-01 6.122589708601943181e-01 6.567960616850564426e-01
+5.625427909572455754e-01 6.187941687382881861e-01 6.622712272448196824e-01
+5.708318382965930082e-01 6.253570561449082188e-01 6.677719395169281480e-01
+5.791326606499368479e-01 6.319518087895650282e-01 6.733150010032186161e-01
+5.874594162608378634e-01 6.385758077347706285e-01 6.788869295566190010e-01
+5.958021954354665306e-01 6.452321052037962579e-01 6.844994504225663245e-01
+6.041669493667392032e-01 6.519200031142581286e-01 6.901476288957911764e-01
+6.125605719486232337e-01 6.586385467570500252e-01 6.958254420726305289e-01
+6.209702599139194090e-01 6.653915355400340514e-01 7.015478000189213637e-01
+6.294086543235715148e-01 6.721766263526947061e-01 7.073025514622064414e-01
+6.378691230472761653e-01 6.789961486811091351e-01 7.130980827587862780e-01
+6.463529402277414793e-01 6.858505203730194122e-01 7.189343580950778856e-01
+6.548667336608775535e-01 6.927388303718031715e-01 7.248055449230874636e-01
+6.634047329440709850e-01 6.996632326198537477e-01 7.307191763991576217e-01
+6.719706356478575282e-01 7.066235438274829361e-01 7.366725743067246146e-01
+6.805691273316444301e-01 7.136193210595811465e-01 7.426619469578672472e-01
+6.891901686164448870e-01 7.206538297392898196e-01 7.486995567627365844e-01
+6.978417441976546565e-01 7.277258099214434228e-01 7.547780354337728648e-01
+7.065266827690414031e-01 7.348352863051689221e-01 7.608955968203486853e-01
+7.152395659488615109e-01 7.419843878319358765e-01 7.670595168287617227e-01
+7.239821407052556834e-01 7.491734241473727574e-01 7.732692164928602896e-01
+7.327590970387688474e-01 7.564019312463790001e-01 7.795208278459410112e-01
+7.415714112445037642e-01 7.636703716037079870e-01 7.858145260879668692e-01
+7.504112152902991939e-01 7.709814701087125410e-01 7.921602549877707622e-01
+7.592858091842216162e-01 7.783339526866095426e-01 7.985510124613616201e-01
+7.681958083667864701e-01 7.857281516038946423e-01 8.049869935018724165e-01
+7.771415943289318173e-01 7.931642615485536840e-01 8.114683168046802342e-01
+7.861210234635496175e-01 8.006428249211288151e-01 8.179973940806203325e-01
+7.951301023947144886e-01 8.081643845947440452e-01 8.245778955860991744e-01
+8.041728469938760337e-01 8.157266105617665408e-01 8.312032233576642781e-01
+8.132456568435891819e-01 8.233280673585187115e-01 8.378734408880845752e-01
+8.223487919825404058e-01 8.309646782111167473e-01 8.445815347091445435e-01
+8.314739162371332926e-01 8.386323940000459665e-01 8.513263697699344767e-01
+8.406130156021551780e-01 8.463239863842642041e-01 8.581012298825883011e-01
+8.497544923553936869e-01 8.540290636742366992e-01 8.648964939043677358e-01
+8.588848363304528721e-01 8.617324046759308187e-01 8.716956826827835236e-01
+8.679835640163260368e-01 8.694139530371515212e-01 8.784788921095023628e-01
+8.770201283066206832e-01 8.770482020713447069e-01 8.852238656983413279e-01
+8.859648522194258913e-01 8.845997703979764371e-01 8.918910598190278316e-01
+8.947687008355051930e-01 8.920276102541201402e-01 8.984445530744430419e-01
+9.033850238565973578e-01 8.992781133601027710e-01 9.048255526813022698e-01
+9.117454267355319386e-01 9.062912781484097069e-01 9.109792984365244761e-01
+9.197772674046712504e-01 9.129962371365842877e-01 9.168355520637951894e-01
+9.273989381574117008e-01 9.193137785263337802e-01 9.223160826098045773e-01
+9.345265056154450356e-01 9.251567923877340727e-01 9.273308757297369365e-01
+9.410568294999761552e-01 9.304383120413204367e-01 9.318033109548278237e-01
+9.469054517188711939e-01 9.350653892052174232e-01 9.356338452806639561e-01
+9.519782306847331954e-01 9.389521024465230514e-01 9.387414682758670192e-01
+9.561855219785392324e-01 9.420212349770757942e-01 9.410568432390962190e-01
+9.594583919916889192e-01 9.442053410129402913e-01 9.425129916890260251e-01
+9.617359608985257546e-01 9.454553544501299589e-01 9.430685634745854529e-01
+9.629655575123797773e-01 9.457446361853111272e-01 9.427146073591580189e-01
+9.629717304152120017e-01 9.451630117299317790e-01 9.411078740469980275e-01
+9.619086196808096512e-01 9.436969537999753133e-01 9.379427077261371926e-01
+9.599163272304170880e-01 9.412870435035790573e-01 9.337158672983336682e-01
+9.570384080931425563e-01 9.379846152444032414e-01 9.285135912753641474e-01
+9.533354457428268036e-01 9.338571023316933895e-01 9.224353821916627671e-01
+9.488865060103991445e-01 9.289840890976138743e-01 9.155685277230518615e-01
+9.437794827762752137e-01 9.234529155688914193e-01 9.080043258769950887e-01
+9.381021433775925678e-01 9.173543171347293690e-01 8.998514836828582775e-01
+9.319492013404071518e-01 9.107783993290641256e-01 8.911882560099286810e-01
+9.254038313424192141e-01 9.038112443270013285e-01 8.821180550321400249e-01
+9.185496533096065841e-01 8.965322509059643341e-01 8.727092681908217298e-01
+9.114540331246678839e-01 8.890124126067980859e-01 8.630519170031795140e-01
+9.041820632910790856e-01 8.813132734312176808e-01 8.531979805537907025e-01
+8.967869578435456734e-01 8.734867291901790010e-01 8.431978773211421530e-01
+8.893098149893794435e-01 8.655753876269207669e-01 8.331030513350975442e-01
+8.817848418192094639e-01 8.576132802667703059e-01 8.229492517613266056e-01
+8.742401985712474621e-01 8.496268650289525715e-01 8.127582978377587697e-01
+8.666945370128648074e-01 8.416362324606945222e-01 8.025572922175608914e-01
+8.591642949649661576e-01 8.336561546444334336e-01 7.923557697274130618e-01
+8.516606462490278195e-01 8.256972216872984216e-01 7.821629896098961643e-01
+8.441881675648532646e-01 8.177668584523517525e-01 7.719978747167733912e-01
+8.367546003836178192e-01 8.098699298493980958e-01 7.618548556771399527e-01
+8.293628053720738524e-01 8.020095841729102393e-01 7.517385870991303287e-01
+8.220122974103521996e-01 7.941877657343777708e-01 7.416604820361886174e-01
+8.147055831041186691e-01 7.864054338886661277e-01 7.316158935999518276e-01
+8.074428695046120819e-01 7.786629991741689238e-01 7.216062017816766705e-01
+8.002239536861533997e-01 7.709604828947951294e-01 7.116324410842282955e-01
+7.930486047248805903e-01 7.632976487972781277e-01 7.016945092401379869e-01
+7.859155444098100407e-01 7.556741407493390295e-01 6.917956122566603083e-01
+7.788239785472398369e-01 7.480894917424205648e-01 6.819365996758520732e-01
+7.717761666842225532e-01 7.405430431500328314e-01 6.721061511286441359e-01
+7.647695126504651109e-01 7.330343101062176681e-01 6.623117248985945782e-01
+7.578024759469249583e-01 7.255627582077430748e-01 6.525565861539863732e-01
+7.508747011746044198e-01 7.181277940669236193e-01 6.428393514066714776e-01
+7.439860296366358483e-01 7.107288105275537671e-01 6.331578659286328792e-01
+7.371380352230317845e-01 7.033650997305714858e-01 6.235032380461981161e-01
+7.303267295539673798e-01 6.960362660858002704e-01 6.138882457032197593e-01
+7.235516370761116978e-01 6.887417344158411892e-01 6.043120048450656423e-01
+7.168136574616641443e-01 6.814808447026716731e-01 5.947682975771849678e-01
+7.101132300652239770e-01 6.742529573780132734e-01 5.852527166373640011e-01
+7.034464832580180627e-01 6.670577263264326762e-01 5.757776499898806799e-01
+6.968134241386333416e-01 6.598945644190796767e-01 5.663404055906162693e-01
+6.902175511682563380e-01 6.527626219057073298e-01 5.569247166393624937e-01
+6.836530241251399520e-01 6.456617329968893371e-01 5.475506786771059398e-01
+6.771191923792275746e-01 6.385913765706551226e-01 5.382182031186726334e-01
+6.706213406334817773e-01 6.315505441676552145e-01 5.289041000996647091e-01
+6.641534350911151297e-01 6.245391367090507018e-01 5.196292578451316979e-01
+6.577148635275871236e-01 6.175566394334415232e-01 5.103934681036723653e-01
+6.513106015597026621e-01 6.106020304081083427e-01 5.011747507363846221e-01
+6.449339394177714402e-01 6.036753299959042307e-01 4.919966626063084214e-01
+6.385861657554016135e-01 5.967758543247165814e-01 4.828515990278902659e-01
+6.322678284337878152e-01 5.899029749242099552e-01 4.737348355247164577e-01
+6.259767255318442469e-01 5.830569263656453227e-01 4.646452891563762067e-01
+6.197016579332955688e-01 5.762398779913381341e-01 4.556052788341879434e-01
+6.134474028946137469e-01 5.694504347953359691e-01 4.465979423650075497e-01
+6.072178659159134240e-01 5.626871366850844103e-01 4.376111326566481941e-01
+6.010012505217495749e-01 5.559520936787821777e-01 4.286719487404299644e-01
+5.948055640046073789e-01 5.492429546962157572e-01 4.197575498195730836e-01
+5.886326075840858651e-01 5.425588558149744278e-01 4.108591465488395378e-01
+5.824702130202078498e-01 5.359018268492113934e-01 4.020079470557531565e-01
+5.763248263841350694e-01 5.292699281179926718e-01 3.931837482598241618e-01
+5.701972311820494577e-01 5.226623693222695044e-01 3.843824114977716366e-01
+5.640831336223245396e-01 5.160796590123359895e-01 3.756116269725132129e-01
+5.579774433964941327e-01 5.095224539424874077e-01 3.668822207066750885e-01
+5.518860265359687434e-01 5.029888698004121306e-01 3.581753826709989652e-01
+5.458070559295251645e-01 4.964787819395978796e-01 3.494931200704951557e-01
+5.397391255491313933e-01 4.899920506546056598e-01 3.408352402134943726e-01
+5.336730625437067221e-01 4.835304037810426725e-01 3.322231435985951165e-01
+5.276152444526773788e-01 4.770918383518058525e-01 3.236356057173125356e-01
+5.215648631466205387e-01 4.706762498171280229e-01 3.150682292920859440e-01
+5.155189794095078604e-01 4.642837707070938680e-01 3.065265223389798677e-01
+5.094751216031231378e-01 4.579145264501231494e-01 2.980134272377937266e-01
+5.034310278715931064e-01 4.515686733480185899e-01 2.895302566325898552e-01
+4.973847636608849654e-01 4.452464140846874030e-01 2.810755531259728768e-01
+4.913352410442906604e-01 4.389480201490584821e-01 2.726410128949737222e-01
+4.852774212045994351e-01 4.326740360757653225e-01 2.642407735080369302e-01
+4.792095319460407121e-01 4.264249820482975961e-01 2.558674925325885585e-01
+4.731283857839347351e-01 4.202016073968968812e-01 2.475197805445442101e-01
+4.670296949396188224e-01 4.140048440647509653e-01 2.392012072518971966e-01
+4.609095096289907434e-01 4.078358796897652017e-01 2.309089502347338452e-01
+4.547601620003904332e-01 4.016973741434559098e-01 2.226435585187958033e-01
+4.485682425668168771e-01 3.955931855786054552e-01 2.144296211245620976e-01
+4.423342563272031902e-01 3.895240159345254582e-01 2.062390835191822425e-01
+4.360296791131279548e-01 3.834992742811840771e-01 1.981208646399195139e-01
+4.296458451439821302e-01 3.775230805131955525e-01 1.900605950657147936e-01
+4.231474637241839920e-01 3.716087794574343128e-01 1.820957501112273613e-01
+4.164868167567738477e-01 3.657737180218046391e-01 1.742972729554080058e-01
+4.095973903281860951e-01 3.600427549828760787e-01 1.667592074668843294e-01
+4.023838616513769062e-01 3.544471779032521419e-01 1.597054883781360846e-01
+3.947814112345453541e-01 3.489995705485997579e-01 1.534550340717726336e-01
+3.868766298266183568e-01 3.436490149527227644e-01 1.482247271514051945e-01
+3.788659234446942747e-01 3.383142918487055395e-01 1.438533685673206441e-01
+3.708789643993818941e-01 3.329519259272508136e-01 1.400354190966675849e-01
+3.629572903164399733e-01 3.275541151937279016e-01 1.365461363519130944e-01
+3.551085081353937412e-01 3.221231228094754706e-01 1.332624917481727012e-01
+3.473247934253401170e-01 3.166654234722757755e-01 1.301119558630651207e-01
+3.396071981367110304e-01 3.111828368128046196e-01 1.270354172742856058e-01
+3.319394021514575632e-01 3.056815149128923048e-01 1.240384908643338280e-01
+3.243282276863680424e-01 3.001605128554065693e-01 1.210640172441826978e-01
+3.167622056152286647e-01 2.946237048061004504e-01 1.181174627342822525e-01
+3.092325069255885128e-01 2.890737927737177526e-01 1.152025540049777530e-01
+3.017324462072743518e-01 2.835140481503690690e-01 1.122895803439803164e-01
+2.942527745713884313e-01 2.779485572093680079e-01 1.093519738743563285e-01
+2.867898062904237211e-01 2.723775024827345681e-01 1.063941382240281286e-01
+2.793462654071084406e-01 2.667988809657529936e-01 1.034093116060303130e-01
+2.719194579070843831e-01 2.612124593378840620e-01 1.004000094727539039e-01
+2.645072257635520119e-01 2.556177666826844330e-01 9.736769715746559917e-02
+2.571104715415328812e-01 2.500132794565106398e-01 9.430849274229180512e-02
+2.497278694500691398e-01 2.443981535173898045e-01 9.122222486885092629e-02
+2.423563418593929208e-01 2.387720412133358949e-01 8.811155590734742749e-02
+2.350006052093227549e-01 2.331320446993035422e-01 8.496581087820043177e-02
+2.276523216303719677e-01 2.274793513535450784e-01 8.179625154164907319e-02
+2.203179455088669636e-01 2.218103948803600289e-01 7.858901255132699770e-02
+2.129902634426870667e-01 2.161258230519468304e-01 7.535305204258735401e-02
+2.056701553920205483e-01 2.104236534304168016e-01 7.208351221952713495e-02
+1.983573399507774226e-01 2.047021786467214111e-01 6.877728527916648904e-02
+1.910498721129175737e-01 1.989600929322370426e-01 6.543378475478747736e-02
+1.837444391314300429e-01 1.931963704923697345e-01 6.205437817912465986e-02
+1.764424601043844409e-01 1.874084358013911600e-01 5.863230865340122305e-02
+1.691401736478186091e-01 1.815951106612115895e-01 5.516899293098562890e-02
+1.618355962290499162e-01 1.757545129863619104e-01 5.166248843687707565e-02
+1.545273276784393246e-01 1.698844060286744673e-01 4.810942800782175982e-02
+1.472136064507999498e-01 1.639824533449356636e-01 4.450649296503813440e-02
+1.398915640220567136e-01 1.580463968635001659e-01 4.085151092791106803e-02
+1.325571921668454445e-01 1.520740186438245822e-01 3.716809665985362082e-02
+1.252084444586500644e-01 1.460622428214301272e-01 3.362553317766520805e-02
+1.178384206042670801e-01 1.400089579293633535e-01 3.023931012520724576e-02
+1.104210154536264532e-01 1.339166670121798297e-01 2.703939689144004010e-02]; 
+
+   case 'tar' % tarn, the rain anomaly map
+      RGB = [8.982325470083904473e-02 1.386884202488073425e-01 5.339634747542102572e-02
+9.490477059882479471e-02 1.456373382629968793e-01 5.489581825948507826e-02
+9.996820923335580922e-02 1.525451879246892684e-01 5.635425405965687612e-02
+1.049932629133125961e-01 1.594260027028096272e-01 5.767943871793178995e-02
+1.099844886715972414e-01 1.662815862271170841e-01 5.888156855042592924e-02
+1.149326133871393096e-01 1.731199934404946961e-01 5.990900196219744317e-02
+1.198471368660654901e-01 1.799400614735769122e-01 6.079328815375505818e-02
+1.247299637162895547e-01 1.867439924225139936e-01 6.153299800422255134e-02
+1.295805228510759355e-01 1.935349340052088807e-01 6.211473969231569997e-02
+1.343996539632437981e-01 2.003151607373700460e-01 6.253114410253807209e-02
+1.391929081922307909e-01 2.070845521371987852e-01 6.279848839795282300e-02
+1.439554110569007950e-01 2.138477306592140859e-01 6.288007868082229335e-02
+1.487348911403759133e-01 2.205914714224685436e-01 6.284098523281120285e-02
+1.535498540172954285e-01 2.273157827161538247e-01 6.260141657412987559e-02
+1.584099704346516035e-01 2.340203331404673293e-01 6.214047826160282867e-02
+1.633293887964821223e-01 2.407033599878570240e-01 6.143905222634648416e-02
+1.683325411333271293e-01 2.473603962447930571e-01 6.047333430287041983e-02
+1.734516487390746486e-01 2.539840110977820697e-01 5.924078177592304734e-02
+1.787290092053028800e-01 2.605653696981221068e-01 5.769398812038967900e-02
+1.842226903108559743e-01 2.670914347726459082e-01 5.577103201204060973e-02
+1.900442575104325516e-01 2.735335271652731270e-01 5.343902039527659992e-02
+1.964012889997470146e-01 2.798383207240314197e-01 5.059091721484253873e-02
+2.038180981569160388e-01 2.858582487774559699e-01 4.734796165359243109e-02
+2.134803580554236468e-01 2.912137742752328173e-01 4.542335962452376946e-02
+2.246379258326957618e-01 2.959985720226946948e-01 4.791967673999841110e-02
+2.357078843306291693e-01 3.007243105772285929e-01 5.139927647716215769e-02
+2.466644952616644515e-01 3.054215218481723948e-01 5.513668228793693754e-02
+2.575461415550749367e-01 3.100881502728962680e-01 5.896503676513652897e-02
+2.683585986429155579e-01 3.147286848554897709e-01 6.282164605955981029e-02
+2.791275572039774722e-01 3.193399608455813055e-01 6.667246926393996520e-02
+2.898358184319489994e-01 3.239318024263264095e-01 7.050980744893517449e-02
+3.004984152503225037e-01 3.285032192279036534e-01 7.432550653130615137e-02
+3.111553190646883515e-01 3.330438874028457952e-01 7.810231939881484564e-02
+3.218034422925408755e-01 3.375573450510525597e-01 8.184304787716339957e-02
+3.324333011718812458e-01 3.420495081780127733e-01 8.555280814984053683e-02
+3.430769162896195046e-01 3.465110261365142996e-01 8.922112292532158317e-02
+3.537299359050021241e-01 3.509453072047716837e-01 9.285241010232825332e-02
+3.643894401193512600e-01 3.553552732120655588e-01 9.645119893644621412e-02
+3.750453108858616824e-01 3.597467221513847013e-01 1.000256142638818735e-01
+3.857100245562226637e-01 3.641166297482588132e-01 1.035734980914473635e-01
+3.963858021351523986e-01 3.684657518577320601e-01 1.070973667641381966e-01
+4.071213221517259173e-01 3.727752094149718864e-01 1.105826082064781946e-01
+4.178758479312351115e-01 3.770629074315066109e-01 1.140472314573759138e-01
+4.286423372903069851e-01 3.813332614724057046e-01 1.174974726735356911e-01
+4.394433776892578969e-01 3.855777866767184925e-01 1.209275883437508081e-01
+4.502962927333878373e-01 3.897896541113713975e-01 1.243344105962937429e-01
+4.611581205683302209e-01 3.939890872463367444e-01 1.277374475879362037e-01
+4.720563913472620166e-01 3.981648558562365103e-01 1.311281116044327733e-01
+4.830210005713382881e-01 4.023038157279973936e-01 1.344963783804615232e-01
+4.939986962481786592e-01 4.064316868089741797e-01 1.378665047316342263e-01
+5.050443453644228864e-01 4.105232839216421126e-01 1.412177516567701130e-01
+5.161305471961733504e-01 4.145923196985767945e-01 1.445638179668259637e-01
+5.272226932670311950e-01 4.186568461649191053e-01 1.479227047630213288e-01
+5.384231737920478489e-01 4.226667334740543680e-01 1.512491796667267130e-01
+5.496735303963581343e-01 4.266509012024514158e-01 1.545811460866533815e-01
+5.608924552760781168e-01 4.306494794221744082e-01 1.580220317035593569e-01
+5.721888701475891237e-01 4.346087953039819429e-01 1.614907462658664583e-01
+5.835602689975579738e-01 4.385299786869343297e-01 1.649946574397075372e-01
+5.949141655760096237e-01 4.424610896723609743e-01 1.686236738948057867e-01
+6.063474969101482204e-01 4.463528192152232399e-01 1.722929976151095499e-01
+6.178322186277155348e-01 4.502196887286237792e-01 1.760393057804460759e-01
+6.293072576484797231e-01 4.540947330149664452e-01 1.799322501799610063e-01
+6.408487929862468624e-01 4.579376406332680838e-01 1.839101076250921896e-01
+6.524478209436700427e-01 4.617530075872406381e-01 1.879952778619465859e-01
+6.640840089637001231e-01 4.655519164846439462e-01 1.922225103058495532e-01
+6.757077110120256469e-01 4.693624324344119469e-01 1.966573342842017347e-01
+6.873619660726970615e-01 4.731606777592323732e-01 2.012786215471898954e-01
+6.990381205121832808e-01 4.769509785672518265e-01 2.061259388500985001e-01
+7.107469254673900450e-01 4.807250920628522439e-01 2.112467599398395457e-01
+7.224230526312156453e-01 4.845218253861356961e-01 2.167123076670600113e-01
+7.340988344738968996e-01 4.883178461040553198e-01 2.226023859070605515e-01
+7.456126256093577043e-01 4.922084125716105762e-01 2.291293878090427394e-01
+7.569950884983198680e-01 4.961693298634363702e-01 2.364236914878575235e-01
+7.680178179592376253e-01 5.003309692977765399e-01 2.449057676522546911e-01
+7.783432998143535730e-01 5.048913767328344626e-01 2.551145881355684764e-01
+7.872937751334541101e-01 5.102708429127015277e-01 2.676604181065562749e-01
+7.941838547011116356e-01 5.169436808272552808e-01 2.821513140071189585e-01
+7.994756138083272123e-01 5.246737693689591531e-01 2.970255774031809182e-01
+8.039010002452274817e-01 5.330024415850749264e-01 3.115266985520254717e-01
+8.078274978677594254e-01 5.416811012734407127e-01 3.255924452137653469e-01
+8.115188822314253203e-01 5.505337325024400874e-01 3.392264225271887645e-01
+8.149565405173153643e-01 5.595497555166275561e-01 3.527260919316282384e-01
+8.184200486555966991e-01 5.685470713353225625e-01 3.661765482687758810e-01
+8.218871005380722350e-01 5.775395855002405376e-01 3.796232120570560142e-01
+8.253524104820136875e-01 5.865320478639367563e-01 3.930813348872184143e-01
+8.288195980598317414e-01 5.955244594650943579e-01 4.065541730450397684e-01
+8.322893500409468404e-01 6.045186250474157141e-01 4.200438297618293571e-01
+8.357658919205435133e-01 6.135146821751165103e-01 4.335463882212042819e-01
+8.392529397355924514e-01 6.225129167459599877e-01 4.470604854774085646e-01
+8.427490015153409342e-01 6.315159424794672960e-01 4.605928597504284627e-01
+8.462593242877498589e-01 6.405233492783437566e-01 4.741391831670908608e-01
+8.497829397434528698e-01 6.495374502823044738e-01 4.877048504982988697e-01
+8.533243184659659031e-01 6.585581699790050703e-01 5.012868094865198243e-01
+8.568819326669031566e-01 6.675878581525517275e-01 5.148924377083944348e-01
+8.604592156604728981e-01 6.766270650074718285e-01 5.285174957354723535e-01
+8.640624159744237920e-01 6.856750887735367783e-01 5.421555222813166930e-01
+8.676874794762717835e-01 6.947353397221285309e-01 5.558159820355237368e-01
+8.713433578641075483e-01 7.038060956465443940e-01 5.694881225731345253e-01
+8.750269237065777528e-01 7.128903502475765208e-01 5.831797789138876142e-01
+8.787417347404306023e-01 7.219884934452005520e-01 5.968884207063740455e-01
+8.824929186507559642e-01 7.311003788594004904e-01 6.106091378045375162e-01
+8.862780839217170303e-01 7.402286277522096558e-01 6.243484010896452885e-01
+8.901025319225768229e-01 7.493730430239593510e-01 6.381009856311857797e-01
+8.939696421167129259e-01 7.585341679611918853e-01 6.518645964033017437e-01
+8.978784332841047711e-01 7.677140679252760780e-01 6.656434485771917098e-01
+9.018326061682566674e-01 7.769131645138506181e-01 6.794347199822515782e-01
+9.058380869535479496e-01 7.861311730497033690e-01 6.932323184728660381e-01
+9.098936269941250155e-01 7.953702376174893729e-01 7.070408050591605598e-01
+9.140018319746877618e-01 8.046311927664194785e-01 7.208589990654702406e-01
+9.181667424043119530e-01 8.139144268565462470e-01 7.346836216449236234e-01
+9.223937440297114154e-01 8.232199407988282092e-01 7.485094577713424790e-01
+9.266329848317796936e-01 8.325649094757640034e-01 7.624119242822527953e-01
+9.309587852706298072e-01 8.419294436897262202e-01 7.762663931757451952e-01
+9.353308095703787295e-01 8.513275998621367968e-01 7.901346256764255616e-01
+9.397666205989465560e-01 8.607552896628867245e-01 8.039940207918337967e-01
+9.442852447524148207e-01 8.702076963082445715e-01 8.178194726640143353e-01
+9.488564272552421075e-01 8.796932993686320534e-01 8.316532922424306751e-01
+9.535132490174164088e-01 8.891984622715306541e-01 8.454417866111457736e-01
+9.582183040236339489e-01 8.987227701762496856e-01 8.592166709390754997e-01
+9.629681108746700469e-01 9.082408064338201026e-01 8.729337059863773174e-01
+9.677369708112718572e-01 9.177061780026050108e-01 8.865286101605559521e-01
+9.724470492478461958e-01 9.270421466879262828e-01 8.999251032877214618e-01
+9.769577532404692954e-01 9.361234679319003771e-01 9.130099659367507670e-01
+9.810936756020608440e-01 9.447503559760432879e-01 9.255607060964068378e-01
+9.846187877628681528e-01 9.526495821380999152e-01 9.372697834100743863e-01
+9.872037589208276787e-01 9.594994318553785595e-01 9.478188041909386685e-01
+9.885417842181484227e-01 9.649430355113016722e-01 9.568049207415391111e-01
+9.884013930268252812e-01 9.686440358418687557e-01 9.637998740972807399e-01
+9.884162623276403492e-01 9.700501042547021724e-01 9.646078752920302923e-01
+9.882481988456427446e-01 9.691949840717196674e-01 9.590849806168054714e-01
+9.862202098271878326e-01 9.664497051565109631e-01 9.513022380762837793e-01
+9.825317256976796587e-01 9.620307807128735123e-01 9.416222408221766038e-01
+9.774953228979595954e-01 9.562506189604750295e-01 9.303982168749544979e-01
+9.714512581163280425e-01 9.494527517929901572e-01 9.180386343083645206e-01
+9.647328782040082151e-01 9.419601909858620337e-01 9.048410781832560978e-01
+9.576029833882070408e-01 9.340364327380904497e-01 8.911071594609687452e-01
+9.502540208567341606e-01 9.258747025552572785e-01 8.770597493210310347e-01
+9.428203850658012364e-01 9.176036605916164657e-01 8.628094676385467121e-01
+9.353802079259059266e-01 9.093000877222664480e-01 8.484369289828109784e-01
+9.279731512595491560e-01 9.010054158372772237e-01 8.340022711999641736e-01
+9.206162430864484048e-01 8.927397568877493139e-01 8.195491149365338179e-01
+9.133281854005529388e-01 8.845128541542209843e-01 8.050384948242300664e-01
+9.061049708588290175e-01 8.763271129727117081e-01 7.905141123067558340e-01
+8.988722526026153847e-01 8.682095990978259126e-01 7.760244884018141498e-01
+8.913604989190128114e-01 8.602593575538733939e-01 7.616936251859220963e-01
+8.834947766491649812e-01 8.525076069101691356e-01 7.475141723430621665e-01
+8.751348356324997191e-01 8.450011895094009517e-01 7.335968964229397926e-01
+8.660362122016208586e-01 8.378139590610478304e-01 7.202229230673017346e-01
+8.560628191678395504e-01 8.309783491388803567e-01 7.076282794978067114e-01
+8.450850551605781913e-01 8.245041095837670753e-01 6.962540521527236237e-01
+8.331237773418240788e-01 8.183393744081108867e-01 6.865239180889655124e-01
+8.205576283471390786e-01 8.123351983566962087e-01 6.783182715666855600e-01
+8.077229876914296947e-01 8.063801435632871328e-01 6.713153485176399649e-01
+7.947461515019460521e-01 8.004373108778479740e-01 6.653252445665102099e-01
+7.818234645252460924e-01 7.944593749272963468e-01 6.599830880041622772e-01
+7.690043949000203716e-01 7.884424060393956379e-01 6.551042701424648618e-01
+7.562981288404810876e-01 7.823918885846237181e-01 6.505794347324633797e-01
+7.437166688251096724e-01 7.763107155814537030e-01 6.463185559404119873e-01
+7.312864875465606707e-01 7.701962491575811143e-01 6.422364303657139839e-01
+7.189850527082707332e-01 7.640604119000086181e-01 6.382908369799579207e-01
+7.068142314422918293e-01 7.579064471112740842e-01 6.344344908612202794e-01
+6.947742510783049275e-01 7.517375363827888402e-01 6.306282821287318985e-01
+6.828537141789142728e-01 7.455586837934410349e-01 6.268596706266046370e-01
+6.710011548564486228e-01 7.393836600422335481e-01 6.231736409952126632e-01
+6.592657914925743601e-01 7.332038660876558644e-01 6.194650744353706884e-01
+6.476362335539276316e-01 7.270240901258274713e-01 6.157213868460473805e-01
+6.360362802101585666e-01 7.208613432160450030e-01 6.120373156027114625e-01
+6.245080854916185142e-01 7.147082392942302187e-01 6.083234269572357356e-01
+6.130488547076046180e-01 7.085668274101213360e-01 6.045591744160895287e-01
+6.015892322420162142e-01 7.024496994714828357e-01 6.008489625961975777e-01
+5.901987677923722364e-01 6.963445147045469463e-01 5.970628836865409239e-01
+5.787942193155654058e-01 6.902683578483006510e-01 5.932973990580240331e-01
+5.673843957655613224e-01 6.842194608428608937e-01 5.895220675517639508e-01
+5.559759005656629283e-01 6.781954870319548689e-01 5.857224142025272418e-01
+5.445452293547278222e-01 6.721991418209628533e-01 5.819309981473995697e-01
+5.330284999192810291e-01 6.662471887845208274e-01 5.781518614893066399e-01
+5.216118831320554206e-01 6.602860177867492242e-01 5.743450969986969579e-01
+5.100461930662858467e-01 6.543801579393034862e-01 5.705892298512411642e-01
+4.985462196160774240e-01 6.484680127740434230e-01 5.668522387113605898e-01
+4.869212854485653330e-01 6.426004706277155254e-01 5.631503671835994540e-01
+4.753175948425168440e-01 6.367342039857054603e-01 5.594833076156262575e-01
+4.635884121260610002e-01 6.309044987522948178e-01 5.558810414566710545e-01
+4.517937357110975438e-01 6.250933232803836948e-01 5.523287210439038475e-01
+4.399781445380013811e-01 6.192864046496112662e-01 5.488272822016192487e-01
+4.280176465668665831e-01 6.135117804844451017e-01 5.453889520686707737e-01
+4.160613175390713292e-01 6.077287406576958873e-01 5.420126140975655149e-01
+4.039857150007630238e-01 6.019638930796089582e-01 5.387130326489297794e-01
+3.917475183228279478e-01 5.962226288699170595e-01 5.354998204993742794e-01
+3.795396260545044753e-01 5.904576990603345177e-01 5.323562706006824685e-01
+3.671980489650730761e-01 5.847026249394290387e-01 5.292995421656493393e-01
+3.547169039649492039e-01 5.789540227003182604e-01 5.263324098770649773e-01
+3.421991518101316077e-01 5.731858973997910889e-01 5.234530196411122382e-01
+3.296321613618491964e-01 5.673978264587494769e-01 5.206643628468334839e-01
+3.169539434232791497e-01 5.615982678332219757e-01 5.179739584214747561e-01
+3.041848831902358996e-01 5.557790841809171489e-01 5.153814622924314248e-01
+2.913580245785495904e-01 5.499302942311713460e-01 5.128866030358065764e-01
+2.786210115475045712e-01 5.440237902965463501e-01 5.104770287408624263e-01
+2.658767813620477316e-01 5.380746002424073859e-01 5.081635613728290313e-01
+2.531728049963842264e-01 5.320730905152252221e-01 5.059419345415738789e-01
+2.405801746352321802e-01 5.260084224989675095e-01 5.037958873725133513e-01
+2.281731742156575815e-01 5.198710287686101328e-01 5.017115180274238639e-01
+2.160357564123031038e-01 5.136521477693153370e-01 4.996732344467323395e-01
+2.042553268175122949e-01 5.073441845910725556e-01 4.976709295334373340e-01
+1.929455786157068808e-01 5.009402502860922368e-01 4.956743078037426087e-01
+1.822159137211172564e-01 4.944360671084672698e-01 4.936576912144489682e-01
+1.721720047662203268e-01 4.878296612331804449e-01 4.915973661753361701e-01
+1.629121950514905992e-01 4.811217814834132800e-01 4.894661845895681984e-01
+1.545167219577190942e-01 4.743156260955230796e-01 4.872413962325574111e-01
+1.470425142510033700e-01 4.674166983864977420e-01 4.849028953714263346e-01
+1.405113128544070999e-01 4.604338355815827399e-01 4.824271757570474661e-01
+1.349217530726786463e-01 4.533748092665628726e-01 4.798101955391982920e-01
+1.302797342394179658e-01 4.462455116423036938e-01 4.770426757084247904e-01
+1.265939811024292538e-01 4.390496902560914738e-01 4.741166274104288703e-01
+1.236843852121248255e-01 4.318074599363258548e-01 4.710274926158040665e-01
+1.214646610875383670e-01 4.245259430194671113e-01 4.677892044131184979e-01
+1.198403481002758841e-01 4.172122902240388842e-01 4.644123639304529871e-01
+1.184609210323855077e-01 4.098925950294425857e-01 4.609615952184937249e-01
+1.168754986210283897e-01 4.026022451761210874e-01 4.575160089880971337e-01
+1.151007877850314109e-01 3.953385852310392079e-01 4.540805121238136732e-01
+1.131413084296974680e-01 3.881005310447923073e-01 4.506558243985225309e-01
+1.110221391582094097e-01 3.808834919340156611e-01 4.472532258515609649e-01
+1.087511055351796929e-01 3.736854209969548424e-01 4.438760147968137115e-01
+1.063262941094024749e-01 3.665057054845847206e-01 4.405230161394063093e-01
+1.037537167610996236e-01 3.593424059991345287e-01 4.371963158215718681e-01
+1.010396012430455071e-01 3.521934333571229425e-01 4.338979957908608021e-01
+9.820785452879465804e-02 3.450535925989220432e-01 4.306390199340546787e-01
+9.524886735285809092e-02 3.379231538671472745e-01 4.274136452659025309e-01
+9.216708027427711336e-02 3.307999936437661659e-01 4.242225680363120865e-01
+8.898719812499519821e-02 3.236783223748895821e-01 4.210773055644454477e-01
+8.570498821294705860e-02 3.165572544150943024e-01 4.179737087144154706e-01
+8.232861945095013012e-02 3.094336626170069993e-01 4.149138402418848237e-01
+7.888091832597513009e-02 3.023016385852106969e-01 4.119079586942359095e-01
+7.535426196281005962e-02 2.951606915265346798e-01 4.089483103763945637e-01
+7.178216232425585486e-02 2.880027122692483954e-01 4.060506695454764170e-01
+6.815855459758968227e-02 2.808269749834076956e-01 4.032054679392391150e-01
+6.448898508226078019e-02 2.736310489100942100e-01 4.004060238485768752e-01
+6.082018328964860360e-02 2.664035583373736138e-01 3.976774815474886093e-01
+5.716124112921574379e-02 2.591406963233486849e-01 3.950170320465338780e-01
+5.351466965820251415e-02 2.518414268825251989e-01 3.924068662312853450e-01
+4.993186694626653571e-02 2.444935102031051688e-01 3.898697442701583027e-01
+4.643877317377426844e-02 2.370912873691644052e-01 3.873999194228605614e-01
+4.308214165698193848e-02 2.296247589871482364e-01 3.850043813960570827e-01
+3.988193032745831340e-02 2.220895846072232227e-01 3.826648500695101207e-01
+3.696588053809187618e-02 2.144711117753294594e-01 3.803951582141073540e-01
+3.503963119120004355e-02 2.067382236169432175e-01 3.779948138188178319e-01
+3.478421889488789165e-02 1.988679039642712310e-01 3.751470684509792819e-01
+3.605446405610013977e-02 1.908764917041337605e-01 3.717394054831296146e-01
+3.860378491452313293e-02 1.827911805345073526e-01 3.676697392369102646e-01
+4.204158194669544574e-02 1.746484839257387567e-01 3.628639802125444569e-01
+4.580769332477269834e-02 1.664868235304900745e-01 3.572935027519454909e-01
+4.953046775643197425e-02 1.583391239953714225e-01 3.509783278645146609e-01
+5.294794616753940170e-02 1.502287847236943308e-01 3.439780107867805858e-01
+5.589746873554810730e-02 1.421689980048106428e-01 3.363784527482869824e-01
+5.832364005801801005e-02 1.341588757852459068e-01 3.282715328574966618e-01
+6.018929987904993867e-02 1.261942031427702726e-01 3.197538950865533303e-01
+6.152266558088163168e-02 1.182670459661474271e-01 3.108793933905304452e-01];
+      
+   otherwise 
+      error('Unrecognized colormap name.') 
+     
+
+end
+
+
+
+function varargout = colorspace(Conversion,varargin)
+%COLORSPACE  Transform a color image between color representations.
+%   B = COLORSPACE(S,A) transforms the color representation of image A
+%   where S is a string specifying the conversion.  The input array A 
+%   should be a real full double array of size Mx3 or MxNx3.  The output B 
+%   is the same size as A.
+%
+%   S tells the source and destination color spaces, S = 'dest<-src', or 
+%   alternatively, S = 'src->dest'.  Supported color spaces are
+%
+%     'RGB'              sRGB IEC 61966-2-1
+%     'YCbCr'            Luma + Chroma ("digitized" version of Y'PbPr)
+%     'JPEG-YCbCr'       Luma + Chroma space used in JFIF JPEG
+%     'YDbDr'            SECAM Y'DbDr Luma + Chroma
+%     'YPbPr'            Luma (ITU-R BT.601) + Chroma 
+%     'YUV'              NTSC PAL Y'UV Luma + Chroma
+%     'YIQ'              NTSC Y'IQ Luma + Chroma
+%     'HSV' or 'HSB'     Hue Saturation Value/Brightness
+%     'HSL' or 'HLS'     Hue Saturation Luminance
+%     'HSI'              Hue Saturation Intensity
+%     'XYZ'              CIE 1931 XYZ
+%     'Lab'              CIE 1976 L*a*b* (CIELAB)
+%     'Luv'              CIE L*u*v* (CIELUV)
+%     'LCH'              CIE L*C*H* (CIELCH)
+%     'CAT02 LMS'        CIE CAT02 LMS
+%
+%  All conversions assume 2 degree observer and D65 illuminant.
+%
+%  Color space names are case insensitive and spaces are ignored.  When 
+%  sRGB is the source or destination, it can be omitted. For example 
+%  'yuv<-' is short for 'yuv<-rgb'.
+%
+%  For sRGB, the values should be scaled between 0 and 1.  Beware that 
+%  transformations generally do not constrain colors to be "in gamut."  
+%  Particularly, transforming from another space to sRGB may obtain 
+%  R'G'B' values outside of the [0,1] range.  So the result should be 
+%  clamped to [0,1] before displaying:
+%     image(min(max(B,0),1));  % Clamp B to [0,1] and display
+%
+%  sRGB (Red Green Blue) is the (ITU-R BT.709 gamma-corrected) standard
+%  red-green-blue representation of colors used in digital imaging.  The 
+%  components should be scaled between 0 and 1.  The space can be 
+%  visualized geometrically as a cube.
+%  
+%  Y'PbPr, Y'CbCr, Y'DbDr, Y'UV, and Y'IQ are related to sRGB by linear
+%  transformations.  These spaces separate a color into a grayscale
+%  luminance component Y and two chroma components.  The valid ranges of
+%  the components depends on the space.
+%
+%  HSV (Hue Saturation Value) is related to sRGB by
+%     H = hexagonal hue angle   (0 <= H < 360),
+%     S = C/V                   (0 <= S <= 1),
+%     V = max(R',G',B')         (0 <= V <= 1),
+%  where C = max(R',G',B') - min(R',G',B').  The hue angle H is computed on
+%  a hexagon.  The space is geometrically a hexagonal cone.
+%
+%  HSL (Hue Saturation Lightness) is related to sRGB by
+%     H = hexagonal hue angle                (0 <= H < 360),
+%     S = C/(1 - |2L-1|)                     (0 <= S <= 1),
+%     L = (max(R',G',B') + min(R',G',B'))/2  (0 <= L <= 1),
+%  where H and C are the same as in HSV.  Geometrically, the space is a
+%  double hexagonal cone.
+%
+%  HSI (Hue Saturation Intensity) is related to sRGB by
+%     H = polar hue angle        (0 <= H < 360),
+%     S = 1 - min(R',G',B')/I    (0 <= S <= 1),
+%     I = (R'+G'+B')/3           (0 <= I <= 1).
+%  Unlike HSV and HSL, the hue angle H is computed on a circle rather than
+%  a hexagon. 
+%
+%  CIE XYZ is related to sRGB by inverse gamma correction followed by a
+%  linear transform.  Other CIE color spaces are defined relative to XYZ.
+%
+%  CIE L*a*b*, L*u*v*, and L*C*H* are nonlinear functions of XYZ.  The L*
+%  component is designed to match closely with human perception of
+%  lightness.  The other two components describe the chroma.
+%
+%  CIE CAT02 LMS is the linear transformation of XYZ using the MCAT02 
+%  chromatic adaptation matrix.  The space is designed to model the 
+%  response of the three types of cones in the human eye, where L, M, S,
+%  correspond respectively to red ("long"), green ("medium"), and blue
+%  ("short").
+
+% Pascal Getreuer 2005-2010
+
+
+%%% Input parsing %%%
+if nargin < 2, error('Not enough input arguments.'); end
+[SrcSpace,DestSpace] = parse(Conversion);
+
+if nargin == 2
+   Image = varargin{1};
+elseif nargin >= 3
+   Image = cat(3,varargin{:});
+else
+   error('Invalid number of input arguments.');
+end
+
+FlipDims = (size(Image,3) == 1);
+
+if FlipDims, Image = permute(Image,[1,3,2]); end
+if ~isa(Image,'double'), Image = double(Image)/255; end
+if size(Image,3) ~= 3, error('Invalid input size.'); end
+
+SrcT = gettransform(SrcSpace);
+DestT = gettransform(DestSpace);
+
+if ~ischar(SrcT) && ~ischar(DestT)
+   % Both source and destination transforms are affine, so they
+   % can be composed into one affine operation
+   T = [DestT(:,1:3)*SrcT(:,1:3),DestT(:,1:3)*SrcT(:,4)+DestT(:,4)];      
+   Temp = zeros(size(Image));
+   Temp(:,:,1) = T(1)*Image(:,:,1) + T(4)*Image(:,:,2) + T(7)*Image(:,:,3) + T(10);
+   Temp(:,:,2) = T(2)*Image(:,:,1) + T(5)*Image(:,:,2) + T(8)*Image(:,:,3) + T(11);
+   Temp(:,:,3) = T(3)*Image(:,:,1) + T(6)*Image(:,:,2) + T(9)*Image(:,:,3) + T(12);
+   Image = Temp;
+elseif ~ischar(DestT)
+   Image = rgb(Image,SrcSpace);
+   Temp = zeros(size(Image));
+   Temp(:,:,1) = DestT(1)*Image(:,:,1) + DestT(4)*Image(:,:,2) + DestT(7)*Image(:,:,3) + DestT(10);
+   Temp(:,:,2) = DestT(2)*Image(:,:,1) + DestT(5)*Image(:,:,2) + DestT(8)*Image(:,:,3) + DestT(11);
+   Temp(:,:,3) = DestT(3)*Image(:,:,1) + DestT(6)*Image(:,:,2) + DestT(9)*Image(:,:,3) + DestT(12);
+   Image = Temp;
+else
+   Image = feval(DestT,Image,SrcSpace);
+end
+
+%%% Output format %%%
+if nargout > 1
+   varargout = {Image(:,:,1),Image(:,:,2),Image(:,:,3)};
+else
+   if FlipDims, Image = permute(Image,[1,3,2]); end
+   varargout = {Image};
+end
+
+return;
+
+
+function [SrcSpace,DestSpace] = parse(Str)
+% Parse conversion argument
+
+if ischar(Str)
+   Str = lower(strrep(strrep(Str,'-',''),'=',''));
+   k = find(Str == '>');
+   
+   if length(k) == 1         % Interpret the form 'src->dest'
+      SrcSpace = Str(1:k-1);
+      DestSpace = Str(k+1:end);
+   else
+      k = find(Str == '<');
+      
+      if length(k) == 1      % Interpret the form 'dest<-src'
+         DestSpace = Str(1:k-1);
+         SrcSpace = Str(k+1:end);
+      else
+         error(['Invalid conversion, ''',Str,'''.']);
+      end   
+   end
+   
+   SrcSpace = alias(SrcSpace);
+   DestSpace = alias(DestSpace);
+else
+   SrcSpace = 1;             % No source pre-transform
+   DestSpace = Conversion;
+   if any(size(Conversion) ~= 3), error('Transformation matrix must be 3x3.'); end
+end
+return;
+
+
+function Space = alias(Space)
+Space = strrep(strrep(Space,'cie',''),' ','');
+
+if isempty(Space)
+   Space = 'rgb';
+end
+
+switch Space
+case {'ycbcr','ycc'}
+   Space = 'ycbcr';
+case {'hsv','hsb'}
+   Space = 'hsv';
+case {'hsl','hsi','hls'}
+   Space = 'hsl';
+case {'rgb','yuv','yiq','ydbdr','ycbcr','jpegycbcr','xyz','lab','luv','lch'}
+   return;
+end
+return;
+
+
+function T = gettransform(Space)
+% Get a colorspace transform: either a matrix describing an affine transform,
+% or a string referring to a conversion subroutine
+switch Space
+case 'ypbpr'
+   T = [0.299,0.587,0.114,0;-0.1687367,-0.331264,0.5,0;0.5,-0.418688,-0.081312,0];
+case 'yuv'
+   % sRGB to NTSC/PAL YUV
+   % Wikipedia: http://en.wikipedia.org/wiki/YUV
+   T = [0.299,0.587,0.114,0;-0.147,-0.289,0.436,0;0.615,-0.515,-0.100,0];
+case 'ydbdr'
+   % sRGB to SECAM YDbDr
+   % Wikipedia: http://en.wikipedia.org/wiki/YDbDr
+   T = [0.299,0.587,0.114,0;-0.450,-0.883,1.333,0;-1.333,1.116,0.217,0];
+case 'yiq'
+   % sRGB in [0,1] to NTSC YIQ in [0,1];[-0.595716,0.595716];[-0.522591,0.522591];
+   % Wikipedia: http://en.wikipedia.org/wiki/YIQ
+   T = [0.299,0.587,0.114,0;0.595716,-0.274453,-0.321263,0;0.211456,-0.522591,0.311135,0];
+case 'ycbcr'
+   % sRGB (range [0,1]) to ITU-R BRT.601 (CCIR 601) Y'CbCr
+   % Wikipedia: http://en.wikipedia.org/wiki/YCbCr
+   % Poynton, Equation 3, scaling of R'G'B to Y'PbPr conversion
+   T = [65.481,128.553,24.966,16;-37.797,-74.203,112.0,128;112.0,-93.786,-18.214,128];
+case 'jpegycbcr'
+   % Wikipedia: http://en.wikipedia.org/wiki/YCbCr
+   T = [0.299,0.587,0.114,0;-0.168736,-0.331264,0.5,0.5;0.5,-0.418688,-0.081312,0.5]*255;
+case {'rgb','xyz','hsv','hsl','lab','luv','lch','cat02lms'}
+   T = Space;
+otherwise
+   error(['Unknown color space, ''',Space,'''.']);
+end
+return;
+
+
+function Image = rgb(Image,SrcSpace)
+% Convert to sRGB from 'SrcSpace'
+switch SrcSpace
+case 'rgb'
+   return;
+case 'hsv'
+   % Convert HSV to sRGB
+   Image = huetorgb((1 - Image(:,:,2)).*Image(:,:,3),Image(:,:,3),Image(:,:,1));
+case 'hsl'
+   % Convert HSL to sRGB
+   L = Image(:,:,3);
+   Delta = Image(:,:,2).*min(L,1-L);
+   Image = huetorgb(L-Delta,L+Delta,Image(:,:,1));
+case {'xyz','lab','luv','lch','cat02lms'}
+   % Convert to CIE XYZ
+   Image = xyz(Image,SrcSpace);
+   % Convert XYZ to RGB
+   T = [3.2406, -1.5372, -0.4986; -0.9689, 1.8758, 0.0415; 0.0557, -0.2040, 1.057];
+   R = T(1)*Image(:,:,1) + T(4)*Image(:,:,2) + T(7)*Image(:,:,3);  % R
+   G = T(2)*Image(:,:,1) + T(5)*Image(:,:,2) + T(8)*Image(:,:,3);  % G
+   B = T(3)*Image(:,:,1) + T(6)*Image(:,:,2) + T(9)*Image(:,:,3);  % B
+   % Desaturate and rescale to constrain resulting RGB values to [0,1]   
+   AddWhite = -min(min(min(R,G),B),0);
+   R = R + AddWhite;
+   G = G + AddWhite;
+   B = B + AddWhite;
+   % Apply gamma correction to convert linear RGB to sRGB
+   Image(:,:,1) = gammacorrection(R);  % R'
+   Image(:,:,2) = gammacorrection(G);  % G'
+   Image(:,:,3) = gammacorrection(B);  % B'
+otherwise  % Conversion is through an affine transform
+   T = gettransform(SrcSpace);
+   temp = inv(T(:,1:3));
+   T = [temp,-temp*T(:,4)];
+   R = T(1)*Image(:,:,1) + T(4)*Image(:,:,2) + T(7)*Image(:,:,3) + T(10);
+   G = T(2)*Image(:,:,1) + T(5)*Image(:,:,2) + T(8)*Image(:,:,3) + T(11);
+   B = T(3)*Image(:,:,1) + T(6)*Image(:,:,2) + T(9)*Image(:,:,3) + T(12);
+   Image(:,:,1) = R;
+   Image(:,:,2) = G;
+   Image(:,:,3) = B;
+end
+
+% Clip to [0,1]
+Image = min(max(Image,0),1);
+return;
+
+
+function Image = xyz(Image,SrcSpace)
+% Convert to CIE XYZ from 'SrcSpace'
+WhitePoint = [0.950456,1,1.088754];  
+
+switch SrcSpace
+case 'xyz'
+   return;
+case 'luv'
+   % Convert CIE L*uv to XYZ
+   WhitePointU = (4*WhitePoint(1))./(WhitePoint(1) + 15*WhitePoint(2) + 3*WhitePoint(3));
+   WhitePointV = (9*WhitePoint(2))./(WhitePoint(1) + 15*WhitePoint(2) + 3*WhitePoint(3));
+   L = Image(:,:,1);
+   Y = (L + 16)/116;
+   Y = invf(Y)*WhitePoint(2);
+   U = Image(:,:,2)./(13*L + 1e-6*(L==0)) + WhitePointU;
+   V = Image(:,:,3)./(13*L + 1e-6*(L==0)) + WhitePointV;
+   Image(:,:,1) = -(9*Y.*U)./((U-4).*V - U.*V);                  % X
+   Image(:,:,2) = Y;                                             % Y
+   Image(:,:,3) = (9*Y - (15*V.*Y) - (V.*Image(:,:,1)))./(3*V);  % Z
+case {'lab','lch'}
+   Image = lab(Image,SrcSpace);
+   % Convert CIE L*ab to XYZ
+   fY = (Image(:,:,1) + 16)/116;
+   fX = fY + Image(:,:,2)/500;
+   fZ = fY - Image(:,:,3)/200;
+   Image(:,:,1) = WhitePoint(1)*invf(fX);  % X
+   Image(:,:,2) = WhitePoint(2)*invf(fY);  % Y
+   Image(:,:,3) = WhitePoint(3)*invf(fZ);  % Z
+case 'cat02lms'
+    % Convert CAT02 LMS to XYZ
+   T = inv([0.7328, 0.4296, -0.1624;-0.7036, 1.6975, 0.0061; 0.0030, 0.0136, 0.9834]);
+   L = Image(:,:,1);
+   M = Image(:,:,2);
+   S = Image(:,:,3);
+   Image(:,:,1) = T(1)*L + T(4)*M + T(7)*S;  % X 
+   Image(:,:,2) = T(2)*L + T(5)*M + T(8)*S;  % Y
+   Image(:,:,3) = T(3)*L + T(6)*M + T(9)*S;  % Z
+otherwise   % Convert from some gamma-corrected space
+   % Convert to sRGB
+   Image = rgb(Image,SrcSpace);
+   % Undo gamma correction
+   R = invgammacorrection(Image(:,:,1));
+   G = invgammacorrection(Image(:,:,2));
+   B = invgammacorrection(Image(:,:,3));
+   % Convert RGB to XYZ
+   T = inv([3.2406, -1.5372, -0.4986; -0.9689, 1.8758, 0.0415; 0.0557, -0.2040, 1.057]);
+   Image(:,:,1) = T(1)*R + T(4)*G + T(7)*B;  % X 
+   Image(:,:,2) = T(2)*R + T(5)*G + T(8)*B;  % Y
+   Image(:,:,3) = T(3)*R + T(6)*G + T(9)*B;  % Z
+end
+return;
+
+
+function Image = hsv(Image,SrcSpace)
+% Convert to HSV
+Image = rgb(Image,SrcSpace);
+V = max(Image,[],3);
+S = (V - min(Image,[],3))./(V + (V == 0));
+Image(:,:,1) = rgbtohue(Image);
+Image(:,:,2) = S;
+Image(:,:,3) = V;
+return;
+
+
+function Image = hsl(Image,SrcSpace)
+% Convert to HSL 
+switch SrcSpace
+case 'hsv'
+   % Convert HSV to HSL   
+   MaxVal = Image(:,:,3);
+   MinVal = (1 - Image(:,:,2)).*MaxVal;
+   L = 0.5*(MaxVal + MinVal);
+   temp = min(L,1-L);
+   Image(:,:,2) = 0.5*(MaxVal - MinVal)./(temp + (temp == 0));
+   Image(:,:,3) = L;
+otherwise
+   Image = rgb(Image,SrcSpace);  % Convert to sRGB
+   % Convert sRGB to HSL
+   MinVal = min(Image,[],3);
+   MaxVal = max(Image,[],3);
+   L = 0.5*(MaxVal + MinVal);
+   temp = min(L,1-L);
+   S = 0.5*(MaxVal - MinVal)./(temp + (temp == 0));
+   Image(:,:,1) = rgbtohue(Image);
+   Image(:,:,2) = S;
+   Image(:,:,3) = L;
+end
+return;
+
+
+function Image = lab(Image,SrcSpace)
+% Convert to CIE L*a*b* (CIELAB)
+WhitePoint = [0.950456,1,1.088754];
+
+switch SrcSpace
+case 'lab'
+   return;
+case 'lch'
+   % Convert CIE L*CH to CIE L*ab
+   C = Image(:,:,2);
+   Image(:,:,2) = cos(Image(:,:,3)*pi/180).*C;  % a*
+   Image(:,:,3) = sin(Image(:,:,3)*pi/180).*C;  % b*
+otherwise
+   Image = xyz(Image,SrcSpace);  % Convert to XYZ
+   % Convert XYZ to CIE L*a*b*
+   X = Image(:,:,1)/WhitePoint(1);
+   Y = Image(:,:,2)/WhitePoint(2);
+   Z = Image(:,:,3)/WhitePoint(3);
+   fX = f(X);
+   fY = f(Y);
+   fZ = f(Z);
+   Image(:,:,1) = 116*fY - 16;    % L*
+   Image(:,:,2) = 500*(fX - fY);  % a*
+   Image(:,:,3) = 200*(fY - fZ);  % b*
+end
+return;
+
+
+function Image = luv(Image,SrcSpace)
+% Convert to CIE L*u*v* (CIELUV)
+WhitePoint = [0.950456,1,1.088754];
+WhitePointU = (4*WhitePoint(1))./(WhitePoint(1) + 15*WhitePoint(2) + 3*WhitePoint(3));
+WhitePointV = (9*WhitePoint(2))./(WhitePoint(1) + 15*WhitePoint(2) + 3*WhitePoint(3));
+
+Image = xyz(Image,SrcSpace); % Convert to XYZ
+Denom = Image(:,:,1) + 15*Image(:,:,2) + 3*Image(:,:,3);
+U = (4*Image(:,:,1))./(Denom + (Denom == 0));
+V = (9*Image(:,:,2))./(Denom + (Denom == 0));
+Y = Image(:,:,2)/WhitePoint(2);
+L = 116*f(Y) - 16;
+Image(:,:,1) = L;                        % L*
+Image(:,:,2) = 13*L.*(U - WhitePointU);  % u*
+Image(:,:,3) = 13*L.*(V - WhitePointV);  % v*
+return;  
+
+
+function Image = lch(Image,SrcSpace)
+% Convert to CIE L*ch
+Image = lab(Image,SrcSpace);  % Convert to CIE L*ab
+H = atan2(Image(:,:,3),Image(:,:,2));
+H = H*180/pi + 360*(H < 0);
+Image(:,:,2) = sqrt(Image(:,:,2).^2 + Image(:,:,3).^2);  % C
+Image(:,:,3) = H;                                        % H
+return;
+
+
+function Image = cat02lms(Image,SrcSpace)
+% Convert to CAT02 LMS
+Image = xyz(Image,SrcSpace);
+T = [0.7328, 0.4296, -0.1624;-0.7036, 1.6975, 0.0061; 0.0030, 0.0136, 0.9834];
+X = Image(:,:,1);
+Y = Image(:,:,2);
+Z = Image(:,:,3);
+Image(:,:,1) = T(1)*X + T(4)*Y + T(7)*Z;  % L
+Image(:,:,2) = T(2)*X + T(5)*Y + T(8)*Z;  % M
+Image(:,:,3) = T(3)*X + T(6)*Y + T(9)*Z;  % S
+return;
+
+
+function Image = huetorgb(m0,m2,H)
+% Convert HSV or HSL hue to RGB
+N = size(H);
+H = min(max(H(:),0),360)/60;
+m0 = m0(:);
+m2 = m2(:);
+F = H - round(H/2)*2;
+M = [m0, m0 + (m2-m0).*abs(F), m2];
+Num = length(m0);
+j = [2 1 0;1 2 0;0 2 1;0 1 2;1 0 2;2 0 1;2 1 0]*Num;
+k = floor(H) + 1;
+Image = reshape([M(j(k,1)+(1:Num).'),M(j(k,2)+(1:Num).'),M(j(k,3)+(1:Num).')],[N,3]);
+return;
+
+
+function H = rgbtohue(Image)
+% Convert RGB to HSV or HSL hue
+[M,i] = sort(Image,3);
+i = i(:,:,3);
+Delta = M(:,:,3) - M(:,:,1);
+Delta = Delta + (Delta == 0);
+R = Image(:,:,1);
+G = Image(:,:,2);
+B = Image(:,:,3);
+H = zeros(size(R));
+k = (i == 1);
+H(k) = (G(k) - B(k))./Delta(k);
+k = (i == 2);
+H(k) = 2 + (B(k) - R(k))./Delta(k);
+k = (i == 3);
+H(k) = 4 + (R(k) - G(k))./Delta(k);
+H = 60*H + 360*(H < 0);
+H(Delta == 0) = nan;
+return;
+
+
+function Rp = gammacorrection(R)
+Rp = zeros(size(R));
+i = (R <= 0.0031306684425005883);
+Rp(i) = 12.92*R(i);
+Rp(~i) = real(1.055*R(~i).^0.416666666666666667 - 0.055);
+return;
+
+
+function R = invgammacorrection(Rp)
+R = zeros(size(Rp));
+i = (Rp <= 0.0404482362771076);
+R(i) = Rp(i)/12.92;
+R(~i) = real(((Rp(~i) + 0.055)/1.055).^2.4);
+return;
+
+
+function fY = f(Y)
+fY = real(Y.^(1/3));
+i = (Y < 0.008856);
+fY(i) = Y(i)*(841/108) + (4/29);
+return;
+
+
+function Y = invf(fY)
+Y = fY.^3;
+i = (Y < 0.008856);
+Y(i) = (fY(i) - 4/29)*(108/841);
+return;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/color_scale.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/color_scale.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/color_scale.m	(revision 27955)
@@ -0,0 +1,74 @@
+function map = color_scale(n, theta, r, dir)
+%COLOR_SCALE Colormap with luminance and hue ramps and constant chroma.
+%   MAP = COLOR_SCALE(N, THETA, R, DIR) computes a colormap that works well 
+%   on color displays and also works well when printed on a grayscale 
+%   printer.
+%   
+%   The color map is computed using a simple path through L*a*b* space that
+%   approximates a uniform ramp in the L* direction, and a semicircular
+%   path in the a*-b* plane.
+%
+%   N is the number of colormap colors.  THETA is the angle (in degrees) in
+%   the a*-b* plane of the first color.  THETA is measured clockwise from
+%   the a* axis.  R is the radius of the semicircular path in the a*-b*
+%   plane.  DIR is either 'cw', for a clockwise traversal, or 'ccw', for a
+%   counterclockwise traversal.
+%
+%   All of the arguments are optional.  The default values are N = 256,
+%   THETA = 0, R = 50, and DIR = 'cw'.
+%
+%   COLOR_SCALE requires the Image Processing Toolbox version 4 or later.
+%
+%   Example
+%   -------
+%   Display a Radon transform image with colormaps produced by color_scale.
+%
+%       I = zeros(100,100);
+%       I(25:75, 25:75) = 1;
+%       theta = 0:180;
+%       [R,xp] = radon(I,theta);
+%       imshow(R,[],'InitialMag','fit')
+%       colormap(color_scale)
+%
+%       % Try it with different parameters.
+%       colormap(color_scale(256,0,88,'ccw'))
+%
+%   See also COLOR_SCALE_TOOL.
+
+%   Steve Eddins
+%   $Revision$  $Date$
+
+if nargin < 4
+    dir = 'cw';
+end
+
+if nargin < 3
+    r = 50;
+end
+
+if nargin < 2
+    theta = 0;
+end
+
+if nargin < 1
+    n = 256;
+end
+
+if strcmp(dir, 'cw')
+    angle_offset = -pi/2;
+else
+    angle_offset = pi/2;
+end
+
+theta = pi * theta / 180;
+theta_vec = linspace(theta, theta + angle_offset, n).';
+
+a = r*cos(theta_vec);
+b = r*sin(theta_vec);
+L = linspace(0, 100, n).';
+
+Lab = [L, a, b];
+
+cform = makecform('lab2srgb');
+
+map = applycform(Lab, cform);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/demmap.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/demmap.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/demmap.m	(revision 27955)
@@ -0,0 +1,79 @@
+function cmap = demmap(ncolors,minZ,maxZ,varargin);
+%DEMMAP - concatenate sea and land color depending on zmin and zmax
+%
+%   Usage:
+%      cmap = demmap(n,zmin,zmax,varargin)
+%
+%   Example:
+%      cmap = demmap(50,-300,1200);
+%      cmap = demmap(50,-300,1200,'dem');
+%      cmap = demmap(50,-300,1200,'ibcao');
+
+%Input checks
+if nargin<3,
+	help demmap
+	error('3 or 4 arguments necessary');
+elseif nargin>4,
+	help demmap
+	error('3 or 4 arguments necessary');
+end
+
+if nargin==4,
+	colorscheme = varargin{1};
+	if ~ischar(colorscheme), error('color scheme should be a string'); end
+else
+	colorscheme = 'dem';
+end
+
+% determine appropriate number of sea and land colors
+if minZ == maxZ;
+	maxZ = minZ+1;
+end
+
+cmn = minZ;
+cmx = maxZ;
+
+% determine appropriate number of sea and land colors
+if minZ >= 0
+	nsea = 0;
+	nland = ncolors;
+elseif maxZ <= 0
+	nland = 0;
+	nsea = ncolors;
+else
+	% find optimal ratio of land to sea colors
+	maxminratio = maxZ/abs(minZ);
+	n1 = floor(ncolors/2);
+	n2 = ceil(ncolors/2);
+	if maxminratio>1
+		sea = (1:n1)';
+		land = (ncolors-1:-1:n2)';
+	else
+		land = (1:n1)';
+		sea = (ncolors-1:-1:n2)';
+	end
+	ratio = land./sea;
+	errors = abs(ratio - maxminratio) / maxminratio;
+	indx = find(errors == min(min(errors)));
+	nsea = sea(indx);
+	nland = land(indx);
+
+	% determine color limits
+	seaint = abs(minZ)/nsea;
+	landint = maxZ/nland;
+	if seaint >= landint
+		interval = seaint;
+	else
+		interval = landint;
+	end
+	cmn = -nsea*interval*(1 + 1e-9);      % zero values treated as land
+	cmx = nland*interval;
+end
+
+clim = [cmn cmx];
+
+if strcmpi(colorscheme,'dem'),
+	cmap = [seacolor(nsea);landcolor(nland).^1.3];
+elseif strcmpi(colorscheme,'ibcao');
+	cmap = ibcao(nsea,nland);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/demmap.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/demmap.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/demmap.py	(revision 27955)
@@ -0,0 +1,72 @@
+import numpy as np
+from MatlabFuncs import strcmpi
+from landcolor import landcolor
+from seacolor import seacolor
+from ibcao import ibcao
+
+
+def demmap(ncolors, minZ, maxZ, colorscheme='dem'):
+    '''DEMMAP - concatenate sea and land color deping on zmin and zmax
+
+       Usage:
+          cmap = demmap(n, zmin, zmax, colorscheme)
+
+       Example:
+          cmap = demmap(50, -300, 1200)
+          cmap = demmap(50, -300, 1200, 'dem')
+          cmap = demmap(50, -300, 1200, 'ibcao')
+    '''
+
+    if type(colorscheme) != str:
+        raise RuntimeError('demmap: Error: optional argument "colorscheme" should be a string')
+
+    # determine appropriate number of sea and land colors
+    if minZ == maxZ:
+        maxZ = minZ + 1
+
+    cmn = minZ
+    cmx = maxZ
+
+    # determine appropriate number of sea and land colors
+    if minZ >= 0:
+        nsea = 0
+        nland = ncolors
+    elif maxZ <= 0:
+        nland = 0
+        nsea = ncolors
+    else:
+        # find optimal ratio of land to sea colors
+        maxminratio = maxZ / abs(minZ)
+        n1 = np.floor(ncolors / 2)
+        n2 = np.ceil(ncolors / 2)
+        if maxminratio > 1:
+            sea = np.arange(1, n1 + 1)
+            land = np.arange(ncolors - 1, n2 - 1, -1)
+        else:
+            land = np.arange(1, n1 + 1)
+            sea = np.arange(ncolors - 1, n2 - 1, -1)
+
+        ratio = land / sea
+        errors = abs(ratio - maxminratio) / maxminratio
+        indx = np.where(errors == min(errors))
+        nsea = sea[indx]
+        nland = land[indx]
+
+    # determine color limits
+        seaint = abs(minZ) / nsea
+        landint = maxZ / nland
+        if seaint >= landint:
+            interval = seaint
+        else:
+            interval = landint
+
+        cmn = -nsea * interval * (1 + 1e-9)  # zero values treated as land
+        cmx = nland * interval
+
+    if strcmpi(colorscheme, 'dem'):
+        # concatenate and transpose to match matplotlib's colormap format
+        cmap = np.concatenate((seacolor(nsea), landcolor(nland)**1.3), axis=1).T
+    elif strcmpi(colorscheme, 'ibcao'):
+        cmap = ibcao(nsea, nland)
+
+    return cmap
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/getcolormap.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/getcolormap.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/getcolormap.m	(revision 27955)
@@ -0,0 +1,64 @@
+function map = getcolormap(options)
+%GETCOLORMAP - get colormap from options
+%
+%   Usage:
+%      map = getcolormap(options)
+
+%default is jet
+if ~exist(options,'colormap'),
+	map = jet;
+	return
+end
+
+map = getfieldvalue(options,'colormap');
+if isnumeric(map);
+	%user provided a full colormap
+	return;
+end
+
+%OK this is an in-house colormap
+if ~ischar(map), error('colormap format not supported'); end
+
+if strcmpi(map,'Ala'),
+	map = jet(256);
+	map = map(128:end,:);
+elseif strcmpi(map,'damage'),
+	v=ver;
+	if any(strcmp('Image Processing Toolbox',{v.Name})),
+		map = color_scale(256,0,70,'ccw');
+		map = flipud(map);
+		map(1:2,:)=[0.7476    1.0000    1.0000; 0.7476    1.0000    1.0000];
+	else
+		error('damage colormap requires Image Processing Toolbox, please try another colormap');
+	end
+elseif strcmpi(map,'redblue'),
+	map = hsv(128);
+	map = rgb2hsv(map);
+	map(:,2)       = max(min( abs(map(:,1)-0.5)/0.5 ,1),0);
+	map(1:64,1)   = 0.7;
+	map(65:end,1) = 1;
+	map = hsv2rgb(map);
+elseif strcmpi(map,'Rignot'),
+	alpha=getfieldvalue(options,'alpha',1);
+	map = hsv(128);
+	map = rgb2hsv(map);
+	map(:,2) = max(min( (0.1+map(:,1)).^(1/alpha) ,1),0);
+	map = hsv2rgb(map);
+elseif strcmpi(map,'Rignot2'),
+	alpha=getfieldvalue(options,'alpha',1);
+	map = hsv;
+	map = rgb2hsv(map);
+	map(:,2) = max(min( (0.1+map(:,1)).^(1/alpha) ,1),0);
+	map = hsv2rgb(map);
+	map=flipud(map);
+elseif strcmpi(map,'Seroussi'),
+	alpha=getfieldvalue(options,'alpha',1);
+	map = hsv;
+	map = flipud(map);
+	map = map(1:floor(0.7*size(map,1)),:);
+	map = rgb2hsv(map);
+	map(:,2) = max(min( (0.1+map(:,1)).^(1/alpha) ,1),0);
+	map = hsv2rgb(map);
+else
+	eval(['map = ' map ';']);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/haxby.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/haxby.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/haxby.m	(revision 27955)
@@ -0,0 +1,36 @@
+function map = haxby(m)
+%HAXBY - Haxby color map
+%   HAXBY(M) returns an M-by-3 matrix containing a colormap with Haxby's
+%   colors, commonly used for displaying bathymetry data.
+%   HAXBY, by itself, is the same length as the current colormap.
+%
+%   Colormap is based on the colors used by W. F. Haxby's Gravity
+%   field of World's oceans, 1985, developed for geoid and gravity maps.
+%   The version used here is formed from a linear interpolation of
+%   the GMT color table used by MB-System by David W. Caress and Dale N. Chayes.
+%   <http://www.ldeo.columbia.edu/res/pi/MB-System>
+
+if nargin < 1, m = size(get(gcf,'colormap'),1); end
+
+ncolors=11;
+c=[...
+	37     57   175
+	40    127   251
+	50    190   255
+	106   235   255
+	138   236   174
+	205   255   162
+	240   236   121
+	255   189    87
+	255   161    68
+	255   186   133
+	255   255   255];
+
+pp=1:(m-1)/(ncolors-1):m;
+r=interp1(pp,c(:,1),1:m);
+g=interp1(pp,c(:,2),1:m);
+b=interp1(pp,c(:,3),1:m);
+map=[r' g' b']/255;
+
+%Fix bug of interp1 (M. Morlighem)
+map(find(map>1))=1;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/ibcao.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/ibcao.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/ibcao.m	(revision 27955)
@@ -0,0 +1,68 @@
+function map = ibcap(nsea,nland)
+%IBCAO - IBCAO color map
+%
+%   Usage:
+%      map = ibcap(nsea,nland)
+%
+%Downloaded from http://soliton.vm.bytemark.co.uk/pub/cpt-city/ibcao
+
+Jsea = [ ...
+0.18039 0.29020 0.57255
+0.18039 0.29020 0.57255
+0.05882 0.44314 0.65490
+0.05882 0.44314 0.65490
+0.02745 0.49804 0.73725
+0.02745 0.49804 0.73725
+0.01176 0.54510 0.78824
+0.01176 0.54510 0.78824
+0.00784 0.63529 0.83922
+0.00784 0.63529 0.83922
+0.06667 0.71765 0.86667
+0.06667 0.71765 0.86667
+0.17647 0.75294 1.00000
+0.17647 0.75294 1.00000
+0.23529 0.76471 0.85882
+0.23529 0.76471 0.85882
+0.24314 0.76471 0.83922
+0.24314 0.76471 0.83922
+0.25882 0.76078 0.81176
+0.25882 0.76078 0.81176
+0.27451 0.76078 0.76078
+0.27451 0.76078 0.76078
+0.41961 0.78431 0.74902
+0.41961 0.78431 0.74902
+0.60000 0.83137 0.74902
+0.60000 0.83137 0.74902
+];
+
+Jland = [ ...
+0.85098 0.84314 0.30588
+0.85098 0.84314 0.30588
+0.93333 0.89020 0.41961
+0.93333 0.89020 0.41961
+0.93725 0.80784 0.35686
+0.93725 0.80784 0.35686
+0.89804 0.74510 0.31765
+0.89804 0.74510 0.31765
+0.85098 0.63922 0.21961
+0.85098 0.63922 0.21961
+0.75686 0.55294 0.22353
+0.75686 0.55294 0.22353
+0.71765 0.50980 0.22353
+0.71765 0.50980 0.22353
+0.68627 0.48235 0.21961
+0.68627 0.48235 0.21961
+0.65490 0.45882 0.21569
+0.65490 0.45882 0.21569
+0.58824 0.39608 0.20392
+0.58824 0.39608 0.20392
+1.00000 1.00000 1.00000
+];
+
+lsea = length(Jsea);
+ysea = interp1(1:lsea,Jsea,linspace(1,lsea,nsea),'*linear');
+
+lland = length(Jland);
+yland = interp1(1:lland,Jland,linspace(1,lland,nland),'*linear');
+
+map=[ysea;yland];
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/ibcao.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/ibcao.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/ibcao.py	(revision 27955)
@@ -0,0 +1,79 @@
+import numpy as np
+
+
+def ibcao(nsea, nland):
+    '''IBCAO - IBCAO color map
+
+       Usage:
+          map = ibcap(nsea, nland)
+    '''
+
+    Jsea = [0.18039, 0.29020, 0.57255,
+            0.18039, 0.29020, 0.57255,
+            0.05882, 0.44314, 0.65490,
+            0.05882, 0.44314, 0.65490,
+            0.02745, 0.49804, 0.73725,
+            0.02745, 0.49804, 0.73725,
+            0.01176, 0.54510, 0.78824,
+            0.01176, 0.54510, 0.78824,
+            0.00784, 0.63529, 0.83922,
+            0.00784, 0.63529, 0.83922,
+            0.06667, 0.71765, 0.86667,
+            0.06667, 0.71765, 0.86667,
+            0.17647, 0.75294, 1.00000,
+            0.17647, 0.75294, 1.00000,
+            0.23529, 0.76471, 0.85882,
+            0.23529, 0.76471, 0.85882,
+            0.24314, 0.76471, 0.83922,
+            0.24314, 0.76471, 0.83922,
+            0.25882, 0.76078, 0.81176,
+            0.25882, 0.76078, 0.81176,
+            0.27451, 0.76078, 0.76078,
+            0.27451, 0.76078, 0.76078,
+            0.41961, 0.78431, 0.74902,
+            0.41961, 0.78431, 0.74902,
+            0.60000, 0.83137, 0.74902,
+            0.60000, 0.83137, 0.74902]
+
+    Jland = [0.85098, 0.84314, 0.30588,
+             0.85098, 0.84314, 0.30588,
+             0.93333, 0.89020, 0.41961,
+             0.93333, 0.89020, 0.41961,
+             0.93725, 0.80784, 0.35686,
+             0.93725, 0.80784, 0.35686,
+             0.89804, 0.74510, 0.31765,
+             0.89804, 0.74510, 0.31765,
+             0.85098, 0.63922, 0.21961,
+             0.85098, 0.63922, 0.21961,
+             0.75686, 0.55294, 0.22353,
+             0.75686, 0.55294, 0.22353,
+             0.71765, 0.50980, 0.22353,
+             0.71765, 0.50980, 0.22353,
+             0.68627, 0.48235, 0.21961,
+             0.68627, 0.48235, 0.21961,
+             0.65490, 0.45882, 0.21569,
+             0.65490, 0.45882, 0.21569,
+             0.58824, 0.39608, 0.20392,
+             0.58824, 0.39608, 0.20392,
+             1.00000, 1.00000, 1.00000]
+
+    # Jsea and Jland are each a series of r, g, b triples, reshape them as such
+
+    lsea = int(len(Jsea) / 3)
+    Jsea = np.array(Jsea).reshape(lsea, 3)
+    a = np.linspace(1, lsea, nsea)
+    b = np.arange(1, lsea + 1)
+    # interpolate color on each channel r, g, b
+    ysea = np.array([np.interp(a, b, Jsea[:, i]) for i in range(3)])
+
+    lland = int(len(Jland) / 3)
+    Jland = np.array(Jland).reshape(lland, 3)
+    a = np.linspace(1, lland, nland)
+    b = np.arange(1, lland + 1)
+    # interpolate color on each channel r, g, b
+    yland = np.array([np.interp(a, b, Jland[:, i]) for i in range(3)])
+
+    # concatenate and transpose to match matplotlib's colormap format
+    map = np.concatenate((ysea, yland), axis=1).T
+
+    return map
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/landcolor.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/landcolor.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/landcolor.m	(revision 27955)
@@ -0,0 +1,77 @@
+function y = landcolor(n)
+%LANDCOLOR Land colormap
+%
+%	Author: Francois Beauducel <beauducel@ipgp.fr>
+%	$Revision: 1.0.0 $   $Date: 2012/05/17 11:22:44 $
+
+J = [ ...
+0.095678 0.53427 0.21682 
+0.15785 0.5979 0.23274 
+0.21286 0.64673 0.2514 
+0.26411 0.68789 0.27268 
+0.32959 0.72416 0.31308 
+0.39794 0.75695 0.36038 
+0.46153 0.7871 0.40624 
+0.52108 0.81516 0.45135 
+0.57702 0.84152 0.49547 
+0.62973 0.86645 0.53891 
+0.67946 0.89016 0.58187 
+0.72647 0.91282 0.62427 
+0.77095 0.93455 0.66619 
+0.81306 0.95546 0.70772 
+0.85292 0.97563 0.7489 
+0.89066 0.99514 0.78976 
+0.88379 0.98595 0.77038 
+0.86389 0.96758 0.73236 
+0.84615 0.94972 0.69623 
+0.8303 0.93233 0.66186 
+0.81612 0.91536 0.6291 
+0.80341 0.8988 0.59784 
+0.79201 0.8826 0.56795 
+0.78191 0.86676 0.53946 
+0.7729 0.85123 0.51224 
+0.76479 0.83602 0.48615 
+0.75747 0.8211 0.46111 
+0.75084 0.80645 0.43704 
+0.74506 0.79206 0.41414 
+0.73981 0.77792 0.39211 
+0.73501 0.76401 0.37089 
+0.73068 0.75033 0.35052 
+0.72683 0.73685 0.33106 
+0.72042 0.72074 0.31228 
+0.71032 0.70085 0.29417 
+0.69761 0.67821 0.27694 
+0.68489 0.65558 0.26026 
+0.67235 0.63313 0.24418 
+0.65997 0.61082 0.22889 
+0.64775 0.58874 0.21406 
+0.63568 0.56689 0.19983 
+0.62376 0.54527 0.18622 
+0.61197 0.52391 0.17299 
+0.60033 0.50283 0.16046 
+0.58881 0.48203 0.14832 
+0.57742 0.46151 0.13667 
+0.56616 0.44133 0.12555 
+0.55502 0.4214 0.11472 
+0.54398 0.4019 0.10456 
+0.53306 0.38266 0.094633 
+0.52226 0.36382 0.085242 
+0.51155 0.3453 0.076179 
+0.50095 0.32714 0.067515 
+0.49045 0.30938 0.059259 
+0.48005 0.29193 0.051294 
+0.46973 0.27495 0.043796 
+0.45951 0.25823 0.0365 
+0.44938 0.24206 0.029715 
+0.43934 0.22609 0.023063 
+0.42938 0.21074 0.016949 
+0.41951 0.19556 0.010917 
+0.40971 0.18105 0.0054326 
+0.4 0.16667 0 
+];
+
+l = length(J);
+if nargin < 1
+	n = 256;
+end
+y = interp1(1:l,J,linspace(1,l,n),'*linear');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/landcolor.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/landcolor.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/landcolor.py	(revision 27955)
@@ -0,0 +1,80 @@
+import numpy as np
+
+
+def landcolor(n=256):
+    '''LANDCOLOR Land colormap'''
+
+    J = [0.095678, 0.53427, 0.21682,
+         0.15785, 0.5979, 0.23274,
+         0.21286, 0.64673, 0.2514,
+         0.26411, 0.68789, 0.27268,
+         0.32959, 0.72416, 0.31308,
+         0.39794, 0.75695, 0.36038,
+         0.46153, 0.7871, 0.40624,
+         0.52108, 0.81516, 0.45135,
+         0.57702, 0.84152, 0.49547,
+         0.62973, 0.86645, 0.53891,
+         0.67946, 0.89016, 0.58187,
+         0.72647, 0.91282, 0.62427,
+         0.77095, 0.93455, 0.66619,
+         0.81306, 0.95546, 0.70772,
+         0.85292, 0.97563, 0.7489,
+         0.89066, 0.99514, 0.78976,
+         0.88379, 0.98595, 0.77038,
+         0.86389, 0.96758, 0.73236,
+         0.84615, 0.94972, 0.69623,
+         0.8303, 0.93233, 0.66186,
+         0.81612, 0.91536, 0.6291,
+         0.80341, 0.8988, 0.59784,
+         0.79201, 0.8826, 0.56795,
+         0.78191, 0.86676, 0.53946,
+         0.7729, 0.85123, 0.51224,
+         0.76479, 0.83602, 0.48615,
+         0.75747, 0.8211, 0.46111,
+         0.75084, 0.80645, 0.43704,
+         0.74506, 0.79206, 0.41414,
+         0.73981, 0.77792, 0.39211,
+         0.73501, 0.76401, 0.37089,
+         0.73068, 0.75033, 0.35052,
+         0.72683, 0.73685, 0.33106,
+         0.72042, 0.72074, 0.31228,
+         0.71032, 0.70085, 0.29417,
+         0.69761, 0.67821, 0.27694,
+         0.68489, 0.65558, 0.26026,
+         0.67235, 0.63313, 0.24418,
+         0.65997, 0.61082, 0.22889,
+         0.64775, 0.58874, 0.21406,
+         0.63568, 0.56689, 0.19983,
+         0.62376, 0.54527, 0.18622,
+         0.61197, 0.52391, 0.17299,
+         0.60033, 0.50283, 0.16046,
+         0.58881, 0.48203, 0.14832,
+         0.57742, 0.46151, 0.13667,
+         0.56616, 0.44133, 0.12555,
+         0.55502, 0.4214, 0.11472,
+         0.54398, 0.4019, 0.10456,
+         0.53306, 0.38266, 0.094633,
+         0.52226, 0.36382, 0.085242,
+         0.51155, 0.3453, 0.076179,
+         0.50095, 0.32714, 0.067515,
+         0.49045, 0.30938, 0.059259,
+         0.48005, 0.29193, 0.051294,
+         0.46973, 0.27495, 0.043796,
+         0.45951, 0.25823, 0.0365,
+         0.44938, 0.24206, 0.029715,
+         0.43934, 0.22609, 0.023063,
+         0.42938, 0.21074, 0.016949,
+         0.41951, 0.19556, 0.010917,
+         0.40971, 0.18105, 0.0054326,
+         0.4, 0.16667, 0]
+
+    # J is a series of r, g, b triples, reshape it as such
+    length = int(len(J) / 3)
+    J = np.array(J).reshape(length, 3)
+    a = np.linspace(1, length, n)
+    b = np.arange(1, length + 1)
+
+    # interpolate color on each channel r, g, b
+    y = np.array([np.interp(a, b, J[:, i]) for i in range(3)])
+
+    return y
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/lbmap.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/lbmap.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/lbmap.m	(revision 27955)
@@ -0,0 +1,124 @@
+function map = lbmap(n,scheme)
+%LBMAP Returns specified Light-Bertlein colormap.
+%
+%   LBMAP(N,SCHEME) returns an Nx3 colormap. SCHEME can be one of the
+%   following strings:
+%
+%       'Blue'       Single-hue progression to purlish-blue (default)
+%       'BlueGray'   Diverging progression from blue to gray
+%       'BrownBlue'  Orange-white-purple diverging scheme
+%       'RedBlue'    Modified spectral scheme
+%
+%   If N is not specified, the size of the colormap is determined by the
+%   current figure. If no figure exists, MATLAB creates one.
+%
+%Example 1: 7-color single-hue blue (default)
+%   load penny
+%   imagesc(P)
+%   colormap(lbmap(7))
+%   colorbar
+%
+%Example 2: 11-color modified spectrum
+%   load penny
+%   imagesc(P)
+%   colormap(lbmap(11,'RedBlue'))
+%   colorbar
+%
+%   See also HSV, GRAY, HOT, BONE, COPPER, PINK, FLAG, COLORMAP, RGBPLOT.
+
+% Reference:
+% A. Light & P.J. Bartlein, "The End of the Rainbow? Color Schemes for
+% Improved Data Graphics," Eos,Vol. 85, No. 40, 5 October 2004.
+% http://geography.uoregon.edu/datagraphics/EOS/Light&Bartlein_EOS2004.pdf
+
+% Copyright 2007-2010 The MathWorks, Inc.
+
+%defensive programming
+error(nargchk(0,2,nargin))
+error(nargoutchk(0,1,nargout))
+
+%defaults
+if nargin<2
+	scheme = 'Blue';
+end
+if nargin<1
+	n = size(get(gcf,'colormap'),1);
+end
+
+%valid schemes
+switch lower(scheme)
+	case 'blue'
+		baseMap = BlueMap;
+	case 'bluegray'
+		baseMap = BlueGrayMap;
+	case 'brownblue'
+		baseMap = BrownBlueMap;
+	case 'redblue'
+		baseMap = RedBlueMap;
+	case 'bluered'
+		baseMap = BlueRedMap;
+	otherwise
+		error(['Invalid scheme ' scheme])
+	end
+	idx1 = linspace(0,1,size(baseMap,1));
+	idx2 = linspace(0,1,n);
+	map = interp1(idx1,baseMap,idx2);
+
+function baseMap = BlueMap
+	baseMap = [243 246 248;
+	224 232 240;
+	171 209 236;
+	115 180 224;
+	35 157 213;
+	0 142 205;
+	0 122 192]/255;
+
+function baseMap = BlueGrayMap
+	%DivergingBlueGray
+	baseMap = [  0 170 227;
+	53 196 238;
+	133 212 234;
+	190 230 242;
+	217 224 230;
+	146 161 170;
+	109 122 129;
+	65  79  81]/255;
+
+function baseMap = BrownBlueMap
+	baseMap = [144 100  44;
+	187 120  54;
+	225 146  65;
+	248 184 139;
+	244 218 200;
+	241 244 245;
+	207 226 240;
+	160 190 225;
+	109 153 206;
+	70  99 174;
+	24  79 162]/255;
+
+function baseMap = RedBlueMap
+	baseMap = [175  53  71;
+	216  82  88;
+	239 133 122;
+	245 177 139;
+	249 216 168;
+	242 238 197;
+	216 236 241;
+	154 217 238;
+	68 199 239;
+	0 170 226;
+	0 116 188]/255;
+
+function baseMap = BlueRedMap
+	baseMap = [0 116 188;
+	0 170 226;
+	68 199 239;
+	154 217 238;
+	216 236 241;
+	242 238 197;
+	249 216 168;
+	245 177 139;
+	239 133 122;
+	216  82  88;
+	175  53  71]/255;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/paraview.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/paraview.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/paraview.m	(revision 27955)
@@ -0,0 +1,42 @@
+function cmap = paraview(n)
+
+J=[...
+0.0 59 76 192
+0.03125 68 90 204
+0.0625 77 104 215
+0.09375 87 117 225
+0.125 98 130 234
+0.15625 108 142 241
+0.1875 119 154 247
+0.21875 130 165 251
+0.25 141 176 254
+0.28125 152 185 255
+0.3125 163 194 255
+0.34375 174 201 253
+0.375 184 208 249
+0.40625 194 213 244
+0.4375 204 217 238
+0.46875 213 219 230
+0.5 221 221 221
+0.53125 229 216 209
+0.5625 236  211 197
+0.59375 241 204 185
+0.625 245   196 173
+0.65625 247 187 160
+0.6875 247  177 148
+0.71875 247 166 135
+0.75 244    154 123
+0.78125 241 141 111
+0.8125 236  127 99 
+0.84375 229 112 88 
+0.875 222   96  77 
+0.90625 213 80  66 
+0.9375 203  62  56 
+0.96875 192 40  47 
+1.0 180     4   38 ];
+
+l = length(J);
+if nargin < 1
+	n = 256;
+end
+cmap = interp1(1:l,J(:,2:4)/255,linspace(1,l,n),'*linear');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/seacolor.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/seacolor.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/seacolor.m	(revision 27955)
@@ -0,0 +1,57 @@
+function y = seacolor(n)
+%SEACOLOR Sea colormap adapted from NGDC ETOPO1
+%
+%	Author: Francois Beauducel <beauducel@ipgp.fr>
+
+J = [ ...
+    0.0392         0    0.4745
+    0.1020         0    0.5373
+    0.1020         0    0.5373
+    0.1490         0    0.5961
+    0.1490         0    0.5961
+    0.1059    0.0118    0.6510
+    0.1059    0.0118    0.6510
+    0.0627    0.0235    0.7059
+    0.0627    0.0235    0.7059
+    0.0196    0.0353    0.7569
+    0.0196    0.0353    0.7569
+         0    0.0549    0.7961
+         0    0.0549    0.7961
+         0    0.0863    0.8235
+         0    0.0863    0.8235
+         0    0.1176    0.8471
+         0    0.1176    0.8471
+         0    0.1529    0.8745
+         0    0.1529    0.8745
+    0.0471    0.2667    0.9059
+    0.0471    0.2667    0.9059
+    0.1020    0.4000    0.9412
+    0.1020    0.4000    0.9412
+    0.0745    0.4588    0.9569
+    0.0745    0.4588    0.9569
+    0.0549    0.5216    0.9765
+    0.0549    0.5216    0.9765
+    0.0824    0.6196    0.9882
+    0.0824    0.6196    0.9882
+    0.1176    0.6980    1.0000
+    0.1176    0.6980    1.0000
+    0.1686    0.7294    1.0000
+    0.1686    0.7294    1.0000
+    0.2157    0.7569    1.0000
+    0.2157    0.7569    1.0000
+    0.2549    0.7843    1.0000
+    0.2549    0.7843    1.0000
+    0.3098    0.8235    1.0000
+    0.3098    0.8235    1.0000
+    0.3686    0.8745    1.0000
+    0.3686    0.8745    1.0000
+    0.5412    0.8902    1.0000
+    0.5412    0.8902    1.0000
+    0.7373    0.9020    1.0000
+];
+
+l = length(J);
+if nargin < 1
+	n = 256;
+end
+y = interp1(1:l,J,linspace(1,l,n),'*linear');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/seacolor.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/seacolor.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/seacolor.py	(revision 27955)
@@ -0,0 +1,61 @@
+import numpy as np
+
+
+def seacolor(n=256):
+    '''SEACOLOR Sea colormap'''
+
+    J = [0.0392, 0, 0.4745,
+         0.1020, 0, 0.5373,
+         0.1020, 0, 0.5373,
+         0.1490, 0, 0.5961,
+         0.1490, 0, 0.5961,
+         0.1059, 0.0118, 0.6510,
+         0.1059, 0.0118, 0.6510,
+         0.0627, 0.0235, 0.7059,
+         0.0627, 0.0235, 0.7059,
+         0.0196, 0.0353, 0.7569,
+         0.0196, 0.0353, 0.7569,
+         0, 0.0549, 0.7961,
+         0, 0.0549, 0.7961,
+         0, 0.0863, 0.8235,
+         0, 0.0863, 0.8235,
+         0, 0.1176, 0.8471,
+         0, 0.1176, 0.8471,
+         0, 0.1529, 0.8745,
+         0, 0.1529, 0.8745,
+         0.0471, 0.2667, 0.9059,
+         0.0471, 0.2667, 0.9059,
+         0.1020, 0.4000, 0.9412,
+         0.1020, 0.4000, 0.9412,
+         0.0745, 0.4588, 0.9569,
+         0.0745, 0.4588, 0.9569,
+         0.0549, 0.5216, 0.9765,
+         0.0549, 0.5216, 0.9765,
+         0.0824, 0.6196, 0.9882,
+         0.0824, 0.6196, 0.9882,
+         0.1176, 0.6980, 1.0000,
+         0.1176, 0.6980, 1.0000,
+         0.1686, 0.7294, 1.0000,
+         0.1686, 0.7294, 1.0000,
+         0.2157, 0.7569, 1.0000,
+         0.2157, 0.7569, 1.0000,
+         0.2549, 0.7843, 1.0000,
+         0.2549, 0.7843, 1.0000,
+         0.3098, 0.8235, 1.0000,
+         0.3098, 0.8235, 1.0000,
+         0.3686, 0.8745, 1.0000,
+         0.3686, 0.8745, 1.0000,
+         0.5412, 0.8902, 1.0000,
+         0.5412, 0.8902, 1.0000,
+         0.7373, 0.9020, 1.0000]
+
+    # J is a series of r, g, b triples, reshape it as such
+    length = int(len(J) / 3)
+    J = np.array(J).reshape(length, 3)
+    a = np.linspace(1, length, n)
+    b = np.arange(1, length + 1)
+
+    # interpolate color on each channel r, g, b
+    y = np.array([np.interp(a, b, J[:, i]) for i in range(3)])
+
+    return y
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/turbo.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/turbo.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/colormaps/turbo.m	(revision 27955)
@@ -0,0 +1,279 @@
+function map = turbo(m)
+%TURBO   Turbo colormap.
+%   TURBO(M) returns an M-by-3 matrix containing the turbo colormap, a
+%   variant of the jet colormap that is more perceptually uniform.
+%
+%   See also JET, COLORMAP.
+%	 
+%		Daniel Fortunato (2021). turbo (https://www.mathworks.com/matlabcentral/fileexchange/74662-turbo), MATLAB Central File Exchange. Retrieved August 4, 2021. 
+%
+%	more info: https://ai.googleblog.com/2019/08/turbo-improved-rainbow-colormap-for.html
+%
+if nargin < 1
+   f = get(groot,'CurrentFigure');
+   if isempty(f)
+      m = size(get(groot,'DefaultFigureColormap'),1);
+   else
+      m = size(f.Colormap,1);
+   end
+end
+values = [
+     0.18995, 0.07176, 0.23217;
+     0.19483, 0.08339, 0.26149;
+     0.19956, 0.09498, 0.29024;
+     0.20415, 0.10652, 0.31844;
+     0.20860, 0.11802, 0.34607;
+     0.21291, 0.12947, 0.37314;
+     0.21708, 0.14087, 0.39964;
+     0.22111, 0.15223, 0.42558;
+     0.22500, 0.16354, 0.45096;
+     0.22875, 0.17481, 0.47578;
+     0.23236, 0.18603, 0.50004;
+     0.23582, 0.19720, 0.52373;
+     0.23915, 0.20833, 0.54686;
+     0.24234, 0.21941, 0.56942;
+     0.24539, 0.23044, 0.59142;
+     0.24830, 0.24143, 0.61286;
+     0.25107, 0.25237, 0.63374;
+     0.25369, 0.26327, 0.65406;
+     0.25618, 0.27412, 0.67381;
+     0.25853, 0.28492, 0.69300;
+     0.26074, 0.29568, 0.71162;
+     0.26280, 0.30639, 0.72968;
+     0.26473, 0.31706, 0.74718;
+     0.26652, 0.32768, 0.76412;
+     0.26816, 0.33825, 0.78050;
+     0.26967, 0.34878, 0.79631;
+     0.27103, 0.35926, 0.81156;
+     0.27226, 0.36970, 0.82624;
+     0.27334, 0.38008, 0.84037;
+     0.27429, 0.39043, 0.85393;
+     0.27509, 0.40072, 0.86692;
+     0.27576, 0.41097, 0.87936;
+     0.27628, 0.42118, 0.89123;
+     0.27667, 0.43134, 0.90254;
+     0.27691, 0.44145, 0.91328;
+     0.27701, 0.45152, 0.92347;
+     0.27698, 0.46153, 0.93309;
+     0.27680, 0.47151, 0.94214;
+     0.27648, 0.48144, 0.95064;
+     0.27603, 0.49132, 0.95857;
+     0.27543, 0.50115, 0.96594;
+     0.27469, 0.51094, 0.97275;
+     0.27381, 0.52069, 0.97899;
+     0.27273, 0.53040, 0.98461;
+     0.27106, 0.54015, 0.98930;
+     0.26878, 0.54995, 0.99303;
+     0.26592, 0.55979, 0.99583;
+     0.26252, 0.56967, 0.99773;
+     0.25862, 0.57958, 0.99876;
+     0.25425, 0.58950, 0.99896;
+     0.24946, 0.59943, 0.99835;
+     0.24427, 0.60937, 0.99697;
+     0.23874, 0.61931, 0.99485;
+     0.23288, 0.62923, 0.99202;
+     0.22676, 0.63913, 0.98851;
+     0.22039, 0.64901, 0.98436;
+     0.21382, 0.65886, 0.97959;
+     0.20708, 0.66866, 0.97423;
+     0.20021, 0.67842, 0.96833;
+     0.19326, 0.68812, 0.96190;
+     0.18625, 0.69775, 0.95498;
+     0.17923, 0.70732, 0.94761;
+     0.17223, 0.71680, 0.93981;
+     0.16529, 0.72620, 0.93161;
+     0.15844, 0.73551, 0.92305;
+     0.15173, 0.74472, 0.91416;
+     0.14519, 0.75381, 0.90496;
+     0.13886, 0.76279, 0.89550;
+     0.13278, 0.77165, 0.88580;
+     0.12698, 0.78037, 0.87590;
+     0.12151, 0.78896, 0.86581;
+     0.11639, 0.79740, 0.85559;
+     0.11167, 0.80569, 0.84525;
+     0.10738, 0.81381, 0.83484;
+     0.10357, 0.82177, 0.82437;
+     0.10026, 0.82955, 0.81389;
+     0.09750, 0.83714, 0.80342;
+     0.09532, 0.84455, 0.79299;
+     0.09377, 0.85175, 0.78264;
+     0.09287, 0.85875, 0.77240;
+     0.09267, 0.86554, 0.76230;
+     0.09320, 0.87211, 0.75237;
+     0.09451, 0.87844, 0.74265;
+     0.09662, 0.88454, 0.73316;
+     0.09958, 0.89040, 0.72393;
+     0.10342, 0.89600, 0.71500;
+     0.10815, 0.90142, 0.70599;
+     0.11374, 0.90673, 0.69651;
+     0.12014, 0.91193, 0.68660;
+     0.12733, 0.91701, 0.67627;
+     0.13526, 0.92197, 0.66556;
+     0.14391, 0.92680, 0.65448;
+     0.15323, 0.93151, 0.64308;
+     0.16319, 0.93609, 0.63137;
+     0.17377, 0.94053, 0.61938;
+     0.18491, 0.94484, 0.60713;
+     0.19659, 0.94901, 0.59466;
+     0.20877, 0.95304, 0.58199;
+     0.22142, 0.95692, 0.56914;
+     0.23449, 0.96065, 0.55614;
+     0.24797, 0.96423, 0.54303;
+     0.26180, 0.96765, 0.52981;
+     0.27597, 0.97092, 0.51653;
+     0.29042, 0.97403, 0.50321;
+     0.30513, 0.97697, 0.48987;
+     0.32006, 0.97974, 0.47654;
+     0.33517, 0.98234, 0.46325;
+     0.35043, 0.98477, 0.45002;
+     0.36581, 0.98702, 0.43688;
+     0.38127, 0.98909, 0.42386;
+     0.39678, 0.99098, 0.41098;
+     0.41229, 0.99268, 0.39826;
+     0.42778, 0.99419, 0.38575;
+     0.44321, 0.99551, 0.37345;
+     0.45854, 0.99663, 0.36140;
+     0.47375, 0.99755, 0.34963;
+     0.48879, 0.99828, 0.33816;
+     0.50362, 0.99879, 0.32701;
+     0.51822, 0.99910, 0.31622;
+     0.53255, 0.99919, 0.30581;
+     0.54658, 0.99907, 0.29581;
+     0.56026, 0.99873, 0.28623;
+     0.57357, 0.99817, 0.27712;
+     0.58646, 0.99739, 0.26849;
+     0.59891, 0.99638, 0.26038;
+     0.61088, 0.99514, 0.25280;
+     0.62233, 0.99366, 0.24579;
+     0.63323, 0.99195, 0.23937;
+     0.64362, 0.98999, 0.23356;
+     0.65394, 0.98775, 0.22835;
+     0.66428, 0.98524, 0.22370;
+     0.67462, 0.98246, 0.21960;
+     0.68494, 0.97941, 0.21602;
+     0.69525, 0.97610, 0.21294;
+     0.70553, 0.97255, 0.21032;
+     0.71577, 0.96875, 0.20815;
+     0.72596, 0.96470, 0.20640;
+     0.73610, 0.96043, 0.20504;
+     0.74617, 0.95593, 0.20406;
+     0.75617, 0.95121, 0.20343;
+     0.76608, 0.94627, 0.20311;
+     0.77591, 0.94113, 0.20310;
+     0.78563, 0.93579, 0.20336;
+     0.79524, 0.93025, 0.20386;
+     0.80473, 0.92452, 0.20459;
+     0.81410, 0.91861, 0.20552;
+     0.82333, 0.91253, 0.20663;
+     0.83241, 0.90627, 0.20788;
+     0.84133, 0.89986, 0.20926;
+     0.85010, 0.89328, 0.21074;
+     0.85868, 0.88655, 0.21230;
+     0.86709, 0.87968, 0.21391;
+     0.87530, 0.87267, 0.21555;
+     0.88331, 0.86553, 0.21719;
+     0.89112, 0.85826, 0.21880;
+     0.89870, 0.85087, 0.22038;
+     0.90605, 0.84337, 0.22188;
+     0.91317, 0.83576, 0.22328;
+     0.92004, 0.82806, 0.22456;
+     0.92666, 0.82025, 0.22570;
+     0.93301, 0.81236, 0.22667;
+     0.93909, 0.80439, 0.22744;
+     0.94489, 0.79634, 0.22800;
+     0.95039, 0.78823, 0.22831;
+     0.95560, 0.78005, 0.22836;
+     0.96049, 0.77181, 0.22811;
+     0.96507, 0.76352, 0.22754;
+     0.96931, 0.75519, 0.22663;
+     0.97323, 0.74682, 0.22536;
+     0.97679, 0.73842, 0.22369;
+     0.98000, 0.73000, 0.22161;
+     0.98289, 0.72140, 0.21918;
+     0.98549, 0.71250, 0.21650;
+     0.98781, 0.70330, 0.21358;
+     0.98986, 0.69382, 0.21043;
+     0.99163, 0.68408, 0.20706;
+     0.99314, 0.67408, 0.20348;
+     0.99438, 0.66386, 0.19971;
+     0.99535, 0.65341, 0.19577;
+     0.99607, 0.64277, 0.19165;
+     0.99654, 0.63193, 0.18738;
+     0.99675, 0.62093, 0.18297;
+     0.99672, 0.60977, 0.17842;
+     0.99644, 0.59846, 0.17376;
+     0.99593, 0.58703, 0.16899;
+     0.99517, 0.57549, 0.16412;
+     0.99419, 0.56386, 0.15918;
+     0.99297, 0.55214, 0.15417;
+     0.99153, 0.54036, 0.14910;
+     0.98987, 0.52854, 0.14398;
+     0.98799, 0.51667, 0.13883;
+     0.98590, 0.50479, 0.13367;
+     0.98360, 0.49291, 0.12849;
+     0.98108, 0.48104, 0.12332;
+     0.97837, 0.46920, 0.11817;
+     0.97545, 0.45740, 0.11305;
+     0.97234, 0.44565, 0.10797;
+     0.96904, 0.43399, 0.10294;
+     0.96555, 0.42241, 0.09798;
+     0.96187, 0.41093, 0.09310;
+     0.95801, 0.39958, 0.08831;
+     0.95398, 0.38836, 0.08362;
+     0.94977, 0.37729, 0.07905;
+     0.94538, 0.36638, 0.07461;
+     0.94084, 0.35566, 0.07031;
+     0.93612, 0.34513, 0.06616;
+     0.93125, 0.33482, 0.06218;
+     0.92623, 0.32473, 0.05837;
+     0.92105, 0.31489, 0.05475;
+     0.91572, 0.30530, 0.05134;
+     0.91024, 0.29599, 0.04814;
+     0.90463, 0.28696, 0.04516;
+     0.89888, 0.27824, 0.04243;
+     0.89298, 0.26981, 0.03993;
+     0.88691, 0.26152, 0.03753;
+     0.88066, 0.25334, 0.03521;
+     0.87422, 0.24526, 0.03297;
+     0.86760, 0.23730, 0.03082;
+     0.86079, 0.22945, 0.02875;
+     0.85380, 0.22170, 0.02677;
+     0.84662, 0.21407, 0.02487;
+     0.83926, 0.20654, 0.02305;
+     0.83172, 0.19912, 0.02131;
+     0.82399, 0.19182, 0.01966;
+     0.81608, 0.18462, 0.01809;
+     0.80799, 0.17753, 0.01660;
+     0.79971, 0.17055, 0.01520;
+     0.79125, 0.16368, 0.01387;
+     0.78260, 0.15693, 0.01264;
+     0.77377, 0.15028, 0.01148;
+     0.76476, 0.14374, 0.01041;
+     0.75556, 0.13731, 0.00942;
+     0.74617, 0.13098, 0.00851;
+     0.73661, 0.12477, 0.00769;
+     0.72686, 0.11867, 0.00695;
+     0.71692, 0.11268, 0.00629;
+     0.70680, 0.10680, 0.00571;
+     0.69650, 0.10102, 0.00522;
+     0.68602, 0.09536, 0.00481;
+     0.67535, 0.08980, 0.00449;
+     0.66449, 0.08436, 0.00424;
+     0.65345, 0.07902, 0.00408;
+     0.64223, 0.07380, 0.00401;
+     0.63082, 0.06868, 0.00401;
+     0.61923, 0.06367, 0.00410;
+     0.60746, 0.05878, 0.00427;
+     0.59550, 0.05399, 0.00453;
+     0.58336, 0.04931, 0.00486;
+     0.57103, 0.04474, 0.00529;
+     0.55852, 0.04028, 0.00579;
+     0.54583, 0.03593, 0.00638;
+     0.53295, 0.03169, 0.00705;
+     0.51989, 0.02756, 0.00780;
+     0.50664, 0.02354, 0.00863;
+     0.49321, 0.01963, 0.00955;
+     0.47960, 0.01583, 0.01055];
+P = size(values,1);
+map = interp1(1:P, values, linspace(1,P,m), 'linear');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/curvedarrow.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/curvedarrow.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/curvedarrow.m	(revision 27955)
@@ -0,0 +1,76 @@
+function curvedarrow(centerx,centery,distance,angle,secondangle,varargin)
+%CURVEDARROW - plot curved arrow, where curvature center is on (centerx,centery), radius is 'distance', 
+%   and angle determines arc length (angle in degrees). secondangle determines by how much the arc 
+%   generated is rotated along the [0,0,1] z axis.30,
+%
+%   Usage:
+%      curevedarrow(x1,y1,r,30,30,options)
+%      where options is a lit of paired arguments of string OR enums
+%      options can be: 
+%            'ratio': default .5 (ratio headarrow/length)
+%            'widthratio': default is 1/10 of length
+%            'width': if you want to specify an absolute width
+
+	%recover options
+	options=pairoptions(varargin{:});
+	ratio=getfieldvalue(options,'ratio',.1);
+	arrowlength=getfieldvalue(options,'arrowlength',1);
+	color=getfieldvalue(options,'color','k');
+
+	%transform angle in radians
+	angle=angle/180*pi;
+	nsteps=10;
+
+	%compute some values out of (x1,y1) and (x2,y2)
+	length=distance*angle;
+
+	if exist(options,'widthratio'),
+		widthratio=getfieldvalue(options,'widthratio');
+		width=length*widthratio;
+	else if exist(options,'width'),
+		width=getfieldvalue(options,'width');
+	else 
+		widthratio=.1;
+		width=length*widthratio;
+	end
+
+	%buidl the arrow itself: 
+	A=[centerx+distance, centery];
+	B=[centerx+distance+width, centery];
+	BC=[centerx+cos(0:angle/nsteps:angle)*(distance+width); centery+sin(0:angle/nsteps:angle)*(distance+width)]';
+	C=[centerx+cos(angle)*(distance+width), centery+sin(angle)*(distance+width)];
+	D=[centerx+cos(angle)*(distance), centery+sin(angle)*(distance)];
+	DA=[centerx+cos(angle:-angle/nsteps:0)*(distance); centery+sin(angle:-angle/nsteps:0)*(distance)]';
+
+	%Plot arrow
+	hold on
+	p1=patch([A(1) B(1) BC(:,1)' C(1) D(1) DA(:,1)' ],[A(2) B(2) BC(:,2)' C(2) D(2) DA(:,2)'],color);
+	set(p1,'EdgeColor',color); set(p1,'FaceColor',color);
+
+	%Build arrowhead 
+	E=D+2/3*(D-C);
+	F=C+2/3*(C-D);
+
+	n=(F-E)/norm(F-E,2);
+	m=[-n(2) n(1)];
+	if(angle<0)
+		m=-m;
+	end
+
+	if exist(options,'arrowlength'),
+		d=arrowlength;
+	else
+		d=abs((distance*angle)*ratio);
+	end
+
+	%G is d distance from middle of E and F: 
+	G=(E+F)/2+d*m;
+
+	p2=patch([E(1) F(1) G(1)],[E(2) F(2) G(2)],color);
+	set(p2,'EdgeColor',color); set(p2,'FaceColor',color);
+
+	%now rotate our arrow: 
+	rotate(p1,[0 0  1],secondangle);
+	rotate(p2,[0 0 1],secondangle);
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/export_gl.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/export_gl.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/export_gl.m	(revision 27955)
@@ -0,0 +1,117 @@
+function export_gl(md,varargin)
+
+	templist=plotoptions(varargin{:}); 
+	optionslist=templist.list;
+	options=optionslist{1};
+	options=checkplotoptions(md,options);
+
+	%Setup unique directory in present dir: 
+	directory=getfieldvalue(options,'directory','./');
+	databasename=getfieldvalue(options,'database','webgl');
+
+	%scaling factor: 
+	scaling_factor=getfieldvalue(options,'scaling_factor',50);
+
+	%Deal with title: 
+	if exist(options,'title')
+		title=getfieldvalue(options,'title');
+	else
+		title='';
+	end
+
+	%initialize model: 
+	model.title=title;
+	model.initialZoomFactor=getfieldvalue(options,'zoom',-.25);
+
+	%Deal with contour {{{
+
+	contour_lat1=md.mesh.lat(md.mesh.segments(:,1));
+	contour_lat2=md.mesh.lat(md.mesh.segments(:,2));
+	contour_long1=md.mesh.long(md.mesh.segments(:,1));
+	contour_long2=md.mesh.long(md.mesh.segments(:,2));
+	contour_surface1=md.geometry.surface(md.mesh.segments(:,1));
+	contour_surface2=md.geometry.surface(md.mesh.segments(:,2));
+
+	R1=6371000*ones(length(contour_surface1),1)+scaling_factor*contour_surface1;
+	R2=6371000*ones(length(contour_surface2),1)+scaling_factor*contour_surface2;
+
+	contourx1 = R1 .* cosd(contour_lat1) .* cosd(contour_long1);
+	contoury1 = R1 .* cosd(contour_lat1) .* sind(contour_long1);
+	contourz1 = R1 .* sind(contour_lat1);
+	
+	contourx2 = R2 .* cosd(contour_lat2) .* cosd(contour_long2);
+	contoury2 = R2 .* cosd(contour_lat2) .* sind(contour_long2);
+	contourz2 = R2 .* sind(contour_lat2);
+
+
+	model.contourx1=contourx1;
+	model.contoury1=contoury1;
+	model.contourz1=contourz1;
+	model.contourx2=contourx2;
+	model.contoury2=contoury2;
+	model.contourz2=contourz2;
+
+
+	%}}}
+%Deal with mesh and results {{{
+	
+	
+	lat=md.mesh.lat;
+	long=md.mesh.long;
+	surface=md.geometry.surface;
+	numberofelements=md.mesh.numberofelements;
+	numberofvertices=md.mesh.numberofvertices;
+
+	R=6371000*ones(numberofvertices,1)+scaling_factor*surface;
+
+	x = R .* cosd(lat) .* cosd(long);
+	y = R .* cosd(lat) .* sind(long);
+	z = R .* sind(lat);
+
+
+	%Deal with triangulation: 
+	model.index=md.mesh.elements;
+	model.x=x;
+	model.y=y;
+	model.z=z;
+	model.surface=surface;
+	
+	%Deal with data: 
+	results=struct([]);
+	for i=1:length(optionslist),
+		options=optionslist{i}; options=checkplotoptions(md,options);
+		data=getfieldvalue(options,'data');
+		results(i).data=data;
+		results(i).caxis=getfieldvalue(options,'caxis',[min(data(:)) max(data(:))]);
+
+		label=getfieldvalue(options,'label','');
+		if strcmpi(label,''),
+			%create generic label: 
+			label=['data' num2str(i)];
+		end
+		results(i).label=label;
+
+		shortlabel=getfieldvalue(options,'shortlabel','');
+		if strcmpi(shortlabel,''),
+			%create generic short label: 
+			shortlabel=['data' num2str(i)];
+		end
+		results(i).shortlabel=shortlabel;
+		
+		if size(data,2)>1,
+			time_range=getfieldvalue(options,'time_range',[0 100]);
+			results(i).time_range=time_range;
+		end
+
+		unit=getfieldvalue(options,'unit','');
+		if strcmpi(unit,''),
+			%create generic unit: 
+			unit='SI';
+		end
+		results(i).unit=unit;
+	end
+	model.results=results;
+	
+	%Write model to javascript database file: 
+	writejsfile([directory databasename '.js'],model,databasename);
+%}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/export_gl.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/export_gl.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/export_gl.py	(revision 27955)
@@ -0,0 +1,125 @@
+from plotoptions import plotoptions
+from checkplotoptions import checkplotoptions
+from model import model
+import numpy as np
+import math
+from writejsfile import writejsfile
+
+
+def export_gl(md, *varargin):
+    class ResultObj(object):
+        def __getattr__(self, attr):
+            return self.__dict__.get(attr)
+
+    print('getting options')
+    templist = plotoptions(varargin)
+    optionslist = templist.list
+    options = optionslist[1]
+    options = checkplotoptions(md, options)
+    #print (templist, options)
+    #templist contains options 0 - 3. Use in the future to rework.
+
+    #Setup unique directory in present dir:
+    print('setting directory')
+    directory = optionslist[0].getfieldvalue('directory')
+    databasename = optionslist[0].getfieldvalue('database')
+
+    #scaling factor:
+    print('setting scaling factor')
+    scaling_factor = optionslist[0].getfieldvalue('scaling_factor')
+
+    #Deal with title:
+    print('setting title')
+    if optionslist[0].exist('title'):
+        title = optionslist[0].getfieldvalue('title')
+    else:
+        title = ''
+
+    #initialize model:
+    print('initializing model')
+    model.title = title
+    model.initialZoomFactor = options.getfieldvalue('zoom', -.25)
+
+    #Deal with contour {{{
+    print('getting contour')
+    print(md.mesh.segments)
+    segmenets0 = [s - 1 for s in md.mesh.segments[:, 0]]
+    segmenets1 = [s - 1 for s in md.mesh.segments[:, 1]]
+
+    contour_lat1 = md.mesh.lat.take(segmenets0)
+    contour_lat2 = md.mesh.lat.take(segmenets1)
+    contour_long1 = md.mesh.long.take(segmenets0)
+    contour_long2 = md.mesh.long.take(segmenets1)
+    contour_surface1 = md.geometry.surface.take(segmenets0)
+    contour_surface2 = md.geometry.surface.take(segmenets1)
+
+    R1 = 6371000 * np.ones(len(contour_surface1)) + scaling_factor * contour_surface1
+    R2 = 6371000 * np.ones(len(contour_surface2)) + scaling_factor * contour_surface2
+
+    model.contourx1 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.cos(math.radians(int)), R1, contour_lat1, contour_long1))
+    model.contoury1 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.sin(math.radians(int)), R1, contour_lat1, contour_long1))
+    model.contourz1 = list(map(lambda r, lat: r * math.sin(math.radians(lat)), R1, contour_lat1))
+
+    model.contourx2 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.cos(math.radians(int)), R2, contour_lat2, contour_long2))
+    model.contoury2 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.sin(math.radians(int)), R2, contour_lat2, contour_long2))
+    model.contourz2 = list(map(lambda r, lat: r * math.sin(math.radians(lat)), R2, contour_lat2))
+
+    # }}}
+    #Deal with mesh and results {{{
+    print('getting mesh')
+    surface = md.geometry.surface.flatten()
+    numberofelements = md.mesh.numberofelements
+    numberofvertices = md.mesh.numberofvertices
+    R = 6371000 * np.ones(len(md.mesh.lat)) + scaling_factor * surface
+
+    x = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.cos(math.radians(int)), R, md.mesh.lat, md.mesh.long))
+    y = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.sin(math.radians(int)), R, md.mesh.lat, md.mesh.long))
+    z = list(map(lambda r, lat: r * math.sin(math.radians(lat)), R, md.mesh.lat))
+
+    #Deal with triangulation:
+    print('getting triangulation')
+    model.index = md.mesh.elements
+    model.x = x
+    model.y = y
+    model.z = z
+    model.surface = surface
+
+    results = []
+    print(optionslist)
+    #Deal with data:
+    print('getting data')
+    for i in range(0, len(optionslist)):
+        options = optionslist[i]
+        options = checkplotoptions(md, options)
+        data = options.getfieldvalue('data').flatten()
+        results.append(ResultObj())
+        results[i].data = data
+        results[i].caxis = options.getfieldvalue('caxis', [min(data), max(data)])
+
+        label = options.getfieldvalue('label', '')
+        if label == '':
+            #create generic label:
+            label = ['data', str(i)]
+        results[i].label = label
+
+        shortlabel = options.getfieldvalue('shortlabel', '')
+        if shortlabel == '':
+            #create generic short label:
+            shortlabel = ['data', str(i)]
+        results[i].shortlabel = shortlabel
+
+        if type(data[2]) != np.float64:
+            time_range = options.getfieldvalue('time_range', [0, 100])
+            results[i].time_range = time_range
+
+        unit = options.getfieldvalue('unit', '')
+        if unit == '':
+            #create generic unit:
+            unit = 'SI'
+        results[i].unit = unit
+    model.results = results
+
+    #Write model to javascript database file:
+    print('writing to file')
+    writejsfile(directory + databasename + '.js', model, databasename)
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/glstress.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/glstress.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/glstress.m	(revision 27955)
@@ -0,0 +1,71 @@
+
+%Find Elements that are crossed by the GL
+index = md.mesh.elements;
+pos_gle = find(min(md.mask.ocean_levelset(index),[],2)<0 & max(md.mask.ocean_levelset(index),[],2)>0);
+
+%Recover stresses
+md=mechanicalproperties(md, md.results.StressbalanceSolution.Vx, md.results.StressbalanceSolution.Vy);
+
+%Hilmar's horrible cmap
+cmap = jet(80);
+cmap(60-5:60+5,:) = 0;
+
+%Allocate thetaN
+thetaN  = zeros(size(pos_gle));
+thetaNx = zeros(size(pos_gle));
+thetaNy = zeros(size(pos_gle));
+
+count = 1;
+for el=pos_gle'
+	%Find segment that has 2 grounded nodes in this element
+	pos = find(md.mask.ocean_levelset(index(el,:))>0);
+
+	%Skip element if it has less than 2 grounded nodes
+	if numel(pos)~=2; continue; end
+
+	%Find edge that is grounded
+	x1 = md.mesh.x(index(el,pos(1)));
+	y1 = md.mesh.y(index(el,pos(1)));
+	x2 = md.mesh.x(index(el,pos(2)));
+	y2 = md.mesh.y(index(el,pos(2)));
+	hold on; plot([x1 x2],[y1 y2],'-c');
+
+	%Find the normal
+	if pos(1)==1 && pos(2)==3
+		nx = (y2-y1);
+		ny = -(x2-x1);
+	else
+		nx = -(y2-y1);
+		ny = +(x2-x1);
+	end
+	hold on; plot(mean([x1 x2])+[0 nx],mean([y1 y2])+[0 ny],'-g');
+	n=[nx;ny]/sqrt(nx^2+ny^2);
+
+	%Build sigma_nn
+	tau_xx = md.results.deviatoricstress.xx(el);
+	tau_yy = md.results.deviatoricstress.yy(el);
+	tau_xy = md.results.deviatoricstress.xy(el);
+	R = [2*tau_xx+tau_yy   tau_xy;tau_xy   2*tau_yy+tau_xx];
+	N = n'*R*n;
+
+	%Water stress only
+	H = 0.5*(md.geometry.thickness(index(el,pos(1))) + md.geometry.thickness(index(el,pos(2))));
+	g = md.constants.g;
+	rho_i = md.materials.rho_ice;
+	rho_w = md.materials.rho_water;
+	N0 = 0.5*g*rho_i.*(1-rho_i./rho_w).*H;
+
+	%Plot thetaN
+	thetaN(count)  = N/N0;
+	thetaNx(count) = mean([x1 x2]);
+	thetaNy(count) = mean([y1 y2]);
+	count = count+1;
+end
+
+%Cleanup unused values
+thetaN(count:end) = [];
+thetaNx(count:end) = [];
+thetaNy(count:end) = [];
+
+disp('DONE');
+plot_scatter(thetaNx,thetaNy,thetaN,'caxis',[-.5 1.5],'colormap',cmap,'MarkerSize',10);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/googlemaps.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/googlemaps.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/googlemaps.m	(revision 27955)
@@ -0,0 +1,284 @@
+function md = googlemaps(md,ullat,ullon,lrlat,lrlon,varargin)
+%GOOGLEMAPS - Extract image from Google maps for given region
+%
+%   Usage:
+%       md = googlemaps(md)
+%       md = googlemaps(md,zoom)
+%       md = googlemaps(md,ullat,ullon,lrlat,lrlon)
+%       md = googlemaps(md,ullat,ullon,lrlat,lrlon,options)
+%
+%   - ullat,ullon: Upper Left corner latitude and longitude
+%   - lrlat,lrlon: Lower Right corner latitude and longitude
+%
+%   Available options:
+%      - zoom: zoom level, between 1 and 21 (default dynamically calculated)
+
+%Parse inputs
+if nargin<=5,
+	options=pairoptions;
+else
+	options=varargin{:};
+	if ~isa(options,'pairoptions'),
+		options=pairoptions(varargin{:});
+	end
+end
+
+%Check that no temp.* exists
+if exist('temp.tiff','file'),
+	error('File temp.tiff already exists, remove first');
+end
+if exist('temp.png','file'),
+	error('File temp.png already exists, remove first');
+end
+
+if nargin==2,
+	options=addfielddefault(options,'zoom',ullat);
+end
+
+if md.mesh.epsg==0,
+	error('md.mesh.epsg not defined');
+end
+if nargin<3,
+	%Get xlim and ylim (used to extract Google maps image)
+	xlim=getfieldvalue(options,'xlim',[min(md.mesh.x) max(md.mesh.x)]);
+	ylim=getfieldvalue(options,'ylim',[min(md.mesh.y) max(md.mesh.y)]);
+	if md.mesh.epsg==3413,
+		[latlist lonlist]= xy2ll(...
+			[linspace(xlim(1),xlim(2),100) linspace(xlim(2),xlim(2),100) linspace(xlim(2),xlim(1),100) linspace(xlim(1),xlim(1),100)],...
+			[linspace(ylim(1),ylim(1),100) linspace(ylim(1),ylim(2),100) linspace(ylim(2),ylim(2),100) linspace(ylim(2),ylim(1),100)],...
+			+1,45,70);
+	elseif md.mesh.epsg==3031,
+		[latlist lonlist]= xy2ll(...
+			[linspace(xlim(1),xlim(2),100) linspace(xlim(2),xlim(2),100) linspace(xlim(2),xlim(1),100) linspace(xlim(1),xlim(1),100)],...
+			[linspace(ylim(1),ylim(1),100) linspace(ylim(1),ylim(2),100) linspace(ylim(2),ylim(2),100) linspace(ylim(2),ylim(1),100)],...
+			-1,0,71);
+	elseif md.mesh.epsg==26906, %UTM 6V Columbia Glacier Alaska
+		[latlist lonlist]= utm2ll(...
+			[linspace(xlim(1),xlim(2),100) linspace(xlim(2),xlim(2),100) linspace(xlim(2),xlim(1),100) linspace(xlim(1),xlim(1),100)],...
+			[linspace(ylim(1),ylim(1),100) linspace(ylim(1),ylim(2),100) linspace(ylim(2),ylim(2),100) linspace(ylim(2),ylim(1),100)],...
+			6);
+	elseif numel(md.mesh.lat)==numel(md.mesh.x),
+		latlist = md.mesh.lat; %That might work?
+		lonlist = md.mesh.long;
+	else
+		error('EPSG code not supported yet, and no lat long found in md.mesh');
+	end
+
+	%Image corners in lat/long
+	ullat = max(latlist); ullon = min(lonlist);
+	lrlat = min(latlist); lrlon = max(lonlist);
+elseif nargin>1 & nargin<5,
+	help googlemaps
+	error('Wrong usage');
+end
+
+%Get region specific projection parameters
+EPSGgoogle = 'EPSG:3785';   % Mercator       http://www.spatialreference.org/ref/epsg/3785/
+EPSGlocal  = ['EPSG:' num2str(md.mesh.epsg)];
+
+%Find optimal zoom
+if exist(options,'zoom'),
+	zoom = getfieldvalue(options,'zoom');
+else
+	zoom = optimalzoom(ullat,ullon,lrlat,lrlon);
+	display(['googlemaps info: default zoom level ' num2str(zoom)]);
+end
+scale   = 1;
+maxsize = 640;
+bottom  = 50;
+
+%convert all these coordinates to pixels
+[ulx, uly]= latlontopixels(ullat, ullon, zoom);
+[lrx, lry]= latlontopixels(lrlat, lrlon, zoom);
+
+%calculate total pixel dimensions of final image
+dx = lrx - ulx;
+dy = uly - lry;
+
+%calculate rows and columns
+cols = ceil(dx/maxsize);
+rows = ceil(dy/(maxsize-bottom));
+
+%calculate pixel dimensions of each small image
+width   = ceil(dx/cols);
+height  = ceil(dy/rows);
+heightplus = height + bottom;
+
+%Read Google Maps key
+if exist('~/.googlemapskey');
+	key=deblank(fileread('~/.googlemapskey'));
+	iskey = true;
+else
+	%To create an API key, visit: https://developers.google.com/maps/documentation/maps-static/get-api-key
+	%Once approved, go to Google Cloud Platform and enable "Maps Static APIs"
+	%You will also need to "enable billing fot this project"
+	%Then get the key and enter it in ~/.googlemapskey
+	warning('It appears that you do not have a Google Maps API key, retrieving google maps photos may fail (this is a new requirement of Google...)');
+	iskey = false;
+end
+
+%Initialize final image
+final = zeros(floor(dy),floor(dx),3);%RGB image
+for x=0:cols-1,
+	for y=0:rows-1,
+		dxn = width  * (0.5 + x);
+		dyn = height * (0.5 + y);
+		[latn, lonn] = pixelstolatlon(ulx + dxn, uly - dyn - bottom/2, zoom);
+		position = [num2str(latn) ',' num2str(lonn)];
+		disp(['Google Earth tile: ' num2str(x) '/' num2str(cols-1) ' ' num2str(y) '/' num2str(rows-1) ' (center: ' position ')']);
+		%Google maps API: http://developers.google.com/maps/documentation/staticmaps/
+		params = [...
+			'center=' position ...
+			'&zoom=' num2str(zoom)...
+			'&size=' num2str(width) 'x' num2str(heightplus)...
+			'&maptype=satellite'...
+			'&sensor=false'...
+			'&scale=' num2str(scale)];
+		if iskey,
+			params = [params,'&key=' key];
+		end
+		url = ['http://maps.google.com/maps/api/staticmap?' params];
+		count = 0;
+		countmax = 10;
+		while(true)
+			try,
+				[X, map]=imread(url,'png');
+				break;
+			catch me,
+				disp(['Failed, trying again... (' num2str(countmax-count) ' more attempts)']);
+				count = count+1;
+				pause(.3);
+				if count>countmax,
+					disp('Giving up...');
+					rethrow(me);
+				end
+			end
+		end
+		X=ind2rgb(X,map);
+		indx1 = floor(x*width)+1;
+		indx2 = min(floor(dx),floor(x*width)+size(X,2));
+		indy1 = floor(y*height)+1;
+		indy2 = min(floor(dy),floor(y*height)+size(X,1));
+		final(indy1:indy2,indx1:indx2,:)=X(1:indy2-indy1+1,1:indx2-indx1+1,:);
+	end
+end
+
+%Write image
+imwrite(final,'temp.png','png')
+[ulmx ulmy]=ll2mercator(ullat,ullon);
+[lrmx lrmy]=ll2mercator(lrlat,lrlon);
+
+%Create Geotiff for Mercator projection 
+[status,result] = system(['gdal_translate -of Gtiff -co "tfw=yes"  -a_ullr '...
+	num2str(ulmx,'%15.8f') ' ' num2str(ulmy,'%15.8f') ' ' num2str(lrmx,'%15.8f') ' ' num2str(lrmy,'%15.8f')...
+	' -a_srs "' EPSGgoogle '" "temp.png" "temp.tiff"']);
+delete('temp.png');
+
+%If not GDAL, exit
+if status~=0,
+	disp(result);
+	disp('googlemaps info: GDAL not found or not working properly, the Google image will not be transformed');
+	[gX gY]=meshgrid(ulx:ulx+size(final,2)-1,uly:-1:uly-size(final,1)+1);
+	[LAT LON]=pixelstolatlon(gX,gY, zoom);
+	if md.mesh.epsg==3413,
+		[X Y]=ll2xy(LAT,LON,+1,45,70);
+	elseif md.mesh.epsg==3031,
+		[X Y]=ll2xy(LAT,LON,-1,0,71);
+	elseif md.mesh.epsg==4326,
+		X=LON;
+		Y=LAT;
+	else
+		error('EPSG code not supported yet');
+	end
+	md.radaroverlay.pwr=final;
+	md.radaroverlay.x=X;
+	md.radaroverlay.y=Y;
+	return
+end
+
+%reproject from mercator (EPSG:3785) to UPS Ant (EPSG:3031)
+[status,result] = system(['gdalwarp  -s_srs ' EPSGgoogle ' -t_srs ' EPSGlocal ' temp.tiff temp2.tiff']);
+delete('temp.tiff','temp.tfw');
+
+%If previous command failed, exit
+if ~isempty(strfind(result,'ERROR')),
+	disp(result);
+	disp(' ');disp('googlemaps info: GDAL not working properly (missing PROJ.4 library?), Google image will not be transformed');
+	disp(result);
+	[gX gY]=meshgrid(ulx:ulx+size(final,2)-1,uly:-1:uly-size(final,1)+1);
+	[LAT LON]=pixelstolatlon(gX,gY, zoom);
+	if md.mesh.epsg==3413,
+		[X Y]=ll2xy(LAT,LON,+1,45,70);
+	elseif md.mesh.epsg==3031,
+		[X Y]=ll2xy(LAT,LON,-1,0,71);
+	elseif md.mesh.epsg==4326,
+		X=LON;
+		Y=LAT;
+	else
+		error('EPSG code not supported yet');
+	end
+	md.radaroverlay.pwr=final;
+	md.radaroverlay.x=X;
+	md.radaroverlay.y=Y;
+	return
+end
+
+%Put everything in model
+[status output]=system('gdalinfo temp2.tiff | command grep "Upper Left"');
+ul = sscanf(output,'Upper Left  (%f, %f)');
+[status output]=system('gdalinfo temp2.tiff | command grep "Lower Right"');
+lr = sscanf(output,'Lower Right (%f, %f)');
+[status output]=system('gdalinfo temp2.tiff | command grep "Size is"');
+si = sscanf(output,'Size is %i, %i');
+x_m=linspace(ul(1),lr(1),si(1));
+y_m=linspace(ul(2),lr(2),si(2)); %We need to reverse y_m because the image is read upside down by matlab
+final=imread('temp2.tiff');
+delete('temp2.tiff');
+
+md.radaroverlay.pwr=final;
+md.radaroverlay.x=x_m;
+md.radaroverlay.y=y_m;
+
+end
+function [px py]=latlontopixels(lat, lon, zoom),
+	EARTH_RADIUS = 6378137;
+	EQUATOR_CIRCUMFERENCE = 2 * pi * EARTH_RADIUS;
+	INITIAL_RESOLUTION = EQUATOR_CIRCUMFERENCE / 256.0;
+	ORIGIN_SHIFT = EQUATOR_CIRCUMFERENCE / 2.0;
+
+	[mx,my]=ll2mercator(lat,lon);
+	res = INITIAL_RESOLUTION / (2^zoom);
+	px = (mx + ORIGIN_SHIFT) / res;
+	py = (my + ORIGIN_SHIFT) / res;
+end
+
+function [lat lon]=pixelstolatlon(px, py, zoom),
+	EARTH_RADIUS = 6378137;
+	EQUATOR_CIRCUMFERENCE = 2 * pi * EARTH_RADIUS;
+	INITIAL_RESOLUTION = EQUATOR_CIRCUMFERENCE / 256.0;
+	ORIGIN_SHIFT = EQUATOR_CIRCUMFERENCE / 2.0;
+
+	res = INITIAL_RESOLUTION / (2^zoom);
+	mx = px * res - ORIGIN_SHIFT;
+	my = py * res - ORIGIN_SHIFT;
+	[lat lon] = mercator2ll(mx,my);
+end
+function  zoom = optimalzoom(ullat,ullon,lrlat,lrlon)
+
+	EARTH_RADIUS = 6378137;
+	EQUATOR_CIRCUMFERENCE = 2 * pi * EARTH_RADIUS;
+	INITIAL_RESOLUTION = EQUATOR_CIRCUMFERENCE / 256.0;
+
+	optimalsize = 1000; %Number of pixels in final image
+
+	[ulmx ulmy]=ll2mercator(ullat,ullon);
+	[lrmx lrmy]=ll2mercator(lrlat,lrlon);
+	distance = sqrt((lrmx-ulmx)^2 + (lrmy-ulmy)^2);
+
+	zoom1 = floor(log(INITIAL_RESOLUTION*optimalsize/(lrmx-ulmx))/log(2));
+	zoom2 = floor(log(INITIAL_RESOLUTION*optimalsize/(ulmy-lrmy))/log(2));
+
+	zoom=max(zoom1,zoom2);
+
+	zoom = min(max(1,zoom),21);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/kmlgridded.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/kmlgridded.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/kmlgridded.m	(revision 27955)
@@ -0,0 +1,147 @@
+function kmlgridded(md,data,varargin)
+
+%process options
+options=pairoptions(varargin{:});
+
+%process options
+options=changefieldvalue(options,'coord','latlon');
+
+%process mesh and data
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[data datatype]=processdata(md,data,options);
+
+%check is2d
+if ~is2d, 
+	error('buildgridded error message: gridded not supported for 3d meshes, project on a layer');
+end
+
+%Get xlim and ylim (used to extract radar image)
+xlim=[min(x) max(x)];
+ylim=[min(y) max(y)];
+post=getfieldvalue(options,'posting',diff(xlim)/1000);
+if(diff(xlim)/post>10000),
+	error(['posting too large']);
+end
+
+%Interpolating data on grid
+x_m = xlim(1):post:xlim(2);
+y_m = ylim(1):post:ylim(2);
+data_grid=InterpFromMeshToGrid(elements,x,y,data,x_m,y_m,NaN);
+if size(data_grid,1)<3 | size(data_grid,2)<3,
+	error('data_grid size too small, check posting and units');
+end
+pos=find(isinf(data_grid));
+if ~isempty(pos),
+	disp('Warning: removing Infs from vector (probably log(0)?)');
+	data_grid(pos)=NaN;
+end
+
+%Process data_grid: add white in NaN and correct caxis accordingly
+data_nan=find(isnan(data_grid));
+data_min=min(data_grid(:));
+data_max=max(data_grid(:));
+if exist(options,'caxis'),
+	caxis_opt=getfieldvalue(options,'caxis');
+	data_grid(find(data_grid<caxis_opt(1)))=caxis_opt(1);
+	data_grid(find(data_grid>caxis_opt(2)))=caxis_opt(2);
+	data_min=caxis_opt(1);
+	data_max=caxis_opt(2);
+end
+
+%Get colormap
+colorm = getcolormap(options);
+len    = size(colorm,1);
+ind = ceil((len-1)*(data_grid-data_min)/(data_max - data_min + eps) +1);
+ind(find(ind>len))=len;
+ind(find(ind<1)  )=1;
+ind(find(isnan(ind)))=1;
+image_rgb=zeros(size(data_grid,1),size(data_grid,2),3);
+r=colorm(:,1); image_rgb(:,:,1)=r(ind); clear r;
+g=colorm(:,2); image_rgb(:,:,2)=g(ind); clear g;
+b=colorm(:,3); image_rgb(:,:,3)=b(ind); clear b;
+
+%Deal with alpha
+alpha=getfieldvalue(options,'alpha',.8);
+alphaMatrix = alpha*ones(size(data_grid));
+alphaMatrix(data_nan) = 0;
+
+%write kml
+kmlfilename=getfieldvalue(options,'kmlfilename','tempfile.kml');
+kmlroot=getfieldvalue(options,'kmlroot','./');
+kmlimagename=getfieldvalue(options,'kmlimagename','tempimage');
+kmlresolution=getfieldvalue(options,'kmlresolution',1);
+kmlfolder=getfieldvalue(options,'kmlfolder','Ground Overlay');
+kmlfolderdescription=getfieldvalue(options,'kmlfolderdescription','');
+kmlgroundoverlayname=getfieldvalue(options,'kmlgroundoverlayname','ground overlay');
+kmlgroundoverlaydescription=getfieldvalue(options,'kmlgroundoverlaydescription','description');
+
+%write png
+imwrite(image_rgb,[kmlimagename '.png'],'png','alpha',alphaMatrix);
+clear image_rgb alphaMatrix
+
+%prepare colorbar
+iscolorbar=0;
+if strcmpi(getfieldvalue(options,'colorbar','on'),'on'),
+	X = linspace(0,1,len)';
+	Xlab = round(linspace(data_min,data_max,len+1));
+	html = ['<TABLE border=' num2str(1) ' bgcolor=#FFFFFF>',10];
+
+	for k=len:-1:1
+		f = (Xlab(k)-data_min)/(data_max-data_min);
+		if f<0, f=0; end
+		if f>1, f=1; end
+		polyColor(1,1) = interp1(X,colorm(:,1),f);
+		polyColor(1,2) = interp1(X,colorm(:,2),f);
+		polyColor(1,3) = interp1(X,colorm(:,3),f);
+		polyColorStr(1:2) = dec2hex(round(polyColor(1)*255),2);
+		polyColorStr(3:4) = dec2hex(round(polyColor(2)*255),2);
+		polyColorStr(5:6) = dec2hex(round(polyColor(3)*255),2);
+		html = [html,'<TR><TD width="15px" bgcolor=#',polyColorStr, '>&nbsp;</TD>','<TD bgcolor=#FFFFFF>'];
+		if k==1
+			html=[html,'&lt;= ',num2str(Xlab(k),'%g')];
+		elseif k==len
+			html=[html,'&gt;= ',num2str(Xlab(k),'%g')];
+		else
+			html=[html,num2str(Xlab(k),'%g'),' to ',num2str(Xlab(k+1),'%g'),'</TD>'];
+		end
+		html = [html,'</TR>',10];
+	end
+	html = [html,'</TABLE>'];
+	iscolorbar = 1;
+end
+
+%now write kml file
+fid=fopen([kmlroot '/' kmlfilename],'w');
+fprintf(fid,'%s\n','<?xml version="1.0" encoding="UTF-8"?>');
+fprintf(fid,'%s\n','<kml xmlns="http://earth.google.com/kml/2.1">');
+fprintf(fid,'%s\n','<Document>');
+fprintf(fid,'%s%s%s\n','<name>',kmlfilename,'</name>');
+if iscolorbar,
+	fprintf(fid,'<Placemark id="colorbar">\n');
+	fprintf(fid,'%s%s%s\n','<name>','click the icon to see the colorbar','</name>');
+	fprintf(fid,'%s%s%s\n','<description>','Ground overlay colorbar','</description>');
+	fprintf(fid,'<visibility>1</visibility>\n');
+	fprintf(fid,['<description>',10,'<![CDATA[' html ']]>',10,'</description>',10,'\n']);
+	fprintf(fid,['<Style><IconStyle><scale>1</scale><Icon><href>http://maps.google.com/mapfiles/kml/shapes/donut.png</href></Icon></IconStyle><ListStyle></ListStyle></Style><Point id="poly_colorbar">\n']);
+	fprintf(fid,'<altitudeMode>clampToGround</altitudeMode>\n');
+	fprintf(fid,'<extrude>1</extrude>\n');
+	fprintf(fid,'<tessellate>1</tessellate>\n');
+	fprintf(fid,'%s%g,%g%s\n','<coordinates>',max(x),mean(y),'</coordinates>');
+	fprintf(fid,'</Point>\n');
+	fprintf(fid,'</Placemark>\n');
+end
+fprintf(fid,'%s\n','<GroundOverlay id="groundoverlay">');
+fprintf(fid,'%s%s%s\n','<name>',kmlgroundoverlayname,'</name>');
+fprintf(fid,'%s\n','<description>',kmlgroundoverlaydescription,'</description>');
+fprintf(fid,'%s%s.%s%s\n','<Icon>',kmlimagename,'png','</Icon>');
+fprintf(fid,'%s\n','<LatLonBox>');
+fprintf(fid,'%s%f%s\n','<north>',max(y_m),'</north>');
+fprintf(fid,'%s%f%s\n','<south>',min(y_m),'</south>');
+fprintf(fid,'%s%f%s\n','<east>',max(x_m),'</east>');
+fprintf(fid,'%s%f%s\n','<west>',min(x_m),'</west>');
+fprintf(fid,'%s\n','<rotation>0</rotation>');
+fprintf(fid,'%s\n','</LatLonBox>');
+fprintf(fid,'%s\n','</GroundOverlay>');
+fprintf(fid,'%s\n','</Document>');
+fprintf(fid,'%s\n','</kml>');
+fclose(fid);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/kmlgroundoverlay.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/kmlgroundoverlay.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/kmlgroundoverlay.m	(revision 27955)
@@ -0,0 +1,83 @@
+function kmlgroundoverlay(md,options)
+%KMLGROUNDOVERLAY: create ground overlay image in kml format
+%
+%
+%    options: 
+%         kmlfilename
+%         imagename
+%
+%    Usage: 
+%         kmlgroundoverlay(md,'kmlfilename','temp.kml','imagename','greenland.jpeg');
+%
+
+%first figure out if lat and long were computed!
+if (isempty(md.mesh.lat) | isempty(md.mesh.long)),
+	error('kmlgroundoverlay error message: project x,y onto lat,long fields of model!');
+end
+
+%process kml options
+kmlfilename=getfieldvalue(options,'kmlfilename','tempfile.kml');
+kmlroot=getfieldvalue(options,'kmlroot','./');
+kmlimagename=getfieldvalue(options,'kmlimagename','tempimage');
+kmlimagetype=getfieldvalue(options,'kmlimagetype','png');
+kmlresolution=getfieldvalue(options,'kmlresolution',1);
+kmlfolder=getfieldvalue(options,'kmlfolder','Ground Overlay');
+kmlfolderdescription=getfieldvalue(options,'kmlfolderdescription','');
+kmlgroundoverlayname=getfieldvalue(options,'kmlgroundoverlayname','');
+kmlgroundoverlaydescription=getfieldvalue(options,'kmlgroundoverlaydescription','');
+
+%figure out  min and max for lat and long of this image:
+if strcmpi(getfieldvalue(options,'coord',''),'latlon'),
+	%need to plot with option 'coord','latlon'
+	XLIM=xlim();
+	YLIM=ylim();
+	west=XLIM(1);
+	east=XLIM(2);
+	south=YLIM(1);
+	north=YLIM(2);
+else
+	west=min(md.mesh.long);
+	east=max(md.mesh.long);
+	south=min(md.mesh.lat);
+	north=max(md.mesh.lat);
+end
+
+%print image at high resolution
+%export_fig([kmlroot '/' kmlimagename],'-transparent','-zbuffer'); %zbuffer to avoid "Bad data returned by HARDCOPY. Not calling IMWRITE"
+export_fig([kmlroot '/' kmlimagename],'-transparent');
+%printmodel([kmlroot '/' kmlimagename],kmlimagetype,'trim','on','resolution',kmlresolution,'margin','off','frame','off');
+
+%now write kml file
+fid=fopen([kmlroot '/' kmlfilename],'w');
+
+fprintf(fid,'%s\n','<?xml version="1.0" encoding="UTF-8"?>');
+fprintf(fid,'%s\n','<kml xmlns="http://www.opengis.net/kml/2.2">');
+fprintf(fid,'%s\n','<Folder>');
+fprintf(fid,'%s%s%s\n','<name>',kmlfolder,'</name>');
+fprintf(fid,'%s%s%s\n','<description>',kmlfolderdescription,'</description>');
+fprintf(fid,'%s\n','<GroundOverlay>');
+fprintf(fid,'%s%s%s\n','<name>',kmlgroundoverlayname,'</name>');
+fprintf(fid,'%s\n','<description>',kmlgroundoverlaydescription,'</description>');
+fprintf(fid,'%s%s.%s%s\n','<Icon>',kmlimagename,kmlimagetype,'</Icon>');
+fprintf(fid,'%s\n','<LatLonBox>');
+fprintf(fid,'%s%f%s\n','<north>',north,'</north>');
+fprintf(fid,'%s%f%s\n','<south>',south,'</south>');
+fprintf(fid,'%s%f%s\n','<east>',east,'</east>');
+fprintf(fid,'%s%f%s\n','<west>',west,'</west>');
+fprintf(fid,'%s\n','<rotation>0</rotation>');
+fprintf(fid,'%s\n','</LatLonBox>');
+fprintf(fid,'%s\n','</GroundOverlay>');
+fprintf(fid,'%s\n','</Folder>');
+fprintf(fid,'%s\n','</kml>');
+
+fclose(fid);
+
+if strcmpi(getfieldvalue(options,'kmz','on'),'on')
+	disp('Converting to kmz...');
+	system(['cat ' kmlroot '/' kmlfilename '| sed -e "s/' kmlimagename '\.png/files\/' kmlimagename '.png/g" > doc.kml']);
+	system('mkdir files');
+	system(['mv ' kmlroot '/' kmlimagename  '.png files/']);
+	system(['zip -r  ' kmlfilename '.zip  files doc.kml']);
+	system(['mv ' kmlfilename '.zip ' kmlfilename]);
+	system(['rm -rf  files doc.kml']);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/landsatmap.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/landsatmap.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/landsatmap.m	(revision 27955)
@@ -0,0 +1,137 @@
+% Explain
+%  upload landsatmap to md.radaroverlay
+%
+% Usage
+%  md = landsatmap(md);
+%  md = landsatmap(md,'highres',1);
+function md = landsatmap(md,varargin),
+
+% check input variables
+if nargin == 1 ,% {{{
+	options = pairoptions;
+else
+	options = pairoptions(varargin{:});
+end% }}}
+
+%process mesh and data
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%check is2d
+if ~is2d,
+   error('buildgridded error message: gridded not supported for 3d meshes, project on a layer');
+end
+
+% get xlim, and ylim
+xlim    = getfieldvalue(options,'xlim',[min(x) max(x)])/getfieldvalue(options,'unit',1);
+ylim    = getfieldvalue(options,'ylim',[min(y) max(y)])/getfieldvalue(options,'unit',1);
+highres = getfieldvalue(options,'highres',0);
+
+if md.mesh.epsg == 3031 % Antarctica region {{{
+	if highres, % high resolution geotiff file
+		if 1, disp('   LIMA with geotiff'), % {{{
+			disp('WARNING : this image shoud be collected with geocoded tif file');
+			% find merged mosaic landsat image {{{
+			limapath = {'/drive/project_inwoo/issm/Data/LIMA/AntarcticaLandsat.tif';
+				'/home/DATA/ICESHEET/LIMA/AntarcticaLandsat.tif'};
+			pos = zeros(length(limapath),1);
+			for ii = 1:length(limapath)
+				if exist(limapath{ii}), pos(ii) = 1; end
+			end
+			limapath = limapath{find(pos)};
+			fprintf('   LIMA path is %s\n', limapath);
+			% }}}
+
+			% read image
+			im = imread(limapath);
+
+			% Region of LIMA data set
+			info = gdalinfo(limapath); % get geotiff info
+			xm = info.xmin + info.dx*[0:info.nx-1];
+			ym = info.ymax - info.dy*[0:info.ny-1];
+
+			%disp('   find region of model at LIMA');
+			offset = 1e+4;
+			posx = find((xm > xlim(1)-offset).* (xm < xlim(2)+offset));
+			posy = find((ym > ylim(1)-offset).* (ym < ylim(2)+offset));
+		end % }}}
+	else
+		if 1, disp('   LIMA with jp2'), % {{{
+			% find merged mosaic landsat image {{{
+			limapath = {'/drive/project_inwoo/issm/Data/LIMA/jp2_100pct/00000-20080314-144756363.jp2';
+				'/data/project_inwoo/issm/Data/LIMA/jp2_100pct/00000-20080314-144756363.jp2';
+				'/home/DATA/ICESHEET/LIMA/jp2_100pct/00000-20080314-144756363.jp2'};
+			pos = zeros(length(limapath),1);
+			for ii = 1:length(limapath)
+				if exist(limapath{ii}), pos(ii) = 1; end
+			end
+			
+			if sum(pos) == 0,
+				fprintf('download website : https://lima.usgs.gov/fullcontinent.php\n');
+				error('Landsat image at Antarctic region should be downloaded at above website');
+			end
+			limapath = limapath{find(pos)};
+			fprintf('   LIMA path is %s\n', limapath);
+			% }}}
+
+			% Resolution and coordinates of upper left corner:
+			xres = 240.010503438;
+			yres = -240.000000516;
+			xul = -2668154.98388;
+			yul = 2362214.96998;
+
+			% Arrays of pixel coordinates:
+			xm = [xul:xres:2.813684914643920e+06];
+			ym = [yul:yres:-2.294505040031947e+06];
+
+			% reduction level 3 corresponds to very 2^3 = 8 points 
+			rlevel = 2;
+			xm = xm(1:2^rlevel:end);
+			ym = ym(1:2^rlevel:end);
+			im = imread(limapath,'reductionlevel',rlevel);
+
+			%disp('   find region of model at LIMA');
+			offset = 1e+4;
+			posx = find((xm > xlim(1)-offset).* (xm < xlim(2)+offset));
+			posy = find((ym > ylim(1)-offset).* (ym < ylim(2)+offset));
+		end % }}}
+		if 0, disp('   LIMA with reduced tiff'), % {{{
+			% find merged mosaic landsat image {{{
+			limapath = {'/drive/project_inwoo/issm/Data/LIMA/tiff_90pct/00000-20080319-092059124.tif'};
+			pos = zeros(length(limapath),1);
+			for ii = 1:length(limapath)
+				if exist(limapath{ii}), pos(ii) = 1; end
+			end
+			
+			if sum(pos) == 0,
+				fprintf('download website : https://lima.usgs.gov/fullcontinent.php\n');
+				error('Landsat image at Antarctic region should be downloaded at above website');
+			end
+			limapath = limapath{find(pos)};
+			fprintf('   LIMA path is %s\n', limapath);
+			% }}}
+
+			% read image
+			im = imread(limapath);
+
+			% Region of LIMA data set
+			info = gdalinfo(limapath); % get geotiff info
+			xm = info.xmin + info.dx*[0:info.nx-1];
+			ym = info.ymax - info.dy*[0:info.ny-1];
+
+			%disp('   find region of model at LIMA');
+			offset = 1e+4;
+			posx = find((xm > xlim(1)-offset).* (xm < xlim(2)+offset));
+			posy = find((ym > ylim(1)-offset).* (ym < ylim(2)+offset));
+		end % }}}
+	end
+
+	% update region of radaroverlay
+	md.radaroverlay.x = xm(posx);
+	md.radaroverlay.y = ym(posy);
+	md.radaroverlay.pwr = im(posy, posx,:);
+
+	% }}}
+else
+	error('Check md.mesh.epsg, available LIMA regeion is at Antarctica (EPSG:3031)');
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/latlonoverlay.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/latlonoverlay.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/latlonoverlay.m	(revision 27955)
@@ -0,0 +1,148 @@
+function latlonoverlay(md,options)
+%LATLONOVERLAY - overlay latitude and longitude lines on current figure
+%
+%   latstep,lonstep, in latitude and longitude degreees, between two latitudinal, longitudinal profiles.
+%   color: [1 1 1] for example
+%   resolution: profile resolution ( in lat,lon degrees) 
+%   gap: gap (in meters) to plug lat,lon degree numbers;
+%
+%   Usage:
+%      latlonoverlay(options)
+
+%get options
+latlon=getfieldvalue(options,'latlon');
+numbering=getfieldvalue(options,'latlonnumbering','off');
+latlonclick=getfieldvalue(options,'latlonclick',0);
+fontsize=getfieldvalue(options,'fontsize',16);
+
+%recover arguments (set default parameters if needed)
+%1: latlon
+if ~iscell(latlon),
+	if ischar(latlon) & strcmpi(latlon,'on'),
+		%defaults
+		latstep=3; lonstep=3;
+		resolution=0.1;
+		color=[1 0 1];
+	else return; end
+else
+	if length(latlon)<2
+		error('latlonoverlay error message: at least 2 arguments are required, or use ''on'' option.');
+	end
+	if length(latlon)>3, color=latlon{4};      else color=[1 1 1]; end
+	if length(latlon)>2, resolution=latlon{3}; else resolution=0.1;end
+	latstep=latlon{1};
+	lonstep=latlon{2};
+end
+
+%2: numbering
+if ~iscell(numbering) & isnan(numbering),
+	numbering=false;
+else
+	if ~iscell(numbering),
+		if strcmpi(char(numbering),'on'),
+			%defaults
+			latgap=2; longap=2;
+			colornumber=color;
+			latangle=0; lonangle=0;
+			numbering=true;
+		else
+			numbering=false;
+		end
+	else
+		latgap=numbering{1}; longap=numbering{2};
+		colornumber=numbering{3};
+		latangle=numbering{4}; lonangle=numbering{5};
+		numbering=true;
+	end
+end
+
+%what are the x and y limits
+xlimits=getfieldvalue(options,'xlim',xlim);
+ylimits=getfieldvalue(options,'ylim',ylim);
+
+%lat
+for lat=-90:latstep:90
+	longitudes=0:resolution:360;
+	latitudes =lat*ones(size(longitudes));
+
+	if md.mesh.epsg==3413,
+		if lat<0, continue; end
+		[x,y]=ll2xy(latitudes,longitudes,+1,45,70);
+	elseif md.mesh.epsg==3031,
+		if lat>0, continue; end
+		[x,y]=ll2xy(latitudes,longitudes,-1, 0,71);
+	else error('field md.mesh.epsg not supported yet'); end
+
+	pos=find(x<=xlimits(2) & x>=xlimits(1) & y<=ylimits(2) & y>=ylimits(1));
+	if length(pos)<=1, continue; end
+	x=x(pos);y=y(pos);
+	l=line(x,y,'Color',color);
+
+	if numbering
+		ind=length(x)-2*latgap;
+		if (ind<=0), continue; end
+		xcorner=x(ind);            ycorner=y(ind);
+		xcorner2=x(max(ind-10,1)); ycorner2=y(max(ind-10,1));
+
+		if (xcorner>xlimits(1) & xcorner<xlimits(2) & ycorner>ylimits(1) & ycorner<ylimits(2)),
+			angle=mod((180)/pi*atan2((ycorner2-ycorner),(xcorner2-xcorner))+latangle,360);
+			if lat<0, label=[num2str(abs(lat)) '^{\circ} S'];
+			else      label=[num2str(abs(lat)) '^{\circ} N']; end
+			th=text(xcorner,ycorner,label);
+			set(th,'Color',colornumber,'Rotation',angle,'FontSize',fontsize,'HorizontalAlignment','center','VerticalAlignment','middle','Clipping','on');
+
+			%erase line and redraw it in two parts, to leave space for latitude number
+			delete(l);
+			line(x(1:ind-latgap),y(1:ind-latgap),'Color',color);hold on;
+			line(x(ind+latgap:end),y(ind+latgap:end),'Color',color);
+			set(gcf,'InvertHardcopy','off');
+		end
+
+	end
+end
+
+%lon
+for lon=-180:lonstep:180
+
+	if md.mesh.epsg==3413,
+		latitudes =0:resolution:90;
+		longitudes=lon*ones(size(latitudes));
+		[x,y]=ll2xy(latitudes,longitudes,+1,45,70);
+	elseif md.mesh.epsg==3031,
+		latitudes =-90:resolution:0;
+		longitudes=lon*ones(size(latitudes));
+		[x,y]=ll2xy(latitudes,longitudes,-1, 0,71);
+	else
+		error('field md.mesh.epsg not supported yet'); 
+	end
+
+	pos=find(x<=xlimits(2) & x>=xlimits(1) & y<=ylimits(2) & y>=ylimits(1));
+	if length(pos)<=1, continue; end
+	x=x(pos);y=y(pos);
+	l=line(x,y,'Color',color);
+
+	if numbering,
+		ind=length(x)-2*longap;
+		if (ind<=0), continue; end
+		xcorner=x(ind);            ycorner=y(ind);
+		xcorner2=x(max(ind-10,1)); ycorner2=y(max(ind-10,1));
+
+		if (xcorner>xlimits(1) & xcorner<xlimits(2) & ycorner>ylimits(1) & ycorner<ylimits(2)),
+			angle=mod((180)/pi*atan2((ycorner2-ycorner),(xcorner2-xcorner))+lonangle,360);
+			if lon<0, label=[num2str(abs(lon)) '^{\circ} W'];
+			else      label=[num2str(abs(lon)) '^{\circ} E']; end
+			th=text(xcorner,ycorner,label);
+			set(th,'Color',colornumber,'Rotation',angle,'FontSize',fontsize,'HorizontalAlignment','center','VerticalAlignment','middle','Clipping','on');
+
+			%erase line and redraw it in two parts, to leave space for latitude number
+			delete(l);
+			line(x(1:ind-longap),y(1:ind-longap),'Color',color);hold on;
+			line(x(ind+longap:end),y(ind+longap:end),'Color',color);
+		end
+
+	end
+end
+
+%Back to original limits
+xlim(xlimits);
+ylim(ylimits);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/manualcb.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/manualcb.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/manualcb.m	(revision 27955)
@@ -0,0 +1,159 @@
+function h=manualcb(zmin,zmax,cmap,varargin)
+%MANUALCB - custom colorbar
+%
+%   Usage:
+%      manualcb(min,max,colormap,options)
+%
+%   Available options:
+%      - 'fontsize'    : default is 12
+%      - 'fontcolor'   : default is 'k'
+%      - 'smallbars'   : bars next to each tick (default is false)
+%      - 'position'    : colorbar position in normalized units
+%      - 'orientation' : 'vertical' (default) or 'horizontal'
+%      - 'title'       : colorbar title
+%      - 'xlabel'      : colorbar x-label
+%      - 'ylabel'      : colorbar y-label
+%      - 'tick'        : specified values of tick labels
+%      - 'ticksep'     : spacing between ticks
+%      - 'inverttickposition' : put ticks on the left hand side for vertical cb
+
+%check inputs
+if nargin<3,
+	help manualcb
+	error('bad usage');
+end
+if zmin>zmax,
+	error('zmin should be smaller than zmax');
+end
+
+%Get plot axes
+mainaxes = gca;
+
+%process options
+options = pairoptions(varargin{:});
+if exist(options,'tick') & exist(options,'ticksep'),
+	error('only one of tick or ticksep can be specified');
+end
+fontsize  = getfieldvalue(options,'fontsize',12);
+fontcolor = getfieldvalue(options,'fontcolor','k');
+smallbars = getfieldvalue(options,'smallbars',false);
+
+%Colorbar position
+if ~exist(options,'position'),
+	position = plotboxpos;
+	xstart   = position(1)+position(3)+0.01;
+	ystart   = position(2);
+	width    = .02;
+	height   = position(4);
+else
+	position = getfieldvalue(options,'position');
+	xstart = position(1);
+	ystart = position(2);
+	width  = position(3);
+	height = position(4);
+end
+axes('Units','normalized','Position',[xstart ystart width height],'XTickLabel','','YTickLabel','','Visible','on');
+xlim([0 1]);
+ylim([0 1]);
+
+%Prepare ticks
+if ~exist(options,'log'),
+	deltaz = getfieldvalue(options,'ticksep',dtick(zmax-zmin));
+	ztick  = getfieldvalue(options,'tick',(deltaz*ceil(zmin/deltaz)):deltaz:zmax);
+	if (any(ztick>zmax) | any(ztick<zmin)),
+		error('one or more specified tick values falls outside of [zmin,zmax]');
+	end
+	ytick  = (ztick-zmin)/(zmax-zmin);
+else
+	%old method
+	ztick = getfieldvalue(options,'tick',round( logspace(log10(zmin),log10(zmax),8) ));
+	ytick = linspace(0,1,numel(ztick));
+
+	%New method
+	test=logspace(-10,10,21);
+	pos=find(test>=zmin & test<=zmax);
+	ztick= test(pos);
+	ytick= (log(ztick) - log(zmin))/(log(zmax) - log(zmin));
+end
+
+%Display colorbar
+hold on
+numcolors=size(cmap,1);
+if 0,
+	%disappears somtimes
+	if strcmpi(getfieldvalue(options,'orientation','vertical'),'vertical'),
+		image_rgb = ind2rgb(repmat((1:numcolors)',1,10),cmap);
+	else
+		image_rgb = ind2rgb(repmat((1:numcolors),10,1),cmap);
+	end
+
+	imagesc([0 1],[0 1],image_rgb);
+else
+	%Creates triangles when exported as pdf
+	if strcmpi(getfieldvalue(options,'orientation','vertical'),'vertical'),
+		for i=1:numcolors,
+			patch([0,0,1,1],[(i-1)/numcolors,i/numcolors,i/numcolors,(i-1)/numcolors],0,'FaceColor',cmap(i,:),'Clipping','off','EdgeColor','none')
+		end
+	else
+		for i=1:numcolors,
+			patch([(i-1)/numcolors,i/numcolors,i/numcolors,(i-1)/numcolors],[0,0,1,1],0,'FaceColor',cmap(i,:),'Clipping','off','EdgeColor','none')
+		end
+	end
+end
+patch([0,0,1,1],[0,1,1,0],fontcolor,'FaceColor','none','Clipping','off','Edgecolor',fontcolor)
+
+%Add ticks
+if strcmpi(getfieldvalue(options,'orientation','vertical'),'vertical'),
+	%Use FOR LOOP otherwise numbers are not correcly centered
+	if getfieldvalue(options,'inverttickposition',0)==1,
+		for i=1:length(ytick), text(-0.5,ytick(i),num2str(ztick(i)),'HorizontalAlignment','right','VerticalAlignment','middle','FontSize',fontsize,'Color',fontcolor); end
+	else
+		for i=1:length(ytick), text(1.5,ytick(i),num2str(ztick(i)),'HorizontalAlignment','left','VerticalAlignment','middle','FontSize',fontsize,'Color',fontcolor); end
+	end
+	if smallbars,
+		for i=1:numel(ztick)
+			patch([0.8 1.0],[ytick(i) ytick(i)],fontcolor,'Edgecolor',fontcolor)
+			patch([0.0 0.2],[ytick(i) ytick(i)],fontcolor,'Edgecolor',fontcolor)
+		end
+	end
+else
+	%Use FOR LOOP otherwise numbers are not correcly centered
+	for i=1:length(ytick), text(ytick(i),-0.5,num2str(ztick(i)),'HorizontalAlignment','center','VerticalAlignment','top','FontSize',fontsize,'Color',fontcolor); end
+	if smallbars,
+		for i=1:numel(ztick)
+			patch([ytick(i) ytick(i)],[0.8 1.0],[ytick(i) ytick(i)],fontcolor,'Edgecolor',fontcolor)
+			patch([ytick(i) ytick(i)],[0.0 0.2],[ytick(i) ytick(i)],fontcolor,'Edgecolor',fontcolor)
+		end
+	end
+end
+
+if exist(options,'title'),
+	title(getfieldvalue(options,'title'),'FontSize',getfieldvalue(options,'titlefontsize',fontsize),'Color',fontcolor);
+end
+if exist(options,'ylabel'),
+	if strcmpi(getfieldvalue(options,'orientation','vertical'),'horizontal'),
+		th=title(getfieldvalue(options,'title'),'FontSize',fontsize,'Color',fontcolor);
+		set(th,'Position',[ytick(end)+0.075,-0.3]);
+	elseif getfieldvalue(options,'inverttickposition',0)==1,
+		text(1.9,.7,getfieldvalue(options,'ylabel'),'HorizontalAlignment','right','VerticalAlignment','middle','FontSize',fontsize,'Color',fontcolor,'rotation',90);
+	else
+		ylabel(getfieldvalue(options,'ylabel'),'FontSize',fontsize,'Color',fontcolor);
+	end
+end
+	
+%Back to original axes
+h=gca;
+if getfieldvalue(options,'showregion',0)==0,
+	%Do it this way in order to preserve the figure visibility
+	set(gcf,'CurrentAxes',mainaxes);
+end
+
+function delta = dtick(range)
+%Tick intervals
+m = 10^floor(log10(range));
+p = ceil(range/m);
+if p <= 1,     delta = .1*m;
+elseif p == 2, delta = .2*m;
+elseif p <= 5, delta = .5*m;
+else           delta = m;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/northarrow.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/northarrow.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/northarrow.m	(revision 27955)
@@ -0,0 +1,76 @@
+function northarrow(structure)
+%NORTHARROW - overlay an arrow pointing north on the current plot
+%
+%   Usage:
+%      northarrow(structure)
+
+%Go through structure and fill missing arguments
+if length(structure)<3
+	error('plotmodel error message: the position or the length of the North arrow is missing');
+elseif length(structure)==3
+	structure(4)=0.5; %default ratio headarrow/length
+	structure(5)=structure(3)/10; %default width =length/10
+elseif length(structure)==4
+	structure(5)=structure(3)/10; %default width =length/10
+elseif length(structure)==5
+	structure(6)=16; %default fontsize
+elseif length(structure)>6
+	error('plotmodel error message: to many input arguments for northarrow: [x0 y0 length [ratio width fontsize]]');
+end
+
+%retrieve north arrow parameters
+x0=structure(1);
+y0=structure(2);
+lengtharrow=structure(3);
+ratio=structure(4);
+width=structure(5);
+fontsize=structure(6);
+
+%Figure out angle to point towards north
+ang=atan2(y0,x0);
+
+%Build the two points Ap and Bp
+x=zeros(2,1);
+y=zeros(2,1);
+x(1)=x0;
+y(1)=y0;
+
+x(2)=x(1)+lengtharrow*cos(ang);
+y(2)=y(1)+lengtharrow*sin(ang);
+
+Ap=[x(1)
+   y(1)];
+Bp=[x(2)
+   y(2)];
+
+%Build arrowhead first
+ang2=150*2*pi/360;
+rotation=[cos(ang2), sin(ang2); -sin(ang2), cos(ang2)];
+
+E=ratio*rotation*(Bp-Ap)+Bp;
+F=Bp;
+G=ratio*rotation'*(Bp-Ap)+Bp;
+H=Bp/4+E*3/8+G*3/8;
+
+%Build rectangle
+u=Bp-Ap;
+alpha=atan2(u(2),u(1));
+
+A=Ap-[-width/2*sin(alpha)
+   width/2*cos(alpha)];
+ B=H-[-width/2*sin(alpha)
+   width/2*cos(alpha)];
+C=H+[-width/2*sin(alpha)
+   width/2*cos(alpha)];
+D=Ap+[-width/2*sin(alpha)
+   width/2*cos(alpha)];
+
+%Plot arrow
+hold on
+p1=patch([A(1) B(1) C(1) D(1)],[A(2) B(2) C(2) D(2)],'Black');
+p2=patch([E(1) F(1) G(1) H(1)],[E(2) F(2) G(2) H(2)],'Black');
+
+%Text North
+xN=max([A(1) D(1) E(1) F(1) G(1)])+ratio/3*abs(lengtharrow);
+yN=mean([A(2) F(2) H(2)]);
+text(xN,yN,'North','FontSize',fontsize,'FontWeight','b');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_BC.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_BC.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_BC.m	(revision 27955)
@@ -0,0 +1,46 @@
+function plot_BC(md,options,width,i,data)
+
+%plot neuman
+h0 = plot_icefront(md,options,width,i,data);
+
+hold on
+
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+spcvx=processdata(md,md.stressbalance.spcvx,options);
+spcvy=processdata(md,md.stressbalance.spcvy,options);
+spcvz=processdata(md,md.stressbalance.spcvz,options);
+nbv = numel(x);
+
+%plot dirichlets
+dirichleton=getfieldvalue(options,'dirichlet','on');
+if strcmpi(dirichleton,'on'),
+	h1=plot3(...
+		x(find(~isnan(spcvx(1:nbv,1)))),...
+		y(find(~isnan(spcvx(1:nbv,1)))),...
+		z(find(~isnan(spcvx(1:nbv,1)))),...
+		'ro','MarkerSize',14,'MarkerFaceColor','r');
+	h2=plot3(...
+		x(find(~isnan(spcvy(1:nbv,1)))),...
+		y(find(~isnan(spcvy(1:nbv,1)))),...
+		z(find(~isnan(spcvy(1:nbv,1)))),...
+		'bo','MarkerSize',10,'MarkerFaceColor','b');
+	h3=plot3(...
+		x(find(~isnan(spcvz(1:nbv,1)))),...
+		y(find(~isnan(spcvz(1:nbv,1)))),...
+		z(find(~isnan(spcvz(1:nbv,1)))),...
+		'yo','MarkerSize',6 ,'MarkerFaceColor','y');
+end
+
+strings = {'Neumann'};
+if ~isempty(h1), strings{end+1} = 'vx Dirichlet'; end
+if ~isempty(h2), strings{end+1} = 'vy Dirichlet'; end
+if ~isempty(h3), strings{end+1} = 'vz Dirichlet'; end
+
+legend([h0,h1,h2,h3],strings,'location','NorthEast');
+
+hold off
+
+%apply options
+options=addfielddefault(options,'title','Boundary conditions');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_BC.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_BC.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_BC.py	(revision 27955)
@@ -0,0 +1,76 @@
+import numpy as np
+from processmesh import processmesh
+from applyoptions import applyoptions
+from plot_icefront import plot_icefront
+from hydrologydc import hydrologydc
+from hydrologyglads import hydrologyglads
+from mpl_toolkits.mplot3d import Axes3D
+from mpl_toolkits.axes_grid1.inset_locator import inset_axes
+
+
+def plot_BC(md, options, fig, axgrid, gridindex):
+    '''
+    PLOT_BC - plot model boundary conditions
+
+        Usage:
+            plot_BC(md, options, fig, axes)
+
+        See also: PLOTMODEL
+    '''
+    x, y, z, elements, is2d, isplanet = processmesh(md, [], options)
+
+    ax = axgrid[gridindex]
+    fig.delaxes(axgrid.cbar_axes[gridindex])
+
+    if not is2d:
+        ax = inset_axes(axgrid[gridindex], width='100%', height='100%', loc=3, borderpad=0, axes_class=Axes3D)
+
+    #plot neuman
+    plot_icefront(md, options, fig, ax)
+
+    XLims = [np.min(x), np.max(x)]
+    YLims = [np.min(y), np.max(y)]
+    #plot dirichlets
+    dirichleton = options.getfieldvalue('dirichlet', 'on')
+
+    if dirichleton == 'on':
+        #define what to plot with plot style
+        spc_dict = {'spcvx': ['stressbalance', 'o', 'r', 240, 'vx Dirichlet'],
+                    'spcvy': ['stressbalance', 'o', 'b', 160, 'vy Dirichlet'],
+                    'spcthickness': ['masstransport', 'o', 'k', 40, 'Thickness']}
+        if not is2d:
+            spc_dict['spcvz'] = ['stressbalance', 'o', 'y', 80, 'vy Dirichlet']
+
+        if isinstance(md.hydrology, hydrologydc):
+            spc_dict['spcepl_head'] = ['hydrology', 'v', 'r', 240, 'EPL Head']
+            if md.hydrology.isefficientlayer:
+                spc_dict['spcsediment_head'] = ['hydrology', '^', 'b', 240, 'IDS Head']
+
+        if isinstance(md.hydrology, hydrologyglads):
+            spc_dict['spcphi'] = ['hydrology', 'v', 'r', 240, 'phi']
+
+        for key in spc_dict:
+            mark = spc_dict[str(key)][1]
+            color = spc_dict[str(key)][2]
+            size = spc_dict[str(key)][3]
+            name = spc_dict[str(key)][4]
+            #first reduce vectors if layer is used
+            if options.getfieldvalue('layer', 0) >= 1:
+                plotlayer = options.getfieldvalue('layer', 0)
+                slicesize = len(x)
+                fulldata = md.__dict__[str(spc_dict[str(key)][0])].__dict__[str(key)]
+                data = fulldata[(plotlayer - 1) * slicesize:plotlayer * slicesize]
+            else:
+                data = md.__dict__[str(spc_dict[str(key)][0])].__dict__[str(key)]
+            ax.scatter(x[np.where(~np.isnan(data))],
+                       y[np.where(~np.isnan(data))],
+                       marker=mark, c=color, s=size, label=name, linewidth=0)
+
+    ax.set_xlim(XLims)
+    ax.set_ylim(YLims)
+    ax.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3,
+              ncol=3, mode="expand", borderaxespad=0.)
+    #apply options
+    options.addfielddefault('title', 'Boundary conditions')
+    options.addfielddefault('colorbar', 'off')
+    applyoptions(md, [], options, fig, axgrid, gridindex)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_basaldrag.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_basaldrag.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_basaldrag.m	(revision 27955)
@@ -0,0 +1,59 @@
+function plot_basaldrag(md,options,width,i,type)
+
+%PLOT_BASALDRAG - plot basal drag
+%
+%   Usage:
+%      plot_basaldrag(md,options,width,i,type);
+%
+%   See also: PLOTMODEL
+
+%check layer
+if dimension(md.mesh)==3,
+	if getfieldvalue(options,'layer',1)~=1;
+		disp('plot_basaldrag warning: basal drag is displayed in the lower layer')
+		changefieldvalue(options,'layer',1);
+	end
+end
+
+tau_b    = basalstress(md);
+drag_mag = tau_b/1000;
+ub_mag   = sqrt(md.initialization.vx.^2+md.initialization.vy.^2)/md.constants.yts;
+sig=1;
+
+%compute horizontal velocity 
+if strcmpi(type,'basal_drag')
+	ub = ub_mag;
+	title_str='Basal drag [kPa]';
+elseif strcmpi(type,'basal_dragx')
+	ub=md.initialization.vx/md.constants.yts;
+	sig=-1;
+	title_str='Basal drag - x direction [kPa]';
+elseif strcmpi(type,'basal_dragy')
+	ub=md.initialization.vy/md.constants.yts;
+	sig=-1;
+	title_str='Basal drag - y direction [kPa]';
+end
+
+%compute basal drag
+drag=sig*drag_mag.*ub./ub_mag;
+
+%Figure out if this is a Section plot
+if exist(options,'sectionvalue')
+	plot_section(md,drag,options,width,i);
+	return;
+else
+
+	%process data and model
+	[x y z elements is2d isplanet]=processmesh(md,[],options);
+	[basal_drag datatype]=processdata(md,drag,options);
+
+	%plot basaldrag
+	subplot(width,width,i); 
+	plot_unit(x,y,z,elements,basal_drag,is2d,isplanet,datatype,options);
+
+	%apply options
+	options=addfielddefault(options,'title',title_str);	
+	options=addfielddefault(options,'view',2);
+	applyoptions(md,basal_drag,options);
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_boundaries.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_boundaries.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_boundaries.m	(revision 27955)
@@ -0,0 +1,39 @@
+function plot_boundaries(md,options,width,i)
+%PLOT_BOUNDARIES - plot mesh boundaries
+%
+%   Usage:
+%      plot_boundaries(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+subplot(width,width,i); 
+
+%process data and model
+if getfieldvalue(options,'layer',0)
+	options=removefield(options,'layer',1);
+end
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+for i=1:size(md.mesh.segments,1),
+	plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'k.-');hold on;
+end
+
+%plot rifts if present: 
+if isstruct(md.rifts.riftstruct),
+	for i=1:size(md.rifts.riftstruct,1),
+		segments=md.rifts.riftstruct(i).segments;
+		for j=1:size(segments,1),
+			plot(x(segments(j,1:2)),y(segments(j,1:2)),'r.-');
+		end
+		text(x(segments(floor(size(segments,1)/4),1)),y(segments(floor(size(segments,1)/4),1)),['Rift #' num2str(i)]);
+		%point out the tips
+		plot(x(md.rifts.riftstruct(i).tips(1)),y(md.rifts.riftstruct(i).tips(1)),'b*');
+		plot(x(md.rifts.riftstruct(i).tips(2)),y(md.rifts.riftstruct(i).tips(2)),'b*');
+	end
+end
+
+%apply options
+options=addfielddefault(options,'title','Mesh boundaries');
+options=addfielddefault(options,'colorbar',0);
+options=addfielddefault(options,'view',2);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_coastlines.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_coastlines.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_coastlines.m	(revision 27955)
@@ -0,0 +1,9916 @@
+function plot_coastlines(mesh,varargin);
+
+%define coastline: {{{
+coast=[-90 -180; ...
+-83.83 -180 ;...
+-84.33 -178 ;...
+-84.5 -174 ;...
+-84.67 -170 ;...
+-84.92 -166 ;...
+-85.42 -163 ;...
+-85.42 -158 ;...
+-85.58 -152 ;...
+-85.33 -146 ;...
+-84.83 -147 ;...
+-84.5 -151 ;...
+-84 -153.5 ;...
+-83.5 -153 ;...
+-83 -154 ;...
+-82.5 -154 ;...
+-82 -154 ;...
+-81.5 -154.5 ;...
+-81.17 -153 ;...
+-81 -150 ;...
+-80.92 -146.5 ;...
+-80.67 -145.5 ;...
+-80.33 -148 ;...
+-80 -150 ;...
+-79.67 -152.5 ;...
+-79.25 -155 ;...
+-78.83 -157 ;...
+-78.7478 -157.255 ;...
+-78.6654 -157.507 ;...
+-78.5828 -157.755 ;...
+-78.5 -158 ;...
+-78.4806 -157.666 ;...
+-78.4608 -157.333 ;...
+-78.4406 -157.001 ;...
+-78.42 -156.67 ;...
+-78.5 -154.5 ;...
+-78.17 -154.5 ;...
+-78.17 -154.5 ;...
+-78.08 -156.67 ;...
+-77.83 -158 ;...
+-77.5 -158.33 ;...
+-77.17 -158.67 ;...
+-77 -157 ;...
+-77.17 -154 ;...
+-77.58 -153 ;...
+-77.83 -150.5 ;...
+-77.67 -148 ;...
+-77.25 -146 ;...
+-76.75 -146 ;...
+-76.33 -146.33 ;...
+-75.92 -146.67 ;...
+-75.83 -144 ;...
+-75.58 -142 ;...
+-75.75 -140.67 ;...
+-75.42 -140 ;...
+-75.25 -138.33 ;...
+-75 -136.67 ;...
+-74.75 -135.5 ;...
+-74.75 -133 ;...
+-75 -132 ;...
+-75.42 -130.83 ;...
+-75.75 -129.67 ;...
+-76 -128 ;...
+-76 -127 ;...
+-75.67 -126.83 ;...
+-75.17 -126.33 ;...
+-74.67 -125.5 ;...
+-74.33 -124.5 ;...
+-74.33 -124.5 ;...
+-73.83 -123.33 ;...
+-73.25 -123.67 ;...
+-73.25 -122.33 ;...
+-73.75 -121.33 ;...
+-74 -120 ;...
+-73.58 -120 ;...
+-73.6037 -119.584 ;...
+-73.6266 -119.167 ;...
+-73.6487 -118.749 ;...
+-73.67 -118.33 ;...
+-73.6712 -117.915 ;...
+-73.6716 -117.5 ;...
+-73.6712 -117.085 ;...
+-73.67 -116.67 ;...
+-73.7101 -116.586 ;...
+-73.7501 -116.501 ;...
+-73.7901 -116.416 ;...
+-73.83 -116.33 ;...
+-73.9158 -116.66 ;...
+-74.001 -116.993 ;...
+-74.0858 -117.33 ;...
+-74.17 -117.67 ;...
+-74.295 -117.67 ;...
+-74.42 -117.67 ;...
+-74.545 -117.67 ;...
+-74.67 -117.67 ;...
+-74.7957 -117.343 ;...
+-74.921 -117.011 ;...
+-75.0457 -116.673 ;...
+-75.17 -116.33 ;...
+-75.1929 -115.668 ;...
+-75.2138 -115.004 ;...
+-75.2329 -114.338 ;...
+-75.25 -113.67 ;...
+-75 -112.33 ;...
+-74.5 -112.5 ;...
+-74.375 -112.543 ;...
+-74.25 -112.586 ;...
+-74.125 -112.628 ;...
+-74 -112.67 ;...
+-73.9177 -112.5 ;...
+-73.8353 -112.332 ;...
+-73.7527 -112.165 ;...
+-73.67 -112 ;...
+-74 -111.5 ;...
+-74.5 -111 ;...
+-75 -110.33 ;...
+-75.17 -108.67 ;...
+-74.67 -108.5 ;...
+-74.5 -109.5 ;...
+-74 -109.5 ;...
+-74 -108.33 ;...
+-74.33 -108 ;...
+-74.67 -108.5 ;...
+-75.08 -107.5 ;...
+-75.08 -106 ;...
+-74.92 -104.5 ;...
+-74.92 -104.5 ;...
+-74.58 -104.5 ;...
+-74.58 -102.67 ;...
+-74.75 -101.33 ;...
+-75 -100 ;...
+-74.75 -99.5 ;...
+-74.33 -101.33 ;...
+-74 -100.67 ;...
+-73.75 -101.5 ;...
+-73.5 -101.5 ;...
+-73.58 -100 ;...
+-73.42 -99 ;...
+-73.08 -100 ;...
+-73.25 -101.33 ;...
+-72.75 -102.5 ;...
+-72.67 -101.33 ;...
+-73 -101.5 ;...
+-72.92 -99.67 ;...
+-73.33 -98.5 ;...
+-73.08 -98 ;...
+-73.42 -97.5 ;...
+-73.75 -97.5 ;...
+-73.75 -96.33 ;...
+-73.42 -96 ;...
+-73.08 -96 ;...
+-72.92 -97.5 ;...
+-72.5 -98.5 ;...
+-72.17 -99.67 ;...
+-72.1084 -100.006 ;...
+-72.0461 -100.339 ;...
+-71.9833 -100.671 ;...
+-71.92 -101 ;...
+-71.8782 -100.706 ;...
+-71.8359 -100.412 ;...
+-71.7932 -100.121 ;...
+-71.75 -99.83 ;...
+-72 -98.33 ;...
+-72 -98.33 ;...
+-71.83 -97 ;...
+-72.08 -95.67 ;...
+-72.42 -95.67 ;...
+-72.58 -94 ;...
+-72.75 -92.25 ;...
+-72.92 -90.5 ;...
+-72.92 -88.75 ;...
+-72.92 -87 ;...
+-73.08 -85.5 ;...
+-72.92 -84.33 ;...
+-72.83 -83 ;...
+-72.92 -81.25 ;...
+-73 -79.5 ;...
+-73.25 -78.5 ;...
+-72.83 -78.67 ;...
+-72.42 -78 ;...
+-72.58 -76.5 ;...
+-72.83 -75 ;...
+-73 -74 ;...
+-73.5 -74.5 ;...
+-73.42 -73 ;...
+-73.33 -71.5 ;...
+-73.17 -70 ;...
+-73.08 -68.5 ;...
+-72.83 -67.5 ;...
+-72.33 -67 ;...
+-71.83 -67 ;...
+-71.5 -67.5 ;...
+-70.92 -67.5 ;...
+-70.42 -68 ;...
+-70.42 -68 ;...
+-70 -68.5 ;...
+-69.42 -68.5 ;...
+-69.42 -67.33 ;...
+-69.08 -66.67 ;...
+-68.83 -67.33 ;...
+-68.5 -66.83 ;...
+-68.08 -66.83 ;...
+-67.75 -67.5 ;...
+-67.42 -67.5 ;...
+-67.75 -68.5 ;...
+-67.75 -69.25 ;...
+-67.33 -69.33 ;...
+-66.92 -68.67 ;...
+-66.67 -67.83 ;...
+-67.08 -67.67 ;...
+-67 -67 ;...
+-67.33 -66.33 ;...
+-66.83 -66.33 ;...
+-66.58 -65.5 ;...
+-66.25 -65.83 ;...
+-65.92 -65 ;...
+-65.5 -64 ;...
+-65.08 -64 ;...
+-65.17 -63 ;...
+-64.75 -62.67 ;...
+-64.67 -61.67 ;...
+-64.25 -61.5 ;...
+-64 -61 ;...
+-63.83 -59.67 ;...
+-63.58 -58.83 ;...
+-63.58 -58.83 ;...
+-63.33 -58 ;...
+-63.25 -57.17 ;...
+-63.58 -56.67 ;...
+-63.58 -57.33 ;...
+-63.643 -57.5386 ;...
+-63.7056 -57.7481 ;...
+-63.768 -57.9586 ;...
+-63.83 -58.17 ;...
+-63.8305 -57.94 ;...
+-63.8307 -57.71 ;...
+-63.8305 -57.48 ;...
+-63.83 -57.25 ;...
+-64.42 -57.33 ;...
+-64.33 -58.17 ;...
+-64 -58.67 ;...
+-64.5 -59 ;...
+-64.33 -59.67 ;...
+-64.67 -60.5 ;...
+-65 -61.33 ;...
+-65.42 -62 ;...
+-65.75 -62.17 ;...
+-66.08 -62.33 ;...
+-66.5 -62.67 ;...
+-66.25 -63.5 ;...
+-66.5 -64 ;...
+-66.92 -63.67 ;...
+-66.92 -64.67 ;...
+-67.33 -65.33 ;...
+-67.83 -65.5 ;...
+-67.8928 -65.3339 ;...
+-67.9553 -65.1668 ;...
+-68.0178 -64.9989 ;...
+-68.08 -64.83 ;...
+-68.1426 -64.954 ;...
+-68.2052 -65.0786 ;...
+-68.2676 -65.204 ;...
+-68.33 -65.33 ;...
+-68.4351 -65.2067 ;...
+-68.5402 -65.0823 ;...
+-68.6451 -64.9568 ;...
+-68.75 -64.83 ;...
+-68.75 -63.67 ;...
+-69.08 -62.67 ;...
+-69.67 -62.33 ;...
+-70.17 -62 ;...
+-70.17 -62 ;...
+-70.58 -61.5 ;...
+-70.92 -61.67 ;...
+-71.17 -61 ;...
+-71.58 -60.83 ;...
+-72 -61.67 ;...
+-72.33 -60.83 ;...
+-72.67 -61 ;...
+-72.7531 -60.7116 ;...
+-72.8358 -60.4205 ;...
+-72.9181 -60.1266 ;...
+-73 -59.83 ;...
+-73.0826 -59.9138 ;...
+-73.1651 -59.9984 ;...
+-73.2476 -60.0838 ;...
+-73.33 -60.17 ;...
+-73.42 -61.5 ;...
+-73.75 -61 ;...
+-74.33 -60.67 ;...
+-74.67 -61.67 ;...
+-75.08 -61.67 ;...
+-75.17 -63 ;...
+-75.67 -63 ;...
+-76.08 -63.67 ;...
+-76.5 -65.5 ;...
+-77 -67.33 ;...
+-77.17 -65 ;...
+-77.08 -62.5 ;...
+-77.08 -60 ;...
+-77.25 -57.67 ;...
+-77.58 -56 ;...
+-77.92 -53.67 ;...
+-78.25 -51.67 ;...
+-78.5 -49.33 ;...
+-78.75 -47.67 ;...
+-78.83 -44 ;...
+-78.83 -41 ;...
+-78.83 -41 ;...
+-78.75 -38.5 ;...
+-78.33 -36.33 ;...
+-77.83 -35 ;...
+-77.5 -33.33 ;...
+-77.17 -31.67 ;...
+-76.83 -30 ;...
+-76.5 -28.33 ;...
+-76.08 -27 ;...
+-75.67 -26 ;...
+-75.33 -24 ;...
+-74.75 -23.67 ;...
+-74.42 -22.33 ;...
+-74.08 -20.67 ;...
+-73.75 -19.33 ;...
+-73.42 -17.67 ;...
+-73.08 -16.33 ;...
+-72.92 -14.67 ;...
+-72.83 -13.5 ;...
+-72.58 -12.33 ;...
+-72.25 -11.33 ;...
+-71.92 -11.17 ;...
+-71.67 -12 ;...
+-71.33 -12.17 ;...
+-71.25 -11.5 ;...
+-71.58 -11 ;...
+-71.25 -10.5 ;...
+-71 -9.75 ;...
+-71.17 -9 ;...
+-71.42 -8.67 ;...
+-71.83 -8.5 ;...
+-71.83 -8.5 ;...
+-71.7907 -8.20564 ;...
+-71.7509 -7.91252 ;...
+-71.7107 -7.62064 ;...
+-71.67 -7.33 ;...
+-71.6076 -7.41584 ;...
+-71.5451 -7.50111 ;...
+-71.4826 -7.58583 ;...
+-71.42 -7.67 ;...
+-71.3351 -7.58388 ;...
+-71.2501 -7.49851 ;...
+-71.1651 -7.41389 ;...
+-71.08 -7.33 ;...
+-71.0176 -7.41581 ;...
+-70.9551 -7.50107 ;...
+-70.8926 -7.5858 ;...
+-70.83 -7.67 ;...
+-70.8104 -7.45937 ;...
+-70.7905 -7.24916 ;...
+-70.7704 -7.03937 ;...
+-70.75 -6.83 ;...
+-70.75 -5.83 ;...
+-71 -5.83 ;...
+-71.33 -6 ;...
+-71.33 -4.5 ;...
+-71.25 -3 ;...
+-70.67 -3 ;...
+-70.42 -3.33 ;...
+-70.25 -2.5 ;...
+-70.42 -1.67 ;...
+-70.67 -1 ;...
+-71 -1.5 ;...
+-71.25 -0.67 ;...
+-71.5 0 ;...
+-71.25 1.33 ;...
+-70.92 2.67 ;...
+-70.58 3.5 ;...
+-70.33 4.67 ;...
+-70.33 6.33 ;...
+-70.08 7.33 ;...
+-70.08 8.67 ;...
+-70.17 10 ;...
+-70.08 11.33 ;...
+-70.08 12.67 ;...
+-70.17 14.33 ;...
+-70.17 15.67 ;...
+-70.17 15.67 ;...
+-70.17 17 ;...
+-70.17 18.33 ;...
+-70.33 20 ;...
+-70.42 21.5 ;...
+-70.58 23 ;...
+-70.42 24.67 ;...
+-70.17 25.33 ;...
+-70.17 27 ;...
+-69.92 28.33 ;...
+-69.83 30 ;...
+-69.58 31.33 ;...
+-69.5 32 ;...
+-69.5 33.5 ;...
+-69 33.33 ;...
+-68.67 33.5 ;...
+-68.58 34.33 ;...
+-68.92 35 ;...
+-69.33 36 ;...
+-69.5 37 ;...
+-69.58 38.33 ;...
+-70.08 38.67 ;...
+-69.67 39.33 ;...
+-69.5 39.83 ;...
+-69.17 39.83 ;...
+-68.83 40 ;...
+-68.5 41.33 ;...
+-68.17 42 ;...
+-67.83 43.33 ;...
+-67.75 44.5 ;...
+-67.75 46 ;...
+-67.75 46 ;...
+-67.58 47 ;...
+-67.67 48.17 ;...
+-67.42 48.5 ;...
+-67.42 49.33 ;...
+-67.83 49.83 ;...
+-67.58 50.5 ;...
+-67 50.17 ;...
+-66.5 50.5 ;...
+-66.25 51.5 ;...
+-65.92 52.17 ;...
+-65.83 53.67 ;...
+-65.92 55.17 ;...
+-66.25 56 ;...
+-66.42 57.17 ;...
+-66.67 57.17 ;...
+-66.75 56.33 ;...
+-66.92 57 ;...
+-67 58 ;...
+-67.17 59 ;...
+-67.5 59.33 ;...
+-67.33 60.67 ;...
+-67.58 61.67 ;...
+-67.67 62.67 ;...
+-67.5 63.67 ;...
+-67.58 65 ;...
+-67.75 66.33 ;...
+-67.83 67.67 ;...
+-67.83 68.67 ;...
+-67.67 69.5 ;...
+-68.17 69.5 ;...
+-68.17 69.5 ;...
+-68.58 70 ;...
+-69 70.5 ;...
+-69.17 69.5 ;...
+-69.58 69.83 ;...
+-70.08 69.83 ;...
+-70.5 70.67 ;...
+-70.42 71.67 ;...
+-70.08 71 ;...
+-69.75 72.33 ;...
+-69.58 73.5 ;...
+-69.67 74.5 ;...
+-69.83 75.5 ;...
+-69.5 76.17 ;...
+-69.17 77.17 ;...
+-69.08 78 ;...
+-68.5 78.33 ;...
+-68.25 79 ;...
+-68 80.5 ;...
+-67.83 81.67 ;...
+-67.33 82.5 ;...
+-67.17 83.67 ;...
+-67 85 ;...
+-66.83 86.33 ;...
+-66.67 87.67 ;...
+-66.75 88.5 ;...
+-66.75 89.67 ;...
+-66.67 91 ;...
+-66.5 92 ;...
+-66.58 93 ;...
+-66.58 94 ;...
+-66.58 94 ;...
+-66.5 95 ;...
+-66.67 96 ;...
+-66.5 97 ;...
+-66.67 97.67 ;...
+-66.5 98.5 ;...
+-66.58 99.33 ;...
+-66.42 100 ;...
+-66.42 100.67 ;...
+-66.08 101.5 ;...
+-65.83 102.67 ;...
+-65.92 104 ;...
+-66.08 105 ;...
+-66.25 106 ;...
+-66.5 107 ;...
+-66.58 108 ;...
+-66.83 109 ;...
+-66.58 109.5 ;...
+-66.67 110.33 ;...
+-66.42 110.67 ;...
+-66.08 110.67 ;...
+-65.92 111.67 ;...
+-65.83 112.67 ;...
+-65.75 113.67 ;...
+-66 114.5 ;...
+-66.33 115.5 ;...
+-66.5 116.5 ;...
+-66.75 117.67 ;...
+-66.83 119 ;...
+-66.83 120.33 ;...
+-66.67 121.5 ;...
+-66.67 121.5 ;...
+-66.42 122.5 ;...
+-66.75 123.33 ;...
+-66.75 124.33 ;...
+-66.5 124.83 ;...
+-66.58 125.83 ;...
+-66.25 126.5 ;...
+-66.25 127 ;...
+-66.5 127.67 ;...
+-66.92 128.33 ;...
+-67 129 ;...
+-67.17 129.5 ;...
+-66.92 130 ;...
+-66.33 130 ;...
+-66.08 130.83 ;...
+-66.17 132 ;...
+-66.08 133.33 ;...
+-66.17 134.33 ;...
+-66.08 135.33 ;...
+-66.33 136.33 ;...
+-66.33 137.33 ;...
+-66.5 138.33 ;...
+-66.58 139.33 ;...
+-66.67 140.5 ;...
+-66.75 142 ;...
+-67 142.5 ;...
+-66.83 143.33 ;...
+-67 144.33 ;...
+-67.5 144.33 ;...
+-67.58 145 ;...
+-67.5 146 ;...
+-67.5 146 ;...
+-67.83 146.83 ;...
+-68.25 147 ;...
+-68.42 148.33 ;...
+-68.25 149 ;...
+-68.5 150.33 ;...
+-68.33 151 ;...
+-68.67 151.5 ;...
+-68.58 152.67 ;...
+-68.58 154.33 ;...
+-69.08 155 ;...
+-69.33 156 ;...
+-69 156.5 ;...
+-69.08 157.5 ;...
+-69.25 158.67 ;...
+-69.5 160 ;...
+-69.67 161 ;...
+-70.08 161 ;...
+-70.5 161.17 ;...
+-70.83 161.67 ;...
+-70.58 162.17 ;...
+-70.17 162.33 ;...
+-70.08 163.33 ;...
+-70.58 163.17 ;...
+-70.58 164.67 ;...
+-70.5 166 ;...
+-70.83 167.33 ;...
+-71.17 168.67 ;...
+-71.5 170 ;...
+-71.17 170.17 ;...
+-71.75 171 ;...
+-71.75 171 ;...
+-72 170.17 ;...
+-72.5 170.5 ;...
+-72.83 169.67 ;...
+-73.17 168.5 ;...
+-73.25 167 ;...
+-73.67 167 ;...
+-74.08 166.67 ;...
+-74.17 165.33 ;...
+-74.5 165.33 ;...
+-74.83 164.33 ;...
+-75.17 163 ;...
+-75.67 162.67 ;...
+-76.08 162.67 ;...
+-76.5 163 ;...
+-76.92 163.33 ;...
+-77.33 163.67 ;...
+-77.75 163.67 ;...
+-78 164.67 ;...
+-78.1056 164.994 ;...
+-78.2108 165.323 ;...
+-78.3156 165.659 ;...
+-78.42 166 ;...
+-78.4413 165.503 ;...
+-78.4617 165.003 ;...
+-78.4813 164.503 ;...
+-78.5 164 ;...
+-78.75 161.5 ;...
+-79.17 160 ;...
+-79.67 160 ;...
+-80 160 ;...
+-80.5 160.33 ;...
+-81 160.33 ;...
+-81.5 161 ;...
+-81.92 162.33 ;...
+-82.42 164 ;...
+-82.83 166 ;...
+-82.83 166 ;...
+-83.25 168.5 ;...
+-83.5 171.5 ;...
+-83.5 176 ;...
+-83.83 180 ;...
+-85 180 ;...
+-87 180 ;...
+-90 180 ;...
+NaN NaN ;...
+-77.58 166.33 ;...
+-77.08 166.67 ;...
+-77.33 168.17 ;...
+-77.42 169.67 ;...
+-77.67 168.17 ;...
+-77.58 166.33 ;...
+NaN NaN ;...
+-78.75 -164 ;...
+-78.75 -161.67 ;...
+-79.08 -160.67 ;...
+-79.5 -160 ;...
+-79.92 -160 ;...
+-80.25 -161.67 ;...
+-79.83 -163.67 ;...
+-79.33 -163.67 ;...
+-79.08 -163 ;...
+-78.75 -164 ;...
+NaN NaN ;...
+-76.58 -150.17 ;...
+-76.17 -148.17 ;...
+-76.2329 -147.923 ;...
+-76.2955 -147.674 ;...
+-76.3579 -147.423 ;...
+-76.42 -147.17 ;...
+-76.5031 -147.497 ;...
+-76.5859 -147.827 ;...
+-76.6682 -148.161 ;...
+-76.75 -148.5 ;...
+-76.58 -150.17 ;...
+NaN NaN ;...
+-71.08 -76.17 ;...
+-71.08 -74.67 ;...
+-71 -73 ;...
+-70.92 -71.83 ;...
+-70.83 -71 ;...
+-70.58 -70.67 ;...
+-70.08 -71 ;...
+-69.58 -71.5 ;...
+-69.08 -71.67 ;...
+-68.92 -71.17 ;...
+-68.83 -70.33 ;...
+-69.42 -69.67 ;...
+-70 -69.33 ;...
+-70.5 -68.83 ;...
+-71 -68.5 ;...
+-71.5 -68.33 ;...
+-71.92 -68.5 ;...
+-72.33 -68.83 ;...
+-72.58 -70 ;...
+-72.67 -71.5 ;...
+-72.58 -73 ;...
+-72.25 -73.33 ;...
+-72.17 -74.33 ;...
+-71.83 -75 ;...
+-71.67 -76 ;...
+-71.33 -76.5 ;...
+-71.08 -76.17 ;...
+NaN NaN ;...
+-70.58 -76.17 ;...
+-70.25 -75.67 ;...
+-70 -75.75 ;...
+-69.75 -74.5 ;...
+-69.92 -73.67 ;...
+-70.25 -73.75 ;...
+-70.5 -74 ;...
+-70.58 -75 ;...
+-70.58 -76.17 ;...
+NaN NaN ;...
+-64.799 -63.6633 ;...
+-64.7634 -64.0273 ;...
+-64.6919 -64.1488 ;...
+-64.5633 -64.0044 ;...
+-64.4418 -63.6482 ;...
+-64.3347 -63.2838 ;...
+-64.5629 -63.0404 ;...
+-64.756 -63.4542 ;...
+-64.799 -63.6633 ;...
+NaN NaN ;...
+-64.5414 -62.5914 ;...
+-64.256 -62.4589 ;...
+-64.0994 -62.4781 ;...
+-64.0851 -62.2525 ;...
+-64.2488 -62.1151 ;...
+-64.5414 -62.5914 ;...
+NaN NaN ;...
+-63.25 -56.5 ;...
+-63 -55.83 ;...
+-63.1055 -55.6248 ;...
+-63.2106 -55.418 ;...
+-63.3155 -55.2098 ;...
+-63.42 -55 ;...
+-63.4407 -55.2495 ;...
+-63.4609 -55.4993 ;...
+-63.4807 -55.7495 ;...
+-63.5 -56 ;...
+-63.25 -56.5 ;...
+NaN NaN ;...
+-62.232 -58.7408 ;...
+-62.1268 -58.7522 ;...
+-62.0075 -58.5804 ;...
+-61.958 -57.9445 ;...
+-61.9859 -57.8248 ;...
+-62.0771 -57.8208 ;...
+-62.1615 -58.0476 ;...
+-62.232 -58.7408 ;...
+NaN NaN ;...
+-62.7883 -60.2334 ;...
+-62.6897 -60.3025 ;...
+-62.6688 -60.7807 ;...
+-62.5069 -60.7731 ;...
+-62.4575 -60.3266 ;...
+-62.4785 -60.0343 ;...
+-62.5699 -59.9605 ;...
+-62.6755 -59.9509 ;...
+-62.7883 -60.2334 ;...
+NaN NaN ;...
+-60.63 -46.33 ;...
+-60.33 -46 ;...
+-60.4232 -45.7521 ;...
+-60.5159 -45.5029 ;...
+-60.6082 -45.2521 ;...
+-60.7 -45 ;...
+-60.6837 -45.333 ;...
+-60.6666 -45.6657 ;...
+-60.6487 -45.9981 ;...
+-60.63 -46.33 ;...
+NaN NaN ;...
+0 -80.08 ;...
+0.67 -80 ;...
+1 -79.33 ;...
+1.25 -78.83 ;...
+1.67 -79 ;...
+1.75 -78.58 ;...
+2.17 -78.67 ;...
+2.67 -78.33 ;...
+2.67 -77.75 ;...
+3.25 -77.5 ;...
+3.67 -77.17 ;...
+4 -77.5 ;...
+4.5 -77.33 ;...
+5 -77.42 ;...
+5.5 -77.42 ;...
+6.17 -77.5 ;...
+6.58 -77.42 ;...
+7 -77.75 ;...
+7.42 -78.17 ;...
+8 -78.42 ;...
+8.33 -78.17 ;...
+8.33 -78.5 ;...
+8.75 -78.75 ;...
+9 -79.17 ;...
+9 -79.5 ;...
+8.58 -79.75 ;...
+8.33 -80.08 ;...
+8.33 -80.08 ;...
+8.17 -80.5 ;...
+7.83 -80.42 ;...
+7.74754 -80.3149 ;...
+7.66505 -80.2099 ;...
+7.58254 -80.1049 ;...
+7.5 -80 ;...
+7.43755 -80.1251 ;...
+7.37507 -80.2501 ;...
+7.31255 -80.3751 ;...
+7.25 -80.5 ;...
+7.17 -80.92 ;...
+7.75 -81 ;...
+7.75 -81.5 ;...
+8.08 -81.75 ;...
+8.25 -82.25 ;...
+8.33 -82.75 ;...
+8.17 -83 ;...
+8.42 -83.25 ;...
+8.5 -83.75 ;...
+9 -83.67 ;...
+9.33 -84 ;...
+9.67 -84.58 ;...
+10 -84.83 ;...
+9.67 -85.17 ;...
+9.83 -85.33 ;...
+9.92 -85.67 ;...
+10.33 -85.83 ;...
+10.75 -85.75 ;...
+11.17 -85.75 ;...
+11.5 -86.17 ;...
+11.83 -86.58 ;...
+12.25 -87 ;...
+12.58 -87.33 ;...
+12.685 -87.4149 ;...
+12.7901 -87.4999 ;...
+12.895 -87.5849 ;...
+13 -87.67 ;...
+13 -87.585 ;...
+13.0001 -87.5 ;...
+13 -87.415 ;...
+13 -87.33 ;...
+13.105 -87.4149 ;...
+13.2101 -87.4999 ;...
+13.315 -87.5849 ;...
+13.42 -87.67 ;...
+13.42 -87.67 ;...
+13.17 -87.83 ;...
+13.17 -88.42 ;...
+13.17 -88.83 ;...
+13.42 -89.33 ;...
+13.42 -89.75 ;...
+13.67 -90 ;...
+13.92 -90.5 ;...
+13.92 -91 ;...
+14.08 -91.5 ;...
+14.33 -92 ;...
+14.67 -92.33 ;...
+15 -92.75 ;...
+15.42 -93.17 ;...
+15.67 -93.42 ;...
+15.92 -93.83 ;...
+16.08 -94.25 ;...
+16.17 -94.67 ;...
+16.17 -95.17 ;...
+15.92 -95.67 ;...
+15.67 -96.25 ;...
+15.83 -96.83 ;...
+16 -97.42 ;...
+16.08 -98 ;...
+16.33 -98.5 ;...
+16.58 -99 ;...
+16.67 -99.5 ;...
+16.92 -100 ;...
+17.08 -100.5 ;...
+17.25 -101 ;...
+17.67 -101.58 ;...
+17.67 -101.58 ;...
+18 -102 ;...
+18 -102.25 ;...
+18.08 -102.83 ;...
+18.33 -103.5 ;...
+18.75 -103.83 ;...
+19.08 -104.33 ;...
+19.33 -104.92 ;...
+19.83 -105.33 ;...
+20.33 -105.67 ;...
+20.58 -105.33 ;...
+20.83 -105.5 ;...
+21.17 -105.17 ;...
+21.5 -105.17 ;...
+21.75 -105.5 ;...
+22.42 -105.67 ;...
+22.75 -106 ;...
+23.17 -106.42 ;...
+23.5 -106.75 ;...
+24 -107.17 ;...
+24.33 -107.58 ;...
+24.67 -108 ;...
+25.25 -108.33 ;...
+25.5 -109 ;...
+25.75 -109.42 ;...
+26 -109.42 ;...
+26.33 -109.25 ;...
+26.67 -109.5 ;...
+26.67 -109.75 ;...
+27 -110 ;...
+27.42 -110.58 ;...
+27.42 -110.58 ;...
+27.92 -110.58 ;...
+28 -111.17 ;...
+28.5 -111.67 ;...
+29 -112.17 ;...
+29.5 -112.42 ;...
+29.92 -112.75 ;...
+30.25 -112.83 ;...
+30.75 -113.08 ;...
+31.17 -113.08 ;...
+31.33 -113.5 ;...
+31.58 -113.83 ;...
+31.5 -114.17 ;...
+31.75 -114.75 ;...
+31.42 -114.83 ;...
+31 -114.75 ;...
+30.58 -114.58 ;...
+30.17 -114.67 ;...
+29.83 -114.42 ;...
+29.58 -114 ;...
+29.17 -113.67 ;...
+28.75 -113.25 ;...
+28.33 -112.92 ;...
+27.83 -112.75 ;...
+27.5 -112.33 ;...
+27 -112 ;...
+26.5 -111.5 ;...
+26 -111.33 ;...
+25.5 -111 ;...
+25.17 -111 ;...
+24.83 -110.67 ;...
+24.83 -110.67 ;...
+24.67 -110.83 ;...
+24.25 -110.58 ;...
+24.25 -110.17 ;...
+23.75 -109.75 ;...
+23.33 -109.42 ;...
+22.83 -110 ;...
+23.5 -110.33 ;...
+23.83 -110.83 ;...
+24.25 -111.25 ;...
+24.58 -111.67 ;...
+24.83 -112.33 ;...
+25.17 -112.08 ;...
+25.67 -112.08 ;...
+26.17 -112.33 ;...
+26.42 -112.83 ;...
+26.75 -113.17 ;...
+26.75 -113.58 ;...
+27 -114 ;...
+27.17 -114.33 ;...
+27.5 -114.5 ;...
+27.83 -115 ;...
+27.75 -114.42 ;...
+28 -114 ;...
+28.42 -114 ;...
+28.75 -114.33 ;...
+29.08 -114.67 ;...
+29.5 -115.17 ;...
+29.67 -115.67 ;...
+30.25 -115.75 ;...
+30.33 -116 ;...
+30.33 -116 ;...
+30.75 -116 ;...
+31 -116.33 ;...
+31.25 -116.33 ;...
+31.58 -116.58 ;...
+32 -116.75 ;...
+32.5 -117.08 ;...
+33 -117.25 ;...
+33.42 -117.5 ;...
+33.75 -118 ;...
+33.75 -118.33 ;...
+34.08 -118.42 ;...
+34.08 -118.75 ;...
+34.25 -119.25 ;...
+34.42 -119.83 ;...
+34.58 -120.58 ;...
+35.08 -120.58 ;...
+35.58 -121.08 ;...
+36 -121.42 ;...
+36.33 -121.92 ;...
+36.58 -121.83 ;...
+37 -121.83 ;...
+37 -122.17 ;...
+37.33 -122.42 ;...
+37.75 -122.5 ;...
+37.5 -122.08 ;...
+37.92 -122.33 ;...
+38.08 -122.17 ;...
+38.17 -122.5 ;...
+37.92 -122.5 ;...
+38 -123 ;...
+38 -123 ;...
+38.33 -122.92 ;...
+38.58 -123.33 ;...
+38.92 -123.67 ;...
+39.33 -123.75 ;...
+39.67 -123.75 ;...
+40 -124 ;...
+40.25 -124.33 ;...
+40.5 -124.33 ;...
+41 -124.08 ;...
+41.5 -124 ;...
+42 -124.17 ;...
+42.33 -124.42 ;...
+42.83 -124.5 ;...
+43.42 -124.25 ;...
+44 -124.08 ;...
+44.5 -124 ;...
+45 -124 ;...
+45.42 -123.83 ;...
+45.83 -123.92 ;...
+46.17 -123.92 ;...
+46.17 -123.17 ;...
+46.33 -123.92 ;...
+46.67 -124 ;...
+47 -124.08 ;...
+47.5 -124.33 ;...
+47.92 -124.58 ;...
+48.17 -124.75 ;...
+48.42 -124.67 ;...
+48.17 -123.83 ;...
+48.17 -123.17 ;...
+48.17 -123.17 ;...
+47.92 -122.58 ;...
+47.5 -123 ;...
+47.67 -122.58 ;...
+47.5 -122.5 ;...
+48 -122.25 ;...
+48.1051 -122.332 ;...
+48.2101 -122.414 ;...
+48.3151 -122.497 ;...
+48.42 -122.58 ;...
+48.46 -122.54 ;...
+48.5 -122.5 ;...
+48.54 -122.46 ;...
+48.58 -122.42 ;...
+48.6851 -122.502 ;...
+48.7901 -122.584 ;...
+48.8951 -122.667 ;...
+49 -122.75 ;...
+49.25 -123.17 ;...
+49.75 -123.17 ;...
+49.5 -123.75 ;...
+49.75 -124.33 ;...
+50.08 -124.92 ;...
+50.42 -125.5 ;...
+50.67 -126.25 ;...
+50.83 -127 ;...
+51.17 -127.75 ;...
+51.5 -127.75 ;...
+51.83 -128.17 ;...
+52.33 -128.42 ;...
+52.58 -129.17 ;...
+53.17 -129.75 ;...
+53.42 -130.33 ;...
+53.92 -130.75 ;...
+54.17 -130.17 ;...
+54.42 -130.42 ;...
+54.92 -130.08 ;...
+54.75 -130.75 ;...
+55 -131.33 ;...
+55.33 -131.75 ;...
+55.33 -131.75 ;...
+55.75 -132.08 ;...
+56.08 -132 ;...
+56.08 -132.5 ;...
+56.25 -133 ;...
+55.83 -132.58 ;...
+55.25 -132.08 ;...
+54.67 -132.08 ;...
+55.08 -132.5 ;...
+55.33 -133.08 ;...
+55.58 -133.42 ;...
+55.92 -133.67 ;...
+56.33 -133.67 ;...
+56.25 -134.17 ;...
+56.75 -134.33 ;...
+57.08 -133.83 ;...
+56.92 -133 ;...
+57.25 -133.42 ;...
+57.58 -133.75 ;...
+57.25 -134 ;...
+57 -134.5 ;...
+57.42 -134.5 ;...
+57.92 -134.75 ;...
+58.25 -134.67 ;...
+58.67 -135 ;...
+58.25 -135.17 ;...
+58.25 -135.67 ;...
+57.92 -135 ;...
+57.42 -135 ;...
+56.83 -134.75 ;...
+56.17 -134.75 ;...
+56.17 -134.75 ;...
+56.75 -135.17 ;...
+57.25 -135.5 ;...
+57.67 -136.17 ;...
+58.17 -136.5 ;...
+58.42 -137.25 ;...
+58.75 -137.92 ;...
+59.17 -138.67 ;...
+59.42 -139.5 ;...
+59.92 -139.67 ;...
+59.67 -140.25 ;...
+59.75 -141.08 ;...
+60 -142 ;...
+60 -143 ;...
+60 -144 ;...
+60.25 -145 ;...
+60.58 -146 ;...
+60.83 -146.67 ;...
+60.83 -147.5 ;...
+61 -148.33 ;...
+60.42 -148.17 ;...
+59.92 -148.67 ;...
+59.92 -149.5 ;...
+59.58 -150.17 ;...
+59.25 -150.92 ;...
+59.17 -151.92 ;...
+59.5 -151.42 ;...
+59.67 -151.92 ;...
+60.17 -151.42 ;...
+60.75 -151.33 ;...
+60.92 -150.42 ;...
+60.92 -150.42 ;...
+61.0027 -150.296 ;...
+61.0852 -150.171 ;...
+61.1677 -150.046 ;...
+61.25 -149.92 ;...
+61.2504 -150.107 ;...
+61.2505 -150.295 ;...
+61.2504 -150.483 ;...
+61.25 -150.67 ;...
+60.92 -151.67 ;...
+60.58 -152.25 ;...
+60.08 -152.5 ;...
+59.67 -153.08 ;...
+59.42 -153.83 ;...
+59.08 -154.08 ;...
+58.92 -153.33 ;...
+58.5 -153.83 ;...
+58.17 -154.33 ;...
+57.83 -155.25 ;...
+57.42 -156.17 ;...
+57 -156.67 ;...
+56.67 -157.67 ;...
+56.42 -158.42 ;...
+56 -158.75 ;...
+55.83 -159.58 ;...
+55.58 -160.5 ;...
+55.42 -161.42 ;...
+55.17 -162 ;...
+55 -162.83 ;...
+54.67 -163.67 ;...
+54.33 -164.75 ;...
+54.58 -164.92 ;...
+55 -163.92 ;...
+55.25 -162.92 ;...
+55.67 -162.33 ;...
+55.92 -161.42 ;...
+56 -160.5 ;...
+56 -160.5 ;...
+56.5 -159.92 ;...
+56.83 -159 ;...
+57.25 -158.33 ;...
+57.58 -157.67 ;...
+58.17 -157.5 ;...
+58.75 -157.42 ;...
+58.67 -158 ;...
+58.75 -158.67 ;...
+58.42 -158.92 ;...
+58.92 -159.58 ;...
+58.92 -161 ;...
+58.75 -161.58 ;...
+59.17 -161.92 ;...
+59.5 -161.67 ;...
+60.08 -162.17 ;...
+59.67 -163 ;...
+59.67 -163.83 ;...
+60.08 -164.33 ;...
+60.58 -164.92 ;...
+61.08 -165.25 ;...
+61.5 -166 ;...
+62.17 -165.5 ;...
+62.67 -164.83 ;...
+63 -164.67 ;...
+63.25 -163.92 ;...
+63 -163 ;...
+63.42 -162.25 ;...
+63.5 -161 ;...
+64 -160.75 ;...
+64.42 -161.25 ;...
+64.42 -161.25 ;...
+64.83 -161 ;...
+64.67 -161.92 ;...
+64.42 -162.67 ;...
+64.58 -163.67 ;...
+64.5 -164.92 ;...
+64.67 -166.33 ;...
+65 -166.67 ;...
+65.33 -166.33 ;...
+65.42 -167.25 ;...
+65.4602 -167.394 ;...
+65.5003 -167.539 ;...
+65.5402 -167.684 ;...
+65.58 -167.83 ;...
+65.6856 -167.583 ;...
+65.7908 -167.334 ;...
+65.8956 -167.083 ;...
+66 -166.83 ;...
+66.25 -165.75 ;...
+66.5 -164.67 ;...
+66.5 -163.83 ;...
+66.08 -163.75 ;...
+66.08 -162.17 ;...
+66.42 -161.75 ;...
+66.83 -162.5 ;...
+67.17 -163.5 ;...
+67.67 -164 ;...
+67.98 -165.25 ;...
+68.33 -166.17 ;...
+68.83 -166 ;...
+68.92 -164.83 ;...
+69.08 -163.5 ;...
+69.45 -163 ;...
+69.92 -162.67 ;...
+70.33 -161.58 ;...
+70.42 -160.42 ;...
+70.83 -159 ;...
+70.83 -159 ;...
+70.87 -157.58 ;...
+71.33 -156.33 ;...
+71.13 -154.83 ;...
+70.87 -154.33 ;...
+70.87 -152.5 ;...
+70.48 -151.5 ;...
+70.48 -150.33 ;...
+70.47 -149 ;...
+70.22 -147.5 ;...
+70.22 -146.17 ;...
+70 -145.08 ;...
+70.08 -144 ;...
+70.08 -142.83 ;...
+69.83 -141.83 ;...
+69.62 -141 ;...
+69.58 -139.5 ;...
+69.32 -138.33 ;...
+69 -137.33 ;...
+68.75 -136 ;...
+69.17 -135.92 ;...
+69.5 -135.17 ;...
+69.58 -134.17 ;...
+69.38 -133.33 ;...
+69.67 -132.58 ;...
+69.98 -131.17 ;...
+70.25 -129.83 ;...
+69.83 -129.42 ;...
+70 -128.5 ;...
+70.58 -128 ;...
+70.08 -126.67 ;...
+70.08 -126.67 ;...
+69.58 -126.17 ;...
+69.42 -125.33 ;...
+70 -124.42 ;...
+69.42 -124.33 ;...
+69.37 -123.5 ;...
+69.83 -123 ;...
+69.83 -121.33 ;...
+69.47 -120.25 ;...
+69.22 -118.83 ;...
+69 -117.5 ;...
+68.97 -116 ;...
+68.72 -114.67 ;...
+68.3 -114.08 ;...
+68.17 -115.08 ;...
+67.83 -115.33 ;...
+67.83 -114.17 ;...
+67.67 -113 ;...
+67.83 -111.58 ;...
+68 -110.25 ;...
+67.75 -109.25 ;...
+67.58 -108.17 ;...
+68 -107.83 ;...
+68.25 -109 ;...
+68.58 -108.25 ;...
+68.75 -106.92 ;...
+68.9 -105.67 ;...
+68.35 -104.58 ;...
+68.03 -103 ;...
+67.75 -101.75 ;...
+67.58 -100 ;...
+67.58 -100 ;...
+67.67 -98.75 ;...
+68.25 -98.67 ;...
+68.58 -98 ;...
+69 -99.58 ;...
+69.33 -98.58 ;...
+69.83 -97.92 ;...
+69.33 -96.42 ;...
+68.75 -95.58 ;...
+68.38 -96.92 ;...
+67.82 -96.83 ;...
+67.5 -95.83 ;...
+67.98 -95.5 ;...
+68 -95.17 ;...
+68.5 -94.25 ;...
+69 -94.67 ;...
+69.42 -94 ;...
+69.83 -95.67 ;...
+70.42 -96.75 ;...
+70.97 -96.25 ;...
+71.5 -95.83 ;...
+71.75 -95 ;...
+72.25 -95 ;...
+72.67 -95 ;...
+73.17 -95.25 ;...
+73.58 -95.58 ;...
+74 -95.17 ;...
+74.17 -93.17 ;...
+74.02 -91.17 ;...
+73.83 -90.17 ;...
+73.58 -90.67 ;...
+73.58 -90.67 ;...
+73.17 -91.33 ;...
+72.75 -91.92 ;...
+72.75 -93.08 ;...
+72.58 -94 ;...
+72.25 -93.5 ;...
+71.92 -94.17 ;...
+71.42 -93.5 ;...
+71 -92.67 ;...
+70.67 -91.92 ;...
+70.17 -91.33 ;...
+69.75 -92.42 ;...
+69.5 -91.33 ;...
+69.08 -90.67 ;...
+68.58 -89.92 ;...
+69.25 -88.92 ;...
+68.75 -88 ;...
+68.33 -88 ;...
+67.83 -88.17 ;...
+67.25 -87.25 ;...
+67.42 -86.5 ;...
+67.83 -86.5 ;...
+68.17 -85.42 ;...
+68.75 -85.42 ;...
+69.33 -85.5 ;...
+69.83 -85.5 ;...
+69.83 -84.25 ;...
+69.67 -82.92 ;...
+69.33 -82.75 ;...
+69.2 -81.33 ;...
+68.58 -81.33 ;...
+68.58 -81.33 ;...
+68.33 -82.42 ;...
+67.83 -82.42 ;...
+67.58 -81.17 ;...
+67 -81.42 ;...
+66.58 -82.67 ;...
+66.17 -83.75 ;...
+66.33 -85.08 ;...
+66.58 -85.5 ;...
+66.5 -86.75 ;...
+66.17 -86 ;...
+65.5 -87 ;...
+65 -87 ;...
+64.5 -87.75 ;...
+64 -88.5 ;...
+64 -90 ;...
+63.42 -90.67 ;...
+62.92 -90.58 ;...
+62.75 -91.58 ;...
+62.58 -92.5 ;...
+62.08 -92.5 ;...
+61.92 -93.17 ;...
+61.5 -93.67 ;...
+61 -94.17 ;...
+60.58 -94.42 ;...
+60.17 -94.67 ;...
+59.58 -94.75 ;...
+59.08 -94.75 ;...
+58.67 -94.42 ;...
+58.75 -93.75 ;...
+58.67 -93.08 ;...
+58.67 -93.08 ;...
+58.08 -92.67 ;...
+57.67 -92.67 ;...
+57.25 -92.33 ;...
+56.92 -92.33 ;...
+57.08 -91.75 ;...
+57.25 -91 ;...
+56.92 -90 ;...
+56.75 -89 ;...
+56.42 -88.08 ;...
+56.3153 -87.9338 ;...
+56.2103 -87.7884 ;...
+56.1053 -87.6438 ;...
+56 -87.5 ;...
+55.9578 -87.3319 ;...
+55.9155 -87.1643 ;...
+55.8728 -86.9969 ;...
+55.83 -86.83 ;...
+55.67 -86 ;...
+55.25 -85 ;...
+55.25 -84 ;...
+55.25 -83 ;...
+55 -82.17 ;...
+54.25 -82.42 ;...
+53.83 -82.17 ;...
+53.42 -82.17 ;...
+52.92 -82.33 ;...
+52.5 -81.67 ;...
+52.08 -81.25 ;...
+51.75 -80.75 ;...
+51.33 -80.42 ;...
+51 -79.75 ;...
+51.33 -79.83 ;...
+51.67 -79 ;...
+52.17 -78.42 ;...
+52.67 -78.83 ;...
+53.17 -78.83 ;...
+53.17 -78.83 ;...
+53.75 -78.92 ;...
+54.17 -79.17 ;...
+54.58 -79.5 ;...
+54.83 -78.75 ;...
+55.17 -78 ;...
+55.58 -77.25 ;...
+56 -76.75 ;...
+56.67 -76.75 ;...
+57.25 -77 ;...
+57.67 -77.17 ;...
+58.25 -77.5 ;...
+58.42 -78.08 ;...
+58.75 -78.67 ;...
+59.08 -78.58 ;...
+59.17 -77.92 ;...
+59.58 -77.42 ;...
+60 -77.42 ;...
+60.5 -77.58 ;...
+60.75 -78.08 ;...
+61.17 -77.75 ;...
+61.2725 -77.6881 ;...
+61.3751 -77.6258 ;...
+61.4775 -77.5631 ;...
+61.58 -77.5 ;...
+61.6427 -77.6441 ;...
+61.7053 -77.7888 ;...
+61.7677 -77.9341 ;...
+61.83 -78.08 ;...
+62.25 -78.08 ;...
+62.5 -77.42 ;...
+62.42 -76.42 ;...
+62.25 -75.5 ;...
+62.25 -74.83 ;...
+62.42 -73.67 ;...
+62.17 -72.92 ;...
+61.83 -72.25 ;...
+61.83 -72.25 ;...
+61.58 -71.5 ;...
+61.25 -71.75 ;...
+61 -71 ;...
+61 -70.25 ;...
+60.92 -69.5 ;...
+60.5 -69.67 ;...
+60.08 -69.42 ;...
+59.58 -69.5 ;...
+59.25 -69.5 ;...
+58.83 -69 ;...
+58.75 -68.42 ;...
+58.17 -67.75 ;...
+58.42 -66.75 ;...
+58.75 -66.42 ;...
+59 -65.67 ;...
+59.42 -65.25 ;...
+59.75 -65.58 ;...
+60 -65.17 ;...
+60.33 -64.67 ;...
+60 -64.33 ;...
+59.5 -63.83 ;...
+59 -63.25 ;...
+58.5 -62.83 ;...
+58 -62.33 ;...
+57.67 -61.83 ;...
+57.33 -61.83 ;...
+57.08 -61.33 ;...
+56.75 -61.75 ;...
+56.25 -61.75 ;...
+55.92 -61.33 ;...
+55.92 -61.33 ;...
+55.67 -60.5 ;...
+55.25 -60.33 ;...
+55.17 -59.25 ;...
+54.83 -58.92 ;...
+54.75 -58 ;...
+54.6877 -57.8744 ;...
+54.6253 -57.7492 ;...
+54.5627 -57.6244 ;...
+54.5 -57.5 ;...
+54.418 -57.7088 ;...
+54.3357 -57.9167 ;...
+54.253 -58.1237 ;...
+54.17 -58.33 ;...
+54.1483 -58.0796 ;...
+54.126 -57.8295 ;...
+54.1033 -57.5796 ;...
+54.08 -57.33 ;...
+53.67 -57.25 ;...
+53.67 -56.5 ;...
+53.17 -55.83 ;...
+52.75 -56 ;...
+52.08 -55.67 ;...
+51.83 -56.17 ;...
+51.5 -56.83 ;...
+51.42 -57.83 ;...
+51.17 -58.67 ;...
+50.83 -59.08 ;...
+50.5 -59.5 ;...
+50.17 -60 ;...
+50.17 -60.92 ;...
+50.08 -61.67 ;...
+50.25 -62.17 ;...
+50.25 -62.83 ;...
+50.25 -63.42 ;...
+50.33 -64 ;...
+50.25 -64.75 ;...
+50.25 -65.42 ;...
+50.25 -66 ;...
+50.08 -66.75 ;...
+50.08 -66.75 ;...
+49.75 -67.17 ;...
+49.33 -67.33 ;...
+49.33 -68 ;...
+48.92 -68.67 ;...
+48.58 -69.25 ;...
+48.17 -69.67 ;...
+47.83 -70 ;...
+47.5 -70.42 ;...
+47.17 -70.75 ;...
+46.83 -71.17 ;...
+47 -70.5 ;...
+47.33 -70.08 ;...
+47.67 -69.67 ;...
+48.08 -69.25 ;...
+48.42 -68.67 ;...
+48.67 -68 ;...
+48.83 -67.42 ;...
+49.08 -66.75 ;...
+49.17 -66 ;...
+49.25 -65.25 ;...
+49.08 -64.58 ;...
+48.83 -64.25 ;...
+48.5 -64.25 ;...
+48.25 -64.83 ;...
+48.08 -65.33 ;...
+48.08 -66.33 ;...
+47.58 -65.67 ;...
+47.75 -64.83 ;...
+47.33 -65 ;...
+46.75 -64.92 ;...
+46.75 -64.92 ;...
+46.25 -64.58 ;...
+46.08 -64 ;...
+45.75 -63.25 ;...
+45.67 -62.58 ;...
+45.83 -62 ;...
+45.75 -61.5 ;...
+46.17 -61.5 ;...
+46.58 -61 ;...
+47 -60.67 ;...
+46.83 -60.42 ;...
+46.33 -60.5 ;...
+46.2479 -60.3317 ;...
+46.1655 -60.164 ;...
+46.0829 -59.9967 ;...
+46 -59.83 ;...
+45.9178 -59.9782 ;...
+45.8354 -60.1259 ;...
+45.7528 -60.2732 ;...
+45.67 -60.42 ;...
+45.5 -61 ;...
+45.17 -61.17 ;...
+45 -62 ;...
+44.75 -63 ;...
+44.5 -63.67 ;...
+44.5 -64.17 ;...
+44.17 -64.5 ;...
+43.83 -65 ;...
+43.5 -65.5 ;...
+43.75 -66 ;...
+44.17 -66.17 ;...
+44.58 -65.92 ;...
+44.92 -65.33 ;...
+45.08 -64.92 ;...
+45.42 -64.25 ;...
+45.33 -64.92 ;...
+45.67 -64.83 ;...
+45.67 -64.83 ;...
+45.33 -65.58 ;...
+45.17 -66.25 ;...
+45.17 -67 ;...
+44.83 -67 ;...
+44.58 -67.5 ;...
+44.42 -68 ;...
+44.25 -68.58 ;...
+44.42 -68.83 ;...
+44 -69.17 ;...
+43.83 -69.75 ;...
+43.67 -70.25 ;...
+43.5 -70.25 ;...
+43.17 -70.58 ;...
+42.83 -70.83 ;...
+42.58 -70.75 ;...
+42.33 -71 ;...
+42.17 -70.67 ;...
+41.75 -70.5 ;...
+41.79 -70 ;...
+42.02 -70.04 ;...
+41.67 -69.93 ;...
+41.5 -70.67 ;...
+41.67 -70.67 ;...
+41.5 -71.08 ;...
+41.75 -71.33 ;...
+41.42 -71.5 ;...
+41.25 -72 ;...
+41.25 -72.5 ;...
+41.25 -73 ;...
+41.08 -73.5 ;...
+41.08 -73.5 ;...
+40.83 -74 ;...
+40.5 -74.33 ;...
+40.33 -74 ;...
+39.83 -74.17 ;...
+39.33 -74.5 ;...
+39 -75 ;...
+39.33 -75.25 ;...
+39.5 -75.58 ;...
+39 -75.42 ;...
+38.8551 -75.3144 ;...
+38.7102 -75.2091 ;...
+38.5651 -75.1044 ;...
+38.42 -75 ;...
+38.3575 -75.0627 ;...
+38.2951 -75.1252 ;...
+38.2325 -75.1877 ;...
+38.17 -75.25 ;...
+37.75 -75.58 ;...
+37.25 -75.75 ;...
+37.17 -76 ;...
+37.67 -75.83 ;...
+38 -75.67 ;...
+38 -76 ;...
+38.25 -75.92 ;...
+38.42 -76.33 ;...
+38.83 -76.17 ;...
+39.17 -76.17 ;...
+39.5 -76 ;...
+39.33 -76.42 ;...
+39 -76.58 ;...
+38.5 -76.5 ;...
+38.17 -76.42 ;...
+38.25 -76.92 ;...
+37.92 -76.33 ;...
+37.5 -76.42 ;...
+37.17 -76.42 ;...
+37.17 -76.42 ;...
+36.83 -76 ;...
+36.5 -75.83 ;...
+36.11 -75.66 ;...
+35.85 -75.53 ;...
+36.21 -75.91 ;...
+36.17 -76 ;...
+36.08 -76.33 ;...
+35.92 -76.75 ;...
+35.92 -76.25 ;...
+35.92 -75.83 ;...
+35.58 -75.83 ;...
+35.33 -76 ;...
+35.33 -76.33 ;...
+35 -76.83 ;...
+35 -76.33 ;...
+34.75 -76.58 ;...
+34.67 -77.17 ;...
+34.33 -77.58 ;...
+34 -78 ;...
+33.92 -78.42 ;...
+33.67 -78.92 ;...
+33.33 -79.17 ;...
+33 -79.5 ;...
+32.67 -80 ;...
+32.42 -80.5 ;...
+32 -81 ;...
+31.5 -81.25 ;...
+31 -81.5 ;...
+30.5 -81.42 ;...
+30 -81.33 ;...
+30 -81.33 ;...
+29.5 -81.08 ;...
+29 -80.92 ;...
+28.5 -80.58 ;...
+28.17 -80.58 ;...
+27.58 -80.33 ;...
+27 -80.08 ;...
+26.42 -80.08 ;...
+25.83 -80.17 ;...
+25.33 -80.42 ;...
+25.17 -80.67 ;...
+25.08 -81.08 ;...
+25.5 -81.25 ;...
+25.83 -81.67 ;...
+26.33 -81.92 ;...
+26.75 -82.17 ;...
+27.08 -82.5 ;...
+27.165 -82.52 ;...
+27.25 -82.5399 ;...
+27.335 -82.56 ;...
+27.42 -82.58 ;...
+27.545 -82.5401 ;...
+27.67 -82.5002 ;...
+27.795 -82.4601 ;...
+27.92 -82.42 ;...
+27.8976 -82.5026 ;...
+27.8751 -82.5851 ;...
+27.8526 -82.6676 ;...
+27.83 -82.75 ;...
+28.17 -82.75 ;...
+28.58 -82.67 ;...
+29.08 -82.83 ;...
+29.17 -83.08 ;...
+29.75 -83.5 ;...
+30.08 -83.92 ;...
+30 -84.42 ;...
+29.75 -84.83 ;...
+29.67 -85.33 ;...
+30.08 -85.5 ;...
+30.25 -86 ;...
+30.25 -86 ;...
+30.5 -86.33 ;...
+30.42 -86.83 ;...
+30.33 -87.33 ;...
+30.33 -87.83 ;...
+30.67 -88 ;...
+30.42 -88.25 ;...
+30.5 -88.75 ;...
+30.5 -89.17 ;...
+30.25 -89.67 ;...
+30.5 -90.17 ;...
+30.08 -90.42 ;...
+30 -90.08 ;...
+30.08 -89.67 ;...
+30.08 -89.25 ;...
+29.83 -89.33 ;...
+29.67 -89.58 ;...
+29.5 -89.58 ;...
+29.17 -89.08 ;...
+29 -89.25 ;...
+29.25 -89.5 ;...
+29.33 -89.83 ;...
+29.17 -90.17 ;...
+29.08 -90.75 ;...
+29.17 -91.25 ;...
+29.5 -91.33 ;...
+29.83 -91.83 ;...
+29.58 -92.25 ;...
+29.67 -92.75 ;...
+29.83 -93.25 ;...
+29.75 -93.83 ;...
+29.75 -93.83 ;...
+29.67 -94.25 ;...
+29.42 -94.75 ;...
+29.83 -94.75 ;...
+29.7901 -94.8326 ;...
+29.7501 -94.9151 ;...
+29.7101 -94.9976 ;...
+29.67 -95.08 ;...
+29.565 -95.0173 ;...
+29.4601 -94.9547 ;...
+29.355 -94.8923 ;...
+29.25 -94.83 ;...
+29.1876 -94.9152 ;...
+29.1251 -95.0002 ;...
+29.0626 -95.0852 ;...
+29 -95.17 ;...
+28.75 -95.5 ;...
+28.67 -96 ;...
+28.33 -96.5 ;...
+28 -97 ;...
+27.67 -97.33 ;...
+27.17 -97.42 ;...
+26.67 -97.25 ;...
+26.17 -97.25 ;...
+25.75 -97.17 ;...
+25.33 -97.42 ;...
+24.83 -97.58 ;...
+24.33 -97.75 ;...
+23.83 -97.75 ;...
+23.33 -97.75 ;...
+22.83 -97.75 ;...
+22.42 -97.92 ;...
+21.92 -97.75 ;...
+21.58 -97.25 ;...
+21.25 -97.42 ;...
+20.83 -97.25 ;...
+20.5 -97 ;...
+20.17 -96.67 ;...
+19.67 -96.42 ;...
+19.25 -96.17 ;...
+19.25 -96.17 ;...
+18.83 -95.83 ;...
+18.67 -95.33 ;...
+18.5 -94.83 ;...
+18.17 -94.5 ;...
+18.17 -94.17 ;...
+18.33 -93.58 ;...
+18.42 -93 ;...
+18.67 -92.42 ;...
+18.58 -91.83 ;...
+18.42 -91.83 ;...
+18.58 -91.25 ;...
+18.83 -91.33 ;...
+19.08 -91 ;...
+19.25 -90.67 ;...
+19.67 -90.67 ;...
+20 -90.5 ;...
+20.42 -90.42 ;...
+21 -90.33 ;...
+21.17 -90 ;...
+21.25 -89.5 ;...
+21.33 -89 ;...
+21.5 -88.5 ;...
+21.58 -88 ;...
+21.5 -87.58 ;...
+21.5 -87.08 ;...
+21.33 -86.83 ;...
+20.92 -86.83 ;...
+20.5 -87.25 ;...
+20 -87.42 ;...
+19.875 -87.44 ;...
+19.75 -87.4601 ;...
+19.625 -87.48 ;...
+19.5 -87.5 ;...
+19.5 -87.5 ;...
+19.5 -87.5 ;...
+19.5 -87.5 ;...
+19.5 -87.5 ;...
+19.375 -87.52 ;...
+19.25 -87.5401 ;...
+19.125 -87.56 ;...
+19 -87.58 ;...
+18.42 -87.67 ;...
+17.92 -87.92 ;...
+18.33 -88.17 ;...
+17.5 -88.25 ;...
+17 -88.25 ;...
+16.33 -88.5 ;...
+16 -89 ;...
+15.83 -88.58 ;...
+15.58 -88.17 ;...
+15.83 -87.58 ;...
+15.67 -87 ;...
+15.75 -86.5 ;...
+15.92 -86 ;...
+15.83 -85.5 ;...
+15.92 -85 ;...
+15.83 -84.67 ;...
+15.75 -84.25 ;...
+15.33 -83.83 ;...
+15.17 -83.42 ;...
+15 -83.25 ;...
+14.25 -83.25 ;...
+13.83 -83.5 ;...
+13.25 -83.5 ;...
+12.75 -83.5 ;...
+12.17 -83.67 ;...
+11.67 -83.67 ;...
+11.25 -83.83 ;...
+10.83 -83.67 ;...
+10.42 -83.42 ;...
+10.42 -83.42 ;...
+10 -83.17 ;...
+9.67 -82.75 ;...
+9.42 -82.33 ;...
+9 -82.17 ;...
+9 -81.75 ;...
+8.75 -81.42 ;...
+8.92 -80.83 ;...
+9.08 -80.33 ;...
+9.25 -79.83 ;...
+9.58 -79.58 ;...
+9.58 -79.08 ;...
+9.42 -78.67 ;...
+9.33 -78.25 ;...
+9 -77.83 ;...
+8.67 -77.5 ;...
+8.33 -77.17 ;...
+7.83 -76.75 ;...
+8.58 -76.75 ;...
+9 -76.25 ;...
+9.42 -76 ;...
+9.5 -75.58 ;...
+10 -75.58 ;...
+10.5 -75.5 ;...
+10.83 -75.25 ;...
+11 -74.83 ;...
+10.92 -74.42 ;...
+11.25 -74.17 ;...
+11.17 -73.5 ;...
+11.42 -73 ;...
+11.67 -72.67 ;...
+11.67 -72.67 ;...
+11.83 -72.25 ;...
+12.17 -72 ;...
+12.42 -71.67 ;...
+12.33 -71.33 ;...
+12.08 -71.17 ;...
+11.67 -71.42 ;...
+11.5 -71.92 ;...
+11 -71.67 ;...
+10.58 -71.5 ;...
+10.25 -71.75 ;...
+9.75 -72 ;...
+9.42 -71.75 ;...
+9 -71.67 ;...
+9.17 -71.08 ;...
+9.75 -71.08 ;...
+10.33 -71.42 ;...
+10.92 -71.42 ;...
+11.08 -71 ;...
+11.25 -70.58 ;...
+11.5 -70.17 ;...
+11.92 -70.33 ;...
+12.17 -69.92 ;...
+11.5 -69.75 ;...
+11.5 -69.33 ;...
+11.42 -68.83 ;...
+11.17 -68.42 ;...
+10.75 -68.33 ;...
+10.42 -68.17 ;...
+10.5 -67.58 ;...
+10.5 -67 ;...
+10.5 -67 ;...
+10.58 -66.58 ;...
+10.58 -66.17 ;...
+10.33 -66 ;...
+10.17 -65.58 ;...
+10.08 -65 ;...
+10.25 -64.5 ;...
+10.67 -64 ;...
+10.67 -63.42 ;...
+10.67 -62.75 ;...
+10.6701 -62.605 ;...
+10.6701 -62.46 ;...
+10.6701 -62.315 ;...
+10.67 -62.17 ;...
+10.6277 -62.3776 ;...
+10.5853 -62.5851 ;...
+10.5427 -62.7926 ;...
+10.5 -63 ;...
+10.17 -62.67 ;...
+9.75 -62.33 ;...
+9.83 -62 ;...
+9.67 -61.58 ;...
+9.5 -61 ;...
+9 -60.83 ;...
+8.42 -61 ;...
+8.58 -60.25 ;...
+8.25 -59.67 ;...
+7.92 -59.17 ;...
+7.58 -58.67 ;...
+7.17 -58.5 ;...
+6.75 -58.58 ;...
+6.83 -58.17 ;...
+6.5 -57.67 ;...
+6.25 -57.33 ;...
+5.92 -57.08 ;...
+5.83 -56.5 ;...
+5.83 -56 ;...
+5.83 -56 ;...
+5.92 -55.5 ;...
+5.92 -55 ;...
+5.83 -54.5 ;...
+5.67 -54 ;...
+5.58 -53.67 ;...
+5.42 -53.25 ;...
+5.17 -52.75 ;...
+4.83 -52.33 ;...
+4.5 -51.83 ;...
+4.25 -51.5 ;...
+3.75 -51 ;...
+3.17 -51 ;...
+2.5 -50.67 ;...
+1.83 -50.5 ;...
+1.75 -49.92 ;...
+1 -50 ;...
+0.5 -50.42 ;...
+0.17 -50.75 ;...
+-0.17 -51.17 ;...
+-0.67 -51.33 ;...
+-1.25 -51.42 ;...
+-1 -50.83 ;...
+-1.67 -50.58 ;...
+-1 -50.42 ;...
+-0.42 -50.42 ;...
+-0.17 -50 ;...
+-0.25 -49.5 ;...
+-0.17 -49 ;...
+-0.33 -48.42 ;...
+-1 -48.58 ;...
+-1 -48.58 ;...
+-1.42 -48.75 ;...
+-1.58 -48.5 ;...
+-0.83 -48.17 ;...
+-0.67 -47.83 ;...
+-0.67 -47.25 ;...
+-1 -46.67 ;...
+-1.17 -46.17 ;...
+-1.33 -45.5 ;...
+-1.67 -45.33 ;...
+-1.5 -44.83 ;...
+-1.92 -44.67 ;...
+-2.33 -44.42 ;...
+-2.83 -44.58 ;...
+-2.67 -44 ;...
+-2.42 -43.5 ;...
+-2.5 -43 ;...
+-2.75 -42.5 ;...
+-2.75 -42 ;...
+-3 -41.5 ;...
+-3 -41 ;...
+-2.83 -40.5 ;...
+-2.83 -40 ;...
+-3.17 -39.5 ;...
+-3.5 -39 ;...
+-3.83 -38.5 ;...
+-4.17 -38.17 ;...
+-4.5 -37.83 ;...
+-4.75 -37.33 ;...
+-5.08 -37 ;...
+-5.17 -36.5 ;...
+-5.17 -36.5 ;...
+-5.08 -36 ;...
+-5.25 -35.42 ;...
+-5.83 -35.17 ;...
+-6.42 -35 ;...
+-7 -34.83 ;...
+-7.5 -34.75 ;...
+-8.17 -34.83 ;...
+-8.67 -35.08 ;...
+-9.17 -35.33 ;...
+-9.58 -35.58 ;...
+-10 -36 ;...
+-10.42 -36.25 ;...
+-10.75 -36.75 ;...
+-11 -37 ;...
+-11.5 -37.33 ;...
+-12 -37.58 ;...
+-12.58 -38 ;...
+-13 -38.42 ;...
+-13.33 -38.92 ;...
+-14 -39 ;...
+-14.5 -39.08 ;...
+-15 -39 ;...
+-15.5 -39 ;...
+-16 -38.92 ;...
+-16.58 -39.08 ;...
+-17.17 -39.17 ;...
+-17.67 -39.17 ;...
+-18 -39.5 ;...
+-18.5 -39.58 ;...
+-19 -39.58 ;...
+-19 -39.58 ;...
+-19.5 -39.67 ;...
+-20 -40.17 ;...
+-20.5 -40.33 ;...
+-21 -40.83 ;...
+-21.5 -41 ;...
+-22 -41 ;...
+-22.25 -41.5 ;...
+-22.5 -42 ;...
+-22.92 -42 ;...
+-22.92 -42.5 ;...
+-23 -43 ;...
+-23 -43.5 ;...
+-22.92 -44 ;...
+-23 -44.67 ;...
+-23.33 -44.5 ;...
+-23.33 -45 ;...
+-23.83 -45.42 ;...
+-23.67 -45.75 ;...
+-24 -46.33 ;...
+-24.17 -46.83 ;...
+-24.58 -47.25 ;...
+-25 -47.75 ;...
+-25.42 -48.17 ;...
+-25.83 -48.58 ;...
+-26.33 -48.58 ;...
+-27 -48.58 ;...
+-27.5 -48.5 ;...
+-28 -48.58 ;...
+-28.5 -48.75 ;...
+-28.67 -49 ;...
+-28.67 -49 ;...
+-29 -49.42 ;...
+-29.5 -49.83 ;...
+-30 -50.17 ;...
+-30.5 -50.33 ;...
+-31 -50.67 ;...
+-31.5 -51 ;...
+-31.83 -51.5 ;...
+-32.17 -52 ;...
+-32.5 -52.42 ;...
+-33 -52.58 ;...
+-33.5 -53 ;...
+-33.83 -53.5 ;...
+-34.17 -53.58 ;...
+-34.5 -54 ;...
+-34.75 -54.5 ;...
+-34.83 -55 ;...
+-34.75 -55.67 ;...
+-34.83 -56.25 ;...
+-34.67 -56.83 ;...
+-34.42 -57.17 ;...
+-34.42 -57.83 ;...
+-34 -58.33 ;...
+-34.33 -58.5 ;...
+-34.67 -58.33 ;...
+-35 -57.5 ;...
+-35.33 -57.17 ;...
+-35.83 -57.42 ;...
+-36.25 -57.17 ;...
+-36.33 -56.75 ;...
+-36.83 -56.67 ;...
+-36.83 -56.67 ;...
+-37.33 -57 ;...
+-37.75 -57.42 ;...
+-38.17 -57.58 ;...
+-38.42 -58.17 ;...
+-38.58 -58.67 ;...
+-38.75 -59.33 ;...
+-38.83 -60 ;...
+-38.92 -60.5 ;...
+-39 -61.25 ;...
+-39 -62 ;...
+-38.75 -62.25 ;...
+-39.17 -62.33 ;...
+-39.5 -62 ;...
+-39.83 -62.17 ;...
+-40.33 -62.42 ;...
+-40.58 -62.25 ;...
+-40.92 -62.33 ;...
+-41.17 -63 ;...
+-41.17 -63.83 ;...
+-41 -64.33 ;...
+-40.75 -64.83 ;...
+-40.8126 -64.9148 ;...
+-40.8751 -64.9997 ;...
+-40.9376 -65.0848 ;...
+-41 -65.17 ;...
+-41.125 -65.1277 ;...
+-41.25 -65.0853 ;...
+-41.375 -65.0427 ;...
+-41.5 -65 ;...
+-42.08 -65 ;...
+-42.33 -64.5 ;...
+-42.08 -63.75 ;...
+-42.58 -63.58 ;...
+-42.83 -63.67 ;...
+-42.83 -64.17 ;...
+-42.5 -64.5 ;...
+-42.5 -64.5 ;...
+-42.83 -65 ;...
+-43 -64.33 ;...
+-43.33 -65 ;...
+-43.67 -65.25 ;...
+-44 -65.17 ;...
+-44.5 -65.17 ;...
+-44.67 -65.58 ;...
+-45 -65.58 ;...
+-45 -66.17 ;...
+-45.25 -66.83 ;...
+-45.5 -67.17 ;...
+-46 -67.5 ;...
+-46.5 -67.42 ;...
+-46.83 -67 ;...
+-47.17 -66.5 ;...
+-47.17 -65.75 ;...
+-47.5 -65.67 ;...
+-48 -65.83 ;...
+-48.33 -66.33 ;...
+-48.67 -67 ;...
+-49 -67.5 ;...
+-49.5 -67.67 ;...
+-50 -67.83 ;...
+-50.17 -68.5 ;...
+-50.5 -69 ;...
+-51 -69.17 ;...
+-51.42 -69 ;...
+-51.83 -68.83 ;...
+-52.33 -68.33 ;...
+-52.25 -69 ;...
+-52.25 -69 ;...
+-52.25 -69.5 ;...
+-52.5 -69.58 ;...
+-52.5 -70 ;...
+-52.75 -70.75 ;...
+-53.25 -70.92 ;...
+-53.75 -70.92 ;...
+-53.83 -71.25 ;...
+-53.67 -72 ;...
+-53.42 -72.25 ;...
+-53.17 -71.33 ;...
+-52.83 -71.08 ;...
+-52.75 -71.5 ;...
+-53.17 -72 ;...
+-53.42 -72.5 ;...
+-53.17 -73.17 ;...
+-52.92 -73.5 ;...
+-52.67 -73.5 ;...
+-52.58 -74 ;...
+-52.17 -74.17 ;...
+-52.42 -74.5 ;...
+-52.25 -75 ;...
+-51.75 -75 ;...
+-51.83 -74.33 ;...
+-51.5 -74.17 ;...
+-51 -74.33 ;...
+-51.33 -74.5 ;...
+-51.393 -74.7066 ;...
+-51.4557 -74.9139 ;...
+-51.5181 -75.1216 ;...
+-51.58 -75.33 ;...
+-51.4776 -75.2469 ;...
+-51.3751 -75.1643 ;...
+-51.2726 -75.0819 ;...
+-51.17 -75 ;...
+-50.67 -74.83 ;...
+-50.75 -74.5 ;...
+-50.75 -74.5 ;...
+-50.42 -74.67 ;...
+-50 -74.5 ;...
+-50.75 -75.33 ;...
+-50.17 -75.33 ;...
+-50.1076 -75.2472 ;...
+-50.0451 -75.1646 ;...
+-49.9826 -75.0822 ;...
+-49.92 -75 ;...
+-49.8977 -75.1252 ;...
+-49.8753 -75.2502 ;...
+-49.8527 -75.3752 ;...
+-49.83 -75.5 ;...
+-49.42 -75.42 ;...
+-49.17 -75.58 ;...
+-48.58 -75.42 ;...
+-48.17 -75.42 ;...
+-47.83 -75.33 ;...
+-47.75 -74.92 ;...
+-48.33 -74.5 ;...
+-47.83 -74.5 ;...
+-47.42 -74.42 ;...
+-46.83 -74 ;...
+-46.83 -74.5 ;...
+-46.67 -75 ;...
+-46.92 -75.5 ;...
+-46.58 -75.5 ;...
+-46.17 -74.75 ;...
+-45.92 -75 ;...
+-45.83 -74.5 ;...
+-45.58 -74.67 ;...
+-45.25 -74.5 ;...
+-45 -74.33 ;...
+-44.58 -74.5 ;...
+-44.17 -74.25 ;...
+-43.83 -73.83 ;...
+-44.17 -73.5 ;...
+-44.17 -73.5 ;...
+-44.42 -73.67 ;...
+-44.67 -73.58 ;...
+-45 -73.83 ;...
+-45.17 -73.67 ;...
+-45.5 -73.58 ;...
+-45 -73.33 ;...
+-44.67 -73.42 ;...
+-44.42 -73 ;...
+-44.17 -73.17 ;...
+-43.75 -72.83 ;...
+-43.42 -73 ;...
+-43 -72.75 ;...
+-42.33 -72.75 ;...
+-42.2901 -72.6874 ;...
+-42.2501 -72.6248 ;...
+-42.2101 -72.5624 ;...
+-42.17 -72.5 ;...
+-42.1276 -72.5626 ;...
+-42.0851 -72.6252 ;...
+-42.0426 -72.6876 ;...
+-42 -72.75 ;...
+-41.9176 -72.6873 ;...
+-41.8351 -72.6247 ;...
+-41.7526 -72.5623 ;...
+-41.67 -72.5 ;...
+-41.6277 -72.6252 ;...
+-41.5853 -72.7503 ;...
+-41.5427 -72.8752 ;...
+-41.5 -73 ;...
+-41.83 -73.17 ;...
+-41.75 -73.58 ;...
+-41.42 -73.75 ;...
+-41 -73.83 ;...
+-40.58 -73.67 ;...
+-40 -73.67 ;...
+-39.5 -73.25 ;...
+-39 -73.33 ;...
+-38.58 -73.42 ;...
+-38.17 -73.42 ;...
+-37.75 -73.67 ;...
+-37.17 -73.5 ;...
+-37.17 -73.08 ;...
+-37.17 -73.08 ;...
+-36.67 -73.08 ;...
+-36.5 -72.83 ;...
+-36 -72.67 ;...
+-35.5 -72.5 ;...
+-35 -72.17 ;...
+-34.5 -71.92 ;...
+-34 -71.83 ;...
+-33.67 -71.58 ;...
+-33.17 -71.67 ;...
+-32.5 -71.33 ;...
+-32.17 -71.5 ;...
+-31.83 -71.5 ;...
+-31.33 -71.58 ;...
+-30.75 -71.67 ;...
+-30.25 -71.58 ;...
+-30 -71.25 ;...
+-29.33 -71.33 ;...
+-29 -71.5 ;...
+-28.5 -71.25 ;...
+-28 -71.17 ;...
+-27.5 -70.92 ;...
+-27 -70.92 ;...
+-26.33 -70.58 ;...
+-25.75 -70.75 ;...
+-25.42 -70.5 ;...
+-25 -70.5 ;...
+-24.5 -70.58 ;...
+-24 -70.5 ;...
+-23.5 -70.5 ;...
+-23 -70.5 ;...
+-23 -70.5 ;...
+-22.5 -70.25 ;...
+-22 -70.17 ;...
+-21.5 -70.08 ;...
+-21 -70.17 ;...
+-20.5 -70.17 ;...
+-20 -70.08 ;...
+-19.33 -70.25 ;...
+-18.75 -70.33 ;...
+-18.25 -70.33 ;...
+-17.83 -70.83 ;...
+-17.67 -71.17 ;...
+-17.25 -71.5 ;...
+-17 -72 ;...
+-16.67 -72.5 ;...
+-16.58 -72.83 ;...
+-16.25 -73.5 ;...
+-15.83 -74 ;...
+-15.75 -74.5 ;...
+-15.33 -75.17 ;...
+-15 -75.5 ;...
+-14.67 -75.83 ;...
+-14.17 -76.25 ;...
+-13.67 -76.17 ;...
+-13 -76.5 ;...
+-12.5 -76.67 ;...
+-12.17 -77 ;...
+-11.83 -77.17 ;...
+-11.33 -77.5 ;...
+-10.83 -77.67 ;...
+-10.17 -78.17 ;...
+-10.17 -78.17 ;...
+-9.67 -78.33 ;...
+-9.17 -78.5 ;...
+-8.67 -78.67 ;...
+-8.17 -79 ;...
+-7.83 -79.5 ;...
+-7.25 -79.67 ;...
+-6.83 -80 ;...
+-6.5 -80.33 ;...
+-6.25 -80.83 ;...
+-6 -81.17 ;...
+-5.67 -80.83 ;...
+-5.17 -81.17 ;...
+-4.67 -81.33 ;...
+-4.25 -81.33 ;...
+-3.83 -80.83 ;...
+-3.5 -80.33 ;...
+-3.33 -80 ;...
+-2.83 -79.83 ;...
+-2.5 -79.67 ;...
+-2.5 -80.08 ;...
+-3 -80.17 ;...
+-2.5 -80.58 ;...
+-2.33 -80.92 ;...
+-2.17 -80.75 ;...
+-1.67 -80.75 ;...
+-1 -80.92 ;...
+-0.83 -80.5 ;...
+-0.33 -80.5 ;...
+0 -80.08 ;...
+NaN NaN ;...
+66.08 -125.08 ;...
+66.13 -123.58 ;...
+66.25 -122 ;...
+66 -121 ;...
+65.75 -122 ;...
+65.58 -122.75 ;...
+65 -123.25 ;...
+65 -121.75 ;...
+65.33 -121.58 ;...
+65.67 -120.67 ;...
+65.33 -120.5 ;...
+64.83 -121 ;...
+65.37 -119.33 ;...
+65.82 -120 ;...
+65.67 -118.42 ;...
+66.08 -118.08 ;...
+66.42 -117.67 ;...
+66.33 -119.08 ;...
+66.3537 -119.434 ;...
+66.3766 -119.789 ;...
+66.3987 -120.144 ;...
+66.42 -120.5 ;...
+66.4828 -120.314 ;...
+66.5454 -120.127 ;...
+66.6078 -119.939 ;...
+66.67 -119.75 ;...
+66.92 -118.92 ;...
+67.08 -120 ;...
+66.75 -121.33 ;...
+66.58 -122.67 ;...
+66.37 -123.83 ;...
+66.08 -125.08 ;...
+NaN NaN ;...
+61.17 -117 ;...
+60.83 -116 ;...
+60.83 -115.25 ;...
+61 -114.42 ;...
+60.92 -113.92 ;...
+61.25 -113.75 ;...
+61.42 -112.92 ;...
+61.58 -112.17 ;...
+62.08 -111.75 ;...
+62.33 -110.92 ;...
+62.3533 -110.648 ;...
+62.3761 -110.376 ;...
+62.3983 -110.103 ;...
+62.42 -109.83 ;...
+62.4826 -109.914 ;...
+62.5451 -109.999 ;...
+62.6076 -110.084 ;...
+62.67 -110.17 ;...
+62.6709 -109.878 ;...
+62.6712 -109.585 ;...
+62.6709 -109.292 ;...
+62.67 -109 ;...
+62.83 -110 ;...
+62.83 -110.75 ;...
+62.67 -111.58 ;...
+62.42 -111.92 ;...
+62.08 -112.42 ;...
+62 -113.08 ;...
+62.17 -113.83 ;...
+62.42 -114.17 ;...
+62.42 -115.33 ;...
+62.17 -115.08 ;...
+62.0852 -114.934 ;...
+62.0003 -114.788 ;...
+61.9152 -114.644 ;...
+61.83 -114.5 ;...
+61.8104 -114.688 ;...
+61.7905 -114.875 ;...
+61.7704 -115.063 ;...
+61.75 -115.25 ;...
+61.42 -115.33 ;...
+61.17 -115.83 ;...
+61.17 -117 ;...
+NaN NaN ;...
+58.67 -111.25 ;...
+58.58 -110.33 ;...
+58.92 -110 ;...
+59.08 -109.25 ;...
+59.08 -108.25 ;...
+59.123 -108.043 ;...
+59.1657 -107.836 ;...
+59.208 -107.628 ;...
+59.25 -107.42 ;...
+59.2927 -107.564 ;...
+59.3353 -107.709 ;...
+59.3777 -107.854 ;...
+59.42 -108 ;...
+59.42 -108.58 ;...
+59.67 -109.17 ;...
+59.67 -109.67 ;...
+59.25 -110.17 ;...
+59 -110.67 ;...
+58.67 -111.25 ;...
+NaN NaN ;...
+56.33 -103.08 ;...
+56.58 -102.17 ;...
+57 -102.17 ;...
+57.42 -102.17 ;...
+57.67 -101.58 ;...
+58.17 -102.08 ;...
+57.75 -102.5 ;...
+57.6676 -102.583 ;...
+57.5851 -102.666 ;...
+57.5026 -102.748 ;...
+57.42 -102.83 ;...
+57.3151 -102.747 ;...
+57.2101 -102.664 ;...
+57.1051 -102.582 ;...
+57 -102.5 ;...
+56.9175 -102.563 ;...
+56.8351 -102.626 ;...
+56.7525 -102.688 ;...
+56.67 -102.75 ;...
+56.33 -103.08 ;...
+NaN NaN ;...
+53.33 -99.25 ;...
+53 -98.92 ;...
+52.5 -98.67 ;...
+52.25 -98.17 ;...
+51.92 -98.17 ;...
+51.92 -97.42 ;...
+51.42 -97.33 ;...
+51.58 -96.83 ;...
+51.17 -96.92 ;...
+50.75 -97 ;...
+50.33 -97 ;...
+50.5 -96.42 ;...
+51.17 -96.17 ;...
+51.58 -96.58 ;...
+52.17 -97 ;...
+52.67 -97.25 ;...
+53.17 -97.58 ;...
+53.67 -97.83 ;...
+53.75 -98.42 ;...
+53.75 -99 ;...
+53.33 -99.25 ;...
+NaN NaN ;...
+46.67 -92.08 ;...
+46.67 -91.58 ;...
+46.92 -90.92 ;...
+46.5 -90.5 ;...
+46.75 -89.75 ;...
+47 -89 ;...
+47.42 -88.25 ;...
+47.42 -87.75 ;...
+47.08 -88.42 ;...
+46.75 -88.42 ;...
+46.83 -87.75 ;...
+46.42 -87.33 ;...
+46.42 -86.67 ;...
+46.67 -85.83 ;...
+46.75 -85 ;...
+46.5 -85 ;...
+46.5002 -84.875 ;...
+46.5003 -84.75 ;...
+46.5002 -84.625 ;...
+46.5 -84.5 ;...
+46.6051 -84.5621 ;...
+46.7101 -84.6245 ;...
+46.8151 -84.6871 ;...
+46.92 -84.75 ;...
+47.33 -84.67 ;...
+47.58 -85 ;...
+47.92 -85 ;...
+47.92 -85.75 ;...
+48.25 -86.17 ;...
+48.75 -86.5 ;...
+48.75 -87.33 ;...
+49 -88.08 ;...
+48.67 -88.42 ;...
+48.42 -89.08 ;...
+48.08 -89.42 ;...
+47.83 -89.83 ;...
+47.83 -89.83 ;...
+47.67 -90.5 ;...
+47.33 -91 ;...
+47 -91.58 ;...
+46.67 -92.08 ;...
+NaN NaN ;...
+44.58 -88 ;...
+44.6655 -87.8133 ;...
+44.7506 -87.6261 ;...
+44.8355 -87.4383 ;...
+44.92 -87.25 ;...
+44.8151 -87.3128 ;...
+44.7101 -87.3755 ;...
+44.6051 -87.4378 ;...
+44.5 -87.5 ;...
+44.4175 -87.5201 ;...
+44.335 -87.5401 ;...
+44.2525 -87.5601 ;...
+44.17 -87.58 ;...
+43.58 -87.75 ;...
+43.17 -87.92 ;...
+42.75 -87.83 ;...
+42.17 -87.83 ;...
+42.0451 -87.747 ;...
+41.9201 -87.6644 ;...
+41.7951 -87.582 ;...
+41.67 -87.5 ;...
+41.6701 -87.395 ;...
+41.6702 -87.29 ;...
+41.6701 -87.185 ;...
+41.67 -87.08 ;...
+41.83 -86.67 ;...
+42.17 -86.42 ;...
+42.75 -86.25 ;...
+43.25 -86.33 ;...
+43.67 -86.5 ;...
+44.08 -86.5 ;...
+44.5 -86.25 ;...
+44.92 -86.08 ;...
+45.17 -85.33 ;...
+45.67 -85 ;...
+45.6702 -84.875 ;...
+45.6703 -84.75 ;...
+45.6702 -84.625 ;...
+45.67 -84.5 ;...
+45.6276 -84.3948 ;...
+45.5852 -84.2897 ;...
+45.5426 -84.1848 ;...
+45.5 -84.08 ;...
+45.33 -83.58 ;...
+45 -83.33 ;...
+44.42 -83.33 ;...
+43.92 -83.83 ;...
+43.58 -83.83 ;...
+43.92 -83.42 ;...
+44.08 -82.92 ;...
+43.58 -82.67 ;...
+43.58 -82.67 ;...
+43.08 -82.42 ;...
+43.33 -81.75 ;...
+43.92 -81.75 ;...
+44.42 -81.5 ;...
+44.83 -81.33 ;...
+45.17 -81.5 ;...
+44.75 -80.92 ;...
+44.5 -80.08 ;...
+44.5826 -79.9979 ;...
+44.6651 -79.9155 ;...
+44.7476 -79.8329 ;...
+44.83 -79.75 ;...
+44.9777 -79.874 ;...
+45.1253 -79.9987 ;...
+45.2727 -80.124 ;...
+45.42 -80.25 ;...
+45.92 -80.75 ;...
+46.08 -81.67 ;...
+46.17 -82.33 ;...
+46.17 -83 ;...
+46.25 -83.67 ;...
+46.25 -84.17 ;...
+45.92 -84 ;...
+45.92 -84.83 ;...
+46 -85.25 ;...
+45.92 -85.75 ;...
+45.75 -86.75 ;...
+45.75 -87 ;...
+45.42 -87.33 ;...
+45 -87.67 ;...
+44.58 -88 ;...
+NaN NaN ;...
+45.83 -83.08 ;...
+45.83 -82.33 ;...
+45.92 -81.75 ;...
+45.5 -81.92 ;...
+45.67 -82.42 ;...
+45.83 -83.08 ;...
+NaN NaN ;...
+41.75 -83.5 ;...
+41.5 -82.83 ;...
+41.5 -82.25 ;...
+41.58 -81.67 ;...
+41.83 -81.08 ;...
+42 -80.5 ;...
+42.25 -79.83 ;...
+42.5 -79.25 ;...
+42.83 -78.83 ;...
+42.83 -79.5 ;...
+42.83 -80.17 ;...
+42.58 -80.5 ;...
+42.67 -80.92 ;...
+42.58 -81.5 ;...
+42.25 -81.83 ;...
+42 -82.5 ;...
+42 -83.08 ;...
+41.75 -83.5 ;...
+NaN NaN ;...
+43.25 -79.75 ;...
+43.17 -79.25 ;...
+43.33 -78.58 ;...
+43.33 -78 ;...
+43.25 -77.42 ;...
+43.33 -76.83 ;...
+43.5 -76.17 ;...
+44 -76.25 ;...
+44.33 -76.08 ;...
+44.17 -76.67 ;...
+43.92 -77 ;...
+44 -77.67 ;...
+43.92 -78.17 ;...
+43.83 -78.83 ;...
+43.67 -79.42 ;...
+43.25 -79.75 ;...
+NaN NaN ;...
+0.08 -91.42 ;...
+-0.33 -91.08 ;...
+-0.75 -90.83 ;...
+-1.08 -91.17 ;...
+-0.92 -91.5 ;...
+-0.67 -91.17 ;...
+-0.42 -91.5 ;...
+0.08 -91.42 ;...
+NaN NaN ;...
+-41.83 -74 ;...
+-42 -73.42 ;...
+-42.33 -73.33 ;...
+-42.67 -73.67 ;...
+-43 -73.5 ;...
+-43.42 -73.75 ;...
+-43.33 -74.33 ;...
+-42.67 -74.17 ;...
+-42.33 -74.17 ;...
+-41.83 -74 ;...
+NaN NaN ;...
+-52.58 -68.75 ;...
+-53 -68.25 ;...
+-53.33 -68.17 ;...
+-53.67 -68 ;...
+-54 -67.42 ;...
+-54.25 -66.75 ;...
+-54.5 -66.33 ;...
+-54.67 -65.83 ;...
+-54.67 -65.17 ;...
+-54.92 -65.25 ;...
+-55 -65.67 ;...
+-55 -66.5 ;...
+-55.25 -67.33 ;...
+-55.25 -68.17 ;...
+-55.67 -68 ;...
+-55.42 -68.67 ;...
+-55.5 -69.33 ;...
+-55.33 -69.83 ;...
+-55 -70 ;...
+-55.17 -70.5 ;...
+-55 -71.17 ;...
+-54.67 -72 ;...
+-54.67 -72 ;...
+-54.42 -72 ;...
+-54.42 -72.5 ;...
+-54.08 -72.67 ;...
+-54.08 -73.33 ;...
+-53.83 -73.33 ;...
+-53.58 -73.83 ;...
+-53.33 -73.5 ;...
+-53.25 -74 ;...
+-53 -74.5 ;...
+-52.75 -74.67 ;...
+-53 -74 ;...
+-53.25 -73.33 ;...
+-53.58 -72.5 ;...
+-53.83 -72.08 ;...
+-54 -71.33 ;...
+-54.17 -71 ;...
+-53.67 -70.5 ;...
+-54.17 -70.33 ;...
+-54.1901 -70.2476 ;...
+-54.2101 -70.1652 ;...
+-54.2301 -70.0826 ;...
+-54.25 -70 ;...
+-54.125 -70.0202 ;...
+-54 -70.0402 ;...
+-53.875 -70.0602 ;...
+-53.75 -70.08 ;...
+-53.6879 -69.8917 ;...
+-53.6256 -69.7039 ;...
+-53.5629 -69.5167 ;...
+-53.5 -69.33 ;...
+-53.33 -69.42 ;...
+-53.5 -70.17 ;...
+-53.33 -70.42 ;...
+-52.83 -70.25 ;...
+-52.83 -69.75 ;...
+-52.58 -69.5 ;...
+-52.67 -69.17 ;...
+-52.58 -68.75 ;...
+NaN NaN ;...
+-51.83 -61.17 ;...
+-52 -60.5 ;...
+-51.75 -60.17 ;...
+-51.42 -60.5 ;...
+-51.33 -59.67 ;...
+-51.5 -59 ;...
+-51.33 -58.33 ;...
+-51.5 -57.75 ;...
+-51.83 -57.75 ;...
+-52 -58.5 ;...
+-52.25 -58.83 ;...
+-52.33 -59.5 ;...
+-52.08 -59.67 ;...
+-52 -60 ;...
+-52.25 -60.5 ;...
+-51.83 -61.17 ;...
+NaN NaN ;...
+-54 -38 ;...
+-54.08 -37 ;...
+-54.33 -36.25 ;...
+-54.58 -35.83 ;...
+-54.92 -36 ;...
+-54.5 -36.58 ;...
+-54.25 -37.25 ;...
+-54 -38 ;...
+NaN NaN ;...
+10 -61.83 ;...
+10.17 -61.5 ;...
+10.58 -61.5 ;...
+10.67 -61.67 ;...
+10.75 -61 ;...
+10.25 -61 ;...
+10 -61.25 ;...
+10 -61.83 ;...
+NaN NaN ;...
+18.17 -78.33 ;...
+18.33 -78.25 ;...
+18.5 -77.83 ;...
+18.42 -77.33 ;...
+18.33 -76.83 ;...
+18.17 -76.42 ;...
+17.83 -76.25 ;...
+17.83 -76.58 ;...
+17.92 -76.92 ;...
+17.75 -77.25 ;...
+17.83 -77.67 ;...
+18.17 -78 ;...
+18.17 -78.33 ;...
+NaN NaN ;...
+21.77 -83.07 ;...
+21.98 -82.87 ;...
+21.82 -82.65 ;...
+21.7475 -82.6124 ;...
+21.675 -82.5749 ;...
+21.6025 -82.5374 ;...
+21.53 -82.5 ;...
+21.5051 -82.5825 ;...
+21.4801 -82.6651 ;...
+21.4551 -82.7475 ;...
+21.43 -82.83 ;...
+21.47 -83.05 ;...
+21.6 -82.95 ;...
+21.77 -83.07 ;...
+NaN NaN ;...
+21.83 -84.83 ;...
+22 -84.33 ;...
+22.33 -84.33 ;...
+22.58 -84 ;...
+22.83 -83.5 ;...
+22.92 -83 ;...
+23 -82.5 ;...
+23.17 -82 ;...
+23.17 -81.5 ;...
+23 -81 ;...
+23 -80.5 ;...
+22.83 -80.08 ;...
+22.67 -79.67 ;...
+22.33 -79.33 ;...
+22.33 -78.83 ;...
+22.17 -78.33 ;...
+21.92 -77.83 ;...
+21.67 -77.42 ;...
+21.5 -77 ;...
+21.17 -76.5 ;...
+21.08 -76 ;...
+21 -75.58 ;...
+20.58 -75.67 ;...
+20.67 -75.33 ;...
+20.58 -74.83 ;...
+20.25 -74.5 ;...
+20.25 -74.25 ;...
+20.08 -74.17 ;...
+20.08 -74.17 ;...
+20 -74.67 ;...
+19.83 -75 ;...
+19.83 -75.5 ;...
+19.92 -76 ;...
+19.92 -76.5 ;...
+19.83 -77 ;...
+19.8302 -77.1675 ;...
+19.8303 -77.335 ;...
+19.8302 -77.5025 ;...
+19.83 -77.67 ;...
+19.8925 -77.6076 ;...
+19.955 -77.5451 ;...
+20.0175 -77.4826 ;...
+20.08 -77.42 ;...
+20.33 -77.08 ;...
+20.67 -77.25 ;...
+20.67 -78 ;...
+21 -78.5 ;...
+21.42 -78.58 ;...
+21.58 -78.75 ;...
+21.5 -79.25 ;...
+21.67 -79.75 ;...
+21.75 -80.17 ;...
+22 -80.5 ;...
+22 -81.25 ;...
+22.08 -81.75 ;...
+22.33 -82.08 ;...
+22.5 -81.58 ;...
+22.58 -82.25 ;...
+22.67 -82.75 ;...
+22.42 -83.08 ;...
+22.17 -83.42 ;...
+22.17 -84 ;...
+22.085 -84.0426 ;...
+22 -84.0851 ;...
+21.915 -84.1276 ;...
+21.83 -84.17 ;...
+21.8302 -84.335 ;...
+21.8303 -84.5 ;...
+21.8302 -84.665 ;...
+21.83 -84.83 ;...
+NaN NaN ;...
+18.33 -74.5 ;...
+18.58 -74.17 ;...
+18.5 -73.67 ;...
+18.33 -73.25 ;...
+18.33 -72.75 ;...
+18.3926 -72.6451 ;...
+18.4551 -72.5402 ;...
+18.5176 -72.4351 ;...
+18.58 -72.33 ;...
+18.6851 -72.4348 ;...
+18.7901 -72.5397 ;...
+18.8951 -72.6448 ;...
+19 -72.75 ;...
+19.33 -72.75 ;...
+19.67 -73 ;...
+19.67 -73 ;...
+19.67 -73.5 ;...
+19.92 -73.17 ;...
+19.92 -72.58 ;...
+19.67 -72 ;...
+19.83 -71.67 ;...
+19.83 -71 ;...
+19.75 -70.5 ;...
+19.67 -69.92 ;...
+19.33 -69.75 ;...
+19.33 -69.17 ;...
+19.08 -69.58 ;...
+18.92 -68.75 ;...
+18.5 -68.33 ;...
+18.08 -68.67 ;...
+18.42 -69 ;...
+18.42 -69.5 ;...
+18.25 -70.08 ;...
+18.17 -70.58 ;...
+18.42 -70.58 ;...
+18.25 -71.08 ;...
+18 -71.08 ;...
+17.58 -71.42 ;...
+18.08 -71.83 ;...
+18.17 -72.33 ;...
+18.08 -72.75 ;...
+18.17 -73.17 ;...
+18.17 -73.67 ;...
+18 -73.83 ;...
+18.33 -74.5 ;...
+NaN NaN ;...
+18 -67.17 ;...
+18.5 -67.17 ;...
+18.5 -66.58 ;...
+18.5 -66 ;...
+18.25 -65.67 ;...
+18 -65.92 ;...
+18 -66.33 ;...
+17.92 -66.75 ;...
+18 -67.17 ;...
+NaN NaN ;...
+16.3689 -61.7519 ;...
+16.2811 -61.5521 ;...
+16.4582 -61.544 ;...
+16.503 -61.4947 ;...
+16.4717 -61.4276 ;...
+16.3672 -61.3918 ;...
+16.2654 -61.1898 ;...
+16.1775 -61.464 ;...
+16.2368 -61.5943 ;...
+16.0384 -61.5661 ;...
+15.9543 -61.6919 ;...
+16.0689 -61.7602 ;...
+16.3295 -61.7905 ;...
+16.3689 -61.7519 ;...
+NaN NaN ;...
+14.5484 -60.9511 ;...
+14.8553 -61.1413 ;...
+14.9656 -61.1213 ;...
+14.9616 -60.9787 ;...
+14.7803 -60.831 ;...
+14.5404 -60.7499 ;...
+14.5484 -60.9511 ;...
+NaN NaN ;...
+25.17 -78.25 ;...
+25.17 -78 ;...
+24.67 -77.75 ;...
+24.33 -77.75 ;...
+24.2475 -77.6874 ;...
+24.1651 -77.6248 ;...
+24.0825 -77.5624 ;...
+24 -77.5 ;...
+23.9175 -77.5426 ;...
+23.835 -77.5851 ;...
+23.7525 -77.6276 ;...
+23.67 -77.67 ;...
+24.17 -77.92 ;...
+24.58 -78.42 ;...
+24.83 -78.17 ;...
+25.17 -78.25 ;...
+NaN NaN ;...
+20.92 -73.67 ;...
+21.17 -73.5 ;...
+21.08 -73.17 ;...
+21.33 -73 ;...
+20.92 -73.17 ;...
+20.92 -73.67 ;...
+NaN NaN ;...
+26.5651 -78.788 ;...
+26.5915 -78.68 ;...
+26.8 -78.5758 ;...
+26.7468 -78.5222 ;...
+26.7475 -77.9 ;...
+26.6034 -77.8693 ;...
+26.6252 -78.2379 ;...
+26.4759 -78.7257 ;...
+26.5651 -78.788 ;...
+NaN NaN ;...
+26.8874 -77.8707 ;...
+26.9324 -77.7723 ;...
+26.9097 -77.5532 ;...
+26.5531 -77.0444 ;...
+26.2888 -76.9678 ;...
+26.261 -77.1279 ;...
+25.8781 -77.1838 ;...
+25.849 -77.2401 ;...
+25.9954 -77.3859 ;...
+26.119 -77.2254 ;...
+26.1834 -77.2626 ;...
+26.2706 -77.2209 ;...
+26.4374 -77.2372 ;...
+26.5537 -77.1453 ;...
+26.616 -77.3199 ;...
+26.8522 -77.5773 ;...
+26.8874 -77.8707 ;...
+NaN NaN ;...
+25.5642 -76.7079 ;...
+25.5637 -76.6476 ;...
+25.4894 -76.614 ;...
+25.2976 -76.2798 ;...
+25.1483 -76.1185 ;...
+25.0495 -76.0973 ;...
+24.752 -76.1645 ;...
+24.6404 -76.1317 ;...
+24.7462 -76.2098 ;...
+24.7971 -76.29 ;...
+24.8399 -76.1943 ;...
+24.9191 -76.2047 ;...
+25.0181 -76.1355 ;...
+25.1324 -76.1838 ;...
+25.2566 -76.2966 ;...
+25.4239 -76.7493 ;...
+25.5642 -76.7079 ;...
+NaN NaN ;...
+24.6848 -75.7234 ;...
+24.6314 -75.6203 ;...
+24.1452 -75.2979 ;...
+24.1705 -75.3665 ;...
+24.1268 -75.5053 ;...
+24.2187 -75.4386 ;...
+24.49 -75.5914 ;...
+24.5163 -75.688 ;...
+24.6848 -75.7234 ;...
+NaN NaN ;...
+23.6925 -75.2971 ;...
+23.3717 -75.0781 ;...
+23.1621 -75.0256 ;...
+23.1308 -74.9374 ;...
+22.9059 -74.8088 ;...
+22.857 -74.8472 ;...
+23.0658 -74.9639 ;...
+23.1438 -75.2077 ;...
+23.3547 -75.1494 ;...
+23.6194 -75.3314 ;...
+23.6925 -75.2971 ;...
+NaN NaN ;...
+22.739 -73.858 ;...
+22.561 -73.8082 ;...
+22.3159 -73.9569 ;...
+22.2508 -74.1654 ;...
+22.316 -74.1499 ;...
+22.3806 -74.0364 ;...
+22.4704 -74.0163 ;...
+22.56 -73.8947 ;...
+22.7342 -74.2732 ;...
+22.8546 -74.3477 ;...
+22.6966 -74.027 ;...
+22.739 -73.858 ;...
+NaN NaN ;...
+40.58 -74 ;...
+40.83 -73.92 ;...
+40.92 -73.33 ;...
+41 -72.83 ;...
+41.17 -72.33 ;...
+41 -72 ;...
+40.75 -72.67 ;...
+40.67 -73.33 ;...
+40.58 -74 ;...
+NaN NaN ;...
+49.83 -64.42 ;...
+49.83 -63.75 ;...
+49.75 -63.08 ;...
+49.58 -62.5 ;...
+49.42 -62 ;...
+49.08 -61.67 ;...
+49.08 -62.25 ;...
+49.17 -62.92 ;...
+49.33 -63.5 ;...
+49.58 -63.75 ;...
+49.83 -64.42 ;...
+NaN NaN ;...
+46.67 -64.25 ;...
+46.92 -64 ;...
+46.58 -63.92 ;...
+46.42 -63.33 ;...
+46.42 -62.75 ;...
+46.5 -62 ;...
+46.25 -62.5 ;...
+45.92 -62.5 ;...
+46.17 -63.33 ;...
+46.42 -63.92 ;...
+46.67 -64.25 ;...
+NaN NaN ;...
+62.17 -83.67 ;...
+62.58 -83.33 ;...
+62.75 -82.58 ;...
+62.75 -81.92 ;...
+62.67 -81.92 ;...
+62.25 -82.83 ;...
+62.17 -83.67 ;...
+NaN NaN ;...
+62.33 -80.08 ;...
+62.33 -79.25 ;...
+61.92 -79.33 ;...
+61.5 -79.75 ;...
+61.75 -80.17 ;...
+62.33 -80.08 ;...
+NaN NaN ;...
+56.25 -80 ;...
+56.58 -79.17 ;...
+56.33 -78.92 ;...
+55.75 -79.17 ;...
+56.17 -79.17 ;...
+55.92 -79.5 ;...
+55.9203 -79.645 ;...
+55.9203 -79.79 ;...
+55.9203 -79.935 ;...
+55.92 -80.08 ;...
+56.0228 -79.9163 ;...
+56.1254 -79.7518 ;...
+56.2278 -79.5863 ;...
+56.33 -79.42 ;...
+56.25 -80 ;...
+NaN NaN ;...
+53 -82 ;...
+53.17 -81.42 ;...
+53.08 -81 ;...
+52.67 -80.75 ;...
+52.83 -81.42 ;...
+53 -82 ;...
+NaN NaN ;...
+47.92 -59.33 ;...
+48.17 -58.92 ;...
+48.5 -58.42 ;...
+48.58 -58.75 ;...
+49 -58.42 ;...
+49.5 -57.92 ;...
+50.08 -57.67 ;...
+50.58 -57.25 ;...
+51 -57 ;...
+51.33 -56.67 ;...
+51.58 -56 ;...
+51.58 -55.5 ;...
+51.08 -55.75 ;...
+50.58 -56.17 ;...
+50.25 -56.5 ;...
+49.75 -56.83 ;...
+50.08 -56.08 ;...
+49.92 -55.5 ;...
+49.67 -55.92 ;...
+49.33 -55.33 ;...
+49.42 -54.67 ;...
+49.42 -54 ;...
+49.42 -54 ;...
+49.25 -53.5 ;...
+48.83 -54 ;...
+48.5 -53.75 ;...
+48.58 -53 ;...
+48.08 -53.75 ;...
+47.75 -53.92 ;...
+47.58 -53.67 ;...
+48 -53.33 ;...
+48.08 -53 ;...
+47.58 -53.25 ;...
+47.67 -52.75 ;...
+47.17 -52.92 ;...
+46.67 -53.08 ;...
+46.67 -53.67 ;...
+47.08 -53.67 ;...
+46.83 -54.17 ;...
+47.33 -53.92 ;...
+47.42 -54.42 ;...
+47.33 -54.83 ;...
+46.83 -55.33 ;...
+46.92 -55.92 ;...
+47.17 -55.42 ;...
+47.5 -55.42 ;...
+47.58 -56.08 ;...
+47.58 -56.83 ;...
+47.58 -57.58 ;...
+47.67 -58.42 ;...
+47.5 -59.17 ;...
+47.92 -59.33 ;...
+NaN NaN ;...
+63.67 -87.17 ;...
+64.08 -86.17 ;...
+64.67 -86.42 ;...
+65.25 -86.25 ;...
+65.67 -86 ;...
+66.08 -85 ;...
+65.58 -84.67 ;...
+65.17 -83.67 ;...
+64.83 -82.5 ;...
+64.5 -81.75 ;...
+64.08 -81.25 ;...
+63.83 -80.25 ;...
+63.42 -81.17 ;...
+63.75 -82 ;...
+64 -82.83 ;...
+64 -83.58 ;...
+63.67 -84.17 ;...
+63.25 -84.83 ;...
+63.17 -85.75 ;...
+63.67 -85.83 ;...
+63.67 -87.17 ;...
+NaN NaN ;...
+67.67 -77.25 ;...
+68.25 -76.5 ;...
+68.25 -75.33 ;...
+67.92 -74.83 ;...
+67.5 -75 ;...
+67.25 -75.67 ;...
+67.17 -76.83 ;...
+67.67 -77.25 ;...
+NaN NaN ;...
+71.75 -90 ;...
+72.33 -90 ;...
+72.75 -89.58 ;...
+73.17 -89.08 ;...
+73.58 -88 ;...
+73.83 -87 ;...
+73.83 -85.42 ;...
+73.8234 -85.0645 ;...
+73.8162 -84.7094 ;...
+73.8084 -84.3545 ;...
+73.8 -84 ;...
+73.7335 -84.3795 ;...
+73.6663 -84.756 ;...
+73.5985 -85.1295 ;...
+73.53 -85.5 ;...
+73.25 -86.08 ;...
+72.83 -86.5 ;...
+72.42 -86.42 ;...
+72 -86.33 ;...
+71.67 -85.33 ;...
+72.08 -85.67 ;...
+72.5 -85.58 ;...
+73 -85.5 ;...
+73.42 -84.33 ;...
+73.75 -82.92 ;...
+73.83 -81.67 ;...
+73.58 -81.17 ;...
+73.13 -81.5 ;...
+72.67 -80.83 ;...
+72.17 -81.17 ;...
+72.17 -81.17 ;...
+72.47 -80.17 ;...
+72.47 -79 ;...
+72.8 -77.83 ;...
+72.7 -76.83 ;...
+72.5 -75.75 ;...
+72.58 -74.33 ;...
+72.25 -74 ;...
+71.75 -74 ;...
+71.67 -72.42 ;...
+71.42 -71.25 ;...
+70.83 -69.75 ;...
+70.5 -68.33 ;...
+70.3754 -68.1187 ;...
+70.2505 -67.91 ;...
+70.1254 -67.7037 ;...
+70 -67.5 ;...
+69.8951 -67.6066 ;...
+69.7901 -67.7121 ;...
+69.6851 -67.8166 ;...
+69.58 -67.92 ;...
+69.4782 -67.6233 ;...
+69.376 -67.3294 ;...
+69.2732 -67.0383 ;...
+69.17 -66.75 ;...
+69.1285 -67.0844 ;...
+69.0863 -67.4176 ;...
+69.0435 -67.7494 ;...
+69 -68.08 ;...
+68.5 -68.08 ;...
+68.08 -66.75 ;...
+68.08 -65.17 ;...
+67.67 -64.25 ;...
+67.33 -63.17 ;...
+67 -62.17 ;...
+66.67 -61.42 ;...
+66.08 -62.08 ;...
+65.67 -62.33 ;...
+65.5 -63.5 ;...
+65 -63.83 ;...
+65.33 -65 ;...
+65.92 -65.5 ;...
+66.42 -67.17 ;...
+66.42 -67.17 ;...
+65.75 -67.42 ;...
+65.25 -66.83 ;...
+64.83 -65.75 ;...
+64.5 -65.08 ;...
+64 -65 ;...
+63.58 -64.25 ;...
+62.92 -64.5 ;...
+62.92 -65.75 ;...
+63.25 -66.83 ;...
+63.58 -67.75 ;...
+63.83 -68.92 ;...
+63.42 -68.5 ;...
+63.08 -67.75 ;...
+62.67 -66.92 ;...
+62.33 -66.17 ;...
+61.92 -66.17 ;...
+62 -67.17 ;...
+62.17 -68.08 ;...
+62.42 -69 ;...
+62.67 -69.33 ;...
+62.83 -70.33 ;...
+63 -71.08 ;...
+63.33 -71.92 ;...
+63.75 -71.92 ;...
+64 -72.75 ;...
+64.17 -73.67 ;...
+64.42 -74.67 ;...
+64.5 -75.75 ;...
+64.25 -76.5 ;...
+64.25 -78 ;...
+64.25 -78 ;...
+64.67 -78.58 ;...
+65.08 -78.25 ;...
+65.17 -77.67 ;...
+65.5 -77.5 ;...
+65.33 -76 ;...
+65.33 -74.67 ;...
+65.67 -73.67 ;...
+66.17 -74.58 ;...
+66.5 -73.75 ;...
+66.92 -73 ;...
+67.0028 -72.8342 ;...
+67.0854 -72.6673 ;...
+67.1678 -72.4992 ;...
+67.25 -72.33 ;...
+67.3551 -72.4139 ;...
+67.4601 -72.4985 ;...
+67.5651 -72.5839 ;...
+67.67 -72.67 ;...
+68.17 -73 ;...
+68.5 -74.25 ;...
+69 -75 ;...
+68.67 -76.17 ;...
+69.33 -75.83 ;...
+69.83 -77.5 ;...
+70.25 -78.08 ;...
+69.75 -79 ;...
+69.58 -79.83 ;...
+70 -81.33 ;...
+69.92 -82.33 ;...
+70.08 -84.33 ;...
+70.08 -85.75 ;...
+70.42 -87.33 ;...
+70.83 -88.25 ;...
+71.33 -89 ;...
+71.75 -90 ;...
+NaN NaN ;...
+73.75 -80.5 ;...
+73.83 -79.25 ;...
+73.78 -77.83 ;...
+73.58 -76.75 ;...
+73.17 -76.42 ;...
+72.87 -76.58 ;...
+72.98 -78.17 ;...
+72.83 -79.17 ;...
+72.98 -80.5 ;...
+73.42 -80.83 ;...
+73.75 -80.5 ;...
+NaN NaN ;...
+75 -96.58 ;...
+75.55 -95.67 ;...
+75.55 -94.5 ;...
+75.2 -93.75 ;...
+74.67 -93.75 ;...
+74.82 -95.33 ;...
+75 -96.58 ;...
+NaN NaN ;...
+77.03 -96.17 ;...
+76.92 -94.33 ;...
+76.65 -93 ;...
+76.65 -91.25 ;...
+76.37 -90.75 ;...
+76.3204 -90.4771 ;...
+76.2706 -90.2061 ;...
+76.2204 -89.9371 ;...
+76.17 -89.67 ;...
+76.1226 -89.7963 ;...
+76.0751 -89.9217 ;...
+76.0276 -90.0463 ;...
+75.98 -90.17 ;...
+75.9108 -89.8098 ;...
+75.841 -89.4531 ;...
+75.7708 -89.0999 ;...
+75.7 -88.75 ;...
+75.58 -86.75 ;...
+75.82 -84.83 ;...
+75.72 -83.08 ;...
+75.72 -81.58 ;...
+75.47 -79.83 ;...
+75.08 -79.83 ;...
+74.67 -80.42 ;...
+74.5 -82.17 ;...
+74.75 -83.67 ;...
+74.42 -84.75 ;...
+74.42 -86.5 ;...
+74.47 -88.17 ;...
+74.53 -90 ;...
+74.75 -92 ;...
+75.25 -92.17 ;...
+75.67 -91.83 ;...
+76.08 -92.17 ;...
+76.33 -93.25 ;...
+76.25 -95.08 ;...
+76.67 -96.25 ;...
+77.03 -96.17 ;...
+NaN NaN ;...
+80 -95 ;...
+80.45 -95 ;...
+80.8 -93.75 ;...
+81.25 -93.58 ;...
+81.25 -92 ;...
+80.8 -91.33 ;...
+80.5 -90.25 ;...
+80.42 -88 ;...
+80.3577 -87.7885 ;...
+80.2952 -87.5797 ;...
+80.2327 -87.3736 ;...
+80.17 -87.17 ;...
+80.0651 -87.2989 ;...
+79.9601 -87.4252 ;...
+79.8551 -87.5488 ;...
+79.75 -87.67 ;...
+79.7209 -87.2287 ;...
+79.6912 -86.79 ;...
+79.6609 -86.3537 ;...
+79.63 -85.92 ;...
+79.25 -85.92 ;...
+79 -87.25 ;...
+78.53 -88.08 ;...
+78.17 -89.25 ;...
+78.17 -92 ;...
+78.53 -93.33 ;...
+78.98 -93.67 ;...
+79.33 -93.17 ;...
+79.72 -93.83 ;...
+80 -95 ;...
+NaN NaN ;...
+81.5 -90.5 ;...
+81.92 -89 ;...
+81.92 -86.67 ;...
+81.92 -86.67 ;...
+82.13 -86.67 ;...
+82.33 -85 ;...
+82.58 -82.58 ;...
+82.92 -80.75 ;...
+83.05 -76.83 ;...
+82.98 -74.5 ;...
+83.08 -72.5 ;...
+83.08 -69.75 ;...
+82.92 -67.17 ;...
+82.8 -64.42 ;...
+82.55 -62.92 ;...
+82.42 -61.17 ;...
+82.2 -61.17 ;...
+81.95 -62.5 ;...
+81.67 -64.25 ;...
+81.42 -64.33 ;...
+80.95 -66.75 ;...
+80.58 -68.83 ;...
+80.2 -70 ;...
+79.72 -71.5 ;...
+79.5 -74 ;...
+79 -75 ;...
+78.5 -75 ;...
+78 -75.83 ;...
+77.92 -78 ;...
+77.58 -77.67 ;...
+77.25 -79.25 ;...
+76.83 -77.75 ;...
+76.42 -79 ;...
+76.17 -81 ;...
+76.17 -81 ;...
+76.5 -81.58 ;...
+76.33 -82.67 ;...
+76.42 -84 ;...
+76.25 -85.17 ;...
+76.33 -87.75 ;...
+76.42 -89.5 ;...
+76.83 -89.5 ;...
+77.13 -88.17 ;...
+77.1605 -87.8795 ;...
+77.1906 -87.5877 ;...
+77.2205 -87.2945 ;...
+77.25 -87 ;...
+77.2928 -87.2475 ;...
+77.3355 -87.4967 ;...
+77.3779 -87.7475 ;...
+77.42 -88 ;...
+77.83 -88 ;...
+77.8545 -87.3984 ;...
+77.8776 -86.7944 ;...
+77.8995 -86.1883 ;...
+77.92 -85.58 ;...
+77.9838 -86.0723 ;...
+78.0468 -86.5697 ;...
+78.1088 -87.0723 ;...
+78.1242 -87.1987 ;...
+78.1395 -87.3255 ;...
+78.1548 -87.4526 ;...
+78.17 -87.58 ;...
+78.2065 -87.4858 ;...
+78.243 -87.3909 ;...
+78.2794 -87.2955 ;...
+78.3158 -87.1995 ;...
+78.4611 -86.8096 ;...
+78.6058 -86.4099 ;...
+78.75 -86 ;...
+78.7806 -85.6478 ;...
+78.8108 -85.2938 ;...
+78.8406 -84.9378 ;...
+78.87 -84.58 ;...
+78.9651 -84.7237 ;...
+79.0601 -84.8699 ;...
+79.1551 -85.0187 ;...
+79.25 -85.17 ;...
+79.7 -85.17 ;...
+79.87 -86.67 ;...
+80.42 -85.83 ;...
+80.25 -83.67 ;...
+80.47 -82.5 ;...
+80.63 -79.58 ;...
+80.92 -77.67 ;...
+80.8 -80.67 ;...
+80.8 -83.5 ;...
+80.67 -85.5 ;...
+80.67 -88.25 ;...
+81 -90 ;...
+81.5 -90.5 ;...
+NaN NaN ;...
+79.9 -99.5 ;...
+80.17 -98.83 ;...
+79.75 -97.67 ;...
+79.9 -99.5 ;...
+NaN NaN ;...
+79.2 -106.33 ;...
+79.38 -105.67 ;...
+79.38 -104.25 ;...
+79.2 -103 ;...
+79.2 -101.42 ;...
+78.88 -100 ;...
+78.48 -100 ;...
+78.13 -99.58 ;...
+78.08 -98.58 ;...
+78.48 -98.17 ;...
+78.9 -98 ;...
+78.55 -95.83 ;...
+78.3 -95.42 ;...
+78 -95.83 ;...
+77.97 -97.17 ;...
+77.92 -98.83 ;...
+77.75 -100 ;...
+78.17 -100.83 ;...
+78.17 -102.17 ;...
+78.3 -104.17 ;...
+78.53 -105 ;...
+78.83 -104.17 ;...
+79 -105.92 ;...
+79.2 -106.33 ;...
+NaN NaN ;...
+77.67 -97 ;...
+77.83 -95 ;...
+77.8 -92.5 ;...
+77.57 -92.33 ;...
+77.35 -93.17 ;...
+77.47 -95.17 ;...
+77.67 -97 ;...
+NaN NaN ;...
+77.67 -105.67 ;...
+77.75 -104.75 ;...
+77.43 -104.58 ;...
+77.08 -104 ;...
+77.18 -105.33 ;...
+77.67 -105.67 ;...
+NaN NaN ;...
+76.58 -105 ;...
+76.63 -104 ;...
+76.37 -103 ;...
+76 -102 ;...
+76.42 -101.92 ;...
+76.7 -101.25 ;...
+76.67 -99.5 ;...
+76.38 -98 ;...
+76 -98 ;...
+75.58 -97.83 ;...
+75.07 -98.33 ;...
+75.07 -100.58 ;...
+75.63 -101.5 ;...
+75.42 -103 ;...
+75.83 -104 ;...
+76.17 -104.25 ;...
+76.58 -105 ;...
+NaN NaN ;...
+75.12 -104.75 ;...
+75.47 -104.25 ;...
+75.13 -103.58 ;...
+75.12 -104.75 ;...
+NaN NaN ;...
+72.92 -102.92 ;...
+73.07 -102 ;...
+73.03 -100.5 ;...
+73.5 -101.42 ;...
+73.83 -101.25 ;...
+74 -100.17 ;...
+73.92 -98.83 ;...
+74.13 -97.75 ;...
+74.0052 -97.5787 ;...
+73.8803 -97.4099 ;...
+73.7552 -97.2437 ;...
+73.63 -97.08 ;...
+73.5155 -97.3351 ;...
+73.4006 -97.5867 ;...
+73.2854 -97.835 ;...
+73.17 -98.08 ;...
+73.1234 -97.7246 ;...
+73.0762 -97.3712 ;...
+73.0284 -97.0196 ;...
+72.98 -96.67 ;...
+72.42 -96.25 ;...
+71.83 -96.42 ;...
+71.67 -97.83 ;...
+71.33 -99 ;...
+71.83 -99.92 ;...
+72.25 -100.92 ;...
+72.25 -102 ;...
+72.63 -102.33 ;...
+72.92 -102.92 ;...
+NaN NaN ;...
+78.25 -113.75 ;...
+78.5 -113 ;...
+78.58 -110.75 ;...
+78.38 -108.92 ;...
+78.2 -109.58 ;...
+78.17 -111 ;...
+78.3 -112 ;...
+78.25 -113.75 ;...
+NaN NaN ;...
+77.92 -115.5 ;...
+78.08 -114.25 ;...
+77.75 -114.08 ;...
+77.7 -114.83 ;...
+77.92 -115.5 ;...
+NaN NaN ;...
+77.75 -113.58 ;...
+77.87 -112.25 ;...
+78.02 -111.08 ;...
+78.0229 -110.81 ;...
+78.0255 -110.54 ;...
+78.0279 -110.27 ;...
+78.03 -110 ;...
+77.9175 -110.044 ;...
+77.805 -110.087 ;...
+77.6925 -110.129 ;...
+77.58 -110.17 ;...
+77.33 -111.75 ;...
+77.42 -113.25 ;...
+77.75 -113.58 ;...
+NaN NaN ;...
+75.58 -119.5 ;...
+75.9 -118.92 ;...
+76.13 -117.75 ;...
+75.75 -118.08 ;...
+75.48 -118.5 ;...
+75.58 -119.5 ;...
+NaN NaN ;...
+76.25 -124.17 ;...
+76.5 -122.75 ;...
+76.88 -121.67 ;...
+77.15 -120.5 ;...
+77.33 -119.33 ;...
+77.3 -117.67 ;...
+77.58 -116.75 ;...
+77.33 -115.5 ;...
+77.08 -116.58 ;...
+76.72 -116.17 ;...
+76.3 -117.5 ;...
+76.5 -118.92 ;...
+76.17 -119.5 ;...
+75.83 -120.58 ;...
+75.92 -121.92 ;...
+75.87 -123.08 ;...
+76.25 -124.17 ;...
+NaN NaN ;...
+75.25 -117.75 ;...
+75.67 -117.17 ;...
+75.67 -117.17 ;...
+76.13 -116.42 ;...
+76.47 -115.75 ;...
+76.42 -114.33 ;...
+76.17 -112.75 ;...
+75.92 -112 ;...
+75.57 -111.42 ;...
+75.5541 -110.918 ;...
+75.5371 -110.418 ;...
+75.5191 -109.918 ;...
+75.5 -109.42 ;...
+75.5827 -109.582 ;...
+75.6652 -109.746 ;...
+75.7477 -109.912 ;...
+75.83 -110.08 ;...
+75.8975 -110.018 ;...
+75.965 -109.956 ;...
+76.0325 -109.893 ;...
+76.1 -109.83 ;...
+76.1378 -110.058 ;...
+76.1754 -110.288 ;...
+76.2128 -110.518 ;...
+76.25 -110.75 ;...
+76.3327 -110.566 ;...
+76.4153 -110.379 ;...
+76.4977 -110.191 ;...
+76.58 -110 ;...
+76.8 -109.17 ;...
+76.33 -108.58 ;...
+76.02 -107 ;...
+75.87 -105.67 ;...
+75.47 -106 ;...
+75.03 -106.17 ;...
+74.95 -107.42 ;...
+75 -109.5 ;...
+74.8 -110.67 ;...
+74.53 -111.67 ;...
+74.42 -112.75 ;...
+74.5 -114 ;...
+74.72 -114.5 ;...
+74.92 -113.25 ;...
+75.25 -114.25 ;...
+74.97 -115.25 ;...
+75.13 -116.33 ;...
+75.25 -117.75 ;...
+NaN NaN ;...
+71.6 -119 ;...
+72.03 -118.83 ;...
+72.3 -118 ;...
+72.58 -118 ;...
+72.83 -117 ;...
+73.02 -115.75 ;...
+73.3 -114.83 ;...
+73.3 -113.67 ;...
+72.72 -113.25 ;...
+73.08 -111.92 ;...
+72.85 -110.83 ;...
+73 -109.58 ;...
+72.67 -108 ;...
+73.17 -107.42 ;...
+73.67 -106.58 ;...
+73.7 -105 ;...
+73.42 -104.17 ;...
+73.05 -104.67 ;...
+72.58 -105.5 ;...
+72.17 -105.17 ;...
+71.63 -104.58 ;...
+71.63 -104.58 ;...
+71.05 -104.75 ;...
+70.67 -103.75 ;...
+70.4 -102.33 ;...
+70.22 -100.67 ;...
+69.75 -100.83 ;...
+69.67 -102 ;...
+69.3 -101.5 ;...
+69 -102.58 ;...
+68.87 -103.83 ;...
+69.15 -105.08 ;...
+69.5 -106 ;...
+69.17 -107.08 ;...
+69 -108.42 ;...
+68.75 -110 ;...
+68.65 -111.67 ;...
+68.58 -113.08 ;...
+69.25 -113.75 ;...
+69.25 -115.17 ;...
+69.5 -116.42 ;...
+70.12 -116.75 ;...
+70.17 -115.5 ;...
+70.17 -114 ;...
+70.42 -112.67 ;...
+70.7 -114 ;...
+70.67 -115.42 ;...
+70.75 -117.08 ;...
+71.03 -118.08 ;...
+71.37 -117.75 ;...
+71.6 -119 ;...
+NaN NaN ;...
+72.08 -125.25 ;...
+72.5 -124.67 ;...
+72.98 -124 ;...
+73.5 -123.75 ;...
+74.08 -124.42 ;...
+74.25 -122.67 ;...
+74.5 -121.17 ;...
+74.25 -119.42 ;...
+74.25 -117.58 ;...
+73.83 -116.58 ;...
+73.5 -115.08 ;...
+73.2 -116.5 ;...
+72.92 -117.83 ;...
+72.58 -119.25 ;...
+71.92 -119.67 ;...
+71.42 -120.58 ;...
+71.33 -121.75 ;...
+71.08 -123.08 ;...
+71.67 -123.83 ;...
+72.08 -125.25 ;...
+NaN NaN ;...
+55.3371 165.686 ;...
+55.372 166.229 ;...
+55.2209 166.175 ;...
+54.8975 166.649 ;...
+54.719 166.614 ;...
+54.748 166.475 ;...
+54.8704 166.443 ;...
+54.8618 166.298 ;...
+55.099 165.993 ;...
+55.1461 166.023 ;...
+55.3371 165.686 ;...
+NaN NaN ;...
+52.92 172.5 ;...
+53 172.83 ;...
+52.83 173.33 ;...
+52.75 172.92 ;...
+52.92 172.5 ;...
+NaN NaN ;...
+51.7133 -177.919 ;...
+51.7604 -178.231 ;...
+51.8868 -178.301 ;...
+51.9132 -178.178 ;...
+51.8661 -177.907 ;...
+51.7469 -177.804 ;...
+51.7133 -177.919 ;...
+NaN NaN ;...
+51.67 -176.92 ;...
+51.92 -176.75 ;...
+51.75 -176.33 ;...
+51.67 -176.92 ;...
+NaN NaN ;...
+52.0723 -174.186 ;...
+52.0907 -174.38 ;...
+52.2028 -174.547 ;...
+52.2718 -174.302 ;...
+52.4185 -174.348 ;...
+52.1743 -173.984 ;...
+52.0723 -174.186 ;...
+NaN NaN ;...
+52.75 -169.17 ;...
+53.5 -168.5 ;...
+53.58 -168 ;...
+53.33 -168 ;...
+53.17 -168.33 ;...
+52.75 -169.17 ;...
+NaN NaN ;...
+53.33 -167.67 ;...
+53.67 -167.17 ;...
+54 -167.17 ;...
+54 -166.42 ;...
+53.7 -166.42 ;...
+53.5 -167 ;...
+53.33 -167.67 ;...
+NaN NaN ;...
+63.67 -171.75 ;...
+63.67 -170.5 ;...
+63.42 -169.83 ;...
+63.33 -168.83 ;...
+63.08 -169.83 ;...
+63.42 -170.75 ;...
+63.33 -171.75 ;...
+63.67 -171.75 ;...
+NaN NaN ;...
+60.17 -167.42 ;...
+60.25 -166.75 ;...
+60.33 -166.08 ;...
+60.25 -165.5 ;...
+60 -165.5 ;...
+59.83 -166.17 ;...
+59.92 -166.83 ;...
+60.17 -167.42 ;...
+NaN NaN ;...
+57.25 -154.83 ;...
+57.75 -153.92 ;...
+58.08 -153.25 ;...
+58.42 -152.5 ;...
+58.17 -152.08 ;...
+58.1081 -152.311 ;...
+58.0458 -152.542 ;...
+57.9831 -152.771 ;...
+57.92 -153 ;...
+57.8977 -152.875 ;...
+57.8752 -152.75 ;...
+57.8527 -152.625 ;...
+57.83 -152.5 ;...
+57.5 -152.25 ;...
+57.33 -153.08 ;...
+57 -153.42 ;...
+56.75 -154.08 ;...
+57.25 -154.83 ;...
+NaN NaN ;...
+54.17 -133.08 ;...
+54.08 -132.33 ;...
+54.08 -131.67 ;...
+53.58 -132 ;...
+53.08 -131.67 ;...
+52.75 -131.83 ;...
+52.5 -131.33 ;...
+52 -131 ;...
+52.42 -131.83 ;...
+52.83 -132.25 ;...
+53.33 -132.5 ;...
+53.58 -133 ;...
+54.17 -133.08 ;...
+NaN NaN ;...
+50.67 -128.33 ;...
+50.83 -127.92 ;...
+50.58 -127.17 ;...
+50.42 -126.25 ;...
+50.25 -125.5 ;...
+49.75 -125 ;...
+49.33 -124.42 ;...
+48.92 -123.67 ;...
+48.5 -123.17 ;...
+48.33 -123.67 ;...
+48.5 -124.25 ;...
+48.75 -125 ;...
+49 -125 ;...
+49 -125.5 ;...
+49.25 -125.92 ;...
+49.42 -126.5 ;...
+49.67 -126.42 ;...
+49.92 -127.08 ;...
+50.17 -127.75 ;...
+50.67 -128.33 ;...
+NaN NaN ;...
+78.17 -73 ;...
+78.58 -72.33 ;...
+78.75 -70.33 ;...
+79.02 -68.67 ;...
+79.2 -65.67 ;...
+79.75 -64.5 ;...
+80.08 -65 ;...
+80.08 -65 ;...
+80.082 -65.6674 ;...
+80.0826 -66.335 ;...
+80.082 -67.0026 ;...
+80.08 -67.67 ;...
+80.1927 -67.4478 ;...
+80.3053 -67.2206 ;...
+80.4177 -66.988 ;...
+80.53 -66.75 ;...
+80.92 -65 ;...
+81.18 -63.75 ;...
+81.13 -61.83 ;...
+81.42 -61.25 ;...
+81.75 -62 ;...
+82.08 -59.33 ;...
+82.33 -54.5 ;...
+82 -51.25 ;...
+82.47 -50.5 ;...
+82.42 -47.33 ;...
+82.83 -46.5 ;...
+83.2 -44 ;...
+83.42 -39.5 ;...
+83.65 -36 ;...
+83.58 -31.5 ;...
+83.55 -27.33 ;...
+83.25 -24.83 ;...
+82.98 -24 ;...
+82.85 -21.67 ;...
+82.7806 -21.2404 ;...
+82.7108 -20.819 ;...
+82.6406 -20.4056 ;...
+82.57 -20 ;...
+82.5085 -20.5559 ;...
+82.4463 -21.1028 ;...
+82.3835 -21.6408 ;...
+82.32 -22.17 ;...
+82.22 -25.58 ;...
+82.2291 -26.2455 ;...
+82.2371 -26.9124 ;...
+82.2441 -27.5807 ;...
+82.25 -28.25 ;...
+82.2056 -28.6518 ;...
+82.1607 -29.049 ;...
+82.1155 -29.4417 ;...
+82.07 -29.83 ;...
+82.0745 -28.7054 ;...
+82.076 -27.58 ;...
+82.0745 -26.4546 ;...
+82.07 -25.33 ;...
+81.9725 -25.33 ;...
+81.875 -25.33 ;...
+81.7775 -25.33 ;...
+81.68 -25.33 ;...
+81.75 -23.67 ;...
+82.03 -23.67 ;...
+82.03 -23.67 ;...
+82.08 -21.67 ;...
+81.8 -21.33 ;...
+81.63 -22 ;...
+81.37 -23.67 ;...
+80.92 -24.83 ;...
+81.08 -22.5 ;...
+81.32 -20.75 ;...
+81.58 -19.5 ;...
+81.48 -18.17 ;...
+81.8 -16.42 ;...
+81.68 -13.25 ;...
+81.5906 -12.8424 ;...
+81.5008 -12.4434 ;...
+81.4106 -12.0527 ;...
+81.32 -11.67 ;...
+81.1793 -12.3669 ;...
+81.0374 -13.0419 ;...
+80.8943 -13.696 ;...
+80.75 -14.33 ;...
+80.42 -15.83 ;...
+79.97 -17.17 ;...
+79.53 -18.08 ;...
+79.13 -18.5 ;...
+78.83 -19.5 ;...
+78.42 -19.17 ;...
+77.92 -19.67 ;...
+77.58 -18.83 ;...
+77.08 -18.17 ;...
+76.75 -18.42 ;...
+76.92 -20.33 ;...
+76.67 -21.42 ;...
+76.3 -21.5 ;...
+76.2 -20 ;...
+75.7 -19.42 ;...
+75.2 -19.42 ;...
+74.67 -20.08 ;...
+74.67 -20.08 ;...
+74.67 -18.83 ;...
+74.25 -19.25 ;...
+74 -21.5 ;...
+73.83 -20.33 ;...
+73.47 -20.33 ;...
+73.42 -21.58 ;...
+73.25 -22.17 ;...
+73.2003 -22.3793 ;...
+73.1504 -22.5874 ;...
+73.1003 -22.7943 ;...
+73.05 -23 ;...
+73.018 -22.7486 ;...
+72.9856 -22.4981 ;...
+72.953 -22.2486 ;...
+72.92 -22 ;...
+72.42 -21.75 ;...
+72.08 -22 ;...
+72.3 -23.33 ;...
+72.5 -24.58 ;...
+72.17 -23.67 ;...
+71.83 -22.58 ;...
+71.42 -21.75 ;...
+71 -21.75 ;...
+70.5 -21.83 ;...
+70.42 -23.08 ;...
+70.58 -24 ;...
+71 -24.25 ;...
+71.33 -24.5 ;...
+71.17 -25.5 ;...
+70.67 -25.25 ;...
+70.42 -26.33 ;...
+70.17 -26.33 ;...
+70.42 -25.08 ;...
+70.17 -23.75 ;...
+70.1483 -23.4365 ;...
+70.1261 -23.1236 ;...
+70.1033 -22.8115 ;...
+70.08 -22.5 ;...
+69.9977 -22.6695 ;...
+69.9153 -22.8376 ;...
+69.8327 -23.0045 ;...
+69.75 -23.17 ;...
+69.75 -23.17 ;...
+69.42 -24.25 ;...
+69.08 -25.25 ;...
+68.83 -26.25 ;...
+68.58 -27.5 ;...
+68.42 -28.75 ;...
+68.17 -30 ;...
+68.17 -31.33 ;...
+67.92 -32.17 ;...
+67.5 -33 ;...
+67.08 -33.42 ;...
+66.67 -33.92 ;...
+66.33 -34.75 ;...
+66 -35.67 ;...
+65.67 -37 ;...
+65.67 -38.5 ;...
+65.5 -39.67 ;...
+65.08 -40 ;...
+65.17 -41 ;...
+64.5 -40.42 ;...
+64 -40.5 ;...
+63.5 -40.75 ;...
+63 -41.5 ;...
+62.67 -42.42 ;...
+62 -42 ;...
+61.5 -42.5 ;...
+61 -42.75 ;...
+60.5 -42.83 ;...
+60 -43.25 ;...
+59.83 -43.92 ;...
+60.17 -45.17 ;...
+60.17 -45.17 ;...
+60.58 -45.75 ;...
+60.75 -46.67 ;...
+60.83 -48 ;...
+61.42 -49 ;...
+61.92 -49.5 ;...
+62.5 -50.08 ;...
+62.83 -50.33 ;...
+63.58 -51.25 ;...
+64 -51.33 ;...
+64.33 -52 ;...
+64.92 -52 ;...
+65.5 -52.42 ;...
+66 -53.5 ;...
+66.5 -53.5 ;...
+67 -53.75 ;...
+67.58 -53.67 ;...
+68.17 -53.33 ;...
+68.58 -52.58 ;...
+68.58 -51 ;...
+69.33 -50.75 ;...
+69.92 -51.25 ;...
+69.47 -52.17 ;...
+69.3 -53.67 ;...
+69.67 -54.83 ;...
+70.25 -54.58 ;...
+70.83 -54.25 ;...
+70.8 -52.83 ;...
+70.5 -51.25 ;...
+71 -51.58 ;...
+71.17 -52.75 ;...
+71.17 -52.75 ;...
+71.75 -53.33 ;...
+71.42 -54 ;...
+71.42 -55.25 ;...
+71.68 -55.75 ;...
+72.17 -55.33 ;...
+72.58 -55.83 ;...
+73.17 -55.5 ;...
+73.58 -55.67 ;...
+74 -56.5 ;...
+74.5 -56.5 ;...
+74.97 -57.5 ;...
+75.32 -58.33 ;...
+75.67 -58.33 ;...
+75.82 -60 ;...
+76.17 -61.67 ;...
+76.17 -63.42 ;...
+76.13 -65.33 ;...
+75.92 -66.58 ;...
+76.13 -68.5 ;...
+76.38 -69.5 ;...
+76.6 -68.75 ;...
+76.8 -70.25 ;...
+77.02 -71.17 ;...
+77.25 -70 ;...
+77.35 -68.42 ;...
+77.58 -70 ;...
+77.92 -70.33 ;...
+77.87 -71.67 ;...
+78.17 -73 ;...
+NaN NaN ;...
+65.5 -24.33 ;...
+65.83 -23.75 ;...
+66.17 -23.67 ;...
+66.17 -23 ;...
+66.42 -23 ;...
+66.33 -22.25 ;...
+66 -21.5 ;...
+65.42 -21.42 ;...
+65.42 -21.42 ;...
+65.58 -20.33 ;...
+66.08 -20.25 ;...
+65.83 -19.67 ;...
+66.08 -19.25 ;...
+66.17 -18.25 ;...
+66 -17.58 ;...
+66.17 -16.83 ;...
+66.5 -16.25 ;...
+66.25 -15.67 ;...
+66.33 -14.75 ;...
+65.75 -14.67 ;...
+65.5 -13.67 ;...
+64.92 -13.67 ;...
+64.42 -14.5 ;...
+64.17 -15.83 ;...
+63.83 -16.75 ;...
+63.75 -17.67 ;...
+63.42 -18.75 ;...
+63.58 -20 ;...
+63.83 -21 ;...
+63.832 -21.4375 ;...
+63.8326 -21.875 ;...
+63.832 -22.3125 ;...
+63.83 -22.75 ;...
+63.9354 -22.5646 ;...
+64.0405 -22.3778 ;...
+64.1454 -22.1896 ;...
+64.25 -22 ;...
+64.3752 -22.143 ;...
+64.5003 -22.2873 ;...
+64.6252 -22.433 ;...
+64.75 -22.58 ;...
+64.75 -24 ;...
+65.08 -22.83 ;...
+65.1653 -22.6443 ;...
+65.2505 -22.4574 ;...
+65.3354 -22.2693 ;...
+65.42 -22.08 ;...
+65.4603 -22.2467 ;...
+65.5004 -22.414 ;...
+65.5403 -22.5817 ;...
+65.58 -22.75 ;...
+65.42 -23.58 ;...
+65.5 -24.33 ;...
+NaN NaN ;...
+70.8948 -9.05404 ;...
+71.0174 -8.50616 ;...
+71.1505 -8.30805 ;...
+71.1521 -7.9249 ;...
+70.9907 -8.005 ;...
+70.9223 -8.25562 ;...
+70.9071 -8.60836 ;...
+70.8065 -9.04743 ;...
+70.8948 -9.05404 ;...
+NaN NaN ;...
+75.4 -18.83 ;...
+75.05 -17.92 ;...
+75 -18.83 ;...
+75.4 -18.83 ;...
+NaN NaN ;...
+0 9.33 ;...
+0.5 9.33 ;...
+0.92 9.58 ;...
+1.08 9.25 ;...
+1.5 9.5 ;...
+1.92 9.67 ;...
+2.5 9.75 ;...
+3.08 9.92 ;...
+3.5 9.58 ;...
+3.92 9.33 ;...
+4 8.92 ;...
+4.5 8.83 ;...
+4.5 8.42 ;...
+4.42 8 ;...
+4.42 7.5 ;...
+4.33 7 ;...
+4.25 6.5 ;...
+4.25 6 ;...
+4.58 5.42 ;...
+5.25 5.25 ;...
+5.92 5 ;...
+6.33 4.5 ;...
+6.5 4 ;...
+6.5 3.42 ;...
+6.42 2.83 ;...
+6.42 2.33 ;...
+6.33 1.83 ;...
+6.33 1.83 ;...
+6.17 1.25 ;...
+5.83 1 ;...
+5.83 0.33 ;...
+5.5 -0.25 ;...
+5.25 -0.67 ;...
+5.17 -1.08 ;...
+5 -1.58 ;...
+4.75 -2 ;...
+5 -2.58 ;...
+5.08 -3.08 ;...
+5.25 -3.83 ;...
+5.25 -4.33 ;...
+5.17 -4.75 ;...
+5.08 -5.33 ;...
+5 -5.92 ;...
+4.67 -6.33 ;...
+4.58 -6.92 ;...
+4.25 -7.42 ;...
+4.33 -7.83 ;...
+4.5 -8.33 ;...
+4.92 -8.92 ;...
+5.25 -9.42 ;...
+5.58 -9.83 ;...
+6.08 -10.33 ;...
+6.42 -11 ;...
+6.83 -11.42 ;...
+7.08 -11.92 ;...
+7.33 -12.42 ;...
+7.83 -12.92 ;...
+8.25 -13.08 ;...
+8.25 -13.08 ;...
+8.67 -13.17 ;...
+9.17 -13.25 ;...
+9.58 -13.58 ;...
+10 -14 ;...
+10.25 -14.42 ;...
+10.67 -14.67 ;...
+11.08 -15 ;...
+11.25 -15.42 ;...
+11.92 -15.5 ;...
+11.83 -15.92 ;...
+12.08 -16.33 ;...
+12.33 -16.75 ;...
+12.92 -16.75 ;...
+13.42 -16.67 ;...
+14 -16.75 ;...
+14.5 -17 ;...
+14.75 -17.42 ;...
+15 -17 ;...
+15.42 -16.75 ;...
+15.83 -16.42 ;...
+16.5 -16.42 ;...
+17 -16.25 ;...
+17.5 -16.08 ;...
+18 -16 ;...
+18.5 -16 ;...
+19 -16.17 ;...
+19.5 -16.5 ;...
+19.83 -16.17 ;...
+20.33 -16.17 ;...
+20.75 -16.58 ;...
+20.75 -16.58 ;...
+21.08 -17 ;...
+21.58 -16.92 ;...
+22.08 -16.83 ;...
+22.33 -16.5 ;...
+22.75 -16.25 ;...
+23.42 -16 ;...
+23.83 -15.75 ;...
+24.25 -15.42 ;...
+24.67 -15 ;...
+25.25 -14.75 ;...
+25.67 -14.58 ;...
+26.17 -14.42 ;...
+26.42 -14.17 ;...
+26.67 -13.67 ;...
+27 -13.42 ;...
+27.5 -13.25 ;...
+27.92 -12.92 ;...
+28 -12.17 ;...
+28.25 -11.5 ;...
+28.67 -11.17 ;...
+28.92 -10.58 ;...
+29.33 -10.17 ;...
+29.75 -9.83 ;...
+30.33 -9.58 ;...
+30.67 -9.83 ;...
+31.5 -9.83 ;...
+31.75 -9.5 ;...
+32.17 -9.25 ;...
+32.5 -9.25 ;...
+32.83 -8.83 ;...
+32.83 -8.83 ;...
+33.25 -8.5 ;...
+33.5 -8 ;...
+33.67 -7.42 ;...
+34 -6.83 ;...
+34.42 -6.58 ;...
+34.83 -6.33 ;...
+35.25 -6.17 ;...
+35.75 -5.92 ;...
+35.83 -5.42 ;...
+35.5 -5.17 ;...
+35.17 -4.5 ;...
+35.25 -4.08 ;...
+35.25 -3.42 ;...
+35.33 -3 ;...
+35.08 -2.42 ;...
+35.17 -1.92 ;...
+35.42 -1.25 ;...
+35.75 -1 ;...
+35.83 -0.5 ;...
+35.92 0 ;...
+36.25 0.5 ;...
+36.5 1 ;...
+36.58 1.75 ;...
+36.67 2.42 ;...
+36.83 2.92 ;...
+36.83 3.42 ;...
+36.92 3.83 ;...
+36.92 4.42 ;...
+36.83 5 ;...
+36.67 5.33 ;...
+36.67 5.33 ;...
+36.75 5.83 ;...
+37 6.25 ;...
+36.83 7 ;...
+37 7.42 ;...
+36.83 8.17 ;...
+36.92 8.67 ;...
+37.17 9.08 ;...
+37.25 9.58 ;...
+37.17 10.08 ;...
+36.67 10.33 ;...
+36.92 11 ;...
+36.5 10.75 ;...
+36.33 10.42 ;...
+35.75 10.58 ;...
+35.58 10.92 ;...
+35.17 11 ;...
+34.75 10.75 ;...
+34.42 10.33 ;...
+34.17 10 ;...
+33.75 10.08 ;...
+33.58 10.5 ;...
+33.67 10.92 ;...
+33.25 11.08 ;...
+33 11.67 ;...
+32.83 12.17 ;...
+32.83 12.83 ;...
+32.75 13.58 ;...
+32.67 14.17 ;...
+32.42 14.75 ;...
+32.25 15.33 ;...
+32.25 15.33 ;...
+31.75 15.33 ;...
+31.5 15.58 ;...
+31.25 16.08 ;...
+31.17 16.67 ;...
+31 17.5 ;...
+30.67 18.17 ;...
+30.33 18.67 ;...
+30.25 19.17 ;...
+30.42 19.58 ;...
+30.67 19.92 ;...
+31.08 20.08 ;...
+31.5 20 ;...
+31.5825 19.9576 ;...
+31.665 19.9152 ;...
+31.7475 19.8726 ;...
+31.83 19.83 ;...
+31.915 19.8923 ;...
+32.0001 19.9548 ;...
+32.085 20.0173 ;...
+32.17 20.08 ;...
+32.58 20.67 ;...
+32.75 21.25 ;...
+32.83 21.83 ;...
+32.75 22.5 ;...
+32.58 23.08 ;...
+32.17 23.17 ;...
+32.08 23.75 ;...
+31.92 24.33 ;...
+31.92 24.92 ;...
+31.5 25.17 ;...
+31.58 25.75 ;...
+31.5 26.33 ;...
+31.42 26.92 ;...
+31.25 27.33 ;...
+31.08 27.83 ;...
+31.08 28.42 ;...
+31.08 28.42 ;...
+30.83 29 ;...
+30.92 29.5 ;...
+31.17 30 ;...
+31.42 30.58 ;...
+31.5 31.17 ;...
+31.42 31.83 ;...
+31.08 31.75 ;...
+30.92 32.15 ;...
+30.6901 32.2532 ;...
+30.4602 32.356 ;...
+30.2301 32.4582 ;...
+30 32.56 ;...
+29.9575 32.5174 ;...
+29.9151 32.4549 ;...
+29.8725 32.3924 ;...
+29.83 32.33 ;...
+29.7275 32.3927 ;...
+29.6251 32.4553 ;...
+29.5225 32.5177 ;...
+29.42 32.58 ;...
+29 32.67 ;...
+28.58 32.92 ;...
+28.17 33.25 ;...
+27.83 33.58 ;...
+27.42 33.67 ;...
+27.08 33.92 ;...
+26.67 34 ;...
+26.17 34.33 ;...
+25.75 34.5 ;...
+25.25 34.75 ;...
+24.83 35 ;...
+24.33 35.25 ;...
+24 35.58 ;...
+23.58 35.5 ;...
+23.25 35.58 ;...
+22.75 35.83 ;...
+22.5 36.17 ;...
+22.25 36.58 ;...
+22.08 36.92 ;...
+21.5 36.92 ;...
+21.08 37.25 ;...
+20.75 37.25 ;...
+20.25 37.17 ;...
+19.67 37.25 ;...
+19.25 37.33 ;...
+18.67 37.58 ;...
+18.42 38.08 ;...
+18.42 38.08 ;...
+18 38.58 ;...
+17.58 38.83 ;...
+17.08 39.08 ;...
+16.5 39.17 ;...
+16 39.25 ;...
+15.58 39.5 ;...
+15.5 39.83 ;...
+15 40.08 ;...
+14.75 40.67 ;...
+14.58 41.17 ;...
+14.08 41.58 ;...
+13.67 42.08 ;...
+13.25 42.42 ;...
+12.83 42.83 ;...
+12.42 43.25 ;...
+11.92 43.42 ;...
+11.67 42.92 ;...
+11.42 43.25 ;...
+11.08 43.58 ;...
+10.67 43.92 ;...
+10.42 44.25 ;...
+10.33 44.75 ;...
+10.5 45.25 ;...
+10.75 45.75 ;...
+10.67 46.33 ;...
+10.75 46.83 ;...
+11.08 47.42 ;...
+11.08 48 ;...
+11.25 48.5 ;...
+11.17 49 ;...
+11.17 49 ;...
+11.33 49.58 ;...
+11.5 50.17 ;...
+11.92 50.58 ;...
+11.75 51.17 ;...
+11 51.08 ;...
+10.42 51 ;...
+10 50.75 ;...
+9.42 50.75 ;...
+8.92 50.42 ;...
+8.5 50.17 ;...
+8.17 49.92 ;...
+7.67 49.75 ;...
+7.25 49.5 ;...
+6.75 49.25 ;...
+6.33 49.08 ;...
+5.75 48.92 ;...
+5.42 48.5 ;...
+5.08 48.17 ;...
+4.58 47.92 ;...
+4.17 47.67 ;...
+3.75 47.25 ;...
+3.42 46.92 ;...
+3 46.5 ;...
+2.58 46.17 ;...
+2.25 45.75 ;...
+1.92 45.33 ;...
+1.75 44.83 ;...
+1.42 44.42 ;...
+1 44 ;...
+0.75 43.58 ;...
+0.75 43.58 ;...
+0.42 43.17 ;...
+0 42.92 ;...
+-0.42 42.42 ;...
+-0.92 42.08 ;...
+-1.25 41.75 ;...
+-1.75 41.5 ;...
+-2.08 41.08 ;...
+-2.5 40.67 ;...
+-2.42 40.25 ;...
+-3 40.25 ;...
+-3.58 39.92 ;...
+-4.17 39.58 ;...
+-4.58 39.33 ;...
+-5.08 39.08 ;...
+-5.58 38.92 ;...
+-6.08 38.75 ;...
+-6.58 39.17 ;...
+-7.08 39.58 ;...
+-7.58 39.33 ;...
+-8.17 39.33 ;...
+-8.83 39.42 ;...
+-9.42 39.67 ;...
+-9.92 39.83 ;...
+-10.17 40.17 ;...
+-10.5 40.5 ;...
+-11 40.5 ;...
+-12.5 40.42 ;...
+-12 40.5 ;...
+-12.42 40.5 ;...
+-13 40.42 ;...
+-13 40.42 ;...
+-13.58 40.58 ;...
+-14.08 40.58 ;...
+-14.67 40.75 ;...
+-15.17 40.67 ;...
+-15.58 40.42 ;...
+-16 40.08 ;...
+-16.33 39.75 ;...
+-16.75 39.25 ;...
+-17.08 38.92 ;...
+-17.17 38.25 ;...
+-17.33 37.83 ;...
+-17.5 37.33 ;...
+-17.92 37 ;...
+-18.33 36.67 ;...
+-18.83 36.25 ;...
+-19 35.83 ;...
+-19.42 35.5 ;...
+-19.67 35.17 ;...
+-20 34.75 ;...
+-20.5 34.67 ;...
+-20.83 35 ;...
+-21.42 35.17 ;...
+-22.08 35.33 ;...
+-22.5 35.5 ;...
+-23.08 35.5 ;...
+-23.5 35.42 ;...
+-24 35.5 ;...
+-24.5 35.25 ;...
+-24.75 34.92 ;...
+-24.92 34.42 ;...
+-24.92 34.42 ;...
+-25.17 33.75 ;...
+-25.33 33.42 ;...
+-25.5 32.92 ;...
+-26.08 32.58 ;...
+-26.25 32.92 ;...
+-26.58 32.92 ;...
+-27 32.92 ;...
+-27.5 32.75 ;...
+-28.08 32.58 ;...
+-28.58 32.42 ;...
+-28.83 32 ;...
+-29.17 31.5 ;...
+-29.58 31.25 ;...
+-30 30.92 ;...
+-30.5 30.67 ;...
+-30.92 30.42 ;...
+-31.33 30 ;...
+-31.67 29.58 ;...
+-32 29.25 ;...
+-32.42 28.83 ;...
+-32.75 28.5 ;...
+-33 28.08 ;...
+-33.33 27.5 ;...
+-33.67 27.08 ;...
+-33.75 26.58 ;...
+-33.75 26 ;...
+-34 25.75 ;...
+-34 25.08 ;...
+-34.25 24.75 ;...
+-34.17 24.25 ;...
+-34.17 24.25 ;...
+-34 23.67 ;...
+-34.17 23.25 ;...
+-34.08 22.67 ;...
+-34.17 22.08 ;...
+-34.42 21.75 ;...
+-34.42 21.08 ;...
+-34.5 20.5 ;...
+-34.75 20.17 ;...
+-34.75 19.58 ;...
+-34.42 19.17 ;...
+-34.08 18.75 ;...
+-34.25 18.42 ;...
+-33.83 18.42 ;...
+-33.42 18.25 ;...
+-32.83 17.83 ;...
+-32.83 18.08 ;...
+-32.58 18.33 ;...
+-32 18.25 ;...
+-31.42 17.92 ;...
+-31 17.58 ;...
+-30.58 17.33 ;...
+-30 17.17 ;...
+-29.58 16.92 ;...
+-29 16.75 ;...
+-28.58 16.42 ;...
+-28.25 15.92 ;...
+-27.83 15.67 ;...
+-27.5 15.33 ;...
+-27 15.25 ;...
+-26.42 15.08 ;...
+-26.42 15.08 ;...
+-25.92 14.92 ;...
+-25.5 14.83 ;...
+-25 14.83 ;...
+-24.42 14.58 ;...
+-24 14.5 ;...
+-23.5 14.5 ;...
+-22.92 14.42 ;...
+-22.5 14.5 ;...
+-22.08 14.33 ;...
+-21.67 13.92 ;...
+-21.25 13.75 ;...
+-20.83 13.42 ;...
+-20.25 13.25 ;...
+-19.75 12.92 ;...
+-19.25 12.67 ;...
+-18.83 12.42 ;...
+-18.5 12.08 ;...
+-17.92 11.83 ;...
+-17.42 11.75 ;...
+-17 11.75 ;...
+-16.5 11.83 ;...
+-16 11.83 ;...
+-15.5 12.08 ;...
+-15 12.17 ;...
+-14.5 12.33 ;...
+-13.92 12.5 ;...
+-13.33 12.67 ;...
+-12.92 13 ;...
+-12.67 13.42 ;...
+-12.25 13.67 ;...
+-12.25 13.67 ;...
+-11.83 13.83 ;...
+-11.25 13.92 ;...
+-10.67 13.83 ;...
+-10.33 13.58 ;...
+-9.92 13.33 ;...
+-9.42 13.17 ;...
+-9.17 13 ;...
+-8.67 13.42 ;...
+-8.17 13.25 ;...
+-7.75 13 ;...
+-7.25 12.92 ;...
+-6.75 12.67 ;...
+-6.42 12.42 ;...
+-6 12.33 ;...
+-5.75 12.17 ;...
+-5.33 12.17 ;...
+-4.92 11.92 ;...
+-4.5 11.58 ;...
+-4.08 11.33 ;...
+-3.75 11 ;...
+-3.42 10.67 ;...
+-3.08 10.33 ;...
+-2.75 9.83 ;...
+-2.25 9.5 ;...
+-1.83 9.17 ;...
+-1.33 9 ;...
+-0.83 8.75 ;...
+-0.5 9.25 ;...
+0 9.33 ;...
+NaN NaN ;...
+30 32.58 ;...
+30.92 32.17 ;...
+31.25 32.33 ;...
+31 32.67 ;...
+31.08 33.25 ;...
+31.17 34 ;...
+31.5 34.33 ;...
+32 34.67 ;...
+32.5 34.83 ;...
+33 35 ;...
+33.5 35.25 ;...
+34.08 35.5 ;...
+34.5 35.83 ;...
+35 35.75 ;...
+35.67 35.75 ;...
+36 35.92 ;...
+36.33 35.75 ;...
+36.67 36.08 ;...
+36.92 36 ;...
+36.58 35.5 ;...
+36.58 35.17 ;...
+36.83 34.5 ;...
+36.5 34.08 ;...
+36.17 33.58 ;...
+36.17 33.58 ;...
+36.17 33.17 ;...
+36 32.75 ;...
+36.17 32.25 ;...
+36.5 32 ;...
+36.75 31.25 ;...
+36.83 30.67 ;...
+36.42 30.5 ;...
+36.17 29.75 ;...
+36.33 29.25 ;...
+36.75 28.58 ;...
+36.75 28 ;...
+37 28.17 ;...
+37 27.67 ;...
+37.0002 27.545 ;...
+37.0003 27.42 ;...
+37.0002 27.295 ;...
+37 27.17 ;...
+37.0826 27.2522 ;...
+37.1651 27.3346 ;...
+37.2476 27.4172 ;...
+37.33 27.5 ;...
+37.3926 27.3953 ;...
+37.4552 27.2904 ;...
+37.5176 27.1853 ;...
+37.58 27.08 ;...
+37.92 27.17 ;...
+38.08 26.75 ;...
+38.25 26.25 ;...
+38.58 26.33 ;...
+38.33 26.67 ;...
+38.42 26.92 ;...
+38.67 26.75 ;...
+39.25 26.67 ;...
+39.5 26.83 ;...
+39.42 26 ;...
+40 26.17 ;...
+40.25 26.17 ;...
+40.58 26.58 ;...
+40.5 26.08 ;...
+40.83 25.75 ;...
+40.92 25.17 ;...
+40.83 24.75 ;...
+40.92 24.25 ;...
+40.67 24 ;...
+40.67 23.5 ;...
+40.42 23.75 ;...
+40.17 23.58 ;...
+40.17 23.08 ;...
+40.58 22.58 ;...
+40 22.5 ;...
+39.58 22.83 ;...
+39.25 23.17 ;...
+38.92 23.33 ;...
+38.67 23.67 ;...
+38.5 24.08 ;...
+38.17 24.17 ;...
+38.17 24.17 ;...
+38 24.58 ;...
+38.17 24 ;...
+37.58 24 ;...
+37.92 23.5 ;...
+38 22.92 ;...
+38.33 22.58 ;...
+38.3 21.83 ;...
+38.33 21.08 ;...
+38.75 20.67 ;...
+39.25 20.33 ;...
+39.58 20.08 ;...
+40 19.75 ;...
+40.25 19.33 ;...
+40.75 19.33 ;...
+41.33 19.42 ;...
+41.75 19.5 ;...
+42 19 ;...
+42.33 18.5 ;...
+42.58 17.92 ;...
+43 17.33 ;...
+43.42 16.58 ;...
+43.5 16 ;...
+43.75 15.75 ;...
+44 15.17 ;...
+44.33 15.17 ;...
+44.58 14.92 ;...
+45 14.83 ;...
+45.33 14.17 ;...
+45 14.08 ;...
+44.83 13.75 ;...
+44.83 13.75 ;...
+45.08 13.5 ;...
+45.42 13.42 ;...
+45.67 13.58 ;...
+45.75 13.08 ;...
+45.5 12.58 ;...
+45.5 12.17 ;...
+45.17 12.08 ;...
+44.92 12.33 ;...
+44.58 12.17 ;...
+44.25 12.25 ;...
+43.92 12.67 ;...
+43.67 13.08 ;...
+43.42 13.58 ;...
+43 13.83 ;...
+42.58 13.92 ;...
+42.33 14.17 ;...
+42.08 14.67 ;...
+41.83 15.25 ;...
+41.83 16.08 ;...
+41.5 15.83 ;...
+41.33 16.33 ;...
+41.08 16.92 ;...
+40.83 17.42 ;...
+40.58 17.92 ;...
+40.17 18.42 ;...
+39.83 18.25 ;...
+39.92 17.92 ;...
+40.25 17.83 ;...
+40.33 17.33 ;...
+40.5 16.92 ;...
+40.5 16.92 ;...
+40.17 16.67 ;...
+39.67 16.5 ;...
+39.42 17 ;...
+39 17 ;...
+38.83 16.5 ;...
+38.42 16.5 ;...
+38.17 16.17 ;...
+37.92 16 ;...
+37.92 15.67 ;...
+38.17 15.67 ;...
+38.58 15.83 ;...
+38.83 16.08 ;...
+39.25 16 ;...
+39.67 15.75 ;...
+40 15.67 ;...
+40.17 15 ;...
+40.58 14.75 ;...
+40.67 14.42 ;...
+40.92 14 ;...
+41.25 13.58 ;...
+41.25 12.92 ;...
+41.5 12.42 ;...
+41.92 12 ;...
+42.33 11.5 ;...
+42.33 11 ;...
+42.67 10.92 ;...
+43.08 10.42 ;...
+43.5 10.17 ;...
+44 10.08 ;...
+44.08 9.5 ;...
+44.08 9.5 ;...
+44.25 9.17 ;...
+44.33 8.67 ;...
+44.17 8.25 ;...
+43.83 8 ;...
+43.67 7.42 ;...
+43.42 6.83 ;...
+43.08 6.42 ;...
+43 5.83 ;...
+43.25 5.25 ;...
+43.33 4.58 ;...
+43.5 4 ;...
+43.25 3.58 ;...
+43 3 ;...
+42.5 3.08 ;...
+41.92 3.17 ;...
+41.67 2.67 ;...
+41.33 2.08 ;...
+41.17 1.5 ;...
+41 1 ;...
+40.42 0.5 ;...
+39.92 0 ;...
+39.5 -0.33 ;...
+39.08 -0.25 ;...
+38.9977 -0.124564 ;...
+38.9153 0.000581242 ;...
+38.8327 0.125435 ;...
+38.75 0.25 ;...
+38.6678 0.1045 ;...
+38.5854 -0.0406663 ;...
+38.5028 -0.185499 ;...
+38.42 -0.33 ;...
+38.08 -0.67 ;...
+37.67 -0.83 ;...
+37.67 -1.33 ;...
+37.17 -1.83 ;...
+36.75 -2.17 ;...
+36.75 -2.17 ;...
+36.75 -2.75 ;...
+36.75 -3.33 ;...
+36.75 -3.92 ;...
+36.67 -4.5 ;...
+36.5 -5 ;...
+36.08 -5.5 ;...
+36.25 -6 ;...
+36.75 -6.33 ;...
+37 -6.5 ;...
+37.25 -7 ;...
+37.25 -7.42 ;...
+37.08 -7.83 ;...
+37.17 -8.33 ;...
+37.08 -8.92 ;...
+37.5 -8.75 ;...
+38 -8.75 ;...
+38.5 -8.67 ;...
+38.5 -9.08 ;...
+38.83 -9.33 ;...
+39.33 -9.25 ;...
+39.67 -8.92 ;...
+40.25 -8.83 ;...
+40.75 -8.67 ;...
+41.17 -8.58 ;...
+41.67 -8.75 ;...
+42 -8.83 ;...
+42.42 -8.75 ;...
+43 -9.17 ;...
+43.25 -8.92 ;...
+43.33 -8.33 ;...
+43.33 -8.33 ;...
+43.75 -8 ;...
+43.5 -7.25 ;...
+43.5 -6.58 ;...
+43.58 -5.83 ;...
+43.5 -5.08 ;...
+43.33 -4.42 ;...
+43.5 -3.58 ;...
+43.42 -2.75 ;...
+43.33 -2.17 ;...
+43.42 -1.67 ;...
+43.67 -1.42 ;...
+44.25 -1.25 ;...
+44.67 -1.17 ;...
+45.25 -1.08 ;...
+45.83 -1 ;...
+46.25 -1.25 ;...
+46.5 -1.75 ;...
+46.75 -2 ;...
+47 -1.92 ;...
+47.33 -2.33 ;...
+47.5 -2.5 ;...
+47.58 -3.17 ;...
+47.83 -3.75 ;...
+47.83 -4.25 ;...
+48 -4.67 ;...
+48.5 -4.75 ;...
+48.58 -4.17 ;...
+48.75 -3.67 ;...
+48.83 -3 ;...
+48.5 -2.67 ;...
+48.5 -2.67 ;...
+48.58 -2 ;...
+48.58 -1.42 ;...
+49.17 -1.58 ;...
+49.67 -1.92 ;...
+49.67 -1.33 ;...
+49.25 -1.08 ;...
+49.33 -0.58 ;...
+49.25 0 ;...
+49.67 0.17 ;...
+49.83 0.58 ;...
+49.92 1.08 ;...
+50.08 1.5 ;...
+50.5 1.58 ;...
+50.83 1.75 ;...
+51 2.33 ;...
+51.25 3 ;...
+51.42 3.58 ;...
+51.75 4 ;...
+52.08 4.33 ;...
+52.42 4.58 ;...
+52.83 4.75 ;...
+52.92 5.08 ;...
+52.42 5.08 ;...
+52.25 5.5 ;...
+52.5 5.92 ;...
+52.75 5.92 ;...
+52.83 5.5 ;...
+53.25 5.5 ;...
+53.42 6.08 ;...
+53.42 7 ;...
+53.42 7 ;...
+53.67 7.33 ;...
+53.67 8 ;...
+53.5 8.5 ;...
+53.83 8.58 ;...
+54.08 9 ;...
+54.33 8.67 ;...
+54.5 9 ;...
+54.83 8.67 ;...
+55.33 8.67 ;...
+55.58 8.17 ;...
+56 8.08 ;...
+56.5 8.08 ;...
+56.83 8.25 ;...
+57.08 8.67 ;...
+57.17 9.42 ;...
+57.5 9.83 ;...
+57.58 10.5 ;...
+57.25 10.5 ;...
+56.83 10.25 ;...
+56.5 10.25 ;...
+56.5 10.83 ;...
+56.17 10.83 ;...
+56 10.17 ;...
+55.5 9.75 ;...
+55 9.42 ;...
+54.75 10 ;...
+54.5 10 ;...
+54.25 10.92 ;...
+53.92 10.75 ;...
+53.92 11.33 ;...
+53.92 11.33 ;...
+54.17 11.83 ;...
+54.33 12.25 ;...
+54.42 12.92 ;...
+54.67 13.33 ;...
+54.33 13.67 ;...
+54.17 13.25 ;...
+54 13.83 ;...
+53.92 14.33 ;...
+54.17 15.17 ;...
+54.25 16 ;...
+54.58 16.67 ;...
+54.75 17.5 ;...
+54.83 18.33 ;...
+54.33 18.67 ;...
+54.33 19.25 ;...
+54.5 19.75 ;...
+54.92 20 ;...
+55.17 20.75 ;...
+55.67 21.08 ;...
+56.17 21 ;...
+56.75 21 ;...
+57.08 21.33 ;...
+57.58 21.67 ;...
+57.67 22.42 ;...
+57.42 22.92 ;...
+57.08 23.25 ;...
+57 23.83 ;...
+57.25 24.33 ;...
+57.75 24.33 ;...
+58.25 24.33 ;...
+58.25 24.33 ;...
+58.33 23.75 ;...
+58.75 23.5 ;...
+59.17 23.5 ;...
+59.42 24.17 ;...
+59.5 25 ;...
+59.58 25.92 ;...
+59.42 26.83 ;...
+59.42 27.92 ;...
+59.67 28.33 ;...
+60 29.17 ;...
+59.9582 29.421 ;...
+59.9159 29.6713 ;...
+59.8732 29.921 ;...
+59.83 30.17 ;...
+59.9351 30.066 ;...
+60.0402 29.9613 ;...
+60.1451 29.856 ;...
+60.25 29.75 ;...
+60.17 29.08 ;...
+60.58 28.33 ;...
+60.58 27.17 ;...
+60.42 26.25 ;...
+60.25 25.33 ;...
+60.08 24.42 ;...
+60 23.5 ;...
+60.17 22.58 ;...
+60.42 22.08 ;...
+60.67 21.33 ;...
+61 21.33 ;...
+61.5 21.67 ;...
+62 21.25 ;...
+62.5 21.17 ;...
+63 21.58 ;...
+63.42 22.42 ;...
+63.92 23.25 ;...
+64.33 24.08 ;...
+64.33 24.08 ;...
+64.83 24.67 ;...
+65 25.33 ;...
+65.5 25.33 ;...
+65.83 24.5 ;...
+65.75 23.83 ;...
+65.75 23.17 ;...
+65.83 22.42 ;...
+65.5 22 ;...
+65.33 21.42 ;...
+65.08 21.5 ;...
+64.75 21 ;...
+64.5 21.67 ;...
+64.17 21 ;...
+63.83 20.67 ;...
+63.58 19.83 ;...
+63.33 19.17 ;...
+63 18.42 ;...
+62.5 17.75 ;...
+62.25 17.42 ;...
+61.75 17.33 ;...
+61.25 17.17 ;...
+60.83 17.25 ;...
+60.5 17.92 ;...
+60.17 18.58 ;...
+59.83 18.83 ;...
+59.58 18.58 ;...
+59.33 18 ;...
+59.17 18.33 ;...
+58.92 17.58 ;...
+58.58 16.83 ;...
+58.58 16.83 ;...
+58.25 16.67 ;...
+57.75 16.67 ;...
+57.33 16.5 ;...
+56.75 16.33 ;...
+56.17 15.92 ;...
+56.17 15.33 ;...
+56.17 14.67 ;...
+55.75 14.17 ;...
+55.42 14.25 ;...
+55.42 13.67 ;...
+55.42 13 ;...
+55.75 13 ;...
+56.17 12.67 ;...
+56.5 12.92 ;...
+56.92 12.33 ;...
+57.42 12 ;...
+58 11.67 ;...
+58.5 11.33 ;...
+59.08 11.08 ;...
+59.33 10.58 ;...
+59 10.25 ;...
+59 9.75 ;...
+58.58 9 ;...
+58.25 8.5 ;...
+58 7.67 ;...
+58.08 6.83 ;...
+58.33 6 ;...
+58.58 5.58 ;...
+59 5.67 ;...
+59.33 6.17 ;...
+59.33 6.17 ;...
+59.25 5.42 ;...
+59.58 5.25 ;...
+59.92 5.58 ;...
+60.33 5.08 ;...
+60.75 5 ;...
+60.855 4.95792 ;...
+60.96 4.91556 ;...
+61.065 4.87292 ;...
+61.17 4.83 ;...
+61.2526 4.93417 ;...
+61.3352 5.03889 ;...
+61.4176 5.14417 ;...
+61.5 5.25 ;...
+61.5826 5.16816 ;...
+61.6651 5.08588 ;...
+61.7476 5.00316 ;...
+61.83 4.92 ;...
+61.9154 5.10593 ;...
+62.0005 5.29291 ;...
+62.0854 5.48093 ;...
+62.17 5.67 ;...
+62.5 6.33 ;...
+62.92 7 ;...
+63 8 ;...
+63.33 8.5 ;...
+63.75 8.92 ;...
+63.5 9.5 ;...
+63.92 10.08 ;...
+64.33 10.67 ;...
+64.92 11.33 ;...
+65.25 12.17 ;...
+65.75 12.58 ;...
+66.17 13 ;...
+66.58 13.33 ;...
+67 13.83 ;...
+67.42 14.67 ;...
+67.83 15 ;...
+68.33 16.17 ;...
+68.25 15 ;...
+68.17 14 ;...
+67.83 12.92 ;...
+68.25 13.67 ;...
+68.25 13.67 ;...
+68.2935 14.0006 ;...
+68.3363 14.3325 ;...
+68.3785 14.6656 ;...
+68.42 15 ;...
+68.4827 14.8562 ;...
+68.5452 14.7116 ;...
+68.6077 14.5662 ;...
+68.67 14.42 ;...
+68.733 14.6456 ;...
+68.7956 14.8724 ;...
+68.858 15.1006 ;...
+68.92 15.33 ;...
+69.25 16.17 ;...
+68.75 15.92 ;...
+69 16.58 ;...
+68.67 16.67 ;...
+68.753 16.895 ;...
+68.8356 17.1216 ;...
+68.918 17.35 ;...
+69 17.58 ;...
+69.0202 17.4354 ;...
+69.0402 17.2905 ;...
+69.0602 17.1454 ;...
+69.08 17 ;...
+69.42 17 ;...
+69.58 18.08 ;...
+70.08 18.92 ;...
+70.08 20.17 ;...
+70.25 21.5 ;...
+70.67 22.33 ;...
+70.92 23.33 ;...
+70.67 24.25 ;...
+71 24.83 ;...
+71.17 25.67 ;...
+70.58 25.58 ;...
+70.92 26.58 ;...
+70.5 26.83 ;...
+71.08 27.75 ;...
+70.92 29.08 ;...
+70.67 30.17 ;...
+70.42 31.17 ;...
+70.08 30 ;...
+70.1033 29.6885 ;...
+70.1261 29.3764 ;...
+70.1483 29.0635 ;...
+70.17 28.75 ;...
+70.0858 29.0663 ;...
+70.0011 29.3801 ;...
+69.9158 29.6913 ;...
+69.83 30 ;...
+69.75 31.25 ;...
+69.75 31.25 ;...
+69.92 32.08 ;...
+69.75 33.08 ;...
+69.42 33.08 ;...
+69.33 34.5 ;...
+69.17 35.83 ;...
+68.92 37 ;...
+68.58 38 ;...
+68.25 39 ;...
+68 40 ;...
+67.67 40.92 ;...
+67.25 41.25 ;...
+66.75 41.25 ;...
+66.42 40.58 ;...
+66.17 39.5 ;...
+66.08 38.33 ;...
+66.25 37.25 ;...
+66.33 36.25 ;...
+66.42 35.33 ;...
+66.67 34.33 ;...
+66.83 33.17 ;...
+66.9155 32.9424 ;...
+67.0007 32.7132 ;...
+67.0855 32.4824 ;...
+67.17 32.25 ;...
+67.0452 32.3972 ;...
+66.9203 32.543 ;...
+66.7952 32.6872 ;...
+66.67 32.83 ;...
+66.42 33.67 ;...
+66 34.67 ;...
+65.5 34.67 ;...
+65.08 34.67 ;...
+64.58 34.67 ;...
+64.33 35.75 ;...
+63.92 36.75 ;...
+63.92 38 ;...
+63.92 38 ;...
+64.42 38 ;...
+64.42 37.25 ;...
+64.83 36.5 ;...
+65.17 36.92 ;...
+65.08 37.75 ;...
+64.83 38.67 ;...
+64.67 39.5 ;...
+64.58 40.67 ;...
+65.08 40.17 ;...
+65.1852 40.0465 ;...
+65.2902 39.922 ;...
+65.3952 39.7965 ;...
+65.5 39.67 ;...
+65.5829 39.8755 ;...
+65.6656 40.0824 ;...
+65.7479 40.2905 ;...
+65.83 40.5 ;...
+66.08 41.5 ;...
+66.42 42.17 ;...
+66.33 43.17 ;...
+66.17 43.92 ;...
+66.5 44.5 ;...
+67 44.5 ;...
+67.17 43.83 ;...
+67.67 44.17 ;...
+68.25 44.17 ;...
+68.67 43.25 ;...
+68.5 44.5 ;...
+68.5 45.67 ;...
+68.25 46.25 ;...
+67.83 46.67 ;...
+67.75 45.5 ;...
+67.6452 45.3531 ;...
+67.5403 45.2074 ;...
+67.4352 45.0631 ;...
+67.33 44.92 ;...
+67.2905 45.1486 ;...
+67.2506 45.3765 ;...
+67.2105 45.6036 ;...
+67.17 45.83 ;...
+66.83 46.33 ;...
+66.83 47.33 ;...
+66.83 47.33 ;...
+67.08 48.17 ;...
+67.67 48.17 ;...
+67.83 49.08 ;...
+68.08 50.17 ;...
+68.33 51 ;...
+68.5 52.08 ;...
+68.75 53 ;...
+69 53.92 ;...
+68.5 54 ;...
+68.17 54.83 ;...
+68.5 55.17 ;...
+68.58 56.17 ;...
+68.5 57.25 ;...
+68.83 58.17 ;...
+69 59.08 ;...
+68.42 59.08 ;...
+68.33 59.83 ;...
+68.67 59.83 ;...
+68.75 60.5 ;...
+69 61.08 ;...
+69.33 60.5 ;...
+69.67 60.17 ;...
+69.92 59.17 ;...
+70.17 58.58 ;...
+70.5 59.08 ;...
+70.08 60.17 ;...
+69.75 61.75 ;...
+69.67 63 ;...
+69.33 64.08 ;...
+69.25 65.08 ;...
+69.25 65.08 ;...
+69 66 ;...
+68.83 67.08 ;...
+68.5 67.75 ;...
+68.25 68.58 ;...
+68.75 69.08 ;...
+69 68.33 ;...
+69.5 67.83 ;...
+69.67 66.92 ;...
+70 66.92 ;...
+70.42 67.33 ;...
+70.83 66.83 ;...
+71.25 67 ;...
+71.58 68.25 ;...
+72 68.75 ;...
+72.5 68.92 ;...
+72.92 69.5 ;...
+73.33 70.08 ;...
+73.373 70.3505 ;...
+73.4157 70.6223 ;...
+73.458 70.8955 ;...
+73.5 71.17 ;...
+73.4176 71.2968 ;...
+73.3351 71.4224 ;...
+73.2526 71.5468 ;...
+73.17 71.67 ;...
+73.1076 71.5841 ;...
+73.0451 71.4988 ;...
+72.9826 71.4141 ;...
+72.92 71.33 ;...
+72.8585 71.709 ;...
+72.7964 72.0853 ;...
+72.7335 72.459 ;...
+72.67 72.83 ;...
+72.585 72.83 ;...
+72.5 72.83 ;...
+72.415 72.83 ;...
+72.33 72.83 ;...
+72.2276 72.7258 ;...
+72.1251 72.6227 ;...
+72.0226 72.5208 ;...
+71.92 72.42 ;...
+71.8152 72.27 ;...
+71.7102 72.1217 ;...
+71.6052 71.9751 ;...
+71.5 71.83 ;...
+71.3954 72.0434 ;...
+71.2905 72.2545 ;...
+71.1853 72.4634 ;...
+71.08 72.67 ;...
+70.955 72.67 ;...
+70.83 72.67 ;...
+70.705 72.67 ;...
+70.58 72.67 ;...
+70.455 72.67 ;...
+70.33 72.67 ;...
+70.205 72.67 ;...
+70.08 72.67 ;...
+69.935 72.647 ;...
+69.79 72.6244 ;...
+69.645 72.602 ;...
+69.5 72.58 ;...
+69.375 72.58 ;...
+69.25 72.58 ;...
+69.125 72.58 ;...
+69 72.58 ;...
+68.8956 72.8336 ;...
+68.7907 73.0847 ;...
+68.6855 73.3335 ;...
+68.58 73.58 ;...
+68.58 73.58 ;...
+68.17 73.17 ;...
+67.75 73.17 ;...
+67.33 72.5 ;...
+67 71.83 ;...
+66.67 70.5 ;...
+66.25 71.58 ;...
+66.5 72.5 ;...
+66.83 73.5 ;...
+67.25 74 ;...
+67.67 74.83 ;...
+68.25 74.5 ;...
+68.75 74.58 ;...
+68.813 74.8081 ;...
+68.8756 75.0374 ;...
+68.938 75.268 ;...
+69 75.5 ;...
+69.0214 75.1061 ;...
+69.0418 74.7114 ;...
+69.0614 74.3161 ;...
+69.08 73.92 ;...
+69.67 73.67 ;...
+70.17 73.83 ;...
+70.58 74.33 ;...
+71 73.83 ;...
+71.33 73.17 ;...
+71.83 73.75 ;...
+72 74.67 ;...
+72.33 75.17 ;...
+72.67 75.08 ;...
+72.92 74.17 ;...
+73.08 74.5 ;...
+72.75 75.5 ;...
+72.25 75.75 ;...
+71.83 75.33 ;...
+71.33 75.33 ;...
+71.17 76.92 ;...
+71.17 76.92 ;...
+71 78.5 ;...
+71.25 78 ;...
+71.5 76.58 ;...
+71.92 76.08 ;...
+72.08 76.92 ;...
+71.83 77.75 ;...
+72 78.33 ;...
+72.0833 78.002 ;...
+72.1661 77.671 ;...
+72.2483 77.337 ;...
+72.33 77 ;...
+72.3928 77.1856 ;...
+72.4554 77.3724 ;...
+72.5178 77.5606 ;...
+72.58 77.75 ;...
+72.33 78.5 ;...
+72.33 79.5 ;...
+72.08 80.58 ;...
+71.67 81.58 ;...
+71.7108 81.8905 ;...
+71.751 82.2024 ;...
+71.7908 82.5155 ;...
+71.83 82.83 ;...
+71.9352 82.6678 ;...
+72.0403 82.5037 ;...
+72.1452 82.3378 ;...
+72.25 82.17 ;...
+72.42 80.83 ;...
+72.92 80.83 ;...
+73.5 80.33 ;...
+73.58 82 ;...
+73.67 83.75 ;...
+73.83 85.25 ;...
+73.92 87 ;...
+74.33 86.5 ;...
+74.67 86.58 ;...
+75 87.5 ;...
+75.33 88.67 ;...
+75.58 90.58 ;...
+75.75 92.17 ;...
+76.08 93.25 ;...
+76.08 94.75 ;...
+76.08 94.75 ;...
+76.1444 95.305 ;...
+76.2076 95.865 ;...
+76.2694 96.43 ;...
+76.33 97 ;...
+76.2475 96.916 ;...
+76.1651 96.8331 ;...
+76.0825 96.7511 ;...
+76 96.67 ;...
+76.0454 97.3513 ;...
+76.0889 98.0368 ;...
+76.1304 98.7264 ;...
+76.17 99.42 ;...
+76.2526 99.3169 ;...
+76.3351 99.2125 ;...
+76.4176 99.1069 ;...
+76.5 99 ;...
+76.5 101 ;...
+77 101 ;...
+77.42 102.5 ;...
+77.75 104.08 ;...
+77.6689 104.59 ;...
+77.5868 105.093 ;...
+77.5039 105.59 ;...
+77.42 106.08 ;...
+77.3362 105.613 ;...
+77.2516 105.153 ;...
+77.1662 104.699 ;...
+77.08 104.25 ;...
+77.0811 104.687 ;...
+77.0815 105.125 ;...
+77.0811 105.563 ;...
+77.08 106 ;...
+77.0608 106.377 ;...
+77.0411 106.752 ;...
+77.0208 107.127 ;...
+77 107.5 ;...
+76.8754 107.222 ;...
+76.7506 106.95 ;...
+76.6254 106.683 ;...
+76.5 106.42 ;...
+76.5007 106.772 ;...
+76.501 107.125 ;...
+76.5007 107.478 ;...
+76.5 107.83 ;...
+76.75 108.17 ;...
+76.75 109.58 ;...
+76.67 111.17 ;...
+76.5 112.42 ;...
+76.17 113.5 ;...
+75.75 113.83 ;...
+75.25 113.67 ;...
+74.92 112.5 ;...
+74.5 111 ;...
+74.17 109.67 ;...
+73.75 108.33 ;...
+73.58 107.17 ;...
+73.17 106.5 ;...
+73.17 107.58 ;...
+73.33 108.83 ;...
+73.5 110.17 ;...
+73.5 110.17 ;...
+73.5627 110.004 ;...
+73.6253 109.837 ;...
+73.6877 109.669 ;...
+73.75 109.5 ;...
+73.8127 109.666 ;...
+73.8753 109.832 ;...
+73.9377 110.001 ;...
+74 110.17 ;...
+73.83 111.17 ;...
+73.67 112 ;...
+73.67 113 ;...
+73.5 113.67 ;...
+73.67 114.83 ;...
+73.75 115.92 ;...
+73.58 117.25 ;...
+73.58 118.67 ;...
+73.17 118.5 ;...
+73 120 ;...
+72.92 122 ;...
+73 123.33 ;...
+73.33 122.83 ;...
+73.67 123 ;...
+73.67 124.83 ;...
+73.42 126.92 ;...
+73.25 128.58 ;...
+72.75 129.83 ;...
+72.25 129.5 ;...
+71.83 128.75 ;...
+71.33 129.42 ;...
+70.92 130.33 ;...
+70.75 131.25 ;...
+70.75 131.25 ;...
+71.08 132 ;...
+71.5 132.25 ;...
+71.92 132.58 ;...
+71.5 133.5 ;...
+71.33 134.42 ;...
+71.58 135 ;...
+71.67 135.83 ;...
+71.5 136.67 ;...
+71.58 138.58 ;...
+71.5612 138.979 ;...
+71.5417 139.377 ;...
+71.5212 139.774 ;...
+71.5 140.17 ;...
+71.6051 140.047 ;...
+71.7102 139.923 ;...
+71.8151 139.797 ;...
+71.92 139.67 ;...
+72.25 139.33 ;...
+72.5 139.75 ;...
+72.5 141.17 ;...
+72.83 140.67 ;...
+72.75 142.42 ;...
+72.67 143.83 ;...
+72.58 145.25 ;...
+72.33 146.83 ;...
+72.33 148.5 ;...
+72.17 149.83 ;...
+71.67 150 ;...
+71.42 150.67 ;...
+71.42 151.58 ;...
+71.17 152.42 ;...
+70.83 152.42 ;...
+70.92 153.5 ;...
+70.92 154.58 ;...
+71.08 156 ;...
+71 157.5 ;...
+71 157.5 ;...
+70.92 158.83 ;...
+70.67 159.67 ;...
+70.5651 159.754 ;...
+70.4601 159.837 ;...
+70.3551 159.919 ;...
+70.25 160 ;...
+70.1451 159.873 ;...
+70.0402 159.747 ;...
+69.9351 159.623 ;...
+69.83 159.5 ;...
+69.7682 159.795 ;...
+69.706 160.088 ;...
+69.6432 160.38 ;...
+69.58 160.67 ;...
+69.58 162.25 ;...
+69.67 164 ;...
+69.58 165.67 ;...
+69.42 167 ;...
+69.67 167.67 ;...
+70 168.25 ;...
+69.83 169.42 ;...
+69.58 169.17 ;...
+69.58 168.25 ;...
+69.25 168.33 ;...
+69.08 169.33 ;...
+68.75 169.58 ;...
+68.83 170.42 ;...
+69.08 171 ;...
+69.5 170.58 ;...
+70.08 170.58 ;...
+70 172 ;...
+69.92 173.33 ;...
+69.83 174.67 ;...
+69.83 176.17 ;...
+69.58 177.42 ;...
+69.42 178.67 ;...
+69.17 179.75 ;...
+69.08 180 ;...
+69.08 180 ;...
+68.75 180.92 ;...
+68.42 181.83 ;...
+68.17 183.08 ;...
+67.83 184.17 ;...
+67.5 185 ;...
+67.08 185.5 ;...
+67.08 186.83 ;...
+66.92 188.33 ;...
+66.5 189.17 ;...
+66.3956 189.423 ;...
+66.2908 189.674 ;...
+66.1856 189.923 ;...
+66.08 190.17 ;...
+66.0178 189.981 ;...
+65.9555 189.793 ;...
+65.8928 189.606 ;...
+65.83 189.42 ;...
+65.5 188.92 ;...
+65.5 187.83 ;...
+65 187.83 ;...
+64.67 187.25 ;...
+64.25 187 ;...
+64.42 186 ;...
+64.75 184.92 ;...
+65 184.17 ;...
+65.42 184 ;...
+65.58 183 ;...
+65.42 182.33 ;...
+65.5 181.5 ;...
+65.92 181.17 ;...
+66.33 181 ;...
+66 180.08 ;...
+65.67 180.75 ;...
+65.17 180.33 ;...
+65.05 180 ;...
+65.05 180 ;...
+64.92 179.58 ;...
+64.67 178.67 ;...
+64.75 177.5 ;...
+64.33 177.5 ;...
+64.33 178.33 ;...
+64 178.58 ;...
+63.5 178.83 ;...
+63 179.25 ;...
+62.67 179.67 ;...
+62.25 179 ;...
+62.5 178.17 ;...
+62.5 177 ;...
+62.25 176.25 ;...
+62.08 175.33 ;...
+61.75 174.58 ;...
+61.67 173.83 ;...
+61.33 173.08 ;...
+61 172.33 ;...
+60.67 171.5 ;...
+60.42 170.67 ;...
+60.42 170.67 ;...
+59.92 170.33 ;...
+60.25 169.83 ;...
+60.5 169.17 ;...
+60.58 168.25 ;...
+60.42 167.5 ;...
+60.17 166.83 ;...
+59.75 166.17 ;...
+60.33 166.17 ;...
+60.17 165.33 ;...
+59.83 164.75 ;...
+60 164.17 ;...
+59.83 163.33 ;...
+59.42 163.17 ;...
+59 162.92 ;...
+58.58 162.33 ;...
+58.17 161.92 ;...
+57.75 162.08 ;...
+57.92 162.58 ;...
+57.67 163.17 ;...
+57.25 162.67 ;...
+56.83 162.67 ;...
+56.67 163.08 ;...
+56.17 163.25 ;...
+56 162.83 ;...
+56.25 162.42 ;...
+56.08 161.92 ;...
+55.67 161.58 ;...
+55.17 161.67 ;...
+54.75 162.08 ;...
+54.5 161.67 ;...
+54.5 161.67 ;...
+54.58 161.17 ;...
+54.42 160.42 ;...
+54.08 159.92 ;...
+53.58 159.83 ;...
+53.17 159.92 ;...
+53.17 159.17 ;...
+52.83 158.58 ;...
+52.25 158.42 ;...
+51.67 157.92 ;...
+51.25 157.33 ;...
+50.92 156.67 ;...
+51.25 156.5 ;...
+51.67 156.5 ;...
+52.17 156.42 ;...
+52.75 156.08 ;...
+53.33 156 ;...
+53.92 155.83 ;...
+54.33 155.67 ;...
+54.83 155.5 ;...
+55.25 155.42 ;...
+55.83 155.5 ;...
+56.33 155.75 ;...
+56.83 156 ;...
+57 156.67 ;...
+57.42 157 ;...
+57.75 156.83 ;...
+57.75 157.5 ;...
+58 158.25 ;...
+58.42 159 ;...
+58.83 159.67 ;...
+58.83 159.67 ;...
+59.25 160.08 ;...
+59.67 160.92 ;...
+60.08 161.58 ;...
+60.42 161.92 ;...
+60.67 162.67 ;...
+60.83 163.5 ;...
+61.17 163.75 ;...
+61.75 163.92 ;...
+62.25 164.08 ;...
+62.5 164.75 ;...
+62.67 164.42 ;...
+62.5 163.25 ;...
+62.08 162.92 ;...
+61.67 162.92 ;...
+61.58 162.25 ;...
+61.25 161.67 ;...
+60.92 161 ;...
+60.58 160.17 ;...
+60.92 159.92 ;...
+61.25 159.83 ;...
+61.3952 159.953 ;...
+61.5402 160.078 ;...
+61.6852 160.203 ;...
+61.83 160.33 ;...
+61.7905 160.122 ;...
+61.7506 159.914 ;...
+61.7105 159.707 ;...
+61.67 159.5 ;...
+61.83 158.83 ;...
+61.75 157.92 ;...
+61.58 156.92 ;...
+61.17 156.33 ;...
+60.75 155.75 ;...
+60.42 155 ;...
+60 154.5 ;...
+59.5 154.17 ;...
+59.5 154.17 ;...
+59.42 154.83 ;...
+59.3576 154.915 ;...
+59.2951 155.001 ;...
+59.2326 155.085 ;...
+59.17 155.17 ;...
+59.1485 154.877 ;...
+59.1263 154.584 ;...
+59.1035 154.292 ;...
+59.08 154 ;...
+59.17 153.33 ;...
+59 152.92 ;...
+58.83 152 ;...
+58.83 151.33 ;...
+59.08 151.08 ;...
+59.33 151.67 ;...
+59.58 151.33 ;...
+59.5 150.83 ;...
+59.58 150.17 ;...
+59.75 149.5 ;...
+59.67 149 ;...
+59.42 148.92 ;...
+59.25 148.83 ;...
+59.33 148.17 ;...
+59.25 147.42 ;...
+59.42 146.5 ;...
+59.17 145.92 ;...
+59.33 145.58 ;...
+59.33 144.67 ;...
+59.33 143.67 ;...
+59.25 142.67 ;...
+59 142 ;...
+58.67 141.67 ;...
+58.42 141 ;...
+58.08 140.58 ;...
+57.75 140.25 ;...
+57.5 139.67 ;...
+57.5 139.67 ;...
+57.17 139 ;...
+56.83 138.5 ;...
+56.33 137.92 ;...
+55.92 137.25 ;...
+55.58 136.58 ;...
+55.17 135.92 ;...
+54.92 135.17 ;...
+54.67 135.25 ;...
+54.5 135.92 ;...
+54.58 136.67 ;...
+54.17 136.67 ;...
+53.75 136.67 ;...
+54.17 137.08 ;...
+54.25 137.67 ;...
+53.83 137.67 ;...
+53.7476 137.584 ;...
+53.6651 137.499 ;...
+53.5826 137.415 ;...
+53.5 137.33 ;...
+53.5432 137.559 ;...
+53.5859 137.789 ;...
+53.6282 138.019 ;...
+53.67 138.25 ;...
+54.17 138.83 ;...
+54.17 139.5 ;...
+54 140.17 ;...
+53.75 140.25 ;...
+53.5 140.75 ;...
+53.25 141.33 ;...
+52.83 141.08 ;...
+52.42 141.08 ;...
+52.17 141.33 ;...
+51.83 141.08 ;...
+51.42 140.75 ;...
+51 140.5 ;...
+50.5 140.42 ;...
+50.5 140.42 ;...
+50 140.5 ;...
+49.42 140.5 ;...
+49 140.33 ;...
+48.5 140.17 ;...
+48 139.5 ;...
+47.5 139 ;...
+47.08 138.5 ;...
+46.5 138.25 ;...
+46.08 137.92 ;...
+45.67 137.5 ;...
+45.25 136.92 ;...
+44.75 136.33 ;...
+44.33 135.67 ;...
+43.92 135.5 ;...
+43.42 135 ;...
+43.17 134.33 ;...
+42.83 133.75 ;...
+42.67 133.08 ;...
+42.92 132.33 ;...
+43.25 132.33 ;...
+43.25 131.75 ;...
+43 131.5 ;...
+42.58 131.17 ;...
+42.58 130.83 ;...
+42.25 130.67 ;...
+42.08 130.08 ;...
+41.58 129.58 ;...
+41.33 129.67 ;...
+40.83 129.67 ;...
+40.67 129.25 ;...
+40.67 129.25 ;...
+40.33 128.75 ;...
+40.08 128.25 ;...
+39.92 127.83 ;...
+39.8977 127.705 ;...
+39.8753 127.58 ;...
+39.8527 127.455 ;...
+39.83 127.33 ;...
+39.7675 127.373 ;...
+39.705 127.415 ;...
+39.6425 127.458 ;...
+39.6269 127.468 ;...
+39.6113 127.479 ;...
+39.5956 127.489 ;...
+39.58 127.5 ;...
+39.5594 127.489 ;...
+39.5388 127.479 ;...
+39.5181 127.468 ;...
+39.4975 127.457 ;...
+39.415 127.415 ;...
+39.3325 127.372 ;...
+39.25 127.33 ;...
+39.1877 127.455 ;...
+39.1253 127.58 ;...
+39.0627 127.705 ;...
+39 127.83 ;...
+38.67 128.25 ;...
+38.25 128.5 ;...
+37.92 128.83 ;...
+37.5 129.17 ;...
+37 129.33 ;...
+36.5 129.42 ;...
+36 129.42 ;...
+35.58 129.33 ;...
+35.17 129.08 ;...
+34.92 128.5 ;...
+34.83 127.75 ;...
+34.67 127.17 ;...
+34.33 126.58 ;...
+34.83 126.33 ;...
+35.33 126.33 ;...
+35.75 126.75 ;...
+36.33 126.5 ;...
+36.92 126.17 ;...
+37 126.75 ;...
+37.42 126.58 ;...
+37.75 126.08 ;...
+37.67 125.33 ;...
+38.08 124.75 ;...
+38.08 124.75 ;...
+38.5 125 ;...
+38.92 125.17 ;...
+39.42 125.42 ;...
+39.58 125.08 ;...
+39.67 124.67 ;...
+39.83 124.08 ;...
+39.75 123.5 ;...
+39.58 123 ;...
+39.42 122.42 ;...
+39.08 122.08 ;...
+38.83 121.58 ;...
+38.75 121.17 ;...
+39.17 121.67 ;...
+39.5 121.33 ;...
+39.75 121.5 ;...
+40 121.92 ;...
+40.42 122.25 ;...
+40.83 121.92 ;...
+40.92 121.25 ;...
+40.58 120.83 ;...
+40.17 120.42 ;...
+40 119.92 ;...
+39.75 119.42 ;...
+39.42 119.25 ;...
+39.17 119 ;...
+39.08 118.42 ;...
+39.25 118 ;...
+38.92 117.67 ;...
+38.58 117.58 ;...
+38.25 117.92 ;...
+38.25 117.92 ;...
+38 118.33 ;...
+37.75 118.83 ;...
+37.33 118.92 ;...
+37.08 119.33 ;...
+37.08 119.75 ;...
+37.33 120 ;...
+37.58 120.33 ;...
+37.75 120.83 ;...
+37.5 121.17 ;...
+37.42 121.58 ;...
+37.42 122.08 ;...
+37.3977 122.205 ;...
+37.3753 122.33 ;...
+37.3527 122.455 ;...
+37.33 122.58 ;...
+37.205 122.517 ;...
+37.0801 122.455 ;...
+36.955 122.392 ;...
+36.83 122.33 ;...
+37 122 ;...
+36.75 121.5 ;...
+36.58 120.83 ;...
+36.17 120.67 ;...
+35.92 120.17 ;...
+35.58 119.67 ;...
+35.25 119.42 ;...
+34.83 119.17 ;...
+34.58 119.75 ;...
+34.33 120.33 ;...
+33.83 120.5 ;...
+33.42 120.67 ;...
+33 120.83 ;...
+32.58 120.92 ;...
+32.42 121.25 ;...
+32.08 121.67 ;...
+31.67 121.83 ;...
+31.67 121.83 ;...
+31.67 121.25 ;...
+31.25 121.83 ;...
+30.92 121.92 ;...
+30.83 121.5 ;...
+30.67 121.17 ;...
+30.42 120.92 ;...
+30.33 120.42 ;...
+30.17 120.75 ;...
+30.25 121.33 ;...
+30.08 121.67 ;...
+30 122.08 ;...
+29.75 122 ;...
+29.17 121.92 ;...
+29.17 121.67 ;...
+28.67 121.5 ;...
+28.42 121.58 ;...
+28.17 121.42 ;...
+28.17 121.08 ;...
+27.83 120.83 ;...
+27.42 120.58 ;...
+27 120.33 ;...
+26.67 120 ;...
+26.75 119.67 ;...
+26.33 119.75 ;...
+26 119.67 ;...
+25.58 119.42 ;...
+25.25 119.17 ;...
+25 118.83 ;...
+24.58 118.67 ;...
+24.58 118.17 ;...
+24.58 118.17 ;...
+24.25 118.17 ;...
+24 117.83 ;...
+23.67 117.42 ;...
+23.42 117 ;...
+23.08 116.5 ;...
+22.83 116 ;...
+22.75 115.5 ;...
+22.67 115 ;...
+22.67 114.5 ;...
+22.25 114.17 ;...
+22.67 113.67 ;...
+22.17 113.5 ;...
+22.5 113.08 ;...
+22 113 ;...
+21.83 112.5 ;...
+21.75 112 ;...
+21.5 111.5 ;...
+21.42 110.92 ;...
+21.25 110.42 ;...
+20.92 110.25 ;...
+20.5 110.5 ;...
+20.33 110.25 ;...
+20.33 109.92 ;...
+20.75 109.75 ;...
+21 109.67 ;...
+21.42 109.75 ;...
+21.42 109.42 ;...
+21.67 109 ;...
+21.67 108.5 ;...
+21.5 108 ;...
+21.5 108 ;...
+21.25 107.58 ;...
+21 107.08 ;...
+20.67 106.67 ;...
+20.25 106.42 ;...
+19.92 105.92 ;...
+19.5 105.75 ;...
+19 105.58 ;...
+18.42 105.92 ;...
+18.08 106.33 ;...
+17.75 106.42 ;...
+17.33 106.83 ;...
+16.92 107.17 ;...
+16.5 107.67 ;...
+16.17 108.08 ;...
+15.75 108.42 ;...
+15.33 108.83 ;...
+14.75 109 ;...
+14.25 109.17 ;...
+13.75 109.25 ;...
+13.25 109.25 ;...
+12.83 109.25 ;...
+12.17 109.17 ;...
+11.75 109.17 ;...
+11.42 109 ;...
+11.17 108.5 ;...
+10.92 108.08 ;...
+10.67 107.67 ;...
+10.42 107.25 ;...
+10.42 106.67 ;...
+9.83 106.67 ;...
+9.83 106.67 ;...
+9.42 106.33 ;...
+9.33 105.83 ;...
+9 105.42 ;...
+8.67 105 ;...
+9.08 104.83 ;...
+9.58 104.83 ;...
+9.70501 104.872 ;...
+9.83001 104.915 ;...
+9.95501 104.957 ;...
+10.08 105 ;...
+10.1226 104.875 ;...
+10.1651 104.75 ;...
+10.2076 104.625 ;...
+10.25 104.5 ;...
+10.58 104.25 ;...
+10.58 103.67 ;...
+10.92 103.25 ;...
+11.33 103 ;...
+11.75 102.83 ;...
+12.08 102.58 ;...
+12.25 102.25 ;...
+12.67 101.83 ;...
+12.67 101.42 ;...
+12.75 100.92 ;...
+13.33 100.92 ;...
+13.5 100.42 ;...
+13.33 100 ;...
+12.75 99.92 ;...
+12.08 99.92 ;...
+11.67 99.75 ;...
+11.17 99.58 ;...
+10.83 99.33 ;...
+10.25 99.17 ;...
+9.67 99.17 ;...
+9.17 99.33 ;...
+9.25 99.83 ;...
+9.25 99.83 ;...
+8.58 99.92 ;...
+8.25 100.25 ;...
+7.75 100.42 ;...
+7.17 100.58 ;...
+6.92 100.92 ;...
+6.83 101.5 ;...
+6.42 101.83 ;...
+6.08 102.25 ;...
+5.75 102.67 ;...
+5.42 103.08 ;...
+4.92 103.42 ;...
+4.42 103.42 ;...
+3.92 103.42 ;...
+3.42 103.42 ;...
+2.92 103.42 ;...
+2.58 103.75 ;...
+2 104.08 ;...
+1.42 104.25 ;...
+1.42 103.5 ;...
+1.67 103.17 ;...
+1.92 102.75 ;...
+2.17 102.25 ;...
+2.5 101.92 ;...
+2.83 101.42 ;...
+3.33 101.33 ;...
+3.75 100.92 ;...
+4.25 100.58 ;...
+4.75 100.67 ;...
+5.08 100.42 ;...
+5.67 100.33 ;...
+5.67 100.33 ;...
+6.08 100.33 ;...
+6.67 100.08 ;...
+7 99.75 ;...
+7.33 99.42 ;...
+7.83 99.08 ;...
+8.25 98.67 ;...
+8.08 98.42 ;...
+8.5 98.25 ;...
+9 98.25 ;...
+9.58 98.5 ;...
+10.17 98.5 ;...
+10.67 98.5 ;...
+11 98.75 ;...
+11.42 98.75 ;...
+11.92 98.5 ;...
+12.5 98.75 ;...
+13.08 98.58 ;...
+13.67 98.25 ;...
+14.25 98.08 ;...
+14.75 97.92 ;...
+15.33 97.83 ;...
+15.83 97.75 ;...
+16.33 97.58 ;...
+16.75 97.25 ;...
+16.92 96.92 ;...
+16.58 96.75 ;...
+16.33 96.25 ;...
+16.08 95.83 ;...
+15.75 95.5 ;...
+15.75 95.08 ;...
+15.75 95.08 ;...
+15.83 94.75 ;...
+16.08 94.25 ;...
+16.58 94.42 ;...
+17.17 94.58 ;...
+17.75 94.5 ;...
+18.33 94.33 ;...
+18.83 94.17 ;...
+18.83 93.83 ;...
+19.25 93.58 ;...
+19.5 93.75 ;...
+19.92 93.5 ;...
+19.92 93.17 ;...
+20.25 92.92 ;...
+20.67 92.5 ;...
+21.08 92.17 ;...
+21.5 92 ;...
+21.92 91.92 ;...
+22.33 91.75 ;...
+22.75 91.42 ;...
+22.42 90.92 ;...
+22.17 90.58 ;...
+21.83 90.25 ;...
+21.75 89.75 ;...
+21.67 89.25 ;...
+21.58 88.75 ;...
+21.5 88.33 ;...
+22.08 88.17 ;...
+21.75 88 ;...
+21.58 87.58 ;...
+21.42 87.08 ;...
+21.42 87.08 ;...
+21.08 86.92 ;...
+20.75 87 ;...
+20.33 86.75 ;...
+19.92 86.42 ;...
+19.75 85.92 ;...
+19.67 85.5 ;...
+19.33 85.08 ;...
+19 84.83 ;...
+18.58 84.5 ;...
+18.25 84.08 ;...
+18.08 83.67 ;...
+17.83 83.33 ;...
+17.42 83 ;...
+17.17 82.58 ;...
+17 82.33 ;...
+16.58 82.25 ;...
+16.33 82 ;...
+16.25 81.5 ;...
+16.17 81.17 ;...
+15.75 81 ;...
+15.83 80.42 ;...
+15.42 80.17 ;...
+15 80.08 ;...
+14.42 80.17 ;...
+13.83 80.25 ;...
+13.25 80.33 ;...
+12.67 80.25 ;...
+12.17 80 ;...
+11.75 79.75 ;...
+11.25 79.75 ;...
+11.25 79.75 ;...
+10.83 79.83 ;...
+10.25 79.83 ;...
+10.25 79.33 ;...
+9.75 79 ;...
+9.25 79 ;...
+9.17 78.58 ;...
+8.92 78.17 ;...
+8.33 78 ;...
+8.08 77.58 ;...
+8.25 77.17 ;...
+8.58 76.83 ;...
+9 76.5 ;...
+9.58 76.33 ;...
+10.17 76.17 ;...
+10.67 76 ;...
+11.17 75.83 ;...
+11.58 75.58 ;...
+12 75.25 ;...
+12.42 75 ;...
+13 74.83 ;...
+13.5 74.67 ;...
+14 74.5 ;...
+14.5 74.42 ;...
+15 74.08 ;...
+15.5 73.75 ;...
+16 73.5 ;...
+16.42 73.33 ;...
+17 73.25 ;...
+17.5 73.17 ;...
+18.08 73 ;...
+18.08 73 ;...
+18.67 72.83 ;...
+19 73 ;...
+19.25 72.83 ;...
+19.75 72.67 ;...
+20.25 72.75 ;...
+20.83 72.83 ;...
+21.25 72.58 ;...
+21.67 72.5 ;...
+22.17 72.58 ;...
+22.25 72.33 ;...
+21.83 72.17 ;...
+21.25 72.08 ;...
+20.92 71.67 ;...
+20.75 71.17 ;...
+20.75 70.58 ;...
+21 70.08 ;...
+21.42 69.67 ;...
+21.75 69.33 ;...
+22.25 69.08 ;...
+22.25 69.67 ;...
+22.42 70.17 ;...
+22.92 70.33 ;...
+22.75 69.75 ;...
+22.75 69.17 ;...
+23.08 68.67 ;...
+23.5 68.33 ;...
+23.75 67.92 ;...
+23.92 67.42 ;...
+24.33 67.33 ;...
+24.75 67.17 ;...
+24.75 67.17 ;...
+25 66.83 ;...
+25.33 66.58 ;...
+25.42 66.08 ;...
+25.33 65.58 ;...
+25.25 65.17 ;...
+25.17 64.67 ;...
+25.25 64.25 ;...
+25.42 63.83 ;...
+25.25 63.5 ;...
+25.25 62.92 ;...
+25.17 62.42 ;...
+25.08 61.83 ;...
+25.17 61.17 ;...
+25.25 60.75 ;...
+25.33 60.17 ;...
+25.33 59.67 ;...
+25.42 59.17 ;...
+25.58 58.58 ;...
+25.67 58 ;...
+25.75 57.33 ;...
+26.25 57.17 ;...
+26.67 57.08 ;...
+27 56.75 ;...
+27 56.25 ;...
+26.83 55.75 ;...
+26.67 55.33 ;...
+26.42 54.75 ;...
+26.67 54.33 ;...
+26.58 53.83 ;...
+26.92 53.5 ;...
+26.92 53.5 ;...
+27 53 ;...
+27.42 52.58 ;...
+27.67 52.17 ;...
+27.83 51.5 ;...
+28.25 51.25 ;...
+28.75 51.08 ;...
+29.25 50.67 ;...
+29.83 50.33 ;...
+30.17 50 ;...
+30 49.58 ;...
+30.25 49.25 ;...
+30.5 48.92 ;...
+30 48.58 ;...
+29.58 48.33 ;...
+29.42 47.75 ;...
+29.25 48.17 ;...
+28.75 48.33 ;...
+28.25 48.58 ;...
+27.83 48.83 ;...
+27.42 49.25 ;...
+27 49.67 ;...
+26.67 50.08 ;...
+26.25 50.25 ;...
+25.83 50.17 ;...
+25.42 50.5 ;...
+25.17 50.67 ;...
+25.58 51 ;...
+26 51.08 ;...
+26.08 51.33 ;...
+25.75 51.58 ;...
+25.75 51.58 ;...
+25.25 51.67 ;...
+24.75 51.58 ;...
+24.25 51.25 ;...
+24.25 51.67 ;...
+24 51.83 ;...
+23.92 52.42 ;...
+24.17 52.75 ;...
+24.17 53.25 ;...
+24.08 53.83 ;...
+24.17 54.25 ;...
+24.58 54.5 ;...
+24.92 55 ;...
+25.25 55.33 ;...
+25.58 55.67 ;...
+25.83 56.08 ;...
+26.17 56.25 ;...
+26.08 56.5 ;...
+25.83 56.42 ;...
+25.33 56.42 ;...
+24.75 56.42 ;...
+24.33 56.83 ;...
+24 57.25 ;...
+23.75 57.75 ;...
+23.67 58.25 ;...
+23.5 58.83 ;...
+23.08 59.08 ;...
+22.67 59.42 ;...
+22.42 59.83 ;...
+21.92 59.58 ;...
+21.42 59.33 ;...
+21.42 59.33 ;...
+21.17 59 ;...
+20.83 58.75 ;...
+20.42 58.5 ;...
+20.42 58.08 ;...
+20 57.83 ;...
+19.5 57.75 ;...
+19.08 57.92 ;...
+18.92 57.5 ;...
+18.83 57.08 ;...
+18.58 56.75 ;...
+18.08 56.58 ;...
+17.92 56.33 ;...
+17.83 55.92 ;...
+17.67 55.42 ;...
+17.17 55.25 ;...
+16.92 54.83 ;...
+17 54.42 ;...
+16.92 53.92 ;...
+16.67 53.42 ;...
+16.5 52.92 ;...
+16.25 52.42 ;...
+15.92 52.25 ;...
+15.58 52.25 ;...
+15.42 51.75 ;...
+15.25 51.25 ;...
+15.08 50.75 ;...
+14.92 50.25 ;...
+14.75 49.67 ;...
+14.5 49.17 ;...
+14.08 48.83 ;...
+14.08 48.83 ;...
+13.92 48.33 ;...
+13.92 47.83 ;...
+13.58 47.42 ;...
+13.33 47.08 ;...
+13.25 46.58 ;...
+13.33 46.08 ;...
+13.33 45.67 ;...
+13 45.42 ;...
+12.83 44.92 ;...
+12.75 44.42 ;...
+12.67 43.92 ;...
+12.75 43.5 ;...
+13.25 43.17 ;...
+13.75 43.25 ;...
+14 43.08 ;...
+14.58 42.92 ;...
+15.17 42.75 ;...
+15.67 42.67 ;...
+16.08 42.75 ;...
+16.5 42.67 ;...
+17 42.42 ;...
+17.5 42.08 ;...
+17.75 41.75 ;...
+18.17 41.5 ;...
+18.67 41.25 ;...
+19.17 41 ;...
+19.67 40.75 ;...
+20.08 40.33 ;...
+20.25 39.67 ;...
+20.58 39.5 ;...
+20.58 39.5 ;...
+20.92 39.17 ;...
+21.5 39.08 ;...
+21.92 39 ;...
+22.25 39.08 ;...
+22.75 39 ;...
+23.25 38.75 ;...
+23.75 38.42 ;...
+24.08 38 ;...
+24.33 37.5 ;...
+24.83 37.25 ;...
+25.33 37.08 ;...
+25.83 36.75 ;...
+26.17 36.42 ;...
+26.67 36.08 ;...
+27.17 35.75 ;...
+27.58 35.5 ;...
+28 35.17 ;...
+28 34.67 ;...
+28.5 34.83 ;...
+29 35 ;...
+29.5 35 ;...
+28.92 34.67 ;...
+28.33 34.42 ;...
+27.92 34.42 ;...
+27.75 34.17 ;...
+28.08 33.75 ;...
+28.42 33.42 ;...
+28.75 33.25 ;...
+29.08 33 ;...
+29.58 32.75 ;...
+29.58 32.75 ;...
+30 32.58 ;...
+NaN NaN ;...
+74.08 112.83 ;...
+74.33 111.58 ;...
+74.5 112.08 ;...
+74.42 113.33 ;...
+74.08 112.83 ;...
+NaN NaN ;...
+40.33 26.58 ;...
+40.33 27.17 ;...
+40.33 27.75 ;...
+40.33 27.75 ;...
+40.33 28.42 ;...
+40.33 29 ;...
+40.58 28.92 ;...
+40.67 29.42 ;...
+41 28.83 ;...
+41 28.17 ;...
+40.92 27.42 ;...
+40.67 27.08 ;...
+40.33 26.58 ;...
+NaN NaN ;...
+14.08 13.08 ;...
+13.75 13.33 ;...
+13.33 13.5 ;...
+13.08 13.83 ;...
+12.75 13.92 ;...
+12.5 14.17 ;...
+12.75 14.58 ;...
+12.92 15.08 ;...
+13.42 15.25 ;...
+13.42 14.75 ;...
+13.5 14.17 ;...
+13.83 14.17 ;...
+14.17 13.92 ;...
+14.25 13.42 ;...
+14.08 13.08 ;...
+NaN NaN ;...
+-2.08 31.67 ;...
+-2.75 31.83 ;...
+-2.33 32.25 ;...
+-2.5 32.75 ;...
+-2.5 33.42 ;...
+-2.17 33.83 ;...
+-2.08 33.25 ;...
+-1.75 33.58 ;...
+-1.33 33.92 ;...
+-0.75 34.08 ;...
+-0.42 34.25 ;...
+0.08 34 ;...
+0.25 33.5 ;...
+0.25 33 ;...
+0.17 32.42 ;...
+-0.17 31.83 ;...
+-0.75 31.67 ;...
+-1.17 31.83 ;...
+-1.58 31.75 ;...
+-2.08 31.67 ;...
+NaN NaN ;...
+-6 29.25 ;...
+-6.5 29.5 ;...
+-7 29.83 ;...
+-7.42 30.33 ;...
+-8.08 30.58 ;...
+-8.58 30.5 ;...
+-8.75 31.08 ;...
+-8.25 31 ;...
+-7.75 30.75 ;...
+-7.17 30.5 ;...
+-6.83 30.58 ;...
+-6.5 30.17 ;...
+-6.41753 30.0649 ;...
+-6.33504 29.9599 ;...
+-6.25253 29.8549 ;...
+-6.17 29.75 ;...
+-6.06501 29.8125 ;...
+-5.96001 29.875 ;...
+-5.85501 29.9375 ;...
+-5.75 30 ;...
+-5.605 29.9575 ;...
+-5.46001 29.915 ;...
+-5.315 29.8725 ;...
+-5.17 29.83 ;...
+-4.58 29.67 ;...
+-4 29.42 ;...
+-3.33 29.33 ;...
+-4 29.08 ;...
+-4.5 29.25 ;...
+-5 29.08 ;...
+-5.58 29.33 ;...
+-6 29.25 ;...
+NaN NaN ;...
+-12.17 34.08 ;...
+-12.58 34.17 ;...
+-13 34.33 ;...
+-13.42 34.33 ;...
+-13.75 34.67 ;...
+-14.17 34.75 ;...
+-14.08 35.08 ;...
+-14.5 35.33 ;...
+-13.83 35.25 ;...
+-13.42 34.92 ;...
+-12.83 34.83 ;...
+-12.25 34.83 ;...
+-12.105 34.8726 ;...
+-11.96 34.9151 ;...
+-11.815 34.9576 ;...
+-11.67 35 ;...
+-11.5225 34.9174 ;...
+-11.375 34.8348 ;...
+-11.2275 34.7524 ;...
+-11.08 34.67 ;...
+-10.58 34.58 ;...
+-9.92 34.5 ;...
+-9.58 34.08 ;...
+-9.83 34 ;...
+-10.83 34.25 ;...
+-11 34.25 ;...
+-11.75 34.42 ;...
+-12.17 34.08 ;...
+NaN NaN ;...
+42.5 27.5 ;...
+42.08 27.92 ;...
+41.67 28.08 ;...
+41.33 28.58 ;...
+41.17 29.17 ;...
+41.08 29.83 ;...
+41.17 30.5 ;...
+41.08 31.08 ;...
+41.33 31.58 ;...
+41.58 32.08 ;...
+41.83 32.58 ;...
+42 33.25 ;...
+41.92 33.83 ;...
+41.92 34.5 ;...
+42 35 ;...
+41.67 35.33 ;...
+41.67 36 ;...
+41.25 36.33 ;...
+41.25 36.75 ;...
+41 37.25 ;...
+41.08 37.67 ;...
+40.92 38.17 ;...
+41 38.75 ;...
+41.08 39.33 ;...
+41 39.92 ;...
+41.08 40.5 ;...
+41.42 41.08 ;...
+41.67 41.58 ;...
+42 41.67 ;...
+42.33 41.42 ;...
+42.33 41.42 ;...
+42.75 41.25 ;...
+42.92 41 ;...
+43.17 40.33 ;...
+43.42 39.83 ;...
+43.67 39.5 ;...
+44.08 39 ;...
+44.33 38.5 ;...
+44.42 38 ;...
+44.58 37.67 ;...
+44.75 37.25 ;...
+45.08 37 ;...
+45.08 36.67 ;...
+45 36.08 ;...
+45.08 35.58 ;...
+44.83 35.08 ;...
+44.75 34.58 ;...
+44.5 34.25 ;...
+44.33 33.75 ;...
+44.58 33.42 ;...
+45 33.58 ;...
+45.17 33.25 ;...
+45.33 32.67 ;...
+45.75 33.08 ;...
+45.92 33.75 ;...
+46.17 33.17 ;...
+46 32.58 ;...
+46.25 31.83 ;...
+46.58 32.08 ;...
+46.58 31.42 ;...
+46.58 30.83 ;...
+46.58 30.83 ;...
+46.17 30.58 ;...
+45.83 30.17 ;...
+45.67 29.58 ;...
+45.17 29.67 ;...
+44.83 29.5 ;...
+44.67 29 ;...
+44.33 28.67 ;...
+43.92 28.67 ;...
+43.42 28.58 ;...
+43.33 28 ;...
+42.83 27.92 ;...
+42.5 27.5 ;...
+NaN NaN ;...
+45.92 34.42 ;...
+45.75 34.75 ;...
+45.42 35 ;...
+45.25 35.5 ;...
+45.42 36.08 ;...
+45.42 36.67 ;...
+45.33 37.33 ;...
+45.83 37.75 ;...
+46.25 38.25 ;...
+46.42 37.92 ;...
+46.67 37.67 ;...
+46.67 38.17 ;...
+47 38.75 ;...
+47.08 39.33 ;...
+47.25 39 ;...
+47.17 38.42 ;...
+47.08 37.58 ;...
+46.75 36.83 ;...
+46.67 36.08 ;...
+46.42 35.42 ;...
+46.08 35 ;...
+45.92 34.42 ;...
+NaN NaN ;...
+44.75 46.67 ;...
+44.42 46.67 ;...
+44.25 47.08 ;...
+43.75 47.42 ;...
+43.42 47.42 ;...
+43 47.42 ;...
+42.5 47.83 ;...
+42.08 48.25 ;...
+41.83 48.67 ;...
+41.42 49 ;...
+41 49.17 ;...
+40.58 49.67 ;...
+40.5403 49.8153 ;...
+40.5004 49.9603 ;...
+40.4603 50.1053 ;...
+40.42 50.25 ;...
+40.3977 50.1249 ;...
+40.3753 49.9998 ;...
+40.3527 49.8749 ;...
+40.33 49.75 ;...
+40 49.42 ;...
+39.5 49.25 ;...
+39.17 49.17 ;...
+39.17 48.75 ;...
+38.58 48.83 ;...
+38.08 48.92 ;...
+37.58 49 ;...
+37.42 49.5 ;...
+37.33 50.17 ;...
+37.08 50.33 ;...
+36.75 51 ;...
+36.58 51.58 ;...
+36.75 52.42 ;...
+36.92 53.17 ;...
+36.83 53.92 ;...
+37.17 54 ;...
+37.17 54 ;...
+37.83 53.75 ;...
+38.5 53.75 ;...
+39.08 54 ;...
+39.17 53.58 ;...
+39.58 53.42 ;...
+40 53.5 ;...
+40 52.75 ;...
+40.33 52.67 ;...
+40.83 52.92 ;...
+40.67 53.5 ;...
+40.67 54.17 ;...
+41 54.75 ;...
+41.33 54.33 ;...
+41.67 53.92 ;...
+42.08 53.67 ;...
+42 53 ;...
+41.67 52.67 ;...
+41.25 52.75 ;...
+41.75 52.42 ;...
+41.855 52.3976 ;...
+41.96 52.3751 ;...
+42.065 52.3526 ;...
+42.17 52.33 ;...
+42.2726 52.4146 ;...
+42.3751 52.4994 ;...
+42.4776 52.5846 ;...
+42.58 52.67 ;...
+42.6425 52.6276 ;...
+42.705 52.5852 ;...
+42.7675 52.5426 ;...
+42.83 52.5 ;...
+42.83 51.83 ;...
+43.17 51.33 ;...
+43.67 51.17 ;...
+44.17 50.75 ;...
+44.33 50.17 ;...
+44.58 50.25 ;...
+44.58 50.92 ;...
+44.5 51.42 ;...
+44.5 51.42 ;...
+45 51.17 ;...
+45.0828 51.3144 ;...
+45.1654 51.4592 ;...
+45.2478 51.6044 ;...
+45.33 51.75 ;...
+45.353 51.9373 ;...
+45.3756 52.1247 ;...
+45.398 52.3123 ;...
+45.42 52.5 ;...
+45.17 53.08 ;...
+45.25 53.67 ;...
+45.25 54.25 ;...
+45.5 53.92 ;...
+45.92 53.83 ;...
+46.42 53.67 ;...
+46.83 53.17 ;...
+47.17 52.58 ;...
+47.17 52.08 ;...
+47.17 51.42 ;...
+47.25 50.92 ;...
+46.83 50.17 ;...
+46.75 49.5 ;...
+46.58 48.92 ;...
+46.33 49 ;...
+46.25 48.5 ;...
+45.92 48.25 ;...
+46.08 47.58 ;...
+45.67 47.33 ;...
+45.17 47 ;...
+44.75 46.67 ;...
+NaN NaN ;...
+45 58.17 ;...
+44.5 58.17 ;...
+44.25 58.33 ;...
+43.67 58.33 ;...
+43.67 59 ;...
+43.67 59.67 ;...
+43.5 59.83 ;...
+43.67 60.5 ;...
+44.17 61.08 ;...
+44.67 61.08 ;...
+44.75 61.5 ;...
+45 61.83 ;...
+45.33 61.5 ;...
+45.75 61 ;...
+46 61 ;...
+46.42 61.33 ;...
+46.75 61.67 ;...
+46.5 61 ;...
+46.67 60.75 ;...
+46.5 60.08 ;...
+46.17 60.08 ;...
+46.33 59.75 ;...
+45.92 59.5 ;...
+45.92 59 ;...
+45.83 58.67 ;...
+45.42 58.58 ;...
+45 58.17 ;...
+NaN NaN ;...
+45.58 73.42 ;...
+45.25 73.83 ;...
+44.92 74.08 ;...
+45.67 74.25 ;...
+46 74.17 ;...
+46.17 74.75 ;...
+46.42 75.17 ;...
+46.58 76 ;...
+46.42 76.83 ;...
+46.48 77.33 ;...
+46.33 78 ;...
+46.42 78.75 ;...
+46.75 79.25 ;...
+46.75 78.75 ;...
+46.58 78.33 ;...
+46.67 77.83 ;...
+46.58 77.33 ;...
+46.67 76.83 ;...
+46.75 76.08 ;...
+46.67 75.25 ;...
+46.75 74.75 ;...
+46.42 74.17 ;...
+46.17 73.67 ;...
+45.58 73.42 ;...
+NaN NaN ;...
+51.58 103.58 ;...
+51.33 104.5 ;...
+51.5 105.25 ;...
+51.67 105.92 ;...
+52.17 106.25 ;...
+52.5 107 ;...
+52.67 107.83 ;...
+53 108.33 ;...
+53.5 109 ;...
+54 109.42 ;...
+54.5 109.5 ;...
+55.08 109.67 ;...
+55.58 109.92 ;...
+55.75 109.5 ;...
+55.5 109.25 ;...
+55.17 109.17 ;...
+54.75 108.83 ;...
+54.33 108.5 ;...
+53.92 108.17 ;...
+53.5 107.58 ;...
+53.08 107 ;...
+52.75 106.58 ;...
+52.5 106.08 ;...
+52.17 105.67 ;...
+51.83 105.25 ;...
+51.75 104.5 ;...
+51.58 103.58 ;...
+NaN NaN ;...
+61.08 30 ;...
+60.75 30.58 ;...
+60.33 30.92 ;...
+59.92 31.08 ;...
+59.92 31.5 ;...
+60.17 31.75 ;...
+60.17 32.5 ;...
+60.5 32.83 ;...
+60.83 32.83 ;...
+61.17 32.5 ;...
+61.33 31.83 ;...
+61.58 31.42 ;...
+61.58 30.75 ;...
+61.33 30.17 ;...
+61.08 30 ;...
+NaN NaN ;...
+61.75 34.5 ;...
+61.5 34.83 ;...
+61.33 35.5 ;...
+60.92 35.5 ;...
+60.92 36 ;...
+61.08 36.42 ;...
+61.42 36.42 ;...
+61.67 36 ;...
+62 35.75 ;...
+62.42 35.83 ;...
+62.67 35.25 ;...
+62.83 34.5 ;...
+62.58 34.83 ;...
+62.5 35.33 ;...
+62.17 35.33 ;...
+62.17 34.67 ;...
+61.75 34.5 ;...
+NaN NaN ;...
+-21.92 43.25 ;...
+-21.33 43.58 ;...
+-20.92 43.92 ;...
+-20.5 44.08 ;...
+-20 44.42 ;...
+-19.58 44.5 ;...
+-19 44.25 ;...
+-18.58 44.25 ;...
+-18 44 ;...
+-18 44 ;...
+-17.42 43.92 ;...
+-16.92 44.25 ;...
+-16.17 44.5 ;...
+-16.17 44.92 ;...
+-15.92 45.42 ;...
+-15.75 45.92 ;...
+-15.5 46.42 ;...
+-15.25 46.83 ;...
+-14.75 47.25 ;...
+-14.75 47.67 ;...
+-14.33 47.58 ;...
+-14.08 47.92 ;...
+-13.58 47.83 ;...
+-13.5 48.33 ;...
+-13.33 48.75 ;...
+-12.92 48.83 ;...
+-12.42 48.83 ;...
+-12 49.25 ;...
+-12.5 49.58 ;...
+-13 49.83 ;...
+-13.58 49.92 ;...
+-14.17 50.17 ;...
+-14.92 50.33 ;...
+-15.42 50.42 ;...
+-15.92 50.08 ;...
+-15.5 49.67 ;...
+-16.33 49.75 ;...
+-16.75 49.67 ;...
+-17 49.42 ;...
+-17.42 49.42 ;...
+-17.42 49.42 ;...
+-18 49.33 ;...
+-18.5 49.25 ;...
+-19.08 49 ;...
+-19.58 48.83 ;...
+-20.08 48.67 ;...
+-20.5 48.5 ;...
+-20.92 48.42 ;...
+-21.33 48.25 ;...
+-21.75 48.08 ;...
+-22.17 47.92 ;...
+-22.58 47.83 ;...
+-23 47.75 ;...
+-23.42 47.67 ;...
+-23.75 47.5 ;...
+-24.25 47.33 ;...
+-24.67 47.17 ;...
+-25.17 46.83 ;...
+-25.08 46.42 ;...
+-25.25 45.92 ;...
+-25.5 45.5 ;...
+-25.58 45 ;...
+-25.33 44.58 ;...
+-25 44.17 ;...
+-24.5 43.75 ;...
+-23.92 43.67 ;...
+-23.25 43.58 ;...
+-22.83 43.33 ;...
+-22.33 43.25 ;...
+-21.92 43.25 ;...
+NaN NaN ;...
+-21 55.17 ;...
+-20.92 55.58 ;...
+-21.17 55.83 ;...
+-21.33 55.75 ;...
+-21.33 55.33 ;...
+-21 55.17 ;...
+NaN NaN ;...
+-20.5 57.33 ;...
+-20 57.5 ;...
+-20.17 57.75 ;...
+-20.5 57.75 ;...
+-20.5 57.33 ;...
+NaN NaN ;...
+12.42 53.33 ;...
+12.67 53.67 ;...
+12.58 54.17 ;...
+12.5 54.58 ;...
+12.25 54.08 ;...
+12.25 53.67 ;...
+12.42 53.33 ;...
+NaN NaN ;...
+-48.83 68.83 ;...
+-48.67 69 ;...
+-49 69.33 ;...
+-49.25 69.67 ;...
+-49.17 70 ;...
+-49.08 70.58 ;...
+-49.42 70.42 ;...
+-49.42 70 ;...
+-49.67 69.83 ;...
+-49.5 69.5 ;...
+-49.67 68.92 ;...
+-49.25 69.17 ;...
+-48.83 68.83 ;...
+NaN NaN ;...
+11.5628 92.6807 ;...
+11.8212 92.5312 ;...
+12.7377 92.7533 ;...
+12.7509 92.9143 ;...
+12.6122 92.9652 ;...
+11.5628 92.6807 ;...
+NaN NaN ;...
+12.997 92.8677 ;...
+13.1611 92.8272 ;...
+13.4075 92.8832 ;...
+13.49 92.9795 ;...
+13.4714 93.0646 ;...
+13.1872 93.0769 ;...
+12.997 92.8677 ;...
+NaN NaN ;...
+2.36635 96.4071 ;...
+2.51322 96.0803 ;...
+2.71893 95.8091 ;...
+2.85556 95.848 ;...
+2.88239 95.974 ;...
+2.6184 96.2558 ;...
+2.36635 96.4071 ;...
+NaN NaN ;...
+1.33 97.25 ;...
+1.5 97.5 ;...
+1 98 ;...
+0.58 98 ;...
+1 97.58 ;...
+1.33 97.25 ;...
+NaN NaN ;...
+-1 98.75 ;...
+-0.92 99 ;...
+-1.67 99.42 ;...
+-1.75 99.08 ;...
+-1.5 98.83 ;...
+-1 98.75 ;...
+NaN NaN ;...
+8.08 79.75 ;...
+8.5 79.83 ;...
+9 79.92 ;...
+9.42 80.17 ;...
+9.83 80 ;...
+9.5 80.58 ;...
+9 80.92 ;...
+8.5 81.25 ;...
+8 81.5 ;...
+7.58 81.83 ;...
+7 81.83 ;...
+6.5 81.67 ;...
+6.17 81.25 ;...
+6 80.67 ;...
+6 80.25 ;...
+6.42 80 ;...
+7.08 79.83 ;...
+7.5 79.75 ;...
+8.08 79.75 ;...
+NaN NaN ;...
+19.33 108.67 ;...
+19.58 109.08 ;...
+19.92 109.58 ;...
+20 110 ;...
+20 110.5 ;...
+20 111 ;...
+19.67 111 ;...
+19.33 110.67 ;...
+18.83 110.5 ;...
+18.5 110.17 ;...
+18.25 109.67 ;...
+18.25 109.25 ;...
+18.5 108.75 ;...
+18.92 108.67 ;...
+19.33 108.67 ;...
+NaN NaN ;...
+23.67 120.17 ;...
+24.17 120.5 ;...
+24.58 120.75 ;...
+25 121.08 ;...
+25.25 121.58 ;...
+25.08 121.92 ;...
+24.58 121.92 ;...
+24.08 121.67 ;...
+23.5 121.5 ;...
+23 121.33 ;...
+22.58 121 ;...
+22 120.83 ;...
+22.42 120.67 ;...
+22.58 120.33 ;...
+23.17 120.17 ;...
+23.67 120.17 ;...
+NaN NaN ;...
+33.25 129.5 ;...
+33.5 130 ;...
+33.83 130.42 ;...
+33.92 130.92 ;...
+33.67 131.08 ;...
+33.67 131.58 ;...
+33.25 131.67 ;...
+32.83 131.92 ;...
+32.42 131.67 ;...
+31.92 131.42 ;...
+31.42 131.33 ;...
+31.08 130.75 ;...
+31.25 130.17 ;...
+31.67 130.17 ;...
+32.08 130.17 ;...
+32.33 130.5 ;...
+32.75 130.5 ;...
+33.08 130.25 ;...
+32.75 130.17 ;...
+32.75 129.75 ;...
+33.25 129.5 ;...
+NaN NaN ;...
+33.42 132.25 ;...
+33.67 132.67 ;...
+34 132.83 ;...
+33.92 133.33 ;...
+34.25 133.58 ;...
+34.33 134.08 ;...
+34.17 134.58 ;...
+33.83 134.67 ;...
+33.58 134.33 ;...
+33.25 134.08 ;...
+33.5 133.75 ;...
+33.33 133.25 ;...
+33.08 133.08 ;...
+32.75 132.92 ;...
+32.92 132.42 ;...
+33.42 132.25 ;...
+NaN NaN ;...
+34.33 130.92 ;...
+34.5 131.42 ;...
+34.75 131.83 ;...
+35.08 132.33 ;...
+35.5 132.75 ;...
+35.5 133.25 ;...
+35.58 134 ;...
+35.67 134.67 ;...
+35.75 135.25 ;...
+35.5 135.67 ;...
+35.67 136 ;...
+36.08 136 ;...
+36.42 136.33 ;...
+36.83 136.67 ;...
+37.25 136.75 ;...
+37.5 137.17 ;...
+37.08 137 ;...
+36.75 137 ;...
+37 137.58 ;...
+37.17 138.17 ;...
+37.17 138.17 ;...
+37.42 138.58 ;...
+37.83 138.83 ;...
+38.08 139.33 ;...
+38.58 139.5 ;...
+39 139.83 ;...
+39.42 140 ;...
+39.92 140 ;...
+40.33 140 ;...
+40.67 140 ;...
+41.17 140.33 ;...
+40.92 140.67 ;...
+40.92 141.08 ;...
+41.17 141.08 ;...
+41.17 140.75 ;...
+41.5 140.83 ;...
+41.33 141.42 ;...
+41 141.33 ;...
+40.58 141.42 ;...
+40.17 141.75 ;...
+39.67 141.92 ;...
+39.08 141.83 ;...
+38.75 141.5 ;...
+38.33 141.5 ;...
+38.33 141.08 ;...
+38.08 140.92 ;...
+37.58 141 ;...
+37 140.92 ;...
+36.75 140.67 ;...
+36.17 140.58 ;...
+35.75 140.75 ;...
+35.75 140.75 ;...
+35.5 140.42 ;...
+35.17 140.33 ;...
+34.92 139.75 ;...
+35.5 139.83 ;...
+35.25 139.58 ;...
+35.25 139.08 ;...
+34.58 138.83 ;...
+35.08 138.67 ;...
+34.58 138.08 ;...
+34.58 137.25 ;...
+35 136.75 ;...
+34.67 136.5 ;...
+34.33 136.75 ;...
+33.92 136.17 ;...
+33.42 135.75 ;...
+33.5 135.42 ;...
+33.92 135.17 ;...
+34.33 135.17 ;...
+34.75 135.5 ;...
+34.75 134.92 ;...
+34.83 134.5 ;...
+34.58 133.92 ;...
+34.5 133.5 ;...
+34.33 132.92 ;...
+34.25 132.33 ;...
+33.92 132 ;...
+34 131.5 ;...
+33.92 130.92 ;...
+34.33 130.92 ;...
+NaN NaN ;...
+42.58 139.83 ;...
+42.92 140.42 ;...
+43.25 140.33 ;...
+43.17 140.75 ;...
+43.17 141.25 ;...
+43.42 141.33 ;...
+43.75 141.25 ;...
+44 141.58 ;...
+44.33 141.67 ;...
+44.75 141.75 ;...
+45.25 141.5 ;...
+45.5 141.92 ;...
+45.17 142.33 ;...
+44.75 142.67 ;...
+44.75 142.67 ;...
+44.5 143 ;...
+44.17 143.58 ;...
+44 144.17 ;...
+43.92 144.67 ;...
+44.25 145.33 ;...
+43.75 145 ;...
+43.58 145.25 ;...
+43.33 145.25 ;...
+43.42 145.83 ;...
+43.17 145.33 ;...
+42.92 144.75 ;...
+43 144.17 ;...
+42.67 143.67 ;...
+42.33 143.33 ;...
+42 143.25 ;...
+42.25 142.5 ;...
+42.58 141.83 ;...
+42.5 141.33 ;...
+42.33 140.92 ;...
+42.5 140.67 ;...
+42.5 140.33 ;...
+42.25 140.25 ;...
+42.08 140.67 ;...
+41.83 141.08 ;...
+41.67 140.5 ;...
+41.42 140 ;...
+42 140 ;...
+42.25 139.75 ;...
+42.58 139.83 ;...
+NaN NaN ;...
+26.0796 127.668 ;...
+26.3183 127.656 ;...
+26.5633 127.817 ;...
+26.8715 128.303 ;...
+26.8273 128.34 ;...
+26.7382 128.348 ;...
+26.419 127.962 ;...
+26.1225 127.793 ;...
+26.0796 127.668 ;...
+NaN NaN ;...
+28.0781 129.296 ;...
+28.1158 129.243 ;...
+28.2665 129.232 ;...
+28.3733 129.293 ;...
+28.4989 129.525 ;...
+28.4427 129.726 ;...
+28.0781 129.296 ;...
+NaN NaN ;...
+43.9565 145.442 ;...
+44.5231 146.07 ;...
+44.4503 146.395 ;...
+43.9565 145.442 ;...
+NaN NaN ;...
+44.42 146.92 ;...
+45 147.42 ;...
+45.33 147.92 ;...
+45.25 148.33 ;...
+45.5 148.83 ;...
+45.08 148.17 ;...
+44.75 147.5 ;...
+44.42 146.92 ;...
+NaN NaN ;...
+45.67 149.5 ;...
+46.08 150 ;...
+46.25 150.5 ;...
+45.75 149.83 ;...
+45.67 149.5 ;...
+NaN NaN ;...
+50.27 155.17 ;...
+50.42 155.67 ;...
+50.75 156.08 ;...
+50.5 156.08 ;...
+50.2 155.83 ;...
+50 155.17 ;...
+50.27 155.17 ;...
+NaN NaN ;...
+54.83 137.25 ;...
+55.17 137.5 ;...
+55 138.08 ;...
+54.58 137.58 ;...
+54.83 137.25 ;...
+NaN NaN ;...
+58.5 163.33 ;...
+59 163.67 ;...
+59.17 164.25 ;...
+58.92 164.42 ;...
+58.5 163.33 ;...
+NaN NaN ;...
+53.33 141.75 ;...
+53.58 142.25 ;...
+53.6425 142.312 ;...
+53.7051 142.375 ;...
+53.7675 142.437 ;...
+53.83 142.5 ;...
+53.935 142.438 ;...
+54.0401 142.376 ;...
+54.145 142.313 ;...
+54.25 142.25 ;...
+54.2701 142.355 ;...
+54.2902 142.46 ;...
+54.3101 142.565 ;...
+54.33 142.67 ;...
+54 142.92 ;...
+53.5 143 ;...
+53 143.17 ;...
+52.5 143.17 ;...
+52 143.08 ;...
+51.5 143.33 ;...
+51 143.5 ;...
+50.5 143.67 ;...
+50 143.92 ;...
+49.5 144.17 ;...
+49.08 144.33 ;...
+49.33 143.75 ;...
+49.33 143.25 ;...
+49.33 143.25 ;...
+49.08 142.92 ;...
+48.75 142.83 ;...
+48.33 142.58 ;...
+47.83 142.5 ;...
+47.5 142.67 ;...
+47.25 143 ;...
+46.92 143.08 ;...
+46.75 143.42 ;...
+46.25 143.42 ;...
+46.58 143 ;...
+46.67 142.58 ;...
+46.42 142.25 ;...
+45.92 142 ;...
+46.58 141.75 ;...
+47 142 ;...
+47.58 142 ;...
+48 142.17 ;...
+48.5 142 ;...
+48.75 141.83 ;...
+49.08 142 ;...
+49.5 142.08 ;...
+50 142.08 ;...
+50.5 142 ;...
+51 142.08 ;...
+51.42 142 ;...
+51.75 141.67 ;...
+52.25 141.67 ;...
+52.75 141.83 ;...
+53.33 141.75 ;...
+NaN NaN ;...
+71 180 ;...
+70.83 178.83 ;...
+71.12 178.67 ;...
+71.53 180 ;...
+71.53 181.75 ;...
+71.4403 181.96 ;...
+71.3505 182.169 ;...
+71.2603 182.375 ;...
+71.17 182.58 ;...
+71.104 182.138 ;...
+71.0371 181.699 ;...
+70.969 181.263 ;...
+70.9 180.83 ;...
+71 180 ;...
+NaN NaN ;...
+73.5 140.58 ;...
+73.83 141 ;...
+73.92 142.25 ;...
+73.5 143.5 ;...
+73.17 143.5 ;...
+73.25 141.58 ;...
+73.5 140.58 ;...
+NaN NaN ;...
+74.25 140.17 ;...
+74.25 141 ;...
+74 141 ;...
+73.92 140.33 ;...
+74.25 140.17 ;...
+NaN NaN ;...
+75.58 146.5 ;...
+75.42 147.33 ;...
+75.33 149.25 ;...
+75.17 151 ;...
+74.75 150.5 ;...
+74.75 149.25 ;...
+75.08 147.25 ;...
+75.58 146.5 ;...
+NaN NaN ;...
+75.25 137.17 ;...
+75.92 137.5 ;...
+76.17 139 ;...
+75.75 141 ;...
+76.17 142 ;...
+75.83 143.25 ;...
+75.83 144 ;...
+75.67 145 ;...
+75.42 145 ;...
+75.08 144 ;...
+74.83 142.83 ;...
+75 142 ;...
+74.83 140.5 ;...
+74.67 139.25 ;...
+74.75 138.08 ;...
+75.25 137.17 ;...
+NaN NaN ;...
+77.92 99.33 ;...
+78.33 99.83 ;...
+78.83 100.58 ;...
+79.25 101.25 ;...
+79.42 102.33 ;...
+79.17 103.92 ;...
+78.83 105 ;...
+78.33 105 ;...
+78.17 103.17 ;...
+78.17 101 ;...
+77.92 99.33 ;...
+NaN NaN ;...
+80.08 91.17 ;...
+80.5 92.67 ;...
+80.92 93.17 ;...
+81.25 95.58 ;...
+81 96.42 ;...
+80.9378 96.6955 ;...
+80.8754 96.9673 ;...
+80.8128 97.2355 ;...
+80.75 97.5 ;...
+80.6876 97.3725 ;...
+80.6251 97.2467 ;...
+80.5626 97.1225 ;...
+80.5 97 ;...
+80.4176 97.1487 ;...
+80.3351 97.2949 ;...
+80.2526 97.4386 ;...
+80.17 97.58 ;...
+80 99.25 ;...
+79.9177 99.4856 ;...
+79.8353 99.7174 ;...
+79.7527 99.9455 ;...
+79.67 100.17 ;...
+79.5651 99.9975 ;...
+79.4602 99.8284 ;...
+79.3551 99.6626 ;...
+79.25 99.5 ;...
+78.83 99.83 ;...
+78.75 98.33 ;...
+78.92 96.75 ;...
+79.08 94.67 ;...
+79.5 93.83 ;...
+79.67 91.83 ;...
+80.08 91.17 ;...
+NaN NaN ;...
+71.58 51.67 ;...
+71.705 51.67 ;...
+71.83 51.67 ;...
+71.955 51.67 ;...
+72.08 51.67 ;...
+72.1431 51.9373 ;...
+72.2057 52.2063 ;...
+72.2681 52.4772 ;...
+72.33 52.75 ;...
+72.415 52.6884 ;...
+72.5 52.6262 ;...
+72.585 52.5634 ;...
+72.67 52.5 ;...
+72.7013 52.5456 ;...
+72.7326 52.5914 ;...
+72.764 52.6374 ;...
+72.7953 52.6835 ;...
+72.8265 52.7298 ;...
+72.8578 52.7763 ;...
+72.8891 52.8229 ;...
+72.9203 52.8697 ;...
+73.0453 53.0585 ;...
+73.17 53.25 ;...
+73.233 53.5171 ;...
+73.2957 53.7861 ;...
+73.358 54.0571 ;...
+73.42 54.33 ;...
+73.5026 54.2068 ;...
+73.5851 54.0824 ;...
+73.6676 53.9568 ;...
+73.75 53.83 ;...
+74.17 54.92 ;...
+74.75 55.75 ;...
+75.08 55.75 ;...
+75.33 57.5 ;...
+75.33 57.5 ;...
+75.58 58.17 ;...
+75.92 59.25 ;...
+76.25 61.17 ;...
+76.25 63.17 ;...
+76.42 65.17 ;...
+76.75 66 ;...
+77 67.75 ;...
+76.83 69.08 ;...
+76.33 68.83 ;...
+76.08 67.25 ;...
+75.83 65.5 ;...
+75.67 63.83 ;...
+75.33 62.25 ;...
+75 60.75 ;...
+74.58 59.83 ;...
+74.17 58.67 ;...
+73.75 57.83 ;...
+73.33 57 ;...
+72.92 56.17 ;...
+72.5 55.58 ;...
+72 55.5 ;...
+71.5 55.75 ;...
+71.08 56.33 ;...
+70.9984 56.6692 ;...
+70.9162 57.0056 ;...
+70.8334 57.3392 ;...
+70.75 57.67 ;...
+70.7078 57.4813 ;...
+70.6654 57.2934 ;...
+70.6228 57.1063 ;...
+70.58 56.92 ;...
+70.67 55.33 ;...
+70.83 53.83 ;...
+70.9155 53.5832 ;...
+71.0007 53.3343 ;...
+71.0855 53.0832 ;...
+71.17 52.83 ;...
+71.2732 52.5446 ;...
+71.3759 52.2562 ;...
+71.4782 51.9646 ;...
+71.58 51.67 ;...
+NaN NaN ;...
+68.75 48.75 ;...
+69.25 48.5 ;...
+69.58 49.17 ;...
+69.25 50.33 ;...
+68.92 50 ;...
+68.75 48.75 ;...
+NaN NaN ;...
+80.6667 63.2489 ;...
+80.6746 62.948 ;...
+80.8487 63.145 ;...
+80.938 63.3672 ;...
+81.059 64.3083 ;...
+81.2687 64.7424 ;...
+81.1606 65.142 ;...
+81.0427 65.3646 ;...
+80.894 65.2347 ;...
+80.774 64.8409 ;...
+80.6667 63.2489 ;...
+NaN NaN ;...
+80.3915 59.6481 ;...
+80.7021 59.4564 ;...
+80.8247 59.5796 ;...
+80.8689 59.7898 ;...
+80.8001 60.4064 ;...
+80.8087 61.3671 ;...
+80.8967 61.9936 ;...
+80.67 62.2174 ;...
+80.5571 61.8584 ;...
+80.4004 61.2053 ;...
+80.4883 60.7564 ;...
+80.3915 59.6481 ;...
+NaN NaN ;...
+79.8721 56.6394 ;...
+79.9258 56.5423 ;...
+79.982 56.0694 ;...
+80.1152 56.1001 ;...
+80.2779 56.2996 ;...
+80.2388 57.0281 ;...
+80.1813 57.044 ;...
+79.9344 56.926 ;...
+79.8721 56.6394 ;...
+NaN NaN ;...
+80.4523 57.5083 ;...
+80.4277 58.4501 ;...
+80.3429 59.0025 ;...
+80.199 58.6139 ;...
+80.0375 57.7287 ;...
+80.1043 57.6403 ;...
+80.4523 57.5083 ;...
+NaN NaN ;...
+80.8 54.25 ;...
+81.03 54.83 ;...
+81.03 56.5 ;...
+81.42 56.5 ;...
+81.75 58.5 ;...
+81.33 58.83 ;...
+81 57.67 ;...
+80.8 58.5 ;...
+80.63 56.33 ;...
+80.8 54.25 ;...
+NaN NaN ;...
+80.25 53.17 ;...
+80.5 54 ;...
+80.4453 54.2543 ;...
+80.3904 54.5057 ;...
+80.3353 54.7542 ;...
+80.28 55 ;...
+80.2734 54.5415 ;...
+80.2662 54.0836 ;...
+80.2584 53.6264 ;...
+80.25 53.17 ;...
+NaN NaN ;...
+80.55 44.5 ;...
+80.9 47 ;...
+80.75 48 ;...
+80.55 48 ;...
+80.78 50.33 ;...
+80.67 51.17 ;...
+80.4 50 ;...
+80.12 50 ;...
+80.05 48.42 ;...
+80.17 47 ;...
+80.42 47 ;...
+80.42 45.67 ;...
+80.55 44.5 ;...
+NaN NaN ;...
+79.75 11 ;...
+79.83 13.83 ;...
+79.67 15.5 ;...
+80.03 16.33 ;...
+79.92 18 ;...
+80.25 18 ;...
+80.5 20 ;...
+80.17 21 ;...
+80.42 23 ;...
+80.25 24.83 ;...
+80.25 24.83 ;...
+80.17 27 ;...
+79.87 27 ;...
+79.42 25.67 ;...
+79.17 23.83 ;...
+79.33 20.92 ;...
+79.7 18.75 ;...
+79.17 19 ;...
+78.83 21.5 ;...
+78.42 22.17 ;...
+78.08 23.17 ;...
+77.75 24.83 ;...
+77.25 22.67 ;...
+77.42 20.83 ;...
+77.92 21.67 ;...
+78.18 20.67 ;...
+78.63 20.25 ;...
+78.42 19 ;...
+78.03 18.92 ;...
+77.5 18.08 ;...
+77 17.33 ;...
+76.5 17 ;...
+77.02 15.17 ;...
+77.5 14 ;...
+77.95 13.67 ;...
+78.0182 14.0166 ;...
+78.0859 14.3671 ;...
+78.1532 14.7216 ;...
+78.22 15.08 ;...
+78.2212 14.6025 ;...
+78.2216 14.125 ;...
+78.2212 13.6475 ;...
+78.22 13.17 ;...
+78.7 11.67 ;...
+79.33 11 ;...
+79.75 11 ;...
+NaN NaN ;...
+62.08 -7.42 ;...
+62.3 -7.25 ;...
+62.37 -6.33 ;...
+62 -6.92 ;...
+62.08 -7.42 ;...
+NaN NaN ;...
+59.9485 -1.38344 ;...
+60.0779 -1.44896 ;...
+60.2221 -1.40667 ;...
+60.3865 -1.48212 ;...
+60.5179 -1.28568 ;...
+60.2983 -1.22756 ;...
+60.1687 -1.08101 ;...
+59.9485 -1.38344 ;...
+NaN NaN ;...
+58.8596 -3.0374 ;...
+58.9399 -3.28081 ;...
+59.0397 -3.4012 ;...
+59.1909 -3.33469 ;...
+59.2121 -3.15674 ;...
+58.9822 -2.92567 ;...
+58.8735 -2.96662 ;...
+58.8596 -3.0374 ;...
+NaN NaN ;...
+57.58 -7.25 ;...
+57.83 -7 ;...
+58.17 -7 ;...
+58.5 -6.17 ;...
+58 -6.42 ;...
+57.58 -7.25 ;...
+NaN NaN ;...
+55.47 9.75 ;...
+55.58 10.28 ;...
+55.37 10.75 ;...
+55.05 10.7 ;...
+55.05 10.08 ;...
+55.47 9.75 ;...
+NaN NaN ;...
+55.7 11.08 ;...
+55.9 11.75 ;...
+56.1 12.42 ;...
+56 12.4603 ;...
+55.9 12.5004 ;...
+55.8 12.5403 ;...
+55.7 12.58 ;...
+55.6426 12.477 ;...
+55.5852 12.3744 ;...
+55.5276 12.2721 ;...
+55.47 12.17 ;...
+55.28 12.42 ;...
+55.13 11.83 ;...
+55.2 11.25 ;...
+55.7 11.08 ;...
+NaN NaN ;...
+54.83 11 ;...
+54.92 11.58 ;...
+54.83 12.08 ;...
+54.67 11.83 ;...
+54.58 11.33 ;...
+54.83 11 ;...
+NaN NaN ;...
+57.5 18.08 ;...
+57.78 18.42 ;...
+57.93 19.17 ;...
+57.7 18.75 ;...
+57.28 18.75 ;...
+57.08 18.25 ;...
+57.5 18.08 ;...
+NaN NaN ;...
+58.33 21.83 ;...
+58.62 22.33 ;...
+58.5 23.17 ;...
+58.3 22.67 ;...
+58.1 22.17 ;...
+58.33 21.83 ;...
+NaN NaN ;...
+58.88 22.33 ;...
+59.08 22.5 ;...
+58.83 23 ;...
+58.72 22.42 ;...
+58.88 22.33 ;...
+NaN NaN ;...
+50.08 -5.58 ;...
+50.42 -5 ;...
+50.75 -4.5 ;...
+51.17 -4.08 ;...
+51.17 -3.5 ;...
+51.17 -3 ;...
+51.58 -2.67 ;...
+51.33 -3.33 ;...
+51.58 -3.83 ;...
+51.67 -4.33 ;...
+51.58 -5 ;...
+51.6425 -5.04232 ;...
+51.705 -5.08477 ;...
+51.7675 -5.12732 ;...
+51.83 -5.17 ;...
+51.8928 -5.02312 ;...
+51.9554 -4.87582 ;...
+52.0178 -4.72812 ;...
+52.08 -4.58 ;...
+52.25 -4.08 ;...
+52.75 -4.08 ;...
+52.75 -4.67 ;...
+53.08 -4.33 ;...
+53.33 -4.5 ;...
+53.25 -3.58 ;...
+53.33 -3 ;...
+53.75 -3 ;...
+54.17 -2.67 ;...
+54.17 -3.17 ;...
+54.5 -3.58 ;...
+54.92 -3.25 ;...
+54.75 -4 ;...
+54.58 -4.75 ;...
+54.6651 -4.83198 ;...
+54.7501 -4.91431 ;...
+54.8351 -4.99698 ;...
+54.92 -5.08 ;...
+55.0651 -4.97862 ;...
+55.2102 -4.87649 ;...
+55.3551 -4.77362 ;...
+55.5 -4.67 ;...
+55.5826 -4.77185 ;...
+55.6652 -4.87414 ;...
+55.7476 -4.97685 ;...
+55.83 -5.08 ;...
+55.83 -5.08 ;...
+55.42 -5.58 ;...
+55.75 -5.58 ;...
+55.75 -6.17 ;...
+56.08 -5.5 ;...
+56.5 -5.42 ;...
+56.33 -6 ;...
+56.67 -6 ;...
+57.17 -5.58 ;...
+57.17 -6.25 ;...
+57.42 -6.67 ;...
+57.58 -6.33 ;...
+57.42 -5.83 ;...
+57.75 -5.75 ;...
+58.08 -5.33 ;...
+58.5 -5 ;...
+58.5 -4.08 ;...
+58.58 -3.17 ;...
+58.33 -3 ;...
+58 -3.83 ;...
+57.58 -4.17 ;...
+57.67 -3.42 ;...
+57.67 -2.75 ;...
+57.67 -1.92 ;...
+57.33 -1.83 ;...
+57 -2.08 ;...
+56.58 -2.42 ;...
+56.25 -2.83 ;...
+56 -3.33 ;...
+56 -2.67 ;...
+55.83 -2 ;...
+55.83 -2 ;...
+55.5 -1.67 ;...
+55 -1.5 ;...
+54.58 -1.17 ;...
+54.42 -0.5 ;...
+54 -0.25 ;...
+53.67 -0.08 ;...
+53.42 0.17 ;...
+53.08 0.33 ;...
+52.83 0 ;...
+52.67 0.25 ;...
+52.92 0.58 ;...
+52.92 1 ;...
+52.75 1.58 ;...
+52.42 1.83 ;...
+52 1.58 ;...
+51.75 1 ;...
+51.33 0.58 ;...
+51.25 1.42 ;...
+50.83 0.92 ;...
+50.67 0.08 ;...
+50.67 -0.67 ;...
+50.75 -1.42 ;...
+50.5 -2.08 ;...
+50.67 -2.83 ;...
+50.58 -3.5 ;...
+50.17 -3.67 ;...
+50.33 -4.5 ;...
+50 -5.08 ;...
+50.08 -5.58 ;...
+NaN NaN ;...
+52.17 -10.33 ;...
+52.17 -9.75 ;...
+52.67 -9.5 ;...
+53.17 -9 ;...
+53.17 -9.5 ;...
+53.5 -10 ;...
+53.75 -9.5 ;...
+53.92 -10 ;...
+54.25 -9.75 ;...
+54.25 -9.08 ;...
+54.25 -8.5 ;...
+54.5 -8.17 ;...
+54.67 -8.67 ;...
+55.08 -8.25 ;...
+55.25 -7.5 ;...
+55.17 -6.75 ;...
+55.08 -6.08 ;...
+54.75 -5.75 ;...
+54.25 -5.58 ;...
+53.92 -6.25 ;...
+53.5 -6.08 ;...
+53 -6 ;...
+52.58 -6.17 ;...
+52.17 -6.33 ;...
+52.08 -7.25 ;...
+51.75 -8 ;...
+51.58 -8.75 ;...
+51.5 -9.58 ;...
+51.75 -10.08 ;...
+52.17 -10.33 ;...
+NaN NaN ;...
+42.5 8.67 ;...
+42.67 9.17 ;...
+43 9.42 ;...
+42.5 9.42 ;...
+42.17 9.5 ;...
+41.83 9.33 ;...
+41.33 9.17 ;...
+41.75 8.67 ;...
+42.08 8.58 ;...
+42.5 8.67 ;...
+NaN NaN ;...
+40.92 8.17 ;...
+40.83 8.42 ;...
+40.92 8.75 ;...
+41.25 9.25 ;...
+40.83 9.67 ;...
+40.42 9.75 ;...
+40 9.75 ;...
+39.58 9.67 ;...
+39.17 9.5 ;...
+39.17 9.08 ;...
+38.83 8.75 ;...
+39.17 8.33 ;...
+39.67 8.42 ;...
+40.17 8.42 ;...
+40.58 8.17 ;...
+40.92 8.17 ;...
+NaN NaN ;...
+37.92 12.33 ;...
+38.17 12.75 ;...
+38.17 13.25 ;...
+38 13.67 ;...
+38 14.25 ;...
+38.08 15 ;...
+38.25 15.67 ;...
+37.83 15.33 ;...
+37.33 15.17 ;...
+37 15.33 ;...
+36.67 15.17 ;...
+36.75 14.5 ;...
+37.08 14.17 ;...
+37.17 13.67 ;...
+37.5 13 ;...
+37.5 12.67 ;...
+37.92 12.33 ;...
+NaN NaN ;...
+37.75 21.08 ;...
+38.08 21.33 ;...
+38.25 21.83 ;...
+38.08 22.33 ;...
+37.83 22.83 ;...
+37.33 23.17 ;...
+37.42 22.67 ;...
+37 22.83 ;...
+36.42 23.08 ;...
+36.75 22.67 ;...
+36.42 22.33 ;...
+36.75 22.08 ;...
+36.75 21.67 ;...
+37 21.5 ;...
+37.42 21.58 ;...
+37.75 21.08 ;...
+NaN NaN ;...
+35.17 23.5 ;...
+35.58 23.58 ;...
+35.5 24.17 ;...
+35.33 24.25 ;...
+35.42 24.75 ;...
+35.3 25.17 ;...
+35.33 25.75 ;...
+35.08 25.75 ;...
+35.25 26.25 ;...
+34.97 26.17 ;...
+34.93 25.5 ;...
+34.9 24.83 ;...
+35.08 24.5 ;...
+35.17 24 ;...
+35.17 23.5 ;...
+NaN NaN ;...
+35 32.25 ;...
+35.08 32.75 ;...
+35.25 33 ;...
+35.33 33.42 ;...
+35.42 33.92 ;...
+35.58 34.5 ;...
+35.17 33.92 ;...
+34.92 34.08 ;...
+34.92 33.67 ;...
+34.7 33.5 ;...
+34.58 33 ;...
+34.67 32.42 ;...
+35 32.25 ;...
+NaN NaN ;...
+39.58 2.25 ;...
+39.92 2.92 ;...
+39.67 3.42 ;...
+39.27 3.08 ;...
+39.5 2.73 ;...
+39.58 2.25 ;...
+NaN NaN ;...
+36.17 27.67 ;...
+36.45 28.25 ;...
+36.08 28.08 ;...
+35.88 27.75 ;...
+36.17 27.67 ;...
+NaN NaN ;...
+39.0074 26.4216 ;...
+39.048 26.33 ;...
+39.206 26.2123 ;...
+39.1036 26.03 ;...
+39.1469 25.9003 ;...
+39.2177 25.8589 ;...
+39.2744 25.8896 ;...
+39.3775 26.3033 ;...
+39.3553 26.3831 ;...
+39.1366 26.5097 ;...
+39.0074 26.4216 ;...
+NaN NaN ;...
+38.2571 26.0002 ;...
+38.6004 25.8131 ;...
+38.5678 26.0178 ;...
+38.4165 26.1786 ;...
+38.2841 26.0884 ;...
+38.2571 26.0002 ;...
+NaN NaN ;...
+38.5123 -28.1598 ;...
+38.4167 -28.0294 ;...
+38.3839 -28.193 ;...
+38.4 -28.4735 ;...
+38.4655 -28.5366 ;...
+38.5779 -28.4902 ;...
+38.5123 -28.1598 ;...
+NaN NaN ;...
+37.6973 -25.2548 ;...
+37.7382 -25.7897 ;...
+37.783 -25.8258 ;...
+37.9247 -25.814 ;...
+37.8628 -25.4883 ;...
+37.8959 -25.2349 ;...
+37.788 -25.1679 ;...
+37.6973 -25.2548 ;...
+NaN NaN ;...
+28.33 -16.83 ;...
+28.38 -16.5 ;...
+28.58 -16.17 ;...
+28.17 -16.33 ;...
+28 -16.58 ;...
+28.33 -16.83 ;...
+NaN NaN ;...
+28 -15.8 ;...
+28.17 -15.67 ;...
+28.08 -15.37 ;...
+27.83 -15.33 ;...
+27.75 -15.67 ;...
+28 -15.8 ;...
+NaN NaN ;...
+28.8332 -13.7387 ;...
+28.9412 -13.7871 ;...
+29.0435 -13.7669 ;...
+29.1479 -13.5416 ;...
+29.1372 -13.4283 ;...
+29.0418 -13.4122 ;...
+28.8332 -13.7387 ;...
+NaN NaN ;...
+28.1886 -14.2095 ;...
+28.3599 -14.1823 ;...
+28.6419 -13.9613 ;...
+28.4557 -13.8981 ;...
+28.3388 -13.9338 ;...
+28.1886 -14.2095 ;...
+NaN NaN ;...
+3.33 8.5 ;...
+3.75 8.67 ;...
+3.58 8.92 ;...
+3.25 8.75 ;...
+3.33 8.5 ;...
+NaN NaN ;...
+-34.17 115.17 ;...
+-33.58 115.17 ;...
+-33.5 115.58 ;...
+-33.25 115.83 ;...
+-32.92 115.75 ;...
+-32.33 115.83 ;...
+-31.75 115.83 ;...
+-31.42 115.58 ;...
+-31 115.42 ;...
+-30.5 115.17 ;...
+-30 115 ;...
+-29.5 115 ;...
+-29.08 114.92 ;...
+-28.58 114.58 ;...
+-28.08 114.17 ;...
+-27.67 114.17 ;...
+-27 113.92 ;...
+-26.67 113.5 ;...
+-26.17 113.33 ;...
+-26.58 113.83 ;...
+-25.67 113.5 ;...
+-26.08 113.75 ;...
+-26.08 113.75 ;...
+-26.42 114.17 ;...
+-25.83 114.17 ;...
+-25.42 113.92 ;...
+-25 113.67 ;...
+-24.42 113.5 ;...
+-23.92 113.42 ;...
+-23.5 113.83 ;...
+-23.08 113.83 ;...
+-22.67 113.67 ;...
+-22.25 113.83 ;...
+-21.83 114.08 ;...
+-22.33 114.33 ;...
+-21.92 114.58 ;...
+-21.67 115.08 ;...
+-21.5 115.5 ;...
+-21.08 115.83 ;...
+-20.83 116.25 ;...
+-20.67 116.75 ;...
+-20.67 117.25 ;...
+-20.67 117.75 ;...
+-20.33 118.25 ;...
+-20.33 118.75 ;...
+-20 119.17 ;...
+-20 119.75 ;...
+-19.83 120.33 ;...
+-19.75 120.92 ;...
+-19.42 121.33 ;...
+-19.08 121.67 ;...
+-18.58 121.92 ;...
+-18.17 122.33 ;...
+-18.17 122.33 ;...
+-17.83 122.25 ;...
+-17.42 122.17 ;...
+-17 122.58 ;...
+-16.5 123 ;...
+-17.08 123.25 ;...
+-17.5 123.5 ;...
+-17 123.92 ;...
+-16.67 123.58 ;...
+-16.17 123.75 ;...
+-16.42 124.33 ;...
+-16 124.58 ;...
+-15.5 124.67 ;...
+-15.08 125.17 ;...
+-14.67 125.25 ;...
+-14.67 125.92 ;...
+-14.33 126.08 ;...
+-14.25 126.58 ;...
+-13.92 126.83 ;...
+-14 127.42 ;...
+-14.42 127.83 ;...
+-14.75 128.17 ;...
+-15.25 128.17 ;...
+-14.92 128.67 ;...
+-14.92 129.08 ;...
+-15.25 129.67 ;...
+-14.83 129.83 ;...
+-14.5 129.33 ;...
+-14.08 129.75 ;...
+-13.67 129.92 ;...
+-13.58 130.42 ;...
+-13.58 130.42 ;...
+-13.17 130.25 ;...
+-12.75 130.5 ;...
+-12.33 131.08 ;...
+-12.33 131.75 ;...
+-12.33 132.42 ;...
+-12.205 132.483 ;...
+-12.08 132.545 ;...
+-11.955 132.608 ;...
+-11.83 132.67 ;...
+-11.7275 132.585 ;...
+-11.625 132.5 ;...
+-11.5225 132.415 ;...
+-11.42 132.33 ;...
+-11.4601 132.497 ;...
+-11.5002 132.665 ;...
+-11.5401 132.832 ;...
+-11.58 133 ;...
+-11.92 133.5 ;...
+-12 134.08 ;...
+-12.17 134.67 ;...
+-12.33 135.25 ;...
+-12.17 135.83 ;...
+-12.58 136.08 ;...
+-12.08 136.5 ;...
+-12.42 137 ;...
+-12.83 136.67 ;...
+-13.33 136.58 ;...
+-13.33 136 ;...
+-13.83 136 ;...
+-14.25 136 ;...
+-14.58 135.75 ;...
+-15 135.58 ;...
+-15.33 136 ;...
+-15.5 136.42 ;...
+-16 136.58 ;...
+-16 137.33 ;...
+-16.33 137.75 ;...
+-16.58 138.08 ;...
+-16.83 138.67 ;...
+-16.83 138.67 ;...
+-17 139.17 ;...
+-17.42 139.42 ;...
+-17.83 140 ;...
+-17.75 140.5 ;...
+-17.5 141 ;...
+-17 141 ;...
+-16.58 141.25 ;...
+-16.08 141.5 ;...
+-15.58 141.58 ;...
+-15.08 141.67 ;...
+-14.58 141.58 ;...
+-14.08 141.58 ;...
+-13.58 141.67 ;...
+-13 141.75 ;...
+-12.67 141.75 ;...
+-12.17 141.75 ;...
+-11.83 142.08 ;...
+-11.25 142.08 ;...
+-10.83 142.42 ;...
+-11.08 142.83 ;...
+-11.67 142.92 ;...
+-12.17 143.08 ;...
+-12.67 143.33 ;...
+-13.25 143.58 ;...
+-13.75 143.58 ;...
+-14.33 143.75 ;...
+-14.5 144.08 ;...
+-14.33 144.58 ;...
+-14.67 144.92 ;...
+-15 145.33 ;...
+-15 145.33 ;...
+-15.5 145.33 ;...
+-16 145.5 ;...
+-16.58 145.5 ;...
+-17 145.83 ;...
+-17.33 146.08 ;...
+-17.83 146.17 ;...
+-18.33 146.08 ;...
+-18.67 146.33 ;...
+-19 146.42 ;...
+-19.33 147 ;...
+-19.42 147.5 ;...
+-19.83 147.83 ;...
+-20.17 148.33 ;...
+-20.42 148.83 ;...
+-20.83 148.83 ;...
+-21.08 149.17 ;...
+-21.42 149.33 ;...
+-21.92 149.5 ;...
+-22.42 149.75 ;...
+-22.08 150 ;...
+-22.42 150.42 ;...
+-22.67 150.83 ;...
+-23.17 150.83 ;...
+-23.58 151 ;...
+-23.92 151.33 ;...
+-24.08 151.83 ;...
+-24.58 152.17 ;...
+-25.08 152.58 ;...
+-25.5 152.83 ;...
+-26.08 153.08 ;...
+-26.08 153.08 ;...
+-26.5 153.08 ;...
+-27.08 153.17 ;...
+-27.58 153.33 ;...
+-28.17 153.5 ;...
+-28.67 153.67 ;...
+-29 153.5 ;...
+-29.5 153.42 ;...
+-30 153.33 ;...
+-30.58 153.08 ;...
+-31 153.08 ;...
+-31.5 152.92 ;...
+-31.92 152.75 ;...
+-32.33 152.5 ;...
+-32.75 152.25 ;...
+-33 151.83 ;...
+-33.42 151.5 ;...
+-33.83 151.33 ;...
+-34.33 151.08 ;...
+-34.92 150.83 ;...
+-35.25 150.58 ;...
+-35.75 150.25 ;...
+-36.25 150.17 ;...
+-36.75 150 ;...
+-37.17 150 ;...
+-37.58 149.92 ;...
+-37.83 149.42 ;...
+-37.83 148.75 ;...
+-37.92 148.17 ;...
+-38.08 147.83 ;...
+-38.42 147.25 ;...
+-38.42 147.25 ;...
+-38.67 146.83 ;...
+-39.17 146.42 ;...
+-38.92 146 ;...
+-38.67 145.58 ;...
+-38.25 145.5 ;...
+-38.42 145 ;...
+-37.83 144.83 ;...
+-38.25 144.42 ;...
+-38.5 144 ;...
+-38.83 143.5 ;...
+-38.67 143.08 ;...
+-38.42 142.67 ;...
+-38.33 142.25 ;...
+-38.25 141.75 ;...
+-38.42 141.42 ;...
+-38.08 141.17 ;...
+-38 140.67 ;...
+-37.67 140.25 ;...
+-37.33 139.92 ;...
+-37 139.75 ;...
+-36.75 139.92 ;...
+-36.33 139.67 ;...
+-35.92 139.33 ;...
+-35.58 138.83 ;...
+-35.67 138.17 ;...
+-35.42 138.42 ;...
+-35 138.58 ;...
+-34.67 138.42 ;...
+-34.25 138.08 ;...
+-34.75 137.92 ;...
+-34.75 137.92 ;...
+-35.17 137.75 ;...
+-35.17 137.33 ;...
+-35.25 136.92 ;...
+-35 137 ;...
+-34.83 137.42 ;...
+-34.5 137.5 ;...
+-34 137.58 ;...
+-33.58 137.92 ;...
+-32.83 137.83 ;...
+-33.17 137.5 ;...
+-33.67 137.25 ;...
+-33.92 136.75 ;...
+-34.25 136.33 ;...
+-34.58 135.92 ;...
+-35 135.67 ;...
+-34.58 135.42 ;...
+-34.17 135.25 ;...
+-33.75 135 ;...
+-33.25 134.83 ;...
+-33 134.17 ;...
+-32.58 134.33 ;...
+-32.33 133.92 ;...
+-32.17 133.42 ;...
+-32 132.83 ;...
+-32 132.25 ;...
+-31.75 131.83 ;...
+-31.58 131.33 ;...
+-31.58 130.83 ;...
+-31.58 130.33 ;...
+-31.58 129.67 ;...
+-31.58 129.67 ;...
+-31.67 129.08 ;...
+-31.83 128.58 ;...
+-32.08 128 ;...
+-32.17 127.5 ;...
+-32.25 126.92 ;...
+-32.17 126.25 ;...
+-32.33 125.83 ;...
+-32.67 125.25 ;...
+-32.83 124.75 ;...
+-33 124.08 ;...
+-33.5 124 ;...
+-33.83 123.58 ;...
+-33.83 123.08 ;...
+-33.83 122.58 ;...
+-33.83 121.92 ;...
+-33.83 121.33 ;...
+-33.83 120.75 ;...
+-33.92 120.08 ;...
+-34 119.75 ;...
+-34.42 119.42 ;...
+-34.42 119 ;...
+-34.75 118.58 ;...
+-35 118.33 ;...
+-35 117.75 ;...
+-35 117.17 ;...
+-35 116.67 ;...
+-34.83 116.08 ;...
+-34.33 115.67 ;...
+-34.17 115.17 ;...
+NaN NaN ;...
+-11.83 130.08 ;...
+-11.33 130.33 ;...
+-11.5 130.75 ;...
+-11.33 131.33 ;...
+-11.58 131.5 ;...
+-12 131 ;...
+-11.83 130.67 ;...
+-11.83 130.08 ;...
+NaN NaN ;...
+-35.92 136.58 ;...
+-35.75 136.83 ;...
+-35.67 137.42 ;...
+-35.92 138.08 ;...
+-36.17 137.58 ;...
+-36.17 136.83 ;...
+-35.92 136.58 ;...
+NaN NaN ;...
+-40.67 144.83 ;...
+-40.83 145.5 ;...
+-41.17 146.17 ;...
+-41.17 146.75 ;...
+-41 147.33 ;...
+-40.83 148 ;...
+-41 148.33 ;...
+-41.5 148.33 ;...
+-42 148.33 ;...
+-42.17 148.17 ;...
+-42.58 148 ;...
+-43.08 147.92 ;...
+-42.83 147.5 ;...
+-43.17 147.17 ;...
+-43.58 146.83 ;...
+-43.5 146.25 ;...
+-43.25 145.75 ;...
+-42.92 145.5 ;...
+-42.5 145.33 ;...
+-42.17 145.25 ;...
+-41.75 145 ;...
+-41.17 144.83 ;...
+-40.67 144.83 ;...
+NaN NaN ;...
+-36.9214 175.189 ;...
+-37.0138 175.52 ;...
+-36.9496 175.534 ;...
+-36.7885 175.445 ;...
+-36.7061 175.481 ;...
+-36.7879 175.759 ;...
+-37.0249 175.897 ;...
+-37.4263 176.01 ;...
+-37.8988 177.029 ;...
+-37.9645 177.258 ;...
+-37.9352 177.425 ;...
+-37.7054 177.737 ;...
+-37.5652 178.138 ;...
+-37.6606 178.467 ;...
+-37.8643 178.497 ;...
+-38.5343 178.314 ;...
+-38.613 177.84 ;...
+-38.9277 177.827 ;...
+-39.002 177.772 ;...
+-39.0448 177.244 ;...
+-39.1462 177.056 ;...
+-39.2825 176.934 ;...
+-39.4562 176.945 ;...
+-39.6931 177.062 ;...
+-39.7913 177.063 ;...
+-40.1345 176.703 ;...
+-41.1731 175.922 ;...
+-41.4572 175.581 ;...
+-41.6149 175.274 ;...
+-41.429 174.892 ;...
+-41.3135 174.765 ;...
+-40.5968 175.122 ;...
+-40.3534 175.297 ;...
+-40.1814 175.28 ;...
+-39.8067 174.807 ;...
+-39.4631 173.954 ;...
+-39.2614 173.773 ;...
+-39.1968 173.806 ;...
+-38.7129 174.566 ;...
+-38.4491 174.649 ;...
+-38.1028 174.61 ;...
+-37.943 174.644 ;...
+-37.7148 174.811 ;...
+-37.5232 174.822 ;...
+-37.1317 174.612 ;...
+-36.8796 174.652 ;...
+-36.7861 174.601 ;...
+-36.45 174.236 ;...
+-36.4031 174.288 ;...
+-36.1374 174.11 ;...
+-35.973 173.839 ;...
+-36.3185 174.107 ;...
+-36.3814 174.128 ;...
+-36.3778 174.053 ;...
+-35.3438 173.236 ;...
+-35.2917 173.237 ;...
+-35.1717 173.117 ;...
+-35.0383 173.121 ;...
+-34.7601 172.981 ;...
+-34.4376 172.636 ;...
+-34.4181 172.71 ;...
+-34.4634 172.802 ;...
+-34.4069 173.024 ;...
+-34.5353 173.062 ;...
+-34.6179 172.994 ;...
+-34.8604 173.171 ;...
+-34.9941 173.352 ;...
+-34.9273 173.36 ;...
+-34.9406 173.477 ;...
+-35.1597 174.026 ;...
+-35.3419 174.079 ;...
+-35.3551 174.163 ;...
+-35.2724 174.229 ;...
+-35.2856 174.313 ;...
+-35.3596 174.303 ;...
+-35.5221 174.405 ;...
+-35.7385 174.622 ;...
+-35.7506 174.546 ;...
+-35.8246 174.514 ;...
+-35.8987 174.553 ;...
+-35.8649 174.374 ;...
+-36.2331 174.79 ;...
+-36.3753 174.807 ;...
+-36.3667 174.699 ;...
+-36.5629 174.917 ;...
+-36.5539 174.606 ;...
+-36.592 174.596 ;...
+-36.6714 174.848 ;...
+-36.7241 174.795 ;...
+-36.8037 175.2 ;...
+-36.8564 175.123 ;...
+-36.9214 175.189 ;...
+NaN NaN ;...
+-45.92 166.5 ;...
+-45.42 166.83 ;...
+-45.08 167.08 ;...
+-44.75 167.58 ;...
+-44.42 167.92 ;...
+-44.08 168.33 ;...
+-44 168.83 ;...
+-43.67 169.5 ;...
+-43.33 170 ;...
+-43 170.5 ;...
+-42.67 171.08 ;...
+-42.25 171.33 ;...
+-41.83 171.5 ;...
+-41.67 172 ;...
+-41.33 172.17 ;...
+-40.92 172.17 ;...
+-40.67 172.58 ;...
+-40.67 172.58 ;...
+-40.92 173.08 ;...
+-41.33 173.17 ;...
+-41.17 173.5 ;...
+-40.92 173.83 ;...
+-41.25 173.92 ;...
+-41.33 174.33 ;...
+-41.83 174.33 ;...
+-42.17 174 ;...
+-42.58 173.58 ;...
+-43 173.25 ;...
+-43.17 172.83 ;...
+-43.5 172.75 ;...
+-43.75 173.08 ;...
+-43.75 172.42 ;...
+-44.08 172 ;...
+-44.33 171.42 ;...
+-44.67 171.25 ;...
+-45.08 171.08 ;...
+-45.5 170.92 ;...
+-45.92 170.58 ;...
+-46.25 170.17 ;...
+-46.5 169.67 ;...
+-46.67 169 ;...
+-46.5 168.33 ;...
+-46.42 167.83 ;...
+-46.17 167.58 ;...
+-46.25 167.25 ;...
+-46.17 166.75 ;...
+-45.92 166.5 ;...
+NaN NaN ;...
+-47.33 167.58 ;...
+-46.67 168 ;...
+-47 168.25 ;...
+-47.33 167.58 ;...
+NaN NaN ;...
+5.67 95.33 ;...
+5.67 95.92 ;...
+5.33 96.33 ;...
+5.33 96.92 ;...
+5.25 97.58 ;...
+4.92 98 ;...
+4.5 98.25 ;...
+4.08 98.58 ;...
+4.08 98.58 ;...
+3.75 99 ;...
+3.5 99.5 ;...
+3.17 100 ;...
+2.67 100.33 ;...
+2.17 100.75 ;...
+2.25 101.25 ;...
+1.75 101.75 ;...
+1.67 102.25 ;...
+1.17 102.67 ;...
+1.08 103.08 ;...
+0.58 103 ;...
+0.58 103.42 ;...
+0.17 103.83 ;...
+-0.25 103.75 ;...
+-0.67 103.5 ;...
+-1 103.83 ;...
+-1 104.42 ;...
+-1.67 104.58 ;...
+-1.92 104.92 ;...
+-2.33 105.08 ;...
+-2.33 105.58 ;...
+-2.67 105.92 ;...
+-3 106.17 ;...
+-3.5 105.92 ;...
+-4.17 105.92 ;...
+-4.67 105.92 ;...
+-5.25 105.83 ;...
+-5.75 105.75 ;...
+-5.5 105.33 ;...
+-5.5 104.92 ;...
+-5.5 104.92 ;...
+-5.75 104.75 ;...
+-5.58 104.42 ;...
+-5.08 104 ;...
+-4.75 103.5 ;...
+-4.25 102.83 ;...
+-3.83 102.42 ;...
+-3.5 102.25 ;...
+-3.17 101.75 ;...
+-2.58 101.33 ;...
+-2.08 100.92 ;...
+-1.67 100.83 ;...
+-1.08 100.5 ;...
+-0.67 100.42 ;...
+-0.25 100 ;...
+0.08 99.83 ;...
+0.33 99.25 ;...
+1 99.08 ;...
+1.5 98.83 ;...
+1.83 98.83 ;...
+2.17 98.33 ;...
+2.42 97.83 ;...
+2.92 97.67 ;...
+3.33 97.25 ;...
+3.75 96.92 ;...
+3.83 96.58 ;...
+4.33 96.08 ;...
+4.75 95.67 ;...
+5.17 95.42 ;...
+5.67 95.33 ;...
+NaN NaN ;...
+-6.67 105.5 ;...
+-6.33 105.83 ;...
+-5.83 106.08 ;...
+-6 106.67 ;...
+-5.83 107.08 ;...
+-5.92 107.42 ;...
+-6.17 107.92 ;...
+-6.25 108.42 ;...
+-6.67 108.67 ;...
+-6.75 109.08 ;...
+-6.75 109.58 ;...
+-6.83 110.08 ;...
+-6.83 110.5 ;...
+-6.33 110.83 ;...
+-6.33 110.83 ;...
+-6.58 111.33 ;...
+-6.75 111.92 ;...
+-6.83 112.42 ;...
+-7.08 112.75 ;...
+-7.5 112.83 ;...
+-7.67 113.42 ;...
+-7.58 113.92 ;...
+-7.67 114.42 ;...
+-8.17 114.42 ;...
+-8.58 114.42 ;...
+-8.5 114 ;...
+-8.33 113.58 ;...
+-8.17 113.08 ;...
+-8.33 112.5 ;...
+-8.17 112 ;...
+-8.17 111.5 ;...
+-8.08 111 ;...
+-8 110.5 ;...
+-7.75 110 ;...
+-7.67 109.58 ;...
+-7.67 109 ;...
+-7.75 108.58 ;...
+-7.67 108 ;...
+-7.42 107.58 ;...
+-7.33 107 ;...
+-7.25 106.5 ;...
+-7 106.58 ;...
+-6.75 106 ;...
+-6.67 105.5 ;...
+NaN NaN ;...
+-8.74 115.25 ;...
+-8.39 114.7 ;...
+-8.25 114.66 ;...
+-8.17 115.25 ;...
+-8.41 115.66 ;...
+-8.74 115.25 ;...
+NaN NaN ;...
+-8.41105 118.028 ;...
+-8.31514 117.8 ;...
+-8.2385 117.771 ;...
+-8.14112 117.782 ;...
+-8.04694 117.892 ;...
+-8.02632 118.029 ;...
+-8.20451 118.21 ;...
+-8.13412 118.341 ;...
+-8.17755 118.491 ;...
+-8.2455 118.538 ;...
+-8.4523 118.538 ;...
+-8.24048 118.684 ;...
+-8.22294 118.823 ;...
+-8.32303 118.924 ;...
+-8.5166 118.938 ;...
+-8.49766 119.017 ;...
+-8.54485 119.045 ;...
+-8.72669 119.038 ;...
+-8.63485 118.898 ;...
+-8.61236 118.762 ;...
+-8.64094 118.701 ;...
+-8.71093 118.735 ;...
+-8.79438 118.364 ;...
+-8.75479 118.301 ;...
+-8.63076 118.34 ;...
+-8.60522 118.303 ;...
+-8.85262 118.074 ;...
+-8.83527 117.944 ;...
+-9.04628 117.402 ;...
+-9.02781 117.245 ;...
+-9.08827 117.111 ;...
+-9.06164 116.94 ;...
+-8.97739 116.804 ;...
+-8.85019 116.774 ;...
+-8.72887 116.833 ;...
+-8.61456 116.795 ;...
+-8.42958 117.078 ;...
+-8.49826 117.619 ;...
+-8.62511 117.661 ;...
+-8.6928 117.918 ;...
+-8.57196 117.998 ;...
+-8.5627 118.124 ;...
+-8.47663 118.144 ;...
+-8.41105 118.028 ;...
+NaN NaN ;...
+-8.21715 123.122 ;...
+-8.37718 122.814 ;...
+-8.48047 122.829 ;...
+-8.78892 122.153 ;...
+-8.77218 122.011 ;...
+-8.9188 121.82 ;...
+-8.84247 121.427 ;...
+-8.9683 121.28 ;...
+-8.9854 121.14 ;...
+-8.77019 120.61 ;...
+-8.75375 119.975 ;...
+-8.49831 119.877 ;...
+-8.38806 119.886 ;...
+-8.29203 120.052 ;...
+-8.21221 120.365 ;...
+-8.26389 120.668 ;...
+-8.51063 121.246 ;...
+-8.648 121.429 ;...
+-8.65238 121.572 ;...
+-8.51884 121.709 ;...
+-8.47615 122.086 ;...
+-8.55709 122.26 ;...
+-8.50313 122.457 ;...
+-8.40507 122.426 ;...
+-8.17275 122.843 ;...
+-8.09668 122.896 ;...
+-8.04963 122.857 ;...
+-8.07447 122.757 ;...
+-7.97545 122.823 ;...
+-7.99363 123.027 ;...
+-8.08062 123.119 ;...
+-8.21715 123.122 ;...
+NaN NaN ;...
+-8.4803 123.557 ;...
+-8.37069 123.375 ;...
+-8.25229 123.526 ;...
+-8.24991 123.865 ;...
+-8.35135 123.887 ;...
+-8.4803 123.557 ;...
+NaN NaN ;...
+-8.88507 116.415 ;...
+-8.82908 115.959 ;...
+-8.68125 116.126 ;...
+-8.48053 116.133 ;...
+-8.32835 116.236 ;...
+-8.28269 116.442 ;...
+-8.37907 116.656 ;...
+-8.88507 116.415 ;...
+NaN NaN ;...
+-8.42 124.33 ;...
+-8.08 124.5 ;...
+-8.1226 124.667 ;...
+-8.16514 124.835 ;...
+-8.2076 125.002 ;...
+-8.25 125.17 ;...
+-8.29267 124.96 ;...
+-8.33522 124.75 ;...
+-8.37767 124.54 ;...
+-8.42 124.33 ;...
+NaN NaN ;...
+-7.92 125.83 ;...
+-7.58 126 ;...
+-7.5 126.67 ;...
+-7.92 126.42 ;...
+-7.92 125.83 ;...
+NaN NaN ;...
+-9.42 119 ;...
+-9.33 119.5 ;...
+-9.33 120 ;...
+-9.58 120.5 ;...
+-10 120.92 ;...
+-10.25 120.42 ;...
+-9.92 120 ;...
+-9.75 119.67 ;...
+-9.75 119.17 ;...
+-9.42 119 ;...
+NaN NaN ;...
+-10.33 123.5 ;...
+-9.67 123.67 ;...
+-9.33 123.92 ;...
+-9.17 124.33 ;...
+-9 124.83 ;...
+-8.67 125.08 ;...
+-8.5 125.67 ;...
+-8.42 126.25 ;...
+-8.33 126.75 ;...
+-8.33 127.25 ;...
+-8.67 126.92 ;...
+-8.92 126.42 ;...
+-9.08 125.92 ;...
+-9.25 125.42 ;...
+-9.58 124.92 ;...
+-10.08 124.5 ;...
+-10.25 124 ;...
+-10.33 123.5 ;...
+NaN NaN ;...
+-7.92 131.17 ;...
+-7.42 131.25 ;...
+-7.08 131.58 ;...
+-7.58 131.58 ;...
+-7.92 131.17 ;...
+NaN NaN ;...
+-6.92 134.08 ;...
+-6.33 134.08 ;...
+-5.83 134.25 ;...
+-5.42 134.5 ;...
+-5.92 134.67 ;...
+-6.5 134.5 ;...
+-6.92 134.08 ;...
+NaN NaN ;...
+-1.92 105.25 ;...
+-1.58 105.5 ;...
+-1.5 106 ;...
+-2 106.25 ;...
+-2.42 106.42 ;...
+-2.5 106.75 ;...
+-3 106.67 ;...
+-2.62 106 ;...
+-2.25 106 ;...
+-2 105.75 ;...
+-1.92 105.25 ;...
+NaN NaN ;...
+-3.08 107.67 ;...
+-2.5 107.75 ;...
+-2.67 108.33 ;...
+-3.17 108.08 ;...
+-3.08 107.67 ;...
+NaN NaN ;...
+-7.17947 113.059 ;...
+-7.13004 112.93 ;...
+-6.98004 112.84 ;...
+-6.90381 113.003 ;...
+-6.92181 113.142 ;...
+-6.85527 113.795 ;...
+-6.89199 113.951 ;...
+-7.16353 113.639 ;...
+-7.17947 113.059 ;...
+NaN NaN ;...
+1 108.92 ;...
+1.58 109.08 ;...
+2 109.5 ;...
+1.75 110 ;...
+1.67 110.58 ;...
+1.58 111.08 ;...
+2.25 111.33 ;...
+2.83 111.5 ;...
+2.92 112 ;...
+3 112.58 ;...
+3.33 113.08 ;...
+3.75 113.33 ;...
+4.08 113.75 ;...
+4.08 113.75 ;...
+4.67 114.25 ;...
+4.92 114.75 ;...
+4.92 115.42 ;...
+5.33 115.42 ;...
+5.83 116 ;...
+6.25 116.17 ;...
+6.58 116.67 ;...
+7 117 ;...
+6.75 117.25 ;...
+6.42 117.75 ;...
+5.92 117.75 ;...
+5.75 118.25 ;...
+5.42 118.75 ;...
+5.17 119.25 ;...
+5 118.75 ;...
+4.83 118.25 ;...
+4.42 118.58 ;...
+4.25 117.92 ;...
+3.67 117.83 ;...
+3.25 117.5 ;...
+2.75 117.75 ;...
+2.33 118.08 ;...
+2 117.83 ;...
+1.58 118.25 ;...
+1.25 118.67 ;...
+0.92 119 ;...
+0.83 118.42 ;...
+0.83 117.92 ;...
+0.5 117.67 ;...
+0 117.5 ;...
+0 117.5 ;...
+-0.58 117.42 ;...
+-1 117.17 ;...
+-1.33 116.75 ;...
+-1.75 116.33 ;...
+-2.25 116.67 ;...
+-2.92 116.33 ;...
+-3.42 116.17 ;...
+-3.67 115.67 ;...
+-3.92 115.17 ;...
+-4.08 114.75 ;...
+-3.67 114.67 ;...
+-3.33 114.33 ;...
+-3.42 113.83 ;...
+-3.08 113.25 ;...
+-3.33 112.83 ;...
+-3.33 112.33 ;...
+-3.5 111.83 ;...
+-2.75 111.75 ;...
+-2.92 111.42 ;...
+-3 110.92 ;...
+-2.92 110.33 ;...
+-2.33 110.25 ;...
+-1.75 110.08 ;...
+-1.25 110.08 ;...
+-0.75 109.75 ;...
+-0.42 109.25 ;...
+0.08 109.25 ;...
+0.42 109 ;...
+1 108.92 ;...
+NaN NaN ;...
+-2.83 118.83 ;...
+-2.42 119.17 ;...
+-1.92 119.33 ;...
+-1.33 119.33 ;...
+-0.92 119.5 ;...
+-0.58 119.83 ;...
+-0.08 119.83 ;...
+0.42 119.92 ;...
+0.75 120 ;...
+0.75 120.67 ;...
+1.33 120.92 ;...
+1.17 121.42 ;...
+1.08 122 ;...
+1 122.5 ;...
+0.83 122.92 ;...
+0.92 123.33 ;...
+0.92 123.92 ;...
+1.17 124.42 ;...
+1.5 124.75 ;...
+1.75 125 ;...
+1.75 125 ;...
+1.5 125.25 ;...
+1.08 125 ;...
+0.58 124.58 ;...
+0.42 124 ;...
+0.33 123.5 ;...
+0.5 123 ;...
+0.5 122.5 ;...
+0.5 122 ;...
+0.5 121.42 ;...
+0.42 121 ;...
+0.5 120.67 ;...
+0.42 120.33 ;...
+-0.08 120.08 ;...
+-0.67 120.08 ;...
+-0.92 120.58 ;...
+-1.33 120.67 ;...
+-1.33 121.17 ;...
+-0.92 121.58 ;...
+-0.92 122.08 ;...
+-0.75 122.58 ;...
+-0.58 123.17 ;...
+-0.92 123.5 ;...
+-0.92 122.92 ;...
+-1.33 122.5 ;...
+-1.67 122.08 ;...
+-1.92 121.5 ;...
+-2.42 121.92 ;...
+-2.75 122.17 ;...
+-3.17 122.42 ;...
+-3.5 122.08 ;...
+-3.5 122.08 ;...
+-3.83 122.5 ;...
+-4.33 122.83 ;...
+-4.75 123.17 ;...
+-5.33 123.17 ;...
+-5.67 122.67 ;...
+-5.33 122.33 ;...
+-4.58 122.33 ;...
+-4.83 122 ;...
+-4.67 121.58 ;...
+-4.08 121.67 ;...
+-3.83 121.17 ;...
+-3.42 120.92 ;...
+-3 121.08 ;...
+-2.67 121.08 ;...
+-2.67 120.67 ;...
+-3 120.25 ;...
+-3.5 120.42 ;...
+-4 120.42 ;...
+-4.5 120.42 ;...
+-5 120.33 ;...
+-5.5 120.42 ;...
+-5.58 119.92 ;...
+-5.58 119.5 ;...
+-5.17 119.42 ;...
+-4.58 119.58 ;...
+-4 119.67 ;...
+-3.5 119.5 ;...
+-3.5 119 ;...
+-2.83 118.83 ;...
+NaN NaN ;...
+1.08 127.33 ;...
+1.5 127.5 ;...
+1.92 127.58 ;...
+2.17 128 ;...
+1.75 127.83 ;...
+1.33 128.08 ;...
+1.58 128.67 ;...
+1.08 128.67 ;...
+0.83 128.25 ;...
+0.5 128.5 ;...
+0.5 128 ;...
+0 127.92 ;...
+-0.42 128 ;...
+-0.92 128.42 ;...
+-0.58 127.92 ;...
+-0.17 127.58 ;...
+0.25 127.67 ;...
+0.67 127.58 ;...
+0.772502 127.518 ;...
+0.875002 127.455 ;...
+0.977502 127.393 ;...
+1.08 127.33 ;...
+NaN NaN ;...
+-3.25 126 ;...
+-3.08 126.5 ;...
+-3.17 127 ;...
+-3.58 127.17 ;...
+-3.83 126.83 ;...
+-3.67 126.33 ;...
+-3.25 126 ;...
+NaN NaN ;...
+-3.17 127.92 ;...
+-2.83 128.25 ;...
+-2.83 128.92 ;...
+-2.75 129.5 ;...
+-3 129.92 ;...
+-3 130.42 ;...
+-3.42 130.75 ;...
+-3.83 130.75 ;...
+-3.58 130.25 ;...
+-3.42 129.42 ;...
+-3.33 128.92 ;...
+-3.42 128.5 ;...
+-3.17 127.92 ;...
+NaN NaN ;...
+-1.97171 124.616 ;...
+-1.93597 124.508 ;...
+-1.73058 124.549 ;...
+-1.68383 124.702 ;...
+-1.78354 125.191 ;...
+-1.89915 125.372 ;...
+-1.97171 124.616 ;...
+NaN NaN ;...
+-1.67 127.33 ;...
+-1.33 127.58 ;...
+-1.67 128.17 ;...
+-1.67003 127.96 ;...
+-1.67004 127.75 ;...
+-1.67003 127.54 ;...
+-1.67 127.33 ;...
+NaN NaN ;...
+-0.17 130.33 ;...
+0 130.75 ;...
+-0.25 131.25 ;...
+-0.42 130.75 ;...
+-0.17 130.33 ;...
+NaN NaN ;...
+-0.67 135.33 ;...
+-0.67 135.92 ;...
+-1.08 136.25 ;...
+-1.17 135.83 ;...
+-0.67 135.33 ;...
+NaN NaN ;...
+-1.33 130.83 ;...
+-0.83 131.25 ;...
+-0.83 131.25 ;...
+-0.67 131.83 ;...
+-0.33 132.17 ;...
+-0.33 132.83 ;...
+-0.67 133.25 ;...
+-0.67 133.92 ;...
+-1.33 134.17 ;...
+-1.83 134 ;...
+-2.33 134.17 ;...
+-2.5 134.58 ;...
+-3 134.75 ;...
+-3.33 135.17 ;...
+-3.33 135.58 ;...
+-2.92 135.83 ;...
+-2.58 136.08 ;...
+-2.17 136.5 ;...
+-2.08 137 ;...
+-1.67 137.25 ;...
+-1.42 137.92 ;...
+-1.67 138.42 ;...
+-2 139 ;...
+-2.17 139.5 ;...
+-2.33 140 ;...
+-2.33 140.42 ;...
+-2.58 141 ;...
+-2.75 141.5 ;...
+-2.92 142 ;...
+-3.08 142.42 ;...
+-3.33 143 ;...
+-3.42 143.5 ;...
+-3.67 144 ;...
+-3.67 144 ;...
+-3.92 144.5 ;...
+-4.25 145 ;...
+-4.5 145.42 ;...
+-4.92 145.75 ;...
+-5.5 145.75 ;...
+-5.58 146.25 ;...
+-5.92 146.83 ;...
+-5.83 147.42 ;...
+-6.17 147.83 ;...
+-6.67 147.83 ;...
+-6.75 147.42 ;...
+-6.83 147 ;...
+-7.25 147.17 ;...
+-7.75 147.67 ;...
+-8 148.17 ;...
+-8.58 148.25 ;...
+-9.08 148.58 ;...
+-9 149.25 ;...
+-9.42 149.08 ;...
+-9.58 149.58 ;...
+-9.58005 149.685 ;...
+-9.58006 149.79 ;...
+-9.58005 149.895 ;...
+-9.58 150 ;...
+-9.66502 149.938 ;...
+-9.75002 149.875 ;...
+-9.83502 149.813 ;...
+-9.92 149.75 ;...
+-9.96005 149.855 ;...
+-10.0001 149.96 ;...
+-10.04 150.065 ;...
+-10.08 150.17 ;...
+-10.17 150.75 ;...
+-10.58 150.58 ;...
+-10.67 150 ;...
+-10.33 149.75 ;...
+-10.25 149.25 ;...
+-10.17 148.67 ;...
+-10.08 148.08 ;...
+-10.08 148.08 ;...
+-10 147.58 ;...
+-9.67 147.42 ;...
+-9.33 147 ;...
+-8.92 146.5 ;...
+-8.5 146.25 ;...
+-8 146 ;...
+-7.92 145.58 ;...
+-7.67 145 ;...
+-7.5 144.67 ;...
+-7.5 144.17 ;...
+-7.92 143.83 ;...
+-8.17 143.58 ;...
+-8.33 143.17 ;...
+-8.75 143.33 ;...
+-9 143.17 ;...
+-9.25 142.58 ;...
+-9.08 142 ;...
+-9.08 141.5 ;...
+-9 141 ;...
+-8.67 140.58 ;...
+-8.33 140.25 ;...
+-8 140 ;...
+-8.08 139.42 ;...
+-8.08 138.83 ;...
+-8.33 138.25 ;...
+-8.33 137.67 ;...
+-7.75 138 ;...
+-7.33 138.25 ;...
+-7.25 138.75 ;...
+-6.75 138.58 ;...
+-6.75 138.58 ;...
+-6.17 138.42 ;...
+-5.58 138.17 ;...
+-5.25 137.83 ;...
+-5 137.33 ;...
+-4.83 136.75 ;...
+-4.58 136.17 ;...
+-4.42 135.58 ;...
+-4.33 135 ;...
+-4.08 134.58 ;...
+-3.83 134.08 ;...
+-3.5 133.67 ;...
+-4 133.25 ;...
+-4 132.83 ;...
+-3.58 132.75 ;...
+-3.25 132.67 ;...
+-2.92 132.25 ;...
+-2.83 131.92 ;...
+-2.67 132.17 ;...
+-2.75 132.67 ;...
+-2.5 133.08 ;...
+-2.5 133.67 ;...
+-2 133.83 ;...
+-2.17 133.25 ;...
+-2.25 132.75 ;...
+-2.25 132.25 ;...
+-2 131.83 ;...
+-1.58 131.83 ;...
+-1.5 131.42 ;...
+-1.33 130.83 ;...
+NaN NaN ;...
+16.25 119.83 ;...
+16.08 120.33 ;...
+16.58 120.33 ;...
+17.17 120.5 ;...
+17.58 120.33 ;...
+18 120.5 ;...
+18.5 120.67 ;...
+18.58 121.08 ;...
+18.33 121.5 ;...
+18.25 121.92 ;...
+18.5 122.33 ;...
+17.92 122.17 ;...
+17.42 122.17 ;...
+17.3351 122.253 ;...
+17.2501 122.335 ;...
+17.1651 122.418 ;...
+17.08 122.5 ;...
+16.955 122.457 ;...
+16.83 122.415 ;...
+16.705 122.372 ;...
+16.58 122.33 ;...
+16.17 122 ;...
+15.75 121.58 ;...
+15.75 121.58 ;...
+15.25 121.42 ;...
+14.58 121.67 ;...
+14.08 121.83 ;...
+13.92 122.25 ;...
+14.17 122.58 ;...
+14.17 122.92 ;...
+14 123.33 ;...
+13.75 123.92 ;...
+13.67 123.58 ;...
+13.33 123.75 ;...
+12.92 124.17 ;...
+12.83 123.83 ;...
+13 123.42 ;...
+13.58 123.08 ;...
+13.83 122.58 ;...
+13.5 122.67 ;...
+13.08 122.67 ;...
+13.67 122.17 ;...
+13.92 121.75 ;...
+13.58 121.25 ;...
+13.75 120.67 ;...
+14.17 120.67 ;...
+14.5 121 ;...
+14.75 120.67 ;...
+14.42 120.58 ;...
+14.75 120.08 ;...
+15.25 120 ;...
+15.67 119.92 ;...
+16.25 119.83 ;...
+NaN NaN ;...
+8.42 117.25 ;...
+8.92 117.5 ;...
+9.25 117.92 ;...
+9.67 118.42 ;...
+10 118.75 ;...
+10.5 119.17 ;...
+11.25 119.5 ;...
+10.5 119.67 ;...
+10.08 119.17 ;...
+9.92 118.83 ;...
+9.42 118.58 ;...
+9.08 118.17 ;...
+8.75 117.92 ;...
+8.42 117.25 ;...
+NaN NaN ;...
+13.42 120.42 ;...
+13.42 120.83 ;...
+13.33 121.25 ;...
+13 121.58 ;...
+12.5 121.58 ;...
+12.17 121.17 ;...
+12.5 120.92 ;...
+13 120.75 ;...
+13.42 120.42 ;...
+NaN NaN ;...
+12.5 124.33 ;...
+12.42 124.75 ;...
+12.5 125.25 ;...
+12.08 125.5 ;...
+11.67 125.5 ;...
+11.08 125.67 ;...
+11.08 125 ;...
+10.67 125 ;...
+10.25 125.25 ;...
+10.17 124.75 ;...
+10.75 124.75 ;...
+10.83 124.42 ;...
+11.42 124.42 ;...
+11.33 124.83 ;...
+11.435 124.872 ;...
+11.54 124.915 ;...
+11.645 124.957 ;...
+11.75 125 ;...
+11.8126 124.875 ;...
+11.8751 124.75 ;...
+11.9376 124.625 ;...
+12 124.5 ;...
+12.5 124.33 ;...
+NaN NaN ;...
+10.5 121.92 ;...
+10.92 122 ;...
+11.42 122.08 ;...
+11.83 121.92 ;...
+11.75 122.5 ;...
+11.5 122.58 ;...
+11.5 123.17 ;...
+10.92 123.08 ;...
+10.83 123.5 ;...
+10.42 123.42 ;...
+10.67 123.83 ;...
+11.08 124 ;...
+10.58 124 ;...
+10.17 124 ;...
+10.08 124.5 ;...
+9.67 124.5 ;...
+9.58 124 ;...
+9.92 123.75 ;...
+9.58 123.5 ;...
+9.75 123.17 ;...
+9.25 123.33 ;...
+9 123 ;...
+9.33 122.67 ;...
+9.43502 122.608 ;...
+9.54002 122.545 ;...
+9.64502 122.483 ;...
+9.75 122.42 ;...
+9.81255 122.522 ;...
+9.87506 122.625 ;...
+9.93755 122.727 ;...
+10 122.83 ;...
+10.42 122.83 ;...
+10.58 122.5 ;...
+10.5 121.92 ;...
+NaN NaN ;...
+7.17 122 ;...
+7.75 122.08 ;...
+8 122.33 ;...
+8.17 122.83 ;...
+8.5 123.08 ;...
+8.67 123.5 ;...
+8.5 123.83 ;...
+8.08 123.92 ;...
+8.42 124.25 ;...
+8.5 124.67 ;...
+9 124.83 ;...
+8.83 125.17 ;...
+9.08 125.5 ;...
+9.75 125.42 ;...
+9.75 125.42 ;...
+9.33 126 ;...
+8.83 126.33 ;...
+8.25 126.33 ;...
+7.67 126.58 ;...
+7.25 126.58 ;...
+6.83 126.33 ;...
+6.33 126.17 ;...
+6.92 126 ;...
+7.33 125.75 ;...
+7 125.5 ;...
+6.75 125.33 ;...
+6.42 125.58 ;...
+6.08 125.75 ;...
+5.58 125.42 ;...
+5.92 125.08 ;...
+5.92 124.75 ;...
+6.17 124.33 ;...
+6.42 124 ;...
+7 124 ;...
+7.33 124.25 ;...
+7.58 124 ;...
+7.75 123.58 ;...
+7.42 123.25 ;...
+7.33 122.92 ;...
+7.75 122.83 ;...
+7.67 122.5 ;...
+7.25 122.25 ;...
+6.83 122.08 ;...
+7.17 122 ;...
+NaN NaN ;...
+-5.5 148.25 ;...
+-5.58 148.83 ;...
+-5.58 149.42 ;...
+-5.5 150 ;...
+-5.5 150.42 ;...
+-5.5 150.83 ;...
+-4.92 151.25 ;...
+-4.92 151.67 ;...
+-4.17 151.5 ;...
+-4.17 152.25 ;...
+-4.67 152.42 ;...
+-5 152.08 ;...
+-5.58 152 ;...
+-5.58 151.58 ;...
+-6 151.17 ;...
+-6.25 150.67 ;...
+-6.25 150.17 ;...
+-6.25 149.67 ;...
+-6.17 149.17 ;...
+-5.83 148.83 ;...
+-5.75 148.33 ;...
+-5.5 148.25 ;...
+NaN NaN ;...
+-2.21577 147.198 ;...
+-2.18725 146.719 ;...
+-2.13789 146.596 ;...
+-1.98672 146.757 ;...
+-1.966 147.092 ;...
+-2.07707 147.366 ;...
+-2.21577 147.198 ;...
+NaN NaN ;...
+-3.73635 152.468 ;...
+-4.16656 153.061 ;...
+-4.28378 153.092 ;...
+-4.60661 153.049 ;...
+-4.74546 152.955 ;...
+-4.78954 152.881 ;...
+-4.55773 152.723 ;...
+-4.25507 152.721 ;...
+-3.73635 152.468 ;...
+NaN NaN ;...
+-3.45722 152.022 ;...
+-3.45088 151.938 ;...
+-3.04936 151.304 ;...
+-2.83616 151.072 ;...
+-2.76105 151.146 ;...
+-3.10603 151.622 ;...
+-3.35671 152.067 ;...
+-3.43183 152.084 ;...
+-3.45722 152.022 ;...
+NaN NaN ;...
+-5.42 154.67 ;...
+-5.5 155.08 ;...
+-6.17 155.58 ;...
+-6.58 156 ;...
+-6.83 155.5 ;...
+-6.5 155.17 ;...
+-6 154.83 ;...
+-5.42 154.67 ;...
+NaN NaN ;...
+-7.30804 157.408 ;...
+-7.34627 157.305 ;...
+-7.26192 157.033 ;...
+-6.79431 156.488 ;...
+-6.67686 156.479 ;...
+-6.82917 156.886 ;...
+-7.11623 157.139 ;...
+-7.30804 157.408 ;...
+NaN NaN ;...
+-8.53103 157.849 ;...
+-8.51261 157.698 ;...
+-8.33216 157.552 ;...
+-8.29246 157.462 ;...
+-8.29963 157.3 ;...
+-8.02901 157.362 ;...
+-7.96993 157.437 ;...
+-7.99715 157.57 ;...
+-8.41673 157.885 ;...
+-8.53103 157.849 ;...
+NaN NaN ;...
+-8.47312 159.783 ;...
+-7.88709 158.726 ;...
+-7.67924 158.554 ;...
+-7.55889 158.606 ;...
+-7.96476 159.168 ;...
+-8.26925 159.741 ;...
+-8.35814 159.839 ;...
+-8.47312 159.783 ;...
+NaN NaN ;...
+-9.51514 161.285 ;...
+-9.1631 160.89 ;...
+-8.92188 160.834 ;...
+-8.57258 160.668 ;...
+-8.47113 160.678 ;...
+-8.45288 160.803 ;...
+-8.53599 160.904 ;...
+-9.51514 161.285 ;...
+NaN NaN ;...
+-9.25 159.5 ;...
+-9.33 160.25 ;...
+-9.67 160.83 ;...
+-9.92 160.5 ;...
+-9.83 160.08 ;...
+-9.83 159.67 ;...
+-9.5 159.42 ;...
+-9.25 159.5 ;...
+NaN NaN ;...
+-10.17 161.25 ;...
+-10.33 162 ;...
+-10.75 162.33 ;...
+-10.67 161.75 ;...
+-10.17 161.25 ;...
+NaN NaN ;...
+-15.6618 166.776 ;...
+-14.7996 166.559 ;...
+-14.7171 166.578 ;...
+-14.8255 166.713 ;...
+-15.1995 166.845 ;...
+-15.1803 166.986 ;...
+-14.9903 167.063 ;...
+-15.4712 167.238 ;...
+-15.5345 167.2 ;...
+-15.5856 166.913 ;...
+-15.6618 166.776 ;...
+NaN NaN ;...
+-15.92 167.33 ;...
+-16.42 167.92 ;...
+-16.5 167.5 ;...
+-15.92 167.33 ;...
+NaN NaN ;...
+-20.25 164.25 ;...
+-20.5 164.75 ;...
+-20.75 165.33 ;...
+-21.17 165.67 ;...
+-21.5 166 ;...
+-21.67 166.5 ;...
+-22 166.83 ;...
+-22.33 167.17 ;...
+-22.33 166.67 ;...
+-22 166.17 ;...
+-21.75 165.75 ;...
+-21.5 165.42 ;...
+-21.25 165 ;...
+-20.83 164.58 ;...
+-20.25 164.25 ;...
+NaN NaN ;...
+-43.77 -176.83 ;...
+-43.8 -176.17 ;...
+-44.17 -176.58 ;...
+-43.9 -176.5 ;...
+-43.77 -176.83 ;...
+NaN NaN ;...
+-18 177.33 ;...
+-17.58 177.42 ;...
+-17.33 177.75 ;...
+-17.33 178.25 ;...
+-17.58 178.67 ;...
+-18 178.67 ;...
+-18.17 178.17 ;...
+-18.17 177.75 ;...
+-18 177.33 ;...
+NaN NaN ;...
+-16.58 178.58 ;...
+-16.42 179.17 ;...
+-16.17 179.83 ;...
+-16.5 179.67 ;...
+-16.67 179.92 ;...
+-16.67 179.33 ;...
+-16.92 178.75 ;...
+-16.58 178.58 ;...
+NaN NaN ;...
+-17.47 -149.58 ;...
+-17.53 -149.33 ;...
+-17.83 -149.17 ;...
+-17.73 -149.5 ;...
+-17.47 -149.58 ;...
+NaN NaN ;...
+22.03 -159.82 ;...
+22.22 -159.58 ;...
+22.22 -159.3 ;...
+21.9 -159.38 ;...
+21.9 -159.62 ;...
+22.03 -159.82 ;...
+NaN NaN ;...
+21.58 -158.28 ;...
+21.72 -157.98 ;...
+21.3 -157.67 ;...
+21.3 -158.12 ;...
+21.58 -158.28 ;...
+NaN NaN ;...
+21.2134 -157.213 ;...
+21.1608 -156.716 ;...
+21.0424 -156.858 ;...
+21.1017 -157.3 ;...
+21.2134 -157.213 ;...
+NaN NaN ;...
+20.95 -156.68 ;...
+20.9 -156.47 ;...
+20.97 -156.28 ;...
+20.73 -155.98 ;...
+20.62 -156.2 ;...
+20.57 -156.43 ;...
+20.78 -156.47 ;...
+20.95 -156.68 ;...
+NaN NaN ;...
+20.27 -155.88 ;...
+20.15 -155.63 ;...
+20.05 -155.37 ;...
+19.92 -155.13 ;...
+19.68 -155.02 ;...
+19.52 -154.8 ;...
+19.33 -155 ;...
+19.27 -155.3 ;...
+19.13 -155.52 ;...
+18.93 -155.65 ;...
+19.08 -155.92 ;...
+19.35 -155.88 ;...
+19.77 -156.05 ;...
+19.95 -155.87 ;...
+20.27 -155.88 ;...
+NaN NaN];
+
+coastlat=[coast(:,1); coast(:,1)];
+coastlon=[coast(:,2); coast(:,2)-360];
+
+%}}}
+if nargin==2, 
+	if strcmpi(class(varargin{1}),'pairoptions'),
+		options=varargin{1};
+	end
+else
+	%process options: 
+	options=pairoptions(varargin{:});
+end
+
+%check on the type of mesh:
+if strcmpi(class(mesh),'mesh2d'),
+	%project: 
+	xl=getfieldvalue(options,'xlim',xlim);
+	yl=getfieldvalue(options,'ylim',ylim);
+	[x,y]=gdaltransform(coastlon,coastlat,'EPSG:4326',mesh.proj);
+	hold on, p=plot(x,y,'k-');
+	xlim(xl); ylim(yl); 
+	set(p,'Color',getfieldvalue(options,'coast_color','k'));
+	set(p,'LineWidth',getfieldvalue(options,'coast_linewidth',1));
+else
+	if ~strcmpi(getfieldvalue(options,'coord','xy'),'latlon') & ~strcmpi(getfieldvalue(options,'coord','xy'),'latlong'),
+
+		[x,y,z]=AboveGround(coastlat,coastlon,mesh.r(1),1000);
+		hold on, p=plot3(x,y,z,'k-'); 
+		set(p,'Color',getfieldvalue(options,'coast_color','k'));
+		set(p,'LineWidth',getfieldvalue(options,'coast_linewidth',1));
+	else
+		hold on, 
+		p=polyshape(coastlon,coastlat);
+		plot(p,'FaceColor','w','FaceAlpha',1);
+		if strcmpi(getfieldvalue(options,'coordcent','atlantic'),'pacific'),
+			xlim(getfieldvalue(options,'xlim',[-360 0]));
+		else 
+			xlim(getfieldvalue(options,'xlim',[-180 180]));
+		end
+		%p=plot(coastlon,coastlat,'k-'); 
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_coastlines.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_coastlines.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_coastlines.py	(revision 27955)
@@ -0,0 +1,9922 @@
+import matplotlib.patches.Polygon as Polygon
+import numpy as np
+
+from AboveGround import AboveGround
+from gdaltransform import gdaltransform
+
+
+def plot_coastlines(mesh, *args):  # {{{
+    # Define coastline #{{{
+    coast = np.array([
+        [-90, -180],
+        [-83.83, -180],
+        [-84.33, -178],
+        [-84.5, -174],
+        [-84.67, -170],
+        [-84.92, -166],
+        [-85.42, -163],
+        [-85.42, -158],
+        [-85.58, -152],
+        [-85.33, -146],
+        [-84.83, -147],
+        [-84.5, -151],
+        [-84, -153.5],
+        [-83.5, -153],
+        [-83, -154],
+        [-82.5, -154],
+        [-82, -154],
+        [-81.5, -154.5],
+        [-81.17, -153],
+        [-81, -150],
+        [-80.92, -146.5],
+        [-80.67, -145.5],
+        [-80.33, -148],
+        [-80, -150],
+        [-79.67, -152.5],
+        [-79.25, -155],
+        [-78.83, -157],
+        [-78.7478, -157.255],
+        [-78.6654, -157.507],
+        [-78.5828, -157.755],
+        [-78.5, -158],
+        [-78.4806, -157.666],
+        [-78.4608, -157.333],
+        [-78.4406, -157.001],
+        [-78.42, -156.67],
+        [-78.5, -154.5],
+        [-78.17, -154.5],
+        [-78.17, -154.5],
+        [-78.08, -156.67],
+        [-77.83, -158],
+        [-77.5, -158.33],
+        [-77.17, -158.67],
+        [-77, -157],
+        [-77.17, -154],
+        [-77.58, -153],
+        [-77.83, -150.5],
+        [-77.67, -148],
+        [-77.25, -146],
+        [-76.75, -146],
+        [-76.33, -146.33],
+        [-75.92, -146.67],
+        [-75.83, -144],
+        [-75.58, -142],
+        [-75.75, -140.67],
+        [-75.42, -140],
+        [-75.25, -138.33],
+        [-75, -136.67],
+        [-74.75, -135.5],
+        [-74.75, -133],
+        [-75, -132],
+        [-75.42, -130.83],
+        [-75.75, -129.67],
+        [-76, -128],
+        [-76, -127],
+        [-75.67, -126.83],
+        [-75.17, -126.33],
+        [-74.67, -125.5],
+        [-74.33, -124.5],
+        [-74.33, -124.5],
+        [-73.83, -123.33],
+        [-73.25, -123.67],
+        [-73.25, -122.33],
+        [-73.75, -121.33],
+        [-74, -120],
+        [-73.58, -120],
+        [-73.6037, -119.584],
+        [-73.6266, -119.167],
+        [-73.6487, -118.749],
+        [-73.67, -118.33],
+        [-73.6712, -117.915],
+        [-73.6716, -117.5],
+        [-73.6712, -117.085],
+        [-73.67, -116.67],
+        [-73.7101, -116.586],
+        [-73.7501, -116.501],
+        [-73.7901, -116.416],
+        [-73.83, -116.33],
+        [-73.9158, -116.66],
+        [-74.001, -116.993],
+        [-74.0858, -117.33],
+        [-74.17, -117.67],
+        [-74.295, -117.67],
+        [-74.42, -117.67],
+        [-74.545, -117.67],
+        [-74.67, -117.67],
+        [-74.7957, -117.343],
+        [-74.921, -117.011],
+        [-75.0457, -116.673],
+        [-75.17, -116.33],
+        [-75.1929, -115.668],
+        [-75.2138, -115.004],
+        [-75.2329, -114.338],
+        [-75.25, -113.67],
+        [-75, -112.33],
+        [-74.5, -112.5],
+        [-74.375, -112.543],
+        [-74.25, -112.586],
+        [-74.125, -112.628],
+        [-74, -112.67],
+        [-73.9177, -112.5],
+        [-73.8353, -112.332],
+        [-73.7527, -112.165],
+        [-73.67, -112],
+        [-74, -111.5],
+        [-74.5, -111],
+        [-75, -110.33],
+        [-75.17, -108.67],
+        [-74.67, -108.5],
+        [-74.5, -109.5],
+        [-74, -109.5],
+        [-74, -108.33],
+        [-74.33, -108],
+        [-74.67, -108.5],
+        [-75.08, -107.5],
+        [-75.08, -106],
+        [-74.92, -104.5],
+        [-74.92, -104.5],
+        [-74.58, -104.5],
+        [-74.58, -102.67],
+        [-74.75, -101.33],
+        [-75, -100],
+        [-74.75, -99.5],
+        [-74.33, -101.33],
+        [-74, -100.67],
+        [-73.75, -101.5],
+        [-73.5, -101.5],
+        [-73.58, -100],
+        [-73.42, -99],
+        [-73.08, -100],
+        [-73.25, -101.33],
+        [-72.75, -102.5],
+        [-72.67, -101.33],
+        [-73, -101.5],
+        [-72.92, -99.67],
+        [-73.33, -98.5],
+        [-73.08, -98],
+        [-73.42, -97.5],
+        [-73.75, -97.5],
+        [-73.75, -96.33],
+        [-73.42, -96],
+        [-73.08, -96],
+        [-72.92, -97.5],
+        [-72.5, -98.5],
+        [-72.17, -99.67],
+        [-72.1084, -100.006],
+        [-72.0461, -100.339],
+        [-71.9833, -100.671],
+        [-71.92, -101],
+        [-71.8782, -100.706],
+        [-71.8359, -100.412],
+        [-71.7932, -100.121],
+        [-71.75, -99.83],
+        [-72, -98.33],
+        [-72, -98.33],
+        [-71.83, -97],
+        [-72.08, -95.67],
+        [-72.42, -95.67],
+        [-72.58, -94],
+        [-72.75, -92.25],
+        [-72.92, -90.5],
+        [-72.92, -88.75],
+        [-72.92, -87],
+        [-73.08, -85.5],
+        [-72.92, -84.33],
+        [-72.83, -83],
+        [-72.92, -81.25],
+        [-73, -79.5],
+        [-73.25, -78.5],
+        [-72.83, -78.67],
+        [-72.42, -78],
+        [-72.58, -76.5],
+        [-72.83, -75],
+        [-73, -74],
+        [-73.5, -74.5],
+        [-73.42, -73],
+        [-73.33, -71.5],
+        [-73.17, -70],
+        [-73.08, -68.5],
+        [-72.83, -67.5],
+        [-72.33, -67],
+        [-71.83, -67],
+        [-71.5, -67.5],
+        [-70.92, -67.5],
+        [-70.42, -68],
+        [-70.42, -68],
+        [-70, -68.5],
+        [-69.42, -68.5],
+        [-69.42, -67.33],
+        [-69.08, -66.67],
+        [-68.83, -67.33],
+        [-68.5, -66.83],
+        [-68.08, -66.83],
+        [-67.75, -67.5],
+        [-67.42, -67.5],
+        [-67.75, -68.5],
+        [-67.75, -69.25],
+        [-67.33, -69.33],
+        [-66.92, -68.67],
+        [-66.67, -67.83],
+        [-67.08, -67.67],
+        [-67, -67],
+        [-67.33, -66.33],
+        [-66.83, -66.33],
+        [-66.58, -65.5],
+        [-66.25, -65.83],
+        [-65.92, -65],
+        [-65.5, -64],
+        [-65.08, -64],
+        [-65.17, -63],
+        [-64.75, -62.67],
+        [-64.67, -61.67],
+        [-64.25, -61.5],
+        [-64, -61],
+        [-63.83, -59.67],
+        [-63.58, -58.83],
+        [-63.58, -58.83],
+        [-63.33, -58],
+        [-63.25, -57.17],
+        [-63.58, -56.67],
+        [-63.58, -57.33],
+        [-63.643, -57.5386],
+        [-63.7056, -57.7481],
+        [-63.768, -57.9586],
+        [-63.83, -58.17],
+        [-63.8305, -57.94],
+        [-63.8307, -57.71],
+        [-63.8305, -57.48],
+        [-63.83, -57.25],
+        [-64.42, -57.33],
+        [-64.33, -58.17],
+        [-64, -58.67],
+        [-64.5, -59],
+        [-64.33, -59.67],
+        [-64.67, -60.5],
+        [-65, -61.33],
+        [-65.42, -62],
+        [-65.75, -62.17],
+        [-66.08, -62.33],
+        [-66.5, -62.67],
+        [-66.25, -63.5],
+        [-66.5, -64],
+        [-66.92, -63.67],
+        [-66.92, -64.67],
+        [-67.33, -65.33],
+        [-67.83, -65.5],
+        [-67.8928, -65.3339],
+        [-67.9553, -65.1668],
+        [-68.0178, -64.9989],
+        [-68.08, -64.83],
+        [-68.1426, -64.954],
+        [-68.2052, -65.0786],
+        [-68.2676, -65.204],
+        [-68.33, -65.33],
+        [-68.4351, -65.2067],
+        [-68.5402, -65.0823],
+        [-68.6451, -64.9568],
+        [-68.75, -64.83],
+        [-68.75, -63.67],
+        [-69.08, -62.67],
+        [-69.67, -62.33],
+        [-70.17, -62],
+        [-70.17, -62],
+        [-70.58, -61.5],
+        [-70.92, -61.67],
+        [-71.17, -61],
+        [-71.58, -60.83],
+        [-72, -61.67],
+        [-72.33, -60.83],
+        [-72.67, -61],
+        [-72.7531, -60.7116],
+        [-72.8358, -60.4205],
+        [-72.9181, -60.1266],
+        [-73, -59.83],
+        [-73.0826, -59.9138],
+        [-73.1651, -59.9984],
+        [-73.2476, -60.0838],
+        [-73.33, -60.17],
+        [-73.42, -61.5],
+        [-73.75, -61],
+        [-74.33, -60.67],
+        [-74.67, -61.67],
+        [-75.08, -61.67],
+        [-75.17, -63],
+        [-75.67, -63],
+        [-76.08, -63.67],
+        [-76.5, -65.5],
+        [-77, -67.33],
+        [-77.17, -65],
+        [-77.08, -62.5],
+        [-77.08, -60],
+        [-77.25, -57.67],
+        [-77.58, -56],
+        [-77.92, -53.67],
+        [-78.25, -51.67],
+        [-78.5, -49.33],
+        [-78.75, -47.67],
+        [-78.83, -44],
+        [-78.83, -41],
+        [-78.83, -41],
+        [-78.75, -38.5],
+        [-78.33, -36.33],
+        [-77.83, -35],
+        [-77.5, -33.33],
+        [-77.17, -31.67],
+        [-76.83, -30],
+        [-76.5, -28.33],
+        [-76.08, -27],
+        [-75.67, -26],
+        [-75.33, -24],
+        [-74.75, -23.67],
+        [-74.42, -22.33],
+        [-74.08, -20.67],
+        [-73.75, -19.33],
+        [-73.42, -17.67],
+        [-73.08, -16.33],
+        [-72.92, -14.67],
+        [-72.83, -13.5],
+        [-72.58, -12.33],
+        [-72.25, -11.33],
+        [-71.92, -11.17],
+        [-71.67, -12],
+        [-71.33, -12.17],
+        [-71.25, -11.5],
+        [-71.58, -11],
+        [-71.25, -10.5],
+        [-71, -9.75],
+        [-71.17, -9],
+        [-71.42, -8.67],
+        [-71.83, -8.5],
+        [-71.83, -8.5],
+        [-71.7907, -8.20564],
+        [-71.7509, -7.91252],
+        [-71.7107, -7.62064],
+        [-71.67, -7.33],
+        [-71.6076, -7.41584],
+        [-71.5451, -7.50111],
+        [-71.4826, -7.58583],
+        [-71.42, -7.67],
+        [-71.3351, -7.58388],
+        [-71.2501, -7.49851],
+        [-71.1651, -7.41389],
+        [-71.08, -7.33],
+        [-71.0176, -7.41581],
+        [-70.9551, -7.50107],
+        [-70.8926, -7.5858],
+        [-70.83, -7.67],
+        [-70.8104, -7.45937],
+        [-70.7905, -7.24916],
+        [-70.7704, -7.03937],
+        [-70.75, -6.83],
+        [-70.75, -5.83],
+        [-71, -5.83],
+        [-71.33, -6],
+        [-71.33, -4.5],
+        [-71.25, -3],
+        [-70.67, -3],
+        [-70.42, -3.33],
+        [-70.25, -2.5],
+        [-70.42, -1.67],
+        [-70.67, -1],
+        [-71, -1.5],
+        [-71.25, -0.67],
+        [-71.5, 0],
+        [-71.25, 1.33],
+        [-70.92, 2.67],
+        [-70.58, 3.5],
+        [-70.33, 4.67],
+        [-70.33, 6.33],
+        [-70.08, 7.33],
+        [-70.08, 8.67],
+        [-70.17, 10],
+        [-70.08, 11.33],
+        [-70.08, 12.67],
+        [-70.17, 14.33],
+        [-70.17, 15.67],
+        [-70.17, 15.67],
+        [-70.17, 17],
+        [-70.17, 18.33],
+        [-70.33, 20],
+        [-70.42, 21.5],
+        [-70.58, 23],
+        [-70.42, 24.67],
+        [-70.17, 25.33],
+        [-70.17, 27],
+        [-69.92, 28.33],
+        [-69.83, 30],
+        [-69.58, 31.33],
+        [-69.5, 32],
+        [-69.5, 33.5],
+        [-69, 33.33],
+        [-68.67, 33.5],
+        [-68.58, 34.33],
+        [-68.92, 35],
+        [-69.33, 36],
+        [-69.5, 37],
+        [-69.58, 38.33],
+        [-70.08, 38.67],
+        [-69.67, 39.33],
+        [-69.5, 39.83],
+        [-69.17, 39.83],
+        [-68.83, 40],
+        [-68.5, 41.33],
+        [-68.17, 42],
+        [-67.83, 43.33],
+        [-67.75, 44.5],
+        [-67.75, 46],
+        [-67.75, 46],
+        [-67.58, 47],
+        [-67.67, 48.17],
+        [-67.42, 48.5],
+        [-67.42, 49.33],
+        [-67.83, 49.83],
+        [-67.58, 50.5],
+        [-67, 50.17],
+        [-66.5, 50.5],
+        [-66.25, 51.5],
+        [-65.92, 52.17],
+        [-65.83, 53.67],
+        [-65.92, 55.17],
+        [-66.25, 56],
+        [-66.42, 57.17],
+        [-66.67, 57.17],
+        [-66.75, 56.33],
+        [-66.92, 57],
+        [-67, 58],
+        [-67.17, 59],
+        [-67.5, 59.33],
+        [-67.33, 60.67],
+        [-67.58, 61.67],
+        [-67.67, 62.67],
+        [-67.5, 63.67],
+        [-67.58, 65],
+        [-67.75, 66.33],
+        [-67.83, 67.67],
+        [-67.83, 68.67],
+        [-67.67, 69.5],
+        [-68.17, 69.5],
+        [-68.17, 69.5],
+        [-68.58, 70],
+        [-69, 70.5],
+        [-69.17, 69.5],
+        [-69.58, 69.83],
+        [-70.08, 69.83],
+        [-70.5, 70.67],
+        [-70.42, 71.67],
+        [-70.08, 71],
+        [-69.75, 72.33],
+        [-69.58, 73.5],
+        [-69.67, 74.5],
+        [-69.83, 75.5],
+        [-69.5, 76.17],
+        [-69.17, 77.17],
+        [-69.08, 78],
+        [-68.5, 78.33],
+        [-68.25, 79],
+        [-68, 80.5],
+        [-67.83, 81.67],
+        [-67.33, 82.5],
+        [-67.17, 83.67],
+        [-67, 85],
+        [-66.83, 86.33],
+        [-66.67, 87.67],
+        [-66.75, 88.5],
+        [-66.75, 89.67],
+        [-66.67, 91],
+        [-66.5, 92],
+        [-66.58, 93],
+        [-66.58, 94],
+        [-66.58, 94],
+        [-66.5, 95],
+        [-66.67, 96],
+        [-66.5, 97],
+        [-66.67, 97.67],
+        [-66.5, 98.5],
+        [-66.58, 99.33],
+        [-66.42, 100],
+        [-66.42, 100.67],
+        [-66.08, 101.5],
+        [-65.83, 102.67],
+        [-65.92, 104],
+        [-66.08, 105],
+        [-66.25, 106],
+        [-66.5, 107],
+        [-66.58, 108],
+        [-66.83, 109],
+        [-66.58, 109.5],
+        [-66.67, 110.33],
+        [-66.42, 110.67],
+        [-66.08, 110.67],
+        [-65.92, 111.67],
+        [-65.83, 112.67],
+        [-65.75, 113.67],
+        [-66, 114.5],
+        [-66.33, 115.5],
+        [-66.5, 116.5],
+        [-66.75, 117.67],
+        [-66.83, 119],
+        [-66.83, 120.33],
+        [-66.67, 121.5],
+        [-66.67, 121.5],
+        [-66.42, 122.5],
+        [-66.75, 123.33],
+        [-66.75, 124.33],
+        [-66.5, 124.83],
+        [-66.58, 125.83],
+        [-66.25, 126.5],
+        [-66.25, 127],
+        [-66.5, 127.67],
+        [-66.92, 128.33],
+        [-67, 129],
+        [-67.17, 129.5],
+        [-66.92, 130],
+        [-66.33, 130],
+        [-66.08, 130.83],
+        [-66.17, 132],
+        [-66.08, 133.33],
+        [-66.17, 134.33],
+        [-66.08, 135.33],
+        [-66.33, 136.33],
+        [-66.33, 137.33],
+        [-66.5, 138.33],
+        [-66.58, 139.33],
+        [-66.67, 140.5],
+        [-66.75, 142],
+        [-67, 142.5],
+        [-66.83, 143.33],
+        [-67, 144.33],
+        [-67.5, 144.33],
+        [-67.58, 145],
+        [-67.5, 146],
+        [-67.5, 146],
+        [-67.83, 146.83],
+        [-68.25, 147],
+        [-68.42, 148.33],
+        [-68.25, 149],
+        [-68.5, 150.33],
+        [-68.33, 151],
+        [-68.67, 151.5],
+        [-68.58, 152.67],
+        [-68.58, 154.33],
+        [-69.08, 155],
+        [-69.33, 156],
+        [-69, 156.5],
+        [-69.08, 157.5],
+        [-69.25, 158.67],
+        [-69.5, 160],
+        [-69.67, 161],
+        [-70.08, 161],
+        [-70.5, 161.17],
+        [-70.83, 161.67],
+        [-70.58, 162.17],
+        [-70.17, 162.33],
+        [-70.08, 163.33],
+        [-70.58, 163.17],
+        [-70.58, 164.67],
+        [-70.5, 166],
+        [-70.83, 167.33],
+        [-71.17, 168.67],
+        [-71.5, 170],
+        [-71.17, 170.17],
+        [-71.75, 171],
+        [-71.75, 171],
+        [-72, 170.17],
+        [-72.5, 170.5],
+        [-72.83, 169.67],
+        [-73.17, 168.5],
+        [-73.25, 167],
+        [-73.67, 167],
+        [-74.08, 166.67],
+        [-74.17, 165.33],
+        [-74.5, 165.33],
+        [-74.83, 164.33],
+        [-75.17, 163],
+        [-75.67, 162.67],
+        [-76.08, 162.67],
+        [-76.5, 163],
+        [-76.92, 163.33],
+        [-77.33, 163.67],
+        [-77.75, 163.67],
+        [-78, 164.67],
+        [-78.1056, 164.994],
+        [-78.2108, 165.323],
+        [-78.3156, 165.659],
+        [-78.42, 166],
+        [-78.4413, 165.503],
+        [-78.4617, 165.003],
+        [-78.4813, 164.503],
+        [-78.5, 164],
+        [-78.75, 161.5],
+        [-79.17, 160],
+        [-79.67, 160],
+        [-80, 160],
+        [-80.5, 160.33],
+        [-81, 160.33],
+        [-81.5, 161],
+        [-81.92, 162.33],
+        [-82.42, 164],
+        [-82.83, 166],
+        [-82.83, 166],
+        [-83.25, 168.5],
+        [-83.5, 171.5],
+        [-83.5, 176],
+        [-83.83, 180],
+        [-85, 180],
+        [-87, 180],
+        [-90, 180],
+        [np.nan, np.nan],
+        [-77.58, 166.33],
+        [-77.08, 166.67],
+        [-77.33, 168.17],
+        [-77.42, 169.67],
+        [-77.67, 168.17],
+        [-77.58, 166.33],
+        [np.nan, np.nan],
+        [-78.75, -164],
+        [-78.75, -161.67],
+        [-79.08, -160.67],
+        [-79.5, -160],
+        [-79.92, -160],
+        [-80.25, -161.67],
+        [-79.83, -163.67],
+        [-79.33, -163.67],
+        [-79.08, -163],
+        [-78.75, -164],
+        [np.nan, np.nan],
+        [-76.58, -150.17],
+        [-76.17, -148.17],
+        [-76.2329, -147.923],
+        [-76.2955, -147.674],
+        [-76.3579, -147.423],
+        [-76.42, -147.17],
+        [-76.5031, -147.497],
+        [-76.5859, -147.827],
+        [-76.6682, -148.161],
+        [-76.75, -148.5],
+        [-76.58, -150.17],
+        [np.nan, np.nan],
+        [-71.08, -76.17],
+        [-71.08, -74.67],
+        [-71, -73],
+        [-70.92, -71.83],
+        [-70.83, -71],
+        [-70.58, -70.67],
+        [-70.08, -71],
+        [-69.58, -71.5],
+        [-69.08, -71.67],
+        [-68.92, -71.17],
+        [-68.83, -70.33],
+        [-69.42, -69.67],
+        [-70, -69.33],
+        [-70.5, -68.83],
+        [-71, -68.5],
+        [-71.5, -68.33],
+        [-71.92, -68.5],
+        [-72.33, -68.83],
+        [-72.58, -70],
+        [-72.67, -71.5],
+        [-72.58, -73],
+        [-72.25, -73.33],
+        [-72.17, -74.33],
+        [-71.83, -75],
+        [-71.67, -76],
+        [-71.33, -76.5],
+        [-71.08, -76.17],
+        [np.nan, np.nan],
+        [-70.58, -76.17],
+        [-70.25, -75.67],
+        [-70, -75.75],
+        [-69.75, -74.5],
+        [-69.92, -73.67],
+        [-70.25, -73.75],
+        [-70.5, -74],
+        [-70.58, -75],
+        [-70.58, -76.17],
+        [np.nan, np.nan],
+        [-64.799, -63.6633],
+        [-64.7634, -64.0273],
+        [-64.6919, -64.1488],
+        [-64.5633, -64.0044],
+        [-64.4418, -63.6482],
+        [-64.3347, -63.2838],
+        [-64.5629, -63.0404],
+        [-64.756, -63.4542],
+        [-64.799, -63.6633],
+        [np.nan, np.nan],
+        [-64.5414, -62.5914],
+        [-64.256, -62.4589],
+        [-64.0994, -62.4781],
+        [-64.0851, -62.2525],
+        [-64.2488, -62.1151],
+        [-64.5414, -62.5914],
+        [np.nan, np.nan],
+        [-63.25, -56.5],
+        [-63, -55.83],
+        [-63.1055, -55.6248],
+        [-63.2106, -55.418],
+        [-63.3155, -55.2098],
+        [-63.42, -55],
+        [-63.4407, -55.2495],
+        [-63.4609, -55.4993],
+        [-63.4807, -55.7495],
+        [-63.5, -56],
+        [-63.25, -56.5],
+        [np.nan, np.nan],
+        [-62.232, -58.7408],
+        [-62.1268, -58.7522],
+        [-62.0075, -58.5804],
+        [-61.958, -57.9445],
+        [-61.9859, -57.8248],
+        [-62.0771, -57.8208],
+        [-62.1615, -58.0476],
+        [-62.232, -58.7408],
+        [np.nan, np.nan],
+        [-62.7883, -60.2334],
+        [-62.6897, -60.3025],
+        [-62.6688, -60.7807],
+        [-62.5069, -60.7731],
+        [-62.4575, -60.3266],
+        [-62.4785, -60.0343],
+        [-62.5699, -59.9605],
+        [-62.6755, -59.9509],
+        [-62.7883, -60.2334],
+        [np.nan, np.nan],
+        [-60.63, -46.33],
+        [-60.33, -46],
+        [-60.4232, -45.7521],
+        [-60.5159, -45.5029],
+        [-60.6082, -45.2521],
+        [-60.7, -45],
+        [-60.6837, -45.333],
+        [-60.6666, -45.6657],
+        [-60.6487, -45.9981],
+        [-60.63, -46.33],
+        [np.nan, np.nan],
+        [0, -80.08],
+        [0.67, -80],
+        [1, -79.33],
+        [1.25, -78.83],
+        [1.67, -79],
+        [1.75, -78.58],
+        [2.17, -78.67],
+        [2.67, -78.33],
+        [2.67, -77.75],
+        [3.25, -77.5],
+        [3.67, -77.17],
+        [4, -77.5],
+        [4.5, -77.33],
+        [5, -77.42],
+        [5.5, -77.42],
+        [6.17, -77.5],
+        [6.58, -77.42],
+        [7, -77.75],
+        [7.42, -78.17],
+        [8, -78.42],
+        [8.33, -78.17],
+        [8.33, -78.5],
+        [8.75, -78.75],
+        [9, -79.17],
+        [9, -79.5],
+        [8.58, -79.75],
+        [8.33, -80.08],
+        [8.33, -80.08],
+        [8.17, -80.5],
+        [7.83, -80.42],
+        [7.74754, -80.3149],
+        [7.66505, -80.2099],
+        [7.58254, -80.1049],
+        [7.5, -80],
+        [7.43755, -80.1251],
+        [7.37507, -80.2501],
+        [7.31255, -80.3751],
+        [7.25, -80.5],
+        [7.17, -80.92],
+        [7.75, -81],
+        [7.75, -81.5],
+        [8.08, -81.75],
+        [8.25, -82.25],
+        [8.33, -82.75],
+        [8.17, -83],
+        [8.42, -83.25],
+        [8.5, -83.75],
+        [9, -83.67],
+        [9.33, -84],
+        [9.67, -84.58],
+        [10, -84.83],
+        [9.67, -85.17],
+        [9.83, -85.33],
+        [9.92, -85.67],
+        [10.33, -85.83],
+        [10.75, -85.75],
+        [11.17, -85.75],
+        [11.5, -86.17],
+        [11.83, -86.58],
+        [12.25, -87],
+        [12.58, -87.33],
+        [12.685, -87.4149],
+        [12.7901, -87.4999],
+        [12.895, -87.5849],
+        [13, -87.67],
+        [13, -87.585],
+        [13.0001, -87.5],
+        [13, -87.415],
+        [13, -87.33],
+        [13.105, -87.4149],
+        [13.2101, -87.4999],
+        [13.315, -87.5849],
+        [13.42, -87.67],
+        [13.42, -87.67],
+        [13.17, -87.83],
+        [13.17, -88.42],
+        [13.17, -88.83],
+        [13.42, -89.33],
+        [13.42, -89.75],
+        [13.67, -90],
+        [13.92, -90.5],
+        [13.92, -91],
+        [14.08, -91.5],
+        [14.33, -92],
+        [14.67, -92.33],
+        [15, -92.75],
+        [15.42, -93.17],
+        [15.67, -93.42],
+        [15.92, -93.83],
+        [16.08, -94.25],
+        [16.17, -94.67],
+        [16.17, -95.17],
+        [15.92, -95.67],
+        [15.67, -96.25],
+        [15.83, -96.83],
+        [16, -97.42],
+        [16.08, -98],
+        [16.33, -98.5],
+        [16.58, -99],
+        [16.67, -99.5],
+        [16.92, -100],
+        [17.08, -100.5],
+        [17.25, -101],
+        [17.67, -101.58],
+        [17.67, -101.58],
+        [18, -102],
+        [18, -102.25],
+        [18.08, -102.83],
+        [18.33, -103.5],
+        [18.75, -103.83],
+        [19.08, -104.33],
+        [19.33, -104.92],
+        [19.83, -105.33],
+        [20.33, -105.67],
+        [20.58, -105.33],
+        [20.83, -105.5],
+        [21.17, -105.17],
+        [21.5, -105.17],
+        [21.75, -105.5],
+        [22.42, -105.67],
+        [22.75, -106],
+        [23.17, -106.42],
+        [23.5, -106.75],
+        [24, -107.17],
+        [24.33, -107.58],
+        [24.67, -108],
+        [25.25, -108.33],
+        [25.5, -109],
+        [25.75, -109.42],
+        [26, -109.42],
+        [26.33, -109.25],
+        [26.67, -109.5],
+        [26.67, -109.75],
+        [27, -110],
+        [27.42, -110.58],
+        [27.42, -110.58],
+        [27.92, -110.58],
+        [28, -111.17],
+        [28.5, -111.67],
+        [29, -112.17],
+        [29.5, -112.42],
+        [29.92, -112.75],
+        [30.25, -112.83],
+        [30.75, -113.08],
+        [31.17, -113.08],
+        [31.33, -113.5],
+        [31.58, -113.83],
+        [31.5, -114.17],
+        [31.75, -114.75],
+        [31.42, -114.83],
+        [31, -114.75],
+        [30.58, -114.58],
+        [30.17, -114.67],
+        [29.83, -114.42],
+        [29.58, -114],
+        [29.17, -113.67],
+        [28.75, -113.25],
+        [28.33, -112.92],
+        [27.83, -112.75],
+        [27.5, -112.33],
+        [27, -112],
+        [26.5, -111.5],
+        [26, -111.33],
+        [25.5, -111],
+        [25.17, -111],
+        [24.83, -110.67],
+        [24.83, -110.67],
+        [24.67, -110.83],
+        [24.25, -110.58],
+        [24.25, -110.17],
+        [23.75, -109.75],
+        [23.33, -109.42],
+        [22.83, -110],
+        [23.5, -110.33],
+        [23.83, -110.83],
+        [24.25, -111.25],
+        [24.58, -111.67],
+        [24.83, -112.33],
+        [25.17, -112.08],
+        [25.67, -112.08],
+        [26.17, -112.33],
+        [26.42, -112.83],
+        [26.75, -113.17],
+        [26.75, -113.58],
+        [27, -114],
+        [27.17, -114.33],
+        [27.5, -114.5],
+        [27.83, -115],
+        [27.75, -114.42],
+        [28, -114],
+        [28.42, -114],
+        [28.75, -114.33],
+        [29.08, -114.67],
+        [29.5, -115.17],
+        [29.67, -115.67],
+        [30.25, -115.75],
+        [30.33, -116],
+        [30.33, -116],
+        [30.75, -116],
+        [31, -116.33],
+        [31.25, -116.33],
+        [31.58, -116.58],
+        [32, -116.75],
+        [32.5, -117.08],
+        [33, -117.25],
+        [33.42, -117.5],
+        [33.75, -118],
+        [33.75, -118.33],
+        [34.08, -118.42],
+        [34.08, -118.75],
+        [34.25, -119.25],
+        [34.42, -119.83],
+        [34.58, -120.58],
+        [35.08, -120.58],
+        [35.58, -121.08],
+        [36, -121.42],
+        [36.33, -121.92],
+        [36.58, -121.83],
+        [37, -121.83],
+        [37, -122.17],
+        [37.33, -122.42],
+        [37.75, -122.5],
+        [37.5, -122.08],
+        [37.92, -122.33],
+        [38.08, -122.17],
+        [38.17, -122.5],
+        [37.92, -122.5],
+        [38, -123],
+        [38, -123],
+        [38.33, -122.92],
+        [38.58, -123.33],
+        [38.92, -123.67],
+        [39.33, -123.75],
+        [39.67, -123.75],
+        [40, -124],
+        [40.25, -124.33],
+        [40.5, -124.33],
+        [41, -124.08],
+        [41.5, -124],
+        [42, -124.17],
+        [42.33, -124.42],
+        [42.83, -124.5],
+        [43.42, -124.25],
+        [44, -124.08],
+        [44.5, -124],
+        [45, -124],
+        [45.42, -123.83],
+        [45.83, -123.92],
+        [46.17, -123.92],
+        [46.17, -123.17],
+        [46.33, -123.92],
+        [46.67, -124],
+        [47, -124.08],
+        [47.5, -124.33],
+        [47.92, -124.58],
+        [48.17, -124.75],
+        [48.42, -124.67],
+        [48.17, -123.83],
+        [48.17, -123.17],
+        [48.17, -123.17],
+        [47.92, -122.58],
+        [47.5, -123],
+        [47.67, -122.58],
+        [47.5, -122.5],
+        [48, -122.25],
+        [48.1051, -122.332],
+        [48.2101, -122.414],
+        [48.3151, -122.497],
+        [48.42, -122.58],
+        [48.46, -122.54],
+        [48.5, -122.5],
+        [48.54, -122.46],
+        [48.58, -122.42],
+        [48.6851, -122.502],
+        [48.7901, -122.584],
+        [48.8951, -122.667],
+        [49, -122.75],
+        [49.25, -123.17],
+        [49.75, -123.17],
+        [49.5, -123.75],
+        [49.75, -124.33],
+        [50.08, -124.92],
+        [50.42, -125.5],
+        [50.67, -126.25],
+        [50.83, -127],
+        [51.17, -127.75],
+        [51.5, -127.75],
+        [51.83, -128.17],
+        [52.33, -128.42],
+        [52.58, -129.17],
+        [53.17, -129.75],
+        [53.42, -130.33],
+        [53.92, -130.75],
+        [54.17, -130.17],
+        [54.42, -130.42],
+        [54.92, -130.08],
+        [54.75, -130.75],
+        [55, -131.33],
+        [55.33, -131.75],
+        [55.33, -131.75],
+        [55.75, -132.08],
+        [56.08, -132],
+        [56.08, -132.5],
+        [56.25, -133],
+        [55.83, -132.58],
+        [55.25, -132.08],
+        [54.67, -132.08],
+        [55.08, -132.5],
+        [55.33, -133.08],
+        [55.58, -133.42],
+        [55.92, -133.67],
+        [56.33, -133.67],
+        [56.25, -134.17],
+        [56.75, -134.33],
+        [57.08, -133.83],
+        [56.92, -133],
+        [57.25, -133.42],
+        [57.58, -133.75],
+        [57.25, -134],
+        [57, -134.5],
+        [57.42, -134.5],
+        [57.92, -134.75],
+        [58.25, -134.67],
+        [58.67, -135],
+        [58.25, -135.17],
+        [58.25, -135.67],
+        [57.92, -135],
+        [57.42, -135],
+        [56.83, -134.75],
+        [56.17, -134.75],
+        [56.17, -134.75],
+        [56.75, -135.17],
+        [57.25, -135.5],
+        [57.67, -136.17],
+        [58.17, -136.5],
+        [58.42, -137.25],
+        [58.75, -137.92],
+        [59.17, -138.67],
+        [59.42, -139.5],
+        [59.92, -139.67],
+        [59.67, -140.25],
+        [59.75, -141.08],
+        [60, -142],
+        [60, -143],
+        [60, -144],
+        [60.25, -145],
+        [60.58, -146],
+        [60.83, -146.67],
+        [60.83, -147.5],
+        [61, -148.33],
+        [60.42, -148.17],
+        [59.92, -148.67],
+        [59.92, -149.5],
+        [59.58, -150.17],
+        [59.25, -150.92],
+        [59.17, -151.92],
+        [59.5, -151.42],
+        [59.67, -151.92],
+        [60.17, -151.42],
+        [60.75, -151.33],
+        [60.92, -150.42],
+        [60.92, -150.42],
+        [61.0027, -150.296],
+        [61.0852, -150.171],
+        [61.1677, -150.046],
+        [61.25, -149.92],
+        [61.2504, -150.107],
+        [61.2505, -150.295],
+        [61.2504, -150.483],
+        [61.25, -150.67],
+        [60.92, -151.67],
+        [60.58, -152.25],
+        [60.08, -152.5],
+        [59.67, -153.08],
+        [59.42, -153.83],
+        [59.08, -154.08],
+        [58.92, -153.33],
+        [58.5, -153.83],
+        [58.17, -154.33],
+        [57.83, -155.25],
+        [57.42, -156.17],
+        [57, -156.67],
+        [56.67, -157.67],
+        [56.42, -158.42],
+        [56, -158.75],
+        [55.83, -159.58],
+        [55.58, -160.5],
+        [55.42, -161.42],
+        [55.17, -162],
+        [55, -162.83],
+        [54.67, -163.67],
+        [54.33, -164.75],
+        [54.58, -164.92],
+        [55, -163.92],
+        [55.25, -162.92],
+        [55.67, -162.33],
+        [55.92, -161.42],
+        [56, -160.5],
+        [56, -160.5],
+        [56.5, -159.92],
+        [56.83, -159],
+        [57.25, -158.33],
+        [57.58, -157.67],
+        [58.17, -157.5],
+        [58.75, -157.42],
+        [58.67, -158],
+        [58.75, -158.67],
+        [58.42, -158.92],
+        [58.92, -159.58],
+        [58.92, -161],
+        [58.75, -161.58],
+        [59.17, -161.92],
+        [59.5, -161.67],
+        [60.08, -162.17],
+        [59.67, -163],
+        [59.67, -163.83],
+        [60.08, -164.33],
+        [60.58, -164.92],
+        [61.08, -165.25],
+        [61.5, -166],
+        [62.17, -165.5],
+        [62.67, -164.83],
+        [63, -164.67],
+        [63.25, -163.92],
+        [63, -163],
+        [63.42, -162.25],
+        [63.5, -161],
+        [64, -160.75],
+        [64.42, -161.25],
+        [64.42, -161.25],
+        [64.83, -161],
+        [64.67, -161.92],
+        [64.42, -162.67],
+        [64.58, -163.67],
+        [64.5, -164.92],
+        [64.67, -166.33],
+        [65, -166.67],
+        [65.33, -166.33],
+        [65.42, -167.25],
+        [65.4602, -167.394],
+        [65.5003, -167.539],
+        [65.5402, -167.684],
+        [65.58, -167.83],
+        [65.6856, -167.583],
+        [65.7908, -167.334],
+        [65.8956, -167.083],
+        [66, -166.83],
+        [66.25, -165.75],
+        [66.5, -164.67],
+        [66.5, -163.83],
+        [66.08, -163.75],
+        [66.08, -162.17],
+        [66.42, -161.75],
+        [66.83, -162.5],
+        [67.17, -163.5],
+        [67.67, -164],
+        [67.98, -165.25],
+        [68.33, -166.17],
+        [68.83, -166],
+        [68.92, -164.83],
+        [69.08, -163.5],
+        [69.45, -163],
+        [69.92, -162.67],
+        [70.33, -161.58],
+        [70.42, -160.42],
+        [70.83, -159],
+        [70.83, -159],
+        [70.87, -157.58],
+        [71.33, -156.33],
+        [71.13, -154.83],
+        [70.87, -154.33],
+        [70.87, -152.5],
+        [70.48, -151.5],
+        [70.48, -150.33],
+        [70.47, -149],
+        [70.22, -147.5],
+        [70.22, -146.17],
+        [70, -145.08],
+        [70.08, -144],
+        [70.08, -142.83],
+        [69.83, -141.83],
+        [69.62, -141],
+        [69.58, -139.5],
+        [69.32, -138.33],
+        [69, -137.33],
+        [68.75, -136],
+        [69.17, -135.92],
+        [69.5, -135.17],
+        [69.58, -134.17],
+        [69.38, -133.33],
+        [69.67, -132.58],
+        [69.98, -131.17],
+        [70.25, -129.83],
+        [69.83, -129.42],
+        [70, -128.5],
+        [70.58, -128],
+        [70.08, -126.67],
+        [70.08, -126.67],
+        [69.58, -126.17],
+        [69.42, -125.33],
+        [70, -124.42],
+        [69.42, -124.33],
+        [69.37, -123.5],
+        [69.83, -123],
+        [69.83, -121.33],
+        [69.47, -120.25],
+        [69.22, -118.83],
+        [69, -117.5],
+        [68.97, -116],
+        [68.72, -114.67],
+        [68.3, -114.08],
+        [68.17, -115.08],
+        [67.83, -115.33],
+        [67.83, -114.17],
+        [67.67, -113],
+        [67.83, -111.58],
+        [68, -110.25],
+        [67.75, -109.25],
+        [67.58, -108.17],
+        [68, -107.83],
+        [68.25, -109],
+        [68.58, -108.25],
+        [68.75, -106.92],
+        [68.9, -105.67],
+        [68.35, -104.58],
+        [68.03, -103],
+        [67.75, -101.75],
+        [67.58, -100],
+        [67.58, -100],
+        [67.67, -98.75],
+        [68.25, -98.67],
+        [68.58, -98],
+        [69, -99.58],
+        [69.33, -98.58],
+        [69.83, -97.92],
+        [69.33, -96.42],
+        [68.75, -95.58],
+        [68.38, -96.92],
+        [67.82, -96.83],
+        [67.5, -95.83],
+        [67.98, -95.5],
+        [68, -95.17],
+        [68.5, -94.25],
+        [69, -94.67],
+        [69.42, -94],
+        [69.83, -95.67],
+        [70.42, -96.75],
+        [70.97, -96.25],
+        [71.5, -95.83],
+        [71.75, -95],
+        [72.25, -95],
+        [72.67, -95],
+        [73.17, -95.25],
+        [73.58, -95.58],
+        [74, -95.17],
+        [74.17, -93.17],
+        [74.02, -91.17],
+        [73.83, -90.17],
+        [73.58, -90.67],
+        [73.58, -90.67],
+        [73.17, -91.33],
+        [72.75, -91.92],
+        [72.75, -93.08],
+        [72.58, -94],
+        [72.25, -93.5],
+        [71.92, -94.17],
+        [71.42, -93.5],
+        [71, -92.67],
+        [70.67, -91.92],
+        [70.17, -91.33],
+        [69.75, -92.42],
+        [69.5, -91.33],
+        [69.08, -90.67],
+        [68.58, -89.92],
+        [69.25, -88.92],
+        [68.75, -88],
+        [68.33, -88],
+        [67.83, -88.17],
+        [67.25, -87.25],
+        [67.42, -86.5],
+        [67.83, -86.5],
+        [68.17, -85.42],
+        [68.75, -85.42],
+        [69.33, -85.5],
+        [69.83, -85.5],
+        [69.83, -84.25],
+        [69.67, -82.92],
+        [69.33, -82.75],
+        [69.2, -81.33],
+        [68.58, -81.33],
+        [68.58, -81.33],
+        [68.33, -82.42],
+        [67.83, -82.42],
+        [67.58, -81.17],
+        [67, -81.42],
+        [66.58, -82.67],
+        [66.17, -83.75],
+        [66.33, -85.08],
+        [66.58, -85.5],
+        [66.5, -86.75],
+        [66.17, -86],
+        [65.5, -87],
+        [65, -87],
+        [64.5, -87.75],
+        [64, -88.5],
+        [64, -90],
+        [63.42, -90.67],
+        [62.92, -90.58],
+        [62.75, -91.58],
+        [62.58, -92.5],
+        [62.08, -92.5],
+        [61.92, -93.17],
+        [61.5, -93.67],
+        [61, -94.17],
+        [60.58, -94.42],
+        [60.17, -94.67],
+        [59.58, -94.75],
+        [59.08, -94.75],
+        [58.67, -94.42],
+        [58.75, -93.75],
+        [58.67, -93.08],
+        [58.67, -93.08],
+        [58.08, -92.67],
+        [57.67, -92.67],
+        [57.25, -92.33],
+        [56.92, -92.33],
+        [57.08, -91.75],
+        [57.25, -91],
+        [56.92, -90],
+        [56.75, -89],
+        [56.42, -88.08],
+        [56.3153, -87.9338],
+        [56.2103, -87.7884],
+        [56.1053, -87.6438],
+        [56, -87.5],
+        [55.9578, -87.3319],
+        [55.9155, -87.1643],
+        [55.8728, -86.9969],
+        [55.83, -86.83],
+        [55.67, -86],
+        [55.25, -85],
+        [55.25, -84],
+        [55.25, -83],
+        [55, -82.17],
+        [54.25, -82.42],
+        [53.83, -82.17],
+        [53.42, -82.17],
+        [52.92, -82.33],
+        [52.5, -81.67],
+        [52.08, -81.25],
+        [51.75, -80.75],
+        [51.33, -80.42],
+        [51, -79.75],
+        [51.33, -79.83],
+        [51.67, -79],
+        [52.17, -78.42],
+        [52.67, -78.83],
+        [53.17, -78.83],
+        [53.17, -78.83],
+        [53.75, -78.92],
+        [54.17, -79.17],
+        [54.58, -79.5],
+        [54.83, -78.75],
+        [55.17, -78],
+        [55.58, -77.25],
+        [56, -76.75],
+        [56.67, -76.75],
+        [57.25, -77],
+        [57.67, -77.17],
+        [58.25, -77.5],
+        [58.42, -78.08],
+        [58.75, -78.67],
+        [59.08, -78.58],
+        [59.17, -77.92],
+        [59.58, -77.42],
+        [60, -77.42],
+        [60.5, -77.58],
+        [60.75, -78.08],
+        [61.17, -77.75],
+        [61.2725, -77.6881],
+        [61.3751, -77.6258],
+        [61.4775, -77.5631],
+        [61.58, -77.5],
+        [61.6427, -77.6441],
+        [61.7053, -77.7888],
+        [61.7677, -77.9341],
+        [61.83, -78.08],
+        [62.25, -78.08],
+        [62.5, -77.42],
+        [62.42, -76.42],
+        [62.25, -75.5],
+        [62.25, -74.83],
+        [62.42, -73.67],
+        [62.17, -72.92],
+        [61.83, -72.25],
+        [61.83, -72.25],
+        [61.58, -71.5],
+        [61.25, -71.75],
+        [61, -71],
+        [61, -70.25],
+        [60.92, -69.5],
+        [60.5, -69.67],
+        [60.08, -69.42],
+        [59.58, -69.5],
+        [59.25, -69.5],
+        [58.83, -69],
+        [58.75, -68.42],
+        [58.17, -67.75],
+        [58.42, -66.75],
+        [58.75, -66.42],
+        [59, -65.67],
+        [59.42, -65.25],
+        [59.75, -65.58],
+        [60, -65.17],
+        [60.33, -64.67],
+        [60, -64.33],
+        [59.5, -63.83],
+        [59, -63.25],
+        [58.5, -62.83],
+        [58, -62.33],
+        [57.67, -61.83],
+        [57.33, -61.83],
+        [57.08, -61.33],
+        [56.75, -61.75],
+        [56.25, -61.75],
+        [55.92, -61.33],
+        [55.92, -61.33],
+        [55.67, -60.5],
+        [55.25, -60.33],
+        [55.17, -59.25],
+        [54.83, -58.92],
+        [54.75, -58],
+        [54.6877, -57.8744],
+        [54.6253, -57.7492],
+        [54.5627, -57.6244],
+        [54.5, -57.5],
+        [54.418, -57.7088],
+        [54.3357, -57.9167],
+        [54.253, -58.1237],
+        [54.17, -58.33],
+        [54.1483, -58.0796],
+        [54.126, -57.8295],
+        [54.1033, -57.5796],
+        [54.08, -57.33],
+        [53.67, -57.25],
+        [53.67, -56.5],
+        [53.17, -55.83],
+        [52.75, -56],
+        [52.08, -55.67],
+        [51.83, -56.17],
+        [51.5, -56.83],
+        [51.42, -57.83],
+        [51.17, -58.67],
+        [50.83, -59.08],
+        [50.5, -59.5],
+        [50.17, -60],
+        [50.17, -60.92],
+        [50.08, -61.67],
+        [50.25, -62.17],
+        [50.25, -62.83],
+        [50.25, -63.42],
+        [50.33, -64],
+        [50.25, -64.75],
+        [50.25, -65.42],
+        [50.25, -66],
+        [50.08, -66.75],
+        [50.08, -66.75],
+        [49.75, -67.17],
+        [49.33, -67.33],
+        [49.33, -68],
+        [48.92, -68.67],
+        [48.58, -69.25],
+        [48.17, -69.67],
+        [47.83, -70],
+        [47.5, -70.42],
+        [47.17, -70.75],
+        [46.83, -71.17],
+        [47, -70.5],
+        [47.33, -70.08],
+        [47.67, -69.67],
+        [48.08, -69.25],
+        [48.42, -68.67],
+        [48.67, -68],
+        [48.83, -67.42],
+        [49.08, -66.75],
+        [49.17, -66],
+        [49.25, -65.25],
+        [49.08, -64.58],
+        [48.83, -64.25],
+        [48.5, -64.25],
+        [48.25, -64.83],
+        [48.08, -65.33],
+        [48.08, -66.33],
+        [47.58, -65.67],
+        [47.75, -64.83],
+        [47.33, -65],
+        [46.75, -64.92],
+        [46.75, -64.92],
+        [46.25, -64.58],
+        [46.08, -64],
+        [45.75, -63.25],
+        [45.67, -62.58],
+        [45.83, -62],
+        [45.75, -61.5],
+        [46.17, -61.5],
+        [46.58, -61],
+        [47, -60.67],
+        [46.83, -60.42],
+        [46.33, -60.5],
+        [46.2479, -60.3317],
+        [46.1655, -60.164],
+        [46.0829, -59.9967],
+        [46, -59.83],
+        [45.9178, -59.9782],
+        [45.8354, -60.1259],
+        [45.7528, -60.2732],
+        [45.67, -60.42],
+        [45.5, -61],
+        [45.17, -61.17],
+        [45, -62],
+        [44.75, -63],
+        [44.5, -63.67],
+        [44.5, -64.17],
+        [44.17, -64.5],
+        [43.83, -65],
+        [43.5, -65.5],
+        [43.75, -66],
+        [44.17, -66.17],
+        [44.58, -65.92],
+        [44.92, -65.33],
+        [45.08, -64.92],
+        [45.42, -64.25],
+        [45.33, -64.92],
+        [45.67, -64.83],
+        [45.67, -64.83],
+        [45.33, -65.58],
+        [45.17, -66.25],
+        [45.17, -67],
+        [44.83, -67],
+        [44.58, -67.5],
+        [44.42, -68],
+        [44.25, -68.58],
+        [44.42, -68.83],
+        [44, -69.17],
+        [43.83, -69.75],
+        [43.67, -70.25],
+        [43.5, -70.25],
+        [43.17, -70.58],
+        [42.83, -70.83],
+        [42.58, -70.75],
+        [42.33, -71],
+        [42.17, -70.67],
+        [41.75, -70.5],
+        [41.79, -70],
+        [42.02, -70.04],
+        [41.67, -69.93],
+        [41.5, -70.67],
+        [41.67, -70.67],
+        [41.5, -71.08],
+        [41.75, -71.33],
+        [41.42, -71.5],
+        [41.25, -72],
+        [41.25, -72.5],
+        [41.25, -73],
+        [41.08, -73.5],
+        [41.08, -73.5],
+        [40.83, -74],
+        [40.5, -74.33],
+        [40.33, -74],
+        [39.83, -74.17],
+        [39.33, -74.5],
+        [39, -75],
+        [39.33, -75.25],
+        [39.5, -75.58],
+        [39, -75.42],
+        [38.8551, -75.3144],
+        [38.7102, -75.2091],
+        [38.5651, -75.1044],
+        [38.42, -75],
+        [38.3575, -75.0627],
+        [38.2951, -75.1252],
+        [38.2325, -75.1877],
+        [38.17, -75.25],
+        [37.75, -75.58],
+        [37.25, -75.75],
+        [37.17, -76],
+        [37.67, -75.83],
+        [38, -75.67],
+        [38, -76],
+        [38.25, -75.92],
+        [38.42, -76.33],
+        [38.83, -76.17],
+        [39.17, -76.17],
+        [39.5, -76],
+        [39.33, -76.42],
+        [39, -76.58],
+        [38.5, -76.5],
+        [38.17, -76.42],
+        [38.25, -76.92],
+        [37.92, -76.33],
+        [37.5, -76.42],
+        [37.17, -76.42],
+        [37.17, -76.42],
+        [36.83, -76],
+        [36.5, -75.83],
+        [36.11, -75.66],
+        [35.85, -75.53],
+        [36.21, -75.91],
+        [36.17, -76],
+        [36.08, -76.33],
+        [35.92, -76.75],
+        [35.92, -76.25],
+        [35.92, -75.83],
+        [35.58, -75.83],
+        [35.33, -76],
+        [35.33, -76.33],
+        [35, -76.83],
+        [35, -76.33],
+        [34.75, -76.58],
+        [34.67, -77.17],
+        [34.33, -77.58],
+        [34, -78],
+        [33.92, -78.42],
+        [33.67, -78.92],
+        [33.33, -79.17],
+        [33, -79.5],
+        [32.67, -80],
+        [32.42, -80.5],
+        [32, -81],
+        [31.5, -81.25],
+        [31, -81.5],
+        [30.5, -81.42],
+        [30, -81.33],
+        [30, -81.33],
+        [29.5, -81.08],
+        [29, -80.92],
+        [28.5, -80.58],
+        [28.17, -80.58],
+        [27.58, -80.33],
+        [27, -80.08],
+        [26.42, -80.08],
+        [25.83, -80.17],
+        [25.33, -80.42],
+        [25.17, -80.67],
+        [25.08, -81.08],
+        [25.5, -81.25],
+        [25.83, -81.67],
+        [26.33, -81.92],
+        [26.75, -82.17],
+        [27.08, -82.5],
+        [27.165, -82.52],
+        [27.25, -82.5399],
+        [27.335, -82.56],
+        [27.42, -82.58],
+        [27.545, -82.5401],
+        [27.67, -82.5002],
+        [27.795, -82.4601],
+        [27.92, -82.42],
+        [27.8976, -82.5026],
+        [27.8751, -82.5851],
+        [27.8526, -82.6676],
+        [27.83, -82.75],
+        [28.17, -82.75],
+        [28.58, -82.67],
+        [29.08, -82.83],
+        [29.17, -83.08],
+        [29.75, -83.5],
+        [30.08, -83.92],
+        [30, -84.42],
+        [29.75, -84.83],
+        [29.67, -85.33],
+        [30.08, -85.5],
+        [30.25, -86],
+        [30.25, -86],
+        [30.5, -86.33],
+        [30.42, -86.83],
+        [30.33, -87.33],
+        [30.33, -87.83],
+        [30.67, -88],
+        [30.42, -88.25],
+        [30.5, -88.75],
+        [30.5, -89.17],
+        [30.25, -89.67],
+        [30.5, -90.17],
+        [30.08, -90.42],
+        [30, -90.08],
+        [30.08, -89.67],
+        [30.08, -89.25],
+        [29.83, -89.33],
+        [29.67, -89.58],
+        [29.5, -89.58],
+        [29.17, -89.08],
+        [29, -89.25],
+        [29.25, -89.5],
+        [29.33, -89.83],
+        [29.17, -90.17],
+        [29.08, -90.75],
+        [29.17, -91.25],
+        [29.5, -91.33],
+        [29.83, -91.83],
+        [29.58, -92.25],
+        [29.67, -92.75],
+        [29.83, -93.25],
+        [29.75, -93.83],
+        [29.75, -93.83],
+        [29.67, -94.25],
+        [29.42, -94.75],
+        [29.83, -94.75],
+        [29.7901, -94.8326],
+        [29.7501, -94.9151],
+        [29.7101, -94.9976],
+        [29.67, -95.08],
+        [29.565, -95.0173],
+        [29.4601, -94.9547],
+        [29.355, -94.8923],
+        [29.25, -94.83],
+        [29.1876, -94.9152],
+        [29.1251, -95.0002],
+        [29.0626, -95.0852],
+        [29, -95.17],
+        [28.75, -95.5],
+        [28.67, -96],
+        [28.33, -96.5],
+        [28, -97],
+        [27.67, -97.33],
+        [27.17, -97.42],
+        [26.67, -97.25],
+        [26.17, -97.25],
+        [25.75, -97.17],
+        [25.33, -97.42],
+        [24.83, -97.58],
+        [24.33, -97.75],
+        [23.83, -97.75],
+        [23.33, -97.75],
+        [22.83, -97.75],
+        [22.42, -97.92],
+        [21.92, -97.75],
+        [21.58, -97.25],
+        [21.25, -97.42],
+        [20.83, -97.25],
+        [20.5, -97],
+        [20.17, -96.67],
+        [19.67, -96.42],
+        [19.25, -96.17],
+        [19.25, -96.17],
+        [18.83, -95.83],
+        [18.67, -95.33],
+        [18.5, -94.83],
+        [18.17, -94.5],
+        [18.17, -94.17],
+        [18.33, -93.58],
+        [18.42, -93],
+        [18.67, -92.42],
+        [18.58, -91.83],
+        [18.42, -91.83],
+        [18.58, -91.25],
+        [18.83, -91.33],
+        [19.08, -91],
+        [19.25, -90.67],
+        [19.67, -90.67],
+        [20, -90.5],
+        [20.42, -90.42],
+        [21, -90.33],
+        [21.17, -90],
+        [21.25, -89.5],
+        [21.33, -89],
+        [21.5, -88.5],
+        [21.58, -88],
+        [21.5, -87.58],
+        [21.5, -87.08],
+        [21.33, -86.83],
+        [20.92, -86.83],
+        [20.5, -87.25],
+        [20, -87.42],
+        [19.875, -87.44],
+        [19.75, -87.4601],
+        [19.625, -87.48],
+        [19.5, -87.5],
+        [19.5, -87.5],
+        [19.5, -87.5],
+        [19.5, -87.5],
+        [19.5, -87.5],
+        [19.375, -87.52],
+        [19.25, -87.5401],
+        [19.125, -87.56],
+        [19, -87.58],
+        [18.42, -87.67],
+        [17.92, -87.92],
+        [18.33, -88.17],
+        [17.5, -88.25],
+        [17, -88.25],
+        [16.33, -88.5],
+        [16, -89],
+        [15.83, -88.58],
+        [15.58, -88.17],
+        [15.83, -87.58],
+        [15.67, -87],
+        [15.75, -86.5],
+        [15.92, -86],
+        [15.83, -85.5],
+        [15.92, -85],
+        [15.83, -84.67],
+        [15.75, -84.25],
+        [15.33, -83.83],
+        [15.17, -83.42],
+        [15, -83.25],
+        [14.25, -83.25],
+        [13.83, -83.5],
+        [13.25, -83.5],
+        [12.75, -83.5],
+        [12.17, -83.67],
+        [11.67, -83.67],
+        [11.25, -83.83],
+        [10.83, -83.67],
+        [10.42, -83.42],
+        [10.42, -83.42],
+        [10, -83.17],
+        [9.67, -82.75],
+        [9.42, -82.33],
+        [9, -82.17],
+        [9, -81.75],
+        [8.75, -81.42],
+        [8.92, -80.83],
+        [9.08, -80.33],
+        [9.25, -79.83],
+        [9.58, -79.58],
+        [9.58, -79.08],
+        [9.42, -78.67],
+        [9.33, -78.25],
+        [9, -77.83],
+        [8.67, -77.5],
+        [8.33, -77.17],
+        [7.83, -76.75],
+        [8.58, -76.75],
+        [9, -76.25],
+        [9.42, -76],
+        [9.5, -75.58],
+        [10, -75.58],
+        [10.5, -75.5],
+        [10.83, -75.25],
+        [11, -74.83],
+        [10.92, -74.42],
+        [11.25, -74.17],
+        [11.17, -73.5],
+        [11.42, -73],
+        [11.67, -72.67],
+        [11.67, -72.67],
+        [11.83, -72.25],
+        [12.17, -72],
+        [12.42, -71.67],
+        [12.33, -71.33],
+        [12.08, -71.17],
+        [11.67, -71.42],
+        [11.5, -71.92],
+        [11, -71.67],
+        [10.58, -71.5],
+        [10.25, -71.75],
+        [9.75, -72],
+        [9.42, -71.75],
+        [9, -71.67],
+        [9.17, -71.08],
+        [9.75, -71.08],
+        [10.33, -71.42],
+        [10.92, -71.42],
+        [11.08, -71],
+        [11.25, -70.58],
+        [11.5, -70.17],
+        [11.92, -70.33],
+        [12.17, -69.92],
+        [11.5, -69.75],
+        [11.5, -69.33],
+        [11.42, -68.83],
+        [11.17, -68.42],
+        [10.75, -68.33],
+        [10.42, -68.17],
+        [10.5, -67.58],
+        [10.5, -67],
+        [10.5, -67],
+        [10.58, -66.58],
+        [10.58, -66.17],
+        [10.33, -66],
+        [10.17, -65.58],
+        [10.08, -65],
+        [10.25, -64.5],
+        [10.67, -64],
+        [10.67, -63.42],
+        [10.67, -62.75],
+        [10.6701, -62.605],
+        [10.6701, -62.46],
+        [10.6701, -62.315],
+        [10.67, -62.17],
+        [10.6277, -62.3776],
+        [10.5853, -62.5851],
+        [10.5427, -62.7926],
+        [10.5, -63],
+        [10.17, -62.67],
+        [9.75, -62.33],
+        [9.83, -62],
+        [9.67, -61.58],
+        [9.5, -61],
+        [9, -60.83],
+        [8.42, -61],
+        [8.58, -60.25],
+        [8.25, -59.67],
+        [7.92, -59.17],
+        [7.58, -58.67],
+        [7.17, -58.5],
+        [6.75, -58.58],
+        [6.83, -58.17],
+        [6.5, -57.67],
+        [6.25, -57.33],
+        [5.92, -57.08],
+        [5.83, -56.5],
+        [5.83, -56],
+        [5.83, -56],
+        [5.92, -55.5],
+        [5.92, -55],
+        [5.83, -54.5],
+        [5.67, -54],
+        [5.58, -53.67],
+        [5.42, -53.25],
+        [5.17, -52.75],
+        [4.83, -52.33],
+        [4.5, -51.83],
+        [4.25, -51.5],
+        [3.75, -51],
+        [3.17, -51],
+        [2.5, -50.67],
+        [1.83, -50.5],
+        [1.75, -49.92],
+        [1, -50],
+        [0.5, -50.42],
+        [0.17, -50.75],
+        [-0.17, -51.17],
+        [-0.67, -51.33],
+        [-1.25, -51.42],
+        [-1, -50.83],
+        [-1.67, -50.58],
+        [-1, -50.42],
+        [-0.42, -50.42],
+        [-0.17, -50],
+        [-0.25, -49.5],
+        [-0.17, -49],
+        [-0.33, -48.42],
+        [-1, -48.58],
+        [-1, -48.58],
+        [-1.42, -48.75],
+        [-1.58, -48.5],
+        [-0.83, -48.17],
+        [-0.67, -47.83],
+        [-0.67, -47.25],
+        [-1, -46.67],
+        [-1.17, -46.17],
+        [-1.33, -45.5],
+        [-1.67, -45.33],
+        [-1.5, -44.83],
+        [-1.92, -44.67],
+        [-2.33, -44.42],
+        [-2.83, -44.58],
+        [-2.67, -44],
+        [-2.42, -43.5],
+        [-2.5, -43],
+        [-2.75, -42.5],
+        [-2.75, -42],
+        [-3, -41.5],
+        [-3, -41],
+        [-2.83, -40.5],
+        [-2.83, -40],
+        [-3.17, -39.5],
+        [-3.5, -39],
+        [-3.83, -38.5],
+        [-4.17, -38.17],
+        [-4.5, -37.83],
+        [-4.75, -37.33],
+        [-5.08, -37],
+        [-5.17, -36.5],
+        [-5.17, -36.5],
+        [-5.08, -36],
+        [-5.25, -35.42],
+        [-5.83, -35.17],
+        [-6.42, -35],
+        [-7, -34.83],
+        [-7.5, -34.75],
+        [-8.17, -34.83],
+        [-8.67, -35.08],
+        [-9.17, -35.33],
+        [-9.58, -35.58],
+        [-10, -36],
+        [-10.42, -36.25],
+        [-10.75, -36.75],
+        [-11, -37],
+        [-11.5, -37.33],
+        [-12, -37.58],
+        [-12.58, -38],
+        [-13, -38.42],
+        [-13.33, -38.92],
+        [-14, -39],
+        [-14.5, -39.08],
+        [-15, -39],
+        [-15.5, -39],
+        [-16, -38.92],
+        [-16.58, -39.08],
+        [-17.17, -39.17],
+        [-17.67, -39.17],
+        [-18, -39.5],
+        [-18.5, -39.58],
+        [-19, -39.58],
+        [-19, -39.58],
+        [-19.5, -39.67],
+        [-20, -40.17],
+        [-20.5, -40.33],
+        [-21, -40.83],
+        [-21.5, -41],
+        [-22, -41],
+        [-22.25, -41.5],
+        [-22.5, -42],
+        [-22.92, -42],
+        [-22.92, -42.5],
+        [-23, -43],
+        [-23, -43.5],
+        [-22.92, -44],
+        [-23, -44.67],
+        [-23.33, -44.5],
+        [-23.33, -45],
+        [-23.83, -45.42],
+        [-23.67, -45.75],
+        [-24, -46.33],
+        [-24.17, -46.83],
+        [-24.58, -47.25],
+        [-25, -47.75],
+        [-25.42, -48.17],
+        [-25.83, -48.58],
+        [-26.33, -48.58],
+        [-27, -48.58],
+        [-27.5, -48.5],
+        [-28, -48.58],
+        [-28.5, -48.75],
+        [-28.67, -49],
+        [-28.67, -49],
+        [-29, -49.42],
+        [-29.5, -49.83],
+        [-30, -50.17],
+        [-30.5, -50.33],
+        [-31, -50.67],
+        [-31.5, -51],
+        [-31.83, -51.5],
+        [-32.17, -52],
+        [-32.5, -52.42],
+        [-33, -52.58],
+        [-33.5, -53],
+        [-33.83, -53.5],
+        [-34.17, -53.58],
+        [-34.5, -54],
+        [-34.75, -54.5],
+        [-34.83, -55],
+        [-34.75, -55.67],
+        [-34.83, -56.25],
+        [-34.67, -56.83],
+        [-34.42, -57.17],
+        [-34.42, -57.83],
+        [-34, -58.33],
+        [-34.33, -58.5],
+        [-34.67, -58.33],
+        [-35, -57.5],
+        [-35.33, -57.17],
+        [-35.83, -57.42],
+        [-36.25, -57.17],
+        [-36.33, -56.75],
+        [-36.83, -56.67],
+        [-36.83, -56.67],
+        [-37.33, -57],
+        [-37.75, -57.42],
+        [-38.17, -57.58],
+        [-38.42, -58.17],
+        [-38.58, -58.67],
+        [-38.75, -59.33],
+        [-38.83, -60],
+        [-38.92, -60.5],
+        [-39, -61.25],
+        [-39, -62],
+        [-38.75, -62.25],
+        [-39.17, -62.33],
+        [-39.5, -62],
+        [-39.83, -62.17],
+        [-40.33, -62.42],
+        [-40.58, -62.25],
+        [-40.92, -62.33],
+        [-41.17, -63],
+        [-41.17, -63.83],
+        [-41, -64.33],
+        [-40.75, -64.83],
+        [-40.8126, -64.9148],
+        [-40.8751, -64.9997],
+        [-40.9376, -65.0848],
+        [-41, -65.17],
+        [-41.125, -65.1277],
+        [-41.25, -65.0853],
+        [-41.375, -65.0427],
+        [-41.5, -65],
+        [-42.08, -65],
+        [-42.33, -64.5],
+        [-42.08, -63.75],
+        [-42.58, -63.58],
+        [-42.83, -63.67],
+        [-42.83, -64.17],
+        [-42.5, -64.5],
+        [-42.5, -64.5],
+        [-42.83, -65],
+        [-43, -64.33],
+        [-43.33, -65],
+        [-43.67, -65.25],
+        [-44, -65.17],
+        [-44.5, -65.17],
+        [-44.67, -65.58],
+        [-45, -65.58],
+        [-45, -66.17],
+        [-45.25, -66.83],
+        [-45.5, -67.17],
+        [-46, -67.5],
+        [-46.5, -67.42],
+        [-46.83, -67],
+        [-47.17, -66.5],
+        [-47.17, -65.75],
+        [-47.5, -65.67],
+        [-48, -65.83],
+        [-48.33, -66.33],
+        [-48.67, -67],
+        [-49, -67.5],
+        [-49.5, -67.67],
+        [-50, -67.83],
+        [-50.17, -68.5],
+        [-50.5, -69],
+        [-51, -69.17],
+        [-51.42, -69],
+        [-51.83, -68.83],
+        [-52.33, -68.33],
+        [-52.25, -69],
+        [-52.25, -69],
+        [-52.25, -69.5],
+        [-52.5, -69.58],
+        [-52.5, -70],
+        [-52.75, -70.75],
+        [-53.25, -70.92],
+        [-53.75, -70.92],
+        [-53.83, -71.25],
+        [-53.67, -72],
+        [-53.42, -72.25],
+        [-53.17, -71.33],
+        [-52.83, -71.08],
+        [-52.75, -71.5],
+        [-53.17, -72],
+        [-53.42, -72.5],
+        [-53.17, -73.17],
+        [-52.92, -73.5],
+        [-52.67, -73.5],
+        [-52.58, -74],
+        [-52.17, -74.17],
+        [-52.42, -74.5],
+        [-52.25, -75],
+        [-51.75, -75],
+        [-51.83, -74.33],
+        [-51.5, -74.17],
+        [-51, -74.33],
+        [-51.33, -74.5],
+        [-51.393, -74.7066],
+        [-51.4557, -74.9139],
+        [-51.5181, -75.1216],
+        [-51.58, -75.33],
+        [-51.4776, -75.2469],
+        [-51.3751, -75.1643],
+        [-51.2726, -75.0819],
+        [-51.17, -75],
+        [-50.67, -74.83],
+        [-50.75, -74.5],
+        [-50.75, -74.5],
+        [-50.42, -74.67],
+        [-50, -74.5],
+        [-50.75, -75.33],
+        [-50.17, -75.33],
+        [-50.1076, -75.2472],
+        [-50.0451, -75.1646],
+        [-49.9826, -75.0822],
+        [-49.92, -75],
+        [-49.8977, -75.1252],
+        [-49.8753, -75.2502],
+        [-49.8527, -75.3752],
+        [-49.83, -75.5],
+        [-49.42, -75.42],
+        [-49.17, -75.58],
+        [-48.58, -75.42],
+        [-48.17, -75.42],
+        [-47.83, -75.33],
+        [-47.75, -74.92],
+        [-48.33, -74.5],
+        [-47.83, -74.5],
+        [-47.42, -74.42],
+        [-46.83, -74],
+        [-46.83, -74.5],
+        [-46.67, -75],
+        [-46.92, -75.5],
+        [-46.58, -75.5],
+        [-46.17, -74.75],
+        [-45.92, -75],
+        [-45.83, -74.5],
+        [-45.58, -74.67],
+        [-45.25, -74.5],
+        [-45, -74.33],
+        [-44.58, -74.5],
+        [-44.17, -74.25],
+        [-43.83, -73.83],
+        [-44.17, -73.5],
+        [-44.17, -73.5],
+        [-44.42, -73.67],
+        [-44.67, -73.58],
+        [-45, -73.83],
+        [-45.17, -73.67],
+        [-45.5, -73.58],
+        [-45, -73.33],
+        [-44.67, -73.42],
+        [-44.42, -73],
+        [-44.17, -73.17],
+        [-43.75, -72.83],
+        [-43.42, -73],
+        [-43, -72.75],
+        [-42.33, -72.75],
+        [-42.2901, -72.6874],
+        [-42.2501, -72.6248],
+        [-42.2101, -72.5624],
+        [-42.17, -72.5],
+        [-42.1276, -72.5626],
+        [-42.0851, -72.6252],
+        [-42.0426, -72.6876],
+        [-42, -72.75],
+        [-41.9176, -72.6873],
+        [-41.8351, -72.6247],
+        [-41.7526, -72.5623],
+        [-41.67, -72.5],
+        [-41.6277, -72.6252],
+        [-41.5853, -72.7503],
+        [-41.5427, -72.8752],
+        [-41.5, -73],
+        [-41.83, -73.17],
+        [-41.75, -73.58],
+        [-41.42, -73.75],
+        [-41, -73.83],
+        [-40.58, -73.67],
+        [-40, -73.67],
+        [-39.5, -73.25],
+        [-39, -73.33],
+        [-38.58, -73.42],
+        [-38.17, -73.42],
+        [-37.75, -73.67],
+        [-37.17, -73.5],
+        [-37.17, -73.08],
+        [-37.17, -73.08],
+        [-36.67, -73.08],
+        [-36.5, -72.83],
+        [-36, -72.67],
+        [-35.5, -72.5],
+        [-35, -72.17],
+        [-34.5, -71.92],
+        [-34, -71.83],
+        [-33.67, -71.58],
+        [-33.17, -71.67],
+        [-32.5, -71.33],
+        [-32.17, -71.5],
+        [-31.83, -71.5],
+        [-31.33, -71.58],
+        [-30.75, -71.67],
+        [-30.25, -71.58],
+        [-30, -71.25],
+        [-29.33, -71.33],
+        [-29, -71.5],
+        [-28.5, -71.25],
+        [-28, -71.17],
+        [-27.5, -70.92],
+        [-27, -70.92],
+        [-26.33, -70.58],
+        [-25.75, -70.75],
+        [-25.42, -70.5],
+        [-25, -70.5],
+        [-24.5, -70.58],
+        [-24, -70.5],
+        [-23.5, -70.5],
+        [-23, -70.5],
+        [-23, -70.5],
+        [-22.5, -70.25],
+        [-22, -70.17],
+        [-21.5, -70.08],
+        [-21, -70.17],
+        [-20.5, -70.17],
+        [-20, -70.08],
+        [-19.33, -70.25],
+        [-18.75, -70.33],
+        [-18.25, -70.33],
+        [-17.83, -70.83],
+        [-17.67, -71.17],
+        [-17.25, -71.5],
+        [-17, -72],
+        [-16.67, -72.5],
+        [-16.58, -72.83],
+        [-16.25, -73.5],
+        [-15.83, -74],
+        [-15.75, -74.5],
+        [-15.33, -75.17],
+        [-15, -75.5],
+        [-14.67, -75.83],
+        [-14.17, -76.25],
+        [-13.67, -76.17],
+        [-13, -76.5],
+        [-12.5, -76.67],
+        [-12.17, -77],
+        [-11.83, -77.17],
+        [-11.33, -77.5],
+        [-10.83, -77.67],
+        [-10.17, -78.17],
+        [-10.17, -78.17],
+        [-9.67, -78.33],
+        [-9.17, -78.5],
+        [-8.67, -78.67],
+        [-8.17, -79],
+        [-7.83, -79.5],
+        [-7.25, -79.67],
+        [-6.83, -80],
+        [-6.5, -80.33],
+        [-6.25, -80.83],
+        [-6, -81.17],
+        [-5.67, -80.83],
+        [-5.17, -81.17],
+        [-4.67, -81.33],
+        [-4.25, -81.33],
+        [-3.83, -80.83],
+        [-3.5, -80.33],
+        [-3.33, -80],
+        [-2.83, -79.83],
+        [-2.5, -79.67],
+        [-2.5, -80.08],
+        [-3, -80.17],
+        [-2.5, -80.58],
+        [-2.33, -80.92],
+        [-2.17, -80.75],
+        [-1.67, -80.75],
+        [-1, -80.92],
+        [-0.83, -80.5],
+        [-0.33, -80.5],
+        [0, -80.08],
+        [np.nan, np.nan],
+        [66.08, -125.08],
+        [66.13, -123.58],
+        [66.25, -122],
+        [66, -121],
+        [65.75, -122],
+        [65.58, -122.75],
+        [65, -123.25],
+        [65, -121.75],
+        [65.33, -121.58],
+        [65.67, -120.67],
+        [65.33, -120.5],
+        [64.83, -121],
+        [65.37, -119.33],
+        [65.82, -120],
+        [65.67, -118.42],
+        [66.08, -118.08],
+        [66.42, -117.67],
+        [66.33, -119.08],
+        [66.3537, -119.434],
+        [66.3766, -119.789],
+        [66.3987, -120.144],
+        [66.42, -120.5],
+        [66.4828, -120.314],
+        [66.5454, -120.127],
+        [66.6078, -119.939],
+        [66.67, -119.75],
+        [66.92, -118.92],
+        [67.08, -120],
+        [66.75, -121.33],
+        [66.58, -122.67],
+        [66.37, -123.83],
+        [66.08, -125.08],
+        [np.nan, np.nan],
+        [61.17, -117],
+        [60.83, -116],
+        [60.83, -115.25],
+        [61, -114.42],
+        [60.92, -113.92],
+        [61.25, -113.75],
+        [61.42, -112.92],
+        [61.58, -112.17],
+        [62.08, -111.75],
+        [62.33, -110.92],
+        [62.3533, -110.648],
+        [62.3761, -110.376],
+        [62.3983, -110.103],
+        [62.42, -109.83],
+        [62.4826, -109.914],
+        [62.5451, -109.999],
+        [62.6076, -110.084],
+        [62.67, -110.17],
+        [62.6709, -109.878],
+        [62.6712, -109.585],
+        [62.6709, -109.292],
+        [62.67, -109],
+        [62.83, -110],
+        [62.83, -110.75],
+        [62.67, -111.58],
+        [62.42, -111.92],
+        [62.08, -112.42],
+        [62, -113.08],
+        [62.17, -113.83],
+        [62.42, -114.17],
+        [62.42, -115.33],
+        [62.17, -115.08],
+        [62.0852, -114.934],
+        [62.0003, -114.788],
+        [61.9152, -114.644],
+        [61.83, -114.5],
+        [61.8104, -114.688],
+        [61.7905, -114.875],
+        [61.7704, -115.063],
+        [61.75, -115.25],
+        [61.42, -115.33],
+        [61.17, -115.83],
+        [61.17, -117],
+        [np.nan, np.nan],
+        [58.67, -111.25],
+        [58.58, -110.33],
+        [58.92, -110],
+        [59.08, -109.25],
+        [59.08, -108.25],
+        [59.123, -108.043],
+        [59.1657, -107.836],
+        [59.208, -107.628],
+        [59.25, -107.42],
+        [59.2927, -107.564],
+        [59.3353, -107.709],
+        [59.3777, -107.854],
+        [59.42, -108],
+        [59.42, -108.58],
+        [59.67, -109.17],
+        [59.67, -109.67],
+        [59.25, -110.17],
+        [59, -110.67],
+        [58.67, -111.25],
+        [np.nan, np.nan],
+        [56.33, -103.08],
+        [56.58, -102.17],
+        [57, -102.17],
+        [57.42, -102.17],
+        [57.67, -101.58],
+        [58.17, -102.08],
+        [57.75, -102.5],
+        [57.6676, -102.583],
+        [57.5851, -102.666],
+        [57.5026, -102.748],
+        [57.42, -102.83],
+        [57.3151, -102.747],
+        [57.2101, -102.664],
+        [57.1051, -102.582],
+        [57, -102.5],
+        [56.9175, -102.563],
+        [56.8351, -102.626],
+        [56.7525, -102.688],
+        [56.67, -102.75],
+        [56.33, -103.08],
+        [np.nan, np.nan],
+        [53.33, -99.25],
+        [53, -98.92],
+        [52.5, -98.67],
+        [52.25, -98.17],
+        [51.92, -98.17],
+        [51.92, -97.42],
+        [51.42, -97.33],
+        [51.58, -96.83],
+        [51.17, -96.92],
+        [50.75, -97],
+        [50.33, -97],
+        [50.5, -96.42],
+        [51.17, -96.17],
+        [51.58, -96.58],
+        [52.17, -97],
+        [52.67, -97.25],
+        [53.17, -97.58],
+        [53.67, -97.83],
+        [53.75, -98.42],
+        [53.75, -99],
+        [53.33, -99.25],
+        [np.nan, np.nan],
+        [46.67, -92.08],
+        [46.67, -91.58],
+        [46.92, -90.92],
+        [46.5, -90.5],
+        [46.75, -89.75],
+        [47, -89],
+        [47.42, -88.25],
+        [47.42, -87.75],
+        [47.08, -88.42],
+        [46.75, -88.42],
+        [46.83, -87.75],
+        [46.42, -87.33],
+        [46.42, -86.67],
+        [46.67, -85.83],
+        [46.75, -85],
+        [46.5, -85],
+        [46.5002, -84.875],
+        [46.5003, -84.75],
+        [46.5002, -84.625],
+        [46.5, -84.5],
+        [46.6051, -84.5621],
+        [46.7101, -84.6245],
+        [46.8151, -84.6871],
+        [46.92, -84.75],
+        [47.33, -84.67],
+        [47.58, -85],
+        [47.92, -85],
+        [47.92, -85.75],
+        [48.25, -86.17],
+        [48.75, -86.5],
+        [48.75, -87.33],
+        [49, -88.08],
+        [48.67, -88.42],
+        [48.42, -89.08],
+        [48.08, -89.42],
+        [47.83, -89.83],
+        [47.83, -89.83],
+        [47.67, -90.5],
+        [47.33, -91],
+        [47, -91.58],
+        [46.67, -92.08],
+        [np.nan, np.nan],
+        [44.58, -88],
+        [44.6655, -87.8133],
+        [44.7506, -87.6261],
+        [44.8355, -87.4383],
+        [44.92, -87.25],
+        [44.8151, -87.3128],
+        [44.7101, -87.3755],
+        [44.6051, -87.4378],
+        [44.5, -87.5],
+        [44.4175, -87.5201],
+        [44.335, -87.5401],
+        [44.2525, -87.5601],
+        [44.17, -87.58],
+        [43.58, -87.75],
+        [43.17, -87.92],
+        [42.75, -87.83],
+        [42.17, -87.83],
+        [42.0451, -87.747],
+        [41.9201, -87.6644],
+        [41.7951, -87.582],
+        [41.67, -87.5],
+        [41.6701, -87.395],
+        [41.6702, -87.29],
+        [41.6701, -87.185],
+        [41.67, -87.08],
+        [41.83, -86.67],
+        [42.17, -86.42],
+        [42.75, -86.25],
+        [43.25, -86.33],
+        [43.67, -86.5],
+        [44.08, -86.5],
+        [44.5, -86.25],
+        [44.92, -86.08],
+        [45.17, -85.33],
+        [45.67, -85],
+        [45.6702, -84.875],
+        [45.6703, -84.75],
+        [45.6702, -84.625],
+        [45.67, -84.5],
+        [45.6276, -84.3948],
+        [45.5852, -84.2897],
+        [45.5426, -84.1848],
+        [45.5, -84.08],
+        [45.33, -83.58],
+        [45, -83.33],
+        [44.42, -83.33],
+        [43.92, -83.83],
+        [43.58, -83.83],
+        [43.92, -83.42],
+        [44.08, -82.92],
+        [43.58, -82.67],
+        [43.58, -82.67],
+        [43.08, -82.42],
+        [43.33, -81.75],
+        [43.92, -81.75],
+        [44.42, -81.5],
+        [44.83, -81.33],
+        [45.17, -81.5],
+        [44.75, -80.92],
+        [44.5, -80.08],
+        [44.5826, -79.9979],
+        [44.6651, -79.9155],
+        [44.7476, -79.8329],
+        [44.83, -79.75],
+        [44.9777, -79.874],
+        [45.1253, -79.9987],
+        [45.2727, -80.124],
+        [45.42, -80.25],
+        [45.92, -80.75],
+        [46.08, -81.67],
+        [46.17, -82.33],
+        [46.17, -83],
+        [46.25, -83.67],
+        [46.25, -84.17],
+        [45.92, -84],
+        [45.92, -84.83],
+        [46, -85.25],
+        [45.92, -85.75],
+        [45.75, -86.75],
+        [45.75, -87],
+        [45.42, -87.33],
+        [45, -87.67],
+        [44.58, -88],
+        [np.nan, np.nan],
+        [45.83, -83.08],
+        [45.83, -82.33],
+        [45.92, -81.75],
+        [45.5, -81.92],
+        [45.67, -82.42],
+        [45.83, -83.08],
+        [np.nan, np.nan],
+        [41.75, -83.5],
+        [41.5, -82.83],
+        [41.5, -82.25],
+        [41.58, -81.67],
+        [41.83, -81.08],
+        [42, -80.5],
+        [42.25, -79.83],
+        [42.5, -79.25],
+        [42.83, -78.83],
+        [42.83, -79.5],
+        [42.83, -80.17],
+        [42.58, -80.5],
+        [42.67, -80.92],
+        [42.58, -81.5],
+        [42.25, -81.83],
+        [42, -82.5],
+        [42, -83.08],
+        [41.75, -83.5],
+        [np.nan, np.nan],
+        [43.25, -79.75],
+        [43.17, -79.25],
+        [43.33, -78.58],
+        [43.33, -78],
+        [43.25, -77.42],
+        [43.33, -76.83],
+        [43.5, -76.17],
+        [44, -76.25],
+        [44.33, -76.08],
+        [44.17, -76.67],
+        [43.92, -77],
+        [44, -77.67],
+        [43.92, -78.17],
+        [43.83, -78.83],
+        [43.67, -79.42],
+        [43.25, -79.75],
+        [np.nan, np.nan],
+        [0.08, -91.42],
+        [-0.33, -91.08],
+        [-0.75, -90.83],
+        [-1.08, -91.17],
+        [-0.92, -91.5],
+        [-0.67, -91.17],
+        [-0.42, -91.5],
+        [0.08, -91.42],
+        [np.nan, np.nan],
+        [-41.83, -74],
+        [-42, -73.42],
+        [-42.33, -73.33],
+        [-42.67, -73.67],
+        [-43, -73.5],
+        [-43.42, -73.75],
+        [-43.33, -74.33],
+        [-42.67, -74.17],
+        [-42.33, -74.17],
+        [-41.83, -74],
+        [np.nan, np.nan],
+        [-52.58, -68.75],
+        [-53, -68.25],
+        [-53.33, -68.17],
+        [-53.67, -68],
+        [-54, -67.42],
+        [-54.25, -66.75],
+        [-54.5, -66.33],
+        [-54.67, -65.83],
+        [-54.67, -65.17],
+        [-54.92, -65.25],
+        [-55, -65.67],
+        [-55, -66.5],
+        [-55.25, -67.33],
+        [-55.25, -68.17],
+        [-55.67, -68],
+        [-55.42, -68.67],
+        [-55.5, -69.33],
+        [-55.33, -69.83],
+        [-55, -70],
+        [-55.17, -70.5],
+        [-55, -71.17],
+        [-54.67, -72],
+        [-54.67, -72],
+        [-54.42, -72],
+        [-54.42, -72.5],
+        [-54.08, -72.67],
+        [-54.08, -73.33],
+        [-53.83, -73.33],
+        [-53.58, -73.83],
+        [-53.33, -73.5],
+        [-53.25, -74],
+        [-53, -74.5],
+        [-52.75, -74.67],
+        [-53, -74],
+        [-53.25, -73.33],
+        [-53.58, -72.5],
+        [-53.83, -72.08],
+        [-54, -71.33],
+        [-54.17, -71],
+        [-53.67, -70.5],
+        [-54.17, -70.33],
+        [-54.1901, -70.2476],
+        [-54.2101, -70.1652],
+        [-54.2301, -70.0826],
+        [-54.25, -70],
+        [-54.125, -70.0202],
+        [-54, -70.0402],
+        [-53.875, -70.0602],
+        [-53.75, -70.08],
+        [-53.6879, -69.8917],
+        [-53.6256, -69.7039],
+        [-53.5629, -69.5167],
+        [-53.5, -69.33],
+        [-53.33, -69.42],
+        [-53.5, -70.17],
+        [-53.33, -70.42],
+        [-52.83, -70.25],
+        [-52.83, -69.75],
+        [-52.58, -69.5],
+        [-52.67, -69.17],
+        [-52.58, -68.75],
+        [np.nan, np.nan],
+        [-51.83, -61.17],
+        [-52, -60.5],
+        [-51.75, -60.17],
+        [-51.42, -60.5],
+        [-51.33, -59.67],
+        [-51.5, -59],
+        [-51.33, -58.33],
+        [-51.5, -57.75],
+        [-51.83, -57.75],
+        [-52, -58.5],
+        [-52.25, -58.83],
+        [-52.33, -59.5],
+        [-52.08, -59.67],
+        [-52, -60],
+        [-52.25, -60.5],
+        [-51.83, -61.17],
+        [np.nan, np.nan],
+        [-54, -38],
+        [-54.08, -37],
+        [-54.33, -36.25],
+        [-54.58, -35.83],
+        [-54.92, -36],
+        [-54.5, -36.58],
+        [-54.25, -37.25],
+        [-54, -38],
+        [np.nan, np.nan],
+        [10, -61.83],
+        [10.17, -61.5],
+        [10.58, -61.5],
+        [10.67, -61.67],
+        [10.75, -61],
+        [10.25, -61],
+        [10, -61.25],
+        [10, -61.83],
+        [np.nan, np.nan],
+        [18.17, -78.33],
+        [18.33, -78.25],
+        [18.5, -77.83],
+        [18.42, -77.33],
+        [18.33, -76.83],
+        [18.17, -76.42],
+        [17.83, -76.25],
+        [17.83, -76.58],
+        [17.92, -76.92],
+        [17.75, -77.25],
+        [17.83, -77.67],
+        [18.17, -78],
+        [18.17, -78.33],
+        [np.nan, np.nan],
+        [21.77, -83.07],
+        [21.98, -82.87],
+        [21.82, -82.65],
+        [21.7475, -82.6124],
+        [21.675, -82.5749],
+        [21.6025, -82.5374],
+        [21.53, -82.5],
+        [21.5051, -82.5825],
+        [21.4801, -82.6651],
+        [21.4551, -82.7475],
+        [21.43, -82.83],
+        [21.47, -83.05],
+        [21.6, -82.95],
+        [21.77, -83.07],
+        [np.nan, np.nan],
+        [21.83, -84.83],
+        [22, -84.33],
+        [22.33, -84.33],
+        [22.58, -84],
+        [22.83, -83.5],
+        [22.92, -83],
+        [23, -82.5],
+        [23.17, -82],
+        [23.17, -81.5],
+        [23, -81],
+        [23, -80.5],
+        [22.83, -80.08],
+        [22.67, -79.67],
+        [22.33, -79.33],
+        [22.33, -78.83],
+        [22.17, -78.33],
+        [21.92, -77.83],
+        [21.67, -77.42],
+        [21.5, -77],
+        [21.17, -76.5],
+        [21.08, -76],
+        [21, -75.58],
+        [20.58, -75.67],
+        [20.67, -75.33],
+        [20.58, -74.83],
+        [20.25, -74.5],
+        [20.25, -74.25],
+        [20.08, -74.17],
+        [20.08, -74.17],
+        [20, -74.67],
+        [19.83, -75],
+        [19.83, -75.5],
+        [19.92, -76],
+        [19.92, -76.5],
+        [19.83, -77],
+        [19.8302, -77.1675],
+        [19.8303, -77.335],
+        [19.8302, -77.5025],
+        [19.83, -77.67],
+        [19.8925, -77.6076],
+        [19.955, -77.5451],
+        [20.0175, -77.4826],
+        [20.08, -77.42],
+        [20.33, -77.08],
+        [20.67, -77.25],
+        [20.67, -78],
+        [21, -78.5],
+        [21.42, -78.58],
+        [21.58, -78.75],
+        [21.5, -79.25],
+        [21.67, -79.75],
+        [21.75, -80.17],
+        [22, -80.5],
+        [22, -81.25],
+        [22.08, -81.75],
+        [22.33, -82.08],
+        [22.5, -81.58],
+        [22.58, -82.25],
+        [22.67, -82.75],
+        [22.42, -83.08],
+        [22.17, -83.42],
+        [22.17, -84],
+        [22.085, -84.0426],
+        [22, -84.0851],
+        [21.915, -84.1276],
+        [21.83, -84.17],
+        [21.8302, -84.335],
+        [21.8303, -84.5],
+        [21.8302, -84.665],
+        [21.83, -84.83],
+        [np.nan, np.nan],
+        [18.33, -74.5],
+        [18.58, -74.17],
+        [18.5, -73.67],
+        [18.33, -73.25],
+        [18.33, -72.75],
+        [18.3926, -72.6451],
+        [18.4551, -72.5402],
+        [18.5176, -72.4351],
+        [18.58, -72.33],
+        [18.6851, -72.4348],
+        [18.7901, -72.5397],
+        [18.8951, -72.6448],
+        [19, -72.75],
+        [19.33, -72.75],
+        [19.67, -73],
+        [19.67, -73],
+        [19.67, -73.5],
+        [19.92, -73.17],
+        [19.92, -72.58],
+        [19.67, -72],
+        [19.83, -71.67],
+        [19.83, -71],
+        [19.75, -70.5],
+        [19.67, -69.92],
+        [19.33, -69.75],
+        [19.33, -69.17],
+        [19.08, -69.58],
+        [18.92, -68.75],
+        [18.5, -68.33],
+        [18.08, -68.67],
+        [18.42, -69],
+        [18.42, -69.5],
+        [18.25, -70.08],
+        [18.17, -70.58],
+        [18.42, -70.58],
+        [18.25, -71.08],
+        [18, -71.08],
+        [17.58, -71.42],
+        [18.08, -71.83],
+        [18.17, -72.33],
+        [18.08, -72.75],
+        [18.17, -73.17],
+        [18.17, -73.67],
+        [18, -73.83],
+        [18.33, -74.5],
+        [np.nan, np.nan],
+        [18, -67.17],
+        [18.5, -67.17],
+        [18.5, -66.58],
+        [18.5, -66],
+        [18.25, -65.67],
+        [18, -65.92],
+        [18, -66.33],
+        [17.92, -66.75],
+        [18, -67.17],
+        [np.nan, np.nan],
+        [16.3689, -61.7519],
+        [16.2811, -61.5521],
+        [16.4582, -61.544],
+        [16.503, -61.4947],
+        [16.4717, -61.4276],
+        [16.3672, -61.3918],
+        [16.2654, -61.1898],
+        [16.1775, -61.464],
+        [16.2368, -61.5943],
+        [16.0384, -61.5661],
+        [15.9543, -61.6919],
+        [16.0689, -61.7602],
+        [16.3295, -61.7905],
+        [16.3689, -61.7519],
+        [np.nan, np.nan],
+        [14.5484, -60.9511],
+        [14.8553, -61.1413],
+        [14.9656, -61.1213],
+        [14.9616, -60.9787],
+        [14.7803, -60.831],
+        [14.5404, -60.7499],
+        [14.5484, -60.9511],
+        [np.nan, np.nan],
+        [25.17, -78.25],
+        [25.17, -78],
+        [24.67, -77.75],
+        [24.33, -77.75],
+        [24.2475, -77.6874],
+        [24.1651, -77.6248],
+        [24.0825, -77.5624],
+        [24, -77.5],
+        [23.9175, -77.5426],
+        [23.835, -77.5851],
+        [23.7525, -77.6276],
+        [23.67, -77.67],
+        [24.17, -77.92],
+        [24.58, -78.42],
+        [24.83, -78.17],
+        [25.17, -78.25],
+        [np.nan, np.nan],
+        [20.92, -73.67],
+        [21.17, -73.5],
+        [21.08, -73.17],
+        [21.33, -73],
+        [20.92, -73.17],
+        [20.92, -73.67],
+        [np.nan, np.nan],
+        [26.5651, -78.788],
+        [26.5915, -78.68],
+        [26.8, -78.5758],
+        [26.7468, -78.5222],
+        [26.7475, -77.9],
+        [26.6034, -77.8693],
+        [26.6252, -78.2379],
+        [26.4759, -78.7257],
+        [26.5651, -78.788],
+        [np.nan, np.nan],
+        [26.8874, -77.8707],
+        [26.9324, -77.7723],
+        [26.9097, -77.5532],
+        [26.5531, -77.0444],
+        [26.2888, -76.9678],
+        [26.261, -77.1279],
+        [25.8781, -77.1838],
+        [25.849, -77.2401],
+        [25.9954, -77.3859],
+        [26.119, -77.2254],
+        [26.1834, -77.2626],
+        [26.2706, -77.2209],
+        [26.4374, -77.2372],
+        [26.5537, -77.1453],
+        [26.616, -77.3199],
+        [26.8522, -77.5773],
+        [26.8874, -77.8707],
+        [np.nan, np.nan],
+        [25.5642, -76.7079],
+        [25.5637, -76.6476],
+        [25.4894, -76.614],
+        [25.2976, -76.2798],
+        [25.1483, -76.1185],
+        [25.0495, -76.0973],
+        [24.752, -76.1645],
+        [24.6404, -76.1317],
+        [24.7462, -76.2098],
+        [24.7971, -76.29],
+        [24.8399, -76.1943],
+        [24.9191, -76.2047],
+        [25.0181, -76.1355],
+        [25.1324, -76.1838],
+        [25.2566, -76.2966],
+        [25.4239, -76.7493],
+        [25.5642, -76.7079],
+        [np.nan, np.nan],
+        [24.6848, -75.7234],
+        [24.6314, -75.6203],
+        [24.1452, -75.2979],
+        [24.1705, -75.3665],
+        [24.1268, -75.5053],
+        [24.2187, -75.4386],
+        [24.49, -75.5914],
+        [24.5163, -75.688],
+        [24.6848, -75.7234],
+        [np.nan, np.nan],
+        [23.6925, -75.2971],
+        [23.3717, -75.0781],
+        [23.1621, -75.0256],
+        [23.1308, -74.9374],
+        [22.9059, -74.8088],
+        [22.857, -74.8472],
+        [23.0658, -74.9639],
+        [23.1438, -75.2077],
+        [23.3547, -75.1494],
+        [23.6194, -75.3314],
+        [23.6925, -75.2971],
+        [np.nan, np.nan],
+        [22.739, -73.858],
+        [22.561, -73.8082],
+        [22.3159, -73.9569],
+        [22.2508, -74.1654],
+        [22.316, -74.1499],
+        [22.3806, -74.0364],
+        [22.4704, -74.0163],
+        [22.56, -73.8947],
+        [22.7342, -74.2732],
+        [22.8546, -74.3477],
+        [22.6966, -74.027],
+        [22.739, -73.858],
+        [np.nan, np.nan],
+        [40.58, -74],
+        [40.83, -73.92],
+        [40.92, -73.33],
+        [41, -72.83],
+        [41.17, -72.33],
+        [41, -72],
+        [40.75, -72.67],
+        [40.67, -73.33],
+        [40.58, -74],
+        [np.nan, np.nan],
+        [49.83, -64.42],
+        [49.83, -63.75],
+        [49.75, -63.08],
+        [49.58, -62.5],
+        [49.42, -62],
+        [49.08, -61.67],
+        [49.08, -62.25],
+        [49.17, -62.92],
+        [49.33, -63.5],
+        [49.58, -63.75],
+        [49.83, -64.42],
+        [np.nan, np.nan],
+        [46.67, -64.25],
+        [46.92, -64],
+        [46.58, -63.92],
+        [46.42, -63.33],
+        [46.42, -62.75],
+        [46.5, -62],
+        [46.25, -62.5],
+        [45.92, -62.5],
+        [46.17, -63.33],
+        [46.42, -63.92],
+        [46.67, -64.25],
+        [np.nan, np.nan],
+        [62.17, -83.67],
+        [62.58, -83.33],
+        [62.75, -82.58],
+        [62.75, -81.92],
+        [62.67, -81.92],
+        [62.25, -82.83],
+        [62.17, -83.67],
+        [np.nan, np.nan],
+        [62.33, -80.08],
+        [62.33, -79.25],
+        [61.92, -79.33],
+        [61.5, -79.75],
+        [61.75, -80.17],
+        [62.33, -80.08],
+        [np.nan, np.nan],
+        [56.25, -80],
+        [56.58, -79.17],
+        [56.33, -78.92],
+        [55.75, -79.17],
+        [56.17, -79.17],
+        [55.92, -79.5],
+        [55.9203, -79.645],
+        [55.9203, -79.79],
+        [55.9203, -79.935],
+        [55.92, -80.08],
+        [56.0228, -79.9163],
+        [56.1254, -79.7518],
+        [56.2278, -79.5863],
+        [56.33, -79.42],
+        [56.25, -80],
+        [np.nan, np.nan],
+        [53, -82],
+        [53.17, -81.42],
+        [53.08, -81],
+        [52.67, -80.75],
+        [52.83, -81.42],
+        [53, -82],
+        [np.nan, np.nan],
+        [47.92, -59.33],
+        [48.17, -58.92],
+        [48.5, -58.42],
+        [48.58, -58.75],
+        [49, -58.42],
+        [49.5, -57.92],
+        [50.08, -57.67],
+        [50.58, -57.25],
+        [51, -57],
+        [51.33, -56.67],
+        [51.58, -56],
+        [51.58, -55.5],
+        [51.08, -55.75],
+        [50.58, -56.17],
+        [50.25, -56.5],
+        [49.75, -56.83],
+        [50.08, -56.08],
+        [49.92, -55.5],
+        [49.67, -55.92],
+        [49.33, -55.33],
+        [49.42, -54.67],
+        [49.42, -54],
+        [49.42, -54],
+        [49.25, -53.5],
+        [48.83, -54],
+        [48.5, -53.75],
+        [48.58, -53],
+        [48.08, -53.75],
+        [47.75, -53.92],
+        [47.58, -53.67],
+        [48, -53.33],
+        [48.08, -53],
+        [47.58, -53.25],
+        [47.67, -52.75],
+        [47.17, -52.92],
+        [46.67, -53.08],
+        [46.67, -53.67],
+        [47.08, -53.67],
+        [46.83, -54.17],
+        [47.33, -53.92],
+        [47.42, -54.42],
+        [47.33, -54.83],
+        [46.83, -55.33],
+        [46.92, -55.92],
+        [47.17, -55.42],
+        [47.5, -55.42],
+        [47.58, -56.08],
+        [47.58, -56.83],
+        [47.58, -57.58],
+        [47.67, -58.42],
+        [47.5, -59.17],
+        [47.92, -59.33],
+        [np.nan, np.nan],
+        [63.67, -87.17],
+        [64.08, -86.17],
+        [64.67, -86.42],
+        [65.25, -86.25],
+        [65.67, -86],
+        [66.08, -85],
+        [65.58, -84.67],
+        [65.17, -83.67],
+        [64.83, -82.5],
+        [64.5, -81.75],
+        [64.08, -81.25],
+        [63.83, -80.25],
+        [63.42, -81.17],
+        [63.75, -82],
+        [64, -82.83],
+        [64, -83.58],
+        [63.67, -84.17],
+        [63.25, -84.83],
+        [63.17, -85.75],
+        [63.67, -85.83],
+        [63.67, -87.17],
+        [np.nan, np.nan],
+        [67.67, -77.25],
+        [68.25, -76.5],
+        [68.25, -75.33],
+        [67.92, -74.83],
+        [67.5, -75],
+        [67.25, -75.67],
+        [67.17, -76.83],
+        [67.67, -77.25],
+        [np.nan, np.nan],
+        [71.75, -90],
+        [72.33, -90],
+        [72.75, -89.58],
+        [73.17, -89.08],
+        [73.58, -88],
+        [73.83, -87],
+        [73.83, -85.42],
+        [73.8234, -85.0645],
+        [73.8162, -84.7094],
+        [73.8084, -84.3545],
+        [73.8, -84],
+        [73.7335, -84.3795],
+        [73.6663, -84.756],
+        [73.5985, -85.1295],
+        [73.53, -85.5],
+        [73.25, -86.08],
+        [72.83, -86.5],
+        [72.42, -86.42],
+        [72, -86.33],
+        [71.67, -85.33],
+        [72.08, -85.67],
+        [72.5, -85.58],
+        [73, -85.5],
+        [73.42, -84.33],
+        [73.75, -82.92],
+        [73.83, -81.67],
+        [73.58, -81.17],
+        [73.13, -81.5],
+        [72.67, -80.83],
+        [72.17, -81.17],
+        [72.17, -81.17],
+        [72.47, -80.17],
+        [72.47, -79],
+        [72.8, -77.83],
+        [72.7, -76.83],
+        [72.5, -75.75],
+        [72.58, -74.33],
+        [72.25, -74],
+        [71.75, -74],
+        [71.67, -72.42],
+        [71.42, -71.25],
+        [70.83, -69.75],
+        [70.5, -68.33],
+        [70.3754, -68.1187],
+        [70.2505, -67.91],
+        [70.1254, -67.7037],
+        [70, -67.5],
+        [69.8951, -67.6066],
+        [69.7901, -67.7121],
+        [69.6851, -67.8166],
+        [69.58, -67.92],
+        [69.4782, -67.6233],
+        [69.376, -67.3294],
+        [69.2732, -67.0383],
+        [69.17, -66.75],
+        [69.1285, -67.0844],
+        [69.0863, -67.4176],
+        [69.0435, -67.7494],
+        [69, -68.08],
+        [68.5, -68.08],
+        [68.08, -66.75],
+        [68.08, -65.17],
+        [67.67, -64.25],
+        [67.33, -63.17],
+        [67, -62.17],
+        [66.67, -61.42],
+        [66.08, -62.08],
+        [65.67, -62.33],
+        [65.5, -63.5],
+        [65, -63.83],
+        [65.33, -65],
+        [65.92, -65.5],
+        [66.42, -67.17],
+        [66.42, -67.17],
+        [65.75, -67.42],
+        [65.25, -66.83],
+        [64.83, -65.75],
+        [64.5, -65.08],
+        [64, -65],
+        [63.58, -64.25],
+        [62.92, -64.5],
+        [62.92, -65.75],
+        [63.25, -66.83],
+        [63.58, -67.75],
+        [63.83, -68.92],
+        [63.42, -68.5],
+        [63.08, -67.75],
+        [62.67, -66.92],
+        [62.33, -66.17],
+        [61.92, -66.17],
+        [62, -67.17],
+        [62.17, -68.08],
+        [62.42, -69],
+        [62.67, -69.33],
+        [62.83, -70.33],
+        [63, -71.08],
+        [63.33, -71.92],
+        [63.75, -71.92],
+        [64, -72.75],
+        [64.17, -73.67],
+        [64.42, -74.67],
+        [64.5, -75.75],
+        [64.25, -76.5],
+        [64.25, -78],
+        [64.25, -78],
+        [64.67, -78.58],
+        [65.08, -78.25],
+        [65.17, -77.67],
+        [65.5, -77.5],
+        [65.33, -76],
+        [65.33, -74.67],
+        [65.67, -73.67],
+        [66.17, -74.58],
+        [66.5, -73.75],
+        [66.92, -73],
+        [67.0028, -72.8342],
+        [67.0854, -72.6673],
+        [67.1678, -72.4992],
+        [67.25, -72.33],
+        [67.3551, -72.4139],
+        [67.4601, -72.4985],
+        [67.5651, -72.5839],
+        [67.67, -72.67],
+        [68.17, -73],
+        [68.5, -74.25],
+        [69, -75],
+        [68.67, -76.17],
+        [69.33, -75.83],
+        [69.83, -77.5],
+        [70.25, -78.08],
+        [69.75, -79],
+        [69.58, -79.83],
+        [70, -81.33],
+        [69.92, -82.33],
+        [70.08, -84.33],
+        [70.08, -85.75],
+        [70.42, -87.33],
+        [70.83, -88.25],
+        [71.33, -89],
+        [71.75, -90],
+        [np.nan, np.nan],
+        [73.75, -80.5],
+        [73.83, -79.25],
+        [73.78, -77.83],
+        [73.58, -76.75],
+        [73.17, -76.42],
+        [72.87, -76.58],
+        [72.98, -78.17],
+        [72.83, -79.17],
+        [72.98, -80.5],
+        [73.42, -80.83],
+        [73.75, -80.5],
+        [np.nan, np.nan],
+        [75, -96.58],
+        [75.55, -95.67],
+        [75.55, -94.5],
+        [75.2, -93.75],
+        [74.67, -93.75],
+        [74.82, -95.33],
+        [75, -96.58],
+        [np.nan, np.nan],
+        [77.03, -96.17],
+        [76.92, -94.33],
+        [76.65, -93],
+        [76.65, -91.25],
+        [76.37, -90.75],
+        [76.3204, -90.4771],
+        [76.2706, -90.2061],
+        [76.2204, -89.9371],
+        [76.17, -89.67],
+        [76.1226, -89.7963],
+        [76.0751, -89.9217],
+        [76.0276, -90.0463],
+        [75.98, -90.17],
+        [75.9108, -89.8098],
+        [75.841, -89.4531],
+        [75.7708, -89.0999],
+        [75.7, -88.75],
+        [75.58, -86.75],
+        [75.82, -84.83],
+        [75.72, -83.08],
+        [75.72, -81.58],
+        [75.47, -79.83],
+        [75.08, -79.83],
+        [74.67, -80.42],
+        [74.5, -82.17],
+        [74.75, -83.67],
+        [74.42, -84.75],
+        [74.42, -86.5],
+        [74.47, -88.17],
+        [74.53, -90],
+        [74.75, -92],
+        [75.25, -92.17],
+        [75.67, -91.83],
+        [76.08, -92.17],
+        [76.33, -93.25],
+        [76.25, -95.08],
+        [76.67, -96.25],
+        [77.03, -96.17],
+        [np.nan, np.nan],
+        [80, -95],
+        [80.45, -95],
+        [80.8, -93.75],
+        [81.25, -93.58],
+        [81.25, -92],
+        [80.8, -91.33],
+        [80.5, -90.25],
+        [80.42, -88],
+        [80.3577, -87.7885],
+        [80.2952, -87.5797],
+        [80.2327, -87.3736],
+        [80.17, -87.17],
+        [80.0651, -87.2989],
+        [79.9601, -87.4252],
+        [79.8551, -87.5488],
+        [79.75, -87.67],
+        [79.7209, -87.2287],
+        [79.6912, -86.79],
+        [79.6609, -86.3537],
+        [79.63, -85.92],
+        [79.25, -85.92],
+        [79, -87.25],
+        [78.53, -88.08],
+        [78.17, -89.25],
+        [78.17, -92],
+        [78.53, -93.33],
+        [78.98, -93.67],
+        [79.33, -93.17],
+        [79.72, -93.83],
+        [80, -95],
+        [np.nan, np.nan],
+        [81.5, -90.5],
+        [81.92, -89],
+        [81.92, -86.67],
+        [81.92, -86.67],
+        [82.13, -86.67],
+        [82.33, -85],
+        [82.58, -82.58],
+        [82.92, -80.75],
+        [83.05, -76.83],
+        [82.98, -74.5],
+        [83.08, -72.5],
+        [83.08, -69.75],
+        [82.92, -67.17],
+        [82.8, -64.42],
+        [82.55, -62.92],
+        [82.42, -61.17],
+        [82.2, -61.17],
+        [81.95, -62.5],
+        [81.67, -64.25],
+        [81.42, -64.33],
+        [80.95, -66.75],
+        [80.58, -68.83],
+        [80.2, -70],
+        [79.72, -71.5],
+        [79.5, -74],
+        [79, -75],
+        [78.5, -75],
+        [78, -75.83],
+        [77.92, -78],
+        [77.58, -77.67],
+        [77.25, -79.25],
+        [76.83, -77.75],
+        [76.42, -79],
+        [76.17, -81],
+        [76.17, -81],
+        [76.5, -81.58],
+        [76.33, -82.67],
+        [76.42, -84],
+        [76.25, -85.17],
+        [76.33, -87.75],
+        [76.42, -89.5],
+        [76.83, -89.5],
+        [77.13, -88.17],
+        [77.1605, -87.8795],
+        [77.1906, -87.5877],
+        [77.2205, -87.2945],
+        [77.25, -87],
+        [77.2928, -87.2475],
+        [77.3355, -87.4967],
+        [77.3779, -87.7475],
+        [77.42, -88],
+        [77.83, -88],
+        [77.8545, -87.3984],
+        [77.8776, -86.7944],
+        [77.8995, -86.1883],
+        [77.92, -85.58],
+        [77.9838, -86.0723],
+        [78.0468, -86.5697],
+        [78.1088, -87.0723],
+        [78.1242, -87.1987],
+        [78.1395, -87.3255],
+        [78.1548, -87.4526],
+        [78.17, -87.58],
+        [78.2065, -87.4858],
+        [78.243, -87.3909],
+        [78.2794, -87.2955],
+        [78.3158, -87.1995],
+        [78.4611, -86.8096],
+        [78.6058, -86.4099],
+        [78.75, -86],
+        [78.7806, -85.6478],
+        [78.8108, -85.2938],
+        [78.8406, -84.9378],
+        [78.87, -84.58],
+        [78.9651, -84.7237],
+        [79.0601, -84.8699],
+        [79.1551, -85.0187],
+        [79.25, -85.17],
+        [79.7, -85.17],
+        [79.87, -86.67],
+        [80.42, -85.83],
+        [80.25, -83.67],
+        [80.47, -82.5],
+        [80.63, -79.58],
+        [80.92, -77.67],
+        [80.8, -80.67],
+        [80.8, -83.5],
+        [80.67, -85.5],
+        [80.67, -88.25],
+        [81, -90],
+        [81.5, -90.5],
+        [np.nan, np.nan],
+        [79.9, -99.5],
+        [80.17, -98.83],
+        [79.75, -97.67],
+        [79.9, -99.5],
+        [np.nan, np.nan],
+        [79.2, -106.33],
+        [79.38, -105.67],
+        [79.38, -104.25],
+        [79.2, -103],
+        [79.2, -101.42],
+        [78.88, -100],
+        [78.48, -100],
+        [78.13, -99.58],
+        [78.08, -98.58],
+        [78.48, -98.17],
+        [78.9, -98],
+        [78.55, -95.83],
+        [78.3, -95.42],
+        [78, -95.83],
+        [77.97, -97.17],
+        [77.92, -98.83],
+        [77.75, -100],
+        [78.17, -100.83],
+        [78.17, -102.17],
+        [78.3, -104.17],
+        [78.53, -105],
+        [78.83, -104.17],
+        [79, -105.92],
+        [79.2, -106.33],
+        [np.nan, np.nan],
+        [77.67, -97],
+        [77.83, -95],
+        [77.8, -92.5],
+        [77.57, -92.33],
+        [77.35, -93.17],
+        [77.47, -95.17],
+        [77.67, -97],
+        [np.nan, np.nan],
+        [77.67, -105.67],
+        [77.75, -104.75],
+        [77.43, -104.58],
+        [77.08, -104],
+        [77.18, -105.33],
+        [77.67, -105.67],
+        [np.nan, np.nan],
+        [76.58, -105],
+        [76.63, -104],
+        [76.37, -103],
+        [76, -102],
+        [76.42, -101.92],
+        [76.7, -101.25],
+        [76.67, -99.5],
+        [76.38, -98],
+        [76, -98],
+        [75.58, -97.83],
+        [75.07, -98.33],
+        [75.07, -100.58],
+        [75.63, -101.5],
+        [75.42, -103],
+        [75.83, -104],
+        [76.17, -104.25],
+        [76.58, -105],
+        [np.nan, np.nan],
+        [75.12, -104.75],
+        [75.47, -104.25],
+        [75.13, -103.58],
+        [75.12, -104.75],
+        [np.nan, np.nan],
+        [72.92, -102.92],
+        [73.07, -102],
+        [73.03, -100.5],
+        [73.5, -101.42],
+        [73.83, -101.25],
+        [74, -100.17],
+        [73.92, -98.83],
+        [74.13, -97.75],
+        [74.0052, -97.5787],
+        [73.8803, -97.4099],
+        [73.7552, -97.2437],
+        [73.63, -97.08],
+        [73.5155, -97.3351],
+        [73.4006, -97.5867],
+        [73.2854, -97.835],
+        [73.17, -98.08],
+        [73.1234, -97.7246],
+        [73.0762, -97.3712],
+        [73.0284, -97.0196],
+        [72.98, -96.67],
+        [72.42, -96.25],
+        [71.83, -96.42],
+        [71.67, -97.83],
+        [71.33, -99],
+        [71.83, -99.92],
+        [72.25, -100.92],
+        [72.25, -102],
+        [72.63, -102.33],
+        [72.92, -102.92],
+        [np.nan, np.nan],
+        [78.25, -113.75],
+        [78.5, -113],
+        [78.58, -110.75],
+        [78.38, -108.92],
+        [78.2, -109.58],
+        [78.17, -111],
+        [78.3, -112],
+        [78.25, -113.75],
+        [np.nan, np.nan],
+        [77.92, -115.5],
+        [78.08, -114.25],
+        [77.75, -114.08],
+        [77.7, -114.83],
+        [77.92, -115.5],
+        [np.nan, np.nan],
+        [77.75, -113.58],
+        [77.87, -112.25],
+        [78.02, -111.08],
+        [78.0229, -110.81],
+        [78.0255, -110.54],
+        [78.0279, -110.27],
+        [78.03, -110],
+        [77.9175, -110.044],
+        [77.805, -110.087],
+        [77.6925, -110.129],
+        [77.58, -110.17],
+        [77.33, -111.75],
+        [77.42, -113.25],
+        [77.75, -113.58],
+        [np.nan, np.nan],
+        [75.58, -119.5],
+        [75.9, -118.92],
+        [76.13, -117.75],
+        [75.75, -118.08],
+        [75.48, -118.5],
+        [75.58, -119.5],
+        [np.nan, np.nan],
+        [76.25, -124.17],
+        [76.5, -122.75],
+        [76.88, -121.67],
+        [77.15, -120.5],
+        [77.33, -119.33],
+        [77.3, -117.67],
+        [77.58, -116.75],
+        [77.33, -115.5],
+        [77.08, -116.58],
+        [76.72, -116.17],
+        [76.3, -117.5],
+        [76.5, -118.92],
+        [76.17, -119.5],
+        [75.83, -120.58],
+        [75.92, -121.92],
+        [75.87, -123.08],
+        [76.25, -124.17],
+        [np.nan, np.nan],
+        [75.25, -117.75],
+        [75.67, -117.17],
+        [75.67, -117.17],
+        [76.13, -116.42],
+        [76.47, -115.75],
+        [76.42, -114.33],
+        [76.17, -112.75],
+        [75.92, -112],
+        [75.57, -111.42],
+        [75.5541, -110.918],
+        [75.5371, -110.418],
+        [75.5191, -109.918],
+        [75.5, -109.42],
+        [75.5827, -109.582],
+        [75.6652, -109.746],
+        [75.7477, -109.912],
+        [75.83, -110.08],
+        [75.8975, -110.018],
+        [75.965, -109.956],
+        [76.0325, -109.893],
+        [76.1, -109.83],
+        [76.1378, -110.058],
+        [76.1754, -110.288],
+        [76.2128, -110.518],
+        [76.25, -110.75],
+        [76.3327, -110.566],
+        [76.4153, -110.379],
+        [76.4977, -110.191],
+        [76.58, -110],
+        [76.8, -109.17],
+        [76.33, -108.58],
+        [76.02, -107],
+        [75.87, -105.67],
+        [75.47, -106],
+        [75.03, -106.17],
+        [74.95, -107.42],
+        [75, -109.5],
+        [74.8, -110.67],
+        [74.53, -111.67],
+        [74.42, -112.75],
+        [74.5, -114],
+        [74.72, -114.5],
+        [74.92, -113.25],
+        [75.25, -114.25],
+        [74.97, -115.25],
+        [75.13, -116.33],
+        [75.25, -117.75],
+        [np.nan, np.nan],
+        [71.6, -119],
+        [72.03, -118.83],
+        [72.3, -118],
+        [72.58, -118],
+        [72.83, -117],
+        [73.02, -115.75],
+        [73.3, -114.83],
+        [73.3, -113.67],
+        [72.72, -113.25],
+        [73.08, -111.92],
+        [72.85, -110.83],
+        [73, -109.58],
+        [72.67, -108],
+        [73.17, -107.42],
+        [73.67, -106.58],
+        [73.7, -105],
+        [73.42, -104.17],
+        [73.05, -104.67],
+        [72.58, -105.5],
+        [72.17, -105.17],
+        [71.63, -104.58],
+        [71.63, -104.58],
+        [71.05, -104.75],
+        [70.67, -103.75],
+        [70.4, -102.33],
+        [70.22, -100.67],
+        [69.75, -100.83],
+        [69.67, -102],
+        [69.3, -101.5],
+        [69, -102.58],
+        [68.87, -103.83],
+        [69.15, -105.08],
+        [69.5, -106],
+        [69.17, -107.08],
+        [69, -108.42],
+        [68.75, -110],
+        [68.65, -111.67],
+        [68.58, -113.08],
+        [69.25, -113.75],
+        [69.25, -115.17],
+        [69.5, -116.42],
+        [70.12, -116.75],
+        [70.17, -115.5],
+        [70.17, -114],
+        [70.42, -112.67],
+        [70.7, -114],
+        [70.67, -115.42],
+        [70.75, -117.08],
+        [71.03, -118.08],
+        [71.37, -117.75],
+        [71.6, -119],
+        [np.nan, np.nan],
+        [72.08, -125.25],
+        [72.5, -124.67],
+        [72.98, -124],
+        [73.5, -123.75],
+        [74.08, -124.42],
+        [74.25, -122.67],
+        [74.5, -121.17],
+        [74.25, -119.42],
+        [74.25, -117.58],
+        [73.83, -116.58],
+        [73.5, -115.08],
+        [73.2, -116.5],
+        [72.92, -117.83],
+        [72.58, -119.25],
+        [71.92, -119.67],
+        [71.42, -120.58],
+        [71.33, -121.75],
+        [71.08, -123.08],
+        [71.67, -123.83],
+        [72.08, -125.25],
+        [np.nan, np.nan],
+        [55.3371, 165.686],
+        [55.372, 166.229],
+        [55.2209, 166.175],
+        [54.8975, 166.649],
+        [54.719, 166.614],
+        [54.748, 166.475],
+        [54.8704, 166.443],
+        [54.8618, 166.298],
+        [55.099, 165.993],
+        [55.1461, 166.023],
+        [55.3371, 165.686],
+        [np.nan, np.nan],
+        [52.92, 172.5],
+        [53, 172.83],
+        [52.83, 173.33],
+        [52.75, 172.92],
+        [52.92, 172.5],
+        [np.nan, np.nan],
+        [51.7133, -177.919],
+        [51.7604, -178.231],
+        [51.8868, -178.301],
+        [51.9132, -178.178],
+        [51.8661, -177.907],
+        [51.7469, -177.804],
+        [51.7133, -177.919],
+        [np.nan, np.nan],
+        [51.67, -176.92],
+        [51.92, -176.75],
+        [51.75, -176.33],
+        [51.67, -176.92],
+        [np.nan, np.nan],
+        [52.0723, -174.186],
+        [52.0907, -174.38],
+        [52.2028, -174.547],
+        [52.2718, -174.302],
+        [52.4185, -174.348],
+        [52.1743, -173.984],
+        [52.0723, -174.186],
+        [np.nan, np.nan],
+        [52.75, -169.17],
+        [53.5, -168.5],
+        [53.58, -168],
+        [53.33, -168],
+        [53.17, -168.33],
+        [52.75, -169.17],
+        [np.nan, np.nan],
+        [53.33, -167.67],
+        [53.67, -167.17],
+        [54, -167.17],
+        [54, -166.42],
+        [53.7, -166.42],
+        [53.5, -167],
+        [53.33, -167.67],
+        [np.nan, np.nan],
+        [63.67, -171.75],
+        [63.67, -170.5],
+        [63.42, -169.83],
+        [63.33, -168.83],
+        [63.08, -169.83],
+        [63.42, -170.75],
+        [63.33, -171.75],
+        [63.67, -171.75],
+        [np.nan, np.nan],
+        [60.17, -167.42],
+        [60.25, -166.75],
+        [60.33, -166.08],
+        [60.25, -165.5],
+        [60, -165.5],
+        [59.83, -166.17],
+        [59.92, -166.83],
+        [60.17, -167.42],
+        [np.nan, np.nan],
+        [57.25, -154.83],
+        [57.75, -153.92],
+        [58.08, -153.25],
+        [58.42, -152.5],
+        [58.17, -152.08],
+        [58.1081, -152.311],
+        [58.0458, -152.542],
+        [57.9831, -152.771],
+        [57.92, -153],
+        [57.8977, -152.875],
+        [57.8752, -152.75],
+        [57.8527, -152.625],
+        [57.83, -152.5],
+        [57.5, -152.25],
+        [57.33, -153.08],
+        [57, -153.42],
+        [56.75, -154.08],
+        [57.25, -154.83],
+        [np.nan, np.nan],
+        [54.17, -133.08],
+        [54.08, -132.33],
+        [54.08, -131.67],
+        [53.58, -132],
+        [53.08, -131.67],
+        [52.75, -131.83],
+        [52.5, -131.33],
+        [52, -131],
+        [52.42, -131.83],
+        [52.83, -132.25],
+        [53.33, -132.5],
+        [53.58, -133],
+        [54.17, -133.08],
+        [np.nan, np.nan],
+        [50.67, -128.33],
+        [50.83, -127.92],
+        [50.58, -127.17],
+        [50.42, -126.25],
+        [50.25, -125.5],
+        [49.75, -125],
+        [49.33, -124.42],
+        [48.92, -123.67],
+        [48.5, -123.17],
+        [48.33, -123.67],
+        [48.5, -124.25],
+        [48.75, -125],
+        [49, -125],
+        [49, -125.5],
+        [49.25, -125.92],
+        [49.42, -126.5],
+        [49.67, -126.42],
+        [49.92, -127.08],
+        [50.17, -127.75],
+        [50.67, -128.33],
+        [np.nan, np.nan],
+        [78.17, -73],
+        [78.58, -72.33],
+        [78.75, -70.33],
+        [79.02, -68.67],
+        [79.2, -65.67],
+        [79.75, -64.5],
+        [80.08, -65],
+        [80.08, -65],
+        [80.082, -65.6674],
+        [80.0826, -66.335],
+        [80.082, -67.0026],
+        [80.08, -67.67],
+        [80.1927, -67.4478],
+        [80.3053, -67.2206],
+        [80.4177, -66.988],
+        [80.53, -66.75],
+        [80.92, -65],
+        [81.18, -63.75],
+        [81.13, -61.83],
+        [81.42, -61.25],
+        [81.75, -62],
+        [82.08, -59.33],
+        [82.33, -54.5],
+        [82, -51.25],
+        [82.47, -50.5],
+        [82.42, -47.33],
+        [82.83, -46.5],
+        [83.2, -44],
+        [83.42, -39.5],
+        [83.65, -36],
+        [83.58, -31.5],
+        [83.55, -27.33],
+        [83.25, -24.83],
+        [82.98, -24],
+        [82.85, -21.67],
+        [82.7806, -21.2404],
+        [82.7108, -20.819],
+        [82.6406, -20.4056],
+        [82.57, -20],
+        [82.5085, -20.5559],
+        [82.4463, -21.1028],
+        [82.3835, -21.6408],
+        [82.32, -22.17],
+        [82.22, -25.58],
+        [82.2291, -26.2455],
+        [82.2371, -26.9124],
+        [82.2441, -27.5807],
+        [82.25, -28.25],
+        [82.2056, -28.6518],
+        [82.1607, -29.049],
+        [82.1155, -29.4417],
+        [82.07, -29.83],
+        [82.0745, -28.7054],
+        [82.076, -27.58],
+        [82.0745, -26.4546],
+        [82.07, -25.33],
+        [81.9725, -25.33],
+        [81.875, -25.33],
+        [81.7775, -25.33],
+        [81.68, -25.33],
+        [81.75, -23.67],
+        [82.03, -23.67],
+        [82.03, -23.67],
+        [82.08, -21.67],
+        [81.8, -21.33],
+        [81.63, -22],
+        [81.37, -23.67],
+        [80.92, -24.83],
+        [81.08, -22.5],
+        [81.32, -20.75],
+        [81.58, -19.5],
+        [81.48, -18.17],
+        [81.8, -16.42],
+        [81.68, -13.25],
+        [81.5906, -12.8424],
+        [81.5008, -12.4434],
+        [81.4106, -12.0527],
+        [81.32, -11.67],
+        [81.1793, -12.3669],
+        [81.0374, -13.0419],
+        [80.8943, -13.696],
+        [80.75, -14.33],
+        [80.42, -15.83],
+        [79.97, -17.17],
+        [79.53, -18.08],
+        [79.13, -18.5],
+        [78.83, -19.5],
+        [78.42, -19.17],
+        [77.92, -19.67],
+        [77.58, -18.83],
+        [77.08, -18.17],
+        [76.75, -18.42],
+        [76.92, -20.33],
+        [76.67, -21.42],
+        [76.3, -21.5],
+        [76.2, -20],
+        [75.7, -19.42],
+        [75.2, -19.42],
+        [74.67, -20.08],
+        [74.67, -20.08],
+        [74.67, -18.83],
+        [74.25, -19.25],
+        [74, -21.5],
+        [73.83, -20.33],
+        [73.47, -20.33],
+        [73.42, -21.58],
+        [73.25, -22.17],
+        [73.2003, -22.3793],
+        [73.1504, -22.5874],
+        [73.1003, -22.7943],
+        [73.05, -23],
+        [73.018, -22.7486],
+        [72.9856, -22.4981],
+        [72.953, -22.2486],
+        [72.92, -22],
+        [72.42, -21.75],
+        [72.08, -22],
+        [72.3, -23.33],
+        [72.5, -24.58],
+        [72.17, -23.67],
+        [71.83, -22.58],
+        [71.42, -21.75],
+        [71, -21.75],
+        [70.5, -21.83],
+        [70.42, -23.08],
+        [70.58, -24],
+        [71, -24.25],
+        [71.33, -24.5],
+        [71.17, -25.5],
+        [70.67, -25.25],
+        [70.42, -26.33],
+        [70.17, -26.33],
+        [70.42, -25.08],
+        [70.17, -23.75],
+        [70.1483, -23.4365],
+        [70.1261, -23.1236],
+        [70.1033, -22.8115],
+        [70.08, -22.5],
+        [69.9977, -22.6695],
+        [69.9153, -22.8376],
+        [69.8327, -23.0045],
+        [69.75, -23.17],
+        [69.75, -23.17],
+        [69.42, -24.25],
+        [69.08, -25.25],
+        [68.83, -26.25],
+        [68.58, -27.5],
+        [68.42, -28.75],
+        [68.17, -30],
+        [68.17, -31.33],
+        [67.92, -32.17],
+        [67.5, -33],
+        [67.08, -33.42],
+        [66.67, -33.92],
+        [66.33, -34.75],
+        [66, -35.67],
+        [65.67, -37],
+        [65.67, -38.5],
+        [65.5, -39.67],
+        [65.08, -40],
+        [65.17, -41],
+        [64.5, -40.42],
+        [64, -40.5],
+        [63.5, -40.75],
+        [63, -41.5],
+        [62.67, -42.42],
+        [62, -42],
+        [61.5, -42.5],
+        [61, -42.75],
+        [60.5, -42.83],
+        [60, -43.25],
+        [59.83, -43.92],
+        [60.17, -45.17],
+        [60.17, -45.17],
+        [60.58, -45.75],
+        [60.75, -46.67],
+        [60.83, -48],
+        [61.42, -49],
+        [61.92, -49.5],
+        [62.5, -50.08],
+        [62.83, -50.33],
+        [63.58, -51.25],
+        [64, -51.33],
+        [64.33, -52],
+        [64.92, -52],
+        [65.5, -52.42],
+        [66, -53.5],
+        [66.5, -53.5],
+        [67, -53.75],
+        [67.58, -53.67],
+        [68.17, -53.33],
+        [68.58, -52.58],
+        [68.58, -51],
+        [69.33, -50.75],
+        [69.92, -51.25],
+        [69.47, -52.17],
+        [69.3, -53.67],
+        [69.67, -54.83],
+        [70.25, -54.58],
+        [70.83, -54.25],
+        [70.8, -52.83],
+        [70.5, -51.25],
+        [71, -51.58],
+        [71.17, -52.75],
+        [71.17, -52.75],
+        [71.75, -53.33],
+        [71.42, -54],
+        [71.42, -55.25],
+        [71.68, -55.75],
+        [72.17, -55.33],
+        [72.58, -55.83],
+        [73.17, -55.5],
+        [73.58, -55.67],
+        [74, -56.5],
+        [74.5, -56.5],
+        [74.97, -57.5],
+        [75.32, -58.33],
+        [75.67, -58.33],
+        [75.82, -60],
+        [76.17, -61.67],
+        [76.17, -63.42],
+        [76.13, -65.33],
+        [75.92, -66.58],
+        [76.13, -68.5],
+        [76.38, -69.5],
+        [76.6, -68.75],
+        [76.8, -70.25],
+        [77.02, -71.17],
+        [77.25, -70],
+        [77.35, -68.42],
+        [77.58, -70],
+        [77.92, -70.33],
+        [77.87, -71.67],
+        [78.17, -73],
+        [np.nan, np.nan],
+        [65.5, -24.33],
+        [65.83, -23.75],
+        [66.17, -23.67],
+        [66.17, -23],
+        [66.42, -23],
+        [66.33, -22.25],
+        [66, -21.5],
+        [65.42, -21.42],
+        [65.42, -21.42],
+        [65.58, -20.33],
+        [66.08, -20.25],
+        [65.83, -19.67],
+        [66.08, -19.25],
+        [66.17, -18.25],
+        [66, -17.58],
+        [66.17, -16.83],
+        [66.5, -16.25],
+        [66.25, -15.67],
+        [66.33, -14.75],
+        [65.75, -14.67],
+        [65.5, -13.67],
+        [64.92, -13.67],
+        [64.42, -14.5],
+        [64.17, -15.83],
+        [63.83, -16.75],
+        [63.75, -17.67],
+        [63.42, -18.75],
+        [63.58, -20],
+        [63.83, -21],
+        [63.832, -21.4375],
+        [63.8326, -21.875],
+        [63.832, -22.3125],
+        [63.83, -22.75],
+        [63.9354, -22.5646],
+        [64.0405, -22.3778],
+        [64.1454, -22.1896],
+        [64.25, -22],
+        [64.3752, -22.143],
+        [64.5003, -22.2873],
+        [64.6252, -22.433],
+        [64.75, -22.58],
+        [64.75, -24],
+        [65.08, -22.83],
+        [65.1653, -22.6443],
+        [65.2505, -22.4574],
+        [65.3354, -22.2693],
+        [65.42, -22.08],
+        [65.4603, -22.2467],
+        [65.5004, -22.414],
+        [65.5403, -22.5817],
+        [65.58, -22.75],
+        [65.42, -23.58],
+        [65.5, -24.33],
+        [np.nan, np.nan],
+        [70.8948, -9.05404],
+        [71.0174, -8.50616],
+        [71.1505, -8.30805],
+        [71.1521, -7.9249],
+        [70.9907, -8.005],
+        [70.9223, -8.25562],
+        [70.9071, -8.60836],
+        [70.8065, -9.04743],
+        [70.8948, -9.05404],
+        [np.nan, np.nan],
+        [75.4, -18.83],
+        [75.05, -17.92],
+        [75, -18.83],
+        [75.4, -18.83],
+        [np.nan, np.nan],
+        [0, 9.33],
+        [0.5, 9.33],
+        [0.92, 9.58],
+        [1.08, 9.25],
+        [1.5, 9.5],
+        [1.92, 9.67],
+        [2.5, 9.75],
+        [3.08, 9.92],
+        [3.5, 9.58],
+        [3.92, 9.33],
+        [4, 8.92],
+        [4.5, 8.83],
+        [4.5, 8.42],
+        [4.42, 8],
+        [4.42, 7.5],
+        [4.33, 7],
+        [4.25, 6.5],
+        [4.25, 6],
+        [4.58, 5.42],
+        [5.25, 5.25],
+        [5.92, 5],
+        [6.33, 4.5],
+        [6.5, 4],
+        [6.5, 3.42],
+        [6.42, 2.83],
+        [6.42, 2.33],
+        [6.33, 1.83],
+        [6.33, 1.83],
+        [6.17, 1.25],
+        [5.83, 1],
+        [5.83, 0.33],
+        [5.5, -0.25],
+        [5.25, -0.67],
+        [5.17, -1.08],
+        [5, -1.58],
+        [4.75, -2],
+        [5, -2.58],
+        [5.08, -3.08],
+        [5.25, -3.83],
+        [5.25, -4.33],
+        [5.17, -4.75],
+        [5.08, -5.33],
+        [5, -5.92],
+        [4.67, -6.33],
+        [4.58, -6.92],
+        [4.25, -7.42],
+        [4.33, -7.83],
+        [4.5, -8.33],
+        [4.92, -8.92],
+        [5.25, -9.42],
+        [5.58, -9.83],
+        [6.08, -10.33],
+        [6.42, -11],
+        [6.83, -11.42],
+        [7.08, -11.92],
+        [7.33, -12.42],
+        [7.83, -12.92],
+        [8.25, -13.08],
+        [8.25, -13.08],
+        [8.67, -13.17],
+        [9.17, -13.25],
+        [9.58, -13.58],
+        [10, -14],
+        [10.25, -14.42],
+        [10.67, -14.67],
+        [11.08, -15],
+        [11.25, -15.42],
+        [11.92, -15.5],
+        [11.83, -15.92],
+        [12.08, -16.33],
+        [12.33, -16.75],
+        [12.92, -16.75],
+        [13.42, -16.67],
+        [14, -16.75],
+        [14.5, -17],
+        [14.75, -17.42],
+        [15, -17],
+        [15.42, -16.75],
+        [15.83, -16.42],
+        [16.5, -16.42],
+        [17, -16.25],
+        [17.5, -16.08],
+        [18, -16],
+        [18.5, -16],
+        [19, -16.17],
+        [19.5, -16.5],
+        [19.83, -16.17],
+        [20.33, -16.17],
+        [20.75, -16.58],
+        [20.75, -16.58],
+        [21.08, -17],
+        [21.58, -16.92],
+        [22.08, -16.83],
+        [22.33, -16.5],
+        [22.75, -16.25],
+        [23.42, -16],
+        [23.83, -15.75],
+        [24.25, -15.42],
+        [24.67, -15],
+        [25.25, -14.75],
+        [25.67, -14.58],
+        [26.17, -14.42],
+        [26.42, -14.17],
+        [26.67, -13.67],
+        [27, -13.42],
+        [27.5, -13.25],
+        [27.92, -12.92],
+        [28, -12.17],
+        [28.25, -11.5],
+        [28.67, -11.17],
+        [28.92, -10.58],
+        [29.33, -10.17],
+        [29.75, -9.83],
+        [30.33, -9.58],
+        [30.67, -9.83],
+        [31.5, -9.83],
+        [31.75, -9.5],
+        [32.17, -9.25],
+        [32.5, -9.25],
+        [32.83, -8.83],
+        [32.83, -8.83],
+        [33.25, -8.5],
+        [33.5, -8],
+        [33.67, -7.42],
+        [34, -6.83],
+        [34.42, -6.58],
+        [34.83, -6.33],
+        [35.25, -6.17],
+        [35.75, -5.92],
+        [35.83, -5.42],
+        [35.5, -5.17],
+        [35.17, -4.5],
+        [35.25, -4.08],
+        [35.25, -3.42],
+        [35.33, -3],
+        [35.08, -2.42],
+        [35.17, -1.92],
+        [35.42, -1.25],
+        [35.75, -1],
+        [35.83, -0.5],
+        [35.92, 0],
+        [36.25, 0.5],
+        [36.5, 1],
+        [36.58, 1.75],
+        [36.67, 2.42],
+        [36.83, 2.92],
+        [36.83, 3.42],
+        [36.92, 3.83],
+        [36.92, 4.42],
+        [36.83, 5],
+        [36.67, 5.33],
+        [36.67, 5.33],
+        [36.75, 5.83],
+        [37, 6.25],
+        [36.83, 7],
+        [37, 7.42],
+        [36.83, 8.17],
+        [36.92, 8.67],
+        [37.17, 9.08],
+        [37.25, 9.58],
+        [37.17, 10.08],
+        [36.67, 10.33],
+        [36.92, 11],
+        [36.5, 10.75],
+        [36.33, 10.42],
+        [35.75, 10.58],
+        [35.58, 10.92],
+        [35.17, 11],
+        [34.75, 10.75],
+        [34.42, 10.33],
+        [34.17, 10],
+        [33.75, 10.08],
+        [33.58, 10.5],
+        [33.67, 10.92],
+        [33.25, 11.08],
+        [33, 11.67],
+        [32.83, 12.17],
+        [32.83, 12.83],
+        [32.75, 13.58],
+        [32.67, 14.17],
+        [32.42, 14.75],
+        [32.25, 15.33],
+        [32.25, 15.33],
+        [31.75, 15.33],
+        [31.5, 15.58],
+        [31.25, 16.08],
+        [31.17, 16.67],
+        [31, 17.5],
+        [30.67, 18.17],
+        [30.33, 18.67],
+        [30.25, 19.17],
+        [30.42, 19.58],
+        [30.67, 19.92],
+        [31.08, 20.08],
+        [31.5, 20],
+        [31.5825, 19.9576],
+        [31.665, 19.9152],
+        [31.7475, 19.8726],
+        [31.83, 19.83],
+        [31.915, 19.8923],
+        [32.0001, 19.9548],
+        [32.085, 20.0173],
+        [32.17, 20.08],
+        [32.58, 20.67],
+        [32.75, 21.25],
+        [32.83, 21.83],
+        [32.75, 22.5],
+        [32.58, 23.08],
+        [32.17, 23.17],
+        [32.08, 23.75],
+        [31.92, 24.33],
+        [31.92, 24.92],
+        [31.5, 25.17],
+        [31.58, 25.75],
+        [31.5, 26.33],
+        [31.42, 26.92],
+        [31.25, 27.33],
+        [31.08, 27.83],
+        [31.08, 28.42],
+        [31.08, 28.42],
+        [30.83, 29],
+        [30.92, 29.5],
+        [31.17, 30],
+        [31.42, 30.58],
+        [31.5, 31.17],
+        [31.42, 31.83],
+        [31.08, 31.75],
+        [30.92, 32.15],
+        [30.6901, 32.2532],
+        [30.4602, 32.356],
+        [30.2301, 32.4582],
+        [30, 32.56],
+        [29.9575, 32.5174],
+        [29.9151, 32.4549],
+        [29.8725, 32.3924],
+        [29.83, 32.33],
+        [29.7275, 32.3927],
+        [29.6251, 32.4553],
+        [29.5225, 32.5177],
+        [29.42, 32.58],
+        [29, 32.67],
+        [28.58, 32.92],
+        [28.17, 33.25],
+        [27.83, 33.58],
+        [27.42, 33.67],
+        [27.08, 33.92],
+        [26.67, 34],
+        [26.17, 34.33],
+        [25.75, 34.5],
+        [25.25, 34.75],
+        [24.83, 35],
+        [24.33, 35.25],
+        [24, 35.58],
+        [23.58, 35.5],
+        [23.25, 35.58],
+        [22.75, 35.83],
+        [22.5, 36.17],
+        [22.25, 36.58],
+        [22.08, 36.92],
+        [21.5, 36.92],
+        [21.08, 37.25],
+        [20.75, 37.25],
+        [20.25, 37.17],
+        [19.67, 37.25],
+        [19.25, 37.33],
+        [18.67, 37.58],
+        [18.42, 38.08],
+        [18.42, 38.08],
+        [18, 38.58],
+        [17.58, 38.83],
+        [17.08, 39.08],
+        [16.5, 39.17],
+        [16, 39.25],
+        [15.58, 39.5],
+        [15.5, 39.83],
+        [15, 40.08],
+        [14.75, 40.67],
+        [14.58, 41.17],
+        [14.08, 41.58],
+        [13.67, 42.08],
+        [13.25, 42.42],
+        [12.83, 42.83],
+        [12.42, 43.25],
+        [11.92, 43.42],
+        [11.67, 42.92],
+        [11.42, 43.25],
+        [11.08, 43.58],
+        [10.67, 43.92],
+        [10.42, 44.25],
+        [10.33, 44.75],
+        [10.5, 45.25],
+        [10.75, 45.75],
+        [10.67, 46.33],
+        [10.75, 46.83],
+        [11.08, 47.42],
+        [11.08, 48],
+        [11.25, 48.5],
+        [11.17, 49],
+        [11.17, 49],
+        [11.33, 49.58],
+        [11.5, 50.17],
+        [11.92, 50.58],
+        [11.75, 51.17],
+        [11, 51.08],
+        [10.42, 51],
+        [10, 50.75],
+        [9.42, 50.75],
+        [8.92, 50.42],
+        [8.5, 50.17],
+        [8.17, 49.92],
+        [7.67, 49.75],
+        [7.25, 49.5],
+        [6.75, 49.25],
+        [6.33, 49.08],
+        [5.75, 48.92],
+        [5.42, 48.5],
+        [5.08, 48.17],
+        [4.58, 47.92],
+        [4.17, 47.67],
+        [3.75, 47.25],
+        [3.42, 46.92],
+        [3, 46.5],
+        [2.58, 46.17],
+        [2.25, 45.75],
+        [1.92, 45.33],
+        [1.75, 44.83],
+        [1.42, 44.42],
+        [1, 44],
+        [0.75, 43.58],
+        [0.75, 43.58],
+        [0.42, 43.17],
+        [0, 42.92],
+        [-0.42, 42.42],
+        [-0.92, 42.08],
+        [-1.25, 41.75],
+        [-1.75, 41.5],
+        [-2.08, 41.08],
+        [-2.5, 40.67],
+        [-2.42, 40.25],
+        [-3, 40.25],
+        [-3.58, 39.92],
+        [-4.17, 39.58],
+        [-4.58, 39.33],
+        [-5.08, 39.08],
+        [-5.58, 38.92],
+        [-6.08, 38.75],
+        [-6.58, 39.17],
+        [-7.08, 39.58],
+        [-7.58, 39.33],
+        [-8.17, 39.33],
+        [-8.83, 39.42],
+        [-9.42, 39.67],
+        [-9.92, 39.83],
+        [-10.17, 40.17],
+        [-10.5, 40.5],
+        [-11, 40.5],
+        [-12.5, 40.42],
+        [-12, 40.5],
+        [-12.42, 40.5],
+        [-13, 40.42],
+        [-13, 40.42],
+        [-13.58, 40.58],
+        [-14.08, 40.58],
+        [-14.67, 40.75],
+        [-15.17, 40.67],
+        [-15.58, 40.42],
+        [-16, 40.08],
+        [-16.33, 39.75],
+        [-16.75, 39.25],
+        [-17.08, 38.92],
+        [-17.17, 38.25],
+        [-17.33, 37.83],
+        [-17.5, 37.33],
+        [-17.92, 37],
+        [-18.33, 36.67],
+        [-18.83, 36.25],
+        [-19, 35.83],
+        [-19.42, 35.5],
+        [-19.67, 35.17],
+        [-20, 34.75],
+        [-20.5, 34.67],
+        [-20.83, 35],
+        [-21.42, 35.17],
+        [-22.08, 35.33],
+        [-22.5, 35.5],
+        [-23.08, 35.5],
+        [-23.5, 35.42],
+        [-24, 35.5],
+        [-24.5, 35.25],
+        [-24.75, 34.92],
+        [-24.92, 34.42],
+        [-24.92, 34.42],
+        [-25.17, 33.75],
+        [-25.33, 33.42],
+        [-25.5, 32.92],
+        [-26.08, 32.58],
+        [-26.25, 32.92],
+        [-26.58, 32.92],
+        [-27, 32.92],
+        [-27.5, 32.75],
+        [-28.08, 32.58],
+        [-28.58, 32.42],
+        [-28.83, 32],
+        [-29.17, 31.5],
+        [-29.58, 31.25],
+        [-30, 30.92],
+        [-30.5, 30.67],
+        [-30.92, 30.42],
+        [-31.33, 30],
+        [-31.67, 29.58],
+        [-32, 29.25],
+        [-32.42, 28.83],
+        [-32.75, 28.5],
+        [-33, 28.08],
+        [-33.33, 27.5],
+        [-33.67, 27.08],
+        [-33.75, 26.58],
+        [-33.75, 26],
+        [-34, 25.75],
+        [-34, 25.08],
+        [-34.25, 24.75],
+        [-34.17, 24.25],
+        [-34.17, 24.25],
+        [-34, 23.67],
+        [-34.17, 23.25],
+        [-34.08, 22.67],
+        [-34.17, 22.08],
+        [-34.42, 21.75],
+        [-34.42, 21.08],
+        [-34.5, 20.5],
+        [-34.75, 20.17],
+        [-34.75, 19.58],
+        [-34.42, 19.17],
+        [-34.08, 18.75],
+        [-34.25, 18.42],
+        [-33.83, 18.42],
+        [-33.42, 18.25],
+        [-32.83, 17.83],
+        [-32.83, 18.08],
+        [-32.58, 18.33],
+        [-32, 18.25],
+        [-31.42, 17.92],
+        [-31, 17.58],
+        [-30.58, 17.33],
+        [-30, 17.17],
+        [-29.58, 16.92],
+        [-29, 16.75],
+        [-28.58, 16.42],
+        [-28.25, 15.92],
+        [-27.83, 15.67],
+        [-27.5, 15.33],
+        [-27, 15.25],
+        [-26.42, 15.08],
+        [-26.42, 15.08],
+        [-25.92, 14.92],
+        [-25.5, 14.83],
+        [-25, 14.83],
+        [-24.42, 14.58],
+        [-24, 14.5],
+        [-23.5, 14.5],
+        [-22.92, 14.42],
+        [-22.5, 14.5],
+        [-22.08, 14.33],
+        [-21.67, 13.92],
+        [-21.25, 13.75],
+        [-20.83, 13.42],
+        [-20.25, 13.25],
+        [-19.75, 12.92],
+        [-19.25, 12.67],
+        [-18.83, 12.42],
+        [-18.5, 12.08],
+        [-17.92, 11.83],
+        [-17.42, 11.75],
+        [-17, 11.75],
+        [-16.5, 11.83],
+        [-16, 11.83],
+        [-15.5, 12.08],
+        [-15, 12.17],
+        [-14.5, 12.33],
+        [-13.92, 12.5],
+        [-13.33, 12.67],
+        [-12.92, 13],
+        [-12.67, 13.42],
+        [-12.25, 13.67],
+        [-12.25, 13.67],
+        [-11.83, 13.83],
+        [-11.25, 13.92],
+        [-10.67, 13.83],
+        [-10.33, 13.58],
+        [-9.92, 13.33],
+        [-9.42, 13.17],
+        [-9.17, 13],
+        [-8.67, 13.42],
+        [-8.17, 13.25],
+        [-7.75, 13],
+        [-7.25, 12.92],
+        [-6.75, 12.67],
+        [-6.42, 12.42],
+        [-6, 12.33],
+        [-5.75, 12.17],
+        [-5.33, 12.17],
+        [-4.92, 11.92],
+        [-4.5, 11.58],
+        [-4.08, 11.33],
+        [-3.75, 11],
+        [-3.42, 10.67],
+        [-3.08, 10.33],
+        [-2.75, 9.83],
+        [-2.25, 9.5],
+        [-1.83, 9.17],
+        [-1.33, 9],
+        [-0.83, 8.75],
+        [-0.5, 9.25],
+        [0, 9.33],
+        [np.nan, np.nan],
+        [30, 32.58],
+        [30.92, 32.17],
+        [31.25, 32.33],
+        [31, 32.67],
+        [31.08, 33.25],
+        [31.17, 34],
+        [31.5, 34.33],
+        [32, 34.67],
+        [32.5, 34.83],
+        [33, 35],
+        [33.5, 35.25],
+        [34.08, 35.5],
+        [34.5, 35.83],
+        [35, 35.75],
+        [35.67, 35.75],
+        [36, 35.92],
+        [36.33, 35.75],
+        [36.67, 36.08],
+        [36.92, 36],
+        [36.58, 35.5],
+        [36.58, 35.17],
+        [36.83, 34.5],
+        [36.5, 34.08],
+        [36.17, 33.58],
+        [36.17, 33.58],
+        [36.17, 33.17],
+        [36, 32.75],
+        [36.17, 32.25],
+        [36.5, 32],
+        [36.75, 31.25],
+        [36.83, 30.67],
+        [36.42, 30.5],
+        [36.17, 29.75],
+        [36.33, 29.25],
+        [36.75, 28.58],
+        [36.75, 28],
+        [37, 28.17],
+        [37, 27.67],
+        [37.0002, 27.545],
+        [37.0003, 27.42],
+        [37.0002, 27.295],
+        [37, 27.17],
+        [37.0826, 27.2522],
+        [37.1651, 27.3346],
+        [37.2476, 27.4172],
+        [37.33, 27.5],
+        [37.3926, 27.3953],
+        [37.4552, 27.2904],
+        [37.5176, 27.1853],
+        [37.58, 27.08],
+        [37.92, 27.17],
+        [38.08, 26.75],
+        [38.25, 26.25],
+        [38.58, 26.33],
+        [38.33, 26.67],
+        [38.42, 26.92],
+        [38.67, 26.75],
+        [39.25, 26.67],
+        [39.5, 26.83],
+        [39.42, 26],
+        [40, 26.17],
+        [40.25, 26.17],
+        [40.58, 26.58],
+        [40.5, 26.08],
+        [40.83, 25.75],
+        [40.92, 25.17],
+        [40.83, 24.75],
+        [40.92, 24.25],
+        [40.67, 24],
+        [40.67, 23.5],
+        [40.42, 23.75],
+        [40.17, 23.58],
+        [40.17, 23.08],
+        [40.58, 22.58],
+        [40, 22.5],
+        [39.58, 22.83],
+        [39.25, 23.17],
+        [38.92, 23.33],
+        [38.67, 23.67],
+        [38.5, 24.08],
+        [38.17, 24.17],
+        [38.17, 24.17],
+        [38, 24.58],
+        [38.17, 24],
+        [37.58, 24],
+        [37.92, 23.5],
+        [38, 22.92],
+        [38.33, 22.58],
+        [38.3, 21.83],
+        [38.33, 21.08],
+        [38.75, 20.67],
+        [39.25, 20.33],
+        [39.58, 20.08],
+        [40, 19.75],
+        [40.25, 19.33],
+        [40.75, 19.33],
+        [41.33, 19.42],
+        [41.75, 19.5],
+        [42, 19],
+        [42.33, 18.5],
+        [42.58, 17.92],
+        [43, 17.33],
+        [43.42, 16.58],
+        [43.5, 16],
+        [43.75, 15.75],
+        [44, 15.17],
+        [44.33, 15.17],
+        [44.58, 14.92],
+        [45, 14.83],
+        [45.33, 14.17],
+        [45, 14.08],
+        [44.83, 13.75],
+        [44.83, 13.75],
+        [45.08, 13.5],
+        [45.42, 13.42],
+        [45.67, 13.58],
+        [45.75, 13.08],
+        [45.5, 12.58],
+        [45.5, 12.17],
+        [45.17, 12.08],
+        [44.92, 12.33],
+        [44.58, 12.17],
+        [44.25, 12.25],
+        [43.92, 12.67],
+        [43.67, 13.08],
+        [43.42, 13.58],
+        [43, 13.83],
+        [42.58, 13.92],
+        [42.33, 14.17],
+        [42.08, 14.67],
+        [41.83, 15.25],
+        [41.83, 16.08],
+        [41.5, 15.83],
+        [41.33, 16.33],
+        [41.08, 16.92],
+        [40.83, 17.42],
+        [40.58, 17.92],
+        [40.17, 18.42],
+        [39.83, 18.25],
+        [39.92, 17.92],
+        [40.25, 17.83],
+        [40.33, 17.33],
+        [40.5, 16.92],
+        [40.5, 16.92],
+        [40.17, 16.67],
+        [39.67, 16.5],
+        [39.42, 17],
+        [39, 17],
+        [38.83, 16.5],
+        [38.42, 16.5],
+        [38.17, 16.17],
+        [37.92, 16],
+        [37.92, 15.67],
+        [38.17, 15.67],
+        [38.58, 15.83],
+        [38.83, 16.08],
+        [39.25, 16],
+        [39.67, 15.75],
+        [40, 15.67],
+        [40.17, 15],
+        [40.58, 14.75],
+        [40.67, 14.42],
+        [40.92, 14],
+        [41.25, 13.58],
+        [41.25, 12.92],
+        [41.5, 12.42],
+        [41.92, 12],
+        [42.33, 11.5],
+        [42.33, 11],
+        [42.67, 10.92],
+        [43.08, 10.42],
+        [43.5, 10.17],
+        [44, 10.08],
+        [44.08, 9.5],
+        [44.08, 9.5],
+        [44.25, 9.17],
+        [44.33, 8.67],
+        [44.17, 8.25],
+        [43.83, 8],
+        [43.67, 7.42],
+        [43.42, 6.83],
+        [43.08, 6.42],
+        [43, 5.83],
+        [43.25, 5.25],
+        [43.33, 4.58],
+        [43.5, 4],
+        [43.25, 3.58],
+        [43, 3],
+        [42.5, 3.08],
+        [41.92, 3.17],
+        [41.67, 2.67],
+        [41.33, 2.08],
+        [41.17, 1.5],
+        [41, 1],
+        [40.42, 0.5],
+        [39.92, 0],
+        [39.5, -0.33],
+        [39.08, -0.25],
+        [38.9977, -0.124564],
+        [38.9153, 0.000581242],
+        [38.8327, 0.125435],
+        [38.75, 0.25],
+        [38.6678, 0.1045],
+        [38.5854, -0.0406663],
+        [38.5028, -0.185499],
+        [38.42, -0.33],
+        [38.08, -0.67],
+        [37.67, -0.83],
+        [37.67, -1.33],
+        [37.17, -1.83],
+        [36.75, -2.17],
+        [36.75, -2.17],
+        [36.75, -2.75],
+        [36.75, -3.33],
+        [36.75, -3.92],
+        [36.67, -4.5],
+        [36.5, -5],
+        [36.08, -5.5],
+        [36.25, -6],
+        [36.75, -6.33],
+        [37, -6.5],
+        [37.25, -7],
+        [37.25, -7.42],
+        [37.08, -7.83],
+        [37.17, -8.33],
+        [37.08, -8.92],
+        [37.5, -8.75],
+        [38, -8.75],
+        [38.5, -8.67],
+        [38.5, -9.08],
+        [38.83, -9.33],
+        [39.33, -9.25],
+        [39.67, -8.92],
+        [40.25, -8.83],
+        [40.75, -8.67],
+        [41.17, -8.58],
+        [41.67, -8.75],
+        [42, -8.83],
+        [42.42, -8.75],
+        [43, -9.17],
+        [43.25, -8.92],
+        [43.33, -8.33],
+        [43.33, -8.33],
+        [43.75, -8],
+        [43.5, -7.25],
+        [43.5, -6.58],
+        [43.58, -5.83],
+        [43.5, -5.08],
+        [43.33, -4.42],
+        [43.5, -3.58],
+        [43.42, -2.75],
+        [43.33, -2.17],
+        [43.42, -1.67],
+        [43.67, -1.42],
+        [44.25, -1.25],
+        [44.67, -1.17],
+        [45.25, -1.08],
+        [45.83, -1],
+        [46.25, -1.25],
+        [46.5, -1.75],
+        [46.75, -2],
+        [47, -1.92],
+        [47.33, -2.33],
+        [47.5, -2.5],
+        [47.58, -3.17],
+        [47.83, -3.75],
+        [47.83, -4.25],
+        [48, -4.67],
+        [48.5, -4.75],
+        [48.58, -4.17],
+        [48.75, -3.67],
+        [48.83, -3],
+        [48.5, -2.67],
+        [48.5, -2.67],
+        [48.58, -2],
+        [48.58, -1.42],
+        [49.17, -1.58],
+        [49.67, -1.92],
+        [49.67, -1.33],
+        [49.25, -1.08],
+        [49.33, -0.58],
+        [49.25, 0],
+        [49.67, 0.17],
+        [49.83, 0.58],
+        [49.92, 1.08],
+        [50.08, 1.5],
+        [50.5, 1.58],
+        [50.83, 1.75],
+        [51, 2.33],
+        [51.25, 3],
+        [51.42, 3.58],
+        [51.75, 4],
+        [52.08, 4.33],
+        [52.42, 4.58],
+        [52.83, 4.75],
+        [52.92, 5.08],
+        [52.42, 5.08],
+        [52.25, 5.5],
+        [52.5, 5.92],
+        [52.75, 5.92],
+        [52.83, 5.5],
+        [53.25, 5.5],
+        [53.42, 6.08],
+        [53.42, 7],
+        [53.42, 7],
+        [53.67, 7.33],
+        [53.67, 8],
+        [53.5, 8.5],
+        [53.83, 8.58],
+        [54.08, 9],
+        [54.33, 8.67],
+        [54.5, 9],
+        [54.83, 8.67],
+        [55.33, 8.67],
+        [55.58, 8.17],
+        [56, 8.08],
+        [56.5, 8.08],
+        [56.83, 8.25],
+        [57.08, 8.67],
+        [57.17, 9.42],
+        [57.5, 9.83],
+        [57.58, 10.5],
+        [57.25, 10.5],
+        [56.83, 10.25],
+        [56.5, 10.25],
+        [56.5, 10.83],
+        [56.17, 10.83],
+        [56, 10.17],
+        [55.5, 9.75],
+        [55, 9.42],
+        [54.75, 10],
+        [54.5, 10],
+        [54.25, 10.92],
+        [53.92, 10.75],
+        [53.92, 11.33],
+        [53.92, 11.33],
+        [54.17, 11.83],
+        [54.33, 12.25],
+        [54.42, 12.92],
+        [54.67, 13.33],
+        [54.33, 13.67],
+        [54.17, 13.25],
+        [54, 13.83],
+        [53.92, 14.33],
+        [54.17, 15.17],
+        [54.25, 16],
+        [54.58, 16.67],
+        [54.75, 17.5],
+        [54.83, 18.33],
+        [54.33, 18.67],
+        [54.33, 19.25],
+        [54.5, 19.75],
+        [54.92, 20],
+        [55.17, 20.75],
+        [55.67, 21.08],
+        [56.17, 21],
+        [56.75, 21],
+        [57.08, 21.33],
+        [57.58, 21.67],
+        [57.67, 22.42],
+        [57.42, 22.92],
+        [57.08, 23.25],
+        [57, 23.83],
+        [57.25, 24.33],
+        [57.75, 24.33],
+        [58.25, 24.33],
+        [58.25, 24.33],
+        [58.33, 23.75],
+        [58.75, 23.5],
+        [59.17, 23.5],
+        [59.42, 24.17],
+        [59.5, 25],
+        [59.58, 25.92],
+        [59.42, 26.83],
+        [59.42, 27.92],
+        [59.67, 28.33],
+        [60, 29.17],
+        [59.9582, 29.421],
+        [59.9159, 29.6713],
+        [59.8732, 29.921],
+        [59.83, 30.17],
+        [59.9351, 30.066],
+        [60.0402, 29.9613],
+        [60.1451, 29.856],
+        [60.25, 29.75],
+        [60.17, 29.08],
+        [60.58, 28.33],
+        [60.58, 27.17],
+        [60.42, 26.25],
+        [60.25, 25.33],
+        [60.08, 24.42],
+        [60, 23.5],
+        [60.17, 22.58],
+        [60.42, 22.08],
+        [60.67, 21.33],
+        [61, 21.33],
+        [61.5, 21.67],
+        [62, 21.25],
+        [62.5, 21.17],
+        [63, 21.58],
+        [63.42, 22.42],
+        [63.92, 23.25],
+        [64.33, 24.08],
+        [64.33, 24.08],
+        [64.83, 24.67],
+        [65, 25.33],
+        [65.5, 25.33],
+        [65.83, 24.5],
+        [65.75, 23.83],
+        [65.75, 23.17],
+        [65.83, 22.42],
+        [65.5, 22],
+        [65.33, 21.42],
+        [65.08, 21.5],
+        [64.75, 21],
+        [64.5, 21.67],
+        [64.17, 21],
+        [63.83, 20.67],
+        [63.58, 19.83],
+        [63.33, 19.17],
+        [63, 18.42],
+        [62.5, 17.75],
+        [62.25, 17.42],
+        [61.75, 17.33],
+        [61.25, 17.17],
+        [60.83, 17.25],
+        [60.5, 17.92],
+        [60.17, 18.58],
+        [59.83, 18.83],
+        [59.58, 18.58],
+        [59.33, 18],
+        [59.17, 18.33],
+        [58.92, 17.58],
+        [58.58, 16.83],
+        [58.58, 16.83],
+        [58.25, 16.67],
+        [57.75, 16.67],
+        [57.33, 16.5],
+        [56.75, 16.33],
+        [56.17, 15.92],
+        [56.17, 15.33],
+        [56.17, 14.67],
+        [55.75, 14.17],
+        [55.42, 14.25],
+        [55.42, 13.67],
+        [55.42, 13],
+        [55.75, 13],
+        [56.17, 12.67],
+        [56.5, 12.92],
+        [56.92, 12.33],
+        [57.42, 12],
+        [58, 11.67],
+        [58.5, 11.33],
+        [59.08, 11.08],
+        [59.33, 10.58],
+        [59, 10.25],
+        [59, 9.75],
+        [58.58, 9],
+        [58.25, 8.5],
+        [58, 7.67],
+        [58.08, 6.83],
+        [58.33, 6],
+        [58.58, 5.58],
+        [59, 5.67],
+        [59.33, 6.17],
+        [59.33, 6.17],
+        [59.25, 5.42],
+        [59.58, 5.25],
+        [59.92, 5.58],
+        [60.33, 5.08],
+        [60.75, 5],
+        [60.855, 4.95792],
+        [60.96, 4.91556],
+        [61.065, 4.87292],
+        [61.17, 4.83],
+        [61.2526, 4.93417],
+        [61.3352, 5.03889],
+        [61.4176, 5.14417],
+        [61.5, 5.25],
+        [61.5826, 5.16816],
+        [61.6651, 5.08588],
+        [61.7476, 5.00316],
+        [61.83, 4.92],
+        [61.9154, 5.10593],
+        [62.0005, 5.29291],
+        [62.0854, 5.48093],
+        [62.17, 5.67],
+        [62.5, 6.33],
+        [62.92, 7],
+        [63, 8],
+        [63.33, 8.5],
+        [63.75, 8.92],
+        [63.5, 9.5],
+        [63.92, 10.08],
+        [64.33, 10.67],
+        [64.92, 11.33],
+        [65.25, 12.17],
+        [65.75, 12.58],
+        [66.17, 13],
+        [66.58, 13.33],
+        [67, 13.83],
+        [67.42, 14.67],
+        [67.83, 15],
+        [68.33, 16.17],
+        [68.25, 15],
+        [68.17, 14],
+        [67.83, 12.92],
+        [68.25, 13.67],
+        [68.25, 13.67],
+        [68.2935, 14.0006],
+        [68.3363, 14.3325],
+        [68.3785, 14.6656],
+        [68.42, 15],
+        [68.4827, 14.8562],
+        [68.5452, 14.7116],
+        [68.6077, 14.5662],
+        [68.67, 14.42],
+        [68.733, 14.6456],
+        [68.7956, 14.8724],
+        [68.858, 15.1006],
+        [68.92, 15.33],
+        [69.25, 16.17],
+        [68.75, 15.92],
+        [69, 16.58],
+        [68.67, 16.67],
+        [68.753, 16.895],
+        [68.8356, 17.1216],
+        [68.918, 17.35],
+        [69, 17.58],
+        [69.0202, 17.4354],
+        [69.0402, 17.2905],
+        [69.0602, 17.1454],
+        [69.08, 17],
+        [69.42, 17],
+        [69.58, 18.08],
+        [70.08, 18.92],
+        [70.08, 20.17],
+        [70.25, 21.5],
+        [70.67, 22.33],
+        [70.92, 23.33],
+        [70.67, 24.25],
+        [71, 24.83],
+        [71.17, 25.67],
+        [70.58, 25.58],
+        [70.92, 26.58],
+        [70.5, 26.83],
+        [71.08, 27.75],
+        [70.92, 29.08],
+        [70.67, 30.17],
+        [70.42, 31.17],
+        [70.08, 30],
+        [70.1033, 29.6885],
+        [70.1261, 29.3764],
+        [70.1483, 29.0635],
+        [70.17, 28.75],
+        [70.0858, 29.0663],
+        [70.0011, 29.3801],
+        [69.9158, 29.6913],
+        [69.83, 30],
+        [69.75, 31.25],
+        [69.75, 31.25],
+        [69.92, 32.08],
+        [69.75, 33.08],
+        [69.42, 33.08],
+        [69.33, 34.5],
+        [69.17, 35.83],
+        [68.92, 37],
+        [68.58, 38],
+        [68.25, 39],
+        [68, 40],
+        [67.67, 40.92],
+        [67.25, 41.25],
+        [66.75, 41.25],
+        [66.42, 40.58],
+        [66.17, 39.5],
+        [66.08, 38.33],
+        [66.25, 37.25],
+        [66.33, 36.25],
+        [66.42, 35.33],
+        [66.67, 34.33],
+        [66.83, 33.17],
+        [66.9155, 32.9424],
+        [67.0007, 32.7132],
+        [67.0855, 32.4824],
+        [67.17, 32.25],
+        [67.0452, 32.3972],
+        [66.9203, 32.543],
+        [66.7952, 32.6872],
+        [66.67, 32.83],
+        [66.42, 33.67],
+        [66, 34.67],
+        [65.5, 34.67],
+        [65.08, 34.67],
+        [64.58, 34.67],
+        [64.33, 35.75],
+        [63.92, 36.75],
+        [63.92, 38],
+        [63.92, 38],
+        [64.42, 38],
+        [64.42, 37.25],
+        [64.83, 36.5],
+        [65.17, 36.92],
+        [65.08, 37.75],
+        [64.83, 38.67],
+        [64.67, 39.5],
+        [64.58, 40.67],
+        [65.08, 40.17],
+        [65.1852, 40.0465],
+        [65.2902, 39.922],
+        [65.3952, 39.7965],
+        [65.5, 39.67],
+        [65.5829, 39.8755],
+        [65.6656, 40.0824],
+        [65.7479, 40.2905],
+        [65.83, 40.5],
+        [66.08, 41.5],
+        [66.42, 42.17],
+        [66.33, 43.17],
+        [66.17, 43.92],
+        [66.5, 44.5],
+        [67, 44.5],
+        [67.17, 43.83],
+        [67.67, 44.17],
+        [68.25, 44.17],
+        [68.67, 43.25],
+        [68.5, 44.5],
+        [68.5, 45.67],
+        [68.25, 46.25],
+        [67.83, 46.67],
+        [67.75, 45.5],
+        [67.6452, 45.3531],
+        [67.5403, 45.2074],
+        [67.4352, 45.0631],
+        [67.33, 44.92],
+        [67.2905, 45.1486],
+        [67.2506, 45.3765],
+        [67.2105, 45.6036],
+        [67.17, 45.83],
+        [66.83, 46.33],
+        [66.83, 47.33],
+        [66.83, 47.33],
+        [67.08, 48.17],
+        [67.67, 48.17],
+        [67.83, 49.08],
+        [68.08, 50.17],
+        [68.33, 51],
+        [68.5, 52.08],
+        [68.75, 53],
+        [69, 53.92],
+        [68.5, 54],
+        [68.17, 54.83],
+        [68.5, 55.17],
+        [68.58, 56.17],
+        [68.5, 57.25],
+        [68.83, 58.17],
+        [69, 59.08],
+        [68.42, 59.08],
+        [68.33, 59.83],
+        [68.67, 59.83],
+        [68.75, 60.5],
+        [69, 61.08],
+        [69.33, 60.5],
+        [69.67, 60.17],
+        [69.92, 59.17],
+        [70.17, 58.58],
+        [70.5, 59.08],
+        [70.08, 60.17],
+        [69.75, 61.75],
+        [69.67, 63],
+        [69.33, 64.08],
+        [69.25, 65.08],
+        [69.25, 65.08],
+        [69, 66],
+        [68.83, 67.08],
+        [68.5, 67.75],
+        [68.25, 68.58],
+        [68.75, 69.08],
+        [69, 68.33],
+        [69.5, 67.83],
+        [69.67, 66.92],
+        [70, 66.92],
+        [70.42, 67.33],
+        [70.83, 66.83],
+        [71.25, 67],
+        [71.58, 68.25],
+        [72, 68.75],
+        [72.5, 68.92],
+        [72.92, 69.5],
+        [73.33, 70.08],
+        [73.373, 70.3505],
+        [73.4157, 70.6223],
+        [73.458, 70.8955],
+        [73.5, 71.17],
+        [73.4176, 71.2968],
+        [73.3351, 71.4224],
+        [73.2526, 71.5468],
+        [73.17, 71.67],
+        [73.1076, 71.5841],
+        [73.0451, 71.4988],
+        [72.9826, 71.4141],
+        [72.92, 71.33],
+        [72.8585, 71.709],
+        [72.7964, 72.0853],
+        [72.7335, 72.459],
+        [72.67, 72.83],
+        [72.585, 72.83],
+        [72.5, 72.83],
+        [72.415, 72.83],
+        [72.33, 72.83],
+        [72.2276, 72.7258],
+        [72.1251, 72.6227],
+        [72.0226, 72.5208],
+        [71.92, 72.42],
+        [71.8152, 72.27],
+        [71.7102, 72.1217],
+        [71.6052, 71.9751],
+        [71.5, 71.83],
+        [71.3954, 72.0434],
+        [71.2905, 72.2545],
+        [71.1853, 72.4634],
+        [71.08, 72.67],
+        [70.955, 72.67],
+        [70.83, 72.67],
+        [70.705, 72.67],
+        [70.58, 72.67],
+        [70.455, 72.67],
+        [70.33, 72.67],
+        [70.205, 72.67],
+        [70.08, 72.67],
+        [69.935, 72.647],
+        [69.79, 72.6244],
+        [69.645, 72.602],
+        [69.5, 72.58],
+        [69.375, 72.58],
+        [69.25, 72.58],
+        [69.125, 72.58],
+        [69, 72.58],
+        [68.8956, 72.8336],
+        [68.7907, 73.0847],
+        [68.6855, 73.3335],
+        [68.58, 73.58],
+        [68.58, 73.58],
+        [68.17, 73.17],
+        [67.75, 73.17],
+        [67.33, 72.5],
+        [67, 71.83],
+        [66.67, 70.5],
+        [66.25, 71.58],
+        [66.5, 72.5],
+        [66.83, 73.5],
+        [67.25, 74],
+        [67.67, 74.83],
+        [68.25, 74.5],
+        [68.75, 74.58],
+        [68.813, 74.8081],
+        [68.8756, 75.0374],
+        [68.938, 75.268],
+        [69, 75.5],
+        [69.0214, 75.1061],
+        [69.0418, 74.7114],
+        [69.0614, 74.3161],
+        [69.08, 73.92],
+        [69.67, 73.67],
+        [70.17, 73.83],
+        [70.58, 74.33],
+        [71, 73.83],
+        [71.33, 73.17],
+        [71.83, 73.75],
+        [72, 74.67],
+        [72.33, 75.17],
+        [72.67, 75.08],
+        [72.92, 74.17],
+        [73.08, 74.5],
+        [72.75, 75.5],
+        [72.25, 75.75],
+        [71.83, 75.33],
+        [71.33, 75.33],
+        [71.17, 76.92],
+        [71.17, 76.92],
+        [71, 78.5],
+        [71.25, 78],
+        [71.5, 76.58],
+        [71.92, 76.08],
+        [72.08, 76.92],
+        [71.83, 77.75],
+        [72, 78.33],
+        [72.0833, 78.002],
+        [72.1661, 77.671],
+        [72.2483, 77.337],
+        [72.33, 77],
+        [72.3928, 77.1856],
+        [72.4554, 77.3724],
+        [72.5178, 77.5606],
+        [72.58, 77.75],
+        [72.33, 78.5],
+        [72.33, 79.5],
+        [72.08, 80.58],
+        [71.67, 81.58],
+        [71.7108, 81.8905],
+        [71.751, 82.2024],
+        [71.7908, 82.5155],
+        [71.83, 82.83],
+        [71.9352, 82.6678],
+        [72.0403, 82.5037],
+        [72.1452, 82.3378],
+        [72.25, 82.17],
+        [72.42, 80.83],
+        [72.92, 80.83],
+        [73.5, 80.33],
+        [73.58, 82],
+        [73.67, 83.75],
+        [73.83, 85.25],
+        [73.92, 87],
+        [74.33, 86.5],
+        [74.67, 86.58],
+        [75, 87.5],
+        [75.33, 88.67],
+        [75.58, 90.58],
+        [75.75, 92.17],
+        [76.08, 93.25],
+        [76.08, 94.75],
+        [76.08, 94.75],
+        [76.1444, 95.305],
+        [76.2076, 95.865],
+        [76.2694, 96.43],
+        [76.33, 97],
+        [76.2475, 96.916],
+        [76.1651, 96.8331],
+        [76.0825, 96.7511],
+        [76, 96.67],
+        [76.0454, 97.3513],
+        [76.0889, 98.0368],
+        [76.1304, 98.7264],
+        [76.17, 99.42],
+        [76.2526, 99.3169],
+        [76.3351, 99.2125],
+        [76.4176, 99.1069],
+        [76.5, 99],
+        [76.5, 101],
+        [77, 101],
+        [77.42, 102.5],
+        [77.75, 104.08],
+        [77.6689, 104.59],
+        [77.5868, 105.093],
+        [77.5039, 105.59],
+        [77.42, 106.08],
+        [77.3362, 105.613],
+        [77.2516, 105.153],
+        [77.1662, 104.699],
+        [77.08, 104.25],
+        [77.0811, 104.687],
+        [77.0815, 105.125],
+        [77.0811, 105.563],
+        [77.08, 106],
+        [77.0608, 106.377],
+        [77.0411, 106.752],
+        [77.0208, 107.127],
+        [77, 107.5],
+        [76.8754, 107.222],
+        [76.7506, 106.95],
+        [76.6254, 106.683],
+        [76.5, 106.42],
+        [76.5007, 106.772],
+        [76.501, 107.125],
+        [76.5007, 107.478],
+        [76.5, 107.83],
+        [76.75, 108.17],
+        [76.75, 109.58],
+        [76.67, 111.17],
+        [76.5, 112.42],
+        [76.17, 113.5],
+        [75.75, 113.83],
+        [75.25, 113.67],
+        [74.92, 112.5],
+        [74.5, 111],
+        [74.17, 109.67],
+        [73.75, 108.33],
+        [73.58, 107.17],
+        [73.17, 106.5],
+        [73.17, 107.58],
+        [73.33, 108.83],
+        [73.5, 110.17],
+        [73.5, 110.17],
+        [73.5627, 110.004],
+        [73.6253, 109.837],
+        [73.6877, 109.669],
+        [73.75, 109.5],
+        [73.8127, 109.666],
+        [73.8753, 109.832],
+        [73.9377, 110.001],
+        [74, 110.17],
+        [73.83, 111.17],
+        [73.67, 112],
+        [73.67, 113],
+        [73.5, 113.67],
+        [73.67, 114.83],
+        [73.75, 115.92],
+        [73.58, 117.25],
+        [73.58, 118.67],
+        [73.17, 118.5],
+        [73, 120],
+        [72.92, 122],
+        [73, 123.33],
+        [73.33, 122.83],
+        [73.67, 123],
+        [73.67, 124.83],
+        [73.42, 126.92],
+        [73.25, 128.58],
+        [72.75, 129.83],
+        [72.25, 129.5],
+        [71.83, 128.75],
+        [71.33, 129.42],
+        [70.92, 130.33],
+        [70.75, 131.25],
+        [70.75, 131.25],
+        [71.08, 132],
+        [71.5, 132.25],
+        [71.92, 132.58],
+        [71.5, 133.5],
+        [71.33, 134.42],
+        [71.58, 135],
+        [71.67, 135.83],
+        [71.5, 136.67],
+        [71.58, 138.58],
+        [71.5612, 138.979],
+        [71.5417, 139.377],
+        [71.5212, 139.774],
+        [71.5, 140.17],
+        [71.6051, 140.047],
+        [71.7102, 139.923],
+        [71.8151, 139.797],
+        [71.92, 139.67],
+        [72.25, 139.33],
+        [72.5, 139.75],
+        [72.5, 141.17],
+        [72.83, 140.67],
+        [72.75, 142.42],
+        [72.67, 143.83],
+        [72.58, 145.25],
+        [72.33, 146.83],
+        [72.33, 148.5],
+        [72.17, 149.83],
+        [71.67, 150],
+        [71.42, 150.67],
+        [71.42, 151.58],
+        [71.17, 152.42],
+        [70.83, 152.42],
+        [70.92, 153.5],
+        [70.92, 154.58],
+        [71.08, 156],
+        [71, 157.5],
+        [71, 157.5],
+        [70.92, 158.83],
+        [70.67, 159.67],
+        [70.5651, 159.754],
+        [70.4601, 159.837],
+        [70.3551, 159.919],
+        [70.25, 160],
+        [70.1451, 159.873],
+        [70.0402, 159.747],
+        [69.9351, 159.623],
+        [69.83, 159.5],
+        [69.7682, 159.795],
+        [69.706, 160.088],
+        [69.6432, 160.38],
+        [69.58, 160.67],
+        [69.58, 162.25],
+        [69.67, 164],
+        [69.58, 165.67],
+        [69.42, 167],
+        [69.67, 167.67],
+        [70, 168.25],
+        [69.83, 169.42],
+        [69.58, 169.17],
+        [69.58, 168.25],
+        [69.25, 168.33],
+        [69.08, 169.33],
+        [68.75, 169.58],
+        [68.83, 170.42],
+        [69.08, 171],
+        [69.5, 170.58],
+        [70.08, 170.58],
+        [70, 172],
+        [69.92, 173.33],
+        [69.83, 174.67],
+        [69.83, 176.17],
+        [69.58, 177.42],
+        [69.42, 178.67],
+        [69.17, 179.75],
+        [69.08, 180],
+        [69.08, 180],
+        [68.75, 180.92],
+        [68.42, 181.83],
+        [68.17, 183.08],
+        [67.83, 184.17],
+        [67.5, 185],
+        [67.08, 185.5],
+        [67.08, 186.83],
+        [66.92, 188.33],
+        [66.5, 189.17],
+        [66.3956, 189.423],
+        [66.2908, 189.674],
+        [66.1856, 189.923],
+        [66.08, 190.17],
+        [66.0178, 189.981],
+        [65.9555, 189.793],
+        [65.8928, 189.606],
+        [65.83, 189.42],
+        [65.5, 188.92],
+        [65.5, 187.83],
+        [65, 187.83],
+        [64.67, 187.25],
+        [64.25, 187],
+        [64.42, 186],
+        [64.75, 184.92],
+        [65, 184.17],
+        [65.42, 184],
+        [65.58, 183],
+        [65.42, 182.33],
+        [65.5, 181.5],
+        [65.92, 181.17],
+        [66.33, 181],
+        [66, 180.08],
+        [65.67, 180.75],
+        [65.17, 180.33],
+        [65.05, 180],
+        [65.05, 180],
+        [64.92, 179.58],
+        [64.67, 178.67],
+        [64.75, 177.5],
+        [64.33, 177.5],
+        [64.33, 178.33],
+        [64, 178.58],
+        [63.5, 178.83],
+        [63, 179.25],
+        [62.67, 179.67],
+        [62.25, 179],
+        [62.5, 178.17],
+        [62.5, 177],
+        [62.25, 176.25],
+        [62.08, 175.33],
+        [61.75, 174.58],
+        [61.67, 173.83],
+        [61.33, 173.08],
+        [61, 172.33],
+        [60.67, 171.5],
+        [60.42, 170.67],
+        [60.42, 170.67],
+        [59.92, 170.33],
+        [60.25, 169.83],
+        [60.5, 169.17],
+        [60.58, 168.25],
+        [60.42, 167.5],
+        [60.17, 166.83],
+        [59.75, 166.17],
+        [60.33, 166.17],
+        [60.17, 165.33],
+        [59.83, 164.75],
+        [60, 164.17],
+        [59.83, 163.33],
+        [59.42, 163.17],
+        [59, 162.92],
+        [58.58, 162.33],
+        [58.17, 161.92],
+        [57.75, 162.08],
+        [57.92, 162.58],
+        [57.67, 163.17],
+        [57.25, 162.67],
+        [56.83, 162.67],
+        [56.67, 163.08],
+        [56.17, 163.25],
+        [56, 162.83],
+        [56.25, 162.42],
+        [56.08, 161.92],
+        [55.67, 161.58],
+        [55.17, 161.67],
+        [54.75, 162.08],
+        [54.5, 161.67],
+        [54.5, 161.67],
+        [54.58, 161.17],
+        [54.42, 160.42],
+        [54.08, 159.92],
+        [53.58, 159.83],
+        [53.17, 159.92],
+        [53.17, 159.17],
+        [52.83, 158.58],
+        [52.25, 158.42],
+        [51.67, 157.92],
+        [51.25, 157.33],
+        [50.92, 156.67],
+        [51.25, 156.5],
+        [51.67, 156.5],
+        [52.17, 156.42],
+        [52.75, 156.08],
+        [53.33, 156],
+        [53.92, 155.83],
+        [54.33, 155.67],
+        [54.83, 155.5],
+        [55.25, 155.42],
+        [55.83, 155.5],
+        [56.33, 155.75],
+        [56.83, 156],
+        [57, 156.67],
+        [57.42, 157],
+        [57.75, 156.83],
+        [57.75, 157.5],
+        [58, 158.25],
+        [58.42, 159],
+        [58.83, 159.67],
+        [58.83, 159.67],
+        [59.25, 160.08],
+        [59.67, 160.92],
+        [60.08, 161.58],
+        [60.42, 161.92],
+        [60.67, 162.67],
+        [60.83, 163.5],
+        [61.17, 163.75],
+        [61.75, 163.92],
+        [62.25, 164.08],
+        [62.5, 164.75],
+        [62.67, 164.42],
+        [62.5, 163.25],
+        [62.08, 162.92],
+        [61.67, 162.92],
+        [61.58, 162.25],
+        [61.25, 161.67],
+        [60.92, 161],
+        [60.58, 160.17],
+        [60.92, 159.92],
+        [61.25, 159.83],
+        [61.3952, 159.953],
+        [61.5402, 160.078],
+        [61.6852, 160.203],
+        [61.83, 160.33],
+        [61.7905, 160.122],
+        [61.7506, 159.914],
+        [61.7105, 159.707],
+        [61.67, 159.5],
+        [61.83, 158.83],
+        [61.75, 157.92],
+        [61.58, 156.92],
+        [61.17, 156.33],
+        [60.75, 155.75],
+        [60.42, 155],
+        [60, 154.5],
+        [59.5, 154.17],
+        [59.5, 154.17],
+        [59.42, 154.83],
+        [59.3576, 154.915],
+        [59.2951, 155.001],
+        [59.2326, 155.085],
+        [59.17, 155.17],
+        [59.1485, 154.877],
+        [59.1263, 154.584],
+        [59.1035, 154.292],
+        [59.08, 154],
+        [59.17, 153.33],
+        [59, 152.92],
+        [58.83, 152],
+        [58.83, 151.33],
+        [59.08, 151.08],
+        [59.33, 151.67],
+        [59.58, 151.33],
+        [59.5, 150.83],
+        [59.58, 150.17],
+        [59.75, 149.5],
+        [59.67, 149],
+        [59.42, 148.92],
+        [59.25, 148.83],
+        [59.33, 148.17],
+        [59.25, 147.42],
+        [59.42, 146.5],
+        [59.17, 145.92],
+        [59.33, 145.58],
+        [59.33, 144.67],
+        [59.33, 143.67],
+        [59.25, 142.67],
+        [59, 142],
+        [58.67, 141.67],
+        [58.42, 141],
+        [58.08, 140.58],
+        [57.75, 140.25],
+        [57.5, 139.67],
+        [57.5, 139.67],
+        [57.17, 139],
+        [56.83, 138.5],
+        [56.33, 137.92],
+        [55.92, 137.25],
+        [55.58, 136.58],
+        [55.17, 135.92],
+        [54.92, 135.17],
+        [54.67, 135.25],
+        [54.5, 135.92],
+        [54.58, 136.67],
+        [54.17, 136.67],
+        [53.75, 136.67],
+        [54.17, 137.08],
+        [54.25, 137.67],
+        [53.83, 137.67],
+        [53.7476, 137.584],
+        [53.6651, 137.499],
+        [53.5826, 137.415],
+        [53.5, 137.33],
+        [53.5432, 137.559],
+        [53.5859, 137.789],
+        [53.6282, 138.019],
+        [53.67, 138.25],
+        [54.17, 138.83],
+        [54.17, 139.5],
+        [54, 140.17],
+        [53.75, 140.25],
+        [53.5, 140.75],
+        [53.25, 141.33],
+        [52.83, 141.08],
+        [52.42, 141.08],
+        [52.17, 141.33],
+        [51.83, 141.08],
+        [51.42, 140.75],
+        [51, 140.5],
+        [50.5, 140.42],
+        [50.5, 140.42],
+        [50, 140.5],
+        [49.42, 140.5],
+        [49, 140.33],
+        [48.5, 140.17],
+        [48, 139.5],
+        [47.5, 139],
+        [47.08, 138.5],
+        [46.5, 138.25],
+        [46.08, 137.92],
+        [45.67, 137.5],
+        [45.25, 136.92],
+        [44.75, 136.33],
+        [44.33, 135.67],
+        [43.92, 135.5],
+        [43.42, 135],
+        [43.17, 134.33],
+        [42.83, 133.75],
+        [42.67, 133.08],
+        [42.92, 132.33],
+        [43.25, 132.33],
+        [43.25, 131.75],
+        [43, 131.5],
+        [42.58, 131.17],
+        [42.58, 130.83],
+        [42.25, 130.67],
+        [42.08, 130.08],
+        [41.58, 129.58],
+        [41.33, 129.67],
+        [40.83, 129.67],
+        [40.67, 129.25],
+        [40.67, 129.25],
+        [40.33, 128.75],
+        [40.08, 128.25],
+        [39.92, 127.83],
+        [39.8977, 127.705],
+        [39.8753, 127.58],
+        [39.8527, 127.455],
+        [39.83, 127.33],
+        [39.7675, 127.373],
+        [39.705, 127.415],
+        [39.6425, 127.458],
+        [39.6269, 127.468],
+        [39.6113, 127.479],
+        [39.5956, 127.489],
+        [39.58, 127.5],
+        [39.5594, 127.489],
+        [39.5388, 127.479],
+        [39.5181, 127.468],
+        [39.4975, 127.457],
+        [39.415, 127.415],
+        [39.3325, 127.372],
+        [39.25, 127.33],
+        [39.1877, 127.455],
+        [39.1253, 127.58],
+        [39.0627, 127.705],
+        [39, 127.83],
+        [38.67, 128.25],
+        [38.25, 128.5],
+        [37.92, 128.83],
+        [37.5, 129.17],
+        [37, 129.33],
+        [36.5, 129.42],
+        [36, 129.42],
+        [35.58, 129.33],
+        [35.17, 129.08],
+        [34.92, 128.5],
+        [34.83, 127.75],
+        [34.67, 127.17],
+        [34.33, 126.58],
+        [34.83, 126.33],
+        [35.33, 126.33],
+        [35.75, 126.75],
+        [36.33, 126.5],
+        [36.92, 126.17],
+        [37, 126.75],
+        [37.42, 126.58],
+        [37.75, 126.08],
+        [37.67, 125.33],
+        [38.08, 124.75],
+        [38.08, 124.75],
+        [38.5, 125],
+        [38.92, 125.17],
+        [39.42, 125.42],
+        [39.58, 125.08],
+        [39.67, 124.67],
+        [39.83, 124.08],
+        [39.75, 123.5],
+        [39.58, 123],
+        [39.42, 122.42],
+        [39.08, 122.08],
+        [38.83, 121.58],
+        [38.75, 121.17],
+        [39.17, 121.67],
+        [39.5, 121.33],
+        [39.75, 121.5],
+        [40, 121.92],
+        [40.42, 122.25],
+        [40.83, 121.92],
+        [40.92, 121.25],
+        [40.58, 120.83],
+        [40.17, 120.42],
+        [40, 119.92],
+        [39.75, 119.42],
+        [39.42, 119.25],
+        [39.17, 119],
+        [39.08, 118.42],
+        [39.25, 118],
+        [38.92, 117.67],
+        [38.58, 117.58],
+        [38.25, 117.92],
+        [38.25, 117.92],
+        [38, 118.33],
+        [37.75, 118.83],
+        [37.33, 118.92],
+        [37.08, 119.33],
+        [37.08, 119.75],
+        [37.33, 120],
+        [37.58, 120.33],
+        [37.75, 120.83],
+        [37.5, 121.17],
+        [37.42, 121.58],
+        [37.42, 122.08],
+        [37.3977, 122.205],
+        [37.3753, 122.33],
+        [37.3527, 122.455],
+        [37.33, 122.58],
+        [37.205, 122.517],
+        [37.0801, 122.455],
+        [36.955, 122.392],
+        [36.83, 122.33],
+        [37, 122],
+        [36.75, 121.5],
+        [36.58, 120.83],
+        [36.17, 120.67],
+        [35.92, 120.17],
+        [35.58, 119.67],
+        [35.25, 119.42],
+        [34.83, 119.17],
+        [34.58, 119.75],
+        [34.33, 120.33],
+        [33.83, 120.5],
+        [33.42, 120.67],
+        [33, 120.83],
+        [32.58, 120.92],
+        [32.42, 121.25],
+        [32.08, 121.67],
+        [31.67, 121.83],
+        [31.67, 121.83],
+        [31.67, 121.25],
+        [31.25, 121.83],
+        [30.92, 121.92],
+        [30.83, 121.5],
+        [30.67, 121.17],
+        [30.42, 120.92],
+        [30.33, 120.42],
+        [30.17, 120.75],
+        [30.25, 121.33],
+        [30.08, 121.67],
+        [30, 122.08],
+        [29.75, 122],
+        [29.17, 121.92],
+        [29.17, 121.67],
+        [28.67, 121.5],
+        [28.42, 121.58],
+        [28.17, 121.42],
+        [28.17, 121.08],
+        [27.83, 120.83],
+        [27.42, 120.58],
+        [27, 120.33],
+        [26.67, 120],
+        [26.75, 119.67],
+        [26.33, 119.75],
+        [26, 119.67],
+        [25.58, 119.42],
+        [25.25, 119.17],
+        [25, 118.83],
+        [24.58, 118.67],
+        [24.58, 118.17],
+        [24.58, 118.17],
+        [24.25, 118.17],
+        [24, 117.83],
+        [23.67, 117.42],
+        [23.42, 117],
+        [23.08, 116.5],
+        [22.83, 116],
+        [22.75, 115.5],
+        [22.67, 115],
+        [22.67, 114.5],
+        [22.25, 114.17],
+        [22.67, 113.67],
+        [22.17, 113.5],
+        [22.5, 113.08],
+        [22, 113],
+        [21.83, 112.5],
+        [21.75, 112],
+        [21.5, 111.5],
+        [21.42, 110.92],
+        [21.25, 110.42],
+        [20.92, 110.25],
+        [20.5, 110.5],
+        [20.33, 110.25],
+        [20.33, 109.92],
+        [20.75, 109.75],
+        [21, 109.67],
+        [21.42, 109.75],
+        [21.42, 109.42],
+        [21.67, 109],
+        [21.67, 108.5],
+        [21.5, 108],
+        [21.5, 108],
+        [21.25, 107.58],
+        [21, 107.08],
+        [20.67, 106.67],
+        [20.25, 106.42],
+        [19.92, 105.92],
+        [19.5, 105.75],
+        [19, 105.58],
+        [18.42, 105.92],
+        [18.08, 106.33],
+        [17.75, 106.42],
+        [17.33, 106.83],
+        [16.92, 107.17],
+        [16.5, 107.67],
+        [16.17, 108.08],
+        [15.75, 108.42],
+        [15.33, 108.83],
+        [14.75, 109],
+        [14.25, 109.17],
+        [13.75, 109.25],
+        [13.25, 109.25],
+        [12.83, 109.25],
+        [12.17, 109.17],
+        [11.75, 109.17],
+        [11.42, 109],
+        [11.17, 108.5],
+        [10.92, 108.08],
+        [10.67, 107.67],
+        [10.42, 107.25],
+        [10.42, 106.67],
+        [9.83, 106.67],
+        [9.83, 106.67],
+        [9.42, 106.33],
+        [9.33, 105.83],
+        [9, 105.42],
+        [8.67, 105],
+        [9.08, 104.83],
+        [9.58, 104.83],
+        [9.70501, 104.872],
+        [9.83001, 104.915],
+        [9.95501, 104.957],
+        [10.08, 105],
+        [10.1226, 104.875],
+        [10.1651, 104.75],
+        [10.2076, 104.625],
+        [10.25, 104.5],
+        [10.58, 104.25],
+        [10.58, 103.67],
+        [10.92, 103.25],
+        [11.33, 103],
+        [11.75, 102.83],
+        [12.08, 102.58],
+        [12.25, 102.25],
+        [12.67, 101.83],
+        [12.67, 101.42],
+        [12.75, 100.92],
+        [13.33, 100.92],
+        [13.5, 100.42],
+        [13.33, 100],
+        [12.75, 99.92],
+        [12.08, 99.92],
+        [11.67, 99.75],
+        [11.17, 99.58],
+        [10.83, 99.33],
+        [10.25, 99.17],
+        [9.67, 99.17],
+        [9.17, 99.33],
+        [9.25, 99.83],
+        [9.25, 99.83],
+        [8.58, 99.92],
+        [8.25, 100.25],
+        [7.75, 100.42],
+        [7.17, 100.58],
+        [6.92, 100.92],
+        [6.83, 101.5],
+        [6.42, 101.83],
+        [6.08, 102.25],
+        [5.75, 102.67],
+        [5.42, 103.08],
+        [4.92, 103.42],
+        [4.42, 103.42],
+        [3.92, 103.42],
+        [3.42, 103.42],
+        [2.92, 103.42],
+        [2.58, 103.75],
+        [2, 104.08],
+        [1.42, 104.25],
+        [1.42, 103.5],
+        [1.67, 103.17],
+        [1.92, 102.75],
+        [2.17, 102.25],
+        [2.5, 101.92],
+        [2.83, 101.42],
+        [3.33, 101.33],
+        [3.75, 100.92],
+        [4.25, 100.58],
+        [4.75, 100.67],
+        [5.08, 100.42],
+        [5.67, 100.33],
+        [5.67, 100.33],
+        [6.08, 100.33],
+        [6.67, 100.08],
+        [7, 99.75],
+        [7.33, 99.42],
+        [7.83, 99.08],
+        [8.25, 98.67],
+        [8.08, 98.42],
+        [8.5, 98.25],
+        [9, 98.25],
+        [9.58, 98.5],
+        [10.17, 98.5],
+        [10.67, 98.5],
+        [11, 98.75],
+        [11.42, 98.75],
+        [11.92, 98.5],
+        [12.5, 98.75],
+        [13.08, 98.58],
+        [13.67, 98.25],
+        [14.25, 98.08],
+        [14.75, 97.92],
+        [15.33, 97.83],
+        [15.83, 97.75],
+        [16.33, 97.58],
+        [16.75, 97.25],
+        [16.92, 96.92],
+        [16.58, 96.75],
+        [16.33, 96.25],
+        [16.08, 95.83],
+        [15.75, 95.5],
+        [15.75, 95.08],
+        [15.75, 95.08],
+        [15.83, 94.75],
+        [16.08, 94.25],
+        [16.58, 94.42],
+        [17.17, 94.58],
+        [17.75, 94.5],
+        [18.33, 94.33],
+        [18.83, 94.17],
+        [18.83, 93.83],
+        [19.25, 93.58],
+        [19.5, 93.75],
+        [19.92, 93.5],
+        [19.92, 93.17],
+        [20.25, 92.92],
+        [20.67, 92.5],
+        [21.08, 92.17],
+        [21.5, 92],
+        [21.92, 91.92],
+        [22.33, 91.75],
+        [22.75, 91.42],
+        [22.42, 90.92],
+        [22.17, 90.58],
+        [21.83, 90.25],
+        [21.75, 89.75],
+        [21.67, 89.25],
+        [21.58, 88.75],
+        [21.5, 88.33],
+        [22.08, 88.17],
+        [21.75, 88],
+        [21.58, 87.58],
+        [21.42, 87.08],
+        [21.42, 87.08],
+        [21.08, 86.92],
+        [20.75, 87],
+        [20.33, 86.75],
+        [19.92, 86.42],
+        [19.75, 85.92],
+        [19.67, 85.5],
+        [19.33, 85.08],
+        [19, 84.83],
+        [18.58, 84.5],
+        [18.25, 84.08],
+        [18.08, 83.67],
+        [17.83, 83.33],
+        [17.42, 83],
+        [17.17, 82.58],
+        [17, 82.33],
+        [16.58, 82.25],
+        [16.33, 82],
+        [16.25, 81.5],
+        [16.17, 81.17],
+        [15.75, 81],
+        [15.83, 80.42],
+        [15.42, 80.17],
+        [15, 80.08],
+        [14.42, 80.17],
+        [13.83, 80.25],
+        [13.25, 80.33],
+        [12.67, 80.25],
+        [12.17, 80],
+        [11.75, 79.75],
+        [11.25, 79.75],
+        [11.25, 79.75],
+        [10.83, 79.83],
+        [10.25, 79.83],
+        [10.25, 79.33],
+        [9.75, 79],
+        [9.25, 79],
+        [9.17, 78.58],
+        [8.92, 78.17],
+        [8.33, 78],
+        [8.08, 77.58],
+        [8.25, 77.17],
+        [8.58, 76.83],
+        [9, 76.5],
+        [9.58, 76.33],
+        [10.17, 76.17],
+        [10.67, 76],
+        [11.17, 75.83],
+        [11.58, 75.58],
+        [12, 75.25],
+        [12.42, 75],
+        [13, 74.83],
+        [13.5, 74.67],
+        [14, 74.5],
+        [14.5, 74.42],
+        [15, 74.08],
+        [15.5, 73.75],
+        [16, 73.5],
+        [16.42, 73.33],
+        [17, 73.25],
+        [17.5, 73.17],
+        [18.08, 73],
+        [18.08, 73],
+        [18.67, 72.83],
+        [19, 73],
+        [19.25, 72.83],
+        [19.75, 72.67],
+        [20.25, 72.75],
+        [20.83, 72.83],
+        [21.25, 72.58],
+        [21.67, 72.5],
+        [22.17, 72.58],
+        [22.25, 72.33],
+        [21.83, 72.17],
+        [21.25, 72.08],
+        [20.92, 71.67],
+        [20.75, 71.17],
+        [20.75, 70.58],
+        [21, 70.08],
+        [21.42, 69.67],
+        [21.75, 69.33],
+        [22.25, 69.08],
+        [22.25, 69.67],
+        [22.42, 70.17],
+        [22.92, 70.33],
+        [22.75, 69.75],
+        [22.75, 69.17],
+        [23.08, 68.67],
+        [23.5, 68.33],
+        [23.75, 67.92],
+        [23.92, 67.42],
+        [24.33, 67.33],
+        [24.75, 67.17],
+        [24.75, 67.17],
+        [25, 66.83],
+        [25.33, 66.58],
+        [25.42, 66.08],
+        [25.33, 65.58],
+        [25.25, 65.17],
+        [25.17, 64.67],
+        [25.25, 64.25],
+        [25.42, 63.83],
+        [25.25, 63.5],
+        [25.25, 62.92],
+        [25.17, 62.42],
+        [25.08, 61.83],
+        [25.17, 61.17],
+        [25.25, 60.75],
+        [25.33, 60.17],
+        [25.33, 59.67],
+        [25.42, 59.17],
+        [25.58, 58.58],
+        [25.67, 58],
+        [25.75, 57.33],
+        [26.25, 57.17],
+        [26.67, 57.08],
+        [27, 56.75],
+        [27, 56.25],
+        [26.83, 55.75],
+        [26.67, 55.33],
+        [26.42, 54.75],
+        [26.67, 54.33],
+        [26.58, 53.83],
+        [26.92, 53.5],
+        [26.92, 53.5],
+        [27, 53],
+        [27.42, 52.58],
+        [27.67, 52.17],
+        [27.83, 51.5],
+        [28.25, 51.25],
+        [28.75, 51.08],
+        [29.25, 50.67],
+        [29.83, 50.33],
+        [30.17, 50],
+        [30, 49.58],
+        [30.25, 49.25],
+        [30.5, 48.92],
+        [30, 48.58],
+        [29.58, 48.33],
+        [29.42, 47.75],
+        [29.25, 48.17],
+        [28.75, 48.33],
+        [28.25, 48.58],
+        [27.83, 48.83],
+        [27.42, 49.25],
+        [27, 49.67],
+        [26.67, 50.08],
+        [26.25, 50.25],
+        [25.83, 50.17],
+        [25.42, 50.5],
+        [25.17, 50.67],
+        [25.58, 51],
+        [26, 51.08],
+        [26.08, 51.33],
+        [25.75, 51.58],
+        [25.75, 51.58],
+        [25.25, 51.67],
+        [24.75, 51.58],
+        [24.25, 51.25],
+        [24.25, 51.67],
+        [24, 51.83],
+        [23.92, 52.42],
+        [24.17, 52.75],
+        [24.17, 53.25],
+        [24.08, 53.83],
+        [24.17, 54.25],
+        [24.58, 54.5],
+        [24.92, 55],
+        [25.25, 55.33],
+        [25.58, 55.67],
+        [25.83, 56.08],
+        [26.17, 56.25],
+        [26.08, 56.5],
+        [25.83, 56.42],
+        [25.33, 56.42],
+        [24.75, 56.42],
+        [24.33, 56.83],
+        [24, 57.25],
+        [23.75, 57.75],
+        [23.67, 58.25],
+        [23.5, 58.83],
+        [23.08, 59.08],
+        [22.67, 59.42],
+        [22.42, 59.83],
+        [21.92, 59.58],
+        [21.42, 59.33],
+        [21.42, 59.33],
+        [21.17, 59],
+        [20.83, 58.75],
+        [20.42, 58.5],
+        [20.42, 58.08],
+        [20, 57.83],
+        [19.5, 57.75],
+        [19.08, 57.92],
+        [18.92, 57.5],
+        [18.83, 57.08],
+        [18.58, 56.75],
+        [18.08, 56.58],
+        [17.92, 56.33],
+        [17.83, 55.92],
+        [17.67, 55.42],
+        [17.17, 55.25],
+        [16.92, 54.83],
+        [17, 54.42],
+        [16.92, 53.92],
+        [16.67, 53.42],
+        [16.5, 52.92],
+        [16.25, 52.42],
+        [15.92, 52.25],
+        [15.58, 52.25],
+        [15.42, 51.75],
+        [15.25, 51.25],
+        [15.08, 50.75],
+        [14.92, 50.25],
+        [14.75, 49.67],
+        [14.5, 49.17],
+        [14.08, 48.83],
+        [14.08, 48.83],
+        [13.92, 48.33],
+        [13.92, 47.83],
+        [13.58, 47.42],
+        [13.33, 47.08],
+        [13.25, 46.58],
+        [13.33, 46.08],
+        [13.33, 45.67],
+        [13, 45.42],
+        [12.83, 44.92],
+        [12.75, 44.42],
+        [12.67, 43.92],
+        [12.75, 43.5],
+        [13.25, 43.17],
+        [13.75, 43.25],
+        [14, 43.08],
+        [14.58, 42.92],
+        [15.17, 42.75],
+        [15.67, 42.67],
+        [16.08, 42.75],
+        [16.5, 42.67],
+        [17, 42.42],
+        [17.5, 42.08],
+        [17.75, 41.75],
+        [18.17, 41.5],
+        [18.67, 41.25],
+        [19.17, 41],
+        [19.67, 40.75],
+        [20.08, 40.33],
+        [20.25, 39.67],
+        [20.58, 39.5],
+        [20.58, 39.5],
+        [20.92, 39.17],
+        [21.5, 39.08],
+        [21.92, 39],
+        [22.25, 39.08],
+        [22.75, 39],
+        [23.25, 38.75],
+        [23.75, 38.42],
+        [24.08, 38],
+        [24.33, 37.5],
+        [24.83, 37.25],
+        [25.33, 37.08],
+        [25.83, 36.75],
+        [26.17, 36.42],
+        [26.67, 36.08],
+        [27.17, 35.75],
+        [27.58, 35.5],
+        [28, 35.17],
+        [28, 34.67],
+        [28.5, 34.83],
+        [29, 35],
+        [29.5, 35],
+        [28.92, 34.67],
+        [28.33, 34.42],
+        [27.92, 34.42],
+        [27.75, 34.17],
+        [28.08, 33.75],
+        [28.42, 33.42],
+        [28.75, 33.25],
+        [29.08, 33],
+        [29.58, 32.75],
+        [29.58, 32.75],
+        [30, 32.58],
+        [np.nan, np.nan],
+        [74.08, 112.83],
+        [74.33, 111.58],
+        [74.5, 112.08],
+        [74.42, 113.33],
+        [74.08, 112.83],
+        [np.nan, np.nan],
+        [40.33, 26.58],
+        [40.33, 27.17],
+        [40.33, 27.75],
+        [40.33, 27.75],
+        [40.33, 28.42],
+        [40.33, 29],
+        [40.58, 28.92],
+        [40.67, 29.42],
+        [41, 28.83],
+        [41, 28.17],
+        [40.92, 27.42],
+        [40.67, 27.08],
+        [40.33, 26.58],
+        [np.nan, np.nan],
+        [14.08, 13.08],
+        [13.75, 13.33],
+        [13.33, 13.5],
+        [13.08, 13.83],
+        [12.75, 13.92],
+        [12.5, 14.17],
+        [12.75, 14.58],
+        [12.92, 15.08],
+        [13.42, 15.25],
+        [13.42, 14.75],
+        [13.5, 14.17],
+        [13.83, 14.17],
+        [14.17, 13.92],
+        [14.25, 13.42],
+        [14.08, 13.08],
+        [np.nan, np.nan],
+        [-2.08, 31.67],
+        [-2.75, 31.83],
+        [-2.33, 32.25],
+        [-2.5, 32.75],
+        [-2.5, 33.42],
+        [-2.17, 33.83],
+        [-2.08, 33.25],
+        [-1.75, 33.58],
+        [-1.33, 33.92],
+        [-0.75, 34.08],
+        [-0.42, 34.25],
+        [0.08, 34],
+        [0.25, 33.5],
+        [0.25, 33],
+        [0.17, 32.42],
+        [-0.17, 31.83],
+        [-0.75, 31.67],
+        [-1.17, 31.83],
+        [-1.58, 31.75],
+        [-2.08, 31.67],
+        [np.nan, np.nan],
+        [-6, 29.25],
+        [-6.5, 29.5],
+        [-7, 29.83],
+        [-7.42, 30.33],
+        [-8.08, 30.58],
+        [-8.58, 30.5],
+        [-8.75, 31.08],
+        [-8.25, 31],
+        [-7.75, 30.75],
+        [-7.17, 30.5],
+        [-6.83, 30.58],
+        [-6.5, 30.17],
+        [-6.41753, 30.0649],
+        [-6.33504, 29.9599],
+        [-6.25253, 29.8549],
+        [-6.17, 29.75],
+        [-6.06501, 29.8125],
+        [-5.96001, 29.875],
+        [-5.85501, 29.9375],
+        [-5.75, 30],
+        [-5.605, 29.9575],
+        [-5.46001, 29.915],
+        [-5.315, 29.8725],
+        [-5.17, 29.83],
+        [-4.58, 29.67],
+        [-4, 29.42],
+        [-3.33, 29.33],
+        [-4, 29.08],
+        [-4.5, 29.25],
+        [-5, 29.08],
+        [-5.58, 29.33],
+        [-6, 29.25],
+        [np.nan, np.nan],
+        [-12.17, 34.08],
+        [-12.58, 34.17],
+        [-13, 34.33],
+        [-13.42, 34.33],
+        [-13.75, 34.67],
+        [-14.17, 34.75],
+        [-14.08, 35.08],
+        [-14.5, 35.33],
+        [-13.83, 35.25],
+        [-13.42, 34.92],
+        [-12.83, 34.83],
+        [-12.25, 34.83],
+        [-12.105, 34.8726],
+        [-11.96, 34.9151],
+        [-11.815, 34.9576],
+        [-11.67, 35],
+        [-11.5225, 34.9174],
+        [-11.375, 34.8348],
+        [-11.2275, 34.7524],
+        [-11.08, 34.67],
+        [-10.58, 34.58],
+        [-9.92, 34.5],
+        [-9.58, 34.08],
+        [-9.83, 34],
+        [-10.83, 34.25],
+        [-11, 34.25],
+        [-11.75, 34.42],
+        [-12.17, 34.08],
+        [np.nan, np.nan],
+        [42.5, 27.5],
+        [42.08, 27.92],
+        [41.67, 28.08],
+        [41.33, 28.58],
+        [41.17, 29.17],
+        [41.08, 29.83],
+        [41.17, 30.5],
+        [41.08, 31.08],
+        [41.33, 31.58],
+        [41.58, 32.08],
+        [41.83, 32.58],
+        [42, 33.25],
+        [41.92, 33.83],
+        [41.92, 34.5],
+        [42, 35],
+        [41.67, 35.33],
+        [41.67, 36],
+        [41.25, 36.33],
+        [41.25, 36.75],
+        [41, 37.25],
+        [41.08, 37.67],
+        [40.92, 38.17],
+        [41, 38.75],
+        [41.08, 39.33],
+        [41, 39.92],
+        [41.08, 40.5],
+        [41.42, 41.08],
+        [41.67, 41.58],
+        [42, 41.67],
+        [42.33, 41.42],
+        [42.33, 41.42],
+        [42.75, 41.25],
+        [42.92, 41],
+        [43.17, 40.33],
+        [43.42, 39.83],
+        [43.67, 39.5],
+        [44.08, 39],
+        [44.33, 38.5],
+        [44.42, 38],
+        [44.58, 37.67],
+        [44.75, 37.25],
+        [45.08, 37],
+        [45.08, 36.67],
+        [45, 36.08],
+        [45.08, 35.58],
+        [44.83, 35.08],
+        [44.75, 34.58],
+        [44.5, 34.25],
+        [44.33, 33.75],
+        [44.58, 33.42],
+        [45, 33.58],
+        [45.17, 33.25],
+        [45.33, 32.67],
+        [45.75, 33.08],
+        [45.92, 33.75],
+        [46.17, 33.17],
+        [46, 32.58],
+        [46.25, 31.83],
+        [46.58, 32.08],
+        [46.58, 31.42],
+        [46.58, 30.83],
+        [46.58, 30.83],
+        [46.17, 30.58],
+        [45.83, 30.17],
+        [45.67, 29.58],
+        [45.17, 29.67],
+        [44.83, 29.5],
+        [44.67, 29],
+        [44.33, 28.67],
+        [43.92, 28.67],
+        [43.42, 28.58],
+        [43.33, 28],
+        [42.83, 27.92],
+        [42.5, 27.5],
+        [np.nan, np.nan],
+        [45.92, 34.42],
+        [45.75, 34.75],
+        [45.42, 35],
+        [45.25, 35.5],
+        [45.42, 36.08],
+        [45.42, 36.67],
+        [45.33, 37.33],
+        [45.83, 37.75],
+        [46.25, 38.25],
+        [46.42, 37.92],
+        [46.67, 37.67],
+        [46.67, 38.17],
+        [47, 38.75],
+        [47.08, 39.33],
+        [47.25, 39],
+        [47.17, 38.42],
+        [47.08, 37.58],
+        [46.75, 36.83],
+        [46.67, 36.08],
+        [46.42, 35.42],
+        [46.08, 35],
+        [45.92, 34.42],
+        [np.nan, np.nan],
+        [44.75, 46.67],
+        [44.42, 46.67],
+        [44.25, 47.08],
+        [43.75, 47.42],
+        [43.42, 47.42],
+        [43, 47.42],
+        [42.5, 47.83],
+        [42.08, 48.25],
+        [41.83, 48.67],
+        [41.42, 49],
+        [41, 49.17],
+        [40.58, 49.67],
+        [40.5403, 49.8153],
+        [40.5004, 49.9603],
+        [40.4603, 50.1053],
+        [40.42, 50.25],
+        [40.3977, 50.1249],
+        [40.3753, 49.9998],
+        [40.3527, 49.8749],
+        [40.33, 49.75],
+        [40, 49.42],
+        [39.5, 49.25],
+        [39.17, 49.17],
+        [39.17, 48.75],
+        [38.58, 48.83],
+        [38.08, 48.92],
+        [37.58, 49],
+        [37.42, 49.5],
+        [37.33, 50.17],
+        [37.08, 50.33],
+        [36.75, 51],
+        [36.58, 51.58],
+        [36.75, 52.42],
+        [36.92, 53.17],
+        [36.83, 53.92],
+        [37.17, 54],
+        [37.17, 54],
+        [37.83, 53.75],
+        [38.5, 53.75],
+        [39.08, 54],
+        [39.17, 53.58],
+        [39.58, 53.42],
+        [40, 53.5],
+        [40, 52.75],
+        [40.33, 52.67],
+        [40.83, 52.92],
+        [40.67, 53.5],
+        [40.67, 54.17],
+        [41, 54.75],
+        [41.33, 54.33],
+        [41.67, 53.92],
+        [42.08, 53.67],
+        [42, 53],
+        [41.67, 52.67],
+        [41.25, 52.75],
+        [41.75, 52.42],
+        [41.855, 52.3976],
+        [41.96, 52.3751],
+        [42.065, 52.3526],
+        [42.17, 52.33],
+        [42.2726, 52.4146],
+        [42.3751, 52.4994],
+        [42.4776, 52.5846],
+        [42.58, 52.67],
+        [42.6425, 52.6276],
+        [42.705, 52.5852],
+        [42.7675, 52.5426],
+        [42.83, 52.5],
+        [42.83, 51.83],
+        [43.17, 51.33],
+        [43.67, 51.17],
+        [44.17, 50.75],
+        [44.33, 50.17],
+        [44.58, 50.25],
+        [44.58, 50.92],
+        [44.5, 51.42],
+        [44.5, 51.42],
+        [45, 51.17],
+        [45.0828, 51.3144],
+        [45.1654, 51.4592],
+        [45.2478, 51.6044],
+        [45.33, 51.75],
+        [45.353, 51.9373],
+        [45.3756, 52.1247],
+        [45.398, 52.3123],
+        [45.42, 52.5],
+        [45.17, 53.08],
+        [45.25, 53.67],
+        [45.25, 54.25],
+        [45.5, 53.92],
+        [45.92, 53.83],
+        [46.42, 53.67],
+        [46.83, 53.17],
+        [47.17, 52.58],
+        [47.17, 52.08],
+        [47.17, 51.42],
+        [47.25, 50.92],
+        [46.83, 50.17],
+        [46.75, 49.5],
+        [46.58, 48.92],
+        [46.33, 49],
+        [46.25, 48.5],
+        [45.92, 48.25],
+        [46.08, 47.58],
+        [45.67, 47.33],
+        [45.17, 47],
+        [44.75, 46.67],
+        [np.nan, np.nan],
+        [45, 58.17],
+        [44.5, 58.17],
+        [44.25, 58.33],
+        [43.67, 58.33],
+        [43.67, 59],
+        [43.67, 59.67],
+        [43.5, 59.83],
+        [43.67, 60.5],
+        [44.17, 61.08],
+        [44.67, 61.08],
+        [44.75, 61.5],
+        [45, 61.83],
+        [45.33, 61.5],
+        [45.75, 61],
+        [46, 61],
+        [46.42, 61.33],
+        [46.75, 61.67],
+        [46.5, 61],
+        [46.67, 60.75],
+        [46.5, 60.08],
+        [46.17, 60.08],
+        [46.33, 59.75],
+        [45.92, 59.5],
+        [45.92, 59],
+        [45.83, 58.67],
+        [45.42, 58.58],
+        [45, 58.17],
+        [np.nan, np.nan],
+        [45.58, 73.42],
+        [45.25, 73.83],
+        [44.92, 74.08],
+        [45.67, 74.25],
+        [46, 74.17],
+        [46.17, 74.75],
+        [46.42, 75.17],
+        [46.58, 76],
+        [46.42, 76.83],
+        [46.48, 77.33],
+        [46.33, 78],
+        [46.42, 78.75],
+        [46.75, 79.25],
+        [46.75, 78.75],
+        [46.58, 78.33],
+        [46.67, 77.83],
+        [46.58, 77.33],
+        [46.67, 76.83],
+        [46.75, 76.08],
+        [46.67, 75.25],
+        [46.75, 74.75],
+        [46.42, 74.17],
+        [46.17, 73.67],
+        [45.58, 73.42],
+        [np.nan, np.nan],
+        [51.58, 103.58],
+        [51.33, 104.5],
+        [51.5, 105.25],
+        [51.67, 105.92],
+        [52.17, 106.25],
+        [52.5, 107],
+        [52.67, 107.83],
+        [53, 108.33],
+        [53.5, 109],
+        [54, 109.42],
+        [54.5, 109.5],
+        [55.08, 109.67],
+        [55.58, 109.92],
+        [55.75, 109.5],
+        [55.5, 109.25],
+        [55.17, 109.17],
+        [54.75, 108.83],
+        [54.33, 108.5],
+        [53.92, 108.17],
+        [53.5, 107.58],
+        [53.08, 107],
+        [52.75, 106.58],
+        [52.5, 106.08],
+        [52.17, 105.67],
+        [51.83, 105.25],
+        [51.75, 104.5],
+        [51.58, 103.58],
+        [np.nan, np.nan],
+        [61.08, 30],
+        [60.75, 30.58],
+        [60.33, 30.92],
+        [59.92, 31.08],
+        [59.92, 31.5],
+        [60.17, 31.75],
+        [60.17, 32.5],
+        [60.5, 32.83],
+        [60.83, 32.83],
+        [61.17, 32.5],
+        [61.33, 31.83],
+        [61.58, 31.42],
+        [61.58, 30.75],
+        [61.33, 30.17],
+        [61.08, 30],
+        [np.nan, np.nan],
+        [61.75, 34.5],
+        [61.5, 34.83],
+        [61.33, 35.5],
+        [60.92, 35.5],
+        [60.92, 36],
+        [61.08, 36.42],
+        [61.42, 36.42],
+        [61.67, 36],
+        [62, 35.75],
+        [62.42, 35.83],
+        [62.67, 35.25],
+        [62.83, 34.5],
+        [62.58, 34.83],
+        [62.5, 35.33],
+        [62.17, 35.33],
+        [62.17, 34.67],
+        [61.75, 34.5],
+        [np.nan, np.nan],
+        [-21.92, 43.25],
+        [-21.33, 43.58],
+        [-20.92, 43.92],
+        [-20.5, 44.08],
+        [-20, 44.42],
+        [-19.58, 44.5],
+        [-19, 44.25],
+        [-18.58, 44.25],
+        [-18, 44],
+        [-18, 44],
+        [-17.42, 43.92],
+        [-16.92, 44.25],
+        [-16.17, 44.5],
+        [-16.17, 44.92],
+        [-15.92, 45.42],
+        [-15.75, 45.92],
+        [-15.5, 46.42],
+        [-15.25, 46.83],
+        [-14.75, 47.25],
+        [-14.75, 47.67],
+        [-14.33, 47.58],
+        [-14.08, 47.92],
+        [-13.58, 47.83],
+        [-13.5, 48.33],
+        [-13.33, 48.75],
+        [-12.92, 48.83],
+        [-12.42, 48.83],
+        [-12, 49.25],
+        [-12.5, 49.58],
+        [-13, 49.83],
+        [-13.58, 49.92],
+        [-14.17, 50.17],
+        [-14.92, 50.33],
+        [-15.42, 50.42],
+        [-15.92, 50.08],
+        [-15.5, 49.67],
+        [-16.33, 49.75],
+        [-16.75, 49.67],
+        [-17, 49.42],
+        [-17.42, 49.42],
+        [-17.42, 49.42],
+        [-18, 49.33],
+        [-18.5, 49.25],
+        [-19.08, 49],
+        [-19.58, 48.83],
+        [-20.08, 48.67],
+        [-20.5, 48.5],
+        [-20.92, 48.42],
+        [-21.33, 48.25],
+        [-21.75, 48.08],
+        [-22.17, 47.92],
+        [-22.58, 47.83],
+        [-23, 47.75],
+        [-23.42, 47.67],
+        [-23.75, 47.5],
+        [-24.25, 47.33],
+        [-24.67, 47.17],
+        [-25.17, 46.83],
+        [-25.08, 46.42],
+        [-25.25, 45.92],
+        [-25.5, 45.5],
+        [-25.58, 45],
+        [-25.33, 44.58],
+        [-25, 44.17],
+        [-24.5, 43.75],
+        [-23.92, 43.67],
+        [-23.25, 43.58],
+        [-22.83, 43.33],
+        [-22.33, 43.25],
+        [-21.92, 43.25],
+        [np.nan, np.nan],
+        [-21, 55.17],
+        [-20.92, 55.58],
+        [-21.17, 55.83],
+        [-21.33, 55.75],
+        [-21.33, 55.33],
+        [-21, 55.17],
+        [np.nan, np.nan],
+        [-20.5, 57.33],
+        [-20, 57.5],
+        [-20.17, 57.75],
+        [-20.5, 57.75],
+        [-20.5, 57.33],
+        [np.nan, np.nan],
+        [12.42, 53.33],
+        [12.67, 53.67],
+        [12.58, 54.17],
+        [12.5, 54.58],
+        [12.25, 54.08],
+        [12.25, 53.67],
+        [12.42, 53.33],
+        [np.nan, np.nan],
+        [-48.83, 68.83],
+        [-48.67, 69],
+        [-49, 69.33],
+        [-49.25, 69.67],
+        [-49.17, 70],
+        [-49.08, 70.58],
+        [-49.42, 70.42],
+        [-49.42, 70],
+        [-49.67, 69.83],
+        [-49.5, 69.5],
+        [-49.67, 68.92],
+        [-49.25, 69.17],
+        [-48.83, 68.83],
+        [np.nan, np.nan],
+        [11.5628, 92.6807],
+        [11.8212, 92.5312],
+        [12.7377, 92.7533],
+        [12.7509, 92.9143],
+        [12.6122, 92.9652],
+        [11.5628, 92.6807],
+        [np.nan, np.nan],
+        [12.997, 92.8677],
+        [13.1611, 92.8272],
+        [13.4075, 92.8832],
+        [13.49, 92.9795],
+        [13.4714, 93.0646],
+        [13.1872, 93.0769],
+        [12.997, 92.8677],
+        [np.nan, np.nan],
+        [2.36635, 96.4071],
+        [2.51322, 96.0803],
+        [2.71893, 95.8091],
+        [2.85556, 95.848],
+        [2.88239, 95.974],
+        [2.6184, 96.2558],
+        [2.36635, 96.4071],
+        [np.nan, np.nan],
+        [1.33, 97.25],
+        [1.5, 97.5],
+        [1, 98],
+        [0.58, 98],
+        [1, 97.58],
+        [1.33, 97.25],
+        [np.nan, np.nan],
+        [-1, 98.75],
+        [-0.92, 99],
+        [-1.67, 99.42],
+        [-1.75, 99.08],
+        [-1.5, 98.83],
+        [-1, 98.75],
+        [np.nan, np.nan],
+        [8.08, 79.75],
+        [8.5, 79.83],
+        [9, 79.92],
+        [9.42, 80.17],
+        [9.83, 80],
+        [9.5, 80.58],
+        [9, 80.92],
+        [8.5, 81.25],
+        [8, 81.5],
+        [7.58, 81.83],
+        [7, 81.83],
+        [6.5, 81.67],
+        [6.17, 81.25],
+        [6, 80.67],
+        [6, 80.25],
+        [6.42, 80],
+        [7.08, 79.83],
+        [7.5, 79.75],
+        [8.08, 79.75],
+        [np.nan, np.nan],
+        [19.33, 108.67],
+        [19.58, 109.08],
+        [19.92, 109.58],
+        [20, 110],
+        [20, 110.5],
+        [20, 111],
+        [19.67, 111],
+        [19.33, 110.67],
+        [18.83, 110.5],
+        [18.5, 110.17],
+        [18.25, 109.67],
+        [18.25, 109.25],
+        [18.5, 108.75],
+        [18.92, 108.67],
+        [19.33, 108.67],
+        [np.nan, np.nan],
+        [23.67, 120.17],
+        [24.17, 120.5],
+        [24.58, 120.75],
+        [25, 121.08],
+        [25.25, 121.58],
+        [25.08, 121.92],
+        [24.58, 121.92],
+        [24.08, 121.67],
+        [23.5, 121.5],
+        [23, 121.33],
+        [22.58, 121],
+        [22, 120.83],
+        [22.42, 120.67],
+        [22.58, 120.33],
+        [23.17, 120.17],
+        [23.67, 120.17],
+        [np.nan, np.nan],
+        [33.25, 129.5],
+        [33.5, 130],
+        [33.83, 130.42],
+        [33.92, 130.92],
+        [33.67, 131.08],
+        [33.67, 131.58],
+        [33.25, 131.67],
+        [32.83, 131.92],
+        [32.42, 131.67],
+        [31.92, 131.42],
+        [31.42, 131.33],
+        [31.08, 130.75],
+        [31.25, 130.17],
+        [31.67, 130.17],
+        [32.08, 130.17],
+        [32.33, 130.5],
+        [32.75, 130.5],
+        [33.08, 130.25],
+        [32.75, 130.17],
+        [32.75, 129.75],
+        [33.25, 129.5],
+        [np.nan, np.nan],
+        [33.42, 132.25],
+        [33.67, 132.67],
+        [34, 132.83],
+        [33.92, 133.33],
+        [34.25, 133.58],
+        [34.33, 134.08],
+        [34.17, 134.58],
+        [33.83, 134.67],
+        [33.58, 134.33],
+        [33.25, 134.08],
+        [33.5, 133.75],
+        [33.33, 133.25],
+        [33.08, 133.08],
+        [32.75, 132.92],
+        [32.92, 132.42],
+        [33.42, 132.25],
+        [np.nan, np.nan],
+        [34.33, 130.92],
+        [34.5, 131.42],
+        [34.75, 131.83],
+        [35.08, 132.33],
+        [35.5, 132.75],
+        [35.5, 133.25],
+        [35.58, 134],
+        [35.67, 134.67],
+        [35.75, 135.25],
+        [35.5, 135.67],
+        [35.67, 136],
+        [36.08, 136],
+        [36.42, 136.33],
+        [36.83, 136.67],
+        [37.25, 136.75],
+        [37.5, 137.17],
+        [37.08, 137],
+        [36.75, 137],
+        [37, 137.58],
+        [37.17, 138.17],
+        [37.17, 138.17],
+        [37.42, 138.58],
+        [37.83, 138.83],
+        [38.08, 139.33],
+        [38.58, 139.5],
+        [39, 139.83],
+        [39.42, 140],
+        [39.92, 140],
+        [40.33, 140],
+        [40.67, 140],
+        [41.17, 140.33],
+        [40.92, 140.67],
+        [40.92, 141.08],
+        [41.17, 141.08],
+        [41.17, 140.75],
+        [41.5, 140.83],
+        [41.33, 141.42],
+        [41, 141.33],
+        [40.58, 141.42],
+        [40.17, 141.75],
+        [39.67, 141.92],
+        [39.08, 141.83],
+        [38.75, 141.5],
+        [38.33, 141.5],
+        [38.33, 141.08],
+        [38.08, 140.92],
+        [37.58, 141],
+        [37, 140.92],
+        [36.75, 140.67],
+        [36.17, 140.58],
+        [35.75, 140.75],
+        [35.75, 140.75],
+        [35.5, 140.42],
+        [35.17, 140.33],
+        [34.92, 139.75],
+        [35.5, 139.83],
+        [35.25, 139.58],
+        [35.25, 139.08],
+        [34.58, 138.83],
+        [35.08, 138.67],
+        [34.58, 138.08],
+        [34.58, 137.25],
+        [35, 136.75],
+        [34.67, 136.5],
+        [34.33, 136.75],
+        [33.92, 136.17],
+        [33.42, 135.75],
+        [33.5, 135.42],
+        [33.92, 135.17],
+        [34.33, 135.17],
+        [34.75, 135.5],
+        [34.75, 134.92],
+        [34.83, 134.5],
+        [34.58, 133.92],
+        [34.5, 133.5],
+        [34.33, 132.92],
+        [34.25, 132.33],
+        [33.92, 132],
+        [34, 131.5],
+        [33.92, 130.92],
+        [34.33, 130.92],
+        [np.nan, np.nan],
+        [42.58, 139.83],
+        [42.92, 140.42],
+        [43.25, 140.33],
+        [43.17, 140.75],
+        [43.17, 141.25],
+        [43.42, 141.33],
+        [43.75, 141.25],
+        [44, 141.58],
+        [44.33, 141.67],
+        [44.75, 141.75],
+        [45.25, 141.5],
+        [45.5, 141.92],
+        [45.17, 142.33],
+        [44.75, 142.67],
+        [44.75, 142.67],
+        [44.5, 143],
+        [44.17, 143.58],
+        [44, 144.17],
+        [43.92, 144.67],
+        [44.25, 145.33],
+        [43.75, 145],
+        [43.58, 145.25],
+        [43.33, 145.25],
+        [43.42, 145.83],
+        [43.17, 145.33],
+        [42.92, 144.75],
+        [43, 144.17],
+        [42.67, 143.67],
+        [42.33, 143.33],
+        [42, 143.25],
+        [42.25, 142.5],
+        [42.58, 141.83],
+        [42.5, 141.33],
+        [42.33, 140.92],
+        [42.5, 140.67],
+        [42.5, 140.33],
+        [42.25, 140.25],
+        [42.08, 140.67],
+        [41.83, 141.08],
+        [41.67, 140.5],
+        [41.42, 140],
+        [42, 140],
+        [42.25, 139.75],
+        [42.58, 139.83],
+        [np.nan, np.nan],
+        [26.0796, 127.668],
+        [26.3183, 127.656],
+        [26.5633, 127.817],
+        [26.8715, 128.303],
+        [26.8273, 128.34],
+        [26.7382, 128.348],
+        [26.419, 127.962],
+        [26.1225, 127.793],
+        [26.0796, 127.668],
+        [np.nan, np.nan],
+        [28.0781, 129.296],
+        [28.1158, 129.243],
+        [28.2665, 129.232],
+        [28.3733, 129.293],
+        [28.4989, 129.525],
+        [28.4427, 129.726],
+        [28.0781, 129.296],
+        [np.nan, np.nan],
+        [43.9565, 145.442],
+        [44.5231, 146.07],
+        [44.4503, 146.395],
+        [43.9565, 145.442],
+        [np.nan, np.nan],
+        [44.42, 146.92],
+        [45, 147.42],
+        [45.33, 147.92],
+        [45.25, 148.33],
+        [45.5, 148.83],
+        [45.08, 148.17],
+        [44.75, 147.5],
+        [44.42, 146.92],
+        [np.nan, np.nan],
+        [45.67, 149.5],
+        [46.08, 150],
+        [46.25, 150.5],
+        [45.75, 149.83],
+        [45.67, 149.5],
+        [np.nan, np.nan],
+        [50.27, 155.17],
+        [50.42, 155.67],
+        [50.75, 156.08],
+        [50.5, 156.08],
+        [50.2, 155.83],
+        [50, 155.17],
+        [50.27, 155.17],
+        [np.nan, np.nan],
+        [54.83, 137.25],
+        [55.17, 137.5],
+        [55, 138.08],
+        [54.58, 137.58],
+        [54.83, 137.25],
+        [np.nan, np.nan],
+        [58.5, 163.33],
+        [59, 163.67],
+        [59.17, 164.25],
+        [58.92, 164.42],
+        [58.5, 163.33],
+        [np.nan, np.nan],
+        [53.33, 141.75],
+        [53.58, 142.25],
+        [53.6425, 142.312],
+        [53.7051, 142.375],
+        [53.7675, 142.437],
+        [53.83, 142.5],
+        [53.935, 142.438],
+        [54.0401, 142.376],
+        [54.145, 142.313],
+        [54.25, 142.25],
+        [54.2701, 142.355],
+        [54.2902, 142.46],
+        [54.3101, 142.565],
+        [54.33, 142.67],
+        [54, 142.92],
+        [53.5, 143],
+        [53, 143.17],
+        [52.5, 143.17],
+        [52, 143.08],
+        [51.5, 143.33],
+        [51, 143.5],
+        [50.5, 143.67],
+        [50, 143.92],
+        [49.5, 144.17],
+        [49.08, 144.33],
+        [49.33, 143.75],
+        [49.33, 143.25],
+        [49.33, 143.25],
+        [49.08, 142.92],
+        [48.75, 142.83],
+        [48.33, 142.58],
+        [47.83, 142.5],
+        [47.5, 142.67],
+        [47.25, 143],
+        [46.92, 143.08],
+        [46.75, 143.42],
+        [46.25, 143.42],
+        [46.58, 143],
+        [46.67, 142.58],
+        [46.42, 142.25],
+        [45.92, 142],
+        [46.58, 141.75],
+        [47, 142],
+        [47.58, 142],
+        [48, 142.17],
+        [48.5, 142],
+        [48.75, 141.83],
+        [49.08, 142],
+        [49.5, 142.08],
+        [50, 142.08],
+        [50.5, 142],
+        [51, 142.08],
+        [51.42, 142],
+        [51.75, 141.67],
+        [52.25, 141.67],
+        [52.75, 141.83],
+        [53.33, 141.75],
+        [np.nan, np.nan],
+        [71, 180],
+        [70.83, 178.83],
+        [71.12, 178.67],
+        [71.53, 180],
+        [71.53, 181.75],
+        [71.4403, 181.96],
+        [71.3505, 182.169],
+        [71.2603, 182.375],
+        [71.17, 182.58],
+        [71.104, 182.138],
+        [71.0371, 181.699],
+        [70.969, 181.263],
+        [70.9, 180.83],
+        [71, 180],
+        [np.nan, np.nan],
+        [73.5, 140.58],
+        [73.83, 141],
+        [73.92, 142.25],
+        [73.5, 143.5],
+        [73.17, 143.5],
+        [73.25, 141.58],
+        [73.5, 140.58],
+        [np.nan, np.nan],
+        [74.25, 140.17],
+        [74.25, 141],
+        [74, 141],
+        [73.92, 140.33],
+        [74.25, 140.17],
+        [np.nan, np.nan],
+        [75.58, 146.5],
+        [75.42, 147.33],
+        [75.33, 149.25],
+        [75.17, 151],
+        [74.75, 150.5],
+        [74.75, 149.25],
+        [75.08, 147.25],
+        [75.58, 146.5],
+        [np.nan, np.nan],
+        [75.25, 137.17],
+        [75.92, 137.5],
+        [76.17, 139],
+        [75.75, 141],
+        [76.17, 142],
+        [75.83, 143.25],
+        [75.83, 144],
+        [75.67, 145],
+        [75.42, 145],
+        [75.08, 144],
+        [74.83, 142.83],
+        [75, 142],
+        [74.83, 140.5],
+        [74.67, 139.25],
+        [74.75, 138.08],
+        [75.25, 137.17],
+        [np.nan, np.nan],
+        [77.92, 99.33],
+        [78.33, 99.83],
+        [78.83, 100.58],
+        [79.25, 101.25],
+        [79.42, 102.33],
+        [79.17, 103.92],
+        [78.83, 105],
+        [78.33, 105],
+        [78.17, 103.17],
+        [78.17, 101],
+        [77.92, 99.33],
+        [np.nan, np.nan],
+        [80.08, 91.17],
+        [80.5, 92.67],
+        [80.92, 93.17],
+        [81.25, 95.58],
+        [81, 96.42],
+        [80.9378, 96.6955],
+        [80.8754, 96.9673],
+        [80.8128, 97.2355],
+        [80.75, 97.5],
+        [80.6876, 97.3725],
+        [80.6251, 97.2467],
+        [80.5626, 97.1225],
+        [80.5, 97],
+        [80.4176, 97.1487],
+        [80.3351, 97.2949],
+        [80.2526, 97.4386],
+        [80.17, 97.58],
+        [80, 99.25],
+        [79.9177, 99.4856],
+        [79.8353, 99.7174],
+        [79.7527, 99.9455],
+        [79.67, 100.17],
+        [79.5651, 99.9975],
+        [79.4602, 99.8284],
+        [79.3551, 99.6626],
+        [79.25, 99.5],
+        [78.83, 99.83],
+        [78.75, 98.33],
+        [78.92, 96.75],
+        [79.08, 94.67],
+        [79.5, 93.83],
+        [79.67, 91.83],
+        [80.08, 91.17],
+        [np.nan, np.nan],
+        [71.58, 51.67],
+        [71.705, 51.67],
+        [71.83, 51.67],
+        [71.955, 51.67],
+        [72.08, 51.67],
+        [72.1431, 51.9373],
+        [72.2057, 52.2063],
+        [72.2681, 52.4772],
+        [72.33, 52.75],
+        [72.415, 52.6884],
+        [72.5, 52.6262],
+        [72.585, 52.5634],
+        [72.67, 52.5],
+        [72.7013, 52.5456],
+        [72.7326, 52.5914],
+        [72.764, 52.6374],
+        [72.7953, 52.6835],
+        [72.8265, 52.7298],
+        [72.8578, 52.7763],
+        [72.8891, 52.8229],
+        [72.9203, 52.8697],
+        [73.0453, 53.0585],
+        [73.17, 53.25],
+        [73.233, 53.5171],
+        [73.2957, 53.7861],
+        [73.358, 54.0571],
+        [73.42, 54.33],
+        [73.5026, 54.2068],
+        [73.5851, 54.0824],
+        [73.6676, 53.9568],
+        [73.75, 53.83],
+        [74.17, 54.92],
+        [74.75, 55.75],
+        [75.08, 55.75],
+        [75.33, 57.5],
+        [75.33, 57.5],
+        [75.58, 58.17],
+        [75.92, 59.25],
+        [76.25, 61.17],
+        [76.25, 63.17],
+        [76.42, 65.17],
+        [76.75, 66],
+        [77, 67.75],
+        [76.83, 69.08],
+        [76.33, 68.83],
+        [76.08, 67.25],
+        [75.83, 65.5],
+        [75.67, 63.83],
+        [75.33, 62.25],
+        [75, 60.75],
+        [74.58, 59.83],
+        [74.17, 58.67],
+        [73.75, 57.83],
+        [73.33, 57],
+        [72.92, 56.17],
+        [72.5, 55.58],
+        [72, 55.5],
+        [71.5, 55.75],
+        [71.08, 56.33],
+        [70.9984, 56.6692],
+        [70.9162, 57.0056],
+        [70.8334, 57.3392],
+        [70.75, 57.67],
+        [70.7078, 57.4813],
+        [70.6654, 57.2934],
+        [70.6228, 57.1063],
+        [70.58, 56.92],
+        [70.67, 55.33],
+        [70.83, 53.83],
+        [70.9155, 53.5832],
+        [71.0007, 53.3343],
+        [71.0855, 53.0832],
+        [71.17, 52.83],
+        [71.2732, 52.5446],
+        [71.3759, 52.2562],
+        [71.4782, 51.9646],
+        [71.58, 51.67],
+        [np.nan, np.nan],
+        [68.75, 48.75],
+        [69.25, 48.5],
+        [69.58, 49.17],
+        [69.25, 50.33],
+        [68.92, 50],
+        [68.75, 48.75],
+        [np.nan, np.nan],
+        [80.6667, 63.2489],
+        [80.6746, 62.948],
+        [80.8487, 63.145],
+        [80.938, 63.3672],
+        [81.059, 64.3083],
+        [81.2687, 64.7424],
+        [81.1606, 65.142],
+        [81.0427, 65.3646],
+        [80.894, 65.2347],
+        [80.774, 64.8409],
+        [80.6667, 63.2489],
+        [np.nan, np.nan],
+        [80.3915, 59.6481],
+        [80.7021, 59.4564],
+        [80.8247, 59.5796],
+        [80.8689, 59.7898],
+        [80.8001, 60.4064],
+        [80.8087, 61.3671],
+        [80.8967, 61.9936],
+        [80.67, 62.2174],
+        [80.5571, 61.8584],
+        [80.4004, 61.2053],
+        [80.4883, 60.7564],
+        [80.3915, 59.6481],
+        [np.nan, np.nan],
+        [79.8721, 56.6394],
+        [79.9258, 56.5423],
+        [79.982, 56.0694],
+        [80.1152, 56.1001],
+        [80.2779, 56.2996],
+        [80.2388, 57.0281],
+        [80.1813, 57.044],
+        [79.9344, 56.926],
+        [79.8721, 56.6394],
+        [np.nan, np.nan],
+        [80.4523, 57.5083],
+        [80.4277, 58.4501],
+        [80.3429, 59.0025],
+        [80.199, 58.6139],
+        [80.0375, 57.7287],
+        [80.1043, 57.6403],
+        [80.4523, 57.5083],
+        [np.nan, np.nan],
+        [80.8, 54.25],
+        [81.03, 54.83],
+        [81.03, 56.5],
+        [81.42, 56.5],
+        [81.75, 58.5],
+        [81.33, 58.83],
+        [81, 57.67],
+        [80.8, 58.5],
+        [80.63, 56.33],
+        [80.8, 54.25],
+        [np.nan, np.nan],
+        [80.25, 53.17],
+        [80.5, 54],
+        [80.4453, 54.2543],
+        [80.3904, 54.5057],
+        [80.3353, 54.7542],
+        [80.28, 55],
+        [80.2734, 54.5415],
+        [80.2662, 54.0836],
+        [80.2584, 53.6264],
+        [80.25, 53.17],
+        [np.nan, np.nan],
+        [80.55, 44.5],
+        [80.9, 47],
+        [80.75, 48],
+        [80.55, 48],
+        [80.78, 50.33],
+        [80.67, 51.17],
+        [80.4, 50],
+        [80.12, 50],
+        [80.05, 48.42],
+        [80.17, 47],
+        [80.42, 47],
+        [80.42, 45.67],
+        [80.55, 44.5],
+        [np.nan, np.nan],
+        [79.75, 11],
+        [79.83, 13.83],
+        [79.67, 15.5],
+        [80.03, 16.33],
+        [79.92, 18],
+        [80.25, 18],
+        [80.5, 20],
+        [80.17, 21],
+        [80.42, 23],
+        [80.25, 24.83],
+        [80.25, 24.83],
+        [80.17, 27],
+        [79.87, 27],
+        [79.42, 25.67],
+        [79.17, 23.83],
+        [79.33, 20.92],
+        [79.7, 18.75],
+        [79.17, 19],
+        [78.83, 21.5],
+        [78.42, 22.17],
+        [78.08, 23.17],
+        [77.75, 24.83],
+        [77.25, 22.67],
+        [77.42, 20.83],
+        [77.92, 21.67],
+        [78.18, 20.67],
+        [78.63, 20.25],
+        [78.42, 19],
+        [78.03, 18.92],
+        [77.5, 18.08],
+        [77, 17.33],
+        [76.5, 17],
+        [77.02, 15.17],
+        [77.5, 14],
+        [77.95, 13.67],
+        [78.0182, 14.0166],
+        [78.0859, 14.3671],
+        [78.1532, 14.7216],
+        [78.22, 15.08],
+        [78.2212, 14.6025],
+        [78.2216, 14.125],
+        [78.2212, 13.6475],
+        [78.22, 13.17],
+        [78.7, 11.67],
+        [79.33, 11],
+        [79.75, 11],
+        [np.nan, np.nan],
+        [62.08, -7.42],
+        [62.3, -7.25],
+        [62.37, -6.33],
+        [62, -6.92],
+        [62.08, -7.42],
+        [np.nan, np.nan],
+        [59.9485, -1.38344],
+        [60.0779, -1.44896],
+        [60.2221, -1.40667],
+        [60.3865, -1.48212],
+        [60.5179, -1.28568],
+        [60.2983, -1.22756],
+        [60.1687, -1.08101],
+        [59.9485, -1.38344],
+        [np.nan, np.nan],
+        [58.8596, -3.0374],
+        [58.9399, -3.28081],
+        [59.0397, -3.4012],
+        [59.1909, -3.33469],
+        [59.2121, -3.15674],
+        [58.9822, -2.92567],
+        [58.8735, -2.96662],
+        [58.8596, -3.0374],
+        [np.nan, np.nan],
+        [57.58, -7.25],
+        [57.83, -7],
+        [58.17, -7],
+        [58.5, -6.17],
+        [58, -6.42],
+        [57.58, -7.25],
+        [np.nan, np.nan],
+        [55.47, 9.75],
+        [55.58, 10.28],
+        [55.37, 10.75],
+        [55.05, 10.7],
+        [55.05, 10.08],
+        [55.47, 9.75],
+        [np.nan, np.nan],
+        [55.7, 11.08],
+        [55.9, 11.75],
+        [56.1, 12.42],
+        [56, 12.4603],
+        [55.9, 12.5004],
+        [55.8, 12.5403],
+        [55.7, 12.58],
+        [55.6426, 12.477],
+        [55.5852, 12.3744],
+        [55.5276, 12.2721],
+        [55.47, 12.17],
+        [55.28, 12.42],
+        [55.13, 11.83],
+        [55.2, 11.25],
+        [55.7, 11.08],
+        [np.nan, np.nan],
+        [54.83, 11],
+        [54.92, 11.58],
+        [54.83, 12.08],
+        [54.67, 11.83],
+        [54.58, 11.33],
+        [54.83, 11],
+        [np.nan, np.nan],
+        [57.5, 18.08],
+        [57.78, 18.42],
+        [57.93, 19.17],
+        [57.7, 18.75],
+        [57.28, 18.75],
+        [57.08, 18.25],
+        [57.5, 18.08],
+        [np.nan, np.nan],
+        [58.33, 21.83],
+        [58.62, 22.33],
+        [58.5, 23.17],
+        [58.3, 22.67],
+        [58.1, 22.17],
+        [58.33, 21.83],
+        [np.nan, np.nan],
+        [58.88, 22.33],
+        [59.08, 22.5],
+        [58.83, 23],
+        [58.72, 22.42],
+        [58.88, 22.33],
+        [np.nan, np.nan],
+        [50.08, -5.58],
+        [50.42, -5],
+        [50.75, -4.5],
+        [51.17, -4.08],
+        [51.17, -3.5],
+        [51.17, -3],
+        [51.58, -2.67],
+        [51.33, -3.33],
+        [51.58, -3.83],
+        [51.67, -4.33],
+        [51.58, -5],
+        [51.6425, -5.04232],
+        [51.705, -5.08477],
+        [51.7675, -5.12732],
+        [51.83, -5.17],
+        [51.8928, -5.02312],
+        [51.9554, -4.87582],
+        [52.0178, -4.72812],
+        [52.08, -4.58],
+        [52.25, -4.08],
+        [52.75, -4.08],
+        [52.75, -4.67],
+        [53.08, -4.33],
+        [53.33, -4.5],
+        [53.25, -3.58],
+        [53.33, -3],
+        [53.75, -3],
+        [54.17, -2.67],
+        [54.17, -3.17],
+        [54.5, -3.58],
+        [54.92, -3.25],
+        [54.75, -4],
+        [54.58, -4.75],
+        [54.6651, -4.83198],
+        [54.7501, -4.91431],
+        [54.8351, -4.99698],
+        [54.92, -5.08],
+        [55.0651, -4.97862],
+        [55.2102, -4.87649],
+        [55.3551, -4.77362],
+        [55.5, -4.67],
+        [55.5826, -4.77185],
+        [55.6652, -4.87414],
+        [55.7476, -4.97685],
+        [55.83, -5.08],
+        [55.83, -5.08],
+        [55.42, -5.58],
+        [55.75, -5.58],
+        [55.75, -6.17],
+        [56.08, -5.5],
+        [56.5, -5.42],
+        [56.33, -6],
+        [56.67, -6],
+        [57.17, -5.58],
+        [57.17, -6.25],
+        [57.42, -6.67],
+        [57.58, -6.33],
+        [57.42, -5.83],
+        [57.75, -5.75],
+        [58.08, -5.33],
+        [58.5, -5],
+        [58.5, -4.08],
+        [58.58, -3.17],
+        [58.33, -3],
+        [58, -3.83],
+        [57.58, -4.17],
+        [57.67, -3.42],
+        [57.67, -2.75],
+        [57.67, -1.92],
+        [57.33, -1.83],
+        [57, -2.08],
+        [56.58, -2.42],
+        [56.25, -2.83],
+        [56, -3.33],
+        [56, -2.67],
+        [55.83, -2],
+        [55.83, -2],
+        [55.5, -1.67],
+        [55, -1.5],
+        [54.58, -1.17],
+        [54.42, -0.5],
+        [54, -0.25],
+        [53.67, -0.08],
+        [53.42, 0.17],
+        [53.08, 0.33],
+        [52.83, 0],
+        [52.67, 0.25],
+        [52.92, 0.58],
+        [52.92, 1],
+        [52.75, 1.58],
+        [52.42, 1.83],
+        [52, 1.58],
+        [51.75, 1],
+        [51.33, 0.58],
+        [51.25, 1.42],
+        [50.83, 0.92],
+        [50.67, 0.08],
+        [50.67, -0.67],
+        [50.75, -1.42],
+        [50.5, -2.08],
+        [50.67, -2.83],
+        [50.58, -3.5],
+        [50.17, -3.67],
+        [50.33, -4.5],
+        [50, -5.08],
+        [50.08, -5.58],
+        [np.nan, np.nan],
+        [52.17, -10.33],
+        [52.17, -9.75],
+        [52.67, -9.5],
+        [53.17, -9],
+        [53.17, -9.5],
+        [53.5, -10],
+        [53.75, -9.5],
+        [53.92, -10],
+        [54.25, -9.75],
+        [54.25, -9.08],
+        [54.25, -8.5],
+        [54.5, -8.17],
+        [54.67, -8.67],
+        [55.08, -8.25],
+        [55.25, -7.5],
+        [55.17, -6.75],
+        [55.08, -6.08],
+        [54.75, -5.75],
+        [54.25, -5.58],
+        [53.92, -6.25],
+        [53.5, -6.08],
+        [53, -6],
+        [52.58, -6.17],
+        [52.17, -6.33],
+        [52.08, -7.25],
+        [51.75, -8],
+        [51.58, -8.75],
+        [51.5, -9.58],
+        [51.75, -10.08],
+        [52.17, -10.33],
+        [np.nan, np.nan],
+        [42.5, 8.67],
+        [42.67, 9.17],
+        [43, 9.42],
+        [42.5, 9.42],
+        [42.17, 9.5],
+        [41.83, 9.33],
+        [41.33, 9.17],
+        [41.75, 8.67],
+        [42.08, 8.58],
+        [42.5, 8.67],
+        [np.nan, np.nan],
+        [40.92, 8.17],
+        [40.83, 8.42],
+        [40.92, 8.75],
+        [41.25, 9.25],
+        [40.83, 9.67],
+        [40.42, 9.75],
+        [40, 9.75],
+        [39.58, 9.67],
+        [39.17, 9.5],
+        [39.17, 9.08],
+        [38.83, 8.75],
+        [39.17, 8.33],
+        [39.67, 8.42],
+        [40.17, 8.42],
+        [40.58, 8.17],
+        [40.92, 8.17],
+        [np.nan, np.nan],
+        [37.92, 12.33],
+        [38.17, 12.75],
+        [38.17, 13.25],
+        [38, 13.67],
+        [38, 14.25],
+        [38.08, 15],
+        [38.25, 15.67],
+        [37.83, 15.33],
+        [37.33, 15.17],
+        [37, 15.33],
+        [36.67, 15.17],
+        [36.75, 14.5],
+        [37.08, 14.17],
+        [37.17, 13.67],
+        [37.5, 13],
+        [37.5, 12.67],
+        [37.92, 12.33],
+        [np.nan, np.nan],
+        [37.75, 21.08],
+        [38.08, 21.33],
+        [38.25, 21.83],
+        [38.08, 22.33],
+        [37.83, 22.83],
+        [37.33, 23.17],
+        [37.42, 22.67],
+        [37, 22.83],
+        [36.42, 23.08],
+        [36.75, 22.67],
+        [36.42, 22.33],
+        [36.75, 22.08],
+        [36.75, 21.67],
+        [37, 21.5],
+        [37.42, 21.58],
+        [37.75, 21.08],
+        [np.nan, np.nan],
+        [35.17, 23.5],
+        [35.58, 23.58],
+        [35.5, 24.17],
+        [35.33, 24.25],
+        [35.42, 24.75],
+        [35.3, 25.17],
+        [35.33, 25.75],
+        [35.08, 25.75],
+        [35.25, 26.25],
+        [34.97, 26.17],
+        [34.93, 25.5],
+        [34.9, 24.83],
+        [35.08, 24.5],
+        [35.17, 24],
+        [35.17, 23.5],
+        [np.nan, np.nan],
+        [35, 32.25],
+        [35.08, 32.75],
+        [35.25, 33],
+        [35.33, 33.42],
+        [35.42, 33.92],
+        [35.58, 34.5],
+        [35.17, 33.92],
+        [34.92, 34.08],
+        [34.92, 33.67],
+        [34.7, 33.5],
+        [34.58, 33],
+        [34.67, 32.42],
+        [35, 32.25],
+        [np.nan, np.nan],
+        [39.58, 2.25],
+        [39.92, 2.92],
+        [39.67, 3.42],
+        [39.27, 3.08],
+        [39.5, 2.73],
+        [39.58, 2.25],
+        [np.nan, np.nan],
+        [36.17, 27.67],
+        [36.45, 28.25],
+        [36.08, 28.08],
+        [35.88, 27.75],
+        [36.17, 27.67],
+        [np.nan, np.nan],
+        [39.0074, 26.4216],
+        [39.048, 26.33],
+        [39.206, 26.2123],
+        [39.1036, 26.03],
+        [39.1469, 25.9003],
+        [39.2177, 25.8589],
+        [39.2744, 25.8896],
+        [39.3775, 26.3033],
+        [39.3553, 26.3831],
+        [39.1366, 26.5097],
+        [39.0074, 26.4216],
+        [np.nan, np.nan],
+        [38.2571, 26.0002],
+        [38.6004, 25.8131],
+        [38.5678, 26.0178],
+        [38.4165, 26.1786],
+        [38.2841, 26.0884],
+        [38.2571, 26.0002],
+        [np.nan, np.nan],
+        [38.5123, -28.1598],
+        [38.4167, -28.0294],
+        [38.3839, -28.193],
+        [38.4, -28.4735],
+        [38.4655, -28.5366],
+        [38.5779, -28.4902],
+        [38.5123, -28.1598],
+        [np.nan, np.nan],
+        [37.6973, -25.2548],
+        [37.7382, -25.7897],
+        [37.783, -25.8258],
+        [37.9247, -25.814],
+        [37.8628, -25.4883],
+        [37.8959, -25.2349],
+        [37.788, -25.1679],
+        [37.6973, -25.2548],
+        [np.nan, np.nan],
+        [28.33, -16.83],
+        [28.38, -16.5],
+        [28.58, -16.17],
+        [28.17, -16.33],
+        [28, -16.58],
+        [28.33, -16.83],
+        [np.nan, np.nan],
+        [28, -15.8],
+        [28.17, -15.67],
+        [28.08, -15.37],
+        [27.83, -15.33],
+        [27.75, -15.67],
+        [28, -15.8],
+        [np.nan, np.nan],
+        [28.8332, -13.7387],
+        [28.9412, -13.7871],
+        [29.0435, -13.7669],
+        [29.1479, -13.5416],
+        [29.1372, -13.4283],
+        [29.0418, -13.4122],
+        [28.8332, -13.7387],
+        [np.nan, np.nan],
+        [28.1886, -14.2095],
+        [28.3599, -14.1823],
+        [28.6419, -13.9613],
+        [28.4557, -13.8981],
+        [28.3388, -13.9338],
+        [28.1886, -14.2095],
+        [np.nan, np.nan],
+        [3.33, 8.5],
+        [3.75, 8.67],
+        [3.58, 8.92],
+        [3.25, 8.75],
+        [3.33, 8.5],
+        [np.nan, np.nan],
+        [-34.17, 115.17],
+        [-33.58, 115.17],
+        [-33.5, 115.58],
+        [-33.25, 115.83],
+        [-32.92, 115.75],
+        [-32.33, 115.83],
+        [-31.75, 115.83],
+        [-31.42, 115.58],
+        [-31, 115.42],
+        [-30.5, 115.17],
+        [-30, 115],
+        [-29.5, 115],
+        [-29.08, 114.92],
+        [-28.58, 114.58],
+        [-28.08, 114.17],
+        [-27.67, 114.17],
+        [-27, 113.92],
+        [-26.67, 113.5],
+        [-26.17, 113.33],
+        [-26.58, 113.83],
+        [-25.67, 113.5],
+        [-26.08, 113.75],
+        [-26.08, 113.75],
+        [-26.42, 114.17],
+        [-25.83, 114.17],
+        [-25.42, 113.92],
+        [-25, 113.67],
+        [-24.42, 113.5],
+        [-23.92, 113.42],
+        [-23.5, 113.83],
+        [-23.08, 113.83],
+        [-22.67, 113.67],
+        [-22.25, 113.83],
+        [-21.83, 114.08],
+        [-22.33, 114.33],
+        [-21.92, 114.58],
+        [-21.67, 115.08],
+        [-21.5, 115.5],
+        [-21.08, 115.83],
+        [-20.83, 116.25],
+        [-20.67, 116.75],
+        [-20.67, 117.25],
+        [-20.67, 117.75],
+        [-20.33, 118.25],
+        [-20.33, 118.75],
+        [-20, 119.17],
+        [-20, 119.75],
+        [-19.83, 120.33],
+        [-19.75, 120.92],
+        [-19.42, 121.33],
+        [-19.08, 121.67],
+        [-18.58, 121.92],
+        [-18.17, 122.33],
+        [-18.17, 122.33],
+        [-17.83, 122.25],
+        [-17.42, 122.17],
+        [-17, 122.58],
+        [-16.5, 123],
+        [-17.08, 123.25],
+        [-17.5, 123.5],
+        [-17, 123.92],
+        [-16.67, 123.58],
+        [-16.17, 123.75],
+        [-16.42, 124.33],
+        [-16, 124.58],
+        [-15.5, 124.67],
+        [-15.08, 125.17],
+        [-14.67, 125.25],
+        [-14.67, 125.92],
+        [-14.33, 126.08],
+        [-14.25, 126.58],
+        [-13.92, 126.83],
+        [-14, 127.42],
+        [-14.42, 127.83],
+        [-14.75, 128.17],
+        [-15.25, 128.17],
+        [-14.92, 128.67],
+        [-14.92, 129.08],
+        [-15.25, 129.67],
+        [-14.83, 129.83],
+        [-14.5, 129.33],
+        [-14.08, 129.75],
+        [-13.67, 129.92],
+        [-13.58, 130.42],
+        [-13.58, 130.42],
+        [-13.17, 130.25],
+        [-12.75, 130.5],
+        [-12.33, 131.08],
+        [-12.33, 131.75],
+        [-12.33, 132.42],
+        [-12.205, 132.483],
+        [-12.08, 132.545],
+        [-11.955, 132.608],
+        [-11.83, 132.67],
+        [-11.7275, 132.585],
+        [-11.625, 132.5],
+        [-11.5225, 132.415],
+        [-11.42, 132.33],
+        [-11.4601, 132.497],
+        [-11.5002, 132.665],
+        [-11.5401, 132.832],
+        [-11.58, 133],
+        [-11.92, 133.5],
+        [-12, 134.08],
+        [-12.17, 134.67],
+        [-12.33, 135.25],
+        [-12.17, 135.83],
+        [-12.58, 136.08],
+        [-12.08, 136.5],
+        [-12.42, 137],
+        [-12.83, 136.67],
+        [-13.33, 136.58],
+        [-13.33, 136],
+        [-13.83, 136],
+        [-14.25, 136],
+        [-14.58, 135.75],
+        [-15, 135.58],
+        [-15.33, 136],
+        [-15.5, 136.42],
+        [-16, 136.58],
+        [-16, 137.33],
+        [-16.33, 137.75],
+        [-16.58, 138.08],
+        [-16.83, 138.67],
+        [-16.83, 138.67],
+        [-17, 139.17],
+        [-17.42, 139.42],
+        [-17.83, 140],
+        [-17.75, 140.5],
+        [-17.5, 141],
+        [-17, 141],
+        [-16.58, 141.25],
+        [-16.08, 141.5],
+        [-15.58, 141.58],
+        [-15.08, 141.67],
+        [-14.58, 141.58],
+        [-14.08, 141.58],
+        [-13.58, 141.67],
+        [-13, 141.75],
+        [-12.67, 141.75],
+        [-12.17, 141.75],
+        [-11.83, 142.08],
+        [-11.25, 142.08],
+        [-10.83, 142.42],
+        [-11.08, 142.83],
+        [-11.67, 142.92],
+        [-12.17, 143.08],
+        [-12.67, 143.33],
+        [-13.25, 143.58],
+        [-13.75, 143.58],
+        [-14.33, 143.75],
+        [-14.5, 144.08],
+        [-14.33, 144.58],
+        [-14.67, 144.92],
+        [-15, 145.33],
+        [-15, 145.33],
+        [-15.5, 145.33],
+        [-16, 145.5],
+        [-16.58, 145.5],
+        [-17, 145.83],
+        [-17.33, 146.08],
+        [-17.83, 146.17],
+        [-18.33, 146.08],
+        [-18.67, 146.33],
+        [-19, 146.42],
+        [-19.33, 147],
+        [-19.42, 147.5],
+        [-19.83, 147.83],
+        [-20.17, 148.33],
+        [-20.42, 148.83],
+        [-20.83, 148.83],
+        [-21.08, 149.17],
+        [-21.42, 149.33],
+        [-21.92, 149.5],
+        [-22.42, 149.75],
+        [-22.08, 150],
+        [-22.42, 150.42],
+        [-22.67, 150.83],
+        [-23.17, 150.83],
+        [-23.58, 151],
+        [-23.92, 151.33],
+        [-24.08, 151.83],
+        [-24.58, 152.17],
+        [-25.08, 152.58],
+        [-25.5, 152.83],
+        [-26.08, 153.08],
+        [-26.08, 153.08],
+        [-26.5, 153.08],
+        [-27.08, 153.17],
+        [-27.58, 153.33],
+        [-28.17, 153.5],
+        [-28.67, 153.67],
+        [-29, 153.5],
+        [-29.5, 153.42],
+        [-30, 153.33],
+        [-30.58, 153.08],
+        [-31, 153.08],
+        [-31.5, 152.92],
+        [-31.92, 152.75],
+        [-32.33, 152.5],
+        [-32.75, 152.25],
+        [-33, 151.83],
+        [-33.42, 151.5],
+        [-33.83, 151.33],
+        [-34.33, 151.08],
+        [-34.92, 150.83],
+        [-35.25, 150.58],
+        [-35.75, 150.25],
+        [-36.25, 150.17],
+        [-36.75, 150],
+        [-37.17, 150],
+        [-37.58, 149.92],
+        [-37.83, 149.42],
+        [-37.83, 148.75],
+        [-37.92, 148.17],
+        [-38.08, 147.83],
+        [-38.42, 147.25],
+        [-38.42, 147.25],
+        [-38.67, 146.83],
+        [-39.17, 146.42],
+        [-38.92, 146],
+        [-38.67, 145.58],
+        [-38.25, 145.5],
+        [-38.42, 145],
+        [-37.83, 144.83],
+        [-38.25, 144.42],
+        [-38.5, 144],
+        [-38.83, 143.5],
+        [-38.67, 143.08],
+        [-38.42, 142.67],
+        [-38.33, 142.25],
+        [-38.25, 141.75],
+        [-38.42, 141.42],
+        [-38.08, 141.17],
+        [-38, 140.67],
+        [-37.67, 140.25],
+        [-37.33, 139.92],
+        [-37, 139.75],
+        [-36.75, 139.92],
+        [-36.33, 139.67],
+        [-35.92, 139.33],
+        [-35.58, 138.83],
+        [-35.67, 138.17],
+        [-35.42, 138.42],
+        [-35, 138.58],
+        [-34.67, 138.42],
+        [-34.25, 138.08],
+        [-34.75, 137.92],
+        [-34.75, 137.92],
+        [-35.17, 137.75],
+        [-35.17, 137.33],
+        [-35.25, 136.92],
+        [-35, 137],
+        [-34.83, 137.42],
+        [-34.5, 137.5],
+        [-34, 137.58],
+        [-33.58, 137.92],
+        [-32.83, 137.83],
+        [-33.17, 137.5],
+        [-33.67, 137.25],
+        [-33.92, 136.75],
+        [-34.25, 136.33],
+        [-34.58, 135.92],
+        [-35, 135.67],
+        [-34.58, 135.42],
+        [-34.17, 135.25],
+        [-33.75, 135],
+        [-33.25, 134.83],
+        [-33, 134.17],
+        [-32.58, 134.33],
+        [-32.33, 133.92],
+        [-32.17, 133.42],
+        [-32, 132.83],
+        [-32, 132.25],
+        [-31.75, 131.83],
+        [-31.58, 131.33],
+        [-31.58, 130.83],
+        [-31.58, 130.33],
+        [-31.58, 129.67],
+        [-31.58, 129.67],
+        [-31.67, 129.08],
+        [-31.83, 128.58],
+        [-32.08, 128],
+        [-32.17, 127.5],
+        [-32.25, 126.92],
+        [-32.17, 126.25],
+        [-32.33, 125.83],
+        [-32.67, 125.25],
+        [-32.83, 124.75],
+        [-33, 124.08],
+        [-33.5, 124],
+        [-33.83, 123.58],
+        [-33.83, 123.08],
+        [-33.83, 122.58],
+        [-33.83, 121.92],
+        [-33.83, 121.33],
+        [-33.83, 120.75],
+        [-33.92, 120.08],
+        [-34, 119.75],
+        [-34.42, 119.42],
+        [-34.42, 119],
+        [-34.75, 118.58],
+        [-35, 118.33],
+        [-35, 117.75],
+        [-35, 117.17],
+        [-35, 116.67],
+        [-34.83, 116.08],
+        [-34.33, 115.67],
+        [-34.17, 115.17],
+        [np.nan, np.nan],
+        [-11.83, 130.08],
+        [-11.33, 130.33],
+        [-11.5, 130.75],
+        [-11.33, 131.33],
+        [-11.58, 131.5],
+        [-12, 131],
+        [-11.83, 130.67],
+        [-11.83, 130.08],
+        [np.nan, np.nan],
+        [-35.92, 136.58],
+        [-35.75, 136.83],
+        [-35.67, 137.42],
+        [-35.92, 138.08],
+        [-36.17, 137.58],
+        [-36.17, 136.83],
+        [-35.92, 136.58],
+        [np.nan, np.nan],
+        [-40.67, 144.83],
+        [-40.83, 145.5],
+        [-41.17, 146.17],
+        [-41.17, 146.75],
+        [-41, 147.33],
+        [-40.83, 148],
+        [-41, 148.33],
+        [-41.5, 148.33],
+        [-42, 148.33],
+        [-42.17, 148.17],
+        [-42.58, 148],
+        [-43.08, 147.92],
+        [-42.83, 147.5],
+        [-43.17, 147.17],
+        [-43.58, 146.83],
+        [-43.5, 146.25],
+        [-43.25, 145.75],
+        [-42.92, 145.5],
+        [-42.5, 145.33],
+        [-42.17, 145.25],
+        [-41.75, 145],
+        [-41.17, 144.83],
+        [-40.67, 144.83],
+        [np.nan, np.nan],
+        [-36.9214, 175.189],
+        [-37.0138, 175.52],
+        [-36.9496, 175.534],
+        [-36.7885, 175.445],
+        [-36.7061, 175.481],
+        [-36.7879, 175.759],
+        [-37.0249, 175.897],
+        [-37.4263, 176.01],
+        [-37.8988, 177.029],
+        [-37.9645, 177.258],
+        [-37.9352, 177.425],
+        [-37.7054, 177.737],
+        [-37.5652, 178.138],
+        [-37.6606, 178.467],
+        [-37.8643, 178.497],
+        [-38.5343, 178.314],
+        [-38.613, 177.84],
+        [-38.9277, 177.827],
+        [-39.002, 177.772],
+        [-39.0448, 177.244],
+        [-39.1462, 177.056],
+        [-39.2825, 176.934],
+        [-39.4562, 176.945],
+        [-39.6931, 177.062],
+        [-39.7913, 177.063],
+        [-40.1345, 176.703],
+        [-41.1731, 175.922],
+        [-41.4572, 175.581],
+        [-41.6149, 175.274],
+        [-41.429, 174.892],
+        [-41.3135, 174.765],
+        [-40.5968, 175.122],
+        [-40.3534, 175.297],
+        [-40.1814, 175.28],
+        [-39.8067, 174.807],
+        [-39.4631, 173.954],
+        [-39.2614, 173.773],
+        [-39.1968, 173.806],
+        [-38.7129, 174.566],
+        [-38.4491, 174.649],
+        [-38.1028, 174.61],
+        [-37.943, 174.644],
+        [-37.7148, 174.811],
+        [-37.5232, 174.822],
+        [-37.1317, 174.612],
+        [-36.8796, 174.652],
+        [-36.7861, 174.601],
+        [-36.45, 174.236],
+        [-36.4031, 174.288],
+        [-36.1374, 174.11],
+        [-35.973, 173.839],
+        [-36.3185, 174.107],
+        [-36.3814, 174.128],
+        [-36.3778, 174.053],
+        [-35.3438, 173.236],
+        [-35.2917, 173.237],
+        [-35.1717, 173.117],
+        [-35.0383, 173.121],
+        [-34.7601, 172.981],
+        [-34.4376, 172.636],
+        [-34.4181, 172.71],
+        [-34.4634, 172.802],
+        [-34.4069, 173.024],
+        [-34.5353, 173.062],
+        [-34.6179, 172.994],
+        [-34.8604, 173.171],
+        [-34.9941, 173.352],
+        [-34.9273, 173.36],
+        [-34.9406, 173.477],
+        [-35.1597, 174.026],
+        [-35.3419, 174.079],
+        [-35.3551, 174.163],
+        [-35.2724, 174.229],
+        [-35.2856, 174.313],
+        [-35.3596, 174.303],
+        [-35.5221, 174.405],
+        [-35.7385, 174.622],
+        [-35.7506, 174.546],
+        [-35.8246, 174.514],
+        [-35.8987, 174.553],
+        [-35.8649, 174.374],
+        [-36.2331, 174.79],
+        [-36.3753, 174.807],
+        [-36.3667, 174.699],
+        [-36.5629, 174.917],
+        [-36.5539, 174.606],
+        [-36.592, 174.596],
+        [-36.6714, 174.848],
+        [-36.7241, 174.795],
+        [-36.8037, 175.2],
+        [-36.8564, 175.123],
+        [-36.9214, 175.189],
+        [np.nan, np.nan],
+        [-45.92, 166.5],
+        [-45.42, 166.83],
+        [-45.08, 167.08],
+        [-44.75, 167.58],
+        [-44.42, 167.92],
+        [-44.08, 168.33],
+        [-44, 168.83],
+        [-43.67, 169.5],
+        [-43.33, 170],
+        [-43, 170.5],
+        [-42.67, 171.08],
+        [-42.25, 171.33],
+        [-41.83, 171.5],
+        [-41.67, 172],
+        [-41.33, 172.17],
+        [-40.92, 172.17],
+        [-40.67, 172.58],
+        [-40.67, 172.58],
+        [-40.92, 173.08],
+        [-41.33, 173.17],
+        [-41.17, 173.5],
+        [-40.92, 173.83],
+        [-41.25, 173.92],
+        [-41.33, 174.33],
+        [-41.83, 174.33],
+        [-42.17, 174],
+        [-42.58, 173.58],
+        [-43, 173.25],
+        [-43.17, 172.83],
+        [-43.5, 172.75],
+        [-43.75, 173.08],
+        [-43.75, 172.42],
+        [-44.08, 172],
+        [-44.33, 171.42],
+        [-44.67, 171.25],
+        [-45.08, 171.08],
+        [-45.5, 170.92],
+        [-45.92, 170.58],
+        [-46.25, 170.17],
+        [-46.5, 169.67],
+        [-46.67, 169],
+        [-46.5, 168.33],
+        [-46.42, 167.83],
+        [-46.17, 167.58],
+        [-46.25, 167.25],
+        [-46.17, 166.75],
+        [-45.92, 166.5],
+        [np.nan, np.nan],
+        [-47.33, 167.58],
+        [-46.67, 168],
+        [-47, 168.25],
+        [-47.33, 167.58],
+        [np.nan, np.nan],
+        [5.67, 95.33],
+        [5.67, 95.92],
+        [5.33, 96.33],
+        [5.33, 96.92],
+        [5.25, 97.58],
+        [4.92, 98],
+        [4.5, 98.25],
+        [4.08, 98.58],
+        [4.08, 98.58],
+        [3.75, 99],
+        [3.5, 99.5],
+        [3.17, 100],
+        [2.67, 100.33],
+        [2.17, 100.75],
+        [2.25, 101.25],
+        [1.75, 101.75],
+        [1.67, 102.25],
+        [1.17, 102.67],
+        [1.08, 103.08],
+        [0.58, 103],
+        [0.58, 103.42],
+        [0.17, 103.83],
+        [-0.25, 103.75],
+        [-0.67, 103.5],
+        [-1, 103.83],
+        [-1, 104.42],
+        [-1.67, 104.58],
+        [-1.92, 104.92],
+        [-2.33, 105.08],
+        [-2.33, 105.58],
+        [-2.67, 105.92],
+        [-3, 106.17],
+        [-3.5, 105.92],
+        [-4.17, 105.92],
+        [-4.67, 105.92],
+        [-5.25, 105.83],
+        [-5.75, 105.75],
+        [-5.5, 105.33],
+        [-5.5, 104.92],
+        [-5.5, 104.92],
+        [-5.75, 104.75],
+        [-5.58, 104.42],
+        [-5.08, 104],
+        [-4.75, 103.5],
+        [-4.25, 102.83],
+        [-3.83, 102.42],
+        [-3.5, 102.25],
+        [-3.17, 101.75],
+        [-2.58, 101.33],
+        [-2.08, 100.92],
+        [-1.67, 100.83],
+        [-1.08, 100.5],
+        [-0.67, 100.42],
+        [-0.25, 100],
+        [0.08, 99.83],
+        [0.33, 99.25],
+        [1, 99.08],
+        [1.5, 98.83],
+        [1.83, 98.83],
+        [2.17, 98.33],
+        [2.42, 97.83],
+        [2.92, 97.67],
+        [3.33, 97.25],
+        [3.75, 96.92],
+        [3.83, 96.58],
+        [4.33, 96.08],
+        [4.75, 95.67],
+        [5.17, 95.42],
+        [5.67, 95.33],
+        [np.nan, np.nan],
+        [-6.67, 105.5],
+        [-6.33, 105.83],
+        [-5.83, 106.08],
+        [-6, 106.67],
+        [-5.83, 107.08],
+        [-5.92, 107.42],
+        [-6.17, 107.92],
+        [-6.25, 108.42],
+        [-6.67, 108.67],
+        [-6.75, 109.08],
+        [-6.75, 109.58],
+        [-6.83, 110.08],
+        [-6.83, 110.5],
+        [-6.33, 110.83],
+        [-6.33, 110.83],
+        [-6.58, 111.33],
+        [-6.75, 111.92],
+        [-6.83, 112.42],
+        [-7.08, 112.75],
+        [-7.5, 112.83],
+        [-7.67, 113.42],
+        [-7.58, 113.92],
+        [-7.67, 114.42],
+        [-8.17, 114.42],
+        [-8.58, 114.42],
+        [-8.5, 114],
+        [-8.33, 113.58],
+        [-8.17, 113.08],
+        [-8.33, 112.5],
+        [-8.17, 112],
+        [-8.17, 111.5],
+        [-8.08, 111],
+        [-8, 110.5],
+        [-7.75, 110],
+        [-7.67, 109.58],
+        [-7.67, 109],
+        [-7.75, 108.58],
+        [-7.67, 108],
+        [-7.42, 107.58],
+        [-7.33, 107],
+        [-7.25, 106.5],
+        [-7, 106.58],
+        [-6.75, 106],
+        [-6.67, 105.5],
+        [np.nan, np.nan],
+        [-8.74, 115.25],
+        [-8.39, 114.7],
+        [-8.25, 114.66],
+        [-8.17, 115.25],
+        [-8.41, 115.66],
+        [-8.74, 115.25],
+        [np.nan, np.nan],
+        [-8.41105, 118.028],
+        [-8.31514, 117.8],
+        [-8.2385, 117.771],
+        [-8.14112, 117.782],
+        [-8.04694, 117.892],
+        [-8.02632, 118.029],
+        [-8.20451, 118.21],
+        [-8.13412, 118.341],
+        [-8.17755, 118.491],
+        [-8.2455, 118.538],
+        [-8.4523, 118.538],
+        [-8.24048, 118.684],
+        [-8.22294, 118.823],
+        [-8.32303, 118.924],
+        [-8.5166, 118.938],
+        [-8.49766, 119.017],
+        [-8.54485, 119.045],
+        [-8.72669, 119.038],
+        [-8.63485, 118.898],
+        [-8.61236, 118.762],
+        [-8.64094, 118.701],
+        [-8.71093, 118.735],
+        [-8.79438, 118.364],
+        [-8.75479, 118.301],
+        [-8.63076, 118.34],
+        [-8.60522, 118.303],
+        [-8.85262, 118.074],
+        [-8.83527, 117.944],
+        [-9.04628, 117.402],
+        [-9.02781, 117.245],
+        [-9.08827, 117.111],
+        [-9.06164, 116.94],
+        [-8.97739, 116.804],
+        [-8.85019, 116.774],
+        [-8.72887, 116.833],
+        [-8.61456, 116.795],
+        [-8.42958, 117.078],
+        [-8.49826, 117.619],
+        [-8.62511, 117.661],
+        [-8.6928, 117.918],
+        [-8.57196, 117.998],
+        [-8.5627, 118.124],
+        [-8.47663, 118.144],
+        [-8.41105, 118.028],
+        [np.nan, np.nan],
+        [-8.21715, 123.122],
+        [-8.37718, 122.814],
+        [-8.48047, 122.829],
+        [-8.78892, 122.153],
+        [-8.77218, 122.011],
+        [-8.9188, 121.82],
+        [-8.84247, 121.427],
+        [-8.9683, 121.28],
+        [-8.9854, 121.14],
+        [-8.77019, 120.61],
+        [-8.75375, 119.975],
+        [-8.49831, 119.877],
+        [-8.38806, 119.886],
+        [-8.29203, 120.052],
+        [-8.21221, 120.365],
+        [-8.26389, 120.668],
+        [-8.51063, 121.246],
+        [-8.648, 121.429],
+        [-8.65238, 121.572],
+        [-8.51884, 121.709],
+        [-8.47615, 122.086],
+        [-8.55709, 122.26],
+        [-8.50313, 122.457],
+        [-8.40507, 122.426],
+        [-8.17275, 122.843],
+        [-8.09668, 122.896],
+        [-8.04963, 122.857],
+        [-8.07447, 122.757],
+        [-7.97545, 122.823],
+        [-7.99363, 123.027],
+        [-8.08062, 123.119],
+        [-8.21715, 123.122],
+        [np.nan, np.nan],
+        [-8.4803, 123.557],
+        [-8.37069, 123.375],
+        [-8.25229, 123.526],
+        [-8.24991, 123.865],
+        [-8.35135, 123.887],
+        [-8.4803, 123.557],
+        [np.nan, np.nan],
+        [-8.88507, 116.415],
+        [-8.82908, 115.959],
+        [-8.68125, 116.126],
+        [-8.48053, 116.133],
+        [-8.32835, 116.236],
+        [-8.28269, 116.442],
+        [-8.37907, 116.656],
+        [-8.88507, 116.415],
+        [np.nan, np.nan],
+        [-8.42, 124.33],
+        [-8.08, 124.5],
+        [-8.1226, 124.667],
+        [-8.16514, 124.835],
+        [-8.2076, 125.002],
+        [-8.25, 125.17],
+        [-8.29267, 124.96],
+        [-8.33522, 124.75],
+        [-8.37767, 124.54],
+        [-8.42, 124.33],
+        [np.nan, np.nan],
+        [-7.92, 125.83],
+        [-7.58, 126],
+        [-7.5, 126.67],
+        [-7.92, 126.42],
+        [-7.92, 125.83],
+        [np.nan, np.nan],
+        [-9.42, 119],
+        [-9.33, 119.5],
+        [-9.33, 120],
+        [-9.58, 120.5],
+        [-10, 120.92],
+        [-10.25, 120.42],
+        [-9.92, 120],
+        [-9.75, 119.67],
+        [-9.75, 119.17],
+        [-9.42, 119],
+        [np.nan, np.nan],
+        [-10.33, 123.5],
+        [-9.67, 123.67],
+        [-9.33, 123.92],
+        [-9.17, 124.33],
+        [-9, 124.83],
+        [-8.67, 125.08],
+        [-8.5, 125.67],
+        [-8.42, 126.25],
+        [-8.33, 126.75],
+        [-8.33, 127.25],
+        [-8.67, 126.92],
+        [-8.92, 126.42],
+        [-9.08, 125.92],
+        [-9.25, 125.42],
+        [-9.58, 124.92],
+        [-10.08, 124.5],
+        [-10.25, 124],
+        [-10.33, 123.5],
+        [np.nan, np.nan],
+        [-7.92, 131.17],
+        [-7.42, 131.25],
+        [-7.08, 131.58],
+        [-7.58, 131.58],
+        [-7.92, 131.17],
+        [np.nan, np.nan],
+        [-6.92, 134.08],
+        [-6.33, 134.08],
+        [-5.83, 134.25],
+        [-5.42, 134.5],
+        [-5.92, 134.67],
+        [-6.5, 134.5],
+        [-6.92, 134.08],
+        [np.nan, np.nan],
+        [-1.92, 105.25],
+        [-1.58, 105.5],
+        [-1.5, 106],
+        [-2, 106.25],
+        [-2.42, 106.42],
+        [-2.5, 106.75],
+        [-3, 106.67],
+        [-2.62, 106],
+        [-2.25, 106],
+        [-2, 105.75],
+        [-1.92, 105.25],
+        [np.nan, np.nan],
+        [-3.08, 107.67],
+        [-2.5, 107.75],
+        [-2.67, 108.33],
+        [-3.17, 108.08],
+        [-3.08, 107.67],
+        [np.nan, np.nan],
+        [-7.17947, 113.059],
+        [-7.13004, 112.93],
+        [-6.98004, 112.84],
+        [-6.90381, 113.003],
+        [-6.92181, 113.142],
+        [-6.85527, 113.795],
+        [-6.89199, 113.951],
+        [-7.16353, 113.639],
+        [-7.17947, 113.059],
+        [np.nan, np.nan],
+        [1, 108.92],
+        [1.58, 109.08],
+        [2, 109.5],
+        [1.75, 110],
+        [1.67, 110.58],
+        [1.58, 111.08],
+        [2.25, 111.33],
+        [2.83, 111.5],
+        [2.92, 112],
+        [3, 112.58],
+        [3.33, 113.08],
+        [3.75, 113.33],
+        [4.08, 113.75],
+        [4.08, 113.75],
+        [4.67, 114.25],
+        [4.92, 114.75],
+        [4.92, 115.42],
+        [5.33, 115.42],
+        [5.83, 116],
+        [6.25, 116.17],
+        [6.58, 116.67],
+        [7, 117],
+        [6.75, 117.25],
+        [6.42, 117.75],
+        [5.92, 117.75],
+        [5.75, 118.25],
+        [5.42, 118.75],
+        [5.17, 119.25],
+        [5, 118.75],
+        [4.83, 118.25],
+        [4.42, 118.58],
+        [4.25, 117.92],
+        [3.67, 117.83],
+        [3.25, 117.5],
+        [2.75, 117.75],
+        [2.33, 118.08],
+        [2, 117.83],
+        [1.58, 118.25],
+        [1.25, 118.67],
+        [0.92, 119],
+        [0.83, 118.42],
+        [0.83, 117.92],
+        [0.5, 117.67],
+        [0, 117.5],
+        [0, 117.5],
+        [-0.58, 117.42],
+        [-1, 117.17],
+        [-1.33, 116.75],
+        [-1.75, 116.33],
+        [-2.25, 116.67],
+        [-2.92, 116.33],
+        [-3.42, 116.17],
+        [-3.67, 115.67],
+        [-3.92, 115.17],
+        [-4.08, 114.75],
+        [-3.67, 114.67],
+        [-3.33, 114.33],
+        [-3.42, 113.83],
+        [-3.08, 113.25],
+        [-3.33, 112.83],
+        [-3.33, 112.33],
+        [-3.5, 111.83],
+        [-2.75, 111.75],
+        [-2.92, 111.42],
+        [-3, 110.92],
+        [-2.92, 110.33],
+        [-2.33, 110.25],
+        [-1.75, 110.08],
+        [-1.25, 110.08],
+        [-0.75, 109.75],
+        [-0.42, 109.25],
+        [0.08, 109.25],
+        [0.42, 109],
+        [1, 108.92],
+        [np.nan, np.nan],
+        [-2.83, 118.83],
+        [-2.42, 119.17],
+        [-1.92, 119.33],
+        [-1.33, 119.33],
+        [-0.92, 119.5],
+        [-0.58, 119.83],
+        [-0.08, 119.83],
+        [0.42, 119.92],
+        [0.75, 120],
+        [0.75, 120.67],
+        [1.33, 120.92],
+        [1.17, 121.42],
+        [1.08, 122],
+        [1, 122.5],
+        [0.83, 122.92],
+        [0.92, 123.33],
+        [0.92, 123.92],
+        [1.17, 124.42],
+        [1.5, 124.75],
+        [1.75, 125],
+        [1.75, 125],
+        [1.5, 125.25],
+        [1.08, 125],
+        [0.58, 124.58],
+        [0.42, 124],
+        [0.33, 123.5],
+        [0.5, 123],
+        [0.5, 122.5],
+        [0.5, 122],
+        [0.5, 121.42],
+        [0.42, 121],
+        [0.5, 120.67],
+        [0.42, 120.33],
+        [-0.08, 120.08],
+        [-0.67, 120.08],
+        [-0.92, 120.58],
+        [-1.33, 120.67],
+        [-1.33, 121.17],
+        [-0.92, 121.58],
+        [-0.92, 122.08],
+        [-0.75, 122.58],
+        [-0.58, 123.17],
+        [-0.92, 123.5],
+        [-0.92, 122.92],
+        [-1.33, 122.5],
+        [-1.67, 122.08],
+        [-1.92, 121.5],
+        [-2.42, 121.92],
+        [-2.75, 122.17],
+        [-3.17, 122.42],
+        [-3.5, 122.08],
+        [-3.5, 122.08],
+        [-3.83, 122.5],
+        [-4.33, 122.83],
+        [-4.75, 123.17],
+        [-5.33, 123.17],
+        [-5.67, 122.67],
+        [-5.33, 122.33],
+        [-4.58, 122.33],
+        [-4.83, 122],
+        [-4.67, 121.58],
+        [-4.08, 121.67],
+        [-3.83, 121.17],
+        [-3.42, 120.92],
+        [-3, 121.08],
+        [-2.67, 121.08],
+        [-2.67, 120.67],
+        [-3, 120.25],
+        [-3.5, 120.42],
+        [-4, 120.42],
+        [-4.5, 120.42],
+        [-5, 120.33],
+        [-5.5, 120.42],
+        [-5.58, 119.92],
+        [-5.58, 119.5],
+        [-5.17, 119.42],
+        [-4.58, 119.58],
+        [-4, 119.67],
+        [-3.5, 119.5],
+        [-3.5, 119],
+        [-2.83, 118.83],
+        [np.nan, np.nan],
+        [1.08, 127.33],
+        [1.5, 127.5],
+        [1.92, 127.58],
+        [2.17, 128],
+        [1.75, 127.83],
+        [1.33, 128.08],
+        [1.58, 128.67],
+        [1.08, 128.67],
+        [0.83, 128.25],
+        [0.5, 128.5],
+        [0.5, 128],
+        [0, 127.92],
+        [-0.42, 128],
+        [-0.92, 128.42],
+        [-0.58, 127.92],
+        [-0.17, 127.58],
+        [0.25, 127.67],
+        [0.67, 127.58],
+        [0.772502, 127.518],
+        [0.875002, 127.455],
+        [0.977502, 127.393],
+        [1.08, 127.33],
+        [np.nan, np.nan],
+        [-3.25, 126],
+        [-3.08, 126.5],
+        [-3.17, 127],
+        [-3.58, 127.17],
+        [-3.83, 126.83],
+        [-3.67, 126.33],
+        [-3.25, 126],
+        [np.nan, np.nan],
+        [-3.17, 127.92],
+        [-2.83, 128.25],
+        [-2.83, 128.92],
+        [-2.75, 129.5],
+        [-3, 129.92],
+        [-3, 130.42],
+        [-3.42, 130.75],
+        [-3.83, 130.75],
+        [-3.58, 130.25],
+        [-3.42, 129.42],
+        [-3.33, 128.92],
+        [-3.42, 128.5],
+        [-3.17, 127.92],
+        [np.nan, np.nan],
+        [-1.97171, 124.616],
+        [-1.93597, 124.508],
+        [-1.73058, 124.549],
+        [-1.68383, 124.702],
+        [-1.78354, 125.191],
+        [-1.89915, 125.372],
+        [-1.97171, 124.616],
+        [np.nan, np.nan],
+        [-1.67, 127.33],
+        [-1.33, 127.58],
+        [-1.67, 128.17],
+        [-1.67003, 127.96],
+        [-1.67004, 127.75],
+        [-1.67003, 127.54],
+        [-1.67, 127.33],
+        [np.nan, np.nan],
+        [-0.17, 130.33],
+        [0, 130.75],
+        [-0.25, 131.25],
+        [-0.42, 130.75],
+        [-0.17, 130.33],
+        [np.nan, np.nan],
+        [-0.67, 135.33],
+        [-0.67, 135.92],
+        [-1.08, 136.25],
+        [-1.17, 135.83],
+        [-0.67, 135.33],
+        [np.nan, np.nan],
+        [-1.33, 130.83],
+        [-0.83, 131.25],
+        [-0.83, 131.25],
+        [-0.67, 131.83],
+        [-0.33, 132.17],
+        [-0.33, 132.83],
+        [-0.67, 133.25],
+        [-0.67, 133.92],
+        [-1.33, 134.17],
+        [-1.83, 134],
+        [-2.33, 134.17],
+        [-2.5, 134.58],
+        [-3, 134.75],
+        [-3.33, 135.17],
+        [-3.33, 135.58],
+        [-2.92, 135.83],
+        [-2.58, 136.08],
+        [-2.17, 136.5],
+        [-2.08, 137],
+        [-1.67, 137.25],
+        [-1.42, 137.92],
+        [-1.67, 138.42],
+        [-2, 139],
+        [-2.17, 139.5],
+        [-2.33, 140],
+        [-2.33, 140.42],
+        [-2.58, 141],
+        [-2.75, 141.5],
+        [-2.92, 142],
+        [-3.08, 142.42],
+        [-3.33, 143],
+        [-3.42, 143.5],
+        [-3.67, 144],
+        [-3.67, 144],
+        [-3.92, 144.5],
+        [-4.25, 145],
+        [-4.5, 145.42],
+        [-4.92, 145.75],
+        [-5.5, 145.75],
+        [-5.58, 146.25],
+        [-5.92, 146.83],
+        [-5.83, 147.42],
+        [-6.17, 147.83],
+        [-6.67, 147.83],
+        [-6.75, 147.42],
+        [-6.83, 147],
+        [-7.25, 147.17],
+        [-7.75, 147.67],
+        [-8, 148.17],
+        [-8.58, 148.25],
+        [-9.08, 148.58],
+        [-9, 149.25],
+        [-9.42, 149.08],
+        [-9.58, 149.58],
+        [-9.58005, 149.685],
+        [-9.58006, 149.79],
+        [-9.58005, 149.895],
+        [-9.58, 150],
+        [-9.66502, 149.938],
+        [-9.75002, 149.875],
+        [-9.83502, 149.813],
+        [-9.92, 149.75],
+        [-9.96005, 149.855],
+        [-10.0001, 149.96],
+        [-10.04, 150.065],
+        [-10.08, 150.17],
+        [-10.17, 150.75],
+        [-10.58, 150.58],
+        [-10.67, 150],
+        [-10.33, 149.75],
+        [-10.25, 149.25],
+        [-10.17, 148.67],
+        [-10.08, 148.08],
+        [-10.08, 148.08],
+        [-10, 147.58],
+        [-9.67, 147.42],
+        [-9.33, 147],
+        [-8.92, 146.5],
+        [-8.5, 146.25],
+        [-8, 146],
+        [-7.92, 145.58],
+        [-7.67, 145],
+        [-7.5, 144.67],
+        [-7.5, 144.17],
+        [-7.92, 143.83],
+        [-8.17, 143.58],
+        [-8.33, 143.17],
+        [-8.75, 143.33],
+        [-9, 143.17],
+        [-9.25, 142.58],
+        [-9.08, 142],
+        [-9.08, 141.5],
+        [-9, 141],
+        [-8.67, 140.58],
+        [-8.33, 140.25],
+        [-8, 140],
+        [-8.08, 139.42],
+        [-8.08, 138.83],
+        [-8.33, 138.25],
+        [-8.33, 137.67],
+        [-7.75, 138],
+        [-7.33, 138.25],
+        [-7.25, 138.75],
+        [-6.75, 138.58],
+        [-6.75, 138.58],
+        [-6.17, 138.42],
+        [-5.58, 138.17],
+        [-5.25, 137.83],
+        [-5, 137.33],
+        [-4.83, 136.75],
+        [-4.58, 136.17],
+        [-4.42, 135.58],
+        [-4.33, 135],
+        [-4.08, 134.58],
+        [-3.83, 134.08],
+        [-3.5, 133.67],
+        [-4, 133.25],
+        [-4, 132.83],
+        [-3.58, 132.75],
+        [-3.25, 132.67],
+        [-2.92, 132.25],
+        [-2.83, 131.92],
+        [-2.67, 132.17],
+        [-2.75, 132.67],
+        [-2.5, 133.08],
+        [-2.5, 133.67],
+        [-2, 133.83],
+        [-2.17, 133.25],
+        [-2.25, 132.75],
+        [-2.25, 132.25],
+        [-2, 131.83],
+        [-1.58, 131.83],
+        [-1.5, 131.42],
+        [-1.33, 130.83],
+        [np.nan, np.nan],
+        [16.25, 119.83],
+        [16.08, 120.33],
+        [16.58, 120.33],
+        [17.17, 120.5],
+        [17.58, 120.33],
+        [18, 120.5],
+        [18.5, 120.67],
+        [18.58, 121.08],
+        [18.33, 121.5],
+        [18.25, 121.92],
+        [18.5, 122.33],
+        [17.92, 122.17],
+        [17.42, 122.17],
+        [17.3351, 122.253],
+        [17.2501, 122.335],
+        [17.1651, 122.418],
+        [17.08, 122.5],
+        [16.955, 122.457],
+        [16.83, 122.415],
+        [16.705, 122.372],
+        [16.58, 122.33],
+        [16.17, 122],
+        [15.75, 121.58],
+        [15.75, 121.58],
+        [15.25, 121.42],
+        [14.58, 121.67],
+        [14.08, 121.83],
+        [13.92, 122.25],
+        [14.17, 122.58],
+        [14.17, 122.92],
+        [14, 123.33],
+        [13.75, 123.92],
+        [13.67, 123.58],
+        [13.33, 123.75],
+        [12.92, 124.17],
+        [12.83, 123.83],
+        [13, 123.42],
+        [13.58, 123.08],
+        [13.83, 122.58],
+        [13.5, 122.67],
+        [13.08, 122.67],
+        [13.67, 122.17],
+        [13.92, 121.75],
+        [13.58, 121.25],
+        [13.75, 120.67],
+        [14.17, 120.67],
+        [14.5, 121],
+        [14.75, 120.67],
+        [14.42, 120.58],
+        [14.75, 120.08],
+        [15.25, 120],
+        [15.67, 119.92],
+        [16.25, 119.83],
+        [np.nan, np.nan],
+        [8.42, 117.25],
+        [8.92, 117.5],
+        [9.25, 117.92],
+        [9.67, 118.42],
+        [10, 118.75],
+        [10.5, 119.17],
+        [11.25, 119.5],
+        [10.5, 119.67],
+        [10.08, 119.17],
+        [9.92, 118.83],
+        [9.42, 118.58],
+        [9.08, 118.17],
+        [8.75, 117.92],
+        [8.42, 117.25],
+        [np.nan, np.nan],
+        [13.42, 120.42],
+        [13.42, 120.83],
+        [13.33, 121.25],
+        [13, 121.58],
+        [12.5, 121.58],
+        [12.17, 121.17],
+        [12.5, 120.92],
+        [13, 120.75],
+        [13.42, 120.42],
+        [np.nan, np.nan],
+        [12.5, 124.33],
+        [12.42, 124.75],
+        [12.5, 125.25],
+        [12.08, 125.5],
+        [11.67, 125.5],
+        [11.08, 125.67],
+        [11.08, 125],
+        [10.67, 125],
+        [10.25, 125.25],
+        [10.17, 124.75],
+        [10.75, 124.75],
+        [10.83, 124.42],
+        [11.42, 124.42],
+        [11.33, 124.83],
+        [11.435, 124.872],
+        [11.54, 124.915],
+        [11.645, 124.957],
+        [11.75, 125],
+        [11.8126, 124.875],
+        [11.8751, 124.75],
+        [11.9376, 124.625],
+        [12, 124.5],
+        [12.5, 124.33],
+        [np.nan, np.nan],
+        [10.5, 121.92],
+        [10.92, 122],
+        [11.42, 122.08],
+        [11.83, 121.92],
+        [11.75, 122.5],
+        [11.5, 122.58],
+        [11.5, 123.17],
+        [10.92, 123.08],
+        [10.83, 123.5],
+        [10.42, 123.42],
+        [10.67, 123.83],
+        [11.08, 124],
+        [10.58, 124],
+        [10.17, 124],
+        [10.08, 124.5],
+        [9.67, 124.5],
+        [9.58, 124],
+        [9.92, 123.75],
+        [9.58, 123.5],
+        [9.75, 123.17],
+        [9.25, 123.33],
+        [9, 123],
+        [9.33, 122.67],
+        [9.43502, 122.608],
+        [9.54002, 122.545],
+        [9.64502, 122.483],
+        [9.75, 122.42],
+        [9.81255, 122.522],
+        [9.87506, 122.625],
+        [9.93755, 122.727],
+        [10, 122.83],
+        [10.42, 122.83],
+        [10.58, 122.5],
+        [10.5, 121.92],
+        [np.nan, np.nan],
+        [7.17, 122],
+        [7.75, 122.08],
+        [8, 122.33],
+        [8.17, 122.83],
+        [8.5, 123.08],
+        [8.67, 123.5],
+        [8.5, 123.83],
+        [8.08, 123.92],
+        [8.42, 124.25],
+        [8.5, 124.67],
+        [9, 124.83],
+        [8.83, 125.17],
+        [9.08, 125.5],
+        [9.75, 125.42],
+        [9.75, 125.42],
+        [9.33, 126],
+        [8.83, 126.33],
+        [8.25, 126.33],
+        [7.67, 126.58],
+        [7.25, 126.58],
+        [6.83, 126.33],
+        [6.33, 126.17],
+        [6.92, 126],
+        [7.33, 125.75],
+        [7, 125.5],
+        [6.75, 125.33],
+        [6.42, 125.58],
+        [6.08, 125.75],
+        [5.58, 125.42],
+        [5.92, 125.08],
+        [5.92, 124.75],
+        [6.17, 124.33],
+        [6.42, 124],
+        [7, 124],
+        [7.33, 124.25],
+        [7.58, 124],
+        [7.75, 123.58],
+        [7.42, 123.25],
+        [7.33, 122.92],
+        [7.75, 122.83],
+        [7.67, 122.5],
+        [7.25, 122.25],
+        [6.83, 122.08],
+        [7.17, 122],
+        [np.nan, np.nan],
+        [-5.5, 148.25],
+        [-5.58, 148.83],
+        [-5.58, 149.42],
+        [-5.5, 150],
+        [-5.5, 150.42],
+        [-5.5, 150.83],
+        [-4.92, 151.25],
+        [-4.92, 151.67],
+        [-4.17, 151.5],
+        [-4.17, 152.25],
+        [-4.67, 152.42],
+        [-5, 152.08],
+        [-5.58, 152],
+        [-5.58, 151.58],
+        [-6, 151.17],
+        [-6.25, 150.67],
+        [-6.25, 150.17],
+        [-6.25, 149.67],
+        [-6.17, 149.17],
+        [-5.83, 148.83],
+        [-5.75, 148.33],
+        [-5.5, 148.25],
+        [np.nan, np.nan],
+        [-2.21577, 147.198],
+        [-2.18725, 146.719],
+        [-2.13789, 146.596],
+        [-1.98672, 146.757],
+        [-1.966, 147.092],
+        [-2.07707, 147.366],
+        [-2.21577, 147.198],
+        [np.nan, np.nan],
+        [-3.73635, 152.468],
+        [-4.16656, 153.061],
+        [-4.28378, 153.092],
+        [-4.60661, 153.049],
+        [-4.74546, 152.955],
+        [-4.78954, 152.881],
+        [-4.55773, 152.723],
+        [-4.25507, 152.721],
+        [-3.73635, 152.468],
+        [np.nan, np.nan],
+        [-3.45722, 152.022],
+        [-3.45088, 151.938],
+        [-3.04936, 151.304],
+        [-2.83616, 151.072],
+        [-2.76105, 151.146],
+        [-3.10603, 151.622],
+        [-3.35671, 152.067],
+        [-3.43183, 152.084],
+        [-3.45722, 152.022],
+        [np.nan, np.nan],
+        [-5.42, 154.67],
+        [-5.5, 155.08],
+        [-6.17, 155.58],
+        [-6.58, 156],
+        [-6.83, 155.5],
+        [-6.5, 155.17],
+        [-6, 154.83],
+        [-5.42, 154.67],
+        [np.nan, np.nan],
+        [-7.30804, 157.408],
+        [-7.34627, 157.305],
+        [-7.26192, 157.033],
+        [-6.79431, 156.488],
+        [-6.67686, 156.479],
+        [-6.82917, 156.886],
+        [-7.11623, 157.139],
+        [-7.30804, 157.408],
+        [np.nan, np.nan],
+        [-8.53103, 157.849],
+        [-8.51261, 157.698],
+        [-8.33216, 157.552],
+        [-8.29246, 157.462],
+        [-8.29963, 157.3],
+        [-8.02901, 157.362],
+        [-7.96993, 157.437],
+        [-7.99715, 157.57],
+        [-8.41673, 157.885],
+        [-8.53103, 157.849],
+        [np.nan, np.nan],
+        [-8.47312, 159.783],
+        [-7.88709, 158.726],
+        [-7.67924, 158.554],
+        [-7.55889, 158.606],
+        [-7.96476, 159.168],
+        [-8.26925, 159.741],
+        [-8.35814, 159.839],
+        [-8.47312, 159.783],
+        [np.nan, np.nan],
+        [-9.51514, 161.285],
+        [-9.1631, 160.89],
+        [-8.92188, 160.834],
+        [-8.57258, 160.668],
+        [-8.47113, 160.678],
+        [-8.45288, 160.803],
+        [-8.53599, 160.904],
+        [-9.51514, 161.285],
+        [np.nan, np.nan],
+        [-9.25, 159.5],
+        [-9.33, 160.25],
+        [-9.67, 160.83],
+        [-9.92, 160.5],
+        [-9.83, 160.08],
+        [-9.83, 159.67],
+        [-9.5, 159.42],
+        [-9.25, 159.5],
+        [np.nan, np.nan],
+        [-10.17, 161.25],
+        [-10.33, 162],
+        [-10.75, 162.33],
+        [-10.67, 161.75],
+        [-10.17, 161.25],
+        [np.nan, np.nan],
+        [-15.6618, 166.776],
+        [-14.7996, 166.559],
+        [-14.7171, 166.578],
+        [-14.8255, 166.713],
+        [-15.1995, 166.845],
+        [-15.1803, 166.986],
+        [-14.9903, 167.063],
+        [-15.4712, 167.238],
+        [-15.5345, 167.2],
+        [-15.5856, 166.913],
+        [-15.6618, 166.776],
+        [np.nan, np.nan],
+        [-15.92, 167.33],
+        [-16.42, 167.92],
+        [-16.5, 167.5],
+        [-15.92, 167.33],
+        [np.nan, np.nan],
+        [-20.25, 164.25],
+        [-20.5, 164.75],
+        [-20.75, 165.33],
+        [-21.17, 165.67],
+        [-21.5, 166],
+        [-21.67, 166.5],
+        [-22, 166.83],
+        [-22.33, 167.17],
+        [-22.33, 166.67],
+        [-22, 166.17],
+        [-21.75, 165.75],
+        [-21.5, 165.42],
+        [-21.25, 165],
+        [-20.83, 164.58],
+        [-20.25, 164.25],
+        [np.nan, np.nan],
+        [-43.77, -176.83],
+        [-43.8, -176.17],
+        [-44.17, -176.58],
+        [-43.9, -176.5],
+        [-43.77, -176.83],
+        [np.nan, np.nan],
+        [-18, 177.33],
+        [-17.58, 177.42],
+        [-17.33, 177.75],
+        [-17.33, 178.25],
+        [-17.58, 178.67],
+        [-18, 178.67],
+        [-18.17, 178.17],
+        [-18.17, 177.75],
+        [-18, 177.33],
+        [np.nan, np.nan],
+        [-16.58, 178.58],
+        [-16.42, 179.17],
+        [-16.17, 179.83],
+        [-16.5, 179.67],
+        [-16.67, 179.92],
+        [-16.67, 179.33],
+        [-16.92, 178.75],
+        [-16.58, 178.58],
+        [np.nan, np.nan],
+        [-17.47, -149.58],
+        [-17.53, -149.33],
+        [-17.83, -149.17],
+        [-17.73, -149.5],
+        [-17.47, -149.58],
+        [np.nan, np.nan],
+        [22.03, -159.82],
+        [22.22, -159.58],
+        [22.22, -159.3],
+        [21.9, -159.38],
+        [21.9, -159.62],
+        [22.03, -159.82],
+        [np.nan, np.nan],
+        [21.58, -158.28],
+        [21.72, -157.98],
+        [21.3, -157.67],
+        [21.3, -158.12],
+        [21.58, -158.28],
+        [np.nan, np.nan],
+        [21.2134, -157.213],
+        [21.1608, -156.716],
+        [21.0424, -156.858],
+        [21.1017, -157.3],
+        [21.2134, -157.213],
+        [np.nan, np.nan],
+        [20.95, -156.68],
+        [20.9, -156.47],
+        [20.97, -156.28],
+        [20.73, -155.98],
+        [20.62, -156.2],
+        [20.57, -156.43],
+        [20.78, -156.47],
+        [20.95, -156.68],
+        [np.nan, np.nan],
+        [20.27, -155.88],
+        [20.15, -155.63],
+        [20.05, -155.37],
+        [19.92, -155.13],
+        [19.68, -155.02],
+        [19.52, -154.8],
+        [19.33, -155],
+        [19.27, -155.3],
+        [19.13, -155.52],
+        [18.93, -155.65],
+        [19.08, -155.92],
+        [19.35, -155.88],
+        [19.77, -156.05],
+        [19.95, -155.87],
+        [20.27, -155.88],
+        [np.nan, np.nan]
+    ])
+
+    coastlat = np.array([
+        coast[:, 0],
+        coast[:, 0]
+    ])
+    coastlon = np.array([
+        coast[:, 1],
+        coast[:, 1] - 360
+    ])
+    # }}}
+
+    if len(args) == 1:
+        if type(args[0]).__name__ == 'pairoptions':
+            options = args[0]
+    else:
+        # Process options
+        options = pairoptions(*args)
+
+    # Check on the type of mesh
+    #
+    # TODO: The folloeing needs to be reconfigured once plotting is brought
+    #       online
+    #
+    if type(mesh).__name__ == 'mesh2d':
+        # Project
+        xl = options.getfieldvalue('xlim', xlim)
+        yl = options.getfieldvalue('xlim', ylim)
+        x, y = gdaltransform(coastlat, coastlon, 'EPSG:4326', mesh.proj)
+        # Plot
+    else:
+        if options.getfieldvalue('coord', 'xy') != 'latlon' and options.getfieldvalue('coord', 'xy') != 'latlong':
+            x, y, z = AboveGround(coastlat, coastlon, mesh.r[0], 1000)
+            # Plot
+        else:
+            p = Polygon(np.hstack((x, y)))
+            # Plot
+            if options.getfieldvalue('coordcent', 'atlantic') == 'pacific':
+                xlim(options.getfieldvalue('xlim', [-360, 0]))
+            else:
+                xlim(options.getfieldvalue('xlim', [-180, 180]))
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_contour.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_contour.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_contour.js	(revision 27955)
@@ -0,0 +1,300 @@
+function plot_contour(md, datain, options, canvas) { //{{{
+	//PLOT_MESH - Function for plotting wireframe contour.
+	//
+	//   Usage:
+	//      plot_contour(md, options, canvas);
+	//
+	//   See also: PLOTMODEL, PLOT_MANAGER
+
+	//{{{
+	//Process data and model
+	//let meshresults = processmesh(md, [], options);
+	//let [x, y, z, index, is2d, isplanet, vertices, scale] = scaleMesh(md, meshresults, options);
+	let [x, y, z, index, is2d, isplanet]=processmesh(md,[],options);
+	options.removefield('log',0);;
+	let [data, datatype]=processdata(md,datain,options);
+	if (vesl.helpers.isEmptyOrUndefined(data)) error('data provided is empty');
+	
+	//check is2d
+	if (!is2d && !isplanet) {
+		error('plot_contour error message: contour not supported for 3d meshes, project on a layer');
+	}
+
+	//first, process data: must be on nodes
+	if (datatype==1) {
+		//elements -> take average
+		//data=averaging(md,data,0);
+		error('plot_contour error message: contour not supported for element data yet');
+	} else if (datatype==2) {
+		//nodes -> do nothing
+	} else if (datatype==3) {
+		//quiver -> take norm
+		//data=sqrt(sum(datain.*datain,2)); //(original)
+		//data=ArraySqrt(ArraySum(ArrayMultiply(datain, datain),2)); //js version
+		error('plot_contour error message: contour not supported for quiver data yet');
+	} else {
+		error('datatype not supported yet');
+	}
+
+	//prepare colors
+	if (options.exist('contouronly')) {
+		//remove the previous plots
+		//cla
+		error('contouronly not supported yet');
+	}
+	let color=options.getfieldvalue('contourcolor','yellow');
+	let linewidth=options.getfieldvalue('linewidth',1);
+
+	//get contours levels
+	let contourlevels=options.getfieldvalue('contourlevels');
+	let levels;
+	if (typeof(contourlevels) == 'number') {
+		//levels=round_ice(linspace(max(data),min(data),contourlevels),2);
+		error('numeric contourlevels not supported yet - must provide levels as an array');
+	} else {
+		//levels=sort(unique(levels),'descend');
+		levels=ArraySort(ArrayUnique(contourlevels)).reverse();
+	}
+	let numlevels=levels.length;
+
+	//initialization of some variables
+	let numberofelements=index.length; //same as size(index,1)
+	let elementslist=NewArrayFillIncrement(0,numberofelements,1); //1:numberofelements;
+	let c=[];
+	let h=[];;
+
+	//get unique edges in mesh
+	//1: list of edges
+	index = ArraySubtract2D(index, 1);
+	//edges=[index[:,[1,2]); index(:,[2,3]); index(:,[3,1])];
+	let edges=ArrayConcat(ArrayConcat(ArrayCol(index,[0,1]), ArrayCol(index,[1,2])), ArrayCol(index,[2,0]));
+	//2: find unique edges
+	//[edges,I,J]=unique(sort(edges,2),'rows');
+	[edges,I,J]=ArrayUnique(ArraySort(edges,2),'rows');
+	//3: unique edge numbers
+	let vec=J;
+	//4: unique edges numbers in each triangle (2 triangles sharing the same edge will have
+	//   the same edge number)
+	let edges_tria=ArrayTranspose([ArrayIndex(vec,elementslist), ArrayIndex(vec,ArrayAdd(elementslist,numberofelements)), ArrayIndex(vec,ArrayAdd(elementslist,2*numberofelements))]);
+
+	//segments [nodes1 nodes2]
+	let Seg1=ArrayCol(index,[0,1]);
+	let Seg2=ArrayCol(index,[1,2]);
+	let Seg3=ArrayCol(index,[2,0]);
+	
+	//segment numbers [1;4;6;...]
+	let Seg1_num=ArrayCol(edges_tria,0);
+	let Seg2_num=ArrayCol(edges_tria,1);
+	let Seg3_num=ArrayCol(edges_tria,2);
+
+	//value of data on each tips of the segments
+	let Data1=ArrayIndex(data,Seg1);
+	let Data2=ArrayIndex(data,Seg2);
+	let Data3=ArrayIndex(data,Seg3);
+
+	//get the ranges for each segment
+	let Range1=ArraySort(Data1,2);
+	let Range2=ArraySort(Data2,2);
+	let Range3=ArraySort(Data3,2);
+	
+	let hx = [];
+	let hy = [];
+	let hz = [];
+	for (let i=0; i<numlevels; i++) {
+		let level=levels[i];
+
+		//find the segments that contain this value
+		let pos1=ArrayAnd(ArrayLessThan(ArrayCol(Range1,0),level), ArrayGreaterThan(ArrayCol(Range1,1),level)); //pos1=(Range1(:,1)<level & Range1(:,2)>level);
+		let pos2=ArrayAnd(ArrayLessThan(ArrayCol(Range2,0),level), ArrayGreaterThan(ArrayCol(Range2,1),level)); //pos2=(Range2(:,1)<level & Range2(:,2)>level);
+		let pos3=ArrayAnd(ArrayLessThan(ArrayCol(Range3,0),level), ArrayGreaterThan(ArrayCol(Range3,1),level)); //pos3=(Range3(:,1)<level & Range3(:,2)>level);
+
+		//get elements
+		let poselem12=ArrayAnd(pos1, pos2);
+		let poselem13=ArrayAnd(pos1, pos3);
+		let poselem23=ArrayAnd(pos2, pos3);
+		let poselem=find(ArrayOr(ArrayOr(poselem12, poselem13), poselem23));
+		let numelems=length(poselem);
+
+		//if no element has been flagged, skip to the next level
+		if (numelems==0) {
+			continue;
+		}
+
+		//go through the elements and build the coordinates for each segment (1 by element)
+		let x1=zeros(numelems,1);
+		let x2=zeros(numelems,1);
+		let y1=zeros(numelems,1);
+		let y2=zeros(numelems,1);
+		let z1=zeros(numelems,1);
+		let z2=zeros(numelems,1);
+
+		let edge_l=zeros(numelems,2);
+
+		for (let j=0; j < numelems; j++) {
+
+			let weight1=(level-Data1[poselem[j]][0])/(Data1[poselem[j]][1]-Data1[poselem[j]][0]);
+			let weight2=(level-Data2[poselem[j]][0])/(Data2[poselem[j]][1]-Data2[poselem[j]][0]);
+			let weight3=(level-Data3[poselem[j]][0])/(Data3[poselem[j]][1]-Data3[poselem[j]][0]);
+
+			if (poselem12[poselem[j]]) {
+				x1[j]=x[Seg1[poselem[j]][0]]+weight1*(x[Seg1[poselem[j]][1]]-x[Seg1[poselem[j]][0]]);
+				x2[j]=x[Seg2[poselem[j]][0]]+weight2*(x[Seg2[poselem[j]][1]]-x[Seg2[poselem[j]][0]]);
+				y1[j]=y[Seg1[poselem[j]][0]]+weight1*(y[Seg1[poselem[j]][1]]-y[Seg1[poselem[j]][0]]);
+				y2[j]=y[Seg2[poselem[j]][0]]+weight2*(y[Seg2[poselem[j]][1]]-y[Seg2[poselem[j]][0]]);
+				z1[j]=z[Seg1[poselem[j]][0]]+weight1*(z[Seg1[poselem[j]][1]]-z[Seg1[poselem[j]][0]]);
+				z2[j]=z[Seg2[poselem[j]][0]]+weight2*(z[Seg2[poselem[j]][1]]-z[Seg2[poselem[j]][0]]);
+				edge_l[j][0]=Seg1_num[poselem[j]];
+				edge_l[j][1]=Seg2_num[poselem[j]];
+
+			} else if (poselem13[poselem[j]]) {
+                x1[j]=x[Seg1[poselem[j]][0]]+weight1*(x[Seg1[poselem[j]][1]]-x[Seg1[poselem[j]][0]]);
+				x2[j]=x[Seg3[poselem[j]][0]]+weight3*(x[Seg3[poselem[j]][1]]-x[Seg3[poselem[j]][0]]);
+				y1[j]=y[Seg1[poselem[j]][0]]+weight1*(y[Seg1[poselem[j]][1]]-y[Seg1[poselem[j]][0]]);
+				y2[j]=y[Seg3[poselem[j]][0]]+weight3*(y[Seg3[poselem[j]][1]]-y[Seg3[poselem[j]][0]]);
+				z1[j]=z[Seg1[poselem[j]][0]]+weight1*(z[Seg1[poselem[j]][1]]-z[Seg1[poselem[j]][0]]);
+				z2[j]=z[Seg3[poselem[j]][0]]+weight3*(z[Seg3[poselem[j]][1]]-z[Seg3[poselem[j]][0]]);
+				edge_l[j][0]=Seg1_num[poselem[j]];
+				edge_l[j][1]=Seg3_num[poselem[j]];
+
+			} else if (poselem23[poselem[j]]) {
+                x1[j]=x[Seg2[poselem[j]][0]]+weight2*(x[Seg2[poselem[j]][1]]-x[Seg2[poselem[j]][0]]);
+				x2[j]=x[Seg3[poselem[j]][0]]+weight3*(x[Seg3[poselem[j]][1]]-x[Seg3[poselem[j]][0]]);
+				y1[j]=y[Seg2[poselem[j]][0]]+weight2*(y[Seg2[poselem[j]][1]]-y[Seg2[poselem[j]][0]]);
+				y2[j]=y[Seg3[poselem[j]][0]]+weight3*(y[Seg3[poselem[j]][1]]-y[Seg3[poselem[j]][0]]);
+				z1[j]=z[Seg2[poselem[j]][0]]+weight2*(z[Seg2[poselem[j]][1]]-z[Seg2[poselem[j]][0]]);
+				z2[j]=z[Seg3[poselem[j]][0]]+weight3*(z[Seg3[poselem[j]][1]]-z[Seg3[poselem[j]][0]]);
+				edge_l[j][0]=Seg2_num[poselem[j]];
+				edge_l[j][1]=Seg3_num[poselem[j]];
+			} else {
+				//it shoud not go here
+			}
+			let test = new THREE.Vector3(x1[j], y1[j], z1[j]);
+			//console.log('helo', test.length());
+		}
+		//now that we have the segments, we must try to connect them...
+
+		//loop over the subcontours
+		while (!isempty(edge_l)) {
+			//take the right edge of the second segment and connect it to the next segments if any
+			let e1=edge_l[0][0];   let e2=edge_l[0][1];
+			let xc=[x1[0],x2[0]]; let yc=[y1[0],y2[0]]; let zc=[z1[0],z2[0]]; 
+
+			//erase the lines corresponding to this edge
+			//edge_l(1,:)=[];
+			//x1(1)=[]; x2(1)=[];
+			//y1(1)=[]; y2(1)=[];
+			//z1(1)=[]; z2(1)=[]
+			edge_l.splice(0,1);
+			x1.splice(0,1); x2.splice(0,1);
+			y1.splice(0,1); y2.splice(0,1);
+			z1.splice(0,1); z2.splice(0,1);
+			let [ro1,co1]=find(ArrayEqual(edge_l,e1));
+
+			while (!isempty(ro1)) {
+				if (co1==0) {
+					xc=[x2[ro1]].concat(xc); yc=[y2[ro1]].concat(yc); zc=[z2[ro1]].concat(zc);
+
+					//next edge:
+					e1=edge_l[ro1][1];
+
+				} else {
+					xc=[x1[ro1]].concat(xc); yc=[y1[ro1]].concat(yc); zc=[z1[ro1]].concat(zc);
+
+					//next edge:
+					e1=edge_l[ro1][0];
+				}
+
+				//erase the lines of this
+				edge_l.splice(ro1,1);
+				x1.splice(ro1,1); x2.splice(ro1,1);
+				y1.splice(ro1,1); y2.splice(ro1,1);
+				z1.splice(ro1,1); z2.splice(ro1,1);
+
+				//next connection
+				[ro1,co1]=find(ArrayEqual(edge_l,e1));
+			}
+
+			//same thing the other way (to the right)
+			let [ro2,co2]=find(ArrayEqual(edge_l,e2));
+
+			while (!isempty(ro2)) {
+
+				if (co2==0) {
+					xc=[x2[ro2]].concat(xc); yc=[y2[ro2]].concat(yc); zc=[z2[ro2]].concat(zc);
+
+					//next edge:
+					e2=edge_l[ro2][1];
+
+				} else {
+					xc=[x1[ro2]].concat(xc); yc=[y1[ro2]].concat(yc); zc=[z1[ro2]].concat(zc);
+
+					//next edge:
+					e2=edge_l[ro2][0];
+				}
+
+				//erase the lines of this
+				edge_l.splice(ro2,1);
+				x1.splice(ro2,1); x2.splice(ro2,1);
+				y1.splice(ro2,1); y2.splice(ro2,1);
+				z1.splice(ro2,1); z2.splice(ro2,1);
+
+				//next connection
+				[ro2,co2]=find(ArrayEqual(edge_l,e2));
+			}
+
+			//we now have one subcontour ready to be plotted
+			if (options.getfieldvalue('contouronly',0)) {
+				if (isplanet) {
+					hx = ArrayConcat(hx, ArrayConcat(xc, [NaN]));
+					hy = ArrayConcat(hy, ArrayConcat(yc, [NaN]));
+					hz = ArrayConcat(hz, ArrayConcat(zc, [NaN]));
+					//h=[h;patch('Xdata',[xc;NaN],'Ydata',[yc;NaN],'Zdata',[zc;NaN],'facecolor','none','linewidth',linewidth)];
+				} else {
+					hx = ArrayConcat(hx, ArrayConcat(xc, [NaN]));
+					hy = ArrayConcat(hy, ArrayConcat(yc, [NaN]));
+					hz = ArrayConcat(hz, ArrayConcat(zc, [NaN]));
+					//h=[h;patch('Xdata',[xc;NaN],'Ydata',[yc;NaN],'Zdata',zc,'Cdata',zc,'facecolor','none','edgecolor','flat','linewidth',linewidth)];
+				}
+				//hold on      
+			} else {
+				//dist = 5000;
+				dist = 0;
+				if (isplanet) {
+					if ((max(xc)-min(xc)+max(yc)-min(yc)+max(zc)-min(zc))<dist) { continue; }
+					hx = ArrayConcat(hx, ArrayConcat(xc, [NaN]));
+					hy = ArrayConcat(hy, ArrayConcat(yc, [NaN]));
+					hz = ArrayConcat(hz, ArrayConcat(zc, [NaN]));
+					//h=[h;patch('Xdata',[xc;NaN],'Ydata',[yc;NaN],'Zdata',[zc;NaN],'facecolor','none','edgecolor',color,'linewidth',linewidth)];
+					//c = horzcat([level, xc'; length(xc), yc'; length(xc), zc']);
+				} else {
+					if ((max(xc)-min(xc)+max(yc)-min(yc))<dist) { continue; }
+					hx = ArrayConcat(hx, ArrayConcat(xc, [NaN]));
+					hy = ArrayConcat(hy, ArrayConcat(yc, [NaN]));
+					hz = ArrayConcat(hz, ArrayConcat(zc, [NaN]));
+					//h=patch('Xdata',[xc;NaN],'Ydata',[yc;NaN],'facecolor','none','edgecolor',color,'linewidth',linewidth);
+					//c = horzcat([level, xc'; length(xc), yc']);
+				}
+				//clabel(c,h,'FontSize',10,'labelspacing',20000,'color',color);
+				//hold on
+			}
+			//break;
+		}
+	}
+
+	//Compute gl variables:
+	let scale = options.getfieldvalue('contourscale', 1.0005);
+	let node = new Node(
+		'canvas', canvas,
+		'options', options,
+		'md', md,
+		'name', 'contours',
+		'replaceNaN', false,
+		'shaderName', 'line_strip',
+		'lineWidth', options.getfieldvalue('linewidth', 1),
+		'scale', [scale, scale, scale]
+	);
+
+	node.patch('Vertices', [hx, hy, hz], 'FaceColor', 'none', 'EdgeColor', color);
+	//node.patch('Faces', elements, 'Vertices', vertices, 'FaceColor', 'none', 'EdgeColor', edgecolor);
+	//}}}
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_contour.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_contour.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_contour.m	(revision 27955)
@@ -0,0 +1,274 @@
+function plot_contour(md,datain,options)
+%PLOT_CONTOUR - plot contours of a given field
+%
+%   Usage:
+%      plot_contour(md,data,options);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z index is2d isplanet]=processmesh(md,[],options);
+options=removefield(options,'log',0);
+[data datatype]=processdata(md,datain,options);
+if isempty(data), error('data provided is empty'); end
+
+%check is2d
+if ~is2d & ~isplanet,
+	error('plot_contour error message: contour not supported for 3d meshes, project on a layer');
+end
+
+%first, process data: must be on nodes
+if datatype==1,
+	%elements -> take average
+	data=averaging(md,data,0);
+elseif datatype==2,
+	%nodes -> do nothing
+elseif datatype==3,
+	%quiver -> take norm
+	data=sqrt(sum(datain.*datain,2));
+else
+	error('datatype not supported yet');
+end
+
+%prepare colors
+if exist(options,'contouronly')
+	%remove the previous plots
+	cla
+end
+color=getfieldvalue(options,'contourcolor','y');
+linewidth=getfieldvalue(options,'linewidth',1);
+
+%get contours levels
+contourlevels=getfieldvalue(options,'contourlevels');
+if isnumeric(contourlevels),
+	levels=round_ice(linspace(max(data),min(data),contourlevels),2);
+else
+	levels=[];
+	for i=1:length(contourlevels)
+		levels(end+1)=contourlevels{i};
+	end
+	levels=sort(unique(levels),'descend');
+end
+numlevels=length(levels);
+
+%initialization of some variables
+numberofelements=size(index,1);
+elementslist=1:numberofelements;
+c=[];
+h=[];
+
+%get unique edges in mesh
+%1: list of edges
+edges=[index(:,[1,2]); index(:,[2,3]); index(:,[3,1])];
+%2: find unique edges
+[edges,I,J]=unique(sort(edges,2),'rows');
+%3: unique edge numbers
+vec=J;
+%4: unique edges numbers in each triangle (2 triangles sharing the same edge will have
+%   the same edge number)
+edges_tria=[vec(elementslist), vec(elementslist+numberofelements), vec(elementslist+2*numberofelements)];
+
+%segments [nodes1 nodes2]
+Seg1=index(:,[1 2]);
+Seg2=index(:,[2 3]);
+Seg3=index(:,[3 1]);
+
+%segment numbers [1;4;6;...]
+Seg1_num=edges_tria(:,1);
+Seg2_num=edges_tria(:,2);
+Seg3_num=edges_tria(:,3);
+
+%value of data on each tips of the segments
+Data1=data(Seg1);
+Data2=data(Seg2);
+Data3=data(Seg3);
+
+%get the ranges for each segment
+Range1=sort(Data1,2);
+Range2=sort(Data2,2);
+Range3=sort(Data3,2);
+
+for i=1:numlevels
+
+	level=levels(i);
+
+	%find the segments that contain this value
+	pos1=(Range1(:,1)<level & Range1(:,2)>level);
+	pos2=(Range2(:,1)<level & Range2(:,2)>level);
+	pos3=(Range3(:,1)<level & Range3(:,2)>level);
+
+	%get elements
+	poselem12=(pos1 & pos2);
+	poselem13=(pos1 & pos3);
+	poselem23=(pos2 & pos3);
+	poselem=find(poselem12 | poselem13 | poselem23);
+	numelems=length(poselem);
+
+	%if no element has been flagged, skip to the next level
+	if numelems==0,
+		continue,
+	end
+
+	%go through the elements and build the coordinates for each segment (1 by element)
+	x1=zeros(numelems,1);
+	x2=zeros(numelems,1);
+	y1=zeros(numelems,1);
+	y2=zeros(numelems,1);
+	z1=zeros(numelems,1);
+	z2=zeros(numelems,1);
+
+	edge_l=zeros(numelems,2);
+
+	for j=1:numelems,
+
+		weight1=(level-Data1(poselem(j),1))/(Data1(poselem(j),2)-Data1(poselem(j),1));
+		weight2=(level-Data2(poselem(j),1))/(Data2(poselem(j),2)-Data2(poselem(j),1));
+		weight3=(level-Data3(poselem(j),1))/(Data3(poselem(j),2)-Data3(poselem(j),1));
+
+		if poselem12(poselem(j));
+
+			x1(j)=x(Seg1(poselem(j),1))+weight1*(x(Seg1(poselem(j),2))-x(Seg1(poselem(j),1)));
+			x2(j)=x(Seg2(poselem(j),1))+weight2*(x(Seg2(poselem(j),2))-x(Seg2(poselem(j),1)));
+			y1(j)=y(Seg1(poselem(j),1))+weight1*(y(Seg1(poselem(j),2))-y(Seg1(poselem(j),1)));
+			y2(j)=y(Seg2(poselem(j),1))+weight2*(y(Seg2(poselem(j),2))-y(Seg2(poselem(j),1)));
+			z1(j)=z(Seg1(poselem(j),1))+weight1*(z(Seg1(poselem(j),2))-z(Seg1(poselem(j),1)));
+			z2(j)=z(Seg2(poselem(j),1))+weight2*(z(Seg2(poselem(j),2))-z(Seg2(poselem(j),1)));
+			edge_l(j,1)=Seg1_num(poselem(j));
+			edge_l(j,2)=Seg2_num(poselem(j));
+
+		elseif poselem13(poselem(j)),
+
+			x1(j)=x(Seg1(poselem(j),1))+weight1*(x(Seg1(poselem(j),2))-x(Seg1(poselem(j),1)));
+			x2(j)=x(Seg3(poselem(j),1))+weight3*(x(Seg3(poselem(j),2))-x(Seg3(poselem(j),1)));
+			y1(j)=y(Seg1(poselem(j),1))+weight1*(y(Seg1(poselem(j),2))-y(Seg1(poselem(j),1)));
+			y2(j)=y(Seg3(poselem(j),1))+weight3*(y(Seg3(poselem(j),2))-y(Seg3(poselem(j),1)));
+			z1(j)=z(Seg1(poselem(j),1))+weight1*(z(Seg1(poselem(j),2))-z(Seg1(poselem(j),1)));
+			z2(j)=z(Seg3(poselem(j),1))+weight3*(z(Seg3(poselem(j),2))-z(Seg3(poselem(j),1)));
+
+			edge_l(j,1)=Seg1_num(poselem(j));
+			edge_l(j,2)=Seg3_num(poselem(j));
+
+		elseif poselem23(poselem(j)),
+
+			x1(j)=x(Seg2(poselem(j),1))+weight2*(x(Seg2(poselem(j),2))-x(Seg2(poselem(j),1)));
+			x2(j)=x(Seg3(poselem(j),1))+weight3*(x(Seg3(poselem(j),2))-x(Seg3(poselem(j),1)));
+			y1(j)=y(Seg2(poselem(j),1))+weight2*(y(Seg2(poselem(j),2))-y(Seg2(poselem(j),1)));
+			y2(j)=y(Seg3(poselem(j),1))+weight3*(y(Seg3(poselem(j),2))-y(Seg3(poselem(j),1)));
+			z1(j)=z(Seg2(poselem(j),1))+weight2*(z(Seg2(poselem(j),2))-z(Seg2(poselem(j),1)));
+			z2(j)=z(Seg3(poselem(j),1))+weight3*(z(Seg3(poselem(j),2))-z(Seg3(poselem(j),1)));
+			edge_l(j,1)=Seg2_num(poselem(j));
+			edge_l(j,2)=Seg3_num(poselem(j));
+		else
+			%it shoud not go here
+		end
+	end
+
+	%now that we have the segments, we must try to connect them...
+
+	%loop over the subcontours
+	while ~isempty(edge_l),
+
+		%take the right edge of the second segment and connect it to the next segments if any
+		e1=edge_l(1,1);   e2=edge_l(1,2);
+		xc=[x1(1);x2(1)]; yc=[y1(1);y2(1)]; zc=[z1(1);z2(1)]; 
+
+		%erase the lines corresponding to this edge
+		edge_l(1,:)=[];
+		x1(1)=[]; x2(1)=[];
+		y1(1)=[]; y2(1)=[];
+		z1(1)=[]; z2(1)=[];
+
+		[ro1,co1]=find(edge_l==e1);
+
+		while ~isempty(ro1)
+
+			if co1==1,
+				xc=[x2(ro1);xc]; yc=[y2(ro1);yc]; zc=[z2(ro1);zc];
+
+				%next edge:
+				e1=edge_l(ro1,2);
+
+			else
+				xc=[x1(ro1);xc]; yc=[y1(ro1);yc]; zc=[z1(ro1);zc];
+
+				%next edge:
+				e1=edge_l(ro1,1);
+			end
+
+			%erase the lines of this
+			edge_l(ro1,:)=[];
+			x1(ro1)=[]; x2(ro1)=[];
+			y1(ro1)=[]; y2(ro1)=[];
+			z1(ro1)=[]; z2(ro1)=[];
+
+			%next connection
+			[ro1,co1]=find(edge_l==e1);
+		end
+
+		%same thing the other way (to the right)
+		[ro2,co2]=find(edge_l==e2);
+
+		while ~isempty(ro2)
+
+			if co2==1,
+				xc=[xc;x2(ro2)]; yc=[yc;y2(ro2)]; zc=[zc;z2(ro2)];
+
+				%next edge:
+				e2=edge_l(ro2,2);
+			else
+				xc=[xc;x1(ro2)]; yc=[yc;y1(ro2)]; zc=[zc;z1(ro2)];
+
+				%next edge:
+				e2=edge_l(ro2,1);
+			end
+
+			%erase the lines of this
+			edge_l(ro2,:)=[];
+			x1(ro2)=[]; x2(ro2)=[];
+			y1(ro2)=[]; y2(ro2)=[];
+			z1(ro2)=[]; z2(ro2)=[];
+
+			%next connection
+			[ro2,co2]=find(edge_l==e2);
+		end
+
+		%we now have one subcontour ready to be plotted
+		if getfieldvalue(options,'contouronly',0),
+			if isplanet,
+				h=[h;patch('Xdata',[xc;NaN],'Ydata',[yc;NaN],'Zdata',[zc;NaN],'facecolor','none','linewidth',linewidth)];
+			else
+				h=[h;patch('Xdata',[xc;NaN],'Ydata',[yc;NaN],'Zdata',zc,'Cdata',zc,'facecolor','none','edgecolor','flat','linewidth',linewidth)];
+			end
+			hold on      
+		else
+			%dist = 5000;
+			dist = 0;
+			if isplanet,
+				if (max(xc)-min(xc)+max(yc)-min(yc)+max(zc)-min(zc))<dist, continue; end
+				h=[h;patch('Xdata',[xc;NaN],'Ydata',[yc;NaN],'Zdata',[zc;NaN],'facecolor','none','edgecolor',color,'linewidth',linewidth)];
+				c = horzcat([level, xc'; length(xc), yc'; length(xc), zc']);
+			else
+				if (max(xc)-min(xc)+max(yc)-min(yc))<dist, continue; end
+				h=patch('Xdata',[xc;NaN],'Ydata',[yc;NaN],'facecolor','none','edgecolor',color,'linewidth',linewidth);
+				c = horzcat([level, xc'; length(xc), yc']);
+			end
+			%clabel(c,h,'FontSize',10,'labelspacing',20000,'color',color);
+			hold on
+		end
+
+		% Update the CS data structure as per "contours.m"
+		% so that clabel works
+		%c = horzcat(c,[level, xc'; length(xc), yc']);
+
+	end
+end
+
+%labels?
+if (~strcmpi(getfieldvalue(options,'contourticks','on'),'off') & ~isempty(c) & ~isempty(h))
+	if exist(options,'contouronly')
+		clabel(c,h);
+	else
+		%clabel(c,h,'color',color,'FontSize',10,'labelspacing',20000);
+		%clabel(c,h,'FontSize',10,'labelspacing',20000);
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_contour.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_contour.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_contour.py	(revision 27955)
@@ -0,0 +1,39 @@
+import numpy as np
+from averaging import averaging
+from processmesh import processmesh
+from processdata import processdata
+
+
+def plot_contour(md, datain, options, ax):
+    '''
+    plot contours of a given field (called within plotmodel)
+
+    Usage:
+        plot_contour(md, data, options)
+
+    See also: plotmodel
+    '''
+
+    x, y, z, elements, is2d, isplanet = processmesh(md, datain, options)
+    data, datatype = processdata(md, datain, options)
+
+    # process data: must be on nodes
+    if datatype == 1:  # element data
+        data = averaging(md, data, 0)
+    elif datatype == 2:
+        pass
+    elif datatype == 3:  # quiver (vector) data
+        data = np.sqrt(datain**2)
+    else:
+        raise ValueError('datatype not supported in call to plot_contour')
+
+    # contouronly TODO (cla will also clear an overlay image)
+
+    # retrieve necessary options
+    levels = options.getfieldvalue('contourlevels')
+    norm = options.getfieldvalue('colornorm')
+    colors = options.getfieldvalue('contourcolors', 'y')
+    linestyles = options.getfieldvalue('contourlinestyles', '-')
+    linewidths = options.getfieldvalue('contourlinewidths', 1)
+
+    ax.tricontour(x, y, elements, data, levels, colors=colors, norm=norm, linestyles=linestyles, linewidths=linewidths)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_drivingstress.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_drivingstress.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_drivingstress.m	(revision 27955)
@@ -0,0 +1,24 @@
+function plot_drivingstress(md,options,width,i)
+%PLOT_DRIVINGSTRESS - plot driving stress
+%
+%   Usage:
+%      plot_drivingstress(md,options,width,i);
+%
+%   See also: PLOTMODEL, PLOT_UNIT, PLOT_MANAGER
+
+%get driving stress
+[sx sy s]=drivingstress(md);
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[dstress datatype]=processdata(md,s,options);
+dstress=dstress/1000;
+
+%plot mesh quivervel
+subplot(width,width,i); 
+plot_unit(x,y,z,elements,dstress,is2d,isplanet,datatype,options)
+
+%apply options
+options=addfielddefault(options,'title','Driving stress [kPa]');
+options=addfielddefault(options,'view',2);
+applyoptions(md,dstress,options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_edgeoverlay.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_edgeoverlay.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_edgeoverlay.py	(revision 27955)
@@ -0,0 +1,133 @@
+import numpy as np
+import matplotlib as mpl
+import matplotlib.pyplot as plt
+from processmesh import processmesh
+from matplotlib import collections
+from scipy.stats import percentileofscore
+
+
+def plot_edgeoverlay(md, datain, options, ax):
+    '''
+    plot_channels - plot channels area for GLADS
+    Usage:
+        plot_channels(md, options, fig, axes)
+
+    See also: PLOTMODEL'''
+
+    # if md.mesh.numberofedges not in np.shape(datain):
+    #     raise ValueError('Data must be defined on edges to be ploted as an edge overlay')
+
+    x, y, z, elements, is2d, isplanet = processmesh(md, [], options)
+    Edges = md.mesh.edges - 1
+
+    #First we mask values under a given value define by quantiles
+    if options.exist('edgemin'):
+        minval = options.getfieldvalue('edgemin', 0)
+        minquant = percentileofscore(datain, minval, kind='weak')
+        minquant = minquant / 100
+    else:
+        minquant = 0.7
+        minval = np.quantile(datain, minquant)
+    print("For the overlay we plot values above {:.4g} wich corresponds to the {}% percentile".format(minval, minquant * 100))
+
+    flags = datain > minval  #6.7e-5  # this is appropriate for channel Area (perhaps)
+
+    edgetype = options.getfieldvalue('edgetype', 'thickness')
+
+    if edgetype == "color":
+        #create an nodewise dataset from edges
+        NodeMask = np.ones(np.shape(md.mesh.x), dtype=bool)
+        #We grab all the starts from the unmasked edges
+        Starters = Edges[np.where(flags), 0]
+        NodeMask[Starters] = False
+        Xstart = np.ma.array(x, mask=NodeMask)
+        Ystart = np.ma.array(y, mask=NodeMask)
+
+        NodeMask = np.ones(np.shape(md.mesh.x), dtype=bool)
+        Enders = Edges[np.where(flags), 1]
+        NodeMask[Enders] = False
+        Xend = np.ma.array(x, mask=NodeMask)
+        Yend = np.ma.array(y, mask=NodeMask)
+
+        #define vectors from the start and end point of the unmasked edges
+        EdgeEnd = Edges[:, 1]
+        EdgeStart = Edges[:, 0]
+        quiverU = np.ma.array(Xend[EdgeEnd] - Xstart[EdgeStart], mask=np.invert(flags))
+        quiverV = np.ma.array(Yend[EdgeEnd] - Ystart[EdgeStart], mask=np.invert(flags))
+
+        #mask out the values from the data and create colorscale
+        Masked = np.ma.masked_array(datain, mask=np.invert(flags))
+        cbar_extend = 0
+        edgemap = plt.cm.get_cmap('inferno')
+        if options.exist('cedgeaxis'):
+            lims = options.getfieldvalue('cedgeaxis', [Masked.min(), Masked.max()])
+            edgenorm = mpl.colors.Normalize(vmin=lims[0], vmax=lims[1])
+            if lims[0] > Masked.min():
+                edgemap.set_under('r')
+                cbar_extend += 2
+            if lims[1] < Masked.max():
+                edgemap.set_over('k')
+                cbar_extend += 1
+        else:
+            edgenorm = mpl.colors.Normalize(vmin=Masked.min(), vmax=Masked.max())
+
+        if cbar_extend == 0:
+            extend = 'neither'
+        elif cbar_extend == 1:
+            extend = 'max'
+        elif cbar_extend == 2:
+            extend = 'min'
+        elif cbar_extend == 3:
+            extend = 'both'
+
+        ax.quiver(Xstart[EdgeStart], Ystart[EdgeStart], quiverU, quiverV, datain,
+                  units="xy", angles="xy", scale_units="xy", scale=1,
+                  headwidth=0, headlength=0, width=100, headaxislength=0,
+                  norm=edgenorm, cmap=edgemap)
+
+        #plt.colorbar(plt.cm.ScalarMappable(norm=edgenorm, cmap=edgemap), ax=ax, extend=extend, orientation='horizontal', anchor=(1, 0))
+        cbarax = ax.inset_axes([0.02, 0.02, 0.96, 0.05])
+        #inset_axes(ax, width="100%", height="5%", loc='lower center', borderpad=-5)
+        mpl.colorbar.ColorbarBase(cbarax, norm=edgenorm, cmap=edgemap, extend=extend, orientation='horizontal', ticklocation='top')
+
+    elif edgetype == 'thickness':
+        #First we classify a range
+        if options.exist('edgeranges'):
+            edgeranges = options.getfieldvalue('edgeranges', 2)
+        else:
+            edgeranges = 2
+
+        quantrange = np.linspace(minquant, 1, edgeranges + 1)[:-1]
+        flags = []
+        legtext = []
+        for Qindex, quantile in enumerate(quantrange):
+            if quantile < quantrange[-1]:
+                lowquant = np.quantile(datain, quantile)
+                highquant = np.quantile(datain, quantrange[Qindex + 1])
+                flags.append(np.logical_and(datain >= lowquant, datain <= highquant))
+                legtext.append('From  {:.2g} to {:.2g}'. format(lowquant, highquant))
+            else:
+                lowquant = np.quantile(datain, quantile)
+                flags.append((datain > lowquant))
+                legtext.append('More than {:.2g}'.format(lowquant))
+
+        flags = np.asarray(np.squeeze(flags))
+        EdgeEnd = Edges[:, 1]
+        EdgeStart = Edges[:, 0]
+
+        for index in range(edgeranges):
+            linecol = []
+            #We loop on the result and aonly add to a linecollection the flaged edges.
+            for datindex, datval in enumerate(datain):
+                if flags[index, datindex]:
+                    linecol.append([(x[EdgeStart[datindex]], y[EdgeStart[datindex]]),
+                                    (x[EdgeEnd[datindex]], y[EdgeEnd[datindex]])])
+
+            lc = collections.LineCollection(linecol, color='k', linewidth=0.5 + index,
+                                            label=legtext[index])
+            ax.add_collection(lc)
+
+        ax.legend(title='Overlay')
+
+    else:
+        print("Only 'color', and 'thickness' are accepted as edgeoverlay types")
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_edges.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_edges.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_edges.m	(revision 27955)
@@ -0,0 +1,34 @@
+function plot_edges(md,options,width,i,datai)
+%PLOT_SEGMENTS - plot edges, with different colors according to segment markers.
+%
+%   Usage:
+%      plot_edges(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%plot mesh boundaries
+subplot(width,width,i); 
+
+%process mesh and data
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+edges=md.mesh.edges;
+if isnan(edges)
+	error('edges in NaN')
+end
+
+if dimension(md.mesh)==2,
+	%plot mesh
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	h1=patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	hold on;
+	text(sum(x(edges(:,1:2)),2)/2,sum(y(edges(:,1:2)),2)/2,sum(z(edges(:,1:2)),2)/2,...
+		num2str(transpose(1:size(edges,1))),...
+		'backgroundcolor',[0.8 0.9 0.8],'HorizontalAlignment','center','VerticalAlignment','middle');
+else
+	error('plot_edges: 3d plot of edges not supported yet!');
+end
+
+%apply options
+options=addfielddefault(options,'title','Edges');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_elementnumbering.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_elementnumbering.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_elementnumbering.m	(revision 27955)
@@ -0,0 +1,71 @@
+function plot_elementnumbering(md,options,width,i)
+%PLOT_ELEMENTNUMBERING - plot element numbering
+%
+%   Usage:
+%      plot_elementnumbering(md,options,width,i);
+%
+%   See also: PLOTMODEL, PLOT_UNIT, PLOT_MANAGER
+
+subplot(width,width,i); 
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[elementnumbers datatype]=processdata(md,[1:md.mesh.numberofelements]',options);
+
+%plot
+if is2d
+	%plot mesh 
+	A=elements(:,1); B=elements(:,2); C=elements(:,3);
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+
+	%highlight
+	pos=getfieldvalue(options,'highlight',[]);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3);
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+
+	%numbering
+	X   = sum(x(elements(:,1:3)),2)/3;
+	Y   = sum(y(elements(:,1:3)),2)/3;
+	Z   = sum(z(elements(:,1:3)),2)/3;
+	NUM = elementnumbers;
+	if exist(options,'axis')
+		AXIS = getfieldvalue(options,'axis');
+		pos = find(X>AXIS(1) & X<AXIS(2) & Y>AXIS(3) & Y<AXIS(4));
+		X = X(pos); Y=Y(pos); Z=Z(pos); NUM=NUM(pos);
+	end
+	text(X,Y,Z,num2str(NUM),'HorizontalAlignment','center','VerticalAlignment','middle');
+else
+	%plot mesh 
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+	patch( 'Faces', [A B C],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+
+	%highlight
+	pos=getfieldvalue(options,'highlight',[]);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
+	patch( 'Faces', [A B C],  'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor','black');
+
+	%numbering
+	X   = sum(x(elements(:,1:6)),2)/6;
+	Y   = sum(y(elements(:,1:6)),2)/6;
+	Z   = sum(z(elements(:,1:6)),2)/6;
+	NUM = elementnumbers;
+	if exist(options,'axis')
+		AXIS = getfieldvalue(options,'axis');
+		pos = find(X>AXIS(1) & X<AXIS(2) & Y>AXIS(3) & Y<AXIS(4));
+		X = X(pos); Y=Y(pos); Z=Z(pos); NUM=NUM(pos);
+	end
+	text(X,Y,Z,num2str(NUM),'HorizontalAlignment','center','VerticalAlignment','middle');
+end
+
+%apply options
+options=addfielddefault(options,'title','Element numbering');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_elementnumbering.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_elementnumbering.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_elementnumbering.py	(revision 27955)
@@ -0,0 +1,43 @@
+import numpy as np
+from processmesh import processmesh
+from applyoptions import applyoptions
+
+
+def plot_elementnumbering(md, options, fig, axgrid, gridindex):
+    '''
+    plot_elementnumbering - plot element numberign (starting at 1 matlab and c convention)
+
+        Usage:
+            plot_elementnumbering(md, options, fig, axes)
+
+        See also: PLOTMODEL
+    '''
+    x, y, z, elements, is2d, isplanet = processmesh(md, [], options)
+
+    ax = axgrid[gridindex]
+    fig.delaxes(axgrid.cbar_axes[gridindex])
+
+    if is2d:
+        ax.triplot(x, y, elements)
+    else:
+        print('Not Implemented Yet')
+
+    #plot mesh
+    ax.triplot(x, y, elements)
+    highlightpos = options.getfieldvalue('highlight', 'none')
+    if highlightpos != 'none':
+        #if just one element duplicate it to avoid coloring issues
+        if type(highlightpos) == int:
+            highlightpos = [highlightpos, highlightpos]
+    #convert from to matlab numbering
+        highlightpos = [pos - 1 for pos in highlightpos]
+        colors = np.asarray([0.5 for element in elements[highlightpos]])
+        ax.tripcolor(x, y, elements[highlightpos], facecolors=colors, alpha=0.5)
+    # and numbers
+    for i, element in enumerate(elements):
+        ax.text(np.mean(x[element]), np.mean(y[element]), str(i + 1), ha='center', va='center', clip_on=True)
+
+    #apply options
+    options.addfielddefault('title', 'Element numbers (matlab indexation)')
+    options.addfielddefault('colorbar', 'off')
+    applyoptions(md, [], options, fig, axgrid, gridindex)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_elementstype.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_elementstype.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_elementstype.m	(revision 27955)
@@ -0,0 +1,45 @@
+function plot_elementstype(md,options,width,i)
+%PLOT_ELEMENTSTYPE - plot elements type
+%
+%   Usage:
+%      plot_elementstype(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[data datatype]=processdata(md,md.flowequation.element_equation,options);
+
+%edgecolor?
+edgecolor=getfieldvalue(options,'edgecolor','none');
+
+%plot
+subplot(width,width,i);
+p = [];
+
+if is2d
+	for i=0:9
+		pos=find(data==i);
+		A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+		pnew=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',i,'FaceColor','flat','EdgeColor',edgecolor);
+		p = [p;pnew];
+	end
+else
+	for i=0:9
+		pos=find(data==i);
+		A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
+		pnew = patch( 'Faces', [A B C],  'Vertices', [x y z],'CData', i,'FaceColor','flat','EdgeColor',edgecolor);
+		p = [p;pnew];
+		patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', i,'FaceColor','flat','EdgeColor',edgecolor);
+		patch( 'Faces', [A B E D],'Vertices', [x y z],'CData', i,'FaceColor','flat','EdgeColor',edgecolor);
+		patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', i,'FaceColor','flat','EdgeColor',edgecolor);
+		patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', i,'FaceColor','flat','EdgeColor',edgecolor);
+	end
+end
+legend(p,'None','SIA','SSA','L1L2','MOLHO','HO',...
+		'SSAHO','FS','SSAFS','HOFS');
+
+%apply options
+options=addfielddefault(options,'title','Elements type');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_googlemaps.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_googlemaps.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_googlemaps.m	(revision 27955)
@@ -0,0 +1,132 @@
+function plot_googlemaps(md,data,options,plotlines,plotcols,i)
+%PLOT_GOOGLEMAPS - superimpose Google maps to a given field
+%
+%   Usage:
+%      plot_googlemaps(md,data,options,plotlines,plotcols,i)
+%
+%   See also: PLOTMODEL
+
+%process mesh and data
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[data datatype]=processdata(md,data,options);
+
+%check is2d
+if ~is2d, 
+	error('buildgridded error message: gridded not supported for 3d meshes, project on a layer');
+end
+
+if ~any(isnan(md.radaroverlay.x(:))) & ~any(isnan(md.radaroverlay.y(:))) & ~any(isnan(md.radaroverlay.pwr(:))) ...
+		& size(md.radaroverlay.pwr,3)==3 & size(md.radaroverlay.x,2)==size(md.radaroverlay.pwr,2),
+	disp('plot_googlemaps info: the RGB image held by the model is being used');
+else
+	disp('Extracting image from Google maps...');
+
+	%Get xlim and ylim (used to extract radar image)
+	xlim=getfieldvalue(options,'xlim',[min(x) max(x)])/getfieldvalue(options,'unit',1);
+	ylim=getfieldvalue(options,'ylim',[min(y) max(y)])/getfieldvalue(options,'unit',1);
+	if md.mesh.epsg==3413, %UPS Greenland
+		[latlist lonlist]= xy2ll(...
+			[linspace(xlim(1),xlim(2),100) linspace(xlim(2),xlim(2),100) linspace(xlim(2),xlim(1),100) linspace(xlim(1),xlim(1),100)],...
+			[linspace(ylim(1),ylim(1),100) linspace(ylim(1),ylim(2),100) linspace(ylim(2),ylim(2),100) linspace(ylim(2),ylim(1),100)],...
+			+1,45,70);
+	elseif md.mesh.epsg==3031, %UPS Antarctica
+		[latlist lonlist]= xy2ll(...
+			[linspace(xlim(1),xlim(2),100) linspace(xlim(2),xlim(2),100) linspace(xlim(2),xlim(1),100) linspace(xlim(1),xlim(1),100)],...
+			[linspace(ylim(1),ylim(1),100) linspace(ylim(1),ylim(2),100) linspace(ylim(2),ylim(2),100) linspace(ylim(2),ylim(1),100)],...
+			-1,0,71);
+	elseif md.mesh.epsg==26906, %UTM 6V Columbia Glacier Alaska
+		[latlist lonlist]= utm2ll(...
+			[linspace(xlim(1),xlim(2),100) linspace(xlim(2),xlim(2),100) linspace(xlim(2),xlim(1),100) linspace(xlim(1),xlim(1),100)],...
+			[linspace(ylim(1),ylim(1),100) linspace(ylim(1),ylim(2),100) linspace(ylim(2),ylim(2),100) linspace(ylim(2),ylim(1),100)],...
+			6);
+	elseif numel(md.mesh.lat)==numel(md.mesh.x),
+		latlist = md.mesh.lat; %That might work?
+		lonlist = md.mesh.long;
+	else
+		error('EPSG code not supported yet, and no lat long found in md.mesh');
+	end
+
+	%Image corners in lat/long
+	ullat = max(latlist); ullon = min(lonlist);
+	lrlat = min(latlist); lrlon = max(lonlist);
+
+	md=googlemaps(md,ullat,ullon,lrlat,lrlon,options);
+end
+
+%Process image from model
+final = double(md.radaroverlay.pwr)/double(max(md.radaroverlay.pwr(:))); %rescale between 0 and 1
+
+%Get some options
+transparency = getfieldvalue(options,'transparency',.3);
+
+%Prepare grid
+if size(md.radaroverlay.x,1)==1 | size(md.radaroverlay.x,2)==1,
+	x_m = md.radaroverlay.x;
+	y_m = md.radaroverlay.y;
+	data_grid=InterpFromMeshToGrid(elements,x/getfieldvalue(options,'unit',1),y/getfieldvalue(options,'unit',1),data,x_m,y_m,NaN);
+else
+	X = md.radaroverlay.x;
+	Y = md.radaroverlay.y;
+	data_grid=InterpFromMeshToMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,data,X(:),Y(:),'default',NaN); data_grid=reshape(data_grid,size(X));
+	x_m=X(1,:); y_m=Y(:,1);
+end
+data_nan=isnan(data_grid);
+if exist(options,'caxis'),
+	caxis_opt=getfieldvalue(options,'caxis');
+	data_grid(find(data_grid<caxis_opt(1)))=caxis_opt(1);
+	data_grid(find(data_grid>caxis_opt(2)))=caxis_opt(2);
+	data_min=caxis_opt(1);
+	data_max=caxis_opt(2);
+else
+	data_min=min(data_grid(:));
+	data_max=max(data_grid(:));
+end
+colorm = getcolormap(options);
+image_rgb = ind2rgb(uint16((data_grid - data_min)*(length(colorm)/(data_max-data_min))),colorm);
+
+if exist(options,'shaded'),
+	a    = -45;
+	scut = 0.2;
+	c    = 1;
+	% computes lighting from elevation gradient
+	[fx,fy] = gradient(data_grid,x_m,y_m);
+	fxy = -fx*sind(a) - fy*cosd(a);
+	clear fx fy % free some memory...
+	fxy(isnan(fxy)) = 0;
+
+	% computes maximum absolute gradient (median-style), normalizes, saturates and duplicates in 3-D matrix
+	r = repmat(max(min(fxy/nmedian(abs(fxy),1 - scut/100),1),-1),[1,1,3]);
+
+	% applies contrast using exponent
+	rp = (1 - abs(r)).^c;
+	image_rgb = image_rgb.*rp;
+
+	% lighter for positive gradient
+	k = find(r > 0);
+	image_rgb(k) = image_rgb(k) + (1 - rp(k));
+end
+
+alpha=ones(size(data_grid));
+alpha(find(~data_nan))=transparency;
+alpha=repmat(alpha,[1 1 3]);
+
+final=alpha.*final+(1-alpha).*image_rgb;
+
+%Select plot area 
+subplotmodel(plotlines,plotcols,i,options);
+
+h=imagesc(x_m*getfieldvalue(options,'unit',1),y_m*getfieldvalue(options,'unit',1),final);
+
+%last step: mesh gridded?
+if exist(options,'edgecolor'),
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	patch('Faces',[A B C],'Vertices', [x y z],'FaceVertexCData',data_grid(1)*ones(size(x)),'FaceColor','none','EdgeColor',getfieldvalue(options,'edgecolor'));
+end
+
+%Apply options
+if ~isnan(data_min),
+	options=changefieldvalue(options,'caxis',[data_min data_max]); % force caxis so that the colorbar is ready
+end
+options=addfielddefault(options,'axis','xy equal off'); % default axis
+applyoptions(md,data,options);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_gridded.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_gridded.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_gridded.m	(revision 27955)
@@ -0,0 +1,140 @@
+function plot_gridded(md,data,options,plotlines,plotcols,i)
+%PLOT_OVERLAY - superimpose radar image to a given field
+%
+%   Usage:
+%      plot_gridded(md,options,plotlines,plotcols,i)
+%
+%   See also: PLOTMODEL
+
+%process mesh and data
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[data datatype]=processdata(md,data,options);
+
+islevelset = exist(options,'levelset');
+if islevelset
+	levelset = getfieldvalue(options,'levelset');
+	options2 = copy(options);
+	options2.removefield('caxis',false);
+	options2.removefield('log',false);
+	[levelset datatype]=processdata(md,levelset,options2);
+end
+
+%check is2d
+if ~is2d, 
+	error('buildgridded error message: gridded not supported for 3d meshes, project on a layer');
+end
+
+%Get xlim and ylim (used to extract radar image)
+xlim=getfieldvalue(options,'xlim',[min(x) max(x)]);
+ylim=getfieldvalue(options,'ylim',[min(y) max(y)]);
+
+isAxis = exist(options, 'axis');
+if isAxis
+	myaxis = getfieldvalue(options,'axis');
+	if ~ischar(myaxis)
+		xlim = [myaxis(1), myaxis(2)];
+		ylim = [myaxis(3), myaxis(4)];
+	end
+end
+
+postx=getfieldvalue(options,'posting',diff(xlim)/1000);
+posty=getfieldvalue(options,'posting',diff(ylim)/1000);
+
+%Interpolating data on grid
+x_m = xlim(1):postx:xlim(2);
+y_m = ylim(1):posty:ylim(2);
+data_grid=InterpFromMeshToGrid(elements,x,y,data,x_m,y_m,NaN);
+data_grid_save = data_grid;
+if size(data_grid,1)<3 | size(data_grid,2)<3,
+	error('data_grid size too small in plot_gridded, check posting and units');
+end
+
+%Mask values if levelset>0
+if islevelset
+	ls_grid=InterpFromMeshToGrid(elements,x,y,levelset,x_m,y_m,NaN);
+	data_grid(ls_grid>0) = NaN;
+end
+
+%Process data_grid: add white in NaN and correct caxis accordingly
+[data_nani data_nanj]=find(isnan(data_grid) | data_grid==-9999);
+if exist(options,'caxis'),
+	caxis_opt=getfieldvalue(options,'caxis');
+	data_grid(find(data_grid<caxis_opt(1)))=caxis_opt(1);
+	data_grid(find(data_grid>caxis_opt(2)))=caxis_opt(2);
+	data_min=caxis_opt(1);
+	data_max=caxis_opt(2);
+else
+	data_min=min(data_grid(:));
+	data_max=max(data_grid(:));
+end
+
+%Select plot area 
+subplotmodel(plotlines,plotcols,i,options);
+
+%shading interp;
+map    = getcolormap(options);
+image_rgb = ind2rgb(uint16((data_grid - data_min)*(length(map)/(data_max-data_min))),map);
+if exist(options,'shaded'),
+
+	if exist(options,'dem'),
+		dem_grid=InterpFromMeshToGrid(elements,x,y,getfieldvalue(options,'dem'),x_m,y_m,NaN);
+	else
+		dem_grid=data_grid_save;
+	end
+	a    = -45;
+	scut = 0.2;
+	c    = 1;
+	% computes lighting from elevation gradient
+	[fx,fy] = gradient(dem_grid,x_m,y_m);
+	fxy = -fx*sind(a) - fy*cosd(a);
+	clear fx fy % free some memory...
+	fxy(isnan(fxy)) = 0;
+
+	% computes maximum absolute gradient (median-style), normalizes, saturates and duplicates in 3-D matrix
+	r = repmat(max(min(fxy/nmedian(abs(fxy),1 - scut/100),1),-1),[1,1,3]);
+
+	% applies contrast using exponent
+	rp = (1 - abs(r)).^c;
+	image_rgb = image_rgb.*rp;
+
+	% lighter for positive gradient
+	k = find(r > 0);
+	image_rgb(k) = image_rgb(k) + (1 - rp(k));
+end
+
+% set novalues / NaN to black color
+if ~isempty(data_nani)
+	nancolor=getfieldvalue(options,'nancolor',[1 1 1]);
+	image_rgb(sub2ind(size(image_rgb),repmat(data_nani,1,3),repmat(data_nanj,1,3),repmat(1:3,size(data_nani,1),1))) = repmat(nancolor,size(data_nani,1),1);
+end
+
+%plot grid
+h=imagesc(xlim,ylim,image_rgb);
+axis xy
+
+%last step: mesh gridded?
+if exist(options,'edgecolor'),
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	patch('Faces',[A B C],'Vertices', [x y z],'FaceVertexCData',data_grid(1)*ones(size(x)),'FaceColor','none','EdgeColor',getfieldvalue(options,'edgecolor'));
+end
+
+%Apply options
+if ~isnan(data_min) & ~isinf(data_min),
+	options=changefieldvalue(options,'caxis',[data_min data_max]); % force caxis so that the colorbar is ready
+end
+options=addfielddefault(options,'axis','xy equal'); % default axis
+applyoptions(md,data,options);
+
+function y = nmedian(x,n)
+%NMEDIAN Generalized median filter
+%  NMEDIAN(X,N) sorts elemets of X and returns N-th value (N normalized).
+%  So:
+%     N = 0 is minimum value
+%     N = 0.5 is median value
+%     N = 1 is maximum value
+
+if nargin < 2
+	n = 0.5;
+end
+y = sort(x(:));
+y = interp1(sort(y),n*(length(y)-1) + 1);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_highlightelements.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_highlightelements.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_highlightelements.m	(revision 27955)
@@ -0,0 +1,68 @@
+function plot_highlightelements(md,options,width,i)
+%PLOT_HIGHLIGHTELEMENTS - plot selected elements
+%
+%   Usage:
+%      plot_highlightelements(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%plot mesh boundaries
+subplot(width,width,i); 
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[elementnumbers datatype]=processdata(md,[1:md.mesh.numberofelements]',options);
+edgecolor = getfieldvalue(options,'EdgeColor','black');
+
+%plot
+pos=getfieldvalue(options,'highlight',[]);
+if is2d
+	%plot mesh 
+	A=elements(:,1); B=elements(:,2); C=elements(:,3);
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor',edgecolor);
+
+	%Highlight
+	pos=getfieldvalue(options,'highlight',[]);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3);
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor',edgecolor);
+else
+	if size(elements,2)==6, %prisms
+		%plot mesh 
+		A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+		patch( 'Faces', [A B C],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor',edgecolor);
+		patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor',edgecolor);
+		patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor',edgecolor);
+		patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor',edgecolor);
+		patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor',edgecolor);
+
+		%Highlight
+		A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
+		patch( 'Faces', [A B C],  'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor',edgecolor);
+		patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor',edgecolor);
+		patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor',edgecolor);
+		patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor',edgecolor);
+		patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [0.9 0.5 0.5],'FaceColor','flat','EdgeColor',edgecolor);
+	elseif size(elements,2)==4, %tetras
+		A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4);
+		patch( 'Faces',[A B C],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor);
+		patch( 'Faces',[A B D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor);
+		patch( 'Faces',[B C D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor);
+		patch( 'Faces',[C A D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor);
+		%Highlight
+		A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4);
+		patch( 'Faces',[A B C],'Vertices', [x y z],'FaceVertexCData',[0.9 0.5 0.5],'FaceColor','flat','EdgeColor',edgecolor);
+		patch( 'Faces',[A B D],'Vertices', [x y z],'FaceVertexCData',[0.9 0.5 0.5],'FaceColor','flat','EdgeColor',edgecolor);
+		patch( 'Faces',[B C D],'Vertices', [x y z],'FaceVertexCData',[0.9 0.5 0.5],'FaceColor','flat','EdgeColor',edgecolor);
+		patch( 'Faces',[C A D],'Vertices', [x y z],'FaceVertexCData',[0.9 0.5 0.5],'FaceColor','flat','EdgeColor',edgecolor);
+	else
+		error('Not supported');
+	end
+end
+
+%apply options
+if ~exist(options,'highlight')
+	disp('highlightelements warning : highlight option empty, not element highlighted');
+end
+options=addfielddefault(options,'title','Highlighted Elements');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_highlightvertices.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_highlightvertices.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_highlightvertices.m	(revision 27955)
@@ -0,0 +1,46 @@
+function plot_highlightvertices(md,options,width,i)
+%PLOT_HIGHLIGHTVERTICES - plot selected vertices
+%
+%   Usage:
+%      plot_highlightvertices(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[nodenumbers datatype]=processdata(md,[1:md.mesh.numberofvertices]',options);
+
+%plot
+subplot(width,width,i); 
+
+if is2d
+	%plot mesh 
+	A=elements(:,1); B=elements(:,2); C=elements(:,3);
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+
+	%Highlight
+	pos=getfieldvalue(options,'highlight',[]);
+	text(x(pos),y(pos),z(pos),num2str(pos(:)),...
+		'backgroundcolor',[1 0 0],'HorizontalAlignment','center','VerticalAlignment','middle');
+else
+	%plot mesh 
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+	patch( 'Faces', [A B C],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+
+	%Highlight
+	pos=getfieldvalue(options,'highlight',[]);
+	text(x(pos),y(pos),z(pos),num2str(pos(:)),...
+		'backgroundcolor',[1 0 0],'HorizontalAlignment','center','VerticalAlignment','middle');
+end
+
+%apply options
+if ~exist(options,'highlight')
+	disp('highlightvertices warning : highlight option empty, not node highlighted');
+end
+options=addfielddefault(options,'title','Highlighted Nodes');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_icefront.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_icefront.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_icefront.m	(revision 27955)
@@ -0,0 +1,67 @@
+function h2 = plot_icefront(md,options,width,i,data)
+%PLOT_ICEFRONT - plot segment on neumann BC
+%
+%   Usage:
+%      plot_icefront(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%plot mesh boundaries
+subplot(width,width,i); 
+
+%process mesh and data
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+ice=(md.mask.ice_levelset<0);
+noice=(md.mask.ice_levelset>=0);
+zeroice=(md.mask.ice_levelset==0);
+elementice=sum(ice(md.mesh.elements),2);
+elementnoice=sum(noice(md.mesh.elements),2);
+elementzeroice=sum(zeroice(md.mesh.elements),2);
+
+if is2d,
+	icefront=(elementice & elementnoice) & ~(elementice==2 & elementzeroice);
+
+	%plot mesh
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	h1=patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	hold on;
+
+	%highlight elements on neumann
+	pos=find(icefront);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	h2=patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','blue','EdgeColor','black');
+	hold on;
+
+	%Plot zero ice_levelset line
+
+else
+	icefront=(elementice & elementnoice) & ~(elementice==4 & elementzeroice);
+
+	%plot mesh
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+	h1=patch( 'Faces', [A B C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	hold on;
+
+	%highlight elements on neumann
+	pos=find(icefront);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
+	h2=patch( 'Faces', [A B C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','blue','EdgeColor','black');
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','blue','EdgeColor','black');
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','blue','EdgeColor','black');
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','blue','EdgeColor','black');
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','blue','EdgeColor','black');
+end
+
+%legend (disable warnings)
+warning off
+legend([h2],'element on ice front')
+warning on
+
+%apply options
+options=addfielddefault(options,'title','Neumann boundary conditions');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_icefront.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_icefront.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_icefront.py	(revision 27955)
@@ -0,0 +1,82 @@
+import numpy as np
+from processmesh import processmesh
+import matplotlib as mpl
+from mpl_toolkits.mplot3d.art3d import Line3DCollection
+from mpl_toolkits.axes_grid1.inset_locator import inset_axes
+from mpl_toolkits.mplot3d import Axes3D
+
+
+def plot_icefront(md, options, fig, ax):
+    #PLOT_ICEFRONT - plot segment on neumann BC
+    #
+    #   Usage:
+    #      plot_icefront(md, options, width, i)
+    #
+    #   See also: PLOTMODEL
+    #process mesh and data
+    x, y, z, elements, is2d, isplanet = processmesh(md, [], options)
+
+    icenodes = md.mask.ice_levelset < 0
+    iceelement = np.sum(icenodes[elements], axis=1)
+
+    if options.exist('layer'):
+        nodes_per_elt = np.shape(md.mesh.elements2d)[1]
+    else:
+        nodes_per_elt = np.shape(md.mesh.elements)[1]
+    #icefront check
+    icefront = np.where(np.logical_and(iceelement != nodes_per_elt, iceelement != 0))
+
+    oceannodes = md.mask.ocean_levelset < 0
+    oceanelement = np.sum(oceannodes[elements], axis=1)
+
+    #icefront check
+    groundingline = np.where(np.logical_and(oceanelement != nodes_per_elt, oceanelement != 0))
+
+    #plot mesh
+    if is2d:
+        ax.triplot(x, y, elements)
+
+        #highlight elements on neumann
+        if len(icefront[0]) > 0:
+            colors = np.ones(np.shape(elements[icefront])[0])
+            cmap = mpl.colors.ListedColormap("navy")
+            ax.tripcolor(x, y, elements[icefront], facecolors=colors, edgecolor='k', label='elements on ice front', cmap=cmap)
+        if len(groundingline[0]) > 0:
+            colors = np.ones(np.shape(elements[groundingline])[0])
+            cmap = mpl.colors.ListedColormap("limegreen")
+            ax.tripcolor(x, y, elements[groundingline], facecolors=colors, edgecolor='k', label='elements on grounding line', cmap=cmap)
+    else:
+        ax = inset_axes(ax, width='100%', height='100%', loc=3, borderpad=0, axes_class=Axes3D)
+
+        AB = elements[:, 0:2]
+        BC = elements[:, 1:3]
+        CA = np.vstack((elements[:, 2], elements[:, 0])).T
+        DE = elements[:, 3:5]
+        EF = elements[:, 4:]
+        FD = np.vstack((elements[:, 5], elements[:, 3])).T
+        AD = np.vstack((elements[:, 0], elements[:, 3])).T
+        BE = np.vstack((elements[:, 1], elements[:, 4])).T
+        CF = np.vstack((elements[:, 2], elements[:, 5])).T
+
+        tmpa = np.vstack((AB, BC, CA, DE, EF, FD, AD, BE, CF))
+    #deleting segments that appear multiple times
+        tmpb = np.ascontiguousarray(tmpa).view(np.dtype((np.void, tmpa.dtype.itemsize * tmpa.shape[1])))
+        _, idx = np.unique(tmpb, return_index=True)
+        triel = tmpa[idx]
+
+        for t, triangle in enumerate(triel):
+            tri = list(zip(x[triangle], y[triangle], z[triangle]))
+            facecolor = [0, 0, 0]
+            if t in icefront:
+                facecolor = [0.5, 0.5, 0.5]
+            pl3 = Line3DCollection([tri], edgecolor='r', facecolor=facecolor)
+            ax.add_collection3d(pl3)
+
+        ax.set_xlim([min(x), max(x)])
+        ax.set_ylim([min(y), max(y)])
+        ax.set_zlim([min(z), max(z)])
+        #highlight elements on neumann
+
+    #apply options
+    options.addfielddefault('title', 'Neumann boundary conditions')
+    options.addfielddefault('colorbar', 'off')
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_importancefactors.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_importancefactors.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_importancefactors.m	(revision 27955)
@@ -0,0 +1,83 @@
+function plot_importancefactors(md,options,width,ii)
+%PLOT_IMPORTANCEFACTORS - plot importance factors
+%
+%   Usage:
+%      plot_importancefactors(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%first recover design variable descriptor
+if exist(options,'designvariable'),
+	descriptor=getfieldvalue(options,'designvariable');
+else
+	error('plot_importancefactors error message: Need to supply design variable descriptor');
+end
+descriptorlength=length(descriptor);
+
+%then recover responsfunction name
+if exist(options,'responsefunction'),
+	responsefunctiondescriptor=getfieldvalue(options,'responsefunction');
+else
+	error('plot_importancefactors error message: Need to supply response function descriptor');
+end
+
+%go through all response functions and find the one corresponding to the correct responsefunctiondescriptor
+responsefunctions=md.qmu.results{2};
+found=0;
+for i=1:length(responsefunctions),
+	if strcmpi(responsefunctions(i).descriptor,responsefunctiondescriptor),
+		found=i;
+		break;
+	end
+end
+if ~found,
+	error('plot_importancefactors error message: could not find correct response function');
+end
+responsefunctions=responsefunctions(found);
+nfun=size(responsefunctions.desvar,1);
+
+%Now recover response to the correct desgin variable
+importancefactors=zeros(md.qmu.numberofpartitions,1);
+count=0;
+for i=1:nfun,
+	desvar=responsefunctions.desvar{i};
+	if strncmpi(desvar,descriptor,descriptorlength),
+		count=count+1;
+		importancefactors(count)=responsefunctions.impfac(i);
+	end
+end
+if count==0,
+	error('plot_importancefactors error message: could not find to response functions with corresponding design variable');
+end
+
+%log?
+if exist(options,'log'),
+	logvalue=getfieldvalue(options,'log');
+	importancefactors=log(importancefactors)/log(logvalue);
+end
+
+%Ok, get partitioning.
+[epart npart]=MeshPartition(md,md.qmu.numberofpartitions);
+
+%distribute importance factor
+nodeimportance=importancefactors(npart);
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%edgecolor
+edgecolor=getfieldvalue(options,'edgecolor','none');
+
+%standard plot:
+subplot(width,width,ii);
+
+%ok, plot nodeimportance now.
+if is2d,
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', nodeimportance,'FaceColor','interp','EdgeColor',edgecolor);
+else
+	error('plot_importancefactors error message: 3d meshes not supported yet');
+end
+
+%apply options
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_landsat.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_landsat.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_landsat.m	(revision 27955)
@@ -0,0 +1,152 @@
+% Explain
+%  This funtion loads Landsat Image Mosaic Antarctica (LIMA) for background image.
+%
+% Usage
+%  plot_landsat(md,data,options,plotlines,plotcols,i),
+%
+function plot_landsat(md,data,options,plotlines,plotcols,i),
+
+%process mesh and data
+[x2d y2d z2d elements2d is2d isplanet]=processmesh(md,[],options);
+[data datatype]=processdata(md,data,options);
+
+%check is2d
+if ~is2d,
+   error('buildgridded error message: gridded not supported for 3d meshes, project on a layer');
+end
+
+%Get some options
+transparency = getfieldvalue(options,'transparency',.3);
+highres =  getfieldvalue(options,'highres',0);
+
+% get xlim, and ylim
+xlim=getfieldvalue(options,'xlim',[min(x2d) max(x2d)])/getfieldvalue(options,'unit',1);
+ylim=getfieldvalue(options,'ylim',[min(y2d) max(y2d)])/getfieldvalue(options,'unit',1);
+
+if md.mesh.epsg == 3031 & (isempty(md.radaroverlay.pwr) | isempty(md.radaroverlay.x) | isempty(md.radaroverlay.y) | length(size(md.radaroverlay.pwr)) < 3), % Antarctica region {{{
+	if highres, 
+		disp('   LIMA with geotiff'), % {{{
+		disp('WARNING : this image shoud be collected with geocoded tif file');
+		% find merged mosaic landsat image {{{
+		limapath = {'/drive/project_inwoo/issm/Data/LIMA/AntarcticaLandsat.tif'};
+		pos = zeros(length(limapath),1);
+		for ii = 1:length(limapath)
+			if exist(limapath{ii}), pos(ii) = 1; end
+		end
+		limapath = limapath{find(pos)};
+		fprintf('   LIMA path is %s\n', limapath);
+		% }}}
+
+		% read image
+		im = imread(limapath);
+
+		% Region of LIMA data set
+		info = gdalinfo(limapath); % get geotiff info
+		xm = info.xmin + info.dx*[0:info.nx-1];
+		ym = info.ymax - info.dy*[0:info.ny-1];
+
+		% find region of model at LIMA
+		offset = 1e+4;
+		posx = find((xm > xlim(1)-offset).* (xm < xlim(2)+offset));
+		posy = find((ym > ylim(1)-offset).* (ym < ylim(2)+offset));
+		% }}}
+	else
+		disp('   LIMA with reduced tiff'),
+		% find merged mosaic landsat image {{{
+		limapath = {'/drive/project_inwoo/issm/Data/LIMA/tiff_90pct/00000-20080319-092059124.tif'};
+		pos = zeros(length(limapath),1);
+		for ii = 1:length(limapath)
+			if exist(limapath{ii}), pos(ii) = 1; end
+		end
+		
+		if sum(pos) == 0,
+			fprintf('download website : https://lima.usgs.gov/fullcontinent.php\n');
+			error('Landsat image at Antarctic region should be downloaded at above website');
+		end
+		limapath = limapath{find(pos)};
+		fprintf('   LIMA path is %s\n', limapath);
+		% }}}
+
+		% read image
+		im = imread(limapath);
+
+		% Region of LIMA data set
+		info = gdalinfo(limapath); % get geotiff info
+		xm = info.xmin + info.dx*[0:info.nx-1];
+		ym = info.ymax - info.dy*[0:info.ny-1];
+
+		% find region of model at LIMA
+		offset = 1e+4;
+		posx = find((xm > xlim(1)-offset).* (xm < xlim(2)+offset));
+		posy = find((ym > ylim(1)-offset).* (ym < ylim(2)+offset));
+		% }}}
+	end
+
+	% update region of radaroverlay
+	md.radaroverlay.x = xm(posx);
+	md.radaroverlay.y = ym(posy);
+	md.radaroverlay.pwr = im(posy, posx,:);
+	% }}}
+elseif length(size(md.radaroverlay.pwr)) == 3
+	% it already contains LIMA image.
+elseif md.mesh.epsg == 3431 & (isempty(md.radaroverlay.pwr) | isempty(md.radaroverlay.x) | isempty(md.radaroverlay.y) | length(size(md.radaroverlay.pwr)) < 3), % Greenladn region 
+	error('Greenland region is not yet available.');
+else
+	error('Check md.mesh.epsg, available Landsat regeion is at Antarctica (EPSG:3031)');
+end
+
+%Process image from model
+final = double(md.radaroverlay.pwr)/double(max(md.radaroverlay.pwr(:))); %rescale between 0 and 1
+
+%Prepare grid
+if size(md.radaroverlay.x,1)==1 | size(md.radaroverlay.x,2)==1,
+   x_m = md.radaroverlay.x;
+   y_m = md.radaroverlay.y;
+   data_grid=InterpFromMeshToGrid(elements2d,x2d/getfieldvalue(options,'unit',1),y2d/getfieldvalue(options,'unit',1),data,x_m,y_m,NaN);
+   %data_grid=InterpFromMeshToGrid(md.mesh.elements,md.mesh.x/getfieldvalue(options,'unit',1),md.mesh.y/getfieldvalue(options,'unit',1),data,x_m,y_m,NaN);
+else
+   X = md.radaroverlay.x;
+   Y = md.radaroverlay.y;
+   data_grid=InterpFromMeshToMesh2d(elements2d,x2d,y2d,data,X(:),Y(:),'default',NaN); data_grid=reshape(data_grid,size(X));
+   %data_grid=InterpFromMeshToMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,data,X(:),Y(:),'default',NaN); data_grid=reshape(data_grid,size(X));
+   x_m=X(1,:); y_m=Y(:,1);
+end
+
+data_nan=isnan(data_grid);
+if exist(options,'caxis'),
+   caxis_opt=getfieldvalue(options,'caxis');
+   data_grid(find(data_grid<caxis_opt(1)))=caxis_opt(1);
+   data_grid(find(data_grid>caxis_opt(2)))=caxis_opt(2);
+   data_min=caxis_opt(1);
+   data_max=caxis_opt(2);
+else
+   data_min=min(data_grid(:));
+   data_max=max(data_grid(:));
+end
+colorm = getcolormap(options);
+image_rgb = ind2rgb(uint16((data_grid - data_min)*(length(colorm)/(data_max-data_min))),colorm);
+
+alpha=ones(size(data_grid));
+alpha(find(~data_nan))=transparency;
+alpha=repmat(alpha,[1 1 3]);
+
+final=alpha.*final+(1-alpha).*image_rgb;
+
+%Select plot area 
+subplotmodel(plotlines,plotcols,i,options);
+
+h=imagesc(x_m*getfieldvalue(options,'unit',1),y_m*getfieldvalue(options,'unit',1),final);
+
+%last step: mesh gridded?
+if exist(options,'edgecolor'),
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	patch('Faces',[A B C],'Vertices', [x y z],'FaceVertexCData',data_grid(1)*ones(size(x)),'FaceColor','none','EdgeColor',getfieldvalue(options,'edgecolor'));
+end
+
+%Apply options
+if ~isnan(data_min),
+	options=changefieldvalue(options,'caxis',[data_min data_max]); % force caxis so that the colorbar is ready
+end
+options=addfielddefault(options,'axis','xy equal off'); % default axis
+applyoptions(md,data,options);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_manager.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_manager.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_manager.js	(revision 27955)
@@ -0,0 +1,245 @@
+'use strict';
+
+function plot_manager(md, options, subplotwidth, nlines, ncols, i) { //{{{
+	//PLOT__MANAGER - distribute the plots, called by plotmodel
+	//
+	//   Usage:
+	//      plot_manager(md, options, subplotwidth, i);
+	//
+	//   See also: PLOTMODEL, PLOT_UNIT
+	let canvas      = document.getElementById(options.getfieldvalue('canvasid'));
+	let data        = options.getfieldvalue('data'); // Get data to be displayed
+	let dataresults = null; 
+	let datatype    = 0;
+	let	data2       = null;
+			
+	// Parse options and get a structure of options
+	checkplotoptions(md, options);
+
+	// Figure out if this is a special plot
+	if (typeof data === 'string') {
+		switch(data) {
+			case 'boundaries':
+				plot_boundaries(md, options, subplotwidth, i);
+				return;
+				
+			case 'BC':
+				plot_BC(md, options, subplotwidth, i, data);
+				return;
+				
+			case 'edges':
+				plot_edges(md, options, subplotwidth, i, data);
+				return;
+				
+			case 'elementnumbering':
+				plot_elementnumbering(md, options, subplotwidth, i);
+				return;
+				
+			case 'highlightelements':
+				plot_highlightelements(md, options, subplotwidth, i);
+				return;
+				
+			case 'qmumean':
+				plot_qmumean(md, options, nlines, ncols, i);
+				return;
+				
+			case 'qmustddev':
+				plot_qmustddev(md, options, nlines, ncols, i);
+				return;
+				
+			case 'qmuhistnorm':
+				plot_qmuhistnorm(md, options, nlines, ncols, i);
+				return;
+				
+			case 'qmu_mass_flux_segments':
+				plot_qmu_mass_flux_segments(md, options, nlines, ncols, i);
+				return;
+				
+			case 'part_hist':
+				plot_parthist(md, options, nlines, ncols, i);
+				return;
+				
+			case 'part_hist_n':
+				plot_parthistn(md, options, nlines, ncols, i);
+				return;
+				
+			case 'part_hist_w':
+				plot_parthistw(md, options, nlines, ncols, i);
+				return;
+				
+			case 'elements_type':
+				plot_elementstype(md, options, subplotwidth, i);
+				return;
+				
+			case 'vertexnumbering':
+				plot_vertexnumbering(md, options, subplotwidth, i);
+				return;
+				
+			case 'highlightvertices':
+				plot_highlightvertices(md, options, subplotwidth, i);
+				return;
+				
+			case 'basal_drag':
+				plot_basaldrag(md, options, subplotwidth, i, data);
+				return;
+				
+			case 'basal_dragx':
+				plot_basaldrag(md, options, subplotwidth, i, data);
+				return;
+				
+			case 'basal_dragy':
+				plot_basaldrag(md, options, subplotwidth, i, data);
+				return;
+				
+			case 'driving_stress':
+				plot_drivingstress(md, options, subplotwidth, i);
+				return;
+				
+			case 'mesh':
+				plot_mesh(md, options, canvas);
+				return;
+				
+			case 'none':
+				return;
+				
+			case 'penalties':
+				plot_penalties(md, options, subplotwidth, i);
+				return;
+				
+			case 'partition':
+				plot_partition(md, options, nlines, ncols, i);
+				return;
+				
+			case 'referential':
+				plot_referential(md, options, nlines, ncols, i);
+				return;
+				
+			case 'riftvel':
+				plot_riftvel(md, options, nlines, ncols, i);
+				return;
+				
+			case 'riftnumbering':
+				plot_riftnumbering(md, options, nlines, ncols, i);
+				return;
+				
+			case 'rifts':
+				plot_rifts(md, options, nlines, ncols, i);
+				return;
+				
+			case 'riftrelvel':
+				plot_riftrelvel(md, options, nlines, ncols, i);
+				return;
+				
+			case 'riftpenetration':
+				plot_riftpenetration(md, options, nlines, ncols, i);
+				return;
+				
+			case 'riftfraction':
+				plot_riftfraction(md, options, nlines, ncols, i);
+				return;
+				
+			case 'sarpwr':
+				plot_sarpwr(md, options, subplotwidth, i);
+				return;
+				
+			case 'time_dependant':
+				plot_vstime(md, options, nlines, ncols, i);
+				return;
+				
+			case 'icefront':
+				plot_icefront(md, options, subplotwidth, i, data);
+				return;
+				
+			case 'segments':
+				plot_segments(md, options, subplotwidth, i, data);
+				return;
+				
+			case 'quiver':
+				plot_quiver(md, options, canvas);
+				return;
+				
+			case 'strainrate_tensor':
+			case 'strainrate':
+			case 'strainrate_principal':
+			case 'strainrate_principalaxis1':
+			case 'strainrate_principalaxis2':
+			case 'strainrate_principalaxis3':
+			case 'stress_tensor':
+			case 'stress':
+			case 'stress_principal':
+			case 'stress_principalaxis1':
+			case 'stress_principalaxis2':
+			case 'stress_principalaxis3':
+			case 'deviatoricstress_tensor':
+			case 'deviatoricstress':
+			case 'deviatoricstress_principal':
+			case 'deviatoricstress_principalaxis1':
+			case 'deviatoricstress_principalaxis2':
+			case 'deviatoricstress_principalaxis3':
+				plot_tensor(md, options, subplotwidth, i, data);
+				return;
+				
+			case 'thermaltransient_results':
+				plot_thermaltransient_results(md, options, subplotwidth, i);
+				return;
+				
+			case 'transient_movie':
+				plot_transient_movie(md, options, canvas);
+				return;
+				
+			case 'transient_results':
+				plot_transient_results(md, options, subplotwidth, i);
+				return;
+				
+			case 'transient_field':
+				plot_transient_field(md, options, subplotwidth, i);
+				return;
+				
+			default:
+				if (data in md) {
+					data = md[data];
+				} else {
+					error('plot error message: data provided not supported yet. Type plotdoc for help');
+				}
+		}
+	}
+
+	// Figure out if this is a semi-transparent plot.
+	if (options.getfieldvalue('overlay', 'off') === 'on') {
+		plot_overlay(md, data, options, canvas);
+		//return;
+	}
+
+	// Figure out if this is a semi-transparent plot.
+	if (options.exist('googlemaps')) {
+		plot_googlemaps(md, data, options, nlines, ncols, i);
+		return;
+	}
+
+	// Figure out if this is a semi-transparent plot.
+	if (options.exist('gridded')) {
+		plot_gridded(md, data, options, nlines, ncols, i);
+		return;
+	}
+
+	// Figure out if this is a Section plot
+	if (options.exist('sectionvalue')) {
+		plot_section(md, data, options, nlines, ncols, i);
+		return;
+	}
+
+	//Figure out if this is a Profile plot
+	if (options.exist('profile')) {
+		plot_profile(md, data, options, nlines, ncols, i);
+		return;
+	}
+	
+	dataresults = processdata(md, data, options);
+	data2       = dataresults[0]; 
+	datatype    = dataresults[1];
+	
+	// Plot unit
+	plot_unit(md, data2, datatype, options, canvas);
+
+	applyoptions(md, data2, options, canvas);
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_manager.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_manager.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_manager.m	(revision 27955)
@@ -0,0 +1,221 @@
+function plot_manager(md,options,subplotwidth,nlines,ncols,i)
+%PLOT__MANAGER - distribute the plots, called by plotmodel
+%
+%   Usage:
+%      plot_manager(md,options,subplotwidth,i);
+%
+%   See also: PLOTMODEL, PLOT_UNIT
+
+%parse options and get a structure of options. 
+options=checkplotoptions(md,options);
+
+%get data to be displayed
+data=getfieldvalue(options,'data');
+
+%figure out if this is a special plot
+if ischar(data),
+	switch data,
+		case 'boundaries',
+			plot_boundaries(md,options,subplotwidth,i);
+			return;
+		case {'BC','bc'},
+			plot_BC(md,options,subplotwidth,i,data);
+			return;
+		case 'edges'
+			plot_edges(md,options,subplotwidth,i,data)
+			return
+		case 'elementnumbering',
+			plot_elementnumbering(md,options,subplotwidth,i);
+			return;
+		case 'highlightelements',
+			plot_highlightelements(md,options,subplotwidth,i);
+			return;
+		case 'qmumean',
+			plot_qmumean(md,options,nlines,ncols,i);
+			return;
+		case 'qmustddev',
+			plot_qmustddev(md,options,nlines,ncols,i);
+			return;
+		case 'qmuhistnorm',
+			plot_qmuhistnorm(md,options,nlines,ncols,i);
+			return;
+		case 'qmu_mass_flux_segments',
+			plot_qmu_mass_flux_segments(md,options,nlines,ncols,i);
+			return;
+		case 'part_hist',
+			plot_parthist(md,options,nlines,ncols,i);
+			return;
+		case 'part_hist_n',
+			plot_parthistn(md,options,nlines,ncols,i);
+			return;
+		case 'part_hist_w',
+			plot_parthistw(md,options,nlines,ncols,i);
+			return;
+		case 'elements_type',
+			plot_elementstype(md,options,subplotwidth,i);
+			return;
+		case 'vertexnumbering',
+			plot_vertexnumbering(md,options,subplotwidth,i);
+			return;
+		case 'highlightvertices',
+			plot_highlightvertices(md,options,subplotwidth,i);
+			return;
+		case {'basal_drag','basal_dragx','basal_dragy'},
+			plot_basaldrag(md,options,subplotwidth,i,data);
+			return;
+		case 'driving_stress',
+			plot_drivingstress(md,options,subplotwidth,i);
+			return;
+		case 'mesh',
+			plot_mesh(md,options,nlines,ncols,i);
+			return;
+		case 'none',
+			if ~exist(options,'overlay'),
+				plot_none(md,options,nlines,ncols,i);
+				return;
+			end
+		case 'penalties',
+			plot_penalties(md,options,subplotwidth,i);
+			return;
+		case 'partition',
+			plot_partition(md,options,nlines,ncols,i);
+			return;
+		case 'referential',
+			plot_referential(md,options,nlines,ncols,i);
+			return;
+		case 'riftvel',
+			plot_riftvel(md,options,nlines,ncols,i);
+			return;
+		case 'riftnumbering',
+			plot_riftnumbering(md,options,nlines,ncols,i);
+			return;
+		case 'rifts',
+			plot_rifts(md,options,nlines,ncols,i);
+			return;
+		case 'riftrelvel',
+			plot_riftrelvel(md,options,nlines,ncols,i);
+			return;
+		case 'riftpenetration',
+			plot_riftpenetration(md,options,nlines,ncols,i);
+			return;
+		case 'riftfraction',
+			plot_riftfraction(md,options,nlines,ncols,i);
+			return;
+		case 'sarpwr',
+			plot_sarpwr(md,options,subplotwidth,i)
+			return
+		case 'time_dependant' ,
+			plot_vstime(md,options,nlines,ncols,i)
+			return
+		case 'icefront'
+			plot_icefront(md,options,subplotwidth,i,data)
+			return
+		case 'segments'
+			plot_segments(md,options,subplotwidth,i,data)
+			return
+		case 'quiver'
+			data=[md.initialization.vx md.initialization.vy]; %Go ahead and try plot_unit
+		case {'strainrate_tensor','strainrate','strainrate_principal','strainrate_principalaxis1','strainrate_principalaxis2','strainrate_principalaxis3',...
+				'stress_tensor','stress','stress_principal','stress_principalaxis1','stress_principalaxis2','stress_principalaxis3',...
+				'deviatoricstress_tensor','deviatoricstress','deviatoricstress_principal','deviatoricstress_principalaxis1','deviatoricstress_principalaxis2','deviatoricstress_principalaxis3'},
+			plot_tensor(md,options,subplotwidth,i,data);
+			return;
+		case 'thermaltransient_results',
+			plot_thermaltransient_results(md,options,subplotwidth,i);
+			return;
+		case 'transient_movie',
+			plot_transient_movie(md,options,subplotwidth,i);
+			return;
+		case 'transient_results',
+			plot_transient_results(md,options,subplotwidth,i);
+			return
+		case 'transient_field',
+			plot_transient_field(md,options,subplotwidth,i);
+			return;
+	otherwise,
+		if isfield(md.results,'TransientSolution') && isfield(md.results.TransientSolution,data)
+			plot_transient_movie(md,options,subplotwidth,i);
+			return
+		elseif ismember(data,properties('model')),
+			data=eval(['md.' data ';']);
+		else
+			error('plot error message: data provided not supported yet. Type plotdoc for help');
+		end
+	end
+end
+
+%Figure out if this is a semi-transparent plot.
+if exist(options,'overlay'),
+	plot_overlay(md,data,options,nlines,ncols,i);
+	return;
+end
+
+%Figure out if this is a Google Maps plot.
+if exist(options,'googlemaps'),
+	plot_googlemaps(md,data,options,nlines,ncols,i);
+	return;
+end
+
+%Figure out if this is a landsat plot.
+if getfieldvalue(options,'landsat',0),
+	plot_landsat(md,data,options,nlines,ncols,i);
+	return;
+end
+
+%Figure out if this is a gridded plot.
+if exist(options,'gridded'),
+	plot_gridded(md,data,options,nlines,ncols,i);
+	return;
+end
+
+%Figure out if this is a Section plot
+if exist(options,'sectionvalue')
+	plot_section(md,data,options,nlines,ncols,i);
+	return;
+end
+
+%Figure out if this is a Profile plot
+if exist(options,'profile')
+	plot_profile(md,data,options,nlines,ncols,i);
+	return;
+end
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,data,options);
+[data2 datatype]=processdata(md,data,options);
+
+%standard plot:
+if exist(options,'asymsubplot')
+	id=getfieldvalue(options,'asymsubplot',i);
+	subplotmodel(nlines,ncols,id,options);
+else
+	subplotmodel(nlines,ncols,i,options);
+end
+
+% clear subplot option
+if exist(options,'subplot')
+    cla;
+end
+
+%plot unit
+plot_unit(x,y,z,elements,data2,is2d,isplanet,datatype,options);
+
+%apply all options
+if datatype==3,
+	options=changefieldvalue(options,'colorbar',2);
+	if exist(options,'contourlevels'),
+		data2=data;
+	end
+end
+
+applyoptions(md,data2,options);
+
+%do ground overlay on kml plot_unit? 
+if (strcmpi(getfieldvalue(options,'kmlgroundoverlay','off'),'on')),
+	if ((nlines*ncols~=1) | (i~=1)),
+		error('cannot kmlgroundoverlay on multi-plots');
+	end
+
+	%call routine to build kml file and image that goes with it.
+	kmlgroundoverlay(md,options);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_manager.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_manager.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_manager.py	(revision 27955)
@@ -0,0 +1,113 @@
+try:
+    from osgeo import gdal
+    overlaysupport = True
+except ImportError:
+    print('OSGeo/GDAL for Python not installed, overlay plots are not enabled')
+    overlaysupport = False
+
+from applyoptions import applyoptions
+from checkplotoptions import checkplotoptions
+from plot_BC import plot_BC
+from plot_mesh import plot_mesh
+from plot_elementnumbering import plot_elementnumbering
+if overlaysupport:
+    from plot_overlay import plot_overlay
+from plot_unit import plot_unit
+from plot_vertexnumbering import plot_vertexnumbering
+from processdata import processdata
+from processmesh import processmesh
+
+
+def plot_manager(md, options, fig, axgrid, gridindex):
+    """PLOT_MANAGER - distribute the plots called by plotmodel
+
+    'fig' is a handle to the figure instance created by plotmodel.
+
+    'axgrid' is a handle to the axes instance created by plotmodel. This is
+    currently generated using matplotlib's AxesGrid toolkit.
+
+    'gridindex' is passed through to specialized plot* functions and
+    applyoptions.
+
+    Usage:
+        plot_manager(md, options, fig, ax)
+
+    See also: PLOTMODEL, PLOT_UNIT
+    """
+    #parse options and get a structure of options
+    options = checkplotoptions(md, options)
+
+    #get data to be plotted
+    data = options.getfieldvalue('data')
+
+    #add ticklabel has a default option
+    #
+    # TODO: Check why we are doing this and if it is absolutely necessary (see
+    #       also src/m/plot/plot_mesh.py, src/m/plot/applyoptions.py)
+    #
+    options.addfielddefault('ticklabels', 'on')
+
+    ax = axgrid[gridindex]
+    # {{{ basemap plot TOFIX
+    #if options.exist('basemap'):
+    #    plot_basemap(md, data, options, nrows, ncols, i)
+    # }}}
+    # {{{ overlay plot
+    if options.exist('overlay') and overlaysupport:
+        plot_overlay(md, data, options, ax)
+        options.addfielddefault('alpha', 0.5)
+        options.addfielddefault('xlim', [min(md.mesh.x), max(md.mesh.x)])
+        options.addfielddefault('ylim', [min(md.mesh.y), max(md.mesh.y)])
+    # }}}
+    # {{{ dealing with special plot
+    if isinstance(data, str):
+        if data == 'mesh':
+            plot_mesh(md, options, fig, axgrid, gridindex)
+            #fig.delaxes(fig.axes[1])  # hack to remove colorbar after the fact
+            return
+        elif data == 'BC':
+            plot_BC(md, options, fig, axgrid, gridindex)
+            return
+        elif data == 'elementnumbering':
+            plot_elementnumbering(md, options, fig, axgrid, gridindex)
+            return
+        elif data == 'vertexnumbering':
+            plot_vertexnumbering(md, options, fig, axgrid, gridindex)
+            return
+        elif data == 'none':
+            print('no data provided to plot (TODO: write plot_none.py)')
+            applyoptions(md, [], options, fig, axgrid, gridindex)
+            return
+        else:
+            print(("WARNING: '%s' is not implemented or is not a valid string for option 'data'" % data))
+    # }}}
+    # {{{ Gridded plot TODO
+    # }}}
+    # {{{ Section plot TODO
+    # }}}
+    # {{{ Profile plot TODO
+    # }}}
+
+    x, y, z, elements, is2d, isplanet = processmesh(md, data, options)
+    data2, datatype = processdata(md, data, options)
+    #plot unit
+    plot_unit(x, y, z, elements, data2, is2d, isplanet, datatype, options, fig, axgrid, gridindex)
+    #apply all options
+    applyoptions(md, data2, options, fig, axgrid, gridindex)
+
+    #ground overlay on kml plot_unit
+
+    # Bits and pieces
+    #initialize plot handle variable
+    #handle = None
+
+    # initialize subplot
+    #p.subplot(nrows, ncols, i, aspect = 'equal')
+
+    #standard plot
+    #if not handle:
+    #    p.subplot(nrows, ncols, i, aspect = 'equal')
+
+    #elif data in vars(md):
+    #else:
+    #print "'data' not a string, plotting model properties yet to be implemented..."
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_mesh.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_mesh.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_mesh.js	(revision 27955)
@@ -0,0 +1,58 @@
+function plot_mesh(md, options, canvas) { //{{{
+	//PLOT_MESH - Function for plotting wireframe mesh.
+	//
+	//   Usage:
+	//      plot_mesh(md, options, canvas);
+	//
+	//   See also: PLOTMODEL, PLOT_MANAGER
+
+	//{{{
+	//Process data and model
+	let meshresults = processmesh(md, [], options);
+	meshresults = scaleMesh(md, meshresults, options);
+	let x = meshresults[0]; 
+	let y = meshresults[1]; 
+	let z = meshresults[2]; 
+	let elements = meshresults[3];
+	let is2d = meshresults[4]; 
+	let isplanet = meshresults[5];
+	let vertices = meshresults[6];
+	let scale = meshresults[7];
+	
+	//Compute gl variables:
+	let edgecolor = options.getfieldvalue('edgecolor', 'black');
+	let node = new Node(
+		'canvas', canvas,
+		'options', options,
+		'md', md,
+		'name', 'mesh',
+		'cullFace', THREE.DoubleSide,
+		'shaderName', 'lines',
+		'opacity', options.getfieldvalue('opacity', 1.0),
+		'lineWidth', options.getfieldvalue('linewidth', 1),
+		'scale', scale
+	);
+	//}}}
+	//{{{ node plot
+	if (elements[0].length === 6) { //prisms
+		//We can skip bottom and every other side to avoid drawing edges twice.
+		let abc = elements.map(function(value, index) { return [value[0], value[1], value[2]]; }); //top
+		// let dfe = elements.map(function(value, index) { return [value[3], value[5], value[4]]; }); //bottom
+		// let aeb = elements.map(function(value, index) { return [value[0], value[4], value[1]]; }); //1st side upper right
+		let ade = elements.map(function(value, index) { return [value[0], value[3], value[4]]; }); //1st side lower left
+		// let bfc = elements.map(function(value, index) { return [value[1], value[5], value[2]]; }); //2nd side upper right
+		let bef = elements.map(function(value, index) { return [value[1], value[4], value[5]]; }); //2nd side lower left
+		// let cda = elements.map(function(value, index) { return [value[2], value[3], value[0]]; }); //3rd side upper right
+		let cfd = elements.map(function(value, index) { return [value[2], value[5], value[3]]; }); //3rd side lower left
+		let prismElements = abc.concat(ade, bef, cfd);
+		node.patch('Faces', prismElements, 'Vertices', vertices, 'FaceColor', 'none', 'EdgeColor', edgecolor);
+	} else if (elements[0].length === 4) { //tetras
+        // TODO: Implement handling for tetras
+	} else { // 2D triangular elements
+		node.patch('Faces', elements, 'Vertices', vertices, 'FaceColor', 'none', 'EdgeColor', edgecolor);
+	}
+	//}}}
+	//options=options.addfielddefault('title','Mesh');
+	//options=addfielddefault('colorbar','off');
+	//applyoptions(md,[],options,canvas);
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_mesh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_mesh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_mesh.m	(revision 27955)
@@ -0,0 +1,47 @@
+function plot_mesh(md,options,nlines,ncols,i)
+%PLOT_MESH - plot model mesh
+%
+%   Usage:
+%      plot_mesh(md,options,nlines,ncols,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%plot mesh
+subplot(nlines,ncols,i); 
+
+%retrieve some options
+linewidth=getfieldvalue(options,'linewidth',1);
+edgecolor=getfieldvalue(options,'edgecolor','black');
+
+%plot mesh
+if is2d
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+else
+	if size(elements,2)==6, %prisms
+		A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+		patch( 'Faces', [A B C],  'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+		patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+		patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+		patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+		patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+	elseif size(elements,2)==4, %tetras
+		A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4);
+		patch( 'Faces',[A B C],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+		patch( 'Faces',[A B D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+		patch( 'Faces',[B C D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+		patch( 'Faces',[C A D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+	else %triangles (planet)
+		A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+		if (size(elements,2)==4), D=elements(:,4); else D=C; end
+		patch( 'Faces', [A B C D],  'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor',edgecolor,'linewidth',linewidth);
+	end
+end
+
+%apply options
+options=addfielddefault(options,'title','Mesh');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_mesh.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_mesh.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_mesh.py	(revision 27955)
@@ -0,0 +1,60 @@
+import numpy as np
+from processmesh import processmesh
+from applyoptions import applyoptions
+from mpl_toolkits.mplot3d.art3d import Line3DCollection
+from mpl_toolkits.axes_grid1.inset_locator import inset_axes
+from mpl_toolkits.mplot3d import Axes3D
+
+
+def plot_mesh(md, options, fig, axgrid, gridindex):
+    '''
+    PLOT_MESH - plot model mesh
+
+        Usage:
+            plot_mesh(md, options, nlines, ncols, i)
+
+        See also: PLOTMODEL
+    '''
+    x, y, z, elements, is2d, isplanet = processmesh(md, 'mesh', options)
+
+    ax = axgrid[gridindex]
+    fig.delaxes(axgrid.cbar_axes[gridindex])
+
+    #retrieve some options
+    edgecolor=options.getfieldvalue('edgecolor','k')
+    linewidth=options.getfieldvalue('linewidth',1)
+
+    if is2d:
+        ax.triplot(x, y, elements,color=edgecolor,linewidth=linewidth)
+    else:
+        ax = inset_axes(axgrid[gridindex], width='100%', height='100%', loc=3, borderpad=0, axes_class=Axes3D)
+
+        AB = elements[:, 0:2]
+        BC = elements[:, 1:3]
+        CA = np.vstack((elements[:, 2], elements[:, 0])).T
+        DE = elements[:, 3:5]
+        EF = elements[:, 4:]
+        FD = np.vstack((elements[:, 5], elements[:, 3])).T
+        AD = np.vstack((elements[:, 0], elements[:, 3])).T
+        BE = np.vstack((elements[:, 1], elements[:, 4])).T
+        CF = np.vstack((elements[:, 2], elements[:, 5])).T
+
+        tmpa = np.vstack((AB, BC, CA, DE, EF, FD, AD, BE, CF))
+    #deleting segments that appear multiple times
+        tmpb = np.ascontiguousarray(tmpa).view(np.dtype((np.void, tmpa.dtype.itemsize * tmpa.shape[1])))
+        _, idx = np.unique(tmpb, return_index=True)
+        triel = tmpa[idx]
+
+        for triangle in triel:
+            tri = list(zip(x[triangle], y[triangle], z[triangle]))
+            pl3 = Line3DCollection([tri], edgecolor='r')
+            ax.add_collection3d(pl3)
+
+        ax.set_xlim([min(x), max(x)])
+        ax.set_ylim([min(y), max(y)])
+        ax.set_zlim([min(z), max(z)])
+    #apply options
+    options.addfielddefault('title', 'Mesh')
+    options.addfielddefault('colorbar', 'off')
+    options.addfielddefault('ticklabels', 'on')
+    applyoptions(md, [], options, fig, axgrid, gridindex)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_none.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_none.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_none.m	(revision 27955)
@@ -0,0 +1,20 @@
+function plot_none(md,options,nlines,ncols,i)
+%PLOT_NONE - plot nothing, just apply options
+%
+%   Usage:
+%      plot_mesh(md,options,nlines,ncols,i);
+%
+%   See also: PLOTMODEL
+return;
+
+options=addfielddefault(options,'colorbar','none');
+options=addfielddefault(options,'map','none');
+options=addfielddefault(options,'axis','equal');
+
+if exist(options,'overlay'),
+	plot_overlay(md,'none',options,nlines,ncols,i);
+	return;
+end
+
+%apply options
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_overlay.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_overlay.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_overlay.js	(revision 27955)
@@ -0,0 +1,157 @@
+'use strict';
+
+/**
+ * Global Function: plotOverlay
+ *
+ * Plot a georeferenced image 
+ *
+ * Dependencies:
+ *      - /ext/proj4-<version>
+ *
+ * See Also:
+ *      - /js/plotmodel.js
+ *      - /js/plotmanager.js
+ */
+function plot_overlay(md, data, options, canvas) {
+    let elements        = null;
+    let meshresults     = null; // results from call to processmesh
+    let newX            = null; // scaled x-coordinates (array)
+    let newY            = null; // scaled y-coordinates (array)
+    let newZ            = null; // scaled z-coordinates (array)
+    let position        = null; // x-, y-, and z-coordinates of vertex (object)
+    let renderObject    = null; 
+    let reproject       = false; // default; whether or not to reproject overlay
+    let result          = null; // First, projection of radar overlay onto mesh; then, projection of overlay onto mesh
+    let scale           = null; // coordinate scalars (array)
+	let vertices        = null;
+    let x               = null; // x-coordinates from results (array)
+    let xlim            = null; // x-cooridinate limits (array)
+    let y               = null; // y-coordinates from results (array)
+    let ylim            = null; // y-cooridinate limits (array)
+    let z               = null; // z-coordinates from results (array)
+    
+	// Process data and model
+    meshresults = processmesh(md, [], options);
+	x           = meshresults[0]; 
+	y           = meshresults[1]; 
+	z           = meshresults[2]; 
+	elements    = meshresults[3];
+	
+	if (md.mesh.classname().startsWith('mesh2d')) {
+		if (vesl.helpers.isNaN(md.geometry.surface) || (md.geometry.surface[0] !== undefined && vesl.helpers.isNaN(md.geometry.surface[0]))) {
+			md.geometry.surface = NewArrayFill(x.length, 0);
+			z = NewArrayFill(x.length, 0);
+		} else {
+			z = md.geometry.surface;
+		}
+	}
+	
+	// Compute coordinates and data range
+	xlim = options.getfieldvalue('xlim', [ArrayMin(x), ArrayMax(x)]);
+	ylim = options.getfieldvalue('ylim', [ArrayMin(y), ArrayMax(y)]);
+	
+	// Handle radaroverlay
+	if (md.radaroverlay.outerx) {
+		result      = Node.prototype.mergeVertices(x, y, z, elements, md.radaroverlay.outerx, md.radaroverlay.outery, md.radaroverlay.outerheight, md.radaroverlay.outerindex);
+		x           = result.x;
+		y           = result.y;
+		z           = result.z;
+		elements    = result.elements;
+	}
+	
+	// Handle heightscale
+	renderObject = options.getfieldvalue('render', {});
+	
+	if ('overlay' in renderObject && renderObject.overlay.reproject !== undefined) {
+		reproject = renderObject.overlay.reproject;
+	}
+	
+	if (reproject) {
+		//NOTE: This is being hardcoded for now, as we want to display Josh's greenland-ice-retreat model on a globe.
+		// If mesh3dprisims do not need to be displayed on a globe, add an option to the view/render objects to specify the reprojection.
+		// Currently, we are also hardcoding the reprojection from EPSG:3413 (WGS 84 / NSIDC Sea Ice Polar Stereographic North) to EPSG:4326 (WGS 84, standard 2d spherical projection))
+		// projection definitions are taken from http://epsg.io/XXXXX.js, where XXXXX is the projection number.
+		// Can be dynamically taken and retrieved via md.mesh.epsg, but again, hardcoded for efficiency.
+		proj4.defs("EPSG:3413","+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); // http://epsg.io/3413.js
+		//Don't need to redefine EPSG:4326, as it is defined by default - however, this is still included just in case.
+		// proj4.defs("EPSG:4326","+proj=longlat +datum=WGS84 +no_defs"); // http://epsg.io/4326.js
+		//Create empty copies of XYZ to avoid rescaling md.geomtery.surface in the case that z = md.geomtery.surface
+		newX = NewArrayFill(x.length, 0);
+		newY = NewArrayFill(x.length, 0);
+		newZ = NewArrayFill(x.length, 0);
+		
+		for (let i = 0; i < x.length; ++i) {
+			result      = proj4('EPSG:3413','EPSG:4326', [x[i], y[i]]);
+			position    = vesl.geo.geographicToCartesian(vesl.EARTH_RADIUS + z[i], result[1], result[0], true);
+			newX[i]     = position.x;
+			newY[i]     = position.y;
+			newZ[i]     = position.z;
+		}
+		
+		x           = newX;
+		y           = newY;
+		z           = newZ;
+		vertices    = Node.prototype.scaleVertices(md, x, y, z, elements, options.getfieldvalue('heightscale', 1), options.getfieldvalue('maskregion',{'enabled':false, 'reproject':reproject}), true);
+		scale       = [1, 1, 1];
+    } else {
+		vertices    = Node.prototype.scaleVertices(md, x, y, z, elements, options.getfieldvalue('heightscale', 1), options.getfieldvalue('maskregion',{'enabled':false, 'reproject':reproject}), true);
+		scale       = [1, 1, 1];
+	}
+	
+	// Compute coordinates and data range
+	xlim = options.getfieldvalue('xlim', [ArrayMin(x), ArrayMax(x)]);
+	ylim = options.getfieldvalue('ylim', [ArrayMin(y), ArrayMax(y)]);
+	
+	// Compute GL variables
+	let texture         = new THREE.TextureLoader().load(options.getfieldvalue('overlay_image'));
+	let groundEnabled   = false;
+	let name            = 'overlay';
+	
+	if ('ground' in renderObject) {
+    	groundEnabled = renderObject.ground.enabled;
+    }
+    
+	if ('overlay' in renderObject) {
+    	name = renderObject.overlay.name;
+    }
+    
+	let shaderName = groundEnabled ? 'ground' : 'overlay';
+	
+	let node = new Node(
+		'canvas', canvas,
+		'options', options,
+		'md', md,
+		'name', name,
+		'shaderName', shaderName,
+		'opacity', options.getfieldvalue('outeropacity', 1.0),
+		'cullFace', THREE.DoubleSide,
+		'texture', texture,
+		'scale', scale
+	);
+	canvas.overlayNode = node;
+
+	let xRange      = xlim[1] - xlim[0];
+	let yRange      = ylim[1] - ylim[0];
+	let coordArray  = [new Array(x.length), new Array(x.length)];
+	
+	// Generate mesh
+	if (reproject || md.mesh.classname().startsWith('mesh3d')) {
+		let magnitude   = 0;
+		let xyz         = null;
+		
+		for (let i = 0; i < x.length; ++i) {
+			xyz                 = vec3.fromValues(vertices[0][i], vertices[1][i], vertices[2][i]);
+			magnitude           = vec3.length(xyz);
+		
+			coordArray[0][i]    = Math.atan2(xyz[1], xyz[0]) / (2 * Math.PI) + 0.5;
+			coordArray[1][i]    = Math.asin(xyz[2] / magnitude) / Math.PI + 0.5;
+		}
+	} else {
+		for (let i = 0; i < x.length; ++i) {
+			coordArray[0][i] = (vertices[0][i] - xlim[0]) / xRange;
+			coordArray[1][i] = (vertices[1][i] - ylim[0]) / yRange;
+		}
+	}
+	
+	node.patch('Faces', elements, 'Vertices', vertices, 'FaceVertexCData', coordArray, 'FaceColor', 'interp');
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_overlay.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_overlay.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_overlay.m	(revision 27955)
@@ -0,0 +1,186 @@
+function plot_overlay(md,data,options,plotlines,plotcols,i)
+%PLOT_OVERLAY - superimpose radar image to a given field
+%
+%   Usage:
+%      plot_overlay(md,data,options,plotlines,plotcols,i)
+%
+%   See also: PLOTMODEL
+
+%process mesh and data
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+if strcmpi(data,'none'),
+	radaronly=1;
+	data=NaN*ones(md.mesh.numberofvertices,1);
+	datatype=1;
+else
+	radaronly=0;
+	[data datatype]=processdata(md,data,options);
+end
+
+islevelset = exist(options,'levelset');
+if islevelset
+	levelset = getfieldvalue(options,'levelset');
+	[levelset datatype]=processdata(md,levelset,options);
+end
+
+%check is2d
+if ~is2d, 
+	error('buildoverlay error message: overlay not supported for 3d meshes, project on a layer');
+end
+if datatype==3,
+	error('buildoverlay error message: overlay not supported for quiver plots');
+end
+
+%radar power
+if ~any(isnan(md.radaroverlay.x)) & ~any(isnan(md.radaroverlay.y)) & ~any(isnan(md.radaroverlay.pwr)),
+	disp('plot_overlay info: the radar image held by the model is being used');
+	xlim=[min(md.radaroverlay.x) max(md.radaroverlay.x)];
+	ylim=[min(md.radaroverlay.y) max(md.radaroverlay.y)];
+else
+	disp('Extracting radar image...');
+	%Get xlim and ylim (used to extract radar image)
+	xlim=getfieldvalue(options,'xlim',[min(x) max(x)])/getfieldvalue(options,'unit',1);
+	ylim=getfieldvalue(options,'ylim',[min(y) max(y)])/getfieldvalue(options,'unit',1);
+	if exist(options, 'axis');
+		myaxis = getfieldvalue(options,'axis');
+		xlim = [myaxis(1), myaxis(2)];
+		ylim = [myaxis(3), myaxis(4)];
+	end
+	options=addfielddefault(options,'xlim',xlim);
+	options=addfielddefault(options,'ylim',ylim);
+	md=radarpower(md,options);
+end
+contrast = getfieldvalue(options,'contrast',1);  
+radar    = md.radaroverlay.pwr;
+
+if ~radaronly
+	if size(radar,3)>1,
+		disp('WARNING: color image converted to greyscale intensity image');
+		if strcmp(class(radar),'uint8'),
+			radar=double(sum(radar,3))/(255*3);
+		else
+			radar=sum(radar,3)/3;
+		end
+	end
+	if getfieldvalue(options,'backgroundbtw',0)
+		radar(find(radar==0))=1; %Change background from black to white
+	end
+	radar = radar.^(contrast);
+	radar = radar./max(radar(:));
+end
+
+if getfieldvalue(options,'backgroundbtw',0)
+	radar(find(radar==0))=1; %Change background from black to white
+end
+
+%InterpFromMeshToGrid
+disp('Interpolating data on grid...');
+x_m = md.radaroverlay.x;
+y_m = md.radaroverlay.y;
+if radaronly,
+	data_grid=NaN(size(radar));
+else
+	data_grid=InterpFromMeshToGrid(elements,x/getfieldvalue(options,'unit',1),y/getfieldvalue(options,'unit',1),data,x_m,y_m,NaN);
+end
+%Mask values if levelset>0
+if islevelset
+	ls_grid=InterpFromMeshToGrid(elements,x/getfieldvalue(options,'unit',1),y/getfieldvalue(options,'unit',1),levelset,x_m,y_m,+1);
+	data_grid(ls_grid>0) = NaN;
+end
+
+%Process data_grid (For processing, it is better not to have nan)
+pos=find(isinf(data_grid));
+if ~isempty(pos),
+	disp('Warning: removing Infs from vector (probably log(0)?)');
+	data_grid(pos)=NaN;
+end
+if exist(options,'caxis'),
+	caxis_opt=getfieldvalue(options,'caxis');
+	data_grid(find(data_grid<caxis_opt(1)))=caxis_opt(1);
+	data_grid(find(data_grid>caxis_opt(2)))=caxis_opt(2);
+	data_min=caxis_opt(1);
+	data_max=caxis_opt(2);
+else
+	data_min=min(data_grid(:));
+	data_max=max(data_grid(:));
+end
+data_nan=find(isnan(data_grid));
+data_grid(data_nan)=data_min; 
+
+%Special colormaps that require hsv treatment
+colorm=getfieldvalue(options,'colormap','parula');
+if strcmpi(colorm,'Rignot') | strcmpi(colorm,'Seroussi') | strcmpi(colorm,'redblue')
+	if strcmpi(colorm,'Rignot'),
+		transparency=getfieldvalue(options,'alpha',1);
+		h=(data_grid-data_min)/(data_max-data_min+eps);
+		if radaronly, h(:)=0; end
+		s=max(min((0.1+h).^(1/transparency),1),0);
+	elseif strcmpi(colorm,'Seroussi'),
+		transparency=getfieldvalue(options,'alpha',1);
+		h=1-(data_grid-data_min)/(data_max-data_min+eps)*0.7;
+		if radaronly, h(:)=0; end
+		s=max(min((0.1+h).^(1/transparency),1),0);
+	elseif strcmpi(colorm,'redblue')
+		data_mean=data_min+(data_max-data_min)/2;
+		h=1*ones(size(data_grid));
+		h(find(data_grid<data_mean))=0.7;
+		s=max(min(abs(data_grid-data_mean)/(data_max-data_mean) ,1),0);
+	else
+		error('colormap not supported yet. (''Rignot'' and ''redblue'' are the only cupported colormaps)');
+	end
+	%(S) Saturation is 0 in NaNs
+	s(data_nan)=0;
+	%(V) intensity is based on radar image
+	v=radar; %use radar power as intensity
+
+	%Transform HSV to RGB
+	image_hsv=zeros(size(data_grid,1),size(data_grid,2),3);
+	image_hsv(:,:,1)=h; clear h;
+	image_hsv(:,:,2)=s; clear s;
+	image_hsv(:,:,3)=v; clear v;
+	image_rgb=hsv2rgb(image_hsv);
+else
+	if radaronly
+		image_rgb = radar;
+	else
+		colorm = getcolormap(options);
+		len    = size(colorm,1);
+
+		ind = ceil((len-1)*(data_grid-data_min)/(data_max - data_min + eps) +1);
+		ind(find(ind>len))=len;
+		image_rgb=zeros(size(data_grid,1),size(data_grid,2),3);
+		r=colorm(:,1); image_rgb(:,:,1)=r(ind); clear r;
+		g=colorm(:,2); image_rgb(:,:,2)=g(ind); clear g;
+		b=colorm(:,3); image_rgb(:,:,3)=b(ind); clear b;
+
+		%Now add radarmap
+		r = image_rgb(:,:,1).*radar;  r(data_nan) = radar(data_nan);  image_rgb(:,:,1) = r;  clear r;
+		g = image_rgb(:,:,2).*radar;  g(data_nan) = radar(data_nan);  image_rgb(:,:,2) = g;  clear g;
+		b = image_rgb(:,:,3).*radar;  b(data_nan) = radar(data_nan);  image_rgb(:,:,3) = b;  clear b;
+	end
+end
+
+%Select plot area 
+subplotmodel(plotlines,plotcols,i,options);
+
+%Plot: 
+imagesc(x_m*getfieldvalue(options,'unit',1),y_m*getfieldvalue(options,'unit',1),image_rgb);set(gca,'YDir','normal');
+
+%last step: mesh overlay?
+if exist(options,'edgecolor'),
+	hold on
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	patch('Faces',[A B C],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none',...
+		'EdgeColor',getfieldvalue(options,'edgecolor'),'LineWidth',getfieldvalue(options,'linewidth',1));
+end
+
+%Apply options, without colorbar and without grid
+options=changefieldvalue(options,'colormap',colorm);              % We used an HSV colorbar
+if ~isnan(data_min),
+	options=changefieldvalue(options,'caxis',[data_min data_max]); % force caxis so that the colorbar is ready
+end
+options=addfielddefault(options,'xlim',xlim);        % default xlim
+options=addfielddefault(options,'ylim',ylim);        % default ylim
+options=addfielddefault(options,'axis','equal off'); % default axis
+applyoptions(md,data,options);
+%drawnow
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_overlay.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_overlay.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_overlay.py	(revision 27955)
@@ -0,0 +1,138 @@
+import os
+
+import matplotlib.pyplot as plt
+import matplotlib as mpl
+try:
+    from mpl_toolkits.basemap import Basemap
+except ImportError:
+    print('Basemap toolkit not installed')
+import numpy as np
+try:
+    from osgeo import gdal
+except ImportError:
+    print('OSGeo/GDAL for python not installed, plot_overlay is disabled')
+
+from processdata import processdata
+from processmesh import processmesh
+from xy2ll import xy2ll
+
+
+def plot_overlay(md, data, options, ax):
+    """Function for plotting a georeferenced image. Called from plot_manager by 
+    call to plotmodel.
+
+    Usage:
+        plot_overlay(md, data, options, ax)
+
+    See also: PLOTMODEL
+    """
+
+    x, y, z, elements, is2d, isplanet = processmesh(md, [], options)
+    try:
+        data, datatype = processdata(md, data, options)
+        imageonly = 0
+    except (TypeError, ValueError):  #that should catch None and 'none' but may also catch unwanted errors
+        imageonly = 1
+        data = np.float('nan') * np.ones((md.mesh.numberofvertices, ))
+        datatype = 1
+
+    if not is2d:
+        raise Exception('overlay plot not supported for 3D meshes, project on a 2D layer first')
+
+    if not options.exist('overlay_image'):
+        raise Exception('overlay error: provide overlay_image with path to geotiff file')
+    image = options.getfieldvalue('overlay_image')
+
+    xlim = options.getfieldvalue('xlim', [min(md.mesh.x), max(md.mesh.x)])
+    ylim = options.getfieldvalue('ylim', [min(md.mesh.y), max(md.mesh.y)])
+
+    gtif = gdal.Open(image)
+    trans = gtif.GetGeoTransform()
+    xmin = trans[0]
+    xmax = trans[0] + gtif.RasterXSize * trans[1]
+    ymin = trans[3] + gtif.RasterYSize * trans[5]
+    ymax = trans[3]
+    # allow supplied image to have limits smaller than basemap or model limits
+    x0 = max(min(xlim), xmin)
+    x1 = min(max(xlim), xmax)
+    y0 = max(min(ylim), ymin)
+    y1 = min(max(ylim), ymax)
+    inputname = 'temp.tif'
+    os.system('gdal_translate-quiet - projwin ' + str(x0) + ' ' + str(y1) + ' ' + str(x1) + ' ' + str(y0) + ' ' + image + ' ' + inputname)
+
+    gtif = gdal.Open(inputname)
+    arr = gtif.ReadAsArray()
+    #os.system('rm -rf . / temp.tif')
+
+    if gtif.RasterCount >= 3:  # RGB array
+        r = gtif.GetRasterBand(1).ReadAsArray()
+        g = gtif.GetRasterBand(2).ReadAsArray()
+        b = gtif.GetRasterBand(3).ReadAsArray()
+        arr = 0.299 * r + 0.587 * g + 0.114 * b
+
+    # normalize array
+    arr = arr / np.float(np.max(arr.ravel()))
+    arr = 1. - arr  # somehow the values got flipped
+
+    if options.getfieldvalue('overlayhist', 0) == 1:
+        ax = plt.gca()
+        num = 2
+        while True:
+            if not plt.fignum_exists(num):
+                break
+            else:
+                num += 1
+        plt.figure(num)
+        plt.hist(arr.flatten(), bins=256, range=(0., 1.))
+        plt.title('histogram of overlay image, use for setting overlaylims')
+        plt.show()
+        plt.sca(ax) # return to original axes/figure
+
+    # get parameters from cropped geotiff
+    trans = gtif.GetGeoTransform()
+    xmin = trans[0]
+    xmax = trans[0] + gtif.RasterXSize * trans[1]
+    ymin = trans[3] + gtif.RasterYSize * trans[5]
+    ymax = trans[3]
+    dx = trans[1]
+    dy = trans[5]
+
+    xarr = np.arange(xmin, xmax, dx)
+    yarr = np.arange(ymin, ymax, -dy)  # - dy since origin = 'upper' (not sure how robust this is)
+    xg, yg = np.meshgrid(xarr, yarr)
+    overlaylims = options.getfieldvalue('overlaylims', [min(arr.ravel()), max(arr.ravel())])
+    norm = mpl.colors.Normalize(vmin=overlaylims[0], vmax=overlaylims[1])
+
+    pc = ax.pcolormesh(xg, yg, np.flipud(arr), cmap=mpl.cm.Greys, norm=norm)
+
+    if options.exist('basemap'):
+        # create coordinate grid in map projection units (for plotting)
+        if md.mesh.epsg == 3413:
+            hemisphere = 1
+            st_lat = 70
+            lon_0 = 45
+        elif md.mesh.epsg == 3031:
+            hemisphere = -1
+            st_lat = 71
+            lon_0 = 0
+        else:
+            hemisphere = eval(input('epsg code {} is not supported chose your hemisphere (1 for North, -1 for south)'.format(md.mesh.epsg)))
+
+        lat, lon = xy2ll(xlim, ylim, hemisphere, lon_0, st_lat)
+        extent = [np.diff(xlim)[0], np.diff(ylim)[0]]
+        center = [lon[0] + np.diff(lon)[0] * 0.5, lat[0] + np.diff(lat)[0] * 0.5]
+        m = Basemap(llcrnrlon=lon[0], llcrnrlat=lat[0], urcrnrlon=lon[1], urcrnrlat=lat[1],
+                    lon_0=center[0], lat_0=center[1], width=extent[0], height=extent[1],
+                    epsg=md.mesh.epsg, anchor='NW',
+                    resolution='i', ax=ax)
+
+        meridians = np.arange(np.floor(lon[0]), np.ceil(lon[1]), 1.)
+        parallels = np.arange(np.floor(lat[0]), np.ceil(lat[1]), 1.)
+        m.drawparallels(parallels, labels=[1, 0, 0, 0], ax=ax)  # labels = [left, right, top, bottom]
+        m.drawmeridians(meridians, labels=[0, 0, 1, 0], ax=ax)
+        m.drawcoastlines(ax=ax)
+        m.drawmapboundary(ax=ax)
+
+    #rasterization?
+    if options.getfieldvalue('rasterized', 0):
+        pc.set_rasterized(True)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_parthist.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_parthist.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_parthist.m	(revision 27955)
@@ -0,0 +1,34 @@
+function plot_parthist(md,options,nlines,ncols,i)
+%PLOT_PARTHIST - plot partitioning histogram
+%
+%   Usage:
+%      plot_parthist(md,options,nlines,ncols,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%plot mesh
+subplot(nlines,ncols,i); 
+
+imin=min(md.qmu.partition);
+imax=max(md.qmu.partition);
+
+part=zeros(imax-imin+1,2);
+
+for i=imin:imax
+    ind=find(md.qmu.partition == i);
+    part(i-imin+1,1)=length(ind);
+	part(i-imin+1,2)=sum(md.vertex_weight(ind));
+end
+
+subplot(2,1,1)
+bar(imin:imax,part(:,1));
+xlim([imin-0.5 imax+0.5])
+title('Number of Nodes in Each Partition')
+
+subplot(2,1,2)
+bar(imin:imax,part(:,2));
+xlim([imin-0.5 imax+0.5])
+title('Total Weight in Each Partition')
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_parthistn.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_parthistn.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_parthistn.m	(revision 27955)
@@ -0,0 +1,43 @@
+function plot_parthist(md,options,nlines,ncols,i)
+%PLOT_PARTHIST - plot partitioning histogram
+%
+%   Usage:
+%      plot_parthist(md,options,nlines,ncols,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%plot mesh
+subplot(nlines,ncols,i); 
+
+imin=min(md.qmu.partition);
+imax=max(md.qmu.partition);
+
+part=zeros(imax-imin+1,2);
+
+for i=imin:imax
+    ind=find(md.qmu.partition == i);
+    part(i-imin+1,1)=length(ind);
+	part(i-imin+1,2)=sum(md.vertex_weight(ind));
+end
+
+%subplot(2,1,1)
+bar(imin:imax,part(:,1));
+%xlim([imin-0.5 imax+0.5])
+%title('Number of Nodes in Each Partition')
+options=addfielddefault(options,'xlim',[imin-0.5 imax+0.5]);
+options=addfielddefault(options,'title','Number of Nodes in Each Partition');
+options=addfielddefault(options,'colorbar','off');
+
+%subplot(2,1,2)
+%bar(imin:imax,part(:,2));
+%xlim([imin-0.5 imax+0.5])
+%title('Total Weight in Each Partition')
+%options=addfielddefault(options,'xlim',[imin-0.5 imax+0.5]);
+%options=addfielddefault(options,'title','Total Weight in Each Partition');
+%options=addfielddefault(options,'colorbar','off');
+
+%apply options
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_parthistw.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_parthistw.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_parthistw.m	(revision 27955)
@@ -0,0 +1,43 @@
+function plot_parthist(md,options,nlines,ncols,i)
+%PLOT_PARTHIST - plot partitioning histogram
+%
+%   Usage:
+%      plot_parthist(md,options,nlines,ncols,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%plot mesh
+subplot(nlines,ncols,i); 
+
+imin=min(md.qmu.partition);
+imax=max(md.qmu.partition);
+
+part=zeros(imax-imin+1,2);
+
+for i=imin:imax
+    ind=find(md.qmu.partition == i);
+    part(i-imin+1,1)=length(ind);
+	part(i-imin+1,2)=sum(md.vertex_weight(ind));
+end
+
+%subplot(2,1,1)
+%bar(imin:imax,part(:,1));
+%xlim([imin-0.5 imax+0.5])
+%title('Number of Nodes in Each Partition')
+%options=addfielddefault(options,'xlim',[imin-0.5 imax+0.5]);
+%options=addfielddefault(options,'title','Number of Nodes in Each Partition');
+%options=addfielddefault(options,'colorbar','off');
+
+%subplot(2,1,2)
+bar(imin:imax,part(:,2));
+%xlim([imin-0.5 imax+0.5])
+%title('Total Weight in Each Partition')
+options=addfielddefault(options,'xlim',[imin-0.5 imax+0.5]);
+options=addfielddefault(options,'title','Total Weight in Each Partition');
+options=addfielddefault(options,'colorbar','off');
+
+%apply options
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_penalties.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_penalties.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_penalties.m	(revision 27955)
@@ -0,0 +1,48 @@
+function plot_penalties(md,options,width,i)
+%PLOT_PENALTIES - plot penalties
+%
+%   Usage:
+%      plot_penalties(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%plot mesh penalties
+subplot(width,width,i); 
+
+%units
+if exist(options,'unit'),
+	unit=getfieldvalue(options,'unit');
+	x=x*unit;
+	y=y*unit;
+	z=z*unit;
+end
+
+if dimension(md.mesh)~=3,
+	error('no penalties to plot for ''2d'' model');
+elseif isempty(md.penalties),
+	disp('no penalty applied in this model');
+	return;
+else
+	%plot mesh
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+	patch( 'Faces', [A B C],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+
+	hold on;
+	for (i=1:size(md.penalties,1)),
+		P1=plot3(x(md.penalties(i,1)),y(md.penalties(i,1)),z(md.penalties(i,1)),'ro','MarkerSize',15,'MarkerFaceColor','r');
+		P2=plot3(x(md.penalties(i,:)),y(md.penalties(i,:)),z(md.penalties(i,:)),'bo-','LineWidth',2,'MarkerSize',8,'MarkerFaceColor','b');
+	end
+	legend([P1 P2],'SSA''s penalized nodes','HO''s penalized nodes');
+end
+
+%apply options
+options=addfielddefault(options,'title','Penalties');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_profile.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_profile.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_profile.m	(revision 27955)
@@ -0,0 +1,55 @@
+function plot_profile(md,data,options,nlines,ncols,ii)
+%PLOT_SECTION - plot a given field on a profile
+%
+%   Usage:
+%      plot_profile(md,data,options,nlines,ncols,i)
+%
+%   See also: PLOTMODEL
+
+%process model
+[x_m y_m z_m elements_m is2d isplanet]=processmesh(md,[],options);
+if is2d, error('only 3d model supported'); end
+
+%Get number of curves and generate random colors
+numcurves=size(data,2);
+colorm=getfieldvalue(options,'colormap','lines');
+color=eval([ colorm '(numcurves);']);
+options=removefield(options,'colormap',0); %back to default colormap
+
+%Get coordinates
+location=getfieldvalue(options,'profile');
+if ~isnumeric(location) | numel(location)~=2,
+	error('location provided not supported (should be [x y])');
+end
+xprof=location(1);
+yprof=location(2);
+
+%Loop over number of curves
+for i=1:numcurves,
+
+	%Process data
+	[datai datatype]=processdata(md,data(:,i),options);
+
+	%resolution[z,data_interp]=ProfileValues(md,datai,xprof,yprof,resolution);
+	if exist(options,'resolution'),
+		resolution=getfieldvalue(options,'resolution');
+	else %Default resolution
+		resolution=[100];
+		disp(['plot_profile warning: no resolution specified, using default: ' num2str(resolution) ]);
+	end
+
+	%Compute profile value
+	[z,data_interp]=ProfileValues(md,datai,xprof,yprof,resolution);
+
+	%plot profile
+	subplot(nlines,ncols,ii)
+	plot(data_interp,z,'color',color(i,:),'LineWidth',getfieldvalue(options,'linewidth',1),'LineStyle','-');
+	hold on;
+end
+
+%apply options
+options=addfielddefault(options,'title','Profile');
+options=addfielddefault(options,'colorbar',0);
+options=addfielddefault(options,'ylabel','z');
+options=addfielddefault(options,'view',2);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_qmu_mass_flux_segments.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_qmu_mass_flux_segments.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_qmu_mass_flux_segments.m	(revision 27955)
@@ -0,0 +1,49 @@
+function plot_qmu_mass_flux_segments(md,options,nlines,ncols,i)
+%PLOT_QMU_MASS_FLUX_SEGMENTS - plot segments from the qmu analysis of mass fluxes
+%
+%   Usage:
+%      plot_qmu_mass_flux_segments(md,options,nlines,ncols,i);
+%
+
+subplot(nlines,ncols,i); 
+
+%process mesh and data
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+allsegments=md.qmu.mass_flux_segments;
+
+if dimension(md.mesh)==2,
+
+	%recover segments
+	hold on
+	for i=1:length(allsegments),
+		segments=allsegments{i};
+
+		%plot semgnets
+		for j=1:length(segments),
+			plot([segments(j,1) segments(j,3)],[segments(j,2) segments(j,4)]);
+		end
+		text(segments(j,1),segments(j,2),['Profile #' num2str(i)]);
+
+		%plot normals
+
+		for j=1:length(segments),
+			xstart=mean([segments(j,1) segments(j,3)]);
+			ystart=mean([segments(j,2) segments(j,4)]);
+			length1=sqrt((segments(j,1)-segments(j,3)).^2 + (segments(j,2)-segments(j,4)).^2);
+			normal(:,1)=cos(atan2(segments(j,1)-segments(j,3) , segments(j,4)-segments(j,2)));
+			normal(:,2)=sin(atan2(segments(j,1)-segments(j,3) , segments(j,4)-segments(j,2)));
+			xend=xstart+length1.*normal(:,1);
+			yend=ystart+length1.*normal(:,2);
+			plot([xstart xend],[ystart yend],'r-');
+		end
+
+	end
+else
+	error('plot_qmu_mass_flux_segments: 3d plot of segments not supported yet!');
+end
+
+%apply options
+options=addfielddefault(options,'title','Mass Flux segments and normals');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_qmuhistnorm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_qmuhistnorm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_qmuhistnorm.m	(revision 27955)
@@ -0,0 +1,47 @@
+function plot_qmuhistnorm(md,options,nlines,ncols,index)
+
+%prepare plot
+subplot(nlines,ncols,index); 
+hold on
+
+%recover histnorm data
+if ~exist(options,'qmudata')
+	error('plot_qmuhistnorm error message: option qmudata is required');
+else
+	qmudata=getfieldvalue(options,'qmudata');
+end
+
+%process options for the qmu plot: 
+
+%    hmin          (numeric, minimum for histogram)
+%    hmax          (numeric, maximum for histogram)
+%    hnint         (numeric, number of intervals for histogram)
+%    ymin1         (numeric, minimum of histogram y-axis)
+%    ymax1         (numeric, maximum of histogram y-axis)
+%    ymin2         (numeric, minimum of cdf y-axis)
+%    ymax2         (numeric, maximum of cdf y-axis)
+%    cdfplt        (char, 'off' to turn off cdf line plots)
+%    cdfleg        (char, 'off' to turn off cdf legends)
+%
+
+qmuoptions='';
+
+if exist(options,'hmin'), hmin=getfieldvalue(options,'hmin'); qmuoptions=[qmuoptions ',''hmin'',' num2str(hmin)]; end
+if exist(options,'hmax'), hmax=getfieldvalue(options,'hmax'); qmuoptions=[qmuoptions ',''hmax'',' num2str(hmax)]; end
+if exist(options,'hnint'), hnint=getfieldvalue(options,'hnint'); qmuoptions=[qmuoptions ',''hnint'',' num2str(hnint)]; end
+if exist(options,'ymin1'), ymin1=getfieldvalue(options,'ymin1'); qmuoptions=[qmuoptions ',''ymin1'',' num2str(ymin1)]; end
+if exist(options,'ymax1'), ymax1=getfieldvalue(options,'ymax1'); qmuoptions=[qmuoptions ',''ymax1'',' num2str(ymax1)]; end
+if exist(options,'ymin2'), ymin2=getfieldvalue(options,'ymin2'); qmuoptions=[qmuoptions ',''ymin2'',' num2str(ymin2)]; end
+if exist(options,'ymax2'), ymax2=getfieldvalue(options,'ymax2'); qmuoptions=[qmuoptions ',''ymax2'',' num2str(ymax2)]; end
+if exist(options,'cdfplt'), cdfplt=getfieldvalue(options,'cdfplt'); qmuoptions=[qmuoptions ',''cdfplt'',''' cdfplt '''']; end
+if exist(options,'cdfleg'), cdfleg=getfieldvalue(options,'cdfleg'); qmuoptions=[qmuoptions ',''cdfleg'',''' cdfleg '''']; end
+if exist(options,'nrmplt'), nrmplt=getfieldvalue(options,'nrmplt'); qmuoptions=[qmuoptions ',''nrmplt'',''' nrmplt '''']; end
+if exist(options,'EdgeColor'), EdgeColor=getfieldvalue(options,'EdgeColor'); qmuoptions=[qmuoptions ',''EdgeColor'',''' EdgeColor '''']; end
+if exist(options,'FaceColor'), FaceColor=getfieldvalue(options,'FaceColor'); qmuoptions=[qmuoptions ',''FaceColor'',''' FaceColor '''']; end
+
+%use qmu plot
+eval(['plot_hist_norm(qmudata' qmuoptions ');']);
+
+%apply options
+options=changefieldvalue(options,'colorbar','off');
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_qmumean.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_qmumean.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_qmumean.m	(revision 27955)
@@ -0,0 +1,59 @@
+function plot_qmumean(md,options,nlines,ncols,i)
+%PLOT_QMUMEAN - plot mean of a scaled response 
+%
+%   Usage:
+%      plot_qmumean(md,options,nlines,ncols,i);
+%
+%   See also: PLOTMODEL
+
+%plot mesh
+subplot(nlines,ncols,i); 
+
+%edgecolor
+edgecolor=getfieldvalue(options,'edgecolor','none');
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%find response function
+if exist(options,'qmudata'), 
+	descriptor=getfieldvalue(options,'qmudata'); 
+	if ~ischar(descriptor),
+		error('plot_qmumean error message:  descriptor should be a string');
+	end
+else 
+	error('plot_qmumean error message:  provide descriptor of response function in ''qmudata'' option');
+end
+
+%go pick up the response: 
+allresponses=md.qmu.results.dresp_out;
+responses=zeros(md.qmu.numberofpartitions,1);
+
+count=1;
+for i=1:length(allresponses),
+	d=allresponses(i).descriptor;
+	if strncmpi(d,'scaled_',7),
+		d=d(8:end);
+		if strncmpi(d,descriptor,length(descriptor)),
+			responses(count)=allresponses(i).mean;
+			count=count+1;
+		end
+	end
+end
+
+%log?
+if exist(options,'log'),
+	responses=log(responses)/log(getfieldvalue(options,'log'));
+end
+
+%now, project onto vertices
+responses_on_node=responses(md.qmu.partition+1);
+
+%plot
+A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', responses_on_node,'FaceColor','interp','EdgeColor',edgecolor);
+
+%apply options
+options=addfielddefault(options,'title',['Mean distribution of ' descriptor]);
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_qmunormplot.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_qmunormplot.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_qmunormplot.m	(revision 27955)
@@ -0,0 +1,45 @@
+%
+%  plot a normal probability plot of the response functions.
+%
+%  []=plot_normplot(rfunc)
+%
+function []=plot_qmunormplot(rfunc,width,ii)
+
+if ~nargin
+    help plot_normplot
+    return
+end
+
+%%  assemble the data into a matrix
+
+desc=cell (1,length(rfunc));
+for i=1:length(rfunc)
+    ldata(i)=length(rfunc(i).sample);
+end
+data=zeros(max(ldata),length(rfunc));
+
+for i=1:length(rfunc)
+    desc(i)=cellstr(rfunc(i).descriptor);
+    data(1:ldata(i),i)=rfunc(i).sample;
+end
+
+%standard plot:
+subplot(width,width,ii);
+
+%%  draw the plot
+
+%  draw normal probability plot
+
+normplot(data)
+ax1=gca;
+
+%  add the annotation
+
+title('Normal Probability Plot of Design Variables and/or Response Functions')
+xlabel('Value')
+ylabel('Probability')
+
+hleg1=legend(ax1,desc,'Location','EastOutside',...
+             'Orientation','vertical','Interpreter','none');
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_qmustddev.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_qmustddev.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_qmustddev.m	(revision 27955)
@@ -0,0 +1,59 @@
+function plot_qmustddev(md,options,nlines,ncols,i)
+%PLOT_QMUMEAN - plot stddev of a scaled response 
+%
+%   Usage:
+%      plot_qmustddev(md,options,nlines,ncols,i);
+%
+%   See also: PLOTMODEL
+
+%plot mesh
+subplot(nlines,ncols,i); 
+
+%edgecolor
+edgecolor=getfieldvalue(options,'edgecolor','none');
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%find response function
+if exist(options,'qmudata'), 
+	descriptor=getfieldvalue(options,'qmudata'); 
+	if ~ischar(descriptor),
+		error('plot_qmustddev error message:  descriptor should be a string');
+	end
+else 
+	error('plot_qmustddev error message:  provide descriptor of response function in ''qmudata'' option');
+end
+
+%go pick up the response: 
+allresponses=md.qmu.results.dresp_out;
+responses=zeros(md.qmu.numberofpartitions,1);
+
+count=1;
+for i=1:length(allresponses),
+	d=allresponses(i).descriptor;
+	if strncmpi(d,'scaled_',7),
+		d=d(8:end);
+		if strncmpi(d,descriptor,length(descriptor)),
+			responses(count)=allresponses(i).stddev/allresponses(i).mean*100;
+			count=count+1;
+		end
+	end
+end
+
+%log?
+if exist(options,'log'),
+	responses=log(responses)/log(getfieldvalue(options,'log'));
+end
+
+%now, project onto vertices
+responses_on_node=responses(md.qmu.partition+1);
+
+%plot
+A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', responses_on_node,'FaceColor','interp','EdgeColor',edgecolor);
+
+%apply options
+options=addfielddefault(options,'title',['Stddev  distribution of ' descriptor ' in %']);
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_quiver.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_quiver.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_quiver.js	(revision 27955)
@@ -0,0 +1,108 @@
+function plot_quiver(md, options, canvas, noCacheNodesOverride) { //{{{
+	//PLOT_QUIVER - quiver plot with colors
+	//
+	//   Usage:
+	//      plot_quiver(md, options, canvas)
+	//
+	//   See also: PLOTMODEL, PLOT_MANAGER
+
+	//Disabling for now, since quivers are "sticky" - once turned on, they won't turn off. This is due to cachenodes, but should find better way to handle it.
+	return;
+	
+	//if ('quiver' in canvas.nodes && noCacheNodesOverride && options.getfieldvalue('cachenodes','off') === 'on') return; 
+	
+	//{{{ declare variables:
+	//Process data and model
+	var meshresults = processmesh(md, [], options);
+	var x = meshresults[0]; 
+	var y = meshresults[1]; 
+	var z = meshresults[2]; 
+	var elements = meshresults[3]; 
+	var is2d = meshresults[4]; 
+	var isplanet = meshresults[5];
+	if (!md.mesh.classname().startsWith('mesh3d')) {
+		z = md.geometry.surface;
+	}
+		
+	//Compute coordinates and data range:
+	var xlim = options.getfieldvalue('xlim', [ArrayMin(x), ArrayMax(x)]);
+	var ylim = options.getfieldvalue('ylim', [ArrayMin(y), ArrayMax(y)]);
+	var zlim = options.getfieldvalue('zlim', [ArrayMin(z), ArrayMax(z)]);
+
+	//Only displaying velocity fields for now
+	var v = vesl.helpers.isEmptyOrUndefined(md.results) ?  md.initialization.vel : md.results[canvas.animation.frame].Vel;
+	var vx = vesl.helpers.isEmptyOrUndefined(md.results) ? md.initialization.vx : md.results[canvas.animation.frame].Vx;
+	var vy = vesl.helpers.isEmptyOrUndefined(md.results) ? md.initialization.vy : md.results[canvas.animation.frame].Vy;
+
+	//Handle heightscale
+	var vertices, scale;
+	if (!md.mesh.classname().startsWith('mesh3d')) {
+		vertices = [x, y, z];
+		scale = [1, 1, options.getfieldvalue('heightscale', 1)];
+	}
+	else {
+		vertices = Node.prototype.scaleVertices(md, x, y, z, elements, options.getfieldvalue('heightscale', 1), options.getfieldvalue('maskregion',{'enabled':false}), true);
+		scale = [1, 1, 1];
+	}
+	
+	//Compute gl variables:
+	var edgecolor = options.getfieldvalue('edgecolor', 'black');
+	var node = new Node(
+		'canvas', canvas,
+		'options', options,
+		'name', 'quiver',
+		'shaderName', 'Colored',
+		'opacity', options.getfieldvalue('opacity', 1.0),
+		//'center', [(xlim[0] + xlim[1]) / 2, (ylim[0] + ylim[1]) / 2, md.mesh.classname() === 'mesh3dsurface' ? (zlim[0] + zlim[1]) / 2 : zlim[0]],
+		'center', [(xlim[0] + xlim[1]) / 2, (ylim[0] + ylim[1]) / 2, (zlim[0] + zlim[1]) / 2],
+		'drawMode', canvas.gl.LINES,
+		'diffuseColor', edgecolor,
+		'lineWidth', options.getfieldvalue('linewidth', 1),
+		'maskEnabled', options.getfieldvalue('innermask','off') == 'on',
+		'maskHeight', options.getfieldvalue('innermaskheight', 150.0) / options.getfieldvalue('heightscale', 1),
+		'maskColor', options.getfieldvalue('innermaskcolor',[0.0, 0.0, 1.0, 1.0]),
+		'rotation', [-90, 0, 0],
+		'scale', scale
+	);
+	
+	
+	//{{{ node plot
+	if (elements[0].length==6){ //prisms
+	}
+	else if (elements[0].length==4){ //tetras
+	}
+	else{ //2D triangular elements
+		//Create arow vertices, and use vx/vy to determine rotation before adding to quiver mesh.
+		var verticesArrow = [vec3.fromValues(0.0, 0.0, 0.0), vec3.fromValues(1.0, 0.0, 0.0), vec3.fromValues(0.667, -0.167, 0.0), vec3.fromValues(1.0, 0.0, 0.0), vec3.fromValues(0.667, 0.166, 0.0), vec3.fromValues(1.0, 0.0, 0.0)];
+		
+		var newX = [];
+		var newY = [];
+		var newZ = [];
+		var xyz = vec3.create();
+		var vertex = vec3.create();
+		var scaling = options.getfieldvalue('scaling', 1);
+		var heightScale = options.getfieldvalue('heightscale', 1);
+		var arrowScale;
+		var modelMatrix = mat4.create();
+		var scaleMatrix = mat4.create();
+		var rotationMatrix = mat4.create();
+		
+		for(var i = 0, iX = 0, iY = 0, iZ = 0; i < x.length; i++){
+			xyz = vec3.fromValues(x[i], y[i], z[i]);
+			arrowScale = v[i] * scaling;
+			scaleMatrix = mat4.create();
+			mat4.scale(scaleMatrix, mat4.create(), vec3.fromValues(arrowScale, arrowScale, arrowScale));
+			mat4.rotate(rotationMatrix, mat4.create(), Math.atan2(vy[i], vx[i]), [0.0, 0.0, 1.0]);
+			mat4.multiply(modelMatrix, rotationMatrix, scaleMatrix);
+			for (var j = 0; j < 6; j++){
+				vec3.transformMat4(vertex, verticesArrow[j], modelMatrix);
+				vec3.add(vertex, vertex, xyz);
+				newX[iX++] = vertex[0];
+				newY[iY++] = vertex[1];
+				newZ[iZ++] = vertex[2];
+			}
+		}
+		node.patch('Vertices', [newX, newY, newZ], 'FaceColor', 'none');
+	}
+	//}}}
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_quiver.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_quiver.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_quiver.m	(revision 27955)
@@ -0,0 +1,28 @@
+function plot_quiver(x,y,u,v,options),
+%PLOT_QUIVER - quiver plot with colors
+%
+%   to be perfected tomorrow
+%
+%   Usage:
+%      plot_quiver(x,y,u,v,options)
+%
+%   Example:
+%      plot_quiver(md.mesh.x,md.mesh.y,md.initialization.vx,md.initialization.vy,options);
+
+%process fields
+[quivers,palette]=quiver_process(x,y,u,v,options);
+
+%loop over the number of colors
+hold on
+h=[];
+for i=1:quivers.numcolors
+	pos=find(quivers.colorind==i);
+	if ~isempty(pos),
+		hprime=quiver(quivers.x(pos),quivers.y(pos),quivers.u(pos),quivers.v(pos),...
+			'Color',palette(i,:),'ShowArrowHead','on','AutoScale','off');
+		h=[h;hprime];
+	end
+end
+
+%take care of colorbar
+quiver_colorbar(quivers,options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_quiver.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_quiver.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_quiver.py	(revision 27955)
@@ -0,0 +1,43 @@
+import numpy as np
+
+
+def plot_quiver(x, y, data, options, ax):
+    vx = data[:, 0]
+    vy = data[:, 1]
+    Xdist = max(x) - min(x)
+    Ydist = max(y) - min(y)
+    datanorm = np.sqrt(vx**2 + vy**2)
+    scaler = max(datanorm) / (np.sqrt(Xdist * Ydist / len(x)))
+
+    #define colors, unicolor or value codded
+    color = options.getfieldvalue('quivercol', 'k')
+    if color == 'values':
+        color = datanorm
+    #scaling of arrow length (giving info to change as it seems that there is no better way to work arround it)
+    scale = options.getfieldvalue('scaling', scaler)
+    print(('the current value for "scaling" is {}, increase it to shorten the arrows'.format(scale)))
+    #sizing of the arrows
+    width = options.getfieldvalue('width', 5.0e-3)
+    headwidth = options.getfieldvalue('headwidth', 6)
+    headlength = options.getfieldvalue('headlength', headwidth)
+    #set the unit to the smaller of the two axes
+    if Xdist > Ydist:
+        units = 'height'
+    else:
+        units = 'width'
+
+    if type(color) == str:
+        Q = ax.quiver(x, y, vx, vy, color=color,
+                      scale=scale, scale_units='xy',
+                      units=units, headwidth=headwidth, headlength=headlength, width=width,
+                      angles='xy')
+    else:
+        if options.exist('colornorm'):
+            norm = options.getfieldvalue('colornorm')
+        if options.exist('colormap'):
+            cmap = options.getfieldvalue('colormap')
+        Q = ax.quiver(x, y, vx, vy, color, cmap=cmap, norm=norm,
+                      scale=scale, scale_units='xy',
+                      units=units, headwidth=headwidth, headlength=headlength, width=width,
+                      angles='xy')
+    return Q
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_quiver3.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_quiver3.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_quiver3.m	(revision 27955)
@@ -0,0 +1,104 @@
+function plot_quiver3(x,y,z,u,v,w,options),
+%PLOT_QUIVER3 - 3d quiver plot with colors
+%
+%   to be perfected tomorrow
+%
+%   Usage:
+%      plot_quiver3(x,y,z,u,v,w,options)
+%
+%   Example:
+%      plot_quiver(md.mesh.x,md.mesh.y,md.mesh.z,md.initialization.vx,md.initialization.vy,md.initialization.vz,options);
+
+%keep only non NaN elements
+pos=find(~isnan(x) & ~isnan(y) & ~isnan(z) & ~isnan(u) & ~isnan(v) & ~isnan(w));
+x=x(pos); y=y(pos); z=z(pos);
+u=u(pos); v=v(pos); w=w(pos);
+
+%get norm Min and Max
+Norm=sqrt(u.^2+v.^2+w.^2);
+Min=min(Norm);
+Max=max(Norm);
+
+%process options: scaling factor?
+scalingfactor=getfieldvalue(options,'scaling',0.40);
+
+%number of colors?
+colorlevels=getfieldvalue(options,'colorlevels',NaN);
+if isnumeric(colorlevels),
+	if isnan(colorlevels),
+		numcolors=30;
+	else
+		numcolors=colorlevels;
+	end
+	levels=round_ice(linspace(Min,Max,numcolors+1),2);
+else
+	levels=zeros(1,length(colorlevels)+2);
+	levels(1)=Min;
+	for i=1:length(colorlevels)
+		levels(i+1)=colorlevels{i};
+	end
+	levels(end)=Max;
+	levels=sort(unique(levels));
+	numcolors=length(levels)-1;
+end
+
+%set the colormap 
+if numcolors==2;
+	%blue and red
+	c=[0 0 1;1 0 0];
+elseif numcolors==3,
+	%blue yellow and red
+	c=[0 0 1;1 1 0;1 0 0];
+else
+	%let jet choose
+	c=colormap(jet(numcolors));
+end
+
+%Scale data
+if strcmpi(getfieldvalue(options,'autoscale','on'),'off'),
+	delta=((min(x)-max(x))^2+(min(y)-max(y))^2)/numel(x);
+	u=scalingfactor*sqrt(delta)*u./Norm;
+	v=scalingfactor*sqrt(delta)*v./Norm;
+else
+	delta=((min(x)-max(x))^2+(min(y)-max(y))^2)/numel(x);
+	u=scalingfactor*sqrt(delta)*u./max(Norm);
+	v=scalingfactor*sqrt(delta)*v./max(Norm);
+end
+
+%loop over the number of colors
+hold on
+h=[];
+for i=1:numcolors
+	pos=find( (Norm>=levels(i)) & (Norm<=levels(i+1)) );
+	hprime=quiver3(x(pos),y(pos),z(pos),u(pos),v(pos),w(pos),'Color',c(i,:),'ShowArrowHead','on','AutoScale','off');
+	h=[h;hprime];
+end
+
+%take care of colorbar
+if  ~strcmpi(getfieldvalue(options,'colorbar','on'),'off'),
+
+	%build ticks
+	hcb=colorbar('peer',gca,'location','EastOutside');
+	ticklabel=cell(1,length(levels));
+	for i=1:length(levels),
+		ticklabel{i}=num2str(round_ice(levels(i),3));
+	end
+	tickpos=1:numcolors+1;
+
+	%remove ticks if to many have been created
+	proportion=round(length(levels)/10);
+	if proportion>1,
+		ticklabel=ticklabel(1:proportion:end);
+		tickpos=tickpos(1:proportion:end);
+	end
+
+	%draw colorbar
+	set(hcb,'YTickLabel',ticklabel,'YTick',tickpos);
+	%position
+	if exist(options,'colorbarpos'),
+		set(hcb,'Position',getfieldvalue(options,'colorbarpos'));
+	end
+	%fontsize
+	fontsize=getfieldvalue(options,'fontsize',14);
+	set(hcb,'FontSize',fontsize);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_referential.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_referential.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_referential.m	(revision 27955)
@@ -0,0 +1,91 @@
+function plot_referential(md,options,width,i,data)
+%PLOT_PRESSURELOAD - plot segment on neumann BC
+%
+%   Usage:
+%      plot_referential(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%plot mesh boundaries
+subplot(width,width,i); 
+
+%process mesh and data
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+referential=md.stressbalance.referential;
+
+Xhat=md.stressbalance.referential(:,1:3);
+pos=find(sum(isnan(Xhat),2));
+Xhat(pos,:)=repmat([1 0 0],size(pos,1),1);
+Xhatnorm=sqrt(Xhat(:,1).^2+Xhat(:,2).^2+Xhat(:,3).^2);
+Xhat=Xhat./[Xhatnorm Xhatnorm Xhatnorm];
+
+Zhat=md.stressbalance.referential(:,4:6);
+pos=find(sum(isnan(Zhat),2));
+Zhat(pos,:)=repmat([0 0 1],size(pos,1),1);
+Zhatnorm=sqrt(Zhat(:,1).^2+Zhat(:,2).^2+Zhat(:,3).^2);
+Zhat=Zhat./[Zhatnorm Zhatnorm Zhatnorm];
+
+Yhat=cross(Zhat,Xhat);
+
+if dimension(md.mesh)==2,
+
+	%plot mesh
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	h1=patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	hold on;
+
+	xstart=x;
+	ystart=y;
+	zstart=z;
+	edgex=max(md.mesh.x(elements),[],2)-min(md.mesh.x(elements),[],2);
+	len=min(edgex)/1.5;
+	%plot X axis
+	xend=xstart+len*Xhat(:,1);
+	yend=ystart+len*Xhat(:,2);
+	hx=quiver(xstart,ystart,xend-xstart,yend-ystart,'Color','blue','ShowArrowHead','on','AutoScale','off');
+	%plot Y axis
+	xend=xstart+len*Yhat(:,1);
+	yend=ystart+len*Yhat(:,2);
+	hy=quiver(xstart,ystart,xend-xstart,yend-ystart,'Color','red','ShowArrowHead','on','AutoScale','off');
+
+	legend([hx,hy],'local X direction','local Y direction')
+else
+	%plot mesh
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+	h1=patch( 'Faces', [A B C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	hold on;
+
+	xstart=x;
+	ystart=y;
+	zstart=z;
+	edgex=max(md.mesh.x(elements),[],2)-min(md.mesh.x(elements),[],2);
+	edgez=max(md.mesh.z(elements),[],2)-min(md.mesh.z(elements),[],2);
+	len=min(edgex)/1.5;
+	lenz=min(edgez)/1.5;
+	%plot X axis
+	xend=xstart+len*Xhat(:,1);
+	yend=ystart+len*Xhat(:,2);
+	zend=zstart+len*Xhat(:,3);
+	hx=quiver3(xstart,ystart,zstart,xend-xstart,yend-ystart,zend-zstart,'Color','blue','ShowArrowHead','on','AutoScale','off');
+	%plot Y axis
+	xend=xstart+len*Yhat(:,1);
+	yend=ystart+len*Yhat(:,2);
+	zend=zstart+len*Yhat(:,3);
+	hy=quiver3(xstart,ystart,zstart,xend-xstart,yend-ystart,zend-zstart,'Color','red','ShowArrowHead','on','AutoScale','off');
+	%plot Z axis
+	xend=xstart+lenz*Zhat(:,1);
+	yend=ystart+lenz*Zhat(:,2);
+	zend=zstart+lenz*Zhat(:,3);
+	hz=quiver3(xstart,ystart,zstart,xend-xstart,yend-ystart,zend-zstart,'Color','green','ShowArrowHead','on','AutoScale','off');
+
+	legend([hx,hy,hz],'local X direction','local Y direction','local Z direction')
+end
+
+%apply options
+options=addfielddefault(options,'title','Stressbalance referential');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_riftfraction.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_riftfraction.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_riftfraction.m	(revision 27955)
@@ -0,0 +1,48 @@
+function plot_riftfraction(md,options,nlines,ncols,index)
+%PLOT_RIFTFRACTION - plot rift fractions
+%
+%   Usage:
+%      plot_riftfraction(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%check that there is something in riftproperties
+if isnan(md.rifts.riftstruct.riftproperties),
+	error('plot_riftfraction error message: field riftproperies is empty, run the model first')
+end
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+subplot(nlines,ncols,index); 
+hold on
+
+%plot mesh boundaries
+for i=1:size(md.mesh.segments,1),
+	h1=plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'k.-');
+end
+
+%first, build a vector of fractions, over all nodes. 
+fractions=zeros(md.mesh.numberofvertices,1);
+
+%complete the tips.
+for i=1:length(md.rifts.riftstruct), 
+	tips=md.rifts.riftstruct(i).tips;
+	fractions(tips)=1;
+end
+
+hold on;
+for i=1:length(md.rifts.riftstruct), 
+	segments=md.rifts.riftstruct(i).segments(:,1:2)';
+	xc=x(segments(:));
+	yc=y(segments(:));
+	zc=fractions(segments(:));
+	h2=patch('Xdata',xc,'Ydata',yc,'Zdata',zc,'Cdata',zc,'facecolor','none','edgecolor','flat');
+end
+legend([h1,h2],'mesh boundaries','rifts')
+hold off
+
+%apply options
+options=addfielddefault(options,'title','Rift ice/water fraction ???????'); %Eric, could you enter a better title?
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_riftnumbering.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_riftnumbering.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_riftnumbering.m	(revision 27955)
@@ -0,0 +1,93 @@
+function plot_riftnumbering(md,options,nlines,ncols,index)
+%PLOT_RIFTNUMBERING - plot rift penetration + numbering of all rift vertices, as well as rift numbers.
+%
+%   Usage:
+%      plot_riftnumbering(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+fontsize=getfieldvalue(options,'FontSize',8);
+
+subplot(nlines,ncols,index); 
+hold on
+
+%plot mesh boundaries
+for i=1:size(md.mesh.segments,1),
+	plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'k.-');
+end
+
+isp1=0;
+isp2=0;
+
+if isstruct(md.rifts.riftstruct),
+	%plot mesh boundaries
+	for i=1:size(md.mesh.segments,1),
+		h1=plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'b-');
+	end
+	for i=1:size(md.rifts.riftstruct,1),
+		penaltypairs=md.rifts.riftstruct(i).penaltypairs;
+
+		segments=md.rifts.riftstruct(i).segments;
+		for j=1:size(segments,1),
+			plot(x(segments(j,1:2)),y(segments(j,1:2)),'b-');
+		end
+
+		normal=zeros(2,1);
+		for j=1:size(penaltypairs,1),
+			normal(1)=penaltypairs(j,5);
+			normal(2)=penaltypairs(j,6);
+
+			vx1=md.initialization.vx(penaltypairs(j,1)); 
+			vx2=md.initialization.vx(penaltypairs(j,2));
+			vy1=md.initialization.vy(penaltypairs(j,1)); 
+			vy2=md.initialization.vy(penaltypairs(j,2));
+			penetration=(vx2-vx1)*normal(1)+(vy2-vy1)*normal(2);
+			%if penetration is negative, plot in black, positive, plot in red;: ie: if rift is closing, black, if rift is opening, red.
+			if(penetration>0),
+				p2=plot(x(penaltypairs(j,1)) ,y(penaltypairs(j,1)),'ro-','LineWidth',1);
+				set(p2,'MarkerSize',3);
+				isp2=1;
+			else
+				p1=plot(x(penaltypairs(j,1)) ,y(penaltypairs(j,1)),'ko-','LineWidth',1);
+				set(p1,'MarkerSize',3);
+				isp1=1;
+			end
+		end
+
+		%point out the tips
+		h2=plot(x(md.rifts.riftstruct(i).tips(1)),y(md.rifts.riftstruct(i).tips(1)),'g*');
+		plot(x(md.rifts.riftstruct(i).tips(2)),y(md.rifts.riftstruct(i).tips(2)),'g*');
+	end
+	if strcmpi(getfieldvalue(options,'legend','on'),'on'),
+		if isp1 & isp2
+			l=legend([h1,h2,p1,p2],'mesh boundaries','crack tips','faults','rifts');
+		elseif isp1
+			l=legend([h1,h2,p1],'mesh boundaries','crack tips','faults');
+		elseif isp2
+			l=legend([h1,h2,p2],'mesh boundaries','crack tips','rifts');
+		else
+			l=legend([h1,h2],'mesh boundaries','crack tips');
+		end
+		set(l,'Location',getfieldvalue(options,'legend_location','NorthEast'));
+	end
+else
+	error('plot error message: no rifts available!');
+end
+
+%Now, plot rift vertices numbers.
+for i=1:size(md.rifts.riftstruct,1),
+	penaltypairs=md.rifts.riftstruct(i).penaltypairs;
+
+	for j=1:size(penaltypairs,1),
+		node=penaltypairs(j,1);
+		t=text(x(node),y(node),[num2str(i) '.' num2str(j)]);
+		set(t,'FontSize',fontsize);
+	end
+end
+
+%apply options
+options=addfielddefault(options,'title','Rift/Fault location');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_riftpenetration.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_riftpenetration.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_riftpenetration.m	(revision 27955)
@@ -0,0 +1,82 @@
+function plot_rifpenetration(md,options,nlines,ncols,index)
+%PLOT_RIFTPENETRATION - plot rift penetration
+%
+%   Usage:
+%      plot_rifpenetration(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+subplot(nlines,ncols,index); 
+hold on
+
+%plot mesh boundaries
+for i=1:size(md.mesh.segments,1),
+	plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'k-');
+end
+
+isp1=0;
+isp2=0;
+
+if isstruct(md.rifts.riftstruct),
+	%plot mesh boundaries
+	for i=1:size(md.mesh.segments,1),
+		h1=plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'b-');
+	end
+	for i=1:size(md.rifts.riftstruct,1),
+		penaltypairs=md.rifts.riftstruct(i).penaltypairs;
+
+		segments=md.rifts.riftstruct(i).segments;
+		for j=1:size(segments,1),
+			plot(x(segments(j,1:2)),y(segments(j,1:2)),'b-');
+		end
+
+		normal=zeros(2,1);
+		for j=1:size(penaltypairs,1),
+			normal(1)=penaltypairs(j,5);
+			normal(2)=penaltypairs(j,6);
+
+			vx1=md.initialization.vx(penaltypairs(j,1)); 
+			vx2=md.initialization.vx(penaltypairs(j,2));
+			vy1=md.initialization.vy(penaltypairs(j,1)); 
+			vy2=md.initialization.vy(penaltypairs(j,2));
+			penetration=(vx2-vx1)*normal(1)+(vy2-vy1)*normal(2);
+			%if penetration is negative, plot in black, positive, plot in red;: ie: if rift is closing, black, if rift is opening, red.
+			if(penetration>0),
+				p2=plot(x(penaltypairs(j,1)) ,y(penaltypairs(j,1)),'ro-','LineWidth',1);
+				set(p2,'MarkerSize',3);
+				isp2=1;
+			else
+				p1=plot(x(penaltypairs(j,1)) ,y(penaltypairs(j,1)),'ko-','LineWidth',1);
+				set(p1,'MarkerSize',3);
+				isp1=1;
+			end
+		end
+
+		%point out the tips
+		h2=plot(x(md.rifts.riftstruct(i).tips(1)),y(md.rifts.riftstruct(i).tips(1)),'g*');
+		plot(x(md.rifts.riftstruct(i).tips(2)),y(md.rifts.riftstruct(i).tips(2)),'g*');
+	end
+	if strcmpi(getfieldvalue(options,'legend','on'),'on'),
+		if isp1 & isp2
+			l=legend([h1,h2,p1,p2],'mesh boundaries','crack tips','faults','rifts');
+		elseif isp1
+			l=legend([h1,h2,p1],'mesh boundaries','crack tips','faults');
+		elseif isp2
+			l=legend([h1,h2,p2],'mesh boundaries','crack tips','rifts');
+		else
+			l=legend([h1,h2],'mesh boundaries','crack tips');
+		end
+		set(l,'Location',getfieldvalue(options,'legend_location','NorthEast'));
+	end
+else
+	error('plot error message: no rifts available!');
+end
+hold off
+
+%apply options
+options=addfielddefault(options,'title','Rift/Fault location');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_riftrelvel.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_riftrelvel.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_riftrelvel.m	(revision 27955)
@@ -0,0 +1,116 @@
+function plot_riftrelvel(md,options,nlines,ncols,index)
+%PLOT_RIFTRELVEL - plot rift relative velocities
+%
+%   Usage:
+%      plot_riftrelvel(md,options,nlines,ncols,i);
+%
+%   See also: PLOTMODEL
+
+%some checks
+if (length(md.initialization.vx)~=md.mesh.numberofvertices | length(md.initialization.vy)~=md.mesh.numberofvertices),
+	error('plot_riftvel error message: vx and vy do not have the right size'),
+end
+if ~isstruct(md.rifts.riftstruct),
+	error('plot error message: no rifts available!');
+end
+options=addfielddefault(options,'scaling',2);
+
+%markersize: 
+markersize=getfieldvalue(options,'markersize',1);
+
+%recover vx and vy:
+vx=getfieldvalue(options,'riftrelvel_vx',md.initialization.vx);
+vy=getfieldvalue(options,'riftrelvel_vy',md.initialization.vy);
+
+%set as NaN all velocities not on rifts
+u=NaN*ones(md.mesh.numberofvertices,1);
+v=NaN*ones(md.mesh.numberofvertices,1);
+for i=1:size(md.rifts.riftstruct,1),
+	penaltypairs=md.rifts.riftstruct(i).penaltypairs(:,[1 2]);
+	u(md.rifts.riftstruct(i).penaltypairs(:,1))=vx(penaltypairs(:,1))-vx(penaltypairs(:,2));
+	v(md.rifts.riftstruct(i).penaltypairs(:,1))=vy(penaltypairs(:,1))-vy(penaltypairs(:,2));
+end
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[vel datatype]=processdata(md,[u v],options);
+[quivers,palette]=quiver_process(x,y,vel(:,1),vel(:,2),options);
+
+%prepare plot
+subplot(nlines,ncols,index); 
+hold on
+
+%plot rifts vel
+h3=[];
+for i=1:quivers.numcolors
+	pos=find(quivers.colorind==i);
+	hprime=quiver(quivers.x(pos),quivers.y(pos),quivers.u(pos),quivers.v(pos),...
+		'Color',palette(i,:),'ShowArrowHead','on','AutoScale','off');
+	hprime=quiver(quivers.x(pos),quivers.y(pos),-quivers.u(pos),-quivers.v(pos),...
+		'Color',palette(i,:),'ShowArrowHead','on','AutoScale','off');
+	h3=[h3;hprime];
+end
+
+%plot rift velocities
+isp1=0;
+isp2=0;
+
+%plot mesh boundaries
+for i=1:size(md.mesh.segments,1),
+	h1=plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'b-');
+end
+for i=1:size(md.rifts.riftstruct,1),
+
+	%get nodes on rift
+	penaltypairs=md.rifts.riftstruct(i).penaltypairs;
+
+	segments=md.rifts.riftstruct(i).segments;
+	for j=1:size(segments,1),
+		plot(x(segments(j,1:2)),y(segments(j,1:2)),'k-');
+	end
+
+	normal=zeros(2,1);
+	for j=1:size(penaltypairs,1),
+		normal(1)=penaltypairs(j,5);
+		normal(2)=penaltypairs(j,6);
+
+		vx1=vx(penaltypairs(j,1)); vx2=vx(penaltypairs(j,2)); vy1=vy(penaltypairs(j,1)); vy2=vy(penaltypairs(j,2));
+		penetration=(vx2-vx1)*normal(1)+(vy2-vy1)*normal(2);
+		%if penetration is negative, plot in black, positive, plot in red;: ie: if rift is closing, black, if rift is opening, red.
+		if(penetration>0),
+			p2=plot(x(penaltypairs(j,1)) ,y(penaltypairs(j,1)),'.','MarkerSize',markersize); set(p2,'Color',[140 140 140]/255);
+			isp2=1;
+		else
+			p1=plot(x(penaltypairs(j,1)) ,y(penaltypairs(j,1)),'k.','MarkerSize',markersize);
+			isp1=1;
+		end
+	end
+
+	%point out the tips
+	h2=plot(x(md.rifts.riftstruct(i).tips(1)),y(md.rifts.riftstruct(i).tips(1)),'g.','MarkerSize',markersize);
+	plot(x(md.rifts.riftstruct(i).tips(2)),y(md.rifts.riftstruct(i).tips(2)),'g.','MarkerSize',markersize);
+	segments=md.rifts.riftstruct(i).segments(:,1:2);
+end
+
+faulttitle=getfieldvalue(options','faulttitle','faults');
+rifttitle=getfieldvalue(options','rifttitle','rifts');
+%legend
+if strcmpi(getfieldvalue(options,'legend','on'),'on'),
+	if isp1 & isp2
+		l=legend([h1,h2,p1,p2],'mesh boundaries','crack tips',faulttitle,rifttitle);
+	elseif isp1
+		l=legend([h1,h2,p1],'mesh boundaries','crack tips',faulttitle);
+	elseif isp2
+		l=legend([h1,h2,p2],'mesh boundaries','crack tips',rifttitle);
+	else
+		l=legend([h1,h2],'mesh boundaries','crack tips');
+	end
+set(l,'Location',getfieldvalue(options,'legend_location','NorthEast'));
+end
+hold off
+
+%apply options
+quiver_colorbar(quivers,options);
+options=changefieldvalue(options,'colorbar',2);
+options=addfielddefault(options,'title','Rift/Fault Relative Velocity');
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_rifts.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_rifts.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_rifts.m	(revision 27955)
@@ -0,0 +1,80 @@
+function plot_rifts(md,options,nlines,ncols,index)
+%PLOT_RIFTS - plot rifts in a mesh
+%
+%   Usage:
+%      plot_rifts(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%plot mesh
+subplot(nlines,ncols,index); 
+
+%offset to separate rift flanks.
+offset=getfieldvalue(options,'offset',500);
+if isstruct(md.rifts.riftstruct),
+
+	for i=1:size(md.rifts.riftstruct,1),
+		penaltypairs=md.rifts.riftstruct(i).penaltypairs;
+
+		normal=zeros(2,1);
+		for j=1:size(penaltypairs,1),
+			normal(1)=penaltypairs(j,5);
+			normal(2)=penaltypairs(j,6);
+			x(penaltypairs(j,1))=x(penaltypairs(j,1))-normal(1)*offset;
+			y(penaltypairs(j,1))=y(penaltypairs(j,1))-normal(2)*offset;
+		end
+		if length(md.rifts.riftstruct(i).tips)==3,
+			tip=md.rifts.riftstruct(i).tips(3);
+			%who is tip connected to? 
+			if isconnected(md.mesh.elements,penaltypairs(1,1),tip),
+				normal(1)=penaltypairs(1,5);
+				normal(2)=penaltypairs(1,6);
+				x(tip)=x(tip)-normal(1)*offset;
+				y(tip)=y(tip)-normal(2)*offset;
+			end
+
+			if isconnected(md.mesh.elements,penaltypairs(1,2),tip),
+				normal(1)=penaltypairs(1,5);
+				normal(2)=penaltypairs(1,6);
+				x(tip)=x(tip)+normal(1)*offset;
+				y(tip)=y(tip)+normal(2)*offset;
+			end
+			if isconnected(md.mesh.elements,penaltypairs(end,1),tip),
+				normal(1)=penaltypairs(end,5);
+				normal(2)=penaltypairs(end,6);
+				x(tip)=x(tip)-normal(1)*offset;
+				y(tip)=y(tip)-normal(2)*offset;
+			end
+			if isconnected(md.mesh.elements,penaltypairs(end,2),tip),
+				normal(1)=penaltypairs(end,5);
+				normal(2)=penaltypairs(end,6);
+				x(tip)=x(tip)+normal(1)*offset;
+				y(tip)=y(tip)+normal(2)*offset;
+			end
+		end
+	end
+end
+
+%plot mesh
+if is2d
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+elseif isplanet,
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+else
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [D E F], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [A B E D], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [B E F C ], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	patch( 'Faces', [C A D F ], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+end
+
+%apply options
+options=addfielddefault(options,'title','Rifts');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_riftvel.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_riftvel.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_riftvel.m	(revision 27955)
@@ -0,0 +1,107 @@
+function plot_riftvel(md,options,nlines,ncols,index)
+%PLOT_RIFTVEL - plot rift velocity
+%
+%   Usage:
+%      plot_riftvel(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%some checks
+if (length(md.initialization.vx)~=md.mesh.numberofvertices | length(md.initialization.vy)~=md.mesh.numberofvertices),
+	error('plot_riftvel error message: vx and vy do not have the right size'),
+end
+if ~isstruct(md.rifts.riftstruct),
+	error('plot error message: no rifts available!');
+end
+options=addfielddefault(options,'scaling',2);
+
+%set as NaN all velocities not on rifts
+u=NaN*ones(md.mesh.numberofvertices,1);
+v=NaN*ones(md.mesh.numberofvertices,1);
+for i=1:size(md.rifts.riftstruct,1),
+	penaltypairs=md.rifts.riftstruct(i).penaltypairs(:,[1 2]);
+	u(penaltypairs(:))=md.initialization.vx(penaltypairs(:));
+	v(penaltypairs(:))=md.initialization.vy(penaltypairs(:));
+end
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[vel datatype]=processdata(md,[u v],options);
+[quivers,palette]=quiver_process(x,y,vel(:,1),vel(:,2),options);
+
+%prepare plot
+subplot(nlines,ncols,index); 
+hold on
+
+%plot mesh boundaries
+for i=1:size(md.mesh.segments,1),
+	plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'k.-');
+end
+
+%plot rifts vel
+h3=[];
+for i=1:quivers.numcolors
+	pos=find(quivers.colorind==i);
+	hprime=quiver(quivers.x(pos),quivers.y(pos),quivers.u(pos),quivers.v(pos),...
+		'Color',palette(i,:),'ShowArrowHead','on','AutoScale','off');
+	h3=[h3;hprime];
+end
+
+%plot rift velocities
+isp1=0;
+isp2=0;
+
+%plot mesh boundaries
+for i=1:size(md.mesh.segments,1),
+	h1=plot(x(md.mesh.segments(i,1:2)),y(md.mesh.segments(i,1:2)),'b-');
+end
+
+for i=1:size(md.rifts.riftstruct,1),
+	%get nodes on rift
+	penaltypairs=md.rifts.riftstruct(i).penaltypairs;
+
+	segments=md.rifts.riftstruct(i).segments;
+	for j=1:size(segments,1),
+		plot(x(segments(j,1:2)),y(segments(j,1:2)),'b-');
+	end
+
+	normal=zeros(2,1);
+	for j=1:size(penaltypairs,1),
+		normal(1)=penaltypairs(j,5);
+		normal(2)=penaltypairs(j,6);
+
+		vx1=md.initialization.vx(penaltypairs(j,1)); vx2=md.initialization.vx(penaltypairs(j,2)); vy1=md.initialization.vy(penaltypairs(j,1)); vy2=md.initialization.vy(penaltypairs(j,2));
+		penetration=(vx2-vx1)*normal(1)+(vy2-vy1)*normal(2);
+		%if penetration is negative, plot in black, positive, plot in red;: ie: if rift is closing, black, if rift is opening, red.
+		if(penetration>0),
+			p2=plot(x(penaltypairs(j,1)) ,y(penaltypairs(j,1)),'*'); set(p2,'Color',[140 140 140]/255);
+			isp2=1;
+		else
+			p1=plot(x(penaltypairs(j,1)) ,y(penaltypairs(j,1)),'k*');
+			isp1=1;
+		end
+	end
+
+	%point out the tips
+	h2=plot(x(md.rifts.riftstruct(i).tips(1)),y(md.rifts.riftstruct(i).tips(1)),'g*');
+	plot(x(md.rifts.riftstruct(i).tips(2)),y(md.rifts.riftstruct(i).tips(2)),'g*');
+	segments=md.rifts.riftstruct(i).segments(:,1:2);
+end
+
+%legend
+if isp1 & isp2
+	legend([h1,h2,p1,p2],'mesh boundaries','rift tips',' rifts closing','rifts opening')
+elseif isp1
+	legend([h1,h2,p1],'mesh boundaries','rift tips',' rifts closing')
+elseif isp2
+	legend([h1,h2,p2],'mesh boundaries','rift tips','rifts opening')
+else
+	legend([h1,h2],'mesh boundaries','rift tips')
+end
+hold off
+
+%apply options
+quiver_colorbar(quivers,options);
+options=changefieldvalue(options,'colorbar',2);
+options=addfielddefault(options,'title','Rift Velocities');
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_sarpwr.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_sarpwr.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_sarpwr.m	(revision 27955)
@@ -0,0 +1,26 @@
+function plot_sarpwr(md,options,width,i)
+%PLOT_SARPWR - plot radar image
+%
+%   Usage:
+%      plot_sarpwr(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%plot mesh sarpwr
+subplot(width,width,i); 
+
+%units
+if exist(options,'unit'),
+	unit=getfieldvalue(options,'unit');
+	md.mesh.x=md.mesh.x*unit;
+	md.mesh.y=md.mesh.y*unit;
+	md.mesh.z=md.mesh.z*unit;
+end
+
+imagesc(md.radaroverlay.x,md.radaroverlay.y,double(md.radaroverlay.pwr)),set(gca,'YDir','normal');colormap(gray);
+
+%apply options
+options=addfielddefault(options,'colorbar',0);
+options=changefieldvalue(options,'colormap','gray');
+
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_scatter.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_scatter.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_scatter.m	(revision 27955)
@@ -0,0 +1,116 @@
+function plot_scatter(x,y,level,varargin),
+%PLOT_SCATTER - scatter plot
+%
+%   Usage:
+%      plot_scatter(x,y,level,options);
+%
+%   Available options:
+%      'caxis'      : default is full range
+%      'MarkerSize' : default is 3
+%      'subset'     : only plot the indices provided
+%      'Line'       : use line instead of circles
+%      'Cutoff'     : cut the line if the distance between 2 points is
+%                     greater than Cutoff (default is 1000)
+
+if nargin == 4,
+	options = varargin{1};
+else
+	options=pairoptions(varargin{:}); 
+end
+
+%check input
+if numel(x)~=numel(y) | numel(x)~=numel(level),
+	error('x, y and data should have the same size');
+end
+
+if exist(options,'subset'),
+	pos=getfieldvalue(options,'subset');
+	x=x(pos);
+	y=y(pos);
+	level=level(pos);
+end
+
+%Some processing
+Min=min(level);
+Max=max(level);
+if exist(options,'caxis');
+	range=getfieldvalue(options,'caxis');
+	Min=min(range);
+	Max=max(range);
+end
+Siz=length(level);
+nlab=10;
+%Min=0;
+%Max=1300;
+
+%OK, should we create a new colorbar for the occasion?
+if isempty(findobj(gcf,'tag','TMW_COLORBAR')) && isempty(findobj(gcf,'Type','Colorbar')),
+	alreadyplot=false;
+else
+	alreadyplot=true;
+end
+
+%generate levels
+if (alreadyplot),
+	phch = get(findall(gcf,'type','image','tag','TMW_COLORBAR'),{'parent'});
+	if ~isempty(phch),
+		h    = phch{1};
+		ylim=get(h,'YLim');
+	else
+		%R2014b +
+		h = findobj(gcf,'Type','Colorbar');
+		ylim = h.Limits;
+	end
+	palette=jet();%colormap();
+	numcolors=size(palette,1);
+	levels=round_ice(linspace(ylim(1),ylim(2),numcolors+1),2);
+else
+	palette=getcolormap(options);
+	colormap(palette);
+	numcolors=size(palette,1);
+	levels=round_ice(linspace(Min,Max,numcolors+1),2);
+end
+
+colorind=ones(Siz,1);
+for i=1:numcolors
+	pos=find((level>=levels(i)) & (level<=levels(i+1)) );
+	colorind(pos)=i;
+end
+colorind(find(level>levels(end)))=numcolors;
+
+%loop over the number of colors
+hold on
+hp=[];
+if ~exist(options,'line'),
+	for i=1:numcolors
+		pos=find(colorind==i);
+	%	hprime=plot3(x(pos),y(pos),ones(size(x(pos))),...
+		hprime=plot(x(pos),y(pos),...
+			'o','MarkerSize',getfieldvalue(options,'MarkerSize',3),'MarkerEdgeColor',palette(i,:),...
+			'MarkerFaceColor',palette(i,:));
+		hp=[hp;hprime];
+	end
+else
+	distances = sqrt( (x(1:end-1)-x(2:end)).^2 + (y(1:end-1)-y(2:end)).^2);
+	pos=find(distances>getfieldvalue(options,'Cutoff',1000));
+	x(pos,:)=NaN;
+	y(pos,:)=NaN;
+	for j=1:numcolors;
+		pos=find(colorind==j);
+		if(~isempty(pos) & pos(1)==1), pos(1)=[]; end
+		if ~isempty(pos),
+			tempx = [x(pos-1) x(pos) NaN(size(pos))]';
+			tempy = [y(pos-1) y(pos) NaN(size(pos))]';
+			line(tempx(1:end-1),tempy(1:end-1),'color',palette(j,:),'linewidth',getfieldvalue(options,'LineWidth',2));
+		end
+	end
+end
+
+%Stop MATLAB's default interactivity
+disableDefaultInteractivity(gca);
+
+if ~alreadyplot,
+	% format the colorbar
+	h    = colorbar;
+	caxis([min(levels) max(levels)]);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_section.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_section.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_section.m	(revision 27955)
@@ -0,0 +1,220 @@
+function plot_section(md,data,options,nlines,ncols,i)
+%PLOT_SECTION - plot a given field on a section
+%
+%   Usage:
+%      plot_section(md,data,options,nlines,ncols,i)
+%
+%   See also: PLOTMODEL
+
+%How many subplots?
+if exist(options,'showsection')
+
+	%Compute the indexes of the 2 plots (one for the sectionvalue and one for showsection
+	upperplots=floor((i-1)/ncols);
+	if upperplots==0, leftplots=i-1; else leftplots=i-ncols*upperplots-1; end
+	index1=4*ncols*upperplots+2*leftplots+1;
+	index2=index1+1;
+	ncols=2*ncols;
+else
+	index1=i;
+end
+
+%process model
+[x_m y_m z_m elements_m is2d isplanet]=processmesh(md,[],options);
+
+%Get number of curves and generate random colors
+numcurves=size(data,2);
+colorm=getfieldvalue(options,'colormap','lines');
+color=eval([ colorm '(numcurves);']);
+options=removefield(options,'colormap',0); %back to default colormap
+
+%replug x and y onto model so that SectionValue treats the problem correctly
+md3d=md;
+if exist(options,'layer')
+	md.mesh.x=md.mesh.x2d; md.mesh.y=md.mesh.y2d; md.mesh.elements=md.mesh.elements2d;
+	md.mesh=mesh2d(md.mesh);
+end
+
+%read contours: 
+profiles=expread(getfieldvalue(options,'sectionvalue'));
+numprofiles=length(profiles);
+
+%Loop over number of profiles: 
+for profile_i=1:numprofiles,
+	profile=profiles(profile_i);
+
+	%Loop over number of curves
+	for i=1:numcurves,
+
+		[datai datatype]=processdata(md3d,data(:,i),options);
+
+		%resolution
+		if exist(options,'resolution'),
+			resolution=getfieldvalue(options,'resolution');
+		else %Default resolution
+			if is2d,
+				resolution=[1000 1];
+			else
+				resolution=[1000 10*md.mesh.numberoflayers];
+			end
+			disp(['plot_section warning: no resolution specified, use default resolution: [horizontal_resolution vertical_resolution]=[' num2str(resolution)  ']']);
+		end
+
+		%Compute section value
+		[elements,x,y,z,s,data_s]=SectionValues(md,datai,profile,resolution);
+
+		if getfieldvalue(options,'sectionmean',0)==1,
+			disp(['Mean value of data along section: ' num2str(mean(data_s))])
+			disp(['Median value of data along section: ' num2str(median(data_s))])
+			disp(['Standard deviation of data along section: ' num2str(std(data_s))])
+		end
+
+		%units
+		if exist(options,'unit'),
+			unit=getfieldvalue(options,'unit');
+			x=x*unit;
+			y=y*unit;
+			z=z*unit;
+			s=s*unit;
+		end
+
+		%2D
+		if is2d,
+%		%plot section value
+%		hold on;
+%		subplot(nlines,ncols,index1)
+%		%subplot(1,3,[2 3])
+%		plot(s,data_s,'color',color(i,:),'LineWidth',getfieldvalue(options,'linewidth',1))
+%		%3D
+%	else
+%		%plot section value
+%		%if user requested view2: 2d plot with curvilinear coordinate
+%		if (getfieldvalue(options,'view',3)==2 )
+
+			%Show Section if requested by user
+			if exist(options,'showsection')
+
+				%compute number of labels
+				numlabels=min(getfieldvalue(options,'showsection'),length(s));
+				shift=fix(length(s)/numlabels);
+
+				%plot labels on current graph
+				hold on
+				text(s(1),data_s(1),'1','backgroundcolor',[0.8 0.9 0.8])
+				for i=2:numlabels-1
+					text(s(1+(i-1)*shift),data_s(1+(i-1)*shift),num2str(i),'backgroundcolor',[0.8 0.9 0.8])
+				end
+				text(s(end),data_s(end),'end','backgroundcolor',[0.8 0.9 0.8])
+
+				%plot section only with labels
+				subplot(nlines,ncols,index2)
+				plot_unit(x_m,y_m,z_m,elements_m,data(:,i),is2d,isplanet,datatype,options)
+				hold on
+				text(x(1),y(1),'1','backgroundcolor',[0.8 0.9 0.8])
+				for i=2:numlabels-1
+					text(x(1+(i-1)*shift),y(1+(i-1)*shift),num2str(i),'backgroundcolor',[0.8 0.9 0.8])
+				end
+				text(x(end),y(end),'end','backgroundcolor',[0.8 0.9 0.8])
+				plot(x,y,'-r')
+				axis([min(md.mesh.x)-1 max(md.mesh.x)+1 min(md.mesh.y)-1 max(md.mesh.y)+1])
+				view(2)
+			end
+
+			%plot section value
+			if(i==1), subplot(nlines,ncols,index1); end
+			plot(s,data_s,'color',color(i,:),'LineWidth',getfieldvalue(options,'linewidth',1))
+			hold on
+
+			%3D
+		else
+			%plot section value
+			%if user requested view2: 2d plot with curvilinear coordinate
+			if (getfieldvalue(options,'view',3)==2 )
+
+				%Show Section if requested by user
+				if exist(options,'showsection')
+
+					%compute number of labels
+					numlabels=min(getfieldvalue(options,'showsection'),length(s));
+					shift=fix(length(s)/numlabels);
+
+					%plot labels on current graph
+					hold on
+					text(s(1),z(1),'1','backgroundcolor',[0.8 0.9 0.8])
+					for i=2:numlabels-1
+						text(s(1+(i-1)*shift),z(1+(i-1)*shift),num2str(i),'backgroundcolor',[0.8 0.9 0.8])
+					end
+					text(s(end),z(end),'end','backgroundcolor',[0.8 0.9 0.8])
+
+					%plot section only with labels
+					subplot(nlines,ncols,index2)
+					plot_unit(x_m,y_m,z_m,elements_m,data(:,i),is2d,datatype,options)
+					hold on
+					text(x(1),y(1),'1','backgroundcolor',[0.8 0.9 0.8])
+					for i=2:numlabels-1
+						text(x(1+(i-1)*shift),y(1+(i-1)*shift),num2str(i),'backgroundcolor',[0.8 0.9 0.8])
+					end
+					text(x(end),y(end),'end','backgroundcolor',[0.8 0.9 0.8])
+					plot(x,y,'-r')
+					axis([min(md.mesh.x)-1 max(md.mesh.x)+1 min(md.mesh.y)-1 max(md.mesh.y)+1])
+					view(2)
+				end
+
+				subplot(nlines,ncols,index1)
+				A=elements(:,1); B=elements(:,2); C=elements(:,3);  D=elements(:,4); 
+				patch( 'Faces', [A B C D], 'Vertices', [s z zeros(length(s),1)],'FaceVertexCData',data_s,'FaceColor','interp','EdgeColor','none');
+
+			else
+
+				%Show Section if requested by user
+				if exist(options,'showsection')
+
+					%compute number of labels
+					numlabels=min(getfieldvalue(options,'showsection'),length(s));
+					shift=fix(length(x)/numlabels);
+
+					%plot labels on current graph
+					hold on
+					text(x(1),y(1),z(1),'1','backgroundcolor',[0.8 0.9 0.8])
+					for i=2:numlabels-1
+						text(x(1+(i-1)*shift),y(1+(i-1)*shift),z(1+(i-1)*shift),num2str(i),'backgroundcolor',[0.8 0.9 0.8])
+					end
+					text(x(end),y(end),z(end),'end','backgroundcolor',[0.8 0.9 0.8])
+
+					%plot section only with labels
+					subplot(nlines,ncols,index2)
+					plot_unit(x_m,y_m,z_m,elements_m,data,is2d,datatype,options)
+					hold on
+					text(x(1),y(1),'1','backgroundcolor',[0.8 0.9 0.8])
+					for i=2:numlabels-1
+						text(x(1+(i-1)*shift),y(1+(i-1)*shift),num2str(i),'backgroundcolor',[0.8 0.9 0.8])
+					end
+					text(x(end),y(end),'end','backgroundcolor',[0.8 0.9 0.8])
+					plot(x,y,'-r')
+					axis([min(md.mesh.x)-1 max(md.mesh.x)+1 min(md.mesh.y)-1 max(md.mesh.y)+1])
+					view(2)
+				end
+
+				subplot(nlines,ncols,index1)
+				A=elements(:,1); B=elements(:,2); C=elements(:,3);  D=elements(:,4); 
+				patch( 'Faces', [A B C D], 'Vertices', [x y z],'FaceVertexCData',data_s,'FaceColor','interp','EdgeColor','none');
+				view(3)
+			end
+		end
+	end
+end
+
+%apply options
+options=addfielddefault(options,'title','Section value');
+if dimension(md.mesh)==2
+	options=addfielddefault(options,'colorbar',0);
+end
+if ((dimension(md.mesh)==2) | getfieldvalue(options,'view',2)==2 )
+	options=addfielddefault(options,'xlabel','Curvilinear coordinate');
+	options=addfielddefault(options,'axis','auto');
+end
+if (dimension(md.mesh)==3 & getfieldvalue(options,'view',2)==2 )
+	options=addfielddefault(options,'ylabel','z');
+	options=addfielddefault(options,'axis','auto');
+end
+applyoptions(md3d,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_segments.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_segments.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_segments.m	(revision 27955)
@@ -0,0 +1,56 @@
+function plot_segments(md,options,width,i,datai)
+%PLOT_SEGMENTS - plot segments, with different colors according to segment markers.
+%
+%   Usage:
+%      plot_segments(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%plot mesh boundaries
+subplot(width,width,i); 
+
+%process mesh and data
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+segments=md.mesh.segments;
+
+if dimension(md.mesh)==2,
+	%plot mesh
+	A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+	h1=patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	hold on;
+
+	%highlight elements on neumann
+	pos=segments(:,end);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	h2=patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','green','EdgeColor','black');
+
+	if strcmpi(getfieldvalue(options,'segmentnumbering','off'),'on'),
+		text(sum(x(segments(:,1:2)),2)/2,sum(y(segments(:,1:2)),2)/2,sum(z(segments(:,1:2)),2)/2+1,...
+			num2str(md.mesh.segmentmarkers),...
+			'backgroundcolor',[0.8 0.9 0.8],'HorizontalAlignment','center','VerticalAlignment','middle');
+	end
+
+	%display arrows pointing outward
+	xstart=mean(x(segments(:,1:end-1)),2);
+	ystart=mean(y(segments(:,1:end-1)),2);
+	length=sqrt((x(segments(:,1))-x(segments(:,2))).^2 + (y(segments(:,1))-y(segments(:,2))).^2 );
+	normal(:,1)=cos(atan2((x(segments(:,1))-x(segments(:,2))) , (y(segments(:,2))-y(segments(:,1)))));
+	normal(:,2)=sin(atan2((x(segments(:,1))-x(segments(:,2))) , (y(segments(:,2))-y(segments(:,1)))));
+	xend=xstart+length.*normal(:,1);
+	yend=ystart+length.*normal(:,2);
+	q=quiver(xstart,ystart,xend-xstart,yend-ystart); hold on;
+	h3=plot(xstart,ystart,'r*');
+
+else
+	error('plot_segments: 3d plot of segments not supported yet!');
+end
+
+%legend (disable warnings)
+warning off
+legend([h2,q],'element on segment','normal vectors')
+warning on
+
+%apply options
+options=addfielddefault(options,'title','Segment boundaries');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_streamlines.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_streamlines.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_streamlines.m	(revision 27955)
@@ -0,0 +1,42 @@
+function plot_streamlines(md,options)
+%PLOT_STREAMLINES - plot stream lines on a figure
+%
+%   Usage:
+%      plot_streamlines(md,options)
+
+%process data and model
+[x y z index is2d isplanet]=processmesh(md,[],options);
+[u datatype]=processdata(md,md.initialization.vx,options);
+[v datatype]=processdata(md,md.initialization.vy,options);
+
+%some checks
+if ~is2d,
+	disp('plot_streamlines error: streamlines option not supported for 3d plots. Project on a layer')
+	return
+end
+
+%initialize flowpath
+streamlines=getfieldvalue(options,'streamlines');
+edgecolor=getfieldvalue(options,'streamlines_color','y');
+if ischar(streamlines) & strcmpi(streamlines,'on');
+	streamlines=60;
+end
+if iscell(streamlines)
+	x0=[]; y0=[];
+	for i=1:size(streamlines,2)
+		coord=streamlines{i};
+		x0=[x0;coord(1)]; y0=[y0;coord(2)];
+	end
+else
+	x0=x(1:ceil(length(x)/streamlines):end);
+	y0=y(1:ceil(length(x)/streamlines):end);
+end
+
+%Get flow lines
+flowpath=flowlines(index,x,y,u,v,x0,y0);
+
+%plot
+hold on
+for i=1:length(flowpath)
+	patch('Xdata',[flowpath(i).x;NaN],'Ydata',[flowpath(i).y;NaN],'facecolor','none','edgecolor',edgecolor);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_streamlines.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_streamlines.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_streamlines.py	(revision 27955)
@@ -0,0 +1,66 @@
+import numpy as np
+from processmesh import processmesh
+from processdata import processdata
+try:
+    import matplotlib.tri as tri
+    from scipy.interpolate import griddata
+except ImportError:
+    print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
+
+
+def plot_streamlines(md, options, ax):
+    '''
+    plot streamlines on a figure, using by default vx and vy components in md.initialization.
+
+    Usage:
+        plot_streamlines(md, options, ax)
+
+    available options, to be passed to plotmodel as a string - value pair:
+        streamlinesvx : vx component (default md.initialization.vx)
+        streamlinesvy : vy component (default md.initialization.vy)
+        streamlinescolor: color string
+        streamlinesdensity: density of plotted streamlines (default 1)
+        streamlineswidth: linewidth value or 'vel' to scale by velocity
+        streamlineswidthscale: scaling multiplier for linewidth scaled by velocity
+        streamlinesarrowsize: size of arrows on lines (default 1)
+
+    '''
+
+    # retrieve options
+    vx = options.getfieldvalue('streamlinesvx', md.initialization.vx)
+    vy = options.getfieldvalue('streamlinesvy', md.initialization.vy)
+    color = options.getfieldvalue('streamlinescolor', 'k')
+    linewidth = options.getfieldvalue('streamlineswidth', 1)
+    density = options.getfieldvalue('streamlinesdensity', 1)
+    arrowsize = options.getfieldvalue('streamlinesarrowsize', 1)
+
+    #process mesh and data
+    x, y, z, elements, is2d, isplanet = processmesh(md, vx, options)
+    u, datatype = processdata(md, vx, options)
+    v, datatype = processdata(md, vy, options)
+
+    if not is2d:
+        raise Exception('plot_streamlines error: streamlines option not supported for 3D plots')
+
+    # format data for matplotlib streamplot function
+    yg, xg = np.mgrid[min(md.mesh.y):max(md.mesh.y):100j, min(md.mesh.x):max(md.mesh.x):100j]
+    ug = griddata((x, y), u, (xg, yg), method='linear')
+    vg = griddata((x, y), v, (xg, yg), method='linear')
+
+    # create triangulation instance
+    triang = tri.Triangulation(md.mesh.x, md.mesh.y, md.mesh.elements - 1)
+
+    # interpolate to regularly spaced quad grid
+    interp_lin_u = tri.LinearTriInterpolator(triang, u)
+    interp_lin_v = tri.LinearTriInterpolator(triang, v)
+    ug = interp_lin_u(xg, yg)
+    vg = interp_lin_v(xg, yg)
+
+    if linewidth == 'vel':
+        scale = options.getfieldvalue('streamlineswidthscale', 3)
+        vel = np.sqrt(ug**2 + vg**2)
+        linewidth = scale * vel / np.amax(vel)
+        linewidth[linewidth < 0.5] = 0.5
+
+    # plot streamlines
+    ax.streamplot(xg, yg, ug, vg, color=color, linewidth=linewidth, density=density, arrowsize=arrowsize)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_tensor.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_tensor.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_tensor.m	(revision 27955)
@@ -0,0 +1,40 @@
+function plot_tensor(md,options,width,i,type)
+%PLOT_TENSOR - plot tensor components
+%
+%   Usage:
+%      plot_tensor(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+h=subplot(width,width,i); axis off; pos=get(h,'Position');
+
+plot_options.offsetx=pos(1);
+plot_options.offsety=pos(2);
+plot_options.width=pos(3);
+plot_options.height=pos(4);
+
+%Figure out tensor type:
+%FIXME does not work anymore
+if strncmpi(type,'strain',6),
+	tensor=md.results.strainrate;
+elseif strncmpi(type,'stress',6),
+	tensor=md.results.stress;
+elseif strncmpi(type,'deviatoricstress',16),
+	tensor=md.results.deviatoricstress;
+else
+	error('plot_tensor error message: unsupported type of tensor');
+end
+
+%Figure out type of plot being requested
+if strncmpi(fliplr(type),fliplr('tensor'),6) | strcmpi(type,'strainrate') | strcmpi(type,'deviatoricstress') | strcmpi(type,'stress'),
+	plot_tensor_components(md,options,width,i,tensor,type,plot_options);
+	return;
+elseif strncmpi(fliplr(type),fliplr('principal'),9),
+	plot_tensor_principal(md,options,width,i,tensor,type,plot_options);
+	return;
+elseif strncmpi(fliplr(type(1:end-1)),fliplr('principalaxis'),13),
+	plot_tensor_principalaxis(md,options,width,i,tensor,type,plot_options);
+	return;
+else
+	error('plot_tensor error message: unsurported type of plot');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_tensor_components.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_tensor_components.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_tensor_components.m	(revision 27955)
@@ -0,0 +1,78 @@
+function plot_tensor_components(md,options,width,i,tensor,type,plot_options)
+%PLOT_TENSOR_COMPONENT - plot component of a tensor
+%
+%   Usage:
+%      plot_tensor_components(md,options,width,i,tensor,type,plot_option);
+%
+%   See also: PLOTMODEL, PLOT_UNIT, PLOT_MANAGER
+
+%Compute the indexes of the components plots
+upperplots=fix((i-1)/width);
+if upperplots==0, leftplots=i-1; else leftplots=i-width*upperplots-1; end
+if dimension(md.mesh)==2 %3 components -> 3 indexes
+	index1=4*width*upperplots+2*leftplots+1;
+	index2=index1+1;
+	index3=index1+width*2;
+elseif dimension(md.mesh)==3%6 components -> 6 indexes
+	index1=3*3*width*upperplots+3*leftplots+1;
+	index2=index1+1;
+	index3=index1+2;
+	index4=index1+width*3;
+	index5=index4+1;
+	index6=index4+2;
+end
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[tensor.xx datatype]=processdata(md,tensor.xx,options);
+[tensor.yy datatype]=processdata(md,tensor.yy,options);
+[tensor.xy datatype]=processdata(md,tensor.xy,options);
+if  dimension(md.mesh)==3
+	[tensor.xz datatype]=processdata(md,tensor.xz,options);
+	[tensor.yz datatype]=processdata(md,tensor.yz,options);
+	[tensor.zz datatype]=processdata(md,tensor.zz,options);
+end
+
+if dimension(md.mesh)==2,
+	subplot(2*width,2*width,index1),
+	plot_unit(x,y,z,elements,tensor.xx,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'xx')
+	subplot(2*width,2*width,index2),
+	plot_unit(x,y,z,elements,tensor.yy,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'yy')
+	subplot(2*width,2*width,index3),
+	plot_unit(x,y,z,elements,tensor.xy,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'xy')
+else
+	subplot(3*width,3*width,index1),
+	plot_unit(x,y,z,elements,tensor.xx,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'xx')
+	subplot(3*width,3*width,index2),
+	plot_unit(x,y,z,elements,tensor.yy,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'yy')
+	subplot(3*width,3*width,index3),
+	plot_unit(x,y,z,elements,tensor.zz,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'zz')
+	subplot(3*width,3*width,index4),
+	plot_unit(x,y,z,elements,tensor.xy,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'xy')
+	subplot(3*width,3*width,index5),
+	plot_unit(x,y,z,elements,tensor.xz,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'xz')
+	subplot(3*width,3*width,index6),
+	plot_unit(x,y,z,elements,tensor.yz,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'yz')
+end
+end
+
+function Apply_options_tensor(md,options,type,component)
+	%apply options
+	if ismember('_',type) %user plotet stress_tensor
+		strings=strsplit_strict(type,'_');
+		string=strings{1};
+	else %default plot: user requested stress
+		string=type;
+	end
+	options=changefieldvalue(options,'title',[upper(string(1)) string(2:end) ' ' component]);
+	applyoptions(md,[],options);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_tensor_principal.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_tensor_principal.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_tensor_principal.m	(revision 27955)
@@ -0,0 +1,77 @@
+function plot_tensor_principal(md,options,width,i,tensor,type,plot_options)
+%PLOT_TENSOR_PRINCIPAL - plot principal values
+%
+%   Usage:
+%      plot_tensor_principal(md,options,width,i,tensor,type,plot_options);
+%
+%   See also: PLOTMODEL, PLOT_UNIT, PLOT_MANAGER
+
+%Compute the indexes of the components plots
+upperplots=fix((i-1)/width);
+if upperplots==0, leftplots=i-1; else leftplots=i-width*upperplots-1; end
+if (dimension(md.mesh)==2)%3 components -> 3 indexes
+	index1=4*width*upperplots+2*leftplots+1;
+	index2=index1+1;
+	index3=index1+width*2;
+	index4=index3+1;
+	newwidth=2*width;
+elseif dimension(md.mesh)==3%6 components -> 6 indexes
+	index1=3*3*width*upperplots+3*leftplots+1;
+	index2=index1+1;
+	index3=index1+2;
+	index4=index1+width*3;
+	index5=index4+1;
+	index6=index4+2;
+	newwidth=3*width;
+end
+
+%plot principal axis
+type1=[type 'axis1'];
+plot_tensor_principalaxis(md,options,newwidth,index1,tensor,type1,plot_options);
+type2=[type 'axis2'];
+plot_tensor_principalaxis(md,options,newwidth,index2,tensor,type2,plot_options);
+if  dimension(md.mesh)==3
+	type3=[type 'axis3'];
+	plot_tensor_principalaxis(md,options,newwidth,index3,tensor,type3,plot_options);
+end
+
+%now plot principal values
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[tensor.principalvalue1 datatype]=processdata(md,tensor.principalvalue1,options);
+[tensor.principalvalue2 datatype]=processdata(md,tensor.principalvalue2,options);
+if  dimension(md.mesh)==3
+	[tensor.principalvalue3 datatype]=processdata(md,tensor.principalvalue3,options);
+end
+
+if dimension(md.mesh)==2,
+	subplot(2*width,2*width,index3)
+	plot_unit(x,y,z,elements,tensor.principalvalue1,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'principal value 1')
+	subplot(2*width,2*width,index4)
+	plot_unit(x,y,z,elements,tensor.principalvalue2,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'principal value 2')
+else
+	subplot(3*width,3*width,index4)
+	plot_unit(x,y,z,elements,tensor.principalvalue1,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'principal value 1')
+	subplot(3*width,3*width,index5)
+	plot_unit(x,y,z,elements,tensor.principalvalue2,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'principal value 2')
+	subplot(3*width,3*width,index6)
+	plot_unit(x,y,z,elements,tensor.principalvalue3,is2d,isplanet,datatype,options)
+	Apply_options_tensor(md,options,type,'principal value 3')
+end
+end
+
+function Apply_options_tensor(md,options,type,component)
+%apply options
+if ismember('_',type) %user plotet stress_tensor
+	strings=strsplit_strict(type,'_');
+	string=strings{1};
+else %default plot: user requested stress
+	string=type;
+end
+options=changefieldvalue(options,'title',[upper(string(1)) string(2:end) ' ' component]);
+options=changefieldvalue(options,'colorbar',2);
+applyoptions(md,[],options);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_tensor_principalaxis.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_tensor_principalaxis.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_tensor_principalaxis.m	(revision 27955)
@@ -0,0 +1,95 @@
+function plot_tensor_principalaxis(md,options,width,i,tensor,type,plot_options)
+%PLOT_TENSOR_PRINCIPALAXIS - plot ytensor principal axis
+%
+%   Usage:
+%      plot_tensor_principalaxis(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%prepare subplot
+subplot(width,width,i); 
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+if dimension(md.mesh)==2,
+	eval(['Vx=tensor.principalaxis' type(end) '(:,1); Vy=tensor.principalaxis' type(end) '(:,2);'])
+	eval(['value=tensor.principalvalue' type(end) ';']);
+	[Vx datatype]=processdata(md,Vx,options);
+	[Vy datatype]=processdata(md,Vy,options);
+	[value datatype]=processdata(md,value,options);
+else
+	eval(['Vx=tensor.principalaxis' type(end) '(:,1); Vy=tensor.principalaxis' type(end) '(:,2); Vz=tensor.principalaxis' type(end) '(:,3);'])
+	[Vx datatype]=processdata(md,Vx,options);
+	[Vy datatype]=processdata(md,Vy,options);
+	[Vz datatype]=processdata(md,Vz,options);
+	[value datatype]=processdata(md,value,options);
+end
+
+%take the center of each element if ~isonnode
+if datatype==1,
+	x=mean(x(elements'))'; y=mean(y(elements'))'; z=mean(z(elements'))';
+end
+
+%plot quivers
+if dimension(md.mesh)==2,
+
+	%density
+	if exist(options,'density')
+		density=getfieldvalue(options,'density');
+		x=x(1:density:end);
+		y=y(1:density:end);
+		Vx=Vx(1:density:end);
+		Vy=Vy(1:density:end);
+		value=value(1:density:end);
+	end
+
+	%scaling:
+	delta=((min(x)-max(x))^2+(min(y)-max(y))^2)/numel(x);
+	scale=0.5/max(sqrt((Vx.^2+Vy.^2)/delta));
+	Vx=scale*Vx; Vy=scale*Vy;
+
+	pos=find(value>=0);
+	q1=quiver(x(pos),y(pos),Vx(pos),Vy(pos),'Color','r','ShowArrowHead','off','AutoScale','off');
+	hold on
+	pos=find(value<0);
+	q2=quiver(x(pos),y(pos),Vx(pos),Vy(pos),'Color','b','ShowArrowHead','off','AutoScale','off');
+
+else
+	%density
+	if exist(options,'density')
+		density=getfieldvalue(options,'density');
+		x=x(1:density:end);
+		y=y(1:density:end);
+		z=z(1:density:end);
+		Vx=Vx(1:density:end);
+		Vy=Vy(1:density:end);
+		Vz=Vz(1:density:end);
+		value=value(1:density:end);
+	end
+
+	%scaling:
+	delta=((min(x)-max(x))^2+(min(y)-max(y))^2)/numel(x);
+	scale=0.5/max(sqrt((Vx.^2+Vy.^2)/delta));
+	Vx=scale*Vx; Vy=scale*Vy; Vz=scale*Vz;
+
+	pos=find(value>=0);
+	q1=quiver3(x(pos),y(pos),z(pos),Vx(pos),Vy(pos),Vz(pos),'Color','r','ShowArrowHead','off','AutoScale','off');
+	hold on
+	pos=find(value<0);
+	q2=quiver3(x(pos),y(pos),z(pos),Vx(pos),Vy(pos),Vz(pos),'Color','b','ShowArrowHead','off','AutoScale','off');
+end
+
+%legend
+if strcmpi(type(1:6),'strain')
+	legend([q1 q2],'extension','compression')
+elseif strcmpi(type(1:6),'stress')
+	legend([q1 q2],'compression','traction')
+end
+
+%apply options
+strings=strsplit_strict(type,'_');
+string=strings{1};
+options=addfielddefault(options,'title',[upper(string(1)) string(2:end) ' principal axis ' type(end)]);
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_thermaltransient_results.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_thermaltransient_results.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_thermaltransient_results.m	(revision 27955)
@@ -0,0 +1,23 @@
+function plot_thermaltransient_results(md,options,width,i)
+%PLOT_THERMALTRANSIENT_RESULTS - plot  results of a thermal transient solution
+%
+%   Usage:
+%      plot_thermaltransient_results(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+string='plot(md';
+for i=1:length(md.thermaltransient_results),
+	string=[string ',''data'',''thermaltransient_results(' num2str(i) ').temperature'',''view'',3,''title'',''Temperature at time ' num2str(md.thermaltransient_results(i).time) ' a'''];
+end
+string=[string ',''figure'',1,''colorbar#all'',''on'',''view'',3,''fontsize'',' num2str(options.fontsize) ',''fontweight'',' options.fontweight ');'];
+eval(string);
+clear string;
+
+string='plot(md';
+for i=2:length(md.thermaltransient_results),
+	string=[string ',''data'',md.thermaltransient_results(' num2str(i) ').temperature-md.thermaltransient_results(' num2str(i-1) ').temperature,''view'',3,''title'',''Delta temperature at time ' num2str(md.thermaltransient_results(i).time) ' a'''];
+end
+string=[string ',''figure'',2,''colorbar#all'',''on'',''fontsize'',' num2str(options.fontsize) ',''fontweight'',' options.fontweight ');'];
+eval(string);
+clear string;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_transient_field.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_transient_field.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_transient_field.m	(revision 27955)
@@ -0,0 +1,43 @@
+function plot_transient_field(md,options,width,i,data)
+%PLOT_TRANSIENT_FIELD - plot transient results
+%
+%   Usage:
+%      plot_transient_field(md,options,width,i,data);
+%
+%   See also: PLOTMODEL
+
+%Check that they are transient results
+if (~isfield(md.results,'TransientSolution')),
+	error('plot_transient_field error message: no transient results in the model');
+end
+
+%Figure out the iterations to plot and check if it is possible
+transient=md.results.TransientSolution;
+maxiteration=size(transient,2);
+steps=getfieldvalue(options,'steps',1:1:maxiteration);
+
+if max(steps)>maxiteration | min(steps)<1,
+	error(['plot_transient_field error message: problem with the steps requested, must be an interger between 0 and ' num2str(maxiteration)]);
+end
+subplotwidth=ceil(sqrt(length(steps)));
+
+%Figure out the field to plot
+
+field=getfieldvalue(options,'field','Vel');
+
+%process mes only once
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+
+%plot data for all steps
+for i=1:length(steps),
+
+	%process data and change title if needed
+	[data datatype]=processdata(md,transient(steps(i)).(field),options);
+	options=changefieldvalue(options,'title',[field ' at time ' num2str(transient(steps(i)).time/md.constants.yts) ' a']);
+
+	%create plot of step i
+	subplot(subplotwidth,subplotwidth,i);
+	plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+	applyoptions(md,data,options);
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_transient_movie.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_transient_movie.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_transient_movie.js	(revision 27955)
@@ -0,0 +1,177 @@
+'use strict';
+
+/**
+ * Global Function: plot_transient_movie
+ *
+ * Parameters:
+ *		options			- Object containing a number of property/value pairs.
+ *		animation		- Object containing a number of property/value pairs related to transient solution animation.
+ *		progressText	- Object containing a number of property/value pairs related to updating the playback slider text on frame change.
+ *		unit 			- String (default: '') which is appended to the frame index with a single white space before updating #playback-progress-text on frame change.
+ *		update			- Boolean (default: true) indicating whether or not to update #playback-progress-text on frame change with the frame index. Set this to 'false' if you would rather manage the update of #playback-progress-text via 'onMovieUpdate' handler (or by some other means).
+ * 
+ * See Also:
+ *		- /web/js/plotmodel.js
+ *		- /web/js/plot_manager.js
+ *
+ * TODO:
+ *		- Update function signature/handling to use ES6 default parameters for 'unit' and 'handling'.
+ */
+function plot_transient_movie(md, options, canvas) {
+	//loop over the time steps
+	let data = options.getfieldvalue('transient_field_data');
+	let steps = new Array(data.length);
+	
+	for (let i = 0; i < steps.length; i++) {
+		steps[i] = i;
+	}
+	
+	//calculate caxis
+	if (!options.exist('caxis')) {
+		let range = [Infinity, -Infinity];
+		let dataresults;
+		for (let i in steps) {
+			dataresults = processdata(md, data[i], options);
+			range[0] = Math.min(range[0], ArrayMin(dataresults[1]));
+			range[1] = Math.max(range[1], ArrayMax(dataresults[1]));
+		}
+		options.addfielddefault('caxis', range);
+	}
+	
+	//Create unit node 
+	let dataresults = processdata(md, data[0], options);
+	let data2 = dataresults[0]; 
+	let datatype = dataresults[1];
+	plot_unit(md, data2, datatype, options, canvas);
+	let unitOptions = options.getfieldvalue('unitOptions', {'name' : 'unit'});
+	let unitName 	= unitOptions.name;
+	let node 		= canvas.unitNodes[unitName];
+	
+	//process data
+	let processedData = [];
+	for (let i in steps) {
+		dataresults = processdata(md, data[i].slice(), options);
+		processedData[i] = dataresults[0];
+	}
+	
+	//process mesh
+	let meshresults = processmesh(md, data2, options);
+	meshresults = scaleMesh(md, meshresults, options);
+	let x = meshresults[0]; 
+	let y = meshresults[1]; 
+	let z = meshresults[2]; 
+	let elements = meshresults[3];
+	let is2d = meshresults[4]; 
+	let isplanet = meshresults[5];
+	let vertices = meshresults[6];
+	let scale = meshresults[7];
+	
+	//process options
+	if (canvas.animation !== undefined && canvas.animation.handler !== undefined) {
+		clearInterval(canvas.animation.handler);
+	}
+	let animation = options.getfieldvalue('animation', {});
+	
+	let progressText = null;
+	if (!vesl.helpers.isEmptyOrUndefined(animation.progressText)) {
+		progressText = {
+					update	: defaultFor(animation.progressText.update, true),
+					unit	: defaultFor(animation.progressText.unit,  	'')
+				};
+	} else {
+		progressText = {
+					update	: false,
+					unit	: ''
+				};
+	}
+	canvas.animation = {
+		frame: defaultFor(animation.frame, 			0),
+		play: defaultFor(animation.play, 			true),
+		fps: defaultFor(animation.fps, 				4),
+		interval: defaultFor(animation.interval, 	1000 / defaultFor(animation.fps, 4)),
+		loop: defaultFor(animation.loop, 			true),
+		handler: 						{}, // Initialized below
+		progressText: 						progressText
+	}
+	//display movie
+	canvas.unitMovieData = processedData;
+	canvas.animation.totalFrames = processedData.length;
+	canvas.animation.frame = 0;
+
+	let slider = null;
+	
+	if (!vesl.helpers.isEmptyOrUndefined(canvas.playbackControls)) {
+		if (!vesl.helpers.isEmptyOrUndefined(canvas.playbackControls.slider)) {
+			slider = canvas.playbackControls.slider;
+		}
+		
+		
+		if (!vesl.helpers.isEmptyOrUndefined(canvas.playbackControls.progressText)) {
+			progressText = canvas.playbackControls.progressText;
+		}
+	}
+	
+	clearInterval(canvas.animation.handler);
+	canvas.animation.handler = setInterval(function() {
+		// Update current animation frame
+		let frame = canvas.animation.frame;
+		
+		if (canvas.animation.play) {
+			if (frame >= steps.length - 1) {
+				if (canvas.animation.loop) {
+					frame = 0;
+				} else {
+					canvas.animation.play = !canvas.animation.play;
+				}
+			} else {
+				frame = (frame + 1) % steps.length;
+			}
+		}
+		
+		//If frame has changed, update unit node and data marker display.
+		if (frame !== canvas.animation.lastFrame) {
+			canvas.state.dispatchEvent('onMovieUpdate', canvas, frame, node);
+			
+			//Rescale in case surface has changed
+			if (md.mesh.classname() === 'mesh3dsurface' || md.mesh.classname() === 'mesh3dprisms') {
+				vertices = Node.prototype.scaleVertices(md, x, y, z, elements, options.getfieldvalue('heightscale', 1), options.getfieldvalue('maskregion',{'enabled':false, 'reproject':false}), true);
+			} else {
+				vertices = Node.prototype.scaleVertices(md, x, y, z, elements, options.getfieldvalue('heightscale', 1), options.getfieldvalue('maskregion',{'enabled':false, 'reproject':false}), true);
+				//vertices = [x, y, z];
+			}
+	
+			node.updateBuffer('Vertices', vertices);
+			node.updateBuffer('Coords', processedData[frame]);
+			canvas.unitData[unitName] = processedData[frame];
+			if (canvas.graph.enabled) {
+				vesl.graph.draw(canvas);
+			}
+			if (slider != null) {
+				slider.val(frame);
+			}
+			if (!vesl.helpers.isEmptyOrUndefined(progressText) && canvas.animation.progressText.update) {
+				if (canvas.animation.progressText.unit === '') {
+					progressText.html(steps[frame].toFixed(0));
+				} else {
+					progressText.html(steps[frame].toFixed(0) + ' ' + canvas.animation.progressText.unit);
+				}
+			}
+			//if (!vesl.helpers.isEmptyOrUndefined(canvas.nodes.quiver)) {
+			//	plot_quiver(md,options,canvas,false);
+			//}
+			
+		}
+		
+		//Save new frame info.
+		canvas.animation.lastFrame = canvas.animation.frame;
+		canvas.animation.frame = frame;
+	}, canvas.animation.interval);
+	
+	//Update progress bar with new frame info.
+	if (!vesl.helpers.isEmptyOrUndefined(slider)) {
+		slider.max(steps.length - 1);
+		slider.val(canvas.animation.frame);
+	}
+				
+	applyoptions(md, [], options, canvas);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_transient_movie.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_transient_movie.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_transient_movie.m	(revision 27955)
@@ -0,0 +1,193 @@
+function plot_transient_movie(md,options,width,i)
+%PLOT_TRANSIENT_MOVIE - plot a transient result as a movie
+%   Usage:
+%      plot_transient_movie(md,options,width,i);
+%
+%   See also: PLOTMODEL, PLOT_UNIT, PLOT_MANAGER
+
+	%prepare subplot
+	subplot(width,width,i);
+
+	%xlim
+	if exist(options,'transient_movie_field'),
+		field=getfieldvalue(options,'transient_movie_field');
+	elseif ischar(getfieldvalue(options,'data')) && ~strcmp(getfieldvalue(options,'data'),'transient_movie')
+		field=getfieldvalue(options,'data');
+	else
+		disp('List of available fields:');
+		F=fieldnames(md.results.TransientSolution(1));
+		num = [];
+		for i=1:numel(F),
+			if ~strcmp(F{i},'time') & ...
+				~strcmp(F{i},'step') & ...
+				~strcmp(F{i},'errlog') & ...
+				~strcmp(F{i},'outlog') & ...
+				~strcmp(F{i},'MaxIterationConvergenceFlag') & ...
+				~strcmp(F{i},'SolutionType'),
+				disp(['   ' num2str(i) ': ' F{i} ]);
+				num = [num i];
+			end
+		end
+		choice=input(['please enter the field number? (between ' num2str(min(num)) ' and ' num2str(max(num)) ')  ']);
+		field =  F{choice};
+	end
+
+	results=md.results.TransientSolution;
+	%loop over the time steps
+	if exist(options,'transient_movie_limit'),
+		limit=getfieldvalue(options,'transient_movie_limit');
+		steps=[limit(1):limit(end)];
+	elseif exist(options,'transient_movie_steps'),
+		warning('option ''transient_movie_steps'' is now ''steps'', please update your script');
+		steps = getfieldvalue(options,'transient_movie_steps');
+	elseif exist(options,'steps'),
+		steps = getfieldvalue(options,'steps');
+	elseif exist(options,'step'),
+		steps = getfieldvalue(options,'step');
+	else
+		steps=1:length(results);
+	end
+
+	%Do we have an output?
+	isavi = 0;
+	isgif = 0;
+	ismp4 = 0;
+	if exist(options,'transient_movie_output'),
+		filename=getfieldvalue(options,'transient_movie_output');
+		[pathstr,name,ext] = fileparts(filename);
+		if strcmp(ext,'.gif')
+			isgif = 1;
+		elseif strcmp(ext,'.mp4')
+			ismp4 = 1;
+		elseif strcmp(ext,'.avi')
+			isavi = 1;
+		end
+	end
+	if isavi || ismp4
+		vid=VideoWriter([filename(1:end-4),'.avi'],'Motion JPEG AVI');
+		vid.FrameRate = 2; 
+		open(vid); 
+	end
+
+	%calculate caxis
+	if ~exist(options,'caxis'),
+		range = [Inf -Inf];
+		for i=steps
+			if isfield(results(i), 'MeshElements')
+				options=changefieldvalue(options,'amr', i);
+			end
+			[data datatype]=processdata(md,results(i).(field), options);
+			range(1) = min(range(1),min(data));
+			range(2) = max(range(2),max(data));
+		end
+		options=addfielddefault(options,'caxis',range);
+	end
+
+	%Process mesh once for all
+	[x y z elements is2d isplanet]=processmesh(md,results(i).(field),options);
+
+	%display movie
+	nstep=1;
+	deltat = getfieldvalue(options,'pause',.5);
+	for i=steps
+
+		if ~isempty(results(i).(field)),
+			%Process mesh if necessary
+			if isfield(results(i), 'MeshElements')
+				options=changefieldvalue(options,'amr', i);
+				[x y z elements is2d isplanet]=processmesh(md,results(i).(field),options);
+			end
+
+			%process data
+			[data datatype]=processdata(md,results(i).(field),options);
+
+			clf;
+			titlestring=[field ' (time ' num2str(results(i).time,'%7.2f') ' yr)'];
+			plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+			apply_options_movie(md,data,options,titlestring);
+
+			%Add grounding line
+			if exist(options,'groundingline') 
+				if dimension(md.mesh)==2
+					contours=isoline(md, results(i).MaskOceanLevelset,'output','matrix');
+				else
+					ocean = project2d(md, results(i).MaskOceanLevelset, 1);
+					contours=isoline(md, ocean,'output','matrix');
+				end
+				hold on
+				plot(contours(:,1),contours(:,2),getfieldvalue(options,'groundingline'));
+			end
+
+			%Add ice front
+			if exist(options,'icefront')
+				if dimension(md.mesh)==2
+					if exist(options, 'amr')
+						contours=isoline(md, results(i).MaskIceLevelset,'output','matrix', 'amr', results(i));
+					else
+						contours=isoline(md, results(i).MaskIceLevelset,'output','matrix');
+					end
+				else
+					ice = project2d(md, results(i).MaskIceLevelset, 1);
+					contours=isoline(md, ice,'output','matrix');
+				end
+				hold on
+				plot(contours(:,1),contours(:,2),getfieldvalue(options,'icefront'));
+			end
+
+			if isgif
+				frame=getframe(gcf);
+				im = frame2im(frame);
+				[imind,cmap] = rgb2ind(im,256);
+				if i==1
+					imwrite(imind, cmap, filename, 'DelayTime',getfieldvalue(options,'transient_movie_time',.5), 'LoopCount',inf)
+				else
+					imwrite(imind, cmap, filename, 'WriteMode','append');
+				end
+			elseif isavi || ismp4
+				F=getframe(gcf);
+				writeVideo(vid, F);
+			end
+
+			if exist(options,'transient_movie_output')
+				%set(gcf,'Renderer','zbuffer','color','white'); %fixes a bug on Mac OS X (not needed in future Matlab version)
+				if nstep==1,
+					%initialize images and frame
+					frame=getframe(gcf);
+					[images,map]=rgb2ind(frame.cdata,256,'nodither');
+					images(1,1,1,length(steps))=0;
+				else
+					frame=getframe(gcf);
+					images(:,:,1,nstep) = rgb2ind(frame.cdata,map,'nodither');
+				end
+			else
+				pause(deltat)
+			end
+			nstep=nstep+1;
+		end
+	end
+
+	%output movie if requested.
+	if isavi || ismp4
+		close(vid);
+	end
+	if ismp4
+		filename = filename(1:end-4);
+		while(~exist([filename '.avi']))
+			disp(['Waiting for ' filename '.avi']);
+			pause(1)
+		end
+		command=sprintf('ffmpeg -y -i %s.avi -c:v libx264 -crf 19 -preset slow -c:a libfaac -b:a 192k -ac 2 -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" %s.mp4',filename,filename);
+		system(command);
+	end
+	if isgif
+		imwrite(images,map,filename,'DelayTime',getfieldvalue(options,'transient_movie_time',.5),'LoopCount',inf)
+	end
+
+end %function
+
+function apply_options_movie(md,data,options,titlestring)
+	%apply options
+	options=changefieldvalue(options,'title',titlestring);
+	options=addfielddefault(options,'colorbar',1);
+	applyoptions(md,data,options);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_transient_results.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_transient_results.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_transient_results.m	(revision 27955)
@@ -0,0 +1,77 @@
+function plot_transient_results(md,options,width,i)
+%PLOT_TRANSIENT_RESULTS - plot transient results
+%
+%   Usage:
+%      plot_transient_results(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+fontsize=getfieldvalue(options,'fontsize',14);
+fontweight=getfieldvalue(options,'fontweight','n');
+
+%Prepare window distribution
+%Get screen geometry
+mp = get(0, 'MonitorPositions');
+%Build window sizes
+if size(mp,1)>=2        %several monitors, use the second one
+	bdwidth=mp(2,1)+5; topbdwidth=mp(2,2)+20; W=mp(2,3)/3; H=mp(2,4)/2;
+else                    %only one monitor
+	bdwidth=5;         topbdwidth=20;         W=mp(1,3)/3; H=mp(1,4)/2;
+end
+pos1=[bdwidth  H+bdwidth  W-2*bdwidth  H-bdwidth-topbdwidth];
+pos2=pos1+[W 0 0 0]; pos3=pos1+[2*W 0 0 0]; pos4=pos1+[0 -H 0 0]; pos5=pos1+[W -H 0 0]; pos6=pos1+[2*W -H 0 0];
+%Create windows
+figure(1);close;
+figure('Position',pos1); figure('Position',pos2);figure('Position',pos3);figure('Position',pos4);figure('Position',pos5);figure('Position',pos6);
+
+string='plotmodel(md';
+for i=1:length(md.results.transient),
+	string=[string ',''data'',md.results.transient(' num2str(i) ').thickness,''title'',''Thickness at time ' num2str(md.results.transient(i).time) ' a'''];
+end
+string=[string ',''figure'',1,''colorbar#all'',''on'',''fontsize'',' num2str(fontsize) ',''fontweight'',''' fontweight ''');'];
+eval(string);
+clear string;
+
+string='plotmodel(md';
+for i=1:length(md.results.transient),
+	string=[string ',''data'',md.results.transient(' num2str(i) ').vel,''view'',3,''title'',''Velocity at time ' num2str(md.results.transient(i).time) ' a'''];
+end
+string=[string ',''figure'',2,''colorbar#all'',''on'',''fontsize'',' num2str(fontsize) ',''fontweight'',''' fontweight  ''');'];
+eval(string);
+clear string;
+
+if dimension(md.mesh)==3,
+	string='plotmodel(md';
+	for i=1:length(md.results.transient),
+		string=[string ',''data'',md.results.transient(' num2str(i) ').temperature,''view'',3,''title'',''Temperature at time ' num2str(md.results.transient(i).time) ' a'''];
+	end
+	string=[string ',''figure'',3,''colorbar#all'',''on'',''view'',3,''fontsize'',' num2str(fontsize) ',''fontweight'',''' fontweight  ''');'];
+	eval(string);
+	clear string;
+end
+
+string='plotmodel(md';
+for i=2:length(md.results.transient),
+	string=[string ',''data'',md.results.transient(' num2str(i) ').thickness-md.results.transient(' num2str(i-1) ').thickness,''title'',''Delta thickness at time ' num2str(md.results.transient(i).time) ' a'''];
+end
+string=[string ',''figure'',4,''colorbar#all'',''on'',''fontsize'',' num2str(fontsize) ',''fontweight'',''' fontweight  ''');'];
+eval(string);
+clear string;
+
+string='plotmodel(md';
+for i=2:length(md.results.transient),
+	string=[string ',''data'',md.results.transient(' num2str(i) ').vel-md.results.transient(' num2str(i-1) ').vel,''view'',3,''title'',''Delta velocity at time ' num2str(md.results.transient(i).time) ' a'''];
+end
+string=[string ',''figure'',5,''colorbar#all'',''on'',''fontsize'',' num2str(fontsize) ',''fontweight'',''' fontweight  ''');'];
+eval(string);
+clear string;
+
+if dimension(md.mesh)==3,
+	string='plotmodel(md';
+	for i=2:length(md.results.transient),
+		string=[string ',''data'',md.results.transient(' num2str(i) ').temperature-md.results.transient(' num2str(i-1) ').temperature,''view'',3,''title'',''Delta temperature at time ' num2str(md.results.transient(i).time) ' a'''];
+	end
+	string=[string ',''figure'',6,''colorbar#all'',''on'',''fontsize'',' num2str(fontsize) ',''fontweight'',''' fontweight  ''');'];
+	eval(string);
+	clear string;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_unit.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_unit.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_unit.js	(revision 27955)
@@ -0,0 +1,134 @@
+'use strict';
+
+function plot_unit(md, data, datatype, options, canvas) { //{{{
+	//PLOT_UNIT - unit plot, display data
+	//
+	//   Usage:
+	//      plot_unit(md, data, options, canvas);
+	//
+	//   See also: PLOTMODEL, PLOT_MANAGER
+	
+	//{{{
+	// Process data and model
+	let meshresults = processmesh(md, data, options);
+	meshresults = scaleMesh(md, meshresults, options);
+	let x = meshresults[0]; 
+	let y = meshresults[1]; 
+	let z = meshresults[2]; 
+	let elements = meshresults[3];
+	let is2d = meshresults[4]; 
+	let isplanet = meshresults[5];
+	let vertices = meshresults[6];
+	let scale = meshresults[7];
+	
+	//Compute gl variables:
+	let edgecolor = options.getfieldvalue('edgecolor', [1.0, 1.0, 1.0, 1.0]);
+	let maskzeros = options.getfieldvalue('maskzeros', {});
+	
+	let unitOptions = options.getfieldvalue('unitOptions', {'name' : 'unit'});
+	let unitName 	= unitOptions.name;
+	
+	let node = new Node(
+		'canvas', canvas,
+		'options', options,
+		'md', md,
+		'name', unitName,
+		'shaderName', 'unit',
+		'opacity', options.getfieldvalue('opacity', 1.0),
+		'caxis', options.getfieldvalue('caxis',[ArrayMin(data), ArrayMax(data)]),
+		'cullFace', THREE.FrontSide,
+		'enabled', options.getfieldvalue('nodata', 'off') === 'off',
+		'log', options.getfieldvalue('log',false),
+		'maskObject', options.getfieldvalue('maskregion', {'enabled': false}),
+		'maskZerosColor', defaultFor(maskzeros.color, [1.0, 1.0, 1.0, 1.0]),
+		'maskZerosEnabled', defaultFor(maskzeros.enabled, false),
+		'maskZerosTolerance', defaultFor(maskzeros.tolerance, 1e-3),
+		'maskZerosZeroValue', defaultFor(maskzeros.zeroValue, 0.5),
+		'scale', scale
+	);
+	//}
+	
+	if (vesl.helpers.isEmptyOrUndefined(canvas.unitNodes)) {
+		canvas.unitNodes = {};
+	}
+	
+	if (vesl.helpers.isEmptyOrUndefined(canvas.unitData)) {
+		canvas.unitData = {};
+	}
+	
+	// If option 'clf' is on, remove all cached data associated with this unit
+	if (options.getfieldvalue('clf', 'on') === 'on') {
+		delete canvas.unitNodes[unitName];
+		canvas.unitData[unitName] = data;
+		
+		for (let i = 0, numUnits = canvas.state.scene.children.length; i < numUnits; ++i) {
+			if (canvas.state.scene.children[i].name === unitName) {
+				canvas.state.scene.children.splice(i, 1);
+				break;
+			}
+		}
+	}
+	
+	canvas.unitNodes[unitName] = node;
+	
+	//}}}
+	switch(datatype) {
+		//{{{ element plot
+		case 1:
+			//WARNING: NaN are not properly found (NaN != NaN = true)
+			let pos = ArrayFindNot(data, NaN); //needed for element on water
+			
+			if (elements[0].length === 6) { // prisms
+				let abc = elements.map(function(value, index) { return [value[0], value[1], value[2]]; }); //top
+				let dfe = elements.map(function(value, index) { return [value[3], value[5], value[4]]; }); //bottom
+				let aeb = elements.map(function(value, index) { return [value[0], value[4], value[1]]; }); //1st side upper right
+				let ade = elements.map(function(value, index) { return [value[0], value[3], value[4]]; }); //1st side lower left
+				let bfc = elements.map(function(value, index) { return [value[1], value[5], value[2]]; }); //2nd side upper right
+				let bef = elements.map(function(value, index) { return [value[1], value[4], value[5]]; }); //2nd side lower left
+				let cda = elements.map(function(value, index) { return [value[2], value[3], value[0]]; }); //3rd side upper right
+				let cfd = elements.map(function(value, index) { return [value[2], value[5], value[3]]; }); //3rd side lower left
+				let prismElements = abc.concat(dfe, aeb, ade, bfc, bef, cda, cfd);
+				node.patch('Faces', prismElements, 'Vertices', vertices, 'FaceVertexCData', data, 'FaceColor', 'flat', 'EdgeColor', edgecolor);
+			} else if (elements[0].length === 4) { // tetras
+    			// TODO: Implement handling for tetras
+			} else { // triangular elements
+				node.patch('Faces', elements, 'Vertices', vertices, 'FaceVertexCData', data, 'FaceColor', 'flat', 'EdgeColor', edgecolor);
+			}
+			
+			break;
+		//}}}
+		//{{{ node plot
+		case 2:
+			if (elements[0].length === 6) { // prisms
+				let abc = elements.map(function(value, index) { return [value[0], value[1], value[2]]; }); //top
+				let dfe = elements.map(function(value, index) { return [value[3], value[5], value[4]]; }); //bottom
+				let aeb = elements.map(function(value, index) { return [value[0], value[4], value[1]]; }); //1st side upper right
+				let ade = elements.map(function(value, index) { return [value[0], value[3], value[4]]; }); //1st side lower left
+				let bfc = elements.map(function(value, index) { return [value[1], value[5], value[2]]; }); //2nd side upper right
+				let bef = elements.map(function(value, index) { return [value[1], value[4], value[5]]; }); //2nd side lower left
+				let cda = elements.map(function(value, index) { return [value[2], value[3], value[0]]; }); //3rd side upper right
+				let cfd = elements.map(function(value, index) { return [value[2], value[5], value[3]]; }); //3rd side lower left
+				let prismElements = abc.concat(dfe, aeb, ade, bfc, bef, cda, cfd);
+				node.patch('Faces', prismElements, 'Vertices', vertices, 'FaceVertexCData', data, 'FaceColor', 'interp', 'EdgeColor', edgecolor);
+			} else if (elements[0].length === 4) { // tetras
+    			// TODO: Implement handling for tetras
+			} else { // triangular elements	
+				node.patch('Faces', elements, 'Vertices', vertices, 'FaceVertexCData', data, 'FaceColor', 'interp', 'EdgeColor', edgecolor);
+			}
+			
+			break;
+		//}}}
+		//{{{ quiver plot 
+		case 3:
+			if (is2d) {
+				//plot_quiver(x, y, data(:, 1), data(:, 2), options);
+			} else {
+				//plot_quiver3(x, y, z, data(:, 1), data(:, 2), data(:, 3), options);
+			}
+			
+			break;
+		//}}}
+		default:
+			throw Error(sprintf('%s%i%s\n','case ', datatype,' not supported'));
+	}
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_unit.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_unit.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_unit.m	(revision 27955)
@@ -0,0 +1,86 @@
+function plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+%PLOT_UNIT - unit plot, display data
+%
+%   Usage:
+%      plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options);
+%
+%   See also: PLOTMODEL, PLOT_MANAGER
+
+%edgecolor
+edgecolor=getfieldvalue(options,'edgecolor','none');
+
+switch datatype,
+
+	%element plot
+	case 1,
+
+		pos=find(~isnan(data)); %needed for element on water
+		if size(elements,2)==6, %prisms
+			A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
+			patch( 'Faces', [A B C],  'Vertices', [x y z],'CData', data(pos),'FaceColor','flat','EdgeColor',edgecolor);
+			patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', data(pos),'FaceColor','flat','EdgeColor',edgecolor);
+			patch( 'Faces', [A B E D],'Vertices', [x y z],'CData', data(pos),'FaceColor','flat','EdgeColor',edgecolor);
+			patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', data(pos),'FaceColor','flat','EdgeColor',edgecolor);
+			patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', data(pos),'FaceColor','flat','EdgeColor',edgecolor);
+		elseif size(elements,2)==4, %tetras
+			A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4);
+			patch( 'Faces',[A B C],'Vertices', [x y z],'CData',data(pos),'FaceColor','flat','EdgeColor',edgecolor);
+			patch( 'Faces',[A B D],'Vertices', [x y z],'CData',data(pos),'FaceColor','flat','EdgeColor',edgecolor);
+			patch( 'Faces',[B C D],'Vertices', [x y z],'CData',data(pos),'FaceColor','flat','EdgeColor',edgecolor);
+			patch( 'Faces',[C A D],'Vertices', [x y z],'CData',data(pos),'FaceColor','flat','EdgeColor',edgecolor);
+		else
+			A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); data=data(pos);
+			patch( 'Faces', [A B C], 'Vertices', [x y z],'CData', data,'FaceColor','flat','EdgeColor',edgecolor);
+			
+			%mask value NaN, plot white faces.
+			if getfieldvalue(options,'maskwhite',0),
+				pos2=find(data==getfieldvalue(options,'maskvalue',NaN));
+				if ~isempty(pos2),
+					A=elements(pos(pos2),1); B=elements(pos(pos2),2); C=elements(pos(pos2),3); data=data(pos2);
+					patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceColor','w','EdgeColor',edgecolor);
+				end
+			end
+		end
+
+		if is2d,
+		end
+
+	%node plot
+	case 2,
+
+		if size(elements,2)==6, %prisms
+			A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+			patch( 'Faces', [A B C],  'Vertices', [x y z],'FaceVertexCData', data(:),'FaceColor','interp','EdgeColor',edgecolor);
+			patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', data(:),'FaceColor','interp','EdgeColor',edgecolor);
+			patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', data(:),'FaceColor','interp','EdgeColor',edgecolor);
+			patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', data(:),'FaceColor','interp','EdgeColor',edgecolor);
+			patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', data(:),'FaceColor','interp','EdgeColor',edgecolor);
+		elseif size(elements,2)==4, %tetras
+			A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4);
+			patch( 'Faces',[A B C],'Vertices', [x y z],'FaceVertexCData',data(:),'FaceColor','interp','EdgeColor',edgecolor);
+			patch( 'Faces',[A B D],'Vertices', [x y z],'FaceVertexCData',data(:),'FaceColor','interp','EdgeColor',edgecolor);
+			patch( 'Faces',[B C D],'Vertices', [x y z],'FaceVertexCData',data(:),'FaceColor','interp','EdgeColor',edgecolor);
+			patch( 'Faces',[C A D],'Vertices', [x y z],'FaceVertexCData',data(:),'FaceColor','interp','EdgeColor',edgecolor);
+		else
+			A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+			patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', data(:),'FaceColor','interp','EdgeColor',edgecolor);
+		end
+
+	%quiver plot
+	case 3,
+
+		if is2d,
+			plot_quiver(x,y,data(:,1),data(:,2),options);
+		else
+			plot_quiver3(x,y,z,data(:,1),data(:,2),data(:,3),options);
+		end
+
+	%edge data
+	case 6
+		A=elements(:,1); B=elements(:,2); C=elements(:,3); 
+		patch('Faces', [A B C],'Vertices', [x y z],'FaceVertexCData', data(:),'FaceColor','interp','EdgeColor',edgecolor);
+	otherwise,
+		error(['case ' num2str(datatype) ' not supported']);
+
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_unit.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_unit.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_unit.py	(revision 27955)
@@ -0,0 +1,254 @@
+from cmaptools import getcolormap, truncate_colormap
+try:
+    import matplotlib as mpl
+    import matplotlib.pyplot as plt
+    from mpl_toolkits.axes_grid1 import inset_locator
+    from mpl_toolkits.mplot3d import Axes3D
+    from mpl_toolkits.mplot3d.art3d import Poly3DCollection
+except ImportError:
+    print("could not import pyplot, matplotlib has not been installed, no plotting capabilities enabled")
+import numpy as np
+
+from plot_quiver import plot_quiver
+
+
+def plot_unit(x, y, z, elements, data, is2d, isplanet, datatype, options, fig, axgrid, gridindex):
+    '''
+    PLOT_UNIT - unit plot, display data
+
+    Usage:
+        plot_unit(x, y, z, elements, data, is2d, isplanet, datatype, options)
+
+    See also: PLOTMODEL, PLOT_MANAGER
+    '''
+    #if we are plotting 3d replace the current axis
+    if not is2d:
+        axgrid[gridindex].axis('off')
+        ax = inset_locator.inset_axes(axgrid[gridindex], width='100%', height='100%', loc=3, borderpad=0, axes_class=Axes3D)
+    else:
+        ax = axgrid[gridindex]
+
+    #edgecolor
+    edgecolor = options.getfieldvalue('edgecolor', 'None')
+
+    # colormap
+    # give number of colorlevels and transparency {{{
+    colorlevels = options.getfieldvalue('colorlevels', 128)
+    alpha = options.getfieldvalue('alpha', 1)
+    # }}}
+    # define wich colormap to use {{{
+    try:
+        defaultmap = plt.cm.get_cmap('viridis', colorlevels)
+    except AttributeError:
+        print("Viridis can't be found (probably too old Matplotlib) reverting to gnuplot colormap")
+        defaultmap = truncate_colormap('gnuplot2', 0.1, 0.9, colorlevels)
+    if not options.exist('colormap'):
+        cmap = defaultmap
+    else:
+        cmap = getcolormap(options)
+    options.addfield('colormap', cmap)
+    # }}}
+    # if plotting only one of several layers reduce dataset, same for surface {{{
+    if options.getfieldvalue('layer', 0) >= 1:
+        plotlayer = options.getfieldvalue('layer', 0)
+        if datatype == 1:
+            slicesize = np.shape(elements)[0]
+        elif datatype in [2, 3]:
+            slicesize = len(x)
+        data = data[(plotlayer - 1) * slicesize:plotlayer * slicesize]
+    # }}}
+    # Get the colormap limits {{{
+    dataspread = np.nanmax(data) - np.nanmin(data)
+    if dataspread != 0.:
+        limextent = np.abs(dataspread / np.nanmean(data))
+    else:
+        limextent = 0.
+
+    if options.exist('caxis'):
+        lims = options.getfieldvalue('caxis', [np.nanmin(data), np.nanmax(data)])
+        if lims[0] > np.nanmin(data):
+            options.addfielddefault('cmap_set_under', 'r')
+        if lims[1] < np.nanmax(data):
+            options.addfielddefault('cmap_set_over', 'k')
+    else:
+        if limextent == 0.:
+            delta = abs(0.1 * np.nanmin(data))
+            lims = [np.nanmin(data) - delta, np.nanmax(data) + delta]
+        elif limextent < 1.0e-12:
+            lims = [np.nanmin(data) - 2 * dataspread, np.nanmax(data) + 2 * dataspread]
+        else:
+            lims = [np.nanmin(data), np.nanmax(data)]
+
+    cbar_extend = 0
+    if options.exist('cmap_set_over'):
+        over = options.getfieldvalue('cmap_set_over', 'k')
+        cmap.set_over(over)
+        cbar_extend += 1
+    if options.exist('cmap_set_under'):
+        under = options.getfieldvalue('cmap_set_under', 'r')
+        cmap.set_under(under)
+        cbar_extend += 2
+    # }}}
+
+    # colorbar extension {{{
+    if cbar_extend == 0:
+        extend = 'neither'
+    elif cbar_extend == 1:
+        extend = 'max'
+    elif cbar_extend == 2:
+        extend = 'min'
+    elif cbar_extend == 3:
+        extend = 'both'
+    options.addfielddefault('cbar_extend', extend)
+    # }}}
+    # Set the spread of the colormap (default is normal) {{{
+    if options.exist('log'):
+        norm = mpl.colors.LogNorm(vmin=lims[0], vmax=lims[1])
+    else:
+        norm = mpl.colors.Normalize(vmin=lims[0], vmax=lims[1])
+    options.addfield('colornorm', norm)
+    # }}}
+
+    # Plot depending on the datatype
+    # data are on elements {{{
+    if datatype == 1:
+        if is2d:
+            if options.exist('mask'):
+                triangles = mpl.tri.Triangulation(x, y, elements, data.mask)
+            else:
+                triangles = mpl.tri.Triangulation(x, y, elements)
+
+            tri = ax.tripcolor(triangles, data, colorlevels, cmap=cmap, norm=norm, alpha=alpha, edgecolors=edgecolor)
+        else:
+            #first deal with colormap
+            loccmap = plt.cm.ScalarMappable(cmap=cmap)
+            loccmap.set_array(lims)
+            loccmap.set_clim(vmin=lims[0], vmax=lims[1])
+
+    #dealing with prism sides
+            recface = np.vstack((elements[:, 0], elements[:, 1], elements[:, 4], elements[:, 3])).T
+            eltind = np.arange(0, np.shape(elements)[0])
+            recface = np.vstack((recface, np.vstack((elements[:, 1], elements[:, 2], elements[:, 5], elements[:, 4])).T))
+            eltind = np.hstack((eltind, np.arange(0, np.shape(elements)[0])))
+            recface = np.vstack((recface, np.vstack((elements[:, 2], elements[:, 0], elements[:, 3], elements[:, 5])).T))
+            eltind = np.hstack((eltind, np.arange(0, np.shape(elements)[0])))
+            tmp = np.ascontiguousarray(np.sort(recface)).view(np.dtype((np.void, recface.dtype.itemsize * recface.shape[1])))
+            _, idx, recur = np.unique(tmp, return_index=True, return_counts=True)
+            recel = recface[idx[np.where(recur == 1)]]
+            recindex = eltind[idx[np.where(recur == 1)]]
+            for i, rectangle in enumerate(recel):
+                rec = list(zip(x[rectangle], y[rectangle], z[rectangle]))
+                pl3 = Poly3DCollection([rec])
+                color = loccmap.to_rgba(data[recindex[i]])
+                pl3.set_edgecolor(color)
+                pl3.set_color(color)
+                ax.add_collection3d(pl3)
+
+    #dealing with prism bases
+            triface = np.vstack((elements[:, 0:3], elements[:, 3:6]))
+            eltind = np.arange(0, np.shape(elements)[0])
+            eltind = np.hstack((eltind, np.arange(0, np.shape(elements)[0])))
+            tmp = np.ascontiguousarray(triface).view(np.dtype((np.void, triface.dtype.itemsize * triface.shape[1])))
+            _, idx, recur = np.unique(tmp, return_index=True, return_counts=True)
+    #we keep only top and bottom elements
+            triel = triface[idx[np.where(recur == 1)]]
+            triindex = eltind[idx[np.where(recur == 1)]]
+            for i, triangle in enumerate(triel):
+                tri = list(zip(x[triangle], y[triangle], z[triangle]))
+                pl3 = Poly3DCollection([tri])
+                color = loccmap.to_rgba(data[triindex[i]])
+                pl3.set_edgecolor(color)
+                pl3.set_color(color)
+                ax.add_collection3d(pl3)
+
+            ax.set_xlim([min(x), max(x)])
+            ax.set_ylim([min(y), max(y)])
+            ax.set_zlim([min(z), max(z)])
+
+    #raise ValueError('plot_unit error: 3D element plot not supported yet')
+        return
+
+    # }}}
+    # data are on nodes {{{
+    elif datatype == 2:
+        if is2d:
+            if np.ma.is_masked(data):
+                EltMask = np.asarray([np.any(np.in1d(index, np.where(data.mask))) for index in elements])
+                triangles = mpl.tri.Triangulation(x, y, elements, EltMask)
+            else:
+                triangles = mpl.tri.Triangulation(x, y, elements)
+            if edgecolor == 'None':
+                tri = ax.tripcolor(triangles, data, cmap=cmap, norm=norm, alpha=alpha, shading='gouraud')
+            else:
+                tri = ax.tripcolor(triangles, data, cmap=cmap, norm=norm, alpha=alpha, edgecolors=edgecolor)
+        else:
+            #first deal with the colormap
+            loccmap = plt.cm.ScalarMappable(cmap=cmap)
+            loccmap.set_array(lims)
+            loccmap.set_clim(vmin=lims[0], vmax=lims[1])
+    #deal with prism sides
+            recface = np.vstack((elements[:, 0], elements[:, 1], elements[:, 4], elements[:, 3])).T
+            recface = np.vstack((recface, np.vstack((elements[:, 1], elements[:, 2], elements[:, 5], elements[:, 4])).T))
+            recface = np.vstack((recface, np.vstack((elements[:, 2], elements[:, 0], elements[:, 3], elements[:, 5])).T))
+            tmp = np.ascontiguousarray(np.sort(recface)).view(np.dtype((np.void, recface.dtype.itemsize * recface.shape[1])))
+            _, idx, recur = np.unique(tmp, return_index=True, return_counts=True)
+            recel = recface[idx[np.where(recur == 1)]]
+            for rectangle in recel:
+                rec = list(zip(x[rectangle], y[rectangle], z[rectangle]))
+                pl3 = Poly3DCollection([rec])
+                color = loccmap.to_rgba(np.mean(data[rectangle]))
+                pl3.set_edgecolor(color)
+                pl3.set_color(color)
+                ax.add_collection3d(pl3)
+
+    #deal with prism faces
+            triface = np.vstack((elements[:, 0:3], elements[:, 3:6]))
+            tmp = np.ascontiguousarray(triface).view(np.dtype((np.void, triface.dtype.itemsize * triface.shape[1])))
+            _, idx, recur = np.unique(tmp, return_index=True, return_counts=True)
+    #we keep only top and bottom elements
+            triel = triface[idx[np.where(recur == 1)]]
+            for triangle in triel:
+                tri = list(zip(x[triangle], y[triangle], z[triangle]))
+                pl3 = Poly3DCollection([tri])
+                color = loccmap.to_rgba(np.mean(data[triangle]))
+                pl3.set_edgecolor(color)
+                pl3.set_color(color)
+                ax.add_collection3d(pl3)
+
+            ax.set_xlim([min(x), max(x)])
+            ax.set_ylim([min(y), max(y)])
+            ax.set_zlim([min(z), max(z)])
+    #raise ValueError('plot_unit error: 3D element plot not supported yet')
+        return
+
+    # }}}
+    # plotting quiver {{{
+    elif datatype == 3:
+        if is2d:
+            Q = plot_quiver(x, y, data, options, ax)
+        else:
+            raise ValueError('plot_unit error: 3D node plot not supported yet')
+        return
+    # }}}
+    # plotting P1 Patch (TODO) {{{
+    elif datatype == 4:
+        print('plot_unit message: P1 patch plot not implemented yet')
+        return
+    # }}}
+    # plotting P0 Patch (TODO) {{{
+    elif datatype == 5:
+        print('plot_unit message: P0 patch plot not implemented yet')
+        return
+    # }}}
+    # plotting edges  {{{
+    elif datatype == 6:
+        if is2d:
+            triangles = mpl.tri.Triangulation(x, y, elements)
+            tri = ax.tripcolor(triangles, data, cmap=cmap, norm=norm, alpha=alpha, edgecolors=edgecolor)
+
+        else:
+            print("edge plotting is not implemented for 3D")
+        return
+    # }}}
+    else:
+        raise ValueError('datatype = %d not supported' % datatype)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_vertexnumbering.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_vertexnumbering.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_vertexnumbering.m	(revision 27955)
@@ -0,0 +1,74 @@
+function plot_vertexnumbering(md,options,width,i)
+%PLOT_VERTEXNUMBERING - plot vertex numbering
+%
+%   Usage:
+%      plot_vertexnumbering(md,options,width,i);
+%
+%   See also: PLOTMODEL
+
+%process data and model
+[x y z elements is2d isplanet]=processmesh(md,[],options);
+[vertexnumbers datatype]=processdata(md,[1:md.mesh.numberofvertices]',options);
+
+%plot
+subplot(width,width,i); 
+
+if is2d
+	%plot mesh 
+	A=elements(:,1); B=elements(:,2); C=elements(:,3);
+	patch( 'Faces', [A B C], 'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+
+	%numbering
+	X   = x;
+	Y   = y;
+	NUM = vertexnumbers;
+	if exist(options,'axis')
+		AXIS = getfieldvalue(options,'axis');
+		pos = find(X>AXIS(1) & X<AXIS(2) & Y>AXIS(3) & Y<AXIS(4));
+		X = X(pos); Y=Y(pos); NUM=NUM(pos);
+	end
+	text(X,Y,num2str(NUM),'backgroundcolor',[0.8 0.9 0.8],'HorizontalAlignment','center','VerticalAlignment','middle');
+
+	%Highlight
+	pos=getfieldvalue(options,'highlight',[]);
+	text(x(pos),y(pos),z(pos),num2str(pos(:)),...
+		'backgroundcolor',[1 0 0],'HorizontalAlignment','center','VerticalAlignment','middle');
+else
+	if size(elements,2)==6, %prisms
+		%plot mesh 
+		A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4); E=elements(:,5); F=elements(:,6);
+		patch( 'Faces', [A B C],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+		patch( 'Faces', [D E F],  'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+		patch( 'Faces', [A B E D],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+		patch( 'Faces', [B E F C],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+		patch( 'Faces', [C A D F],'Vertices', [x y z],'FaceVertexCData', [1 1 1],'FaceColor','none','EdgeColor','black');
+	elseif size(elements,2)==4, %tetras
+		A=elements(:,1); B=elements(:,2); C=elements(:,3); D=elements(:,4);
+		patch( 'Faces',[A B C],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor','black');
+		patch( 'Faces',[A B D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor','black');
+		patch( 'Faces',[B C D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor','black');
+		patch( 'Faces',[C A D],'Vertices', [x y z],'FaceVertexCData',zeros(size(x)),'FaceColor','none','EdgeColor','black');
+	end
+
+	%numbering
+	X   = x;
+	Y   = y;
+	Z   = z;
+	NUM = vertexnumbers;
+	if exist(options,'axis')
+		AXIS = getfieldvalue(options,'axis');
+		pos = find(X>AXIS(1) & X<AXIS(2) & Y>AXIS(3) & Y<AXIS(4));
+		X = X(pos); Y=Y(pos); Z=Z(pos); NUM=NUM(pos);
+	end
+	text(X,Y,Z,num2str(NUM),'backgroundcolor',[0.8 0.9 0.8],'HorizontalAlignment','center','VerticalAlignment','middle');
+
+	%Highlight
+	pos=getfieldvalue(options,'highlight',[]);
+	text(x(pos),y(pos),z(pos),num2str(pos(:)),...
+		'backgroundcolor',[1 0 0],'HorizontalAlignment','center','VerticalAlignment','middle');
+end
+
+%apply options
+options=addfielddefault(options,'title','Node numbering');
+options=addfielddefault(options,'colorbar',0);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_vertexnumbering.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_vertexnumbering.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_vertexnumbering.py	(revision 27955)
@@ -0,0 +1,53 @@
+import numpy as np
+from processmesh import processmesh
+from applyoptions import applyoptions
+
+
+def plot_vertexnumbering(md, options, fig, axgrid, gridindex):
+    '''
+    PLOT_VERTEXNUMBERING - plot vertex numbering
+
+    Usage:
+    plot_vertexnumbering(md, options, fig, axes)
+
+     See also: PLOTMODEL
+
+    '''
+    #process data and model
+    x, y, z, elements, is2d, isplanet = processmesh(md, [], options)
+
+    ax = axgrid[gridindex]
+    fig.delaxes(axgrid.cbar_axes[gridindex])
+
+    if is2d:
+        ax.triplot(x, y, elements)
+    else:
+        print('Not Implemented Yet')
+
+    XPad = 0.1 * (np.nanmax(x) - np.nanmin(x))
+    YPad = 0.1 * (np.nanmax(y) - np.nanmin(y))
+    #plot mesh
+    ax.triplot(x, y, elements)
+    ax.set_xlim((np.min(x) - XPad, np.max(x) + XPad))
+    ax.set_ylim((np.min(y) - YPad, np.max(y) + YPad))
+
+    highlightpos = options.getfieldvalue('highlight', [])
+    if highlightpos != 'none':
+        #if just one element duplicate it to avoid coloring issues
+        if type(highlightpos) == int:
+            highlightpos = [highlightpos, highlightpos]
+    #convert from to matlab numbering
+        highlightpos = [pos - 1 for pos in highlightpos]
+
+    # and numbers
+    for i, Xcoord in enumerate(x):
+        if i in highlightpos:
+            props = dict(boxstyle='circle', pad=0.1, color='r')
+        else:
+            props = dict(boxstyle='circle', pad=0.1, color='w')
+        ax.text(x[i], y[i], str(i + 1), ha='center', va='center', backgroundcolor='w', clip_on=True, bbox=props)
+
+    #apply options
+    options.addfielddefault('title', 'Vertex numbers (matlab indexation)')
+    options.addfielddefault('colorbar', 'off')
+    applyoptions(md, [], options, fig, axgrid, gridindex)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_vstime.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_vstime.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plot_vstime.m	(revision 27955)
@@ -0,0 +1,55 @@
+function plot_vstime(md,options,nlines,ncols,i)
+
+%plot mesh
+subplot(nlines,ncols,i); 
+
+%getting the variable structure
+datastruct  = getfieldvalue(options,'Input');
+structnames = strsplit_strict(datastruct,'.');
+
+%getting the position of the to be ploted point
+location=getfieldvalue(options,'position');
+if ~isnumeric(location) | numel(location)~=2,
+	error('location provided not supported (should be [x y])');
+end
+xpoint=location(1);
+ypoint=location(2);
+
+%gathering a few time related parameters
+FirstTime=md.timestepping.start_time;
+LastTime=md.timestepping.final_time;
+Dt=md.timestepping.time_step;
+OutputDt=md.settings.output_frequency*Dt;
+%Constructiion of the result structure(one step above variable in
+%the structure tree)
+solstruct = md;
+for i=2:numel(structnames)-1,
+	solstruct=solstruct.(char(structnames(i)));
+end
+
+timesteps   = numel(solstruct);
+%now build a table with the variable needed in the end plot
+Value(1:timesteps)=NaN*ones(timesteps,1);
+time(1:timesteps)=NaN*ones(timesteps,1);
+
+for t=1:timesteps,
+	
+	data=solstruct(t).(char(structnames(numel(structnames))));
+
+	[TimeData datatype]=processdata(md,data,options);
+	clear data
+	Value(t)=PointValues(md,TimeData,xpoint,ypoint);
+	time(t)=FirstTime+(t-1)*OutputDt+Dt;
+end
+
+plot(time,Value);
+clear Value time
+
+options=addfielddefault(options,'title',md.miscellaneous.name);
+options=addfielddefault(options,'ylabel',char(structnames(numel(structnames))));
+options=addfielddefault(options,'xlabel','Time');
+options=addfielddefault(options,'colorbar',0);
+options=addfielddefault(options,'axis','auto');
+options=addfielddefault(options,'xlim',[FirstTime LastTime]);
+options=addfielddefault(options,'view',2);
+applyoptions(md,[],options);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotboxpos.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotboxpos.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotboxpos.m	(revision 27955)
@@ -0,0 +1,91 @@
+function pos = plotboxpos(h)
+%PLOTBOXPOS Returns the position of the plotted axis region
+%
+% pos = plotboxpos(h)
+%
+% This function returns the position of the plotted region of an axis,
+% which may differ from the actual axis position, depending on the axis
+% limits, data aspect ratio, and plot box aspect ratio.  The position is
+% returned in the same units as the those used to define the axis itself.
+% This function can only be used for a 2D plot.  
+%
+% Input variables:
+%
+%   h:      axis handle of a 2D axis (if ommitted, current axis is used).
+%
+% Output variables:
+%
+%   pos:    four-element position vector, in same units as h
+
+% Copyright 2010 Kelly Kearney
+
+% Check input
+
+if nargin < 1
+    h = gca;
+end
+
+if ~ishandle(h) || ~strcmp(get(h,'type'), 'axes')
+    error('Input must be an axis handle');
+end
+
+% Get position of axis in pixels
+
+currunit = get(h, 'units');
+set(h, 'units', 'pixels');
+axisPos = get(h, 'Position');
+set(h, 'Units', currunit);
+
+% Calculate box position based axis limits and aspect ratios
+
+darismanual  = strcmpi(get(h, 'DataAspectRatioMode'),    'manual');
+pbarismanual = strcmpi(get(h, 'PlotBoxAspectRatioMode'), 'manual');
+
+if ~darismanual && ~pbarismanual
+    
+    pos = axisPos;
+    
+else
+
+    dx = diff(get(h, 'XLim'));
+    dy = diff(get(h, 'YLim'));
+    dar = get(h, 'DataAspectRatio');
+    pbar = get(h, 'PlotBoxAspectRatio');
+
+    limDarRatio = (dx/dar(1))/(dy/dar(2));
+    pbarRatio = pbar(1)/pbar(2);
+    axisRatio = axisPos(3)/axisPos(4);
+
+    if darismanual
+        if limDarRatio > axisRatio
+            pos(1) = axisPos(1);
+            pos(3) = axisPos(3);
+            pos(4) = axisPos(3)/limDarRatio;
+            pos(2) = (axisPos(4) - pos(4))/2 + axisPos(2);
+        else
+            pos(2) = axisPos(2);
+            pos(4) = axisPos(4);
+            pos(3) = axisPos(4) * limDarRatio;
+            pos(1) = (axisPos(3) - pos(3))/2 + axisPos(1);
+        end
+    elseif pbarismanual
+        if pbarRatio > axisRatio
+            pos(1) = axisPos(1);
+            pos(3) = axisPos(3);
+            pos(4) = axisPos(3)/pbarRatio;
+            pos(2) = (axisPos(4) - pos(4))/2 + axisPos(2);
+        else
+            pos(2) = axisPos(2);
+            pos(4) = axisPos(4);
+            pos(3) = axisPos(4) * pbarRatio;
+            pos(1) = (axisPos(3) - pos(3))/2 + axisPos(1);
+        end
+    end
+end
+
+% Convert plot box position to the units used by the axis
+
+temp = axes('Units', 'Pixels', 'Position', pos, 'Visible', 'off', 'parent', get(h, 'parent'));
+set(temp, 'Units', currunit);
+pos = get(temp, 'position');
+delete(temp);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotchannels.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotchannels.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotchannels.m	(revision 27955)
@@ -0,0 +1,136 @@
+function plotchannels(md,channelarea,varargin)
+%PLOTCHANNELS - plot GlaDS channel area
+%
+%   Usage:
+%      plotchannels(md,channelarea,options)
+%      plotchannels(md,channeldischarge,options)
+%
+%   List of supported options
+%      - 'min' minimum channel area displayed (default is max(channelarea))
+%      - 'max' maximum channel area displayed (default is min(channelarea))
+%      - 'colormap' colormap used (default is 'gray')
+%      - 'linewidth' linewidth (default is 2)
+%      - 'quiver' only used for discharge(default is 2)
+%
+%   Example:
+%      plotchannels(md,md.results.TransientSolution(end).ChannelArea,'min',15,'max',36);
+%      plotchannels(md,md.results.TransientSolution(end).ChannelDischarge,'min',15,'max',36,'quiver',1);
+
+%Process options
+options = pairoptions(varargin{:});
+
+%is quiver?
+isquiver = (getfieldvalue(options,'quiver',0)==1);
+linewidth = getfieldvalue(options,'linewidth',2);
+
+%define level
+if isquiver
+	level = abs(channelarea);
+else
+	level = channelarea;
+end
+
+%Some processing
+Min = getfieldvalue(options,'min',min(level));
+Max = getfieldvalue(options,'max',max(level));
+
+%Create colormap
+options=addfielddefault(options,'colormap',flipud(gray()));
+palette = getcolormap(options);
+numcolors=size(palette,1);
+levels=round_ice(linspace(Min,Max,numcolors+1),2);
+
+colorind=zeros(length(level),1);
+for i=1:numcolors
+	pos=find((level>=levels(i)) & (level<=levels(i+1)) );
+	colorind(pos)=i;
+end
+colorind(find(level>levels(end)))=numcolors;
+
+%Reconstruct edges
+% {{{
+tic
+%Maximum number of edges
+maxnbf = 3*md.mesh.numberofelements;
+%Initialize intermediaries
+edges = zeros(maxnbf,3);
+exchange = zeros(maxnbf,1);
+%Chaining algorithm
+head_minv = -1*ones(md.mesh.numberofvertices,1);
+next_face = zeros(maxnbf,1);
+%Initialize number of faces
+nbf = 0;
+for i=1:md.mesh.numberofelements
+	for j=1:3
+		%Get the two indices of the edge number j of the ith triangle
+		v1 = md.mesh.elements(i,j);
+		if(j==3)
+			v2 = md.mesh.elements(i,1);
+		else
+			v2 = md.mesh.elements(i,j+1);
+		end
+		%sort
+		if(v2<v1)
+			v3=v2; v2=v1; v1=v3;
+		end
+		%This edge a priori has not been processed yet
+		exists = false;
+		%Go through all processed faces connected to v1 and check whether we have seen this edge yet
+		e=head_minv(v1);
+		while(e~=-1)
+			if(edges(e,2)==v2)
+				exists = true;
+				break;
+			end
+			e=next_face(e);
+		end
+		%If this edge is new, add it to the lists
+		if(~exists)
+			%Update edges
+			edges(nbf+1,1) = v1; %vertex 1
+			edges(nbf+1,2) = v2; %vertex 2
+			edges(nbf+1,3) = i;  %element 1 (ignore second one)
+			if(v1~=md.mesh.elements(i,j)) exchange(nbf+1)=1; end
+			%Update chain
+			next_face(nbf+1) = head_minv(v1);
+			head_minv(v1)    = nbf+1;
+			%Increase number of faces
+			nbf=nbf+1;
+		end
+	end
+end
+
+edges = edges(1:nbf,:);
+pos = find(exchange);
+v3 = edges(pos,1);
+edges(pos,1) = edges(pos,2);
+edges(pos,2) = v3;
+toc
+% }}}
+
+%Change edges formatting so that plot looks ok
+myedges = [edges(:,1:2) edges(:,1)]';
+
+%Loop over all levels and plot
+for i=1:numcolors
+	pos=find(colorind==i);
+	hprime=plot(md.mesh.x(myedges(:,pos)),md.mesh.y(myedges(:,pos)),'-','Color',palette(i,:),'LineWidth',linewidth);
+	if i==1; hold on; end
+
+	if isquiver
+		x1 = md.mesh.x(edges(pos,1)); x2 = md.mesh.x(edges(pos,2));
+		y1 = md.mesh.y(edges(pos,1)); y2 = md.mesh.y(edges(pos,2));
+		len = sqrt( (x2-x1).^2 + (y2-y1).^2);
+
+		xq = mean([x1 x2],2);
+		yq = mean([y1 y2],2);
+		tx = sign(channelarea(pos)).*(x2-x1)./len .* len/10;
+		ty = sign(channelarea(pos)).*(y2-y1)./len .* len/10;
+		px = -ty;
+		py = tx;
+
+		%hprime=quiver(xq,yq,tx,ty,'color',palette(i,:),'showarrowhead','on','autoscale','off');
+		num = length(pos);
+		patch('Faces',reshape(1:3*num,num,3),'Vertices',[[xq;xq+(-tx+px);xq+(-tx-px)],[yq;yq+(-ty+py);yq+(-ty-py)]],'FaceColor',palette(i,:),'EdgeColor','none');
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotdoc.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotdoc.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotdoc.js	(revision 27955)
@@ -0,0 +1,117 @@
+function plotdoc() { //{{{
+	//PLOTDOC - plot documentation
+	//
+	//   Usage:
+	//      plotdoc()
+	
+	//TODO: rename innermask/outermask/maskzero and combine
+
+	console.log('   Plot usage: plotmodel(model,varargin)');
+	console.log('   Options: ');
+	console.log('       "canvasid": canvas id');
+	console.log('       "data" : what we want to plot');
+	console.log('       	Available values for "data" are: ');
+	console.log('       		- any field of the model structure. ex: plot(md,"data","vel"), or plot(md,"data",md.initialization.vel)');
+	console.log('       		- "mesh": draw mesh using trisurf');
+	console.log('       		- "quiver": quiver plot');
+	console.log('       "backgroundcolor": plot background color. (default "lightcyan", ex: "green","blue")');
+	console.log('       "brush": specify brush options (default {"strength":0.075,"falloff":0.5})');
+	console.log('       	"enabled": toggle brush (default false, ex: true)');
+	console.log('       	"strength": value that brush will change data points by (ex: 0.075)');
+	console.log('       	"falloff": multiplier that brush will decrease strength by for each successive point away from brush center (ex: 0.5)');
+	console.log('       "clouds": specify brush options (default {"strength":0.075,"falloff":0.5})');
+	console.log('       	"enabled": toggle clouds (default false, ex: true)');
+	console.log('       	"height": height to spawn clouds at (ex: 7500)');
+	console.log('       	"quantity": quantity of clouds to spawn (ex: 10)');
+	console.log('       "caxis": modify colorbar range (array of type [a, b] where b>=a)');
+	console.log('       "colorbar": add colorbar (default "off", ex: "on", "off")');
+	console.log('       "colorbarid": colorbar canvas id (string)');
+	console.log('       "colorbartitle": colorbar title (string)');	
+	console.log('       "colorbarnticks": number of colorbar ticks (default 6, ex: 2, 10)');	
+	console.log('       "colorbarprecision": colorbar label digit precision (default 3, ex: 1, 4)');	
+	console.log('       "colorbarinnerlabels": choose whether labels are inside colorbar (default "off", ex: "on", "off")');
+	console.log('       "colorbarfontsize": specify colorbar font size (default 1, ex: 14, 22)');
+	console.log('       "colorbarfontcolor": specify colorbar font color (default "black", ex: "green","blue")');
+	console.log('       "colorbarwidth": multiplier (default 1) to the default width colorbar');
+	console.log('       "colorbarheight": multiplier (default 1) to the default height colorbar');
+	console.log('       "colormap": same as standard matlab option (default "jet", ex: "hsv","cool","spring","gray","Ala","Rignot",...)');
+	console.log('       "controlsensitivity": sensitivty of view/zoom changes as a percentage of default (default 1, ex: 0.5, 2.75)');
+	console.log('       "dataMarker": object cotaining data marker parameters. See webgl.js for defaults. (ex: {"enabled":true,"format":["<div id="sim-plot"></div>"],"labels":["thickness","velocity","value"],"animated":true})');
+	console.log('       	"enabled": toggle data marker displays (default true, ex: false)');
+	console.log('       	"hasMarker": whether or not the data marker has a marker (default true, ex: false)');
+	console.log('       	"markerImgPath": path to image to use for marker (default "/canvas/data-markers/data-marker.svg")');
+	console.log('       	"hasTooltip": whether or not the data marker has a tooltip (default false, ex: true)');
+	console.log('       	"tooltipFormat": C-style format string to be used when on calls to vesl.DataMarker.tooltipContent to format passed data points (default "", ex: ["X: %.2e<br>Y: %.2e<br>Z: %.2e])');	
+	console.log('       	"width": width, in pixels, of the data marker (default 32)');	
+	console.log('       	"height": height, in pixels, of the data marker (default 32)');
+	console.log('       "displayview": print view value to console (default "off", ex: "on", "off")');
+	console.log('       "displayzoom": print zoom value to console (default "off", ex: "on", "off")');
+	console.log('       "edgecolor": same as standard matlab option EdgeColor (default "black", ex: color name: "blue" or RGB array: [0.5, 0.2, 0.8])');
+	console.log('       "heightscale": scaling factor to accentuate height. (default 1, ex: 0.5, 100)');
+	console.log('       "linewidth": line width for mesh, quiver, and contour plots, currently limited by WebGL to 1. (default 1, ex: 2, 5)');
+	console.log('       "log": value of log (default 10, ex: 2, Math.E)');
+	console.log('       "mask": list of flags of size numberofnodes or numberofelements. Only "true" values are plotted ');
+	console.log('       "movies": object cotaining transient plot animation options (ex: {"fps":4,"loop":true})');
+	console.log('       "maskzeros": object cotaining transient plot animation options (ex: "enabled":true,"color":[1.0, 1.0, 1.0, 1.0],"tolerance":1e-3,"zeroValue":0.5})');
+	console.log('       	"enabled": toggle maskzeros (default false, ex: true)');
+	console.log('       	"color": RGBA color value array with ranges 0.0 to 1.0 (ex: [1.0, 1.0, 1.0, 1.0])');
+	console.log('       	"tolerance": values within this tolerance of the zeroValue will be masked. (default: 1e-3, ex: 2.5e-2)');
+	console.log('       	"zeroValue": the percentage value with range 0.0, to 1.0 of the caxis value around which the data will be masked with the color. (default: 0.5, ex: 0, 1.0, 0.75)');
+	console.log('       "innermask*": Special mask that colors all parts of a data mesh below a height a certain color. provide innermaskheight and innermaskcolor options also (default "off", ex: "on", "off")');
+	console.log('       "outermask*": Special mask that colors all parts of a overlay mesh below a height a certain color. provide outermaskheight and outermaskcolor options also (default "off", ex: "on", "off")');
+	console.log('       "overlay": overlay a radar amplitude image behind (default "off", ex: "on", "off")');
+	console.log('       "overlay_image": path to overlay image (default "", ex: "./img/radar.png")');
+	console.log('       "quiver": add quiver plot overlay for velocities. (default "off", ex: "on", "off")');
+	console.log('       "scaling": scaling factor used by quiver plots. Default is 0.4');
+	console.log('       "opacity": transparency coefficient 0.0 to 1.0, the lower, the more transparent. (default 1.0, ex: 0.5, 0.25)');
+	console.log('       "render": a object containing a list of default object to render. (default {}, ex: {"sky", "space"})');
+	console.log('       	"sky": render the atmosphere. (ex: {"enabled":true})');
+	console.log('       		"enabled": toggle sky (default false, ex: true)');
+	console.log('       	"space": render space. (ex: {"enabled":true})');
+	console.log('       		"enabled": toggle space (default false, ex: true)');
+	console.log('       	"coastlines": render coastlines. (ex: {"enabled":true})');
+	console.log('       		"enabled": toggle coastlines (default false, ex: true)');
+	console.log('       		"scale": scale coastlines factor (default 1.0, ex: 1.004)');
+	console.log('       		"x": x coordinate array. (ex: [0.0, 10.0, -25.0,...])');
+	console.log('       		"y": y coordinate array. (ex: [0.0, 10.0, -25.0,...])');
+	console.log('       		"z": z coordinate array. (ex: [0.0, 10.0, -25.0,...])');
+	console.log('       	"city": render city. (ex: {"enabled":true})');
+	console.log('       		"enabled": toggle city (default false, ex: true)');
+	console.log('       		"size": radius of city sphere, in meters (default 1.0, ex: 150000)');
+	console.log('       		"color": color of city sphere (ex: "magenta")');
+	console.log('       		"x": x coordinate of city. (ex: 0.0)');
+	console.log('       		"y": y coordinate of city. (ex: 0.0)');
+	console.log('       		"z": z coordinate of city. (ex: 6356700.0)');
+	console.log('       	"cities": render cities. (ex: {"enabled":true})');
+	console.log('       		"enabled": toggle cities (default false, ex: true)');
+	console.log('       		"size": radius of cities spheres, in meters (default 1.0, ex: 80000)');
+	console.log('       		"color": color of cities spheres (ex: "darkviolet")');
+	console.log('       		"x": x coordinate array of cities. (ex: [0.0, 10.0, -25.0,...])');
+	console.log('       		"y": y coordinate array of cities. (ex: [0.0, 10.0, -25.0,...])');
+	console.log('       		"z": z coordinate array of cities. (ex: [0.0, 10.0, -25.0,...])');
+	console.log('       	"graticule": render graticule. (ex: {"enabled":true})');
+	console.log('       		"enabled": toggle graticule (default false, ex: true)');
+	console.log('       		"scale": scale graticule factor (default 1.0, ex: 1.004)');
+	console.log('       		"x": x coordinate array. (ex: [0.0, 10.0, -25.0,...])');
+	console.log('       		"y": y coordinate array. (ex: [0.0, 10.0, -25.0,...])');
+	console.log('       		"z": z coordinate array. (ex: [0.0, 10.0, -25.0,...])');
+	console.log('       "view": object cotaining view parameters. See webgl.js for defaults. (ex: {"position":[0.0,0.0,0.0],"rotation":[0.0,0.0,0.0],"zoom":1.0,"zoomLimits":[0.01,100.0],"azimuthLimits":[-180,180.0],"elevationLimits":[-90,90.0],"panningEnabled":false,"twod":false})');
+	console.log('       	"position": camera position (ex: [0.0,0.0,0.0])');
+	console.log('       	"rotation": camera rotation (ex: [0.0,0.0,0.0])');
+	console.log('       	"zoom": initial camera zoom as a percentage of default (default 1, ex: 1.5, 0.01)');
+	console.log('       	"zoomLimits": zoom view limits (ex: [0.05, 10])');
+	console.log('      	 	"azimuthLimits": zoom view limits (ex: [0.05, 10])');
+	console.log('       	"elevationLimits": zoom view limits (ex: [0.05, 10])');
+	console.log('       	"panningEnabled": controls panning with shift + drag mouse or pan gestures (default: false, ex: true)');
+	console.log('       	"twod": controls twod orthographic view (default: false, ex: true)');
+	console.log('       "xlim": x coordinates to fit inside camera (ex: [0, 500])');
+	console.log('       "ylim": y coordinates to fit inside camera (ex: [0, 500])');
+	console.log('       "zlim": z coordinates to fit inside camera (ex: [0, 500])');
+	console.log('       "transient_field_data": array of data objects (ex: [[0.0,1.0, 2.5, 12.0...],[0.0,1.0, 2.5, 12.0...],...])');
+	console.log('       "textlabels": plot text labels rendered in 3d space, using an array of text/coordinate pairs (ex: [{"pos":[0.0,0.0,0.0],"text":"origin"}])');
+	
+	console.log('  ');
+	console.log('   Examples:');
+	console.log('       plotmodel(md,"data","vel","data","mesh","view#2",3,"colorbar#all","on")');
+	console.log('       plotmodel(md,"data",md.geomtery.surface)');
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotdoc.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotdoc.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotdoc.m	(revision 27955)
@@ -0,0 +1,171 @@
+function plotdoc()
+%PLOTDOC - plot documentation
+%
+%   Usage:
+%      plotdoc()
+
+disp(' ');
+disp('   Plot usage: plotm(model,varargin)');
+disp('   Options: ');
+disp('       ''figure'': figure number');
+disp('       ''data'' : what we want to plot');
+disp('                Available values for ''data'' are: ');
+disp('                  - any field of the model structure. ex: plot(md,''data'',''vel''), or plot(md,''data'',md.initialization.vel)');
+disp('                  - ''basal_drag'': plot the basal drag on the bed (in kPa) based on the velocity in md.initialization');
+disp('                  - ''basal_dragx'' or ''basal_dragy'' : plot a component of the basal drag on the bed (in kPa)');
+disp('                  - ''boundaries'': this will draw all the segment boundaries to the model, including rifts.');
+disp('                  - ''icefront'': this will show segments that are used to define the icefront of the model (Neumann boundary conditions).');
+disp('                  - ''BC'': this will draw all the boundary conditions (Dirichlet and Neumann).');
+disp('                  - ''deviatoricstress_tensor'': plot the components of the deviatoric stress tensor (tauxx,tauyy,tauzz,tauxy,tauxz,tauyz) if computed');
+disp('                  - ''deviatoricstress_principal'': plot the deviatoricstress tensor principal axis and principal values');
+disp('                  - ''deviatoricstress_principalaxis1'': arrow plot the first principal axis of the deviatoricstress tensor(replace 1 by 2 or 3 if needed)');
+disp('                  - ''driving_stress'': plot the driving stress (in kPa)');
+disp('                  - ''elements_type'': model used for each element');
+disp('                  - ''elementnumbering'': numbering of elements');
+disp('                  - ''vertexnumbering'': numbering of vertices');
+disp('                  - ''highlightelements'': to highlight elements to highlight the element list');
+disp('                  - ''highlightvertices'': to highlight vertices (use highlight option to enter the vertex list');
+disp('                  - ''mesh'': draw mesh using trisurf');
+disp('                  - ''referential'': stressbalance referential');
+disp('                  - ''riftvel'': velocities along rifts');
+disp('                  - ''riftrelvel'': relative velocities along rifts');
+disp('                  - ''riftpenetration'': penetration levels for a fault');
+disp('                  - ''riftfraction'': fill fractions for every node of the rifts');
+disp('                  - ''rifts'': plot mesh with an offset so that rifts are visible');
+disp('                  - ''strainrate_tensor'': plot the components of the strainrate tensor (exx,eyy,ezz,exy,exz,eyz) if computed');
+disp('                  - ''strainrate_principal'': plot the strainrate tensor principal axis and principal values)');
+disp('                  - ''strainrate_principalaxis1'': arrow plot the first principal axis of the strainrate tensor(replace 1 by 2 or 3 if needed)');
+disp('                  - ''stress_tensor'': plot the components of stress tensor (sxx,syy,szz,sxy,sxz,syz) if computed');
+disp('                  - ''stress_principal'': plot the stress tensor principal axis and principal values');
+disp('                  - ''stress_principalaxis1'': arrow plot the first principal axis of the stress tensor(replace 1 by 2 or 3 if needed)');
+disp('                  - ''transient_results'': this will display all the time steps of a transient run (use steps to specify the steps requested)');
+disp('                  - ''transient_vel'': this will display the velocity for the time steps requested in ''steps'' of a transient run');
+disp('                  - ''transient_vel'': vel can be by any field of the transient results (vx, vy, vz, vel, temperature, melting, pressure, bed, thickness, surface)');
+disp('                  - ''transient_field'': dynamic plot of results. specify ''steps'' option, as fell as ''field'' (defaults are all steps, for ''Vel'' field)');
+disp('                  - ''transient_movie'': this will display the time steps of a given field of a transient run');
+disp('                  - ''transient_movie_field'': field to be displayed when doing  transient_movie data display');
+disp('                  - ''transient_movie_output'': filename if output is desired for movie');
+disp('                  - ''transient_movie_time'': time for each image (default 2 seconds)');
+disp('                  - ''thermaltransient_results'': this will display all the time steps of a thermal transient run');
+disp('                  - ''qmuhistnorm'': histogram normal distribution. needs option qmudata');
+disp('                  - ''qmumean'': plot of mean distribution in sampling analysis with scaled response. needs option qmudata for descriptor');
+disp('                  - ''qmustddev'': plot of stddev distribution in sampling analysis with scaled response. needs option qmudata for descriptor');
+disp('                  - ''part_hist'': partitioning node and area histogram');
+disp('                  - ''quiver'': quiver plot');
+
+disp('       ''axis'': same as standard matlab option (''equal'',''off'',''equal on'',...)');
+disp('       ''basin'': zoom on a given basin (''pineislandglacier'',''ronneiceshelf'', use isbasin to identify a basin');
+disp('                 ''basindeltax'': in m');
+disp('                 ''showbasins'': write lables for every existing basin name around the center of the plot');
+disp('       ''caxis'': modify  colorbar range. (array of type [a b] where b>=a)');
+disp('       ''backgroundcolor'': plot background color. (default is ''w'')');
+disp('       ''figurebackgroundcolor'': figure background color. (default is ''none'')');
+disp('       ''coord'':  ''xy'' (default) or ''latlon''');
+disp('       ''colorlevels'':  N or {value1,valu2,value3,...} used if quiver, use different colors for the given number of colors or limits');
+disp('       ''colorbar'': add colorbar (string ''on'' or ''off'')');
+disp('       ''colorbartitle'': colorbar title (string)');
+disp('       ''colorbarYlabel'': colorbar Y label (string)');
+disp('       ''colorbarpos'': [x,y,dx,dy] where x,y,dx and dy are within [0 1]');
+disp('       ''colorbarcornerposition'': ''West'',''North'',etc ...');
+disp('       ''colorbartitlerotation'': -90, etc ...');
+disp('       ''colorbarfontsize'': specify colorbar fontsize');
+disp('       ''colorbarwidth'': multiplier (default 1) to the default width colorbar');
+disp('       ''colorbarheight'': multiplier (default 1) to the default height colorbar');
+disp('       ''colormap'': same as standard matlab option (''jet'',''hsv'',''cool'',''spring'',''gray'',''Ala'',''Rignot'',...)');
+disp('       ''contourlevels'': N or {value1,valu2,value3,...} add the contours of the specified values or N contours');
+disp('       ''contourticks'': ''on'' or ''off'' to display the ticks of the contours');
+disp('       ''contouronly'': ''on'' or ''off'' to display the contours on a white background');
+disp('       ''contourcolor'': ticks and contour color');
+disp('       ''density'': density of quivers (one arrow every N nodes, N integer)');
+disp('       ''inset'': add an inset (zoom) of the current figure if 1 (use ''insetx'', ''insety'' and ''insetpos'' to determine the inset position and content)');
+disp('       ''insetx'': [min(x) max(x)] where min(x) and max(x) are values determining the inset content');
+disp('       ''insety'': [min(y) max(y)] where min(y) and max(y) are values determining the inset content');
+disp('       ''insetpos'': [x,y,dx,dy] where x,y,dx and dy are within [0 1]');
+disp('       ''streamlines'': N (number of stream lines) or {[x1 y1],...} (coordinates of seed points) add streanlines on current figure');
+disp('       ''edgecolor'': same as standard matlab option EdgeColor (color name: ''black'' or RGB array: [0.5 0.2 0.8])');
+disp('       ''fontsize'': same as standard matlab option (10,14,...)');
+disp('       ''fontweight'': same as standard matlab option (normal: ''n'',bold: ''b'',light: ''l'',demi: ''d'')');
+disp('       ''fontcolor'': same as standard matlab option');
+disp('       ''highlight'': highlights certain nodes or elements when using ''nodenumbering'' or ''elementnumbering'' or ''highlightnodes '' or ''highlightelements'' option');
+disp('       ''resolution'': resolution used by section value (array of type [horizontal_resolution vertical_resolution])');
+disp('                       horizontal_resolution must be in meter, and vertical_resolution a number of layers');
+disp('       ''showsection'': show section used by ''sectionvalue'' (string ''on'' or a number of labels)');
+disp('       ''sectionvalue'': give the value of data on a profile given by an Argus file (string ''Argusfile_name.exp'')');
+disp('       ''profile'': give the value of data along a vertical profile ([xlocation ylocation])');
+disp('       ''smooth'': smooth element data (string ''yes'' or integer)');
+disp('       ''title'': same as standard matlab option');
+disp('       ''view'': same as standard matlab option (ex: 2, 3 or [90 180]');
+disp('       ''xlim'': same as standard matlab option (ex: [0 500])');
+disp('       ''ylim'': same as standard matlab option');
+disp('       ''zlim'': same as standard matlab option');
+disp('       ''xlabel'': same as standard matlab option (ex:''km'')');
+disp('       ''ylabel'': same as standard matlab option');
+disp('       ''xticklabel'': specifiy xticklabel');
+disp('       ''yticklabel'': specifiy yticklabel');
+disp('       ''overlay'': yes or no. This will overlay a radar amplitude image behind');
+disp('       ''overlay_image'': path to overlay image. provide overlay_xlim, overlay_ylim, overlay_xposting and overlay_yposting options also');
+disp('       ''contrast'': (default 1) coefficient to add contrast to the radar amplitude image used in overlays');
+disp('       ''highres'': resolution of overlayed radar amplitude image (default is 0, high resolution is 1).');
+disp('       ''alpha'': transparency coefficient (the higher, the more transparent). Default is 1.5');
+disp('       ''scaling'': scaling factor used by quiver plots. Default is 0.4');
+disp('       ''autoscale'': set to ''off'' to have all the quivers with the same size. Default is ''on''');
+disp('       ''expdisp'': plot exp file on top of a data plot. provide exp file as an argument (use a cell of strings if more than one)');
+disp('       ''expstyle'': marker style for expdisp plot (use a cell of strings if more than one)');
+disp('       ''linewidth'': line width for expdisp plot (use a cell of strings if more than one)');
+disp('       ''border'': size of display border (in pixels). active only for overlay plots');
+disp('       ''text'': print string, use a cell of strings if more than one');
+disp('       ''textposition'': [x y] position of text, use a cell of strings if more than one');
+disp('       ''textsize'':  same as standard ''FontSize'' matlab option applied to text, use a cell of strings if more than one');
+disp('       ''textweight'':  same as standard ''FontWeight'' matlab option applied to text, use a cell of strings if more than one');
+disp('       ''textcolor'':  same as standard ''color'' matlab option applied to text, use a cell of strings if more than one');
+disp('       ''textrotation'':  same as standard ''Rotation'' matlab option applied to text, use a cell of strings if more than one');
+disp('       ''mask'': list of flags of size numberofnodes or numberofelements. Only ''true'' values are plotted ');
+disp('       ''nan'': value assigned to NaNs (convenient when plotting BC)');
+disp('       ''partition'': a partion vector. generates overlay plot of partition edges');
+disp('       ''log'': value of log');
+disp('       ''latlon'': ''on'' or {latstep lonstep [resolution [color]]} where latstep,longstep and resolution are in degrees, color is a [r g b] array');
+disp('       ''latlonnumbering'': ''on'' or {latgap longap colornumber latangle lonangle} where latgap and longap are pixel gaps for the numbers,'); 
+disp('       ''latlonclick'': ''on'' to click on latlon ticks positions');
+disp('                   colornumber is a [r g b] array and latangle and lonangle are angles to flip the numbers');
+disp('       ''northarrow'': add an arrow pointing north, ''on'' for default value or [x0 y0 length [ratio width fontsize]] where (x0,y0) are the coordinates of the base, ratio=headlength/length');
+disp('       ''offset'': mesh offset used by ''rifts'', default is 500');
+disp('       ''scaleruler'': add a scale ruler, ''on'' for default value or [x0 y0 length width numberofticks] where (x0,y0) are the coordinates of the lower left corner');
+disp('       ''showregion'': show domain in Antarctica on an inset, use ''insetpos'' properties');
+disp('       ''visible'': ''off'' to make figure unvisible, default is ''on''');
+disp('       ''wrapping'': repeat ''n'' times the colormap (''n'' must be an integer)');
+disp('       ''unit'': by default, in m, otherwise, ''km'' is available');
+disp('       ''legend_position'': by default, ''NorthEasth''');
+disp('       ''qmudata'': data for qmu  plots.');
+disp('                  {dresp1   ,dresp2  ,hmin,hmax,hnint} or {samp,desc,mu,sigma,hmin,hmax,hnint}');
+disp('                  where dresp1 is a structure array of responses (where we need samp and desc), ');
+disp('                  dresp2 is a structure array of responses (where we only need mu and sigma)');
+disp('                  hmin,hmax and hnint are the minimum, maximum and number of intervals of the histogram (optional)');
+disp('       ''figposition'': position of figure: ''fullscreen'', ''halfright'', ''halfleft'', ''portrait'', ''landscape'',... (hardcoded in applyoptions.m)');
+disp('       ''offsetaxispos'': offset of current axis position to get more space (ex: [-0.02 0  0.04 0])');
+disp('       ''axispos'': axis position to get more space');
+disp('       ''hmin'': (numeric, minimum for histogram)');
+disp('       ''hmax'': (numeric, maximum for histogram)');
+disp('       ''hnint'': (numeric, number of intervals for histogram)');
+disp('       ''ymin1'': (numeric, minimum of histogram y-axis)');
+disp('       ''ymax1'': (numeric, maximum of histogram y-axis)');
+disp('       ''ymin2'': (numeric, minimum of cdf y-axis)');
+disp('       ''ymax2'': (numeric, maximum of cdf y-axis)');
+disp('       ''cdfplt'': (char, ''off'' to turn off cdf line plots)');
+disp('       ''cdfleg'': (char, ''off'' to turn off cdf legends)');
+disp('       ''segmentnumbering'': (''off'' by default)');
+disp('       ''kmlgroundoverlay'': (''off'' by default)');
+disp('       ''kmlfilename'': (''tempfile.kml'' by default)');
+disp('       ''kmlroot'': (''./'' by default)');
+disp('       ''kmlimagename'': (''tempimage'' by default)');
+disp('       ''kmlimagetype'': (''png'' by default)');
+disp('       ''kmlresolution'': (1 by default)');
+disp('       ''kmlfolder'': (''Ground Overlay'' by default)');
+disp('       ''kmlfolderdescription'': ('''' by default)');
+disp('       ''kmlgroundoverlayname'': ('''' by default)');
+disp('       ''kmlgroundoverlaydescription'': ('''' by default)');
+
+disp('       any options (except ''data'') can be followed by ''#i'' where ''i'' is the subplot number, or ''#all'' if applied to all plots');
+disp('  ');
+disp('   Examples:');
+disp('       plotmodel(md,''data'',''vel'',''data'',''mesh'',''view#2'',3,''colorbar#all'',''on'',''axis#1'',''off equal'')');
+disp('       plotmodel(md,''data'',''highlightelements'',''highlight'',[1 4 10],''expdisp'',{''domain1.exp'' ''domain2.exp'' ''domain3.exp''})');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotdoc.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotdoc.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotdoc.py	(revision 27955)
@@ -0,0 +1,176 @@
+def plotdoc():
+    '''PLOTDOC - plot documentation
+    %As of now it is more a TODO list
+    %   Usage:
+    %      plotdoc()
+    '''
+    pydata = {'quiver': ' quiver plot give data and a vector array [Vx, Vy]',
+              'mesh': ' draw mesh using trisurf',
+              'BC': ' this will draw all the boundary conditions (Dirichlet and Neumann).',
+              'elementnumbering': ' numbering of elements (matlab indices)',
+              '3D disclaimer': '3D is implemented with plot3d for now this is not optimal and may change to mayavi at some point. The impelementation is on the development side for now so expect some issue and question your plotting before you results.'}
+    # TODOdata = {'basal_drag': ' plot the basal drag on the bed (in kPa) based on the velocity in md.initialization',
+    #             'basal_dragx or basal_dragy': ' plot a component of the basal drag on the bed (in kPa)',
+    #             'boundaries': ' this will draw all the segment boundaries to the model, including rifts.',
+    #             'icefront': ' this will show segments that are used to define the icefront of the model (Neumann boundary conditions).',
+    #             'deviatoricstress_tensor': ' plot the components of the deviatoric stress tensor (tauxx, tauyy, tauzz, tauxy, tauxz, tauyz, if computed',
+    #             'deviatoricstress_principal': ' plot the deviatoricstress tensor principal axis and principal values',
+    #             'deviatoricstress_principalaxis1': ' arrow plot the first principal axis of the deviatoricstress tensor(replace 1 by 2 or 3 if needed)',
+    #             'driving_stress': ' plot the driving stress (in kPa)',
+    #             'elements_type': ' model used for each element',
+    #             'highlightvertices': ' to highlight vertices (use highlight option to enter the vertex list',
+    #             'referential': ' stressbalance referential',
+    #             'riftvel': ' velocities along rifts',
+    #             'riftrelvel': ' relative velocities along rifts',
+    #             'riftpenetration': ' penetration levels for a fault',
+    #             'riftfraction': ' fill fractions for every node of the rifts',
+    #             'rifts': ' plot mesh with an offset so that rifts are visible',
+    #             'strainrate_tensor': ' plot the components of the strainrate tensor (exx, eyy, ezz, exy, exz, eyz) if computed',
+    #             'strainrate_principal': ' plot the strainrate tensor principal axis and principal values)',
+    #             'strainrate_principalaxis1': ' arrow plot the first principal axis of the strainrate tensor(replace 1 by 2 or 3 if needed)',
+    #             'stress_tensor': ' plot the components of stress tensor (sxx, syy, szz, sxy, sxz, syz) if computed',
+    #             'stress_principal': ' plot the stress tensor principal axis and principal values',
+    #             'stress_principalaxis1': ' arrow plot the first principal axis of the stress tensor(replace 1 by 2 or 3 if needed)',
+    #             'transient_results': ' this will printlay all the time steps of a transient run (use steps to specify the steps requested)',
+    #             'transient_vel': ' vel can be by any field of the transient results (vx, vy, vz, vel, temperature, melting, pressure, bed, thickness, surface)',
+    #             'transient_field': ' dynamic plot of results. specify ''steps'' option, as fell as ''field'' (defaults are all steps, for ''Vel'' field)',
+    #             'transient_movie': ' this will printlay the time steps of a given field of a transient run',
+    #             'transient_movie_field': ' field to be printlayed when doing  transient_movie data printlay',
+    #             'transient_movie_output': ' filename if output is desired for movie',
+    #             'transient_movie_time': ' time for each image (default 2 seconds)',
+    #             'thermaltransient_results': ' this will printlay all the time steps of a thermal transient run',
+    #             'qmuhistnorm': ' histogram normal distribution. needs option qmudata',
+    #             'qmumean': ' plot of mean distribution in sampling analysis with scaled response. needs option qmudata for descriptor',
+    #             'qmustddev': ' plot of stddev distribution in sampling analysis with scaled response. needs option qmudata for descriptor',
+    #             'part_hist': ' partitioning node and area histogram'}
+
+    pyoptions = {'axis': " show ('on') or hide ('off') axes",
+                 'caxis': " modify  colorbar range. (array of type [a b] where b >= a)",
+                 'colorlevels': " N, number of levels to use",
+                 'colorbar': " add colorbar (string 'on', 'off' or 'one')",
+                 'axes_pad': " spacing between axes (default is 0.25)",
+                 'colorbartitle': " colorbar title (string)",
+                 'colorbarticks': " set colorbar ticks manually (list)",
+                 'colorbarfontsize': " specify colorbar fontsize",
+                 'colormap': " change the default colormap ('viridis' is the default)",
+                 'contourlevels': " N or [value1, ...] add the contours of the specified values or N contours",
+                 'streamlines': " TOFIX argument does nothing",
+                 'edgecolor': " color of mesh edges. RGB tuple or standard string",
+                 'fontsize': " fontsize for the title",
+                 'fontweight': " fontweight for the title 'normal', 'bold'",
+                 'fontcolor': " TODO",
+                 'highlight': " highlights certain nodes or elements when using 'vetrexnumbering' or 'elementnumbering' or 'highlightvertices ' or 'highlightelements' option",
+                 'title': " subplot title (string)",
+                 'xlim': " limits of X axis (all subplots) (ex:  [0, 500])",
+                 'ylim': " limits of Y axis (all subplots) (ex:  [0, 500])",
+                 'xlabel': " X axis title",
+                 'ylabel': " Y axis title",
+                 'scaling': " scaling factor used by quiver plots.",
+                 'quivercol': " color of quiver arrows, 'values' give value colored arrows",
+                 'text': " print string or list of strings",
+                 'textposition': " [x, y] position of text, list if several texts (position betwee 0 and 1)",
+                 'textsize': " text fontsize TOFIX ",
+                 'textweight': " text fontweight",
+                 'textcolor': " text color",
+                 'textrotation': " text rotation angle",
+                 'mask': " condition. Only 'true' values are plotted ",
+                 'log': " cutoff value for log",
+                 'backgroundcolor': " plot background color. RGB tuple or standard string",
+                 'expdisp': " path (or list of paths) to the exp file to be plotted ",
+                 'explinewidth': " linewidth ",
+                 'explinestyle': " matplotlib linestyle string ",
+                 'explinecolor': " matplotlib color string ",
+                 'expfill': " (True / False) fill a closed contour ",
+                 'expfillcolor': " Color for a filled contour, only used if expfill is True ",
+                 'expfillalpha': " alpha transparency for filled contour ",
+                 'overlay': " True / False. Overlay a georeferenced image (radar / visible) ",
+                 'overlay_image': " path to overlay image ",
+                 'overlayhist': " plot a histogram of overlay image, used for setting overlaylims ",
+                 'overlaylims': " normalized limits to clip and stretch contrast of overlay image (in [0, 1], ex. [0.25, 0.75]) ",
+                 'alpha': " set transparency of plotted data (in [0, 1]) ",
+                 'vertexnumbering': ' numbering of vertices',
+                 'elementnumbering': ' numbering of elements (matlab indices)',
+                 'highlightelements': ' to highlight elements to highlight the element list',
+                 'layer': "number of the layer to display for 3D runs"}
+
+    # TODOoptions = {'basin': " zoom on a given basin ('pineislandglacier', 'ronneiceshelf', use isbasin to identify a basin",
+    #                'figurebackgroundcolor': " figure background color. (default is 'none', ",
+    #                'coord': "  'xy' (default) or 'latlon'",
+    #                'colorbarpos': " [x, y, dx, dy] where x, y, dx and dy are within [0 1]",
+    #                'colorbarcornerposition': " 'West', 'North', etc ...",
+    #                'colorbartitlerotation': " - 90, etc ...",
+    #                'colorbarwidth': " multiplier (default 1) to the default width colorbar",
+    #                'colorbarheight': " multiplier (default 1) to the default height colorbar",
+    #                'contourticks': " 'on' or 'off' to printlay the ticks of the contours",
+    #                'contouronly': " 'on' or 'off' to printlay the contours on a white background",
+    #                'contourcolor': " ticks and contour color",
+    #                'density': " density of quivers (one arrow every N nodes, N integer)",
+    #                'inset': " add an inset (zoom) of the current figure if 1 (use 'insetx', 'insety' and 'insetpos' to determine the inset position and content)",
+    #                'insetx': " [min(x) max(x)] where min(x) and max(x) are values determining the inset content",
+    #                'insety': " [min(y) max(y)] where min(y) and max(y) are values determining the inset content",
+    #                'insetpos': " [x, y, dx, dy] where x, y, dx and dy are within [0 1]",
+    #                'resolution': " resolution used by section value (array of type [horizontal_resolution vertical_resolution])",
+    #                'showsection': " show section used by 'sectionvalue' (string 'on' or a number of labels)",
+    #                'sectionvalue': " give the value of data on a profile given by an Argus file (string 'Argusfile_name.exp', ",
+    #                'profile': " give the value of data along a vertical profile ([xlocation ylocation])",
+    #                'smooth': " smooth element data (string 'yes' or integer)",
+    #                'view': " same as standard matlab option (ex:  2, 3 or [90 180]",
+    #                'zlim': " same as standard matlab option",
+    #                'xticklabel': " specifiy xticklabel",
+    #                'yticklabel': " specifiy yticklabel",
+    #                'contrast': " (default 1) coefficient to add contrast to the radar amplitude image used in overlays",
+    #                'highres': " resolution of overlayed radar amplitude image (default is 0, high resolution is 1).",
+    #                'alpha': " transparency coefficient (the higher, the more transparent). Default is 1.5",
+    #                'scaling': " scaling factor used by quiver plots. Default is 0.4",
+    #                'autoscale': " set to 'off' to have all the quivers with the same size. Default is 'on'",
+    #                'linewidth': " line width for expprint plot (use a cell of strings if more than one)",
+    #                'border': " size of printlay border (in pixels). active only for overlay plots",
+    #                'nan': " value assigned to NaNs (convenient when plotting BC)",
+    #                'partition: " a partion vector. generates overlay plot of partition edges",
+    #                'latlon': " 'on' or {latstep lonstep [resolution [color]]} where latstep, longstep and resolution are in degrees, color is a [r g b] array",
+    #                'latlonnumbering': " 'on' or {latgap longap colornumber latangle lonangle} where latgap and longap are pixel gaps for the numbers",
+    #                'latlonclick': " 'on' to click on latlon ticks positions colornumber is a [r g b] array and latangle and lonangle are angles to flip the numbers",
+    #                'northarrow': " add an arrow pointing north, 'on' for default value or [x0 y0 length [ratio width fontsize]] where (x0, y0) are the coordinates of the base, ratio = headlength / length",
+    #                'offset': " mesh offset used by 'rifts', default is 500",
+    #                'scaleruler': " add a scale ruler, 'on' for default value or [x0 y0 length width numberofticks] where (x0, y0) are the coordinates of the lower left corner",
+    #                'showregion': " show domain in Antarctica on an inset, use 'insetpos' properties",
+    #                'visible': " 'off' to make figure unvisible, default is 'on'",
+    #                'wrapping': " repeat 'n' times the colormap ('n' must be an integer)",
+    #                'unit': " by default, in m, otherwise, 'km' is available",
+    #                'legend_position': " by default, 'NorthEasth'",
+    #                'qmudata': " ",
+    #                'figposition': " position of figure:  'fullscreen', 'halfright', 'halfleft', 'portrait', 'landscape', ... (hardcoded in applyoptions.m)",
+    #                'offsetaxispos': " offset of current axis position to get more space (ex:  [ -0.02 0  0.04 0])",
+    #                'axispos': " axis position to get more space",
+    #                'hmin': " (numeric, minimum for histogram)",
+    #                'hmax': " (numeric, maximum for histogram)",
+    #                'hnint': " (numeric, number of intervals for histogram)",
+    #                'ymin1': " (numeric, minimum of histogram y - axis)",
+    #                'ymax1': " (numeric, maximum of histogram y - axis)",
+    #                'ymin2': " (numeric, minimum of cdf y - axis)",
+    #                'ymax2': " (numeric, maximum of cdf y - axis)",
+    #                'cdfplt': " (char, 'off' to turn off cdf line plots)",
+    #                'cdfleg': " (char, 'off' to turn off cdf legends)",
+    #                'segmentnumbering': " ('off' by default)",
+    #                'kmlgroundoverlay': " ('off' by default)",
+    #                'kmlfilename': " ('tempfile.kml' by default)",
+    #                'kmlroot': " ('./' by default)",
+    #                'kmlimagename': " ('tempimage' by default)",
+    #                'kmlimagetype': " ('png' by default)",
+    #                'kmlresolution': " (1 by default)",
+    #                'kmlfolder': " ('Ground Overlay' by default)",
+    #                'kmlfolderdescription': " ('' by default)",
+    #                'kmlgroundoverlayname': " ('' by default)",
+    #                'kmlgroundoverlaydescription': "N/A by default')"}
+
+    print("   Plot usage:  plotmodel(model, varargin)")
+    print("   plotting is done with couples of keywords values, the type and style of data to display is given by one (or several) of the followings")
+    print("   Options:  ")
+    print("     'data' :  and a model field or one of the following options.")
+    for key in list(pydata.keys()):
+        print((" - {} :  {}".format(key, pydata[key])))
+    print("")
+    print("   The general look of the plot is then given by the following keywords")
+    for key in sorted(pyoptions):
+        print((" - {} :  {}".format(key, pyoptions[key])))
+    print("       any options (except 'data') can be followed by '  #i' where 'i' is the subplot number, or '  #all' if applied to all plots")
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotgemb.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotgemb.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotgemb.m	(revision 27955)
@@ -0,0 +1,67 @@
+function plotgemb(results,fieldname,varargin);
+
+	options=pairoptions(varargin{:});
+
+	zerolevel= getfieldvalue(options,'zerolevel',0);
+	numlevels= getfieldvalue(options,'numlevels',-1);
+	element= getfieldvalue(options,'element',1);
+	maxstep=getfieldvalue(options,'maxstep',length(results));
+
+	%number of results: 
+	nt=length(results); 
+
+	for i=1:nt, 
+
+		z0=zerolevel;
+
+		%retrieve time, and delta around time: 
+		time=results(i).time;
+		if i<nt,
+			deltat=results(i+1).time-time;
+		else
+			deltat=time-results(i-1).time;			
+		end
+
+		%figure out number of levels: 
+		dz=results(i).SmbDz(element,:);
+		if numlevels==-1,
+			nlevels=length(dz); 
+		else
+			nlevels=numlevels;
+		end
+        dz=flipud(dz(1:nlevels)') ;
+
+		%retrieve values: 
+		field=results(i).(fieldname);
+		T=flipud(field(element,1:nlevels)');
+
+		%build vertical values: 
+		nz=length(dz); 
+
+		xA=(time-deltat/2)*ones(nz,1);
+		xB=(time+deltat/2)*ones(nz,1);
+		xC=(time+deltat/2)*ones(nz,1);
+		xD=(time-deltat/2)*ones(nz,1);
+
+		zA=zeros(nz,1);
+		zB=zeros(nz,1);
+		zC=zeros(nz,1);
+		zD=zeros(nz,1);
+		
+        
+		for j=1:nz, 
+			zA(j)=z0;
+			zB(j)=z0;
+			zC(j)=z0+dz(j);
+			zD(j)=z0+dz(j);
+			z0=z0+dz(j);
+        end       
+    
+
+		patch([xA,xB,xC,xD]',[zA,zB,zC,zD]',[T,T,T,T]','EdgeColor','none');
+
+		if i>=maxstep,
+			break;
+		end
+    end
+    
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotmodel.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotmodel.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotmodel.js	(revision 27955)
@@ -0,0 +1,55 @@
+'use strict';
+
+function plotmodel(md) { //{{{
+	let args            = Array.prototype.slice.call(arguments); // Convert arguments to array 
+    let canvas          = null;
+    let ncols           = 0;
+    let nlines          = 0;
+    let numberofplots   = 0;
+    let options         = new plotoptions(args.slice(1, args.length)); // Process options
+    let subplotwidth    = Math.ceil(Math.sqrt(options.numberofplots)); // Get number of subplots
+    
+	// Get figure number and number of plots
+	numberofplots = options.numberofplots;
+
+	// If nlines and ncols specified, then bypass.
+	if (options.list[0].exist('nlines')) {
+		nlines = options.list[0].getfieldvalue('nlines');
+	} else {
+		nlines = Math.ceil(numberofplots / subplotwidth);
+	}
+	
+	if (options.list[0].exist('ncols')){
+		ncols = options.list[0].getfieldvalue('ncols');
+	} else {
+		ncols = subplotwidth;
+	}
+	
+	//check that nlines and ncols were given at the same time!
+	if ((options.list[0].exist('ncols') && !options.list[0].exist('nlines')) 
+	    || ((options.list[0].exist('nlines') && !options.list[0].exist('ncols')))) {
+    	    throw Error('plotmodel error message: nlines and ncols need to be specified together, or not at all');
+    }
+
+	// Go through subplots
+	if (numberofplots) {
+		// Go through all data plottable and close window if an error occurs
+
+		let canvases = [];
+		for (let i = 0; i < numberofplots; ++i) {
+			canvases[i] = document.getElementById(options.list[i].getfieldvalue('canvasid'));
+			canvases[i].state.dispatchEvent('onPlotModelStart', canvases[i], options.list[i]);
+		}
+		for (let i = 0; i < numberofplots; ++i) {
+			canvases[i].state.dispatchEvent('onPlotManagerStart', canvases[i], options.list[i]);
+			plot_manager(options.list[i].getfieldvalue('model',md), options.list[i], subplotwidth, nlines, ncols, i);
+			canvases[i].state.dispatchEvent('onPlotManagerEnd', canvases[i], options.list[i]);
+
+			// List all unused options
+			options.list[i].displayunused();
+		}
+		for (let i = 0; i < numberofplots; ++i) {
+			canvases[i].state.dispatchEvent('onPlotModelEnd', canvases[i], options.list[i]);
+		}
+	}
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotmodel.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotmodel.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotmodel.m	(revision 27955)
@@ -0,0 +1,130 @@
+function plotmodel(md,varargin)
+%At command prompt, type plotdoc for help on documentation.
+
+%First process options
+options=plotoptions(varargin{:});
+
+%Get figure number and number of plots
+figurenumber=options.figurenumber;
+numberofplots=options.numberofplots;
+
+%get number of subplots
+subplotwidth=ceil(sqrt(numberofplots));
+
+%if nlines and ncols specified, then bypass.
+if ~exist(options.list{1},'nlines') & ~exist(options.list{1},'ncols')
+	 nlines=ceil(numberofplots/subplotwidth);
+	 ncols=subplotwidth;
+else
+	nlines=getfieldvalue(options.list{1},'nlines',NaN);
+	ncols=getfieldvalue(options.list{1},'ncols',NaN);
+	if isnan(nlines), nlines = ceil(numberofplots/ncols);  end
+	if isnan(ncols),  ncols  = ceil(numberofplots/nlines); end
+end
+
+%check that nlines and ncols were given at the same time!
+if ((exist(options.list{1},'ncols') & ~exist(options.list{1},'ncols')) | (~exist(options.list{1},'ncols') & exist(options.list{1},'ncols')))
+	error('plotmodel error message: nlines and ncols  need to be specified together, or not at all');
+end
+
+% Add option for subplot, only support one subplot per one plotmodel call
+subindex = 0;
+if (exist(options.list{1},'subplot'))
+    subops = getfieldvalue(options.list{1},'subplot',NaN);
+    nlines = subops(1);
+    ncols = subops(2);
+    subindex = subops(3);
+    % change the width
+    subplotwidth = ncols;
+    % Turn off new figure option for subplot
+    options.list{1}=addfield(options.list{1},'figurestatement','off');
+    % Turn off clf option for subplot
+    options.list{1}=addfield(options.list{1},'clf','off');
+end
+
+%go through subplots
+if numberofplots,
+
+	%Create figure 
+	if (strcmpi(getfieldvalue(options.list{1},'figurestatement','on'),'on'))
+		f=figure(figurenumber); 
+	else
+		f=gcf;
+	end
+	if strcmpi(getfieldvalue(options.list{1},'clf','on'),'on'),
+		clf;
+	end
+	if strcmpi(getfieldvalue(options.list{1},'visible','on'),'off'),
+		set(f,'Visible','Off');
+	end
+
+	if exist(options.list{1},'figposition'), % {{{
+		figposition=getfieldvalue(options.list{1},'figposition');
+		if ischar(figposition),
+			if strcmpi(figposition,'larour'),
+				set(gcf,'Position',[1604 4 1594 1177]);
+			elseif strcmpi(figposition,'larour2'),
+				set(gcf,'Position',[756    62   827   504]);
+			elseif strcmpi(figposition,'mathieu'),
+				set(gcf,'Position',[300 1 1580 1150]);
+			elseif strcmpi(figposition,'byron'),
+				set(gcf,'Position',[40 1580 560*1.25 420*1.25]);  %left, bottom, width, height; W=560 H=420 is default
+			elseif strcmpi(figposition,'fullscreen'),
+				set(gcf,'Position',get(0,'ScreenSize'));
+			elseif strcmpi(figposition,'halfright'),
+				screen=get(0,'ScreenSize');
+				left=screen(1); bott=screen(2); widt=screen(3); heig=screen(4)-25;
+				set(gcf,'Position',fix([left+widt/2 bott widt/2 heig]));
+			elseif strcmpi(figposition,'halfleft'),
+				screen=get(0,'ScreenSize');
+				left=screen(1); bott=screen(2); widt=screen(3); heig=screen(4)-25;
+				set(gcf,'Position',fix([left bott widt/2 heig]));
+			elseif strcmpi(figposition,'square'),
+				screen=get(0,'ScreenSize');
+				left=screen(1); bott=screen(2); widt=min(screen(3)-25,screen(4)-25);
+				set(gcf,'Position',fix([left+(screen(3)-widt) bott widt widt]));
+			elseif strcmpi(figposition,'portrait'),
+				%reformat with letter paper size (8.5" x 11")
+				screen=get(0,'ScreenSize');
+				left=screen(1); bott=screen(2); widt=screen(3); heig=screen(4)-25;
+				portrait=fix([left+widt-(heig*8.5/11) bott heig*8.5/11 heig]);
+				set(gcf,'Position',portrait)
+			elseif strcmpi(figposition,'landscape'),
+				%reformat with letter paper size (8.5" x 11")
+				screen=get(0,'ScreenSize');
+				left=screen(1); bott=screen(2); widt=screen(3); heig=screen(4)-25;
+				landscape=fix([left+widt-(heig*11/8.5) bott heig*11/8.5 heig]);
+				set(gcf,'Position',landscape)
+			else
+				disp('''figposition'' string not supported yet');
+			end
+		else
+			set(gcf,'Position',figposition);
+		end
+	elseif strcmpi(getenv('USER'),'inwoo')
+		set(gcf,'Position',[910 242 560 420]);
+	end % }}}
+
+	%Use zbuffer renderer (smoother colors) and white background
+	set(f,'Renderer','zbuffer','color',getfieldvalue(options.list{1},'figurebackgroundcolor','w'));
+
+	%Go through all data plottable and close window if an error occurs
+	try,
+		for i=1:numberofplots,
+            if subindex
+                plot_manager(getfieldvalue(options.list{i},'model',md),options.list{i},subplotwidth,nlines,ncols,subindex);
+            else
+                plot_manager(getfieldvalue(options.list{i},'model',md),options.list{i},subplotwidth,nlines,ncols,i);
+            end
+            %List all unused options
+			if getfieldvalue(options.list{i},'displayunused',1),
+				displayunused(options.list{i})
+			end
+		end
+	catch me,
+		%figure(figurenumber),close;
+		rethrow(me);
+	end
+else
+	error('plotmodel error message: no output data found.');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotmodel.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotmodel.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/plotmodel.py	(revision 27955)
@@ -0,0 +1,142 @@
+from math import ceil, sqrt
+
+try:
+    import matplotlib.pyplot as plt
+    from mpl_toolkits.axes_grid1 import ImageGrid
+except ImportError:
+    print("could not import pyplot, matplotlib has not been installed, no plotting capabilities enabled")
+import numpy as np
+
+from plot_manager import plot_manager
+from plotoptions import plotoptions
+
+
+def plotmodel(md, *args):
+    '''
+    PLOTMODEL - At command prompt, type 'plotdoc()' for additional
+    documentation.
+
+    TODO:
+        - Fix 'plotdoc()', as it is not currently working.
+    '''
+
+    #First process options
+    options = plotoptions(*args)
+
+    #Get figure number and number of plots
+    figurenumber = options.figurenumber
+    numberofplots = options.numberofplots
+
+    #get the "optimal" number of subfigures in a row/col
+    if (np.nanmax(md.mesh.x) - np.nanmin(md.mesh.x)) > (np.nanmax(md.mesh.y) - np.nanmin(md.mesh.y)):
+        maxrow = ceil(sqrt(numberofplots))
+        maxcol = ceil(numberofplots / maxrow)
+    else:
+        maxcol = ceil(sqrt(numberofplots))
+        maxrow = ceil(numberofplots / maxcol)
+
+    #If any  of nrows or ncols are given we use that
+    if options.list[0].exist('nrows'):
+        nrows = options.list[0].getfieldvalue('nrows')
+        if options.list[0].exist('ncols'):
+            ncols = options.list[0].getfieldvalue('ncols')
+        else:
+            ncols = ceil(numberofplots / nrows)
+    elif options.list[0].exist('ncols'):
+        ncols = options.list[0].getfieldvalue('ncols')
+        nrows = ceil(numberofplots / ncols)
+    else:
+        nrows = maxrow
+        ncols = maxcol
+    ncols = int(ncols)
+    nrows = int(nrows)
+
+    # Go through plots
+    #
+    # NOTE: The following is where Python + matplolib differs substantially in
+    #       implementation and inteface from MATLAB.
+    #
+    # Sources:
+    # - https://matplotlib.org/api/_as_gen/mpl_toolkits.axes_grid1.axes_grid.ImageGrid.html
+    #
+    if numberofplots:
+        #if figsize specified
+        if options.list[0].exist('figsize'):
+            figsize = options.list[0].getfieldvalue('figsize')
+            fig = plt.figure(figurenumber, figsize=(figsize[0], figsize[1]))
+        else:
+            fig = plt.figure(figurenumber)
+        fig.clf()
+
+        backgroundcolor = options.list[0].getfieldvalue('backgroundcolor', (0.7, 0.7, 0.7))
+        fig.set_facecolor(backgroundcolor)
+
+        # options needed to define plot grid
+        plotnum = options.numberofplots
+        if plotnum == 1:
+            plotnum = None
+
+        # NOTE: The inline comments for each of the following parameters are
+        #       taken from https://matplotlib.org/api/_as_gen/mpl_toolkits.axes_grid1.axes_grid.ImageGrid.html
+        #
+        direction = options.list[0].getfieldvalue('direction', 'row')  # {"row", "column"}, default: "row"
+        axes_pad = options.list[0].getfieldvalue('axes_pad', 0.25)  # float or (float, float), default : 0.02; Padding or (horizonal padding, vertical padding) between axes, in inches
+        add_all = options.list[0].getfieldvalue('add_all', True)  # bool, default: True
+        share_all = options.list[0].getfieldvalue('share_all', True)  # bool, default: False
+        label_mode = options.list[0].getfieldvalue('label_mode', 'L')  # {"L", "1", "all"}, default: "L"; Determines which axes will get tick labels: "L": All axes on the left column get vertical tick labels; all axes on the bottom row get horizontal tick labels;. "1": Only the bottom left axes is labelled. "all": all axes are labelled.
+
+        # Translate MATLAB colorbar mode to matplotlib
+        #
+        # TODO:
+        # - Add 'edge' option (research if there is a corresponding option in
+        #   MATLAB)?
+        #
+        colorbar = options.list[0].getfieldvalue('colorbar', 'on')  # on, off (single)
+
+        if colorbar == 'on':
+            colorbar = 'each'
+        elif colorbar == 'one':
+            colorbar = 'single'
+        elif colorbar == 'off':
+            colorbar = 'None'
+        else:
+            raise RuntimeError('plotmodel error: colorbar mode \'{}\' is not a valid option'.format(colorbar))
+
+        cbar_mode = colorbar # {"each", "single", "edge", None }, default: None
+        cbar_location = options.list[0].getfieldvalue('colorbarpos', 'right') # {"left", "right", "bottom", "top"}, default: "right"
+        cbar_pad = options.list[0].getfieldvalue('colorbarpad', 0.025) # float, default: None
+        cbar_size = options.list[0].getfieldvalue('colorbarsize', '5%') # size specification (see Size.from_any), default: "5%"
+
+        # NOTE: Second parameter is:
+        #
+        #   rect(float, float, float, float) or int
+        #
+        # The axes position, as a (left, bottom, width, height) tuple or as a
+        # three-digit subplot position code (e.g., "121").
+        #
+        axgrid = ImageGrid(
+            fig,
+            111,
+            nrows_ncols=(nrows, ncols),
+            direction=direction,
+            axes_pad=axes_pad,
+            share_all=share_all,
+            label_mode=label_mode,
+            cbar_mode=cbar_mode,
+            cbar_location=cbar_location,
+            cbar_size=cbar_size,
+            cbar_pad=cbar_pad
+        )
+
+        if cbar_mode == 'None':
+            for ax in axgrid.cbar_axes:
+                fig._axstack.remove(ax)
+        for i, ax in enumerate(axgrid.axes_all):
+            try:
+                plot_manager(options.list[i].getfieldvalue('model', md), options.list[i], fig, axgrid, i)
+            except KeyError:
+                print("Too many axes present, we delete the overflow")
+                fig.delaxes(axgrid[i])
+        fig.show()
+    else:
+        raise Exception('plotmodel error message: no output data found.')
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/processdata.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/processdata.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/processdata.js	(revision 27955)
@@ -0,0 +1,268 @@
+function processdata(md,data,options){ //{{{
+	//PROCESSDATA - process data to be plotted
+	//
+	//   datatype = 1 -> elements
+	//   datatype = 2 -> nodes
+	//   datatype = 3 -> node quivers
+	//   datatype = 4 -> patch
+	//   datatype = 5 -> nodes transient
+	//
+	//   Usage:
+	//      var array = processdata(md,data,options);
+	//      var data = array[0]; 
+	//      var datatype = array[1];
+	//
+	//   See also: PLOTMODEL, PROCESSMESH
+
+	//check format
+	if ( data.length ==0 | data === [] | typeof data === 'number' | ArrayAnyNaN(data) ){
+		throw Error('plotmodel error message: data provided is empty');
+	}
+
+	//Process NaN if any (do not know before mask is applied)
+	if (options.exist('nan')){
+		var valuefornan=options.getfieldvalue('nan',0);
+		for (var i=0;i<data.length;i++)if(IsNaN(data[i]))data[i]=valuefornan;
+	}
+
+	//special case for mesh 2dvertical
+	if (md.mesh.domaintype() === '2Dvertical'){
+		return processdata(md.mesh,md,data,options);
+	}
+
+	//needed later on
+	var numberofvertices2d, numberofelements2d;
+	if ('numberofvertices2d' in md.mesh){
+		numberofvertices2d=md.mesh.numberofvertices2d; 
+		numberofelements2d=md.mesh.numberofelements2d; 
+	}
+	else {
+		numberofvertices2d=NaN;
+		numberofelements2d=NaN;
+	}
+
+	//initialize datatype
+	var datatype=0;
+
+	//get datasize
+	var datasize=data.length;
+
+	//transpose data if necessary
+	if (data[0].length > data.length){
+		throw Error('processdata error message: you need to tranpose your data!');
+	}
+
+
+	//check length
+	if (datasize != md.mesh.numberofvertices & datasize !=md.mesh.numberofelements & datasize!=md.mesh.numberofvertices*6 & 
+			((md.mesh.domaintype() === '3D') & !(datasize==numberofelements2d | datasize==numberofvertices2d))){
+		throw Error('plotmodel error message: data not supported yet');
+	}
+
+
+	//quiver?
+	if (Array.isArray(data[0])){
+		datatype=3;
+
+		//check number of columns, add zeros if necessary,
+		if (md.mesh.dimension()==3){
+			if (data[0].length==2){
+				data=[data, NewArrayFill(data.length,1)];
+			}
+			else if (data[0].length!=3){
+				throw Error('plotmodel error message: data provided should have 2 or 3 columns for quiver plot, and 1 for regular plot');
+			}
+		}
+	}
+
+	//treat the case datasize(1)=6*nodes
+	if (datasize==6*md.mesh.numberofvertices){
+		//keep the only norm of data
+		data1=new Array(md.mesh.numberofvertices);
+		data2=new Array(md.mesh.numberofvertices);
+		data=new Array(md.mesh.numberofvertices);
+		for(var i=0;i<md.mesh.numberofvertices;i++){
+			data1[i]=data[6*i+0];
+			data2[i]=data[6*i+1];
+			data[i]=Math.sqrt(pow(data1[i],2),pow(data2[i],2));
+		}
+		datasize=md.mesh.numberofvertices;
+		//---> go to node data
+	}
+
+	//treat the case datasize(1)=nodes2d
+	if (md.mesh.dimension()==3 & datasize==numberofvertices2d){
+		data=project3d(md,'vector',data,'type','node');
+		datasize=md.mesh.numberofvertices;
+		//---> go to node data
+	}
+
+	//treat the case datasize=nodes2d
+	if (md.mesh.dimension()==3 & datasize==numberofelements2d){
+		data=project3d(md,'vector',data,'type','element');
+		datasize=md.mesh.numberofelements;
+		//---> go to node data
+	}
+
+	//smoothing?
+	if (options.exist('smooth')){
+		data=averaging(md,data,options.getfieldvalue('smooth'));
+		datasize=md.mesh.numberofvertices;
+		//---> go to node data
+	}
+
+	//element data
+	if (datasize==md.mesh.numberofelements & !Array.isArray(data[0])){
+
+		//Initialize datatype if non patch
+		if(datatype!=4 & datatype!=5){
+			datatype=1;
+		}
+
+		//Mask?
+		if(options.exist('mask')){
+			flags=options.getfieldvalue('mask');
+			if(flags.length==md.mesh.numberofvertices){
+				for(var i=0;i<md.mesh.numberofelements;i++){
+					var nanify=0;
+					for(var j=0;j<md.mesh.elements[0].length;j++){
+						if (flags[md.mesh.elements[i][j]-1]==0)nanify=1;
+					}
+					if(nanify) for(var j=0;j<md.mesh.elements[0].length;j++)data[md.mesh.elements[i][j]-1]=NaN;
+				}
+			}
+			else if (flags.length==md.mesh.numberofelements){
+				for(var i=0;i<md.mesh.numberofelements;i++)if (flags[i]==0)data[i]=NaN;
+			}
+			else{
+				console.log('plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements)');
+			}
+		}
+
+		//log?
+		if (options.getfieldvalue('log','off')!='off'){
+			var bounds=options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+			for(var i=0;i<md.mesh.numberofelements;i++)if(data[i]<bounds[0])data[i]=bounds[0];
+			for(var i=0;i<md.mesh.numberofelements;i++)if(data[i]<=0){
+				throw Error("Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])");
+			}
+			for(var i=0;i<md.mesh.numberofelements;i++){
+				if(!IsNaN(data[i])){
+					data[i]=Math.log10(data[i])/Math.log10(options.getfieldvalue('log',10));
+				}
+			}
+		}
+	}
+
+	//node data
+	if (datasize==md.mesh.numberofvertices & !Array.isArray(data[0])){
+		datatype=2;
+
+		//Mask?
+		if (options.exist('mask')){
+			flags=options.getfieldvalue('mask');
+			if (flags.length==md.mesh.numberofvertices){
+				for(var i=0;i<md.mesh.numberofvertices;i++){
+					if(flags[i]==0)data[i]=NaN;
+				}
+			}
+			else if( length(flags)==md.mesh.numberofelements){
+				for(var i=0;i<md.mesh.numberofelements;i++){
+					if(flags[i]==0){
+						for(var j=0;j<md.mesh.elements[0].length;j++){
+							data[md.mesh.elements[i][j]-1]=NaN;
+						}
+					}
+				}
+			}
+			else{
+				console.log("plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements");
+			}
+		}
+
+		//log?
+		if (options.getfieldvalue('log','off')!='off'){
+			var bounds=options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(data[i]<bounds[0])data[i]=bounds[0];
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(data[i]>bounds[1])data[i]=bounds[1];
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(data[i]<=0){
+				throw Error("Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])");
+			}
+			for(var i=0;i<md.mesh.numberofvertices;i++){
+			   data[i]=Math.log10(data[i])/Math.log10(options.getfieldvalue('log',10));
+			}
+		}
+	}
+	
+	//node transient data
+    if (datasize==md.mesh.numberofvertices+1){
+        datatype=5;
+		
+		//log?	
+		if (options.getfieldvalue('log','off')!='off'){
+			var bounds=options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+			for(var i=0;i<md.mesh.numberofvertices;i++) {
+				for(var j=0;j<data[i].length;j++) {
+					if(data[i][j]<bounds[0])data[i][j]=bounds[0];
+				}
+			}
+			for(var i=0;i<md.mesh.numberofvertices;i++) {
+				for(var j=0;j<data[i].length;j++) {
+					if(data[i][j]>bounds[1])data[i][j]=bounds[1];
+				}
+			}
+			for(var i=0;i<md.mesh.numberofvertices;i++) {
+				for(var j=0;j<data[i].length;j++) {
+					if(data[i][j]<=0) {
+						throw Error("Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])");
+					}
+				}
+			}
+			for(var i=0;i<md.mesh.numberofvertices;i++){
+				for(var j=0;j<data[i].length;j++) {
+					data[i][j]=Math.log10(data[i][j])/Math.log10(options.getfieldvalue('log',10));
+				}
+			}
+		}
+    }
+	
+
+	//layer projection? 
+	if (options.getfieldvalue('layer',0)>=1){
+		data=project2d(md,data,options.getfieldvalue('layer')); //project onto 2d mesh
+	}
+
+	//control arrow density if quiverplot: not done yet since conversion of matlab to javascript.
+	/*if (datatype==3 & options.exist('density')){
+		databak=data;
+		data=NewArrayFill(datasize,NaN);
+
+		density=options.getfieldvalue('density');
+		data(1:density:end,:)=databak(1:density:end,:);
+		clear databak
+	}*/
+
+	/*if (datatype==3){ //not done yet
+		//Mask?
+		if (options.exist('mask')){
+			flags=options.getfieldvalue('mask');
+			pos=find(~flags);
+			if (flags.length==md.mesh.numberofvertices){
+			   data(pos,:)=NaN;
+			}
+			else if (flags.length==md.mesh.numberofelements){
+				data(md.mesh.elements(pos,:),:)=NaN;
+			}
+			else{
+				console.log("plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements");
+			}
+		}
+	}*/
+
+	//OK, if datatype=0 error out
+	if (datatype==0){
+	   throw Error('data provided not recognized or not supported');
+	}
+
+	return [data,datatype];
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/processdata.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/processdata.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/processdata.m	(revision 27955)
@@ -0,0 +1,246 @@
+function [data datatype]=processdata(md,data,options)
+%PROCESSDATA - process data to be plotted
+%
+%   datatype = 1 -> elements
+%   datatype = 2 -> nodes
+%   datatype = 3 -> node quivers
+%   datatype = 4 -> patch
+%
+%   Usage:
+%      [data datatype]=processdata(md,data,options);
+%
+%   See also: PLOTMODEL, PROCESSMESH
+
+%check format
+if (iscell(data) | isempty(data) | length(data)==0 | (length(data)==1 & ~isstruct(data) & isnan(data))),
+	error('plotmodel error message: data provided is empty');
+end
+
+%specials for struct
+if isstruct(data),
+	disp('data provided is a struct with the following fields:');
+	F=fieldnames(data);
+	for i=1:numel(F),
+		disp(['   ' num2str(i) ': ' F{i} ]);
+	end
+	choice=input(['please enter the field number? (between 1 and ' num2str(numel(F)) ')  ']);
+	[data datatype]=processdata(md,data(1).(F{choice}),options);
+end
+if issparse(data)
+	data = full(data);
+end
+
+%Process NaN if any (do not know before mask is applied)
+if exist(options,'nan')
+	data(find(isnan(data)))=getfieldvalue(options,'nan',0);
+end
+
+%special case for mesh 2dvertical
+if strcmp(domaintype(md.mesh),'2Dvertical'),
+	[data datatype] = processdata(md.mesh,md,data,options);
+	return;
+end
+
+%special case for coord latlong: 
+if strcmpi(getfieldvalue(options,'coord','xy'),'latlon') | strcmpi(getfieldvalue(options,'coord','xy'),'latlong'),
+	[data datatype] = processdatalatlong(md,data,options);
+	return;
+end
+
+%needed later on
+if isprop(md.mesh,'numberofvertices2d'), 
+	numberofvertices2d=md.mesh.numberofvertices2d; 
+	numberofelements2d=md.mesh.numberofelements2d; 
+else 
+	numberofvertices2d=NaN;
+	numberofelements2d=NaN;
+end
+numberofvertices = md.mesh.numberofvertices;
+numberofelements = md.mesh.numberofelements;
+if exist(options,'amr'),
+	step = getfieldvalue(options,'amr');
+	numberofvertices = numel(md.results.TransientSolution(step).MeshX);
+	numberofelements = numel(md.results.TransientSolution(step).MeshElements);
+end
+
+%initialize datatype
+datatype=0;
+
+%get datasize
+datasize=size(data);
+
+%transpose data if necessary
+if (size(data,2) > size(data,1)),
+	data=data';
+end
+datasize=size(data);
+
+%convert to double if necessary
+if ~isnumeric(data);
+	disp('processdata info message: data is not numeric (logical?). Converted to double');
+	data=double(data);
+end
+
+%check length
+if datasize(1)~=numberofvertices & datasize(1)~=numberofelements & datasize(1)~=numberofvertices*6 & (strcmp(md.mesh.domaintype(),'3D') & ~(datasize(1)==numberofelements2d | datasize(1)==numberofvertices2d))
+	error('plotmodel error message: data not supported yet');
+end
+
+%quiver or patch?
+if datasize(2)>1
+	if datasize(2)==2 | datasize(2)==3
+		datatype=3;
+		%check number of columns, add zeros if necessary,
+		if (dimension(md.mesh)==3)
+			if datasize(2)==2,
+				data=[data, zeros(datasize(1),1)];
+			elseif datasize(2)~=3,
+				error('plotmodel error message: data provided should have 2 or 3 columns for quiver plot, and 1 for regular plot');
+			end
+		end
+	else
+		%must be a patch
+		disp('Assuming that data provided is a patch');
+		index = md.mesh.elements;
+		if size(data,2)<size(index,2)
+			error('Data size not supported yet');
+		end
+		datanew = zeros(numberofvertices,1);
+		datanew(md.mesh.elements) = data(:,1:size(index,2));
+		data = datanew;
+		datasize = [numberofvertices 1];
+		%---> go to node data
+	end
+end
+
+%treat the case datasize(1)=6*nodes
+if datasize(1)==6*numberofvertices
+	%keep the only norm of data
+	data1=data(1:6:numberofvertices*6,:);
+	data2=data(2:6:numberofvertices*6,:);
+	data=sqrt(data1.^2+data2.^2);
+	datasize(1)=numberofvertices;
+	%---> go to node data
+end
+
+%treat the case datasize(1)=nodes2d
+if (dimension(md.mesh)==3 & datasize(1)==numberofvertices2d),
+	data=project3d(md,'vector',data,'type','node');
+	datasize(1)=numberofvertices;
+	%---> go to node data
+end
+
+%treat the case datasize(1)=nodes2d
+if (dimension(md.mesh)==3 & datasize(1)==numberofelements2d),
+	data=project3d(md,'vector',data,'type','element');
+	datasize(1)=numberofelements;
+	%---> go to node data
+end
+
+%smoothing?
+if exist(options,'smooth')
+	data=averaging(md,data,getfieldvalue(options,'smooth'));
+	datasize(1)=numberofvertices;
+	%---> go to node data
+end
+
+%element data
+if (datasize(1)==numberofelements & datasize(2)==1),
+
+	%Initialize datatype if non patch
+	if datatype~=4 & datatype~=5,
+		datatype=1;
+	end
+
+	%Mask?
+	if exist(options,'mask'),
+		flags=getfieldvalue(options,'mask');
+		maskvalue=getfieldvalue(options,'maskvalue',NaN);
+		pos=find(~flags);
+		if length(flags)==numberofvertices,
+			[pos2 dummy]=find(ismember(md.mesh.elements,pos));
+			data(pos2,:)=maskvalue;
+		elseif length(flags)==numberofelements
+			data(pos,:)=maskvalue;
+		else
+			disp('Warning: processdata.m: mask length not supported yet (supported length are numberofvertices and numberofelements');
+		end
+	end
+
+	%log?
+	if exist(options,'log'),
+		bounds=getfieldvalue(options,'caxis',[min(data(:)) max(data(:))]);
+		data(find(data<bounds(1)))=bounds(1);
+		if any(data<=0),
+			error('Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])');
+		end
+		pos=find(~isnan(data));
+		data(pos)=log(data(pos))/log(getfieldvalue(options,'log'));
+	end
+end
+
+%node data
+if (datasize(1)==numberofvertices & datasize(2)==1),
+	datatype=2;
+
+	%Mask?
+	if exist(options,'mask'),
+		flags=getfieldvalue(options,'mask');
+		maskvalue=getfieldvalue(options,'maskvalue',NaN);
+		pos=find(~flags);
+		if length(flags)==numberofvertices,
+			data(pos,:)=maskvalue;
+		elseif length(flags)==numberofelements
+			data(md.mesh.elements(pos,:),:)=maskvalue;
+		else
+			disp('Warning: processdata.m: mask length not supported yet (supported length are numberofvertices and numberofelements');
+		end
+	end
+
+	%log?
+	if exist(options,'log'),
+		bounds=getfieldvalue(options,'caxis_pre',[min(data(:)) max(data(:))]);
+		data(find(data<bounds(1)))=bounds(1);
+		if any(data<=0),
+			error('Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])');
+		end
+		pos=find(~isnan(data));
+		data(pos)=log(data(pos))/log(getfieldvalue(options,'log'));
+	end
+end
+
+%layer projection? 
+if getfieldvalue(options,'layer',0)>=1
+	data=project2d(md,data,getfieldvalue(options,'layer')); %project onto 2d mesh
+end
+if getfieldvalue(options,'depthaverage',0)
+	data=DepthAverage(md,data); %project onto 2d mesh
+end
+
+%control arrow density if quiverplot
+if datatype==3 & exist(options,'density')
+	databak=data;
+	data=NaN*ones(datasize);
+	density=getfieldvalue(options,'density');
+	data(1:density:end,:)=databak(1:density:end,:);
+	clear databak
+end
+if datatype==3,
+	%Mask?
+	if exist(options,'mask'),
+		flags=getfieldvalue(options,'mask');
+		pos=find(~flags);
+		if length(flags)==numberofvertices,
+			data(pos,:)=NaN;
+		elseif length(flags)==numberofelements
+			data(md.mesh.elements(pos,:),:)=NaN;
+		else
+			disp('Warning: processdata.m: mask length not supported yet (supported length are numberofvertices and numberofelements');
+		end
+	end
+end
+
+%OK, if datatype=0 error out
+if datatype==0,
+	error(['data provided not recognized or not supported']);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/processdata.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/processdata.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/processdata.py	(revision 27955)
@@ -0,0 +1,199 @@
+import numpy as np
+
+
+def processdata(md, data, options):
+    """PROCESSDATA - process data to be plotted
+
+    datatype = 1 -> elements
+    datatype = 2 -> nodes
+    datatype = 3 -> node quivers
+    datatype = 4 -> P1 patch
+    datatype = 5 -> P0 patch
+    datatype = 6 -> edges
+
+    Usage:
+    data, datatype = processdata(md, data, options)
+
+    See also: PLOTMODEL, PROCESSMESH
+    """
+    # Initialization and grabbing auxiliaries {{{
+    # check format
+    if (len(data) == 0 or (len(data) == 1 and not isinstance(data, dict) and np.isnan(data).all())):
+        raise ValueError("processdata error message: 'data' provided is empty")
+    # get the shape
+    if 'numberofvertices2d' in dir(md.mesh):
+        numberofvertices2d = md.mesh.numberofvertices2d
+    else:
+        numberofvertices2d = np.nan
+
+    try:
+        numberofedges = md.mesh.numberofedges
+    except AttributeError:
+        numberofedges = np.nan
+
+    if options.exist('amr'):
+        step = options.getfieldvalue('amr', 0)
+        numberofvertices = len(md.results.TransientSolution[step].MeshX)
+        numberofelements = np.shape(md.results.TransientSolution[step].MeshElements)[0]
+    else:
+        numberofvertices = md.mesh.numberofvertices
+        numberofelements = md.mesh.numberofelements
+
+    procdata = np.copy(data)
+    #initialize datatype
+    datatype = 0
+    # get datasize
+    if np.ndim(procdata) == 1:
+        datasize = (np.shape(procdata)[0], 1)
+    elif np.ndim(procdata) == 2:
+        datasize = np.shape(procdata)
+    elif np.ndim(procdata) == 3:
+        if np.shape(procdata)[0] == 2:
+            #treating a dim two list that needs to be stacked
+            procdata = np.hstack((procdata[0, :, :], procdata[1, :, :]))
+            datasize = np.shape(procdata)
+        else:
+            raise ValueError('data list contains more than two vectore, we can not cope with that')
+    else:
+        raise ValueError('data passed to plotmodel has bad dimensions; check that column vectors are rank - 1')
+    # }}}
+
+    # log {{{
+    if options.exist('log'):
+        cutoff = options.getfieldvalue('log', 1)
+        procdata[np.where(procdata < cutoff)] = cutoff
+    # }}}
+
+    # quiver plot {{{
+    if datasize[1] > 1 and datasize[0] != numberofvertices + 1:
+        if datasize[0] == numberofvertices and datasize[1] in [2, 3]:
+            datatype = 3
+            if md.mesh.dimension() == 3:
+                if datasize[1] == 2:
+                    data = np.hstack(data, np.zeros((datasize[0])))
+                elif datasize[1] > 3:
+                    raise ValueError('plotmodel error message: data should have two or three columns of length md.mesh.numberofvertices for a quiver plot')
+        else:
+            #we should have a patch
+            print("Assuming that data provided is a patch")
+            datatype = 4
+            index = md.mesh.elements
+            if np.shape(data)[1] < np.shape(index)[1]:
+                    raise ValueError('plotmodel error message: data should have more columns than vertices per elements to plot a patch')
+            procdata = np.zeros((numberofvertices))
+            procdata[md.mesh.elements -1] = data[:, 0:np.shape(index)[1]]
+            datasize = [numberofvertices, 1]
+
+    # }}}
+
+    # element data{{{
+    if datasize[0] == numberofelements and datasize[1] == 1:
+        #initialize datatype if non patch
+        if datatype != 4 and datatype != 5:
+            datatype = 1
+        # AMR {{{
+        if options.exist('amr'):
+            nonan = np.nonzero(~np.isnan(md.results.TransientSolution[step].MeshElements))
+            procdata = procdata[nonan]
+        # }}}
+        # mask {{{
+        if options.exist('mask'):
+            flags = options.getfieldvalue('mask')
+            hide = np.invert(flags)
+            if np.size(flags) == numberofvertices:
+                EltMask = np.asarray([np.any(np.in1d(index, np.where(hide))) for index in md.mesh.elements - 1])
+                procdata = np.ma.array(procdata, mask=EltMask)
+                options.addfielddefault('cmap_set_bad', 'w')
+            elif np.size(flags) == numberofelements:
+                procdata = np.ma.array(procdata, mask=hide)
+                options.addfielddefault('cmap_set_bad', 'w')
+            else:
+                print('Warning: processdata.py: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements')
+        # }}}
+
+    # }}}
+
+    # node data {{{
+    elif datasize[0] in [numberofvertices, numberofvertices2d] and datasize[1] == 1:
+        datatype = 2
+        # AMR {{{
+        if options.exist('amr'):
+            nonan = np.nonzero(~np.isnan(md.results.TransientSolution[step].MeshX))
+            procdata = procdata[nonan]
+        # }}}
+        # Mask {{{
+        if options.exist('mask'):
+            flags = options.getfieldvalue('mask')
+            hide = np.invert(flags)
+            if np.size(flags) == numberofvertices:
+                procdata = np.ma.array(procdata, mask=hide)
+                options.addfielddefault('cmap_set_bad', 'w')
+            elif np.size(flags) == numberofelements:
+                NodeMask = np.zeros(np.shape(md.mesh.x), dtype=bool)
+                HideElt = md.mesh.elements[np.where(hide)[0]] - 1
+                NodeMask[HideElt] = True
+                procdata = np.ma.array(procdata, mask=NodeMask)
+                options.addfielddefault('cmap_set_bad', 'w')
+            else:
+                print('Warning: processdata.py: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements')
+        # }}}
+    # }}}
+
+    # edge data {{{
+    elif datasize[0] in [numberofedges] and datasize[1] == 1:
+        datatype = 6
+        procdata = np.zeros((md.mesh.numberofelements))
+        repeat = np.zeros((md.mesh.numberofelements))
+        for index, edge in enumerate(md.mesh.edges[:, -2:]):
+            procdata[edge - 1] += data[index] * np.asarray(edge - 1 > -1, dtype=int)
+            repeat[edge - 1] += np.asarray(edge - 1 > -1, dtype=int)
+        procdata = procdata / repeat
+
+        # }}}
+    # }}}
+
+    # spc time series {{{
+    elif datasize[0] == numberofvertices + 1:
+        datatype = 2
+        spccol = options.getfieldvalue('spccol', 0)
+        print('multiple-column spc field; specify column to plot using option "spccol"')
+        print(('column ', spccol, ' plotted for time: ', procdata[-1, spccol]))
+        procdata = procdata[0:-1, spccol]
+
+    # }}}
+
+    # convert rank -2 array to rank -1 {{{
+    if np.ndim(procdata) == 2 and np.shape(procdata)[1] == 1:
+        procdata = procdata.reshape(-1, )
+    # }}}
+
+    #  process NaN's if any {{{
+    nanfill = options.getfieldvalue('nan', -9999)
+    if np.any(np.isnan(procdata)):
+        if options.exist('caxis'):
+            [lb, ub] = options.getfieldvalue('caxis')
+        else:
+            lb = np.nanmin(procdata)
+            ub = np.nanmax(procdata)
+            if lb == ub:
+                lb = lb - 0.5
+                ub = ub + 0.5
+                nanfill = lb - 1
+            options.addfielddefault('caxis', [lb, ub])
+
+        procdata[np.isnan(procdata)] = nanfill
+        procdata = np.ma.array(procdata, mask=np.isnan(procdata))
+        if nanfill < lb:
+            options.addfielddefault('cmap_set_under', 'r')
+        elif nanfill > ub:
+            options.addfielddefault('cmap_set_over', 'k')
+        if nanfill < ub and nanfill > lb:
+            print(("WARNING: nan's treated as", nanfill, "by default. Which is in your data interval, change it with ['nan', value] in plotmodel options"))
+    # }}}
+
+    #  if datatype is still zero, error out {{{
+    if datatype == 0:
+        raise ValueError("processdata error: data provided not recognized or not supported")
+    else:
+        return procdata, datatype
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/processdatalatlong.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/processdatalatlong.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/processdatalatlong.m	(revision 27955)
@@ -0,0 +1,27 @@
+function [data datatype] = processdatalatlong(md,data,options);
+
+	%   datatype = 1 -> elements
+	%   datatype = 2 -> nodes
+	%what is the mesh we are using: 
+	x0=md.mesh.long;
+	y0=md.mesh.lat;
+
+	%add row at lat=90 and lat=-90
+	add=[(-180:.1:-1e-5)';(1e-5:.1:180)'];
+	nadd=length(add);
+	xextra=[add;add];
+	yextra=[90*ones(nadd,1); -90*ones(nadd,1)];
+	x=[x0;xextra];
+	y=[y0;yextra];
+	elements=delaunay(x,y);
+	
+	%with this mesh, interpolate data: 
+	if length(data)==length(md.mesh.long),
+		datatype=2;
+
+		%interpolate data: 
+		extradata=griddata(x0,y0,data,xextra,yextra,'nearest');
+		data=[data; extradata];
+	elseif length(data)==length(md.mesh.elements),
+		datatype=1;
+	end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/processmesh.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/processmesh.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/processmesh.js	(revision 27955)
@@ -0,0 +1,94 @@
+function processmesh(md,data,options){ //{{{
+//PROCESSMESH - process mesh to be plotted
+//
+//   Usage:
+//      var meshresults=processmesh(md,data,options)
+//      var x=meshresults[0]; 
+//      var y=meshresults[1]; 
+//      var z=meshresults[2]; 
+//      var elements=meshresults[3]; 
+//      var is2d=meshresults[4]; 
+//      var isplanet=meshresults[5]; 
+//
+//   See also: PLOTMODEL, PROCESSDATA
+
+	var x,y,z,elements,is2d,isplanet;
+
+	if (md.mesh.numberofvertices==0){
+		throw Error('plot error message: mesh is empty');
+	}
+
+
+	if (md.mesh.numberofvertices==md.mesh.numberofelements){
+		throw Error(['plot error message: the number of elements is the same as the number of nodes...']);
+	}
+
+	if (options.getfieldvalue('coord','xy') !== 'latlon'){
+		x=md.mesh.x.slice();
+		if ('x2d' in md.mesh) x2d=md.mesh.x2d.slice();
+		y=md.mesh.y.slice();
+		if ('y2d' in md.mesh) y2d=md.mesh.y2d.slice();
+	}
+	else{
+		x=md.mesh.long.slice();
+		y=md.mesh.lat.slice();
+	}
+
+	if ('z' in md.mesh){
+		z=md.mesh.z.slice();
+	}
+	else{
+		z=NewArrayFill(x.length,0);
+	}
+	z=options.getfieldvalue('z',z);
+	if (typeof z === 'string'){
+		z=md[z];
+	}
+	
+	//TODO: Make deep copy of elements array to prevent unwanted modification of model (slice creates deep copies for primitive types, shallow copies for obejcts)
+	if ('elements2d' in md.mesh) elements2d=md.mesh.elements2d.slice();
+	elements=md.mesh.elements.slice();
+
+	//is it a 2d plot?
+	if (md.mesh.dimension()==2){
+		is2d=1;
+	}
+	else{
+		if (options.getfieldvalue('layer',0)>=1){
+			is2d=1;
+		}
+		else{
+			is2d=0;
+		}
+	}
+
+	//layer projection? 
+	if (options.getfieldvalue('layer',0)>=1){
+		if (options.getfieldvalue('coord','xy') === 'latlon'){
+			throw Error('processmesh error message: cannot work with 3D meshes for now');
+		}
+		
+		//we modify the mesh temporarily to a 2d mesh from which the 3d mesh was extruded. 
+		x=x2d;
+		y=y2d;
+		z=NewArrayFill(x2d.length,0);
+		elements=elements2d;
+	}
+
+	//units
+	if (options.exist('unit')){
+		unit=options.getfieldvalue('unit');
+		x=x*unit;
+		y=y*unit;
+		z=z*unit;
+	}
+
+	//for now, always isplanet = 0, as we don't have the isa capability: 
+	//if isa(md,'planet'),
+	//	isplanet=1;
+	//else
+	isplanet=0;
+	//end
+
+	return  [x,y,z,elements,is2d,isplanet];
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/processmesh.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/processmesh.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/processmesh.m	(revision 27955)
@@ -0,0 +1,116 @@
+function [x y z elements is2d isplanet]=processmesh(md,data,options)
+%PROCESSMESH - process mesh to be plotted
+%
+%   Usage:
+%      [x y z elements is2d]=processmesh(md,data,options)
+%
+%   See also: PLOTMODEL, PROCESSDATA
+
+%some checks
+if md.mesh.numberofvertices==0,
+	error('plot error message: mesh is empty')
+end
+if md.mesh.numberofvertices==md.mesh.numberofelements
+	error(['plot error message: the number of elements is the same as the number of nodes...']);
+end
+
+%special case for mesh 2dvertical
+if strcmp(domaintype(md.mesh),'2Dvertical'),
+	[x y z elements is2d isplanet] = processmesh(md.mesh,options);
+	return;
+end
+
+%special case for mesh 3dsurface
+if strcmp(domaintype(md.mesh),'3Dsurface'),
+	[x y z elements is2d isplanet] = processmesh(md.mesh,options);
+	if strcmpi(getfieldvalue(options,'coord','xy'),'latlon') | strcmpi(getfieldvalue(options,'coord','xy'),'latlong'),
+		x0=md.mesh.long;
+		y0=md.mesh.lat;
+		%add row at lat=90 and lat=-90
+		add=[(-180:.1:-1e-5)';(1e-5:.1:180)'];
+		nadd=length(add);
+		xextra=[add;add];
+		yextra=[90*ones(nadd,1); -90*ones(nadd,1)];
+		x=[x0;xextra];
+		y=[y0;yextra];
+
+		if strcmpi(getfieldvalue(options,'coordcent','atlantic'),'pacific'),
+			pos=find(x>0);  x(pos)=-360+x(pos);
+		end
+		elements=delaunay(x,y);
+		z=x; z(:)=0;
+	end
+	return;
+end
+
+if isprop(md.mesh,'elements2d'), elements2d=md.mesh.elements2d; end
+
+if exist(options,'amr'),
+	step = getfieldvalue(options,'amr');
+	x = md.results.TransientSolution(step).MeshX;
+	y = md.results.TransientSolution(step).MeshY;
+	elements = md.results.TransientSolution(step).MeshElements;
+else
+	elements=md.mesh.elements;
+	if ~strcmpi(getfieldvalue(options,'coord','xy'),'latlon') &  ~strcmpi(getfieldvalue(options,'coord','xy'),'latlong') ,
+		x=md.mesh.x;
+		if isprop(md.mesh,'x2d'), x2d=md.mesh.x2d; end
+		y=md.mesh.y;
+		if isprop(md.mesh,'y2d'), y2d=md.mesh.y2d; end
+	else
+		x=md.mesh.long;
+		y=md.mesh.lat;
+		if strcmpi(getfieldvalue(options,'coordcent','atlantic'),'pacific'),
+			pos=find(x>0);  x(pos)-360+x(pos);
+		end
+	end
+end
+
+if isprop(md.mesh,'z'),
+	z=md.mesh.z;
+else
+	z=zeros(size(x));
+end
+z=getfieldvalue(options,'z',z);
+if ischar(z),
+	z=md.(z);
+end
+
+%is it a 2d plot?
+if md.mesh.dimension()==2 || getfieldvalue(options,'layer',0)>=1 || getfieldvalue(options,'depthaverage',0)
+	is2d=1;
+else
+	is2d=0;
+end
+
+%layer projection? 
+if getfieldvalue(options,'layer',0)>=1 || getfieldvalue(options,'depthaverage',0)
+	if strcmpi(getfieldvalue(options,'coord','xy'),'latlon'),
+		error('processmesh error message: cannot work with 3D meshes for now');
+	end
+	%we modify the mesh temporarily to a 2d mesh from which the 3d mesh was extruded
+	x=x2d;
+	y=y2d;
+	z=zeros(size(x2d));
+	elements=elements2d;
+end
+
+%units
+if exist(options,'unit'),
+	unit=getfieldvalue(options,'unit');
+	x=x*unit;
+	y=y*unit;
+	z=z*unit;
+end
+
+%Quiver plot for elements?
+if size(data,2)>1 && size(data,1)==size(elements,1)
+	x = mean(x(elements),2);
+	y = mean(y(elements),2);
+end
+
+if isa(md,'planet'),
+	isplanet=1;
+else
+	isplanet=0;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/processmesh.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/processmesh.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/processmesh.py	(revision 27955)
@@ -0,0 +1,110 @@
+#import matplotlib.delaunay as delaunay
+import numpy as np
+
+
+def processmesh(md, data, options):
+    """PROCESSMESH - process mesh to be plotted
+
+    Usage:
+        x, y, z, elements, is2d = processmech(md, data, options)
+
+    See also: PLOTMODEL, PROCESSDATA
+
+    TODO:
+    - Test application of matlplotlib.delaunay
+    - Test that output of delaunay matches output of delaunay in MATLAB (see
+    src/m/plot/processmesh.m)
+    """
+
+    #some checks
+    if md.mesh.numberofvertices == 0:
+        raise ValueError('processmesh error: mesh is empty')
+    if md.mesh.numberofvertices == md.mesh.numberofelements:
+        raise ValueError('processmesh error: the number of elements is the same as the number of nodes')
+
+    #special case for mesh 2dvertical
+    if md.mesh.domaintype() == '2Dvertical':
+        x, y, z, elements, is2d, isplanet = processmesh(md.mesh, options)
+        return x, y, z, elements, is2d, isplanet
+
+    # # special case for mesh 3dsurface
+    # if md.mesh.domaintype() == '3Dsurface':
+    #     x, y, z, elements, is2d, isplanet = processmesh(md.mesh, options)
+    #     if options.getfieldvalue('coord', 'xy') == 'latlon':
+    #         x = md.mesh.long
+    #         y = md.mesh.lat
+    #         elements = delaunay(x, y)
+    #         z = md.mesh.lat
+    #         z[:] = 0
+    #     return x, y, z, elements, is2d, isplanet
+
+    if hasattr(md.mesh, 'elements2d'):
+        elements2d = md.mesh.elements2d
+        numofvertices2d = md.mesh.numberofvertices2d
+        numofelements2d = md.mesh.numberofelements2d
+    else:
+        numofvertices2d = np.nan
+        numofelements2d = np.nan
+
+    if options.exist('amr'):
+        step = options.getfieldvalue('amr')
+        nonan = np.nonzero(~np.isnan(md.results.TransientSolution[step].MeshX))
+        x = md.results.TransientSolution[step].MeshX[nonan]
+        y = md.results.TransientSolution[step].MeshY[nonan]
+        nonan = np.nonzero(~np.isnan(md.results.TransientSolution[step].MeshElements))
+        elements = md.results.TransientSolution[step].MeshElements[nonan] - 1
+        eldim = np.shape(md.results.TransientSolution[step].MeshElements)[1]
+        elements = np.reshape(elements, ((int(len(elements) / eldim), eldim)))
+
+    else:
+        elements = md.mesh.elements - 1
+        if options.getfieldvalue('coord', 'xy') != 'latlon':
+            x = md.mesh.x
+            if hasattr(md.mesh, 'x2d'):
+                x2d = md.mesh.x2d
+            y = md.mesh.y
+            if hasattr(md.mesh, 'y2d'):
+                y2d = md.mesh.y2d
+
+    if hasattr(md.mesh, 'z'):
+        z = md.mesh.z
+    else:
+        z = np.zeros(np.shape(md.mesh.x))
+    z = options.getfieldvalue('z', z)
+    if isinstance(z, str):
+        z = getattr(md, z)
+
+    force2D = numofelements2d in np.shape(data) or numofvertices2d in np.shape(data)
+    #is it a 2D plot?
+    if md.mesh.dimension() == 2 or options.getfieldvalue('layer', 0) >= 1 or force2D:
+        is2d = 1
+    else:
+        is2d = 0
+
+    #layer projection?
+    if options.getfieldvalue('layer', 0) >= 1 or force2D:
+        if options.getfieldvalue('coord', 'xy') == 'latlon':
+            raise Exception('processmesh error message: cannot work with 3D meshes for now')
+        #we modify the mesh temporarily to a 2d mesh from which the 3d mesh was extruded
+        x = x2d
+        y = y2d
+        z = np.zeros(np.shape(x2d))
+        elements = md.mesh.elements2d - 1
+
+    #units
+    if options.exist('unit'):
+        unit = options.getfieldvalue('unit')
+        x = x * unit
+        y = y * unit
+        z = z * unit
+
+    #is model a member of planet class?
+    #
+    # TODO: Change this when planet class defined (see src/m/plot/processmesh.m)
+    #
+    if md.__class__.__name__ != 'model':
+        isplanet = 1
+    else:
+        isplanet = 0
+
+    return x, y, z, elements, is2d, isplanet
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/quiver_colorbar.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/quiver_colorbar.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/quiver_colorbar.m	(revision 27955)
@@ -0,0 +1,45 @@
+function quiver_colorbar(quivers,options)
+%QUIVER_COLORBAR - colorbar for quiver plots
+%
+%   Usage:
+%      quiver_colorbar(quivers,options)
+
+if  strcmpi(getfieldvalue(options,'colorbar','on'),'on'),
+
+	%Create colorbar
+	hcb=colorbar('peer',gca,'location','EastOutside');
+	caxis([1 quivers.numcolors+1]);
+
+	%build ticks
+	ticklabel=cell(1,length(quivers.levels));
+	for i=1:length(quivers.levels),
+		ticklabel{i}=num2str(round_ice(quivers.levels(i),3));
+	end
+	tickpos=1:quivers.numcolors+1;
+
+	%remove ticks if to many have been created
+	proportion=round(length(quivers.levels)/4);
+	if proportion>1,
+		ticklabel=ticklabel(1:proportion:end);
+		tickpos=tickpos(1:proportion:end);
+	end
+
+	%draw colorbar
+	set(hcb,'YTickLabel',ticklabel,'YTick',tickpos);
+
+	%position
+	if exist(options,'colorbarpos'),
+		set(hcb,'Position',getfieldvalue(options,'colorbarpos'));
+	end
+	%fontsize
+	fontsize=getfieldvalue(options,'fontsize',14);
+	set(hcb,'FontSize',fontsize);
+
+	if exist(options,'colorbartitle'),
+		backup=gca;
+		axes(hcb);lab=title(getfieldvalue(options,'colorbartitle'));
+		set(lab,'Rotation',getfieldvalue(options,'colorbartitlerotation',0));
+		set(lab,'VerticalAlignment','bottom');
+		axes(backup);
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/quiver_process.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/quiver_process.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/quiver_process.m	(revision 27955)
@@ -0,0 +1,70 @@
+function [quivers,palette]=quiver_process(x,y,u,v,options)
+%QUIVER_PROCESS - process data for color quiver plot
+%
+%   Usage:
+%      [quivers,palette]=quiver_process(x,y,u,v,options)
+
+%keep only non NaN elements
+pos=find(~isnan(x) & ~isnan(y) & ~isnan(u) & ~isnan(v));
+x=x(pos); y=y(pos);
+u=u(pos); v=v(pos);
+
+%get Norm Min and Max
+Norm=sqrt(u.^2+v.^2);
+Min=min(Norm);
+Max=max(Norm);
+
+%Scale data
+scalingfactor=getfieldvalue(options,'scaling',0.40);
+if strcmpi(getfieldvalue(options,'autoscale','on'),'off'),
+	delta=((min(x)-max(x))^2+(min(y)-max(y))^2)/numel(x);
+	u=scalingfactor*sqrt(delta)*u./Norm;
+	v=scalingfactor*sqrt(delta)*v./Norm;
+else
+	delta=((min(x)-max(x))^2+(min(y)-max(y))^2)/numel(x);
+	u=scalingfactor*sqrt(delta)*u./max(Norm);
+	v=scalingfactor*sqrt(delta)*v./max(Norm);
+end
+
+%number of colors?
+colorlevels=getfieldvalue(options,'colorlevels',30);
+if isnumeric(colorlevels),
+	if isnan(colorlevels),
+		numcolors=30;
+	else
+		numcolors=colorlevels;
+	end
+	levels=round_ice(linspace(Min,Max,numcolors+1),2);
+else
+	levels=zeros(1,length(colorlevels)+2);
+	levels(1)=Min;
+	for i=1:length(colorlevels)
+		levels(i+1)=colorlevels{i};
+	end
+	levels(end)=Max;
+	levels=sort(unique(levels));
+	numcolors=length(levels)-1;
+end
+
+%create colorind for colors
+colorind=ones(length(u),1);
+for i=1:numcolors
+	pos=find((Norm>=levels(i)) & (Norm<=levels(i+1)) );
+	colorind(pos)=i;
+end
+colorind(find(Norm>levels(end)))=numcolors;
+
+%build output
+quivers=struct('x',x,'y',y,'u',u,'v',v,'levels',levels,'colorind',colorind,'numcolors',numcolors);
+
+%set the colormap 
+if numcolors==2;
+	%blue and red
+	palette=colormap([0 0 1;1 0 0]);
+elseif numcolors==3,
+	%blue yellow and red
+	palette=colormap([0 0 1;1 1 0;1 0 0]);
+else
+	%let jet choose
+	palette=colormap(jet(numcolors));
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/radarpower.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/radarpower.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/radarpower.m	(revision 27955)
@@ -0,0 +1,196 @@
+function md=radarpower(md,varargin)
+%RADARPOWER - overlay a power radar image on an existing mesh
+%
+%   This routine will overlay a power radar image on an existing mesh.
+%   The power amplitude will be output to vel for now.
+%   In the future, think about a field to hold this value.
+%
+%   Usage:
+%      md=radarpower(md,options);
+%      md=radarpower(md)
+
+%Parse inputs
+if nargin==1,
+	options=pairoptions;
+else
+	options=varargin{:};
+	if ~isa(options,'pairoptions'),
+		options=pairoptions(varargin{:});
+	end
+end
+
+highres = getfieldvalue(options,'highres',0);
+xlim    = getfieldvalue(options,'xlim',[min(md.mesh.x) max(md.mesh.x)]);
+ylim    = getfieldvalue(options,'ylim',[min(md.mesh.y) max(md.mesh.y)]);
+posting = getfieldvalue(options,'posting',0); % 0 -> image posting default
+a = getfieldvalue(options,'overlay_adjust_a',0);
+b = getfieldvalue(options,'overlay_adjust_b',1);
+c = getfieldvalue(options,'overlay_adjust_c',0);
+d = getfieldvalue(options,'overlay_adjust_d',1);
+
+%find GDAL coordinates
+x0=min(xlim); x1=max(xlim);
+y0=min(ylim); y1=max(ylim);
+
+if ~exist(options,'overlay_image'), % no image provided, go look into ModelData for one!{{{
+	if exist(options,'geotiff_name'),
+		paths = {getfieldvalue(options,'geotiff_name')};
+	elseif md.mesh.epsg==3031, %Antarctica
+			if highres,
+				paths = {'/Users/larour/ModelData/MosaicTiffRsat/amm125m_v2_200m.tif',...
+					'/home/ModelData/Antarctica/MosaicTiffRsat/amm125m_v2_200m.tif',...
+					'/totten_1/ModelData/Antarctica/MosaicTiffRsat/amm125m_v2_200m.tif',...
+					'./amm125m_v2_200m.tif',...
+					};
+			else
+				paths = {'/Users/larour/ModelData/MosaicTiffRsat/amm125m_v2_1km.tif',...
+					'/home/ModelData/Antarctica/MosaicTiffRsat/amm125m_v2_1km.tif',...
+					'/totten_1/ModelData/Antarctica/MosaicTiffRsat/amm125m_v2_1km.tif',...
+					'./amm125m_v2_1km.tif',...
+					};
+			end
+	elseif md.mesh.epsg==3413,   %Greenland 
+		if highres,
+			paths = {'/u/astrid-r1b/ModelData/MOG/mog100_r2_hp1.tif',...
+				'/home/ModelData/Greenland/MOG/mog100_r2_hp1.tif',...
+				'/totten_1/ModelData/Greenland/MOG/mog100_r2_hp1.tif',...
+				'./mog100_r2_hp1.tif',...
+				};
+		else
+			paths = {'/u/astrid-r1b/ModelData/MOG/mog500_r2_hp1.tif',...
+				'/home/ModelData/Greenland/MOG/mog500_r2_hp1.tif',...
+				'/totten_1/ModelData/Greenland/MOG/mog500_r2_hp1.tif',...
+				'/Users/larour/ModelData/MOG/mog500_r2_hp1.tif',...
+				'./mog500_r2_hp1.tif',...
+				};
+		end
+	else
+		error('Need to provide geotiff for areas outside of Greenland and Antarctica');
+	end
+
+	%Find file from list
+	found = false;
+	for i=1:numel(paths),
+		if exist(paths{i},'file'),
+			geotiff_name = paths{i}; found = true;
+		end
+	end
+	if ~found,
+		error('could not find radar image'); 
+	end
+
+
+	%Crop radar image from xylim
+	filename='./temp.tif';
+	eval(['!gdal_translate -quiet -projwin ' num2str(x0) ' ' num2str(y1) ' ' num2str(x1) ' ' num2str(y0) ' ' geotiff_name ' ' filename ]);
+
+	%Read in temp.tif:
+	im=imread('temp.tif','TIFF');
+	%adjust contrast and brightness
+	%im=imadjust(im,[a b],[c d]);
+	pixelskip=max(1,ceil(posting/((x1-x0)/(size(im,2)))));
+	md.radaroverlay.pwr=double(flipud(im(1:pixelskip:end,1:pixelskip:end)));
+	md.radaroverlay.x=(x0:(x1-x0)/(size(md.radaroverlay.pwr,2)-1):x1);
+	md.radaroverlay.y=(y0:(y1-y0)/(size(md.radaroverlay.pwr,1)-1):y1);
+
+	%Erase image or keep it?
+	if ~getfieldvalue(options,'keep_image',0),
+		system('rm -rf ./temp.tif');
+	end
+	%}}}
+else %user provided image {{{
+
+	%user provided an image. check we also have overlay_xlim and overlay_ylim  options, to know what range of coordinates the image covers.
+	filename = getfieldvalue(options,'overlay_image');
+	[filepath,name,ext] = fileparts(filename);
+	if ~exist(filename)
+		error([filename ' not found']);
+	end
+
+	%Is it a geotiff?
+	if strcmp(ext,'.tiff') || strcmp(ext,'.tif')
+
+		%Crop image from xylim
+		tempfilename='./temp.tif';
+		eval(['!gdal_translate -quiet -projwin ' num2str(x0) ' ' num2str(y1) ' ' num2str(x1) ' ' num2str(y0) ' ' filename ' ' tempfilename]);
+
+		%Read in temp.tif:
+		im=imread('temp.tif','TIFF');
+		%adjust contrast and brightness
+		%im=imadjust(im,[a b],[c d]);
+		pixelskip=max(1,ceil(posting/((x1-x0)/(size(im,2)))));
+		%md.radaroverlay.pwr=double(flipud(im(1:pixelskip:end,1:pixelskip:end,:)));
+		md.radaroverlay.pwr=double(im(1:pixelskip:end,1:pixelskip:end,:))/255;
+		md.radaroverlay.x=x0:(x1-x0)/(size(md.radaroverlay.pwr,2)-1):x1;
+		md.radaroverlay.y=y1:-(y1-y0)/(size(md.radaroverlay.pwr,1)-1):y0;
+
+		%Erase image or keep it?
+		if ~getfieldvalue(options,'keep_image',0),
+			delete(tempfilename);
+		end
+	else
+		if (~exist(options,'overlay_xlim') | ~exist(options,'overlay_xlim')| ~exist(options,'overlay_xposting')| ~exist(options,'overlay_yposting')),
+			error('radarpower error message: please provide overlay_xlim, overlay_ylim, overlay_xposting and overlay_yposting options together with overlay_image option');
+		end
+		overlay_xlim=getfieldvalue(options,'overlay_xlim');
+		overlay_ylim=getfieldvalue(options,'overlay_ylim');
+		overlay_xposting=getfieldvalue(options,'overlay_xposting');
+		overlay_yposting=getfieldvalue(options,'overlay_yposting');
+		overlay_image=getfieldvalue(options,'overlay_image');
+
+		sizex=floor((x1-x0)/overlay_xposting);
+		sizey=floor((y1-y0)/overlay_yposting);
+		topleftx=floor((x0-overlay_xlim(1))/overlay_xposting); % x min
+		toplefty=floor((overlay_ylim(2)-y1)/overlay_yposting); % y max
+
+		%Read and crop file
+		disp('Warning: expecting coordinates in polar stereographic (Std Latitude: 70ºN Meridian: 45º)');
+		im=imread(overlay_image);
+		%adjust contrast and brightness
+		%im=imadjust(im,[a b],[c d]);
+		im=im(toplefty:toplefty+sizey,topleftx:topleftx+sizex);
+		md.radaroverlay.pwr=double(flipud(im));
+		md.radaroverlay.x=(x0:(x1-x0)/(size(md.radaroverlay.pwr,2)-1):x1);
+		md.radaroverlay.y=(y0:(y1-y0)/(size(md.radaroverlay.pwr,1)-1):y1);
+	end
+end %}}}
+
+%Was a triangulation requested for the area of the image that is not covered by the mesh? %{{{
+if strcmpi(getfieldvalue(options,'outertriangulation','no'),'yes'),
+
+	%create expfile that is a box controlled by xlim and ylim, with a hole defined by the mesh outer segments.
+	box.name='';
+	
+	%box: 
+	box.x=[xlim(1) xlim(2) xlim(2) xlim(1) xlim(1)];
+	box.y=[ylim(1) ylim(1) ylim(2) ylim(2) ylim(1)];
+	box.density=1;
+
+	%inner hole from mesh segments: 
+	box(2).x=md.mesh.x(md.mesh.segments(:,1));
+	box(2).x=[box(2).x; box(2).x(1)];
+	box(2).y=md.mesh.y(md.mesh.segments(:,1)); 
+	box(2).y=[box(2).y; box(2).y(1)];
+
+	if strcmpi(getfieldvalue(options,'outertriangulationflip','no'),'yes'),
+		box(2).x=flipud(box(2).x);
+		box(2).y=flipud(box(2).y);
+	end
+
+	%write contour to file
+	expwrite(box,'./outertriangulation.exp');
+
+	%mesh: 
+	maxarea=max(GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y));
+	outermd=triangle(model(),'./outertriangulation.exp',sqrt(maxarea));
+	%outermd=bamg(model(),'domain','./outertriangulation.exp','hmin',sqrt(maxarea));
+
+	%delete contour file: 
+	delete('./outertriangulation.exp');
+	
+	%save the triangulation: 
+	md.radaroverlay.outerindex=outermd.mesh.elements;
+	md.radaroverlay.outerx=outermd.mesh.x;
+	md.radaroverlay.outery=outermd.mesh.y;
+
+end %}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/radarpower.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/radarpower.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/radarpower.py	(revision 27955)
@@ -0,0 +1,16 @@
+def solveslm(slm, solutionstringi, *args):
+    """RADARPOWER - overlay a power radar image on an existing mesh
+
+    This routine will overlay a power radar image on an existing mesh.
+    The power amplitude will be output to vel for now.
+    In the future, think about a field to hold this value.
+
+    Usage:
+        md=radarpower(md,options);
+        md=radarpower(md)
+
+    TODO:
+    - Translate from MATLAB API as we bring Python plotting capabilities online
+    """
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/scaleruler.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/scaleruler.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/scaleruler.m	(revision 27955)
@@ -0,0 +1,81 @@
+function scaleruler(options)
+%SCALERULER - overlay a scale ruler on current plot
+%
+%   Usage:
+%      scaleruler(options)
+
+%get options
+structure  = getfieldvalue(options,'scaleruler');
+fontcolor  = getfieldvalue(options,'fontcolor','k');
+fontweight = getfieldvalue(options,'fontweight','n');
+fontsize   = getfieldvalue(options,'scaleruler_fontsize',16);
+unitscale  = getfieldvalue(options,'unit',1.);
+%fontcolor  = 'w';
+
+%Go through structure and fill missing arguments
+if length(structure)~=5
+	error('plotmodel error message: bad number of input arguments for scaleruler: [x0 y0 length thickness numberofticks]');
+end
+
+%retrieve scale parameters
+x0            = double(structure(1))/unitscale;
+y0            = double(structure(2))/unitscale;
+lengthscale   = double(structure(3))/unitscale;
+widthscale    = double(structure(4))/unitscale;
+numberofticks = double(structure(5));
+
+%If only one tick, just draw a rectangle
+if numberofticks==1,
+	t=text(x0+lengthscale/2,y0+2*widthscale,2,[num2str(lengthscale*unitscale/1000) ' km'],...
+		'FontSize',fontsize,'FontWeight',fontweight,'Color',fontcolor,'HorizontalAlignment','center','VerticalAlignment','bottom');
+	if ~verLessThan('matlab', '8.4')
+		set(t,'Layer','front');
+	end
+	p=patch([x0 x0+lengthscale x0+lengthscale x0],[y0 y0 y0+widthscale y0+widthscale],2*ones(1,4),fontcolor,'Edgecolor',fontcolor);
+else
+	%initialize some coordinates
+	unitlength=lengthscale/(numberofticks -1);
+	flag=-1;
+
+	Bd=[x0 y0];
+	Bu=[x0 y0+widthscale];
+	Tick=0;
+
+	%Text
+	xt=Bu(1);
+	yt=Bu(2)+widthscale;
+	text(xt,yt,2,num2str(Tick),'FontSize',fontsize,'FontWeight',fontweight,'Color',fontcolor,'HorizontalAlignment','center','VerticalAlignment','bottom');
+
+	%loope over the patches
+	for i=1:numberofticks-1,
+		Au=Bu;
+		Ad=Bd;
+		Bu=[Au(1)+unitlength Ad(2)+widthscale];
+		Bd=[Ad(1)+unitlength Ad(2)];
+		Tick=(Tick+unitlength)*unitscale;
+
+		%pathes
+		if flag==-1
+			p=patch([Ad(1) Bd(1) Bu(1) Au(1)],[Ad(2) Bd(2) Bu(2) Au(2)],2*ones(1,4),'Black');
+		else
+			p=patch([Ad(1) Bd(1) Bu(1) Au(1)],[Ad(2) Bd(2) Bu(2) Au(2)],2*ones(1,4),'White');
+		end
+
+		%flip flag
+		flag=-flag;
+
+		%Text
+		xt=Bu(1);
+		yt=Bu(2)+widthscale;
+		if i~=numberofticks-1,
+			text(xt,yt,2,num2str(round_ice(Tick/1000,3)),'FontSize',fontsize,'FontWeight',fontweight,'Color',fontcolor,'HorizontalAlignment','center','VerticalAlignment','bottom');
+		end
+	end
+	text(xt,yt,2,num2str(round_ice(Tick/1000,3)),'FontSize',fontsize,'FontWeight',fontweight,'Color',fontcolor,'HorizontalAlignment','center','VerticalAlignment','bottom');
+	% add leading spaces depending on length of label string
+	str=' km';
+	for i=1:numel(num2str(round_ice(Tick/1000,3))),
+		str=[' ' str];
+	end
+	text(xt,yt,2,str,'FontSize',fontsize,'FontWeight',fontweight,'Color',fontcolor,'HorizontalAlignment','left','VerticalAlignment','bottom');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/showregion.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/showregion.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/showregion.m	(revision 27955)
@@ -0,0 +1,34 @@
+function showregion(md,insetpos)
+%SHOWREGION - show region on plot
+%
+%   Usage:
+%      showregion(md,insetpos);
+
+%get inset relative position (x,y,width,height)
+%insetpos=getfieldvalue(options,'insetpos',[0.02 0.70 0.18 0.18]);
+
+%get current plos position
+cplotpos=get(gca,'pos');
+%compute inset position
+PosInset=[cplotpos(1)+insetpos(1)*cplotpos(3),cplotpos(2)+insetpos(2)*cplotpos(4), insetpos(3)*cplotpos(3), insetpos(4)*cplotpos(4)];
+axes('pos',PosInset);
+axis equal off
+%box off
+if md.mesh.epsg==3413,
+	A=expread(['/u/astrid-r1b/ModelData/Exp/Greenland.exp']);
+elseif md.mesh.epsg==3031,
+	A=expread(['/u/astrid-r1b/ModelData/Exp/Antarctica.exp']);
+else
+	error('md.mesh.epsg not supported yet');
+end
+
+Ax=[min(A.x) max(A.x)];
+Ay=[min(A.y) max(A.y)];
+
+mdx=[min(md.mesh.x) max(md.mesh.x)];
+mdy=[min(md.mesh.y) max(md.mesh.y)];
+
+line(A.x,A.y,'color','b');
+patch([Ax(1)  Ax(2)  Ax(2)  Ax(1) Ax(1)],[Ay(1)  Ay(1)  Ay(2)  Ay(2) Ay(1)],[1 1 1],'EdgeColor',[0 0 0],'LineWidth',1,'FaceLighting','none')
+patch( [mdx(1) mdx(2) mdx(2) mdx(1)],[mdy(1) mdy(1) mdy(2) mdy(2)],ones(4,1),'EdgeColor',[0 0 0],'FaceColor','r','FaceAlpha',0.5)
+colorbar('off');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/slider.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/slider.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/slider.js	(revision 27955)
@@ -0,0 +1,140 @@
+function sliderInit(){ //{{{
+	/*
+	Name:
+		sliderInit
+	
+	Description:
+		Initialize slider corresponding to passed selector with passed value,
+		minimum and maximum values, step (which is the increment for the 
+		slider), and callback function (which is called when slider is changed). 
+	
+		Options are passed as pairs to the function according to the usage 
+		example below.
+	
+	Usage:
+		sliderInit(
+			'selector', #some-element, 
+			'value', 0,
+			'min', -1,
+			'max', 1,
+			'step', 0.1,
+			'callback', function(value){someEngineFunction(value)}
+		);
+	
+	NOTE:	jQuery Mobile will reflect changes to slider in its input "label" 
+			based on the width of the slider. For example, step might be set to
+			0.1, but if the width of the slider is too narrow, changes to the 
+			slider will only be reflected in whole numeral increments in the
+			slider' label. That said, *all* sliders can be adjusted via the
+			"up" and "down" keys by whatever increment step is set to.
+	*/
+
+	// Convert arguments to options
+	var args 		= Array.prototype.slice.call(arguments);
+	var options 	= new pairoptions(args.slice());
+
+	// Recover option values
+	var selector	= options.getfieldvalue('selector', '');
+	var value 		= options.getfieldvalue('value', 0);
+	var callback 	= options.getfieldvalue('callback', function(event, ui){});
+	var min 		= options.getfieldvalue('min', 0.6 * value);
+	var max 		= options.getfieldvalue('max', 1.4 * value);
+	var step 		= options.getfieldvalue('step', 1);
+
+	/*
+		Update slider attributes.
+		
+		NOTE:	Although slider has already been created, need to call slider() 
+				in order to avoid:
+				
+					Error: cannot call methods on slider prior to 
+					initialization; attempted to call method 'refresh'
+					
+				Attempted all other methods for intialization of slider widget
+				from jQuery Mobile, and this is the only one that seemed to work
+				(see index.php for related markup).
+	*/
+	$(selector).slider();
+	$(selector).val(value);
+	$(selector).attr('min', min);
+	$(selector).attr('max', max);
+	$(selector).attr('step', step);
+	$(selector).on('slidestop', function(event, ui){
+		callback(parseFloat($(selector).val()));
+	});
+	$(selector).slider('refresh'); //Slider must be "refreshed" after any JavaScript change to it, as it is an AJAX object.
+} //}}}
+
+function sliderMoveInput(selector){ //{{{
+	/*
+	Name:
+		sliderMoveInput
+	
+	Description:
+		Appends a jQuery Mobile slider input to an element whose selector 
+		adheres to the following protocol,
+		
+			destination = sliderSelector + '-value'
+			
+	Usage:
+		sliderMoveInput('#someSliderSelector');
+		
+	NOTE:	Destination element must, obviously, be hardcoded into markup for a
+			call to this function to work as expected.
+	*/
+	$(selector).appendTo(selector + '-value');
+	$(selector).slider('refresh'); //Slider must be "refreshed" after any JavaScript change to it, as it is an AJAX object.
+} //}}}
+
+function progressInit(){ //{{{
+	
+	// Convert arguments to options.
+	var args 			= Array.prototype.slice.call(arguments);
+	var options 		= new pairoptions(args.slice());
+	
+	// Recover option values
+	var sim 			= options.getfieldvalue('sim', '');
+	
+	var canvas 			= $(sim + '-canvas')[0];
+	var progressBar 	= $(sim + '-controls-slider-progress');
+	var playButton 		= $(sim + '-controls-button-play');
+	var reverseButton 	= $(sim + '-controls-button-reverse');
+	var timeText 		= $(sim + '-controls-progress-time');
+	
+	/*
+		Update slider attributes.
+		
+		NOTE:	Although slider has already been created, need to call slider() 
+				in order to avoid:
+				
+					Error: cannot call methods on slider prior to 
+					initialization; attempted to call method 'refresh'
+					
+				Attempted all other methods for intialization of slider widget
+				from jQuery Mobile, and this is the only one that seemed to work
+				(see index.php for related markup).
+	*/
+	$(progressBar).slider();
+	$(progressBar).val(value);
+	$(progressBar).attr('min', 0);
+	$(progressBar).attr('max', 1);
+	$(progressBar).attr('step', 1);
+	$(progressBar).on('slidestart', function(event, ui){
+		onSlideStart(canvas, progressBar);
+	});
+	$(progressBar).on('change', function(event, ui){
+		onSlideChange(canvas, progressBar);
+	});
+	$(progressBar).on('slidestop', function(event, ui){
+		onSlideStop(canvas, progressBar);
+	});
+	$(progressBar).slider('refresh'); //Slider must be "refreshed" after any JavaScript change to it, as it is an AJAX object.	
+
+	playButton.click(function(){
+		toggleMoviePlay(canvas);
+	});
+	
+	canvas.progressBar = progressBar;
+	canvas.playButton = playButton;
+	canvas.timeLabel = timeText;
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/squarezoom.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/squarezoom.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/squarezoom.m	(revision 27955)
@@ -0,0 +1,20 @@
+function squarezoom()
+%SQUAREZOOM - zoom on a part of a figure
+%
+%   Usage:
+%      squarezoom()
+
+disp('Click twice to define a square where you want to zoom. First click for upper left corner, second for lower right corner');
+[x,y]=ginput(2);
+dx=x(2)-x(1);
+dy=y(1)-y(2);
+
+if dx>dy,
+	delta=dx-dy;
+	xlim([x(1) x(2)]);
+	ylim([y(2)-delta/2 y(1)+delta/2]);
+else
+	delta=dy-dx;
+	xlim([x(1)-delta/2 x(2)+delta/2]);
+	ylim([y(2) y(1)]);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/subplotmodel.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/subplotmodel.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/subplotmodel.m	(revision 27955)
@@ -0,0 +1,58 @@
+function ha=subplotmodel(nlines,ncols,num,options)
+%SUBPLOTMODEL -  tight subplot that includes margins
+%
+%   Usage:
+%      h=subplotmodel(nlines,ncols,i,options)
+
+box=getfieldvalue(options,'box','off');
+if strcmpi(box,'on'),
+	visible='on';
+else
+	visible='off';
+end
+
+%Do we specify axes?
+if exist(options,'axes')
+	ax = getfieldvalue(options,'axes');
+	ha = axes('Units','normalized', ...
+		'Position',ax,'XTickLabel','','YTickLabel','',...
+		'Visible',visible,'box',box);
+	return
+end
+
+%Regular subplot
+if ~exist(options,'tightsubplot')
+	if exist(options,'asymsubplot')
+		id=getfieldvalue(options,'asymsubplot',num);
+		subplot(nlines,ncols,id);
+		return
+	else
+		subplot(nlines,ncols,num);
+		return;
+	end
+end
+
+gap     = getfieldvalue(options,'gap',[.01 .01]);
+hmargin = getfieldvalue(options,'hmargin',[.01 .01]);
+vmargin = getfieldvalue(options,'vmargin',[.01 .01]);
+
+height = (1-sum(vmargin)-(nlines-1)*gap(1))/nlines; 
+width  = (1-sum(hmargin)-(ncols-1)*gap(2))/ncols;
+ymin   = 1-vmargin(2)-height; 
+
+for i = 1:nlines
+	xmin = hmargin(1);
+	for j = 1:ncols
+		if(((i-1)*ncols+j)==num)
+			ha = axes('Units','normalized', ...
+				'Position',[xmin ymin width height],'XTickLabel','','YTickLabel','',...
+				'Visible',visible,'box',box);
+			return
+		end
+		xmin = xmin+width+gap(2);
+	end
+	ymin = ymin-height-gap(1);
+end
+
+%Activate new axes
+axes(ha);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/vim.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/vim.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/vim.m	(revision 27955)
@@ -0,0 +1,3 @@
+function vim(index,x,y,field)
+
+trisurf(index,x,y,field),view(2),shading interp, colorbar;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/writejsfield.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/writejsfield.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/writejsfield.m	(revision 27955)
@@ -0,0 +1,29 @@
+function writejsfield(fid,name,variable,nods)
+%WRITEJSFIELD - write variable to javascript file 
+%
+%   Usage:
+%      writejsfield(fid,name,variable)
+%
+
+	%write array:
+	if size(variable,2)==1,
+		fprintf(fid,'<!-- %s{{{-->\n',name);
+		fprintf(fid,'%s=[',name);
+		for i=1:nods-1,
+			fprintf(fid,'%g,',variable(i));
+		end
+		fprintf(fid,'%g];\n',variable(end));
+		fprintf(fid,'<!--}}}-->\n');
+	else
+		%multi-sized array: 
+		fprintf(fid,'<!-- %s{{{-->\n',name);
+		fprintf(fid,'%s=[]\n',name);
+		for i=1:size(variable,2),
+			fprintf(fid,'%s["%i"]=[',name,i);
+			for j=1:nods-1,
+				fprintf(fid,'%g,',variable(j,i));
+			end
+			fprintf(fid,'%g];\n',variable(end,i));
+		end
+		fprintf(fid,'<!--}}}-->\n');
+	end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/writejsfield.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/writejsfield.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/writejsfield.py	(revision 27955)
@@ -0,0 +1,28 @@
+import numpy as np
+
+
+def writejsfield(fid, name, variable, nods):
+    #WRITEJSFIELD - write variable to javascript file
+    #
+    #   Usage:
+    #      writejsfield(fid, name, variable)
+    #
+    #write array:
+    #if not isinstance(variable, list):
+    if type(variable[0]) == np.float64:
+        fid.write('<!-- {0}{{{{{{-->\n'.format(name))
+        fid.write('{0}=['.format(name))
+        for i in range(0, nods - 1):
+            fid.write('{0}, '.format(variable[i]))
+        fid.write('{0}];\n'.format(variable[-1]))
+        fid.write('<!--}}}}}}-->\n')
+    else:
+        #multi - sized array:
+        fid.write('<!-- {0}{{{{{{-->\n'.format(name))
+        fid.write('{0} = []\n'.format(name))
+        for i in range(0, len(variable[2])):
+            fid.write('{0}["{1}"] = ['.format(name, i))
+            for j in range(1, nods - 1):
+                fid.write('{0}, '.format(variable[j][i]))
+            fid.write('{0}];\n'.format(variable[-1][i]))
+        fid.write('<!--}}}}}}-->\n')
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/writejsfile.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/writejsfile.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/writejsfile.m	(revision 27955)
@@ -0,0 +1,59 @@
+function writejsfile(filename,model,keyname)
+%WRITEJSFILE - write model file to javascript database
+%
+%   Usage:
+%      writejsfile(filename,model,keyname)
+%
+
+	nods=length(model.x);
+	nel=size(model.index,1);
+	nx=length(model.contourx1);
+	
+	fid=fopen(filename,'w');
+
+	fprintf(fid,'model = {};\n');
+	fprintf(fid,'model["title"]="%s";\n',model.title);
+	fprintf(fid,'model["initialZoomFactor"]=%s;\n',model.initialZoomFactor);
+	
+	%write index:
+	fprintf(fid,'<!-- model["index"]{{{-->\n');
+	fprintf(fid,'model["index"]=[');
+	for i=1:nel-1,
+		fprintf(fid,'[%i, %i, %i],',model.index(i,1),model.index(i,2),model.index(i,3));
+	end
+	fprintf(fid,'[%i, %i, %i]];\n',model.index(end,1),model.index(end,2),model.index(end,3));
+	fprintf(fid,'<!--}}}-->\n');
+	
+	writejsfield(fid,'model["x"]',model.x,nods);
+	writejsfield(fid,'model["y"]',model.y,nods);
+	writejsfield(fid,'model["z"]',model.z,nods);
+	writejsfield(fid,'model["surface"]',model.surface,nods);
+	writejsfield(fid,'model["contourx1"]',model.contourx1,nx);
+	writejsfield(fid,'model["contoury1"]',model.contoury1,nx);
+	writejsfield(fid,'model["contourz1"]',model.contourz1,nx);
+	writejsfield(fid,'model["contourx2"]',model.contourx2,nx);
+	writejsfield(fid,'model["contoury2"]',model.contoury2,nx);
+	writejsfield(fid,'model["contourz2"]',model.contourz2,nx);
+
+
+	results=model.results;
+	fprintf(fid,'results={};\n');
+
+	for i=1:length(results),
+		fprintf(fid,'result={};\n');
+		writejsfield(fid,'result["data"]',results(i).data,nods);
+		fprintf(fid,'<!--{{{-->\n');
+		fprintf(fid,'result["caxis"]=[%g,%g];\n',results(i).caxis(1),results(i).caxis(2));
+		fprintf(fid,'result["label"]="%s";\n',results(i).label);
+		fprintf(fid,'result["shortlabel"]="%s";\n',results(i).shortlabel);
+		fprintf(fid,'result["unit"]="%s";\n',results(i).unit);
+		if size(results(i).data,2)>1,
+			fprintf(fid,'result["time_range"]=[%g,%g];\n',results(i).time_range(1),results(i).time_range(2));
+		end
+		fprintf(fid,'results["%i"]=result;\n',i);
+		fprintf(fid,'<!--}}}-->\n');
+	end
+	fprintf(fid,'model.results=results;\n');
+	fprintf(fid,'models["%s"]=model;\n',keyname);
+
+	fclose(fid);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/plot/writejsfile.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/plot/writejsfile.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/plot/writejsfile.py	(revision 27955)
@@ -0,0 +1,59 @@
+import numpy as np
+from writejsfield import writejsfield
+
+
+def writejsfile(filename, model, keyname):
+    #WRITEJSFILE - write model file to javascript database
+    #
+    #   Usage:
+    #      writejsfile(filename, model, keyname)
+    #
+
+    nods = len(model.x)
+    nel = len(model.index)
+    nx = len(model.contourx1)
+    print(filename)
+    fid = open(filename, 'w', 0)
+
+    fid.write('model = {};\n')
+    fid.write('model["title"] = "{0}";\n'.format(model.title))
+    fid.write('model["initialZoomFactor"]={0};\n'.format(model.initialZoomFactor))
+    #write index:
+    fid.write('<!-- model["index"]{{{-->\n')
+    fid.write('model["index"]=[')
+    for i in range(0, nel - 1):
+        fid.write('[{0},{1},{2}], '.format(model.index[i][0], model.index[i][1], model.index[i][2]))
+    fid.write('[{0},{1},{2}]];\n'.format(model.index[-1][0], model.index[-1][1], model.index[-1][2]))
+    fid.write('<!--}}}-->\n')
+    print('writing model coordinates')
+    writejsfield(fid, 'model["x"]', model.x, nods)
+    writejsfield(fid, 'model["y"]', model.y, nods)
+    writejsfield(fid, 'model["z"]', model.z, nods)
+    writejsfield(fid, 'model["surface"]', model.surface, nods)
+    writejsfield(fid, 'model["contourx1"]', model.contourx1, nx)
+    writejsfield(fid, 'model["contoury1"]', model.contoury1, nx)
+    writejsfield(fid, 'model["contourz1"]', model.contourz1, nx)
+    writejsfield(fid, 'model["contourx2"]', model.contourx2, nx)
+    writejsfield(fid, 'model["contoury2"]', model.contoury2, nx)
+    writejsfield(fid, 'model["contourz2"]', model.contourz2, nx)
+
+    print('writing results')
+    results = model.results
+    fid.write('results={};\n')
+
+    for i in range(0, len(results)):
+        fid.write('result={};\n')
+        writejsfield(fid, 'result["data"]', results[i].data, nods)
+        fid.write('<!--{{{-->\n')
+        fid.write('result["caxis"]=[{0},{1}];\n'.format(results[i].caxis[0], results[i].caxis[1]))
+        fid.write('result["label"]="{0}";\n'.format(results[i].label))
+        fid.write('result["shortlabel"]="{0}";\n'.format(results[i].shortlabel))
+        fid.write('result["unit"]="{0}";\n'.format(results[i].unit))
+        if type(results[i].data) == np.float64:
+            fid.write('result["time_range"]=[{0},{1}];\n'.format(results[i].time_range[0], results[i].time_range[1]))
+        fid.write('results["{0}"]=result;\n'.format(i))
+        fid.write('<!--}}}-->\n')
+    fid.write('model.results=results;\n')
+    fid.write('models["{0}"]=model;\n'.format(keyname))
+
+    fid.close()
Index: /issm/branches/trunk-dlcheng-ASE/src/m/print/export_geotiff.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/print/export_geotiff.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/print/export_geotiff.m	(revision 27955)
@@ -0,0 +1,24 @@
+function export_geotiff(filename,ref)
+%EXPORT_GEOTIF - export geotiff 
+%
+%   Usage:
+%      export_geotif(filename,ref);
+%
+%      This function must be called after plotmodel
+%      filname: no extension
+%      ref:     UPS Greenland  EPSG:3413 (http://www.spatialreference.org/ref/epsg/3413/)
+%               UPS Antarctica EPSG:3031 (http://www.spatialreference.org/ref/epsg/3031/)
+%
+%   Example:
+%      export_geotif('Greenland','EPSG:3413');
+
+%Get axis limits and convert to strings
+XLIM = xlim(); x0 = num2str(XLIM(1)); x1 = num2str(XLIM(2));
+YLIM = ylim(); y0 = num2str(YLIM(1)); y1 = num2str(YLIM(2));
+
+%first export the figure
+export_fig([filename '.jpg']);
+
+%call gdal on this: 
+system(['gdal_translate -a_srs ' ref ' -of GTiff -co "INTERLEAVE=PIXEL" -a_ullr ' x0 ' ' y1 ' ' x1 ' ' y0 ' ' filename '.jpg ' filename '.tif']);
+system(['rm -rf ' filename '.jpg']);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/print/sprintf.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/print/sprintf.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/print/sprintf.js	(revision 27955)
@@ -0,0 +1,190 @@
+function sprintf() {
+  //  discuss at: http://phpjs.org/functions/sprintf/
+  // original by: Ash Searle (http://hexmen.com/blog/)
+  // improved by: Michael White (http://getsprink.com)
+  // improved by: Jack
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Dj
+  // improved by: Allidylls
+  //    input by: Paulo Freitas
+  //    input by: Brett Zamir (http://brett-zamir.me)
+  //   example 1: sprintf("%01.2f", 123.1);
+  //   returns 1: 123.10
+  //   example 2: sprintf("[%10s]", 'monkey');
+  //   returns 2: '[    monkey]'
+  //   example 3: sprintf("[%'#10s]", 'monkey');
+  //   returns 3: '[####monkey]'
+  //   example 4: sprintf("%d", 123456789012345);
+  //   returns 4: '123456789012345'
+  //   example 5: sprintf('%-03s', 'E');
+  //   returns 5: 'E00'
+
+  var regex = /%%|%(\d+\$)?([\-+\'#0 ]*)(\*\d+\$|\*|\d+)?(?:\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g;
+  var a = arguments;
+  var i = 0;
+  var format = a[i++];
+
+  // pad()
+  var pad = function(str, len, chr, leftJustify) {
+    if (!chr) {
+      chr = ' ';
+    }
+    var padding = (str.length >= len) ? '' : new Array(1 + len - str.length >>> 0)
+      .join(chr);
+    return leftJustify ? str + padding : padding + str;
+  };
+
+  // justify()
+  var justify = function(value, prefix, leftJustify, minWidth, zeroPad, customPadChar) {
+    var diff = minWidth - value.length;
+    if (diff > 0) {
+      if (leftJustify || !zeroPad) {
+        value = pad(value, minWidth, customPadChar, leftJustify);
+      } else {
+        value = value.slice(0, prefix.length) + pad('', diff, '0', true) + value.slice(prefix.length);
+      }
+    }
+    return value;
+  };
+
+  // formatBaseX()
+  var formatBaseX = function(value, base, prefix, leftJustify, minWidth, precision, zeroPad) {
+    // Note: casts negative numbers to positive ones
+    var number = value >>> 0;
+    prefix = (prefix && number && {
+      '2'  : '0b',
+      '8'  : '0',
+      '16' : '0x'
+    }[base]) || '';
+    value = prefix + pad(number.toString(base), precision || 0, '0', false);
+    return justify(value, prefix, leftJustify, minWidth, zeroPad);
+  };
+
+  // formatString()
+  var formatString = function(value, leftJustify, minWidth, precision, zeroPad, customPadChar) {
+    if (precision !== null && precision !== undefined) {
+      value = value.slice(0, precision);
+    }
+    return justify(value, '', leftJustify, minWidth, zeroPad, customPadChar);
+  };
+
+  // doFormat()
+  var doFormat = function(substring, valueIndex, flags, minWidth, precision, type) {
+    var number, prefix, method, textTransform, value;
+
+    if (substring === '%%') {
+      return '%';
+    }
+
+    // parse flags
+    var leftJustify = false;
+    var positivePrefix = '';
+    var zeroPad = false;
+    var prefixBaseX = false;
+    var customPadChar = ' ';
+    var flagsl = flags.length;
+    var j;
+    for (j = 0; flags && j < flagsl; j++) {
+      switch (flags.charAt(j)) {
+      case ' ':
+        positivePrefix = ' ';
+        break;
+      case '+':
+        positivePrefix = '+';
+        break;
+      case '-':
+        leftJustify = true;
+        break;
+      case "'":
+        customPadChar = flags.charAt(j + 1);
+        break;
+      case '0':
+        zeroPad = true;
+        customPadChar = '0';
+        break;
+      case '#':
+        prefixBaseX = true;
+        break;
+      }
+    }
+
+    // parameters may be null, undefined, empty-string or real valued
+    // we want to ignore null, undefined and empty-string values
+    if (!minWidth) {
+      minWidth = 0;
+    } else if (minWidth === '*') {
+      minWidth = +a[i++];
+    } else if (minWidth.charAt(0) === '*') {
+      minWidth = +a[minWidth.slice(1, -1)];
+    } else {
+      minWidth = +minWidth;
+    }
+
+    // Note: undocumented perl feature:
+    if (minWidth < 0) {
+      minWidth = -minWidth;
+      leftJustify = true;
+    }
+
+    if (!isFinite(minWidth)) {
+      throw new Error('sprintf: (minimum-)width must be finite');
+    }
+
+    if (!precision) {
+      precision = 'fFeE'.indexOf(type) > -1 ? 6 : (type === 'd') ? 0 : undefined;
+    } else if (precision === '*') {
+      precision = +a[i++];
+    } else if (precision.charAt(0) === '*') {
+      precision = +a[precision.slice(1, -1)];
+    } else {
+      precision = +precision;
+    }
+
+    // grab value using valueIndex if required?
+    value = valueIndex ? a[valueIndex.slice(0, -1)] : a[i++];
+
+    switch (type) {
+    case 's':
+      return formatString(String(value), leftJustify, minWidth, precision, zeroPad, customPadChar);
+    case 'c':
+      return formatString(String.fromCharCode(+value), leftJustify, minWidth, precision, zeroPad);
+    case 'b':
+      return formatBaseX(value, 2, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'o':
+      return formatBaseX(value, 8, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'x':
+      return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'X':
+      return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad)
+        .toUpperCase();
+    case 'u':
+      return formatBaseX(value, 10, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'i':
+    case 'd':
+      number = +value || 0;
+      // Plain Math.round doesn't just truncate
+      number = Math.round(number - number % 1);
+      prefix = number < 0 ? '-' : positivePrefix;
+      value = prefix + pad(String(Math.abs(number)), precision, '0', false);
+      return justify(value, prefix, leftJustify, minWidth, zeroPad);
+    case 'e':
+    case 'E':
+    case 'f': // Should handle locales (as per setlocale)
+    case 'F':
+    case 'g':
+    case 'G':
+      number = +value;
+      prefix = number < 0 ? '-' : positivePrefix;
+      method = ['toExponential', 'toFixed', 'toPrecision']['efg'.indexOf(type.toLowerCase())];
+      textTransform = ['toString', 'toUpperCase']['eEfFgG'.indexOf(type) % 2];
+      value = prefix + Math.abs(number)[method](precision);
+      return justify(value, prefix, leftJustify, minWidth, zeroPad)[textTransform]();
+    default:
+      return substring;
+    }
+  };
+
+  return format.replace(regex, doFormat);
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/psl/p_polynomial_prime.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/psl/p_polynomial_prime.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/psl/p_polynomial_prime.m	(revision 27955)
@@ -0,0 +1,85 @@
+function vp = p_polynomial_prime ( m, n, x )
+
+%*****************************************************************************80
+%
+%% P_POLYNOMIAL_PRIME evaluates the derivative of Legendre polynomials P(n,x).
+%
+%  Discussion:
+%
+%    P(0,X) = 1
+%    P(1,X) = X
+%    P(N,X) = ( (2*N-1)*X*P(N-1,X)-(N-1)*P(N-2,X) ) / N
+%
+%    P'(0,X) = 0
+%    P'(1,X) = 1
+%    P'(N,X) = ( (2*N-1)*(P(N-1,X)+X*P'(N-1,X)-(N-1)*P'(N-2,X) ) / N
+%
+%  Licensing:
+%
+%    This code is distributed under the GNU LGPL license. 
+%
+%  Modified:
+%
+%    13 March 2012
+%
+%  Author:
+%
+%    John Burkardt
+%
+%  Reference:
+%
+%    Milton Abramowitz, Irene Stegun,
+%    Handbook of Mathematical Functions,
+%    National Bureau of Standards, 1964,
+%    ISBN: 0-486-61272-4,
+%    LC: QA47.A34.
+%
+%    Daniel Zwillinger, editor,
+%    CRC Standard Mathematical Tables and Formulae,
+%    30th Edition,
+%    CRC Press, 1996.
+%
+%  Parameters:
+%
+%    Input, integer M, the number of evaluation points.
+%
+%    Input, integer N, the highest order polynomial to evaluate.
+%    Note that polynomials 0 through N will be evaluated.
+%
+%    Input, real X(M,1), the evaluation points.
+%
+%    Output, real VP(M,N+1), the values of the derivatives of the
+%    Legendre polynomials of order 0 through N at the point X.
+%
+  if ( n < 0 )
+    vp = [];
+    return
+  end
+
+  v = zeros ( m, n + 1 );
+  vp = zeros ( m, n + 1 );
+
+  v(1:m,1) = 1.0;
+  vp(1:m,1) = 0.0;
+
+  if ( n < 1 )
+    return
+  end
+
+  v(1:m,2) = x(1:m,1);
+  vp(1:m,2) = 1.0;
+ 
+  for i = 2 : n
+ 
+    v(1:m,i+1) = ( ( 2 * i - 1 ) * x(1:m,1) .* v(1:m,i)     ...
+                 - (     i - 1 ) *             v(1:m,i-1) ) ...
+                 / (     i     );
+ 
+    vp(1:m,i+1) = ( ( 2 * i - 1 ) * ( v(1:m,i) + x(1:m,1) .* vp(1:m,i) )   ...
+                  - (     i - 1 ) *                          vp(1:m,i-1) ) ...
+                  / (     i     );
+ 
+  end
+ 
+  return
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/psl/p_polynomial_value.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/psl/p_polynomial_value.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/psl/p_polynomial_value.m	(revision 27955)
@@ -0,0 +1,120 @@
+function v = p_polynomial_value ( m, n, x )
+
+%*****************************************************************************80
+%
+%% P_POLYNOMIAL_VALUE evaluates the Legendre polynomials P(n,x).
+%
+%  Discussion:
+%
+%    P(n,1) = 1.
+%    P(n,-1) = (-1)^N.
+%    | P(n,x) | <= 1 in [-1,1].
+%
+%    The N zeroes of P(n,x) are the abscissas used for Gauss-Legendre
+%    quadrature of the integral of a function F(X) with weight function 1
+%    over the interval [-1,1].
+%
+%    The Legendre polynomials are orthogonal under the inner product defined
+%    as integration from -1 to 1:
+%
+%      Integral ( -1 <= X <= 1 ) P(I,X) * P(J,X) dX 
+%        = 0 if I =/= J
+%        = 2 / ( 2*I+1 ) if I = J.
+%
+%    Except for P(0,X), the integral of P(I,X) from -1 to 1 is 0.
+%
+%    A function F(X) defined on [-1,1] may be approximated by the series
+%      C0*P(0,x) + C1*P(1,x) + ... + CN*P(n,x)
+%    where
+%      C(I) = (2*I+1)/(2) * Integral ( -1 <= X <= 1 ) F(X) P(I,x) dx.
+%
+%    The formula is:
+%
+%      P(n,x) = (1/2^N) * sum ( 0 <= M <= N/2 ) C(N,M) C(2N-2M,N) X^(N-2*M)
+%
+%  Differential equation:
+%
+%    (1-X*X) * P(n,x)'' - 2 * X * P(n,x)' + N * (N+1) = 0
+%
+%  First terms:
+%
+%    P( 0,x) =      1
+%    P( 1,x) =      1 X
+%    P( 2,x) = (    3 X^2 -       1)/2
+%    P( 3,x) = (    5 X^3 -     3 X)/2
+%    P( 4,x) = (   35 X^4 -    30 X^2 +     3)/8
+%    P( 5,x) = (   63 X^5 -    70 X^3 +    15 X)/8
+%    P( 6,x) = (  231 X^6 -   315 X^4 +   105 X^2 -     5)/16
+%    P( 7,x) = (  429 X^7 -   693 X^5 +   315 X^3 -    35 X)/16
+%    P( 8,x) = ( 6435 X^8 - 12012 X^6 +  6930 X^4 -  1260 X^2 +   35)/128
+%    P( 9,x) = (12155 X^9 - 25740 X^7 + 18018 X^5 -  4620 X^3 +  315 X)/128
+%    P(10,x) = (46189 X^10-109395 X^8 + 90090 X^6 - 30030 X^4 + 3465 X^2-63)/256
+%
+%  Recursion:
+%
+%    P(0,x) = 1
+%    P(1,x) = x
+%    P(n,x) = ( (2*n-1)*x*P(n-1,x)-(n-1)*P(n-2,x) ) / n
+%
+%    P'(0,x) = 0
+%    P'(1,x) = 1
+%    P'(N,x) = ( (2*N-1)*(P(N-1,x)+X*P'(N-1,x)-(N-1)*P'(N-2,x) ) / N
+%
+%  Licensing:
+%
+%    This code is distributed under the GNU LGPL license. 
+%
+%  Modified:
+%
+%    10 March 2012
+%
+%  Author:
+%
+%    John Burkardt
+%
+%  Reference:
+%
+%    Milton Abramowitz, Irene Stegun,
+%    Handbook of Mathematical Functions,
+%    National Bureau of Standards, 1964,
+%    ISBN: 0-486-61272-4,
+%    LC: QA47.A34.
+%
+%    Daniel Zwillinger, editor,
+%    CRC Standard Mathematical Tables and Formulae,
+%    30th Edition,
+%    CRC Press, 1996.
+%
+%  Parameters:
+%
+%    Input, integer M, the number of evaluation points.
+%
+%    Input, integer N, the highest order polynomial to evaluate.
+%    Note that polynomials 0 through N will be evaluated.
+%
+%    Input, real X(M,1), the evaluation points.
+%
+%    Output, real V(M,1:N+1), the values of the Legendre polynomials 
+%    of order 0 through N at the points X.
+%
+  if ( n < 0 )
+    v = [];
+    return
+  end
+
+  v = ones ( m, n + 1 );
+
+  if ( n < 1 )
+    return
+  end
+
+  v(1:m,2) = x;
+
+  for i = 2 : n
+ 
+    v(:,i+1) = ( ( 2 * i - 1 ) * x .* v(:,i)   ...
+                -  (     i - 1 ) *    v(:,i-1) ) ...
+                /  (     i     );
+ 
+  end
+ 
Index: /issm/branches/trunk-dlcheng-ASE/src/m/psl/sharmonics.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/psl/sharmonics.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/psl/sharmonics.m	(revision 27955)
@@ -0,0 +1,32 @@
+function sh = sharmonics(lat,lon,lMax) 
+
+%SHarmonics :: a function to compute (ortho-)normalized shperical harmonics 
+% 
+%USAGE: sh = sharmonics(lat,lon,lmax); 
+%
+%lat (latitude in [0,180] degrees from the north pole) 
+%lon (longitude in [0 360] degrees) 
+%lmax (maximum SH degree you wish to compute) 
+%
+%sh (spherical harmonics of degree and orders up to "lmax"... 
+%...numbered as 1(l=0), 2(l=1,m=-1), 3(l=1,m=0), 4(l=1,m=1)...) 
+%
+
+q=0;
+% 	
+lat=lat*pi/180;
+lon=lon*pi/180; 
+
+%disp(['Spherical harmonics of degree and orders up to ',num2str(lMax),' being computed...']);
+%ortho-normalized SH 
+for l=0:lMax
+   plm = legendre(l,cos(lat),'norm'); %nromalized Plm (see Matlab documents)
+   for m=-l:l 
+		sh(:,1+q)=plm(abs(m)+1,:)'.*(cos(abs(m).*lon)*(m>=0)+sin(abs(m).*lon)*(m<0)).*sqrt((2-(m==0))*2); %4-pi norm 
+      q=q+1;
+   end
+   %disp(['Spherical Harmonics of degree ',num2str(l),' (of ',num2str(lMax),') computed!']);
+end
+%disp(['... done!']);
+
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/psl/shlm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/psl/shlm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/psl/shlm.m	(revision 27955)
@@ -0,0 +1,27 @@
+function sh_lm = shlm(index,sh,lMax,func,areas) 
+
+%SHLM :: a function to compute SH coefficients of a function 
+% 
+%USAGE: sh_lm = shlm(index,sh,lMax,func,areas); 
+%
+%index (md.mesh.elements) 
+%sh (spherical harmonics) 
+%lMax (maximum SH degree to be considered) 
+%func (any function) 
+%areas (area of elements) 
+%
+
+p = 0; 
+
+sh_lm = zeros((lMax+1)^2,1); 
+
+% weighted area integration over the unit sphere 
+for l=0:lMax
+   for m=-l:l
+      func0 = sh(:,1+p).*func; 
+      sh_lm(1+p) = sum(mean(func0(index),2).*areas); 
+      p = p+1;
+   end
+end 
+sh_lm = sh_lm/sum(areas);
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/psl/shlm_element.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/psl/shlm_element.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/psl/shlm_element.m	(revision 27955)
@@ -0,0 +1,26 @@
+function sh_lm = shlm_element(index,sh,lMax,func,areas) 
+
+%SHLM :: a function to compute SH coefficients of a function 
+% 
+%USAGE: sh_lm = shlm(index,sh,lMax,func,areas); 
+%
+%index (md.mesh.elements) 
+%sh (spherical harmonics) 
+%lMax (maximum SH degree to be considered) 
+%func (any function) 
+%areas (area of elements) 
+%
+
+p = 0; 
+
+sh_lm = zeros((lMax+1)^2,1); 
+
+% weighted area integration over the unit sphere 
+for l=0:lMax
+   for m=-l:l
+      func0 = sh(:,1+p).*func; 
+      sh_lm(1+p) = sum(func0.*areas); 
+      p = p+1;
+   end
+end 
+sh_lm = sh_lm/sum(areas);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/MassFluxProcessProfile.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/MassFluxProcessProfile.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/MassFluxProcessProfile.m	(revision 27955)
@@ -0,0 +1,13 @@
+function segments=MassFluxProcessProfile(md,directory,profilename)
+%MASSFLUXPROCESSPROFILE: process an argus domain outlien profile into a list of segments.
+%
+% Usage: segments=MassFluxProcessProfile(md);
+%
+%
+% See also: PROCESS_QMU_RESPONSE_DATA, PREQMU
+
+%first read the profile points.
+profile=expread([directory '/' profilename]);
+
+%project this profile onto mesh.
+segments=ProfileProjectOntoMesh(md,profile);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_cdfs.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_cdfs.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_cdfs.m	(revision 27955)
@@ -0,0 +1,330 @@
+%
+%  calculate the same cumulative distribution functions that dakota
+%  calculates for given responses, probabilities, reliabilities, and/or
+%  general reliabilities.
+%
+%  [dresp]=dakota_cdfs(method,dresp      ,resp,prob,rel,grel)
+%  [cdf  ]=dakota_cdfs(method,samp       ,resp,prob,rel,grel)
+%  [cdf  ]=dakota_cdfs(method,mean,stddev,resp,prob,rel,grel)
+%
+%  the required input is:
+%    method        (char, 'nond_sampling' or 'nond_local_reliability')
+%    dresp         (structure array, responses)
+%      or
+%    samp          (double array, lists of samples)
+%      or
+%    mean          (double vector, means)
+%    stddev        (double vector, standard deviations)
+%    resp          (double vector, list of responses)
+%    prob          (double vector, list of probabilities)
+%    rel           (double vector, list of reliabilities)
+%    grel          (double vector, list of general reliabilities)
+%
+%  and the optional input is:
+%    alpha         (numeric, confidence interval of 100(1-alpha)%)
+%
+%  the required field of dresp is (for nond_sampling):
+%    sample        (double vector, list of samples)
+%  or (for nond_local_reliability):
+%    mean          (double, mean of samples)
+%    stddev        (double, standard deviation of samples)
+%
+%  the required output is:
+%    dresp         (structure array, responses)
+%      or
+%    cdf(:,4)      (double, array of resp/prob/rel/grel)
+%
+%  and the output fields of dresp are:
+%    cdf(:,4)      (double, array of resp/prob/rel/grel)
+%
+%  for each response (or column of data) in the input array, this
+%  function calculates the responses, probabilities, reliabilities
+%  and general reliabilities for the cumulative distribution function,
+%  the same way as dakota would.  if the input is a structure, the
+%  output is a field in the structure; if the input is arrays, the
+%  output is an array.
+%
+%  dresp data would typically be contained in the dakota tabular
+%  output file from a sampling analysis, or in the dakota output file
+%  from a local reliability analysis, either read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function [varargout]=dakota_cdfs(varargin)
+
+if ~nargin
+    help dakota_cdfs
+    return
+end
+
+%%  process input data
+
+iarg=1;
+if ischar(varargin{iarg})
+    method=varargin{iarg};
+    iarg=iarg+1;
+    if ~strncmpi(method,'nond_s',6) && ~strncmpi(method,'nond_l',6)
+        error(['Method ''' method ''' is unrecognized.']);
+    end
+else
+    method='';
+end
+
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+else
+    if     strncmpi(method,'nond_s',6)
+        samp=varargin{iarg};
+        iarg=iarg+1;
+    elseif strncmpi(method,'nond_l',6)
+        mean  =varargin{iarg};
+        iarg=iarg+1;
+        stddev=varargin{iarg};
+        iarg=iarg+1;
+    end
+end
+
+if iarg <= nargin && isnumeric(varargin{iarg})
+    resp=varargin{iarg};
+    iarg=iarg+1;
+else
+    resp=[];
+end
+if iarg <= nargin && isnumeric(varargin{iarg})
+    prob=varargin{iarg};
+    iarg=iarg+1;
+else
+    prob=[];
+end
+if iarg <= nargin && isnumeric(varargin{iarg})
+    rel =varargin{iarg};
+    iarg=iarg+1;
+else
+    rel =[];
+end
+if iarg <= nargin && isnumeric(varargin{iarg})
+    grel=varargin{iarg};
+    iarg=iarg+1;
+else
+    grel=[];
+end
+
+%%  calculate the cumulative distribution functions by input type
+
+if     exist('dresp','var') && ~isempty(dresp)
+    if     strncmpi(method,'nond_s',6)
+        for i=1:length(dresp)
+            [dresp(i).cdf]=cdfs_samp_calc(dresp(i).sample,...
+                resp,prob,rel,grel);
+        end
+    elseif strncmpi(method,'nond_l',6)
+        for i=1:length(dresp)
+            [dresp(i).cdf]=cdfs_lr_calc(dresp(i).mean,dresp(i).stddev,...
+                resp,prob,rel,grel);
+        end
+    end
+
+    varargout{1}=dresp;
+
+elseif exist('samp','var') && ~isempty(samp)
+    cdf=zeros(length(resp)+length(prob)+length(rel)+length(grel),...
+              4,size(samp,2));
+
+    for i=1:size(samp,2)
+        [cdf(:,:,i)]=cdfs_samp_calc(samp(:,i),...
+            resp,prob,rel,grel);
+    end
+
+    varargout{1}=cdf;
+
+elseif exist('mean','var'  ) && ~isempty(mean  ) && ...
+       exist('stddev','var') && ~isempty(stddev)
+    cdf=zeros(length(resp)+length(prob)+length(rel)+length(grel),...
+              4,length(mean));
+
+    for i=1:length(mean)
+        [cdf(:,:,i)]=cdfs_lr_calc(mean(i),stddev(i),...
+            resp,prob,rel,grel);
+    end
+
+    varargout{1}=cdf;
+else
+    error(['Empty data ''' inputname(2) ''' of type ''' class(varargin{2}) '''.']);
+end
+
+end
+
+%%  function to calculate the results for a sampling analysis
+
+function [cdf]=cdfs_samp_calc(samp,resp,prob,rel,grel)
+
+%  sort the samples and remove any NaN padding (should only occur at end)
+
+    samp=sort(samp(~isnan(samp(:))),'ascend');
+    nsamp=length(samp);
+
+    mu   =mean(samp);
+    sigma=std(samp);
+
+    cdf=zeros(length(resp)+length(prob)+length(rel)+length(grel),4);
+    cdf(:,:)=NaN;
+    irow=0;
+
+%  compute quantities, given response levels
+
+    for i=1:length(resp)
+        irow=irow+1;
+        indx=bin_search_val(resp(i),samp);
+        cdf(irow,1)=resp(i);
+        cdf(irow,2)=indx/nsamp;
+        cdf(irow,3)=(mu-resp(i))/sigma;
+%        cdf(irow,4)=-sqrt(2)*erfinv((indx-nsamp/2)/(nsamp/2));
+        cdf(irow,4)=sqrt(2)*erfcinv(indx/(nsamp/2));
+    end
+
+%  compute response levels, given probabilities
+
+    for i=1:length(prob)
+        irow=irow+1;
+%  why not round(prob(i)*(nsamp-1)+1)?
+        indx=ceil(prob(i)*(nsamp));
+        if     (indx < 1)
+            indx=1;
+        elseif (indx > nsamp)
+            indx=nsamp;
+        end
+        cdf(irow,1)=samp(indx);
+        cdf(irow,2)=prob(i);
+    end
+
+%  compute response levels, given reliabilities
+
+    for i=1:length(rel)
+        irow=irow+1;
+        cdf(irow,1)=mu-sigma*rel(i);
+        cdf(irow,3)=rel(i);
+    end
+
+%  compute response levels, given general reliabilities
+
+    for i=1:length(grel)
+        irow=irow+1;
+%         indx=ceil(nsamp/2+nsamp/2*erf(-grel(i)/sqrt(2)));
+        indx=ceil((nsamp/2)*erfc(grel(i)/sqrt(2)));
+        if     (indx < 1)
+            indx=1;
+        elseif (indx > nsamp)
+            indx=nsamp;
+        end
+        cdf(irow,1)=samp(indx);
+        cdf(irow,4)=grel(i);
+    end
+
+end
+
+%%  function to calculate the results for a local reliability analysis
+
+function [cdf]=cdfs_lr_calc(mu,sigma,resp,prob,rel,grel)
+
+    cdf=zeros(length(resp)+length(prob)+length(rel)+length(grel),4);
+    irow=0;
+
+%  compute quantities, given response levels
+
+    for i=1:length(resp)
+        irow=irow+1;
+        cdf(irow,1)=resp(i);
+        cdf(irow,2)=normcdf_issm(resp(i),mu,sigma);
+        cdf(irow,3)=(mu-resp(i))/sigma;
+        cdf(irow,4)=(mu-resp(i))/sigma;
+    end
+
+%  compute quantities, given probabilities
+
+    for i=1:length(prob)
+        irow=irow+1;
+        cdf(irow,1)=norminv_issm(prob(i),mu,sigma);
+        cdf(irow,2)=prob(i);
+        cdf(irow,3)=-norminv_issm(prob(i),0,1);
+        cdf(irow,4)=-norminv_issm(prob(i),0,1);
+    end
+
+%  compute quantities, given reliabilities
+
+    for i=1:length(rel)
+        irow=irow+1;
+        cdf(irow,1)=mu-sigma*rel(i);
+        cdf(irow,2)=normcdf_issm(-rel(i),0,1);
+        cdf(irow,3)=rel(i);
+        cdf(irow,4)=rel(i);
+    end
+
+%  compute quantities, given general reliabilities
+
+    for i=1:length(grel)
+        irow=irow+1;
+        cdf(irow,1)=mu-sigma*grel(i);
+        cdf(irow,2)=normcdf_issm(-grel(i),0,1);
+        cdf(irow,3)=grel(i);
+        cdf(irow,4)=grel(i);
+    end
+
+end
+%%
+%  function to perform a recursive binary search for a matrix of values
+%  in an ordered vector (loop separately outside of recursion for
+%  efficiency purposes)
+%
+%  function [ind]=bin_search(val,vect)
+%
+function [ind]=bin_search(val,vect)
+
+ind=zeros(size(val));
+
+for i=1:numel(val)
+    ind(i)=bin_search_val(val(i),vect);
+end
+
+end
+%%
+%  function to perform a recursive binary search in an ordered vector,
+%  returning low if value does not exist (more efficient than find or
+%  ismember, which must use linear searches and/or sort)
+%
+%  function [ind]=bin_search_val(val,vect)
+%
+function [ind]=bin_search_val(val,vect)
+
+imid=floor((1+length(vect))/2);
+
+if (val == vect(imid))
+    ind=imid;
+elseif (val < vect(imid))
+    if (imid > 1)
+        ind=     bin_search(val,vect(1:imid-1));
+    else
+        ind=0;
+    end
+elseif (val > vect(imid))
+    if (imid < length(vect))
+        ind=imid+bin_search(val,vect(imid+1:length(vect)));
+    else
+        ind=length(vect);
+    end
+else
+    ind=NaN;
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_data.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_data.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_data.m	(revision 27955)
@@ -0,0 +1,123 @@
+%
+%  define the data to write the dakota .in and .m files.
+%
+%  []=dakota_in_data(dmeth,variables,responses,dparams,filei,corrin,varargin)
+%
+%  where the required input is:
+%    dmeth         (dakota_method, method class object)
+%    variables     (structure array, variable class objects)
+%    responses     (structure array, response class objects)
+%    dparams       (structure array, method-independent parameters)
+%    filei         (character, name of .in and .m files)
+%    corrin        (correlation matrix)
+%
+%  params may be empty, in which case defaults will be used.
+%
+%  the optional varargin are passed directly through to the
+%  QmuUpdateFunctions brancher to be used by the analysis
+%  package.  for example, this could be model information.
+%
+%  this function defines the data to write the dakota .in and
+%  .m files.  it is necessary for multiple reasons.  first,
+%  it collects the parameters and applies some defaults that
+%  are unique to the environment.  second, some analysis package
+%  variables and/or responses may be treated differently by
+%  dakota.  for example, an analysis package variable may be
+%  defined as an array, so the QmuSetupDesign brancher will
+%  create dakota variables for each element of the array.
+%  finally it calls the functions to write the .in and .m files.
+%  this function is independent of the particular analysis
+%  package.
+%
+%  this data would typically be generated by a matlab script
+%  for a specific model, using the method, variable, and
+%  response class objects.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=dakota_in_data(dmeth,variables,responses,dparams,filei,corrin,varargin)
+
+if ~nargin
+    help dakota_in_data
+    return
+end
+
+%%  parameters
+
+%  get default set of parameters
+
+params=dakota_in_params(struct());
+
+%  merge specified parameters into default set, whether or not
+%  they already exist
+
+fnames=fieldnames(dparams);
+
+for i=1:numel(fnames)
+    if ~isfield(params,fnames{i})
+        warning('dakota_in_data:unknown_param',...
+            'No parameter ''%s'' in default parameter set.',...
+            fnames{i});
+    end
+    params.(fnames{i})=dparams.(fnames{i});
+end
+
+if params.direct && ...
+   isempty(params.analysis_driver)
+    params.analysis_driver='matlab';
+end
+
+if strcmpi(params.analysis_driver,'matlab') && ...
+   isempty(params.analysis_components)
+    [pathstr,name,ext] = fileparts(filei);
+    params.analysis_components=fullfile(pathstr,[name '.m']);
+end
+
+%  merge method parameters, though they shouldn't be in dparams
+
+% dmeth=dmeth_params_merge(dmeth,dparams)
+
+%%  variables
+
+fnames=fieldnames(variables);
+
+for i=1:length(fnames)
+
+%  currently all variable types can just be copied
+	dvar.(fnames{i})=variables.(fnames{i});
+
+end
+
+%%  responses
+
+fnames=fieldnames(responses);
+
+for i=1:length(fnames)
+%     fhandle=str2func([class(responses.(fnames{i})) '.empty']);
+%     dresp.(fnames{i})=fhandle();
+%     for j=1:length(responses.(fnames{i}))
+%         dresp.(fnames{i})(j)=responses.(fnames{i})(j);
+%     end
+
+%  currently all response types can just be copied
+
+    dresp.(fnames{i})=responses.(fnames{i});
+end
+
+%%  write files
+
+%Write in file
+dakota_in_write(dmeth,dvar,dresp,params,filei,corrin,varargin{:});
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_data.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_data.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_data.py	(revision 27955)
@@ -0,0 +1,85 @@
+#move this stuff elsewhere
+from helpers import *
+
+from dakota_in_write import *
+from dakota_in_params import *
+from MatlabFuncs import *
+
+
+def dakota_in_data(dmeth, variables, responses, dparams, filei, *args):
+    '''
+    DAKOTA_IN_DATA - define the data to write the dakota .in and .m files.
+    
+    Usage:
+        [] = dakota_in_data(dmeth, variables, responses, dparams, filei, *args)
+
+    where the required input is:
+        dmeth         (dakota_method, method class object)
+        variables     (structure array, variable class objects)
+        responses     (structure array, response class objects)
+        dparams       (structure array, method - independent parameters)
+        filei         (character, name of .in and .m files)
+
+    Params may be empty, in which case defaults will be used.
+
+    The optional args are passed directly through to the QmuUpdateFunctions 
+    brancher to be used by the analysis package. For example, this could be 
+    model information.
+
+    This function defines the data to write the dakota .in and .m files. It is 
+    necessary for multiple reasons. First, it collects the parameters and 
+    applies some defaults that are unique to the environment. Second, some 
+    analysis package ariables and/or responses may be treated differently by
+    Dakota. For example, an analysis package variable may be defined as an 
+    array, so the QmuSetupDesign brancher will create Dakota variables for each 
+    element of the array. Finally, it calls the functions to write the .in and 
+    .m files. this function is independent of the particular analysis package.
+
+    This data would typically be generated by a MATLAB script for a specific 
+    model, using the method, variable, and response class objects.
+    '''
+
+    #  parameters
+    #  get default set of parameters
+    params = dakota_in_params(struct())
+    #  merge specified parameters into default set, whether or not
+    #  they already exist
+    fnames = fieldnames(dparams)
+
+    for fieldname in fnames:
+        if not isfield(params, fieldname):
+            print('WARNING: dakota_in_data:unknown_param: No parameter {} in default parameter set.'.format(str(fieldname)))
+        exec('params.{} = vars(dparams)[fieldname]'.format(fieldname))
+
+    # use matlab even though we are running python
+    if params.direct and params.analysis_driver == '':
+        params.analysis_driver = 'matlab'
+
+    if strcmpi(params.analysis_driver, 'matlab') and params.analysis_components == '':
+        pathstr, name, ext = fileparts(filei)
+        params.analysis_components = fullfile(pathstr, name + '.py')
+
+    #  merge method parameters, though they shouldn't be in dparams
+    # dmeth = dmeth_params_merge(dmeth, dparams)
+
+    #  variables
+    fnames = fieldnames(variables)
+
+    # works like matlab arbitrary structs / classes, remembers order of input attributes
+    dvar = OrderedStruct()
+    dresp = OrderedStruct()
+
+    for i in range(len(fnames)):
+        # currently all variable types can just be copied
+        exec(('dvar.%s = vars(variables)[fnames[i]]') % (fnames[i]))
+
+    #  responses
+    fnames = fieldnames(responses)
+
+    for i in range(len(fnames)):
+        #  currently all response types can just be copied
+        exec(('dresp.%s = vars(responses)[fnames[i]]') % (fnames[i]))
+
+    #  write files
+    #Write in file
+    dakota_in_write(dmeth, dvar, dresp, params, filei, *args)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_params.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_params.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_params.m	(revision 27955)
@@ -0,0 +1,215 @@
+%
+%  populate a Dakota parameter structure.
+%
+%  [params]=dakota_in_params(params)
+%
+%  where the optional input is:
+%    params        (structure array, method-independent parameters)
+%
+%  and the output is the same.
+%
+%  this function takes a structure of method-independent dakota
+%  parameters, which may be empty, and adds default parameters
+%  for those parameters which do not exist.
+%
+%  the field names of the structure are identical to the dakota
+%  parameter names (and are in fact used to write them to the
+%  files).  logical values are used for parameters which have
+%  no associated data and are determined only by their presence
+%  or absence.
+%
+%  note that the method-dependent parameters are contained in
+%  the dakota_method class object.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function [params]=dakota_in_params(params)
+
+if ~nargin
+    help dakota_in_params
+    return
+end
+
+%%  process the input parameters
+
+if ~exist('params','var')
+    params=struct();
+end
+
+%%  strategy section
+
+if ~isfield(params,'graphics')
+    params.graphics=false;
+end
+if ~isfield(params,'tabular_graphics_data')
+    params.tabular_graphics_data=false;
+end
+% could use unique file name rather than 'dakota_tabular.dat'
+if ~isfield(params,'tabular_graphics_file')
+    params.tabular_graphics_file=false;
+end
+
+%%  method section
+
+%  nearly all method parameters are in the dakota_method class
+%  or result from the response level lists
+
+if ~isfield(params,'compute')
+    params.compute='probabilities';
+end
+if ~isfield(params,'distribution')
+    params.distribution='cumulative';
+end
+
+%%  model section
+
+%%  interface section
+
+if ~isfield(params,'system')
+    params.system=false;
+end
+if ~isfield(params,'fork')
+    params.fork=false;
+end
+if ~isfield(params,'direct')
+    params.direct=false;
+end
+
+%  interface parallelism controls
+
+if ~isfield(params,'asynchronous')
+    params.asynchronous=true;
+end
+if ~isfield(params,'evaluation_concurrency')
+    params.evaluation_concurrency=false;
+end
+if ~isfield(params,'analysis_concurrency')
+    params.analysis_concurrency=false;
+end
+if ~isfield(params,'evaluation_servers')
+    params.evaluation_servers=false;
+end
+if ~isfield(params,'evaluation_self_scheduling')
+    params.evaluation_self_scheduling=false;
+end
+if ~isfield(params,'evaluation_static_scheduling')
+	params.evaluation_static_scheduling=true;
+end
+if ~isfield(params,'evaluation_scheduling')
+	params.evaluation_scheduling=false;
+end
+if ~isfield(params,'processors_per_evaluation')
+	params.processors_per_evaluation=false;
+end
+if ~isfield(params,'analysis_servers')
+    params.analysis_servers=false;
+end
+if ~isfield(params,'analysis_self_scheduling')
+    params.analysis_self_scheduling=false;
+end
+if ~isfield(params,'analysis_static_scheduling')
+    params.analysis_static_scheduling=false;
+end
+
+%  algebraic mappings
+
+if ~isfield(params,'algebraic_mappings')
+    params.algebraic_mappings=false;
+end
+
+%  simulation interface controls
+
+if ~isfield(params,'analysis_driver')
+    params.analysis_driver='';
+end
+if ~isfield(params,'analysis_components')
+    params.analysis_components='';
+end
+if ~isfield(params,'input_filter')
+    params.input_filter='';
+end
+if ~isfield(params,'output_filter')
+    params.output_filter='';
+end
+
+if ~isfield(params,'failure_capture')
+    params.failure_capture='abort';
+end
+if ~isfield(params,'deactivate')
+    params.deactivate='evaluation_cache restart_file';
+end
+
+%  system call or fork interface
+
+if ~isfield(params,'parameters_file')
+    params.parameters_file='params.in';
+end
+if ~isfield(params,'results_file')
+    params.results_file='results.out';
+end
+if ~isfield(params,'verbatim')
+    params.verbatim=false;
+end
+if ~isfield(params,'aprepro')
+    params.aprepro=false;
+end
+if ~isfield(params,'file_tag')
+    params.file_tag=true;
+end
+if ~isfield(params,'file_save')
+    params.file_save=true;
+end
+
+%  direct function interface
+
+if ~isfield(params,'processors_per_analysis')
+    params.processors_per_analysis=false;
+end
+
+%%  responses section
+
+if ~isfield(params,'numerical_gradients')
+    params.numerical_gradients=false;
+end
+if ~isfield(params,'method_source')
+    params.method_source='dakota';
+end
+if ~isfield(params,'interval_type')
+    params.interval_type='forward';
+end
+if ~isfield(params,'fd_gradient_step_size')
+    params.fd_gradient_step_size=0.001;
+end
+if ~isfield(params,'analytic_gradients')
+    params.analytic_gradients=false;
+end
+%  mixed_gradients not fully implemented
+if ~isfield(params,'mixed_gradients')
+    params.mixed_gradients=false;
+end
+if ~isfield(params,'id_analytic_gradients')
+    params.id_analytic_gradients=false;
+end
+if ~isfield(params,'id_numerical_gradients')
+    params.id_numerical_gradients=false;
+end
+%  hessians not fully implemented
+if ~isfield(params,'numerical_hessians')
+    params.numerical_hessians=true;
+end
+if ~isfield(params,'hessian_gradient_step_size')
+    params.hessian_gradient_step_size=0.001;
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_params.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_params.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_params.py	(revision 27955)
@@ -0,0 +1,183 @@
+from dakota_in_data import *
+#move this later:
+from helpers import *
+
+
+def dakota_in_params(params):
+    '''
+  populate a Dakota parameter structure.
+
+  params = dakota_in_params(params)
+
+  where the optional input is:
+    params        (structure array, method - independent parameters)
+
+  and the output is the same.
+
+  this function takes a structure of method - independent dakota
+  parameters, which may be empty, and adds default parameters
+  for those parameters which do not exist.
+
+  the field names of the structure are identical to the dakota
+  parameter names (and are in fact used to write them to the
+  files).  logical values are used for parameters which have
+  no associated data and are determined only by their presence
+  or absence.
+
+  note that the method - dependent parameters are contained in
+  the dakota_method class object.
+'''
+    if params is None:
+        help(dakota_in_params)
+        return
+
+    #  process the input parameters
+    if len(fieldnames(params)) == 0:
+        params = struct()
+
+    #  strategy section
+    if not isfield(params, 'graphics'):
+        params.graphics = False
+
+    if not isfield(params, 'tabular_graphics_data'):
+        params.tabular_graphics_data = False
+
+    # could use unique file name rather than 'dakota_tabular.dat'
+    if not isfield(params, 'tabular_graphics_file'):
+        params.tabular_graphics_file = False
+
+    #  method section
+    #  nearly all method parameters are in the dakota_method class
+    #  or result from the response level lists
+    if not isfield(params, 'compute'):
+        params.compute = 'probabilities'
+
+    if not isfield(params, 'distribution'):
+        params.distribution = 'cumulative'
+
+    #  model section
+
+    #  interface section
+    if not isfield(params, 'system'):
+        params.system = False
+
+    if not isfield(params, 'fork'):
+        params.fork = False
+
+    if not isfield(params, 'direct'):
+        params.direct = False
+
+    #  interface parallelism controls
+    if not isfield(params, 'asynchronous'):
+        params.asynchronous = True
+
+    if not isfield(params, 'evaluation_concurrency'):
+        params.evaluation_concurrency = False
+
+    if not isfield(params, 'analysis_concurrency'):
+        params.analysis_concurrency = False
+
+    if not isfield(params, 'evaluation_servers'):
+        params.evaluation_servers = False
+
+    if not isfield(params, 'evaluation_self_scheduling'):
+        params.evaluation_self_scheduling = False
+
+    if not isfield(params, 'evaluation_static_scheduling'):
+        params.evaluation_static_scheduling = True
+
+    if not isfield(params, 'evaluation_scheduling'):
+        params.evaluation_scheduling = False
+
+    if not isfield(params, 'processors_per_evaluation'):
+        params.processors_per_evaluation = False
+
+    if not isfield(params, 'analysis_servers'):
+        params.analysis_servers = False
+
+    if not isfield(params, 'analysis_self_scheduling'):
+        params.analysis_self_scheduling = False
+
+    if not isfield(params, 'analysis_static_scheduling'):
+        params.analysis_static_scheduling = False
+
+    #  algebraic mappings
+    if not isfield(params, 'algebraic_mappings'):
+        params.algebraic_mappings = False
+
+    #  simulation interface controls
+    if not isfield(params, 'analysis_driver'):
+        params.analysis_driver = ''
+
+    if not isfield(params, 'analysis_components'):
+        params.analysis_components = ''
+
+    if not isfield(params, 'input_filter'):
+        params.input_filter = ''
+
+    if not isfield(params, 'output_filter'):
+        params.output_filter = ''
+
+    if not isfield(params, 'failure_capture'):
+        params.failure_capture = 'abort'
+
+    if not isfield(params, 'deactivate'):
+        params.deactivate = 'evaluation_cache restart_file'
+
+    #  system call or fork interface
+    if not isfield(params, 'parameters_file'):
+        params.parameters_file = 'params.in'
+
+    if not isfield(params, 'results_file'):
+        params.results_file = 'results.out'
+
+    if not isfield(params, 'verbatim'):
+        params.verbatim = False
+
+    if not isfield(params, 'aprepro'):
+        params.aprepro = False
+
+    if not isfield(params, 'file_tag'):
+        params.file_tag = True
+
+    if not isfield(params, 'file_save'):
+        params.file_save = True
+
+    #  direct function interface
+    if not isfield(params, 'processors_per_analysis'):
+        params.processors_per_analysis = False
+
+    #  responses section
+    if not isfield(params, 'numerical_gradients'):
+        params.numerical_gradients = False
+
+    if not isfield(params, 'method_source'):
+        params.method_source = 'dakota'
+
+    if not isfield(params, 'interval_type'):
+        params.interval_type = 'forward'
+
+    if not isfield(params, 'fd_gradient_step_size'):
+        params.fd_gradient_step_size = 0.001
+
+    if not isfield(params, 'analytic_gradients'):
+        params.analytic_gradients = False
+
+    #  mixed_gradients not fully implemented
+    if not isfield(params, 'mixed_gradients'):
+        params.mixed_gradients = False
+
+    if not isfield(params, 'id_analytic_gradients'):
+        params.id_analytic_gradients = False
+
+    if not isfield(params, 'id_numerical_gradients'):
+        params.id_numerical_gradients = False
+
+    #  hessians not fully implemented
+    if not isfield(params, 'numerical_hessians'):
+        params.numerical_hessians = True
+
+    if not isfield(params, 'hessian_gradient_step_size'):
+        params.hessian_gradient_step_size = 0.001
+
+    return params
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_parse.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_parse.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_parse.m	(revision 27955)
@@ -0,0 +1,803 @@
+%
+%  read a Dakota .in input file and parse it.
+%
+%  [method,dvar,dresp]=dakota_in_parse(filei)
+%
+%  where the required input is:
+%    filei         (character, name of .in file)
+%
+%  the required output is:
+%    method        (character, dakota method name)
+%    dvar          (structure array, variables)
+%    dresp         (structure array, responses)
+%
+%  the filei will be prompted if empty.  the fields of dvar and
+%  dresp are particular to the data contained within the file.
+%
+%  this function reads a dakota .in input file and parses it
+%  into the matlab workspace.  it operates in a content-driven
+%  fashion, where it parses whatever input data it encounters
+%  in the file, rather than searching for data based on the
+%  particular method.  (this makes it independent of method.)
+%
+%  as of now, parameters are generally not parsed.  also, the
+%  variable and response classes are not used for output.
+%
+%  this data would typically be used for modifying and submitting
+%  a subsequent dakota run.  it could also be used with output
+%  data for post-processing or annotation purposes.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function [method,dvar,dresp]=dakota_in_parse(filei)
+
+if ~nargin
+    help dakota_in_parse
+    return
+end
+
+if ~exist('filei' ,'var') || isempty(filei)
+    filei=input('Input file?  ','s');
+end
+fidi=fopen(sprintf('%s',filei),'r');
+if (fidi < 0)
+    error('%s could not be opened.',filei);
+end
+
+%%  loop through the file to find the Dakota method
+
+method=[];
+fseek(fidi,0,'bof');
+[fline]=findline(fidi,'method');
+if ~ischar(fline)
+    return
+end
+
+[ntokens,tokens]=fltokens(fline);
+itoken=1;
+[tokens,itoken]=nextkey(fidi,tokens,itoken);
+method=tokens{1}{itoken};
+display(sprintf('Dakota method=%s.',method));
+
+%%  loop through the file to find the Dakota variables
+
+fseek(fidi,0,'bof');
+[fline]=findline(fidi,'variables');
+if ~ischar(fline)
+    error('No Dakota variables in file %s.',filei);
+end
+
+[ntokens,tokens]=fltokens(fline);
+itoken=1;
+[dvar]=variables_parse(fidi,tokens,itoken);
+
+%%  loop through the file to find the Dakota responses
+
+fseek(fidi,0,'bof');
+[fline]=findline(fidi,'responses');
+if ~ischar(fline)
+    error('No Dakota responses in file %s.',filei);
+end
+
+[ntokens,tokens]=fltokens(fline);
+itoken=1;
+[dresp]=responses_parse(fidi,tokens,itoken);
+
+%%  loop through the file to find the Dakota response and probability levels
+%   (even though they're in method section, process after responses)
+
+fseek(fidi,0,'bof');
+[fline]=findline(fidi,'method');
+
+[ntokens,tokens]=fltokens(fline);
+itoken=1;
+[dresp]=resplevels(fidi,tokens,itoken,dresp);
+
+%%  loop through the file to verify the end
+
+display('End of file successfully reached.');
+fclose(fidi);
+
+end
+
+%%  function to parse the dakota variables
+
+function [dvar]=variables_parse(fidi,tokens,itoken)
+
+display('Reading Dakota variables.');
+dvar=[];
+ncdv=0;
+nnuv=0;
+ncsv=0;
+
+%  read next keyword
+
+[tokens,itoken]=nextkey(fidi,tokens,itoken);
+if ~itoken
+    warning('variables_parse:empty',...
+        'Dakota variables section is empty.');
+end
+
+%  process current keyword
+%  (note that this is using dakota 4.1 keywords.  dakota 4.2
+%  keywords are order-dependent.)
+
+while itoken
+    keyword=tokens{1}{itoken};
+    display(sprintf('  Dakota keyword=%s.',keyword));
+
+%  switch according to the keyword
+
+    switch lower(keyword)
+        case 'continuous_design'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            ncdv=tlist;
+            dvar.cdv=[];
+            display(sprintf('    Number of Dakota %s variables=%d.',...
+                    'continuous_design',ncdv));
+        case 'cdv_initial_point'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.cdv(i).initpt    =tlist(i);
+            end
+        case 'cdv_lower_bounds'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.cdv(i).lower     =tlist(i);
+            end
+        case 'cdv_upper_bounds'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.cdv(i).upper     =tlist(i);
+            end
+        case 'cdv_descriptors'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.cdv(i).descriptor=char(tlist(i));
+            end
+
+        case 'normal_uncertain'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nnuv=tlist;
+            dvar.nuv=[];
+            display(sprintf('    Number of Dakota %s variables=%d.',...
+                    'normal_uncertain',nnuv));
+        case 'nuv_means'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.nuv(i).mean      =tlist(i);
+            end
+        case 'nuv_std_deviations'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.nuv(i).stddev    =tlist(i);
+            end
+        case 'nuv_lower_bounds'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.nuv(i).lower     =tlist(i);
+            end
+        case 'nuv_upper_bounds'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.nuv(i).upper     =tlist(i);
+            end
+        case 'nuv_descriptors'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.nuv(i).descriptor=char(tlist(i));
+            end
+
+        case 'continuous_state'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            ncsv=tlist;
+            dvar.csv=[];
+            display(sprintf('    Number of Dakota %s variables=%d.',...
+                    'continuous_state',ncsv));
+        case 'csv_initial_state'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.csv(i).initst    =tlist(i);
+            end
+        case 'csv_lower_bounds'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.csv(i).lower     =tlist(i);
+            end
+        case 'csv_upper_bounds'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.csv(i).upper     =tlist(i);
+            end
+        case 'csv_descriptors'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dvar.csv(i).descriptor=char(tlist(i));
+            end
+
+        otherwise
+            warning('variables_parse:unrec_key',...
+                'Unrecognized keyword ''%s''.',keyword);
+            [tokens,itoken]=nextkey(fidi,tokens,itoken);
+    end
+
+%  check for eof or start of new section
+
+    if (~itoken) || ...
+       strncmpi(tokens{1}{itoken},'strategy' ,8) || ...
+       strncmpi(tokens{1}{itoken},'method'   ,6) || ...
+       strncmpi(tokens{1}{itoken},'model'    ,5) || ...
+       strncmpi(tokens{1}{itoken},'variables',9) || ...
+       strncmpi(tokens{1}{itoken},'interface',9) || ...
+       strncmpi(tokens{1}{itoken},'responses',9)
+
+%  supply default descriptors if necessary
+
+        if isfield(dvar,'cdv') && ~isfield(dvar.cdv,'descriptor')
+            for i=1:ncdv
+                dvar.cdv(i).descriptor=sprintf('cdv_%d',i);
+            end
+        end
+        if isfield(dvar,'nuv') && ~isfield(dvar.nuv,'descriptor')
+            for i=1:nnuv
+                dvar.nuv(i).descriptor=sprintf('nuv_%d',i);
+            end
+        end
+        if isfield(dvar,'csv') && ~isfield(dvar.csv,'descriptor')
+            for i=1:ncsv
+                dvar.csv(i).descriptor=sprintf('csv_%d',i);
+            end
+        end
+        return;
+    end
+end
+
+end
+
+%%  function to parse the dakota responses
+
+function [dresp]=responses_parse(fidi,tokens,itoken)
+
+display('Reading Dakota responses.');
+dresp=[];
+nof =0;
+nlst=0;
+nnic=0;
+nnec=0;
+nrf =0;
+
+%  read next keyword
+
+[tokens,itoken]=nextkey(fidi,tokens,itoken);
+if ~itoken
+    warning('responses_parse:empty',...
+        'Dakota responses section is empty.');
+end
+
+%  process current keyword
+
+while itoken
+    keyword=tokens{1}{itoken};
+    display(sprintf('  Dakota keyword=%s.',keyword));
+
+%  switch according to the keyword
+
+    switch lower(keyword)
+        case 'num_objective_functions'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nof =tlist;
+            dresp.of =[];
+            display(sprintf('    Number of Dakota %s=%d.',...
+                    'objective_functions',nof));
+        case 'objective_function_scale_types'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.of(i).scale_type=char(tlist(i));
+            end
+        case 'objective_function_scales'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.of(i).scale     =tlist(i);
+            end
+        case 'multi_objective_weights'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.of(i).weight    =tlist(i);
+            end
+
+        case 'num_least_squares_terms'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nlst=tlist;
+            dresp.lst=[];
+            display(sprintf('    Number of Dakota %s=%d.',...
+                    'least_squares_terms',nlst));
+        case 'least_squares_term_scale_types'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.lst(i).scale_type=char(tlist(i));
+            end
+        case 'least_squares_term_scales'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.lst(i).scale     =tlist(i);
+            end
+        case 'least_squares_weights'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.lst(i).weight    =tlist(i);
+            end
+
+        case 'num_nonlinear_inequality_constraints'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nnic=tlist;
+            dresp.nic=[];
+            display(sprintf('    Number of Dakota %s=%d.',...
+                    'nonlinear_inequality_constraints',nnic));
+        case 'nonlinear_inequality_scale_types'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.nic(i).scale_type=char(tlist(i));
+            end
+        case 'nonlinear_inequality_scales'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.nic(i).scale     =tlist(i);
+            end
+        case 'nonlinear_inequality_lower_bounds'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.nic(i).lower     =tlist(i);
+            end
+        case 'nonlinear_inequality_upper_bounds'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.nic(i).upper     =tlist(i);
+            end
+
+        case 'num_nonlinear_equality_constraints'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nnec=tlist;
+            dresp.nec=[];
+            display(sprintf('    Number of Dakota %s=%d.',...
+                    'nonlinear_equality_constraints',nnec));
+        case 'nonlinear_equality_scale_types'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.nec(i).scale_type=char(tlist(i));
+            end
+        case 'nonlinear_equality_scales'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.nec(i).scale     =tlist(i);
+            end
+        case 'nonlinear_equality_targets'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            for i=1:length(tlist)
+                dresp.nec(i).target    =tlist(i);
+            end
+
+        case 'num_response_functions'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nrf =tlist;
+            dresp.rf =[];
+            display(sprintf('    Number of Dakota %s=%d.',...
+                    'response_functions',nrf));
+
+        case 'response_descriptors'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            desc=tlist;
+        otherwise
+            warning('responses_parse:unrec_key',...
+                'Unrecognized keyword ''%s''.',keyword);
+            [tokens,itoken]=nextkey(fidi,tokens,itoken);
+    end
+
+%  check for eof or start of new section
+
+    if (~itoken) || ...
+       strncmpi(tokens{1}{itoken},'strategy' ,8) || ...
+       strncmpi(tokens{1}{itoken},'method'   ,6) || ...
+       strncmpi(tokens{1}{itoken},'model'    ,5) || ...
+       strncmpi(tokens{1}{itoken},'variables',9) || ...
+       strncmpi(tokens{1}{itoken},'interface',9) || ...
+       strncmpi(tokens{1}{itoken},'responses',9)
+
+%  assign specified or supply default descriptors
+
+        if exist('desc','var')
+            idesc=0;
+            if isfield(dresp,'of' )
+                for i=1:nof
+                    idesc=idesc+1;
+                    dresp.of(i).descriptor=char(desc(idesc));
+                end
+            end
+            if isfield(dresp,'lst')
+                for i=1:nlst
+                    idesc=idesc+1;
+                    dresp.lst(i).descriptor=char(desc(idesc));
+                end
+            end
+            if isfield(dresp,'nic')
+                for i=1:nnic
+                    idesc=idesc+1;
+                    dresp.nic(i).descriptor=char(desc(idesc));
+                end
+            end
+            if isfield(dresp,'nec')
+                for i=1:nnec
+                    idesc=idesc+1;
+                    dresp.nec(i).descriptor=char(desc(idesc));
+                end
+            end
+            if isfield(dresp,'rf' )
+                for i=1:nrf
+                    idesc=idesc+1;
+                    dresp.rf(i).descriptor=char(desc(idesc));
+                end
+            end
+
+        else
+            if isfield(dresp,'of' )
+                for i=1:nof
+                    dresp.of(i).descriptor=sprintf('obj_fn_%d',i);
+                end
+            end
+            if isfield(dresp,'lst')
+                for i=1:nlst
+                    dresp.lst(i).descriptor=sprintf('least_sq_term_%d',i);
+                end
+            end
+            if isfield(dresp,'nic')
+                for i=1:nnic
+                    dresp.nic(i).descriptor=sprintf('nln_ineq_con_%d',i);
+                end
+            end
+            if isfield(dresp,'nec')
+                for i=1:nnec
+                    dresp.nec(i).descriptor=sprintf('nln_eq_con_%d',i);
+                end
+            end
+            if isfield(dresp,'rf' )
+                for i=1:nrf
+                    dresp.rf(i).descriptor=sprintf('response_fn_%d',i);
+                end
+            end
+        end
+        return;
+    end
+end
+
+end
+
+%%  function to read the number and levels of responses
+
+function [dresp]=resplevels(fidi,tokens,itoken,dresp)
+
+display('Reading Dakota response levels.');
+
+%  read next keyword
+
+[tokens,itoken]=nextkey(fidi,tokens,itoken);
+if ~itoken
+    warning('resplevels:empty',...
+        'Dakota method section is empty.');
+end
+
+%  process current keyword
+
+while itoken
+    keyword=tokens{1}{itoken};
+    display(sprintf('  Dakota keyword=%s.',keyword));
+
+%  switch according to the keyword
+
+    switch lower(keyword)
+        case 'nond_sampling'
+            [tokens,itoken]=nextkey(fidi,tokens,itoken);
+        case 'nond_local_reliability'
+            [tokens,itoken]=nextkey(fidi,tokens,itoken);
+        case 'num_response_levels'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nresp=tlist;
+        case 'response_levels'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nrespl=tlist;
+        case 'num_probability_levels'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nprob=tlist;
+        case 'probability_levels'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nprobl=tlist;
+        case 'num_reliability_levels'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nrel =tlist;
+        case 'reliability_levels'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            nrell =tlist;
+        case 'num_gen_reliability_levels'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            ngrel=tlist;
+        case 'gen_reliability_levels'
+            [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+            ngrell=tlist;
+        case 'compute'
+            [tokens,itoken]=nexttoken(fidi,tokens,itoken);
+            [tokens,itoken]=nextkey(fidi,tokens,itoken);
+        otherwise
+            warning('resplevels:unrec_key',...
+                'Unrecognized keyword ''%s''.',keyword);
+            [tokens,itoken]=nextkey(fidi,tokens,itoken);
+    end
+
+%  check for eof or start of new section
+
+    if (~itoken) || ...
+       strncmpi(tokens{1}{itoken},'strategy' ,8) || ...
+       strncmpi(tokens{1}{itoken},'method'   ,6) || ...
+       strncmpi(tokens{1}{itoken},'model'    ,5) || ...
+       strncmpi(tokens{1}{itoken},'variables',9) || ...
+       strncmpi(tokens{1}{itoken},'interface',9) || ...
+       strncmpi(tokens{1}{itoken},'responses',9)
+
+%  assemble the lists by response
+
+        if exist('nrespl','var') && isfield(dresp,'rf')
+            if ~exist('nresp','var')
+                nresp(1:length(dresp.rf))=floor(length(nrespl)/length(dresp.rf));
+            end
+            ilist=1;
+            for i=1:length(dresp.rf)
+                dresp.rf(i).respl=nrespl(ilist:ilist+nresp(i)-1);
+                ilist=ilist+nresp(i);
+            end
+        end
+
+        if exist('nprobl','var') && isfield(dresp,'rf')
+            if ~exist('nprob','var')
+                nprob(1:length(dresp.rf))=floor(length(nprobl)/length(dresp.rf));
+            end
+            ilist=1;
+            for i=1:length(dresp.rf)
+                dresp.rf(i).probl=nprobl(ilist:ilist+nprob(i)-1);
+                ilist=ilist+nprob(i);
+            end
+        end
+
+        if exist('nrell' ,'var') && isfield(dresp,'rf')
+            if ~exist('nrel' ,'var')
+                nrel (1:length(dresp.rf))=floor(length(nrell )/length(dresp.rf));
+            end
+            ilist=1;
+            for i=1:length(dresp.rf)
+                dresp.rf(i).rell =nrell (ilist:ilist+nrel (i)-1);
+                ilist=ilist+nrel (i);
+            end
+        end
+
+        if exist('ngrell','var') && isfield(dresp,'rf')
+            if ~exist('ngrel','var')
+                ngrel(1:length(dresp.rf))=floor(length(ngrell)/length(dresp.rf));
+            end
+            ilist=1;
+            for i=1:length(dresp.rf)
+                dresp.rf(i).grell=ngrell(ilist:ilist+ngrel(i)-1);
+                ilist=ilist+ngrel(i);
+            end
+        end
+
+        return;
+    end
+end
+
+end
+
+%%  function to find the next keyword
+
+function [tokens,itoken]=nextkey(fidi,tokens,itoken)
+
+%  start with next token
+
+[tokens,itoken]=nexttoken(fidi,tokens,itoken);
+if ~itoken
+    return;
+end
+
+%  check for equal sign and skip subsequent list
+
+if (itoken <= length(tokens{1})) && ...
+   strncmp(tokens{1}{itoken},'=',1)
+    [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken);
+end
+
+end
+
+%%  function to find the next token
+
+function [tokens,itoken]=nexttoken(fidi,tokens,itoken)
+
+%  start with next token
+
+itoken=itoken+1;
+
+%  read next line if necessary
+
+if (itoken > length(tokens{1}))
+    fline=readline(fidi);
+    if isempty(fline)
+        tokens={};
+        itoken=0;
+        return;
+    end
+    [ntokens,tokens]=fltokens(fline);
+    itoken=1;
+end
+
+end
+
+%%  function to read a list of tokens
+
+function [tlist,tokens,itoken]=readtlist(fidi,tokens,itoken)
+
+%  start with next token (which should be equal sign, unless
+%  equal sign was already read to determine existence of list)
+
+itoken=itoken+1;
+
+%  read next line if necessary
+
+if (itoken > length(tokens{1}))
+    fline=readline(fidi);
+    if isempty(fline)
+        tokens={};
+        itoken=0;
+        return;
+    end
+    [ntokens,tokens]=fltokens(fline);
+    itoken=1;
+end
+
+%  check for equal sign and skip
+
+if strncmp(tokens{1}{itoken},'=',1)
+    itoken=itoken+1;
+end
+
+ilist=0;
+
+%  accumulate list until non-numeric and non-quoted-string (or eof)
+%  is encountered
+
+while 1
+    for i=itoken:length(tokens{1})
+        if isnumeric(tokens{1}{i})
+            ilist=ilist+1;
+            tlist(ilist)=tokens{1}{i};
+        elseif ischar(tokens{1}{i}) && ...
+               (strncmp(tokens{1}{i}(1)  ,'''',1) && ...
+                strncmp(tokens{1}{i}(end),'''',1)) || ...
+               (strncmp(tokens{1}{i}(1)  ,'"',1) && ...
+                strncmp(tokens{1}{i}(end),'"',1))
+            ilist=ilist+1;
+            tlist(ilist)=cellstr(tokens{1}{i}(2:end-1));
+        else
+            itoken=i;
+            return
+        end
+    end
+    fline=readline(fidi);
+    if isempty(fline)
+        tokens={};
+        itoken=0;
+        return;
+    end
+    [ntokens,tokens]=fltokens(fline);
+    itoken=1;
+end
+
+end
+
+%%  function to find a file line starting with a specified string
+
+function [fline]=findline(fidi,string)
+
+ipos=ftell(fidi);
+
+while 1
+    fline=readline(fidi);
+    if isempty(fline)
+        break;
+    else
+        if (strncmpi(fline,string,length(string)))
+            return;
+        end
+    end
+end
+
+%  issue warning and reset file position
+
+warning('findline:str_not_found',...
+    'String ''%s'' not found in file.',string);
+fseek(fidi,ipos,'bof');
+
+end
+
+%%  function to read a file line ignoring comments and blanks
+
+function [fline]=readline(fidi)
+
+while 1
+    fline=fgetl(fidi);
+    if ~ischar(fline)
+        fline=[];
+        return;
+    end
+
+    for ichar=1:length(fline)
+        if ~strncmp(fline(ichar),' ',1) && ...
+           ~strncmp(fline(ichar),'	',1)
+            break;
+        end
+    end
+    if isempty(fline) || ...
+       (ichar > length(fline)) || ...
+       strncmp(fline(ichar),'#',1)
+        continue;
+    else
+        return;
+    end
+end
+
+end
+
+%%  function to parse a file line into tokens
+
+function [ntokens,tokens]=fltokens(fline)
+
+if ~ischar(fline)
+    ntokens=-1;
+    tokens={};
+    return;
+end
+if isempty(fline)
+    ntokens=0;
+    tokens={};
+    return;
+end
+
+strings=textscan(fline,'%s','delimiter',' :,');
+%for i=1:length(strings{1})
+%    display(sprintf('i=%d; strings{1}{%d}=%s',i,i,strings{1}{i}))
+%end
+ntokens=0;
+tokens{1}{length(strings)}='';
+
+for i=1:length(strings{1})
+    if isempty(strings{1}{i})
+        continue
+    end
+    ntokens=ntokens+1;
+    inum=sscanf(strings{1}{i},'%f');
+    if isempty(inum)
+        tokens{1}{ntokens}=strings{1}{i};
+%         display(sprintf('i=%d; tokens{1}{%d}=%s',...
+%             i,ntokens,tokens{1}{ntokens}))
+    else
+        tokens{1}{ntokens}=inum;
+%         display(sprintf('i=%d; tokens{1}{%d}=%f',...
+%             i,ntokens,tokens{1}{ntokens}))
+    end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_write.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_write.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_write.m	(revision 27955)
@@ -0,0 +1,354 @@
+function []=dakota_in_write(method,dvar,dresp,params,filei,corrin,varargin)
+%DAKOTA_IN_WRITE - Write a Dakota .in input file.
+%
+%   Usage:
+%      []=dakota_in_write(method,dvar,dresp,params,filei,varargin)
+%      []=dakota_in_write(dmeth ,dvar,dresp,params,filei,varargin)
+%
+%   where the required input is,
+%      method        (character, dakota method name)
+%      dmeth         (dakota_method, method class object)
+%      dvar          (structure array, variable class objects)
+%      dresp         (structure array, response class objects)
+%      params        (structure array, method-independent parameters)
+%      filei         (character, name of .in file)
+%
+%   The method and filei will be prompted for if empty. params may be empty, in 
+%   which case defaults will be used.
+%
+%   The optional varargin are not yet used.
+%
+%   This function writes a Dakota .in input file to be used by Dakota. This 
+%   file is independent of the particular analysis package.
+%
+%   This data would typically be generated by a MATLAB script for a specific 
+%   model, using the method, variable, and response class objects. This 
+%   function may be called by dakota_in_data.
+%
+%   "Copyright 2009, by the California Institute of Technology. ALL RIGHTS 
+%   RESERVED. United States Government Sponsorship acknowledged. Any commercial 
+%   use must be negotiated with the Office of Technology Transfer at the 
+%   California Institute of Technology. (NTR 47078)
+%
+%   This software may be subject to U.S. export control laws. By accepting this 
+%   software, the user agrees to comply with all applicable U.S. export laws 
+%   and regulations. User has the responsibility to obtain export licenses, or 
+%   other export authority as may be required before exporting such information 
+%   to foreign countries or providing access to foreign persons."
+%
+if ~nargin
+    help dakota_in_write
+    return
+end
+
+%  process the input parameters
+
+if ~exist('method','var') || isempty(method)
+    method=input('Method?  ','s');
+end
+if     ischar(method)
+    dmeth=dakota_method(method);
+elseif isa(method,'dakota_method')
+    dmeth=method;
+else
+    error(['Method ''' inputname(1) ''' is unrecognized class ''' class(method) '''']);
+end
+
+if ~exist('filei' ,'var') || isempty(filei)
+    filei=input('Dakota input file to write?  ','s');
+end
+[pathstr,name,ext] = fileparts(filei);
+if isempty(ext)
+% fileparts only considers '.in' to be the extension, not '.qmu.in'
+    ext='.qmu.in';
+end
+filei2=fullfile(pathstr,[name ext]);
+
+display(sprintf('Opening Dakota input file ''%s''',filei2));
+fidi=fopen(sprintf('%s',filei2),'w');
+if (fidi < 0)
+    error('''%s'' could not be opened',filei2);
+end
+
+if ~exist('params','var')
+    params=struct();
+end
+params=dakota_in_params(params);
+
+%  write the strategy section
+
+if IssmConfig('_DAKOTA_VERSION_') < 6,
+	strategy_write(fidi,params);
+else
+	environment_write(fidi,params);
+end
+
+%  write the method section
+
+method_write(fidi,dmeth,dresp,params);
+
+%  write the model section
+
+model_write(fidi);
+
+%  write the variables section
+
+variables_write(fidi,dmeth,dvar,corrin);
+
+%  write the interface section
+
+interface_write(fidi,params);
+
+%  write the responses section
+
+responses_write(fidi,dmeth,dresp,params);
+
+fclose(fidi);
+display('End of file successfully written');
+
+% Uncomment to print contents of Dakota input file (for debugging)
+% type([name ext]);
+
+end
+
+%%  function to write the strategy section of the file
+
+function []=strategy_write(fidi,params)
+
+display('Writing strategy section of Dakota input file');
+
+fprintf(fidi,'strategy,\n');
+fprintf(fidi,'\tsingle_method\n\n');
+param_write(fidi,'\t  ','graphics','','\n',params);
+param_write(fidi,'\t  ','tabular_graphics_data','','\n',params);
+param_write(fidi,'\t  ','tabular_graphics_file',' ''','''\n',params);
+fprintf(fidi,'\n');
+
+end
+
+%%  function to write the environment section of the file
+
+function []=environment_write(fidi,params)
+
+	display('Writing environment section of Dakota input file');
+
+	fprintf(fidi,'environment,\n');
+	param_write(fidi,'\t  ','graphics','','\n',params);
+	param_write(fidi,'\t  ','tabular_graphics_data','','\n',params);
+	param_write(fidi,'\t  ','tabular_graphics_file',' ''','''\n',params);
+	fprintf(fidi,'\n');
+
+end
+
+%%  function to write the method section of the file
+
+function []=method_write(fidi,dmeth,dresp,params)
+
+display('Writing method section of Dakota input file');
+
+fprintf(fidi,'method,\n');
+fprintf(fidi,'\t%s\n',dmeth.method);
+
+dmeth_params_write(dmeth,fidi);
+
+%  write response levels
+if strcmp(dmeth.type,'nond')
+    for i=1:length(dmeth.responses)
+        fhresp=str2func([dmeth.responses{i} '.dakota_rlev_write']);
+        fhresp(fidi,dresp,params);
+    end
+end
+fprintf(fidi,'\n');
+
+end
+
+%%  function to write the model section of the file
+
+function []=model_write(fidi)
+
+display('Writing model section of Dakota input file');
+
+fprintf(fidi,'model,\n');
+fprintf(fidi,'\t%s\n\n','single');
+
+end
+
+%%  function to write the variables section of the file
+
+function []=variables_write(fidi,dmeth,dvar,corrin)
+
+display('Writing variables section of Dakota input file');
+
+fprintf(fidi,'variables,\n');
+
+%  variables vary by method
+for i=1:length(dmeth.variables)
+    fhvar=str2func([dmeth.variables{i} '.dakota_write']);
+    fhvar(fidi,dvar);
+end
+
+%  linear constraints vary by method
+
+for i=1:length(dmeth.lcspec)
+    fhvar=str2func([dmeth.lcspec{i}    '.dakota_write']);
+    fhvar(fidi,dvar);
+end
+
+% write correlation matrix: 
+if ~isempty(corrin),
+	fprintf(fidi,'uncertain_correlation_matrix\n');
+	for i=1:size(corrin,1),
+		for j=1:size(corrin,2),
+			fprintf(fidi,'%g ',corrin(i,j));
+		end
+		fprintf(fidi,'\n');
+	end
+end
+
+fprintf(fidi,'\n');
+
+end
+
+%%  function to write the interface section of the file
+
+function []=interface_write(fidi,params)
+
+display('Writing interface section of Dakota input file');
+
+fprintf(fidi,'interface,\n');
+
+if     ~params.system && ~params.fork && ~params.direct
+    params.fork=true;
+elseif (params.system+params.fork+params.direct > 1)
+    error('Too many interfaces selected')
+end
+
+if     params.system || params.fork
+    param_write(fidi,'\t','asynchronous','','\n',params);
+    param_write(fidi,'\t  ','evaluation_concurrency',' = ','\n',params);
+    param_write(fidi,'\t  ','analysis_concurrency','   = ','\n',params);
+    param_write(fidi,'\t  ','evaluation_servers','     = ','\n',params);
+    param_write(fidi,'\t  ','evaluation_self_scheduling','','\n',params);
+    param_write(fidi,'\t  ','evaluation_static_scheduling','','\n',params);
+    param_write(fidi,'\t  ','analysis_servers','       = ','\n',params);
+    param_write(fidi,'\t  ','analysis_self_scheduling','','\n',params);
+    param_write(fidi,'\t  ','analysis_static_scheduling','','\n',params);
+    param_write(fidi,'\t','algebraic_mappings',' = ','\n',params);
+    param_write(fidi,'\t','system','','\n',params);
+    param_write(fidi,'\t','fork','','\n',params);
+    param_write(fidi,'\t  ','analysis_driver',' = ''','''\n',params);
+    if ~isempty(params.input_filter)
+        param_write(fidi,'\t  ','input_filter','    = ''','''\n',params);
+    end
+    if ~isempty(params.output_filter)
+        param_write(fidi,'\t  ','output_filter','   = ''','''\n',params);
+    end
+    param_write(fidi,'\t  ','failure_capture','   ','\n',params);
+    param_write(fidi,'\t  ','deactivate','        ','\n',params);
+    param_write(fidi,'\t  ','parameters_file',' = ''','''\n',params);
+    param_write(fidi,'\t  ','results_file','    = ''','''\n',params);
+    param_write(fidi,'\t  ','verbatim', '','\n',params);
+    param_write(fidi,'\t  ','aprepro', '','\n',params);
+    param_write(fidi,'\t  ','file_tag', '','\n',params);
+    param_write(fidi,'\t  ','file_save','','\n',params);
+elseif params.direct
+%  Error: asynchronous capability not yet supported in direct interfaces.
+%  Update: it is now possible to run in parallel in direct interfaces.
+    param_write(fidi,'\t','algebraic_mappings',' = ','\n',params);
+    param_write(fidi,'\t','direct','','\n',params);
+    param_write(fidi,'\t  ','analysis_driver','     = ''','''\n',params);
+    if IssmConfig('_DAKOTA_VERSION_') < 6,
+		param_write(fidi,'\t  ','evaluation_static_scheduling','','\n',params);
+	else
+		param_write(fidi,'\t  ','evaluation_scheduling',' ','\n',params);
+		param_write(fidi,'\t  ','processors_per_evaluation',' = ','\n',params);
+	end
+    if ~isempty(params.analysis_components)
+        [pathstr,name,ext] = fileparts(params.analysis_components);
+        if isempty(ext)
+            ext='.m';
+        end
+        params.analysis_components=fullfile(pathstr,[name ext]);
+        param_write(fidi,'\t  ','analysis_components',' = ''','''\n',params);
+    end
+    if ~isempty(params.input_filter)
+        param_write(fidi,'\t  ','input_filter','    = ''','''\n',params);
+    end
+    if ~isempty(params.output_filter)
+        param_write(fidi,'\t  ','output_filter','   = ''','''\n',params);
+    end
+    param_write(fidi,'\t  ','failure_capture','   ','\n',params);
+    param_write(fidi,'\t  ','deactivate','        ','\n',params);
+    param_write(fidi,'\t  ','processors_per_analysis',' = ''','''\n',params);
+end
+
+fprintf(fidi,'\n');
+
+end
+
+%%  function to write the responses section of the file
+
+function []=responses_write(fidi,dmeth,dresp,params)
+
+display('Writing responses section of Dakota input file');
+
+fprintf(fidi,'responses,\n');
+%fprintf(fidi,'calibration_terms = 1 \n');
+
+
+%  functions, gradients, and hessians vary by method
+
+rdesc={};
+
+for i=1:length(dmeth.responses)
+    fhresp=str2func([dmeth.responses{i} '.dakota_write']);
+    [rdesc]=fhresp(fidi,dresp,rdesc);
+end
+%  write accumulated response descriptors for all response classes
+
+if ~isempty(rdesc)
+    fprintf(fidi,'\tresponse_descriptors =\n');
+    vector_write(fidi,sprintf('\t  '),rdesc,6,76);
+end
+
+ghspec_write(fidi,params,dmeth.ghspec);
+
+fprintf(fidi,'\n');
+
+end
+
+%%  function to write gradient and hessian specifications
+
+function []=ghspec_write(fidi,params,ghspec)
+
+%  gradients
+
+if ismember('grad',ghspec)
+    if     ~params.numerical_gradients && ~params.analytic_gradients
+        params.numerical_gradients=true;
+    elseif (params.numerical_gradients+params.analytic_gradients > 1)
+        error('Too many gradients selected')
+    end
+
+    if     params.numerical_gradients
+        param_write(fidi,'\t','numerical_gradients','','\n',params);
+        param_write(fidi,'\t  ','method_source',' ','\n',params);
+        param_write(fidi,'\t  ','interval_type',' ','\n',params);
+        param_write(fidi,'\t  ','fd_gradient_step_size',' = ','\n',params);
+    elseif params.analytic_gradients
+        param_write(fidi,'\t','analytic_gradients','','\n',params);
+%     elseif params.mixed_gradients
+    end
+else
+    fprintf(fidi,'\tno_gradients\n');
+end
+
+%  hessians (no implemented methods use them yet)
+
+if ismember('hess',ghspec)
+    error('Hessians needed by method but not provided');
+else
+    fprintf(fidi,'\tno_hessians\n');
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_write.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_write.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_in_write.py	(revision 27955)
@@ -0,0 +1,348 @@
+#Move this somewhere else later
+from helpers import *
+
+from dakota_method import *
+from dakota_in_params import *
+from IssmConfig import *
+from dmeth_params_write import *
+from vector_write import *
+from qmu_classes import *
+
+import itertools
+
+
+def dakota_in_write(method, dvar, dresp, params, filei, *args):
+    """DAKOTA_IN_WRITE - Write a Dakota .in input file.
+
+    Usage:
+        [] = dakota_in_write(method, dvar, dresp, params, filei, args)
+        [] = dakota_in_write(dmeth , dvar, dresp, params, filei, args)
+
+    where the required input is,
+        method        (character, Dakota method name)
+        dmeth         (dakota_method, method class object)
+        dvar          (structure array, variable class objects)
+        dresp         (structure array, response class objects)
+        params        (structure array, method-independent parameters)
+        filei         (character, name of .in file)
+
+    The method and filei will be prompted for if empty. params may be empty, in 
+    which case defaults will be used.
+
+    The optional args are not yet used.
+
+    This function writes a Dakota .in input file to be used by Dakota. This 
+    file is indepent of the particular analysis package.
+
+    This data would typically be generated by a matlab script for a specific 
+    model, using the method, variable, and response class objects. This 
+    function may be called by dakota_in_data.
+
+    "Copyright 2009, by the California Institute of Technology. ALL RIGHTS 
+    RESERVED. United States Government Sponsorship acknowledged. Any commercial 
+    use must be negotiated with the Office of Technology Transfer at the 
+    California Institute of Technology. (NTR 47078)
+
+    This software may be subject to U.S. export control laws. By accepting this 
+    software, the user agrees to comply with all applicable U.S. export laws 
+    and regulations. User has the responsibility to obtain export licenses, or 
+    other export authority as may be required before exporting such information 
+    to foreign countries or providing access to foreign persons."
+    """
+
+    #  process the input parameters
+    if len(fieldnames(method)) == 0:
+        method = str(eval(input('Method?  ')))
+
+    if type(method) == str:
+        dmeth = dakota_method(method)
+    elif isinstance(method, dakota_method):
+        dmeth = method
+    else:
+        raise RuntimeError('Method ' + str(method) + ' is unrecognized class ' + str(type(method)) + '. (should be either "str" or "dakota_method")')
+
+    if len(filei) == 0:
+        filei = str(eval(input('Dakota input file to write?  ')))
+
+    pathstr, name, ext = fileparts(filei)
+    if len(ext) == 0:
+        # fileparts only considers '.in' to be the extension, not '.qmu.in'
+        ext = '.qmu.in'
+
+    filei2 = fullfile(pathstr, name + ext)
+
+    print('Opening Dakota input file \'' + filei2 + '\'')
+    try:
+        with open(filei2, 'w+') as fidi:
+
+            if len(fieldnames(params)) == 0:
+                params = struct()
+
+            params = dakota_in_params(params)
+
+            #  write the strategy section
+            if float(IssmConfig('_DAKOTA_VERSION_')[0]) < 6:
+                strategy_write(fidi, params)
+            else:
+                environment_write(fidi, params)
+
+            #  write the method section
+            method_write(fidi, dmeth, dresp, params)
+            #  write the model section
+            model_write(fidi)
+            #  write the variables section
+            variables_write(fidi, dmeth, dvar)
+            #  write the interface section
+            interface_write(fidi, params)
+            #  write the responses section
+            responses_write(fidi, dmeth, dresp, params)
+
+    except IOError:
+        print(filei2 + ' could not be opened')
+
+    print('End of file successfully written')
+
+    # Uncomment to print contents of Dakota input file (for debugging)
+    # with open(filei2, 'r') as fidi:
+    #     print(fidi.read())
+
+#  function to write the strategy section of the file
+def strategy_write(fidi, params):
+
+    print('Writing strategy section of Dakota input file')
+
+    fidi.write('strategy, \n')
+    fidi.write('\tsingle_method\n\n')
+    param_write(fidi, '\t  ', 'graphics', '', '\n', params)
+    param_write(fidi, '\t  ', 'tabular_graphics_data', '', '\n', params)
+    param_write(fidi, '\t  ', 'tabular_graphics_file', ' ', '\n', params)
+    fidi.write('\n')
+
+
+#  function to write the environment section of the file
+def environment_write(fidi, params):
+
+    print('Writing environment section of Dakota input file')
+
+    fidi.write('environment, \n')
+    param_write(fidi, '\t  ', 'graphics', '', '\n', params)
+    param_write(fidi, '\t  ', 'tabular_graphics_data', '', '\n', params)
+    param_write(fidi, '\t  ', 'tabular_graphics_file', ' ', '\n', params)
+    fidi.write('\n')
+
+
+#  function to write the method section of the file
+def method_write(fidi, dmeth, dresp, params):
+
+    print('Writing method section of Dakota input file')
+
+    fidi.write('method, \n')
+    fidi.write('\t' + str(dmeth.method) + '\n')
+
+    dmeth_params_write(dmeth, fidi)
+
+    #  write response levels
+
+    if strcmp(dmeth.type, 'nond'):
+        for i in range(len(dmeth.responses)):
+            str_name = dmeth.responses[i]
+            resp = eval("{}.{}()".format(str_name, str_name))
+            resp.dakota_rlev_write(fidi, dresp, params)
+
+    fidi.write('\n')
+
+
+#  function to write the model section of the file
+def model_write(fidi):
+
+    print('Writing model section of Dakota input file')
+
+    fidi.write('model, \n')
+    fidi.write('\tsingle\n\n')
+
+
+#  function to write the variables section of the file
+def variables_write(fidi, dmeth, dvar):
+
+    # print('Writing variables section of Dakota input file')
+
+    # fidi.write('variables, \n')
+
+    # #  variables vary by method
+    # fd = fieldnames(dvar)
+    # types = []
+    # var = []
+    # for i in range(len(fd)):
+    #     i_type = eval('dvar.{}[0].__class__.__name__'.format(fd[i]))
+    #     j = dmeth.variables.index(i_type)
+    #     str_name = dmeth.variables[j]
+
+    # # organize so that multiple instances of the same qmu class
+    # # (2 different variable instances of "normal_uncertain" for example)
+    # # are in the same dakota_write call regardless of individual size
+    # # but that each class has its own dakota_write call
+    #     if str_name not in types:
+    #         types.append(str_name)
+    #         var.append(eval('dvar.{}'.format(fd[i])))
+    #     else:
+    #         t = types.index(str_name)
+    #         var[t].extend(eval('dvar.{}'.format(fd[i])))
+
+    # for t in range(len(types)):
+    #     v = eval('{}.{}()'.format(types[t], types[t]))
+    #     v.dakota_write(fidi, var[t])
+
+    # #  linear constraints vary by method
+    # fc = dmeth.lcspec
+
+    # for i in range(len(dmeth.lcspec)):
+    #     str_name = dmeth.lcspec[i]
+    #     var = eval('{}.{}()'.format(str_name, str_name))
+    # # check that str_name is correct against matlab version which has no argument there
+    #     var.dakota_write(fidi, eval('dvar.{}[i]'.format(j)), str_name)
+
+    # fidi.write('\n')
+
+    print('Writing variables section of Dakota input file')
+
+    fidi.write('variables, \n')
+
+    for i in range(len(dmeth.variables)):
+        str_name = dmeth.variables[i]
+        # TODO: Remove this check after continuous_state.py has been updated!
+        if str_name != 'continuous_state':
+            var = eval('{}.{}()'.format(str_name, str_name))
+            var.dakota_write(fidi, dvar)
+
+    for i in range(len(dmeth.lcspec)):
+        str_name = dmeth.lcspec[i]
+        var = eval('{}.{}()'.format(str_name, str_name))
+        # check that str_name is correct against matlab version which has no argument there
+        var.dakota_write(fidi, eval('dvar.{}[i]'.format(str_name)), str_name)
+
+    fidi.write('\n')
+
+
+#  function to write the interface section of the file
+def interface_write(fidi, params):
+
+    print('Writing interface section of Dakota input file')
+
+    fidi.write('interface, \n')
+
+    if (not params.system) and (not params.fork) and (not params.direct):
+        params.fork = True
+    elif params.system + params.fork + params.direct > 1:
+        raise RuntimeError('Too many interfaces selected')
+    if params.system or params.fork:
+        param_write(fidi, '\t', 'asynchronous', '', '\n', params)
+        param_write(fidi, '\t  ', 'evaluation_concurrency', '=', '\n', params)
+        param_write(fidi, '\t  ', 'analysis_concurrency', '=', '\n', params)
+        param_write(fidi, '\t  ', 'evaluation_servers', '=', '\n', params)
+        param_write(fidi, '\t  ', 'evaluation_self_scheduling', '', '\n', params)
+        param_write(fidi, '\t  ', 'evaluation_static_scheduling', '', '\n', params)
+        param_write(fidi, '\t  ', 'analysis_servers', '=', '\n', params)
+        param_write(fidi, '\t  ', 'analysis_self_scheduling', '', '\n', params)
+        param_write(fidi, '\t  ', 'analysis_static_scheduling', '', '\n', params)
+        param_write(fidi, '\t', 'algebraic_mappings', '=', '\n', params)
+        param_write(fidi, '\t', 'system', '', '\n', params)
+        param_write(fidi, '\t', 'fork', '', '\n', params)
+        param_write(fidi, '\t  ', 'analysis_driver', ' = \'', '\'\n', params)
+        if len(params.input_filter) != 0:
+            param_write(fidi, '\t  ', 'input_filter', '=', '\n', params)
+
+        if len(params.output_filter) != 0:
+            param_write(fidi, '\t  ', 'output_filter', '=', '\n', params)
+
+        param_write(fidi, '\t  ', 'failure_capture', '   ', '\n', params)
+        param_write(fidi, '\t  ', 'deactivate', '        ', '\n', params)
+        param_write(fidi, '\t  ', 'parameters_file', ' = \'', '\'\n', params)
+        param_write(fidi, '\t  ', 'results_file', ' = \'', '\'\n', params)
+        param_write(fidi, '\t  ', 'verbatim', '', '\n', params)
+        param_write(fidi, '\t  ', 'aprepro', '', '\n', params)
+        param_write(fidi, '\t  ', 'file_tag', '', '\n', params)
+        param_write(fidi, '\t  ', 'file_save', '', '\n', params)
+    elif params.direct:
+        #  Error: asynchronous capability not yet supported in direct interfaces.
+        #  Update: it is now possible to run in parallel in direct interfaces.
+        param_write(fidi, '\t', 'algebraic_mappings', '=', '\n', params)
+        param_write(fidi, '\t', 'direct', '', '\n', params)
+        param_write(fidi, '\t  ', 'analysis_driver', ' = \'', '\'\n', params)
+        if float(IssmConfig('_DAKOTA_VERSION_')[0]) < 6:
+            param_write(fidi, '\t  ', 'evaluation_static_scheduling', '', '\n', params)
+        else:
+            param_write(fidi, '\t  ', 'evaluation_scheduling', ' ', '\n', params)
+            param_write(fidi, '\t  ', 'processors_per_evaluation', '=', '\n', params)
+        if len(params.analysis_components) != 0:
+            pathstr, name, ext = fileparts(params.analysis_components)
+            if ext != '':
+                ext = '.py'
+
+            params.analysis_components = fullfile(pathstr, name + ext)
+            param_write(fidi, '\t  ', 'analysis_components', ' = \'', '\'\n', params)
+
+        if len(params.input_filter) != 0:
+            param_write(fidi, '\t  ', 'input_filter', '=', '\n', params)
+
+        if len(params.output_filter) != 0:
+            param_write(fidi, '\t  ', 'output_filter', '=', '\n', params)
+
+        param_write(fidi, '\t  ', 'failure_capture', '   ', '\n', params)
+        param_write(fidi, '\t  ', 'deactivate', '        ', '\n', params)
+        param_write(fidi, '\t  ', 'processors_per_analysis', '=', '\n', params)
+
+    fidi.write('\n')
+
+
+#  function to write the responses section of the file
+def responses_write(fidi, dmeth, dresp, params):
+
+    print('Writing responses section of Dakota input file')
+
+    fidi.write('responses, \n')
+    #fidi.write('calibration_terms = 1 \n')
+
+    #  functions, gradients, and hessians vary by method
+
+    rdesc = []
+    for i in range(len(dmeth.responses)):
+        resp = eval(dmeth.responses[i])
+        rdesc = resp.dakota_write(fidi, dresp, rdesc)
+
+    #  write accumulated response descriptors for all response classes
+
+    if len(rdesc) != 0:
+        fidi.write('\tresponse_descriptors =\n')
+        vector_write(fidi, '\t  ', rdesc, 6, 76)
+
+    ghspec_write(fidi, params, dmeth.ghspec)
+
+    fidi.write('\n')
+
+
+#  function to write gradient and hessian specifications
+def ghspec_write(fidi, params, ghspec):
+
+    #  gradients
+    if 'grad' in ghspec:
+        if (not params.numerical_gradients) and (not params.analytic_gradients):
+            params.numerical_gradients = True
+        elif (params.numerical_gradients + params.analytic_gradients > 1):
+            raise RuntimeError('Too many gradients selected')
+
+        if params.numerical_gradients:
+            param_write(fidi, '\t', 'numerical_gradients', '', '\n', params)
+            param_write(fidi, '\t  ', 'method_source', ' ', '\n', params)
+            param_write(fidi, '\t  ', 'interval_type', ' ', '\n', params)
+            param_write(fidi, '\t  ', 'fd_gradient_step_size', '=', '\n', params)
+        elif params.analytic_gradients:
+            param_write(fidi, '\t', 'analytic_gradients', '', '\n', params)
+    #    elif params.mixed_gradients
+    else:
+        fidi.write('\tno_gradients\n')
+
+    #  hessians (no implemented methods use them yet)
+    if 'hess' in ghspec:
+        raise RuntimeError('Hessians needed by method but not provided')
+    else:
+        fidi.write('\tno_hessians\n')
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_m_write.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_m_write.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_m_write.m	(revision 27955)
@@ -0,0 +1,290 @@
+function []=dakota_m_write(method,dmeth,dvar,dresp,params,filem,package,varargin)
+%DAKOTA_M_WRITE - Write a Matlab .m function file to be called by Dakota for 
+% the MATLAB direct or external driver.
+%
+%   Usage:
+%      []=dakota_m_write(method,dmeth,dvar,dresp,params,filem,package,varargin)
+%
+%   where the required input is,
+%      method        (character, Dakota method name)
+%      dmeth         (dakota_method, method class object)
+%      dvar          (structure array, variable class objects)
+%      dresp         (structure array, response class objects)
+%      params        (structure array, method-independent parameters)
+%      filem         (character, name of .m file)
+%      package       (character, analysis package)
+%
+%   The method, dmeth, and filem will be prompted for if empty. params may be 
+%   empty, in which case defaults will be used.
+%
+%   The optional varargin are passed directly through to the QmuUpdateFunctions 
+%   brancher to be used by the analysis package. For example, this could be 
+%   model information.
+%
+%   This function writes a MATLAB .m function file to be called by Dakota for 
+%   the MATLAB direct or external driver. For the direct driver, Dakota is 
+%   linked with MATLAB and automatically starts a MATLAB session, passing the 
+%   variables and responses through the function; for the external driver,
+%   Dakota calls a shell script to start the MATLAB session, passing the 
+%   variables and responses through text files. This function must be tailored 
+%   to the particular analysis package.
+%
+%   This data would typically be generated by a MATLAB script for a specific 
+%   model, using the method, variable, and response class objects. This 
+%   function may be called by dakota_in_data.
+%
+%   "Copyright 2009, by the California Institute of Technology. ALL RIGHTS 
+%   RESERVED. United States Government Sponsorship acknowledged. Any commercial 
+%   use must be negotiated with the Office of Technology Transfer at the 
+%   California Institute of Technology. (NTR 47078)
+%
+%   This software may be subject to U.S. export control laws. By accepting this 
+%   software, the user agrees to comply with all applicable U.S. export laws 
+%   and regulations. User has the responsibility to obtain export licenses, or 
+%   other export authority as may be required before exporting such information 
+%   to foreign countries or providing access to foreign persons."
+%
+if ~nargin
+    help dakota_m_write
+    return
+end
+
+%  process the input parameters
+
+if ~exist('method','var') || isempty(method)
+    method=input('Method?  ','s');
+end
+
+if ~exist('dmeth' ,'var') || isempty(dmeth)
+    dmeth=dakota_method(method);
+end
+
+if ~exist('params','var')
+    params=[];
+end
+
+if ~exist('filem' ,'var') || isempty(filem)
+    filem=input('Matlab m-file to write?  ','s');
+end
+[pathstr,name,ext,versn] = fileparts(filem);
+if isempty(ext)
+    ext='.m';
+end
+filem2=fullfile(pathstr,[name ext versn]);
+
+display(sprintf('Opening Matlab m-file ''%s''',filem2));
+fidm=fopen(sprintf('%s',filem2),'w');
+if (fidm < 0)
+    error('''%s'' could not be opened',filem2);
+end
+
+%  write beginning of the Matlab m-file
+
+begin_write(fidm,name,params);
+
+%  write variables into the Matlab m-file
+
+variables_write(fidm,dmeth,dvar,params,varargin{:});
+
+%  write solution into the Matlab m-file
+
+solution_write(fidm,package);
+
+%  write responses into the Matlab m-file
+
+responses_write(fidm,dmeth,params,dresp);
+
+%  write end of the Matlab m-file
+
+end_write(fidm,name,params);
+
+fclose(fidm);
+display('End of file successfully written');
+
+end
+
+%%  function to write beginning of the Matlab m-file
+
+function []=begin_write(fidm,name,params)
+
+display('Writing beginning of Matlab m-file');
+
+fprintf(fidm,'%%\n');
+if strcmpi(params.analysis_driver,'matlab')
+    fprintf(fidm,'%%  Run the specified input variables and return the output responses.\n');
+    fprintf(fidm,'%%\n');
+    fprintf(fidm,'function Dakota=%s(Dakota)\n\n',name);
+    fprintf(fidm,'clk=clock;\n');
+    fprintf(fidm,'cpu=cputime;\n\n');
+    fprintf(fidm,'%% Dakota\n\n');
+    fprintf(fidm,'infile=''%s'';\n','Qmu.model');
+else
+    fprintf(fidm,'%%  Run the specified input file and return the output file.\n');
+    fprintf(fidm,'%%\n');
+    fprintf(fidm,'function %s(infile,outfile)\n\n',name);
+    fprintf(fidm,'clk=clock;\n');
+    fprintf(fidm,'cpu=cputime;\n\n');
+end
+fprintf(fidm,'try\n');
+fprintf(fidm,'\tloadmodel(infile);\n\n');
+
+if strcmpi(params.analysis_driver,'matlab')
+	fprintf(fidm,'\tmd=qmuname(md,Dakota.fnEvalId);\n\n');
+else
+	fprintf(fidm,'\tmd=qmuname(md);\n\n');
+end
+
+end
+
+%%  function to write variables into the Matlab m-file
+
+function []=variables_write(fidm,dmeth,dvar,params,varargin)
+
+display('Writing variables for Matlab m-file');
+
+fprintf(fidm,'%%  Apply the variables.\n\n');
+ixc=0;
+
+%  variables vary by method
+
+ixc=vsets_write(fidm,ixc,dvar,dmeth.variables,params,varargin{:});
+
+end
+
+%%  function to write variable sets into the Matlab m-file
+
+function [ixc]=vsets_write(fidm,ixc,dvar,variables,params,varargin)
+
+for i=1:length(variables)
+    if isfield(dvar,variables{i})
+        ixc=vlist_write(fidm,ixc,variables{i},dvar.(variables{i}),params,varargin{:});
+    end
+end
+
+end
+
+%%  function to write variable list into the Matlab m-file
+
+function [ixc]=vlist_write(fidm,ixc,vtype,dvar,params,varargin)
+
+disp(sprintf('  Writing %d %s variables',length(dvar),class(dvar)));
+
+for i=1:length(dvar)
+
+	%first find descriptor, without sample number on it.
+	descriptor=discardnum(dvar(i).descriptor);
+
+	%is there a lock on this variable? We don't want to update the variable twice!
+	if exist([descriptor '_lock'],'var'),
+		%lock is in place, do not update! continue;
+		continue;
+	else
+		%first things first, put lock in place
+		eval([descriptor '_lock=1;']);
+
+		%now, we need a string to put in the matlab file, which will update all the variables 
+		%for  this descriptor.
+		[string,ixc]=QmuUpdateFunctions(ixc,descriptor,dvar,params,i,varargin{:});
+
+		%dump this string in the matlab file.
+        fprintf(fidm,'%s',string);
+	end
+end
+
+end
+
+%%  function to write solution into the Matlab m-file
+
+function []=solution_write(fidm,package)
+
+display('Writing solution for Matlab m-file');
+fprintf(fidm,'%%  Run the solution.\n\n');
+
+fprintf(fidm,['\tmd=solve(md,''stressbalance'',''' package ''');\n\n']);
+
+end
+
+%%  function to write responses into the Matlab m-file
+
+function []=responses_write(fidm,dmeth,params,dresp)
+
+display('Writing responses for Matlab m-file');
+
+fprintf(fidm,'%%  Calculate the responses.\n\n');
+ifnvals=0;
+
+if ~strcmpi(params.analysis_driver,'matlab')
+    fprintf(fidm,'\tfid=fopen(outfile,''w'');\n\n');
+end
+
+%  responses vary by method
+
+ifnvals=rsets_write(fidm,ifnvals,params,dresp,dmeth.responses);
+
+fprintf(fidm,'\n');
+if ~strcmpi(params.analysis_driver,'matlab')
+    fprintf(fidm,'\tstatus=fclose(fid);\n\n');
+end
+
+end
+
+%%  function to write response sets into the Matlab m-file
+
+function [ifnvals]=rsets_write(fidm,ifnvals,params,dresp,responses)
+
+for i=1:length(responses)
+    if isfield(dresp,responses{i})
+        ifnvals=rlist_write(fidm,ifnvals,params,responses{i},dresp.(responses{i}));
+    end
+end
+
+end
+
+%%  function to write response list into the Matlab m-file
+
+function [ifnvals]=rlist_write(fidm,ifnvals,params,rtype,dresp)
+
+disp(sprintf('  Writing %d %s responses',length(dresp),class(dresp)));
+for i=1:length(dresp)
+    ifnvals=ifnvals+1;
+    if strcmpi(params.analysis_driver,'matlab')
+        fprintf(fidm,'\tDakota.fnVals(%d)=QmuResponseValue(md,''%s'');\n',ifnvals,dresp(i).descriptor);
+    else
+        fprintf(fidm,'\tfprintf(fid,''%%f\\n'',QmuResponseValue(md,''%s''));\n',dresp(i).descriptor);
+    end
+end
+
+end
+
+%%  function to write end of the Matlab m-file
+
+function []=end_write(fidm,name,params)
+
+display('Writing end of Matlab m-file');
+
+fprintf(fidm,'%%  Error condition.\n\n');
+
+fprintf(fidm,'catch ME\n');
+fprintf(fidm,'\tME\n');
+fprintf(fidm,'\tfor i=1:length(ME.stack)\n');
+fprintf(fidm,'\t\tdisplay(sprintf(''    file(%%d): %%s'',  i,ME.stack(i).file));\n');
+fprintf(fidm,'\t\tdisplay(sprintf(''    name(%%d): %%s'',  i,ME.stack(i).name));\n');
+fprintf(fidm,'\t\tdisplay(sprintf(''    line(%%d): %%d\\n'',i,ME.stack(i).line));\n');
+fprintf(fidm,'\tend\n');
+if strcmpi(params.analysis_driver,'matlab')
+    fprintf(fidm,'\tDakota.failure=1;\n');
+else
+    fprintf(fidm,'\tif exist(''fid'',''var'')\n');
+    fprintf(fidm,'\t\tstatus=fclose(fid);\n');
+    fprintf(fidm,'\tend\n');
+    fprintf(fidm,'\tfid=fopen(outfile,''w'');\n');
+    fprintf(fidm,'\tfprintf(fid,''fail\\n'');\n');
+    fprintf(fidm,'\tstatus=fclose(fid);\n');
+end
+fprintf(fidm,'end\n\n');
+
+fprintf(fidm,'disp(sprintf(''%s -- %%f CPU seconds; %%f clock seconds\\n'',...\n',name);
+fprintf(fidm,'    cputime-cpu,etime(clock,clk)))\n\n');
+fprintf(fidm,'end\n\n');
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_moments.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_moments.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_moments.m	(revision 27955)
@@ -0,0 +1,147 @@
+%
+%  calculate the same moments and confidence intervals that dakota
+%  calculates for a sample.
+%
+%  [dresp                      ]=dakota_moments(dresp,alpha)
+%  [mean,stddev,meanci,stddevci]=dakota_moments(samp ,alpha)
+%
+%  the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    samp          (double array, lists of samples)
+%
+%  and the optional input is:
+%    alpha         (numeric, confidence interval of 100(1-alpha)%)
+%
+%  the required field of dresp is:
+%    sample        (double vector, list of samples)
+%
+%  the required output is:
+%    dresp         (structure array, responses)
+%      or
+%    mean          (double, mean of sample)
+%    stddev        (double, standard deviation of sample)
+%    meanci(2)     (double, confidence interval of mean)
+%    stddevci(2)   (double, confidence interval of standard deviation)
+%
+%  and the output fields of dresp are:
+%    mean          (double, mean of sample)
+%    stddev        (double, standard deviation of sample)
+%    meanci(2)     (double, confidence interval of mean)
+%    stddevci(2)   (double, confidence interval of standard deviation)
+%
+%  for each response (or column of data) in the input array, this
+%  function calculates the mean, standard deviation, and their
+%  confidence intervals for a normal distribution, the same way as
+%  dakota would.  if the input is a structure, the output is fields
+%  in the structure; if the input is an array, the output is arrays.
+%
+%  dresp data would typically be contained in the dakota tabular
+%  output file from a sampling analysis, read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function [varargout]=dakota_moments(varargin)
+
+if ~nargin
+    help dakota_moments
+    return
+end
+
+%%  process input data
+
+iarg=1;
+if     isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+elseif isnumeric(varargin{iarg})
+    samp=varargin{iarg};
+    iarg=iarg+1;
+else
+    error(['Unknown data ''' inputname(1) ''' of type ''' class(varargin{1}) '''.']);
+end
+
+if iarg <= nargin && isnumeric(varargin{iarg})
+    alpha=varargin{iarg};
+    iarg=iarg+1;
+else
+%  use dakota default of 95%
+    alpha=0.05;
+end
+
+%%  calculate the moments and confidence intervals by input type
+
+if     exist('dresp','var') && ~isempty(dresp)
+    for i=1:length(dresp)
+        [dresp(i).mean,dresp(i).stddev,...
+         dresp(i).meanci,dresp(i).stddevci]=...
+            moments_calc(dresp(i).sample,alpha);
+    end
+
+    varargout{1}=dresp;
+
+elseif exist('samp','var') && ~isempty(samp)
+    mean    =zeros(1,size(samp,2));
+    stddev  =zeros(1,size(samp,2));
+    meanci  =zeros(2,size(samp,2));
+    stddevci=zeros(2,size(samp,2));
+
+%  could do this using vector math rather than loop, but want to allow
+%  the case of differently sized samples padded by NaN's
+
+    for i=1:size(samp,2)
+        [mean(i),stddev(i),...
+         meanci(:,i),stddevci(:,i)]=...
+            moments_calc(samp(:,i),alpha);
+    end
+
+    varargout{1}=mean;
+    varargout{2}=stddev;
+    varargout{3}=meanci;
+    varargout{4}=stddevci;
+else
+    error(['Empty data ''' inputname(1) ''' of type ''' class(varargin{1}) '''.']);
+end
+
+end
+
+%%  function to calculate the results
+
+function [mu,sigma,muci,sigmaci]=moments_calc(samp,alpha)
+
+%  remove any NaN padding (should only occur at end)
+
+    samp=samp(~isnan(samp(:)));
+    nsamp=length(samp);
+    prob=1-alpha/2;
+
+%  could use Matlab normfit, but make calculations explicit
+%     [mu,sigma,muci,sigmaci]=normfit(samp,alpha);
+
+    mu   =mean(samp);
+    sigma=std(samp);
+
+	try
+        muci(1,1)   =mu-tinv(prob,nsamp-1)*sigma/sqrt(nsamp);
+        muci(2,1)   =mu+tinv(prob,nsamp-1)*sigma/sqrt(nsamp);
+        sigmaci(1,1)=sigma*sqrt((nsamp-1)/chi2inv(prob  ,nsamp-1));
+        sigmaci(2,1)=sigma*sqrt((nsamp-1)/chi2inv(1-prob,nsamp-1));
+	catch me
+        muci(1,1)   =mu;
+        muci(2,1)   =mu;
+        sigmaci(1,1)=sigma;
+        sigmaci(2,1)=sigma;
+	end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_out_parse.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_out_parse.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_out_parse.m	(revision 27955)
@@ -0,0 +1,1002 @@
+function [method,dresp,scm,pcm,srcm,prcm]=dakota_out_parse(filei) % {{{
+%DAKOTA_OUT_PARSE - Read a Dakota .out or .dat output file and parse it.
+%
+%   Usage:
+%      [method,dresp,scm,pcm,srcm,prcm]=dakota_out_parse(filei)
+%
+%   where the required input is,
+%      filei         (character, name of .out file)
+%
+%   the required output is,
+%      method        (character, dakota method name)
+%      dresp         (structure array, responses)
+%
+%   and the optional output is,
+%      scm           (double array, simple correlation matrix)
+%      pcm           (double array, partial correlation matrix)
+%      srcm          (double array, simple rank correlation matrix)
+%      prcm          (double array, partial rank correlation matrix)
+%
+%   The filei will be prompted for if empty. The fields of dresp are particular 
+%   to the data contained within the file. The scm, pcm, srcm, and prcm are 
+%   output by dakota only for the sampling methods.
+%
+%   This function reads a dakota .out output file and parses it into the MATLAB 
+%   workspace. It operates in a content-driven fashion: it skips the 
+%   intermediate data and then parses whatever output data it encounters in the 
+%   order in which it exists in the file, rather than searching for data based 
+%   on the particular method (this makes it independent of method). It also can 
+%   read and parse the .dat tabular_output file.
+%
+%   This data would typically be used for plotting and other postprocessing 
+%   within MATLAB or Excel.
+%
+%   "Copyright 2009, by the California Institute of Technology. ALL RIGHTS 
+%   RESERVED. United States Government Sponsorship acknowledged. Any commercial 
+%   use must be negotiated with the Office of Technology Transfer at the 
+%   California Institute of Technology. (NTR 47078)
+%
+%   This software may be subject to U.S. export control laws. By accepting this 
+%   software, the user agrees to comply with all applicable U.S. export laws 
+%   and regulations. User has the responsibility to obtain export licenses, or 
+%   other export authority as may be required before exporting such information 
+%   to foreign countries or providing access to foreign persons."
+%
+	if ~nargin
+		help dakota_out_parse
+		return
+	end
+
+	if ~exist('filei' ,'var') || isempty(filei)
+		filei=input('Input file?  ','s');
+	end
+	fidi=fopen(sprintf('%s',filei),'r');
+	if (fidi < 0)
+		error('''%s'' could not be opened',filei);
+	end
+
+	%%  check the first line for the Dakota tabular output file
+
+	method=[];
+	fline=fgetl(fidi);
+	if ~ischar(fline)
+		error('File ''%s'' is empty',filei);
+	end
+
+	if strncmpi(fline,'%eval_id',8)
+		method='unknown';
+		[dresp]=dak_tab_out(fidi,fline);
+		return
+	else
+		fseek(fidi,0,'bof');
+	end
+
+	%%  loop through the file to find the Dakota method name
+
+	[fline]=findline(fidi,'method');
+	if ~ischar(fline)
+		%do nothing
+	else
+		% display(['  ' deblank(fline)]);
+		[ntokens,tokens]=fltokens(fline);
+		%dakota version >6
+		if strcmp(tokens{1}{1}(7),',')
+			fline=fgetl(fidi);
+			[ntokens,tokens]=fltokens(fline);
+			method=tokens{1}{1};
+			display(sprintf('Dakota method = ''%s''',method));
+		elseif strcmp(tokens{1}{1}(7),'N')
+			[fline]=findline(fidi,'methodName = ');
+			[ntokens,tokens]=fltokens(fline);
+			method=tokens{1}{3};
+			display(sprintf('Dakota methodName = ''%s''',method));
+		end
+	end
+
+	dresp=struct([]);
+	scm =struct([]);
+	pcm =struct([]);
+	srcm=struct([]);
+	prcm=struct([]);
+
+	%%  loop through the file to find the function evaluation summary
+
+	fline='';
+	[nfeval]=nfeval_read(fidi,fline);
+	fline=fgetl(fidi);
+
+	%%  process each results section based on content of the file
+
+	while ischar(fline)
+		%     ipos=ftell(fidi);
+		if     isempty(fline)
+		elseif strncmp(fline,'<<<<< Function evaluation summary',33)
+			[nfeval]=nfeval_read(fidi,fline);
+		elseif strncmp(fline,'Statistics based on ',20)
+			[nsamp]=nsamp_read(fidi,fline);
+		elseif strncmp(fline,'Moments for each response function',34)
+			[dresp]=moments_read(fidi,dresp,fline);
+		elseif strncmp(fline,'Moment-based statistics for each response function',50)
+			[dresp]=mbstats_read(fidi,dresp,fline);
+		elseif strncmp(fline,'95% confidence intervals for each response function',51)
+			[dresp]=cis_read(fidi,dresp,fline);
+		elseif strncmp(fline,'Probabilities for each response function',40) || ...
+				strncmp(fline,'Level mappings for each response function',41)
+			[dresp]=cdfs_read(fidi,dresp,fline);
+		elseif strncmp(fline,'Probability Density Function (PDF) histograms for each response function',72)
+			[dresp]=pdfs_read(fidi,dresp,fline);
+		elseif strncmp(fline,'Simple Correlation Matrix',25)
+			[scm]=corrmat_read(fidi,'Simple Correlation Matrix',fline);
+		elseif strncmp(fline,'Partial Correlation Matrix',26)
+			[pcm]=corrmat_read(fidi,'Partial Correlation Matrix',fline);
+		elseif strncmp(fline,'Simple Rank Correlation Matrix',30)
+			[srcm]=corrmat_read(fidi,'Simple Rank Correlation Matrix',fline);
+		elseif strncmp(fline,'Partial Rank Correlation Matrix',31)
+			[prcm]=corrmat_read(fidi,'Partial Rank Correlation Matrix',fline);
+		elseif strncmp(fline,'MV Statistics for ',18)
+			[dresp]=mvstats_read(fidi,dresp,fline);
+		elseif strncmp(fline,'<<<<< Best ',11)
+			[dresp]=best_read(fidi,dresp,fline);
+		elseif strncmp(fline,'The following lists volumetric uniformity measures',50)
+			[dresp]=vum_read(fidi,dresp,fline);
+		elseif strncmp(fline,'<<<<< Iterator ',15) && ...
+				(length(fline) > 26) && ...
+				~isempty(strfind(fline(16:end),' completed.'))
+			[method]=itcomp_read(fidi,fline);
+		elseif strncmp(fline,'-----',5)
+		elseif strncmp(fline,'<<<<< Environment execution completed',37)
+			break;
+		else
+			display(['Unexpected line: ' deblank(fline)]);
+		end
+		fline=fgetl(fidi);
+		%     fseek(fidi,ipos,'bof');
+	end
+
+	%%  loop through the file to verify the end
+
+	% [fline]=findline(fidi,'<<<<< Single Method Strategy completed');
+	% if ~ischar(fline)
+	%     return
+	% end
+	display('End of file successfully reached');
+	fclose(fidi);
+
+end % }}}
+function [dresp]=dak_tab_out(fidi,fline) % {{{
+%%  function to parse the dakota tabular output file
+
+	display('Reading Dakota tabular output file');
+
+	%  process column headings of matrix (skipping eval_id)
+
+	[ntokens,tokens]=fltokens(fline);
+
+	if strncmpi(fline,'%eval_id interface',18) % Dakota versions >= 6
+		offset=2;
+	else % Dakota versions < 6
+		offset=1;
+	end
+	desc=cell(1,ntokens-offset);
+	data=zeros(1,ntokens-offset);
+
+	for i=1:ntokens-offset
+		desc(1,i)=cellstr(tokens{1}{i+offset});
+	end
+	display(sprintf('Number of columns (Dakota V + R) = %d',ntokens-2));
+
+	%  process rows of matrix
+
+	nrow=0;
+	while 1
+		fline=fgetl(fidi);
+
+		if ~ischar(fline) || isempty(fline)
+			break;
+		end
+		[ntokens,tokens]=fltokens(fline);
+
+		%  add row values to matrix (skipping eval_id)
+
+		nrow=nrow+1;
+		for i=1:ntokens-offset
+			data(nrow,i)=tokens{1}{i+offset};
+		end
+	end
+	display(sprintf('Number of rows (Dakota func evals) = %d',nrow));
+
+	%  calculate statistics
+
+	%  since normfit doesn't have a dim argument, and matlab isvector is true
+	%  for a 1xn matrix, handle the case of one row explicitly
+	if (size(data,1) > 1)
+		%dmean  =mean   (data);
+		%dstddev=std    (data,0);
+		[dmean,dstddev,dmeanci,dstddevci]=...
+			normfit_issm(data,0.05);
+	else
+		dmean    =zeros(1,size(data,2));
+		dstddev  =zeros(1,size(data,2));
+		dmeanci  =zeros(2,size(data,2));
+		dstddevci=zeros(2,size(data,2));
+		for i=1:size(data,2)
+			[dmean(1,i),dstddev(1,i),dmeanci(:,i),dstddevci(:,i)]=...
+				normfit_issm(data(:,i),0.05);
+		end
+	end
+
+	dmin   =min(data,[],1);
+	dquart1=prctile_issm(data,25,1);
+	dmedian=median(data,1);
+	dquart3=prctile_issm(data,75,1);
+	dmax   =max(data,[],1);
+	dmin95 =prctile_issm(data,5,1);
+	dmax95 =prctile_issm(data,95,1);
+
+	%  same as Dakota scm, Excel correl
+	dcorrel=corrcoef(data);
+
+	%  divide the data into structures for consistency
+
+	for i=1:length(desc)
+		dresp(i).descriptor=char(desc(i));
+		dresp(i).sample    =data(:,i);
+		dresp(i).mean      =dmean(i);
+		dresp(i).stddev    =dstddev(i);
+		dresp(i).meanci    =dmeanci(:,i);
+		dresp(i).stddevci  =dstddevci(:,i);
+		dresp(i).min       =dmin(i);
+		dresp(i).quart1    =dquart1(i);
+		dresp(i).median    =dmedian(i);
+		dresp(i).quart3    =dquart3(i);
+		dresp(i).max       =dmax(i);
+		dresp(i).dmin95    =dmin95(i);
+		dresp(i).dmax95    =dmax95(i);
+	end
+
+	%  draw box plot
+
+	% figure
+	% subplot(2,1,1)
+	% plot_boxplot(dresp);
+
+	%  draw normal probability plot
+
+	% subplot(2,1,2)
+	% plot_normplot(dresp);
+
+end % }}}
+function [nfeval]=nfeval_read(fidi,fline) % {{{
+%%  function to find and read the number of function evaluations
+
+	if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+		[fline]=findline(fidi,'<<<<< Function evaluation summary');
+		if ~ischar(fline)
+			nfeval = 0;
+			return
+		end
+	end
+
+	[ntokens,tokens]=fltokens(fline);
+	nfeval=tokens{1}{5};
+	display(sprintf('  Dakota function evaluations = %d',nfeval));
+
+end % }}}
+function [nsamp]=nsamp_read(fidi,fline) % {{{
+%%  function to find and read the number of samples
+
+	if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+		[fline]=findline(fidi,'Statistics based on ');
+		if ~ischar(fline)
+			return
+		end
+	end
+
+	[ntokens,tokens]=fltokens(fline);
+	nsamp=tokens{1}{4};
+	display(sprintf('  Dakota samples = %d',nsamp));
+
+end % }}}
+function [dresp]=moments_read(fidi,dresp,fline) % {{{
+%%  function to find and read the moments
+
+	if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+		[fline]=findline(fidi,'Moments for each response function');
+		if ~ischar(fline)
+			return
+		end
+	end
+
+	display('Reading moments for response functions:');
+
+	while 1
+		fline=fgetl(fidi);
+		if isempty(fline)
+			break;
+		end
+		[ntokens,tokens]=fltokens(fline);
+
+		%  add new response function and moments
+
+		dresp(end+1).descriptor=tokens{1}{ 1};
+		display(sprintf('  %s',dresp(end).descriptor));
+		dresp(end  ).mean      =tokens{1}{ 4};
+		dresp(end  ).stddev    =tokens{1}{ 8};
+		dresp(end  ).coefvar   =tokens{1}{13};
+	end
+
+	display(sprintf('  Number of Dakota response functions = %d',...
+		length(dresp)));
+
+end % }}}
+function [dresp]=mbstats_read(fidi,dresp,fline) % {{{
+%%  function to find and read the moment-based statistics
+
+	if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+		[fline]=findline(fidi,'Moment-based statistics for each response function');
+		if ~ischar(fline)
+			return
+		end
+	end
+
+	display('Reading moment-based statistics for response functions:');
+
+	%  skip column headings of moment-based statistics
+
+	fline=fgetl(fidi);
+
+	while 1
+		fline=fgetl(fidi);
+		if isempty(fline)
+			break;
+		end
+		[ntokens,tokens]=fltokens(fline);
+
+		%  add new response function and moment-based statistics
+
+		dresp(end+1).descriptor=tokens{1}{ 1};
+		display(sprintf('  %s',dresp(end).descriptor));
+		dresp(end  ).mean      =tokens{1}{ 2};
+		dresp(end  ).stddev    =tokens{1}{ 3};
+		dresp(end  ).skewness  =tokens{1}{ 4};
+		dresp(end  ).kurtosis  =tokens{1}{ 5};
+	end
+
+	display(sprintf('  Number of Dakota response functions = %d',...
+		length(dresp)));
+
+end % }}}
+function [dresp]=cis_read(fidi,dresp,fline) % {{{
+%%  function to find and read the confidence intervals
+
+	if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+		[fline]=findline(fidi,...
+			'95% confidence intervals for each response function');
+		if ~ischar(fline)
+			return
+		end
+	end
+
+	display('Reading 95% confidence intervals for response functions:');
+
+	while 1
+		fline=fgetl(fidi);
+		if isempty(fline)
+			break;
+		end
+		[ntokens,tokens]=fltokens(fline);
+
+		%  check for column headings in Dakota 5.2
+
+		if (ntokens == 4)
+			fline=fgetl(fidi);
+			if isempty(fline)
+				break;
+			end
+			[ntokens,tokens]=fltokens(fline);
+		end
+
+		%  find response function associated with confidence intervals
+
+		idresp=0;
+		for i=1:length(dresp)
+			if strcmpi(tokens{1}{ 1},dresp(i).descriptor)
+				idresp=i;
+				break;
+			end
+		end
+		if ~idresp
+			idresp=length(dresp)+1;
+			dresp(idresp).descriptor=tokens{1}{ 1};
+			display(sprintf('  %s',dresp(idresp).descriptor));
+		end
+
+		%  add confidence intervals to response functions
+
+		if (ntokens == 14)
+			dresp(i).meanci  (1,1)=tokens{1}{ 5};
+			dresp(i).meanci  (2,1)=tokens{1}{ 6};
+			dresp(i).stddevci(1,1)=tokens{1}{12};
+			dresp(i).stddevci(2,1)=tokens{1}{13};
+		else
+			dresp(i).meanci  (1,1)=tokens{1}{ 2};
+			dresp(i).meanci  (2,1)=tokens{1}{ 3};
+			dresp(i).stddevci(1,1)=tokens{1}{ 4};
+			dresp(i).stddevci(2,1)=tokens{1}{ 5};
+		end
+	end
+
+	display(sprintf('  Number of Dakota response functions = %d',...
+		length(dresp)));
+
+end % }}}
+function [dresp]=cdfs_read(fidi,dresp,fline) % {{{
+%%  function to find and read the cdf's
+
+	if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+		[fline]=findline(fidi,'Probabilities for each response function');
+		if ~ischar(fline)
+			[fline]=findline(fidi,'Level mappings for each response function');
+			if ~ischar(fline)
+				return
+			end
+		end
+	end
+
+	display('Reading CDF''s for response functions:');
+
+	while ischar(fline) && ~isempty(fline)
+		fline=fgetl(fidi);
+		if ~ischar(fline)
+			break;
+		end
+
+		%  process header line of cdf
+
+		while ischar(fline) && ~isempty(fline)
+			[ntokens,tokens]=fltokens(fline);
+
+			%  find response function associated with cdf
+
+			idresp=0;
+			for i=1:length(dresp)
+				if strcmpi(tokens{1}{ 6},dresp(i).descriptor)
+					idresp=i;
+					break;
+				end
+			end
+			if ~idresp
+				idresp=length(dresp)+1;
+				dresp(idresp).descriptor=tokens{1}{ 6};
+				display(sprintf('  %s',dresp(idresp).descriptor));
+			end
+
+			%  skip column headings of cdf
+
+			fline=fgetl(fidi);
+			fline=fgetl(fidi);
+
+			%  read and add cdf table to response function
+
+			fline=fgetl(fidi);
+			icdf=0;
+			while ischar(fline) && ~isempty(fline) && ...
+					~strncmpi(fline,'Cumulative Distribution Function',32)
+				[ntokens,tokens]=fltokens(fline);
+				icdf=icdf+1;
+				dresp(idresp).cdf(icdf,1:4)=NaN;
+				%  in later versions of Dakota, uncalculated columns are now blank
+				itoken=0;
+				for i=1:length(fline)/19
+					if ~isempty(deblank(fline((i-1)*19+1:i*19)))
+						itoken=itoken+1;
+						dresp(idresp).cdf(icdf,i)=tokens{1}{itoken};
+					end
+				end
+				fline=fgetl(fidi);
+			end
+		end
+	end
+
+	display(sprintf('  Number of Dakota response functions = %d',...
+		length(dresp)));
+
+end % }}}
+function [dresp]=pdfs_read(fidi,dresp,fline) % {{{
+%%  function to find and read the pdf's
+
+	if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+		[fline]=findline(fidi,'Probability Density Function (PDF) histograms for each response function');
+		if ~ischar(fline)
+			return
+		end
+	end
+
+	display('Reading PDF''s for response functions:');
+
+	while ischar(fline) && ~isempty(fline)
+		fline=fgetl(fidi);
+		if ~ischar(fline)
+			break;
+		end
+
+		%  process header line of pdf
+
+		while ischar(fline) && ~isempty(fline)
+			[ntokens,tokens]=fltokens(fline);
+
+			%  find response function associated with pdf
+
+			idresp=0;
+			for i=1:length(dresp)
+				if strcmpi(tokens{1}{ 3},dresp(i).descriptor)
+					idresp=i;
+					break;
+				end
+			end
+			if ~idresp
+				idresp=length(dresp)+1;
+				dresp(idresp).descriptor=tokens{1}{ 3};
+				display(sprintf('  %s',dresp(idresp).descriptor));
+			end
+
+			%  skip column headings of pdf
+
+			fline=fgetl(fidi);
+			fline=fgetl(fidi);
+
+			%  read and add pdf table to response function
+
+			fline=fgetl(fidi);
+			ipdf=0;
+			while ischar(fline) && ~isempty(fline) && ...
+					~strncmpi(fline,'PDF for', 7)
+				[ntokens,tokens]=fltokens(fline);
+				ipdf=ipdf+1;
+				dresp(idresp).pdf(ipdf,1:3)=NaN;
+				for i=1:3
+					dresp(idresp).pdf(ipdf,i)=tokens{1}{i};
+				end
+				fline=fgetl(fidi);
+			end
+		end
+	end
+
+	display(sprintf('  Number of Dakota response functions = %d',...
+		length(dresp)));
+
+end % }}}
+function [cmat]=corrmat_read(fidi,cmstr,fline) % {{{
+%%  function to find and read a correlation matrix
+
+	if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+		[fline]=findline(fidi,cmstr);
+		if ~ischar(fline)
+			cmat=struct([]);
+			return
+		end
+	end
+
+	display(['Reading ''' fline '''']);
+
+	cmat.title=fline;
+
+	while ~isempty(fline)
+		fline=fgetl(fidi);
+		if ~ischar(fline)
+			break;
+		end
+
+		%  process column headings of matrix
+
+		[ntokens,tokens]=fltokens(fline);
+		cmat.column=cell(1,ntokens);
+		cmat.row   =cell(1,1);
+		cmat.matrix=zeros(1,ntokens);
+
+		for i=1:ntokens
+			cmat.column(1,i)=cellstr(tokens{1}{i});
+		end
+
+		%  process rows of matrix, reading until blank line
+
+		nrow=0;
+		while 1
+			fline=fgetl(fidi);
+			if isempty(fline)
+				break;
+			end
+			[ntokens,tokens]=fltokens(fline);
+
+			%  add row heading to matrix
+
+			nrow=nrow+1;
+			cmat.row   (nrow,1)=cellstr(tokens{1}{1});
+
+			%  add row values to matrix
+
+			for i=2:ntokens
+				cmat.matrix(nrow,i-1)=tokens{1}{i};
+			end
+		end
+	end
+
+end % }}}
+function [dresp]=mvstats_read(fidi,dresp,fline) % {{{
+%%  function to find and read the MV statistics
+
+	if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+		[fline]=findline(fidi,'MV Statistics for ');
+		if ~ischar(fline)
+			return
+		end
+	end
+
+	display('Reading MV statistics for response functions:');
+	ndresp=0;
+
+	while ischar(fline) && ~isempty(fline) && ...
+			strncmpi(fline,'MV Statistics for ',18)
+
+		%  add new response function and moments
+
+		[ntokens,tokens]=fltokens(fline);
+		dresp(end+1).descriptor=tokens{1}{4};
+		display(sprintf('  %s',dresp(end).descriptor));
+		fline=fgetl(fidi);
+		[ntokens,tokens]=fltokens(fline);
+		dresp(end  ).mean      =tokens{1}{5};
+		fline=fgetl(fidi);
+		[ntokens,tokens]=fltokens(fline);
+		dresp(end  ).stddev    =tokens{1}{7};
+
+		%  read and add importance factors to response function
+
+		idvar=0;
+		fline=fgetl(fidi);
+		if ~ischar(fline)
+			break;
+		end
+
+		while ischar(fline) && ~isempty(fline) && ...
+				strncmpi(fline,'  Importance Factor for variable ',33)
+			[ntokens,tokens]=fltokens(fline);
+			idvar=idvar+1;
+			dresp(end).var   (idvar,1)=cellstr(tokens{1}{ 5});
+			dresp(end).impfac(idvar,1)=        tokens{1}{ 7};
+			if (ntokens >= 10)
+				dresp(end).sens  (idvar,1)=        tokens{1}{10};
+			else
+				dresp(end).sens  (idvar,1)=NaN;
+			end
+
+			fline=fgetl(fidi);
+		end
+
+		%  if importance factors missing, skip to cdf
+
+		if ~idvar
+			display('    Importance Factors not available');
+			dresp(end).var   ={};
+			dresp(end).impfac=[];
+			dresp(end).sens  =[];
+			while ischar(fline) && ...
+					~strncmpi(fline,'Cumulative Distribution Function',32) && ...
+					~strncmpi(fline,'MV Statistics for ',18) && ...
+					~strncmp (fline,'-',1)
+				fline=fgetl(fidi);
+			end
+		end
+
+		%  process header line of cdf
+
+		icdf=0;
+
+		while ischar(fline) && ~isempty(fline) && ...
+				strncmpi(fline,'Cumulative Distribution Function',32)
+			[ntokens,tokens]=fltokens(fline);
+
+			%  find response function associated with cdf
+
+			idresp=0;
+			for i=1:length(dresp)
+				if strcmpi(tokens{1}{ 6},dresp(i).descriptor)
+					idresp=i;
+					break;
+				end
+			end
+			if ~idresp
+				idresp=length(dresp)+1;
+				dresp(idresp).descriptor=tokens{1}{ 6};
+				display(sprintf('  %s',dresp(idresp).descriptor));
+			end
+
+			%  skip column headings of cdf
+
+			fline=fgetl(fidi);
+			fline=fgetl(fidi);
+
+			%  read and add cdf table to response function
+
+			fline=fgetl(fidi);
+			while ~isempty(fline) && ...
+					~strncmpi(fline,'MV Statistics for ',18) && ...
+					~strncmp (fline,'-',1)
+				[ntokens,tokens]=fltokens(fline);
+				icdf=icdf+1;
+				dresp(idresp).cdf(icdf,1)=tokens{1}{1};
+				dresp(idresp).cdf(icdf,2)=tokens{1}{2};
+				if (ntokens == 4)
+					dresp(idresp).cdf(icdf,3)=tokens{1}{3};
+					dresp(idresp).cdf(icdf,4)=tokens{1}{4};
+				else
+					dresp(idresp).cdf(icdf,3)=NaN;
+					dresp(idresp).cdf(icdf,4)=NaN;
+				end
+				fline=fgetl(fidi);
+			end
+		end
+
+		%  if cdf missing, skip to end of response function
+
+		if ~icdf
+			display('    Cumulative Distribution Function not available');
+			dresp(ndresp).cdf=[];
+			while ischar(fline) && ...
+					~strncmpi(fline,'MV Statistics for ',18) && ...
+					~strncmp (fline,'-',1)
+				fline=fgetl(fidi);
+			end
+		end
+
+	end
+
+	display(sprintf('  Number of Dakota response functions = %d',...
+		length(dresp)));
+
+end % }}}
+function [dresp]=best_read(fidi,dresp,fline) % {{{
+%%  function to find and read the best evaluation
+
+	if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+		[fline]=findline(fidi,'<<<<< Best ');
+		if ~ischar(fline)
+			return
+		end
+	end
+
+	if isempty(dresp)
+		dresp(end+1).best=[];
+	end
+	display('Reading values for best function evaluation:');
+
+	while ischar(fline) && ~isempty(fline) && ...
+			strncmpi(fline,'<<<<< Best ',11)
+		[ntokens,tokens]=fltokens(fline);
+
+		%  read and add best parameter(s)
+
+		if     strncmpi(cellstr(tokens{1}{3}),'parameter', 9)
+			display(['  ' deblank(fline)]);
+
+			fline=fgetl(fidi);
+			dresp.best.param     =[];
+			dresp.best.descriptor={};
+
+			while ischar(fline) && ~isempty(fline) && ...
+					~strncmpi(fline,'<<<<< Best ',11)
+				[ntokens,tokens]=fltokens(fline);
+				dresp.best.param     (end+1,1)=        tokens{1}{1};
+				%dresp.best.descriptor(end+1,1)=cellstr(tokens{1}{2}); this line is wrong, there is no descriptor
+				fline=fgetl(fidi);
+			end
+
+			%  read and add best objective function(s)
+
+		elseif strncmpi(cellstr(tokens{1}{3}),'objective', 9) && ...
+				strncmpi(cellstr(tokens{1}{4}),'function' , 8)
+			display(['  ' deblank(fline)]);
+
+			fline=fgetl(fidi);
+			dresp.best.of=[];
+
+			while ischar(fline) && ~isempty(fline) && ...
+					~strncmpi(fline,'<<<<< Best ',11)
+				[ntokens,tokens]=fltokens(fline);
+				dresp.best.of(end+1,1)=        tokens{1}{1};
+				fline=fgetl(fidi);
+			end
+
+			%  read and add best residual norms
+
+		elseif strncmpi(cellstr(tokens{1}{3}),'residual', 8) && ...
+				strncmpi(cellstr(tokens{1}{4}),'norm'    , 4)
+			display(['  ' deblank(fline)]);
+			dresp.best.norm   =        tokens{1}{ 6};
+			dresp.best.hnormsq=        tokens{1}{11};
+
+			fline=fgetl(fidi);
+
+			while ischar(fline) && ~isempty(fline) && ...
+					~strncmpi(fline,'<<<<< Best ',11)
+				fline=fgetl(fidi);
+			end
+
+			%  read and add best residual term(s)
+
+		elseif strncmpi(cellstr(tokens{1}{3}),'residual', 8) && ...
+				strncmpi(cellstr(tokens{1}{4}),'term'    , 4)
+			display(['  ' deblank(fline)]);
+
+			fline=fgetl(fidi);
+			dresp.best.res=[];
+
+			while ischar(fline) && ~isempty(fline) && ...
+					~strncmpi(fline,'<<<<< Best ',11)
+				[ntokens,tokens]=fltokens(fline);
+				dresp.best.res(end+1,1)=        tokens{1}{1};
+				fline=fgetl(fidi);
+			end
+
+			%  read and add best constraint value(s)
+
+		elseif strncmpi(cellstr(tokens{1}{3}),'constraint',10) && ...
+				strncmpi(cellstr(tokens{1}{4}),'value'     , 5)
+			display(['  ' deblank(fline)]);
+
+			fline=fgetl(fidi);
+			dresp.best.nc=[];
+
+			while ischar(fline) && ~isempty(fline) && ...
+					~strncmpi(fline,'<<<<< Best ',11)
+				[ntokens,tokens]=fltokens(fline);
+				dresp.best.nc(end+1,1)=        tokens{1}{1};
+				fline=fgetl(fidi);
+			end
+
+			%  read and add best data captured
+
+		elseif strncmpi(cellstr(tokens{1}{3}),'data'    , 4) && ...
+				strncmpi(cellstr(tokens{1}{4}),'captured', 8)
+			display(['  ' deblank(fline)]);
+			dresp.best.eval=        tokens{1}{8};
+
+			fline=fgetl(fidi);
+
+			while ischar(fline) && ~isempty(fline) && ...
+					~strncmpi(fline,'<<<<< Best ',11)
+				fline=fgetl(fidi);
+			end
+
+			%  read until next best or blank or end
+
+		else
+			display(['  ' deblank(fline) '  (ignored)']);
+
+			fline=fgetl(fidi);
+
+			while ischar(fline) && ~isempty(fline) && ...
+					~strncmpi(fline,'<<<<< Best ',11)
+				fline=fgetl(fidi);
+			end
+		end
+	end
+
+end % }}}
+function [dresp]=vum_read(fidi,dresp,fline) % {{{
+%%  function to find and read the volumetric uniformity measures
+
+	if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+		[fline]=findline(fidi,'The following lists volumetric uniformity measures');
+		if ~ischar(fline)
+			return
+		end
+	end
+
+	if isempty(dresp)
+		dresp(end+1).vum=[];
+	end
+	display('Reading measures for volumetric uniformity');
+
+	fline=fgetl(fidi);
+	fline=fgetl(fidi);
+
+	while ischar(fline) && ~isempty(fline)
+		[ntokens,tokens]=fltokens(fline);
+		switch lower(tokens{1}{1})
+			case 'chi'
+				dresp.vum.chi=tokens{1}{4};
+			case 'd'
+				dresp.vum.d  =tokens{1}{4};
+			case 'h'
+				dresp.vum.h  =tokens{1}{4};
+			case 'tau'
+				dresp.vum.tau=tokens{1}{4};
+		end
+		fline=fgetl(fidi);
+	end
+
+end % }}}
+function [method]=itcomp_read(fidi,fline) % {{{
+%%  function to find and read the iterator completion
+
+	if ~exist('fline','var') || isempty(fline) || ~ischar(fline)
+		while 1
+			[fline]=findline(fidi,'<<<<< Iterator ');
+			if ~ischar(fline)
+				return
+			end
+			if (length(fline) > 26) && ...
+					~isempty(strfind(fline(16:end),' completed.'))
+				break
+			end
+		end
+	end
+
+	[ntokens,tokens]=fltokens(fline);
+	method=tokens{1}{3};
+	display(sprintf('Dakota iterator ''%s'' completed',method));
+
+end % }}}
+function [fline]=findline(fidi,string) % {{{
+%%  function to find a file line starting with a specified string
+
+	ipos=ftell(fidi);
+
+	while 1
+		fline=fgetl(fidi);
+		if ~ischar(fline)
+			break;
+		else
+			if (strncmpi(fline,string,length(string)))
+				return;
+			end
+		end
+	end
+
+	%  issue warning and reset file position
+
+	warning('findline:str_not_found',...
+		'String ''%s'' not found in file',string);
+	fseek(fidi,ipos,'bof');
+
+end % }}}
+function [ntokens,tokens]=fltokens(fline) % {{{
+%%  function to parse a file line into tokens
+
+	if ~ischar(fline)
+		ntokens=-1;
+		tokens={};
+		return;
+	end
+	if isempty(fline)
+		ntokens=0;
+		tokens={};
+		return;
+	end
+
+	strings=textscan(fline,'%s','delimiter',' :');
+	%for i=1:length(strings{1})
+	%    display(sprintf('i=%d; strings{1}{%d}=%s',i,i,strings{1}{i}))
+	%end
+	ntokens=0;
+	tokens{1}{length(strings)}='';
+
+	for i=1:length(strings{1})
+		if isempty(strings{1}{i})
+			continue
+		end
+		ntokens=ntokens+1;
+		inum=sscanf(strings{1}{i},'%f');
+		if isempty(inum)
+			tokens{1}{ntokens}=strings{1}{i};
+			%        display(sprintf('i=%d; tokens{1}{%d}=%s',...
+			%            i,ntokens,tokens{1}{ntokens}))
+		else
+			tokens{1}{ntokens}=inum;
+			%        display(sprintf('i=%d; tokens{1}{%d}=%f',...
+			%            i,ntokens,tokens{1}{ntokens}))
+		end
+	end
+
+end % }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_out_parse.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_out_parse.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_out_parse.py	(revision 27955)
@@ -0,0 +1,953 @@
+import numpy as np
+from os.path import isfile, getsize
+import re
+from MatlabFuncs import *
+from prctile_issm import *
+from normfit_issm import *
+#move this later
+from helpers import *
+
+# NOTE: May be rewritten later to take advantage of Python's file I/O 
+# mechanics. As it is written now, it is often difficult to work with, but is 
+# analagous to the MATLAB version of dakota_out_parse.
+
+
+def dakota_out_parse(filei):  # {{{
+    """DAKOTA_OUT_PARSE - read a Dakota .out or .dat output file and parse it.
+
+    Usage:
+        [method, dresp, scm, pcm, srcm, prcm] = dakota_out_parse(filei)
+
+    where the required input is,
+        filei         (character, name of .out file)
+
+    the required output is,
+        method        (character, Dakota method name)
+        dresp         (structure array, responses)
+
+    and the optional output is,
+        scm           (double array, simple correlation matrix)
+        pcm           (double array, partial correlation matrix)
+        srcm          (double array, simple rank correlation matrix)
+        prcm          (double array, partial rank correlation matrix)
+
+    The filei will be prompted for if empty. The fields of dresp are particular 
+    to the data contained within the file. The scm, pcm, srcm, and prcm are 
+    output by Dakota only for the sampling methods.
+
+    This function reads a Dakota .out output file and parses it into the Python 
+    runtime. It operates in a content-driven fashion, where it skips the 
+    intermediate data and then parses whatever output data it encounters in the 
+    order in which it exists in the file, rather than searching for data based 
+    on the particular method (this makes it independent of method). It also can 
+    read and parse the .dat tabular_output file.
+
+    This data would typically be used for plotting and other postprocessing 
+    within MATLAB or Excel.
+
+    TODO:
+    - Figure out why output from Dakota is different under MATLAB and Python 
+    (is it the input file that we write?)
+
+    "Copyright 2009, by the California Institute of Technology. ALL RIGHTS 
+    RESERVED. United States Government Sponsorship acknowledged. Any commercial 
+    use must be negotiated with the Office of Technology Transfer at the 
+    California Institute of Technology. (NTR 47078)
+
+    This software may be subject to U.S. export control laws. By accepting this 
+    software, the user agrees to comply with all applicable U.S. export laws 
+    and regulations. User has the responsibility to obtain export licenses, or 
+    other export authority as may be required before exporting such information 
+    to foreign countries or providing access to foreign persons."
+    """
+
+    if filei is None:
+        help(dakota_out_parse)
+        return
+
+    if not isfile(filei) or getsize(filei) == 0:
+        filei = str(eval(input('Input file? ')))
+
+    #fidi = fopen(sprintf('%s', filei), 'r')
+    #try:
+    with open(filei, 'r') as fidi:
+        #  check the first line for the Dakota tabular output file
+        method = []
+        fline = fidi.readline()
+        if getsize(filei) == 0 or fline == '':
+            raise RuntimeError('File ' + filei + ' is empty')
+
+        dresp = [] # of struct()
+        scm = struct()
+        pcm = struct()
+        srcm = struct()
+        prcm = struct()
+
+        if '%eval_id' in fline:
+            method = 'unknown'
+            dresp = dak_tab_out(fidi, fline)
+            return [method, dresp, scm, pcm, srcm, prcm]
+        else:
+            fidi.seek(0, 0)
+
+        # loop through the file to find the Dakota method name
+        fline = findline(fidi, 'method', True)
+        if fline is None:
+            #do nothing
+            pass
+        else:
+            if fline[6] == ',':
+                fline = fidi.readline()
+                [ntokens, tokens] = fltokens(fline)
+                method = tokens[0].strip()
+                print('Dakota method = \'' + method + '\'')
+            elif fline[6] in ['N', 'n']:
+                fline = findline(fidi, 'methodName = ')
+                [ntokens, tokens] = fltokens(fline)
+                method = tokens[2].strip()
+                print('Dakota methodName = \'' + method + '\'')
+
+        # loop through the file to find the function evaluation summary
+        counter = 0
+        fline = ''
+        nfeval = nfeval_read(fidi, fline)
+
+        # process each results section based on content of the file
+        while counter < 10:
+            # because python makes file I/O difficult
+            # if we see 10 + blank lines in a row then we have reached EOF
+            # (tests show actual maximum number of blank lines is around 5)
+            if fline == '' or fline.isspace():
+                counter += 1
+            else:
+                counter = 0
+            # ipos = ftell(fidi)
+            fline = fidi.readline()
+            if fline == '' or fline.isspace():
+                pass
+            elif '<<<<< Function evaluation summary' in fline:
+                nfeval = nfeval_read(fidi, fline)
+            elif 'Statistics based on ' in fline:
+                nsamp = nsamp_read(fidi, fline)
+            elif 'Moments for each response function' in fline:
+                dresp = moments_read(fidi, dresp, fline)
+            elif 'Moment-based statistics for each response function' in fline:
+                dresp = mbstats_read(fidi, dresp, fline)
+            elif '95% confidence intervals for each response function' in fline:
+                dresp = cis_read(fidi, dresp, fline)
+            elif 'Probabilities for each response function' in fline or 'Level mappings for each response function' in fline:
+                dresp = cdfs_read(fidi, dresp, fline)
+            elif 'Probability Density Function (PDF) histograms for each response function' in fline:
+                dresp = pdfs_read(fidi, dresp, fline)
+            elif 'Simple Correlation Matrix' in fline:
+                scm = corrmat_read(fidi, 'Simple Correlation Matrix', fline)
+            elif 'Partial Correlation Matrix' in fline:
+                pcm = corrmat_read(fidi, 'Partial Correlation Matrix', fline)
+            elif 'Simple Rank Correlation Matrix' in fline:
+                srcm = corrmat_read(fidi, 'Simple Rank Correlatio:n Matrix', fline)
+            elif 'Partial Rank Correlation Matrix' in fline:
+                prcm = corrmat_read(fidi, 'Partial Rank Correlation Matrix', fline)
+            elif 'MV Statistics for ' in fline:
+                dresp = mvstats_read(fidi, dresp, fline)
+            elif '<<<<< Best ' in fline:
+                dresp = best_read(fidi, dresp, fline)
+            elif 'The following lists volumetric uniformity measures' in fline:
+                dresp = vum_read(fidi, dresp, fline)
+            elif '<<<<< Iterator ' in fline and (len(fline) > 26) and (' completed.' in fline[15:]):
+                method = itcomp_read(fidi, fline)
+            elif '-----' in fline:
+                pass
+            else:
+                'Unexpected line: ' + str(fline)
+
+            # fidi.seek(ipos, 0)
+
+    # loop through the file to verify the end
+
+    # fline = findline(fidi, '<<<<< Single Method Strategy completed')
+    # if not ischar(fline)
+    #     return
+    #
+        print('End of file successfully reached')
+    #close(fidi)
+    #except Exception as err:
+    #print "ERROR in dakota_out_parse: " + err
+    #raise err
+    #raise RuntimeError(filei + ' could not be opened')
+
+    return [method, dresp, scm, pcm, srcm, prcm]
+    # }}}
+
+
+def dak_tab_out(fidi, fline):  # {{{
+    """DAK_TAB_OUT - function to parse the Dakota tabular output file
+    """
+
+    print('Reading Dakota tabular output file')
+
+    # Process column headings of matrix (skipping eval_id)
+    [ntokens, tokens] = fltokens(fline)
+
+    if strncmpi(fline, '%eval_id interface', 18): # Dakota versions >= 6
+        offset = 2
+    else:  # Dakota versions < 6
+        offset = 1
+
+    desc = ['' for i in range(ntokens - offset)]
+    data = np.zeros((1, ntokens - offset))
+
+    for i in range(ntokens - offset):
+        desc[i] = str(tokens[i + offset])
+
+    print('Number of columns (Dakota V + R) = {}'.format(ntokens - 2))
+
+    # Process rows of matrix
+    nrow = 0
+    while True:
+        fline = fidi.readline()
+
+        if fline == '' or fline.isspace():
+            break
+
+        if nrow > 0:
+            data = np.concatenate((data, [np.zeros(ntokens - offset)]))
+
+        [ntokens, tokens] = fltokens(fline)
+
+        # Add row values to matrix (skipping eval_id)
+        for i in range(ntokens - offset):
+            data[nrow, i] = tokens[i + offset]
+
+        nrow = nrow + 1
+
+    print('Number of rows (Dakota func evals) = ' + str(nrow))
+
+    # Calculate statistics
+    if (np.size(data, 0) > 1):
+        #dmean = mean(data)
+        #dstddev = std(data, 0)
+        [dmean, dstddev, dmeanci, dstddevci] = normfit_issm(data, 0.05)
+    else:
+        dmean = np.zeros((1, np.size(data, 1)))
+        dstddev = np.zeros((1, np.size(data, 1)))
+        dmeanci = np.zeros((2, np.size(data, 1)))
+        dstddevci = np.zeros((2, np.size(data, 1)))
+        for i in range(np.size(data, 1)):
+            [dmean[0, i], dstddev[0, i], dmeanci[:, i], dstddevci[:, i]] = normfit_issm(data[:, i], 0.05)
+
+    dmin = data.min(axis=0)
+    dquart1 = prctile_issm(data, 25, 0)
+    dmedian = np.median(data, axis=0)
+    dquart3 = prctile_issm(data, 75, 0)
+    dmax = data.max(axis=0)
+    dmin95 = prctile_issm(data, 5, 0)
+    dmax95 = prctile_issm(data, 95, 0)
+
+    # NOTE: The following line may cause the following warning (should not 
+    # crash or invalidate results) when one of the inputs does not change with 
+    # respect to the other(s), causing an internal divide-by-zero error,
+    #
+    #       /usr/local/lib/python2.7/dist-packages/numpy/lib/function_base.py:3163:
+    #       RuntimeWarning: invalid value encountered in true_divide
+    #       c /= stddev[:, None]
+    #
+    # (and/or the same but with "c /= stddev[None, :]")
+
+    # Equivalent to Dakota scm, MATLAB corrcoef, and Excel correl
+    dcorrel = np.corrcoef(data.T)
+
+    # Divide the data into structures for consistency
+    dresp = []
+    for i in range(len(desc)):
+        dresp.append(struct())
+        dresp[i].descriptor = desc[i]
+        dresp[i].sample = data[:, i]
+        dresp[i].mean = dmean[i]
+        dresp[i].stddev = dstddev[i]
+        dresp[i].meanci = dmeanci[:, i]
+        dresp[i].stddevci = dstddevci[:, i]
+        dresp[i].min = dmin[i]
+        dresp[i].quart1 = dquart1[i]
+        dresp[i].median = dmedian[i]
+        dresp[i].quart3 = dquart3[i]
+        dresp[i].max = dmax[i]
+        dresp[i].dmin95 = dmin95[i]
+        dresp[i].dmax95 = dmax95[i]
+
+    #  draw box plot
+
+    # figure
+    # subplot(2, 1, 1)
+    # plot_boxplot(dresp)
+
+    #  draw normal probability plot
+
+    # subplot(2, 1, 2)
+    # plot_normplot(dresp)
+
+    return dresp
+    # }}}
+
+
+def nfeval_read(fidi, fline):  # {{{
+    #  function to find and read the number of function evaluations
+
+    if fline is None or fline == '' or fline.isspace():
+        fline = findline(fidi, '<<<<< Function evaluation summary')
+        nfeval = 0
+        return
+
+    [ntokens, tokens] = fltokens(fline)
+    nfeval = tokens[4]
+    print('  Dakota function evaluations = ' + str(int(nfeval)))
+
+    return nfeval
+    # }}}
+
+
+def nsamp_read(fidi, fline):  # {{{
+    #  function to find and read the number of samples
+
+    if fline is None or fline == '' or fline.isspace():
+        fline = findline(fidi, 'Statistics based on ')
+        return
+
+    [ntokens, tokens] = fltokens(fline)
+    nsamp = tokens[3]
+    print('  Dakota samples = ' + str(int(nsamp)))
+
+    return nsamp
+    # }}}
+
+
+def moments_read(fidi, dresp, fline):  # {{{
+    #  function to find and read the moments
+
+    if fline is None or fline == '' or fline.isspace():
+        fline = findline(fidi, 'Moments for each response function')
+        return
+
+    print('Reading moments for response functions:')
+
+    while True:
+        fline = fidi.readline()
+        if fline == '' or fline.isspace():
+            break
+
+        [ntokens, tokens] = fltokens(fline)
+
+    #  add new response function and moments
+
+        dresp.append(struct())
+        dresp[-1].descriptor = tokens[0]
+        print('  ' + str(dresp[-1].descriptor))
+        dresp[-1].mean = tokens[3]
+        dresp[-1].stddev = tokens[6]
+        dresp[-1].coefvar = tokens[12]
+
+    print('  Number of Dakota response functions = ' + str(len(dresp)))
+
+    return dresp
+    # }}}
+
+
+def mbstats_read(fidi, dresp, fline):  # {{{
+    #  function to find and read the moment - based statistics
+
+    if fline is None or fline == '' or fline.isspace():
+        fline = findline(fidi, 'Moment-based statistics for each response function')
+        return
+
+    print('Reading moment-based statistics for response functions:')
+
+    #  skip column headings of moment - based statistics
+
+    fline = fidi.readline()
+
+    while True:
+        fline = fidi.readline()
+        if fline == '' or fline.isspace():
+            break
+
+        [ntokens, tokens] = fltokens(fline)
+
+    #  add new response function and moment - based statistics
+
+        dresp.append(struct())
+        dresp[-1].descriptor = tokens[0]
+        print('  ' + str(dresp[-1].descriptor))
+        dresp[-1].mean = tokens[1]
+        dresp[-1].stddev = tokens[2]
+        dresp[-1].skewness = tokens[3]
+        dresp[-1].kurtosis = tokens[4]
+
+    print('  Number of Dakota response functions = ' + str(len(dresp)))
+
+    return dresp
+    # }}}
+
+
+def cis_read(fidi, dresp, fline):  # {{{
+    #  function to find and read the confidence intervals
+
+    if fline is None or fline == '' or fline.isspace():
+        fline = findline(fidi, '95% confidence intervals for each response function')
+        return
+
+    print('Reading 95% confidence intervals for response functions:')
+
+    while True:
+        fline = fidi.readline()
+        if fline == '' or fline.isspace():
+            break
+
+        [ntokens, tokens] = fltokens(fline)
+        #  check for column headings in Dakota 5.2
+        if (ntokens == 4):
+            fline = fidi.readline()
+            if fline == '' or fline.isspace():
+                break
+
+            [ntokens, tokens] = fltokens(fline)
+
+        #  find response function associated with confidence intervals
+        idresp = -1
+        for i in range(len(dresp)):
+            if strcmpi(tokens[0], dresp[i].descriptor):
+                idresp = i
+                break
+
+        if idresp < 0:
+            idresp = len(dresp)
+            dresp.append(struct())
+            dresp[idresp].descriptor = tokens[0]
+            print('  ' + str(dresp[idresp].descriptor))
+
+        #  add confidence intervals to response functions
+        dresp[i].meanci = np.array([[np.nan], [np.nan]])
+        dresp[i].stddevci = np.array([[np.nan], [np.nan]])
+
+        if (ntokens == 14):
+            dresp[i].meanci[0, 0] = tokens[4]
+            dresp[i].meanci[1, 0] = tokens[5]
+            dresp[i].stddevci[0, 0] = tokens[11]
+            dresp[i].stddevci[1, 0] = tokens[12]
+        else:
+            dresp[i].meanci[0, 0] = tokens[1]
+            dresp[i].meanci[1, 0] = tokens[2]
+            dresp[i].stddevci[0, 0] = tokens[3]
+            dresp[i].stddevci[1, 0] = tokens[4]
+
+    print('  Number of Dakota response functions = ' + str(len(dresp)))
+
+    return dresp
+    # }}}
+
+
+def cdfs_read(fidi, dresp, fline):  # {{{
+    #  function to find and read the cdf's
+
+    if fline is None or fline == '' or fline.isspace():
+        fline = findline(fidi, 'Probabilities for each response function')
+        if fline is None:
+            fline = findline(fidi, 'Level mappings for each response function')
+            if fline is None:
+                return
+
+    print('Reading CDF''s for response functions:')
+
+    while fline == '' or fline.isspace():
+        fline = fidi.readline()
+        if fline == '' or fline.isspace():
+            break
+
+    #  process header line of cdf
+
+        while (fline != '' and not fline.isspace()):
+            [ntokens, tokens] = fltokens(fline)
+
+    #  find response function associated with cdf
+    # idresp is an index, so it can be 0, default to - 1
+            idresp = -1
+            for i in range(len(dresp)):
+                if strcmpi(tokens[5], dresp[i].descriptor):
+                    idresp = i
+                    break
+            if idresp < 0:
+                idresp = len(dresp)
+                dresp.append(struct())
+                dresp[idresp].descriptor = tokens[5]
+                print('  ' + str(dresp(idresp).descriptor))
+
+            #  skip column headings of cdf
+            fline = fidi.readline()
+            fline = fidi.readline()
+
+            #  read and add cdf table to response function
+            fline = fidi.readline()
+            icdf = 0
+            while (fline != '' and not fline.isspace()) and not strncmpi(fline, 'Cumulative Distribution Function', 32):
+                [ntokens, tokens] = fltokens(fline)
+                icdf = icdf + 1
+                dresp[idresp].cdf = np.zeros((icdf, 4))
+                dresp[idresp].cdf[icdf - 1, 0:4] = np.nan
+                #  in later versions of Dakota, uncalculated columns are now blank
+                itoken = 0
+                for i in range(len(fline) / 19):
+                    if not isempty(fline[(i - 1) * 19:i * 19]):
+                        itoken = itoken + 1
+                        dresp[idresp].cdf[icdf - 1, i] = tokens[itoken]
+
+                fline = fidi.readline()
+
+    print('  Number of Dakota response functions = ' + str(len(dresp)))
+
+    return dresp
+    # }}}
+
+
+def pdfs_read(fidi, dresp, fline):  # {{{
+    #  function to find and read the pdf's
+
+    if fline is None or fline == '' or fline.isspace():
+        fline = findline(fidi, 'Probability Density Function (PDF) histograms for each response function')
+        return
+
+    print('Reading PDF''s for response functions:')
+
+    while (fline != '' and not fline.isspace()):
+        fline = fidi.readline()
+        if fline == '' or fline.isspace():
+            break
+
+        #  process header line of pdf
+        while (fline != '' and not fline.isspace()):
+            [ntokens, tokens] = fltokens(fline)
+
+            #  find response function associated with pdf
+            # idresp is an index, so it can be 0, default to - 1
+            idresp = -1
+            for i in range(len(dresp)):
+                if strcmpi(tokens[2], dresp[i].descriptor):
+                    idresp = i
+                    break
+
+            if idresp < 0:
+                idresp = len(dresp)
+                dresp.append(struct)
+                dresp[idresp].descriptor = tokens[2]
+                print('  ' + str(dresp[idresp].descriptor))
+
+            #  skip column headings of pdf
+            fline = fidi.readline()
+            fline = fidi.readline()
+
+            #  read and add pdf table to response function
+            fline = fidi.readline()
+            ipdf = 0
+            while (fline != '' and not fline.isspace()) and not strncmpi(fline, 'PDF for', 7):
+                [ntokens, tokens] = fltokens(fline)
+                ipdf = ipdf + 1
+                dresp[idresp].pdf = np.zeros((ipdf, 4))
+                dresp[idresp].pdf[ipdf - 1, 0:3] = np.nan
+                for i in range(3):
+                    dresp[idresp].pdf[ipdf - 1, i] = tokens[i]
+
+                fline = fidi.readline()
+
+    print('  Number of Dakota response functions = ' + str(len(dresp)))
+
+    return dresp
+    # }}}
+
+
+def corrmat_read(fidi, cmstr, fline):  # {{{
+    #  function to find and read a correlation matrix
+
+    if fline is None or fline == '' or fline.isspace():
+        fline = findline(fidi, cmstr)
+        if fline == '' or fline.isspace():
+            cmat = struct()
+            return
+
+    print('Reading ' + fline)
+
+    cmat.title = fline
+
+    while (fline != '' and not fline.isspace()):
+        fline = fidi.readline()
+        if fline == '' or fline.isspace():
+            break
+
+        #  process column headings of matrix
+        [ntokens, tokens] = fltokens(fline)
+        cmat.column = np.empty((1, ntokens))
+        cmat.column.fill(0.0)
+        cmat.row = np.empty((1, 1))
+        cmat.row.fill(0.0)
+        cmat.matrix = np.zeros((1, ntokens))
+
+        for i in range(ntokens):
+            cmat.column[1, i] = str(tokens[i])
+
+        #  process rows of matrix, reading until blank line
+        nrow = 0
+        while True:
+            fline = fidi.readline()
+            if fline == '' or fline.isspace():
+                break
+
+            [ntokens, tokens] = fltokens(fline)
+
+            #  add row heading to matrix
+            nrow = nrow + 1
+            cmat.row[nrow - 1, 0] = str(tokens[0])
+
+            #  add row values to matrix
+            for i in range(1, ntokens):
+                cmat.matrix[nrow - 1, i - 1] = tokens[i]
+
+    return cmat
+    # }}}
+
+
+def mvstats_read(fidi, dresp, fline):  # {{{
+    #  function to find and read the MV statistics
+
+    if fline is None or fline == '' or fline.isspace():
+        fline = findline(fidi, 'MV Statistics for ')
+        if fline is None:
+            return
+
+    print('Reading MV statistics for response functions:')
+
+    ndresp = 0
+
+    while (fline != '' and not fline.isspace()) and strncmpi(fline, 'MV Statistics for ', 18):
+
+        #  add new response function and moments
+        [ntokens, tokens] = fltokens(fline)
+        dresp.append(struct())
+        dresp[-1].descriptor = tokens[3]
+        print('  ' + str(dresp[-1].descriptor))
+        fline = fidi.readline()
+        [ntokens, tokens] = fltokens(fline)
+        dresp[-1].mean = tokens[4]
+        fline = fidi.readline()
+        [ntokens, tokens] = fltokens(fline)
+        dresp[-1].stddev = tokens[6]
+
+        #  read and add importance factors to response function
+        idvar = 0
+        fline = fidi.readline()
+        if fline == '' or fline.isspace():
+            break
+
+        # shape: [[0], [0], [0]...]
+        dresp[-1].var = []
+        dresp[-1].impfac = []
+        dresp[-1].sens = []
+
+        while (fline != '' and not fline.isspace()) and strncmpi(fline, '  Importance Factor for variable ', 33):
+            [ntokens, tokens] = fltokens(fline)
+            idvar = idvar + 1
+            dresp[-1].var.append(str(tokens[4]))
+            dresp[-1].impfac.append(tokens[6])
+            if (ntokens >= 10):
+                dresp[-1].sens.append(tokens[9])
+            else:
+                dresp[-1].sens.append(np.nan)
+
+            fline = fidi.readline()
+
+        #  if importance factors missing, skip to cdf
+        if not idvar:
+            print('    Importance Factors not available')
+            dresp[-1].var = []
+            dresp[-1].impfac = []
+            dresp[-1].sens = []
+            while type(fline) == str and (fline != '' and not fline.isspace()) and not strncmpi(fline, 'Cumulative Distribution Function', 32) and not strncmpi(fline, 'MV Statistics for ', 18) and not strncmp(fline, ' - ', 1):
+                fline = fidi.readline()
+
+        #  process header line of cdf
+        icdf = 0
+
+        # If there is a warning it MAY involve a lot of spaces; skip over them
+        if fline == '' or fline.isspace():
+            fline = fidi.readline()
+            # Usually: "Warning: negligible standard deviation renders CDF results suspect."
+            if strncmpi(fline, 'Warn', 4):
+                fline = fidi.readline()
+                if fline == '' or fline.isspace():
+                    fline = fidi.readline()
+
+        while (fline != '' and not fline.isspace()) and strncmpi(fline, 'Cumulative Distribution Function', 32):
+            [ntokens, tokens] = fltokens(fline)
+
+            #  find response function associated with cdf
+            # idresp is an index, so it can be 0, default to - 1
+            idresp = -1
+            for i in range(len(dresp)):
+                if strcmpi(tokens[5], dresp[i].descriptor):
+                    idresp = i
+                    break
+
+            if idresp < 0:
+                idresp = len(dresp)
+                dresp.append(struct())
+                dresp[idresp].descriptor = tokens[5]
+                print('  ' + str(dresp[idresp].descriptor))
+
+            #  skip column headings of cdf
+            fline = fidi.readline()
+            fline = fidi.readline()
+
+            #  read and add cdf table to response function
+            fline = fidi.readline()
+            while (fline != '' and not fline.isspace()) and not strncmpi(fline, 'MV Statistics for ', 18) and not strncmp(fline, ' - ', 1):
+                [ntokens, tokens] = fltokens(fline)
+                icdf = icdf + 1
+                dresp[idresp].cdf = np.zeros((icdf, 4))
+                dresp[idresp].cdf[icdf - 1, 0] = tokens[0]
+                dresp[idresp].cdf[icdf - 1, 1] = tokens[1]
+                if (ntokens == 4):
+                    dresp[idresp].cdf[icdf - 1, 2] = tokens[2]
+                    dresp[idresp].cdf[icdf - 1, 3] = tokens[3]
+                else:
+                    dresp[idresp].cdf[icdf - 1, 2] = np.nan
+                    dresp[idresp].cdf[icdf - 1, 3] = np.nan
+
+                fline = fidi.readline()
+
+        #  if cdf missing, skip to end of response function
+        if not icdf:
+            print('    Cumulative Distribution Function not available')
+            dresp[ndresp].cdf = []
+            while (fline != '' and not fline.isspace()) and not strncmpi(fline, 'MV Statistics for ', 18) and not strncmp(fline, ' - ', 1):
+                fline = fidi.readline()
+
+    print('  Number of Dakota response functions = ' + str(len(dresp)))
+
+    return dresp
+    # }}}
+
+
+def best_read(fidi, dresp, fline):  # {{{
+    #  function to find and read the best evaluation
+
+    if fline is None or fline == '' or fline.isspace():
+        fline = findline(fidi, ' < < < < < Best ')
+        if fline is None:
+            return
+
+    if isempty(dresp):
+        dresp.append(struct())
+        dresp[-1].best = struct()
+
+    print('Reading values for best function evaluation:')
+
+    while (fline != '' and not fline.isspace()) and strncmpi(fline, ' < < < < < Best ', 11):
+        [ntokens, tokens] = fltokens(fline)
+
+    #  read and add best parameter(s)
+
+        if strncmpi(str(tokens[2]), 'parameter', 9):
+            print('  ' + fline)
+
+            fline = fidi.readline()
+            dresp.best.param = []
+            dresp.best.descriptor = ''
+
+            while (fline != '' and not fline.isspace()) and not strncmpi(fline, ' < < < < < Best ', 11):
+                [ntokens, tokens] = fltokens(fline)
+                dresp.best.param.append([0])
+                dresp.best.param[-1] = tokens[0]
+                dresp.best.descriptor = str(tokens[1])
+                fline = fidi.readline()
+
+        #  read and add best objective function(s)
+        elif strncmpi(str(tokens[2]), 'objective', 9) and strncmpi(str(tokens[3]), 'function', 8):
+            print('  ' + fline)
+
+            fline = fidi.readline()
+            dresp.best.of = []
+
+            while (fline != '' and not fline.isspace()) and not strncmpi(fline, ' < < < < < Best ', 11):
+                [ntokens, tokens] = fltokens(fline)
+                dresp.best.of.append(0)
+                dresp.best.of[-1] = tokens[0]
+                fline = fidi.readline()
+
+        #  read and add best residual norms
+        elif strncmpi(str(tokens[2]), 'residual', 8) and strncmpi(str(tokens[3]), 'norm', 4):
+            print('  ' + fline)
+            dresp.best.norm = tokens[5]
+            dresp.best.hnormsq = tokens[10]
+
+            fline = fidi.readline()
+
+            while (fline != '' and not fline.isspace()) and not strncmpi(fline, ' < < < < < Best ', 11):
+                fline = fidi.readline()
+
+        #  read and add best residual term(s)
+        elif strncmpi(str(tokens[2]), 'residual', 8) and strncmpi(str(tokens[3]), 'term', 4):
+            print('  ' + fline)
+
+            fline = fidi.readline()
+            dresp.best.res = []
+
+            while (fline != '' and not fline.isspace()) and not strncmpi(fline, '<<<<<Best ', 11):
+                [ntokens, tokens] = fltokens(fline)
+                dresp.best.res.append(0)
+                dresp.best.res[-1] = tokens[0]
+                fline = fidi.readline()
+
+        #  read and add best constraint value(s)
+        elif strncmpi(str(tokens[2]), 'constraint', 10) and strncmpi(str(tokens[3]), 'value', 5):
+            print('  ' + fline)
+
+            fline = fidi.readline()
+            dresp.best.nc = []
+
+            while (fline != '' and not fline.isspace()) and not strncmpi(fline, '<<<<<Best ', 11):
+                [ntokens, tokens] = fltokens(fline)
+                dresp.best.nc.append(0)
+                dresp.best.nc[-1] = tokens[0]
+                fline = fidi.readline()
+
+        #  read and add best data captured
+        elif strncmpi(str(tokens[2]), 'data', 4) and strncmpi(str(tokens[3]), 'captured', 8):
+            print('  ' + fline)
+            dresp.best.eval = tokens[7]
+
+            fline = fidi.readline()
+
+            while (fline != '' and not fline.isspace()) and not strncmpi(fline, ' < < < < < Best ', 11):
+                fline = fidi.readline()
+
+        #  read until next best or blank or end
+        else:
+            print('  ' + fline + '  (ignored)')
+
+            fline = fidi.readline()
+
+            while (fline != '' and not fline.isspace()) and not strncmpi(fline, ' < < < < < Best ', 11):
+                fline = fidi.readline()
+
+    return dresp
+    # }}}
+
+
+def vum_read(fidi, dresp, fline):  # {{{
+    #  function to find and read the volumetric uniformity measures
+
+    if fline is None or fline == '' or fline.isspace():
+        fline = findline(fidi, 'The following lists volumetric uniformity measures')
+        if fline is None:
+            return
+
+    if isempty(dresp):
+        dresp.append(struct())
+        dresp[-1].vum = []
+
+    print('Reading measures for volumetric uniformity')
+    fline = fidi.readline()
+    fline = fidi.readline()
+
+    while (fline != '' and not fline.isspace()):
+        [ntokens, tokens] = fltokens(fline)
+        check = tokens[0].lower()
+        if check == 'chi':
+            dresp.vum.chi = tokens[3]
+        elif check == 'd':
+            dresp.vum.d = tokens[3]
+        elif check == 'h':
+            dresp.vum.h = tokens[3]
+        elif check == 'tau':
+            dresp.vum.tau = tokens[3]
+
+        fline = fidi.readline()
+
+    return dresp
+    # }}}
+
+
+def itcomp_read(fidi, fline):  # {{{
+    #  function to find and read the iterator completion
+
+    if fline is None or fline == '' or fline.isspace():
+        while True:
+            fline = findline(fidi, '<<<<< Iterator ')
+            if fline is None:
+                return
+
+            if (len(fline) > 26) and not (' completed.' in fline[15:]):
+                break
+
+    [ntokens, tokens] = fltokens(fline)
+    method = tokens[2]
+    print('Dakota iterator \'' + str(method) + '\' completed')
+
+    return method
+    # }}}
+
+
+def findline(fidi, string, goto_line=False):  # {{{
+    #  function to find a file line starting with a specified string
+    #  by default, return to previous position, before search
+    #  if final argument is True, return such that fidi.readline() will read the line
+    #    immediately after the searched line (or the first line if the search failed)
+
+    ipos = fidi.tell()
+    npos = 0
+    for fline in fidi:
+        npos += len(fline)
+        if (strncmpi(fline, string, len(string))):
+            if goto_line:
+                fidi.seek(npos, 0)
+            else:
+                fidi.seek(ipos, 0)
+            return fline
+
+    #  issue warning and reset file position
+    print('Warning: findline:str_not_found: String ' + str(string) + ' not found in file')
+    fidi.seek(ipos, 0)
+    return None
+    # }}}
+
+
+def fltokens(fline):  # {{{
+    #  function to parse a file line into tokens
+    if fline is None:
+        ntokens = -1
+        tokens = []
+        return [None, None]
+
+    if fline == '' or fline.isspace():
+        ntokens = 0
+        tokens = []
+        return [None, None]
+
+    # split wherever ' ' (space) or ':' occur
+    strings = re.split(':| ', fline)
+    # remove blank strings
+    strings = [a for a in strings if (a != '' and not a.isspace())]
+
+    ntokens = 0
+    tokens = ['' for i in range(len(strings))]
+
+    # try to format substrings to float where possible and count tokens and ignore invalid values
+    for i in range(len(strings)):
+        if isempty(strings[i]):
+            continue
+
+        # if the string is a number, make it a float, otherwise leave it alone
+        try:
+            tokens[ntokens] = float(strings[i])
+        except ValueError:
+            tokens[ntokens] = strings[i]
+
+        ntokens = ntokens + 1
+
+    return [ntokens, tokens]
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_resp_uconv.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_resp_uconv.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/dakota_resp_uconv.m	(revision 27955)
@@ -0,0 +1,112 @@
+%
+%  convert the units for dakota responses.
+%
+%  [dresp]=dakota_resp_uconv(dresp)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%
+%  the required output is:
+%    dresp         (structure array, responses)
+%
+%  this function reads through a dakota response structure, and
+%  for those quantities whose descriptors are recognized, converts
+%  the units of all the applicable fields.  a "unit" field is added
+%  to the response structure.
+%
+%  this data would typically be read by dakota_out_parse and be used
+%  for plotting and other post-processing within matlab or excel.
+%
+%  "Copyright 2010, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function [dresp]=dakota_resp_uconv(dresp)
+
+if ~nargin
+    help dakota_resp_uconv
+    return
+end
+
+if ~isstruct(dresp)
+    error('''%s'' is not a structure array.',inputname(1));
+end
+if ~isfield(dresp,'descriptor')
+    error('''%s'' does not have a descriptor field.',inputname(1));
+end
+
+%%  define the conversion factors
+
+sec_per_yr=365.2425*24*60*60;    %  mean gregorian year
+m_per_km=1000;
+kg_per_gton=10^12;
+
+%%  loop through the response array
+
+for i=1:numel(dresp)
+    dresp(i).unit='';
+    if     ~isempty(strfind(dresp(i).descriptor,'vel'))    %  in m/sec
+        dresp(i)=drespi_conv(dresp(i),sec_per_yr,'m/yr');
+    elseif ~isempty(strfind(dresp(i).descriptor,'misfit'))    %  in m^2*(m/sec)^2
+        dresp(i)=drespi_conv(dresp(i),1/m_per_km^2*sec_per_yr^2,'km^2*(m/yr)^2');
+    elseif ~isempty(strfind(dresp(i).descriptor,'mass_flux'))    %  in kg/sec
+        dresp(i)=drespi_conv(dresp(i),1/kg_per_gton*sec_per_yr,'Gton/yr');
+    else
+        disp(['Skipping response ''' dresp(i).descriptor '''.']);
+    end
+end
+
+end
+
+%%  function to convert the units of a dakota response
+
+function [dresp]=drespi_conv(dresp,unew_per_uold,ulab)
+
+disp(['Converting response ''' dresp.descriptor ''' to ' ulab '.']);
+
+%  loop over the fields, converting only the appropriate ones
+
+fnames=fieldnames(dresp);
+for i=1:length(fnames)
+    switch fnames{i}
+        case {'sample',...
+              'mean',...
+              'stddev',...
+              'meanci',...
+              'stddevci',...
+              'min',...
+              'quart1',...
+              'median',...
+              'quart3',...
+              'max'}    %  appropriate to convert
+            dresp.(fnames{i})=dresp.(fnames{i})*unew_per_uold;
+        case {'cdf'}    %  only responses, not probs or reliabilities
+            dresp.cdf(:,1)=dresp.cdf(:,1)*unew_per_uold;
+        case {'descriptor',...
+              'coefvar',...
+              'var',...
+              'impfac'}    %  unitless (or non-numeric)
+            continue;
+        case {'best',...
+              'vum',...
+              'unit'}    %  other
+            continue;
+        otherwise
+            disp(['Unrecognized field ''' fnames{i} '''.']);
+    end
+end
+
+if isfield(dresp,'unit')
+    dresp.unit=ulab;
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/README
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/README	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/README	(revision 27955)
@@ -0,0 +1,3 @@
+Example parameter files to setup QMU (quantification of margins and uncertainties) using Dakota.
+
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/all_parameters.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/all_parameters.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/all_parameters.m	(revision 27955)
@@ -0,0 +1,91 @@
+%  set up some qmu studies, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.qmu.variables=struct();
+md.qmu.variables.nuv=normal_uncertain.empty();
+md.qmu.variables.nuv(end+1)=normal_uncertain('rho_ice',917,45.85);
+md.qmu.variables.nuv(end+1)=normal_uncertain('thickness',1,0.05);
+md.qmu.variables.nuv(end+1)=normal_uncertain('drag',1,0.05);
+md.qmu.variables.cdv=continuous_design.empty();
+md.qmu.variables.cdv(end+1)=continuous_design('thickness',1,0.9,1.1);
+md.qmu.variables.cdv(end+1)=continuous_design('drag',1,0.5,1.5);
+md.qmu.variables.csv=continuous_state.empty();
+md.qmu.variables.csv(end+1)=continuous_state('gravity',9.8);
+md.qmu.variables.lic=linear_inequality_constraint.empty();
+md.qmu.variables.lic(end+1)=linear_inequality_constraint([1 2 3],4,5);
+md.qmu.variables.lic(end+1)=linear_inequality_constraint([1 2],4,5);
+md.qmu.variables.lic(end+1)=linear_inequality_constraint([1 2 3 4],4,5);
+md.qmu.variables.lec=linear_equality_constraint.empty();
+md.qmu.variables.lec(end+1)=linear_equality_constraint([1 2 3],4);
+
+%%  a variety of responses
+
+md.qmu.responses=struct();
+md.qmu.responses.rf =response_function.empty();
+md.qmu.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vy',[100 200 300],[]);
+md.qmu.responses.rf (end+1)=response_function('max_vel'   ,[100 200 300],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.of =objective_function.empty();
+md.qmu.responses.of (end+1)=objective_function('max_vel');
+md.qmu.responses.lst=least_squares_term.empty();
+md.qmu.responses.lst(end+1)=least_squares_term('max_vel');
+md.qmu.responses.nic=nonlinear_inequality_constraint.empty();
+md.qmu.responses.nic(end+1)=nonlinear_inequality_constraint('max_abs_vx',0,1000);
+md.qmu.responses.nic(end+1)=nonlinear_inequality_constraint('max_abs_vy',0,1000);
+md.qmu.responses.nec=nonlinear_equality_constraint.empty();
+md.qmu.responses.nec(end+1)=nonlinear_equality_constraint('max_abs_vx',500);
+md.qmu.responses.nec(end+1)=nonlinear_equality_constraint('max_abs_vy',500);
+
+%%  a variety of studies
+
+%  a sampling study
+
+md.qmu.method       =dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+    'seed',1234,...
+    'samples',10);
+
+%  a local reliability study
+
+md.qmu.method(end+1)=dakota_method('nond_l');
+
+%  a multidimensional parameter study
+
+md.qmu.method(end+1)=dakota_method('multi');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+    'partitions',2);
+
+%  an optimization study
+
+md.qmu.method(end+1)=dakota_method('conmin_f');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+    'max_iterations',10,...
+    'max_function_evaluations',50,...
+    'convergence_tolerance',0.001);
+
+%%  a variety of parameters
+
+md.qmu.params.evaluation_concurrency=4;
+md.qmu.params.analysis_driver='';
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.fd_gradient_step_size=0.001;
+
+md.qmu.numberofpartitions=10;
+md.rifts.numrifts=5;
+
+md.qmu
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/dakota_rosenbrock_2d.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/dakota_rosenbrock_2d.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/dakota_rosenbrock_2d.m	(revision 27955)
@@ -0,0 +1,60 @@
+%
+%  multi-dimensional parameter study for rosenbrock case
+%  (see Users4.2.pdf, Sec. 2.4.1)
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+
+function [dout,ddat]=dakota_rosenbrock_2d()
+
+%  define dakota variables as continuous design
+%  (may use set 1 or set 2 of variables, but not both)
+dvar(1).cdv(1)=continuous_design('x1',0,-2,2);
+dvar(1).cdv(2)=continuous_design('x2',0,-2,2);
+dvar(2).x1=continuous_design('',0,-2,2);
+dvar(2).x2=continuous_design('',0,-2,2);
+
+%  define dakota response as objective function
+%  (may use set 1 or set 2 of responses, but not both)
+dresp(1).of=objective_function('f');
+dresp(2).f=objective_function('');
+
+%  define dakota method and specify method-dependent parameters
+dmeth=dakota_method('multidim');
+dmeth=dmeth_params_set(dmeth,'partitions',[8 8]);
+
+%  specify method-independent parameters
+%  (dakota_in_params does not need to be called, but provides a template)
+dparams=dakota_in_params([]);
+dparams.direct=true;
+dparams.analysis_driver='rosenbrock';
+dparams.tabular_graphics_data=true;
+dparams.tabular_graphics_file='dakota_rosenbrock_2d.dat';
+
+%  write out dakota input file
+dakota_in_write(dmeth,dvar(2),dresp(2),dparams,'dakota_rosenbrock_2d.in')
+
+%  execute dakota
+!dakota -i dakota_rosenbrock_2d.in -o dakota_rosenbrock_2d.out
+
+%  read dakota output and tabular data files
+%  (output file for parameter studies has no interesting info)
+[method,dout]=dakota_out_parse('dakota_rosenbrock_2d.out');
+[~     ,ddat]=dakota_out_parse('dakota_rosenbrock_2d.dat');
+
+%  perform any desired plotting
+plot_rvsv_surf(ddat,{'x1','x2'},ddat,{'f'})
+
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/dakota_rosenbrock_ls.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/dakota_rosenbrock_ls.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/dakota_rosenbrock_ls.m	(revision 27955)
@@ -0,0 +1,58 @@
+%
+%  least squares study for rosenbrock case
+%  (see Users4.2.pdf, Sec. 2.4.1)
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+
+function [dout,ddat]=dakota_rosenbrock_ls()
+
+%  define dakota variables as continuous design
+dvar.x1=continuous_design('',-1.2,-2,2);
+dvar.x2=continuous_design('', 1.0,-2,2);
+
+%  define dakota response as least-squares terms
+dresp.f1sq=least_squares_term('');
+dresp.f2sq=least_squares_term('');
+
+%  define dakota method and specify method-dependent parameters
+dmeth=dakota_method('nl2sol');
+dmeth=dmeth_params_set(dmeth,'max_iterations',100,...
+                             'convergence_tolerance',1.e-4);
+
+%  specify method-independent parameters
+%  (dakota_in_params does not need to be called, but provides a template)
+dparams=dakota_in_params([]);
+dparams.direct=true;
+dparams.analysis_driver='rosenbrock';
+dparams.tabular_graphics_data=true;
+dparams.tabular_graphics_file='dakota_rosenbrock_ls.dat';
+dparams.analytic_gradients=true;
+
+%  write out dakota input file
+dakota_in_write(dmeth,dvar,dresp,dparams,'dakota_rosenbrock_ls.in')
+
+%  execute dakota
+!dakota -i dakota_rosenbrock_ls.in -o dakota_rosenbrock_ls.out
+
+%  read dakota output and tabular data files
+%  (output file for parameter studies has no interesting info)
+[method,dout]=dakota_out_parse('dakota_rosenbrock_ls.out');
+[~     ,ddat]=dakota_out_parse('dakota_rosenbrock_ls.dat');
+
+%  perform any desired plotting
+% plot_rvsv_surf(ddat,{'x1','x2'},ddat,{'f'})
+
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/dakota_rosenbrock_nond.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/dakota_rosenbrock_nond.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/dakota_rosenbrock_nond.m	(revision 27955)
@@ -0,0 +1,70 @@
+%
+%  monte carlo sampling for rosenbrock case
+%  (see Users4.2.pdf, Sec. 2.4.9)
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+
+function [dout,ddat,scm,pcm,srcm,prcm]=dakota_rosenbrock_nond()
+
+%  define dakota variables as uniform uncertain
+%  (may use set 1 or set 2 of variables, but not both)
+dvar(1).uuv(1)=uniform_uncertain('x1',-2,2);
+dvar(1).uuv(2)=uniform_uncertain('x2',-2,2);
+dvar(2).x1=uniform_uncertain('',-2,2);
+dvar(2).x2=uniform_uncertain('',-2,2);
+
+%  define dakota response as response function
+%  (may use set 1 or set 2 of responses, but not both)
+dresp(1).rf=response_function('f',[100]);
+dresp(2).f=response_function('',[100]);
+
+%  define dakota method and specify method-dependent parameters
+dmeth=dakota_method('nond_samp');
+dmeth=dmeth_params_set(dmeth,'samples',200,...
+                             'seed',17,...
+                             'sample_type','random');
+
+%  specify method-independent parameters
+%  (dakota_in_params does not need to be called, but provides a template)
+dparams=dakota_in_params([]);
+dparams.direct=true;
+dparams.analysis_driver='rosenbrock';
+dparams.tabular_graphics_data=true;
+dparams.tabular_graphics_file='dakota_rosenbrock_nond.dat';
+
+%  write out dakota input file
+dakota_in_write(dmeth,dvar(2),dresp(2),dparams,'dakota_rosenbrock_nond.in')
+
+%  execute dakota
+!dakota -i dakota_rosenbrock_nond.in -o dakota_rosenbrock_nond.out
+
+%  read dakota output and tabular data files
+[method,dout,scm,pcm,srcm,prcm]=dakota_out_parse('dakota_rosenbrock_nond.out');
+[~     ,ddat                  ]=dakota_out_parse('dakota_rosenbrock_nond.dat');
+
+%  perform any desired plotting
+plot_boxplot(ddat,{'f'})
+plot_normplot(ddat,{'f'})
+plot_sampdist_bars(ddat,{'f'})
+plot_normdist_bars(ddat,{'f'})
+plot_hist_norm(ddat,{'f'})
+plot_hist_norm(ddat,{'f'},'hmin',0,'hmax',200)
+plot_hist_norm_ci(ddat,{'f'})
+plot_hist_norm_ci(ddat,{'f'},'ciplt','line','cdfplt','off','ymin1',0,'ymax1',0.15)
+plot_prob_bars(dout,{'f'})
+plot_rlev_bars_ci(ddat,{'f'},'xtlrot',90)
+
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/dakota_rosenbrock_vector.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/dakota_rosenbrock_vector.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/dakota_rosenbrock_vector.m	(revision 27955)
@@ -0,0 +1,64 @@
+%
+%  vector parameter study for rosenbrock case
+%  (see Users4.2.pdf, Sec. 2.4.2)
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+
+function [dout,ddat]=dakota_rosenbrock_vector()
+
+%  define dakota variables as continuous design
+%  (may use set 1 or set 2 of variables, but not both)
+dvar(1).cdv(1)=continuous_design('x1',-0.3);
+dvar(1).cdv(2)=continuous_design('x2', 0.2);
+dvar(2).x1=continuous_design('',-0.3);
+dvar(2).x2=continuous_design('', 0.2);
+
+%  define dakota response as objective function
+%  (may use set 1 or set 2 of responses, but not both)
+dresp(1).of=objective_function('f');
+dresp(2).f=objective_function('');
+
+%  define dakota method and specify method-dependent parameters
+dmeth=dakota_method('vector');
+%  (ref. manual says step_length is required, but user's doesn't)
+dmeth=dmeth_params_set(dmeth,'final_point',[1.1 1.3],...
+                             'num_steps',10);
+
+%  specify method-independent parameters
+%  (dakota_in_params does not need to be called, but provides a template)
+dparams=dakota_in_params([]);
+dparams.direct=true;
+dparams.analysis_driver='rosenbrock';
+dparams.tabular_graphics_data=true;
+dparams.tabular_graphics_file='dakota_rosenbrock_vector.dat';
+
+%  write out dakota input file
+dakota_in_write(dmeth,dvar(2),dresp(2),dparams,'dakota_rosenbrock_vector.in')
+
+%  execute dakota
+!dakota -i dakota_rosenbrock_vector.in -o dakota_rosenbrock_vector.out
+
+%  read dakota output and tabular data files
+%  (output file for parameter studies has no interesting info)
+[method,dout]=dakota_out_parse('dakota_rosenbrock_vector.out');
+[~     ,ddat]=dakota_out_parse('dakota_rosenbrock_vector.dat');
+clear dum
+
+%  perform any desired plotting
+plot_rvsv_line(ddat,{'x1','x2'},ddat,{'f'})
+plot_rvsv_line(ddat,{'x1','x2'},ddat,{'f'},'nplotr',1,'nplotc',2)
+
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/direct.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/direct.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/direct.m	(revision 27955)
@@ -0,0 +1,9 @@
+%using library mode of Dakota, only for parallel runs.
+md.qmu.params.direct=true;
+md.qmu.params.analysis_driver='stressbalance';
+md.qmu.params.evaluation_concurrency=1;
+
+%or for matlab direct driver
+md.qmu.params.direct=true;
+md.qmu.params.analysis_driver='matlab';
+md.qmu.params.evaluation_concurrency=2; %launch 2 matlabs
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/lrel.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/lrel.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/lrel.m	(revision 27955)
@@ -0,0 +1,55 @@
+%  set up a local reliability study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.qmu.variables=struct();
+md.qmu.variables.nuv=normal_uncertain.empty();
+md.qmu.variables.nuv(end+1)=normal_uncertain('RhoIce',917,45.85);
+md.qmu.variables.nuv(end+1)=normal_uncertain('RhoWater',1023,51.15);
+md.qmu.variables.nuv(end+1)=normal_uncertain('HeatCapacity',2009,100.45);
+md.qmu.variables.nuv(end+1)=normal_uncertain('ThermalConductivity',2.2,0.11);
+md.qmu.variables.nuv(end+1)=normal_uncertain('Gravity',9.8,0.49);
+md.qmu.variables.nuv(end+1)=normal_uncertain('Thickness',1,0.05);
+md.qmu.variables.nuv(end+1)=normal_uncertain('Drag',1,0.05);
+
+%%  a variety of responses
+
+md.qmu.responses=struct();
+md.qmu.responses.rf =response_function.empty();
+md.qmu.responses.rf (end+1)=response_function('min_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('min_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('min_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%%  nond_local_reliability study
+
+md.qmu.method     =dakota_method('nond_l');
+
+%%  a variety of parameters
+
+md.qmu.params.evaluation_concurrency=1;
+md.qmu.params.analysis_driver='';
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.fd_gradient_step_size=0.01;
+
+md.qmu.numberofpartitions=10;
+
+md.qmu
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/lrel_mmf.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/lrel_mmf.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/lrel_mmf.m	(revision 27955)
@@ -0,0 +1,94 @@
+%  set up a local reliability study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.qmu.variables=struct();
+md.qmu.variables.nuv=normal_uncertain.empty();
+%md.qmu.variables.nuv(end+1)=normal_uncertain('RhoIce',917,45.85);
+%md.qmu.variables.nuv(end+1)=normal_uncertain('RhoWater',1023,51.15);
+%md.qmu.variables.nuv(end+1)=normal_uncertain('HeatCapacity',2009,100.45);
+%md.qmu.variables.nuv(end+1)=normal_uncertain('ThermalConductivity',2.2,0.11);
+%md.qmu.variables.nuv(end+1)=normal_uncertain('Gravity',9.8,0.49);
+md.qmu.variables.nuv(end+1)=normal_uncertain('Thickness',1,0.05);
+%md.qmu.variables.nuv(end+1)=normal_uncertain('Drag',1,0.05);
+
+%%  a variety of responses
+
+md.qmu.responses=struct();
+md.qmu.responses.rf =response_function.empty();
+md.qmu.responses.rf (end+1)=response_function('min_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('min_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('min_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('mass_flux1',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('mass_flux_2',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('mass_flux(3)',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('mass_flux4 (repeat)',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('mass_flux-5',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('mass_flux^6',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('mass_flux[7]',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%%  create mass flux profile
+
+%plotmodel(md,'data','mesh')
+%expcreateprofile('mass_flux.exp')
+%expdisp('mass_flux.exp')
+%md.qmu.mass_flux_profile='mass_flux.exp';
+%md.qmu.mass_flux_profile={'mass_flux.exp','mass_flux2.exp','mass_flux3.exp'};
+md.qmu.mass_flux_profile={'mass_flux.exp','mass_flux2.exp','mass_flux3.exp','mass_flux.exp','mass_flux5.exp','mass_flux6.exp','mass_flux7.exp'};
+
+%%  nond_local_reliability study
+
+md.qmu.method     =dakota_method('nond_l');
+
+%%  a variety of parameters
+
+%md.qmu.params.evaluation_concurrency=4;
+md.qmu.params.evaluation_concurrency=1;
+md.qmu.params.analysis_driver='';
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.fd_gradient_step_size=0.01;
+
+md.qmu.isdakota=1;
+md.qmu.numberofpartitions=10;
+if isempty(md.qmu.adjacency)
+	md=adjacency(md);
+end
+if isempty(md.qmu.partition)
+%    md.qmu.partition=partitioner(md,'package','metis','npart',md.qmu.numberofpartitions);
+    md.qmu.partition=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');
+% SpawnCore.m assumes partition vector starting at zero
+    md.qmu.partition=md.qmu.partition-1;
+end
+md.eps_rel=1.e-5;
+md.cluster=none;
+
+md.qmu
+
+%%  sample analysis
+
+%md=solve(md,'analysis_type','stressbalance');
+
+%plotmodel(md,'data','mesh')
+%plotmodel(md,'data',md.qmu.partition)
+%plotmodel(md,'data','mesh','partitionedges','on','linewidth',2)
+%part_hist(md.qmu.partition,md.vertex_weight)
+%plotmodel(md,'data',log10(md.results.dakota.dresp_out(9).impfac(md.qmu.partition+1)))
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/lsq.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/lsq.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/lsq.m	(revision 27955)
@@ -0,0 +1,50 @@
+%  set up a least-squares study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.qmu.variables=struct();
+md.qmu.variables.cdv=continuous_design.empty();
+md.qmu.variables.cdv(end+1)=continuous_design('thickness',1,0.9,1.1);
+md.qmu.variables.cdv(end+1)=continuous_design('drag',1,0.5,1.5);
+md.qmu.variables.csv=continuous_state.empty();
+md.qmu.variables.csv(end+1)=continuous_state('gravity',9.8);
+
+%%  a variety of responses
+
+md.qmu.responses=struct();
+md.qmu.responses.lst=least_squares_term.empty();
+md.qmu.responses.lst(end+1)=least_squares_term('max_vx');
+md.qmu.responses.lst(end+1)=least_squares_term('max_vy');
+
+%%  a least-squares study
+
+md.qmu.method     =dakota_method('nl2sol');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+    'max_iterations',10,...
+    'max_function_evaluations',50,...
+    'convergence_tolerance',0.01);
+
+%%  a variety of parameters
+
+md.qmu.params.evaluation_concurrency=4;
+md.qmu.params.analysis_driver='';
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.fd_gradient_step_size=0.01;
+
+md.qmu.numberofpartitions=10;
+
+md.qmu
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/opt.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/opt.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/opt.m	(revision 27955)
@@ -0,0 +1,49 @@
+%  set up an optimization study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.qmu.variables=struct();
+md.qmu.variables.cdv=continuous_design.empty();
+md.qmu.variables.cdv(end+1)=continuous_design('thickness',1,0.9,1.1);
+md.qmu.variables.cdv(end+1)=continuous_design('drag',1,0.5,1.5);
+md.qmu.variables.csv=continuous_state.empty();
+md.qmu.variables.csv(end+1)=continuous_state('gravity',9.8);
+
+%%  a variety of responses
+
+md.qmu.responses=struct();
+md.qmu.responses.of =objective_function.empty();
+md.qmu.responses.of (end+1)=objective_function('max_vel');
+
+%%  an optimization study
+
+md.qmu.method     =dakota_method('conmin_f');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+    'max_iterations',10,...
+    'max_function_evaluations',50,...
+    'convergence_tolerance',0.01);
+
+%%  a variety of parameters
+
+md.qmu.params.evaluation_concurrency=4;
+md.qmu.params.analysis_driver='';
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.fd_gradient_step_size=0.01;
+
+md.qmu.numberofpartitions=10;
+
+md.qmu
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/paramc.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/paramc.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/paramc.m	(revision 27955)
@@ -0,0 +1,53 @@
+%  set up a centered parameter study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.qmu.variables=struct();
+md.qmu.variables.nuv=normal_uncertain.empty();
+md.qmu.variables.nuv(end+1)=normal_uncertain('rho_ice',917,45.85);
+md.qmu.variables.nuv(end+1)=normal_uncertain('rho_water',1023,51.15);
+md.qmu.variables.nuv(end+1)=normal_uncertain('heatcapacity',2009,100.45);
+md.qmu.variables.nuv(end+1)=normal_uncertain('thermalconductivity',2.2,0.11);
+md.qmu.variables.cdv=continuous_design.empty();
+md.qmu.variables.cdv(end+1)=continuous_design('thickness',1,0.9,1.1);
+md.qmu.variables.cdv(end+1)=continuous_design('drag',1,0.5,1.5);
+md.qmu.variables.csv=continuous_state.empty();
+md.qmu.variables.csv(end+1)=continuous_state('gravity',9.8);
+
+%%  a variety of responses
+
+md.qmu.responses=struct();
+md.qmu.responses.rf =response_function.empty();
+md.qmu.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vel'   ,[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%%  a parameter study
+
+md.qmu.method     =dakota_method('centered');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+    'percent_delta',10.,...
+    'deltas_per_variable',1);
+
+%%  a variety of parameters
+
+md.qmu.params.evaluation_concurrency=4;
+md.qmu.params.analysis_driver='';
+md.qmu.params.analysis_components='';
+
+md.qmu.numberofpartitions=10;
+
+md.qmu
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/paramm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/paramm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/paramm.m	(revision 27955)
@@ -0,0 +1,45 @@
+%  set up a multidim parameter study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.qmu.variables=struct();
+md.qmu.variables.nuv=normal_uncertain.empty();
+md.qmu.variables.nuv(end+1)=normal_uncertain('rho_ice',917,45.85,900,1000);
+md.qmu.variables.nuv(end+1)=normal_uncertain('rho_water',1023,51.15,1000,1100);
+
+%%  a variety of responses
+
+md.qmu.responses=struct();
+md.qmu.responses.rf =response_function.empty();
+md.qmu.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vel'   ,[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%%  a parameter study
+
+md.qmu.method     =dakota_method('multidim');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+    'partitions',[4 4]);
+
+%%  a variety of parameters
+
+md.qmu.params.evaluation_concurrency=4;
+md.qmu.params.analysis_driver='';
+md.qmu.params.analysis_components='';
+
+md.qmu.numberofpartitions=10;
+
+md.qmu
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/samp.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/samp.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/samp.m	(revision 27955)
@@ -0,0 +1,57 @@
+%  set up a sampling study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.qmu.variables=struct();
+md.qmu.variables.nuv=normal_uncertain.empty();
+md.qmu.variables.nuv(end+1)=normal_uncertain('rho_ice',917,45.85);
+md.qmu.variables.nuv(end+1)=normal_uncertain('rho_water',1023,51.15);
+md.qmu.variables.nuv(end+1)=normal_uncertain('heatcapacity',2009,100.45);
+md.qmu.variables.nuv(end+1)=normal_uncertain('thermalconductivity',2.2,0.11);
+md.qmu.variables.nuv(end+1)=normal_uncertain('gravity',9.8,0.49);
+md.qmu.variables.nuv(end+1)=normal_uncertain('thickness',1,0.05);
+md.qmu.variables.nuv(end+1)=normal_uncertain('drag',1,0.05);
+
+%%  a variety of responses
+
+md.qmu.responses=struct();
+md.qmu.responses.rf =response_function.empty();
+md.qmu.responses.rf (end+1)=response_function('min_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('min_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('min_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%%  nond_sampling study
+
+md.qmu.method     =dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+    'seed',1234,...
+    'samples',20,...
+    'sample_type','lhs');
+
+%%  a variety of parameters
+
+md.qmu.params.evaluation_concurrency=4;
+md.qmu.params.analysis_driver='';
+md.qmu.params.analysis_components='';
+
+md.qmu.numberofpartitions=10;
+
+md.qmu
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/samp_direct.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/samp_direct.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/examples/samp_direct.m	(revision 27955)
@@ -0,0 +1,57 @@
+%  set up a sampling study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.qmu.variables=struct();
+md.qmu.variables.nuv=normal_uncertain.empty();
+md.qmu.variables.nuv(end+1)=normal_uncertain('rho_ice',917,45.85);
+md.qmu.variables.nuv(end+1)=normal_uncertain('rho_water',1023,51.15);
+md.qmu.variables.nuv(end+1)=normal_uncertain('heatcapacity',2009,100.45);
+md.qmu.variables.nuv(end+1)=normal_uncertain('thermalconductivity',2.2,0.11);
+md.qmu.variables.nuv(end+1)=normal_uncertain('gravity',9.8,0.49);
+md.qmu.variables.nuv(end+1)=normal_uncertain('thickness',1,0.05);
+md.qmu.variables.nuv(end+1)=normal_uncertain('drag',1,0.05);
+
+%%  a variety of responses
+
+md.qmu.responses=struct();
+md.qmu.responses.rf =response_function.empty();
+md.qmu.responses.rf (end+1)=response_function('min_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('min_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_abs_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('min_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.qmu.responses.rf (end+1)=response_function('max_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%%  nond_sampling study
+
+md.qmu.method     =dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+    'seed',1234,...
+    'samples',20,...
+    'sample_type','lhs');
+
+%%  a variety of parameters
+
+md.qmu.params.direct=true;
+md.qmu.params.analysis_driver='stressbalance';
+md.qmu.params.evaluation_concurrency=1;
+
+md.qmu.numberofpartitions=10;
+
+md.qmu
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/expandresponses.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/expandresponses.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/expandresponses.m	(revision 27955)
@@ -0,0 +1,14 @@
+function dresp=expandresponses(md,responses)
+%EXPANDRESPONSES - expand responses
+
+fnames=fieldnames(responses);
+
+for i=1:length(fnames)
+
+	fhandle=str2func([class(responses.(fnames{i})) '.empty']);
+	dresp.(fnames{i})=fhandle();
+	for j=1:length(responses.(fnames{i}))
+		%call setupdesign
+		dresp.(fnames{i})=QmuSetupResponses(md,dresp.(fnames{i}),responses.(fnames{i})(j));
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/expandresponses.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/expandresponses.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/expandresponses.py	(revision 27955)
@@ -0,0 +1,19 @@
+from helpers import *
+from QmuSetupResponses import *
+
+
+def expandresponses(md, responses):
+    
+    fnames = fieldnames(responses)
+
+    # maintain order attributes were added
+    dresp = OrderedStruct()
+
+    for key in fnames:
+        value = getattr(responses, key)
+        exec('dresp.{} = type(value)()'.format(key))
+        for j in range(len(value)):
+            #call setupdesign
+            exec('dresp.{}=QmuSetupResponses(md, dresp.{}, value[j])'.format(key, key))
+
+    return dresp
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/expandvariables.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/expandvariables.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/expandvariables.m	(revision 27955)
@@ -0,0 +1,20 @@
+function dvar=expandvariables(md,variables)
+
+fnames=fieldnames(variables);
+
+for i=1:length(fnames)
+
+    if isa(variables.(fnames{i}),'linear_inequality_constraint') || isa(variables.(fnames{i}),'linear_equality_constraint'  )
+		%for linear constraints, just copy
+        dvar.(fnames{i})=variables.(fnames{i});
+
+    else
+		%for variables, call the setup function
+        fhandle=str2func([class(variables.(fnames{i})) '.empty']);
+        dvar.(fnames{i})=fhandle();
+        for j=1:length(variables.(fnames{i}))
+            %call setupdesign
+            dvar.(fnames{i})=QmuSetupVariables(md,dvar.(fnames{i}),variables.(fnames{i})(j));
+        end
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/expandvariables.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/expandvariables.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/expandvariables.py	(revision 27955)
@@ -0,0 +1,26 @@
+from helpers import *
+from qmu_classes import *
+from QmuSetupVariables import *
+
+
+def expandvariables(md, variables):
+
+    fnames = fieldnames(variables)
+
+    # maintain order attributes were added
+    dvar = OrderedStruct()
+
+    for key in fnames:
+        value = getattr(variables, key)
+
+    #  for linear constraints, just copy
+        if isinstance(value, linear_inequality_constraint) or isinstance(value, linear_equality_constraint):
+            exec('dvar.{} = value'.format(key))
+
+    #  for variables, call the setup function
+        else:
+            exec('dvar.{} = type(value)()'.format(key))
+            for j in range(len(value)):
+                #call setupdesign
+                exec('dvar.{}=QmuSetupVariables(md, value[j])'.format(key, key))
+    return dvar
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/gaussian_pdf.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/gaussian_pdf.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/gaussian_pdf.m	(revision 27955)
@@ -0,0 +1,3 @@
+function pdf=gaussian_pdf(x,average,sigma)
+
+pdf=1/(sqrt(2*pi*sigma^2))*exp(-(x-average).^2/(2*sigma^2));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/helpers.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/helpers.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/helpers.py	(revision 27955)
@@ -0,0 +1,389 @@
+from collections import OrderedDict
+from copy import deepcopy
+
+import numpy as np
+
+
+class struct(object):
+    """struct class definition - An empty struct that can be assigned arbitrary 
+    attributes
+    """
+    def __init__(self):  # {{{
+        pass
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = ''
+        for key, value in self.__dict__.items():
+            s += '    {}: '.format(key)
+            if isinstance(value, list):
+                s += '[{} element list]'.format(len(value))
+            elif isinstance(value, np.ndarray):
+                if len(value.shape) == 1:
+                    s += '[{} element numpy.ndarray]'.format(value.shape[0])
+                else:
+                    s += '[{}x{} numpy.ndarray]'.format(value.shape[0], value.shape[1])
+            else:
+                s += '{}'.format(value)
+            s += '\n'
+        return s
+    # }}}
+
+    def __len__(self):  # {{{
+        return len(self.__dict__.keys())
+    # }}}
+
+
+class Lstruct(list):
+    """An empty struct that can be assigned arbitrary attributes but can also 
+    be accessed as a list. Eg. x.y = 'hello', x[:] = ['w', 'o', 'r', 'l', 'd']
+
+    Note that 'x' returns the array and x.__dict__ will only return attributes
+    other than the array
+
+    List-based and struct-based behaviors work normally, however they are
+    referenced as if the other does not exist; len(x) corresponds only to the
+    list component of x, len(x.a) corresponds to x.a, x.__dict__ corresponds
+    only to the non-x-list attributes
+
+    Examples:
+        x = Lstruct(1, 2, 3, 4) -> [1, 2, 3, 4]
+        x.a = 'hello'
+        len(x) -> 4
+        x.append(5)
+        len(x) -> 5
+        x[2] -> 3
+        x.a -> 'hello'
+        print x -> [1, 2, 3, 4, 5]
+        x.__dict__ -> {'a':'hello'}
+        x.b = [6, 7, 8, 9]
+        x.b[-1] -> 9
+        len(x.b) -> 4
+
+    Other valid constructors:
+        x = Lstruct(1, 2, 3, a = 'hello') -> x.a -> 'hello', x -> [1, 2, 3]
+        x = Lstruct(1, 2, 3)(a = 'hello')
+        x = Lstruct([1, 2, 3], x = 'hello')
+        x = Lstruct((1, 2, 3), a = 'hello')
+
+    Sources:
+    -https://github.com/Vectorized/Python-Attribute-List
+    """
+
+    def __new__(self, *args, **kwargs):
+        return super(Lstruct, self).__new__(self, args, kwargs)
+
+    def __init__(self, *args, **kwargs):
+        if len(args) == 1 and hasattr(args[0], '__iter__'):
+            list.__init__(self, args[0])
+        else:
+            list.__init__(self, args)
+        self.__dict__.update(kwargs)
+
+    def __call__(self, **kwargs):
+        self.__dict__.update(kwargs)
+        return self
+
+
+class OrderedStruct(object):
+    """A form of dictionary-like structure that maintains the ordering in which 
+    its fields/attributes and their corresponding values were added.
+
+    OrderedDict is a similar device, however this class can be used as an
+    "ordered struct/class" giving it much more flexibility in practice. It is
+    also easier to work with fixed valued keys in-code.
+
+    Example:
+        OrderedDict: # A bit clumsy to use and look at
+            x['y'] = 5
+
+        OrderedStruct: # Nicer to look at, and works the same way
+            x.y = 5
+            OR
+            x['y'] = 5 # Supports OrderedDict-style usage
+
+    Supports: len(x), str(x), for-loop iteration.
+    Has methods: x.keys(), x.values(), x.items(), x.iterkeys()
+
+    Usage:
+        x = OrderedStruct()
+        x.y = 5
+        x.z = 6
+        OR
+        x = OrderedStruct('y', 5, 'z', 6)
+
+    Note below that the output fields as iterables are always in the same
+    order as the inputs
+
+        x.keys() -> ['y', 'z']
+        x.values() -> [5, 6]
+        x.items() -> [('y', 6), ('z', 6)]
+        x.__dict__ -> [('y', 6), ('z', 6)]
+        vars(x) -> [('y', 6), ('z', 6)]
+
+        x.y -> 5
+        x['y'] -> 5
+        x.z -> 6
+        x['z'] -> 6
+
+        for i in x:  # same as x.items()
+            print i
+        ->
+        ('x', 5)
+        ('y', 6)
+
+    Note: to access internal fields use dir(x) (input fields will be included,
+    but are not technically internals)
+    """
+
+    def __init__(self, *args):
+        """
+        Provided either nothing or a series of strings, construct a structure
+        that will, when accessed as a list, return its fields in the same order
+        in which they were provided
+        """
+
+        # keys and values
+        self._k = []
+        self._v = []
+
+        if len(args) == 0:
+            return
+
+        if len(args) % 2 != 0:
+            raise RuntimeError('OrderedStruct input error: OrderedStruct(*args) call must have an even number of inputs, in key/value pairs')
+
+        for a, b in zip(args[0::2], args[1::2]):
+            exec(('self.%s = b') % (a))
+        return
+
+    def __repr__(self):
+        s = 'OrderedStruct:\n\t'
+        for a, b in zip(self._k, self._v):
+            s += str(a) + ' : ' + str(b) + '\n\t'
+        return s
+
+    def __len__(self):
+        return len(self._k)
+
+    def __getattr__(self, attr):
+        # called when __getattribute__ fails
+        try:
+            # check if in keys, then access
+            _k = object.__getattribute__(self, '_k')
+            _v = object.__getattribute__(self, '_v')
+            pos = _k.index(attr)
+            return _v[pos]
+        except ValueError:
+            # Not in keys, not a valid attribute, raise error
+            raise AttributeError('Attribute "' + str(attr) + '" does not exist.')
+
+    def __getattribute__(self, attr):
+        # Re-route calls to vars(x) and x.__dict__
+        if attr == '__dict__':
+            return OrderedDict(list(self.items()))
+        else:
+            return object.__getattribute__(self, attr)
+
+    def __getitem__(self, key):
+        return self._v[self._k.index(key)]
+
+    def __setattr__(self, name, value):
+        #super(OrderedStruct, self).__setattr__(name, value)
+        if name in ['_k', '_v']:
+            object.__setattr__(self, name, value)
+        elif name not in self._k:
+            self._k.append(name)
+            self._v.append(value)
+        else:
+            self._v[self._k.index(name)] = value
+
+    def __delattr__(self, key):
+        if key not in self._k:
+            raise AttributeError('Attribute "' + str(attr) + '" does not exist or is an internal field and therefore cannot be deleted safely.')
+        self.pop(key)
+
+    def __iter__(self):
+        for a, b in zip(self._k, self._v):
+            yield(a, b)
+
+    def __copy__(self):
+        """shallow copy, hard copies of trivial attributes, references to 
+        structures like lists/OrderedDicts unless redefined as an entirely 
+        different structure
+        """
+        newInstance = type(self)()
+        for k, v in list(self.items()):
+            exec(('newInstance.%s = v') % (k))
+        return newInstance
+
+    def __deepcopy__(self, memo=None):
+        """hard copy of all attributes
+        same thing but call deepcopy recursively
+        technically not how it should be done,
+        (see https://docs.python.org/2/library/copy.html  #copy.deepcopy )
+        but will generally work in this case
+        """
+        newInstance = type(self)()
+        for k, v in list(self.items()):
+            exec(('newInstance.%s = deepcopy(v)') % (k))
+        return newInstance
+
+    def iterkeys(self):
+        for k in self._k:
+            yield k
+
+    def pop(self, key):
+        i = self._k.index(key)
+        k = self._k.pop(i)
+        v = self._v.pop(i)
+        #exec('del self.%s')%(key)
+        return (k, v)
+
+    def keys(self):
+        return self._k
+
+    def values(self):
+        return self._v
+
+    def items(self):
+        return list(zip(self._k, self._v))
+
+
+def isempty(x):
+    """Returns true if object is +/-infinity, NaN, None, '', has length 0, or 
+    is an array/matrix composed only of such components (includes mixtures of
+    "empty" types)
+    """
+
+    if type(x) is list:
+        if len(x) == 0:
+            return True
+
+    if type(x) in [np.ndarray, tuple]:
+        if np.size(x) == 0:
+            return True
+
+    if type(x) in [list, np.ndarray, tuple]:
+        # If anything in the array/matrix is not empty, the whole thing is not empty
+        try:
+            x = np.concatenate(x)
+        except (ValueError):
+            pass
+        for i in x:
+            if not isempty(i):
+                return False
+        # The array isn't empty but is full of "empty" type objects, so return True
+        return True
+
+    if x is None:
+        return True
+    if type(x) == str and x.lower() in ['', 'nan', 'none', 'inf', 'infinity', '-inf', '-infinity']:
+        return True
+
+    # Type may not be understood by NumPy, in which case it definitely is NOT NaN or infinity
+    try:
+        if np.isnan(x) or np.isinf(x):
+            return True
+    except (TypeError):
+        pass
+
+    # If all of the above fails, then it is not empty
+    return False
+
+
+def fieldnames(x, ignore_internals=True):
+    """Returns a list of fields of x
+
+    ignore_internals ignores all fieldnames starting with '_' and is True by
+    default
+    """
+    result = list(vars(x).keys())
+
+    if ignore_internals:
+        result = [i for i in result if i[0] != '_']
+
+    return result
+
+
+def isfield(x, y, ignore_internals=True):
+    """Returns True if y is a field of x
+
+    ignore_internals ignores all fieldnames starting with '_' and is True by
+    default
+    """
+    return str(y) in fieldnames(x, ignore_internals)
+
+
+def fileparts(x):
+    """given:   "path/path/.../file_name.ext", returns: [path, file_name, ext] (list of strings)
+    """
+    try:
+        a = x[:x.rindex('/')] # Path
+        b = x[x.rindex('/') + 1:] # Full filename
+    except ValueError: # No path provided
+        a = ''
+        b = x
+    try:
+        c, d = b.split('.') # File name, extension
+    except ValueError: # No extension provided
+        return [a, b, '']
+    return [a, c, '.' + d]
+
+
+def fullfile(*args):
+    """
+    usage:
+        fullfile(path, path, ... , file_name + ext)
+
+    returns: "path/path/.../file_name.ext"
+
+    with all arguments as strings with no "/"s
+
+    regarding extensions and the '.':
+        as final arguments ('file.doc') or ('file' + '.doc') will work
+        ('final', '.doc'), and the like, will not (you'd get 'final/.doc')
+    """
+    result = str(args[0])
+    for i in range(len(args[1:])):
+        # If last argument wasn't empty, add a '/' between it and the next argument
+        if len(args[i]) != 0:
+            result += '/' + str(args[i + 1])
+        else:
+            result += str(args[i + 1])
+    return result
+
+
+def findline(fidi, s):
+    """returns full first line containing s (as a string), or None
+
+    Note: will include any newlines or tabs that occur in that line, use 
+    str(findline(f, s)).strip() to remove these, str() in case result is None
+    """
+    for line in fidi:
+        if s in line:
+            return line
+    return None
+
+
+def empty_nd_list(shape, filler=0., as_numpy_ndarray=False):
+    """Returns a python list of the size/shape given (shape must be int or 
+    tuple) the list will be filled with the optional second argument
+
+    filler is 0.0 by default
+
+    as_numpy_ndarray will return the result as a numpy.ndarray and is False by
+    default
+
+    Note: the filler must be either None/np.nan/float('NaN'), float/double, or
+    int. other numpy and float values such as +/- np.inf will also work
+
+    Usage:
+        empty_nd_list((5, 5), 0.0)  # returns a 5x5 matrix of 0.0's
+        empty_nd_list(5, None)  # returns a 5 long array of NaN
+    """
+    result = np.empty(shape)
+    result.fill(filler)
+    if not as_numpy_ndarray:
+        return result.tolist()
+    return result
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/importancefactors.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/importancefactors.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/importancefactors.m	(revision 27955)
@@ -0,0 +1,66 @@
+function factors=importancefactors(md,variablename,responsename,partition)
+%IMPORTANCEFACTORS - compute importance factors for a certain variable and response.
+%
+%   Usage:
+%      factors=importancefactors(md,variablename,responsename)
+%
+%
+%   Example: factors=importancefactors(md,'drag','max_vel');
+%
+
+variablenamelength=length(variablename);
+
+%go through all response functions and find the one corresponding to the correct responsename
+responsefunctions=md.qmu.results.dresp_out;
+found=0;
+for i=1:length(responsefunctions),
+	if strcmpi(responsefunctions(i).descriptor,responsename),
+		found=i;
+		break;
+	end
+end
+if ~found,
+	error('importancefactors error message: could not find correct response function');
+end
+responsefunctions=responsefunctions(found);
+nfun=size(responsefunctions.var,1);
+
+%Now recover response to the correct design variable
+importancefactors=zeros(1,0);
+count=0;
+for i=1:nfun,
+	desvar=responsefunctions.var{i};
+	if strncmpi(desvar,variablename,variablenamelength),
+		importancefactors(end+1)=responsefunctions.impfac(i);
+		count=count+1;
+	end
+end
+
+if count==0,
+	error('importancefactors error message: either response does not exist, or importancefactors are empty');
+end
+
+if count==1, %we have scalar
+	factors=importancefactors;
+	return;
+elseif count==max(partition+1)
+	%distribute importance factor
+	factors=importancefactors(partition'+1); %partition was created to index "c" style
+else
+	%distribute importance factor
+	factors=importancefactors(partition'+1); %partition was created to index "c" style
+end
+
+%weight importancefactors by area
+%if numel(factors)==md.mesh.numberofvertices,
+%	%get areas for each vertex.
+%	aire=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y);
+%	num_elements_by_node=md.nodeconnectivity(:,end);
+%	grid_aire=zeros(md.mesh.numberofvertices,1);
+%	for i=1:md.mesh.numberofvertices,
+%		for j=1:num_elements_by_node(i),
+%			grid_aire(i)=grid_aire(i)+aire(md.nodeconnectivity(i,j));
+%		end
+%	end
+%	factors=factors./grid_aire;
+%end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/importancefactors.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/importancefactors.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/importancefactors.py	(revision 27955)
@@ -0,0 +1,70 @@
+import numpy as np
+
+from MatlabFuncs import *
+
+
+def importancefactors(md, variablename, responsename, partition):
+    '''
+    IMPORTANCEFACTORS - compute importance factors for a certain variable and response.
+
+    Usage:
+        factors = importancefactors(md, variablename, responsename)
+
+    Example: factors = importancefactors(md, 'drag', 'max_vel')
+    '''
+
+    variablenamelength = len(variablename)
+
+    #go through all response functions and find the one corresponding to the correct responsename
+    responsefunctions = md.qmu.results.dresp_out
+    found = -1
+    for i in range(len(responsefunctions)):
+        if responsefunctions[i].descriptor == responsename:
+            found = i
+            break
+    if found < 0:
+        raise RuntimeError('importancefactors error message: could not find correct response function')
+
+    responsefunctions = responsefunctions[found]
+    nfun = np.size(responsefunctions.var)
+
+    #Now recover response to the correct design variable
+    importancefactors = []
+    count = 0
+    for i in range(nfun):
+        desvar = responsefunctions.var[i]
+        if strncmpi(desvar, variablename, variablenamelength):
+            importancefactors.append(responsefunctions.impfac[i])
+            count = count + 1
+
+    if count == 0:
+        raise RuntimeError('importancefactors error message: either response does not exist, or importancefactors are empty')
+
+    importancefactors = np.array(importancefactors)
+
+    if count == 1:  #we have scalar
+        factors = importancefactors
+        return factors
+    elif count == np.max(partition + 1):
+        #distribute importance factor
+        factors = importancefactors[(partition.conj().T).flatten().astype(int)]
+    #md.qmu.partition was created to index "c" style
+    else:
+        #distribute importance factor
+        factors = importancefactors[(partition.conj().T).flatten().astype(int)]
+    #md.qmu.partition was created to index "c" style
+
+    #weight importancefactors by area
+    #if numel(factors) == md.mesh.numberofvertices,
+    #  #get areas for each vertex.
+    #    aire = GetAreas(md.mesh.elements, md.mesh.x, md.mesh.y)
+    #    num_elements_by_node = md.nodeconnectivity(:, )
+    #    grid_aire = zeros(md.mesh.numberofvertices, 1)
+    #    for i = 1:md.mesh.numberofvertices,
+    #        for j = 1:num_elements_by_node(i),
+    #            grid_aire(i)=grid_aire(i) + aire(md.nodeconnectivity(i, j))
+    #
+    #
+    #    factors = factors. / grid_aire
+    #
+    return factors
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/lclist_write.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/lclist_write.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/lclist_write.m	(revision 27955)
@@ -0,0 +1,61 @@
+%
+%  function to write linear constraint list
+%
+function []=lclist_write(fidi,cstring,cstring2,dvar)
+
+if isempty(dvar)
+    return;
+end
+
+%  put linear constraints into lists for writing
+
+nvar=0;
+pmatrix=[];
+plower =[];
+pupper =[];
+ptarget=[];
+pstype =[];
+pscale =[];
+
+fnames=fieldnames(dvar);
+for i=1:numel(fnames)
+    nvar=nvar+numel(dvar.(fnames{i}));
+    pmatrix=[pmatrix prop_matrix(dvar.(fnames{i}))];
+    plower =[plower  prop_lower(dvar.(fnames{i})) ];
+    pupper =[pupper  prop_upper(dvar.(fnames{i})) ];
+    ptarget=[ptarget prop_target(dvar.(fnames{i}))];
+    pstype =[pstype  prop_stype(dvar.(fnames{i})) ];
+    pscale =[pscale  prop_scale(dvar.(fnames{i})) ];
+end
+
+%  write linear constraints
+
+disp(sprintf('  Writing %d %s linear constraints.',...
+    nvar,cstring));
+
+if ~isempty(pmatrix)
+    fprintf(fidi,'\t  %s_matrix =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pmatrix,6,76);
+end
+if ~isempty(plower)
+    fprintf(fidi,'\t  %s_lower_bounds =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),plower ,6,76);
+end
+if ~isempty(pupper)
+    fprintf(fidi,'\t  %s_upper_bounds =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pupper ,6,76);
+end
+if ~isempty(ptarget)
+    fprintf(fidi,'\t  %s_targets =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),ptarget,6,76);
+end
+if ~isempty(pstype)
+    fprintf(fidi,'\t  %s_scale_types =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pstype ,6,76);
+end
+if ~isempty(pscale)
+    fprintf(fidi,'\t  %s_scales =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pscale ,6,76);
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/lclist_write.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/lclist_write.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/lclist_write.py	(revision 27955)
@@ -0,0 +1,63 @@
+import numpy as np
+#move this later
+from helpers import *
+
+from vector_write import *
+
+from linear_equality_constraint import *
+from linear_inequality_constraint import *
+
+
+def lclist_write(fidi, cstring, cstring2, dvar):
+    '''
+function to write linear constraint list
+'''
+    if dvar is None:
+        return
+
+    #  put linear constraints into lists for writing
+
+    nvar = 0
+    pmatrix = []
+    plower = []
+    pupper = []
+    ptarget = []
+    pstype = []
+    pscale = []
+
+    fnames = fieldnames(dvar)
+    for i in range(np.size(fnames)):
+        nvar = nvar + np.size(vars(dvar)[fnames[i]])
+        pmatrix = [pmatrix, prop_matrix(vars(dvar)[fnames[i]])]
+        plower = [plower, prop_lower(vars(dvar)[fnames[i]])]
+        pupper = [pupper, prop_upper(vars(dvar)[fnames[i]])]
+        ptarget = [ptarget, prop_target(vars(dvar)[fnames[i]])]
+        pstype = [pstype, prop_stype(vars(dvar)[fnames[i]])]
+        pscale = [pscale, prop_scale(vars(dvar)[fnames[i]])]
+
+    #  write linear constraints
+    print('  Writing ' + str(nvar) + ' ' + cstring + ' linear constraints.')
+
+    if len(pmatrix) != 0:
+        fidi.write('\t  ' + cstring2 + '_matrix =\n')
+        vector_write(fidi, '\t    ', pmatrix, 6, 76)
+
+    if len(plower) != 0:
+        fidi.write('\t  ' + cstring2 + '_lower_bounds =\n')
+        vector_write(fidi, '\t    ', plower, 6, 76)
+
+    if len(pupper) != 0:
+        fidi.write('\t  ' + cstring2 + '_upper_bounds =\n')
+        vector_write(fidi, '\t    ', pupper, 6, 76)
+
+    if len(ptarget) != 0:
+        fidi.write('\t  ' + cstring2 + '_targets =\n')
+        vector_write(fidi, '\t    ', ptarget, 6, 76)
+
+    if len(pstype) != 0:
+        fidi.write('\t  ' + cstring2 + '_scale_types =\n')
+        vector_write(fidi, '\t    ', pstype, 6, 76)
+
+    if len(pscale) != 0:
+        fidi.write('\t  ' + cstring2 + '_scales =\n')
+        vector_write(fidi, '\t    ', pscale, 6, 76)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/lognormal_pdf.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/lognormal_pdf.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/lognormal_pdf.m	(revision 27955)
@@ -0,0 +1,4 @@
+function pdf=lognormal_pdf(x,mu,sigma)
+
+pdf=1./(x*sigma*sqrt(2*pi)) .* exp( -(log(x)-mu).^2/(2*sigma^2)  );
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/param_write.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/param_write.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/param_write.m	(revision 27955)
@@ -0,0 +1,24 @@
+%
+%  function to write a parameter
+%
+function []=param_write(fidi,sbeg,pname,smid,send,params)
+
+if ~isfield(params,pname)
+    warning('param_write:param_not_found',...
+        'Parameter ''%s'' not found in structure.',pname);
+    return
+end
+
+if islogical(params.(pname)) && ~params.(pname)
+    return
+end
+
+if     islogical(params.(pname))
+    fprintf(fidi,[sbeg '%s' send],pname);
+elseif ischar   (params.(pname))
+    fprintf(fidi,[sbeg '%s' smid '%s' send],pname,params.(pname));
+elseif isnumeric(params.(pname))
+    fprintf(fidi,[sbeg '%s' smid '%g' send],pname,params.(pname));
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/param_write.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/param_write.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/param_write.py	(revision 27955)
@@ -0,0 +1,25 @@
+#move this later:
+from helpers import *
+
+
+def param_write(fidi, sbeg, pname, smid, s, params):
+    '''
+function to write a parameter
+'''
+    if not isfield(params, pname):
+        print('WARNING: param_write:param_not_found: Parameter {} not found in structure.'.format(pname))
+        return
+
+    params_pname = vars(params)[pname]
+
+    if type(params_pname) == bool and (not params_pname):
+        return
+
+    if type(params_pname) == bool:
+        fidi.write(sbeg + str(pname) + s)
+
+    elif type(params_pname) in [str]:
+        fidi.write(sbeg + pname + smid + params_pname + s)
+
+    elif type(params_pname) in [int, float]:
+        fidi.write(sbeg + str(pname) + smid + str(params_pname) + s)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_boxplot.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_boxplot.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_boxplot.m	(revision 27955)
@@ -0,0 +1,151 @@
+%
+%  plot a box plot of the responses.
+%
+%  []=plot_boxplot(dresp      ,params)
+%  []=plot_boxplot(dresp,descr,params)
+%  []=plot_boxplot(sampr,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of response samples)
+%    descr         (cell array, list of response descriptions)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    sample        (double vector, list of samples)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%
+%  for each response in the input array, this function plots a
+%  matlab box plot of the list of samples and annotates it
+%  with the description.  the lists of samples need not all be
+%  the same length.
+%
+%  this data would typically be contained in the dakota tabular
+%  output file and read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_boxplot(varargin)
+
+if ~nargin
+    help plot_boxplot
+    return
+end
+
+%%  process input data and assemble into matrices as needed
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lsamp=zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lsamp(i)=length(dresp(i).sample);
+    end
+    sampr=zeros(max(lsamp),length(dresp));
+    sampr(:,:)=NaN;
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        sampr(1:lsamp(i),i)=dresp(i).sample;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1,size(sampr,2));
+    end
+end
+
+for i=1:length(descr)
+    if isempty(descr{i})
+        descr(i)={['resp_' num2str(i)]};
+    end
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'ymin','ymax'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+%%  draw the plot
+
+%  draw box plot
+
+figure
+boxplot(sampr,'labels',descr,'notch','on')
+ax1=gca;
+
+%  add the annotation
+
+ylim('auto')
+[ylims]=ylim;
+if exist('ymin','var')
+    ylims(1)=ymin;
+end
+if exist('ymax','var')
+    ylims(2)=ymax;
+end
+ylim(ylims)
+
+if (size(sampr,2) == 1)
+    tlabc=descr{1};
+else
+    tlabc='Responses';
+end
+title(['Box Plot of ' tlabc],'Interpreter','none');
+xlabel('Response','Interpreter','none');
+ylabel('Value'   ,'Interpreter','none');
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_cdf.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_cdf.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_cdf.m	(revision 27955)
@@ -0,0 +1,370 @@
+%
+%  plot the CDF of the responses.
+%
+%  []=plot_cdf(dresp      ,params)
+%  []=plot_cdf(dresp,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    cdf(:,4)      (double matrix, CDF table)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    cplot         (char, 'p'/'r'/'g' to plot prob/reli/genrel)
+%    xmin          (numeric, minimum of x-axis)
+%    xmax          (numeric, maximum of x-axis)
+%    xgrid         (char, 'on' to turn on x-grid lines)
+%    ymin1         (numeric, minimum of y-axis)
+%    ymax1         (numeric, maximum of y-axis)
+%    ygrid1        (char, 'on' to turn on y-grid lines)
+%    ynorm         (char, 'yes' to use normal probability y-axis)
+%    yprob         (double vector, list of probabilities for y-axis)
+%    cline1        (char, 'off'/'no'/'-'/'--'/':'/etc. to change lines)
+%    lwidth1       (numeric, line width in points, default 0.5)
+%    cmark1        (char, 'on'/'yes'/'+'/'o'/'*'/etc. to change markers)
+%    msize1        (numeric, marker size in points, default 6)
+%    ymin2         (numeric, minimum of y-axis)
+%    ymax2         (numeric, maximum of y-axis)
+%    ygrid2        (char, 'on' to turn on y-grid lines)
+%    cline2        (char, 'off'/'no'/'-'/'--'/':'/etc. to change lines)
+%    lwidth2       (numeric, line width in points, default 0.5)
+%    cmark2        (char, 'on'/'yes'/'+'/'o'/'*'/etc. to change markers)
+%    msize2        (numeric, marker size in points, default 6)
+%    pdfplt        (char, 'bar'/'line'/'off' for pdf plots)
+%    pdfleg        (char, 'off' to turn off pdf legends)
+%    cmap          (char or numeric, colormap definition)
+%
+%  for each response in the input array, this function plots
+%  a line plot of the CDF and annotates it with the description.
+%
+%  this data would typically be contained in the dakota output
+%  file and read by dakota_out_parse.
+%
+%  "Copyright 2010, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_cdf(varargin)
+
+if ~nargin
+    help plot_cdf
+    return
+end
+
+%%  process input data and assemble into matrices as needed
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+else
+    error(['''' inputname(iarg) ''' is not a structure.']);
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'cplot','xmin','xmax','xgrid',...
+                 'ymin1','ymax1','ygrid1','ynorm','yprob',...
+                 'cline1','lwidth1','cmark1','msize1',...
+                 'ymin2','ymax2','ygrid2',...
+                 'cline2','lwidth2','cmark2','msize2',...
+                 'pdfplt','pdfleg','cmap'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+if ~exist('cplot','var') || strncmpi(cplot,'p',1)
+    cplot='Probabilit';
+    iplot=2;
+elseif strncmpi(cplot,'r',1)
+    cplot='Reliabilit';
+    iplot=3;
+elseif strncmpi(cplot,'g',1)
+    cplot='General Reliabilit';
+    iplot=4;
+end
+
+%  assemble data into matrices, based on parameters
+
+descr=cell (1,length(dresp));
+lcdfr=zeros(1,length(dresp));
+for i=1:length(dresp)
+    lcdfr(i)=size(dresp(i).cdf,1);
+end
+xdata=zeros(max(lcdfr),length(dresp));
+xdata(:,:)=NaN;
+ydata=zeros(max(lcdfr),length(dresp));
+ydata(:,:)=NaN;
+
+for i=1:length(dresp)
+    descr(i)=cellstr(dresp(i).descriptor);
+    if ~isempty(dresp(i).cdf)
+        xdata(1:lcdfr(i),i)=dresp(i).cdf(:,1);
+        if strncmpi(cplot,'p',1) && ...
+           exist('ynorm','var') && strncmpi(ynorm,'y',1)
+             ydata(1:lcdfr(i),i)=norminv_issm(dresp(i).cdf(:,iplot),0,1);
+        else
+             ydata(1:lcdfr(i),i)=             dresp(i).cdf(:,iplot);
+        end
+    end
+end
+
+%%  draw the line plot
+
+%newplot();
+figure
+ax1=axes;
+
+if ~exist('cline1','var') || strncmpi(cline1,'on' ,2) || strncmpi(cline1,'y',1)
+    cline1='-';
+elseif strncmpi(cline1,'off',3) || strncmpi(cline1,'n',1)
+    cline1='none';
+end
+if ~exist('lwidth1','var')
+    lwidth1=0.5;
+end
+if ~exist('cmark1','var') || strncmpi(cmark1,'off',3) || strncmpi(cmark1,'n',1)
+    cmark1='none';
+elseif strncmpi(cmark1,'on' ,2) || strncmpi(cmark1,'y',1) || ...
+       (length(cmark1) > 1)
+    cmark1='+';
+end
+if ~exist('msize1','var')
+    msize1=6;
+end
+
+hl1=line(xdata,ydata,'Parent',ax1,'LineStyle',cline1,'LineWidth',lwidth1,...
+         'Marker',cmark1,'MarkerSize',msize1);
+
+%  set lines to have a continuous colormap
+
+if exist('cmap','var')
+    colormap(cmap)
+end
+
+cmap=colormap;
+for i=1:length(hl1)
+    if (length(hl1) > 1)
+        imap=round((i-1)/(length(hl1)-1)*(size(cmap,1)-1))+1;
+    else
+        imap=1;
+    end
+    set(hl1(i),'Color',cmap(imap,:))
+end
+
+xlim('auto')
+[xlims]=xlim;
+if exist('xmin','var')
+    xlims(1)=xmin;
+end
+if exist('xmax','var')
+    xlims(2)=xmax;
+end
+xlim(xlims)
+if exist('xgrid','var') && strncmpi(xgrid,'on',2)
+    set(ax1,'XGrid','on')
+end
+if strncmpi(cplot,'p',1)
+    [ylims]=[0 1];
+else
+    ylim('auto')
+    [ylims]=ylim;
+end
+if exist('ymin1','var')
+    ylims(1)=ymin1;
+end
+if exist('ymax1','var')
+    ylims(2)=ymax1;
+end
+ylim(ylims)
+if exist('ygrid1','var') && strncmpi(ygrid1,'on',2)
+    set(ax1,'YGrid','on')
+end
+
+%  add the annotation
+
+if strncmpi(cplot,'p',1) && ...
+   exist('ynorm','var') && strncmpi(ynorm,'y',1)
+%  copied and adapted from matlab normplot function
+    if ~exist('yprob','var')
+        yprob = [0.001 0.003 0.01 0.02 0.05 0.10 0.25 0.5...
+                 0.75 0.90 0.95 0.98 0.99 0.997 0.999];
+    end
+
+%  matlab docs say str2mat is obsolete, so replace (and eliminate redundancy)
+%     label1= str2mat('0.001','0.003', '0.01','0.02','0.05','0.10','0.25','0.50');
+%     label2= str2mat('0.75','0.90','0.95','0.98','0.99','0.997', '0.999');
+%     label = [label1;label2];
+    label=cell(1,length(yprob));
+    for i=1:length(yprob)
+        label(i)=cellstr(num2str(yprob(i)));
+    end
+
+    tick  = norminv_issm(yprob,0,1);
+    set(ax1,'YTick',tick,'YTickLabel',label);
+    ylim([tick(1) tick(end)])
+end
+
+title([cplot 'ies for Response Levels'])
+xlabel('Response Level')
+ylabel([cplot 'y'])
+
+hleg1=legend(ax1,descr(1:length(hl1)),'Location','NorthWest',...
+             'Color','none','Interpreter','none');
+
+%%  generate the probability distribution functions
+
+if ~exist('pdfplt','var') || ~strcmpi(pdfplt,'off')
+    xpdf =zeros(max(lcdfr)-1,length(dresp));
+    xpdf (:,:)=NaN;
+    ypdf =zeros(max(lcdfr)-1,length(dresp));
+    ypdf (:,:)=NaN;
+    xplot=zeros(2*max(lcdfr),length(dresp));
+    xplot(:,:)=NaN;
+    yplot=zeros(2*max(lcdfr),length(dresp));
+    yplot(:,:)=NaN;
+
+    for i=1:length(dresp)
+        descr(i)=cellstr([dresp(i).descriptor ' pdf']);
+        if ~isempty(dresp(i).cdf) && (lcdfr(i) > 1)
+            xpdf (1:lcdfr(i)-1,i)=(dresp(i).cdf(1:lcdfr(i)-1,1)+...
+                                   dresp(i).cdf(2:lcdfr(i)  ,1))/2;
+            ypdf (1:lcdfr(i)-1,i)=(dresp(i).cdf(2:lcdfr(i)  ,2)-...
+                                   dresp(i).cdf(1:lcdfr(i)-1,2))./...
+                                  (dresp(i).cdf(2:lcdfr(i)  ,1)-...
+                                   dresp(i).cdf(1:lcdfr(i)-1,1));
+            for j=1:lcdfr(i)-1
+                xplot(2*(j-1)+1,i)=dresp(i).cdf(j  ,1);
+                yplot(2*(j-1)+1,i)=ypdf (j,i);
+                xplot(2*(j-1)+2,i)=dresp(i).cdf(j+1,1);
+                yplot(2*(j-1)+2,i)=ypdf (j,i);
+            end
+        end
+    end
+
+    if strcmpi(pdfplt,'line')
+        xplot=xpdf;
+        yplot=ypdf;
+    end
+
+%  draw the line plot
+
+%  (see "Using Multiple X- and Y-Axes" and "Overlaying Other
+%  Plots on Bar Graphs", or search on "YAxisLocation right")
+
+%     hold all
+%     hold on
+%     plot(edges,cdf)
+%     plotyy([],[],edges,cdf)
+
+%  ticks from the bar plot will show through on the right side,
+%  so make equal number of ticks for the line plot on right side
+
+    nytick=length(get(ax1,'YTick'));
+%     ylim('auto')
+%     [ylims]=ylim;
+    [ylims]=[0 ceil(max(max(yplot))/0.1-0.1)*0.1];
+    if exist('ymin2','var')
+        ylims(1)=ymin2;
+    end
+    if exist('ymax2','var')
+        ylims(2)=ymax2;
+    else
+        ylims(2)=ylims(1)+(nytick-1)/(nytick-1-1)*(ylims(2)-ylims(1));
+    end
+%     ylim(ylims)
+    ytinc =(ylims(2)-ylims(1))/(nytick-1);
+
+    ax2=axes('Position',get(ax1,'Position'),...
+             'XLim',get(ax1,'XLim'),...
+             'XTick',get(ax1,'XTick'),...
+             'YLim',ylims,...
+             'YTick',[ylims(1):ytinc:ylims(2)],...
+             'XAxisLocation','bottom','YAxisLocation','right',...
+             'Color','none','Layer','top');
+
+    if ~exist('cline2','var') || strncmpi(cline2,'on' ,2) || strncmpi(cline2,'y',1)
+        cline2='-';
+    elseif strncmpi(cline2,'off',3) || strncmpi(cline2,'n',1)
+        cline2='none';
+    end
+    if ~exist('lwidth2','var')
+        lwidth2=0.5;
+    end
+    if ~exist('cmark2','var') || strncmpi(cmark2,'off',3) || strncmpi(cmark2,'n',1)
+        cmark2='none';
+    elseif strncmpi(cmark2,'on' ,2) || strncmpi(cmark2,'y',1) || ...
+           (length(cmark2) > 1)
+        cmark2='+';
+    end
+    if ~exist('msize2','var')
+        msize2=6;
+    end
+
+    hl2=line(xplot,yplot,'Parent',ax2,'LineStyle',cline2,'LineWidth',lwidth2,...
+             'Marker',cmark2,'MarkerSize',msize2);
+
+%  set line property colors line property
+
+    cmap=colormap;
+    for i=1:length(hl2)
+        if (length(hl2) > 1)
+            imap=round((i-1)/(length(hl2)-1)*(size(cmap,1)-1))+1;
+        else
+            imap=1;
+        end
+        set(hl2(i),'Color',get(hl1(i),'Color'))
+     end
+
+%  add the annotation
+
+    ylabel('Probability Distribution Function');
+
+    if ~exist('cdfleg','var') || ~strcmpi(cdfleg,'off')
+% legend doesn't combine with bar chart above
+        hleg2=legend(ax2,descr(1:length(hl2)),'Location','NorthEast',...
+                     'Color','none','Interpreter','none');
+%         set(hleg2,'Color','white')
+    end
+
+    set(gcf,'PaperPositionMode','auto')
+%     hold off
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_hist_norm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_hist_norm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_hist_norm.m	(revision 27955)
@@ -0,0 +1,469 @@
+%
+%  plot a relative histogram and cdf optionally along with
+%  a normal distribution.
+%
+%  []=plot_hist_norm(dresp1      ,dresp2      ,params)
+%  []=plot_hist_norm(dresp1,desc1,dresp2,desc2,params)
+%  []=plot_hist_norm(sampr ,descr,mu,sigma    ,params)
+%
+%  where the required input is:
+%    dresp1        (structure array, responses)
+%      or
+%    dresp1        (structure array, responses)
+%    desc1         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of samples)
+%    descr         (cell array, list of descriptions)
+%
+%  and the optional input is:
+%    dresp2        (structure array, responses)
+%      or
+%    dresp2        (structure array, responses)
+%    desc2         (cell array, list of response descriptions desired)
+%      or
+%    mu            (double vector, means)
+%    sigma         (double vector, standard deviations)
+%
+%  the required fields of dresp1 are:
+%    descriptor    (char, description)
+%    sample        (double vector, list of samples)
+%
+%  and the required fields of dresp2 are:
+%    mean          (double, mean of sample)
+%    stddev        (double, standard deviation of sample)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    hmin          (numeric, minimum for histogram)
+%    hmax          (numeric, maximum for histogram)
+%    hnint         (numeric, number of intervals for histogram)
+%    ymin1         (numeric, minimum of histogram y-axis)
+%    ymax1         (numeric, maximum of histogram y-axis)
+%    ymin2         (numeric, minimum of cdf y-axis)
+%    ymax2         (numeric, maximum of cdf y-axis)
+%    nrmplt        (char, pass 'l' or 'off' to change nrm plots 
+%                   from default of 'bar' or 'b' to 'line' instead, 
+%                   pass 's' to change nrm plot to 'stairs')                                                  
+%    cdfplt        (char, 'off' to turn off cdf line plots)
+%    cdfleg        (char, 'off' to turn off cdf legends)
+%    cmap          (char or numeric, colormap definition)
+%
+%  for each response in the input array, this function
+%  calculates and plots a relative histogram and CDF of the list
+%  of samples, and annotates it with the description.  in
+%  addition, a mean and standard deviation may be supplied or,
+%  if empty, calculated so that a normal distribution and CDF may
+%  be plotted.
+%
+%  dresp1 data would typically be contained in the dakota tabular
+%  output file from a sampling analysis, and dresp2 data would
+%  typically be contained in the dakota output file from a local
+%  sensitivity analysis, both read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_hist_norm(varargin)
+
+if ~nargin
+    help plot_hist_norm
+    return
+end
+
+%%  process input data and assemble into matrices as needed
+
+%  responses for histograms
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp1=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp1=struc_desc(dresp1,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp1));
+    lsamp=zeros(1,length(dresp1));
+    for i=1:length(dresp1)
+        lsamp(i)=length(dresp1(i).sample);
+    end
+    sampr=zeros(max(lsamp),length(dresp1));
+    sampr(:,:)=NaN;
+
+    for i=1:length(dresp1)
+        descr(i)=cellstr(dresp1(i).descriptor);
+        sampr(1:lsamp(i),i)=dresp1(i).sample;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    lsamp(1:size(sampr,2))=size(sampr,1);
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1:size(sampr,2));
+    end
+end
+
+for i=1:length(descr)
+    if isempty(descr{i})
+        descr(i)={['resp_' num2str(i)]};
+    end
+end
+
+%  responses for normal distributions
+
+if     iarg <= nargin && isstruct(varargin{iarg})
+    dresp2=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp2=struc_desc(dresp2,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    mu   =zeros(1,length(dresp2));
+    sigma=zeros(1,length(dresp2));
+
+    for i=1:length(dresp2)
+        mu   (i)=dresp2(i).mean;
+        sigma(i)=dresp2(i).stddev;
+    end
+elseif iarg+1 <= nargin && ...
+       isnumeric(varargin{iarg}) && isnumeric(varargin{iarg+1})
+    if ~isempty(varargin{iarg})
+        mu   =varargin{iarg};
+    else
+        mu   =mean(sampr);
+        display('Using calculated means.')
+    end
+    iarg=iarg+1;
+    if ~isempty(varargin{iarg})
+        sigma=varargin{iarg};
+    else
+        sigma=std(sampr);
+        display('Using calculated standard deviations.')
+    end
+    iarg=iarg+1;
+else
+    mu   =mean(sampr);
+    display('Using calculated means.')
+    sigma=std(sampr);
+    display('Using calculated standard deviations.')
+end
+
+%  parameters
+LineWidth=1;
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'hmin','hmax','hnint',...
+                 'ymin1','ymax1','ymin2','ymax2',...
+                 'nrmplt','EdgeColor','FaceColor','LineWidth','cdfplt',...
+				     'cdfleg','nrmleg','cmap','titleplt','xlabelplt','ylabelplt','FontSize'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+%%  generate the intervals
+
+if ~exist('hmin','var')
+    hmin=min(min(sampr));
+end
+if ~exist('hmax','var')
+    hmax=max(max(sampr));
+end
+if ~exist('hnint','var')
+    hnint=50;
+end
+edges=hmin:(hmax-hmin)/hnint:hmax;
+
+%%  generate the histogram counts and make them relative
+
+%  note that for the histc function:
+%  n(k) counts the value x(i) if edges(k) <= x(i) < edges(k+1).
+%  The last bin counts any values of x that match edges(end).
+%  Values outside the values in edges are not counted.
+%  Use -inf and inf in edges to include all non-NaN values.
+
+dhistc=histc(sampr,edges);
+for i=1:size(sampr,2)
+    dbelow(i)  =length(find(sampr(:,i)<edges(  1)))/lsamp(i);
+    dhistc(:,i)=dhistc(:,i)                        /lsamp(i);
+    dabove(i)  =length(find(sampr(:,i)>edges(end)))/lsamp(i);
+end
+
+ncol=size(sampr,2);
+if exist('mu','var') && exist('sigma','var')
+    for i=1:ncol
+        dbelow(end+1)=normcdf_issm(edges(  1),mu(i),sigma(i));
+        dhistc(1:size(dhistc,1)-1,end+1)=...
+            normcdf_issm(edges(2:end  ),mu(i),sigma(i))-...
+            normcdf_issm(edges(1:end-1),mu(i),sigma(i));
+        dabove(end+1)=norminv_issm(edges(end),mu(i),sigma(i));
+        if exist('descr','var')
+            descr(end+1)={[descr{i} ' norm']};
+        end
+    end
+end
+
+%  draw the bar plot
+
+%figure
+if ~exist('nrmplt','var')
+    nrmplt='bar';
+end
+
+hold all
+% hl1=bar(edges(1:end-1),dhistc(1:end-1,1:2*ncol));
+% hl1=line(edges(1:end-1),dhistc(1:end-1,1:2*ncol));
+if     strncmpi(nrmplt,'b',1)
+    hl1=bar (edges(1:end-1),dhistc(1:end-1,1:2*ncol));
+elseif strncmpi(nrmplt,'l',1)
+    hl1=bar (edges(1:end-1),dhistc(1:end-1,1:1*ncol));
+    hl1(1*ncol+1:2*ncol)=...
+        line(edges(1:end-1),dhistc(1:end-1,1*ncol+1:2*ncol),...
+             'LineWidth',LineWidth);
+elseif strncmpi(nrmplt,'s',1)
+	 hl1=stairs(edges(1:end-1)-(hmax-hmin)/hnint/2,dhistc(1:end-1,1:ncol));
+elseif strncmpi(nrmplt,'off',3)
+    hl1=bar (edges(1:end-1),dhistc(1:end-1,1:1*ncol));
+end
+ax1=gca;
+hold off
+
+%  set barseries properties for clarity
+
+if (ncol > 1) || strncmpi(nrmplt,'b',1)
+    for i=1:length(hl1)
+        if strcmpi(get(hl1(i),'Type'),'hggroup')
+            set(hl1(i),'BarWidth',1,'EdgeColor','none');
+        end
+    end
+end
+
+%set face and edge color
+if ~strncmpi(nrmplt,'s',1)
+	EdgeColor='k'; FaceColor='r';
+	for i=1:length(hl1)
+		set(hl1(i),'EdgeColor',EdgeColor,'FaceColor',FaceColor,'LineWidth',LineWidth);
+	end
+end
+
+%  set bars and lines to have a continuous colormap
+%  (if barseries is "flat", must interpolate and round to colormap)
+
+if exist('cmap','var')
+    colormap(cmap)
+end
+
+cmap=colormap;
+for i=1:length(hl1)
+	if (length(hl1) > 1)
+		imap=round((i-1)/(length(hl1)-1)*(size(cmap,1)-1))+1;
+	else
+		imap=1;
+	end
+	if ~strncmpi(nrmplt,'s',1) && strcmpi(get(hl1(i),'Type'),'hggroup')
+		if ischar(get(hl1(i),'FaceColor')) && ...
+				strcmpi(get(hl1(i),'FaceColor'),'flat')
+			set(hl1(i),'FaceColor',cmap(imap,:))
+		else
+			set(hl1(i),'FaceColor',get(hl1(i),'FaceColor'))
+		end
+	elseif strcmpi(get(hl1(i),'Type'),'line')
+		set(hl1(i),'Color',cmap(imap,:))
+	elseif strncmpi(nrmplt,'s',1)
+		set(hl1(i),'Color',EdgeColor,'LineWidth',2)
+	end
+end
+
+xlim('auto')
+[xlims]=xlim;
+if exist('hmin','var')
+    xlims(1)=edges(1);
+end
+if exist('hmax','var')
+    xlims(2)=edges(end-1);
+end
+xlim(xlims)
+
+ylim('auto')
+[ylims]=ylim;
+if exist('ymin1','var')
+    ylims(1)=ymin1;
+end
+if exist('ymax1','var')
+    ylims(2)=ymax1;
+end
+ylim(ylims)
+
+if exist('FontSize','var'),
+	fontsize=FontSize;
+else
+	fontsize=12;
+end
+
+%  add the annotation
+if exist('titleplt','var'),
+	title(titleplt,'FontSize',fontsize);
+else
+	if exist('cdfplt','var') && ...
+	   (strncmpi(cdfplt,'off',3) || strncmpi(cdfplt,'n',1))
+		title('Relative Frequency Histogram','FontSize',fontsize)
+	else
+		title('Relative Frequency Histogram with CDF','FontSize',fontsize)
+	end
+end
+
+if exist('xlabelplt','var'),
+	xlabel(xlabelplt,'FontSize',fontsize);
+else
+	xlabel('Interval Edge Value');
+end
+if exist('ylabelplt','var'),
+	ylabel(ylabelplt,'FontSize',fontsize);
+else
+	ylabel('Relative Frequency');
+end
+if exist('descr','var')
+	if ~strncmpi(cdfleg,'off',3),
+		hleg1=legend(ax1,descr(1:length(hl1)),'Location','Best','Color','none','Interpreter','none');
+	end
+else
+	if ~exist('cdfleg','var') || (~strncmpi(cdfleg,'off',3) || ~strncmpi(cdfleg,'n',1))
+		hleg1=legend(ax1);
+	end
+end
+
+%%  generate the cumulative distribution functions
+
+if ~exist('cdfplt','var') || ...
+   (~strncmpi(cdfplt,'off',3) && ~strncmpi(cdfplt,'n',1))
+%     cdf=zeros(size(dhistc));
+%     cdf(1,:)=dhistc(1,:);
+%     for i=2:size(dhistc,1)
+%         cdf(i,:)=cdf(i-1,:)+dhistc(i,:);
+%     end
+    cdf=cumsum(dhistc);
+    for i=1:size(dhistc,2)
+        cdf(:,i)=dbelow(i)+cdf(:,i);
+    end
+    if exist('descr','var')
+        ncol=length(descr);
+        for i=1:ncol
+            cdescr(i)={[descr{i} ' cdf']};
+        end
+    end
+
+%  draw the line plot
+
+%  (see "Using Multiple X- and Y-Axes" and "Overlaying Other
+%  Plots on Bar Graphs", or search on "YAxisLocation right")
+
+%     hold all
+%     hold on
+%     plot(edges,cdf)
+%     plotyy([],[],edges,cdf)
+
+%  ticks from the bar plot will show through on the right side,
+%  so make equal number of ticks for the line plot on right side
+
+    nytick=length(get(ax1,'YTick'));
+%     ylim('auto')
+%     [ylims]=ylim;
+    [ylims]=[0 ceil(max(max(cdf))/0.1-0.1)*0.1];
+    if exist('ymin2','var')
+        ylims(1)=ymin2;
+    end
+    if exist('ymax2','var')
+        ylims(2)=ymax2;
+    else
+        ylims(2)=ylims(1)+(nytick-1)/(nytick-1-1)*(ylims(2)-ylims(1));
+    end
+%     ylim(ylims)
+    ytinc =(ylims(2)-ylims(1))/(nytick-1);
+
+    ax2=axes('Position',get(ax1,'Position'),...
+             'XLim',get(ax1,'XLim'),...
+             'XTick',get(ax1,'XTick'),...
+             'YLim',ylims,...
+             'YTick',[ylims(1):ytinc:ylims(2)],...
+             'XAxisLocation','bottom','YAxisLocation','right',...
+             'Color','none','Layer','top');
+    hl2=line(edges(1:end-1),cdf(1:end-1,1:length(hl1)),'Parent',ax2);
+
+%  set line property colors to match barseries or line property
+%  (if barseries is "flat", must interpolate and round to colormap)
+
+    cmap=colormap;
+    for i=1:length(hl2)
+        if (length(hl2) > 1)
+            imap=round((i-1)/(length(hl2)-1)*(size(cmap,1)-1))+1;
+        else
+            imap=1;
+        end
+        if     strcmpi(get(hl1(i),'Type'),'hggroup')
+            if ischar(get(hl1(i),'FaceColor')) && ...
+               strcmpi(get(hl1(i),'FaceColor'),'flat')
+                set(hl2(i),'Color',cmap(imap,:))
+            else
+                set(hl2(i),'Color',get(hl1(i),'FaceColor'))
+            end
+        elseif strcmpi(get(hl1(i),'Type'),'line')
+            set(hl2(i),'Color',get(hl1(i),'Color'))
+        end
+    end
+
+%  add the annotation
+
+    ylabel('Cumulative Percent');
+
+    if ~exist('cdfleg','var') || ...
+       (~strncmpi(cdfleg,'off',3) || ~strncmpi(cdfleg,'n',1))
+% legend doesn't combine with bar chart above
+        if exist('cdescr','var')
+            hleg2=legend(ax2,cdescr(1:length(hl2)),'Location','Best',...
+                         'Color','none','Interpreter','none');
+%             set(hleg2,'Color','white')
+        else
+            hleg2=legend(ax2,'Location','Best');
+%             set(hleg2,'Color','white')
+        end
+    end
+
+    set(gcf,'PaperPositionMode','auto')
+%     hold off
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_hist_norm_ci.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_hist_norm_ci.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_hist_norm_ci.m	(revision 27955)
@@ -0,0 +1,466 @@
+%
+%  plot a relative histogram and cdf optionally along with a
+%  normal distribution for the sample and confidence intervals.
+%
+%  []=plot_hist_norm_ci(dresp      ,params)
+%  []=plot_hist_norm_ci(dresp,descr,params)
+%  []=plot_hist_norm_ci(sampr,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of samples)
+%    descr         (cell array, list of descriptions)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    sample        (double vector, list of samples)
+%
+%  and the optional fields of dresp are:
+%    mean          (double, mean of sample)
+%    stddev        (double, standard deviation of sample)
+%    meanci(2)     (double, confidence interval of mean)
+%    stddevci(2)   (double, confidence interval of standard deviation)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  and the optional input is:
+%    hmin          (numeric, minimum for histogram)
+%    hmax          (numeric, maximum for histogram)
+%    hnint         (numeric, number of intervals for histogram)
+%    ymin1         (numeric, minimum of histogram y-axis)
+%    ymax1         (numeric, maximum of histogram y-axis)
+%    ymin2         (numeric, minimum of cdf y-axis)
+%    ymax2         (numeric, maximum of cdf y-axis)
+%    nrmplt        (char, 'line' or 'off' to change nrm plots from 'bar')
+%    ciplt         (char, 'line' or 'off' to change ci plots from 'bar')
+%    cdfplt        (char, 'off' to turn off cdf line plots)
+%    cdfleg        (char, 'off' to turn off cdf legends)
+%    cmap          (char or numeric, colormap definition)
+%
+%  for each response in the input array, this function
+%  calculates and plots a relative histogram and CDF of the list
+%  of samples, and annotates it with the description.  in
+%  addition, the normal distribution and CDF are plotted, and
+%  four CDF's are plotted for the confidence intervals.
+%
+%  dresp data would typically be contained in the dakota tabular
+%  output file from a sampling analysis, read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_hist_norm_ci(varargin)
+
+if ~nargin
+    help plot_hist_norm_ci
+    return
+end
+
+%%  process input data and assemble into matrices as needed
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lsamp=zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lsamp(i)=length(dresp(i).sample);
+    end
+    sampr=zeros(max(lsamp),length(dresp));
+    sampr(:,:)=NaN;
+
+    mu     =zeros(1,length(dresp));
+    sigma  =zeros(1,length(dresp));
+    muci   =zeros(2,length(dresp));
+    sigmaci=zeros(2,length(dresp));
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        sampr(1:lsamp(i),i)=dresp(i).sample;
+        mu     (i)  =dresp(i).mean;
+        sigma  (i)  =dresp(i).stddev;
+        muci   (:,i)=dresp(i).meanci;
+        sigmaci(:,i)=dresp(i).stddevci;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    lsamp(1:size(sampr,2))=size(sampr,1);
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1,size(sampr,2));
+    end
+
+    mu     =zeros(1,size(sampr,2));
+    sigma  =zeros(1,size(sampr,2));
+    muci   =zeros(2,size(sampr,2));
+    sigmaci=zeros(2,size(sampr,2));
+    for i=1:size(sampr,2)
+%  calculate 95% confidence intervals (same as dakota)
+        [mu(i),sigma(i),muci(:,i),sigmaci(:,i)]=...
+            normfit_issm(sampr(:,i),0.05);
+    end
+    display('Using calculated normal fits.')
+end
+
+for i=1:length(descr)
+    if isempty(descr{i})
+        descr(i)={['resp_' num2str(i)]};
+    end
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'hmin','hmax','hnint',...
+                 'ymin1','ymax1','ymin2','ymax2',...
+                 'nrmplt','ciplt','cdfplt','cdfleg','cmap'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+%%  generate the intervals
+
+if ~exist('hmin','var')
+    hmin=min(min(sampr));
+end
+if ~exist('hmax','var')
+    hmax=max(max(sampr));
+end
+if ~exist('hnint','var')
+    hnint=50;
+end
+edges=hmin:(hmax-hmin)/hnint:hmax;
+
+%%  generate the histogram counts and make them relative
+
+%  note that for the histc function:
+%  n(k) counts the value x(i) if edges(k) <= x(i) < edges(k+1).
+%  The last bin counts any values of x that match edges(end).
+%  Values outside the values in edges are not counted.
+%  Use -inf and inf in edges to include all non-NaN values.
+
+dhistc=histc(sampr,edges);
+for i=1:size(sampr,2)
+    dbelow(i)  =length(find(sampr(:,i)<edges(  1)))/lsamp(i);
+    dhistc(:,i)=dhistc(:,i)                        /lsamp(i);
+    dabove(i)  =length(find(sampr(:,i)>edges(end)))/lsamp(i);
+end
+
+ncol=size(sampr,2);
+if exist('mu','var') && exist('sigma','var')
+    for i=1:ncol
+        dbelow(end+1)=normcdf_issm(edges(  1),mu(i),sigma(i));
+        dhistc(1:size(dhistc,1)-1,end+1)=...
+            normcdf_issm(edges(2:end  ),mu(i),sigma(i))-...
+            normcdf_issm(edges(1:end-1),mu(i),sigma(i));
+        dabove(end+1)=norminv_issm(edges(end),mu(i),sigma(i));
+        if exist('descr','var')
+            descr(end+1)={[descr{i} ' norm']};
+        end
+    end
+end
+
+if exist('muci','var') && exist('sigmaci','var')
+    for i=1:ncol
+        dbelow(end+1)=normcdf_issm(edges(  1),muci(1,i),sigmaci(2,i));
+        dhistc(1:size(dhistc,1)-1,end+1)=...
+            normcdf_issm(edges(2:end  ),muci(1,i),sigmaci(2,i))-...
+            normcdf_issm(edges(1:end-1),muci(1,i),sigmaci(2,i));
+        dabove(end+1)=norminv_issm(edges(end),muci(1,i),sigmaci(2,i));
+        if exist('descr','var')
+            descr(end+1)={[descr{i} ' norm-+']};
+        end
+    end
+    for i=1:ncol
+        dbelow(end+1)=normcdf_issm(edges(  1),muci(1,i),sigmaci(1,i));
+        dhistc(1:size(dhistc,1)-1,end+1)=...
+            normcdf_issm(edges(2:end  ),muci(1,i),sigmaci(1,i))-...
+            normcdf_issm(edges(1:end-1),muci(1,i),sigmaci(1,i));
+        dabove(end+1)=norminv_issm(edges(end),muci(1,i),sigmaci(1,i));
+        if exist('descr','var')
+            descr(end+1)={[descr{i} ' norm--']};
+        end
+    end
+    for i=1:ncol
+        dbelow(end+1)=normcdf_issm(edges(  1),muci(2,i),sigmaci(1,i));
+        dhistc(1:size(dhistc,1)-1,end+1)=...
+            normcdf_issm(edges(2:end  ),muci(2,i),sigmaci(1,i))-...
+            normcdf_issm(edges(1:end-1),muci(2,i),sigmaci(1,i));
+        dabove(end+1)=norminv_issm(edges(end),muci(2,i),sigmaci(1,i));
+        if exist('descr','var')
+            descr(end+1)={[descr{i} ' norm+-']};
+        end
+    end
+    for i=1:ncol
+        dbelow(end+1)=normcdf_issm(edges(  1),muci(2,i),sigmaci(2,i));
+        dhistc(1:size(dhistc,1)-1,end+1)=...
+            normcdf_issm(edges(2:end  ),muci(2,i),sigmaci(2,i))-...
+            normcdf_issm(edges(1:end-1),muci(2,i),sigmaci(2,i));
+        dabove(end+1)=norminv_issm(edges(end),muci(2,i),sigmaci(2,i));
+        if exist('descr','var')
+            descr(end+1)={[descr{i} ' norm++']};
+        end
+    end
+end
+
+%  draw the bar plot
+
+figure
+if ~exist('nrmplt','var')
+    nrmplt='bar';
+end
+if ~exist('ciplt','var')
+    ciplt='bar';
+end
+
+hold all
+% hl1=bar(edges(1:end-1),dhistc(1:end-1,1:6*ncol));
+% hl1=line(edges(1:end-1),dhistc(1:end-1,1:6*ncol));
+if     strncmpi(nrmplt,'b',1)
+    if     strncmpi(ciplt,'b',1)
+        hl1=bar (edges(1:end-1),dhistc(1:end-1,1:6*ncol));
+    elseif strncmpi(ciplt,'l',1)
+        hl1=bar (edges(1:end-1),dhistc(1:end-1,1:2*ncol));
+        hl1(2*ncol+1:6*ncol)=...
+            line(edges(1:end-1),dhistc(1:end-1,2*ncol+1:6*ncol),...
+                 'LineWidth',2);
+    elseif strncmpi(ciplt,'off',3) || strncmpi(ciplt,'n',1)
+        hl1=bar (edges(1:end-1),dhistc(1:end-1,1:2*ncol));
+    end
+elseif strncmpi(nrmplt,'l',1)
+    if     strncmpi(ciplt,'b',1) || strncmpi(ciplt,'l',1)
+        hl1=bar (edges(1:end-1),dhistc(1:end-1,1:1*ncol));
+        hl1(1*ncol+1:2*ncol)=...
+            line(edges(1:end-1),dhistc(1:end-1,1*ncol+1:2*ncol),...
+                 'LineWidth',2);
+        hl1(2*ncol+1:6*ncol)=...
+            line(edges(1:end-1),dhistc(1:end-1,2*ncol+1:6*ncol),...
+                 'LineWidth',1);
+    elseif strncmpi(ciplt,'off',3) || strncmpi(ciplt,'n',1)
+        hl1=bar (edges(1:end-1),dhistc(1:end-1,1:1*ncol));
+        hl1(1*ncol+1:2*ncol)=...
+            line(edges(1:end-1),dhistc(1:end-1,1*ncol+1:2*ncol),...
+                 'LineWidth',2);
+    end
+elseif strncmpi(nrmplt,'off',3) || strncmpi(nrmplt,'n',1)
+    hl1=bar (edges(1:end-1),dhistc(1:end-1,1:1*ncol));
+end
+ax1=gca;
+hold off
+
+%  set barseries properties for clarity
+
+if (ncol > 1) || strncmpi(nrmplt,'b',1)
+    for i=1:length(hl1)
+        if strcmpi(get(hl1(i),'Type'),'hggroup')
+            set(hl1(i),'BarWidth',1,'EdgeColor','none');
+        end
+    end
+end
+
+%  set bars and lines to have a continuous colormap
+%  (if barseries is "flat", must interpolate and round to colormap)
+
+if exist('cmap','var')
+    colormap(cmap)
+end
+
+cmap=colormap;
+for i=1:length(hl1)
+    if (length(hl1) > 1)
+        imap=round((i-1)/(length(hl1)-1)*(size(cmap,1)-1))+1;
+    else
+        imap=1;
+    end
+    if     strcmpi(get(hl1(i),'Type'),'hggroup')
+        if ischar(get(hl1(i),'FaceColor')) && ...
+           strcmpi(get(hl1(i),'FaceColor'),'flat')
+            set(hl1(i),'FaceColor',cmap(imap,:))
+        else
+            set(hl1(i),'FaceColor',get(hl1(i),'FaceColor'))
+        end
+    elseif strcmpi(get(hl1(i),'Type'),'line')
+        set(hl1(i),'Color',cmap(imap,:))
+    end
+end
+
+xlim('auto')
+[xlims]=xlim;
+if exist('hmin','var')
+    xlims(1)=edges(1);
+end
+if exist('hmax','var')
+    xlims(2)=edges(end-1);
+end
+xlim(xlims)
+
+ylim('auto')
+[ylims]=ylim;
+if exist('ymin1','var')
+    ylims(1)=ymin1;
+end
+if exist('ymax1','var')
+    ylims(2)=ymax1;
+end
+ylim(ylims)
+
+%  add the annotation
+
+if exist('cdfplt','var') && ...
+   (strncmpi(cdfplt,'off',3) || strncmpi(cdfplt,'n',1))
+    title('Relative Frequency Histogram')
+else
+    title('Relative Frequency Histogram with CDF')
+end
+xlabel('Interval Edge Value');
+ylabel('Relative Frequency');
+
+if exist('descr','var')
+    hleg1=legend(ax1,descr(1:length(hl1)),'Location','NorthWest',...
+                 'Color','none','Interpreter','none');
+else
+    hleg1=legend(ax1);
+end
+
+%%  generate the cumulative distribution functions
+
+if ~exist('cdfplt','var') || ...
+   (~strncmpi(cdfplt,'off',3) && ~strncmpi(cdfplt,'n',1))
+%     cdf=zeros(size(dhistc));
+%     cdf(1,:)=dhistc(1,:);
+%     for i=2:size(dhistc,1)
+%         cdf(i,:)=cdf(i-1,:)+dhistc(i,:);
+%     end
+    cdf=cumsum(dhistc);
+    for i=1:size(dhistc,2)
+        cdf(:,i)=dbelow(i)+cdf(:,i);
+    end
+    if exist('descr','var')
+        ncol=length(descr);
+        for i=1:ncol
+            cdescr(i)={[descr{i} ' cdf']};
+        end
+    end
+
+%  draw the line plot
+
+%  (see "Using Multiple X- and Y-Axes" and "Overlaying Other
+%  Plots on Bar Graphs", or search on "YAxisLocation right")
+
+%     hold all
+%     hold on
+%     plot(edges,cdf)
+%     plotyy([],[],edges,cdf)
+
+%  ticks from the bar plot will show through on the right side,
+%  so make equal number of ticks for the line plot on right side
+
+    nytick=length(get(ax1,'YTick'));
+%     ylim('auto')
+%     [ylims]=ylim;
+    [ylims]=[0 ceil(max(max(cdf))/0.1-0.1)*0.1];
+    if exist('ymin2','var')
+        ylims(1)=ymin2;
+    end
+    if exist('ymax2','var')
+        ylims(2)=ymax2;
+    else
+        ylims(2)=ylims(1)+(nytick-1)/(nytick-1-1)*(ylims(2)-ylims(1));
+    end
+%     ylim(ylims)
+    ytinc =(ylims(2)-ylims(1))/(nytick-1);
+
+    ax2=axes('Position',get(ax1,'Position'),...
+             'XLim',get(ax1,'XLim'),...
+             'XTick',get(ax1,'XTick'),...
+             'YLim',ylims,...
+             'YTick',[ylims(1):ytinc:ylims(2)],...
+             'XAxisLocation','bottom','YAxisLocation','right',...
+             'Color','none','Layer','top');
+    hl2=line(edges(1:end-1),cdf(1:end-1,1:length(hl1)),'Parent',ax2);
+
+%  set line property colors to match barseries or line property
+%  (if barseries is "flat", must interpolate and round to colormap)
+
+    cmap=colormap;
+    for i=1:length(hl2)
+        if (length(hl2) > 1)
+            imap=round((i-1)/(length(hl2)-1)*(size(cmap,1)-1))+1;
+        else
+            imap=1;
+        end
+        if     strcmpi(get(hl1(i),'Type'),'hggroup')
+            if ischar(get(hl1(i),'FaceColor')) && ...
+               strcmpi(get(hl1(i),'FaceColor'),'flat')
+                set(hl2(i),'Color',cmap(imap,:))
+            else
+                set(hl2(i),'Color',get(hl1(i),'FaceColor'))
+            end
+        elseif strcmpi(get(hl1(i),'Type'),'line')
+            set(hl2(i),'Color',get(hl1(i),'Color'))
+        end
+    end
+
+%  add the annotation
+
+    ylabel('Cumulative Percent');
+
+    if ~exist('cdfleg','var') || ...
+       (~strncmpi(cdfleg,'off',3) && ~strncmpi(cdfleg,'n',1))
+% legend doesn't combine with bar chart above
+        if exist('cdescr','var')
+            hleg2=legend(ax2,cdescr(1:length(hl2)),'Location','NorthEast',...
+                         'Color','none','Interpreter','none');
+%             set(hleg2,'Color','white')
+        else
+            hleg2=legend(ax2);
+%             set(hleg2,'Color','white')
+        end
+    end
+
+    set(gcf,'PaperPositionMode','auto')
+%     hold off
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_if_bars.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_if_bars.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_if_bars.m	(revision 27955)
@@ -0,0 +1,229 @@
+%
+%  plot a stacked bar chart of the importance factors.
+%
+%  []=plot_if_bars(dresp      ,params)
+%  []=plot_if_bars(dresp,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    var           (cell array, variables)
+%    impfac        (double array, importance factors)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%    ifmin         (double, minimum importance factor)
+%    isort         (numeric, sort flag:  0, no sorting;
+%                                        1, highest at bottom;
+%                                       -1, lowest at bottom)
+%    xtlrot        (numeric, rotation in degrees of x-tick labels)
+%
+%  for each response in the input array, this function plots
+%  a stacked bar plot of the responses, where the bars are
+%  stacked by the importance factors, and annotates it with the
+%  description.  the legend labels are constructed from the
+%  variable list.
+%
+%  this data would typically be contained in the dakota output
+%  file from a local reliability analysis and read by
+%  dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_if_bars(varargin)
+
+if ~nargin
+    help plot_if_bars
+    return
+end
+
+%%  process input data and assemble into matrices
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lifr =zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lifr(i)=length(dresp(i).impfac);
+    end
+    ifr =zeros(length(dresp),max(lifr));
+    dvar=dresp(find(lifr == max(lifr),1,'first')).var;
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        ifr(i,1:lifr(i))=dresp(i).impfac;
+    end
+else
+    error(['''' inputname(iarg) ''' is not a structure.']);
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'ymin','ymax','ifmin','isort','xtlrot'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+if ~exist('ifmin','var') || isempty(ifmin)
+    ifmin=0;
+end
+
+if ~exist('isort','var') || isempty(isort)
+    isort=0;
+end
+
+%%  sort the data, if necessary
+
+if (isort)
+    ifmean=mean(ifr,1);
+    if (isort > 0)
+        [ifmean,index]=sort(ifmean,'descend');
+    else
+        [ifmean,index]=sort(ifmean,'ascend' );
+    end
+    clear ifmean
+
+    dvar=dvar(index);
+    ifr =ifr (:,index);
+end
+
+%%  filter the data, if necessary
+
+if (ifmin > 0)
+    nif=length(dvar);
+    dvar(nif+1,1)=cellstr(sprintf('others < %f',ifmin));
+    ifr (:,nif+1)=0.;
+
+    nif2=0;
+    dvar2=cell (size(dvar));
+    ifr2 =zeros(size(ifr ));
+
+%  sum filtered rows and copy unfiltered rows
+
+    for i=1:nif
+        if (max(ifr(:,i)) < ifmin)
+            ifr(:,nif+1)=ifr(:,nif+1)+ifr(:,i);
+        else
+            nif2=nif2+1;
+            dvar2(nif2)  =dvar(i);
+            ifr2 (:,nif2)=ifr (:,i);
+        end
+    end
+
+%  copy sums
+
+    dvar2(nif2+1)  =dvar(nif+1);
+    ifr2 (:,nif2+1)=ifr (:,nif+1);
+
+%  copy back and truncate filtered rows
+
+    clear dvar ifr
+    if (isort >= 0)
+        dvar(1:nif2+1)  =dvar2(1:nif2+1);
+        ifr (:,1:nif2+1)=ifr2 (:,1:nif2+1);
+    else
+        dvar(1       )  =dvar2(  nif2+1);
+        dvar(2:nif2+1)  =dvar2(1:nif2  );
+        ifr (:,1       )=ifr2 (:,  nif2+1);
+        ifr (:,2:nif2+1)=ifr2 (:,1:nif2  );
+    end
+    clear nif nif2 dvar2 ifr2
+end
+
+%%  draw the stacked bar plot
+
+%  if there's only one row, Matlab 7.5 interprets it as a column,
+%  so add an extra row, then reduce xlim
+
+if length(dresp) == 1
+    ifr=[ifr; ifr];
+end
+
+figure
+hl1=bar(ifr,'stacked');
+
+ax1=gca;
+if length(dresp) == 1
+    set(ax1,'xlim',[0.5 1.5])
+end
+
+% set(ax1,'ylim',[0 1.2])
+% ylim('auto')
+% [ylims]=ylim;
+[ylims]=[0 1.2];
+if exist('ymin','var')
+    ylims(1)=ymin;
+end
+if exist('ymax','var')
+    ylims(2)=ymax;
+end
+ylim(ylims)
+
+set(ax1,'xtick',1:length(descr))
+set(ax1,'xticklabel',descr)
+if exist('xtlrot','var')
+    htl=rotateticklabel(ax1,xtlrot);
+    tlext=zeros(length(htl),4);
+    for i=1:length(htl)
+        tlext(i,:)=get(htl(i),'Extent');
+    end
+end
+
+%  add the annotation
+
+title('Importance Factors')
+xlabel('Response')
+if exist('xtlrot','var')
+    xlext=get(get(ax1,'xlabel'),'Extent');
+    nskip=ceil(max(tlext(:,4))/xlext(4));
+    xlabel(cellstr([repmat('        ',nskip,1);'Response']));
+    clear nskip xlext tlext
+end
+ylabel('Importance Factor Value')
+
+hleg1=legend(ax1,dvar,'Location','EastOutside',...
+             'Orientation','vertical','Interpreter','none');
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_if_spec.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_if_spec.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_if_spec.m	(revision 27955)
@@ -0,0 +1,277 @@
+%
+%  plot a line plot or bar chart of the spectrum of importance factors.
+%
+%  []=plot_if_spec(dresp      ,params)
+%  []=plot_if_spec(dresp,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    var           (cell array, variables)
+%    impfac        (double array, importance factors)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    cplot         (char, 'l'/'b'/'g' to plot line/bar)
+%    cline         (char, 'off'/'no'/'-'/'--'/':'/etc. to change lines)
+%    lwidth        (numeric, line width in points, default 0.5)
+%    cmark         (char, 'on'/'yes'/'+'/'o'/'*'/etc. to change markers)
+%    msize         (numeric, marker size in points, default 6)
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%    ygrid         (char, 'on' to turn on y-grid lines)
+%    ylog          (char, 'yes' to use log y-axis)
+%    ifmin         (double, minimum importance factor)
+%    isort         (numeric, sort flag:  0, no sorting;
+%                                        1, highest at right;
+%                                       -1, lowest at right)
+%    xtlrot        (numeric, rotation in degrees of x-tick labels)
+%
+%  for each response in the input array, this function plots
+%  a bar plot of the importance factors and annotates it with the
+%  description.  the legend labels are constructed from the
+%  response list.
+%
+%  this data would typically be contained in the dakota output
+%  file from a local reliability analysis and read by
+%  dakota_out_parse.
+%
+%  "Copyright 2010, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_if_spec(varargin)
+
+if ~nargin
+    help plot_if_spec
+    return
+end
+
+%%  process input data and assemble into matrices
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lifr =zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lifr(i)=length(dresp(i).impfac);
+    end
+    ifr =zeros(length(dresp),max(lifr));
+    dvar=dresp(find(lifr == max(lifr),1,'first')).var;
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        ifr(i,1:lifr(i))=dresp(i).impfac;
+    end
+else
+    error(['''' inputname(iarg) ''' is not a structure.']);
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'cplot','cline','lwidth','cmark','msize',...
+                 'ymin','ymax','ygrid','ylog',...
+                 'ifmin','isort','xtlrot'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+if ~exist('cplot','var') || isempty(cplot)
+    cplot='line';
+end
+
+if ~exist('ifmin','var') || isempty(ifmin)
+    ifmin=0;
+end
+
+if ~exist('isort','var') || isempty(isort)
+    isort=0;
+end
+
+%%  sort the data, if necessary
+
+if (isort)
+    ifmean=mean(ifr,1);
+    if (isort > 0)
+        [ifmean,index]=sort(ifmean,'ascend' );
+    else
+        [ifmean,index]=sort(ifmean,'descend');
+    end
+    clear ifmean
+
+    dvar=dvar(index);
+    ifr =ifr (:,index);
+end
+
+%%  filter the data, if necessary
+
+if (ifmin > 0)
+    nif=length(dvar);
+    dvar(nif+1,1)=cellstr(sprintf('others < %f',ifmin));
+    ifr (:,nif+1)=0.;
+
+    nif2=0;
+    dvar2=cell (size(dvar));
+    ifr2 =zeros(size(ifr ));
+
+%  sum filtered rows and copy unfiltered rows
+
+    for i=1:nif
+        if (max(ifr(:,i)) < ifmin)
+            ifr(:,nif+1)=ifr(:,nif+1)+ifr(:,i);
+        else
+            nif2=nif2+1;
+            dvar2(nif2)  =dvar(i);
+            ifr2 (:,nif2)=ifr (:,i);
+        end
+    end
+
+%  copy sums
+
+    dvar2(nif2+1)  =dvar(nif+1);
+    ifr2 (:,nif2+1)=ifr (:,nif+1);
+
+%  copy back and truncate filtered rows
+
+    clear dvar ifr
+    if (isort >= 0)
+        dvar(1:nif2+1)  =dvar2(1:nif2+1);
+        ifr (:,1:nif2+1)=ifr2 (:,1:nif2+1);
+    else
+        dvar(1       )  =dvar2(  nif2+1);
+        dvar(2:nif2+1)  =dvar2(1:nif2  );
+        ifr (:,1       )=ifr2 (:,  nif2+1);
+        ifr (:,2:nif2+1)=ifr2 (:,1:nif2  );
+    end
+    clear nif nif2 dvar2 ifr2
+end
+
+%%  draw the line or bar plot
+
+%  if there's only one row, Matlab 7.5 interprets it as a column,
+%  so add an extra row, then reduce xlim
+
+if length(dvar) == 1
+    ifr=[ifr; ifr];
+end
+
+%newplot();
+figure
+ax1=axes;
+if strncmpi(cplot,'l',1)
+    if ~exist('cline','var') || strncmpi(cline,'on' ,2) || strncmpi(cline,'y',1)
+        cline='-';
+    elseif strncmpi(cline,'off',3) || strncmpi(cline,'n',1)
+        cline='none';
+    end
+    if ~exist('lwidth','var')
+        lwidth=0.5;
+    end
+    if ~exist('cmark','var') || strncmpi(cmark,'off',3) || strncmpi(cmark,'n',1)
+        cmark='none';
+    elseif strncmpi(cmark,'on' ,2) || strncmpi(cmark,'y',1) || ...
+           (length(cmark) > 1)
+        cmark='+';
+    end
+    if ~exist('msize','var')
+        msize=6;
+    end
+
+    hl1=plot(ax1,ifr','LineStyle',cline,'LineWidth',lwidth,...
+             'Marker',cmark,'MarkerSize',msize);
+else
+    hl1=bar(ax1,ifr');
+end
+
+ax1=gca;
+if length(dvar) == 1
+    set(ax1,'xlim',[0.5 1.5])
+else
+    set(ax1,'xlim',[0.5 length(dvar)+0.5])
+end
+
+if exist('ylog','var') && strncmpi(ylog,'y',1)
+    set(ax1,'yscale','log')
+    ylim('auto')
+    [ylims]=ylim;
+else
+    [ylims]=[0 1.2];
+end
+if exist('ymin','var')
+    ylims(1)=ymin;
+end
+if exist('ymax','var')
+    ylims(2)=ymax;
+end
+ylim(ylims)
+if strncmpi(cplot,'b',1) && exist('ylog','var') && strncmpi(ylog,'y',1)
+    set(hl1,'basevalue',ylims(1))
+end
+
+set(ax1,'xtick',1:length(dvar))
+set(ax1,'xticklabel',dvar)
+if exist('xtlrot','var')
+    htl=rotateticklabel(ax1,xtlrot);
+    tlext=zeros(length(htl),4);
+    for i=1:length(htl)
+        tlext(i,:)=get(htl(i),'Extent');
+    end
+end
+
+%  add the annotation
+
+if length(descr) > 1
+    title('Importance Factors of Responses')
+    hleg1=legend(ax1,descr,'Location','EastOutside',...
+                 'Orientation','vertical','Interpreter','none');
+else
+    title(['Importance Factors of ' descr{1}],'Interpreter','none')
+end
+xlabel('Variable')
+if exist('xtlrot','var')
+    xlext=get(get(ax1,'xlabel'),'Extent');
+    nskip=ceil(max(tlext(:,4))/xlext(4));
+    xlabel(cellstr([repmat('        ',nskip,1);'Variable']));
+    clear nskip xlext tlext
+end
+ylabel('Importance Factor Value')
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_normdist_bars.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_normdist_bars.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_normdist_bars.m	(revision 27955)
@@ -0,0 +1,213 @@
+%
+%  plot a stacked bar chart of the sample distributions.
+%
+%  []=plot_normdist_bars(dresp      ,params)
+%  []=plot_normdist_bars(dresp,descr,params)
+%  []=plot_normdist_bars(sampr,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of response samples)
+%    descr         (cell array, list of response descriptions)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    sample        (double vector, list of samples)
+%
+%  and the optional fields of dresp are:
+%    mean          (double, mean of sample)
+%    stddev        (double, standard deviation of sample)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    prob          (double vector, probability levels)
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%    xtlrot        (numeric, rotation in degrees of x-tick labels)
+%    lstr          (cell array, legend labels)
+%
+%  for each response in the input array, this function plots
+%  a stacked bar plot of the list of samples, where the bars
+%  are stacked by the given or default probability levels
+%  calculated from a normal distribution, and annotates it with
+%  the description.  the mean and standard deviation will be
+%  calculated from the samples if they do not already exist.
+%  the legend labels can be given or constructed from the
+%  probability levels.
+%
+%  this data would typically be contained in the dakota tabular
+%  output file and read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_normdist_bars(varargin)
+
+if ~nargin
+    help plot_normdist_bars
+    return
+end
+
+%%  process input data and assemble into dresp as needed
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1:size(sampr,2));
+    end
+
+    dresp=struct([]);
+    for i=1:size(sampr,2)
+        dresp(end+1).sample=samp(:,i);
+        if ~isempty(descr)
+            dresp(i).descriptor=descr{i};
+        else
+            dresp(i).descriptor=['dresp_' num2str(i)];
+        end
+    end
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'prob','ymin','ymax','xtlrot','lstr'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+%%  calculate any missing information (noting that dresp is local)
+
+if ~isfield(dresp,'mean') || ~isfield(dresp,'stddev')
+    for i=1:length(dresp)
+        [dresp(i).mean,dresp(i).stddev]=normfit_issm(dresp(i).sample);
+    end
+end
+
+%%  assemble the data into a matrix and calculate the increments
+
+if ~exist('prob','var') || isempty(prob)
+    prob=[0.01 0.25 0.50 0.75 0.99];
+end
+
+descr=cell (1,length(dresp));
+data =zeros(length(dresp),length(prob));
+
+for i=1:length(dresp)
+    descr(i)=cellstr(dresp(i).descriptor);
+    data(i,:)=norminv_issm(prob,dresp(i).mean,dresp(i).stddev);
+end
+
+for j=length(prob):-1:2
+    data(:,j)=data(:,j)-data(:,j-1);
+end
+
+%%  draw the stacked bar plot
+
+%  if there's only one row, Matlab 7.5 interprets it as a column,
+%  so add an extra row, then reduce xlim
+
+if length(dresp) == 1
+    data=[data; data];
+end
+
+figure
+hl1=bar(data,'stacked');
+%  set barseries properties for lowest value
+whitebg('white')
+set(hl1(1),'FaceColor','white')
+set(hl1(1),'Visible','off')
+
+ax1=gca;
+if length(dresp) == 1
+    set(ax1,'xlim',[0.5 1.5])
+end
+
+ylim('auto')
+[ylims]=ylim;
+if exist('ymin','var')
+    ylims(1)=ymin;
+end
+if exist('ymax','var')
+    ylims(2)=ymax;
+end
+ylim(ylims)
+
+set(ax1,'xtick',1:length(descr))
+set(ax1,'xticklabel',descr)
+if exist('xtlrot','var')
+    htl=rotateticklabel(ax1,xtlrot);
+    tlext=zeros(length(htl),4);
+    for i=1:length(htl)
+        tlext(i,:)=get(htl(i),'Extent');
+    end
+end
+
+%  add the annotation
+
+title('Normal Distributions of Responses')
+xlabel('Response')
+if exist('xtlrot','var')
+    xlext=get(get(ax1,'xlabel'),'Extent');
+    nskip=ceil(max(tlext(:,4))/xlext(4));
+    xlabel(cellstr([repmat('        ',nskip,1);'Response']));
+    clear nskip xlext tlext
+end
+ylabel('Value')
+
+if ~exist('lstr','var') || isempty(lstr)
+    lstr=cell(1,length(prob));
+    for i=1:length(prob)
+        lstr(i)=cellstr(sprintf('%g%%',100*prob(i)));
+    end
+end
+
+hleg1=legend(ax1,lstr,'Location','EastOutside',...
+             'Orientation','vertical','Interpreter','none');
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_normplot.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_normplot.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_normplot.m	(revision 27955)
@@ -0,0 +1,154 @@
+%
+%  plot a normal probability plot of the responses.
+%
+%  []=plot_normplot(dresp      ,params)
+%  []=plot_normplot(dresp,descr,params)
+%  []=plot_normplot(sampr,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of response samples)
+%    descr         (cell array, list of response descriptions)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    sample        (double vector, list of samples)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    xmin          (numeric, minimum of x-axis)
+%    xmax          (numeric, maximum of x-axis)
+%
+%  for each response in the input array, this function plots
+%  a matlab normal probability plot of the list of samples
+%  and annotates it with the description.  the lists of samples
+%  need not all be the same length.
+%
+%  this data would typically be contained in the dakota tabular
+%  output file and read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_normplot(varargin)
+
+if ~nargin
+    help plot_normplot
+    return
+end
+
+%%  process input data and assemble into matrices as needed
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lsamp=zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lsamp(i)=length(dresp(i).sample);
+    end
+    sampr=zeros(max(lsamp),length(dresp));
+    sampr(:,:)=NaN;
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        sampr(1:lsamp(i),i)=dresp(i).sample;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1,size(sampr,2));
+    end
+end
+
+for i=1:length(descr)
+    if isempty(descr{i})
+        descr(i)={['resp_' num2str(i)]};
+    end
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'xmin','xmax'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+%%  draw the plot
+
+%  draw normal probability plot
+
+figure
+normplot(sampr)
+ax1=gca;
+
+%  add the annotation
+
+xlim('auto')
+[xlims]=xlim;
+if exist('xmin','var')
+    xlims(1)=xmin;
+end
+if exist('xmax','var')
+    xlims(2)=xmax;
+end
+xlim(xlims)
+
+if (size(sampr,2) == 1)
+    tlabc=descr{1};
+else
+    tlabc='Responses';
+end
+title(['Normal Probability Plot of ' tlabc],'Interpreter','none');
+xlabel('Value'      ,'Interpreter','none');
+ylabel('Probability','Interpreter','none');
+
+hleg1=legend(ax1,descr,'Location','EastOutside',...
+             'Orientation','vertical','Interpreter','none');
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_prob_bars.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_prob_bars.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_prob_bars.m	(revision 27955)
@@ -0,0 +1,196 @@
+%
+%  plot a stacked bar chart of the probabilities in the CDF.
+%
+%  []=plot_prob_bars(dresp      ,params)
+%  []=plot_prob_bars(dresp,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    cdf(:,4)      (double matrix, CDF table)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%    xtlrot        (numeric, rotation in degrees of x-tick labels)
+%    cmap          (char, 'stoplight' for 6-color stoplight colormap)
+%    lstr          (cell array, legend labels)
+%
+%  for each response in the input array, this function plots
+%  a stacked bar plot of the responses, where the bars are
+%  stacked by the probabilities corresponding to the given
+%  response levels in the CDF, and annotates it with the
+%  description.  the legend labels can be given or constructed
+%  from the response levels.
+%
+%  this data would typically be contained in the dakota output
+%  file and read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_prob_bars(varargin)
+
+if ~nargin
+    help plot_prob_bars
+    return
+end
+
+%%  assemble the data into a matrix and calculate the increments
+
+%%  process input data and assemble into matrices and increments
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lcdfr=zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lcdfr(i)=size(dresp(i).cdf,1);
+    end
+    cdfr=zeros(length(dresp),max(lcdfr));
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        if ~isempty(dresp(i).cdf)
+            cdfr(i,1)=dresp(i).cdf(1,2);
+            for j=2:size(dresp(i).cdf,1)
+                if (dresp(i).cdf(j,2) > dresp(i).cdf(j-1,2))
+                    cdfr(i,j)=dresp(i).cdf(j,2)-dresp(i).cdf(j-1,2);
+                end
+            end
+        end
+    end
+else
+    error(['''' inputname(iarg) ''' is not a structure.']);
+end
+
+%  convert to percentage
+
+cdfr=cdfr*100.;
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'ymin','ymax','xtlrot','cmap','lstr'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+%%  draw the stacked bar plot
+
+%  if there's only one row, Matlab 7.5 interprets it as a column,
+%  so add an extra row, then reduce xlim
+
+if length(dresp) == 1
+    cdfr=[cdfr; cdfr];
+end
+
+figure
+hl1=bar(cdfr,'stacked');
+if exist('cmap','var')
+    if strncmpi(cmap,'stop',4)
+%         set(hl1(1),'FaceColor','green')
+%         set(hl1(2),'FaceColor',[.7 1 0])
+%         set(hl1(3),'FaceColor','yellow')
+%         set(hl1(4),'FaceColor',[1 .7 0])
+%         set(hl1(5),'FaceColor',[1 .5 0])
+%         set(hl1(6),'FaceColor','red')
+        colormap([0 1 0;.7 1 0;1 1 0;1 .7 0;1 .5 0;1 0 0]);
+    else
+        colormap(cmap);
+    end
+end
+
+ax1=gca;
+if length(dresp) == 1
+    set(ax1,'xlim',[0.5 1.5])
+end
+
+% set(ax1,'ylim',[0 120])
+% ylim('auto')
+% [ylims]=ylim;
+[ylims]=[0 120];
+if exist('ymin','var')
+    ylims(1)=ymin;
+end
+if exist('ymax','var')
+    ylims(2)=ymax;
+end
+ylim(ylims)
+
+set(ax1,'xtick',1:length(descr))
+set(ax1,'xticklabel',descr)
+if exist('xtlrot','var')
+    htl=rotateticklabel(ax1,xtlrot);
+    tlext=zeros(length(htl),4);
+    for i=1:length(htl)
+        tlext(i,:)=get(htl(i),'Extent');
+    end
+end
+
+%  add the annotation
+
+title('Probabilities for Specified Response Levels (RIA)')
+xlabel('Response')
+if exist('xtlrot','var')
+    xlext=get(get(ax1,'xlabel'),'Extent');
+    nskip=ceil(max(tlext(:,4))/xlext(4));
+    xlabel(cellstr([repmat('        ',nskip,1);'Response']));
+    clear nskip xlext tlext
+end
+ylabel('Percent Below Level')
+
+if ~exist('lstr','var') || isempty(lstr)
+    lstr=cell(1,max(lcdfr));
+    for i=1:max(lcdfr)
+        lstr(i)=cellstr(sprintf('%g',...
+            dresp(find(lcdfr == max(lcdfr),1,'first')).cdf(i,1)));
+    end
+    if ~isempty(find(lcdfr < max(lcdfr)))
+        warning('Variable number of levels for responses.');
+    end
+end
+
+hleg1=legend(ax1,lstr,'Location','EastOutside',...
+             'Orientation','vertical','Interpreter','none');
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_rlev_bars.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_rlev_bars.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_rlev_bars.m	(revision 27955)
@@ -0,0 +1,178 @@
+%
+%  plot a stacked bar chart of the response levels in the cdf.
+%
+%  []=plot_rlev_bars(dresp      ,params)
+%  []=plot_rlev_bars(dresp,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    cdf(:,4)      (double matrix, CDF table)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%    xtlrot        (numeric, rotation in degrees of x-tick labels)
+%    lstr          (cell array, legend labels)
+%
+%  for each response in the input array, this function plots
+%  a stacked bar plot of the responses, where the bars are
+%  stacked by the response levels corresponding to the given
+%  probabilities in the CDF, and annotates it with the
+%  description.  the legend labels can be given or constructed
+%  from the probabilities.
+%
+%  this data would typically be contained in the dakota output
+%  file and read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_rlev_bars(varargin)
+
+if ~nargin
+    help plot_rlev_bars
+    return
+end
+
+%%  process input data and assemble into matrices and increments
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lcdfr=zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lcdfr(i)=size(dresp(i).cdf,1);
+    end
+    cdfr=zeros(length(dresp),max(lcdfr));
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        if ~isempty(dresp(i).cdf)
+            cdfr(i,1)=dresp(i).cdf(1,1);
+            for j=2:size(dresp(i).cdf,1)
+                if (dresp(i).cdf(j,1) > dresp(i).cdf(j-1,1))
+                    cdfr(i,j)=dresp(i).cdf(j,1)-dresp(i).cdf(j-1,1);
+                end
+            end
+        end
+    end
+else
+    error(['''' inputname(iarg) ''' is not a structure.']);
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'ymin','ymax','xtlrot','lstr'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+%%  draw the stacked bar plot
+
+%  if there's only one row, Matlab 7.5 interprets it as a column,
+%  so add an extra row, then reduce xlim
+
+if length(dresp) == 1
+    cdfr=[cdfr; cdfr];
+end
+
+figure
+hl1=bar(cdfr,'stacked');
+%  set barseries properties for lowest value
+whitebg('white')
+set(hl1(1),'FaceColor','white')
+set(hl1(1),'Visible','off')
+
+ax1=gca;
+if length(dresp) == 1
+    set(ax1,'xlim',[0.5 1.5])
+end
+
+ylim('auto')
+[ylims]=ylim;
+if exist('ymin','var')
+    ylims(1)=ymin;
+end
+if exist('ymax','var')
+    ylims(2)=ymax;
+end
+ylim(ylims)
+
+set(ax1,'xtick',1:length(descr))
+set(ax1,'xticklabel',descr)
+if exist('xtlrot','var')
+    htl=rotateticklabel(ax1,xtlrot);
+    tlext=zeros(length(htl),4);
+    for i=1:length(htl)
+        tlext(i,:)=get(htl(i),'Extent');
+    end
+end
+
+%  add the annotation
+
+title('Response Levels for Specified Probabilities (PMA)')
+xlabel('Response');
+if exist('xtlrot','var')
+    xlext=get(get(ax1,'xlabel'),'Extent');
+    nskip=ceil(max(tlext(:,4))/xlext(4));
+    xlabel(cellstr([repmat('        ',nskip,1);'Response']));
+    clear nskip xlext tlext
+end
+ylabel('Response Level')
+
+if ~exist('lstr','var') || isempty(lstr)
+    lstr=cell(1,max(lcdfr));
+    for i=1:max(lcdfr)
+        lstr(i)=cellstr(sprintf('%g%%',...
+            100*dresp(find(lcdfr == max(lcdfr),1,'first')).cdf(i,2)));
+    end
+    if ~isempty(find(lcdfr < max(lcdfr),1))
+        warning('Variable number of probabilities for responses.');
+    end
+end
+
+hleg1=legend(ax1,lstr,'Location','EastOutside',...
+             'Orientation','vertical','Interpreter','none');
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_rlev_bars_ci.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_rlev_bars_ci.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_rlev_bars_ci.m	(revision 27955)
@@ -0,0 +1,269 @@
+%
+%  plot a stacked bar chart of the response levels in the cdf
+%  for the sample and confidence intervals.
+%
+%  []=plot_rlev_bars_ci(dresp      ,params)
+%  []=plot_rlev_bars_ci(dresp,descr,params)
+%  []=plot_rlev_bars_ci(sampr,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of response samples)
+%    descr         (cell array, list of response descriptions)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    cdf(:,4)      (double matrix, CDF table)
+%
+%  and the optional fields of dresp are:
+%    mean          (double, mean of sample)
+%    stddev        (double, standard deviation of sample)
+%    meanci(2)     (double, confidence interval of mean)
+%    stddevci(2)   (double, confidence interval of standard deviation)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%    xtlrot        (numeric, rotation in degrees of x-tick labels)
+%    lstr          (cell array, legend labels)
+%
+%  for each response in the input array, this function plots
+%  a stacked bar plot of the responses, where the bars are
+%  stacked by the response levels corresponding to the given
+%  probabilities in the CDF, and annotates it with the
+%  description.  the response levels for the normal distribution
+%  and the confidence intervals are also plotted.  the legend
+%  labels can be given or constructed from the probabilities.
+%
+%  dresp data would typically be contained in the dakota tabular
+%  output file from a sampling analysis, read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_rlev_bars_ci(varargin)
+
+if ~nargin
+    help plot_rlev_bars_ci
+    return
+end
+
+%%  process input data and assemble into dresp as needed
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1:size(sampr,2));
+    end
+
+    dresp=struct([]);
+    for i=1:size(sampr,2)
+        dresp(end+1).sample=sampr(:,i);
+        if ~isempty(descr)
+            dresp(i).descriptor=descr{i};
+        else
+            dresp(i).descriptor=['dresp_' num2str(i)];
+        end
+    end
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'ymin','ymax','xtlrot','lstr'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+%%  calculate any missing information (noting that dresp is local)
+
+for i=1:length(dresp)
+    if ~isfield(dresp(i),'mean') || isempty(dresp(i).mean) || ...
+       ~isfield(dresp(i),'stddev') || isempty(dresp(i).stddev) || ...
+       ~isfield(dresp(i),'meanci') || isempty(dresp(i).meanci) || ...
+       ~isfield(dresp(i),'stddevci') || isempty(dresp(i).stddevci)
+%  calculate 95% confidence intervals (same as dakota)
+        [dresp(i).mean,dresp(i).stddev,...
+         dresp(i).meanci,dresp(i).stddevci]=...
+            normfit_issm(sampr(:,i),0.05);
+        display('Using calculated normal fits from sample data.')
+    end
+
+    if ~isfield(dresp(i),'cdf') || isempty(dresp(i).cdf)
+%  use minus/plus integer standard deviations
+        sdvect=[-4 -3 -2 -1 0 1 2 3 4];
+        dresp(i).cdf(:,2)=normcdf_issm(sdvect,0,1);
+        dresp(i).cdf(:,1)=norminv_issm(dresp(i).cdf(:,2),...
+                                       dresp(i).mean,dresp(i).stddev);
+        display('Using integer standard deviations for percentages.')
+
+        if ~exist('lstr','var') || isempty(lstr)
+            lstr=cell(1,size(dresp(i).cdf,1));
+            for j=1:size(dresp(i).cdf,1)
+                if sdvect(j)
+                    lstr{j}=sprintf('mu %+d sigma',sdvect(j));
+                else
+                    lstr{j}='mu';
+                end
+            end
+        end
+    end
+end
+
+%%  assemble the data into a matrix and calculate the increments
+
+descr=cell (1,0);
+lcdfr=zeros(1,length(dresp));
+for i=1:length(dresp)
+    lcdfr(i)=size(dresp(i).cdf,1);
+end
+cdfr=zeros(0,max(lcdfr));
+
+%  fill in the cdf data
+
+for i=1:length(dresp)
+    if ~isempty(dresp(i).cdf)
+        descr(end+1)=cellstr([dresp(i).descriptor]);
+        cdfr(end+1,:)=dresp(i).cdf(:,1);
+        if isfield(dresp(i),'mean'  ) && ~isempty(dresp(i).mean  ) && ...
+           isfield(dresp(i),'stddev') && ~isempty(dresp(i).stddev)
+            descr(end+1)=cellstr([dresp(i).descriptor ' norm']);
+            cdfr(end+1,:)=norminv_issm(dresp(i).cdf(:,2),dresp(i).mean,dresp(i).stddev);
+        end
+        if isfield(dresp(i),'meanci'  ) && ~isempty(dresp(i).meanci  ) && ...
+           isfield(dresp(i),'stddevci') && ~isempty(dresp(i).stddevci)
+            descr(end+1)=cellstr([dresp(i).descriptor ' norm-+']);
+            descr(end+1)=cellstr([dresp(i).descriptor ' norm--']);
+            descr(end+1)=cellstr([dresp(i).descriptor ' norm+-']);
+            descr(end+1)=cellstr([dresp(i).descriptor ' norm++']);
+            cdfr(end+1,:)=norminv_issm(dresp(i).cdf(:,2),dresp(i).meanci(1),dresp(i).stddevci(2));
+            cdfr(end+1,:)=norminv_issm(dresp(i).cdf(:,2),dresp(i).meanci(1),dresp(i).stddevci(1));
+            cdfr(end+1,:)=norminv_issm(dresp(i).cdf(:,2),dresp(i).meanci(2),dresp(i).stddevci(1));
+            cdfr(end+1,:)=norminv_issm(dresp(i).cdf(:,2),dresp(i).meanci(2),dresp(i).stddevci(2));
+        end
+    end
+end
+
+%  calculate the increments
+
+for i=1:size(cdfr,1)
+    for j=find(cdfr(i,:),1,'last'):-1:2
+        cdfr(i,j)=cdfr(i,j)-cdfr(i,j-1);
+    end
+end
+
+%%  draw the stacked bar plot
+
+%  if there's only one row, Matlab 7.5 interprets it as a column,
+%  so add an extra row, then reduce xlim
+
+if length(descr) == 1
+    cdfr=[cdfr; cdfr];
+end
+
+figure
+hl1=bar(cdfr,'stacked');
+%  set barseries properties for lowest value
+whitebg('white')
+set(hl1(1),'FaceColor','white')
+set(hl1(1),'Visible','off')
+
+ax1=gca;
+if length(descr) == 1
+    set(ax1,'xlim',[0.5 1.5])
+end
+
+ylim('auto')
+[ylims]=ylim;
+if exist('ymin','var')
+    ylims(1)=ymin;
+end
+if exist('ymax','var')
+    ylims(2)=ymax;
+end
+ylim(ylims)
+
+set(ax1,'xtick',1:length(descr))
+set(ax1,'xticklabel',descr)
+if exist('xtlrot','var')
+    htl=rotateticklabel(ax1,xtlrot);
+    tlext=zeros(length(htl),4);
+    for i=1:length(htl)
+        tlext(i,:)=get(htl(i),'Extent');
+    end
+end
+
+%  add the annotation
+
+title('Response Levels for Specified Probabilities (PMA)');
+xlabel('Response');
+if exist('xtlrot','var')
+    xlext=get(get(ax1,'xlabel'),'Extent');
+    nskip=ceil(max(tlext(:,4))/xlext(4));
+    xlabel(cellstr([repmat('        ',nskip,1);'Response']));
+    clear nskip xlext tlext
+end
+ylabel('Response Level');
+
+if ~exist('lstr','var') || isempty(lstr)
+    lstr=cell(1,max(lcdfr));
+    for i=1:max(lcdfr)
+        lstr(i)=cellstr(sprintf('%g%%',...
+            100*dresp(find(lcdfr == max(lcdfr),1,'first')).cdf(i,2)));
+    end
+    if ~isempty(find(lcdfr < max(lcdfr),1,'first'))
+        warning('Variable number of probabilities for responses.');
+    end
+end
+
+hleg1=legend(ax1,lstr,'Location','EastOutside',...
+             'Orientation','vertical','Interpreter','none');
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_rvsv_line.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_rvsv_line.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_rvsv_line.m	(revision 27955)
@@ -0,0 +1,265 @@
+%
+%  plot line plots of responses vs. variables.
+%
+%  []=plot_rvsv_line(dvar       ,dresp      ,params)
+%  []=plot_rvsv_line(dvar ,descv,dresp,descr,params)
+%  []=plot_rvsv_line(sampv,descv,sampr,descr,params)
+%
+%  where the required input is:
+%    dvar          (structure array, variables)
+%      or
+%    dvar          (structure array, variables)
+%    descv         (cell array, list of variable descriptions desired)
+%      or
+%    sampv         (double array, lists of variable samples)
+%    descv         (cell array, list of variable descriptions)
+%
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of response samples)
+%    descr         (cell array, list of response descriptions)
+%
+%  the required fields of dvar and dresp are:
+%    descriptor    (char, description)
+%    sample        (double vector, list of samples)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    nplotr        (numeric, number of plot rows)
+%    nplotc        (numeric, number of plot columns)
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%    yscat         (char, 'off' to turn off y-axis scattergram)
+%
+%  for each variable/response combination in the input array, this
+%  function plots a line plot.  all of the variables and responses
+%  are plotted on the same axes, if nplotr and nplotc are not
+%  specified, so some scaling might otherwise be desired.
+%
+%  dvar and dresp data would typically be contained in the dakota
+%  tabular output file from a sampling or parametric analysis, and
+%  read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_rvsv_line(varargin)
+
+if ~nargin
+    help plot_rvsv_line
+    return
+end
+
+%%  process input data and assemble into matrices as needed
+
+%  variables
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dvar=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dvar=struc_desc(dvar,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descv=cell (1,length(dvar));
+    lsamp=zeros(1,length(dvar));
+    for i=1:length(dvar)
+        lsamp(i)=length(dvar(i).sample);
+    end
+    sampv=zeros(max(lsamp),length(dvar));
+    sampv(:,:)=NaN;
+
+    for i=1:length(dvar)
+        descv(i)=cellstr(dvar(i).descriptor);
+        sampv(1:lsamp(i),i)=dvar(i).sample;
+    end
+else
+    sampv=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descv=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descv=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descv=cell(1,size(sampv,2));
+    end
+end
+
+for i=1:length(descv)
+    if isempty(descv{i})
+        descv(i)={['var_' i]};
+    end
+end
+
+%  responses
+
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lsamp=zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lsamp(i)=length(dresp(i).sample);
+    end
+    sampr=zeros(max(lsamp),length(dresp));
+    sampr(:,:)=NaN;
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        sampr(1:lsamp(i),i)=dresp(i).sample;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1,size(sampr,2));
+    end
+end
+
+for i=1:length(descr)
+    if isempty(descr{i})
+        descr(i)={['resp_' num2str(i)]};
+    end
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'nplotr','nplotc',...
+                 'ymin','ymax','yscat'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+if     ~exist('nplotr','var') && ~exist('nplotc','var')
+    nplotr=1;
+    nplotc=1;
+elseif ~exist('nplotr','var')
+    nplotr=ceil(size(sampr,2)*size(sampv,2)/nplotc);
+elseif ~exist('nplotc','var')
+    nplotc=ceil(size(sampr,2)*size(sampv,2)/nplotr);
+end
+
+%%  filter, sort, and plot the data
+
+%  while it would be preferable for the outer loop to be responses,
+%  it is more efficient for the outer loop to be variables
+
+figure
+haxes=[];
+hplot=[];
+cdesc={};
+hscat=[];
+
+iplot=0;
+
+for ivar=1:size(sampv,2)
+    [vval,indxv,indxvi]=unique(sampv(:,ivar),'first');
+    indxv2=setdiff(1:size(sampv,1),indxv);
+
+    for iresp=1:size(sampr,2)
+
+%  initialize the subplot
+
+        if (ivar*iresp == 1) || ...
+           (nplotr*nplotc > 1)
+            iplot=iplot+1;
+            haxes(end+1)=subplot(nplotr,nplotc,iplot);
+            hold all
+        end
+
+        hplot(end+1)=plot   (sampv(indxv ,ivar),sampr(indxv ,iresp),'-x');
+        cdesc(end+1)={[descr{iresp} ' wrt ' descv{ivar}]};
+        if ~exist('yscat','var') || ...
+           (~strncmpi(yscat,'off',3) && ~strncmpi(yscat,'n',1))
+            hscat(end+1)=scatter(sampv(indxv2,ivar),sampr(indxv2,iresp),'+k');
+%  see "controlling legends" in Matlab on-line docs
+%         cdesc(end+1)={['constant ' descv{ivar}]};
+            set(get(get(hscat(end),'Annotation'),'LegendInformation'),...
+                'IconDisplayStyle','off'); % Exclude line from legend
+        end
+
+%  add the annotation
+
+        if (ivar*iresp == size(sampv,2)*size(sampr,2)) || ...
+           (nplotr*nplotc > 1)
+            hold off
+
+            ylim('auto')
+            [ylims]=ylim;
+            if exist('ymin','var')
+                ylims(1)=ymin;
+            end
+            if exist('ymax','var')
+                ylims(2)=ymax;
+            end
+            ylim(ylims)
+
+            if (size(sampv,2) == 1) || (nplotr*nplotc > 1)
+                xlabc=descv{ivar};
+            else
+                xlabc='Variables';
+            end
+            if (size(sampr,2) == 1) || (nplotr*nplotc > 1)
+                ylabc=descr{iresp};
+            else
+                ylabc='Responses';
+            end
+            title([ylabc ' vs. ' xlabc],'Interpreter','none');
+            xlabel(xlabc,'Interpreter','none');
+            ylabel(ylabc,'Interpreter','none');
+
+            if (nplotr*nplotc == 1) && (size(sampv,2)*size(sampr,2) > 1)
+                legend(cdesc,'Location','EastOutside','Interpreter','none');
+            end
+        end
+    end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_rvsv_scat3.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_rvsv_scat3.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_rvsv_scat3.m	(revision 27955)
@@ -0,0 +1,281 @@
+%
+%  plot 3-d scatter plots of variables vs. responses.
+%
+%  []=plot_rvsv_scat3(dvar       ,dresp      ,params)
+%  []=plot_rvsv_scat3(dvar ,descv,dresp,descr,params)
+%  []=plot_rvsv_scat3(sampv,descv,sampr,descr,params)
+%
+%  where the required input is:
+%    dvar          (structure array, variables)
+%      or
+%    dvar          (structure array, variables)
+%    descv         (cell array, list of variable descriptions desired)
+%      or
+%    sampv         (double array, lists of variable samples)
+%    descv         (cell array, list of variable descriptions)
+%
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of response samples)
+%    descr         (cell array, list of response descriptions)
+%
+%  the required fields of dvar and dresp are:
+%    descriptor    (char, description)
+%    sample        (double vector, list of samples)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    nplotr        (numeric, number of plot rows)
+%    nplotc        (numeric, number of plot columns)
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%    zmin          (numeric, minimum of z-axis)
+%    zmax          (numeric, maximum of z-axis)
+%    cmin          (numeric, minimum of colorbar)
+%    cmax          (numeric, maximum of colorbar)
+%    smark         (numeric, size of markers)
+%
+%  for each response in the input array, this function plots a 3-d
+%  scatter plot.  there should be no more than three variables.
+%  each response will be in a separate scatter plot; hence the
+%  need for nplotr and nplotc.
+%
+%  dvar and dresp data would typically be contained in the dakota
+%  tabular output file from a sampling or parametric analysis, and
+%  read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_rvsv_scat3(varargin)
+
+if ~nargin
+    help plot_rvsv_scat3
+    return
+end
+
+%%  process input data and assemble into matrices as needed
+
+iarg=1;
+
+%  variables
+
+if isstruct(varargin{iarg})
+    dvar=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dvar=struc_desc(dvar,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descv=cell (1,length(dvar));
+    lsamp=zeros(1,length(dvar));
+    for i=1:length(dvar)
+        lsamp(i)=length(dvar(i).sample);
+    end
+    sampv=zeros(max(lsamp),length(dvar));
+    sampv(:,:)=NaN;
+
+    for i=1:length(dvar)
+        descv(i)=cellstr(dvar(i).descriptor);
+        sampv(1:lsamp(i),i)=dvar(i).sample;
+    end
+else
+    sampv=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descv=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descv=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descv=cell(1,size(sampv,2));
+    end
+end
+
+for i=1:length(descv)
+    if isempty(descv{i})
+        descv(i)={['var_' i]};
+    end
+end
+
+if (size(sampv,2) > 3)
+    error('No more than three variables required for 3-d scatter plot.');
+end
+
+%  responses
+
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lsamp=zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lsamp(i)=length(dresp(i).sample);
+    end
+    sampr=zeros(max(lsamp),length(dresp));
+    sampr(:,:)=NaN;
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        sampr(1:lsamp(i),i)=dresp(i).sample;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1,size(sampr,2));
+    end
+end
+
+for i=1:length(descr)
+    if isempty(descr{i})
+        descr(i)={['resp_' num2str(i)]};
+    end
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'nplotr','nplotc',...
+                 'ymin','ymax','zmin','zmax',...
+                 'cmin','cmax','smark'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+if     ~exist('nplotr','var') && ~exist('nplotc','var')
+    nplotr=ceil(sqrt(size(sampr,2)));
+    nplotc=ceil(size(sampr,2)/nplotr);
+elseif ~exist('nplotr','var')
+    nplotr=ceil(size(sampr,2)/nplotc);
+elseif ~exist('nplotc','var')
+    nplotc=ceil(size(sampr,2)/nplotr);
+end
+
+if ~exist('smark','var')
+    smark=100;
+end
+
+%%  filter, sort, and plot the data
+
+figure
+haxes =[];
+hscat3=[];
+
+for iresp=1:size(sampr,2)
+
+%  initialize the subplot
+
+    haxes(end+1)=subplot(nplotr,nplotc,iresp);
+    switch size(sampv,2)
+        case 1
+            hscat3(end+1)=scatter (sampv(:,1),sampr(:,iresp),...
+                                   smark,sampr(:,iresp),'filled');
+        case 2
+            hscat3(end+1)=scatter3(sampv(:,1),sampv(:,2),sampr(:,iresp),...
+                                   smark,sampr(:,iresp),'filled');
+        case 3
+            hscat3(end+1)=scatter3(sampv(:,1),sampv(:,2),sampv(:,3),...
+                                   smark,sampr(:,iresp),'filled');
+    end
+
+    ylim('auto')
+    [ylims]=ylim;
+    if exist('ymin','var')
+        ylims(1)=ymin;
+    end
+    if exist('ymax','var')
+        ylims(2)=ymax;
+    end
+    ylim(ylims)
+
+    zlim('auto')
+    [zlims]=zlim;
+    if exist('zmin','var')
+        zlims(1)=zmin;
+    end
+    if exist('zmax','var')
+        zlims(2)=zmax;
+    end
+    zlim(zlims)
+
+%  add the annotation
+
+    switch size(sampv,2)
+        case 1
+            title([descr{iresp} ' wrt ' descv{1}],...
+                  'Interpreter','none');
+            xlabel(descv{1},'Interpreter','none');
+            ylabel(descr{iresp},'Interpreter','none');
+        case 2
+            title([descr{iresp} ' wrt ' descv{1} ' and ' descv{2}],...
+                  'Interpreter','none');
+            xlabel(descv{1},'Interpreter','none');
+            ylabel(descv{2},'Interpreter','none');
+            zlabel(descr{iresp},'Interpreter','none');
+        case 3
+            title([descr{iresp} ' wrt ' descv{1} ' and ' descv{2} ' and ' descv{3}],...
+                  'Interpreter','none');
+            xlabel(descv{1},'Interpreter','none');
+            ylabel(descv{2},'Interpreter','none');
+            zlabel(descv{3},'Interpreter','none');
+    end
+
+    caxis('auto')
+    [cmini,cmaxi]=caxis;
+    if exist('cmin','var')
+        cmini=cmin;
+    end
+    if exist('cmax','var')
+        cmaxi=cmax;
+    end
+    caxis([cmini cmaxi])
+
+    colorbar
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_rvsv_surf.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_rvsv_surf.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_rvsv_surf.m	(revision 27955)
@@ -0,0 +1,248 @@
+%
+%  plot surface plots of variables vs. responses.
+%
+%  []=plot_rvsv_surf(dvar       ,dresp      ,params)
+%  []=plot_rvsv_surf(dvar ,descv,dresp,descr,params)
+%  []=plot_rvsv_surf(sampv,descv,sampr,descr,params)
+%
+%  where the required input is:
+%    dvar          (structure array, variables)
+%      or
+%    dvar          (structure array, variables)
+%    descv         (cell array, list of variable descriptions desired)
+%      or
+%    sampv         (double array, lists of variable samples)
+%    descv         (cell array, list of variable descriptions)
+%
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of response samples)
+%    descr         (cell array, list of response descriptions)
+%
+%  the required fields of dvar and dresp are:
+%    descriptor    (char, description)
+%    sample        (double vector, list of samples)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    nplotr        (numeric, number of plot rows)
+%    nplotc        (numeric, number of plot columns)
+%    zmin          (numeric, minimum of z-axis)
+%    zmax          (numeric, maximum of z-axis)
+%    cmin          (numeric, minimum of colorbar)
+%    cmax          (numeric, maximum of colorbar)
+%
+%  for each response in the input array, this function plots a
+%  surface plot.  there should be two and only two variables.
+%  each response will be in a separate surface plot; hence the
+%  need for nplotr and nplotc.
+%
+%  dvar and dresp data would typically be contained in the dakota
+%  tabular output file from a sampling or parametric analysis, and
+%  read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_rvsv_surf(varargin)
+
+if ~nargin
+    help plot_rvsv_surf
+    return
+end
+
+%%  process input data and assemble into matrices as needed
+
+iarg=1;
+
+%  variables
+
+if isstruct(varargin{iarg})
+    dvar=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dvar=struc_desc(dvar,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descv=cell (1,length(dvar));
+    lsamp=zeros(1,length(dvar));
+    for i=1:length(dvar)
+        lsamp(i)=length(dvar(i).sample);
+    end
+    sampv=zeros(max(lsamp),length(dvar));
+    sampv(:,:)=NaN;
+
+    for i=1:length(dvar)
+        descv(i)=cellstr(dvar(i).descriptor);
+        sampv(1:lsamp(i),i)=dvar(i).sample;
+    end
+else
+    sampv=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descv=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descv=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descv=cell(1,size(sampv,2));
+    end
+end
+
+for i=1:length(descv)
+    if isempty(descv{i})
+        descv(i)={['var_' i]};
+    end
+end
+
+if (size(sampv,2) ~= 2)
+    error('Two and only two variables required for surface plot.');
+end
+
+%  responses
+
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+
+    descr=cell (1,length(dresp));
+    lsamp=zeros(1,length(dresp));
+    for i=1:length(dresp)
+        lsamp(i)=length(dresp(i).sample);
+    end
+    sampr=zeros(max(lsamp),length(dresp));
+    sampr(:,:)=NaN;
+
+    for i=1:length(dresp)
+        descr(i)=cellstr(dresp(i).descriptor);
+        sampr(1:lsamp(i),i)=dresp(i).sample;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1,size(sampr,2));
+    end
+end
+
+for i=1:length(descr)
+    if isempty(descr{i})
+        descr(i)={['resp_' num2str(i)]};
+    end
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'nplotr','nplotc',...
+                 'zmin','zmax',...
+                 'cmin','cmax'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+if     ~exist('nplotr','var') && ~exist('nplotc','var')
+    nplotr=ceil(sqrt(size(sampr,2)));
+    nplotc=ceil(size(sampr,2)/nplotr);
+elseif ~exist('nplotr','var')
+    nplotr=ceil(size(sampr,2)/nplotc);
+elseif ~exist('nplotc','var')
+    nplotc=ceil(size(sampr,2)/nplotr);
+end
+
+%%  filter, sort, and plot the data
+
+figure
+haxes=[];
+hsurf=[];
+
+[x,ix,ixi]=unique(sampv(:,1),'first');
+[y,iy,iyi]=unique(sampv(:,2),'first');
+
+for iresp=1:size(sampr,2)
+    z=zeros(length(x),length(y));
+    for i=1:size(sampr,1)
+        z(ixi(i),iyi(i))=sampr(i,iresp);
+    end
+
+%  initialize the subplot
+
+    haxes(iresp)=subplot(nplotr,nplotc,iresp);
+%     hsurf(iresp)=surfc(x,y,z,'FaceColor','interp');
+    surfc(x,y,z,'FaceColor','interp');
+
+    zlim('auto')
+    [zlims]=zlim;
+    if exist('zmin','var')
+        zlims(1)=zmin;
+    end
+    if exist('zmax','var')
+        zlims(2)=zmax;
+    end
+    zlim(zlims)
+
+%  add the annotation
+
+    title([descr{iresp} ' wrt ' descv{1} ' and ' descv{2}],...
+          'Interpreter','none');
+    xlabel(descv{1},'Interpreter','none');
+    ylabel(descv{2},'Interpreter','none');
+    zlabel(descr{iresp},'Interpreter','none');
+
+    caxis('auto')
+    [cmini,cmaxi]=caxis;
+    if exist('cmin','var')
+        cmini=cmin;
+    end
+    if exist('cmax','var')
+        cmaxi=cmax;
+    end
+    caxis([cmini cmaxi])
+
+    colorbar
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_sampdist_bars.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_sampdist_bars.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/plot/plot_sampdist_bars.m	(revision 27955)
@@ -0,0 +1,211 @@
+%
+%  plot a stacked bar chart of the sample distributions.
+%
+%  []=plot_sampdist_bars(dresp      ,params)
+%  []=plot_sampdist_bars(dresp,descr,params)
+%  []=plot_sampdist_bars(sampr,descr,params)
+%
+%  where the required input is:
+%    dresp         (structure array, responses)
+%      or
+%    dresp         (structure array, responses)
+%    descr         (cell array, list of response descriptions desired)
+%      or
+%    sampr         (double array, lists of response samples)
+%    descr         (cell array, list of response descriptions)
+%
+%  the required fields of dresp are:
+%    descriptor    (char, description)
+%    sample        (double vector, list of samples)
+%
+%  and the optional fields of dresp are:
+%    min           (double, minimum of sample)
+%    quart1        (double, first quartile of sample)
+%    median        (double, median of sample)
+%    quart3        (double, third quartile of sample)
+%    max           (double, maximum of sample)
+%
+%  the optional input is:
+%    params        (string/numeric, parameter names and values)
+%
+%  where the optional parameters are:
+%    ymin          (numeric, minimum of y-axis)
+%    ymax          (numeric, maximum of y-axis)
+%    xtlrot        (numeric, rotation in degrees of x-tick labels)
+%    lstr          (cell array, legend labels)
+%
+%  for each response in the input array, this function plots
+%  a stacked bar plot of the list of samples, where the bars
+%  are stacked by the four quartiles, and annotates it with
+%  the description.  the quartiles will be calculated from the
+%  samples if they do not already exist.
+%
+%  this data would typically be contained in the dakota tabular
+%  output file and read by dakota_out_parse.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+function []=plot_sampdist_bars(varargin)
+
+if ~nargin
+    help plot_sampdist_bars
+    return
+end
+
+%%  process input data and assemble into dresp as needed
+
+%  responses
+
+iarg=1;
+if isstruct(varargin{iarg})
+    dresp=varargin{iarg};
+    iarg=iarg+1;
+
+%     if iarg <= nargin && (iscell(varargin{iarg}) || ischar(varargin{iarg}))
+    if iarg <= nargin && iscell(varargin{iarg})
+        dresp=struc_desc(dresp,varargin{iarg});
+        iarg=iarg+1;
+    end
+else
+    sampr=varargin{iarg};
+    iarg=iarg+1;
+
+    if     iarg <= nargin && iscell(varargin{iarg})
+        descr=varargin{iarg};
+        iarg=iarg+1;
+%     elseif iarg <= nargin && ischar(varargin{iarg})
+%         descr=cellstr(varargin{iarg});
+%         iarg=iarg+1;
+    else
+        descr=cell(1:size(sampr,2));
+    end
+
+    dresp=struct([]);
+    for i=1:size(sampr,2)
+        dresp(end+1).sample=sampr(:,i);
+        if ~isempty(descr)
+            dresp(i).descriptor=descr{i};
+        else
+            dresp(i).descriptor=['dresp_' num2str(i)];
+        end
+    end
+end
+
+%  parameters
+
+while (iarg <= nargin-1)
+    if ischar(varargin{iarg})
+        if ~isempty(strmatch(varargin{iarg},...
+                {'ymin','ymax','xtlrot','lstr'},...
+                'exact'))
+            eval([varargin{iarg} '=varargin{iarg+1};']);
+            disp([varargin{iarg} '=' any2str(varargin{iarg+1}) ';']);
+        else
+            warning([varargin{iarg} '=' any2str(varargin{iarg+1}) ' is not recognized.']);
+        end
+    else
+        error(['''' any2str(varargin{iarg}) ''' is not a parameter name.']);
+    end
+    iarg=iarg+2;
+end
+
+%%  calculate any missing information (noting that dresp is local)
+
+if ~isfield(dresp,'min')    || ~isfield(dresp,'quart1') || ...
+   ~isfield(dresp,'median') || ~isfield(dresp,'quart3') || ...
+   ~isfield(dresp,'max')
+    for i=1:length(dresp)
+        dresp(i).min   =min         (dresp(i).sample);
+        dresp(i).quart1=prctile_issm(dresp(i).sample,25);
+        dresp(i).median=median      (dresp(i).sample);
+        dresp(i).quart3=prctile_issm(dresp(i).sample,75);
+        dresp(i).max   =max         (dresp(i).sample);
+    end
+end
+
+%%  assemble the data into a matrix and calculate the increments
+
+descr=cell (1,length(dresp));
+data =zeros(length(dresp),5);
+
+for i=1:length(dresp)
+    descr(i)=cellstr(dresp(i).descriptor);
+    data(i,1)=dresp(i).min;
+    data(i,2)=dresp(i).quart1-dresp(i).min;
+    data(i,3)=dresp(i).median-dresp(i).quart1;
+    data(i,4)=dresp(i).quart3-dresp(i).median;
+    data(i,5)=dresp(i).max   -dresp(i).quart3;
+end
+
+%%  draw the stacked bar plot
+
+%  if there's only one row, Matlab 7.5 interprets it as a column,
+%  so add an extra row, then reduce xlim
+
+if length(dresp) == 1
+    data=[data; data];
+end
+
+figure
+hl1=bar(data,'stacked');
+%  set barseries properties for lowest value
+whitebg('white')
+set(hl1(1),'FaceColor','white')
+set(hl1(1),'Visible','off')
+
+ax1=gca;
+if length(dresp) == 1
+    set(ax1,'xlim',[0.5 1.5])
+end
+
+ylim('auto')
+[ylims]=ylim;
+if exist('ymin','var')
+    ylims(1)=ymin;
+end
+if exist('ymax','var')
+    ylims(2)=ymax;
+end
+ylim(ylims)
+
+set(ax1,'xtick',1:length(descr))
+set(ax1,'xticklabel',descr)
+if exist('xtlrot','var')
+    htl=rotateticklabel(ax1,xtlrot);
+    tlext=zeros(length(htl),4);
+    for i=1:length(htl)
+        tlext(i,:)=get(htl(i),'Extent');
+    end
+end
+
+%  add the annotation
+
+title('Sample Distributions of Responses')
+xlabel('Response')
+if exist('xtlrot','var')
+    xlext=get(get(ax1,'xlabel'),'Extent');
+    nskip=ceil(max(tlext(:,4))/xlext(4));
+    xlabel(cellstr([repmat('        ',nskip,1);'Response']));
+    clear nskip xlext tlext
+end
+ylabel('Value')
+
+if ~exist('lstr','var') || isempty(lstr)
+    lstr={'minimum' 'quartile 1' 'median' 'quartile 3' 'maximum'};
+end
+
+hleg1=legend(ax1,lstr,'Location','EastOutside',...
+             'Orientation','vertical','Interpreter','none');
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/postqmu.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/postqmu.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/postqmu.m	(revision 27955)
@@ -0,0 +1,64 @@
+function md=postqmu(md)
+%POSTQMU - Deal with Dakota output results in files
+%
+%   Usage:
+%      md = postqmu(md)
+
+%  check to see if dakota returned errors in the err file
+qmuerrfile=[md.miscellaneous.name '.qmu.err'];
+
+if exist(qmuerrfile,'file')
+   fide=fopen(qmuerrfile,'r');
+   fline=fgetl(fide);
+   if ischar(fline)
+       while ischar(fline)
+           disp(sprintf('%s',fline));
+           fline=fgetl(fide);
+       end
+       warning(['Dakota returned error in ''' qmuerrfile ''' file. QMU directory retained.'])
+   end
+   status=fclose(fide);
+end
+
+%parse inputs and results from dakota
+qmuinfile=[md.miscellaneous.name '.qmu.in'];
+qmuoutfile=[md.miscellaneous.name '.qmu.out'];
+[method,dresp_out,scm,pcm,srcm,prcm]=dakota_out_parse(qmuoutfile);
+dakotaresults.dresp_out=dresp_out;
+dakotaresults.scm      =scm;
+dakotaresults.pcm      =pcm;
+dakotaresults.srcm     =srcm;
+dakotaresults.prcm     =prcm;
+
+if exist('dakota_tabular.dat','file')
+    [method,dresp_dat                  ]=dakota_out_parse('dakota_tabular.dat');
+    dakotaresults.dresp_dat=dresp_dat;
+end
+
+if md.qmu.output & strcmpi(md.qmu.statistics.method(1).name,'None'),
+	if strcmpi(md.qmu.method.method,'nond_sampling'),
+		dakotaresults.modelresults={};
+		md2=md;
+		md2.qmu.isdakota=0;
+		for i=1:md2.qmu.method.params.samples,
+			disp(['Reading qmu file ' md2.miscellaneous.name '.outbin.' num2str(i)]);
+			md2=loadresultsfromdisk(md2,[md2.miscellaneous.name '.outbin.' num2str(i)]);
+			dakotaresults.modelresults{end+1}=md2.results;
+		end
+	end
+end
+if ~strcmpi(md.qmu.statistics.method(1).name,'None'),
+	md.qmu.isdakota=0;
+	md=loadresultsfromdisk(md,[md.miscellaneous.name,'.stats']);
+	md.qmu.isdakota=1;
+end
+
+%put dakotaresults in their right location.
+md.results.dakota=dakotaresults;
+
+%  move all the individual function evalutations into zip files
+if ~md.qmu.isdakota,
+	system('zip -mq params.in.zip params.in.[1-9]*');
+	system('zip -mq results.out.zip results.out.[1-9]*');
+	system('zip -mq matlab.out.zip matlab*.out.[1-9]*');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/postqmu.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/postqmu.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/postqmu.py	(revision 27955)
@@ -0,0 +1,78 @@
+from copy import deepcopy
+from os import getpid, stat
+from os.path import isfile
+from subprocess import call
+
+from dakota_out_parse import *
+from helpers import *
+import loadresultsfromdisk as loadresultsfromdisk # There is a name conflict somewhere
+from results import results, resultsdakota, solution
+
+
+def postqmu(md):
+    """POSTQMU - Deal with Dakota output results in files
+    
+    Usage:
+        md = postqmu(md)
+
+    TODO:
+    - Add checks to Popen
+    """
+
+    # check to see if dakota returned errors in the err file
+    qmuerrfile = str(md.miscellaneous.name) + '.qmu.err'
+
+    if isfile(qmuerrfile) and stat(qmuerrfile).st_size > 0:
+        with open(qmuerrfile, 'r') as fide:
+            fline = fide.read()
+            print(fline)
+
+        raise RuntimeError('Dakota returned error in ' + str(qmuerrfile) + ' file.')
+
+    # parse inputs and results from dakota
+    qmuinfile = str(md.miscellaneous.name) + '.qmu.in'
+    qmuoutfile = str(md.miscellaneous.name) + '.qmu.out'
+    [method, dresp_out, scm, pcm, srcm, prcm] = dakota_out_parse(qmuoutfile)
+    dakotaresults = resultsdakota()
+    dakotaresults.dresp_out = dresp_out
+    dakotaresults.scm       = scm
+    dakotaresults.pcm       = pcm
+    dakotaresults.srcm      = srcm
+    dakotaresults.prcm      = prcm
+
+    if isfile('dakota_tabular.dat'):
+        # only need a subset of the outputs; dakota_out_parse handles .dat seperately
+        [method, dresp_dat, _, _, _, _] = dakota_out_parse('dakota_tabular.dat')
+        dakotaresults.dresp_dat = dresp_dat
+
+    if md.qmu.output and md.qmu.statistics.method[0]['name'] == 'None':
+        if md.qmu.method.method == 'nond_sampling':
+            dakotaresults.modelresults = []
+            md2 = deepcopy(md)
+            md2.results = results()
+            md2.qmu.isdakota = 0
+            for i in range(md2.qmu.method.params.samples):
+                outbin_name = '{}.outbin.{}'.format(md2.miscellaneous.name, (i + 1))
+                print('Reading qmu file {}'.format(outbin_name))
+                md2 = loadresultsfromdisk.loadresultsfromdisk(md2, outbin_name)
+                dakotaresults.modelresults.append(deepcopy(md2.results))
+            del md2
+
+    if md.qmu.statistics.method[0]['name'] != 'None':
+        md.qmu.isdakota = 0
+        md = loadresultsfromdisk.loadresultsfromdisk(md, '{}.stats'.format(md.miscellaneous.name))
+        md.qmu.isdakota = 1
+
+    # put dakotaresults in their right location.
+    md.results.dakota = deepcopy(dakotaresults)
+
+    # move all the individual function evalutations into zip files
+    if not md.qmu.isdakota:
+        subproc_args = 'zip -mq params.in.zip params.in.[1-9]*'
+        call(subproc_args, shell=True)
+        subproc_args = 'zip -mq results.out.zip results.out.[1-9]*'
+        call(subproc_args, shell=True)
+        subproc_args = 'zip -mq matlab.out.zip matlab*.out.[1-9]*'
+        call(subproc_args, shell=True)
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/preqmu.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/preqmu.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/preqmu.m	(revision 27955)
@@ -0,0 +1,146 @@
+function md=preqmu(md,options)
+%QMU - apply Quantification of Margins and Uncertainties techniques 
+%      to a solution sequence (like stressbalance.m, progonstic.m, etc ...), 
+%      using the Dakota software from Sandia.
+%
+%   options come from the solve.m routine. They can include Dakota options:
+%
+%       qmufile: input file for Dakota
+%       ivar: selection number for variables input (if several are specified in variables)
+%       iresp: same thing for response functions
+%       imethod: same thing for methods
+%       iparams: same thing for params
+
+disp('preprocessing dakota inputs');
+qmufile   = getfieldvalue(options,'qmufile','qmu');
+ivar      = getfieldvalue(options,'ivar',1);
+iresp     = getfieldvalue(options,'iresp',1);
+imethod   = getfieldvalue(options,'imethod',1);
+iparams   = getfieldvalue(options,'iparams',1);
+
+%when running in library mode, the in file needs to be called md.miscellaneous.name.qmu.in
+qmufile=[md.miscellaneous.name];
+
+%retrieve variables and resposnes for this particular analysis.
+variables=md.qmu.variables(ivar);
+responses=md.qmu.responses(iresp);
+
+%expand variables and responses
+variables=expandvariables(md,variables);
+responses=expandresponses(md,responses);
+
+%go through variables and responses, and check they don't have more than the number of partitions. Also determine numvariables and numresponses
+numvariables=0;
+variable_fieldnames=fieldnames(variables);
+for i=1:length(variable_fieldnames),
+	field_name=variable_fieldnames{i};
+	fieldvariables=variables.(field_name);
+	for j=1:numel(fieldvariables)
+		if strncmpi(fieldvariables(j).descriptor,'scaled_',7),
+			npart=qmupart2npart(fieldvariables(j).partition);
+			nt=fieldvariables(j).nsteps;
+			if nt==1,
+				if str2int(fieldvariables(j).descriptor,'last')>npart,
+					error('preqmu error message: one of the expanded variables has more values than the number of partitions ');
+				end
+			end
+		end
+	end
+	numvariables=numvariables+numel(variables.(field_name));
+end
+
+numresponses=0;
+response_fieldnames=fieldnames(responses);
+for i=1:length(response_fieldnames),
+	field_name=response_fieldnames{i};
+	fieldresponses=responses.(field_name);
+	for j=1:numel(fieldresponses)
+		if strncmpi(fieldresponses(j).descriptor,'scaled_',7),
+			npart=partition_npart(fieldresponses(j).partition);
+			if str2int(fieldresponses(j).descriptor,'last')>npart,
+				error('preqmu error message: one of the expanded responses has more values than the number of partitions');
+			end
+		end
+	end
+	numresponses=numresponses+numel(responses.(field_name));
+end
+
+%create in file for dakota
+dakota_in_data(md.qmu.method(imethod),variables,responses,md.qmu.params(iparams),qmufile,md.qmu.correlation_matrix);
+
+%build a list of variables and responses descriptors. the list is not expanded.
+variabledescriptors={};
+variable_fieldnames=fieldnames(md.qmu.variables(ivar));
+for i=1:length(variable_fieldnames),
+	field_name=variable_fieldnames{i};
+	fieldvariables=md.qmu.variables(ivar).(field_name);
+	for j=1:numel(fieldvariables)
+		variabledescriptors{end+1}=fieldvariables(j).descriptor;
+	end
+end
+
+responsedescriptors={};
+response_fieldnames=fieldnames(md.qmu.responses(iresp));
+for i=1:length(response_fieldnames),
+	field_name=response_fieldnames{i};
+	fieldresponses=md.qmu.responses(iresp).(field_name);
+	for j=1:numel(fieldresponses)
+		responsedescriptors{end+1}=fieldresponses(j).descriptor;
+	end
+end
+
+%build a MatArray of variable partitions: 
+variablepartitions={};
+variablepartitions_npart=[];
+variablepartitions_nt=[];
+variable_fieldnames=fieldnames(md.qmu.variables(ivar));
+for i=1:length(variable_fieldnames),
+	field_name=variable_fieldnames{i};
+	fieldvariable=md.qmu.variables(ivar).(field_name);
+	if fieldvariable.isscaled() | fieldvariable.isdistributed();
+		variablepartitions{end+1}=fieldvariable.partition;
+		variablepartitions_npart(end+1)=qmupart2npart(fieldvariable.partition);
+		if isprop(fieldvariable,'nsteps'),
+			variablepartitions_nt(end+1)=fieldvariable.nsteps;
+		else
+			variablepartitions_nt(end+1)=1;
+		end
+	else
+		variablepartitions{end+1}=[];
+		variablepartitions_npart(end+1)=0;
+		variablepartitions_nt(end+1)=1;
+	end
+end
+
+%build a MatArray of response partitions: 
+responsepartitions={};
+responsepartitions_npart=[];
+response_fieldnames=fieldnames(md.qmu.responses(iresp));
+for i=1:length(response_fieldnames),
+	field_name=response_fieldnames{i};
+	fieldresponse=md.qmu.responses(iresp).(field_name);
+	if fieldresponse.isscaled();
+		responsepartitions{end+1}=fieldresponse.partition;
+		responsepartitions_npart(end+1)=qmupart2npart(fieldresponse.partition);
+	else
+		responsepartitions{end+1}=[];
+		responsepartitions_npart(end+1)=0;
+	end
+end
+
+
+%register the fields that will be needed by the Qmu model.
+md.qmu.numberofresponses=numresponses;
+md.qmu.variabledescriptors=variabledescriptors;
+md.qmu.variablepartitions=variablepartitions;
+md.qmu.variablepartitions_npart=variablepartitions_npart;
+md.qmu.variablepartitions_nt=variablepartitions_nt;
+md.qmu.responsedescriptors=responsedescriptors;
+md.qmu.responsepartitions=responsepartitions;
+md.qmu.responsepartitions_npart=responsepartitions_npart;
+
+
+%now, we have to provide all the info necessary for the solutions to compute the responses. For ex, if mass_flux 
+%is a response, we need a profile of points.  For a misfit, we need the observed velocity, etc ...
+md=process_qmu_response_data(md);
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/preqmu.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/preqmu.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/preqmu.py	(revision 27955)
@@ -0,0 +1,193 @@
+import os
+
+from dakota_in_data import *
+from expandresponses import *
+from expandvariables import *
+from helpers import *
+from MatlabFuncs import *
+from process_qmu_response_data import *
+from qmupart2npart import qmupart2npart
+
+
+def preqmu(md, options):
+    """PREQMU - apply Quantification of Margins and Uncertainties techniques
+    to a solution sequence (like stressbalance.py, progonstic.py, etc ...),
+    using the Dakota software from Sandia.
+
+    Options come from the solve.py routine. They can include Dakota options:
+
+        qmufile : input file for Dakota
+        ivap    : <currently unimplemented>
+        iresp   : <currently unimplemented>
+        imethod : <currently unimplemented>
+        iparams : <currently unimplemented>
+        ivar    : selection number for variables input (if several are specified in variables)
+        iresp   : same thing for response functions
+        imethod : same thing for methods
+        iparams : same thing for params
+    """
+
+    print('preprocessing dakota inputs')
+    qmufile = options.getfieldvalue('qmufile', 'qmu')
+    # qmufile cannot be changed unless ????script.sh is also changed
+    options.addfielddefault('ivar', 0)
+    options.addfielddefault('iresp', 0)
+    options.addfielddefault('imethod', 0)
+    options.addfielddefault('iparams', 0)
+
+    # When running in library mode, the in file needs to be called md.miscellaneous.name.qmu.in
+    qmufile = md.miscellaneous.name
+
+    # Retrieve variables and resposnes for this particular analysis.
+    #print type(md.qmu.variables)
+    #print md.qmu.variables.__dict__
+    # Print ivar
+    variables = md.qmu.variables  #[ivar]
+    responses = md.qmu.responses  #[iresp]
+
+    # Expand variables and responses
+    #print variables.__dict__
+    #print responses.__dict__
+    variables = expandvariables(md, variables)
+    responses = expandresponses(md, responses)
+
+    # Go through variables and responses, and check they don't have more than
+    # md.qmu.numberofpartitions values. Also determine numvariables and 
+    # numresponses
+    #{{{
+    numvariables = 0
+    variable_fieldnames = fieldnames(variables)
+    for i in range(len(variable_fieldnames)):
+        field_name = variable_fieldnames[i]
+        fieldvariables = vars(variables)[field_name]
+        for j in range(np.size(fieldvariables)):
+            if strncmpi(fieldvariables[j].descriptor, 'scaled_', 7):
+                npart = qmupart2npart(fieldvariables[j].partition)
+                nt = fieldvariables[j].nsteps
+                if nt == 1:
+                    if str2int(fieldvariables[j].descriptor, 'last') > npart:
+                        raise RuntimeError('preqmu error message: one of the expanded variables has more values than the number of partitions')
+        numvariables = numvariables + np.size(vars(variables)[field_name])
+
+    numresponses = 0
+    response_fieldnames = fieldnames(responses)
+    for i in range(len(response_fieldnames)):
+        field_name = response_fieldnames[i]
+        fieldresponses = vars(responses)[field_name]
+        for j in range(np.size(fieldresponses)):
+            if strncmpi(fieldresponses[j].descriptor, 'scaled_', 7):
+                npart = partition_npart(fieldresponses[j].partition)
+                if str2int(fieldresponses[j].descriptor, 'last') > npart:
+                    raise RuntimeError('preqmu error message: one of the expanded responses has more values than the number of partitions')
+        numresponses = numresponses + np.size(vars(responses)[field_name])
+    # }}}
+
+    # Create in file for Dakota
+    #dakota_in_data(md.qmu.method[imethod], variables, responses, md.qmu.params[iparams], qmufile)
+    dakota_in_data(md.qmu.method, variables, responses, md.qmu.params, qmufile)
+
+    # Build a list of variables and responses descriptors. the list is not expanded.
+    #{{{
+    variabledescriptors = []
+    # variable_fieldnames = fieldnames(md.qmu.variables[ivar])
+    variable_fieldnames = fieldnames(md.qmu.variables)
+    for i in range(len(variable_fieldnames)):
+        field_name = variable_fieldnames[i]
+    #fieldvariables = vars(md.qmu.variables[ivar])[field_name]
+        fieldvariables = vars(md.qmu.variables)[field_name]
+        if type(fieldvariables) in [list, np.ndarray]:
+            for j in range(np.size(fieldvariables)):
+                variabledescriptors.append(fieldvariables[j].descriptor)
+        else:
+            variabledescriptors.append(fieldvariables.descriptor)
+
+    responsedescriptors = []
+    # response_fieldnames = fieldnames(md.qmu.responses[iresp])
+    response_fieldnames = fieldnames(md.qmu.responses)
+    for i in range(len(response_fieldnames)):
+        field_name = response_fieldnames[i]
+    #fieldresponses = vars(md.qmu.responses[iresp])[field_name]
+        fieldresponses = vars(md.qmu.responses)[field_name]
+        if type(fieldresponses) in [list, np.ndarray]:
+            for j in range(np.size(fieldresponses)):
+                responsedescriptors.append(fieldresponses[j].descriptor)
+        else:
+            responsedescriptors.append(fieldresponses.descriptor)
+    # }}}
+
+    # Build a list of variable partitions
+    variablepartitions = []
+    variablepartitions_npart = []
+    variablepartitions_nt = []
+    variable_fieldnames = fieldnames(md.qmu.variables)
+    for i in range(len(variable_fieldnames)):
+        field_name = variable_fieldnames[i]
+        fieldvariable = vars(md.qmu.variables)[field_name]
+        if type(fieldvariable) in [list, np.ndarray]:
+            for j in range(np.size(fieldvariable)):
+                if fieldvariable[j].isscaled() or fieldvariable[j].isdistributed():
+                    variablepartitions.append(fieldvariable[j].partition)
+                    variablepartitions_npart.append(qmupart2npart(fieldvariable[j].partition))
+                    if hasattr(fieldvariable[j], 'nsteps'):
+                        variablepartitions_nt.append(fieldvariable[j].nsteps)
+                    else:
+                        variablepartitions_nt.append(1)
+                else:
+                    variablepartitions.append([])
+                    variablepartitions_npart.append(0)
+                    variablepartitions_nt.append(1)
+        else:
+            if fieldvariable.isscaled():
+                variablepartitions.append(fieldvariable.partition)
+                variablepartitions_npart.append(qmupart2npart(fieldvariable.partition))
+                if hasattr(fieldvariable, 'nsteps'):
+                    variablepartitions_nt.append(fieldvariable.nsteps)
+                else:
+                    variablepartitions_nt.append(1)
+            else:
+                variablepartitions.append([])
+                variablepartitions_npart.append(0)
+                variablepartitions_nt.append(1)
+
+    # Build a list of response partitions
+    responsepartitions = []
+    responsepartitions_npart = np.array([])
+    response_fieldnames = fieldnames(md.qmu.responses)
+    for i in range(len(response_fieldnames)):
+        field_name = response_fieldnames[i]
+        fieldresponse = vars(md.qmu.responses)[field_name]
+        if type(fieldresponses) in [list, np.ndarray]:
+            for j in range(np.size(fieldresponses)):
+                if fieldresponse[j].isscaled():
+                    responsepartitions.append(fieldresponse[j].partition)
+                    responsepartitions_npart = np.append(responsepartitions_npart, qmupart2npart(fieldresponse[j].partition))
+                else:
+                    responsepartitions.append([])
+                    responsepartitions_npart = np.append(responsepartitions_npart, 0)
+        else:
+            if fieldresponse.isscaled():
+                responsepartitions.append(fieldresponse.partition)
+                responsepartitions_npart = np.append(responsepartitions_npart, qmupart2npart(fieldresponse.partition))
+            else:
+                responsepartitions.append([])
+                responsepartitions_npart = np.append(responsepartitions_npart, 0)
+
+    if responsepartitions_npart.shape[0] != 1:
+        responsepartitions_npart = responsepartitions_npart.reshape(1, -1)
+
+    # Register the fields that will be needed by the Qmu model.
+    md.qmu.numberofresponses = numresponses
+    md.qmu.variabledescriptors = variabledescriptors
+    md.qmu.variablepartitions = variablepartitions
+    md.qmu.variablepartitions_npart = variablepartitions_npart
+    md.qmu.variablepartitions_nt = variablepartitions_nt
+    md.qmu.responsedescriptors = responsedescriptors
+    md.qmu.responsepartitions = responsepartitions
+    md.qmu.responsepartitions_npart = responsepartitions_npart
+
+    # Now, we have to provide all the info necessary for the solutions to 
+    # compute the responses. For example, if mass_flux is a response, we need a 
+    # profile of points. For a misfit, we need the observed velocity, etc.
+    md = process_qmu_response_data(md)
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/process_qmu_response_data.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/process_qmu_response_data.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/process_qmu_response_data.m	(revision 27955)
@@ -0,0 +1,48 @@
+function md=process_qmu_response_data(md)
+%PROCESS_QMU_RESPONSE_DATA - process any data necessary for the solutions to process the data. 
+%
+% Usage: md=process_qmu_response_data(md)
+%
+% See also PREQMU, PRESOLVE
+
+%preliminary data
+process_mass_flux_profiles=0;
+
+num_mass_flux=0;
+
+%loop through response descriptors, and act accordingly
+for i=1:numel(md.qmu.responsedescriptors),
+
+	%Do we have to process  mass flux profiles?
+	if strncmpi(md.qmu.responsedescriptors{i},'indexed_MassFlux',16),
+		num_mass_flux=num_mass_flux+1;
+		process_mass_flux_profiles=1;
+	end
+end
+
+%deal with mass flux profiles
+if process_mass_flux_profiles,
+
+	%we need a profile of points on which to compute the mass_flux, is it here? 
+	if isnans(md.qmu.mass_flux_profiles),
+		error('process_qmu_response_data error message: could not find a mass_flux exp profile!');
+	end
+
+	if ~iscell(md.qmu.mass_flux_profiles),
+		error('process_qmu_response_data error message: qmu_mass_flux_profiles field should be a cell array of domain outline names');
+	end
+
+	if isempty(md.qmu.mass_flux_profiles),
+		error('process_qmu_response_data error message: qmu_mass_flux_profiles cannot be empty!');
+	end
+
+	if num_mass_flux~=numel(md.qmu.mass_flux_profiles),
+		error('process_qmu_response_data error message: qmu_mass_flux_profiles should be of the same size as the number of MassFlux responses asked for in the Qmu analysis');
+	end
+
+	%ok, process the domains named in qmu_mass_flux_profiles,  to build a list of segments (MatArray)
+	md.qmu.mass_flux_segments=cell(num_mass_flux,1);
+	for i=1:num_mass_flux,
+		md.qmu.mass_flux_segments{i}=MeshProfileIntersection(md.mesh.elements,md.mesh.x,md.mesh.y,[md.qmu.mass_flux_profile_directory '/' md.qmu.mass_flux_profiles{i}]);
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/process_qmu_response_data.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/process_qmu_response_data.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/process_qmu_response_data.py	(revision 27955)
@@ -0,0 +1,50 @@
+from MatlabFuncs import *
+import numpy as np
+from MeshProfileIntersection import *
+from helpers import empty_nd_list
+
+
+def process_qmu_response_data(md):
+    '''
+PROCESS_QMU_RESPONSE_DATA - process any data necessary for the solutions to process the data.
+
+    Usage: md = process_qmu_response_data(md)
+
+    See also PREQMU, PRESOLVE
+'''
+
+    # preliminary data
+    process_mass_flux_profiles = 0
+    num_mass_flux = 0
+
+    # loop through response descriptors, and act accordingly
+    for i in range(np.size(md.qmu.responsedescriptors)):
+
+        # Do we have to process  mass flux profiles?
+        if strncmpi(md.qmu.responsedescriptors[i], 'indexed_MassFlux', 16):
+            num_mass_flux += 1
+            process_mass_flux_profiles = 1
+
+    # deal with mass flux profiles
+    if process_mass_flux_profiles:
+        # we need a profile of points on which to compute the mass_flux, is it here?
+        if type(md.qmu.mass_flux_profiles) == float and np.isnan(md.qmu.mass_flux_profiles):
+            raise RuntimeError('process_qmu_response_data error message: could not find a mass_flux exp profile!')
+
+        if type(md.qmu.mass_flux_profiles) != list:
+            raise RuntimeError('process_qmu_response_data error message: qmu_mass_flux_profiles field should be a list of domain outline names')
+
+        if np.size(md.qmu.mass_flux_profiles) == 0:
+            raise RuntimeError('process_qmu_response_data error message: qmu_mass_flux_profiles cannot be empty!')
+
+        if num_mass_flux != np.size(md.qmu.mass_flux_profiles):
+            raise RuntimeError('process_qmu_response_data error message: qmu_mass_flux_profiles should be of the same size as the number of MassFlux responses asked for in the Qmu analysis')
+
+    # ok, process the domains named in qmu_mass_flux_profiles,
+    #     to build a list of segments (MatArray)
+        md.qmu.mass_flux_segments = empty_nd_list((num_mass_flux, 1))
+
+        for i in range(num_mass_flux):
+            md.qmu.mass_flux_segments[i] = np.array(MeshProfileIntersection(md.mesh.elements, md.mesh.x, md.mesh.y, md.qmu.mass_flux_profile_directory + '/' + md.qmu.mass_flux_profiles[i])[0])
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmu_correlation.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmu_correlation.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmu_correlation.m	(revision 27955)
@@ -0,0 +1,50 @@
+function factors=qmu_correlation(md,variablename,responsename)
+%QMU_CORRELATION - compute correlation between qmu output and a certain input variable.
+%
+%   Usage:
+%      factors=qmu_correlation(md,variablename,responsename)
+%
+%
+%   Example:
+%      mass_flux_drag_correlation=qmu_correlation(md,'drag','mass_flux');
+
+if ~isfield(md.qmu.results,'dresp_dat'),
+	error('qmu_correlation error message: could not find dresp_dat field in dakota results. you need to run montecarlo before computing correlations');
+end
+
+data=md.qmu.results.dresp_dat;
+
+%go through all the rows and figure which one we are interested in.
+found=0;
+for i=1:numel(data),
+	if strcmpi(data(i).descriptor,responsename),
+		found=i;
+		break;
+	end
+end
+if found==0,
+	error(['qmu_correlation error message: could not find data descriptor for response ' responsename]);
+end
+
+%get the response samples.
+response_samples=data(found).sample;
+
+%now go through variables, and compute correlation coefficient each time: 
+variablenamelength=length(variablename);
+index=[];
+for i=1:numel(data),
+	if strncmpi(variablename,data(i).descriptor,variablenamelength),
+		%this observation is one we are looking for.
+		index=[index;i];
+	end
+end
+
+if isempty(index),
+	error(['qmu_correlation error message: could not find correlation descriptor for variable ' variablename]);
+end
+
+factors=zeros(numel(index),1);
+for i=1:numel(index),
+	matrix=corrcoef(data(index(i)).sample,response_samples);
+	factors(i)=matrix(2,1);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmuisdistributed.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmuisdistributed.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmuisdistributed.m	(revision 27955)
@@ -0,0 +1,11 @@
+function found=qmuisdistribted(string)
+%QMUISDISTRIBTED - figure out if a string is a decriptor with a numerical postfix. Like thickness1, or drag10
+
+%just take last string element, and see if it is numeric.
+last=string(end);
+
+if ((double(last)<=57) & (double(last)>=48)),
+	found=1;
+else
+	found=0;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmuname.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmuname.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmuname.m	(revision 27955)
@@ -0,0 +1,15 @@
+function md=qmuname(md,varargin)
+%INPUT function md=qmuname(md)
+%Pick up the number from a file, or get it directly from the Dakota structure.  Then modify the name of this 
+%model to reflect this new number.
+
+if nargin==1,
+	fid=fopen('number','r');
+	number=fscanf(fid,'%i',1)
+	fclose(fid);
+else
+	number=varargin{1};
+end
+
+%modify model name by appending number to the name
+md.miscellaneous.name=[md.miscellaneous.name num2str(number)];
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmupart2npart.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmupart2npart.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmupart2npart.m	(revision 27955)
@@ -0,0 +1,3 @@
+function npart=qmupart2npart(vector)
+	%vector is full of -1 (no partition) and 0 to npart. We need to identify npart=
+	npart=max(vector)+1;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmupart2npart.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmupart2npart.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmupart2npart.py	(revision 27955)
@@ -0,0 +1,6 @@
+def qmupart2npart(vector):
+    # Vector is full of -1 (no partition) and 0 to npart. We need to identify 
+    # npart.
+    npart = int(vector.max() + 1) # cast to int as we may have a NumPy floating point type, which cannot be used as an argument to function range (see src/m/qmu/setupdesign/QmuSetupVariables.py)
+
+    return npart
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmuresponse.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmuresponse.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmuresponse.m	(revision 27955)
@@ -0,0 +1,116 @@
+function response=qmuresponse(models,results,processedresults,descriptor)
+%QMURESPONSE - compute response function from model results.
+
+if strcmpi(descriptor,'max_vel'),
+	response=max(processedresults.vel);
+elseif strcmpi(descriptor,'min_vel'),
+	response=min(processedresults.vel);
+elseif strcmpi(descriptor,'max_vx'),
+	response=max(processedresults.vx);
+elseif strcmpi(descriptor,'max_abs_vx'),
+	response=max(abs(processedresults.vx));
+elseif strcmpi(descriptor,'min_vx'),
+	response=min(processedresults.vx);
+elseif strcmpi(descriptor,'max_vy'),
+	response=max(processedresults.vy);
+elseif strcmpi(descriptor,'max_abs_vy'),
+	response=max(abs(processedresults.vy));
+elseif strcmpi(descriptor,'min_vy'),
+	response=min(processedresults.vy);
+elseif strncmpi(descriptor,'mass_flux',9),
+	indx=str2int(descriptor(10:end));
+	if isempty(indx) || ~indx
+		indx=1;
+	end
+
+	%call mass flux module.
+	m_dh=models.dh;
+	m_dhu=models.dhu;
+	m_ds=models.ds;
+	isSIA=m_dhu.parameters.isSIA;
+	isSSA=m_dh.parameters.isSSA;
+	isHO=m_dh.parameters.isHO;
+	isFS=m_ds.parameters.isFS;
+	if isSIA,
+
+% for now, separate all segments from double array for parallel to make cells
+		if (length(m_dhu.parameters.qmu_mass_flux_num_segments) > 1)
+			segments=m_dhu.parameters.qmu_mass_flux_segments;
+			m_dhu.parameters.qmu_mass_flux_segments=cell(size(m_dhu.parameters.qmu_mass_flux_num_segments));
+			ipt=1;
+			for i=1:length(m_dhu.parameters.qmu_mass_flux_num_segments)
+				if m_dhu.parameters.qmu_mass_flux_num_segments(i)
+					m_dhu.parameters.qmu_mass_flux_segments{i}=segments(ipt:ipt+m_dhu.parameters.qmu_mass_flux_num_segments(i)-1,:);
+					ipt=ipt+m_dhu.parameters.qmu_mass_flux_num_segments(i);
+				end
+			end
+			clear segments
+		end
+
+		if isnumeric(m_dhu.parameters.qmu_mass_flux_segments)
+			response=MassFlux(m_dhu.elements,m_dhu.nodes,m_dhu.vertices,m_dhu.loads,m_dhu.materials,m_dhu.parameters,results.u_g);
+		else
+			save=m_dhu.parameters.qmu_mass_flux_segments;
+			m_dhu.parameters.qmu_mass_flux_segments=m_dhu.parameters.qmu_mass_flux_segments{indx};
+			response=MassFlux(m_dhu.elements,m_dhu.nodes,m_dhu.vertices,m_dhu.loads,m_dhu.materials,m_dhu.parameters,results.u_g);
+			m_dhu.parameters.qmu_mass_flux_segments=save;
+			clear save
+		end
+
+	elseif isSSA || isHO,
+
+% for now, separate all segments from double array for parallel to make cells
+		if (length(m_dh.parameters.qmu_mass_flux_num_segments) > 1)
+			segments=m_dh.parameters.qmu_mass_flux_segments;
+			m_dh.parameters.qmu_mass_flux_segments=cell(size(m_dh.parameters.qmu_mass_flux_num_segments));
+			ipt=1;
+			for i=1:length(m_dh.parameters.qmu_mass_flux_num_segments)
+				if m_dh.parameters.qmu_mass_flux_num_segments(i)
+					m_dh.parameters.qmu_mass_flux_segments{i}=segments(ipt:ipt+m_dh.parameters.qmu_mass_flux_num_segments(i)-1,:);
+					ipt=ipt+m_dh.parameters.qmu_mass_flux_num_segments(i);
+				end
+			end
+			clear segments
+		end
+
+		if isnumeric(m_dh.parameters.qmu_mass_flux_segments)
+			response=MassFlux(m_dh.elements,m_dh.nodes,m_dh.vertices,m_dh.loads,m_dh.materials,m_dh.parameters,results.u_g);
+		else
+			save=m_dh.parameters.qmu_mass_flux_segments;
+			m_dh.parameters.qmu_mass_flux_segments=m_dh.parameters.qmu_mass_flux_segments{indx};
+			response=MassFlux(m_dh.elements,m_dh.nodes,m_dh.vertices,m_dh.loads,m_dh.materials,m_dh.parameters,results.u_g);
+			m_dh.parameters.qmu_mass_flux_segments=save;
+			clear save
+		end
+
+	elseif isFS,
+
+% for now, separate all segments from double array for parallel to make cells
+		if (length(m_ds.parameters.qmu_mass_flux_num_segments) > 1)
+			segments=m_ds.parameters.qmu_mass_flux_segments;
+			m_ds.parameters.qmu_mass_flux_segments=cell(size(m_ds.parameters.qmu_mass_flux_num_segments));
+			ipt=1;
+			for i=1:length(m_ds.parameters.qmu_mass_flux_num_segments)
+				if m_ds.parameters.qmu_mass_flux_num_segments(i)
+					m_ds.parameters.qmu_mass_flux_segments{i}=segments(ipt:ipt+m_ds.parameters.qmu_mass_flux_num_segments(i)-1,:);
+					ipt=ipt+m_ds.parameters.qmu_mass_flux_num_segments(i);
+				end
+			end
+			clear segments
+		end
+
+		if isnumeric(m_ds.parameters.qmu_mass_flux_segments)
+			response=MassFlux(m_ds.elements,m_ds.nodes,m_ds.vertices,m_ds.loads,m_ds.materials,m_ds.parameters,results.u_g);
+		else
+			save=m_ds.parameters.qmu_mass_flux_segments;
+			m_ds.parameters.qmu_mass_flux_segments=m_ds.parameters.qmu_mass_flux_segments{indx};
+			response=MassFlux(m_ds.elements,m_ds.nodes,m_ds.vertices,m_ds.loads,m_ds.materials,m_ds.parameters,results.u_g);
+			m_ds.parameters.qmu_mass_flux_segments=save;
+			clear save
+		end
+	else
+		error('qmuresponse error message: unsupported analysis type for mass_flux computation!');
+	end
+else
+	error(['qmuresponse error message: unknown descriptor ' descriptor]);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmuroot.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmuroot.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/qmuroot.m	(revision 27955)
@@ -0,0 +1,12 @@
+function root=qmuroot(string)
+%QMUROOT - return root of a distributed descriptor
+
+root='';
+found=0;
+for i=1:length(string),
+	if ((49<=double(string(i))) && (double(string(i)<=57)))
+		break;
+	else
+		root=[root string(i)];
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/recover_qmu_options.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/recover_qmu_options.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/recover_qmu_options.m	(revision 27955)
@@ -0,0 +1,22 @@
+function options=recover_qmu_options(md,varargin)
+%RECOVER_SOLVE_OPTIONS - recover solution options for qmu runs.
+%
+%   Usage:
+%      options=recover_qmu_options(md,varargin);
+%
+%   See also: SOLVE
+
+%initialize options.
+options=cell(0,2);
+
+%make sure length(varargin) is even, ie options come in pairs.
+if mod(length(varargin),2),
+	error('recover_qmu_options error message: an even number of options is necessary');
+end
+
+%go through varargin, extract options 
+for i=1:length(varargin)/2,
+
+	options(end+1,:)={varargin{2*i-1} varargin{2*i}};
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/rlev_write.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/rlev_write.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/rlev_write.m	(revision 27955)
@@ -0,0 +1,66 @@
+%
+%  function to write response levels
+%
+function []=rlev_write(fidi,dresp,params)
+
+if isempty(dresp)
+    return;
+end
+
+%  put responses into lists for writing
+
+nresp=0;
+respl={};
+probl={};
+rell ={};
+grell={};
+
+fnames=fieldnames(dresp);
+for i=1:numel(fnames)
+    nresp=nresp+numel(dresp.(fnames{i}));
+    [respli,probli,relli,grelli]=prop_levels(dresp.(fnames{i}));
+    respl=[respl respli];
+    probl=[probl probli];
+    rell =[rell  relli ];
+    grell=[grell grelli];
+end
+
+%  write response levels
+
+param_write(fidi,'\t  ','distribution',' ','\n',params);
+if ~isempty(respl)
+    rlevi_write(fidi,'response_levels',respl);
+    param_write(fidi,'\t  ','compute',' ','\n',params);
+end 
+if ~isempty(probl)
+    rlevi_write(fidi,'probability_levels',probl);
+end
+if ~isempty(rell)
+    rlevi_write(fidi,'reliability_levels',rell);
+end
+if ~isempty(grell)
+    rlevi_write(fidi,'gen_reliability_levels',grell);
+end
+
+end
+
+%
+%  function to each type of response level
+%
+function []=rlevi_write(fidi,ltype,levels)
+
+fprintf(fidi,'\t  num_%s =',ltype);
+for i=1:numel(levels)
+    fprintf(fidi,' %d',length(levels{i}));
+end
+fprintf(fidi,'\n');
+
+fprintf(fidi,'\t  %s =\n',ltype);
+
+for i=1:numel(levels)
+    if ~isempty(levels{i})
+        vector_write(fidi,sprintf('\t    '),levels{i},8,76);
+    end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/rlev_write.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/rlev_write.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/rlev_write.py	(revision 27955)
@@ -0,0 +1,103 @@
+import numpy as np
+#move this later
+from helpers import *
+from vector_write import *
+from param_write import *
+#import relevent qmu classes
+from MatlabArray import *
+
+
+def rlevi_write(fidi, ltype, levels):
+    '''
+  function to each type of response level
+'''
+
+    fidi.write('\t  num_' + str(ltype) + ' = ')
+    levels = np.array(levels)
+
+    if len(levels) > 0 and type(levels[0]) in [list, np.ndarray]:
+        for i in range(len(levels)):
+            fidi.write(' ' + str(len(levels[i])))
+    else:
+        fidi.write(' ' + str(len(levels)))
+
+    fidi.write('\n')
+    fidi.write('\t  ' + str(ltype) + ' =\n')
+
+    # check if we have a vector of vectors, or just 1 vector
+    if np.size(levels) > 0 and type(levels[0]) in [list, np.ndarray]:
+        for i in range(len(levels)):
+            if len(levels[i]) != 0:
+                vector_write(fidi, '\t    ', levels[i], 8, 76)
+    else:
+        vector_write(fidi, '\t    ', levels, 8, 76)
+
+    return
+
+
+def rlev_write(fidi, dresp, cstring, params):
+    '''
+  function to write response levels
+'''
+    from response_function import response_function
+
+    if len(dresp) == 0 or len(fieldnames(dresp[0])) == 0:
+        return
+
+    if type(dresp) in [list, np.ndarray]:
+        if len(dresp) > 0 and type(dresp[0]) == struct:
+            func = eval(cstring)
+        else:
+            func = type(dresp[0])
+    elif type(dresp) == struct:
+        # type is defined within struct's contents
+        func = None
+        dresp = [dresp]
+    else:
+        func = type(dresp)
+        dresp = [dresp]
+
+    # put responses into lists for writing
+
+    nresp = 0
+    respl = []
+    probl = []
+    rell = []
+    grell = []
+
+    # assume all fields in dvar[0:n] are consistent (ex. all are normal_uncertain)
+    #   which will always be true since this is called per field
+    fnames = fieldnames(dresp[0])
+    for j in range(len(dresp)):
+        for i in range(np.size(fnames)):
+            if func is None:
+                func = type(vars(dresp[j])[fnames[i]])
+
+            nresp += 1
+            [respli, probli, relli, grelli] = func.prop_levels([vars(dresp[j])[fnames[i]]])
+            respl.extend(respli)
+            probl.extend(probli)
+            rell.extend(relli)
+            grell.extend(grelli)
+
+    # write response levels
+    respl = allempty(respl)
+    probl = allempty(probl)
+    rell = allempty(rell)
+    grell = allempty(grell)
+
+    param_write(fidi, '\t  ', 'distribution', ' ', '\n', params)
+    if len(respl) != 0:
+        rlevi_write(fidi, 'response_levels', respl)
+        param_write(fidi, '\t  ', 'compute', ' ', '\n', params)
+
+    if len(probl) != 0:
+        rlevi_write(fidi, 'probability_levels', probl)
+
+    if len(rell) != 0:
+        rlevi_write(fidi, 'reliability_levels', rell)
+
+    if len(grell) != 0:
+        rlevi_write(fidi, 'gen_reliability_levels', grell)
+
+    return
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/rlist_write.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/rlist_write.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/rlist_write.m	(revision 27955)
@@ -0,0 +1,76 @@
+%
+%  function to write response list
+%
+function [rdesc]=rlist_write(fidi,cstring,cstring2,dresp,rdesc)
+
+if isempty(dresp)
+    return;
+end
+
+%  put responses into lists for writing
+%  (and accumulate descriptors into list for subsequent writing)
+
+nresp=0;
+pstype =[];
+pscale =[];
+pweight=[];
+plower =[];
+pupper =[];
+ptarget=[];
+
+fnames=fieldnames(dresp);
+for i=1:numel(fnames)
+    nresp=nresp+numel(dresp.(fnames{i}));
+    pstype =[pstype  prop_stype(dresp.(fnames{i})) ];
+    pscale =[pscale  prop_scale(dresp.(fnames{i})) ];
+    pweight=[pweight prop_weight(dresp.(fnames{i}))];
+    plower =[plower  prop_lower(dresp.(fnames{i})) ];
+    pupper =[pupper  prop_upper(dresp.(fnames{i})) ];
+    ptarget=[ptarget prop_target(dresp.(fnames{i}))];
+    rdesc  =[rdesc   prop_desc(dresp.(fnames{i}),fnames{i})];
+end
+
+%  write responses
+
+disp(sprintf('  Writing %d %s responses.',nresp,cstring));
+
+if strcmp(cstring,'calibration_terms')==1
+	fprintf(fidi,'\t%s = %d\n',cstring,nresp);
+	
+else
+	fprintf(fidi,'\tnum_%s = %d\n',cstring,nresp);
+end
+
+if ~isempty(pstype)
+fprintf(fidi,'\t  %s_scale_types =\n',cstring2);
+vector_write(fidi,sprintf('\t    '),pstype ,6,76);
+end
+
+if ~isempty(pscale)
+    fprintf(fidi,'\t  %s_scales =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pscale ,6,76);
+end
+if ~isempty(pweight)
+    switch cstring2
+        case 'objective_function'
+            fprintf(fidi,'\t  %s_weights =\n','multi_objective');
+            vector_write(fidi,sprintf('\t    '),pweight,6,76);
+        case 'least_squares_term'
+            fprintf(fidi,'\t  %s_weights =\n','least_squares');
+            vector_write(fidi,sprintf('\t    '),pweight,6,76);
+    end
+end
+if ~isempty(plower)
+    fprintf(fidi,'\t  %s_lower_bounds =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),plower ,6,76);
+end
+if ~isempty(pupper)
+    fprintf(fidi,'\t  %s_upper_bounds =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pupper ,6,76);
+end
+if ~isempty(ptarget)
+    fprintf(fidi,'\t  %s_targets =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),ptarget,6,76);
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/rlist_write.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/rlist_write.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/rlist_write.py	(revision 27955)
@@ -0,0 +1,87 @@
+import numpy as np
+#move this later
+from helpers import *
+
+from vector_write import *
+from response_function import *
+
+
+def rlist_write(fidi, cstring, cstring2, dresp, rdesc):
+    '''
+    function to write response list
+    '''
+    if dresp is None:
+        return
+
+    func = eval(cstring)
+
+    # if type(dresp) not in [list, np.ndarray]:
+    #     dresp = [dresp]
+
+    fnames = fieldnames(dresp)
+
+    nresp = 0
+    pstype = []
+    pscale = []
+    pweight = []
+    plower = []
+    pupper = []
+    ptarget = []
+
+    for i in range(len(fnames)):
+        field = getattr(dresp, format(fnames[i]))
+        nresp = nresp + len(field)
+        pstype.extend(func.prop_stype(field))
+        pscale.extend(func.prop_scale(field))
+        pweight.extend(func.prop_weight(field))
+        plower.extend(func.prop_lower(field))
+        pupper.extend(func.prop_upper(field))
+        ptarget.extend(func.prop_target(field))
+        rdesc.extend(func.prop_desc(field, field[0].descriptor))
+
+    # write responses
+    print('  Writing ' + str(nresp) + ' ' + cstring + ' responses.')
+
+    if strcmp(cstring, 'calibration_terms') == 1:
+        fidi.write('\t' + cstring + ' = ' + str(nresp) + '\n')
+
+    else:
+        fidi.write('\tnum_' + cstring + 's = ' + str(nresp) + '\n')
+
+    if not isempty(pstype):
+        fidi.write('\t  ' + cstring2 + '_scale_types =\n')
+        vector_write(fidi, '\t    ', pstype, 6, 76)
+
+    if not isempty(pscale):
+        fidi.write('\t  ' + cstring2 + '_scales =\n')
+        vector_write(fidi, '\t    ', pscale, 6, 76)
+
+    if not isempty(pweight):
+        if cstring2 == 'objective_function':
+            fidi.write('\t  multi_objective_weights =\n')
+            vector_write(fidi, '\t    ', pweight, 6, 76)
+        elif cstring2 == 'least_squares_term':
+            fidi.write('\t  least_squares_weights =\n')
+            vector_write(fidi, '\t    ', pweight, 6, 76)
+
+    if not isempty(plower):
+        fidi.write('\t  ' + cstring2 + '_lower_bounds =\n')
+        vector_write(fidi, '\t    ', plower, 6, 76)
+
+    if not isempty(pupper):
+        fidi.write('\t  ' + cstring2 + '_upper_bounds =\n')
+        vector_write(fidi, '\t    ', pupper, 6, 76)
+
+    if not isempty(ptarget):
+        fidi.write('\t  ' + cstring2 + '_targets =\n')
+        vector_write(fidi, '\t    ', ptarget, 6, 76)
+
+    # because qmu in files need '' for strings
+    for i in range(len(rdesc)):
+        if type(rdesc[i]) in [list, np.ndarray]:
+            for j in range(len(rdesc[i])):
+                rdesc[i][j] = "'" + rdesc[i][j] + "'"
+        else:
+            rdesc[i] = "'" + rdesc[i] + "'"
+
+    return rdesc
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/sensitivities.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/sensitivities.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/sensitivities.m	(revision 27955)
@@ -0,0 +1,68 @@
+function sens=sensitivies(md,variablename,responsename)
+%SENSITIVIES - compute sensitivities for a certain variable and response.
+%
+%   Usage:
+%      sens=sensitivities(md,variablename,responsename)
+%
+%
+%   Example: sens=sensitivities(md,'DragCoefficient','MaxVel');
+%
+
+variablenamelength=length(variablename);
+
+%go through all response functions and find the one corresponding to the correct responsename
+responsefunctions=md.qmu.results.dresp_out;
+found=0;
+for i=1:length(responsefunctions),
+	if strcmpi(responsefunctions(i).descriptor,responsename),
+		found=i;
+		break;
+	end
+end
+if ~found,
+	error('importancefactors error message: could not find correct response function');
+end
+responsefunctions=responsefunctions(found);
+nfun=size(responsefunctions.var,1);
+
+%Now recover response to the correct design variable
+rawsens=zeros(0,1);
+count=0;
+for i=1:nfun,
+	desvar=responsefunctions.var{i};
+	if strncmpi(desvar,variablename,variablenamelength),
+		rawsens(end+1,1)=responsefunctions.sens(i);
+		count=count+1;
+	end
+end
+
+%Now, if this was a distributed variable, the sensitivities need to be scaled by means of the input variable.
+if IsScaled(variablename),
+
+	%ipick up the variable in the model
+	switch variablename,
+		case 'thickness', variable = md.geometry.thickness; 
+		otherwise, error(['scaled variable ' variablename  ' not associated to any model field']);
+	end
+
+	%average it onto the partition
+	average_variable=AreaAverageOntoPartition(md,variable);
+
+	%scale the sensitivities: only where the average_variable is not 0 
+	if ~isempty(rawsens),
+		pos=find(average_variable);
+		rawsens(pos)=rawsens(pos)./average_variable(pos);
+	end
+end
+
+if count==0,
+	error('sensitivities error message: either response does not exist, or sensitivities are empty');
+end
+
+if count==1, %we have scalar
+	sens=rawsens;
+	return;
+else
+	%project the sensitivities from the partition onto the mesh
+	sens=rawsens(md.qmu.partition'+1); %md.qmu.partition was created to index "c" style
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/setupdesign/IsScaled.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/setupdesign/IsScaled.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/setupdesign/IsScaled.m	(revision 27955)
@@ -0,0 +1,19 @@
+function status=IsScaled(variablename)
+%ISSCALED decide whether a variable should be scaled or not. 
+
+switch variablename,
+case {'MaterialsRhoIce','MaterialsRhoSeawater','MaterialsHeatCapacity','MaterialsThermalConductivity','Gravity','MaxVel'},
+
+	status=0;
+
+case {'GeometryThickness','GeometrySurface','GeometryBed','FrictionCoefficient','MaterialsRheologyB','MaterialsRheologyBbar'},
+
+	status=1;
+
+case {'RiftsFriction'},
+
+	status=2; %special treatment
+
+otherwise
+	error(['IsScaled error  message: could not find ' variablename]);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/setupdesign/QmuSetupResponses.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/setupdesign/QmuSetupResponses.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/setupdesign/QmuSetupResponses.m	(revision 27955)
@@ -0,0 +1,24 @@
+function dresp=QmuSetupResponses(md,dresp,responses)
+
+%get descriptor
+descriptor=responses.descriptor;
+
+%decide whether this is a distributed response, which will drive whether we expand it into npart values,
+%or if we just carry it forward as is. 
+
+%ok, key off according to type of descriptor:
+if strncmp(descriptor,'scaled_',7),
+	%we have a scaled response, expand it over the partition.
+
+	%ok, dealing with semi-discrete distributed response. Distribute according to how many 
+	%partitions we want
+	npart=qmupart2npart(responses.partition);
+
+	for j=1:npart,
+		dresp(end+1)           =responses;
+		dresp(end  ).descriptor=sprintf('%s_%d',responses.descriptor,j);
+	end
+
+else
+	dresp(end+1)=responses;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/setupdesign/QmuSetupResponses.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/setupdesign/QmuSetupResponses.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/setupdesign/QmuSetupResponses.py	(revision 27955)
@@ -0,0 +1,28 @@
+from copy import deepcopy
+from MatlabFuncs import *
+from qmupart2npart import qmupart2npart
+
+
+def QmuSetupResponses(md, dresp, responses):
+
+    #get descriptor
+    descriptor = responses.descriptor
+
+    # Decide whether this is a distributed response, which will drive whether 
+    # we expand it into npart values, or if we just carry it forward as is.
+
+    #ok, key off according to type of descriptor:
+    if strncmp(descriptor, 'scaled_', 7):
+        #we have a scaled response, expand it over the partition.
+
+        # Ok, dealing with semi-discrete distributed response. Distribute 
+        # according to how many partitions we want.
+        npart = qmupart2npart(responses.partition)
+
+        for j in range(npart):
+            dresp.append(deepcopy(responses))
+            dresp[-1].descriptor = str(responses.descriptor) + '_' + str(j + 1)
+    else:
+        dresp.append(responses)
+
+    return dresp
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/setupdesign/QmuSetupVariables.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/setupdesign/QmuSetupVariables.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/setupdesign/QmuSetupVariables.m	(revision 27955)
@@ -0,0 +1,130 @@
+function dvar=QmuSetupVariables(md,dvar,variables)
+
+%get descriptor
+descriptor=variables.descriptor;
+
+%decide whether this is a distributed variable, which will drive whether we expand it into npart values,
+%or if we just carry it forward as is. 
+
+%ok, key off according to type of descriptor:
+if strncmp(descriptor,'scaled_',7),
+	%we have a scaled variable, expand it over the partition. First recover the partition: 
+	partition=variables.partition;
+	%figure out number of partitions: 
+	npart=qmupart2npart(partition);
+	%figure out number of time steps: 
+	nt=variables.nsteps;
+
+	if isa(variables,'uniform_uncertain'),
+		nlower=size(variables.lower,1);
+		nupper=size(variables.upper,1);
+		if (nlower ~= npart || nupper ~=npart),
+			error('QmuSetupVariables error message: upper and lower fields should have the same number of rows as the number of partitions');
+		end
+		nlower=size(variables.lower,2);
+		nupper=size(variables.upper,2);
+		if (nlower ~= nt || nupper ~= nt),
+			error('QmuSetupVariables error message: upper and lower fields should have the same number of cols as the number of time steps');
+		end
+	elseif isa(variables,'normal_uncertain'),
+		nstddev=size(variables.stddev,1);
+		nmean=size(variables.mean,1);
+		if (nstddev ~= npart || nmean ~=npart),
+			error('QmuSetupVariables error message: stddev and mean fields should have the same number of rows as the number of partitions');
+		end
+		nstddev=size(variables.stddev,2);
+		nmean=size(variables.mean,2);
+		if (nstddev ~= nt || nmean ~=nt),
+			error('QmuSetupVariables error message: stddev and mean fields should have the same number of cols as the number of time steps');
+		end
+
+	end
+
+	%ok, dealing with semi-discrete distributed variable. Distribute according to how many 
+	%partitions we want, and number of time steps: 
+	if nt==1,
+		for j=1:npart,
+			dvar(end+1)           =variables;
+			dvar(end  ).descriptor=sprintf('%s_%d',variables.descriptor,j);
+			if isa(variables,'uniform_uncertain'),
+				dvar(end  ).lower=variables.lower(j);
+				dvar(end  ).upper=variables.upper(j);
+			elseif isa(variables,'normal_uncertain'),
+				dvar(end  ).stddev=variables.stddev(j);
+				dvar(end  ).mean=variables.mean(j);
+			end
+		end
+	else
+		for j=1:npart,
+			for k=1:nt,
+				dvar(end+1)           =variables;
+				dvar(end  ).descriptor=sprintf('%s_%d_%d',variables.descriptor,j,k);
+				if isa(variables,'uniform_uncertain'),
+					dvar(end  ).lower=variables.lower(j,k);
+					dvar(end  ).upper=variables.upper(j,k);
+				elseif isa(variables,'normal_uncertain'),
+					dvar(end  ).stddev=variables.stddev(j,k);
+					dvar(end  ).mean=variables.mean(j,k);
+				end
+			end
+		end
+
+	end
+
+elseif strncmp(descriptor,'distributed_',12),
+
+	%we have a distributed variable, expand it over the partition. First recover the partition: 
+	partition=variables.partition;
+	%figure out number of partitions: 
+	npart=qmupart2npart(partition);
+
+	if isa(variables,'uniform_uncertain'),
+		nlower=size(variables.lower,1);
+		nupper=size(variables.upper,1);
+		if (nlower ~= npart || nupper ~=npart),
+			error('QmuSetupVariables error message: upper and lower fields should have the same number of rows as the number of partitions');
+		end
+	elseif isa(variables,'normal_uncertain'),
+		nstddev=size(variables.stddev,1);
+		nmean=size(variables.mean,1);
+		if (nstddev ~= npart || nmean ~=npart),
+			error('QmuSetupVariables error message: stddev and mean fields should have the same number of rows as the number of partitions');
+		end
+	elseif isa(variables,'histogram_bin_uncertain'),
+		ncounts=length(variables.counts);
+		npairs=length(variables.pairs_per_variable);
+		nabs=length(variables.abscissas);
+		if (ncounts ~= npart),
+			error(sprintf('QmuSetupVariables error message: counts size (%i) should be equal to the number of partitions (%i)',ncounts,npart));
+		end
+		if (npairs ~= npart),
+			error(sprintf('QmuSetupVariables error message: pairs_per_variable size (%i) should be equal to the number of partitions (%i)',npairs,npart));
+		end
+		if (nabs ~= npart),
+			error(sprintf('QmuSetupVariables error message: abscissas size (%i) should be equal to the number of partitions (%i)',nabs,npart));
+		end
+	end
+
+	%ok, dealing with distributed variable. Distribute according to how many 
+	%partitions we want.
+	for j=1:npart,
+		dvar(end+1)           =variables;
+		dvar(end).descriptor=sprintf('%s_%d',variables.descriptor,j);
+		if isa(variables,'uniform_uncertain'),
+			dvar(end  ).lower=variables.lower(j);
+			dvar(end  ).upper=variables.upper(j);
+			dvar(end  ).partition=[];
+		elseif isa(variables,'normal_uncertain'),
+			dvar(end  ).stddev=variables.stddev(j);
+			dvar(end  ).mean=variables.mean(j);
+			dvar(end  ).partition=[];
+		elseif isa(variables,'histogram_bin_uncertain'),
+			dvar(end).pairs_per_variable=variables.pairs_per_variable(j);
+			dvar(end).abscissas=variables.abscissas{j};
+			dvar(end).counts=variables.counts{j};
+			dvar(end).partition=[];
+		end
+	end
+else
+	dvar(end+1)=variables;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/setupdesign/QmuSetupVariables.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/setupdesign/QmuSetupVariables.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/setupdesign/QmuSetupVariables.py	(revision 27955)
@@ -0,0 +1,83 @@
+from copy import deepcopy
+
+from helpers import *
+from MatlabFuncs import *
+from normal_uncertain import *
+from qmupart2npart import qmupart2npart
+from uniform_uncertain import *
+
+
+def QmuSetupVariables(md, variables):
+    """QMUSETUPVARIABLES function
+    """
+
+    # Get descriptor
+    descriptor = variables.descriptor
+
+    # Decide whether this is a distributed variable, which will drive whether we expand it into npart values, or if we just carry it forward as is
+
+    # Ok, key off according to type of descriptor
+    dvar = []
+    if strncmp(descriptor, 'scaled_', 7):
+        # We have a scaled variable, expand it over the partition. First recover the partition.
+        partition = variables.partition
+        # Figure out number of partitions
+        npart = qmupart2npart(partition)
+
+        # Figure out number of time steps
+        nt = variables.nsteps
+
+        if isinstance(variables, uniform_uncertain):
+            nlower = variables.lower.shape[0]
+            nupper = variables.upper.shape[0]
+            if nlower != npart or nupper != npart:
+                raise RuntimeError('QmuSetupVariables error message: upper and lower fields should have the same number of rows as the number of partitions')
+            nlower = variables.lower.shape[1]
+            nupper = variables.upper.shape[1]
+            if nlower != nt or nupper != nt:
+                raise RuntimeError('QmuSetupVariables error message: upper and lower fields should have the same number of cols as the number of time steps')
+        elif isinstance(variables, normal_uncertain):
+            nstddev = variables.stddev.shape[0]
+            nmean = variables.mean.shape[0]
+            if nstddev != npart or nmean != npart:
+                raise RuntimeError('QmuSetupVariables error message: stddev and mean fields should have the same number of rows as the number of partitions')
+            nstddev = variables.stddev.shape[1]
+            nmean = variables.mean.shape[1]
+            if nstddev != nt or nmean != nt:
+                raise RuntimeError('QmuSetupVariables error message: stddev and mean fields should have the same number of cols as the number of time steps')
+
+        # Ok, dealing with semi-discrete distributed variable. Distribute according to how many partitions we want, and number of time steps
+        if nt == 1:
+            for j in range(npart):
+                dvar.append(deepcopy(variables))
+
+                # Text parsing in Dakota requires literal "'identifier'" not just "identifier"
+                dvar[-1].descriptor = "'" + str(variables.descriptor) + '_' + str(j + 1) + "'"
+
+                if isinstance(variables, uniform_uncertain):
+                    dvar[-1].lower = variables.lower[j]
+                    dvar[-1].upper = variables.upper[j]
+                elif isinstance(variables, normal_uncertain):
+                    dvar[-1].stddev = variables.stddev[j]
+                    dvar[-1].mean = variables.mean[j]
+        else:
+            for j in range(npart):
+                for k in range(nt):
+                    dvar.append(deepcopy(variables))
+
+                    # Text parsing in Dakota requires literal "'identifier'" not just "identifier"
+                    dvar[-1].descriptor = "'" + str(variables.descriptor) + '_' + str(j + 1) + '_' + str(k + 1) + "'"
+
+                    if isinstance(variables, uniform_uncertain):
+                        dvar[-1].lower = variables.lower[j][k]
+                        dvar[-1].upper = variables.upper[j][k]
+                    elif isinstance(variables, normal_uncertain):
+                        dvar[-1].stddev = variables.stddev[j][k]
+                        dvar[-1].mean = variables.mean[j][k]
+    else:
+        dvar.append(deepcopy(variables))
+
+        # text parsing in Dakota requires literal "'identifier'" not just "identifier"
+        dvar[-1].descriptor = "'" + str(variables.descriptor) + "'"
+
+    return dvar
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/setupdesign/setupriftsfriction.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/setupdesign/setupriftsfriction.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/setupdesign/setupriftsfriction.m	(revision 27955)
@@ -0,0 +1,10 @@
+function dvar=setupriftsfriction(md,dvar,variables)
+
+%we have several rifts.
+
+for j=1:md.rifts.numrifts
+	dvar(end+1)           =variables;
+	dvar(end  ).descriptor=sprintf('%s%d',variables.descriptor,j);
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/vector_write.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/vector_write.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/vector_write.m	(revision 27955)
@@ -0,0 +1,51 @@
+%
+%  function to write a vector on multiple lines
+%
+function []=vector_write(fidi,sbeg,vec,nmax,cmax)
+
+if ~exist('nmax','var') || isempty(nmax)
+    nmax=Inf;
+end
+if ~exist('cmax','var') || isempty(cmax)
+    cmax=Inf;
+end
+
+%  set up first iteration
+
+svec =[];
+nitem=nmax;
+lsvec=cmax;
+
+%  transpose vector from column-wise to row-wise
+
+vec=vec';
+
+%  assemble each line, flushing when necessary
+for i=1:numel(vec)
+    if isnumeric(vec(i))
+        sitem=sprintf('%g'    ,vec(i));
+    else
+        sitem=sprintf('''%s''',char(vec(i)));
+    end
+    nitem=nitem+1;
+    lsvec=lsvec+1+length(sitem);
+
+    if (nitem <= nmax) && (lsvec <= cmax)
+        svec=[svec ' ' sitem];
+    else
+        if ~isempty(svec)
+            fprintf(fidi,'%s\n',svec);
+        end
+        svec=[sbeg sitem];
+        nitem=1;
+        lsvec=length(svec);
+    end
+end
+
+%  flush buffer at end, if necessary
+
+if ~isempty(svec)
+    fprintf(fidi,'%s\n',svec);
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/vector_write.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/vector_write.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/vector_write.py	(revision 27955)
@@ -0,0 +1,48 @@
+import numpy as np
+
+
+def vector_write(fidi, sbeg, vec, nmax, cmax):
+    '''
+function to write a vector on multiple lines
+'''
+    if nmax is None:
+        nmax = np.inf
+
+    if cmax is None:
+        cmax = np.inf
+
+    # set up first iteration
+    svec = []
+    nitem = nmax
+    lsvec = cmax
+
+    # transpose vector from column - wise to row - wise
+    vec = np.array(vec).conj().T
+
+    # assemble each line, flushing when necessary
+    for i in range(np.size(vec, 0)):
+
+        # [[1], [1], [1]...] should be [1, 1, 1, ...]
+        if type(vec[i]) in [list, np.ndarray] and len(vec[i]) == 1:
+            sitem = str(vec[i][0])
+        else:
+            sitem = str(vec[i])
+
+        nitem = nitem + 1
+        lsvec = lsvec + 1 + len(sitem)
+
+        if (nitem <= nmax) and (lsvec <= cmax):
+            svec = str(svec) + ' ' + str(sitem)
+        else:
+            if len(svec) > 0:
+                fidi.write(str(svec) + '\n')
+
+            svec = str(sbeg) + str(sitem)
+            nitem = 1
+            lsvec = len(svec)
+
+    # flush buffer at , if necessary
+    if len(svec) > 0:
+        fidi.write(str(svec) + '\n')
+
+    return
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/vlist_write.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/vlist_write.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/vlist_write.m	(revision 27955)
@@ -0,0 +1,102 @@
+%
+%  function to write variable list
+%
+function []=vlist_write(fidi,cstring,cstring2,dvar)
+
+if isempty(dvar)
+    return;
+end
+
+fnames=fieldnames(dvar);
+
+%  put variables into lists for writing
+
+nvar=0;
+pinitpt=[];
+plower =[];
+pupper =[];
+pmean  =[];
+pstddev=[];
+pinitst=[];
+pstype =[];
+pscale =[];
+pabscissas =[];
+ppairs_per_variable =[];
+pcounts=[];
+pdesc  =[];
+
+for i=1:numel(fnames)
+    nvar=nvar+numel(dvar.(fnames{i}));
+    pinitpt=[pinitpt prop_initpt(dvar.(fnames{i}))];
+    plower =[plower  prop_lower(dvar.(fnames{i})) ];
+    pupper =[pupper  prop_upper(dvar.(fnames{i})) ];
+    pmean  =[pmean   prop_mean(dvar.(fnames{i}))  ];
+    pstddev=[pstddev prop_stddev(dvar.(fnames{i}))];
+    pinitst=[pinitst prop_initst(dvar.(fnames{i}))];
+    pstype =[pstype  prop_stype(dvar.(fnames{i})) ];
+    pscale =[pscale  prop_scale(dvar.(fnames{i})) ];
+    ppairs_per_variable =[ppairs_per_variable  prop_pairs_per_variable(dvar.(fnames{i})) ];
+    pabscissas =[pabscissas  prop_abscissas(dvar.(fnames{i})) ];
+    pcounts =[pcounts  prop_counts(dvar.(fnames{i})) ];
+    pdesc  =[pdesc   prop_desc(dvar.(fnames{i}),fnames{i})];
+end
+
+%  write variables
+%  (using Dakota 4.1 syntax for backward compatability)
+
+disp(sprintf('  Writing %d %s variables.',nvar,cstring));
+
+fprintf(fidi,'\t%s = %d\n',cstring,nvar);
+if ~isempty(pinitpt)
+    fprintf(fidi,'\t  %s_initial_point =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pinitpt,6,76);
+end
+if ~isempty(plower)
+    fprintf(fidi,'\t  %s_lower_bounds =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),plower ,6,76);
+end
+if ~isempty(pupper)
+    fprintf(fidi,'\t  %s_upper_bounds =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pupper ,6,76);
+end
+if ~isempty(pmean)
+    fprintf(fidi,'\t  %s_means =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pmean  ,6,76);
+end
+if ~isempty(pstddev)
+    fprintf(fidi,'\t  %s_std_deviations =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pstddev,6,76);
+end
+if ~isempty(pinitst)
+    fprintf(fidi,'\t  %s_initial_state =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pinitst,6,76);
+end
+if ~isempty(pstype)
+    fprintf(fidi,'\t  %s_scale_types =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pstype ,6,76);
+end
+if ~isempty(pscale)
+    fprintf(fidi,'\t  %s_scales =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pscale ,6,76);
+end
+if ~isempty(ppairs_per_variable)
+    %fprintf(fidi,'\t  %s_pairs_per_variable =\n',cstring2);
+    fprintf(fidi,'\t  pairs_per_variable =\n');
+    vector_write(fidi,sprintf('\t    '),ppairs_per_variable ,6,76);
+end
+if ~isempty(pabscissas)
+    %fprintf(fidi,'\t  %s_abscissas =\n',cstring2);
+    fprintf(fidi,'\t  abscissas =\n');
+    vector_write(fidi,sprintf('\t    '),pabscissas ,6,76);
+end
+if ~isempty(pcounts)
+    %fprintf(fidi,'\t  %s_counts =\n',cstring2);
+    fprintf(fidi,'\t  counts =\n');
+    vector_write(fidi,sprintf('\t    '),pcounts ,6,76);
+end
+if ~isempty(pdesc)
+    fprintf(fidi,'\t  descriptors =\n');
+    vector_write(fidi,sprintf('\t    '),pdesc  ,6,76);
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/qmu/vlist_write.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/qmu/vlist_write.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/qmu/vlist_write.py	(revision 27955)
@@ -0,0 +1,146 @@
+import numpy as np
+#move this later
+from helpers import *
+from vector_write import *
+from uniform_uncertain import *
+from normal_uncertain import *
+
+
+def check(a, l, p):
+    '''in the event that a and b are equal, return a
+    in the event that a and b are not equal, return their concatenation
+
+    This is used for when both the input dvar and the 'cstring' variables have non - 1 length
+    '''
+    if np.size(a) == l:
+        if p == 0:
+            if type(a) in [list, np.ndarray]:
+                return a
+            else:
+                return [a]
+        else:
+            return []
+    elif np.size(a) == 1:
+        if type(a) in [list, np.ndarray]:
+            return a
+        else:
+            return [a]
+    elif np.size(a) == 0:
+        return []
+    else:
+        raise RuntimeError('ERROR vlist_write: input field had size ' + str(np.size(a)) + '; must have size of 0, 1, or match size of provided dvar (' + str(l) + ').')
+
+    return
+
+
+def vlist_write(fidi, cstring, cstring2, dvar):
+    '''
+    function to write variable list
+    '''
+    if dvar is None:
+        return
+
+    func = eval(cstring)
+
+    # if type(dvar) not in [list, np.ndarray]:
+    #     dvar = [dvar]
+    
+    fnames = fieldnames(dvar)
+    
+    # put variables into lists for writing
+    nvar = 0
+    pinitpt = []
+    plower = []
+    pupper = []
+    pmean = []
+    pstddev = []
+    pinitst = []
+    pstype = []
+    pscale = []
+    ppairs_per_variable = []
+    pabscissas = []
+    pcounts = []
+    pdesc = []
+
+    for i in range(len(fnames)):
+        field = getattr(dvar, format(fnames[i]))
+        nvar = nvar + len(field)
+        pinitpt.extend(func.prop_initpt(field))
+        plower.extend(func.prop_lower(field))
+        pupper.extend(func.prop_upper(field))
+        pmean.extend(func.prop_mean(field))
+        pstddev.extend(func.prop_stddev(field))
+        pinitst.extend(func.prop_initst(field))
+        pstype.extend(func.prop_stype(field))
+        pscale.extend(func.prop_scale(field))
+        ppairs_per_variable.extend(func.prop_pairs_per_variable(field))
+        pabscissas.extend(func.prop_abscissas(field))
+        pcounts.extend(func.prop_counts(field))
+        pdesc.extend(func.prop_desc(field, field[0].descriptor))
+
+    pinitpt = allempty(pinitpt)
+    plower = allempty(plower)
+    pupper = allempty(pupper)
+    pmean = allempty(pmean)
+    pstddev = allempty(pstddev)
+    pinitst = allempty(pinitst)
+    pstype = allempty(pstype)
+    pscale = allempty(pscale)
+    ppairs_per_variable = allempty(ppairs_per_variable)
+    pabscissas = allempty(pabscissas)
+    pcounts = allempty(pcounts)
+    pdesc = allempty(pdesc)
+
+    # write variables
+    print('  Writing ' + str(nvar) + ' ' + cstring + ' variables.')
+
+    fidi.write('\t' + cstring + ' = ' + str(nvar) + '\n')
+    if not isempty(pinitpt):
+        fidi.write('\t  ' + cstring2 + '_initial_point =\n')
+        vector_write(fidi, '\t    ', pinitpt, 6, 76)
+
+    if not isempty(plower):
+        fidi.write('\t  ' + cstring2 + '_lower_bounds =\n')
+        vector_write(fidi, '\t    ', plower, 6, 76)
+
+    if not isempty(pupper):
+        fidi.write('\t  ' + cstring2 + '_upper_bounds =\n')
+        vector_write(fidi, '\t    ', pupper, 6, 76)
+
+    if not isempty(pmean):
+        fidi.write('\t  ' + cstring2 + '_means =\n')
+        vector_write(fidi, '\t    ', pmean, 6, 76)
+
+    if not isempty(pstddev):
+        fidi.write('\t  ' + cstring2 + '_std_deviations =\n')
+        vector_write(fidi, '\t    ', pstddev, 6, 76)
+
+    if not isempty(pinitst):
+        fidi.write('\t  ' + cstring2 + '_initial_state =\n')
+        vector_write(fidi, '\t    ', pinitst, 6, 76)
+
+    if not isempty(pstype):
+        fidi.write('\t  ' + cstring2 + '_scale_types =\n')
+        vector_write(fidi, '\t    ', pstype, 6, 76)
+
+    if not isempty(pscale):
+        fidi.write('\t  ' + cstring2 + '_scales =\n')
+        vector_write(fidi, '\t    ', pscale, 6, 76)
+
+    if not isempty(ppairs_per_variable):
+        fidi.write('\t  ' + cstring2 + '_pairs_per_variable =\n')
+        vector_write(fidi, '\t    ', ppairs_per_variable, 6, 76)
+
+    if not isempty(pabscissas):
+        fidi.write('\t  ' + cstring2 + '_abscissas =\n')
+        vector_write(fidi, '\t    ', pabscissas, 6, 76)
+
+    if not isempty(pcounts):
+        fidi.write('\t  ' + cstring2 + '_counts =\n')
+        vector_write(fidi, '\t    ', pcounts, 6, 76)
+
+    if not isempty(pdesc):
+        fidi.write('\t  ' + 'descriptors =\n')
+        vector_write(fidi, '\t    ', pdesc, 6, 76)
+
+    return
Index: /issm/branches/trunk-dlcheng-ASE/src/m/regional/BasinConstrain.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/regional/BasinConstrain.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/regional/BasinConstrain.m	(revision 27955)
@@ -0,0 +1,63 @@
+function md=BasinConstrain(md,domain)
+%BASINCONSTRAIN - constrain basin
+%
+%   Constrain basin using a constraint domain outline, 
+%   to dirichlet boundary conditions.
+%   constraindomain is an Argus domain outline file enclosing 
+%   the geographical area of interest.
+%
+%   Usage: 
+%      md=BasinConstrain(md,constraindomain)
+%
+%   Example:
+%      md=BasinConstrain(md,'DomainOutline.exp');
+%      md=BasinConstrain(md,'~Iceshelves.exp');
+
+%now, flag nodes and elements outside the domain outline.
+if ischar(domain),
+	if isempty(domain),
+		elementondomain=zeros(md.mesh.numberofelements,1);
+		vertexondomain=zeros(md.mesh.numberofvertices,1);
+		invert=0;
+	elseif strcmpi(domain,'all')
+		elementondomain=ones(md.mesh.numberofelements,1);
+		vertexondomain=ones(md.mesh.numberofvertices,1);
+		invert=0;
+	else
+		%make sure that we actually don't want the elements outside the domain outline!
+		if strcmpi(domain(1),'~'),
+			domain=domain(2:end);
+			invert=1;
+		else
+			invert=0;
+		end
+		%ok, flag elements and nodes
+		[vertexondomain elementondomain]=ContourToMesh(md.mesh.elements(:,1:3),md.mesh.x,md.mesh.y,domain,'element and node',2);
+	end
+	if invert,
+		vertexondomain=~vertexondomain;
+		elementondomain=~elementondomain;
+	end
+else
+	error('BasinConstrain error message: domain type not supported yet');
+end
+
+%list of elements and nodes not on domain
+vertexnotondomain=find(~vertexondomain);
+elementnotondomain=find(~elementondomain);
+
+%all elements outside the constraint domain are equivalent to water. all nodes outside are spc'd.
+md.stressbalance.spcvx(vertexnotondomain)=md.inversion.vx_obs(vertexnotondomain);
+md.stressbalance.spcvy(vertexnotondomain)=md.inversion.vy_obs(vertexnotondomain);
+md.mask.elementonwater(elementnotondomain)=1;
+
+%now, make sure all elements on water have nodes that are spc'd, otherwise, we'll get a singular problem.
+pos=find(~md.mask.elementonwater);
+numpos=unique(md.mesh.elements(pos,:));
+nodes=setdiff(1:1:md.mesh.numberofvertices,numpos);
+md.stressbalance.spcvx(nodes)=md.inversion.vx_obs(nodes);
+md.stressbalance.spcvy(nodes)=md.inversion.vy_obs(nodes);
+
+%make sure icefronts that are completely spc'd are taken out:
+free_segments=find((~isnan(md.stressbalance.spcvx(md.stressbalance.icefront(:,1:2))) + ~isnan(md.stressbalance.spcvy(md.stressbalance.icefront(:,1:2))))~=2);
+md.stressbalance.icefront=md.stressbalance.icefront(free_segments,:);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/regional/BasinConstrainShelf.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/regional/BasinConstrainShelf.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/regional/BasinConstrainShelf.m	(revision 27955)
@@ -0,0 +1,74 @@
+function md=BasinConstrainShelf(md,domain)
+%BASINCONSTRAIN - constrain basin
+%
+%   Constrain basin using a constraint domain outline, 
+%   to dirichlet boundary conditions.
+%   constraindomain is an Argus domain outline file enclosing 
+%   the geographical area of interest.
+%
+%   Usage: 
+%      md=BasinConstrain(md,constraindomain)
+%
+%   Example:
+%      md=BasinConstrain(md,'DomainOutline.exp');
+%      md=BasinConstrain(md,'~Iceshelves.exp');
+
+%now, flag nodes and elements outside the domain outline.
+if ischar(domain),
+	if isempty(domain),
+		elementondomain=zeros(md.mesh.numberofelements,1);
+		vertexondomain=zeros(md.mesh.numberofvertices,1);
+		invert=0;
+	elseif strcmpi(domain,'all')
+		elementondomain=ones(md.mesh.numberofelements,1);
+		vertexondomain=ones(md.mesh.numberofvertices,1);
+		invert=0;
+	else
+		%make sure that we actually don't want the elements outside the domain outline!
+		if strcmpi(domain(1),'~'),
+			domain=domain(2:end);
+			invert=1;
+		else
+			invert=0;
+		end
+		%ok, flag elements and nodes
+		[vertexondomain elementondomain]=ContourToMesh(md.mesh.elements(:,1:3),md.mesh.x,md.mesh.y,domain,'element and node',2);
+	end
+	if invert,
+		vertexondomain=~vertexondomain;
+		elementondomain=~elementondomain;
+	end
+else
+	error('BasinConstrain error message: domain type not supported yet');
+end
+
+%list of elements and nodes not on domain
+vertexnotondomain=find(~vertexondomain);
+elementnotondomain=find(~elementondomain);
+
+%all elements outside the constraint domain are equivalent to water. all nodes outside are spc'd.
+md.stressbalance.spcvx(vertexnotondomain)=md.inversion.vx_obs(vertexnotondomain);
+md.stressbalance.spcvy(vertexnotondomain)=md.inversion.vy_obs(vertexnotondomain);
+md.mask.elementonwater(elementnotondomain)=1;
+
+%now, make sure all elements on water have nodes that are spc'd, otherwise, we'll get a singular problem.
+pos=find(~md.mask.elementonwater);
+numpos=unique(md.mesh.elements(pos,:));
+nodes=setdiff(1:1:md.mesh.numberofvertices,numpos);
+md.stressbalance.spcvx(nodes)=md.inversion.vx_obs(nodes);
+md.stressbalance.spcvy(nodes)=md.inversion.vy_obs(nodes);
+
+%make sure any node with NaN velocity is spc'd:
+%we spc to the smoothed value, so that control methods don't go berserk trying to figure out what reaction force to apply for the spc to stand.
+pos=find(isnan(md.inversion.vel_obs_raw));
+md.stressbalance.spcvx(pos)=md.inversion.vx_obs(pos); 
+md.stressbalance.spcvy(pos)=md.inversion.vy_obs(pos); 
+
+%iceshelves: any vertex on floating ice is spc'd
+pos=find(md.mask.ocean_levelset<0.);
+md.stressbalance.spcvx(pos)=md.inversion.vx_obs(pos); 
+md.stressbalance.spcvy(pos)=md.inversion.vy_obs(pos); 
+
+%make sure icefronts that are completely spc'd are taken out:
+free_segments=find((~isnan(md.stressbalance.spcvx(md.stressbalance.icefront(:,1:2))) + ~isnan(md.stressbalance.spcvy(md.stressbalance.icefront(:,1:2))) )~=2);
+md.stressbalance.icefront=md.stressbalance.icefront(free_segments,:);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/regional/basinzoom.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/regional/basinzoom.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/regional/basinzoom.m	(revision 27955)
@@ -0,0 +1,94 @@
+function varargout=basinzoom(varargin)
+%ANTZOOM - zoom on a basin in Antarctica or Greenland.
+%
+%   This function zooms on an existing figure describing Antarctica or Greenland 
+%   The zooming depends on the region name provided as input. 
+%
+%   Usage:
+%      varargout=basinzoom(options)
+
+%recover some options, and set defaults
+
+%is varargin an options database already?
+if nargin==0,
+	options=pairoptions(varargin{:});
+elseif (isa(varargin{1},'plotoptions') | isa(varargin{1},'pairoptions')),
+	%do nothing to the varargin: 
+	options=varargin{1};
+else
+	%process varargin for options: 
+	options=pairoptions(varargin{:});
+end
+
+unitmultiplier=getfieldvalue(options,'unit',NaN);
+basin=getfieldvalue(options,'basin');
+
+if exist(options,'basindelta'),
+
+	basindeltax=getfieldvalue(options,'basindelta',300); 
+	basindeltay=getfieldvalue(options,'basindelta',300); 
+else
+	basindeltax=getfieldvalue(options,'basindeltax',300); 
+	basindeltay=getfieldvalue(options,'basindeltay',300);
+end
+
+%multiply by 1000 to get kms
+basindeltax=basindeltax*1000;
+basindeltay=basindeltay*1000;
+
+%Ok, find basin we are talking about: 
+load([jplsvn() '/ModelData/Names/Names.mat']);
+
+%Go through names: 
+found=0;
+for i=1:size(names,1),
+	if strcmpi(names{i,1},basin),
+		%ok, we've got the region. Get lat and long: 
+		long=names{i,2};
+		lat=names{i,3};
+		hemisphere=names{i,4};
+		found=1;
+		break;
+	end
+end
+
+if ~found,
+	error(['basinzoom error message: cannot find basin ' basin '. Use isbasin to determine a basin name.']);
+end
+
+if hemisphere==+1,
+	central_meridian=getfieldvalue(options,'central_meridian',45);
+	standard_parallel=getfieldvalue(options,'standard_parallel',70);
+else
+	central_meridian=getfieldvalue(options,'central_meridian',0);
+	standard_parallel=getfieldvalue(options,'standard_parallel',71);
+end
+
+%Transform lat long into x,y: 
+[xc,yc]=ll2xy(lat,long,hemisphere,central_meridian,standard_parallel);
+
+%compute x0,x1 and y0,y1 using basindeltax and basindeltay
+x0=xc-basindeltax/2;
+x1=xc+basindeltax/2;
+y0=yc-basindeltay/2;
+y1=yc+basindeltay/2;
+
+if ~isnan(unitmultiplier)
+	x0=x0*unitmultiplier;
+	x1=x1*unitmultiplier;
+	y0=y0*unitmultiplier;
+	y1=y1*unitmultiplier;
+end
+
+%if output arguments are present, return the limits, 
+%otherwise, set them on the current graphic. 
+if nargout==2,
+	found=1;
+	varargout{1}=[x0 x1];
+	varargout{2}=[y0 y1];
+else
+	xlim([x0 x1]);
+	ylim([y0 y1]);
+	found=1;
+	daspect([1;1;1]);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/regional/isbasin.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/regional/isbasin.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/regional/isbasin.m	(revision 27955)
@@ -0,0 +1,17 @@
+function isbasin(name)
+%ISBASIN: figure out if a basin name exists.
+%
+%
+%        Usage:  index=isbasin('jks');
+%
+%
+
+%First, load basin names:
+load([jplsvn '/ModelData/Names/Names.mat']);
+
+%go through names: 
+for i=1:length(names),
+	if ~isempty(strfind(names{i,1},name)),
+		disp(['''' names{i,1} ''' Long:' num2str(names{i,2}) ' Lat:' num2str(names{i,3}) ]);
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/regional/plotbasins.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/regional/plotbasins.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/regional/plotbasins.m	(revision 27955)
@@ -0,0 +1,18 @@
+%display all the domain outlines in a directory
+
+basins=listfiles;
+
+hold on
+for i=1:length(basins), 
+	%check whether this is a .exp file
+	basin=basins{i};
+	if strcmpi(basin(end-3:end),'.exp'),
+
+		contour=expread(basin,0);
+		x=contour(1).x;
+		y=contour(1).y;
+		x0=mean(x); y0=mean(y);
+		text(x0,y0,basin(1:end-4),'Fontsize',14);
+		expdisp(basin);
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/regional/regionaltransient2d.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/regional/regionaltransient2d.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/regional/regionaltransient2d.m	(revision 27955)
@@ -0,0 +1,157 @@
+function md2=regionaltransient2d(md1,area,hmin,hmax,err,stepres)
+%regionaltransient2d - extract a model according to an Argus contour or flag list and remesh
+%               at new resolution res
+%
+%   This routine extracts a submodel from a bigger model with respect to a given contour
+%   md must be followed by the corresponding exp domain file (argus type, .exp extension). 
+%   The model will be remeshed at high rsolution hmin and low resolution hmax.  The ice 
+%   boundary velocities will be spc'd to the transient velocities at saved transient steps
+%   at the resolution optionally provided for stepres.  A stepres of 2 means that you wish
+%   to skip every other saved transient step.  This is useful when extracting a long transient.
+%
+%   Usage:
+%      md2=regionaltransient2d(md1,area,hmin,hmax,err);
+%
+%   Examples:
+%      md2=regionaltransient2d(md,'Domain.exp',500,10000,[15 250]);
+%      md2=regionaltransient2d(md,'Domain.exp',3000,15000,[10 300],2);
+%
+%   See also: MODELEXTRACT, EXTRUDE, COLLAPSE
+
+%some checks
+if ((nargin~=5) & (nargin~=6)),
+	help regionaltransient2d 
+	error('regionaltransient2d error message: bad usage');
+end
+
+%get check option
+if (nargin==5),
+	stepres=1;
+end
+
+%take every fields from model
+mde=md1.extract(area);
+mde.private.bamg=[];
+mde.mesh.extractedvertices=nan;
+mde.mesh.extractedelements=nan;
+
+%remesh
+md2=bamg(mde,'hmin',hmin,'hmax',hmax,'field',[mde.inversion.vel_obs mde.geometry.surface],'splitcorner',1,'KeepVertices',0,'err',err);
+md2=setmask(md2,'','');
+
+%automatically modify fields
+
+	%loop over model fields
+	model_fields=fieldnames(md1);
+	for i=1:length(model_fields),
+
+		%get field
+		field=md1.(model_fields{i});
+		fieldsize=size(field);
+
+		%copy field, interpolated to new mesh
+		if isobject(field), %recursive call
+			object_fields=fieldnames(md1.(model_fields{i}));
+			fname=['(model_fields{i}).(object_fields{j})'];
+		else
+			object_fields=field;
+			fname=['(model_fields{i})'];
+		end
+		for j=1:length(object_fields),
+			%get field
+			field=eval(['md2.' fname]);
+			fieldsize=size(field);
+
+			%size = number of nodes * n
+			for n=1:fieldsize(2)
+				if fieldsize(1)==mde.mesh.numberofvertices
+					if(sum(field(:,n) ~= field(1,n)) == 0)
+						eval(['md2.' fname '(1:md2.mesh.numberofvertices,n)=field(1,n)*ones(md2.mesh.numberofvertices,1);']);
+					else
+						eval(['md2.' fname '(1:md2.mesh.numberofvertices,n)=InterpFromMeshToMesh2d(mde.mesh.elements,mde.mesh.x,mde.mesh.y,field(:,n),md2.mesh.x,md2.mesh.y);']);
+					end
+					eval(['md2.' fname '(:,n)=md2.' fname '(1:md2.mesh.numberofvertices,n);']);
+				elseif fieldsize(1)==mde.mesh.numberofvertices+1
+					if(sum(field(1:end-1,n) ~= field(1,n)) == 0)
+						eval(['md2.' fname '(1:md2.mesh.numberofvertices+1,n)=[field(1,n)*ones(md2.mesh.numberofvertices,1); field(end,n)];']);
+					else
+						eval(['md2.' fname '(1:md2.mesh.numberofvertices+1,n)=[InterpFromMeshToMesh2d(mde.mesh.elements,mde.mesh.x,mde.mesh.y,field(1:end-1,n),md2.mesh.x,md2.mesh.y); field(end,n)];']);
+					end
+					eval(['md2.' fname '(:,n)=md2.' fname '(1:md2.mesh.numberofvertices+1,n)']);
+					%size = number of elements * n
+				elseif fieldsize(1)==mde.mesh.numberofelements
+					if(sum(field(1:end-1,n) ~= field(1,n)) == 0)
+						eval(['md2.' fname '(1:md2.mesh.numberofelements,n)=field(1,n)*ones(md2.mesh.numberofelements,1);']);
+					else
+						eval(['md2.' fname '(1:md2.mesh.numberofelements,n)=InterpFromMeshToMesh2d(mde.mesh.elements,mde.mesh.x,mde.mesh.y,field(:,n),md2.mesh.x,md2.mesh.y);']);
+					end
+					eval(['md2.' fname '(:,n)=md2.' fname '(1:md2.mesh.numberofelements,n);']);
+				end
+			end
+		end
+	end
+
+	%Read transient velocities and thickness, looping through only the populated times
+	spcx=[];
+	spcy=[];
+	spct=[];
+	steps=[];
+	nsteps=length(md1.results.TransientSolution);
+	count=0;
+	numElements=arrayfun(@(x) numel(x.step), md1.results.TransientSolution);
+	for t=find(numElements==1)
+		if ~isempty(md1.results.TransientSolution(t).Vel) & mod(count,stepres)==0,
+			vx=md1.results.TransientSolution(t).Vx;
+			vy=md1.results.TransientSolution(t).Vy;
+			thickness=md1.results.TransientSolution(t).Thickness;
+			spcx=[spcx InterpFromMeshToMesh2d(md1.mesh.elements,md1.mesh.x,md1.mesh.y,vx,md2.mesh.x,md2.mesh.y)];
+			spcy=[spcy InterpFromMeshToMesh2d(md1.mesh.elements,md1.mesh.x,md1.mesh.y,vy,md2.mesh.x,md2.mesh.y)];
+			spct=[spct InterpFromMeshToMesh2d(md1.mesh.elements,md1.mesh.x,md1.mesh.y,thickness,md2.mesh.x,md2.mesh.y)];
+			steps=[steps t*md1.timestepping.time_step];
+		end
+		count=count+1;
+	end
+
+	%As long as there are recorded time steps, spc the boundaries with velocities
+	if nsteps > 0
+		md2.stressbalance.spcvx=md2.stressbalance.spcvx*ones(1,size(spcx,2));
+		md2.stressbalance.spcvy=md2.stressbalance.spcvy*ones(1,size(spcy,2));
+		md2.stressbalance.spcvz=md2.stressbalance.spcvz*ones(1,size(spcx,2));
+		md2.masstransport.spcthickness=md2.masstransport.spcthickness*ones(1,size(spct,2));
+		md2.stressbalance.spcvx(find(md2.mesh.vertexonboundary),:)=spcx(find(md2.mesh.vertexonboundary),:);
+		md2.stressbalance.spcvy(find(md2.mesh.vertexonboundary),:)=spcy(find(md2.mesh.vertexonboundary),:);
+		md2.stressbalance.spcvz(find(md2.mesh.vertexonboundary),:)=0;
+		md2.masstransport.spcthickness(find(md2.mesh.vertexonboundary),:)=spct(find(md2.mesh.vertexonboundary),:);
+		md2.stressbalance.spcvx=[md2.stressbalance.spcvx; steps];
+		md2.stressbalance.spcvy=[md2.stressbalance.spcvy; steps];
+		md2.stressbalance.spcvz=[md2.stressbalance.spcvz; steps];
+		md2.masstransport.spcthickness=[md2.masstransport.spcthickness; steps];
+	end
+
+	%Stressbalance.  Don't spc the icefront vertices.
+	if ~isnan(md2.stressbalance.icefront)
+		md1s=md1.extract(area);
+		%md2.stressbalance.icefront=[md2.mesh.segments 2];
+		e2=md2.mesh.segments(:,end);
+		e1=md1s.mesh.segments(:,end);
+
+		pload = nan*ones(size(md1s.mesh.elements,1),1);
+		pload(md1s.stressbalance.icefront(:,end-1))=md1s.stressbalance.icefront(:,end);
+
+		x2=mean(md2.mesh.x(md2.mesh.elements(e2,:)),2);
+      y2=mean(md2.mesh.y(md2.mesh.elements(e2,:)),2);
+		x1=mean(md1s.mesh.x(md1s.mesh.elements),2);
+      y1=mean(md1s.mesh.y(md1s.mesh.elements),2);
+
+		pload2=griddata(x1,y1,pload,x2,y2,'nearest');
+		md2.stressbalance.icefront=[md2.mesh.segments(~isnan(pload2),:) pload2(~isnan(pload2))];
+		md2.stressbalance.spcvx(unique(md2.stressbalance.icefront(:,1:2)),:)=nan;
+		md2.stressbalance.spcvy(unique(md2.stressbalance.icefront(:,1:2)),:)=nan;
+		md2.stressbalance.spcvz(unique(md2.stressbalance.icefront(:,1:2)),:)=nan;
+		md2.masstransport.spcthickness(unique(md2.stressbalance.icefront(:,1:2)),:)=nan;
+	end
+
+	%Clear results fields
+	if isstruct(md1.results),
+		md2.results=[];
+	end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/regional/showbasins.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/regional/showbasins.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/regional/showbasins.m	(revision 27955)
@@ -0,0 +1,68 @@
+function showbasins(varargin)
+%SHOWBASINS - return basins that are within the xlim and ylim
+%
+%   Usage:
+%      names=showbasins(options);
+%   Options: 
+%      'unit' default 1
+%      'hemisphere': default +1;
+%      'central_meridian: 45 for Greenland and 0 for Antarctica
+%      'standard_parallel: 70 for Greenland and 71 for Antarctica
+%
+
+%is varargin an options database already?
+if nargin==0,
+	options=pairoptions(varargin{:});
+elseif (isa(varargin{1},'plotoptions') | isa(varargin{1},'pairoptions')),
+	%do nothing to the varargin: 
+	options=varargin{1};
+else
+	%process varargin for options: 
+	options=pairoptions(varargin{:});
+end
+
+%recover some options, and set defaults
+unitmultiplier=getfieldvalue(options,'unit',1);
+fontsize=getfieldvalue(options,'fontsize',12);
+hemisphere=getfieldvalue(options,'hemisphere');
+
+if strcmpi(hemisphere,'s'),
+	hemisphere=-1;
+elseif strcmpi(hemisphere,'n'),
+	hemisphere=+1;
+else
+	error('showbasins error message: hemispehre should be either ''n'' or ''s''');
+	end
+
+if hemisphere==+1,
+	central_meridian=getfieldvalue(options,'central_meridian',45);
+	standard_parallel=getfieldvalue(options,'standard_parallel',70);
+else
+	central_meridian=getfieldvalue(options,'central_meridian',0);
+	standard_parallel=getfieldvalue(options,'standard_parallel',71);
+end
+
+%Ok, find basin we are talking about: 
+load([jplsvn '/projects/ModelData/Names/Names.mat']);
+
+%Get xlim and ylim, and convert into lat,long: 
+xlimits=xlim; x0=xlimits(1); x1=xlimits(2);
+ylimits=ylim; y0=ylimits(1); y1=ylimits(2);
+
+%Convert names lat and long into x,y:
+lat=cell2mat(names(:,3));
+long=cell2mat(names(:,2));
+
+%Now, convert lat,long into x,y:
+[x,y]=ll2xy(lat,long,hemisphere,central_meridian,standard_parallel);
+
+%Find  x,y within xlimits and ylimits: 
+locations=find(x>x0 & x<x1 & y>y0 & y<y1);
+
+%Go through locations, and display the names: 
+for i=1:size(locations,1),
+	hold on,
+	plot(x(locations(i)),y(locations(i)),'r.');
+	t=text(x(locations(i)),y(locations(i)),names{locations(i),1}); 
+	set(t,'FontSize',fontsize);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/shp/isshp.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/shp/isshp.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/shp/isshp.m	(revision 27955)
@@ -0,0 +1,14 @@
+function bool=isshp(filename)
+%ISSHP - is a file an shpfile? 
+%
+%   Usage:
+%      isshp(filename);
+%
+%   See also SHPREAD, SHPDOC
+
+[path,name,ext]=fileparts(filename); 
+if strcmpi(ext,'.shp'),
+	bool=1;
+else 
+	bool=0;
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/shp/projectedges.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/shp/projectedges.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/shp/projectedges.m	(revision 27955)
@@ -0,0 +1,21 @@
+function edges=projectedges(edges,shppath,epsg)
+%Gothrough edges (shapefiles), and project them in the epsg reference frame. 
+
+for i=1:length(edges)/3, 
+	shpname=[shppath '/' edges{3*(i-1)+1}];
+	shpepsg=edges{3*(i-1)+2};
+	if shpepsg==epsg,
+		%do nothing; 
+	else
+		%use gdaltransform to reproject the shp file: and give it another name.
+		contour=shpread([shpname '.shp']);
+		[contour.x,contour.y]=gdaltransform(contour.x,contour.y,sprintf('EPSG:%i',shpepsg),sprintf('EPSG:%i',epsg));
+		%write: 
+		shpwrite(contour,[shpname  '-' num2str(epsg) '.shp']);
+		%modify the name: 
+		edges{3*(i-1)+1}=[edges{3*(i-1)+1} '-' num2str(epsg)];
+	end
+end
+
+%extract new edges:  
+ind=1:length(edges); edges=edges(find(mod(ind,3)~=2));
Index: /issm/branches/trunk-dlcheng-ASE/src/m/shp/shp2exp.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/shp/shp2exp.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/shp/shp2exp.m	(revision 27955)
@@ -0,0 +1,81 @@
+function shp2exp(shpfilename,expfilename)
+%SHP2EXP - transform shape file to Argus .exp file
+%
+%   Usage:
+%      shp2exp(shpfilename,expfilename);
+%
+%   Example:
+%      shp2exp('Domain.shp','Domain.exp');
+%
+%   See also EXPMASTER, EXPDOC
+
+%check file extensions
+[pathstr,name,ext] = fileparts(shpfilename);
+if ~strcmp(ext,'.shp'),
+	error(['Shapefile ' shpfilename ' does not have an extension .shp']);
+end
+
+[pathstr,name,ext] = fileparts(expfilename);
+if ~strcmp(ext,'.exp'),
+	error(['Exp file ' expfilename ' does not have an extension .exp']);
+end
+
+if ~exist(shpfilename,'file'),
+	error(['Shapefile ' shpfilename ' does not exist']);
+end
+shp=shaperead(shpfilename);
+
+expstruct=struct([]);
+for i=1:length(shp),
+	if strcmpi(shp(i).Geometry,'Polygon'),
+		x=shp(i).X; y=shp(i).Y;
+		ids=find(isnan(x));
+		x(ids)=[]; y(ids)=[];
+		expstruct(end+1).x=x;
+		expstruct(end).y=y;
+		expstruct(end).nods=length(x);
+		expstruct(end).density=1;
+		expstruct(end).closed=1;
+		if isfield(shp(i),'id'),
+			expstruct(end).name=num2str(shp(i).id);
+		elseif isfield(shp(i),'NAME'),
+			expstruct(end).name=num2str(shp(i).NAME);
+		elseif isfield(shp(i),'SUBREGION1'),
+			expstruct(end).name=num2str(shp(i).SUBREGION1);
+		else
+			expstruct(end).name='unknown';
+		end
+	elseif strcmpi(shp(i).Geometry,'Point'),
+		x=shp(i).X; y=shp(i).Y;
+		if ~isnan(x) && ~isnan(y)
+			expstruct(end+1).x=x;
+			expstruct(end).y=y;
+			expstruct(end).nods=length(x);
+			expstruct(end).density=1;
+			expstruct(end).closed=0;
+			%exp(end).name=num2str(shp(i).id);
+		end
+	elseif strcmpi(shp(i).Geometry,'PointZ'),
+		shp(i)
+	elseif strcmpi(shp(i).Geometry,'Line'),
+		x=shp(i).X(:); y=shp(i).Y(:);
+		pos = find(~isnan(x) & ~isnan(y));
+		idx=find(diff(pos)~=1);
+		if numel(idx)==0
+			disp(['Skipping Line ' num2str(i)]);
+			continue;
+		end
+		A=[idx(1);diff(idx);numel(pos)-idx(end)];
+		Cx=mat2cell(x(pos),A,1);
+		Cy=mat2cell(y(pos),A,1);
+		for i=1:numel(Cx)
+			expstruct(end+1).x=Cx{i};
+			expstruct(end).y=Cy{i};
+			expstruct(end).nods=length(Cx{i});
+			expstruct(end).density=1;
+			expstruct(end).closed=0;
+		end
+	end
+end
+
+expwrite(expstruct,expfilename);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/shp/shp2exp.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/shp/shp2exp.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/shp/shp2exp.py	(revision 27955)
@@ -0,0 +1,56 @@
+import os
+import shapefile
+from expwrite import expwrite
+
+
+def shp2exp(shapefilename, *expfilename):
+    """SHP2EXP - Convert a shapefile to an Argus .exp file. Optionally, 
+    expfilename can be specified to give a name for the .exp file to be 
+    created, otherwise the .exp file will have the same prefix as the .shp 
+    file.
+
+    Usage:
+        shp2exp(shapefilename)
+        shp2exp(shapefilename, expfilename)
+
+    Examples:
+        shp2exp('Domain.shp') # Creates Domain.exp
+        shp2exp('Domain.shp', 'Domain.exp')
+
+    See also EXPMASTER, EXPDOC
+    """
+
+    if not os.path.exists(shapefilename):
+        raise IOError('shp2exp error message: file {} not found!'.format(shapefilename))
+    if not len(expfilename):
+        expfile = os.path.splitext(shapefilename)[0] + '.exp'
+    else:
+        expfile = expfilename[0]
+
+    shp = shapefile.Reader(shapefilename)
+    expdict = dict(density=1)
+
+    x = []
+    y = []
+    for i in range(len(shp.shapes())):
+        geom = shp.shapes()[i].shapeType
+        if geom == 5: # polygon
+            expdict['closed'] = 1
+            tmpx = [p[0] for p in shp.shapes()[i].points]
+            tmpy = [q[1] for q in shp.shapes()[i].points]
+            x.append(tmpx)
+            y.append(tmpy)
+        elif geom == 3: # line
+            expdict['closed'] = 0
+            tmpx = [p[0] for p in shp.shapes()[i].points]
+            tmpy = [q[1] for q in shp.shapes()[i].points]
+            x.append(tmpx)
+            y.append(tmpy)
+        elif geom == 1: # point
+            expdict['closed'] = 0
+            x.append(shp.shapes()[i].points[0][0])
+            y.append(shp.shapes()[i].points[0][1])
+
+    expdict['x'] = x
+    expdict['y'] = y
+    expwrite(expdict, expfile)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/shp/shp2js.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/shp/shp2js.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/shp/shp2js.m	(revision 27955)
@@ -0,0 +1,31 @@
+function shp2js(jsname,shpname,domainname)
+
+	shp=shpread(shpname);
+	
+	fid=fopen(jsname,'w');
+	fprintf(fid,'var %s={}\n',domainname);
+
+	for i=1:length(shp),
+	
+		fprintf(fid,'%s[%i]={}\n',domainname,i-1);
+
+		x=shp(i).x;
+		y=shp(i).y;
+		nods=shp(i).nods;
+
+		fprintf(fid,'<!-- %s[%i]{{{-->\n',domainname,i-1);
+		
+		fprintf(fid,'%s[%i][''x'']=[',domainname,i-1);
+		for j=1:nods-1,
+			fprintf(fid,'%g,',x(j));
+		end
+		fprintf(fid,'%g];\n',x(end));
+		
+		fprintf(fid,'%s[%i][''y'']=[',domainname,i-1);
+		for j=1:nods-1,
+			fprintf(fid,'%g,',y(j));
+		end
+		fprintf(fid,'%g];\n',y(end));
+		fprintf(fid,'<!--}}}-->\n');
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpcoarsen.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpcoarsen.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpcoarsen.m	(revision 27955)
@@ -0,0 +1,73 @@
+function shpcoarsen(newfile,oldfile,resolution)
+%SHPCOARSEN - coarsen an shp polygon
+%
+%   This routine reads a polygon shapefile and remove points with respect to
+%   the resolution (in meters) given in input. 
+%
+%   Usage:
+%      shpcoarsen(newfile,oldfile,resolution)
+%
+%   Example:
+%       shpcoarsen('DomainOutline.shp','Antarctica.shp',4000)
+
+%Some checks
+if nargin~=3 | nargout
+	error('shpcoarsen usage: shpcoarsen(newfile,oldfile,resolution)')
+elseif ~exist(oldfile)
+	error(['shpcoarsen error message: the file ' oldfile ' does not exist'])
+elseif exist(newfile),
+	%choice=input(['A file ' newfile ' already exists, do you want to modify it? (y/n)'],'s');
+	%if ~strcmpi(choice,'y'),
+	%	disp('no modification done ... exiting');
+	%	return;
+	%end
+end
+
+%Get oldfile: 
+A=shpread(oldfile);
+numprofiles=size(A,2);
+
+%Go through the profiles
+count=1;
+while count<=numprofiles,
+
+	%get number of points and initialize j
+	numpoints=length(A(count).x);
+	j=1;
+
+	%stop if we have reached end of profile (always keep the last point)
+	while j<numpoints,
+
+		%See whether we keep this point or not
+		distance=sqrt((A(count).x(j)-A(count).x(j+1))^2+(A(count).y(j)-A(count).y(j+1))^2);
+		if distance<resolution & j<numpoints-1  %do not remove last point
+			A(count).x(j+1)=[];
+			A(count).y(j+1)=[];
+			numpoints=numpoints-1;
+		else
+			division=floor(distance/resolution)+1;
+			if division>=2,
+				x=linspace(A(count).x(j),A(count).x(j+1),division)';
+				y=linspace(A(count).y(j),A(count).y(j+1),division)';
+				A(count).x=[A(count).x(1:j);x(2:end-1); A(count).x(j+1:end)];
+				A(count).y=[A(count).y(1:j);y(2:end-1); A(count).y(j+1:end)];
+
+				%update current point
+				j=j+1+division-2;
+				numpoints=numpoints+division-2;
+			else
+				%update current point
+				j=j+1;
+			end
+		end
+	end
+	if length(A(count).x)<=1,
+		A(count)=[];
+		numprofiles=numprofiles-1;
+	else
+		count=count+1;
+	end
+end
+
+%write output
+shpwrite(A,newfile);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpconcat.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpconcat.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpconcat.m	(revision 27955)
@@ -0,0 +1,20 @@
+function shpconcat(domain,holes,filename)
+%SHPWRITE - concat a shape file from a domain and holes
+%
+%   Usage:
+%      shpconcat(domain,holes,filename)
+%
+%   Example:
+%      shpconcat(domain,holes,'domainoutline.shp')
+%
+%   See also SHPREAD,SHPWRITE
+
+
+	merged=domain;
+	merged.Geometry='Polygon';
+
+	for i=1:length(holes),
+		merged(end+1)=struct('x',holes(i).x,'y',holes(i).y,'Geometry','Polygon');
+	end
+
+	shpwrite(merged,filename);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpdisp.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpdisp.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpdisp.m	(revision 27955)
@@ -0,0 +1,57 @@
+function shpdisp(domainoutline,varargin)
+%SHPDISP - plot the contours of a domain outline file
+%
+%   This routine reads in a domain outline file (Shape format) and plots all the contours 
+%
+%   Usage:
+%      shpdisp(domainoutline,varargin)
+%      shpdisp(domainoutline,figurenumber,linestyle,linewidth,unitmultiplier)
+%
+%   Example:
+%      shpdisp('Domain.shp',1,'--r',2,10^3);
+%
+%   See also SHPREAD, SHPDOC
+
+%check nargin
+if ~nargin | nargin>5
+	help shpdisp
+	error('shpdisp error message: bad usage');
+end
+
+%parse input
+if nargin<=1,
+	figurenumber=1;
+else
+	figurenumber=varargin{1};
+end
+if nargin<=2
+	linestyle='r-';
+else
+	linestyle=varargin{2};
+end
+if nargin<=3
+	linewidth=1;
+else
+	linewidth=varargin{3};
+end
+if nargin<=4
+	unitmultiplier=1;
+else
+	unitmultiplier=varargin{4}; if isnan(unitmultiplier), unitmultiplier=1; end
+end
+
+domain=shpread(domainoutline);
+
+figure(figurenumber),hold on
+for i=1:length(domain),
+	if(isfield(domain,'nods'))
+		if (isnumeric(linestyle))
+			plot(domain(i).x*unitmultiplier,domain(i).y*unitmultiplier,'Color',linestyle,'linewidth',linewidth);
+		else
+			plot(domain(i).x*unitmultiplier,domain(i).y*unitmultiplier,linestyle,'linewidth',linewidth);
+	  end
+	else
+		plot(domain(i).x*unitmultiplier,domain(i).y*unitmultiplier,'ro','MarkerSize',5);
+	end
+	
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpdisp3d.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpdisp3d.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpdisp3d.m	(revision 27955)
@@ -0,0 +1,52 @@
+function shpdisp3d(domainoutline,varargin)
+%SHPDISP - plot the contours of a domain outline file on a globe in 3d
+%
+%   This routine reads in a domain outline file (Shape format) and plots all the contours on a 3D rendition of the earth.
+%
+%   Usage:
+%      shpdisp3d(domainoutline,varargin)
+%      shpdisp3d(filenamei,'figure',1,'style',stylei,'linewidth',linewidthi);
+%
+%   Example:
+%      shpdisp3d('Domain.shp','figure',1,'style','--r','linewidthi',2);
+%
+%   See also SHPREAD, SHPDOC, SHPDISP
+
+%recover options
+options=pairoptions(varargin{:});
+
+%parse input:
+figurenumber=getfieldvalue(options,'figure',1);
+color=getfieldvalue(options,'color','r');
+linewidth=getfieldvalue(options,'linewidth',1);
+unitmultiplier=getfieldvalue(options,'unit',1);
+epsg=getfieldvalue(options,'epsg',4326);
+radius=getfieldvalue(options,'radius',6371012);
+aboveground=getfieldvalue(options,'aboveground',1000)
+
+%read domain:
+domain=shpread(domainoutline);
+
+if epsg~=4326,
+	%transform to lat,long:
+	for i=1:length(domain),
+		[x,y] = gdaltransform(domain(i).x,domain(i).y,'EPSG:4326',sprintf('EPSG:%i',epsg));
+		domain(i).x=x; domain(i).y=y;
+	end
+end
+
+for i=1:length(domain),
+
+	%make sure lat,long are what they are supposed to be: 
+	if any(domain(i).x>90 | domain(i).x<-90), 
+		long=domain(i).x; lat=domain(i).y;
+	else
+		long=domain(i).y; lat=domain(i).x;
+	end
+
+	%project on x,y,z reference frame.
+	[x,y,z]=AboveGround(lat,long,radius,aboveground);
+	hold on, p=plot3(x,y,z,'k-'); 
+	set(p,'Color',color);
+	set(p,'LineWidth',linewidth);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpfromxy.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpfromxy.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpfromxy.m	(revision 27955)
@@ -0,0 +1,15 @@
+function shpinput(x,y)
+
+
+%create shape file and open it: 
+geom.x=x;
+geom.y=y;
+geom.density=1;
+geom.name='Point';
+geom.Geometry='Point';
+name=[tempname '.shp'];
+
+shpwrite(geom,name);
+system(['open ' name]);
+
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpinput.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpinput.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpinput.m	(revision 27955)
@@ -0,0 +1,17 @@
+function shpinput(num)
+
+a=ginput(num);
+
+
+%create shape file and open it: 
+geom.x=a(1); 
+geom.y=a(2);
+geom.density=1;
+geom.name='Point';
+geom.Geometry='Point';
+name=[tempname '.shp'];
+
+shpwrite(geom,name);
+system(['open ' name]);
+
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpread.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpread.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpread.js	(revision 27955)
@@ -0,0 +1,22845 @@
+(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.shp = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
+(function (Buffer){
+'use strict';
+var Promise = require('lie');
+module.exports = binaryAjax;
+function binaryAjax(url){
+	return new Promise(function(resolve,reject){
+		var type = url.slice(-3);
+		var ajax = new XMLHttpRequest();
+		ajax.open('GET',url,true);
+		if(type !== 'prj' && type !== 'cpg'){
+			ajax.responseType='arraybuffer';
+		}
+		ajax.addEventListener('load', function (){
+			if(ajax.status>399){
+				if(type==='prj' || type === 'cpg'){
+					return resolve(false);
+				}else{
+					return reject(new Error(ajax.status));
+				}
+			}
+			if(type !== 'prj' && type !== 'cpg'){
+				return resolve(new Buffer(ajax.response));
+			} else {
+				return resolve(ajax.response);
+			}
+		}, false);
+		ajax.send();
+	});
+}
+
+}).call(this,require("buffer").Buffer)
+},{"buffer":6,"lie":34}],2:[function(require,module,exports){
+'use strict';
+
+function isClockWise(array) {
+  var sum = 0;
+  var i = 1;
+  var len = array.length;
+  var prev, cur;
+  while (i < len) {
+    prev = cur || array[0];
+    cur = array[i];
+    sum += ((cur[0] - prev[0]) * (cur[1] + prev[1]));
+    i++;
+  }
+  return sum > 0;
+}
+
+function polyReduce(a, b) {
+  if (isClockWise(b) || !a.length) {
+    a.push([b]);
+  } else {
+    a[a.length - 1].push(b);
+  }
+  return a;
+}
+ParseShp.prototype.parsePoint = function(data) {
+  return {
+    'type': 'Point',
+    'coordinates': this.parseCoord(data, 0)
+  };
+};
+ParseShp.prototype.parseZPoint = function(data) {
+  var pointXY = this.parsePoint(data);
+  pointXY.coordinates.push(this.parseCoord(data, 16));
+  return pointXY;
+};
+ParseShp.prototype.parsePointArray = function(data, offset, num) {
+  var out = [];
+  var done = 0;
+  while (done < num) {
+    out.push(this.parseCoord(data, offset));
+    offset += 16;
+    done++;
+  }
+  return out;
+};
+ParseShp.prototype.parseZPointArray = function(data, zOffset, num, coordinates) {
+  var i = 0;
+  while (i < num) {
+    coordinates[i].push(data.readDoubleLE(zOffset));
+    i++;
+    zOffset += 8;
+  }
+  return coordinates;
+};
+ParseShp.prototype.parseArrayGroup = function(data, offset, partOffset, num, tot) {
+  var out = [];
+  var done = 0;
+  var curNum, nextNum = 0,
+    pointNumber;
+  while (done < num) {
+    done++;
+    partOffset += 4;
+    curNum = nextNum;
+    if (done === num) {
+      nextNum = tot;
+    } else {
+      nextNum = data.readInt32LE(partOffset);
+    }
+    pointNumber = nextNum - curNum;
+    if (!pointNumber) {
+      continue;
+    }
+    out.push(this.parsePointArray(data, offset, pointNumber));
+    offset += (pointNumber << 4);
+  }
+  return out;
+};
+ParseShp.prototype.parseZArrayGroup = function(data, zOffset, num, coordinates) {
+  var i = 0;
+  while (i < num) {
+    coordinates[i] = this.parseZPointArray(data, zOffset, coordinates[i].length, coordinates[i]);
+    zOffset += (coordinates[i].length << 3);
+    i++;
+  }
+  return coordinates;
+};
+ParseShp.prototype.parseMultiPoint = function(data) {
+  var out = {};
+  var mins = this.parseCoord(data, 0);
+  var maxs = this.parseCoord(data, 16);
+  out.bbox = [
+    mins[0],
+    mins[1],
+    maxs[0],
+    maxs[1]
+  ];
+  var num = data.readInt32LE(32, true);
+  var offset = 36;
+  if (num === 1) {
+    out.type = 'Point';
+    out.coordinates = this.parseCoord(data, offset);
+  } else {
+    out.type = 'MultiPoint';
+    out.coordinates = this.parsePointArray(data, offset, num);
+  }
+  return out;
+};
+ParseShp.prototype.parseZMultiPoint = function(data) {
+  var geoJson = this.parseMultiPoint(data);
+  var num;
+  if (geoJson.type === 'Point') {
+    geoJson.coordinates.push(data.readDoubleLE(72));
+    return geoJson;
+  } else {
+    num = geoJson.coordinates.length;
+  }
+  var zOffset = 52 + (num << 4);
+  geoJson.coordinates = this.parseZPointArray(data, zOffset, num, geoJson.coordinates);
+  return geoJson;
+};
+ParseShp.prototype.parsePolyline = function(data) {
+  var out = {};
+  var mins = this.parseCoord(data, 0);
+  var maxs = this.parseCoord(data, 16);
+  out.bbox = [
+    mins[0],
+    mins[1],
+    maxs[0],
+    maxs[1]
+  ];
+  var numParts = data.readInt32LE(32);
+  var num = data.readInt32LE(36);
+  var offset, partOffset;
+  if (numParts === 1) {
+    out.type = 'LineString';
+    offset = 44;
+    out.coordinates = this.parsePointArray(data, offset, num);
+  } else {
+    out.type = 'MultiLineString';
+    offset = 40 + (numParts << 2);
+    partOffset = 40;
+    out.coordinates = this.parseArrayGroup(data, offset, partOffset, numParts, num);
+  }
+  return out;
+};
+ParseShp.prototype.parseZPolyline = function(data) {
+  var geoJson = this.parsePolyline(data);
+  var num = geoJson.coordinates.length;
+  var zOffset;
+  if (geoJson.type === 'LineString') {
+    zOffset = 60 + (num << 4);
+    geoJson.coordinates = this.parseZPointArray(data, zOffset, num, geoJson.coordinates);
+    return geoJson;
+  } else {
+    var totalPoints = geoJson.coordinates.reduce(function(a, v) {
+      return a + v.length;
+    }, 0);
+    zOffset = 56 + (totalPoints << 4) + (num << 2);
+    geoJson.coordinates = this.parseZArrayGroup(data, zOffset, num, geoJson.coordinates);
+    return geoJson;
+  }
+};
+ParseShp.prototype.polyFuncs = function(out) {
+  if (out.type === 'LineString') {
+    out.type = 'Polygon';
+    out.coordinates = [out.coordinates];
+    return out;
+  } else {
+    out.coordinates = out.coordinates.reduce(polyReduce, []);
+    if (out.coordinates.length === 1) {
+      out.type = 'Polygon';
+      out.coordinates = out.coordinates[0];
+      return out;
+    } else {
+      out.type = 'MultiPolygon';
+      return out;
+    }
+  }
+};
+ParseShp.prototype.parsePolygon = function(data) {
+  return this.polyFuncs(this.parsePolyline(data));
+};
+ParseShp.prototype.parseZPolygon = function(data) {
+  return this.polyFuncs(this.parseZPolyline(data));
+};
+var shpFuncObj = {
+  1: 'parsePoint',
+  3: 'parsePolyline',
+  5: 'parsePolygon',
+  8: 'parseMultiPoint',
+  11: 'parseZPoint',
+  13: 'parseZPolyline',
+  15: 'parseZPolygon',
+  18: 'parseZMultiPoint'
+};
+
+
+
+function makeParseCoord(trans) {
+  if (trans) {
+    return function(data, offset) {
+      return trans.inverse([data.readDoubleLE(offset), data.readDoubleLE(offset + 8)]);
+    };
+  } else {
+    return function(data, offset) {
+      return [data.readDoubleLE(offset), data.readDoubleLE(offset + 8)];
+    };
+  }
+}
+
+function ParseShp(buffer, trans) {
+  if (!(this instanceof ParseShp)) {
+    return new ParseShp(buffer, trans);
+  }
+  this.buffer = buffer;
+  this.shpFuncs(trans);
+  this.rows = this.getRows();
+}
+ParseShp.prototype.shpFuncs = function(tran) {
+  var num = this.getShpCode();
+  if (num > 20) {
+    num -= 20;
+  }
+  if (!(num in shpFuncObj)) {
+    throw new Error('I don\'t know that shp type');
+  }
+  this.parseFunc = this[shpFuncObj[num]];
+  this.parseCoord = makeParseCoord(tran);
+};
+ParseShp.prototype.getShpCode = function() {
+  return this.parseHeader().shpCode;
+};
+ParseShp.prototype.parseHeader = function() {
+  var view = this.buffer.slice(0, 100);
+  return {
+    length: view.readInt32BE(6 << 2),
+    version: view.readInt32LE(7 << 2),
+    shpCode: view.readInt32LE(8 << 2),
+    bbox: [
+      view.readDoubleLE(9 << 2),
+      view.readDoubleLE(11 << 2),
+      view.readDoubleLE(13 << 2),
+      view.readDoubleLE(13 << 2)
+    ]
+  };
+};
+ParseShp.prototype.getRows = function() {
+  var offset = 100;
+  var len = this.buffer.byteLength;
+  var out = [];
+  var current;
+  while (offset < len) {
+    current = this.getRow(offset);
+    offset += 8;
+    offset += current.len;
+    if (current.type) {
+      out.push(this.parseFunc(current.data));
+    }
+  }
+  return out;
+};
+ParseShp.prototype.getRow = function(offset) {
+  var view = this.buffer.slice(offset, offset + 12);
+  var len = view.readInt32BE(4) << 1;
+  var data = this.buffer.slice(offset + 12, offset + len + 8);
+
+  return {
+    id: view.readInt32BE(0),
+    len: len,
+    data: data,
+    type: view.readInt32LE(8)
+  };
+};
+module.exports = function(buffer, trans) {
+  return new ParseShp(buffer, trans).rows;
+};
+
+},{}],3:[function(require,module,exports){
+'use strict';
+
+var JSZip = require('jszip');
+module.exports = function(buffer) {
+	var zip = new JSZip(buffer);
+	var files = zip.file(/.+/);
+	var out = {};
+	files.forEach(function(a) {
+		if (a.name.slice(-3).toLowerCase() === 'shp' || a.name.slice(-3).toLowerCase() === 'dbf') {
+			out[a.name] = a.asNodeBuffer();
+		}
+		else {
+			out[a.name] = a.asText();
+		}
+	});
+	return out;
+};
+
+},{"jszip":19}],4:[function(require,module,exports){
+'use strict'
+
+exports.byteLength = byteLength
+exports.toByteArray = toByteArray
+exports.fromByteArray = fromByteArray
+
+var lookup = []
+var revLookup = []
+var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
+
+var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
+for (var i = 0, len = code.length; i < len; ++i) {
+  lookup[i] = code[i]
+  revLookup[code.charCodeAt(i)] = i
+}
+
+revLookup['-'.charCodeAt(0)] = 62
+revLookup['_'.charCodeAt(0)] = 63
+
+function placeHoldersCount (b64) {
+  var len = b64.length
+  if (len % 4 > 0) {
+    throw new Error('Invalid string. Length must be a multiple of 4')
+  }
+
+  // the number of equal signs (place holders)
+  // if there are two placeholders, than the two characters before it
+  // represent one byte
+  // if there is only one, then the three characters before it represent 2 bytes
+  // this is just a cheap hack to not do indexOf twice
+  return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
+}
+
+function byteLength (b64) {
+  // base64 is 4/3 + up to two characters of the original data
+  return (b64.length * 3 / 4) - placeHoldersCount(b64)
+}
+
+function toByteArray (b64) {
+  var i, l, tmp, placeHolders, arr
+  var len = b64.length
+  placeHolders = placeHoldersCount(b64)
+
+  arr = new Arr((len * 3 / 4) - placeHolders)
+
+  // if there are placeholders, only get up to the last complete 4 chars
+  l = placeHolders > 0 ? len - 4 : len
+
+  var L = 0
+
+  for (i = 0; i < l; i += 4) {
+    tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
+    arr[L++] = (tmp >> 16) & 0xFF
+    arr[L++] = (tmp >> 8) & 0xFF
+    arr[L++] = tmp & 0xFF
+  }
+
+  if (placeHolders === 2) {
+    tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
+    arr[L++] = tmp & 0xFF
+  } else if (placeHolders === 1) {
+    tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
+    arr[L++] = (tmp >> 8) & 0xFF
+    arr[L++] = tmp & 0xFF
+  }
+
+  return arr
+}
+
+function tripletToBase64 (num) {
+  return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
+}
+
+function encodeChunk (uint8, start, end) {
+  var tmp
+  var output = []
+  for (var i = start; i < end; i += 3) {
+    tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
+    output.push(tripletToBase64(tmp))
+  }
+  return output.join('')
+}
+
+function fromByteArray (uint8) {
+  var tmp
+  var len = uint8.length
+  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
+  var output = ''
+  var parts = []
+  var maxChunkLength = 16383 // must be multiple of 3
+
+  // go through the array every three bytes, we'll deal with trailing stuff later
+  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
+    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
+  }
+
+  // pad the end with zeros, but make sure to not forget the extra bytes
+  if (extraBytes === 1) {
+    tmp = uint8[len - 1]
+    output += lookup[tmp >> 2]
+    output += lookup[(tmp << 4) & 0x3F]
+    output += '=='
+  } else if (extraBytes === 2) {
+    tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
+    output += lookup[tmp >> 10]
+    output += lookup[(tmp >> 4) & 0x3F]
+    output += lookup[(tmp << 2) & 0x3F]
+    output += '='
+  }
+
+  parts.push(output)
+
+  return parts.join('')
+}
+
+},{}],5:[function(require,module,exports){
+
+},{}],6:[function(require,module,exports){
+(function (global){
+/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
+ * @license  MIT
+ */
+/* eslint-disable no-proto */
+
+'use strict'
+
+var base64 = require('base64-js')
+var ieee754 = require('ieee754')
+var isArray = require('isarray')
+
+exports.Buffer = Buffer
+exports.SlowBuffer = SlowBuffer
+exports.INSPECT_MAX_BYTES = 50
+
+/**
+ * If `Buffer.TYPED_ARRAY_SUPPORT`:
+ *   === true    Use Uint8Array implementation (fastest)
+ *   === false   Use Object implementation (most compatible, even IE6)
+ *
+ * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
+ * Opera 11.6+, iOS 4.2+.
+ *
+ * Due to various browser bugs, sometimes the Object implementation will be used even
+ * when the browser supports typed arrays.
+ *
+ * Note:
+ *
+ *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
+ *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
+ *
+ *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
+ *
+ *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
+ *     incorrect length in some situations.
+
+ * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
+ * get the Object implementation, which is slower but behaves correctly.
+ */
+Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined
+  ? global.TYPED_ARRAY_SUPPORT
+  : typedArraySupport()
+
+/*
+ * Export kMaxLength after typed array support is determined.
+ */
+exports.kMaxLength = kMaxLength()
+
+function typedArraySupport () {
+  try {
+    var arr = new Uint8Array(1)
+    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
+    return arr.foo() === 42 && // typed array instances can be augmented
+        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
+        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
+  } catch (e) {
+    return false
+  }
+}
+
+function kMaxLength () {
+  return Buffer.TYPED_ARRAY_SUPPORT
+    ? 0x7fffffff
+    : 0x3fffffff
+}
+
+function createBuffer (that, length) {
+  if (kMaxLength() < length) {
+    throw new RangeError('Invalid typed array length')
+  }
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    // Return an augmented `Uint8Array` instance, for best performance
+    that = new Uint8Array(length)
+    that.__proto__ = Buffer.prototype
+  } else {
+    // Fallback: Return an object instance of the Buffer class
+    if (that === null) {
+      that = new Buffer(length)
+    }
+    that.length = length
+  }
+
+  return that
+}
+
+/**
+ * The Buffer constructor returns instances of `Uint8Array` that have their
+ * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
+ * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
+ * and the `Uint8Array` methods. Square bracket notation works as expected -- it
+ * returns a single octet.
+ *
+ * The `Uint8Array` prototype remains unmodified.
+ */
+
+function Buffer (arg, encodingOrOffset, length) {
+  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
+    return new Buffer(arg, encodingOrOffset, length)
+  }
+
+  // Common case.
+  if (typeof arg === 'number') {
+    if (typeof encodingOrOffset === 'string') {
+      throw new Error(
+        'If encoding is specified then the first argument must be a string'
+      )
+    }
+    return allocUnsafe(this, arg)
+  }
+  return from(this, arg, encodingOrOffset, length)
+}
+
+Buffer.poolSize = 8192 // not used by this implementation
+
+// TODO: Legacy, not needed anymore. Remove in next major version.
+Buffer._augment = function (arr) {
+  arr.__proto__ = Buffer.prototype
+  return arr
+}
+
+function from (that, value, encodingOrOffset, length) {
+  if (typeof value === 'number') {
+    throw new TypeError('"value" argument must not be a number')
+  }
+
+  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
+    return fromArrayBuffer(that, value, encodingOrOffset, length)
+  }
+
+  if (typeof value === 'string') {
+    return fromString(that, value, encodingOrOffset)
+  }
+
+  return fromObject(that, value)
+}
+
+/**
+ * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
+ * if value is a number.
+ * Buffer.from(str[, encoding])
+ * Buffer.from(array)
+ * Buffer.from(buffer)
+ * Buffer.from(arrayBuffer[, byteOffset[, length]])
+ **/
+Buffer.from = function (value, encodingOrOffset, length) {
+  return from(null, value, encodingOrOffset, length)
+}
+
+if (Buffer.TYPED_ARRAY_SUPPORT) {
+  Buffer.prototype.__proto__ = Uint8Array.prototype
+  Buffer.__proto__ = Uint8Array
+  if (typeof Symbol !== 'undefined' && Symbol.species &&
+      Buffer[Symbol.species] === Buffer) {
+    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
+    Object.defineProperty(Buffer, Symbol.species, {
+      value: null,
+      configurable: true
+    })
+  }
+}
+
+function assertSize (size) {
+  if (typeof size !== 'number') {
+    throw new TypeError('"size" argument must be a number')
+  } else if (size < 0) {
+    throw new RangeError('"size" argument must not be negative')
+  }
+}
+
+function alloc (that, size, fill, encoding) {
+  assertSize(size)
+  if (size <= 0) {
+    return createBuffer(that, size)
+  }
+  if (fill !== undefined) {
+    // Only pay attention to encoding if it's a string. This
+    // prevents accidentally sending in a number that would
+    // be interpretted as a start offset.
+    return typeof encoding === 'string'
+      ? createBuffer(that, size).fill(fill, encoding)
+      : createBuffer(that, size).fill(fill)
+  }
+  return createBuffer(that, size)
+}
+
+/**
+ * Creates a new filled Buffer instance.
+ * alloc(size[, fill[, encoding]])
+ **/
+Buffer.alloc = function (size, fill, encoding) {
+  return alloc(null, size, fill, encoding)
+}
+
+function allocUnsafe (that, size) {
+  assertSize(size)
+  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)
+  if (!Buffer.TYPED_ARRAY_SUPPORT) {
+    for (var i = 0; i < size; ++i) {
+      that[i] = 0
+    }
+  }
+  return that
+}
+
+/**
+ * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
+ * */
+Buffer.allocUnsafe = function (size) {
+  return allocUnsafe(null, size)
+}
+/**
+ * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
+ */
+Buffer.allocUnsafeSlow = function (size) {
+  return allocUnsafe(null, size)
+}
+
+function fromString (that, string, encoding) {
+  if (typeof encoding !== 'string' || encoding === '') {
+    encoding = 'utf8'
+  }
+
+  if (!Buffer.isEncoding(encoding)) {
+    throw new TypeError('"encoding" must be a valid string encoding')
+  }
+
+  var length = byteLength(string, encoding) | 0
+  that = createBuffer(that, length)
+
+  var actual = that.write(string, encoding)
+
+  if (actual !== length) {
+    // Writing a hex string, for example, that contains invalid characters will
+    // cause everything after the first invalid character to be ignored. (e.g.
+    // 'abxxcd' will be treated as 'ab')
+    that = that.slice(0, actual)
+  }
+
+  return that
+}
+
+function fromArrayLike (that, array) {
+  var length = array.length < 0 ? 0 : checked(array.length) | 0
+  that = createBuffer(that, length)
+  for (var i = 0; i < length; i += 1) {
+    that[i] = array[i] & 255
+  }
+  return that
+}
+
+function fromArrayBuffer (that, array, byteOffset, length) {
+  array.byteLength // this throws if `array` is not a valid ArrayBuffer
+
+  if (byteOffset < 0 || array.byteLength < byteOffset) {
+    throw new RangeError('\'offset\' is out of bounds')
+  }
+
+  if (array.byteLength < byteOffset + (length || 0)) {
+    throw new RangeError('\'length\' is out of bounds')
+  }
+
+  if (byteOffset === undefined && length === undefined) {
+    array = new Uint8Array(array)
+  } else if (length === undefined) {
+    array = new Uint8Array(array, byteOffset)
+  } else {
+    array = new Uint8Array(array, byteOffset, length)
+  }
+
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    // Return an augmented `Uint8Array` instance, for best performance
+    that = array
+    that.__proto__ = Buffer.prototype
+  } else {
+    // Fallback: Return an object instance of the Buffer class
+    that = fromArrayLike(that, array)
+  }
+  return that
+}
+
+function fromObject (that, obj) {
+  if (Buffer.isBuffer(obj)) {
+    var len = checked(obj.length) | 0
+    that = createBuffer(that, len)
+
+    if (that.length === 0) {
+      return that
+    }
+
+    obj.copy(that, 0, 0, len)
+    return that
+  }
+
+  if (obj) {
+    if ((typeof ArrayBuffer !== 'undefined' &&
+        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
+      if (typeof obj.length !== 'number' || isnan(obj.length)) {
+        return createBuffer(that, 0)
+      }
+      return fromArrayLike(that, obj)
+    }
+
+    if (obj.type === 'Buffer' && isArray(obj.data)) {
+      return fromArrayLike(that, obj.data)
+    }
+  }
+
+  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
+}
+
+function checked (length) {
+  // Note: cannot use `length < kMaxLength()` here because that fails when
+  // length is NaN (which is otherwise coerced to zero.)
+  if (length >= kMaxLength()) {
+    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
+                         'size: 0x' + kMaxLength().toString(16) + ' bytes')
+  }
+  return length | 0
+}
+
+function SlowBuffer (length) {
+  if (+length != length) { // eslint-disable-line eqeqeq
+    length = 0
+  }
+  return Buffer.alloc(+length)
+}
+
+Buffer.isBuffer = function isBuffer (b) {
+  return !!(b != null && b._isBuffer)
+}
+
+Buffer.compare = function compare (a, b) {
+  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
+    throw new TypeError('Arguments must be Buffers')
+  }
+
+  if (a === b) return 0
+
+  var x = a.length
+  var y = b.length
+
+  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
+    if (a[i] !== b[i]) {
+      x = a[i]
+      y = b[i]
+      break
+    }
+  }
+
+  if (x < y) return -1
+  if (y < x) return 1
+  return 0
+}
+
+Buffer.isEncoding = function isEncoding (encoding) {
+  switch (String(encoding).toLowerCase()) {
+    case 'hex':
+    case 'utf8':
+    case 'utf-8':
+    case 'ascii':
+    case 'latin1':
+    case 'binary':
+    case 'base64':
+    case 'ucs2':
+    case 'ucs-2':
+    case 'utf16le':
+    case 'utf-16le':
+      return true
+    default:
+      return false
+  }
+}
+
+Buffer.concat = function concat (list, length) {
+  if (!isArray(list)) {
+    throw new TypeError('"list" argument must be an Array of Buffers')
+  }
+
+  if (list.length === 0) {
+    return Buffer.alloc(0)
+  }
+
+  var i
+  if (length === undefined) {
+    length = 0
+    for (i = 0; i < list.length; ++i) {
+      length += list[i].length
+    }
+  }
+
+  var buffer = Buffer.allocUnsafe(length)
+  var pos = 0
+  for (i = 0; i < list.length; ++i) {
+    var buf = list[i]
+    if (!Buffer.isBuffer(buf)) {
+      throw new TypeError('"list" argument must be an Array of Buffers')
+    }
+    buf.copy(buffer, pos)
+    pos += buf.length
+  }
+  return buffer
+}
+
+function byteLength (string, encoding) {
+  if (Buffer.isBuffer(string)) {
+    return string.length
+  }
+  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
+      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
+    return string.byteLength
+  }
+  if (typeof string !== 'string') {
+    string = '' + string
+  }
+
+  var len = string.length
+  if (len === 0) return 0
+
+  // Use a for loop to avoid recursion
+  var loweredCase = false
+  for (;;) {
+    switch (encoding) {
+      case 'ascii':
+      case 'latin1':
+      case 'binary':
+        return len
+      case 'utf8':
+      case 'utf-8':
+      case undefined:
+        return utf8ToBytes(string).length
+      case 'ucs2':
+      case 'ucs-2':
+      case 'utf16le':
+      case 'utf-16le':
+        return len * 2
+      case 'hex':
+        return len >>> 1
+      case 'base64':
+        return base64ToBytes(string).length
+      default:
+        if (loweredCase) return utf8ToBytes(string).length // assume utf8
+        encoding = ('' + encoding).toLowerCase()
+        loweredCase = true
+    }
+  }
+}
+Buffer.byteLength = byteLength
+
+function slowToString (encoding, start, end) {
+  var loweredCase = false
+
+  // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
+  // property of a typed array.
+
+  // This behaves neither like String nor Uint8Array in that we set start/end
+  // to their upper/lower bounds if the value passed is out of range.
+  // undefined is handled specially as per ECMA-262 6th Edition,
+  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
+  if (start === undefined || start < 0) {
+    start = 0
+  }
+  // Return early if start > this.length. Done here to prevent potential uint32
+  // coercion fail below.
+  if (start > this.length) {
+    return ''
+  }
+
+  if (end === undefined || end > this.length) {
+    end = this.length
+  }
+
+  if (end <= 0) {
+    return ''
+  }
+
+  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
+  end >>>= 0
+  start >>>= 0
+
+  if (end <= start) {
+    return ''
+  }
+
+  if (!encoding) encoding = 'utf8'
+
+  while (true) {
+    switch (encoding) {
+      case 'hex':
+        return hexSlice(this, start, end)
+
+      case 'utf8':
+      case 'utf-8':
+        return utf8Slice(this, start, end)
+
+      case 'ascii':
+        return asciiSlice(this, start, end)
+
+      case 'latin1':
+      case 'binary':
+        return latin1Slice(this, start, end)
+
+      case 'base64':
+        return base64Slice(this, start, end)
+
+      case 'ucs2':
+      case 'ucs-2':
+      case 'utf16le':
+      case 'utf-16le':
+        return utf16leSlice(this, start, end)
+
+      default:
+        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
+        encoding = (encoding + '').toLowerCase()
+        loweredCase = true
+    }
+  }
+}
+
+// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
+// Buffer instances.
+Buffer.prototype._isBuffer = true
+
+function swap (b, n, m) {
+  var i = b[n]
+  b[n] = b[m]
+  b[m] = i
+}
+
+Buffer.prototype.swap16 = function swap16 () {
+  var len = this.length
+  if (len % 2 !== 0) {
+    throw new RangeError('Buffer size must be a multiple of 16-bits')
+  }
+  for (var i = 0; i < len; i += 2) {
+    swap(this, i, i + 1)
+  }
+  return this
+}
+
+Buffer.prototype.swap32 = function swap32 () {
+  var len = this.length
+  if (len % 4 !== 0) {
+    throw new RangeError('Buffer size must be a multiple of 32-bits')
+  }
+  for (var i = 0; i < len; i += 4) {
+    swap(this, i, i + 3)
+    swap(this, i + 1, i + 2)
+  }
+  return this
+}
+
+Buffer.prototype.swap64 = function swap64 () {
+  var len = this.length
+  if (len % 8 !== 0) {
+    throw new RangeError('Buffer size must be a multiple of 64-bits')
+  }
+  for (var i = 0; i < len; i += 8) {
+    swap(this, i, i + 7)
+    swap(this, i + 1, i + 6)
+    swap(this, i + 2, i + 5)
+    swap(this, i + 3, i + 4)
+  }
+  return this
+}
+
+Buffer.prototype.toString = function toString () {
+  var length = this.length | 0
+  if (length === 0) return ''
+  if (arguments.length === 0) return utf8Slice(this, 0, length)
+  return slowToString.apply(this, arguments)
+}
+
+Buffer.prototype.equals = function equals (b) {
+  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
+  if (this === b) return true
+  return Buffer.compare(this, b) === 0
+}
+
+Buffer.prototype.inspect = function inspect () {
+  var str = ''
+  var max = exports.INSPECT_MAX_BYTES
+  if (this.length > 0) {
+    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
+    if (this.length > max) str += ' ... '
+  }
+  return '<Buffer ' + str + '>'
+}
+
+Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
+  if (!Buffer.isBuffer(target)) {
+    throw new TypeError('Argument must be a Buffer')
+  }
+
+  if (start === undefined) {
+    start = 0
+  }
+  if (end === undefined) {
+    end = target ? target.length : 0
+  }
+  if (thisStart === undefined) {
+    thisStart = 0
+  }
+  if (thisEnd === undefined) {
+    thisEnd = this.length
+  }
+
+  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
+    throw new RangeError('out of range index')
+  }
+
+  if (thisStart >= thisEnd && start >= end) {
+    return 0
+  }
+  if (thisStart >= thisEnd) {
+    return -1
+  }
+  if (start >= end) {
+    return 1
+  }
+
+  start >>>= 0
+  end >>>= 0
+  thisStart >>>= 0
+  thisEnd >>>= 0
+
+  if (this === target) return 0
+
+  var x = thisEnd - thisStart
+  var y = end - start
+  var len = Math.min(x, y)
+
+  var thisCopy = this.slice(thisStart, thisEnd)
+  var targetCopy = target.slice(start, end)
+
+  for (var i = 0; i < len; ++i) {
+    if (thisCopy[i] !== targetCopy[i]) {
+      x = thisCopy[i]
+      y = targetCopy[i]
+      break
+    }
+  }
+
+  if (x < y) return -1
+  if (y < x) return 1
+  return 0
+}
+
+// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
+// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
+//
+// Arguments:
+// - buffer - a Buffer to search
+// - val - a string, Buffer, or number
+// - byteOffset - an index into `buffer`; will be clamped to an int32
+// - encoding - an optional encoding, relevant is val is a string
+// - dir - true for indexOf, false for lastIndexOf
+function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
+  // Empty buffer means no match
+  if (buffer.length === 0) return -1
+
+  // Normalize byteOffset
+  if (typeof byteOffset === 'string') {
+    encoding = byteOffset
+    byteOffset = 0
+  } else if (byteOffset > 0x7fffffff) {
+    byteOffset = 0x7fffffff
+  } else if (byteOffset < -0x80000000) {
+    byteOffset = -0x80000000
+  }
+  byteOffset = +byteOffset  // Coerce to Number.
+  if (isNaN(byteOffset)) {
+    // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
+    byteOffset = dir ? 0 : (buffer.length - 1)
+  }
+
+  // Normalize byteOffset: negative offsets start from the end of the buffer
+  if (byteOffset < 0) byteOffset = buffer.length + byteOffset
+  if (byteOffset >= buffer.length) {
+    if (dir) return -1
+    else byteOffset = buffer.length - 1
+  } else if (byteOffset < 0) {
+    if (dir) byteOffset = 0
+    else return -1
+  }
+
+  // Normalize val
+  if (typeof val === 'string') {
+    val = Buffer.from(val, encoding)
+  }
+
+  // Finally, search either indexOf (if dir is true) or lastIndexOf
+  if (Buffer.isBuffer(val)) {
+    // Special case: looking for empty string/buffer always fails
+    if (val.length === 0) {
+      return -1
+    }
+    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
+  } else if (typeof val === 'number') {
+    val = val & 0xFF // Search for a byte value [0-255]
+    if (Buffer.TYPED_ARRAY_SUPPORT &&
+        typeof Uint8Array.prototype.indexOf === 'function') {
+      if (dir) {
+        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
+      } else {
+        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
+      }
+    }
+    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
+  }
+
+  throw new TypeError('val must be string, number or Buffer')
+}
+
+function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
+  var indexSize = 1
+  var arrLength = arr.length
+  var valLength = val.length
+
+  if (encoding !== undefined) {
+    encoding = String(encoding).toLowerCase()
+    if (encoding === 'ucs2' || encoding === 'ucs-2' ||
+        encoding === 'utf16le' || encoding === 'utf-16le') {
+      if (arr.length < 2 || val.length < 2) {
+        return -1
+      }
+      indexSize = 2
+      arrLength /= 2
+      valLength /= 2
+      byteOffset /= 2
+    }
+  }
+
+  function read (buf, i) {
+    if (indexSize === 1) {
+      return buf[i]
+    } else {
+      return buf.readUInt16BE(i * indexSize)
+    }
+  }
+
+  var i
+  if (dir) {
+    var foundIndex = -1
+    for (i = byteOffset; i < arrLength; i++) {
+      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
+        if (foundIndex === -1) foundIndex = i
+        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
+      } else {
+        if (foundIndex !== -1) i -= i - foundIndex
+        foundIndex = -1
+      }
+    }
+  } else {
+    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
+    for (i = byteOffset; i >= 0; i--) {
+      var found = true
+      for (var j = 0; j < valLength; j++) {
+        if (read(arr, i + j) !== read(val, j)) {
+          found = false
+          break
+        }
+      }
+      if (found) return i
+    }
+  }
+
+  return -1
+}
+
+Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
+  return this.indexOf(val, byteOffset, encoding) !== -1
+}
+
+Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
+  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
+}
+
+Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
+  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
+}
+
+function hexWrite (buf, string, offset, length) {
+  offset = Number(offset) || 0
+  var remaining = buf.length - offset
+  if (!length) {
+    length = remaining
+  } else {
+    length = Number(length)
+    if (length > remaining) {
+      length = remaining
+    }
+  }
+
+  // must be an even number of digits
+  var strLen = string.length
+  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
+
+  if (length > strLen / 2) {
+    length = strLen / 2
+  }
+  for (var i = 0; i < length; ++i) {
+    var parsed = parseInt(string.substr(i * 2, 2), 16)
+    if (isNaN(parsed)) return i
+    buf[offset + i] = parsed
+  }
+  return i
+}
+
+function utf8Write (buf, string, offset, length) {
+  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
+}
+
+function asciiWrite (buf, string, offset, length) {
+  return blitBuffer(asciiToBytes(string), buf, offset, length)
+}
+
+function latin1Write (buf, string, offset, length) {
+  return asciiWrite(buf, string, offset, length)
+}
+
+function base64Write (buf, string, offset, length) {
+  return blitBuffer(base64ToBytes(string), buf, offset, length)
+}
+
+function ucs2Write (buf, string, offset, length) {
+  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
+}
+
+Buffer.prototype.write = function write (string, offset, length, encoding) {
+  // Buffer#write(string)
+  if (offset === undefined) {
+    encoding = 'utf8'
+    length = this.length
+    offset = 0
+  // Buffer#write(string, encoding)
+  } else if (length === undefined && typeof offset === 'string') {
+    encoding = offset
+    length = this.length
+    offset = 0
+  // Buffer#write(string, offset[, length][, encoding])
+  } else if (isFinite(offset)) {
+    offset = offset | 0
+    if (isFinite(length)) {
+      length = length | 0
+      if (encoding === undefined) encoding = 'utf8'
+    } else {
+      encoding = length
+      length = undefined
+    }
+  // legacy write(string, encoding, offset, length) - remove in v0.13
+  } else {
+    throw new Error(
+      'Buffer.write(string, encoding, offset[, length]) is no longer supported'
+    )
+  }
+
+  var remaining = this.length - offset
+  if (length === undefined || length > remaining) length = remaining
+
+  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
+    throw new RangeError('Attempt to write outside buffer bounds')
+  }
+
+  if (!encoding) encoding = 'utf8'
+
+  var loweredCase = false
+  for (;;) {
+    switch (encoding) {
+      case 'hex':
+        return hexWrite(this, string, offset, length)
+
+      case 'utf8':
+      case 'utf-8':
+        return utf8Write(this, string, offset, length)
+
+      case 'ascii':
+        return asciiWrite(this, string, offset, length)
+
+      case 'latin1':
+      case 'binary':
+        return latin1Write(this, string, offset, length)
+
+      case 'base64':
+        // Warning: maxLength not taken into account in base64Write
+        return base64Write(this, string, offset, length)
+
+      case 'ucs2':
+      case 'ucs-2':
+      case 'utf16le':
+      case 'utf-16le':
+        return ucs2Write(this, string, offset, length)
+
+      default:
+        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
+        encoding = ('' + encoding).toLowerCase()
+        loweredCase = true
+    }
+  }
+}
+
+Buffer.prototype.toJSON = function toJSON () {
+  return {
+    type: 'Buffer',
+    data: Array.prototype.slice.call(this._arr || this, 0)
+  }
+}
+
+function base64Slice (buf, start, end) {
+  if (start === 0 && end === buf.length) {
+    return base64.fromByteArray(buf)
+  } else {
+    return base64.fromByteArray(buf.slice(start, end))
+  }
+}
+
+function utf8Slice (buf, start, end) {
+  end = Math.min(buf.length, end)
+  var res = []
+
+  var i = start
+  while (i < end) {
+    var firstByte = buf[i]
+    var codePoint = null
+    var bytesPerSequence = (firstByte > 0xEF) ? 4
+      : (firstByte > 0xDF) ? 3
+      : (firstByte > 0xBF) ? 2
+      : 1
+
+    if (i + bytesPerSequence <= end) {
+      var secondByte, thirdByte, fourthByte, tempCodePoint
+
+      switch (bytesPerSequence) {
+        case 1:
+          if (firstByte < 0x80) {
+            codePoint = firstByte
+          }
+          break
+        case 2:
+          secondByte = buf[i + 1]
+          if ((secondByte & 0xC0) === 0x80) {
+            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
+            if (tempCodePoint > 0x7F) {
+              codePoint = tempCodePoint
+            }
+          }
+          break
+        case 3:
+          secondByte = buf[i + 1]
+          thirdByte = buf[i + 2]
+          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
+            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
+            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
+              codePoint = tempCodePoint
+            }
+          }
+          break
+        case 4:
+          secondByte = buf[i + 1]
+          thirdByte = buf[i + 2]
+          fourthByte = buf[i + 3]
+          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
+            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
+            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
+              codePoint = tempCodePoint
+            }
+          }
+      }
+    }
+
+    if (codePoint === null) {
+      // we did not generate a valid codePoint so insert a
+      // replacement char (U+FFFD) and advance only 1 byte
+      codePoint = 0xFFFD
+      bytesPerSequence = 1
+    } else if (codePoint > 0xFFFF) {
+      // encode to utf16 (surrogate pair dance)
+      codePoint -= 0x10000
+      res.push(codePoint >>> 10 & 0x3FF | 0xD800)
+      codePoint = 0xDC00 | codePoint & 0x3FF
+    }
+
+    res.push(codePoint)
+    i += bytesPerSequence
+  }
+
+  return decodeCodePointsArray(res)
+}
+
+// Based on http://stackoverflow.com/a/22747272/680742, the browser with
+// the lowest limit is Chrome, with 0x10000 args.
+// We go 1 magnitude less, for safety
+var MAX_ARGUMENTS_LENGTH = 0x1000
+
+function decodeCodePointsArray (codePoints) {
+  var len = codePoints.length
+  if (len <= MAX_ARGUMENTS_LENGTH) {
+    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
+  }
+
+  // Decode in chunks to avoid "call stack size exceeded".
+  var res = ''
+  var i = 0
+  while (i < len) {
+    res += String.fromCharCode.apply(
+      String,
+      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
+    )
+  }
+  return res
+}
+
+function asciiSlice (buf, start, end) {
+  var ret = ''
+  end = Math.min(buf.length, end)
+
+  for (var i = start; i < end; ++i) {
+    ret += String.fromCharCode(buf[i] & 0x7F)
+  }
+  return ret
+}
+
+function latin1Slice (buf, start, end) {
+  var ret = ''
+  end = Math.min(buf.length, end)
+
+  for (var i = start; i < end; ++i) {
+    ret += String.fromCharCode(buf[i])
+  }
+  return ret
+}
+
+function hexSlice (buf, start, end) {
+  var len = buf.length
+
+  if (!start || start < 0) start = 0
+  if (!end || end < 0 || end > len) end = len
+
+  var out = ''
+  for (var i = start; i < end; ++i) {
+    out += toHex(buf[i])
+  }
+  return out
+}
+
+function utf16leSlice (buf, start, end) {
+  var bytes = buf.slice(start, end)
+  var res = ''
+  for (var i = 0; i < bytes.length; i += 2) {
+    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
+  }
+  return res
+}
+
+Buffer.prototype.slice = function slice (start, end) {
+  var len = this.length
+  start = ~~start
+  end = end === undefined ? len : ~~end
+
+  if (start < 0) {
+    start += len
+    if (start < 0) start = 0
+  } else if (start > len) {
+    start = len
+  }
+
+  if (end < 0) {
+    end += len
+    if (end < 0) end = 0
+  } else if (end > len) {
+    end = len
+  }
+
+  if (end < start) end = start
+
+  var newBuf
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    newBuf = this.subarray(start, end)
+    newBuf.__proto__ = Buffer.prototype
+  } else {
+    var sliceLen = end - start
+    newBuf = new Buffer(sliceLen, undefined)
+    for (var i = 0; i < sliceLen; ++i) {
+      newBuf[i] = this[i + start]
+    }
+  }
+
+  return newBuf
+}
+
+/*
+ * Need to make sure that buffer isn't trying to write out of bounds.
+ */
+function checkOffset (offset, ext, length) {
+  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
+  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
+}
+
+Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
+  offset = offset | 0
+  byteLength = byteLength | 0
+  if (!noAssert) checkOffset(offset, byteLength, this.length)
+
+  var val = this[offset]
+  var mul = 1
+  var i = 0
+  while (++i < byteLength && (mul *= 0x100)) {
+    val += this[offset + i] * mul
+  }
+
+  return val
+}
+
+Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
+  offset = offset | 0
+  byteLength = byteLength | 0
+  if (!noAssert) {
+    checkOffset(offset, byteLength, this.length)
+  }
+
+  var val = this[offset + --byteLength]
+  var mul = 1
+  while (byteLength > 0 && (mul *= 0x100)) {
+    val += this[offset + --byteLength] * mul
+  }
+
+  return val
+}
+
+Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 1, this.length)
+  return this[offset]
+}
+
+Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 2, this.length)
+  return this[offset] | (this[offset + 1] << 8)
+}
+
+Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 2, this.length)
+  return (this[offset] << 8) | this[offset + 1]
+}
+
+Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 4, this.length)
+
+  return ((this[offset]) |
+      (this[offset + 1] << 8) |
+      (this[offset + 2] << 16)) +
+      (this[offset + 3] * 0x1000000)
+}
+
+Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 4, this.length)
+
+  return (this[offset] * 0x1000000) +
+    ((this[offset + 1] << 16) |
+    (this[offset + 2] << 8) |
+    this[offset + 3])
+}
+
+Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
+  offset = offset | 0
+  byteLength = byteLength | 0
+  if (!noAssert) checkOffset(offset, byteLength, this.length)
+
+  var val = this[offset]
+  var mul = 1
+  var i = 0
+  while (++i < byteLength && (mul *= 0x100)) {
+    val += this[offset + i] * mul
+  }
+  mul *= 0x80
+
+  if (val >= mul) val -= Math.pow(2, 8 * byteLength)
+
+  return val
+}
+
+Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
+  offset = offset | 0
+  byteLength = byteLength | 0
+  if (!noAssert) checkOffset(offset, byteLength, this.length)
+
+  var i = byteLength
+  var mul = 1
+  var val = this[offset + --i]
+  while (i > 0 && (mul *= 0x100)) {
+    val += this[offset + --i] * mul
+  }
+  mul *= 0x80
+
+  if (val >= mul) val -= Math.pow(2, 8 * byteLength)
+
+  return val
+}
+
+Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 1, this.length)
+  if (!(this[offset] & 0x80)) return (this[offset])
+  return ((0xff - this[offset] + 1) * -1)
+}
+
+Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 2, this.length)
+  var val = this[offset] | (this[offset + 1] << 8)
+  return (val & 0x8000) ? val | 0xFFFF0000 : val
+}
+
+Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 2, this.length)
+  var val = this[offset + 1] | (this[offset] << 8)
+  return (val & 0x8000) ? val | 0xFFFF0000 : val
+}
+
+Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 4, this.length)
+
+  return (this[offset]) |
+    (this[offset + 1] << 8) |
+    (this[offset + 2] << 16) |
+    (this[offset + 3] << 24)
+}
+
+Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 4, this.length)
+
+  return (this[offset] << 24) |
+    (this[offset + 1] << 16) |
+    (this[offset + 2] << 8) |
+    (this[offset + 3])
+}
+
+Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 4, this.length)
+  return ieee754.read(this, offset, true, 23, 4)
+}
+
+Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 4, this.length)
+  return ieee754.read(this, offset, false, 23, 4)
+}
+
+Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 8, this.length)
+  return ieee754.read(this, offset, true, 52, 8)
+}
+
+Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
+  if (!noAssert) checkOffset(offset, 8, this.length)
+  return ieee754.read(this, offset, false, 52, 8)
+}
+
+function checkInt (buf, value, offset, ext, max, min) {
+  if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
+  if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
+  if (offset + ext > buf.length) throw new RangeError('Index out of range')
+}
+
+Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset | 0
+  byteLength = byteLength | 0
+  if (!noAssert) {
+    var maxBytes = Math.pow(2, 8 * byteLength) - 1
+    checkInt(this, value, offset, byteLength, maxBytes, 0)
+  }
+
+  var mul = 1
+  var i = 0
+  this[offset] = value & 0xFF
+  while (++i < byteLength && (mul *= 0x100)) {
+    this[offset + i] = (value / mul) & 0xFF
+  }
+
+  return offset + byteLength
+}
+
+Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset | 0
+  byteLength = byteLength | 0
+  if (!noAssert) {
+    var maxBytes = Math.pow(2, 8 * byteLength) - 1
+    checkInt(this, value, offset, byteLength, maxBytes, 0)
+  }
+
+  var i = byteLength - 1
+  var mul = 1
+  this[offset + i] = value & 0xFF
+  while (--i >= 0 && (mul *= 0x100)) {
+    this[offset + i] = (value / mul) & 0xFF
+  }
+
+  return offset + byteLength
+}
+
+Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
+  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
+  this[offset] = (value & 0xff)
+  return offset + 1
+}
+
+function objectWriteUInt16 (buf, value, offset, littleEndian) {
+  if (value < 0) value = 0xffff + value + 1
+  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
+    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
+      (littleEndian ? i : 1 - i) * 8
+  }
+}
+
+Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value & 0xff)
+    this[offset + 1] = (value >>> 8)
+  } else {
+    objectWriteUInt16(this, value, offset, true)
+  }
+  return offset + 2
+}
+
+Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value >>> 8)
+    this[offset + 1] = (value & 0xff)
+  } else {
+    objectWriteUInt16(this, value, offset, false)
+  }
+  return offset + 2
+}
+
+function objectWriteUInt32 (buf, value, offset, littleEndian) {
+  if (value < 0) value = 0xffffffff + value + 1
+  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
+    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
+  }
+}
+
+Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset + 3] = (value >>> 24)
+    this[offset + 2] = (value >>> 16)
+    this[offset + 1] = (value >>> 8)
+    this[offset] = (value & 0xff)
+  } else {
+    objectWriteUInt32(this, value, offset, true)
+  }
+  return offset + 4
+}
+
+Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value >>> 24)
+    this[offset + 1] = (value >>> 16)
+    this[offset + 2] = (value >>> 8)
+    this[offset + 3] = (value & 0xff)
+  } else {
+    objectWriteUInt32(this, value, offset, false)
+  }
+  return offset + 4
+}
+
+Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) {
+    var limit = Math.pow(2, 8 * byteLength - 1)
+
+    checkInt(this, value, offset, byteLength, limit - 1, -limit)
+  }
+
+  var i = 0
+  var mul = 1
+  var sub = 0
+  this[offset] = value & 0xFF
+  while (++i < byteLength && (mul *= 0x100)) {
+    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
+      sub = 1
+    }
+    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
+  }
+
+  return offset + byteLength
+}
+
+Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) {
+    var limit = Math.pow(2, 8 * byteLength - 1)
+
+    checkInt(this, value, offset, byteLength, limit - 1, -limit)
+  }
+
+  var i = byteLength - 1
+  var mul = 1
+  var sub = 0
+  this[offset + i] = value & 0xFF
+  while (--i >= 0 && (mul *= 0x100)) {
+    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
+      sub = 1
+    }
+    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
+  }
+
+  return offset + byteLength
+}
+
+Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
+  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
+  if (value < 0) value = 0xff + value + 1
+  this[offset] = (value & 0xff)
+  return offset + 1
+}
+
+Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value & 0xff)
+    this[offset + 1] = (value >>> 8)
+  } else {
+    objectWriteUInt16(this, value, offset, true)
+  }
+  return offset + 2
+}
+
+Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value >>> 8)
+    this[offset + 1] = (value & 0xff)
+  } else {
+    objectWriteUInt16(this, value, offset, false)
+  }
+  return offset + 2
+}
+
+Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value & 0xff)
+    this[offset + 1] = (value >>> 8)
+    this[offset + 2] = (value >>> 16)
+    this[offset + 3] = (value >>> 24)
+  } else {
+    objectWriteUInt32(this, value, offset, true)
+  }
+  return offset + 4
+}
+
+Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
+  value = +value
+  offset = offset | 0
+  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
+  if (value < 0) value = 0xffffffff + value + 1
+  if (Buffer.TYPED_ARRAY_SUPPORT) {
+    this[offset] = (value >>> 24)
+    this[offset + 1] = (value >>> 16)
+    this[offset + 2] = (value >>> 8)
+    this[offset + 3] = (value & 0xff)
+  } else {
+    objectWriteUInt32(this, value, offset, false)
+  }
+  return offset + 4
+}
+
+function checkIEEE754 (buf, value, offset, ext, max, min) {
+  if (offset + ext > buf.length) throw new RangeError('Index out of range')
+  if (offset < 0) throw new RangeError('Index out of range')
+}
+
+function writeFloat (buf, value, offset, littleEndian, noAssert) {
+  if (!noAssert) {
+    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
+  }
+  ieee754.write(buf, value, offset, littleEndian, 23, 4)
+  return offset + 4
+}
+
+Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
+  return writeFloat(this, value, offset, true, noAssert)
+}
+
+Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
+  return writeFloat(this, value, offset, false, noAssert)
+}
+
+function writeDouble (buf, value, offset, littleEndian, noAssert) {
+  if (!noAssert) {
+    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
+  }
+  ieee754.write(buf, value, offset, littleEndian, 52, 8)
+  return offset + 8
+}
+
+Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
+  return writeDouble(this, value, offset, true, noAssert)
+}
+
+Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
+  return writeDouble(this, value, offset, false, noAssert)
+}
+
+// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
+Buffer.prototype.copy = function copy (target, targetStart, start, end) {
+  if (!start) start = 0
+  if (!end && end !== 0) end = this.length
+  if (targetStart >= target.length) targetStart = target.length
+  if (!targetStart) targetStart = 0
+  if (end > 0 && end < start) end = start
+
+  // Copy 0 bytes; we're done
+  if (end === start) return 0
+  if (target.length === 0 || this.length === 0) return 0
+
+  // Fatal error conditions
+  if (targetStart < 0) {
+    throw new RangeError('targetStart out of bounds')
+  }
+  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
+  if (end < 0) throw new RangeError('sourceEnd out of bounds')
+
+  // Are we oob?
+  if (end > this.length) end = this.length
+  if (target.length - targetStart < end - start) {
+    end = target.length - targetStart + start
+  }
+
+  var len = end - start
+  var i
+
+  if (this === target && start < targetStart && targetStart < end) {
+    // descending copy from end
+    for (i = len - 1; i >= 0; --i) {
+      target[i + targetStart] = this[i + start]
+    }
+  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
+    // ascending copy from start
+    for (i = 0; i < len; ++i) {
+      target[i + targetStart] = this[i + start]
+    }
+  } else {
+    Uint8Array.prototype.set.call(
+      target,
+      this.subarray(start, start + len),
+      targetStart
+    )
+  }
+
+  return len
+}
+
+// Usage:
+//    buffer.fill(number[, offset[, end]])
+//    buffer.fill(buffer[, offset[, end]])
+//    buffer.fill(string[, offset[, end]][, encoding])
+Buffer.prototype.fill = function fill (val, start, end, encoding) {
+  // Handle string cases:
+  if (typeof val === 'string') {
+    if (typeof start === 'string') {
+      encoding = start
+      start = 0
+      end = this.length
+    } else if (typeof end === 'string') {
+      encoding = end
+      end = this.length
+    }
+    if (val.length === 1) {
+      var code = val.charCodeAt(0)
+      if (code < 256) {
+        val = code
+      }
+    }
+    if (encoding !== undefined && typeof encoding !== 'string') {
+      throw new TypeError('encoding must be a string')
+    }
+    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
+      throw new TypeError('Unknown encoding: ' + encoding)
+    }
+  } else if (typeof val === 'number') {
+    val = val & 255
+  }
+
+  // Invalid ranges are not set to a default, so can range check early.
+  if (start < 0 || this.length < start || this.length < end) {
+    throw new RangeError('Out of range index')
+  }
+
+  if (end <= start) {
+    return this
+  }
+
+  start = start >>> 0
+  end = end === undefined ? this.length : end >>> 0
+
+  if (!val) val = 0
+
+  var i
+  if (typeof val === 'number') {
+    for (i = start; i < end; ++i) {
+      this[i] = val
+    }
+  } else {
+    var bytes = Buffer.isBuffer(val)
+      ? val
+      : utf8ToBytes(new Buffer(val, encoding).toString())
+    var len = bytes.length
+    for (i = 0; i < end - start; ++i) {
+      this[i + start] = bytes[i % len]
+    }
+  }
+
+  return this
+}
+
+// HELPER FUNCTIONS
+// ================
+
+var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
+
+function base64clean (str) {
+  // Node strips out invalid characters like \n and \t from the string, base64-js does not
+  str = stringtrim(str).replace(INVALID_BASE64_RE, '')
+  // Node converts strings with length < 2 to ''
+  if (str.length < 2) return ''
+  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
+  while (str.length % 4 !== 0) {
+    str = str + '='
+  }
+  return str
+}
+
+function stringtrim (str) {
+  if (str.trim) return str.trim()
+  return str.replace(/^\s+|\s+$/g, '')
+}
+
+function toHex (n) {
+  if (n < 16) return '0' + n.toString(16)
+  return n.toString(16)
+}
+
+function utf8ToBytes (string, units) {
+  units = units || Infinity
+  var codePoint
+  var length = string.length
+  var leadSurrogate = null
+  var bytes = []
+
+  for (var i = 0; i < length; ++i) {
+    codePoint = string.charCodeAt(i)
+
+    // is surrogate component
+    if (codePoint > 0xD7FF && codePoint < 0xE000) {
+      // last char was a lead
+      if (!leadSurrogate) {
+        // no lead yet
+        if (codePoint > 0xDBFF) {
+          // unexpected trail
+          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+          continue
+        } else if (i + 1 === length) {
+          // unpaired lead
+          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+          continue
+        }
+
+        // valid lead
+        leadSurrogate = codePoint
+
+        continue
+      }
+
+      // 2 leads in a row
+      if (codePoint < 0xDC00) {
+        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+        leadSurrogate = codePoint
+        continue
+      }
+
+      // valid surrogate pair
+      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
+    } else if (leadSurrogate) {
+      // valid bmp char, but last char was a lead
+      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+    }
+
+    leadSurrogate = null
+
+    // encode utf8
+    if (codePoint < 0x80) {
+      if ((units -= 1) < 0) break
+      bytes.push(codePoint)
+    } else if (codePoint < 0x800) {
+      if ((units -= 2) < 0) break
+      bytes.push(
+        codePoint >> 0x6 | 0xC0,
+        codePoint & 0x3F | 0x80
+      )
+    } else if (codePoint < 0x10000) {
+      if ((units -= 3) < 0) break
+      bytes.push(
+        codePoint >> 0xC | 0xE0,
+        codePoint >> 0x6 & 0x3F | 0x80,
+        codePoint & 0x3F | 0x80
+      )
+    } else if (codePoint < 0x110000) {
+      if ((units -= 4) < 0) break
+      bytes.push(
+        codePoint >> 0x12 | 0xF0,
+        codePoint >> 0xC & 0x3F | 0x80,
+        codePoint >> 0x6 & 0x3F | 0x80,
+        codePoint & 0x3F | 0x80
+      )
+    } else {
+      throw new Error('Invalid code point')
+    }
+  }
+
+  return bytes
+}
+
+function asciiToBytes (str) {
+  var byteArray = []
+  for (var i = 0; i < str.length; ++i) {
+    // Node's code seems to be doing this and not & 0x7F..
+    byteArray.push(str.charCodeAt(i) & 0xFF)
+  }
+  return byteArray
+}
+
+function utf16leToBytes (str, units) {
+  var c, hi, lo
+  var byteArray = []
+  for (var i = 0; i < str.length; ++i) {
+    if ((units -= 2) < 0) break
+
+    c = str.charCodeAt(i)
+    hi = c >> 8
+    lo = c % 256
+    byteArray.push(lo)
+    byteArray.push(hi)
+  }
+
+  return byteArray
+}
+
+function base64ToBytes (str) {
+  return base64.toByteArray(base64clean(str))
+}
+
+function blitBuffer (src, dst, offset, length) {
+  for (var i = 0; i < length; ++i) {
+    if ((i + offset >= dst.length) || (i >= src.length)) break
+    dst[i + offset] = src[i]
+  }
+  return i
+}
+
+function isnan (val) {
+  return val !== val // eslint-disable-line no-self-compare
+}
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"base64-js":4,"ieee754":7,"isarray":9}],7:[function(require,module,exports){
+exports.read = function (buffer, offset, isLE, mLen, nBytes) {
+  var e, m
+  var eLen = nBytes * 8 - mLen - 1
+  var eMax = (1 << eLen) - 1
+  var eBias = eMax >> 1
+  var nBits = -7
+  var i = isLE ? (nBytes - 1) : 0
+  var d = isLE ? -1 : 1
+  var s = buffer[offset + i]
+
+  i += d
+
+  e = s & ((1 << (-nBits)) - 1)
+  s >>= (-nBits)
+  nBits += eLen
+  for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
+
+  m = e & ((1 << (-nBits)) - 1)
+  e >>= (-nBits)
+  nBits += mLen
+  for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
+
+  if (e === 0) {
+    e = 1 - eBias
+  } else if (e === eMax) {
+    return m ? NaN : ((s ? -1 : 1) * Infinity)
+  } else {
+    m = m + Math.pow(2, mLen)
+    e = e - eBias
+  }
+  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
+}
+
+exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
+  var e, m, c
+  var eLen = nBytes * 8 - mLen - 1
+  var eMax = (1 << eLen) - 1
+  var eBias = eMax >> 1
+  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
+  var i = isLE ? 0 : (nBytes - 1)
+  var d = isLE ? 1 : -1
+  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
+
+  value = Math.abs(value)
+
+  if (isNaN(value) || value === Infinity) {
+    m = isNaN(value) ? 1 : 0
+    e = eMax
+  } else {
+    e = Math.floor(Math.log(value) / Math.LN2)
+    if (value * (c = Math.pow(2, -e)) < 1) {
+      e--
+      c *= 2
+    }
+    if (e + eBias >= 1) {
+      value += rt / c
+    } else {
+      value += rt * Math.pow(2, 1 - eBias)
+    }
+    if (value * c >= 2) {
+      e++
+      c /= 2
+    }
+
+    if (e + eBias >= eMax) {
+      m = 0
+      e = eMax
+    } else if (e + eBias >= 1) {
+      m = (value * c - 1) * Math.pow(2, mLen)
+      e = e + eBias
+    } else {
+      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
+      e = 0
+    }
+  }
+
+  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
+
+  e = (e << mLen) | m
+  eLen += mLen
+  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
+
+  buffer[offset + i - d] |= s * 128
+}
+
+},{}],8:[function(require,module,exports){
+(function (global){
+'use strict';
+var Mutation = global.MutationObserver || global.WebKitMutationObserver;
+
+var scheduleDrain;
+
+{
+  if (Mutation) {
+    var called = 0;
+    var observer = new Mutation(nextTick);
+    var element = global.document.createTextNode('');
+    observer.observe(element, {
+      characterData: true
+    });
+    scheduleDrain = function () {
+      element.data = (called = ++called % 2);
+    };
+  } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {
+    var channel = new global.MessageChannel();
+    channel.port1.onmessage = nextTick;
+    scheduleDrain = function () {
+      channel.port2.postMessage(0);
+    };
+  } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {
+    scheduleDrain = function () {
+
+      // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted
+      // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.
+      var scriptEl = global.document.createElement('script');
+      scriptEl.onreadystatechange = function () {
+        nextTick();
+
+        scriptEl.onreadystatechange = null;
+        scriptEl.parentNode.removeChild(scriptEl);
+        scriptEl = null;
+      };
+      global.document.documentElement.appendChild(scriptEl);
+    };
+  } else {
+    scheduleDrain = function () {
+      setTimeout(nextTick, 0);
+    };
+  }
+}
+
+var draining;
+var queue = [];
+//named nextTick for less confusing stack traces
+function nextTick() {
+  draining = true;
+  var i, oldQueue;
+  var len = queue.length;
+  while (len) {
+    oldQueue = queue;
+    queue = [];
+    i = -1;
+    while (++i < len) {
+      oldQueue[i]();
+    }
+    len = queue.length;
+  }
+  draining = false;
+}
+
+module.exports = immediate;
+function immediate(task) {
+  if (queue.push(task) === 1 && !draining) {
+    scheduleDrain();
+  }
+}
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{}],9:[function(require,module,exports){
+var toString = {}.toString;
+
+module.exports = Array.isArray || function (arr) {
+  return toString.call(arr) == '[object Array]';
+};
+
+},{}],10:[function(require,module,exports){
+'use strict';
+var DataReader = require('./dataReader');
+
+function ArrayReader(data) {
+    if (data) {
+        this.data = data;
+        this.length = this.data.length;
+        this.index = 0;
+        this.zero = 0;
+
+        for(var i = 0; i < this.data.length; i++) {
+            data[i] = data[i] & 0xFF;
+        }
+    }
+}
+ArrayReader.prototype = new DataReader();
+/**
+ * @see DataReader.byteAt
+ */
+ArrayReader.prototype.byteAt = function(i) {
+    return this.data[this.zero + i];
+};
+/**
+ * @see DataReader.lastIndexOfSignature
+ */
+ArrayReader.prototype.lastIndexOfSignature = function(sig) {
+    var sig0 = sig.charCodeAt(0),
+        sig1 = sig.charCodeAt(1),
+        sig2 = sig.charCodeAt(2),
+        sig3 = sig.charCodeAt(3);
+    for (var i = this.length - 4; i >= 0; --i) {
+        if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {
+            return i - this.zero;
+        }
+    }
+
+    return -1;
+};
+/**
+ * @see DataReader.readData
+ */
+ArrayReader.prototype.readData = function(size) {
+    this.checkOffset(size);
+    if(size === 0) {
+        return [];
+    }
+    var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);
+    this.index += size;
+    return result;
+};
+module.exports = ArrayReader;
+
+},{"./dataReader":15}],11:[function(require,module,exports){
+'use strict';
+// private property
+var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+
+
+// public method for encoding
+exports.encode = function(input, utf8) {
+    var output = "";
+    var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
+    var i = 0;
+
+    while (i < input.length) {
+
+        chr1 = input.charCodeAt(i++);
+        chr2 = input.charCodeAt(i++);
+        chr3 = input.charCodeAt(i++);
+
+        enc1 = chr1 >> 2;
+        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+        enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+        enc4 = chr3 & 63;
+
+        if (isNaN(chr2)) {
+            enc3 = enc4 = 64;
+        }
+        else if (isNaN(chr3)) {
+            enc4 = 64;
+        }
+
+        output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
+
+    }
+
+    return output;
+};
+
+// public method for decoding
+exports.decode = function(input, utf8) {
+    var output = "";
+    var chr1, chr2, chr3;
+    var enc1, enc2, enc3, enc4;
+    var i = 0;
+
+    input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
+
+    while (i < input.length) {
+
+        enc1 = _keyStr.indexOf(input.charAt(i++));
+        enc2 = _keyStr.indexOf(input.charAt(i++));
+        enc3 = _keyStr.indexOf(input.charAt(i++));
+        enc4 = _keyStr.indexOf(input.charAt(i++));
+
+        chr1 = (enc1 << 2) | (enc2 >> 4);
+        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
+        chr3 = ((enc3 & 3) << 6) | enc4;
+
+        output = output + String.fromCharCode(chr1);
+
+        if (enc3 != 64) {
+            output = output + String.fromCharCode(chr2);
+        }
+        if (enc4 != 64) {
+            output = output + String.fromCharCode(chr3);
+        }
+
+    }
+
+    return output;
+
+};
+
+},{}],12:[function(require,module,exports){
+'use strict';
+function CompressedObject() {
+    this.compressedSize = 0;
+    this.uncompressedSize = 0;
+    this.crc32 = 0;
+    this.compressionMethod = null;
+    this.compressedContent = null;
+}
+
+CompressedObject.prototype = {
+    /**
+     * Return the decompressed content in an unspecified format.
+     * The format will depend on the decompressor.
+     * @return {Object} the decompressed content.
+     */
+    getContent: function() {
+        return null; // see implementation
+    },
+    /**
+     * Return the compressed content in an unspecified format.
+     * The format will depend on the compressed conten source.
+     * @return {Object} the compressed content.
+     */
+    getCompressedContent: function() {
+        return null; // see implementation
+    }
+};
+module.exports = CompressedObject;
+
+},{}],13:[function(require,module,exports){
+'use strict';
+exports.STORE = {
+    magic: "\x00\x00",
+    compress: function(content, compressionOptions) {
+        return content; // no compression
+    },
+    uncompress: function(content) {
+        return content; // no compression
+    },
+    compressInputType: null,
+    uncompressInputType: null
+};
+exports.DEFLATE = require('./flate');
+
+},{"./flate":18}],14:[function(require,module,exports){
+'use strict';
+
+var utils = require('./utils');
+
+var table = [
+    0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
+    0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
+    0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
+    0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
+    0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
+    0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
+    0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
+    0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
+    0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
+    0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
+    0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
+    0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
+    0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
+    0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
+    0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
+    0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
+    0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
+    0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
+    0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
+    0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
+    0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
+    0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
+    0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
+    0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
+    0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
+    0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
+    0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
+    0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
+    0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
+    0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
+    0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
+    0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
+    0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
+    0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
+    0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
+    0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
+    0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
+    0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
+    0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
+    0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
+    0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
+    0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
+    0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
+    0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
+    0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
+    0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
+    0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
+    0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
+    0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
+    0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
+    0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
+    0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
+    0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
+    0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
+    0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
+    0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
+    0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
+    0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
+    0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
+    0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
+    0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
+    0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
+    0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
+    0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
+];
+
+/**
+ *
+ *  Javascript crc32
+ *  http://www.webtoolkit.info/
+ *
+ */
+module.exports = function crc32(input, crc) {
+    if (typeof input === "undefined" || !input.length) {
+        return 0;
+    }
+
+    var isArray = utils.getTypeOf(input) !== "string";
+
+    if (typeof(crc) == "undefined") {
+        crc = 0;
+    }
+    var x = 0;
+    var y = 0;
+    var b = 0;
+
+    crc = crc ^ (-1);
+    for (var i = 0, iTop = input.length; i < iTop; i++) {
+        b = isArray ? input[i] : input.charCodeAt(i);
+        y = (crc ^ b) & 0xFF;
+        x = table[y];
+        crc = (crc >>> 8) ^ x;
+    }
+
+    return crc ^ (-1);
+};
+// vim: set shiftwidth=4 softtabstop=4:
+
+},{"./utils":31}],15:[function(require,module,exports){
+'use strict';
+var utils = require('./utils');
+
+function DataReader(data) {
+    this.data = null; // type : see implementation
+    this.length = 0;
+    this.index = 0;
+    this.zero = 0;
+}
+DataReader.prototype = {
+    /**
+     * Check that the offset will not go too far.
+     * @param {string} offset the additional offset to check.
+     * @throws {Error} an Error if the offset is out of bounds.
+     */
+    checkOffset: function(offset) {
+        this.checkIndex(this.index + offset);
+    },
+    /**
+     * Check that the specifed index will not be too far.
+     * @param {string} newIndex the index to check.
+     * @throws {Error} an Error if the index is out of bounds.
+     */
+    checkIndex: function(newIndex) {
+        if (this.length < this.zero + newIndex || newIndex < 0) {
+            throw new Error("End of data reached (data length = " + this.length + ", asked index = " + (newIndex) + "). Corrupted zip ?");
+        }
+    },
+    /**
+     * Change the index.
+     * @param {number} newIndex The new index.
+     * @throws {Error} if the new index is out of the data.
+     */
+    setIndex: function(newIndex) {
+        this.checkIndex(newIndex);
+        this.index = newIndex;
+    },
+    /**
+     * Skip the next n bytes.
+     * @param {number} n the number of bytes to skip.
+     * @throws {Error} if the new index is out of the data.
+     */
+    skip: function(n) {
+        this.setIndex(this.index + n);
+    },
+    /**
+     * Get the byte at the specified index.
+     * @param {number} i the index to use.
+     * @return {number} a byte.
+     */
+    byteAt: function(i) {
+        // see implementations
+    },
+    /**
+     * Get the next number with a given byte size.
+     * @param {number} size the number of bytes to read.
+     * @return {number} the corresponding number.
+     */
+    readInt: function(size) {
+        var result = 0,
+            i;
+        this.checkOffset(size);
+        for (i = this.index + size - 1; i >= this.index; i--) {
+            result = (result << 8) + this.byteAt(i);
+        }
+        this.index += size;
+        return result;
+    },
+    /**
+     * Get the next string with a given byte size.
+     * @param {number} size the number of bytes to read.
+     * @return {string} the corresponding string.
+     */
+    readString: function(size) {
+        return utils.transformTo("string", this.readData(size));
+    },
+    /**
+     * Get raw data without conversion, <size> bytes.
+     * @param {number} size the number of bytes to read.
+     * @return {Object} the raw data, implementation specific.
+     */
+    readData: function(size) {
+        // see implementations
+    },
+    /**
+     * Find the last occurence of a zip signature (4 bytes).
+     * @param {string} sig the signature to find.
+     * @return {number} the index of the last occurence, -1 if not found.
+     */
+    lastIndexOfSignature: function(sig) {
+        // see implementations
+    },
+    /**
+     * Get the next date.
+     * @return {Date} the date.
+     */
+    readDate: function() {
+        var dostime = this.readInt(4);
+        return new Date(
+        ((dostime >> 25) & 0x7f) + 1980, // year
+        ((dostime >> 21) & 0x0f) - 1, // month
+        (dostime >> 16) & 0x1f, // day
+        (dostime >> 11) & 0x1f, // hour
+        (dostime >> 5) & 0x3f, // minute
+        (dostime & 0x1f) << 1); // second
+    }
+};
+module.exports = DataReader;
+
+},{"./utils":31}],16:[function(require,module,exports){
+'use strict';
+exports.base64 = false;
+exports.binary = false;
+exports.dir = false;
+exports.createFolders = false;
+exports.date = null;
+exports.compression = null;
+exports.compressionOptions = null;
+exports.comment = null;
+exports.unixPermissions = null;
+exports.dosPermissions = null;
+
+},{}],17:[function(require,module,exports){
+'use strict';
+var utils = require('./utils');
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.string2binary = function(str) {
+    return utils.string2binary(str);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.string2Uint8Array = function(str) {
+    return utils.transformTo("uint8array", str);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.uint8Array2String = function(array) {
+    return utils.transformTo("string", array);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.string2Blob = function(str) {
+    var buffer = utils.transformTo("arraybuffer", str);
+    return utils.arrayBuffer2Blob(buffer);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.arrayBuffer2Blob = function(buffer) {
+    return utils.arrayBuffer2Blob(buffer);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.transformTo = function(outputType, input) {
+    return utils.transformTo(outputType, input);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.getTypeOf = function(input) {
+    return utils.getTypeOf(input);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.checkSupport = function(type) {
+    return utils.checkSupport(type);
+};
+
+/**
+ * @deprecated
+ * This value will be removed in a future version without replacement.
+ */
+exports.MAX_VALUE_16BITS = utils.MAX_VALUE_16BITS;
+
+/**
+ * @deprecated
+ * This value will be removed in a future version without replacement.
+ */
+exports.MAX_VALUE_32BITS = utils.MAX_VALUE_32BITS;
+
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.pretty = function(str) {
+    return utils.pretty(str);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.findCompression = function(compressionMethod) {
+    return utils.findCompression(compressionMethod);
+};
+
+/**
+ * @deprecated
+ * This function will be removed in a future version without replacement.
+ */
+exports.isRegExp = function (object) {
+    return utils.isRegExp(object);
+};
+
+
+},{"./utils":31}],18:[function(require,module,exports){
+'use strict';
+var USE_TYPEDARRAY = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');
+
+var pako = require("pako");
+exports.uncompressInputType = USE_TYPEDARRAY ? "uint8array" : "array";
+exports.compressInputType = USE_TYPEDARRAY ? "uint8array" : "array";
+
+exports.magic = "\x08\x00";
+exports.compress = function(input, compressionOptions) {
+    return pako.deflateRaw(input, {
+        level : compressionOptions.level || -1 // default compression
+    });
+};
+exports.uncompress =  function(input) {
+    return pako.inflateRaw(input);
+};
+
+},{"pako":36}],19:[function(require,module,exports){
+'use strict';
+
+var base64 = require('./base64');
+
+/**
+Usage:
+   zip = new JSZip();
+   zip.file("hello.txt", "Hello, World!").file("tempfile", "nothing");
+   zip.folder("images").file("smile.gif", base64Data, {base64: true});
+   zip.file("Xmas.txt", "Ho ho ho !", {date : new Date("December 25, 2007 00:00:01")});
+   zip.remove("tempfile");
+
+   base64zip = zip.generate();
+
+**/
+
+/**
+ * Representation a of zip file in js
+ * @constructor
+ * @param {String=|ArrayBuffer=|Uint8Array=} data the data to load, if any (optional).
+ * @param {Object=} options the options for creating this objects (optional).
+ */
+function JSZip(data, options) {
+    // if this constructor is used without `new`, it adds `new` before itself:
+    if(!(this instanceof JSZip)) return new JSZip(data, options);
+
+    // object containing the files :
+    // {
+    //   "folder/" : {...},
+    //   "folder/data.txt" : {...}
+    // }
+    this.files = {};
+
+    this.comment = null;
+
+    // Where we are in the hierarchy
+    this.root = "";
+    if (data) {
+        this.load(data, options);
+    }
+    this.clone = function() {
+        var newObj = new JSZip();
+        for (var i in this) {
+            if (typeof this[i] !== "function") {
+                newObj[i] = this[i];
+            }
+        }
+        return newObj;
+    };
+}
+JSZip.prototype = require('./object');
+JSZip.prototype.load = require('./load');
+JSZip.support = require('./support');
+JSZip.defaults = require('./defaults');
+
+/**
+ * @deprecated
+ * This namespace will be removed in a future version without replacement.
+ */
+JSZip.utils = require('./deprecatedPublicUtils');
+
+JSZip.base64 = {
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    encode : function(input) {
+        return base64.encode(input);
+    },
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    decode : function(input) {
+        return base64.decode(input);
+    }
+};
+JSZip.compressions = require('./compressions');
+module.exports = JSZip;
+
+},{"./base64":11,"./compressions":13,"./defaults":16,"./deprecatedPublicUtils":17,"./load":20,"./object":23,"./support":27}],20:[function(require,module,exports){
+'use strict';
+var base64 = require('./base64');
+var utf8 = require('./utf8');
+var utils = require('./utils');
+var ZipEntries = require('./zipEntries');
+module.exports = function(data, options) {
+    var files, zipEntries, i, input;
+    options = utils.extend(options || {}, {
+        base64: false,
+        checkCRC32: false,
+        optimizedBinaryString : false,
+        createFolders: false,
+        decodeFileName: utf8.utf8decode
+    });
+    if (options.base64) {
+        data = base64.decode(data);
+    }
+
+    zipEntries = new ZipEntries(data, options);
+    files = zipEntries.files;
+    for (i = 0; i < files.length; i++) {
+        input = files[i];
+        this.file(input.fileNameStr, input.decompressed, {
+            binary: true,
+            optimizedBinaryString: true,
+            date: input.date,
+            dir: input.dir,
+            comment : input.fileCommentStr.length ? input.fileCommentStr : null,
+            unixPermissions : input.unixPermissions,
+            dosPermissions : input.dosPermissions,
+            createFolders: options.createFolders
+        });
+    }
+    if (zipEntries.zipComment.length) {
+        this.comment = zipEntries.zipComment;
+    }
+
+    return this;
+};
+
+},{"./base64":11,"./utf8":30,"./utils":31,"./zipEntries":32}],21:[function(require,module,exports){
+(function (Buffer){
+'use strict';
+module.exports = function(data, encoding){
+    return new Buffer(data, encoding);
+};
+module.exports.test = function(b){
+    return Buffer.isBuffer(b);
+};
+
+}).call(this,require("buffer").Buffer)
+},{"buffer":6}],22:[function(require,module,exports){
+'use strict';
+var Uint8ArrayReader = require('./uint8ArrayReader');
+
+function NodeBufferReader(data) {
+    this.data = data;
+    this.length = this.data.length;
+    this.index = 0;
+    this.zero = 0;
+}
+NodeBufferReader.prototype = new Uint8ArrayReader();
+
+/**
+ * @see DataReader.readData
+ */
+NodeBufferReader.prototype.readData = function(size) {
+    this.checkOffset(size);
+    var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);
+    this.index += size;
+    return result;
+};
+module.exports = NodeBufferReader;
+
+},{"./uint8ArrayReader":28}],23:[function(require,module,exports){
+'use strict';
+var support = require('./support');
+var utils = require('./utils');
+var crc32 = require('./crc32');
+var signature = require('./signature');
+var defaults = require('./defaults');
+var base64 = require('./base64');
+var compressions = require('./compressions');
+var CompressedObject = require('./compressedObject');
+var nodeBuffer = require('./nodeBuffer');
+var utf8 = require('./utf8');
+var StringWriter = require('./stringWriter');
+var Uint8ArrayWriter = require('./uint8ArrayWriter');
+
+/**
+ * Returns the raw data of a ZipObject, decompress the content if necessary.
+ * @param {ZipObject} file the file to use.
+ * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.
+ */
+var getRawData = function(file) {
+    if (file._data instanceof CompressedObject) {
+        file._data = file._data.getContent();
+        file.options.binary = true;
+        file.options.base64 = false;
+
+        if (utils.getTypeOf(file._data) === "uint8array") {
+            var copy = file._data;
+            // when reading an arraybuffer, the CompressedObject mechanism will keep it and subarray() a Uint8Array.
+            // if we request a file in the same format, we might get the same Uint8Array or its ArrayBuffer (the original zip file).
+            file._data = new Uint8Array(copy.length);
+            // with an empty Uint8Array, Opera fails with a "Offset larger than array size"
+            if (copy.length !== 0) {
+                file._data.set(copy, 0);
+            }
+        }
+    }
+    return file._data;
+};
+
+/**
+ * Returns the data of a ZipObject in a binary form. If the content is an unicode string, encode it.
+ * @param {ZipObject} file the file to use.
+ * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.
+ */
+var getBinaryData = function(file) {
+    var result = getRawData(file),
+        type = utils.getTypeOf(result);
+    if (type === "string") {
+        if (!file.options.binary) {
+            // unicode text !
+            // unicode string => binary string is a painful process, check if we can avoid it.
+            if (support.nodebuffer) {
+                return nodeBuffer(result, "utf-8");
+            }
+        }
+        return file.asBinary();
+    }
+    return result;
+};
+
+/**
+ * Transform this._data into a string.
+ * @param {function} filter a function String -> String, applied if not null on the result.
+ * @return {String} the string representing this._data.
+ */
+var dataToString = function(asUTF8) {
+    var result = getRawData(this);
+    if (result === null || typeof result === "undefined") {
+        return "";
+    }
+    // if the data is a base64 string, we decode it before checking the encoding !
+    if (this.options.base64) {
+        result = base64.decode(result);
+    }
+    if (asUTF8 && this.options.binary) {
+        // JSZip.prototype.utf8decode supports arrays as input
+        // skip to array => string step, utf8decode will do it.
+        result = out.utf8decode(result);
+    }
+    else {
+        // no utf8 transformation, do the array => string step.
+        result = utils.transformTo("string", result);
+    }
+
+    if (!asUTF8 && !this.options.binary) {
+        result = utils.transformTo("string", out.utf8encode(result));
+    }
+    return result;
+};
+/**
+ * A simple object representing a file in the zip file.
+ * @constructor
+ * @param {string} name the name of the file
+ * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data
+ * @param {Object} options the options of the file
+ */
+var ZipObject = function(name, data, options) {
+    this.name = name;
+    this.dir = options.dir;
+    this.date = options.date;
+    this.comment = options.comment;
+    this.unixPermissions = options.unixPermissions;
+    this.dosPermissions = options.dosPermissions;
+
+    this._data = data;
+    this.options = options;
+
+    /*
+     * This object contains initial values for dir and date.
+     * With them, we can check if the user changed the deprecated metadata in
+     * `ZipObject#options` or not.
+     */
+    this._initialMetadata = {
+      dir : options.dir,
+      date : options.date
+    };
+};
+
+ZipObject.prototype = {
+    /**
+     * Return the content as UTF8 string.
+     * @return {string} the UTF8 string.
+     */
+    asText: function() {
+        return dataToString.call(this, true);
+    },
+    /**
+     * Returns the binary content.
+     * @return {string} the content as binary.
+     */
+    asBinary: function() {
+        return dataToString.call(this, false);
+    },
+    /**
+     * Returns the content as a nodejs Buffer.
+     * @return {Buffer} the content as a Buffer.
+     */
+    asNodeBuffer: function() {
+        var result = getBinaryData(this);
+        return utils.transformTo("nodebuffer", result);
+    },
+    /**
+     * Returns the content as an Uint8Array.
+     * @return {Uint8Array} the content as an Uint8Array.
+     */
+    asUint8Array: function() {
+        var result = getBinaryData(this);
+        return utils.transformTo("uint8array", result);
+    },
+    /**
+     * Returns the content as an ArrayBuffer.
+     * @return {ArrayBuffer} the content as an ArrayBufer.
+     */
+    asArrayBuffer: function() {
+        return this.asUint8Array().buffer;
+    }
+};
+
+/**
+ * Transform an integer into a string in hexadecimal.
+ * @private
+ * @param {number} dec the number to convert.
+ * @param {number} bytes the number of bytes to generate.
+ * @returns {string} the result.
+ */
+var decToHex = function(dec, bytes) {
+    var hex = "",
+        i;
+    for (i = 0; i < bytes; i++) {
+        hex += String.fromCharCode(dec & 0xff);
+        dec = dec >>> 8;
+    }
+    return hex;
+};
+
+/**
+ * Transforms the (incomplete) options from the user into the complete
+ * set of options to create a file.
+ * @private
+ * @param {Object} o the options from the user.
+ * @return {Object} the complete set of options.
+ */
+var prepareFileAttrs = function(o) {
+    o = o || {};
+    if (o.base64 === true && (o.binary === null || o.binary === undefined)) {
+        o.binary = true;
+    }
+    o = utils.extend(o, defaults);
+    o.date = o.date || new Date();
+    if (o.compression !== null) o.compression = o.compression.toUpperCase();
+
+    return o;
+};
+
+/**
+ * Add a file in the current folder.
+ * @private
+ * @param {string} name the name of the file
+ * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file
+ * @param {Object} o the options of the file
+ * @return {Object} the new file.
+ */
+var fileAdd = function(name, data, o) {
+    // be sure sub folders exist
+    var dataType = utils.getTypeOf(data),
+        parent;
+
+    o = prepareFileAttrs(o);
+
+    if (typeof o.unixPermissions === "string") {
+        o.unixPermissions = parseInt(o.unixPermissions, 8);
+    }
+
+    // UNX_IFDIR  0040000 see zipinfo.c
+    if (o.unixPermissions && (o.unixPermissions & 0x4000)) {
+        o.dir = true;
+    }
+    // Bit 4    Directory
+    if (o.dosPermissions && (o.dosPermissions & 0x0010)) {
+        o.dir = true;
+    }
+
+    if (o.dir) {
+        name = forceTrailingSlash(name);
+    }
+
+    if (o.createFolders && (parent = parentFolder(name))) {
+        folderAdd.call(this, parent, true);
+    }
+
+    if (o.dir || data === null || typeof data === "undefined") {
+        o.base64 = false;
+        o.binary = false;
+        data = null;
+        dataType = null;
+    }
+    else if (dataType === "string") {
+        if (o.binary && !o.base64) {
+            // optimizedBinaryString == true means that the file has already been filtered with a 0xFF mask
+            if (o.optimizedBinaryString !== true) {
+                // this is a string, not in a base64 format.
+                // Be sure that this is a correct "binary string"
+                data = utils.string2binary(data);
+            }
+        }
+    }
+    else { // arraybuffer, uint8array, ...
+        o.base64 = false;
+        o.binary = true;
+
+        if (!dataType && !(data instanceof CompressedObject)) {
+            throw new Error("The data of '" + name + "' is in an unsupported format !");
+        }
+
+        // special case : it's way easier to work with Uint8Array than with ArrayBuffer
+        if (dataType === "arraybuffer") {
+            data = utils.transformTo("uint8array", data);
+        }
+    }
+
+    var object = new ZipObject(name, data, o);
+    this.files[name] = object;
+    return object;
+};
+
+/**
+ * Find the parent folder of the path.
+ * @private
+ * @param {string} path the path to use
+ * @return {string} the parent folder, or ""
+ */
+var parentFolder = function (path) {
+    if (path.slice(-1) == '/') {
+        path = path.substring(0, path.length - 1);
+    }
+    var lastSlash = path.lastIndexOf('/');
+    return (lastSlash > 0) ? path.substring(0, lastSlash) : "";
+};
+
+
+/**
+ * Returns the path with a slash at the end.
+ * @private
+ * @param {String} path the path to check.
+ * @return {String} the path with a trailing slash.
+ */
+var forceTrailingSlash = function(path) {
+    // Check the name ends with a /
+    if (path.slice(-1) != "/") {
+        path += "/"; // IE doesn't like substr(-1)
+    }
+    return path;
+};
+/**
+ * Add a (sub) folder in the current folder.
+ * @private
+ * @param {string} name the folder's name
+ * @param {boolean=} [createFolders] If true, automatically create sub
+ *  folders. Defaults to false.
+ * @return {Object} the new folder.
+ */
+var folderAdd = function(name, createFolders) {
+    createFolders = (typeof createFolders !== 'undefined') ? createFolders : false;
+
+    name = forceTrailingSlash(name);
+
+    // Does this folder already exist?
+    if (!this.files[name]) {
+        fileAdd.call(this, name, null, {
+            dir: true,
+            createFolders: createFolders
+        });
+    }
+    return this.files[name];
+};
+
+/**
+ * Generate a JSZip.CompressedObject for a given zipOject.
+ * @param {ZipObject} file the object to read.
+ * @param {JSZip.compression} compression the compression to use.
+ * @param {Object} compressionOptions the options to use when compressing.
+ * @return {JSZip.CompressedObject} the compressed result.
+ */
+var generateCompressedObjectFrom = function(file, compression, compressionOptions) {
+    var result = new CompressedObject(),
+        content;
+
+    // the data has not been decompressed, we might reuse things !
+    if (file._data instanceof CompressedObject) {
+        result.uncompressedSize = file._data.uncompressedSize;
+        result.crc32 = file._data.crc32;
+
+        if (result.uncompressedSize === 0 || file.dir) {
+            compression = compressions['STORE'];
+            result.compressedContent = "";
+            result.crc32 = 0;
+        }
+        else if (file._data.compressionMethod === compression.magic) {
+            result.compressedContent = file._data.getCompressedContent();
+        }
+        else {
+            content = file._data.getContent();
+            // need to decompress / recompress
+            result.compressedContent = compression.compress(utils.transformTo(compression.compressInputType, content), compressionOptions);
+        }
+    }
+    else {
+        // have uncompressed data
+        content = getBinaryData(file);
+        if (!content || content.length === 0 || file.dir) {
+            compression = compressions['STORE'];
+            content = "";
+        }
+        result.uncompressedSize = content.length;
+        result.crc32 = crc32(content);
+        result.compressedContent = compression.compress(utils.transformTo(compression.compressInputType, content), compressionOptions);
+    }
+
+    result.compressedSize = result.compressedContent.length;
+    result.compressionMethod = compression.magic;
+
+    return result;
+};
+
+
+
+
+/**
+ * Generate the UNIX part of the external file attributes.
+ * @param {Object} unixPermissions the unix permissions or null.
+ * @param {Boolean} isDir true if the entry is a directory, false otherwise.
+ * @return {Number} a 32 bit integer.
+ *
+ * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :
+ *
+ * TTTTsstrwxrwxrwx0000000000ADVSHR
+ * ^^^^____________________________ file type, see zipinfo.c (UNX_*)
+ *     ^^^_________________________ setuid, setgid, sticky
+ *        ^^^^^^^^^________________ permissions
+ *                 ^^^^^^^^^^______ not used ?
+ *                           ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only
+ */
+var generateUnixExternalFileAttr = function (unixPermissions, isDir) {
+
+    var result = unixPermissions;
+    if (!unixPermissions) {
+        // I can't use octal values in strict mode, hence the hexa.
+        //  040775 => 0x41fd
+        // 0100664 => 0x81b4
+        result = isDir ? 0x41fd : 0x81b4;
+    }
+
+    return (result & 0xFFFF) << 16;
+};
+
+/**
+ * Generate the DOS part of the external file attributes.
+ * @param {Object} dosPermissions the dos permissions or null.
+ * @param {Boolean} isDir true if the entry is a directory, false otherwise.
+ * @return {Number} a 32 bit integer.
+ *
+ * Bit 0     Read-Only
+ * Bit 1     Hidden
+ * Bit 2     System
+ * Bit 3     Volume Label
+ * Bit 4     Directory
+ * Bit 5     Archive
+ */
+var generateDosExternalFileAttr = function (dosPermissions, isDir) {
+
+    // the dir flag is already set for compatibility
+
+    return (dosPermissions || 0)  & 0x3F;
+};
+
+/**
+ * Generate the various parts used in the construction of the final zip file.
+ * @param {string} name the file name.
+ * @param {ZipObject} file the file content.
+ * @param {JSZip.CompressedObject} compressedObject the compressed object.
+ * @param {number} offset the current offset from the start of the zip file.
+ * @param {String} platform let's pretend we are this platform (change platform dependents fields)
+ * @param {Function} encodeFileName the function to encode the file name / comment.
+ * @return {object} the zip parts.
+ */
+var generateZipParts = function(name, file, compressedObject, offset, platform, encodeFileName) {
+    var data = compressedObject.compressedContent,
+        useCustomEncoding = encodeFileName !== utf8.utf8encode,
+        encodedFileName = utils.transformTo("string", encodeFileName(file.name)),
+        utfEncodedFileName = utils.transformTo("string", utf8.utf8encode(file.name)),
+        comment = file.comment || "",
+        encodedComment = utils.transformTo("string", encodeFileName(comment)),
+        utfEncodedComment = utils.transformTo("string", utf8.utf8encode(comment)),
+        useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,
+        useUTF8ForComment = utfEncodedComment.length !== comment.length,
+        o = file.options,
+        dosTime,
+        dosDate,
+        extraFields = "",
+        unicodePathExtraField = "",
+        unicodeCommentExtraField = "",
+        dir, date;
+
+
+    // handle the deprecated options.dir
+    if (file._initialMetadata.dir !== file.dir) {
+        dir = file.dir;
+    } else {
+        dir = o.dir;
+    }
+
+    // handle the deprecated options.date
+    if(file._initialMetadata.date !== file.date) {
+        date = file.date;
+    } else {
+        date = o.date;
+    }
+
+    var extFileAttr = 0;
+    var versionMadeBy = 0;
+    if (dir) {
+        // dos or unix, we set the dos dir flag
+        extFileAttr |= 0x00010;
+    }
+    if(platform === "UNIX") {
+        versionMadeBy = 0x031E; // UNIX, version 3.0
+        extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);
+    } else { // DOS or other, fallback to DOS
+        versionMadeBy = 0x0014; // DOS, version 2.0
+        extFileAttr |= generateDosExternalFileAttr(file.dosPermissions, dir);
+    }
+
+    // date
+    // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html
+    // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html
+    // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html
+
+    dosTime = date.getHours();
+    dosTime = dosTime << 6;
+    dosTime = dosTime | date.getMinutes();
+    dosTime = dosTime << 5;
+    dosTime = dosTime | date.getSeconds() / 2;
+
+    dosDate = date.getFullYear() - 1980;
+    dosDate = dosDate << 4;
+    dosDate = dosDate | (date.getMonth() + 1);
+    dosDate = dosDate << 5;
+    dosDate = dosDate | date.getDate();
+
+    if (useUTF8ForFileName) {
+        // set the unicode path extra field. unzip needs at least one extra
+        // field to correctly handle unicode path, so using the path is as good
+        // as any other information. This could improve the situation with
+        // other archive managers too.
+        // This field is usually used without the utf8 flag, with a non
+        // unicode path in the header (winrar, winzip). This helps (a bit)
+        // with the messy Windows' default compressed folders feature but
+        // breaks on p7zip which doesn't seek the unicode path extra field.
+        // So for now, UTF-8 everywhere !
+        unicodePathExtraField =
+            // Version
+            decToHex(1, 1) +
+            // NameCRC32
+            decToHex(crc32(encodedFileName), 4) +
+            // UnicodeName
+            utfEncodedFileName;
+
+        extraFields +=
+            // Info-ZIP Unicode Path Extra Field
+            "\x75\x70" +
+            // size
+            decToHex(unicodePathExtraField.length, 2) +
+            // content
+            unicodePathExtraField;
+    }
+
+    if(useUTF8ForComment) {
+
+        unicodeCommentExtraField =
+            // Version
+            decToHex(1, 1) +
+            // CommentCRC32
+            decToHex(this.crc32(encodedComment), 4) +
+            // UnicodeName
+            utfEncodedComment;
+
+        extraFields +=
+            // Info-ZIP Unicode Path Extra Field
+            "\x75\x63" +
+            // size
+            decToHex(unicodeCommentExtraField.length, 2) +
+            // content
+            unicodeCommentExtraField;
+    }
+
+    var header = "";
+
+    // version needed to extract
+    header += "\x0A\x00";
+    // general purpose bit flag
+    // set bit 11 if utf8
+    header += !useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment) ? "\x00\x08" : "\x00\x00";
+    // compression method
+    header += compressedObject.compressionMethod;
+    // last mod file time
+    header += decToHex(dosTime, 2);
+    // last mod file date
+    header += decToHex(dosDate, 2);
+    // crc-32
+    header += decToHex(compressedObject.crc32, 4);
+    // compressed size
+    header += decToHex(compressedObject.compressedSize, 4);
+    // uncompressed size
+    header += decToHex(compressedObject.uncompressedSize, 4);
+    // file name length
+    header += decToHex(encodedFileName.length, 2);
+    // extra field length
+    header += decToHex(extraFields.length, 2);
+
+
+    var fileRecord = signature.LOCAL_FILE_HEADER + header + encodedFileName + extraFields;
+
+    var dirRecord = signature.CENTRAL_FILE_HEADER +
+    // version made by (00: DOS)
+    decToHex(versionMadeBy, 2) +
+    // file header (common to file and central directory)
+    header +
+    // file comment length
+    decToHex(encodedComment.length, 2) +
+    // disk number start
+    "\x00\x00" +
+    // internal file attributes TODO
+    "\x00\x00" +
+    // external file attributes
+    decToHex(extFileAttr, 4) +
+    // relative offset of local header
+    decToHex(offset, 4) +
+    // file name
+    encodedFileName +
+    // extra field
+    extraFields +
+    // file comment
+    encodedComment;
+
+    return {
+        fileRecord: fileRecord,
+        dirRecord: dirRecord,
+        compressedObject: compressedObject
+    };
+};
+
+
+// return the actual prototype of JSZip
+var out = {
+    /**
+     * Read an existing zip and merge the data in the current JSZip object.
+     * The implementation is in jszip-load.js, don't forget to include it.
+     * @param {String|ArrayBuffer|Uint8Array|Buffer} stream  The stream to load
+     * @param {Object} options Options for loading the stream.
+     *  options.base64 : is the stream in base64 ? default : false
+     * @return {JSZip} the current JSZip object
+     */
+    load: function(stream, options) {
+        throw new Error("Load method is not defined. Is the file jszip-load.js included ?");
+    },
+
+    /**
+     * Filter nested files/folders with the specified function.
+     * @param {Function} search the predicate to use :
+     * function (relativePath, file) {...}
+     * It takes 2 arguments : the relative path and the file.
+     * @return {Array} An array of matching elements.
+     */
+    filter: function(search) {
+        var result = [],
+            filename, relativePath, file, fileClone;
+        for (filename in this.files) {
+            if (!this.files.hasOwnProperty(filename)) {
+                continue;
+            }
+            file = this.files[filename];
+            // return a new object, don't let the user mess with our internal objects :)
+            fileClone = new ZipObject(file.name, file._data, utils.extend(file.options));
+            relativePath = filename.slice(this.root.length, filename.length);
+            if (filename.slice(0, this.root.length) === this.root && // the file is in the current root
+            search(relativePath, fileClone)) { // and the file matches the function
+                result.push(fileClone);
+            }
+        }
+        return result;
+    },
+
+    /**
+     * Add a file to the zip file, or search a file.
+     * @param   {string|RegExp} name The name of the file to add (if data is defined),
+     * the name of the file to find (if no data) or a regex to match files.
+     * @param   {String|ArrayBuffer|Uint8Array|Buffer} data  The file data, either raw or base64 encoded
+     * @param   {Object} o     File options
+     * @return  {JSZip|Object|Array} this JSZip object (when adding a file),
+     * a file (when searching by string) or an array of files (when searching by regex).
+     */
+    file: function(name, data, o) {
+        if (arguments.length === 1) {
+            if (utils.isRegExp(name)) {
+                var regexp = name;
+                return this.filter(function(relativePath, file) {
+                    return !file.dir && regexp.test(relativePath);
+                });
+            }
+            else { // text
+                return this.filter(function(relativePath, file) {
+                    return !file.dir && relativePath === name;
+                })[0] || null;
+            }
+        }
+        else { // more than one argument : we have data !
+            name = this.root + name;
+            fileAdd.call(this, name, data, o);
+        }
+        return this;
+    },
+
+    /**
+     * Add a directory to the zip file, or search.
+     * @param   {String|RegExp} arg The name of the directory to add, or a regex to search folders.
+     * @return  {JSZip} an object with the new directory as the root, or an array containing matching folders.
+     */
+    folder: function(arg) {
+        if (!arg) {
+            return this;
+        }
+
+        if (utils.isRegExp(arg)) {
+            return this.filter(function(relativePath, file) {
+                return file.dir && arg.test(relativePath);
+            });
+        }
+
+        // else, name is a new folder
+        var name = this.root + arg;
+        var newFolder = folderAdd.call(this, name);
+
+        // Allow chaining by returning a new object with this folder as the root
+        var ret = this.clone();
+        ret.root = newFolder.name;
+        return ret;
+    },
+
+    /**
+     * Delete a file, or a directory and all sub-files, from the zip
+     * @param {string} name the name of the file to delete
+     * @return {JSZip} this JSZip object
+     */
+    remove: function(name) {
+        name = this.root + name;
+        var file = this.files[name];
+        if (!file) {
+            // Look for any folders
+            if (name.slice(-1) != "/") {
+                name += "/";
+            }
+            file = this.files[name];
+        }
+
+        if (file && !file.dir) {
+            // file
+            delete this.files[name];
+        } else {
+            // maybe a folder, delete recursively
+            var kids = this.filter(function(relativePath, file) {
+                return file.name.slice(0, name.length) === name;
+            });
+            for (var i = 0; i < kids.length; i++) {
+                delete this.files[kids[i].name];
+            }
+        }
+
+        return this;
+    },
+
+    /**
+     * Generate the complete zip file
+     * @param {Object} options the options to generate the zip file :
+     * - base64, (deprecated, use type instead) true to generate base64.
+     * - compression, "STORE" by default.
+     * - type, "base64" by default. Values are : string, base64, uint8array, arraybuffer, blob.
+     * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file
+     */
+    generate: function(options) {
+        options = utils.extend(options || {}, {
+            base64: true,
+            compression: "STORE",
+            compressionOptions : null,
+            type: "base64",
+            platform: "DOS",
+            comment: null,
+            mimeType: 'application/zip',
+            encodeFileName: utf8.utf8encode
+        });
+
+        utils.checkSupport(options.type);
+
+        // accept nodejs `process.platform`
+        if(
+          options.platform === 'darwin' ||
+          options.platform === 'freebsd' ||
+          options.platform === 'linux' ||
+          options.platform === 'sunos'
+        ) {
+          options.platform = "UNIX";
+        }
+        if (options.platform === 'win32') {
+          options.platform = "DOS";
+        }
+
+        var zipData = [],
+            localDirLength = 0,
+            centralDirLength = 0,
+            writer, i,
+            encodedComment = utils.transformTo("string", options.encodeFileName(options.comment || this.comment || ""));
+
+        // first, generate all the zip parts.
+        for (var name in this.files) {
+            if (!this.files.hasOwnProperty(name)) {
+                continue;
+            }
+            var file = this.files[name];
+
+            var compressionName = file.options.compression || options.compression.toUpperCase();
+            var compression = compressions[compressionName];
+            if (!compression) {
+                throw new Error(compressionName + " is not a valid compression method !");
+            }
+            var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};
+
+            var compressedObject = generateCompressedObjectFrom.call(this, file, compression, compressionOptions);
+
+            var zipPart = generateZipParts.call(this, name, file, compressedObject, localDirLength, options.platform, options.encodeFileName);
+            localDirLength += zipPart.fileRecord.length + compressedObject.compressedSize;
+            centralDirLength += zipPart.dirRecord.length;
+            zipData.push(zipPart);
+        }
+
+        var dirEnd = "";
+
+        // end of central dir signature
+        dirEnd = signature.CENTRAL_DIRECTORY_END +
+        // number of this disk
+        "\x00\x00" +
+        // number of the disk with the start of the central directory
+        "\x00\x00" +
+        // total number of entries in the central directory on this disk
+        decToHex(zipData.length, 2) +
+        // total number of entries in the central directory
+        decToHex(zipData.length, 2) +
+        // size of the central directory   4 bytes
+        decToHex(centralDirLength, 4) +
+        // offset of start of central directory with respect to the starting disk number
+        decToHex(localDirLength, 4) +
+        // .ZIP file comment length
+        decToHex(encodedComment.length, 2) +
+        // .ZIP file comment
+        encodedComment;
+
+
+        // we have all the parts (and the total length)
+        // time to create a writer !
+        var typeName = options.type.toLowerCase();
+        if(typeName==="uint8array"||typeName==="arraybuffer"||typeName==="blob"||typeName==="nodebuffer") {
+            writer = new Uint8ArrayWriter(localDirLength + centralDirLength + dirEnd.length);
+        }else{
+            writer = new StringWriter(localDirLength + centralDirLength + dirEnd.length);
+        }
+
+        for (i = 0; i < zipData.length; i++) {
+            writer.append(zipData[i].fileRecord);
+            writer.append(zipData[i].compressedObject.compressedContent);
+        }
+        for (i = 0; i < zipData.length; i++) {
+            writer.append(zipData[i].dirRecord);
+        }
+
+        writer.append(dirEnd);
+
+        var zip = writer.finalize();
+
+
+
+        switch(options.type.toLowerCase()) {
+            // case "zip is an Uint8Array"
+            case "uint8array" :
+            case "arraybuffer" :
+            case "nodebuffer" :
+               return utils.transformTo(options.type.toLowerCase(), zip);
+            case "blob" :
+               return utils.arrayBuffer2Blob(utils.transformTo("arraybuffer", zip), options.mimeType);
+            // case "zip is a string"
+            case "base64" :
+               return (options.base64) ? base64.encode(zip) : zip;
+            default : // case "string" :
+               return zip;
+         }
+
+    },
+
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    crc32: function (input, crc) {
+        return crc32(input, crc);
+    },
+
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    utf8encode: function (string) {
+        return utils.transformTo("string", utf8.utf8encode(string));
+    },
+
+    /**
+     * @deprecated
+     * This method will be removed in a future version without replacement.
+     */
+    utf8decode: function (input) {
+        return utf8.utf8decode(input);
+    }
+};
+module.exports = out;
+
+},{"./base64":11,"./compressedObject":12,"./compressions":13,"./crc32":14,"./defaults":16,"./nodeBuffer":21,"./signature":24,"./stringWriter":26,"./support":27,"./uint8ArrayWriter":29,"./utf8":30,"./utils":31}],24:[function(require,module,exports){
+'use strict';
+exports.LOCAL_FILE_HEADER = "PK\x03\x04";
+exports.CENTRAL_FILE_HEADER = "PK\x01\x02";
+exports.CENTRAL_DIRECTORY_END = "PK\x05\x06";
+exports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x06\x07";
+exports.ZIP64_CENTRAL_DIRECTORY_END = "PK\x06\x06";
+exports.DATA_DESCRIPTOR = "PK\x07\x08";
+
+},{}],25:[function(require,module,exports){
+'use strict';
+var DataReader = require('./dataReader');
+var utils = require('./utils');
+
+function StringReader(data, optimizedBinaryString) {
+    this.data = data;
+    if (!optimizedBinaryString) {
+        this.data = utils.string2binary(this.data);
+    }
+    this.length = this.data.length;
+    this.index = 0;
+    this.zero = 0;
+}
+StringReader.prototype = new DataReader();
+/**
+ * @see DataReader.byteAt
+ */
+StringReader.prototype.byteAt = function(i) {
+    return this.data.charCodeAt(this.zero + i);
+};
+/**
+ * @see DataReader.lastIndexOfSignature
+ */
+StringReader.prototype.lastIndexOfSignature = function(sig) {
+    return this.data.lastIndexOf(sig) - this.zero;
+};
+/**
+ * @see DataReader.readData
+ */
+StringReader.prototype.readData = function(size) {
+    this.checkOffset(size);
+    // this will work because the constructor applied the "& 0xff" mask.
+    var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);
+    this.index += size;
+    return result;
+};
+module.exports = StringReader;
+
+},{"./dataReader":15,"./utils":31}],26:[function(require,module,exports){
+'use strict';
+
+var utils = require('./utils');
+
+/**
+ * An object to write any content to a string.
+ * @constructor
+ */
+var StringWriter = function() {
+    this.data = [];
+};
+StringWriter.prototype = {
+    /**
+     * Append any content to the current string.
+     * @param {Object} input the content to add.
+     */
+    append: function(input) {
+        input = utils.transformTo("string", input);
+        this.data.push(input);
+    },
+    /**
+     * Finalize the construction an return the result.
+     * @return {string} the generated string.
+     */
+    finalize: function() {
+        return this.data.join("");
+    }
+};
+
+module.exports = StringWriter;
+
+},{"./utils":31}],27:[function(require,module,exports){
+(function (Buffer){
+'use strict';
+exports.base64 = true;
+exports.array = true;
+exports.string = true;
+exports.arraybuffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined";
+// contains true if JSZip can read/generate nodejs Buffer, false otherwise.
+// Browserify will provide a Buffer implementation for browsers, which is
+// an augmented Uint8Array (i.e., can be used as either Buffer or U8).
+exports.nodebuffer = typeof Buffer !== "undefined";
+// contains true if JSZip can read/generate Uint8Array, false otherwise.
+exports.uint8array = typeof Uint8Array !== "undefined";
+
+if (typeof ArrayBuffer === "undefined") {
+    exports.blob = false;
+}
+else {
+    var buffer = new ArrayBuffer(0);
+    try {
+        exports.blob = new Blob([buffer], {
+            type: "application/zip"
+        }).size === 0;
+    }
+    catch (e) {
+        try {
+            var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
+            var builder = new Builder();
+            builder.append(buffer);
+            exports.blob = builder.getBlob('application/zip').size === 0;
+        }
+        catch (e) {
+            exports.blob = false;
+        }
+    }
+}
+
+}).call(this,require("buffer").Buffer)
+},{"buffer":6}],28:[function(require,module,exports){
+'use strict';
+var ArrayReader = require('./arrayReader');
+
+function Uint8ArrayReader(data) {
+    if (data) {
+        this.data = data;
+        this.length = this.data.length;
+        this.index = 0;
+        this.zero = 0;
+    }
+}
+Uint8ArrayReader.prototype = new ArrayReader();
+/**
+ * @see DataReader.readData
+ */
+Uint8ArrayReader.prototype.readData = function(size) {
+    this.checkOffset(size);
+    if(size === 0) {
+        // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].
+        return new Uint8Array(0);
+    }
+    var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size);
+    this.index += size;
+    return result;
+};
+module.exports = Uint8ArrayReader;
+
+},{"./arrayReader":10}],29:[function(require,module,exports){
+'use strict';
+
+var utils = require('./utils');
+
+/**
+ * An object to write any content to an Uint8Array.
+ * @constructor
+ * @param {number} length The length of the array.
+ */
+var Uint8ArrayWriter = function(length) {
+    this.data = new Uint8Array(length);
+    this.index = 0;
+};
+Uint8ArrayWriter.prototype = {
+    /**
+     * Append any content to the current array.
+     * @param {Object} input the content to add.
+     */
+    append: function(input) {
+        if (input.length !== 0) {
+            // with an empty Uint8Array, Opera fails with a "Offset larger than array size"
+            input = utils.transformTo("uint8array", input);
+            this.data.set(input, this.index);
+            this.index += input.length;
+        }
+    },
+    /**
+     * Finalize the construction an return the result.
+     * @return {Uint8Array} the generated array.
+     */
+    finalize: function() {
+        return this.data;
+    }
+};
+
+module.exports = Uint8ArrayWriter;
+
+},{"./utils":31}],30:[function(require,module,exports){
+'use strict';
+
+var utils = require('./utils');
+var support = require('./support');
+var nodeBuffer = require('./nodeBuffer');
+
+/**
+ * The following functions come from pako, from pako/lib/utils/strings
+ * released under the MIT license, see pako https://github.com/nodeca/pako/
+ */
+
+// Table with utf8 lengths (calculated by first byte of sequence)
+// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
+// because max possible codepoint is 0x10ffff
+var _utf8len = new Array(256);
+for (var i=0; i<256; i++) {
+  _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);
+}
+_utf8len[254]=_utf8len[254]=1; // Invalid sequence start
+
+// convert string to array (typed, when possible)
+var string2buf = function (str) {
+    var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
+
+    // count binary size
+    for (m_pos = 0; m_pos < str_len; m_pos++) {
+        c = str.charCodeAt(m_pos);
+        if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+            c2 = str.charCodeAt(m_pos+1);
+            if ((c2 & 0xfc00) === 0xdc00) {
+                c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+                m_pos++;
+            }
+        }
+        buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
+    }
+
+    // allocate buffer
+    if (support.uint8array) {
+        buf = new Uint8Array(buf_len);
+    } else {
+        buf = new Array(buf_len);
+    }
+
+    // convert
+    for (i=0, m_pos = 0; i < buf_len; m_pos++) {
+        c = str.charCodeAt(m_pos);
+        if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+            c2 = str.charCodeAt(m_pos+1);
+            if ((c2 & 0xfc00) === 0xdc00) {
+                c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+                m_pos++;
+            }
+        }
+        if (c < 0x80) {
+            /* one byte */
+            buf[i++] = c;
+        } else if (c < 0x800) {
+            /* two bytes */
+            buf[i++] = 0xC0 | (c >>> 6);
+            buf[i++] = 0x80 | (c & 0x3f);
+        } else if (c < 0x10000) {
+            /* three bytes */
+            buf[i++] = 0xE0 | (c >>> 12);
+            buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+            buf[i++] = 0x80 | (c & 0x3f);
+        } else {
+            /* four bytes */
+            buf[i++] = 0xf0 | (c >>> 18);
+            buf[i++] = 0x80 | (c >>> 12 & 0x3f);
+            buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+            buf[i++] = 0x80 | (c & 0x3f);
+        }
+    }
+
+    return buf;
+};
+
+// Calculate max possible position in utf8 buffer,
+// that will not break sequence. If that's not possible
+// - (very small limits) return max size as is.
+//
+// buf[] - utf8 bytes array
+// max   - length limit (mandatory);
+var utf8border = function(buf, max) {
+    var pos;
+
+    max = max || buf.length;
+    if (max > buf.length) { max = buf.length; }
+
+    // go back from last position, until start of sequence found
+    pos = max-1;
+    while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }
+
+    // Fuckup - very small and broken sequence,
+    // return max, because we should return something anyway.
+    if (pos < 0) { return max; }
+
+    // If we came to start of buffer - that means vuffer is too small,
+    // return max too.
+    if (pos === 0) { return max; }
+
+    return (pos + _utf8len[buf[pos]] > max) ? pos : max;
+};
+
+// convert array to string
+var buf2string = function (buf) {
+    var str, i, out, c, c_len;
+    var len = buf.length;
+
+    // Reserve max possible length (2 words per char)
+    // NB: by unknown reasons, Array is significantly faster for
+    //     String.fromCharCode.apply than Uint16Array.
+    var utf16buf = new Array(len*2);
+
+    for (out=0, i=0; i<len;) {
+        c = buf[i++];
+        // quick process ascii
+        if (c < 0x80) { utf16buf[out++] = c; continue; }
+
+        c_len = _utf8len[c];
+        // skip 5 & 6 byte codes
+        if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }
+
+        // apply mask on first byte
+        c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
+        // join the rest
+        while (c_len > 1 && i < len) {
+            c = (c << 6) | (buf[i++] & 0x3f);
+            c_len--;
+        }
+
+        // terminated by end of string?
+        if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }
+
+        if (c < 0x10000) {
+            utf16buf[out++] = c;
+        } else {
+            c -= 0x10000;
+            utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
+            utf16buf[out++] = 0xdc00 | (c & 0x3ff);
+        }
+    }
+
+    // shrinkBuf(utf16buf, out)
+    if (utf16buf.length !== out) {
+        if(utf16buf.subarray) {
+            utf16buf = utf16buf.subarray(0, out);
+        } else {
+            utf16buf.length = out;
+        }
+    }
+
+    // return String.fromCharCode.apply(null, utf16buf);
+    return utils.applyFromCharCode(utf16buf);
+};
+
+
+// That's all for the pako functions.
+
+
+/**
+ * Transform a javascript string into an array (typed if possible) of bytes,
+ * UTF-8 encoded.
+ * @param {String} str the string to encode
+ * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.
+ */
+exports.utf8encode = function utf8encode(str) {
+    if (support.nodebuffer) {
+        return nodeBuffer(str, "utf-8");
+    }
+
+    return string2buf(str);
+};
+
+
+/**
+ * Transform a bytes array (or a representation) representing an UTF-8 encoded
+ * string into a javascript string.
+ * @param {Array|Uint8Array|Buffer} buf the data de decode
+ * @return {String} the decoded string.
+ */
+exports.utf8decode = function utf8decode(buf) {
+    if (support.nodebuffer) {
+        return utils.transformTo("nodebuffer", buf).toString("utf-8");
+    }
+
+    buf = utils.transformTo(support.uint8array ? "uint8array" : "array", buf);
+
+    // return buf2string(buf);
+    // Chrome prefers to work with "small" chunks of data
+    // for the method buf2string.
+    // Firefox and Chrome has their own shortcut, IE doesn't seem to really care.
+    var result = [], k = 0, len = buf.length, chunk = 65536;
+    while (k < len) {
+        var nextBoundary = utf8border(buf, Math.min(k + chunk, len));
+        if (support.uint8array) {
+            result.push(buf2string(buf.subarray(k, nextBoundary)));
+        } else {
+            result.push(buf2string(buf.slice(k, nextBoundary)));
+        }
+        k = nextBoundary;
+    }
+    return result.join("");
+
+};
+// vim: set shiftwidth=4 softtabstop=4:
+
+},{"./nodeBuffer":21,"./support":27,"./utils":31}],31:[function(require,module,exports){
+'use strict';
+var support = require('./support');
+var compressions = require('./compressions');
+var nodeBuffer = require('./nodeBuffer');
+/**
+ * Convert a string to a "binary string" : a string containing only char codes between 0 and 255.
+ * @param {string} str the string to transform.
+ * @return {String} the binary string.
+ */
+exports.string2binary = function(str) {
+    var result = "";
+    for (var i = 0; i < str.length; i++) {
+        result += String.fromCharCode(str.charCodeAt(i) & 0xff);
+    }
+    return result;
+};
+exports.arrayBuffer2Blob = function(buffer, mimeType) {
+    exports.checkSupport("blob");
+	mimeType = mimeType || 'application/zip';
+
+    try {
+        // Blob constructor
+        return new Blob([buffer], {
+            type: mimeType
+        });
+    }
+    catch (e) {
+
+        try {
+            // deprecated, browser only, old way
+            var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
+            var builder = new Builder();
+            builder.append(buffer);
+            return builder.getBlob(mimeType);
+        }
+        catch (e) {
+
+            // well, fuck ?!
+            throw new Error("Bug : can't construct the Blob.");
+        }
+    }
+
+
+};
+/**
+ * The identity function.
+ * @param {Object} input the input.
+ * @return {Object} the same input.
+ */
+function identity(input) {
+    return input;
+}
+
+/**
+ * Fill in an array with a string.
+ * @param {String} str the string to use.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).
+ * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.
+ */
+function stringToArrayLike(str, array) {
+    for (var i = 0; i < str.length; ++i) {
+        array[i] = str.charCodeAt(i) & 0xFF;
+    }
+    return array;
+}
+
+/**
+ * Transform an array-like object to a string.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
+ * @return {String} the result.
+ */
+function arrayLikeToString(array) {
+    // Performances notes :
+    // --------------------
+    // String.fromCharCode.apply(null, array) is the fastest, see
+    // see http://jsperf.com/converting-a-uint8array-to-a-string/2
+    // but the stack is limited (and we can get huge arrays !).
+    //
+    // result += String.fromCharCode(array[i]); generate too many strings !
+    //
+    // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2
+    var chunk = 65536;
+    var result = [],
+        len = array.length,
+        type = exports.getTypeOf(array),
+        k = 0,
+        canUseApply = true;
+      try {
+         switch(type) {
+            case "uint8array":
+               String.fromCharCode.apply(null, new Uint8Array(0));
+               break;
+            case "nodebuffer":
+               String.fromCharCode.apply(null, nodeBuffer(0));
+               break;
+         }
+      } catch(e) {
+         canUseApply = false;
+      }
+
+      // no apply : slow and painful algorithm
+      // default browser on android 4.*
+      if (!canUseApply) {
+         var resultStr = "";
+         for(var i = 0; i < array.length;i++) {
+            resultStr += String.fromCharCode(array[i]);
+         }
+    return resultStr;
+    }
+    while (k < len && chunk > 1) {
+        try {
+            if (type === "array" || type === "nodebuffer") {
+                result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));
+            }
+            else {
+                result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));
+            }
+            k += chunk;
+        }
+        catch (e) {
+            chunk = Math.floor(chunk / 2);
+        }
+    }
+    return result.join("");
+}
+
+exports.applyFromCharCode = arrayLikeToString;
+
+
+/**
+ * Copy the data from an array-like to an other array-like.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.
+ * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.
+ */
+function arrayLikeToArrayLike(arrayFrom, arrayTo) {
+    for (var i = 0; i < arrayFrom.length; i++) {
+        arrayTo[i] = arrayFrom[i];
+    }
+    return arrayTo;
+}
+
+// a matrix containing functions to transform everything into everything.
+var transform = {};
+
+// string to ?
+transform["string"] = {
+    "string": identity,
+    "array": function(input) {
+        return stringToArrayLike(input, new Array(input.length));
+    },
+    "arraybuffer": function(input) {
+        return transform["string"]["uint8array"](input).buffer;
+    },
+    "uint8array": function(input) {
+        return stringToArrayLike(input, new Uint8Array(input.length));
+    },
+    "nodebuffer": function(input) {
+        return stringToArrayLike(input, nodeBuffer(input.length));
+    }
+};
+
+// array to ?
+transform["array"] = {
+    "string": arrayLikeToString,
+    "array": identity,
+    "arraybuffer": function(input) {
+        return (new Uint8Array(input)).buffer;
+    },
+    "uint8array": function(input) {
+        return new Uint8Array(input);
+    },
+    "nodebuffer": function(input) {
+        return nodeBuffer(input);
+    }
+};
+
+// arraybuffer to ?
+transform["arraybuffer"] = {
+    "string": function(input) {
+        return arrayLikeToString(new Uint8Array(input));
+    },
+    "array": function(input) {
+        return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));
+    },
+    "arraybuffer": identity,
+    "uint8array": function(input) {
+        return new Uint8Array(input);
+    },
+    "nodebuffer": function(input) {
+        return nodeBuffer(new Uint8Array(input));
+    }
+};
+
+// uint8array to ?
+transform["uint8array"] = {
+    "string": arrayLikeToString,
+    "array": function(input) {
+        return arrayLikeToArrayLike(input, new Array(input.length));
+    },
+    "arraybuffer": function(input) {
+        return input.buffer;
+    },
+    "uint8array": identity,
+    "nodebuffer": function(input) {
+        return nodeBuffer(input);
+    }
+};
+
+// nodebuffer to ?
+transform["nodebuffer"] = {
+    "string": arrayLikeToString,
+    "array": function(input) {
+        return arrayLikeToArrayLike(input, new Array(input.length));
+    },
+    "arraybuffer": function(input) {
+        return transform["nodebuffer"]["uint8array"](input).buffer;
+    },
+    "uint8array": function(input) {
+        return arrayLikeToArrayLike(input, new Uint8Array(input.length));
+    },
+    "nodebuffer": identity
+};
+
+/**
+ * Transform an input into any type.
+ * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.
+ * If no output type is specified, the unmodified input will be returned.
+ * @param {String} outputType the output type.
+ * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.
+ * @throws {Error} an Error if the browser doesn't support the requested output type.
+ */
+exports.transformTo = function(outputType, input) {
+    if (!input) {
+        // undefined, null, etc
+        // an empty string won't harm.
+        input = "";
+    }
+    if (!outputType) {
+        return input;
+    }
+    exports.checkSupport(outputType);
+    var inputType = exports.getTypeOf(input);
+    var result = transform[inputType][outputType](input);
+    return result;
+};
+
+/**
+ * Return the type of the input.
+ * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.
+ * @param {Object} input the input to identify.
+ * @return {String} the (lowercase) type of the input.
+ */
+exports.getTypeOf = function(input) {
+    if (typeof input === "string") {
+        return "string";
+    }
+    if (Object.prototype.toString.call(input) === "[object Array]") {
+        return "array";
+    }
+    if (support.nodebuffer && nodeBuffer.test(input)) {
+        return "nodebuffer";
+    }
+    if (support.uint8array && input instanceof Uint8Array) {
+        return "uint8array";
+    }
+    if (support.arraybuffer && input instanceof ArrayBuffer) {
+        return "arraybuffer";
+    }
+};
+
+/**
+ * Throw an exception if the type is not supported.
+ * @param {String} type the type to check.
+ * @throws {Error} an Error if the browser doesn't support the requested type.
+ */
+exports.checkSupport = function(type) {
+    var supported = support[type.toLowerCase()];
+    if (!supported) {
+        throw new Error(type + " is not supported by this browser");
+    }
+};
+exports.MAX_VALUE_16BITS = 65535;
+exports.MAX_VALUE_32BITS = -1; // well, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" is parsed as -1
+
+/**
+ * Prettify a string read as binary.
+ * @param {string} str the string to prettify.
+ * @return {string} a pretty string.
+ */
+exports.pretty = function(str) {
+    var res = '',
+        code, i;
+    for (i = 0; i < (str || "").length; i++) {
+        code = str.charCodeAt(i);
+        res += '\\x' + (code < 16 ? "0" : "") + code.toString(16).toUpperCase();
+    }
+    return res;
+};
+
+/**
+ * Find a compression registered in JSZip.
+ * @param {string} compressionMethod the method magic to find.
+ * @return {Object|null} the JSZip compression object, null if none found.
+ */
+exports.findCompression = function(compressionMethod) {
+    for (var method in compressions) {
+        if (!compressions.hasOwnProperty(method)) {
+            continue;
+        }
+        if (compressions[method].magic === compressionMethod) {
+            return compressions[method];
+        }
+    }
+    return null;
+};
+/**
+* Cross-window, cross-Node-context regular expression detection
+* @param  {Object}  object Anything
+* @return {Boolean}        true if the object is a regular expression,
+* false otherwise
+*/
+exports.isRegExp = function (object) {
+    return Object.prototype.toString.call(object) === "[object RegExp]";
+};
+
+/**
+ * Merge the objects passed as parameters into a new one.
+ * @private
+ * @param {...Object} var_args All objects to merge.
+ * @return {Object} a new object with the data of the others.
+ */
+exports.extend = function() {
+    var result = {}, i, attr;
+    for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers
+        for (attr in arguments[i]) {
+            if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === "undefined") {
+                result[attr] = arguments[i][attr];
+            }
+        }
+    }
+    return result;
+};
+
+
+},{"./compressions":13,"./nodeBuffer":21,"./support":27}],32:[function(require,module,exports){
+'use strict';
+var StringReader = require('./stringReader');
+var NodeBufferReader = require('./nodeBufferReader');
+var Uint8ArrayReader = require('./uint8ArrayReader');
+var ArrayReader = require('./arrayReader');
+var utils = require('./utils');
+var sig = require('./signature');
+var ZipEntry = require('./zipEntry');
+var support = require('./support');
+var jszipProto = require('./object');
+//  class ZipEntries {{{
+/**
+ * All the entries in the zip file.
+ * @constructor
+ * @param {String|ArrayBuffer|Uint8Array} data the binary stream to load.
+ * @param {Object} loadOptions Options for loading the stream.
+ */
+function ZipEntries(data, loadOptions) {
+    this.files = [];
+    this.loadOptions = loadOptions;
+    if (data) {
+        this.load(data);
+    }
+}
+ZipEntries.prototype = {
+    /**
+     * Check that the reader is on the speficied signature.
+     * @param {string} expectedSignature the expected signature.
+     * @throws {Error} if it is an other signature.
+     */
+    checkSignature: function(expectedSignature) {
+        var signature = this.reader.readString(4);
+        if (signature !== expectedSignature) {
+            throw new Error("Corrupted zip or bug : unexpected signature " + "(" + utils.pretty(signature) + ", expected " + utils.pretty(expectedSignature) + ")");
+        }
+    },
+    /**
+     * Check if the given signature is at the given index.
+     * @param {number} askedIndex the index to check.
+     * @param {string} expectedSignature the signature to expect.
+     * @return {boolean} true if the signature is here, false otherwise.
+     */
+    isSignature: function(askedIndex, expectedSignature) {
+        var currentIndex = this.reader.index;
+        this.reader.setIndex(askedIndex);
+        var signature = this.reader.readString(4);
+        var result = signature === expectedSignature;
+        this.reader.setIndex(currentIndex);
+        return result;
+    },
+    /**
+     * Read the end of the central directory.
+     */
+    readBlockEndOfCentral: function() {
+        this.diskNumber = this.reader.readInt(2);
+        this.diskWithCentralDirStart = this.reader.readInt(2);
+        this.centralDirRecordsOnThisDisk = this.reader.readInt(2);
+        this.centralDirRecords = this.reader.readInt(2);
+        this.centralDirSize = this.reader.readInt(4);
+        this.centralDirOffset = this.reader.readInt(4);
+
+        this.zipCommentLength = this.reader.readInt(2);
+        // warning : the encoding depends of the system locale
+        // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.
+        // On a windows machine, this field is encoded with the localized windows code page.
+        var zipComment = this.reader.readData(this.zipCommentLength);
+        var decodeParamType = support.uint8array ? "uint8array" : "array";
+        // To get consistent behavior with the generation part, we will assume that
+        // this is utf8 encoded unless specified otherwise.
+        var decodeContent = utils.transformTo(decodeParamType, zipComment);
+        this.zipComment = this.loadOptions.decodeFileName(decodeContent);
+    },
+    /**
+     * Read the end of the Zip 64 central directory.
+     * Not merged with the method readEndOfCentral :
+     * The end of central can coexist with its Zip64 brother,
+     * I don't want to read the wrong number of bytes !
+     */
+    readBlockZip64EndOfCentral: function() {
+        this.zip64EndOfCentralSize = this.reader.readInt(8);
+        this.versionMadeBy = this.reader.readString(2);
+        this.versionNeeded = this.reader.readInt(2);
+        this.diskNumber = this.reader.readInt(4);
+        this.diskWithCentralDirStart = this.reader.readInt(4);
+        this.centralDirRecordsOnThisDisk = this.reader.readInt(8);
+        this.centralDirRecords = this.reader.readInt(8);
+        this.centralDirSize = this.reader.readInt(8);
+        this.centralDirOffset = this.reader.readInt(8);
+
+        this.zip64ExtensibleData = {};
+        var extraDataSize = this.zip64EndOfCentralSize - 44,
+            index = 0,
+            extraFieldId,
+            extraFieldLength,
+            extraFieldValue;
+        while (index < extraDataSize) {
+            extraFieldId = this.reader.readInt(2);
+            extraFieldLength = this.reader.readInt(4);
+            extraFieldValue = this.reader.readString(extraFieldLength);
+            this.zip64ExtensibleData[extraFieldId] = {
+                id: extraFieldId,
+                length: extraFieldLength,
+                value: extraFieldValue
+            };
+        }
+    },
+    /**
+     * Read the end of the Zip 64 central directory locator.
+     */
+    readBlockZip64EndOfCentralLocator: function() {
+        this.diskWithZip64CentralDirStart = this.reader.readInt(4);
+        this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);
+        this.disksCount = this.reader.readInt(4);
+        if (this.disksCount > 1) {
+            throw new Error("Multi-volumes zip are not supported");
+        }
+    },
+    /**
+     * Read the local files, based on the offset read in the central part.
+     */
+    readLocalFiles: function() {
+        var i, file;
+        for (i = 0; i < this.files.length; i++) {
+            file = this.files[i];
+            this.reader.setIndex(file.localHeaderOffset);
+            this.checkSignature(sig.LOCAL_FILE_HEADER);
+            file.readLocalPart(this.reader);
+            file.handleUTF8();
+            file.processAttributes();
+        }
+    },
+    /**
+     * Read the central directory.
+     */
+    readCentralDir: function() {
+        var file;
+
+        this.reader.setIndex(this.centralDirOffset);
+        while (this.reader.readString(4) === sig.CENTRAL_FILE_HEADER) {
+            file = new ZipEntry({
+                zip64: this.zip64
+            }, this.loadOptions);
+            file.readCentralPart(this.reader);
+            this.files.push(file);
+        }
+
+        if (this.centralDirRecords !== this.files.length) {
+            if (this.centralDirRecords !== 0 && this.files.length === 0) {
+                // We expected some records but couldn't find ANY.
+                // This is really suspicious, as if something went wrong.
+                throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length);
+            } else {
+                // We found some records but not all.
+                // Something is wrong but we got something for the user: no error here.
+                // console.warn("expected", this.centralDirRecords, "records in central dir, got", this.files.length);
+            }
+        }
+    },
+    /**
+     * Read the end of central directory.
+     */
+    readEndOfCentral: function() {
+        var offset = this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END);
+        if (offset < 0) {
+            // Check if the content is a truncated zip or complete garbage.
+            // A "LOCAL_FILE_HEADER" is not required at the beginning (auto
+            // extractible zip for example) but it can give a good hint.
+            // If an ajax request was used without responseType, we will also
+            // get unreadable data.
+            var isGarbage = !this.isSignature(0, sig.LOCAL_FILE_HEADER);
+
+            if (isGarbage) {
+                throw new Error("Can't find end of central directory : is this a zip file ? " +
+                                "If it is, see http://stuk.github.io/jszip/documentation/howto/read_zip.html");
+            } else {
+                throw new Error("Corrupted zip : can't find end of central directory");
+            }
+        }
+        this.reader.setIndex(offset);
+        var endOfCentralDirOffset = offset;
+        this.checkSignature(sig.CENTRAL_DIRECTORY_END);
+        this.readBlockEndOfCentral();
+
+
+        /* extract from the zip spec :
+            4)  If one of the fields in the end of central directory
+                record is too small to hold required data, the field
+                should be set to -1 (0xFFFF or 0xFFFFFFFF) and the
+                ZIP64 format record should be created.
+            5)  The end of central directory record and the
+                Zip64 end of central directory locator record must
+                reside on the same disk when splitting or spanning
+                an archive.
+         */
+        if (this.diskNumber === utils.MAX_VALUE_16BITS || this.diskWithCentralDirStart === utils.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === utils.MAX_VALUE_16BITS || this.centralDirRecords === utils.MAX_VALUE_16BITS || this.centralDirSize === utils.MAX_VALUE_32BITS || this.centralDirOffset === utils.MAX_VALUE_32BITS) {
+            this.zip64 = true;
+
+            /*
+            Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from
+            the zip file can fit into a 32bits integer. This cannot be solved : Javascript represents
+            all numbers as 64-bit double precision IEEE 754 floating point numbers.
+            So, we have 53bits for integers and bitwise operations treat everything as 32bits.
+            see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators
+            and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5
+            */
+
+            // should look for a zip64 EOCD locator
+            offset = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);
+            if (offset < 0) {
+                throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator");
+            }
+            this.reader.setIndex(offset);
+            this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);
+            this.readBlockZip64EndOfCentralLocator();
+
+            // now the zip64 EOCD record
+            if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, sig.ZIP64_CENTRAL_DIRECTORY_END)) {
+                // console.warn("ZIP64 end of central directory not where expected.");
+                this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);
+                if (this.relativeOffsetEndOfZip64CentralDir < 0) {
+                    throw new Error("Corrupted zip : can't find the ZIP64 end of central directory");
+                }
+            }
+            this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);
+            this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);
+            this.readBlockZip64EndOfCentral();
+        }
+
+        var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize;
+        if (this.zip64) {
+            expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator
+            expectedEndOfCentralDirOffset += 12 /* should not include the leading 12 bytes */ + this.zip64EndOfCentralSize;
+        }
+
+        var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset;
+
+        if (extraBytes > 0) {
+            // console.warn(extraBytes, "extra bytes at beginning or within zipfile");
+            if (this.isSignature(endOfCentralDirOffset, sig.CENTRAL_FILE_HEADER)) {
+                // The offsets seem wrong, but we have something at the specified offset.
+                // So… we keep it.
+            } else {
+                // the offset is wrong, update the "zero" of the reader
+                // this happens if data has been prepended (crx files for example)
+                this.reader.zero = extraBytes;
+            }
+        } else if (extraBytes < 0) {
+            throw new Error("Corrupted zip: missing " + Math.abs(extraBytes) + " bytes.");
+        }
+    },
+    prepareReader: function(data) {
+        var type = utils.getTypeOf(data);
+        utils.checkSupport(type);
+        if (type === "string" && !support.uint8array) {
+            this.reader = new StringReader(data, this.loadOptions.optimizedBinaryString);
+        }
+        else if (type === "nodebuffer") {
+            this.reader = new NodeBufferReader(data);
+        }
+        else if (support.uint8array) {
+            this.reader = new Uint8ArrayReader(utils.transformTo("uint8array", data));
+        } else if (support.array) {
+            this.reader = new ArrayReader(utils.transformTo("array", data));
+        } else {
+            throw new Error("Unexpected error: unsupported type '" + type + "'");
+        }
+    },
+    /**
+     * Read a zip file and create ZipEntries.
+     * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.
+     */
+    load: function(data) {
+        this.prepareReader(data);
+        this.readEndOfCentral();
+        this.readCentralDir();
+        this.readLocalFiles();
+    }
+};
+// }}} end of ZipEntries
+module.exports = ZipEntries;
+
+},{"./arrayReader":10,"./nodeBufferReader":22,"./object":23,"./signature":24,"./stringReader":25,"./support":27,"./uint8ArrayReader":28,"./utils":31,"./zipEntry":33}],33:[function(require,module,exports){
+'use strict';
+var StringReader = require('./stringReader');
+var utils = require('./utils');
+var CompressedObject = require('./compressedObject');
+var jszipProto = require('./object');
+var support = require('./support');
+
+var MADE_BY_DOS = 0x00;
+var MADE_BY_UNIX = 0x03;
+
+// class ZipEntry {{{
+/**
+ * An entry in the zip file.
+ * @constructor
+ * @param {Object} options Options of the current file.
+ * @param {Object} loadOptions Options for loading the stream.
+ */
+function ZipEntry(options, loadOptions) {
+    this.options = options;
+    this.loadOptions = loadOptions;
+}
+ZipEntry.prototype = {
+    /**
+     * say if the file is encrypted.
+     * @return {boolean} true if the file is encrypted, false otherwise.
+     */
+    isEncrypted: function() {
+        // bit 1 is set
+        return (this.bitFlag & 0x0001) === 0x0001;
+    },
+    /**
+     * say if the file has utf-8 filename/comment.
+     * @return {boolean} true if the filename/comment is in utf-8, false otherwise.
+     */
+    useUTF8: function() {
+        // bit 11 is set
+        return (this.bitFlag & 0x0800) === 0x0800;
+    },
+    /**
+     * Prepare the function used to generate the compressed content from this ZipFile.
+     * @param {DataReader} reader the reader to use.
+     * @param {number} from the offset from where we should read the data.
+     * @param {number} length the length of the data to read.
+     * @return {Function} the callback to get the compressed content (the type depends of the DataReader class).
+     */
+    prepareCompressedContent: function(reader, from, length) {
+        return function() {
+            var previousIndex = reader.index;
+            reader.setIndex(from);
+            var compressedFileData = reader.readData(length);
+            reader.setIndex(previousIndex);
+
+            return compressedFileData;
+        };
+    },
+    /**
+     * Prepare the function used to generate the uncompressed content from this ZipFile.
+     * @param {DataReader} reader the reader to use.
+     * @param {number} from the offset from where we should read the data.
+     * @param {number} length the length of the data to read.
+     * @param {JSZip.compression} compression the compression used on this file.
+     * @param {number} uncompressedSize the uncompressed size to expect.
+     * @return {Function} the callback to get the uncompressed content (the type depends of the DataReader class).
+     */
+    prepareContent: function(reader, from, length, compression, uncompressedSize) {
+        return function() {
+
+            var compressedFileData = utils.transformTo(compression.uncompressInputType, this.getCompressedContent());
+            var uncompressedFileData = compression.uncompress(compressedFileData);
+
+            if (uncompressedFileData.length !== uncompressedSize) {
+                throw new Error("Bug : uncompressed data size mismatch");
+            }
+
+            return uncompressedFileData;
+        };
+    },
+    /**
+     * Read the local part of a zip file and add the info in this object.
+     * @param {DataReader} reader the reader to use.
+     */
+    readLocalPart: function(reader) {
+        var compression, localExtraFieldsLength;
+
+        // we already know everything from the central dir !
+        // If the central dir data are false, we are doomed.
+        // On the bright side, the local part is scary  : zip64, data descriptors, both, etc.
+        // The less data we get here, the more reliable this should be.
+        // Let's skip the whole header and dash to the data !
+        reader.skip(22);
+        // in some zip created on windows, the filename stored in the central dir contains \ instead of /.
+        // Strangely, the filename here is OK.
+        // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes
+        // or APPNOTE#4.4.17.1, "All slashes MUST be forward slashes '/'") but there are a lot of bad zip generators...
+        // Search "unzip mismatching "local" filename continuing with "central" filename version" on
+        // the internet.
+        //
+        // I think I see the logic here : the central directory is used to display
+        // content and the local directory is used to extract the files. Mixing / and \
+        // may be used to display \ to windows users and use / when extracting the files.
+        // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394
+        this.fileNameLength = reader.readInt(2);
+        localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir
+        this.fileName = reader.readData(this.fileNameLength);
+        reader.skip(localExtraFieldsLength);
+
+        if (this.compressedSize == -1 || this.uncompressedSize == -1) {
+            throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory " + "(compressedSize == -1 || uncompressedSize == -1)");
+        }
+
+        compression = utils.findCompression(this.compressionMethod);
+        if (compression === null) { // no compression found
+            throw new Error("Corrupted zip : compression " + utils.pretty(this.compressionMethod) + " unknown (inner file : " +  utils.transformTo("string", this.fileName) + ")");
+        }
+        this.decompressed = new CompressedObject();
+        this.decompressed.compressedSize = this.compressedSize;
+        this.decompressed.uncompressedSize = this.uncompressedSize;
+        this.decompressed.crc32 = this.crc32;
+        this.decompressed.compressionMethod = this.compressionMethod;
+        this.decompressed.getCompressedContent = this.prepareCompressedContent(reader, reader.index, this.compressedSize, compression);
+        this.decompressed.getContent = this.prepareContent(reader, reader.index, this.compressedSize, compression, this.uncompressedSize);
+
+        // we need to compute the crc32...
+        if (this.loadOptions.checkCRC32) {
+            this.decompressed = utils.transformTo("string", this.decompressed.getContent());
+            if (jszipProto.crc32(this.decompressed) !== this.crc32) {
+                throw new Error("Corrupted zip : CRC32 mismatch");
+            }
+        }
+    },
+
+    /**
+     * Read the central part of a zip file and add the info in this object.
+     * @param {DataReader} reader the reader to use.
+     */
+    readCentralPart: function(reader) {
+        this.versionMadeBy = reader.readInt(2);
+        this.versionNeeded = reader.readInt(2);
+        this.bitFlag = reader.readInt(2);
+        this.compressionMethod = reader.readString(2);
+        this.date = reader.readDate();
+        this.crc32 = reader.readInt(4);
+        this.compressedSize = reader.readInt(4);
+        this.uncompressedSize = reader.readInt(4);
+        this.fileNameLength = reader.readInt(2);
+        this.extraFieldsLength = reader.readInt(2);
+        this.fileCommentLength = reader.readInt(2);
+        this.diskNumberStart = reader.readInt(2);
+        this.internalFileAttributes = reader.readInt(2);
+        this.externalFileAttributes = reader.readInt(4);
+        this.localHeaderOffset = reader.readInt(4);
+
+        if (this.isEncrypted()) {
+            throw new Error("Encrypted zip are not supported");
+        }
+
+        this.fileName = reader.readData(this.fileNameLength);
+        this.readExtraFields(reader);
+        this.parseZIP64ExtraField(reader);
+        this.fileComment = reader.readData(this.fileCommentLength);
+    },
+
+    /**
+     * Parse the external file attributes and get the unix/dos permissions.
+     */
+    processAttributes: function () {
+        this.unixPermissions = null;
+        this.dosPermissions = null;
+        var madeBy = this.versionMadeBy >> 8;
+
+        // Check if we have the DOS directory flag set.
+        // We look for it in the DOS and UNIX permissions
+        // but some unknown platform could set it as a compatibility flag.
+        this.dir = this.externalFileAttributes & 0x0010 ? true : false;
+
+        if(madeBy === MADE_BY_DOS) {
+            // first 6 bits (0 to 5)
+            this.dosPermissions = this.externalFileAttributes & 0x3F;
+        }
+
+        if(madeBy === MADE_BY_UNIX) {
+            this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;
+            // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);
+        }
+
+        // fail safe : if the name ends with a / it probably means a folder
+        if (!this.dir && this.fileNameStr.slice(-1) === '/') {
+            this.dir = true;
+        }
+    },
+
+    /**
+     * Parse the ZIP64 extra field and merge the info in the current ZipEntry.
+     * @param {DataReader} reader the reader to use.
+     */
+    parseZIP64ExtraField: function(reader) {
+
+        if (!this.extraFields[0x0001]) {
+            return;
+        }
+
+        // should be something, preparing the extra reader
+        var extraReader = new StringReader(this.extraFields[0x0001].value);
+
+        // I really hope that these 64bits integer can fit in 32 bits integer, because js
+        // won't let us have more.
+        if (this.uncompressedSize === utils.MAX_VALUE_32BITS) {
+            this.uncompressedSize = extraReader.readInt(8);
+        }
+        if (this.compressedSize === utils.MAX_VALUE_32BITS) {
+            this.compressedSize = extraReader.readInt(8);
+        }
+        if (this.localHeaderOffset === utils.MAX_VALUE_32BITS) {
+            this.localHeaderOffset = extraReader.readInt(8);
+        }
+        if (this.diskNumberStart === utils.MAX_VALUE_32BITS) {
+            this.diskNumberStart = extraReader.readInt(4);
+        }
+    },
+    /**
+     * Read the central part of a zip file and add the info in this object.
+     * @param {DataReader} reader the reader to use.
+     */
+    readExtraFields: function(reader) {
+        var start = reader.index,
+            extraFieldId,
+            extraFieldLength,
+            extraFieldValue;
+
+        this.extraFields = this.extraFields || {};
+
+        while (reader.index < start + this.extraFieldsLength) {
+            extraFieldId = reader.readInt(2);
+            extraFieldLength = reader.readInt(2);
+            extraFieldValue = reader.readString(extraFieldLength);
+
+            this.extraFields[extraFieldId] = {
+                id: extraFieldId,
+                length: extraFieldLength,
+                value: extraFieldValue
+            };
+        }
+    },
+    /**
+     * Apply an UTF8 transformation if needed.
+     */
+    handleUTF8: function() {
+        var decodeParamType = support.uint8array ? "uint8array" : "array";
+        if (this.useUTF8()) {
+            this.fileNameStr = jszipProto.utf8decode(this.fileName);
+            this.fileCommentStr = jszipProto.utf8decode(this.fileComment);
+        } else {
+            var upath = this.findExtraFieldUnicodePath();
+            if (upath !== null) {
+                this.fileNameStr = upath;
+            } else {
+                var fileNameByteArray =  utils.transformTo(decodeParamType, this.fileName);
+                this.fileNameStr = this.loadOptions.decodeFileName(fileNameByteArray);
+            }
+
+            var ucomment = this.findExtraFieldUnicodeComment();
+            if (ucomment !== null) {
+                this.fileCommentStr = ucomment;
+            } else {
+                var commentByteArray =  utils.transformTo(decodeParamType, this.fileComment);
+                this.fileCommentStr = this.loadOptions.decodeFileName(commentByteArray);
+            }
+        }
+    },
+
+    /**
+     * Find the unicode path declared in the extra field, if any.
+     * @return {String} the unicode path, null otherwise.
+     */
+    findExtraFieldUnicodePath: function() {
+        var upathField = this.extraFields[0x7075];
+        if (upathField) {
+            var extraReader = new StringReader(upathField.value);
+
+            // wrong version
+            if (extraReader.readInt(1) !== 1) {
+                return null;
+            }
+
+            // the crc of the filename changed, this field is out of date.
+            if (jszipProto.crc32(this.fileName) !== extraReader.readInt(4)) {
+                return null;
+            }
+
+            return jszipProto.utf8decode(extraReader.readString(upathField.length - 5));
+        }
+        return null;
+    },
+
+    /**
+     * Find the unicode comment declared in the extra field, if any.
+     * @return {String} the unicode comment, null otherwise.
+     */
+    findExtraFieldUnicodeComment: function() {
+        var ucommentField = this.extraFields[0x6375];
+        if (ucommentField) {
+            var extraReader = new StringReader(ucommentField.value);
+
+            // wrong version
+            if (extraReader.readInt(1) !== 1) {
+                return null;
+            }
+
+            // the crc of the comment changed, this field is out of date.
+            if (jszipProto.crc32(this.fileComment) !== extraReader.readInt(4)) {
+                return null;
+            }
+
+            return jszipProto.utf8decode(extraReader.readString(ucommentField.length - 5));
+        }
+        return null;
+    }
+};
+module.exports = ZipEntry;
+
+},{"./compressedObject":12,"./object":23,"./stringReader":25,"./support":27,"./utils":31}],34:[function(require,module,exports){
+'use strict';
+var immediate = require('immediate');
+
+/* istanbul ignore next */
+function INTERNAL() {}
+
+var handlers = {};
+
+var REJECTED = ['REJECTED'];
+var FULFILLED = ['FULFILLED'];
+var PENDING = ['PENDING'];
+
+module.exports = Promise;
+
+function Promise(resolver) {
+  if (typeof resolver !== 'function') {
+    throw new TypeError('resolver must be a function');
+  }
+  this.state = PENDING;
+  this.queue = [];
+  this.outcome = void 0;
+  if (resolver !== INTERNAL) {
+    safelyResolveThenable(this, resolver);
+  }
+}
+
+Promise.prototype["catch"] = function (onRejected) {
+  return this.then(null, onRejected);
+};
+Promise.prototype.then = function (onFulfilled, onRejected) {
+  if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||
+    typeof onRejected !== 'function' && this.state === REJECTED) {
+    return this;
+  }
+  var promise = new this.constructor(INTERNAL);
+  if (this.state !== PENDING) {
+    var resolver = this.state === FULFILLED ? onFulfilled : onRejected;
+    unwrap(promise, resolver, this.outcome);
+  } else {
+    this.queue.push(new QueueItem(promise, onFulfilled, onRejected));
+  }
+
+  return promise;
+};
+function QueueItem(promise, onFulfilled, onRejected) {
+  this.promise = promise;
+  if (typeof onFulfilled === 'function') {
+    this.onFulfilled = onFulfilled;
+    this.callFulfilled = this.otherCallFulfilled;
+  }
+  if (typeof onRejected === 'function') {
+    this.onRejected = onRejected;
+    this.callRejected = this.otherCallRejected;
+  }
+}
+QueueItem.prototype.callFulfilled = function (value) {
+  handlers.resolve(this.promise, value);
+};
+QueueItem.prototype.otherCallFulfilled = function (value) {
+  unwrap(this.promise, this.onFulfilled, value);
+};
+QueueItem.prototype.callRejected = function (value) {
+  handlers.reject(this.promise, value);
+};
+QueueItem.prototype.otherCallRejected = function (value) {
+  unwrap(this.promise, this.onRejected, value);
+};
+
+function unwrap(promise, func, value) {
+  immediate(function () {
+    var returnValue;
+    try {
+      returnValue = func(value);
+    } catch (e) {
+      return handlers.reject(promise, e);
+    }
+    if (returnValue === promise) {
+      handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));
+    } else {
+      handlers.resolve(promise, returnValue);
+    }
+  });
+}
+
+handlers.resolve = function (self, value) {
+  var result = tryCatch(getThen, value);
+  if (result.status === 'error') {
+    return handlers.reject(self, result.value);
+  }
+  var thenable = result.value;
+
+  if (thenable) {
+    safelyResolveThenable(self, thenable);
+  } else {
+    self.state = FULFILLED;
+    self.outcome = value;
+    var i = -1;
+    var len = self.queue.length;
+    while (++i < len) {
+      self.queue[i].callFulfilled(value);
+    }
+  }
+  return self;
+};
+handlers.reject = function (self, error) {
+  self.state = REJECTED;
+  self.outcome = error;
+  var i = -1;
+  var len = self.queue.length;
+  while (++i < len) {
+    self.queue[i].callRejected(error);
+  }
+  return self;
+};
+
+function getThen(obj) {
+  // Make sure we only access the accessor once as required by the spec
+  var then = obj && obj.then;
+  if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {
+    return function appyThen() {
+      then.apply(obj, arguments);
+    };
+  }
+}
+
+function safelyResolveThenable(self, thenable) {
+  // Either fulfill, reject or reject with error
+  var called = false;
+  function onError(value) {
+    if (called) {
+      return;
+    }
+    called = true;
+    handlers.reject(self, value);
+  }
+
+  function onSuccess(value) {
+    if (called) {
+      return;
+    }
+    called = true;
+    handlers.resolve(self, value);
+  }
+
+  function tryToUnwrap() {
+    thenable(onSuccess, onError);
+  }
+
+  var result = tryCatch(tryToUnwrap);
+  if (result.status === 'error') {
+    onError(result.value);
+  }
+}
+
+function tryCatch(func, value) {
+  var out = {};
+  try {
+    out.value = func(value);
+    out.status = 'success';
+  } catch (e) {
+    out.status = 'error';
+    out.value = e;
+  }
+  return out;
+}
+
+Promise.resolve = resolve;
+function resolve(value) {
+  if (value instanceof this) {
+    return value;
+  }
+  return handlers.resolve(new this(INTERNAL), value);
+}
+
+Promise.reject = reject;
+function reject(reason) {
+  var promise = new this(INTERNAL);
+  return handlers.reject(promise, reason);
+}
+
+Promise.all = all;
+function all(iterable) {
+  var self = this;
+  if (Object.prototype.toString.call(iterable) !== '[object Array]') {
+    return this.reject(new TypeError('must be an array'));
+  }
+
+  var len = iterable.length;
+  var called = false;
+  if (!len) {
+    return this.resolve([]);
+  }
+
+  var values = new Array(len);
+  var resolved = 0;
+  var i = -1;
+  var promise = new this(INTERNAL);
+
+  while (++i < len) {
+    allResolver(iterable[i], i);
+  }
+  return promise;
+  function allResolver(value, i) {
+    self.resolve(value).then(resolveFromAll, function (error) {
+      if (!called) {
+        called = true;
+        handlers.reject(promise, error);
+      }
+    });
+    function resolveFromAll(outValue) {
+      values[i] = outValue;
+      if (++resolved === len && !called) {
+        called = true;
+        handlers.resolve(promise, values);
+      }
+    }
+  }
+}
+
+Promise.race = race;
+function race(iterable) {
+  var self = this;
+  if (Object.prototype.toString.call(iterable) !== '[object Array]') {
+    return this.reject(new TypeError('must be an array'));
+  }
+
+  var len = iterable.length;
+  var called = false;
+  if (!len) {
+    return this.resolve([]);
+  }
+
+  var i = -1;
+  var promise = new this(INTERNAL);
+
+  while (++i < len) {
+    resolver(iterable[i]);
+  }
+  return promise;
+  function resolver(value) {
+    self.resolve(value).then(function (response) {
+      if (!called) {
+        called = true;
+        handlers.resolve(promise, response);
+      }
+    }, function (error) {
+      if (!called) {
+        called = true;
+        handlers.reject(promise, error);
+      }
+    });
+  }
+}
+
+},{"immediate":8}],35:[function(require,module,exports){
+;(function () { // closure for web browsers
+
+if (typeof module === 'object' && module.exports) {
+  module.exports = LRUCache
+} else {
+  // just set the global for non-node platforms.
+  this.LRUCache = LRUCache
+}
+
+function hOP (obj, key) {
+  return Object.prototype.hasOwnProperty.call(obj, key)
+}
+
+function naiveLength () { return 1 }
+
+var didTypeWarning = false
+function typeCheckKey(key) {
+  if (!didTypeWarning && typeof key !== 'string' && typeof key !== 'number') {
+    didTypeWarning = true
+    console.error(new TypeError("LRU: key must be a string or number. Almost certainly a bug! " + typeof key).stack)
+  }
+}
+
+function LRUCache (options) {
+  if (!(this instanceof LRUCache))
+    return new LRUCache(options)
+
+  if (typeof options === 'number')
+    options = { max: options }
+
+  if (!options)
+    options = {}
+
+  this._max = options.max
+  // Kind of weird to have a default max of Infinity, but oh well.
+  if (!this._max || !(typeof this._max === "number") || this._max <= 0 )
+    this._max = Infinity
+
+  this._lengthCalculator = options.length || naiveLength
+  if (typeof this._lengthCalculator !== "function")
+    this._lengthCalculator = naiveLength
+
+  this._allowStale = options.stale || false
+  this._maxAge = options.maxAge || null
+  this._dispose = options.dispose
+  this.reset()
+}
+
+// resize the cache when the max changes.
+Object.defineProperty(LRUCache.prototype, "max",
+  { set : function (mL) {
+      if (!mL || !(typeof mL === "number") || mL <= 0 ) mL = Infinity
+      this._max = mL
+      if (this._length > this._max) trim(this)
+    }
+  , get : function () { return this._max }
+  , enumerable : true
+  })
+
+// resize the cache when the lengthCalculator changes.
+Object.defineProperty(LRUCache.prototype, "lengthCalculator",
+  { set : function (lC) {
+      if (typeof lC !== "function") {
+        this._lengthCalculator = naiveLength
+        this._length = this._itemCount
+        for (var key in this._cache) {
+          this._cache[key].length = 1
+        }
+      } else {
+        this._lengthCalculator = lC
+        this._length = 0
+        for (var key in this._cache) {
+          this._cache[key].length = this._lengthCalculator(this._cache[key].value)
+          this._length += this._cache[key].length
+        }
+      }
+
+      if (this._length > this._max) trim(this)
+    }
+  , get : function () { return this._lengthCalculator }
+  , enumerable : true
+  })
+
+Object.defineProperty(LRUCache.prototype, "length",
+  { get : function () { return this._length }
+  , enumerable : true
+  })
+
+
+Object.defineProperty(LRUCache.prototype, "itemCount",
+  { get : function () { return this._itemCount }
+  , enumerable : true
+  })
+
+LRUCache.prototype.forEach = function (fn, thisp) {
+  thisp = thisp || this
+  var i = 0
+  var itemCount = this._itemCount
+
+  for (var k = this._mru - 1; k >= 0 && i < itemCount; k--) if (this._lruList[k]) {
+    i++
+    var hit = this._lruList[k]
+    if (isStale(this, hit)) {
+      del(this, hit)
+      if (!this._allowStale) hit = undefined
+    }
+    if (hit) {
+      fn.call(thisp, hit.value, hit.key, this)
+    }
+  }
+}
+
+LRUCache.prototype.keys = function () {
+  var keys = new Array(this._itemCount)
+  var i = 0
+  for (var k = this._mru - 1; k >= 0 && i < this._itemCount; k--) if (this._lruList[k]) {
+    var hit = this._lruList[k]
+    keys[i++] = hit.key
+  }
+  return keys
+}
+
+LRUCache.prototype.values = function () {
+  var values = new Array(this._itemCount)
+  var i = 0
+  for (var k = this._mru - 1; k >= 0 && i < this._itemCount; k--) if (this._lruList[k]) {
+    var hit = this._lruList[k]
+    values[i++] = hit.value
+  }
+  return values
+}
+
+LRUCache.prototype.reset = function () {
+  if (this._dispose && this._cache) {
+    for (var k in this._cache) {
+      this._dispose(k, this._cache[k].value)
+    }
+  }
+
+  this._cache = Object.create(null) // hash of items by key
+  this._lruList = Object.create(null) // list of items in order of use recency
+  this._mru = 0 // most recently used
+  this._lru = 0 // least recently used
+  this._length = 0 // number of items in the list
+  this._itemCount = 0
+}
+
+LRUCache.prototype.dump = function () {
+  var arr = []
+  var i = 0
+
+  for (var k = this._mru - 1; k >= 0 && i < this._itemCount; k--) if (this._lruList[k]) {
+    var hit = this._lruList[k]
+    if (!isStale(this, hit)) {
+      //Do not store staled hits
+      ++i
+      arr.push({
+        k: hit.key,
+        v: hit.value,
+        e: hit.now + (hit.maxAge || 0)
+      });
+    }
+  }
+  //arr has the most read first
+  return arr
+}
+
+LRUCache.prototype.dumpLru = function () {
+  return this._lruList
+}
+
+LRUCache.prototype.set = function (key, value, maxAge) {
+  maxAge = maxAge || this._maxAge
+  typeCheckKey(key)
+
+  var now = maxAge ? Date.now() : 0
+  var len = this._lengthCalculator(value)
+
+  if (hOP(this._cache, key)) {
+    if (len > this._max) {
+      del(this, this._cache[key])
+      return false
+    }
+    // dispose of the old one before overwriting
+    if (this._dispose)
+      this._dispose(key, this._cache[key].value)
+
+    this._cache[key].now = now
+    this._cache[key].maxAge = maxAge
+    this._cache[key].value = value
+    this._length += (len - this._cache[key].length)
+    this._cache[key].length = len
+    this.get(key)
+
+    if (this._length > this._max)
+      trim(this)
+
+    return true
+  }
+
+  var hit = new Entry(key, value, this._mru++, len, now, maxAge)
+
+  // oversized objects fall out of cache automatically.
+  if (hit.length > this._max) {
+    if (this._dispose) this._dispose(key, value)
+    return false
+  }
+
+  this._length += hit.length
+  this._lruList[hit.lu] = this._cache[key] = hit
+  this._itemCount ++
+
+  if (this._length > this._max)
+    trim(this)
+
+  return true
+}
+
+LRUCache.prototype.has = function (key) {
+  typeCheckKey(key)
+  if (!hOP(this._cache, key)) return false
+  var hit = this._cache[key]
+  if (isStale(this, hit)) {
+    return false
+  }
+  return true
+}
+
+LRUCache.prototype.get = function (key) {
+  typeCheckKey(key)
+  return get(this, key, true)
+}
+
+LRUCache.prototype.peek = function (key) {
+  typeCheckKey(key)
+  return get(this, key, false)
+}
+
+LRUCache.prototype.pop = function () {
+  var hit = this._lruList[this._lru]
+  del(this, hit)
+  return hit || null
+}
+
+LRUCache.prototype.del = function (key) {
+  typeCheckKey(key)
+  del(this, this._cache[key])
+}
+
+LRUCache.prototype.load = function (arr) {
+  //reset the cache
+  this.reset();
+
+  var now = Date.now()
+  //A previous serialized cache has the most recent items first
+  for (var l = arr.length - 1; l >= 0; l-- ) {
+    var hit = arr[l]
+    typeCheckKey(hit.k)
+    var expiresAt = hit.e || 0
+    if (expiresAt === 0) {
+      //the item was created without expiration in a non aged cache
+      this.set(hit.k, hit.v)
+    } else {
+      var maxAge = expiresAt - now
+      //dont add already expired items
+      if (maxAge > 0) this.set(hit.k, hit.v, maxAge)
+    }
+  }
+}
+
+function get (self, key, doUse) {
+  typeCheckKey(key)
+  var hit = self._cache[key]
+  if (hit) {
+    if (isStale(self, hit)) {
+      del(self, hit)
+      if (!self._allowStale) hit = undefined
+    } else {
+      if (doUse) use(self, hit)
+    }
+    if (hit) hit = hit.value
+  }
+  return hit
+}
+
+function isStale(self, hit) {
+  if (!hit || (!hit.maxAge && !self._maxAge)) return false
+  var stale = false;
+  var diff = Date.now() - hit.now
+  if (hit.maxAge) {
+    stale = diff > hit.maxAge
+  } else {
+    stale = self._maxAge && (diff > self._maxAge)
+  }
+  return stale;
+}
+
+function use (self, hit) {
+  shiftLU(self, hit)
+  hit.lu = self._mru ++
+  self._lruList[hit.lu] = hit
+}
+
+function trim (self) {
+  while (self._lru < self._mru && self._length > self._max)
+    del(self, self._lruList[self._lru])
+}
+
+function shiftLU (self, hit) {
+  delete self._lruList[ hit.lu ]
+  while (self._lru < self._mru && !self._lruList[self._lru]) self._lru ++
+}
+
+function del (self, hit) {
+  if (hit) {
+    if (self._dispose) self._dispose(hit.key, hit.value)
+    self._length -= hit.length
+    self._itemCount --
+    delete self._cache[ hit.key ]
+    shiftLU(self, hit)
+  }
+}
+
+// classy, since V8 prefers predictable objects.
+function Entry (key, value, lu, length, now, maxAge) {
+  this.key = key
+  this.value = value
+  this.lu = lu
+  this.length = length
+  this.now = now
+  if (maxAge) this.maxAge = maxAge
+}
+
+})()
+
+},{}],36:[function(require,module,exports){
+// Top level file is just a mixin of submodules & constants
+'use strict';
+
+var assign    = require('./lib/utils/common').assign;
+
+var deflate   = require('./lib/deflate');
+var inflate   = require('./lib/inflate');
+var constants = require('./lib/zlib/constants');
+
+var pako = {};
+
+assign(pako, deflate, inflate, constants);
+
+module.exports = pako;
+
+},{"./lib/deflate":37,"./lib/inflate":38,"./lib/utils/common":39,"./lib/zlib/constants":42}],37:[function(require,module,exports){
+'use strict';
+
+
+var zlib_deflate = require('./zlib/deflate');
+var utils        = require('./utils/common');
+var strings      = require('./utils/strings');
+var msg          = require('./zlib/messages');
+var ZStream      = require('./zlib/zstream');
+
+var toString = Object.prototype.toString;
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+var Z_NO_FLUSH      = 0;
+var Z_FINISH        = 4;
+
+var Z_OK            = 0;
+var Z_STREAM_END    = 1;
+var Z_SYNC_FLUSH    = 2;
+
+var Z_DEFAULT_COMPRESSION = -1;
+
+var Z_DEFAULT_STRATEGY    = 0;
+
+var Z_DEFLATED  = 8;
+
+/* ===========================================================================*/
+
+
+/**
+ * class Deflate
+ *
+ * Generic JS-style wrapper for zlib calls. If you don't need
+ * streaming behaviour - use more simple functions: [[deflate]],
+ * [[deflateRaw]] and [[gzip]].
+ **/
+
+/* internal
+ * Deflate.chunks -> Array
+ *
+ * Chunks of output data, if [[Deflate#onData]] not overridden.
+ **/
+
+/**
+ * Deflate.result -> Uint8Array|Array
+ *
+ * Compressed result, generated by default [[Deflate#onData]]
+ * and [[Deflate#onEnd]] handlers. Filled after you push last chunk
+ * (call [[Deflate#push]] with `Z_FINISH` / `true` param)  or if you
+ * push a chunk with explicit flush (call [[Deflate#push]] with
+ * `Z_SYNC_FLUSH` param).
+ **/
+
+/**
+ * Deflate.err -> Number
+ *
+ * Error code after deflate finished. 0 (Z_OK) on success.
+ * You will not need it in real life, because deflate errors
+ * are possible only on wrong options or bad `onData` / `onEnd`
+ * custom handlers.
+ **/
+
+/**
+ * Deflate.msg -> String
+ *
+ * Error message, if [[Deflate.err]] != 0
+ **/
+
+
+/**
+ * new Deflate(options)
+ * - options (Object): zlib deflate options.
+ *
+ * Creates new deflator instance with specified params. Throws exception
+ * on bad params. Supported options:
+ *
+ * - `level`
+ * - `windowBits`
+ * - `memLevel`
+ * - `strategy`
+ * - `dictionary`
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information on these.
+ *
+ * Additional options, for internal needs:
+ *
+ * - `chunkSize` - size of generated data chunks (16K by default)
+ * - `raw` (Boolean) - do raw deflate
+ * - `gzip` (Boolean) - create gzip wrapper
+ * - `to` (String) - if equal to 'string', then result will be "binary string"
+ *    (each char code [0..255])
+ * - `header` (Object) - custom header for gzip
+ *   - `text` (Boolean) - true if compressed data believed to be text
+ *   - `time` (Number) - modification time, unix timestamp
+ *   - `os` (Number) - operation system code
+ *   - `extra` (Array) - array of bytes with extra data (max 65536)
+ *   - `name` (String) - file name (binary string)
+ *   - `comment` (String) - comment (binary string)
+ *   - `hcrc` (Boolean) - true if header crc should be added
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
+ *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
+ *
+ * var deflate = new pako.Deflate({ level: 3});
+ *
+ * deflate.push(chunk1, false);
+ * deflate.push(chunk2, true);  // true -> last chunk
+ *
+ * if (deflate.err) { throw new Error(deflate.err); }
+ *
+ * console.log(deflate.result);
+ * ```
+ **/
+function Deflate(options) {
+  if (!(this instanceof Deflate)) return new Deflate(options);
+
+  this.options = utils.assign({
+    level: Z_DEFAULT_COMPRESSION,
+    method: Z_DEFLATED,
+    chunkSize: 16384,
+    windowBits: 15,
+    memLevel: 8,
+    strategy: Z_DEFAULT_STRATEGY,
+    to: ''
+  }, options || {});
+
+  var opt = this.options;
+
+  if (opt.raw && (opt.windowBits > 0)) {
+    opt.windowBits = -opt.windowBits;
+  }
+
+  else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {
+    opt.windowBits += 16;
+  }
+
+  this.err    = 0;      // error code, if happens (0 = Z_OK)
+  this.msg    = '';     // error message
+  this.ended  = false;  // used to avoid multiple onEnd() calls
+  this.chunks = [];     // chunks of compressed data
+
+  this.strm = new ZStream();
+  this.strm.avail_out = 0;
+
+  var status = zlib_deflate.deflateInit2(
+    this.strm,
+    opt.level,
+    opt.method,
+    opt.windowBits,
+    opt.memLevel,
+    opt.strategy
+  );
+
+  if (status !== Z_OK) {
+    throw new Error(msg[status]);
+  }
+
+  if (opt.header) {
+    zlib_deflate.deflateSetHeader(this.strm, opt.header);
+  }
+
+  if (opt.dictionary) {
+    var dict;
+    // Convert data if needed
+    if (typeof opt.dictionary === 'string') {
+      // If we need to compress text, change encoding to utf8.
+      dict = strings.string2buf(opt.dictionary);
+    } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {
+      dict = new Uint8Array(opt.dictionary);
+    } else {
+      dict = opt.dictionary;
+    }
+
+    status = zlib_deflate.deflateSetDictionary(this.strm, dict);
+
+    if (status !== Z_OK) {
+      throw new Error(msg[status]);
+    }
+
+    this._dict_set = true;
+  }
+}
+
+/**
+ * Deflate#push(data[, mode]) -> Boolean
+ * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be
+ *   converted to utf8 byte sequence.
+ * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
+ *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.
+ *
+ * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with
+ * new compressed chunks. Returns `true` on success. The last data block must have
+ * mode Z_FINISH (or `true`). That will flush internal pending buffers and call
+ * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you
+ * can use mode Z_SYNC_FLUSH, keeping the compression context.
+ *
+ * On fail call [[Deflate#onEnd]] with error code and return false.
+ *
+ * We strongly recommend to use `Uint8Array` on input for best speed (output
+ * array format is detected automatically). Also, don't skip last param and always
+ * use the same type in your code (boolean or number). That will improve JS speed.
+ *
+ * For regular `Array`-s make sure all elements are [0..255].
+ *
+ * ##### Example
+ *
+ * ```javascript
+ * push(chunk, false); // push one of data chunks
+ * ...
+ * push(chunk, true);  // push last chunk
+ * ```
+ **/
+Deflate.prototype.push = function (data, mode) {
+  var strm = this.strm;
+  var chunkSize = this.options.chunkSize;
+  var status, _mode;
+
+  if (this.ended) { return false; }
+
+  _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);
+
+  // Convert data if needed
+  if (typeof data === 'string') {
+    // If we need to compress text, change encoding to utf8.
+    strm.input = strings.string2buf(data);
+  } else if (toString.call(data) === '[object ArrayBuffer]') {
+    strm.input = new Uint8Array(data);
+  } else {
+    strm.input = data;
+  }
+
+  strm.next_in = 0;
+  strm.avail_in = strm.input.length;
+
+  do {
+    if (strm.avail_out === 0) {
+      strm.output = new utils.Buf8(chunkSize);
+      strm.next_out = 0;
+      strm.avail_out = chunkSize;
+    }
+    status = zlib_deflate.deflate(strm, _mode);    /* no bad return value */
+
+    if (status !== Z_STREAM_END && status !== Z_OK) {
+      this.onEnd(status);
+      this.ended = true;
+      return false;
+    }
+    if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {
+      if (this.options.to === 'string') {
+        this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));
+      } else {
+        this.onData(utils.shrinkBuf(strm.output, strm.next_out));
+      }
+    }
+  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);
+
+  // Finalize on the last chunk.
+  if (_mode === Z_FINISH) {
+    status = zlib_deflate.deflateEnd(this.strm);
+    this.onEnd(status);
+    this.ended = true;
+    return status === Z_OK;
+  }
+
+  // callback interim results if Z_SYNC_FLUSH.
+  if (_mode === Z_SYNC_FLUSH) {
+    this.onEnd(Z_OK);
+    strm.avail_out = 0;
+    return true;
+  }
+
+  return true;
+};
+
+
+/**
+ * Deflate#onData(chunk) -> Void
+ * - chunk (Uint8Array|Array|String): output data. Type of array depends
+ *   on js engine support. When string output requested, each chunk
+ *   will be string.
+ *
+ * By default, stores data blocks in `chunks[]` property and glue
+ * those in `onEnd`. Override this handler, if you need another behaviour.
+ **/
+Deflate.prototype.onData = function (chunk) {
+  this.chunks.push(chunk);
+};
+
+
+/**
+ * Deflate#onEnd(status) -> Void
+ * - status (Number): deflate status. 0 (Z_OK) on success,
+ *   other if not.
+ *
+ * Called once after you tell deflate that the input stream is
+ * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)
+ * or if an error happened. By default - join collected chunks,
+ * free memory and fill `results` / `err` properties.
+ **/
+Deflate.prototype.onEnd = function (status) {
+  // On success - join
+  if (status === Z_OK) {
+    if (this.options.to === 'string') {
+      this.result = this.chunks.join('');
+    } else {
+      this.result = utils.flattenChunks(this.chunks);
+    }
+  }
+  this.chunks = [];
+  this.err = status;
+  this.msg = this.strm.msg;
+};
+
+
+/**
+ * deflate(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to compress.
+ * - options (Object): zlib deflate options.
+ *
+ * Compress `data` with deflate algorithm and `options`.
+ *
+ * Supported options are:
+ *
+ * - level
+ * - windowBits
+ * - memLevel
+ * - strategy
+ * - dictionary
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information on these.
+ *
+ * Sugar (options):
+ *
+ * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
+ *   negative windowBits implicitly.
+ * - `to` (String) - if equal to 'string', then result will be "binary string"
+ *    (each char code [0..255])
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ *   , data = Uint8Array([1,2,3,4,5,6,7,8,9]);
+ *
+ * console.log(pako.deflate(data));
+ * ```
+ **/
+function deflate(input, options) {
+  var deflator = new Deflate(options);
+
+  deflator.push(input, true);
+
+  // That will never happens, if you don't cheat with options :)
+  if (deflator.err) { throw deflator.msg || msg[deflator.err]; }
+
+  return deflator.result;
+}
+
+
+/**
+ * deflateRaw(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to compress.
+ * - options (Object): zlib deflate options.
+ *
+ * The same as [[deflate]], but creates raw data, without wrapper
+ * (header and adler32 crc).
+ **/
+function deflateRaw(input, options) {
+  options = options || {};
+  options.raw = true;
+  return deflate(input, options);
+}
+
+
+/**
+ * gzip(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to compress.
+ * - options (Object): zlib deflate options.
+ *
+ * The same as [[deflate]], but create gzip wrapper instead of
+ * deflate one.
+ **/
+function gzip(input, options) {
+  options = options || {};
+  options.gzip = true;
+  return deflate(input, options);
+}
+
+
+exports.Deflate = Deflate;
+exports.deflate = deflate;
+exports.deflateRaw = deflateRaw;
+exports.gzip = gzip;
+
+},{"./utils/common":39,"./utils/strings":40,"./zlib/deflate":44,"./zlib/messages":49,"./zlib/zstream":51}],38:[function(require,module,exports){
+'use strict';
+
+
+var zlib_inflate = require('./zlib/inflate');
+var utils        = require('./utils/common');
+var strings      = require('./utils/strings');
+var c            = require('./zlib/constants');
+var msg          = require('./zlib/messages');
+var ZStream      = require('./zlib/zstream');
+var GZheader     = require('./zlib/gzheader');
+
+var toString = Object.prototype.toString;
+
+/**
+ * class Inflate
+ *
+ * Generic JS-style wrapper for zlib calls. If you don't need
+ * streaming behaviour - use more simple functions: [[inflate]]
+ * and [[inflateRaw]].
+ **/
+
+/* internal
+ * inflate.chunks -> Array
+ *
+ * Chunks of output data, if [[Inflate#onData]] not overridden.
+ **/
+
+/**
+ * Inflate.result -> Uint8Array|Array|String
+ *
+ * Uncompressed result, generated by default [[Inflate#onData]]
+ * and [[Inflate#onEnd]] handlers. Filled after you push last chunk
+ * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you
+ * push a chunk with explicit flush (call [[Inflate#push]] with
+ * `Z_SYNC_FLUSH` param).
+ **/
+
+/**
+ * Inflate.err -> Number
+ *
+ * Error code after inflate finished. 0 (Z_OK) on success.
+ * Should be checked if broken data possible.
+ **/
+
+/**
+ * Inflate.msg -> String
+ *
+ * Error message, if [[Inflate.err]] != 0
+ **/
+
+
+/**
+ * new Inflate(options)
+ * - options (Object): zlib inflate options.
+ *
+ * Creates new inflator instance with specified params. Throws exception
+ * on bad params. Supported options:
+ *
+ * - `windowBits`
+ * - `dictionary`
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information on these.
+ *
+ * Additional options, for internal needs:
+ *
+ * - `chunkSize` - size of generated data chunks (16K by default)
+ * - `raw` (Boolean) - do raw inflate
+ * - `to` (String) - if equal to 'string', then result will be converted
+ *   from utf8 to utf16 (javascript) string. When string output requested,
+ *   chunk length can differ from `chunkSize`, depending on content.
+ *
+ * By default, when no options set, autodetect deflate/gzip data format via
+ * wrapper header.
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
+ *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
+ *
+ * var inflate = new pako.Inflate({ level: 3});
+ *
+ * inflate.push(chunk1, false);
+ * inflate.push(chunk2, true);  // true -> last chunk
+ *
+ * if (inflate.err) { throw new Error(inflate.err); }
+ *
+ * console.log(inflate.result);
+ * ```
+ **/
+function Inflate(options) {
+  if (!(this instanceof Inflate)) return new Inflate(options);
+
+  this.options = utils.assign({
+    chunkSize: 16384,
+    windowBits: 0,
+    to: ''
+  }, options || {});
+
+  var opt = this.options;
+
+  // Force window size for `raw` data, if not set directly,
+  // because we have no header for autodetect.
+  if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {
+    opt.windowBits = -opt.windowBits;
+    if (opt.windowBits === 0) { opt.windowBits = -15; }
+  }
+
+  // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate
+  if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&
+      !(options && options.windowBits)) {
+    opt.windowBits += 32;
+  }
+
+  // Gzip header has no info about windows size, we can do autodetect only
+  // for deflate. So, if window size not set, force it to max when gzip possible
+  if ((opt.windowBits > 15) && (opt.windowBits < 48)) {
+    // bit 3 (16) -> gzipped data
+    // bit 4 (32) -> autodetect gzip/deflate
+    if ((opt.windowBits & 15) === 0) {
+      opt.windowBits |= 15;
+    }
+  }
+
+  this.err    = 0;      // error code, if happens (0 = Z_OK)
+  this.msg    = '';     // error message
+  this.ended  = false;  // used to avoid multiple onEnd() calls
+  this.chunks = [];     // chunks of compressed data
+
+  this.strm   = new ZStream();
+  this.strm.avail_out = 0;
+
+  var status  = zlib_inflate.inflateInit2(
+    this.strm,
+    opt.windowBits
+  );
+
+  if (status !== c.Z_OK) {
+    throw new Error(msg[status]);
+  }
+
+  this.header = new GZheader();
+
+  zlib_inflate.inflateGetHeader(this.strm, this.header);
+}
+
+/**
+ * Inflate#push(data[, mode]) -> Boolean
+ * - data (Uint8Array|Array|ArrayBuffer|String): input data
+ * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
+ *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.
+ *
+ * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with
+ * new output chunks. Returns `true` on success. The last data block must have
+ * mode Z_FINISH (or `true`). That will flush internal pending buffers and call
+ * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you
+ * can use mode Z_SYNC_FLUSH, keeping the decompression context.
+ *
+ * On fail call [[Inflate#onEnd]] with error code and return false.
+ *
+ * We strongly recommend to use `Uint8Array` on input for best speed (output
+ * format is detected automatically). Also, don't skip last param and always
+ * use the same type in your code (boolean or number). That will improve JS speed.
+ *
+ * For regular `Array`-s make sure all elements are [0..255].
+ *
+ * ##### Example
+ *
+ * ```javascript
+ * push(chunk, false); // push one of data chunks
+ * ...
+ * push(chunk, true);  // push last chunk
+ * ```
+ **/
+Inflate.prototype.push = function (data, mode) {
+  var strm = this.strm;
+  var chunkSize = this.options.chunkSize;
+  var dictionary = this.options.dictionary;
+  var status, _mode;
+  var next_out_utf8, tail, utf8str;
+  var dict;
+
+  // Flag to properly process Z_BUF_ERROR on testing inflate call
+  // when we check that all output data was flushed.
+  var allowBufError = false;
+
+  if (this.ended) { return false; }
+  _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);
+
+  // Convert data if needed
+  if (typeof data === 'string') {
+    // Only binary strings can be decompressed on practice
+    strm.input = strings.binstring2buf(data);
+  } else if (toString.call(data) === '[object ArrayBuffer]') {
+    strm.input = new Uint8Array(data);
+  } else {
+    strm.input = data;
+  }
+
+  strm.next_in = 0;
+  strm.avail_in = strm.input.length;
+
+  do {
+    if (strm.avail_out === 0) {
+      strm.output = new utils.Buf8(chunkSize);
+      strm.next_out = 0;
+      strm.avail_out = chunkSize;
+    }
+
+    status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH);    /* no bad return value */
+
+    if (status === c.Z_NEED_DICT && dictionary) {
+      // Convert data if needed
+      if (typeof dictionary === 'string') {
+        dict = strings.string2buf(dictionary);
+      } else if (toString.call(dictionary) === '[object ArrayBuffer]') {
+        dict = new Uint8Array(dictionary);
+      } else {
+        dict = dictionary;
+      }
+
+      status = zlib_inflate.inflateSetDictionary(this.strm, dict);
+
+    }
+
+    if (status === c.Z_BUF_ERROR && allowBufError === true) {
+      status = c.Z_OK;
+      allowBufError = false;
+    }
+
+    if (status !== c.Z_STREAM_END && status !== c.Z_OK) {
+      this.onEnd(status);
+      this.ended = true;
+      return false;
+    }
+
+    if (strm.next_out) {
+      if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {
+
+        if (this.options.to === 'string') {
+
+          next_out_utf8 = strings.utf8border(strm.output, strm.next_out);
+
+          tail = strm.next_out - next_out_utf8;
+          utf8str = strings.buf2string(strm.output, next_out_utf8);
+
+          // move tail
+          strm.next_out = tail;
+          strm.avail_out = chunkSize - tail;
+          if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }
+
+          this.onData(utf8str);
+
+        } else {
+          this.onData(utils.shrinkBuf(strm.output, strm.next_out));
+        }
+      }
+    }
+
+    // When no more input data, we should check that internal inflate buffers
+    // are flushed. The only way to do it when avail_out = 0 - run one more
+    // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.
+    // Here we set flag to process this error properly.
+    //
+    // NOTE. Deflate does not return error in this case and does not needs such
+    // logic.
+    if (strm.avail_in === 0 && strm.avail_out === 0) {
+      allowBufError = true;
+    }
+
+  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);
+
+  if (status === c.Z_STREAM_END) {
+    _mode = c.Z_FINISH;
+  }
+
+  // Finalize on the last chunk.
+  if (_mode === c.Z_FINISH) {
+    status = zlib_inflate.inflateEnd(this.strm);
+    this.onEnd(status);
+    this.ended = true;
+    return status === c.Z_OK;
+  }
+
+  // callback interim results if Z_SYNC_FLUSH.
+  if (_mode === c.Z_SYNC_FLUSH) {
+    this.onEnd(c.Z_OK);
+    strm.avail_out = 0;
+    return true;
+  }
+
+  return true;
+};
+
+
+/**
+ * Inflate#onData(chunk) -> Void
+ * - chunk (Uint8Array|Array|String): output data. Type of array depends
+ *   on js engine support. When string output requested, each chunk
+ *   will be string.
+ *
+ * By default, stores data blocks in `chunks[]` property and glue
+ * those in `onEnd`. Override this handler, if you need another behaviour.
+ **/
+Inflate.prototype.onData = function (chunk) {
+  this.chunks.push(chunk);
+};
+
+
+/**
+ * Inflate#onEnd(status) -> Void
+ * - status (Number): inflate status. 0 (Z_OK) on success,
+ *   other if not.
+ *
+ * Called either after you tell inflate that the input stream is
+ * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)
+ * or if an error happened. By default - join collected chunks,
+ * free memory and fill `results` / `err` properties.
+ **/
+Inflate.prototype.onEnd = function (status) {
+  // On success - join
+  if (status === c.Z_OK) {
+    if (this.options.to === 'string') {
+      // Glue & convert here, until we teach pako to send
+      // utf8 aligned strings to onData
+      this.result = this.chunks.join('');
+    } else {
+      this.result = utils.flattenChunks(this.chunks);
+    }
+  }
+  this.chunks = [];
+  this.err = status;
+  this.msg = this.strm.msg;
+};
+
+
+/**
+ * inflate(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to decompress.
+ * - options (Object): zlib inflate options.
+ *
+ * Decompress `data` with inflate/ungzip and `options`. Autodetect
+ * format via wrapper header by default. That's why we don't provide
+ * separate `ungzip` method.
+ *
+ * Supported options are:
+ *
+ * - windowBits
+ *
+ * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
+ * for more information.
+ *
+ * Sugar (options):
+ *
+ * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
+ *   negative windowBits implicitly.
+ * - `to` (String) - if equal to 'string', then result will be converted
+ *   from utf8 to utf16 (javascript) string. When string output requested,
+ *   chunk length can differ from `chunkSize`, depending on content.
+ *
+ *
+ * ##### Example:
+ *
+ * ```javascript
+ * var pako = require('pako')
+ *   , input = pako.deflate([1,2,3,4,5,6,7,8,9])
+ *   , output;
+ *
+ * try {
+ *   output = pako.inflate(input);
+ * } catch (err)
+ *   console.log(err);
+ * }
+ * ```
+ **/
+function inflate(input, options) {
+  var inflator = new Inflate(options);
+
+  inflator.push(input, true);
+
+  // That will never happens, if you don't cheat with options :)
+  if (inflator.err) { throw inflator.msg || msg[inflator.err]; }
+
+  return inflator.result;
+}
+
+
+/**
+ * inflateRaw(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to decompress.
+ * - options (Object): zlib inflate options.
+ *
+ * The same as [[inflate]], but creates raw data, without wrapper
+ * (header and adler32 crc).
+ **/
+function inflateRaw(input, options) {
+  options = options || {};
+  options.raw = true;
+  return inflate(input, options);
+}
+
+
+/**
+ * ungzip(data[, options]) -> Uint8Array|Array|String
+ * - data (Uint8Array|Array|String): input data to decompress.
+ * - options (Object): zlib inflate options.
+ *
+ * Just shortcut to [[inflate]], because it autodetects format
+ * by header.content. Done for convenience.
+ **/
+
+
+exports.Inflate = Inflate;
+exports.inflate = inflate;
+exports.inflateRaw = inflateRaw;
+exports.ungzip  = inflate;
+
+},{"./utils/common":39,"./utils/strings":40,"./zlib/constants":42,"./zlib/gzheader":45,"./zlib/inflate":47,"./zlib/messages":49,"./zlib/zstream":51}],39:[function(require,module,exports){
+'use strict';
+
+
+var TYPED_OK =  (typeof Uint8Array !== 'undefined') &&
+                (typeof Uint16Array !== 'undefined') &&
+                (typeof Int32Array !== 'undefined');
+
+function _has(obj, key) {
+  return Object.prototype.hasOwnProperty.call(obj, key);
+}
+
+exports.assign = function (obj /*from1, from2, from3, ...*/) {
+  var sources = Array.prototype.slice.call(arguments, 1);
+  while (sources.length) {
+    var source = sources.shift();
+    if (!source) { continue; }
+
+    if (typeof source !== 'object') {
+      throw new TypeError(source + 'must be non-object');
+    }
+
+    for (var p in source) {
+      if (_has(source, p)) {
+        obj[p] = source[p];
+      }
+    }
+  }
+
+  return obj;
+};
+
+
+// reduce buffer size, avoiding mem copy
+exports.shrinkBuf = function (buf, size) {
+  if (buf.length === size) { return buf; }
+  if (buf.subarray) { return buf.subarray(0, size); }
+  buf.length = size;
+  return buf;
+};
+
+
+var fnTyped = {
+  arraySet: function (dest, src, src_offs, len, dest_offs) {
+    if (src.subarray && dest.subarray) {
+      dest.set(src.subarray(src_offs, src_offs + len), dest_offs);
+      return;
+    }
+    // Fallback to ordinary array
+    for (var i = 0; i < len; i++) {
+      dest[dest_offs + i] = src[src_offs + i];
+    }
+  },
+  // Join array of chunks to single array.
+  flattenChunks: function (chunks) {
+    var i, l, len, pos, chunk, result;
+
+    // calculate data length
+    len = 0;
+    for (i = 0, l = chunks.length; i < l; i++) {
+      len += chunks[i].length;
+    }
+
+    // join chunks
+    result = new Uint8Array(len);
+    pos = 0;
+    for (i = 0, l = chunks.length; i < l; i++) {
+      chunk = chunks[i];
+      result.set(chunk, pos);
+      pos += chunk.length;
+    }
+
+    return result;
+  }
+};
+
+var fnUntyped = {
+  arraySet: function (dest, src, src_offs, len, dest_offs) {
+    for (var i = 0; i < len; i++) {
+      dest[dest_offs + i] = src[src_offs + i];
+    }
+  },
+  // Join array of chunks to single array.
+  flattenChunks: function (chunks) {
+    return [].concat.apply([], chunks);
+  }
+};
+
+
+// Enable/Disable typed arrays use, for testing
+//
+exports.setTyped = function (on) {
+  if (on) {
+    exports.Buf8  = Uint8Array;
+    exports.Buf16 = Uint16Array;
+    exports.Buf32 = Int32Array;
+    exports.assign(exports, fnTyped);
+  } else {
+    exports.Buf8  = Array;
+    exports.Buf16 = Array;
+    exports.Buf32 = Array;
+    exports.assign(exports, fnUntyped);
+  }
+};
+
+exports.setTyped(TYPED_OK);
+
+},{}],40:[function(require,module,exports){
+// String encode/decode helpers
+'use strict';
+
+
+var utils = require('./common');
+
+
+// Quick check if we can use fast array to bin string conversion
+//
+// - apply(Array) can fail on Android 2.2
+// - apply(Uint8Array) can fail on iOS 5.1 Safari
+//
+var STR_APPLY_OK = true;
+var STR_APPLY_UIA_OK = true;
+
+try { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }
+try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }
+
+
+// Table with utf8 lengths (calculated by first byte of sequence)
+// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
+// because max possible codepoint is 0x10ffff
+var _utf8len = new utils.Buf8(256);
+for (var q = 0; q < 256; q++) {
+  _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);
+}
+_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start
+
+
+// convert string to array (typed, when possible)
+exports.string2buf = function (str) {
+  var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
+
+  // count binary size
+  for (m_pos = 0; m_pos < str_len; m_pos++) {
+    c = str.charCodeAt(m_pos);
+    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {
+      c2 = str.charCodeAt(m_pos + 1);
+      if ((c2 & 0xfc00) === 0xdc00) {
+        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+        m_pos++;
+      }
+    }
+    buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
+  }
+
+  // allocate buffer
+  buf = new utils.Buf8(buf_len);
+
+  // convert
+  for (i = 0, m_pos = 0; i < buf_len; m_pos++) {
+    c = str.charCodeAt(m_pos);
+    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {
+      c2 = str.charCodeAt(m_pos + 1);
+      if ((c2 & 0xfc00) === 0xdc00) {
+        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+        m_pos++;
+      }
+    }
+    if (c < 0x80) {
+      /* one byte */
+      buf[i++] = c;
+    } else if (c < 0x800) {
+      /* two bytes */
+      buf[i++] = 0xC0 | (c >>> 6);
+      buf[i++] = 0x80 | (c & 0x3f);
+    } else if (c < 0x10000) {
+      /* three bytes */
+      buf[i++] = 0xE0 | (c >>> 12);
+      buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+      buf[i++] = 0x80 | (c & 0x3f);
+    } else {
+      /* four bytes */
+      buf[i++] = 0xf0 | (c >>> 18);
+      buf[i++] = 0x80 | (c >>> 12 & 0x3f);
+      buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+      buf[i++] = 0x80 | (c & 0x3f);
+    }
+  }
+
+  return buf;
+};
+
+// Helper (used in 2 places)
+function buf2binstring(buf, len) {
+  // use fallback for big arrays to avoid stack overflow
+  if (len < 65537) {
+    if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {
+      return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));
+    }
+  }
+
+  var result = '';
+  for (var i = 0; i < len; i++) {
+    result += String.fromCharCode(buf[i]);
+  }
+  return result;
+}
+
+
+// Convert byte array to binary string
+exports.buf2binstring = function (buf) {
+  return buf2binstring(buf, buf.length);
+};
+
+
+// Convert binary string (typed, when possible)
+exports.binstring2buf = function (str) {
+  var buf = new utils.Buf8(str.length);
+  for (var i = 0, len = buf.length; i < len; i++) {
+    buf[i] = str.charCodeAt(i);
+  }
+  return buf;
+};
+
+
+// convert array to string
+exports.buf2string = function (buf, max) {
+  var i, out, c, c_len;
+  var len = max || buf.length;
+
+  // Reserve max possible length (2 words per char)
+  // NB: by unknown reasons, Array is significantly faster for
+  //     String.fromCharCode.apply than Uint16Array.
+  var utf16buf = new Array(len * 2);
+
+  for (out = 0, i = 0; i < len;) {
+    c = buf[i++];
+    // quick process ascii
+    if (c < 0x80) { utf16buf[out++] = c; continue; }
+
+    c_len = _utf8len[c];
+    // skip 5 & 6 byte codes
+    if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }
+
+    // apply mask on first byte
+    c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
+    // join the rest
+    while (c_len > 1 && i < len) {
+      c = (c << 6) | (buf[i++] & 0x3f);
+      c_len--;
+    }
+
+    // terminated by end of string?
+    if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }
+
+    if (c < 0x10000) {
+      utf16buf[out++] = c;
+    } else {
+      c -= 0x10000;
+      utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
+      utf16buf[out++] = 0xdc00 | (c & 0x3ff);
+    }
+  }
+
+  return buf2binstring(utf16buf, out);
+};
+
+
+// Calculate max possible position in utf8 buffer,
+// that will not break sequence. If that's not possible
+// - (very small limits) return max size as is.
+//
+// buf[] - utf8 bytes array
+// max   - length limit (mandatory);
+exports.utf8border = function (buf, max) {
+  var pos;
+
+  max = max || buf.length;
+  if (max > buf.length) { max = buf.length; }
+
+  // go back from last position, until start of sequence found
+  pos = max - 1;
+  while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }
+
+  // Very small and broken sequence,
+  // return max, because we should return something anyway.
+  if (pos < 0) { return max; }
+
+  // If we came to start of buffer - that means buffer is too small,
+  // return max too.
+  if (pos === 0) { return max; }
+
+  return (pos + _utf8len[buf[pos]] > max) ? pos : max;
+};
+
+},{"./common":39}],41:[function(require,module,exports){
+'use strict';
+
+// Note: adler32 takes 12% for level 0 and 2% for level 6.
+// It isn't worth it to make additional optimizations as in original.
+// Small size is preferable.
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+function adler32(adler, buf, len, pos) {
+  var s1 = (adler & 0xffff) |0,
+      s2 = ((adler >>> 16) & 0xffff) |0,
+      n = 0;
+
+  while (len !== 0) {
+    // Set limit ~ twice less than 5552, to keep
+    // s2 in 31-bits, because we force signed ints.
+    // in other case %= will fail.
+    n = len > 2000 ? 2000 : len;
+    len -= n;
+
+    do {
+      s1 = (s1 + buf[pos++]) |0;
+      s2 = (s2 + s1) |0;
+    } while (--n);
+
+    s1 %= 65521;
+    s2 %= 65521;
+  }
+
+  return (s1 | (s2 << 16)) |0;
+}
+
+
+module.exports = adler32;
+
+},{}],42:[function(require,module,exports){
+'use strict';
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+module.exports = {
+
+  /* Allowed flush values; see deflate() and inflate() below for details */
+  Z_NO_FLUSH:         0,
+  Z_PARTIAL_FLUSH:    1,
+  Z_SYNC_FLUSH:       2,
+  Z_FULL_FLUSH:       3,
+  Z_FINISH:           4,
+  Z_BLOCK:            5,
+  Z_TREES:            6,
+
+  /* Return codes for the compression/decompression functions. Negative values
+  * are errors, positive values are used for special but normal events.
+  */
+  Z_OK:               0,
+  Z_STREAM_END:       1,
+  Z_NEED_DICT:        2,
+  Z_ERRNO:           -1,
+  Z_STREAM_ERROR:    -2,
+  Z_DATA_ERROR:      -3,
+  //Z_MEM_ERROR:     -4,
+  Z_BUF_ERROR:       -5,
+  //Z_VERSION_ERROR: -6,
+
+  /* compression levels */
+  Z_NO_COMPRESSION:         0,
+  Z_BEST_SPEED:             1,
+  Z_BEST_COMPRESSION:       9,
+  Z_DEFAULT_COMPRESSION:   -1,
+
+
+  Z_FILTERED:               1,
+  Z_HUFFMAN_ONLY:           2,
+  Z_RLE:                    3,
+  Z_FIXED:                  4,
+  Z_DEFAULT_STRATEGY:       0,
+
+  /* Possible values of the data_type field (though see inflate()) */
+  Z_BINARY:                 0,
+  Z_TEXT:                   1,
+  //Z_ASCII:                1, // = Z_TEXT (deprecated)
+  Z_UNKNOWN:                2,
+
+  /* The deflate compression method */
+  Z_DEFLATED:               8
+  //Z_NULL:                 null // Use -1 or null inline, depending on var type
+};
+
+},{}],43:[function(require,module,exports){
+'use strict';
+
+// Note: we can't get significant speed boost here.
+// So write code to minimize size - no pregenerated tables
+// and array tools dependencies.
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+// Use ordinary array, since untyped makes no boost here
+function makeTable() {
+  var c, table = [];
+
+  for (var n = 0; n < 256; n++) {
+    c = n;
+    for (var k = 0; k < 8; k++) {
+      c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
+    }
+    table[n] = c;
+  }
+
+  return table;
+}
+
+// Create table on load. Just 255 signed longs. Not a problem.
+var crcTable = makeTable();
+
+
+function crc32(crc, buf, len, pos) {
+  var t = crcTable,
+      end = pos + len;
+
+  crc ^= -1;
+
+  for (var i = pos; i < end; i++) {
+    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
+  }
+
+  return (crc ^ (-1)); // >>> 0;
+}
+
+
+module.exports = crc32;
+
+},{}],44:[function(require,module,exports){
+'use strict';
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+var utils   = require('../utils/common');
+var trees   = require('./trees');
+var adler32 = require('./adler32');
+var crc32   = require('./crc32');
+var msg     = require('./messages');
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+/* Allowed flush values; see deflate() and inflate() below for details */
+var Z_NO_FLUSH      = 0;
+var Z_PARTIAL_FLUSH = 1;
+//var Z_SYNC_FLUSH    = 2;
+var Z_FULL_FLUSH    = 3;
+var Z_FINISH        = 4;
+var Z_BLOCK         = 5;
+//var Z_TREES         = 6;
+
+
+/* Return codes for the compression/decompression functions. Negative values
+ * are errors, positive values are used for special but normal events.
+ */
+var Z_OK            = 0;
+var Z_STREAM_END    = 1;
+//var Z_NEED_DICT     = 2;
+//var Z_ERRNO         = -1;
+var Z_STREAM_ERROR  = -2;
+var Z_DATA_ERROR    = -3;
+//var Z_MEM_ERROR     = -4;
+var Z_BUF_ERROR     = -5;
+//var Z_VERSION_ERROR = -6;
+
+
+/* compression levels */
+//var Z_NO_COMPRESSION      = 0;
+//var Z_BEST_SPEED          = 1;
+//var Z_BEST_COMPRESSION    = 9;
+var Z_DEFAULT_COMPRESSION = -1;
+
+
+var Z_FILTERED            = 1;
+var Z_HUFFMAN_ONLY        = 2;
+var Z_RLE                 = 3;
+var Z_FIXED               = 4;
+var Z_DEFAULT_STRATEGY    = 0;
+
+/* Possible values of the data_type field (though see inflate()) */
+//var Z_BINARY              = 0;
+//var Z_TEXT                = 1;
+//var Z_ASCII               = 1; // = Z_TEXT
+var Z_UNKNOWN             = 2;
+
+
+/* The deflate compression method */
+var Z_DEFLATED  = 8;
+
+/*============================================================================*/
+
+
+var MAX_MEM_LEVEL = 9;
+/* Maximum value for memLevel in deflateInit2 */
+var MAX_WBITS = 15;
+/* 32K LZ77 window */
+var DEF_MEM_LEVEL = 8;
+
+
+var LENGTH_CODES  = 29;
+/* number of length codes, not counting the special END_BLOCK code */
+var LITERALS      = 256;
+/* number of literal bytes 0..255 */
+var L_CODES       = LITERALS + 1 + LENGTH_CODES;
+/* number of Literal or Length codes, including the END_BLOCK code */
+var D_CODES       = 30;
+/* number of distance codes */
+var BL_CODES      = 19;
+/* number of codes used to transfer the bit lengths */
+var HEAP_SIZE     = 2 * L_CODES + 1;
+/* maximum heap size */
+var MAX_BITS  = 15;
+/* All codes must not exceed MAX_BITS bits */
+
+var MIN_MATCH = 3;
+var MAX_MATCH = 258;
+var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);
+
+var PRESET_DICT = 0x20;
+
+var INIT_STATE = 42;
+var EXTRA_STATE = 69;
+var NAME_STATE = 73;
+var COMMENT_STATE = 91;
+var HCRC_STATE = 103;
+var BUSY_STATE = 113;
+var FINISH_STATE = 666;
+
+var BS_NEED_MORE      = 1; /* block not completed, need more input or more output */
+var BS_BLOCK_DONE     = 2; /* block flush performed */
+var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */
+var BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */
+
+var OS_CODE = 0x03; // Unix :) . Don't detect, use this default.
+
+function err(strm, errorCode) {
+  strm.msg = msg[errorCode];
+  return errorCode;
+}
+
+function rank(f) {
+  return ((f) << 1) - ((f) > 4 ? 9 : 0);
+}
+
+function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
+
+
+/* =========================================================================
+ * Flush as much pending output as possible. All deflate() output goes
+ * through this function so some applications may wish to modify it
+ * to avoid allocating a large strm->output buffer and copying into it.
+ * (See also read_buf()).
+ */
+function flush_pending(strm) {
+  var s = strm.state;
+
+  //_tr_flush_bits(s);
+  var len = s.pending;
+  if (len > strm.avail_out) {
+    len = strm.avail_out;
+  }
+  if (len === 0) { return; }
+
+  utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);
+  strm.next_out += len;
+  s.pending_out += len;
+  strm.total_out += len;
+  strm.avail_out -= len;
+  s.pending -= len;
+  if (s.pending === 0) {
+    s.pending_out = 0;
+  }
+}
+
+
+function flush_block_only(s, last) {
+  trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);
+  s.block_start = s.strstart;
+  flush_pending(s.strm);
+}
+
+
+function put_byte(s, b) {
+  s.pending_buf[s.pending++] = b;
+}
+
+
+/* =========================================================================
+ * Put a short in the pending buffer. The 16-bit value is put in MSB order.
+ * IN assertion: the stream state is correct and there is enough room in
+ * pending_buf.
+ */
+function putShortMSB(s, b) {
+//  put_byte(s, (Byte)(b >> 8));
+//  put_byte(s, (Byte)(b & 0xff));
+  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;
+  s.pending_buf[s.pending++] = b & 0xff;
+}
+
+
+/* ===========================================================================
+ * Read a new buffer from the current input stream, update the adler32
+ * and total number of bytes read.  All deflate() input goes through
+ * this function so some applications may wish to modify it to avoid
+ * allocating a large strm->input buffer and copying from it.
+ * (See also flush_pending()).
+ */
+function read_buf(strm, buf, start, size) {
+  var len = strm.avail_in;
+
+  if (len > size) { len = size; }
+  if (len === 0) { return 0; }
+
+  strm.avail_in -= len;
+
+  // zmemcpy(buf, strm->next_in, len);
+  utils.arraySet(buf, strm.input, strm.next_in, len, start);
+  if (strm.state.wrap === 1) {
+    strm.adler = adler32(strm.adler, buf, len, start);
+  }
+
+  else if (strm.state.wrap === 2) {
+    strm.adler = crc32(strm.adler, buf, len, start);
+  }
+
+  strm.next_in += len;
+  strm.total_in += len;
+
+  return len;
+}
+
+
+/* ===========================================================================
+ * Set match_start to the longest match starting at the given string and
+ * return its length. Matches shorter or equal to prev_length are discarded,
+ * in which case the result is equal to prev_length and match_start is
+ * garbage.
+ * IN assertions: cur_match is the head of the hash chain for the current
+ *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
+ * OUT assertion: the match length is not greater than s->lookahead.
+ */
+function longest_match(s, cur_match) {
+  var chain_length = s.max_chain_length;      /* max hash chain length */
+  var scan = s.strstart; /* current string */
+  var match;                       /* matched string */
+  var len;                           /* length of current match */
+  var best_len = s.prev_length;              /* best match length so far */
+  var nice_match = s.nice_match;             /* stop if match long enough */
+  var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?
+      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;
+
+  var _win = s.window; // shortcut
+
+  var wmask = s.w_mask;
+  var prev  = s.prev;
+
+  /* Stop when cur_match becomes <= limit. To simplify the code,
+   * we prevent matches with the string of window index 0.
+   */
+
+  var strend = s.strstart + MAX_MATCH;
+  var scan_end1  = _win[scan + best_len - 1];
+  var scan_end   = _win[scan + best_len];
+
+  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
+   * It is easy to get rid of this optimization if necessary.
+   */
+  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
+
+  /* Do not waste too much time if we already have a good match: */
+  if (s.prev_length >= s.good_match) {
+    chain_length >>= 2;
+  }
+  /* Do not look for matches beyond the end of the input. This is necessary
+   * to make deflate deterministic.
+   */
+  if (nice_match > s.lookahead) { nice_match = s.lookahead; }
+
+  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
+
+  do {
+    // Assert(cur_match < s->strstart, "no future");
+    match = cur_match;
+
+    /* Skip to next match if the match length cannot increase
+     * or if the match length is less than 2.  Note that the checks below
+     * for insufficient lookahead only occur occasionally for performance
+     * reasons.  Therefore uninitialized memory will be accessed, and
+     * conditional jumps will be made that depend on those values.
+     * However the length of the match is limited to the lookahead, so
+     * the output of deflate is not affected by the uninitialized values.
+     */
+
+    if (_win[match + best_len]     !== scan_end  ||
+        _win[match + best_len - 1] !== scan_end1 ||
+        _win[match]                !== _win[scan] ||
+        _win[++match]              !== _win[scan + 1]) {
+      continue;
+    }
+
+    /* The check at best_len-1 can be removed because it will be made
+     * again later. (This heuristic is not always a win.)
+     * It is not necessary to compare scan[2] and match[2] since they
+     * are always equal when the other bytes match, given that
+     * the hash keys are equal and that HASH_BITS >= 8.
+     */
+    scan += 2;
+    match++;
+    // Assert(*scan == *match, "match[2]?");
+
+    /* We check for insufficient lookahead only every 8th comparison;
+     * the 256th check will be made at strstart+258.
+     */
+    do {
+      /*jshint noempty:false*/
+    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
+             scan < strend);
+
+    // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
+
+    len = MAX_MATCH - (strend - scan);
+    scan = strend - MAX_MATCH;
+
+    if (len > best_len) {
+      s.match_start = cur_match;
+      best_len = len;
+      if (len >= nice_match) {
+        break;
+      }
+      scan_end1  = _win[scan + best_len - 1];
+      scan_end   = _win[scan + best_len];
+    }
+  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);
+
+  if (best_len <= s.lookahead) {
+    return best_len;
+  }
+  return s.lookahead;
+}
+
+
+/* ===========================================================================
+ * Fill the window when the lookahead becomes insufficient.
+ * Updates strstart and lookahead.
+ *
+ * IN assertion: lookahead < MIN_LOOKAHEAD
+ * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
+ *    At least one byte has been read, or avail_in == 0; reads are
+ *    performed for at least two bytes (required for the zip translate_eol
+ *    option -- not supported here).
+ */
+function fill_window(s) {
+  var _w_size = s.w_size;
+  var p, n, m, more, str;
+
+  //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
+
+  do {
+    more = s.window_size - s.lookahead - s.strstart;
+
+    // JS ints have 32 bit, block below not needed
+    /* Deal with !@#$% 64K limit: */
+    //if (sizeof(int) <= 2) {
+    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
+    //        more = wsize;
+    //
+    //  } else if (more == (unsigned)(-1)) {
+    //        /* Very unlikely, but possible on 16 bit machine if
+    //         * strstart == 0 && lookahead == 1 (input done a byte at time)
+    //         */
+    //        more--;
+    //    }
+    //}
+
+
+    /* If the window is almost full and there is insufficient lookahead,
+     * move the upper half to the lower one to make room in the upper half.
+     */
+    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {
+
+      utils.arraySet(s.window, s.window, _w_size, _w_size, 0);
+      s.match_start -= _w_size;
+      s.strstart -= _w_size;
+      /* we now have strstart >= MAX_DIST */
+      s.block_start -= _w_size;
+
+      /* Slide the hash table (could be avoided with 32 bit values
+       at the expense of memory usage). We slide even when level == 0
+       to keep the hash table consistent if we switch back to level > 0
+       later. (Using level 0 permanently is not an optimal usage of
+       zlib, so we don't care about this pathological case.)
+       */
+
+      n = s.hash_size;
+      p = n;
+      do {
+        m = s.head[--p];
+        s.head[p] = (m >= _w_size ? m - _w_size : 0);
+      } while (--n);
+
+      n = _w_size;
+      p = n;
+      do {
+        m = s.prev[--p];
+        s.prev[p] = (m >= _w_size ? m - _w_size : 0);
+        /* If n is not on any hash chain, prev[n] is garbage but
+         * its value will never be used.
+         */
+      } while (--n);
+
+      more += _w_size;
+    }
+    if (s.strm.avail_in === 0) {
+      break;
+    }
+
+    /* If there was no sliding:
+     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
+     *    more == window_size - lookahead - strstart
+     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
+     * => more >= window_size - 2*WSIZE + 2
+     * In the BIG_MEM or MMAP case (not yet supported),
+     *   window_size == input_size + MIN_LOOKAHEAD  &&
+     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
+     * Otherwise, window_size == 2*WSIZE so more >= 2.
+     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
+     */
+    //Assert(more >= 2, "more < 2");
+    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);
+    s.lookahead += n;
+
+    /* Initialize the hash value now that we have some input: */
+    if (s.lookahead + s.insert >= MIN_MATCH) {
+      str = s.strstart - s.insert;
+      s.ins_h = s.window[str];
+
+      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;
+//#if MIN_MATCH != 3
+//        Call update_hash() MIN_MATCH-3 more times
+//#endif
+      while (s.insert) {
+        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
+        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;
+
+        s.prev[str & s.w_mask] = s.head[s.ins_h];
+        s.head[s.ins_h] = str;
+        str++;
+        s.insert--;
+        if (s.lookahead + s.insert < MIN_MATCH) {
+          break;
+        }
+      }
+    }
+    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
+     * but this is not important since only literal bytes will be emitted.
+     */
+
+  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);
+
+  /* If the WIN_INIT bytes after the end of the current data have never been
+   * written, then zero those bytes in order to avoid memory check reports of
+   * the use of uninitialized (or uninitialised as Julian writes) bytes by
+   * the longest match routines.  Update the high water mark for the next
+   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
+   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
+   */
+//  if (s.high_water < s.window_size) {
+//    var curr = s.strstart + s.lookahead;
+//    var init = 0;
+//
+//    if (s.high_water < curr) {
+//      /* Previous high water mark below current data -- zero WIN_INIT
+//       * bytes or up to end of window, whichever is less.
+//       */
+//      init = s.window_size - curr;
+//      if (init > WIN_INIT)
+//        init = WIN_INIT;
+//      zmemzero(s->window + curr, (unsigned)init);
+//      s->high_water = curr + init;
+//    }
+//    else if (s->high_water < (ulg)curr + WIN_INIT) {
+//      /* High water mark at or above current data, but below current data
+//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
+//       * to end of window, whichever is less.
+//       */
+//      init = (ulg)curr + WIN_INIT - s->high_water;
+//      if (init > s->window_size - s->high_water)
+//        init = s->window_size - s->high_water;
+//      zmemzero(s->window + s->high_water, (unsigned)init);
+//      s->high_water += init;
+//    }
+//  }
+//
+//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
+//    "not enough room for search");
+}
+
+/* ===========================================================================
+ * Copy without compression as much as possible from the input stream, return
+ * the current block state.
+ * This function does not insert new strings in the dictionary since
+ * uncompressible data is probably not useful. This function is used
+ * only for the level=0 compression option.
+ * NOTE: this function should be optimized to avoid extra copying from
+ * window to pending_buf.
+ */
+function deflate_stored(s, flush) {
+  /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
+   * to pending_buf_size, and each stored block has a 5 byte header:
+   */
+  var max_block_size = 0xffff;
+
+  if (max_block_size > s.pending_buf_size - 5) {
+    max_block_size = s.pending_buf_size - 5;
+  }
+
+  /* Copy as much as possible from input to output: */
+  for (;;) {
+    /* Fill the window as much as possible: */
+    if (s.lookahead <= 1) {
+
+      //Assert(s->strstart < s->w_size+MAX_DIST(s) ||
+      //  s->block_start >= (long)s->w_size, "slide too late");
+//      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||
+//        s.block_start >= s.w_size)) {
+//        throw  new Error("slide too late");
+//      }
+
+      fill_window(s);
+      if (s.lookahead === 0 && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+
+      if (s.lookahead === 0) {
+        break;
+      }
+      /* flush the current block */
+    }
+    //Assert(s->block_start >= 0L, "block gone");
+//    if (s.block_start < 0) throw new Error("block gone");
+
+    s.strstart += s.lookahead;
+    s.lookahead = 0;
+
+    /* Emit a stored block if pending_buf will be full: */
+    var max_start = s.block_start + max_block_size;
+
+    if (s.strstart === 0 || s.strstart >= max_start) {
+      /* strstart == 0 is possible when wraparound on 16-bit machine */
+      s.lookahead = s.strstart - max_start;
+      s.strstart = max_start;
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+
+
+    }
+    /* Flush if we may have to slide, otherwise block_start may become
+     * negative and the data will be gone:
+     */
+    if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+
+  s.insert = 0;
+
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+
+  if (s.strstart > s.block_start) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+
+  return BS_NEED_MORE;
+}
+
+/* ===========================================================================
+ * Compress as much as possible from the input stream, return the current
+ * block state.
+ * This function does not perform lazy evaluation of matches and inserts
+ * new strings in the dictionary only for unmatched strings or for short
+ * matches. It is used only for the fast compression options.
+ */
+function deflate_fast(s, flush) {
+  var hash_head;        /* head of the hash chain */
+  var bflush;           /* set if current block must be flushed */
+
+  for (;;) {
+    /* Make sure that we always have enough lookahead, except
+     * at the end of the input file. We need MAX_MATCH bytes
+     * for the next match, plus MIN_MATCH bytes to insert the
+     * string following the next match.
+     */
+    if (s.lookahead < MIN_LOOKAHEAD) {
+      fill_window(s);
+      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+      if (s.lookahead === 0) {
+        break; /* flush the current block */
+      }
+    }
+
+    /* Insert the string window[strstart .. strstart+2] in the
+     * dictionary, and set hash_head to the head of the hash chain:
+     */
+    hash_head = 0/*NIL*/;
+    if (s.lookahead >= MIN_MATCH) {
+      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+      s.head[s.ins_h] = s.strstart;
+      /***/
+    }
+
+    /* Find the longest match, discarding those <= prev_length.
+     * At this point we have always match_length < MIN_MATCH
+     */
+    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {
+      /* To simplify the code, we prevent matches with the string
+       * of window index 0 (in particular we have to avoid a match
+       * of the string with itself at the start of the input file).
+       */
+      s.match_length = longest_match(s, hash_head);
+      /* longest_match() sets match_start */
+    }
+    if (s.match_length >= MIN_MATCH) {
+      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only
+
+      /*** _tr_tally_dist(s, s.strstart - s.match_start,
+                     s.match_length - MIN_MATCH, bflush); ***/
+      bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);
+
+      s.lookahead -= s.match_length;
+
+      /* Insert new strings in the hash table only if the match length
+       * is not too large. This saves time but degrades compression.
+       */
+      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {
+        s.match_length--; /* string at strstart already in table */
+        do {
+          s.strstart++;
+          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+          s.head[s.ins_h] = s.strstart;
+          /***/
+          /* strstart never exceeds WSIZE-MAX_MATCH, so there are
+           * always MIN_MATCH bytes ahead.
+           */
+        } while (--s.match_length !== 0);
+        s.strstart++;
+      } else
+      {
+        s.strstart += s.match_length;
+        s.match_length = 0;
+        s.ins_h = s.window[s.strstart];
+        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */
+        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;
+
+//#if MIN_MATCH != 3
+//                Call UPDATE_HASH() MIN_MATCH-3 more times
+//#endif
+        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
+         * matter since it will be recomputed at next deflate call.
+         */
+      }
+    } else {
+      /* No match, output a literal byte */
+      //Tracevv((stderr,"%c", s.window[s.strstart]));
+      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+
+      s.lookahead--;
+      s.strstart++;
+    }
+    if (bflush) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+  s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+  return BS_BLOCK_DONE;
+}
+
+/* ===========================================================================
+ * Same as above, but achieves better compression. We use a lazy
+ * evaluation for matches: a match is finally adopted only if there is
+ * no better match at the next window position.
+ */
+function deflate_slow(s, flush) {
+  var hash_head;          /* head of hash chain */
+  var bflush;              /* set if current block must be flushed */
+
+  var max_insert;
+
+  /* Process the input block. */
+  for (;;) {
+    /* Make sure that we always have enough lookahead, except
+     * at the end of the input file. We need MAX_MATCH bytes
+     * for the next match, plus MIN_MATCH bytes to insert the
+     * string following the next match.
+     */
+    if (s.lookahead < MIN_LOOKAHEAD) {
+      fill_window(s);
+      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+      if (s.lookahead === 0) { break; } /* flush the current block */
+    }
+
+    /* Insert the string window[strstart .. strstart+2] in the
+     * dictionary, and set hash_head to the head of the hash chain:
+     */
+    hash_head = 0/*NIL*/;
+    if (s.lookahead >= MIN_MATCH) {
+      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+      s.head[s.ins_h] = s.strstart;
+      /***/
+    }
+
+    /* Find the longest match, discarding those <= prev_length.
+     */
+    s.prev_length = s.match_length;
+    s.prev_match = s.match_start;
+    s.match_length = MIN_MATCH - 1;
+
+    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&
+        s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {
+      /* To simplify the code, we prevent matches with the string
+       * of window index 0 (in particular we have to avoid a match
+       * of the string with itself at the start of the input file).
+       */
+      s.match_length = longest_match(s, hash_head);
+      /* longest_match() sets match_start */
+
+      if (s.match_length <= 5 &&
+         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {
+
+        /* If prev_match is also MIN_MATCH, match_start is garbage
+         * but we will ignore the current match anyway.
+         */
+        s.match_length = MIN_MATCH - 1;
+      }
+    }
+    /* If there was a match at the previous step and the current
+     * match is not better, output the previous match:
+     */
+    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {
+      max_insert = s.strstart + s.lookahead - MIN_MATCH;
+      /* Do not insert strings in hash table beyond this. */
+
+      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);
+
+      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,
+                     s.prev_length - MIN_MATCH, bflush);***/
+      bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);
+      /* Insert in hash table all strings up to the end of the match.
+       * strstart-1 and strstart are already inserted. If there is not
+       * enough lookahead, the last two strings are not inserted in
+       * the hash table.
+       */
+      s.lookahead -= s.prev_length - 1;
+      s.prev_length -= 2;
+      do {
+        if (++s.strstart <= max_insert) {
+          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
+          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
+          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
+          s.head[s.ins_h] = s.strstart;
+          /***/
+        }
+      } while (--s.prev_length !== 0);
+      s.match_available = 0;
+      s.match_length = MIN_MATCH - 1;
+      s.strstart++;
+
+      if (bflush) {
+        /*** FLUSH_BLOCK(s, 0); ***/
+        flush_block_only(s, false);
+        if (s.strm.avail_out === 0) {
+          return BS_NEED_MORE;
+        }
+        /***/
+      }
+
+    } else if (s.match_available) {
+      /* If there was no match at the previous position, output a
+       * single literal. If there was a match but the current match
+       * is longer, truncate the previous match to a single literal.
+       */
+      //Tracevv((stderr,"%c", s->window[s->strstart-1]));
+      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
+      bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);
+
+      if (bflush) {
+        /*** FLUSH_BLOCK_ONLY(s, 0) ***/
+        flush_block_only(s, false);
+        /***/
+      }
+      s.strstart++;
+      s.lookahead--;
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+    } else {
+      /* There is no previous match to compare with, wait for
+       * the next step to decide.
+       */
+      s.match_available = 1;
+      s.strstart++;
+      s.lookahead--;
+    }
+  }
+  //Assert (flush != Z_NO_FLUSH, "no flush?");
+  if (s.match_available) {
+    //Tracevv((stderr,"%c", s->window[s->strstart-1]));
+    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
+    bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);
+
+    s.match_available = 0;
+  }
+  s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+
+  return BS_BLOCK_DONE;
+}
+
+
+/* ===========================================================================
+ * For Z_RLE, simply look for runs of bytes, generate matches only of distance
+ * one.  Do not maintain a hash table.  (It will be regenerated if this run of
+ * deflate switches away from Z_RLE.)
+ */
+function deflate_rle(s, flush) {
+  var bflush;            /* set if current block must be flushed */
+  var prev;              /* byte at distance one to match */
+  var scan, strend;      /* scan goes up to strend for length of run */
+
+  var _win = s.window;
+
+  for (;;) {
+    /* Make sure that we always have enough lookahead, except
+     * at the end of the input file. We need MAX_MATCH bytes
+     * for the longest run, plus one for the unrolled loop.
+     */
+    if (s.lookahead <= MAX_MATCH) {
+      fill_window(s);
+      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {
+        return BS_NEED_MORE;
+      }
+      if (s.lookahead === 0) { break; } /* flush the current block */
+    }
+
+    /* See how many times the previous byte repeats */
+    s.match_length = 0;
+    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {
+      scan = s.strstart - 1;
+      prev = _win[scan];
+      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {
+        strend = s.strstart + MAX_MATCH;
+        do {
+          /*jshint noempty:false*/
+        } while (prev === _win[++scan] && prev === _win[++scan] &&
+                 prev === _win[++scan] && prev === _win[++scan] &&
+                 prev === _win[++scan] && prev === _win[++scan] &&
+                 prev === _win[++scan] && prev === _win[++scan] &&
+                 scan < strend);
+        s.match_length = MAX_MATCH - (strend - scan);
+        if (s.match_length > s.lookahead) {
+          s.match_length = s.lookahead;
+        }
+      }
+      //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
+    }
+
+    /* Emit match if have run of MIN_MATCH or longer, else emit literal */
+    if (s.match_length >= MIN_MATCH) {
+      //check_match(s, s.strstart, s.strstart - 1, s.match_length);
+
+      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/
+      bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);
+
+      s.lookahead -= s.match_length;
+      s.strstart += s.match_length;
+      s.match_length = 0;
+    } else {
+      /* No match, output a literal byte */
+      //Tracevv((stderr,"%c", s->window[s->strstart]));
+      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+
+      s.lookahead--;
+      s.strstart++;
+    }
+    if (bflush) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+  s.insert = 0;
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+  return BS_BLOCK_DONE;
+}
+
+/* ===========================================================================
+ * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.
+ * (It will be regenerated if this run of deflate switches away from Huffman.)
+ */
+function deflate_huff(s, flush) {
+  var bflush;             /* set if current block must be flushed */
+
+  for (;;) {
+    /* Make sure that we have a literal to write. */
+    if (s.lookahead === 0) {
+      fill_window(s);
+      if (s.lookahead === 0) {
+        if (flush === Z_NO_FLUSH) {
+          return BS_NEED_MORE;
+        }
+        break;      /* flush the current block */
+      }
+    }
+
+    /* Output a literal byte */
+    s.match_length = 0;
+    //Tracevv((stderr,"%c", s->window[s->strstart]));
+    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
+    bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
+    s.lookahead--;
+    s.strstart++;
+    if (bflush) {
+      /*** FLUSH_BLOCK(s, 0); ***/
+      flush_block_only(s, false);
+      if (s.strm.avail_out === 0) {
+        return BS_NEED_MORE;
+      }
+      /***/
+    }
+  }
+  s.insert = 0;
+  if (flush === Z_FINISH) {
+    /*** FLUSH_BLOCK(s, 1); ***/
+    flush_block_only(s, true);
+    if (s.strm.avail_out === 0) {
+      return BS_FINISH_STARTED;
+    }
+    /***/
+    return BS_FINISH_DONE;
+  }
+  if (s.last_lit) {
+    /*** FLUSH_BLOCK(s, 0); ***/
+    flush_block_only(s, false);
+    if (s.strm.avail_out === 0) {
+      return BS_NEED_MORE;
+    }
+    /***/
+  }
+  return BS_BLOCK_DONE;
+}
+
+/* Values for max_lazy_match, good_match and max_chain_length, depending on
+ * the desired pack level (0..9). The values given below have been tuned to
+ * exclude worst case performance for pathological files. Better values may be
+ * found for specific files.
+ */
+function Config(good_length, max_lazy, nice_length, max_chain, func) {
+  this.good_length = good_length;
+  this.max_lazy = max_lazy;
+  this.nice_length = nice_length;
+  this.max_chain = max_chain;
+  this.func = func;
+}
+
+var configuration_table;
+
+configuration_table = [
+  /*      good lazy nice chain */
+  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */
+  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */
+  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */
+  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */
+
+  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */
+  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */
+  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */
+  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */
+  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */
+  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */
+];
+
+
+/* ===========================================================================
+ * Initialize the "longest match" routines for a new zlib stream
+ */
+function lm_init(s) {
+  s.window_size = 2 * s.w_size;
+
+  /*** CLEAR_HASH(s); ***/
+  zero(s.head); // Fill with NIL (= 0);
+
+  /* Set the default configuration parameters:
+   */
+  s.max_lazy_match = configuration_table[s.level].max_lazy;
+  s.good_match = configuration_table[s.level].good_length;
+  s.nice_match = configuration_table[s.level].nice_length;
+  s.max_chain_length = configuration_table[s.level].max_chain;
+
+  s.strstart = 0;
+  s.block_start = 0;
+  s.lookahead = 0;
+  s.insert = 0;
+  s.match_length = s.prev_length = MIN_MATCH - 1;
+  s.match_available = 0;
+  s.ins_h = 0;
+}
+
+
+function DeflateState() {
+  this.strm = null;            /* pointer back to this zlib stream */
+  this.status = 0;            /* as the name implies */
+  this.pending_buf = null;      /* output still pending */
+  this.pending_buf_size = 0;  /* size of pending_buf */
+  this.pending_out = 0;       /* next pending byte to output to the stream */
+  this.pending = 0;           /* nb of bytes in the pending buffer */
+  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
+  this.gzhead = null;         /* gzip header information to write */
+  this.gzindex = 0;           /* where in extra, name, or comment */
+  this.method = Z_DEFLATED; /* can only be DEFLATED */
+  this.last_flush = -1;   /* value of flush param for previous deflate call */
+
+  this.w_size = 0;  /* LZ77 window size (32K by default) */
+  this.w_bits = 0;  /* log2(w_size)  (8..16) */
+  this.w_mask = 0;  /* w_size - 1 */
+
+  this.window = null;
+  /* Sliding window. Input bytes are read into the second half of the window,
+   * and move to the first half later to keep a dictionary of at least wSize
+   * bytes. With this organization, matches are limited to a distance of
+   * wSize-MAX_MATCH bytes, but this ensures that IO is always
+   * performed with a length multiple of the block size.
+   */
+
+  this.window_size = 0;
+  /* Actual size of window: 2*wSize, except when the user input buffer
+   * is directly used as sliding window.
+   */
+
+  this.prev = null;
+  /* Link to older string with same hash index. To limit the size of this
+   * array to 64K, this link is maintained only for the last 32K strings.
+   * An index in this array is thus a window index modulo 32K.
+   */
+
+  this.head = null;   /* Heads of the hash chains or NIL. */
+
+  this.ins_h = 0;       /* hash index of string to be inserted */
+  this.hash_size = 0;   /* number of elements in hash table */
+  this.hash_bits = 0;   /* log2(hash_size) */
+  this.hash_mask = 0;   /* hash_size-1 */
+
+  this.hash_shift = 0;
+  /* Number of bits by which ins_h must be shifted at each input
+   * step. It must be such that after MIN_MATCH steps, the oldest
+   * byte no longer takes part in the hash key, that is:
+   *   hash_shift * MIN_MATCH >= hash_bits
+   */
+
+  this.block_start = 0;
+  /* Window position at the beginning of the current output block. Gets
+   * negative when the window is moved backwards.
+   */
+
+  this.match_length = 0;      /* length of best match */
+  this.prev_match = 0;        /* previous match */
+  this.match_available = 0;   /* set if previous match exists */
+  this.strstart = 0;          /* start of string to insert */
+  this.match_start = 0;       /* start of matching string */
+  this.lookahead = 0;         /* number of valid bytes ahead in window */
+
+  this.prev_length = 0;
+  /* Length of the best match at previous step. Matches not greater than this
+   * are discarded. This is used in the lazy match evaluation.
+   */
+
+  this.max_chain_length = 0;
+  /* To speed up deflation, hash chains are never searched beyond this
+   * length.  A higher limit improves compression ratio but degrades the
+   * speed.
+   */
+
+  this.max_lazy_match = 0;
+  /* Attempt to find a better match only when the current match is strictly
+   * smaller than this value. This mechanism is used only for compression
+   * levels >= 4.
+   */
+  // That's alias to max_lazy_match, don't use directly
+  //this.max_insert_length = 0;
+  /* Insert new strings in the hash table only if the match length is not
+   * greater than this length. This saves time but degrades compression.
+   * max_insert_length is used only for compression levels <= 3.
+   */
+
+  this.level = 0;     /* compression level (1..9) */
+  this.strategy = 0;  /* favor or force Huffman coding*/
+
+  this.good_match = 0;
+  /* Use a faster search when the previous match is longer than this */
+
+  this.nice_match = 0; /* Stop searching when current match exceeds this */
+
+              /* used by trees.c: */
+
+  /* Didn't use ct_data typedef below to suppress compiler warning */
+
+  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */
+  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
+  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */
+
+  // Use flat array of DOUBLE size, with interleaved fata,
+  // because JS does not support effective
+  this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);
+  this.dyn_dtree  = new utils.Buf16((2 * D_CODES + 1) * 2);
+  this.bl_tree    = new utils.Buf16((2 * BL_CODES + 1) * 2);
+  zero(this.dyn_ltree);
+  zero(this.dyn_dtree);
+  zero(this.bl_tree);
+
+  this.l_desc   = null;         /* desc. for literal tree */
+  this.d_desc   = null;         /* desc. for distance tree */
+  this.bl_desc  = null;         /* desc. for bit length tree */
+
+  //ush bl_count[MAX_BITS+1];
+  this.bl_count = new utils.Buf16(MAX_BITS + 1);
+  /* number of codes at each bit length for an optimal tree */
+
+  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */
+  this.heap = new utils.Buf16(2 * L_CODES + 1);  /* heap used to build the Huffman trees */
+  zero(this.heap);
+
+  this.heap_len = 0;               /* number of elements in the heap */
+  this.heap_max = 0;               /* element of largest frequency */
+  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
+   * The same heap array is used to build all trees.
+   */
+
+  this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];
+  zero(this.depth);
+  /* Depth of each subtree used as tie breaker for trees of equal frequency
+   */
+
+  this.l_buf = 0;          /* buffer index for literals or lengths */
+
+  this.lit_bufsize = 0;
+  /* Size of match buffer for literals/lengths.  There are 4 reasons for
+   * limiting lit_bufsize to 64K:
+   *   - frequencies can be kept in 16 bit counters
+   *   - if compression is not successful for the first block, all input
+   *     data is still in the window so we can still emit a stored block even
+   *     when input comes from standard input.  (This can also be done for
+   *     all blocks if lit_bufsize is not greater than 32K.)
+   *   - if compression is not successful for a file smaller than 64K, we can
+   *     even emit a stored file instead of a stored block (saving 5 bytes).
+   *     This is applicable only for zip (not gzip or zlib).
+   *   - creating new Huffman trees less frequently may not provide fast
+   *     adaptation to changes in the input data statistics. (Take for
+   *     example a binary file with poorly compressible code followed by
+   *     a highly compressible string table.) Smaller buffer sizes give
+   *     fast adaptation but have of course the overhead of transmitting
+   *     trees more frequently.
+   *   - I can't count above 4
+   */
+
+  this.last_lit = 0;      /* running index in l_buf */
+
+  this.d_buf = 0;
+  /* Buffer index for distances. To simplify the code, d_buf and l_buf have
+   * the same number of elements. To use different lengths, an extra flag
+   * array would be necessary.
+   */
+
+  this.opt_len = 0;       /* bit length of current block with optimal trees */
+  this.static_len = 0;    /* bit length of current block with static trees */
+  this.matches = 0;       /* number of string matches in current block */
+  this.insert = 0;        /* bytes at end of window left to insert */
+
+
+  this.bi_buf = 0;
+  /* Output buffer. bits are inserted starting at the bottom (least
+   * significant bits).
+   */
+  this.bi_valid = 0;
+  /* Number of valid bits in bi_buf.  All bits above the last valid bit
+   * are always zero.
+   */
+
+  // Used for window memory init. We safely ignore it for JS. That makes
+  // sense only for pointers and memory check tools.
+  //this.high_water = 0;
+  /* High water mark offset in window for initialized bytes -- bytes above
+   * this are set to zero in order to avoid memory check warnings when
+   * longest match routines access bytes past the input.  This is then
+   * updated to the new high water mark.
+   */
+}
+
+
+function deflateResetKeep(strm) {
+  var s;
+
+  if (!strm || !strm.state) {
+    return err(strm, Z_STREAM_ERROR);
+  }
+
+  strm.total_in = strm.total_out = 0;
+  strm.data_type = Z_UNKNOWN;
+
+  s = strm.state;
+  s.pending = 0;
+  s.pending_out = 0;
+
+  if (s.wrap < 0) {
+    s.wrap = -s.wrap;
+    /* was made negative by deflate(..., Z_FINISH); */
+  }
+  s.status = (s.wrap ? INIT_STATE : BUSY_STATE);
+  strm.adler = (s.wrap === 2) ?
+    0  // crc32(0, Z_NULL, 0)
+  :
+    1; // adler32(0, Z_NULL, 0)
+  s.last_flush = Z_NO_FLUSH;
+  trees._tr_init(s);
+  return Z_OK;
+}
+
+
+function deflateReset(strm) {
+  var ret = deflateResetKeep(strm);
+  if (ret === Z_OK) {
+    lm_init(strm.state);
+  }
+  return ret;
+}
+
+
+function deflateSetHeader(strm, head) {
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }
+  strm.state.gzhead = head;
+  return Z_OK;
+}
+
+
+function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {
+  if (!strm) { // === Z_NULL
+    return Z_STREAM_ERROR;
+  }
+  var wrap = 1;
+
+  if (level === Z_DEFAULT_COMPRESSION) {
+    level = 6;
+  }
+
+  if (windowBits < 0) { /* suppress zlib wrapper */
+    wrap = 0;
+    windowBits = -windowBits;
+  }
+
+  else if (windowBits > 15) {
+    wrap = 2;           /* write gzip wrapper instead */
+    windowBits -= 16;
+  }
+
+
+  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||
+    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
+    strategy < 0 || strategy > Z_FIXED) {
+    return err(strm, Z_STREAM_ERROR);
+  }
+
+
+  if (windowBits === 8) {
+    windowBits = 9;
+  }
+  /* until 256-byte window bug fixed */
+
+  var s = new DeflateState();
+
+  strm.state = s;
+  s.strm = strm;
+
+  s.wrap = wrap;
+  s.gzhead = null;
+  s.w_bits = windowBits;
+  s.w_size = 1 << s.w_bits;
+  s.w_mask = s.w_size - 1;
+
+  s.hash_bits = memLevel + 7;
+  s.hash_size = 1 << s.hash_bits;
+  s.hash_mask = s.hash_size - 1;
+  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);
+
+  s.window = new utils.Buf8(s.w_size * 2);
+  s.head = new utils.Buf16(s.hash_size);
+  s.prev = new utils.Buf16(s.w_size);
+
+  // Don't need mem init magic for JS.
+  //s.high_water = 0;  /* nothing written to s->window yet */
+
+  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
+
+  s.pending_buf_size = s.lit_bufsize * 4;
+
+  //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
+  //s->pending_buf = (uchf *) overlay;
+  s.pending_buf = new utils.Buf8(s.pending_buf_size);
+
+  // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)
+  //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
+  s.d_buf = 1 * s.lit_bufsize;
+
+  //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
+  s.l_buf = (1 + 2) * s.lit_bufsize;
+
+  s.level = level;
+  s.strategy = strategy;
+  s.method = method;
+
+  return deflateReset(strm);
+}
+
+function deflateInit(strm, level) {
+  return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);
+}
+
+
+function deflate(strm, flush) {
+  var old_flush, s;
+  var beg, val; // for gzip header write only
+
+  if (!strm || !strm.state ||
+    flush > Z_BLOCK || flush < 0) {
+    return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;
+  }
+
+  s = strm.state;
+
+  if (!strm.output ||
+      (!strm.input && strm.avail_in !== 0) ||
+      (s.status === FINISH_STATE && flush !== Z_FINISH)) {
+    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);
+  }
+
+  s.strm = strm; /* just in case */
+  old_flush = s.last_flush;
+  s.last_flush = flush;
+
+  /* Write the header */
+  if (s.status === INIT_STATE) {
+
+    if (s.wrap === 2) { // GZIP header
+      strm.adler = 0;  //crc32(0L, Z_NULL, 0);
+      put_byte(s, 31);
+      put_byte(s, 139);
+      put_byte(s, 8);
+      if (!s.gzhead) { // s->gzhead == Z_NULL
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, 0);
+        put_byte(s, s.level === 9 ? 2 :
+                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
+                     4 : 0));
+        put_byte(s, OS_CODE);
+        s.status = BUSY_STATE;
+      }
+      else {
+        put_byte(s, (s.gzhead.text ? 1 : 0) +
+                    (s.gzhead.hcrc ? 2 : 0) +
+                    (!s.gzhead.extra ? 0 : 4) +
+                    (!s.gzhead.name ? 0 : 8) +
+                    (!s.gzhead.comment ? 0 : 16)
+                );
+        put_byte(s, s.gzhead.time & 0xff);
+        put_byte(s, (s.gzhead.time >> 8) & 0xff);
+        put_byte(s, (s.gzhead.time >> 16) & 0xff);
+        put_byte(s, (s.gzhead.time >> 24) & 0xff);
+        put_byte(s, s.level === 9 ? 2 :
+                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
+                     4 : 0));
+        put_byte(s, s.gzhead.os & 0xff);
+        if (s.gzhead.extra && s.gzhead.extra.length) {
+          put_byte(s, s.gzhead.extra.length & 0xff);
+          put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);
+        }
+        if (s.gzhead.hcrc) {
+          strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);
+        }
+        s.gzindex = 0;
+        s.status = EXTRA_STATE;
+      }
+    }
+    else // DEFLATE header
+    {
+      var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;
+      var level_flags = -1;
+
+      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {
+        level_flags = 0;
+      } else if (s.level < 6) {
+        level_flags = 1;
+      } else if (s.level === 6) {
+        level_flags = 2;
+      } else {
+        level_flags = 3;
+      }
+      header |= (level_flags << 6);
+      if (s.strstart !== 0) { header |= PRESET_DICT; }
+      header += 31 - (header % 31);
+
+      s.status = BUSY_STATE;
+      putShortMSB(s, header);
+
+      /* Save the adler32 of the preset dictionary: */
+      if (s.strstart !== 0) {
+        putShortMSB(s, strm.adler >>> 16);
+        putShortMSB(s, strm.adler & 0xffff);
+      }
+      strm.adler = 1; // adler32(0L, Z_NULL, 0);
+    }
+  }
+
+//#ifdef GZIP
+  if (s.status === EXTRA_STATE) {
+    if (s.gzhead.extra/* != Z_NULL*/) {
+      beg = s.pending;  /* start of bytes to update crc */
+
+      while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {
+        if (s.pending === s.pending_buf_size) {
+          if (s.gzhead.hcrc && s.pending > beg) {
+            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+          }
+          flush_pending(strm);
+          beg = s.pending;
+          if (s.pending === s.pending_buf_size) {
+            break;
+          }
+        }
+        put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);
+        s.gzindex++;
+      }
+      if (s.gzhead.hcrc && s.pending > beg) {
+        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+      }
+      if (s.gzindex === s.gzhead.extra.length) {
+        s.gzindex = 0;
+        s.status = NAME_STATE;
+      }
+    }
+    else {
+      s.status = NAME_STATE;
+    }
+  }
+  if (s.status === NAME_STATE) {
+    if (s.gzhead.name/* != Z_NULL*/) {
+      beg = s.pending;  /* start of bytes to update crc */
+      //int val;
+
+      do {
+        if (s.pending === s.pending_buf_size) {
+          if (s.gzhead.hcrc && s.pending > beg) {
+            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+          }
+          flush_pending(strm);
+          beg = s.pending;
+          if (s.pending === s.pending_buf_size) {
+            val = 1;
+            break;
+          }
+        }
+        // JS specific: little magic to add zero terminator to end of string
+        if (s.gzindex < s.gzhead.name.length) {
+          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;
+        } else {
+          val = 0;
+        }
+        put_byte(s, val);
+      } while (val !== 0);
+
+      if (s.gzhead.hcrc && s.pending > beg) {
+        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+      }
+      if (val === 0) {
+        s.gzindex = 0;
+        s.status = COMMENT_STATE;
+      }
+    }
+    else {
+      s.status = COMMENT_STATE;
+    }
+  }
+  if (s.status === COMMENT_STATE) {
+    if (s.gzhead.comment/* != Z_NULL*/) {
+      beg = s.pending;  /* start of bytes to update crc */
+      //int val;
+
+      do {
+        if (s.pending === s.pending_buf_size) {
+          if (s.gzhead.hcrc && s.pending > beg) {
+            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+          }
+          flush_pending(strm);
+          beg = s.pending;
+          if (s.pending === s.pending_buf_size) {
+            val = 1;
+            break;
+          }
+        }
+        // JS specific: little magic to add zero terminator to end of string
+        if (s.gzindex < s.gzhead.comment.length) {
+          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;
+        } else {
+          val = 0;
+        }
+        put_byte(s, val);
+      } while (val !== 0);
+
+      if (s.gzhead.hcrc && s.pending > beg) {
+        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
+      }
+      if (val === 0) {
+        s.status = HCRC_STATE;
+      }
+    }
+    else {
+      s.status = HCRC_STATE;
+    }
+  }
+  if (s.status === HCRC_STATE) {
+    if (s.gzhead.hcrc) {
+      if (s.pending + 2 > s.pending_buf_size) {
+        flush_pending(strm);
+      }
+      if (s.pending + 2 <= s.pending_buf_size) {
+        put_byte(s, strm.adler & 0xff);
+        put_byte(s, (strm.adler >> 8) & 0xff);
+        strm.adler = 0; //crc32(0L, Z_NULL, 0);
+        s.status = BUSY_STATE;
+      }
+    }
+    else {
+      s.status = BUSY_STATE;
+    }
+  }
+//#endif
+
+  /* Flush as much pending output as possible */
+  if (s.pending !== 0) {
+    flush_pending(strm);
+    if (strm.avail_out === 0) {
+      /* Since avail_out is 0, deflate will be called again with
+       * more output space, but possibly with both pending and
+       * avail_in equal to zero. There won't be anything to do,
+       * but this is not an error situation so make sure we
+       * return OK instead of BUF_ERROR at next call of deflate:
+       */
+      s.last_flush = -1;
+      return Z_OK;
+    }
+
+    /* Make sure there is something to do and avoid duplicate consecutive
+     * flushes. For repeated and useless calls with Z_FINISH, we keep
+     * returning Z_STREAM_END instead of Z_BUF_ERROR.
+     */
+  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&
+    flush !== Z_FINISH) {
+    return err(strm, Z_BUF_ERROR);
+  }
+
+  /* User must not provide more input after the first FINISH: */
+  if (s.status === FINISH_STATE && strm.avail_in !== 0) {
+    return err(strm, Z_BUF_ERROR);
+  }
+
+  /* Start a new block or continue the current one.
+   */
+  if (strm.avail_in !== 0 || s.lookahead !== 0 ||
+    (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {
+    var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :
+      (s.strategy === Z_RLE ? deflate_rle(s, flush) :
+        configuration_table[s.level].func(s, flush));
+
+    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {
+      s.status = FINISH_STATE;
+    }
+    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {
+      if (strm.avail_out === 0) {
+        s.last_flush = -1;
+        /* avoid BUF_ERROR next call, see above */
+      }
+      return Z_OK;
+      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
+       * of deflate should use the same flush parameter to make sure
+       * that the flush is complete. So we don't have to output an
+       * empty block here, this will be done at next call. This also
+       * ensures that for a very small output buffer, we emit at most
+       * one empty block.
+       */
+    }
+    if (bstate === BS_BLOCK_DONE) {
+      if (flush === Z_PARTIAL_FLUSH) {
+        trees._tr_align(s);
+      }
+      else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */
+
+        trees._tr_stored_block(s, 0, 0, false);
+        /* For a full flush, this empty block will be recognized
+         * as a special marker by inflate_sync().
+         */
+        if (flush === Z_FULL_FLUSH) {
+          /*** CLEAR_HASH(s); ***/             /* forget history */
+          zero(s.head); // Fill with NIL (= 0);
+
+          if (s.lookahead === 0) {
+            s.strstart = 0;
+            s.block_start = 0;
+            s.insert = 0;
+          }
+        }
+      }
+      flush_pending(strm);
+      if (strm.avail_out === 0) {
+        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */
+        return Z_OK;
+      }
+    }
+  }
+  //Assert(strm->avail_out > 0, "bug2");
+  //if (strm.avail_out <= 0) { throw new Error("bug2");}
+
+  if (flush !== Z_FINISH) { return Z_OK; }
+  if (s.wrap <= 0) { return Z_STREAM_END; }
+
+  /* Write the trailer */
+  if (s.wrap === 2) {
+    put_byte(s, strm.adler & 0xff);
+    put_byte(s, (strm.adler >> 8) & 0xff);
+    put_byte(s, (strm.adler >> 16) & 0xff);
+    put_byte(s, (strm.adler >> 24) & 0xff);
+    put_byte(s, strm.total_in & 0xff);
+    put_byte(s, (strm.total_in >> 8) & 0xff);
+    put_byte(s, (strm.total_in >> 16) & 0xff);
+    put_byte(s, (strm.total_in >> 24) & 0xff);
+  }
+  else
+  {
+    putShortMSB(s, strm.adler >>> 16);
+    putShortMSB(s, strm.adler & 0xffff);
+  }
+
+  flush_pending(strm);
+  /* If avail_out is zero, the application will call deflate again
+   * to flush the rest.
+   */
+  if (s.wrap > 0) { s.wrap = -s.wrap; }
+  /* write the trailer only once! */
+  return s.pending !== 0 ? Z_OK : Z_STREAM_END;
+}
+
+function deflateEnd(strm) {
+  var status;
+
+  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
+    return Z_STREAM_ERROR;
+  }
+
+  status = strm.state.status;
+  if (status !== INIT_STATE &&
+    status !== EXTRA_STATE &&
+    status !== NAME_STATE &&
+    status !== COMMENT_STATE &&
+    status !== HCRC_STATE &&
+    status !== BUSY_STATE &&
+    status !== FINISH_STATE
+  ) {
+    return err(strm, Z_STREAM_ERROR);
+  }
+
+  strm.state = null;
+
+  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;
+}
+
+
+/* =========================================================================
+ * Initializes the compression dictionary from the given byte
+ * sequence without producing any compressed output.
+ */
+function deflateSetDictionary(strm, dictionary) {
+  var dictLength = dictionary.length;
+
+  var s;
+  var str, n;
+  var wrap;
+  var avail;
+  var next;
+  var input;
+  var tmpDict;
+
+  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
+    return Z_STREAM_ERROR;
+  }
+
+  s = strm.state;
+  wrap = s.wrap;
+
+  if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {
+    return Z_STREAM_ERROR;
+  }
+
+  /* when using zlib wrappers, compute Adler-32 for provided dictionary */
+  if (wrap === 1) {
+    /* adler32(strm->adler, dictionary, dictLength); */
+    strm.adler = adler32(strm.adler, dictionary, dictLength, 0);
+  }
+
+  s.wrap = 0;   /* avoid computing Adler-32 in read_buf */
+
+  /* if dictionary would fill window, just replace the history */
+  if (dictLength >= s.w_size) {
+    if (wrap === 0) {            /* already empty otherwise */
+      /*** CLEAR_HASH(s); ***/
+      zero(s.head); // Fill with NIL (= 0);
+      s.strstart = 0;
+      s.block_start = 0;
+      s.insert = 0;
+    }
+    /* use the tail */
+    // dictionary = dictionary.slice(dictLength - s.w_size);
+    tmpDict = new utils.Buf8(s.w_size);
+    utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);
+    dictionary = tmpDict;
+    dictLength = s.w_size;
+  }
+  /* insert dictionary into window and hash */
+  avail = strm.avail_in;
+  next = strm.next_in;
+  input = strm.input;
+  strm.avail_in = dictLength;
+  strm.next_in = 0;
+  strm.input = dictionary;
+  fill_window(s);
+  while (s.lookahead >= MIN_MATCH) {
+    str = s.strstart;
+    n = s.lookahead - (MIN_MATCH - 1);
+    do {
+      /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
+      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;
+
+      s.prev[str & s.w_mask] = s.head[s.ins_h];
+
+      s.head[s.ins_h] = str;
+      str++;
+    } while (--n);
+    s.strstart = str;
+    s.lookahead = MIN_MATCH - 1;
+    fill_window(s);
+  }
+  s.strstart += s.lookahead;
+  s.block_start = s.strstart;
+  s.insert = s.lookahead;
+  s.lookahead = 0;
+  s.match_length = s.prev_length = MIN_MATCH - 1;
+  s.match_available = 0;
+  strm.next_in = next;
+  strm.input = input;
+  strm.avail_in = avail;
+  s.wrap = wrap;
+  return Z_OK;
+}
+
+
+exports.deflateInit = deflateInit;
+exports.deflateInit2 = deflateInit2;
+exports.deflateReset = deflateReset;
+exports.deflateResetKeep = deflateResetKeep;
+exports.deflateSetHeader = deflateSetHeader;
+exports.deflate = deflate;
+exports.deflateEnd = deflateEnd;
+exports.deflateSetDictionary = deflateSetDictionary;
+exports.deflateInfo = 'pako deflate (from Nodeca project)';
+
+/* Not implemented
+exports.deflateBound = deflateBound;
+exports.deflateCopy = deflateCopy;
+exports.deflateParams = deflateParams;
+exports.deflatePending = deflatePending;
+exports.deflatePrime = deflatePrime;
+exports.deflateTune = deflateTune;
+*/
+
+},{"../utils/common":39,"./adler32":41,"./crc32":43,"./messages":49,"./trees":50}],45:[function(require,module,exports){
+'use strict';
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+function GZheader() {
+  /* true if compressed data believed to be text */
+  this.text       = 0;
+  /* modification time */
+  this.time       = 0;
+  /* extra flags (not used when writing a gzip file) */
+  this.xflags     = 0;
+  /* operating system */
+  this.os         = 0;
+  /* pointer to extra field or Z_NULL if none */
+  this.extra      = null;
+  /* extra field length (valid if extra != Z_NULL) */
+  this.extra_len  = 0; // Actually, we don't need it in JS,
+                       // but leave for few code modifications
+
+  //
+  // Setup limits is not necessary because in js we should not preallocate memory
+  // for inflate use constant limit in 65536 bytes
+  //
+
+  /* space at extra (only when reading header) */
+  // this.extra_max  = 0;
+  /* pointer to zero-terminated file name or Z_NULL */
+  this.name       = '';
+  /* space at name (only when reading header) */
+  // this.name_max   = 0;
+  /* pointer to zero-terminated comment or Z_NULL */
+  this.comment    = '';
+  /* space at comment (only when reading header) */
+  // this.comm_max   = 0;
+  /* true if there was or will be a header crc */
+  this.hcrc       = 0;
+  /* true when done reading gzip header (not used when writing a gzip file) */
+  this.done       = false;
+}
+
+module.exports = GZheader;
+
+},{}],46:[function(require,module,exports){
+'use strict';
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+// See state defs from inflate.js
+var BAD = 30;       /* got a data error -- remain here until reset */
+var TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
+
+/*
+   Decode literal, length, and distance codes and write out the resulting
+   literal and match bytes until either not enough input or output is
+   available, an end-of-block is encountered, or a data error is encountered.
+   When large enough input and output buffers are supplied to inflate(), for
+   example, a 16K input buffer and a 64K output buffer, more than 95% of the
+   inflate execution time is spent in this routine.
+
+   Entry assumptions:
+
+        state.mode === LEN
+        strm.avail_in >= 6
+        strm.avail_out >= 258
+        start >= strm.avail_out
+        state.bits < 8
+
+   On return, state.mode is one of:
+
+        LEN -- ran out of enough output space or enough available input
+        TYPE -- reached end of block code, inflate() to interpret next block
+        BAD -- error in block data
+
+   Notes:
+
+    - The maximum input bits used by a length/distance pair is 15 bits for the
+      length code, 5 bits for the length extra, 15 bits for the distance code,
+      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
+      Therefore if strm.avail_in >= 6, then there is enough input to avoid
+      checking for available input while decoding.
+
+    - The maximum bytes that a single length/distance pair can output is 258
+      bytes, which is the maximum length that can be coded.  inflate_fast()
+      requires strm.avail_out >= 258 for each loop to avoid checking for
+      output space.
+ */
+module.exports = function inflate_fast(strm, start) {
+  var state;
+  var _in;                    /* local strm.input */
+  var last;                   /* have enough input while in < last */
+  var _out;                   /* local strm.output */
+  var beg;                    /* inflate()'s initial strm.output */
+  var end;                    /* while out < end, enough space available */
+//#ifdef INFLATE_STRICT
+  var dmax;                   /* maximum distance from zlib header */
+//#endif
+  var wsize;                  /* window size or zero if not using window */
+  var whave;                  /* valid bytes in the window */
+  var wnext;                  /* window write index */
+  // Use `s_window` instead `window`, avoid conflict with instrumentation tools
+  var s_window;               /* allocated sliding window, if wsize != 0 */
+  var hold;                   /* local strm.hold */
+  var bits;                   /* local strm.bits */
+  var lcode;                  /* local strm.lencode */
+  var dcode;                  /* local strm.distcode */
+  var lmask;                  /* mask for first level of length codes */
+  var dmask;                  /* mask for first level of distance codes */
+  var here;                   /* retrieved table entry */
+  var op;                     /* code bits, operation, extra bits, or */
+                              /*  window position, window bytes to copy */
+  var len;                    /* match length, unused bytes */
+  var dist;                   /* match distance */
+  var from;                   /* where to copy match from */
+  var from_source;
+
+
+  var input, output; // JS specific, because we have no pointers
+
+  /* copy state to local variables */
+  state = strm.state;
+  //here = state.here;
+  _in = strm.next_in;
+  input = strm.input;
+  last = _in + (strm.avail_in - 5);
+  _out = strm.next_out;
+  output = strm.output;
+  beg = _out - (start - strm.avail_out);
+  end = _out + (strm.avail_out - 257);
+//#ifdef INFLATE_STRICT
+  dmax = state.dmax;
+//#endif
+  wsize = state.wsize;
+  whave = state.whave;
+  wnext = state.wnext;
+  s_window = state.window;
+  hold = state.hold;
+  bits = state.bits;
+  lcode = state.lencode;
+  dcode = state.distcode;
+  lmask = (1 << state.lenbits) - 1;
+  dmask = (1 << state.distbits) - 1;
+
+
+  /* decode literals and length/distances until end-of-block or not enough
+     input data or output space */
+
+  top:
+  do {
+    if (bits < 15) {
+      hold += input[_in++] << bits;
+      bits += 8;
+      hold += input[_in++] << bits;
+      bits += 8;
+    }
+
+    here = lcode[hold & lmask];
+
+    dolen:
+    for (;;) { // Goto emulation
+      op = here >>> 24/*here.bits*/;
+      hold >>>= op;
+      bits -= op;
+      op = (here >>> 16) & 0xff/*here.op*/;
+      if (op === 0) {                          /* literal */
+        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+        //        "inflate:         literal '%c'\n" :
+        //        "inflate:         literal 0x%02x\n", here.val));
+        output[_out++] = here & 0xffff/*here.val*/;
+      }
+      else if (op & 16) {                     /* length base */
+        len = here & 0xffff/*here.val*/;
+        op &= 15;                           /* number of extra bits */
+        if (op) {
+          if (bits < op) {
+            hold += input[_in++] << bits;
+            bits += 8;
+          }
+          len += hold & ((1 << op) - 1);
+          hold >>>= op;
+          bits -= op;
+        }
+        //Tracevv((stderr, "inflate:         length %u\n", len));
+        if (bits < 15) {
+          hold += input[_in++] << bits;
+          bits += 8;
+          hold += input[_in++] << bits;
+          bits += 8;
+        }
+        here = dcode[hold & dmask];
+
+        dodist:
+        for (;;) { // goto emulation
+          op = here >>> 24/*here.bits*/;
+          hold >>>= op;
+          bits -= op;
+          op = (here >>> 16) & 0xff/*here.op*/;
+
+          if (op & 16) {                      /* distance base */
+            dist = here & 0xffff/*here.val*/;
+            op &= 15;                       /* number of extra bits */
+            if (bits < op) {
+              hold += input[_in++] << bits;
+              bits += 8;
+              if (bits < op) {
+                hold += input[_in++] << bits;
+                bits += 8;
+              }
+            }
+            dist += hold & ((1 << op) - 1);
+//#ifdef INFLATE_STRICT
+            if (dist > dmax) {
+              strm.msg = 'invalid distance too far back';
+              state.mode = BAD;
+              break top;
+            }
+//#endif
+            hold >>>= op;
+            bits -= op;
+            //Tracevv((stderr, "inflate:         distance %u\n", dist));
+            op = _out - beg;                /* max distance in output */
+            if (dist > op) {                /* see if copy from window */
+              op = dist - op;               /* distance back in window */
+              if (op > whave) {
+                if (state.sane) {
+                  strm.msg = 'invalid distance too far back';
+                  state.mode = BAD;
+                  break top;
+                }
+
+// (!) This block is disabled in zlib defaults,
+// don't enable it for binary compatibility
+//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+//                if (len <= op - whave) {
+//                  do {
+//                    output[_out++] = 0;
+//                  } while (--len);
+//                  continue top;
+//                }
+//                len -= op - whave;
+//                do {
+//                  output[_out++] = 0;
+//                } while (--op > whave);
+//                if (op === 0) {
+//                  from = _out - dist;
+//                  do {
+//                    output[_out++] = output[from++];
+//                  } while (--len);
+//                  continue top;
+//                }
+//#endif
+              }
+              from = 0; // window index
+              from_source = s_window;
+              if (wnext === 0) {           /* very common case */
+                from += wsize - op;
+                if (op < len) {         /* some from window */
+                  len -= op;
+                  do {
+                    output[_out++] = s_window[from++];
+                  } while (--op);
+                  from = _out - dist;  /* rest from output */
+                  from_source = output;
+                }
+              }
+              else if (wnext < op) {      /* wrap around window */
+                from += wsize + wnext - op;
+                op -= wnext;
+                if (op < len) {         /* some from end of window */
+                  len -= op;
+                  do {
+                    output[_out++] = s_window[from++];
+                  } while (--op);
+                  from = 0;
+                  if (wnext < len) {  /* some from start of window */
+                    op = wnext;
+                    len -= op;
+                    do {
+                      output[_out++] = s_window[from++];
+                    } while (--op);
+                    from = _out - dist;      /* rest from output */
+                    from_source = output;
+                  }
+                }
+              }
+              else {                      /* contiguous in window */
+                from += wnext - op;
+                if (op < len) {         /* some from window */
+                  len -= op;
+                  do {
+                    output[_out++] = s_window[from++];
+                  } while (--op);
+                  from = _out - dist;  /* rest from output */
+                  from_source = output;
+                }
+              }
+              while (len > 2) {
+                output[_out++] = from_source[from++];
+                output[_out++] = from_source[from++];
+                output[_out++] = from_source[from++];
+                len -= 3;
+              }
+              if (len) {
+                output[_out++] = from_source[from++];
+                if (len > 1) {
+                  output[_out++] = from_source[from++];
+                }
+              }
+            }
+            else {
+              from = _out - dist;          /* copy direct from output */
+              do {                        /* minimum length is three */
+                output[_out++] = output[from++];
+                output[_out++] = output[from++];
+                output[_out++] = output[from++];
+                len -= 3;
+              } while (len > 2);
+              if (len) {
+                output[_out++] = output[from++];
+                if (len > 1) {
+                  output[_out++] = output[from++];
+                }
+              }
+            }
+          }
+          else if ((op & 64) === 0) {          /* 2nd level distance code */
+            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
+            continue dodist;
+          }
+          else {
+            strm.msg = 'invalid distance code';
+            state.mode = BAD;
+            break top;
+          }
+
+          break; // need to emulate goto via "continue"
+        }
+      }
+      else if ((op & 64) === 0) {              /* 2nd level length code */
+        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
+        continue dolen;
+      }
+      else if (op & 32) {                     /* end-of-block */
+        //Tracevv((stderr, "inflate:         end of block\n"));
+        state.mode = TYPE;
+        break top;
+      }
+      else {
+        strm.msg = 'invalid literal/length code';
+        state.mode = BAD;
+        break top;
+      }
+
+      break; // need to emulate goto via "continue"
+    }
+  } while (_in < last && _out < end);
+
+  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
+  len = bits >> 3;
+  _in -= len;
+  bits -= len << 3;
+  hold &= (1 << bits) - 1;
+
+  /* update state and return */
+  strm.next_in = _in;
+  strm.next_out = _out;
+  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));
+  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));
+  state.hold = hold;
+  state.bits = bits;
+  return;
+};
+
+},{}],47:[function(require,module,exports){
+'use strict';
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+var utils         = require('../utils/common');
+var adler32       = require('./adler32');
+var crc32         = require('./crc32');
+var inflate_fast  = require('./inffast');
+var inflate_table = require('./inftrees');
+
+var CODES = 0;
+var LENS = 1;
+var DISTS = 2;
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+/* Allowed flush values; see deflate() and inflate() below for details */
+//var Z_NO_FLUSH      = 0;
+//var Z_PARTIAL_FLUSH = 1;
+//var Z_SYNC_FLUSH    = 2;
+//var Z_FULL_FLUSH    = 3;
+var Z_FINISH        = 4;
+var Z_BLOCK         = 5;
+var Z_TREES         = 6;
+
+
+/* Return codes for the compression/decompression functions. Negative values
+ * are errors, positive values are used for special but normal events.
+ */
+var Z_OK            = 0;
+var Z_STREAM_END    = 1;
+var Z_NEED_DICT     = 2;
+//var Z_ERRNO         = -1;
+var Z_STREAM_ERROR  = -2;
+var Z_DATA_ERROR    = -3;
+var Z_MEM_ERROR     = -4;
+var Z_BUF_ERROR     = -5;
+//var Z_VERSION_ERROR = -6;
+
+/* The deflate compression method */
+var Z_DEFLATED  = 8;
+
+
+/* STATES ====================================================================*/
+/* ===========================================================================*/
+
+
+var    HEAD = 1;       /* i: waiting for magic header */
+var    FLAGS = 2;      /* i: waiting for method and flags (gzip) */
+var    TIME = 3;       /* i: waiting for modification time (gzip) */
+var    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */
+var    EXLEN = 5;      /* i: waiting for extra length (gzip) */
+var    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */
+var    NAME = 7;       /* i: waiting for end of file name (gzip) */
+var    COMMENT = 8;    /* i: waiting for end of comment (gzip) */
+var    HCRC = 9;       /* i: waiting for header crc (gzip) */
+var    DICTID = 10;    /* i: waiting for dictionary check value */
+var    DICT = 11;      /* waiting for inflateSetDictionary() call */
+var        TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
+var        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */
+var        STORED = 14;    /* i: waiting for stored size (length and complement) */
+var        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */
+var        COPY = 16;      /* i/o: waiting for input or output to copy stored block */
+var        TABLE = 17;     /* i: waiting for dynamic block table lengths */
+var        LENLENS = 18;   /* i: waiting for code length code lengths */
+var        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */
+var            LEN_ = 20;      /* i: same as LEN below, but only first time in */
+var            LEN = 21;       /* i: waiting for length/lit/eob code */
+var            LENEXT = 22;    /* i: waiting for length extra bits */
+var            DIST = 23;      /* i: waiting for distance code */
+var            DISTEXT = 24;   /* i: waiting for distance extra bits */
+var            MATCH = 25;     /* o: waiting for output space to copy string */
+var            LIT = 26;       /* o: waiting for output space to write literal */
+var    CHECK = 27;     /* i: waiting for 32-bit check value */
+var    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */
+var    DONE = 29;      /* finished check, done -- remain here until reset */
+var    BAD = 30;       /* got a data error -- remain here until reset */
+var    MEM = 31;       /* got an inflate() memory error -- remain here until reset */
+var    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */
+
+/* ===========================================================================*/
+
+
+
+var ENOUGH_LENS = 852;
+var ENOUGH_DISTS = 592;
+//var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);
+
+var MAX_WBITS = 15;
+/* 32K LZ77 window */
+var DEF_WBITS = MAX_WBITS;
+
+
+function zswap32(q) {
+  return  (((q >>> 24) & 0xff) +
+          ((q >>> 8) & 0xff00) +
+          ((q & 0xff00) << 8) +
+          ((q & 0xff) << 24));
+}
+
+
+function InflateState() {
+  this.mode = 0;             /* current inflate mode */
+  this.last = false;          /* true if processing last block */
+  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
+  this.havedict = false;      /* true if dictionary provided */
+  this.flags = 0;             /* gzip header method and flags (0 if zlib) */
+  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */
+  this.check = 0;             /* protected copy of check value */
+  this.total = 0;             /* protected copy of output count */
+  // TODO: may be {}
+  this.head = null;           /* where to save gzip header information */
+
+  /* sliding window */
+  this.wbits = 0;             /* log base 2 of requested window size */
+  this.wsize = 0;             /* window size or zero if not using window */
+  this.whave = 0;             /* valid bytes in the window */
+  this.wnext = 0;             /* window write index */
+  this.window = null;         /* allocated sliding window, if needed */
+
+  /* bit accumulator */
+  this.hold = 0;              /* input bit accumulator */
+  this.bits = 0;              /* number of bits in "in" */
+
+  /* for string and stored block copying */
+  this.length = 0;            /* literal or length of data to copy */
+  this.offset = 0;            /* distance back to copy string from */
+
+  /* for table and code decoding */
+  this.extra = 0;             /* extra bits needed */
+
+  /* fixed and dynamic code tables */
+  this.lencode = null;          /* starting table for length/literal codes */
+  this.distcode = null;         /* starting table for distance codes */
+  this.lenbits = 0;           /* index bits for lencode */
+  this.distbits = 0;          /* index bits for distcode */
+
+  /* dynamic table building */
+  this.ncode = 0;             /* number of code length code lengths */
+  this.nlen = 0;              /* number of length code lengths */
+  this.ndist = 0;             /* number of distance code lengths */
+  this.have = 0;              /* number of code lengths in lens[] */
+  this.next = null;              /* next available space in codes[] */
+
+  this.lens = new utils.Buf16(320); /* temporary storage for code lengths */
+  this.work = new utils.Buf16(288); /* work area for code table building */
+
+  /*
+   because we don't have pointers in js, we use lencode and distcode directly
+   as buffers so we don't need codes
+  */
+  //this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */
+  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */
+  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */
+  this.sane = 0;                   /* if false, allow invalid distance too far */
+  this.back = 0;                   /* bits back of last unprocessed length/lit */
+  this.was = 0;                    /* initial length of match */
+}
+
+function inflateResetKeep(strm) {
+  var state;
+
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+  strm.total_in = strm.total_out = state.total = 0;
+  strm.msg = ''; /*Z_NULL*/
+  if (state.wrap) {       /* to support ill-conceived Java test suite */
+    strm.adler = state.wrap & 1;
+  }
+  state.mode = HEAD;
+  state.last = 0;
+  state.havedict = 0;
+  state.dmax = 32768;
+  state.head = null/*Z_NULL*/;
+  state.hold = 0;
+  state.bits = 0;
+  //state.lencode = state.distcode = state.next = state.codes;
+  state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);
+  state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);
+
+  state.sane = 1;
+  state.back = -1;
+  //Tracev((stderr, "inflate: reset\n"));
+  return Z_OK;
+}
+
+function inflateReset(strm) {
+  var state;
+
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+  state.wsize = 0;
+  state.whave = 0;
+  state.wnext = 0;
+  return inflateResetKeep(strm);
+
+}
+
+function inflateReset2(strm, windowBits) {
+  var wrap;
+  var state;
+
+  /* get the state */
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+
+  /* extract wrap request from windowBits parameter */
+  if (windowBits < 0) {
+    wrap = 0;
+    windowBits = -windowBits;
+  }
+  else {
+    wrap = (windowBits >> 4) + 1;
+    if (windowBits < 48) {
+      windowBits &= 15;
+    }
+  }
+
+  /* set number of window bits, free window if different */
+  if (windowBits && (windowBits < 8 || windowBits > 15)) {
+    return Z_STREAM_ERROR;
+  }
+  if (state.window !== null && state.wbits !== windowBits) {
+    state.window = null;
+  }
+
+  /* update state and reset the rest of it */
+  state.wrap = wrap;
+  state.wbits = windowBits;
+  return inflateReset(strm);
+}
+
+function inflateInit2(strm, windowBits) {
+  var ret;
+  var state;
+
+  if (!strm) { return Z_STREAM_ERROR; }
+  //strm.msg = Z_NULL;                 /* in case we return an error */
+
+  state = new InflateState();
+
+  //if (state === Z_NULL) return Z_MEM_ERROR;
+  //Tracev((stderr, "inflate: allocated\n"));
+  strm.state = state;
+  state.window = null/*Z_NULL*/;
+  ret = inflateReset2(strm, windowBits);
+  if (ret !== Z_OK) {
+    strm.state = null/*Z_NULL*/;
+  }
+  return ret;
+}
+
+function inflateInit(strm) {
+  return inflateInit2(strm, DEF_WBITS);
+}
+
+
+/*
+ Return state with length and distance decoding tables and index sizes set to
+ fixed code decoding.  Normally this returns fixed tables from inffixed.h.
+ If BUILDFIXED is defined, then instead this routine builds the tables the
+ first time it's called, and returns those tables the first time and
+ thereafter.  This reduces the size of the code by about 2K bytes, in
+ exchange for a little execution time.  However, BUILDFIXED should not be
+ used for threaded applications, since the rewriting of the tables and virgin
+ may not be thread-safe.
+ */
+var virgin = true;
+
+var lenfix, distfix; // We have no pointers in JS, so keep tables separate
+
+function fixedtables(state) {
+  /* build fixed huffman tables if first call (may not be thread safe) */
+  if (virgin) {
+    var sym;
+
+    lenfix = new utils.Buf32(512);
+    distfix = new utils.Buf32(32);
+
+    /* literal/length table */
+    sym = 0;
+    while (sym < 144) { state.lens[sym++] = 8; }
+    while (sym < 256) { state.lens[sym++] = 9; }
+    while (sym < 280) { state.lens[sym++] = 7; }
+    while (sym < 288) { state.lens[sym++] = 8; }
+
+    inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });
+
+    /* distance table */
+    sym = 0;
+    while (sym < 32) { state.lens[sym++] = 5; }
+
+    inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });
+
+    /* do this just once */
+    virgin = false;
+  }
+
+  state.lencode = lenfix;
+  state.lenbits = 9;
+  state.distcode = distfix;
+  state.distbits = 5;
+}
+
+
+/*
+ Update the window with the last wsize (normally 32K) bytes written before
+ returning.  If window does not exist yet, create it.  This is only called
+ when a window is already in use, or when output has been written during this
+ inflate call, but the end of the deflate stream has not been reached yet.
+ It is also called to create a window for dictionary data when a dictionary
+ is loaded.
+
+ Providing output buffers larger than 32K to inflate() should provide a speed
+ advantage, since only the last 32K of output is copied to the sliding window
+ upon return from inflate(), and since all distances after the first 32K of
+ output will fall in the output data, making match copies simpler and faster.
+ The advantage may be dependent on the size of the processor's data caches.
+ */
+function updatewindow(strm, src, end, copy) {
+  var dist;
+  var state = strm.state;
+
+  /* if it hasn't been done already, allocate space for the window */
+  if (state.window === null) {
+    state.wsize = 1 << state.wbits;
+    state.wnext = 0;
+    state.whave = 0;
+
+    state.window = new utils.Buf8(state.wsize);
+  }
+
+  /* copy state->wsize or less output bytes into the circular window */
+  if (copy >= state.wsize) {
+    utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);
+    state.wnext = 0;
+    state.whave = state.wsize;
+  }
+  else {
+    dist = state.wsize - state.wnext;
+    if (dist > copy) {
+      dist = copy;
+    }
+    //zmemcpy(state->window + state->wnext, end - copy, dist);
+    utils.arraySet(state.window, src, end - copy, dist, state.wnext);
+    copy -= dist;
+    if (copy) {
+      //zmemcpy(state->window, end - copy, copy);
+      utils.arraySet(state.window, src, end - copy, copy, 0);
+      state.wnext = copy;
+      state.whave = state.wsize;
+    }
+    else {
+      state.wnext += dist;
+      if (state.wnext === state.wsize) { state.wnext = 0; }
+      if (state.whave < state.wsize) { state.whave += dist; }
+    }
+  }
+  return 0;
+}
+
+function inflate(strm, flush) {
+  var state;
+  var input, output;          // input/output buffers
+  var next;                   /* next input INDEX */
+  var put;                    /* next output INDEX */
+  var have, left;             /* available input and output */
+  var hold;                   /* bit buffer */
+  var bits;                   /* bits in bit buffer */
+  var _in, _out;              /* save starting available input and output */
+  var copy;                   /* number of stored or match bytes to copy */
+  var from;                   /* where to copy match bytes from */
+  var from_source;
+  var here = 0;               /* current decoding table entry */
+  var here_bits, here_op, here_val; // paked "here" denormalized (JS specific)
+  //var last;                   /* parent table entry */
+  var last_bits, last_op, last_val; // paked "last" denormalized (JS specific)
+  var len;                    /* length to copy for repeats, bits to drop */
+  var ret;                    /* return code */
+  var hbuf = new utils.Buf8(4);    /* buffer for gzip header crc calculation */
+  var opts;
+
+  var n; // temporary var for NEED_BITS
+
+  var order = /* permutation of code lengths */
+    [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];
+
+
+  if (!strm || !strm.state || !strm.output ||
+      (!strm.input && strm.avail_in !== 0)) {
+    return Z_STREAM_ERROR;
+  }
+
+  state = strm.state;
+  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */
+
+
+  //--- LOAD() ---
+  put = strm.next_out;
+  output = strm.output;
+  left = strm.avail_out;
+  next = strm.next_in;
+  input = strm.input;
+  have = strm.avail_in;
+  hold = state.hold;
+  bits = state.bits;
+  //---
+
+  _in = have;
+  _out = left;
+  ret = Z_OK;
+
+  inf_leave: // goto emulation
+  for (;;) {
+    switch (state.mode) {
+      case HEAD:
+        if (state.wrap === 0) {
+          state.mode = TYPEDO;
+          break;
+        }
+        //=== NEEDBITS(16);
+        while (bits < 16) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */
+          state.check = 0/*crc32(0L, Z_NULL, 0)*/;
+          //=== CRC2(state.check, hold);
+          hbuf[0] = hold & 0xff;
+          hbuf[1] = (hold >>> 8) & 0xff;
+          state.check = crc32(state.check, hbuf, 2, 0);
+          //===//
+
+          //=== INITBITS();
+          hold = 0;
+          bits = 0;
+          //===//
+          state.mode = FLAGS;
+          break;
+        }
+        state.flags = 0;           /* expect zlib header */
+        if (state.head) {
+          state.head.done = false;
+        }
+        if (!(state.wrap & 1) ||   /* check if zlib header allowed */
+          (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {
+          strm.msg = 'incorrect header check';
+          state.mode = BAD;
+          break;
+        }
+        if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {
+          strm.msg = 'unknown compression method';
+          state.mode = BAD;
+          break;
+        }
+        //--- DROPBITS(4) ---//
+        hold >>>= 4;
+        bits -= 4;
+        //---//
+        len = (hold & 0x0f)/*BITS(4)*/ + 8;
+        if (state.wbits === 0) {
+          state.wbits = len;
+        }
+        else if (len > state.wbits) {
+          strm.msg = 'invalid window size';
+          state.mode = BAD;
+          break;
+        }
+        state.dmax = 1 << len;
+        //Tracev((stderr, "inflate:   zlib header ok\n"));
+        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
+        state.mode = hold & 0x200 ? DICTID : TYPE;
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        break;
+      case FLAGS:
+        //=== NEEDBITS(16); */
+        while (bits < 16) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.flags = hold;
+        if ((state.flags & 0xff) !== Z_DEFLATED) {
+          strm.msg = 'unknown compression method';
+          state.mode = BAD;
+          break;
+        }
+        if (state.flags & 0xe000) {
+          strm.msg = 'unknown header flags set';
+          state.mode = BAD;
+          break;
+        }
+        if (state.head) {
+          state.head.text = ((hold >> 8) & 1);
+        }
+        if (state.flags & 0x0200) {
+          //=== CRC2(state.check, hold);
+          hbuf[0] = hold & 0xff;
+          hbuf[1] = (hold >>> 8) & 0xff;
+          state.check = crc32(state.check, hbuf, 2, 0);
+          //===//
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        state.mode = TIME;
+        /* falls through */
+      case TIME:
+        //=== NEEDBITS(32); */
+        while (bits < 32) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        if (state.head) {
+          state.head.time = hold;
+        }
+        if (state.flags & 0x0200) {
+          //=== CRC4(state.check, hold)
+          hbuf[0] = hold & 0xff;
+          hbuf[1] = (hold >>> 8) & 0xff;
+          hbuf[2] = (hold >>> 16) & 0xff;
+          hbuf[3] = (hold >>> 24) & 0xff;
+          state.check = crc32(state.check, hbuf, 4, 0);
+          //===
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        state.mode = OS;
+        /* falls through */
+      case OS:
+        //=== NEEDBITS(16); */
+        while (bits < 16) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        if (state.head) {
+          state.head.xflags = (hold & 0xff);
+          state.head.os = (hold >> 8);
+        }
+        if (state.flags & 0x0200) {
+          //=== CRC2(state.check, hold);
+          hbuf[0] = hold & 0xff;
+          hbuf[1] = (hold >>> 8) & 0xff;
+          state.check = crc32(state.check, hbuf, 2, 0);
+          //===//
+        }
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        state.mode = EXLEN;
+        /* falls through */
+      case EXLEN:
+        if (state.flags & 0x0400) {
+          //=== NEEDBITS(16); */
+          while (bits < 16) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          state.length = hold;
+          if (state.head) {
+            state.head.extra_len = hold;
+          }
+          if (state.flags & 0x0200) {
+            //=== CRC2(state.check, hold);
+            hbuf[0] = hold & 0xff;
+            hbuf[1] = (hold >>> 8) & 0xff;
+            state.check = crc32(state.check, hbuf, 2, 0);
+            //===//
+          }
+          //=== INITBITS();
+          hold = 0;
+          bits = 0;
+          //===//
+        }
+        else if (state.head) {
+          state.head.extra = null/*Z_NULL*/;
+        }
+        state.mode = EXTRA;
+        /* falls through */
+      case EXTRA:
+        if (state.flags & 0x0400) {
+          copy = state.length;
+          if (copy > have) { copy = have; }
+          if (copy) {
+            if (state.head) {
+              len = state.head.extra_len - state.length;
+              if (!state.head.extra) {
+                // Use untyped array for more convenient processing later
+                state.head.extra = new Array(state.head.extra_len);
+              }
+              utils.arraySet(
+                state.head.extra,
+                input,
+                next,
+                // extra field is limited to 65536 bytes
+                // - no need for additional size check
+                copy,
+                /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
+                len
+              );
+              //zmemcpy(state.head.extra + len, next,
+              //        len + copy > state.head.extra_max ?
+              //        state.head.extra_max - len : copy);
+            }
+            if (state.flags & 0x0200) {
+              state.check = crc32(state.check, input, copy, next);
+            }
+            have -= copy;
+            next += copy;
+            state.length -= copy;
+          }
+          if (state.length) { break inf_leave; }
+        }
+        state.length = 0;
+        state.mode = NAME;
+        /* falls through */
+      case NAME:
+        if (state.flags & 0x0800) {
+          if (have === 0) { break inf_leave; }
+          copy = 0;
+          do {
+            // TODO: 2 or 1 bytes?
+            len = input[next + copy++];
+            /* use constant limit because in js we should not preallocate memory */
+            if (state.head && len &&
+                (state.length < 65536 /*state.head.name_max*/)) {
+              state.head.name += String.fromCharCode(len);
+            }
+          } while (len && copy < have);
+
+          if (state.flags & 0x0200) {
+            state.check = crc32(state.check, input, copy, next);
+          }
+          have -= copy;
+          next += copy;
+          if (len) { break inf_leave; }
+        }
+        else if (state.head) {
+          state.head.name = null;
+        }
+        state.length = 0;
+        state.mode = COMMENT;
+        /* falls through */
+      case COMMENT:
+        if (state.flags & 0x1000) {
+          if (have === 0) { break inf_leave; }
+          copy = 0;
+          do {
+            len = input[next + copy++];
+            /* use constant limit because in js we should not preallocate memory */
+            if (state.head && len &&
+                (state.length < 65536 /*state.head.comm_max*/)) {
+              state.head.comment += String.fromCharCode(len);
+            }
+          } while (len && copy < have);
+          if (state.flags & 0x0200) {
+            state.check = crc32(state.check, input, copy, next);
+          }
+          have -= copy;
+          next += copy;
+          if (len) { break inf_leave; }
+        }
+        else if (state.head) {
+          state.head.comment = null;
+        }
+        state.mode = HCRC;
+        /* falls through */
+      case HCRC:
+        if (state.flags & 0x0200) {
+          //=== NEEDBITS(16); */
+          while (bits < 16) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          if (hold !== (state.check & 0xffff)) {
+            strm.msg = 'header crc mismatch';
+            state.mode = BAD;
+            break;
+          }
+          //=== INITBITS();
+          hold = 0;
+          bits = 0;
+          //===//
+        }
+        if (state.head) {
+          state.head.hcrc = ((state.flags >> 9) & 1);
+          state.head.done = true;
+        }
+        strm.adler = state.check = 0;
+        state.mode = TYPE;
+        break;
+      case DICTID:
+        //=== NEEDBITS(32); */
+        while (bits < 32) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        strm.adler = state.check = zswap32(hold);
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        state.mode = DICT;
+        /* falls through */
+      case DICT:
+        if (state.havedict === 0) {
+          //--- RESTORE() ---
+          strm.next_out = put;
+          strm.avail_out = left;
+          strm.next_in = next;
+          strm.avail_in = have;
+          state.hold = hold;
+          state.bits = bits;
+          //---
+          return Z_NEED_DICT;
+        }
+        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
+        state.mode = TYPE;
+        /* falls through */
+      case TYPE:
+        if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }
+        /* falls through */
+      case TYPEDO:
+        if (state.last) {
+          //--- BYTEBITS() ---//
+          hold >>>= bits & 7;
+          bits -= bits & 7;
+          //---//
+          state.mode = CHECK;
+          break;
+        }
+        //=== NEEDBITS(3); */
+        while (bits < 3) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.last = (hold & 0x01)/*BITS(1)*/;
+        //--- DROPBITS(1) ---//
+        hold >>>= 1;
+        bits -= 1;
+        //---//
+
+        switch ((hold & 0x03)/*BITS(2)*/) {
+          case 0:                             /* stored block */
+            //Tracev((stderr, "inflate:     stored block%s\n",
+            //        state.last ? " (last)" : ""));
+            state.mode = STORED;
+            break;
+          case 1:                             /* fixed block */
+            fixedtables(state);
+            //Tracev((stderr, "inflate:     fixed codes block%s\n",
+            //        state.last ? " (last)" : ""));
+            state.mode = LEN_;             /* decode codes */
+            if (flush === Z_TREES) {
+              //--- DROPBITS(2) ---//
+              hold >>>= 2;
+              bits -= 2;
+              //---//
+              break inf_leave;
+            }
+            break;
+          case 2:                             /* dynamic block */
+            //Tracev((stderr, "inflate:     dynamic codes block%s\n",
+            //        state.last ? " (last)" : ""));
+            state.mode = TABLE;
+            break;
+          case 3:
+            strm.msg = 'invalid block type';
+            state.mode = BAD;
+        }
+        //--- DROPBITS(2) ---//
+        hold >>>= 2;
+        bits -= 2;
+        //---//
+        break;
+      case STORED:
+        //--- BYTEBITS() ---// /* go to byte boundary */
+        hold >>>= bits & 7;
+        bits -= bits & 7;
+        //---//
+        //=== NEEDBITS(32); */
+        while (bits < 32) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {
+          strm.msg = 'invalid stored block lengths';
+          state.mode = BAD;
+          break;
+        }
+        state.length = hold & 0xffff;
+        //Tracev((stderr, "inflate:       stored length %u\n",
+        //        state.length));
+        //=== INITBITS();
+        hold = 0;
+        bits = 0;
+        //===//
+        state.mode = COPY_;
+        if (flush === Z_TREES) { break inf_leave; }
+        /* falls through */
+      case COPY_:
+        state.mode = COPY;
+        /* falls through */
+      case COPY:
+        copy = state.length;
+        if (copy) {
+          if (copy > have) { copy = have; }
+          if (copy > left) { copy = left; }
+          if (copy === 0) { break inf_leave; }
+          //--- zmemcpy(put, next, copy); ---
+          utils.arraySet(output, input, next, copy, put);
+          //---//
+          have -= copy;
+          next += copy;
+          left -= copy;
+          put += copy;
+          state.length -= copy;
+          break;
+        }
+        //Tracev((stderr, "inflate:       stored end\n"));
+        state.mode = TYPE;
+        break;
+      case TABLE:
+        //=== NEEDBITS(14); */
+        while (bits < 14) {
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+        }
+        //===//
+        state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;
+        //--- DROPBITS(5) ---//
+        hold >>>= 5;
+        bits -= 5;
+        //---//
+        state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;
+        //--- DROPBITS(5) ---//
+        hold >>>= 5;
+        bits -= 5;
+        //---//
+        state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;
+        //--- DROPBITS(4) ---//
+        hold >>>= 4;
+        bits -= 4;
+        //---//
+//#ifndef PKZIP_BUG_WORKAROUND
+        if (state.nlen > 286 || state.ndist > 30) {
+          strm.msg = 'too many length or distance symbols';
+          state.mode = BAD;
+          break;
+        }
+//#endif
+        //Tracev((stderr, "inflate:       table sizes ok\n"));
+        state.have = 0;
+        state.mode = LENLENS;
+        /* falls through */
+      case LENLENS:
+        while (state.have < state.ncode) {
+          //=== NEEDBITS(3);
+          while (bits < 3) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);
+          //--- DROPBITS(3) ---//
+          hold >>>= 3;
+          bits -= 3;
+          //---//
+        }
+        while (state.have < 19) {
+          state.lens[order[state.have++]] = 0;
+        }
+        // We have separate tables & no pointers. 2 commented lines below not needed.
+        //state.next = state.codes;
+        //state.lencode = state.next;
+        // Switch to use dynamic table
+        state.lencode = state.lendyn;
+        state.lenbits = 7;
+
+        opts = { bits: state.lenbits };
+        ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
+        state.lenbits = opts.bits;
+
+        if (ret) {
+          strm.msg = 'invalid code lengths set';
+          state.mode = BAD;
+          break;
+        }
+        //Tracev((stderr, "inflate:       code lengths ok\n"));
+        state.have = 0;
+        state.mode = CODELENS;
+        /* falls through */
+      case CODELENS:
+        while (state.have < state.nlen + state.ndist) {
+          for (;;) {
+            here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/
+            here_bits = here >>> 24;
+            here_op = (here >>> 16) & 0xff;
+            here_val = here & 0xffff;
+
+            if ((here_bits) <= bits) { break; }
+            //--- PULLBYTE() ---//
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+            //---//
+          }
+          if (here_val < 16) {
+            //--- DROPBITS(here.bits) ---//
+            hold >>>= here_bits;
+            bits -= here_bits;
+            //---//
+            state.lens[state.have++] = here_val;
+          }
+          else {
+            if (here_val === 16) {
+              //=== NEEDBITS(here.bits + 2);
+              n = here_bits + 2;
+              while (bits < n) {
+                if (have === 0) { break inf_leave; }
+                have--;
+                hold += input[next++] << bits;
+                bits += 8;
+              }
+              //===//
+              //--- DROPBITS(here.bits) ---//
+              hold >>>= here_bits;
+              bits -= here_bits;
+              //---//
+              if (state.have === 0) {
+                strm.msg = 'invalid bit length repeat';
+                state.mode = BAD;
+                break;
+              }
+              len = state.lens[state.have - 1];
+              copy = 3 + (hold & 0x03);//BITS(2);
+              //--- DROPBITS(2) ---//
+              hold >>>= 2;
+              bits -= 2;
+              //---//
+            }
+            else if (here_val === 17) {
+              //=== NEEDBITS(here.bits + 3);
+              n = here_bits + 3;
+              while (bits < n) {
+                if (have === 0) { break inf_leave; }
+                have--;
+                hold += input[next++] << bits;
+                bits += 8;
+              }
+              //===//
+              //--- DROPBITS(here.bits) ---//
+              hold >>>= here_bits;
+              bits -= here_bits;
+              //---//
+              len = 0;
+              copy = 3 + (hold & 0x07);//BITS(3);
+              //--- DROPBITS(3) ---//
+              hold >>>= 3;
+              bits -= 3;
+              //---//
+            }
+            else {
+              //=== NEEDBITS(here.bits + 7);
+              n = here_bits + 7;
+              while (bits < n) {
+                if (have === 0) { break inf_leave; }
+                have--;
+                hold += input[next++] << bits;
+                bits += 8;
+              }
+              //===//
+              //--- DROPBITS(here.bits) ---//
+              hold >>>= here_bits;
+              bits -= here_bits;
+              //---//
+              len = 0;
+              copy = 11 + (hold & 0x7f);//BITS(7);
+              //--- DROPBITS(7) ---//
+              hold >>>= 7;
+              bits -= 7;
+              //---//
+            }
+            if (state.have + copy > state.nlen + state.ndist) {
+              strm.msg = 'invalid bit length repeat';
+              state.mode = BAD;
+              break;
+            }
+            while (copy--) {
+              state.lens[state.have++] = len;
+            }
+          }
+        }
+
+        /* handle error breaks in while */
+        if (state.mode === BAD) { break; }
+
+        /* check for end-of-block code (better have one) */
+        if (state.lens[256] === 0) {
+          strm.msg = 'invalid code -- missing end-of-block';
+          state.mode = BAD;
+          break;
+        }
+
+        /* build code tables -- note: do not change the lenbits or distbits
+           values here (9 and 6) without reading the comments in inftrees.h
+           concerning the ENOUGH constants, which depend on those values */
+        state.lenbits = 9;
+
+        opts = { bits: state.lenbits };
+        ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
+        // We have separate tables & no pointers. 2 commented lines below not needed.
+        // state.next_index = opts.table_index;
+        state.lenbits = opts.bits;
+        // state.lencode = state.next;
+
+        if (ret) {
+          strm.msg = 'invalid literal/lengths set';
+          state.mode = BAD;
+          break;
+        }
+
+        state.distbits = 6;
+        //state.distcode.copy(state.codes);
+        // Switch to use dynamic table
+        state.distcode = state.distdyn;
+        opts = { bits: state.distbits };
+        ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
+        // We have separate tables & no pointers. 2 commented lines below not needed.
+        // state.next_index = opts.table_index;
+        state.distbits = opts.bits;
+        // state.distcode = state.next;
+
+        if (ret) {
+          strm.msg = 'invalid distances set';
+          state.mode = BAD;
+          break;
+        }
+        //Tracev((stderr, 'inflate:       codes ok\n'));
+        state.mode = LEN_;
+        if (flush === Z_TREES) { break inf_leave; }
+        /* falls through */
+      case LEN_:
+        state.mode = LEN;
+        /* falls through */
+      case LEN:
+        if (have >= 6 && left >= 258) {
+          //--- RESTORE() ---
+          strm.next_out = put;
+          strm.avail_out = left;
+          strm.next_in = next;
+          strm.avail_in = have;
+          state.hold = hold;
+          state.bits = bits;
+          //---
+          inflate_fast(strm, _out);
+          //--- LOAD() ---
+          put = strm.next_out;
+          output = strm.output;
+          left = strm.avail_out;
+          next = strm.next_in;
+          input = strm.input;
+          have = strm.avail_in;
+          hold = state.hold;
+          bits = state.bits;
+          //---
+
+          if (state.mode === TYPE) {
+            state.back = -1;
+          }
+          break;
+        }
+        state.back = 0;
+        for (;;) {
+          here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/
+          here_bits = here >>> 24;
+          here_op = (here >>> 16) & 0xff;
+          here_val = here & 0xffff;
+
+          if (here_bits <= bits) { break; }
+          //--- PULLBYTE() ---//
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+          //---//
+        }
+        if (here_op && (here_op & 0xf0) === 0) {
+          last_bits = here_bits;
+          last_op = here_op;
+          last_val = here_val;
+          for (;;) {
+            here = state.lencode[last_val +
+                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
+            here_bits = here >>> 24;
+            here_op = (here >>> 16) & 0xff;
+            here_val = here & 0xffff;
+
+            if ((last_bits + here_bits) <= bits) { break; }
+            //--- PULLBYTE() ---//
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+            //---//
+          }
+          //--- DROPBITS(last.bits) ---//
+          hold >>>= last_bits;
+          bits -= last_bits;
+          //---//
+          state.back += last_bits;
+        }
+        //--- DROPBITS(here.bits) ---//
+        hold >>>= here_bits;
+        bits -= here_bits;
+        //---//
+        state.back += here_bits;
+        state.length = here_val;
+        if (here_op === 0) {
+          //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+          //        "inflate:         literal '%c'\n" :
+          //        "inflate:         literal 0x%02x\n", here.val));
+          state.mode = LIT;
+          break;
+        }
+        if (here_op & 32) {
+          //Tracevv((stderr, "inflate:         end of block\n"));
+          state.back = -1;
+          state.mode = TYPE;
+          break;
+        }
+        if (here_op & 64) {
+          strm.msg = 'invalid literal/length code';
+          state.mode = BAD;
+          break;
+        }
+        state.extra = here_op & 15;
+        state.mode = LENEXT;
+        /* falls through */
+      case LENEXT:
+        if (state.extra) {
+          //=== NEEDBITS(state.extra);
+          n = state.extra;
+          while (bits < n) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
+          //--- DROPBITS(state.extra) ---//
+          hold >>>= state.extra;
+          bits -= state.extra;
+          //---//
+          state.back += state.extra;
+        }
+        //Tracevv((stderr, "inflate:         length %u\n", state.length));
+        state.was = state.length;
+        state.mode = DIST;
+        /* falls through */
+      case DIST:
+        for (;;) {
+          here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/
+          here_bits = here >>> 24;
+          here_op = (here >>> 16) & 0xff;
+          here_val = here & 0xffff;
+
+          if ((here_bits) <= bits) { break; }
+          //--- PULLBYTE() ---//
+          if (have === 0) { break inf_leave; }
+          have--;
+          hold += input[next++] << bits;
+          bits += 8;
+          //---//
+        }
+        if ((here_op & 0xf0) === 0) {
+          last_bits = here_bits;
+          last_op = here_op;
+          last_val = here_val;
+          for (;;) {
+            here = state.distcode[last_val +
+                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
+            here_bits = here >>> 24;
+            here_op = (here >>> 16) & 0xff;
+            here_val = here & 0xffff;
+
+            if ((last_bits + here_bits) <= bits) { break; }
+            //--- PULLBYTE() ---//
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+            //---//
+          }
+          //--- DROPBITS(last.bits) ---//
+          hold >>>= last_bits;
+          bits -= last_bits;
+          //---//
+          state.back += last_bits;
+        }
+        //--- DROPBITS(here.bits) ---//
+        hold >>>= here_bits;
+        bits -= here_bits;
+        //---//
+        state.back += here_bits;
+        if (here_op & 64) {
+          strm.msg = 'invalid distance code';
+          state.mode = BAD;
+          break;
+        }
+        state.offset = here_val;
+        state.extra = (here_op) & 15;
+        state.mode = DISTEXT;
+        /* falls through */
+      case DISTEXT:
+        if (state.extra) {
+          //=== NEEDBITS(state.extra);
+          n = state.extra;
+          while (bits < n) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
+          //--- DROPBITS(state.extra) ---//
+          hold >>>= state.extra;
+          bits -= state.extra;
+          //---//
+          state.back += state.extra;
+        }
+//#ifdef INFLATE_STRICT
+        if (state.offset > state.dmax) {
+          strm.msg = 'invalid distance too far back';
+          state.mode = BAD;
+          break;
+        }
+//#endif
+        //Tracevv((stderr, "inflate:         distance %u\n", state.offset));
+        state.mode = MATCH;
+        /* falls through */
+      case MATCH:
+        if (left === 0) { break inf_leave; }
+        copy = _out - left;
+        if (state.offset > copy) {         /* copy from window */
+          copy = state.offset - copy;
+          if (copy > state.whave) {
+            if (state.sane) {
+              strm.msg = 'invalid distance too far back';
+              state.mode = BAD;
+              break;
+            }
+// (!) This block is disabled in zlib defaults,
+// don't enable it for binary compatibility
+//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
+//          Trace((stderr, "inflate.c too far\n"));
+//          copy -= state.whave;
+//          if (copy > state.length) { copy = state.length; }
+//          if (copy > left) { copy = left; }
+//          left -= copy;
+//          state.length -= copy;
+//          do {
+//            output[put++] = 0;
+//          } while (--copy);
+//          if (state.length === 0) { state.mode = LEN; }
+//          break;
+//#endif
+          }
+          if (copy > state.wnext) {
+            copy -= state.wnext;
+            from = state.wsize - copy;
+          }
+          else {
+            from = state.wnext - copy;
+          }
+          if (copy > state.length) { copy = state.length; }
+          from_source = state.window;
+        }
+        else {                              /* copy from output */
+          from_source = output;
+          from = put - state.offset;
+          copy = state.length;
+        }
+        if (copy > left) { copy = left; }
+        left -= copy;
+        state.length -= copy;
+        do {
+          output[put++] = from_source[from++];
+        } while (--copy);
+        if (state.length === 0) { state.mode = LEN; }
+        break;
+      case LIT:
+        if (left === 0) { break inf_leave; }
+        output[put++] = state.length;
+        left--;
+        state.mode = LEN;
+        break;
+      case CHECK:
+        if (state.wrap) {
+          //=== NEEDBITS(32);
+          while (bits < 32) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            // Use '|' instead of '+' to make sure that result is signed
+            hold |= input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          _out -= left;
+          strm.total_out += _out;
+          state.total += _out;
+          if (_out) {
+            strm.adler = state.check =
+                /*UPDATE(state.check, put - _out, _out);*/
+                (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));
+
+          }
+          _out = left;
+          // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too
+          if ((state.flags ? hold : zswap32(hold)) !== state.check) {
+            strm.msg = 'incorrect data check';
+            state.mode = BAD;
+            break;
+          }
+          //=== INITBITS();
+          hold = 0;
+          bits = 0;
+          //===//
+          //Tracev((stderr, "inflate:   check matches trailer\n"));
+        }
+        state.mode = LENGTH;
+        /* falls through */
+      case LENGTH:
+        if (state.wrap && state.flags) {
+          //=== NEEDBITS(32);
+          while (bits < 32) {
+            if (have === 0) { break inf_leave; }
+            have--;
+            hold += input[next++] << bits;
+            bits += 8;
+          }
+          //===//
+          if (hold !== (state.total & 0xffffffff)) {
+            strm.msg = 'incorrect length check';
+            state.mode = BAD;
+            break;
+          }
+          //=== INITBITS();
+          hold = 0;
+          bits = 0;
+          //===//
+          //Tracev((stderr, "inflate:   length matches trailer\n"));
+        }
+        state.mode = DONE;
+        /* falls through */
+      case DONE:
+        ret = Z_STREAM_END;
+        break inf_leave;
+      case BAD:
+        ret = Z_DATA_ERROR;
+        break inf_leave;
+      case MEM:
+        return Z_MEM_ERROR;
+      case SYNC:
+        /* falls through */
+      default:
+        return Z_STREAM_ERROR;
+    }
+  }
+
+  // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave"
+
+  /*
+     Return from inflate(), updating the total counts and the check value.
+     If there was no progress during the inflate() call, return a buffer
+     error.  Call updatewindow() to create and/or update the window state.
+     Note: a memory error from inflate() is non-recoverable.
+   */
+
+  //--- RESTORE() ---
+  strm.next_out = put;
+  strm.avail_out = left;
+  strm.next_in = next;
+  strm.avail_in = have;
+  state.hold = hold;
+  state.bits = bits;
+  //---
+
+  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&
+                      (state.mode < CHECK || flush !== Z_FINISH))) {
+    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {
+      state.mode = MEM;
+      return Z_MEM_ERROR;
+    }
+  }
+  _in -= strm.avail_in;
+  _out -= strm.avail_out;
+  strm.total_in += _in;
+  strm.total_out += _out;
+  state.total += _out;
+  if (state.wrap && _out) {
+    strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/
+      (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));
+  }
+  strm.data_type = state.bits + (state.last ? 64 : 0) +
+                    (state.mode === TYPE ? 128 : 0) +
+                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
+  if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {
+    ret = Z_BUF_ERROR;
+  }
+  return ret;
+}
+
+function inflateEnd(strm) {
+
+  if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {
+    return Z_STREAM_ERROR;
+  }
+
+  var state = strm.state;
+  if (state.window) {
+    state.window = null;
+  }
+  strm.state = null;
+  return Z_OK;
+}
+
+function inflateGetHeader(strm, head) {
+  var state;
+
+  /* check state */
+  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
+  state = strm.state;
+  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }
+
+  /* save header structure */
+  state.head = head;
+  head.done = false;
+  return Z_OK;
+}
+
+function inflateSetDictionary(strm, dictionary) {
+  var dictLength = dictionary.length;
+
+  var state;
+  var dictid;
+  var ret;
+
+  /* check state */
+  if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }
+  state = strm.state;
+
+  if (state.wrap !== 0 && state.mode !== DICT) {
+    return Z_STREAM_ERROR;
+  }
+
+  /* check for correct dictionary identifier */
+  if (state.mode === DICT) {
+    dictid = 1; /* adler32(0, null, 0)*/
+    /* dictid = adler32(dictid, dictionary, dictLength); */
+    dictid = adler32(dictid, dictionary, dictLength, 0);
+    if (dictid !== state.check) {
+      return Z_DATA_ERROR;
+    }
+  }
+  /* copy dictionary to window using updatewindow(), which will amend the
+   existing dictionary if appropriate */
+  ret = updatewindow(strm, dictionary, dictLength, dictLength);
+  if (ret) {
+    state.mode = MEM;
+    return Z_MEM_ERROR;
+  }
+  state.havedict = 1;
+  // Tracev((stderr, "inflate:   dictionary set\n"));
+  return Z_OK;
+}
+
+exports.inflateReset = inflateReset;
+exports.inflateReset2 = inflateReset2;
+exports.inflateResetKeep = inflateResetKeep;
+exports.inflateInit = inflateInit;
+exports.inflateInit2 = inflateInit2;
+exports.inflate = inflate;
+exports.inflateEnd = inflateEnd;
+exports.inflateGetHeader = inflateGetHeader;
+exports.inflateSetDictionary = inflateSetDictionary;
+exports.inflateInfo = 'pako inflate (from Nodeca project)';
+
+/* Not implemented
+exports.inflateCopy = inflateCopy;
+exports.inflateGetDictionary = inflateGetDictionary;
+exports.inflateMark = inflateMark;
+exports.inflatePrime = inflatePrime;
+exports.inflateSync = inflateSync;
+exports.inflateSyncPoint = inflateSyncPoint;
+exports.inflateUndermine = inflateUndermine;
+*/
+
+},{"../utils/common":39,"./adler32":41,"./crc32":43,"./inffast":46,"./inftrees":48}],48:[function(require,module,exports){
+'use strict';
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+var utils = require('../utils/common');
+
+var MAXBITS = 15;
+var ENOUGH_LENS = 852;
+var ENOUGH_DISTS = 592;
+//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);
+
+var CODES = 0;
+var LENS = 1;
+var DISTS = 2;
+
+var lbase = [ /* Length codes 257..285 base */
+  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
+  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0
+];
+
+var lext = [ /* Length codes 257..285 extra */
+  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
+  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78
+];
+
+var dbase = [ /* Distance codes 0..29 base */
+  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
+  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
+  8193, 12289, 16385, 24577, 0, 0
+];
+
+var dext = [ /* Distance codes 0..29 extra */
+  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
+  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
+  28, 28, 29, 29, 64, 64
+];
+
+module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)
+{
+  var bits = opts.bits;
+      //here = opts.here; /* table entry for duplication */
+
+  var len = 0;               /* a code's length in bits */
+  var sym = 0;               /* index of code symbols */
+  var min = 0, max = 0;          /* minimum and maximum code lengths */
+  var root = 0;              /* number of index bits for root table */
+  var curr = 0;              /* number of index bits for current table */
+  var drop = 0;              /* code bits to drop for sub-table */
+  var left = 0;                   /* number of prefix codes available */
+  var used = 0;              /* code entries in table used */
+  var huff = 0;              /* Huffman code */
+  var incr;              /* for incrementing code, index */
+  var fill;              /* index for replicating entries */
+  var low;               /* low bits for current root entry */
+  var mask;              /* mask for low root bits */
+  var next;             /* next available space in table */
+  var base = null;     /* base value table to use */
+  var base_index = 0;
+//  var shoextra;    /* extra bits table to use */
+  var end;                    /* use base and extra for symbol > end */
+  var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */
+  var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */
+  var extra = null;
+  var extra_index = 0;
+
+  var here_bits, here_op, here_val;
+
+  /*
+   Process a set of code lengths to create a canonical Huffman code.  The
+   code lengths are lens[0..codes-1].  Each length corresponds to the
+   symbols 0..codes-1.  The Huffman code is generated by first sorting the
+   symbols by length from short to long, and retaining the symbol order
+   for codes with equal lengths.  Then the code starts with all zero bits
+   for the first code of the shortest length, and the codes are integer
+   increments for the same length, and zeros are appended as the length
+   increases.  For the deflate format, these bits are stored backwards
+   from their more natural integer increment ordering, and so when the
+   decoding tables are built in the large loop below, the integer codes
+   are incremented backwards.
+
+   This routine assumes, but does not check, that all of the entries in
+   lens[] are in the range 0..MAXBITS.  The caller must assure this.
+   1..MAXBITS is interpreted as that code length.  zero means that that
+   symbol does not occur in this code.
+
+   The codes are sorted by computing a count of codes for each length,
+   creating from that a table of starting indices for each length in the
+   sorted table, and then entering the symbols in order in the sorted
+   table.  The sorted table is work[], with that space being provided by
+   the caller.
+
+   The length counts are used for other purposes as well, i.e. finding
+   the minimum and maximum length codes, determining if there are any
+   codes at all, checking for a valid set of lengths, and looking ahead
+   at length counts to determine sub-table sizes when building the
+   decoding tables.
+   */
+
+  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
+  for (len = 0; len <= MAXBITS; len++) {
+    count[len] = 0;
+  }
+  for (sym = 0; sym < codes; sym++) {
+    count[lens[lens_index + sym]]++;
+  }
+
+  /* bound code lengths, force root to be within code lengths */
+  root = bits;
+  for (max = MAXBITS; max >= 1; max--) {
+    if (count[max] !== 0) { break; }
+  }
+  if (root > max) {
+    root = max;
+  }
+  if (max === 0) {                     /* no symbols to code at all */
+    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */
+    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;
+    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;
+    table[table_index++] = (1 << 24) | (64 << 16) | 0;
+
+
+    //table.op[opts.table_index] = 64;
+    //table.bits[opts.table_index] = 1;
+    //table.val[opts.table_index++] = 0;
+    table[table_index++] = (1 << 24) | (64 << 16) | 0;
+
+    opts.bits = 1;
+    return 0;     /* no symbols, but wait for decoding to report error */
+  }
+  for (min = 1; min < max; min++) {
+    if (count[min] !== 0) { break; }
+  }
+  if (root < min) {
+    root = min;
+  }
+
+  /* check for an over-subscribed or incomplete set of lengths */
+  left = 1;
+  for (len = 1; len <= MAXBITS; len++) {
+    left <<= 1;
+    left -= count[len];
+    if (left < 0) {
+      return -1;
+    }        /* over-subscribed */
+  }
+  if (left > 0 && (type === CODES || max !== 1)) {
+    return -1;                      /* incomplete set */
+  }
+
+  /* generate offsets into symbol table for each length for sorting */
+  offs[1] = 0;
+  for (len = 1; len < MAXBITS; len++) {
+    offs[len + 1] = offs[len] + count[len];
+  }
+
+  /* sort symbols by length, by symbol order within each length */
+  for (sym = 0; sym < codes; sym++) {
+    if (lens[lens_index + sym] !== 0) {
+      work[offs[lens[lens_index + sym]]++] = sym;
+    }
+  }
+
+  /*
+   Create and fill in decoding tables.  In this loop, the table being
+   filled is at next and has curr index bits.  The code being used is huff
+   with length len.  That code is converted to an index by dropping drop
+   bits off of the bottom.  For codes where len is less than drop + curr,
+   those top drop + curr - len bits are incremented through all values to
+   fill the table with replicated entries.
+
+   root is the number of index bits for the root table.  When len exceeds
+   root, sub-tables are created pointed to by the root entry with an index
+   of the low root bits of huff.  This is saved in low to check for when a
+   new sub-table should be started.  drop is zero when the root table is
+   being filled, and drop is root when sub-tables are being filled.
+
+   When a new sub-table is needed, it is necessary to look ahead in the
+   code lengths to determine what size sub-table is needed.  The length
+   counts are used for this, and so count[] is decremented as codes are
+   entered in the tables.
+
+   used keeps track of how many table entries have been allocated from the
+   provided *table space.  It is checked for LENS and DIST tables against
+   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
+   the initial root table size constants.  See the comments in inftrees.h
+   for more information.
+
+   sym increments through all symbols, and the loop terminates when
+   all codes of length max, i.e. all codes, have been processed.  This
+   routine permits incomplete codes, so another loop after this one fills
+   in the rest of the decoding tables with invalid code markers.
+   */
+
+  /* set up for code type */
+  // poor man optimization - use if-else instead of switch,
+  // to avoid deopts in old v8
+  if (type === CODES) {
+    base = extra = work;    /* dummy value--not used */
+    end = 19;
+
+  } else if (type === LENS) {
+    base = lbase;
+    base_index -= 257;
+    extra = lext;
+    extra_index -= 257;
+    end = 256;
+
+  } else {                    /* DISTS */
+    base = dbase;
+    extra = dext;
+    end = -1;
+  }
+
+  /* initialize opts for loop */
+  huff = 0;                   /* starting code */
+  sym = 0;                    /* starting code symbol */
+  len = min;                  /* starting code length */
+  next = table_index;              /* current table to fill in */
+  curr = root;                /* current table index bits */
+  drop = 0;                   /* current bits to drop from code for index */
+  low = -1;                   /* trigger new sub-table when len > root */
+  used = 1 << root;          /* use root table entries */
+  mask = used - 1;            /* mask for comparing low */
+
+  /* check available table space */
+  if ((type === LENS && used > ENOUGH_LENS) ||
+    (type === DISTS && used > ENOUGH_DISTS)) {
+    return 1;
+  }
+
+  /* process all codes and make table entries */
+  for (;;) {
+    /* create table entry */
+    here_bits = len - drop;
+    if (work[sym] < end) {
+      here_op = 0;
+      here_val = work[sym];
+    }
+    else if (work[sym] > end) {
+      here_op = extra[extra_index + work[sym]];
+      here_val = base[base_index + work[sym]];
+    }
+    else {
+      here_op = 32 + 64;         /* end of block */
+      here_val = 0;
+    }
+
+    /* replicate for those indices with low len bits equal to huff */
+    incr = 1 << (len - drop);
+    fill = 1 << curr;
+    min = fill;                 /* save offset to next table */
+    do {
+      fill -= incr;
+      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;
+    } while (fill !== 0);
+
+    /* backwards increment the len-bit code huff */
+    incr = 1 << (len - 1);
+    while (huff & incr) {
+      incr >>= 1;
+    }
+    if (incr !== 0) {
+      huff &= incr - 1;
+      huff += incr;
+    } else {
+      huff = 0;
+    }
+
+    /* go to next symbol, update count, len */
+    sym++;
+    if (--count[len] === 0) {
+      if (len === max) { break; }
+      len = lens[lens_index + work[sym]];
+    }
+
+    /* create new sub-table if needed */
+    if (len > root && (huff & mask) !== low) {
+      /* if first time, transition to sub-tables */
+      if (drop === 0) {
+        drop = root;
+      }
+
+      /* increment past last table */
+      next += min;            /* here min is 1 << curr */
+
+      /* determine length of next table */
+      curr = len - drop;
+      left = 1 << curr;
+      while (curr + drop < max) {
+        left -= count[curr + drop];
+        if (left <= 0) { break; }
+        curr++;
+        left <<= 1;
+      }
+
+      /* check for enough space */
+      used += 1 << curr;
+      if ((type === LENS && used > ENOUGH_LENS) ||
+        (type === DISTS && used > ENOUGH_DISTS)) {
+        return 1;
+      }
+
+      /* point entry in root table to sub-table */
+      low = huff & mask;
+      /*table.op[low] = curr;
+      table.bits[low] = root;
+      table.val[low] = next - opts.table_index;*/
+      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;
+    }
+  }
+
+  /* fill in remaining table entry if code is incomplete (guaranteed to have
+   at most one remaining entry, since if the code is incomplete, the
+   maximum code length that was allowed to get this far is one bit) */
+  if (huff !== 0) {
+    //table.op[next + huff] = 64;            /* invalid code marker */
+    //table.bits[next + huff] = len - drop;
+    //table.val[next + huff] = 0;
+    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;
+  }
+
+  /* set return parameters */
+  //opts.table_index += used;
+  opts.bits = root;
+  return 0;
+};
+
+},{"../utils/common":39}],49:[function(require,module,exports){
+'use strict';
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+module.exports = {
+  2:      'need dictionary',     /* Z_NEED_DICT       2  */
+  1:      'stream end',          /* Z_STREAM_END      1  */
+  0:      '',                    /* Z_OK              0  */
+  '-1':   'file error',          /* Z_ERRNO         (-1) */
+  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */
+  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */
+  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */
+  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */
+  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */
+};
+
+},{}],50:[function(require,module,exports){
+'use strict';
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+var utils = require('../utils/common');
+
+/* Public constants ==========================================================*/
+/* ===========================================================================*/
+
+
+//var Z_FILTERED          = 1;
+//var Z_HUFFMAN_ONLY      = 2;
+//var Z_RLE               = 3;
+var Z_FIXED               = 4;
+//var Z_DEFAULT_STRATEGY  = 0;
+
+/* Possible values of the data_type field (though see inflate()) */
+var Z_BINARY              = 0;
+var Z_TEXT                = 1;
+//var Z_ASCII             = 1; // = Z_TEXT
+var Z_UNKNOWN             = 2;
+
+/*============================================================================*/
+
+
+function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }
+
+// From zutil.h
+
+var STORED_BLOCK = 0;
+var STATIC_TREES = 1;
+var DYN_TREES    = 2;
+/* The three kinds of block type */
+
+var MIN_MATCH    = 3;
+var MAX_MATCH    = 258;
+/* The minimum and maximum match lengths */
+
+// From deflate.h
+/* ===========================================================================
+ * Internal compression state.
+ */
+
+var LENGTH_CODES  = 29;
+/* number of length codes, not counting the special END_BLOCK code */
+
+var LITERALS      = 256;
+/* number of literal bytes 0..255 */
+
+var L_CODES       = LITERALS + 1 + LENGTH_CODES;
+/* number of Literal or Length codes, including the END_BLOCK code */
+
+var D_CODES       = 30;
+/* number of distance codes */
+
+var BL_CODES      = 19;
+/* number of codes used to transfer the bit lengths */
+
+var HEAP_SIZE     = 2 * L_CODES + 1;
+/* maximum heap size */
+
+var MAX_BITS      = 15;
+/* All codes must not exceed MAX_BITS bits */
+
+var Buf_size      = 16;
+/* size of bit buffer in bi_buf */
+
+
+/* ===========================================================================
+ * Constants
+ */
+
+var MAX_BL_BITS = 7;
+/* Bit length codes must not exceed MAX_BL_BITS bits */
+
+var END_BLOCK   = 256;
+/* end of block literal code */
+
+var REP_3_6     = 16;
+/* repeat previous bit length 3-6 times (2 bits of repeat count) */
+
+var REPZ_3_10   = 17;
+/* repeat a zero length 3-10 times  (3 bits of repeat count) */
+
+var REPZ_11_138 = 18;
+/* repeat a zero length 11-138 times  (7 bits of repeat count) */
+
+/* eslint-disable comma-spacing,array-bracket-spacing */
+var extra_lbits =   /* extra bits for each length code */
+  [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];
+
+var extra_dbits =   /* extra bits for each distance code */
+  [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];
+
+var extra_blbits =  /* extra bits for each bit length code */
+  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];
+
+var bl_order =
+  [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];
+/* eslint-enable comma-spacing,array-bracket-spacing */
+
+/* The lengths of the bit length codes are sent in order of decreasing
+ * probability, to avoid transmitting the lengths for unused bit length codes.
+ */
+
+/* ===========================================================================
+ * Local data. These are initialized only once.
+ */
+
+// We pre-fill arrays with 0 to avoid uninitialized gaps
+
+var DIST_CODE_LEN = 512; /* see definition of array dist_code below */
+
+// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1
+var static_ltree  = new Array((L_CODES + 2) * 2);
+zero(static_ltree);
+/* The static literal tree. Since the bit lengths are imposed, there is no
+ * need for the L_CODES extra codes used during heap construction. However
+ * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
+ * below).
+ */
+
+var static_dtree  = new Array(D_CODES * 2);
+zero(static_dtree);
+/* The static distance tree. (Actually a trivial tree since all codes use
+ * 5 bits.)
+ */
+
+var _dist_code    = new Array(DIST_CODE_LEN);
+zero(_dist_code);
+/* Distance codes. The first 256 values correspond to the distances
+ * 3 .. 258, the last 256 values correspond to the top 8 bits of
+ * the 15 bit distances.
+ */
+
+var _length_code  = new Array(MAX_MATCH - MIN_MATCH + 1);
+zero(_length_code);
+/* length code for each normalized match length (0 == MIN_MATCH) */
+
+var base_length   = new Array(LENGTH_CODES);
+zero(base_length);
+/* First normalized length for each code (0 = MIN_MATCH) */
+
+var base_dist     = new Array(D_CODES);
+zero(base_dist);
+/* First normalized distance for each code (0 = distance of 1) */
+
+
+function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {
+
+  this.static_tree  = static_tree;  /* static tree or NULL */
+  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */
+  this.extra_base   = extra_base;   /* base index for extra_bits */
+  this.elems        = elems;        /* max number of elements in the tree */
+  this.max_length   = max_length;   /* max bit length for the codes */
+
+  // show if `static_tree` has data or dummy - needed for monomorphic objects
+  this.has_stree    = static_tree && static_tree.length;
+}
+
+
+var static_l_desc;
+var static_d_desc;
+var static_bl_desc;
+
+
+function TreeDesc(dyn_tree, stat_desc) {
+  this.dyn_tree = dyn_tree;     /* the dynamic tree */
+  this.max_code = 0;            /* largest code with non zero frequency */
+  this.stat_desc = stat_desc;   /* the corresponding static tree */
+}
+
+
+
+function d_code(dist) {
+  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];
+}
+
+
+/* ===========================================================================
+ * Output a short LSB first on the stream.
+ * IN assertion: there is enough room in pendingBuf.
+ */
+function put_short(s, w) {
+//    put_byte(s, (uch)((w) & 0xff));
+//    put_byte(s, (uch)((ush)(w) >> 8));
+  s.pending_buf[s.pending++] = (w) & 0xff;
+  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;
+}
+
+
+/* ===========================================================================
+ * Send a value on a given number of bits.
+ * IN assertion: length <= 16 and value fits in length bits.
+ */
+function send_bits(s, value, length) {
+  if (s.bi_valid > (Buf_size - length)) {
+    s.bi_buf |= (value << s.bi_valid) & 0xffff;
+    put_short(s, s.bi_buf);
+    s.bi_buf = value >> (Buf_size - s.bi_valid);
+    s.bi_valid += length - Buf_size;
+  } else {
+    s.bi_buf |= (value << s.bi_valid) & 0xffff;
+    s.bi_valid += length;
+  }
+}
+
+
+function send_code(s, c, tree) {
+  send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);
+}
+
+
+/* ===========================================================================
+ * Reverse the first len bits of a code, using straightforward code (a faster
+ * method would use a table)
+ * IN assertion: 1 <= len <= 15
+ */
+function bi_reverse(code, len) {
+  var res = 0;
+  do {
+    res |= code & 1;
+    code >>>= 1;
+    res <<= 1;
+  } while (--len > 0);
+  return res >>> 1;
+}
+
+
+/* ===========================================================================
+ * Flush the bit buffer, keeping at most 7 bits in it.
+ */
+function bi_flush(s) {
+  if (s.bi_valid === 16) {
+    put_short(s, s.bi_buf);
+    s.bi_buf = 0;
+    s.bi_valid = 0;
+
+  } else if (s.bi_valid >= 8) {
+    s.pending_buf[s.pending++] = s.bi_buf & 0xff;
+    s.bi_buf >>= 8;
+    s.bi_valid -= 8;
+  }
+}
+
+
+/* ===========================================================================
+ * Compute the optimal bit lengths for a tree and update the total bit length
+ * for the current block.
+ * IN assertion: the fields freq and dad are set, heap[heap_max] and
+ *    above are the tree nodes sorted by increasing frequency.
+ * OUT assertions: the field len is set to the optimal bit length, the
+ *     array bl_count contains the frequencies for each bit length.
+ *     The length opt_len is updated; static_len is also updated if stree is
+ *     not null.
+ */
+function gen_bitlen(s, desc)
+//    deflate_state *s;
+//    tree_desc *desc;    /* the tree descriptor */
+{
+  var tree            = desc.dyn_tree;
+  var max_code        = desc.max_code;
+  var stree           = desc.stat_desc.static_tree;
+  var has_stree       = desc.stat_desc.has_stree;
+  var extra           = desc.stat_desc.extra_bits;
+  var base            = desc.stat_desc.extra_base;
+  var max_length      = desc.stat_desc.max_length;
+  var h;              /* heap index */
+  var n, m;           /* iterate over the tree elements */
+  var bits;           /* bit length */
+  var xbits;          /* extra bits */
+  var f;              /* frequency */
+  var overflow = 0;   /* number of elements with bit length too large */
+
+  for (bits = 0; bits <= MAX_BITS; bits++) {
+    s.bl_count[bits] = 0;
+  }
+
+  /* In a first pass, compute the optimal bit lengths (which may
+   * overflow in the case of the bit length tree).
+   */
+  tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */
+
+  for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {
+    n = s.heap[h];
+    bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;
+    if (bits > max_length) {
+      bits = max_length;
+      overflow++;
+    }
+    tree[n * 2 + 1]/*.Len*/ = bits;
+    /* We overwrite tree[n].Dad which is no longer needed */
+
+    if (n > max_code) { continue; } /* not a leaf node */
+
+    s.bl_count[bits]++;
+    xbits = 0;
+    if (n >= base) {
+      xbits = extra[n - base];
+    }
+    f = tree[n * 2]/*.Freq*/;
+    s.opt_len += f * (bits + xbits);
+    if (has_stree) {
+      s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);
+    }
+  }
+  if (overflow === 0) { return; }
+
+  // Trace((stderr,"\nbit length overflow\n"));
+  /* This happens for example on obj2 and pic of the Calgary corpus */
+
+  /* Find the first bit length which could increase: */
+  do {
+    bits = max_length - 1;
+    while (s.bl_count[bits] === 0) { bits--; }
+    s.bl_count[bits]--;      /* move one leaf down the tree */
+    s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */
+    s.bl_count[max_length]--;
+    /* The brother of the overflow item also moves one step up,
+     * but this does not affect bl_count[max_length]
+     */
+    overflow -= 2;
+  } while (overflow > 0);
+
+  /* Now recompute all bit lengths, scanning in increasing frequency.
+   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
+   * lengths instead of fixing only the wrong ones. This idea is taken
+   * from 'ar' written by Haruhiko Okumura.)
+   */
+  for (bits = max_length; bits !== 0; bits--) {
+    n = s.bl_count[bits];
+    while (n !== 0) {
+      m = s.heap[--h];
+      if (m > max_code) { continue; }
+      if (tree[m * 2 + 1]/*.Len*/ !== bits) {
+        // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
+        s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;
+        tree[m * 2 + 1]/*.Len*/ = bits;
+      }
+      n--;
+    }
+  }
+}
+
+
+/* ===========================================================================
+ * Generate the codes for a given tree and bit counts (which need not be
+ * optimal).
+ * IN assertion: the array bl_count contains the bit length statistics for
+ * the given tree and the field len is set for all tree elements.
+ * OUT assertion: the field code is set for all tree elements of non
+ *     zero code length.
+ */
+function gen_codes(tree, max_code, bl_count)
+//    ct_data *tree;             /* the tree to decorate */
+//    int max_code;              /* largest code with non zero frequency */
+//    ushf *bl_count;            /* number of codes at each bit length */
+{
+  var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */
+  var code = 0;              /* running code value */
+  var bits;                  /* bit index */
+  var n;                     /* code index */
+
+  /* The distribution counts are first used to generate the code values
+   * without bit reversal.
+   */
+  for (bits = 1; bits <= MAX_BITS; bits++) {
+    next_code[bits] = code = (code + bl_count[bits - 1]) << 1;
+  }
+  /* Check that the bit counts in bl_count are consistent. The last code
+   * must be all ones.
+   */
+  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
+  //        "inconsistent bit counts");
+  //Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
+
+  for (n = 0;  n <= max_code; n++) {
+    var len = tree[n * 2 + 1]/*.Len*/;
+    if (len === 0) { continue; }
+    /* Now reverse the bits */
+    tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);
+
+    //Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
+    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
+  }
+}
+
+
+/* ===========================================================================
+ * Initialize the various 'constant' tables.
+ */
+function tr_static_init() {
+  var n;        /* iterates over tree elements */
+  var bits;     /* bit counter */
+  var length;   /* length value */
+  var code;     /* code value */
+  var dist;     /* distance index */
+  var bl_count = new Array(MAX_BITS + 1);
+  /* number of codes at each bit length for an optimal tree */
+
+  // do check in _tr_init()
+  //if (static_init_done) return;
+
+  /* For some embedded targets, global variables are not initialized: */
+/*#ifdef NO_INIT_GLOBAL_POINTERS
+  static_l_desc.static_tree = static_ltree;
+  static_l_desc.extra_bits = extra_lbits;
+  static_d_desc.static_tree = static_dtree;
+  static_d_desc.extra_bits = extra_dbits;
+  static_bl_desc.extra_bits = extra_blbits;
+#endif*/
+
+  /* Initialize the mapping length (0..255) -> length code (0..28) */
+  length = 0;
+  for (code = 0; code < LENGTH_CODES - 1; code++) {
+    base_length[code] = length;
+    for (n = 0; n < (1 << extra_lbits[code]); n++) {
+      _length_code[length++] = code;
+    }
+  }
+  //Assert (length == 256, "tr_static_init: length != 256");
+  /* Note that the length 255 (match length 258) can be represented
+   * in two different ways: code 284 + 5 bits or code 285, so we
+   * overwrite length_code[255] to use the best encoding:
+   */
+  _length_code[length - 1] = code;
+
+  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
+  dist = 0;
+  for (code = 0; code < 16; code++) {
+    base_dist[code] = dist;
+    for (n = 0; n < (1 << extra_dbits[code]); n++) {
+      _dist_code[dist++] = code;
+    }
+  }
+  //Assert (dist == 256, "tr_static_init: dist != 256");
+  dist >>= 7; /* from now on, all distances are divided by 128 */
+  for (; code < D_CODES; code++) {
+    base_dist[code] = dist << 7;
+    for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {
+      _dist_code[256 + dist++] = code;
+    }
+  }
+  //Assert (dist == 256, "tr_static_init: 256+dist != 512");
+
+  /* Construct the codes of the static literal tree */
+  for (bits = 0; bits <= MAX_BITS; bits++) {
+    bl_count[bits] = 0;
+  }
+
+  n = 0;
+  while (n <= 143) {
+    static_ltree[n * 2 + 1]/*.Len*/ = 8;
+    n++;
+    bl_count[8]++;
+  }
+  while (n <= 255) {
+    static_ltree[n * 2 + 1]/*.Len*/ = 9;
+    n++;
+    bl_count[9]++;
+  }
+  while (n <= 279) {
+    static_ltree[n * 2 + 1]/*.Len*/ = 7;
+    n++;
+    bl_count[7]++;
+  }
+  while (n <= 287) {
+    static_ltree[n * 2 + 1]/*.Len*/ = 8;
+    n++;
+    bl_count[8]++;
+  }
+  /* Codes 286 and 287 do not exist, but we must include them in the
+   * tree construction to get a canonical Huffman tree (longest code
+   * all ones)
+   */
+  gen_codes(static_ltree, L_CODES + 1, bl_count);
+
+  /* The static distance tree is trivial: */
+  for (n = 0; n < D_CODES; n++) {
+    static_dtree[n * 2 + 1]/*.Len*/ = 5;
+    static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);
+  }
+
+  // Now data ready and we can init static trees
+  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);
+  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);
+  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);
+
+  //static_init_done = true;
+}
+
+
+/* ===========================================================================
+ * Initialize a new block.
+ */
+function init_block(s) {
+  var n; /* iterates over tree elements */
+
+  /* Initialize the trees. */
+  for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }
+  for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }
+  for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }
+
+  s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;
+  s.opt_len = s.static_len = 0;
+  s.last_lit = s.matches = 0;
+}
+
+
+/* ===========================================================================
+ * Flush the bit buffer and align the output on a byte boundary
+ */
+function bi_windup(s)
+{
+  if (s.bi_valid > 8) {
+    put_short(s, s.bi_buf);
+  } else if (s.bi_valid > 0) {
+    //put_byte(s, (Byte)s->bi_buf);
+    s.pending_buf[s.pending++] = s.bi_buf;
+  }
+  s.bi_buf = 0;
+  s.bi_valid = 0;
+}
+
+/* ===========================================================================
+ * Copy a stored block, storing first the length and its
+ * one's complement if requested.
+ */
+function copy_block(s, buf, len, header)
+//DeflateState *s;
+//charf    *buf;    /* the input data */
+//unsigned len;     /* its length */
+//int      header;  /* true if block header must be written */
+{
+  bi_windup(s);        /* align on byte boundary */
+
+  if (header) {
+    put_short(s, len);
+    put_short(s, ~len);
+  }
+//  while (len--) {
+//    put_byte(s, *buf++);
+//  }
+  utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);
+  s.pending += len;
+}
+
+/* ===========================================================================
+ * Compares to subtrees, using the tree depth as tie breaker when
+ * the subtrees have equal frequency. This minimizes the worst case length.
+ */
+function smaller(tree, n, m, depth) {
+  var _n2 = n * 2;
+  var _m2 = m * 2;
+  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||
+         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));
+}
+
+/* ===========================================================================
+ * Restore the heap property by moving down the tree starting at node k,
+ * exchanging a node with the smallest of its two sons if necessary, stopping
+ * when the heap property is re-established (each father smaller than its
+ * two sons).
+ */
+function pqdownheap(s, tree, k)
+//    deflate_state *s;
+//    ct_data *tree;  /* the tree to restore */
+//    int k;               /* node to move down */
+{
+  var v = s.heap[k];
+  var j = k << 1;  /* left son of k */
+  while (j <= s.heap_len) {
+    /* Set j to the smallest of the two sons: */
+    if (j < s.heap_len &&
+      smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {
+      j++;
+    }
+    /* Exit if v is smaller than both sons */
+    if (smaller(tree, v, s.heap[j], s.depth)) { break; }
+
+    /* Exchange v with the smallest son */
+    s.heap[k] = s.heap[j];
+    k = j;
+
+    /* And continue down the tree, setting j to the left son of k */
+    j <<= 1;
+  }
+  s.heap[k] = v;
+}
+
+
+// inlined manually
+// var SMALLEST = 1;
+
+/* ===========================================================================
+ * Send the block data compressed using the given Huffman trees
+ */
+function compress_block(s, ltree, dtree)
+//    deflate_state *s;
+//    const ct_data *ltree; /* literal tree */
+//    const ct_data *dtree; /* distance tree */
+{
+  var dist;           /* distance of matched string */
+  var lc;             /* match length or unmatched char (if dist == 0) */
+  var lx = 0;         /* running index in l_buf */
+  var code;           /* the code to send */
+  var extra;          /* number of extra bits to send */
+
+  if (s.last_lit !== 0) {
+    do {
+      dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);
+      lc = s.pending_buf[s.l_buf + lx];
+      lx++;
+
+      if (dist === 0) {
+        send_code(s, lc, ltree); /* send a literal byte */
+        //Tracecv(isgraph(lc), (stderr," '%c' ", lc));
+      } else {
+        /* Here, lc is the match length - MIN_MATCH */
+        code = _length_code[lc];
+        send_code(s, code + LITERALS + 1, ltree); /* send the length code */
+        extra = extra_lbits[code];
+        if (extra !== 0) {
+          lc -= base_length[code];
+          send_bits(s, lc, extra);       /* send the extra length bits */
+        }
+        dist--; /* dist is now the match distance - 1 */
+        code = d_code(dist);
+        //Assert (code < D_CODES, "bad d_code");
+
+        send_code(s, code, dtree);       /* send the distance code */
+        extra = extra_dbits[code];
+        if (extra !== 0) {
+          dist -= base_dist[code];
+          send_bits(s, dist, extra);   /* send the extra distance bits */
+        }
+      } /* literal or match pair ? */
+
+      /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
+      //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
+      //       "pendingBuf overflow");
+
+    } while (lx < s.last_lit);
+  }
+
+  send_code(s, END_BLOCK, ltree);
+}
+
+
+/* ===========================================================================
+ * Construct one Huffman tree and assigns the code bit strings and lengths.
+ * Update the total bit length for the current block.
+ * IN assertion: the field freq is set for all tree elements.
+ * OUT assertions: the fields len and code are set to the optimal bit length
+ *     and corresponding code. The length opt_len is updated; static_len is
+ *     also updated if stree is not null. The field max_code is set.
+ */
+function build_tree(s, desc)
+//    deflate_state *s;
+//    tree_desc *desc; /* the tree descriptor */
+{
+  var tree     = desc.dyn_tree;
+  var stree    = desc.stat_desc.static_tree;
+  var has_stree = desc.stat_desc.has_stree;
+  var elems    = desc.stat_desc.elems;
+  var n, m;          /* iterate over heap elements */
+  var max_code = -1; /* largest code with non zero frequency */
+  var node;          /* new node being created */
+
+  /* Construct the initial heap, with least frequent element in
+   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
+   * heap[0] is not used.
+   */
+  s.heap_len = 0;
+  s.heap_max = HEAP_SIZE;
+
+  for (n = 0; n < elems; n++) {
+    if (tree[n * 2]/*.Freq*/ !== 0) {
+      s.heap[++s.heap_len] = max_code = n;
+      s.depth[n] = 0;
+
+    } else {
+      tree[n * 2 + 1]/*.Len*/ = 0;
+    }
+  }
+
+  /* The pkzip format requires that at least one distance code exists,
+   * and that at least one bit should be sent even if there is only one
+   * possible code. So to avoid special checks later on we force at least
+   * two codes of non zero frequency.
+   */
+  while (s.heap_len < 2) {
+    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);
+    tree[node * 2]/*.Freq*/ = 1;
+    s.depth[node] = 0;
+    s.opt_len--;
+
+    if (has_stree) {
+      s.static_len -= stree[node * 2 + 1]/*.Len*/;
+    }
+    /* node is 0 or 1 so it does not have extra bits */
+  }
+  desc.max_code = max_code;
+
+  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
+   * establish sub-heaps of increasing lengths:
+   */
+  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }
+
+  /* Construct the Huffman tree by repeatedly combining the least two
+   * frequent nodes.
+   */
+  node = elems;              /* next internal node of the tree */
+  do {
+    //pqremove(s, tree, n);  /* n = node of least frequency */
+    /*** pqremove ***/
+    n = s.heap[1/*SMALLEST*/];
+    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];
+    pqdownheap(s, tree, 1/*SMALLEST*/);
+    /***/
+
+    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */
+
+    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */
+    s.heap[--s.heap_max] = m;
+
+    /* Create a new node father of n and m */
+    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;
+    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;
+    tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;
+
+    /* and insert the new node in the heap */
+    s.heap[1/*SMALLEST*/] = node++;
+    pqdownheap(s, tree, 1/*SMALLEST*/);
+
+  } while (s.heap_len >= 2);
+
+  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];
+
+  /* At this point, the fields freq and dad are set. We can now
+   * generate the bit lengths.
+   */
+  gen_bitlen(s, desc);
+
+  /* The field len is now set, we can generate the bit codes */
+  gen_codes(tree, max_code, s.bl_count);
+}
+
+
+/* ===========================================================================
+ * Scan a literal or distance tree to determine the frequencies of the codes
+ * in the bit length tree.
+ */
+function scan_tree(s, tree, max_code)
+//    deflate_state *s;
+//    ct_data *tree;   /* the tree to be scanned */
+//    int max_code;    /* and its largest code of non zero frequency */
+{
+  var n;                     /* iterates over all tree elements */
+  var prevlen = -1;          /* last emitted length */
+  var curlen;                /* length of current code */
+
+  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */
+
+  var count = 0;             /* repeat count of the current code */
+  var max_count = 7;         /* max repeat count */
+  var min_count = 4;         /* min repeat count */
+
+  if (nextlen === 0) {
+    max_count = 138;
+    min_count = 3;
+  }
+  tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */
+
+  for (n = 0; n <= max_code; n++) {
+    curlen = nextlen;
+    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;
+
+    if (++count < max_count && curlen === nextlen) {
+      continue;
+
+    } else if (count < min_count) {
+      s.bl_tree[curlen * 2]/*.Freq*/ += count;
+
+    } else if (curlen !== 0) {
+
+      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }
+      s.bl_tree[REP_3_6 * 2]/*.Freq*/++;
+
+    } else if (count <= 10) {
+      s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;
+
+    } else {
+      s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;
+    }
+
+    count = 0;
+    prevlen = curlen;
+
+    if (nextlen === 0) {
+      max_count = 138;
+      min_count = 3;
+
+    } else if (curlen === nextlen) {
+      max_count = 6;
+      min_count = 3;
+
+    } else {
+      max_count = 7;
+      min_count = 4;
+    }
+  }
+}
+
+
+/* ===========================================================================
+ * Send a literal or distance tree in compressed form, using the codes in
+ * bl_tree.
+ */
+function send_tree(s, tree, max_code)
+//    deflate_state *s;
+//    ct_data *tree; /* the tree to be scanned */
+//    int max_code;       /* and its largest code of non zero frequency */
+{
+  var n;                     /* iterates over all tree elements */
+  var prevlen = -1;          /* last emitted length */
+  var curlen;                /* length of current code */
+
+  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */
+
+  var count = 0;             /* repeat count of the current code */
+  var max_count = 7;         /* max repeat count */
+  var min_count = 4;         /* min repeat count */
+
+  /* tree[max_code+1].Len = -1; */  /* guard already set */
+  if (nextlen === 0) {
+    max_count = 138;
+    min_count = 3;
+  }
+
+  for (n = 0; n <= max_code; n++) {
+    curlen = nextlen;
+    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;
+
+    if (++count < max_count && curlen === nextlen) {
+      continue;
+
+    } else if (count < min_count) {
+      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);
+
+    } else if (curlen !== 0) {
+      if (curlen !== prevlen) {
+        send_code(s, curlen, s.bl_tree);
+        count--;
+      }
+      //Assert(count >= 3 && count <= 6, " 3_6?");
+      send_code(s, REP_3_6, s.bl_tree);
+      send_bits(s, count - 3, 2);
+
+    } else if (count <= 10) {
+      send_code(s, REPZ_3_10, s.bl_tree);
+      send_bits(s, count - 3, 3);
+
+    } else {
+      send_code(s, REPZ_11_138, s.bl_tree);
+      send_bits(s, count - 11, 7);
+    }
+
+    count = 0;
+    prevlen = curlen;
+    if (nextlen === 0) {
+      max_count = 138;
+      min_count = 3;
+
+    } else if (curlen === nextlen) {
+      max_count = 6;
+      min_count = 3;
+
+    } else {
+      max_count = 7;
+      min_count = 4;
+    }
+  }
+}
+
+
+/* ===========================================================================
+ * Construct the Huffman tree for the bit lengths and return the index in
+ * bl_order of the last bit length code to send.
+ */
+function build_bl_tree(s) {
+  var max_blindex;  /* index of last bit length code of non zero freq */
+
+  /* Determine the bit length frequencies for literal and distance trees */
+  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);
+  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);
+
+  /* Build the bit length tree: */
+  build_tree(s, s.bl_desc);
+  /* opt_len now includes the length of the tree representations, except
+   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
+   */
+
+  /* Determine the number of bit length codes to send. The pkzip format
+   * requires that at least 4 bit length codes be sent. (appnote.txt says
+   * 3 but the actual value used is 4.)
+   */
+  for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {
+    if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {
+      break;
+    }
+  }
+  /* Update opt_len to include the bit length tree and counts */
+  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;
+  //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
+  //        s->opt_len, s->static_len));
+
+  return max_blindex;
+}
+
+
+/* ===========================================================================
+ * Send the header for a block using dynamic Huffman trees: the counts, the
+ * lengths of the bit length codes, the literal tree and the distance tree.
+ * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
+ */
+function send_all_trees(s, lcodes, dcodes, blcodes)
+//    deflate_state *s;
+//    int lcodes, dcodes, blcodes; /* number of codes for each tree */
+{
+  var rank;                    /* index in bl_order */
+
+  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
+  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
+  //        "too many codes");
+  //Tracev((stderr, "\nbl counts: "));
+  send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */
+  send_bits(s, dcodes - 1,   5);
+  send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */
+  for (rank = 0; rank < blcodes; rank++) {
+    //Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
+    send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);
+  }
+  //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
+
+  send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */
+  //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
+
+  send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */
+  //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
+}
+
+
+/* ===========================================================================
+ * Check if the data type is TEXT or BINARY, using the following algorithm:
+ * - TEXT if the two conditions below are satisfied:
+ *    a) There are no non-portable control characters belonging to the
+ *       "black list" (0..6, 14..25, 28..31).
+ *    b) There is at least one printable character belonging to the
+ *       "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
+ * - BINARY otherwise.
+ * - The following partially-portable control characters form a
+ *   "gray list" that is ignored in this detection algorithm:
+ *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
+ * IN assertion: the fields Freq of dyn_ltree are set.
+ */
+function detect_data_type(s) {
+  /* black_mask is the bit mask of black-listed bytes
+   * set bits 0..6, 14..25, and 28..31
+   * 0xf3ffc07f = binary 11110011111111111100000001111111
+   */
+  var black_mask = 0xf3ffc07f;
+  var n;
+
+  /* Check for non-textual ("black-listed") bytes. */
+  for (n = 0; n <= 31; n++, black_mask >>>= 1) {
+    if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {
+      return Z_BINARY;
+    }
+  }
+
+  /* Check for textual ("white-listed") bytes. */
+  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||
+      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {
+    return Z_TEXT;
+  }
+  for (n = 32; n < LITERALS; n++) {
+    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {
+      return Z_TEXT;
+    }
+  }
+
+  /* There are no "black-listed" or "white-listed" bytes:
+   * this stream either is empty or has tolerated ("gray-listed") bytes only.
+   */
+  return Z_BINARY;
+}
+
+
+var static_init_done = false;
+
+/* ===========================================================================
+ * Initialize the tree data structures for a new zlib stream.
+ */
+function _tr_init(s)
+{
+
+  if (!static_init_done) {
+    tr_static_init();
+    static_init_done = true;
+  }
+
+  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);
+  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);
+  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);
+
+  s.bi_buf = 0;
+  s.bi_valid = 0;
+
+  /* Initialize the first block of the first file: */
+  init_block(s);
+}
+
+
+/* ===========================================================================
+ * Send a stored block
+ */
+function _tr_stored_block(s, buf, stored_len, last)
+//DeflateState *s;
+//charf *buf;       /* input block */
+//ulg stored_len;   /* length of input block */
+//int last;         /* one if this is the last block for a file */
+{
+  send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */
+  copy_block(s, buf, stored_len, true); /* with header */
+}
+
+
+/* ===========================================================================
+ * Send one empty static block to give enough lookahead for inflate.
+ * This takes 10 bits, of which 7 may remain in the bit buffer.
+ */
+function _tr_align(s) {
+  send_bits(s, STATIC_TREES << 1, 3);
+  send_code(s, END_BLOCK, static_ltree);
+  bi_flush(s);
+}
+
+
+/* ===========================================================================
+ * Determine the best encoding for the current block: dynamic trees, static
+ * trees or store, and output the encoded block to the zip file.
+ */
+function _tr_flush_block(s, buf, stored_len, last)
+//DeflateState *s;
+//charf *buf;       /* input block, or NULL if too old */
+//ulg stored_len;   /* length of input block */
+//int last;         /* one if this is the last block for a file */
+{
+  var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */
+  var max_blindex = 0;        /* index of last bit length code of non zero freq */
+
+  /* Build the Huffman trees unless a stored block is forced */
+  if (s.level > 0) {
+
+    /* Check if the file is binary or text */
+    if (s.strm.data_type === Z_UNKNOWN) {
+      s.strm.data_type = detect_data_type(s);
+    }
+
+    /* Construct the literal and distance trees */
+    build_tree(s, s.l_desc);
+    // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
+    //        s->static_len));
+
+    build_tree(s, s.d_desc);
+    // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
+    //        s->static_len));
+    /* At this point, opt_len and static_len are the total bit lengths of
+     * the compressed block data, excluding the tree representations.
+     */
+
+    /* Build the bit length tree for the above two trees, and get the index
+     * in bl_order of the last bit length code to send.
+     */
+    max_blindex = build_bl_tree(s);
+
+    /* Determine the best encoding. Compute the block lengths in bytes. */
+    opt_lenb = (s.opt_len + 3 + 7) >>> 3;
+    static_lenb = (s.static_len + 3 + 7) >>> 3;
+
+    // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
+    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
+    //        s->last_lit));
+
+    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }
+
+  } else {
+    // Assert(buf != (char*)0, "lost buf");
+    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
+  }
+
+  if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {
+    /* 4: two words for the lengths */
+
+    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
+     * Otherwise we can't have processed more than WSIZE input bytes since
+     * the last block flush, because compression would have been
+     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
+     * transform a block into a stored block.
+     */
+    _tr_stored_block(s, buf, stored_len, last);
+
+  } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {
+
+    send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);
+    compress_block(s, static_ltree, static_dtree);
+
+  } else {
+    send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);
+    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);
+    compress_block(s, s.dyn_ltree, s.dyn_dtree);
+  }
+  // Assert (s->compressed_len == s->bits_sent, "bad compressed size");
+  /* The above check is made mod 2^32, for files larger than 512 MB
+   * and uLong implemented on 32 bits.
+   */
+  init_block(s);
+
+  if (last) {
+    bi_windup(s);
+  }
+  // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
+  //       s->compressed_len-7*last));
+}
+
+/* ===========================================================================
+ * Save the match info and tally the frequency counts. Return true if
+ * the current block must be flushed.
+ */
+function _tr_tally(s, dist, lc)
+//    deflate_state *s;
+//    unsigned dist;  /* distance of matched string */
+//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */
+{
+  //var out_length, in_length, dcode;
+
+  s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;
+  s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;
+
+  s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;
+  s.last_lit++;
+
+  if (dist === 0) {
+    /* lc is the unmatched char */
+    s.dyn_ltree[lc * 2]/*.Freq*/++;
+  } else {
+    s.matches++;
+    /* Here, lc is the match length - MIN_MATCH */
+    dist--;             /* dist = match distance - 1 */
+    //Assert((ush)dist < (ush)MAX_DIST(s) &&
+    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
+    //       (ush)d_code(dist) < (ush)D_CODES,  "_tr_tally: bad match");
+
+    s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;
+    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;
+  }
+
+// (!) This block is disabled in zlib defaults,
+// don't enable it for binary compatibility
+
+//#ifdef TRUNCATE_BLOCK
+//  /* Try to guess if it is profitable to stop the current block here */
+//  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {
+//    /* Compute an upper bound for the compressed length */
+//    out_length = s.last_lit*8;
+//    in_length = s.strstart - s.block_start;
+//
+//    for (dcode = 0; dcode < D_CODES; dcode++) {
+//      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);
+//    }
+//    out_length >>>= 3;
+//    //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
+//    //       s->last_lit, in_length, out_length,
+//    //       100L - out_length*100L/in_length));
+//    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {
+//      return true;
+//    }
+//  }
+//#endif
+
+  return (s.last_lit === s.lit_bufsize - 1);
+  /* We avoid equality with lit_bufsize because of wraparound at 64K
+   * on 16 bit machines and because stored blocks are restricted to
+   * 64K-1 bytes.
+   */
+}
+
+exports._tr_init  = _tr_init;
+exports._tr_stored_block = _tr_stored_block;
+exports._tr_flush_block  = _tr_flush_block;
+exports._tr_tally = _tr_tally;
+exports._tr_align = _tr_align;
+
+},{"../utils/common":39}],51:[function(require,module,exports){
+'use strict';
+
+// (C) 1995-2013 Jean-loup Gailly and Mark Adler
+// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//   claim that you wrote the original software. If you use this software
+//   in a product, an acknowledgment in the product documentation would be
+//   appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+//   misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+
+function ZStream() {
+  /* next input byte */
+  this.input = null; // JS specific, because we have no pointers
+  this.next_in = 0;
+  /* number of bytes available at input */
+  this.avail_in = 0;
+  /* total number of input bytes read so far */
+  this.total_in = 0;
+  /* next output byte should be put there */
+  this.output = null; // JS specific, because we have no pointers
+  this.next_out = 0;
+  /* remaining free space at output */
+  this.avail_out = 0;
+  /* total number of bytes output so far */
+  this.total_out = 0;
+  /* last error message, NULL if no error */
+  this.msg = ''/*Z_NULL*/;
+  /* not visible by applications */
+  this.state = null;
+  /* best guess about the data type: binary or text */
+  this.data_type = 2/*Z_UNKNOWN*/;
+  /* adler32 value of the uncompressed data */
+  this.adler = 0;
+}
+
+module.exports = ZStream;
+
+},{}],52:[function(require,module,exports){
+require('text-encoding-polyfill');
+var StringDecoder = require('string_decoder').StringDecoder;
+function defaultDecoder(data) {
+  var decoder = new StringDecoder();
+  var out = decoder.write(data) + decoder.end();
+  return out.replace(/\0/g, '').trim();
+}
+module.exports = createDecoder;
+var regex = /^(?:ASNI\s)?(\d+)$/m;
+function createDecoder(encoding) {
+  if (!encoding) {
+    return defaultDecoder;
+  }
+  try {
+    new TextDecoder(encoding.trim());
+  } catch(e) {
+    var match = regex.exec(encoding);
+    if (match) {
+      encoding = 'windows-' + match[1];
+    }
+  }
+  return browserDecoder;
+  function browserDecoder(buffer) {
+    var decoder = new TextDecoder(encoding);
+    var out = decoder.decode(buffer, {
+      stream: true
+    }) + decoder.decode();
+    return out.replace(/\0/g, '').trim();
+  }
+}
+
+},{"string_decoder":55,"text-encoding-polyfill":56}],53:[function(require,module,exports){
+var createDecoder = require('./decoder');
+function dbfHeader(data) {
+  var out = {};
+  out.lastUpdated = new Date(data.readUInt8(1) + 1900, data.readUInt8(2), data.readUInt8(3));
+  out.records = data.readUInt32LE(4);
+  out.headerLen = data.readUInt16LE(8);
+  out.recLen = data.readUInt16LE(10);
+  return out;
+}
+
+function dbfRowHeader(data, headerLen, decoder) {
+  var out = [];
+  var offset = 32;
+  while (offset < headerLen) {
+    out.push({
+      name: decoder(data.slice(offset, offset + 11)),
+      dataType: String.fromCharCode(data.readUInt8(offset + 11)),
+      len: data.readUInt8(offset + 16),
+      decimal: data.readUInt8(offset + 17)
+    });
+    if (data.readUInt8(offset + 32) === 13) {
+      break;
+    } else {
+      offset += 32;
+    }
+  }
+  return out;
+}
+
+function rowFuncs(buffer, offset, len, type, decoder) {
+  var data = buffer.slice(offset, offset + len);
+  var textData = decoder(data);
+  switch (type) {
+    case 'N':
+    case 'F':
+    case 'O':
+      return parseFloat(textData, 10);
+    case 'D':
+      return new Date(textData.slice(0, 4), parseInt(textData.slice(4, 6), 10) - 1, textData.slice(6, 8));
+    case 'L':
+      return textData.toLowerCase() === 'y' || textData.toLowerCase() === 't';
+    default:
+      return textData;
+  }
+}
+
+function parseRow(buffer, offset, rowHeaders, decoder) {
+  var out = {};
+  var i = 0;
+  var len = rowHeaders.length;
+  var field;
+  var header;
+  while (i < len) {
+    header = rowHeaders[i];
+    field = rowFuncs(buffer, offset, header.len, header.dataType, decoder);
+    offset += header.len;
+    if (typeof field !== 'undefined') {
+      out[header.name] = field;
+    }
+    i++;
+  }
+  return out;
+}
+
+module.exports = function(buffer, encoding) {
+  var decoder = createDecoder(encoding);
+  var header = dbfHeader(buffer);
+  var rowHeaders = dbfRowHeader(buffer, header.headerLen - 1, decoder);
+
+  var offset = ((rowHeaders.length + 1) << 5) + 2;
+  var recLen = header.recLen;
+  var records = header.records;
+  var out = [];
+  while (records) {
+    out.push(parseRow(buffer, offset, rowHeaders, decoder));
+    offset += recLen;
+    records--;
+  }
+  return out;
+};
+
+},{"./decoder":52}],54:[function(require,module,exports){
+(function (global, factory) {
+	typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+	typeof define === 'function' && define.amd ? define(factory) :
+	(global.proj4 = factory());
+}(this, (function () { 'use strict';
+
+	var globals = function(defs) {
+	  defs('EPSG:4326', "+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees");
+	  defs('EPSG:4269', "+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees");
+	  defs('EPSG:3857', "+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs");
+
+	  defs.WGS84 = defs['EPSG:4326'];
+	  defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857
+	  defs.GOOGLE = defs['EPSG:3857'];
+	  defs['EPSG:900913'] = defs['EPSG:3857'];
+	  defs['EPSG:102113'] = defs['EPSG:3857'];
+	};
+
+	var PJD_3PARAM = 1;
+	var PJD_7PARAM = 2;
+	var PJD_WGS84 = 4; // WGS84 or equivalent
+	var PJD_NODATUM = 5; // WGS84 or equivalent
+	var SEC_TO_RAD = 4.84813681109535993589914102357e-6;
+	var HALF_PI = Math.PI/2;
+	// ellipoid pj_set_ell.c
+	var SIXTH = 0.1666666666666666667;
+	/* 1/6 */
+	var RA4 = 0.04722222222222222222;
+	/* 17/360 */
+	var RA6 = 0.02215608465608465608;
+	var EPSLN = 1.0e-10;
+	// you'd think you could use Number.EPSILON above but that makes
+	// Mollweide get into an infinate loop.
+
+	var D2R = 0.01745329251994329577;
+	var R2D = 57.29577951308232088;
+	var FORTPI = Math.PI/4;
+	var TWO_PI = Math.PI * 2;
+	// SPI is slightly greater than Math.PI, so values that exceed the -180..180
+	// degree range by a tiny amount don't get wrapped. This prevents points that
+	// have drifted from their original location along the 180th meridian (due to
+	// floating point error) from changing their sign.
+	var SPI = 3.14159265359;
+
+	var exports$1 = {};
+	exports$1.greenwich = 0.0; //"0dE",
+	exports$1.lisbon = -9.131906111111; //"9d07'54.862\"W",
+	exports$1.paris = 2.337229166667; //"2d20'14.025\"E",
+	exports$1.bogota = -74.080916666667; //"74d04'51.3\"W",
+	exports$1.madrid = -3.687938888889; //"3d41'16.58\"W",
+	exports$1.rome = 12.452333333333; //"12d27'8.4\"E",
+	exports$1.bern = 7.439583333333; //"7d26'22.5\"E",
+	exports$1.jakarta = 106.807719444444; //"106d48'27.79\"E",
+	exports$1.ferro = -17.666666666667; //"17d40'W",
+	exports$1.brussels = 4.367975; //"4d22'4.71\"E",
+	exports$1.stockholm = 18.058277777778; //"18d3'29.8\"E",
+	exports$1.athens = 23.7163375; //"23d42'58.815\"E",
+	exports$1.oslo = 10.722916666667; //"10d43'22.5\"E"
+
+	var units = {
+	  ft: {to_meter: 0.3048},
+	  'us-ft': {to_meter: 1200 / 3937}
+	};
+
+	var ignoredChar = /[\s_\-\/\(\)]/g;
+	function match(obj, key) {
+	  if (obj[key]) {
+	    return obj[key];
+	  }
+	  var keys = Object.keys(obj);
+	  var lkey = key.toLowerCase().replace(ignoredChar, '');
+	  var i = -1;
+	  var testkey, processedKey;
+	  while (++i < keys.length) {
+	    testkey = keys[i];
+	    processedKey = testkey.toLowerCase().replace(ignoredChar, '');
+	    if (processedKey === lkey) {
+	      return obj[testkey];
+	    }
+	  }
+	}
+
+	var parseProj = function(defData) {
+	  var self = {};
+	  var paramObj = defData.split('+').map(function(v) {
+	    return v.trim();
+	  }).filter(function(a) {
+	    return a;
+	  }).reduce(function(p, a) {
+	    var split = a.split('=');
+	    split.push(true);
+	    p[split[0].toLowerCase()] = split[1];
+	    return p;
+	  }, {});
+	  var paramName, paramVal, paramOutname;
+	  var params = {
+	    proj: 'projName',
+	    datum: 'datumCode',
+	    rf: function(v) {
+	      self.rf = parseFloat(v);
+	    },
+	    lat_0: function(v) {
+	      self.lat0 = v * D2R;
+	    },
+	    lat_1: function(v) {
+	      self.lat1 = v * D2R;
+	    },
+	    lat_2: function(v) {
+	      self.lat2 = v * D2R;
+	    },
+	    lat_ts: function(v) {
+	      self.lat_ts = v * D2R;
+	    },
+	    lon_0: function(v) {
+	      self.long0 = v * D2R;
+	    },
+	    lon_1: function(v) {
+	      self.long1 = v * D2R;
+	    },
+	    lon_2: function(v) {
+	      self.long2 = v * D2R;
+	    },
+	    alpha: function(v) {
+	      self.alpha = parseFloat(v) * D2R;
+	    },
+	    lonc: function(v) {
+	      self.longc = v * D2R;
+	    },
+	    x_0: function(v) {
+	      self.x0 = parseFloat(v);
+	    },
+	    y_0: function(v) {
+	      self.y0 = parseFloat(v);
+	    },
+	    k_0: function(v) {
+	      self.k0 = parseFloat(v);
+	    },
+	    k: function(v) {
+	      self.k0 = parseFloat(v);
+	    },
+	    a: function(v) {
+	      self.a = parseFloat(v);
+	    },
+	    b: function(v) {
+	      self.b = parseFloat(v);
+	    },
+	    r_a: function() {
+	      self.R_A = true;
+	    },
+	    zone: function(v) {
+	      self.zone = parseInt(v, 10);
+	    },
+	    south: function() {
+	      self.utmSouth = true;
+	    },
+	    towgs84: function(v) {
+	      self.datum_params = v.split(",").map(function(a) {
+	        return parseFloat(a);
+	      });
+	    },
+	    to_meter: function(v) {
+	      self.to_meter = parseFloat(v);
+	    },
+	    units: function(v) {
+	      self.units = v;
+	      var unit = match(units, v);
+	      if (unit) {
+	        self.to_meter = unit.to_meter;
+	      }
+	    },
+	    from_greenwich: function(v) {
+	      self.from_greenwich = v * D2R;
+	    },
+	    pm: function(v) {
+	      var pm = match(exports$1, v);
+	      self.from_greenwich = (pm ? pm : parseFloat(v)) * D2R;
+	    },
+	    nadgrids: function(v) {
+	      if (v === '@null') {
+	        self.datumCode = 'none';
+	      }
+	      else {
+	        self.nadgrids = v;
+	      }
+	    },
+	    axis: function(v) {
+	      var legalAxis = "ewnsud";
+	      if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) {
+	        self.axis = v;
+	      }
+	    }
+	  };
+	  for (paramName in paramObj) {
+	    paramVal = paramObj[paramName];
+	    if (paramName in params) {
+	      paramOutname = params[paramName];
+	      if (typeof paramOutname === 'function') {
+	        paramOutname(paramVal);
+	      }
+	      else {
+	        self[paramOutname] = paramVal;
+	      }
+	    }
+	    else {
+	      self[paramName] = paramVal;
+	    }
+	  }
+	  if(typeof self.datumCode === 'string' && self.datumCode !== "WGS84"){
+	    self.datumCode = self.datumCode.toLowerCase();
+	  }
+	  return self;
+	};
+
+	var NEUTRAL = 1;
+	var KEYWORD = 2;
+	var NUMBER = 3;
+	var QUOTED = 4;
+	var AFTERQUOTE = 5;
+	var ENDED = -1;
+	var whitespace = /\s/;
+	var latin = /[A-Za-z]/;
+	var keyword = /[A-Za-z84]/;
+	var endThings = /[,\]]/;
+	var digets = /[\d\.E\-\+]/;
+	// const ignoredChar = /[\s_\-\/\(\)]/g;
+	function Parser(text) {
+	  if (typeof text !== 'string') {
+	    throw new Error('not a string');
+	  }
+	  this.text = text.trim();
+	  this.level = 0;
+	  this.place = 0;
+	  this.root = null;
+	  this.stack = [];
+	  this.currentObject = null;
+	  this.state = NEUTRAL;
+	}
+	Parser.prototype.readCharicter = function() {
+	  var char = this.text[this.place++];
+	  if (this.state !== QUOTED) {
+	    while (whitespace.test(char)) {
+	      if (this.place >= this.text.length) {
+	        return;
+	      }
+	      char = this.text[this.place++];
+	    }
+	  }
+	  switch (this.state) {
+	    case NEUTRAL:
+	      return this.neutral(char);
+	    case KEYWORD:
+	      return this.keyword(char)
+	    case QUOTED:
+	      return this.quoted(char);
+	    case AFTERQUOTE:
+	      return this.afterquote(char);
+	    case NUMBER:
+	      return this.number(char);
+	    case ENDED:
+	      return;
+	  }
+	};
+	Parser.prototype.afterquote = function(char) {
+	  if (char === '"') {
+	    this.word += '"';
+	    this.state = QUOTED;
+	    return;
+	  }
+	  if (endThings.test(char)) {
+	    this.word = this.word.trim();
+	    this.afterItem(char);
+	    return;
+	  }
+	  throw new Error('havn\'t handled "' +char + '" in afterquote yet, index ' + this.place);
+	};
+	Parser.prototype.afterItem = function(char) {
+	  if (char === ',') {
+	    if (this.word !== null) {
+	      this.currentObject.push(this.word);
+	    }
+	    this.word = null;
+	    this.state = NEUTRAL;
+	    return;
+	  }
+	  if (char === ']') {
+	    this.level--;
+	    if (this.word !== null) {
+	      this.currentObject.push(this.word);
+	      this.word = null;
+	    }
+	    this.state = NEUTRAL;
+	    this.currentObject = this.stack.pop();
+	    if (!this.currentObject) {
+	      this.state = ENDED;
+	    }
+
+	    return;
+	  }
+	};
+	Parser.prototype.number = function(char) {
+	  if (digets.test(char)) {
+	    this.word += char;
+	    return;
+	  }
+	  if (endThings.test(char)) {
+	    this.word = parseFloat(this.word);
+	    this.afterItem(char);
+	    return;
+	  }
+	  throw new Error('havn\'t handled "' +char + '" in number yet, index ' + this.place);
+	};
+	Parser.prototype.quoted = function(char) {
+	  if (char === '"') {
+	    this.state = AFTERQUOTE;
+	    return;
+	  }
+	  this.word += char;
+	  return;
+	};
+	Parser.prototype.keyword = function(char) {
+	  if (keyword.test(char)) {
+	    this.word += char;
+	    return;
+	  }
+	  if (char === '[') {
+	    var newObjects = [];
+	    newObjects.push(this.word);
+	    this.level++;
+	    if (this.root === null) {
+	      this.root = newObjects;
+	    } else {
+	      this.currentObject.push(newObjects);
+	    }
+	    this.stack.push(this.currentObject);
+	    this.currentObject = newObjects;
+	    this.state = NEUTRAL;
+	    return;
+	  }
+	  if (endThings.test(char)) {
+	    this.afterItem(char);
+	    return;
+	  }
+	  throw new Error('havn\'t handled "' +char + '" in keyword yet, index ' + this.place);
+	};
+	Parser.prototype.neutral = function(char) {
+	  if (latin.test(char)) {
+	    this.word = char;
+	    this.state = KEYWORD;
+	    return;
+	  }
+	  if (char === '"') {
+	    this.word = '';
+	    this.state = QUOTED;
+	    return;
+	  }
+	  if (digets.test(char)) {
+	    this.word = char;
+	    this.state = NUMBER;
+	    return;
+	  }
+	  if (endThings.test(char)) {
+	    this.afterItem(char);
+	    return;
+	  }
+	  throw new Error('havn\'t handled "' +char + '" in neutral yet, index ' + this.place);
+	};
+	Parser.prototype.output = function() {
+	  while (this.place < this.text.length) {
+	    this.readCharicter();
+	  }
+	  if (this.state === ENDED) {
+	    return this.root;
+	  }
+	  throw new Error('unable to parse string "' +this.text + '". State is ' + this.state);
+	};
+
+	function parseString(txt) {
+	  var parser = new Parser(txt);
+	  return parser.output();
+	}
+
+	function mapit(obj, key, value) {
+	  if (Array.isArray(key)) {
+	    value.unshift(key);
+	    key = null;
+	  }
+	  var thing = key ? {} : obj;
+
+	  var out = value.reduce(function(newObj, item) {
+	    sExpr(item, newObj);
+	    return newObj
+	  }, thing);
+	  if (key) {
+	    obj[key] = out;
+	  }
+	}
+
+	function sExpr(v, obj) {
+	  if (!Array.isArray(v)) {
+	    obj[v] = true;
+	    return;
+	  }
+	  var key = v.shift();
+	  if (key === 'PARAMETER') {
+	    key = v.shift();
+	  }
+	  if (v.length === 1) {
+	    if (Array.isArray(v[0])) {
+	      obj[key] = {};
+	      sExpr(v[0], obj[key]);
+	      return;
+	    }
+	    obj[key] = v[0];
+	    return;
+	  }
+	  if (!v.length) {
+	    obj[key] = true;
+	    return;
+	  }
+	  if (key === 'TOWGS84') {
+	    obj[key] = v;
+	    return;
+	  }
+	  if (!Array.isArray(key)) {
+	    obj[key] = {};
+	  }
+
+	  var i;
+	  switch (key) {
+	    case 'UNIT':
+	    case 'PRIMEM':
+	    case 'VERT_DATUM':
+	      obj[key] = {
+	        name: v[0].toLowerCase(),
+	        convert: v[1]
+	      };
+	      if (v.length === 3) {
+	        sExpr(v[2], obj[key]);
+	      }
+	      return;
+	    case 'SPHEROID':
+	    case 'ELLIPSOID':
+	      obj[key] = {
+	        name: v[0],
+	        a: v[1],
+	        rf: v[2]
+	      };
+	      if (v.length === 4) {
+	        sExpr(v[3], obj[key]);
+	      }
+	      return;
+	    case 'PROJECTEDCRS':
+	    case 'PROJCRS':
+	    case 'GEOGCS':
+	    case 'GEOCCS':
+	    case 'PROJCS':
+	    case 'LOCAL_CS':
+	    case 'GEODCRS':
+	    case 'GEODETICCRS':
+	    case 'GEODETICDATUM':
+	    case 'EDATUM':
+	    case 'ENGINEERINGDATUM':
+	    case 'VERT_CS':
+	    case 'VERTCRS':
+	    case 'VERTICALCRS':
+	    case 'COMPD_CS':
+	    case 'COMPOUNDCRS':
+	    case 'ENGINEERINGCRS':
+	    case 'ENGCRS':
+	    case 'FITTED_CS':
+	    case 'LOCAL_DATUM':
+	    case 'DATUM':
+	      v[0] = ['name', v[0]];
+	      mapit(obj, key, v);
+	      return;
+	    default:
+	      i = -1;
+	      while (++i < v.length) {
+	        if (!Array.isArray(v[i])) {
+	          return sExpr(v, obj[key]);
+	        }
+	      }
+	      return mapit(obj, key, v);
+	  }
+	}
+
+	var D2R$1 = 0.01745329251994329577;
+	function rename(obj, params) {
+	  var outName = params[0];
+	  var inName = params[1];
+	  if (!(outName in obj) && (inName in obj)) {
+	    obj[outName] = obj[inName];
+	    if (params.length === 3) {
+	      obj[outName] = params[2](obj[outName]);
+	    }
+	  }
+	}
+
+	function d2r(input) {
+	  return input * D2R$1;
+	}
+
+	function cleanWKT(wkt) {
+	  if (wkt.type === 'GEOGCS') {
+	    wkt.projName = 'longlat';
+	  } else if (wkt.type === 'LOCAL_CS') {
+	    wkt.projName = 'identity';
+	    wkt.local = true;
+	  } else {
+	    if (typeof wkt.PROJECTION === 'object') {
+	      wkt.projName = Object.keys(wkt.PROJECTION)[0];
+	    } else {
+	      wkt.projName = wkt.PROJECTION;
+	    }
+	  }
+	  if (wkt.UNIT) {
+	    wkt.units = wkt.UNIT.name.toLowerCase();
+	    if (wkt.units === 'metre') {
+	      wkt.units = 'meter';
+	    }
+	    if (wkt.UNIT.convert) {
+	      if (wkt.type === 'GEOGCS') {
+	        if (wkt.DATUM && wkt.DATUM.SPHEROID) {
+	          wkt.to_meter = wkt.UNIT.convert*wkt.DATUM.SPHEROID.a;
+	        }
+	      } else {
+	        wkt.to_meter = wkt.UNIT.convert, 10;
+	      }
+	    }
+	  }
+	  var geogcs = wkt.GEOGCS;
+	  if (wkt.type === 'GEOGCS') {
+	    geogcs = wkt;
+	  }
+	  if (geogcs) {
+	    //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){
+	    //  wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R;
+	    //}
+	    if (geogcs.DATUM) {
+	      wkt.datumCode = geogcs.DATUM.name.toLowerCase();
+	    } else {
+	      wkt.datumCode = geogcs.name.toLowerCase();
+	    }
+	    if (wkt.datumCode.slice(0, 2) === 'd_') {
+	      wkt.datumCode = wkt.datumCode.slice(2);
+	    }
+	    if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') {
+	      wkt.datumCode = 'nzgd49';
+	    }
+	    if (wkt.datumCode === 'wgs_1984') {
+	      if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') {
+	        wkt.sphere = true;
+	      }
+	      wkt.datumCode = 'wgs84';
+	    }
+	    if (wkt.datumCode.slice(-6) === '_ferro') {
+	      wkt.datumCode = wkt.datumCode.slice(0, - 6);
+	    }
+	    if (wkt.datumCode.slice(-8) === '_jakarta') {
+	      wkt.datumCode = wkt.datumCode.slice(0, - 8);
+	    }
+	    if (~wkt.datumCode.indexOf('belge')) {
+	      wkt.datumCode = 'rnb72';
+	    }
+	    if (geogcs.DATUM && geogcs.DATUM.SPHEROID) {
+	      wkt.ellps = geogcs.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\_18/, 'clrk');
+	      if (wkt.ellps.toLowerCase().slice(0, 13) === 'international') {
+	        wkt.ellps = 'intl';
+	      }
+
+	      wkt.a = geogcs.DATUM.SPHEROID.a;
+	      wkt.rf = parseFloat(geogcs.DATUM.SPHEROID.rf, 10);
+	    }
+	    if (~wkt.datumCode.indexOf('osgb_1936')) {
+	      wkt.datumCode = 'osgb36';
+	    }
+	    if (~wkt.datumCode.indexOf('osni_1952')) {
+	      wkt.datumCode = 'osni52';
+	    }
+	    if (~wkt.datumCode.indexOf('tm65')
+	      || ~wkt.datumCode.indexOf('geodetic_datum_of_1965')) {
+	      wkt.datumCode = 'ire65';
+	    }
+	  }
+	  if (wkt.b && !isFinite(wkt.b)) {
+	    wkt.b = wkt.a;
+	  }
+
+	  function toMeter(input) {
+	    var ratio = wkt.to_meter || 1;
+	    return input * ratio;
+	  }
+	  var renamer = function(a) {
+	    return rename(wkt, a);
+	  };
+	  var list = [
+	    ['standard_parallel_1', 'Standard_Parallel_1'],
+	    ['standard_parallel_2', 'Standard_Parallel_2'],
+	    ['false_easting', 'False_Easting'],
+	    ['false_northing', 'False_Northing'],
+	    ['central_meridian', 'Central_Meridian'],
+	    ['latitude_of_origin', 'Latitude_Of_Origin'],
+	    ['latitude_of_origin', 'Central_Parallel'],
+	    ['scale_factor', 'Scale_Factor'],
+	    ['k0', 'scale_factor'],
+	    ['latitude_of_center', 'Latitude_of_center'],
+	    ['lat0', 'latitude_of_center', d2r],
+	    ['longitude_of_center', 'Longitude_Of_Center'],
+	    ['longc', 'longitude_of_center', d2r],
+	    ['x0', 'false_easting', toMeter],
+	    ['y0', 'false_northing', toMeter],
+	    ['long0', 'central_meridian', d2r],
+	    ['lat0', 'latitude_of_origin', d2r],
+	    ['lat0', 'standard_parallel_1', d2r],
+	    ['lat1', 'standard_parallel_1', d2r],
+	    ['lat2', 'standard_parallel_2', d2r],
+	    ['alpha', 'azimuth', d2r],
+	    ['srsCode', 'name']
+	  ];
+	  list.forEach(renamer);
+	  if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === 'Lambert_Azimuthal_Equal_Area')) {
+	    wkt.long0 = wkt.longc;
+	  }
+	  if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) {
+	    wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90);
+	    wkt.lat_ts = wkt.lat1;
+	  }
+	}
+	var wkt = function(wkt) {
+	  var lisp = parseString(wkt);
+	  var type = lisp.shift();
+	  var name = lisp.shift();
+	  lisp.unshift(['name', name]);
+	  lisp.unshift(['type', type]);
+	  var obj = {};
+	  sExpr(lisp, obj);
+	  cleanWKT(obj);
+	  return obj;
+	};
+
+	function defs(name) {
+	  /*global console*/
+	  var that = this;
+	  if (arguments.length === 2) {
+	    var def = arguments[1];
+	    if (typeof def === 'string') {
+	      if (def.charAt(0) === '+') {
+	        defs[name] = parseProj(arguments[1]);
+	      }
+	      else {
+	        defs[name] = wkt(arguments[1]);
+	      }
+	    } else {
+	      defs[name] = def;
+	    }
+	  }
+	  else if (arguments.length === 1) {
+	    if (Array.isArray(name)) {
+	      return name.map(function(v) {
+	        if (Array.isArray(v)) {
+	          defs.apply(that, v);
+	        }
+	        else {
+	          defs(v);
+	        }
+	      });
+	    }
+	    else if (typeof name === 'string') {
+	      if (name in defs) {
+	        return defs[name];
+	      }
+	    }
+	    else if ('EPSG' in name) {
+	      defs['EPSG:' + name.EPSG] = name;
+	    }
+	    else if ('ESRI' in name) {
+	      defs['ESRI:' + name.ESRI] = name;
+	    }
+	    else if ('IAU2000' in name) {
+	      defs['IAU2000:' + name.IAU2000] = name;
+	    }
+	    else {
+	      console.log(name);
+	    }
+	    return;
+	  }
+
+
+	}
+	globals(defs);
+
+	function testObj(code){
+	  return typeof code === 'string';
+	}
+	function testDef(code){
+	  return code in defs;
+	}
+	 var codeWords = ['PROJECTEDCRS', 'PROJCRS', 'GEOGCS','GEOCCS','PROJCS','LOCAL_CS', 'GEODCRS', 'GEODETICCRS', 'GEODETICDATUM', 'ENGCRS', 'ENGINEERINGCRS']; 
+	function testWKT(code){
+	  return codeWords.some(function (word) {
+	    return code.indexOf(word) > -1;
+	  });
+	}
+	function testProj(code){
+	  return code[0] === '+';
+	}
+	function parse(code){
+	  if (testObj(code)) {
+	    //check to see if this is a WKT string
+	    if (testDef(code)) {
+	      return defs[code];
+	    }
+	    if (testWKT(code)) {
+	      return wkt(code);
+	    }
+	    if (testProj(code)) {
+	      return parseProj(code);
+	    }
+	  }else{
+	    return code;
+	  }
+	}
+
+	var extend = function(destination, source) {
+	  destination = destination || {};
+	  var value, property;
+	  if (!source) {
+	    return destination;
+	  }
+	  for (property in source) {
+	    value = source[property];
+	    if (value !== undefined) {
+	      destination[property] = value;
+	    }
+	  }
+	  return destination;
+	};
+
+	var msfnz = function(eccent, sinphi, cosphi) {
+	  var con = eccent * sinphi;
+	  return cosphi / (Math.sqrt(1 - con * con));
+	};
+
+	var sign = function(x) {
+	  return x<0 ? -1 : 1;
+	};
+
+	var adjust_lon = function(x) {
+	  return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI));
+	};
+
+	var tsfnz = function(eccent, phi, sinphi) {
+	  var con = eccent * sinphi;
+	  var com = 0.5 * eccent;
+	  con = Math.pow(((1 - con) / (1 + con)), com);
+	  return (Math.tan(0.5 * (HALF_PI - phi)) / con);
+	};
+
+	var phi2z = function(eccent, ts) {
+	  var eccnth = 0.5 * eccent;
+	  var con, dphi;
+	  var phi = HALF_PI - 2 * Math.atan(ts);
+	  for (var i = 0; i <= 15; i++) {
+	    con = eccent * Math.sin(phi);
+	    dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi;
+	    phi += dphi;
+	    if (Math.abs(dphi) <= 0.0000000001) {
+	      return phi;
+	    }
+	  }
+	  //console.log("phi2z has NoConvergence");
+	  return -9999;
+	};
+
+	function init() {
+	  var con = this.b / this.a;
+	  this.es = 1 - con * con;
+	  if(!('x0' in this)){
+	    this.x0 = 0;
+	  }
+	  if(!('y0' in this)){
+	    this.y0 = 0;
+	  }
+	  this.e = Math.sqrt(this.es);
+	  if (this.lat_ts) {
+	    if (this.sphere) {
+	      this.k0 = Math.cos(this.lat_ts);
+	    }
+	    else {
+	      this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));
+	    }
+	  }
+	  else {
+	    if (!this.k0) {
+	      if (this.k) {
+	        this.k0 = this.k;
+	      }
+	      else {
+	        this.k0 = 1;
+	      }
+	    }
+	  }
+	}
+
+	/* Mercator forward equations--mapping lat,long to x,y
+	  --------------------------------------------------*/
+
+	function forward(p) {
+	  var lon = p.x;
+	  var lat = p.y;
+	  // convert to radians
+	  if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) {
+	    return null;
+	  }
+
+	  var x, y;
+	  if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {
+	    return null;
+	  }
+	  else {
+	    if (this.sphere) {
+	      x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);
+	      y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat));
+	    }
+	    else {
+	      var sinphi = Math.sin(lat);
+	      var ts = tsfnz(this.e, lat, sinphi);
+	      x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);
+	      y = this.y0 - this.a * this.k0 * Math.log(ts);
+	    }
+	    p.x = x;
+	    p.y = y;
+	    return p;
+	  }
+	}
+
+	/* Mercator inverse equations--mapping x,y to lat/long
+	  --------------------------------------------------*/
+	function inverse(p) {
+
+	  var x = p.x - this.x0;
+	  var y = p.y - this.y0;
+	  var lon, lat;
+
+	  if (this.sphere) {
+	    lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0)));
+	  }
+	  else {
+	    var ts = Math.exp(-y / (this.a * this.k0));
+	    lat = phi2z(this.e, ts);
+	    if (lat === -9999) {
+	      return null;
+	    }
+	  }
+	  lon = adjust_lon(this.long0 + x / (this.a * this.k0));
+
+	  p.x = lon;
+	  p.y = lat;
+	  return p;
+	}
+
+	var names$1 = ["Mercator", "Popular Visualisation Pseudo Mercator", "Mercator_1SP", "Mercator_Auxiliary_Sphere", "merc"];
+	var merc = {
+	  init: init,
+	  forward: forward,
+	  inverse: inverse,
+	  names: names$1
+	};
+
+	function init$1() {
+	  //no-op for longlat
+	}
+
+	function identity(pt) {
+	  return pt;
+	}
+	var names$2 = ["longlat", "identity"];
+	var longlat = {
+	  init: init$1,
+	  forward: identity,
+	  inverse: identity,
+	  names: names$2
+	};
+
+	var projs = [merc, longlat];
+	var names$$1 = {};
+	var projStore = [];
+
+	function add(proj, i) {
+	  var len = projStore.length;
+	  if (!proj.names) {
+	    console.log(i);
+	    return true;
+	  }
+	  projStore[len] = proj;
+	  proj.names.forEach(function(n) {
+	    names$$1[n.toLowerCase()] = len;
+	  });
+	  return this;
+	}
+
+	function get(name) {
+	  if (!name) {
+	    return false;
+	  }
+	  var n = name.toLowerCase();
+	  if (typeof names$$1[n] !== 'undefined' && projStore[names$$1[n]]) {
+	    return projStore[names$$1[n]];
+	  }
+	}
+
+	function start() {
+	  projs.forEach(add);
+	}
+	var projections = {
+	  start: start,
+	  add: add,
+	  get: get
+	};
+
+	var exports$2 = {};
+	exports$2.MERIT = {
+	  a: 6378137.0,
+	  rf: 298.257,
+	  ellipseName: "MERIT 1983"
+	};
+
+	exports$2.SGS85 = {
+	  a: 6378136.0,
+	  rf: 298.257,
+	  ellipseName: "Soviet Geodetic System 85"
+	};
+
+	exports$2.GRS80 = {
+	  a: 6378137.0,
+	  rf: 298.257222101,
+	  ellipseName: "GRS 1980(IUGG, 1980)"
+	};
+
+	exports$2.IAU76 = {
+	  a: 6378140.0,
+	  rf: 298.257,
+	  ellipseName: "IAU 1976"
+	};
+
+	exports$2.airy = {
+	  a: 6377563.396,
+	  b: 6356256.910,
+	  ellipseName: "Airy 1830"
+	};
+
+	exports$2.APL4 = {
+	  a: 6378137,
+	  rf: 298.25,
+	  ellipseName: "Appl. Physics. 1965"
+	};
+
+	exports$2.NWL9D = {
+	  a: 6378145.0,
+	  rf: 298.25,
+	  ellipseName: "Naval Weapons Lab., 1965"
+	};
+
+	exports$2.mod_airy = {
+	  a: 6377340.189,
+	  b: 6356034.446,
+	  ellipseName: "Modified Airy"
+	};
+
+	exports$2.andrae = {
+	  a: 6377104.43,
+	  rf: 300.0,
+	  ellipseName: "Andrae 1876 (Den., Iclnd.)"
+	};
+
+	exports$2.aust_SA = {
+	  a: 6378160.0,
+	  rf: 298.25,
+	  ellipseName: "Australian Natl & S. Amer. 1969"
+	};
+
+	exports$2.GRS67 = {
+	  a: 6378160.0,
+	  rf: 298.2471674270,
+	  ellipseName: "GRS 67(IUGG 1967)"
+	};
+
+	exports$2.bessel = {
+	  a: 6377397.155,
+	  rf: 299.1528128,
+	  ellipseName: "Bessel 1841"
+	};
+
+	exports$2.bess_nam = {
+	  a: 6377483.865,
+	  rf: 299.1528128,
+	  ellipseName: "Bessel 1841 (Namibia)"
+	};
+
+	exports$2.clrk66 = {
+	  a: 6378206.4,
+	  b: 6356583.8,
+	  ellipseName: "Clarke 1866"
+	};
+
+	exports$2.clrk80 = {
+	  a: 6378249.145,
+	  rf: 293.4663,
+	  ellipseName: "Clarke 1880 mod."
+	};
+
+	exports$2.clrk58 = {
+	  a: 6378293.645208759,
+	  rf: 294.2606763692654,
+	  ellipseName: "Clarke 1858"
+	};
+
+	exports$2.CPM = {
+	  a: 6375738.7,
+	  rf: 334.29,
+	  ellipseName: "Comm. des Poids et Mesures 1799"
+	};
+
+	exports$2.delmbr = {
+	  a: 6376428.0,
+	  rf: 311.5,
+	  ellipseName: "Delambre 1810 (Belgium)"
+	};
+
+	exports$2.engelis = {
+	  a: 6378136.05,
+	  rf: 298.2566,
+	  ellipseName: "Engelis 1985"
+	};
+
+	exports$2.evrst30 = {
+	  a: 6377276.345,
+	  rf: 300.8017,
+	  ellipseName: "Everest 1830"
+	};
+
+	exports$2.evrst48 = {
+	  a: 6377304.063,
+	  rf: 300.8017,
+	  ellipseName: "Everest 1948"
+	};
+
+	exports$2.evrst56 = {
+	  a: 6377301.243,
+	  rf: 300.8017,
+	  ellipseName: "Everest 1956"
+	};
+
+	exports$2.evrst69 = {
+	  a: 6377295.664,
+	  rf: 300.8017,
+	  ellipseName: "Everest 1969"
+	};
+
+	exports$2.evrstSS = {
+	  a: 6377298.556,
+	  rf: 300.8017,
+	  ellipseName: "Everest (Sabah & Sarawak)"
+	};
+
+	exports$2.fschr60 = {
+	  a: 6378166.0,
+	  rf: 298.3,
+	  ellipseName: "Fischer (Mercury Datum) 1960"
+	};
+
+	exports$2.fschr60m = {
+	  a: 6378155.0,
+	  rf: 298.3,
+	  ellipseName: "Fischer 1960"
+	};
+
+	exports$2.fschr68 = {
+	  a: 6378150.0,
+	  rf: 298.3,
+	  ellipseName: "Fischer 1968"
+	};
+
+	exports$2.helmert = {
+	  a: 6378200.0,
+	  rf: 298.3,
+	  ellipseName: "Helmert 1906"
+	};
+
+	exports$2.hough = {
+	  a: 6378270.0,
+	  rf: 297.0,
+	  ellipseName: "Hough"
+	};
+
+	exports$2.intl = {
+	  a: 6378388.0,
+	  rf: 297.0,
+	  ellipseName: "International 1909 (Hayford)"
+	};
+
+	exports$2.kaula = {
+	  a: 6378163.0,
+	  rf: 298.24,
+	  ellipseName: "Kaula 1961"
+	};
+
+	exports$2.lerch = {
+	  a: 6378139.0,
+	  rf: 298.257,
+	  ellipseName: "Lerch 1979"
+	};
+
+	exports$2.mprts = {
+	  a: 6397300.0,
+	  rf: 191.0,
+	  ellipseName: "Maupertius 1738"
+	};
+
+	exports$2.new_intl = {
+	  a: 6378157.5,
+	  b: 6356772.2,
+	  ellipseName: "New International 1967"
+	};
+
+	exports$2.plessis = {
+	  a: 6376523.0,
+	  rf: 6355863.0,
+	  ellipseName: "Plessis 1817 (France)"
+	};
+
+	exports$2.krass = {
+	  a: 6378245.0,
+	  rf: 298.3,
+	  ellipseName: "Krassovsky, 1942"
+	};
+
+	exports$2.SEasia = {
+	  a: 6378155.0,
+	  b: 6356773.3205,
+	  ellipseName: "Southeast Asia"
+	};
+
+	exports$2.walbeck = {
+	  a: 6376896.0,
+	  b: 6355834.8467,
+	  ellipseName: "Walbeck"
+	};
+
+	exports$2.WGS60 = {
+	  a: 6378165.0,
+	  rf: 298.3,
+	  ellipseName: "WGS 60"
+	};
+
+	exports$2.WGS66 = {
+	  a: 6378145.0,
+	  rf: 298.25,
+	  ellipseName: "WGS 66"
+	};
+
+	exports$2.WGS7 = {
+	  a: 6378135.0,
+	  rf: 298.26,
+	  ellipseName: "WGS 72"
+	};
+
+	var WGS84 = exports$2.WGS84 = {
+	  a: 6378137.0,
+	  rf: 298.257223563,
+	  ellipseName: "WGS 84"
+	};
+
+	exports$2.sphere = {
+	  a: 6370997.0,
+	  b: 6370997.0,
+	  ellipseName: "Normal Sphere (r=6370997)"
+	};
+
+	function eccentricity(a, b, rf, R_A) {
+	  var a2 = a * a; // used in geocentric
+	  var b2 = b * b; // used in geocentric
+	  var es = (a2 - b2) / a2; // e ^ 2
+	  var e = 0;
+	  if (R_A) {
+	    a *= 1 - es * (SIXTH + es * (RA4 + es * RA6));
+	    a2 = a * a;
+	    es = 0;
+	  } else {
+	    e = Math.sqrt(es); // eccentricity
+	  }
+	  var ep2 = (a2 - b2) / b2; // used in geocentric
+	  return {
+	    es: es,
+	    e: e,
+	    ep2: ep2
+	  };
+	}
+	function sphere(a, b, rf, ellps, sphere) {
+	  if (!a) { // do we have an ellipsoid?
+	    var ellipse = match(exports$2, ellps);
+	    if (!ellipse) {
+	      ellipse = WGS84;
+	    }
+	    a = ellipse.a;
+	    b = ellipse.b;
+	    rf = ellipse.rf;
+	  }
+
+	  if (rf && !b) {
+	    b = (1.0 - 1.0 / rf) * a;
+	  }
+	  if (rf === 0 || Math.abs(a - b) < EPSLN) {
+	    sphere = true;
+	    b = a;
+	  }
+	  return {
+	    a: a,
+	    b: b,
+	    rf: rf,
+	    sphere: sphere
+	  };
+	}
+
+	var exports$3 = {};
+	exports$3.wgs84 = {
+	  towgs84: "0,0,0",
+	  ellipse: "WGS84",
+	  datumName: "WGS84"
+	};
+
+	exports$3.ch1903 = {
+	  towgs84: "674.374,15.056,405.346",
+	  ellipse: "bessel",
+	  datumName: "swiss"
+	};
+
+	exports$3.ggrs87 = {
+	  towgs84: "-199.87,74.79,246.62",
+	  ellipse: "GRS80",
+	  datumName: "Greek_Geodetic_Reference_System_1987"
+	};
+
+	exports$3.nad83 = {
+	  towgs84: "0,0,0",
+	  ellipse: "GRS80",
+	  datumName: "North_American_Datum_1983"
+	};
+
+	exports$3.nad27 = {
+	  nadgrids: "@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",
+	  ellipse: "clrk66",
+	  datumName: "North_American_Datum_1927"
+	};
+
+	exports$3.potsdam = {
+	  towgs84: "606.0,23.0,413.0",
+	  ellipse: "bessel",
+	  datumName: "Potsdam Rauenberg 1950 DHDN"
+	};
+
+	exports$3.carthage = {
+	  towgs84: "-263.0,6.0,431.0",
+	  ellipse: "clark80",
+	  datumName: "Carthage 1934 Tunisia"
+	};
+
+	exports$3.hermannskogel = {
+	  towgs84: "653.0,-212.0,449.0",
+	  ellipse: "bessel",
+	  datumName: "Hermannskogel"
+	};
+
+	exports$3.osni52 = {
+	  towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",
+	  ellipse: "airy",
+	  datumName: "Irish National"
+	};
+
+	exports$3.ire65 = {
+	  towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",
+	  ellipse: "mod_airy",
+	  datumName: "Ireland 1965"
+	};
+
+	exports$3.rassadiran = {
+	  towgs84: "-133.63,-157.5,-158.62",
+	  ellipse: "intl",
+	  datumName: "Rassadiran"
+	};
+
+	exports$3.nzgd49 = {
+	  towgs84: "59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",
+	  ellipse: "intl",
+	  datumName: "New Zealand Geodetic Datum 1949"
+	};
+
+	exports$3.osgb36 = {
+	  towgs84: "446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",
+	  ellipse: "airy",
+	  datumName: "Airy 1830"
+	};
+
+	exports$3.s_jtsk = {
+	  towgs84: "589,76,480",
+	  ellipse: 'bessel',
+	  datumName: 'S-JTSK (Ferro)'
+	};
+
+	exports$3.beduaram = {
+	  towgs84: '-106,-87,188',
+	  ellipse: 'clrk80',
+	  datumName: 'Beduaram'
+	};
+
+	exports$3.gunung_segara = {
+	  towgs84: '-403,684,41',
+	  ellipse: 'bessel',
+	  datumName: 'Gunung Segara Jakarta'
+	};
+
+	exports$3.rnb72 = {
+	  towgs84: "106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",
+	  ellipse: "intl",
+	  datumName: "Reseau National Belge 1972"
+	};
+
+	function datum(datumCode, datum_params, a, b, es, ep2) {
+	  var out = {};
+
+	  if (datumCode === undefined || datumCode === 'none') {
+	    out.datum_type = PJD_NODATUM;
+	  } else {
+	    out.datum_type = PJD_WGS84;
+	  }
+
+	  if (datum_params) {
+	    out.datum_params = datum_params.map(parseFloat);
+	    if (out.datum_params[0] !== 0 || out.datum_params[1] !== 0 || out.datum_params[2] !== 0) {
+	      out.datum_type = PJD_3PARAM;
+	    }
+	    if (out.datum_params.length > 3) {
+	      if (out.datum_params[3] !== 0 || out.datum_params[4] !== 0 || out.datum_params[5] !== 0 || out.datum_params[6] !== 0) {
+	        out.datum_type = PJD_7PARAM;
+	        out.datum_params[3] *= SEC_TO_RAD;
+	        out.datum_params[4] *= SEC_TO_RAD;
+	        out.datum_params[5] *= SEC_TO_RAD;
+	        out.datum_params[6] = (out.datum_params[6] / 1000000.0) + 1.0;
+	      }
+	    }
+	  }
+
+	  out.a = a; //datum object also uses these values
+	  out.b = b;
+	  out.es = es;
+	  out.ep2 = ep2;
+	  return out;
+	}
+
+	function Projection$1(srsCode,callback) {
+	  if (!(this instanceof Projection$1)) {
+	    return new Projection$1(srsCode);
+	  }
+	  callback = callback || function(error){
+	    if(error){
+	      throw error;
+	    }
+	  };
+	  var json = parse(srsCode);
+	  if(typeof json !== 'object'){
+	    callback(srsCode);
+	    return;
+	  }
+	  var ourProj = Projection$1.projections.get(json.projName);
+	  if(!ourProj){
+	    callback(srsCode);
+	    return;
+	  }
+	  if (json.datumCode && json.datumCode !== 'none') {
+	    var datumDef = match(exports$3, json.datumCode);
+	    if (datumDef) {
+	      json.datum_params = datumDef.towgs84 ? datumDef.towgs84.split(',') : null;
+	      json.ellps = datumDef.ellipse;
+	      json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode;
+	    }
+	  }
+	  json.k0 = json.k0 || 1.0;
+	  json.axis = json.axis || 'enu';
+	  json.ellps = json.ellps || 'wgs84';
+	  var sphere_ = sphere(json.a, json.b, json.rf, json.ellps, json.sphere);
+	  var ecc = eccentricity(sphere_.a, sphere_.b, sphere_.rf, json.R_A);
+	  var datumObj = json.datum || datum(json.datumCode, json.datum_params, sphere_.a, sphere_.b, ecc.es, ecc.ep2);
+
+	  extend(this, json); // transfer everything over from the projection because we don't know what we'll need
+	  extend(this, ourProj); // transfer all the methods from the projection
+
+	  // copy the 4 things over we calulated in deriveConstants.sphere
+	  this.a = sphere_.a;
+	  this.b = sphere_.b;
+	  this.rf = sphere_.rf;
+	  this.sphere = sphere_.sphere;
+
+	  // copy the 3 things we calculated in deriveConstants.eccentricity
+	  this.es = ecc.es;
+	  this.e = ecc.e;
+	  this.ep2 = ecc.ep2;
+
+	  // add in the datum object
+	  this.datum = datumObj;
+
+	  // init the projection
+	  this.init();
+
+	  // legecy callback from back in the day when it went to spatialreference.org
+	  callback(null, this);
+
+	}
+	Projection$1.projections = projections;
+	Projection$1.projections.start();
+
+	function compareDatums(source, dest) {
+	  if (source.datum_type !== dest.datum_type) {
+	    return false; // false, datums are not equal
+	  } else if (source.a !== dest.a || Math.abs(source.es - dest.es) > 0.000000000050) {
+	    // the tolerance for es is to ensure that GRS80 and WGS84
+	    // are considered identical
+	    return false;
+	  } else if (source.datum_type === PJD_3PARAM) {
+	    return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2]);
+	  } else if (source.datum_type === PJD_7PARAM) {
+	    return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2] && source.datum_params[3] === dest.datum_params[3] && source.datum_params[4] === dest.datum_params[4] && source.datum_params[5] === dest.datum_params[5] && source.datum_params[6] === dest.datum_params[6]);
+	  } else {
+	    return true; // datums are equal
+	  }
+	} // cs_compare_datums()
+
+	/*
+	 * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates
+	 * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),
+	 * according to the current ellipsoid parameters.
+	 *
+	 *    Latitude  : Geodetic latitude in radians                     (input)
+	 *    Longitude : Geodetic longitude in radians                    (input)
+	 *    Height    : Geodetic height, in meters                       (input)
+	 *    X         : Calculated Geocentric X coordinate, in meters    (output)
+	 *    Y         : Calculated Geocentric Y coordinate, in meters    (output)
+	 *    Z         : Calculated Geocentric Z coordinate, in meters    (output)
+	 *
+	 */
+	function geodeticToGeocentric(p, es, a) {
+	  var Longitude = p.x;
+	  var Latitude = p.y;
+	  var Height = p.z ? p.z : 0; //Z value not always supplied
+
+	  var Rn; /*  Earth radius at location  */
+	  var Sin_Lat; /*  Math.sin(Latitude)  */
+	  var Sin2_Lat; /*  Square of Math.sin(Latitude)  */
+	  var Cos_Lat; /*  Math.cos(Latitude)  */
+
+	  /*
+	   ** Don't blow up if Latitude is just a little out of the value
+	   ** range as it may just be a rounding issue.  Also removed longitude
+	   ** test, it should be wrapped by Math.cos() and Math.sin().  NFW for PROJ.4, Sep/2001.
+	   */
+	  if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) {
+	    Latitude = -HALF_PI;
+	  } else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) {
+	    Latitude = HALF_PI;
+	  } else if ((Latitude < -HALF_PI) || (Latitude > HALF_PI)) {
+	    /* Latitude out of range */
+	    //..reportError('geocent:lat out of range:' + Latitude);
+	    return null;
+	  }
+
+	  if (Longitude > Math.PI) {
+	    Longitude -= (2 * Math.PI);
+	  }
+	  Sin_Lat = Math.sin(Latitude);
+	  Cos_Lat = Math.cos(Latitude);
+	  Sin2_Lat = Sin_Lat * Sin_Lat;
+	  Rn = a / (Math.sqrt(1.0e0 - es * Sin2_Lat));
+	  return {
+	    x: (Rn + Height) * Cos_Lat * Math.cos(Longitude),
+	    y: (Rn + Height) * Cos_Lat * Math.sin(Longitude),
+	    z: ((Rn * (1 - es)) + Height) * Sin_Lat
+	  };
+	} // cs_geodetic_to_geocentric()
+
+	function geocentricToGeodetic(p, es, a, b) {
+	  /* local defintions and variables */
+	  /* end-criterium of loop, accuracy of sin(Latitude) */
+	  var genau = 1e-12;
+	  var genau2 = (genau * genau);
+	  var maxiter = 30;
+
+	  var P; /* distance between semi-minor axis and location */
+	  var RR; /* distance between center and location */
+	  var CT; /* sin of geocentric latitude */
+	  var ST; /* cos of geocentric latitude */
+	  var RX;
+	  var RK;
+	  var RN; /* Earth radius at location */
+	  var CPHI0; /* cos of start or old geodetic latitude in iterations */
+	  var SPHI0; /* sin of start or old geodetic latitude in iterations */
+	  var CPHI; /* cos of searched geodetic latitude */
+	  var SPHI; /* sin of searched geodetic latitude */
+	  var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */
+	  var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */
+
+	  var X = p.x;
+	  var Y = p.y;
+	  var Z = p.z ? p.z : 0.0; //Z value not always supplied
+	  var Longitude;
+	  var Latitude;
+	  var Height;
+
+	  P = Math.sqrt(X * X + Y * Y);
+	  RR = Math.sqrt(X * X + Y * Y + Z * Z);
+
+	  /*      special cases for latitude and longitude */
+	  if (P / a < genau) {
+
+	    /*  special case, if P=0. (X=0., Y=0.) */
+	    Longitude = 0.0;
+
+	    /*  if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis
+	     *  of ellipsoid (=center of mass), Latitude becomes PI/2 */
+	    if (RR / a < genau) {
+	      Latitude = HALF_PI;
+	      Height = -b;
+	      return {
+	        x: p.x,
+	        y: p.y,
+	        z: p.z
+	      };
+	    }
+	  } else {
+	    /*  ellipsoidal (geodetic) longitude
+	     *  interval: -PI < Longitude <= +PI */
+	    Longitude = Math.atan2(Y, X);
+	  }
+
+	  /* --------------------------------------------------------------
+	   * Following iterative algorithm was developped by
+	   * "Institut for Erdmessung", University of Hannover, July 1988.
+	   * Internet: www.ife.uni-hannover.de
+	   * Iterative computation of CPHI,SPHI and Height.
+	   * Iteration of CPHI and SPHI to 10**-12 radian resp.
+	   * 2*10**-7 arcsec.
+	   * --------------------------------------------------------------
+	   */
+	  CT = Z / RR;
+	  ST = P / RR;
+	  RX = 1.0 / Math.sqrt(1.0 - es * (2.0 - es) * ST * ST);
+	  CPHI0 = ST * (1.0 - es) * RX;
+	  SPHI0 = CT * RX;
+	  iter = 0;
+
+	  /* loop to find sin(Latitude) resp. Latitude
+	   * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */
+	  do {
+	    iter++;
+	    RN = a / Math.sqrt(1.0 - es * SPHI0 * SPHI0);
+
+	    /*  ellipsoidal (geodetic) height */
+	    Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - es * SPHI0 * SPHI0);
+
+	    RK = es * RN / (RN + Height);
+	    RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST);
+	    CPHI = ST * (1.0 - RK) * RX;
+	    SPHI = CT * RX;
+	    SDPHI = SPHI * CPHI0 - CPHI * SPHI0;
+	    CPHI0 = CPHI;
+	    SPHI0 = SPHI;
+	  }
+	  while (SDPHI * SDPHI > genau2 && iter < maxiter);
+
+	  /*      ellipsoidal (geodetic) latitude */
+	  Latitude = Math.atan(SPHI / Math.abs(CPHI));
+	  return {
+	    x: Longitude,
+	    y: Latitude,
+	    z: Height
+	  };
+	} // cs_geocentric_to_geodetic()
+
+	/****************************************************************/
+	// pj_geocentic_to_wgs84( p )
+	//  p = point to transform in geocentric coordinates (x,y,z)
+
+
+	/** point object, nothing fancy, just allows values to be
+	    passed back and forth by reference rather than by value.
+	    Other point classes may be used as long as they have
+	    x and y properties, which will get modified in the transform method.
+	*/
+	function geocentricToWgs84(p, datum_type, datum_params) {
+
+	  if (datum_type === PJD_3PARAM) {
+	    // if( x[io] === HUGE_VAL )
+	    //    continue;
+	    return {
+	      x: p.x + datum_params[0],
+	      y: p.y + datum_params[1],
+	      z: p.z + datum_params[2],
+	    };
+	  } else if (datum_type === PJD_7PARAM) {
+	    var Dx_BF = datum_params[0];
+	    var Dy_BF = datum_params[1];
+	    var Dz_BF = datum_params[2];
+	    var Rx_BF = datum_params[3];
+	    var Ry_BF = datum_params[4];
+	    var Rz_BF = datum_params[5];
+	    var M_BF = datum_params[6];
+	    // if( x[io] === HUGE_VAL )
+	    //    continue;
+	    return {
+	      x: M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF,
+	      y: M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF,
+	      z: M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF
+	    };
+	  }
+	} // cs_geocentric_to_wgs84
+
+	/****************************************************************/
+	// pj_geocentic_from_wgs84()
+	//  coordinate system definition,
+	//  point to transform in geocentric coordinates (x,y,z)
+	function geocentricFromWgs84(p, datum_type, datum_params) {
+
+	  if (datum_type === PJD_3PARAM) {
+	    //if( x[io] === HUGE_VAL )
+	    //    continue;
+	    return {
+	      x: p.x - datum_params[0],
+	      y: p.y - datum_params[1],
+	      z: p.z - datum_params[2],
+	    };
+
+	  } else if (datum_type === PJD_7PARAM) {
+	    var Dx_BF = datum_params[0];
+	    var Dy_BF = datum_params[1];
+	    var Dz_BF = datum_params[2];
+	    var Rx_BF = datum_params[3];
+	    var Ry_BF = datum_params[4];
+	    var Rz_BF = datum_params[5];
+	    var M_BF = datum_params[6];
+	    var x_tmp = (p.x - Dx_BF) / M_BF;
+	    var y_tmp = (p.y - Dy_BF) / M_BF;
+	    var z_tmp = (p.z - Dz_BF) / M_BF;
+	    //if( x[io] === HUGE_VAL )
+	    //    continue;
+
+	    return {
+	      x: x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp,
+	      y: -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp,
+	      z: Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp
+	    };
+	  } //cs_geocentric_from_wgs84()
+	}
+
+	function checkParams(type) {
+	  return (type === PJD_3PARAM || type === PJD_7PARAM);
+	}
+
+	var datum_transform = function(source, dest, point) {
+	  // Short cut if the datums are identical.
+	  if (compareDatums(source, dest)) {
+	    return point; // in this case, zero is sucess,
+	    // whereas cs_compare_datums returns 1 to indicate TRUE
+	    // confusing, should fix this
+	  }
+
+	  // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest
+	  if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) {
+	    return point;
+	  }
+
+	  // If this datum requires grid shifts, then apply it to geodetic coordinates.
+
+	  // Do we need to go through geocentric coordinates?
+	  if (source.es === dest.es && source.a === dest.a && !checkParams(source.datum_type) &&  !checkParams(dest.datum_type)) {
+	    return point;
+	  }
+
+	  // Convert to geocentric coordinates.
+	  point = geodeticToGeocentric(point, source.es, source.a);
+	  // Convert between datums
+	  if (checkParams(source.datum_type)) {
+	    point = geocentricToWgs84(point, source.datum_type, source.datum_params);
+	  }
+	  if (checkParams(dest.datum_type)) {
+	    point = geocentricFromWgs84(point, dest.datum_type, dest.datum_params);
+	  }
+	  return geocentricToGeodetic(point, dest.es, dest.a, dest.b);
+
+	};
+
+	var adjust_axis = function(crs, denorm, point) {
+	  var xin = point.x,
+	    yin = point.y,
+	    zin = point.z || 0.0;
+	  var v, t, i;
+	  var out = {};
+	  for (i = 0; i < 3; i++) {
+	    if (denorm && i === 2 && point.z === undefined) {
+	      continue;
+	    }
+	    if (i === 0) {
+	      v = xin;
+	      t = 'x';
+	    }
+	    else if (i === 1) {
+	      v = yin;
+	      t = 'y';
+	    }
+	    else {
+	      v = zin;
+	      t = 'z';
+	    }
+	    switch (crs.axis[i]) {
+	    case 'e':
+	      out[t] = v;
+	      break;
+	    case 'w':
+	      out[t] = -v;
+	      break;
+	    case 'n':
+	      out[t] = v;
+	      break;
+	    case 's':
+	      out[t] = -v;
+	      break;
+	    case 'u':
+	      if (point[t] !== undefined) {
+	        out.z = v;
+	      }
+	      break;
+	    case 'd':
+	      if (point[t] !== undefined) {
+	        out.z = -v;
+	      }
+	      break;
+	    default:
+	      //console.log("ERROR: unknow axis ("+crs.axis[i]+") - check definition of "+crs.projName);
+	      return null;
+	    }
+	  }
+	  return out;
+	};
+
+	var toPoint = function (array){
+	  var out = {
+	    x: array[0],
+	    y: array[1]
+	  };
+	  if (array.length>2) {
+	    out.z = array[2];
+	  }
+	  if (array.length>3) {
+	    out.m = array[3];
+	  }
+	  return out;
+	};
+
+	var checkSanity = function (point) {
+	  checkCoord(point.x);
+	  checkCoord(point.y);
+	};
+	function checkCoord(num) {
+	  if (typeof Number.isFinite === 'function') {
+	    if (Number.isFinite(num)) {
+	      return;
+	    }
+	    throw new TypeError('coordinates must be finite numbers');
+	  }
+	  if (typeof num !== 'number' || num !== num || !isFinite(num)) {
+	    throw new TypeError('coordinates must be finite numbers');
+	  }
+	}
+
+	function checkNotWGS(source, dest) {
+	  return ((source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM) && dest.datumCode !== 'WGS84') || ((dest.datum.datum_type === PJD_3PARAM || dest.datum.datum_type === PJD_7PARAM) && source.datumCode !== 'WGS84');
+	}
+
+	function transform(source, dest, point) {
+	  var wgs84;
+	  if (Array.isArray(point)) {
+	    point = toPoint(point);
+	  }
+	  checkSanity(point);
+	  // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84
+	  if (source.datum && dest.datum && checkNotWGS(source, dest)) {
+	    wgs84 = new Projection$1('WGS84');
+	    point = transform(source, wgs84, point);
+	    source = wgs84;
+	  }
+	  // DGR, 2010/11/12
+	  if (source.axis !== 'enu') {
+	    point = adjust_axis(source, false, point);
+	  }
+	  // Transform source points to long/lat, if they aren't already.
+	  if (source.projName === 'longlat') {
+	    point = {
+	      x: point.x * D2R,
+	      y: point.y * D2R
+	    };
+	  }
+	  else {
+	    if (source.to_meter) {
+	      point = {
+	        x: point.x * source.to_meter,
+	        y: point.y * source.to_meter
+	      };
+	    }
+	    point = source.inverse(point); // Convert Cartesian to longlat
+	  }
+	  // Adjust for the prime meridian if necessary
+	  if (source.from_greenwich) {
+	    point.x += source.from_greenwich;
+	  }
+
+	  // Convert datums if needed, and if possible.
+	  point = datum_transform(source.datum, dest.datum, point);
+
+	  // Adjust for the prime meridian if necessary
+	  if (dest.from_greenwich) {
+	    point = {
+	      x: point.x - dest.from_greenwich,
+	      y: point.y
+	    };
+	  }
+
+	  if (dest.projName === 'longlat') {
+	    // convert radians to decimal degrees
+	    point = {
+	      x: point.x * R2D,
+	      y: point.y * R2D
+	    };
+	  } else { // else project
+	    point = dest.forward(point);
+	    if (dest.to_meter) {
+	      point = {
+	        x: point.x / dest.to_meter,
+	        y: point.y / dest.to_meter
+	      };
+	    }
+	  }
+
+	  // DGR, 2010/11/12
+	  if (dest.axis !== 'enu') {
+	    return adjust_axis(dest, true, point);
+	  }
+
+	  return point;
+	}
+
+	var wgs84 = Projection$1('WGS84');
+
+	function transformer(from, to, coords) {
+	  var transformedArray, out, keys;
+	  if (Array.isArray(coords)) {
+	    transformedArray = transform(from, to, coords);
+	    if (coords.length === 3) {
+	      return [transformedArray.x, transformedArray.y, transformedArray.z];
+	    }
+	    else {
+	      return [transformedArray.x, transformedArray.y];
+	    }
+	  }
+	  else {
+	    out = transform(from, to, coords);
+	    keys = Object.keys(coords);
+	    if (keys.length === 2) {
+	      return out;
+	    }
+	    keys.forEach(function (key) {
+	      if (key === 'x' || key === 'y') {
+	        return;
+	      }
+	      out[key] = coords[key];
+	    });
+	    return out;
+	  }
+	}
+
+	function checkProj(item) {
+	  if (item instanceof Projection$1) {
+	    return item;
+	  }
+	  if (item.oProj) {
+	    return item.oProj;
+	  }
+	  return Projection$1(item);
+	}
+	function proj4$1(fromProj, toProj, coord) {
+	  fromProj = checkProj(fromProj);
+	  var single = false;
+	  var obj;
+	  if (typeof toProj === 'undefined') {
+	    toProj = fromProj;
+	    fromProj = wgs84;
+	    single = true;
+	  }
+	  else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) {
+	    coord = toProj;
+	    toProj = fromProj;
+	    fromProj = wgs84;
+	    single = true;
+	  }
+	  toProj = checkProj(toProj);
+	  if (coord) {
+	    return transformer(fromProj, toProj, coord);
+	  }
+	  else {
+	    obj = {
+	      forward: function(coords) {
+	        return transformer(fromProj, toProj, coords);
+	      },
+	      inverse: function(coords) {
+	        return transformer(toProj, fromProj, coords);
+	      }
+	    };
+	    if (single) {
+	      obj.oProj = toProj;
+	    }
+	    return obj;
+	  }
+	}
+
+	/**
+	 * UTM zones are grouped, and assigned to one of a group of 6
+	 * sets.
+	 *
+	 * {int} @private
+	 */
+	var NUM_100K_SETS = 6;
+
+	/**
+	 * The column letters (for easting) of the lower left value, per
+	 * set.
+	 *
+	 * {string} @private
+	 */
+	var SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS';
+
+	/**
+	 * The row letters (for northing) of the lower left value, per
+	 * set.
+	 *
+	 * {string} @private
+	 */
+	var SET_ORIGIN_ROW_LETTERS = 'AFAFAF';
+
+	var A = 65; // A
+	var I = 73; // I
+	var O = 79; // O
+	var V = 86; // V
+	var Z = 90; // Z
+	var mgrs = {
+	  forward: forward$1,
+	  inverse: inverse$1,
+	  toPoint: toPoint$1
+	};
+	/**
+	 * Conversion of lat/lon to MGRS.
+	 *
+	 * @param {object} ll Object literal with lat and lon properties on a
+	 *     WGS84 ellipsoid.
+	 * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for
+	 *      100 m, 2 for 1000 m or 1 for 10000 m). Optional, default is 5.
+	 * @return {string} the MGRS string for the given location and accuracy.
+	 */
+	function forward$1(ll, accuracy) {
+	  accuracy = accuracy || 5; // default accuracy 1m
+	  return encode(LLtoUTM({
+	    lat: ll[1],
+	    lon: ll[0]
+	  }), accuracy);
+	}
+
+	/**
+	 * Conversion of MGRS to lat/lon.
+	 *
+	 * @param {string} mgrs MGRS string.
+	 * @return {array} An array with left (longitude), bottom (latitude), right
+	 *     (longitude) and top (latitude) values in WGS84, representing the
+	 *     bounding box for the provided MGRS reference.
+	 */
+	function inverse$1(mgrs) {
+	  var bbox = UTMtoLL(decode(mgrs.toUpperCase()));
+	  if (bbox.lat && bbox.lon) {
+	    return [bbox.lon, bbox.lat, bbox.lon, bbox.lat];
+	  }
+	  return [bbox.left, bbox.bottom, bbox.right, bbox.top];
+	}
+
+	function toPoint$1(mgrs) {
+	  var bbox = UTMtoLL(decode(mgrs.toUpperCase()));
+	  if (bbox.lat && bbox.lon) {
+	    return [bbox.lon, bbox.lat];
+	  }
+	  return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2];
+	}
+	/**
+	 * Conversion from degrees to radians.
+	 *
+	 * @private
+	 * @param {number} deg the angle in degrees.
+	 * @return {number} the angle in radians.
+	 */
+	function degToRad(deg) {
+	  return (deg * (Math.PI / 180.0));
+	}
+
+	/**
+	 * Conversion from radians to degrees.
+	 *
+	 * @private
+	 * @param {number} rad the angle in radians.
+	 * @return {number} the angle in degrees.
+	 */
+	function radToDeg(rad) {
+	  return (180.0 * (rad / Math.PI));
+	}
+
+	/**
+	 * Converts a set of Longitude and Latitude co-ordinates to UTM
+	 * using the WGS84 ellipsoid.
+	 *
+	 * @private
+	 * @param {object} ll Object literal with lat and lon properties
+	 *     representing the WGS84 coordinate to be converted.
+	 * @return {object} Object literal containing the UTM value with easting,
+	 *     northing, zoneNumber and zoneLetter properties, and an optional
+	 *     accuracy property in digits. Returns null if the conversion failed.
+	 */
+	function LLtoUTM(ll) {
+	  var Lat = ll.lat;
+	  var Long = ll.lon;
+	  var a = 6378137.0; //ellip.radius;
+	  var eccSquared = 0.00669438; //ellip.eccsq;
+	  var k0 = 0.9996;
+	  var LongOrigin;
+	  var eccPrimeSquared;
+	  var N, T, C, A, M;
+	  var LatRad = degToRad(Lat);
+	  var LongRad = degToRad(Long);
+	  var LongOriginRad;
+	  var ZoneNumber;
+	  // (int)
+	  ZoneNumber = Math.floor((Long + 180) / 6) + 1;
+
+	  //Make sure the longitude 180.00 is in Zone 60
+	  if (Long === 180) {
+	    ZoneNumber = 60;
+	  }
+
+	  // Special zone for Norway
+	  if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {
+	    ZoneNumber = 32;
+	  }
+
+	  // Special zones for Svalbard
+	  if (Lat >= 72.0 && Lat < 84.0) {
+	    if (Long >= 0.0 && Long < 9.0) {
+	      ZoneNumber = 31;
+	    }
+	    else if (Long >= 9.0 && Long < 21.0) {
+	      ZoneNumber = 33;
+	    }
+	    else if (Long >= 21.0 && Long < 33.0) {
+	      ZoneNumber = 35;
+	    }
+	    else if (Long >= 33.0 && Long < 42.0) {
+	      ZoneNumber = 37;
+	    }
+	  }
+
+	  LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin
+	  // in middle of
+	  // zone
+	  LongOriginRad = degToRad(LongOrigin);
+
+	  eccPrimeSquared = (eccSquared) / (1 - eccSquared);
+
+	  N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad));
+	  T = Math.tan(LatRad) * Math.tan(LatRad);
+	  C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad);
+	  A = Math.cos(LatRad) * (LongRad - LongOriginRad);
+
+	  M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad));
+
+	  var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0);
+
+	  var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0)));
+	  if (Lat < 0.0) {
+	    UTMNorthing += 10000000.0; //10000000 meter offset for
+	    // southern hemisphere
+	  }
+
+	  return {
+	    northing: Math.round(UTMNorthing),
+	    easting: Math.round(UTMEasting),
+	    zoneNumber: ZoneNumber,
+	    zoneLetter: getLetterDesignator(Lat)
+	  };
+	}
+
+	/**
+	 * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience
+	 * class where the Zone can be specified as a single string eg."60N" which
+	 * is then broken down into the ZoneNumber and ZoneLetter.
+	 *
+	 * @private
+	 * @param {object} utm An object literal with northing, easting, zoneNumber
+	 *     and zoneLetter properties. If an optional accuracy property is
+	 *     provided (in meters), a bounding box will be returned instead of
+	 *     latitude and longitude.
+	 * @return {object} An object literal containing either lat and lon values
+	 *     (if no accuracy was provided), or top, right, bottom and left values
+	 *     for the bounding box calculated according to the provided accuracy.
+	 *     Returns null if the conversion failed.
+	 */
+	function UTMtoLL(utm) {
+
+	  var UTMNorthing = utm.northing;
+	  var UTMEasting = utm.easting;
+	  var zoneLetter = utm.zoneLetter;
+	  var zoneNumber = utm.zoneNumber;
+	  // check the ZoneNummber is valid
+	  if (zoneNumber < 0 || zoneNumber > 60) {
+	    return null;
+	  }
+
+	  var k0 = 0.9996;
+	  var a = 6378137.0; //ellip.radius;
+	  var eccSquared = 0.00669438; //ellip.eccsq;
+	  var eccPrimeSquared;
+	  var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared));
+	  var N1, T1, C1, R1, D, M;
+	  var LongOrigin;
+	  var mu, phi1Rad;
+
+	  // remove 500,000 meter offset for longitude
+	  var x = UTMEasting - 500000.0;
+	  var y = UTMNorthing;
+
+	  // We must know somehow if we are in the Northern or Southern
+	  // hemisphere, this is the only time we use the letter So even
+	  // if the Zone letter isn't exactly correct it should indicate
+	  // the hemisphere correctly
+	  if (zoneLetter < 'N') {
+	    y -= 10000000.0; // remove 10,000,000 meter offset used
+	    // for southern hemisphere
+	  }
+
+	  // There are 60 zones with zone 1 being at West -180 to -174
+	  LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin
+	  // in middle of
+	  // zone
+
+	  eccPrimeSquared = (eccSquared) / (1 - eccSquared);
+
+	  M = y / k0;
+	  mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256));
+
+	  phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu);
+	  // double phi1 = ProjMath.radToDeg(phi1Rad);
+
+	  N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad));
+	  T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad);
+	  C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad);
+	  R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5);
+	  D = x / (N1 * k0);
+
+	  var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720);
+	  lat = radToDeg(lat);
+
+	  var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad);
+	  lon = LongOrigin + radToDeg(lon);
+
+	  var result;
+	  if (utm.accuracy) {
+	    var topRight = UTMtoLL({
+	      northing: utm.northing + utm.accuracy,
+	      easting: utm.easting + utm.accuracy,
+	      zoneLetter: utm.zoneLetter,
+	      zoneNumber: utm.zoneNumber
+	    });
+	    result = {
+	      top: topRight.lat,
+	      right: topRight.lon,
+	      bottom: lat,
+	      left: lon
+	    };
+	  }
+	  else {
+	    result = {
+	      lat: lat,
+	      lon: lon
+	    };
+	  }
+	  return result;
+	}
+
+	/**
+	 * Calculates the MGRS letter designator for the given latitude.
+	 *
+	 * @private
+	 * @param {number} lat The latitude in WGS84 to get the letter designator
+	 *     for.
+	 * @return {char} The letter designator.
+	 */
+	function getLetterDesignator(lat) {
+	  //This is here as an error flag to show that the Latitude is
+	  //outside MGRS limits
+	  var LetterDesignator = 'Z';
+
+	  if ((84 >= lat) && (lat >= 72)) {
+	    LetterDesignator = 'X';
+	  }
+	  else if ((72 > lat) && (lat >= 64)) {
+	    LetterDesignator = 'W';
+	  }
+	  else if ((64 > lat) && (lat >= 56)) {
+	    LetterDesignator = 'V';
+	  }
+	  else if ((56 > lat) && (lat >= 48)) {
+	    LetterDesignator = 'U';
+	  }
+	  else if ((48 > lat) && (lat >= 40)) {
+	    LetterDesignator = 'T';
+	  }
+	  else if ((40 > lat) && (lat >= 32)) {
+	    LetterDesignator = 'S';
+	  }
+	  else if ((32 > lat) && (lat >= 24)) {
+	    LetterDesignator = 'R';
+	  }
+	  else if ((24 > lat) && (lat >= 16)) {
+	    LetterDesignator = 'Q';
+	  }
+	  else if ((16 > lat) && (lat >= 8)) {
+	    LetterDesignator = 'P';
+	  }
+	  else if ((8 > lat) && (lat >= 0)) {
+	    LetterDesignator = 'N';
+	  }
+	  else if ((0 > lat) && (lat >= -8)) {
+	    LetterDesignator = 'M';
+	  }
+	  else if ((-8 > lat) && (lat >= -16)) {
+	    LetterDesignator = 'L';
+	  }
+	  else if ((-16 > lat) && (lat >= -24)) {
+	    LetterDesignator = 'K';
+	  }
+	  else if ((-24 > lat) && (lat >= -32)) {
+	    LetterDesignator = 'J';
+	  }
+	  else if ((-32 > lat) && (lat >= -40)) {
+	    LetterDesignator = 'H';
+	  }
+	  else if ((-40 > lat) && (lat >= -48)) {
+	    LetterDesignator = 'G';
+	  }
+	  else if ((-48 > lat) && (lat >= -56)) {
+	    LetterDesignator = 'F';
+	  }
+	  else if ((-56 > lat) && (lat >= -64)) {
+	    LetterDesignator = 'E';
+	  }
+	  else if ((-64 > lat) && (lat >= -72)) {
+	    LetterDesignator = 'D';
+	  }
+	  else if ((-72 > lat) && (lat >= -80)) {
+	    LetterDesignator = 'C';
+	  }
+	  return LetterDesignator;
+	}
+
+	/**
+	 * Encodes a UTM location as MGRS string.
+	 *
+	 * @private
+	 * @param {object} utm An object literal with easting, northing,
+	 *     zoneLetter, zoneNumber
+	 * @param {number} accuracy Accuracy in digits (1-5).
+	 * @return {string} MGRS string for the given UTM location.
+	 */
+	function encode(utm, accuracy) {
+	  // prepend with leading zeroes
+	  var seasting = "00000" + utm.easting,
+	    snorthing = "00000" + utm.northing;
+
+	  return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy);
+	}
+
+	/**
+	 * Get the two letter 100k designator for a given UTM easting,
+	 * northing and zone number value.
+	 *
+	 * @private
+	 * @param {number} easting
+	 * @param {number} northing
+	 * @param {number} zoneNumber
+	 * @return the two letter 100k designator for the given UTM location.
+	 */
+	function get100kID(easting, northing, zoneNumber) {
+	  var setParm = get100kSetForZone(zoneNumber);
+	  var setColumn = Math.floor(easting / 100000);
+	  var setRow = Math.floor(northing / 100000) % 20;
+	  return getLetter100kID(setColumn, setRow, setParm);
+	}
+
+	/**
+	 * Given a UTM zone number, figure out the MGRS 100K set it is in.
+	 *
+	 * @private
+	 * @param {number} i An UTM zone number.
+	 * @return {number} the 100k set the UTM zone is in.
+	 */
+	function get100kSetForZone(i) {
+	  var setParm = i % NUM_100K_SETS;
+	  if (setParm === 0) {
+	    setParm = NUM_100K_SETS;
+	  }
+
+	  return setParm;
+	}
+
+	/**
+	 * Get the two-letter MGRS 100k designator given information
+	 * translated from the UTM northing, easting and zone number.
+	 *
+	 * @private
+	 * @param {number} column the column index as it relates to the MGRS
+	 *        100k set spreadsheet, created from the UTM easting.
+	 *        Values are 1-8.
+	 * @param {number} row the row index as it relates to the MGRS 100k set
+	 *        spreadsheet, created from the UTM northing value. Values
+	 *        are from 0-19.
+	 * @param {number} parm the set block, as it relates to the MGRS 100k set
+	 *        spreadsheet, created from the UTM zone. Values are from
+	 *        1-60.
+	 * @return two letter MGRS 100k code.
+	 */
+	function getLetter100kID(column, row, parm) {
+	  // colOrigin and rowOrigin are the letters at the origin of the set
+	  var index = parm - 1;
+	  var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index);
+	  var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index);
+
+	  // colInt and rowInt are the letters to build to return
+	  var colInt = colOrigin + column - 1;
+	  var rowInt = rowOrigin + row;
+	  var rollover = false;
+
+	  if (colInt > Z) {
+	    colInt = colInt - Z + A - 1;
+	    rollover = true;
+	  }
+
+	  if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) {
+	    colInt++;
+	  }
+
+	  if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) {
+	    colInt++;
+
+	    if (colInt === I) {
+	      colInt++;
+	    }
+	  }
+
+	  if (colInt > Z) {
+	    colInt = colInt - Z + A - 1;
+	  }
+
+	  if (rowInt > V) {
+	    rowInt = rowInt - V + A - 1;
+	    rollover = true;
+	  }
+	  else {
+	    rollover = false;
+	  }
+
+	  if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) {
+	    rowInt++;
+	  }
+
+	  if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) {
+	    rowInt++;
+
+	    if (rowInt === I) {
+	      rowInt++;
+	    }
+	  }
+
+	  if (rowInt > V) {
+	    rowInt = rowInt - V + A - 1;
+	  }
+
+	  var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt);
+	  return twoLetter;
+	}
+
+	/**
+	 * Decode the UTM parameters from a MGRS string.
+	 *
+	 * @private
+	 * @param {string} mgrsString an UPPERCASE coordinate string is expected.
+	 * @return {object} An object literal with easting, northing, zoneLetter,
+	 *     zoneNumber and accuracy (in meters) properties.
+	 */
+	function decode(mgrsString) {
+
+	  if (mgrsString && mgrsString.length === 0) {
+	    throw ("MGRSPoint coverting from nothing");
+	  }
+
+	  var length = mgrsString.length;
+
+	  var hunK = null;
+	  var sb = "";
+	  var testChar;
+	  var i = 0;
+
+	  // get Zone number
+	  while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) {
+	    if (i >= 2) {
+	      throw ("MGRSPoint bad conversion from: " + mgrsString);
+	    }
+	    sb += testChar;
+	    i++;
+	  }
+
+	  var zoneNumber = parseInt(sb, 10);
+
+	  if (i === 0 || i + 3 > length) {
+	    // A good MGRS string has to be 4-5 digits long,
+	    // ##AAA/#AAA at least.
+	    throw ("MGRSPoint bad conversion from: " + mgrsString);
+	  }
+
+	  var zoneLetter = mgrsString.charAt(i++);
+
+	  // Should we check the zone letter here? Why not.
+	  if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') {
+	    throw ("MGRSPoint zone letter " + zoneLetter + " not handled: " + mgrsString);
+	  }
+
+	  hunK = mgrsString.substring(i, i += 2);
+
+	  var set = get100kSetForZone(zoneNumber);
+
+	  var east100k = getEastingFromChar(hunK.charAt(0), set);
+	  var north100k = getNorthingFromChar(hunK.charAt(1), set);
+
+	  // We have a bug where the northing may be 2000000 too low.
+	  // How
+	  // do we know when to roll over?
+
+	  while (north100k < getMinNorthing(zoneLetter)) {
+	    north100k += 2000000;
+	  }
+
+	  // calculate the char index for easting/northing separator
+	  var remainder = length - i;
+
+	  if (remainder % 2 !== 0) {
+	    throw ("MGRSPoint has to have an even number \nof digits after the zone letter and two 100km letters - front \nhalf for easting meters, second half for \nnorthing meters" + mgrsString);
+	  }
+
+	  var sep = remainder / 2;
+
+	  var sepEasting = 0.0;
+	  var sepNorthing = 0.0;
+	  var accuracyBonus, sepEastingString, sepNorthingString, easting, northing;
+	  if (sep > 0) {
+	    accuracyBonus = 100000.0 / Math.pow(10, sep);
+	    sepEastingString = mgrsString.substring(i, i + sep);
+	    sepEasting = parseFloat(sepEastingString) * accuracyBonus;
+	    sepNorthingString = mgrsString.substring(i + sep);
+	    sepNorthing = parseFloat(sepNorthingString) * accuracyBonus;
+	  }
+
+	  easting = sepEasting + east100k;
+	  northing = sepNorthing + north100k;
+
+	  return {
+	    easting: easting,
+	    northing: northing,
+	    zoneLetter: zoneLetter,
+	    zoneNumber: zoneNumber,
+	    accuracy: accuracyBonus
+	  };
+	}
+
+	/**
+	 * Given the first letter from a two-letter MGRS 100k zone, and given the
+	 * MGRS table set for the zone number, figure out the easting value that
+	 * should be added to the other, secondary easting value.
+	 *
+	 * @private
+	 * @param {char} e The first letter from a two-letter MGRS 100´k zone.
+	 * @param {number} set The MGRS table set for the zone number.
+	 * @return {number} The easting value for the given letter and set.
+	 */
+	function getEastingFromChar(e, set) {
+	  // colOrigin is the letter at the origin of the set for the
+	  // column
+	  var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1);
+	  var eastingValue = 100000.0;
+	  var rewindMarker = false;
+
+	  while (curCol !== e.charCodeAt(0)) {
+	    curCol++;
+	    if (curCol === I) {
+	      curCol++;
+	    }
+	    if (curCol === O) {
+	      curCol++;
+	    }
+	    if (curCol > Z) {
+	      if (rewindMarker) {
+	        throw ("Bad character: " + e);
+	      }
+	      curCol = A;
+	      rewindMarker = true;
+	    }
+	    eastingValue += 100000.0;
+	  }
+
+	  return eastingValue;
+	}
+
+	/**
+	 * Given the second letter from a two-letter MGRS 100k zone, and given the
+	 * MGRS table set for the zone number, figure out the northing value that
+	 * should be added to the other, secondary northing value. You have to
+	 * remember that Northings are determined from the equator, and the vertical
+	 * cycle of letters mean a 2000000 additional northing meters. This happens
+	 * approx. every 18 degrees of latitude. This method does *NOT* count any
+	 * additional northings. You have to figure out how many 2000000 meters need
+	 * to be added for the zone letter of the MGRS coordinate.
+	 *
+	 * @private
+	 * @param {char} n Second letter of the MGRS 100k zone
+	 * @param {number} set The MGRS table set number, which is dependent on the
+	 *     UTM zone number.
+	 * @return {number} The northing value for the given letter and set.
+	 */
+	function getNorthingFromChar(n, set) {
+
+	  if (n > 'V') {
+	    throw ("MGRSPoint given invalid Northing " + n);
+	  }
+
+	  // rowOrigin is the letter at the origin of the set for the
+	  // column
+	  var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1);
+	  var northingValue = 0.0;
+	  var rewindMarker = false;
+
+	  while (curRow !== n.charCodeAt(0)) {
+	    curRow++;
+	    if (curRow === I) {
+	      curRow++;
+	    }
+	    if (curRow === O) {
+	      curRow++;
+	    }
+	    // fixing a bug making whole application hang in this loop
+	    // when 'n' is a wrong character
+	    if (curRow > V) {
+	      if (rewindMarker) { // making sure that this loop ends
+	        throw ("Bad character: " + n);
+	      }
+	      curRow = A;
+	      rewindMarker = true;
+	    }
+	    northingValue += 100000.0;
+	  }
+
+	  return northingValue;
+	}
+
+	/**
+	 * The function getMinNorthing returns the minimum northing value of a MGRS
+	 * zone.
+	 *
+	 * Ported from Geotrans' c Lattitude_Band_Value structure table.
+	 *
+	 * @private
+	 * @param {char} zoneLetter The MGRS zone to get the min northing for.
+	 * @return {number}
+	 */
+	function getMinNorthing(zoneLetter) {
+	  var northing;
+	  switch (zoneLetter) {
+	  case 'C':
+	    northing = 1100000.0;
+	    break;
+	  case 'D':
+	    northing = 2000000.0;
+	    break;
+	  case 'E':
+	    northing = 2800000.0;
+	    break;
+	  case 'F':
+	    northing = 3700000.0;
+	    break;
+	  case 'G':
+	    northing = 4600000.0;
+	    break;
+	  case 'H':
+	    northing = 5500000.0;
+	    break;
+	  case 'J':
+	    northing = 6400000.0;
+	    break;
+	  case 'K':
+	    northing = 7300000.0;
+	    break;
+	  case 'L':
+	    northing = 8200000.0;
+	    break;
+	  case 'M':
+	    northing = 9100000.0;
+	    break;
+	  case 'N':
+	    northing = 0.0;
+	    break;
+	  case 'P':
+	    northing = 800000.0;
+	    break;
+	  case 'Q':
+	    northing = 1700000.0;
+	    break;
+	  case 'R':
+	    northing = 2600000.0;
+	    break;
+	  case 'S':
+	    northing = 3500000.0;
+	    break;
+	  case 'T':
+	    northing = 4400000.0;
+	    break;
+	  case 'U':
+	    northing = 5300000.0;
+	    break;
+	  case 'V':
+	    northing = 6200000.0;
+	    break;
+	  case 'W':
+	    northing = 7000000.0;
+	    break;
+	  case 'X':
+	    northing = 7900000.0;
+	    break;
+	  default:
+	    northing = -1.0;
+	  }
+	  if (northing >= 0.0) {
+	    return northing;
+	  }
+	  else {
+	    throw ("Invalid zone letter: " + zoneLetter);
+	  }
+
+	}
+
+	function Point(x, y, z) {
+	  if (!(this instanceof Point)) {
+	    return new Point(x, y, z);
+	  }
+	  if (Array.isArray(x)) {
+	    this.x = x[0];
+	    this.y = x[1];
+	    this.z = x[2] || 0.0;
+	  } else if(typeof x === 'object') {
+	    this.x = x.x;
+	    this.y = x.y;
+	    this.z = x.z || 0.0;
+	  } else if (typeof x === 'string' && typeof y === 'undefined') {
+	    var coords = x.split(',');
+	    this.x = parseFloat(coords[0], 10);
+	    this.y = parseFloat(coords[1], 10);
+	    this.z = parseFloat(coords[2], 10) || 0.0;
+	  } else {
+	    this.x = x;
+	    this.y = y;
+	    this.z = z || 0.0;
+	  }
+	  console.warn('proj4.Point will be removed in version 3, use proj4.toPoint');
+	}
+
+	Point.fromMGRS = function(mgrsStr) {
+	  return new Point(toPoint$1(mgrsStr));
+	};
+	Point.prototype.toMGRS = function(accuracy) {
+	  return forward$1([this.x, this.y], accuracy);
+	};
+
+	var version = "2.4.4";
+
+	var C00 = 1;
+	var C02 = 0.25;
+	var C04 = 0.046875;
+	var C06 = 0.01953125;
+	var C08 = 0.01068115234375;
+	var C22 = 0.75;
+	var C44 = 0.46875;
+	var C46 = 0.01302083333333333333;
+	var C48 = 0.00712076822916666666;
+	var C66 = 0.36458333333333333333;
+	var C68 = 0.00569661458333333333;
+	var C88 = 0.3076171875;
+
+	var pj_enfn = function(es) {
+	  var en = [];
+	  en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08)));
+	  en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08)));
+	  var t = es * es;
+	  en[2] = t * (C44 - es * (C46 + es * C48));
+	  t *= es;
+	  en[3] = t * (C66 - es * C68);
+	  en[4] = t * es * C88;
+	  return en;
+	};
+
+	var pj_mlfn = function(phi, sphi, cphi, en) {
+	  cphi *= sphi;
+	  sphi *= sphi;
+	  return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4]))));
+	};
+
+	var MAX_ITER = 20;
+
+	var pj_inv_mlfn = function(arg, es, en) {
+	  var k = 1 / (1 - es);
+	  var phi = arg;
+	  for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */
+	    var s = Math.sin(phi);
+	    var t = 1 - es * s * s;
+	    //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg;
+	    //phi -= t * (t * Math.sqrt(t)) * k;
+	    t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k;
+	    phi -= t;
+	    if (Math.abs(t) < EPSLN) {
+	      return phi;
+	    }
+	  }
+	  //..reportError("cass:pj_inv_mlfn: Convergence error");
+	  return phi;
+	};
+
+	// Heavily based on this tmerc projection implementation
+	// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/tmerc.js
+
+	function init$2() {
+	  this.x0 = this.x0 !== undefined ? this.x0 : 0;
+	  this.y0 = this.y0 !== undefined ? this.y0 : 0;
+	  this.long0 = this.long0 !== undefined ? this.long0 : 0;
+	  this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;
+
+	  if (this.es) {
+	    this.en = pj_enfn(this.es);
+	    this.ml0 = pj_mlfn(this.lat0, Math.sin(this.lat0), Math.cos(this.lat0), this.en);
+	  }
+	}
+
+	/**
+	    Transverse Mercator Forward  - long/lat to x/y
+	    long/lat in radians
+	  */
+	function forward$2(p) {
+	  var lon = p.x;
+	  var lat = p.y;
+
+	  var delta_lon = adjust_lon(lon - this.long0);
+	  var con;
+	  var x, y;
+	  var sin_phi = Math.sin(lat);
+	  var cos_phi = Math.cos(lat);
+
+	  if (!this.es) {
+	    var b = cos_phi * Math.sin(delta_lon);
+
+	    if ((Math.abs(Math.abs(b) - 1)) < EPSLN) {
+	      return (93);
+	    }
+	    else {
+	      x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b)) + this.x0;
+	      y = cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - Math.pow(b, 2));
+	      b = Math.abs(y);
+
+	      if (b >= 1) {
+	        if ((b - 1) > EPSLN) {
+	          return (93);
+	        }
+	        else {
+	          y = 0;
+	        }
+	      }
+	      else {
+	        y = Math.acos(y);
+	      }
+
+	      if (lat < 0) {
+	        y = -y;
+	      }
+
+	      y = this.a * this.k0 * (y - this.lat0) + this.y0;
+	    }
+	  }
+	  else {
+	    var al = cos_phi * delta_lon;
+	    var als = Math.pow(al, 2);
+	    var c = this.ep2 * Math.pow(cos_phi, 2);
+	    var cs = Math.pow(c, 2);
+	    var tq = Math.abs(cos_phi) > EPSLN ? Math.tan(lat) : 0;
+	    var t = Math.pow(tq, 2);
+	    var ts = Math.pow(t, 2);
+	    con = 1 - this.es * Math.pow(sin_phi, 2);
+	    al = al / Math.sqrt(con);
+	    var ml = pj_mlfn(lat, sin_phi, cos_phi, this.en);
+
+	    x = this.a * (this.k0 * al * (1 +
+	      als / 6 * (1 - t + c +
+	      als / 20 * (5 - 18 * t + ts + 14 * c - 58 * t * c +
+	      als / 42 * (61 + 179 * ts - ts * t - 479 * t))))) +
+	      this.x0;
+
+	    y = this.a * (this.k0 * (ml - this.ml0 +
+	      sin_phi * delta_lon * al / 2 * (1 +
+	      als / 12 * (5 - t + 9 * c + 4 * cs +
+	      als / 30 * (61 + ts - 58 * t + 270 * c - 330 * t * c +
+	      als / 56 * (1385 + 543 * ts - ts * t - 3111 * t)))))) +
+	      this.y0;
+	  }
+
+	  p.x = x;
+	  p.y = y;
+
+	  return p;
+	}
+
+	/**
+	    Transverse Mercator Inverse  -  x/y to long/lat
+	  */
+	function inverse$2(p) {
+	  var con, phi;
+	  var lat, lon;
+	  var x = (p.x - this.x0) * (1 / this.a);
+	  var y = (p.y - this.y0) * (1 / this.a);
+
+	  if (!this.es) {
+	    var f = Math.exp(x / this.k0);
+	    var g = 0.5 * (f - 1 / f);
+	    var temp = this.lat0 + y / this.k0;
+	    var h = Math.cos(temp);
+	    con = Math.sqrt((1 - Math.pow(h, 2)) / (1 + Math.pow(g, 2)));
+	    lat = Math.asin(con);
+
+	    if (y < 0) {
+	      lat = -lat;
+	    }
+
+	    if ((g === 0) && (h === 0)) {
+	      lon = 0;
+	    }
+	    else {
+	      lon = adjust_lon(Math.atan2(g, h) + this.long0);
+	    }
+	  }
+	  else { // ellipsoidal form
+	    con = this.ml0 + y / this.k0;
+	    phi = pj_inv_mlfn(con, this.es, this.en);
+
+	    if (Math.abs(phi) < HALF_PI) {
+	      var sin_phi = Math.sin(phi);
+	      var cos_phi = Math.cos(phi);
+	      var tan_phi = Math.abs(cos_phi) > EPSLN ? Math.tan(phi) : 0;
+	      var c = this.ep2 * Math.pow(cos_phi, 2);
+	      var cs = Math.pow(c, 2);
+	      var t = Math.pow(tan_phi, 2);
+	      var ts = Math.pow(t, 2);
+	      con = 1 - this.es * Math.pow(sin_phi, 2);
+	      var d = x * Math.sqrt(con) / this.k0;
+	      var ds = Math.pow(d, 2);
+	      con = con * tan_phi;
+
+	      lat = phi - (con * ds / (1 - this.es)) * 0.5 * (1 -
+	        ds / 12 * (5 + 3 * t - 9 * c * t + c - 4 * cs -
+	        ds / 30 * (61 + 90 * t - 252 * c * t + 45 * ts + 46 * c -
+	        ds / 56 * (1385 + 3633 * t + 4095 * ts + 1574 * ts * t))));
+
+	      lon = adjust_lon(this.long0 + (d * (1 -
+	        ds / 6 * (1 + 2 * t + c -
+	        ds / 20 * (5 + 28 * t + 24 * ts + 8 * c * t + 6 * c -
+	        ds / 42 * (61 + 662 * t + 1320 * ts + 720 * ts * t)))) / cos_phi));
+	    }
+	    else {
+	      lat = HALF_PI * sign(y);
+	      lon = 0;
+	    }
+	  }
+
+	  p.x = lon;
+	  p.y = lat;
+
+	  return p;
+	}
+
+	var names$3 = ["Transverse_Mercator", "Transverse Mercator", "tmerc"];
+	var tmerc = {
+	  init: init$2,
+	  forward: forward$2,
+	  inverse: inverse$2,
+	  names: names$3
+	};
+
+	var sinh = function(x) {
+	  var r = Math.exp(x);
+	  r = (r - 1 / r) / 2;
+	  return r;
+	};
+
+	var hypot = function(x, y) {
+	  x = Math.abs(x);
+	  y = Math.abs(y);
+	  var a = Math.max(x, y);
+	  var b = Math.min(x, y) / (a ? a : 1);
+
+	  return a * Math.sqrt(1 + Math.pow(b, 2));
+	};
+
+	var log1py = function(x) {
+	  var y = 1 + x;
+	  var z = y - 1;
+
+	  return z === 0 ? x : x * Math.log(y) / z;
+	};
+
+	var asinhy = function(x) {
+	  var y = Math.abs(x);
+	  y = log1py(y * (1 + y / (hypot(1, y) + 1)));
+
+	  return x < 0 ? -y : y;
+	};
+
+	var gatg = function(pp, B) {
+	  var cos_2B = 2 * Math.cos(2 * B);
+	  var i = pp.length - 1;
+	  var h1 = pp[i];
+	  var h2 = 0;
+	  var h;
+
+	  while (--i >= 0) {
+	    h = -h2 + cos_2B * h1 + pp[i];
+	    h2 = h1;
+	    h1 = h;
+	  }
+
+	  return (B + h * Math.sin(2 * B));
+	};
+
+	var clens = function(pp, arg_r) {
+	  var r = 2 * Math.cos(arg_r);
+	  var i = pp.length - 1;
+	  var hr1 = pp[i];
+	  var hr2 = 0;
+	  var hr;
+
+	  while (--i >= 0) {
+	    hr = -hr2 + r * hr1 + pp[i];
+	    hr2 = hr1;
+	    hr1 = hr;
+	  }
+
+	  return Math.sin(arg_r) * hr;
+	};
+
+	var cosh = function(x) {
+	  var r = Math.exp(x);
+	  r = (r + 1 / r) / 2;
+	  return r;
+	};
+
+	var clens_cmplx = function(pp, arg_r, arg_i) {
+	  var sin_arg_r = Math.sin(arg_r);
+	  var cos_arg_r = Math.cos(arg_r);
+	  var sinh_arg_i = sinh(arg_i);
+	  var cosh_arg_i = cosh(arg_i);
+	  var r = 2 * cos_arg_r * cosh_arg_i;
+	  var i = -2 * sin_arg_r * sinh_arg_i;
+	  var j = pp.length - 1;
+	  var hr = pp[j];
+	  var hi1 = 0;
+	  var hr1 = 0;
+	  var hi = 0;
+	  var hr2;
+	  var hi2;
+
+	  while (--j >= 0) {
+	    hr2 = hr1;
+	    hi2 = hi1;
+	    hr1 = hr;
+	    hi1 = hi;
+	    hr = -hr2 + r * hr1 - i * hi1 + pp[j];
+	    hi = -hi2 + i * hr1 + r * hi1;
+	  }
+
+	  r = sin_arg_r * cosh_arg_i;
+	  i = cos_arg_r * sinh_arg_i;
+
+	  return [r * hr - i * hi, r * hi + i * hr];
+	};
+
+	// Heavily based on this etmerc projection implementation
+	// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/etmerc.js
+
+	function init$3() {
+	  if (this.es === undefined || this.es <= 0) {
+	    throw new Error('incorrect elliptical usage');
+	  }
+
+	  this.x0 = this.x0 !== undefined ? this.x0 : 0;
+	  this.y0 = this.y0 !== undefined ? this.y0 : 0;
+	  this.long0 = this.long0 !== undefined ? this.long0 : 0;
+	  this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;
+
+	  this.cgb = [];
+	  this.cbg = [];
+	  this.utg = [];
+	  this.gtu = [];
+
+	  var f = this.es / (1 + Math.sqrt(1 - this.es));
+	  var n = f / (2 - f);
+	  var np = n;
+
+	  this.cgb[0] = n * (2 + n * (-2 / 3 + n * (-2 + n * (116 / 45 + n * (26 / 45 + n * (-2854 / 675 ))))));
+	  this.cbg[0] = n * (-2 + n * ( 2 / 3 + n * ( 4 / 3 + n * (-82 / 45 + n * (32 / 45 + n * (4642 / 4725))))));
+
+	  np = np * n;
+	  this.cgb[1] = np * (7 / 3 + n * (-8 / 5 + n * (-227 / 45 + n * (2704 / 315 + n * (2323 / 945)))));
+	  this.cbg[1] = np * (5 / 3 + n * (-16 / 15 + n * ( -13 / 9 + n * (904 / 315 + n * (-1522 / 945)))));
+
+	  np = np * n;
+	  this.cgb[2] = np * (56 / 15 + n * (-136 / 35 + n * (-1262 / 105 + n * (73814 / 2835))));
+	  this.cbg[2] = np * (-26 / 15 + n * (34 / 21 + n * (8 / 5 + n * (-12686 / 2835))));
+
+	  np = np * n;
+	  this.cgb[3] = np * (4279 / 630 + n * (-332 / 35 + n * (-399572 / 14175)));
+	  this.cbg[3] = np * (1237 / 630 + n * (-12 / 5 + n * ( -24832 / 14175)));
+
+	  np = np * n;
+	  this.cgb[4] = np * (4174 / 315 + n * (-144838 / 6237));
+	  this.cbg[4] = np * (-734 / 315 + n * (109598 / 31185));
+
+	  np = np * n;
+	  this.cgb[5] = np * (601676 / 22275);
+	  this.cbg[5] = np * (444337 / 155925);
+
+	  np = Math.pow(n, 2);
+	  this.Qn = this.k0 / (1 + n) * (1 + np * (1 / 4 + np * (1 / 64 + np / 256)));
+
+	  this.utg[0] = n * (-0.5 + n * ( 2 / 3 + n * (-37 / 96 + n * ( 1 / 360 + n * (81 / 512 + n * (-96199 / 604800))))));
+	  this.gtu[0] = n * (0.5 + n * (-2 / 3 + n * (5 / 16 + n * (41 / 180 + n * (-127 / 288 + n * (7891 / 37800))))));
+
+	  this.utg[1] = np * (-1 / 48 + n * (-1 / 15 + n * (437 / 1440 + n * (-46 / 105 + n * (1118711 / 3870720)))));
+	  this.gtu[1] = np * (13 / 48 + n * (-3 / 5 + n * (557 / 1440 + n * (281 / 630 + n * (-1983433 / 1935360)))));
+
+	  np = np * n;
+	  this.utg[2] = np * (-17 / 480 + n * (37 / 840 + n * (209 / 4480 + n * (-5569 / 90720 ))));
+	  this.gtu[2] = np * (61 / 240 + n * (-103 / 140 + n * (15061 / 26880 + n * (167603 / 181440))));
+
+	  np = np * n;
+	  this.utg[3] = np * (-4397 / 161280 + n * (11 / 504 + n * (830251 / 7257600)));
+	  this.gtu[3] = np * (49561 / 161280 + n * (-179 / 168 + n * (6601661 / 7257600)));
+
+	  np = np * n;
+	  this.utg[4] = np * (-4583 / 161280 + n * (108847 / 3991680));
+	  this.gtu[4] = np * (34729 / 80640 + n * (-3418889 / 1995840));
+
+	  np = np * n;
+	  this.utg[5] = np * (-20648693 / 638668800);
+	  this.gtu[5] = np * (212378941 / 319334400);
+
+	  var Z = gatg(this.cbg, this.lat0);
+	  this.Zb = -this.Qn * (Z + clens(this.gtu, 2 * Z));
+	}
+
+	function forward$3(p) {
+	  var Ce = adjust_lon(p.x - this.long0);
+	  var Cn = p.y;
+
+	  Cn = gatg(this.cbg, Cn);
+	  var sin_Cn = Math.sin(Cn);
+	  var cos_Cn = Math.cos(Cn);
+	  var sin_Ce = Math.sin(Ce);
+	  var cos_Ce = Math.cos(Ce);
+
+	  Cn = Math.atan2(sin_Cn, cos_Ce * cos_Cn);
+	  Ce = Math.atan2(sin_Ce * cos_Cn, hypot(sin_Cn, cos_Cn * cos_Ce));
+	  Ce = asinhy(Math.tan(Ce));
+
+	  var tmp = clens_cmplx(this.gtu, 2 * Cn, 2 * Ce);
+
+	  Cn = Cn + tmp[0];
+	  Ce = Ce + tmp[1];
+
+	  var x;
+	  var y;
+
+	  if (Math.abs(Ce) <= 2.623395162778) {
+	    x = this.a * (this.Qn * Ce) + this.x0;
+	    y = this.a * (this.Qn * Cn + this.Zb) + this.y0;
+	  }
+	  else {
+	    x = Infinity;
+	    y = Infinity;
+	  }
+
+	  p.x = x;
+	  p.y = y;
+
+	  return p;
+	}
+
+	function inverse$3(p) {
+	  var Ce = (p.x - this.x0) * (1 / this.a);
+	  var Cn = (p.y - this.y0) * (1 / this.a);
+
+	  Cn = (Cn - this.Zb) / this.Qn;
+	  Ce = Ce / this.Qn;
+
+	  var lon;
+	  var lat;
+
+	  if (Math.abs(Ce) <= 2.623395162778) {
+	    var tmp = clens_cmplx(this.utg, 2 * Cn, 2 * Ce);
+
+	    Cn = Cn + tmp[0];
+	    Ce = Ce + tmp[1];
+	    Ce = Math.atan(sinh(Ce));
+
+	    var sin_Cn = Math.sin(Cn);
+	    var cos_Cn = Math.cos(Cn);
+	    var sin_Ce = Math.sin(Ce);
+	    var cos_Ce = Math.cos(Ce);
+
+	    Cn = Math.atan2(sin_Cn * cos_Ce, hypot(sin_Ce, cos_Ce * cos_Cn));
+	    Ce = Math.atan2(sin_Ce, cos_Ce * cos_Cn);
+
+	    lon = adjust_lon(Ce + this.long0);
+	    lat = gatg(this.cgb, Cn);
+	  }
+	  else {
+	    lon = Infinity;
+	    lat = Infinity;
+	  }
+
+	  p.x = lon;
+	  p.y = lat;
+
+	  return p;
+	}
+
+	var names$4 = ["Extended_Transverse_Mercator", "Extended Transverse Mercator", "etmerc"];
+	var etmerc = {
+	  init: init$3,
+	  forward: forward$3,
+	  inverse: inverse$3,
+	  names: names$4
+	};
+
+	var adjust_zone = function(zone, lon) {
+	  if (zone === undefined) {
+	    zone = Math.floor((adjust_lon(lon) + Math.PI) * 30 / Math.PI) + 1;
+
+	    if (zone < 0) {
+	      return 0;
+	    } else if (zone > 60) {
+	      return 60;
+	    }
+	  }
+	  return zone;
+	};
+
+	var dependsOn = 'etmerc';
+	function init$4() {
+	  var zone = adjust_zone(this.zone, this.long0);
+	  if (zone === undefined) {
+	    throw new Error('unknown utm zone');
+	  }
+	  this.lat0 = 0;
+	  this.long0 =  ((6 * Math.abs(zone)) - 183) * D2R;
+	  this.x0 = 500000;
+	  this.y0 = this.utmSouth ? 10000000 : 0;
+	  this.k0 = 0.9996;
+
+	  etmerc.init.apply(this);
+	  this.forward = etmerc.forward;
+	  this.inverse = etmerc.inverse;
+	}
+
+	var names$5 = ["Universal Transverse Mercator System", "utm"];
+	var utm = {
+	  init: init$4,
+	  names: names$5,
+	  dependsOn: dependsOn
+	};
+
+	var srat = function(esinp, exp) {
+	  return (Math.pow((1 - esinp) / (1 + esinp), exp));
+	};
+
+	var MAX_ITER$1 = 20;
+	function init$6() {
+	  var sphi = Math.sin(this.lat0);
+	  var cphi = Math.cos(this.lat0);
+	  cphi *= cphi;
+	  this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi);
+	  this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es));
+	  this.phic0 = Math.asin(sphi / this.C);
+	  this.ratexp = 0.5 * this.C * this.e;
+	  this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp));
+	}
+
+	function forward$5(p) {
+	  var lon = p.x;
+	  var lat = p.y;
+
+	  p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI;
+	  p.x = this.C * lon;
+	  return p;
+	}
+
+	function inverse$5(p) {
+	  var DEL_TOL = 1e-14;
+	  var lon = p.x / this.C;
+	  var lat = p.y;
+	  var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C);
+	  for (var i = MAX_ITER$1; i > 0; --i) {
+	    lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI;
+	    if (Math.abs(lat - p.y) < DEL_TOL) {
+	      break;
+	    }
+	    p.y = lat;
+	  }
+	  /* convergence failed */
+	  if (!i) {
+	    return null;
+	  }
+	  p.x = lon;
+	  p.y = lat;
+	  return p;
+	}
+
+	var names$7 = ["gauss"];
+	var gauss = {
+	  init: init$6,
+	  forward: forward$5,
+	  inverse: inverse$5,
+	  names: names$7
+	};
+
+	function init$5() {
+	  gauss.init.apply(this);
+	  if (!this.rc) {
+	    return;
+	  }
+	  this.sinc0 = Math.sin(this.phic0);
+	  this.cosc0 = Math.cos(this.phic0);
+	  this.R2 = 2 * this.rc;
+	  if (!this.title) {
+	    this.title = "Oblique Stereographic Alternative";
+	  }
+	}
+
+	function forward$4(p) {
+	  var sinc, cosc, cosl, k;
+	  p.x = adjust_lon(p.x - this.long0);
+	  gauss.forward.apply(this, [p]);
+	  sinc = Math.sin(p.y);
+	  cosc = Math.cos(p.y);
+	  cosl = Math.cos(p.x);
+	  k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl);
+	  p.x = k * cosc * Math.sin(p.x);
+	  p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl);
+	  p.x = this.a * p.x + this.x0;
+	  p.y = this.a * p.y + this.y0;
+	  return p;
+	}
+
+	function inverse$4(p) {
+	  var sinc, cosc, lon, lat, rho;
+	  p.x = (p.x - this.x0) / this.a;
+	  p.y = (p.y - this.y0) / this.a;
+
+	  p.x /= this.k0;
+	  p.y /= this.k0;
+	  if ((rho = Math.sqrt(p.x * p.x + p.y * p.y))) {
+	    var c = 2 * Math.atan2(rho, this.R2);
+	    sinc = Math.sin(c);
+	    cosc = Math.cos(c);
+	    lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho);
+	    lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc);
+	  }
+	  else {
+	    lat = this.phic0;
+	    lon = 0;
+	  }
+
+	  p.x = lon;
+	  p.y = lat;
+	  gauss.inverse.apply(this, [p]);
+	  p.x = adjust_lon(p.x + this.long0);
+	  return p;
+	}
+
+	var names$6 = ["Stereographic_North_Pole", "Oblique_Stereographic", "Polar_Stereographic", "sterea","Oblique Stereographic Alternative"];
+	var sterea = {
+	  init: init$5,
+	  forward: forward$4,
+	  inverse: inverse$4,
+	  names: names$6
+	};
+
+	function ssfn_(phit, sinphi, eccen) {
+	  sinphi *= eccen;
+	  return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen));
+	}
+
+	function init$7() {
+	  this.coslat0 = Math.cos(this.lat0);
+	  this.sinlat0 = Math.sin(this.lat0);
+	  if (this.sphere) {
+	    if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {
+	      this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts));
+	    }
+	  }
+	  else {
+	    if (Math.abs(this.coslat0) <= EPSLN) {
+	      if (this.lat0 > 0) {
+	        //North pole
+	        //trace('stere:north pole');
+	        this.con = 1;
+	      }
+	      else {
+	        //South pole
+	        //trace('stere:south pole');
+	        this.con = -1;
+	      }
+	    }
+	    this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e));
+	    if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {
+	      this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts));
+	    }
+	    this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0);
+	    this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI;
+	    this.cosX0 = Math.cos(this.X0);
+	    this.sinX0 = Math.sin(this.X0);
+	  }
+	}
+
+	// Stereographic forward equations--mapping lat,long to x,y
+	function forward$6(p) {
+	  var lon = p.x;
+	  var lat = p.y;
+	  var sinlat = Math.sin(lat);
+	  var coslat = Math.cos(lat);
+	  var A, X, sinX, cosX, ts, rh;
+	  var dlon = adjust_lon(lon - this.long0);
+
+	  if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) {
+	    //case of the origine point
+	    //trace('stere:this is the origin point');
+	    p.x = NaN;
+	    p.y = NaN;
+	    return p;
+	  }
+	  if (this.sphere) {
+	    //trace('stere:sphere case');
+	    A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon));
+	    p.x = this.a * A * coslat * Math.sin(dlon) + this.x0;
+	    p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0;
+	    return p;
+	  }
+	  else {
+	    X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI;
+	    cosX = Math.cos(X);
+	    sinX = Math.sin(X);
+	    if (Math.abs(this.coslat0) <= EPSLN) {
+	      ts = tsfnz(this.e, lat * this.con, this.con * sinlat);
+	      rh = 2 * this.a * this.k0 * ts / this.cons;
+	      p.x = this.x0 + rh * Math.sin(lon - this.long0);
+	      p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0);
+	      //trace(p.toString());
+	      return p;
+	    }
+	    else if (Math.abs(this.sinlat0) < EPSLN) {
+	      //Eq
+	      //trace('stere:equateur');
+	      A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon));
+	      p.y = A * sinX;
+	    }
+	    else {
+	      //other case
+	      //trace('stere:normal case');
+	      A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon)));
+	      p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0;
+	    }
+	    p.x = A * cosX * Math.sin(dlon) + this.x0;
+	  }
+	  //trace(p.toString());
+	  return p;
+	}
+
+	//* Stereographic inverse equations--mapping x,y to lat/long
+	function inverse$6(p) {
+	  p.x -= this.x0;
+	  p.y -= this.y0;
+	  var lon, lat, ts, ce, Chi;
+	  var rh = Math.sqrt(p.x * p.x + p.y * p.y);
+	  if (this.sphere) {
+	    var c = 2 * Math.atan(rh / (0.5 * this.a * this.k0));
+	    lon = this.long0;
+	    lat = this.lat0;
+	    if (rh <= EPSLN) {
+	      p.x = lon;
+	      p.y = lat;
+	      return p;
+	    }
+	    lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh);
+	    if (Math.abs(this.coslat0) < EPSLN) {
+	      if (this.lat0 > 0) {
+	        lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));
+	      }
+	      else {
+	        lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));
+	      }
+	    }
+	    else {
+	      lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c)));
+	    }
+	    p.x = lon;
+	    p.y = lat;
+	    return p;
+	  }
+	  else {
+	    if (Math.abs(this.coslat0) <= EPSLN) {
+	      if (rh <= EPSLN) {
+	        lat = this.lat0;
+	        lon = this.long0;
+	        p.x = lon;
+	        p.y = lat;
+	        //trace(p.toString());
+	        return p;
+	      }
+	      p.x *= this.con;
+	      p.y *= this.con;
+	      ts = rh * this.cons / (2 * this.a * this.k0);
+	      lat = this.con * phi2z(this.e, ts);
+	      lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y));
+	    }
+	    else {
+	      ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1));
+	      lon = this.long0;
+	      if (rh <= EPSLN) {
+	        Chi = this.X0;
+	      }
+	      else {
+	        Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh);
+	        lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce)));
+	      }
+	      lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi)));
+	    }
+	  }
+	  p.x = lon;
+	  p.y = lat;
+
+	  //trace(p.toString());
+	  return p;
+
+	}
+
+	var names$8 = ["stere", "Stereographic_South_Pole", "Polar Stereographic (variant B)"];
+	var stere = {
+	  init: init$7,
+	  forward: forward$6,
+	  inverse: inverse$6,
+	  names: names$8,
+	  ssfn_: ssfn_
+	};
+
+	/*
+	  references:
+	    Formules et constantes pour le Calcul pour la
+	    projection cylindrique conforme à axe oblique et pour la transformation entre
+	    des systèmes de référence.
+	    http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf
+	  */
+
+	function init$8() {
+	  var phy0 = this.lat0;
+	  this.lambda0 = this.long0;
+	  var sinPhy0 = Math.sin(phy0);
+	  var semiMajorAxis = this.a;
+	  var invF = this.rf;
+	  var flattening = 1 / invF;
+	  var e2 = 2 * flattening - Math.pow(flattening, 2);
+	  var e = this.e = Math.sqrt(e2);
+	  this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2));
+	  this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4));
+	  this.b0 = Math.asin(sinPhy0 / this.alpha);
+	  var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2));
+	  var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2));
+	  var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0));
+	  this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3;
+	}
+
+	function forward$7(p) {
+	  var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2));
+	  var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y)));
+	  var S = -this.alpha * (Sa1 + Sa2) + this.K;
+
+	  // spheric latitude
+	  var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4);
+
+	  // spheric longitude
+	  var I = this.alpha * (p.x - this.lambda0);
+
+	  // psoeudo equatorial rotation
+	  var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.cos(this.b0) * Math.cos(I)));
+
+	  var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I));
+
+	  p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0;
+	  p.x = this.R * rotI + this.x0;
+	  return p;
+	}
+
+	function inverse$7(p) {
+	  var Y = p.x - this.x0;
+	  var X = p.y - this.y0;
+
+	  var rotI = Y / this.R;
+	  var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4);
+
+	  var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI));
+	  var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB)));
+
+	  var lambda = this.lambda0 + I / this.alpha;
+
+	  var S = 0;
+	  var phy = b;
+	  var prevPhy = -1000;
+	  var iteration = 0;
+	  while (Math.abs(phy - prevPhy) > 0.0000001) {
+	    if (++iteration > 20) {
+	      //...reportError("omercFwdInfinity");
+	      return;
+	    }
+	    //S = Math.log(Math.tan(Math.PI / 4 + phy / 2));
+	    S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2));
+	    prevPhy = phy;
+	    phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2;
+	  }
+
+	  p.x = lambda;
+	  p.y = phy;
+	  return p;
+	}
+
+	var names$9 = ["somerc"];
+	var somerc = {
+	  init: init$8,
+	  forward: forward$7,
+	  inverse: inverse$7,
+	  names: names$9
+	};
+
+	/* Initialize the Oblique Mercator  projection
+	    ------------------------------------------*/
+	function init$9() {
+	  this.no_off = this.no_off || false;
+	  this.no_rot = this.no_rot || false;
+
+	  if (isNaN(this.k0)) {
+	    this.k0 = 1;
+	  }
+	  var sinlat = Math.sin(this.lat0);
+	  var coslat = Math.cos(this.lat0);
+	  var con = this.e * sinlat;
+
+	  this.bl = Math.sqrt(1 + this.es / (1 - this.es) * Math.pow(coslat, 4));
+	  this.al = this.a * this.bl * this.k0 * Math.sqrt(1 - this.es) / (1 - con * con);
+	  var t0 = tsfnz(this.e, this.lat0, sinlat);
+	  var dl = this.bl / coslat * Math.sqrt((1 - this.es) / (1 - con * con));
+	  if (dl * dl < 1) {
+	    dl = 1;
+	  }
+	  var fl;
+	  var gl;
+	  if (!isNaN(this.longc)) {
+	    //Central point and azimuth method
+
+	    if (this.lat0 >= 0) {
+	      fl = dl + Math.sqrt(dl * dl - 1);
+	    }
+	    else {
+	      fl = dl - Math.sqrt(dl * dl - 1);
+	    }
+	    this.el = fl * Math.pow(t0, this.bl);
+	    gl = 0.5 * (fl - 1 / fl);
+	    this.gamma0 = Math.asin(Math.sin(this.alpha) / dl);
+	    this.long0 = this.longc - Math.asin(gl * Math.tan(this.gamma0)) / this.bl;
+
+	  }
+	  else {
+	    //2 points method
+	    var t1 = tsfnz(this.e, this.lat1, Math.sin(this.lat1));
+	    var t2 = tsfnz(this.e, this.lat2, Math.sin(this.lat2));
+	    if (this.lat0 >= 0) {
+	      this.el = (dl + Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);
+	    }
+	    else {
+	      this.el = (dl - Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);
+	    }
+	    var hl = Math.pow(t1, this.bl);
+	    var ll = Math.pow(t2, this.bl);
+	    fl = this.el / hl;
+	    gl = 0.5 * (fl - 1 / fl);
+	    var jl = (this.el * this.el - ll * hl) / (this.el * this.el + ll * hl);
+	    var pl = (ll - hl) / (ll + hl);
+	    var dlon12 = adjust_lon(this.long1 - this.long2);
+	    this.long0 = 0.5 * (this.long1 + this.long2) - Math.atan(jl * Math.tan(0.5 * this.bl * (dlon12)) / pl) / this.bl;
+	    this.long0 = adjust_lon(this.long0);
+	    var dlon10 = adjust_lon(this.long1 - this.long0);
+	    this.gamma0 = Math.atan(Math.sin(this.bl * (dlon10)) / gl);
+	    this.alpha = Math.asin(dl * Math.sin(this.gamma0));
+	  }
+
+	  if (this.no_off) {
+	    this.uc = 0;
+	  }
+	  else {
+	    if (this.lat0 >= 0) {
+	      this.uc = this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));
+	    }
+	    else {
+	      this.uc = -1 * this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));
+	    }
+	  }
+
+	}
+
+	/* Oblique Mercator forward equations--mapping lat,long to x,y
+	    ----------------------------------------------------------*/
+	function forward$8(p) {
+	  var lon = p.x;
+	  var lat = p.y;
+	  var dlon = adjust_lon(lon - this.long0);
+	  var us, vs;
+	  var con;
+	  if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {
+	    if (lat > 0) {
+	      con = -1;
+	    }
+	    else {
+	      con = 1;
+	    }
+	    vs = this.al / this.bl * Math.log(Math.tan(FORTPI + con * this.gamma0 * 0.5));
+	    us = -1 * con * HALF_PI * this.al / this.bl;
+	  }
+	  else {
+	    var t = tsfnz(this.e, lat, Math.sin(lat));
+	    var ql = this.el / Math.pow(t, this.bl);
+	    var sl = 0.5 * (ql - 1 / ql);
+	    var tl = 0.5 * (ql + 1 / ql);
+	    var vl = Math.sin(this.bl * (dlon));
+	    var ul = (sl * Math.sin(this.gamma0) - vl * Math.cos(this.gamma0)) / tl;
+	    if (Math.abs(Math.abs(ul) - 1) <= EPSLN) {
+	      vs = Number.POSITIVE_INFINITY;
+	    }
+	    else {
+	      vs = 0.5 * this.al * Math.log((1 - ul) / (1 + ul)) / this.bl;
+	    }
+	    if (Math.abs(Math.cos(this.bl * (dlon))) <= EPSLN) {
+	      us = this.al * this.bl * (dlon);
+	    }
+	    else {
+	      us = this.al * Math.atan2(sl * Math.cos(this.gamma0) + vl * Math.sin(this.gamma0), Math.cos(this.bl * dlon)) / this.bl;
+	    }
+	  }
+
+	  if (this.no_rot) {
+	    p.x = this.x0 + us;
+	    p.y = this.y0 + vs;
+	  }
+	  else {
+
+	    us -= this.uc;
+	    p.x = this.x0 + vs * Math.cos(this.alpha) + us * Math.sin(this.alpha);
+	    p.y = this.y0 + us * Math.cos(this.alpha) - vs * Math.sin(this.alpha);
+	  }
+	  return p;
+	}
+
+	function inverse$8(p) {
+	  var us, vs;
+	  if (this.no_rot) {
+	    vs = p.y - this.y0;
+	    us = p.x - this.x0;
+	  }
+	  else {
+	    vs = (p.x - this.x0) * Math.cos(this.alpha) - (p.y - this.y0) * Math.sin(this.alpha);
+	    us = (p.y - this.y0) * Math.cos(this.alpha) + (p.x - this.x0) * Math.sin(this.alpha);
+	    us += this.uc;
+	  }
+	  var qp = Math.exp(-1 * this.bl * vs / this.al);
+	  var sp = 0.5 * (qp - 1 / qp);
+	  var tp = 0.5 * (qp + 1 / qp);
+	  var vp = Math.sin(this.bl * us / this.al);
+	  var up = (vp * Math.cos(this.gamma0) + sp * Math.sin(this.gamma0)) / tp;
+	  var ts = Math.pow(this.el / Math.sqrt((1 + up) / (1 - up)), 1 / this.bl);
+	  if (Math.abs(up - 1) < EPSLN) {
+	    p.x = this.long0;
+	    p.y = HALF_PI;
+	  }
+	  else if (Math.abs(up + 1) < EPSLN) {
+	    p.x = this.long0;
+	    p.y = -1 * HALF_PI;
+	  }
+	  else {
+	    p.y = phi2z(this.e, ts);
+	    p.x = adjust_lon(this.long0 - Math.atan2(sp * Math.cos(this.gamma0) - vp * Math.sin(this.gamma0), Math.cos(this.bl * us / this.al)) / this.bl);
+	  }
+	  return p;
+	}
+
+	var names$10 = ["Hotine_Oblique_Mercator", "Hotine Oblique Mercator", "Hotine_Oblique_Mercator_Azimuth_Natural_Origin", "Hotine_Oblique_Mercator_Azimuth_Center", "omerc"];
+	var omerc = {
+	  init: init$9,
+	  forward: forward$8,
+	  inverse: inverse$8,
+	  names: names$10
+	};
+
+	function init$10() {
+
+	  // array of:  r_maj,r_min,lat1,lat2,c_lon,c_lat,false_east,false_north
+	  //double c_lat;                   /* center latitude                      */
+	  //double c_lon;                   /* center longitude                     */
+	  //double lat1;                    /* first standard parallel              */
+	  //double lat2;                    /* second standard parallel             */
+	  //double r_maj;                   /* major axis                           */
+	  //double r_min;                   /* minor axis                           */
+	  //double false_east;              /* x offset in meters                   */
+	  //double false_north;             /* y offset in meters                   */
+
+	  if (!this.lat2) {
+	    this.lat2 = this.lat1;
+	  } //if lat2 is not defined
+	  if (!this.k0) {
+	    this.k0 = 1;
+	  }
+	  this.x0 = this.x0 || 0;
+	  this.y0 = this.y0 || 0;
+	  // Standard Parallels cannot be equal and on opposite sides of the equator
+	  if (Math.abs(this.lat1 + this.lat2) < EPSLN) {
+	    return;
+	  }
+
+	  var temp = this.b / this.a;
+	  this.e = Math.sqrt(1 - temp * temp);
+
+	  var sin1 = Math.sin(this.lat1);
+	  var cos1 = Math.cos(this.lat1);
+	  var ms1 = msfnz(this.e, sin1, cos1);
+	  var ts1 = tsfnz(this.e, this.lat1, sin1);
+
+	  var sin2 = Math.sin(this.lat2);
+	  var cos2 = Math.cos(this.lat2);
+	  var ms2 = msfnz(this.e, sin2, cos2);
+	  var ts2 = tsfnz(this.e, this.lat2, sin2);
+
+	  var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0));
+
+	  if (Math.abs(this.lat1 - this.lat2) > EPSLN) {
+	    this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2);
+	  }
+	  else {
+	    this.ns = sin1;
+	  }
+	  if (isNaN(this.ns)) {
+	    this.ns = sin1;
+	  }
+	  this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns));
+	  this.rh = this.a * this.f0 * Math.pow(ts0, this.ns);
+	  if (!this.title) {
+	    this.title = "Lambert Conformal Conic";
+	  }
+	}
+
+	// Lambert Conformal conic forward equations--mapping lat,long to x,y
+	// -----------------------------------------------------------------
+	function forward$9(p) {
+
+	  var lon = p.x;
+	  var lat = p.y;
+
+	  // singular cases :
+	  if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) {
+	    lat = sign(lat) * (HALF_PI - 2 * EPSLN);
+	  }
+
+	  var con = Math.abs(Math.abs(lat) - HALF_PI);
+	  var ts, rh1;
+	  if (con > EPSLN) {
+	    ts = tsfnz(this.e, lat, Math.sin(lat));
+	    rh1 = this.a * this.f0 * Math.pow(ts, this.ns);
+	  }
+	  else {
+	    con = lat * this.ns;
+	    if (con <= 0) {
+	      return null;
+	    }
+	    rh1 = 0;
+	  }
+	  var theta = this.ns * adjust_lon(lon - this.long0);
+	  p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0;
+	  p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0;
+
+	  return p;
+	}
+
+	// Lambert Conformal Conic inverse equations--mapping x,y to lat/long
+	// -----------------------------------------------------------------
+	function inverse$9(p) {
+
+	  var rh1, con, ts;
+	  var lat, lon;
+	  var x = (p.x - this.x0) / this.k0;
+	  var y = (this.rh - (p.y - this.y0) / this.k0);
+	  if (this.ns > 0) {
+	    rh1 = Math.sqrt(x * x + y * y);
+	    con = 1;
+	  }
+	  else {
+	    rh1 = -Math.sqrt(x * x + y * y);
+	    con = -1;
+	  }
+	  var theta = 0;
+	  if (rh1 !== 0) {
+	    theta = Math.atan2((con * x), (con * y));
+	  }
+	  if ((rh1 !== 0) || (this.ns > 0)) {
+	    con = 1 / this.ns;
+	    ts = Math.pow((rh1 / (this.a * this.f0)), con);
+	    lat = phi2z(this.e, ts);
+	    if (lat === -9999) {
+	      return null;
+	    }
+	  }
+	  else {
+	    lat = -HALF_PI;
+	  }
+	  lon = adjust_lon(theta / this.ns + this.long0);
+
+	  p.x = lon;
+	  p.y = lat;
+	  return p;
+	}
+
+	var names$11 = ["Lambert Tangential Conformal Conic Projection", "Lambert_Conformal_Conic", "Lambert_Conformal_Conic_2SP", "lcc"];
+	var lcc = {
+	  init: init$10,
+	  forward: forward$9,
+	  inverse: inverse$9,
+	  names: names$11
+	};
+
+	function init$11() {
+	  this.a = 6377397.155;
+	  this.es = 0.006674372230614;
+	  this.e = Math.sqrt(this.es);
+	  if (!this.lat0) {
+	    this.lat0 = 0.863937979737193;
+	  }
+	  if (!this.long0) {
+	    this.long0 = 0.7417649320975901 - 0.308341501185665;
+	  }
+	  /* if scale not set default to 0.9999 */
+	  if (!this.k0) {
+	    this.k0 = 0.9999;
+	  }
+	  this.s45 = 0.785398163397448; /* 45 */
+	  this.s90 = 2 * this.s45;
+	  this.fi0 = this.lat0;
+	  this.e2 = this.es;
+	  this.e = Math.sqrt(this.e2);
+	  this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2));
+	  this.uq = 1.04216856380474;
+	  this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa);
+	  this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2);
+	  this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g;
+	  this.k1 = this.k0;
+	  this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2));
+	  this.s0 = 1.37008346281555;
+	  this.n = Math.sin(this.s0);
+	  this.ro0 = this.k1 * this.n0 / Math.tan(this.s0);
+	  this.ad = this.s90 - this.uq;
+	}
+
+	/* ellipsoid */
+	/* calculate xy from lat/lon */
+	/* Constants, identical to inverse transform function */
+	function forward$10(p) {
+	  var gfi, u, deltav, s, d, eps, ro;
+	  var lon = p.x;
+	  var lat = p.y;
+	  var delta_lon = adjust_lon(lon - this.long0);
+	  /* Transformation */
+	  gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2));
+	  u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45);
+	  deltav = -delta_lon * this.alfa;
+	  s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav));
+	  d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s));
+	  eps = this.n * d;
+	  ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n);
+	  p.y = ro * Math.cos(eps) / 1;
+	  p.x = ro * Math.sin(eps) / 1;
+
+	  if (!this.czech) {
+	    p.y *= -1;
+	    p.x *= -1;
+	  }
+	  return (p);
+	}
+
+	/* calculate lat/lon from xy */
+	function inverse$10(p) {
+	  var u, deltav, s, d, eps, ro, fi1;
+	  var ok;
+
+	  /* Transformation */
+	  /* revert y, x*/
+	  var tmp = p.x;
+	  p.x = p.y;
+	  p.y = tmp;
+	  if (!this.czech) {
+	    p.y *= -1;
+	    p.x *= -1;
+	  }
+	  ro = Math.sqrt(p.x * p.x + p.y * p.y);
+	  eps = Math.atan2(p.y, p.x);
+	  d = eps / Math.sin(this.s0);
+	  s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45);
+	  u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d));
+	  deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u));
+	  p.x = this.long0 - deltav / this.alfa;
+	  fi1 = u;
+	  ok = 0;
+	  var iter = 0;
+	  do {
+	    p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45);
+	    if (Math.abs(fi1 - p.y) < 0.0000000001) {
+	      ok = 1;
+	    }
+	    fi1 = p.y;
+	    iter += 1;
+	  } while (ok === 0 && iter < 15);
+	  if (iter >= 15) {
+	    return null;
+	  }
+
+	  return (p);
+	}
+
+	var names$12 = ["Krovak", "krovak"];
+	var krovak = {
+	  init: init$11,
+	  forward: forward$10,
+	  inverse: inverse$10,
+	  names: names$12
+	};
+
+	var mlfn = function(e0, e1, e2, e3, phi) {
+	  return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi));
+	};
+
+	var e0fn = function(x) {
+	  return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x)));
+	};
+
+	var e1fn = function(x) {
+	  return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x)));
+	};
+
+	var e2fn = function(x) {
+	  return (0.05859375 * x * x * (1 + 0.75 * x));
+	};
+
+	var e3fn = function(x) {
+	  return (x * x * x * (35 / 3072));
+	};
+
+	var gN = function(a, e, sinphi) {
+	  var temp = e * sinphi;
+	  return a / Math.sqrt(1 - temp * temp);
+	};
+
+	var adjust_lat = function(x) {
+	  return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI));
+	};
+
+	var imlfn = function(ml, e0, e1, e2, e3) {
+	  var phi;
+	  var dphi;
+
+	  phi = ml / e0;
+	  for (var i = 0; i < 15; i++) {
+	    dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi));
+	    phi += dphi;
+	    if (Math.abs(dphi) <= 0.0000000001) {
+	      return phi;
+	    }
+	  }
+
+	  //..reportError("IMLFN-CONV:Latitude failed to converge after 15 iterations");
+	  return NaN;
+	};
+
+	function init$12() {
+	  if (!this.sphere) {
+	    this.e0 = e0fn(this.es);
+	    this.e1 = e1fn(this.es);
+	    this.e2 = e2fn(this.es);
+	    this.e3 = e3fn(this.es);
+	    this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);
+	  }
+	}
+
+	/* Cassini forward equations--mapping lat,long to x,y
+	  -----------------------------------------------------------------------*/
+	function forward$11(p) {
+
+	  /* Forward equations
+	      -----------------*/
+	  var x, y;
+	  var lam = p.x;
+	  var phi = p.y;
+	  lam = adjust_lon(lam - this.long0);
+
+	  if (this.sphere) {
+	    x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam));
+	    y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0);
+	  }
+	  else {
+	    //ellipsoid
+	    var sinphi = Math.sin(phi);
+	    var cosphi = Math.cos(phi);
+	    var nl = gN(this.a, this.e, sinphi);
+	    var tl = Math.tan(phi) * Math.tan(phi);
+	    var al = lam * Math.cos(phi);
+	    var asq = al * al;
+	    var cl = this.es * cosphi * cosphi / (1 - this.es);
+	    var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);
+
+	    x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120));
+	    y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24);
+
+
+	  }
+
+	  p.x = x + this.x0;
+	  p.y = y + this.y0;
+	  return p;
+	}
+
+	/* Inverse equations
+	  -----------------*/
+	function inverse$11(p) {
+	  p.x -= this.x0;
+	  p.y -= this.y0;
+	  var x = p.x / this.a;
+	  var y = p.y / this.a;
+	  var phi, lam;
+
+	  if (this.sphere) {
+	    var dd = y + this.lat0;
+	    phi = Math.asin(Math.sin(dd) * Math.cos(x));
+	    lam = Math.atan2(Math.tan(x), Math.cos(dd));
+	  }
+	  else {
+	    /* ellipsoid */
+	    var ml1 = this.ml0 / this.a + y;
+	    var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3);
+	    if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) {
+	      p.x = this.long0;
+	      p.y = HALF_PI;
+	      if (y < 0) {
+	        p.y *= -1;
+	      }
+	      return p;
+	    }
+	    var nl1 = gN(this.a, this.e, Math.sin(phi1));
+
+	    var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es);
+	    var tl1 = Math.pow(Math.tan(phi1), 2);
+	    var dl = x * this.a / nl1;
+	    var dsq = dl * dl;
+	    phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24);
+	    lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1);
+
+	  }
+
+	  p.x = adjust_lon(lam + this.long0);
+	  p.y = adjust_lat(phi);
+	  return p;
+
+	}
+
+	var names$13 = ["Cassini", "Cassini_Soldner", "cass"];
+	var cass = {
+	  init: init$12,
+	  forward: forward$11,
+	  inverse: inverse$11,
+	  names: names$13
+	};
+
+	var qsfnz = function(eccent, sinphi) {
+	  var con;
+	  if (eccent > 1.0e-7) {
+	    con = eccent * sinphi;
+	    return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con))));
+	  }
+	  else {
+	    return (2 * sinphi);
+	  }
+	};
+
+	/*
+	  reference
+	    "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder,
+	    The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.
+	  */
+
+	var S_POLE = 1;
+
+	var N_POLE = 2;
+	var EQUIT = 3;
+	var OBLIQ = 4;
+
+	/* Initialize the Lambert Azimuthal Equal Area projection
+	  ------------------------------------------------------*/
+	function init$13() {
+	  var t = Math.abs(this.lat0);
+	  if (Math.abs(t - HALF_PI) < EPSLN) {
+	    this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE;
+	  }
+	  else if (Math.abs(t) < EPSLN) {
+	    this.mode = this.EQUIT;
+	  }
+	  else {
+	    this.mode = this.OBLIQ;
+	  }
+	  if (this.es > 0) {
+	    var sinphi;
+
+	    this.qp = qsfnz(this.e, 1);
+	    this.mmf = 0.5 / (1 - this.es);
+	    this.apa = authset(this.es);
+	    switch (this.mode) {
+	    case this.N_POLE:
+	      this.dd = 1;
+	      break;
+	    case this.S_POLE:
+	      this.dd = 1;
+	      break;
+	    case this.EQUIT:
+	      this.rq = Math.sqrt(0.5 * this.qp);
+	      this.dd = 1 / this.rq;
+	      this.xmf = 1;
+	      this.ymf = 0.5 * this.qp;
+	      break;
+	    case this.OBLIQ:
+	      this.rq = Math.sqrt(0.5 * this.qp);
+	      sinphi = Math.sin(this.lat0);
+	      this.sinb1 = qsfnz(this.e, sinphi) / this.qp;
+	      this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1);
+	      this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1);
+	      this.ymf = (this.xmf = this.rq) / this.dd;
+	      this.xmf *= this.dd;
+	      break;
+	    }
+	  }
+	  else {
+	    if (this.mode === this.OBLIQ) {
+	      this.sinph0 = Math.sin(this.lat0);
+	      this.cosph0 = Math.cos(this.lat0);
+	    }
+	  }
+	}
+
+	/* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y
+	  -----------------------------------------------------------------------*/
+	function forward$12(p) {
+
+	  /* Forward equations
+	      -----------------*/
+	  var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi;
+	  var lam = p.x;
+	  var phi = p.y;
+
+	  lam = adjust_lon(lam - this.long0);
+	  if (this.sphere) {
+	    sinphi = Math.sin(phi);
+	    cosphi = Math.cos(phi);
+	    coslam = Math.cos(lam);
+	    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
+	      y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;
+	      if (y <= EPSLN) {
+	        return null;
+	      }
+	      y = Math.sqrt(2 / y);
+	      x = y * cosphi * Math.sin(lam);
+	      y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;
+	    }
+	    else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {
+	      if (this.mode === this.N_POLE) {
+	        coslam = -coslam;
+	      }
+	      if (Math.abs(phi + this.phi0) < EPSLN) {
+	        return null;
+	      }
+	      y = FORTPI - phi * 0.5;
+	      y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y));
+	      x = y * Math.sin(lam);
+	      y *= coslam;
+	    }
+	  }
+	  else {
+	    sinb = 0;
+	    cosb = 0;
+	    b = 0;
+	    coslam = Math.cos(lam);
+	    sinlam = Math.sin(lam);
+	    sinphi = Math.sin(phi);
+	    q = qsfnz(this.e, sinphi);
+	    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
+	      sinb = q / this.qp;
+	      cosb = Math.sqrt(1 - sinb * sinb);
+	    }
+	    switch (this.mode) {
+	    case this.OBLIQ:
+	      b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam;
+	      break;
+	    case this.EQUIT:
+	      b = 1 + cosb * coslam;
+	      break;
+	    case this.N_POLE:
+	      b = HALF_PI + phi;
+	      q = this.qp - q;
+	      break;
+	    case this.S_POLE:
+	      b = phi - HALF_PI;
+	      q = this.qp + q;
+	      break;
+	    }
+	    if (Math.abs(b) < EPSLN) {
+	      return null;
+	    }
+	    switch (this.mode) {
+	    case this.OBLIQ:
+	    case this.EQUIT:
+	      b = Math.sqrt(2 / b);
+	      if (this.mode === this.OBLIQ) {
+	        y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam);
+	      }
+	      else {
+	        y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf;
+	      }
+	      x = this.xmf * b * cosb * sinlam;
+	      break;
+	    case this.N_POLE:
+	    case this.S_POLE:
+	      if (q >= 0) {
+	        x = (b = Math.sqrt(q)) * sinlam;
+	        y = coslam * ((this.mode === this.S_POLE) ? b : -b);
+	      }
+	      else {
+	        x = y = 0;
+	      }
+	      break;
+	    }
+	  }
+
+	  p.x = this.a * x + this.x0;
+	  p.y = this.a * y + this.y0;
+	  return p;
+	}
+
+	/* Inverse equations
+	  -----------------*/
+	function inverse$12(p) {
+	  p.x -= this.x0;
+	  p.y -= this.y0;
+	  var x = p.x / this.a;
+	  var y = p.y / this.a;
+	  var lam, phi, cCe, sCe, q, rho, ab;
+	  if (this.sphere) {
+	    var cosz = 0,
+	      rh, sinz = 0;
+
+	    rh = Math.sqrt(x * x + y * y);
+	    phi = rh * 0.5;
+	    if (phi > 1) {
+	      return null;
+	    }
+	    phi = 2 * Math.asin(phi);
+	    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
+	      sinz = Math.sin(phi);
+	      cosz = Math.cos(phi);
+	    }
+	    switch (this.mode) {
+	    case this.EQUIT:
+	      phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh);
+	      x *= sinz;
+	      y = cosz * rh;
+	      break;
+	    case this.OBLIQ:
+	      phi = (Math.abs(rh) <= EPSLN) ? this.phi0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh);
+	      x *= sinz * this.cosph0;
+	      y = (cosz - Math.sin(phi) * this.sinph0) * rh;
+	      break;
+	    case this.N_POLE:
+	      y = -y;
+	      phi = HALF_PI - phi;
+	      break;
+	    case this.S_POLE:
+	      phi -= HALF_PI;
+	      break;
+	    }
+	    lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y);
+	  }
+	  else {
+	    ab = 0;
+	    if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
+	      x /= this.dd;
+	      y *= this.dd;
+	      rho = Math.sqrt(x * x + y * y);
+	      if (rho < EPSLN) {
+	        p.x = 0;
+	        p.y = this.phi0;
+	        return p;
+	      }
+	      sCe = 2 * Math.asin(0.5 * rho / this.rq);
+	      cCe = Math.cos(sCe);
+	      x *= (sCe = Math.sin(sCe));
+	      if (this.mode === this.OBLIQ) {
+	        ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho;
+	        q = this.qp * ab;
+	        y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe;
+	      }
+	      else {
+	        ab = y * sCe / rho;
+	        q = this.qp * ab;
+	        y = rho * cCe;
+	      }
+	    }
+	    else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {
+	      if (this.mode === this.N_POLE) {
+	        y = -y;
+	      }
+	      q = (x * x + y * y);
+	      if (!q) {
+	        p.x = 0;
+	        p.y = this.phi0;
+	        return p;
+	      }
+	      ab = 1 - q / this.qp;
+	      if (this.mode === this.S_POLE) {
+	        ab = -ab;
+	      }
+	    }
+	    lam = Math.atan2(x, y);
+	    phi = authlat(Math.asin(ab), this.apa);
+	  }
+
+	  p.x = adjust_lon(this.long0 + lam);
+	  p.y = phi;
+	  return p;
+	}
+
+	/* determine latitude from authalic latitude */
+	var P00 = 0.33333333333333333333;
+
+	var P01 = 0.17222222222222222222;
+	var P02 = 0.10257936507936507936;
+	var P10 = 0.06388888888888888888;
+	var P11 = 0.06640211640211640211;
+	var P20 = 0.01641501294219154443;
+
+	function authset(es) {
+	  var t;
+	  var APA = [];
+	  APA[0] = es * P00;
+	  t = es * es;
+	  APA[0] += t * P01;
+	  APA[1] = t * P10;
+	  t *= es;
+	  APA[0] += t * P02;
+	  APA[1] += t * P11;
+	  APA[2] = t * P20;
+	  return APA;
+	}
+
+	function authlat(beta, APA) {
+	  var t = beta + beta;
+	  return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t));
+	}
+
+	var names$14 = ["Lambert Azimuthal Equal Area", "Lambert_Azimuthal_Equal_Area", "laea"];
+	var laea = {
+	  init: init$13,
+	  forward: forward$12,
+	  inverse: inverse$12,
+	  names: names$14,
+	  S_POLE: S_POLE,
+	  N_POLE: N_POLE,
+	  EQUIT: EQUIT,
+	  OBLIQ: OBLIQ
+	};
+
+	var asinz = function(x) {
+	  if (Math.abs(x) > 1) {
+	    x = (x > 1) ? 1 : -1;
+	  }
+	  return Math.asin(x);
+	};
+
+	function init$14() {
+
+	  if (Math.abs(this.lat1 + this.lat2) < EPSLN) {
+	    return;
+	  }
+	  this.temp = this.b / this.a;
+	  this.es = 1 - Math.pow(this.temp, 2);
+	  this.e3 = Math.sqrt(this.es);
+
+	  this.sin_po = Math.sin(this.lat1);
+	  this.cos_po = Math.cos(this.lat1);
+	  this.t1 = this.sin_po;
+	  this.con = this.sin_po;
+	  this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po);
+	  this.qs1 = qsfnz(this.e3, this.sin_po, this.cos_po);
+
+	  this.sin_po = Math.sin(this.lat2);
+	  this.cos_po = Math.cos(this.lat2);
+	  this.t2 = this.sin_po;
+	  this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po);
+	  this.qs2 = qsfnz(this.e3, this.sin_po, this.cos_po);
+
+	  this.sin_po = Math.sin(this.lat0);
+	  this.cos_po = Math.cos(this.lat0);
+	  this.t3 = this.sin_po;
+	  this.qs0 = qsfnz(this.e3, this.sin_po, this.cos_po);
+
+	  if (Math.abs(this.lat1 - this.lat2) > EPSLN) {
+	    this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1);
+	  }
+	  else {
+	    this.ns0 = this.con;
+	  }
+	  this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1;
+	  this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0;
+	}
+
+	/* Albers Conical Equal Area forward equations--mapping lat,long to x,y
+	  -------------------------------------------------------------------*/
+	function forward$13(p) {
+
+	  var lon = p.x;
+	  var lat = p.y;
+
+	  this.sin_phi = Math.sin(lat);
+	  this.cos_phi = Math.cos(lat);
+
+	  var qs = qsfnz(this.e3, this.sin_phi, this.cos_phi);
+	  var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0;
+	  var theta = this.ns0 * adjust_lon(lon - this.long0);
+	  var x = rh1 * Math.sin(theta) + this.x0;
+	  var y = this.rh - rh1 * Math.cos(theta) + this.y0;
+
+	  p.x = x;
+	  p.y = y;
+	  return p;
+	}
+
+	function inverse$13(p) {
+	  var rh1, qs, con, theta, lon, lat;
+
+	  p.x -= this.x0;
+	  p.y = this.rh - p.y + this.y0;
+	  if (this.ns0 >= 0) {
+	    rh1 = Math.sqrt(p.x * p.x + p.y * p.y);
+	    con = 1;
+	  }
+	  else {
+	    rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);
+	    con = -1;
+	  }
+	  theta = 0;
+	  if (rh1 !== 0) {
+	    theta = Math.atan2(con * p.x, con * p.y);
+	  }
+	  con = rh1 * this.ns0 / this.a;
+	  if (this.sphere) {
+	    lat = Math.asin((this.c - con * con) / (2 * this.ns0));
+	  }
+	  else {
+	    qs = (this.c - con * con) / this.ns0;
+	    lat = this.phi1z(this.e3, qs);
+	  }
+
+	  lon = adjust_lon(theta / this.ns0 + this.long0);
+	  p.x = lon;
+	  p.y = lat;
+	  return p;
+	}
+
+	/* Function to compute phi1, the latitude for the inverse of the
+	   Albers Conical Equal-Area projection.
+	-------------------------------------------*/
+	function phi1z(eccent, qs) {
+	  var sinphi, cosphi, con, com, dphi;
+	  var phi = asinz(0.5 * qs);
+	  if (eccent < EPSLN) {
+	    return phi;
+	  }
+
+	  var eccnts = eccent * eccent;
+	  for (var i = 1; i <= 25; i++) {
+	    sinphi = Math.sin(phi);
+	    cosphi = Math.cos(phi);
+	    con = eccent * sinphi;
+	    com = 1 - con * con;
+	    dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con)));
+	    phi = phi + dphi;
+	    if (Math.abs(dphi) <= 1e-7) {
+	      return phi;
+	    }
+	  }
+	  return null;
+	}
+
+	var names$15 = ["Albers_Conic_Equal_Area", "Albers", "aea"];
+	var aea = {
+	  init: init$14,
+	  forward: forward$13,
+	  inverse: inverse$13,
+	  names: names$15,
+	  phi1z: phi1z
+	};
+
+	/*
+	  reference:
+	    Wolfram Mathworld "Gnomonic Projection"
+	    http://mathworld.wolfram.com/GnomonicProjection.html
+	    Accessed: 12th November 2009
+	  */
+	function init$15() {
+
+	  /* Place parameters in static storage for common use
+	      -------------------------------------------------*/
+	  this.sin_p14 = Math.sin(this.lat0);
+	  this.cos_p14 = Math.cos(this.lat0);
+	  // Approximation for projecting points to the horizon (infinity)
+	  this.infinity_dist = 1000 * this.a;
+	  this.rc = 1;
+	}
+
+	/* Gnomonic forward equations--mapping lat,long to x,y
+	    ---------------------------------------------------*/
+	function forward$14(p) {
+	  var sinphi, cosphi; /* sin and cos value        */
+	  var dlon; /* delta longitude value      */
+	  var coslon; /* cos of longitude        */
+	  var ksp; /* scale factor          */
+	  var g;
+	  var x, y;
+	  var lon = p.x;
+	  var lat = p.y;
+	  /* Forward equations
+	      -----------------*/
+	  dlon = adjust_lon(lon - this.long0);
+
+	  sinphi = Math.sin(lat);
+	  cosphi = Math.cos(lat);
+
+	  coslon = Math.cos(dlon);
+	  g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;
+	  ksp = 1;
+	  if ((g > 0) || (Math.abs(g) <= EPSLN)) {
+	    x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g;
+	    y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g;
+	  }
+	  else {
+
+	    // Point is in the opposing hemisphere and is unprojectable
+	    // We still need to return a reasonable point, so we project
+	    // to infinity, on a bearing
+	    // equivalent to the northern hemisphere equivalent
+	    // This is a reasonable approximation for short shapes and lines that
+	    // straddle the horizon.
+
+	    x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon);
+	    y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);
+
+	  }
+	  p.x = x;
+	  p.y = y;
+	  return p;
+	}
+
+	function inverse$14(p) {
+	  var rh; /* Rho */
+	  var sinc, cosc;
+	  var c;
+	  var lon, lat;
+
+	  /* Inverse equations
+	      -----------------*/
+	  p.x = (p.x - this.x0) / this.a;
+	  p.y = (p.y - this.y0) / this.a;
+
+	  p.x /= this.k0;
+	  p.y /= this.k0;
+
+	  if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) {
+	    c = Math.atan2(rh, this.rc);
+	    sinc = Math.sin(c);
+	    cosc = Math.cos(c);
+
+	    lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh);
+	    lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc);
+	    lon = adjust_lon(this.long0 + lon);
+	  }
+	  else {
+	    lat = this.phic0;
+	    lon = 0;
+	  }
+
+	  p.x = lon;
+	  p.y = lat;
+	  return p;
+	}
+
+	var names$16 = ["gnom"];
+	var gnom = {
+	  init: init$15,
+	  forward: forward$14,
+	  inverse: inverse$14,
+	  names: names$16
+	};
+
+	var iqsfnz = function(eccent, q) {
+	  var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent));
+	  if (Math.abs(Math.abs(q) - temp) < 1.0E-6) {
+	    if (q < 0) {
+	      return (-1 * HALF_PI);
+	    }
+	    else {
+	      return HALF_PI;
+	    }
+	  }
+	  //var phi = 0.5* q/(1-eccent*eccent);
+	  var phi = Math.asin(0.5 * q);
+	  var dphi;
+	  var sin_phi;
+	  var cos_phi;
+	  var con;
+	  for (var i = 0; i < 30; i++) {
+	    sin_phi = Math.sin(phi);
+	    cos_phi = Math.cos(phi);
+	    con = eccent * sin_phi;
+	    dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con)));
+	    phi += dphi;
+	    if (Math.abs(dphi) <= 0.0000000001) {
+	      return phi;
+	    }
+	  }
+
+	  //console.log("IQSFN-CONV:Latitude failed to converge after 30 iterations");
+	  return NaN;
+	};
+
+	/*
+	  reference:
+	    "Cartographic Projection Procedures for the UNIX Environment-
+	    A User's Manual" by Gerald I. Evenden,
+	    USGS Open File Report 90-284and Release 4 Interim Reports (2003)
+	*/
+	function init$16() {
+	  //no-op
+	  if (!this.sphere) {
+	    this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));
+	  }
+	}
+
+	/* Cylindrical Equal Area forward equations--mapping lat,long to x,y
+	    ------------------------------------------------------------*/
+	function forward$15(p) {
+	  var lon = p.x;
+	  var lat = p.y;
+	  var x, y;
+	  /* Forward equations
+	      -----------------*/
+	  var dlon = adjust_lon(lon - this.long0);
+	  if (this.sphere) {
+	    x = this.x0 + this.a * dlon * Math.cos(this.lat_ts);
+	    y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts);
+	  }
+	  else {
+	    var qs = qsfnz(this.e, Math.sin(lat));
+	    x = this.x0 + this.a * this.k0 * dlon;
+	    y = this.y0 + this.a * qs * 0.5 / this.k0;
+	  }
+
+	  p.x = x;
+	  p.y = y;
+	  return p;
+	}
+
+	/* Cylindrical Equal Area inverse equations--mapping x,y to lat/long
+	    ------------------------------------------------------------*/
+	function inverse$15(p) {
+	  p.x -= this.x0;
+	  p.y -= this.y0;
+	  var lon, lat;
+
+	  if (this.sphere) {
+	    lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts));
+	    lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts));
+	  }
+	  else {
+	    lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a);
+	    lon = adjust_lon(this.long0 + p.x / (this.a * this.k0));
+	  }
+
+	  p.x = lon;
+	  p.y = lat;
+	  return p;
+	}
+
+	var names$17 = ["cea"];
+	var cea = {
+	  init: init$16,
+	  forward: forward$15,
+	  inverse: inverse$15,
+	  names: names$17
+	};
+
+	function init$17() {
+
+	  this.x0 = this.x0 || 0;
+	  this.y0 = this.y0 || 0;
+	  this.lat0 = this.lat0 || 0;
+	  this.long0 = this.long0 || 0;
+	  this.lat_ts = this.lat_ts || 0;
+	  this.title = this.title || "Equidistant Cylindrical (Plate Carre)";
+
+	  this.rc = Math.cos(this.lat_ts);
+	}
+
+	// forward equations--mapping lat,long to x,y
+	// -----------------------------------------------------------------
+	function forward$16(p) {
+
+	  var lon = p.x;
+	  var lat = p.y;
+
+	  var dlon = adjust_lon(lon - this.long0);
+	  var dlat = adjust_lat(lat - this.lat0);
+	  p.x = this.x0 + (this.a * dlon * this.rc);
+	  p.y = this.y0 + (this.a * dlat);
+	  return p;
+	}
+
+	// inverse equations--mapping x,y to lat/long
+	// -----------------------------------------------------------------
+	function inverse$16(p) {
+
+	  var x = p.x;
+	  var y = p.y;
+
+	  p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc)));
+	  p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a)));
+	  return p;
+	}
+
+	var names$18 = ["Equirectangular", "Equidistant_Cylindrical", "eqc"];
+	var eqc = {
+	  init: init$17,
+	  forward: forward$16,
+	  inverse: inverse$16,
+	  names: names$18
+	};
+
+	var MAX_ITER$2 = 20;
+
+	function init$18() {
+	  /* Place parameters in static storage for common use
+	      -------------------------------------------------*/
+	  this.temp = this.b / this.a;
+	  this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles
+	  this.e = Math.sqrt(this.es);
+	  this.e0 = e0fn(this.es);
+	  this.e1 = e1fn(this.es);
+	  this.e2 = e2fn(this.es);
+	  this.e3 = e3fn(this.es);
+	  this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas
+	}
+
+	/* Polyconic forward equations--mapping lat,long to x,y
+	    ---------------------------------------------------*/
+	function forward$17(p) {
+	  var lon = p.x;
+	  var lat = p.y;
+	  var x, y, el;
+	  var dlon = adjust_lon(lon - this.long0);
+	  el = dlon * Math.sin(lat);
+	  if (this.sphere) {
+	    if (Math.abs(lat) <= EPSLN) {
+	      x = this.a * dlon;
+	      y = -1 * this.a * this.lat0;
+	    }
+	    else {
+	      x = this.a * Math.sin(el) / Math.tan(lat);
+	      y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat));
+	    }
+	  }
+	  else {
+	    if (Math.abs(lat) <= EPSLN) {
+	      x = this.a * dlon;
+	      y = -1 * this.ml0;
+	    }
+	    else {
+	      var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat);
+	      x = nl * Math.sin(el);
+	      y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el));
+	    }
+
+	  }
+	  p.x = x + this.x0;
+	  p.y = y + this.y0;
+	  return p;
+	}
+
+	/* Inverse equations
+	  -----------------*/
+	function inverse$17(p) {
+	  var lon, lat, x, y, i;
+	  var al, bl;
+	  var phi, dphi;
+	  x = p.x - this.x0;
+	  y = p.y - this.y0;
+
+	  if (this.sphere) {
+	    if (Math.abs(y + this.a * this.lat0) <= EPSLN) {
+	      lon = adjust_lon(x / this.a + this.long0);
+	      lat = 0;
+	    }
+	    else {
+	      al = this.lat0 + y / this.a;
+	      bl = x * x / this.a / this.a + al * al;
+	      phi = al;
+	      var tanphi;
+	      for (i = MAX_ITER$2; i; --i) {
+	        tanphi = Math.tan(phi);
+	        dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1);
+	        phi += dphi;
+	        if (Math.abs(dphi) <= EPSLN) {
+	          lat = phi;
+	          break;
+	        }
+	      }
+	      lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat));
+	    }
+	  }
+	  else {
+	    if (Math.abs(y + this.ml0) <= EPSLN) {
+	      lat = 0;
+	      lon = adjust_lon(this.long0 + x / this.a);
+	    }
+	    else {
+
+	      al = (this.ml0 + y) / this.a;
+	      bl = x * x / this.a / this.a + al * al;
+	      phi = al;
+	      var cl, mln, mlnp, ma;
+	      var con;
+	      for (i = MAX_ITER$2; i; --i) {
+	        con = this.e * Math.sin(phi);
+	        cl = Math.sqrt(1 - con * con) * Math.tan(phi);
+	        mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);
+	        mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi);
+	        ma = mln / this.a;
+	        dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp);
+	        phi -= dphi;
+	        if (Math.abs(dphi) <= EPSLN) {
+	          lat = phi;
+	          break;
+	        }
+	      }
+
+	      //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0);
+	      cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat);
+	      lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat));
+	    }
+	  }
+
+	  p.x = lon;
+	  p.y = lat;
+	  return p;
+	}
+
+	var names$19 = ["Polyconic", "poly"];
+	var poly = {
+	  init: init$18,
+	  forward: forward$17,
+	  inverse: inverse$17,
+	  names: names$19
+	};
+
+	/*
+	  reference
+	    Department of Land and Survey Technical Circular 1973/32
+	      http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf
+	    OSG Technical Report 4.1
+	      http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf
+	  */
+
+	/**
+	 * iterations: Number of iterations to refine inverse transform.
+	 *     0 -> km accuracy
+	 *     1 -> m accuracy -- suitable for most mapping applications
+	 *     2 -> mm accuracy
+	 */
+
+
+	function init$19() {
+	  this.A = [];
+	  this.A[1] = 0.6399175073;
+	  this.A[2] = -0.1358797613;
+	  this.A[3] = 0.063294409;
+	  this.A[4] = -0.02526853;
+	  this.A[5] = 0.0117879;
+	  this.A[6] = -0.0055161;
+	  this.A[7] = 0.0026906;
+	  this.A[8] = -0.001333;
+	  this.A[9] = 0.00067;
+	  this.A[10] = -0.00034;
+
+	  this.B_re = [];
+	  this.B_im = [];
+	  this.B_re[1] = 0.7557853228;
+	  this.B_im[1] = 0;
+	  this.B_re[2] = 0.249204646;
+	  this.B_im[2] = 0.003371507;
+	  this.B_re[3] = -0.001541739;
+	  this.B_im[3] = 0.041058560;
+	  this.B_re[4] = -0.10162907;
+	  this.B_im[4] = 0.01727609;
+	  this.B_re[5] = -0.26623489;
+	  this.B_im[5] = -0.36249218;
+	  this.B_re[6] = -0.6870983;
+	  this.B_im[6] = -1.1651967;
+
+	  this.C_re = [];
+	  this.C_im = [];
+	  this.C_re[1] = 1.3231270439;
+	  this.C_im[1] = 0;
+	  this.C_re[2] = -0.577245789;
+	  this.C_im[2] = -0.007809598;
+	  this.C_re[3] = 0.508307513;
+	  this.C_im[3] = -0.112208952;
+	  this.C_re[4] = -0.15094762;
+	  this.C_im[4] = 0.18200602;
+	  this.C_re[5] = 1.01418179;
+	  this.C_im[5] = 1.64497696;
+	  this.C_re[6] = 1.9660549;
+	  this.C_im[6] = 2.5127645;
+
+	  this.D = [];
+	  this.D[1] = 1.5627014243;
+	  this.D[2] = 0.5185406398;
+	  this.D[3] = -0.03333098;
+	  this.D[4] = -0.1052906;
+	  this.D[5] = -0.0368594;
+	  this.D[6] = 0.007317;
+	  this.D[7] = 0.01220;
+	  this.D[8] = 0.00394;
+	  this.D[9] = -0.0013;
+	}
+
+	/**
+	    New Zealand Map Grid Forward  - long/lat to x/y
+	    long/lat in radians
+	  */
+	function forward$18(p) {
+	  var n;
+	  var lon = p.x;
+	  var lat = p.y;
+
+	  var delta_lat = lat - this.lat0;
+	  var delta_lon = lon - this.long0;
+
+	  // 1. Calculate d_phi and d_psi    ...                          // and d_lambda
+	  // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians.
+	  var d_phi = delta_lat / SEC_TO_RAD * 1E-5;
+	  var d_lambda = delta_lon;
+	  var d_phi_n = 1; // d_phi^0
+
+	  var d_psi = 0;
+	  for (n = 1; n <= 10; n++) {
+	    d_phi_n = d_phi_n * d_phi;
+	    d_psi = d_psi + this.A[n] * d_phi_n;
+	  }
+
+	  // 2. Calculate theta
+	  var th_re = d_psi;
+	  var th_im = d_lambda;
+
+	  // 3. Calculate z
+	  var th_n_re = 1;
+	  var th_n_im = 0; // theta^0
+	  var th_n_re1;
+	  var th_n_im1;
+
+	  var z_re = 0;
+	  var z_im = 0;
+	  for (n = 1; n <= 6; n++) {
+	    th_n_re1 = th_n_re * th_re - th_n_im * th_im;
+	    th_n_im1 = th_n_im * th_re + th_n_re * th_im;
+	    th_n_re = th_n_re1;
+	    th_n_im = th_n_im1;
+	    z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im;
+	    z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im;
+	  }
+
+	  // 4. Calculate easting and northing
+	  p.x = (z_im * this.a) + this.x0;
+	  p.y = (z_re * this.a) + this.y0;
+
+	  return p;
+	}
+
+	/**
+	    New Zealand Map Grid Inverse  -  x/y to long/lat
+	  */
+	function inverse$18(p) {
+	  var n;
+	  var x = p.x;
+	  var y = p.y;
+
+	  var delta_x = x - this.x0;
+	  var delta_y = y - this.y0;
+
+	  // 1. Calculate z
+	  var z_re = delta_y / this.a;
+	  var z_im = delta_x / this.a;
+
+	  // 2a. Calculate theta - first approximation gives km accuracy
+	  var z_n_re = 1;
+	  var z_n_im = 0; // z^0
+	  var z_n_re1;
+	  var z_n_im1;
+
+	  var th_re = 0;
+	  var th_im = 0;
+	  for (n = 1; n <= 6; n++) {
+	    z_n_re1 = z_n_re * z_re - z_n_im * z_im;
+	    z_n_im1 = z_n_im * z_re + z_n_re * z_im;
+	    z_n_re = z_n_re1;
+	    z_n_im = z_n_im1;
+	    th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im;
+	    th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im;
+	  }
+
+	  // 2b. Iterate to refine the accuracy of the calculation
+	  //        0 iterations gives km accuracy
+	  //        1 iteration gives m accuracy -- good enough for most mapping applications
+	  //        2 iterations bives mm accuracy
+	  for (var i = 0; i < this.iterations; i++) {
+	    var th_n_re = th_re;
+	    var th_n_im = th_im;
+	    var th_n_re1;
+	    var th_n_im1;
+
+	    var num_re = z_re;
+	    var num_im = z_im;
+	    for (n = 2; n <= 6; n++) {
+	      th_n_re1 = th_n_re * th_re - th_n_im * th_im;
+	      th_n_im1 = th_n_im * th_re + th_n_re * th_im;
+	      th_n_re = th_n_re1;
+	      th_n_im = th_n_im1;
+	      num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);
+	      num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);
+	    }
+
+	    th_n_re = 1;
+	    th_n_im = 0;
+	    var den_re = this.B_re[1];
+	    var den_im = this.B_im[1];
+	    for (n = 2; n <= 6; n++) {
+	      th_n_re1 = th_n_re * th_re - th_n_im * th_im;
+	      th_n_im1 = th_n_im * th_re + th_n_re * th_im;
+	      th_n_re = th_n_re1;
+	      th_n_im = th_n_im1;
+	      den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);
+	      den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);
+	    }
+
+	    // Complex division
+	    var den2 = den_re * den_re + den_im * den_im;
+	    th_re = (num_re * den_re + num_im * den_im) / den2;
+	    th_im = (num_im * den_re - num_re * den_im) / den2;
+	  }
+
+	  // 3. Calculate d_phi              ...                                    // and d_lambda
+	  var d_psi = th_re;
+	  var d_lambda = th_im;
+	  var d_psi_n = 1; // d_psi^0
+
+	  var d_phi = 0;
+	  for (n = 1; n <= 9; n++) {
+	    d_psi_n = d_psi_n * d_psi;
+	    d_phi = d_phi + this.D[n] * d_psi_n;
+	  }
+
+	  // 4. Calculate latitude and longitude
+	  // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians.
+	  var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5);
+	  var lon = this.long0 + d_lambda;
+
+	  p.x = lon;
+	  p.y = lat;
+
+	  return p;
+	}
+
+	var names$20 = ["New_Zealand_Map_Grid", "nzmg"];
+	var nzmg = {
+	  init: init$19,
+	  forward: forward$18,
+	  inverse: inverse$18,
+	  names: names$20
+	};
+
+	/*
+	  reference
+	    "New Equal-Area Map Projections for Noncircular Regions", John P. Snyder,
+	    The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.
+	  */
+
+
+	/* Initialize the Miller Cylindrical projection
+	  -------------------------------------------*/
+	function init$20() {
+	  //no-op
+	}
+
+	/* Miller Cylindrical forward equations--mapping lat,long to x,y
+	    ------------------------------------------------------------*/
+	function forward$19(p) {
+	  var lon = p.x;
+	  var lat = p.y;
+	  /* Forward equations
+	      -----------------*/
+	  var dlon = adjust_lon(lon - this.long0);
+	  var x = this.x0 + this.a * dlon;
+	  var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25;
+
+	  p.x = x;
+	  p.y = y;
+	  return p;
+	}
+
+	/* Miller Cylindrical inverse equations--mapping x,y to lat/long
+	    ------------------------------------------------------------*/
+	function inverse$19(p) {
+	  p.x -= this.x0;
+	  p.y -= this.y0;
+
+	  var lon = adjust_lon(this.long0 + p.x / this.a);
+	  var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4);
+
+	  p.x = lon;
+	  p.y = lat;
+	  return p;
+	}
+
+	var names$21 = ["Miller_Cylindrical", "mill"];
+	var mill = {
+	  init: init$20,
+	  forward: forward$19,
+	  inverse: inverse$19,
+	  names: names$21
+	};
+
+	var MAX_ITER$3 = 20;
+	function init$21() {
+	  /* Place parameters in static storage for common use
+	    -------------------------------------------------*/
+
+
+	  if (!this.sphere) {
+	    this.en = pj_enfn(this.es);
+	  }
+	  else {
+	    this.n = 1;
+	    this.m = 0;
+	    this.es = 0;
+	    this.C_y = Math.sqrt((this.m + 1) / this.n);
+	    this.C_x = this.C_y / (this.m + 1);
+	  }
+
+	}
+
+	/* Sinusoidal forward equations--mapping lat,long to x,y
+	  -----------------------------------------------------*/
+	function forward$20(p) {
+	  var x, y;
+	  var lon = p.x;
+	  var lat = p.y;
+	  /* Forward equations
+	    -----------------*/
+	  lon = adjust_lon(lon - this.long0);
+
+	  if (this.sphere) {
+	    if (!this.m) {
+	      lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat;
+	    }
+	    else {
+	      var k = this.n * Math.sin(lat);
+	      for (var i = MAX_ITER$3; i; --i) {
+	        var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat));
+	        lat -= V;
+	        if (Math.abs(V) < EPSLN) {
+	          break;
+	        }
+	      }
+	    }
+	    x = this.a * this.C_x * lon * (this.m + Math.cos(lat));
+	    y = this.a * this.C_y * lat;
+
+	  }
+	  else {
+
+	    var s = Math.sin(lat);
+	    var c = Math.cos(lat);
+	    y = this.a * pj_mlfn(lat, s, c, this.en);
+	    x = this.a * lon * c / Math.sqrt(1 - this.es * s * s);
+	  }
+
+	  p.x = x;
+	  p.y = y;
+	  return p;
+	}
+
+	function inverse$20(p) {
+	  var lat, temp, lon, s;
+
+	  p.x -= this.x0;
+	  lon = p.x / this.a;
+	  p.y -= this.y0;
+	  lat = p.y / this.a;
+
+	  if (this.sphere) {
+	    lat /= this.C_y;
+	    lon = lon / (this.C_x * (this.m + Math.cos(lat)));
+	    if (this.m) {
+	      lat = asinz((this.m * lat + Math.sin(lat)) / this.n);
+	    }
+	    else if (this.n !== 1) {
+	      lat = asinz(Math.sin(lat) / this.n);
+	    }
+	    lon = adjust_lon(lon + this.long0);
+	    lat = adjust_lat(lat);
+	  }
+	  else {
+	    lat = pj_inv_mlfn(p.y / this.a, this.es, this.en);
+	    s = Math.abs(lat);
+	    if (s < HALF_PI) {
+	      s = Math.sin(lat);
+	      temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat));
+	      //temp = this.long0 + p.x / (this.a * Math.cos(lat));
+	      lon = adjust_lon(temp);
+	    }
+	    else if ((s - EPSLN) < HALF_PI) {
+	      lon = this.long0;
+	    }
+	  }
+	  p.x = lon;
+	  p.y = lat;
+	  return p;
+	}
+
+	var names$22 = ["Sinusoidal", "sinu"];
+	var sinu = {
+	  init: init$21,
+	  forward: forward$20,
+	  inverse: inverse$20,
+	  names: names$22
+	};
+
+	function init$22() {}
+	/* Mollweide forward equations--mapping lat,long to x,y
+	    ----------------------------------------------------*/
+	function forward$21(p) {
+
+	  /* Forward equations
+	      -----------------*/
+	  var lon = p.x;
+	  var lat = p.y;
+
+	  var delta_lon = adjust_lon(lon - this.long0);
+	  var theta = lat;
+	  var con = Math.PI * Math.sin(lat);
+
+	  /* Iterate using the Newton-Raphson method to find theta
+	      -----------------------------------------------------*/
+	  while (true) {
+	    var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta));
+	    theta += delta_theta;
+	    if (Math.abs(delta_theta) < EPSLN) {
+	      break;
+	    }
+	  }
+	  theta /= 2;
+
+	  /* If the latitude is 90 deg, force the x coordinate to be "0 + false easting"
+	       this is done here because of precision problems with "cos(theta)"
+	       --------------------------------------------------------------------------*/
+	  if (Math.PI / 2 - Math.abs(lat) < EPSLN) {
+	    delta_lon = 0;
+	  }
+	  var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0;
+	  var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0;
+
+	  p.x = x;
+	  p.y = y;
+	  return p;
+	}
+
+	function inverse$21(p) {
+	  var theta;
+	  var arg;
+
+	  /* Inverse equations
+	      -----------------*/
+	  p.x -= this.x0;
+	  p.y -= this.y0;
+	  arg = p.y / (1.4142135623731 * this.a);
+
+	  /* Because of division by zero problems, 'arg' can not be 1.  Therefore
+	       a number very close to one is used instead.
+	       -------------------------------------------------------------------*/
+	  if (Math.abs(arg) > 0.999999999999) {
+	    arg = 0.999999999999;
+	  }
+	  theta = Math.asin(arg);
+	  var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta))));
+	  if (lon < (-Math.PI)) {
+	    lon = -Math.PI;
+	  }
+	  if (lon > Math.PI) {
+	    lon = Math.PI;
+	  }
+	  arg = (2 * theta + Math.sin(2 * theta)) / Math.PI;
+	  if (Math.abs(arg) > 1) {
+	    arg = 1;
+	  }
+	  var lat = Math.asin(arg);
+
+	  p.x = lon;
+	  p.y = lat;
+	  return p;
+	}
+
+	var names$23 = ["Mollweide", "moll"];
+	var moll = {
+	  init: init$22,
+	  forward: forward$21,
+	  inverse: inverse$21,
+	  names: names$23
+	};
+
+	function init$23() {
+
+	  /* Place parameters in static storage for common use
+	      -------------------------------------------------*/
+	  // Standard Parallels cannot be equal and on opposite sides of the equator
+	  if (Math.abs(this.lat1 + this.lat2) < EPSLN) {
+	    return;
+	  }
+	  this.lat2 = this.lat2 || this.lat1;
+	  this.temp = this.b / this.a;
+	  this.es = 1 - Math.pow(this.temp, 2);
+	  this.e = Math.sqrt(this.es);
+	  this.e0 = e0fn(this.es);
+	  this.e1 = e1fn(this.es);
+	  this.e2 = e2fn(this.es);
+	  this.e3 = e3fn(this.es);
+
+	  this.sinphi = Math.sin(this.lat1);
+	  this.cosphi = Math.cos(this.lat1);
+
+	  this.ms1 = msfnz(this.e, this.sinphi, this.cosphi);
+	  this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1);
+
+	  if (Math.abs(this.lat1 - this.lat2) < EPSLN) {
+	    this.ns = this.sinphi;
+	  }
+	  else {
+	    this.sinphi = Math.sin(this.lat2);
+	    this.cosphi = Math.cos(this.lat2);
+	    this.ms2 = msfnz(this.e, this.sinphi, this.cosphi);
+	    this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2);
+	    this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1);
+	  }
+	  this.g = this.ml1 + this.ms1 / this.ns;
+	  this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);
+	  this.rh = this.a * (this.g - this.ml0);
+	}
+
+	/* Equidistant Conic forward equations--mapping lat,long to x,y
+	  -----------------------------------------------------------*/
+	function forward$22(p) {
+	  var lon = p.x;
+	  var lat = p.y;
+	  var rh1;
+
+	  /* Forward equations
+	      -----------------*/
+	  if (this.sphere) {
+	    rh1 = this.a * (this.g - lat);
+	  }
+	  else {
+	    var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat);
+	    rh1 = this.a * (this.g - ml);
+	  }
+	  var theta = this.ns * adjust_lon(lon - this.long0);
+	  var x = this.x0 + rh1 * Math.sin(theta);
+	  var y = this.y0 + this.rh - rh1 * Math.cos(theta);
+	  p.x = x;
+	  p.y = y;
+	  return p;
+	}
+
+	/* Inverse equations
+	  -----------------*/
+	function inverse$22(p) {
+	  p.x -= this.x0;
+	  p.y = this.rh - p.y + this.y0;
+	  var con, rh1, lat, lon;
+	  if (this.ns >= 0) {
+	    rh1 = Math.sqrt(p.x * p.x + p.y * p.y);
+	    con = 1;
+	  }
+	  else {
+	    rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);
+	    con = -1;
+	  }
+	  var theta = 0;
+	  if (rh1 !== 0) {
+	    theta = Math.atan2(con * p.x, con * p.y);
+	  }
+
+	  if (this.sphere) {
+	    lon = adjust_lon(this.long0 + theta / this.ns);
+	    lat = adjust_lat(this.g - rh1 / this.a);
+	    p.x = lon;
+	    p.y = lat;
+	    return p;
+	  }
+	  else {
+	    var ml = this.g - rh1 / this.a;
+	    lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3);
+	    lon = adjust_lon(this.long0 + theta / this.ns);
+	    p.x = lon;
+	    p.y = lat;
+	    return p;
+	  }
+
+	}
+
+	var names$24 = ["Equidistant_Conic", "eqdc"];
+	var eqdc = {
+	  init: init$23,
+	  forward: forward$22,
+	  inverse: inverse$22,
+	  names: names$24
+	};
+
+	/* Initialize the Van Der Grinten projection
+	  ----------------------------------------*/
+	function init$24() {
+	  //this.R = 6370997; //Radius of earth
+	  this.R = this.a;
+	}
+
+	function forward$23(p) {
+
+	  var lon = p.x;
+	  var lat = p.y;
+
+	  /* Forward equations
+	    -----------------*/
+	  var dlon = adjust_lon(lon - this.long0);
+	  var x, y;
+
+	  if (Math.abs(lat) <= EPSLN) {
+	    x = this.x0 + this.R * dlon;
+	    y = this.y0;
+	  }
+	  var theta = asinz(2 * Math.abs(lat / Math.PI));
+	  if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) {
+	    x = this.x0;
+	    if (lat >= 0) {
+	      y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta);
+	    }
+	    else {
+	      y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta);
+	    }
+	    //  return(OK);
+	  }
+	  var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI));
+	  var asq = al * al;
+	  var sinth = Math.sin(theta);
+	  var costh = Math.cos(theta);
+
+	  var g = costh / (sinth + costh - 1);
+	  var gsq = g * g;
+	  var m = g * (2 / sinth - 1);
+	  var msq = m * m;
+	  var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq);
+	  if (dlon < 0) {
+	    con = -con;
+	  }
+	  x = this.x0 + con;
+	  //con = Math.abs(con / (Math.PI * this.R));
+	  var q = asq + g;
+	  con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq);
+	  if (lat >= 0) {
+	    //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);
+	    y = this.y0 + con;
+	  }
+	  else {
+	    //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);
+	    y = this.y0 - con;
+	  }
+	  p.x = x;
+	  p.y = y;
+	  return p;
+	}
+
+	/* Van Der Grinten inverse equations--mapping x,y to lat/long
+	  ---------------------------------------------------------*/
+	function inverse$23(p) {
+	  var lon, lat;
+	  var xx, yy, xys, c1, c2, c3;
+	  var a1;
+	  var m1;
+	  var con;
+	  var th1;
+	  var d;
+
+	  /* inverse equations
+	    -----------------*/
+	  p.x -= this.x0;
+	  p.y -= this.y0;
+	  con = Math.PI * this.R;
+	  xx = p.x / con;
+	  yy = p.y / con;
+	  xys = xx * xx + yy * yy;
+	  c1 = -Math.abs(yy) * (1 + xys);
+	  c2 = c1 - 2 * yy * yy + xx * xx;
+	  c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys;
+	  d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27;
+	  a1 = (c1 - c2 * c2 / 3 / c3) / c3;
+	  m1 = 2 * Math.sqrt(-a1 / 3);
+	  con = ((3 * d) / a1) / m1;
+	  if (Math.abs(con) > 1) {
+	    if (con >= 0) {
+	      con = 1;
+	    }
+	    else {
+	      con = -1;
+	    }
+	  }
+	  th1 = Math.acos(con) / 3;
+	  if (p.y >= 0) {
+	    lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;
+	  }
+	  else {
+	    lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;
+	  }
+
+	  if (Math.abs(xx) < EPSLN) {
+	    lon = this.long0;
+	  }
+	  else {
+	    lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx);
+	  }
+
+	  p.x = lon;
+	  p.y = lat;
+	  return p;
+	}
+
+	var names$25 = ["Van_der_Grinten_I", "VanDerGrinten", "vandg"];
+	var vandg = {
+	  init: init$24,
+	  forward: forward$23,
+	  inverse: inverse$23,
+	  names: names$25
+	};
+
+	function init$25() {
+	  this.sin_p12 = Math.sin(this.lat0);
+	  this.cos_p12 = Math.cos(this.lat0);
+	}
+
+	function forward$24(p) {
+	  var lon = p.x;
+	  var lat = p.y;
+	  var sinphi = Math.sin(p.y);
+	  var cosphi = Math.cos(p.y);
+	  var dlon = adjust_lon(lon - this.long0);
+	  var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5;
+	  if (this.sphere) {
+	    if (Math.abs(this.sin_p12 - 1) <= EPSLN) {
+	      //North Pole case
+	      p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon);
+	      p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon);
+	      return p;
+	    }
+	    else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {
+	      //South Pole case
+	      p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon);
+	      p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon);
+	      return p;
+	    }
+	    else {
+	      //default case
+	      cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon);
+	      c = Math.acos(cos_c);
+	      kp = c / Math.sin(c);
+	      p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon);
+	      p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon));
+	      return p;
+	    }
+	  }
+	  else {
+	    e0 = e0fn(this.es);
+	    e1 = e1fn(this.es);
+	    e2 = e2fn(this.es);
+	    e3 = e3fn(this.es);
+	    if (Math.abs(this.sin_p12 - 1) <= EPSLN) {
+	      //North Pole case
+	      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
+	      Ml = this.a * mlfn(e0, e1, e2, e3, lat);
+	      p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon);
+	      p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon);
+	      return p;
+	    }
+	    else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {
+	      //South Pole case
+	      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
+	      Ml = this.a * mlfn(e0, e1, e2, e3, lat);
+	      p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon);
+	      p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon);
+	      return p;
+	    }
+	    else {
+	      //Default case
+	      tanphi = sinphi / cosphi;
+	      Nl1 = gN(this.a, this.e, this.sin_p12);
+	      Nl = gN(this.a, this.e, sinphi);
+	      psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi));
+	      Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon));
+	      if (Az === 0) {
+	        s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));
+	      }
+	      else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) {
+	        s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));
+	      }
+	      else {
+	        s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az));
+	      }
+	      G = this.e * this.sin_p12 / Math.sqrt(1 - this.es);
+	      H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es);
+	      GH = G * H;
+	      Hs = H * H;
+	      s2 = s * s;
+	      s3 = s2 * s;
+	      s4 = s3 * s;
+	      s5 = s4 * s;
+	      c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH);
+	      p.x = this.x0 + c * Math.sin(Az);
+	      p.y = this.y0 + c * Math.cos(Az);
+	      return p;
+	    }
+	  }
+
+
+	}
+
+	function inverse$24(p) {
+	  p.x -= this.x0;
+	  p.y -= this.y0;
+	  var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F;
+	  if (this.sphere) {
+	    rh = Math.sqrt(p.x * p.x + p.y * p.y);
+	    if (rh > (2 * HALF_PI * this.a)) {
+	      return;
+	    }
+	    z = rh / this.a;
+
+	    sinz = Math.sin(z);
+	    cosz = Math.cos(z);
+
+	    lon = this.long0;
+	    if (Math.abs(rh) <= EPSLN) {
+	      lat = this.lat0;
+	    }
+	    else {
+	      lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh);
+	      con = Math.abs(this.lat0) - HALF_PI;
+	      if (Math.abs(con) <= EPSLN) {
+	        if (this.lat0 >= 0) {
+	          lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));
+	        }
+	        else {
+	          lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));
+	        }
+	      }
+	      else {
+	        /*con = cosz - this.sin_p12 * Math.sin(lat);
+	        if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) {
+	          //no-op, just keep the lon value as is
+	        } else {
+	          var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh));
+	          lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh)));
+	        }*/
+	        lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz));
+	      }
+	    }
+
+	    p.x = lon;
+	    p.y = lat;
+	    return p;
+	  }
+	  else {
+	    e0 = e0fn(this.es);
+	    e1 = e1fn(this.es);
+	    e2 = e2fn(this.es);
+	    e3 = e3fn(this.es);
+	    if (Math.abs(this.sin_p12 - 1) <= EPSLN) {
+	      //North pole case
+	      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
+	      rh = Math.sqrt(p.x * p.x + p.y * p.y);
+	      M = Mlp - rh;
+	      lat = imlfn(M / this.a, e0, e1, e2, e3);
+	      lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));
+	      p.x = lon;
+	      p.y = lat;
+	      return p;
+	    }
+	    else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {
+	      //South pole case
+	      Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
+	      rh = Math.sqrt(p.x * p.x + p.y * p.y);
+	      M = rh - Mlp;
+
+	      lat = imlfn(M / this.a, e0, e1, e2, e3);
+	      lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));
+	      p.x = lon;
+	      p.y = lat;
+	      return p;
+	    }
+	    else {
+	      //default case
+	      rh = Math.sqrt(p.x * p.x + p.y * p.y);
+	      Az = Math.atan2(p.x, p.y);
+	      N1 = gN(this.a, this.e, this.sin_p12);
+	      cosAz = Math.cos(Az);
+	      tmp = this.e * this.cos_p12 * cosAz;
+	      A = -tmp * tmp / (1 - this.es);
+	      B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es);
+	      D = rh / N1;
+	      Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24;
+	      F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6;
+	      psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz);
+	      lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi)));
+	      lat = Math.atan((1 - this.es * F * this.sin_p12 / Math.sin(psi)) * Math.tan(psi) / (1 - this.es));
+	      p.x = lon;
+	      p.y = lat;
+	      return p;
+	    }
+	  }
+
+	}
+
+	var names$26 = ["Azimuthal_Equidistant", "aeqd"];
+	var aeqd = {
+	  init: init$25,
+	  forward: forward$24,
+	  inverse: inverse$24,
+	  names: names$26
+	};
+
+	function init$26() {
+	  //double temp;      /* temporary variable    */
+
+	  /* Place parameters in static storage for common use
+	      -------------------------------------------------*/
+	  this.sin_p14 = Math.sin(this.lat0);
+	  this.cos_p14 = Math.cos(this.lat0);
+	}
+
+	/* Orthographic forward equations--mapping lat,long to x,y
+	    ---------------------------------------------------*/
+	function forward$25(p) {
+	  var sinphi, cosphi; /* sin and cos value        */
+	  var dlon; /* delta longitude value      */
+	  var coslon; /* cos of longitude        */
+	  var ksp; /* scale factor          */
+	  var g, x, y;
+	  var lon = p.x;
+	  var lat = p.y;
+	  /* Forward equations
+	      -----------------*/
+	  dlon = adjust_lon(lon - this.long0);
+
+	  sinphi = Math.sin(lat);
+	  cosphi = Math.cos(lat);
+
+	  coslon = Math.cos(dlon);
+	  g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;
+	  ksp = 1;
+	  if ((g > 0) || (Math.abs(g) <= EPSLN)) {
+	    x = this.a * ksp * cosphi * Math.sin(dlon);
+	    y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);
+	  }
+	  p.x = x;
+	  p.y = y;
+	  return p;
+	}
+
+	function inverse$25(p) {
+	  var rh; /* height above ellipsoid      */
+	  var z; /* angle          */
+	  var sinz, cosz; /* sin of z and cos of z      */
+	  var con;
+	  var lon, lat;
+	  /* Inverse equations
+	      -----------------*/
+	  p.x -= this.x0;
+	  p.y -= this.y0;
+	  rh = Math.sqrt(p.x * p.x + p.y * p.y);
+	  z = asinz(rh / this.a);
+
+	  sinz = Math.sin(z);
+	  cosz = Math.cos(z);
+
+	  lon = this.long0;
+	  if (Math.abs(rh) <= EPSLN) {
+	    lat = this.lat0;
+	    p.x = lon;
+	    p.y = lat;
+	    return p;
+	  }
+	  lat = asinz(cosz * this.sin_p14 + (p.y * sinz * this.cos_p14) / rh);
+	  con = Math.abs(this.lat0) - HALF_PI;
+	  if (Math.abs(con) <= EPSLN) {
+	    if (this.lat0 >= 0) {
+	      lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));
+	    }
+	    else {
+	      lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));
+	    }
+	    p.x = lon;
+	    p.y = lat;
+	    return p;
+	  }
+	  lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz), rh * this.cos_p14 * cosz - p.y * this.sin_p14 * sinz));
+	  p.x = lon;
+	  p.y = lat;
+	  return p;
+	}
+
+	var names$27 = ["ortho"];
+	var ortho = {
+	  init: init$26,
+	  forward: forward$25,
+	  inverse: inverse$25,
+	  names: names$27
+	};
+
+	// QSC projection rewritten from the original PROJ4
+	// https://github.com/OSGeo/proj.4/blob/master/src/PJ_qsc.c
+
+	/* constants */
+	var FACE_ENUM = {
+	    FRONT: 1,
+	    RIGHT: 2,
+	    BACK: 3,
+	    LEFT: 4,
+	    TOP: 5,
+	    BOTTOM: 6
+	};
+
+	var AREA_ENUM = {
+	    AREA_0: 1,
+	    AREA_1: 2,
+	    AREA_2: 3,
+	    AREA_3: 4
+	};
+
+	function init$27() {
+
+	  this.x0 = this.x0 || 0;
+	  this.y0 = this.y0 || 0;
+	  this.lat0 = this.lat0 || 0;
+	  this.long0 = this.long0 || 0;
+	  this.lat_ts = this.lat_ts || 0;
+	  this.title = this.title || "Quadrilateralized Spherical Cube";
+
+	  /* Determine the cube face from the center of projection. */
+	  if (this.lat0 >= HALF_PI - FORTPI / 2.0) {
+	    this.face = FACE_ENUM.TOP;
+	  } else if (this.lat0 <= -(HALF_PI - FORTPI / 2.0)) {
+	    this.face = FACE_ENUM.BOTTOM;
+	  } else if (Math.abs(this.long0) <= FORTPI) {
+	    this.face = FACE_ENUM.FRONT;
+	  } else if (Math.abs(this.long0) <= HALF_PI + FORTPI) {
+	    this.face = this.long0 > 0.0 ? FACE_ENUM.RIGHT : FACE_ENUM.LEFT;
+	  } else {
+	    this.face = FACE_ENUM.BACK;
+	  }
+
+	  /* Fill in useful values for the ellipsoid <-> sphere shift
+	   * described in [LK12]. */
+	  if (this.es !== 0) {
+	    this.one_minus_f = 1 - (this.a - this.b) / this.a;
+	    this.one_minus_f_squared = this.one_minus_f * this.one_minus_f;
+	  }
+	}
+
+	// QSC forward equations--mapping lat,long to x,y
+	// -----------------------------------------------------------------
+	function forward$26(p) {
+	  var xy = {x: 0, y: 0};
+	  var lat, lon;
+	  var theta, phi;
+	  var t, mu;
+	  /* nu; */
+	  var area = {value: 0};
+
+	  // move lon according to projection's lon
+	  p.x -= this.long0;
+
+	  /* Convert the geodetic latitude to a geocentric latitude.
+	   * This corresponds to the shift from the ellipsoid to the sphere
+	   * described in [LK12]. */
+	  if (this.es !== 0) {//if (P->es != 0) {
+	    lat = Math.atan(this.one_minus_f_squared * Math.tan(p.y));
+	  } else {
+	    lat = p.y;
+	  }
+
+	  /* Convert the input lat, lon into theta, phi as used by QSC.
+	   * This depends on the cube face and the area on it.
+	   * For the top and bottom face, we can compute theta and phi
+	   * directly from phi, lam. For the other faces, we must use
+	   * unit sphere cartesian coordinates as an intermediate step. */
+	  lon = p.x; //lon = lp.lam;
+	  if (this.face === FACE_ENUM.TOP) {
+	    phi = HALF_PI - lat;
+	    if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {
+	      area.value = AREA_ENUM.AREA_0;
+	      theta = lon - HALF_PI;
+	    } else if (lon > HALF_PI + FORTPI || lon <= -(HALF_PI + FORTPI)) {
+	      area.value = AREA_ENUM.AREA_1;
+	      theta = (lon > 0.0 ? lon - SPI : lon + SPI);
+	    } else if (lon > -(HALF_PI + FORTPI) && lon <= -FORTPI) {
+	      area.value = AREA_ENUM.AREA_2;
+	      theta = lon + HALF_PI;
+	    } else {
+	      area.value = AREA_ENUM.AREA_3;
+	      theta = lon;
+	    }
+	  } else if (this.face === FACE_ENUM.BOTTOM) {
+	    phi = HALF_PI + lat;
+	    if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {
+	      area.value = AREA_ENUM.AREA_0;
+	      theta = -lon + HALF_PI;
+	    } else if (lon < FORTPI && lon >= -FORTPI) {
+	      area.value = AREA_ENUM.AREA_1;
+	      theta = -lon;
+	    } else if (lon < -FORTPI && lon >= -(HALF_PI + FORTPI)) {
+	      area.value = AREA_ENUM.AREA_2;
+	      theta = -lon - HALF_PI;
+	    } else {
+	      area.value = AREA_ENUM.AREA_3;
+	      theta = (lon > 0.0 ? -lon + SPI : -lon - SPI);
+	    }
+	  } else {
+	    var q, r, s;
+	    var sinlat, coslat;
+	    var sinlon, coslon;
+
+	    if (this.face === FACE_ENUM.RIGHT) {
+	      lon = qsc_shift_lon_origin(lon, +HALF_PI);
+	    } else if (this.face === FACE_ENUM.BACK) {
+	      lon = qsc_shift_lon_origin(lon, +SPI);
+	    } else if (this.face === FACE_ENUM.LEFT) {
+	      lon = qsc_shift_lon_origin(lon, -HALF_PI);
+	    }
+	    sinlat = Math.sin(lat);
+	    coslat = Math.cos(lat);
+	    sinlon = Math.sin(lon);
+	    coslon = Math.cos(lon);
+	    q = coslat * coslon;
+	    r = coslat * sinlon;
+	    s = sinlat;
+
+	    if (this.face === FACE_ENUM.FRONT) {
+	      phi = Math.acos(q);
+	      theta = qsc_fwd_equat_face_theta(phi, s, r, area);
+	    } else if (this.face === FACE_ENUM.RIGHT) {
+	      phi = Math.acos(r);
+	      theta = qsc_fwd_equat_face_theta(phi, s, -q, area);
+	    } else if (this.face === FACE_ENUM.BACK) {
+	      phi = Math.acos(-q);
+	      theta = qsc_fwd_equat_face_theta(phi, s, -r, area);
+	    } else if (this.face === FACE_ENUM.LEFT) {
+	      phi = Math.acos(-r);
+	      theta = qsc_fwd_equat_face_theta(phi, s, q, area);
+	    } else {
+	      /* Impossible */
+	      phi = theta = 0;
+	      area.value = AREA_ENUM.AREA_0;
+	    }
+	  }
+
+	  /* Compute mu and nu for the area of definition.
+	   * For mu, see Eq. (3-21) in [OL76], but note the typos:
+	   * compare with Eq. (3-14). For nu, see Eq. (3-38). */
+	  mu = Math.atan((12 / SPI) * (theta + Math.acos(Math.sin(theta) * Math.cos(FORTPI)) - HALF_PI));
+	  t = Math.sqrt((1 - Math.cos(phi)) / (Math.cos(mu) * Math.cos(mu)) / (1 - Math.cos(Math.atan(1 / Math.cos(theta)))));
+
+	  /* Apply the result to the real area. */
+	  if (area.value === AREA_ENUM.AREA_1) {
+	    mu += HALF_PI;
+	  } else if (area.value === AREA_ENUM.AREA_2) {
+	    mu += SPI;
+	  } else if (area.value === AREA_ENUM.AREA_3) {
+	    mu += 1.5 * SPI;
+	  }
+
+	  /* Now compute x, y from mu and nu */
+	  xy.x = t * Math.cos(mu);
+	  xy.y = t * Math.sin(mu);
+	  xy.x = xy.x * this.a + this.x0;
+	  xy.y = xy.y * this.a + this.y0;
+
+	  p.x = xy.x;
+	  p.y = xy.y;
+	  return p;
+	}
+
+	// QSC inverse equations--mapping x,y to lat/long
+	// -----------------------------------------------------------------
+	function inverse$26(p) {
+	  var lp = {lam: 0, phi: 0};
+	  var mu, nu, cosmu, tannu;
+	  var tantheta, theta, cosphi, phi;
+	  var t;
+	  var area = {value: 0};
+
+	  /* de-offset */
+	  p.x = (p.x - this.x0) / this.a;
+	  p.y = (p.y - this.y0) / this.a;
+
+	  /* Convert the input x, y to the mu and nu angles as used by QSC.
+	   * This depends on the area of the cube face. */
+	  nu = Math.atan(Math.sqrt(p.x * p.x + p.y * p.y));
+	  mu = Math.atan2(p.y, p.x);
+	  if (p.x >= 0.0 && p.x >= Math.abs(p.y)) {
+	    area.value = AREA_ENUM.AREA_0;
+	  } else if (p.y >= 0.0 && p.y >= Math.abs(p.x)) {
+	    area.value = AREA_ENUM.AREA_1;
+	    mu -= HALF_PI;
+	  } else if (p.x < 0.0 && -p.x >= Math.abs(p.y)) {
+	    area.value = AREA_ENUM.AREA_2;
+	    mu = (mu < 0.0 ? mu + SPI : mu - SPI);
+	  } else {
+	    area.value = AREA_ENUM.AREA_3;
+	    mu += HALF_PI;
+	  }
+
+	  /* Compute phi and theta for the area of definition.
+	   * The inverse projection is not described in the original paper, but some
+	   * good hints can be found here (as of 2011-12-14):
+	   * http://fits.gsfc.nasa.gov/fitsbits/saf.93/saf.9302
+	   * (search for "Message-Id: <9302181759.AA25477 at fits.cv.nrao.edu>") */
+	  t = (SPI / 12) * Math.tan(mu);
+	  tantheta = Math.sin(t) / (Math.cos(t) - (1 / Math.sqrt(2)));
+	  theta = Math.atan(tantheta);
+	  cosmu = Math.cos(mu);
+	  tannu = Math.tan(nu);
+	  cosphi = 1 - cosmu * cosmu * tannu * tannu * (1 - Math.cos(Math.atan(1 / Math.cos(theta))));
+	  if (cosphi < -1) {
+	    cosphi = -1;
+	  } else if (cosphi > +1) {
+	    cosphi = +1;
+	  }
+
+	  /* Apply the result to the real area on the cube face.
+	   * For the top and bottom face, we can compute phi and lam directly.
+	   * For the other faces, we must use unit sphere cartesian coordinates
+	   * as an intermediate step. */
+	  if (this.face === FACE_ENUM.TOP) {
+	    phi = Math.acos(cosphi);
+	    lp.phi = HALF_PI - phi;
+	    if (area.value === AREA_ENUM.AREA_0) {
+	      lp.lam = theta + HALF_PI;
+	    } else if (area.value === AREA_ENUM.AREA_1) {
+	      lp.lam = (theta < 0.0 ? theta + SPI : theta - SPI);
+	    } else if (area.value === AREA_ENUM.AREA_2) {
+	      lp.lam = theta - HALF_PI;
+	    } else /* area.value == AREA_ENUM.AREA_3 */ {
+	      lp.lam = theta;
+	    }
+	  } else if (this.face === FACE_ENUM.BOTTOM) {
+	    phi = Math.acos(cosphi);
+	    lp.phi = phi - HALF_PI;
+	    if (area.value === AREA_ENUM.AREA_0) {
+	      lp.lam = -theta + HALF_PI;
+	    } else if (area.value === AREA_ENUM.AREA_1) {
+	      lp.lam = -theta;
+	    } else if (area.value === AREA_ENUM.AREA_2) {
+	      lp.lam = -theta - HALF_PI;
+	    } else /* area.value == AREA_ENUM.AREA_3 */ {
+	      lp.lam = (theta < 0.0 ? -theta - SPI : -theta + SPI);
+	    }
+	  } else {
+	    /* Compute phi and lam via cartesian unit sphere coordinates. */
+	    var q, r, s;
+	    q = cosphi;
+	    t = q * q;
+	    if (t >= 1) {
+	      s = 0;
+	    } else {
+	      s = Math.sqrt(1 - t) * Math.sin(theta);
+	    }
+	    t += s * s;
+	    if (t >= 1) {
+	      r = 0;
+	    } else {
+	      r = Math.sqrt(1 - t);
+	    }
+	    /* Rotate q,r,s into the correct area. */
+	    if (area.value === AREA_ENUM.AREA_1) {
+	      t = r;
+	      r = -s;
+	      s = t;
+	    } else if (area.value === AREA_ENUM.AREA_2) {
+	      r = -r;
+	      s = -s;
+	    } else if (area.value === AREA_ENUM.AREA_3) {
+	      t = r;
+	      r = s;
+	      s = -t;
+	    }
+	    /* Rotate q,r,s into the correct cube face. */
+	    if (this.face === FACE_ENUM.RIGHT) {
+	      t = q;
+	      q = -r;
+	      r = t;
+	    } else if (this.face === FACE_ENUM.BACK) {
+	      q = -q;
+	      r = -r;
+	    } else if (this.face === FACE_ENUM.LEFT) {
+	      t = q;
+	      q = r;
+	      r = -t;
+	    }
+	    /* Now compute phi and lam from the unit sphere coordinates. */
+	    lp.phi = Math.acos(-s) - HALF_PI;
+	    lp.lam = Math.atan2(r, q);
+	    if (this.face === FACE_ENUM.RIGHT) {
+	      lp.lam = qsc_shift_lon_origin(lp.lam, -HALF_PI);
+	    } else if (this.face === FACE_ENUM.BACK) {
+	      lp.lam = qsc_shift_lon_origin(lp.lam, -SPI);
+	    } else if (this.face === FACE_ENUM.LEFT) {
+	      lp.lam = qsc_shift_lon_origin(lp.lam, +HALF_PI);
+	    }
+	  }
+
+	  /* Apply the shift from the sphere to the ellipsoid as described
+	   * in [LK12]. */
+	  if (this.es !== 0) {
+	    var invert_sign;
+	    var tanphi, xa;
+	    invert_sign = (lp.phi < 0 ? 1 : 0);
+	    tanphi = Math.tan(lp.phi);
+	    xa = this.b / Math.sqrt(tanphi * tanphi + this.one_minus_f_squared);
+	    lp.phi = Math.atan(Math.sqrt(this.a * this.a - xa * xa) / (this.one_minus_f * xa));
+	    if (invert_sign) {
+	      lp.phi = -lp.phi;
+	    }
+	  }
+
+	  lp.lam += this.long0;
+	  p.x = lp.lam;
+	  p.y = lp.phi;
+	  return p;
+	}
+
+	/* Helper function for forward projection: compute the theta angle
+	 * and determine the area number. */
+	function qsc_fwd_equat_face_theta(phi, y, x, area) {
+	  var theta;
+	  if (phi < EPSLN) {
+	    area.value = AREA_ENUM.AREA_0;
+	    theta = 0.0;
+	  } else {
+	    theta = Math.atan2(y, x);
+	    if (Math.abs(theta) <= FORTPI) {
+	      area.value = AREA_ENUM.AREA_0;
+	    } else if (theta > FORTPI && theta <= HALF_PI + FORTPI) {
+	      area.value = AREA_ENUM.AREA_1;
+	      theta -= HALF_PI;
+	    } else if (theta > HALF_PI + FORTPI || theta <= -(HALF_PI + FORTPI)) {
+	      area.value = AREA_ENUM.AREA_2;
+	      theta = (theta >= 0.0 ? theta - SPI : theta + SPI);
+	    } else {
+	      area.value = AREA_ENUM.AREA_3;
+	      theta += HALF_PI;
+	    }
+	  }
+	  return theta;
+	}
+
+	/* Helper function: shift the longitude. */
+	function qsc_shift_lon_origin(lon, offset) {
+	  var slon = lon + offset;
+	  if (slon < -SPI) {
+	    slon += TWO_PI;
+	  } else if (slon > +SPI) {
+	    slon -= TWO_PI;
+	  }
+	  return slon;
+	}
+
+	var names$28 = ["Quadrilateralized Spherical Cube", "Quadrilateralized_Spherical_Cube", "qsc"];
+	var qsc = {
+	  init: init$27,
+	  forward: forward$26,
+	  inverse: inverse$26,
+	  names: names$28
+	};
+
+	var includedProjections = function(proj4){
+	  proj4.Proj.projections.add(tmerc);
+	  proj4.Proj.projections.add(etmerc);
+	  proj4.Proj.projections.add(utm);
+	  proj4.Proj.projections.add(sterea);
+	  proj4.Proj.projections.add(stere);
+	  proj4.Proj.projections.add(somerc);
+	  proj4.Proj.projections.add(omerc);
+	  proj4.Proj.projections.add(lcc);
+	  proj4.Proj.projections.add(krovak);
+	  proj4.Proj.projections.add(cass);
+	  proj4.Proj.projections.add(laea);
+	  proj4.Proj.projections.add(aea);
+	  proj4.Proj.projections.add(gnom);
+	  proj4.Proj.projections.add(cea);
+	  proj4.Proj.projections.add(eqc);
+	  proj4.Proj.projections.add(poly);
+	  proj4.Proj.projections.add(nzmg);
+	  proj4.Proj.projections.add(mill);
+	  proj4.Proj.projections.add(sinu);
+	  proj4.Proj.projections.add(moll);
+	  proj4.Proj.projections.add(eqdc);
+	  proj4.Proj.projections.add(vandg);
+	  proj4.Proj.projections.add(aeqd);
+	  proj4.Proj.projections.add(ortho);
+	  proj4.Proj.projections.add(qsc);
+	};
+
+	proj4$1.defaultDatum = 'WGS84'; //default datum
+	proj4$1.Proj = Projection$1;
+	proj4$1.WGS84 = new proj4$1.Proj('WGS84');
+	proj4$1.Point = Point;
+	proj4$1.toPoint = toPoint;
+	proj4$1.defs = defs;
+	proj4$1.transform = transform;
+	proj4$1.mgrs = mgrs;
+	proj4$1.version = version;
+	includedProjections(proj4$1);
+
+	return proj4$1;
+
+})));
+
+},{}],55:[function(require,module,exports){
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// 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.
+
+var Buffer = require('buffer').Buffer;
+
+var isBufferEncoding = Buffer.isEncoding
+  || function(encoding) {
+       switch (encoding && encoding.toLowerCase()) {
+         case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;
+         default: return false;
+       }
+     }
+
+
+function assertEncoding(encoding) {
+  if (encoding && !isBufferEncoding(encoding)) {
+    throw new Error('Unknown encoding: ' + encoding);
+  }
+}
+
+// StringDecoder provides an interface for efficiently splitting a series of
+// buffers into a series of JS strings without breaking apart multi-byte
+// characters. CESU-8 is handled as part of the UTF-8 encoding.
+//
+// @TODO Handling all encodings inside a single object makes it very difficult
+// to reason about this code, so it should be split up in the future.
+// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
+// points as used by CESU-8.
+var StringDecoder = exports.StringDecoder = function(encoding) {
+  this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
+  assertEncoding(encoding);
+  switch (this.encoding) {
+    case 'utf8':
+      // CESU-8 represents each of Surrogate Pair by 3-bytes
+      this.surrogateSize = 3;
+      break;
+    case 'ucs2':
+    case 'utf16le':
+      // UTF-16 represents each of Surrogate Pair by 2-bytes
+      this.surrogateSize = 2;
+      this.detectIncompleteChar = utf16DetectIncompleteChar;
+      break;
+    case 'base64':
+      // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
+      this.surrogateSize = 3;
+      this.detectIncompleteChar = base64DetectIncompleteChar;
+      break;
+    default:
+      this.write = passThroughWrite;
+      return;
+  }
+
+  // Enough space to store all bytes of a single character. UTF-8 needs 4
+  // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
+  this.charBuffer = new Buffer(6);
+  // Number of bytes received for the current incomplete multi-byte character.
+  this.charReceived = 0;
+  // Number of bytes expected for the current incomplete multi-byte character.
+  this.charLength = 0;
+};
+
+
+// write decodes the given buffer and returns it as JS string that is
+// guaranteed to not contain any partial multi-byte characters. Any partial
+// character found at the end of the buffer is buffered up, and will be
+// returned when calling write again with the remaining bytes.
+//
+// Note: Converting a Buffer containing an orphan surrogate to a String
+// currently works, but converting a String to a Buffer (via `new Buffer`, or
+// Buffer#write) will replace incomplete surrogates with the unicode
+// replacement character. See https://codereview.chromium.org/121173009/ .
+StringDecoder.prototype.write = function(buffer) {
+  var charStr = '';
+  // if our last write ended with an incomplete multibyte character
+  while (this.charLength) {
+    // determine how many remaining bytes this buffer has to offer for this char
+    var available = (buffer.length >= this.charLength - this.charReceived) ?
+        this.charLength - this.charReceived :
+        buffer.length;
+
+    // add the new bytes to the char buffer
+    buffer.copy(this.charBuffer, this.charReceived, 0, available);
+    this.charReceived += available;
+
+    if (this.charReceived < this.charLength) {
+      // still not enough chars in this buffer? wait for more ...
+      return '';
+    }
+
+    // remove bytes belonging to the current character from the buffer
+    buffer = buffer.slice(available, buffer.length);
+
+    // get the character that was split
+    charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
+
+    // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
+    var charCode = charStr.charCodeAt(charStr.length - 1);
+    if (charCode >= 0xD800 && charCode <= 0xDBFF) {
+      this.charLength += this.surrogateSize;
+      charStr = '';
+      continue;
+    }
+    this.charReceived = this.charLength = 0;
+
+    // if there are no more bytes in this buffer, just emit our char
+    if (buffer.length === 0) {
+      return charStr;
+    }
+    break;
+  }
+
+  // determine and set charLength / charReceived
+  this.detectIncompleteChar(buffer);
+
+  var end = buffer.length;
+  if (this.charLength) {
+    // buffer the incomplete character bytes we got
+    buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
+    end -= this.charReceived;
+  }
+
+  charStr += buffer.toString(this.encoding, 0, end);
+
+  var end = charStr.length - 1;
+  var charCode = charStr.charCodeAt(end);
+  // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
+  if (charCode >= 0xD800 && charCode <= 0xDBFF) {
+    var size = this.surrogateSize;
+    this.charLength += size;
+    this.charReceived += size;
+    this.charBuffer.copy(this.charBuffer, size, 0, size);
+    buffer.copy(this.charBuffer, 0, 0, size);
+    return charStr.substring(0, end);
+  }
+
+  // or just emit the charStr
+  return charStr;
+};
+
+// detectIncompleteChar determines if there is an incomplete UTF-8 character at
+// the end of the given buffer. If so, it sets this.charLength to the byte
+// length that character, and sets this.charReceived to the number of bytes
+// that are available for this character.
+StringDecoder.prototype.detectIncompleteChar = function(buffer) {
+  // determine how many bytes we have to check at the end of this buffer
+  var i = (buffer.length >= 3) ? 3 : buffer.length;
+
+  // Figure out if one of the last i bytes of our buffer announces an
+  // incomplete char.
+  for (; i > 0; i--) {
+    var c = buffer[buffer.length - i];
+
+    // See http://en.wikipedia.org/wiki/UTF-8#Description
+
+    // 110XXXXX
+    if (i == 1 && c >> 5 == 0x06) {
+      this.charLength = 2;
+      break;
+    }
+
+    // 1110XXXX
+    if (i <= 2 && c >> 4 == 0x0E) {
+      this.charLength = 3;
+      break;
+    }
+
+    // 11110XXX
+    if (i <= 3 && c >> 3 == 0x1E) {
+      this.charLength = 4;
+      break;
+    }
+  }
+  this.charReceived = i;
+};
+
+StringDecoder.prototype.end = function(buffer) {
+  var res = '';
+  if (buffer && buffer.length)
+    res = this.write(buffer);
+
+  if (this.charReceived) {
+    var cr = this.charReceived;
+    var buf = this.charBuffer;
+    var enc = this.encoding;
+    res += buf.slice(0, cr).toString(enc);
+  }
+
+  return res;
+};
+
+function passThroughWrite(buffer) {
+  return buffer.toString(this.encoding);
+}
+
+function utf16DetectIncompleteChar(buffer) {
+  this.charReceived = buffer.length % 2;
+  this.charLength = this.charReceived ? 2 : 0;
+}
+
+function base64DetectIncompleteChar(buffer) {
+  this.charReceived = buffer.length % 3;
+  this.charLength = this.charReceived ? 3 : 0;
+}
+
+},{"buffer":6}],56:[function(require,module,exports){
+// This is free and unencumbered software released into the public domain.
+// See LICENSE.md for more information.
+
+module.exports = require("./lib/encoding.js");
+
+},{"./lib/encoding.js":57}],57:[function(require,module,exports){
+// This is free and unencumbered software released into the public domain.
+// See LICENSE.md for more information.
+
+/**
+ * @fileoverview Global |this| required for resolving indexes in node.
+ * @suppress {globalThis}
+ */
+(function(global) {
+  'use strict';
+
+  // If we're in node require encoding-indexes and attach it to the global.
+  if (typeof module !== "undefined" && module.exports &&
+    !global["encoding-indexes"]) {
+      require("./encoding-indexes.js");
+  }
+
+  //
+  // Utilities
+  //
+
+  /**
+   * @param {number} a The number to test.
+   * @param {number} min The minimum value in the range, inclusive.
+   * @param {number} max The maximum value in the range, inclusive.
+   * @return {boolean} True if a >= min and a <= max.
+   */
+  function inRange(a, min, max) {
+    return min <= a && a <= max;
+  }
+
+  /**
+   * @param {!Array.<*>} array The array to check.
+   * @param {*} item The item to look for in the array.
+   * @return {boolean} True if the item appears in the array.
+   */
+  function includes(array, item) {
+    return array.indexOf(item) !== -1;
+  }
+
+  var floor = Math.floor;
+
+  /**
+   * @param {*} o
+   * @return {Object}
+   */
+  function ToDictionary(o) {
+    if (o === undefined) return {};
+    if (o === Object(o)) return o;
+    throw TypeError('Could not convert argument to dictionary');
+  }
+
+  /**
+   * @param {string} string Input string of UTF-16 code units.
+   * @return {!Array.<number>} Code points.
+   */
+  function stringToCodePoints(string) {
+    // https://heycam.github.io/webidl/#dfn-obtain-unicode
+
+    // 1. Let S be the DOMString value.
+    var s = String(string);
+
+    // 2. Let n be the length of S.
+    var n = s.length;
+
+    // 3. Initialize i to 0.
+    var i = 0;
+
+    // 4. Initialize U to be an empty sequence of Unicode characters.
+    var u = [];
+
+    // 5. While i < n:
+    while (i < n) {
+
+      // 1. Let c be the code unit in S at index i.
+      var c = s.charCodeAt(i);
+
+      // 2. Depending on the value of c:
+
+      // c < 0xD800 or c > 0xDFFF
+      if (c < 0xD800 || c > 0xDFFF) {
+        // Append to U the Unicode character with code point c.
+        u.push(c);
+      }
+
+      // 0xDC00 ≤ c ≤ 0xDFFF
+      else if (0xDC00 <= c && c <= 0xDFFF) {
+        // Append to U a U+FFFD REPLACEMENT CHARACTER.
+        u.push(0xFFFD);
+      }
+
+      // 0xD800 ≤ c ≤ 0xDBFF
+      else if (0xD800 <= c && c <= 0xDBFF) {
+        // 1. If i = n−1, then append to U a U+FFFD REPLACEMENT
+        // CHARACTER.
+        if (i === n - 1) {
+          u.push(0xFFFD);
+        }
+        // 2. Otherwise, i < n−1:
+        else {
+          // 1. Let d be the code unit in S at index i+1.
+          var d = s.charCodeAt(i + 1);
+
+          // 2. If 0xDC00 ≤ d ≤ 0xDFFF, then:
+          if (0xDC00 <= d && d <= 0xDFFF) {
+            // 1. Let a be c & 0x3FF.
+            var a = c & 0x3FF;
+
+            // 2. Let b be d & 0x3FF.
+            var b = d & 0x3FF;
+
+            // 3. Append to U the Unicode character with code point
+            // 2^16+2^10*a+b.
+            u.push(0x10000 + (a << 10) + b);
+
+            // 4. Set i to i+1.
+            i += 1;
+          }
+
+          // 3. Otherwise, d < 0xDC00 or d > 0xDFFF. Append to U a
+          // U+FFFD REPLACEMENT CHARACTER.
+          else  {
+            u.push(0xFFFD);
+          }
+        }
+      }
+
+      // 3. Set i to i+1.
+      i += 1;
+    }
+
+    // 6. Return U.
+    return u;
+  }
+
+  /**
+   * @param {!Array.<number>} code_points Array of code points.
+   * @return {string} string String of UTF-16 code units.
+   */
+  function codePointsToString(code_points) {
+    var s = '';
+    for (var i = 0; i < code_points.length; ++i) {
+      var cp = code_points[i];
+      if (cp <= 0xFFFF) {
+        s += String.fromCharCode(cp);
+      } else {
+        cp -= 0x10000;
+        s += String.fromCharCode((cp >> 10) + 0xD800,
+                                 (cp & 0x3FF) + 0xDC00);
+      }
+    }
+    return s;
+  }
+
+
+  //
+  // Implementation of Encoding specification
+  // https://encoding.spec.whatwg.org/
+  //
+
+  //
+  // 4. Terminology
+  //
+
+  /**
+   * An ASCII byte is a byte in the range 0x00 to 0x7F, inclusive.
+   * @param {number} a The number to test.
+   * @return {boolean} True if a is in the range 0x00 to 0x7F, inclusive.
+   */
+  function isASCIIByte(a) {
+    return 0x00 <= a && a <= 0x7F;
+  }
+
+  /**
+   * An ASCII code point is a code point in the range U+0000 to
+   * U+007F, inclusive.
+   */
+  var isASCIICodePoint = isASCIIByte;
+
+
+  /**
+   * End-of-stream is a special token that signifies no more tokens
+   * are in the stream.
+   * @const
+   */ var end_of_stream = -1;
+
+  /**
+   * A stream represents an ordered sequence of tokens.
+   *
+   * @constructor
+   * @param {!(Array.<number>|Uint8Array)} tokens Array of tokens that provide
+   * the stream.
+   */
+  function Stream(tokens) {
+    /** @type {!Array.<number>} */
+    this.tokens = [].slice.call(tokens);
+    // Reversed as push/pop is more efficient than shift/unshift.
+    this.tokens.reverse();
+  }
+
+  Stream.prototype = {
+    /**
+     * @return {boolean} True if end-of-stream has been hit.
+     */
+    endOfStream: function() {
+      return !this.tokens.length;
+    },
+
+    /**
+     * When a token is read from a stream, the first token in the
+     * stream must be returned and subsequently removed, and
+     * end-of-stream must be returned otherwise.
+     *
+     * @return {number} Get the next token from the stream, or
+     * end_of_stream.
+     */
+     read: function() {
+      if (!this.tokens.length)
+        return end_of_stream;
+       return this.tokens.pop();
+     },
+
+    /**
+     * When one or more tokens are prepended to a stream, those tokens
+     * must be inserted, in given order, before the first token in the
+     * stream.
+     *
+     * @param {(number|!Array.<number>)} token The token(s) to prepend to the
+     * stream.
+     */
+    prepend: function(token) {
+      if (Array.isArray(token)) {
+        var tokens = /**@type {!Array.<number>}*/(token);
+        while (tokens.length)
+          this.tokens.push(tokens.pop());
+      } else {
+        this.tokens.push(token);
+      }
+    },
+
+    /**
+     * When one or more tokens are pushed to a stream, those tokens
+     * must be inserted, in given order, after the last token in the
+     * stream.
+     *
+     * @param {(number|!Array.<number>)} token The tokens(s) to push to the
+     * stream.
+     */
+    push: function(token) {
+      if (Array.isArray(token)) {
+        var tokens = /**@type {!Array.<number>}*/(token);
+        while (tokens.length)
+          this.tokens.unshift(tokens.shift());
+      } else {
+        this.tokens.unshift(token);
+      }
+    }
+  };
+
+  //
+  // 5. Encodings
+  //
+
+  // 5.1 Encoders and decoders
+
+  /** @const */
+  var finished = -1;
+
+  /**
+   * @param {boolean} fatal If true, decoding errors raise an exception.
+   * @param {number=} opt_code_point Override the standard fallback code point.
+   * @return {number} The code point to insert on a decoding error.
+   */
+  function decoderError(fatal, opt_code_point) {
+    if (fatal)
+      throw TypeError('Decoder error');
+    return opt_code_point || 0xFFFD;
+  }
+
+  /**
+   * @param {number} code_point The code point that could not be encoded.
+   * @return {number} Always throws, no value is actually returned.
+   */
+  function encoderError(code_point) {
+    throw TypeError('The code point ' + code_point + ' could not be encoded.');
+  }
+
+  /** @interface */
+  function Decoder() {}
+  Decoder.prototype = {
+    /**
+     * @param {Stream} stream The stream of bytes being decoded.
+     * @param {number} bite The next byte read from the stream.
+     * @return {?(number|!Array.<number>)} The next code point(s)
+     *     decoded, or null if not enough data exists in the input
+     *     stream to decode a complete code point, or |finished|.
+     */
+    handler: function(stream, bite) {}
+  };
+
+  /** @interface */
+  function Encoder() {}
+  Encoder.prototype = {
+    /**
+     * @param {Stream} stream The stream of code points being encoded.
+     * @param {number} code_point Next code point read from the stream.
+     * @return {(number|!Array.<number>)} Byte(s) to emit, or |finished|.
+     */
+    handler: function(stream, code_point) {}
+  };
+
+  // 5.2 Names and labels
+
+  // TODO: Define @typedef for Encoding: {name:string,labels:Array.<string>}
+  // https://github.com/google/closure-compiler/issues/247
+
+  /**
+   * @param {string} label The encoding label.
+   * @return {?{name:string,labels:Array.<string>}}
+   */
+  function getEncoding(label) {
+    // 1. Remove any leading and trailing ASCII whitespace from label.
+    label = String(label).trim().toLowerCase();
+
+    // 2. If label is an ASCII case-insensitive match for any of the
+    // labels listed in the table below, return the corresponding
+    // encoding, and failure otherwise.
+    if (Object.prototype.hasOwnProperty.call(label_to_encoding, label)) {
+      return label_to_encoding[label];
+    }
+    return null;
+  }
+
+  /**
+   * Encodings table: https://encoding.spec.whatwg.org/encodings.json
+   * @const
+   * @type {!Array.<{
+   *          heading: string,
+   *          encodings: Array.<{name:string,labels:Array.<string>}>
+   *        }>}
+   */
+  var encodings = [
+    {
+      "encodings": [
+        {
+          "labels": [
+            "unicode-1-1-utf-8",
+            "utf-8",
+            "utf8"
+          ],
+          "name": "UTF-8"
+        }
+      ],
+      "heading": "The Encoding"
+    },
+    {
+      "encodings": [
+        {
+          "labels": [
+            "866",
+            "cp866",
+            "csibm866",
+            "ibm866"
+          ],
+          "name": "IBM866"
+        },
+        {
+          "labels": [
+            "csisolatin2",
+            "iso-8859-2",
+            "iso-ir-101",
+            "iso8859-2",
+            "iso88592",
+            "iso_8859-2",
+            "iso_8859-2:1987",
+            "l2",
+            "latin2"
+          ],
+          "name": "ISO-8859-2"
+        },
+        {
+          "labels": [
+            "csisolatin3",
+            "iso-8859-3",
+            "iso-ir-109",
+            "iso8859-3",
+            "iso88593",
+            "iso_8859-3",
+            "iso_8859-3:1988",
+            "l3",
+            "latin3"
+          ],
+          "name": "ISO-8859-3"
+        },
+        {
+          "labels": [
+            "csisolatin4",
+            "iso-8859-4",
+            "iso-ir-110",
+            "iso8859-4",
+            "iso88594",
+            "iso_8859-4",
+            "iso_8859-4:1988",
+            "l4",
+            "latin4"
+          ],
+          "name": "ISO-8859-4"
+        },
+        {
+          "labels": [
+            "csisolatincyrillic",
+            "cyrillic",
+            "iso-8859-5",
+            "iso-ir-144",
+            "iso8859-5",
+            "iso88595",
+            "iso_8859-5",
+            "iso_8859-5:1988"
+          ],
+          "name": "ISO-8859-5"
+        },
+        {
+          "labels": [
+            "arabic",
+            "asmo-708",
+            "csiso88596e",
+            "csiso88596i",
+            "csisolatinarabic",
+            "ecma-114",
+            "iso-8859-6",
+            "iso-8859-6-e",
+            "iso-8859-6-i",
+            "iso-ir-127",
+            "iso8859-6",
+            "iso88596",
+            "iso_8859-6",
+            "iso_8859-6:1987"
+          ],
+          "name": "ISO-8859-6"
+        },
+        {
+          "labels": [
+            "csisolatingreek",
+            "ecma-118",
+            "elot_928",
+            "greek",
+            "greek8",
+            "iso-8859-7",
+            "iso-ir-126",
+            "iso8859-7",
+            "iso88597",
+            "iso_8859-7",
+            "iso_8859-7:1987",
+            "sun_eu_greek"
+          ],
+          "name": "ISO-8859-7"
+        },
+        {
+          "labels": [
+            "csiso88598e",
+            "csisolatinhebrew",
+            "hebrew",
+            "iso-8859-8",
+            "iso-8859-8-e",
+            "iso-ir-138",
+            "iso8859-8",
+            "iso88598",
+            "iso_8859-8",
+            "iso_8859-8:1988",
+            "visual"
+          ],
+          "name": "ISO-8859-8"
+        },
+        {
+          "labels": [
+            "csiso88598i",
+            "iso-8859-8-i",
+            "logical"
+          ],
+          "name": "ISO-8859-8-I"
+        },
+        {
+          "labels": [
+            "csisolatin6",
+            "iso-8859-10",
+            "iso-ir-157",
+            "iso8859-10",
+            "iso885910",
+            "l6",
+            "latin6"
+          ],
+          "name": "ISO-8859-10"
+        },
+        {
+          "labels": [
+            "iso-8859-13",
+            "iso8859-13",
+            "iso885913"
+          ],
+          "name": "ISO-8859-13"
+        },
+        {
+          "labels": [
+            "iso-8859-14",
+            "iso8859-14",
+            "iso885914"
+          ],
+          "name": "ISO-8859-14"
+        },
+        {
+          "labels": [
+            "csisolatin9",
+            "iso-8859-15",
+            "iso8859-15",
+            "iso885915",
+            "iso_8859-15",
+            "l9"
+          ],
+          "name": "ISO-8859-15"
+        },
+        {
+          "labels": [
+            "iso-8859-16"
+          ],
+          "name": "ISO-8859-16"
+        },
+        {
+          "labels": [
+            "cskoi8r",
+            "koi",
+            "koi8",
+            "koi8-r",
+            "koi8_r"
+          ],
+          "name": "KOI8-R"
+        },
+        {
+          "labels": [
+            "koi8-ru",
+            "koi8-u"
+          ],
+          "name": "KOI8-U"
+        },
+        {
+          "labels": [
+            "csmacintosh",
+            "mac",
+            "macintosh",
+            "x-mac-roman"
+          ],
+          "name": "macintosh"
+        },
+        {
+          "labels": [
+            "dos-874",
+            "iso-8859-11",
+            "iso8859-11",
+            "iso885911",
+            "tis-620",
+            "windows-874"
+          ],
+          "name": "windows-874"
+        },
+        {
+          "labels": [
+            "cp1250",
+            "windows-1250",
+            "x-cp1250"
+          ],
+          "name": "windows-1250"
+        },
+        {
+          "labels": [
+            "cp1251",
+            "windows-1251",
+            "x-cp1251"
+          ],
+          "name": "windows-1251"
+        },
+        {
+          "labels": [
+            "ansi_x3.4-1968",
+            "ascii",
+            "cp1252",
+            "cp819",
+            "csisolatin1",
+            "ibm819",
+            "iso-8859-1",
+            "iso-ir-100",
+            "iso8859-1",
+            "iso88591",
+            "iso_8859-1",
+            "iso_8859-1:1987",
+            "l1",
+            "latin1",
+            "us-ascii",
+            "windows-1252",
+            "x-cp1252"
+          ],
+          "name": "windows-1252"
+        },
+        {
+          "labels": [
+            "cp1253",
+            "windows-1253",
+            "x-cp1253"
+          ],
+          "name": "windows-1253"
+        },
+        {
+          "labels": [
+            "cp1254",
+            "csisolatin5",
+            "iso-8859-9",
+            "iso-ir-148",
+            "iso8859-9",
+            "iso88599",
+            "iso_8859-9",
+            "iso_8859-9:1989",
+            "l5",
+            "latin5",
+            "windows-1254",
+            "x-cp1254"
+          ],
+          "name": "windows-1254"
+        },
+        {
+          "labels": [
+            "cp1255",
+            "windows-1255",
+            "x-cp1255"
+          ],
+          "name": "windows-1255"
+        },
+        {
+          "labels": [
+            "cp1256",
+            "windows-1256",
+            "x-cp1256"
+          ],
+          "name": "windows-1256"
+        },
+        {
+          "labels": [
+            "cp1257",
+            "windows-1257",
+            "x-cp1257"
+          ],
+          "name": "windows-1257"
+        },
+        {
+          "labels": [
+            "cp1258",
+            "windows-1258",
+            "x-cp1258"
+          ],
+          "name": "windows-1258"
+        },
+        {
+          "labels": [
+            "x-mac-cyrillic",
+            "x-mac-ukrainian"
+          ],
+          "name": "x-mac-cyrillic"
+        }
+      ],
+      "heading": "Legacy single-byte encodings"
+    },
+    {
+      "encodings": [
+        {
+          "labels": [
+            "chinese",
+            "csgb2312",
+            "csiso58gb231280",
+            "gb2312",
+            "gb_2312",
+            "gb_2312-80",
+            "gbk",
+            "iso-ir-58",
+            "x-gbk"
+          ],
+          "name": "GBK"
+        },
+        {
+          "labels": [
+            "gb18030"
+          ],
+          "name": "gb18030"
+        }
+      ],
+      "heading": "Legacy multi-byte Chinese (simplified) encodings"
+    },
+    {
+      "encodings": [
+        {
+          "labels": [
+            "big5",
+            "big5-hkscs",
+            "cn-big5",
+            "csbig5",
+            "x-x-big5"
+          ],
+          "name": "Big5"
+        }
+      ],
+      "heading": "Legacy multi-byte Chinese (traditional) encodings"
+    },
+    {
+      "encodings": [
+        {
+          "labels": [
+            "cseucpkdfmtjapanese",
+            "euc-jp",
+            "x-euc-jp"
+          ],
+          "name": "EUC-JP"
+        },
+        {
+          "labels": [
+            "csiso2022jp",
+            "iso-2022-jp"
+          ],
+          "name": "ISO-2022-JP"
+        },
+        {
+          "labels": [
+            "csshiftjis",
+            "ms932",
+            "ms_kanji",
+            "shift-jis",
+            "shift_jis",
+            "sjis",
+            "windows-31j",
+            "x-sjis"
+          ],
+          "name": "Shift_JIS"
+        }
+      ],
+      "heading": "Legacy multi-byte Japanese encodings"
+    },
+    {
+      "encodings": [
+        {
+          "labels": [
+            "cseuckr",
+            "csksc56011987",
+            "euc-kr",
+            "iso-ir-149",
+            "korean",
+            "ks_c_5601-1987",
+            "ks_c_5601-1989",
+            "ksc5601",
+            "ksc_5601",
+            "windows-949"
+          ],
+          "name": "EUC-KR"
+        }
+      ],
+      "heading": "Legacy multi-byte Korean encodings"
+    },
+    {
+      "encodings": [
+        {
+          "labels": [
+            "csiso2022kr",
+            "hz-gb-2312",
+            "iso-2022-cn",
+            "iso-2022-cn-ext",
+            "iso-2022-kr"
+          ],
+          "name": "replacement"
+        },
+        {
+          "labels": [
+            "utf-16be"
+          ],
+          "name": "UTF-16BE"
+        },
+        {
+          "labels": [
+            "utf-16",
+            "utf-16le"
+          ],
+          "name": "UTF-16LE"
+        },
+        {
+          "labels": [
+            "x-user-defined"
+          ],
+          "name": "x-user-defined"
+        }
+      ],
+      "heading": "Legacy miscellaneous encodings"
+    }
+  ];
+
+  // Label to encoding registry.
+  /** @type {Object.<string,{name:string,labels:Array.<string>}>} */
+  var label_to_encoding = {};
+  encodings.forEach(function(category) {
+    category.encodings.forEach(function(encoding) {
+      encoding.labels.forEach(function(label) {
+        label_to_encoding[label] = encoding;
+      });
+    });
+  });
+
+  // Registry of of encoder/decoder factories, by encoding name.
+  /** @type {Object.<string, function({fatal:boolean}): Encoder>} */
+  var encoders = {};
+  /** @type {Object.<string, function({fatal:boolean}): Decoder>} */
+  var decoders = {};
+
+  //
+  // 6. Indexes
+  //
+
+  /**
+   * @param {number} pointer The |pointer| to search for.
+   * @param {(!Array.<?number>|undefined)} index The |index| to search within.
+   * @return {?number} The code point corresponding to |pointer| in |index|,
+   *     or null if |code point| is not in |index|.
+   */
+  function indexCodePointFor(pointer, index) {
+    if (!index) return null;
+    return index[pointer] || null;
+  }
+
+  /**
+   * @param {number} code_point The |code point| to search for.
+   * @param {!Array.<?number>} index The |index| to search within.
+   * @return {?number} The first pointer corresponding to |code point| in
+   *     |index|, or null if |code point| is not in |index|.
+   */
+  function indexPointerFor(code_point, index) {
+    var pointer = index.indexOf(code_point);
+    return pointer === -1 ? null : pointer;
+  }
+
+  /**
+   * @param {string} name Name of the index.
+   * @return {(!Array.<number>|!Array.<Array.<number>>)}
+   *  */
+  function index(name) {
+    if (!('encoding-indexes' in global)) {
+      throw Error("Indexes missing." +
+                  " Did you forget to include encoding-indexes.js first?");
+    }
+    return global['encoding-indexes'][name];
+  }
+
+  /**
+   * @param {number} pointer The |pointer| to search for in the gb18030 index.
+   * @return {?number} The code point corresponding to |pointer| in |index|,
+   *     or null if |code point| is not in the gb18030 index.
+   */
+  function indexGB18030RangesCodePointFor(pointer) {
+    // 1. If pointer is greater than 39419 and less than 189000, or
+    // pointer is greater than 1237575, return null.
+    if ((pointer > 39419 && pointer < 189000) || (pointer > 1237575))
+      return null;
+
+    // 2. If pointer is 7457, return code point U+E7C7.
+    if (pointer === 7457) return 0xE7C7;
+
+    // 3. Let offset be the last pointer in index gb18030 ranges that
+    // is equal to or less than pointer and let code point offset be
+    // its corresponding code point.
+    var offset = 0;
+    var code_point_offset = 0;
+    var idx = index('gb18030-ranges');
+    var i;
+    for (i = 0; i < idx.length; ++i) {
+      /** @type {!Array.<number>} */
+      var entry = idx[i];
+      if (entry[0] <= pointer) {
+        offset = entry[0];
+        code_point_offset = entry[1];
+      } else {
+        break;
+      }
+    }
+
+    // 4. Return a code point whose value is code point offset +
+    // pointer − offset.
+    return code_point_offset + pointer - offset;
+  }
+
+  /**
+   * @param {number} code_point The |code point| to locate in the gb18030 index.
+   * @return {number} The first pointer corresponding to |code point| in the
+   *     gb18030 index.
+   */
+  function indexGB18030RangesPointerFor(code_point) {
+    // 1. If code point is U+E7C7, return pointer 7457.
+    if (code_point === 0xE7C7) return 7457;
+
+    // 2. Let offset be the last code point in index gb18030 ranges
+    // that is equal to or less than code point and let pointer offset
+    // be its corresponding pointer.
+    var offset = 0;
+    var pointer_offset = 0;
+    var idx = index('gb18030-ranges');
+    var i;
+    for (i = 0; i < idx.length; ++i) {
+      /** @type {!Array.<number>} */
+      var entry = idx[i];
+      if (entry[1] <= code_point) {
+        offset = entry[1];
+        pointer_offset = entry[0];
+      } else {
+        break;
+      }
+    }
+
+    // 3. Return a pointer whose value is pointer offset + code point
+    // − offset.
+    return pointer_offset + code_point - offset;
+  }
+
+  /**
+   * @param {number} code_point The |code_point| to search for in the Shift_JIS
+   *     index.
+   * @return {?number} The code point corresponding to |pointer| in |index|,
+   *     or null if |code point| is not in the Shift_JIS index.
+   */
+  function indexShiftJISPointerFor(code_point) {
+    // 1. Let index be index jis0208 excluding all entries whose
+    // pointer is in the range 8272 to 8835, inclusive.
+    shift_jis_index = shift_jis_index ||
+      index('jis0208').map(function(code_point, pointer) {
+        return inRange(pointer, 8272, 8835) ? null : code_point;
+      });
+    var index_ = shift_jis_index;
+
+    // 2. Return the index pointer for code point in index.
+    return index_.indexOf(code_point);
+  }
+  var shift_jis_index;
+
+  /**
+   * @param {number} code_point The |code_point| to search for in the big5
+   *     index.
+   * @return {?number} The code point corresponding to |pointer| in |index|,
+   *     or null if |code point| is not in the big5 index.
+   */
+  function indexBig5PointerFor(code_point) {
+    // 1. Let index be index Big5 excluding all entries whose pointer
+    big5_index_no_hkscs = big5_index_no_hkscs ||
+      index('big5').map(function(code_point, pointer) {
+        return (pointer < (0xA1 - 0x81) * 157) ? null : code_point;
+      });
+    var index_ = big5_index_no_hkscs;
+
+    // 2. If code point is U+2550, U+255E, U+2561, U+256A, U+5341, or
+    // U+5345, return the last pointer corresponding to code point in
+    // index.
+    if (code_point === 0x2550 || code_point === 0x255E ||
+        code_point === 0x2561 || code_point === 0x256A ||
+        code_point === 0x5341 || code_point === 0x5345) {
+      return index_.lastIndexOf(code_point);
+    }
+
+    // 3. Return the index pointer for code point in index.
+    return indexPointerFor(code_point, index_);
+  }
+  var big5_index_no_hkscs;
+
+  //
+  // 8. API
+  //
+
+  /** @const */ var DEFAULT_ENCODING = 'utf-8';
+
+  // 8.1 Interface TextDecoder
+
+  /**
+   * @constructor
+   * @param {string=} label The label of the encoding;
+   *     defaults to 'utf-8'.
+   * @param {Object=} options
+   */
+  function TextDecoder(label, options) {
+    // Web IDL conventions
+    if (!(this instanceof TextDecoder))
+      throw TypeError('Called as a function. Did you forget \'new\'?');
+    label = label !== undefined ? String(label) : DEFAULT_ENCODING;
+    options = ToDictionary(options);
+
+    // A TextDecoder object has an associated encoding, decoder,
+    // stream, ignore BOM flag (initially unset), BOM seen flag
+    // (initially unset), error mode (initially replacement), and do
+    // not flush flag (initially unset).
+
+    /** @private */
+    this._encoding = null;
+    /** @private @type {?Decoder} */
+    this._decoder = null;
+    /** @private @type {boolean} */
+    this._ignoreBOM = false;
+    /** @private @type {boolean} */
+    this._BOMseen = false;
+    /** @private @type {string} */
+    this._error_mode = 'replacement';
+    /** @private @type {boolean} */
+    this._do_not_flush = false;
+
+
+    // 1. Let encoding be the result of getting an encoding from
+    // label.
+    var encoding = getEncoding(label);
+
+    // 2. If encoding is failure or replacement, throw a RangeError.
+    if (encoding === null || encoding.name === 'replacement')
+      throw RangeError('Unknown encoding: ' + label);
+    if (!decoders[encoding.name]) {
+      throw Error('Decoder not present.' +
+                  ' Did you forget to include encoding-indexes.js first?');
+    }
+
+    // 3. Let dec be a new TextDecoder object.
+    var dec = this;
+
+    // 4. Set dec's encoding to encoding.
+    dec._encoding = encoding;
+
+    // 5. If options's fatal member is true, set dec's error mode to
+    // fatal.
+    if (Boolean(options['fatal']))
+      dec._error_mode = 'fatal';
+
+    // 6. If options's ignoreBOM member is true, set dec's ignore BOM
+    // flag.
+    if (Boolean(options['ignoreBOM']))
+      dec._ignoreBOM = true;
+
+    // For pre-ES5 runtimes:
+    if (!Object.defineProperty) {
+      this.encoding = dec._encoding.name.toLowerCase();
+      this.fatal = dec._error_mode === 'fatal';
+      this.ignoreBOM = dec._ignoreBOM;
+    }
+
+    // 7. Return dec.
+    return dec;
+  }
+
+  if (Object.defineProperty) {
+    // The encoding attribute's getter must return encoding's name.
+    Object.defineProperty(TextDecoder.prototype, 'encoding', {
+      /** @this {TextDecoder} */
+      get: function() { return this._encoding.name.toLowerCase(); }
+    });
+
+    // The fatal attribute's getter must return true if error mode
+    // is fatal, and false otherwise.
+    Object.defineProperty(TextDecoder.prototype, 'fatal', {
+      /** @this {TextDecoder} */
+      get: function() { return this._error_mode === 'fatal'; }
+    });
+
+    // The ignoreBOM attribute's getter must return true if ignore
+    // BOM flag is set, and false otherwise.
+    Object.defineProperty(TextDecoder.prototype, 'ignoreBOM', {
+      /** @this {TextDecoder} */
+      get: function() { return this._ignoreBOM; }
+    });
+  }
+
+  /**
+   * @param {BufferSource=} input The buffer of bytes to decode.
+   * @param {Object=} options
+   * @return {string} The decoded string.
+   */
+  TextDecoder.prototype.decode = function decode(input, options) {
+    var bytes;
+    if (typeof input === 'object' && input instanceof ArrayBuffer) {
+      bytes = new Uint8Array(input);
+    } else if (typeof input === 'object' && 'buffer' in input &&
+               input.buffer instanceof ArrayBuffer) {
+      bytes = new Uint8Array(input.buffer,
+                             input.byteOffset,
+                             input.byteLength);
+    } else {
+      bytes = new Uint8Array(0);
+    }
+
+    options = ToDictionary(options);
+
+    // 1. If the do not flush flag is unset, set decoder to a new
+    // encoding's decoder, set stream to a new stream, and unset the
+    // BOM seen flag.
+    if (!this._do_not_flush) {
+      this._decoder = decoders[this._encoding.name]({
+        fatal: this._error_mode === 'fatal'});
+      this._BOMseen = false;
+    }
+
+    // 2. If options's stream is true, set the do not flush flag, and
+    // unset the do not flush flag otherwise.
+    this._do_not_flush = Boolean(options['stream']);
+
+    // 3. If input is given, push a copy of input to stream.
+    // TODO: Align with spec algorithm - maintain stream on instance.
+    var input_stream = new Stream(bytes);
+
+    // 4. Let output be a new stream.
+    var output = [];
+
+    /** @type {?(number|!Array.<number>)} */
+    var result;
+
+    // 5. While true:
+    while (true) {
+      // 1. Let token be the result of reading from stream.
+      var token = input_stream.read();
+
+      // 2. If token is end-of-stream and the do not flush flag is
+      // set, return output, serialized.
+      // TODO: Align with spec algorithm.
+      if (token === end_of_stream)
+        break;
+
+      // 3. Otherwise, run these subsubsteps:
+
+      // 1. Let result be the result of processing token for decoder,
+      // stream, output, and error mode.
+      result = this._decoder.handler(input_stream, token);
+
+      // 2. If result is finished, return output, serialized.
+      if (result === finished)
+        break;
+
+      if (result !== null) {
+        if (Array.isArray(result))
+          output.push.apply(output, /**@type {!Array.<number>}*/(result));
+        else
+          output.push(result);
+      }
+
+      // 3. Otherwise, if result is error, throw a TypeError.
+      // (Thrown in handler)
+
+      // 4. Otherwise, do nothing.
+    }
+    // TODO: Align with spec algorithm.
+    if (!this._do_not_flush) {
+      do {
+        result = this._decoder.handler(input_stream, input_stream.read());
+        if (result === finished)
+          break;
+        if (result === null)
+          continue;
+        if (Array.isArray(result))
+          output.push.apply(output, /**@type {!Array.<number>}*/(result));
+        else
+          output.push(result);
+      } while (!input_stream.endOfStream());
+      this._decoder = null;
+    }
+
+    // A TextDecoder object also has an associated serialize stream
+    // algorithm...
+    /**
+     * @param {!Array.<number>} stream
+     * @return {string}
+     * @this {TextDecoder}
+     */
+    function serializeStream(stream) {
+      // 1. Let token be the result of reading from stream.
+      // (Done in-place on array, rather than as a stream)
+
+      // 2. If encoding is UTF-8, UTF-16BE, or UTF-16LE, and ignore
+      // BOM flag and BOM seen flag are unset, run these subsubsteps:
+      if (includes(['UTF-8', 'UTF-16LE', 'UTF-16BE'], this._encoding.name) &&
+          !this._ignoreBOM && !this._BOMseen) {
+        if (stream.length > 0 && stream[0] === 0xFEFF) {
+          // 1. If token is U+FEFF, set BOM seen flag.
+          this._BOMseen = true;
+          stream.shift();
+        } else if (stream.length > 0) {
+          // 2. Otherwise, if token is not end-of-stream, set BOM seen
+          // flag and append token to stream.
+          this._BOMseen = true;
+        } else {
+          // 3. Otherwise, if token is not end-of-stream, append token
+          // to output.
+          // (no-op)
+        }
+      }
+      // 4. Otherwise, return output.
+      return codePointsToString(stream);
+    }
+
+    return serializeStream.call(this, output);
+  };
+
+  // 8.2 Interface TextEncoder
+
+  /**
+   * @constructor
+   * @param {string=} label The label of the encoding. NONSTANDARD.
+   * @param {Object=} options NONSTANDARD.
+   */
+  function TextEncoder(label, options) {
+    // Web IDL conventions
+    if (!(this instanceof TextEncoder))
+      throw TypeError('Called as a function. Did you forget \'new\'?');
+    options = ToDictionary(options);
+
+    // A TextEncoder object has an associated encoding and encoder.
+
+    /** @private */
+    this._encoding = null;
+    /** @private @type {?Encoder} */
+    this._encoder = null;
+
+    // Non-standard
+    /** @private @type {boolean} */
+    this._do_not_flush = false;
+    /** @private @type {string} */
+    this._fatal = Boolean(options['fatal']) ? 'fatal' : 'replacement';
+
+    // 1. Let enc be a new TextEncoder object.
+    var enc = this;
+
+    // 2. Set enc's encoding to UTF-8's encoder.
+    if (Boolean(options['NONSTANDARD_allowLegacyEncoding'])) {
+      // NONSTANDARD behavior.
+      label = label !== undefined ? String(label) : DEFAULT_ENCODING;
+      var encoding = getEncoding(label);
+      if (encoding === null || encoding.name === 'replacement')
+        throw RangeError('Unknown encoding: ' + label);
+      if (!encoders[encoding.name]) {
+        throw Error('Encoder not present.' +
+                    ' Did you forget to include encoding-indexes.js first?');
+      }
+      enc._encoding = encoding;
+    } else {
+      // Standard behavior.
+      enc._encoding = getEncoding('utf-8');
+
+      if (label !== undefined && 'console' in global) {
+        console.warn('TextEncoder constructor called with encoding label, '
+                     + 'which is ignored.');
+      }
+    }
+
+    // For pre-ES5 runtimes:
+    if (!Object.defineProperty)
+      this.encoding = enc._encoding.name.toLowerCase();
+
+    // 3. Return enc.
+    return enc;
+  }
+
+  if (Object.defineProperty) {
+    // The encoding attribute's getter must return encoding's name.
+    Object.defineProperty(TextEncoder.prototype, 'encoding', {
+      /** @this {TextEncoder} */
+      get: function() { return this._encoding.name.toLowerCase(); }
+    });
+  }
+
+  /**
+   * @param {string=} opt_string The string to encode.
+   * @param {Object=} options
+   * @return {!Uint8Array} Encoded bytes, as a Uint8Array.
+   */
+  TextEncoder.prototype.encode = function encode(opt_string, options) {
+    opt_string = opt_string === undefined ? '' : String(opt_string);
+    options = ToDictionary(options);
+
+    // NOTE: This option is nonstandard. None of the encodings
+    // permitted for encoding (i.e. UTF-8, UTF-16) are stateful when
+    // the input is a USVString so streaming is not necessary.
+    if (!this._do_not_flush)
+      this._encoder = encoders[this._encoding.name]({
+        fatal: this._fatal === 'fatal'});
+    this._do_not_flush = Boolean(options['stream']);
+
+    // 1. Convert input to a stream.
+    var input = new Stream(stringToCodePoints(opt_string));
+
+    // 2. Let output be a new stream
+    var output = [];
+
+    /** @type {?(number|!Array.<number>)} */
+    var result;
+    // 3. While true, run these substeps:
+    while (true) {
+      // 1. Let token be the result of reading from input.
+      var token = input.read();
+      if (token === end_of_stream)
+        break;
+      // 2. Let result be the result of processing token for encoder,
+      // input, output.
+      result = this._encoder.handler(input, token);
+      if (result === finished)
+        break;
+      if (Array.isArray(result))
+        output.push.apply(output, /**@type {!Array.<number>}*/(result));
+      else
+        output.push(result);
+    }
+    // TODO: Align with spec algorithm.
+    if (!this._do_not_flush) {
+      while (true) {
+        result = this._encoder.handler(input, input.read());
+        if (result === finished)
+          break;
+        if (Array.isArray(result))
+          output.push.apply(output, /**@type {!Array.<number>}*/(result));
+        else
+          output.push(result);
+      }
+      this._encoder = null;
+    }
+    // 3. If result is finished, convert output into a byte sequence,
+    // and then return a Uint8Array object wrapping an ArrayBuffer
+    // containing output.
+    return new Uint8Array(output);
+  };
+
+
+  //
+  // 9. The encoding
+  //
+
+  // 9.1 utf-8
+
+  // 9.1.1 utf-8 decoder
+  /**
+   * @constructor
+   * @implements {Decoder}
+   * @param {{fatal: boolean}} options
+   */
+  function UTF8Decoder(options) {
+    var fatal = options.fatal;
+
+    // utf-8's decoder's has an associated utf-8 code point, utf-8
+    // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8
+    // lower boundary (initially 0x80), and a utf-8 upper boundary
+    // (initially 0xBF).
+    var /** @type {number} */ utf8_code_point = 0,
+        /** @type {number} */ utf8_bytes_seen = 0,
+        /** @type {number} */ utf8_bytes_needed = 0,
+        /** @type {number} */ utf8_lower_boundary = 0x80,
+        /** @type {number} */ utf8_upper_boundary = 0xBF;
+
+    /**
+     * @param {Stream} stream The stream of bytes being decoded.
+     * @param {number} bite The next byte read from the stream.
+     * @return {?(number|!Array.<number>)} The next code point(s)
+     *     decoded, or null if not enough data exists in the input
+     *     stream to decode a complete code point.
+     */
+    this.handler = function(stream, bite) {
+      // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,
+      // set utf-8 bytes needed to 0 and return error.
+      if (bite === end_of_stream && utf8_bytes_needed !== 0) {
+        utf8_bytes_needed = 0;
+        return decoderError(fatal);
+      }
+
+      // 2. If byte is end-of-stream, return finished.
+      if (bite === end_of_stream)
+        return finished;
+
+      // 3. If utf-8 bytes needed is 0, based on byte:
+      if (utf8_bytes_needed === 0) {
+
+        // 0x00 to 0x7F
+        if (inRange(bite, 0x00, 0x7F)) {
+          // Return a code point whose value is byte.
+          return bite;
+        }
+
+        // 0xC2 to 0xDF
+        else if (inRange(bite, 0xC2, 0xDF)) {
+          // 1. Set utf-8 bytes needed to 1.
+          utf8_bytes_needed = 1;
+
+          // 2. Set UTF-8 code point to byte & 0x1F.
+          utf8_code_point = bite & 0x1F;
+        }
+
+        // 0xE0 to 0xEF
+        else if (inRange(bite, 0xE0, 0xEF)) {
+          // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.
+          if (bite === 0xE0)
+            utf8_lower_boundary = 0xA0;
+          // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.
+          if (bite === 0xED)
+            utf8_upper_boundary = 0x9F;
+          // 3. Set utf-8 bytes needed to 2.
+          utf8_bytes_needed = 2;
+          // 4. Set UTF-8 code point to byte & 0xF.
+          utf8_code_point = bite & 0xF;
+        }
+
+        // 0xF0 to 0xF4
+        else if (inRange(bite, 0xF0, 0xF4)) {
+          // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.
+          if (bite === 0xF0)
+            utf8_lower_boundary = 0x90;
+          // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.
+          if (bite === 0xF4)
+            utf8_upper_boundary = 0x8F;
+          // 3. Set utf-8 bytes needed to 3.
+          utf8_bytes_needed = 3;
+          // 4. Set UTF-8 code point to byte & 0x7.
+          utf8_code_point = bite & 0x7;
+        }
+
+        // Otherwise
+        else {
+          // Return error.
+          return decoderError(fatal);
+        }
+
+        // Return continue.
+        return null;
+      }
+
+      // 4. If byte is not in the range utf-8 lower boundary to utf-8
+      // upper boundary, inclusive, run these substeps:
+      if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {
+
+        // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8
+        // bytes seen to 0, set utf-8 lower boundary to 0x80, and set
+        // utf-8 upper boundary to 0xBF.
+        utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;
+        utf8_lower_boundary = 0x80;
+        utf8_upper_boundary = 0xBF;
+
+        // 2. Prepend byte to stream.
+        stream.prepend(bite);
+
+        // 3. Return error.
+        return decoderError(fatal);
+      }
+
+      // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary
+      // to 0xBF.
+      utf8_lower_boundary = 0x80;
+      utf8_upper_boundary = 0xBF;
+
+      // 6. Set UTF-8 code point to (UTF-8 code point << 6) | (byte &
+      // 0x3F)
+      utf8_code_point = (utf8_code_point << 6) | (bite & 0x3F);
+
+      // 7. Increase utf-8 bytes seen by one.
+      utf8_bytes_seen += 1;
+
+      // 8. If utf-8 bytes seen is not equal to utf-8 bytes needed,
+      // continue.
+      if (utf8_bytes_seen !== utf8_bytes_needed)
+        return null;
+
+      // 9. Let code point be utf-8 code point.
+      var code_point = utf8_code_point;
+
+      // 10. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes
+      // seen to 0.
+      utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;
+
+      // 11. Return a code point whose value is code point.
+      return code_point;
+    };
+  }
+
+  // 9.1.2 utf-8 encoder
+  /**
+   * @constructor
+   * @implements {Encoder}
+   * @param {{fatal: boolean}} options
+   */
+  function UTF8Encoder(options) {
+    var fatal = options.fatal;
+    /**
+     * @param {Stream} stream Input stream.
+     * @param {number} code_point Next code point read from the stream.
+     * @return {(number|!Array.<number>)} Byte(s) to emit.
+     */
+    this.handler = function(stream, code_point) {
+      // 1. If code point is end-of-stream, return finished.
+      if (code_point === end_of_stream)
+        return finished;
+
+      // 2. If code point is an ASCII code point, return a byte whose
+      // value is code point.
+      if (isASCIICodePoint(code_point))
+        return code_point;
+
+      // 3. Set count and offset based on the range code point is in:
+      var count, offset;
+      // U+0080 to U+07FF, inclusive:
+      if (inRange(code_point, 0x0080, 0x07FF)) {
+        // 1 and 0xC0
+        count = 1;
+        offset = 0xC0;
+      }
+      // U+0800 to U+FFFF, inclusive:
+      else if (inRange(code_point, 0x0800, 0xFFFF)) {
+        // 2 and 0xE0
+        count = 2;
+        offset = 0xE0;
+      }
+      // U+10000 to U+10FFFF, inclusive:
+      else if (inRange(code_point, 0x10000, 0x10FFFF)) {
+        // 3 and 0xF0
+        count = 3;
+        offset = 0xF0;
+      }
+
+      // 4. Let bytes be a byte sequence whose first byte is (code
+      // point >> (6 × count)) + offset.
+      var bytes = [(code_point >> (6 * count)) + offset];
+
+      // 5. Run these substeps while count is greater than 0:
+      while (count > 0) {
+
+        // 1. Set temp to code point >> (6 × (count − 1)).
+        var temp = code_point >> (6 * (count - 1));
+
+        // 2. Append to bytes 0x80 | (temp & 0x3F).
+        bytes.push(0x80 | (temp & 0x3F));
+
+        // 3. Decrease count by one.
+        count -= 1;
+      }
+
+      // 6. Return bytes bytes, in order.
+      return bytes;
+    };
+  }
+
+  /** @param {{fatal: boolean}} options */
+  encoders['UTF-8'] = function(options) {
+    return new UTF8Encoder(options);
+  };
+  /** @param {{fatal: boolean}} options */
+  decoders['UTF-8'] = function(options) {
+    return new UTF8Decoder(options);
+  };
+
+  //
+  // 10. Legacy single-byte encodings
+  //
+
+  // 10.1 single-byte decoder
+  /**
+   * @constructor
+   * @implements {Decoder}
+   * @param {!Array.<number>} index The encoding index.
+   * @param {{fatal: boolean}} options
+   */
+  function SingleByteDecoder(index, options) {
+    var fatal = options.fatal;
+    /**
+     * @param {Stream} stream The stream of bytes being decoded.
+     * @param {number} bite The next byte read from the stream.
+     * @return {?(number|!Array.<number>)} The next code point(s)
+     *     decoded, or null if not enough data exists in the input
+     *     stream to decode a complete code point.
+     */
+    this.handler = function(stream, bite) {
+      // 1. If byte is end-of-stream, return finished.
+      if (bite === end_of_stream)
+        return finished;
+
+      // 2. If byte is an ASCII byte, return a code point whose value
+      // is byte.
+      if (isASCIIByte(bite))
+        return bite;
+
+      // 3. Let code point be the index code point for byte − 0x80 in
+      // index single-byte.
+      var code_point = index[bite - 0x80];
+
+      // 4. If code point is null, return error.
+      if (code_point === null)
+        return decoderError(fatal);
+
+      // 5. Return a code point whose value is code point.
+      return code_point;
+    };
+  }
+
+  // 10.2 single-byte encoder
+  /**
+   * @constructor
+   * @implements {Encoder}
+   * @param {!Array.<?number>} index The encoding index.
+   * @param {{fatal: boolean}} options
+   */
+  function SingleByteEncoder(index, options) {
+    var fatal = options.fatal;
+    /**
+     * @param {Stream} stream Input stream.
+     * @param {number} code_point Next code point read from the stream.
+     * @return {(number|!Array.<number>)} Byte(s) to emit.
+     */
+    this.handler = function(stream, code_point) {
+      // 1. If code point is end-of-stream, return finished.
+      if (code_point === end_of_stream)
+        return finished;
+
+      // 2. If code point is an ASCII code point, return a byte whose
+      // value is code point.
+      if (isASCIICodePoint(code_point))
+        return code_point;
+
+      // 3. Let pointer be the index pointer for code point in index
+      // single-byte.
+      var pointer = indexPointerFor(code_point, index);
+
+      // 4. If pointer is null, return error with code point.
+      if (pointer === null)
+        encoderError(code_point);
+
+      // 5. Return a byte whose value is pointer + 0x80.
+      return pointer + 0x80;
+    };
+  }
+
+  (function() {
+    if (!('encoding-indexes' in global))
+      return;
+    encodings.forEach(function(category) {
+      if (category.heading !== 'Legacy single-byte encodings')
+        return;
+      category.encodings.forEach(function(encoding) {
+        var name = encoding.name;
+        var idx = index(name.toLowerCase());
+        /** @param {{fatal: boolean}} options */
+        decoders[name] = function(options) {
+          return new SingleByteDecoder(idx, options);
+        };
+        /** @param {{fatal: boolean}} options */
+        encoders[name] = function(options) {
+          return new SingleByteEncoder(idx, options);
+        };
+      });
+    });
+  }());
+
+  //
+  // 11. Legacy multi-byte Chinese (simplified) encodings
+  //
+
+  // 11.1 gbk
+
+  // 11.1.1 gbk decoder
+  // gbk's decoder is gb18030's decoder.
+  /** @param {{fatal: boolean}} options */
+  decoders['GBK'] = function(options) {
+    return new GB18030Decoder(options);
+  };
+
+  // 11.1.2 gbk encoder
+  // gbk's encoder is gb18030's encoder with its gbk flag set.
+  /** @param {{fatal: boolean}} options */
+  encoders['GBK'] = function(options) {
+    return new GB18030Encoder(options, true);
+  };
+
+  // 11.2 gb18030
+
+  // 11.2.1 gb18030 decoder
+  /**
+   * @constructor
+   * @implements {Decoder}
+   * @param {{fatal: boolean}} options
+   */
+  function GB18030Decoder(options) {
+    var fatal = options.fatal;
+    // gb18030's decoder has an associated gb18030 first, gb18030
+    // second, and gb18030 third (all initially 0x00).
+    var /** @type {number} */ gb18030_first = 0x00,
+        /** @type {number} */ gb18030_second = 0x00,
+        /** @type {number} */ gb18030_third = 0x00;
+    /**
+     * @param {Stream} stream The stream of bytes being decoded.
+     * @param {number} bite The next byte read from the stream.
+     * @return {?(number|!Array.<number>)} The next code point(s)
+     *     decoded, or null if not enough data exists in the input
+     *     stream to decode a complete code point.
+     */
+    this.handler = function(stream, bite) {
+      // 1. If byte is end-of-stream and gb18030 first, gb18030
+      // second, and gb18030 third are 0x00, return finished.
+      if (bite === end_of_stream && gb18030_first === 0x00 &&
+          gb18030_second === 0x00 && gb18030_third === 0x00) {
+        return finished;
+      }
+      // 2. If byte is end-of-stream, and gb18030 first, gb18030
+      // second, or gb18030 third is not 0x00, set gb18030 first,
+      // gb18030 second, and gb18030 third to 0x00, and return error.
+      if (bite === end_of_stream &&
+          (gb18030_first !== 0x00 || gb18030_second !== 0x00 ||
+           gb18030_third !== 0x00)) {
+        gb18030_first = 0x00;
+        gb18030_second = 0x00;
+        gb18030_third = 0x00;
+        decoderError(fatal);
+      }
+      var code_point;
+      // 3. If gb18030 third is not 0x00, run these substeps:
+      if (gb18030_third !== 0x00) {
+        // 1. Let code point be null.
+        code_point = null;
+        // 2. If byte is in the range 0x30 to 0x39, inclusive, set
+        // code point to the index gb18030 ranges code point for
+        // (((gb18030 first − 0x81) × 10 + gb18030 second − 0x30) ×
+        // 126 + gb18030 third − 0x81) × 10 + byte − 0x30.
+        if (inRange(bite, 0x30, 0x39)) {
+          code_point = indexGB18030RangesCodePointFor(
+              (((gb18030_first - 0x81) * 10 + gb18030_second - 0x30) * 126 +
+               gb18030_third - 0x81) * 10 + bite - 0x30);
+        }
+
+        // 3. Let buffer be a byte sequence consisting of gb18030
+        // second, gb18030 third, and byte, in order.
+        var buffer = [gb18030_second, gb18030_third, bite];
+
+        // 4. Set gb18030 first, gb18030 second, and gb18030 third to
+        // 0x00.
+        gb18030_first = 0x00;
+        gb18030_second = 0x00;
+        gb18030_third = 0x00;
+
+        // 5. If code point is null, prepend buffer to stream and
+        // return error.
+        if (code_point === null) {
+          stream.prepend(buffer);
+          return decoderError(fatal);
+        }
+
+        // 6. Return a code point whose value is code point.
+        return code_point;
+      }
+
+      // 4. If gb18030 second is not 0x00, run these substeps:
+      if (gb18030_second !== 0x00) {
+
+        // 1. If byte is in the range 0x81 to 0xFE, inclusive, set
+        // gb18030 third to byte and return continue.
+        if (inRange(bite, 0x81, 0xFE)) {
+          gb18030_third = bite;
+          return null;
+        }
+
+        // 2. Prepend gb18030 second followed by byte to stream, set
+        // gb18030 first and gb18030 second to 0x00, and return error.
+        stream.prepend([gb18030_second, bite]);
+        gb18030_first = 0x00;
+        gb18030_second = 0x00;
+        return decoderError(fatal);
+      }
+
+      // 5. If gb18030 first is not 0x00, run these substeps:
+      if (gb18030_first !== 0x00) {
+
+        // 1. If byte is in the range 0x30 to 0x39, inclusive, set
+        // gb18030 second to byte and return continue.
+        if (inRange(bite, 0x30, 0x39)) {
+          gb18030_second = bite;
+          return null;
+        }
+
+        // 2. Let lead be gb18030 first, let pointer be null, and set
+        // gb18030 first to 0x00.
+        var lead = gb18030_first;
+        var pointer = null;
+        gb18030_first = 0x00;
+
+        // 3. Let offset be 0x40 if byte is less than 0x7F and 0x41
+        // otherwise.
+        var offset = bite < 0x7F ? 0x40 : 0x41;
+
+        // 4. If byte is in the range 0x40 to 0x7E, inclusive, or 0x80
+        // to 0xFE, inclusive, set pointer to (lead − 0x81) × 190 +
+        // (byte − offset).
+        if (inRange(bite, 0x40, 0x7E) || inRange(bite, 0x80, 0xFE))
+          pointer = (lead - 0x81) * 190 + (bite - offset);
+
+        // 5. Let code point be null if pointer is null and the index
+        // code point for pointer in index gb18030 otherwise.
+        code_point = pointer === null ? null :
+            indexCodePointFor(pointer, index('gb18030'));
+
+        // 6. If code point is null and byte is an ASCII byte, prepend
+        // byte to stream.
+        if (code_point === null && isASCIIByte(bite))
+          stream.prepend(bite);
+
+        // 7. If code point is null, return error.
+        if (code_point === null)
+          return decoderError(fatal);
+
+        // 8. Return a code point whose value is code point.
+        return code_point;
+      }
+
+      // 6. If byte is an ASCII byte, return a code point whose value
+      // is byte.
+      if (isASCIIByte(bite))
+        return bite;
+
+      // 7. If byte is 0x80, return code point U+20AC.
+      if (bite === 0x80)
+        return 0x20AC;
+
+      // 8. If byte is in the range 0x81 to 0xFE, inclusive, set
+      // gb18030 first to byte and return continue.
+      if (inRange(bite, 0x81, 0xFE)) {
+        gb18030_first = bite;
+        return null;
+      }
+
+      // 9. Return error.
+      return decoderError(fatal);
+    };
+  }
+
+  // 11.2.2 gb18030 encoder
+  /**
+   * @constructor
+   * @implements {Encoder}
+   * @param {{fatal: boolean}} options
+   * @param {boolean=} gbk_flag
+   */
+  function GB18030Encoder(options, gbk_flag) {
+    var fatal = options.fatal;
+    // gb18030's decoder has an associated gbk flag (initially unset).
+    /**
+     * @param {Stream} stream Input stream.
+     * @param {number} code_point Next code point read from the stream.
+     * @return {(number|!Array.<number>)} Byte(s) to emit.
+     */
+    this.handler = function(stream, code_point) {
+      // 1. If code point is end-of-stream, return finished.
+      if (code_point === end_of_stream)
+        return finished;
+
+      // 2. If code point is an ASCII code point, return a byte whose
+      // value is code point.
+      if (isASCIICodePoint(code_point))
+        return code_point;
+
+      // 3. If code point is U+E5E5, return error with code point.
+      if (code_point === 0xE5E5)
+        return encoderError(code_point);
+
+      // 4. If the gbk flag is set and code point is U+20AC, return
+      // byte 0x80.
+      if (gbk_flag && code_point === 0x20AC)
+        return 0x80;
+
+      // 5. Let pointer be the index pointer for code point in index
+      // gb18030.
+      var pointer = indexPointerFor(code_point, index('gb18030'));
+
+      // 6. If pointer is not null, run these substeps:
+      if (pointer !== null) {
+
+        // 1. Let lead be floor(pointer / 190) + 0x81.
+        var lead = floor(pointer / 190) + 0x81;
+
+        // 2. Let trail be pointer % 190.
+        var trail = pointer % 190;
+
+        // 3. Let offset be 0x40 if trail is less than 0x3F and 0x41 otherwise.
+        var offset = trail < 0x3F ? 0x40 : 0x41;
+
+        // 4. Return two bytes whose values are lead and trail + offset.
+        return [lead, trail + offset];
+      }
+
+      // 7. If gbk flag is set, return error with code point.
+      if (gbk_flag)
+        return encoderError(code_point);
+
+      // 8. Set pointer to the index gb18030 ranges pointer for code
+      // point.
+      pointer = indexGB18030RangesPointerFor(code_point);
+
+      // 9. Let byte1 be floor(pointer / 10 / 126 / 10).
+      var byte1 = floor(pointer / 10 / 126 / 10);
+
+      // 10. Set pointer to pointer − byte1 × 10 × 126 × 10.
+      pointer = pointer - byte1 * 10 * 126 * 10;
+
+      // 11. Let byte2 be floor(pointer / 10 / 126).
+      var byte2 = floor(pointer / 10 / 126);
+
+      // 12. Set pointer to pointer − byte2 × 10 × 126.
+      pointer = pointer - byte2 * 10 * 126;
+
+      // 13. Let byte3 be floor(pointer / 10).
+      var byte3 = floor(pointer / 10);
+
+      // 14. Let byte4 be pointer − byte3 × 10.
+      var byte4 = pointer - byte3 * 10;
+
+      // 15. Return four bytes whose values are byte1 + 0x81, byte2 +
+      // 0x30, byte3 + 0x81, byte4 + 0x30.
+      return [byte1 + 0x81,
+              byte2 + 0x30,
+              byte3 + 0x81,
+              byte4 + 0x30];
+    };
+  }
+
+  /** @param {{fatal: boolean}} options */
+  encoders['gb18030'] = function(options) {
+    return new GB18030Encoder(options);
+  };
+  /** @param {{fatal: boolean}} options */
+  decoders['gb18030'] = function(options) {
+    return new GB18030Decoder(options);
+  };
+
+
+  //
+  // 12. Legacy multi-byte Chinese (traditional) encodings
+  //
+
+  // 12.1 Big5
+
+  // 12.1.1 Big5 decoder
+  /**
+   * @constructor
+   * @implements {Decoder}
+   * @param {{fatal: boolean}} options
+   */
+  function Big5Decoder(options) {
+    var fatal = options.fatal;
+    // Big5's decoder has an associated Big5 lead (initially 0x00).
+    var /** @type {number} */ Big5_lead = 0x00;
+
+    /**
+     * @param {Stream} stream The stream of bytes being decoded.
+     * @param {number} bite The next byte read from the stream.
+     * @return {?(number|!Array.<number>)} The next code point(s)
+     *     decoded, or null if not enough data exists in the input
+     *     stream to decode a complete code point.
+     */
+    this.handler = function(stream, bite) {
+      // 1. If byte is end-of-stream and Big5 lead is not 0x00, set
+      // Big5 lead to 0x00 and return error.
+      if (bite === end_of_stream && Big5_lead !== 0x00) {
+        Big5_lead = 0x00;
+        return decoderError(fatal);
+      }
+
+      // 2. If byte is end-of-stream and Big5 lead is 0x00, return
+      // finished.
+      if (bite === end_of_stream && Big5_lead === 0x00)
+        return finished;
+
+      // 3. If Big5 lead is not 0x00, let lead be Big5 lead, let
+      // pointer be null, set Big5 lead to 0x00, and then run these
+      // substeps:
+      if (Big5_lead !== 0x00) {
+        var lead = Big5_lead;
+        var pointer = null;
+        Big5_lead = 0x00;
+
+        // 1. Let offset be 0x40 if byte is less than 0x7F and 0x62
+        // otherwise.
+        var offset = bite < 0x7F ? 0x40 : 0x62;
+
+        // 2. If byte is in the range 0x40 to 0x7E, inclusive, or 0xA1
+        // to 0xFE, inclusive, set pointer to (lead − 0x81) × 157 +
+        // (byte − offset).
+        if (inRange(bite, 0x40, 0x7E) || inRange(bite, 0xA1, 0xFE))
+          pointer = (lead - 0x81) * 157 + (bite - offset);
+
+        // 3. If there is a row in the table below whose first column
+        // is pointer, return the two code points listed in its second
+        // column
+        // Pointer | Code points
+        // --------+--------------
+        // 1133    | U+00CA U+0304
+        // 1135    | U+00CA U+030C
+        // 1164    | U+00EA U+0304
+        // 1166    | U+00EA U+030C
+        switch (pointer) {
+          case 1133: return [0x00CA, 0x0304];
+          case 1135: return [0x00CA, 0x030C];
+          case 1164: return [0x00EA, 0x0304];
+          case 1166: return [0x00EA, 0x030C];
+        }
+
+        // 4. Let code point be null if pointer is null and the index
+        // code point for pointer in index Big5 otherwise.
+        var code_point = (pointer === null) ? null :
+            indexCodePointFor(pointer, index('big5'));
+
+        // 5. If code point is null and byte is an ASCII byte, prepend
+        // byte to stream.
+        if (code_point === null && isASCIIByte(bite))
+          stream.prepend(bite);
+
+        // 6. If code point is null, return error.
+        if (code_point === null)
+          return decoderError(fatal);
+
+        // 7. Return a code point whose value is code point.
+        return code_point;
+      }
+
+      // 4. If byte is an ASCII byte, return a code point whose value
+      // is byte.
+      if (isASCIIByte(bite))
+        return bite;
+
+      // 5. If byte is in the range 0x81 to 0xFE, inclusive, set Big5
+      // lead to byte and return continue.
+      if (inRange(bite, 0x81, 0xFE)) {
+        Big5_lead = bite;
+        return null;
+      }
+
+      // 6. Return error.
+      return decoderError(fatal);
+    };
+  }
+
+  // 12.1.2 Big5 encoder
+  /**
+   * @constructor
+   * @implements {Encoder}
+   * @param {{fatal: boolean}} options
+   */
+  function Big5Encoder(options) {
+    var fatal = options.fatal;
+    /**
+     * @param {Stream} stream Input stream.
+     * @param {number} code_point Next code point read from the stream.
+     * @return {(number|!Array.<number>)} Byte(s) to emit.
+     */
+    this.handler = function(stream, code_point) {
+      // 1. If code point is end-of-stream, return finished.
+      if (code_point === end_of_stream)
+        return finished;
+
+      // 2. If code point is an ASCII code point, return a byte whose
+      // value is code point.
+      if (isASCIICodePoint(code_point))
+        return code_point;
+
+      // 3. Let pointer be the index Big5 pointer for code point.
+      var pointer = indexBig5PointerFor(code_point);
+
+      // 4. If pointer is null, return error with code point.
+      if (pointer === null)
+        return encoderError(code_point);
+
+      // 5. Let lead be floor(pointer / 157) + 0x81.
+      var lead = floor(pointer / 157) + 0x81;
+
+      // 6. If lead is less than 0xA1, return error with code point.
+      if (lead < 0xA1)
+        return encoderError(code_point);
+
+      // 7. Let trail be pointer % 157.
+      var trail = pointer % 157;
+
+      // 8. Let offset be 0x40 if trail is less than 0x3F and 0x62
+      // otherwise.
+      var offset = trail < 0x3F ? 0x40 : 0x62;
+
+      // Return two bytes whose values are lead and trail + offset.
+      return [lead, trail + offset];
+    };
+  }
+
+  /** @param {{fatal: boolean}} options */
+  encoders['Big5'] = function(options) {
+    return new Big5Encoder(options);
+  };
+  /** @param {{fatal: boolean}} options */
+  decoders['Big5'] = function(options) {
+    return new Big5Decoder(options);
+  };
+
+
+  //
+  // 13. Legacy multi-byte Japanese encodings
+  //
+
+  // 13.1 euc-jp
+
+  // 13.1.1 euc-jp decoder
+  /**
+   * @constructor
+   * @implements {Decoder}
+   * @param {{fatal: boolean}} options
+   */
+  function EUCJPDecoder(options) {
+    var fatal = options.fatal;
+
+    // euc-jp's decoder has an associated euc-jp jis0212 flag
+    // (initially unset) and euc-jp lead (initially 0x00).
+    var /** @type {boolean} */ eucjp_jis0212_flag = false,
+        /** @type {number} */ eucjp_lead = 0x00;
+
+    /**
+     * @param {Stream} stream The stream of bytes being decoded.
+     * @param {number} bite The next byte read from the stream.
+     * @return {?(number|!Array.<number>)} The next code point(s)
+     *     decoded, or null if not enough data exists in the input
+     *     stream to decode a complete code point.
+     */
+    this.handler = function(stream, bite) {
+      // 1. If byte is end-of-stream and euc-jp lead is not 0x00, set
+      // euc-jp lead to 0x00, and return error.
+      if (bite === end_of_stream && eucjp_lead !== 0x00) {
+        eucjp_lead = 0x00;
+        return decoderError(fatal);
+      }
+
+      // 2. If byte is end-of-stream and euc-jp lead is 0x00, return
+      // finished.
+      if (bite === end_of_stream && eucjp_lead === 0x00)
+        return finished;
+
+      // 3. If euc-jp lead is 0x8E and byte is in the range 0xA1 to
+      // 0xDF, inclusive, set euc-jp lead to 0x00 and return a code
+      // point whose value is 0xFF61 − 0xA1 + byte.
+      if (eucjp_lead === 0x8E && inRange(bite, 0xA1, 0xDF)) {
+        eucjp_lead = 0x00;
+        return 0xFF61 - 0xA1 + bite;
+      }
+
+      // 4. If euc-jp lead is 0x8F and byte is in the range 0xA1 to
+      // 0xFE, inclusive, set the euc-jp jis0212 flag, set euc-jp lead
+      // to byte, and return continue.
+      if (eucjp_lead === 0x8F && inRange(bite, 0xA1, 0xFE)) {
+        eucjp_jis0212_flag = true;
+        eucjp_lead = bite;
+        return null;
+      }
+
+      // 5. If euc-jp lead is not 0x00, let lead be euc-jp lead, set
+      // euc-jp lead to 0x00, and run these substeps:
+      if (eucjp_lead !== 0x00) {
+        var lead = eucjp_lead;
+        eucjp_lead = 0x00;
+
+        // 1. Let code point be null.
+        var code_point = null;
+
+        // 2. If lead and byte are both in the range 0xA1 to 0xFE,
+        // inclusive, set code point to the index code point for (lead
+        // − 0xA1) × 94 + byte − 0xA1 in index jis0208 if the euc-jp
+        // jis0212 flag is unset and in index jis0212 otherwise.
+        if (inRange(lead, 0xA1, 0xFE) && inRange(bite, 0xA1, 0xFE)) {
+          code_point = indexCodePointFor(
+            (lead - 0xA1) * 94 + (bite - 0xA1),
+            index(!eucjp_jis0212_flag ? 'jis0208' : 'jis0212'));
+        }
+
+        // 3. Unset the euc-jp jis0212 flag.
+        eucjp_jis0212_flag = false;
+
+        // 4. If byte is not in the range 0xA1 to 0xFE, inclusive,
+        // prepend byte to stream.
+        if (!inRange(bite, 0xA1, 0xFE))
+          stream.prepend(bite);
+
+        // 5. If code point is null, return error.
+        if (code_point === null)
+          return decoderError(fatal);
+
+        // 6. Return a code point whose value is code point.
+        return code_point;
+      }
+
+      // 6. If byte is an ASCII byte, return a code point whose value
+      // is byte.
+      if (isASCIIByte(bite))
+        return bite;
+
+      // 7. If byte is 0x8E, 0x8F, or in the range 0xA1 to 0xFE,
+      // inclusive, set euc-jp lead to byte and return continue.
+      if (bite === 0x8E || bite === 0x8F || inRange(bite, 0xA1, 0xFE)) {
+        eucjp_lead = bite;
+        return null;
+      }
+
+      // 8. Return error.
+      return decoderError(fatal);
+    };
+  }
+
+  // 13.1.2 euc-jp encoder
+  /**
+   * @constructor
+   * @implements {Encoder}
+   * @param {{fatal: boolean}} options
+   */
+  function EUCJPEncoder(options) {
+    var fatal = options.fatal;
+    /**
+     * @param {Stream} stream Input stream.
+     * @param {number} code_point Next code point read from the stream.
+     * @return {(number|!Array.<number>)} Byte(s) to emit.
+     */
+    this.handler = function(stream, code_point) {
+      // 1. If code point is end-of-stream, return finished.
+      if (code_point === end_of_stream)
+        return finished;
+
+      // 2. If code point is an ASCII code point, return a byte whose
+      // value is code point.
+      if (isASCIICodePoint(code_point))
+        return code_point;
+
+      // 3. If code point is U+00A5, return byte 0x5C.
+      if (code_point === 0x00A5)
+        return 0x5C;
+
+      // 4. If code point is U+203E, return byte 0x7E.
+      if (code_point === 0x203E)
+        return 0x7E;
+
+      // 5. If code point is in the range U+FF61 to U+FF9F, inclusive,
+      // return two bytes whose values are 0x8E and code point −
+      // 0xFF61 + 0xA1.
+      if (inRange(code_point, 0xFF61, 0xFF9F))
+        return [0x8E, code_point - 0xFF61 + 0xA1];
+
+      // 6. If code point is U+2212, set it to U+FF0D.
+      if (code_point === 0x2212)
+        code_point = 0xFF0D;
+
+      // 7. Let pointer be the index pointer for code point in index
+      // jis0208.
+      var pointer = indexPointerFor(code_point, index('jis0208'));
+
+      // 8. If pointer is null, return error with code point.
+      if (pointer === null)
+        return encoderError(code_point);
+
+      // 9. Let lead be floor(pointer / 94) + 0xA1.
+      var lead = floor(pointer / 94) + 0xA1;
+
+      // 10. Let trail be pointer % 94 + 0xA1.
+      var trail = pointer % 94 + 0xA1;
+
+      // 11. Return two bytes whose values are lead and trail.
+      return [lead, trail];
+    };
+  }
+
+  /** @param {{fatal: boolean}} options */
+  encoders['EUC-JP'] = function(options) {
+    return new EUCJPEncoder(options);
+  };
+  /** @param {{fatal: boolean}} options */
+  decoders['EUC-JP'] = function(options) {
+    return new EUCJPDecoder(options);
+  };
+
+  // 13.2 iso-2022-jp
+
+  // 13.2.1 iso-2022-jp decoder
+  /**
+   * @constructor
+   * @implements {Decoder}
+   * @param {{fatal: boolean}} options
+   */
+  function ISO2022JPDecoder(options) {
+    var fatal = options.fatal;
+    /** @enum */
+    var states = {
+      ASCII: 0,
+      Roman: 1,
+      Katakana: 2,
+      LeadByte: 3,
+      TrailByte: 4,
+      EscapeStart: 5,
+      Escape: 6
+    };
+    // iso-2022-jp's decoder has an associated iso-2022-jp decoder
+    // state (initially ASCII), iso-2022-jp decoder output state
+    // (initially ASCII), iso-2022-jp lead (initially 0x00), and
+    // iso-2022-jp output flag (initially unset).
+    var /** @type {number} */ iso2022jp_decoder_state = states.ASCII,
+        /** @type {number} */ iso2022jp_decoder_output_state = states.ASCII,
+        /** @type {number} */ iso2022jp_lead = 0x00,
+        /** @type {boolean} */ iso2022jp_output_flag = false;
+    /**
+     * @param {Stream} stream The stream of bytes being decoded.
+     * @param {number} bite The next byte read from the stream.
+     * @return {?(number|!Array.<number>)} The next code point(s)
+     *     decoded, or null if not enough data exists in the input
+     *     stream to decode a complete code point.
+     */
+    this.handler = function(stream, bite) {
+      // switching on iso-2022-jp decoder state:
+      switch (iso2022jp_decoder_state) {
+      default:
+      case states.ASCII:
+        // ASCII
+        // Based on byte:
+
+        // 0x1B
+        if (bite === 0x1B) {
+          // Set iso-2022-jp decoder state to escape start and return
+          // continue.
+          iso2022jp_decoder_state = states.EscapeStart;
+          return null;
+        }
+
+        // 0x00 to 0x7F, excluding 0x0E, 0x0F, and 0x1B
+        if (inRange(bite, 0x00, 0x7F) && bite !== 0x0E
+            && bite !== 0x0F && bite !== 0x1B) {
+          // Unset the iso-2022-jp output flag and return a code point
+          // whose value is byte.
+          iso2022jp_output_flag = false;
+          return bite;
+        }
+
+        // end-of-stream
+        if (bite === end_of_stream) {
+          // Return finished.
+          return finished;
+        }
+
+        // Otherwise
+        // Unset the iso-2022-jp output flag and return error.
+        iso2022jp_output_flag = false;
+        return decoderError(fatal);
+
+      case states.Roman:
+        // Roman
+        // Based on byte:
+
+        // 0x1B
+        if (bite === 0x1B) {
+          // Set iso-2022-jp decoder state to escape start and return
+          // continue.
+          iso2022jp_decoder_state = states.EscapeStart;
+          return null;
+        }
+
+        // 0x5C
+        if (bite === 0x5C) {
+          // Unset the iso-2022-jp output flag and return code point
+          // U+00A5.
+          iso2022jp_output_flag = false;
+          return 0x00A5;
+        }
+
+        // 0x7E
+        if (bite === 0x7E) {
+          // Unset the iso-2022-jp output flag and return code point
+          // U+203E.
+          iso2022jp_output_flag = false;
+          return 0x203E;
+        }
+
+        // 0x00 to 0x7F, excluding 0x0E, 0x0F, 0x1B, 0x5C, and 0x7E
+        if (inRange(bite, 0x00, 0x7F) && bite !== 0x0E && bite !== 0x0F
+            && bite !== 0x1B && bite !== 0x5C && bite !== 0x7E) {
+          // Unset the iso-2022-jp output flag and return a code point
+          // whose value is byte.
+          iso2022jp_output_flag = false;
+          return bite;
+        }
+
+        // end-of-stream
+        if (bite === end_of_stream) {
+          // Return finished.
+          return finished;
+        }
+
+        // Otherwise
+        // Unset the iso-2022-jp output flag and return error.
+        iso2022jp_output_flag = false;
+        return decoderError(fatal);
+
+      case states.Katakana:
+        // Katakana
+        // Based on byte:
+
+        // 0x1B
+        if (bite === 0x1B) {
+          // Set iso-2022-jp decoder state to escape start and return
+          // continue.
+          iso2022jp_decoder_state = states.EscapeStart;
+          return null;
+        }
+
+        // 0x21 to 0x5F
+        if (inRange(bite, 0x21, 0x5F)) {
+          // Unset the iso-2022-jp output flag and return a code point
+          // whose value is 0xFF61 − 0x21 + byte.
+          iso2022jp_output_flag = false;
+          return 0xFF61 - 0x21 + bite;
+        }
+
+        // end-of-stream
+        if (bite === end_of_stream) {
+          // Return finished.
+          return finished;
+        }
+
+        // Otherwise
+        // Unset the iso-2022-jp output flag and return error.
+        iso2022jp_output_flag = false;
+        return decoderError(fatal);
+
+      case states.LeadByte:
+        // Lead byte
+        // Based on byte:
+
+        // 0x1B
+        if (bite === 0x1B) {
+          // Set iso-2022-jp decoder state to escape start and return
+          // continue.
+          iso2022jp_decoder_state = states.EscapeStart;
+          return null;
+        }
+
+        // 0x21 to 0x7E
+        if (inRange(bite, 0x21, 0x7E)) {
+          // Unset the iso-2022-jp output flag, set iso-2022-jp lead
+          // to byte, iso-2022-jp decoder state to trail byte, and
+          // return continue.
+          iso2022jp_output_flag = false;
+          iso2022jp_lead = bite;
+          iso2022jp_decoder_state = states.TrailByte;
+          return null;
+        }
+
+        // end-of-stream
+        if (bite === end_of_stream) {
+          // Return finished.
+          return finished;
+        }
+
+        // Otherwise
+        // Unset the iso-2022-jp output flag and return error.
+        iso2022jp_output_flag = false;
+        return decoderError(fatal);
+
+      case states.TrailByte:
+        // Trail byte
+        // Based on byte:
+
+        // 0x1B
+        if (bite === 0x1B) {
+          // Set iso-2022-jp decoder state to escape start and return
+          // continue.
+          iso2022jp_decoder_state = states.EscapeStart;
+          return decoderError(fatal);
+        }
+
+        // 0x21 to 0x7E
+        if (inRange(bite, 0x21, 0x7E)) {
+          // 1. Set the iso-2022-jp decoder state to lead byte.
+          iso2022jp_decoder_state = states.LeadByte;
+
+          // 2. Let pointer be (iso-2022-jp lead − 0x21) × 94 + byte − 0x21.
+          var pointer = (iso2022jp_lead - 0x21) * 94 + bite - 0x21;
+
+          // 3. Let code point be the index code point for pointer in
+          // index jis0208.
+          var code_point = indexCodePointFor(pointer, index('jis0208'));
+
+          // 4. If code point is null, return error.
+          if (code_point === null)
+            return decoderError(fatal);
+
+          // 5. Return a code point whose value is code point.
+          return code_point;
+        }
+
+        // end-of-stream
+        if (bite === end_of_stream) {
+          // Set the iso-2022-jp decoder state to lead byte, prepend
+          // byte to stream, and return error.
+          iso2022jp_decoder_state = states.LeadByte;
+          stream.prepend(bite);
+          return decoderError(fatal);
+        }
+
+        // Otherwise
+        // Set iso-2022-jp decoder state to lead byte and return
+        // error.
+        iso2022jp_decoder_state = states.LeadByte;
+        return decoderError(fatal);
+
+      case states.EscapeStart:
+        // Escape start
+
+        // 1. If byte is either 0x24 or 0x28, set iso-2022-jp lead to
+        // byte, iso-2022-jp decoder state to escape, and return
+        // continue.
+        if (bite === 0x24 || bite === 0x28) {
+          iso2022jp_lead = bite;
+          iso2022jp_decoder_state = states.Escape;
+          return null;
+        }
+
+        // 2. Prepend byte to stream.
+        stream.prepend(bite);
+
+        // 3. Unset the iso-2022-jp output flag, set iso-2022-jp
+        // decoder state to iso-2022-jp decoder output state, and
+        // return error.
+        iso2022jp_output_flag = false;
+        iso2022jp_decoder_state = iso2022jp_decoder_output_state;
+        return decoderError(fatal);
+
+      case states.Escape:
+        // Escape
+
+        // 1. Let lead be iso-2022-jp lead and set iso-2022-jp lead to
+        // 0x00.
+        var lead = iso2022jp_lead;
+        iso2022jp_lead = 0x00;
+
+        // 2. Let state be null.
+        var state = null;
+
+        // 3. If lead is 0x28 and byte is 0x42, set state to ASCII.
+        if (lead === 0x28 && bite === 0x42)
+          state = states.ASCII;
+
+        // 4. If lead is 0x28 and byte is 0x4A, set state to Roman.
+        if (lead === 0x28 && bite === 0x4A)
+          state = states.Roman;
+
+        // 5. If lead is 0x28 and byte is 0x49, set state to Katakana.
+        if (lead === 0x28 && bite === 0x49)
+          state = states.Katakana;
+
+        // 6. If lead is 0x24 and byte is either 0x40 or 0x42, set
+        // state to lead byte.
+        if (lead === 0x24 && (bite === 0x40 || bite === 0x42))
+          state = states.LeadByte;
+
+        // 7. If state is non-null, run these substeps:
+        if (state !== null) {
+          // 1. Set iso-2022-jp decoder state and iso-2022-jp decoder
+          // output state to states.
+          iso2022jp_decoder_state = iso2022jp_decoder_state = state;
+
+          // 2. Let output flag be the iso-2022-jp output flag.
+          var output_flag = iso2022jp_output_flag;
+
+          // 3. Set the iso-2022-jp output flag.
+          iso2022jp_output_flag = true;
+
+          // 4. Return continue, if output flag is unset, and error
+          // otherwise.
+          return !output_flag ? null : decoderError(fatal);
+        }
+
+        // 8. Prepend lead and byte to stream.
+        stream.prepend([lead, bite]);
+
+        // 9. Unset the iso-2022-jp output flag, set iso-2022-jp
+        // decoder state to iso-2022-jp decoder output state and
+        // return error.
+        iso2022jp_output_flag = false;
+        iso2022jp_decoder_state = iso2022jp_decoder_output_state;
+        return decoderError(fatal);
+      }
+    };
+  }
+
+  // 13.2.2 iso-2022-jp encoder
+  /**
+   * @constructor
+   * @implements {Encoder}
+   * @param {{fatal: boolean}} options
+   */
+  function ISO2022JPEncoder(options) {
+    var fatal = options.fatal;
+    // iso-2022-jp's encoder has an associated iso-2022-jp encoder
+    // state which is one of ASCII, Roman, and jis0208 (initially
+    // ASCII).
+    /** @enum */
+    var states = {
+      ASCII: 0,
+      Roman: 1,
+      jis0208: 2
+    };
+    var /** @type {number} */ iso2022jp_state = states.ASCII;
+    /**
+     * @param {Stream} stream Input stream.
+     * @param {number} code_point Next code point read from the stream.
+     * @return {(number|!Array.<number>)} Byte(s) to emit.
+     */
+    this.handler = function(stream, code_point) {
+      // 1. If code point is end-of-stream and iso-2022-jp encoder
+      // state is not ASCII, prepend code point to stream, set
+      // iso-2022-jp encoder state to ASCII, and return three bytes
+      // 0x1B 0x28 0x42.
+      if (code_point === end_of_stream &&
+          iso2022jp_state !== states.ASCII) {
+        stream.prepend(code_point);
+        iso2022jp_state = states.ASCII;
+        return [0x1B, 0x28, 0x42];
+      }
+
+      // 2. If code point is end-of-stream and iso-2022-jp encoder
+      // state is ASCII, return finished.
+      if (code_point === end_of_stream && iso2022jp_state === states.ASCII)
+        return finished;
+
+      // 3. If ISO-2022-JP encoder state is ASCII or Roman, and code
+      // point is U+000E, U+000F, or U+001B, return error with U+FFFD.
+      if ((iso2022jp_state === states.ASCII ||
+           iso2022jp_state === states.Roman) &&
+          (code_point === 0x000E || code_point === 0x000F ||
+           code_point === 0x001B)) {
+        return encoderError(0xFFFD);
+      }
+
+      // 4. If iso-2022-jp encoder state is ASCII and code point is an
+      // ASCII code point, return a byte whose value is code point.
+      if (iso2022jp_state === states.ASCII &&
+          isASCIICodePoint(code_point))
+        return code_point;
+
+      // 5. If iso-2022-jp encoder state is Roman and code point is an
+      // ASCII code point, excluding U+005C and U+007E, or is U+00A5
+      // or U+203E, run these substeps:
+      if (iso2022jp_state === states.Roman &&
+          ((isASCIICodePoint(code_point) &&
+           code_point !== 0x005C && code_point !== 0x007E) ||
+          (code_point == 0x00A5 || code_point == 0x203E))) {
+
+        // 1. If code point is an ASCII code point, return a byte
+        // whose value is code point.
+        if (isASCIICodePoint(code_point))
+          return code_point;
+
+        // 2. If code point is U+00A5, return byte 0x5C.
+        if (code_point === 0x00A5)
+          return 0x5C;
+
+        // 3. If code point is U+203E, return byte 0x7E.
+        if (code_point === 0x203E)
+          return 0x7E;
+      }
+
+      // 6. If code point is an ASCII code point, and iso-2022-jp
+      // encoder state is not ASCII, prepend code point to stream, set
+      // iso-2022-jp encoder state to ASCII, and return three bytes
+      // 0x1B 0x28 0x42.
+      if (isASCIICodePoint(code_point) &&
+          iso2022jp_state !== states.ASCII) {
+        stream.prepend(code_point);
+        iso2022jp_state = states.ASCII;
+        return [0x1B, 0x28, 0x42];
+      }
+
+      // 7. If code point is either U+00A5 or U+203E, and iso-2022-jp
+      // encoder state is not Roman, prepend code point to stream, set
+      // iso-2022-jp encoder state to Roman, and return three bytes
+      // 0x1B 0x28 0x4A.
+      if ((code_point === 0x00A5 || code_point === 0x203E) &&
+          iso2022jp_state !== states.Roman) {
+        stream.prepend(code_point);
+        iso2022jp_state = states.Roman;
+        return [0x1B, 0x28, 0x4A];
+      }
+
+      // 8. If code point is U+2212, set it to U+FF0D.
+      if (code_point === 0x2212)
+        code_point = 0xFF0D;
+
+      // 9. Let pointer be the index pointer for code point in index
+      // jis0208.
+      var pointer = indexPointerFor(code_point, index('jis0208'));
+
+      // 10. If pointer is null, return error with code point.
+      if (pointer === null)
+        return encoderError(code_point);
+
+      // 11. If iso-2022-jp encoder state is not jis0208, prepend code
+      // point to stream, set iso-2022-jp encoder state to jis0208,
+      // and return three bytes 0x1B 0x24 0x42.
+      if (iso2022jp_state !== states.jis0208) {
+        stream.prepend(code_point);
+        iso2022jp_state = states.jis0208;
+        return [0x1B, 0x24, 0x42];
+      }
+
+      // 12. Let lead be floor(pointer / 94) + 0x21.
+      var lead = floor(pointer / 94) + 0x21;
+
+      // 13. Let trail be pointer % 94 + 0x21.
+      var trail = pointer % 94 + 0x21;
+
+      // 14. Return two bytes whose values are lead and trail.
+      return [lead, trail];
+    };
+  }
+
+  /** @param {{fatal: boolean}} options */
+  encoders['ISO-2022-JP'] = function(options) {
+    return new ISO2022JPEncoder(options);
+  };
+  /** @param {{fatal: boolean}} options */
+  decoders['ISO-2022-JP'] = function(options) {
+    return new ISO2022JPDecoder(options);
+  };
+
+  // 13.3 Shift_JIS
+
+  // 13.3.1 Shift_JIS decoder
+  /**
+   * @constructor
+   * @implements {Decoder}
+   * @param {{fatal: boolean}} options
+   */
+  function ShiftJISDecoder(options) {
+    var fatal = options.fatal;
+    // Shift_JIS's decoder has an associated Shift_JIS lead (initially
+    // 0x00).
+    var /** @type {number} */ Shift_JIS_lead = 0x00;
+    /**
+     * @param {Stream} stream The stream of bytes being decoded.
+     * @param {number} bite The next byte read from the stream.
+     * @return {?(number|!Array.<number>)} The next code point(s)
+     *     decoded, or null if not enough data exists in the input
+     *     stream to decode a complete code point.
+     */
+    this.handler = function(stream, bite) {
+      // 1. If byte is end-of-stream and Shift_JIS lead is not 0x00,
+      // set Shift_JIS lead to 0x00 and return error.
+      if (bite === end_of_stream && Shift_JIS_lead !== 0x00) {
+        Shift_JIS_lead = 0x00;
+        return decoderError(fatal);
+      }
+
+      // 2. If byte is end-of-stream and Shift_JIS lead is 0x00,
+      // return finished.
+      if (bite === end_of_stream && Shift_JIS_lead === 0x00)
+        return finished;
+
+      // 3. If Shift_JIS lead is not 0x00, let lead be Shift_JIS lead,
+      // let pointer be null, set Shift_JIS lead to 0x00, and then run
+      // these substeps:
+      if (Shift_JIS_lead !== 0x00) {
+        var lead = Shift_JIS_lead;
+        var pointer = null;
+        Shift_JIS_lead = 0x00;
+
+        // 1. Let offset be 0x40, if byte is less than 0x7F, and 0x41
+        // otherwise.
+        var offset = (bite < 0x7F) ? 0x40 : 0x41;
+
+        // 2. Let lead offset be 0x81, if lead is less than 0xA0, and
+        // 0xC1 otherwise.
+        var lead_offset = (lead < 0xA0) ? 0x81 : 0xC1;
+
+        // 3. If byte is in the range 0x40 to 0x7E, inclusive, or 0x80
+        // to 0xFC, inclusive, set pointer to (lead − lead offset) ×
+        // 188 + byte − offset.
+        if (inRange(bite, 0x40, 0x7E) || inRange(bite, 0x80, 0xFC))
+          pointer = (lead - lead_offset) * 188 + bite - offset;
+
+        // 4. If pointer is in the range 8836 to 10715, inclusive,
+        // return a code point whose value is 0xE000 − 8836 + pointer.
+        if (inRange(pointer, 8836, 10715))
+          return 0xE000 - 8836 + pointer;
+
+        // 5. Let code point be null, if pointer is null, and the
+        // index code point for pointer in index jis0208 otherwise.
+        var code_point = (pointer === null) ? null :
+              indexCodePointFor(pointer, index('jis0208'));
+
+        // 6. If code point is null and byte is an ASCII byte, prepend
+        // byte to stream.
+        if (code_point === null && isASCIIByte(bite))
+          stream.prepend(bite);
+
+        // 7. If code point is null, return error.
+        if (code_point === null)
+          return decoderError(fatal);
+
+        // 8. Return a code point whose value is code point.
+        return code_point;
+      }
+
+      // 4. If byte is an ASCII byte or 0x80, return a code point
+      // whose value is byte.
+      if (isASCIIByte(bite) || bite === 0x80)
+        return bite;
+
+      // 5. If byte is in the range 0xA1 to 0xDF, inclusive, return a
+      // code point whose value is 0xFF61 − 0xA1 + byte.
+      if (inRange(bite, 0xA1, 0xDF))
+        return 0xFF61 - 0xA1 + bite;
+
+      // 6. If byte is in the range 0x81 to 0x9F, inclusive, or 0xE0
+      // to 0xFC, inclusive, set Shift_JIS lead to byte and return
+      // continue.
+      if (inRange(bite, 0x81, 0x9F) || inRange(bite, 0xE0, 0xFC)) {
+        Shift_JIS_lead = bite;
+        return null;
+      }
+
+      // 7. Return error.
+      return decoderError(fatal);
+    };
+  }
+
+  // 13.3.2 Shift_JIS encoder
+  /**
+   * @constructor
+   * @implements {Encoder}
+   * @param {{fatal: boolean}} options
+   */
+  function ShiftJISEncoder(options) {
+    var fatal = options.fatal;
+    /**
+     * @param {Stream} stream Input stream.
+     * @param {number} code_point Next code point read from the stream.
+     * @return {(number|!Array.<number>)} Byte(s) to emit.
+     */
+    this.handler = function(stream, code_point) {
+      // 1. If code point is end-of-stream, return finished.
+      if (code_point === end_of_stream)
+        return finished;
+
+      // 2. If code point is an ASCII code point or U+0080, return a
+      // byte whose value is code point.
+      if (isASCIICodePoint(code_point) || code_point === 0x0080)
+        return code_point;
+
+      // 3. If code point is U+00A5, return byte 0x5C.
+      if (code_point === 0x00A5)
+        return 0x5C;
+
+      // 4. If code point is U+203E, return byte 0x7E.
+      if (code_point === 0x203E)
+        return 0x7E;
+
+      // 5. If code point is in the range U+FF61 to U+FF9F, inclusive,
+      // return a byte whose value is code point − 0xFF61 + 0xA1.
+      if (inRange(code_point, 0xFF61, 0xFF9F))
+        return code_point - 0xFF61 + 0xA1;
+
+      // 6. If code point is U+2212, set it to U+FF0D.
+      if (code_point === 0x2212)
+        code_point = 0xFF0D;
+
+      // 7. Let pointer be the index Shift_JIS pointer for code point.
+      var pointer = indexShiftJISPointerFor(code_point);
+
+      // 8. If pointer is null, return error with code point.
+      if (pointer === null)
+        return encoderError(code_point);
+
+      // 9. Let lead be floor(pointer / 188).
+      var lead = floor(pointer / 188);
+
+      // 10. Let lead offset be 0x81, if lead is less than 0x1F, and
+      // 0xC1 otherwise.
+      var lead_offset = (lead < 0x1F) ? 0x81 : 0xC1;
+
+      // 11. Let trail be pointer % 188.
+      var trail = pointer % 188;
+
+      // 12. Let offset be 0x40, if trail is less than 0x3F, and 0x41
+      // otherwise.
+      var offset = (trail < 0x3F) ? 0x40 : 0x41;
+
+      // 13. Return two bytes whose values are lead + lead offset and
+      // trail + offset.
+      return [lead + lead_offset, trail + offset];
+    };
+  }
+
+  /** @param {{fatal: boolean}} options */
+  encoders['Shift_JIS'] = function(options) {
+    return new ShiftJISEncoder(options);
+  };
+  /** @param {{fatal: boolean}} options */
+  decoders['Shift_JIS'] = function(options) {
+    return new ShiftJISDecoder(options);
+  };
+
+  //
+  // 14. Legacy multi-byte Korean encodings
+  //
+
+  // 14.1 euc-kr
+
+  // 14.1.1 euc-kr decoder
+  /**
+   * @constructor
+   * @implements {Decoder}
+   * @param {{fatal: boolean}} options
+   */
+  function EUCKRDecoder(options) {
+    var fatal = options.fatal;
+
+    // euc-kr's decoder has an associated euc-kr lead (initially 0x00).
+    var /** @type {number} */ euckr_lead = 0x00;
+    /**
+     * @param {Stream} stream The stream of bytes being decoded.
+     * @param {number} bite The next byte read from the stream.
+     * @return {?(number|!Array.<number>)} The next code point(s)
+     *     decoded, or null if not enough data exists in the input
+     *     stream to decode a complete code point.
+     */
+    this.handler = function(stream, bite) {
+      // 1. If byte is end-of-stream and euc-kr lead is not 0x00, set
+      // euc-kr lead to 0x00 and return error.
+      if (bite === end_of_stream && euckr_lead !== 0) {
+        euckr_lead = 0x00;
+        return decoderError(fatal);
+      }
+
+      // 2. If byte is end-of-stream and euc-kr lead is 0x00, return
+      // finished.
+      if (bite === end_of_stream && euckr_lead === 0)
+        return finished;
+
+      // 3. If euc-kr lead is not 0x00, let lead be euc-kr lead, let
+      // pointer be null, set euc-kr lead to 0x00, and then run these
+      // substeps:
+      if (euckr_lead !== 0x00) {
+        var lead = euckr_lead;
+        var pointer = null;
+        euckr_lead = 0x00;
+
+        // 1. If byte is in the range 0x41 to 0xFE, inclusive, set
+        // pointer to (lead − 0x81) × 190 + (byte − 0x41).
+        if (inRange(bite, 0x41, 0xFE))
+          pointer = (lead - 0x81) * 190 + (bite - 0x41);
+
+        // 2. Let code point be null, if pointer is null, and the
+        // index code point for pointer in index euc-kr otherwise.
+        var code_point = (pointer === null)
+              ? null : indexCodePointFor(pointer, index('euc-kr'));
+
+        // 3. If code point is null and byte is an ASCII byte, prepend
+        // byte to stream.
+        if (pointer === null && isASCIIByte(bite))
+          stream.prepend(bite);
+
+        // 4. If code point is null, return error.
+        if (code_point === null)
+          return decoderError(fatal);
+
+        // 5. Return a code point whose value is code point.
+        return code_point;
+      }
+
+      // 4. If byte is an ASCII byte, return a code point whose value
+      // is byte.
+      if (isASCIIByte(bite))
+        return bite;
+
+      // 5. If byte is in the range 0x81 to 0xFE, inclusive, set
+      // euc-kr lead to byte and return continue.
+      if (inRange(bite, 0x81, 0xFE)) {
+        euckr_lead = bite;
+        return null;
+      }
+
+      // 6. Return error.
+      return decoderError(fatal);
+    };
+  }
+
+  // 14.1.2 euc-kr encoder
+  /**
+   * @constructor
+   * @implements {Encoder}
+   * @param {{fatal: boolean}} options
+   */
+  function EUCKREncoder(options) {
+    var fatal = options.fatal;
+    /**
+     * @param {Stream} stream Input stream.
+     * @param {number} code_point Next code point read from the stream.
+     * @return {(number|!Array.<number>)} Byte(s) to emit.
+     */
+    this.handler = function(stream, code_point) {
+      // 1. If code point is end-of-stream, return finished.
+      if (code_point === end_of_stream)
+        return finished;
+
+      // 2. If code point is an ASCII code point, return a byte whose
+      // value is code point.
+      if (isASCIICodePoint(code_point))
+        return code_point;
+
+      // 3. Let pointer be the index pointer for code point in index
+      // euc-kr.
+      var pointer = indexPointerFor(code_point, index('euc-kr'));
+
+      // 4. If pointer is null, return error with code point.
+      if (pointer === null)
+        return encoderError(code_point);
+
+      // 5. Let lead be floor(pointer / 190) + 0x81.
+      var lead = floor(pointer / 190) + 0x81;
+
+      // 6. Let trail be pointer % 190 + 0x41.
+      var trail = (pointer % 190) + 0x41;
+
+      // 7. Return two bytes whose values are lead and trail.
+      return [lead, trail];
+    };
+  }
+
+  /** @param {{fatal: boolean}} options */
+  encoders['EUC-KR'] = function(options) {
+    return new EUCKREncoder(options);
+  };
+  /** @param {{fatal: boolean}} options */
+  decoders['EUC-KR'] = function(options) {
+    return new EUCKRDecoder(options);
+  };
+
+
+  //
+  // 15. Legacy miscellaneous encodings
+  //
+
+  // 15.1 replacement
+
+  // Not needed - API throws RangeError
+
+  // 15.2 Common infrastructure for utf-16be and utf-16le
+
+  /**
+   * @param {number} code_unit
+   * @param {boolean} utf16be
+   * @return {!Array.<number>} bytes
+   */
+  function convertCodeUnitToBytes(code_unit, utf16be) {
+    // 1. Let byte1 be code unit >> 8.
+    var byte1 = code_unit >> 8;
+
+    // 2. Let byte2 be code unit & 0x00FF.
+    var byte2 = code_unit & 0x00FF;
+
+    // 3. Then return the bytes in order:
+        // utf-16be flag is set: byte1, then byte2.
+    if (utf16be)
+      return [byte1, byte2];
+    // utf-16be flag is unset: byte2, then byte1.
+    return [byte2, byte1];
+  }
+
+  // 15.2.1 shared utf-16 decoder
+  /**
+   * @constructor
+   * @implements {Decoder}
+   * @param {boolean} utf16_be True if big-endian, false if little-endian.
+   * @param {{fatal: boolean}} options
+   */
+  function UTF16Decoder(utf16_be, options) {
+    var fatal = options.fatal;
+    var /** @type {?number} */ utf16_lead_byte = null,
+        /** @type {?number} */ utf16_lead_surrogate = null;
+    /**
+     * @param {Stream} stream The stream of bytes being decoded.
+     * @param {number} bite The next byte read from the stream.
+     * @return {?(number|!Array.<number>)} The next code point(s)
+     *     decoded, or null if not enough data exists in the input
+     *     stream to decode a complete code point.
+     */
+    this.handler = function(stream, bite) {
+      // 1. If byte is end-of-stream and either utf-16 lead byte or
+      // utf-16 lead surrogate is not null, set utf-16 lead byte and
+      // utf-16 lead surrogate to null, and return error.
+      if (bite === end_of_stream && (utf16_lead_byte !== null ||
+                                utf16_lead_surrogate !== null)) {
+        return decoderError(fatal);
+      }
+
+      // 2. If byte is end-of-stream and utf-16 lead byte and utf-16
+      // lead surrogate are null, return finished.
+      if (bite === end_of_stream && utf16_lead_byte === null &&
+          utf16_lead_surrogate === null) {
+        return finished;
+      }
+
+      // 3. If utf-16 lead byte is null, set utf-16 lead byte to byte
+      // and return continue.
+      if (utf16_lead_byte === null) {
+        utf16_lead_byte = bite;
+        return null;
+      }
+
+      // 4. Let code unit be the result of:
+      var code_unit;
+      if (utf16_be) {
+        // utf-16be decoder flag is set
+        //   (utf-16 lead byte << 8) + byte.
+        code_unit = (utf16_lead_byte << 8) + bite;
+      } else {
+        // utf-16be decoder flag is unset
+        //   (byte << 8) + utf-16 lead byte.
+        code_unit = (bite << 8) + utf16_lead_byte;
+      }
+      // Then set utf-16 lead byte to null.
+      utf16_lead_byte = null;
+
+      // 5. If utf-16 lead surrogate is not null, let lead surrogate
+      // be utf-16 lead surrogate, set utf-16 lead surrogate to null,
+      // and then run these substeps:
+      if (utf16_lead_surrogate !== null) {
+        var lead_surrogate = utf16_lead_surrogate;
+        utf16_lead_surrogate = null;
+
+        // 1. If code unit is in the range U+DC00 to U+DFFF,
+        // inclusive, return a code point whose value is 0x10000 +
+        // ((lead surrogate − 0xD800) << 10) + (code unit − 0xDC00).
+        if (inRange(code_unit, 0xDC00, 0xDFFF)) {
+          return 0x10000 + (lead_surrogate - 0xD800) * 0x400 +
+              (code_unit - 0xDC00);
+        }
+
+        // 2. Prepend the sequence resulting of converting code unit
+        // to bytes using utf-16be decoder flag to stream and return
+        // error.
+        stream.prepend(convertCodeUnitToBytes(code_unit, utf16_be));
+        return decoderError(fatal);
+      }
+
+      // 6. If code unit is in the range U+D800 to U+DBFF, inclusive,
+      // set utf-16 lead surrogate to code unit and return continue.
+      if (inRange(code_unit, 0xD800, 0xDBFF)) {
+        utf16_lead_surrogate = code_unit;
+        return null;
+      }
+
+      // 7. If code unit is in the range U+DC00 to U+DFFF, inclusive,
+      // return error.
+      if (inRange(code_unit, 0xDC00, 0xDFFF))
+        return decoderError(fatal);
+
+      // 8. Return code point code unit.
+      return code_unit;
+    };
+  }
+
+  // 15.2.2 shared utf-16 encoder
+  /**
+   * @constructor
+   * @implements {Encoder}
+   * @param {boolean} utf16_be True if big-endian, false if little-endian.
+   * @param {{fatal: boolean}} options
+   */
+  function UTF16Encoder(utf16_be, options) {
+    var fatal = options.fatal;
+    /**
+     * @param {Stream} stream Input stream.
+     * @param {number} code_point Next code point read from the stream.
+     * @return {(number|!Array.<number>)} Byte(s) to emit.
+     */
+    this.handler = function(stream, code_point) {
+      // 1. If code point is end-of-stream, return finished.
+      if (code_point === end_of_stream)
+        return finished;
+
+      // 2. If code point is in the range U+0000 to U+FFFF, inclusive,
+      // return the sequence resulting of converting code point to
+      // bytes using utf-16be encoder flag.
+      if (inRange(code_point, 0x0000, 0xFFFF))
+        return convertCodeUnitToBytes(code_point, utf16_be);
+
+      // 3. Let lead be ((code point − 0x10000) >> 10) + 0xD800,
+      // converted to bytes using utf-16be encoder flag.
+      var lead = convertCodeUnitToBytes(
+        ((code_point - 0x10000) >> 10) + 0xD800, utf16_be);
+
+      // 4. Let trail be ((code point − 0x10000) & 0x3FF) + 0xDC00,
+      // converted to bytes using utf-16be encoder flag.
+      var trail = convertCodeUnitToBytes(
+        ((code_point - 0x10000) & 0x3FF) + 0xDC00, utf16_be);
+
+      // 5. Return a byte sequence of lead followed by trail.
+      return lead.concat(trail);
+    };
+  }
+
+  // 15.3 utf-16be
+  // 15.3.1 utf-16be decoder
+  /** @param {{fatal: boolean}} options */
+  encoders['UTF-16BE'] = function(options) {
+    return new UTF16Encoder(true, options);
+  };
+  // 15.3.2 utf-16be encoder
+  /** @param {{fatal: boolean}} options */
+  decoders['UTF-16BE'] = function(options) {
+    return new UTF16Decoder(true, options);
+  };
+
+  // 15.4 utf-16le
+  // 15.4.1 utf-16le decoder
+  /** @param {{fatal: boolean}} options */
+  encoders['UTF-16LE'] = function(options) {
+    return new UTF16Encoder(false, options);
+  };
+  // 15.4.2 utf-16le encoder
+  /** @param {{fatal: boolean}} options */
+  decoders['UTF-16LE'] = function(options) {
+    return new UTF16Decoder(false, options);
+  };
+
+  // 15.5 x-user-defined
+
+  // 15.5.1 x-user-defined decoder
+  /**
+   * @constructor
+   * @implements {Decoder}
+   * @param {{fatal: boolean}} options
+   */
+  function XUserDefinedDecoder(options) {
+    var fatal = options.fatal;
+    /**
+     * @param {Stream} stream The stream of bytes being decoded.
+     * @param {number} bite The next byte read from the stream.
+     * @return {?(number|!Array.<number>)} The next code point(s)
+     *     decoded, or null if not enough data exists in the input
+     *     stream to decode a complete code point.
+     */
+    this.handler = function(stream, bite) {
+      // 1. If byte is end-of-stream, return finished.
+      if (bite === end_of_stream)
+        return finished;
+
+      // 2. If byte is an ASCII byte, return a code point whose value
+      // is byte.
+      if (isASCIIByte(bite))
+        return bite;
+
+      // 3. Return a code point whose value is 0xF780 + byte − 0x80.
+      return 0xF780 + bite - 0x80;
+    };
+  }
+
+  // 15.5.2 x-user-defined encoder
+  /**
+   * @constructor
+   * @implements {Encoder}
+   * @param {{fatal: boolean}} options
+   */
+  function XUserDefinedEncoder(options) {
+    var fatal = options.fatal;
+    /**
+     * @param {Stream} stream Input stream.
+     * @param {number} code_point Next code point read from the stream.
+     * @return {(number|!Array.<number>)} Byte(s) to emit.
+     */
+    this.handler = function(stream, code_point) {
+      // 1.If code point is end-of-stream, return finished.
+      if (code_point === end_of_stream)
+        return finished;
+
+      // 2. If code point is an ASCII code point, return a byte whose
+      // value is code point.
+      if (isASCIICodePoint(code_point))
+        return code_point;
+
+      // 3. If code point is in the range U+F780 to U+F7FF, inclusive,
+      // return a byte whose value is code point − 0xF780 + 0x80.
+      if (inRange(code_point, 0xF780, 0xF7FF))
+        return code_point - 0xF780 + 0x80;
+
+      // 4. Return error with code point.
+      return encoderError(code_point);
+    };
+  }
+
+  /** @param {{fatal: boolean}} options */
+  encoders['x-user-defined'] = function(options) {
+    return new XUserDefinedEncoder(options);
+  };
+  /** @param {{fatal: boolean}} options */
+  decoders['x-user-defined'] = function(options) {
+    return new XUserDefinedDecoder(options);
+  };
+
+  if (!global['TextEncoder'])
+    global['TextEncoder'] = TextEncoder;
+  if (!global['TextDecoder'])
+    global['TextDecoder'] = TextDecoder;
+
+  if (typeof module !== "undefined" && module.exports) {
+    module.exports = {
+      TextEncoder: global['TextEncoder'],
+      TextDecoder: global['TextDecoder'],
+      EncodingIndexes: global["encoding-indexes"]
+    };
+  }
+
+// For strict environments where `this` inside the global scope
+// is `undefined`, take a pure object instead
+}(this || {}));
+
+},{"./encoding-indexes.js":5}],58:[function(require,module,exports){
+(function (global,Buffer){
+'use strict';
+var proj4 = require('proj4');
+if (proj4.default) {
+  proj4 = proj4.default;
+}
+var unzip = require('./unzip');
+var binaryAjax = require('./binaryajax');
+var parseShp = require('./parseShp');
+var parseDbf = require('parsedbf');
+var Promise = require('lie');
+var Cache = require('lru-cache');
+var cache = new Cache({
+  max: 20
+});
+
+function toBuffer(b) {
+  if (!b) {
+    throw new Error('forgot to pass buffer');
+  }
+  if (Buffer.isBuffer(b)) {
+    return b;
+  }
+  if (b instanceof global.ArrayBuffer) {
+    return new Buffer(b);
+  }
+  if (b.buffer instanceof global.ArrayBuffer) {
+    if (b.BYTES_PER_ELEMENT === 1) {
+      return new Buffer(b);
+    }
+    return new Buffer(b.buffer);
+  }
+}
+
+function shp(base, whiteList) {
+  if (typeof base === 'string' && cache.has(base)) {
+    return Promise.resolve(cache.get(base));
+  }
+  return shp.getShapefile(base, whiteList).then(function(resp) {
+    if (typeof base === 'string') {
+      cache.set(base, resp);
+    }
+    return resp;
+  });
+}
+shp.combine = function(arr) {
+  var out = {};
+  out.type = 'FeatureCollection';
+  out.features = [];
+  var i = 0;
+  var len = arr[0].length;
+  while (i < len) {
+    out.features.push({
+      'type': 'Feature',
+      'geometry': arr[0][i],
+      'properties': arr[1][i]
+    });
+    i++;
+  }
+  return out;
+};
+shp.parseZip = function(buffer, whiteList) {
+  var key;
+  buffer = toBuffer(buffer);
+  var zip = unzip(buffer);
+  var names = [];
+  whiteList = whiteList || [];
+  for (key in zip) {
+    if (key.indexOf('__MACOSX') !== -1) {
+      continue;
+    }
+    if (key.slice(-3).toLowerCase() === 'shp') {
+      names.push(key.slice(0, -4));
+      zip[key.slice(0, -3) + key.slice(-3).toLowerCase()] = zip[key];
+    } else if (key.slice(-3).toLowerCase() === 'prj') {
+      zip[key.slice(0, -3) + key.slice(-3).toLowerCase()] = proj4(zip[key]);
+    } else if (key.slice(-4).toLowerCase() === 'json' || whiteList.indexOf(key.split('.').pop()) > -1) {
+      names.push(key.slice(0, -3) + key.slice(-3).toLowerCase());
+    } else if (key.slice(-3).toLowerCase() === 'dbf' || key.slice(-3).toLowerCase() === 'cpg') {
+      zip[key.slice(0, -3) + key.slice(-3).toLowerCase()] = zip[key];
+    }
+  }
+  if (!names.length) {
+    throw new Error('no layers founds');
+  }
+  var geojson = names.map(function(name) {
+    var parsed, dbf;
+    var lastDotIdx = name.lastIndexOf('.');
+    if (lastDotIdx > -1 && name.slice(lastDotIdx).indexOf('json') > -1) {
+      parsed = JSON.parse(zip[name]);
+      parsed.fileName = name.slice(0, lastDotIdx);
+    } else if (whiteList.indexOf(name.slice(lastDotIdx + 1)) > -1) {
+      parsed = zip[name];
+      parsed.fileName = name;
+    } else {
+      if (zip[name + '.dbf']) {
+        dbf = parseDbf(zip[name + '.dbf'], zip[name + '.cpg']);
+      }
+      parsed = shp.combine([parseShp(zip[name + '.shp'], zip[name + '.prj']), dbf]);
+      parsed.fileName = name;
+    }
+    return parsed;
+  });
+  if (geojson.length === 1) {
+    return geojson[0];
+  } else {
+    return geojson;
+  }
+};
+
+function getZip(base, whiteList) {
+  return binaryAjax(base).then(function(a) {
+    return shp.parseZip(a, whiteList);
+  });
+}
+shp.getShapefile = function(base, whiteList) {
+  if (typeof base === 'string') {
+    if (base.slice(-4).toLowerCase() === '.zip') {
+      return getZip(base, whiteList);
+    } else {
+      return Promise.all([
+        Promise.all([
+          binaryAjax(base + '.shp'),
+          binaryAjax(base + '.prj')
+        ]).then(function(args) {
+          return parseShp(args[0], args[1] ? proj4(args[1]) : false);
+        }),
+        Promise.all([
+          binaryAjax(base + '.dbf'),
+          binaryAjax(base + '.cpg')
+        ]).then(function(args) {
+          return parseDbf(args[0], args[1]);
+        })
+      ]).then(shp.combine);
+    }
+  } else {
+    return new Promise(function(resolve) {
+      resolve(shp.parseZip(base));
+    });
+  }
+};
+shp.parseShp = function(shp, prj) {
+  shp = toBuffer(shp);
+  if (Buffer.isBuffer(prj)) {
+    prj = prj.toString();
+  }
+  if (typeof prj === 'string') {
+    prj = proj4(prj);
+    return parseShp(shp, prj);
+  } else {
+    return parseShp(shp);
+  }
+};
+shp.parseDbf = function(dbf, cpg) {
+  dbf = toBuffer(dbf);
+  return parseDbf(dbf, cpg);
+};
+module.exports = shp;
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer)
+},{"./binaryajax":1,"./parseShp":2,"./unzip":3,"buffer":6,"lie":34,"lru-cache":35,"parsedbf":53,"proj4":54}]},{},[58])(58)
+});
Index: /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpread.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpread.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpread.m	(revision 27955)
@@ -0,0 +1,106 @@
+function Struct=shpread(filename,varargin)
+%SHPREAD - read a shape file and build a struct
+%
+%   This routine reads a shape file .shp and builds a structure array 
+%   containing the fields x and y corresponding to the coordinates, one for the 
+%   filename of the shp file, for the density, for the nodes, and a field 
+%   closed to indicate if the domain is closed. If this initial shapefile is 
+%   point only, the fields closed and points are omitted.
+%
+%   The first argument is the .shp file to be read and the second one 
+%   (optional) indicates if the last point shall be read (1 to read it, 0 not 
+%   to).
+%
+%   Usage:
+%      Struct=shpread(filename)
+%
+%   Example:
+%      Struct=shpread('domainoutline.shp')
+
+%recover options
+options=pairoptions(varargin{:});
+invert=getfieldvalue(options,'invert',0);
+
+%some checks
+if ~exist(filename),
+	error(['shpread error message: file ' filename ' not found!']);
+end
+
+%read shapefile
+shp=shaperead(filename);
+
+Struct=struct([]);
+fields=fieldnames(shp);
+for i=1:length(shp),
+	if strcmpi(shp(i).Geometry,'Point'),
+		x=shp(i).X'; y=shp(i).Y';
+		ids=find(isnan(x));
+		x(ids)=[]; y(ids)=[];
+
+		Struct(end+1).x=x;
+		Struct(end).y=y;
+		Struct(end).density=1;
+		if isfield(shp,'id'),
+			Struct(end).name=num2str(shp(i).id);
+		else
+			Struct(end).name='';
+		end
+		for j=1:length(fields),
+			field=fields{j};
+			if ~(strcmpi(field,'X') | strcmpi(field,'Y') | strcmpi(field,'id')),
+				Struct(end).(field)=shp(i).(field);
+			end
+		end
+	elseif strcmpi(shp(i).Geometry,'Line'),
+		x=shp(i).X'; y=shp(i).Y';
+		ids=find(isnan(x));
+		x(ids)=[]; y(ids)=[];
+
+		Struct(end+1).x=x;
+		Struct(end).y=y;
+		Struct(end).nods=length(x);
+		Struct(end).density=1;
+		Struct(end).closed=1;
+		if isfield(shp,'id'),
+			Struct(end).name=num2str(shp(i).id);
+		else
+			Struct(end).name='';
+		end
+		for j=1:length(fields),
+			field=fields{j};
+			if ~(strcmpi(field,'X') | strcmpi(field,'Y') | strcmpi(field,'id')),
+				Struct(end).(field)=shp(i).(field);
+			end
+		end
+	elseif strcmpi(shp(i).Geometry,'Polygon'),
+		x=shp(i).X'; y=shp(i).Y';
+		ids=find(isnan(x));
+		x(ids)=[]; y(ids)=[];
+
+		Struct(end+1).x=x;
+		Struct(end).y=y;
+		Struct(end).nods=length(x);
+		Struct(end).density=1;
+		Struct(end).closed=1;
+		if isfield(shp,'id'),
+			Struct(end).name=num2str(shp(i).id);
+		else
+			Struct(end).name='';
+		end
+		for j=1:length(fields),
+			field=fields{j};
+			if ~(strcmpi(field,'X') | strcmpi(field,'Y') | strcmpi(field,'id')),
+				Struct(end).(field)=shp(i).(field);
+			end
+		end
+	end
+end
+
+if invert,
+	for i=1:length(Struct),
+		Struct(i).x=flipud(Struct(i).x);
+		Struct(i).y=flipud(Struct(i).y);
+	end
+end
+
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpread.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpread.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpread.py	(revision 27955)
@@ -0,0 +1,142 @@
+import numpy as np
+from collections import OrderedDict
+from os import path
+try:
+    import shapefile
+except ImportError:
+    print("could not import shapefile, PyShp has not been installed, no shapefile reading capabilities enabled")
+
+from pairoptions import pairoptions
+
+
+def shpread(filename, *args):  # {{{
+    """SHPREAD - read a shapefile and build a list of shapes
+
+    This routine reads a shapefile and builds a list of OrderedDict objects
+    containing the fields x and y corresponding to the coordinates, one for the
+    filename of the shp file, for the density, for the nodes, and a field
+    closed to indicate if the domain is closed. If this initial shapefile is
+    point only, the fields closed and points are ommitted. The first argument
+    is the shapefile to be read and the second argument (optional) indicates if
+    the last point shall be read (1 to read it, 0 not to).
+
+    The current implementation of shpread depends on PyShp.
+
+    Usage:
+        list = shpread(filename)
+
+    Example:
+        From underling PyShp implementation, "The shapefile format is actually
+        a collection of three files. You specify the base filename of the
+        shapefile or the complete filename of any of the shapefile component
+        files."
+
+        list = shpread('domainoutline.shp')
+        OR
+        list = shpread('domainoutline.dbf')
+        OR
+        list = shpread('domainoutline')
+
+        "OR any of the other 5+ formats which are potentially part of a
+        shapefile. The library does not care about file extensions". We do,
+        however, check that a file with the base filename or base filename with
+        .shp extension exists.
+
+    Sources:
+    - https://github.com/GeospatialPython/pyshp
+
+    NOTE:
+    - OrderedDict objects are used instead of OrderedStruct objects (although
+    addressing in the latter case is closer to the MATLAB struct type) in order
+    to remain consistent with the pattern established by src/m/exp/expread.py.
+
+    TODO:
+    - Create class that can be used to store and pretty print shape structs
+    (ala OrderedStruct from src/m/qmu/helpers.py).
+    - Convert returned data structure from list of OrderedDict objects to list
+    of OrderedStruct objects and remove corresponding note (see also
+    src/m/exp/expread.py). Also, modify handling of returned data structure in,
+        - src/m/classes/basin.py
+        - src/m/classes/boundary.py
+        - src/m/modules/ExpToLevelSet.py
+        - src/m/mesh/bamg.py
+    May also need to modify addressing in corresponding FetchData function, or
+    create new one, in src/wrappers/ContoursToNodes/ContoursToNodes.cpp.
+    """
+
+    #recover options
+    options = pairoptions(*args)
+
+    #some checks
+    if not (path.isfile(filename) or path.isfile(filename + '.shp')):
+        raise RuntimeError('shpread error message: file {} or {}.shp not found!'.format(filename, filename))
+
+    #read shapefile
+    sf = shapefile.Reader(filename)
+
+    Structs = []
+    shapes = sf.shapes()
+    for i, shape in enumerate(shapes):
+        Struct = OrderedDict()
+        if shape.shapeType == shapefile.POINT:
+            Struct['x'] = shape.points[0][0]
+            Struct['y'] = shape.points[0][1]
+            Struct['density'] = 1
+            Struct['Geometry'] = 'Point'
+        elif shape.shapeType == shapefile.POLYLINE:
+            num_points = len(shape.points)
+            x = []
+            y = []
+            for j, point in enumerate(shape.points):
+                x.append(point[0])
+                y.append(point[1])
+            Struct['x'] = x
+            Struct['y'] = y
+            Struct['nods'] = num_points
+            Struct['density'] = 1
+            Struct['closed'] = 1
+            Struct['BoundingBox'] = shape.bbox
+            Struct['Geometry'] = 'Line'
+        elif shape.shapeType == shapefile.POLYGON:
+            num_points = len(shape.points)
+            x = []
+            y = []
+            for j, point in enumerate(shape.points):
+                x.append(point[0])
+                y.append(point[1])
+            Struct['x'] = x
+            Struct['y'] = y
+            Struct['nods'] = num_points
+            Struct['density'] = 1
+            Struct['closed'] = 1
+            Struct['BoundingBox'] = shape.bbox
+            Struct['Geometry'] = 'Polygon'
+        else:
+            # NOTE: We could do this once before looping over shapes as all
+            #       shapes in the file must be of the same type, but we would
+            #       need to have a second check anyway in order to know how to
+            #       parse the points. So, let's just assume the file is not
+            #       malformed.
+            #
+            raise Exception('shpread error: geometry {} is not currently supported'.format(shape.shapeTypeName))
+
+        name = ''
+        fields = sf.fields
+        for j in range(1, len(fields)):  # skip over first field, which is "DeletionFlag"
+            fieldname = fields[j][0]
+            # 'id' field gets special treatment
+            if fieldname in ['id', 'fid']:
+                name = str(sf.record(i)[j - 1])  # record index is offset by one, again, because of "DeletionFlag"
+            else:
+                setattr(Struct, str(fieldname), sf.record(i)[j - 1])  # cast to string removes "u" from "u'fieldname'"
+        Struct['name'] = name
+        Structs.append(Struct)
+
+    invert = options.getfieldvalue('invert', 0)
+    if invert:
+        for i in range(len(Structs)):
+            Structs[i]['x'] = np.flipud(Structs[i]['x'])
+            Structs[i]['y'] = np.flipud(Structs[i]['y'])
+
+    return Structs
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpwrite.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpwrite.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpwrite.m	(revision 27955)
@@ -0,0 +1,29 @@
+function shpwrite(shp,filename)
+%SHPWRITE - write a shape file from a contour structure
+%
+%   Usage:
+%      shpwrite(shp,filename)
+%
+%   Example:
+%      shpwrite(shp,'domainoutline.shp')
+%
+%   See also SHPREAD
+
+contours=struct([]);
+for i=1:length(shp),
+	if strcmpi(shp(i).Geometry,'Point'),
+		contours(i).Geometry='Point';
+	elseif strcmpi(shp(i).Geometry,'Polygon'),
+		contours(i).Geometry='Polygon';
+	elseif strcmpi(shp(i).Geometry,'Line'),
+		contours(i).Geometry='Line';
+	else,
+		error(['shpwrite error: geometry ' shp(i).Geometry ' not currently supported']);
+	end
+	contours(i).id=i;
+	contours(i).X=shp(i).x;
+	contours(i).Y=shp(i).y;
+end
+
+shapewrite(contours,filename);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpwrite.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpwrite.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/shp/shpwrite.py	(revision 27955)
@@ -0,0 +1,61 @@
+try:
+    import shapefile
+except ImportError:
+    print("could not import shapefile, PyShp has not been installed, no shapefile reading capabilities enabled")
+
+
+def shpwrite(shp, filename):  # {{{
+    '''
+    SHPREAD - write a shape file from a contour structure
+
+    The current implementation of shpwrite depends on PyShp.
+
+    Usage:
+        shpwrite(shp, filename)
+
+    Example:
+        shpwrite(shp, 'domainoutline.shp')
+
+    See also SHPREAD
+
+    Sources:
+    - https://github.com/GeospatialPython/pyshp
+
+    TODO:
+    - Should we check if there is only one element (see how MATLAB's shaperead
+    and shapewrite handle single shapes versus multiple shapes)?
+    '''
+
+    # Sanity checks
+    for shape in shp:
+        print(shape)
+
+    if shp[0].Geometry == 'Point':
+        shapeType = 1
+    elif shp[0].Geometry == 'Line':
+        shapeType = 3
+    elif shp[0].Geometry == 'Polygon':
+        shapeType = 5
+    else:
+        raise Exception('shpwrite error: geometry \'{}\' is not currently supported'.format(shp[0].Geometry))
+
+    sf = shapefile.Writer(filename, shapeType=shapeType)
+
+    for i in range(len(shp)):
+        sf.field('name', 'C')  # TODO: Allow shape ids/names to be passed through
+        if shapeType == 1: # POINT
+            sf.point(shp[i].x, shp[i].y)
+        elif shapeType == 3: # POLYLINE
+            points = []
+            for j in range(len(shp[i].x)):
+                points.append([shp[i].x[j], shp[i].y[j]])
+            sf.line(line)
+        elif shapeType == 5:  # POLYGON
+            points = []
+            for j in range(len(shp[i].x)):
+                points.append([shp[i].x[j], shp[i].y[j]])
+            sf.poly(points)
+        sf.null()
+        sf.record(str(i))
+    sf.close()
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/WriteData.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/WriteData.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/WriteData.js	(revision 27955)
@@ -0,0 +1,318 @@
+function WriteData(fid,prefix){ //{{{
+//WRITEDATA - write model field into binary buffer 
+//
+//   Usage:
+//      WriteData(fid,varargin);
+
+	//process options
+	var args = Array.prototype.slice.call(arguments);
+	var options = new pairoptions(args.slice(2,args.length));
+	var name;
+	var dataini;
+	var data;
+
+	//Get data properties
+	if (options.exist('object')){
+		//This is a object field, construct string name and data
+		obj       = options.getfieldvalue('object');
+		fieldname = options.getfieldvalue('fieldname');
+		name      = options.getfieldvalue('name',prefix+'.'+fieldname);
+		if (options.exist('data')){
+			dataini = options.getfieldvalue('data');
+		}
+		else{
+			dataini  = obj[fieldname];
+		}
+	}
+	else{
+		//No processing required
+		dataini = options.getfieldvalue('data');
+		name = options.getfieldvalue('name');
+	}
+	if (IsArray(dataini)){
+	   data=dataini.slice(0);
+	}
+	else{
+		data=dataini;
+	}
+
+	format  = options.getfieldvalue('format');
+	mattype = options.getfieldvalue('mattype',0);    //only required for matrices
+	timeserieslength = options.getfieldvalue('timeserieslength',-1);
+
+	//Scale data if necesarry
+	if (options.exist('scale')){
+		scale = options.getfieldvalue('scale');
+		if (data.length==timeserieslength){
+			if (IsArray(data[0])){
+				for(var i=0;i<data.length-1;i++){
+					for(var j=0;j<data[0].length;j++){
+						data[i][j]=scale*data[i][j];
+					}
+				}
+			}
+			else{
+				for(var i=0;i<data.length-1;i++){
+					data[i]=scale*data[i];
+				}
+			}
+		}
+		else{
+			if (!IsArray(data)) data=data*scale;
+			else data=ArrayScale(data,scale);
+		}
+	}
+
+	if(IsArray(data)){
+		if(data.length == timeserieslength){
+			var yts = options.getfieldvalue('yts');
+			if (IsArray(data[0])){
+				for(var j=0;j<data[0].length;j++)data[timeserieslength-1][j]=data[timeserieslength-1][j]*yts;
+			}
+			else data[timeserieslength-1]=data[timeserieslength-1]*yts;
+		}
+	}
+
+	let recordlengthtype = 'int';
+	if (svnversion >= 22708) {
+		recordlengthtype = 'long long';
+	}
+
+	//Step 1: write the name to identify this record uniquely
+	fid.fwrite(name.length,'int'); 
+	fid.fwrite(name,'char'); 
+
+	//Step 2: write the data itself.
+	if (format == 'Boolean'){// {{{
+		if(IsArray(data)) throw  Error(sprintf("field '%s' cannot be marshalled as it has more than one element!",name));
+
+		//first write length of record
+		fid.fwrite(4+4,recordlengthtype);  //1 bool (disguised as an int)+code
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write integer
+		fid.fwrite(data,'int');  //send an int, not easy to send a bool
+	} // }}}
+	else if (format == 'Integer'){ // {{{
+		if(IsArray(data)) throw  Error(sprintf("field '%s' cannot be marshalled as it has more than one element!",name));
+
+		//first write length of record
+		fid.fwrite(4+4,recordlengthtype);  //1 integer + code
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write integer
+		fid.fwrite(data,'int'); 
+	} // }}}
+	else if (format == 'Double'){ // {{{
+		if(IsArray(data)) throw  Error(sprintf("field '%s' cannot be marshalled as it has more than one element!",name));
+
+		//first write length of record
+		fid.fwrite(8+4,recordlengthtype);  //1 double+code
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write double
+		fid.fwrite(data,'double'); 
+	} // }}}
+	else if (format == 'String'){ // {{{
+		//first write length of record
+		fid.fwrite(data.length+4+4,recordlengthtype);  //string + string size + code
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write string
+		fid.fwrite(data.length,'int'); 
+		fid.fwrite(data,'char'); 
+	} // }}}
+	else if (format == 'BooleanMat'){ // {{{
+
+		//Get size (TODO: use into matlab.js::size)
+		var s=[data.length,1]; //vector
+		if (IsArray(data[0])) { //matrix
+			s[1]=data[0].length;
+        } else if (typeof data == 'number') { //scalar
+        	s[0]=1; s[1]=1
+        } else if (data.length == 0) { //empty matrix/vector
+            s[1]=0;
+        }
+
+		//if matrix = NaN, then do not write anything
+		if (s[0]==1 && s[1]==1 && isNaN(data)){
+			s[0]=0; s[1]=0;
+		}
+		if (typeof data != 'number' && s[0]==1 && s[1]==1 && isNaN(data[0])){
+			s[0]=0; s[1]=0;
+		}
+
+		//first write length of record
+		fid.fwrite(4+4+8*s[0]*s[1]+4+4,recordlengthtype);  //2 integers (32 bits) + the double matrix + code + matrix type
+
+		//write data code and matrix type: 
+		fid.fwrite(FormatToCode(format),'int'); 
+		fid.fwrite(mattype,'int');
+
+		//now write matrix
+		fid.fwrite(s[0],'int'); 
+		fid.fwrite(s[1],'int'); 
+		if (s[0]*s[1]) fid.fwrite(MatrixToList(data),'double'); //get to the "c" convention, hence the transpose
+	} // }}}
+	else if (format == 'IntMat'){ // {{{
+
+		//Get size (TODO: use into matlab.js::size)
+		var s=[data.length,1]; //vector
+		if (IsArray(data[0])) { //matrix
+			s[1]=data[0].length;
+        } else if (typeof data == 'number') { //scalar
+        	s[0]=1; s[1]=1
+        } else if (data.length == 0) { //empty matrix/vector
+            s[1]=0;
+        }
+
+		//if matrix = NaN, then do not write anything
+		if (s[0]==1 && s[1]==1 && isNaN(data)){
+			s[0]=0; s[1]=0;
+		}
+		if (typeof data != 'number' && s[0]==1 && s[1]==1 && isNaN(data[0])){
+			s[0]=0; s[1]=0;
+		}
+
+		//first write length of record
+		fid.fwrite(4+4+8*s[0]*s[1]+4+4,recordlengthtype);  //2 integers (32 bits) + the double matrix + code + matrix type
+
+		//write data code and matrix type: 
+		fid.fwrite(FormatToCode(format),'int'); 
+		fid.fwrite(mattype,'int');
+
+		//now write matrix
+		fid.fwrite(s[0],'int'); 
+		fid.fwrite(s[1],'int'); 
+		if (s[0]*s[1]) fid.fwrite(MatrixToList(data),'double'); //get to the "c" convention, hence the transpose
+
+	} // }}}
+	else if (format == 'DoubleMat'){ // {{{
+
+		//Get size (TODO: use into matlab.js::size)
+		var s=[data.length,1]; //vector
+		if (IsArray(data[0])) { //matrix
+			s[1]=data[0].length;
+        } else if (typeof data == 'number') { //scalar
+        	s[0]=1; s[1]=1
+        } else if (data.length == 0) { //empty matrix/vector
+            s[1]=0;
+        }
+        
+		//if matrix = NaN, then do not write anything
+		if (s[0]==1 && s[1]==1 && isNaN(data)){
+			s[0]=0; s[1]=0;
+		}
+		if (typeof data != 'number' && s[0]==1 && s[1]==1 && isNaN(data[0])){
+			s[0]=0; s[1]=0;
+		}
+
+		//first write length of record
+		var recordlength=4+4+8*s[0]*s[1]+4+4; //2 integers (32 bits) + the double matrix + code + matrix type
+		if (recordlength>Math.pow(2,31)) throw Error(sprintf("field '%s' cannot be marshalled because it is larger than 2^31 bytes!",name));
+		fid.fwrite(recordlength,recordlengthtype);
+
+		//write data code and matrix type: 
+		fid.fwrite(FormatToCode(format),'int'); 
+		fid.fwrite(mattype,'int');
+
+		//now write matrix
+		fid.fwrite(s[0],'int'); 
+		fid.fwrite(s[1],'int'); 
+		if (s[0]*s[1]) fid.fwrite(MatrixToList(data),'double'); //get to the "c" convention, hence the transpose
+	} // }}}
+	else if (format == 'MatArray'){ // {{{
+
+		numrecords=data.length;
+
+		//first get length of record
+		recordlength=4+4; //number of records + code
+		for (var i=0;i<numrecords;i++){
+			matrix=data[i];
+			var s=[matrix.length,1];
+			if(IsArray(matrix[0]))s[1]=matrix[0].length;
+
+			recordlength=recordlength+4*2+ //row and col of matrix
+				s[0]*s[1]*8; //matrix of doubles
+		}
+
+		//write length of record
+		fid.fwrite(recordlength,recordlengthtype); 
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//write data, first number of records
+		fid.fwrite(numrecords,'int'); 
+
+		//write each matrix: 
+		for (var i=0;i<numrecords;i++){
+			matrix=data[i];
+			var s=[matrix.length,1];
+			if(IsArray(matrix[0]))s[1]=matrix[0].length;
+
+			fid.fwrite(s[0],'int'); 
+			fid.fwrite(s[1],'int'); 
+			fid.fwrite(MatrixToList(matrix),'double');
+		}
+	} // }}}
+	else if (format == 'StringArray'){ // {{{
+
+		//first get length of string array: 
+		num=data.length;
+		if ((typeof data[0] == 'number') & num==1 & isNaN(data[0])){
+			num = 0;
+		}
+
+		//now get length of record: 
+		recordlength=4+4; //for length of array + code
+		for (var i=0;i<num;i++){
+			string=data[i];
+			recordlength=recordlength+4+string.length; //for each string
+		}
+
+		//write length of record
+		fid.fwrite(recordlength,recordlengthtype); 
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write length of string array
+		fid.fwrite(num,'int'); 
+
+		//now write the strings
+		for (var i=0;i<num;i++){
+			string=data[i];
+			fid.fwrite(string.length,'int'); 
+			fid.fwrite(string,'char'); 
+		}
+	} // }}}
+	else { 
+		throw Error(sprintf("WriteData error message: data type: %s not supported yet! ('%s')",
+					format.toString(),name));
+	}
+} //}}}
+function FormatToCode(format){ // {{{
+	//This routine takes the format string, and hardcodes it into an integer, which 
+	//is passed along the record, in order to identify the nature of the dataset being 
+	//sent.
+	if  (format == 'Boolean') code=1;
+	else if (format == 'Integer') code=2;
+	else if (format == 'Double') code=3;
+	else if (format == 'String') code=4;
+	else if (format == 'BooleanMat') code=5;
+	else if (format == 'IntMat') code=6;
+	else if (format == 'DoubleMat') code=7;
+	else if (format == 'MatArray') code=8;
+	else if (format == 'StringArray') code=9;
+	else throw Error('FormatToCode error message: data type not supported yet!');
+	return code;
+}// }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/WriteData.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/WriteData.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/WriteData.m	(revision 27955)
@@ -0,0 +1,331 @@
+function WriteData(fid,prefix,varargin)
+%WRITEDATA - write model field in binary file
+%
+%   Usage:
+%      WriteData(fid,varargin);
+
+%process options
+options=pairoptions(varargin{:});
+
+%Get data properties
+if exist(options,'object')
+	obj       = getfieldvalue(options,'object');
+	fieldname = getfieldvalue(options,'fieldname');
+	classname = getfieldvalue(options,'class',class(obj));
+	name      = getfieldvalue(options,'name',[prefix '.' fieldname ]);
+	if exist(options,'data'),
+		data = getfieldvalue(options,'data');
+	else
+		data = obj.(fieldname);
+	end
+else
+	data = getfieldvalue(options,'data');
+	name = getfieldvalue(options,'name');
+end
+format  = getfieldvalue(options,'format');
+mattype = getfieldvalue(options,'mattype',0);    %only required for matrices
+timeserieslength = getfieldvalue(options,'timeserieslength',-1);
+
+%Process sparse matrices
+if issparse(data)
+	data=full(data);
+end
+
+%Scale data if necessary
+if strcmpi(format,'MatArray')
+	for i=1:numel(data)
+		if exist(options,'scale'),
+			scale = getfieldvalue(options,'scale');
+			if size(data{i},1)==timeserieslength,
+				data{i}(1:end-1,:) = scale.*data{i}(1:end-1,:);
+			else
+				data{i} = scale.*data{i};
+			end
+		end
+		if size(data{i},1)==timeserieslength,
+			yts = getfieldvalue(options,'yts');
+			data{i}(end,:) = data{i}(end,:)*yts;
+		end
+	end
+else
+	if exist(options,'scale')
+		scale = getfieldvalue(options,'scale');
+		if size(data,1)==timeserieslength,
+			data(1:end-1,:) = scale.*data(1:end-1,:);
+		else
+			data  = scale.*data;
+		end
+	end
+	if(size(data,1)==timeserieslength)
+		yts = getfieldvalue(options,'yts');
+		data(end,:) = data(end,:)*yts;
+	end
+end
+
+%Step 1: write the name to identify this record uniquely
+fwrite(fid,numel(name),'int');
+fwrite(fid,name,'char');
+
+%Step 2: write the data itself.
+if     strcmpi(format,'Boolean'),% {{{
+	if(numel(data)~=1), error(['field ' name ' cannot be marshalled as it has more than one element!']); end
+
+	%first write length of record
+	fwrite(fid,4+4,'int64');  %1 bool (disguised as an int)+code
+
+	%write data code:
+	fwrite(fid,FormatToCode(format),'int');
+
+	%now write integer
+	fwrite(fid,data,'int');  %send an int, not easy to send a bool
+	% }}}
+elseif strcmpi(format,'Integer'), % {{{
+	if(numel(data)~=1), error(['field ' name ' cannot be marshalled as it has more than one element!']); end
+
+	%first write length of record
+	fwrite(fid,4+4,'int64');  %1 integer + code
+
+	%write data code:
+	fwrite(fid,FormatToCode(format),'int');
+
+	%now write integer
+	fwrite(fid,data,'int');
+	% }}}
+elseif strcmpi(format,'Double'), % {{{
+	if(numel(data)~=1), error(['field ' name ' cannot be marshalled as it has more than one element!']); end
+
+	%first write length of record
+	fwrite(fid,8+4,'int64');  %1 double+code
+
+	%write data code:
+	fwrite(fid,FormatToCode(format),'int');
+
+	%now write double
+	fwrite(fid,data,'double');
+	% }}}
+elseif strcmpi(format,'String'), % {{{
+	%first write length of record
+	fwrite(fid,length(data)+4+4,'int64');  %string + string size + code
+
+	%write data code:
+	fwrite(fid,FormatToCode(format),'int');
+
+	%now write string
+	fwrite(fid,length(data),'int');
+	fwrite(fid,data,'char');
+	% }}}
+elseif strcmpi(format,'BooleanMat'), % {{{
+
+	%Get size
+	s=size(data);
+	%if matrix = NaN, then do not write anything
+	if (s(1)==1 & s(2)==1 & isnan(data)),
+		s(1)=0; s(2)=0;
+	end
+
+	%first write length of record
+	fwrite(fid,4+4+8*s(1)*s(2)+4+4,'int64');  %2 integers (32 bits) + the double matrix + code + matrix type
+
+	%write data code and matrix type:
+	fwrite(fid,FormatToCode(format),'int');
+	fwrite(fid,mattype,'int');
+
+	%now write matrix
+	fwrite(fid,s(1),'int');
+	fwrite(fid,s(2),'int');
+	if s(1)*s(2),
+		fwrite(fid,data','double'); %get to the "c" convention, hence the transpose
+	end
+	% }}}
+elseif strcmpi(format,'IntMat'), % {{{
+
+	%Get size
+	s=size(data);
+	%if matrix = NaN, then do not write anything
+	if (s(1)==1 & s(2)==1 & isnan(data)),
+		s(1)=0; s(2)=0;
+	end
+
+	%first write length of record
+	fwrite(fid,4+4+8*s(1)*s(2)+4+4,'int64');  %2 integers (32 bits) + the double matrix + code + matrix type
+
+	%write data code and matrix type:
+	fwrite(fid,FormatToCode(format),'int');
+	fwrite(fid,mattype,'int');
+
+	%now write matrix
+	fwrite(fid,s(1),'int');
+	fwrite(fid,s(2),'int');
+	if s(1)*s(2),
+		fwrite(fid,data','double'); %get to the "c" convention, hence the transpose
+	end
+	% }}}
+elseif strcmpi(format,'DoubleMat'), % {{{
+
+	%Get size
+	s=size(data);
+
+	if numel(s)~=2
+		error('matrices that that have more than 2 dimensions are not supported');
+	end
+
+	%if matrix = NaN, then do not write anything
+	if (s(1)==1 & s(2)==1 & isnan(data)),
+		s(1)=0; s(2)=0;
+	end
+
+	%first write length of record
+	recordlength=4+4+8*s(1)*s(2)+4+4; %2 integers (32 bits) + the double matrix + code + matrix type
+	if recordlength>2^63; error(['field ' name ' cannot be marshalled because it is larger than 2^63 bytes!']); end
+	fwrite(fid,recordlength,'int64');
+
+	%write data code and matrix type:
+	fwrite(fid,FormatToCode(format),'int');
+	fwrite(fid,mattype,'int');
+
+	%now write matrix
+	fwrite(fid,s(1),'int');
+	fwrite(fid,s(2),'int');
+	if s(1)*s(2),
+		fwrite(fid,data','double'); %get to the "c" convention, hence the transpose
+	end
+	% }}}
+elseif strcmpi(format,'CompressedMat'), % {{{
+
+	%Get size
+	s=size(data);
+
+	if (s(1)==1 & s(2)==1 & isnan(data)),
+		s(1)=0; s(2)=0;
+	end
+
+	%first write length of record
+	recordlength=4+4+8+8+1*(s(1)-1)*s(2)+8*s(2)+4+4; %2 integers (32 bits) + the matrix + code + matrix type
+	if recordlength>2^63; error(['field ' name ' cannot be marshalled because it is larger than 2^63 bytes!']); end
+	fwrite(fid,recordlength,'int64');
+
+	%write data code and matrix type:
+	fwrite(fid,FormatToCode(format),'int');
+	fwrite(fid,mattype,'int');
+
+	%write matrix size
+	fwrite(fid,s(1),'int');
+	fwrite(fid,s(2),'int');
+
+	if s(1)*s(2),
+
+		%Write offset and range
+		A = data(1:end-1,:);
+		offset = min(A(:));
+		range = max(A(:)) - offset;
+		fwrite(fid,offset,'double');
+		fwrite(fid,range,'double');
+
+		%Convert data to uint8 and write it
+		A=uint8((A-offset)/range*255);
+		fwrite(fid,A','uint8'); %get to the "c" convention, hence the transpose
+
+		%Write last row as double (time)
+		fwrite(fid,data(end,:),'double');
+	else
+
+		%Write empty offset and range
+		fwrite(fid,0,'double');
+		fwrite(fid,0,'double');
+	end
+	% }}}
+elseif strcmpi(format,'MatArray'), % {{{
+
+	numrecords=numel(data);
+
+	%first get length of record
+	recordlength=4+4; %number of records + code
+	for i=1:numrecords,
+		matrix=data{i};
+		s=size(matrix);
+		recordlength=recordlength+4*2+... %row and col of matrix
+			s(1)*s(2)*8; %matrix of doubles
+	end
+
+	%write length of record
+	fwrite(fid,recordlength,'int64');
+
+	%write data code:
+	fwrite(fid,FormatToCode(format),'int');
+
+	%write data, first number of records
+	fwrite(fid,numrecords,'int');
+
+	%write each matrix:
+	for i=1:numrecords,
+		matrix=data{i};
+		s=size(matrix);
+		fwrite(fid,s(1),'int');
+		fwrite(fid,s(2),'int');
+		fwrite(fid,matrix','double');
+	end
+	% }}}
+elseif strcmpi(format,'StringArray'), % {{{
+
+	%first get length of string array:
+	num=numel(data);
+	if isnumeric(data) & num==1 & isnan(data),
+		num = 0;
+	end
+
+	%now get length of record:
+	recordlength=4+4; %for length of array + code
+	for i=1:num,
+		string=data{i};
+		recordlength=recordlength+4+length(string); %for each string
+	end
+
+	%write length of record
+	fwrite(fid,recordlength,'int64');
+
+	%write data code:
+	fwrite(fid,FormatToCode(format),'int');
+
+	%now write length of string array
+	fwrite(fid,num,'int');
+
+	%now write the strings
+	for i=1:num,
+		string=data{i};
+		fwrite(fid,length(string),'int');
+		fwrite(fid,string,'char');
+	end
+	% }}}
+else  % {{{
+	error(['WriteData error message: data type: ' num2str(format) ' not supported yet! (' name ')']);
+end % }}}
+end
+
+function code=FormatToCode(format) % {{{
+%This routine takes the format string, and hardcodes it into an integer, which
+%is passed along the record, in order to identify the nature of the dataset being
+%sent.
+	if     strcmpi(format,'Boolean'),
+		code=1;
+	elseif strcmpi(format,'Integer'),
+		code=2;
+	elseif strcmpi(format,'Double'),
+		code=3;
+	elseif strcmpi(format,'String'),
+		code=4;
+	elseif strcmpi(format,'BooleanMat'),
+		code=5;
+	elseif strcmpi(format,'IntMat'),
+		code=6;
+	elseif strcmpi(format,'DoubleMat'),
+		code=7;
+	elseif strcmpi(format,'MatArray'),
+		code=8;
+	elseif strcmpi(format,'StringArray'),
+		code=9;
+	elseif strcmpi(format,'CompressedMat'),
+		code=10;
+	else
+		error('FormatToCode error message: data type not supported yet!');
+	end
+end% }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/WriteData.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/WriteData.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/WriteData.py	(revision 27955)
@@ -0,0 +1,386 @@
+from copy import copy
+from struct import error, pack
+
+import numpy as np
+
+import pairoptions
+
+
+def WriteData(fid, prefix, *args):
+    """WRITEDATA - write model field in binary file
+
+    Usage:
+        WriteData(fid, varargin)
+    """
+
+    #process options
+    options = pairoptions.pairoptions(*args)
+    #Get data properties
+    if options.exist('object'):
+        #This is an object field, construct enum and data
+        obj = options.getfieldvalue('object')
+        fieldname = options.getfieldvalue('fieldname')
+        name = options.getfieldvalue('name', prefix + '.' + fieldname)
+        if options.exist('data'):
+            data = options.getfieldvalue('data')
+        else:
+            data = getattr(obj, fieldname)
+    else:
+        #No processing required
+        data = options.getfieldvalue('data')
+        name = options.getfieldvalue('name')
+
+    datatype = options.getfieldvalue('format')
+    mattype = options.getfieldvalue('mattype', 0)  #only required for matrices
+    timeserieslength = options.getfieldvalue('timeserieslength', -1)
+
+    #Process sparse matrices
+    #       if issparse(data),
+    #               data = full(data)
+    #       end
+
+    # Make a copy of the the data so that we do not accidently overwrite any
+    # model fields.
+    #
+    data = copy(data)
+
+    #Scale data if necessary
+    if datatype == 'MatArray':
+        #if it is a matrix array we loop over the matrices
+        for i in range(len(data)):
+            if options.exist('scale'):
+                scale = options.getfieldvalue('scale')
+                if np.ndim(data[i]) > 1 and data[i].shape[0] == timeserieslength:
+                    #We scale everything but the last line that holds time
+                    data[i][:-1, :] = scale * data[i][:-1, :]
+                else:
+                    data[i] = scale * data[i]
+            if np.ndim(data[i]) > 1 and data[i].shape[0] == timeserieslength:
+                #no scaling given, just get the time right
+                yts = options.getfieldvalue('yts')
+                #We scale only the last line that holds time
+                data[i][-1, :] = yts * data[i][-1, :]
+    else:
+        if options.exist('scale'):
+            scale = options.getfieldvalue('scale')
+            if np.ndim(data) > 1 and data.shape[0] == timeserieslength:
+                #We scale everything but the last line that holds time
+                data[:-1, :] = scale * data[:-1, :]
+            elif type(data) is list: # Deal with "TypeError: can't multiply sequence by non-int of type 'float'" for type list
+                scaleddata = []
+                for i in range(len(data)):
+                    scaleddata.append(scale * data[i])
+                data = scaleddata
+            else: #
+                data = scale * data
+        if np.ndim(data) > 1 and data.shape[0] == timeserieslength:
+            yts = options.getfieldvalue('yts')
+            #We scale only the last line that holds time
+            # scaler = np.ones((np.shape(data)))
+            # scaler[-1, :] = yts
+            # data = scaler * data
+            data[-1, :] = yts * data[-1, :]
+
+    #Step 1: write the enum to identify this record uniquely
+    fid.write(pack('i', len(name)))
+    fid.write(pack('{}s'.format(len(name)), name.encode()))
+
+    #Step 2: write the data itself.
+    if datatype == 'Boolean':  # {{{
+        #first write length of record
+        fid.write(pack('q', 4 + 4))  #1 bool (disguised as an int) + code
+        #write data code:
+        fid.write(pack('i', FormatToCode(datatype)))
+
+        #now write bool as an integer
+        try:
+            fid.write(pack('i', int(data)))  #send an int, not easy to send a bool
+        except error as Err:
+            raise ValueError('field {} cannot be marshaled, {}'.format(name, Err))
+    # }}}
+
+    elif datatype == 'Integer':  # {{{
+        #first write length of record
+        fid.write(pack('q', 4 + 4))  #1 integer + code
+        #write data code:
+        fid.write(pack('i', FormatToCode(datatype)))
+        #now write integer
+        try:
+            fid.write(pack('i', int(data)))  #force an int,
+        except error as Err:
+            raise ValueError('field {} cannot be marshaled, {}'.format(name, Err))
+    # }}}
+
+    elif datatype == 'Double':  # {{{
+        #first write length of record
+        fid.write(pack('q', 8 + 4))  #1 double + code
+
+    #write data code:
+        fid.write(pack('i', FormatToCode(datatype)))
+
+    #now write double
+        try:
+            fid.write(pack('d', data))
+        except error as Err:
+            raise ValueError('field {} cannot be marshaled, {}'.format(name, Err))
+    # }}}
+
+    elif datatype == 'String':  # {{{
+        #first write length of record
+        fid.write(pack('q', len(data) + 4 + 4))  #string + string size + code
+        #write data code:
+        fid.write(pack('i', FormatToCode(datatype)))
+        #now write string
+        fid.write(pack('i', len(data)))
+        fid.write(pack('{}s'.format(len(data)), data.encode()))
+    # }}}
+
+    elif datatype in ['IntMat', 'BooleanMat']:  # {{{
+        if isinstance(data, (int, bool)):
+            data = np.array([data])
+        elif isinstance(data, (list, tuple)):
+            data = np.array(data).reshape(-1, )
+        if np.ndim(data) == 1:
+            if np.size(data):
+                data = data.reshape(np.size(data), )
+            else:
+                data = data.reshape(0, 0)
+
+    #Get size
+        s = data.shape
+    #if matrix = NaN, then do not write anything
+        if np.ndim(data) == 2 and np.product(s) == 1 and np.all(np.isnan(data)):
+            s = (0, 0)
+
+    #first write length of record
+        recordlength = 4 + 4 + 8 * np.product(s) + 4 + 4  #2 integers (32 bits) + the double matrix + code + matrix type
+        fid.write(pack('q', recordlength))
+
+    #write data code and matrix type:
+        fid.write(pack('i', FormatToCode(datatype)))
+        fid.write(pack('i', mattype))
+
+    #now write matrix
+        fid.write(pack('i', s[0]))
+        try:
+            fid.write(pack('i', s[1]))
+        except IndexError:
+            fid.write(pack('i', 1))
+        for i in range(s[0]):
+            if np.ndim(data) == 1:
+                fid.write(pack('d', float(data[i])))
+            else:
+                for j in range(s[1]):
+                    fid.write(pack('d', float(data[i][j])))
+    # }}}
+
+    elif datatype == 'DoubleMat':  # {{{
+        if isinstance(data, (bool, int, float)):
+            data = np.array([data])
+        elif isinstance(data, (list, tuple)):
+            data = np.array(data).reshape(-1, )
+        if np.ndim(data) == 1:
+            if np.size(data):
+                data = data.reshape(np.size(data), )
+            else:
+                data = data.reshape(0, 0)
+
+    #Get size
+        s = data.shape
+    #if matrix = NaN, then do not write anything
+        if np.ndim(data) == 1 and np.product(s) == 1 and np.all(np.isnan(data)):
+            s = (0, 0)
+
+    #first write length of record
+        recordlength = 4 + 4 + 8 * np.product(s) + 4 + 4  #2 integers (32 bits) + the double matrix + code + matrix type
+
+        try:
+            fid.write(pack('q', recordlength))
+        except error as Err:
+            raise ValueError('Field {} can not be marshaled, {}, with "number" the length of the record.'.format(name, Err))
+
+    #write data code and matrix type:
+        fid.write(pack('i', FormatToCode(datatype)))
+        fid.write(pack('i', mattype))
+    #now write matrix
+        fid.write(pack('i', s[0]))
+        try:
+            fid.write(pack('i', s[1]))
+        except IndexError:
+            fid.write(pack('i', 1))
+        for i in range(s[0]):
+            if np.ndim(data) == 1:
+                fid.write(pack('d', float(data[i])))  #get to the "c" convention, hence the transpose
+            else:
+                for j in range(s[1]):
+                    fid.write(pack('d', float(data[i][j])))  #get to the "c" convention, hence the transpose
+    # }}}
+
+    elif datatype == 'CompressedMat':  # {{{
+        if isinstance(data, (bool, int, float)):
+            data = np.array([data])
+        elif isinstance(data, (list, tuple)):
+            data = np.array(data).reshape(-1, )
+        if np.ndim(data) == 1:
+            if np.size(data):
+                data = data.reshape(np.size(data), )
+            else:
+                data = data.reshape(0, 0)
+
+    #Get size
+        s = data.shape
+        if np.ndim(data) == 1:
+            n2 = 1
+        else:
+            n2 = s[1]
+
+    #if matrix = NaN, then do not write anything
+        if np.ndim(data) == 1 and np.product(s) == 1 and np.all(np.isnan(data)):
+            s = (0, 0)
+            n2 = 0
+
+    #first write length of record
+        recordlength = 4 + 4 + 8 + 8 + 1 * (s[0] - 1) * n2 + 8 * n2 + 4 + 4  #2 integers (32 bits) + the matrix + code + matrix type
+        try:
+            fid.write(pack('q', recordlength))
+        except error as Err:
+            raise ValueError('Field {} can not be marshaled, {}, with "number" the lenght of the record.'.format(name, Err))
+
+    #write data code and matrix type:
+        fid.write(pack('i', FormatToCode(datatype)))
+        fid.write(pack('i', mattype))
+
+    #Write offset and range
+        A = data[0:s[0] - 1]
+        offsetA = A.min()
+        rangeA = A.max() - offsetA
+
+        if rangeA == 0:
+            A = A * 0
+        else:
+            A = (A - offsetA) / rangeA * 255.
+
+    #now write matrix
+        fid.write(pack('i', s[0]))
+        try:
+            fid.write(pack('i', s[1]))
+        except IndexError:
+            fid.write(pack('i', 1))
+        fid.write(pack('d', float(offsetA)))
+        fid.write(pack('d', float(rangeA)))
+        if np.ndim(data) == 1:
+            for i in range(s[0] - 1):
+                fid.write(pack('B', int(A[i])))
+            fid.write(pack('d', float(data[s[0] - 1])))  #get to the "c" convention, hence the transpose
+
+        elif np.product(s) > 0:
+            for i in range(s[0] - 1):
+                for j in range(s[1]):
+                    fid.write(pack('B', int(A[i][j])))  #get to the "c" convention, hence the transpose
+
+            for j in range(s[1]):
+                fid.write(pack('d', float(data[s[0] - 1][j])))
+
+    # }}}
+
+    elif datatype == 'MatArray':  # {{{
+        #first get length of record
+        recordlength = 4 + 4  #number of records + code
+        for matrix in data:
+            if isinstance(matrix, (bool, int, float)):
+                matrix = np.array([matrix])
+            elif isinstance(matrix, (list, tuple)):
+                matrix = np.array(matrix).reshape(-1, )
+            if np.ndim(matrix) == 1:
+                if np.size(matrix):
+                    matrix = matrix.reshape(np.size(matrix), )
+                else:
+                    matrix = matrix.reshape(0, 0)
+
+            s = matrix.shape
+            recordlength += 4 * 2 + np.product(s) * 8  #row and col of matrix + matrix of doubles
+
+    #write length of record
+        fid.write(pack('q', recordlength))
+
+    #write data code:
+        fid.write(pack('i', FormatToCode(datatype)))
+
+    #write data, first number of records
+        fid.write(pack('i', len(data)))
+
+        for matrix in data:
+            if isinstance(matrix, (bool, int, float)):
+                matrix = np.array([matrix])
+            elif isinstance(matrix, (list, tuple)):
+                matrix = np.array(matrix).reshape(-1, )
+            if np.ndim(matrix) == 1:
+                matrix = matrix.reshape(np.size(matrix), )
+
+            s = matrix.shape
+
+            fid.write(pack('i', s[0]))
+            try:
+                fid.write(pack('i', s[1]))
+            except IndexError:
+                fid.write(pack('i', 1))
+            for i in range(s[0]):
+                if np.ndim(matrix) == 1:
+                    fid.write(pack('d', float(matrix[i])))  #get to the "c" convention, hence the transpose
+                else:
+                    for j in range(s[1]):
+                        fid.write(pack('d', float(matrix[i][j])))
+    # }}}
+
+    elif datatype == 'StringArray':  # {{{
+        #first get length of record
+        recordlength = 4 + 4  #for length of array + code
+        for string in data:
+            recordlength += 4 + len(string)  #for each string
+
+        #write length of record
+        fid.write(pack('q', recordlength))
+        #write data code:
+        fid.write(pack('i', FormatToCode(datatype)))
+        #now write length of string array
+        fid.write(pack('i', len(data)))
+        #now write the strings
+        for string in data:
+            fid.write(pack('i', len(string)))
+            fid.write(pack('{}s'.format(len(string)), string.encode()))
+    # }}}
+
+    else:  # {{{
+        raise TypeError('WriteData error message: data type: {} not supported yet! ({})'.format(datatype, name))
+    # }}}
+
+
+def FormatToCode(datatype):  # {{{
+    """ FORMATTOCODE - This routine takes the datatype string, and hardcodes it 
+    into an integer, which is passed along the record, in order to identify the 
+    nature of the dataset being sent.
+    """
+    if datatype == 'Boolean':
+        code = 1
+    elif datatype == 'Integer':
+        code = 2
+    elif datatype == 'Double':
+        code = 3
+    elif datatype == 'String':
+        code = 4
+    elif datatype == 'BooleanMat':
+        code = 5
+    elif datatype == 'IntMat':
+        code = 6
+    elif datatype == 'DoubleMat':
+        code = 7
+    elif datatype == 'MatArray':
+        code = 8
+    elif datatype == 'StringArray':
+        code = 9
+    elif datatype == 'CompressedMat':
+        code = 10
+    else:
+        raise IOError('FormatToCode error message: data type not supported yet!')
+    return code
+    # }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/convert2str.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/convert2str.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/convert2str.m	(revision 27955)
@@ -0,0 +1,130 @@
+function str = convert2str(field)
+
+	str = parsedisplay(field);
+
+end %function
+
+function str = parsedisplay(field) % {{{
+
+	%string
+	if ischar(field),
+
+		if length(field)>30;
+			%str = displayunit('not displayed');
+            str=field;
+		else
+			str = displayunit(['''' field '''']);
+		end
+
+	%cell
+    elseif iscell(field),
+		str = cell_display(field),
+
+    %structure
+	elseif isstruct(field),
+		str = struct_display(field),
+        
+	%numeric
+	elseif isnumeric(field)
+
+		%get size
+		fieldsize=size(field);
+
+		%double
+		if max(fieldsize)==1,
+			str = displayunit(num2str(field)),
+			%matrix
+		else
+			str = displayunit(['(' num2str(fieldsize(1)) 'x' num2str(fieldsize(2)) ')']),
+        end
+        
+ 	%logical
+	elseif islogical(field)
+
+		%get size
+		fieldsize=size(field);
+
+		%single value
+		if max(fieldsize)==1,
+			if (field)
+				str = displayunit('true');
+			else
+				str = displayunit('false');
+			end
+		%matrix
+		else
+			str = displayunit(name,['(' num2str(fieldsize(1)) 'x' num2str(fieldsize(2)) ')']);
+        end    
+        
+    %misc/
+    else
+        str = displayunit(field);
+
+    end
+
+end
+
+function str = displayunit(characterization)% {{{
+
+	%take care of characterization
+	if (strcmp(characterization,['''' '''']) || strcmp(characterization,'NaN')),
+		characterization='N/A';
+	end
+	if length(characterization)>15,
+		characterization=[characterization(1:12) '...'];
+    end
+    
+    str = characterization;
+	
+end% }}}
+
+function str = cell_display(field)
+
+	%initialization
+	string='{';
+
+	%go through the cell and fill string
+	if length(field)<5;
+		for i=1:length(field),
+			if ischar(field{i}),
+				string=[string ''''  field{i} ''','];
+			elseif (isnumeric(field{i}) & length(field{i})==1)
+				string=[string num2str(field{i}) ',' ];
+			else
+				string='{';
+				break
+			end
+		end
+	end
+	if strcmp(string,'{'),
+		string=['(' num2str(size(field,1)) 'x' num2str(size(field,2)) ')'];
+	else
+		string=[string(1:end-1) '}'];
+    end
+    str = string;
+    
+    %disp(sprintf(string));
+end
+
+function str = struct_display(field) % {{{
+
+	if ~isempty(fieldnames(field))
+		displayunit('(structure)'),
+
+		structure_fields=fieldnames(field);
+
+		for i=1:length(structure_fields),
+
+			%get current field
+			sfield=field.(structure_fields{i});
+
+			%display value
+			%parsedisplay(sfield);
+            str = sfield;
+		end
+
+	else
+		%displayunit('N/A'),
+        str = 'N/A';
+	end
+end% }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadmultipleresultsfromcluster.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadmultipleresultsfromcluster.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadmultipleresultsfromcluster.m	(revision 27955)
@@ -0,0 +1,34 @@
+function md_list=loadmultipleresultsfromcluster(md_list)
+%LOADMULTIPLERESULTSFROMCLUSTER - load multiple results of solution sequences from cluster
+%
+%   Usage:
+%      md_list=loadresultsfromcluster(md_list);
+
+nummodels=length(md_list);
+
+%Get cluster settings
+cluster=md_list{1}.cluster;
+name=md_list{1}.name;
+cluster_rc_location=which('cluster.rc');
+[codepath,executionpath,login]=ClusterParameters(cluster,cluster_rc_location);
+
+%Remote tar: 
+disp('tarring results');
+issmssh(cluster,['"cd ' executionpath ' && rm -rf file_list.txt ModelResults.tar.gz && find -iname ''*_*vs*.outbin'' > file_list.txt && tar zcvf ModelResults.tar.gz --files-from file_list.txt  && rm -rf file_list.txt "']);
+
+%copy results from cluster to present directory
+scpin(cluster, executionpath, {'ModelResults.tar.gz'});
+
+%untar:
+!tar -zxvf ModelResults.tar.gz
+
+%ok, go through list and load results from disk: 
+for i=1:nummodels,
+	%load  results for this model
+	md_list{i}=loadresultsfromdisk(md_list{i},[md_list{i}.name '.outbin']);
+
+	delete([name '.outbin']);
+end
+
+%erase files 
+delete('ModelResults.tar.gz');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultfromdisk.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultfromdisk.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultfromdisk.m	(revision 27955)
@@ -0,0 +1,81 @@
+function [variable fpos]=loadresultfromdisk(filename,step,name,varargin)
+%LOADRESULTFROMDISK - load specific result of solution sequence from disk file "filename"
+%
+%   Usage:
+%      variable=loadresultfromdisk(filename,step,name);
+
+	%Open file
+	fid=fopen(filename,'rb');
+	if(fid==-1),
+		error(['loadresultsfromdisk error message: could not open ',filename,' for binary reading']);
+	end
+
+	if nargin==4,
+		%Put the pointer on the right position in the file:
+		fpos=varargin{1};
+		fseek(fid,fpos,'bof');
+	end
+
+	while 1,
+
+		%read field
+		fpos=ftell(fid);
+		[length,count]=fread(fid,1,'int');
+
+		if count==0,
+			break;
+			%we are done, break;
+		else
+			fieldname=fread(fid,length,'char');
+			fieldname=fieldname(1:end-1)';
+			fieldname=char(fieldname);
+			rtime=fread(fid,1,'double');
+			rstep=fread(fid,1,'int');
+
+			%check on field: 
+			if ((step==rstep) & (strcmpi(name,fieldname))),
+				%ok, go read the result really: 
+				type=fread(fid,1,'int');
+				M=fread(fid,1,'int');
+				if type==1,
+					field=fread(fid,M,'double');
+				elseif type==2,
+					field=fread(fid,M,'char');
+					field=char(field(1:end-1)');
+				elseif type==3,
+					N=fread(fid,1,'int');
+					field=fread(fid,[N M],'double')';
+				elseif type==4,
+					N=fread(fid,1,'int');
+					field=fread(fid,[N M],'int')';
+				elseif type==5,
+					N=fread(fid,1,'int');
+					fieldr=fread(fid,[N M],'double')';
+					fieldi=fread(fid,[N M],'double')';
+					field=complex(fieldr,fieldi);
+				else
+					error(['cannot read data of type ' num2str(type) ]);
+				end
+				variable=field;
+				break;
+			else
+				%just skim to next results.
+				type=fread(fid,1,'int');
+				M=fread(fid,1,'int');
+				if type==1,
+					fseek(fid,8*M,'cof');
+				elseif type==2,
+					fseek(fid,M,'cof');
+				elseif type==3,
+					N=fread(fid,1,'int');
+					fseek(fid,M*N*8,'cof');
+				elseif type==4,
+					N=fread(fid,1,'int');
+					fseek(fid,M*N*4,cof);
+				else
+					error(['cannot read data of type ' num2str(type) ]);
+				end
+			end
+		end
+	end
+	fclose(fid);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultfromdisk.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultfromdisk.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultfromdisk.py	(revision 27955)
@@ -0,0 +1,97 @@
+import struct
+import numpy as np
+
+
+def loadresultfromdisk(filename, step, name, *args):  # {{{
+    """LOADRESULTFROMDISK - load specific result of solution sequence from disk
+    file "filename"
+
+    Usage:
+        variable = loadresultsfromdisk(filename, step, name)
+
+    TODO:
+    - Test this module against output of src/m/solve/loadresultsfromdisk.m
+    """
+
+    # Open file
+    try:
+        fid = open(filename, 'rb')
+    except IOError:
+        raise IOError("loadresultsfromdisk error message: could not open {} for binary reading".format(filename))
+
+    if len(args) == 4:
+        # Put the pointer on the right position in the file
+        fpos = args[0]
+        fid.seek(fpos)
+
+    while True:
+        # read field
+        fpos = tell(fid)
+        length = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+
+        fieldname = struct.unpack('{}s'.format(length), fid.read(length))[0][:-1]
+        fieldname = fieldname.decode()  #strings are binaries when stored so need to be converted back
+        rtime = struct.unpack('d', fid.read(struct.calcsize('d')))[0]
+        rstep = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+
+        # TODO: Check number of characters unpacked and break if need be (see
+        #       src/m/solve/loadresultfromdisk.py)
+
+        if (rstep == step) and (fieldname == name):
+            # ok, go read the result really
+            datatype = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+            M = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+            if datatype == 1:
+                field = np.array(struct.unpack('{}d'.format(M), fid.read(M * struct.calcsize('d'))), dtype=float)
+            elif datatype == 2:
+                field = struct.unpack('{}s'.format(M), fid.read(M))[0][:-1]
+                field = field.decode()
+            elif datatype == 3:
+                N = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+                field = np.zeros(shape=(M, N), dtype=float)
+                for i in range(M):
+                    field[i, :] = struct.unpack('{}d'.format(N), fid.read(N * struct.calcsize('d')))
+            elif datatype == 4:
+                N = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+                field = np.zeros(shape=(M, N), dtype=int)
+                for i in range(M):
+                    field[i, :] = struct.unpack('{}i'.format(N), fid.read(N * struct.calcsize('i')))
+            elif datatype == 5:
+                # TODO:
+                # - Check that the following results in the same output as 
+                # MATLAB
+                #
+                N = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+                fieldr = np.zeros(shape=(M, N), dtype=float)
+                fieldi = np.zeros(shape=(M, N), dtype=float)
+                for i in range(M):
+                    fieldr[i, :] = struct.unpack('{}d'.format(N), fid.read(N * struct.calcsize('d')))
+                    fieldi[i, :] = struct.unpack('{}d'.format(N), fid.read(N * struct.calcsize('d')))
+                field = np.vectorize(complex)(fieldr, fieldi)
+                print(field)
+            else:
+                raise TypeError("cannot read data of type {}".format(datatype))
+
+            variable = field
+            break
+        else:
+            # just skim to next results
+            datatype = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+            M = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+            if datatype == 1:
+                fid.seek(M * 8, 1)
+            elif datatype == 2:
+                fid.seek(M, 1)
+            elif datatype == 3:
+                N = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+                fid.seek(N * M * 8, 1)
+            elif datatype == 4:
+                N = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+                fid.seek(N * M * 4, 1)
+            else:
+                raise TypeError("cannot read data of type {}".format(datatype))
+
+    fid.close()
+
+    return (variable, fpos)
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsfrombuffer.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsfrombuffer.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsfrombuffer.js	(revision 27955)
@@ -0,0 +1,25 @@
+function loadresultsfrombuffer(md,buffer,buffersize){
+//LOADRESULTSFROMBUFFER - load results of solution sequence from memory buffer 
+//
+//   Usage:
+//      loadresultsfrombuffer(md,buffer,buffersize);
+
+	//check number of inputs/outputs
+	if (arguments.length!=3) throw Error('loadresultsfrombuffer error message: wrong usage!');
+
+	if (!md.qmu.isdakota){
+
+		//initialize md.results if not a structure yet
+		if (MapIsEmpty(md.results)) md.results={};
+
+		//load results: 
+		structure=parseresultsfrombuffer(md,buffer,buffersize);
+
+		//load structure onto results: 
+		md.results=structure;
+
+		return md;
+
+	}
+	else throw Error('loadresultsfrombuffer error message: qmu results not supported yet!');
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsfromcluster.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsfromcluster.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsfromcluster.m	(revision 27955)
@@ -0,0 +1,76 @@
+function md=loadresultsfromcluster(md,varargin)
+%LOADRESULTSFROMCLUSTER - load results of solution sequence from cluster
+%
+%   Usage:
+%      md=loadresultsfromcluster(md,varargin);
+%
+%      Options include: 'runtimename', 'nolog'
+%
+%   Example:
+%     md=loadresultsfromcluster(md,'runtimename','test101-06-15-2021-13-24-18-4883');
+
+%process options: 
+options=pairoptions(varargin{:});
+nolog=getfieldvalue(options,'nolog',0);
+md.private.runtimename = getfieldvalue(options,'runtimename',md.private.runtimename);
+
+%retrieve cluster, to be able to call its methods
+cluster=md.cluster;
+
+%Download outputs from the cluster
+if ~nolog,
+	filelist={[md.miscellaneous.name '.outlog'],[md.miscellaneous.name '.errlog']};
+else
+	filelist={};
+end
+if md.qmu.isdakota,
+	filelist{end+1}=[md.miscellaneous.name '.qmu.err'];
+	filelist{end+1}=[md.miscellaneous.name '.qmu.out'];
+	if isfield(md.qmu.params,'tabular_graphics_data'),
+		if md.qmu.params.tabular_graphics_data==true,
+			filelist{end+1}='dakota_tabular.dat';
+		end
+	end
+	if md.qmu.output & strcmpi(md.qmu.statistics.method(1).name,'None'),
+		if strcmpi(md.qmu.method.method,'nond_sampling'),
+			for i=1:md.qmu.method.params.samples
+				filelist{end+1}=[md.miscellaneous.name '.outbin.' num2str(i)];
+			end
+		end
+	end
+	if ~strcmpi(md.qmu.statistics.method(1).name,'None'),
+		filelist{end+1}=[md.miscellaneous.name '.stats'];
+	end
+else
+	filelist{end+1}=[md.miscellaneous.name '.outbin'];
+end
+Download(cluster,md.private.runtimename,filelist);
+
+%If we are here, no errors in the solution sequence, call loadresultsfromdisk.
+md=loadresultsfromdisk(md,[md.miscellaneous.name '.outbin']);
+
+%erase the log and output files
+for i=1:numel(filelist)
+	filename = filelist{i};
+	if exist(filename)
+		delete(filename)
+	end
+end
+if exist([md.private.runtimename '.tar.gz']) & ~ispc(),
+	delete([md.private.runtimename '.tar.gz']);
+end
+
+%erase input file if run was carried out on same platform.
+hostname=oshostname();
+if strcmpi(hostname,cluster.name),
+	delete([md.miscellaneous.name '.bin']);
+	delete([md.miscellaneous.name '.toolkits']);
+	if md.qmu.isdakota
+		delete([md.miscellaneous.name '.qmu.in']);
+	end
+	if ~ispc(),
+		delete([md.miscellaneous.name '.queue']);
+	else
+		delete([md.miscellaneous.name '.bat']);
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsfromcluster.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsfromcluster.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsfromcluster.py	(revision 27955)
@@ -0,0 +1,83 @@
+import os
+import subprocess
+
+from helpers import *
+from loadresultsfromdisk import loadresultsfromdisk
+from MatlabFuncs import *
+from pairoptions import pairoptions
+
+
+def remove(filename):  #{{{
+    try:
+        os.remove(filename)
+    except OSError:
+        print(('WARNING: ' + filename + ' does not exist'))
+# }}}
+
+
+def loadresultsfromcluster(md, *args):  #{{{
+    """loadresultsfromcluster - load results of solution sequence from cluster
+
+    Usage:
+        md = loadresultsfromcluster(md)
+        md = loadresultsfromcluster(md, 'runtimename', runtimename)
+
+        Options include: 'runtimename', 'nolog'
+
+    Example:
+        md = loadresultsfromcluster(md, 'runtimename', 'test101-06-15-2021-13-24-18-4883')
+    """
+
+    # Process options
+    options = pairoptions(*args)
+    nolog = options.getfieldvalue('nolog', 0)
+    md.private.runtimename = options.getfieldvalue('runtimename', md.private.runtimename)
+
+    # Retrieve cluster, to be able to call its methods
+    cluster = md.cluster
+
+    # Download outputs from the cluster
+    if not nolog:
+        filelist = [md.miscellaneous.name + '.outlog', md.miscellaneous.name + '.errlog']
+    else:
+        filelist = []
+    if md.qmu.isdakota:
+        filelist.append(md.miscellaneous.name + '.qmu.err')
+        filelist.append(md.miscellaneous.name + '.qmu.out')
+        if 'tabular_graphics_data' in fieldnames(md.qmu.params):
+            if md.qmu.params.tabular_graphics_data:
+                filelist.append('dakota_tabular.dat')
+        if md.qmu.output and md.qmu.statistics.method[0]['name'] == 'None':
+            if md.qmu.method.method == 'nond_sampling':
+                for i in range(md.qmu.method.params.samples):
+                    filelist.append(md.miscellaneous.name + '.outbin.' + str(i + 1))
+        if md.qmu.statistics.method[0]['name'] != 'None':
+            filelist.append(md.miscellaneous.name + '.stats')
+    else:
+        filelist.append(md.miscellaneous.name + '.outbin')
+    cluster.Download(md.private.runtimename, filelist)
+
+    # If we are here, no errors in the solution sequence, call loadresultsfromdisk
+    md = loadresultsfromdisk(md, md.miscellaneous.name + '.outbin')
+
+    # Erase the log and output files
+    for i in range(len(filelist)):
+        filename = filelist[i]
+        remove(filename)
+    if not ispc():
+        remove(md.private.runtimename + '.tar.gz')
+
+    # Erase input file if run was carried out on same platform
+    hostname = oshostname()
+    if hostname == cluster.name:
+        remove(md.miscellaneous.name + '.bin')
+        remove(md.miscellaneous.name + '.toolkits')
+        if md.qmu.isdakota:
+            remove(md.miscellaneous.name + '.qmu.in')
+        if not ispc():
+            remove(md.miscellaneous.name + '.queue')
+        else:
+            remove(md.miscellaneous.name + '.bat')
+
+    return md
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsfromclusterslm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsfromclusterslm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsfromclusterslm.m	(revision 27955)
@@ -0,0 +1,14 @@
+function slm=loadresultsfromclusterslm(slm)
+%LOADRESULTSFROMCLUSTERSLM: download results.
+%
+%   Usage:
+%      slm=loadresultsfromclusterslm(slm)
+%
+%   Examples:
+%      slm=loadresultsfromclusterslm(slm);
+
+	%go through icecaps and download results
+	for i=1:length(slm.icecaps),
+		slm.icecaps{i}=loadresultsfromcluster(slm.icecaps{i},'nolog',1);
+	end
+	slm.earth=loadresultsfromcluster(slm.earth,'nolog',1);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsfromdisk.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsfromdisk.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsfromdisk.m	(revision 27955)
@@ -0,0 +1,70 @@
+function md=loadresultsfromdisk(md,filename)
+%LOADRESULTSFROMDISK - load results of solution sequence from disk file "filename"            
+%
+%   Usage:
+%      md=loadresultsfromdisk(md,filename);
+
+%check number of inputs/outputs
+if ((nargin~=2) | (nargout~=1)),
+	help loadresultsfromdisk;
+	error('loadresultsfromdisk: error message.');
+end
+
+if ~md.qmu.isdakota,
+	%Check that file exists
+	if ~exist(filename,'file'),
+		warning(sprintf(['\n'...
+			'============================================================\n'...
+			'   Binary file ' filename ' not found!                      \n'... 
+			'                                                            \n'...
+			'   This typically happens when the run crashed.             \n'...
+			'   Please check for error messages above or in the outlog   \n'...
+			'============================================================\n'...
+			]));
+		return;
+	end
+
+	%initialize md.results if not a structure yet
+	if ~isstruct(md.results),
+		md.results=struct();
+	end
+
+	%load results onto model
+	structure=parseresultsfromdisk(md,filename,~md.settings.io_gather);
+	if isempty(fieldnames(structure)),
+		error(['No result found in binary file ' filename '. Check for solution crash.']);
+	end
+	if isempty(structure(1).SolutionType),
+		if ~isempty(structure(end).SolutionType),
+			structure(1).SolutionType=structure(end).SolutionType;
+		else
+			warning(['Cannot find a solution type in the results! Ascribing one: ''NoneSolution''.']);
+			structure(1).SolutionType='NoneSolution';
+		end
+	end
+	md.results.(structure(1).SolutionType)=structure;
+
+	%recover solution_type from results
+	md.private.solution=structure(1).SolutionType;
+
+	%read log files onto fields
+	if exist([md.miscellaneous.name '.errlog'],'file'),
+		md.results.(structure(1).SolutionType)(1).errlog=char(textread([md.miscellaneous.name '.errlog'],'%s','delimiter','\n'));
+	else
+		md.results.(structure(1).SolutionType)(1).errlog='';
+	end
+
+	if exist([md.miscellaneous.name '.outlog'],'file'),
+		md.results.(structure(1).SolutionType)(1).outlog=char(textread([md.miscellaneous.name '.outlog'],'%s','delimiter','\n'));
+	else
+		md.results.(structure(1).SolutionType)(1).outlog='';
+	end
+
+	if ~isempty(md.results.(structure(1).SolutionType)(1).errlog),
+		disp(['loadresultsfromdisk info message: error during solution. Check your errlog and outlog model fields']);
+	end
+
+%postprocess qmu results if necessary
+else
+	md=postqmu(md);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsfromdisk.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsfromdisk.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsfromdisk.py	(revision 27955)
@@ -0,0 +1,76 @@
+import os
+from helpers import fieldnames, struct
+from parseresultsfromdisk import parseresultsfromdisk
+from postqmu import postqmu
+from results import results
+
+
+def loadresultsfromdisk(md, filename):
+    """LOADRESULTSFROMDISK - load results of solution sequence from disk file
+    "filename"
+
+    Usage:
+        md = loadresultsfromdisk(md=False, filename=False)
+    """
+
+    # Check number of inputs/outputs
+    if not md or not filename:
+        raise ValueError('loadresultsfromdisk: error message.')
+
+    if not md.qmu.isdakota:
+
+        # Check that file exists
+        if not os.path.exists(filename):
+            err_msg = '============================================================\n'
+            err_msg += '   Binary file {} not found                                 \n'.format(filename)
+            err_msg += '                                                            \n'
+            err_msg += '   This typically happens when the run crashed.             \n'
+            err_msg += '   Please check for error messages above or in the outlog   \n'
+            err_msg += '============================================================\n'
+            print(err_msg)
+            return
+
+        # Initialize md.results if it is not a structure yet
+        if not isinstance(md.results, results):
+            md.results = results()
+
+        # Load results onto model
+        structure = parseresultsfromdisk(md, filename, not md.settings.io_gather)
+        if not structure:
+            raise RuntimeError('No result found in binary file \'{}\'. Check for solution crash.'.format(filename))
+        if not hasattr(structure[0], 'SolutionType'):
+            if hasattr(structure[-1], 'SolutionType'):
+                structure[0].SolutionType = structure[-1].SolutionType
+            else:
+                print('Cannot find a solution type in the results! Ascribing one: \'NoneSolution\'.')
+                structure[0].SolutionType = 'NoneSolution'
+        setattr(md.results, structure[0].SolutionType, structure)
+
+        # Recover solution_type from results
+        md.private.solution = structure[0].SolutionType
+
+        # Read log files onto fields
+        if os.path.exists(md.miscellaneous.name + '.errlog'):
+            with open(md.miscellaneous.name + '.errlog', 'r') as f:
+                setattr(getattr(md.results, structure[0].SolutionType)[0], 'errlog', [line[:-1] for line in f])
+        else:
+            setattr(getattr(md.results, structure[0].SolutionType)[0], 'errlog', '')
+
+        if os.path.exists(md.miscellaneous.name + '.outlog'):
+            with open(md.miscellaneous.name + '.outlog', 'r') as f:
+                setattr(getattr(md.results, structure[0].SolutionType)[0], 'outlog', [line[:-1] for line in f])
+        else:
+            setattr(getattr(md.results, structure[0].SolutionType)[0], 'outlog', '')
+
+        if getattr(md.results, structure[0].SolutionType)[0].errlog:
+            print('loadresultsfromdisk info message: error during solution. Check your errlog and outlog model fields.')
+
+        # If only one solution, extract it from list for user friendliness
+        if len(structure) == 1 and structure[0].SolutionType != 'TransientSolution':
+            setattr(md.results, structure[0].SolutionType, structure[0])
+
+    # Postprocess QMU results if necessary
+    else:
+        md = postqmu(md)
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsslm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsslm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/loadresultsslm.m	(revision 27955)
@@ -0,0 +1,4 @@
+function slm=loadresultslm(slm)
+
+	for i=1:length(slm.icecaps), slm.icecaps{i}=loadresultsfromcluster(slm.icecaps{i});end;
+	slm.earth=loadresultsfromcluster(slm.earth);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/marshall.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/marshall.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/marshall.js	(revision 27955)
@@ -0,0 +1,35 @@
+function marshall(md){
+//MARSHALL - outputs a typed array buffer to be send to the issm module.
+//
+//   The routine creates a compatible binary stream from @model md
+//   This binary stream will be used for single cpu runs using the issm module.
+//
+//   Usage:
+//      fid=marshall(md)
+
+	if (md.verbose.solution){
+		console.log('marshalling file ' + md.miscellaneous.name + '.bin');
+	}
+
+	//open file for binary writing
+	var fid=new fileptr('mode','w');
+
+	//Go through all model fields: check that it is a class and call checkconsistency
+	for (field in md){
+
+		//Some properties do not need to be marshalled
+		if (field == 'results' | field =='radaroverlay' | field == 'toolkits' | field =='cluster' | field == 'priv') continue;
+		
+		//Check that current field is a class
+		if(typeof md[field] == 'function'){
+			continue;
+		}
+
+		//Marshall current object
+		md[field].marshall(md,['md.'+field],fid);
+	}
+
+	//Last, write "md.EOF" to make sure that the binary file is not corrupt
+	WriteData(fid,'XXX','name','md.EOF','data',true,'format','Boolean');
+	return fid;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/marshall.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/marshall.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/marshall.m	(revision 27955)
@@ -0,0 +1,52 @@
+function marshall(md)
+%MARSHALL - outputs a compatible binary file from @model md, for certain solution type.
+%
+%   The routine creates a compatible binary file from @model md
+%   This binary file will be used for parallel runs in JPL-package
+%
+%   Usage:
+%      marshall(md)
+
+if md.verbose.solution,
+	disp(['marshalling file ' md.miscellaneous.name '.bin']);
+end
+
+%open file for binary writing
+fid=fopen([ md.miscellaneous.name '.bin'],'wb');
+if fid==-1,
+	error(['marshall error message: could not open ' [md.miscellaneous.name '.bin'],' file for binary writing']);
+end
+
+% Go through all model fields: check that it is a class and call checkconsistency
+fields=sort(properties('model')); %sort fields so that comparison of binary files is easier
+for i=1:length(fields),
+	field=fields{i};
+
+	%Some properties do not need to be marshalled
+	if ismember(field,{'results' 'radaroverlay' 'toolkits' 'cluster' 'private'}),
+		continue;
+	end
+
+	%Check that current field is an object
+	if ~isobject(md.(field))
+		error(['field ''' char(field) ''' is not an object']);
+	end
+
+	%Marshall current object
+	%disp(['marshalling ' field '...']); %Uncomment for debugging
+	marshall(md.(field),['md.' field],md,fid);
+end
+
+%Last, write "md.EOF" to make sure that the binary file is not corrupt
+WriteData(fid,'XXX','name','md.EOF','data',true,'format','Boolean');
+
+%close file
+st=fclose(fid);
+
+if st==-1,
+	error(['marshall error message: could not close file ' [md.miscellaneous.name '.bin']]);
+end
+
+% Uncomment the following to make a copy of the binary input file for debugging 
+% purposes (can be fed into scripts/BinRead.py).
+% copyfile([md.miscellaneous.name '.bin'], [md.miscellaneous.name '.m.bin'])
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/marshall.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/marshall.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/marshall.py	(revision 27955)
@@ -0,0 +1,53 @@
+import subprocess
+
+from WriteData import WriteData
+
+
+def marshall(md):
+    """marshall - outputs a compatible binary file from @model md, for certain solution type.
+
+    The routine creates a compatible binary file from @model md
+    his binary file will be used for parallel runs in JPL-package
+
+    Usage:
+        marshall(md)
+    """
+
+    if md.verbose.solution:
+        print('marshalling file \'{}\'.bin'.format(md.miscellaneous.name))
+
+    # Open file for binary writing
+    try:
+        fid = open(md.miscellaneous.name + '.bin', 'wb')
+    except IOError as e:
+        print('marshall error message: could not open \'{}.bin\' file for binary writing due to: {}'.format(md.miscellaneous.name, e))
+
+    fields = md.properties()
+    fields.sort() # sort fields so that comparison of binary files is easier
+    for field in fields:
+        # Some properties do not need to be marshalled
+        if field in ['results', 'radaroverlay', 'toolkits', 'cluster', 'private']:
+            continue
+
+        # Check that current field is an object
+        if not hasattr(getattr(md, field), 'marshall'):
+            raise TypeError('field \'{}\' is not an object.'.format(field))
+
+        # Marshall current object
+        #print('marshalling {} ...'.format(field) # Uncomment for debugging
+        exec('md.{}.marshall(\'md.{}\', md, fid)'.format(field, field))
+
+    #Last, write "md.EOF" to make sure that the binary file is not corrupt
+    WriteData(fid, 'XXX', 'name', 'md.EOF', 'data', True, 'format', 'Boolean')
+
+    #close file
+    try:
+        fid.close()
+
+    except IOError as e:
+        print('marshall error message: could not close \'{}.bin\' file for binary writing due to: {}'.format(md.miscellaneous.name, e))
+
+    # Uncomment the following to make a copy of the binary input file for 
+    # debugging purposes (can be fed into scripts/BinRead.py).
+    # copy_cmd = 'cp {}.bin {}.py.bin'.format(md.miscellaneous.name, md.miscellaneous.name)
+    # subprocess.call(copy_cmd, shell=True)
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/outbinread.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/outbinread.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/outbinread.m	(revision 27955)
@@ -0,0 +1,164 @@
+function results = outbinread(md,filename,steps),
+%OUTBINREAD - read specific steps in outbin file
+%
+%   Usage:
+%      results = outbinread(md,filename,steps)
+%
+%   Example:
+%      results = outbinread(md,'dir/test.outbin',1:10)
+
+if ~exist(filename,'file'),
+	error(['Binary file ' filename ' not found']);
+end
+
+%Initialize output
+results=struct();
+
+%Open file
+fid=fopen(filename,'rb');
+if(fid==-1),
+	error(['could not open ',filename,' for binary reading']);
+end
+
+%Read fields until the end of the file.
+result  = ReadData(fid,md);
+if isempty(result), error(['no results found in binary file ' filename]); end
+check_nomoresteps=0;
+counter = 1;
+step    = result.step;
+while ~isempty(result), 
+
+	if check_nomoresteps,
+		%check that the new result does not add a step, which would be an error: 
+		if result.step>=1,
+			error('parsing results for a steady-state core, which incorporates transient results!');
+		end
+	end
+
+	%Check step, increase counter if this is a new step
+	if(step~=result.step & result.step>1)
+		counter = counter + 1;
+		step    = result.step;
+	end
+
+	%Add result
+	if(result.step==0),
+		%if we have a step = 0, this is a steady state solution, don't expect more steps. 
+		index = 1;
+		check_nomoresteps=1;
+	elseif(result.step==1),
+		index = 1;
+	else
+		index = counter;
+	end
+	pos=find(result.step==steps);
+	if ~isempty(pos),
+		results(pos).(result.fieldname)=result.field;
+		if(result.step~=-9999),
+			results(pos).step=result.step;
+		end
+		if(result.time~=-9999),
+			results(pos).time=result.time;
+		end
+	end
+	if result.step>max(steps(:)),
+		%we are done!
+		return;
+	end
+
+	%read next result
+	try,
+		result  = ReadData(fid,md);
+	catch me,
+		disp('WARNING: file corrupted, trying partial recovery');
+		result=[];
+	end
+
+end
+
+fclose(fid);
+
+function result=ReadData(fid,md) % {{{
+
+%read field
+[length,count]=fread(fid,1,'int');
+
+if count==0,
+	result=struct([]);
+else
+	fieldname=fread(fid,length,'char');
+	fieldname=fieldname(1:end-1)';
+	fieldname=char(fieldname);
+	time=fread(fid,1,'double');
+	step=fread(fid,1,'int');
+
+	type=fread(fid,1,'int');
+	M=fread(fid,1,'int');
+	if type==1,
+		field=fread(fid,M,'double');
+	elseif type==2,
+		field=fread(fid,M,'char');
+		field=char(field(1:end-1)');
+	elseif type==3,
+		N=fread(fid,1,'int');
+		field=transpose(fread(fid,[N M],'double'));
+	else
+		error(['cannot read data of type ' num2str(type) ]);
+	end
+
+	%Process units here FIXME: this should not be done here!
+	yts=md.constants.yts;
+	if strcmp(fieldname,'BalancethicknessThickeningRate'),
+		field = field*yts;
+	elseif strcmp(fieldname,'HydrologyWaterVx'),
+		field = field*yts;
+	elseif strcmp(fieldname,'HydrologyWaterVy'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vx'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vy'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vz'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vel'),
+		field = field*yts;
+	elseif strcmp(fieldname,'BasalforcingsGroundediceMeltingRate'),
+		field = field*yts;
+	elseif strcmp(fieldname,'BasalforcingsFloatingiceMeltingRate'),
+		field = field*yts;
+	elseif strcmp(fieldname,'TotalFloatingBmb'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'TotalGroundedBmb'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'TotalSmb'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'TotalMelt'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'TotalRefreeze'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'SmbMassBalance'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbPrecipitation'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbRunoff'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbCondensation'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbAccumulation'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbMelt'),
+		field = field*yts;
+	elseif strcmp(fieldname,'CalvingCalvingrate'),
+		field = field*yts;
+	end
+
+	result.fieldname=fieldname;
+	result.time=time;
+	if result.time~=-9999,
+		result.time=time/yts;
+	end
+	result.step=step;
+	result.field=field;
+
+end
+% }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/parseresultsfrombuffer.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/parseresultsfrombuffer.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/parseresultsfrombuffer.js	(revision 27955)
@@ -0,0 +1,124 @@
+function parseresultsfrombuffer(md,buffer,buffersize){ //{{{
+
+	//Open file
+	results=[];
+	
+	var fid = new fileptr('mode','r','buffer',buffer,'buffersize',buffersize);
+
+	//Read fields until the end of the file.
+	result  = ReadData(fid,md);
+
+	if (MapIsEmpty(result))throw Error('no results found in binary memory buffer');
+	
+	var counter = 0;
+	var check_nomoresteps=0;
+	var step    = result['step'];
+	var index;
+
+	while (!MapIsEmpty(result)){
+
+		if (check_nomoresteps){
+			//check that the new result does not add a step, which would be an error: 
+			if (result['step']>=1)throw Error('parsing results for a steady-state core, which incorporates transient results!');
+		}
+
+		//Check step, increase counter if this is a new step
+		if(step!=result['step'] & result['step']>1){
+			counter = counter + 1;
+			step    = result['step'];
+		}
+
+		//Add result
+		if(result['step']==0){
+			//if we have a step = 0, this is a steady state solutoin, don't expect more steps. 
+			index = 0;
+			check_nomoresteps=1;
+		}
+		else if(result['step']==1){
+			index = 0;
+		}
+		else index = counter;
+
+		if(index>results.length-1)results.push({});
+		for(var i=results.length-1;i<index-1;i++)results[i]={};
+		results[index][result['fieldname']]=result['field'];
+		
+		//Get time and step
+		if(result['time']!=-9999){
+			results[index]['step']=result['step'];
+		}
+		if(result['time']!=-9999){
+			results[index]['time']=result['time'];
+		}
+
+		//read next result
+		result  = ReadData(fid,md);
+	}
+	return results;
+} // }}}
+function ReadData(fid,md){ //{{{
+//READDATA - ...
+//
+//   Usage:
+//      field=ReadData(fid,md)
+
+	//read field
+	var length=fid.fread(1,'int');
+	
+	var result={};
+
+	if (length!==-1){
+		fieldname=fid.fread(length,'char');
+		time=fid.fread(1,'double');
+		step=fid.fread(1,'int');
+		type=fid.fread(1,'int');
+		M=fid.fread(1,'int');
+
+		if (type==1) field=fid.fread(M,'double');
+		else if (type==2) field=fid.fread(M,'char');
+		else if (type==3) {
+			N=fid.fread(1,'int');
+			field=fid.fread(N*M,'double');
+		}
+		else if (type==4) {
+			N=fid.fread(1,'int');
+			field=fid.fread(N*M,'int');
+		}
+		else throw Error(sprintf("%s%i",'ReadData error message: cannot read data of type ',type));
+
+		//Process units here FIXME: this should not be done here!
+		var yts=md.constants.yts;
+		if (fieldname == 'BalancethicknessThickeningRate') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'HydrologyWaterVx') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'HydrologyWaterVy') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'Vx') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'Vy') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'Vz') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'Vel') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'BasalforcingsGroundediceMeltingRate') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'BasalforcingsFloatingiceMeltingRate') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'TotalSmb') for (var i=0;i<field.length;i++)field[i]= field[i]/Math.pow(10,12)*yts; //(GigaTon/year)
+		else if (fieldname == 'TotalSmbScaled') for (var i=0;i<field.length;i++)field[i]= field[i]/Math.pow(10,12)*yts; //(GigaTon/year)
+		else if (fieldname == 'GroundinglineMassFlux') for (var i=0;i<field.length;i++)field[i]= field[i]/Math.pow(10,12)*yts; //(GigaTon/year)
+		else if (fieldname == 'IcefrontMassFlux') for (var i=0;i<field.length;i++)field[i]= field[i]/Math.pow(10,12)*yts; //(GigaTon/year)
+		else if (fieldname == 'IcefrontMassFluxLevelset') for (var i=0;i<field.length;i++)field[i]= field[i]/Math.pow(10,12)*yts; //(GigaTon/year)
+		else if (fieldname == 'SmbMassBalance') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbPrecipitation') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbRunoff') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbCondensation') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbAccumulation') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbMelt') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'CalvingCalvingrate') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'Calvingratey') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'Calvingratex') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'CalvingMeltingrate') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+
+		result['fieldname']=fieldname;
+		result['time']=time;
+		if (result['time']!=-9999) result['time']=time/yts;
+		result['step']=step;
+		result['field']=field;
+	}
+	return result;
+
+} // }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/parseresultsfromdisk.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/parseresultsfromdisk.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/parseresultsfromdisk.m	(revision 27955)
@@ -0,0 +1,400 @@
+function results=parseresultsfromdisk(md,filename,iosplit) % {{{
+
+if iosplit,
+	results=parseresultsfromdiskiosplit(md,filename);
+else
+	results=parseresultsfromdiskioserial(md,filename);
+	%results=parseresultsfromdiskioserialsequential(md,filename);
+end
+% }}}
+function results=parseresultsfromdiskiosplit(md,filename) % {{{
+
+%Open file
+fid=fopen(filename,'rb');
+if(fid==-1),
+	error(['loadresultsfromdisk error message: could not open ',filename,' for binary reading']);
+end
+results=struct();
+
+%if we have done split I/O, ie, we have results that are fragmented across patches,
+%do a first pass, and figure out the structure of results
+result=ReadDataDimensions(fid);
+while ~isempty(result),
+
+	%Get time and step
+	results(result.step).step=result.step;
+	if result.time~=-9999,
+		results(result.step).time=result.time;
+	end
+
+	%Add result
+	results(result.step).(result.fieldname)=NaN;
+
+	%read next result
+	result=ReadDataDimensions(fid);
+end
+
+%do a second pass, and figure out the size of the patches
+fseek(fid,0,-1); %rewind
+result=ReadDataDimensions(fid);
+while ~isempty(result),
+	%read next result
+	result=ReadDataDimensions(fid);
+end
+
+%third pass, this time to read the real information
+fseek(fid,0,-1); %rewind
+result=ReadData(fid,md);
+while ~isempty(result),
+
+	%Get time and step
+	results(result.step).step=result.step;
+	if result.time~=-9999,
+		results(result.step).time=result.time;
+	end
+
+	%Add result
+	results(result.step).(result.fieldname)=result.field;
+
+	%read next result
+	try,
+		result=ReadData(fid,md);
+	catch me,
+		disp('WARNING: file corrupted, results partial recovery');
+		result=[];
+	end
+
+end
+
+%close file
+fclose(fid);
+% }}}
+function results=parseresultsfromdiskioserial(md,filename) % {{{
+
+%Open file
+fid=fopen(filename,'rb');
+if(fid==-1),
+	error(['loadresultsfromdisk error message: could not open ',filename,' for binary reading']);
+end
+
+%Collect all results in a cell array
+allresults = {};
+counter    = 1;
+while(true)
+
+	%read next result
+	try,
+		result = ReadData(fid,md);
+	catch me,
+		disp('WARNING: file corrupted, trying partial recovery');
+		continue;
+	end
+
+	%Have we reached the end of the file?
+	if isempty(result),
+		if counter==1
+			error(['no results found in binary file ' filename]);
+		else
+			break;
+		end
+	end
+
+	%Add result to cell array
+	allresults{counter} = result;
+	counter = counter+1;
+end
+fclose(fid);
+
+%Now, process all results and find out how many steps we have
+numresults = numel(allresults);
+allsteps   = zeros(numresults,1);
+for i=1:numresults
+	allsteps(i) = allresults{i}.step;
+end
+pos = find(allsteps~=-9999);
+allsteps = sort(unique(allsteps(pos)));
+
+%Ok, now construct structure
+results=struct();
+for i=1:numresults
+	result = allresults{i};
+	index = 1;
+	if(result.step ~= -9999)
+		index = find(result.step == allsteps);
+		results(index).step=result.step;
+	end
+	if(result.time~=-9999)
+		results(index).time=result.time;
+	end
+	results(index).(result.fieldname)=result.field;
+end
+% }}}
+function results=parseresultsfromdiskioserialsequential(md,filename) % {{{
+
+%Open file
+fid=fopen(filename,'rb');
+if(fid==-1),
+	error(['loadresultsfromdisk error message: could not open ',filename,' for binary reading']);
+end
+
+%first pass to figure out the steps we have: 
+steps=[];
+while  1, 
+	result  = ReadDataDimensions(fid);
+	if isempty(result),
+		break;
+	end
+	if result.step~=-9999,
+		steps=[steps result.step];
+	end
+end
+
+steps=unique(steps);
+
+%create structure: 
+results=struct('step',num2cell(steps));
+
+%second pass to fill the steps we have: 
+fseek(fid,0,-1); %rewind
+while  1, 
+	result  = ReadData(fid,md);
+	if isempty(result),
+		break;
+	end
+	if result.step==-9999,
+		result.step=1;
+		result.time=0;
+	end
+	%find where we are putting this step: 
+	ind=find(steps==result.step);
+	if isempty(ind),
+		error('could not find a step in our pre-structure! Something is very off!');
+	end
+
+	%plug: 
+	results(ind).time=result.time;
+	results(ind).(result.fieldname)=result.field;
+end
+fclose(fid);
+%}}}
+function result=ReadData(fid,md) % {{{
+
+%read field
+[length,count]=fread(fid,1,'int');
+
+if count==0,
+	result=struct([]);
+else
+	fieldname=fread(fid,length,'char');
+	fieldname=fieldname(1:end-1)';
+	fieldname=char(fieldname);
+	time=fread(fid,1,'double');
+	step=fread(fid,1,'int');
+
+	type=fread(fid,1,'int');
+	M=fread(fid,1,'int');
+	if type==1,
+		field=fread(fid,M,'double');
+	elseif type==2,
+		field=fread(fid,M,'char');
+		field=char(field(1:end-1)');
+	elseif type==3,
+		N=fread(fid,1,'int');
+		field=fread(fid,[N M],'double')';
+	elseif type==4,
+		N=fread(fid,1,'int');
+		field=fread(fid,[N M],'int')';
+	else
+		error(['cannot read data of type ' num2str(type) ]);
+	end
+
+	%Process units here FIXME: this should not be done here!
+	yts=md.constants.yts;
+	if strcmp(fieldname,'BalancethicknessThickeningRate'),
+		field = field*yts;
+	elseif strcmp(fieldname,'HydrologyWaterVx'),
+		field = field*yts;
+	elseif strcmp(fieldname,'HydrologyWaterVy'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vx'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vy'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vz'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vel'),
+		field = field*yts;
+	elseif strcmp(fieldname,'VxShear'),
+		field = field*yts;
+	elseif strcmp(fieldname,'VyShear'),
+		field = field*yts;
+	elseif strcmp(fieldname,'VxBase'),
+		field = field*yts;
+	elseif strcmp(fieldname,'VyBase'),
+		field = field*yts;
+	elseif strcmp(fieldname,'VxSurface'),
+		field = field*yts;
+	elseif strcmp(fieldname,'VySurface'),
+		field = field*yts;
+	elseif strcmp(fieldname,'VxAverage'),
+		field = field*yts;
+	elseif strcmp(fieldname,'VyAverage'),
+		field = field*yts;
+	elseif strcmp(fieldname,'VxDebris'),
+		field = field*yts;
+	elseif strcmp(fieldname,'VyDebris'),
+		field = field*yts;
+	elseif strcmp(fieldname,'BasalforcingsGroundediceMeltingRate'),
+		field = field*yts;
+	elseif strcmp(fieldname,'BasalforcingsFloatingiceMeltingRate'),
+		field = field*yts;
+	elseif strcmp(fieldname,'BasalforcingsSpatialDeepwaterMeltingRate'),
+		field = field*yts;
+	elseif strcmp(fieldname,'BasalforcingsSpatialUpperwaterMeltingRate'),
+		field = field*yts;
+	elseif strcmp(fieldname,'TotalFloatingBmb'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'TotalFloatingBmbScaled'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'TotalGroundedBmb'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'TotalGroundedBmbScaled'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'TotalSmb'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'TotalSmbScaled'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'TotalSmbMelt'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'TotalSmbRefreeze'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'GroundinglineMassFlux'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'IcefrontMassFlux'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'IcefrontMassFluxLevelset'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'SmbMassBalance'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbPrecipitation'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbRain'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbRunoff'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbRunoffSubstep'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbEvaporation'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbRefreeze'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbEC'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbAccumulation'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbMelt'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbMAdd'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbWAdd'),
+		field = field*yts;
+	elseif strcmp(fieldname,'CalvingCalvingrate'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Calvingratex'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Calvingratey'),
+		field = field*yts;
+	elseif strcmp(fieldname,'CalvingMeltingrate'),
+		field = field*yts;
+	elseif (strcmp(fieldname,'LoveKernelsReal') | strcmp(fieldname,'LoveKernelsImag')),
+		nlayer = md.materials.numlayers; 
+		degmax = md.love.sh_nmax; 
+		nfreq  = md.love.nfreq; 
+		r0 = md.love.r0; 
+		g0 = md.love.g0; 
+		mu0 = md.love.mu0;
+		rr = md.materials.radius; 
+		rho= md.materials.density;
+		rho_avg = sum(rho.*diff(rr.^3)/sum(diff(rr.^3)));
+		temp_field = cell(degmax+1,nfreq,nlayer+1,6);
+		for ii=1:degmax+1
+			for jj=1:nfreq
+				for kk=1:nlayer+1
+					if (kk<nlayer+1)
+						ll = (ii-1)*(nlayer+1)*6 + ((kk-1)*6+1) + 3;
+						temp_field{ii,jj,kk,1} = field(ll+(1-1),jj)*r0;		% mm = 4
+						temp_field{ii,jj,kk,2} = field(ll+(2-1),jj)*mu0;	% mm = 5 
+						temp_field{ii,jj,kk,3} = field(ll+(3-1),jj)*r0;		% mm = 6 
+						temp_field{ii,jj,kk,4} = field(ll+(4-1),jj)*mu0;	% mm = 1 
+						temp_field{ii,jj,kk,5} = field(ll+(5-1),jj)*r0*g0;	% mm = 2 
+						temp_field{ii,jj,kk,6} = field(ll+(6-1),jj)*g0;		% mm = 3 
+					else % surface  
+						ll = ii*(nlayer+1)*6 - 2; 
+						temp_field{ii,jj,kk,1} = field(ll+(1-1),jj)*r0;	
+						temp_field{ii,jj,kk,3} = field(ll+(2-1),jj)*r0;	
+						temp_field{ii,jj,kk,5} = field(ll+(3-1),jj)*r0*g0; 
+						% surface BC 
+						temp_field{ii,jj,kk,4} = 0; 
+						if (md.love.forcing_type==9)
+							temp_field{ii,jj,kk,2} = 0; 
+							temp_field{ii,jj,kk,6} = (2*ii-1)/r0 - ii*field(ll+(3-1),jj)*g0;
+						elseif (md.love.forcing_type==11)
+							temp_field{ii,jj,kk,2} = -(2*(ii-1)+1)*rho_avg/3; 
+							temp_field{ii,jj,kk,6} = (2*ii-1)/r0 - ii*field(ll+(3-1),jj)*g0; 
+						end
+					end
+				end
+			end
+		end
+		field=temp_field; 
+	end
+
+	if time~=-9999,
+		time=time/yts;
+	end
+
+	result.fieldname=fieldname;
+	result.time=time;
+	result.step=step;
+	result.field=field;
+end
+% }}}
+function result=ReadDataDimensions(fid) % {{{
+%READDATADIMENSIONS - read data dimensions, step and time, but not the data itself.
+%
+%   Usage:
+%      field=ReadDataDimensions(fid)
+
+%read field
+[length,count]=fread(fid,1,'int');
+
+if count==0,
+	result=struct([]);
+else
+	fieldname=fread(fid,length,'char');
+	fieldname=fieldname(1:end-1)';
+	fieldname=char(fieldname);
+	time=fread(fid,1,'double');
+	step=fread(fid,1,'int');
+
+	type=fread(fid,1,'int');
+	M=fread(fid,1,'int');
+	N=1; %default
+	if type==1,
+		fseek(fid,M*8,0);
+	elseif type==2,
+		fseek(fid,M,0);
+	elseif type==3,
+		N=fread(fid,1,'int');
+		fseek(fid,N*M*8,0);
+	else
+		error(['cannot read data of type ' num2str(type) ]);
+	end
+
+	result.fieldname=fieldname;
+	result.time=time;
+	result.step=step;
+	result.M=M;
+	result.N=N;
+end
+% }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/parseresultsfromdisk.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/parseresultsfromdisk.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/parseresultsfromdisk.py	(revision 27955)
@@ -0,0 +1,363 @@
+from collections import OrderedDict
+import struct
+import numpy as np
+from results import solution
+
+
+def parseresultsfromdisk(md, filename, iosplit):  #{{{
+    if iosplit:
+        saveres = parseresultsfromdiskiosplit(md, filename)
+    else:
+        saveres = parseresultsfromdiskioserial(md, filename)
+        #saveres = parseresultsfromdiskioserialsequential(md, filename)
+    return saveres
+# }}}
+
+
+def parseresultsfromdiskiosplit(md, filename):  # {{{
+    #Open file
+    try:
+        fid = open(filename, 'rb')
+    except IOError:
+        raise IOError("parseresultsfromdisk error message: could not open '{}' for binary reading.".format(filename))
+
+    saveres = []
+
+    #if we have done split I/O, ie, we have results that are fragmented across patches,
+    #do a first pass, and figure out the structure of results
+    loadres = ReadDataDimensions(fid)
+    while loadres:
+        # Get time and step
+        if loadres['step'] > len(saveres):
+            for i in range(len(saveres), loadres['step'] - 1):
+                saveres.append(None)
+            saveres.append(resultsclass.results())
+        setattr(saveres[loadres['step'] - 1], 'step', loadres['step'])
+        setattr(saveres[loadres['step'] - 1], 'time', loadres['time'])
+
+        # Add result
+        setattr(saveres[loadres['step'] - 1], loadres['fieldname'], float('NaN'))
+
+        # Read next result
+        loadres = ReadDataDimensions(fid)
+
+    #do a second pass, and figure out the size of the patches
+    fid.seek(0)  #rewind
+    loadres = ReadDataDimensions(fid)
+    while loadres:
+
+        #read next result
+        loadres = ReadDataDimensions(fid)
+
+    #third pass, this time to read the real information
+    fid.seek(0)  #rewind
+    loadres = ReadData(fid, md)
+    while loadres:
+
+        #Get time and step
+        if loadres['step'] > len(saveres):
+            for i in range(len(saveres), loadres['step'] - 1):
+                saveres.append(None)
+            saveres.append(saveresclass.saveres())
+        setattr(saveres[loadres['step'] - 1], 'step', loadres['step'])
+        setattr(saveres[loadres['step'] - 1], 'time', loadres['time'])
+
+        # Add result
+        setattr(saveres[loadres['step'] - 1], loadres['fieldname'], loadres['field'])
+
+        # Read next result
+        loadres = ReadData(fid, md)
+
+    # Close file
+    fid.close()
+
+    return saveres
+# }}}
+
+def parseresultsfromdiskioserial(md, filename):  # {{{
+    # Open file
+    try:
+        fid = open(filename, 'rb')
+    except IOError as e:
+        raise IOError('parseresultsfromdisk error message: could not open {} for binary reading'.format(filename))
+
+    # Collect all results in a list
+    allresults = []
+    while True:
+        # Read next result
+        result = ReadData(fid, md)
+
+        if result is None:
+            if allresults == []:
+                raise Exception('no results found in binary file ' + filename)
+            else:
+                break
+
+        allresults.append(result)
+    fid.close()
+
+    # Now, process all results and find out how many steps we have
+    numresults = len(allresults)
+    allsteps = np.zeros((numresults, 1))
+    for i in range(numresults):
+        allsteps[i] = allresults[i]['step']
+    pos = np.where(allsteps != -9999)
+    allsteps = np.sort(np.unique(allsteps[pos]))
+
+    # Ok, now construct structure
+    results = solution()
+
+    for i in range(numresults):
+        result = allresults[i]
+        index = 0
+        if result['step'] != -9999:
+            index = np.where(result['step'] == allsteps)[0][0]
+            setattr(results[index], 'step', result['step'])
+        if result['time'] != -9999:
+            setattr(results[index], 'time', result['time'])
+        setattr(results[index], result['fieldname'], result['field'])
+    return results
+# }}}
+
+def ReadData(fid, md):  # {{{
+    """READDATA
+
+    Usage:
+        field = ReadData(fid, md)
+    """
+
+    # Read field
+    try:
+        length = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+        fieldname = struct.unpack('{}s'.format(length), fid.read(length))[0][:-1]
+        fieldname = fieldname.decode() # strings are binaries when stored so need to be converted back
+        time = struct.unpack('d', fid.read(struct.calcsize('d')))[0]
+        step = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+        datatype = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+        M = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+        if datatype == 1:
+            field = np.array(struct.unpack('{}d'.format(M), fid.read(M * struct.calcsize('d'))), dtype=float)
+
+        elif datatype == 2:
+            field = struct.unpack('{}s'.format(M), fid.read(M))[0][:-1]
+            field = field.decode()
+
+        elif datatype == 3:
+            N = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+            #field = transpose(fread(fid, [N M], 'double'))
+            field = np.zeros(shape=(M, N), dtype=float)
+            for i in range(M):
+                field[i, :] = struct.unpack('{}d'.format(N), fid.read(N * struct.calcsize('d')))
+
+        elif datatype == 4:
+            N = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+            #field = transpose(fread(fid, [N M], 'int'))
+            field = np.zeros(shape=(M, N), dtype=int)
+            for i in range(M):
+                field[i, :] = struct.unpack('{}i'.format(N), fid.read(N * struct.calcsize('i')))
+
+        else:
+            raise TypeError('cannot read data of datatype {}'.format(datatype))
+
+        # Process units here FIXME: this should not be done here!
+        yts = md.constants.yts
+        if fieldname == 'BalancethicknessThickeningRate':
+            field = field * yts
+        elif fieldname == 'HydrologyWaterVx':
+            field = field * yts
+        elif fieldname == 'HydrologyWaterVy':
+            field = field * yts
+        elif fieldname == 'Vx':
+            field = field * yts
+        elif fieldname == 'Vy':
+            field = field * yts
+        elif fieldname == 'Vz':
+            field = field * yts
+        elif fieldname == 'Vel':
+            field = field * yts
+        elif fieldname == 'VxShear':
+            field = field * yts
+        elif fieldname == 'VyShear':
+            field = field * yts
+        elif fieldname == 'VxBase':
+            field = field * yts
+        elif fieldname == 'VyBase':
+            field = field * yts
+        elif fieldname == 'VxSurface':
+            field = field * yts
+        elif fieldname == 'VySurface':
+            field = field * yts
+        elif fieldname == 'VxAverage':
+            field = field * yts
+        elif fieldname == 'VyAverage':
+            field = field * yts
+        elif fieldname == 'VxDebris':
+            field = field * yts
+        elif fieldname == 'VyDebris':
+            field = field * yts
+        elif fieldname == 'BasalforcingsGroundediceMeltingRate':
+            field = field * yts
+        elif fieldname == 'BasalforcingsFloatingiceMeltingRate':
+            field = field * yts
+        elif fieldname == 'BasalforcingsSpatialDeepwaterMeltingRate':
+            field = field * yts
+        elif fieldname == 'BasalforcingsSpatialUpperwaterMeltingRate':
+            field = field * yts
+        elif fieldname == 'TotalFloatingBmb':
+            field = field / pow(10.0, 12) * yts # (GigaTon/year)
+        elif fieldname == 'TotalFloatingBmbScaled':
+            field = field / pow(10.0, 12) * yts # (GigaTon/year)
+        elif fieldname == 'TotalGroundedBmb':
+            field = field / pow(10.0, 12) * yts # (GigaTon/year)
+        elif fieldname == 'TotalGroundedBmbScaled':
+            field = field / pow(10.0, 12) * yts # (GigaTon/year)
+        elif fieldname == 'TotalSmb':
+            field = field / pow(10.0, 12) * yts # (GigaTon/year)
+        elif fieldname == 'TotalSmbScaled':
+            field = field / pow(10.0, 12) * yts # (GigaTon/year)
+        elif fieldname == 'TotalSmbMelt':
+            field = field / pow(10.0, 12) * yts # (GigaTon/year)
+        elif fieldname == 'TotalSmbRefreeze':
+            field = field / pow(10.0, 12) * yts # (GigaTon/year)
+        elif fieldname == 'GroundinglineMassFlux':
+            field = field / pow(10.0, 12) * yts # (GigaTon/year)
+        elif fieldname == 'IcefrontMassFlux':
+            field = field / pow(10.0, 12) * yts # (GigaTon/year)
+        elif fieldname == 'IcefrontMassFluxLevelset':
+            field = field / pow(10.0, 12) * yts # (GigaTon/year)
+        elif fieldname == 'SmbMassBalance':
+            field = field * yts
+        elif fieldname == 'SmbPrecipitation':
+            field = field * yts
+        elif fieldname == 'SmbRain':
+            field = field * yts
+        elif fieldname == 'SmbRunoff':
+            field = field * yts
+        elif fieldname == 'SmbRunoffSubstep':
+            field = field * yts
+        elif fieldname == 'SmbEvaporation':
+            field = field * yts
+        elif fieldname == 'SmbRefreeze':
+            field = field * yts
+        elif fieldname == 'SmbEC':
+            field = field * yts
+        elif fieldname == 'SmbAccumulation':
+            field = field * yts
+        elif fieldname == 'SmbMelt':
+            field = field * yts
+        elif fieldname == 'SmbMAdd':
+            field = field * yts
+        elif fieldname == 'SmbWAdd':
+            field = field * yts
+        elif fieldname == 'CalvingCalvingrate':
+            field = field * yts
+        elif fieldname == 'Calvingratex':
+            field = field * yts
+        elif fieldname == 'Calvingratey':
+            field = field * yts
+        elif fieldname == 'CalvingMeltingrate':
+            field = field * yts
+        elif fieldname == 'LoveKernelsReal' or fieldname == 'LoveKernelsImag':
+            nlayer = md.materials.numlayers
+            degmax = md.love.sh_nmax
+            nfreq = md.love.nfreq
+            r0 = md.love.r0
+            g0 = md.love.g0
+            mu0 = md.love.mu0
+            rr = md.materials.radius
+            rho = md.materials.density
+            rho_avg_partial = np.diff(np.power(rr, 3), n=1, axis=0)
+            rho_avg = ((rho * rho_avg_partial) / rho_avg_partial.sum()).sum()
+            temp_field = np.empty((degmax + 1, nfreq, nlayer + 1, 6))
+            temp_field.fill(0.0)
+            for ii in range(degmax + 1):
+                for jj in range(nfreq):
+                    for kk in range(nlayer + 1):
+                        if kk < nlayer: # NOTE: Upper bound of range is non-inclusive (compare to src/m/solve/parseresultsfromdisk.m)
+                            ll = ii * (nlayer + 1) * 6 + (kk * 6 + 1) + 3
+                            temp_field[ii, jj, kk, 0] = field[ll + (0 - 1), jj] * r0        # mm = 4
+                            temp_field[ii, jj, kk, 1] = field[ll + (1 - 1), jj] * mu0       # mm = 5
+                            temp_field[ii, jj, kk, 2] = field[ll + (2 - 1), jj] * r0        # mm = 6
+                            temp_field[ii, jj, kk, 3] = field[ll + (3 - 1), jj] * mu0       # mm = 1
+                            temp_field[ii, jj, kk, 4] = field[ll + (4 - 1), jj] * r0 * g0   # mm = 2
+                            temp_field[ii, jj, kk, 5] = field[ll + (5 - 1), jj] * g0        # mm = 3
+                        else: # surface
+                            ll = (ii + 1) * (nlayer + 1) * 6 - 2
+                            temp_field[ii, jj, kk, 0] = field[ll + (0 - 1), jj] * r0
+                            temp_field[ii, jj, kk, 2] = field[ll + (1 - 1), jj] * r0
+                            temp_field[ii, jj, kk, 4] = field[ll + (2 - 1), jj] * r0 * g0
+                            # surface BC
+                            temp_field[ii, jj, kk, 3] = 0
+                            if md.love.forcing_type == 9:
+                                temp_field[ii, jj, kk, 1] = 0
+                                temp_field[ii, jj, kk, 5] = (2 * (ii + 1) - 1) / r0 - (ii + 1) * field[ll + (2 - 1), jj] * g0
+                            elif md.love.forcing_type == 11:
+                                temp_field[ii, jj, kk, 1] = -(2 * ii + 1) * rho_avg / 3
+                                temp_field[ii, jj, kk, 5] = (2 * (ii + 1) - 1) / r0 - (ii + 1) * field[ll + (2 - 1), jj] * g0
+            field = temp_field
+
+        if time != -9999:
+            time = time / yts
+
+        saveres = OrderedDict()
+        saveres['fieldname'] = fieldname
+        saveres['time'] = time
+        saveres['step'] = step
+        saveres['field'] = field
+
+    except struct.error as e:
+        saveres = None
+
+    return saveres
+# }}}
+
+
+def ReadDataDimensions(fid):  # {{{
+    """READDATADIMENSIONS - read data dimensions, step and time, but not the data itself.
+
+    Usage:
+        field = ReadDataDimensions(fid)
+    """
+
+    # Read field
+    try:
+        length = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+        fieldname = struct.unpack('{}s'.format(length), fid.read(length))[0][:-1]
+        time = struct.unpack('d', fid.read(struct.calcsize('d')))[0]
+        step = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+        datatype = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+        M = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+        N = 1 # default
+        if datatype == 1:
+            fid.seek(M * 8, 1)
+        elif datatype == 2:
+            fid.seek(M, 1)
+        elif datatype == 3:
+            N = struct.unpack('i', fid.read(struct.calcsize('i')))[0]
+            fid.seek(N * M * 8, 1)
+        else:
+            raise TypeError("cannot read data of datatype {}".format(datatype))
+
+        saveres = OrderedDict()
+        saveres['fieldname'] = fieldname
+        saveres['time'] = time
+        saveres['step'] = step
+        saveres['M'] = M
+        saveres['N'] = N
+
+    except struct.error as Err:
+        print(Err)
+        saveres = None
+
+    return saveres
+# }}}
+
+def addfieldtorecord(a, descr):  # {{{
+    if a.dtype.fields is None:
+        raise ValueError('\'a\' must be a structured numpy array')
+    b = np.empty(a.shape, dtype=a.dtype.descr + descr)
+    for name in a.dtype.names:
+        b[name] = a[name]
+
+    return b
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/retrievesamples.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/retrievesamples.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/retrievesamples.m	(revision 27955)
@@ -0,0 +1,31 @@
+function varargout=retrievesamples(varargin)
+
+	options=pairoptions(varargin{:});
+
+	directory=getfieldvalue(options,'directory');
+	name=getfieldvalue(options,'name');
+	nsamples=getfieldvalue(options,'nsamples');
+	step=getfieldvalue(options,'step');
+	fields=getfieldvalue(options,'fields');
+
+	if ~isa(fields,'cell'),
+		error('retrievesamples error message: ''fields'' should be a cell array of field names');
+	end
+	
+	nout=length(fields);
+	for n=1:nout,
+		field=fields{n};
+							
+		[sample,fpos]=loadresultfromdisk(sprintf('%s/%s.outbin.%i',directory,name,1),step,field);
+		nv=length(sample);
+		
+		%initialize: 
+		samples=zeros(nv,nsamples);
+		samples(:,1)=sample;
+	
+		for i=2:nsamples,
+			if mod(i,10)==0, disp(i/nsamples*100); end
+			samples(:,i)=loadresultfromdisk(sprintf('%s/%s.outbin.%i',directory,name,i),step,field,fpos);
+		end
+		varargout{n}=samples;
+	end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/solve.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/solve.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/solve.js	(revision 27955)
@@ -0,0 +1,229 @@
+async function solve(md, solutionstring, ...varargin) { //{{{
+/*
+SOLVE - apply solution sequence for this model
+
+Usage:
+	solve(md, solutionstring[, ...]);
+
+where varargin is a list of paired arguments of string OR enums
+
+Solution types available comprise:
+- 'Stressbalance'			or 'sb'
+- 'Masstransport'			or 'mt'
+- 'Oceantransport'			or 'oceant'
+- 'Thermal'					or 'th'
+- 'Steadystate'				or 'ss'
+- 'Transient'				or 'tr'
+- 'Balancethickness'		or 'mc'
+- 'BalancethicknessSoft'	or 'mcsoft'
+- 'Balancevelocity'			or 'bv'
+- 'BedSlope'				or 'bsl'
+- 'SurfaceSlope'			or 'ssl'
+- 'Hydrology'				or 'hy'
+- 'DamageEvolution'			or 'da'
+- 'Gia'						or 'gia'
+- 'Love'					or 'lv'
+- 'Esa'						or 'esa'
+- 'Sampling'				or 'smp'
+- 'Gmsh'
+
+Extra options (these all need to be passed in via the third parameter, which is 
+a rest parameter):
+- loadonly    		: do not solve, only load results
+- runtimename 		: true or false (default is true); makes name unique
+- checkconsistency 	: true or false (default is true); checks consistency of model
+- restart			: directory name (relative to the execution directory) where the restart file is located
+
+Examples:
+	md = solve(md, 'Stressbalance');
+	md = solve(md, 'sb');
+	
+NOTE:
+- We do not strictly need to return md as objects are passed by reference in 
+JavaScript, but we do so to mirror MATLAB and Python APIs.
+
+TODO:
+- Refactor UI reporting structure so we do not have to check if it is defined
+*/	
+ 
+/*
+	// Check that md exists and that it is a model
+ 	if (md === null || md === undefined || md.constructor.name !== 'model') {
+ 		throw new Error('md needs to be an instance of the model class');
+ 	}
+*/
+	
+	if (typeof(solutionstring) !== 'string') {
+		throw new Error('ISSM\'s solve function only accepts strings for solution sequences. Type help solve to get a list of supported solutions.');
+	}
+
+	// Recover and process solve options
+	if (vesl.strings.strcmpi(solutionstring, 'sb') || vesl.strings.strcmpi(solutionstring, 'Stressbalance')) {
+		solutionstring = 'StressbalanceSolution';
+	} else if (vesl.strings.strcmpi(solutionstring, 'mt') || vesl.strings.strcmpi(solutionstring, 'Masstransport')) {
+		solutionstring = 'MasstransportSolution';	
+	} else if (vesl.strings.strcmpi(solutionstring, 'oceant') || vesl.strings.strcmpi(solutionstring, 'Oceantransport')) {
+		solutionstring = 'OceantransportSolution';	
+	} else if (vesl.strings.strcmpi(solutionstring, 'th') || vesl.strings.strcmpi(solutionstring, 'Thermal')) {
+		solutionstring = 'ThermalSolution';
+	} else if (vesl.strings.strcmpi(solutionstring, 'st') || vesl.strings.strcmpi(solutionstring, 'Steadystate')) {
+		solutionstring = 'SteadystateSolution';
+	} else if (vesl.strings.strcmpi(solutionstring, 'tr') || vesl.strings.strcmpi(solutionstring, 'Transient')) {
+		solutionstring = 'TransientSolution';
+	} else if (vesl.strings.strcmpi(solutionstring, 'mc') || vesl.strings.strcmpi(solutionstring, 'Balancethickness')) {
+		solutionstring = 'BalancethicknessSolution';
+	} else if (vesl.strings.strcmpi(solutionstring, 'mcsoft') || vesl.strings.strcmpi(solutionstring, 'BalancethicknessSoft')) {
+		solutionstring = 'BalancethicknessSoftSolution';
+	} else if (vesl.strings.strcmpi(solutionstring, 'bv') || vesl.strings.strcmpi(solutionstring, 'Balancevelocity')) {
+		solutionstring = 'BalancevelocitySolution';
+	} else if (vesl.strings.strcmpi(solutionstring, 'bsl') || vesl.strings.strcmpi(solutionstring, 'BedSlope')) {
+		solutionstring = 'BedSlopeSolution';
+	} else if (vesl.strings.strcmpi(solutionstring, 'ssl') || vesl.strings.strcmpi(solutionstring, 'SurfaceSlope')) {
+		solutionstring = 'SurfaceSlopeSolution';
+	} else if (vesl.strings.strcmpi(solutionstring, 'hy') || vesl.strings.strcmpi(solutionstring, 'Hydrology')) {
+		solutionstring = 'HydrologySolution';
+	} else if (vesl.strings.strcmpi(solutionstring, 'da') || vesl.strings.strcmpi(solutionstring, 'DamageEvolution')) {
+		solutionstring = 'DamageEvolutionSolution';
+	} else if (vesl.strings.strcmpi(solutionstring, 'gia') || vesl.strings.strcmpi(solutionstring, 'Gia')) {
+		solutionstring = 'GiaSolution';
+	} else if (vesl.strings.strcmpi(solutionstring, 'lv') || vesl.strings.strcmpi(solutionstring, 'Love')) {
+		solutionstring = 'LoveSolution';
+	} else if (vesl.strings.strcmpi(solutionstring, 'Esa')) {
+		solutionstring = 'EsaSolution';
+	} else if (vesl.strings.strcmpi(solutionstring, 'smp') || vesl.strings.strcmpi(solutionstring, 'Sampling')) {
+		solutionstring = 'SamplingSolution';
+	} else if (vesl.strings.strcmpi(solutionstring, 'gmsh')) {
+		solutionstring = 'GmshSolution';
+	} else if (vesl.strings.strcmpi(solutionstring, 'gmt')) {
+		solutionstring = 'GmtSolution';
+	} else {
+		throw new Error('solutionstring ' + solutionstring + ' not supported!');
+	}
+	let options = new pairoptions(varargin, 'solutionstring', solutionstring);
+	
+	// Recover some fields
+	md.priv.solution 	= solutionstring;
+	let cluster 		= md.cluster;
+	
+	// NOTE: Batch scripts are not currently implemented
+	let batch = 0; 
+	if (options.getfieldvalue('batch', 'no') === 'yes') {
+		batch = 1;
+	}
+	
+	// Check model consistency
+	if (options.getfieldvalue('checkconsistency', 'yes') === 'yes') {
+		if (md.verbose.solution) {
+			console.log('checking model consistency');
+		}
+		
+		ismodelselfconsistent(md);
+	}
+	
+	// If we are restarting, actually use the provided runtime name:
+	restart = options.getfieldvalue('restart', '');
+
+	// First, build a runtime name that is unique
+	if (restart === 1) {
+		// Leave the runtimename as is
+	} else {
+		if (restart !== '') {
+			md.priv.runtimename = restart;
+		} else {
+			if (options.getfieldvalue('runtimename', true)) {
+				let c = new Date().getTime();
+				md.priv.runtimename = sprintf('%s-%g', md.miscellaneous.name, c);
+			} else {
+				md.priv.runtimename = md.miscellaneous.name;
+			}
+		}
+	}
+
+	// If running QMU analysis, some preprocessing of Dakota files using model fields needs to be carried out
+	if (md.qmu.isdakota) {
+		throw new Error("QMU not supported yet!");
+		//md = preqmu(md, options);
+	}
+	
+	// Do we load results only?
+	if (options.getfieldvalue('loadonly', false)){
+		loadresultsfromcluster(md);
+		return;
+	}
+
+	/*
+	Write all input arrays (as opposed to, under MATLAB/Python, input binary 
+	files)
+	
+	NOTE: The JavaScript implementation diverges significantly from the 
+		  MATLAB/Python APIs here.
+	*/
+	let fid = null; // bin file equivalent
+	//TODO: FIND A BETTER WAY TO DO THIS! (IE, SYNC UP WRITEDATA AND HAVE A FULL DEMARSHALL/READMODEL IN PYTHON
+	if (solutionstring === 'GmshSolution') {
+		//open file for binary writing
+		fid = new fileptr('mode','w');
+	} else if (solutionstring === 'GmtSolution') {
+		//open file for binary writing
+		fid = new fileptr('mode','w');
+		let prefix='md.mesh';
+		WriteData(fid,prefix,'object',md.mesh,'fieldname','lat','format','DoubleMat','mattype',1);
+		WriteData(fid,prefix,'object',md.mesh,'fieldname','long','format','DoubleMat','mattype',1);
+	} else {
+		// Marshall into a binary array (fid) all the fields of model
+		fid = marshall(md); // bin file
+	}
+	let toolkitsstring = md.toolkits.ToolkitsFile(md.miscellaneous.name + '.toolkits'); // toolkits file equivalent
+
+	if (cluster.classname() === 'local') {//{{{
+
+		// We are running locally on the machine, using the ISSM module
+		console.log('running issm locally');
+		
+		// Call ISSM
+		let outputs = issm(fid, toolkitsstring, solutionstring, md.miscellaneous.name); 
+		
+		// Recover output
+		let outputbuffer 		= outputs[0]; 
+		let outputbuffersize 	= outputs[1];
+			
+		// Load results 
+		md = loadresultsfrombuffer(md, outputbuffer, outputbuffersize); // TODO: Pass reporting construct to loadresultsfrombuffer
+		
+		// Call success callback
+		if (vesl.helpers.isFunction(vesl.ui.reporting.success_callback)) {
+			vesl.ui.reporting.success_callback();
+		}
+	//}}}
+	} else { //{{{
+		// We are running somewhere else on a computational server. Send the buffer to that server and retrieve output.
+		console.log('running issm remotely');
+		
+		await cluster.uploadandrun(
+			md, 
+			fid, 
+			toolkitsstring, 
+			solutionstring, 
+			md.miscellaneous.name, 
+			md.priv.runtimename,
+			options
+		);/*
+.catch(function(e) {
+			if (vesl.helpers.isDefined(vesl.ui) && vesl.helpers.isDefined(vesl.ui.reporting) && vesl.helpers.isFunction(vesl.ui.reporting.error_callback)) {
+				vesl.ui.reporting.error_callback(e);
+			}
+		}).catch(function(e) {
+			// Handle unexpected errors (source: http://thecodebarbarian.com/async-await-error-handling-in-javascript.html)
+			console.log(e);
+		});
+			
+		if (vesl.helpers.isDefined(vesl.ui) && vesl.helpers.isDefined(vesl.ui.reporting) && vesl.helpers.isFunction(vesl.ui.reporting.success_callback)) {
+			vesl.ui.reporting.success_callback(md);
+		}
+*/
+		
+		// Why is md undefined at vesl.ui.reporting.success_callback(md)? See issm-refactor
+		
+		return md;
+	} //}}}
+} //}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/solve.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/solve.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/solve.m	(revision 27955)
@@ -0,0 +1,183 @@
+function md=solve(md,solutionstring,varargin)
+%SOLVE - apply solution sequence for this model
+%
+%   Usage:
+%      md=solve(md,solutionstring,varargin)
+%
+%   where varargin is a lit of paired arguments of string OR enums
+%
+%   Solution types available comprise:
+%   - 'Stressbalance'        or 'sb'
+%   - 'Masstransport'        or 'mt'
+%   - 'Oceantransport'       or 'oceant'
+%   - 'Thermal'              or 'th'
+%   - 'Steadystate'          or 'ss'
+%   - 'Transient'            or 'tr'
+%   - 'Balancethickness'     or 'mc'
+%   - 'Balancethickness2'
+%   - 'BalancethicknessSoft' or 'mcsoft'
+%   - 'Balancevelocity'      or 'bv'
+%   - 'BedSlope'             or 'bsl'
+%   - 'SurfaceSlope'         or 'ssl'
+%   - 'Hydrology'            or 'hy'
+%   - 'DamageEvolution'      or 'da'
+%   - 'Gia'                  or 'gia'
+%   - 'Love'                 or 'lv'
+%   - 'Esa'                  or 'esa'
+%   - 'Sampling'             or 'smp'
+%
+%   Extra options:
+%   - loadonly         : do not solve, only load results
+%   - runtimename      : true or false (default is true); makes name unique
+%   - checkconsistency : 'yes' or 'no' (default is 'yes'); checks consistency of model
+%   - restart          : directory name (relative to the execution directory) 
+%                        where the restart file is located
+%
+%   Examples:
+%      md=solve(md,'Stressbalance');
+%      md=solve(md,'sb');
+
+if ~ischar(solutionstring)
+	error('ISSM''s solve function only accepts strings for solution sequences. Type help solve to get a list of supported solutions');
+end
+
+%recover and process solve options
+if strcmpi(solutionstring,'sb') || strcmpi(solutionstring,'Stressbalance')
+	solutionstring = 'StressbalanceSolution';
+elseif strcmpi(solutionstring,'mt') || strcmpi(solutionstring,'Masstransport')
+	solutionstring = 'MasstransportSolution';
+elseif strcmpi(solutionstring,'oceant') || strcmpi(solutionstring,'Oceantransport')
+	solutionstring = 'OceantransportSolution';
+elseif strcmpi(solutionstring,'th') || strcmpi(solutionstring,'Thermal')
+	solutionstring = 'ThermalSolution';
+elseif strcmpi(solutionstring,'ss') || strcmpi(solutionstring,'Steadystate') 
+	solutionstring = 'SteadystateSolution';
+elseif strcmpi(solutionstring,'tr') || strcmpi(solutionstring,'Transient')
+	solutionstring = 'TransientSolution';
+elseif strcmpi(solutionstring,'mc') || strcmpi(solutionstring,'Balancethickness')
+	solutionstring = 'BalancethicknessSolution';
+elseif strcmpi(solutionstring,'Balancethickness2')
+	solutionstring = 'Balancethickness2Solution';
+elseif strcmpi(solutionstring,'mcsoft') || strcmpi(solutionstring,'BalancethicknessSoft')
+	solutionstring = 'BalancethicknessSoftSolution';
+elseif strcmpi(solutionstring,'bv') || strcmpi(solutionstring,'Balancevelocity')
+	solutionstring = 'BalancevelocitySolution';
+elseif strcmpi(solutionstring,'bsl') || strcmpi(solutionstring,'BedSlope')
+	solutionstring = 'BedSlopeSolution';
+elseif strcmpi(solutionstring,'ssl') || strcmpi(solutionstring,'SurfaceSlope')
+	solutionstring = 'SurfaceSlopeSolution';
+elseif strcmpi(solutionstring,'hy') || strcmpi(solutionstring,'Hydrology')
+	solutionstring = 'HydrologySolution';
+elseif strcmpi(solutionstring,'da') || strcmpi(solutionstring,'DamageEvolution')
+	solutionstring = 'DamageEvolutionSolution';
+elseif strcmpi(solutionstring,'gia') || strcmpi(solutionstring,'Gia')
+	solutionstring = 'GiaSolution';
+elseif strcmpi(solutionstring,'lv') || strcmpi(solutionstring,'Love')
+	solutionstring = 'LoveSolution';
+elseif strcmpi(solutionstring,'esa') || strcmpi(solutionstring,'Esa')
+	solutionstring = 'EsaSolution';
+elseif strcmpi(solutionstring,'smp') || strcmpi(solutionstring,'Sampling')
+	solutionstring = 'SamplingSolution';    
+else
+	error(['solutionstring ' solutionstring ' not supported!']);
+end
+options=pairoptions(varargin{:},'solutionstring',solutionstring);
+
+%recover some fields
+md.private.solution=solutionstring;
+cluster=md.cluster;
+if strcmpi(getfieldvalue(options,'batch','no'),'yes')
+	batch=1;
+else
+	batch=0;
+end
+
+%check model consistency
+if strcmpi(getfieldvalue(options,'checkconsistency','yes'),'yes'),
+	if md.verbose.solution,
+		disp('checking model consistency');
+	end
+	ismodelselfconsistent(md),
+end
+
+%If we are restarting, actually use the provided runtime name:
+restart=getfieldvalue(options,'restart','');
+%First, build a runtime name that is unique
+if restart==1 
+	%Leave the runtimename as is
+else
+	if ~isempty(restart),
+		md.private.runtimename=restart;
+	elseif getfieldvalue(options,'runtimename',true),
+		c=clock;
+		md.private.runtimename=sprintf('%s-%02i-%02i-%04i-%02i-%02i-%02i-%i',md.miscellaneous.name,c(2),c(3),c(1),c(4),c(5),floor(c(6)),feature('GetPid'));
+	else
+		md.private.runtimename=md.miscellaneous.name;
+	end
+end
+
+%if running QMU analysis, some preprocessing of Dakota files using model fields needs to be carried out. 
+if md.qmu.isdakota,
+	md=preqmu(md,options);
+end
+
+%Do we load results only?
+if getfieldvalue(options,'loadonly',false),
+	md=loadresultsfromcluster(md);
+	return;
+end
+
+%Write all input files
+marshall(md);                                          % bin file
+ToolkitsFile(md.toolkits,[md.miscellaneous.name '.toolkits']); % toolkits file
+BuildQueueScript(cluster,md.private.runtimename,md.miscellaneous.name,md.private.solution,md.settings.io_gather,md.debug.valgrind,md.debug.gprof,md.qmu.isdakota,md.transient.isoceancoupling); % queue file
+
+%Upload all required files
+modelname = md.miscellaneous.name;
+filelist  = {[modelname '.bin'] [modelname '.toolkits']};
+if ispc,
+	filelist{end+1}=[modelname '.bat'];
+else
+	filelist{end+1}=[modelname '.queue'];
+end
+
+if md.qmu.isdakota,
+	filelist{end+1} = [modelname '.qmu.in'];
+end
+
+if isempty(restart),
+	UploadQueueJob(cluster,md.miscellaneous.name,md.private.runtimename,filelist);
+end
+
+%launch queue job: 
+LaunchQueueJob(cluster,md.miscellaneous.name,md.private.runtimename,filelist,restart,batch);
+
+%return if batch: 
+if batch,
+	if md.verbose.solution,
+		disp('batch mode requested: not launching job interactively');
+		disp('launch solution sequence on remote cluster by hand');
+	end
+	return;
+end
+
+%wait on lock
+if isnan(md.settings.waitonlock),
+	%load when user enters 'y'
+	disp('solution launched on remote cluster. log in to detect job completion.');
+	choice=input('Is the job successfully completed? (y/n)','s');
+	if ~strcmp(choice,'y'), 
+		disp('Results not loaded... exiting'); 
+	else
+		md=loadresultsfromcluster(md);
+	end
+elseif md.settings.waitonlock>0,
+	%wait for done file
+	done=waitonlock(md);
+	if md.verbose.solution,
+		disp('loading results from cluster');
+	end
+	md=loadresultsfromcluster(md);
+elseif md.settings.waitonlock==0,
+	 disp('Model results must be loaded manually with md=loadresultsfromcluster(md);');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/solve.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/solve.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/solve.py	(revision 27955)
@@ -0,0 +1,168 @@
+from datetime import datetime
+import os
+
+from ismodelselfconsistent import ismodelselfconsistent
+from loadresultsfromcluster import loadresultsfromcluster
+from marshall import marshall
+from pairoptions import pairoptions
+from preqmu import *
+from waitonlock import waitonlock
+
+
+def solve(md, solutionstring, *args):
+    """solve - apply solution sequence for this model
+
+    Usage:
+        md = solve(md, solutionstring, varargin)
+
+    where varargin is a list of paired arguments of string OR enums
+
+    Solution types available comprise:
+    - 'Stressbalance'        or 'sb'
+    - 'Masstransport'        or 'mt'
+    - 'Oceantransport'       or 'oceant'
+    - 'Thermal'              or 'th'
+    - 'Steadystate'          or 'ss'
+    - 'Transient'            or 'tr'
+    - 'Balancethickness'     or 'mc'
+    - 'BalancethicknessSoft' or 'mcsoft'
+    - 'Balancevelocity'      or 'bv'
+    - 'BedSlope'             or 'bsl'
+    - 'SurfaceSlope'         or 'ssl'
+    - 'Hydrology'            or 'hy'
+    - 'DamageEvolution'      or 'da'
+    - 'Gia'                  or 'gia'
+    - 'Love'                 or 'lv'
+    - 'Esa'                  or 'esa'
+    - 'Sampling'             or 'smp'
+
+    Extra options:
+    - loadonly         : do not solve, only load results
+    - runtimename      : true or false (default is true); makes name unique
+    - checkconsistency : 'yes' or 'no' (default is 'yes'); checks consistency 
+                         of model
+    - restart          : directory name (relative to the execution directory) 
+                         where the restart file is located
+
+    Examples:
+        md = solve(md, 'Stressbalance')
+        md = solve(md, 'sb')
+    """
+
+    # Recover and process solve options
+    if solutionstring.lower() == 'sb' or solutionstring.lower() == 'stressbalance':
+        solutionstring = 'StressbalanceSolution'
+    elif solutionstring.lower() == 'mt' or solutionstring.lower() == 'masstransport':
+        solutionstring = 'MasstransportSolution'
+    elif solutionstring.lower() == 'oceant' or solutionstring.lower() == 'oceantransport':
+        solutionstring = 'OceantransportSolution'
+    elif solutionstring.lower() == 'th' or solutionstring.lower() == 'thermal':
+        solutionstring = 'ThermalSolution'
+    elif solutionstring.lower() == 'st' or solutionstring.lower() == 'steadystate':
+        solutionstring = 'SteadystateSolution'
+    elif solutionstring.lower() == 'tr' or solutionstring.lower() == 'transient':
+        solutionstring = 'TransientSolution'
+    elif solutionstring.lower() == 'mc' or solutionstring.lower() == 'balancethickness':
+        solutionstring = 'BalancethicknessSolution'
+    elif solutionstring.lower() == 'bv' or solutionstring.lower() == 'balancevelocity':
+        solutionstring = 'BalancevelocitySolution'
+    elif solutionstring.lower() == 'bsl' or solutionstring.lower() == 'bedslope':
+        solutionstring = 'BedSlopeSolution'
+    elif solutionstring.lower() == 'ssl' or solutionstring.lower() == 'surfaceslope':
+        solutionstring = 'SurfaceSlopeSolution'
+    elif solutionstring.lower() == 'hy' or solutionstring.lower() == 'hydrology':
+        solutionstring = 'HydrologySolution'
+    elif solutionstring.lower() == 'da' or solutionstring.lower() == 'damageevolution':
+        solutionstring = 'DamageEvolutionSolution'
+    elif solutionstring.lower() == 'gia' or solutionstring.lower() == 'gia':
+        solutionstring = 'GiaSolution'
+    elif solutionstring.lower() == 'lv' or solutionstring.lower() == 'love':
+        solutionstring = 'LoveSolution'
+    elif solutionstring.lower() == 'esa':
+        solutionstring = 'EsaSolution'
+    elif solutionstring.lower() == 'smp' or solutionstring.lower() == 'sampling':
+        solutionstring = 'SamplingSolution'
+    else:
+        raise ValueError('solutionstring {} not supported!'.format(solutionstring))
+    options = pairoptions('solutionstring', solutionstring, *args)
+
+    # Recover some fields
+    md.private.solution = solutionstring
+    cluster = md.cluster
+    if options.getfieldvalue('batch', 'no') == 'yes':
+        batch = 1
+    else:
+        batch = 0
+
+    # Check model consistency
+    if options.getfieldvalue('checkconsistency', 'yes') == 'yes':
+        if md.verbose.solution:
+            print('checking model consistency')
+        ismodelselfconsistent(md)
+
+    # If we are restarting, actually use the provided runtime name
+    restart = options.getfieldvalue('restart', '')
+    # First, build a runtime name that is unique
+    if restart == 1:
+        pass # Leave the runtimename as is
+    else:
+        if not isempty(restart):
+            md.private.runtimename = restart
+        else:
+            if options.getfieldvalue('runtimename', True):
+                c = datetime.now()
+                md.private.runtimename = '%s-%02i-%02i-%04i-%02i-%02i-%02i-%i' % (md.miscellaneous.name, c.month, c.day, c.year, c.hour, c.minute, c.second, os.getpid())
+            else:
+                md.private.runtimename = md.miscellaneous.name
+
+    # If running QMU analysis, some preprocessing of Dakota files using model 
+    # fields needs to be carried out
+    if md.qmu.isdakota:
+        md = preqmu(md, options)
+
+    # Do we load results only?
+    if options.getfieldvalue('loadonly', False):
+        md = loadresultsfromcluster(md)
+        return md
+
+    # Write all input files
+    marshall(md) # bin file
+    md.toolkits.ToolkitsFile(md.miscellaneous.name + '.toolkits') # toolkits file
+    cluster.BuildQueueScript(md.private.runtimename, md.miscellaneous.name, md.private.solution, md.settings.io_gather, md.debug.valgrind, md.debug.gprof, md.qmu.isdakota, md.transient.isoceancoupling) # queue file
+
+    # Upload all required files
+    modelname = md.miscellaneous.name
+    filelist = [modelname + '.bin', modelname + '.toolkits']
+
+    if ispc():
+        filelist.append(modelname + '.bat')
+    else:
+        filelist.append(modelname + '.queue')
+
+    if md.qmu.isdakota:
+        filelist.append(modelname + '.qmu.in')
+
+    if isempty(restart):
+        cluster.UploadQueueJob(md.miscellaneous.name, md.private.runtimename, filelist)
+
+    # Launch job
+    cluster.LaunchQueueJob(md.miscellaneous.name, md.private.runtimename, filelist, restart, batch)
+
+    # Return if batch
+    if batch:
+        if md.verbose.solution:
+            print('batch mode requested: not launching job interactively')
+            print('launch solution sequence on remote cluster by hand')
+        return md
+
+    # Wait on lock
+    if md.settings.waitonlock > 0:
+        # Wait for done file
+        done = waitonlock(md)
+        if md.verbose.solution:
+            print('loading results from cluster')
+        md = loadresultsfromcluster(md)
+    elif md.settings.waitonlock == 0:
+        print('Model results must be loaded manually with md = loadresultsfromcluster(md).')
+
+    return md
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/solveiceocean.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/solveiceocean.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/solveiceocean.m	(revision 27955)
@@ -0,0 +1,136 @@
+function md=solveiceocean(md,solutionstring,varargin)
+%SOLVE - apply ice/ocean solution sequence for this model
+%
+%   Usage:
+%      md=solveiceocean(md,solutionstring,varargin)
+%      where varargin is a lit of paired arguments of string OR enums
+%
+%   solution types available comprise:
+%		 - 'Stressbalance'      or 'sb'
+%		 - 'Masstransport'      or 'mt'
+%		 - 'Transient'          or 'tr'
+%
+%  extra options:
+%      - loadonly    : does not solve. only load results
+%      - runtimename : true or false (default is true), makes name unique
+%      - checkconsistency : 'yes' or 'no' (default is 'yes'), ensures checks on consistency of model
+%      - restart: 'directory name (relative to the execution directory) where the restart file is located.
+%      - outbinread  : if 0, download the outbin but do not process is (md.results is not updated)
+%
+%   Examples:
+%      md=solve(md,'Transient');
+%      md=solve(md,'tr');
+
+if ~ischar(solutionstring)
+	error('ISSM''s solve function only accepts strings for solution sequences. Type help solve to get a list of supported solutions');
+end
+
+%recover and process solve options
+if strcmpi(solutionstring,'sb') || strcmpi(solutionstring,'Stressbalance')
+	solutionstring = 'StressbalanceSolution';
+elseif strcmpi(solutionstring,'mt') || strcmpi(solutionstring,'Masstransport')
+	solutionstring = 'MasstransportSolution';
+elseif strcmpi(solutionstring,'tr') || strcmpi(solutionstring,'Transient')
+	solutionstring = 'TransientSolution';
+else
+	error(['solutionstring ' solutionstring ' not supported!']);
+end
+options=pairoptions(varargin{:},'solutionstring',solutionstring);
+
+%recover some fields
+md.private.solution=solutionstring;
+cluster=md.cluster;
+if strcmpi(getfieldvalue(options,'batch','no'),'yes') batch=1; else batch=0; end
+if ~isa(cluster,'localpfe') & ~isa(cluster,'generic'),
+	error('cannot run ice/ocean simulation on any other cluster than localpfe');
+end
+
+%check model consistency
+if strcmpi(getfieldvalue(options,'checkconsistency','yes'),'yes'),
+	if md.verbose.solution,
+		disp('checking model consistency');
+	end
+	ismodelselfconsistent(md),
+end
+
+%If we are restarting, actually use the provided runtime name:
+restart=getfieldvalue(options,'restart','');
+%First, build a runtime name that is unique
+if restart==1 
+	%Leave the runtimename as is
+else
+	if ~isempty(restart),
+		md.private.runtimename=restart;
+	elseif getfieldvalue(options,'runtimename',true),
+		c=clock;
+		md.private.runtimename=sprintf('%s-%02i-%02i-%04i-%02i-%02i-%02i-%i',md.miscellaneous.name,c(2),c(3),c(1),c(4),c(5),floor(c(6)),feature('GetPid'));
+	else
+		md.private.runtimename=md.miscellaneous.name;
+	end
+end
+
+%if running qmu analysis, some preprocessing of dakota files using models
+%fields needs to be carried out. 
+if md.qmu.isdakota,
+	md=preqmu(md,options);
+end
+
+%Do we load results only?
+if getfieldvalue(options,'loadonly',false),
+	md=loadresultsfromcluster(md);
+	return;
+end
+
+%Write all input files
+marshall(md);                                          % bin file
+ToolkitsFile(md.toolkits,[md.miscellaneous.name '.toolkits']); % toolkits file
+BuildQueueScriptIceOcean(cluster,md.private.runtimename,md.miscellaneous.name,md.private.solution,md.settings.io_gather,md.debug.valgrind,md.debug.gprof,md.qmu.isdakota); % queue file
+
+%Upload all required files
+modelname = md.miscellaneous.name;
+filelist  = {[modelname '.bin'] [modelname '.toolkits']};
+if ispc,
+	filelist{end+1}=[modelname '.bat'];
+else
+	filelist{end+1}=[modelname '.queue'];
+end
+
+if md.qmu.isdakota,
+	filelist{end+1} = [modelname '.qmu.in'];
+end
+
+if isempty(restart),
+	UploadQueueJob(cluster,md.miscellaneous.name,md.private.runtimename,filelist);
+end
+
+%launch queue job: 
+LaunchQueueJobIceOcean(cluster,md.miscellaneous.name,md.private.runtimename,filelist,restart,batch);
+
+%return if batch: 
+if batch,
+	if md.verbose.solution,
+		disp('batch mode requested: not launching job interactively');
+		disp('launch solution sequence on remote cluster by hand');
+	end
+	return;
+end
+%wait on lock
+if isnan(md.settings.waitonlock),
+	%load when user enters 'y'
+	disp('solution launched on remote cluster. log in to detect job completion.');
+	choice=input('Is the job successfully completed? (y/n)','s');
+	if ~strcmp(choice,'y'), 
+		disp('Results not loaded... exiting'); 
+	else
+		md=loadresultsfromcluster(md);
+	end
+elseif md.settings.waitonlock>0,
+	%we wait for the done file
+	done=waitonlock(md);
+	if md.verbose.solution,
+		disp('loading results from cluster');
+	end
+	md=loadresultsfromcluster(md,'runtimename','');
+elseif md.settings.waitonlock==0,
+	 disp('Model results must be loaded manually with md=loadresultsfromcluster(md);');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/solveslm.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/solveslm.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/solveslm.m	(revision 27955)
@@ -0,0 +1,98 @@
+function slm=solveslm(slm,solutionstringi,varargin)
+%SOLVESLM - apply solution sequence for this sealevel model
+%
+%   Usage:
+%      slm=solveslm(slm,solutionstring,varargin)
+%      where varargin is a lit of paired arguments of string OR enums
+%
+%   solution types available comprise:
+%      - 'Transient'
+%
+%   extra options:
+%
+%   Examples:
+%      slm=solveslm(slm,'Transient');
+
+%recover and process solve options
+if strcmpi(solutionstringi,'tr') || strcmpi(solutionstringi,'Transient')
+	solutionstring = 'TransientSolution';
+else
+	error(['solutionstring ' solutionstringi ' not supported!']);
+end
+
+%Default settings for debugging
+valgrind=0;
+%slm.cluster.interactive=0; valgrind=1;
+
+%check consistency: 
+slm.checkconsistency(solutionstring);
+
+%process options 
+options=pairoptions(varargin{:},'solutionstring',solutionstring);
+
+%make sure we request sum of cluster processors 
+totalnp=0;
+for i=1:length(slm.icecaps), totalnp=totalnp+slm.icecaps{i}.cluster.np; end
+totalnp=totalnp+slm.earth.cluster.np;
+if totalnp~=slm.cluster.np,
+	error('sum of all icecaps and earch cluster processors requestes should be equal to slm.cluster.np');
+end
+
+%recover some fields
+slm.private.solution=solutionstring;
+cluster=slm.cluster;
+batch=0;
+%now, go through icecaps, glaciers and earth, and upload all the data independently: 
+disp('solving ice caps first');
+for i=1:length(slm.icecaps),
+	slm.icecaps{i}=solve(slm.icecaps{i},solutionstringi,'batch','yes');
+end
+disp('solving earth now');
+slm.earth=solve(slm.earth,solutionstringi,'batch','yes');
+
+%First, build a runtime name that is unique
+c=clock;
+slm.private.runtimename=sprintf('%s-%02i-%02i-%04i-%02i-%02i-%02i-%i',slm.miscellaneous.name,c(2),c(3),c(1),c(4),c(5),floor(c(6)),feature('GetPid'));
+
+%Write all input files:
+privateruntimenames={}; 
+miscellaneousnames={}; 
+nps={};
+for i=1:length(slm.icecaps),
+	privateruntimenames{end+1}=slm.icecaps{i}.private.runtimename;
+	miscellaneousnames{end+1}=slm.icecaps{i}.miscellaneous.name;
+	nps{end+1}=slm.icecaps{i}.cluster.np;
+end
+privateruntimenames{end+1}=slm.earth.private.runtimename;
+miscellaneousnames{end+1}=slm.earth.miscellaneous.name;
+nps{end+1}=slm.earth.cluster.np;
+
+BuildQueueScriptMultipleModels(cluster,slm.private.runtimename,slm.miscellaneous.name,slm.private.solution,privateruntimenames,miscellaneousnames,nps);
+
+%Upload all required files, given that each individual solution for icecaps and earth model already did:
+filelist={[slm.miscellaneous.name '.queue']};
+UploadQueueJob(cluster,slm.miscellaneous.name,slm.private.runtimename,filelist);
+
+%launch queue job: 
+LaunchQueueJob(cluster,slm.miscellaneous.name,slm.private.runtimename,filelist,'',batch);
+
+%wait on lock
+if isnan(slm.settings.waitonlock),
+	%load when user enters 'y'
+	disp('solution launched on remote cluster. log in to detect job completion.');
+	choice=input('Is the job successfully completed? (y/n)','s');
+	if ~strcmp(choice,'y'), 
+		disp('Results not loaded... exiting'); 
+	else
+		for i=1:length(slm.icecaps), slm.icecaps{i}=loadresultsfromcluster(slm.icecaps{i});end;
+		slm.earth=loadresultsfromcluster(slm.earth);
+	end
+elseif slm.settings.waitonlock>0,
+	%we wait for the done file
+	done=waitonlock(slm);
+	disp('loading results from cluster');
+	for i=1:length(slm.icecaps), slm.icecaps{i}=loadresultsfromcluster(slm.icecaps{i});end;
+	slm.earth=loadresultsfromcluster(slm.earth);
+elseif slm.settings.waitonlock==0,
+	 disp('Model results must be loaded manually with slm=loadresultsfromcluster(slm);');
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/solveslm.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/solveslm.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/solveslm.py	(revision 27955)
@@ -0,0 +1,98 @@
+from datetime import datetime
+import os
+
+import numpy as np
+
+from loadresultsfromcluster import loadresultsfromcluster
+from pairoptions import pairoptions
+from waitonlock import waitonlock
+
+
+def solveslm(slm, solutionstringi, *args):
+    """solveslm - apply solution sequence for this sealevel model
+
+    Usage:
+        slm = solveslm(slm,solutionstring,varargin)
+        where varargin is a lit of paired arguments of string OR enums
+
+    solution types available comprise:
+        - 'Transient'
+
+    extra options:
+
+    Examples:
+        slm=solveslm(slm,'Transient');
+    """
+
+    print('Yep')
+    exit()
+
+    # Recover and process solve options
+    if solutionstringi.lower() == 'tr' or solutionstringi.lower() == 'transient':
+        solutionstring = 'TransientSolution'
+    else:
+        raise RuntimeError('solutionstring {} not supported!'.format(solutionstringi))
+
+    # Default settings for debugging
+    valgrind = 0
+    #slm.cluster.interactive = 0
+    #valgrind = 1
+
+    # Check consistency
+    slm.checkconsistency(solutionstring)
+
+    # Process options
+    options = pairoptions('solutionstring', solutionstring, *args)
+
+    # Make sure we request sum of cluster processors
+    totalnp = 0
+    for i in range(len(slm.icecaps)):
+        totalnp = totalnp + slm.icecaps[i].cluster.np
+    totalnp = totalnp + slm.earth.cluster.np
+    if totalnp != slm.cluster.np:
+        raise RuntimeError('sum of all icecaps and earch cluster processors requestes should be equal to slm.cluster.np')
+
+    # Recover some fields
+    slm.private.solution = solutionstring
+    cluster = slm.cluster
+    batch = 0
+    # Now, go through icecaps, glaciers and earth, and upload all the data independently
+    print('solving ice caps first')
+    for i in range(len(slm.icecaps)):
+        slm.icecaps[i] = solve(slm.icecaps[i], solutionastringi,'batch','yes')
+    print('solving earth now')
+    slm.earth = solve(slm.earth, solutionstringi, 'batch', 'yes')
+
+    # First, build a runtime name that is unique
+    c = datetime.now()
+    md.private.runtimename = "%s-%02i-%02i-%04i-%02i-%02i-%02i-%i" % (md.miscellaneous.name, c.month, c.day, c.year, c.hour, c.minute, c.second, os.getpid())
+
+    # Write all input files
+    privateruntimenames = []
+    miscellaneousnames = []
+    nps = []
+    for i in range(len(slm.icecaps)):
+        privateruntimenames.append(slm.icecaps[i],private.runtimename)
+        miscellaneousnames.append(slm.earth.miscellaneous.name)
+        nps.append(slm.earth.cluster.np)
+
+    BuildQueueScriptMultipleModels(cluster, slm.private.runtimename, slm.miscellaneous.name, slm.private.solution, privateruntimenames, miscellaneousnames, nps)
+
+    # Upload all required files, given that each individual solution for icecaps and earth model already did
+    filelist = [slm.miscellaneous.name + '.queue']
+    UploadQueueJob(cluster, slm.miscellaneous.name, slm.private.runtimename, filelist)
+
+    # Launch queue job
+    LaunchQueueJob(cluster, slm.miscellaneous.name, slm.private.runtimename, filelist, '', batch)
+
+    # Wait on lock
+    if slm.settings.waitonlock > 0:
+        islock = waitonlock(slm)
+        if islock == 0:  # no results to be loaded
+            print('The results must be loaded manually with md = loadresultsfromcluster(md).')
+        else: # load results
+            if slm.verbose.solution:
+                print('loading results from cluster')
+            slm = loadresultsfromcluster(slm)
+
+    return slm
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/waitonlock.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/waitonlock.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/waitonlock.m	(revision 27955)
@@ -0,0 +1,83 @@
+function ispresent=waitonlock(md)
+%WAITONLOCK - wait for a file
+%
+%   This routine will return when a file named 'lockfilename' is written to 
+%   disk. Also check for outlog file be cause it might be written several 
+%   seconds after the lock file.
+%
+%   If the time limit given in input is exceeded, return 0
+%
+%   Usage:
+%      flag=waitonlock(md)
+
+%Return if waitonlock < 0 (no need to wait)
+
+%Get lockfilename (lock file) and options
+executionpath = md.cluster.executionpath;
+timelimit     = md.settings.waitonlock;
+cluster       = md.cluster;
+
+if isa(cluster,'pfe') && cluster.interactive>0
+	lockfilename  = [executionpath '/Interactive' num2str(cluster.interactive) '/' md.miscellaneous.name '.lock'];
+	logfilename   = [executionpath '/Interactive' num2str(cluster.interactive) '/' md.miscellaneous.name '.outlog'];
+elseif isa(cluster,'localpfe'),
+	lockfilename  = [executionpath '/' md.miscellaneous.name '.lock'];
+	logfilename   = [executionpath '/' md.miscellaneous.name '.outlog'];
+else
+	lockfilename  = [executionpath '/' md.private.runtimename '/' md.miscellaneous.name '.lock'];
+	logfilename   = [executionpath '/' md.private.runtimename '/' md.miscellaneous.name '.outlog'];
+end
+
+
+%If we are using the generic cluster in interactive mode, job is already complete
+if (isa(cluster,'generic') & cluster.interactive) | isa(cluster,'generic_static'),
+	%We are in interactive mode, no need to check for job completion
+	ispresent=1;
+	return;
+end
+
+%initialize time and file presence test flag
+elapsedtime=0; ispresent=0; starttime=clock;
+disp(['waiting for ' lockfilename ' hold on... (Ctrl+C to exit)'])
+
+%prepare command if the job is not running on the local machine
+if ~strcmpi(oshostname(),cluster.name),
+	if isa(cluster,'cloud'),
+		command = [' [ -f ' lockfilename ' ] && [ -f ' logfilename ' ] 2>/dev/null'];
+		command = [starcluster() ' sshmaster ' cluster.name ' --user ' cluster.login ' ''' command ''''];
+	else
+		command = ['ssh -l ' cluster.login];
+		if isprop(cluster,'idfile') && ~strcmp(cluster.idfile,''),
+			command = [command ' -i ' cluster.idfile];
+		end
+		if isprop(cluster,'port') && cluster.port,
+			command = [command ' -p ' num2str(cluster.port) ' localhost'];
+		else,
+			command = [command ' ' cluster.name];
+		end
+		command = [command ' "[ -f ' lockfilename ' ] && [ -f ' logfilename ' ]" 2>/dev/null'];
+	end
+end
+
+%loop till file .lock exist or time is up
+while (ispresent==0 & elapsedtime<timelimit)
+	if strcmpi(oshostname(),cluster.name),
+		pause(1);
+		ispresent=(exist(lockfilename,'file') & exist(logfilename,'file'));
+		elapsedtime=etime(clock,starttime)/60;
+	else
+		pause(5);
+		elapsedtime=etime(clock,starttime);
+		fprintf('\rchecking for job completion (time: %i min %i sec)      ',floor(elapsedtime/60),floor(rem(elapsedtime,60)));
+		elapsedtime=elapsedtime/60; %converts time from sec to min
+		ispresent=~system(command);
+		if ispresent, fprintf('\n'); end
+	end
+end
+
+%build output
+if (elapsedtime>timelimit),
+	disp('Time limit exceeded. Increase md.settings.waitonlock');
+	disp('The results must be loaded manually with md=loadresultsfromcluster(md).');
+	error(['waitonlock error message: time limit exceeded']);
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solve/waitonlock.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solve/waitonlock.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solve/waitonlock.py	(revision 27955)
@@ -0,0 +1,93 @@
+import subprocess
+import sys
+import time
+from generic import *
+from generic_static import *
+# from localpfe import *
+from MatlabFuncs import *
+from pfe import *
+
+def waitonlock(md):
+    """WAITONLOCK - wait for a file
+
+    This routine will return when a file named 'lockfilename' is written to
+    disk. Also check for outlog file because it might be written several
+    seconds after the lock file.
+
+    If the time limit given in input is exceeded, return 0.
+
+    Usage:
+        flag = waitonlock(md)
+
+    TODO:
+    - Uncomment import of localpfe and check on cluster type once localpfe.py
+    has been translated from localpfe.m.
+    """
+
+    # Get lockfilename (lock file) and options
+    executionpath = md.cluster.executionpath
+    timelimit = md.settings.waitonlock
+    cluster = md.cluster
+
+    if isa(cluster, pfe) and cluster.interactive > 1:
+        lockfilename = '{}/Interactive{}/{}.lock'.format(executionpath, cluster.interactive, md.miscellaneous.name)
+        logfilename = '{}/Interactive{}/{}.outlog'.format(executionpath, cluster.interactive, md.miscellaneous.name)
+    # elif isa(cluster, localpfe):
+    #     lockfilename = '{}/{}.lock'.format(executionpath, md.miscellaneous.name)
+    #     logfilename = '{}/{}.outlog'.format(executionpath, md.miscellaneous.name)
+    else:
+        lockfilename = '{}/{}/{}.lock'.format(executionpath, md.private.runtimename, md.miscellaneous.name)
+        logfilename = '{}/{}/{}.outlog'.format(executionpath, md.private.runtimename, md.miscellaneous.name)
+
+    # If we are using the generic cluster in interactive mode, job is already complete
+    if (isa(cluster, generic) and cluster.interactive) or (isa(cluster, generic_static)):
+        # We are in interactive mode, no need to check for job completion
+        return 1
+
+    # Initialize time and file presence test flag
+    elapsedtime = 0
+    ispresent = 0
+    starttime = time.time()
+    print('waiting for {} hold on... (Ctrl+C to exit)'.format(lockfilename))
+
+    # Prepare command if the job is not running on the local machine
+    if not strcmpi(oshostname(), cluster.name):
+        if cluster.name == 'cloud':
+            command = '[ -f {} ] && [ -f {} ] 2>/dev/null'.format(lockfilename, logfilename)
+            command = '{} sshmaster {} --user {} \'{}\''.format(starcluster(), cluster.name, cluster.login, command)
+        else:
+            command = 'ssh -l {}'.format(cluster.login)
+            if isprop(cluster, 'idfile') and cluster.idfile != '':
+                command += ' -i {}'.format(cluster.idfile)
+            if isprop(cluster, 'port') and cluster.port:
+                command += ' -p {} localhost'.format(cluster.port);
+            else:
+                command += ' {}'.format(cluster.name)
+            command += ' "[ -f {} ] && [ -f {} ]" 2>/dev/null'.format(lockfilename, logfilename)
+
+    while not ispresent and elapsedtime < timelimit:
+        if strcmpi(oshostname(), cluster.name):
+            pause(1)
+            ispresent = (isfile(lockfilename) and isfile(logfilename))
+            elapsedtime = etime(time.time(), starttime) / 60
+        else:
+            pause(5)
+            elapsedtime = etime(time.time(), starttime)
+            sys.stdout.write('\rchecking for job completion (time: {} min {} sec)      '.format(floor(elapsedtime / 60), floor(rem(elapsedtime, 60)))) # TODO: After Python 2 is deprecated, we can change this call to print([...], end='')
+            elapsedtime = elapsedtime / 60 # Converts time from sec to min
+            subproc = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
+            outs, errs = subproc.communicate()  # NOTE: Need to consume output before checking return code
+
+            if errs != '':
+               raise Exception('waitonlock: check for existence of files failed: {}'.format(errs))
+            ispresent = not subproc.returncode
+            if ispresent:
+                print('')
+
+    # Build output
+    if elapsedtime > timelimit:
+        print('Time limit exceeded. Increase md.settings.waitonlock')
+        print('The results must be loaded manually with md = loadresultsfromcluster(md).')
+        raise RuntimeError('waitonlock error message: time limit exceeded.')
+
+    return ispresent
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/SolvOptionTranslater.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/SolvOptionTranslater.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/SolvOptionTranslater.sh	(revision 27955)
@@ -0,0 +1,122 @@
+PythonFiles=($(find . -name "*.py"))
+#PythonFiles=(~/Model/issm_dev/src/m/classes/clusters/generic.py)
+#PythonFiles=($(find . -name $1))
+operators=(- + \\* \\/ \< \>)
+multop=(+= -= \\*= == \>= \<= !=)
+compop=(\< \> == \>= \<= !=)
+keywords=(axis delimiter fmt shell mode dtype zlib)
+
+#needs:
+#   -negative number don't need spaces
+#   -equals in options don't need spaces
+
+for PythonName in "${PythonFiles[@]}"; do
+    startword=($(awk '{print $1; exit}' "$PythonName" ))
+
+    if [[ "$startword" == "function" ]]; then
+	echo treating "$PythonName"
+	cp "$PythonName" "$PythonName".bkp
+
+	#first add the imports
+	sed -i '1s/^/from collections import OrderedDict\n\n\n/' "$PythonName"
+	sed -i '1s/^/from pairoptions import pairoptions\n/' "$PythonName"
+	# and the return
+	echo "return solverOptions" >> "$PythonName"
+
+	#define the function
+	sed -i "s/function solverOptions=\([a-z]\+\)(varargin)/def \1(\*args):/g" "$PythonName"
+
+	#brutal indentation from line 6, but that should work here
+	sed -i '6~1s/^/    /' "$PythonName"
+
+
+	#first deal with equal signs
+	#-should e spaced one except when ==, += , -= and if part of options
+	sed -i "s/\([][:alnum:]]\+\)=\([[:alnum:]'\"]\+\)/\1 = \2/g"  "$PythonName"
+	sed -i  's/ \+= \+/ = /g' "$PythonName"   #reduce number of spaces to one before and after =
+
+	#replace varargin
+	sed -i 's/varargin{:}/*args/g' "$PythonName"
+	sed -i 's/varargin/*args/g' "$PythonName"
+
+	#change getfieldvalue
+	sed -i 's/getfieldvalue(options, /options.getfieldvalue(/g' "$PythonName"
+
+	#replace struct
+	sed -i 's/struct()/OrderedDict()/g' "$PythonName"
+
+	#change to dict format
+	sed -i "s/\(solverOptions\).\([a-z]\+[_[a-z]\+]*\)/\1['\2']/g" "$PythonName"
+
+	#shift commment command from matlab
+	sed -i 's/%/#/g' "$PythonName"
+
+	#Add spaces after coma and limit to one space
+	sed -i  's/,/, /g' "$PythonName"
+	sed -i  's/, \+/, /g' "$PythonName"
+
+	#two space for inline comments
+	sed -i  's/\([[:alnum:]]\) \+#/\1  #/g' "$PythonName"
+
+	#fix equals continuing with brackets
+	sed -i 's/=\[/ = \[/g' "$PythonName"
+	sed -i 's/ \+= \[/ = \[/g' "$PythonName"
+	#same for quote
+	sed -i "s/='/ = '/g" "$PythonName"
+	sed -i "s/ \+= '/ = '/g" "$PythonName"
+
+
+	#deal with operators (+, -, /, *)
+	for OP in "${operators[@]}"; do
+    	    sed -i  's/'"$OP"'/ '"$OP"' /g' "$PythonName"
+    	    sed -i  's/ \+'"$OP"' \+/ '"$OP"' /g' "$PythonName"
+	done
+	sed -i 's/\* args/\*args/g' "$PythonName"
+
+	# get multiple operators back together
+	sed -i  's/+ \+=/+=/g' "$PythonName"
+	sed -i  's/- \+=/-=/g' "$PythonName"
+	sed -i  's/= \+=/==/g' "$PythonName"
+	sed -i  's/> \+=/>=/g' "$PythonName"
+	sed -i  's/< \+=/<=/g' "$PythonName"
+	sed -i  's/! \+=/!=/g' "$PythonName"
+	sed -i  's/\* \+\*/\*\*/g' "$PythonName"
+	sed -i  's/e - /e-/g' "$PythonName"
+
+	#power operator does not need spaces
+	sed -i  's/ \+\*\* \+/\*\*/g' "$PythonName"
+
+	# and fix their spacing
+	for MOP in "${multop[@]}"; do
+    	    sed -i  's/'"$MOP"'/ '"$MOP"' /g' "$PythonName"
+    	    sed -i  's/ \+'"$MOP"' \+/ '"$MOP"' /g' "$PythonName"
+	done
+
+	# get comparison operators without space in strings (for checkfield)
+	for OP in "${compop[@]}";do
+	    sed -i "s/' "$OP" '/'"$OP"'/g" "$PythonName"
+	done
+
+
+	sed -i  's/ \+= \+/ = /g' "$PythonName"   #reduce number of spaces to one before and after =
+
+	# fix path names
+	templength=1
+	while [ $templength -gt 0 ]; do
+    	    sed -i  "s/'\([^ ]*\) \/ /'\1\//g w temp.tmp" "$PythonName"
+    	    templength=$(wc -l < temp.tmp)
+	done
+
+	#replace tab by 4 spaces
+	sed -i 's/\t/    /g' "$PythonName"
+
+	#some extraneous spaces
+	sed -i 's/( /(/g' "$PythonName"
+	#remove trailing spaces too
+	sed -i  's/[ \t]*$//' "$PythonName"
+
+	#remove end of line semicolon and backslash
+	sed -i 's/;$//g' "$PythonName"
+	sed -i 's/\\$//g' "$PythonName"
+    fi
+done
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/asmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/asmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/asmoptions.m	(revision 27955)
@@ -0,0 +1,19 @@
+function asm=asmoptions(varargin)
+%ASMOPTIONS - return Additive Schwartz Method PETSc options
+%
+%   Usage:
+%      options=asmoptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+asm=struct();
+
+%default asm options
+asm.toolkit='petsc';
+asm.mat_type=getfieldvalue(options,'mat_type','mpiaij');
+asm.ksp_type=getfieldvalue(options,'ksp_type','gmres');
+asm.pc_type=getfieldvalue(options,'pc_type','asm');
+asm.sub_pc_type=getfieldvalue(options,'sub_pc_type','lu');
+asm.pc_asm_overlap=getfieldvalue(options,'pc_asm_overlap',3);
+asm.ksp_max_it=getfieldvalue(options,'ksp_max_it',100);
+asm.ksp_rtol=getfieldvalue(options,'ksp_rtol',1e-30);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/asmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/asmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/asmoptions.py	(revision 27955)
@@ -0,0 +1,45 @@
+from collections import OrderedDict
+from pairoptions import pairoptions
+
+def asmoptions(*args):
+    """ASMOPTIONS - Return Additive Schwartz Method PETSc options
+
+    Usage:
+        options = asmoptions
+    """
+
+    # Retrieve options provided in *args
+    arguments = pairoptions(*args)
+
+    options = [
+        ['toolkit', 'petsc'],
+        ['mat_type', 'mpiaij'],
+        ['ksp_type', 'gmres'],
+        ['pc_type', 'asm'],
+        ['sub_pc_type', 'lu'],
+        ['pc_asm_overlap', 3],
+        ['ksp_max_it', 100],
+        ['ksp_rtol', 1e-30]
+    ]
+
+    # Now, go through our arguments, and write over default options
+    for i in range(len(arguments.list)):
+        arg1 = arguments.list[i][0]
+        arg2 = arguments.list[i][1]
+        found = 0
+        for j in range(len(options)):
+            joption = options[j][0]
+            if joption == arg1:
+                joption[1] = arg2
+                options[j] = joption
+                found = 1
+                break
+        if not found:
+            # This option did not exist; add it
+            options.append([arg1, arg2])
+
+    asmoptions = OrderedDict()
+    for j in range(len(options)):
+        asmoptions[options[j][0]]=options[j][1]
+
+    return asmoptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/asmstokesoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/asmstokesoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/asmstokesoptions.m	(revision 27955)
@@ -0,0 +1,20 @@
+function asm=asmstokesoptions(varargin)
+%ASMSTOKESOPTIONS - return Additive Schwartz Method Stokes PETSc options
+%
+%   Usage:
+%      options=asmstokesoptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+asm=struct();
+
+%default asm options
+asm.toolkit='petsc';
+asm.mat_type=getfieldvalue(options,'mat_type','mpiaij');
+asm.ksp_type=getfieldvalue(options,'ksp_type','gmres');
+asm.pc_type=getfieldvalue(options,'pc_type','asm');
+asm.sub_pc_type=getfieldvalue(options,'sub_pc_type','lu');
+asm.pc_asm_overlap=getfieldvalue(options,'pc_asm_overlap',1); % COMSOL's default
+asm.ksp_max_it=getfieldvalue(options,'ksp_max_it',100);
+asm.ksp_rtol=getfieldvalue(options,'ksp_rtol',1e-7);  %tuned for best performance and to fit ISMIP-HOM-C 5km with MUMPS
+asm.ksp_atol=getfieldvalue(options,'ksp_atol',1e-10); %tuned for best performance and to fit ISMIP-HOM-C 5km with MUMPS
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/asmstokesoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/asmstokesoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/asmstokesoptions.py	(revision 27955)
@@ -0,0 +1,46 @@
+from collections import OrderedDict
+from pairoptions import pairoptions
+
+def asmstokesoptions(*args):
+    """ASMSTOKESOPTIONS - Return Additive Schwartz Method Stokes PETSc options
+
+    Usage:
+        options = asmstokesoptions
+    """
+
+    # Retrieve options provided in *args
+    arguments = pairoptions(*args)
+
+    options = [
+        ['toolkit', 'petsc'],
+        ['mat_type', 'mpiaij'],
+        ['ksp_type', 'gmres'],
+        ['pc_type', 'asm'],
+        ['sub_pc_type', 'lu'],
+        ['pc_asm_overlap', 1], # COMSOL's default
+        ['ksp_max_it', 100],
+        ['ksp_rtol', 1e-7], # Tuned for best performance and to fit ISMIP-HOM-C 5km with MUMPS
+        ['ksp_atol', 1e-10] # Tuned for best performance and to fit ISMIP-HOM-C 5km with MUMPS
+    ]
+
+    # Now, go through our arguments, and write over default options
+    for i in range(len(arguments.list)):
+        arg1 = arguments.list[i][0]
+        arg2 = arguments.list[i][1]
+        found = 0
+        for j in range(len(options)):
+            joption = options[j][0]
+            if joption == arg1:
+                joption[1] = arg2
+                options[j] = joption
+                found = 1
+                break
+        if not found:
+            # This option did not exist; add it
+            options.append([arg1, arg2])
+
+    asmoptions = OrderedDict()
+    for j in range(len(options)):
+        asmoptions[options[j][0]]=options[j][1]
+
+    return asmoptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsasmoptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bcgsasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsasmoptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgsasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsbjacobioptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bcgsbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsbjacobioptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgsbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsgamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsgamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsgamgoptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bcgsgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsgamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsgamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsgamgoptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgsgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsgasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsgasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsgasmoptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bcgsgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsgasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsgasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsgasmoptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgsgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgshypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgshypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgshypreoptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bcgshypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgshypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgshypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgshypreoptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgshypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsjacobioptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bcgsjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsjacobioptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgsjacobioptions(*args):
+
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslasmoptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bcgslasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslasmoptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgslasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslbjacobioptions.m	(revision 27955)
@@ -0,0 +1,11 @@
+function solverOptions=bcgslbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+solverOptions.ksp_max_it=getfieldvalue(options,'ksp_max_it',300);
+solverOptions.ksp_rtol=getfieldvalue(options,'ksp_rtol',1e-13);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslbjacobioptions.py	(revision 27955)
@@ -0,0 +1,16 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgslbjacobioptions(*args):
+
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+    solverOptions['ksp_max_it'] = options.getfieldvalue('ksp_max_it', 300)
+    solverOptions['ksp_rtol'] = options.getfieldvalue('ksp_rtol', 1e-13)
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslgamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslgamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslgamgoptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bcgslgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslgamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslgamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslgamgoptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgslgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslgasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslgasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslgasmoptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bcgslgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslgasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslgasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslgasmoptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgslgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslhypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslhypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslhypreoptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bcgslhypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslhypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslhypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslhypreoptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgslhypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsljacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsljacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsljacobioptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bcgsljacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsljacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsljacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsljacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgsljacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslmgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslmgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslmgoptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bcgslmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslmgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslmgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslmgoptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgslmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslnoneoptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bcgslmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslnoneoptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgslmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslpbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslpbjacobioptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bcgslpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslpbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslpbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslpbjacobioptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgslpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslsoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslsoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslsoroptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bcgslsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgsl');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslsoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslsoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgslsoroptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgslsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsmgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsmgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsmgoptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bcgsmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsmgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsmgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsmgoptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgsmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsnoneoptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bcgsmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgsnoneoptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgsmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgspbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgspbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgspbjacobioptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bcgspbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgspbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgspbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgspbjacobioptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgspbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgssoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgssoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgssoroptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bcgssoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgssoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgssoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bcgssoroptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgssoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgasmoptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bicgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgasmoptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgbjacobioptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bicgbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgbjacobioptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicgbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicggamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicggamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicggamgoptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bicggamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicggamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicggamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicggamgoptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicggamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicggasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicggasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicggasmoptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bicggasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicggasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicggasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicggasmoptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicggasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicghypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicghypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicghypreoptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bicghypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicghypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicghypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicghypreoptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicghypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgjacobioptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=bicgjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgjacobioptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicgjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgmgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgmgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgmgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=bicgmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgmgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgmgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgmgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicgmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgnoneoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=bicgmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgnoneoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicgmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgpbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgpbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=bicgpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgpbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgpbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgpbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicgpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgsoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgsoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgsoroptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=bicgsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','bicg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgsoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgsoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/bicgsoroptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicgsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cggamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cggamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cggamgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cggamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cggamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cggamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cggamgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cggamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cggasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cggasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cggasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cggasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cggasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cggasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cggasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cggasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cghypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cghypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cghypreoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cghypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cghypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cghypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cghypreoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cghypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgmgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgmgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgmgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgmgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgmgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgmgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgneasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgneasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgneasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgneasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgneasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgneasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgneasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgneasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnebjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnebjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnebjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgnebjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnebjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnebjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnebjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgnebjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnegamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnegamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnegamgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgnegamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnegamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnegamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnegamgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgnegamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnegasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnegasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnegasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgnegasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnegasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnegasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnegasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgnegasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnehypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnehypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnehypreoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgnehypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnehypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnehypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnehypreoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgnehypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnejacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnejacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnejacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgnejacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnejacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnejacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnejacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgnejacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnemgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnemgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnemgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgnemgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnemgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnemgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnemgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgnemgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnenoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnenoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnenoneoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgnemgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnenoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnenoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnenoneoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgnemgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnepbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnepbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnepbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgnepbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnepbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnepbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnepbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgnepbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnesoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnesoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnesoroptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgnesoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgne');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnesoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnesoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnesoroptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgnesoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnoneoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgnoneoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgnoneoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgnoneoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgpbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgpbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgpbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgpbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgpbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgsasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgsasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgsbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgsbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsgamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsgamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsgamgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgsgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsgamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsgamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsgamgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgsgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsgasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsgasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsgasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgsgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsgasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsgasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsgasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgsgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgshypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgshypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgshypreoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgshypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgshypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgshypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgshypreoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgshypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgsjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgsjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsmgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsmgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsmgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgsmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsmgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsmgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsmgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgsmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsnoneoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgsmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsnoneoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgsmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsoroptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgsoroptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgspbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgspbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgspbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgspbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgspbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgspbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgspbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgspbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgssoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgssoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgssoroptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=cgssoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgssoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgssoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/cgssoroptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgssoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/conditionnumberoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/conditionnumberoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/conditionnumberoptions.m	(revision 27955)
@@ -0,0 +1,17 @@
+function cn=conditionnumberoptions(varargin)
+%MULTIGRIDOPTIONS - use Multigrid 
+%
+%   Usage:
+%      options=mgoptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+cn=struct();
+cn.toolkit='petsc';
+cn.mat_type=getfieldvalue(options,'mat_type','mpiaij');
+cn.ksp_type=getfieldvalue(options,'ksp_type','gmres');
+cn.pc_type=getfieldvalue(options,'pc_type','none');
+cn.ksp_monitor_singular_value=getfieldvalue(options,'ksp_monitor_singular_value','');
+cn.ksp_gmres_restart=getfieldvalue(options,'ksp_gmres_restart',1000);
+cn.info=getfieldvalue(options,'info','');
+cn.log_summary=getfieldvalue(options,'log_summary','');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/conditionnumberoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/conditionnumberoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/conditionnumberoptions.py	(revision 27955)
@@ -0,0 +1,23 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def conditionnumberoptions(*args):
+    """MULTIGRIDOPTIONS - use Multigrid
+
+    Usage:
+        options = mgoptions
+    """
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    cn = OrderedDict()
+    cn.toolkit = 'petsc'
+    cn.mat_type = getfieldvalue(options, 'mat_type', 'mpiaij')
+    cn.ksp_type = getfieldvalue(options, 'ksp_type', 'gmres')
+    cn.pc_type = getfieldvalue(options, 'pc_type', 'none')
+    cn.ksp_monitor_singular_value = getfieldvalue(options, 'ksp_monitor_singular_value', '')
+    cn.ksp_gmres_restart = getfieldvalue(options, 'ksp_gmres_restart', 1000)
+    cn.info = getfieldvalue(options, 'info', '')
+    cn.log_summary = getfieldvalue(options, 'log_summary', '')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=crasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=crbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crgamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crgamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crgamgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=crgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crgamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crgamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crgamgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crgasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crgasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crgasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=crgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crgasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crgasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crgasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crhypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crhypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crhypreoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=crhypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crhypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crhypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crhypreoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crhypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=crjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crmgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crmgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crmgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=crmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crmgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crmgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crmgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crnoneoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=crmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crnoneoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crpbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crpbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=crpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crpbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crpbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crpbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crsoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crsoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crsoroptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=crsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','cr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crsoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crsoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/crsoroptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=dgmresasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmresasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=dgmresbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmresbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresgamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresgamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresgamgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=dgmresgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresgamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresgamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresgamgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmresgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresgasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresgasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresgasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=dgmresgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresgasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresgasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresgasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmresgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmreshypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmreshypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmreshypreoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=dgmreshypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmreshypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmreshypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmreshypreoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmreshypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=dgmresjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmresjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresmgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresmgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresmgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=dgmresmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresmgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresmgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresmgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmresmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresnoneoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=dgmresmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmresnoneoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmresmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmrespbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmrespbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmrespbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=dgmrespbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmrespbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmrespbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmrespbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmrespbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmressoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmressoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmressoroptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=dgmressoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','dgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmressoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmressoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/dgmressoroptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmressoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=fgmresasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmresasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=fgmresbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmresbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresgamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresgamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresgamgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=fgmresgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresgamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresgamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresgamgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmresgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresgasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresgasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresgasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=fgmresgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresgasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresgasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresgasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmresgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmreshypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmreshypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmreshypreoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=fgmreshypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmreshypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmreshypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmreshypreoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmreshypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=fgmresjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmresjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresmgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresmgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresmgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=fgmresmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresmgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresmgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresmgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmresmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresnoneoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=fgmresmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmresnoneoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmresmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmrespbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmrespbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmrespbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=fgmrespbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmrespbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmrespbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmrespbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmrespbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmressoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmressoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmressoroptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=fgmressoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','fgmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmressoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmressoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/fgmressoroptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmressoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gcrasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrbjacobioptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=gcrbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrbjacobioptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrgamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrgamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrgamgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gcrgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrgamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrgamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrgamgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrgasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrgasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrgasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gcrgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrgasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrgasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrgasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrhypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrhypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrhypreoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gcrhypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrhypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrhypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrhypreoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrhypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gcrjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrmgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrmgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrmgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gcrmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrmgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrmgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrmgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrnoneoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gcrmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrnoneoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrpbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrpbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gcrpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrpbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrpbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrpbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrsoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrsoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrsoroptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gcrsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gcr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrsoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrsoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gcrsoroptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gltrasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gltrbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrgamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrgamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrgamgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gltrgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrgamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrgamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrgamgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrgasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrgasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrgasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gltrgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrgasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrgasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrgasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrhypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrhypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrhypreoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gltrhypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrhypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrhypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrhypreoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrhypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gltrjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrmgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrmgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrmgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gltrmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrmgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrmgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrmgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrnoneoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gltrmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrnoneoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrpbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrpbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gltrpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrpbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrpbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrpbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrsoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrsoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrsoroptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gltrsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gltr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrsoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrsoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gltrsoroptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gmresasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmresasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gmresbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmresbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresgamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresgamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresgamgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gmresgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresgamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresgamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresgamgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmresgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresgasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresgasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresgasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gmresgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresgasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresgasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresgasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmresgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmreshypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmreshypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmreshypreoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gmreshypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmreshypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmreshypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmreshypreoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmreshypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gmresjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmresjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresmgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresmgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresmgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gmresmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresmgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresmgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresmgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmresmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresnoneoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gmresmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmresnoneoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmresmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmrespbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmrespbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmrespbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gmrespbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmrespbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmrespbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmrespbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmrespbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmressoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmressoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmressoroptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=gmressoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','gmres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmressoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmressoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/gmressoroptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmressoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgsasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgsasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgsbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgsbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsgamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsgamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsgamgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgsgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsgamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsgamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsgamgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgsgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsgasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsgasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsgasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgsgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsgasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsgasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsgasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgsgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgshypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgshypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgshypreoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgshypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgshypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgshypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgshypreoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgshypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgsjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgsjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsmgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsmgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsmgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgsmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsmgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsmgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsmgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgsmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsnoneoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgsmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgsnoneoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgsmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgspbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgspbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgspbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgspbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgspbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgspbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgspbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgspbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgssoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgssoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgssoroptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=ibcgssoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','ibcgs');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgssoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgssoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/ibcgssoroptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgssoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/iluasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/iluasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/iluasmoptions.m	(revision 27955)
@@ -0,0 +1,17 @@
+function iluasm=iluasmoptions(varargin)
+%ILUASMOPTIONS - 
+%
+%   Usage:
+%      options=iluasmoptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+iluasm=struct();
+iluasm.toolkit='petsc';
+iluasm.mat_type=getfieldvalue(options,'mat_type','aij');
+iluasm.ksp_type=getfieldvalue(options,'ksp_type','gmres');
+iluasm.pc_type=getfieldvalue(options,'pc_type','asm');
+iluasm.sub_pc_type=getfieldvalue(options,'sub_pc_type','ilu');
+iluasm.pc_asm_overlap=getfieldvalue(options,'pc_asm_overlap',5);
+iluasm.ksp_max_it=getfieldvalue(options,'ksp_max_it',100);
+iluasm.ksp_rtol=getfieldvalue(options,'ksp_rtol',1e-15);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/iluasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/iluasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/iluasmoptions.py	(revision 27955)
@@ -0,0 +1,27 @@
+from collections import OrderedDict
+import pairoptions
+
+
+def iluasmoptions(*args):
+    """
+    ILUASMOPTIONS -
+
+       Usage:
+          options = iluasmoptions
+    """
+
+    #retrieve options provided in varargin
+    options = pairoptions.pairoptions(*args)
+    iluasm = OrderedDict()
+
+    #default iluasm options
+    iluasm['toolkit'] = 'petsc'
+    iluasm['mat_type'] = options.getfieldvalue('mat_type', 'aij')
+    iluasm['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    iluasm['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+    iluasm['sub_pc_type'] = options.getfieldvalue('sub_pc_type', 'ilu')
+    iluasm['pc_asm_overlap'] = options.getfieldvalue('pc_asm_overlap', 5)
+    iluasm['ksp_max_it'] = options.getfieldvalue('ksp_max_it', 100)
+    iluasm['ksp_rtol'] = options.getfieldvalue('ksp_rtol', 1e-15)
+
+    return iluasm
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/issmgslsolver.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/issmgslsolver.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/issmgslsolver.js	(revision 27955)
@@ -0,0 +1,21 @@
+function issmgslsolver(){
+//ISSMSOLVER - 
+//
+//   Usage:
+//      options=issmsolver(varargin);
+
+	//Retrieve options provided in varargin. First convert arguments to array:
+	var args = Array.prototype.slice.call(arguments);
+
+	//Then process options
+	var  options = new pairoptions(args.slice(1,args.length));
+
+	//default issmoptions options
+	var issmoptions={};
+	issmoptions['toolkit']='issm';
+	issmoptions['mat_type']=options.getfieldvalue('mat_type','dense');
+	issmoptions['vec_type']=options.getfieldvalue('vec_type','seq');
+	issmoptions['solver_type']=options.getfieldvalue('solver_type','gsl');
+
+	return issmoptions;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/issmgslsolver.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/issmgslsolver.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/issmgslsolver.m	(revision 27955)
@@ -0,0 +1,15 @@
+function issmoptions=issmgslsolver(varargin)
+%ISSMSOLVER - 
+%
+%   Usage:
+%      options=issmsolver;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+issmoptions=struct();
+
+%default issmoptions options
+issmoptions.toolkit='issm';
+issmoptions.mat_type=getfieldvalue(options,'mat_type','dense');
+issmoptions.vec_type=getfieldvalue(options,'vec_type','seq');
+issmoptions.solver_type=getfieldvalue(options,'solver_type','gsl');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/issmgslsolver.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/issmgslsolver.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/issmgslsolver.py	(revision 27955)
@@ -0,0 +1,35 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def issmgslsolver(*args):
+    #ISSMSOLVE - return issm solver options
+    #
+    #   Usage:
+    #      options = issmsolver
+
+    #retrieve options provided in *args
+    arguments = pairoptions(*args)
+
+    options = OrderedDict()
+    options['toolkit'] = 'issm'
+    options['mat_type'] = 'dense'
+    options['vec_type'] = 'seq'
+    options['solver_type'] = 'gsl'
+
+    #now, go through our arguments, and write over default options.
+    for i in range(len(arguments.list)):
+        arg1 = arguments.list[i][0]
+        arg2 = arguments.list[i][1]
+        found = 0
+        for j in range(len(options)):
+            joption = options[j][0]
+            if joption == arg1:
+                joption[1] = arg2
+                options[j] = joption
+                found = 1
+                break
+        if not found:
+            #this option did not exist, add it:
+            options.append([arg1, arg2])
+    return options
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/issmmumpssolver.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/issmmumpssolver.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/issmmumpssolver.js	(revision 27955)
@@ -0,0 +1,21 @@
+function issmmumpssolver(){
+//ISSMMUMPSSOLVER - 
+//
+//   Usage:
+//      options=issmmumpssolver(varargin);
+
+	//Retrieve options provided in varargin. First convert arguments to array:
+	var args = Array.prototype.slice.call(arguments);
+
+	//Then process options
+	var  options = new pairoptions(args.slice(1,args.length));
+
+	//default issmoptions options
+	var issmoptions={};
+	issmoptions['toolkit']='issm';
+	issmoptions['mat_type']=options.getfieldvalue('mat_type','mpisparse');
+	issmoptions['vec_type']=options.getfieldvalue('vec_type','mpi');
+	issmoptions['solver_type']=options.getfieldvalue('solver_type','mumps');
+
+	return issmoptions;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/issmmumpssolver.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/issmmumpssolver.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/issmmumpssolver.m	(revision 27955)
@@ -0,0 +1,15 @@
+function issmoptions=issmmumpssolver(varargin)
+%ISSMSOLVER - 
+%
+%   Usage:
+%      options=issmsolver;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+issmoptions=struct();
+
+%default issmoptions options
+issmoptions.toolkit='issm';
+issmoptions.mat_type=getfieldvalue(options,'mat_type','mpisparse');
+issmoptions.vec_type=getfieldvalue(options,'vec_type','mpi');
+issmoptions.solver_type=getfieldvalue(options,'solver_type','mumps');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/issmmumpssolver.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/issmmumpssolver.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/issmmumpssolver.py	(revision 27955)
@@ -0,0 +1,35 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def issmmumpssolver(*args):
+    #ISSMSOLVE - return issm solver options
+    #
+    #   Usage:
+    #      options = issmsolver
+
+    #retrieve options provided in *args
+    arguments = pairoptions(*args)
+
+    options = OrderedDict()
+    options['toolkit'] = 'issm'
+    options['mat_type'] = 'mpisparse'
+    options['vec_type'] = 'mpi'
+    options['solver_type'] = 'mumps'
+
+    #now, go through our arguments, and write over default options.
+    for i in range(len(arguments.list)):
+        arg1 = arguments.list[i][0]
+        arg2 = arguments.list[i][1]
+        found = 0
+        for j in range(len(options)):
+            joption = options[j][0]
+            if joption == arg1:
+                joption[1] = arg2
+                options[j] = joption
+                found = 1
+                break
+        if not found:
+            #this option did not exist, add it:
+            options.append([arg1, arg2])
+    return options
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/jacobiasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/jacobiasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/jacobiasmoptions.m	(revision 27955)
@@ -0,0 +1,19 @@
+function jacobiasm=jacobiasmoptions(varargin)
+%ASMOPTIONS - return Additive Shwartz Method with Jacobi preconditioner petsc options
+%
+%   Usage:
+%      options=jacobiasmoptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+jacobiasm=struct();
+
+%default jacobiasm options
+jacobiasm.toolkit='petsc';
+jacobiasm.mat_type=getfieldvalue(options,'mat_type','mpiaij');
+jacobiasm.ksp_type=getfieldvalue(options,'ksp_type','gmres');
+jacobiasm.pc_type=getfieldvalue(options,'pc_type','asm');
+jacobiasm.sub_pc_type=getfieldvalue(options,'sub_pc_type','jacobi');
+jacobiasm.pc_asm_overlap=getfieldvalue(options,'pc_asm_overlap',3);
+jacobiasm.ksp_max_it=getfieldvalue(options,'ksp_max_it',100);
+jacobiasm.ksp_rtol=getfieldvalue(options,'ksp_rtol',1e-15);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/jacobiasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/jacobiasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/jacobiasmoptions.py	(revision 27955)
@@ -0,0 +1,37 @@
+from pairoptions import pairoptions
+
+
+def jacobiasmoptions(*args):
+    #ASMOPTIONS - return Additive Shwartz Method with Jacobi preconditioner petsc options
+    #
+    #   Usage:
+    #      options = jacobiasmoptions
+
+    #retrieve options provided in *args
+    arguments = pairoptions(*args)
+
+    options = [['toolkit', 'petsc'],
+               ['mat_type', 'mpiaij'],
+               ['ksp_type', 'gmres'],
+               ['pc_type', 'asm'],
+               ['sub_pc_type', 'jacobi'],
+               ['pc_asm_overlap', 3],
+               ['ksp_max_it', 100],
+               ['ksp_rtol', 1e-15]]
+
+    #now, go through our arguments, and write over default options.
+    for i in range(len(arguments.list)):
+        arg1 = arguments.list[i][0]
+        arg2 = arguments.list[i][1]
+        found = 0
+        for j in range(len(options)):
+            joption = options[j][0]
+            if joption == arg1:
+                joption[1] = arg2
+                options[j] = joption
+                found = 1
+                break
+        if not found:
+            #this option did not exist, add it:
+            options.append([arg1, arg2])
+    return options
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/jacobicgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/jacobicgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/jacobicgoptions.m	(revision 27955)
@@ -0,0 +1,16 @@
+function jacobicg=jacobiacgoptions(varargin)
+%ASMOPTIONS - return Additive Shwartz Method with Jacobi preconditioner petsc options
+%
+%   Usage:
+%      options=jacobiasmoptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+jacobicg=struct();
+
+%default jacobiasm options
+jacobicg.toolkit='petsc';
+jacobicg.mat_type=getfieldvalue(options,'mat_type','mpiaij');
+jacobicg.ksp_type=getfieldvalue(options,'ksp_type','cg');
+jacobicg.ksp_max_it=getfieldvalue(options,'ksp_max_it',100);
+jacobicg.ksp_rtol=getfieldvalue(options,'ksp_rtol',1e-15);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/jacobicgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/jacobicgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/jacobicgoptions.py	(revision 27955)
@@ -0,0 +1,34 @@
+import pairoptions
+
+
+def jacobicgoptions(*args):
+    #ASMOPTIONS - return Additive Shwartz Method with Jacobi preconditioner petsc options
+    #
+    #   Usage:
+    #      options = jacobicgoptions
+
+    #retrieve options provided in varargin
+    arguments = pairoptions.pairoptions(*args)
+
+    options = [['toolkit', 'petsc'],
+               ['mat_type', 'mpiaij'],
+               ['ksp_type', 'cg'],
+               ['ksp_max_it', 100],
+               ['ksp_rtol', 1e-15]]
+
+    #now, go through our arguments, and write over default options.
+    for i in range(len(arguments.list)):
+        arg1 = arguments.list[i][0]
+        arg2 = arguments.list[i][1]
+        found = 0
+        for j in range(len(options)):
+            joption = options[j][0]
+            if joption == arg1:
+                joption[1] = arg2
+                options[j] = joption
+                found = 1
+                break
+        if not found:
+            #this option did not exist, add it:
+            options.append([arg1, arg2])
+    return options
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lcdasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lcdbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdgamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdgamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdgamgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lcdgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdgamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdgamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdgamgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdgasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdgasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdgasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lcdgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdgasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdgasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdgasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdhypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdhypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdhypreoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lcdhypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdhypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdhypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdhypreoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdhypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lcdjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdmgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdmgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdmgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lcdmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdmgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdmgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdmgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdnoneoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lcdmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdnoneoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdpbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdpbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lcdpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdpbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdpbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdpbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdsoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdsoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdsoroptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lcdsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lcd');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdsoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdsoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lcdsoroptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrgamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrgamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrgamgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrgamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrgamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrgamgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrgasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrgasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrgasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrgasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrgasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrgasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrhypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrhypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrhypreoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrhypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrhypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrhypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrhypreoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrhypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrmgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrmgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrmgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrmgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrmgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrmgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrnoneoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrnoneoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrpbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrpbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrpbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrpbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrpbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrsoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrsoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrsoroptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=lsqrsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','lsqr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrsoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrsoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/lsqrsoroptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/matlaboptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/matlaboptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/matlaboptions.m	(revision 27955)
@@ -0,0 +1,13 @@
+function maltab=matlaboptions(varargin)
+%MATLABOPTIONS - return Matlab petsc options
+%
+%   Usage:
+%      options=matlaboptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+maltab=struct();
+
+%default matlab options
+maltab.toolkit='petsc';
+maltab.ksp_type='matlab';
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/matlaboptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/matlaboptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/matlaboptions.py	(revision 27955)
@@ -0,0 +1,31 @@
+import pairoptions
+
+
+def matlaboptions(*args):
+    #MATLABOPTIONS - return Matlab petsc options
+    #
+    #   Usage:
+    #      options = matlaboptions
+
+    #retrieve options provided in varargin
+    arguments = pairoptions.pairoptions(*args)
+
+    options = [['toolkit', 'petsc'],
+               ['ksp_type', 'matlab']]
+
+    #now, go through our arguments, and write over default options.
+    for i in range(len(arguments.list)):
+        arg1 = arguments.list[i][0]
+        arg2 = arguments.list[i][1]
+        found = 0
+        for j in range(len(options)):
+            joption = options[j][0]
+            if joption == arg1:
+                joption[1] = arg2
+                options[j] = joption
+                found = 1
+                break
+        if not found:
+            #this option did not exist, add it:
+            options.append([arg1, arg2])
+    return options
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=minresasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minresasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=minresbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minresbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresgamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresgamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresgamgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=minresgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresgamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresgamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresgamgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minresgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresgasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresgasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresgasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=minresgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresgasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresgasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresgasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minresgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minreshypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minreshypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minreshypreoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=minreshypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minreshypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minreshypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minreshypreoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minreshypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=minresjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minresjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresmgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresmgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresmgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=minresmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresmgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresmgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresmgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minresmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresnoneoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=minresmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minresnoneoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minresmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minrespbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minrespbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minrespbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=minrespbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minrespbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minrespbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minrespbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minrespbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minressoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minressoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minressoroptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=minressoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','minres');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minressoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minressoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/minressoroptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minressoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/mumpsnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/mumpsnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/mumpsnoneoptions.m	(revision 27955)
@@ -0,0 +1,35 @@
+function mumps=mumpsoptions(varargin)
+%MUMPSOPTIONS - return MUMPS direct solver  petsc options
+%
+%   Usage:
+%      options=mumpsoptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+mumps=struct();
+
+%default mumps options
+PETSC_MAJOR=IssmConfig('_PETSC_MAJOR_');
+PETSC_MINOR=IssmConfig('_PETSC_MINOR_');
+if PETSC_MAJOR==2.,
+	mumps.toolkit='petsc';
+	mumps.mat_type=getfieldvalue(options,'mat_type','aijmumps');
+	mumps.ksp_type=getfieldvalue(options,'ksp_type','preonly');
+	mumps.pc_type=getfieldvalue(options,'pc_type','lu');
+	mumps.mat_mumps_icntl_14=getfieldvalue(options,'mat_mumps_icntl_14',120);
+end
+
+if PETSC_MAJOR==3.,
+	mumps.toolkit='petsc';
+	mumps.mat_type=getfieldvalue(options,'mat_type','mpiaij');
+	mumps.ksp_type=getfieldvalue(options,'ksp_type','preonly');
+	mumps.pc_type=getfieldvalue(options,'pc_type','lu');
+	if PETSC_MINOR>8
+		mumps.pc_factor_mat_solver_type=getfieldvalue(options,'pc_factor_mat_solver_type','mumps');
+	else
+		mumps.pc_factor_mat_solver_package=getfieldvalue(options,'pc_factor_mat_solver_package','mumps');
+	end
+	mumps.mat_mumps_icntl_14=getfieldvalue(options,'mat_mumps_icntl_14',120);
+	mumps.mat_mumps_icntl_28=2; %1=serial, 2=parallel
+	mumps.mat_mumps_icntl_29=2; %parallel ordering 1 = ptscotch, 2 = parmetis
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/mumpsnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/mumpsnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/mumpsnoneoptions.py	(revision 27955)
@@ -0,0 +1,39 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+from IssmConfig import IssmConfig
+
+
+def mumpsoptions(*args):
+    #MUMPSOPTIONS - return MUMPS direct solver  petsc options
+    #
+    #   Usage:
+    #      options = mumpsoptions
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    mumps = OrderedDict()
+
+    #default mumps options
+    PETSC_MAJOR = IssmConfig('_PETSC_MAJOR_')[0]
+    PETSC_MINOR = IssmConfig('_PETSC_MINOR_')[0]
+    if PETSC_MAJOR == 2:
+        mumps['toolkit'] = 'petsc'
+        mumps['mat_type'] = options.getfieldvalue(options, 'mat_type', 'aijmumps')
+        mumps['ksp_type'] = options.getfieldvalue(options, 'ksp_type', 'preonly')
+        mumps['pc_type'] = options.getfieldvalue(options, 'pc_type', 'lu')
+        mumps['mat_mumps_icntl_14'] = options.getfieldvalue(options, 'mat_mumps_icntl_14', 120)
+
+    if PETSC_MAJOR == 3:
+        mumps['toolkit'] = 'petsc'
+        mumps['mat_type'] = options.getfieldvalue(options, 'mat_type', 'mpiaij')
+        mumps['ksp_type'] = options.getfieldvalue(options, 'ksp_type', 'preonly')
+        mumps['pc_type'] = options.getfieldvalue(options, 'pc_type', 'lu')
+        if PETSC_MINOR > 8:
+            mumps['pc_factor_mat_solver_type'] = options.getfieldvalue(options, 'pc_factor_mat_solver_type', 'mumps')
+        else:
+            mumps['pc_factor_mat_solver_package'] = options.getfieldvalue(options, 'pc_factor_mat_solver_package', 'mumps')
+        mumps['mat_mumps_icntl_14'] = options.getfieldvalue(options, 'mat_mumps_icntl_14', 120)
+        mumps['mat_mumps_icntl_28'] = 2  #1 = serial, 2 = parallel
+        mumps['mat_mumps_icntl_29'] = 2  #parallel ordering 1 = ptscotch, 2 = parmetis
+
+    return mumps
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/mumpsoptions.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/mumpsoptions.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/mumpsoptions.js	(revision 27955)
@@ -0,0 +1,25 @@
+function mumpsoptions(){
+//MUMPSOPTIONS - 
+//
+//   Usage:
+//      options=mumpsoptions(varargin);
+
+	//Retrieve options provided in varargin. First convert arguments to array:
+	var args = Array.prototype.slice.call(arguments);
+
+	//Then process options
+	var  options = new pairoptions(args.slice(1,args.length));
+
+	//default issmoptions options
+	var mumpsoptions={};
+	mumpsoptions['toolkit']='petsc';
+	mumpsoptions['mat_type']=options.getfieldvalue('mat_type','mpiaij');
+	mumpsoptions['ksp_type']=options.getfieldvalue('ksp_type','preonly');
+	mumpsoptions['pc_type']=options.getfieldvalue('pc_type','lu');
+	mumpsoptions['pc_factor_mat_solver_type']=options.getfieldvalue('pc_factor_mat_solver_type','mumps');
+	mumpsoptions['mat_mumps_icntl_14']=options.getfieldvalue('mat_mumps_icntl_14',120);
+	mumpsoptions['mat_mumps_icntl_28']=options.getfieldvalue('mat_mumps_icntl_28',2);
+	mumpsoptions['mat_mumps_icntl_29']=options.getfieldvalue('mat_mumps_icntl_29',2);
+
+	return mumpsoptions;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/mumpsoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/mumpsoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/mumpsoptions.m	(revision 27955)
@@ -0,0 +1,37 @@
+function mumps=mumpsoptions(varargin)
+%MUMPSOPTIONS - return MUMPS direct solver  petsc options
+%
+%   Usage:
+%      options=mumpsoptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+mumps=struct();
+
+%default mumps options
+PETSC_MAJOR=IssmConfig('_PETSC_MAJOR_');
+PETSC_MINOR=IssmConfig('_PETSC_MINOR_');
+if PETSC_MAJOR==2.,
+	mumps.toolkit='petsc';
+	mumps.mat_type=getfieldvalue(options,'mat_type','aijmumps');
+	mumps.ksp_type=getfieldvalue(options,'ksp_type','preonly');
+	mumps.pc_type=getfieldvalue(options,'pc_type','lu');
+	mumps.mat_mumps_icntl_14=getfieldvalue(options,'mat_mumps_icntl_14',120);
+end
+
+if PETSC_MAJOR==3.,
+	mumps.toolkit='petsc';
+	mumps.mat_type=getfieldvalue(options,'mat_type','mpiaij');
+	mumps.ksp_type=getfieldvalue(options,'ksp_type','preonly');
+	mumps.pc_type=getfieldvalue(options,'pc_type','lu');
+	if PETSC_MINOR>8
+		mumps.pc_factor_mat_solver_type=getfieldvalue(options,'pc_factor_mat_solver_type','mumps');
+	else
+		mumps.pc_factor_mat_solver_package=getfieldvalue(options,'pc_factor_mat_solver_package','mumps');
+	end
+	mumps.mat_mumps_icntl_14=getfieldvalue(options,'mat_mumps_icntl_14',120);
+
+	%These 2 lines make raijin break (ptwgts error during solver with PETSc 3.3)
+	mumps.mat_mumps_icntl_28=2; %1=serial, 2=parallel
+	mumps.mat_mumps_icntl_29=2; %parallel ordering 1 = ptscotch, 2 = parmetis
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/mumpsoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/mumpsoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/mumpsoptions.py	(revision 27955)
@@ -0,0 +1,42 @@
+from collections import OrderedDict
+from pairoptions import pairoptions
+from IssmConfig import IssmConfig
+
+
+def mumpsoptions(*args):
+    """
+    MUMPSOPTIONS - return MUMPS direct solver  petsc options
+
+       Usage:
+          options = mumpsoptions
+    """
+
+    #retrieve options provided in varargin
+    options = pairoptions(*args)
+    mumps = OrderedDict()
+
+    #default mumps options
+    PETSC_MAJOR = IssmConfig('_PETSC_MAJOR_')[0]
+    PETSC_MINOR = IssmConfig('_PETSC_MINOR_')[0]
+    if PETSC_MAJOR == 2.:
+        mumps['toolkit'] = 'petsc'
+        mumps['mat_type'] = options.getfieldvalue('mat_type', 'aijmumps')
+        mumps['ksp_type'] = options.getfieldvalue('ksp_type', 'preonly')
+        mumps['pc_type'] = options.getfieldvalue('pc_type', 'lu')
+        mumps['mat_mumps_icntl_14'] = options.options.getfieldvalue('mat_mumps_icntl_14', 120)
+    if PETSC_MAJOR == 3.:
+        mumps['toolkit'] = 'petsc'
+        mumps['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+        mumps['ksp_type'] = options.getfieldvalue('ksp_type', 'preonly')
+        mumps['pc_type'] = options.getfieldvalue('pc_type', 'lu')
+        if PETSC_MINOR > 8.:
+            mumps['pc_factor_mat_solver_type'] = options.getfieldvalue('pc_factor_mat_solver_type', 'mumps')
+        else:
+            mumps['pc_factor_mat_solver_package'] = options.getfieldvalue('pc_factor_mat_solver_package', 'mumps')
+        mumps['mat_mumps_icntl_14'] = options.getfieldvalue('mat_mumps_icntl_14', 120)
+
+        #These 2 lines make raijin break (ptwgts error during solver with PETSc 3.3)
+        mumps['mat_mumps_icntl_28'] = options.getfieldvalue('mat_mumps_icntl_28', 1)  #1=serial, 2=parallel
+        mumps['mat_mumps_icntl_29'] = options.getfieldvalue('mat_mumps_icntl_29', 2)  #parallel ordering 1 = ptscotch, 2 = parmetis
+
+    return mumps
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=richardsonasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsonasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=richardsonbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsonbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsongamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsongamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsongamgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=richardsongamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsongamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsongamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsongamgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsongamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsongasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsongasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsongasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=richardsongasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsongasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsongasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsongasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsongasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonhypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonhypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonhypreoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=richardsonhypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonhypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonhypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonhypreoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsonhypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=richardsonjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsonjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonmgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonmgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonmgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=richardsonmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonmgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonmgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonmgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsonmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonnoneoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=richardsonmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonnoneoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsonmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonpbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonpbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=richardsonpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonpbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonpbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonpbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsonpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonsoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonsoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonsoroptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=richardsonsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','richardson');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonsoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonsoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/richardsonsoroptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsonsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/solvers
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/solvers	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/solvers	(revision 27955)
@@ -0,0 +1,1 @@
+tfqmr symmlq stcg richardson minres lsqr lcd ibcgs gmres gltr gcr fgmres dgmres cr cgs cgne cg bigcg bcgsl bcgs
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/soroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/soroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/soroptions.m	(revision 27955)
@@ -0,0 +1,17 @@
+function sor=soroptions(varargin)
+%SOROPTIONS - return Relaxation Solver petsc options
+%
+%   Usage:
+%      options=soroptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+sor=struct();
+
+%default sor options
+sor.toolkit='petsc';
+sor.mat_type=getfieldvalue(options,'mat_type','mpiaij');
+sor.ksp_type=getfieldvalue(options,'ksp_type','cg');
+sor.pc_type=getfieldvalue(options,'pc_type','sor');
+sor.pc_sor_omega=getfieldvalue(options,'pc_sor_omega',1.1);
+sor.pc_sor_its=getfieldvalue(options,'pc_sor_its',2);
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/soroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/soroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/soroptions.py	(revision 27955)
@@ -0,0 +1,35 @@
+from pairoptions import pairoptions
+
+
+def soroptions(*args):
+    #SOROPTIONS - return Relaxation Solver petsc options
+    #
+    #   Usage:
+    #      options = soroptions
+
+    #retrieve options provided in *args
+    arguments = pairoptions(*args)
+
+    options = [['toolkit', 'petsc'],
+               ['mat_type', 'mpiaij'],
+               ['ksp_type', 'cg'],
+               ['pc_type', 'sor'],
+               ['pc_sor_omega', 1.1],
+               ['pc_sor_its', 2]]
+
+    #now, go through our arguments, and write over default options.
+    for i in range(len(arguments.list)):
+        arg1 = arguments.list[i][0]
+        arg2 = arguments.list[i][1]
+        found = 0
+        for j in range(len(options)):
+            joption = options[j][0]
+            if joption == arg1:
+                joption[1] = arg2
+                options[j] = joption
+                found = 1
+                break
+        if not found:
+            #this option did not exist, add it:
+            options.append([arg1, arg2])
+    return options
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=stcgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=stcgbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcgbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcggamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcggamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcggamgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=stcggamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcggamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcggamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcggamgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcggamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcggasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcggasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcggasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=stcggasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcggasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcggasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcggasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcggasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcghypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcghypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcghypreoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=stcghypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcghypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcghypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcghypreoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcghypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=stcgjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcgjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgmgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgmgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgmgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=stcgmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgmgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgmgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgmgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcgmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgnoneoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=stcgmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgnoneoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcgmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgpbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgpbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=stcgpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgpbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgpbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgpbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcgpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgsoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgsoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgsoroptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=stcgsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','stcg');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgsoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgsoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stcgsoroptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcgsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stokesoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stokesoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stokesoptions.m	(revision 27955)
@@ -0,0 +1,19 @@
+function stokes=stokesoptions(varargin)
+%STOKESOPTIONS - return STOKES multi-physics solver petsc options
+%
+%   Usage:
+%      options=stokesoptions;
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+stokes=struct();
+
+stokes.toolkit='petsc';
+stokes.mat_type=getfieldvalue(options,'mat_type','mpiaij');
+stokes.issm_option_solver=getfieldvalue(options,'issm_option_solver','stokes');
+stokes.ksp_type = 'cr';
+stokes.pc_type = 'bjacobi';
+stokes.tol = 0.6;
+stokes.elltol = 5e-5;
+stokes.schur_pc = 1;
+stokes.max_iter = 10000;
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stokesoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stokesoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/stokesoptions.py	(revision 27955)
@@ -0,0 +1,45 @@
+from pairoptions import pairoptions
+from IssmConfig import IssmConfig
+
+
+def stokesoptions(*args):
+    #STOKESOPTIONS - return STOKES multi - physics solver petsc options
+    #
+    #   Usage:
+    #      options = stokesoptions
+
+    #retrieve options provided in *args
+    arguments = pairoptions(*args)
+
+    #default stokes options
+    PETSC_VERSION = IssmConfig('_PETSC_MAJOR_')[0]
+
+    if PETSC_VERSION == 2.:
+        raise RuntimeError('stokesoptions error message: multi - physics options not supported in Petsc 2')
+    if PETSC_VERSION == 3.:
+        options = [['toolkit', 'petsc'],
+                   ['mat_type', 'mpiaij'],
+                   ['ksp_type', 'cr'],
+                   ['pc_type', 'bjacobi'],
+                   ['tol', 0.6],
+                   ['elltol', 5e-5],
+                   ['schur_pc', 1],
+                   ['max_iter', 10000],
+                   ['issm_option_solver', 'stokes']]
+
+    #now, go through our arguments, and write over default options.
+    for i in range(len(arguments.list)):
+        arg1 = arguments.list[i][0]
+        arg2 = arguments.list[i][1]
+        found = 0
+        for j in range(len(options)):
+            joption = options[j][0]
+            if joption == arg1:
+                joption[1] = arg2
+                options[j] = joption
+                found = 1
+                break
+        if not found:
+            #this option did not exist, add it:
+            options.append([arg1, arg2])
+    return options
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqgamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqgamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqgamgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqgamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqgamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqgamgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqgasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqgasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqgasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqgasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqgasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqgasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqhypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqhypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqhypreoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqhypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqhypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqhypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqhypreoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqhypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqmgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqmgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqmgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqmgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqmgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqmgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqnoneoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqnoneoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqpbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqpbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqpbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqpbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqpbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqsoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqsoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqsoroptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=symmlqsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','symmlq');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqsoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqsoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/symmlqsoroptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrasmoptions.m	(revision 27955)
@@ -0,0 +1,9 @@
+function solverOptions=tfqmrasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'asm');
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrasmoptions.py	(revision 27955)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=tfqmrbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'bjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrgamgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrgamgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrgamgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=tfqmrgamgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gamg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrgamgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrgamgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrgamgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrgasmoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrgasmoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrgasmoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=tfqmrgasmoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'gasm');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrgasmoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrgasmoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrgasmoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrhypreoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrhypreoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrhypreoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=tfqmrhypreoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'hypre');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrhypreoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrhypreoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrhypreoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrhypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=tfqmrjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'jacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrmgoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrmgoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrmgoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=tfqmrmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'mg');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrmgoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrmgoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrmgoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrnoneoptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrnoneoptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrnoneoptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=tfqmrmgoptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'none');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrnoneoptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrnoneoptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrnoneoptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrpbjacobioptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrpbjacobioptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrpbjacobioptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=tfqmrpbjacobioptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'pbjacobi');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrpbjacobioptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrpbjacobioptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrpbjacobioptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrsoroptions.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrsoroptions.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrsoroptions.m	(revision 27955)
@@ -0,0 +1,10 @@
+function solverOptions=tfqmrsoroptions(varargin)
+
+%retrieve options provided in varargin
+options=pairoptions(varargin{:});
+solverOptions=struct();
+solverOptions.toolkit='petsc';
+solverOptions.mat_type=getfieldvalue(options, 'mat_type','mpiaij');
+solverOptions.ksp_type=getfieldvalue(options, 'ksp_type','tfqmr');
+solverOptions.pc_type=getfieldvalue(options, 'pc_type',  'sor');
+
Index: /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrsoroptions.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrsoroptions.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/solvers/tfqmrsoroptions.py	(revision 27955)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/branches/trunk-dlcheng-ASE/src/m/string/dewhite.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/string/dewhite.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/string/dewhite.m	(revision 27955)
@@ -0,0 +1,30 @@
+function sout = dewhite(s)
+%DEWHITE Dewhite. Strip trailing whitespace.
+%
+%   DEWHITE(S) removes leading and trailing white space and any null characters
+%   from the string S.  A null character is one that has an absolute value of
+%   0.
+%
+%   See also DDEWHITE, DEBLANK, DDEBLANK.
+
+%   Author:      Peter J. Acklam
+%   Time-stamp:  2003-10-13 11:12:52 +0200
+%   E-mail:      pjacklam@online.no
+%   URL:         http://home.online.no/~pjacklam
+
+   error(nargchk(1, 1, nargin));
+   if ~ischar(s)
+      error( 'Input must be a string (char array).' );
+   end
+
+   if isempty(s)
+      sout = s;
+      return;
+   end
+
+   [r, c] = find(~isspace(s));
+   if size(s, 1) == 1
+      sout = s(1:max(c));
+   else
+      sout = s(:,1:max(c));
+   end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/string/discardnum.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/string/discardnum.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/string/discardnum.m	(revision 27955)
@@ -0,0 +1,14 @@
+function string2=discardnum(string)
+%DISCARDNUM -  ??????
+%
+%   Usage:
+%      string2=discardnum(string)
+
+string2=string;
+
+for i=1:length(string),
+	if (((string(i)-0) <=57) & ((string(i)-0) >=48)),
+		string2=string(1:i-1);
+		break;
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/string/ismemberi.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/string/ismemberi.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/string/ismemberi.m	(revision 27955)
@@ -0,0 +1,26 @@
+function flag=ismemberi(string,list),
+%ISMEMBERI - return 1 if a string belongs to a list (case insensitive)
+%
+%   same function as Matlab's ismember except that it
+%   is case insensitive
+%
+%   Usage:
+%      flag=ismemberi(string,list);
+%
+%   Example:
+%      flag=ismemberi('test','{'test1','test2','test3'});
+
+if ~iscell(list)
+	error('ismemberi error message: the list of string must be a cell!')
+end
+
+%initialize output
+flag=0;
+
+%go through the list
+for i=1:length(list),
+	if strcmpi(string,list{i}),
+		flag=i;
+		return
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/string/strsplit_strict.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/string/strsplit_strict.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/string/strsplit_strict.m	(revision 27955)
@@ -0,0 +1,36 @@
+function splittedstring = strsplit_strict(inpstr,delimiter)
+%STRSPLIT_STRICT - split a string of delimiter separated values
+%
+%   Usage:
+%      output = strsplit_strict(inpstr,delimiter)
+
+%Check input arguments
+if(nargin ~= 2)
+    error('There is no argument defined');
+end
+
+%deblank string
+deblank(inpstr);
+
+%Get number of substrings
+idx  = findstr(inpstr,delimiter);
+if size(idx) == 0
+    splittedstring = {inpstr};
+else
+    sz = size(idx,2);
+    splittedstring = {};
+    %Loop through string and itinerate from delimiter to delimiter
+    for i = 1:sz
+        strtpos = 1;
+        endpos = idx(i)-1;
+        if i ~= 1
+            strtpos = idx(i-1)+1;
+        end
+        if i == sz
+            endpos = size(inpstr,2); 
+            splittedstring(i+1) = {inpstr(idx(i)+1 : endpos)};
+            endpos = idx(i)-1;
+        end
+        splittedstring(i) = {inpstr(strtpos : endpos)};   
+    end
+end
Index: /issm/branches/trunk-dlcheng-ASE/src/m/units/sletogt.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/units/sletogt.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/units/sletogt.m	(revision 27955)
@@ -0,0 +1,4 @@
+function conversionfactor=sletogt()
+
+	rho_water=1023;
+	conversionfactor=rho_water/1000*361.9; %361.9 Gigatons to 1 mm sea-level equivalent.
Index: /issm/branches/trunk-dlcheng-ASE/src/m/units/sletogt.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/m/units/sletogt.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/m/units/sletogt.py	(revision 27955)
@@ -0,0 +1,4 @@
+def sletogt():
+	conversionfactor = 361.9 #361.9 Gigatons to 1 mm sea-level equivalent.
+
+	return conversionfactor
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgConvertMesh/BamgConvertMesh.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgConvertMesh/BamgConvertMesh.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgConvertMesh/BamgConvertMesh.cpp	(revision 27955)
@@ -0,0 +1,64 @@
+/*\file BamgConvertMesh.c
+ *\brief: bamg module.
+ */
+#include "./BamgConvertMesh.h"
+
+void BamgConvertMeshUsage(void){/*{{{*/
+	_printf0_("BAMGCONVERTMESH - convert [x y index] to a bamg geom and mesh geom");
+	_printf0_("\n");
+	_printf0_("   Usage:\n");
+	_printf0_("      [bamggeom bamgmesh]=BamgConvertMesh(index,x,y)\n");
+	_printf0_("      index: index of the mesh\n");
+	_printf0_("      x,y: coordinates of the nodes\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(BamgConvertMesh_python){
+
+	/*input: */
+	int    *index      = NULL;
+	double *x          = NULL;
+	double *y          = NULL;
+	int     nods,nels,test1,test2;
+
+	/*Output*/
+	BamgMesh *bamgmesh = NULL;
+	BamgGeom *bamggeom = NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	CHECKARGUMENTS(NLHS,NRHS,&BamgConvertMeshUsage);
+
+	/*Initialize Bamg outputs*/
+	bamggeom=new BamgGeom();
+	bamgmesh=new BamgMesh();
+
+	/*Input datasets: */
+	FetchData(&index,&nels,&test1,INDEXHANDLE);
+	FetchData(&x,&nods,XHANDLE);
+	FetchData(&y,&test2,YHANDLE);
+
+	/*Check inputs*/
+	if(nels<0) _error_("Number of elements must be positive, check index number of lines");
+	if(nods<0) _error_("Number of nods must be positive, check x and y sizes");
+	if(test1!=3) _error_("index should have 3 columns");
+	if(test2!=nods) _error_("x and y do not have the same length");
+
+	/* Run core computations: */
+	BamgConvertMeshx(bamgmesh,bamggeom,index,x,y,nods,nels);
+
+	/*Generate output Matlab Structures*/
+	WriteData(BAMGGEOMOUT,bamggeom);
+	WriteData(BAMGMESHOUT,bamgmesh);
+
+	/*Clean up*/
+	xDelete<int>(index);
+	xDelete<double>(x);
+	xDelete<double>(y);
+	delete bamggeom;
+	delete bamgmesh;
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgConvertMesh/BamgConvertMesh.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgConvertMesh/BamgConvertMesh.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgConvertMesh/BamgConvertMesh.h	(revision 27955)
@@ -0,0 +1,54 @@
+/*!\file BamgConvertMesh.h
+ * \brief: prototype for Data Interpolation mex module.
+ */
+
+#ifndef _BAMGCONVERTMESH_H
+#define _BAMGCONVERTMESH_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../../c/shared/io/io.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "BamgConvertMesh"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define INDEXHANDLE prhs[0]
+#define XHANDLE     prhs[1]
+#define YHANDLE     prhs[2]
+/* serial output macros: */
+#define BAMGMESHOUT    (mxArray**)&plhs[0]
+#define BAMGGEOMOUT    (mxArray**)&plhs[1]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define INDEXHANDLE PyTuple_GetItem(args,0)
+#define XHANDLE     PyTuple_GetItem(args,1)
+#define YHANDLE     PyTuple_GetItem(args,2)
+/* serial output macros: */
+#define BAMGMESHOUT    output,0
+#define BAMGGEOMOUT    output,1
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  2
+#undef NRHS
+#define NRHS  3
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgMesher/BamgMesher.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgMesher/BamgMesher.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgMesher/BamgMesher.cpp	(revision 27955)
@@ -0,0 +1,51 @@
+/*\file BamgMesher.c
+ *\brief: mesher that uses the bamg library
+ */
+#include "./BamgMesher.h"
+
+void BamgMesherUsage(void){/*{{{*/
+	_printf0_("\n");
+	_printf0_("   usage: [bamgmesh,bamggeom]=" << __FUNCT__ << "(bamgmesh,bamggeom,bamgoptions)\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(BamgMesher_python){
+
+	/*Intermediary*/
+	BamgOpts *bamgopts     = NULL;
+	BamgMesh *bamgmesh_in  = NULL;
+	BamgGeom *bamggeom_in  = NULL;
+	BamgMesh *bamgmesh_out = NULL;
+	BamgGeom *bamggeom_out = NULL;
+
+	/*Boot module*/
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	CHECKARGUMENTS(NLHS,NRHS,&BamgMesherUsage);
+
+	/*Initialize outputs*/
+	bamggeom_out=new BamgGeom();
+	bamgmesh_out=new BamgMesh();
+
+	/*Fetch inputs: */
+	FetchData(&bamgopts,BAMGOPTIONS);
+	FetchData(&bamggeom_in,BAMGGEOMIN);
+	FetchData(&bamgmesh_in,BAMGMESHIN);
+
+	/*Call x layer*/
+	Bamgx(bamgmesh_out,bamggeom_out,bamgmesh_in,bamggeom_in,bamgopts);
+
+	/*Generate output Matlab Structures*/
+	WriteData(BAMGGEOMOUT,bamggeom_out);
+	WriteData(BAMGMESHOUT,bamgmesh_out);
+
+	/*Free resources: */
+	delete bamgopts;
+	delete bamggeom_in;
+	delete bamggeom_out;
+	delete bamgmesh_in;
+	delete bamgmesh_out;
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgMesher/BamgMesher.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgMesher/BamgMesher.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgMesher/BamgMesher.h	(revision 27955)
@@ -0,0 +1,65 @@
+/*
+	BamgMesher.h
+*/
+
+#ifndef _BAMG_MESHER_H_
+#define _BAMG_MESHER_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../bindings.h"
+
+#undef __FUNCT__
+#define __FUNCT__  "BamgMesher"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define BAMGMESHIN  prhs[0]
+#define BAMGGEOMIN  prhs[1]
+#define BAMGOPTIONS prhs[2]
+/* serial output macros: */
+#define BAMGMESHOUT (mxArray**)&plhs[0]
+#define BAMGGEOMOUT (mxArray**)&plhs[1]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define BAMGMESHIN  PyTuple_GetItem(args,0)
+#define BAMGGEOMIN  PyTuple_GetItem(args,1)
+#define BAMGOPTIONS PyTuple_GetItem(args,2)
+/* serial output macros: */
+#define BAMGMESHOUT output,0
+#define BAMGGEOMOUT output,1
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define BAMGMESHIN VerticesSize_mesh_in, Vertices_mesh_in, EdgesSize_mesh_in, Edges_mesh_in, TrianglesSize_mesh_in, Triangles_mesh_in, CrackedEdgesSize_mesh_in, CrackedEdges_mesh_in, VerticesOnGeomEdgeSize_mesh_in, VerticesOnGeomEdge_mesh_in, VerticesOnGeomVertexSize_mesh_in, VerticesOnGeomVertex_mesh_in, EdgesOnGeomEdgeSize_mesh_in, EdgesOnGeomEdge_mesh_in, IssmSegmentsSize_mesh_in, IssmSegments_mesh_in
+#define BAMGGEOMIN VerticesSize_geom_in, Vertices_geom_in, EdgesSize_geom_in, Edges_geom_in, CornersSize_geom_in, Corners_geom_in, RequiredVerticesSize_geom_in, RequiredVertices_geom_in, RequiredEdgesSize_geom_in, RequiredEdges_geom_in, CrackedEdgesSize_geom_in, CrackedEdges_geom_in, SubDomainsSize_geom_in, SubDomains_geom_in
+#define BAMGOPTIONS anisomax, cutoff, coeff, errg, gradation, Hessiantype, maxnbv, maxsubdiv, Metrictype, nbjacobi, nbsmooth, omega, power, verbose, Crack, KeepVertices, splitcorners, hmin, hmax, hminVerticesSize, hminVertices, hmaxVerticesSize, hmaxVertices, hVerticesLength, hVertices, metricSize, metric, fieldSize, field, errSize, err
+/* serial output macros: */
+#define BAMGMESHOUT VerticesSize_mesh_out, Vertices_mesh_out, EdgesSize_mesh_out, Edges_mesh_out, TrianglesSize_mesh_out, Triangles_mesh_out, IssmEdgesSize_mesh_out, IssmEdges_mesh_out, IssmSegmentsSize_mesh_out, IssmSegments_mesh_out, VerticesOnGeomVertexSize_mesh_out, VerticesOnGeomVertex_mesh_out, VerticesOnGeomEdgeSize_mesh_out, VerticesOnGeomEdge_mesh_out, EdgesOnGeomEdgeSize_mesh_out, EdgesOnGeomEdge_mesh_out, SubDomainsSize_mesh_out, SubDomains_mesh_out, SubDomainsFromGeomSize_mesh_out, SubDomainsFromGeom_mesh_out, ElementConnectivitySize_mesh_out, ElementConnectivity_mesh_out, NodalConnectivitySize_mesh_out, NodalConnectivity_mesh_out, NodalElementConnectivitySize_mesh_out, NodalElementConnectivity_mesh_out, CrackedVerticesSize_mesh_out, CrackedVertices_mesh_out, CrackedEdgesSize_mesh_out, CrackedEdges_mesh_out, PreviousNumberingSize_mesh_out, PreviousNumbering_mesh_out
+#define BAMGGEOMOUT VerticesSize_geom_out, Vertices_geom_out, EdgesSize_geom_out, Edges_geom_out, CornersSize_geom_out, Corners_geom_out, RequiredVerticesSize_geom_out, RequiredVertices_geom_out, RequiredEdgesSize_geom_out, RequiredEdges_geom_out, CrackedEdgesSize_geom_out, CrackedEdges_geom_out, SubDomainsSize_geom_out, SubDomains_geom_out
+#define WRAPPER(modulename) extern "C" { int  BamgMesherModule(int** VerticesSize_mesh_out, double** Vertices_mesh_out, int** EdgesSize_mesh_out, double** Edges_mesh_out, int** TrianglesSize_mesh_out, double** Triangles_mesh_out, int** IssmEdgesSize_mesh_out, double** IssmEdges_mesh_out, int** IssmSegmentsSize_mesh_out, double** IssmSegments_mesh_out, int** VerticesOnGeomVertexSize_mesh_out, double** VerticesOnGeomVertex_mesh_out, int** VerticesOnGeomEdgeSize_mesh_out, double** VerticesOnGeomEdge_mesh_out, int** EdgesOnGeomEdgeSize_mesh_out, double** EdgesOnGeomEdge_mesh_out, int** SubDomainsSize_mesh_out, double** SubDomains_mesh_out, int** SubDomainsFromGeomSize_mesh_out, double** SubDomainsFromGeom_mesh_out, int** ElementConnectivitySize_mesh_out, double** ElementConnectivity_mesh_out, int** NodalConnectivitySize_mesh_out, double** NodalConnectivity_mesh_out, int** NodalElementConnectivitySize_mesh_out, double** NodalElementConnectivity_mesh_out, int** CrackedVerticesSize_mesh_out, double** CrackedVertices_mesh_out, int** CrackedEdgesSize_mesh_out, double** CrackedEdges_mesh_out, int** PreviousNumberingSize_mesh_out, double** PreviousNumbering_mesh_out, int** VerticesSize_geom_out, double** Vertices_geom_out, int** EdgesSize_geom_out, double** Edges_geom_out, int** CornersSize_geom_out, double** Corners_geom_out, int** RequiredVerticesSize_geom_out, double** RequiredVertices_geom_out, int** RequiredEdgesSize_geom_out, double** RequiredEdges_geom_out, int** CrackedEdgesSize_geom_out, double** CrackedEdges_geom_out, int** SubDomainsSize_geom_out, double** SubDomains_geom_out, int* VerticesSize_mesh_in, double* Vertices_mesh_in, int* EdgesSize_mesh_in, double* Edges_mesh_in, int* TrianglesSize_mesh_in, double* Triangles_mesh_in, int* CrackedEdgesSize_mesh_in, double* CrackedEdges_mesh_in, int* VerticesOnGeomEdgeSize_mesh_in, double* VerticesOnGeomEdge_mesh_in, int* VerticesOnGeomVertexSize_mesh_in, double* VerticesOnGeomVertex_mesh_in, int* EdgesOnGeomEdgeSize_mesh_in, double* EdgesOnGeomEdge_mesh_in, int* IssmSegmentsSize_mesh_in, double* IssmSegments_mesh_in, int* VerticesSize_geom_in, double* Vertices_geom_in, int* EdgesSize_geom_in, double* Edges_geom_in, int* CornersSize_geom_in, double* Corners_geom_in, int* RequiredVerticesSize_geom_in, double* RequiredVertices_geom_in, int* RequiredEdgesSize_geom_in, double* RequiredEdges_geom_in, int* CrackedEdgesSize_geom_in, double* CrackedEdges_geom_in, int* SubDomainsSize_geom_in, double* SubDomains_geom_in, double anisomax, double cutoff, double coeff, double errg, double gradation, int Hessiantype, int maxnbv, double maxsubdiv, int Metrictype, int nbjacobi, int nbsmooth, double omega, double power, int verbose, int Crack, int KeepVertices, int splitcorners, double hmin, double hmax, int* hminVerticesSize, double* hminVertices, int* hmaxVerticesSize, double* hmaxVertices, int hVerticesLength, double* hVertices, int* metricSize, double* metric, int* fieldSize, double* field, int* errSize, double* err)
+
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  2
+#undef NRHS
+#define NRHS  3
+
+#endif  /* _BAMG_MESHER_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgMesher/BamgMesher.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgMesher/BamgMesher.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgMesher/BamgMesher.js	(revision 27955)
@@ -0,0 +1,338 @@
+function doublesToHeap(array) {
+    var doubleArray = new Float64Array(array);
+    var numBytes = doubleArray.length * doubleArray.BYTES_PER_ELEMENT;
+    var doubleArrayPtr = Module._malloc(numBytes);
+    var doubleArrayHeap = new Uint8Array(Module.HEAPU8.buffer, doubleArrayPtr, numBytes);
+    doubleArrayHeap.set(new Uint8Array(doubleArray.buffer));
+    return doubleArrayHeap.byteOffset;
+}
+function intsToHeap(array) {
+    var intArray = new Int32Array(array);
+    var numBytes = intArray.length * intArray.BYTES_PER_ELEMENT;
+    var intArrayPtr = Module._malloc(numBytes);
+    var intArrayHeap = new Uint8Array(Module.HEAPU8.buffer, intArrayPtr, numBytes);
+    intArrayHeap.set(new Uint8Array(intArray.buffer));
+    return intArrayHeap.byteOffset;
+}
+function heapToDoubles(pptr, size) {
+    var ptr = Module.getValue(pptr,'i32');
+    var array = Module.HEAPF64.slice(ptr / 8, ptr / 8 + size[0] * size[1]);
+    return ListToMatrix(array, size[1]);
+}
+function heapToInts(pptr, nods) {
+    var ptr = Module.getValue(pptr,'i32');
+    return Module.HEAPU32.slice(ptr / 4, ptr / 4 + nods);
+}
+function size2d(array) {
+    // If array = Array(0), size2d(array) == [0, 1]
+    // If array = [1, 2, 3] size2d(array) == [3, 1]
+    // If array = [[1, 2, 3], [2, 3, 4]], size2d(array) == [2, 3]
+    var size0 = array.length;
+    var size1 = 1;
+    if (array[0] instanceof Array) {
+        size1 = array[0].length;
+    }
+    //if (array[0] != undefined && array[0].length != undefined) {
+    //    size1 = array[0].length;
+    //}
+    return [size0, size1];
+}
+function BamgMesher(bamgmesh_in, bamggeom_in, bamgopts) {
+/*
+       usage: var array = Triangle(domain,rifts,area);
+          where: array is made of [index,x,y,segments,segmentmarkers]
+          and index,x,y defines a triangulation, segments is an array made
+          of exterior segments to the mesh domain outline, segmentmarkers is an array
+          flagging each segment, domain a js array defining the domain outline  (sames for
+          rifts) and area is the maximum area desired for any element of the resulting mesh.
+
+          Ok, for now, we are not dealing with rifts. Also, the domain is made of only one
+          profile, this to avoid passing a double** pointer to js.
+*/
+
+    //Dynamic allocations: {{{
+    //Retrieve domain arrays, and allocate on Module heap:
+    //For each property, calculate the size and fill with 0 if the 2nd dimension is undefined, then use the int size array to init the double array.
+    //input
+    var pVerticesSize_mesh_in               = intsToHeap(size2d(bamgmesh_in.Vertices));
+    var pVertices_mesh_in                   = doublesToHeap(Array.prototype.concat.apply([], bamgmesh_in.Vertices));
+    var pEdgesSize_mesh_in                  = intsToHeap(size2d(bamgmesh_in.Edges));
+    var pEdges_mesh_in                      = doublesToHeap(Array.prototype.concat.apply([], bamgmesh_in.Edges));
+    var pTrianglesSize_mesh_in              = intsToHeap(size2d(bamgmesh_in.Triangles));
+    var pTriangles_mesh_in                  = doublesToHeap(Array.prototype.concat.apply([], bamgmesh_in.Triangles));
+    var pCrackedEdgesSize_mesh_in           = intsToHeap(size2d(bamgmesh_in.CrackedEdges));
+    var pCrackedEdges_mesh_in               = doublesToHeap(Array.prototype.concat.apply([], bamgmesh_in.CrackedEdges));
+    var pVerticesOnGeomEdgeSize_mesh_in     = intsToHeap(size2d(bamgmesh_in.VerticesOnGeomEdge));
+    var pVerticesOnGeomEdge_mesh_in         = doublesToHeap(Array.prototype.concat.apply([], bamgmesh_in.VerticesOnGeomEdge));
+    var pVerticesOnGeomVertexSize_mesh_in   = intsToHeap(size2d(bamgmesh_in.VerticesOnGeomVertex));
+    var pVerticesOnGeomVertex_mesh_in       = doublesToHeap(Array.prototype.concat.apply([], bamgmesh_in.VerticesOnGeomVertex));
+    var pEdgesOnGeomEdgeSize_mesh_in        = intsToHeap(size2d(bamgmesh_in.EdgesOnGeomEdge));
+    var pEdgesOnGeomEdge_mesh_in            = doublesToHeap(Array.prototype.concat.apply([], bamgmesh_in.EdgesOnGeomEdge));
+    var pIssmSegmentsSize_mesh_in           = intsToHeap(size2d(bamgmesh_in.IssmSegments));
+    var pIssmSegments_mesh_in               = doublesToHeap(Array.prototype.concat.apply([], bamgmesh_in.IssmSegments));
+
+    var pVerticesSize_geom_in               = intsToHeap(size2d(bamggeom_in.Vertices));
+    var pVertices_geom_in                   = doublesToHeap(Array.prototype.concat.apply([], bamggeom_in.Vertices));
+    var pEdgesSize_geom_in                  = intsToHeap(size2d(bamggeom_in.Edges));
+    var pEdges_geom_in                      = doublesToHeap(Array.prototype.concat.apply([], bamggeom_in.Edges));
+    var pCornersSize_geom_in                = intsToHeap(size2d(bamggeom_in.Corners));
+    var pCorners_geom_in                    = doublesToHeap(Array.prototype.concat.apply([], bamggeom_in.Corners));
+    var pRequiredVerticesSize_geom_in       = intsToHeap(size2d(bamggeom_in.RequiredVertices));
+    var pRequiredVertices_geom_in           = doublesToHeap(Array.prototype.concat.apply([], bamggeom_in.RequiredVertices));
+    var pRequiredEdgesSize_geom_in          = intsToHeap(size2d(bamggeom_in.RequiredEdges));
+    var pRequiredEdges_geom_in              = doublesToHeap(Array.prototype.concat.apply([], bamggeom_in.RequiredEdges));
+    var pCrackedEdgesSize_geom_in           = intsToHeap(size2d(bamggeom_in.CrackedEdges));
+    var pCrackedEdges_geom_in               = doublesToHeap(Array.prototype.concat.apply([], bamggeom_in.CrackedEdges));
+    var pSubDomainsSize_geom_in             = intsToHeap(size2d(bamggeom_in.SubDomains));
+    var pSubDomains_geom_in                 = doublesToHeap(Array.prototype.concat.apply([], bamggeom_in.SubDomains));
+
+    var anisomax                            = bamgopts.anisomax;
+    var cutoff                              = bamgopts.coeff;
+    var coeff                               = bamgopts.cutoff;
+    var errg                                = bamgopts.errg;
+    var gradation                           = bamgopts.gradation;
+    var Hessiantype                         = bamgopts.Hessiantype;
+    var maxnbv                              = bamgopts.maxnbv;
+    var maxsubdiv                           = bamgopts.maxsubdiv;
+    var Metrictype                          = bamgopts.Metrictype;
+    var nbjacobi                            = bamgopts.nbjacobi;
+    var nbsmooth                            = bamgopts.nbsmooth;
+    var omega                               = bamgopts.omega;
+    var power                               = bamgopts.power;
+    var verbose                             = bamgopts.verbose;
+    var Crack                               = bamgopts.Crack;
+    var KeepVertices                        = bamgopts.KeepVertices;
+    var splitcorners                        = bamgopts.splitcorners;
+    var hmin                                = bamgopts.hmin;
+    var hmax                                = bamgopts.hmax;
+    var phminVerticesSize                   = intsToHeap(size2d(bamgopts.hminVertices));
+    var phminVertices                       = doublesToHeap(Array.prototype.concat.apply([], bamgopts.hminVertices));
+    var phmaxVerticesSize                   = intsToHeap(size2d(bamgopts.hmaxVertices));
+    var phmaxVertices                       = doublesToHeap(Array.prototype.concat.apply([], bamgopts.hmaxVertices));
+    var hVerticesLength                     = bamgopts.hVerticesLength;
+    var phVertices                          = doublesToHeap(Array.prototype.concat.apply([], bamgopts.hVertices));
+    var pmetricSize                         = intsToHeap(size2d(bamgopts.metric));
+    var pmetric                             = doublesToHeap(Array.prototype.concat.apply([], bamgopts.metric));
+    var pfieldSize                          = intsToHeap(size2d(bamgopts.field));
+    var pfield                              = doublesToHeap(Array.prototype.concat.apply([], bamgopts.field));
+    var perrSize                            = intsToHeap(size2d([[bamgopts.err]]));
+    var perr                                = doublesToHeap(Array.prototype.concat.apply([], [[bamgopts.err]]));
+
+    //output
+    var pVerticesSize_mesh_out                  = Module._malloc(4);
+    var pVertices_mesh_out                      = Module._malloc(4);
+    var pEdgesSize_mesh_out                     = Module._malloc(4);
+    var pEdges_mesh_out                         = Module._malloc(4);
+    var pTrianglesSize_mesh_out                 = Module._malloc(4);
+    var pTriangles_mesh_out                     = Module._malloc(4);
+    var pIssmEdgesSize_mesh_out                 = Module._malloc(4);
+    var pIssmEdges_mesh_out                     = Module._malloc(4);
+    var pIssmSegmentsSize_mesh_out              = Module._malloc(4);
+    var pIssmSegments_mesh_out                  = Module._malloc(4);
+    var pVerticesOnGeomVertexSize_mesh_out      = Module._malloc(4);
+    var pVerticesOnGeomVertex_mesh_out          = Module._malloc(4);
+    var pVerticesOnGeomEdgeSize_mesh_out        = Module._malloc(4);
+    var pVerticesOnGeomEdge_mesh_out            = Module._malloc(4);
+    var pEdgesOnGeomEdgeSize_mesh_out           = Module._malloc(4);
+    var pEdgesOnGeomEdge_mesh_out               = Module._malloc(4);
+    var pSubDomainsSize_mesh_out                = Module._malloc(4);
+    var pSubDomains_mesh_out                    = Module._malloc(4);
+    var pSubDomainsFromGeomSize_mesh_out        = Module._malloc(4);
+    var pSubDomainsFromGeom_mesh_out            = Module._malloc(4);
+    var pElementConnectivitySize_mesh_out       = Module._malloc(4);
+    var pElementConnectivity_mesh_out           = Module._malloc(4);
+    var pNodalConnectivitySize_mesh_out         = Module._malloc(4);
+    var pNodalConnectivity_mesh_out             = Module._malloc(4);
+    var pNodalElementConnectivitySize_mesh_out  = Module._malloc(4);
+    var pNodalElementConnectivity_mesh_out      = Module._malloc(4);
+    var pCrackedVerticesSize_mesh_out           = Module._malloc(4);
+    var pCrackedVertices_mesh_out               = Module._malloc(4);
+    var pCrackedEdgesSize_mesh_out              = Module._malloc(4);
+    var pCrackedEdges_mesh_out                  = Module._malloc(4);
+    var pPreviousNumberingSize_mesh_out         = Module._malloc(4);
+    var pPreviousNumbering_mesh_out             = Module._malloc(4);
+
+    var pVerticesSize_geom_out                  = Module._malloc(4);
+    var pVertices_geom_out                      = Module._malloc(4);
+    var pEdgesSize_geom_out                     = Module._malloc(4);
+    var pEdges_geom_out                         = Module._malloc(4);
+    var pCornersSize_geom_out                   = Module._malloc(4);
+    var pCorners_geom_out                       = Module._malloc(4);
+    var pRequiredVerticesSize_geom_out          = Module._malloc(4);
+    var pRequiredVertices_geom_out              = Module._malloc(4);
+    var pRequiredEdgesSize_geom_out             = Module._malloc(4);
+    var pRequiredEdges_geom_out                 = Module._malloc(4);
+    var pCrackedEdgesSize_geom_out              = Module._malloc(4);
+    var pCrackedEdges_geom_out                  = Module._malloc(4);
+    var pSubDomainsSize_geom_out                = Module._malloc(4);
+    var pSubDomains_geom_out                    = Module._malloc(4);
+    //}}}
+
+    //Declare BamgMesher module:
+    BamgMesherModule = Module.cwrap('BamgMesherModule', 'number',[
+        'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number',
+        'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number',
+        'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number',
+        'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number',
+        'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number', 'number']);
+
+    //Call BamgMesher module:
+
+    BamgMesherModule(
+        pVerticesSize_mesh_out, pVertices_mesh_out, pEdgesSize_mesh_out, pEdges_mesh_out, pTrianglesSize_mesh_out, pTriangles_mesh_out, pIssmEdgesSize_mesh_out, pIssmEdges_mesh_out, pIssmSegmentsSize_mesh_out, pIssmSegments_mesh_out, pVerticesOnGeomVertexSize_mesh_out, pVerticesOnGeomVertex_mesh_out, pVerticesOnGeomEdgeSize_mesh_out, pVerticesOnGeomEdge_mesh_out, pEdgesOnGeomEdgeSize_mesh_out, pEdgesOnGeomEdge_mesh_out, pSubDomainsSize_mesh_out, pSubDomains_mesh_out, pSubDomainsFromGeomSize_mesh_out, pSubDomainsFromGeom_mesh_out, pElementConnectivitySize_mesh_out, pElementConnectivity_mesh_out, pNodalConnectivitySize_mesh_out, pNodalConnectivity_mesh_out, pNodalElementConnectivitySize_mesh_out, pNodalElementConnectivity_mesh_out, pCrackedVerticesSize_mesh_out, pCrackedVertices_mesh_out, pCrackedEdgesSize_mesh_out, pCrackedEdges_mesh_out, pPreviousNumberingSize_mesh_out, pPreviousNumbering_mesh_out,
+        pVerticesSize_geom_out, pVertices_geom_out, pEdgesSize_geom_out, pEdges_geom_out, pCornersSize_geom_out, pCorners_geom_out, pRequiredVerticesSize_geom_out, pRequiredVertices_geom_out, pRequiredEdgesSize_geom_out, pRequiredEdges_geom_out, pCrackedEdgesSize_geom_out, pCrackedEdges_geom_out, pSubDomainsSize_geom_out, pSubDomains_geom_out,
+        pVerticesSize_mesh_in, pVertices_mesh_in, pEdgesSize_mesh_in, pEdges_mesh_in, pTrianglesSize_mesh_in, pTriangles_mesh_in, pCrackedEdgesSize_mesh_in, pCrackedEdges_mesh_in, pVerticesOnGeomEdgeSize_mesh_in, pVerticesOnGeomEdge_mesh_in, pVerticesOnGeomVertexSize_mesh_in, pVerticesOnGeomVertex_mesh_in, pEdgesOnGeomEdgeSize_mesh_in, pEdgesOnGeomEdge_mesh_in, pIssmSegmentsSize_mesh_in, pIssmSegments_mesh_in,
+        pVerticesSize_geom_in, pVertices_geom_in, pEdgesSize_geom_in, pEdges_geom_in, pCornersSize_geom_in, pCorners_geom_in, pRequiredVerticesSize_geom_in, pRequiredVertices_geom_in, pRequiredEdgesSize_geom_in, pRequiredEdges_geom_in, pCrackedEdgesSize_geom_in, pCrackedEdges_geom_in, pSubDomainsSize_geom_in, pSubDomains_geom_in,
+        anisomax, cutoff, coeff, errg, gradation, Hessiantype, maxnbv, maxsubdiv, Metrictype, nbjacobi, nbsmooth, omega, power, verbose, Crack, KeepVertices, splitcorners, hmin, hmax, phminVerticesSize, phminVertices, phmaxVerticesSize, phmaxVertices, hVerticesLength, phVertices, pmetricSize, pmetric, pfieldSize, pfield, perrSize, perr);
+
+    /*Dynamic copying from heap: {{{*/
+    //recover mesh:
+    var bamgmeshout = new bamgmesh();
+    var bamggeomout = new bamggeom();
+
+    bamgmeshout.VerticesSize                   = heapToInts(pVerticesSize_mesh_out, 2);
+    bamgmeshout.Vertices                       = heapToDoubles(pVertices_mesh_out, bamgmeshout.VerticesSize);
+    bamgmeshout.EdgesSize                      = heapToInts(pEdgesSize_mesh_out, 2);
+    bamgmeshout.Edges                          = heapToDoubles(pEdges_mesh_out, bamgmeshout.EdgesSize);
+    bamgmeshout.TrianglesSize                  = heapToInts(pTrianglesSize_mesh_out, 2);
+    bamgmeshout.Triangles                      = heapToDoubles(pTriangles_mesh_out, bamgmeshout.TrianglesSize);
+    bamgmeshout.IssmEdgesSize                  = heapToInts(pIssmEdgesSize_mesh_out, 2);
+    bamgmeshout.IssmEdges                      = heapToDoubles(pIssmEdges_mesh_out, bamgmeshout.IssmEdgesSize);
+    bamgmeshout.IssmSegmentsSize               = heapToInts(pIssmSegmentsSize_mesh_out, 2);
+    bamgmeshout.IssmSegments                   = heapToDoubles(pIssmSegments_mesh_out, bamgmeshout.IssmSegmentsSize);
+    bamgmeshout.VerticesOnGeomVertexSize       = heapToInts(pVerticesOnGeomVertexSize_mesh_out, 2);
+    bamgmeshout.VerticesOnGeomVertex           = heapToDoubles(pVerticesOnGeomVertex_mesh_out, bamgmeshout.VerticesOnGeomVertexSize);
+    bamgmeshout.VerticesOnGeomEdgeSize         = heapToInts(pVerticesOnGeomEdgeSize_mesh_out, 2);
+    bamgmeshout.VerticesOnGeomEdge             = heapToDoubles(pVerticesOnGeomEdge_mesh_out, bamgmeshout.VerticesOnGeomEdgeSize);
+    bamgmeshout.EdgesOnGeomEdgeSize            = heapToInts(pEdgesOnGeomEdgeSize_mesh_out, 2);
+    bamgmeshout.EdgesOnGeomEdge                = heapToDoubles(pEdgesOnGeomEdge_mesh_out, bamgmeshout.EdgesOnGeomEdgeSize);
+    bamgmeshout.SubDomainsSize                 = heapToInts(pSubDomainsSize_mesh_out, 2);
+    bamgmeshout.SubDomains                     = heapToDoubles(pSubDomains_mesh_out, bamgmeshout.SubDomainsSize);
+    bamgmeshout.SubDomainsFromGeomSize         = heapToInts(pSubDomainsFromGeomSize_mesh_out, 2);
+    bamgmeshout.SubDomainsFromGeom             = heapToDoubles(pSubDomainsFromGeom_mesh_out, bamgmeshout.SubDomainsFromGeomSize);
+    bamgmeshout.ElementConnectivitySize        = heapToInts(pElementConnectivitySize_mesh_out, 2);
+    bamgmeshout.ElementConnectivity            = heapToDoubles(pElementConnectivity_mesh_out, bamgmeshout.ElementConnectivitySize);
+    bamgmeshout.NodalConnectivitySize          = heapToInts(pNodalConnectivitySize_mesh_out, 2);
+    bamgmeshout.NodalConnectivity              = heapToDoubles(pNodalConnectivity_mesh_out, bamgmeshout.NodalConnectivitySize);
+    bamgmeshout.NodalElementConnectivitySize   = heapToInts(pNodalElementConnectivitySize_mesh_out, 2);
+    bamgmeshout.NodalElementConnectivity       = heapToDoubles(pNodalElementConnectivity_mesh_out, bamgmeshout.NodalElementConnectivitySize);
+    bamgmeshout.CrackedVerticesSize            = heapToInts(pCrackedVerticesSize_mesh_out, 2);
+    bamgmeshout.CrackedVertices                = heapToDoubles(pCrackedVertices_mesh_out, bamgmeshout.CrackedVerticesSize);
+    bamgmeshout.CrackedEdgesSize               = heapToInts(pCrackedEdgesSize_mesh_out, 2);
+    bamgmeshout.CrackedEdges                   = heapToDoubles(pCrackedEdges_mesh_out, bamgmeshout.CrackedEdgesSize);
+    bamgmeshout.PreviousNumberingSize          = heapToInts(pPreviousNumberingSize_mesh_out, 2);
+    bamgmeshout.PreviousNumbering              = heapToDoubles(pPreviousNumbering_mesh_out, bamgmeshout.PreviousNumberingSize);
+
+    bamggeomout.VerticesSize                   = heapToInts(pVerticesSize_geom_out, 2);
+    bamggeomout.Vertices                       = heapToDoubles(pVertices_geom_out, bamggeomout.VerticesSize);
+    bamggeomout.EdgesSize                      = heapToInts(pEdgesSize_geom_out, 2);
+    bamggeomout.Edges                          = heapToDoubles(pEdges_geom_out, bamggeomout.EdgesSize);
+    bamggeomout.CornersSize                    = heapToInts(pCornersSize_geom_out, 2);
+    bamggeomout.Corners                        = heapToDoubles(pCorners_geom_out, bamggeomout.CornersSize);
+    bamggeomout.RequiredVerticesSize           = heapToInts(pRequiredVerticesSize_geom_out, 2);
+    bamggeomout.RequiredVertices               = heapToDoubles(pRequiredVertices_geom_out, bamggeomout.RequiredVerticesSize);
+    bamggeomout.RequiredEdgesSize              = heapToInts(pRequiredEdgesSize_geom_out, 2);
+    bamggeomout.RequiredEdges                  = heapToDoubles(pRequiredEdges_geom_out, bamggeomout.RequiredEdgesSize);
+    bamggeomout.CrackedEdgesSize               = heapToInts(pCrackedEdgesSize_geom_out, 2);
+    bamggeomout.CrackedEdges                   = heapToDoubles(pCrackedEdges_geom_out, bamggeomout.CrackedEdgesSize);
+    bamggeomout.SubDomainsSize                 = heapToInts(pSubDomainsSize_geom_out, 2);
+    bamggeomout.SubDomains                     = heapToDoubles(pSubDomains_geom_out, bamggeomout.SubDomainsSize);
+    /*}}}*/
+
+    var return_array=[bamgmeshout, bamggeomout];
+
+    /*Free resources: */
+    Module._free(pVerticesSize_mesh_out);
+    Module._free(pVertices_mesh_out);
+    Module._free(pEdgesSize_mesh_out);
+    Module._free(pEdges_mesh_out);
+    Module._free(pTrianglesSize_mesh_out);
+    Module._free(pTriangles_mesh_out);
+    Module._free(pIssmEdgesSize_mesh_out);
+    Module._free(pIssmEdges_mesh_out);
+    Module._free(pIssmSegmentsSize_mesh_out);
+    Module._free(pIssmSegments_mesh_out);
+    Module._free(pVerticesOnGeomVertexSize_mesh_out);
+    Module._free(pVerticesOnGeomVertex_mesh_out);
+    Module._free(pVerticesOnGeomEdgeSize_mesh_out);
+    Module._free(pVerticesOnGeomEdge_mesh_out);
+    Module._free(pEdgesOnGeomEdgeSize_mesh_out);
+    Module._free(pEdgesOnGeomEdge_mesh_out);
+    Module._free(pSubDomainsSize_mesh_out);
+    Module._free(pSubDomains_mesh_out);
+    Module._free(pSubDomainsFromGeomSize_mesh_out);
+    Module._free(pSubDomainsFromGeom_mesh_out);
+    Module._free(pElementConnectivitySize_mesh_out);
+    Module._free(pElementConnectivity_mesh_out);
+    Module._free(pNodalConnectivitySize_mesh_out);
+    Module._free(pNodalConnectivity_mesh_out);
+    Module._free(pNodalElementConnectivitySize_mesh_out);
+    Module._free(pNodalElementConnectivity_mesh_out);
+    Module._free(pCrackedVerticesSize_mesh_out);
+    Module._free(pCrackedVertices_mesh_out);
+    Module._free(pCrackedEdgesSize_mesh_out);
+    Module._free(pCrackedEdges_mesh_out);
+    Module._free(pPreviousNumberingSize_mesh_out);
+    Module._free(pPreviousNumbering_mesh_out);
+
+    Module._free(pVerticesSize_geom_out);
+    Module._free(pVertices_geom_out);
+    Module._free(pEdgesSize_geom_out);
+    Module._free(pEdges_geom_out);
+    Module._free(pCornersSize_geom_out);
+    Module._free(pCorners_geom_out);
+    Module._free(pRequiredVerticesSize_geom_out);
+    Module._free(pRequiredVertices_geom_out);
+    Module._free(pRequiredEdgesSize_geom_out);
+    Module._free(pRequiredEdges_geom_out);
+    Module._free(pCrackedEdgesSize_geom_out);
+    Module._free(pCrackedEdges_geom_out);
+    Module._free(pSubDomainsSize_geom_out);
+    Module._free(pSubDomains_geom_out);
+
+    Module._free(pVerticesSize_mesh_in);
+    Module._free(pVertices_mesh_in);
+    Module._free(pEdgesSize_mesh_in);
+    Module._free(pEdges_mesh_in);
+    Module._free(pTrianglesSize_mesh_in);
+    Module._free(pTriangles_mesh_in);
+    Module._free(pCrackedEdgesSize_mesh_in);
+    Module._free(pCrackedEdges_mesh_in);
+    Module._free(pVerticesOnGeomEdgeSize_mesh_in);
+    Module._free(pVerticesOnGeomEdge_mesh_in);
+    Module._free(pVerticesOnGeomVertexSize_mesh_in);
+    Module._free(pVerticesOnGeomVertex_mesh_in);
+    Module._free(pEdgesOnGeomEdgeSize_mesh_in);
+    Module._free(pEdgesOnGeomEdge_mesh_in);
+    Module._free(pIssmSegmentsSize_mesh_in);
+    Module._free(pIssmSegments_mesh_in);
+
+    Module._free(pVerticesSize_geom_in);
+    Module._free(pVertices_geom_in);
+    Module._free(pEdgesSize_geom_in);
+    Module._free(pEdges_geom_in);
+    Module._free(pCornersSize_geom_in);
+    Module._free(pCorners_geom_in);
+    Module._free(pRequiredVerticesSize_geom_in);
+    Module._free(pRequiredVertices_geom_in);
+    Module._free(pRequiredEdgesSize_geom_in);
+    Module._free(pRequiredEdges_geom_in);
+    Module._free(pCrackedEdgesSize_geom_in);
+    Module._free(pCrackedEdges_geom_in);
+    Module._free(pSubDomainsSize_geom_in);
+    Module._free(pSubDomains_geom_in);
+
+    Module._free(phminVerticesSize);
+    Module._free(phminVertices);
+    Module._free(phmaxVerticesSize);
+    Module._free(phmaxVertices);
+    Module._free(phVertices);
+    Module._free(pmetricSize);
+    Module._free(pmetric);
+    Module._free(pfieldSize);
+    Module._free(pfield);
+    Module._free(perrSize);
+    Module._free(perr);
+
+    return return_array;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgTriangulate/BamgTriangulate.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgTriangulate/BamgTriangulate.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgTriangulate/BamgTriangulate.cpp	(revision 27955)
@@ -0,0 +1,62 @@
+/*\file BamgTriangulate.c
+ *\brief: bamg module.
+ */
+#include "./BamgTriangulate.h"
+
+void BamgTriangulateUsage(void){/*{{{*/
+	_printf0_("BAMGTRIANGULATE - Delaunay Triangulation of a list of points");
+	_printf0_("\n");
+	_printf0_("   Usage:\n");
+	_printf0_("      index=BamgTriangulate(x,y);\n");
+	_printf0_("      index: index of the triangulation\n");
+	_printf0_("      x,y: coordinates of the nodes\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(BamgTriangulate_python){
+
+	/*input: */
+	double* x=NULL;
+	double* y=NULL;
+	int     x_cols;
+	int     y_rows,y_cols;
+	int     nods;
+
+	/*Output*/
+	int* index=NULL;
+	int  nels;
+
+	/*Intermediary*/
+	int verbose=0;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	/* CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&BamgTriangulateUsage); */
+	CHECKARGUMENTS(NLHS,NRHS,&BamgTriangulateUsage);
+
+	/*Input datasets: */
+	if (verbose) _printf_("Fetching inputs\n");
+	FetchData(&x,&nods,&x_cols,XHANDLE);
+	FetchData(&y,&y_rows,&y_cols,YHANDLE);
+
+	/*Check inputs*/
+	if(y_rows!=nods)         _error_("x and y do not have the same length");
+	if(x_cols>1 || y_cols>1) _error_("x and y should have only one column");
+	if(nods<3)               _error_("At least 3 points are required");
+
+	/* Run core computations: */
+	if (verbose) _printf_("Call core\n");
+	BamgTriangulatex(&index,&nels,x,y,nods);
+
+	/*Write output*/
+	WriteData(INDEX,index,nels,3);
+
+	/*Clean up*/
+	xDelete<int>(index);
+	xDelete<double>(x);
+	xDelete<double>(y);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgTriangulate/BamgTriangulate.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgTriangulate/BamgTriangulate.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/BamgTriangulate/BamgTriangulate.h	(revision 27955)
@@ -0,0 +1,51 @@
+/*!\file BamgTriangulate.h
+ * \brief: prototype for Data Interpolation mex module.
+ */
+
+#ifndef _BAMGTRIANGULATE_H
+#define _BAMGTRIANGULATE_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "BamgTriangulate"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define XHANDLE prhs[0]
+#define YHANDLE prhs[1]
+
+/* serial output macros: */
+#define INDEX (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define XHANDLE PyTuple_GetItem(args,0)
+#define YHANDLE PyTuple_GetItem(args,1)
+
+/* serial output macros: */
+#define INDEX output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  2
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/Chaco/Chaco.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/Chaco/Chaco.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/Chaco/Chaco.cpp	(revision 27955)
@@ -0,0 +1,82 @@
+/*\file Chaco.c
+ *\brief:  Chaco partitioner mex module
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./Chaco.h"
+
+void ChacoUsage(void){/*{{{*/
+	_printf0_("\n");
+	_printf0_("Usage: [assgn] = Chaco(A,vwgts,ewgts,x,y,z,options,nparts,goal);\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(Chaco_python){
+
+	int i;
+	int nterms;
+
+	/*Inputs: */
+	int     nvtxs;               /* number of vertices in graph           */
+	int    *start = NULL;        /* start of edge list for each vertex    */
+	int    *adjacency = NULL;    /* edge list data                        */
+	int    *vwgts       = NULL;  /* weights for all vertices              */
+	float  *ewgts       = NULL;  /* weights for all edges                 */
+	float  *x           = NULL;
+	float  *y           = NULL;
+	float  *z           = NULL;  /* coordinates for inertial method       */
+	double  options[10] = {1,1,0,0,1,1,50,0,0.001,7654321}; /* architecture and partitioning options */
+	double *in_options  = NULL;
+	int     npart;
+	double *goal        = NULL;   /* desired set sizes                     */
+
+	#ifndef _HAVE_CHACO_ //only works if dakota library has been compiled in.
+	_error_("Chaco not available! Cannot carry out Chaco partitioning!");
+	#endif
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	CHECKARGUMENTS(NLHS,NRHS,&ChacoUsage);
+
+	/*Fetch Data*/
+	FetchChacoData(&nvtxs,&adjacency,&start,&ewgts,A_IN,EWGTS_IN);
+	FetchData(&vwgts,&nterms,VWGTS_IN);
+	FetchData(&x,&nterms,X_IN);
+	FetchData(&y,&nterms,Y_IN);
+	FetchData(&z,&nterms,Z_IN);
+	FetchData(&in_options,&nterms,OPTNS_IN);
+	for (i=0;i<(nterms<10?nterms:10);i++) options[i]=in_options[i]; //copy in_options into default options
+	FetchData(&npart,NPARTS_IN);
+	//int * nparts=xNew<int>(1); nparts[0]=npart; //weird Chacox interface ain't it?
+	FetchData(&goal,&nterms,GOAL_IN);
+
+	/*Allocate output: */
+	short* assignment = xNewZeroInit<short>(nvtxs);
+
+    /*Call core: */
+	Chacox(nvtxs, start, adjacency, vwgts, ewgts, x, y, z, assignment, options,&npart, goal);
+
+    /*Output data: */
+	WriteData(ASSGN_OUT,assignment,nvtxs);
+
+	/*Free resources:*/
+	xDelete<short>(assignment); 
+	xDelete<double>(goal);
+	//xDelete<int>(nparts);
+	xDelete<float>(z);
+	xDelete<float>(y);
+	xDelete<float>(x);
+	xDelete<float>(ewgts);
+	xDelete<int>(vwgts);
+	xDelete<int>(adjacency);
+	xDelete<int>(start);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/Chaco/Chaco.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/Chaco/Chaco.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/Chaco/Chaco.h	(revision 27955)
@@ -0,0 +1,67 @@
+/*!\file:  Chaco.h
+ * \brief header file for Chaco module.
+ */ 
+
+#ifndef _CHACO_H
+#define _CHACO_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+/*headers*/
+#include "../bindings.h" /*Should always come first to avoid python's warnings*/
+#include <stdio.h>
+#include <string.h>    /*  strcasecmp  */
+#include <time.h>      /*  clock,time,difftime  */
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "Chaco"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define A_IN      prhs[0]
+#define VWGTS_IN  prhs[1]
+#define EWGTS_IN  prhs[2]
+#define X_IN      prhs[3]
+#define Y_IN      prhs[4]
+#define Z_IN      prhs[5]
+#define OPTNS_IN  prhs[6]
+#define NPARTS_IN prhs[7]
+#define GOAL_IN   prhs[8]
+/* serial output macros: */
+#define ASSGN_OUT (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define A_IN      PyTuple_GetItem(args,0)
+#define VWGTS_IN  PyTuple_GetItem(args,1)
+#define EWGTS_IN  PyTuple_GetItem(args,2)
+#define X_IN      PyTuple_GetItem(args,3)
+#define Y_IN      PyTuple_GetItem(args,4)
+#define Z_IN      PyTuple_GetItem(args,5)
+#define OPTNS_IN  PyTuple_GetItem(args,6)
+#define NPARTS_IN PyTuple_GetItem(args,7)
+#define GOAL_IN   PyTuple_GetItem(args,8)
+/* serial output macros: */
+#define ASSGN_OUT output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  9
+
+#endif  /* _CHACO_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/ContourToMesh/ContourToMesh.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/ContourToMesh/ContourToMesh.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/ContourToMesh/ContourToMesh.cpp	(revision 27955)
@@ -0,0 +1,85 @@
+/*! \file  ContourtoMesh
+    \brief: takes an  contour file, and figures out which nodes or elements from the mesh  
+    are inside this contour. 
+*/
+
+#include "./ContourToMesh.h"
+
+void ContourToMeshUsage(void){/*{{{*/
+	_printf_("CONTOURTOMESH - Flag the elements or nodes inside a contour\n");
+	_printf_("\n");
+	_printf_("      Usage: \n");
+	_printf_("         [in_nod,in_elem]=ContourToMesh(index,x,y,contourname,interptype,edgevalue)\n");
+	_printf_("\n");
+	_printf_("         index,x,y: mesh triangulation.\n");
+	_printf_("         contourname: name of .exp file containing the contours.\n");
+	_printf_("         interptype: string definining type of interpolation ('element', or 'node').\n");
+	_printf_("         edgevalue: integer (0, 1 or 2) defining the value associated to the nodes on the edges of the polygons.\n");
+	_printf_("         in_nod: vector of flags (0 or 1), of size nods if interptype is set to 'node' or 'element and node', \n");
+	_printf_("            or of size 0 otherwise.\n");
+	_printf_("         in_elem: vector of flags (0 or 1), of size nel if interptype is set to 'element' or 'element and node', \n");
+	_printf_("            or of size 0 otherwise.\n");
+	_printf_("\n");
+	_printf_("      Example: \n");
+	_printf_("         in_nod=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','node',1)\n");
+	_printf_("         in_elements=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element',0)\n");
+	_printf_("         [in_nodes,in_elements]=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element and node',0)\n");
+	_printf_("\n");
+}/*}}}*/
+WRAPPER(ContourToMesh_python){
+
+	/* required input: */
+	int       edgevalue;
+	int       nel,nods;
+	double   *index       = NULL;
+	double   *x           = NULL;
+	double   *y           = NULL;
+	char     *interptype  = NULL;
+	Contours *contours    = NULL;
+
+	/* output: */
+	double *in_nod  = NULL;
+	double *in_elem = NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on output arguments on the matlab side: */
+	#ifdef _HAVE_MATLAB_MODULES_
+	if(nlhs!=1 && nlhs!=2){
+		ContourToMeshUsage();
+		_error_("usage. See above");
+	}
+	#endif
+	/*check on input arguments: */
+	if(nrhs!=NRHS){
+		ContourToMeshUsage();
+		_error_("usage. See above");
+	}
+
+	/*Fetch inputs: */
+	FetchData(&index,&nel,NULL,INDEX);
+	FetchData(&x,&nods,NULL,X);
+	FetchData(&y,NULL,NULL,Y);
+	FetchData(&edgevalue,EDGEVALUE);
+	FetchData(&contours,CONTOUR);
+	FetchData(&interptype,INTERPTYPE);
+
+	/*Run interpolation routine: */
+	ContourToMeshx(&in_nod,&in_elem,index,x,y,contours,interptype,nel,nods,edgevalue);
+
+	/* output: */
+	WriteData(PLHS0,in_nod,nods);
+	WriteData(PLHS1,in_elem,nel);
+
+	/*Clean up*/
+	xDelete<double>(index);
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<char>(interptype);
+	delete contours;
+	xDelete<double>(in_nod);
+	xDelete<double>(in_elem);
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/ContourToMesh/ContourToMesh.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/ContourToMesh/ContourToMesh.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/ContourToMesh/ContourToMesh.h	(revision 27955)
@@ -0,0 +1,77 @@
+/*
+	ContourToMesh.h
+*/
+
+#ifndef _CONTOURTOMESH_H
+#define _CONTOURTOMESH_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+/*Header files: */
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/toolkits/toolkits.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../../c/shared/io/io.h"
+
+#undef __FUNCT__
+#define __FUNCT__ "ContourToMesh"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define INDEX       prhs[0]
+#define X           prhs[1]
+#define Y           prhs[2]
+#define CONTOUR     prhs[3]
+#define INTERPTYPE  prhs[4]
+#define EDGEVALUE   prhs[5]
+/* serial output macros: */
+#define PLHS0 (mxArray**)&plhs[0]
+#define PLHS1 (mxArray**)&plhs[1]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define INDEX       PyTuple_GetItem(args,0)
+#define X           PyTuple_GetItem(args,1)
+#define Y           PyTuple_GetItem(args,2)
+#define CONTOUR     PyTuple_GetItem(args,3)
+#define INTERPTYPE  PyTuple_GetItem(args,4)
+#define EDGEVALUE   PyTuple_GetItem(args,5)
+/* serial output macros: */
+#define PLHS0 output,0
+#define PLHS1 output,1
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define INDEX       indexin,nelin,3
+#define X           xin,nodsin,1
+#define Y           yin,nodsin,1
+#define CONTOUR     contourx,contoury,contour_nods
+#define INTERPTYPE  interptypein
+#define EDGEVALUE   valuein
+#define WRAPPER(modulename) extern "C" { int  ContourToMeshModule(double** pin_nod, double** pin_nel, double* indexin, double* xin, double* yin, double* contourx, double* contoury, char* interptypein, int nelin, int nodsin, int contour_nods, double valuein)
+/* serial output macros: */
+#define PLHS0 pin_nod,NULL
+#define PLHS1 pin_nel,NULL
+#define nrhs 6
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  2
+#undef NRHS
+#define NRHS 6
+
+#endif  /* _CONTOURTOMESH_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/ContourToMesh/ContourToMesh.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/ContourToMesh/ContourToMesh.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/ContourToMesh/ContourToMesh.js	(revision 27955)
@@ -0,0 +1,95 @@
+function ContourToMesh(indexin,xin,yin,contour,interptype,edgevalue){
+/* CONTOURTOMESH - Flag the elements or nodes inside a contour;
+	
+	      Usage: ;
+	         [in_nod,in_elem]=ContourToMesh(index,x,y,contourname,interptype,edgevalue);
+	
+	         index,x,y: mesh triangulation
+	         contourname: name of .exp file containing the contours
+	         interptype: string definining type of interpolation ('element', or 'node')
+	         edgevalue: integer (0, 1 or 2) defining the value associated to the nodes on the edges of the polygons.
+	         in_nod: vector of flags (0 or 1), of size nods if interptype is set to 'node' or 'element and node',
+	            or of size 0 otherwise.
+	         in_elem: vector of flags (0 or 1), of size nel if interptype is set to 'element' or 'element and node', 
+	            or of size 0 otherwise.
+	
+	      Example: 
+	         in_nod=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','node',1)
+	         in_elements=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element',0)
+	         return_values=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element and node',0); in_nodes=return_values[0]; in_elements=return_values[1];
+*/
+
+	//Dynamic allocations: {{{
+	//Retrieve elements and allocate on Module heap: 
+	
+	//input
+	
+	var dindex=new Int32Array(MatrixToList(indexin)); var nindex=dindex.length * dindex.BYTES_PER_ELEMENT;
+	var dindexPtr= Module._malloc(nindex); var indexHeap = new Uint8Array(Module.HEAPU8.buffer,dindexPtr,nindex);
+	indexHeap.set(new Uint8Array(dindex.buffer)); var index=indexHeap.byteOffset;
+
+	var dx=new Float64Array(xin); var nx=dx.length * dx.BYTES_PER_ELEMENT;
+	var dxPtr= Module._malloc(nx); var dxHeap = new Uint8Array(Module.HEAPU8.buffer,dxPtr,nx);
+	dxHeap.set(new Uint8Array(dx.buffer)); var x=dxHeap.byteOffset;
+	
+	var dy=new Float64Array(yin); var ny=dy.length * dy.BYTES_PER_ELEMENT;
+	var dyPtr= Module._malloc(nx); var dyHeap = new Uint8Array(Module.HEAPU8.buffer,dyPtr,ny);
+	dyHeap.set(new Uint8Array(dy.buffer)); var y=dyHeap.byteOffset;
+	
+	var dcontourx=new Float64Array(contour['x']); var nx=dcontourx.length * dcontourx.BYTES_PER_ELEMENT;
+	var dcontourxPtr= Module._malloc(nx); var contourxHeap = new Uint8Array(Module.HEAPU8.buffer,dcontourxPtr,nx);
+	contourxHeap.set(new Uint8Array(dcontourx.buffer)); var contourx=contourxHeap.byteOffset;
+
+	var dcontoury=new Float64Array(contour['y']); var ny=dcontoury.length * dcontoury.BYTES_PER_ELEMENT;
+	var dcontouryPtr = Module._malloc(ny); var contouryHeap = new Uint8Array(Module.HEAPU8.buffer,dcontouryPtr,ny);
+	contouryHeap.set(new Uint8Array(dcontoury.buffer)); var contoury=contouryHeap.byteOffset;
+	
+	nel=indexin.length;
+	nods=xin.length;
+	contour_nods=dcontourx.length;
+
+	//output
+	var in_nod;
+	var pin_nod= Module._malloc(4); 
+	var in_nel;
+	var pin_nel= Module._malloc(4); 
+	//}}}
+
+	//Declare ContourToMesh module: 
+	ContourToMeshModule = Module.cwrap('ContourToMeshModule','number',['number','number','number','number','number','number','number','string','number','number','number']);
+	
+	//Call ContourToMesh module: 
+	ContourToMeshModule(pin_nod,pin_nel,index,x,y,contourx,contoury,interptype,nel, nods, contour_nods, edgevalue);
+
+	/*Dynamic copying from heap: {{{*/
+	if(interptype == 'node'){
+		var in_nodptr = Module.getValue(pin_nod,'i32');
+		in_nod = Module.HEAPF64.slice(in_nodptr /8, in_nodptr/8 + nods);
+	}
+	else if (interptype == 'element'){
+		var in_nelptr = Module.getValue(pin_nel,'i32');
+		in_nel = Module.HEAPF64.slice(in_nelptr /8, in_nelptr/8 + nel);
+	}
+	else if (interptype == 'element and node'){
+		var in_nodptr = Module.getValue(pin_nod,'i32');
+		in_nod = Module.HEAPF64.slice(in_nodptr /8, in_nodptr/8 + nods);
+		var in_nelptr = Module.getValue(pin_nel,'i32');
+		in_nel = Module.HEAPF64.slice(in_nelptr /8, in_nelptr/8 + nel);
+	}
+	else throw Error('ContourToMeshModule error message: wrong interpolation type!');
+	/*}}}*/
+
+	/*Free resources: */
+	Module._free(pin_nod); 
+	Module._free(pin_nel); 
+	
+	if(interptype == 'node'){
+		return in_nod;
+	}
+	else if (interptype == 'element'){
+		return in_nel;
+	}
+	else if (interptype == 'element and node'){
+		return [in_nod,in_nel];
+	}
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/ContourToNodes/ContourToNodes.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/ContourToNodes/ContourToNodes.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/ContourToNodes/ContourToNodes.cpp	(revision 27955)
@@ -0,0 +1,62 @@
+/*! \file  ContourtoNodes
+    \brief: takes a  contour file, and figures out which nodes  (x,y list)
+*/
+
+#include "./ContourToNodes.h"
+
+void ContourToNodesUsage(void){/*{{{*/
+	_printf_("   usage:\n");
+	_printf_("   [flags]=ContourToNodes(x,y,contourname,edgevalue);\n");
+	_printf_("   where:\n");
+	_printf_("      x,y: list of nodes.\n");
+	_printf_("      contourname: name of .exp file containing the contours, or resulting structure from call to expread.\n");
+	_printf_("      edgevalue: integer (0, 1 or 2) defining the value associated to the nodes on the edges of the polygons.\n");
+	_printf_("      flags: vector of flags (0 or 1), of size nods.\n");
+	_printf_("\n");
+}/*}}}*/
+WRAPPER(ContourToNodes_python){
+
+	/* input: */
+	int       edgevalue,dim1,dim2,test1,test2;
+	double   *x           = NULL;
+	double   *y           = NULL;
+	char     *contourname = NULL;
+	Contours *contours    = NULL;
+
+	/* output: */
+	double *flags = NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	CHECKARGUMENTS(NLHS,NRHS,&ContourToNodesUsage);
+
+	/*Fetch inputs: */
+	FetchData(&x,&dim1,&dim2,XHANDLE);
+	FetchData(&y,&test1,&test2,YHANDLE);
+	FetchData(&edgevalue,EDGEVALUE);
+	FetchData(&contours,CONTOUR);
+
+	/*Some sanity checks*/
+	if(dim1<1) _error_("x is empty");
+	if(dim2<1) _error_("x is empty");
+	if(test1!=dim1) _error_("x ans y do not have the same size");
+	if(test2!=dim2) _error_("x ans y do not have the same size");
+
+	/*Run x layer */
+	ContourToNodesx(&flags,x,y,dim1*dim2,contours,edgevalue);
+
+	/* output: */
+	WriteData(FLAGS,flags,dim1,dim2);
+
+	/*Clean up*/
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<char>(contourname);
+	delete contours;
+	xDelete<double>(flags);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/ContourToNodes/ContourToNodes.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/ContourToNodes/ContourToNodes.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/ContourToNodes/ContourToNodes.h	(revision 27955)
@@ -0,0 +1,55 @@
+/*
+	ContourToNodes.h
+*/
+
+#ifndef _CONTOURTONODES_H
+#define _CONTOURTONODES_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__
+#define __FUNCT__ "ContourToNodes"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* input macros: */
+#define XHANDLE   prhs[0]
+#define YHANDLE   prhs[1]
+#define CONTOUR   prhs[2]
+#define EDGEVALUE prhs[3]
+
+/* serial output macros: */
+#define FLAGS (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* input macros: */
+#define XHANDLE   PyTuple_GetItem(args,0)
+#define YHANDLE   PyTuple_GetItem(args,1)
+#define CONTOUR   PyTuple_GetItem(args,2)
+#define EDGEVALUE PyTuple_GetItem(args,3)
+
+/* serial output macros: */
+#define FLAGS output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS 1
+#undef NRHS
+#define NRHS 4
+
+#endif  /* _CONTOURTONODES_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/CoordTransform/CoordTransform.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/CoordTransform/CoordTransform.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/CoordTransform/CoordTransform.cpp	(revision 27955)
@@ -0,0 +1,106 @@
+/*
+ * CoordTransform: mesh a domain using an .exp file
+ */
+
+/*Header files*/
+#include "./CoordTransform.h"
+#include <proj.h>
+
+/*
+NOTE:
+- Compilation of this module is fenced in Makefile.am, so we do not have to 
+check again if _HAVE_PROJ_ is defined
+*/
+#if defined(PROJ_VERSION_MAJOR) && PROJ_VERSION_MAJOR >= 6
+	/*
+	Converts an array of longitude (x_src) and array of latitude (y_src) in the 
+	projection described by str_src to the projection described by str_dest.
+
+	NOTE:
+	- API types and calls have been migrated from PROJ 4 to PROJ 6. See SVN 
+	revision history for changes.
+
+	Sources:
+	- https://proj.org/development/migration.html
+	- https://www.gaia-gis.it/fossil/libspatialite/wiki?name=PROJ.6
+	*/
+
+	void CoordTransformUsage(void){/*{{{*/
+		_printf_(" type help CoordTransform\n");
+	}/*}}}*/
+	WRAPPER(CoordTransform_python){
+		/*intermediary: */
+		double *xin     = NULL;
+		double *yin     = NULL;
+		char   *projin  = NULL;
+		char   *projout = NULL;
+		int     M,N;
+		int     test1,test2;
+
+		/*Boot module: */
+		MODULEBOOT();
+
+		/*checks on arguments: */
+		CHECKARGUMENTS(NLHS,NRHS,&CoordTransformUsage);
+
+		/*Fetch data needed for meshing: */
+		FetchData(&xin,&M,&N,XIN);
+		FetchData(&yin,&test1,&test2,YIN);
+		if(!M*N)     _error_("no coordinate provided");
+		if(test1!=M) _error_("x and y do not have the same size");
+		if(test2!=N) _error_("x and y do not have the same size");
+		FetchData(&projin,PROJIN);
+		FetchData(&projout,PROJOUT);
+
+		/*Calculate size once*/
+		int size = M*N;
+
+		/*Initialize output*/
+		double* xout = xNew<double>(size);
+		double* yout = xNew<double>(size);
+
+		for(int i=0;i<size;i++){
+			xout[i] = xin[i];
+			yout[i] = yin[i];
+		}
+
+		size_t sx = sizeof(double);
+		size_t sy = sizeof(double);
+		size_t nx = size;
+		size_t ny = size;
+
+		PJ* P = proj_create_crs_to_crs(PJ_DEFAULT_CTX,projin,projout,NULL);
+
+		if(P==0){
+			proj_destroy(P);
+			_error_("Projection string not recognized");
+		}
+
+		int p = proj_trans_generic(P, PJ_FWD, xout, sx, nx, yout, sy, ny, 0, 0, 0, 0, 0, 0);
+
+		if(p==0){
+			proj_destroy(P);
+			_error_("projection failed");
+		}
+
+		/*Cleanup*/
+		proj_destroy(P);
+
+		/*write outputs: */
+		WriteData(XOUT,xout,M,N);
+		WriteData(YOUT,yout,M,N);
+
+		/*Clean-up and return*/
+		xDelete<double>(xin);
+		xDelete<double>(yin);
+		xDelete<double>(xout);
+		xDelete<double>(yout);
+		xDelete<char>(projin);
+		xDelete<char>(projout);
+
+		/*end module: */
+		MODULEEND();
+	}
+#else
+	_error_("PROJ version >= 6 required");
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/CoordTransform/CoordTransform.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/CoordTransform/CoordTransform.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/CoordTransform/CoordTransform.h	(revision 27955)
@@ -0,0 +1,67 @@
+/*
+	CoordTransform.h
+*/
+
+#ifndef _COORDTRANSFORM_H
+#define _COORDTRANSFORM_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+/*Header files: */
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "CoordTransform"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define XIN     prhs[0]
+#define YIN     prhs[1]
+#define PROJIN  prhs[2]
+#define PROJOUT prhs[3]
+/* serial output macros: */
+#define XOUT (mxArray**)&plhs[0]
+#define YOUT (mxArray**)&plhs[1]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define XIN     PyTuple_GetItem(args,0)
+#define YIN     PyTuple_GetItem(args,1)
+#define PROJIN  PyTuple_GetItem(args,2)
+#define PROJOUT PyTuple_GetItem(args,3)
+/* serial output macros: */
+#define XOUT output,0
+#define YOUT output,1
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define XIN     xin
+#define YIN     yin
+#define PROJIN  projin
+#define PROJOUT projout
+/* serial output macros: */
+/*NOT IMPLEMENTED YET*/
+#endif
+
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  2
+#undef NRHS
+#define NRHS  4
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/DistanceToMaskBoundary/DistanceToMaskBoundary.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/DistanceToMaskBoundary/DistanceToMaskBoundary.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/DistanceToMaskBoundary/DistanceToMaskBoundary.cpp	(revision 27955)
@@ -0,0 +1,59 @@
+/*\file DistanceToMaskBoundary.c
+ *\brief: compute distance from any point in a mesh to a mask boundary
+ */
+
+#include "./DistanceToMaskBoundary.h"
+
+void DistanceToMaskBoundaryUsage(void){/*{{{*/
+	_printf0_("DISTANCETOMASKBOUNDARYUSAGE - compute distance from any point in a mesh to a mask boundary\n");
+	_printf0_("\n");
+	_printf0_("   This function is a multi-threaded mex file\n");
+	_printf0_("\n");
+	_printf0_("   Usage:\n");
+	_printf0_("      [distance]=DistanceToMaskBoundary(x,y,mask)\n");
+	_printf0_("\n");
+	_printf0_("      x,y,mask: mesh vertices with corresponding mask values. \n");
+	_printf0_("      distance: distance from x,y to the mask transition between 0 and 1\n");
+	_printf0_("\n");
+}/*}}}*/
+
+WRAPPER(DistanceToMaskBoundary_python){
+
+	/*input datasets: */
+	double* x=NULL;
+	double* y=NULL;
+	double* mask=NULL;
+	int     nods;
+
+	/* output datasets: */
+	double* distance=NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	#ifdef _HAVE_MATLAB_MODULES_
+	CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&DistanceToMaskBoundaryUsage);
+	#endif
+
+	/*Input datasets: */
+	FetchData(&x,&nods,NULL,X);
+	FetchData(&y,NULL,NULL,Y);
+	FetchData(&mask,NULL,NULL,MASK);
+
+	/*Call core of computation: */
+	_error_("messing up with AD, is this fonction really used??");
+	//DistanceToMaskBoundaryx(&distance,x,y,mask,nods);
+
+	/*Write results: */
+	WriteData(DISTANCE,distance,nods);
+
+	/*Free resources: */
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<double>(mask);
+	xDelete<double>(distance);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/DistanceToMaskBoundary/DistanceToMaskBoundary.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/DistanceToMaskBoundary/DistanceToMaskBoundary.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/DistanceToMaskBoundary/DistanceToMaskBoundary.h	(revision 27955)
@@ -0,0 +1,53 @@
+/*
+	DistanceToMaskBoundary.h
+*/
+
+#ifndef _DISTANCETOMASKBOUNDARY_H
+#define _DISTANCETOMASKBOUNDARY_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/toolkits/toolkits.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../../c/shared/io/io.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "DistanceToMaskBoundary"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define X            prhs[0]
+#define Y            prhs[1]
+#define MASK         prhs[2]
+/* serial output macros: */
+#define DISTANCE (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define X            PyTuple_GetItem(args,0)
+#define Y            PyTuple_GetItem(args,1)
+#define MASK            PyTuple_GetItem(args,2)
+/* serial output macros: */
+#define DISTANCE output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  3
+
+#endif  /* _DISTANCETOMASKBOUNDARY_H*/
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/ElementConnectivity/ElementConnectivity.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/ElementConnectivity/ElementConnectivity.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/ElementConnectivity/ElementConnectivity.cpp	(revision 27955)
@@ -0,0 +1,46 @@
+/*\file ElementConnectivity.c
+ *\brief: build element connectivity using node connectivity and elements. 
+ */
+
+#include "./ElementConnectivity.h"
+
+void ElementConnectivityUsage(void) {/*{{{*/
+	_printf0_("\n");
+	_printf0_("   usage: elementconnectivity = " << __FUNCT__ << "(elements, nodeconnectivity);\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(ElementConnectivity_python){
+
+	/*inputs: */
+	int* elements=NULL;
+	int* nodeconnectivity=NULL;
+	int  nels,nods;
+	int  width;
+
+	/*outputs: */
+	int* elementconnectivity=NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments: */
+	CHECKARGUMENTS(NLHS,NRHS,&ElementConnectivityUsage);
+
+	/*Input datasets: */
+	FetchData(&elements,&nels,NULL,ELEMENTS);
+	FetchData(&nodeconnectivity,&nods,&width,NODECONNECTIVITY);
+
+	/*!Generate internal degree of freedom numbers: */
+	ElementConnectivityx(&elementconnectivity,elements,nels,nodeconnectivity,nods,width);
+
+	/*write output datasets: */
+	WriteData(ELEMENTCONNECTIVITY,elementconnectivity,nels,3);
+
+	/*Clean up*/
+	xDelete<int>(elements);
+	xDelete<int>(nodeconnectivity);
+	xDelete<int>(elementconnectivity);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/ElementConnectivity/ElementConnectivity.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/ElementConnectivity/ElementConnectivity.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/ElementConnectivity/ElementConnectivity.h	(revision 27955)
@@ -0,0 +1,61 @@
+/*
+	ElementConnectivity.h
+*/
+
+#ifndef _ELEMENTCONNECTIVITY_H
+#define _ELEMENTCONNECTIVITY_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+/*Header files: */
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/toolkits/toolkits.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../../c/shared/io/io.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "ElementConnectivity"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define ELEMENTS         prhs[0]
+#define NODECONNECTIVITY prhs[1]
+/* serial output macros: */
+#define ELEMENTCONNECTIVITY (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define ELEMENTS         PyTuple_GetItem(args,0)
+#define NODECONNECTIVITY PyTuple_GetItem(args,1)
+/* serial output macros: */
+#define ELEMENTCONNECTIVITY output,0
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define ELEMENTS         elementsin, nelsin,3
+#define NODECONNECTIVITY nodeconnectivityin, nodsin, widthin
+/* serial output macros: */
+#define ELEMENTCONNECTIVITY pelementconnectivity,NULL,NULL
+#define WRAPPER(modulename) extern "C" { int  ElementConnectivityModule(double** pelementconnectivity, int* elementsin, int* nodeconnectivityin, int nelsin, int nodsin, int widthin)
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  2
+
+#endif  /* _ELEMENTCONNECTIVITY_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/ElementConnectivity/ElementConnectivity.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/ElementConnectivity/ElementConnectivity.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/ElementConnectivity/ElementConnectivity.js	(revision 27955)
@@ -0,0 +1,45 @@
+function ElementConnectivity(elementsin,nodeconnectivityin){
+/*ElementConnectivity 
+	   usage: var md.mesh.elementconnectivity= ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+*/
+
+	//Dynamic allocations: {{{
+	//Retrieve elements and allocate on Module heap: 
+	
+	//input
+	nel=elementsin.length;
+	nods=nodeconnectivityin.length;
+	width=nodeconnectivityin[0].length;
+	
+	var delements=new Int32Array(MatrixToList(elementsin)); var nelements=delements.length * delements.BYTES_PER_ELEMENT;
+	var delementsPtr= Module._malloc(nelements); var elementsHeap = new Uint8Array(Module.HEAPU8.buffer,delementsPtr,nelements);
+	elementsHeap.set(new Uint8Array(delements.buffer)); var elements=elementsHeap.byteOffset;
+	
+	var dnodeconnectivity=new Int32Array(MatrixToList(nodeconnectivityin)); var nnodeconnectivity=dnodeconnectivity.length * dnodeconnectivity.BYTES_PER_ELEMENT;
+	var dnodeconnectivityPtr= Module._malloc(nnodeconnectivity); var nodeconnectivityHeap = new Uint8Array(Module.HEAPU8.buffer,dnodeconnectivityPtr,nnodeconnectivity);
+	nodeconnectivityHeap.set(new Uint8Array(dnodeconnectivity.buffer)); var nodeconnectivity=nodeconnectivityHeap.byteOffset;
+
+	//output
+	var connectivitylinear,connectivity;
+	var pconnectivity= Module._malloc(4); 
+	//}}}
+
+	//Declare ElementConnectivity module: 
+	ElementConnectivityModule = Module.cwrap('ElementConnectivityModule','number',['number','number','number','number','number','number']);
+	
+	//Call ElementConnectivity module: 
+	ElementConnectivityModule(pconnectivity,elements, nodeconnectivity, nel, nods, width);
+	
+	/*Dynamic copying from heap: {{{*/
+	//recover mesh: 
+	var connectivityptr = Module.getValue(pconnectivity,'i32');
+	connectivitylinear = Module.HEAPF64.slice(connectivityptr /8, connectivityptr/8 + nel*3);
+	connectivity = ListToMatrix(connectivitylinear,3);
+	/*}}}*/
+
+	/*Free resources: */
+	Module._free(pconnectivity); 
+	Module._free(connectivitylinear); 
+
+	return connectivity;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/ExpSimplify/ExpSimplify.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/ExpSimplify/ExpSimplify.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/ExpSimplify/ExpSimplify.cpp	(revision 27955)
@@ -0,0 +1,223 @@
+/*\file ExpSimplify.c
+ *\brief: exp to kml file conversion mex module.
+ */
+#include "./ExpSimplify.h"
+
+void ExpSimplifyUsage(void){/*{{{*/
+	_printf_("ExpSimplify - Simplify Exp contour\n");
+	_printf_("\n");
+	_printf_("   Recursive Douglas-Peucker Polygon Simplification\n");
+	_printf_("\n");
+	_printf_("   Usage:\n");
+	_printf_("      ExpSimplify(expfile,tol);\n");
+	_printf_("      - expfile: name of the exp file\n");
+	_printf_("      - tol:  tolerance (maximal euclidean distance allowed between the new line and a vertex)\n");
+	_printf_("      Additional options:\n");
+	_printf_("      - 'min': minimum number of vertices to save contours in exp file (default is 3)\n");
+	_printf_("\n");
+	_printf_("   Example:\n");
+	_printf_("      ExpSimplify('file.exp',100);\n");
+	_printf_("      ExpSimplify('file.exp',100,'min',4);\n");
+}/*}}}*/
+void simplify(Contour<double>* contour,bool* flags,int ind0,int ind1,double tolerance){/*{{{*/
+
+	bool    closed    = false;
+	double  distance,beta,dx,dy;
+	double  maxdistance;
+	int     index  = -1;
+	double *x      = contour->x;
+	double *y      = contour->y;
+
+	/*Some checks*/
+	_assert_(ind0>=0 && ind0<contour->nods);
+	_assert_(ind1>=0 && ind1<contour->nods);
+	_assert_(ind1-ind0>=0);
+
+	/*Check wether this portion is closed*/
+	if(x[ind0]==x[ind1] && y[ind0]==y[ind1]) closed=true;
+
+	if(closed){
+
+		/*calculate the shortest distance of all vertices between ind0 and ind1*/
+		for(int i=ind0;i<ind1-1;i++){
+			distance = sqrt((x[ind0]-x[i+1])*(x[ind0]-x[i+1]) + (y[ind0]-y[i+1])*(y[ind0]-y[i+1]));
+			if(i==ind0 || distance>maxdistance){
+				maxdistance=distance;
+				index = i + 1;
+			}
+		}
+	}
+	else{
+		/*calculate shortest distance of all points to the line from ind0 to ind1
+		 * subtract starting point from other locations
+		 *
+		 * d = || (x-x0) - beta (xend - x0) ||
+		 * <x-x0,xend-x0>      = ||x-x0|| ||xend-x0|| cos(alpha)
+		 * beta ||xend-x0|| = ||x-x0|| cos(alpha)
+		 *
+		 * So: beta = <x-x0,xend-x0>/<xend-x0,xend-x0>  */
+
+		for(int i=ind0+1;i<=ind1;i++){
+			beta = ((x[i]-x[ind0])*(x[ind1]-x[ind0]) + (y[i]-y[ind0])*(y[ind1]-y[ind0]))/((x[ind1]-x[ind0])*(x[ind1]-x[ind0])+(y[ind1]-y[ind0])*(y[ind1]-y[ind0]));
+			dx   = x[i]-beta*x[ind1]+(beta-1.)*x[ind0];
+			dy   = y[i]-beta*y[ind1]+(beta-1.)*y[ind0];
+			distance = sqrt(dx*dx + dy*dy);
+			if(i==ind0+1 || distance>maxdistance){
+				maxdistance = distance;
+				index       = i;
+			}
+		}
+
+	}
+
+	/*if the maximum distance is smaller than the tolerance remove vertices between ind0 and ind1*/
+	if(maxdistance<tolerance){
+		if(ind0!=ind1-1){
+			for(int i=ind0+1;i<ind1;i++) flags[i]=false;
+		}
+	}
+	else{
+		/*if not, call simplifyrec for the segments between ind0 and index
+		 * (index and ind1)*/
+		_assert_(index!=-1);
+		_assert_(index!=ind1);
+		_assert_(index!=ind0);
+		simplify(contour,flags,ind0 ,index,tolerance);
+		simplify(contour,flags,index,ind1, tolerance);
+	}
+
+}/*}}}*/
+WRAPPER(ExpSimplify_python){
+
+	int i,verbose=1;
+
+	/*input: */
+	char*    expfile  = NULL;
+	double   tolerance;
+	Options *options      = NULL;
+	double   minimumvertices_double;
+	int      minimumvertices;
+
+	/*output*/
+	Contours* oldcontours = NULL;
+	Contours* newcontours = NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments: */
+	/*checks on arguments on the matlab side: */
+	if (nrhs<NRHS || nlhs>NLHS){
+		ExpSimplifyUsage(); _error_("ExpSimplify usage error");
+	}
+
+	/*Input datasets: */
+	FetchData(&expfile,  EXPFILE);
+	FetchData(&tolerance,TOLERANCE);
+	FetchData(&options,NRHS,nrhs,prhs);
+
+	/*some checks*/
+	if(tolerance<0) _error_("tolerance must be a positivve scalar");
+
+	/* Run core computations: */
+	Contour<double>* contour = NULL;
+	Contour<double>* newcontour = NULL;
+	int     nods,newnods;
+	bool*   flags = NULL;
+	double* x = NULL;
+	double* y = NULL;
+	double distance;
+
+	/*Process options*/
+	options->Get(&minimumvertices_double,"min",3.);
+	if(minimumvertices_double<1.) _error_("'min' (minimum number of verties) should be a positive integer");
+	minimumvertices = int(minimumvertices_double);
+
+	/*Read old contours and allocate new contours*/
+	oldcontours=ExpRead<double>(expfile);
+	newcontours=new Contours();
+	for(int counter=0;counter<oldcontours->Size();counter++){
+
+		/*Get single contour*/
+		contour = (Contour<double>*)oldcontours->GetObjectByOffset(counter);
+		nods    = contour->nods;
+		x       = contour->x;
+		y       = contour->y;
+		_printf_("   Initial number of vertices in contour #"<<counter+1<<": "<<nods << "\n");
+
+		/*Allocate flags (1=keep, 0=remove)*/
+		if(nods>0) flags   = xNew<bool>(nods);
+
+		if(nods==0){
+			/*Don't do anything*/
+		}
+		else if(nods==1){
+			flags[0] = true;
+		}
+		else if(nods==2){
+			/*check if the distance between both is less than the tolerance
+			 * If so, return the center*/
+			distance = sqrt((x[1]-x[0])*(x[1]-x[0]) + (y[1]-y[0])*(y[1]-y[0]));
+			if(distance<=tolerance){
+				x[0]=(x[0]+x[1])/2.;
+				y[0]=(y[0]+y[1])/2.;
+				flags[0] = true;
+				flags[1] = false;
+			}
+			else{
+				flags[0] = true;
+				flags[1] = true;
+			}
+		}
+		else{
+			/*Start recursive call to simplify*/
+			for(int i=0;i<nods;i++) flags[i]=true;
+			simplify(contour,flags,0,nods-1,tolerance);
+		}
+
+		/*Add new contour to newcontours*/
+		newnods = 0;
+		for(int i=0;i<nods;i++) if(flags[i]) newnods++;
+
+		/*Do we save new profile?*/
+		if(newnods>=minimumvertices){
+			_printf_("   Final   number of vertices in contour #"<<counter+1<<": "<<newnods << "\n");
+			newcontour       = new Contour<double>();
+			newcontour->nods = newnods;
+			newcontour->x    = xNew<double>(newnods);
+			newcontour->y    = xNew<double>(newnods);
+			newnods = 0;
+			for(int i=0;i<nods;i++){
+				if(flags[i]){
+					newcontour->x[newnods] = contour->x[i];
+					newcontour->y[newnods] = contour->y[i];
+					newnods++;
+				}
+			}
+			_assert_(newnods==newcontour->nods);
+
+			/*Add to main dataset*/
+			newcontours->AddObject(newcontour);
+		}
+		else{
+			_printf_("   Final   number of vertices in contour #"<<counter+1<<": "<<newnods<<" (not saved)\n");
+		}
+
+		/*cleanup*/
+		xDelete<bool>(flags);
+	}
+	_printf_("   Initial number of contours: "<<oldcontours->Size() << "\n");
+	_printf_("   Final   number of contours: "<<newcontours->Size() << "\n");
+
+	/*Write data: */
+	ExpWrite(newcontours,expfile);
+
+	/*Clean-up*/
+	xDelete<char>(expfile);
+	delete options;
+	delete oldcontours;
+	delete newcontours;
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/ExpSimplify/ExpSimplify.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/ExpSimplify/ExpSimplify.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/ExpSimplify/ExpSimplify.h	(revision 27955)
@@ -0,0 +1,46 @@
+/*!\file ExpSimplify.h
+ * \brief: prototype for exp to kml file conversion mex module.
+ */
+
+#ifndef _EXPSIMPLIFY_H
+#define _EXPSIMPLIFY_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "ExpSimplify"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define EXPFILE   prhs[0]
+#define TOLERANCE prhs[1]
+/* serial output macros: */
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define EXPFILE   PyTuple_GetItem(args,0)
+#define TOLERANCE PyTuple_GetItem(args,1)
+#endif
+
+/* serial arg counts: */
+#undef NRHS
+#define NRHS  2
+#undef NLHS
+#define NLHS  0
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/ExpToLevelSet/ExpToLevelSet.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/ExpToLevelSet/ExpToLevelSet.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/ExpToLevelSet/ExpToLevelSet.cpp	(revision 27955)
@@ -0,0 +1,78 @@
+/*! \file  ContourtoMesh
+    \brief: takes a  contour file, a cloud of points, and figures out a levelset dependent on the distance between the contour and 
+	the cloud.
+*/
+
+#include "./ExpToLevelSet.h"
+
+void ExpToLevelSetUsage(void){/*{{{*/
+	_printf_("EXPTOLEVELSET - determien levelset distance between a contour and a cloud of points\n");
+	_printf_("\n");
+	_printf_("      Usage: \n");
+	_printf_("         distance=ExpToLevelSet(x,y,contourname)\n");
+	_printf_("\n");
+	_printf_("         x,y: cloud point.\n");
+	_printf_("         contourname: name of .exp file containing the contours.\n");
+	_printf_("         distance: distance vector representing a levelset where the 0 level is one the contour segments', \n");
+	_printf_("\n");
+	_printf_("      Example: \n");
+	_printf_("         distance=ExpToLevelSet(md.mesh.x,md.mesh.y,'Contour.exp')\n");
+	_printf_("\n");
+}/*}}}*/
+WRAPPER(ExpToLevelSet_python){
+
+	/*diverse: */
+	int i;
+
+	/* required input: */
+	int       nods;
+	double   *x          = NULL;
+	double   *y          = NULL;
+	char     *interptype = NULL;
+	double   *flags      = NULL;
+	Contours *contours   = NULL;
+
+	/* output: */
+	double *distance  = NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*check on input arguments: */
+	if(nrhs!=NRHS){
+		ExpToLevelSetUsage();
+		_error_("usage. See above");
+	}
+
+	/*Fetch inputs: */
+	FetchData(&x,&nods,NULL,X);
+	FetchData(&y,NULL,NULL,Y);
+	FetchData(&contours,CONTOUR);
+
+	/*Run interpolation routine: */
+	ExpToLevelSetx( &distance,x,y,nods,contours);
+	ContourToNodesx(&flags,x,y,nods,contours,2);
+
+	/*Make flags into a sign, left or right, or nill: */
+	for(i=0;i<nods;i++){
+		if (flags[i]==0) flags[i]=-1;
+		else if (flags[i]==2) flags[i]=0;
+	}
+
+	/*Multiply flags and distance: */
+	for(i=0;i<nods;i++)distance[i]*=flags[i];
+
+	/* output: */
+	WriteData(PLHS0,distance,nods);
+
+	/*Clean up*/
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<char>(interptype);
+	delete contours;
+	xDelete<double>(distance);
+	xDelete<double>(flags);
+	
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/ExpToLevelSet/ExpToLevelSet.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/ExpToLevelSet/ExpToLevelSet.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/ExpToLevelSet/ExpToLevelSet.h	(revision 27955)
@@ -0,0 +1,55 @@
+/*
+	ExpToLevelSet.h
+*/
+
+#ifndef _EXPTOLEVELSET_H
+#define _EXPTOLEVELSET_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+/*Header files: */
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/toolkits/toolkits.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../../c/shared/io/io.h"
+
+#undef __FUNCT__
+#define __FUNCT__ "ExpToLevelSet"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define X           prhs[0]
+#define Y           prhs[1]
+#define CONTOUR     prhs[2]
+
+/* serial output macros: */
+#define PLHS0 (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define X           PyTuple_GetItem(args,0)
+#define Y           PyTuple_GetItem(args,1)
+#define CONTOUR     PyTuple_GetItem(args,2)
+/* serial output macros: */
+#define PLHS0 output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS 3
+
+#endif  /* _EXPTOLEVELSET_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.cpp	(revision 27955)
@@ -0,0 +1,83 @@
+/*!\file InterpFromGridToMesh.c
+ * \brief: data interpolation from a list of (x,y,values) into mesh vertices
+*/
+
+#include "./InterpFromGridToMesh.h"
+
+void InterpFromGridToMeshUsage(void){/*{{{*/
+	_printf0_("INTERPFROMGRIDTOMESH - interpolation from a grid onto a list of points\n");
+	_printf0_("\n");
+	_printf0_("   This function is a multi-threaded mex file that interpolates a field\n");
+	_printf0_("   defined on a grid onto a list of points based on a bilinear interpolation\n");
+	_printf0_("\n");
+	_printf0_("   Usage:\n");
+	_printf0_("      data_mesh=InterpFromGridToMesh(x,y,data,x_mesh,y_mesh,default_value);\n");
+	_printf0_("\n");
+	_printf0_("      data: matrix holding the data to be interpolated onto the mesh.\n");
+	_printf0_("      x,y: coordinates of matrix data. (x and y must be in increasing order)\n");
+	_printf0_("      x_mesh,y_mesh: coordinates of the points onto which we interpolate.\n");
+	_printf0_("      default_value: default value if no data is found (holes).\n");
+	_printf0_("      data_mesh: vector of mesh interpolated data.\n");
+	_printf0_("\n");
+	_printf0_("   Example:\n");
+	_printf0_("      load('velocities.mat');\n");
+	_printf0_("      md.inversion.vx_obs=InterpFromGridToMesh(x_n,y_m,vx,md.mesh.x,md.mesh.y,0);\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(InterpFromGridToMesh_python){
+
+	int i,j;
+
+	/*input: */
+	double *x = NULL;
+	double *y = NULL;
+	int     x_rows,y_rows;
+	double *data  = NULL;
+	int     data_rows,data_cols;
+	double *x_mesh = NULL;
+	double *y_mesh = NULL;
+	int     x_mesh_rows,y_mesh_rows;
+	double  default_value;
+	char*   interpolationtype = NULL;
+
+	/* output: */
+	IssmSeqVec<double>*  data_mesh=NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	if(nrhs!=6 && nrhs!=7){
+		InterpFromGridToMeshUsage();
+		_error_("Wrong usage. See above");
+	}
+
+	/*Input datasets: */
+	FetchData(&x,&x_rows,NULL,XHANDLE);
+	FetchData(&y,&y_rows,NULL,YHANDLE);
+	FetchData(&data,&data_rows,&data_cols,DATAHANDLE);
+	FetchData(&x_mesh,&x_mesh_rows,NULL,XMESHHANDLE);
+	FetchData(&y_mesh,&y_mesh_rows,NULL,YMESHHANDLE);
+	FetchData(&default_value,DEFAULTHANDLE);
+
+	/* Run core computations: */
+	if(nrhs==7){
+		FetchData(&interpolationtype,INTERPENUM);
+		InterpFromGridToMeshx(&data_mesh, x, x_rows,  y, y_rows, data, data_rows,data_cols, x_mesh, y_mesh, x_mesh_rows,default_value,interpolationtype);
+		xDelete<char>(interpolationtype);
+	}
+	else{
+		InterpFromGridToMeshx(&data_mesh, x, x_rows,  y, y_rows, data, data_rows,data_cols, x_mesh, y_mesh, x_mesh_rows,default_value,"bilinear");
+	}
+
+	/*Write data: */
+	WriteData(DATAMESH,data_mesh);
+
+	/*end module: */
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<double>(data);
+	xDelete<double>(x_mesh);
+	xDelete<double>(y_mesh);
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.h	(revision 27955)
@@ -0,0 +1,74 @@
+/*!\file InterpFromGridToMesh.h
+ * \brief: prototype for Data Interpolation mex module.
+ */
+
+#ifndef _InterpFromGridToMesh_H
+#define _InterpFromGridToMesh_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "InterpFromGridToMesh"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define XHANDLE       prhs[0]
+#define YHANDLE       prhs[1]
+#define DATAHANDLE    prhs[2]
+#define XMESHHANDLE   prhs[3]
+#define YMESHHANDLE   prhs[4]
+#define DEFAULTHANDLE prhs[5]
+#define INTERPENUM    prhs[6]
+/* serial output macros: */
+#define DATAMESH (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define XHANDLE       PyTuple_GetItem(args,0)
+#define YHANDLE       PyTuple_GetItem(args,1)
+#define DATAHANDLE    PyTuple_GetItem(args,2)
+#define XMESHHANDLE   PyTuple_GetItem(args,3)
+#define YMESHHANDLE   PyTuple_GetItem(args,4)
+#define DEFAULTHANDLE PyTuple_GetItem(args,5)
+#define INTERPENUM    PyTuple_GetItem(args,6)
+/* serial output macros: */
+#define DATAMESH output,0
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define XHANDLE       xIn,dataNumColsIn,1
+#define YHANDLE       yIn,dataNumRowsIn,1
+#define DATAHANDLE    dataIn,dataNumRowsIn,dataNumColsIn
+#define XMESHHANDLE   xMeshIn,meshNumRowsIn,1
+#define YMESHHANDLE   yMeshIn,meshNumRowsIn,1
+#define DEFAULTHANDLE defaultValue
+#define INTERPENUM    interpType
+/* serial output macros: */
+#define DATAMESH pdataMesh
+#define WRAPPER(modulename) extern "C" { int InterpFromGridToMeshModule(double** pdataMesh, double* xIn, double* yIn, double* dataIn, double* xMeshIn, double* yMeshIn, double defaultValue, int nodsIn, int dataNumRowsIn, int dataNumColsIn, int meshNumRowsIn, char* interpType)
+#define nrhs 6
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  6
+
+#endif  /* _INTERPFROMGRIDTOMESH_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.js	(revision 27955)
@@ -0,0 +1,187 @@
+/**
+ * INTERPFROMGRIDTOMESH - interpolation from a grid onto a list of points
+ *
+ * This function interpolates a field defined on a grid to a list of points based on a bilinear interpolation.
+ *
+ * Usage:
+ *	var data_mesh=InterpFromGridToMesh(xIn,yIn,dataIn,xMeshIn,yMeshIn,defaultValue,interpType);\
+ *
+ *	xIn,yIn						: coordinates of matrix data. (x and y must be in increasing order)
+ *	dataIn						: matrix holding the data to be interpolated onto the mesh
+ *	xMeshIn,yMeshIn				: coordinates of the points onto which we interpolate
+ *	defaultValue 				: default value if no data is found (holes)
+ *	interpType (optional) 		: interpolation type
+ * 	dataMesh					: array of mesh interpolated data
+ */
+function InterpFromGridToMesh(xIn,yIn,dataIn,dataNumColsIn,dataNumRowsIn,xMeshIn,yMeshIn,defaultValue) {
+	/*
+		Variables
+	*/
+	//{{{
+	var data 			= {};
+	var dataMesh 		= {};
+	var dataMeshPtr 	= {};
+	var ddata			= {};
+	var ddataHeap 		= {};
+	var ddataPtr 		= {};
+	var dx				= {};
+	var dxHeap 			= {};
+	var dxMesh 			= {};
+	var dxMeshHeap 		= {};
+	var dxMeshPtr 		= {};
+	var dxPtr 			= {};
+	var dy				= {};
+	var dyHeap 			= {};
+	var dyMesh			= {};
+	var dyMeshHeap 		= {};
+	var dyMeshPtr 		= {};
+	var dyPtr 			= {};
+	var interpType 		= '';
+	var meshNumRows		= 0;
+	var ndata			= {};
+	var nods 			= 0;
+	var nx 				= {};
+	var nxMesh 			= {};
+	var ny 				= {};
+	var nyMesh 			= {};
+	var pdataMesh 		= {};
+	var x 				= {};
+	var xMesh 			= {};
+	var y				= {};
+	var yMesh 			= {};
+	//}}}
+
+
+	/*
+		Dynamic allocations
+	*/
+	//{{{
+
+	/*
+		Input
+	*/
+	//{{{
+	dx 			= new Float64Array(xIn);
+	nx 			= dx.length * dx.BYTES_PER_ELEMENT;
+	dxPtr 		= Module._malloc(nx);
+	dxHeap 		= new Uint8Array(Module.HEAPU8.buffer, dxPtr, nx);
+	dxHeap.set(new Uint8Array(dx.buffer));
+	x 			= dxHeap.byteOffset;
+
+	dy 			= new Float64Array(yIn);
+	ny 			= dy.length * dy.BYTES_PER_ELEMENT;
+	dyPtr 		= Module._malloc(ny);
+	dyHeap 		= new Uint8Array(Module.HEAPU8.buffer, dyPtr, ny);
+	dyHeap.set(new Uint8Array(dy.buffer));
+	y 			= dyHeap.byteOffset;
+
+	ddata 		= new Float64Array(dataIn);
+	ndata 		= ddata.length * ddata.BYTES_PER_ELEMENT;
+	ddataPtr 	= Module._malloc(ndata);
+	ddataHeap 	= new Uint8Array(Module.HEAPU8.buffer, ddataPtr, ndata);
+	ddataHeap.set(new Uint8Array(ddata.buffer));
+	data 		= ddataHeap.byteOffset;
+
+	dxMesh 		= new Float64Array(xMeshIn);
+	nxMesh 		= dxMesh.length * dxMesh.BYTES_PER_ELEMENT;
+	dxMeshPtr 	= Module._malloc(nxMesh);
+	dxMeshHeap 	= new Uint8Array(Module.HEAPU8.buffer, dxMeshPtr, nxMesh);
+	dxMeshHeap.set(new Uint8Array(dxMesh.buffer));
+	xMesh 		= dxMeshHeap.byteOffset;
+
+	dyMesh 		= new Float64Array(yMeshIn);
+	nyMesh 		= dyMesh.length * dyMesh.BYTES_PER_ELEMENT;
+	dyMeshPtr 	= Module._malloc(nyMesh);
+	dyMeshHeap 	= new Uint8Array(Module.HEAPU8.buffer, dyMeshPtr, nyMesh);
+	dyMeshHeap.set(new Uint8Array(dyMesh.buffer));
+	yMesh 		= dyMeshHeap.byteOffset;
+
+	nods 		= xMeshIn.length;
+	meshNumRows	= xMeshIn.length;
+
+
+	/*
+		Retrieve interpolation type
+	*/
+	//{{{
+	if (arguments.length === 7) {
+		interpType = arguments[6];
+	} else {
+		interpType = 'bilinear';
+	}
+	//}}}
+
+	/*
+		Output
+	*/
+	pdataMesh = Module._malloc(4);
+	//}}}
+
+	//}}}
+
+
+	/*
+		Declare InterpFromGridToMesh module
+	*/
+	//{{{
+	InterpFromGridToMeshModule = Module.cwrap(
+		'InterpFromGridToMeshModule',
+		'number',
+		[
+			'number', // output : pdataMesh
+			'number', // input	: x
+			'number', // input	: y
+			'number', // input 	: data
+			'number', // input 	: xMesh
+			'number', // input	: yMesh
+			'number', // input 	: defaultValue
+			'number', // input	: nods
+			'number', // input	: dataNumRowsIn
+			'number', // input	: dataNumColsIn
+			'number', // input	: meshNumRows
+			'string'  // input	: interpType
+		]
+	);
+	//}}}
+
+
+	/*
+		Call InterpFromGridToMesh module
+	*/
+	//{{{
+	InterpFromGridToMeshModule(
+		pdataMesh,
+		x,
+		y,
+		data,
+		xMesh,
+		yMesh,
+		defaultValue,
+		nods,
+		dataNumRowsIn,
+		dataNumColsIn,
+		meshNumRows,
+		interpType
+	);
+	//}}}
+
+
+	/*
+		Dynamic copying from heap
+	*/
+	//{{{
+	dataMeshPtr	= Module.getValue(pdataMesh, 'i32');
+	dataMesh	= Module.HEAPF64.slice(dataMeshPtr / 8, dataMeshPtr / 8 + nods);
+	//}}}
+
+
+	/*
+		Free resources
+	*/
+	//{{{
+	Module._free(pdataMesh);
+	//}}}
+
+
+	return dataMesh;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMesh2d/InterpFromMesh2d.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMesh2d/InterpFromMesh2d.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMesh2d/InterpFromMesh2d.cpp	(revision 27955)
@@ -0,0 +1,149 @@
+/*!\file InterpFromMesh2d.c
+ * \brief: data interpolation from a list of (x,y,values) into mesh vertices
+*/
+
+#include "./InterpFromMesh2d.h"
+
+void InterpFromMesh2dUsage(void){/*{{{*/
+	_printf0_("   usage:\n");
+	_printf0_("         data_prime=InterpFromMesh2d(index,x,y,data,x_prime,y_prime);\n");
+	_printf0_("      or data_prime=InterpFromMesh2d(index,x,y,data,x_prime,y_prime,default_value);\n");
+	_printf0_("      or data_prime=InterpFromMesh2d(index,x,y,data,x_prime,y_prime,default_value,contourname);\n");
+	_printf0_("   where:\n");
+	_printf0_("      x,y: coordinates of the nodes where data is defined\n");
+	_printf0_("      index: index of the mesh where data is defined\n");
+	_printf0_("      data - vector holding the data to be interpolated onto the points.\n");
+	_printf0_("      x_prime,y_prime: coordinates of the mesh vertices onto which we interpolate.\n");
+	_printf0_("      default_value: a scalar or vector of size length(x_prime).\n");
+	_printf0_("      contourname: linear interpolation will happen on all x_interp,y_interp inside the contour, default value will be adopted on the rest of the mesh.\n");
+	_printf0_("      data_prime:  vector of prime interpolated data.\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(InterpFromMesh2d_python){
+
+	/*input: */
+	int*    index_data=NULL;
+	int     index_data_rows;
+	int     dummy;
+	double* x_data=NULL;
+	int     x_data_rows;
+	double* y_data=NULL;
+	int     y_data_rows;
+	double* data=NULL; 
+	int     data_rows;
+	int     data_cols;
+	double* x_prime=NULL;
+	double* y_prime=NULL;
+	int     x_prime_rows;
+	int     y_prime_rows;
+	double* default_values=NULL;
+	int     num_default_values=0;
+
+	/*contours*/
+	int i;
+	#ifdef _HAVE_MATLAB_MODULES_
+	mxArray *matlabstructure = NULL;
+	#endif
+	Contour<double> **contours=NULL;
+	int numcontours;
+	Contour<double> *contouri=NULL;
+
+	/*Intermediary*/
+	int nods_data;
+	int nels_data;
+	int nods_prime;
+
+	/* output: */
+	IssmSeqVec<double> *data_prime = NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	#ifdef _HAVE_MATLAB_MODULES_
+	if(nlhs!=NLHS){
+		InterpFromMesh2dUsage();
+		_error_("InterpFromMeshToMesh2dUsage usage error");
+	}
+	#endif
+	if((nrhs!=6) && (nrhs!=7) && (nrhs!=8)){
+		InterpFromMesh2dUsage();
+		_error_("InterpFromMeshToMesh2dUsage usage error");
+	}
+
+	/*Input datasets: */
+	FetchData(&index_data,&index_data_rows,&dummy,INDEXHANDLE);
+	FetchData(&x_data,&x_data_rows,NULL,XHANDLE);
+	FetchData(&y_data,&y_data_rows,NULL,YHANDLE);
+	FetchData(&data,&data_rows,&data_cols,DATAHANDLE);
+	FetchData(&x_prime,&x_prime_rows,NULL,XPRIMEHANDLE);
+	FetchData(&y_prime,&y_prime_rows,NULL,YPRIMEHANDLE);
+
+	if(nrhs>=7){
+		/*default values: */
+		FetchData(&default_values,&num_default_values,DEFAULTHANDLE);
+	}
+	else{
+		default_values=NULL;
+		num_default_values=0;
+	}
+
+	if(nrhs==8){
+
+		#ifdef _HAVE_MATLAB_MODULES_
+		/*Call expread on filename to build a contour array in the matlab workspace: */
+		mexCallMATLAB( 1, &matlabstructure, 1, (mxArray**)&FILENAME, "expread");
+
+		/*contours: */
+		numcontours=mxGetNumberOfElements(matlabstructure);
+		contours=xNew<Contour<double> *>(numcontours);
+		for(i=0;i<numcontours;i++){
+			//allocate
+			contouri=new Contour<double>();
+			//retrieve dimension of this contour.
+			contouri->nods=(int)mxGetScalar(mxGetField(matlabstructure,i,"nods"));
+			//set pointers.
+			contouri->x=mxGetPr(mxGetField(matlabstructure,i,"x"));
+			contouri->y=mxGetPr(mxGetField(matlabstructure,i,"y"));
+			*(contours+i)=contouri;
+		}
+		#else
+		_error_("not supported");
+		#endif
+	}
+	else{
+		numcontours=0;
+		contours=NULL;
+	}
+
+	/*some checks*/
+	if (x_data_rows!=y_data_rows){
+		_error_("vectors x and y should have the same length!");
+	}
+	if (x_prime_rows!=y_prime_rows){
+		_error_("vectors x_prime and y_prime should have the same length!");
+	}
+
+	/*get number of elements and number of nodes in the data*/
+	nels_data=index_data_rows;
+	nods_data=x_data_rows;
+	nods_prime=x_prime_rows;
+
+	/* Run core computations: */
+	InterpFromMesh2dx(&data_prime,index_data,x_data,y_data,nods_data,nels_data,data,data_rows,x_prime,y_prime,nods_prime,default_values,num_default_values,contours,numcontours);
+
+	/*Write data: */
+	WriteData(DATAPRIME,data_prime);
+
+	/*end module: */
+	xDelete<int>(index_data);
+	xDelete<double>(x_data);
+	xDelete<double>(y_data);
+	xDelete<double>(data);
+	xDelete<double>(x_prime);
+	xDelete<double>(y_prime);
+	xDelete<double>(default_values);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMesh2d/InterpFromMesh2d.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMesh2d/InterpFromMesh2d.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMesh2d/InterpFromMesh2d.h	(revision 27955)
@@ -0,0 +1,59 @@
+/*!\file InterpFromMesh2d.h
+ * \brief: prototype for Data Interpolation mex module.
+ */
+
+#ifndef _INTERPFROMMESH2D_H
+#define _INTERPFROMMESH2D_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "InterpFromMesh2d"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define INDEXHANDLE   prhs[0]
+#define XHANDLE       prhs[1]
+#define YHANDLE       prhs[2]
+#define DATAHANDLE    prhs[3]
+#define XPRIMEHANDLE  prhs[4]
+#define YPRIMEHANDLE  prhs[5]
+#define DEFAULTHANDLE prhs[6]
+#define FILENAME      prhs[7]
+/* serial output macros: */
+#define DATAPRIME (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define INDEXHANDLE   PyTuple_GetItem(args,0)
+#define XHANDLE       PyTuple_GetItem(args,1)
+#define YHANDLE       PyTuple_GetItem(args,2)
+#define DATAHANDLE    PyTuple_GetItem(args,3)
+#define XPRIMEHANDLE  PyTuple_GetItem(args,4)
+#define YPRIMEHANDLE  PyTuple_GetItem(args,5)
+#define DEFAULTHANDLE PyTuple_GetItem(args,6)
+#define FILENAME      PyTuple_GetItem(args,7)
+/* serial output macros: */
+#define DATAPRIME output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+
+#endif  /* _INTERPFROMMESH2D_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToGrid/InterpFromMeshToGrid.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToGrid/InterpFromMeshToGrid.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToGrid/InterpFromMeshToGrid.cpp	(revision 27955)
@@ -0,0 +1,75 @@
+/*\file InterpFromMeshToGrid.c
+ *\brief: compute diff between observed and modeled velocity
+ */
+
+#include "./InterpFromMeshToGrid.h"
+
+void InterpFromMeshToGridUsage(void){/*{{{*/
+	_printf0_("INTERPFROMMESHTOGRID - interpolation of a data defined on a mesh onto a grid\n");
+	_printf0_("\n");
+	_printf0_("   This function is a multi-threaded mex file that interpolates a field\n");
+	_printf0_("   defined on a triangular mesh onto a regular grid\n");
+	_printf0_("\n");
+	_printf0_("   Usage:\n");
+	_printf0_("      grid=InterpFromMeshToGrid(index,x,y,data,x_grid,y_grid,default_value)\n");
+	_printf0_("\n");
+	_printf0_("      index,x,y: delaunay triangulation defining the mesh.\n");
+	_printf0_("      meshdata: vertex values of data to be interpolated.\n");
+	_printf0_("      xgrid,ygrid: parameters that define the grid\n");
+	_printf0_("      default_value: value of points located out of the mesh.\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(InterpFromMeshToGrid_python){
+
+	/*inputs */
+	int*    index=NULL;
+	double* x=NULL;
+	double* y=NULL;
+	int     nel,nods;
+	double* meshdata=NULL;
+	int     meshdata_length;
+	double* xgrid=NULL;
+	double* ygrid=NULL;
+	int     nlines,ncols,test;
+	double  default_value;
+
+	/* outputs */
+	double* griddata=NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	#ifdef _HAVE_MATLAB_MODULES_
+	CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&InterpFromMeshToGridUsage);
+	#endif
+
+	/*Input datasets: */
+	FetchData(&index,&nel,&test,INDEX);
+	if(test!=3) _error_("size not supported yet");
+	FetchData(&x,&nods,X);
+	FetchData(&y,&test,Y);
+	if(test!=nods) _error_("size not supported yet");
+	FetchData(&meshdata,&meshdata_length,MESHDATA);
+	FetchData(&xgrid,&ncols,XGRID); 
+	FetchData(&ygrid,&nlines,YGRID);
+	FetchData(&default_value,DEFAULTVALUE);
+
+	/*Call core of computation: */
+	InterpFromMeshToGridx(&griddata,index,x,y,nods,nel,meshdata,meshdata_length,xgrid,ygrid,nlines,ncols,default_value);
+
+	/*Write results: */
+	WriteData(GRIDDATA,griddata,nlines,ncols);
+
+	/*Free resources: */
+	xDelete<int>(index);
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<double>(meshdata);
+	xDelete<double>(griddata);
+	xDelete<double>(xgrid);
+	xDelete<double>(ygrid);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToGrid/InterpFromMeshToGrid.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToGrid/InterpFromMeshToGrid.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToGrid/InterpFromMeshToGrid.h	(revision 27955)
@@ -0,0 +1,61 @@
+/*
+	InterpFromMeshToGrid.h
+*/
+
+#ifndef _INTERPFROMMESHTOGRID_H
+#define _INTERPFROMMESHTOGRID_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/toolkits/toolkits.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../../c/shared/io/io.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "InterpFromMeshToGrid"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define INDEX        prhs[0]
+#define X            prhs[1]
+#define Y            prhs[2]
+#define MESHDATA     prhs[3]
+#define XGRID        prhs[4]
+#define YGRID        prhs[5]
+#define DEFAULTVALUE prhs[6]
+/* serial output macros: */
+#define GRIDDATA (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define INDEX        PyTuple_GetItem(args,0)
+#define X            PyTuple_GetItem(args,1)
+#define Y            PyTuple_GetItem(args,2)
+#define MESHDATA     PyTuple_GetItem(args,3)
+#define XGRID        PyTuple_GetItem(args,4)
+#define YGRID        PyTuple_GetItem(args,5)
+#define DEFAULTVALUE PyTuple_GetItem(args,10)
+/* serial output macros: */
+#define GRIDDATA output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  7
+
+#endif  /* _INTERPFROMMESHTOGRID_H*/
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp	(revision 27955)
@@ -0,0 +1,87 @@
+/*\file InterpFromMeshToMesh2d.c
+ *\brief: bamg module.
+ */
+#include "./InterpFromMeshToMesh2d.h"
+
+void InterpFromMeshToMesh2dUsage(void){/*{{{*/
+	_printf0_("INTERFROMMESHTOMESH2D - interpolation from a 2d triangular mesh onto a list of point\n");
+	_printf0_("\n");
+	_printf0_("   This function is a multi-threaded mex file that interpolates a field\n");
+	_printf0_("   defined on a Delaunay triangulation onto a list of point\n");
+	_printf0_("\n");
+	_printf0_("   Usage:\n");
+	_printf0_("         data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp);\n");
+	_printf0_("      or data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp,OPTIONS);\n");
+	_printf0_("\n");
+	_printf0_("      index             : index of the mesh where data is defined (e.g. md.mesh.elements)\n");
+	_printf0_("      x,y               : coordinates of the nodes where data is defined\n");
+	_printf0_("      data              : matrix holding the data to be interpolated onto the mesh. (one column per field)\n");
+	_printf0_("      x_interp,y_interp : coordinates of the points onto which we interpolate.\n");
+	_printf0_("      data_interp       : vector of mesh interpolated data.\n");
+	_printf0_("      Available options :\n");
+	_printf0_("         - 'default' : default value if point is outsite of triangulation (instead of linear interpolation)\n");
+	_printf0_("\n");
+	_printf0_("   Example:\n");
+	_printf0_("      load('temperature.mat');\n");
+	_printf0_("      md.initialization.temperature=InterpFromMeshToMesh2d(index,x,y,temperature,md.mesh.x,md.mesh.y);\n");
+	_printf0_("      md.initialization.temperature=InterpFromMeshToMesh2d(index,x,y,temperature,md.mesh.x,md.mesh.y,'default',253);\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(InterpFromMeshToMesh2d_python){
+
+	/*Intermediaties*/
+	int*     index              = NULL;
+	double*  x_data             = NULL;
+	double*  y_data             = NULL;
+	double*  data               = NULL;
+	int      nods_data,nels_data;
+	int      M_data,N_data;
+	double*  x_interp           = NULL;
+	double*  y_interp           = NULL;
+	int      N_interp;
+	Options* options   = NULL;
+	double*  data_interp = NULL;
+	int      test1,test2,test;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on output arguments on the matlab side: */
+	#ifdef _HAVE_MATLAB_MODULES_
+	if(nlhs!=NLHS){
+		InterpFromMeshToMesh2dUsage();
+		_error_("InterpFromMeshToMesh2dUsage usage error");
+	}
+	#endif
+	/*check on input arguments: */
+	if(nrhs<NRHS){
+		InterpFromMeshToMesh2dUsage();
+		_error_("InterpFromMeshToMesh2dUsage usage error");
+	}
+
+	/*Fetch inputs: */
+	FetchData(&index,&nels_data,&test,INDEX); if(test!=3) _error_("index should have 3 columns");
+	FetchData(&x_data,&nods_data,X);          if(nods_data<3) _error_("there should be at least three points");
+	FetchData(&y_data,&test,Y);               if(test!=nods_data) _error_("vectors x and y should have the same length");
+	FetchData(&data,&M_data,&N_data,DATA);    if(M_data*N_data<1) _error_("data is empty");
+	FetchData(&x_interp,&N_interp,XINTERP);   if(N_interp<1) _error_("no interpolation requested");
+	FetchData(&y_interp,&test,YINTERP);       if(test!=N_interp) _error_("vectors x_interp and y_interp should have the same length");
+	FetchData(&options,NRHS,nrhs,ARGUMENTS);
+
+	/*Run core computations*/
+	InterpFromMeshToMesh2dx(&data_interp,index,x_data,y_data,nods_data,nels_data,data,M_data,N_data,x_interp,y_interp,N_interp,options);
+
+	/*Write data: */
+	WriteData(DATAINTERP,data_interp,N_interp,N_data);
+
+	/*end module: */
+	xDelete<int>(index);
+	xDelete<double>(x_data);
+	xDelete<double>(y_data);
+	xDelete<double>(data);
+	xDelete<double>(x_interp);
+	xDelete<double>(y_interp);
+	xDelete<double>(data_interp);
+	delete options;
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.h	(revision 27955)
@@ -0,0 +1,77 @@
+/*!\file InterpFromMeshToMesh2d.h
+ * \brief: prototype for Data Interpolation mex module.
+ */
+
+#ifndef _INTERPFROMMESHTOMESH2d_H
+#define _INTERPFROMMESHTOMESH2d_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+/*Header files: */
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/toolkits/toolkits.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../../c/shared/io/io.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "InterpFromMeshToMesh2d"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define INDEX     prhs[0]
+#define X         prhs[1]
+#define Y         prhs[2]
+#define DATA      prhs[3]
+#define XINTERP   prhs[4]
+#define YINTERP   prhs[5]
+#define ARGUMENTS prhs 
+/* serial output macros: */
+#define DATAINTERP (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define INDEX          PyTuple_GetItem(args,0)
+#define X              PyTuple_GetItem(args,1)
+#define Y              PyTuple_GetItem(args,2)
+#define DATA           PyTuple_GetItem(args,3)
+#define XINTERP        PyTuple_GetItem(args,4)
+#define YINTERP        PyTuple_GetItem(args,5)
+#define ARGUMENTS args
+/* serial output macros: */
+#define DATAINTERP output,0
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define INDEX          indexin,nelin,3
+#define X              xin,nodsin
+#define Y              yin,nodsin
+#define DATA           datain,nodsin,1
+#define XINTERP        x_interpin, nods_interpin
+#define YINTERP        y_interpin, nods_interpin
+#define ARGUMENTS "default_value",default_value
+/* serial output macros: */
+#define DATAINTERP pdata_interp,NULL,NULL
+#define WRAPPER(modulename) extern "C" { int  InterpFromMeshToMesh2dModule(double** pdata_interp,int* indexin,double* xin,double* yin,double* datain,double* x_interpin,double* y_interpin,int nelin,int nodsin,int nods_interpin,double default_value)
+#define nrhs  6
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  6
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.js	(revision 27955)
@@ -0,0 +1,78 @@
+function InterpFromMeshToMesh2d(indexin,xin,yin,datain,x_interpin,y_interpin){
+
+/* INTERFROMMESHTOMESH2D - interpolation from a 2d triangular mesh onto a list of point
+  
+  This function interpolates a field defined on a Delaunay triangulation onto a list of points.
+
+  Usage:
+	  var data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp); or
+	  var data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp,default_value);
+
+	  index             : index of the mesh where data is defined
+	  x,y               : coordinates of the nodes where data is defined
+	  data              : matrix holding the data to be interpolated onto the mesh. (one column per field)
+	  x_interp,y_interp : coordinates of the points onto which we interpolate.
+	  default_value     : default value if point is outsite of triangulation (instead of linear interpolation)
+	  data_interp       : vector of mesh interpolated data.
+
+*/
+
+	/*Figure out default_value: */
+	if (arguments.length==7)default_value=arguments[6];
+	else default_value=0;
+	
+	//Dynamic allocations: {{{
+	//Retrieve elements and allocate on Module heap: 
+	
+	//input
+	
+	var dindex=new Int32Array(MatrixToList(indexin)); var nindex=dindex.length * dindex.BYTES_PER_ELEMENT;
+	var dindexPtr= Module._malloc(nindex); var indexHeap = new Uint8Array(Module.HEAPU8.buffer,dindexPtr,nindex);
+	indexHeap.set(new Uint8Array(dindex.buffer)); var index=indexHeap.byteOffset;
+
+	var dx=new Float64Array(xin); var nx=dx.length * dx.BYTES_PER_ELEMENT;
+	var dxPtr= Module._malloc(nx); var dxHeap = new Uint8Array(Module.HEAPU8.buffer,dxPtr,nx);
+	dxHeap.set(new Uint8Array(dx.buffer)); var x=dxHeap.byteOffset;
+	
+	var dy=new Float64Array(yin); var ny=dy.length * dy.BYTES_PER_ELEMENT;
+	var dyPtr= Module._malloc(nx); var dyHeap = new Uint8Array(Module.HEAPU8.buffer,dyPtr,ny);
+	dyHeap.set(new Uint8Array(dy.buffer)); var y=dyHeap.byteOffset;
+	
+	var ddata=new Float64Array(datain); var ndata=ddata.length * ddata.BYTES_PER_ELEMENT;
+	var ddataPtr= Module._malloc(ndata); var ddataHeap = new Uint8Array(Module.HEAPU8.buffer,ddataPtr,ndata);
+	ddataHeap.set(new Uint8Array(ddata.buffer)); var data=ddataHeap.byteOffset;
+	
+	var dx_interp=new Float64Array(x_interpin); var nx_interp=dx_interp.length * dx_interp.BYTES_PER_ELEMENT;
+	var dx_interpPtr= Module._malloc(nx_interp); var dx_interpHeap = new Uint8Array(Module.HEAPU8.buffer,dx_interpPtr,nx_interp);
+	dx_interpHeap.set(new Uint8Array(dx_interp.buffer)); var x_interp=dx_interpHeap.byteOffset;
+	
+	var dy_interp=new Float64Array(y_interpin); var ny_interp=dy_interp.length * dy_interp.BYTES_PER_ELEMENT;
+	var dy_interpPtr= Module._malloc(ny_interp); var dy_interpHeap = new Uint8Array(Module.HEAPU8.buffer,dy_interpPtr,ny_interp);
+	dy_interpHeap.set(new Uint8Array(dy_interp.buffer)); var y_interp=dy_interpHeap.byteOffset;
+	
+	nel=indexin.length;
+	nods=xin.length;
+	nods_interp=x_interpin.length;
+
+	//output
+	var data_interp;
+	var pdata_interp= Module._malloc(4); 
+	//}}}
+
+	//Declare InterpFromMeshToMesh2d module: 
+	InterpFromMeshToMesh2dModule = Module.cwrap('InterpFromMeshToMesh2dModule','number',['number','number','number','number','number','number','number','number','number','number','number']);
+	
+	//Call InterpFromMeshToMesh2d module: 
+	InterpFromMeshToMesh2dModule(pdata_interp,index,x,y,data,x_interp,y_interp,nel,nods,nods_interp,default_value);
+	
+	/*Dynamic copying from heap: {{{*/
+	//recover mesh: 
+	var data_interpptr = Module.getValue(pdata_interp,'i32');
+	data_interp = Module.HEAPF64.slice(data_interpptr /8, data_interpptr/8 + nods_interp);
+	/*}}}*/
+
+	/*Free resources: */
+	Module._free(pdata_interp); 
+
+	return data_interp;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.cpp	(revision 27955)
@@ -0,0 +1,114 @@
+/*!\file InterpFromMeshToMesh3d.c
+ * \brief: data interpolation from a list of (x,y,values) into mesh vertices
+*/
+
+#include "./InterpFromMeshToMesh3d.h"
+
+void InterpFromMeshToMesh3dUsage(void){/*{{{*/
+	_printf0_("INTERPFROMMESHTOMESH3D - interpolation from a 3d hexahedron mesh onto a list of point\n");
+	_printf0_("\n");
+	_printf0_("   This function is a multi-threaded mex file that interpolates a field\n");
+	_printf0_("   defined on a triangular mesh onto a list of point\n");
+	_printf0_("\n");
+	_printf0_("   Usage:\n");
+	_printf0_("      data_prime=InterpFromMeshToMesh3d(index,x,y,z,data,x_prime,y_prime,z_prime,default_value);\n");
+	_printf0_("\n");
+	_printf0_("      index: index of the mesh where data is defined\n");
+	_printf0_("      x,y,z: coordinates of the nodes where data is defined\n");
+	_printf0_("      data: matrix holding the data to be interpolated onto the mesh.\n");
+	_printf0_("      x_prime,y_prime,z_prime: coordinates of the points onto which we interpolate.\n");
+	_printf0_("      default_value: default value if no data is found (holes).\n");
+	_printf0_("      data_prime: vector of mesh interpolated data.\n");
+	_printf0_("\n");
+	_printf0_("   Example:\n");
+	_printf0_("      load('temperature.mat');\n");
+	_printf0_("      md.initialization.temperature=InterpFromMeshToMesh3d(index,x,y,z,temperature,md.mesh.x,md.mesh.y,md.mesh.z,253);\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(InterpFromMeshToMesh3d_python){
+
+	/*input: */
+	double* index_data=NULL;
+	int     index_data_rows;
+
+	double* x_data=NULL;
+	double* y_data=NULL;
+	double* z_data=NULL;
+
+	int     x_data_rows;
+	int     y_data_rows;
+	int     z_data_rows;
+
+	double* data=NULL; 
+	int     data_rows;
+	int     data_cols;
+
+	double* x_prime=NULL;
+	double* y_prime=NULL;
+	double* z_prime=NULL;
+
+	int     x_prime_rows;
+	int     y_prime_rows;
+	int     z_prime_rows;
+
+	double  default_value;
+
+	/*Intermediary*/
+	int nods_data;
+	int nels_data;
+	int nods_prime;
+
+	/* output: */
+	IssmSeqVec<double>*  data_prime=NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	#ifdef _HAVE_MATLAB_MODULES_
+	CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&InterpFromMeshToMesh3dUsage);
+	#endif
+
+	/*Input datasets: */
+	FetchData(&index_data,&index_data_rows,NULL,INDEXHANDLE);
+	FetchData(&x_data,&x_data_rows,NULL,XHANDLE);
+	FetchData(&y_data,&y_data_rows,NULL,YHANDLE);
+	FetchData(&z_data,&z_data_rows,NULL,ZHANDLE);
+	FetchData(&data,&data_rows,&data_cols,DATAHANDLE);
+	FetchData(&x_prime,&x_prime_rows,NULL,XPRIMEHANDLE);
+	FetchData(&y_prime,&y_prime_rows,NULL,YPRIMEHANDLE);
+	FetchData(&z_prime,&z_prime_rows,NULL,ZPRIMEHANDLE);
+	FetchData(&default_value,DEFAULTHANDLE);
+
+	/*some checks*/
+	if (x_data_rows!=y_data_rows || x_data_rows!=z_data_rows){
+		_error_("vectors x, y and z should have the same length!");
+	}
+	if (x_prime_rows!=y_prime_rows || x_prime_rows!=z_prime_rows){
+		_error_("vectors x_prime, y_prime and z_prime should have the same length!");
+	}
+	/*get number of elements and number of nodes in the data*/
+	nels_data=index_data_rows;
+	nods_data=x_data_rows;
+	nods_prime=x_prime_rows;
+
+	/* Run core computations: */
+	InterpFromMeshToMesh3dx(&data_prime,index_data,x_data,y_data,z_data,nods_data,nels_data,data,data_rows,x_prime,y_prime,z_prime,nods_prime,default_value);
+
+	/*Write data: */
+	WriteData(DATAPRIME,data_prime);
+
+	/*end module: */
+	xDelete<double>(index_data);
+	xDelete<double>(x_data);
+	xDelete<double>(y_data);
+	xDelete<double>(z_data);
+	xDelete<double>(data);
+	xDelete<double>(x_prime);
+	xDelete<double>(y_prime);
+	xDelete<double>(z_prime);
+	delete data_prime;
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.h	(revision 27955)
@@ -0,0 +1,63 @@
+/*!\file InterpFromMeshToMesh3d.h
+ * \brief: prototype for Data Interpolation mex module.
+ */
+
+#ifndef _INTERPFROMMESH3D_H
+#define _INTERPFROMMESH3D_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "InterpFromMeshToMesh3d"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define INDEXHANDLE   prhs[0]
+#define XHANDLE       prhs[1]
+#define YHANDLE       prhs[2]
+#define ZHANDLE       prhs[3]
+#define DATAHANDLE    prhs[4]
+#define XPRIMEHANDLE  prhs[5]
+#define YPRIMEHANDLE  prhs[6]
+#define ZPRIMEHANDLE  prhs[7]
+#define DEFAULTHANDLE prhs[8]
+/* serial output macros: */
+#define DATAPRIME (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define INDEXHANDLE   PyTuple_GetItem(args,0)
+#define XHANDLE       PyTuple_GetItem(args,1)
+#define YHANDLE       PyTuple_GetItem(args,2)
+#define ZHANDLE       PyTuple_GetItem(args,3)
+#define DATAHANDLE    PyTuple_GetItem(args,4)
+#define XPRIMEHANDLE  PyTuple_GetItem(args,5)
+#define YPRIMEHANDLE  PyTuple_GetItem(args,6)
+#define ZPRIMEHANDLE  PyTuple_GetItem(args,7)
+#define DEFAULTHANDLE PyTuple_GetItem(args,8)
+/* serial output macros: */
+#define DATAPRIME output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  9
+
+#endif  /* _INTERPFROMMESHTOMESH3D_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/Issm/issm.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/Issm/issm.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/Issm/issm.cpp	(revision 27955)
@@ -0,0 +1,49 @@
+/*!\file:  issm.cpp
+ * \brief: ISSM main program
+ */ 
+
+#include "../../c/main/issm.h"
+
+extern "C" { 
+	int IssmModule(char** poutput,int* poutputsize, double* buffer, int buffersize, char* toolkits,char* solution,char* modelname){
+
+		/*output variables:*/
+		char* output=NULL;
+		size_t size;
+
+		/*Initialize exception trapping: */
+		ExceptionTrapBegin();
+
+		/*Initialize environment: */
+		ISSM_MPI_Comm comm_init=EnvironmentInit(0,NULL);
+
+		/*Initialize femmodel from arguments provided command line: */
+		FemModel *femmodel = new FemModel(buffer,buffersize,toolkits,solution,modelname,comm_init);
+
+		/*Solve: */
+		femmodel->Solve();
+
+		/*Output results: */
+		OutputResultsx(femmodel);
+
+		/*Wrap up: */
+		femmodel->CleanUpJs(&output,&size);
+
+		/*Delete Model: */
+		delete femmodel;
+		
+		/*Finalize environment:*/
+		EnvironmentFinalize();
+
+		/*Finalize exception trapping: */
+		ExceptionTrapEnd();
+
+		/*Assign output pointers:*/
+		*poutputsize=(int)size;
+		*poutput=output;
+
+		/*Return output stream: */
+		return 0 ;
+
+	} 
+} //extern "C" 
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/Issm/issm.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/Issm/issm.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/Issm/issm.js	(revision 27955)
@@ -0,0 +1,38 @@
+function issm(fid,toolkitstring,solutionstring,modelname){
+/*issm 
+	   usage: var output = issm(fid,toolkitstring);
+	      where: fid is a pointer to a memory buffer created by marshall, toolkitstring is a toolkits 
+		  string created by ToolkitsToFile and 
+		  output is a binary buffer to be read by loadresultsfromcluster.
+*/
+	
+	/*variables: */
+	var poutput,output,poutputsize,outputsize;
+	var dbinaryPtr,binHeap,binary,binarybuffer,nb
+
+	/*recover input buffer: */
+	binarybuffer=fid.rawbuffer(); //binarybuffer is now an arraybuffer
+	nb = fid.ptr; //size of array buffer in bytes.
+
+	/*dyanmically allocate the raw buffer onto the Module heap: */
+	dbinaryPtr= Module._malloc(nb); binHeap = new Uint8Array(Module.HEAPU8.buffer,dbinaryPtr,nb);
+	binHeap.set(new Uint8Array(binarybuffer)); binary=binHeap.byteOffset;
+
+	/*allocate output pointers: */
+	poutputsize = Module._malloc(4); 
+	poutput = Module._malloc(4); 
+
+	//Declare TriMesh module: 
+	issmmodule= Module.cwrap('IssmModule','number',['number','number','number','number','string','string','string']);
+	
+	//Call issm:
+	issmmodule(poutput, poutputsize,binary, nb, toolkitstring,solutionstring,modelname);
+
+	//recover outputs from pointers: 
+	var outputsize = Module.getValue(poutputsize,'i32');
+	
+	var outputptr = Module.getValue(poutput,'i32');
+	output = Module.HEAP8.slice(outputptr, outputptr + outputsize);
+	
+	return [output,outputsize];
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/IssmConfig/IssmConfig.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/IssmConfig/IssmConfig.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/IssmConfig/IssmConfig.cpp	(revision 27955)
@@ -0,0 +1,192 @@
+/*\file IssmConfig.c
+ *\brief: get configuration names
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./IssmConfig.h"
+
+void IssmConfigUsage(void){/*{{{*/
+	_printf0_("\n");
+	_printf0_("   usage: " << __FUNCT__ << "value = IssmConfig('string');\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(IssmConfig_python){
+
+	/*input/output*/
+	char       *name     = NULL;
+	bool        isstring = false;
+	IssmDouble  value    = 0.;
+	char       *svalue   = NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments: */
+	CHECKARGUMENTS(NLHS,NRHS,&IssmConfigUsage);
+
+	/*Fetch inputs: */
+	FetchData(&name,NAME);
+
+	/*Core*/
+	if(strcmp(name,"_HAVE_MPI_")==0){
+		#ifdef _HAVE_MPI_
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_HAVE_PETSC_MPI_")==0){
+		#ifdef _HAVE_PETSC_MPI_
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_HAVE_DAKOTA_")==0){
+		#ifdef _HAVE_DAKOTA_
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_HAVE_MUMPS_")==0){
+		#ifdef _HAVE_MUMPS_
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_HAVE_GSL_")==0){
+		#ifdef _HAVE_GSL_
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_HAVE_TAO_")==0){
+		#ifdef _HAVE_TAO_
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_HAVE_M1QN3_")==0){
+		#ifdef _HAVE_M1QN3_
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_HAVE_ADOLC_")==0){
+		#ifdef _HAVE_ADOLC_
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_HAVE_CODIPACK_")==0){
+		#ifdef _HAVE_CODIPACK_
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_HAVE_PETSC_")==0){
+		#ifdef _HAVE_PETSC_
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_PETSC_MAJOR_")==0){
+		#ifdef _PETSC_MAJOR_
+		value = IssmDouble(_PETSC_MAJOR_);
+		#else
+		_error_("_PETSC_MAJOR_ not found in config.h");
+		#endif
+	}
+	else if(strcmp(name,"_PETSC_MINOR_")==0){
+		#ifdef _PETSC_MINOR_
+		value = IssmDouble(_PETSC_MINOR_);
+		#else
+		_error_("_PETSC_MINOR_ not found in config.h");
+		#endif
+	}
+	else if(strcmp(name,"_PETSC_HAVE_CUDA_")==0){
+		value = 0.;
+		#ifdef PETSC_HAVE_CUDA
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_PETSC_HAVE_PASTIX_")==0){
+		value = 0.;
+		#ifdef PETSC_HAVE_PASTIX
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_DAKOTA_VERSION_")==0){
+		#ifdef _DAKOTA_VERSION_
+		isstring = true;
+		svalue =xNew<char>(strlen(_DAKOTA_VERSION_)+1);
+		xMemCpy<char>(svalue,_DAKOTA_VERSION_,(strlen(_DAKOTA_VERSION_)+1));
+		#else
+		_error_("_DAKOTA_VERSION_ not found in config.h");
+		#endif
+	}
+	else if(strcmp(name,"ISSM_PREFIX")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(ISSM_PREFIX)+1);
+		xMemCpy<char>(svalue,ISSM_PREFIX,(strlen(ISSM_PREFIX)+1));
+	}
+	else if(strcmp(name,"PACKAGE_NAME")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(PACKAGE_NAME)+1);
+		xMemCpy<char>(svalue,PACKAGE_NAME,(strlen(PACKAGE_NAME)+1));
+	}
+	else if(strcmp(name,"PACKAGE_VERSION")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(PACKAGE_VERSION)+1);
+		xMemCpy<char>(svalue,PACKAGE_VERSION,(strlen(PACKAGE_VERSION)+1));
+	}
+	else if(strcmp(name,"PACKAGE_URL")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(PACKAGE_URL)+1);
+		xMemCpy<char>(svalue,PACKAGE_URL,(strlen(PACKAGE_URL)+1));
+	}
+	else if(strcmp(name,"PACKAGE_BUGREPORT")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(PACKAGE_BUGREPORT)+1);
+		xMemCpy<char>(svalue,PACKAGE_BUGREPORT,(strlen(PACKAGE_BUGREPORT)+1));
+	}
+	else if(strcmp(name,"PACKAGE_BUILD_DATE")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(PACKAGE_BUILD_DATE)+1);
+		xMemCpy<char>(svalue,PACKAGE_BUILD_DATE,(strlen(PACKAGE_BUILD_DATE)+1));
+	}
+	else if(strcmp(name,"HOST_OS")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(HOST_OS)+1);
+		xMemCpy<char>(svalue,HOST_OS,(strlen(HOST_OS)+1));
+	}
+	else if(strcmp(name,"USER_NAME")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(USER_NAME)+1);
+		xMemCpy<char>(svalue,USER_NAME,(strlen(USER_NAME)+1));
+	}
+	else if(strcmp(name,"HOST_VENDOR")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(HOST_VENDOR)+1);
+		xMemCpy<char>(svalue,HOST_VENDOR,(strlen(HOST_VENDOR)+1));
+	}
+	else if(strcmp(name,"HOST_OS")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(HOST_OS)+1);
+		xMemCpy<char>(svalue,HOST_OS,(strlen(HOST_OS)+1));
+	}
+	else if(strcmp(name,"HOST_ARCH")==0){
+		isstring = true;
+		svalue =xNew<char>(strlen(HOST_ARCH)+1);
+		xMemCpy<char>(svalue,HOST_ARCH,(strlen(HOST_ARCH)+1));
+	}
+	else{
+		_error_("variable " << name << " not supported yet");
+	}
+
+	/* output: */
+	if(isstring)
+	 WriteData(SVALUE,svalue);
+	else
+	 WriteData(VALUE,value);
+
+	/*Clean up*/
+	xDelete<char>(name);
+	xDelete<char>(svalue);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/IssmConfig/IssmConfig.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/IssmConfig/IssmConfig.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/IssmConfig/IssmConfig.h	(revision 27955)
@@ -0,0 +1,59 @@
+/*!\file:  IssmConfig.h
+ * \brief header file for IssmConfig module.
+ */ 
+
+#ifndef _ISSMCONFIG_H
+#define _ISSMCONFIG_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+/*Header files: */
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "IssmConfig"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define NAME (mxArray*)prhs[0]
+/* serial output macros: */
+#define VALUE (mxArray**)&plhs[0]
+#define SVALUE (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define NAME PyTuple_GetItem(args,0)
+/* serial output macros: */
+#define VALUE output,0
+#define SVALUE output,0
+#endif
+
+
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define NAME string
+/* serial output macros: */
+#define VALUE pvalue
+#define SVALUE psvalue
+#define WRAPPER(modulename) extern "C" { int IssmConfigModule(double* pvalue, char** psvalue, char* string)
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  1
+
+#endif  /* _TEST_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/IssmConfig/IssmConfig.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/IssmConfig/IssmConfig.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/IssmConfig/IssmConfig.js	(revision 27955)
@@ -0,0 +1,24 @@
+function IssmConfig(string){
+/*IssmConfig 
+	   usage: var config = IssmConfig('_HAVE_PETSC_');
+*/
+
+	//output
+	var pvalue= Module._malloc(4); 
+	var psvalue= Module._malloc(4); 
+
+	//Declare IssmConfig module: 
+	IssmConfigModule = Module.cwrap('IssmConfigModule','number',['number','string','string']);
+	
+	//Call IssmConfig module: 
+	IssmConfigModule(pvalue, psvalue, string);
+	
+	/*Dynamic copying from heap: {{{*/
+	var value = Module.getValue(pvalue, 'double');
+	/*}}}*/
+
+	/*Free resources: */
+	Module._free(pvalue); 
+
+	return value;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/Kriging/Kriging.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/Kriging/Kriging.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/Kriging/Kriging.cpp	(revision 27955)
@@ -0,0 +1,78 @@
+/*\file Kriging.c
+ *\brief: best linear predictor
+ */
+#include "./Kriging.h"
+
+void KrigingUsage(void){/*{{{*/
+	int num=1;
+#ifdef _MULTITHREADING_
+	num=_NUMTHREADS_;
+#endif
+	_printf0_("\n");
+	_printf0_("   usage: predictions=" << __FUNCT__ << "(x,y,observations,x_interp,y_interp,'options');\n");
+	_printf0_("   available options:\n");
+	_printf0_("      -'model': Available variogram models 'gaussian' (default),'spherical','power','exponential'\n");
+	_printf0_("         -'nugget': nugget effect (default 0.2)\n");
+	_printf0_("         -'range':  for gaussian, spherical and exponential models (default sqrt(3))\n");
+	_printf0_("         -'sill':   for gaussian, spherical and exponential models (default 1)\n");
+	_printf0_("         -'slope':  for power model (default 1)\n");
+	_printf0_("         -'power':  for power model (default 1)\n");
+	_printf0_("      -'searchradius': search radius for each prediction (default is observations span)\n");
+	_printf0_("      -'boxlength':    minimum length of quadtree boxes (useful to decrease the number of observations)\n");
+	_printf0_("      -'maxdata':      minimum number of observations for a prediction (default is 50)\n");
+	_printf0_("      -'mindata':      maximum number of observations for a prediction (default is 1)\n");
+	_printf0_("      -'maxtrimming':  maximum trimming value (default is -1.e+21)\n");
+	_printf0_("      -'mintrimming':  minimum trimming value (default is +1.e+21)\n");
+	_printf0_("      -'minspacing':   minimum distance between observation (default is 0.01)\n");
+	_printf0_("      -'numthreads':   number of threads, default is "<<num << "\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(Kriging_python){
+
+	/*Outputs*/
+	double  *x            = NULL;
+	double  *y            = NULL;
+	double  *observations = NULL;
+	double  *x_interp     = NULL;
+	double  *y_interp     = NULL;
+	double  *predictions  = NULL;
+	double  *error        = NULL;
+	Options *options      = NULL;
+	int      N_interp,M_interp,M,N,n_obs;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	if (nrhs<NRHS || nlhs>NLHS){
+		KrigingUsage(); _error_("Kriging usage error");
+	}
+
+	/*Fetch inputs: */
+	FetchData(&x,&n_obs,X);
+	FetchData(&y,&N,Y);                       if(n_obs!=N) _error_("x and y should have the same size");
+	FetchData(&observations,&N,OBSERVATIONS); if(n_obs!=N) _error_("x and observations should have the same size");
+	FetchData(&x_interp,&M_interp,&N_interp,XINTERP);
+	FetchData(&y_interp,&M,&N,YINTERP);       if(N!=N_interp || M!=M_interp) _error_("x_interp and y_interp should have the same size");
+	FetchData(&options,NRHS,nrhs,prhs);
+
+	/*Call x layer*/
+	Krigingx(&predictions,&error,x,y,observations,n_obs,x_interp,y_interp,M_interp*N_interp,options);
+
+	/*Generate output Matlab Structures*/
+	if(nlhs>=1) WriteData(PREDICTIONS,predictions,M_interp,N_interp);
+	if(nlhs==2) WriteData(ERROR,error,M_interp,N_interp);
+
+	/*Free resources: */
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<double>(observations);
+	xDelete<double>(x_interp);
+	xDelete<double>(y_interp);
+	xDelete<double>(predictions);
+	xDelete<double>(error);
+	delete options;
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/Kriging/Kriging.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/Kriging/Kriging.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/Kriging/Kriging.h	(revision 27955)
@@ -0,0 +1,59 @@
+/*
+	Kriging.h
+*/
+
+#ifndef _KRIGING_H_
+#define _KRIGING_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "Kriging"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define X            prhs[0]
+#define Y            prhs[1]
+#define OBSERVATIONS prhs[2]
+#define XINTERP      prhs[3]
+#define YINTERP      prhs[4]
+
+/* serial output macros: */
+#define PREDICTIONS (mxArray**)&plhs[0]
+#define ERROR       (mxArray**)&plhs[1]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define X            PyTuple_GetItem(args,0)
+#define Y            PyTuple_GetItem(args,1)
+#define OBSERVATIONS PyTuple_GetItem(args,2)
+#define XINTERP      PyTuple_GetItem(args,3)
+#define YINTERP      PyTuple_GetItem(args,4)
+
+/* serial output macros: */
+#define PREDICTIONS output,0
+#define ERROR       output,1
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  2
+#undef NRHS
+#define NRHS  5
+
+#endif  /* _KRIGING_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/M1qn3/M1qn3.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/M1qn3/M1qn3.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/M1qn3/M1qn3.cpp	(revision 27955)
@@ -0,0 +1,167 @@
+/*!\file M1qn3.c
+ * \brief: data interpolation from a list of (x,y,values) into mesh vertices
+*/
+
+#include "./M1qn3.h"
+
+#ifdef _HAVE_M1QN3_
+/*m1qn3 prototypes {{{*/
+extern "C" void *ctonbe_; // DIS mode : Conversion
+extern "C" void *ctcabe_; // DIS mode : Conversion
+extern "C" void *euclid_; // Scalar product
+typedef void (*SimulFunc) (long* indic,long* n, double* x, double* pf,double* g,long [],float [],void* dzs);
+extern "C" void m1qn3_ (void f(long* indic,long* n, double* x, double* pf,double* g,long [],float [],void* dzs),
+			void **, void **, void **,
+			long *, double [], double *, double [], double*, double *,
+			double *, char [], long *, long *, long *, long *, long *, long *, long [], double [], long *,
+			long *, long *, long [], float [],void* );
+/*Cost function prototype*/
+void fakesimul(long* indic,long* n,double* X,double* pf,double* G,long izs[1],float rzs[1],void* dzs);
+typedef struct {
+	int priorn; 
+	int counter; 
+	double* Gs; 
+	double* Xs;
+	double* Js;
+} Data; 
+/*}}}*/
+void M1qn3Usage(void){/*{{{*/
+	_printf0_("   usage:\n");
+	_printf0_("         X=M1qn3(Xs,Gs);\n");
+	_printf0_("   where:\n");
+	_printf0_("      Xs are the X values (m x n, where m is the number of independents, n the number of evaluations previously carried out on X)\n");
+	_printf0_("      Gs are the G (gradient) values (m x n, where m is the number of independents, n the number of evaluations previously carried out on X,G)\n");
+	_printf0_("      X - the new direction.\n");
+	_printf0_("\n");
+}/*}}}*/
+#endif
+WRAPPER(M1qn3_python){
+
+	/*Boot module: */
+	MODULEBOOT();
+
+#ifdef _HAVE_M1QN3_
+	/*input: */
+	double* Xs=NULL;
+	double* Gs=NULL;
+	double* Js=NULL;
+	int     intn;
+	int     priorn;
+	Data    data_struct;
+
+	/* output: */
+	double* X_out = NULL;
+
+	/*intermediary: */
+	double f;
+	double dxmin=0.01;
+	double gttol=0.0001;
+	long   omode;
+
+	/*checks on arguments on the matlab side: */
+	if(nlhs!=NLHS || nrhs!=3){
+		M1qn3Usage();
+		_error_("M1qn3 usage error");
+	}
+
+	/*Input datasets: */
+	FetchData(&Xs,&intn,&priorn,XHANDLE);
+	FetchData(&Gs,&intn,&priorn,GHANDLE);
+	FetchData(&Js,&priorn,JHANDLE);
+
+	/*Initialize M1QN3 parameters*/
+	SimulFunc costfuncion  = &fakesimul;  /*Cost function address*/
+	void**    prosca       = &euclid_;  /*Dot product function (euclid is the default)*/
+	char      normtype[]   = "dfn";     /*Norm type: dfn = scalar product defined by prosca*/
+	long      izs[5];                   /*Arrays used by m1qn3 subroutines*/
+	long      iz[5];                    /*Integer m1qn3 working array of size 5*/
+	float     rzs[1];                   /*Arrays used by m1qn3 subroutines*/
+	long      impres       = 0;         /*verbosity level*/
+	long      imode[3]     = {0};       /*scaling and starting mode, 0 by default*/
+	long      indic        = 4;         /*compute f and g*/
+	long      reverse      = 0;         /*reverse or direct mode*/
+	long      io           = 6;         /*Channel number for the output*/
+
+	/*Optimization criterions*/
+	long niter = long(intn); /*Maximum number of iterations*/
+	long nsim  = long(intn); /*Maximum number of function calls*/
+
+	/*Get problem dimension and initialize X, G and f: */
+	long n = long(intn);
+	IssmPDouble* G = xNew<IssmPDouble>(n); for (int i=0;i<n;i++)G[i]=Gs[i*priorn+0];
+	IssmPDouble* X = xNew<IssmPDouble>(n); for (int i=0;i<n;i++)X[i]=Xs[i*priorn+0];
+	f = Js[0];
+	
+	/*Allocate m1qn3 working arrays (see doc)*/
+	long      m   = 100;
+	long      ndz = 4*n+m*(2*n+1);
+	double*   dz  = xNew<double>(ndz);
+	double f1=f;
+
+	/*Initialize: */
+	data_struct.priorn=priorn;
+	data_struct.counter=0;
+	data_struct.Gs=Gs;
+	data_struct.Js=Js;
+	data_struct.Xs=Xs;
+
+	m1qn3_(costfuncion,prosca,&ctonbe_,&ctcabe_,
+				&n,X,&f,G,&dxmin,&f1,
+				&gttol,normtype,&impres,&io,imode,&omode,&niter,&nsim,iz,dz,&ndz,
+				&reverse,&indic,izs,rzs,(void*)&data_struct);
+
+	switch(int(omode)){
+		case 0: /* _printf0_("   Stop requested\n");*/ break;
+		case 1:  _printf0_("   Convergence reached (gradient satisfies stopping criterion)\n"); break;
+		case 2:  _printf0_("   Bad initialization\n"); break;
+		case 3:  _printf0_("   Line search failure\n"); break;
+		case 4:  _printf0_("   Maximum number of iterations exceeded\n");break;
+		case 5:  _printf0_("   Maximum number of function calls exceeded\n"); break;
+		case 6:  _printf0_("   stopped on dxmin during line search\n"); break;
+		case 7:  _printf0_("   <g,d> > 0  or  <y,s> <0\n"); break;
+		default: _printf0_("   Unknown end condition\n");
+	}
+
+	/*build output: */
+	X_out=xNew<IssmPDouble>(n);
+	for(int i=0;i<n;i++)X_out[i]=X[i];
+
+	/*Write data: */
+	WriteData(XOUT,X_out,n);
+
+	/*end module: */
+	xDelete<double>(Xs);
+	xDelete<double>(Gs);
+	xDelete<double>(Js);
+	xDelete<double>(X_out);
+	xDelete<double>(G);
+	xDelete<double>(X);
+	#else
+	_error_("m1qn3 is not installed");
+	#endif
+	MODULEEND();
+
+}
+
+
+#ifdef _HAVE_M1QN3_
+void fakesimul(long* indic,long* n,double* X,double* pf,double* G,long izs[1],float rzs[1],void* dzs){
+
+	Data* ds=(Data*)dzs;
+	double* Xs=ds->Xs;
+	double* Gs=ds->Gs;
+	double* Js=ds->Js;
+	
+	/*Are we done? : */
+	if(ds->counter+1==ds->priorn){
+		*indic=0;
+		return;
+	}
+	else{
+		ds->counter++;
+		*pf=Js[ds->counter];
+		for(int i=0;i<*n;i++) X[i]=Xs[ds->priorn*i+ds->counter];
+		for(int i=0;i<*n;i++) G[i]=Gs[ds->priorn*i+ds->counter];
+	}
+}
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/M1qn3/M1qn3.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/M1qn3/M1qn3.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/M1qn3/M1qn3.h	(revision 27955)
@@ -0,0 +1,49 @@
+/*!\file M1qn3.h
+ * \brief: prototype for Data Interpolation mex module.
+ */
+
+#ifndef _M1QN3_WRAPPER_H
+#define _M1QN3_WRAPPER_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "M1qn3"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define XHANDLE       prhs[0]
+#define GHANDLE       prhs[1]
+#define JHANDLE       prhs[2]
+/* serial output macros: */
+#define XOUT (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define XHANDLE   PyTuple_GetItem(args,0)
+#define GHANDLE   PyTuple_GetItem(args,1)
+#define JHANDLE   PyTuple_GetItem(args,2)
+/* serial output macros: */
+#define XOUT output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+
+#endif  /* _M1QN3_WRAPPER_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/Makefile.am
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/Makefile.am	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/Makefile.am	(revision 27955)
@@ -0,0 +1,15 @@
+SUBDIRS = 
+
+if WRAPPERS
+if MATLAB
+SUBDIRS += matlab
+endif
+
+if JAVASCRIPT
+SUBDIRS += javascript
+endif
+
+if PYTHON
+SUBDIRS += python
+endif
+endif 
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/MeshPartition/MeshPartition.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/MeshPartition/MeshPartition.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/MeshPartition/MeshPartition.cpp	(revision 27955)
@@ -0,0 +1,83 @@
+/*!\file:  MeshPartition.cpp
+ * \brief: partition mesh according to number of areas, using Metis library.
+*/
+
+#include "./MeshPartition.h"
+
+void MeshPartitionUsage(void){/*{{{*/
+	_printf_("   usage:\n");
+	_printf_("   [element_partitioning,node_partitioning]=MeshPartition(md.mesh,numpartitions)");
+	_printf_("   where:\n");
+	_printf_("      element_partitioning is a vector of partitioning area numbers, for every element.\n");
+	_printf_("      node_partitioning is a vector of partitioning area numbers, for every node.\n");
+	_printf_("\n");
+}/*}}}*/
+WRAPPER(MeshPartition_python){
+
+	/* required input: */
+	int  numberofelements;
+	int  numberofvertices;
+	int *elements = NULL;
+	int  elements_width;
+	int numberofelements2d=0;
+	int numberofvertices2d=0;
+	int* elements2d=NULL;
+	int numberoflayers;
+	int numareas=1;
+
+	/* output: */
+	int    *int_element_partitioning = NULL;
+	int    *int_node_partitioning    = NULL;
+	double *element_partitioning     = NULL;
+	double *node_partitioning        = NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	CHECKARGUMENTS(NLHS,NRHS,&MeshPartitionUsage);
+
+	/*Fetch data: */
+	FetchData(&numberofvertices,NUMBEROFVERTICES);
+	FetchData(&elements,&numberofelements,&elements_width,ELEMENTS);
+	FetchData(&numberofvertices2d,NUMBEROFVERTICES2D);
+	FetchData(&elements2d,&numberofelements2d,NULL,ELEMENTS2D);
+	FetchData(&numberoflayers,NUMBEROFLAYERS);
+	FetchData(&numareas,NUMAREAS);
+
+	/*Get mesh element type and convert to Enum*/
+	char* meshtype_str = NULL;
+	FetchData(&meshtype_str,MESHELEMENTTYPE);
+	int meshelementtype = StringToEnumx(meshtype_str); 
+	xDelete<char>(meshtype_str);
+
+	/*Run partitioning algorithm based on a "clever" use of the Metis partitioner: */
+	MeshPartitionx(&int_element_partitioning,&int_node_partitioning,numberofelements,numberofvertices,elements,
+		numberofelements2d,numberofvertices2d,elements2d,NULL,numberoflayers,elements_width,meshelementtype,numareas);
+
+	/*Post process node_partitioning and element_partitioning to be in double format. Metis needed them in int* format: */
+	element_partitioning=xNew<double>(numberofelements);
+	for(int i=0;i<numberofelements;i++){
+		element_partitioning[i]=(double)int_element_partitioning[i]+1; //Metis indexing from 0, matlab from 1.
+	}
+
+	node_partitioning=xNew<double>(numberofvertices);
+	for(int i=0;i<numberofvertices;i++){
+		node_partitioning[i]=(double)int_node_partitioning[i]+1; //Metis indexing from 0, matlab from 1.
+	}
+
+	/*Write data:*/
+	WriteData(ELEMENTPARTITIONING,element_partitioning,numberofelements);
+	WriteData(NODEPARTITIONING,node_partitioning,numberofvertices);
+
+	/*Free resources:*/
+	xDelete<int>(elements);
+	xDelete<int>(elements2d);
+	xDelete<int>(int_element_partitioning);
+	xDelete<int>(int_node_partitioning);
+	xDelete<double>(element_partitioning);
+	xDelete<double>(node_partitioning);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/MeshPartition/MeshPartition.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/MeshPartition/MeshPartition.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/MeshPartition/MeshPartition.h	(revision 27955)
@@ -0,0 +1,61 @@
+/*
+	MeshPartition.h
+*/
+
+#ifndef _MESHPARTITION_H
+#define _MESHPARTITION_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "MeshPartition"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define NUMBEROFVERTICES   prhs[0]
+#define ELEMENTS           prhs[1]
+#define NUMBEROFVERTICES2D prhs[2]
+#define ELEMENTS2D         prhs[3]
+#define NUMBEROFLAYERS     prhs[4]
+#define MESHELEMENTTYPE    prhs[5]
+#define NUMAREAS           prhs[6]
+/* serial output macros: */
+#define ELEMENTPARTITIONING (mxArray**)&plhs[0]
+#define NODEPARTITIONING (mxArray**)&plhs[1]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define NUMBEROFVERTICES   PyTuple_GetItem(args,0)
+#define ELEMENTS           PyTuple_GetItem(args,1)
+#define NUMBEROFVERTICES2D PyTuple_GetItem(args,2)
+#define ELEMENTS2D         PyTuple_GetItem(args,3)
+#define NUMBEROFLAYERS     PyTuple_GetItem(args,4)
+#define MESHELEMENTTYPE    PyTuple_GetItem(args,5)
+#define NUMAREAS           PyTuple_GetItem(args,6)
+/* serial output macros: */
+#define ELEMENTPARTITIONING output,0
+#define NODEPARTITIONING output,1
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  2
+#undef NRHS
+#define NRHS  7
+
+#endif  /* _MESHPARTITION_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.cpp	(revision 27955)
@@ -0,0 +1,100 @@
+/*! \file  MeshProfileIntersection.cpp
+    \brief: takes a  .exp file (made of several profiles), and figures out its intersection 
+	with a mesh.
+
+	usage:
+	[segments]=MeshProfileIntersection(index,x,y,filename);
+
+	where:
+	input:
+		index,x,y is a triangulation
+		filename: name of Argus style .exp file containing the segments (can be groups of disconnected segments)
+	output:
+		segments: array made of x1,y1,x2,y2,element_id lines (x1,y1) and (x2,y2) are segment extremities for a segment 
+		belonging to the elemnt_id element. there are as many lines in segments as there are segments intersecting the 
+		mesh.
+*/
+
+#include "./MeshProfileIntersection.h"
+
+void MeshProfileIntersectionUsage(void){/*{{{*/
+	_printf_("   usage:\n");
+	_printf_("   [segments]=MeshProfileIntersection(index,x,y,filename);\n");
+	_printf_("   where:\n");
+	_printf_("   input:\n");
+	_printf_("        index,x,y is a triangulation\n");
+	_printf_("        filename: name of Argus style .exp file containing the segments (can be groups of disconnected segments)\n");
+	_printf_("   output:\n");
+	_printf_("        segments: array made of x1,y1,x2,y2,element_id lines (x1,y1) and (x2,y2) are segment extremities for a segment \n");
+	_printf_("        belonging to the elemnt_id element. there are as many lines in segments as there are segments intersecting the \n");
+	_printf_("        mesh.\n");
+}/*}}}*/
+WRAPPER(MeshProfileIntersection_python){
+
+	int i,j;
+
+	/* required input: */
+	//mesh
+	double *double_index = NULL;
+	int    *index        = NULL;
+	int     nel;
+	double *x            = NULL;
+	double *y            = NULL;
+	int     nods;
+	int     dummy;
+
+	//contours
+	Contours         *domain      = NULL;
+	Contour<double> **contours=NULL;
+	int               numcontours;
+	Contour<double>  *contouri=NULL;
+
+	/* output: */
+	double* segments=NULL;
+	int     numsegs;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments: */
+	CHECKARGUMENTS(NLHS,NRHS,&MeshProfileIntersectionUsage);
+
+	/*Fetch inputs: */
+	//index
+	FetchData(&double_index,&nel,&dummy,INDEX);
+	if(dummy!=3 && dummy!=6)_error_("element triangulation should be of 3 or 6 column width!");
+	index=xNew<int>(nel*3);
+	for(i=0;i<nel;i++){
+		for(j=0;j<3;j++){
+			*(index+3*i+j)=(int)*(double_index+dummy*i+j)-1; //"C" style indexing
+		}
+	}
+	//x and y
+	FetchData(&x,&nods,X);
+	FetchData(&y,&dummy,Y);
+
+	//contours
+	FetchData(&domain,FILENAME);
+	// MeshProfileIntersectionx should be modified to take DataSet directly (and perhaps IssmDenseMat and IssmSeqVec).
+	numcontours=domain->Size();
+	contours=xNew<Contour<double>*>(numcontours);
+	for(i=0;i<numcontours;i++)
+		*(contours+i)=(Contour<double>*)domain->GetObjectByOffset(i);
+
+	/*Run interpolation routine: */
+	MeshProfileIntersectionx(&segments,&numsegs,index,x,y,nel,nods,contours,numcontours);
+
+	/* output: */
+	WriteData(SEGMENTS,segments,numsegs,5);
+
+	/*end module: */
+	xDelete<double>(double_index);
+	xDelete<int>(index);
+	xDelete<double>(x);
+	xDelete<double>(y);
+	delete domain;
+	delete contouri;
+	xDelete<double>(segments);
+	MODULEEND();
+
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.h	(revision 27955)
@@ -0,0 +1,53 @@
+/*
+	MeshProfileIntersection.h
+*/
+
+#ifndef _MESHPROFILEINTERSECTION_H
+#define _MESHPROFILEINTERSECTION_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__
+#define __FUNCT__ "MeshProfileIntersection"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* input macros: */
+#define INDEX    prhs[0]
+#define X        prhs[1]
+#define Y        prhs[2]
+#define FILENAME prhs[3]
+/* serial output macros: */
+#define SEGMENTS (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* input macros: */
+#define INDEX    PyTuple_GetItem(args,0)
+#define X        PyTuple_GetItem(args,1)
+#define Y        PyTuple_GetItem(args,2)
+#define FILENAME PyTuple_GetItem(args,3)
+/* serial output macros: */
+#define SEGMENTS output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS 1
+#undef NRHS
+#define NRHS 4
+
+#endif  /* _MESHPROFILEINTERSECTION_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/NodeConnectivity/NodeConnectivity.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/NodeConnectivity/NodeConnectivity.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/NodeConnectivity/NodeConnectivity.cpp	(revision 27955)
@@ -0,0 +1,43 @@
+/*\file NodeConnectivity.c
+ *\brief: build node connectivity from elements. 
+ */
+
+#include "./NodeConnectivity.h"
+
+void NodeConnectivityUsage(void){/*{{{*/
+	_printf0_("\n");
+	_printf0_("   usage: connectivity = " << __FUNCT__ << "(elements, numnodes);\n");
+	_printf0_("\n");
+}/*}}}*/
+WRAPPER(NodeConnectivity_python){
+
+	/*inputs: */
+	int* elements=NULL;
+	int  nels;
+	int  nods;
+
+	/*outputs: */
+	int* connectivity=NULL;
+	int  width;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments: */
+	CHECKARGUMENTS(NLHS,NRHS,&NodeConnectivityUsage);
+
+	/*Input datasets: */
+	FetchData(&elements,&nels,NULL,ELEMENTS);
+	FetchData(&nods,NUMNODES);
+
+	/*!Generate internal degree of freedom numbers: */
+	NodeConnectivityx(&connectivity,&width,elements,nels,nods);
+
+	/*write output datasets: */
+	WriteData(CONNECTIVITY,connectivity,nods,width);
+
+	/*end module: */
+	xDelete<int>(elements);
+	xDelete<int>(connectivity);
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/NodeConnectivity/NodeConnectivity.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/NodeConnectivity/NodeConnectivity.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/NodeConnectivity/NodeConnectivity.h	(revision 27955)
@@ -0,0 +1,61 @@
+/*
+	NodeConnectivity.h
+*/
+
+#ifndef _NODECONNECTIVITY_H
+#define _NODECONNECTIVITY_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#undef __FUNCT__ 
+#define __FUNCT__  "NodeConnectivity"
+
+/*Header files: */
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/toolkits/toolkits.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../../c/shared/io/io.h"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define ELEMENTS prhs[0]
+#define NUMNODES prhs[1]
+/* serial output macros: */
+#define CONNECTIVITY (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define ELEMENTS PyTuple_GetItem(args,0)
+#define NUMNODES PyTuple_GetItem(args,1)
+/* serial output macros: */
+#define CONNECTIVITY output,0
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define ELEMENTS elementsin, nelsin,3
+#define NUMNODES nodsin
+/* serial output macros: */
+#define CONNECTIVITY pconnectivity,pnods,pwidth
+#define WRAPPER(modulename) extern "C" { int  NodeConnectivityModule(double** pconnectivity, int* pnods, int *pwidth, int* elementsin, int nelsin, int nodsin)
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  2
+
+#endif  /* _NODECONNECTIVITY_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/NodeConnectivity/NodeConnectivity.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/NodeConnectivity/NodeConnectivity.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/NodeConnectivity/NodeConnectivity.js	(revision 27955)
@@ -0,0 +1,43 @@
+function NodeConnectivity(elementsin,nods){
+/*NodeConnectivity 
+	   usage: var md.mesh.vertexconnectivity = NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+*/
+
+	//Dynamic allocations: {{{
+	//Retrieve elements and allocate on Module heap: 
+	
+	//input
+	var delements=new Int32Array(MatrixToList(elementsin)); var nelements=delements.length * delements.BYTES_PER_ELEMENT;
+	var delementsPtr= Module._malloc(nelements); var elementsHeap = new Uint8Array(Module.HEAPU8.buffer,delementsPtr,nelements);
+	elementsHeap.set(new Uint8Array(delements.buffer)); var elements=elementsHeap.byteOffset;
+
+	//output
+	var width,connectivitylinear,connectivity;
+	var pwidth= Module._malloc(4); 
+	var pnods= Module._malloc(4); 
+	var pconnectivity= Module._malloc(4); 
+	var nels=elementsin.length;
+	//}}}
+
+	//Declare NodeConnectivity module: 
+	NodeConnectivityModule = Module.cwrap('NodeConnectivityModule','number',['number','number','number','number']);
+	
+	//Call NodeConnectivity module: 
+	NodeConnectivityModule(pconnectivity,pnods,pwidth,elements,nels,nods);
+	
+	/*Dynamic copying from heap: {{{*/
+	//recover mesh: 
+	width = Module.getValue(pwidth, 'i32');
+	var connectivityptr = Module.getValue(pconnectivity,'i32');
+	connectivitylinear = Module.HEAPF64.slice(connectivityptr /8, connectivityptr/8 + nods*width);
+	connectivity = ListToMatrix(connectivitylinear,width);
+	/*}}}*/
+
+	/*Free resources: */
+	Module._free(pconnectivity); 
+	Module._free(connectivitylinear); 
+	Module._free(pwidth); 
+	Module._free(pnods); 
+
+	return connectivity;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/PointCloudFindNeighbors/PointCloudFindNeighbors.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/PointCloudFindNeighbors/PointCloudFindNeighbors.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/PointCloudFindNeighbors/PointCloudFindNeighbors.cpp	(revision 27955)
@@ -0,0 +1,55 @@
+/*! \file  PointCloudFindNeighbors
+    \brief: flag points that are too near one another, within an array of point coordinates
+*/
+
+#include "./PointCloudFindNeighbors.h"
+
+void PointCloudFindNeighborsUsage(void){/*{{{*/
+	_printf_("   usage:\n");
+	_printf_("   [flags]=PointCloudFindNeighbors(x,y,mindistance,multithread);\n");
+	_printf_("   where:\n");
+	_printf_("      x,y: list of points.\n");
+	_printf_("      mindistance: minimum distance that should exist between points in the cloud.\n");
+	_printf_("      multithread: run multithreaded or not. with multithreads, flags can get 1 and 2 values in duplicates.\n");
+	_printf_("      flags: array of flags (flag==1 means point is within mindistance of another point)\n");
+	_printf_("\n");
+}/*}}}*/
+WRAPPER(PointCloudFindNeighbors_python){
+
+	int i,j;
+
+	/* required input: */
+	double *x = NULL;
+	double *y = NULL;
+	int     nods;
+	double  mindistance;
+	double  multithread;
+
+	/* output: */
+	IssmSeqVec<double> *flags = NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&PointCloudFindNeighborsUsage);
+
+	/*Fetch inputs: */
+	FetchData(&x,&nods,NULL,XHANDLE);  
+	FetchData(&y,NULL,NULL,YHANDLE);
+	FetchData(&mindistance,MINDISTANCE);
+	FetchData(&multithread,MULTITHREAD);
+
+	/*Run core routine: */
+	PointCloudFindNeighborsx(&flags,x,y,nods,mindistance,multithread);
+
+	/* output: */
+	WriteData(FLAGS,flags);
+
+	/*end module: */
+	xDelete<double>(x);
+	xDelete<double>(y);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/PointCloudFindNeighbors/PointCloudFindNeighbors.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/PointCloudFindNeighbors/PointCloudFindNeighbors.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/PointCloudFindNeighbors/PointCloudFindNeighbors.h	(revision 27955)
@@ -0,0 +1,53 @@
+/*
+	PointCloudFindNeighbors.h
+*/
+
+#ifndef _POINTCLOUDFINDNEIGHBORS_H
+#define _POINTCLOUDFINDNEIGHBORS_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__
+#define __FUNCT__ "PointCloudFindNeighbors"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* input macros: */
+#define XHANDLE     prhs[0]
+#define YHANDLE     prhs[1]
+#define MINDISTANCE prhs[2]
+#define MULTITHREAD prhs[3]
+/* serial output macros: */
+#define FLAGS (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* input macros: */
+#define XHANDLE     PyTuple_GetItem(args,0)
+#define YHANDLE     PyTuple_GetItem(args,1)
+#define MINDISTANCE PyTuple_GetItem(args,2)
+#define MULTITHREAD PyTuple_GetItem(args,3)
+/* serial output macros: */
+#define FLAGS output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS 1
+#undef NRHS
+#define NRHS 4
+
+#endif  /* _POINTCLOUDFINDNEIGHBORS_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/ProcessRifts/ProcessRifts.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/ProcessRifts/ProcessRifts.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/ProcessRifts/ProcessRifts.cpp	(revision 27955)
@@ -0,0 +1,59 @@
+/*!\file:  ProcessRifts.cpp
+ * \brief split a mesh where a rift (or fault) is present
+ */ 
+
+#include "./ProcessRifts.h"
+
+void ProcessRiftsUsage(void){/*{{{*/
+	_printf_("\n");
+	_printf_("   usage: [index2,x2,y2,segments2,segmentmarkers2,rifts2]=ProcessRifts(index1,x1,y1,segments1,segmentmarkers1) \n");
+	_printf_("      where: (index1,x1,y1,segments1,segmentmarkers1) is an initial triangulation.\n");
+	_printf_("      index2,x2,y2,segments2,segmentmarkers2,rifts2 is the resulting triangulation where rifts have been processed.\n");
+}/*}}}*/
+WRAPPER(ProcessRifts_python){
+
+	/* returned quantities: */
+	RiftStruct *riftstruct = NULL;
+
+	/* input: */
+	int     nel,nods;
+	int    *index          = NULL;
+	double *x              = NULL;
+	double *y              = NULL;
+	int    *segments       = NULL;
+	int    *segmentmarkers = NULL;
+	int     num_seg;
+
+	/*Boot module*/
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	CHECKARGUMENTS(NLHS,NRHS,&ProcessRiftsUsage);
+
+	/*Fetch data */
+	FetchData(&index,&nel,NULL,INDEXIN);
+	FetchData(&x,&nods,XIN);
+	FetchData(&y,NULL,YIN);
+	FetchData(&segments,&num_seg,NULL,SEGMENTSIN);
+	FetchData(&segmentmarkers,NULL,SEGMENTMARKERSIN);
+
+	/*call x layer*/
+	ProcessRiftsx(&index,&nel,&x,&y,&nods,&segments,&segmentmarkers,&num_seg,&riftstruct);
+
+	/*Output : */
+	WriteData(INDEXOUT,index,nel,3);
+	WriteData(XOUT,x,nods,1);
+	WriteData(YOUT,y,nods,1);
+	WriteData(SEGMENTSOUT,segments,num_seg,3);
+	WriteData(SEGMENTMARKERSOUT,segmentmarkers,num_seg,1);
+	WriteData(RIFTSTRUCT,riftstruct);
+
+	/*end module: */
+	delete riftstruct;
+	xDelete<int>(index);
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<int>(segments);
+	xDelete<int>(segmentmarkers );
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/ProcessRifts/ProcessRifts.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/ProcessRifts/ProcessRifts.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/ProcessRifts/ProcessRifts.h	(revision 27955)
@@ -0,0 +1,65 @@
+/*
+ * ProcessRifts.h
+ */ 
+
+#ifndef _PROCESSRIFTS_H_
+#define _PROCESSRIFTS_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "ProcessRifts"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define INDEXIN          prhs[0]
+#define XIN              prhs[1]
+#define YIN              prhs[2]
+#define SEGMENTSIN       prhs[3]
+#define SEGMENTMARKERSIN prhs[4]
+/* serial output macros: */
+#define INDEXOUT          (mxArray**)&plhs[0]
+#define XOUT              (mxArray**)&plhs[1]
+#define YOUT              (mxArray**)&plhs[2]
+#define SEGMENTSOUT       (mxArray**)&plhs[3]
+#define SEGMENTMARKERSOUT (mxArray**)&plhs[4]
+#define RIFTSTRUCT        (mxArray**)&plhs[5]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define INDEXIN          PyTuple_GetItem(args,0)
+#define XIN              PyTuple_GetItem(args,1)
+#define YIN              PyTuple_GetItem(args,2)
+#define SEGMENTSIN       PyTuple_GetItem(args,3)
+#define SEGMENTMARKERSIN PyTuple_GetItem(args,4)
+/* serial output macros: */
+#define INDEXOUT          output,0
+#define XOUT              output,1
+#define YOUT              output,2
+#define SEGMENTSOUT       output,3
+#define SEGMENTMARKERSOUT output,4
+#define RIFTSTRUCT        output,5
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  6
+#undef NRHS
+#define NRHS  5
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.cpp	(revision 27955)
@@ -0,0 +1,47 @@
+/*\file PropagateFlagsFromConnectivity.c
+ *\brief: propagate flags onto mesh, element by element, using connectivity.
+ */
+
+#include "./PropagateFlagsFromConnectivity.h"
+
+void PropagateFlagsFromConnectivityUsage(void) {/*{{{*/
+	_printf_("\n");
+	_printf_("   usage: [pool] = " << __FUNCT__ << "(connectivity,pool,index,flags);\n");;
+	_printf_("\n");
+}/*}}}*/
+WRAPPER(PropagateFlagsFromConnectivity_python){
+
+	/*input/output datasets: */
+	double* connectivity=NULL;
+	int     nel;
+	double* pool=NULL;
+	double* flags=NULL;
+	int     index;
+	int     dummy;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&PropagateFlagsFromConnectivityUsage);
+
+	/*Input datasets: */
+	FetchData(&connectivity,&nel,&dummy,CONNECTIVITY);
+	FetchData(&pool,&dummy,POOL);
+	FetchData(&index,INDEX);
+	FetchData(&flags,&dummy,FLAGS);
+
+	/*!Generate internal degree of freedom numbers: */
+	PropagateFlagsFromConnectivityx(pool,connectivity,index,flags);
+
+	/*write output datasets: */
+	WriteData(POOLOUT,pool,nel);
+
+	/*Free resources: */
+	xDelete<double>(connectivity);
+	xDelete<double>(pool);
+	xDelete<double>(flags);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.h	(revision 27955)
@@ -0,0 +1,53 @@
+/*
+	PropagateFlagsFromConnectivity.h
+*/
+
+#ifndef _PROPAGATEFLAGSFROMCONNECTIVITY_H
+#define _PROPAGATEFLAGSFROMCONNECTIVITY_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "PropagateFlagsFromConnectivity"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define CONNECTIVITY prhs[0]
+#define POOL         prhs[1]
+#define INDEX        prhs[2]
+#define FLAGS        prhs[3]
+/* serial output macros: */
+#define POOLOUT (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define CONNECTIVITY PyTuple_GetItem(args,0)
+#define POOL         PyTuple_GetItem(args,1)
+#define INDEX        PyTuple_GetItem(args,2)
+#define FLAGS        PyTuple_GetItem(args,3)
+/* serial output macros: */
+#define POOLOUT output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  4
+
+#endif  /* _PROPAGATEFLAGSFROMCONNECTIVITY_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/Scotch/Scotch.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/Scotch/Scotch.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/Scotch/Scotch.cpp	(revision 27955)
@@ -0,0 +1,249 @@
+/*\file Scotch.c
+ *\brief:  Scotch partitioner mex module
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./Scotch.h"
+
+void GmapUsage(void){/*{{{*/
+	mexPrintf("\n");
+	mexPrintf("Usage: [maptab]=Scotch(adjmat,vertlb,vertwt,edgewt,archtyp,archpar,\n");
+	mexPrintf("                         Scotch-specific parameters);\n");
+	mexPrintf("\n");
+}/*}}}*/
+void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){
+
+	#ifndef _HAVE_SCOTCH_ //only works if scotch library has been compiled in.
+	_error_("Scotch not available! Cannot carry out Scotch partitioning!");
+	#else
+
+	int     argcm;
+	char    **argvm=NULL;
+	int     nvert =0,nedge2=0,napar =0;
+	mwIndex *ir=NULL,*jc=NULL;
+	int     *adjir=NULL,*adjjc=NULL;
+	double  *vld=NULL,*vwd=NULL,*ewd=NULL,*apd=NULL;
+	int     *vli=NULL,*vwi=NULL,*ewi=NULL,*api=NULL;
+	char    *archtyp=NULL;
+	int     (*maptabi)[2]=NULL;
+	double* maptabd=NULL;
+	int     i,j,k,imi=0,imo=0,isi=0,ierr;
+
+	/* Check for proper number of arguments */
+
+	if (nrhs == 0 && nlhs == 0) {
+		GmapUsage();
+		return;
+	}
+	else if (nrhs <  6 || nlhs >  1) {
+		GmapUsage();
+		mexErrMsgTxt(" ");
+	}
+
+/*  load matlab argument list and convert to integer (note that converting here
+	and in the x-layer is inefficient, but it makes the x-layer more general)  */
+
+	argvm = (char **) calloc(nrhs,sizeof(char *));
+
+	if (!(mxIsNumeric(prhs[imi]) &&
+		  (mxGetM(prhs[imi]) == 1 && mxGetN(prhs[imi]) == 1))) {
+		argvm[isi] = (char *) calloc(4+1,sizeof(char));
+		strcpy(argvm[isi],"gmap");
+		mexPrintf("%s -- Using \"%s\" entry point.\n",
+				  __FUNCT__,argvm[isi]);
+		isi++;
+	}
+	else {
+		argvm[isi] = (char *) calloc(5+1,sizeof(char));
+		strcpy(argvm[isi],"gpart");
+		mexPrintf("%s -- Using \"%s\" entry point.\n",
+				  __FUNCT__,argvm[isi]);
+		isi++;
+
+		argvm[isi] = (char *) calloc(17,sizeof(char));
+		sprintf(argvm[isi],"%d",(int)mxGetScalar(prhs[imi]));
+		mexPrintf("%s -- Number of parts is %s.\n",
+				  __FUNCT__,argvm[isi]);
+		isi++;
+		imi++;
+	}
+
+	if (!mxIsNumeric(prhs[imi]) || (!mxIsEmpty(prhs[imi]) && !mxIsSparse(prhs[imi]))) {
+		mexPrintf("%s -- Adjacency matrix must be numeric and sparse.\n",__FUNCT__);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		nvert =mxGetM(prhs[imi]);
+		nedge2=mxGetNzmax(prhs[imi]);
+		if (mxGetNzmax(prhs[imi])) {
+			ir    =mxGetIr(prhs[imi]);
+			adjir = (int *) malloc(mxGetNzmax(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetNzmax(prhs[imi]); i++)
+				adjir[i]=(int)ir[i];
+		}
+		if (mxGetN(prhs[imi])) {
+			jc    =mxGetJc(prhs[imi]);
+			adjjc = (int *) malloc((mxGetN(prhs[imi])+1)*sizeof(int));
+			for (i=0; i<(mxGetN(prhs[imi])+1); i++)
+				adjjc[i]=(int)jc[i];
+		}
+		mexPrintf("%s -- Adjacency matrix is of size %d by %d with %d non-zeroes.\n",
+				  __FUNCT__,mxGetM(prhs[imi]),mxGetN(prhs[imi]),mxGetNzmax(prhs[imi]));
+	}
+	imi++;
+
+	if (!mxIsNumeric(prhs[imi])) {
+		mexPrintf("%s -- Vertex label vector must be numeric.\n",__FUNCT__);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+			vld=mxGetPr(prhs[imi]);
+			vli = (int *) malloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetM(prhs[imi])*mxGetN(prhs[imi]); i++)
+				vli[i]=(int)vld[i];
+		}
+		mexPrintf("%s -- Vertex label vector is of size %d by %d.\n",
+				  __FUNCT__,mxGetM(prhs[imi]),mxGetN(prhs[imi]));
+	}
+	imi++;
+
+	if (!mxIsNumeric(prhs[imi])) {
+		mexPrintf("%s -- Vertex weight vector must be numeric.\n",__FUNCT__);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+			vwd=mxGetPr(prhs[imi]);
+			vwi = (int *) malloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetM(prhs[imi])*mxGetN(prhs[imi]); i++)
+				vwi[i]=(int)vwd[i];
+		}
+		mexPrintf("%s -- Vertex weight vector is of size %d by %d.\n",
+				  __FUNCT__,mxGetM(prhs[imi]),mxGetN(prhs[imi]));
+	}
+	imi++;
+
+	if (!mxIsNumeric(prhs[imi]) || (!mxIsEmpty(prhs[imi]) && !mxIsSparse(prhs[imi]))) {
+		mexPrintf("%s -- Edge weight matrix must be numeric and sparse.\n",__FUNCT__);
+		mexErrMsgTxt(" ");
+	}
+	else {
+		if (mxGetM(prhs[imi])) {
+			ewd=mxGetPr(prhs[imi]);
+			ewi = (int *) malloc(mxGetM(prhs[imi])*sizeof(int));
+			for (i=0; i<mxGetNzmax(prhs[imi]); i++)
+				ewi[i]=(int)ewd[i];
+		}
+		mexPrintf("%s -- Edge weight matrix is of size %d by %d with %d non-zeroes.\n",
+				  __FUNCT__,mxGetM(prhs[imi]),mxGetN(prhs[imi]),mxGetNzmax(prhs[imi]));
+	}
+	imi++;
+
+	if (!((strlen (argvm[0]) >= 5) &&
+		  (strncmp (argvm[0] + strlen (argvm[0]) - 5, "gpart", 5) == 0))) {
+		if (!mxIsChar(prhs[imi])) {
+			mexPrintf("%s -- Architecture type must be character.\n",__FUNCT__);
+			mexErrMsgTxt(" ");
+		}
+		else {
+			if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+				archtyp = (char *) calloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])+1,sizeof(char));
+				mxGetString(prhs[imi],archtyp,mxGetM(prhs[imi])*mxGetN(prhs[imi])+1);
+			}
+			mexPrintf("%s -- Architecture type is \"%s\".\n",
+					  __FUNCT__,archtyp);
+		}
+		imi++;
+
+		if (!mxIsNumeric(prhs[imi])) {
+			mexPrintf("%s -- Architecture parameter vector must be numeric.\n",__FUNCT__);
+			mexErrMsgTxt(" ");
+		}
+		else {
+			napar =mxGetM(prhs[imi])*mxGetN(prhs[imi]);
+			if (mxGetM(prhs[imi])*mxGetN(prhs[imi])) {
+				apd=mxGetPr(prhs[imi]);
+				api = (int *) malloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])*sizeof(int));
+				for (i=0; i<mxGetM(prhs[imi])*mxGetN(prhs[imi]); i++)
+					api[i]=(int)apd[i];
+			}
+			mexPrintf("%s -- Architecture parameter vector is of size %d by %d.\n",
+					  __FUNCT__,mxGetM(prhs[imi]),mxGetN(prhs[imi]));
+		}
+		imi++;
+	}
+
+	while (imi < nrhs) {
+		if (!mxIsChar(prhs[imi])) {
+			mexPrintf("%s -- prhs[%d] must be character.\n",__FUNCT__,imi);
+			mexErrMsgTxt(" ");
+		}
+		else {
+			argvm[isi] = (char *) calloc(mxGetM(prhs[imi])*mxGetN(prhs[imi])+1,sizeof(char));
+			mxGetString(prhs[imi],argvm[isi],mxGetM(prhs[imi])*mxGetN(prhs[imi])+1);
+		}
+		isi++;
+		imi++;
+	}
+	argcm=isi;
+	mexPrintf("argcm=%d\n",argcm);
+	for (i=0; i<argcm; i++)
+		mexPrintf("argvm[%d]=\"%s\"\n",i,argvm[i]);
+
+	/* Do the actual computations in a subroutine */
+
+	mexPrintf("Gmapx:\n");
+	ierr=gmapx(&maptabi,
+			   argcm,
+			   argvm,
+			   nvert,
+			   nedge2,
+			   adjir,
+			   adjjc,
+			   vli,
+			   vwi,
+			   ewi,
+			   archtyp,
+			   napar,
+			   api);
+	mexPrintf("%s -- Error %d from Gmapx.\n",__FUNCT__,ierr);
+
+/*  for (i=0; i<nvert; i++)
+		mexPrintf("maptabi[%d][0]=%d, maptabi[%d][1]=%d\n",
+			 	  i,maptabi[i][0],i,maptabi[i][1]); */
+
+	/* Create matrices for the return arguments */
+
+	if (maptabi) {
+		plhs[imo]=mxCreateDoubleMatrix(nvert, 2, mxREAL);
+		maptabd = mxGetPr(plhs[imo]);
+		k=0;
+		for (j=0; j<2; j++)
+			for (i=0; i<nvert; i++)
+				maptabd[k++]=(double)maptabi[i][j];
+		//free(maptabi);
+	}
+	else {
+		plhs[imo]=mxCreateDoubleMatrix(0, 2, mxREAL);
+	}
+	imo++;
+
+	/*if (argvm)
+		for (i=argcm-1; i>=0; i--)
+			free(argvm[i]);
+	if (api)     free(api);
+	if (archtyp) free(archtyp);
+	if (ewi)     free(ewi);
+	if (vwi)     free(vwi);
+	if (vli)     free(vli);
+	if (adjjc)   free(adjjc);
+	if (adjir)   free(adjir);*/
+
+	return;
+#endif //#ifndef _HAVE_SCOTCH_
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/Scotch/Scotch.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/Scotch/Scotch.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/Scotch/Scotch.h	(revision 27955)
@@ -0,0 +1,34 @@
+/*!\file:  Scotch.h
+ * \brief header file for Scotch module.
+ */ 
+
+#ifndef _SCOTCH_H
+#define _SCOTCH_H
+
+#include "../bindings.h" /*Should always come first to avoid python's warnings*/
+#include <stdio.h>
+#include <string.h>    /*  strcasecmp  */
+#include <time.h>      /*  clock,time,difftime  */
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "Scotch"
+
+/*  Scotch structures and prototypes  */
+#ifdef MATLAB
+#include "mat.h"
+#include "mex.h"
+#include "matrix.h"
+
+#define printf mexPrintf
+#define fprintf(file,...) (file == stdout || file == stderr ? mexPrintf(__VA_ARGS__) : fprintf(file,__VA_ARGS__))
+#define malloc mxMalloc
+#define calloc mxCalloc
+#define realloc mxRealloc
+#define free mxFree
+#define exit(status) mexErrMsgTxt("exit=" #status)
+#endif
+
+#endif  /* _SCOTCH_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/ShpRead/ShpRead.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/ShpRead/ShpRead.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/ShpRead/ShpRead.cpp	(revision 27955)
@@ -0,0 +1,94 @@
+/*\file ShpRead.c
+ *\brief: shp to exp file conversion mex module.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./ShpRead.h"
+#ifdef _HAVE_SHAPELIB_ //only works if Shapelib library has been compiled in.
+#include "shapefil.h"
+#endif
+
+void ShpReadUsage(void){/*{{{*/
+	_printf0_("ShpRead - Read shapefile\n");
+	_printf0_("\n");
+	_printf0_("   This module reads shapefiles and converts them to matlab/python structures\n");
+	_printf0_("\n");
+	_printf0_("   Usage:\n");
+	_printf0_("      ShpRead(filename);\n");
+	_printf0_("      filexp      file name of exp file to be written\n");
+	_printf0_("\n");
+	_printf0_("   Examples:\n");
+	_printf0_("      ShpRead('file.shp');\n");
+}/*}}}*/
+WRAPPER(ShpRead_python){
+
+	/*input: */
+	char *filename= NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	#ifndef _HAVE_SHAPELIB_ //only works if shapelib library has been compiled in.
+	_error_("Shapelib not available! Cannot carry out shp file translation!");
+	#else
+
+	/*checks on arguments on the matlab side: */
+	if(nlhs != NLHS){ShpReadUsage(); _error_("ShpRead usage error");}
+	if(nrhs != NRHS){ShpReadUsage(); _error_("ShpRead usage error");}
+
+	/*Input datasets: */
+	FetchData(&filename,SHP_IN);
+
+	/*Open shapefile*/
+	SHPHandle hSHP = SHPOpen( filename, "rb" );
+	if(!hSHP) _error_("Error opening shp/shx files.");
+
+	/*read header and print out file bounds*/
+	int         nShapeType,nEntities;
+	IssmPDouble adfMinBound[4], adfMaxBound[4];
+	SHPGetInfo( hSHP, &nEntities, &nShapeType, adfMinBound, adfMaxBound );
+	_printf_("Shapefile Type: "<<SHPTypeName(nShapeType)<<"   number of Shapes: "<< nEntities<<"\n\n");
+
+	/*Initialize output*/
+	Contours* contours = new Contours();
+
+	/*Read all objects*/
+	for(int i=0; i<nEntities;i++ ){
+
+		SHPObject* psShape = SHPReadObject(hSHP,i);
+		_printf_( "Shape #"<<i<<" ("<<SHPTypeName(psShape->nSHPType)<<") nVertices="<<psShape->nVertices<<", nParts="<<psShape->nParts<<"\n");
+
+		Contour<double> *contour = NULL;
+
+		switch(psShape->nSHPType){
+			case SHPT_POINTZ:
+				contour=new Contour<double>(0,psShape->nVertices,psShape->padfX,psShape->padfY,false);
+				break;
+			case SHPT_ARC:
+				contour=new Contour<double>(0,psShape->nVertices,psShape->padfX,psShape->padfY,false);
+				break;
+			default:
+				_printf_("Shape type "<<SHPTypeName(psShape->nSHPType)<<" not supported yet, skipping...\n");
+		}
+
+		/*Add to contours and clean up*/
+		if(contour) contours->AddObject(contour);
+		SHPDestroyObject(psShape);
+	}
+
+	/*Write output*/
+	WriteData(SHP_OUT,contours);
+
+	/*Clean-up*/
+	delete contours;
+	xDelete<char>(filename);
+
+	#endif
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/ShpRead/ShpRead.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/ShpRead/ShpRead.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/ShpRead/ShpRead.h	(revision 27955)
@@ -0,0 +1,47 @@
+/*!\file ShpRead.h
+ * \brief: prototype for shp read mex module.
+ */
+
+#ifndef _SHPREAD_H
+#define _SHPREAD_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "ShpRead"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define SHP_IN  prhs[0]
+/* serial output macros: */
+#define SHP_OUT  (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define SHP_IN PyTuple_GetItem(args,0)
+/* serial output macros: */
+#define SHP_OUT output,0
+#endif
+
+/* serial arg counts: */
+#undef NRHS
+#define NRHS  1
+#undef NLHS
+#define NLHS  1
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/Triangle/Triangle.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/Triangle/Triangle.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/Triangle/Triangle.cpp	(revision 27955)
@@ -0,0 +1,63 @@
+/*
+ * Triangle: mesh a domain using an .exp file
+ */
+
+#include "./Triangle.h"
+
+void TriangleUsage(void){/*{{{*/
+	_printf_("\n");
+	_printf_("   usage: [index,x,y,segments,segmentmarkers]=Triangle(domainoutlinefilename,rifts,area) \n");
+	_printf_("      where: index,x,y defines a triangulation, segments is an array made \n");
+	_printf_("      of exterior segments to the mesh domain outline, segmentmarkers is an array flagging each segment, \n");
+	_printf_("      outlinefilename an Argus domain outline file, \n");
+	_printf_("      area is the maximum area desired for any element of the resulting mesh, \n");
+	_printf_("\n");
+}/*}}}*/
+WRAPPER(Triangle_python){
+	
+	/*intermediary: */
+	double    area;
+	Contours *domain = NULL;
+	Contours *rifts  = NULL;
+
+	/* output: */
+	int    *index             = NULL;
+	double *x                 = NULL;
+	double *y                 = NULL;
+	int    *segments          = NULL;
+	int    *segmentmarkerlist = NULL;
+	int     nel,nods,nsegs;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments: */
+	CHECKARGUMENTS(NLHS,NRHS,&TriangleUsage);
+
+	/*Fetch data needed for meshing: */
+	FetchData(&domain,DOMAINOUTLINE);
+	FetchData(&rifts,RIFTSOUTLINE);
+	FetchData(&area,AREA);
+
+	/*call x core: */
+	Trianglex(&index,&x,&y,&segments,&segmentmarkerlist,&nel,&nods,&nsegs,domain,rifts,area);
+
+	/*write outputs: */
+	WriteData(INDEX,index,nel,3);
+	WriteData(X,x,nods);
+	WriteData(Y,y,nods);
+	WriteData(SEGMENTS,segments,nsegs,3);
+	WriteData(SEGMENTMARKERLIST,segmentmarkerlist,nsegs);
+
+	/*free resources: */
+	delete domain;
+	delete rifts;
+	xDelete<int>(index);
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<int>(segments);
+	xDelete<int>(segmentmarkerlist);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/Triangle/Triangle.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/Triangle/Triangle.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/Triangle/Triangle.h	(revision 27955)
@@ -0,0 +1,83 @@
+/*
+	Triangle.h
+*/
+
+#ifndef _TRIANGLE_H
+#define _TRIANGLE_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+#undef _DO_NOT_LOAD_GLOBALS_ /*only module where this needs to be undefined, so as to 
+							   not include IssmComm several times in the JavaScript module construct.*/
+#endif
+
+/*Header files: */
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/toolkits/toolkits.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../../c/shared/io/io.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "Triangle"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define DOMAINOUTLINE  prhs[0]
+#define RIFTSOUTLINE   prhs[1]
+#define AREA           prhs[2]
+/* serial output macros: */
+#define INDEX             (mxArray**)&plhs[0]
+#define X                 (mxArray**)&plhs[1]
+#define Y                 (mxArray**)&plhs[2]
+#define SEGMENTS          (mxArray**)&plhs[3]
+#define SEGMENTMARKERLIST (mxArray**)&plhs[4]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define DOMAINOUTLINE PyTuple_GetItem(args,0)
+#define RIFTSOUTLINE  PyTuple_GetItem(args,1)
+#define AREA          PyTuple_GetItem(args,2)
+/* serial output macros: */
+#define INDEX             output,0
+#define X                 output,1
+#define Y                 output,2
+#define SEGMENTS          output,3
+#define SEGMENTMARKERLIST output,4
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define DOMAINOUTLINE domainx,domainy,domainnods
+#define RIFTSOUTLINE  NULL,NULL,0
+#define AREA          areain
+/* serial output macros: */
+#define INDEX             pindex,pnel
+#define X                 px,pnods
+#define Y                 py,pnods
+#define SEGMENTS          psegments,pnsegs
+#define SEGMENTMARKERLIST psegmentmarkers,pnsegs
+#define WRAPPER(modulename) extern "C" { int  TriangleModule(double** pindex, double** px, double** py, int* pnel, int* pnods, double** psegments, double** psegmentmarkers, int* pnsegs, double* domainx, double* domainy, int domainnods, double areain)
+#define _DO_NOT_LOAD_GLOBALS_//we only load globals for TriangleModule.js, not other modules!
+#endif
+
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  5
+#undef NRHS
+#define NRHS  3
+
+#endif  /* _TRIANGLE_H */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/Triangle/Triangle.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/Triangle/Triangle.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/Triangle/Triangle.js	(revision 27955)
@@ -0,0 +1,82 @@
+function Triangle(md,domain,rifts, area){
+/*Triangle 
+	   usage: var array = Triangle(domain,rifts,area);
+	      where: array is made of [index,x,y,segments,segmentmarkers]
+		  and index,x,y defines a triangulation, segments is an array made 
+	      of exterior segments to the mesh domain outline, segmentmarkers is an array 
+		  flagging each segment, domain a js array defining the domain outline  (sames for 
+		  rifts) and area is the maximum area desired for any element of the resulting mesh.
+
+		  Ok, for now, we are not dealing with rifts. Also, the domain is made of only one 
+		  profile, this to avoid passing a double** pointer to js. 
+*/
+
+	//Dynamic allocations: {{{
+	//Retrieve domain arrays, and allocate on Module heap: 
+	
+	//input
+	var dx=new Float64Array(domain['x']); var nx=dx.length * dx.BYTES_PER_ELEMENT;
+	var dxPtr= Module._malloc(nx); var domainxHeap = new Uint8Array(Module.HEAPU8.buffer,dxPtr,nx);
+	domainxHeap.set(new Uint8Array(dx.buffer)); var domainx=domainxHeap.byteOffset;
+
+	var dy=new Float64Array(domain['y']); var ny=dy.length * dy.BYTES_PER_ELEMENT;
+	var dyPtr = Module._malloc(ny); var domainyHeap = new Uint8Array(Module.HEAPU8.buffer,dyPtr,ny);
+	domainyHeap.set(new Uint8Array(dy.buffer)); var domainy=domainyHeap.byteOffset;
+	
+	//output
+	var nel,indexlinear,index,nods,x,y;
+	var pnel= Module._malloc(4); 
+	var pindex= Module._malloc(4); 
+	var pnods= Module._malloc(4); 
+	var px= Module._malloc(4); 
+	var py= Module._malloc(4); 
+	var psegments= Module._malloc(4); 
+	var psegmentmarkers= Module._malloc(4); 
+	var pnsegs= Module._malloc(4); 
+	//}}}
+
+	//Declare Triangle module: 
+	TriangleModule = Module.cwrap('TriangleModule','number',['number','number','number','number','number','number','number','number','number','number','number','number']);
+	
+	//Call Triangle module: 
+	TriangleModule(pindex,px,py,pnel,pnods,psegments,psegmentmarkers,pnsegs, domainx,domainy,dx.length,area);
+	
+	/*Dynamic copying from heap: {{{*/
+	//recover mesh: 
+	nel = Module.getValue(pnel, 'i32');
+	var indexptr = Module.getValue(pindex,'i32');
+	indexlinear = Module.HEAPF64.slice(indexptr /8, indexptr/8 + nel*3);
+	index = ListToMatrix(indexlinear,3);
+
+	nods = Module.getValue(pnods, 'i32');
+	var xptr = Module.getValue(px,'i32');
+	var yptr = Module.getValue(py,'i32');
+	x = Module.HEAPF64.slice(xptr /8, xptr/8 + nods);
+	y = Module.HEAPF64.slice(yptr /8, yptr/8 + nods);
+	
+	nsegs = Module.getValue(pnsegs, 'i32');
+	var segmentsptr = Module.getValue(psegments,'i32');
+	segmentslinear = Module.HEAPF64.slice(segmentsptr /8, segmentsptr/8 + nsegs*3);
+	segments = ListToMatrix(segmentslinear,3);
+	
+	var segmentmarkersptr = Module.getValue(psegmentmarkers,'i32');
+	segmentmarkers = Module.HEAPF64.slice(segmentmarkersptr /8, segmentmarkersptr/8 + nsegs);
+	/*}}}*/
+
+	var return_array=[index,x,y,segments,segmentmarkers];
+
+	/*Free resources: */
+	Module._free(pindex); 
+	Module._free(indexlinear); 
+	Module._free(px); 
+	Module._free(x); 
+	Module._free(py); 
+	Module._free(y); 
+	Module._free(pnel); 
+	Module._free(pnods); 
+	Module._free(psegments); 
+	Module._free(psegmentmarkers); 
+	Module._free(pnsegs); 
+
+	return return_array;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/bindings.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/bindings.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/bindings.h	(revision 27955)
@@ -0,0 +1,29 @@
+#ifndef _BINDINGS_H_
+#define _BINDINGS_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef  _HAVE_PYTHON_MODULES_
+#include "./python/include/pythonincludes.h"
+#include "./python/include/wrapper_macros.h"
+#include "./python/io/pythonio.h"
+#endif
+
+#ifdef  _HAVE_MATLAB_MODULES_
+#include "./matlab/include/matlabincludes.h"
+#include "./matlab/include/wrapper_macros.h"
+#include "./matlab/io/matlabio.h"
+#endif
+
+#ifdef  _HAVE_JAVASCRIPT_MODULES_
+#include "./javascript/include/javascriptincludes.h"
+#include "./javascript/include/wrapper_macros.h"
+#include "./javascript/io/javascriptio.h"
+#endif
+
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/include/issm-binding.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/include/issm-binding.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/include/issm-binding.h	(revision 27955)
@@ -0,0 +1,18 @@
+#ifndef _ISSM_BINDING_H_
+#define _ISSM_BINDING_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef  _HAVE_MATLAB_MODULES_
+#include "../matlab/include/matlab-macros.h"
+#endif
+
+#ifdef  _HAVE_PYTHON_MODULES_
+#include "../python/include/python-macros.h"
+#endif
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/Makefile.am
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/Makefile.am	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/Makefile.am	(revision 27955)
@@ -0,0 +1,94 @@
+AM_CPPFLAGS = @DAKOTAINCL@ @PETSCINCL@ @MPIINCL@ @SPOOLESINCL@ @PARMETISINCL@ @METISINCL@ @TRIANGLEINCL@ @CHACOINCL@ @SCOTCHINCL@ @SHAPELIBINCL@ @AMPIINCL@ @ADJOINTMPIINCL@ @CODIPACKINCL@
+AUTOMAKE_OPTIONS = subdir-objects
+
+EXEEXT=$(JAVASCRIPTWRAPPEREXT)
+
+# Define prefix (from http://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/Defining-Directories.html)
+AM_CPPFLAGS += -DISSM_PREFIX='"$(prefix)"'
+
+js_scripts = \
+	${ISSM_DIR}/src/wrappers/BamgMesher/BamgMesher.js \
+	${ISSM_DIR}/src/wrappers/Triangle/Triangle.js \
+	${ISSM_DIR}/src/wrappers/NodeConnectivity/NodeConnectivity.js \
+	${ISSM_DIR}/src/wrappers/ContourToMesh/ContourToMesh.js \
+	${ISSM_DIR}/src/wrappers/ElementConnectivity/ElementConnectivity.js \
+	${ISSM_DIR}/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.js \
+	${ISSM_DIR}/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.js \
+	${ISSM_DIR}/src/wrappers/IssmConfig/IssmConfig.js \
+	${ISSM_DIR}/src/wrappers/Issm/issm.js
+
+bin_SCRIPTS =  issm-prebin.js
+
+issm-prebin.js: ${js_scripts}
+	cat ${js_scripts}  > issm-prebin.js
+
+# JavaScript I/O{{{
+lib_LTLIBRARIES = libISSMJavascript.la
+
+io_sources = \
+	./io/WriteJavascriptData.cpp \
+	./io/FetchJavascriptData.cpp
+
+ALLCXXFLAGS= -fPIC -D_WRAPPERS_ $(CXXFLAGS) $(CXXOPTFLAGS)
+
+libISSMJavascript_la_SOURCES = $(io_sources)
+libISSMJavascript_la_CXXFLAGS= $(ALLCXXFLAGS)
+#}}}
+# API I/O{{{
+lib_LTLIBRARIES += libISSMApi.la
+
+api_sources= ./io/ApiPrintf.cpp
+
+libISSMApi_la_SOURCES = $(api_sources)
+libISSMApi_la_CXXFLAGS= $(ALLCXXFLAGS)
+#}}}
+# Wrappers {{{
+bin_PROGRAMS = IssmModule
+#}}}
+
+# Dependencies {{{
+
+# Triangle
+AM_CXXFLAGS = -DTRILIBRARY -DANSI_DECLARATORS -DNO_TIMER -D_WRAPPERS_
+AM_CXXFLAGS += -D_HAVE_JAVASCRIPT_MODULES_ -fPIC
+
+deps = ./libISSMJavascript.la ../../c/libISSMModules.la ../../c/libISSMCore.la ./libISSMApi.la
+
+# Optimization flags
+AM_CXXFLAGS += $(CXXOPTFLAGS)
+#}}}
+# Module sources and dependencies {{{
+libISSMJavascript_la_LIBADD = ./../../c/libISSMCore.la ./../../c/libISSMModules.la $(MPILIB) $(PETSCLIB) $(MKLLIB) $(GSLLIB) $(MATHLIB)
+
+if VERSION
+libISSMJavascript_la_LDFLAGS =
+libISSMApi_la_LDFLAGS =
+else
+libISSMJavascript_la_LDFLAGS = -avoid-version
+libISSMApi_la_LDFLAGS = -avoid-version
+endif
+
+if STANDALONE_LIBRARIES
+if !MSYS2
+libISSMJavascript_la_LDFLAGS += -static
+libISSMApi_la_LDFLAGS += -static
+endif
+deps += $(DAKOTALIB) $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(HDF5LIB) $(TAOLIB) $(M1QN3LIB) $(SEMICLIB) $(PLAPACKLIB) $(SUPERLULIB) $(SPOOLESLIB) $(TRIANGLELIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(SCOTCHLIB) $(MKLLIB) $(MPILIB) $(NEOPZLIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(ADOLCLIB) $(AMPILIB) $(METEOIOLIB) $(SNOWPACKLIB) $(PROJLIB) $(OSLIBS)
+endif
+
+libISSMApi_la_LIBADD = $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(HDF5LIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB) $(MATHLIB)
+
+IssmModule_SOURCES = \
+	../BamgMesher/BamgMesher.cpp \
+	../Triangle/Triangle.cpp \
+	../NodeConnectivity/NodeConnectivity.cpp \
+	../ContourToMesh/ContourToMesh.cpp \
+	../ElementConnectivity/ElementConnectivity.cpp \
+	../InterpFromGridToMesh/InterpFromGridToMesh.cpp \
+	../InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp \
+	../IssmConfig/IssmConfig.cpp \
+	../Issm/issm.cpp
+
+IssmModule_CXXFLAGS= -fPIC -D_DO_NOT_LOAD_GLOBALS_  --memory-init-file 0 $(AM_CXXFLAGS) $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) -s EXPORTED_FUNCTIONS="['_BamgMesherModule','_TriangleModule','_NodeConnectivityModule','_ContourToMeshModule','_ElementConnectivityModule','_InterpFromGridToMeshModule','_InterpFromMeshToMesh2dModule','_IssmConfigModule','_IssmModule']" -s DISABLE_EXCEPTION_CATCHING=0 -s ALLOW_MEMORY_GROWTH=1 -s INVOKE_RUN=0
+IssmModule_LDADD = ${deps} $(TRIANGLELIB) $(GSLLIB)
+#}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/include/javascriptincludes.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/include/javascriptincludes.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/include/javascriptincludes.h	(revision 27955)
@@ -0,0 +1,15 @@
+
+#ifndef _JAVASCRIPT_INCLUDES_H_
+#define _JAVASCRIPT_INCLUDES_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_
+//nothing for now
+#endif
+
+#endif /*_JAVASCRIPT_INCLUDES_H_*/
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/include/wrapper_macros.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/include/wrapper_macros.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/include/wrapper_macros.h	(revision 27955)
@@ -0,0 +1,41 @@
+/* \file javascript macros.h
+ * \brief: macros used for the javascript bindings
+ */
+
+#ifndef _JAVASCRIPT_MACROS_H_
+#define _JAVASCRIPT_MACROS_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_
+/* MODULEBOOT/MODULEEND {{{*/
+
+/*The following macros hide the error exception handling in a javascript module. Just put 
+ * MODULEBOOT(); and MODULEEND(); at the beginning and end of a module, and c++ exceptions 
+ * will be trapped*/
+#define MODULEBOOT(); try{ \
+	IssmComm::SetComm();
+
+#define MODULEEND(); }\
+	catch(ErrorException &exception){\
+		printf(exception.WrapperReport()); \
+	}\
+	catch (exception &e){\
+		printf(e.what());\
+	}\
+	catch(...){\
+		printf("An unexpected error occurred");\
+	}\
+	return 0;\
+	}
+/*}}}*/
+/* CHECKARGUMENTS {{{*/
+#define CHECKARGUMENTS(NLHS,NRHS,functionpointer)  //do nothing, we are not creating a dynamic library here!
+/*}}}*/
+#endif
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/io/ApiPrintf.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/io/ApiPrintf.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/io/ApiPrintf.cpp	(revision 27955)
@@ -0,0 +1,19 @@
+/* \file ApiPrintf.c:
+ * \brief: API specific symbols from libISSMCore that we need to resolve here
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./javascriptio.h"
+
+/*Javascript printf i/o: */
+void ApiPrintf(const char* string){
+
+	/*use mexPrintf in matlab: */
+	printf(string);
+	return;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/io/FetchJavascriptData.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/io/FetchJavascriptData.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/io/FetchJavascriptData.cpp	(revision 27955)
@@ -0,0 +1,246 @@
+/*\file FetchData.cpp:
+ * \brief: general I/O interface to fetch data in javascript
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./javascriptio.h"
+#include <cstring>
+
+/*Primitive data types*/
+/*FUNCTION FetchData(char** pstring, char* string){{{*/
+void FetchData(char** pstring, char* stringin){
+	char* string=NULL;
+
+	string=xNew<char>(strlen(stringin)+1); xMemCpy<char>(string,stringin,strlen(stringin)+1);
+
+	*pstring=string;
+}
+/*}}}*/
+/*FUNCTION FetchData(int* pinteger, int integer){{{*/
+void FetchData(int* pinteger, int integer){
+	*pinteger=integer;
+}
+/*}}}*/
+/*FUNCTION FetchData(double* pscalar, double scalar){{{*/
+void FetchData(double* pscalar, double scalar){
+	*pscalar=scalar;
+}
+/*}}}*/
+/*FUNCTION FetchData(double **pvector, double* vectorin, int nods){{{*/
+void FetchData(double** pvector, double* vectorin, int nods){
+	double* vector=NULL;
+
+	vector=xNew<IssmPDouble>(nods); xMemCpy<IssmPDouble>(vector,vectorin,nods);
+
+	*pvector=vector;
+}
+/*}}}*/
+/*FUNCTION FetchData(double **pvector, int* pnods, double* vectorin, int nods){{{*/
+void FetchData(double** pvector, int* pnods, double* vectorin, int nods){
+	double* vector=NULL;
+
+	vector=xNew<IssmPDouble>(nods); xMemCpy<IssmPDouble>(vector,vectorin,nods);
+
+	*pvector=vector;
+	*pnods=nods;
+}
+/*}}}*/
+/*FUNCTION FetchData(double **pmatrix, int* pM, int* pN, int* matrix, int M, int N){{{*/
+void FetchData(double **pmatrix, int* pM, int* pN, int* matrixin, int M, int N){
+	double*  outmatrix=NULL;
+	int      outmatrix_rows, outmatrix_cols;
+
+	if(M == 0 || N == 0){
+		/*Nothing to pick up. Just initialize matrix pointer to NULL: */
+		outmatrix_rows=0;
+		outmatrix_cols=0;
+		outmatrix=NULL;
+	}
+    else if (pmatrix && matrixin){
+		outmatrix_rows=M;
+		outmatrix_cols=N;
+		outmatrix=xNew<IssmPDouble>(M*N);
+		for(int i=0;i<M*N;i++){outmatrix[i]=(IssmPDouble)matrixin[i];}
+	}
+
+	/*Assign output pointers:*/
+	*pmatrix=outmatrix;
+	if (pM){*pM=outmatrix_rows;}
+	if (pN){*pN=outmatrix_cols;}
+}
+/*}}}*/
+/*FUNCTION FetchData(double **pmatrix, int* pM, int* pN, double* matrix, int M, int N){{{*/
+void FetchData(double **pmatrix, int* pM, int* pN, double* matrixin, int M, int N){
+	double*  outmatrix=NULL;
+	int      outmatrix_rows, outmatrix_cols;
+
+	if(M == 0 || N == 0){
+		/*Nothing to pick up. Just initialize matrix pointer to NULL: */
+		outmatrix_rows=0;
+		outmatrix_cols=0;
+		outmatrix=NULL;
+	}
+    else if (pmatrix && matrixin){
+		outmatrix_rows=M;
+		outmatrix_cols=N;
+		outmatrix=xNew<IssmPDouble>(M*N); xMemCpy<IssmPDouble>(outmatrix,matrixin,M*N);
+	}
+
+	/*Assign output pointers:*/
+	*pmatrix=outmatrix;
+	if (pM){*pM=outmatrix_rows;}
+	if (pN){*pN=outmatrix_cols;}
+}
+/*}}}*/
+/*FUNCTION FetchData(int **pmatrix, int* pM, int* pN, int* matrix, int M, int N){{{*/
+void FetchData(int **pmatrix, int* pM, int* pN, int* matrixin, int M, int N){
+	int*     outmatrix=NULL;
+	int      outmatrix_rows, outmatrix_cols;
+
+	if(M == 0 || N == 0){
+		/*Nothing to pick up. Just initialize matrix pointer to NULL: */
+		outmatrix_rows=0;
+		outmatrix_cols=0;
+		outmatrix=NULL;
+	}
+    else if (pmatrix && matrixin){
+		outmatrix_rows=M;
+		outmatrix_cols=N;
+		outmatrix=xNew<int>(M*N); xMemCpy<int>(outmatrix,matrixin,M*N);
+	}
+
+	/*Assign output pointers:*/
+	*pmatrix=outmatrix;
+	if (pM){*pM=outmatrix_rows;}
+	if (pN){*pN=outmatrix_cols;}
+}
+/*}}}*/
+/*ISSM objects*/
+/*FUNCTION FetchData(Contours** pcontours, double* x, double* y, int nods){{{*/
+void FetchData(Contours** pcontours, double* x, double* y, int nods){
+	int             numcontours, index, test1, test2;
+	char            *contourname = NULL;
+	Contours        *contours    = NULL;
+	Contour<double> *contouri    = NULL;
+
+	/*only 1 contour for now: */
+	contours=new Contours();
+
+	if (nods){
+		contouri=new Contour<double>();
+		contouri->nods=nods;
+		contouri->x=xNew<IssmPDouble>(nods); xMemCpy<IssmPDouble>(contouri->x,x,nods);
+		contouri->y=xNew<IssmPDouble>(nods); xMemCpy<IssmPDouble>(contouri->y,y,nods);
+		contours->AddObject(contouri);
+	}
+
+	*pcontours=contours;
+}
+/*}}}*/
+/*FUNCTION FetchData(BamgGeom** pbamggeom, int* VerticesSize, double* Vertices, int* EdgesSize, double* Edges, int* CornersSize, double* Corners, int* RequiredVerticesSize, double* RequiredVertices, int* RequiredEdgesSize, double* RequiredEdges, int* CrackedEdgesSize, double* CrackedEdges, int* SubDomainsSize, double* SubDomains){{{*/
+void FetchData(BamgGeom** pbamggeom, int* VerticesSize, double* Vertices, int* EdgesSize, double* Edges, int* CornersSize, double* Corners, int* RequiredVerticesSize, double* RequiredVertices, int* RequiredEdgesSize, double* RequiredEdges, int* CrackedEdgesSize, double* CrackedEdges, int* SubDomainsSize, double* SubDomains){
+
+	/*Initialize output*/
+	BamgGeom* bamggeom=new BamgGeom();
+
+	/*Fetch all fields*/
+	FetchData(&bamggeom->Vertices, &bamggeom->VerticesSize[0], &bamggeom->VerticesSize[1], Vertices, VerticesSize[0], VerticesSize[1]);
+	FetchData(&bamggeom->Edges, &bamggeom->EdgesSize[0], &bamggeom->EdgesSize[1], Edges, EdgesSize[0], EdgesSize[1]);
+	FetchData(&bamggeom->Corners, &bamggeom->CornersSize[0], &bamggeom->CornersSize[1], Corners, CornersSize[0], CornersSize[1]);
+	FetchData(&bamggeom->RequiredVertices, &bamggeom->RequiredVerticesSize[0], &bamggeom->RequiredVerticesSize[1], RequiredVertices, RequiredVerticesSize[0], RequiredVerticesSize[1]);
+	FetchData(&bamggeom->RequiredEdges, &bamggeom->RequiredEdgesSize[0], &bamggeom->RequiredEdgesSize[1], RequiredEdges, RequiredEdgesSize[0], RequiredEdgesSize[1]);
+	FetchData(&bamggeom->CrackedEdges, &bamggeom->CrackedEdgesSize[0], &bamggeom->CrackedEdgesSize[1], CrackedEdges, CrackedEdgesSize[0], CrackedEdgesSize[1]);
+	FetchData(&bamggeom->SubDomains, &bamggeom->SubDomainsSize[0], &bamggeom->SubDomainsSize[1], SubDomains, SubDomainsSize[0], SubDomainsSize[1]);
+
+	/*Assign output pointers:*/
+	*pbamggeom=bamggeom;
+}
+/*}}}*/
+/*FUNCTION FetchData(BamgMesh** pbamgmesh, int* VerticesSize, double* Vertices, int* EdgesSize, double* Edges, int* TrianglesSize, double* Triangles, int* CrackedEdgesSize, double* CrackedEdges, int* VerticesOnGeomEdgeSize, double* VerticesOnGeomEdge, int* VerticesOnGeomVertexSize, double* VerticesOnGeomVertex, int* EdgesOnGeomEdgeSize, double* EdgesOnGeomEdge, int* IssmSegmentsSize, double* IssmSegments){{{*/
+void FetchData(BamgMesh** pbamgmesh, int* VerticesSize, double* Vertices, int* EdgesSize, double* Edges, int* TrianglesSize, double* Triangles, int* CrackedEdgesSize, double* CrackedEdges, int* VerticesOnGeomEdgeSize, double* VerticesOnGeomEdge, int* VerticesOnGeomVertexSize, double* VerticesOnGeomVertex, int* EdgesOnGeomEdgeSize, double* EdgesOnGeomEdge, int* IssmSegmentsSize, double* IssmSegments){
+
+	/*Initialize output*/
+	BamgMesh* bamgmesh=new BamgMesh();
+
+	/*Fetch all fields*/
+	FetchData(&bamgmesh->Vertices, &bamgmesh->VerticesSize[0], &bamgmesh->VerticesSize[1], Vertices, VerticesSize[0], VerticesSize[1]);
+	FetchData(&bamgmesh->Edges, &bamgmesh->EdgesSize[0], &bamgmesh->EdgesSize[1], Edges, EdgesSize[0], EdgesSize[1]);
+	FetchData(&bamgmesh->Triangles, &bamgmesh->TrianglesSize[0], &bamgmesh->TrianglesSize[1], Triangles, TrianglesSize[0], TrianglesSize[1]);
+	FetchData(&bamgmesh->CrackedEdges, &bamgmesh->CrackedEdgesSize[0], &bamgmesh->CrackedEdgesSize[1], CrackedEdges, CrackedEdgesSize[0], CrackedEdgesSize[1]);
+	FetchData(&bamgmesh->VerticesOnGeomEdge, &bamgmesh->VerticesOnGeomEdgeSize[0], &bamgmesh->VerticesOnGeomEdgeSize[1], VerticesOnGeomEdge, VerticesOnGeomEdgeSize[0], VerticesOnGeomEdgeSize[1]);
+	FetchData(&bamgmesh->VerticesOnGeomVertex, &bamgmesh->VerticesOnGeomVertexSize[0], &bamgmesh->VerticesOnGeomVertexSize[1], VerticesOnGeomVertex, VerticesOnGeomVertexSize[0], VerticesOnGeomVertexSize[1]);
+	FetchData(&bamgmesh->EdgesOnGeomEdge, &bamgmesh->EdgesOnGeomEdgeSize[0], &bamgmesh->EdgesOnGeomEdgeSize[1], EdgesOnGeomEdge, EdgesOnGeomEdgeSize[0], EdgesOnGeomEdgeSize[1]);
+	FetchData(&bamgmesh->IssmSegments, &bamgmesh->IssmSegmentsSize[0], &bamgmesh->IssmSegmentsSize[1], IssmSegments, IssmSegmentsSize[0], IssmSegmentsSize[1]);
+
+	/*Assign output pointers:*/
+	*pbamgmesh=bamgmesh;
+}
+/*}}}*/
+/*FUNCTION FetchData(BamgOpts** pbamgopts, double anisomax, double cutoff, double coeff, double errg, double gradation, int Hessiantype, int maxnbv, double maxsubdiv, int Metrictype, int nbjacobi, int nbsmooth, double omega, double power, int verbose, int Crack, int KeepVertices, int splitcorners, double hmin, double hmax, int* hminVerticesSize, double* hminVertices, int* hmaxVerticesSize, double* hmaxVertices, int hVerticesLength, double* hVertices, int* metricSize, double* metric, int* fieldSize, double* field, int* errSize, double* err){{{*/
+void FetchData(BamgOpts** pbamgopts, double anisomax, double coeff, double cutoff, double errg, double gradation, int Hessiantype, int maxnbv, double maxsubdiv, int Metrictype, int nbjacobi, int nbsmooth, double omega, double power, int verbose, int Crack, int KeepVertices, int splitcorners, double hmin, double hmax, int* hminVerticesSize, double* hminVertices, int* hmaxVerticesSize, double* hmaxVertices, int hVerticesLength, double* hVertices, int* metricSize, double* metric, int* fieldSize, double* field, int* errSize, double* err){
+
+	BamgOpts *bamgopts      = new BamgOpts();
+
+    /*Parameters*/
+    bamgopts->anisomax	    = anisomax;
+    bamgopts->coeff	        = coeff;
+    bamgopts->cutoff    	= cutoff;
+    bamgopts->errg	        = errg;
+    bamgopts->gradation	    = gradation;
+    bamgopts->Hessiantype	= Hessiantype;
+    bamgopts->maxnbv	    = maxnbv;
+    bamgopts->maxsubdiv	    = maxsubdiv;
+    bamgopts->Metrictype	= Metrictype;
+    bamgopts->nbjacobi	    = nbjacobi;
+    bamgopts->nbsmooth	    = nbsmooth;
+    bamgopts->omega	        = omega;
+    bamgopts->power	        = power;
+    bamgopts->verbose	    = verbose;
+
+    /*Flags*/
+    bamgopts->Crack	        = Crack;
+    bamgopts->KeepVertices	= KeepVertices;
+    bamgopts->splitcorners	= splitcorners;
+
+    /*Metric related*/
+    bamgopts->hmin	        = hmin;
+    bamgopts->hmax       	= hmax;
+	FetchData(&bamgopts->hminVertices, &bamgopts->hminVerticesSize[0], &bamgopts->hminVerticesSize[1], hminVertices, hminVerticesSize[0], hminVerticesSize[1]);
+	FetchData(&bamgopts->hmaxVertices, &bamgopts->hmaxVerticesSize[0], &bamgopts->hmaxVerticesSize[1], hmaxVertices, hmaxVerticesSize[0], hmaxVerticesSize[1]);
+	FetchData(&bamgopts->hVertices, &bamgopts->hVerticesLength, hVertices, hVerticesLength);
+	FetchData(&bamgopts->field, &bamgopts->fieldSize[0], &bamgopts->fieldSize[1], field, fieldSize[0], fieldSize[1]);
+	FetchData(&bamgopts->metric, &bamgopts->metricSize[0], &bamgopts->metricSize[1], metric, metricSize[0], metricSize[1]);
+	FetchData(&bamgopts->err, &bamgopts->errSize[0], &bamgopts->errSize[1], err, errSize[0], errSize[1]);
+
+	/*Additional checks*/
+	bamgopts->Check();
+
+	/*Assign output pointers:*/
+	*pbamgopts=bamgopts;
+}
+/*}}}*/
+/*FUNCTION FetchData(Options** poptions, int NRHS, int nrhs, const char* optionname, double optionvalue){{{*/
+void FetchData(Options** poptions, int NRHS, int nrhs, const char* optionname, double optionvalue){
+
+	/*Initialize output*/
+	Options* options=new Options();
+
+	/*check and parse the name  */
+	GenericOption<double> *odouble=new GenericOption<double>();
+	odouble=new GenericOption<double>();
+	odouble->name=xNew<char>(strlen(optionname)+1);
+	memcpy(odouble->name,optionname,(strlen(optionname)+1)*sizeof(char));
+	odouble->value=optionvalue;
+	odouble->size[0]=1;
+	odouble->size[1]=1;
+	options->AddOption((Option*)odouble);
+
+	/*Assign output pointers:*/
+	*poptions=options;
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/io/WriteJavascriptData.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/io/WriteJavascriptData.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/io/WriteJavascriptData.cpp	(revision 27955)
@@ -0,0 +1,173 @@
+/* \file WriteData.c:
+ * \brief: general interface for writing data
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./javascriptio.h"
+#include "./../../../c/datastructures/datastructures.h"
+
+/*Primitive data types*/
+/*FUNCTION WriteData(IssmPDouble** pmatrix, int* pnel, int* matrix, int M,int N){{{*/
+void WriteData(IssmPDouble** pmatrix, int* pnel, int* matrix, int M,int N){
+
+	if(pmatrix && matrix){
+
+		/*Copy matrix: */
+		IssmPDouble* dmatrix = xNew<IssmPDouble>(M*N); 
+		for (int i=0;i<M*N;i++)dmatrix[i]=(IssmPDouble)matrix[i];
+		*pmatrix=dmatrix;
+		*pnel=M;
+	}
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble** pmatrix, int* pM, int* pN, , int* matrix, int M,int N){{{*/
+void WriteData(IssmPDouble** pmatrix, int* pM, int* pN, int* matrix, int M, int N){
+
+	if(pmatrix && matrix){
+
+		/*Copy matrix: */
+	    IssmPDouble* dmatrix = xNew<IssmPDouble>(M*N); 
+		for (int i=0;i<M*N;i++) dmatrix[i]=(IssmPDouble)matrix[i];
+		*pmatrix=dmatrix;
+		*pM=M;
+		*pN=N;
+	}
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble** pmatrix, int* pM, IssmPDouble* pN, , int* matrix, int M,int N){{{*/
+void WriteData(IssmPDouble** pmatrix, int* pM, int* pN, IssmPDouble* matrix, int M, int N){
+
+	if(pmatrix && matrix){
+
+		/*Copy matrix: */
+		IssmPDouble* dmatrix = xNew<IssmPDouble>(M*N); 
+		for (int i=0;i<M*N;i++) dmatrix[i]=matrix[i];
+		*pmatrix=dmatrix;
+		*pM=M;
+		*pN=N;
+	}
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble** pmatrix, int** pSize, IssmPDouble* matrix, int* size){{{*/
+void WriteData(IssmPDouble** pmatrix, int** pSize, IssmPDouble* matrix, int* size){
+
+    int M = size[0];
+    int N = size[1];
+    int* imatrix = xNew<int>(2);
+    IssmPDouble* dmatrix = xNew<IssmPDouble>(M*N); 
+
+    /*Copy matrix: */
+    for (int i=0;i<2;i++) imatrix[i]=size[i];
+    for (int i=0;i<M*N;i++) dmatrix[i]=matrix[i];
+    *pmatrix=dmatrix;
+    *pSize=imatrix;
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble** px, int* pnods, double* vector, int M){{{*/
+void WriteData(IssmPDouble** px, int* pnods, double* vector, int M){
+
+	if(px && vector){
+
+		IssmPDouble* dx=xNew<IssmPDouble>(M); 
+		for(int i=0;i<M;i++)dx[i]=vector[i];
+		*px=dx;
+		*pnods=M;
+	}
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble** px, int* pnods, int* vector, int M){{{*/
+void WriteData(IssmPDouble** px, int* pnods, int* vector, int M){
+
+	if(px && vector){
+
+		IssmPDouble* dx=xNew<IssmPDouble>(M); 
+		for(int i=0;i<M;i++)dx[i]=(IssmPDouble)vector[i];
+		*px=dx;
+		*pnods=M;
+	}
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble* pdouble, IssmSeqVec<double> vector){{{*/
+void WriteData(IssmPDouble** pdataref, IssmSeqVec<double>* vector){
+
+    double*  dataref=NULL;
+    double*  vector_ptr=NULL;
+    int      rows;
+
+    if(vector){
+        /*call toolkit routine: */
+        vector_ptr=vector->ToMPISerial();
+        vector->GetSize(&rows);
+
+        /*now create the js vector */
+		dataref=xNew<double>(rows); 
+        for(int i=0;i<rows;i++) dataref[i]=vector_ptr[i];
+    }
+
+    /*Clean-up and return*/
+    xDelete<double>(vector_ptr);
+    *pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble* pdouble, IssmPDouble double){{{*/
+void WriteData(IssmPDouble* pdouble, IssmPDouble doublein){
+
+	*pdouble=doublein;
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble** pdouble, void* nullptr){{{*/
+void WriteData(IssmPDouble** pdouble, void*){
+	//do nothing
+}
+/*}}}*/
+/*FUNCTION WriteData(char** pstring, char* string){{{*/
+void WriteData(char** pstring, char* stringin){
+
+	char* string=xNew<char>(strlen(stringin)+1);
+	xMemCpy<char>(string,stringin,strlen(stringin)+1);
+
+	*pstring=string;
+}
+/*}}}*/
+
+/*ISSM objects*/
+/*FUNCTION WriteData(int** VerticesSize, double** Vertices, int** EdgesSize, double** Edges, int** CornersSize, double** Corners, int** RequiredVerticesSize, double** RequiredVertices, int** RequiredEdgesSize, double** RequiredEdges, int** CrackedEdgesSize, double** CrackedEdges, int** SubDomainsSize, double** SubDomains, BamgGeom* bamggeom){{{*/
+void WriteData(int** VerticesSize, double** Vertices, int** EdgesSize, double** Edges, int** CornersSize, double** Corners, int** RequiredVerticesSize, double** RequiredVertices, int** RequiredEdgesSize, double** RequiredEdges, int** CrackedEdgesSize, double** CrackedEdges, int** SubDomainsSize, double** SubDomains, BamgGeom* bamggeom){
+
+	/*Assign each field to output*/
+    WriteData(Vertices, VerticesSize, bamggeom->Vertices, bamggeom->VerticesSize);
+    WriteData(Edges, EdgesSize, bamggeom->Edges, bamggeom->EdgesSize);
+    WriteData(Corners, CornersSize, bamggeom->Corners, bamggeom->CornersSize);
+    WriteData(RequiredVertices, RequiredVerticesSize, bamggeom->RequiredVertices, bamggeom->RequiredVerticesSize);
+    WriteData(RequiredEdges, RequiredEdgesSize, bamggeom->RequiredEdges, bamggeom->RequiredEdgesSize);
+    WriteData(CrackedEdges, CrackedEdgesSize, bamggeom->CrackedEdges, bamggeom->CrackedEdgesSize);
+    WriteData(SubDomains, SubDomainsSize, bamggeom->SubDomains, bamggeom->SubDomainsSize);
+}
+/*}}}*/
+/*FUNCTION WriteData(int** VerticesSize, double** Vertices, int** EdgesSize, double** Edges, int** TrianglesSize, double** Triangles, int** IssmEdgesSize, double** IssmEdges, int** IssmSegmentsSize, double** IssmSegments, int** VerticesOnGeomVertexSize, double** VerticesOnGeomVertex, int** VerticesOnGeomEdgeSize, double** VerticesOnGeomEdge, int** EdgesOnGeomEdgeSize, double** EdgesOnGeomEdge, int** SubDomainsSize, double** SubDomains, int** SubDomainsFromGeomSize, double** SubDomainsFromGeom, int** ElementConnectivitySize, double** ElementConnectivity, int** NodalConnectivitySize, double** NodalConnectivity, int** NodalElementConnectivitySize, double** NodalElementConnectivity, int** CrackedVerticesSize, double** CrackedVertices, int** CrackedEdgesSize, double** CrackedEdges, int** PreviousNumberingSize, double** PreviousNumbering, BamgMesh* bamgmesh){{{*/
+void WriteData(int** VerticesSize, double** Vertices, int** EdgesSize, double** Edges, int** TrianglesSize, double** Triangles, int** IssmEdgesSize, double** IssmEdges, int** IssmSegmentsSize, double** IssmSegments, int** VerticesOnGeomVertexSize, double** VerticesOnGeomVertex, int** VerticesOnGeomEdgeSize, double** VerticesOnGeomEdge, int** EdgesOnGeomEdgeSize, double** EdgesOnGeomEdge, int** SubDomainsSize, double** SubDomains, int** SubDomainsFromGeomSize, double** SubDomainsFromGeom, int** ElementConnectivitySize, double** ElementConnectivity, int** NodalConnectivitySize, double** NodalConnectivity, int** NodalElementConnectivitySize, double** NodalElementConnectivity, int** CrackedVerticesSize, double** CrackedVertices, int** CrackedEdgesSize, double** CrackedEdges, int** PreviousNumberingSize, double** PreviousNumbering, BamgMesh* bamgmesh){
+
+	/*Assign each field to output*/
+    WriteData(Vertices, VerticesSize, bamgmesh->Vertices, bamgmesh->VerticesSize);
+    WriteData(Edges, EdgesSize, bamgmesh->Edges, bamgmesh->EdgesSize);
+    WriteData(Triangles, TrianglesSize, bamgmesh->Triangles, bamgmesh->TrianglesSize);
+    WriteData(IssmEdges, IssmEdgesSize, bamgmesh->IssmEdges, bamgmesh->IssmEdgesSize);
+    WriteData(IssmSegments, IssmSegmentsSize, bamgmesh->IssmSegments, bamgmesh->IssmSegmentsSize);
+    WriteData(VerticesOnGeomVertex, VerticesOnGeomVertexSize, bamgmesh->VerticesOnGeomVertex, bamgmesh->VerticesOnGeomVertexSize);
+    WriteData(VerticesOnGeomEdge, VerticesOnGeomEdgeSize, bamgmesh->VerticesOnGeomEdge, bamgmesh->VerticesOnGeomEdgeSize);
+    WriteData(EdgesOnGeomEdge, EdgesOnGeomEdgeSize, bamgmesh->EdgesOnGeomEdge, bamgmesh->EdgesOnGeomEdgeSize);
+    WriteData(SubDomains, SubDomainsSize, bamgmesh->SubDomains, bamgmesh->SubDomainsSize);
+    WriteData(SubDomainsFromGeom, SubDomainsFromGeomSize, bamgmesh->SubDomainsFromGeom, bamgmesh->SubDomainsFromGeomSize);
+    WriteData(ElementConnectivity, ElementConnectivitySize, bamgmesh->ElementConnectivity, bamgmesh->ElementConnectivitySize);
+    WriteData(NodalConnectivity, NodalConnectivitySize, bamgmesh->NodalConnectivity, bamgmesh->NodalConnectivitySize);
+    WriteData(NodalElementConnectivity, NodalElementConnectivitySize, bamgmesh->NodalElementConnectivity, bamgmesh->NodalElementConnectivitySize);
+    WriteData(CrackedVertices, CrackedVerticesSize, bamgmesh->CrackedVertices, bamgmesh->CrackedVerticesSize);
+    WriteData(CrackedEdges, CrackedEdgesSize, bamgmesh->CrackedEdges, bamgmesh->CrackedEdgesSize);
+    WriteData(PreviousNumbering, PreviousNumberingSize, bamgmesh->PreviousNumbering, bamgmesh->VerticesSize); //PreviousNumbering just resuses Vertices' Size
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/io/javascriptio.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/io/javascriptio.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/javascript/io/javascriptio.h	(revision 27955)
@@ -0,0 +1,50 @@
+/*\file matlabio.h
+ *\brief: I/O for ISSM in matlab mode
+ */
+
+#ifndef _JAVASCRIPT_IO_H_
+#define _JAVASCRIPT_IO_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif 
+
+#include "../include/javascriptincludes.h"
+#include "../../../c/bamg/bamgobjects.h"
+#include "../../../c/classes/classes.h"
+#include "../../../c/toolkits/toolkits.h"
+#include "../../../c/shared/shared.h"
+
+void WriteData(IssmPDouble** pmatrix, int* pnel, int* matrix, int M,int N);
+void WriteData(IssmPDouble** pmatrix, int* pM, int* pN, int* matrix, int M, int N);
+void WriteData(IssmPDouble** pmatrix, int* pM, int* pN, IssmPDouble* matrix, int M, int N);
+void WriteData(IssmPDouble** pmatrix, int** pSize, IssmPDouble* matrix, int* size);
+void WriteData(IssmPDouble** px, int* pnods, int* vector, int M);
+void WriteData(IssmPDouble** px, int* pnods, double* vector, int M);
+void WriteData(char** pstring, char* stringin);
+void WriteData(IssmPDouble* pdouble, IssmPDouble doublein);
+void WriteData(IssmPDouble** pdataref, IssmSeqVec<double>* vector);
+void WriteData(IssmPDouble** pdouble, void*);
+void WriteData(int** VerticesSize, double** Vertices, int** EdgesSize, double** Edges, int** CornersSize, double** Corners, int** RequiredVerticesSize, double** RequiredVertices, int** RequiredEdgesSize, double** RequiredEdges, int** CrackedEdgesSize, double** CrackedEdges, int** SubDomainsSize, double** SubDomains, BamgGeom* bamggeom);
+void WriteData(int** VerticesSize, double** Vertices, int** EdgesSize, double** Edges, int** TrianglesSize, double** Triangles, int** IssmEdgesSize, double** IssmEdges, int** IssmSegmentsSize, double** IssmSegments, int** VerticesOnGeomVertexSize, double** VerticesOnGeomVertex, int** VerticesOnGeomEdgeSize, double** VerticesOnGeomEdge, int** EdgesOnGeomEdgeSize, double** EdgesOnGeomEdge, int** SubDomainsSize, double** SubDomains, int** SubDomainsFromGeomSize, double** SubDomainsFromGeom, int** ElementConnectivitySize, double** ElementConnectivity, int** NodalConnectivitySize, double** NodalConnectivity, int** NodalElementConnectivitySize, double** NodalElementConnectivity, int** CrackedVerticesSize, double** CrackedVertices, int** CrackedEdgesSize, double** CrackedEdges, int** PreviousNumberingSize, double** PreviousNumbering, BamgMesh* bamgmesh);
+
+void FetchData(char** pstring, char* stringin);
+void FetchData(double* pscalar,double scalar);
+void FetchData(int* pinteger,int integer);
+void FetchData(double** pvector, double* vectorin, int nods);
+void FetchData(double** pvector, int* pnods, double* vectorin, int nods);
+void FetchData(double **pmatrix, int* pM, int* pN, int* matrixin, int M, int N);
+void FetchData(double **pmatrix, int* pM, int* pN, double* matrixin, int M, int N);
+void FetchData(int **pmatrix, int* pM, int* pN, int* matrixin, int M, int N);
+void FetchData(Contours** pcontours,double* x, double* y, int nods);
+void FetchData(BamgGeom** pbamggeom, int* VerticesSize, double* Vertices, int* EdgesSize, double* Edges, int* CornersSize, double* Corners, int* RequiredVerticesSize, double* RequiredVertices, int* RequiredEdgesSize, double* RequiredEdges, int* CrackedEdgesSize, double* CrackedEdges, int* SubDomainsSize, double* SubDomains);
+void FetchData(BamgMesh** pbamgmesh, int* VerticesSize, double* Vertices, int* EdgesSize, double* Edges, int* TrianglesSize, double* Triangles, int* CrackedEdgesSize, double* CrackedEdges, int* VerticesOnGeomEdgeSize, double* VerticesOnGeomEdge, int* VerticesOnGeomVertexSize, double* VerticesOnGeomVertex, int* EdgesOnGeomEdgeSize, double* EdgesOnGeomEdge, int* IssmSegmentsSize, double* IssmSegments);
+void FetchData(BamgOpts** pbamgopts, double anisomax, double cutoff, double coeff, double errg, double gradation, int Hessiantype, int maxnbv, double maxsubdiv, int Metrictype, int nbjacobi, int nbsmooth, double omega, double power, int verbose, int Crack, int KeepVertices, int splitcorners, double hmin, double hmax, int* hminVerticesSize, double* hminVertices, int* hmaxVerticesSize, double* hmaxVertices, int hVerticesLength, double* hVertices, int* metricSize, double* metric, int* fieldSize, double* field, int* errSize, double* err);
+void FetchData(Options** poptions,int NRHS, int nrhs, const char* optionname, double optionvalue);
+void FetchData(int* pinteger,int integer);
+
+/*Print*/
+void ApiPrintf(const char* string);
+#endif	/* _IO_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/Makefile.am
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/Makefile.am	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/Makefile.am	(revision 27955)
@@ -0,0 +1,251 @@
+AM_CPPFLAGS = @NEOPZINCL@ @DAKOTAINCL@ @BOOSTINCL@ @MATLABINCL@ @PETSCINCL@ @MPIINCL@ @SPOOLESINCL@ @PARMETISINCL@ @METISINCL@ @TRIANGLEINCL@ @CHACOINCL@ @SCOTCHINCL@ @SHAPELIBINCL@ @AMPIINCL@ @ADJOINTMPIINCL@ @MEDIPACKINCL@ @CODIPACKINCL@ @PROJINCL@
+AUTOMAKE_OPTIONS = subdir-objects
+
+EXEEXT=$(MATLABWRAPPEREXT)
+
+#define prefix (from http://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/Defining-Directories.html)
+AM_CPPFLAGS += -DISSM_PREFIX='"$(prefix)"'
+
+#matlab io{{{
+lib_LTLIBRARIES = libISSMMatlab.la
+
+io_sources = \
+	./io/CheckNumMatlabArguments.cpp \
+	./io/FetchMatlabData.cpp \
+	./io/WriteMatlabData.cpp
+
+ALL_CXXFLAGS = -fPIC -D_WRAPPERS_
+
+if MSYS2
+ALL_CXXFLAGS += -D_DO_NOT_LOAD_GLOBALS_ # Cannot have undefined symbols under MSYS2
+ALL_CXXFLAGS += -D_USE_MATH_DEFINES # Need to open fence to math.h definitions when --std=c++ is used (which is the default)
+endif
+
+ALL_CXXFLAGS += $(CXXOPTFLAGS) $(CXXFLAGS)
+
+libISSMMatlab_la_SOURCES = $(io_sources)
+libISSMMatlab_la_CXXFLAGS = ${ALL_CXXFLAGS}
+#}}}
+#api io{{{
+lib_LTLIBRARIES += libISSMApi.la
+
+if !MSYS2
+api_sources= ./io/ApiPrintf.cpp
+
+libISSMApi_la_SOURCES = $(api_sources)
+libISSMApi_la_CXXFLAGS = ${ALL_CXXFLAGS}
+endif
+#}}}
+#Wrappers {{{
+lib_LTLIBRARIES += \
+	BamgConvertMesh_matlab.la \
+	BamgMesher_matlab.la \
+	BamgTriangulate_matlab.la \
+	ContourToMesh_matlab.la \
+	ContourToNodes_matlab.la \
+	DistanceToMaskBoundary_matlab.la \
+	ElementConnectivity_matlab.la \
+	ExpSimplify_matlab.la \
+	ExpToLevelSet_matlab.la \
+	InterpFromGridToMesh_matlab.la \
+	InterpFromMesh2d_matlab.la \
+	InterpFromMeshToGrid_matlab.la \
+	InterpFromMeshToMesh2d_matlab.la \
+	InterpFromMeshToMesh3d_matlab.la \
+	IssmConfig_matlab.la \
+	M1qn3_matlab.la \
+	MeshPartition_matlab.la \
+	MeshProfileIntersection_matlab.la \
+	NodeConnectivity_matlab.la \
+	PointCloudFindNeighbors_matlab.la \
+	ProcessRifts_matlab.la \
+	PropagateFlagsFromConnectivity_matlab.la \
+	Scotch_matlab.la \
+	Triangle_matlab.la
+
+if CHACO
+lib_LTLIBRARIES += Chaco_matlab.la
+endif
+if KRIGING
+lib_LTLIBRARIES += Kriging_matlab.la
+endif
+if SHP
+lib_LTLIBRARIES += ShpRead_matlab.la
+endif
+if PROJ
+lib_LTLIBRARIES += CoordTransform_matlab.la
+endif
+#}}}
+
+# Dependencies {{{
+deps = $(MATHLIB)
+
+# Triangle
+CXXFLAGS_FOR_TRI = -DTRILIBRARY -DANSI_DECLARATORS -DNO_TIMER
+
+# MATLAB
+CXXFLAGS_FOR_MEX = -D_HAVE_MATLAB_MODULES_ $(MEXOPTFLAGS) $(MEXCXXFLAGS)
+CPPFLAGS_FOR_MEX = $(MATLABINCL)
+LDFLAGS_FOR_MEX = -module -shrext $(MEXEXT) -no-undefined
+LIBADD_FOR_MEX = $(MEXLINKFLAGS) $(MEXLIB)
+
+AM_CPPFLAGS += ${CXXFLAGS_FOR_MEX}
+AM_CXXFLAGS = ${CXXFLAGS_FOR_TRI} ${CPPFLAGS_FOR_MEX}
+AM_LDFLAGS = ${LDFLAGS_FOR_MEX}
+
+if !MSYS2
+AM_LDFLAGS += --export-dynamic -rdynamic
+endif
+
+if !VERSION
+AM_LDFLAGS += -avoid-version
+endif
+
+# NOTE:
+# - On Linux, We probably do not need the -static flag as long as we only
+#	generate static libraries for external packages. Dynamic system libraries
+#	will be linked to, whether we like it or not, if no static version is
+#	available.
+# - On macOS, static linking of binaries is not supported.
+#
+if STANDALONE_MODULES
+if MAC
+AM_LDFLAGS += -Wl,-rpath,'@rpath'
+else
+AM_LDFLAGS += -Wl,-lbacktrace
+if !MSYS2
+AM_LDFLAGS += -Wl,-static -Wl,--disable-new-dtags -Wl,-rpath,'$$ORIGIN'
+endif
+endif
+endif
+
+AM_CXXFLAGS += -fPIC -D_WRAPPERS_
+
+deps += ./libISSMMatlab.la ../../c/libISSMCore.la ../../c/libISSMModules.la
+
+if !MSYS2
+deps += ./libISSMApi.la
+endif
+
+if ADOLC
+deps += $(ADOLCLIB)
+endif
+
+if FORTRAN
+deps += $(FLIBS) $(FORTRANLIB)
+endif
+
+deps += ${LIBADD_FOR_MEX}
+
+# Optimization flags
+AM_CXXFLAGS += $(CXXOPTFLAGS)
+#}}}
+# Module sources and dependencies {{{
+libISSMMatlab_la_LIBADD = ./../../c/libISSMCore.la ./../../c/libISSMModules.la $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(HDF5LIB) $(MPILIB) $(NEOPZLIB) $(MKLLIB) $(GSLLIB) $(PROJLIB) $(MATHLIB) $(MEXLIB)
+
+if VERSION
+libISSMMatlab_la_LDFLAGS =
+libISSMApi_la_LDFLAGS =
+else
+libISSMMatlab_la_LDFLAGS = -avoid-version
+libISSMApi_la_LDFLAGS = -avoid-version
+endif
+
+if STANDALONE_LIBRARIES
+if !MSYS2
+libISSMMatlab_la_LDFLAGS += -static
+libISSMApi_la_LDFLAGS += -static
+endif
+deps += $(DAKOTALIB) $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(HDF5LIB) $(TAOLIB) $(M1QN3LIB) $(SEMICLIB) $(PLAPACKLIB) $(SUPERLULIB) $(SPOOLESLIB) $(TRIANGLELIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(SCOTCHLIB) $(MKLLIB) $(MPILIB) $(NEOPZLIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(ADOLCLIB) $(AMPILIB) $(METEOIOLIB) $(SNOWPACKLIB) $(PROJLIB) $(OSLIBS) ${LIBADD_FOR_MEX}
+endif
+
+libISSMApi_la_LIBADD = $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(HDF5LIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB) $(MATHLIB) $(MEXLIB)
+
+BamgConvertMesh_matlab_la_SOURCES = ../BamgConvertMesh/BamgConvertMesh.cpp
+BamgConvertMesh_matlab_la_LIBADD = ${deps}
+
+BamgMesher_matlab_la_SOURCES = ../BamgMesher/BamgMesher.cpp
+BamgMesher_matlab_la_LIBADD = ${deps}
+
+BamgTriangulate_matlab_la_SOURCES = ../BamgTriangulate/BamgTriangulate.cpp
+BamgTriangulate_matlab_la_LIBADD = ${deps}
+
+if CHACO
+Chaco_matlab_la_SOURCES = ../Chaco/Chaco.cpp
+Chaco_matlab_la_LIBADD = ${deps} $(CHACOLIB)
+endif
+
+ContourToMesh_matlab_la_SOURCES = ../ContourToMesh/ContourToMesh.cpp
+ContourToMesh_matlab_la_LIBADD = ${deps}
+
+ContourToNodes_matlab_la_SOURCES = ../ContourToNodes/ContourToNodes.cpp
+ContourToNodes_matlab_la_LIBADD = ${deps}
+
+if PROJ
+CoordTransform_matlab_la_SOURCES = ../CoordTransform/CoordTransform.cpp
+CoordTransform_matlab_la_LIBADD = ${deps}
+endif
+
+DistanceToMaskBoundary_matlab_la_SOURCES = ../DistanceToMaskBoundary/DistanceToMaskBoundary.cpp
+DistanceToMaskBoundary_matlab_la_LIBADD = ${deps}
+
+ElementConnectivity_matlab_la_SOURCES = ../ElementConnectivity/ElementConnectivity.cpp
+ElementConnectivity_matlab_la_LIBADD = ${deps}
+
+ExpToLevelSet_matlab_la_SOURCES = ../ExpToLevelSet/ExpToLevelSet.cpp
+ExpToLevelSet_matlab_la_LIBADD = ${deps}
+
+ExpSimplify_matlab_la_SOURCES = ../ExpSimplify/ExpSimplify.cpp
+ExpSimplify_matlab_la_LIBADD = ${deps}
+
+InterpFromGridToMesh_matlab_la_SOURCES = ../InterpFromGridToMesh/InterpFromGridToMesh.cpp
+InterpFromGridToMesh_matlab_la_LIBADD = ${deps}
+
+InterpFromMesh2d_matlab_la_SOURCES = ../InterpFromMesh2d/InterpFromMesh2d.cpp
+InterpFromMesh2d_matlab_la_LIBADD = ${deps}
+
+InterpFromMeshToGrid_matlab_la_SOURCES = ../InterpFromMeshToGrid/InterpFromMeshToGrid.cpp
+InterpFromMeshToGrid_matlab_la_LIBADD = ${deps}
+
+InterpFromMeshToMesh2d_matlab_la_SOURCES = ../InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp
+InterpFromMeshToMesh2d_matlab_la_LIBADD = ${deps}
+
+InterpFromMeshToMesh3d_matlab_la_SOURCES = ../InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.cpp
+InterpFromMeshToMesh3d_matlab_la_LIBADD = ${deps}
+
+IssmConfig_matlab_la_SOURCES = ../IssmConfig/IssmConfig.cpp
+IssmConfig_matlab_la_LIBADD = ${deps}
+
+Kriging_matlab_la_SOURCES = ../Kriging/Kriging.cpp
+Kriging_matlab_la_LIBADD = ${deps}
+
+M1qn3_matlab_la_SOURCES = ../M1qn3/M1qn3.cpp
+M1qn3_matlab_la_LIBADD = ${deps}
+
+MeshPartition_matlab_la_SOURCES = ../MeshPartition/MeshPartition.cpp
+MeshPartition_matlab_la_LIBADD = ${deps}
+
+MeshProfileIntersection_matlab_la_SOURCES = ../MeshProfileIntersection/MeshProfileIntersection.cpp
+MeshProfileIntersection_matlab_la_LIBADD = ${deps}
+
+NodeConnectivity_matlab_la_SOURCES = ../NodeConnectivity/NodeConnectivity.cpp
+NodeConnectivity_matlab_la_LIBADD = ${deps}
+
+PointCloudFindNeighbors_matlab_la_SOURCES = ../PointCloudFindNeighbors/PointCloudFindNeighbors.cpp
+PointCloudFindNeighbors_matlab_la_LIBADD = ${deps}
+
+PropagateFlagsFromConnectivity_matlab_la_SOURCES = ../PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.cpp
+PropagateFlagsFromConnectivity_matlab_la_LIBADD = ${deps}
+
+Scotch_matlab_la_SOURCES = ../Scotch/Scotch.cpp
+Scotch_matlab_la_LIBADD = ${deps}
+
+ShpRead_matlab_la_SOURCES = ../ShpRead/ShpRead.cpp
+ShpRead_matlab_la_LIBADD = ${deps} $(SHAPELIBLIB)
+
+Triangle_matlab_la_SOURCES = ../Triangle/Triangle.cpp
+Triangle_matlab_la_LIBADD = ${deps} $(TRIANGLELIB)
+
+ProcessRifts_matlab_la_SOURCES = ../ProcessRifts/ProcessRifts.cpp
+ProcessRifts_matlab_la_LIBADD = ${deps}
+#}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/include/matlabincludes.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/include/matlabincludes.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/include/matlabincludes.h	(revision 27955)
@@ -0,0 +1,15 @@
+
+#ifndef _MATLAB_INCLUDES_H_
+#define _MATLAB_INCLUDES_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_MATLAB_
+#include <mex.h>
+#endif
+
+#endif /*_MATLAB_INCLUDES_H_*/
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/include/wrapper_macros.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/include/wrapper_macros.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/include/wrapper_macros.h	(revision 27955)
@@ -0,0 +1,43 @@
+/* \file matlab macros.h
+ * \brief: macros used for the matlab bindings
+ */
+
+#ifndef _MATLAB_MACROS_H_
+#define _MATLAB_MACROS_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_MATLAB_
+/* MODULEBOOT/MODULEEND {{{*/
+
+/*The following macros hide the error exception handling in a matlab module. Just put 
+ * MODULEBOOT(); and MODULEEND(); at the beginning and end of a module, and c++ exceptions 
+ * will be trapped*/
+#define MODULEBOOT(); try{ \
+	IssmComm::SetComm(); \
+	ToolkitOptions::Init();
+
+#define MODULEEND(); }\
+	catch(ErrorException &exception){\
+		mexErrMsgTxt(exception.WrapperReport()); \
+	}\
+	catch (exception &e){\
+		mexErrMsgTxt(e.what());\
+	}\
+	catch(...){\
+		mexErrMsgTxt("An unexpected error occurred");\
+	}
+/*}}}*/
+/* WRAPPER {{{*/
+#define WRAPPER(modulename,...) void mexFunction(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]) 
+/*}}}*/
+/* CHECKARGUMENTS {{{*/
+#define CHECKARGUMENTS(NLHS,NRHS,functionpointer) CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,functionpointer)
+/*}}}*/
+#endif
+
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/io/ApiPrintf.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/io/ApiPrintf.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/io/ApiPrintf.cpp	(revision 27955)
@@ -0,0 +1,20 @@
+/* \file ApiPrintf.c:
+ * \brief: API specific symbols from libISSMCore that we need to resolve here
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./matlabio.h"
+
+/*Matlab printf i/o: */
+void ApiPrintf(const char* string){
+
+	/*use mexPrintf in matlab: */
+	mexPrintf(string); /*Messes up percentages (like "interpolation progress: 100.00%")*/
+	//printf("%s",string);
+	return;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/io/CheckNumMatlabArguments.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/io/CheckNumMatlabArguments.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/io/CheckNumMatlabArguments.cpp	(revision 27955)
@@ -0,0 +1,22 @@
+/*!\file CheckNumMatlabArguments.cpp:
+ * \brief: check number of arguments and report an usage error message.
+ */
+
+#include "./matlabio.h"
+
+int CheckNumMatlabArguments(int nlhs,int NLHS, int nrhs,int NRHS, const char* THISFUNCTION, void (*function)( void )){
+
+	/*checks on arguments on the matlab side: */
+	if (nrhs==0 && nlhs==0) {
+		/*unless NLHS=0 and NRHS=0, we are just asking for documentation: */
+		if (NRHS==0 && NLHS==0)return 1;
+		/* special case: */
+		function();
+		_error_("usage: see above");
+	}
+	else if (nlhs!=NLHS || nrhs!=NRHS ) {
+		function(); 
+		_error_("usage error.");
+	}
+	return 1;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/io/FetchMatlabData.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/io/FetchMatlabData.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/io/FetchMatlabData.cpp	(revision 27955)
@@ -0,0 +1,682 @@
+/*\file FetchData.cpp:
+ * \brief: general I/O interface to fetch data in matlab
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./matlabio.h"
+#include <cstring>
+
+/*Primitive data types*/
+void FetchData(double** pmatrix,int* pM,int *pN,const mxArray* dataref){/*{{{*/
+
+	double*  outmatrix=NULL;
+	int      outmatrix_rows,outmatrix_cols;
+
+	if(mxIsEmpty(dataref) ){
+		/*Nothing to pick up. Just initialize matrix pointer to NULL: */
+		outmatrix_rows=0;
+		outmatrix_cols=0;
+		outmatrix=NULL;
+	}
+	else if( mxIsClass(dataref,"double") ||
+				mxIsClass(dataref,"single") ||
+				mxIsClass(dataref,"int16") ||
+				mxIsClass(dataref,"int8") ||
+				mxIsClass(dataref,"uint8")){
+		/*Check dataref is not pointing to NaN: */
+		if ( mxIsNaN(*(mxGetPr(dataref))) && (mxGetM(dataref)==1) && (mxGetN(dataref)==1) ){
+			outmatrix_rows=0;
+			outmatrix_cols=0;
+			outmatrix=NULL;
+		}
+		else{
+			if(!mxIsClass(dataref,"double") && !mxIsClass(dataref,"single")){
+				_printf_("Warning: converting matlab data from '" << mxGetClassName(dataref) << "' to 'double'\n");
+			}
+			/*Convert matlab matrix to double* matrix: */
+			MatlabMatrixToDoubleMatrix(&outmatrix,&outmatrix_rows,&outmatrix_cols,dataref);
+		}
+	}
+	else{
+		/*This is an error: we don't have the correct input!: */
+		_error_("Input parameter of class " << mxGetClassName(dataref) << " not supported yet");
+	}
+
+	/*Assign output pointers:*/
+	*pmatrix=outmatrix;
+	if (pM)*pM=outmatrix_rows;
+	if (pN)*pN=outmatrix_cols;
+
+}
+/*}}}*/
+void FetchData(int** pmatrix,int* pM,int *pN,const mxArray* dataref){/*{{{*/
+
+	int     i,outmatrix_rows,outmatrix_cols;
+	double *doublematrix=NULL;
+	int    *outmatrix=NULL;
+
+	if(mxIsEmpty(dataref) ){
+		/*Nothing to pick up. Just initialize matrix pointer to NULL: */
+		outmatrix_rows=0;
+		outmatrix_cols=0;
+		outmatrix=NULL;
+	}
+	else if( mxIsClass(dataref,"double") ||
+				mxIsClass(dataref,"single") ||
+				mxIsClass(dataref,"int16") ||
+				mxIsClass(dataref,"int8") ||
+				mxIsClass(dataref,"uint8")){
+
+		/*Check dataref is not pointing to NaN: */
+		if ( mxIsNaN(*(mxGetPr(dataref))) && (mxGetM(dataref)==1) && (mxGetN(dataref)==1) ){
+			outmatrix_rows=0;
+			outmatrix_cols=0;
+			outmatrix=NULL;
+		}
+		else{
+			if(!mxIsClass(dataref,"double") && !mxIsClass(dataref,"single")){
+				_printf_("Warning: converting matlab data from '" << mxGetClassName(dataref) << "' to 'double'\n");
+			}
+			/*Convert matlab matrix to double* matrix: */
+			MatlabMatrixToDoubleMatrix(&doublematrix,&outmatrix_rows,&outmatrix_cols,dataref);
+
+			/*Convert double matrix into integer matrix: */
+			outmatrix=xNew<int>(outmatrix_rows*outmatrix_cols);
+			for(i=0;i<outmatrix_rows*outmatrix_cols;i++)outmatrix[i]=(int)doublematrix[i];
+		}
+	}
+	else{
+		/*This is an error: we don't have the correct input!: */
+		_error_("Input parameter of class " << mxGetClassName(dataref) << " not supported yet");
+	}
+
+	/*Assign output pointers:*/
+	*pmatrix=outmatrix;
+	if (pM)*pM=outmatrix_rows;
+	if (pN)*pN=outmatrix_cols;
+}
+/*}}}*/
+void FetchData(bool** pmatrix,int* pM,int *pN,const mxArray* dataref){/*{{{*/
+
+	int     i,outmatrix_rows,outmatrix_cols;
+	double *doublematrix=NULL;
+	bool   *outmatrix=NULL;
+
+	if(mxIsEmpty(dataref) ){
+		/*Nothing to pick up. Just initialize matrix pointer to NULL: */
+		outmatrix_rows=0;
+		outmatrix_cols=0;
+		outmatrix=NULL;
+	}
+	else if (mxIsClass(dataref,"double") ){
+
+		/*Check dataref is not pointing to NaN: */
+		if ( mxIsNaN(*(mxGetPr(dataref))) && (mxGetM(dataref)==1) && (mxGetN(dataref)==1) ){
+			outmatrix_rows=0;
+			outmatrix_cols=0;
+			outmatrix=NULL;
+		}
+		else{
+
+			/*Convert matlab matrix to double* matrix: */
+			MatlabMatrixToDoubleMatrix(&doublematrix,&outmatrix_rows,&outmatrix_cols,dataref);
+
+			/*Convert double matrix into integer matrix: */
+			outmatrix=xNew<bool>(outmatrix_rows*outmatrix_cols);
+			for(i=0;i<outmatrix_rows;i++)outmatrix[i]=(bool)doublematrix[i];
+		}
+	}
+	else{
+		/*This is an error: we don't have the correct input!: */
+		_error_("Input parameter of class " << mxGetClassName(dataref) << " not supported yet");
+	}
+
+	/*Assign output pointers:*/
+	*pmatrix=outmatrix;
+	if (pM)*pM=outmatrix_rows;
+	if (pN)*pN=outmatrix_cols;
+}
+/*}}}*/
+void FetchData(double** pvector,int* pM,const mxArray* dataref){/*{{{*/
+
+	double* outvector=NULL;
+	int M,N;
+
+	/*Use Fetch matrix*/
+	FetchData(&outvector,&M,&N,dataref) ;
+
+	/*Check that it is a vector*/
+	if(M*N>0 && (M!=1 && N!=1)){
+		_error_("input vector of size " << M << "x" << N << " should have only one column");
+	}
+
+	/*Transpose Row vectors*/
+	if(M==1 && N>1) M=N;
+
+	/*Assign output pointers:*/
+	*pvector=outvector;
+	if(pM)*pM=M;
+}
+/*}}}*/
+void FetchData(int** pvector,int* pM,const mxArray* dataref){/*{{{*/
+
+	int    i;
+	double *doublevector   = NULL;
+	int    *outvector      = NULL;
+	int     outvector_rows;
+
+	if(mxIsEmpty(dataref)){
+		/*Nothing to pick up. Just initialize matrix pointer to NULL: */
+		outvector_rows=0;
+		outvector=NULL;
+	}
+	else if (mxIsClass(dataref,"double") ){
+
+		/*Convert matlab vector to double*  vector: */
+		FetchData(&doublevector,&outvector_rows,dataref);
+
+		/*Convert double vector into integer vector: */
+		outvector=xNew<int>(outvector_rows);
+		for(i=0;i<outvector_rows;i++)outvector[i]=(int)doublevector[i];
+	}
+	else{
+		/*This is an error: we don't have the correct input!: */
+		_error_("Input parameter of class " << mxGetClassName(dataref) << " not supported yet");
+	}
+
+	/*Assign output pointers:*/
+	*pvector=outvector;
+	if (pM)*pM=outvector_rows;
+}
+/*}}}*/
+void FetchData(bool** pvector,int* pM,const mxArray* dataref){/*{{{*/
+
+	int    i;
+	double *doublevector   = NULL;
+	bool   *outvector      = NULL;
+	int     outvector_rows;
+
+	if(mxIsEmpty(dataref)){
+		/*Nothing to pick up. Just initialize matrix pointer to NULL: */
+		outvector_rows=0;
+		outvector=NULL;
+	}
+	else if (mxIsClass(dataref,"double") ){
+
+		/*Convert matlab vector to double*  vector: */
+		FetchData(&doublevector,&outvector_rows,dataref);
+
+		/*Convert double vector into integer vector: */
+		outvector=xNew<bool>(outvector_rows);
+		for(i=0;i<outvector_rows;i++)outvector[i]=(bool)doublevector[i];
+	}
+	else{
+		/*This is an error: we don't have the correct input!: */
+		_error_("Input parameter of class " << mxGetClassName(dataref) << " not supported yet");
+	}
+
+	/*Assign output pointers:*/
+	*pvector=outvector;
+	if (pM)*pM=outvector_rows;
+}
+/*}}}*/
+void FetchData(float** pvector,int* pM,const mxArray* dataref){/*{{{*/
+
+	int    i;
+	double *doublevector   = NULL;
+	float  *outvector      = NULL;
+	int     outvector_rows;
+
+	if(mxIsEmpty(dataref)){
+		/*Nothing to pick up. Just initialize matrix pointer to NULL: */
+		outvector_rows=0;
+		outvector=NULL;
+	}
+	else if (mxIsClass(dataref,"double") ){
+
+		/*Convert matlab vector to double*  vector: */
+		FetchData(&doublevector,&outvector_rows,dataref);
+
+		/*Convert double vector into float vector: */
+		outvector=xNew<float>(outvector_rows);
+		for(i=0;i<outvector_rows;i++)outvector[i]=(float)doublevector[i];
+	}
+	else{
+		/*This is an error: we don't have the correct input!: */
+		_error_("Input parameter of class " << mxGetClassName(dataref) << " not supported yet");
+	}
+
+	/*Assign output pointers:*/
+	*pvector=outvector;
+	if (pM)*pM=outvector_rows;
+}
+/*}}}*/
+void FetchData(char** pstring,const mxArray* dataref){/*{{{*/
+
+	char* outstring=NULL;
+
+	/*Ok, the string should be coming directly from the matlab workspace: */
+	if (!mxIsClass(dataref,"char")){
+		_error_("input data_type is not a string!");
+	}
+	else{
+		/*Recover the string:*/
+		int stringlen;
+
+		stringlen = mxGetM(dataref)*mxGetN(dataref)+1;
+		outstring =xNew<char>(stringlen);
+		mxGetString(dataref,outstring,stringlen);
+	}
+
+	/*Assign output pointers:*/
+	*pstring=outstring;
+}/*}}}*/
+void FetchData(double* pscalar,const mxArray* dataref){/*{{{*/
+
+	double scalar;
+
+	if (!mxIsClass(dataref,"double")){
+		_error_("input data_type is not a double!");
+	}
+	else{
+		/*Recover the double: */
+		scalar=mxGetScalar(dataref);
+	}
+
+	/*Assign output pointers:*/
+	*pscalar=scalar;
+}
+/*}}}*/
+void FetchData(int* pinteger,const mxArray* dataref){/*{{{*/
+
+	int integer;
+
+	if (!mxIsClass(dataref,"double")){
+		_error_("input data_type is not a scalar!");
+	}
+	else{
+		/*Recover the double: */
+		integer=(int)mxGetScalar(dataref);
+	}
+
+	/*Assign output pointers:*/
+	*pinteger=integer;
+}
+/*}}}*/
+void FetchData(bool* pboolean,const mxArray* dataref){/*{{{*/
+
+	bool* mxbool_ptr=NULL;
+
+	if (mxIsClass(dataref,"logical")){
+		if(mxGetM(dataref)!=1) _error_("input data is not of size 1x1");
+		if(mxGetN(dataref)!=1) _error_("input data is not of size 1x1");
+		mxbool_ptr=mxGetLogicals(dataref);
+	}
+	else{
+		_error_("input data_type is not a bool!");
+	}
+
+	*pboolean=*mxbool_ptr;
+}
+/*}}}*/
+
+/*ISSM objects*/
+void FetchData(BamgGeom** pbamggeom,const mxArray* dataref){/*{{{*/
+
+	/*Initialize output*/
+	BamgGeom* bamggeom=new BamgGeom();
+
+	/*Fetch all fields*/
+	FetchData(&bamggeom->Vertices,&bamggeom->VerticesSize[0],&bamggeom->VerticesSize[1],mxGetAssignedField(dataref,0,"Vertices"));
+	FetchData(&bamggeom->Edges, &bamggeom->EdgesSize[0], &bamggeom->EdgesSize[1], mxGetAssignedField(dataref,0,"Edges"));
+	FetchData(&bamggeom->Corners, &bamggeom->CornersSize[0], &bamggeom->CornersSize[1], mxGetAssignedField(dataref,0,"Corners"));
+	FetchData(&bamggeom->RequiredVertices,&bamggeom->RequiredVerticesSize[0],&bamggeom->RequiredVerticesSize[1],mxGetAssignedField(dataref,0,"RequiredVertices"));
+	FetchData(&bamggeom->RequiredEdges, &bamggeom->RequiredEdgesSize[0], &bamggeom->RequiredEdgesSize[1], mxGetAssignedField(dataref,0,"RequiredEdges"));
+	FetchData(&bamggeom->CrackedEdges,&bamggeom->CrackedEdgesSize[0],&bamggeom->CrackedEdgesSize[1],mxGetAssignedField(dataref,0,"CrackedEdges"));
+	FetchData(&bamggeom->SubDomains,&bamggeom->SubDomainsSize[0],&bamggeom->SubDomainsSize[1],mxGetAssignedField(dataref,0,"SubDomains"));
+
+	/*Assign output pointers:*/
+	*pbamggeom=bamggeom;
+}
+/*}}}*/
+void FetchData(BamgMesh** pbamgmesh,const mxArray* dataref){/*{{{*/
+
+	/*Initialize output*/
+	BamgMesh* bamgmesh=new BamgMesh();
+
+	/*Fetch all fields*/
+	FetchData(&bamgmesh->Vertices,&bamgmesh->VerticesSize[0],&bamgmesh->VerticesSize[1],mxGetAssignedField(dataref,0,"Vertices"));
+	FetchData(&bamgmesh->Edges, &bamgmesh->EdgesSize[0], &bamgmesh->EdgesSize[1], mxGetAssignedField(dataref,0,"Edges"));
+	FetchData(&bamgmesh->Triangles, &bamgmesh->TrianglesSize[0], &bamgmesh->TrianglesSize[1], mxGetAssignedField(dataref,0,"Triangles"));
+	FetchData(&bamgmesh->CrackedEdges,&bamgmesh->CrackedEdgesSize[0],&bamgmesh->CrackedEdgesSize[1],mxGetAssignedField(dataref,0,"CrackedEdges"));
+	FetchData(&bamgmesh->VerticesOnGeomEdge,&bamgmesh->VerticesOnGeomEdgeSize[0],&bamgmesh->VerticesOnGeomEdgeSize[1],mxGetAssignedField(dataref,0,"VerticesOnGeomEdge"));
+	FetchData(&bamgmesh->VerticesOnGeomVertex,&bamgmesh->VerticesOnGeomVertexSize[0],&bamgmesh->VerticesOnGeomVertexSize[1],mxGetAssignedField(dataref,0,"VerticesOnGeomVertex"));
+	FetchData(&bamgmesh->EdgesOnGeomEdge, &bamgmesh->EdgesOnGeomEdgeSize[0], &bamgmesh->EdgesOnGeomEdgeSize[1], mxGetAssignedField(dataref,0,"EdgesOnGeomEdge"));
+	FetchData(&bamgmesh->IssmSegments,&bamgmesh->IssmSegmentsSize[0],&bamgmesh->IssmSegmentsSize[1],mxGetAssignedField(dataref,0,"IssmSegments"));
+
+	/*Assign output pointers:*/
+	*pbamgmesh=bamgmesh;
+}
+/*}}}*/
+void FetchData(BamgOpts** pbamgopts,const mxArray* dataref){/*{{{*/
+
+	/*Initialize output*/
+	BamgOpts* bamgopts=new BamgOpts();
+
+	/*Fetch all fields*/
+	FetchData(&bamgopts->anisomax,mxGetField(dataref,0,"anisomax"));
+	FetchData(&bamgopts->cutoff,mxGetField(dataref,0,"cutoff"));
+	FetchData(&bamgopts->coeff,mxGetField(dataref,0,"coeff"));
+	FetchData(&bamgopts->errg,mxGetField(dataref,0,"errg"));
+	FetchData(&bamgopts->gradation,mxGetField(dataref,0,"gradation"));
+	FetchData(&bamgopts->Hessiantype,mxGetField(dataref,0,"Hessiantype"));
+	FetchData(&bamgopts->maxnbv,mxGetField(dataref,0,"maxnbv"));
+	FetchData(&bamgopts->maxsubdiv,mxGetField(dataref,0,"maxsubdiv"));
+	FetchData(&bamgopts->Metrictype,mxGetField(dataref,0,"Metrictype"));
+	FetchData(&bamgopts->nbjacobi,mxGetField(dataref,0,"nbjacobi"));
+	FetchData(&bamgopts->nbsmooth,mxGetField(dataref,0,"nbsmooth"));
+	FetchData(&bamgopts->omega,mxGetField(dataref,0,"omega"));
+	FetchData(&bamgopts->power,mxGetField(dataref,0,"power"));
+	FetchData(&bamgopts->verbose,mxGetField(dataref,0,"verbose"));
+
+	FetchData(&bamgopts->Crack,mxGetField(dataref,0,"Crack"));
+	FetchData(&bamgopts->KeepVertices,mxGetField(dataref,0,"KeepVertices"));
+	FetchData(&bamgopts->splitcorners,mxGetField(dataref,0,"splitcorners"));
+
+	FetchData(&bamgopts->hmin,mxGetField(dataref,0,"hmin"));
+	FetchData(&bamgopts->hmax,mxGetField(dataref,0,"hmax"));
+	FetchData(&bamgopts->hminVertices,&bamgopts->hminVerticesSize[0],&bamgopts->hminVerticesSize[1],mxGetField(dataref,0,"hminVertices"));
+	FetchData(&bamgopts->hmaxVertices,&bamgopts->hmaxVerticesSize[0],&bamgopts->hmaxVerticesSize[1],mxGetField(dataref,0,"hmaxVertices"));
+	FetchData(&bamgopts->hVertices,&bamgopts->hVerticesLength,mxGetField(dataref,0,"hVertices"));
+	FetchData(&bamgopts->metric,&bamgopts->metricSize[0],&bamgopts->metricSize[1],mxGetField(dataref,0,"metric"));
+	FetchData(&bamgopts->field,&bamgopts->fieldSize[0],&bamgopts->fieldSize[1],mxGetField(dataref,0,"field"));
+	FetchData(&bamgopts->err,&bamgopts->errSize[0],&bamgopts->errSize[1],mxGetField(dataref,0,"err"));
+
+	/*Additional checks*/
+	bamgopts->Check();
+
+	/*Assign output pointers:*/
+	*pbamgopts=bamgopts;
+}
+/*}}}*/
+void FetchData(Options** poptions,int istart, int nrhs,const mxArray** pdataref){/*{{{*/
+
+	char   *name   = NULL;
+	Option *option = NULL;
+
+	/*Initialize output*/
+	Options* options=new Options();
+
+	/*Fetch all options*/
+	for (int i=istart; i<nrhs; i=i+2){
+		if (!mxIsClass(pdataref[i],"char")) _error_("Argument " << i+1 << " must be name of option");
+
+		FetchData(&name,pdataref[i]);
+		if(i+1 == nrhs) _error_("Argument " << i+2 << " must exist and be value of option \"" << name << "\".");
+
+		option=(Option*)OptionParse(name,&pdataref[i+1]);
+		options->AddOption(option);
+		option=NULL;
+	}
+
+	/*Assign output pointers:*/
+	*poptions=options;
+}
+/*}}}*/
+void FetchData(Contours** pcontours,const mxArray* dataref){/*{{{*/
+
+	int             numcontours,index,test1,test2;
+	char            *contourname = NULL;
+	Contours        *contours    = NULL;
+	Contour<double> *contouri    = NULL;
+
+	if(mxIsClass(dataref,"char")){
+		FetchData(&contourname,dataref);
+		contours=ExpRead<double>(contourname);
+	}
+	else if(mxIsClass(dataref,"struct")){
+
+		contours=new Contours();
+		numcontours=mxGetNumberOfElements(dataref);
+
+		for(int i=0;i<numcontours;i++){
+
+			contouri=new Contour<double>();
+
+			index = mxGetFieldNumber(dataref,"nods");
+			if(index==-1) _error_("input structure does not have a 'nods' field");
+			FetchData(&contouri->nods,mxGetFieldByNumber(dataref,i,index));
+
+			index = mxGetFieldNumber(dataref,"x");
+			if(index==-1) _error_("input structure does not have a 'x' field");
+			FetchData(&contouri->x,&test1,&test2,mxGetFieldByNumber(dataref,i,index));
+			if(test1!=contouri->nods || test2!=1) _error_("field x should be of size ["<<contouri->nods<<" 1]");
+
+			index = mxGetFieldNumber(dataref,"y");
+			if(index==-1) _error_("input structure does not have a 'y' field");
+			FetchData(&contouri->y,&test1,&test2,mxGetFieldByNumber(dataref,i,index));
+			if(test1!=contouri->nods || test2!=1) _error_("field y should be of size ["<<contouri->nods<<" 1]");
+
+			contours->AddObject(contouri);
+		}
+	}
+	else{
+		_error_("Contour is neither a string nor a structure and cannot be loaded ("<<mxGetClassName(dataref)<<" not supported)");
+	}
+
+	/*clean-up and assign output pointer*/
+	xDelete<char>(contourname);
+	*pcontours=contours;
+}
+/*}}}*/
+void FetchChacoData(int* pnvtxs,int** padjacency,int** pstart,float** pewgts,const mxArray* A_IN, const mxArray* EWGTS_IN){/*{{{*/
+
+	/*Fetch adjacency matrix: */
+	int      nvtxs       = mxGetN(A_IN);
+	mwIndex* mwstart     = mxGetJc(A_IN);
+	mwIndex* mwadjacency = mxGetIr(A_IN);
+	int      nzmax       = mxGetNzmax(A_IN);
+
+	int* start = xNew<int>(nvtxs+1);
+	for(int i=0;i<nvtxs+1;i++) start[i]=(int)mwstart[i];
+
+	int* adjacency = xNew<int>(nzmax);
+	for(int i=0; i<nzmax; i++) adjacency[i]= (int)mwadjacency[i];
+
+	/*Get edges weights*/
+	int nedges = start[nvtxs];
+	float* ewgts = NULL;
+	if(!mxIsEmpty(EWGTS_IN)){
+		ewgts = xNewZeroInit<float>(nedges);
+		double* doublepointer = mxGetPr(A_IN);
+		for(int i = 0; i<nedges;i++) ewgts[i] = (float)doublepointer[i];
+	}
+
+	/*Assign output pointers*/
+	*pnvtxs     = nvtxs;
+	*padjacency = adjacency;
+	*pstart     = start;
+	*pewgts     = ewgts;
+}
+/*}}}*/
+
+/*Toolkit*/
+int MatlabMatrixToDoubleMatrix(double** pmatrix,int* pmatrix_rows,int* pmatrix_cols,const mxArray* mxmatrix){/*{{{*/
+
+	/*Get Matrix size*/
+	int rows=mxGetM(mxmatrix);
+	int cols=mxGetN(mxmatrix);
+
+	/*Return of Matrix is empty*/
+	if(rows*cols == 0){
+		*pmatrix      = NULL;
+		*pmatrix_rows = rows;
+		*pmatrix_cols = cols;
+		return 1;
+	}
+
+   /*Initialize output*/
+   double* matrix=xNewZeroInit<double>(rows*cols);
+
+	/*First check if we are dealing with a sparse matrix: */
+	if(mxIsSparse(mxmatrix)){
+
+		/*Dealing with sparse matrix: recover size first: */
+		double* pmxmatrix=(double*)mxGetPr(mxmatrix);
+
+      /*Now, get ir,jc and pr: */
+      mwIndex* ir=mxGetIr(mxmatrix);
+      mwIndex* jc=mxGetJc(mxmatrix);
+
+      /*Now, start inserting data into double* matrix: */
+      int count=0;
+      for(int i=0;i<cols;i++){
+         for(int j=0;j<(jc[i+1]-jc[i]);j++){
+            matrix[cols*ir[count]+i]=pmxmatrix[count];
+            count++;
+         }
+      }
+   }
+	else if(mxIsClass(mxmatrix,"double")){
+		double* pmxmatrix=(double*)mxGetPr(mxmatrix);
+      for(int i=0;i<rows;i++) for(int j=0;j<cols;j++) matrix[cols*i+j]=(double)pmxmatrix[rows*j+i];
+	}
+	else if(mxIsClass(mxmatrix,"single")){
+		float *pmxmatrix=(float*)mxGetPr(mxmatrix);
+      for(int i=0;i<rows;i++) for(int j=0;j<cols;j++) matrix[cols*i+j]=(double)pmxmatrix[rows*j+i];
+	}
+	else if(mxIsClass(mxmatrix,"int16")){
+		short int *pmxmatrix=(short*)mxGetPr(mxmatrix);
+      for(int i=0;i<rows;i++) for(int j=0;j<cols;j++) matrix[cols*i+j]=(double)pmxmatrix[rows*j+i];
+	}
+	else if(mxIsClass(mxmatrix,"uint8")){
+      char *pmxmatrix=(char*)mxGetPr(mxmatrix);
+      for(int i=0;i<rows;i++) for(int j=0;j<cols;j++) matrix[cols*i+j]=(double)pmxmatrix[rows*j+i];
+	}
+	else{
+		_error_("Matlab matrix type "<<mxGetClassName(mxmatrix)<<" Not implemented yet");
+	}
+
+	/*Assign output pointer: */
+	*pmatrix=matrix;
+	*pmatrix_rows=rows;
+	*pmatrix_cols=cols;
+
+	return 1;
+}/*}}}*/
+mxArray* mxGetAssignedField(const mxArray* pmxa_array,int number,const char* field){/*{{{*/
+
+	/*Output*/
+	mxArray *mxfield = NULL;
+
+	if(mxIsStruct(pmxa_array)){
+		mxfield = mxGetField(pmxa_array,number,field);
+	}
+	else{
+		/*This is an object, mxGetField returns NULL in old version of matlab (we do not have access to them)*/
+
+		/*Intermediaries*/
+		mxArray    *inputs[2];
+		mwSize      ndim        = 2;
+		mwSize      onebyone[2] = {1,1};
+
+		/*create index structure used in the assignment (index.type='.' and index.subs='x' for field x*/
+		const char *fnames[2];
+		fnames[0] = "type"; fnames[1] = "subs";
+		mxArray* pindex=mxCreateStructArray( ndim,onebyone,2,fnames);
+		mxSetField( pindex, 0, "type",mxCreateString("."));
+		mxSetField( pindex, 0, "subs",mxCreateString(field));
+		inputs[0]=(mxArray*)pmxa_array; //this is the model
+		inputs[1]=pindex;
+
+		mexCallMATLAB( 1, &mxfield, 2, (mxArray**)inputs, "subsref");
+	}
+
+	if(mxfield == NULL) _error_("Could not find field "<< field <<" in structure");
+
+	return mxfield;
+}/*}}}*/
+
+/*Options*/
+Option* OptionParse(char* name, const mxArray* prhs[]){ /*{{{*/
+
+	/*Initialize output*/
+	Option  *option = NULL;
+
+	/*parse the value according to the matlab data type  */
+	if (mxIsClass(prhs[0],"double")  && (mxGetNumberOfElements(prhs[0])==1)){
+		option=(Option*)OptionDoubleParse(name,prhs);
+	}
+	else if(mxIsClass(prhs[0],"double")  && (mxGetNumberOfElements(prhs[0])>1)){
+		option=(Option*)OptionDoubleArrayParse(name,prhs);
+	}
+	else if(mxIsClass(prhs[0],"char")){
+		option=(Option*)OptionCharParse(name,prhs);
+	}
+	else {
+		_error_("Second argument value of option \""<< name <<"\" is of unrecognized class \""<< mxGetClassName(prhs[0]) <<"\".");
+	}
+
+	return option;
+}/*}}}*/
+GenericOption<double>*  OptionDoubleParse(char* name, const mxArray* prhs[]){ /*{{{*/
+
+	/*Initialize option*/
+	GenericOption<double>* option=new GenericOption<double>();
+
+	/*Copy name*/
+	option->name =xNew<char>(strlen(name)+1);
+	memcpy(option->name,name,(strlen(name)+1)*sizeof(char));
+
+	/*Fetch data and initialize size*/
+	FetchData(&option->value,prhs[0]);
+   option->size[0] = 1;
+	option->size[1] = 1;
+
+	return option;
+}/*}}}*/
+GenericOption<double*>* OptionDoubleArrayParse(char* name, const mxArray* prhs[]){ /*{{{*/
+
+	/*Initialize option*/
+	GenericOption<double*> * option=new GenericOption<double*>();
+
+	/*Copy name*/
+	option->name =xNew<char>(strlen(name)+1);
+	memcpy(option->name,name,(strlen(name)+1)*sizeof(char));
+
+	/*check and parse the value  */
+	if (!mxIsClass(prhs[0],"double")){
+		_error_("Value of option \"" << option->name  << "\" must be class \"double\", not class \"" << mxGetClassName(prhs[0]) <<"\".");
+	}
+
+	/*Fetch data and initialize size*/
+   FetchData(&option->value,&option->size[0],&option->size[1],prhs[0]);
+
+	return option;
+}/*}}}*/
+GenericOption<char*>*   OptionCharParse(char* name, const mxArray* prhs[]){ /*{{{*/
+
+	/*Initialize option*/
+	GenericOption<char*>* option=new GenericOption<char*>();
+
+	/*Copy name*/
+	option->name =xNew<char>(strlen(name)+1);
+	memcpy(option->name,name,(strlen(name)+1)*sizeof(char));
+
+	/*check and parse the value  */
+	if(!mxIsClass(prhs[0],"char")){
+		_error_("Value of option \"" << option->name  << "\" must be class \"char\", not class \"" << mxGetClassName(prhs[0]) <<"\".");
+	}
+
+	/*Fetch data and initialize size*/
+	FetchData(&option->value,prhs[0]);
+	option->size[0] = strlen(name);
+	option->size[1] = 1;
+
+	return(option);
+}/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/io/WriteMatlabData.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/io/WriteMatlabData.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/io/WriteMatlabData.cpp	(revision 27955)
@@ -0,0 +1,511 @@
+/* \file WriteData.c:
+ * \brief: general interface for writing data
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./matlabio.h"
+#include "./../../../c/datastructures/datastructures.h"
+
+/*Primitive data types*/
+/*FUNCTION WriteData(mxArray** pdataref,double* matrix, int M,int N){{{*/
+void WriteData(mxArray** pdataref,double* matrix, int M,int N){
+
+	mxArray *dataref  = NULL;
+	double  *tmatrix  = NULL;
+
+	if(matrix){
+		/*create the matlab matrixwith Matlab's memory manager */   
+		tmatrix=(double*)mxMalloc(M*N*sizeof(double));
+		for(int i=0;i<M;i++){
+			for(int j=0;j<N;j++){
+				tmatrix[j*M+i]=matrix[i*N+j];
+			}
+		}
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+		mxSetM(dataref,(mwSize)M);
+		mxSetN(dataref,(mwSize)N);
+		mxSetPr(dataref,(double*)tmatrix);
+	}
+	else{
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+	}
+	*pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,int* matrix, int M,int N){{{*/
+void WriteData(mxArray** pdataref,int* matrix, int M,int N){
+
+	mxArray* dataref = NULL;
+	double*  tmatrix = NULL;
+
+	if(matrix){
+		/*convert to double matrix using Matlab's memory manager*/
+		double* tmatrix=(double*)mxMalloc(M*N*sizeof(double));
+		for(int i=0;i<M;i++){
+			for(int j=0;j<N;j++){
+				tmatrix[j*M+i]=(double)matrix[i*N+j];
+			}
+		}
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+		mxSetM(dataref,(mwSize)M);
+		mxSetN(dataref,(mwSize)N);
+		mxSetPr(dataref,(double*)tmatrix);
+	}
+	else{
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+	}
+	*pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,double* vector, int M){{{*/
+void WriteData(mxArray** pdataref,double* vector, int M){
+
+	mxArray* dataref       = NULL;
+	double*  vector_matlab = NULL;
+
+	if(vector){
+
+		/*create the matlab vector with Matlab's memory manager */
+		vector_matlab=(double*)mxMalloc(M*sizeof(double));
+		for(int i=0;i<M;i++) vector_matlab[i]=vector[i];
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+		mxSetM(dataref,(mwSize)M);
+		mxSetN(dataref,(mwSize)1);
+		mxSetPr(dataref,vector_matlab);
+	}
+	else{
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+	}
+
+	*pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,int* vector, int M){{{*/
+void WriteData(mxArray** pdataref,int* vector, int M){
+
+	mxArray* dataref       = NULL;
+	double*  vector_matlab = NULL;
+
+	if(vector){
+
+		/*create the matlab vector with Matlab's memory manager */
+		vector_matlab=(double*)mxMalloc(M*sizeof(double));
+		for(int i=0;i<M;i++) vector_matlab[i]=double(vector[i]);
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+		mxSetM(dataref,(mwSize)M);
+		mxSetN(dataref,(mwSize)1);
+		mxSetPr(dataref,vector_matlab);
+	}
+	else{
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+	}
+
+	*pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,short* vector, int M){{{*/
+void WriteData(mxArray** pdataref,short* vector, int M){
+
+	mxArray* dataref       = NULL;
+	double*  vector_matlab = NULL;
+
+	if(vector){
+
+		/*create the matlab vector with Matlab's memory manager */
+		vector_matlab=(double*)mxMalloc(M*sizeof(double));
+		for(int i=0;i<M;i++) vector_matlab[i]=double(vector[i]);
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+		mxSetM(dataref,(mwSize)M);
+		mxSetN(dataref,(mwSize)1);
+		mxSetPr(dataref,vector_matlab);
+	}
+	else{
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+	}
+
+	*pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,double scalar){{{*/
+void WriteData(mxArray** pdataref,double scalar){
+
+	*pdataref=mxCreateDoubleScalar(scalar);
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,int integer){{{*/
+void WriteData(mxArray** pdataref,int integer){
+
+		*pdataref=mxCreateDoubleScalar((double)integer);
+
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,int boolean){{{*/
+void WriteData(mxArray** pdataref,bool boolean){
+
+	*pdataref=mxCreateDoubleScalar((double)boolean);
+
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,char* string){{{*/
+void WriteData(mxArray** pdataref,const char* string){
+
+		*pdataref=mxCreateString(string);
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref){{{*/
+void WriteData(mxArray** pdataref){
+
+		;
+
+}
+/*}}}*/
+
+/*ISSM objects*/
+/*FUNCTION WriteData(mxArray** pdataref,BamgGeom* bamggeom){{{*/
+void WriteData(mxArray** pdataref,BamgGeom* bamggeom){
+
+	/*Intermediary*/
+	int         i;
+	mxArray    *dataref           = NULL;
+	const int   numfields         = 8;
+	const char *fnames[numfields];
+	mwSize      ndim              = 2;
+	mwSize      dimensions[2]     = {1,1};
+
+	/*Initialize field names*/
+	i=0;
+	fnames[i++] = "Vertices";
+	fnames[i++] = "Edges";
+	fnames[i++] = "TangentAtEdges";
+	fnames[i++] = "Corners";
+	fnames[i++] = "RequiredVertices";
+	fnames[i++] = "RequiredEdges";
+	fnames[i++] = "CrackedEdges";
+	fnames[i++] = "SubDomains";
+	_assert_(i==numfields);
+
+	/*Initialize Matlab structure*/
+	dataref=mxCreateStructArray(ndim,dimensions,numfields,fnames);
+
+	/*set each matlab each field*/
+	i=0;
+	i++; SetStructureField(dataref,"Vertices",        bamggeom->VerticesSize[0],        bamggeom->VerticesSize[1],        bamggeom->Vertices);
+	i++; SetStructureField(dataref,"Edges",           bamggeom->EdgesSize[0],           bamggeom->EdgesSize[1],           bamggeom->Edges);
+	i++; SetStructureField(dataref,"TangentAtEdges",  bamggeom->TangentAtEdgesSize[0],  bamggeom->TangentAtEdgesSize[1],  bamggeom->TangentAtEdges);
+	i++; SetStructureField(dataref,"Corners",         bamggeom->CornersSize[0],         bamggeom->CornersSize[1],         bamggeom->Corners);
+	i++; SetStructureField(dataref,"RequiredVertices",bamggeom->RequiredVerticesSize[0],bamggeom->RequiredVerticesSize[1],bamggeom->RequiredVertices);
+	i++; SetStructureField(dataref,"RequiredEdges",   bamggeom->RequiredEdgesSize[0],   bamggeom->RequiredEdgesSize[1],   bamggeom->RequiredEdges);
+	i++; SetStructureField(dataref,"CrackedEdges",    bamggeom->CrackedEdgesSize[0],    bamggeom->CrackedEdgesSize[1],    bamggeom->CrackedEdges);
+	i++; SetStructureField(dataref,"SubDomains",      bamggeom->SubDomainsSize[0],      bamggeom->SubDomainsSize[1],      bamggeom->SubDomains);
+	_assert_(i==numfields);
+
+	/*Assign output*/
+	*pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,BamgMesh* bamgmesh){{{*/
+void WriteData(mxArray** pdataref,BamgMesh* bamgmesh){
+
+	/*Intermediary*/
+	int         i;
+	mxArray    *dataref           = NULL;
+	const int   numfields         = 16;
+	const char *fnames[numfields];
+	mwSize      ndim              = 2;
+	mwSize      dimensions[2]     = {1,1};
+
+	/*Initialize field names*/
+	i=0;
+	fnames[i++] = "Vertices";
+	fnames[i++] = "Edges";
+	fnames[i++] = "Triangles";
+	fnames[i++] = "IssmEdges";
+	fnames[i++] = "IssmSegments";
+	fnames[i++] = "VerticesOnGeomVertex";
+	fnames[i++] = "VerticesOnGeomEdge";
+	fnames[i++] = "EdgesOnGeomEdge";
+	fnames[i++] = "SubDomains";
+	fnames[i++] = "SubDomainsFromGeom";
+	fnames[i++] = "ElementConnectivity";
+	fnames[i++] = "NodalConnectivity";
+	fnames[i++] = "NodalElementConnectivity";
+	fnames[i++] = "CrackedVertices";
+	fnames[i++] = "CrackedEdges";
+	fnames[i++] = "PreviousNumbering";
+	_assert_(i==numfields);
+
+	/*Initialize Matlab structure*/
+	dataref=mxCreateStructArray(ndim,dimensions,numfields,fnames);
+
+	/*set each matlab each field*/
+	i=0;
+	i++; SetStructureField(dataref,"Vertices",bamgmesh->VerticesSize[0], bamgmesh->VerticesSize[1],bamgmesh->Vertices);
+	i++; SetStructureField(dataref,"Edges", bamgmesh->EdgesSize[0],bamgmesh->EdgesSize[1], bamgmesh->Edges);
+	i++; SetStructureField(dataref,"Triangles", bamgmesh->TrianglesSize[0],bamgmesh->TrianglesSize[1], bamgmesh->Triangles);
+	i++; SetStructureField(dataref,"IssmEdges", bamgmesh->IssmEdgesSize[0],bamgmesh->IssmEdgesSize[1], bamgmesh->IssmEdges);
+	i++; SetStructureField(dataref,"IssmSegments",bamgmesh->IssmSegmentsSize[0], bamgmesh->IssmSegmentsSize[1],bamgmesh->IssmSegments);
+	i++; SetStructureField(dataref,"VerticesOnGeomVertex",bamgmesh->VerticesOnGeomVertexSize[0],bamgmesh->VerticesOnGeomVertexSize[1], bamgmesh->VerticesOnGeomVertex);
+	i++; SetStructureField(dataref,"VerticesOnGeomEdge",bamgmesh->VerticesOnGeomEdgeSize[0],bamgmesh->VerticesOnGeomEdgeSize[1], bamgmesh->VerticesOnGeomEdge);
+	i++; SetStructureField(dataref,"EdgesOnGeomEdge", bamgmesh->EdgesOnGeomEdgeSize[0], bamgmesh->EdgesOnGeomEdgeSize[1],bamgmesh->EdgesOnGeomEdge);
+	i++; SetStructureField(dataref,"SubDomains",bamgmesh->SubDomainsSize[0], bamgmesh->SubDomainsSize[1],bamgmesh->SubDomains);
+	i++; SetStructureField(dataref,"SubDomainsFromGeom", bamgmesh->SubDomainsFromGeomSize[0], bamgmesh->SubDomainsFromGeomSize[1],bamgmesh->SubDomainsFromGeom);
+	i++; SetStructureField(dataref,"ElementConnectivity",bamgmesh->ElementConnectivitySize[0],bamgmesh->ElementConnectivitySize[1], bamgmesh->ElementConnectivity);
+	i++; SetStructureField(dataref,"NodalConnectivity",bamgmesh->NodalConnectivitySize[0],bamgmesh->NodalConnectivitySize[1], bamgmesh->NodalConnectivity);
+	i++; SetStructureField(dataref,"NodalElementConnectivity", bamgmesh->NodalElementConnectivitySize[0], bamgmesh->NodalElementConnectivitySize[1],bamgmesh->NodalElementConnectivity);
+	i++; SetStructureField(dataref,"CrackedVertices", bamgmesh->CrackedVerticesSize[0],bamgmesh->CrackedVerticesSize[1], bamgmesh->CrackedVertices);
+	i++; SetStructureField(dataref,"CrackedEdges",bamgmesh->CrackedEdgesSize[0], bamgmesh->CrackedEdgesSize[1],bamgmesh->CrackedEdges);
+	i++; SetStructureField(dataref,"PreviousNumbering",bamgmesh->VerticesSize[0],1,bamgmesh->PreviousNumbering);
+	_assert_(i==numfields);
+
+	/*Assign output*/
+	*pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,IssmDenseMat<double>* matrix){{{*/
+void WriteData(mxArray** pdataref,IssmDenseMat<double>* matrix){
+
+	int      i,j;
+	int      rows,cols;
+	mxArray *dataref     = NULL;
+	double  *matrix_ptr  = NULL;
+	double  *tmatrix_ptr = NULL;
+
+	if(matrix){
+
+		matrix_ptr=matrix->ToSerial();
+		matrix->GetSize(&rows,&cols);
+
+		/*Now transpose the matrix and allocate with Matlab's memory manager: */
+		tmatrix_ptr=(double*)mxMalloc(rows*cols*sizeof(double));
+		for(i=0;i<rows;i++){
+			for(j=0;j<cols;j++){
+				tmatrix_ptr[j*rows+i]=matrix_ptr[i*cols+j];
+			}
+		}
+
+		/*create matlab matrix: */
+		dataref=mxCreateDoubleMatrix(0,0,mxREAL);
+		mxSetM(dataref,rows); 
+		mxSetN(dataref,cols);
+		mxSetPr(dataref,tmatrix_ptr);
+
+		/*Free resources:*/
+		xDelete<double>(matrix_ptr);
+	}
+	else{
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+	}
+
+	*pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,IssmSeqVec<double>* vector){{{*/
+void WriteData(mxArray** pdataref,IssmSeqVec<double>* vector){
+
+	mxArray* dataref=NULL;
+	double*  vector_ptr=NULL;
+	double*  vector_matlab=NULL;
+	int      rows;
+
+	if(vector){
+		/*call toolkit routine: */
+		vector_ptr=vector->ToMPISerial();
+		vector->GetSize(&rows);
+
+		/*now create the matlab vector with Matlab's memory manager */
+		vector_matlab=(double*)mxMalloc(rows*sizeof(double));
+		for(int i=0;i<rows;i++) vector_matlab[i]=vector_ptr[i];
+
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);                         
+		mxSetM(dataref,rows);
+		mxSetN(dataref,1);                                                                                          
+		mxSetPr(dataref,vector_matlab);           
+	}
+	else{
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+	}
+
+	/*Clean-up and return*/
+	xDelete<double>(vector_ptr);
+	*pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,RiftStruct* riftstruct){{{*/
+void WriteData(mxArray** pdataref,RiftStruct* riftstruct){
+
+	/*Intermediary*/
+	int         i;
+	mxArray    *dataref           = NULL;
+	const int   numfields         = 10;
+	const char *fnames[numfields];
+	mwSize      ndim              = 2;
+	mwSize      dimensions[2]     = {1,1};
+
+	/*Initialize field names*/
+	i=0;
+	fnames[i++] = "numsegs";
+	fnames[i++] = "segments";
+	fnames[i++] = "pairs";
+	fnames[i++] = "tips";
+	fnames[i++] = "penaltypairs";
+	fnames[i++] = "fill";
+	fnames[i++] = "friction";
+	fnames[i++] = "fraction";
+	fnames[i++] = "fractionincrement";
+	fnames[i++] = "state";
+	_assert_(i==numfields);
+
+	/*Initialize matlab structure of dimension numrifts*/
+	dimensions[0]=riftstruct->numrifts;
+	dataref=mxCreateStructArray(ndim,dimensions,numfields,fnames);
+
+	/*set each matlab each field*/
+	for(int i=0;i<riftstruct->numrifts;i++){
+		SetStructureFieldi(dataref,i,"numsegs"          ,riftstruct->riftsnumsegments[i]);
+		SetStructureFieldi(dataref,i,"segments"         ,riftstruct->riftsnumsegments[i]    ,3,riftstruct->riftssegments[i]);
+		SetStructureFieldi(dataref,i,"pairs"            ,riftstruct->riftsnumpairs[i]       ,2,riftstruct->riftspairs[i]);
+		SetStructureFieldi(dataref,i,"tips"             ,1                                  ,2,&riftstruct->riftstips[2*i]);
+		SetStructureFieldi(dataref,i,"penaltypairs"     ,riftstruct->riftsnumpenaltypairs[i],7,riftstruct->riftspenaltypairs[i]);
+		SetStructureFieldi(dataref,i,"fill"             ,"Ice");
+		SetStructureFieldi(dataref,i,"friction"         ,0);
+		SetStructureFieldi(dataref,i,"fraction"         ,0.);
+		SetStructureFieldi(dataref,i,"fractionincrement",0.1);
+		SetStructureFieldi(dataref,i,"state"            ,riftstruct->riftsnumpenaltypairs[i],1,riftstruct->state[i]);
+	}
+
+	/*Assign output*/
+	*pdataref=dataref;
+}
+/*}}}*/
+/*FUNCTION WriteData(mxArray** pdataref,Contours* contours){{{*/
+void WriteData(mxArray** pdataref,Contours* contours){
+
+	/*Intermediary*/
+
+	int         i;
+	mxArray    *dataref           = NULL;
+	const int   numfields         = 6;
+	const char *fnames[numfields];
+	mwSize      ndim              = 2;
+	mwSize      dimensions[2]     = {1,1};
+	char        id[100];
+
+	/*Initialize field names*/
+	i=0;
+	fnames[i++] = "name";
+	fnames[i++] = "nods";
+	fnames[i++] = "density";
+	fnames[i++] = "x";
+	fnames[i++] = "y";
+	fnames[i++] = "closed";
+	_assert_(i==numfields);
+
+	/*Initialize matlab structure of dimension numrifts*/
+	dimensions[0]=contours->Size();
+	dataref=mxCreateStructArray(ndim,dimensions,numfields,fnames);
+
+	/*set each matlab each field*/
+	for(int i=0;i<contours->Size();i++){
+		Contour<IssmPDouble>* contour=(Contour<IssmPDouble>*)contours->GetObjectByOffset(i);
+
+		/*create a name for this contour from the contour id and set it: */
+		sprintf(id,"%i",contour->id);
+		SetStructureFieldi(dataref,i,"name",id);
+
+		/*number of nods: */
+		SetStructureFieldi(dataref,i,"nods"         ,contour->nods);
+
+		/*density: */
+		SetStructureFieldi(dataref,i,"density"            ,1);
+
+		/*x and y: */
+		SetStructureFieldi(dataref,i,"x"             ,contour->nods, 1,contour->x);
+		SetStructureFieldi(dataref,i,"y"             ,contour->nods, 1,contour->y);
+
+		/*closed: */
+		SetStructureFieldi(dataref,i,"closed"         ,(int)contour->closed);
+	}
+
+	/*Assign output*/
+	*pdataref=dataref;
+}
+/*}}}*/
+
+/*Toolkit*/
+/*FUNCTION SetStructureField(mxArray* dataref,const char* fieldname,int M,int N,double* fieldpointer){{{*/
+void SetStructureField(mxArray* dataref,const char* fieldname,int M,int N,double* fieldpointer){
+
+	mxArray* field = NULL;
+
+	/*Convert field*/
+	WriteData(&field,fieldpointer,M,N);
+
+	/*Assign to structure*/
+	mxSetField(dataref,0,fieldname,field);
+}
+/*}}}*/
+/*FUNCTION SetStructureFieldi(mxArray* dataref,const char* fieldname,const char* string) {{{*/
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,const char* string){
+
+	mxArray* field = NULL;
+
+	/*Convert field*/
+	WriteData(&field,string);
+
+	/*Assign to structure*/
+	mxSetField(dataref,i,fieldname,field);
+}
+/*}}}*/
+/*FUNCTION SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int M,int N,double* fieldpointer){{{*/
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int M,int N,double* fieldpointer){
+
+	mxArray* field = NULL;
+
+	/*Convert field*/
+	WriteData(&field,fieldpointer,M,N);
+
+	/*Assign to structure*/
+	mxSetField(dataref,i,fieldname,field);
+}
+/*}}}*/
+/*FUNCTION SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int M,int N,int* fieldpointer){{{*/
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int M,int N,int* fieldpointer){
+
+	mxArray* field = NULL;
+
+	/*Convert field*/
+	WriteData(&field,fieldpointer,M,N);
+
+	/*Assign to structure*/
+	mxSetField(dataref,i,fieldname,field);
+}
+/*}}}*/
+/*FUNCTION SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int field){{{*/
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int fieldin){
+
+	mxArray* field = NULL;
+
+	/*Convert field*/
+	WriteData(&field,fieldin);
+
+	/*Assign to structure*/
+	mxSetField(dataref,i,fieldname,field);
+}
+/*}}}*/
+/*FUNCTION SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,double field){{{*/
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,double fieldin){
+
+	mxArray* field = NULL;
+
+	/*Convert field*/
+	WriteData(&field,fieldin);
+
+	/*Assign to structure*/
+	mxSetField(dataref,i,fieldname,field);
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/io/matlabio.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/io/matlabio.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/matlab/io/matlabio.h	(revision 27955)
@@ -0,0 +1,74 @@
+/*\file matlabio.h
+ *\brief: I/O for ISSM in matlab mode
+ */
+
+#ifndef _MATLAB_IO_H_
+#define _MATLAB_IO_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif 
+
+#include "../include/matlabincludes.h"
+#include "../../../c/bamg/bamgobjects.h"
+#include "../../../c/classes/classes.h"
+#include "../../../c/toolkits/toolkits.h"
+#include "../../../c/shared/shared.h"
+
+void WriteData(mxArray** pdataref,IssmDenseMat<double>* matrix);
+void WriteData(mxArray** pdataref,double* matrix, int M,int N);
+void WriteData(mxArray** pdataref,int*    matrix, int M,int N);
+void WriteData(mxArray** pdataref,IssmSeqVec<double>* vector);
+void WriteData(mxArray** pdataref,double* vector, int M);
+void WriteData(mxArray** pdataref,short* vector, int M);
+void WriteData(mxArray** pdataref,int* vector, int M);
+void WriteData(mxArray** pdataref,int integer);
+void WriteData(mxArray** pdataref,bool boolean);
+void WriteData(mxArray** pdataref,double scalar);
+void WriteData(mxArray** pdataref,const char* string);
+void WriteData(mxArray** pdataref);
+void WriteData(mxArray** pdataref,BamgGeom* bamggeom);
+void WriteData(mxArray** pdataref,BamgMesh* bamgmesh);
+void WriteData(mxArray** pdataref,RiftStruct* riftstruct);
+void WriteData(mxArray** pdataref,Contours* contours);
+
+void FetchData(double** pmatrix,int* pM,int *pN,const mxArray* dataref);
+void FetchData(int** pmatrix,int* pM,int *pN,const mxArray* dataref);
+void FetchData(bool** pmatrix,int* pM,int *pN,const mxArray* dataref);
+void FetchData(int** pvector,int* pM,const mxArray* dataref);
+void FetchData(float** pvector,int* pM,const mxArray* dataref);
+void FetchData(double** pvector,int* pM,const mxArray* dataref);
+void FetchData(bool** pvector,int* pM,const mxArray* dataref);
+void FetchData(char** pstring,const mxArray* dataref);
+void FetchData(double* pscalar,const mxArray* dataref);
+void FetchData(int* pinteger,const mxArray* dataref);
+void FetchData(bool* pbool,const mxArray* dataref);
+void FetchData(BamgGeom** bamggeom,const mxArray* dataref);
+void FetchData(BamgMesh** bamgmesh,const mxArray* dataref);
+void FetchData(BamgOpts** bamgopts,const mxArray* dataref);
+void FetchData(Options** poptions,int istart, int nrhs,const mxArray** pdataref);
+void FetchData(Contours** pcontours,const mxArray* dataref);
+void FetchChacoData(int* pnvtxs,int** padjacency,int** pstart,float** pewgts,const mxArray* A_IN, const mxArray* EWGTS_IN);
+
+Option* OptionParse(char* name, const mxArray* prhs[]);
+GenericOption<double>*  OptionDoubleParse(char* name, const mxArray* prhs[]);
+GenericOption<double*>* OptionDoubleArrayParse(char* name, const mxArray* prhs[]);
+GenericOption<char*>*   OptionCharParse(char* name, const mxArray* prhs[]);
+
+mxArray* mxGetAssignedField(const mxArray* pmxa_array,int number, const char* field);
+void SetStructureField(mxArray* dataref,const char* fieldname,int fieldrows,int fieldcols,double* fieldpointer);
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int fieldrows,int fieldcols,double* fieldpointer);
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int fieldrows,int fieldcols,int*    fieldpointer);
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int field);
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,double field);
+void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,const char* string);
+int CheckNumMatlabArguments(int nlhs,int NLHS, int nrhs,int NRHS, const char* THISFUNCTION, void (*function)( void ));
+
+/*Matlab to double* routines: */
+int MatlabMatrixToDoubleMatrix(double** pmatrix,int* pmatrix_rows,int* pmatrix_cols,const mxArray* mxmatrix);
+
+/*Print*/
+void ApiPrintf(const char* string);
+#endif	/* _IO_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/Makefile.am
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/Makefile.am	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/Makefile.am	(revision 27955)
@@ -0,0 +1,216 @@
+AM_CPPFLAGS = @DAKOTAINCL@ @PETSCINCL@ @MPIINCL@ @SPOOLESINCL@ @PARMETISINCL@ @METISINCL@ @TRIANGLEINCL@ @CHACOINCL@ @SCOTCHINCL@ @SHAPELIBINCL@ @PYTHONINCL@ @PYTHON_NUMPYINCL@ @AMPIINCL@ @ADJOINTMPIINCL@ @MEDIPACKINCL@ @CODIPACKINCL@ @PROJINCL@
+AUTOMAKE_OPTIONS = subdir-objects
+
+#define prefix (from http://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/Defining-Directories.html)
+AM_CPPFLAGS += -DISSM_PREFIX='"$(prefix)"'
+
+#python io{{{
+lib_LTLIBRARIES = libISSMPython.la
+
+io_sources = \
+	./io/CheckNumPythonArguments.cpp \
+	./io/FetchPythonData.cpp \
+	./io/WritePythonData.cpp
+
+ALL_CXXFLAGS = -fPIC -D_WRAPPERS_
+
+if MSYS2
+ALL_CXXFLAGS += -D_DO_NOT_LOAD_GLOBALS_ # Cannot have undefined symbols under MSYS2
+ALL_CXXFLAGS += -D_USE_MATH_DEFINES # Need to open fence to math.h definitions when --std=c++ is used (which is the default)
+endif
+
+ALL_CXXFLAGS += $(CXXOPTFLAGS) $(CXXFLAGS)
+
+libISSMPython_la_SOURCES = $(io_sources)
+libISSMPython_la_CXXFLAGS= ${ALL_CXXFLAGS}
+#}}}
+#api io{{{
+lib_LTLIBRARIES += libISSMApi.la
+
+if !MSYS2
+api_sources= ./io/ApiPrintf.cpp
+
+libISSMApi_la_SOURCES = $(api_sources)
+libISSMApi_la_CXXFLAGS = ${ALL_CXXFLAGS}
+endif
+#}}}
+#Wrappers {{{
+lib_LTLIBRARIES += \
+	BamgConvertMesh_python.la \
+	BamgMesher_python.la \
+	BamgTriangulate_python.la \
+	ContourToMesh_python.la \
+	ContourToNodes_python.la \
+	ElementConnectivity_python.la \
+	ExpToLevelSet_python.la \
+	InterpFromGridToMesh_python.la \
+	InterpFromMesh2d_python.la \
+	InterpFromMeshToGrid_python.la \
+	InterpFromMeshToMesh2d_python.la \
+	InterpFromMeshToMesh3d_python.la \
+	IssmConfig_python.la \
+	MeshPartition_python.la \
+	MeshProfileIntersection_python.la \
+	NodeConnectivity_python.la \
+	Triangle_python.la \
+	ProcessRifts_python.la
+
+if CHACO
+lib_LTLIBRARIES += Chaco_python.la
+endif
+#}}}
+# Dependencies {{{
+deps = $(MATHLIB) $(PYTHONLIB)
+
+# Triangle
+CXXFLAGS_FOR_TRI = -DTRILIBRARY -DANSI_DECLARATORS -DNO_TIMER
+
+# Python
+LDFLAGS_FOR_PY = -module $(PYTHONLINK) -shrext $(PYTHONWRAPPEREXT) -no-undefined
+
+LDFLAGS_FOR_PY += --no-warnings
+CXXFLAGS_FOR_PY = -D_HAVE_PYTHON_MODULES_
+
+if PYTHON3
+CXXFLAGS_FOR_PY += -DNPY_NO_DEPRECATED_API
+endif
+
+AM_CXXFLAGS = ${CXXFLAGS_FOR_TRI} ${CXXFLAGS_FOR_PY}
+AM_LDFLAGS = ${LDFLAGS_FOR_PY}
+
+if !MSYS2
+AM_LDFLAGS += --export-dynamic -rdynamic
+endif
+
+if !VERSION
+AM_LDFLAGS += -avoid-version
+endif
+
+# NOTE:
+# - On Linux, We probably do not need the -static flag as long as we only
+#	generate static libraries for external packages. Dynamic system libraries
+#	will be linked to, whether we like it or not, if no static version is
+#	available.
+# - On macOS, static linking of binaries is not supported.
+#
+if STANDALONE_MODULES
+if MAC
+AM_LDFLAGS += -Wl,-rpath,'@rpath'
+else
+AM_LDFLAGS += -Wl,-lbacktrace
+if !MSYS2
+AM_LDFLAGS += -Wl,-static -Wl,--disable-new-dtags -Wl,-rpath,'$$ORIGIN'
+endif
+endif
+endif
+
+AM_CXXFLAGS += -fPIC -D_WRAPPERS_
+
+deps += ./libISSMPython.la ../../c/libISSMModules.la ../../c/libISSMCore.la
+
+if !MSYS2
+deps += ./libISSMApi.la
+endif
+
+if ADOLC
+deps += $(ADOLCLIB)
+endif
+
+if FORTRAN
+deps += $(FLIBS) $(FORTRANLIB)
+endif
+
+#Optimization flags:
+AM_CXXFLAGS += $(CXXOPTFLAGS)
+#}}}
+# Module sources and dependencies {{{
+libISSMPython_la_LIBADD = ./../../c/libISSMCore.la ./../../c/libISSMModules.la $(PETSCLIB) $(HDF5LIB) $(MPILIB) $(NEOPZLIB) $(MKLLIB) $(GSLLIB) $(MATHLIB)
+
+if STANDALONE_LIBRARIES
+if !MSYS2
+libISSMPython_la_LDFLAGS = -static
+libISSMApi_la_LDFLAGS = -static
+endif
+deps += $(DAKOTALIB) $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(HDF5LIB) $(TAOLIB) $(NEOPZLIB) $(M1QN3LIB) $(SEMICLIB) $(PLAPACKLIB) $(SUPERLULIB) $(SPOOLESLIB) $(TRIANGLELIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(CHACOLIB) $(SCOTCHLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(ADOLCLIB) $(AMPILIB) $(METEOIOLIB) $(SNOWPACKLIB) $(OSLIBS)
+endif
+
+libISSMApi_la_LIBADD = $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(HDF5LIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(PROJLIB) $(MATHLIB)
+
+BamgConvertMesh_python_la_SOURCES = ../BamgConvertMesh/BamgConvertMesh.cpp
+BamgConvertMesh_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+BamgConvertMesh_python_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB)
+
+BamgMesher_python_la_SOURCES = ../BamgMesher/BamgMesher.cpp
+BamgMesher_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+BamgMesher_python_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB)
+
+BamgTriangulate_python_la_SOURCES = ../BamgTriangulate/BamgTriangulate.cpp
+BamgTriangulate_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+BamgTriangulate_python_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB)
+
+if CHACO
+Chaco_python_la_SOURCES = ../Chaco/Chaco.cpp
+Chaco_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+Chaco_python_la_LIBADD = ${deps} $(CHACOLIB) $(PETSCLIB) $(HDF5LIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB)
+endif
+
+ContourToMesh_python_la_SOURCES = ../ContourToMesh/ContourToMesh.cpp
+ContourToMesh_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+ContourToMesh_python_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(MPILIB) $(MULTITHREADINGLIB) $(NEOPZLIB) $(GSLLIB)
+
+ContourToNodes_python_la_SOURCES = ../ContourToNodes/ContourToNodes.cpp
+ContourToNodes_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+ContourToNodes_python_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB)
+
+ElementConnectivity_python_la_SOURCES = ../ElementConnectivity/ElementConnectivity.cpp
+ElementConnectivity_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+ElementConnectivity_python_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB)
+
+ExpToLevelSet_python_la_SOURCES = ../ExpToLevelSet/ExpToLevelSet.cpp
+ExpToLevelSet_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+ExpToLevelSet_python_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB) $(NEOPZLIB)
+
+InterpFromMesh2d_python_la_SOURCES = ../InterpFromMesh2d/InterpFromMesh2d.cpp
+InterpFromMesh2d_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+InterpFromMesh2d_python_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(MPILIB) $(MULTITHREADINGLIB) $(NEOPZLIB) $(GSLLIB)
+
+InterpFromGridToMesh_python_la_SOURCES = ../InterpFromGridToMesh/InterpFromGridToMesh.cpp
+InterpFromGridToMesh_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+InterpFromGridToMesh_python_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(MPILIB) $(MULTITHREADINGLIB) $(NEOPZLIB) $(GSLLIB)
+
+InterpFromMeshToGrid_python_la_SOURCES = ../InterpFromMeshToGrid/InterpFromMeshToGrid.cpp
+InterpFromMeshToGrid_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+InterpFromMeshToGrid_python_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(MPILIB) $(MULTITHREADINGLIB) $(NEOPZLIB) $(GSLLIB)
+
+InterpFromMeshToMesh2d_python_la_SOURCES = ../InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp
+InterpFromMeshToMesh2d_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+InterpFromMeshToMesh2d_python_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(MPILIB) $(MULTITHREADINGLIB) $(GSLLIB)
+
+InterpFromMeshToMesh3d_python_la_SOURCES = ../InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.cpp
+InterpFromMeshToMesh3d_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+InterpFromMeshToMesh3d_python_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(MPILIB) $(MULTITHREADINGLIB) $(GSLLIB)
+
+IssmConfig_python_la_SOURCES = ../IssmConfig/IssmConfig.cpp
+IssmConfig_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+IssmConfig_python_la_LIBADD = ${deps} $(DAKOTALIB) $(PETSCLIB) $(HDF5LIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB)
+
+MeshPartition_python_la_SOURCES = ../MeshPartition/MeshPartition.cpp
+MeshPartition_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+MeshPartition_python_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(METISLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB)
+
+MeshProfileIntersection_python_la_SOURCES = ../MeshProfileIntersection/MeshProfileIntersection.cpp
+MeshProfileIntersection_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+MeshProfileIntersection_python_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB)
+
+NodeConnectivity_python_la_SOURCES = ../NodeConnectivity/NodeConnectivity.cpp
+NodeConnectivity_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+NodeConnectivity_python_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB)
+
+Triangle_python_la_SOURCES = ../Triangle/Triangle.cpp
+Triangle_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+Triangle_python_la_LIBADD = ${deps} $(TRIANGLELIB) $(PETSCLIB) $(HDF5LIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB)
+
+ProcessRifts_python_la_SOURCES = ../ProcessRifts/ProcessRifts.cpp
+ProcessRifts_python_la_CXXFLAGS = ${AM_CXXFLAGS}
+ProcessRifts_python_la_LIBADD = ${deps} $(PETSCLIB) $(HDF5LIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(MPILIB) $(NEOPZLIB) $(GSLLIB)
+#}}}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/include/pythonincludes.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/include/pythonincludes.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/include/pythonincludes.h	(revision 27955)
@@ -0,0 +1,24 @@
+
+#ifndef _PYTHON_INCLUDES_H_
+#define _PYTHON_INCLUDES_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_PYTHON_
+
+#if _PYTHON_MAJOR_ >= 2
+#undef NPY_NO_DEPRECATED_API
+#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
+#else
+#define NPY_NO_DEPRECATED_API 
+#endif
+
+#include <Python.h>
+#include <arrayobject.h>
+
+#endif
+#endif /*_PYTHON_INCLUDES_H_*/
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/include/wrapper_macros.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/include/wrapper_macros.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/include/wrapper_macros.h	(revision 27955)
@@ -0,0 +1,83 @@
+/* \file python_macros.h
+ * \brief: macros used for the python bindings
+ */
+
+#ifndef _PY_WRAPPER_MACROS_H_
+#define _PY_WRAPPER_MACROS_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_PYTHON_
+/* MODULEBOOT/MODULEEND {{{*/
+
+/*The following macros hide the error exception handling in a python module. Just put 
+ * MODULEBOOT(); and MODULEEND(); at the beginning and end of a module, and c++ exceptions 
+ * will be trapped*/
+#define MODULEBOOT(); \
+	PyObject *output = PyTuple_New(NLHS); \
+	int       nrhs   = (int)PyTuple_Size(args);  \
+	if(!output) return NULL;\
+	try{ \
+	IssmComm::SetComm();
+
+#define MODULEEND(); }\
+  catch(ErrorException &exception){\
+	  PyErr_SetString(PyExc_TypeError,exception.WrapperReport()); \
+	  return NULL;\
+  } \
+	catch (exception &e){\
+		PyErr_SetString(PyExc_TypeError,e.what());\
+		return NULL;\
+	}\
+	catch(...){\
+		PyErr_SetString(PyExc_TypeError,"An unexpected error occurred");\
+		return NULL;\
+	}\
+	return output;
+//}}}
+#if _PYTHON_MAJOR_ >=3
+/* WRAPPER 3.2 {{{*/
+#define WRAPPER(modulename,...)  \
+static PyObject* modulename(PyObject* self,PyObject* args);\
+static PyMethodDef modulename##_funcs[] = {\
+	{#modulename, (PyCFunction)modulename, METH_VARARGS, ""},\
+	{NULL,NULL,0,NULL}\
+};\
+static struct PyModuleDef modulename##module= {\
+	PyModuleDef_HEAD_INIT,\
+	#modulename,   /* name of module */\
+	NULL, /* module documentation, may be NULL */\
+	-1,       /* size of per-interpreter state of the module,\
+				 or -1 if the module keeps state in global variables. */\
+	modulename##_funcs\
+};\
+PyMODINIT_FUNC PyInit_##modulename(void){\
+	import_array();\
+	return PyModule_Create(&modulename##module);\
+}\
+static PyObject* modulename(PyObject* self,PyObject* args)
+/*}}}*/
+#else
+/* WRAPPER 2.7 {{{*/
+#define WRAPPER(modulename,...)  \
+static PyObject* modulename(PyObject* self,PyObject* args);\
+static PyMethodDef modulename##_funcs[] = {\
+	{#modulename, (PyCFunction)modulename, METH_VARARGS, ""},\
+	{NULL,NULL,0,NULL}\
+};\
+PyMODINIT_FUNC init##modulename(void){\
+	import_array();\
+	(void) Py_InitModule(#modulename, modulename##_funcs);\
+}\
+static PyObject* modulename(PyObject* self,PyObject* args)
+/*}}}*/
+#endif
+/* CHECKARGUMENTS {{{*/
+#define CHECKARGUMENTS(NLHS,NRHS,functionpointer) CheckNumPythonArguments(args, NRHS,functionpointer)
+/*}}}*/
+#endif
+#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/io/ApiPrintf.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/io/ApiPrintf.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/io/ApiPrintf.cpp	(revision 27955)
@@ -0,0 +1,20 @@
+/* \file ApiPrintf.c:
+ * \brief: pyton api specific symbols which are unresolved from libISSMCore.a
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./pythonio.h"
+#include "../../c/shared/shared.h"
+
+/*Python printf i/o: */
+void ApiPrintf(const char* string){
+
+	/*use printf: */
+	printf("%s",string);
+	return;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/io/CheckNumPythonArguments.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/io/CheckNumPythonArguments.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/io/CheckNumPythonArguments.cpp	(revision 27955)
@@ -0,0 +1,28 @@
+/*!\file CheckNumPythonArguments.cpp:
+ * \brief: check number of arguments and report an usage error message.
+ */
+
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#define NO_IMPORT
+
+#include "./pythonio.h"
+#include "../../c/shared/Exceptions/exceptions.h"
+
+int CheckNumPythonArguments(PyObject* inputs,int NRHS, void (*function)( void )){
+
+	Py_ssize_t size=0;
+
+	/*figure out size of tuple in input: */
+	size=PyTuple_Size(inputs);
+
+	/*check on requested size: */
+	if (size==0){
+		function();
+		_error_("usage: see above");
+	}
+	else if (size!=NRHS ) {
+		function(); 
+		_error_("usage error.");
+	}
+	return 1;
+}
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/io/FetchPythonData.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/io/FetchPythonData.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/io/FetchPythonData.cpp	(revision 27955)
@@ -0,0 +1,1336 @@
+/*\file FetchData.cpp:
+ * \brief: general I/O interface to fetch data in python
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#define NO_IMPORT
+
+#include "./pythonio.h"
+#include "../../c/shared/shared.h"
+
+/*Primitive data types*/
+/*FUNCTION FetchData(double* pscalar,PyObject* py_float){{{*/
+void FetchData(double* pscalar,PyObject* py_float){
+
+   double dscalar;
+
+	/*return internal value: */
+   #if _PYTHON_MAJOR_ == 3
+   if (PyFloat_Check(py_float))
+      dscalar=PyFloat_AsDouble(py_float);
+   else if (PyLong_Check(py_float))
+		dscalar=(double)PyLong_AsLong(py_float);
+	else if (PyBool_Check(py_float))
+		dscalar=(double)PyLong_AsLong(py_float);
+	else if (PyTuple_Check(py_float) && (int)PyTuple_Size(py_float)==1)
+		FetchData(&dscalar,PyTuple_GetItem(py_float,(Py_ssize_t)0));
+	else if (PyList_Check(py_float) && (int)PyList_Size(py_float)==1)
+		FetchData(&dscalar,PyList_GetItem(py_float,(Py_ssize_t)0));
+	else
+		_error_("unrecognized float type py3 in input!");
+
+	#else
+	if (PyFloat_Check(py_float))
+		dscalar=PyFloat_AsDouble(py_float);
+	else if (PyLong_Check(py_float))
+		dscalar=PyLong_AsDouble(py_float);
+	else if (PyInt_Check(py_float))
+		dscalar=(double)PyInt_AsLong(py_float);
+	else if (PyBool_Check(py_float))
+		dscalar=(double)PyLong_AsLong(py_float);
+	else if (PyTuple_Check(py_float) && (int)PyTuple_Size(py_float)==1)
+		FetchData(&dscalar,PyTuple_GetItem(py_float,(Py_ssize_t)0));
+	else if (PyList_Check(py_float) && (int)PyList_Size(py_float)==1)
+		FetchData(&dscalar,PyList_GetItem(py_float,(Py_ssize_t)0));
+	else
+		_error_("unrecognized float type in py2 input!");
+	#endif
+	/*output: */
+	*pscalar=dscalar;
+}
+/*}}}*/
+/*FUNCTION FetchData(float* pscalar,PyObject* py_float){{{*/
+void FetchData(float* pscalar,PyObject* py_float){
+
+	float fscalar;
+
+	/*return internal value: */
+	#if _PYTHON_MAJOR_ == 3
+	if  (PyFloat_Check(py_float))
+      fscalar=PyFloat_AsDouble(py_float);
+	else if (PyLong_Check(py_float))
+		fscalar=(float)PyLong_AsLong(py_float);
+	else if (PyBool_Check(py_float))
+		fscalar=(float)PyLong_AsLong(py_float);
+	else if (PyTuple_Check(py_float) && (int)PyTuple_Size(py_float)==1)
+		FetchData(&fscalar,PyTuple_GetItem(py_float,(Py_ssize_t)0));
+	else if (PyList_Check(py_float) && (int)PyList_Size(py_float)==1)
+		FetchData(&fscalar,PyList_GetItem(py_float,(Py_ssize_t)0));
+	else
+		_error_("unrecognized float type in input!");
+	#else
+	if  (PyFloat_Check(py_float))
+		fscalar=PyFloat_AsDouble(py_float);
+	else if (PyLong_Check(py_float))
+		fscalar=(float)PyLong_AsDouble(py_float);
+	else if (PyInt_Check(py_float))
+		fscalar=(float)PyInt_AsLong(py_float);
+	else if (PyBool_Check(py_float))
+		fscalar=(float)PyLong_AsLong(py_float);
+	else if (PyTuple_Check(py_float) && (int)PyTuple_Size(py_float)==1)
+		FetchData(&fscalar,PyTuple_GetItem(py_float,(Py_ssize_t)0));
+	else if (PyList_Check(py_float) && (int)PyList_Size(py_float)==1)
+		FetchData(&fscalar,PyList_GetItem(py_float,(Py_ssize_t)0));
+	else
+		_error_("unrecognized float type in input!");
+	#endif
+	/*output: */
+	*pscalar=fscalar;
+}
+/*}}}*/
+/*FUNCTION FetchData(int* pscalar,PyObject* py_long){{{*/
+void FetchData(int* pscalar, PyObject* py_long){
+
+	int iscalar;
+
+	/*return internal value: */
+	#if _PYTHON_MAJOR_ == 3
+	if (PyLong_Check(py_long))
+		iscalar=(int)PyLong_AsLong(py_long);
+	else if (PyFloat_Check(py_long))
+		iscalar=(int)PyFloat_AsDouble(py_long);
+	else if (PyBool_Check(py_long))
+		iscalar=(int)PyLong_AsLong(py_long);
+	else if (PyTuple_Check(py_long) && (int)PyTuple_Size(py_long)==1)
+		FetchData(&iscalar,PyTuple_GetItem(py_long,(Py_ssize_t)0));
+	else if (PyList_Check(py_long) && (int)PyList_Size(py_long)==1)
+		FetchData(&iscalar,PyList_GetItem(py_long,(Py_ssize_t)0));
+	else
+		_error_("unrecognized long type in input!");
+
+	#else
+	if (PyLong_Check(py_long))
+		iscalar=(int)PyLong_AsLong(py_long);
+	else if (PyInt_Check(py_long))
+		iscalar=(int)PyInt_AsLong(py_long);
+	else if (PyFloat_Check(py_long))
+		iscalar=(int)PyFloat_AsDouble(py_long);
+	else if (PyBool_Check(py_long))
+		iscalar=(int)PyLong_AsLong(py_long);
+	else if (PyTuple_Check(py_long) && (int)PyTuple_Size(py_long)==1)
+		FetchData(&iscalar,PyTuple_GetItem(py_long,(Py_ssize_t)0));
+	else if (PyList_Check(py_long) && (int)PyList_Size(py_long)==1)
+		FetchData(&iscalar,PyList_GetItem(py_long,(Py_ssize_t)0));
+	else
+		_error_("unrecognized long type in input!");
+	#endif
+	/*output: */
+	*pscalar=iscalar;
+}
+/*}}}*/
+/*FUNCTION FetchData(bool* pscalar,PyObject* py_boolean){{{*/
+void FetchData(bool* pscalar,PyObject* py_boolean){
+
+	bool bscalar;
+
+	/*return internal value: */
+	#if _PYTHON_MAJOR_ == 3
+	if (PyBool_Check(py_boolean))
+		bscalar=(bool)PyLong_AsLong(py_boolean);
+	else if (PyLong_Check(py_boolean))
+		bscalar=(bool)PyLong_AsLong(py_boolean);
+	else if (PyLong_Check(py_boolean))
+		bscalar=(bool)PyLong_AsLong(py_boolean);
+	else if (PyTuple_Check(py_boolean) && (int)PyTuple_Size(py_boolean)==1)
+		FetchData(&bscalar,PyTuple_GetItem(py_boolean,(Py_ssize_t)0));
+	else if (PyList_Check(py_boolean) && (int)PyList_Size(py_boolean)==1)
+		FetchData(&bscalar,PyList_GetItem(py_boolean,(Py_ssize_t)0));
+	else
+		_error_("unrecognized boolean type in input!");
+
+	#else
+	if      (PyBool_Check(py_boolean))
+		bscalar=(bool)PyLong_AsLong(py_boolean);
+	else if (PyLong_Check(py_boolean))
+		bscalar=(bool)PyLong_AsLong(py_boolean);
+	else if (PyLong_Check(py_boolean))
+		bscalar=(bool)PyLong_AsLong(py_boolean);
+	else if (PyInt_Check(py_boolean))
+		bscalar=(bool)PyInt_AsLong(py_boolean);
+	else if (PyTuple_Check(py_boolean) && (int)PyTuple_Size(py_boolean)==1)
+		FetchData(&bscalar,PyTuple_GetItem(py_boolean,(Py_ssize_t)0));
+	else if (PyList_Check(py_boolean) && (int)PyList_Size(py_boolean)==1)
+		FetchData(&bscalar,PyList_GetItem(py_boolean,(Py_ssize_t)0));
+	else
+		_error_("unrecognized boolean type in input!");
+	#endif
+	/*output: */
+	*pscalar=bscalar;
+}
+/*}}}*/
+/*FUNCTION FetchData(double** pmatrix,int* pM, int* pN, PyObject* py_matrix){{{*/
+void FetchData(double** pmatrix,int* pM,int *pN,PyObject* py_matrix){
+
+	/*output: */
+	double* dmatrix=NULL;
+	double* matrix=NULL;
+	int M=0;
+	int N=0;
+	int ndim;
+	npy_intp*  dims=NULL;
+
+	/*intermediary:*/
+	long* lmatrix=NULL;
+	bool* bmatrix=NULL;
+	int* imatrix=NULL;
+	float* smatrix=NULL;
+	int i;
+	PyObject* py_matrix2=NULL;
+
+	if (PyArray_Check((PyArrayObject*)py_matrix)) {
+		/*retrieve dimensions: */
+		ndim=PyArray_NDIM((const PyArrayObject*)py_matrix);
+		if (ndim==2) {
+			dims=PyArray_DIMS((PyArrayObject*)py_matrix);
+			M=dims[0]; N=dims[1];
+		}
+		else if (ndim==1) {
+			dims=PyArray_DIMS((PyArrayObject*)py_matrix);
+			M=dims[0]; N=1;
+		}
+		else
+			_error_("expecting an MxN matrix or M vector in input!");
+
+		if (M && N) {
+			if (!PyArray_ISCONTIGUOUS((PyArrayObject*)py_matrix)) {
+				py_matrix2=PyArray_ContiguousFromAny(py_matrix,NPY_DOUBLE,ndim,ndim);
+				py_matrix=py_matrix2;
+			}
+			if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_FLOAT) {
+				/*retrieve internal value: */
+				smatrix=(float*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into double matrix: */
+				matrix=xNew<double>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(double)smatrix[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_DOUBLE) {
+				/*retrieve internal value: */
+				dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*copy matrix: */
+				matrix=xNew<double>(M*N);
+				memcpy(matrix,dmatrix,(M*N)*sizeof(double));
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_LONG) {
+				/*retrieve internal value: */
+				lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into double matrix: */
+				matrix=xNew<double>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(double)lmatrix[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_BOOL) {
+				/*retrieve internal value: */
+				bmatrix=(bool*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into double matrix: */
+				matrix=xNew<double>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(double)bmatrix[i];
+			}
+			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_INT32) {
+				/*retrieve internal value: */
+				imatrix=(int*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into double matrix: */
+				matrix=xNew<double>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(double)imatrix[i];
+			}
+
+			else
+				_error_("unrecognized double pyarray type in input!");
+
+			//if (py_matrix2) delete(py_matrix2); Not doing this for now, seems to  be creating a segfault!
+		}
+		else
+			matrix=NULL;
+	}
+	else if (PyList_Check(py_matrix)) {
+		/*retrieve dimensions: */
+		M=(int)PyList_Size(py_matrix);
+		N=1;
+		if (M) {
+			matrix=xNew<double>(M);
+			for (int index = 0; index < M; index++) {
+				PyObject *item;
+				item = PyList_GetItem(py_matrix, index);
+				if ((int)PyList_Size(item)>1)
+					_error_("2D lists are not suported");
+				FetchData(&(matrix[index]),item);
+			}
+		}
+		//if (py_matrix2) delete(py_matrix2); Not doing this for now, seems to  be creating a segfault!
+		else
+			matrix=NULL;
+	}
+	else if (PyTuple_Check(py_matrix)) {
+		/*retrieve dimensions: */
+		M=(int)PyTuple_Size(py_matrix);
+		N=1;
+		if (M) {
+			matrix=xNew<double>(M);
+			for (int index = 0; index < M; index++) {
+				PyObject *item;
+				item = PyTuple_GetItem(py_matrix, index);
+				if ((int)PyTuple_Size(item)>1)
+					_error_("2D tuple are not suported");
+				FetchData(&(matrix[index]),item);
+			}
+		}
+		//if (py_matrix2) delete(py_matrix2); Not doing this for now, seems to  be creating a segfault!
+		else
+			matrix=NULL;
+	}
+
+	else {
+		M=1;
+		N=1;
+		matrix=xNew<double>(M*N);
+		FetchData(&(matrix[0]),py_matrix);
+	}
+
+	/*output: */
+	if(pM)*pM=M;
+	if(pN)*pN=N;
+	if(pmatrix)*pmatrix=matrix;
+}
+/*}}}*/
+/*FUNCTION FetchData(int** pmatrix,int* pM, int* pN, PyObject* py_matrix){{{*/
+void FetchData(int** pmatrix,int* pM,int *pN,PyObject* py_matrix){
+
+	/*output: */
+	int* matrix=NULL;
+	int M=0;
+	int N=0;
+	int ndim;
+	npy_intp*  dims=NULL;
+
+	/*intermediary:*/
+	double* dmatrix=NULL;
+	long* lmatrix=NULL;
+	bool* bmatrix=NULL;
+	int i;
+	PyObject* py_matrix2=NULL;
+
+	if     (PyArray_Check((PyArrayObject*)py_matrix)) {
+		/*retrieve dimensions: */
+		ndim=PyArray_NDIM((const PyArrayObject*)py_matrix);
+		if      (ndim==2) {
+			dims=PyArray_DIMS((PyArrayObject*)py_matrix);
+			M=dims[0]; N=dims[1];
+		}
+		else if (ndim==1) {
+			dims=PyArray_DIMS((PyArrayObject*)py_matrix);
+			M=dims[0]; N=1;
+		}
+		else
+			_error_("expecting an MxN matrix or M vector in input!");
+
+		if (M && N) {
+			if (!PyArray_ISCONTIGUOUS((PyArrayObject*)py_matrix)) {
+				py_matrix2=PyArray_ContiguousFromAny(py_matrix,NPY_LONG,ndim,ndim);
+				py_matrix=py_matrix2;
+			}
+
+			if      (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_DOUBLE) {
+				/*retrieve internal value: */
+				dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into integer matrix: */
+				matrix=xNew<int>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(int)dmatrix[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_LONG) {
+				/*retrieve internal value: */
+				lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into integer matrix: */
+				matrix=xNew<int>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(int)lmatrix[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_BOOL) {
+				/*retrieve internal value: */
+				bmatrix=(bool*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into integer matrix: */
+				matrix=xNew<int>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(int)bmatrix[i];
+			}
+
+			else
+				_error_("unrecognized int pyarray type in input!");
+
+			/* These lines are causing a segfault
+			if (py_matrix2)
+				delete(py_matrix2);
+			*/
+		}
+		else
+			matrix=NULL;
+	}
+	else if (PyList_Check(py_matrix)) {
+		/*retrieve dimensions: */
+		M=(int)PyList_Size(py_matrix);
+		N=1;
+		if (M) {
+			matrix=xNew<int>(M);
+			for (int index = 0; index < M; index++) {
+				PyObject *item;
+				item = PyList_GetItem(py_matrix, index);
+				if ((int)PyList_Size(item)>1)
+					_error_("2D lists are not suported");
+				FetchData(&(matrix[index]),item);
+			}
+		}
+		else
+			matrix=NULL;
+	}
+	else if (PyTuple_Check(py_matrix)) {
+		/*retrieve dimensions: */
+		M=(int)PyTuple_Size(py_matrix);
+		N=1;
+		if (M) {
+			matrix=xNew<int>(M);
+			for (int index = 0; index < M; index++) {
+				PyObject *item;
+				item = PyTuple_GetItem(py_matrix, index);
+				if ((int)PyTuple_Size(item)>1)
+					_error_("2D tuple are not suported");
+				FetchData(&(matrix[index]),item);
+			}
+		}
+		//if (py_matrix2) delete(py_matrix2); Not doing this for now, seems to  be creating a segfault!
+		else
+			matrix=NULL;
+	}
+
+	else {
+		M=1;
+		N=1;
+		matrix=xNew<int>(M*N);
+		FetchData(&(matrix[0]),py_matrix);
+	}
+
+	/*output: */
+	if(pM)*pM=M;
+	if(pN)*pN=N;
+	if(pmatrix)*pmatrix=matrix;
+}
+/*}}}*/
+/*FUNCTION FetchData(bool** pmatrix,int* pM, int* pN, PyObject* py_matrix){{{*/
+void FetchData(bool** pmatrix,int* pM,int *pN,PyObject* py_matrix){
+
+	/*output: */
+	bool* bmatrix=NULL;
+	bool* matrix=NULL;
+	int M=0;
+	int N=0;
+	int ndim;
+	npy_intp*  dims=NULL;
+
+	/*intermediary:*/
+	double* dmatrix=NULL;
+	long* lmatrix=NULL;
+	int i;
+	PyObject* py_matrix2=NULL;
+
+	if     (PyArray_Check((PyArrayObject*)py_matrix)) {
+		/*retrieve dimensions: */
+		ndim=PyArray_NDIM((const PyArrayObject*)py_matrix);
+		if      (ndim==2) {
+			dims=PyArray_DIMS((PyArrayObject*)py_matrix);
+			M=dims[0]; N=dims[1];
+		}
+		else if (ndim==1) {
+			dims=PyArray_DIMS((PyArrayObject*)py_matrix);
+			M=dims[0]; N=1;
+		}
+		else
+			_error_("expecting an MxN matrix or M vector in input!");
+
+		if (M && N) {
+			if (!PyArray_ISCONTIGUOUS((PyArrayObject*)py_matrix)) {
+				py_matrix2=PyArray_ContiguousFromAny(py_matrix,NPY_BOOL,ndim,ndim);
+				py_matrix=py_matrix2;
+			}
+
+			if      (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_DOUBLE) {
+				/*retrieve internal value: */
+				dmatrix=(double*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into bool matrix: */
+				matrix=xNew<bool>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(bool)dmatrix[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_LONG) {
+				/*retrieve internal value: */
+				lmatrix=(long*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*transform into bool matrix: */
+				matrix=xNew<bool>(M*N);
+				for(i=0;i<M*N;i++)matrix[i]=(bool)lmatrix[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_matrix) == NPY_BOOL) {
+				/*retrieve internal value: */
+				bmatrix=(bool*)PyArray_DATA((PyArrayObject*)py_matrix);
+
+				/*copy matrix: */
+				matrix=xNew<bool>(M*N);
+				memcpy(matrix,bmatrix,(M*N)*sizeof(bool));
+			}
+
+			else
+				_error_("unrecognized bool pyarray type in input!");
+
+			if (py_matrix2)
+				delete(py_matrix2);
+		}
+		else
+			matrix=NULL;
+	}
+		//if (py_matrix2) delete(py_matrix2); Not doing this for now, seems to  be creating a segfault!
+
+	else if (PyList_Check(py_matrix)) {
+		/*retrieve dimensions: */
+		M=(int)PyList_Size(py_matrix);
+		N=1;
+		if (M) {
+			matrix=xNew<bool>(M);
+			for (int index = 0; index < M; index++) {
+				PyObject *item;
+				item = PyList_GetItem(py_matrix, index);
+				if ((int)PyList_Size(item)>1)
+					_error_("2D lists are not suported");
+				FetchData(&(matrix[index]),item);
+			}
+		}
+		else
+			matrix=NULL;
+	}
+	else if (PyTuple_Check(py_matrix)) {
+		/*retrieve dimensions: */
+		M=(int)PyTuple_Size(py_matrix);
+		N=1;
+		if (M) {
+			matrix=xNew<bool>(M);
+			for (int index = 0; index < M; index++) {
+				PyObject *item;
+				item = PyTuple_GetItem(py_matrix, index);
+				if ((int)PyTuple_Size(item)>1)
+					_error_("2D tuples are not suported");
+				FetchData(&(matrix[index]),item);
+			}
+		}
+		//if (py_matrix2) delete(py_matrix2); Not doing this for now, seems to  be creating a segfault!
+		else
+			matrix=NULL;
+	}
+
+	else {
+		M=1;
+		N=1;
+		matrix=xNew<bool>(M*N);
+		FetchData(&(matrix[0]),py_matrix);
+	}
+
+	/*output: */
+	if(pM)*pM=M;
+	if(pN)*pN=N;
+	if(pmatrix)*pmatrix=matrix;
+}
+/*}}}*/
+/*FUNCTION FetchData(double** pvector,int* pM, PyObject* py_vector){{{*/
+void FetchData(double** pvector,int* pM,PyObject* py_vector){
+
+	/*output: */
+	double* dvector=NULL;
+	double* vector=NULL;
+	int M=0;
+	int ndim;
+	npy_intp*  dims=NULL;
+
+	/*intermediary:*/
+	long* lvector=NULL;
+	bool* bvector=NULL;
+	float* svector=NULL;
+	int i;
+	PyObject* py_vector2=NULL;
+
+	if     (PyArray_Check((PyArrayObject*)py_vector)) {
+		/*retrieve dimensions: */
+		ndim=PyArray_NDIM((const PyArrayObject*)py_vector);
+		if      (ndim==1) {
+			dims=PyArray_DIMS((PyArrayObject*)py_vector);
+			M=dims[0];
+		}
+		else if (ndim==2) {
+			dims=PyArray_DIMS((PyArrayObject*)py_vector);
+			if (dims[1]==1)
+				M=dims[0];
+			else
+				_error_("expecting an Mx1 matrix or M vector in input!");
+		}
+		else
+			_error_("expecting an Mx1 matrix or M vector in input!");
+
+		if (M) {
+			if (!PyArray_ISCONTIGUOUS((PyArrayObject*)py_vector)) {
+				py_vector2=PyArray_ContiguousFromAny(py_vector,NPY_DOUBLE,ndim,ndim);
+				py_vector=py_vector2;
+			}
+
+			if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_FLOAT) {
+				/*retrieve internal value: */
+				svector=(float*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*transform into double matrix: */
+				vector=xNew<double>(M);
+				for(i=0;i<M;i++)vector[i]=(double)svector[i];
+			}
+			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_DOUBLE) {
+				/*retrieve internal value: */
+				dvector=(double*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*copy vector: */
+				vector=xNew<double>(M);
+				memcpy(vector,dvector,(M)*sizeof(double));
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_LONG) {
+				/*retrieve internal value: */
+				lvector=(long*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*transform into double vector: */
+				vector=xNew<double>(M);
+				for(i=0;i<M;i++)vector[i]=(double)lvector[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_BOOL) {
+				/*retrieve internal value: */
+				bvector=(bool*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*transform into double vector: */
+				vector=xNew<double>(M);
+				for(i=0;i<M;i++)vector[i]=(double)bvector[i];
+			}
+
+			else
+				_error_("unrecognized double pyarray type in input!");
+
+			/* Causing a seg fault.
+			if (py_vector2)
+				delete(py_vector2);
+			*/
+		}
+		else
+			vector=NULL;
+	}
+	else if (PyList_Check(py_vector)) {
+		/*retrieve dimensions: */
+		M=(int)PyList_Size(py_vector);
+
+		if (M) {
+			vector=xNew<double>(M);
+			for (int index = 0; index < M; index++) {
+				PyObject *item;
+				item = PyList_GetItem(py_vector, index);
+				FetchData(&(vector[index]),item);
+			}
+		}
+		else
+			vector=NULL;
+	}
+	else if (PyTuple_Check(py_vector)) {
+		/*retrieve dimensions: */
+		M=(int)PyTuple_Size(py_vector);
+
+		if (M) {
+			vector=xNew<double>(M);
+			for (int index = 0; index < M; index++) {
+				PyObject *item;
+				item = PyTuple_GetItem(py_vector, index);
+				FetchData(&(vector[index]),item);
+			}
+		}
+		//if (py_matrix2) delete(py_matrix2); Not doing this for now, seems to  be creating a segfault!
+		else
+			vector=NULL;
+	}
+
+	else {
+		M=1;
+		vector=xNew<double>(M);
+		FetchData(&(vector[0]),py_vector);
+	}
+
+	/*output: */
+	if(pM)*pM=M;
+	if(pvector)*pvector=vector;
+}
+/*}}}*/
+/*FUNCTION FetchData(float** pvector,int* pM, PyObject* py_vector){{{*/
+void FetchData(float** pvector,int* pM,PyObject* py_vector){
+
+	/*output: */
+	float* vector=NULL;
+	int M=0;
+	int ndim;
+	npy_intp*  dims=NULL;
+
+	/*intermediary:*/
+	long*   lvector=NULL;
+	bool*   bvector=NULL;
+	double* dvector=NULL;
+	int i;
+	PyObject* py_vector2=NULL;
+
+	if     (PyArray_Check((PyArrayObject*)py_vector)) {
+		/*retrieve dimensions: */
+		ndim=PyArray_NDIM((const PyArrayObject*)py_vector);
+		if      (ndim==1) {
+			dims=PyArray_DIMS((PyArrayObject*)py_vector);
+			M=dims[0];
+		}
+		else if (ndim==2) {
+			dims=PyArray_DIMS((PyArrayObject*)py_vector);
+			if (dims[1]==1)
+			 M=dims[0];
+			else
+			 _error_("expecting an Mx1 matrix or M vector in input!");
+		}
+		else
+		 _error_("expecting an Mx1 matrix or M vector in input!");
+
+		if (M) {
+			if (!PyArray_ISCONTIGUOUS((PyArrayObject*)py_vector)) {
+				py_vector2=PyArray_ContiguousFromAny(py_vector,NPY_LONG,ndim,ndim);
+				py_vector=py_vector2;
+			}
+
+			if      (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_DOUBLE) {
+				/*retrieve internal value: */
+				dvector=(double*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*transform into int vector: */
+				vector=xNew<float>(M);
+				for(i=0;i<M;i++)vector[i]=(float)dvector[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_LONG) {
+				/*retrieve internal value: */
+				lvector=(long*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*transform into int vector: */
+				vector=xNew<float>(M);
+				for(i=0;i<M;i++)vector[i]=(float)lvector[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_BOOL) {
+				/*retrieve internal value: */
+				bvector=(bool*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*transform into int vector: */
+				vector=xNew<float>(M);
+				for(i=0;i<M;i++)vector[i]=(float)bvector[i];
+			}
+
+			else
+			 _error_("unrecognized int pyarray type in input!");
+
+			if(py_vector2) delete(py_vector2);
+		}
+		else
+			vector=NULL;
+	}
+	else if (PyList_Check(py_vector)) {
+		/*retrieve dimensions: */
+		M=(int)PyList_Size(py_vector);
+
+		if (M) {
+			vector=xNew<float>(M);
+			for (int index = 0; index < M; index++) {
+				PyObject *item;
+				item = PyList_GetItem(py_vector, index);
+				FetchData(&(vector[index]),item);
+			}
+		}
+		else
+			vector=NULL;
+	}
+
+	else if (PyTuple_Check(py_vector)) {
+		/*retrieve dimensions: */
+		M=(int)PyTuple_Size(py_vector);
+
+		if (M) {
+			vector=xNew<float>(M);
+			for (int index = 0; index < M; index++) {
+				PyObject *item;
+				item = PyTuple_GetItem(py_vector, index);
+				FetchData(&(vector[index]),item);
+			}
+		}
+		//if (py_matrix2) delete(py_matrix2); Not doing this for now, seems to  be creating a segfault!
+		else
+			vector=NULL;
+	}
+
+	else{
+		M=1;
+		vector=xNew<float>(M);
+		FetchData(&(vector[0]),py_vector);
+	}
+
+	/*output: */
+	if(pM)*pM=M;
+	if(pvector)*pvector=vector;
+}
+/*}}}*/
+/*FUNCTION FetchData(int** pvector,int* pM, PyObject* py_vector){{{*/
+void FetchData(int** pvector,int* pM,PyObject* py_vector){
+
+	/*output: */
+	int* vector=NULL;
+	int M=0;
+	int ndim;
+	npy_intp*  dims=NULL;
+
+	/*intermediary:*/
+	long*   lvector=NULL;
+	bool*   bvector=NULL;
+	double* dvector=NULL;
+	int i;
+	PyObject* py_vector2=NULL;
+
+	if     (PyArray_Check((PyArrayObject*)py_vector)) {
+		/*retrieve dimensions: */
+		ndim=PyArray_NDIM((const PyArrayObject*)py_vector);
+		if      (ndim==1) {
+			dims=PyArray_DIMS((PyArrayObject*)py_vector);
+			M=dims[0];
+		}
+		else if (ndim==2) {
+			dims=PyArray_DIMS((PyArrayObject*)py_vector);
+			if (dims[1]==1)
+				M=dims[0];
+			else
+				_error_("expecting an Mx1 matrix or M vector in input!");
+		}
+		else
+			_error_("expecting an Mx1 matrix or M vector in input!");
+
+		if (M) {
+			if (!PyArray_ISCONTIGUOUS((PyArrayObject*)py_vector)) {
+				py_vector2=PyArray_ContiguousFromAny(py_vector,NPY_LONG,ndim,ndim);
+				py_vector=py_vector2;
+			}
+
+			if      (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_DOUBLE) {
+				/*retrieve internal value: */
+				dvector=(double*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*transform into int vector: */
+				vector=xNew<int>(M);
+				for(i=0;i<M;i++)vector[i]=(int)dvector[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_LONG) {
+				/*retrieve internal value: */
+				lvector=(long*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*transform into int vector: */
+				vector=xNew<int>(M);
+				for(i=0;i<M;i++)vector[i]=(int)lvector[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_BOOL) {
+				/*retrieve internal value: */
+				bvector=(bool*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*transform into int vector: */
+				vector=xNew<int>(M);
+				for(i=0;i<M;i++)vector[i]=(int)bvector[i];
+			}
+
+			else
+			 _error_("unrecognized int pyarray type in input!");
+
+			if (py_vector2)
+				delete(py_vector2);
+		}
+		else
+			vector=NULL;
+	}
+
+	else if (PyList_Check(py_vector)) {
+		/*retrieve dimensions: */
+		M=(int)PyList_Size(py_vector);
+
+		if (M) {
+			vector=xNew<int>(M);
+			for (int index = 0; index < M; index++) {
+				PyObject *item;
+				item = PyList_GetItem(py_vector, index);
+				FetchData(&(vector[index]),item);
+			}
+		}
+		else
+			vector=NULL;
+	}
+
+	else if (PyTuple_Check(py_vector)) {
+		/*retrieve dimensions: */
+		M=(int)PyTuple_Size(py_vector);
+
+		if (M) {
+			vector=xNew<int>(M);
+			for (int index = 0; index < M; index++) {
+				PyObject *item;
+				item = PyTuple_GetItem(py_vector, index);
+				FetchData(&(vector[index]),item);
+			}
+		}
+		//if (py_matrix2) delete(py_matrix2); Not doing this for now, seems to  be creating a segfault!
+		else
+			vector=NULL;
+	}
+
+	else {
+		M=1;
+		vector=xNew<int>(M);
+		FetchData(&(vector[0]),py_vector);
+	}
+
+	/*output: */
+	if(pM)*pM=M;
+	if(pvector)*pvector=vector;
+}
+/*}}}*/
+/*FUNCTION FetchData(bool** pvector,int* pM, PyObject* py_vector){{{*/
+void FetchData(bool** pvector,int* pM,PyObject* py_vector){
+
+	/*output: */
+	bool* bvector=NULL;
+	bool* vector=NULL;
+	int M=0;
+	int ndim;
+	npy_intp*  dims=NULL;
+
+	/*intermediary:*/
+	double* dvector=NULL;
+	long* lvector=NULL;
+	int i;
+	PyObject* py_vector2=NULL;
+
+	if     (PyArray_Check((PyArrayObject*)py_vector)) {
+		/*retrieve dimensions: */
+		ndim=PyArray_NDIM((const PyArrayObject*)py_vector);
+		if      (ndim==1) {
+			dims=PyArray_DIMS((PyArrayObject*)py_vector);
+			M=dims[0];
+		}
+		else if (ndim==2) {
+			dims=PyArray_DIMS((PyArrayObject*)py_vector);
+			if (dims[1]==1)
+				M=dims[0];
+			else
+				_error_("expecting an Mx1 matrix or M vector in input!");
+		}
+		else
+			_error_("expecting an Mx1 matrix or M vector in input!");
+
+		if (M) {
+			if (!PyArray_ISCONTIGUOUS((PyArrayObject*)py_vector)) {
+				py_vector2=PyArray_ContiguousFromAny(py_vector,NPY_BOOL,ndim,ndim);
+				py_vector=py_vector2;
+			}
+
+			if      (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_DOUBLE) {
+				/*retrieve internal value: */
+				dvector=(double*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*transform into bool vector: */
+				vector=xNew<bool>(M);
+				for(i=0;i<M;i++)vector[i]=(bool)dvector[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_LONG) {
+				/*retrieve internal value: */
+				lvector=(long*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*transform into bool vector: */
+				vector=xNew<bool>(M);
+				for(i=0;i<M;i++)vector[i]=(bool)lvector[i];
+			}
+
+			else if (PyArray_TYPE((PyArrayObject*)py_vector) == NPY_BOOL) {
+				/*retrieve internal value: */
+				bvector=(bool*)PyArray_DATA((PyArrayObject*)py_vector);
+
+				/*copy vector: */
+				vector=xNew<bool>(M);
+				memcpy(vector,bvector,(M)*sizeof(bool));
+			}
+
+			else
+				_error_("unrecognized bool pyarray type in input!");
+
+			if (py_vector2)
+				delete(py_vector2);
+		}
+		else
+			vector=NULL;
+	}
+	else if (PyList_Check(py_vector)) {
+		/*retrieve dimensions: */
+		M=(int)PyList_Size(py_vector);
+		if (M) {
+			vector=xNew<bool>(M);
+			for (int index = 0; index < M; index++) {
+				PyObject *item;
+				item = PyList_GetItem(py_vector, index);
+				FetchData(&(vector[index]),item);
+			}
+		}
+		else
+			vector=NULL;
+	}
+
+	else if (PyTuple_Check(py_vector)) {
+		/*retrieve dimensions: */
+		M=(int)PyTuple_Size(py_vector);
+
+		if (M) {
+			vector=xNew<bool>(M);
+			for (int index = 0; index < M; index++) {
+				PyObject *item;
+				item = PyTuple_GetItem(py_vector, index);
+				FetchData(&(vector[index]),item);
+			}
+		}
+		//if (py_matrix2) delete(py_matrix2); Not doing this for now, seems to  be creating a segfault!
+		else
+			vector=NULL;
+	}
+
+	else {
+		M=1;
+		vector=xNew<bool>(M);
+		FetchData(&(vector[0]),py_vector);
+	}
+
+	/*output: */
+	if(pM)*pM=M;
+	if(pvector)*pvector=vector;
+}
+/*}}}*/
+
+/*ISSM objects*/
+/*FUNCTION FetchData(BamgGeom** pbamggeom,PyObject* py_dict){{{*/
+void FetchData(BamgGeom** pbamggeom,PyObject* py_dict){
+
+	/*Initialize output*/
+	BamgGeom* bamggeom=new BamgGeom();
+
+	/*Fetch all fields*/
+	FetchData(&bamggeom->Vertices,&bamggeom->VerticesSize[0],&bamggeom->VerticesSize[1],PyDict_GetItemString(py_dict,"Vertices"));
+	FetchData(&bamggeom->Edges, &bamggeom->EdgesSize[0], &bamggeom->EdgesSize[1], PyDict_GetItemString(py_dict,"Edges"));
+	FetchData(&bamggeom->Corners, &bamggeom->CornersSize[0], &bamggeom->CornersSize[1], PyDict_GetItemString(py_dict,"Corners"));
+	FetchData(&bamggeom->RequiredVertices,&bamggeom->RequiredVerticesSize[0],&bamggeom->RequiredVerticesSize[1],PyDict_GetItemString(py_dict,"RequiredVertices"));
+	FetchData(&bamggeom->RequiredEdges, &bamggeom->RequiredEdgesSize[0], &bamggeom->RequiredEdgesSize[1], PyDict_GetItemString(py_dict,"RequiredEdges"));
+	FetchData(&bamggeom->CrackedEdges,&bamggeom->CrackedEdgesSize[0],&bamggeom->CrackedEdgesSize[1],PyDict_GetItemString(py_dict,"CrackedEdges"));
+	FetchData(&bamggeom->SubDomains,&bamggeom->SubDomainsSize[0],&bamggeom->SubDomainsSize[1],PyDict_GetItemString(py_dict,"SubDomains"));
+
+	/*Assign output pointers:*/
+	*pbamggeom=bamggeom;
+}
+/*}}}*/
+/*FUNCTION FetchData(BamgMesh** pbamgmesh,PyObject* py_dict){{{*/
+void FetchData(BamgMesh** pbamgmesh,PyObject* py_dict){
+
+	/*Initialize output*/
+	BamgMesh* bamgmesh=new BamgMesh();
+
+	/*Fetch all fields*/
+	FetchData(&bamgmesh->Vertices,&bamgmesh->VerticesSize[0],&bamgmesh->VerticesSize[1],PyDict_GetItemString(py_dict,"Vertices"));
+	FetchData(&bamgmesh->Edges, &bamgmesh->EdgesSize[0], &bamgmesh->EdgesSize[1], PyDict_GetItemString(py_dict,"Edges"));
+	FetchData(&bamgmesh->Triangles, &bamgmesh->TrianglesSize[0], &bamgmesh->TrianglesSize[1], PyDict_GetItemString(py_dict,"Triangles"));
+	FetchData(&bamgmesh->CrackedEdges,&bamgmesh->CrackedEdgesSize[0],&bamgmesh->CrackedEdgesSize[1],PyDict_GetItemString(py_dict,"CrackedEdges"));
+	FetchData(&bamgmesh->VerticesOnGeomEdge,&bamgmesh->VerticesOnGeomEdgeSize[0],&bamgmesh->VerticesOnGeomEdgeSize[1],PyDict_GetItemString(py_dict,"VerticesOnGeomEdge"));
+	FetchData(&bamgmesh->VerticesOnGeomVertex,&bamgmesh->VerticesOnGeomVertexSize[0],&bamgmesh->VerticesOnGeomVertexSize[1],PyDict_GetItemString(py_dict,"VerticesOnGeomVertex"));
+	FetchData(&bamgmesh->EdgesOnGeomEdge, &bamgmesh->EdgesOnGeomEdgeSize[0], &bamgmesh->EdgesOnGeomEdgeSize[1], PyDict_GetItemString(py_dict,"EdgesOnGeomEdge"));
+	FetchData(&bamgmesh->IssmSegments,&bamgmesh->IssmSegmentsSize[0],&bamgmesh->IssmSegmentsSize[1],PyDict_GetItemString(py_dict,"IssmSegments"));
+
+	/*Assign output pointers:*/
+	*pbamgmesh=bamgmesh;
+}
+/*}}}*/
+/*FUNCTION FetchData(BamgOpts** pbamgopts,PyObject* py_dict){{{*/
+void FetchData(BamgOpts** pbamgopts,PyObject* py_dict){
+
+	/*Initialize output*/
+	BamgOpts* bamgopts=new BamgOpts();
+
+	/*Fetch all fields*/
+	FetchData(&bamgopts->anisomax,PyDict_GetItemString(py_dict,"anisomax"));
+	FetchData(&bamgopts->cutoff,PyDict_GetItemString(py_dict,"cutoff"));
+	FetchData(&bamgopts->coeff,PyDict_GetItemString(py_dict,"coeff"));
+	FetchData(&bamgopts->errg,PyDict_GetItemString(py_dict,"errg"));
+	FetchData(&bamgopts->gradation,PyDict_GetItemString(py_dict,"gradation"));
+	FetchData(&bamgopts->Hessiantype,PyDict_GetItemString(py_dict,"Hessiantype"));
+	FetchData(&bamgopts->maxnbv,PyDict_GetItemString(py_dict,"maxnbv"));
+	FetchData(&bamgopts->maxsubdiv,PyDict_GetItemString(py_dict,"maxsubdiv"));
+	FetchData(&bamgopts->Metrictype,PyDict_GetItemString(py_dict,"Metrictype"));
+	FetchData(&bamgopts->nbjacobi,PyDict_GetItemString(py_dict,"nbjacobi"));
+	FetchData(&bamgopts->nbsmooth,PyDict_GetItemString(py_dict,"nbsmooth"));
+	FetchData(&bamgopts->omega,PyDict_GetItemString(py_dict,"omega"));
+	FetchData(&bamgopts->power,PyDict_GetItemString(py_dict,"power"));
+	FetchData(&bamgopts->verbose,PyDict_GetItemString(py_dict,"verbose"));
+
+	FetchData(&bamgopts->Crack,PyDict_GetItemString(py_dict,"Crack"));
+	FetchData(&bamgopts->KeepVertices,PyDict_GetItemString(py_dict,"KeepVertices"));
+	FetchData(&bamgopts->splitcorners,PyDict_GetItemString(py_dict,"splitcorners"));
+
+	FetchData(&bamgopts->hmin,PyDict_GetItemString(py_dict,"hmin"));
+	FetchData(&bamgopts->hmax,PyDict_GetItemString(py_dict,"hmax"));
+	FetchData(&bamgopts->hminVertices,&bamgopts->hminVerticesSize[0],&bamgopts->hminVerticesSize[1],PyDict_GetItemString(py_dict,"hminVertices"));
+	FetchData(&bamgopts->hmaxVertices,&bamgopts->hmaxVerticesSize[0],&bamgopts->hmaxVerticesSize[1],PyDict_GetItemString(py_dict,"hmaxVertices"));
+	FetchData(&bamgopts->hVertices,&bamgopts->hVerticesLength,PyDict_GetItemString(py_dict,"hVertices"));
+	FetchData(&bamgopts->metric,&bamgopts->metricSize[0],&bamgopts->metricSize[1],PyDict_GetItemString(py_dict,"metric"));
+	FetchData(&bamgopts->field,&bamgopts->fieldSize[0],&bamgopts->fieldSize[1],PyDict_GetItemString(py_dict,"field"));
+	FetchData(&bamgopts->err,&bamgopts->errSize[0],&bamgopts->errSize[1],PyDict_GetItemString(py_dict,"err"));
+
+	/*Additional checks*/
+	bamgopts->Check();
+
+	/*Assign output pointers:*/
+	*pbamgopts=bamgopts;
+}
+/*}}}*/
+/*FUNCTION FetchData(Options** poptions,int istart, int nrhs,PyObject* py_tuple){{{*/
+void FetchData(Options** poptions,int istart, int nrhs,PyObject* py_tuple){
+
+	char   *name   = NULL;
+	Option *option = NULL;
+
+	/*Initialize output*/
+	Options* options=new Options();
+
+	/*Fetch all options*/
+	for (int i=istart; i<nrhs; i=i+2){
+		#if _PYTHON_MAJOR_ >= 3
+		if (!PyUnicode_Check(PyTuple_GetItem(py_tuple,(Py_ssize_t)i))) _error_("Argument " << i+1 << " must be name of option");
+		#else
+		if (!PyString_Check(PyTuple_GetItem(py_tuple,(Py_ssize_t)i))) _error_("Argument " << i+1 << " must be name of option");
+		#endif
+
+		FetchData(&name,PyTuple_GetItem(py_tuple,(Py_ssize_t)i));
+		if(i+1 == nrhs) _error_("Argument " << i+2 << " must exist and be value of option \"" << name << "\".");
+
+		_printf0_("FetchData for Options not implemented yet, ignoring option \"" << name << "\"!\n");
+
+//		option=(Option*)OptionParse(name,&PyTuple_GetItem(py_tuple,(Py_ssize_t)(i+1)));
+//		options->AddOption(option);
+//		option=NULL;
+	}
+
+	/*Assign output pointers:*/
+	*poptions=options;
+}
+/*}}}*/
+/*FUNCTION FetchData(Contours** pcontours,PyObject* py_list){{{*/
+void FetchData(Contours** pcontours,PyObject* py_list){
+
+	int              numcontours,test1,test2;
+	char            *contourname = NULL;
+	Contours         *contours    = NULL;
+	Contour<double> *contouri    = NULL;
+	PyObject        *py_dicti    = NULL;
+	PyObject        *py_item     = NULL;
+
+	#if _PYTHON_MAJOR_ >= 3
+	if (PyUnicode_Check(py_list)){
+	#else
+	if (PyString_Check(py_list)){
+	#endif
+		FetchData(&contourname,py_list);
+		contours=ExpRead<double>(contourname);
+	}
+	else if(PyList_Check(py_list)){
+
+		contours=new Contours();
+		numcontours=(int)PyList_Size(py_list);
+
+		for(int i=0;i<numcontours;i++){
+
+			contouri=new Contour<double>();
+			py_dicti=PyList_GetItem(py_list,(Py_ssize_t)i);
+
+			py_item = PyDict_GetItemString(py_dicti,"nods");
+			if(!py_item) _error_("input structure does not have a 'nods' field");
+			FetchData(&contouri->nods,py_item);
+
+			py_item = PyDict_GetItemString(py_dicti,"x");
+			if(!py_item) _error_("input structure does not have a 'x' field");
+			FetchData(&contouri->x,&test1,&test2,py_item);
+			if(test1!=contouri->nods || test2!=1) _error_("field x should be of size ["<<contouri->nods<<" 1]");
+
+			py_item = PyDict_GetItemString(py_dicti,"y");
+			if(!py_item) _error_("input structure does not have a 'y' field");
+			FetchData(&contouri->y,&test1,&test2,py_item);
+			if(test1!=contouri->nods || test2!=1) _error_("field y should be of size ["<<contouri->nods<<" 1]");
+
+			contours->AddObject(contouri);
+		}
+	}
+	else{
+		_error_("Contour is neither a string nor a structure and cannot be loaded");
+	}
+
+	/*clean-up and assign output pointer*/
+	xDelete<char>(contourname);
+	*pcontours=contours;
+}
+
+void FetchChacoData(int* pnvtxs,int** padjacency,int** pstart,float** pewgts,PyObject* A_IN, PyObject* EWGTS_IN){/*{{{*/
+
+	double* a = ((double*)PyArray_DATA((PyArrayObject*)A_IN));
+	int ndim  = PyArray_NDIM((PyArrayObject*)A_IN);
+	int nzmax = PyArray_CountNonzero((PyArrayObject*)A_IN);
+
+	/*Fetch adjacency matrix:*/
+	int      nvtxs       = PyArray_DIMS((PyArrayObject*)A_IN)[1];
+
+	int* mwstart = xNewZeroInit<int>(nvtxs+1);
+	pyGetJc(a,nvtxs,mwstart);
+
+	int* mwadjacency = xNewZeroInit<int>(nzmax);
+	pyGetIr(a,nvtxs,nzmax,mwadjacency);
+
+	int* start = xNew<int>(nvtxs+1);
+	for(int i=0;i<nvtxs+1;i++) start[i]=(int)mwstart[i];
+	int* adjacency = xNew<int>(nzmax);
+	for(int i=0; i<nzmax; i++) adjacency[i]=(int)mwadjacency[i];
+
+	/*Get edges weights*/
+	int nedges = start[nvtxs];
+	float* ewgts = NULL;
+	int size = PyArray_SIZE((PyArrayObject*)EWGTS_IN);
+	//size may be 1 and still be empty;
+	//presumably size of edge_weights input will never be exactly 1
+	if(size != 1 && size != 0){
+		ewgts = xNewZeroInit<float>(nedges);
+		for(int i = 0; i<nedges;i++){
+			ewgts[i] = (float)a[i];
+		}
+	}
+
+	/*Assign output pointers*/
+	*pnvtxs     = nvtxs;
+	*padjacency = adjacency;
+	*pstart     = start;
+	*pewgts     = ewgts;
+}
+/*}}}*/
+
+void pyGetJc(double* a, int nvtxs, int* Jc){
+/*{{{*/
+	//get the number of non-zero elements in each row, adding to the prior number;
+	//always starts with 0 and has length: number_of_rows_in(a)+1 == nvtxs+1
+	// eg: 0, 1, 3, 6, 8, 13, ...
+	// for: 1 in the first row, 2 in the second, 3 in the third, etc.
+	int c = 0;
+	Jc[c++] = 0;
+
+	for(int i=0;i<nvtxs;i++){
+		for(int j=0;j<nvtxs;j++){
+			if ((int)a[i+(j*nvtxs)] != 0){
+				Jc[c] += 1;
+			}
+		}
+		c++;
+		Jc[c] = Jc[c-1];
+	}
+	return;
+}
+/*}}}*/
+
+void pyGetIr(double* a, int nvtxs, int nzmax, int* Ir){
+/*{{{*/
+	//get the row-wise position of each non-zero element;
+	//has length: number_of_non_zero_elements_in(a) == nzmax
+	// eg: 10, 24, 25, 4, ...
+	// the 10th, 24th, and 25th elements in the first row, the 4th in the second row
+	// using pyGetJc to determine which indices correspond to which row
+	int r = 0;
+
+	for(int i=0;i<nvtxs;i++){
+		for(int j=0;j<nvtxs;j++){
+			if ((int)a[i+(j*nvtxs)] != 0){
+				Ir[r] = j;
+				r++;
+			}
+		}
+	}
+	return;
+}
+/*}}}*/
+
+/*Python version dependent: */
+/* #if _PYTHON_MAJOR_ >= 3 */
+/* /\*FUNCTION FetchData(char** pstring,PyObject* py_unicode){{{*\/ */
+/* void FetchData(char** pstring,PyObject* py_unicode){ */
+
+/* 	PyObject* py_bytes; */
+/* 	char* string=NULL; */
+
+/* 	/\*convert to bytes format: *\/ */
+/* 	PyUnicode_FSConverter(py_unicode,&py_bytes); */
+
+/* 	/\*convert from bytes to string: *\/ */
+/* 	string=PyBytes_AsUTF8(py_bytes); */
+
+/* 	/\*copy string (note strlen does not include trailing NULL): *\/ */
+/* 	*pstring=xNew<char>(strlen(string)+1); */
+/* 	memcpy(*pstring,string,(strlen(string)+1)*sizeof(char)); */
+/* } */
+/* /\*}}}*\/ */
+/* #else */
+/*FUNCTION FetchData(char** pstring,PyObject* py_string){{{*/
+void FetchData(char** pstring,PyObject* py_string){
+
+	/*extract internal string: */
+	#if _PYTHON_MAJOR_ == 3
+	const char* string=PyUnicode_AsUTF8(py_string);
+	#else
+	char* string=PyString_AsString(py_string);
+	#endif
+	/*copy string (note strlen does not include trailing NULL): */
+	*pstring=xNew<char>(strlen(string)+1);
+	memcpy(*pstring,string,(strlen(string)+1)*sizeof(char));
+}
+/*}}}*/
+//#endif
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/io/WritePythonData.cpp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/io/WritePythonData.cpp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/io/WritePythonData.cpp	(revision 27955)
@@ -0,0 +1,322 @@
+/* \file WriteData.c:
+ * \brief: general interface for writing data
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#define NO_IMPORT
+
+#include "./pythonio.h"
+#include "../../c/shared/shared.h"
+
+/*Primitive data types*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index,int integer){{{*/
+void WriteData(PyObject* py_tuple, int index, int integer){
+
+	#if _PYTHON_MAJOR_ >= 3
+	PyTuple_SetItem(py_tuple, index, PyLong_FromSsize_t((Py_ssize_t)integer));
+	#else
+	PyTuple_SetItem(py_tuple, index, PyInt_FromSsize_t((Py_ssize_t)integer));
+	#endif
+
+}/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index,char* string){{{*/
+void WriteData(PyObject* py_tuple, int index, char* string){
+
+	PyTuple_SetItem(py_tuple, index, PyUnicode_FromString(string));
+
+}/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index, double* matrix, int M, int N){{{*/
+void WriteData(PyObject* tuple, int index, double* matrix, int M,int N){
+
+	npy_intp dims[2]={0,0};
+	PyObject* array=NULL;
+
+	/*copy matrix: */
+	double* matrix_python=xNew<double>(M*N);
+	memcpy(matrix_python,matrix,M*N*sizeof(double));
+
+	dims[0]=(npy_intp)M;
+	dims[1]=(npy_intp)N;
+	array=PyArray_SimpleNewFromData(2,dims,NPY_DOUBLE,matrix_python);
+
+	PyTuple_SetItem(tuple, index, array);
+}/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index, int* matrix, int M, int N){{{*/
+void WriteData(PyObject* tuple, int index, int* matrix, int M,int N){
+
+	npy_intp dims[2]={0,0};
+	PyObject* array=NULL;
+
+	/*transform into long matrix: */
+	long* lmatrix=xNew<long>(M*N);
+	for(int i=0;i<M*N;i++)lmatrix[i]=(long)matrix[i];
+
+	dims[0]=(npy_intp)M;
+	dims[1]=(npy_intp)N;
+	array=PyArray_SimpleNewFromData(2,dims,NPY_INT64,lmatrix);
+
+	PyTuple_SetItem(tuple, index, array);
+}/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index, bool* matrix, int M, int N){{{*/
+void WriteData(PyObject* tuple, int index, bool* matrix, int M,int N){
+
+	npy_intp dims[2]={0,0};
+	PyObject* array=NULL;
+
+	/*copy matrix: */
+	bool* matrix_python=xNew<bool>(M*N);
+	memcpy(matrix_python,matrix,M*N*sizeof(bool));
+
+	dims[0]=(npy_intp)M;
+	dims[1]=(npy_intp)N;
+	array=PyArray_SimpleNewFromData(2,dims,NPY_BOOL,matrix_python);
+
+	PyTuple_SetItem(tuple, index, array);
+}/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index, double* vector, int M){{{*/
+void WriteData(PyObject* py_tuple, int index, double* vector, int M){
+
+	npy_intp  dim   = 10;
+	PyObject *array = NULL;
+
+
+	/*copy vector: */
+	double* vector_python=xNew<double>(M);
+	memcpy(vector_python,vector,M*sizeof(double));
+
+	dim=(npy_intp)M;
+	array=PyArray_SimpleNewFromData(1,&dim,NPY_DOUBLE,vector_python);
+
+	PyTuple_SetItem(py_tuple, index, array);
+
+}/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index, short* vector, int M){{{*/
+void WriteData(PyObject* py_tuple, int index,short* vector, int M){
+
+	long* lvector=NULL;
+	npy_intp dim=10;
+	PyObject* array=NULL;
+
+	/*transform into long matrix: */
+	lvector=xNew<long>(M);
+	for(int i=0;i<M;i++)lvector[i]=(long)vector[i];
+
+	dim=(npy_intp)M;
+	array=PyArray_SimpleNewFromData(1,&dim,NPY_INT64,lvector);
+
+	PyTuple_SetItem(py_tuple, index, array);
+
+}/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index, int* vector, int M){{{*/
+void WriteData(PyObject* py_tuple, int index, int* vector, int M){
+
+	long* lvector=NULL;
+	npy_intp dim=10;
+	PyObject* array=NULL;
+
+	/*transform into long matrix: */
+	lvector=xNew<long>(M);
+	for(int i=0;i<M;i++)lvector[i]=(long)vector[i];
+
+	dim=(npy_intp)M;
+	array=PyArray_SimpleNewFromData(1,&dim,NPY_INT64,lvector);
+
+	PyTuple_SetItem(py_tuple, index, array);
+
+}/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index){{{*/
+void WriteData(PyObject* py_tuple, int index){
+
+	PyTuple_SetItem(py_tuple, index, Py_None);
+
+}/*}}}*/
+
+/*ISSM objects*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index,BamgGeom* bamggeom){{{*/
+void WriteData(PyObject* py_tuple,int index,BamgGeom* bamggeom){
+
+	PyObject* dict=NULL;
+
+	dict=PyDict_New();
+
+	PyDict_SetItemString(dict,"Vertices",PyArrayFromCopiedData(bamggeom->VerticesSize,bamggeom->Vertices));
+	PyDict_SetItemString(dict,"Edges",PyArrayFromCopiedData(bamggeom->EdgesSize,bamggeom->Edges));
+	PyDict_SetItemString(dict,"TangentAtEdges",PyArrayFromCopiedData(bamggeom->TangentAtEdgesSize,bamggeom->TangentAtEdges));
+	PyDict_SetItemString(dict,"Corners",PyArrayFromCopiedData(bamggeom->CornersSize,bamggeom->Corners));
+	PyDict_SetItemString(dict,"RequiredVertices",PyArrayFromCopiedData(bamggeom->RequiredVerticesSize,bamggeom->RequiredVertices));
+	PyDict_SetItemString(dict,"RequiredEdges",PyArrayFromCopiedData(bamggeom->RequiredEdgesSize,bamggeom->RequiredEdges));
+	PyDict_SetItemString(dict,"CrackedEdges",PyArrayFromCopiedData(bamggeom->CrackedEdgesSize,bamggeom->CrackedEdges));
+	PyDict_SetItemString(dict,"SubDomains",PyArrayFromCopiedData(bamggeom->SubDomainsSize,bamggeom->SubDomains));
+
+	PyTuple_SetItem(py_tuple, index, dict);
+}
+/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index,BamgMesh* bamgmesh){{{*/
+void WriteData(PyObject* py_tuple,int index,BamgMesh* bamgmesh){
+
+	PyObject* dict=NULL;
+
+	dict=PyDict_New();
+
+	PyDict_SetItemString(dict,"Vertices",PyArrayFromCopiedData(bamgmesh->VerticesSize,bamgmesh->Vertices));
+	PyDict_SetItemString(dict,"Edges",PyArrayFromCopiedData(bamgmesh->EdgesSize,bamgmesh->Edges));
+	PyDict_SetItemString(dict,"Triangles",PyArrayFromCopiedData(bamgmesh->TrianglesSize,bamgmesh->Triangles));
+	PyDict_SetItemString(dict,"IssmEdges",PyArrayFromCopiedData(bamgmesh->IssmEdgesSize,bamgmesh->IssmEdges));
+	PyDict_SetItemString(dict,"IssmSegments",PyArrayFromCopiedData(bamgmesh->IssmSegmentsSize,bamgmesh->IssmSegments));
+	PyDict_SetItemString(dict,"VerticesOnGeomVertex",PyArrayFromCopiedData(bamgmesh->VerticesOnGeomVertexSize,bamgmesh->VerticesOnGeomVertex));
+	PyDict_SetItemString(dict,"VerticesOnGeomEdge",PyArrayFromCopiedData(bamgmesh->VerticesOnGeomEdgeSize,bamgmesh->VerticesOnGeomEdge));
+	PyDict_SetItemString(dict,"EdgesOnGeomEdge",PyArrayFromCopiedData(bamgmesh->EdgesOnGeomEdgeSize,bamgmesh->EdgesOnGeomEdge));
+	PyDict_SetItemString(dict,"SubDomains",PyArrayFromCopiedData(bamgmesh->SubDomainsSize,bamgmesh->SubDomains));
+	PyDict_SetItemString(dict,"SubDomainsFromGeom",PyArrayFromCopiedData(bamgmesh->SubDomainsFromGeomSize,bamgmesh->SubDomainsFromGeom));
+	PyDict_SetItemString(dict,"ElementConnectivity",PyArrayFromCopiedData(bamgmesh->ElementConnectivitySize,bamgmesh->ElementConnectivity));
+	PyDict_SetItemString(dict,"NodalConnectivity",PyArrayFromCopiedData(bamgmesh->NodalConnectivitySize,bamgmesh->NodalConnectivity));
+	PyDict_SetItemString(dict,"NodalElementConnectivity",PyArrayFromCopiedData(bamgmesh->NodalElementConnectivitySize,bamgmesh->NodalElementConnectivity));
+	PyDict_SetItemString(dict,"CrackedVertices",PyArrayFromCopiedData(bamgmesh->CrackedVerticesSize,bamgmesh->CrackedVertices));
+	PyDict_SetItemString(dict,"CrackedEdges",PyArrayFromCopiedData(bamgmesh->CrackedEdgesSize,bamgmesh->CrackedEdges));
+
+	PyTuple_SetItem(py_tuple, index, dict);
+}
+/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index,IssmDenseMat<double>* matrix){{{*/
+void WriteData(PyObject* py_tuple,int index,IssmDenseMat<double>* matrix){
+
+	int M,N;
+	double* buffer=NULL;
+	npy_intp dims[2]={0,0};
+	PyObject* array=NULL;
+
+	matrix->GetSize(&M,&N);
+	buffer=matrix->ToSerial();
+
+	dims[0]=(npy_intp)M;
+	dims[1]=(npy_intp)N;
+	array=PyArray_SimpleNewFromData(2,dims,NPY_DOUBLE,buffer);
+
+	PyTuple_SetItem(py_tuple, index, array);
+
+}/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index,IssmSeqVec<double>* vector){{{*/
+void WriteData(PyObject* py_tuple,int index,IssmSeqVec<double>* vector){
+
+	int M;
+	double* buffer=NULL;
+	npy_intp dim=10;
+	PyObject* array=NULL;
+
+	vector->GetSize(&M);
+	buffer=vector->ToMPISerial();
+
+	dim=(npy_intp)M;
+	array=PyArray_SimpleNewFromData(1,&dim,NPY_DOUBLE,buffer);
+
+	PyTuple_SetItem(py_tuple, index, array);
+}
+/*}}}*/
+/*FUNCTION WriteData(PyObject* py_tuple,int index,RiftStruct* riftstruct){{{*/
+void WriteData(PyObject* py_tuple,int index,RiftStruct* riftstruct){
+
+	int i;
+	PyObject* list=NULL;
+	PyObject* dict=NULL;
+
+	list=PyList_New((Py_ssize_t)0);
+
+	for (i=0; i<riftstruct->numrifts; i++) {
+		dict=PyDict_New();
+
+		#if _PYTHON_MAJOR_ >= 3
+		PyDict_SetItemString(dict,"numsegs"          ,PyLong_FromSsize_t((Py_ssize_t)riftstruct->riftsnumsegments[i]));
+		PyDict_SetItemString(dict,"fill"             ,PyUnicode_FromString("Ice"));
+		PyDict_SetItemString(dict,"friction"         ,PyLong_FromSsize_t((Py_ssize_t)0));
+		#else
+		PyDict_SetItemString(dict,"numsegs"          ,PyInt_FromSsize_t((Py_ssize_t)riftstruct->riftsnumsegments[i]));
+		PyDict_SetItemString(dict,"fill"             ,PyString_FromString("Ice"));
+		PyDict_SetItemString(dict,"friction"         ,PyInt_FromSsize_t((Py_ssize_t)0));
+		#endif
+
+		PyDict_SetItemString(dict,"segments"         ,PyArrayFromCopiedData(riftstruct->riftsnumsegments[i]    ,3,riftstruct->riftssegments[i]));
+		PyDict_SetItemString(dict,"pairs"            ,PyArrayFromCopiedData(riftstruct->riftsnumpairs[i]       ,2,riftstruct->riftspairs[i]));
+		PyDict_SetItemString(dict,"tips"             ,PyArrayFromCopiedData(1                                  ,2,&riftstruct->riftstips[2*i]));
+		PyDict_SetItemString(dict,"penaltypairs"     ,PyArrayFromCopiedData(riftstruct->riftsnumpenaltypairs[i],7,riftstruct->riftspenaltypairs[i]));
+		PyDict_SetItemString(dict,"fraction"         ,PyFloat_FromDouble(0.));
+		PyDict_SetItemString(dict,"fractionincrement",PyFloat_FromDouble(0.1));
+		PyDict_SetItemString(dict,"state"            ,PyArrayFromCopiedData(riftstruct->riftsnumpenaltypairs[i],1,riftstruct->state[i]));
+
+		PyList_Append(list, dict);
+	}
+
+	PyTuple_SetItem(py_tuple, index, list);
+}
+/*}}}*/
+
+/*Utils*/
+/*FUNCTION PyArrayFromCopiedData(int dims[2],double* data){{{*/
+PyObject* PyArrayFromCopiedData(int dims[2],double* data){
+
+	double* pydata;
+	npy_intp pydims[2]={0,0};
+
+	/*  note that PyArray_SimpleNewFromData does not copy the data, so that when the original
+		 object (e.g. bamggeom,bamgmesh) is deleted, the data is gone.  */
+
+	pydims[0]=(npy_intp)dims[0];
+	pydims[1]=(npy_intp)dims[1];
+	pydata=xNew<IssmDouble>(dims[0]*dims[1]);
+	memcpy(pydata,data,dims[0]*dims[1]*sizeof(double));
+	return PyArray_SimpleNewFromData(2,pydims,NPY_DOUBLE,pydata);
+}
+/*}}}*/
+/*FUNCTION PyArrayFromCopiedData(int dimi,int dimj,double* data){{{*/
+PyObject* PyArrayFromCopiedData(int dimi,int dimj,double* data){
+
+	double* pydata;
+	npy_intp pydims[2]={0,0};
+
+	/*  note that PyArray_SimpleNewFromData does not copy the data, so that when the original
+		 object (e.g. bamggeom,bamgmesh) is deleted, the data is gone.  */
+
+	pydims[0]=(npy_intp)dimi;
+	pydims[1]=(npy_intp)dimj;
+	pydata=xNew<IssmDouble>(dimi*dimj);
+	memcpy(pydata,data,dimi*dimj*sizeof(double));
+	return PyArray_SimpleNewFromData(2,pydims,NPY_DOUBLE,pydata);
+}
+/*}}}*/
+/*FUNCTION PyArrayFromCopiedData(int dimi,int dimj,int* data){{{*/
+PyObject* PyArrayFromCopiedData(int dimi,int dimj,int* data){
+
+	long* pydata;
+	npy_intp pydims[2]={0,0};
+
+	/*  note that PyArray_SimpleNewFromData does not copy the data, so that when the original
+		 object (e.g. bamggeom,bamgmesh) is deleted, the data is gone.  */
+
+	pydims[0]=(npy_intp)dimi;
+	pydims[1]=(npy_intp)dimj;
+	pydata=xNew<long>(dimi*dimj);
+	for(int i=0;i<dimi*dimj;i++) pydata[i]=(long)data[i];
+	return PyArray_SimpleNewFromData(2,pydims,NPY_INT64,pydata);
+}
+/*}}}*/
+/*FUNCTION PyArrayFromCopiedData(int dimi,int dimj,bool* data){{{*/
+PyObject* PyArrayFromCopiedData(int dimi,int dimj,bool* data){
+
+	bool* pydata;
+	npy_intp pydims[2]={0,0};
+
+	/*  note that PyArray_SimpleNewFromData does not copy the data, so that when the original
+		 object (e.g. bamggeom,bamgmesh) is deleted, the data is gone.  */
+
+	pydims[0]=(npy_intp)dimi;
+	pydims[1]=(npy_intp)dimj;
+	pydata=xNew<bool>(dimi*dimj);
+	memcpy(pydata,data,dimi*dimj*sizeof(bool));
+	return PyArray_SimpleNewFromData(2,pydims,NPY_BOOL,pydata);
+}
+/*}}}*/
Index: /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/io/pythonio.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/io/pythonio.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/src/wrappers/python/io/pythonio.h	(revision 27955)
@@ -0,0 +1,67 @@
+/*\file pythonio.h
+ *\brief: I/O for ISSM in python mode
+ */
+
+#ifndef _PYTHON_IO_H_
+#define _PYTHON_IO_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif 
+
+#include "../include/pythonincludes.h"
+#include "../../c/bamg/bamgobjects.h"
+#include "../../c/classes/classes.h"
+#include "../../c/shared/shared.h"
+
+void WriteData(PyObject* py_tuple,int index, double* matrix, int M,int N);
+void WriteData(PyObject* py_tuple,int index, int* matrix, int M,int N);
+void WriteData(PyObject* py_tuple,int index, bool* matrix, int M,int N);
+void WriteData(PyObject* py_tuple,int index, int integer);
+void WriteData(PyObject* py_tuple,int index, double* vector, int M);
+void WriteData(PyObject* py_tuple,int index, short* vector, int M);
+void WriteData(PyObject* py_tuple,int index, int* vector, int M);
+void WriteData(PyObject* py_tuple,int index, char* string);
+void WriteData(PyObject* py_tuple,int index);
+void WriteData(PyObject* py_tuple,int index, IssmDenseMat<double>* matrix);
+void WriteData(PyObject* py_tuple,int index, IssmSeqVec<double>* vector);
+void WriteData(PyObject* py_tuple,int index, BamgGeom* bamggeom);
+void WriteData(PyObject* py_tuple,int index, BamgMesh* bamgmesh);
+void WriteData(PyObject* py_tuple,int index, RiftStruct* riftstruct);
+
+void FetchData(double** pmatrix,int* pM,int *pN,PyObject* py_array);
+void FetchData(int** pmatrix,int* pM,int *pN,PyObject* py_matrix);
+void FetchData(bool** pmatrix,int* pM,int *pN,PyObject* py_matrix);
+void FetchData(double** pvector,int* pM,PyObject* py_ref);
+void FetchData(float** pvector,int* pM,PyObject* dataref);
+void FetchData(int** pvector,int* pM,PyObject* py_ref);
+void FetchData(bool** pvector,int* pM,PyObject* py_ref);
+void FetchData(char** pstring,PyObject* py_unicode);
+void FetchData(double* pscalar,PyObject* py_float);
+void FetchData(short* pscalar,PyObject* py_float);
+void FetchData(int* pscalar,PyObject* py_long);
+void FetchData(bool* pbool,PyObject* py_boolean);
+void FetchData(BamgGeom** bamggeom,PyObject* py_dict);
+void FetchData(BamgMesh** bamgmesh,PyObject* py_dict);
+void FetchData(BamgOpts** bamgopts,PyObject* py_dict);
+void FetchData(Options** poptions,int istart, int nrhs,PyObject* py_tuple);
+void FetchData(Contours** pcontours,PyObject* py_list);
+void FetchChacoData(int* pnvtxs,int** padjacency,int** pstart,float** pewgts,PyObject* A_IN,PyObject* EWGTS_IN);
+
+void pyGetJc(double* a, int nvtxs, int* Jc);
+void pyGetIr(double* a, int nvtxs, int nzmax, int* Ir);
+
+int CheckNumPythonArguments(PyObject* inputs,int NRHS, void (*function)( void ));
+
+/*Utils*/
+PyObject* PyArrayFromCopiedData(int dims[2],double* data);
+PyObject* PyArrayFromCopiedData(int dimi,int dimj,double* data);
+PyObject* PyArrayFromCopiedData(int dimi,int dimj,int* data);
+PyObject* PyArrayFromCopiedData(int dimi,int dimj,bool* data);
+
+/*Print*/
+void ApiPrintf(const char* string);
+
+#endif	/* _IO_H_ */
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/AIS_delH_trend.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/AIS_delH_trend.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/AIS_delH_trend.txt	(revision 27955)
@@ -0,0 +1,130321 @@
+0	-90	-0.44719
+1	-90	-0.44719
+2	-90	-0.44719
+3	-90	-0.44719
+4	-90	-0.44719
+5	-90	-0.44719
+6	-90	-0.44719
+7	-90	-0.44719
+8	-90	-0.44719
+9	-90	-0.44719
+10	-90	-0.44719
+11	-90	-0.44719
+12	-90	-0.44719
+13	-90	-0.44719
+14	-90	-0.44719
+15	-90	-0.44719
+16	-90	-0.44719
+17	-90	-0.44719
+18	-90	-0.44719
+19	-90	-0.44719
+20	-90	-0.44719
+21	-90	-0.44719
+22	-90	-0.44719
+23	-90	-0.44719
+24	-90	-0.44719
+25	-90	-0.44719
+26	-90	-0.44719
+27	-90	-0.44719
+28	-90	-0.44719
+29	-90	-0.44719
+30	-90	-0.44719
+31	-90	-0.44719
+32	-90	-0.44719
+33	-90	-0.44719
+34	-90	-0.44719
+35	-90	-0.44719
+36	-90	-0.44719
+37	-90	-0.44719
+38	-90	-0.44719
+39	-90	-0.44719
+40	-90	-0.44719
+41	-90	-0.44719
+42	-90	-0.44719
+43	-90	-0.44719
+44	-90	-0.44719
+45	-90	-0.44719
+46	-90	-0.44719
+47	-90	-0.44719
+48	-90	-0.44719
+49	-90	-0.44719
+50	-90	-0.44719
+51	-90	-0.44719
+52	-90	-0.44719
+53	-90	-0.44719
+54	-90	-0.44719
+55	-90	-0.44719
+56	-90	-0.44719
+57	-90	-0.44719
+58	-90	-0.44719
+59	-90	-0.44719
+60	-90	-0.44719
+61	-90	-0.44719
+62	-90	-0.44719
+63	-90	-0.44719
+64	-90	-0.44719
+65	-90	-0.44719
+66	-90	-0.44719
+67	-90	-0.44719
+68	-90	-0.44719
+69	-90	-0.44719
+70	-90	-0.44719
+71	-90	-0.44719
+72	-90	-0.44719
+73	-90	-0.44719
+74	-90	-0.44719
+75	-90	-0.44719
+76	-90	-0.44719
+77	-90	-0.44719
+78	-90	-0.44719
+79	-90	-0.44719
+80	-90	-0.44719
+81	-90	-0.44719
+82	-90	-0.44719
+83	-90	-0.44719
+84	-90	-0.44719
+85	-90	-0.44719
+86	-90	-0.44719
+87	-90	-0.44719
+88	-90	-0.44719
+89	-90	-0.44719
+90	-90	-0.44719
+91	-90	-0.44719
+92	-90	-0.44719
+93	-90	-0.44719
+94	-90	-0.44719
+95	-90	-0.44719
+96	-90	-0.44719
+97	-90	-0.44719
+98	-90	-0.44719
+99	-90	-0.44719
+100	-90	-0.44719
+101	-90	-0.44719
+102	-90	-0.44719
+103	-90	-0.44719
+104	-90	-0.44719
+105	-90	-0.44719
+106	-90	-0.44719
+107	-90	-0.44719
+108	-90	-0.44719
+109	-90	-0.44719
+110	-90	-0.44719
+111	-90	-0.44719
+112	-90	-0.44719
+113	-90	-0.44719
+114	-90	-0.44719
+115	-90	-0.44719
+116	-90	-0.44719
+117	-90	-0.44719
+118	-90	-0.44719
+119	-90	-0.44719
+120	-90	-0.44719
+121	-90	-0.44719
+122	-90	-0.44719
+123	-90	-0.44719
+124	-90	-0.44719
+125	-90	-0.44719
+126	-90	-0.44719
+127	-90	-0.44719
+128	-90	-0.44719
+129	-90	-0.44719
+130	-90	-0.44719
+131	-90	-0.44719
+132	-90	-0.44719
+133	-90	-0.44719
+134	-90	-0.44719
+135	-90	-0.44719
+136	-90	-0.44719
+137	-90	-0.44719
+138	-90	-0.44719
+139	-90	-0.44719
+140	-90	-0.44719
+141	-90	-0.44719
+142	-90	-0.44719
+143	-90	-0.44719
+144	-90	-0.44719
+145	-90	-0.44719
+146	-90	-0.44719
+147	-90	-0.44719
+148	-90	-0.44719
+149	-90	-0.44719
+150	-90	-0.44719
+151	-90	-0.44719
+152	-90	-0.44719
+153	-90	-0.44719
+154	-90	-0.44719
+155	-90	-0.44719
+156	-90	-0.44719
+157	-90	-0.44719
+158	-90	-0.44719
+159	-90	-0.44719
+160	-90	-0.44719
+161	-90	-0.44719
+162	-90	-0.44719
+163	-90	-0.44719
+164	-90	-0.44719
+165	-90	-0.44719
+166	-90	-0.44719
+167	-90	-0.44719
+168	-90	-0.44719
+169	-90	-0.44719
+170	-90	-0.44719
+171	-90	-0.44719
+172	-90	-0.44719
+173	-90	-0.44719
+174	-90	-0.44719
+175	-90	-0.44719
+176	-90	-0.44719
+177	-90	-0.44719
+178	-90	-0.44719
+179	-90	-0.44719
+180	-90	-0.44719
+181	-90	-0.44719
+182	-90	-0.44719
+183	-90	-0.44719
+184	-90	-0.44719
+185	-90	-0.44719
+186	-90	-0.44719
+187	-90	-0.44719
+188	-90	-0.44719
+189	-90	-0.44719
+190	-90	-0.44719
+191	-90	-0.44719
+192	-90	-0.44719
+193	-90	-0.44719
+194	-90	-0.44719
+195	-90	-0.44719
+196	-90	-0.44719
+197	-90	-0.44719
+198	-90	-0.44719
+199	-90	-0.44719
+200	-90	-0.44719
+201	-90	-0.44719
+202	-90	-0.44719
+203	-90	-0.44719
+204	-90	-0.44719
+205	-90	-0.44719
+206	-90	-0.44719
+207	-90	-0.44719
+208	-90	-0.44719
+209	-90	-0.44719
+210	-90	-0.44719
+211	-90	-0.44719
+212	-90	-0.44719
+213	-90	-0.44719
+214	-90	-0.44719
+215	-90	-0.44719
+216	-90	-0.44719
+217	-90	-0.44719
+218	-90	-0.44719
+219	-90	-0.44719
+220	-90	-0.44719
+221	-90	-0.44719
+222	-90	-0.44719
+223	-90	-0.44719
+224	-90	-0.44719
+225	-90	-0.44719
+226	-90	-0.44719
+227	-90	-0.44719
+228	-90	-0.44719
+229	-90	-0.44719
+230	-90	-0.44719
+231	-90	-0.44719
+232	-90	-0.44719
+233	-90	-0.44719
+234	-90	-0.44719
+235	-90	-0.44719
+236	-90	-0.44719
+237	-90	-0.44719
+238	-90	-0.44719
+239	-90	-0.44719
+240	-90	-0.44719
+241	-90	-0.44719
+242	-90	-0.44719
+243	-90	-0.44719
+244	-90	-0.44719
+245	-90	-0.44719
+246	-90	-0.44719
+247	-90	-0.44719
+248	-90	-0.44719
+249	-90	-0.44719
+250	-90	-0.44719
+251	-90	-0.44719
+252	-90	-0.44719
+253	-90	-0.44719
+254	-90	-0.44719
+255	-90	-0.44719
+256	-90	-0.44719
+257	-90	-0.44719
+258	-90	-0.44719
+259	-90	-0.44719
+260	-90	-0.44719
+261	-90	-0.44719
+262	-90	-0.44719
+263	-90	-0.44719
+264	-90	-0.44719
+265	-90	-0.44719
+266	-90	-0.44719
+267	-90	-0.44719
+268	-90	-0.44719
+269	-90	-0.44719
+270	-90	-0.44719
+271	-90	-0.44719
+272	-90	-0.44719
+273	-90	-0.44719
+274	-90	-0.44719
+275	-90	-0.44719
+276	-90	-0.44719
+277	-90	-0.44719
+278	-90	-0.44719
+279	-90	-0.44719
+280	-90	-0.44719
+281	-90	-0.44719
+282	-90	-0.44719
+283	-90	-0.44719
+284	-90	-0.44719
+285	-90	-0.44719
+286	-90	-0.44719
+287	-90	-0.44719
+288	-90	-0.44719
+289	-90	-0.44719
+290	-90	-0.44719
+291	-90	-0.44719
+292	-90	-0.44719
+293	-90	-0.44719
+294	-90	-0.44719
+295	-90	-0.44719
+296	-90	-0.44719
+297	-90	-0.44719
+298	-90	-0.44719
+299	-90	-0.44719
+300	-90	-0.44719
+301	-90	-0.44719
+302	-90	-0.44719
+303	-90	-0.44719
+304	-90	-0.44719
+305	-90	-0.44719
+306	-90	-0.44719
+307	-90	-0.44719
+308	-90	-0.44719
+309	-90	-0.44719
+310	-90	-0.44719
+311	-90	-0.44719
+312	-90	-0.44719
+313	-90	-0.44719
+314	-90	-0.44719
+315	-90	-0.44719
+316	-90	-0.44719
+317	-90	-0.44719
+318	-90	-0.44719
+319	-90	-0.44719
+320	-90	-0.44719
+321	-90	-0.44719
+322	-90	-0.44719
+323	-90	-0.44719
+324	-90	-0.44719
+325	-90	-0.44719
+326	-90	-0.44719
+327	-90	-0.44719
+328	-90	-0.44719
+329	-90	-0.44719
+330	-90	-0.44719
+331	-90	-0.44719
+332	-90	-0.44719
+333	-90	-0.44719
+334	-90	-0.44719
+335	-90	-0.44719
+336	-90	-0.44719
+337	-90	-0.44719
+338	-90	-0.44719
+339	-90	-0.44719
+340	-90	-0.44719
+341	-90	-0.44719
+342	-90	-0.44719
+343	-90	-0.44719
+344	-90	-0.44719
+345	-90	-0.44719
+346	-90	-0.44719
+347	-90	-0.44719
+348	-90	-0.44719
+349	-90	-0.44719
+350	-90	-0.44719
+351	-90	-0.44719
+352	-90	-0.44719
+353	-90	-0.44719
+354	-90	-0.44719
+355	-90	-0.44719
+356	-90	-0.44719
+357	-90	-0.44719
+358	-90	-0.44719
+359	-90	-0.44719
+360	-90	-0.44719
+0	-89.5	-0.44719
+1	-89.5	-0.44719
+2	-89.5	-0.44719
+3	-89.5	-0.44719
+4	-89.5	-0.44719
+5	-89.5	-0.44719
+6	-89.5	-0.44719
+7	-89.5	-0.44719
+8	-89.5	-0.44719
+9	-89.5	-0.44719
+10	-89.5	-0.44719
+11	-89.5	-0.44719
+12	-89.5	-0.44719
+13	-89.5	-0.44719
+14	-89.5	-0.44719
+15	-89.5	-0.44719
+16	-89.5	-0.44719
+17	-89.5	-0.44719
+18	-89.5	-0.44719
+19	-89.5	-0.44719
+20	-89.5	-0.44719
+21	-89.5	-0.44719
+22	-89.5	-0.44719
+23	-89.5	-0.44719
+24	-89.5	-0.44719
+25	-89.5	-0.44719
+26	-89.5	-0.44719
+27	-89.5	-0.44719
+28	-89.5	-0.44719
+29	-89.5	-0.44719
+30	-89.5	-0.44719
+31	-89.5	-0.44719
+32	-89.5	-0.44719
+33	-89.5	-0.44719
+34	-89.5	-0.44719
+35	-89.5	-0.44719
+36	-89.5	-0.44719
+37	-89.5	-0.44719
+38	-89.5	-0.44719
+39	-89.5	-0.44719
+40	-89.5	-0.44719
+41	-89.5	-0.44719
+42	-89.5	-0.44719
+43	-89.5	-0.44719
+44	-89.5	-0.44719
+45	-89.5	-0.44719
+46	-89.5	-0.44719
+47	-89.5	-0.44719
+48	-89.5	-0.44719
+49	-89.5	-0.44719
+50	-89.5	-0.44719
+51	-89.5	-0.44719
+52	-89.5	-0.44719
+53	-89.5	-0.44719
+54	-89.5	-0.44719
+55	-89.5	-0.44719
+56	-89.5	-0.44719
+57	-89.5	-0.44719
+58	-89.5	-0.44719
+59	-89.5	-0.44719
+60	-89.5	-0.44719
+61	-89.5	-0.44719
+62	-89.5	-0.44719
+63	-89.5	-0.44719
+64	-89.5	-0.44719
+65	-89.5	-0.44719
+66	-89.5	-0.44719
+67	-89.5	-0.44719
+68	-89.5	-0.44719
+69	-89.5	-0.44719
+70	-89.5	-0.44719
+71	-89.5	-0.44719
+72	-89.5	-0.44719
+73	-89.5	-0.44719
+74	-89.5	-0.44719
+75	-89.5	-0.44719
+76	-89.5	-0.44719
+77	-89.5	-0.44719
+78	-89.5	-0.44719
+79	-89.5	-0.44719
+80	-89.5	-0.44719
+81	-89.5	-0.44719
+82	-89.5	-0.44719
+83	-89.5	-0.44719
+84	-89.5	-0.44719
+85	-89.5	-0.44719
+86	-89.5	-0.44719
+87	-89.5	-0.44719
+88	-89.5	-0.44719
+89	-89.5	-0.44719
+90	-89.5	-0.44719
+91	-89.5	-0.44719
+92	-89.5	-0.44719
+93	-89.5	-0.44719
+94	-89.5	-0.44719
+95	-89.5	-0.44719
+96	-89.5	-0.44719
+97	-89.5	-0.44719
+98	-89.5	-0.44719
+99	-89.5	-0.44719
+100	-89.5	-0.44719
+101	-89.5	-0.44719
+102	-89.5	-0.44719
+103	-89.5	-0.44719
+104	-89.5	-0.44719
+105	-89.5	-0.44719
+106	-89.5	-0.44719
+107	-89.5	-0.44719
+108	-89.5	-0.44719
+109	-89.5	-0.44719
+110	-89.5	-0.44719
+111	-89.5	-0.44719
+112	-89.5	-0.44719
+113	-89.5	-0.44719
+114	-89.5	-0.44719
+115	-89.5	-0.44719
+116	-89.5	-0.44719
+117	-89.5	-0.44719
+118	-89.5	-0.44719
+119	-89.5	-0.44719
+120	-89.5	-0.44719
+121	-89.5	-0.44719
+122	-89.5	-0.44719
+123	-89.5	-0.44719
+124	-89.5	-0.44719
+125	-89.5	-0.44719
+126	-89.5	-0.44719
+127	-89.5	-0.44719
+128	-89.5	-0.44719
+129	-89.5	-0.44719
+130	-89.5	-0.44719
+131	-89.5	-0.44719
+132	-89.5	-0.44719
+133	-89.5	-0.44719
+134	-89.5	-0.44719
+135	-89.5	-0.44719
+136	-89.5	-0.44719
+137	-89.5	-0.44719
+138	-89.5	-0.44719
+139	-89.5	-0.44719
+140	-89.5	-0.44719
+141	-89.5	-0.44719
+142	-89.5	-0.44719
+143	-89.5	-0.44719
+144	-89.5	-0.44719
+145	-89.5	-0.44719
+146	-89.5	-0.44719
+147	-89.5	-0.44719
+148	-89.5	-0.44719
+149	-89.5	-0.44719
+150	-89.5	-0.44719
+151	-89.5	-0.44719
+152	-89.5	-0.44719
+153	-89.5	-0.44719
+154	-89.5	-0.44719
+155	-89.5	-0.44719
+156	-89.5	-0.44719
+157	-89.5	-0.44719
+158	-89.5	-0.44719
+159	-89.5	-0.44719
+160	-89.5	-0.44719
+161	-89.5	-0.44719
+162	-89.5	-0.44719
+163	-89.5	-0.44719
+164	-89.5	-0.44719
+165	-89.5	-0.44719
+166	-89.5	-0.44719
+167	-89.5	-0.44719
+168	-89.5	-0.44719
+169	-89.5	-0.44719
+170	-89.5	-0.44719
+171	-89.5	-0.44719
+172	-89.5	-0.44719
+173	-89.5	-0.44719
+174	-89.5	-0.44719
+175	-89.5	-0.44719
+176	-89.5	-0.44719
+177	-89.5	-0.44719
+178	-89.5	-0.44719
+179	-89.5	-0.44719
+180	-89.5	-0.44719
+181	-89.5	-0.44719
+182	-89.5	-0.44719
+183	-89.5	-0.44719
+184	-89.5	-0.44719
+185	-89.5	-0.44719
+186	-89.5	-0.44719
+187	-89.5	-0.44719
+188	-89.5	-0.44719
+189	-89.5	-0.44719
+190	-89.5	-0.44719
+191	-89.5	-0.44719
+192	-89.5	-0.44719
+193	-89.5	-0.44719
+194	-89.5	-0.44719
+195	-89.5	-0.44719
+196	-89.5	-0.44719
+197	-89.5	-0.44719
+198	-89.5	-0.44719
+199	-89.5	-0.44719
+200	-89.5	-0.44719
+201	-89.5	-0.44719
+202	-89.5	-0.44719
+203	-89.5	-0.44719
+204	-89.5	-0.44719
+205	-89.5	-0.44719
+206	-89.5	-0.44719
+207	-89.5	-0.44719
+208	-89.5	-0.44719
+209	-89.5	-0.44719
+210	-89.5	-0.44719
+211	-89.5	-0.44719
+212	-89.5	-0.44719
+213	-89.5	-0.44719
+214	-89.5	-0.44719
+215	-89.5	-0.44719
+216	-89.5	-0.44719
+217	-89.5	-0.44719
+218	-89.5	-0.44719
+219	-89.5	-0.44719
+220	-89.5	-0.44719
+221	-89.5	-0.44719
+222	-89.5	-0.44719
+223	-89.5	-0.44719
+224	-89.5	-0.44719
+225	-89.5	-0.44719
+226	-89.5	-0.44719
+227	-89.5	-0.44719
+228	-89.5	-0.44719
+229	-89.5	-0.44719
+230	-89.5	-0.44719
+231	-89.5	-0.44719
+232	-89.5	-0.44719
+233	-89.5	-0.44719
+234	-89.5	-0.44719
+235	-89.5	-0.44719
+236	-89.5	-0.44719
+237	-89.5	-0.44719
+238	-89.5	-0.44719
+239	-89.5	-0.44719
+240	-89.5	-0.44719
+241	-89.5	-0.44719
+242	-89.5	-0.44719
+243	-89.5	-0.44719
+244	-89.5	-0.44719
+245	-89.5	-0.44719
+246	-89.5	-0.44719
+247	-89.5	-0.44719
+248	-89.5	-0.44719
+249	-89.5	-0.44719
+250	-89.5	-0.44719
+251	-89.5	-0.44719
+252	-89.5	-0.44719
+253	-89.5	-0.44719
+254	-89.5	-0.44719
+255	-89.5	-0.44719
+256	-89.5	-0.44719
+257	-89.5	-0.44719
+258	-89.5	-0.44719
+259	-89.5	-0.44719
+260	-89.5	-0.44719
+261	-89.5	-0.44719
+262	-89.5	-0.44719
+263	-89.5	-0.44719
+264	-89.5	-0.44719
+265	-89.5	-0.44719
+266	-89.5	-0.44719
+267	-89.5	-0.44719
+268	-89.5	-0.44719
+269	-89.5	-0.44719
+270	-89.5	-0.44719
+271	-89.5	-0.44719
+272	-89.5	-0.44719
+273	-89.5	-0.44719
+274	-89.5	-0.44719
+275	-89.5	-0.44719
+276	-89.5	-0.44719
+277	-89.5	-0.44719
+278	-89.5	-0.44719
+279	-89.5	-0.44719
+280	-89.5	-0.44719
+281	-89.5	-0.44719
+282	-89.5	-0.44719
+283	-89.5	-0.44719
+284	-89.5	-0.44719
+285	-89.5	-0.44719
+286	-89.5	-0.44719
+287	-89.5	-0.44719
+288	-89.5	-0.44719
+289	-89.5	-0.44719
+290	-89.5	-0.44719
+291	-89.5	-0.44719
+292	-89.5	-0.44719
+293	-89.5	-0.44719
+294	-89.5	-0.44719
+295	-89.5	-0.44719
+296	-89.5	-0.44719
+297	-89.5	-0.44719
+298	-89.5	-0.44719
+299	-89.5	-0.44719
+300	-89.5	-0.44719
+301	-89.5	-0.44719
+302	-89.5	-0.44719
+303	-89.5	-0.44719
+304	-89.5	-0.44719
+305	-89.5	-0.44719
+306	-89.5	-0.44719
+307	-89.5	-0.44719
+308	-89.5	-0.44719
+309	-89.5	-0.44719
+310	-89.5	-0.44719
+311	-89.5	-0.44719
+312	-89.5	-0.44719
+313	-89.5	-0.44719
+314	-89.5	-0.44719
+315	-89.5	-0.44719
+316	-89.5	-0.44719
+317	-89.5	-0.44719
+318	-89.5	-0.44719
+319	-89.5	-0.44719
+320	-89.5	-0.44719
+321	-89.5	-0.44719
+322	-89.5	-0.44719
+323	-89.5	-0.44719
+324	-89.5	-0.44719
+325	-89.5	-0.44719
+326	-89.5	-0.44719
+327	-89.5	-0.44719
+328	-89.5	-0.44719
+329	-89.5	-0.44719
+330	-89.5	-0.44719
+331	-89.5	-0.44719
+332	-89.5	-0.44719
+333	-89.5	-0.44719
+334	-89.5	-0.44719
+335	-89.5	-0.44719
+336	-89.5	-0.44719
+337	-89.5	-0.44719
+338	-89.5	-0.44719
+339	-89.5	-0.44719
+340	-89.5	-0.44719
+341	-89.5	-0.44719
+342	-89.5	-0.44719
+343	-89.5	-0.44719
+344	-89.5	-0.44719
+345	-89.5	-0.44719
+346	-89.5	-0.44719
+347	-89.5	-0.44719
+348	-89.5	-0.44719
+349	-89.5	-0.44719
+350	-89.5	-0.44719
+351	-89.5	-0.44719
+352	-89.5	-0.44719
+353	-89.5	-0.44719
+354	-89.5	-0.44719
+355	-89.5	-0.44719
+356	-89.5	-0.44719
+357	-89.5	-0.44719
+358	-89.5	-0.44719
+359	-89.5	-0.44719
+360	-89.5	-0.44719
+0	-89	-0.44719
+1	-89	-0.44719
+2	-89	-0.44719
+3	-89	-0.44719
+4	-89	-0.44719
+5	-89	-0.44719
+6	-89	-0.44719
+7	-89	-0.44719
+8	-89	-0.44719
+9	-89	-0.44719
+10	-89	-0.44719
+11	-89	-0.44719
+12	-89	-0.44719
+13	-89	-0.44719
+14	-89	-0.44719
+15	-89	-0.44719
+16	-89	-0.44719
+17	-89	-0.44719
+18	-89	-0.44719
+19	-89	-0.44719
+20	-89	-0.44719
+21	-89	-0.44719
+22	-89	-0.44719
+23	-89	-0.44719
+24	-89	-0.44719
+25	-89	-0.44719
+26	-89	-0.44719
+27	-89	-0.44719
+28	-89	-0.44719
+29	-89	-0.44719
+30	-89	-0.44719
+31	-89	-0.44719
+32	-89	-0.44719
+33	-89	-0.44719
+34	-89	-0.44719
+35	-89	-0.44719
+36	-89	-0.44719
+37	-89	-0.44719
+38	-89	-0.44719
+39	-89	-0.44719
+40	-89	-0.44719
+41	-89	-0.44719
+42	-89	-0.44719
+43	-89	-0.44719
+44	-89	-0.44719
+45	-89	-0.44719
+46	-89	-0.44719
+47	-89	-0.44719
+48	-89	-0.44719
+49	-89	-0.44719
+50	-89	-0.44719
+51	-89	-0.44719
+52	-89	-0.44719
+53	-89	-0.44719
+54	-89	-0.44719
+55	-89	-0.44719
+56	-89	-0.44719
+57	-89	-0.44719
+58	-89	-0.44719
+59	-89	-0.44719
+60	-89	-0.44719
+61	-89	-0.44719
+62	-89	-0.44719
+63	-89	-0.44719
+64	-89	-0.44719
+65	-89	-0.44719
+66	-89	-0.44719
+67	-89	-0.44719
+68	-89	-0.44719
+69	-89	-0.44719
+70	-89	-0.44719
+71	-89	-0.44719
+72	-89	-0.44719
+73	-89	-0.44719
+74	-89	-0.44719
+75	-89	-0.44719
+76	-89	-0.44719
+77	-89	-0.44719
+78	-89	-0.44719
+79	-89	-0.44719
+80	-89	-0.44719
+81	-89	-0.44719
+82	-89	-0.44719
+83	-89	-0.44719
+84	-89	-0.44719
+85	-89	-0.44719
+86	-89	-0.44719
+87	-89	-0.44719
+88	-89	-0.44719
+89	-89	-0.44719
+90	-89	-0.44719
+91	-89	-0.44719
+92	-89	-0.44719
+93	-89	-0.44719
+94	-89	-0.44719
+95	-89	-0.44719
+96	-89	-0.44719
+97	-89	-0.44719
+98	-89	-0.44719
+99	-89	-0.44719
+100	-89	-0.44719
+101	-89	-0.44719
+102	-89	-0.44719
+103	-89	-0.44719
+104	-89	-0.44719
+105	-89	-0.44719
+106	-89	-0.44719
+107	-89	-0.44719
+108	-89	-0.44719
+109	-89	-0.44719
+110	-89	-0.44719
+111	-89	-0.44719
+112	-89	-0.44719
+113	-89	-0.44719
+114	-89	-0.44719
+115	-89	-0.44719
+116	-89	-0.44719
+117	-89	-0.44719
+118	-89	-0.44719
+119	-89	-0.44719
+120	-89	-0.44719
+121	-89	-0.44719
+122	-89	-0.44719
+123	-89	-0.44719
+124	-89	-0.44719
+125	-89	-0.44719
+126	-89	-0.44719
+127	-89	-0.44719
+128	-89	-0.44719
+129	-89	-0.44719
+130	-89	-0.44719
+131	-89	-0.44719
+132	-89	-0.44719
+133	-89	-0.44719
+134	-89	-0.44719
+135	-89	-0.44719
+136	-89	-0.44719
+137	-89	-0.44719
+138	-89	-0.44719
+139	-89	-0.44719
+140	-89	-0.44719
+141	-89	-0.44719
+142	-89	-0.44719
+143	-89	-0.44719
+144	-89	-0.44719
+145	-89	-0.44719
+146	-89	-0.44719
+147	-89	-0.44719
+148	-89	-0.44719
+149	-89	-0.44719
+150	-89	-0.44719
+151	-89	-0.44719
+152	-89	-0.44719
+153	-89	-0.44719
+154	-89	-0.44719
+155	-89	-0.44719
+156	-89	-0.44719
+157	-89	-0.44719
+158	-89	-0.44719
+159	-89	-0.44719
+160	-89	-0.44719
+161	-89	-0.44719
+162	-89	-0.44719
+163	-89	-0.44719
+164	-89	-0.44719
+165	-89	-0.44719
+166	-89	-0.44719
+167	-89	-0.44719
+168	-89	-0.44719
+169	-89	-0.44719
+170	-89	-0.44719
+171	-89	-0.44719
+172	-89	-0.44719
+173	-89	-0.44719
+174	-89	-0.44719
+175	-89	-0.44719
+176	-89	-0.44719
+177	-89	-0.44719
+178	-89	-0.44719
+179	-89	-0.44719
+180	-89	-0.44719
+181	-89	-0.44719
+182	-89	-0.44719
+183	-89	-0.44719
+184	-89	-0.44719
+185	-89	-0.44719
+186	-89	-0.44719
+187	-89	-0.44719
+188	-89	-0.44719
+189	-89	-0.44719
+190	-89	-0.44719
+191	-89	-0.44719
+192	-89	-0.44719
+193	-89	-0.44719
+194	-89	-0.44719
+195	-89	-0.44719
+196	-89	-0.44719
+197	-89	-0.44719
+198	-89	-0.44719
+199	-89	-0.44719
+200	-89	-0.44719
+201	-89	-0.44719
+202	-89	-0.44719
+203	-89	-0.44719
+204	-89	-0.44719
+205	-89	-0.44719
+206	-89	-0.44719
+207	-89	-0.44719
+208	-89	-0.44719
+209	-89	-0.44719
+210	-89	-0.44719
+211	-89	-0.44719
+212	-89	-0.44719
+213	-89	-0.44719
+214	-89	-0.44719
+215	-89	-0.44719
+216	-89	-0.44719
+217	-89	-0.44719
+218	-89	-0.44719
+219	-89	-0.44719
+220	-89	-0.44719
+221	-89	-0.44719
+222	-89	-0.44719
+223	-89	-0.44719
+224	-89	-0.44719
+225	-89	-0.44719
+226	-89	-0.44719
+227	-89	-0.44719
+228	-89	-0.44719
+229	-89	-0.44719
+230	-89	-0.44719
+231	-89	-0.44719
+232	-89	-0.44719
+233	-89	-0.44719
+234	-89	-0.44719
+235	-89	-0.44719
+236	-89	-0.44719
+237	-89	-0.44719
+238	-89	-0.44719
+239	-89	-0.44719
+240	-89	-0.44719
+241	-89	-0.44719
+242	-89	-0.44719
+243	-89	-0.44719
+244	-89	-0.44719
+245	-89	-0.44719
+246	-89	-0.44719
+247	-89	-0.44719
+248	-89	-0.44719
+249	-89	-0.44719
+250	-89	-0.44719
+251	-89	-0.44719
+252	-89	-0.44719
+253	-89	-0.44719
+254	-89	-0.44719
+255	-89	-0.44719
+256	-89	-0.44719
+257	-89	-0.44719
+258	-89	-0.44719
+259	-89	-0.44719
+260	-89	-0.44719
+261	-89	-0.44719
+262	-89	-0.44719
+263	-89	-0.44719
+264	-89	-0.44719
+265	-89	-0.44719
+266	-89	-0.44719
+267	-89	-0.44719
+268	-89	-0.44719
+269	-89	-0.44719
+270	-89	-0.44719
+271	-89	-0.44719
+272	-89	-0.44719
+273	-89	-0.44719
+274	-89	-0.44719
+275	-89	-0.44719
+276	-89	-0.44719
+277	-89	-0.44719
+278	-89	-0.44719
+279	-89	-0.44719
+280	-89	-0.44719
+281	-89	-0.44719
+282	-89	-0.44719
+283	-89	-0.44719
+284	-89	-0.44719
+285	-89	-0.44719
+286	-89	-0.44719
+287	-89	-0.44719
+288	-89	-0.44719
+289	-89	-0.44719
+290	-89	-0.44719
+291	-89	-0.44719
+292	-89	-0.44719
+293	-89	-0.44719
+294	-89	-0.44719
+295	-89	-0.44719
+296	-89	-0.44719
+297	-89	-0.44719
+298	-89	-0.44719
+299	-89	-0.44719
+300	-89	-0.44719
+301	-89	-0.44719
+302	-89	-0.44719
+303	-89	-0.44719
+304	-89	-0.44719
+305	-89	-0.44719
+306	-89	-0.44719
+307	-89	-0.44719
+308	-89	-0.44719
+309	-89	-0.44719
+310	-89	-0.44719
+311	-89	-0.44719
+312	-89	-0.44719
+313	-89	-0.44719
+314	-89	-0.44719
+315	-89	-0.44719
+316	-89	-0.44719
+317	-89	-0.44719
+318	-89	-0.44719
+319	-89	-0.44719
+320	-89	-0.44719
+321	-89	-0.44719
+322	-89	-0.44719
+323	-89	-0.44719
+324	-89	-0.44719
+325	-89	-0.44719
+326	-89	-0.44719
+327	-89	-0.44719
+328	-89	-0.44719
+329	-89	-0.44719
+330	-89	-0.44719
+331	-89	-0.44719
+332	-89	-0.44719
+333	-89	-0.44719
+334	-89	-0.44719
+335	-89	-0.44719
+336	-89	-0.44719
+337	-89	-0.44719
+338	-89	-0.44719
+339	-89	-0.44719
+340	-89	-0.44719
+341	-89	-0.44719
+342	-89	-0.44719
+343	-89	-0.44719
+344	-89	-0.44719
+345	-89	-0.44719
+346	-89	-0.44719
+347	-89	-0.44719
+348	-89	-0.44719
+349	-89	-0.44719
+350	-89	-0.44719
+351	-89	-0.44719
+352	-89	-0.44719
+353	-89	-0.44719
+354	-89	-0.44719
+355	-89	-0.44719
+356	-89	-0.44719
+357	-89	-0.44719
+358	-89	-0.44719
+359	-89	-0.44719
+360	-89	-0.44719
+0	-88.5	-0.44719
+1	-88.5	-0.44719
+2	-88.5	-0.44719
+3	-88.5	-0.44719
+4	-88.5	-0.44719
+5	-88.5	-0.44719
+6	-88.5	-0.44719
+7	-88.5	-0.44719
+8	-88.5	-0.44719
+9	-88.5	-0.44719
+10	-88.5	-0.44719
+11	-88.5	-0.44719
+12	-88.5	-0.44719
+13	-88.5	-0.44719
+14	-88.5	-0.44719
+15	-88.5	-0.44719
+16	-88.5	-0.44719
+17	-88.5	-0.44719
+18	-88.5	-0.44719
+19	-88.5	-0.44719
+20	-88.5	-0.44719
+21	-88.5	-0.44719
+22	-88.5	-0.44719
+23	-88.5	-0.44719
+24	-88.5	-0.44719
+25	-88.5	-0.44719
+26	-88.5	-0.44719
+27	-88.5	-0.44719
+28	-88.5	-0.44719
+29	-88.5	-0.44719
+30	-88.5	-0.44719
+31	-88.5	-0.44719
+32	-88.5	-0.44719
+33	-88.5	-0.44719
+34	-88.5	-0.44719
+35	-88.5	-0.44719
+36	-88.5	-0.44719
+37	-88.5	-0.44719
+38	-88.5	-0.44719
+39	-88.5	-0.44719
+40	-88.5	-0.44719
+41	-88.5	-0.44719
+42	-88.5	-0.44719
+43	-88.5	-0.44719
+44	-88.5	-0.44719
+45	-88.5	-0.44719
+46	-88.5	-0.44719
+47	-88.5	-0.44719
+48	-88.5	-0.44719
+49	-88.5	-0.44719
+50	-88.5	-0.44719
+51	-88.5	-0.44719
+52	-88.5	-0.44719
+53	-88.5	-0.44719
+54	-88.5	-0.44719
+55	-88.5	-0.44719
+56	-88.5	-0.44719
+57	-88.5	-0.44719
+58	-88.5	-0.44719
+59	-88.5	-0.44719
+60	-88.5	-0.44719
+61	-88.5	-0.44719
+62	-88.5	-0.44719
+63	-88.5	-0.44719
+64	-88.5	-0.44719
+65	-88.5	-0.44719
+66	-88.5	-0.44719
+67	-88.5	-0.44719
+68	-88.5	-0.44719
+69	-88.5	-0.44719
+70	-88.5	-0.44719
+71	-88.5	-0.44719
+72	-88.5	-0.44719
+73	-88.5	-0.44719
+74	-88.5	-0.44719
+75	-88.5	-0.44719
+76	-88.5	-0.44719
+77	-88.5	-0.44719
+78	-88.5	-0.44719
+79	-88.5	-0.44719
+80	-88.5	-0.44719
+81	-88.5	-0.44719
+82	-88.5	-0.44719
+83	-88.5	-0.44719
+84	-88.5	-0.44719
+85	-88.5	-0.44719
+86	-88.5	-0.44719
+87	-88.5	-0.44719
+88	-88.5	-0.44719
+89	-88.5	-0.44719
+90	-88.5	-0.44719
+91	-88.5	-0.44719
+92	-88.5	-0.44719
+93	-88.5	-0.44719
+94	-88.5	-0.44719
+95	-88.5	-0.44719
+96	-88.5	-0.44719
+97	-88.5	-0.44719
+98	-88.5	-0.44719
+99	-88.5	-0.44719
+100	-88.5	-0.44719
+101	-88.5	-0.44719
+102	-88.5	-0.44719
+103	-88.5	-0.44719
+104	-88.5	-0.44719
+105	-88.5	-0.44719
+106	-88.5	-0.44719
+107	-88.5	-0.44719
+108	-88.5	-0.44719
+109	-88.5	-0.44719
+110	-88.5	-0.44719
+111	-88.5	-0.44719
+112	-88.5	-0.44719
+113	-88.5	-0.44719
+114	-88.5	-0.44719
+115	-88.5	-0.44719
+116	-88.5	-0.44719
+117	-88.5	-0.44719
+118	-88.5	-0.44719
+119	-88.5	-0.44719
+120	-88.5	-0.44719
+121	-88.5	-0.44719
+122	-88.5	-0.44719
+123	-88.5	-0.44719
+124	-88.5	-0.44719
+125	-88.5	-0.44719
+126	-88.5	-0.44719
+127	-88.5	-0.44719
+128	-88.5	-0.44719
+129	-88.5	-0.44719
+130	-88.5	-0.44719
+131	-88.5	-0.44719
+132	-88.5	-0.44719
+133	-88.5	-0.44719
+134	-88.5	-0.44719
+135	-88.5	-0.44719
+136	-88.5	-0.44719
+137	-88.5	-0.44719
+138	-88.5	-0.44719
+139	-88.5	-0.44719
+140	-88.5	-0.44719
+141	-88.5	-0.44719
+142	-88.5	-0.44719
+143	-88.5	-0.44719
+144	-88.5	-0.44719
+145	-88.5	-0.44719
+146	-88.5	-0.44719
+147	-88.5	-0.44719
+148	-88.5	-0.44719
+149	-88.5	-0.44719
+150	-88.5	-0.44719
+151	-88.5	-0.44719
+152	-88.5	-0.44719
+153	-88.5	-0.44719
+154	-88.5	-0.44719
+155	-88.5	-0.44719
+156	-88.5	-0.44719
+157	-88.5	-0.44719
+158	-88.5	-0.44719
+159	-88.5	-0.44719
+160	-88.5	-0.44719
+161	-88.5	-0.44719
+162	-88.5	-0.44719
+163	-88.5	-0.44719
+164	-88.5	-0.44719
+165	-88.5	-0.44719
+166	-88.5	-0.44719
+167	-88.5	-0.44719
+168	-88.5	-0.44719
+169	-88.5	-0.44719
+170	-88.5	-0.44719
+171	-88.5	-0.44719
+172	-88.5	-0.44719
+173	-88.5	-0.44719
+174	-88.5	-0.44719
+175	-88.5	-0.44719
+176	-88.5	-0.44719
+177	-88.5	-0.44719
+178	-88.5	-0.44719
+179	-88.5	-0.44719
+180	-88.5	-0.44719
+181	-88.5	-0.44719
+182	-88.5	-0.44719
+183	-88.5	-0.44719
+184	-88.5	-0.44719
+185	-88.5	-0.44719
+186	-88.5	-0.44719
+187	-88.5	-0.44719
+188	-88.5	-0.44719
+189	-88.5	-0.44719
+190	-88.5	-0.44719
+191	-88.5	-0.44719
+192	-88.5	-0.44719
+193	-88.5	-0.44719
+194	-88.5	-0.44719
+195	-88.5	-0.44719
+196	-88.5	-0.44719
+197	-88.5	-0.44719
+198	-88.5	-0.44719
+199	-88.5	-0.44719
+200	-88.5	-0.44719
+201	-88.5	-0.44719
+202	-88.5	-0.44719
+203	-88.5	-0.44719
+204	-88.5	-0.44719
+205	-88.5	-0.44719
+206	-88.5	-0.44719
+207	-88.5	-0.44719
+208	-88.5	-0.44719
+209	-88.5	-0.44719
+210	-88.5	-0.44719
+211	-88.5	-0.44719
+212	-88.5	-0.44719
+213	-88.5	-0.44719
+214	-88.5	-0.44719
+215	-88.5	-0.44719
+216	-88.5	-0.44719
+217	-88.5	-0.44719
+218	-88.5	-0.44719
+219	-88.5	-0.44719
+220	-88.5	-0.44719
+221	-88.5	-0.44719
+222	-88.5	-0.44719
+223	-88.5	-0.44719
+224	-88.5	-0.44719
+225	-88.5	-0.44719
+226	-88.5	-0.44719
+227	-88.5	-0.44719
+228	-88.5	-0.44719
+229	-88.5	-0.44719
+230	-88.5	-0.44719
+231	-88.5	-0.44719
+232	-88.5	-0.44719
+233	-88.5	-0.44719
+234	-88.5	-0.44719
+235	-88.5	-0.44719
+236	-88.5	-0.44719
+237	-88.5	-0.44719
+238	-88.5	-0.44719
+239	-88.5	-0.44719
+240	-88.5	-0.44719
+241	-88.5	-0.44719
+242	-88.5	-0.44719
+243	-88.5	-0.44719
+244	-88.5	-0.44719
+245	-88.5	-0.44719
+246	-88.5	-0.44719
+247	-88.5	-0.44719
+248	-88.5	-0.44719
+249	-88.5	-0.44719
+250	-88.5	-0.44719
+251	-88.5	-0.44719
+252	-88.5	-0.44719
+253	-88.5	-0.44719
+254	-88.5	-0.44719
+255	-88.5	-0.44719
+256	-88.5	-0.44719
+257	-88.5	-0.44719
+258	-88.5	-0.44719
+259	-88.5	-0.44719
+260	-88.5	-0.44719
+261	-88.5	-0.44719
+262	-88.5	-0.44719
+263	-88.5	-0.44719
+264	-88.5	-0.44719
+265	-88.5	-0.44719
+266	-88.5	-0.44719
+267	-88.5	-0.44719
+268	-88.5	-0.44719
+269	-88.5	-0.44719
+270	-88.5	-0.44719
+271	-88.5	-0.44719
+272	-88.5	-0.44719
+273	-88.5	-0.44719
+274	-88.5	-0.44719
+275	-88.5	-0.44719
+276	-88.5	-0.44719
+277	-88.5	-0.44719
+278	-88.5	-0.44719
+279	-88.5	-0.44719
+280	-88.5	-0.44719
+281	-88.5	-0.44719
+282	-88.5	-0.44719
+283	-88.5	-0.44719
+284	-88.5	-0.44719
+285	-88.5	-0.44719
+286	-88.5	-0.44719
+287	-88.5	-0.44719
+288	-88.5	-0.44719
+289	-88.5	-0.44719
+290	-88.5	-0.44719
+291	-88.5	-0.44719
+292	-88.5	-0.44719
+293	-88.5	-0.44719
+294	-88.5	-0.44719
+295	-88.5	-0.44719
+296	-88.5	-0.44719
+297	-88.5	-0.44719
+298	-88.5	-0.44719
+299	-88.5	-0.44719
+300	-88.5	-0.44719
+301	-88.5	-0.44719
+302	-88.5	-0.44719
+303	-88.5	-0.44719
+304	-88.5	-0.44719
+305	-88.5	-0.44719
+306	-88.5	-0.44719
+307	-88.5	-0.44719
+308	-88.5	-0.44719
+309	-88.5	-0.44719
+310	-88.5	-0.44719
+311	-88.5	-0.44719
+312	-88.5	-0.44719
+313	-88.5	-0.44719
+314	-88.5	-0.44719
+315	-88.5	-0.44719
+316	-88.5	-0.44719
+317	-88.5	-0.44719
+318	-88.5	-0.44719
+319	-88.5	-0.44719
+320	-88.5	-0.44719
+321	-88.5	-0.44719
+322	-88.5	-0.44719
+323	-88.5	-0.44719
+324	-88.5	-0.44719
+325	-88.5	-0.44719
+326	-88.5	-0.44719
+327	-88.5	-0.44719
+328	-88.5	-0.44719
+329	-88.5	-0.44719
+330	-88.5	-0.44719
+331	-88.5	-0.44719
+332	-88.5	-0.44719
+333	-88.5	-0.44719
+334	-88.5	-0.44719
+335	-88.5	-0.44719
+336	-88.5	-0.44719
+337	-88.5	-0.44719
+338	-88.5	-0.44719
+339	-88.5	-0.44719
+340	-88.5	-0.44719
+341	-88.5	-0.44719
+342	-88.5	-0.44719
+343	-88.5	-0.44719
+344	-88.5	-0.44719
+345	-88.5	-0.44719
+346	-88.5	-0.44719
+347	-88.5	-0.44719
+348	-88.5	-0.44719
+349	-88.5	-0.44719
+350	-88.5	-0.44719
+351	-88.5	-0.44719
+352	-88.5	-0.44719
+353	-88.5	-0.44719
+354	-88.5	-0.44719
+355	-88.5	-0.44719
+356	-88.5	-0.44719
+357	-88.5	-0.44719
+358	-88.5	-0.44719
+359	-88.5	-0.44719
+360	-88.5	-0.44719
+0	-88	-0.44719
+1	-88	-0.44719
+2	-88	-0.44719
+3	-88	-0.44719
+4	-88	-0.44719
+5	-88	-0.44719
+6	-88	-0.44719
+7	-88	-0.44719
+8	-88	-0.44719
+9	-88	-0.44719
+10	-88	-0.44719
+11	-88	-0.44719
+12	-88	-0.44719
+13	-88	-0.44719
+14	-88	-0.44719
+15	-88	-0.44719
+16	-88	-0.44719
+17	-88	-0.44719
+18	-88	-0.44719
+19	-88	-0.44719
+20	-88	-0.44719
+21	-88	-0.44719
+22	-88	-0.44719
+23	-88	-0.44719
+24	-88	-0.44719
+25	-88	-0.44719
+26	-88	-0.44719
+27	-88	-0.44719
+28	-88	-0.44719
+29	-88	-0.44719
+30	-88	-0.44719
+31	-88	-0.44719
+32	-88	-0.44719
+33	-88	-0.44719
+34	-88	-0.44719
+35	-88	-0.44719
+36	-88	-0.44719
+37	-88	-0.44719
+38	-88	-0.44719
+39	-88	-0.44719
+40	-88	-0.44719
+41	-88	-0.44719
+42	-88	-0.44719
+43	-88	-0.44719
+44	-88	-0.44719
+45	-88	-0.44719
+46	-88	-0.44719
+47	-88	-0.44719
+48	-88	-0.44719
+49	-88	-0.44719
+50	-88	-0.44719
+51	-88	-0.44719
+52	-88	-0.44719
+53	-88	-0.44719
+54	-88	-0.44719
+55	-88	-0.44719
+56	-88	-0.44719
+57	-88	-0.44719
+58	-88	-0.44719
+59	-88	-0.44719
+60	-88	-0.44719
+61	-88	-0.44719
+62	-88	-0.44719
+63	-88	-0.44719
+64	-88	-0.44719
+65	-88	-0.44719
+66	-88	-0.44719
+67	-88	-0.44719
+68	-88	-0.44719
+69	-88	-0.44719
+70	-88	-0.44719
+71	-88	-0.44719
+72	-88	-0.44719
+73	-88	-0.44719
+74	-88	-0.44719
+75	-88	-0.44719
+76	-88	-0.44719
+77	-88	-0.44719
+78	-88	-0.44719
+79	-88	-0.44719
+80	-88	-0.44719
+81	-88	-0.44719
+82	-88	-0.44719
+83	-88	-0.44719
+84	-88	-0.44719
+85	-88	-0.44719
+86	-88	-0.44719
+87	-88	-0.44719
+88	-88	-0.44719
+89	-88	-0.44719
+90	-88	-0.44719
+91	-88	-0.44719
+92	-88	-0.44719
+93	-88	-0.44719
+94	-88	-0.44719
+95	-88	-0.44719
+96	-88	-0.44719
+97	-88	-0.44719
+98	-88	-0.44719
+99	-88	-0.44719
+100	-88	-0.44719
+101	-88	-0.44719
+102	-88	-0.44719
+103	-88	-0.44719
+104	-88	-0.44719
+105	-88	-0.44719
+106	-88	-0.44719
+107	-88	-0.44719
+108	-88	-0.44719
+109	-88	-0.44719
+110	-88	-0.44719
+111	-88	-0.44719
+112	-88	-0.44719
+113	-88	-0.44719
+114	-88	-0.44719
+115	-88	-0.44719
+116	-88	-0.44719
+117	-88	-0.44719
+118	-88	-0.44719
+119	-88	-0.44719
+120	-88	-0.44719
+121	-88	-0.44719
+122	-88	-0.44719
+123	-88	-0.44719
+124	-88	-0.44719
+125	-88	-0.44719
+126	-88	-0.44719
+127	-88	-0.44719
+128	-88	-0.44719
+129	-88	-0.44719
+130	-88	-0.44719
+131	-88	-0.44719
+132	-88	-0.44719
+133	-88	-0.44719
+134	-88	-0.44719
+135	-88	-0.44719
+136	-88	-0.44719
+137	-88	-0.44719
+138	-88	-0.44719
+139	-88	-0.44719
+140	-88	-0.44719
+141	-88	-0.44719
+142	-88	-0.44719
+143	-88	-0.44719
+144	-88	-0.44719
+145	-88	-0.44719
+146	-88	-0.44719
+147	-88	-0.44719
+148	-88	-0.44719
+149	-88	-0.44719
+150	-88	-0.44719
+151	-88	-0.44719
+152	-88	-0.44719
+153	-88	-0.44719
+154	-88	-0.44719
+155	-88	-0.44719
+156	-88	-0.44719
+157	-88	-0.44719
+158	-88	-0.44719
+159	-88	-0.44719
+160	-88	-0.44719
+161	-88	-0.44719
+162	-88	-0.44719
+163	-88	-0.44719
+164	-88	-0.44719
+165	-88	-0.44719
+166	-88	-0.44719
+167	-88	-0.44719
+168	-88	-0.44719
+169	-88	-0.44719
+170	-88	-0.44719
+171	-88	-0.44719
+172	-88	-0.44719
+173	-88	-0.44719
+174	-88	-0.44719
+175	-88	-0.44719
+176	-88	-0.44719
+177	-88	-0.44719
+178	-88	-0.44719
+179	-88	-0.44719
+180	-88	-0.44719
+181	-88	-0.44719
+182	-88	-0.44719
+183	-88	-0.44719
+184	-88	-0.44719
+185	-88	-0.44719
+186	-88	-0.44719
+187	-88	-0.44719
+188	-88	-0.44719
+189	-88	-0.44719
+190	-88	-0.44719
+191	-88	-0.44719
+192	-88	-0.44719
+193	-88	-0.44719
+194	-88	-0.44719
+195	-88	-0.44719
+196	-88	-0.44719
+197	-88	-0.44719
+198	-88	-0.44719
+199	-88	-0.44719
+200	-88	-0.44719
+201	-88	-0.44719
+202	-88	-0.44719
+203	-88	-0.44719
+204	-88	-0.44719
+205	-88	-0.44719
+206	-88	-0.44719
+207	-88	-0.44719
+208	-88	-0.44719
+209	-88	-0.44719
+210	-88	-0.44719
+211	-88	-0.44719
+212	-88	-0.44719
+213	-88	-0.44719
+214	-88	-0.44719
+215	-88	-0.44719
+216	-88	-0.44719
+217	-88	-0.44719
+218	-88	-0.44719
+219	-88	-0.44719
+220	-88	-0.44719
+221	-88	-0.44719
+222	-88	-0.44719
+223	-88	-0.44719
+224	-88	-0.44719
+225	-88	-0.44719
+226	-88	-0.44719
+227	-88	-0.44719
+228	-88	-0.44719
+229	-88	-0.44719
+230	-88	-0.44719
+231	-88	-0.44719
+232	-88	-0.44719
+233	-88	-0.44719
+234	-88	-0.44719
+235	-88	-0.44719
+236	-88	-0.44719
+237	-88	-0.44719
+238	-88	-0.44719
+239	-88	-0.44719
+240	-88	-0.44719
+241	-88	-0.44719
+242	-88	-0.44719
+243	-88	-0.44719
+244	-88	-0.44719
+245	-88	-0.44719
+246	-88	-0.44719
+247	-88	-0.44719
+248	-88	-0.44719
+249	-88	-0.44719
+250	-88	-0.44719
+251	-88	-0.44719
+252	-88	-0.44719
+253	-88	-0.44719
+254	-88	-0.44719
+255	-88	-0.44719
+256	-88	-0.44719
+257	-88	-0.44719
+258	-88	-0.44719
+259	-88	-0.44719
+260	-88	-0.44719
+261	-88	-0.44719
+262	-88	-0.44719
+263	-88	-0.44719
+264	-88	-0.44719
+265	-88	-0.44719
+266	-88	-0.44719
+267	-88	-0.44719
+268	-88	-0.44719
+269	-88	-0.44719
+270	-88	-0.44719
+271	-88	-0.44719
+272	-88	-0.44719
+273	-88	-0.44719
+274	-88	-0.44719
+275	-88	-0.44719
+276	-88	-0.44719
+277	-88	-0.44719
+278	-88	-0.44719
+279	-88	-0.44719
+280	-88	-0.44719
+281	-88	-0.44719
+282	-88	-0.44719
+283	-88	-0.44719
+284	-88	-0.44719
+285	-88	-0.44719
+286	-88	-0.44719
+287	-88	-0.44719
+288	-88	-0.44719
+289	-88	-0.44719
+290	-88	-0.44719
+291	-88	-0.44719
+292	-88	-0.44719
+293	-88	-0.44719
+294	-88	-0.44719
+295	-88	-0.44719
+296	-88	-0.44719
+297	-88	-0.44719
+298	-88	-0.44719
+299	-88	-0.44719
+300	-88	-0.44719
+301	-88	-0.44719
+302	-88	-0.44719
+303	-88	-0.44719
+304	-88	-0.44719
+305	-88	-0.44719
+306	-88	-0.44719
+307	-88	-0.44719
+308	-88	-0.44719
+309	-88	-0.44719
+310	-88	-0.44719
+311	-88	-0.44719
+312	-88	-0.44719
+313	-88	-0.44719
+314	-88	-0.44719
+315	-88	-0.44719
+316	-88	-0.44719
+317	-88	-0.44719
+318	-88	-0.44719
+319	-88	-0.44719
+320	-88	-0.44719
+321	-88	-0.44719
+322	-88	-0.44719
+323	-88	-0.44719
+324	-88	-0.44719
+325	-88	-0.44719
+326	-88	-0.44719
+327	-88	-0.44719
+328	-88	-0.44719
+329	-88	-0.44719
+330	-88	-0.44719
+331	-88	-0.44719
+332	-88	-0.44719
+333	-88	-0.44719
+334	-88	-0.44719
+335	-88	-0.44719
+336	-88	-0.44719
+337	-88	-0.44719
+338	-88	-0.44719
+339	-88	-0.44719
+340	-88	-0.44719
+341	-88	-0.44719
+342	-88	-0.44719
+343	-88	-0.44719
+344	-88	-0.44719
+345	-88	-0.44719
+346	-88	-0.44719
+347	-88	-0.44719
+348	-88	-0.44719
+349	-88	-0.44719
+350	-88	-0.44719
+351	-88	-0.44719
+352	-88	-0.44719
+353	-88	-0.44719
+354	-88	-0.44719
+355	-88	-0.44719
+356	-88	-0.44719
+357	-88	-0.44719
+358	-88	-0.44719
+359	-88	-0.44719
+360	-88	-0.44719
+0	-87.5	-0.44719
+1	-87.5	-0.44719
+2	-87.5	-0.44719
+3	-87.5	-0.44719
+4	-87.5	-0.44719
+5	-87.5	-0.44719
+6	-87.5	-0.44719
+7	-87.5	-0.44719
+8	-87.5	-0.44719
+9	-87.5	-0.44719
+10	-87.5	-0.44719
+11	-87.5	-0.44719
+12	-87.5	-0.44719
+13	-87.5	-0.44719
+14	-87.5	-0.44719
+15	-87.5	-0.44719
+16	-87.5	-0.44719
+17	-87.5	-0.44719
+18	-87.5	-0.44719
+19	-87.5	-0.44719
+20	-87.5	-0.44719
+21	-87.5	-0.44719
+22	-87.5	-0.44719
+23	-87.5	-0.44719
+24	-87.5	-0.44719
+25	-87.5	-0.44719
+26	-87.5	-0.44719
+27	-87.5	-0.44719
+28	-87.5	-0.44719
+29	-87.5	-0.44719
+30	-87.5	-0.44719
+31	-87.5	-0.44719
+32	-87.5	-0.44719
+33	-87.5	-0.44719
+34	-87.5	-0.44719
+35	-87.5	-0.44719
+36	-87.5	-0.44719
+37	-87.5	-0.44719
+38	-87.5	-0.44719
+39	-87.5	-0.44719
+40	-87.5	-0.44719
+41	-87.5	-0.44719
+42	-87.5	-0.44719
+43	-87.5	-0.44719
+44	-87.5	-0.44719
+45	-87.5	-0.44719
+46	-87.5	-0.44719
+47	-87.5	-0.44719
+48	-87.5	-0.44719
+49	-87.5	-0.44719
+50	-87.5	-0.44719
+51	-87.5	-0.44719
+52	-87.5	-0.44719
+53	-87.5	-0.44719
+54	-87.5	-0.44719
+55	-87.5	-0.44719
+56	-87.5	-0.44719
+57	-87.5	-0.44719
+58	-87.5	-0.44719
+59	-87.5	-0.44719
+60	-87.5	-0.44719
+61	-87.5	-0.44719
+62	-87.5	-0.44719
+63	-87.5	-0.44719
+64	-87.5	-0.44719
+65	-87.5	-0.44719
+66	-87.5	-0.44719
+67	-87.5	-0.44719
+68	-87.5	-0.44719
+69	-87.5	-0.44719
+70	-87.5	-0.44719
+71	-87.5	-0.44719
+72	-87.5	-0.44719
+73	-87.5	-0.44719
+74	-87.5	-0.44719
+75	-87.5	-0.44719
+76	-87.5	-0.44719
+77	-87.5	-0.44719
+78	-87.5	-0.44719
+79	-87.5	-0.44719
+80	-87.5	-0.44719
+81	-87.5	-0.44719
+82	-87.5	-0.44719
+83	-87.5	-0.44719
+84	-87.5	-0.44719
+85	-87.5	-0.44719
+86	-87.5	-0.44719
+87	-87.5	-0.44719
+88	-87.5	-0.44719
+89	-87.5	-0.44719
+90	-87.5	-0.44719
+91	-87.5	-0.44719
+92	-87.5	-0.44719
+93	-87.5	-0.44719
+94	-87.5	-0.44719
+95	-87.5	-0.44719
+96	-87.5	-0.44719
+97	-87.5	-0.44719
+98	-87.5	-0.44719
+99	-87.5	-0.44719
+100	-87.5	-0.44719
+101	-87.5	-0.44719
+102	-87.5	-0.44719
+103	-87.5	-0.44719
+104	-87.5	-0.44719
+105	-87.5	-0.44719
+106	-87.5	-0.44719
+107	-87.5	-0.44719
+108	-87.5	-0.44719
+109	-87.5	-0.44719
+110	-87.5	-0.44719
+111	-87.5	-0.44719
+112	-87.5	-0.44719
+113	-87.5	-0.44719
+114	-87.5	-0.44719
+115	-87.5	-0.44719
+116	-87.5	-0.44719
+117	-87.5	-0.44719
+118	-87.5	-0.44719
+119	-87.5	-0.44719
+120	-87.5	-0.44719
+121	-87.5	-0.44719
+122	-87.5	-0.44719
+123	-87.5	-0.44719
+124	-87.5	-0.44719
+125	-87.5	-0.44719
+126	-87.5	-0.44719
+127	-87.5	-0.44719
+128	-87.5	-0.44719
+129	-87.5	-0.44719
+130	-87.5	-0.44719
+131	-87.5	-0.44719
+132	-87.5	-0.44719
+133	-87.5	-0.44719
+134	-87.5	-0.44719
+135	-87.5	-0.44719
+136	-87.5	-0.44719
+137	-87.5	-0.44719
+138	-87.5	-0.44719
+139	-87.5	-0.44719
+140	-87.5	-0.44719
+141	-87.5	-0.44719
+142	-87.5	-0.44719
+143	-87.5	-0.44719
+144	-87.5	-0.44719
+145	-87.5	-0.44719
+146	-87.5	-0.44719
+147	-87.5	-0.44719
+148	-87.5	-0.44719
+149	-87.5	-0.44719
+150	-87.5	-0.44719
+151	-87.5	-0.44719
+152	-87.5	-0.44719
+153	-87.5	-0.44719
+154	-87.5	-0.44719
+155	-87.5	-0.44719
+156	-87.5	-0.44719
+157	-87.5	-0.44719
+158	-87.5	-0.44719
+159	-87.5	-0.44719
+160	-87.5	-0.44719
+161	-87.5	-0.44719
+162	-87.5	-0.44719
+163	-87.5	-0.44719
+164	-87.5	-0.44719
+165	-87.5	-0.44719
+166	-87.5	-0.44719
+167	-87.5	-0.44719
+168	-87.5	-0.44719
+169	-87.5	-0.44719
+170	-87.5	-0.44719
+171	-87.5	-0.44719
+172	-87.5	-0.44719
+173	-87.5	-0.44719
+174	-87.5	-0.44719
+175	-87.5	-0.44719
+176	-87.5	-0.44719
+177	-87.5	-0.44719
+178	-87.5	-0.44719
+179	-87.5	-0.44719
+180	-87.5	-0.44719
+181	-87.5	-0.44719
+182	-87.5	-0.44719
+183	-87.5	-0.44719
+184	-87.5	-0.44719
+185	-87.5	-0.44719
+186	-87.5	-0.44719
+187	-87.5	-0.44719
+188	-87.5	-0.44719
+189	-87.5	-0.44719
+190	-87.5	-0.44719
+191	-87.5	-0.44719
+192	-87.5	-0.44719
+193	-87.5	-0.44719
+194	-87.5	-0.44719
+195	-87.5	-0.44719
+196	-87.5	-0.44719
+197	-87.5	-0.44719
+198	-87.5	-0.44719
+199	-87.5	-0.44719
+200	-87.5	-0.44719
+201	-87.5	-0.44719
+202	-87.5	-0.44719
+203	-87.5	-0.44719
+204	-87.5	-0.44719
+205	-87.5	-0.44719
+206	-87.5	-0.44719
+207	-87.5	-0.44719
+208	-87.5	-0.44719
+209	-87.5	-0.44719
+210	-87.5	-0.44719
+211	-87.5	-0.44719
+212	-87.5	-0.44719
+213	-87.5	-0.44719
+214	-87.5	-0.44719
+215	-87.5	-0.44719
+216	-87.5	-0.44719
+217	-87.5	-0.44719
+218	-87.5	-0.44719
+219	-87.5	-0.44719
+220	-87.5	-0.44719
+221	-87.5	-0.44719
+222	-87.5	-0.44719
+223	-87.5	-0.44719
+224	-87.5	-0.44719
+225	-87.5	-0.44719
+226	-87.5	-0.44719
+227	-87.5	-0.44719
+228	-87.5	-0.44719
+229	-87.5	-0.44719
+230	-87.5	-0.44719
+231	-87.5	-0.44719
+232	-87.5	-0.44719
+233	-87.5	-0.44719
+234	-87.5	-0.44719
+235	-87.5	-0.44719
+236	-87.5	-0.44719
+237	-87.5	-0.44719
+238	-87.5	-0.44719
+239	-87.5	-0.44719
+240	-87.5	-0.44719
+241	-87.5	-0.44719
+242	-87.5	-0.44719
+243	-87.5	-0.44719
+244	-87.5	-0.44719
+245	-87.5	-0.44719
+246	-87.5	-0.44719
+247	-87.5	-0.44719
+248	-87.5	-0.44719
+249	-87.5	-0.44719
+250	-87.5	-0.44719
+251	-87.5	-0.44719
+252	-87.5	-0.44719
+253	-87.5	-0.44719
+254	-87.5	-0.44719
+255	-87.5	-0.44719
+256	-87.5	-0.44719
+257	-87.5	-0.44719
+258	-87.5	-0.44719
+259	-87.5	-0.44719
+260	-87.5	-0.44719
+261	-87.5	-0.44719
+262	-87.5	-0.44719
+263	-87.5	-0.44719
+264	-87.5	-0.44719
+265	-87.5	-0.44719
+266	-87.5	-0.44719
+267	-87.5	-0.44719
+268	-87.5	-0.44719
+269	-87.5	-0.44719
+270	-87.5	-0.44719
+271	-87.5	-0.44719
+272	-87.5	-0.44719
+273	-87.5	-0.44719
+274	-87.5	-0.44719
+275	-87.5	-0.44719
+276	-87.5	-0.44719
+277	-87.5	-0.44719
+278	-87.5	-0.44719
+279	-87.5	-0.44719
+280	-87.5	-0.44719
+281	-87.5	-0.44719
+282	-87.5	-0.44719
+283	-87.5	-0.44719
+284	-87.5	-0.44719
+285	-87.5	-0.44719
+286	-87.5	-0.44719
+287	-87.5	-0.44719
+288	-87.5	-0.44719
+289	-87.5	-0.44719
+290	-87.5	-0.44719
+291	-87.5	-0.44719
+292	-87.5	-0.44719
+293	-87.5	-0.44719
+294	-87.5	-0.44719
+295	-87.5	-0.44719
+296	-87.5	-0.44719
+297	-87.5	-0.44719
+298	-87.5	-0.44719
+299	-87.5	-0.44719
+300	-87.5	-0.44719
+301	-87.5	-0.44719
+302	-87.5	-0.44719
+303	-87.5	-0.44719
+304	-87.5	-0.44719
+305	-87.5	-0.44719
+306	-87.5	-0.44719
+307	-87.5	-0.44719
+308	-87.5	-0.44719
+309	-87.5	-0.44719
+310	-87.5	-0.44719
+311	-87.5	-0.44719
+312	-87.5	-0.44719
+313	-87.5	-0.44719
+314	-87.5	-0.44719
+315	-87.5	-0.44719
+316	-87.5	-0.44719
+317	-87.5	-0.44719
+318	-87.5	-0.44719
+319	-87.5	-0.44719
+320	-87.5	-0.44719
+321	-87.5	-0.44719
+322	-87.5	-0.44719
+323	-87.5	-0.44719
+324	-87.5	-0.44719
+325	-87.5	-0.44719
+326	-87.5	-0.44719
+327	-87.5	-0.44719
+328	-87.5	-0.44719
+329	-87.5	-0.44719
+330	-87.5	-0.44719
+331	-87.5	-0.44719
+332	-87.5	-0.44719
+333	-87.5	-0.44719
+334	-87.5	-0.44719
+335	-87.5	-0.44719
+336	-87.5	-0.44719
+337	-87.5	-0.44719
+338	-87.5	-0.44719
+339	-87.5	-0.44719
+340	-87.5	-0.44719
+341	-87.5	-0.44719
+342	-87.5	-0.44719
+343	-87.5	-0.44719
+344	-87.5	-0.44719
+345	-87.5	-0.44719
+346	-87.5	-0.44719
+347	-87.5	-0.44719
+348	-87.5	-0.44719
+349	-87.5	-0.44719
+350	-87.5	-0.44719
+351	-87.5	-0.44719
+352	-87.5	-0.44719
+353	-87.5	-0.44719
+354	-87.5	-0.44719
+355	-87.5	-0.44719
+356	-87.5	-0.44719
+357	-87.5	-0.44719
+358	-87.5	-0.44719
+359	-87.5	-0.44719
+360	-87.5	-0.44719
+0	-87	-0.44719
+1	-87	-0.44719
+2	-87	-0.44719
+3	-87	-0.44719
+4	-87	-0.44719
+5	-87	-0.44719
+6	-87	-0.44719
+7	-87	-0.44719
+8	-87	-0.44719
+9	-87	-0.44719
+10	-87	-0.44719
+11	-87	-0.44719
+12	-87	-0.44719
+13	-87	-0.44719
+14	-87	-0.44719
+15	-87	-0.44719
+16	-87	-0.44719
+17	-87	-0.44719
+18	-87	-0.44719
+19	-87	-0.44719
+20	-87	-0.44719
+21	-87	-0.44719
+22	-87	-0.44719
+23	-87	-0.44719
+24	-87	-0.44719
+25	-87	-0.44719
+26	-87	-0.44719
+27	-87	-0.44719
+28	-87	-0.44719
+29	-87	-0.44719
+30	-87	-0.44719
+31	-87	-0.44719
+32	-87	-0.44719
+33	-87	-0.44719
+34	-87	-0.44719
+35	-87	-0.44719
+36	-87	-0.44719
+37	-87	-0.44719
+38	-87	-0.44719
+39	-87	-0.44719
+40	-87	-0.44719
+41	-87	-0.44719
+42	-87	-0.44719
+43	-87	-0.44719
+44	-87	-0.44719
+45	-87	-0.44719
+46	-87	-0.44719
+47	-87	-0.44719
+48	-87	-0.44719
+49	-87	-0.44719
+50	-87	-0.44719
+51	-87	-0.44719
+52	-87	-0.44719
+53	-87	-0.44719
+54	-87	-0.44719
+55	-87	-0.44719
+56	-87	-0.44719
+57	-87	-0.44719
+58	-87	-0.44719
+59	-87	-0.44719
+60	-87	-0.44719
+61	-87	-0.44719
+62	-87	-0.44719
+63	-87	-0.44719
+64	-87	-0.44719
+65	-87	-0.44719
+66	-87	-0.44719
+67	-87	-0.44719
+68	-87	-0.44719
+69	-87	-0.44719
+70	-87	-0.44719
+71	-87	-0.44719
+72	-87	-0.44719
+73	-87	-0.44719
+74	-87	-0.44719
+75	-87	-0.44719
+76	-87	-0.44719
+77	-87	-0.44719
+78	-87	-0.44719
+79	-87	-0.44719
+80	-87	-0.44719
+81	-87	-0.44719
+82	-87	-0.44719
+83	-87	-0.44719
+84	-87	-0.44719
+85	-87	-0.44719
+86	-87	-0.44719
+87	-87	-0.44719
+88	-87	-0.44719
+89	-87	-0.44719
+90	-87	-0.44719
+91	-87	-0.44719
+92	-87	-0.44719
+93	-87	-0.44719
+94	-87	-0.44719
+95	-87	-0.44719
+96	-87	-0.44719
+97	-87	-0.44719
+98	-87	-0.44719
+99	-87	-0.44719
+100	-87	-0.44719
+101	-87	-0.44719
+102	-87	-0.44719
+103	-87	-0.44719
+104	-87	-0.44719
+105	-87	-0.44719
+106	-87	-0.44719
+107	-87	-0.44719
+108	-87	-0.44719
+109	-87	-0.44719
+110	-87	-0.44719
+111	-87	-0.44719
+112	-87	-0.44719
+113	-87	-0.44719
+114	-87	-0.44719
+115	-87	-0.44719
+116	-87	-0.44719
+117	-87	-0.44719
+118	-87	-0.44719
+119	-87	-0.44719
+120	-87	-0.44719
+121	-87	-0.44719
+122	-87	-0.44719
+123	-87	-0.44719
+124	-87	-0.44719
+125	-87	-0.44719
+126	-87	-0.44719
+127	-87	-0.44719
+128	-87	-0.44719
+129	-87	-0.44719
+130	-87	-0.44719
+131	-87	-0.44719
+132	-87	-0.44719
+133	-87	-0.44719
+134	-87	-0.44719
+135	-87	-0.44719
+136	-87	-0.44719
+137	-87	-0.44719
+138	-87	-0.44719
+139	-87	-0.44719
+140	-87	-0.44719
+141	-87	-0.44719
+142	-87	-0.44719
+143	-87	-0.44719
+144	-87	-0.44719
+145	-87	-0.44719
+146	-87	-0.44719
+147	-87	-0.44719
+148	-87	-0.44719
+149	-87	-0.44719
+150	-87	-0.44719
+151	-87	-0.44719
+152	-87	-0.44719
+153	-87	-0.44719
+154	-87	-0.44719
+155	-87	-0.44719
+156	-87	-0.44719
+157	-87	-0.44719
+158	-87	-0.44719
+159	-87	-0.44719
+160	-87	-0.44719
+161	-87	-0.44719
+162	-87	-0.44719
+163	-87	-0.44719
+164	-87	-0.44719
+165	-87	-0.44719
+166	-87	-0.44719
+167	-87	-0.44719
+168	-87	-0.44719
+169	-87	-0.44719
+170	-87	-0.44719
+171	-87	-0.44719
+172	-87	-0.44719
+173	-87	-0.44719
+174	-87	-0.44719
+175	-87	-0.44719
+176	-87	-0.44719
+177	-87	-0.44719
+178	-87	-0.44719
+179	-87	-0.44719
+180	-87	-0.44719
+181	-87	-0.44719
+182	-87	-0.44719
+183	-87	-0.44719
+184	-87	-0.44719
+185	-87	-0.44719
+186	-87	-0.44719
+187	-87	-0.44719
+188	-87	-0.44719
+189	-87	-0.44719
+190	-87	-0.44719
+191	-87	-0.44719
+192	-87	-0.44719
+193	-87	-0.44719
+194	-87	-0.44719
+195	-87	-0.44719
+196	-87	-0.44719
+197	-87	-0.44719
+198	-87	-0.44719
+199	-87	-0.44719
+200	-87	-0.44719
+201	-87	-0.44719
+202	-87	-0.44719
+203	-87	-0.44719
+204	-87	-0.44719
+205	-87	-0.44719
+206	-87	-0.44719
+207	-87	-0.44719
+208	-87	-0.44719
+209	-87	-0.44719
+210	-87	-0.44719
+211	-87	-0.44719
+212	-87	-0.44719
+213	-87	-0.44719
+214	-87	-0.44719
+215	-87	-0.44719
+216	-87	-0.44719
+217	-87	-0.44719
+218	-87	-0.44719
+219	-87	-0.44719
+220	-87	-0.44719
+221	-87	-0.44719
+222	-87	-0.44719
+223	-87	-0.44719
+224	-87	-0.44719
+225	-87	-0.44719
+226	-87	-0.44719
+227	-87	-0.44719
+228	-87	-0.44719
+229	-87	-0.44719
+230	-87	-0.44719
+231	-87	-0.44719
+232	-87	-0.44719
+233	-87	-0.44719
+234	-87	-0.44719
+235	-87	-0.44719
+236	-87	-0.44719
+237	-87	-0.44719
+238	-87	-0.44719
+239	-87	-0.44719
+240	-87	-0.44719
+241	-87	-0.44719
+242	-87	-0.44719
+243	-87	-0.44719
+244	-87	-0.44719
+245	-87	-0.44719
+246	-87	-0.44719
+247	-87	-0.44719
+248	-87	-0.44719
+249	-87	-0.44719
+250	-87	-0.44719
+251	-87	-0.44719
+252	-87	-0.44719
+253	-87	-0.44719
+254	-87	-0.44719
+255	-87	-0.44719
+256	-87	-0.44719
+257	-87	-0.44719
+258	-87	-0.44719
+259	-87	-0.44719
+260	-87	-0.44719
+261	-87	-0.44719
+262	-87	-0.44719
+263	-87	-0.44719
+264	-87	-0.44719
+265	-87	-0.44719
+266	-87	-0.44719
+267	-87	-0.44719
+268	-87	-0.44719
+269	-87	-0.44719
+270	-87	-0.44719
+271	-87	-0.44719
+272	-87	-0.44719
+273	-87	-0.44719
+274	-87	-0.44719
+275	-87	-0.44719
+276	-87	-0.44719
+277	-87	-0.44719
+278	-87	-0.44719
+279	-87	-0.44719
+280	-87	-0.44719
+281	-87	-0.44719
+282	-87	-0.44719
+283	-87	-0.44719
+284	-87	-0.44719
+285	-87	-0.44719
+286	-87	-0.44719
+287	-87	-0.44719
+288	-87	-0.44719
+289	-87	-0.44719
+290	-87	-0.44719
+291	-87	-0.44719
+292	-87	-0.44719
+293	-87	-0.44719
+294	-87	-0.44719
+295	-87	-0.44719
+296	-87	-0.44719
+297	-87	-0.44719
+298	-87	-0.44719
+299	-87	-0.44719
+300	-87	-0.44719
+301	-87	-0.44719
+302	-87	-0.44719
+303	-87	-0.44719
+304	-87	-0.44719
+305	-87	-0.44719
+306	-87	-0.44719
+307	-87	-0.44719
+308	-87	-0.44719
+309	-87	-0.44719
+310	-87	-0.44719
+311	-87	-0.44719
+312	-87	-0.44719
+313	-87	-0.44719
+314	-87	-0.44719
+315	-87	-0.44719
+316	-87	-0.44719
+317	-87	-0.44719
+318	-87	-0.44719
+319	-87	-0.44719
+320	-87	-0.44719
+321	-87	-0.44719
+322	-87	-0.44719
+323	-87	-0.44719
+324	-87	-0.44719
+325	-87	-0.44719
+326	-87	-0.44719
+327	-87	-0.44719
+328	-87	-0.44719
+329	-87	-0.44719
+330	-87	-0.44719
+331	-87	-0.44719
+332	-87	-0.44719
+333	-87	-0.44719
+334	-87	-0.44719
+335	-87	-0.44719
+336	-87	-0.44719
+337	-87	-0.44719
+338	-87	-0.44719
+339	-87	-0.44719
+340	-87	-0.44719
+341	-87	-0.44719
+342	-87	-0.44719
+343	-87	-0.44719
+344	-87	-0.44719
+345	-87	-0.44719
+346	-87	-0.44719
+347	-87	-0.44719
+348	-87	-0.44719
+349	-87	-0.44719
+350	-87	-0.44719
+351	-87	-0.44719
+352	-87	-0.44719
+353	-87	-0.44719
+354	-87	-0.44719
+355	-87	-0.44719
+356	-87	-0.44719
+357	-87	-0.44719
+358	-87	-0.44719
+359	-87	-0.44719
+360	-87	-0.44719
+0	-86.5	-0.35785
+1	-86.5	-0.35319
+2	-86.5	-0.34853
+3	-86.5	-0.34387
+4	-86.5	-0.33921
+5	-86.5	-0.33455
+6	-86.5	-0.32989
+7	-86.5	-0.32523
+8	-86.5	-0.32057
+9	-86.5	-0.31591
+10	-86.5	-0.31125
+11	-86.5	-0.30659
+12	-86.5	-0.30193
+13	-86.5	-0.29727
+14	-86.5	-0.29261
+15	-86.5	-0.28795
+16	-86.5	-0.28329
+17	-86.5	-0.27863
+18	-86.5	-0.27397
+19	-86.5	-0.26931
+20	-86.5	-0.26465
+21	-86.5	-0.26
+22	-86.5	-0.25534
+23	-86.5	-0.25077
+24	-86.5	-0.24493
+25	-86.5	-0.2418
+26	-86.5	-0.24592
+27	-86.5	-0.25004
+28	-86.5	-0.25416
+29	-86.5	-0.25828
+30	-86.5	-0.2624
+31	-86.5	-0.26652
+32	-86.5	-0.27064
+33	-86.5	-0.27476
+34	-86.5	-0.27888
+35	-86.5	-0.283
+36	-86.5	-0.28712
+37	-86.5	-0.29124
+38	-86.5	-0.29536
+39	-86.5	-0.29948
+40	-86.5	-0.3036
+41	-86.5	-0.30772
+42	-86.5	-0.31184
+43	-86.5	-0.31596
+44	-86.5	-0.31717
+45	-86.5	-0.31826
+46	-86.5	-0.31935
+47	-86.5	-0.32044
+48	-86.5	-0.32152
+49	-86.5	-0.32261
+50	-86.5	-0.3237
+51	-86.5	-0.32479
+52	-86.5	-0.32588
+53	-86.5	-0.32697
+54	-86.5	-0.32805
+55	-86.5	-0.32914
+56	-86.5	-0.33023
+57	-86.5	-0.33132
+58	-86.5	-0.33241
+59	-86.5	-0.3335
+60	-86.5	-0.33458
+61	-86.5	-0.33567
+62	-86.5	-0.33676
+63	-86.5	-0.33785
+64	-86.5	-0.33894
+65	-86.5	-0.34003
+66	-86.5	-0.34111
+67	-86.5	-0.3422
+68	-86.5	-0.34329
+69	-86.5	-0.34438
+70	-86.5	-0.34547
+71	-86.5	-0.34655
+72	-86.5	-0.34764
+73	-86.5	-0.34873
+74	-86.5	-0.34982
+75	-86.5	-0.35091
+76	-86.5	-0.352
+77	-86.5	-0.35308
+78	-86.5	-0.35417
+79	-86.5	-0.35526
+80	-86.5	-0.35635
+81	-86.5	-0.35744
+82	-86.5	-0.35853
+83	-86.5	-0.35961
+84	-86.5	-0.3607
+85	-86.5	-0.36179
+86	-86.5	-0.36288
+87	-86.5	-0.36397
+88	-86.5	-0.36506
+89	-86.5	-0.36614
+90	-86.5	-0.36723
+91	-86.5	-0.36832
+92	-86.5	-0.36941
+93	-86.5	-0.3705
+94	-86.5	-0.37159
+95	-86.5	-0.37267
+96	-86.5	-0.37376
+97	-86.5	-0.37485
+98	-86.5	-0.37594
+99	-86.5	-0.37703
+100	-86.5	-0.37812
+101	-86.5	-0.3792
+102	-86.5	-0.38029
+103	-86.5	-0.38138
+104	-86.5	-0.38247
+105	-86.5	-0.38356
+106	-86.5	-0.38465
+107	-86.5	-0.38573
+108	-86.5	-0.38682
+109	-86.5	-0.38791
+110	-86.5	-0.389
+111	-86.5	-0.39009
+112	-86.5	-0.39118
+113	-86.5	-0.39226
+114	-86.5	-0.39481
+115	-86.5	-0.39868
+116	-86.5	-0.40256
+117	-86.5	-0.40643
+118	-86.5	-0.41031
+119	-86.5	-0.41418
+120	-86.5	-0.41806
+121	-86.5	-0.42193
+122	-86.5	-0.42581
+123	-86.5	-0.42968
+124	-86.5	-0.43356
+125	-86.5	-0.43743
+126	-86.5	-0.44131
+127	-86.5	-0.44518
+128	-86.5	-0.44906
+129	-86.5	-0.45293
+130	-86.5	-0.4568
+131	-86.5	-0.46068
+132	-86.5	-0.46455
+133	-86.5	-0.46843
+134	-86.5	-0.4723
+135	-86.5	-0.47618
+136	-86.5	-0.48005
+137	-86.5	-0.48393
+138	-86.5	-0.4878
+139	-86.5	-0.49168
+140	-86.5	-0.49555
+141	-86.5	-0.49943
+142	-86.5	-0.5033
+143	-86.5	-0.50718
+144	-86.5	-0.51105
+145	-86.5	-0.51493
+146	-86.5	-0.5188
+147	-86.5	-0.52267
+148	-86.5	-0.52655
+149	-86.5	-0.53042
+150	-86.5	-0.5343
+151	-86.5	-0.53817
+152	-86.5	-0.54205
+153	-86.5	-0.54592
+154	-86.5	-0.5498
+155	-86.5	-0.55367
+156	-86.5	-0.55755
+157	-86.5	-0.56142
+158	-86.5	-0.5653
+159	-86.5	-0.56917
+160	-86.5	-0.57305
+161	-86.5	-0.57692
+162	-86.5	-0.5808
+163	-86.5	-0.58467
+164	-86.5	-0.58854
+165	-86.5	-0.59242
+166	-86.5	-0.59629
+167	-86.5	-0.60017
+168	-86.5	-0.60404
+169	-86.5	-0.60792
+170	-86.5	-0.61179
+171	-86.5	-0.61567
+172	-86.5	-0.61954
+173	-86.5	-0.62342
+174	-86.5	-0.62729
+175	-86.5	-0.63117
+176	-86.5	-0.6354
+177	-86.5	-0.63988
+178	-86.5	-0.64436
+179	-86.5	-0.64885
+180	-86.5	-0.65333
+181	-86.5	-0.65782
+182	-86.5	-0.6623
+183	-86.5	-0.66678
+184	-86.5	-0.67127
+185	-86.5	-0.67575
+186	-86.5	-0.68023
+187	-86.5	-0.68472
+188	-86.5	-0.6892
+189	-86.5	-0.69369
+190	-86.5	-0.69817
+191	-86.5	-0.70265
+192	-86.5	-0.70714
+193	-86.5	-0.71162
+194	-86.5	-0.7161
+195	-86.5	-0.72059
+196	-86.5	-0.72507
+197	-86.5	-0.72956
+198	-86.5	-0.73404
+199	-86.5	-0.73852
+200	-86.5	-0.71623
+201	-86.5	-0.62871
+202	-86.5	-0.62445
+203	-86.5	-0.60154
+204	-86.5	-0.5719
+205	-86.5	-0.56412
+206	-86.5	-0.55633
+207	-86.5	-0.54855
+208	-86.5	-0.54076
+209	-86.5	-0.53298
+210	-86.5	-0.5252
+211	-86.5	-0.51741
+212	-86.5	-0.50963
+213	-86.5	-0.50184
+214	-86.5	-0.49406
+215	-86.5	-0.48627
+216	-86.5	-0.47849
+217	-86.5	-0.4707
+218	-86.5	-0.46292
+219	-86.5	-0.45513
+220	-86.5	-0.44735
+221	-86.5	-0.43957
+222	-86.5	-0.43178
+223	-86.5	-0.424
+224	-86.5	-0.41621
+225	-86.5	-0.40843
+226	-86.5	-0.40064
+227	-86.5	-0.39286
+228	-86.5	-0.38507
+229	-86.5	-0.37729
+230	-86.5	-0.3695
+231	-86.5	-0.36172
+232	-86.5	-0.35394
+233	-86.5	-0.34615
+234	-86.5	-0.33837
+235	-86.5	-0.33058
+236	-86.5	-0.3228
+237	-86.5	-0.31501
+238	-86.5	-0.30723
+239	-86.5	-0.29944
+240	-86.5	-0.29166
+241	-86.5	-0.28387
+242	-86.5	-0.27609
+243	-86.5	-0.26831
+244	-86.5	-0.21561
+245	-86.5	-0.13037
+246	-86.5	-0.12914
+247	-86.5	-0.72598
+248	-86.5	-0.17263
+249	-86.5	-0.21151
+250	-86.5	-0.22394
+251	-86.5	-0.23108
+252	-86.5	-0.23822
+253	-86.5	-0.24536
+254	-86.5	-0.2525
+255	-86.5	-0.25964
+256	-86.5	-0.26678
+257	-86.5	-0.27392
+258	-86.5	-0.28106
+259	-86.5	-0.28821
+260	-86.5	-0.29535
+261	-86.5	-0.30249
+262	-86.5	-0.30963
+263	-86.5	-0.31677
+264	-86.5	-0.32391
+265	-86.5	-0.33105
+266	-86.5	-0.33819
+267	-86.5	-0.34533
+268	-86.5	-0.35247
+269	-86.5	-0.35962
+270	-86.5	-0.36676
+271	-86.5	-0.3739
+272	-86.5	-0.38104
+273	-86.5	-0.38818
+274	-86.5	-0.39532
+275	-86.5	-0.40246
+276	-86.5	-0.4096
+277	-86.5	-0.41674
+278	-86.5	-0.42389
+279	-86.5	-0.43103
+280	-86.5	-0.43817
+281	-86.5	-0.44531
+282	-86.5	-0.45245
+283	-86.5	-0.45959
+284	-86.5	-0.46673
+285	-86.5	-0.47387
+286	-86.5	-0.48101
+287	-86.5	-0.48815
+288	-86.5	-0.4953
+289	-86.5	-0.50244
+290	-86.5	-0.50644
+291	-86.5	-0.50473
+292	-86.5	-0.50439
+293	-86.5	-0.50405
+294	-86.5	-0.50371
+295	-86.5	-0.50337
+296	-86.5	-0.50303
+297	-86.5	-0.50269
+298	-86.5	-0.50235
+299	-86.5	-0.502
+300	-86.5	-0.50166
+301	-86.5	-0.50132
+302	-86.5	-0.50098
+303	-86.5	-0.50064
+304	-86.5	-0.5003
+305	-86.5	-0.49996
+306	-86.5	-0.49962
+307	-86.5	-0.49928
+308	-86.5	-0.49894
+309	-86.5	-0.4986
+310	-86.5	-0.49825
+311	-86.5	-0.49791
+312	-86.5	-0.49757
+313	-86.5	-0.49723
+314	-86.5	-0.49689
+315	-86.5	-0.49655
+316	-86.5	-0.49621
+317	-86.5	-0.49587
+318	-86.5	-0.49553
+319	-86.5	-0.49519
+320	-86.5	-0.49485
+321	-86.5	-0.49451
+322	-86.5	-0.49416
+323	-86.5	-0.49382
+324	-86.5	-0.49348
+325	-86.5	-0.49314
+326	-86.5	-0.4928
+327	-86.5	-0.49246
+328	-86.5	-0.49212
+329	-86.5	-0.49178
+330	-86.5	-0.49144
+331	-86.5	-0.4911
+332	-86.5	-0.49076
+333	-86.5	-0.49041
+334	-86.5	-0.49007
+335	-86.5	-0.47435
+336	-86.5	-0.46969
+337	-86.5	-0.46503
+338	-86.5	-0.46037
+339	-86.5	-0.45571
+340	-86.5	-0.45105
+341	-86.5	-0.44639
+342	-86.5	-0.44173
+343	-86.5	-0.43707
+344	-86.5	-0.43241
+345	-86.5	-0.42775
+346	-86.5	-0.42309
+347	-86.5	-0.41843
+348	-86.5	-0.41377
+349	-86.5	-0.40911
+350	-86.5	-0.40445
+351	-86.5	-0.39979
+352	-86.5	-0.39513
+353	-86.5	-0.39047
+354	-86.5	-0.38581
+355	-86.5	-0.38115
+356	-86.5	-0.37649
+357	-86.5	-0.37183
+358	-86.5	-0.36717
+359	-86.5	-0.36251
+360	-86.5	-0.35785
+0	-86	-0.25189
+1	-86	-0.24723
+2	-86	-0.24257
+3	-86	-0.23791
+4	-86	-0.23325
+5	-86	-0.22859
+6	-86	-0.22393
+7	-86	-0.21927
+8	-86	-0.21461
+9	-86	-0.20995
+10	-86	-0.20529
+11	-86	-0.20063
+12	-86	-0.19597
+13	-86	-0.19131
+14	-86	-0.18665
+15	-86	-0.18199
+16	-86	-0.17733
+17	-86	-0.17267
+18	-86	-0.16801
+19	-86	-0.16335
+20	-86	-0.15946
+21	-86	-0.15586
+22	-86	-0.15226
+23	-86	-0.1418
+24	-86	-0.13639
+25	-86	-0.14015
+26	-86	-0.13378
+27	-86	-0.1274
+28	-86	-0.12567
+29	-86	-0.12979
+30	-86	-0.13391
+31	-86	-0.13803
+32	-86	-0.14215
+33	-86	-0.14627
+34	-86	-0.15039
+35	-86	-0.15451
+36	-86	-0.15863
+37	-86	-0.16275
+38	-86	-0.16687
+39	-86	-0.17099
+40	-86	-0.17511
+41	-86	-0.17923
+42	-86	-0.18335
+43	-86	-0.18747
+44	-86	-0.19159
+45	-86	-0.19571
+46	-86	-0.19983
+47	-86	-0.20395
+48	-86	-0.20808
+49	-86	-0.2122
+50	-86	-0.21632
+51	-86	-0.22044
+52	-86	-0.22456
+53	-86	-0.22868
+54	-86	-0.2328
+55	-86	-0.23692
+56	-86	-0.24104
+57	-86	-0.24516
+58	-86	-0.24928
+59	-86	-0.2534
+60	-86	-0.25752
+61	-86	-0.26164
+62	-86	-0.26576
+63	-86	-0.26988
+64	-86	-0.274
+65	-86	-0.27812
+66	-86	-0.28224
+67	-86	-0.28636
+68	-86	-0.29694
+69	-86	-0.3262
+70	-86	-0.33423
+71	-86	-0.33003
+72	-86	-0.3283
+73	-86	-0.32658
+74	-86	-0.32485
+75	-86	-0.32313
+76	-86	-0.3214
+77	-86	-0.31968
+78	-86	-0.31795
+79	-86	-0.31623
+80	-86	-0.31451
+81	-86	-0.31278
+82	-86	-0.31106
+83	-86	-0.30933
+84	-86	-0.30761
+85	-86	-0.30588
+86	-86	-0.30416
+87	-86	-0.30243
+88	-86	-0.30071
+89	-86	-0.29898
+90	-86	-0.29726
+91	-86	-0.29553
+92	-86	-0.29381
+93	-86	-0.29208
+94	-86	-0.29036
+95	-86	-0.28864
+96	-86	-0.28691
+97	-86	-0.28519
+98	-86	-0.28346
+99	-86	-0.28174
+100	-86	-0.28001
+101	-86	-0.27829
+102	-86	-0.27656
+103	-86	-0.27484
+104	-86	-0.27311
+105	-86	-0.27434
+106	-86	-0.27736
+107	-86	-0.28038
+108	-86	-0.28339
+109	-86	-0.28641
+110	-86	-0.28943
+111	-86	-0.29245
+112	-86	-0.29546
+113	-86	-0.29848
+114	-86	-0.3015
+115	-86	-0.30451
+116	-86	-0.30753
+117	-86	-0.31055
+118	-86	-0.31357
+119	-86	-0.31658
+120	-86	-0.3196
+121	-86	-0.32262
+122	-86	-0.32563
+123	-86	-0.32865
+124	-86	-0.33167
+125	-86	-0.33469
+126	-86	-0.3377
+127	-86	-0.34072
+128	-86	-0.34374
+129	-86	-0.34675
+130	-86	-0.34977
+131	-86	-0.35279
+132	-86	-0.35581
+133	-86	-0.35882
+134	-86	-0.36719
+135	-86	-0.3765
+136	-86	-0.38581
+137	-86	-0.39513
+138	-86	-0.40444
+139	-86	-0.41375
+140	-86	-0.42306
+141	-86	-0.43237
+142	-86	-0.44168
+143	-86	-0.45099
+144	-86	-0.4603
+145	-86	-0.46961
+146	-86	-0.47892
+147	-86	-0.48823
+148	-86	-0.49754
+149	-86	-0.50685
+150	-86	-0.51616
+151	-86	-0.52547
+152	-86	-0.53478
+153	-86	-0.54409
+154	-86	-0.5534
+155	-86	-0.56271
+156	-86	-0.57202
+157	-86	-0.58133
+158	-86	-0.59064
+159	-86	-0.59995
+160	-86	-0.60926
+161	-86	-0.61857
+162	-86	-0.62788
+163	-86	-0.63719
+164	-86	-0.6465
+165	-86	-0.68007
+166	-86	-0.82103
+167	-86	-0.91945
+168	-86	-0.93465
+169	-86	-0.94128
+170	-86	-0.94576
+171	-86	-0.95025
+172	-86	-0.95473
+173	-86	-0.95921
+174	-86	-0.9637
+175	-86	-0.96818
+176	-86	-0.97267
+177	-86	-0.97715
+178	-86	-0.98163
+179	-86	-0.98612
+180	-86	-0.9906
+181	-86	-0.99508
+182	-86	-0.99957
+183	-86	-1.0041
+184	-86	-1.0085
+185	-86	-1.013
+186	-86	-1.0175
+187	-86	-1.022
+188	-86	-1.0265
+189	-86	-1.031
+190	-86	-1.0354
+191	-86	-1.0399
+192	-86	-1.0444
+193	-86	-1.0489
+194	-86	-1.0534
+195	-86	-1.0579
+196	-86	-1.0623
+197	-86	-1.0668
+198	-86	-1.0396
+199	-86	-0.90297
+200	-86	-0.82857
+201	-86	-0.83841
+202	-86	-0.90362
+203	-86	-0.81365
+204	-86	-0.79457
+205	-86	-0.75306
+206	-86	-0.71552
+207	-86	-0.70773
+208	-86	-0.69995
+209	-86	-0.69216
+210	-86	-0.68438
+211	-86	-0.6766
+212	-86	-0.66881
+213	-86	-0.66103
+214	-86	-0.65324
+215	-86	-0.64546
+216	-86	-0.63767
+217	-86	-0.62989
+218	-86	-0.6221
+219	-86	-0.61432
+220	-86	-0.60653
+221	-86	-0.59875
+222	-86	-0.59097
+223	-86	-0.58318
+224	-86	-0.5754
+225	-86	-0.56761
+226	-86	-0.55983
+227	-86	-0.55204
+228	-86	-0.54426
+229	-86	-0.53647
+230	-86	-0.52869
+231	-86	-0.5209
+232	-86	-0.51312
+233	-86	-0.50534
+234	-86	-0.49755
+235	-86	-0.48977
+236	-86	-0.48198
+237	-86	-0.4742
+238	-86	-0.46641
+239	-86	-0.45758
+240	-86	-0.37235
+241	-86	-0.28712
+242	-86	-0.20188
+243	-86	-0.11665
+244	-86	-0.031419
+245	-86	-0.11519
+246	-86	-0.28694
+247	-86	-0.58212
+248	-86	-1.3259
+249	-86	-0.66
+250	-86	-0.24398
+251	-86	-0.28287
+252	-86	-0.32176
+253	-86	-0.34941
+254	-86	-0.35655
+255	-86	-0.36369
+256	-86	-0.37083
+257	-86	-0.37797
+258	-86	-0.38512
+259	-86	-0.39226
+260	-86	-0.3994
+261	-86	-0.40654
+262	-86	-0.41368
+263	-86	-0.42082
+264	-86	-0.42796
+265	-86	-0.4351
+266	-86	-0.44224
+267	-86	-0.44938
+268	-86	-0.45653
+269	-86	-0.46367
+270	-86	-0.47081
+271	-86	-0.47795
+272	-86	-0.48509
+273	-86	-0.49223
+274	-86	-0.49937
+275	-86	-0.50651
+276	-86	-0.51365
+277	-86	-0.52079
+278	-86	-0.52794
+279	-86	-0.53508
+280	-86	-0.54222
+281	-86	-0.54936
+282	-86	-0.5565
+283	-86	-0.56364
+284	-86	-0.57078
+285	-86	-0.57792
+286	-86	-0.58506
+287	-86	-0.59221
+288	-86	-0.59935
+289	-86	-0.57909
+290	-86	-0.61725
+291	-86	-0.63641
+292	-86	-0.65825
+293	-86	-0.63866
+294	-86	-0.58967
+295	-86	-0.55997
+296	-86	-0.55963
+297	-86	-0.55929
+298	-86	-0.55895
+299	-86	-0.55861
+300	-86	-0.55827
+301	-86	-0.55793
+302	-86	-0.55759
+303	-86	-0.55724
+304	-86	-0.5569
+305	-86	-0.55656
+306	-86	-0.55622
+307	-86	-0.55588
+308	-86	-0.55554
+309	-86	-0.5552
+310	-86	-0.55486
+311	-86	-0.55452
+312	-86	-0.55418
+313	-86	-0.55384
+314	-86	-0.55349
+315	-86	-0.55315
+316	-86	-0.55281
+317	-86	-0.55247
+318	-86	-0.55213
+319	-86	-0.55179
+320	-86	-0.55145
+321	-86	-0.55111
+322	-86	-0.55077
+323	-86	-0.55043
+324	-86	-0.55009
+325	-86	-0.54975
+326	-86	-0.5494
+327	-86	-0.54906
+328	-86	-0.54872
+329	-86	-0.54838
+330	-86	-0.54804
+331	-86	-0.5477
+332	-86	-0.54736
+333	-86	-0.51982
+334	-86	-0.46896
+335	-86	-0.42648
+336	-86	-0.37099
+337	-86	-0.35037
+338	-86	-0.35441
+339	-86	-0.34975
+340	-86	-0.34509
+341	-86	-0.34043
+342	-86	-0.33577
+343	-86	-0.33111
+344	-86	-0.32645
+345	-86	-0.32179
+346	-86	-0.31713
+347	-86	-0.31247
+348	-86	-0.30781
+349	-86	-0.30315
+350	-86	-0.29849
+351	-86	-0.29383
+352	-86	-0.28917
+353	-86	-0.28451
+354	-86	-0.27985
+355	-86	-0.27519
+356	-86	-0.27053
+357	-86	-0.26587
+358	-86	-0.26121
+359	-86	-0.25655
+360	-86	-0.25189
+0	-85.5	-0.14592
+1	-85.5	-0.14126
+2	-85.5	-0.1366
+3	-85.5	-0.13194
+4	-85.5	-0.12728
+5	-85.5	-0.12262
+6	-85.5	-0.11796
+7	-85.5	-0.1133
+8	-85.5	-0.10865
+9	-85.5	-0.10399
+10	-85.5	-0.099325
+11	-85.5	-0.094665
+12	-85.5	-0.090005
+13	-85.5	-0.085345
+14	-85.5	-0.080686
+15	-85.5	-0.076026
+16	-85.5	-0.071745
+17	-85.5	-0.068147
+18	-85.5	-0.064548
+19	-85.5	-0.060949
+20	-85.5	-0.05735
+21	-85.5	-0.049892
+22	-85.5	-0.039303
+23	-85.5	-0.031107
+24	-85.5	-0.029836
+25	-85.5	-0.037455
+26	-85.5	-0.032549
+27	-85.5	-0.026172
+28	-85.5	-0.019795
+29	-85.5	-0.013418
+30	-85.5	-0.0070406
+31	-85.5	-0.0095383
+32	-85.5	-0.013659
+33	-85.5	-0.017779
+34	-85.5	-0.021899
+35	-85.5	-0.02602
+36	-85.5	-0.03014
+37	-85.5	-0.034261
+38	-85.5	-0.038381
+39	-85.5	-0.042501
+40	-85.5	-0.046622
+41	-85.5	-0.050742
+42	-85.5	-0.054863
+43	-85.5	-0.058983
+44	-85.5	-0.063103
+45	-85.5	-0.067224
+46	-85.5	-0.071344
+47	-85.5	-0.075464
+48	-85.5	-0.079585
+49	-85.5	-0.083705
+50	-85.5	-0.087826
+51	-85.5	-0.091946
+52	-85.5	-0.096066
+53	-85.5	-0.10019
+54	-85.5	-0.10431
+55	-85.5	-0.10843
+56	-85.5	-0.11255
+57	-85.5	-0.11667
+58	-85.5	-0.12079
+59	-85.5	-0.12491
+60	-85.5	-0.12903
+61	-85.5	-0.13315
+62	-85.5	-0.13727
+63	-85.5	-0.14139
+64	-85.5	-0.14551
+65	-85.5	-0.14963
+66	-85.5	-0.17251
+67	-85.5	-0.2006
+68	-85.5	-0.22869
+69	-85.5	-0.26472
+70	-85.5	-0.29989
+71	-85.5	-0.28274
+72	-85.5	-0.27413
+73	-85.5	-0.26794
+74	-85.5	-0.26621
+75	-85.5	-0.26449
+76	-85.5	-0.26276
+77	-85.5	-0.26104
+78	-85.5	-0.25931
+79	-85.5	-0.25759
+80	-85.5	-0.25587
+81	-85.5	-0.25414
+82	-85.5	-0.25242
+83	-85.5	-0.25069
+84	-85.5	-0.24897
+85	-85.5	-0.24724
+86	-85.5	-0.24552
+87	-85.5	-0.24379
+88	-85.5	-0.24207
+89	-85.5	-0.24034
+90	-85.5	-0.23862
+91	-85.5	-0.23689
+92	-85.5	-0.23517
+93	-85.5	-0.23344
+94	-85.5	-0.23172
+95	-85.5	-0.22999
+96	-85.5	-0.22827
+97	-85.5	-0.22655
+98	-85.5	-0.22482
+99	-85.5	-0.2231
+100	-85.5	-0.22137
+101	-85.5	-0.21965
+102	-85.5	-0.21792
+103	-85.5	-0.2162
+104	-85.5	-0.21447
+105	-85.5	-0.21275
+106	-85.5	-0.21102
+107	-85.5	-0.2093
+108	-85.5	-0.20757
+109	-85.5	-0.20585
+110	-85.5	-0.20412
+111	-85.5	-0.2024
+112	-85.5	-0.20067
+113	-85.5	-0.19895
+114	-85.5	-0.19723
+115	-85.5	-0.1955
+116	-85.5	-0.19378
+117	-85.5	-0.19205
+118	-85.5	-0.19033
+119	-85.5	-0.1886
+120	-85.5	-0.18007
+121	-85.5	-0.19672
+122	-85.5	-0.19831
+123	-85.5	-0.2075
+124	-85.5	-0.21681
+125	-85.5	-0.22612
+126	-85.5	-0.23543
+127	-85.5	-0.24474
+128	-85.5	-0.25405
+129	-85.5	-0.26336
+130	-85.5	-0.27267
+131	-85.5	-0.28198
+132	-85.5	-0.29129
+133	-85.5	-0.3006
+134	-85.5	-0.30991
+135	-85.5	-0.31922
+136	-85.5	-0.32853
+137	-85.5	-0.33784
+138	-85.5	-0.34715
+139	-85.5	-0.35646
+140	-85.5	-0.36577
+141	-85.5	-0.37508
+142	-85.5	-0.38439
+143	-85.5	-0.3937
+144	-85.5	-0.40301
+145	-85.5	-0.41232
+146	-85.5	-0.42163
+147	-85.5	-0.43094
+148	-85.5	-0.44025
+149	-85.5	-0.44956
+150	-85.5	-0.45887
+151	-85.5	-0.46818
+152	-85.5	-0.47749
+153	-85.5	-0.4868
+154	-85.5	-0.49611
+155	-85.5	-0.50542
+156	-85.5	-0.51473
+157	-85.5	-0.52404
+158	-85.5	-0.53335
+159	-85.5	-0.54266
+160	-85.5	-0.55197
+161	-85.5	-0.56128
+162	-85.5	-0.5732
+163	-85.5	-0.59596
+164	-85.5	-0.66291
+165	-85.5	-0.74287
+166	-85.5	-0.91241
+167	-85.5	-1.1513
+168	-85.5	-1.2327
+169	-85.5	-1.2479
+170	-85.5	-1.2631
+171	-85.5	-1.2783
+172	-85.5	-1.292
+173	-85.5	-1.2965
+174	-85.5	-1.301
+175	-85.5	-1.3054
+176	-85.5	-1.3099
+177	-85.5	-1.3144
+178	-85.5	-1.3189
+179	-85.5	-1.3234
+180	-85.5	-1.3279
+181	-85.5	-1.3324
+182	-85.5	-1.3368
+183	-85.5	-1.3413
+184	-85.5	-1.3458
+185	-85.5	-1.3503
+186	-85.5	-1.3548
+187	-85.5	-1.3593
+188	-85.5	-1.3637
+189	-85.5	-1.3682
+190	-85.5	-1.3727
+191	-85.5	-1.3772
+192	-85.5	-1.3817
+193	-85.5	-1.3862
+194	-85.5	-1.3906
+195	-85.5	-1.3951
+196	-85.5	-1.3629
+197	-85.5	-1.2263
+198	-85.5	-1.0897
+199	-85.5	-1.0284
+200	-85.5	-1.0356
+201	-85.5	-1.1602
+202	-85.5	-1.2237
+203	-85.5	-1.0162
+204	-85.5	-1.0029
+205	-85.5	-0.9876
+206	-85.5	-0.94609
+207	-85.5	-0.90457
+208	-85.5	-0.86305
+209	-85.5	-0.85135
+210	-85.5	-0.84356
+211	-85.5	-0.83578
+212	-85.5	-0.828
+213	-85.5	-0.82021
+214	-85.5	-0.81243
+215	-85.5	-0.80464
+216	-85.5	-0.79686
+217	-85.5	-0.78907
+218	-85.5	-0.78129
+219	-85.5	-0.7735
+220	-85.5	-0.76572
+221	-85.5	-0.75793
+222	-85.5	-0.75015
+223	-85.5	-0.74237
+224	-85.5	-0.73458
+225	-85.5	-0.7268
+226	-85.5	-0.71901
+227	-85.5	-0.71123
+228	-85.5	-0.70344
+229	-85.5	-0.69566
+230	-85.5	-0.68787
+231	-85.5	-0.68009
+232	-85.5	-0.6723
+233	-85.5	-0.66452
+234	-85.5	-0.65674
+235	-85.5	-0.61432
+236	-85.5	-0.52909
+237	-85.5	-0.44386
+238	-85.5	-0.35863
+239	-85.5	-0.27339
+240	-85.5	-0.18816
+241	-85.5	-0.10293
+242	-85.5	-0.017697
+243	-85.5	0.067535
+244	-85.5	-0.10125
+245	-85.5	-0.273
+246	-85.5	-0.44475
+247	-85.5	-0.61649
+248	-85.5	-2.3797
+249	-85.5	-1.9259
+250	-85.5	-1.2491
+251	-85.5	-0.49036
+252	-85.5	-0.31533
+253	-85.5	-0.35422
+254	-85.5	-0.39311
+255	-85.5	-0.432
+256	-85.5	-0.47089
+257	-85.5	-0.48203
+258	-85.5	-0.48917
+259	-85.5	-0.49631
+260	-85.5	-0.50345
+261	-85.5	-0.51059
+262	-85.5	-0.51773
+263	-85.5	-0.52487
+264	-85.5	-0.53201
+265	-85.5	-0.53915
+266	-85.5	-0.54629
+267	-85.5	-0.55344
+268	-85.5	-0.56058
+269	-85.5	-0.56772
+270	-85.5	-0.57486
+271	-85.5	-0.582
+272	-85.5	-0.58914
+273	-85.5	-0.59628
+274	-85.5	-0.60342
+275	-85.5	-0.61056
+276	-85.5	-0.6177
+277	-85.5	-0.62485
+278	-85.5	-0.63199
+279	-85.5	-0.63913
+280	-85.5	-0.64627
+281	-85.5	-0.65341
+282	-85.5	-0.66055
+283	-85.5	-0.66769
+284	-85.5	-0.67483
+285	-85.5	-0.68197
+286	-85.5	-0.68912
+287	-85.5	-0.68084
+288	-85.5	-0.65833
+289	-85.5	-0.70831
+290	-85.5	-0.76575
+291	-85.5	-0.65518
+292	-85.5	-0.75376
+293	-85.5	-0.81208
+294	-85.5	-0.80751
+295	-85.5	-0.79497
+296	-85.5	-0.77089
+297	-85.5	-0.72189
+298	-85.5	-0.67289
+299	-85.5	-0.62389
+300	-85.5	-0.61487
+301	-85.5	-0.61453
+302	-85.5	-0.61419
+303	-85.5	-0.61385
+304	-85.5	-0.61351
+305	-85.5	-0.61317
+306	-85.5	-0.61283
+307	-85.5	-0.61248
+308	-85.5	-0.61214
+309	-85.5	-0.6118
+310	-85.5	-0.61146
+311	-85.5	-0.61112
+312	-85.5	-0.61078
+313	-85.5	-0.61044
+314	-85.5	-0.6101
+315	-85.5	-0.60976
+316	-85.5	-0.60942
+317	-85.5	-0.60908
+318	-85.5	-0.60873
+319	-85.5	-0.60839
+320	-85.5	-0.60805
+321	-85.5	-0.60771
+322	-85.5	-0.60737
+323	-85.5	-0.60703
+324	-85.5	-0.60669
+325	-85.5	-0.60635
+326	-85.5	-0.60601
+327	-85.5	-0.60567
+328	-85.5	-0.60533
+329	-85.5	-0.60499
+330	-85.5	-0.60315
+331	-85.5	-0.56606
+332	-85.5	-0.52896
+333	-85.5	-0.48252
+334	-85.5	-0.38816
+335	-85.5	-0.4254
+336	-85.5	-0.31903
+337	-85.5	-0.2727
+338	-85.5	-0.22637
+339	-85.5	-0.22622
+340	-85.5	-0.23747
+341	-85.5	-0.23446
+342	-85.5	-0.2298
+343	-85.5	-0.22514
+344	-85.5	-0.22048
+345	-85.5	-0.21582
+346	-85.5	-0.21116
+347	-85.5	-0.2065
+348	-85.5	-0.20184
+349	-85.5	-0.19718
+350	-85.5	-0.19252
+351	-85.5	-0.18786
+352	-85.5	-0.1832
+353	-85.5	-0.17854
+354	-85.5	-0.17388
+355	-85.5	-0.16922
+356	-85.5	-0.16456
+357	-85.5	-0.1599
+358	-85.5	-0.15524
+359	-85.5	-0.15058
+360	-85.5	-0.14592
+0	-85	-0.03996
+1	-85	-0.0353
+2	-85	-0.03064
+3	-85	-0.02598
+4	-85	-0.02132
+5	-85	-0.01666
+6	-85	-0.012
+7	-85	-0.0073405
+8	-85	-0.0026806
+9	-85	0.0019794
+10	-85	0.0066393
+11	-85	0.011299
+12	-85	0.015959
+13	-85	0.019566
+14	-85	0.023164
+15	-85	0.026763
+16	-85	0.030362
+17	-85	0.03396
+18	-85	0.037559
+19	-85	0.042022
+20	-85	0.05261
+21	-85	0.063199
+22	-85	0.073354
+23	-85	0.07825
+24	-85	0.076717
+25	-85	0.067108
+26	-85	0.068677
+27	-85	0.075054
+28	-85	0.081431
+29	-85	0.087809
+30	-85	0.094186
+31	-85	0.10056
+32	-85	0.10694
+33	-85	0.11071
+34	-85	0.10659
+35	-85	0.10247
+36	-85	0.09835
+37	-85	0.09423
+38	-85	0.090109
+39	-85	0.085989
+40	-85	0.081869
+41	-85	0.077748
+42	-85	0.073628
+43	-85	0.069507
+44	-85	0.065387
+45	-85	0.061267
+46	-85	0.057146
+47	-85	0.053026
+48	-85	0.048906
+49	-85	0.044785
+50	-85	0.040665
+51	-85	0.036544
+52	-85	0.032424
+53	-85	0.028304
+54	-85	0.024183
+55	-85	0.020063
+56	-85	0.015942
+57	-85	0.011822
+58	-85	0.0077017
+59	-85	0.0035813
+60	-85	-0.00053909
+61	-85	-0.0046595
+62	-85	-0.0087799
+63	-85	-0.019983
+64	-85	-0.048073
+65	-85	-0.076164
+66	-85	-0.10425
+67	-85	-0.13234
+68	-85	-0.16044
+69	-85	-0.20324
+70	-85	-0.25514
+71	-85	-0.24897
+72	-85	-0.23126
+73	-85	-0.22264
+74	-85	-0.21403
+75	-85	-0.20585
+76	-85	-0.20412
+77	-85	-0.2024
+78	-85	-0.20067
+79	-85	-0.19895
+80	-85	-0.19722
+81	-85	-0.1955
+82	-85	-0.19378
+83	-85	-0.19205
+84	-85	-0.19033
+85	-85	-0.1886
+86	-85	-0.18688
+87	-85	-0.18515
+88	-85	-0.18343
+89	-85	-0.1817
+90	-85	-0.17998
+91	-85	-0.17825
+92	-85	-0.17653
+93	-85	-0.1748
+94	-85	-0.17308
+95	-85	-0.17135
+96	-85	-0.16963
+97	-85	-0.1679
+98	-85	-0.16618
+99	-85	-0.16446
+100	-85	-0.16273
+101	-85	-0.16101
+102	-85	-0.15928
+103	-85	-0.15756
+104	-85	-0.15583
+105	-85	-0.15411
+106	-85	-0.15238
+107	-85	-0.15066
+108	-85	-0.14893
+109	-85	-0.14721
+110	-85	-0.14548
+111	-85	-0.14376
+112	-85	-0.14203
+113	-85	-0.14031
+114	-85	-0.13859
+115	-85	-0.13686
+116	-85	-0.13514
+117	-85	-0.13341
+118	-85	-0.12797
+119	-85	-0.11388
+120	-85	-0.13769
+121	-85	-0.1635
+122	-85	-0.14147
+123	-85	-0.15061
+124	-85	-0.15976
+125	-85	-0.16891
+126	-85	-0.17814
+127	-85	-0.18745
+128	-85	-0.19676
+129	-85	-0.20607
+130	-85	-0.21538
+131	-85	-0.22469
+132	-85	-0.234
+133	-85	-0.24331
+134	-85	-0.25262
+135	-85	-0.26193
+136	-85	-0.27124
+137	-85	-0.28055
+138	-85	-0.28986
+139	-85	-0.29917
+140	-85	-0.30848
+141	-85	-0.31779
+142	-85	-0.3271
+143	-85	-0.33641
+144	-85	-0.34572
+145	-85	-0.35503
+146	-85	-0.36434
+147	-85	-0.37365
+148	-85	-0.38296
+149	-85	-0.39227
+150	-85	-0.40158
+151	-85	-0.41089
+152	-85	-0.4202
+153	-85	-0.42951
+154	-85	-0.43882
+155	-85	-0.44813
+156	-85	-0.45744
+157	-85	-0.46675
+158	-85	-0.47606
+159	-85	-0.48537
+160	-85	-0.50221
+161	-85	-0.52497
+162	-85	-0.54773
+163	-85	-0.64575
+164	-85	-0.75259
+165	-85	-0.78048
+166	-85	-0.97884
+167	-85	-1.2427
+168	-85	-1.4816
+169	-85	-1.546
+170	-85	-1.5612
+171	-85	-1.5764
+172	-85	-1.5916
+173	-85	-1.6068
+174	-85	-1.622
+175	-85	-1.6372
+176	-85	-1.6472
+177	-85	-1.6517
+178	-85	-1.6562
+179	-85	-1.6607
+180	-85	-1.6651
+181	-85	-1.6696
+182	-85	-1.6741
+183	-85	-1.6786
+184	-85	-1.6831
+185	-85	-1.6876
+186	-85	-1.692
+187	-85	-1.6965
+188	-85	-1.701
+189	-85	-1.7055
+190	-85	-1.71
+191	-85	-1.7145
+192	-85	-1.7189
+193	-85	-1.7234
+194	-85	-1.6863
+195	-85	-1.5497
+196	-85	-1.4131
+197	-85	-1.2764
+198	-85	-1.2283
+199	-85	-1.2355
+200	-85	-1.2427
+201	-85	-1.4821
+202	-85	-1.5438
+203	-85	-1.2187
+204	-85	-1.2054
+205	-85	-1.1921
+206	-85	-1.1787
+207	-85	-1.1391
+208	-85	-1.0976
+209	-85	-1.0561
+210	-85	-1.0146
+211	-85	-0.99496
+212	-85	-0.98718
+213	-85	-0.9794
+214	-85	-0.97161
+215	-85	-0.96383
+216	-85	-0.95604
+217	-85	-0.94826
+218	-85	-0.94047
+219	-85	-0.93269
+220	-85	-0.9249
+221	-85	-0.91712
+222	-85	-0.90933
+223	-85	-0.90155
+224	-85	-0.89377
+225	-85	-0.88598
+226	-85	-0.8782
+227	-85	-0.87041
+228	-85	-0.86263
+229	-85	-0.85484
+230	-85	-0.84706
+231	-85	-0.77107
+232	-85	-0.68583
+233	-85	-0.6006
+234	-85	-0.51537
+235	-85	-0.43014
+236	-85	-0.3449
+237	-85	-0.25967
+238	-85	-0.17444
+239	-85	-0.089207
+240	-85	-0.0039745
+241	-85	0.081258
+242	-85	0.08444
+243	-85	-0.087307
+244	-85	-0.25905
+245	-85	-0.4308
+246	-85	-0.60255
+247	-85	-0.7743
+248	-85	-2.3907
+249	-85	-2.9796
+250	-85	-2.5258
+251	-85	-1.8383
+252	-85	-1.0795
+253	-85	-0.3478
+254	-85	-0.38668
+255	-85	-0.42557
+256	-85	-0.46446
+257	-85	-0.50335
+258	-85	-0.54224
+259	-85	-0.58113
+260	-85	-0.6075
+261	-85	-0.61464
+262	-85	-0.62178
+263	-85	-0.62892
+264	-85	-0.63606
+265	-85	-0.6432
+266	-85	-0.65035
+267	-85	-0.65749
+268	-85	-0.66463
+269	-85	-0.67177
+270	-85	-0.67891
+271	-85	-0.68605
+272	-85	-0.69319
+273	-85	-0.70033
+274	-85	-0.70747
+275	-85	-0.71461
+276	-85	-0.72176
+277	-85	-0.7289
+278	-85	-0.73604
+279	-85	-0.74318
+280	-85	-0.75032
+281	-85	-0.75746
+282	-85	-0.7646
+283	-85	-0.77174
+284	-85	-0.77888
+285	-85	-0.78259
+286	-85	-0.76008
+287	-85	-0.73757
+288	-85	-0.7549
+289	-85	-0.84036
+290	-85	-0.91425
+291	-85	-0.73753
+292	-85	-0.77692
+293	-85	-0.87111
+294	-85	-0.92943
+295	-85	-0.96932
+296	-85	-0.95677
+297	-85	-0.94423
+298	-85	-0.93168
+299	-85	-0.90311
+300	-85	-0.85411
+301	-85	-0.80512
+302	-85	-0.75612
+303	-85	-0.70712
+304	-85	-0.67011
+305	-85	-0.66977
+306	-85	-0.66943
+307	-85	-0.66909
+308	-85	-0.66875
+309	-85	-0.66841
+310	-85	-0.66807
+311	-85	-0.66772
+312	-85	-0.66738
+313	-85	-0.66704
+314	-85	-0.6667
+315	-85	-0.66636
+316	-85	-0.66602
+317	-85	-0.66568
+318	-85	-0.66534
+319	-85	-0.665
+320	-85	-0.66466
+321	-85	-0.66432
+322	-85	-0.66398
+323	-85	-0.66363
+324	-85	-0.66329
+325	-85	-0.66295
+326	-85	-0.66261
+327	-85	-0.66227
+328	-85	-0.64939
+329	-85	-0.61229
+330	-85	-0.5752
+331	-85	-0.53811
+332	-85	-0.49607
+333	-85	-0.40172
+334	-85	-0.3328
+335	-85	-0.42432
+336	-85	-0.26707
+337	-85	-0.22074
+338	-85	-0.17441
+339	-85	-0.12807
+340	-85	-0.090826
+341	-85	-0.10208
+342	-85	-0.11333
+343	-85	-0.11918
+344	-85	-0.11452
+345	-85	-0.10986
+346	-85	-0.1052
+347	-85	-0.10054
+348	-85	-0.095879
+349	-85	-0.091219
+350	-85	-0.086559
+351	-85	-0.081899
+352	-85	-0.077239
+353	-85	-0.072579
+354	-85	-0.06792
+355	-85	-0.06326
+356	-85	-0.0586
+357	-85	-0.05394
+358	-85	-0.04928
+359	-85	-0.04462
+360	-85	-0.03996
+0	-84.5	0.066005
+1	-84.5	0.070664
+2	-84.5	0.075324
+3	-84.5	0.079984
+4	-84.5	0.084644
+5	-84.5	0.089304
+6	-84.5	0.093964
+7	-84.5	0.098624
+8	-84.5	0.10328
+9	-84.5	0.10728
+10	-84.5	0.11088
+11	-84.5	0.11448
+12	-84.5	0.11807
+13	-84.5	0.12167
+14	-84.5	0.12527
+15	-84.5	0.12887
+16	-84.5	0.13247
+17	-84.5	0.13607
+18	-84.5	0.14452
+19	-84.5	0.15511
+20	-84.5	0.1657
+21	-84.5	0.17629
+22	-84.5	0.18271
+23	-84.5	0.18761
+24	-84.5	0.18327
+25	-84.5	0.17167
+26	-84.5	0.17099
+27	-84.5	0.17628
+28	-84.5	0.18266
+29	-84.5	0.18903
+30	-84.5	0.19541
+31	-84.5	0.20179
+32	-84.5	0.20817
+33	-84.5	0.21454
+34	-84.5	0.22092
+35	-84.5	0.2273
+36	-84.5	0.22684
+37	-84.5	0.22272
+38	-84.5	0.2186
+39	-84.5	0.21448
+40	-84.5	0.21036
+41	-84.5	0.20624
+42	-84.5	0.20212
+43	-84.5	0.198
+44	-84.5	0.19388
+45	-84.5	0.18976
+46	-84.5	0.18564
+47	-84.5	0.18152
+48	-84.5	0.1774
+49	-84.5	0.17328
+50	-84.5	0.16916
+51	-84.5	0.16503
+52	-84.5	0.16091
+53	-84.5	0.15679
+54	-84.5	0.15267
+55	-84.5	0.14855
+56	-84.5	0.14443
+57	-84.5	0.14031
+58	-84.5	0.13619
+59	-84.5	0.13207
+60	-84.5	0.12795
+61	-84.5	0.10445
+62	-84.5	0.07636
+63	-84.5	0.048269
+64	-84.5	0.020179
+65	-84.5	-0.0079117
+66	-84.5	-0.036002
+67	-84.5	-0.064093
+68	-84.5	-0.092183
+69	-84.5	-0.14175
+70	-84.5	-0.19365
+71	-84.5	-0.21835
+72	-84.5	-0.19806
+73	-84.5	-0.17977
+74	-84.5	-0.17115
+75	-84.5	-0.16254
+76	-84.5	-0.15393
+77	-84.5	-0.14532
+78	-84.5	-0.14203
+79	-84.5	-0.14031
+80	-84.5	-0.13858
+81	-84.5	-0.13686
+82	-84.5	-0.13514
+83	-84.5	-0.13341
+84	-84.5	-0.13169
+85	-84.5	-0.12996
+86	-84.5	-0.12824
+87	-84.5	-0.12651
+88	-84.5	-0.12479
+89	-84.5	-0.12306
+90	-84.5	-0.12134
+91	-84.5	-0.11961
+92	-84.5	-0.11789
+93	-84.5	-0.11616
+94	-84.5	-0.11444
+95	-84.5	-0.11271
+96	-84.5	-0.11099
+97	-84.5	-0.10926
+98	-84.5	-0.10754
+99	-84.5	-0.10582
+100	-84.5	-0.10409
+101	-84.5	-0.10237
+102	-84.5	-0.10064
+103	-84.5	-0.098916
+104	-84.5	-0.097192
+105	-84.5	-0.095467
+106	-84.5	-0.093742
+107	-84.5	-0.092018
+108	-84.5	-0.090293
+109	-84.5	-0.088568
+110	-84.5	-0.086844
+111	-84.5	-0.085119
+112	-84.5	-0.083394
+113	-84.5	-0.081669
+114	-84.5	-0.079945
+115	-84.5	-0.07822
+116	-84.5	-0.075874
+117	-84.5	-0.061782
+118	-84.5	-0.047689
+119	-84.5	-0.057573
+120	-84.5	-0.10621
+121	-84.5	-0.13028
+122	-84.5	-0.098514
+123	-84.5	-0.09377
+124	-84.5	-0.10292
+125	-84.5	-0.11206
+126	-84.5	-0.12121
+127	-84.5	-0.13036
+128	-84.5	-0.13951
+129	-84.5	-0.14878
+130	-84.5	-0.15809
+131	-84.5	-0.1674
+132	-84.5	-0.17671
+133	-84.5	-0.18602
+134	-84.5	-0.19533
+135	-84.5	-0.20464
+136	-84.5	-0.21395
+137	-84.5	-0.22326
+138	-84.5	-0.23257
+139	-84.5	-0.24188
+140	-84.5	-0.25119
+141	-84.5	-0.2605
+142	-84.5	-0.26981
+143	-84.5	-0.27912
+144	-84.5	-0.28843
+145	-84.5	-0.29774
+146	-84.5	-0.30706
+147	-84.5	-0.31637
+148	-84.5	-0.32568
+149	-84.5	-0.33499
+150	-84.5	-0.3443
+151	-84.5	-0.35361
+152	-84.5	-0.36292
+153	-84.5	-0.37223
+154	-84.5	-0.38154
+155	-84.5	-0.39085
+156	-84.5	-0.40016
+157	-84.5	-0.40947
+158	-84.5	-0.43122
+159	-84.5	-0.45398
+160	-84.5	-0.47674
+161	-84.5	-0.51599
+162	-84.5	-0.62859
+163	-84.5	-0.74118
+164	-84.5	-0.79019
+165	-84.5	-0.81809
+166	-84.5	-1.0452
+167	-84.5	-1.3341
+168	-84.5	-1.573
+169	-84.5	-1.8119
+170	-84.5	-1.8593
+171	-84.5	-1.8745
+172	-84.5	-1.8897
+173	-84.5	-1.9049
+174	-84.5	-1.9201
+175	-84.5	-1.9353
+176	-84.5	-1.9505
+177	-84.5	-1.9657
+178	-84.5	-1.9809
+179	-84.5	-1.9961
+180	-84.5	-2.0024
+181	-84.5	-2.0069
+182	-84.5	-2.0114
+183	-84.5	-2.0159
+184	-84.5	-2.0203
+185	-84.5	-2.0248
+186	-84.5	-2.0293
+187	-84.5	-2.0338
+188	-84.5	-2.0383
+189	-84.5	-2.0428
+190	-84.5	-2.0472
+191	-84.5	-2.0517
+192	-84.5	-2.0096
+193	-84.5	-1.873
+194	-84.5	-1.7364
+195	-84.5	-1.5998
+196	-84.5	-1.4632
+197	-84.5	-1.4282
+198	-84.5	-1.4353
+199	-84.5	-1.4425
+200	-84.5	-1.46
+201	-84.5	-1.8039
+202	-84.5	-1.864
+203	-84.5	-1.4439
+204	-84.5	-1.4079
+205	-84.5	-1.3946
+206	-84.5	-1.3813
+207	-84.5	-1.3679
+208	-84.5	-1.3321
+209	-84.5	-1.2906
+210	-84.5	-1.2491
+211	-84.5	-1.2076
+212	-84.5	-1.1661
+213	-84.5	-1.1386
+214	-84.5	-1.1308
+215	-84.5	-1.123
+216	-84.5	-1.1152
+217	-84.5	-1.1074
+218	-84.5	-1.0997
+219	-84.5	-1.0919
+220	-84.5	-1.0841
+221	-84.5	-1.0763
+222	-84.5	-1.0685
+223	-84.5	-1.0607
+224	-84.5	-1.053
+225	-84.5	-1.0452
+226	-84.5	-1.013
+227	-84.5	-0.92781
+228	-84.5	-0.84258
+229	-84.5	-0.75734
+230	-84.5	-0.67211
+231	-84.5	-0.58688
+232	-84.5	-0.50165
+233	-84.5	-0.41641
+234	-84.5	-0.33118
+235	-84.5	-0.24595
+236	-84.5	-0.16072
+237	-84.5	-0.075484
+238	-84.5	0.009748
+239	-84.5	0.09498
+240	-84.5	0.18021
+241	-84.5	0.098384
+242	-84.5	-0.073364
+243	-84.5	-0.24511
+244	-84.5	-0.41686
+245	-84.5	-0.58861
+246	-84.5	-0.76035
+247	-84.5	-0.9321
+248	-84.5	-2.1975
+249	-84.5	-4.0334
+250	-84.5	-3.5796
+251	-84.5	-3.1258
+252	-84.5	-2.4274
+253	-84.5	-1.6686
+254	-84.5	-0.90986
+255	-84.5	-0.41915
+256	-84.5	-0.45804
+257	-84.5	-0.49693
+258	-84.5	-0.53582
+259	-84.5	-0.5747
+260	-84.5	-0.61359
+261	-84.5	-0.65248
+262	-84.5	-0.69137
+263	-84.5	-0.73026
+264	-84.5	-0.74011
+265	-84.5	-0.74726
+266	-84.5	-0.7544
+267	-84.5	-0.76154
+268	-84.5	-0.76868
+269	-84.5	-0.77582
+270	-84.5	-0.78296
+271	-84.5	-0.7901
+272	-84.5	-0.79724
+273	-84.5	-0.80438
+274	-84.5	-0.81152
+275	-84.5	-0.81867
+276	-84.5	-0.82581
+277	-84.5	-0.83295
+278	-84.5	-0.84009
+279	-84.5	-0.84723
+280	-84.5	-0.85437
+281	-84.5	-0.86151
+282	-84.5	-0.86865
+283	-84.5	-0.87579
+284	-84.5	-0.86183
+285	-84.5	-0.83932
+286	-84.5	-0.81681
+287	-84.5	-0.8015
+288	-84.5	-0.88695
+289	-84.5	-0.9724
+290	-84.5	-1.0579
+291	-84.5	-0.88603
+292	-84.5	-0.78034
+293	-84.5	-0.89866
+294	-84.5	-0.98847
+295	-84.5	-1.0468
+296	-84.5	-1.1051
+297	-84.5	-1.1186
+298	-84.5	-1.106
+299	-84.5	-1.0935
+300	-84.5	-1.0809
+301	-84.5	-1.0684
+302	-84.5	-1.0353
+303	-84.5	-0.98634
+304	-84.5	-0.93734
+305	-84.5	-0.88834
+306	-84.5	-0.83934
+307	-84.5	-0.79035
+308	-84.5	-0.74135
+309	-84.5	-0.72501
+310	-84.5	-0.72467
+311	-84.5	-0.72433
+312	-84.5	-0.72399
+313	-84.5	-0.72365
+314	-84.5	-0.72331
+315	-84.5	-0.72296
+316	-84.5	-0.72262
+317	-84.5	-0.72228
+318	-84.5	-0.72194
+319	-84.5	-0.7216
+320	-84.5	-0.72126
+321	-84.5	-0.72092
+322	-84.5	-0.72058
+323	-84.5	-0.72024
+324	-84.5	-0.7199
+325	-84.5	-0.71956
+326	-84.5	-0.69562
+327	-84.5	-0.65853
+328	-84.5	-0.62143
+329	-84.5	-0.58434
+330	-84.5	-0.54725
+331	-84.5	-0.50963
+332	-84.5	-0.41527
+333	-84.5	-0.32091
+334	-84.5	-0.31716
+335	-84.5	-0.42325
+336	-84.5	-0.21511
+337	-84.5	-0.16878
+338	-84.5	-0.12245
+339	-84.5	-0.076112
+340	-84.5	-0.029779
+341	-84.5	0.016554
+342	-84.5	0.033319
+343	-84.5	0.022068
+344	-84.5	0.010816
+345	-84.5	-0.00043476
+346	-84.5	0.00076553
+347	-84.5	0.0054255
+348	-84.5	0.010085
+349	-84.5	0.014745
+350	-84.5	0.019405
+351	-84.5	0.024065
+352	-84.5	0.028725
+353	-84.5	0.033385
+354	-84.5	0.038045
+355	-84.5	0.042705
+356	-84.5	0.047365
+357	-84.5	0.052025
+358	-84.5	0.056685
+359	-84.5	0.061345
+360	-84.5	0.066005
+0	-84	0.17197
+1	-84	0.17663
+2	-84	0.18129
+3	-84	0.18595
+4	-84	0.19061
+5	-84	0.19499
+6	-84	0.19859
+7	-84	0.20219
+8	-84	0.20579
+9	-84	0.20938
+10	-84	0.21298
+11	-84	0.21658
+12	-84	0.22018
+13	-84	0.22378
+14	-84	0.22738
+15	-84	0.23098
+16	-84	0.23644
+17	-84	0.24703
+18	-84	0.25761
+19	-84	0.2682
+20	-84	0.27879
+21	-84	0.28717
+22	-84	0.29207
+23	-84	0.29696
+24	-84	0.28982
+25	-84	0.27624
+26	-84	0.27556
+27	-84	0.27751
+28	-84	0.28388
+29	-84	0.29026
+30	-84	0.29664
+31	-84	0.30302
+32	-84	0.30939
+33	-84	0.31577
+34	-84	0.32215
+35	-84	0.32852
+36	-84	0.3349
+37	-84	0.34128
+38	-84	0.34709
+39	-84	0.34297
+40	-84	0.33885
+41	-84	0.33473
+42	-84	0.33061
+43	-84	0.32649
+44	-84	0.32237
+45	-84	0.31825
+46	-84	0.31413
+47	-84	0.31001
+48	-84	0.30589
+49	-84	0.30177
+50	-84	0.29765
+51	-84	0.29353
+52	-84	0.2894
+53	-84	0.28528
+54	-84	0.28116
+55	-84	0.27704
+56	-84	0.27292
+57	-84	0.2688
+58	-84	0.25697
+59	-84	0.22888
+60	-84	0.20079
+61	-84	0.1727
+62	-84	0.14461
+63	-84	0.11652
+64	-84	0.088431
+65	-84	0.06034
+66	-84	0.03225
+67	-84	0.0041593
+68	-84	-0.028375
+69	-84	-0.080275
+70	-84	-0.13217
+71	-84	-0.18407
+72	-84	-0.16743
+73	-84	-0.14715
+74	-84	-0.12828
+75	-84	-0.11967
+76	-84	-0.11105
+77	-84	-0.10244
+78	-84	-0.093827
+79	-84	-0.085214
+80	-84	-0.079944
+81	-84	-0.07822
+82	-84	-0.076495
+83	-84	-0.07477
+84	-84	-0.073045
+85	-84	-0.071321
+86	-84	-0.069596
+87	-84	-0.067871
+88	-84	-0.066147
+89	-84	-0.064422
+90	-84	-0.062697
+91	-84	-0.060973
+92	-84	-0.059248
+93	-84	-0.057523
+94	-84	-0.055798
+95	-84	-0.054074
+96	-84	-0.052349
+97	-84	-0.050624
+98	-84	-0.0489
+99	-84	-0.047175
+100	-84	-0.04545
+101	-84	-0.043726
+102	-84	-0.042001
+103	-84	-0.040276
+104	-84	-0.038551
+105	-84	-0.036827
+106	-84	-0.035102
+107	-84	-0.033377
+108	-84	-0.031653
+109	-84	-0.029928
+110	-84	-0.028203
+111	-84	-0.026479
+112	-84	-0.024754
+113	-84	-0.023029
+114	-84	-0.021304
+115	-84	-0.0096858
+116	-84	0.0044064
+117	-84	0.018499
+118	-84	0.02254
+119	-84	-0.026099
+120	-84	-0.074739
+121	-84	-0.097061
+122	-84	-0.065295
+123	-84	-0.036924
+124	-84	-0.046072
+125	-84	-0.055219
+126	-84	-0.064366
+127	-84	-0.073513
+128	-84	-0.08266
+129	-84	-0.091808
+130	-84	-0.10095
+131	-84	-0.11012
+132	-84	-0.11943
+133	-84	-0.12874
+134	-84	-0.13805
+135	-84	-0.14736
+136	-84	-0.15667
+137	-84	-0.16598
+138	-84	-0.17529
+139	-84	-0.1846
+140	-84	-0.19391
+141	-84	-0.20322
+142	-84	-0.21253
+143	-84	-0.22184
+144	-84	-0.23115
+145	-84	-0.24046
+146	-84	-0.24977
+147	-84	-0.25908
+148	-84	-0.26839
+149	-84	-0.2777
+150	-84	-0.28701
+151	-84	-0.29632
+152	-84	-0.30563
+153	-84	-0.31494
+154	-84	-0.32425
+155	-84	-0.33747
+156	-84	-0.36023
+157	-84	-0.38299
+158	-84	-0.40575
+159	-84	-0.42851
+160	-84	-0.49883
+161	-84	-0.61142
+162	-84	-0.72402
+163	-84	-0.79991
+164	-84	-0.8278
+165	-84	-0.8557
+166	-84	-1.1116
+167	-84	-1.4255
+168	-84	-1.6644
+169	-84	-1.9033
+170	-84	-2.1422
+171	-84	-2.1726
+172	-84	-2.1878
+173	-84	-2.203
+174	-84	-2.2182
+175	-84	-2.2334
+176	-84	-2.2486
+177	-84	-2.2638
+178	-84	-2.279
+179	-84	-2.2942
+180	-84	-2.3094
+181	-84	-2.3246
+182	-84	-2.3397
+183	-84	-2.3531
+184	-84	-2.3576
+185	-84	-2.3621
+186	-84	-2.3666
+187	-84	-2.3711
+188	-84	-2.3755
+189	-84	-2.38
+190	-84	-2.333
+191	-84	-2.1964
+192	-84	-2.0598
+193	-84	-1.9232
+194	-84	-1.7865
+195	-84	-1.6499
+196	-84	-1.628
+197	-84	-1.6352
+198	-84	-1.6424
+199	-84	-1.6496
+200	-84	-1.7819
+201	-84	-2.1257
+202	-84	-2.1054
+203	-84	-1.764
+204	-84	-1.6105
+205	-84	-1.5971
+206	-84	-1.5838
+207	-84	-1.5705
+208	-84	-1.5571
+209	-84	-1.5252
+210	-84	-1.4837
+211	-84	-1.4421
+212	-84	-1.4006
+213	-84	-1.3591
+214	-84	-1.3176
+215	-84	-1.2822
+216	-84	-1.2744
+217	-84	-1.2666
+218	-84	-1.2588
+219	-84	-1.2511
+220	-84	-1.2433
+221	-84	-1.2355
+222	-84	-1.1698
+223	-84	-1.0846
+224	-84	-0.99932
+225	-84	-0.91409
+226	-84	-0.82885
+227	-84	-0.74362
+228	-84	-0.65839
+229	-84	-0.57316
+230	-84	-0.48792
+231	-84	-0.40269
+232	-84	-0.33737
+233	-84	-0.28247
+234	-84	-0.22757
+235	-84	-0.17267
+236	-84	-0.11777
+237	-84	-0.062871
+238	-84	-0.0079719
+239	-84	0.055999
+240	-84	-0.38628
+241	-84	-0.13019
+242	-84	-0.23117
+243	-84	-0.40292
+244	-84	-0.57466
+245	-84	-0.74641
+246	-84	-0.91816
+247	-84	-1.0899
+248	-84	-2.0042
+249	-84	-4.1993
+250	-84	-4.6334
+251	-84	-4.1796
+252	-84	-3.7257
+253	-84	-3.0165
+254	-84	-2.2578
+255	-84	-1.499
+256	-84	-0.74023
+257	-84	-0.4905
+258	-84	-0.52939
+259	-84	-0.56828
+260	-84	-0.60717
+261	-84	-0.64606
+262	-84	-0.68495
+263	-84	-0.72384
+264	-84	-0.76272
+265	-84	-0.80161
+266	-84	-0.8405
+267	-84	-0.86559
+268	-84	-0.87273
+269	-84	-0.87987
+270	-84	-0.88701
+271	-84	-0.89415
+272	-84	-0.90129
+273	-84	-0.90843
+274	-84	-0.91558
+275	-84	-0.92272
+276	-84	-0.92986
+277	-84	-0.937
+278	-84	-0.94414
+279	-84	-0.95128
+280	-84	-0.95842
+281	-84	-0.96556
+282	-84	-0.96359
+283	-84	-0.94107
+284	-84	-0.91856
+285	-84	-0.89605
+286	-84	-0.87354
+287	-84	-0.93354
+288	-84	-1.019
+289	-84	-1.1044
+290	-84	-1.1899
+291	-84	-1.0345
+292	-84	-0.85781
+293	-84	-0.90208
+294	-84	-1.0204
+295	-84	-1.1058
+296	-84	-1.1641
+297	-84	-1.2225
+298	-84	-1.2804
+299	-84	-1.2678
+300	-84	-1.2553
+301	-84	-1.2428
+302	-84	-1.2302
+303	-84	-1.2177
+304	-84	-1.2051
+305	-84	-1.1676
+306	-84	-1.1186
+307	-84	-1.0696
+308	-84	-1.0206
+309	-84	-0.97157
+310	-84	-0.92257
+311	-84	-0.87357
+312	-84	-0.82457
+313	-84	-0.78025
+314	-84	-0.77991
+315	-84	-0.77957
+316	-84	-0.77923
+317	-84	-0.77889
+318	-84	-0.77855
+319	-84	-0.7782
+320	-84	-0.77786
+321	-84	-0.77752
+322	-84	-0.77718
+323	-84	-0.77684
+324	-84	-0.74186
+325	-84	-0.70476
+326	-84	-0.66767
+327	-84	-0.63058
+328	-84	-0.59348
+329	-84	-0.55639
+330	-84	-0.5193
+331	-84	-0.42883
+332	-84	-0.33447
+333	-84	-0.23685
+334	-84	-0.30151
+335	-84	-0.42217
+336	-84	-0.18001
+337	-84	-0.11682
+338	-84	-0.070485
+339	-84	-0.024152
+340	-84	0.022181
+341	-84	0.068514
+342	-84	0.11485
+343	-84	0.16118
+344	-84	0.15746
+345	-84	0.14621
+346	-84	0.13496
+347	-84	0.12371
+348	-84	0.11605
+349	-84	0.12071
+350	-84	0.12537
+351	-84	0.13003
+352	-84	0.13469
+353	-84	0.13935
+354	-84	0.14401
+355	-84	0.14867
+356	-84	0.15333
+357	-84	0.15799
+358	-84	0.16265
+359	-84	0.16731
+360	-84	0.17197
+0	-83.5	0.27793
+1	-83.5	0.28259
+2	-83.5	0.2863
+3	-83.5	0.2899
+4	-83.5	0.2935
+5	-83.5	0.2971
+6	-83.5	0.3007
+7	-83.5	0.30429
+8	-83.5	0.30789
+9	-83.5	0.31149
+10	-83.5	0.31509
+11	-83.5	0.31869
+12	-83.5	0.32229
+13	-83.5	0.32589
+14	-83.5	0.32948
+15	-83.5	0.33894
+16	-83.5	0.34953
+17	-83.5	0.36012
+18	-83.5	0.37071
+19	-83.5	0.38129
+20	-83.5	0.39163
+21	-83.5	0.39653
+22	-83.5	0.40142
+23	-83.5	0.40632
+24	-83.5	0.39638
+25	-83.5	0.3808
+26	-83.5	0.38012
+27	-83.5	0.38195
+28	-83.5	0.38049
+29	-83.5	0.389
+30	-83.5	0.39751
+31	-83.5	0.40424
+32	-83.5	0.41062
+33	-83.5	0.417
+34	-83.5	0.42337
+35	-83.5	0.42975
+36	-83.5	0.43613
+37	-83.5	0.4425
+38	-83.5	0.44888
+39	-83.5	0.45526
+40	-83.5	0.46163
+41	-83.5	0.46322
+42	-83.5	0.4591
+43	-83.5	0.45498
+44	-83.5	0.45086
+45	-83.5	0.44674
+46	-83.5	0.44262
+47	-83.5	0.4385
+48	-83.5	0.43438
+49	-83.5	0.43026
+50	-83.5	0.42614
+51	-83.5	0.42202
+52	-83.5	0.4179
+53	-83.5	0.41377
+54	-83.5	0.40965
+55	-83.5	0.40553
+56	-83.5	0.38141
+57	-83.5	0.35332
+58	-83.5	0.32523
+59	-83.5	0.29714
+60	-83.5	0.26905
+61	-83.5	0.24095
+62	-83.5	0.21286
+63	-83.5	0.18477
+64	-83.5	0.15668
+65	-83.5	0.12859
+66	-83.5	0.1005
+67	-83.5	0.072411
+68	-83.5	0.033105
+69	-83.5	-0.018794
+70	-83.5	-0.070694
+71	-83.5	-0.12259
+72	-83.5	-0.13681
+73	-83.5	-0.11652
+74	-83.5	-0.096236
+75	-83.5	-0.076791
+76	-83.5	-0.068178
+77	-83.5	-0.059565
+78	-83.5	-0.050952
+79	-83.5	-0.042339
+80	-83.5	-0.033725
+81	-83.5	-0.025112
+82	-83.5	-0.017855
+83	-83.5	-0.01613
+84	-83.5	-0.014405
+85	-83.5	-0.01268
+86	-83.5	-0.010956
+87	-83.5	-0.009231
+88	-83.5	-0.0075063
+89	-83.5	-0.0057816
+90	-83.5	-0.0040569
+91	-83.5	-0.0023322
+92	-83.5	-0.00060751
+93	-83.5	0.0011172
+94	-83.5	0.0028419
+95	-83.5	0.0045666
+96	-83.5	0.0062913
+97	-83.5	0.008016
+98	-83.5	0.0097407
+99	-83.5	0.011465
+100	-83.5	0.01319
+101	-83.5	0.014915
+102	-83.5	0.016639
+103	-83.5	0.018364
+104	-83.5	0.020089
+105	-83.5	0.021814
+106	-83.5	0.023538
+107	-83.5	0.025263
+108	-83.5	0.026988
+109	-83.5	0.028712
+110	-83.5	0.030437
+111	-83.5	0.032162
+112	-83.5	0.033886
+113	-83.5	0.04241
+114	-83.5	0.056502
+115	-83.5	0.070594
+116	-83.5	0.084686
+117	-83.5	0.098779
+118	-83.5	0.054014
+119	-83.5	0.0053743
+120	-83.5	-0.043265
+121	-83.5	-0.063841
+122	-83.5	-0.032075
+123	-83.5	-0.00030842
+124	-83.5	0.010773
+125	-83.5	0.0016262
+126	-83.5	-0.007521
+127	-83.5	-0.016668
+128	-83.5	-0.025815
+129	-83.5	-0.034962
+130	-83.5	-0.04411
+131	-83.5	-0.053257
+132	-83.5	-0.062404
+133	-83.5	-0.071551
+134	-83.5	-0.080759
+135	-83.5	-0.090069
+136	-83.5	-0.099379
+137	-83.5	-0.10869
+138	-83.5	-0.118
+139	-83.5	-0.12731
+140	-83.5	-0.13662
+141	-83.5	-0.14593
+142	-83.5	-0.15524
+143	-83.5	-0.16455
+144	-83.5	-0.17386
+145	-83.5	-0.18317
+146	-83.5	-0.19248
+147	-83.5	-0.20179
+148	-83.5	-0.2111
+149	-83.5	-0.22041
+150	-83.5	-0.22972
+151	-83.5	-0.23903
+152	-83.5	-0.24834
+153	-83.5	-0.26648
+154	-83.5	-0.28924
+155	-83.5	-0.312
+156	-83.5	-0.33476
+157	-83.5	-0.35752
+158	-83.5	-0.38028
+159	-83.5	-0.48167
+160	-83.5	-0.59426
+161	-83.5	-0.70685
+162	-83.5	-0.80962
+163	-83.5	-0.83752
+164	-83.5	-0.86541
+165	-83.5	-0.89331
+166	-83.5	-1.178
+167	-83.5	-1.5168
+168	-83.5	-1.7557
+169	-83.5	-1.9946
+170	-83.5	-2.2102
+171	-83.5	-2.2935
+172	-83.5	-2.3415
+173	-83.5	-2.3702
+174	-83.5	-2.3989
+175	-83.5	-2.4276
+176	-83.5	-2.4563
+177	-83.5	-2.485
+178	-83.5	-2.5136
+179	-83.5	-2.5423
+180	-83.5	-2.571
+181	-83.5	-2.5997
+182	-83.5	-2.6284
+183	-83.5	-2.653
+184	-83.5	-2.6682
+185	-83.5	-2.6834
+186	-83.5	-2.6986
+187	-83.5	-2.7083
+188	-83.5	-2.6564
+189	-83.5	-2.5197
+190	-83.5	-2.3831
+191	-83.5	-2.2465
+192	-83.5	-2.1099
+193	-83.5	-1.9733
+194	-83.5	-1.8367
+195	-83.5	-1.8279
+196	-83.5	-1.8351
+197	-83.5	-1.8423
+198	-83.5	-1.8494
+199	-83.5	-1.8566
+200	-83.5	-2.1037
+201	-83.5	-2.284
+202	-83.5	-2.1572
+203	-83.5	-2.0841
+204	-83.5	-1.813
+205	-83.5	-1.7997
+206	-83.5	-1.7863
+207	-83.5	-1.773
+208	-83.5	-1.7597
+209	-83.5	-1.7463
+210	-83.5	-1.7182
+211	-83.5	-1.6767
+212	-83.5	-1.6352
+213	-83.5	-1.5937
+214	-83.5	-1.5521
+215	-83.5	-1.5106
+216	-83.5	-1.4691
+217	-83.5	-1.4269
+218	-83.5	-1.3735
+219	-83.5	-1.3186
+220	-83.5	-1.2637
+221	-83.5	-1.2088
+222	-83.5	-1.1539
+223	-83.5	-1.099
+224	-83.5	-1.0441
+225	-83.5	-0.98923
+226	-83.5	-0.93433
+227	-83.5	-0.87943
+228	-83.5	-0.82453
+229	-83.5	-0.76963
+230	-83.5	-0.71473
+231	-83.5	-0.65983
+232	-83.5	-0.60493
+233	-83.5	-0.55003
+234	-83.5	-0.49514
+235	-83.5	-0.44024
+236	-83.5	-0.38534
+237	-83.5	-0.32896
+238	-83.5	-0.23689
+239	-83.5	-0.3085
+240	-83.5	-1.0504
+241	-83.5	-1.4187
+242	-83.5	-1.1269
+243	-83.5	-0.83507
+244	-83.5	-0.73247
+245	-83.5	-0.90421
+246	-83.5	-1.076
+247	-83.5	-1.2477
+248	-83.5	-1.811
+249	-83.5	-4.0061
+250	-83.5	-5.6871
+251	-83.5	-5.2333
+252	-83.5	-4.7795
+253	-83.5	-4.3257
+254	-83.5	-3.6057
+255	-83.5	-2.8469
+256	-83.5	-2.0881
+257	-83.5	-1.3294
+258	-83.5	-0.57059
+259	-83.5	-0.56185
+260	-83.5	-0.60074
+261	-83.5	-0.63963
+262	-83.5	-0.67852
+263	-83.5	-0.71741
+264	-83.5	-0.7563
+265	-83.5	-0.79519
+266	-83.5	-0.83408
+267	-83.5	-0.87297
+268	-83.5	-0.91186
+269	-83.5	-0.95074
+270	-83.5	-0.98963
+271	-83.5	-0.9982
+272	-83.5	-1.0053
+273	-83.5	-1.0125
+274	-83.5	-1.0196
+275	-83.5	-1.0268
+276	-83.5	-1.0339
+277	-83.5	-1.041
+278	-83.5	-1.0482
+279	-83.5	-1.0553
+280	-83.5	-1.0625
+281	-83.5	-1.0428
+282	-83.5	-1.0203
+283	-83.5	-0.9978
+284	-83.5	-0.97529
+285	-83.5	-0.95278
+286	-83.5	-0.98013
+287	-83.5	-1.0656
+288	-83.5	-1.151
+289	-83.5	-1.2365
+290	-83.5	-1.2665
+291	-83.5	-1.183
+292	-83.5	-1.0063
+293	-83.5	-0.90551
+294	-83.5	-1.0238
+295	-83.5	-1.1421
+296	-83.5	-1.2232
+297	-83.5	-1.2815
+298	-83.5	-1.3398
+299	-83.5	-1.3981
+300	-83.5	-1.4297
+301	-83.5	-1.4171
+302	-83.5	-1.4046
+303	-83.5	-1.392
+304	-83.5	-1.3795
+305	-83.5	-1.3669
+306	-83.5	-1.3544
+307	-83.5	-1.3418
+308	-83.5	-1.2998
+309	-83.5	-1.2508
+310	-83.5	-1.2018
+311	-83.5	-1.1528
+312	-83.5	-1.1038
+313	-83.5	-1.0548
+314	-83.5	-1.0058
+315	-83.5	-0.9568
+316	-83.5	-0.9078
+317	-83.5	-0.8588
+318	-83.5	-0.83515
+319	-83.5	-0.83481
+320	-83.5	-0.83447
+321	-83.5	-0.82518
+322	-83.5	-0.78809
+323	-83.5	-0.751
+324	-83.5	-0.7139
+325	-83.5	-0.67681
+326	-83.5	-0.63972
+327	-83.5	-0.60262
+328	-83.5	-0.56553
+329	-83.5	-0.52844
+330	-83.5	-0.44239
+331	-83.5	-0.34798
+332	-83.5	-0.24619
+333	-83.5	-0.1444
+334	-83.5	-0.27909
+335	-83.5	-0.42109
+336	-83.5	-0.17894
+337	-83.5	-0.064858
+338	-83.5	-0.018525
+339	-83.5	0.027808
+340	-83.5	0.074141
+341	-83.5	0.12047
+342	-83.5	0.16681
+343	-83.5	0.21314
+344	-83.5	0.25947
+345	-83.5	0.29286
+346	-83.5	0.28161
+347	-83.5	0.27036
+348	-83.5	0.25911
+349	-83.5	0.24786
+350	-83.5	0.2366
+351	-83.5	0.23599
+352	-83.5	0.24065
+353	-83.5	0.24531
+354	-83.5	0.24997
+355	-83.5	0.25463
+356	-83.5	0.25929
+357	-83.5	0.26395
+358	-83.5	0.26861
+359	-83.5	0.27327
+360	-83.5	0.27793
+0	-83	0.38121
+1	-83	0.38481
+2	-83	0.38841
+3	-83	0.39201
+4	-83	0.3956
+5	-83	0.3992
+6	-83	0.4028
+7	-83	0.4064
+8	-83	0.41
+9	-83	0.4136
+10	-83	0.4172
+11	-83	0.4208
+12	-83	0.42439
+13	-83	0.43085
+14	-83	0.44144
+15	-83	0.45203
+16	-83	0.46262
+17	-83	0.47321
+18	-83	0.4838
+19	-83	0.49438
+20	-83	0.50099
+21	-83	0.50589
+22	-83	0.51078
+23	-83	0.51568
+24	-83	0.50293
+25	-83	0.48536
+26	-83	0.48469
+27	-83	0.49548
+28	-83	0.47572
+29	-83	0.47696
+30	-83	0.48546
+31	-83	0.49397
+32	-83	0.50248
+33	-83	0.51099
+34	-83	0.5195
+35	-83	0.52801
+36	-83	0.53652
+37	-83	0.54373
+38	-83	0.55011
+39	-83	0.55648
+40	-83	0.56286
+41	-83	0.56924
+42	-83	0.57562
+43	-83	0.58199
+44	-83	0.57935
+45	-83	0.57523
+46	-83	0.57111
+47	-83	0.56699
+48	-83	0.56287
+49	-83	0.55875
+50	-83	0.55463
+51	-83	0.55051
+52	-83	0.54639
+53	-83	0.53393
+54	-83	0.50584
+55	-83	0.47775
+56	-83	0.44966
+57	-83	0.42157
+58	-83	0.39348
+59	-83	0.36539
+60	-83	0.3373
+61	-83	0.30921
+62	-83	0.28112
+63	-83	0.25303
+64	-83	0.22494
+65	-83	0.19684
+66	-83	0.16875
+67	-83	0.14066
+68	-83	0.094586
+69	-83	0.042686
+70	-83	-0.0092137
+71	-83	-0.061114
+72	-83	-0.10618
+73	-83	-0.085894
+74	-83	-0.065609
+75	-83	-0.045324
+76	-83	-0.025303
+77	-83	-0.01669
+78	-83	-0.0080767
+79	-83	0.00053649
+80	-83	0.0091497
+81	-83	0.017763
+82	-83	0.026376
+83	-83	0.034989
+84	-83	0.043602
+85	-83	0.04596
+86	-83	0.047685
+87	-83	0.049409
+88	-83	0.051134
+89	-83	0.052859
+90	-83	0.054583
+91	-83	0.056308
+92	-83	0.058033
+93	-83	0.059758
+94	-83	0.061482
+95	-83	0.063207
+96	-83	0.064932
+97	-83	0.066656
+98	-83	0.068381
+99	-83	0.070106
+100	-83	0.07183
+101	-83	0.073555
+102	-83	0.07528
+103	-83	0.077005
+104	-83	0.078729
+105	-83	0.080454
+106	-83	0.082179
+107	-83	0.083903
+108	-83	0.085628
+109	-83	0.087353
+110	-83	0.089077
+111	-83	0.094506
+112	-83	0.1086
+113	-83	0.12269
+114	-83	0.13678
+115	-83	0.15087
+116	-83	0.16497
+117	-83	0.13413
+118	-83	0.085487
+119	-83	0.036848
+120	-83	-0.011792
+121	-83	-0.030622
+122	-83	0.0011448
+123	-83	0.032911
+124	-83	0.064678
+125	-83	0.058471
+126	-83	0.049324
+127	-83	0.040177
+128	-83	0.03103
+129	-83	0.021883
+130	-83	0.012735
+131	-83	0.0035882
+132	-83	-0.005559
+133	-83	-0.014706
+134	-83	-0.023853
+135	-83	-0.033
+136	-83	-0.042148
+137	-83	-0.051402
+138	-83	-0.060713
+139	-83	-0.070023
+140	-83	-0.079333
+141	-83	-0.088643
+142	-83	-0.097953
+143	-83	-0.10726
+144	-83	-0.11657
+145	-83	-0.12588
+146	-83	-0.13519
+147	-83	-0.1445
+148	-83	-0.15381
+149	-83	-0.16312
+150	-83	-0.17273
+151	-83	-0.19549
+152	-83	-0.21825
+153	-83	-0.24101
+154	-83	-0.26377
+155	-83	-0.28653
+156	-83	-0.30929
+157	-83	-0.35191
+158	-83	-0.4645
+159	-83	-0.5771
+160	-83	-0.68969
+161	-83	-0.80229
+162	-83	-0.84723
+163	-83	-0.87512
+164	-83	-0.90302
+165	-83	-0.93092
+166	-83	-1.2443
+167	-83	-1.6082
+168	-83	-1.8471
+169	-83	-2.023
+170	-83	-2.1755
+171	-83	-2.2112
+172	-83	-2.2801
+173	-83	-2.3576
+174	-83	-2.3863
+175	-83	-2.415
+176	-83	-2.4436
+177	-83	-2.4723
+178	-83	-2.501
+179	-83	-2.5297
+180	-83	-2.5584
+181	-83	-2.5871
+182	-83	-2.6158
+183	-83	-2.6444
+184	-83	-2.6731
+185	-83	-2.702
+186	-83	-2.7658
+187	-83	-2.7499
+188	-83	-2.6925
+189	-83	-2.5699
+190	-83	-2.4332
+191	-83	-2.2966
+192	-83	-2.16
+193	-83	-2.0234
+194	-83	-2.0278
+195	-83	-2.0349
+196	-83	-2.0421
+197	-83	-2.0493
+198	-83	-2.0565
+199	-83	-2.0817
+200	-83	-2.3703
+201	-83	-2.3913
+202	-83	-2.209
+203	-83	-2.3132
+204	-83	-2.0156
+205	-83	-2.0022
+206	-83	-1.9889
+207	-83	-1.9756
+208	-83	-1.9622
+209	-83	-1.9489
+210	-83	-1.9355
+211	-83	-1.9112
+212	-83	-1.8697
+213	-83	-1.8282
+214	-83	-1.7867
+215	-83	-1.7452
+216	-83	-1.7042
+217	-83	-1.6432
+218	-83	-1.6158
+219	-83	-1.5862
+220	-83	-1.5313
+221	-83	-1.4764
+222	-83	-1.4215
+223	-83	-1.3666
+224	-83	-1.3117
+225	-83	-1.2568
+226	-83	-1.2019
+227	-83	-1.147
+228	-83	-1.0921
+229	-83	-1.0372
+230	-83	-0.9823
+231	-83	-0.9274
+232	-83	-0.8725
+233	-83	-0.8176
+234	-83	-0.7627
+235	-83	-0.7078
+236	-83	-0.62184
+237	-83	-0.52978
+238	-83	-0.43771
+239	-83	-0.96506
+240	-83	-1.7146
+241	-83	-2.7072
+242	-83	-2.4154
+243	-83	-2.1236
+244	-83	-1.8318
+245	-83	-1.54
+246	-83	-1.2482
+247	-83	-1.4055
+248	-83	-1.6177
+249	-83	-3.8128
+250	-83	-6.0079
+251	-83	-6.2871
+252	-83	-5.8333
+253	-83	-5.3795
+254	-83	-4.9256
+255	-83	-4.1948
+256	-83	-3.436
+257	-83	-2.6773
+258	-83	-1.9185
+259	-83	-1.1597
+260	-83	-0.59432
+261	-83	-0.63321
+262	-83	-0.6721
+263	-83	-0.71099
+264	-83	-0.74987
+265	-83	-0.78876
+266	-83	-0.82765
+267	-83	-0.86654
+268	-83	-0.90543
+269	-83	-0.94432
+270	-83	-0.98321
+271	-83	-1.0221
+272	-83	-1.061
+273	-83	-1.0999
+274	-83	-1.1237
+275	-83	-1.1308
+276	-83	-1.138
+277	-83	-1.1451
+278	-83	-1.1522
+279	-83	-1.1446
+280	-83	-1.1221
+281	-83	-1.0996
+282	-83	-1.077
+283	-83	-1.0545
+284	-83	-1.032
+285	-83	-1.0267
+286	-83	-1.1122
+287	-83	-1.1976
+288	-83	-1.2831
+289	-83	-1.2807
+290	-83	-1.2678
+291	-83	-1.2668
+292	-83	-1.1548
+293	-83	-0.97809
+294	-83	-1.0273
+295	-83	-1.1456
+296	-83	-1.2639
+297	-83	-1.3405
+298	-83	-1.3988
+299	-83	-1.4572
+300	-83	-1.5155
+301	-83	-1.5738
+302	-83	-1.5789
+303	-83	-1.5664
+304	-83	-1.5538
+305	-83	-1.5413
+306	-83	-1.5287
+307	-83	-1.5162
+308	-83	-1.5036
+309	-83	-1.4911
+310	-83	-1.4785
+311	-83	-1.432
+312	-83	-1.383
+313	-83	-1.334
+314	-83	-1.285
+315	-83	-1.236
+316	-83	-1.1707
+317	-83	-1.0659
+318	-83	-0.96105
+319	-83	-0.86074
+320	-83	-0.79782
+321	-83	-0.79366
+322	-83	-0.76014
+323	-83	-0.72305
+324	-83	-0.68595
+325	-83	-0.64886
+326	-83	-0.61177
+327	-83	-0.57467
+328	-83	-0.53758
+329	-83	-0.45595
+330	-83	-0.35732
+331	-83	-0.25554
+332	-83	-0.15375
+333	-83	-0.051959
+334	-83	-0.22825
+335	-83	-0.40598
+336	-83	-0.17786
+337	-83	-0.012897
+338	-83	0.033436
+339	-83	0.079769
+340	-83	0.1261
+341	-83	0.17243
+342	-83	0.21877
+343	-83	0.2651
+344	-83	0.31539
+345	-83	0.45985
+346	-83	0.44763
+347	-83	0.4317
+348	-83	0.41578
+349	-83	0.39985
+350	-83	0.38393
+351	-83	0.372
+352	-83	0.36075
+353	-83	0.35128
+354	-83	0.35594
+355	-83	0.3606
+356	-83	0.36526
+357	-83	0.36992
+358	-83	0.37401
+359	-83	0.37761
+360	-83	0.38121
+0	-82.5	0.48938
+1	-82.5	0.49172
+2	-82.5	0.49407
+3	-82.5	0.49641
+4	-82.5	0.49875
+5	-82.5	0.50131
+6	-82.5	0.50491
+7	-82.5	0.50851
+8	-82.5	0.51211
+9	-82.5	0.51571
+10	-82.5	0.5193
+11	-82.5	0.5229
+12	-82.5	0.53335
+13	-82.5	0.54394
+14	-82.5	0.55453
+15	-82.5	0.56512
+16	-82.5	0.57571
+17	-82.5	0.5863
+18	-82.5	0.59689
+19	-82.5	0.60545
+20	-82.5	0.61035
+21	-82.5	0.61524
+22	-82.5	0.62014
+23	-82.5	0.62503
+24	-82.5	0.60948
+25	-82.5	0.58993
+26	-82.5	0.58925
+27	-82.5	0.60443
+28	-82.5	0.59085
+29	-82.5	0.5695
+30	-82.5	0.57342
+31	-82.5	0.58193
+32	-82.5	0.59044
+33	-82.5	0.59895
+34	-82.5	0.60746
+35	-82.5	0.61597
+36	-82.5	0.62448
+37	-82.5	0.63299
+38	-82.5	0.64149
+39	-82.5	0.65
+40	-82.5	0.65851
+41	-82.5	0.66702
+42	-82.5	0.67553
+43	-82.5	0.68322
+44	-82.5	0.6896
+45	-82.5	0.69597
+46	-82.5	0.6996
+47	-82.5	0.69548
+48	-82.5	0.69136
+49	-82.5	0.68724
+50	-82.5	0.68312
+51	-82.5	0.65836
+52	-82.5	0.63027
+53	-82.5	0.60218
+54	-82.5	0.57409
+55	-82.5	0.546
+56	-82.5	0.51791
+57	-82.5	0.48982
+58	-82.5	0.46093
+59	-82.5	0.42976
+60	-82.5	0.39859
+61	-82.5	0.36742
+62	-82.5	0.33625
+63	-82.5	0.30508
+64	-82.5	0.27391
+65	-82.5	0.24274
+66	-82.5	0.21157
+67	-82.5	0.18012
+68	-82.5	0.15607
+69	-82.5	0.10417
+70	-82.5	0.052267
+71	-82.5	0.00036682
+72	-82.5	-0.051533
+73	-82.5	-0.055266
+74	-82.5	-0.034981
+75	-82.5	-0.014696
+76	-82.5	0.0055887
+77	-82.5	0.025874
+78	-82.5	0.034798
+79	-82.5	0.043412
+80	-82.5	0.052025
+81	-82.5	0.060638
+82	-82.5	0.069251
+83	-82.5	0.077864
+84	-82.5	0.086478
+85	-82.5	0.095091
+86	-82.5	0.1037
+87	-82.5	0.10805
+88	-82.5	0.10977
+89	-82.5	0.1115
+90	-82.5	0.11322
+91	-82.5	0.11495
+92	-82.5	0.11667
+93	-82.5	0.1184
+94	-82.5	0.12012
+95	-82.5	0.12185
+96	-82.5	0.12357
+97	-82.5	0.1253
+98	-82.5	0.12702
+99	-82.5	0.12875
+100	-82.5	0.13047
+101	-82.5	0.1322
+102	-82.5	0.13392
+103	-82.5	0.13564
+104	-82.5	0.13737
+105	-82.5	0.13909
+106	-82.5	0.14082
+107	-82.5	0.14254
+108	-82.5	0.14427
+109	-82.5	0.1466
+110	-82.5	0.16069
+111	-82.5	0.17479
+112	-82.5	0.18888
+113	-82.5	0.20297
+114	-82.5	0.21706
+115	-82.5	0.23115
+116	-82.5	0.21424
+117	-82.5	0.1656
+118	-82.5	0.11696
+119	-82.5	0.068322
+120	-82.5	0.019682
+121	-82.5	0.0025981
+122	-82.5	0.034365
+123	-82.5	0.066131
+124	-82.5	0.097636
+125	-82.5	0.090336
+126	-82.5	0.095777
+127	-82.5	0.090235
+128	-82.5	0.083005
+129	-82.5	0.075774
+130	-82.5	0.068543
+131	-82.5	0.060433
+132	-82.5	0.051286
+133	-82.5	0.042139
+134	-82.5	0.032992
+135	-82.5	0.023845
+136	-82.5	0.014697
+137	-82.5	0.0055502
+138	-82.5	-0.003597
+139	-82.5	-0.012744
+140	-82.5	-0.022046
+141	-82.5	-0.031356
+142	-82.5	-0.040666
+143	-82.5	-0.049976
+144	-82.5	-0.059286
+145	-82.5	-0.068596
+146	-82.5	-0.077907
+147	-82.5	-0.087217
+148	-82.5	-0.10174
+149	-82.5	-0.1245
+150	-82.5	-0.14726
+151	-82.5	-0.17002
+152	-82.5	-0.19278
+153	-82.5	-0.21554
+154	-82.5	-0.2383
+155	-82.5	-0.26107
+156	-82.5	-0.33475
+157	-82.5	-0.44734
+158	-82.5	-0.55994
+159	-82.5	-0.67253
+160	-82.5	-0.78512
+161	-82.5	-0.85694
+162	-82.5	-0.88484
+163	-82.5	-0.91273
+164	-82.5	-0.94063
+165	-82.5	-0.96853
+166	-82.5	-1.3107
+167	-82.5	-1.6835
+168	-82.5	-1.8359
+169	-82.5	-1.9883
+170	-82.5	-2.1407
+171	-82.5	-2.158
+172	-82.5	-2.1323
+173	-82.5	-2.2667
+174	-82.5	-2.3736
+175	-82.5	-2.4023
+176	-82.5	-2.431
+177	-82.5	-2.4597
+178	-82.5	-2.4884
+179	-82.5	-2.5171
+180	-82.5	-2.5458
+181	-82.5	-2.5745
+182	-82.5	-2.6031
+183	-82.5	-2.6581
+184	-82.5	-2.7219
+185	-82.5	-2.7857
+186	-82.5	-2.7949
+187	-82.5	-2.7075
+188	-82.5	-2.656
+189	-82.5	-2.5893
+190	-82.5	-2.4834
+191	-82.5	-2.3468
+192	-82.5	-2.2204
+193	-82.5	-2.2276
+194	-82.5	-2.2348
+195	-82.5	-2.242
+196	-82.5	-2.2492
+197	-82.5	-2.2563
+198	-82.5	-2.2635
+199	-82.5	-2.4035
+200	-82.5	-2.5256
+201	-82.5	-2.4709
+202	-82.5	-2.2608
+203	-82.5	-2.365
+204	-82.5	-2.3043
+205	-82.5	-2.2048
+206	-82.5	-2.1914
+207	-82.5	-2.1781
+208	-82.5	-2.1648
+209	-82.5	-2.1514
+210	-82.5	-2.1381
+211	-82.5	-2.1247
+212	-82.5	-2.1043
+213	-82.5	-2.0628
+214	-82.5	-2.0212
+215	-82.5	-1.9806
+216	-82.5	-1.9414
+217	-82.5	-1.8608
+218	-82.5	-1.7928
+219	-82.5	-1.8046
+220	-82.5	-1.7989
+221	-82.5	-1.744
+222	-82.5	-1.6891
+223	-82.5	-1.6342
+224	-82.5	-1.5793
+225	-82.5	-1.5244
+226	-82.5	-1.4695
+227	-82.5	-1.4146
+228	-82.5	-1.3597
+229	-82.5	-1.3048
+230	-82.5	-1.2499
+231	-82.5	-1.195
+232	-82.5	-1.1401
+233	-82.5	-1.0852
+234	-82.5	-1.0068
+235	-82.5	-0.91473
+236	-82.5	-0.82266
+237	-82.5	-0.73059
+238	-82.5	-1.0015
+239	-82.5	-1.6216
+240	-82.5	-2.3788
+241	-82.5	-3.4815
+242	-82.5	-3.7039
+243	-82.5	-3.412
+244	-82.5	-3.1202
+245	-82.5	-2.8284
+246	-82.5	-2.5366
+247	-82.5	-2.2448
+248	-82.5	-1.953
+249	-82.5	-3.6196
+250	-82.5	-5.8147
+251	-82.5	-7.3409
+252	-82.5	-6.887
+253	-82.5	-6.4332
+254	-82.5	-5.9794
+255	-82.5	-5.5256
+256	-82.5	-4.784
+257	-82.5	-4.0252
+258	-82.5	-3.2664
+259	-82.5	-2.5076
+260	-82.5	-1.7489
+261	-82.5	-0.99009
+262	-82.5	-0.66567
+263	-82.5	-0.70456
+264	-82.5	-0.74345
+265	-82.5	-0.78234
+266	-82.5	-0.82123
+267	-82.5	-0.86012
+268	-82.5	-0.89901
+269	-82.5	-0.93789
+270	-82.5	-0.97678
+271	-82.5	-1.0157
+272	-82.5	-1.0546
+273	-82.5	-1.0935
+274	-82.5	-1.1323
+275	-82.5	-1.1712
+276	-82.5	-1.2101
+277	-82.5	-1.2463
+278	-82.5	-1.2238
+279	-82.5	-1.2013
+280	-82.5	-1.1788
+281	-82.5	-1.1563
+282	-82.5	-1.1338
+283	-82.5	-1.1113
+284	-82.5	-1.0887
+285	-82.5	-1.1588
+286	-82.5	-1.2442
+287	-82.5	-1.3077
+288	-82.5	-1.2948
+289	-82.5	-1.282
+290	-82.5	-1.2692
+291	-82.5	-1.2687
+292	-82.5	-1.2683
+293	-82.5	-1.1266
+294	-82.5	-1.0307
+295	-82.5	-1.149
+296	-82.5	-1.2673
+297	-82.5	-1.3856
+298	-82.5	-1.4579
+299	-82.5	-1.5162
+300	-82.5	-1.5745
+301	-82.5	-1.6328
+302	-82.5	-1.6911
+303	-82.5	-1.673
+304	-82.5	-1.6567
+305	-82.5	-1.6403
+306	-82.5	-1.624
+307	-82.5	-1.6076
+308	-82.5	-1.5912
+309	-82.5	-1.5749
+310	-82.5	-1.5585
+311	-82.5	-1.5408
+312	-82.5	-1.4476
+313	-82.5	-1.3428
+314	-82.5	-1.238
+315	-82.5	-1.1331
+316	-82.5	-1.0283
+317	-82.5	-0.92344
+318	-82.5	-0.8376
+319	-82.5	-0.75496
+320	-82.5	-0.63094
+321	-82.5	-0.70053
+322	-82.5	-0.68622
+323	-82.5	-0.67192
+324	-82.5	-0.65761
+325	-82.5	-0.62091
+326	-82.5	-0.58382
+327	-82.5	-0.54672
+328	-82.5	-0.46845
+329	-82.5	-0.36667
+330	-82.5	-0.26488
+331	-82.5	-0.16309
+332	-82.5	-0.061301
+333	-82.5	0.040487
+334	-82.5	-0.17741
+335	-82.5	-0.39034
+336	-82.5	-0.17678
+337	-82.5	0.039063
+338	-82.5	0.085396
+339	-82.5	0.13173
+340	-82.5	0.17806
+341	-82.5	0.2244
+342	-82.5	0.27073
+343	-82.5	0.36534
+344	-82.5	0.5219
+345	-82.5	0.63205
+346	-82.5	0.62356
+347	-82.5	0.60764
+348	-82.5	0.59171
+349	-82.5	0.57579
+350	-82.5	0.55986
+351	-82.5	0.54394
+352	-82.5	0.52801
+353	-82.5	0.51209
+354	-82.5	0.49616
+355	-82.5	0.48195
+356	-82.5	0.48001
+357	-82.5	0.48235
+358	-82.5	0.48469
+359	-82.5	0.48704
+360	-82.5	0.48938
+0	-82	0.63993
+1	-82	0.64227
+2	-82	0.64462
+3	-82	0.64696
+4	-82	0.6493
+5	-82	0.65164
+6	-82	0.65399
+7	-82	0.65633
+8	-82	0.65867
+9	-82	0.66102
+10	-82	0.66336
+11	-82	0.64841
+12	-82	0.64644
+13	-82	0.65703
+14	-82	0.66762
+15	-82	0.67821
+16	-82	0.6888
+17	-82	0.69939
+18	-82	0.70991
+19	-82	0.71481
+20	-82	0.7197
+21	-82	0.7246
+22	-82	0.7295
+23	-82	0.73439
+24	-82	0.71603
+25	-82	0.69449
+26	-82	0.69381
+27	-82	0.71339
+28	-82	0.70597
+29	-82	0.68462
+30	-82	0.66328
+31	-82	0.66989
+32	-82	0.6784
+33	-82	0.68691
+34	-82	0.69542
+35	-82	0.70393
+36	-82	0.71244
+37	-82	0.72094
+38	-82	0.72945
+39	-82	0.73796
+40	-82	0.74647
+41	-82	0.75498
+42	-82	0.76349
+43	-82	0.772
+44	-82	0.78051
+45	-82	0.78902
+46	-82	0.79753
+47	-82	0.80603
+48	-82	0.80885
+49	-82	0.7748
+50	-82	0.74363
+51	-82	0.71246
+52	-82	0.68129
+53	-82	0.65012
+54	-82	0.61895
+55	-82	0.58778
+56	-82	0.55661
+57	-82	0.52544
+58	-82	0.49427
+59	-82	0.46311
+60	-82	0.43194
+61	-82	0.40077
+62	-82	0.3696
+63	-82	0.33843
+64	-82	0.30726
+65	-82	0.27609
+66	-82	0.24464
+67	-82	0.21302
+68	-82	0.19184
+69	-82	0.16565
+70	-82	0.11375
+71	-82	0.061847
+72	-82	0.0099474
+73	-82	-0.024638
+74	-82	-0.0043535
+75	-82	0.015931
+76	-82	0.036216
+77	-82	0.056501
+78	-82	0.076786
+79	-82	0.086287
+80	-82	0.0949
+81	-82	0.10351
+82	-82	0.11213
+83	-82	0.12074
+84	-82	0.12935
+85	-82	0.13797
+86	-82	0.14658
+87	-82	0.15519
+88	-82	0.16381
+89	-82	0.17014
+90	-82	0.17186
+91	-82	0.17359
+92	-82	0.17531
+93	-82	0.17704
+94	-82	0.17876
+95	-82	0.18049
+96	-82	0.18221
+97	-82	0.18394
+98	-82	0.18566
+99	-82	0.18739
+100	-82	0.18911
+101	-82	0.19084
+102	-82	0.19256
+103	-82	0.19429
+104	-82	0.19601
+105	-82	0.19773
+106	-82	0.19946
+107	-82	0.20118
+108	-82	0.21279
+109	-82	0.22688
+110	-82	0.24097
+111	-82	0.25507
+112	-82	0.26916
+113	-82	0.28325
+114	-82	0.29734
+115	-82	0.29435
+116	-82	0.24571
+117	-82	0.19707
+118	-82	0.14843
+119	-82	0.099795
+120	-82	0.051156
+121	-82	0.035818
+122	-82	0.067584
+123	-82	0.099351
+124	-82	0.12606
+125	-82	0.11439
+126	-82	0.1075
+127	-82	0.11294
+128	-82	0.11838
+129	-82	0.11775
+130	-82	0.11051
+131	-82	0.10328
+132	-82	0.096053
+133	-82	0.088822
+134	-82	0.081591
+135	-82	0.07436
+136	-82	0.067129
+137	-82	0.059899
+138	-82	0.052668
+139	-82	0.044101
+140	-82	0.034954
+141	-82	0.025807
+142	-82	0.016621
+143	-82	0.0073109
+144	-82	-0.0019992
+145	-82	-0.011309
+146	-82	-0.030746
+147	-82	-0.053507
+148	-82	-0.076268
+149	-82	-0.09903
+150	-82	-0.12179
+151	-82	-0.14455
+152	-82	-0.16731
+153	-82	-0.19008
+154	-82	-0.21284
+155	-82	-0.31759
+156	-82	-0.43018
+157	-82	-0.54277
+158	-82	-0.65537
+159	-82	-0.7652
+160	-82	-0.85417
+161	-82	-0.89455
+162	-82	-0.92245
+163	-82	-0.95034
+164	-82	-0.97824
+165	-82	-1.0061
+166	-82	-1.3771
+167	-82	-1.6297
+168	-82	-1.8011
+169	-82	-1.9535
+170	-82	-2.1059
+171	-82	-2.1048
+172	-82	-2.0792
+173	-82	-2.1098
+174	-82	-2.2533
+175	-82	-2.3897
+176	-82	-2.4184
+177	-82	-2.4471
+178	-82	-2.4758
+179	-82	-2.5045
+180	-82	-2.5504
+181	-82	-2.6142
+182	-82	-2.678
+183	-82	-2.7418
+184	-82	-2.8056
+185	-82	-2.8426
+186	-82	-2.7327
+187	-82	-2.6651
+188	-82	-2.6196
+189	-82	-2.5528
+190	-82	-2.486
+191	-82	-2.4203
+192	-82	-2.4275
+193	-82	-2.4347
+194	-82	-2.4418
+195	-82	-2.449
+196	-82	-2.4562
+197	-82	-2.4634
+198	-82	-2.4706
+199	-82	-2.6118
+200	-82	-2.6809
+201	-82	-2.5505
+202	-82	-2.3325
+203	-82	-2.4168
+204	-82	-2.5211
+205	-82	-2.4073
+206	-82	-2.394
+207	-82	-2.3806
+208	-82	-2.3673
+209	-82	-2.354
+210	-82	-2.3406
+211	-82	-2.3273
+212	-82	-2.3139
+213	-82	-2.2973
+214	-82	-2.2571
+215	-82	-2.2178
+216	-82	-2.1739
+217	-82	-2.0784
+218	-82	-1.983
+219	-82	-1.9817
+220	-82	-1.9934
+221	-82	-2.0052
+222	-82	-1.9566
+223	-82	-1.9017
+224	-82	-1.8468
+225	-82	-1.7919
+226	-82	-1.737
+227	-82	-1.6821
+228	-82	-1.6272
+229	-82	-1.5723
+230	-82	-1.5174
+231	-82	-1.4625
+232	-82	-1.3918
+233	-82	-1.2997
+234	-82	-1.2076
+235	-82	-1.1155
+236	-82	-1.0235
+237	-82	-1.038
+238	-82	-1.6581
+239	-82	-2.2782
+240	-82	-3.043
+241	-82	-4.1457
+242	-82	-4.9923
+243	-82	-4.7005
+244	-82	-4.4087
+245	-82	-4.1169
+246	-82	-3.8251
+247	-82	-3.5333
+248	-82	-3.1074
+249	-82	-3.5521
+250	-82	-5.6214
+251	-82	-7.8165
+252	-82	-7.9408
+253	-82	-7.487
+254	-82	-7.0332
+255	-82	-6.5794
+256	-82	-6.1256
+257	-82	-5.3731
+258	-82	-4.6143
+259	-82	-3.8555
+260	-82	-3.0968
+261	-82	-2.338
+262	-82	-1.5792
+263	-82	-0.88107
+264	-82	-0.96497
+265	-82	-1.0489
+266	-82	-1.1328
+267	-82	-1.2167
+268	-82	-1.3006
+269	-82	-1.3845
+270	-82	-1.4684
+271	-82	-1.5523
+272	-82	-1.6362
+273	-82	-1.7201
+274	-82	-1.804
+275	-82	-1.8879
+276	-82	-1.7229
+277	-82	-1.4887
+278	-82	-1.2806
+279	-82	-1.258
+280	-82	-1.2355
+281	-82	-1.213
+282	-82	-1.1905
+283	-82	-1.168
+284	-82	-1.2054
+285	-82	-1.2908
+286	-82	-1.3218
+287	-82	-1.309
+288	-82	-1.2962
+289	-82	-1.2833
+290	-82	-1.2711
+291	-82	-1.2706
+292	-82	-1.2702
+293	-82	-1.2697
+294	-82	-1.0984
+295	-82	-1.1524
+296	-82	-1.2707
+297	-82	-1.389
+298	-82	-1.5074
+299	-82	-1.5752
+300	-82	-1.6335
+301	-82	-1.6919
+302	-82	-1.585
+303	-82	-1.553
+304	-82	-1.612
+305	-82	-1.5956
+306	-82	-1.5792
+307	-82	-1.5629
+308	-82	-1.5465
+309	-82	-1.5302
+310	-82	-1.477
+311	-82	-1.37
+312	-82	-1.2562
+313	-82	-1.2003
+314	-82	-1.0955
+315	-82	-0.99066
+316	-82	-0.89708
+317	-82	-0.81445
+318	-82	-0.73181
+319	-82	-0.64189
+320	-82	-0.48748
+321	-82	-0.52933
+322	-82	-0.59309
+323	-82	-0.57879
+324	-82	-0.56448
+325	-82	-0.55017
+326	-82	-0.53587
+327	-82	-0.4778
+328	-82	-0.37601
+329	-82	-0.27422
+330	-82	-0.17243
+331	-82	-0.070643
+332	-82	0.031145
+333	-82	0.10606
+334	-82	-0.12657
+335	-82	-0.35921
+336	-82	-0.1757
+337	-82	0.066454
+338	-82	0.13736
+339	-82	0.18369
+340	-82	0.23002
+341	-82	0.27636
+342	-82	0.41528
+343	-82	0.57184
+344	-82	0.72841
+345	-82	0.80426
+346	-82	0.79578
+347	-82	0.78357
+348	-82	0.76764
+349	-82	0.75172
+350	-82	0.7358
+351	-82	0.71987
+352	-82	0.70395
+353	-82	0.69033
+354	-82	0.68009
+355	-82	0.6782
+356	-82	0.6458
+357	-82	0.6329
+358	-82	0.63524
+359	-82	0.63759
+360	-82	0.63993
+0	-81.5	0.79048
+1	-81.5	0.79282
+2	-81.5	0.79516
+3	-81.5	0.79751
+4	-81.5	0.79985
+5	-81.5	0.80219
+6	-81.5	0.80454
+7	-81.5	0.80688
+8	-81.5	0.80922
+9	-81.5	0.81157
+10	-81.5	0.79514
+11	-81.5	0.78136
+12	-81.5	0.77286
+13	-81.5	0.77012
+14	-81.5	0.78071
+15	-81.5	0.7913
+16	-81.5	0.80189
+17	-81.5	0.81248
+18	-81.5	0.81927
+19	-81.5	0.82417
+20	-81.5	0.82906
+21	-81.5	0.83396
+22	-81.5	0.83885
+23	-81.5	0.84375
+24	-81.5	0.82259
+25	-81.5	0.80028
+26	-81.5	0.79838
+27	-81.5	0.82234
+28	-81.5	0.82109
+29	-81.5	0.79974
+30	-81.5	0.7784
+31	-81.5	0.75785
+32	-81.5	0.76636
+33	-81.5	0.77487
+34	-81.5	0.78338
+35	-81.5	0.79189
+36	-81.5	0.80039
+37	-81.5	0.8089
+38	-81.5	0.81741
+39	-81.5	0.82592
+40	-81.5	0.83443
+41	-81.5	0.84294
+42	-81.5	0.85145
+43	-81.5	0.85996
+44	-81.5	0.86847
+45	-81.5	0.87698
+46	-81.5	0.88459
+47	-81.5	0.85937
+48	-81.5	0.84844
+49	-81.5	0.80818
+50	-81.5	0.77698
+51	-81.5	0.74581
+52	-81.5	0.71464
+53	-81.5	0.68347
+54	-81.5	0.6523
+55	-81.5	0.62113
+56	-81.5	0.58996
+57	-81.5	0.55879
+58	-81.5	0.52762
+59	-81.5	0.49645
+60	-81.5	0.46529
+61	-81.5	0.43412
+62	-81.5	0.40295
+63	-81.5	0.37178
+64	-81.5	0.34061
+65	-81.5	0.30917
+66	-81.5	0.27754
+67	-81.5	0.24592
+68	-81.5	0.2255
+69	-81.5	0.20516
+70	-81.5	0.17523
+71	-81.5	0.12333
+72	-81.5	0.071428
+73	-81.5	0.019528
+74	-81.5	0.026274
+75	-81.5	0.046559
+76	-81.5	0.066844
+77	-81.5	0.087129
+78	-81.5	0.10741
+79	-81.5	0.1277
+80	-81.5	0.13777
+81	-81.5	0.14639
+82	-81.5	0.155
+83	-81.5	0.16361
+84	-81.5	0.17223
+85	-81.5	0.18084
+86	-81.5	0.18945
+87	-81.5	0.19807
+88	-81.5	0.20668
+89	-81.5	0.21529
+90	-81.5	0.22391
+91	-81.5	0.23223
+92	-81.5	0.23395
+93	-81.5	0.23568
+94	-81.5	0.2374
+95	-81.5	0.23913
+96	-81.5	0.24085
+97	-81.5	0.24258
+98	-81.5	0.2443
+99	-81.5	0.24603
+100	-81.5	0.24775
+101	-81.5	0.24948
+102	-81.5	0.2512
+103	-81.5	0.25293
+104	-81.5	0.25465
+105	-81.5	0.25637
+106	-81.5	0.26489
+107	-81.5	0.27898
+108	-81.5	0.29307
+109	-81.5	0.30716
+110	-81.5	0.32125
+111	-81.5	0.33535
+112	-81.5	0.34944
+113	-81.5	0.36353
+114	-81.5	0.37447
+115	-81.5	0.32583
+116	-81.5	0.27719
+117	-81.5	0.22855
+118	-81.5	0.17991
+119	-81.5	0.13127
+120	-81.5	0.082629
+121	-81.5	0.069038
+122	-81.5	0.1008
+123	-81.5	0.13257
+124	-81.5	0.15448
+125	-81.5	0.15255
+126	-81.5	0.11923
+127	-81.5	0.12467
+128	-81.5	0.13011
+129	-81.5	0.13555
+130	-81.5	0.14099
+131	-81.5	0.14526
+132	-81.5	0.13802
+133	-81.5	0.13079
+134	-81.5	0.12356
+135	-81.5	0.11633
+136	-81.5	0.1091
+137	-81.5	0.10187
+138	-81.5	0.094639
+139	-81.5	0.087408
+140	-81.5	0.080178
+141	-81.5	0.072947
+142	-81.5	0.065716
+143	-81.5	0.058485
+144	-81.5	0.05315
+145	-81.5	0.029869
+146	-81.5	0.0065869
+147	-81.5	-0.016695
+148	-81.5	-0.039976
+149	-81.5	-0.063258
+150	-81.5	-0.086539
+151	-81.5	-0.10982
+152	-81.5	-0.1331
+153	-81.5	-0.15538
+154	-81.5	-0.23039
+155	-81.5	-0.3143
+156	-81.5	-0.39821
+157	-81.5	-0.48212
+158	-81.5	-0.56603
+159	-81.5	-0.66385
+160	-81.5	-0.8554
+161	-81.5	-0.86228
+162	-81.5	-0.95279
+163	-81.5	-0.98795
+164	-81.5	-1.0159
+165	-81.5	-1.0437
+166	-81.5	-1.3843
+167	-81.5	-1.5726
+168	-81.5	-1.7566
+169	-81.5	-1.9187
+170	-81.5	-2.0712
+171	-81.5	-2.0517
+172	-81.5	-2.026
+173	-81.5	-2.0003
+174	-81.5	-2.0964
+175	-81.5	-2.2399
+176	-81.5	-2.3834
+177	-81.5	-2.4427
+178	-81.5	-2.5065
+179	-81.5	-2.5703
+180	-81.5	-2.6341
+181	-81.5	-2.6979
+182	-81.5	-2.7617
+183	-81.5	-2.8255
+184	-81.5	-2.8893
+185	-81.5	-2.7803
+186	-81.5	-2.6704
+187	-81.5	-2.6227
+188	-81.5	-2.5787
+189	-81.5	-2.5163
+190	-81.5	-2.4495
+191	-81.5	-2.2612
+192	-81.5	-2.2661
+193	-81.5	-2.3385
+194	-81.5	-2.4317
+195	-81.5	-2.5249
+196	-81.5	-2.6181
+197	-81.5	-2.6704
+198	-81.5	-2.698
+199	-81.5	-2.7671
+200	-81.5	-2.8362
+201	-81.5	-2.6301
+202	-81.5	-2.4121
+203	-81.5	-2.4686
+204	-81.5	-2.5729
+205	-81.5	-2.6099
+206	-81.5	-2.5965
+207	-81.5	-2.5832
+208	-81.5	-2.5714
+209	-81.5	-2.5615
+210	-81.5	-2.5517
+211	-81.5	-2.5419
+212	-81.5	-2.532
+213	-81.5	-2.5229
+214	-81.5	-2.4942
+215	-81.5	-2.455
+216	-81.5	-2.3915
+217	-81.5	-2.296
+218	-81.5	-2.2006
+219	-81.5	-2.1587
+220	-81.5	-2.1705
+221	-81.5	-2.1822
+222	-81.5	-2.194
+223	-81.5	-2.1693
+224	-81.5	-2.1144
+225	-81.5	-2.0595
+226	-81.5	-2.0046
+227	-81.5	-1.9497
+228	-81.5	-1.8948
+229	-81.5	-1.8399
+230	-81.5	-1.7767
+231	-81.5	-1.6846
+232	-81.5	-1.5926
+233	-81.5	-1.5005
+234	-81.5	-1.4084
+235	-81.5	-1.3164
+236	-81.5	-1.2243
+237	-81.5	-1.6945
+238	-81.5	-2.3146
+239	-81.5	-2.9347
+240	-81.5	-3.7071
+241	-81.5	-4.8099
+242	-81.5	-5.9126
+243	-81.5	-5.989
+244	-81.5	-5.6972
+245	-81.5	-5.4054
+246	-81.5	-5.1136
+247	-81.5	-4.8218
+248	-81.5	-4.2418
+249	-81.5	-4.4914
+250	-81.5	-5.4282
+251	-81.5	-7.6232
+252	-81.5	-8.9946
+253	-81.5	-8.5408
+254	-81.5	-8.0869
+255	-81.5	-7.6331
+256	-81.5	-7.1793
+257	-81.5	-6.721
+258	-81.5	-5.9622
+259	-81.5	-5.2035
+260	-81.5	-4.4447
+261	-81.5	-3.6859
+262	-81.5	-2.9256
+263	-81.5	-2.1692
+264	-81.5	-1.7532
+265	-81.5	-1.8371
+266	-81.5	-1.921
+267	-81.5	-2.0049
+268	-81.5	-2.0888
+269	-81.5	-2.1727
+270	-81.5	-2.2566
+271	-81.5	-2.3405
+272	-81.5	-2.4244
+273	-81.5	-2.5083
+274	-81.5	-2.5269
+275	-81.5	-2.2154
+276	-81.5	-1.904
+277	-81.5	-1.7373
+278	-81.5	-1.5283
+279	-81.5	-1.3172
+280	-81.5	-1.2923
+281	-81.5	-1.2697
+282	-81.5	-1.2472
+283	-81.5	-1.2519
+284	-81.5	-1.3374
+285	-81.5	-1.336
+286	-81.5	-1.3232
+287	-81.5	-1.3103
+288	-81.5	-1.2975
+289	-81.5	-1.2847
+290	-81.5	-1.2729
+291	-81.5	-1.2725
+292	-81.5	-1.2721
+293	-81.5	-1.2716
+294	-81.5	-1.2469
+295	-81.5	-1.1558
+296	-81.5	-1.2742
+297	-81.5	-1.3925
+298	-81.5	-1.5108
+299	-81.5	-1.6291
+300	-81.5	-1.6926
+301	-81.5	-1.6045
+302	-81.5	-1.4793
+303	-81.5	-1.4401
+304	-81.5	-1.5304
+305	-81.5	-1.5509
+306	-81.5	-1.5345
+307	-81.5	-1.5182
+308	-81.5	-1.5018
+309	-81.5	-1.4132
+310	-81.5	-1.3062
+311	-81.5	-1.1836
+312	-81.5	-1.0554
+313	-81.5	-1.0464
+314	-81.5	-0.95657
+315	-81.5	-0.87393
+316	-81.5	-0.7913
+317	-81.5	-0.70866
+318	-81.5	-0.62602
+319	-81.5	-0.49792
+320	-81.5	-0.34402
+321	-81.5	-0.35355
+322	-81.5	-0.43663
+323	-81.5	-0.48565
+324	-81.5	-0.47135
+325	-81.5	-0.4444
+326	-81.5	-0.3607
+327	-81.5	-0.32019
+328	-81.5	-0.27904
+329	-81.5	-0.18177
+330	-81.5	-0.079985
+331	-81.5	0.021803
+332	-81.5	0.12359
+333	-81.5	0.1569
+334	-81.5	-0.075735
+335	-81.5	-0.16146
+336	-81.5	-0.11861
+337	-81.5	0.067532
+338	-81.5	0.18932
+339	-81.5	0.23565
+340	-81.5	0.30865
+341	-81.5	0.46522
+342	-81.5	0.62178
+343	-81.5	0.77835
+344	-81.5	0.93492
+345	-81.5	0.97646
+346	-81.5	0.96799
+347	-81.5	0.9595
+348	-81.5	0.94358
+349	-81.5	0.92765
+350	-81.5	0.91173
+351	-81.5	0.89764
+352	-81.5	0.88562
+353	-81.5	0.87445
+354	-81.5	0.86857
+355	-81.5	0.86801
+356	-81.5	0.84356
+357	-81.5	0.80964
+358	-81.5	0.78579
+359	-81.5	0.78813
+360	-81.5	0.79048
+0	-81	0.94103
+1	-81	0.94337
+2	-81	0.94571
+3	-81	0.94806
+4	-81	0.9504
+5	-81	0.95274
+6	-81	0.95508
+7	-81	0.95743
+8	-81	0.95977
+9	-81	0.94761
+10	-81	0.92501
+11	-81	0.91431
+12	-81	0.90582
+13	-81	0.89732
+14	-81	0.8938
+15	-81	0.90439
+16	-81	0.91498
+17	-81	0.92373
+18	-81	0.92863
+19	-81	0.93352
+20	-81	0.93842
+21	-81	0.94331
+22	-81	0.94821
+23	-81	0.95145
+24	-81	0.92914
+25	-81	0.90683
+26	-81	0.90294
+27	-81	0.93129
+28	-81	0.93621
+29	-81	0.91487
+30	-81	0.89352
+31	-81	0.87218
+32	-81	0.85432
+33	-81	0.86283
+34	-81	0.87134
+35	-81	0.87984
+36	-81	0.88835
+37	-81	0.89686
+38	-81	0.90537
+39	-81	0.91388
+40	-81	0.92239
+41	-81	0.9309
+42	-81	0.93941
+43	-81	0.94792
+44	-81	0.95643
+45	-81	0.9385
+46	-81	0.91327
+47	-81	0.88805
+48	-81	0.88797
+49	-81	0.86752
+50	-81	0.81033
+51	-81	0.77916
+52	-81	0.74799
+53	-81	0.71682
+54	-81	0.68565
+55	-81	0.65448
+56	-81	0.62331
+57	-81	0.59214
+58	-81	0.56097
+59	-81	0.5298
+60	-81	0.49863
+61	-81	0.46747
+62	-81	0.4363
+63	-81	0.40513
+64	-81	0.37369
+65	-81	0.34207
+66	-81	0.31045
+67	-81	0.2795
+68	-81	0.25916
+69	-81	0.23882
+70	-81	0.21848
+71	-81	0.18481
+72	-81	0.13291
+73	-81	0.081008
+74	-81	0.056902
+75	-81	0.077187
+76	-81	0.097471
+77	-81	0.11776
+78	-81	0.13804
+79	-81	0.15833
+80	-81	0.17861
+81	-81	0.18926
+82	-81	0.19788
+83	-81	0.20649
+84	-81	0.2151
+85	-81	0.22372
+86	-81	0.23233
+87	-81	0.24094
+88	-81	0.24956
+89	-81	0.25817
+90	-81	0.26678
+91	-81	0.2754
+92	-81	0.28401
+93	-81	0.29262
+94	-81	0.29604
+95	-81	0.29777
+96	-81	0.29949
+97	-81	0.30122
+98	-81	0.30294
+99	-81	0.30467
+100	-81	0.30639
+101	-81	0.30812
+102	-81	0.30984
+103	-81	0.31157
+104	-81	0.31698
+105	-81	0.33107
+106	-81	0.34517
+107	-81	0.35926
+108	-81	0.37335
+109	-81	0.38744
+110	-81	0.40153
+111	-81	0.41563
+112	-81	0.42972
+113	-81	0.44381
+114	-81	0.40594
+115	-81	0.3573
+116	-81	0.30866
+117	-81	0.26002
+118	-81	0.21138
+119	-81	0.16274
+120	-81	0.1141
+121	-81	0.10226
+122	-81	0.13402
+123	-81	0.16579
+124	-81	0.1829
+125	-81	0.19071
+126	-81	0.15274
+127	-81	0.13639
+128	-81	0.14183
+129	-81	0.14728
+130	-81	0.15272
+131	-81	0.15816
+132	-81	0.1636
+133	-81	0.16904
+134	-81	0.16553
+135	-81	0.1583
+136	-81	0.15107
+137	-81	0.14384
+138	-81	0.13661
+139	-81	0.12938
+140	-81	0.12215
+141	-81	0.11492
+142	-81	0.10769
+143	-81	0.093643
+144	-81	0.10882
+145	-81	0.097022
+146	-81	0.073741
+147	-81	0.050459
+148	-81	0.027178
+149	-81	0.0038959
+150	-81	-0.019386
+151	-81	-0.042667
+152	-81	-0.064556
+153	-81	-0.082954
+154	-81	-0.11512
+155	-81	-0.19903
+156	-81	-0.28294
+157	-81	-0.36685
+158	-81	-0.46572
+159	-81	-0.61066
+160	-81	-0.83749
+161	-81	-0.77989
+162	-81	-0.8704
+163	-81	-0.96091
+164	-81	-1.0514
+165	-81	-1.1011
+166	-81	-1.3271
+167	-81	-1.5154
+168	-81	-1.7
+169	-81	-1.8833
+170	-81	-2.0242
+171	-81	-1.9985
+172	-81	-1.9729
+173	-81	-1.9472
+174	-81	-1.9395
+175	-81	-2.083
+176	-81	-2.1683
+177	-81	-2.2407
+178	-81	-2.3178
+179	-81	-2.4006
+180	-81	-2.4834
+181	-81	-2.5661
+182	-81	-2.6489
+183	-81	-2.7317
+184	-81	-2.8107
+185	-81	-2.718
+186	-81	-2.6244
+187	-81	-2.5803
+188	-81	-2.5363
+189	-81	-2.4798
+190	-81	-2.3634
+191	-81	-2.1094
+192	-81	-2.0478
+193	-81	-2.0778
+194	-81	-2.1078
+195	-81	-2.2006
+196	-81	-2.2938
+197	-81	-2.387
+198	-81	-2.7637
+199	-81	-2.9224
+200	-81	-2.9277
+201	-81	-2.7097
+202	-81	-2.4918
+203	-81	-2.5204
+204	-81	-2.6246
+205	-81	-2.5914
+206	-81	-2.8193
+207	-81	-2.8094
+208	-81	-2.7996
+209	-81	-2.7898
+210	-81	-2.7799
+211	-81	-2.7701
+212	-81	-2.7606
+213	-81	-2.7524
+214	-81	-2.7314
+215	-81	-2.6922
+216	-81	-2.6091
+217	-81	-2.5136
+218	-81	-2.4182
+219	-81	-2.3358
+220	-81	-2.3476
+221	-81	-2.3593
+222	-81	-2.3711
+223	-81	-2.3828
+224	-81	-2.382
+225	-81	-2.3271
+226	-81	-2.2722
+227	-81	-2.2173
+228	-81	-2.1617
+229	-81	-2.0696
+230	-81	-1.9775
+231	-81	-1.8855
+232	-81	-1.7934
+233	-81	-1.7013
+234	-81	-1.6093
+235	-81	-1.5172
+236	-81	-1.731
+237	-81	-2.3511
+238	-81	-2.9712
+239	-81	-3.5913
+240	-81	-4.3713
+241	-81	-5.474
+242	-81	-6.5768
+243	-81	-7.2775
+244	-81	-6.9857
+245	-81	-6.6939
+246	-81	-6.4021
+247	-81	-5.9886
+248	-81	-5.3762
+249	-81	-5.4307
+250	-81	-6.2877
+251	-81	-7.43
+252	-81	-9.6251
+253	-81	-9.5945
+254	-81	-9.1407
+255	-81	-8.6869
+256	-81	-8.2331
+257	-81	-7.7793
+258	-81	-7.3101
+259	-81	-6.5514
+260	-81	-5.7926
+261	-81	-5.0338
+262	-81	-4.2665
+263	-81	-3.5045
+264	-81	-2.82
+265	-81	-2.6253
+266	-81	-2.7092
+267	-81	-2.7931
+268	-81	-2.877
+269	-81	-2.9609
+270	-81	-3.0448
+271	-81	-3.1288
+272	-81	-3.2127
+273	-81	-3.0194
+274	-81	-2.708
+275	-81	-2.3965
+276	-81	-2.1264
+277	-81	-1.9847
+278	-81	-1.7789
+279	-81	-1.5678
+280	-81	-1.3568
+281	-81	-1.3265
+282	-81	-1.304
+283	-81	-1.363
+284	-81	-1.3501
+285	-81	-1.3373
+286	-81	-1.3245
+287	-81	-1.3117
+288	-81	-1.2988
+289	-81	-1.286
+290	-81	-1.2748
+291	-81	-1.2744
+292	-81	-1.2739
+293	-81	-1.2735
+294	-81	-1.2731
+295	-81	-1.2187
+296	-81	-1.2776
+297	-81	-1.3959
+298	-81	-1.5142
+299	-81	-1.6325
+300	-81	-1.624
+301	-81	-1.4734
+302	-81	-1.3782
+303	-81	-1.3391
+304	-81	-1.3426
+305	-81	-1.5062
+306	-81	-1.4898
+307	-81	-1.4563
+308	-81	-1.3493
+309	-81	-1.2424
+310	-81	-1.1354
+311	-81	-0.99439
+312	-81	-0.85465
+313	-81	-0.84564
+314	-81	-0.80162
+315	-81	-0.73712
+316	-81	-0.67261
+317	-81	-0.60288
+318	-81	-0.52024
+319	-81	-0.35396
+320	-81	-0.20056
+321	-81	-0.17777
+322	-81	-0.26085
+323	-81	-0.34392
+324	-81	-0.33196
+325	-81	-0.24826
+326	-81	-0.16801
+327	-81	-0.14296
+328	-81	-0.10221
+329	-81	-0.061063
+330	-81	0.012461
+331	-81	0.11425
+332	-81	0.21604
+333	-81	0.20774
+334	-81	0.034825
+335	-81	0.040973
+336	-81	0.085448
+337	-81	0.1307
+338	-81	0.24128
+339	-81	0.3586
+340	-81	0.51516
+341	-81	0.67173
+342	-81	0.82829
+343	-81	0.98486
+344	-81	1.1414
+345	-81	1.1487
+346	-81	1.1402
+347	-81	1.1317
+348	-81	1.1195
+349	-81	1.1049
+350	-81	1.0929
+351	-81	1.0809
+352	-81	1.0689
+353	-81	1.0629
+354	-81	1.057
+355	-81	1.0578
+356	-81	1.0413
+357	-81	1.0074
+358	-81	0.97349
+359	-81	0.93957
+360	-81	0.94103
+0	-80.5	1.1034
+1	-80.5	1.0939
+2	-80.5	1.0963
+3	-80.5	1.0986
+4	-80.5	1.1009
+5	-80.5	1.1033
+6	-80.5	1.1056
+7	-80.5	1.108
+8	-80.5	1.1001
+9	-80.5	1.0775
+10	-80.5	1.0558
+11	-80.5	1.0473
+12	-80.5	1.0388
+13	-80.5	1.0303
+14	-80.5	1.0218
+15	-80.5	1.0175
+16	-80.5	1.0281
+17	-80.5	1.0331
+18	-80.5	1.038
+19	-80.5	1.0429
+20	-80.5	1.0478
+21	-80.5	1.0527
+22	-80.5	1.0576
+23	-80.5	1.058
+24	-80.5	1.0357
+25	-80.5	1.0134
+26	-80.5	1.0096
+27	-80.5	1.0402
+28	-80.5	1.0513
+29	-80.5	1.03
+30	-80.5	1.0086
+31	-80.5	0.9873
+32	-80.5	0.96595
+33	-80.5	0.95079
+34	-80.5	0.95929
+35	-80.5	0.9678
+36	-80.5	0.97631
+37	-80.5	0.98482
+38	-80.5	0.99333
+39	-80.5	1.0018
+40	-80.5	1.0103
+41	-80.5	1.0189
+42	-80.5	1.0274
+43	-80.5	1.0176
+44	-80.5	0.9924
+45	-80.5	0.96718
+46	-80.5	0.94196
+47	-80.5	0.91673
+48	-80.5	0.92749
+49	-80.5	0.92687
+50	-80.5	0.86685
+51	-80.5	0.81251
+52	-80.5	0.78134
+53	-80.5	0.75017
+54	-80.5	0.719
+55	-80.5	0.68783
+56	-80.5	0.65666
+57	-80.5	0.62549
+58	-80.5	0.59432
+59	-80.5	0.56315
+60	-80.5	0.53198
+61	-80.5	0.50082
+62	-80.5	0.46965
+63	-80.5	0.43822
+64	-80.5	0.4066
+65	-80.5	0.37497
+66	-80.5	0.34335
+67	-80.5	0.31316
+68	-80.5	0.29282
+69	-80.5	0.27248
+70	-80.5	0.25214
+71	-80.5	0.2318
+72	-80.5	0.19439
+73	-80.5	0.14249
+74	-80.5	0.090589
+75	-80.5	0.10781
+76	-80.5	0.1281
+77	-80.5	0.14838
+78	-80.5	0.16867
+79	-80.5	0.18895
+80	-80.5	0.20924
+81	-80.5	0.22952
+82	-80.5	0.24014
+83	-80.5	0.24936
+84	-80.5	0.25798
+85	-80.5	0.26659
+86	-80.5	0.2752
+87	-80.5	0.28382
+88	-80.5	0.29243
+89	-80.5	0.30104
+90	-80.5	0.30966
+91	-80.5	0.31827
+92	-80.5	0.32688
+93	-80.5	0.3355
+94	-80.5	0.34411
+95	-80.5	0.35272
+96	-80.5	0.35813
+97	-80.5	0.35986
+98	-80.5	0.36158
+99	-80.5	0.36331
+100	-80.5	0.36503
+101	-80.5	0.36676
+102	-80.5	0.36908
+103	-80.5	0.38317
+104	-80.5	0.39726
+105	-80.5	0.41135
+106	-80.5	0.42545
+107	-80.5	0.43954
+108	-80.5	0.45363
+109	-80.5	0.46772
+110	-80.5	0.47227
+111	-80.5	0.47458
+112	-80.5	0.4769
+113	-80.5	0.47642
+114	-80.5	0.43741
+115	-80.5	0.38877
+116	-80.5	0.34013
+117	-80.5	0.29149
+118	-80.5	0.24286
+119	-80.5	0.19422
+120	-80.5	0.14558
+121	-80.5	0.13548
+122	-80.5	0.16724
+123	-80.5	0.19901
+124	-80.5	0.21132
+125	-80.5	0.22217
+126	-80.5	0.1909
+127	-80.5	0.15293
+128	-80.5	0.15356
+129	-80.5	0.159
+130	-80.5	0.16444
+131	-80.5	0.16988
+132	-80.5	0.17532
+133	-80.5	0.18076
+134	-80.5	0.18621
+135	-80.5	0.19165
+136	-80.5	0.19304
+137	-80.5	0.18581
+138	-80.5	0.17858
+139	-80.5	0.17135
+140	-80.5	0.16412
+141	-80.5	0.15689
+142	-80.5	0.14218
+143	-80.5	0.12633
+144	-80.5	0.15167
+145	-80.5	0.16418
+146	-80.5	0.14089
+147	-80.5	0.11761
+148	-80.5	0.094331
+149	-80.5	0.07105
+150	-80.5	0.047768
+151	-80.5	0.026266
+152	-80.5	0.0078681
+153	-80.5	-0.010529
+154	-80.5	-0.038244
+155	-80.5	-0.08376
+156	-80.5	-0.16767
+157	-80.5	-0.26758
+158	-80.5	-0.41252
+159	-80.5	-0.58166
+160	-80.5	-0.81958
+161	-80.5	-0.72526
+162	-80.5	-0.78801
+163	-80.5	-0.87852
+164	-80.5	-0.96861
+165	-80.5	-1.0793
+166	-80.5	-1.2699
+167	-80.5	-1.4582
+168	-80.5	-1.6435
+169	-80.5	-1.8268
+170	-80.5	-1.971
+171	-80.5	-1.9454
+172	-80.5	-1.9161
+173	-80.5	-1.8859
+174	-80.5	-1.8368
+175	-80.5	-1.8441
+176	-80.5	-1.9093
+177	-80.5	-1.9811
+178	-80.5	-2.0584
+179	-80.5	-2.135
+180	-80.5	-2.2134
+181	-80.5	-2.2962
+182	-80.5	-2.379
+183	-80.5	-2.4623
+184	-80.5	-2.5404
+185	-80.5	-2.6149
+186	-80.5	-2.582
+187	-80.5	-2.5379
+188	-80.5	-2.4939
+189	-80.5	-2.4434
+190	-80.5	-2.2057
+191	-80.5	-1.9575
+192	-80.5	-1.8317
+193	-80.5	-1.8595
+194	-80.5	-1.8895
+195	-80.5	-1.9196
+196	-80.5	-1.9695
+197	-80.5	-2.3262
+198	-80.5	-2.7193
+199	-80.5	-3.0777
+200	-80.5	-3.0073
+201	-80.5	-2.7893
+202	-80.5	-2.5714
+203	-80.5	-2.5721
+204	-80.5	-2.5689
+205	-80.5	-2.4879
+206	-80.5	-2.3144
+207	-80.5	-2.8777
+208	-80.5	-3.0279
+209	-80.5	-3.018
+210	-80.5	-3.0082
+211	-80.5	-2.9984
+212	-80.5	-2.9901
+213	-80.5	-2.9819
+214	-80.5	-2.9686
+215	-80.5	-2.9221
+216	-80.5	-2.8267
+217	-80.5	-2.7313
+218	-80.5	-2.6358
+219	-80.5	-2.5539
+220	-80.5	-2.675
+221	-80.5	-2.6351
+222	-80.5	-2.5951
+223	-80.5	-2.5599
+224	-80.5	-2.5717
+225	-80.5	-2.5834
+226	-80.5	-2.5397
+227	-80.5	-2.4546
+228	-80.5	-2.3625
+229	-80.5	-2.2704
+230	-80.5	-2.2231
+231	-80.5	-2.1987
+232	-80.5	-2.1744
+233	-80.5	-2.1501
+234	-80.5	-2.1258
+235	-80.5	-2.2591
+236	-80.5	-2.4191
+237	-80.5	-3.0076
+238	-80.5	-3.6278
+239	-80.5	-4.2479
+240	-80.5	-5.0355
+241	-80.5	-6.1382
+242	-80.5	-7.241
+243	-80.5	-8.3437
+244	-80.5	-8.2742
+245	-80.5	-7.9824
+246	-80.5	-7.6906
+247	-80.5	-7.1231
+248	-80.5	-6.5106
+249	-80.5	-6.37
+250	-80.5	-7.227
+251	-80.5	-8.0841
+252	-80.5	-9.4318
+253	-80.5	-10.648
+254	-80.5	-10.194
+255	-80.5	-9.7407
+256	-80.5	-9.2869
+257	-80.5	-8.833
+258	-80.5	-8.3792
+259	-80.5	-7.8993
+260	-80.5	-7.1405
+261	-80.5	-6.3751
+262	-80.5	-5.6073
+263	-80.5	-4.8398
+264	-80.5	-4.1553
+265	-80.5	-3.4708
+266	-80.5	-3.4975
+267	-80.5	-3.5814
+268	-80.5	-3.6653
+269	-80.5	-3.7492
+270	-80.5	-3.8331
+271	-80.5	-3.8235
+272	-80.5	-3.512
+273	-80.5	-3.2005
+274	-80.5	-2.889
+275	-80.5	-2.5776
+276	-80.5	-2.3738
+277	-80.5	-2.2321
+278	-80.5	-2.0295
+279	-80.5	-1.8184
+280	-80.5	-1.6074
+281	-80.5	-1.3964
+282	-80.5	-1.3771
+283	-80.5	-1.3643
+284	-80.5	-1.3515
+285	-80.5	-1.3386
+286	-80.5	-1.3258
+287	-80.5	-1.313
+288	-80.5	-1.3002
+289	-80.5	-1.2873
+290	-80.5	-1.2767
+291	-80.5	-1.2763
+292	-80.5	-1.2758
+293	-80.5	-1.2754
+294	-80.5	-1.2749
+295	-80.5	-1.2745
+296	-80.5	-1.281
+297	-80.5	-1.3946
+298	-80.5	-1.4245
+299	-80.5	-1.4544
+300	-80.5	-1.4901
+301	-80.5	-1.3423
+302	-80.5	-1.2771
+303	-80.5	-1.238
+304	-80.5	-1.1988
+305	-80.5	-1.32
+306	-80.5	-1.3739
+307	-80.5	-1.2627
+308	-80.5	-1.1514
+309	-80.5	-1.0402
+310	-80.5	-0.93028
+311	-80.5	-0.80517
+312	-80.5	-0.65389
+313	-80.5	-0.62348
+314	-80.5	-0.59707
+315	-80.5	-0.54084
+316	-80.5	-0.47633
+317	-80.5	-0.41183
+318	-80.5	-0.31934
+319	-80.5	-0.21
+320	-80.5	-0.057099
+321	-80.5	-0.021527
+322	-80.5	-0.085065
+323	-80.5	-0.15704
+324	-80.5	-0.13582
+325	-80.5	-0.052121
+326	-80.5	0.024385
+327	-80.5	0.056367
+328	-80.5	0.074614
+329	-80.5	0.11576
+330	-80.5	0.15692
+331	-80.5	0.2067
+332	-80.5	0.30848
+333	-80.5	0.25858
+334	-80.5	0.23726
+335	-80.5	0.24426
+336	-80.5	0.28951
+337	-80.5	0.33476
+338	-80.5	0.39508
+339	-80.5	0.5651
+340	-80.5	0.72167
+341	-80.5	0.87823
+342	-80.5	1.0348
+343	-80.5	1.1914
+344	-80.5	1.3293
+345	-80.5	1.3209
+346	-80.5	1.3124
+347	-80.5	1.3039
+348	-80.5	1.3007
+349	-80.5	1.2882
+350	-80.5	1.2762
+351	-80.5	1.2642
+352	-80.5	1.2573
+353	-80.5	1.2514
+354	-80.5	1.2455
+355	-80.5	1.2476
+356	-80.5	1.2391
+357	-80.5	1.2052
+358	-80.5	1.1712
+359	-80.5	1.1373
+360	-80.5	1.1034
+0	-80	1.3012
+1	-80	1.2673
+2	-80	1.2468
+3	-80	1.2492
+4	-80	1.2515
+5	-80	1.2538
+6	-80	1.2562
+7	-80	1.2525
+8	-80	1.23
+9	-80	1.2074
+10	-80	1.1887
+11	-80	1.1802
+12	-80	1.1717
+13	-80	1.1632
+14	-80	1.1547
+15	-80	1.1462
+16	-80	1.1376
+17	-80	1.1424
+18	-80	1.1473
+19	-80	1.1522
+20	-80	1.1571
+21	-80	1.162
+22	-80	1.1669
+23	-80	1.1646
+24	-80	1.1422
+25	-80	1.1199
+26	-80	1.1186
+27	-80	1.1492
+28	-80	1.1665
+29	-80	1.1451
+30	-80	1.1238
+31	-80	1.1024
+32	-80	1.0811
+33	-80	1.0597
+34	-80	1.0473
+35	-80	1.0558
+36	-80	1.0643
+37	-80	1.0728
+38	-80	1.0813
+39	-80	1.0898
+40	-80	1.0983
+41	-80	1.0967
+42	-80	1.0715
+43	-80	1.0463
+44	-80	1.0211
+45	-80	0.99586
+46	-80	0.97064
+47	-80	0.94541
+48	-80	0.96702
+49	-80	0.98622
+50	-80	0.9262
+51	-80	0.86618
+52	-80	0.81469
+53	-80	0.78352
+54	-80	0.75235
+55	-80	0.72118
+56	-80	0.69001
+57	-80	0.65884
+58	-80	0.62767
+59	-80	0.5965
+60	-80	0.56533
+61	-80	0.53416
+62	-80	0.50275
+63	-80	0.47112
+64	-80	0.4395
+65	-80	0.40787
+66	-80	0.37625
+67	-80	0.34681
+68	-80	0.32648
+69	-80	0.30614
+70	-80	0.2858
+71	-80	0.26546
+72	-80	0.24512
+73	-80	0.20397
+74	-80	0.15207
+75	-80	0.13844
+76	-80	0.15873
+77	-80	0.17901
+78	-80	0.1993
+79	-80	0.21958
+80	-80	0.23987
+81	-80	0.25209
+82	-80	0.23562
+83	-80	0.24423
+84	-80	0.25772
+85	-80	0.2712
+86	-80	0.28469
+87	-80	0.29817
+88	-80	0.31166
+89	-80	0.32514
+90	-80	0.33863
+91	-80	0.35211
+92	-80	0.3656
+93	-80	0.37837
+94	-80	0.38698
+95	-80	0.3956
+96	-80	0.40421
+97	-80	0.41282
+98	-80	0.42022
+99	-80	0.42195
+100	-80	0.42367
+101	-80	0.43526
+102	-80	0.44936
+103	-80	0.46209
+104	-80	0.46441
+105	-80	0.46672
+106	-80	0.46903
+107	-80	0.47134
+108	-80	0.47365
+109	-80	0.47597
+110	-80	0.47828
+111	-80	0.48059
+112	-80	0.47821
+113	-80	0.47684
+114	-80	0.46889
+115	-80	0.42025
+116	-80	0.37161
+117	-80	0.32297
+118	-80	0.27433
+119	-80	0.22569
+120	-80	0.17705
+121	-80	0.1687
+122	-80	0.20046
+123	-80	0.22888
+124	-80	0.23974
+125	-80	0.25059
+126	-80	0.22906
+127	-80	0.19109
+128	-80	0.16529
+129	-80	0.17073
+130	-80	0.17617
+131	-80	0.18161
+132	-80	0.18705
+133	-80	0.19249
+134	-80	0.19793
+135	-80	0.20337
+136	-80	0.20881
+137	-80	0.21425
+138	-80	0.2197
+139	-80	0.21332
+140	-80	0.20609
+141	-80	0.19071
+142	-80	0.17487
+143	-80	0.16321
+144	-80	0.19452
+145	-80	0.22582
+146	-80	0.20805
+147	-80	0.18477
+148	-80	0.16149
+149	-80	0.1382
+150	-80	0.11709
+151	-80	0.09869
+152	-80	0.080293
+153	-80	0.061895
+154	-80	0.034446
+155	-80	0.006081
+156	-80	-0.069448
+157	-80	-0.21439
+158	-80	-0.35932
+159	-80	-0.56375
+160	-80	-0.80167
+161	-80	-0.73257
+162	-80	-0.70562
+163	-80	-0.79012
+164	-80	-0.87364
+165	-80	-1.0179
+166	-80	-1.2112
+167	-80	-1.401
+168	-80	-1.587
+169	-80	-1.7703
+170	-80	-1.8743
+171	-80	-1.8443
+172	-80	-1.8142
+173	-80	-1.6838
+174	-80	-1.5469
+175	-80	-1.5785
+176	-80	-1.6503
+177	-80	-1.7213
+178	-80	-1.7996
+179	-80	-1.8762
+180	-80	-1.9528
+181	-80	-2.0294
+182	-80	-2.1091
+183	-80	-2.1932
+184	-80	-2.2701
+185	-80	-2.2942
+186	-80	-2.3578
+187	-80	-2.3828
+188	-80	-2.3726
+189	-80	-2.3404
+190	-80	-2.048
+191	-80	-1.8057
+192	-80	-1.6799
+193	-80	-1.6311
+194	-80	-1.6554
+195	-80	-1.7089
+196	-80	-1.9216
+197	-80	-2.2856
+198	-80	-2.6749
+199	-80	-3.1944
+200	-80	-3.0869
+201	-80	-2.869
+202	-80	-2.651
+203	-80	-2.581
+204	-80	-2.4376
+205	-80	-2.3844
+206	-80	-2.1183
+207	-80	-2.4318
+208	-80	-2.834
+209	-80	-3.2463
+210	-80	-3.2364
+211	-80	-3.2279
+212	-80	-3.2197
+213	-80	-3.2114
+214	-80	-3.2032
+215	-80	-3.1397
+216	-80	-3.0489
+217	-80	-2.9941
+218	-80	-2.9393
+219	-80	-2.8321
+220	-80	-3.2846
+221	-80	-3.2446
+222	-80	-3.2047
+223	-80	-3.1647
+224	-80	-3.1248
+225	-80	-3.0908
+226	-80	-3.2553
+227	-80	-3.2812
+228	-80	-3.2569
+229	-80	-3.2326
+230	-80	-3.2082
+231	-80	-3.1839
+232	-80	-3.1596
+233	-80	-3.1353
+234	-80	-3.3604
+235	-80	-3.7357
+236	-80	-3.828
+237	-80	-3.9726
+238	-80	-4.2843
+239	-80	-4.9044
+240	-80	-5.6996
+241	-80	-6.8024
+242	-80	-7.9051
+243	-80	-9.0079
+244	-80	-9.5627
+245	-80	-9.2709
+246	-80	-8.8699
+247	-80	-8.2575
+248	-80	-7.645
+249	-80	-7.3093
+250	-80	-8.1663
+251	-80	-9.0234
+252	-80	-9.8804
+253	-80	-11.434
+254	-80	-11.248
+255	-80	-10.794
+256	-80	-10.341
+257	-80	-9.8868
+258	-80	-9.433
+259	-80	-8.9894
+260	-80	-8.4837
+261	-80	-7.716
+262	-80	-6.9482
+263	-80	-6.1804
+264	-80	-5.4907
+265	-80	-4.8062
+266	-80	-4.2857
+267	-80	-4.3696
+268	-80	-4.4535
+269	-80	-4.5374
+270	-80	-4.316
+271	-80	-4.0045
+272	-80	-3.693
+273	-80	-3.3816
+274	-80	-3.0701
+275	-80	-2.7628
+276	-80	-2.6212
+277	-80	-2.4795
+278	-80	-2.2801
+279	-80	-2.069
+280	-80	-1.858
+281	-80	-1.6399
+282	-80	-1.3488
+283	-80	-1.3391
+284	-80	-1.3335
+285	-80	-1.3279
+286	-80	-1.3223
+287	-80	-1.3143
+288	-80	-1.3015
+289	-80	-1.2887
+290	-80	-1.2786
+291	-80	-1.2782
+292	-80	-1.2777
+293	-80	-1.2697
+294	-80	-1.2406
+295	-80	-1.2115
+296	-80	-1.1892
+297	-80	-1.2164
+298	-80	-1.2463
+299	-80	-1.2762
+300	-80	-1.314
+301	-80	-1.2152
+302	-80	-1.176
+303	-80	-1.1369
+304	-80	-1.0977
+305	-80	-1.1321
+306	-80	-1.0931
+307	-80	-0.98825
+308	-80	-0.87702
+309	-80	-0.76623
+310	-80	-0.66014
+311	-80	-0.56482
+312	-80	-0.4613
+313	-80	-0.40035
+314	-80	-0.36958
+315	-80	-0.34456
+316	-80	-0.26557
+317	-80	-0.16649
+318	-80	-0.078718
+319	-80	-0.023038
+320	-80	0.08636
+321	-80	0.12193
+322	-80	0.090717
+323	-80	0.055372
+324	-80	0.065234
+325	-80	0.14216
+326	-80	0.21678
+327	-80	0.25569
+328	-80	0.25144
+329	-80	0.29259
+330	-80	0.33374
+331	-80	0.37489
+332	-80	0.41605
+333	-80	0.43355
+334	-80	0.4397
+335	-80	0.44832
+336	-80	0.49357
+337	-80	0.53238
+338	-80	0.56219
+339	-80	0.75602
+340	-80	0.92818
+341	-80	1.0847
+342	-80	1.2413
+343	-80	1.3979
+344	-80	1.5015
+345	-80	1.4931
+346	-80	1.4846
+347	-80	1.503
+348	-80	1.4893
+349	-80	1.4715
+350	-80	1.4595
+351	-80	1.4517
+352	-80	1.4458
+353	-80	1.4399
+354	-80	1.434
+355	-80	1.4375
+356	-80	1.4368
+357	-80	1.4029
+358	-80	1.369
+359	-80	1.3351
+360	-80	1.3012
+0	-79.5	1.4989
+1	-79.5	1.465
+2	-79.5	1.4311
+3	-79.5	1.3997
+4	-79.5	1.402
+5	-79.5	1.4044
+6	-79.5	1.405
+7	-79.5	1.3824
+8	-79.5	1.3598
+9	-79.5	1.3372
+10	-79.5	1.3217
+11	-79.5	1.3132
+12	-79.5	1.3047
+13	-79.5	1.2962
+14	-79.5	1.2877
+15	-79.5	1.272
+16	-79.5	1.2588
+17	-79.5	1.2518
+18	-79.5	1.2567
+19	-79.5	1.2616
+20	-79.5	1.2665
+21	-79.5	1.2714
+22	-79.5	1.2763
+23	-79.5	1.2711
+24	-79.5	1.2488
+25	-79.5	1.2265
+26	-79.5	1.2275
+27	-79.5	1.2582
+28	-79.5	1.2816
+29	-79.5	1.2602
+30	-79.5	1.2389
+31	-79.5	1.2175
+32	-79.5	1.1962
+33	-79.5	1.1749
+34	-79.5	1.1535
+35	-79.5	1.1437
+36	-79.5	1.1522
+37	-79.5	1.1607
+38	-79.5	1.1692
+39	-79.5	1.1759
+40	-79.5	1.1506
+41	-79.5	1.1254
+42	-79.5	1.1002
+43	-79.5	1.075
+44	-79.5	1.0498
+45	-79.5	1.0245
+46	-79.5	0.99932
+47	-79.5	0.9741
+48	-79.5	1.0065
+49	-79.5	1.0456
+50	-79.5	0.98555
+51	-79.5	0.92553
+52	-79.5	0.8655
+53	-79.5	0.81687
+54	-79.5	0.7857
+55	-79.5	0.75453
+56	-79.5	0.72336
+57	-79.5	0.69219
+58	-79.5	0.66102
+59	-79.5	0.62985
+60	-79.5	0.59868
+61	-79.5	0.56727
+62	-79.5	0.53565
+63	-79.5	0.50402
+64	-79.5	0.4724
+65	-79.5	0.44077
+66	-79.5	0.40915
+67	-79.5	0.38047
+68	-79.5	0.36013
+69	-79.5	0.33979
+70	-79.5	0.31945
+71	-79.5	0.29911
+72	-79.5	0.27877
+73	-79.5	0.25843
+74	-79.5	0.21355
+75	-79.5	0.16907
+76	-79.5	0.18935
+77	-79.5	0.20964
+78	-79.5	0.22992
+79	-79.5	0.25021
+80	-79.5	0.26452
+81	-79.5	0.27411
+82	-79.5	0.24043
+83	-79.5	0.24212
+84	-79.5	0.24832
+85	-79.5	0.26181
+86	-79.5	0.27529
+87	-79.5	0.28878
+88	-79.5	0.30226
+89	-79.5	0.31575
+90	-79.5	0.32924
+91	-79.5	0.34272
+92	-79.5	0.35621
+93	-79.5	0.36969
+94	-79.5	0.38318
+95	-79.5	0.39666
+96	-79.5	0.41015
+97	-79.5	0.42363
+98	-79.5	0.43712
+99	-79.5	0.45324
+100	-79.5	0.46116
+101	-79.5	0.46348
+102	-79.5	0.46579
+103	-79.5	0.4681
+104	-79.5	0.47041
+105	-79.5	0.47273
+106	-79.5	0.47504
+107	-79.5	0.47735
+108	-79.5	0.47966
+109	-79.5	0.48197
+110	-79.5	0.48429
+111	-79.5	0.48164
+112	-79.5	0.47813
+113	-79.5	0.47726
+114	-79.5	0.48246
+115	-79.5	0.45172
+116	-79.5	0.40308
+117	-79.5	0.35444
+118	-79.5	0.3058
+119	-79.5	0.25716
+120	-79.5	0.20852
+121	-79.5	0.20192
+122	-79.5	0.23368
+123	-79.5	0.2573
+124	-79.5	0.26816
+125	-79.5	0.27901
+126	-79.5	0.26722
+127	-79.5	0.22925
+128	-79.5	0.19128
+129	-79.5	0.18245
+130	-79.5	0.18789
+131	-79.5	0.19333
+132	-79.5	0.19877
+133	-79.5	0.20422
+134	-79.5	0.20966
+135	-79.5	0.2151
+136	-79.5	0.22054
+137	-79.5	0.22601
+138	-79.5	0.23392
+139	-79.5	0.24282
+140	-79.5	0.23925
+141	-79.5	0.2234
+142	-79.5	0.20756
+143	-79.5	0.20606
+144	-79.5	0.23736
+145	-79.5	0.26866
+146	-79.5	0.2752
+147	-79.5	0.25192
+148	-79.5	0.22864
+149	-79.5	0.20791
+150	-79.5	0.18951
+151	-79.5	0.17111
+152	-79.5	0.15272
+153	-79.5	0.13432
+154	-79.5	0.10713
+155	-79.5	0.068485
+156	-79.5	-0.016251
+157	-79.5	-0.16119
+158	-79.5	-0.30793
+159	-79.5	-0.54584
+160	-79.5	-0.78376
+161	-79.5	-0.73988
+162	-79.5	-0.61927
+163	-79.5	-0.69514
+164	-79.5	-0.77866
+165	-79.5	-0.95652
+166	-79.5	-1.1486
+167	-79.5	-1.3433
+168	-79.5	-1.5305
+169	-79.5	-1.7416
+170	-79.5	-1.7719
+171	-79.5	-1.6676
+172	-79.5	-1.5307
+173	-79.5	-1.3939
+174	-79.5	-1.2869
+175	-79.5	-1.3076
+176	-79.5	-1.3857
+177	-79.5	-1.4596
+178	-79.5	-1.5262
+179	-79.5	-1.6178
+180	-79.5	-1.6944
+181	-79.5	-1.7595
+182	-79.5	-1.7756
+183	-79.5	-1.9241
+184	-79.5	-1.9394
+185	-79.5	-1.9177
+186	-79.5	-2.0307
+187	-79.5	-2.0825
+188	-79.5	-2.1314
+189	-79.5	-1.7762
+190	-79.5	-1.8903
+191	-79.5	-1.6539
+192	-79.5	-1.3281
+193	-79.5	-1.3811
+194	-79.5	-1.483
+195	-79.5	-1.6577
+196	-79.5	-1.9005
+197	-79.5	-2.2566
+198	-79.5	-2.6304
+199	-79.5	-2.9781
+200	-79.5	-2.939
+201	-79.5	-2.7492
+202	-79.5	-2.5551
+203	-79.5	-2.4094
+204	-79.5	-2.3304
+205	-79.5	-2.2809
+206	-79.5	-2.1593
+207	-79.5	-2.6481
+208	-79.5	-2.9872
+209	-79.5	-3.2803
+210	-79.5	-3.3831
+211	-79.5	-3.3796
+212	-79.5	-3.3761
+213	-79.5	-3.3725
+214	-79.5	-3.3648
+215	-79.5	-3.4105
+216	-79.5	-3.3557
+217	-79.5	-3.3009
+218	-79.5	-3.2293
+219	-79.5	-3.163
+220	-79.5	-3.8941
+221	-79.5	-3.8542
+222	-79.5	-3.8142
+223	-79.5	-3.7743
+224	-79.5	-3.745
+225	-79.5	-3.745
+226	-79.5	-3.9797
+227	-79.5	-4.2443
+228	-79.5	-4.2421
+229	-79.5	-4.2177
+230	-79.5	-4.1934
+231	-79.5	-4.1691
+232	-79.5	-4.1448
+233	-79.5	-4.4616
+234	-79.5	-4.8743
+235	-79.5	-5.1523
+236	-79.5	-5.2368
+237	-79.5	-5.3814
+238	-79.5	-5.5261
+239	-79.5	-5.6707
+240	-79.5	-6.3638
+241	-79.5	-7.4666
+242	-79.5	-8.5693
+243	-79.5	-9.672
+244	-79.5	-10.775
+245	-79.5	-10.559
+246	-79.5	-10.004
+247	-79.5	-9.3919
+248	-79.5	-8.7794
+249	-79.5	-8.2486
+250	-79.5	-9.1056
+251	-79.5	-9.9627
+252	-79.5	-10.82
+253	-79.5	-11.677
+254	-79.5	-12.302
+255	-79.5	-11.848
+256	-79.5	-11.424
+257	-79.5	-11.246
+258	-79.5	-11.068
+259	-79.5	-10.89
+260	-79.5	-9.2077
+261	-79.5	-9.0568
+262	-79.5	-8.2891
+263	-79.5	-7.5213
+264	-79.5	-6.826
+265	-79.5	-6.1415
+266	-79.5	-5.457
+267	-79.5	-5.1578
+268	-79.5	-5.12
+269	-79.5	-4.8085
+270	-79.5	-4.4971
+271	-79.5	-4.1856
+272	-79.5	-3.8741
+273	-79.5	-3.5626
+274	-79.5	-3.2512
+275	-79.5	-3.0102
+276	-79.5	-2.8686
+277	-79.5	-2.7269
+278	-79.5	-2.5307
+279	-79.5	-2.3196
+280	-79.5	-2.1066
+281	-79.5	-1.8768
+282	-79.5	-1.5959
+283	-79.5	-1.2935
+284	-79.5	-1.2879
+285	-79.5	-1.2823
+286	-79.5	-1.2766
+287	-79.5	-1.271
+288	-79.5	-1.2654
+289	-79.5	-1.2598
+290	-79.5	-1.2536
+291	-79.5	-1.1492
+292	-79.5	-1.1201
+293	-79.5	-1.091
+294	-79.5	-1.0619
+295	-79.5	-1.0329
+296	-79.5	-1.0181
+297	-79.5	-1.0382
+298	-79.5	-1.0681
+299	-79.5	-1.0982
+300	-79.5	-1.1379
+301	-79.5	-1.1141
+302	-79.5	-1.0749
+303	-79.5	-1.0358
+304	-79.5	-0.97721
+305	-79.5	-0.90699
+306	-79.5	-0.80939
+307	-79.5	-0.71116
+308	-79.5	-0.60261
+309	-79.5	-0.49609
+310	-79.5	-0.39
+311	-79.5	-0.30331
+312	-79.5	-0.23137
+313	-79.5	-0.17722
+314	-79.5	-0.1421
+315	-79.5	-0.10949
+316	-79.5	-0.0093759
+317	-79.5	0.06746
+318	-79.5	0.14545
+319	-79.5	0.21358
+320	-79.5	0.26721
+321	-79.5	0.28295
+322	-79.5	0.28674
+323	-79.5	0.26779
+324	-79.5	0.27764
+325	-79.5	0.33675
+326	-79.5	0.41464
+327	-79.5	0.42474
+328	-79.5	0.42827
+329	-79.5	0.46942
+330	-79.5	0.51057
+331	-79.5	0.55022
+332	-79.5	0.59391
+333	-79.5	0.63798
+334	-79.5	0.64213
+335	-79.5	0.65238
+336	-79.5	0.69763
+337	-79.5	0.71784
+338	-79.5	0.73295
+339	-79.5	0.92314
+340	-79.5	1.117
+341	-79.5	1.2912
+342	-79.5	1.4478
+343	-79.5	1.6044
+344	-79.5	1.6738
+345	-79.5	1.6653
+346	-79.5	1.6828
+347	-79.5	1.6938
+348	-79.5	1.6779
+349	-79.5	1.6571
+350	-79.5	1.646
+351	-79.5	1.6401
+352	-79.5	1.6343
+353	-79.5	1.6284
+354	-79.5	1.6227
+355	-79.5	1.6273
+356	-79.5	1.6318
+357	-79.5	1.6007
+358	-79.5	1.5668
+359	-79.5	1.5329
+360	-79.5	1.4989
+0	-79	1.6967
+1	-79	1.6628
+2	-79	1.6289
+3	-79	1.595
+4	-79	1.561
+5	-79	1.5549
+6	-79	1.5349
+7	-79	1.5123
+8	-79	1.4897
+9	-79	1.4671
+10	-79	1.4546
+11	-79	1.4461
+12	-79	1.4376
+13	-79	1.4291
+14	-79	1.4126
+15	-79	1.3957
+16	-79	1.3823
+17	-79	1.374
+18	-79	1.3661
+19	-79	1.371
+20	-79	1.3758
+21	-79	1.3807
+22	-79	1.3856
+23	-79	1.3777
+24	-79	1.3554
+25	-79	1.333
+26	-79	1.3365
+27	-79	1.3671
+28	-79	1.3967
+29	-79	1.3754
+30	-79	1.354
+31	-79	1.3327
+32	-79	1.3113
+33	-79	1.29
+34	-79	1.2686
+35	-79	1.2473
+36	-79	1.2402
+37	-79	1.2487
+38	-79	1.2298
+39	-79	1.2045
+40	-79	1.1793
+41	-79	1.159
+42	-79	1.1438
+43	-79	1.1286
+44	-79	1.1135
+45	-79	1.0983
+46	-79	1.0831
+47	-79	1.1061
+48	-79	1.0461
+49	-79	1.0978
+50	-79	1.0449
+51	-79	0.98488
+52	-79	0.92485
+53	-79	0.86483
+54	-79	0.81905
+55	-79	0.78788
+56	-79	0.75671
+57	-79	0.72554
+58	-79	0.69437
+59	-79	0.6632
+60	-79	0.6318
+61	-79	0.60017
+62	-79	0.56855
+63	-79	0.53692
+64	-79	0.5053
+65	-79	0.47367
+66	-79	0.44205
+67	-79	0.41413
+68	-79	0.39379
+69	-79	0.37345
+70	-79	0.35311
+71	-79	0.33277
+72	-79	0.31243
+73	-79	0.29209
+74	-79	0.27175
+75	-79	0.22313
+76	-79	0.21998
+77	-79	0.24027
+78	-79	0.26055
+79	-79	0.27695
+80	-79	0.28654
+81	-79	0.29613
+82	-79	0.27126
+83	-79	0.24541
+84	-79	0.24861
+85	-79	0.25241
+86	-79	0.2659
+87	-79	0.27939
+88	-79	0.29287
+89	-79	0.30636
+90	-79	0.31984
+91	-79	0.33333
+92	-79	0.34681
+93	-79	0.3603
+94	-79	0.37378
+95	-79	0.38727
+96	-79	0.40076
+97	-79	0.41424
+98	-79	0.42773
+99	-79	0.4734
+100	-79	0.47039
+101	-79	0.46948
+102	-79	0.4718
+103	-79	0.47411
+104	-79	0.47642
+105	-79	0.47873
+106	-79	0.48105
+107	-79	0.48336
+108	-79	0.48567
+109	-79	0.48798
+110	-79	0.48508
+111	-79	0.48156
+112	-79	0.47805
+113	-79	0.47768
+114	-79	0.48288
+115	-79	0.48319
+116	-79	0.43456
+117	-79	0.38592
+118	-79	0.33728
+119	-79	0.28864
+120	-79	0.24
+121	-79	0.23514
+122	-79	0.2669
+123	-79	0.28573
+124	-79	0.29658
+125	-79	0.30743
+126	-79	0.30538
+127	-79	0.26741
+128	-79	0.22944
+129	-79	0.19418
+130	-79	0.19962
+131	-79	0.20506
+132	-79	0.21236
+133	-79	0.22027
+134	-79	0.22819
+135	-79	0.2361
+136	-79	0.24401
+137	-79	0.25192
+138	-79	0.26326
+139	-79	0.27552
+140	-79	0.27194
+141	-79	0.25609
+142	-79	0.24025
+143	-79	0.24891
+144	-79	0.28021
+145	-79	0.31151
+146	-79	0.34236
+147	-79	0.31907
+148	-79	0.29873
+149	-79	0.28033
+150	-79	0.26194
+151	-79	0.24354
+152	-79	0.22514
+153	-79	0.20674
+154	-79	0.16713
+155	-79	0.10955
+156	-79	0.034496
+157	-79	-0.10799
+158	-79	-0.29002
+159	-79	-0.52793
+160	-79	-0.76585
+161	-79	-0.74719
+162	-79	-0.59946
+163	-79	-0.61305
+164	-79	-0.7073
+165	-79	-0.89512
+166	-79	-1.0859
+167	-79	-1.2806
+168	-79	-1.4908
+169	-79	-1.6982
+170	-79	-1.4931
+171	-79	-1.4987
+172	-79	-1.3354
+173	-79	-1.1721
+174	-79	-1.0444
+175	-79	-1.048
+176	-79	-1.1149
+177	-79	-1.1759
+178	-79	-1.2479
+179	-79	-1.3584
+180	-79	-1.4096
+181	-79	-1.4609
+182	-79	-1.4446
+183	-79	-1.548
+184	-79	-1.5629
+185	-79	-1.5736
+186	-79	-1.6889
+187	-79	-1.7276
+188	-79	-1.4072
+189	-79	-1.212
+190	-79	-1.7362
+191	-79	-1.3438
+192	-79	-0.92227
+193	-79	-0.93903
+194	-79	-0.98588
+195	-79	-1.4312
+196	-79	-1.7523
+197	-79	-1.9598
+198	-79	-2.3141
+199	-79	-2.6283
+200	-79	-2.6922
+201	-79	-2.4919
+202	-79	-2.263
+203	-79	-2.2623
+204	-79	-2.2233
+205	-79	-2.1774
+206	-79	-2.2346
+207	-79	-2.708
+208	-79	-3.2494
+209	-79	-3.354
+210	-79	-3.374
+211	-79	-3.3705
+212	-79	-3.367
+213	-79	-3.3423
+214	-79	-3.4474
+215	-79	-3.6938
+216	-79	-3.6625
+217	-79	-3.6077
+218	-79	-3.4516
+219	-79	-3.494
+220	-79	-4.4855
+221	-79	-4.4637
+222	-79	-4.4238
+223	-79	-4.3991
+224	-79	-4.3991
+225	-79	-4.3991
+226	-79	-4.6962
+227	-79	-5.0134
+228	-79	-5.2272
+229	-79	-5.2029
+230	-79	-5.1786
+231	-79	-5.1542
+232	-79	-5.5629
+233	-79	-5.9756
+234	-79	-6.3883
+235	-79	-6.5689
+236	-79	-6.6457
+237	-79	-6.7903
+238	-79	-6.9349
+239	-79	-7.075
+240	-79	-7.5196
+241	-79	-8.4568
+242	-79	-9.4296
+243	-79	-10.402
+244	-79	-11.439
+245	-79	-11.751
+246	-79	-11.139
+247	-79	-10.526
+248	-79	-9.9138
+249	-79	-9.3014
+250	-79	-10.045
+251	-79	-10.902
+252	-79	-11.761
+253	-79	-12.621
+254	-79	-13.805
+255	-79	-13.503
+256	-79	-13.325
+257	-79	-13.147
+258	-79	-12.969
+259	-79	-11.755
+260	-79	-9.8181
+261	-79	-9.8717
+262	-79	-9.6299
+263	-79	-8.8622
+264	-79	-8.1614
+265	-79	-7.4769
+266	-79	-6.7924
+267	-79	-6.3427
+268	-79	-5.787
+269	-79	-5.4469
+270	-79	-5.1068
+271	-79	-4.7667
+272	-79	-4.4266
+273	-79	-4.0865
+274	-79	-3.7464
+275	-79	-3.2576
+276	-79	-3.116
+277	-79	-2.9743
+278	-79	-2.7813
+279	-79	-2.5703
+280	-79	-2.3435
+281	-79	-2.1136
+282	-79	-1.843
+283	-79	-1.5214
+284	-79	-1.2423
+285	-79	-1.2367
+286	-79	-1.231
+287	-79	-1.2254
+288	-79	-1.2198
+289	-79	-1.2415
+290	-79	-1.3018
+291	-79	-1.0925
+292	-79	-0.94144
+293	-79	-0.91236
+294	-79	-0.88328
+295	-79	-0.8542
+296	-79	-0.84693
+297	-79	-0.86315
+298	-79	-0.88992
+299	-79	-0.92209
+300	-79	-0.9618
+301	-79	-0.92869
+302	-79	-0.83456
+303	-79	-0.76905
+304	-79	-0.70353
+305	-79	-0.6204
+306	-79	-0.52399
+307	-79	-0.42631
+308	-79	-0.33058
+309	-79	-0.22408
+310	-79	-0.1383
+311	-79	-0.077622
+312	-79	0.0069692
+313	-79	0.057633
+314	-79	0.095216
+315	-79	0.16021
+316	-79	0.22313
+317	-79	0.28535
+318	-79	0.37305
+319	-79	0.45311
+320	-79	0.50778
+321	-79	0.54171
+322	-79	0.51276
+323	-79	0.4802
+324	-79	0.35112
+325	-79	0.53493
+326	-79	0.59329
+327	-79	0.59069
+328	-79	0.6051
+329	-79	0.64625
+330	-79	0.67327
+331	-79	0.69583
+332	-79	0.80464
+333	-79	0.85708
+334	-79	0.84457
+335	-79	0.85644
+336	-79	0.8882
+337	-79	0.90331
+338	-79	0.91842
+339	-79	1.0903
+340	-79	1.2841
+341	-79	1.4779
+342	-79	1.6543
+343	-79	1.8109
+344	-79	1.846
+345	-79	1.8625
+346	-79	1.8906
+347	-79	1.8822
+348	-79	1.8665
+349	-79	1.8457
+350	-79	1.8325
+351	-79	1.8286
+352	-79	1.8227
+353	-79	1.8169
+354	-79	1.8125
+355	-79	1.8171
+356	-79	1.8216
+357	-79	1.7984
+358	-79	1.7645
+359	-79	1.7306
+360	-79	1.6967
+0	-78.5	1.8728
+1	-78.5	1.8383
+2	-78.5	1.8037
+3	-78.5	1.7691
+4	-78.5	1.7345
+5	-78.5	1.6919
+6	-78.5	1.6648
+7	-78.5	1.6422
+8	-78.5	1.6196
+9	-78.5	1.597
+10	-78.5	1.5876
+11	-78.5	1.5791
+12	-78.5	1.5701
+13	-78.5	1.5532
+14	-78.5	1.5364
+15	-78.5	1.5195
+16	-78.5	1.5058
+17	-78.5	1.4975
+18	-78.5	1.4891
+19	-78.5	1.4808
+20	-78.5	1.4852
+21	-78.5	1.4901
+22	-78.5	1.495
+23	-78.5	1.4842
+24	-78.5	1.4619
+25	-78.5	1.4502
+26	-78.5	1.4481
+27	-78.5	1.4761
+28	-78.5	1.5067
+29	-78.5	1.4905
+30	-78.5	1.4691
+31	-78.5	1.4478
+32	-78.5	1.4264
+33	-78.5	1.4051
+34	-78.5	1.3837
+35	-78.5	1.3624
+36	-78.5	1.3588
+37	-78.5	1.3196
+38	-78.5	1.3044
+39	-78.5	1.2892
+40	-78.5	1.274
+41	-78.5	1.2589
+42	-78.5	1.2437
+43	-78.5	1.2285
+44	-78.5	1.2133
+45	-78.5	1.1981
+46	-78.5	1.1888
+47	-78.5	1.2441
+48	-78.5	1.0856
+49	-78.5	1.1374
+50	-78.5	1.1042
+51	-78.5	1.0442
+52	-78.5	0.9842
+53	-78.5	0.92418
+54	-78.5	0.86416
+55	-78.5	0.82123
+56	-78.5	0.79006
+57	-78.5	0.75889
+58	-78.5	0.72772
+59	-78.5	0.69632
+60	-78.5	0.6647
+61	-78.5	0.63307
+62	-78.5	0.60145
+63	-78.5	0.56983
+64	-78.5	0.5382
+65	-78.5	0.50658
+66	-78.5	0.47495
+67	-78.5	0.44779
+68	-78.5	0.42745
+69	-78.5	0.40711
+70	-78.5	0.38677
+71	-78.5	0.36643
+72	-78.5	0.34609
+73	-78.5	0.32575
+74	-78.5	0.30541
+75	-78.5	0.28461
+76	-78.5	0.25061
+77	-78.5	0.27089
+78	-78.5	0.28939
+79	-78.5	0.29898
+80	-78.5	0.30856
+81	-78.5	0.31815
+82	-78.5	0.30208
+83	-78.5	0.2487
+84	-78.5	0.2519
+85	-78.5	0.2551
+86	-78.5	0.2583
+87	-78.5	0.26999
+88	-78.5	0.28348
+89	-78.5	0.29696
+90	-78.5	0.31045
+91	-78.5	0.32393
+92	-78.5	0.33742
+93	-78.5	0.35091
+94	-78.5	0.36439
+95	-78.5	0.37788
+96	-78.5	0.39136
+97	-78.5	0.40485
+98	-78.5	0.42389
+99	-78.5	0.49185
+100	-78.5	0.49769
+101	-78.5	0.47549
+102	-78.5	0.4778
+103	-78.5	0.48012
+104	-78.5	0.48243
+105	-78.5	0.48474
+106	-78.5	0.48705
+107	-78.5	0.48936
+108	-78.5	0.49168
+109	-78.5	0.48851
+110	-78.5	0.485
+111	-78.5	0.48148
+112	-78.5	0.47796
+113	-78.5	0.47811
+114	-78.5	0.4833
+115	-78.5	0.4885
+116	-78.5	0.46603
+117	-78.5	0.41739
+118	-78.5	0.36875
+119	-78.5	0.32011
+120	-78.5	0.27147
+121	-78.5	0.26836
+122	-78.5	0.30012
+123	-78.5	0.31415
+124	-78.5	0.325
+125	-78.5	0.33585
+126	-78.5	0.34354
+127	-78.5	0.30557
+128	-78.5	0.2676
+129	-78.5	0.22962
+130	-78.5	0.22245
+131	-78.5	0.23036
+132	-78.5	0.23827
+133	-78.5	0.24618
+134	-78.5	0.25409
+135	-78.5	0.262
+136	-78.5	0.26993
+137	-78.5	0.28369
+138	-78.5	0.29746
+139	-78.5	0.30417
+140	-78.5	0.30322
+141	-78.5	0.28878
+142	-78.5	0.27294
+143	-78.5	0.29175
+144	-78.5	0.32305
+145	-78.5	0.35435
+146	-78.5	0.38565
+147	-78.5	0.38141
+148	-78.5	0.35779
+149	-78.5	0.33417
+150	-78.5	0.31056
+151	-78.5	0.28694
+152	-78.5	0.26332
+153	-78.5	0.2397
+154	-78.5	0.2082
+155	-78.5	0.15062
+156	-78.5	0.076176
+157	-78.5	-0.054798
+158	-78.5	-0.27211
+159	-78.5	-0.51002
+160	-78.5	-0.74794
+161	-78.5	-0.75439
+162	-78.5	-0.60655
+163	-78.5	-0.53612
+164	-78.5	-0.54523
+165	-78.5	-0.83373
+166	-78.5	-1.0232
+167	-78.5	-1.1374
+168	-78.5	-1.1619
+169	-78.5	-1.4834
+170	-78.5	-1.0614
+171	-78.5	-1.3318
+172	-78.5	-1.1739
+173	-78.5	-1.0406
+174	-78.5	-0.91873
+175	-78.5	-0.81187
+176	-78.5	-0.83779
+177	-78.5	-0.89349
+178	-78.5	-0.95005
+179	-78.5	-0.99121
+180	-78.5	-1.0414
+181	-78.5	-1.0799
+182	-78.5	-1.0997
+183	-78.5	-1.1294
+184	-78.5	-1.1647
+185	-78.5	-1.0536
+186	-78.5	-1.0732
+187	-78.5	-0.96604
+188	-78.5	-0.46798
+189	-78.5	-0.6478
+190	-78.5	-1.2804
+191	-78.5	-0.91676
+192	-78.5	-0.51643
+193	-78.5	-0.40444
+194	-78.5	-0.31975
+195	-78.5	-0.42116
+196	-78.5	-0.76046
+197	-78.5	-1.0038
+198	-78.5	-1.6648
+199	-78.5	-2.1753
+200	-78.5	-2.3986
+201	-78.5	-2.1998
+202	-78.5	-1.971
+203	-78.5	-2.0928
+204	-78.5	-2.1778
+205	-78.5	-2.1222
+206	-78.5	-2.3098
+207	-78.5	-2.7678
+208	-78.5	-2.8305
+209	-78.5	-3.3156
+210	-78.5	-3.3492
+211	-78.5	-3.3606
+212	-78.5	-3.3198
+213	-78.5	-3.279
+214	-78.5	-3.6233
+215	-78.5	-3.9181
+216	-78.5	-3.9692
+217	-78.5	-3.9046
+218	-78.5	-3.674
+219	-78.5	-3.8249
+220	-78.5	-4.8164
+221	-78.5	-5.0733
+222	-78.5	-5.0532
+223	-78.5	-5.0532
+224	-78.5	-5.0487
+225	-78.5	-5.1349
+226	-78.5	-5.4128
+227	-78.5	-5.7429
+228	-78.5	-6.0024
+229	-78.5	-6.1881
+230	-78.5	-6.2514
+231	-78.5	-6.6641
+232	-78.5	-7.0768
+233	-78.5	-7.4896
+234	-78.5	-7.9023
+235	-78.5	-7.9854
+236	-78.5	-8.0545
+237	-78.5	-8.1991
+238	-78.5	-8.3396
+239	-78.5	-8.449
+240	-78.5	-8.9693
+241	-78.5	-9.8056
+242	-78.5	-10.763
+243	-78.5	-11.736
+244	-78.5	-12.709
+245	-78.5	-13.415
+246	-78.5	-12.795
+247	-78.5	-12.176
+248	-78.5	-11.556
+249	-78.5	-10.953
+250	-78.5	-11.003
+251	-78.5	-11.863
+252	-78.5	-12.722
+253	-78.5	-13.582
+254	-78.5	-14.729
+255	-78.5	-15.839
+256	-78.5	-15.309
+257	-78.5	-15.048
+258	-78.5	-14.75
+259	-78.5	-12.608
+260	-78.5	-10.466
+261	-78.5	-10.482
+262	-78.5	-10.536
+263	-78.5	-10.203
+264	-78.5	-9.4967
+265	-78.5	-9.0538
+266	-78.5	-9.086
+267	-78.5	-8.246
+268	-78.5	-7.2026
+269	-78.5	-6.7327
+270	-78.5	-6.3926
+271	-78.5	-6.0525
+272	-78.5	-5.7124
+273	-78.5	-5.3723
+274	-78.5	-4.8529
+275	-78.5	-3.9941
+276	-78.5	-3.3634
+277	-78.5	-3.2217
+278	-78.5	-3.0319
+279	-78.5	-2.8102
+280	-78.5	-2.5803
+281	-78.5	-2.3504
+282	-78.5	-2.087
+283	-78.5	-1.7685
+284	-78.5	-1.4469
+285	-78.5	-1.191
+286	-78.5	-1.1854
+287	-78.5	-1.1798
+288	-78.5	-1.1742
+289	-78.5	-1.2621
+290	-78.5	-1.3501
+291	-78.5	-1.1408
+292	-78.5	-0.93144
+293	-78.5	-0.73372
+294	-78.5	-0.70464
+295	-78.5	-0.67556
+296	-78.5	-0.67581
+297	-78.5	-0.69203
+298	-78.5	-0.71173
+299	-78.5	-0.74599
+300	-78.5	-0.77102
+301	-78.5	-0.73479
+302	-78.5	-0.61979
+303	-78.5	-0.49538
+304	-78.5	-0.42986
+305	-78.5	-0.33382
+306	-78.5	-0.2379
+307	-78.5	-0.14079
+308	-78.5	-0.063703
+309	-78.5	0.015421
+310	-78.5	0.097686
+311	-78.5	0.17155
+312	-78.5	0.24531
+313	-78.5	0.25108
+314	-78.5	0.36751
+315	-78.5	0.43367
+316	-78.5	0.49744
+317	-78.5	0.27294
+318	-78.5	0.40596
+319	-78.5	0.47766
+320	-78.5	0.60127
+321	-78.5	0.55833
+322	-78.5	0.6128
+323	-78.5	0.65589
+324	-78.5	0.18106
+325	-78.5	0.73335
+326	-78.5	0.7681
+327	-78.5	0.75702
+328	-78.5	0.77597
+329	-78.5	0.79631
+330	-78.5	0.81888
+331	-78.5	0.90312
+332	-78.5	0.97759
+333	-78.5	1.0166
+334	-78.5	1.0433
+335	-78.5	1.0586
+336	-78.5	1.0737
+337	-78.5	1.0888
+338	-78.5	1.1039
+339	-78.5	1.2574
+340	-78.5	1.4512
+341	-78.5	1.645
+342	-78.5	1.8388
+343	-78.5	2.0174
+344	-78.5	2.0423
+345	-78.5	2.0703
+346	-78.5	2.0852
+347	-78.5	2.0707
+348	-78.5	2.0551
+349	-78.5	2.0242
+350	-78.5	1.9877
+351	-78.5	2.0171
+352	-78.5	2.0112
+353	-78.5	2.0053
+354	-78.5	2.0024
+355	-78.5	2.0069
+356	-78.5	2.0114
+357	-78.5	1.9766
+358	-78.5	1.942
+359	-78.5	1.9074
+360	-78.5	1.8728
+0	-78	2.0287
+1	-78	1.9941
+2	-78	1.9595
+3	-78	1.925
+4	-78	1.8904
+5	-78	1.8351
+6	-78	1.7982
+7	-78	1.7721
+8	-78	1.7495
+9	-78	1.729
+10	-78	1.7205
+11	-78	1.7107
+12	-78	1.6939
+13	-78	1.677
+14	-78	1.6601
+15	-78	1.6432
+16	-78	1.6293
+17	-78	1.621
+18	-78	1.6126
+19	-78	1.6043
+20	-78	1.596
+21	-78	1.5995
+22	-78	1.6044
+23	-78	1.5908
+24	-78	1.5753
+25	-78	1.5815
+26	-78	1.585
+27	-78	1.585
+28	-78	1.6156
+29	-78	1.6056
+30	-78	1.5842
+31	-78	1.5629
+32	-78	1.5416
+33	-78	1.5202
+34	-78	1.4989
+35	-78	1.5104
+36	-78	1.5016
+37	-78	1.4217
+38	-78	1.4043
+39	-78	1.3891
+40	-78	1.3739
+41	-78	1.3587
+42	-78	1.3435
+43	-78	1.3284
+44	-78	1.3132
+45	-78	1.298
+46	-78	1.3539
+47	-78	1.3729
+48	-78	1.221
+49	-78	1.1769
+50	-78	1.1636
+51	-78	1.1036
+52	-78	1.0436
+53	-78	0.98353
+54	-78	0.92351
+55	-78	0.86348
+56	-78	0.82341
+57	-78	0.79224
+58	-78	0.76085
+59	-78	0.72922
+60	-78	0.6976
+61	-78	0.66598
+62	-78	0.63435
+63	-78	0.60273
+64	-78	0.5711
+65	-78	0.53948
+66	-78	0.50785
+67	-78	0.48145
+68	-78	0.46111
+69	-78	0.44077
+70	-78	0.42043
+71	-78	0.40009
+72	-78	0.37975
+73	-78	0.35941
+74	-78	0.33907
+75	-78	0.31873
+76	-78	0.29419
+77	-78	0.30152
+78	-78	0.31141
+79	-78	0.321
+80	-78	0.33059
+81	-78	0.34018
+82	-78	0.33291
+83	-78	0.27187
+84	-78	0.25519
+85	-78	0.25839
+86	-78	0.26159
+87	-78	0.26479
+88	-78	0.27408
+89	-78	0.28757
+90	-78	0.30106
+91	-78	0.31454
+92	-78	0.32803
+93	-78	0.34151
+94	-78	0.355
+95	-78	0.36848
+96	-78	0.38197
+97	-78	0.39545
+98	-78	0.4459
+99	-78	0.51029
+100	-78	0.52499
+101	-78	0.49492
+102	-78	0.48381
+103	-78	0.48612
+104	-78	0.48844
+105	-78	0.49075
+106	-78	0.49306
+107	-78	0.49537
+108	-78	0.49195
+109	-78	0.48843
+110	-78	0.48492
+111	-78	0.4814
+112	-78	0.47788
+113	-78	0.47853
+114	-78	0.48373
+115	-78	0.48892
+116	-78	0.49412
+117	-78	0.44886
+118	-78	0.40022
+119	-78	0.35158
+120	-78	0.30294
+121	-78	0.30158
+122	-78	0.33171
+123	-78	0.34257
+124	-78	0.35342
+125	-78	0.36427
+126	-78	0.37513
+127	-78	0.34373
+128	-78	0.30576
+129	-78	0.27101
+130	-78	0.24836
+131	-78	0.25627
+132	-78	0.26418
+133	-78	0.27209
+134	-78	0.28
+135	-78	0.29037
+136	-78	0.30413
+137	-78	0.3179
+138	-78	0.33167
+139	-78	0.33282
+140	-78	0.33187
+141	-78	0.32147
+142	-78	0.30563
+143	-78	0.3346
+144	-78	0.3659
+145	-78	0.3972
+146	-78	0.42089
+147	-78	0.40379
+148	-78	0.36532
+149	-78	0.3417
+150	-78	0.31808
+151	-78	0.29446
+152	-78	0.27085
+153	-78	0.23722
+154	-78	0.23612
+155	-78	0.19169
+156	-78	0.11786
+157	-78	-0.016289
+158	-78	-0.2542
+159	-78	-0.49211
+160	-78	-0.73003
+161	-78	-0.76149
+162	-78	-0.63029
+163	-78	-0.38971
+164	-78	-0.37804
+165	-78	-0.67118
+166	-78	-0.93849
+167	-78	-0.77058
+168	-78	-0.74813
+169	-78	-1.0195
+170	-78	-0.62967
+171	-78	-1.0747
+172	-78	-1.2165
+173	-78	-0.9794
+174	-78	-0.76635
+175	-78	-0.65873
+176	-78	-0.48564
+177	-78	-0.36229
+178	-78	-0.41634
+179	-78	-0.60911
+180	-78	-0.64481
+181	-78	-0.68147
+182	-78	-0.53468
+183	-78	-0.51882
+184	-78	-0.53738
+185	-78	-0.2794
+186	-78	-0.45536
+187	-78	-0.37683
+188	-78	0
+189	-78	-0.47891
+190	-78	-0.70906
+191	-78	-0.47938
+192	-78	-0.091992
+193	-78	0
+194	-78	0
+195	-78	0
+196	-78	0
+197	-78	-0.032556
+198	-78	-1.0154
+199	-78	-1.526
+200	-78	-1.8129
+201	-78	-1.5233
+202	-78	-1.6811
+203	-78	-1.8847
+204	-78	-2.0989
+205	-78	-2.2207
+206	-78	-2.385
+207	-78	-2.8276
+208	-78	-1.9463
+209	-78	-3.2771
+210	-78	-3.294
+211	-78	-3.2973
+212	-78	-3.2565
+213	-78	-3.2544
+214	-78	-3.809
+215	-78	-4.148
+216	-78	-4.2001
+217	-78	-4.127
+218	-78	-3.8964
+219	-78	-4.1558
+220	-78	-5.1473
+221	-78	-5.7023
+222	-78	-5.6965
+223	-78	-5.6907
+224	-78	-5.6849
+225	-78	-5.9417
+226	-78	-6.227
+227	-78	-6.4594
+228	-78	-6.7715
+229	-78	-6.9914
+230	-78	-7.1729
+231	-78	-7.5193
+232	-78	-7.8658
+233	-78	-8.2122
+234	-78	-8.5713
+235	-78	-9.402
+236	-78	-9.4634
+237	-78	-9.6042
+238	-78	-9.7136
+239	-78	-9.8229
+240	-78	-10.419
+241	-78	-11.255
+242	-78	-12.097
+243	-78	-13.069
+244	-78	-13.652
+245	-78	-14.622
+246	-78	-14.605
+247	-78	-13.985
+248	-78	-13.38
+249	-78	-12.79
+250	-78	-12.456
+251	-78	-12.824
+252	-78	-13.683
+253	-78	-14.253
+254	-78	-15.653
+255	-78	-18.356
+256	-78	-17.827
+257	-78	-17.297
+258	-78	-15.604
+259	-78	-13.462
+260	-78	-11.319
+261	-78	-11.092
+262	-78	-11.146
+263	-78	-11.2
+264	-78	-11.437
+265	-78	-11.469
+266	-78	-11.007
+267	-78	-10.143
+268	-78	-9.1428
+269	-78	-8.0626
+270	-78	-7.6785
+271	-78	-7.3384
+272	-78	-6.9983
+273	-78	-6.6581
+274	-78	-5.8595
+275	-78	-4.9866
+276	-78	-4.1831
+277	-78	-3.4691
+278	-78	-3.2769
+279	-78	-3.047
+280	-78	-2.8171
+281	-78	-2.5864
+282	-78	-2.3219
+283	-78	-2.0156
+284	-78	-1.694
+285	-78	-1.3724
+286	-78	-1.1398
+287	-78	-1.1342
+288	-78	-1.1905
+289	-78	-1.2827
+290	-78	-1.3951
+291	-78	-1.1545
+292	-78	-0.97955
+293	-78	-0.77039
+294	-78	-0.56108
+295	-78	-0.49691
+296	-78	-0.50468
+297	-78	-0.5209
+298	-78	-0.53712
+299	-78	-0.55878
+300	-78	-0.57979
+301	-78	-0.55009
+302	-78	-0.43131
+303	-78	-0.30979
+304	-78	-0.15753
+305	-78	-0.047232
+306	-78	0.048683
+307	-78	0.11235
+308	-78	0.13308
+309	-78	0.20146
+310	-78	0.19262
+311	-78	0.1588
+312	-78	0.34964
+313	-78	0.14963
+314	-78	0.23199
+315	-78	0.363
+316	-78	0.33883
+317	-78	0.21649
+318	-78	0.21541
+319	-78	0.48028
+320	-78	0.085987
+321	-78	0.16999
+322	-78	0.22975
+323	-78	0.098186
+324	-78	0.24533
+325	-78	0.82513
+326	-78	0.94998
+327	-78	0.93245
+328	-78	0.92532
+329	-78	0.94192
+330	-78	1.0015
+331	-78	1.0642
+332	-78	1.1269
+333	-78	1.1594
+334	-78	1.1861
+335	-78	1.2424
+336	-78	1.2637
+337	-78	1.2779
+338	-78	1.2914
+339	-78	1.4137
+340	-78	1.6058
+341	-78	1.7979
+342	-78	1.99
+343	-78	2.1341
+344	-78	2.2501
+345	-78	2.2781
+346	-78	2.2737
+347	-78	2.2592
+348	-78	2.2437
+349	-78	2.1929
+350	-78	2.1429
+351	-78	2.1784
+352	-78	2.1997
+353	-78	2.1938
+354	-78	2.1922
+355	-78	2.1967
+356	-78	2.1938
+357	-78	2.1622
+358	-78	2.1001
+359	-78	2.0633
+360	-78	2.0287
+0	-77.5	2.1846
+1	-77.5	2.15
+2	-77.5	2.1154
+3	-77.5	2.0808
+4	-77.5	2.0462
+5	-77.5	1.9794
+6	-77.5	1.9414
+7	-77.5	1.9044
+8	-77.5	1.8793
+9	-77.5	1.862
+10	-77.5	1.8514
+11	-77.5	1.8345
+12	-77.5	1.8176
+13	-77.5	1.8007
+14	-77.5	1.7838
+15	-77.5	1.7669
+16	-77.5	1.7528
+17	-77.5	1.7445
+18	-77.5	1.7361
+19	-77.5	1.7278
+20	-77.5	1.7195
+21	-77.5	1.7112
+22	-77.5	1.7137
+23	-77.5	1.7003
+24	-77.5	1.7065
+25	-77.5	1.7127
+26	-77.5	1.719
+27	-77.5	1.6991
+28	-77.5	1.7246
+29	-77.5	1.7207
+30	-77.5	1.6994
+31	-77.5	1.678
+32	-77.5	1.6567
+33	-77.5	1.641
+34	-77.5	1.662
+35	-77.5	1.683
+36	-77.5	1.6359
+37	-77.5	1.5289
+38	-77.5	1.5052
+39	-77.5	1.4889
+40	-77.5	1.4738
+41	-77.5	1.4586
+42	-77.5	1.4434
+43	-77.5	1.4282
+44	-77.5	1.413
+45	-77.5	1.4366
+46	-77.5	1.5191
+47	-77.5	1.5016
+48	-77.5	1.359
+49	-77.5	1.2164
+50	-77.5	1.2229
+51	-77.5	1.1629
+52	-77.5	1.1029
+53	-77.5	1.0429
+54	-77.5	0.98286
+55	-77.5	0.92283
+56	-77.5	0.86281
+57	-77.5	0.82537
+58	-77.5	0.79375
+59	-77.5	0.76213
+60	-77.5	0.7305
+61	-77.5	0.69888
+62	-77.5	0.66725
+63	-77.5	0.63563
+64	-77.5	0.604
+65	-77.5	0.57238
+66	-77.5	0.54075
+67	-77.5	0.51511
+68	-77.5	0.49477
+69	-77.5	0.47443
+70	-77.5	0.45409
+71	-77.5	0.43375
+72	-77.5	0.41341
+73	-77.5	0.39307
+74	-77.5	0.37273
+75	-77.5	0.35363
+76	-77.5	0.3381
+77	-77.5	0.32384
+78	-77.5	0.33343
+79	-77.5	0.34302
+80	-77.5	0.35261
+81	-77.5	0.3622
+82	-77.5	0.36374
+83	-77.5	0.3027
+84	-77.5	0.25848
+85	-77.5	0.26168
+86	-77.5	0.26488
+87	-77.5	0.26808
+88	-77.5	0.27128
+89	-77.5	0.27818
+90	-77.5	0.29166
+91	-77.5	0.30515
+92	-77.5	0.31863
+93	-77.5	0.33212
+94	-77.5	0.3456
+95	-77.5	0.35909
+96	-77.5	0.37257
+97	-77.5	0.39455
+98	-77.5	0.46791
+99	-77.5	0.52873
+100	-77.5	0.55229
+101	-77.5	0.52222
+102	-77.5	0.49214
+103	-77.5	0.49213
+104	-77.5	0.49444
+105	-77.5	0.49676
+106	-77.5	0.4989
+107	-77.5	0.49538
+108	-77.5	0.49187
+109	-77.5	0.48835
+110	-77.5	0.48483
+111	-77.5	0.48132
+112	-77.5	0.4778
+113	-77.5	0.47895
+114	-77.5	0.48415
+115	-77.5	0.48935
+116	-77.5	0.49454
+117	-77.5	0.48034
+118	-77.5	0.4317
+119	-77.5	0.38306
+120	-77.5	0.33442
+121	-77.5	0.3348
+122	-77.5	0.36013
+123	-77.5	0.37099
+124	-77.5	0.38184
+125	-77.5	0.39269
+126	-77.5	0.40355
+127	-77.5	0.38189
+128	-77.5	0.34392
+129	-77.5	0.31243
+130	-77.5	0.28771
+131	-77.5	0.28218
+132	-77.5	0.29009
+133	-77.5	0.298
+134	-77.5	0.3108
+135	-77.5	0.32457
+136	-77.5	0.33834
+137	-77.5	0.35211
+138	-77.5	0.36242
+139	-77.5	0.36147
+140	-77.5	0.36052
+141	-77.5	0.35416
+142	-77.5	0.34615
+143	-77.5	0.37745
+144	-77.5	0.40875
+145	-77.5	0.43127
+146	-77.5	0.45316
+147	-77.5	0.43435
+148	-77.5	0.39405
+149	-77.5	0.35375
+150	-77.5	0.32561
+151	-77.5	0.30199
+152	-77.5	0.27837
+153	-77.5	0.23445
+154	-77.5	0.23534
+155	-77.5	0.23275
+156	-77.5	0.15953
+157	-77.5	0.04524
+158	-77.5	-0.17757
+159	-77.5	-0.41402
+160	-77.5	-0.65047
+161	-77.5	-0.81347
+162	-77.5	-0.69803
+163	-77.5	-0.4647
+164	-77.5	-0.21085
+165	-77.5	-0.37656
+166	-77.5	-0.13003
+167	-77.5	-0.34729
+168	-77.5	-0.33439
+169	-77.5	-0.35205
+170	-77.5	-0.19797
+171	-77.5	-0.78442
+172	-77.5	-0.94965
+173	-77.5	-0.75142
+174	-77.5	-0.536
+175	-77.5	-0.33927
+176	-77.5	-0.30892
+177	-77.5	-0.095719
+178	-77.5	0
+179	-77.5	-0.2408
+180	-77.5	-0.25522
+181	-77.5	-0.28264
+182	-77.5	-0.038634
+183	-77.5	0
+184	-77.5	0
+185	-77.5	0
+186	-77.5	0
+187	-77.5	0
+188	-77.5	0
+189	-77.5	0
+190	-77.5	0
+191	-77.5	0
+192	-77.5	0
+193	-77.5	0
+194	-77.5	0
+195	-77.5	0
+196	-77.5	0
+197	-77.5	0
+198	-77.5	-0.36607
+199	-77.5	-0.94433
+200	-77.5	-1.3716
+201	-77.5	-0.57894
+202	-77.5	-1.1811
+203	-77.5	-1.3463
+204	-77.5	-1.4733
+205	-77.5	-1.7416
+206	-77.5	-2.2343
+207	-77.5	-1.0308
+208	-77.5	-1.0622
+209	-77.5	-2.1032
+210	-77.5	-3.1348
+211	-77.5	-3.1642
+212	-77.5	-3.1932
+213	-77.5	-3.4345
+214	-77.5	-3.9996
+215	-77.5	-4.3779
+216	-77.5	-4.3612
+217	-77.5	-4.3002
+218	-77.5	-4.1187
+219	-77.5	-4.4868
+220	-77.5	-5.3802
+221	-77.5	-6.0269
+222	-77.5	-6.3328
+223	-77.5	-6.327
+224	-77.5	-6.3733
+225	-77.5	-6.7486
+226	-77.5	-7.0769
+227	-77.5	-7.2902
+228	-77.5	-7.5061
+229	-77.5	-7.7111
+230	-77.5	-7.4392
+231	-77.5	-8.0482
+232	-77.5	-8.3946
+233	-77.5	-8.741
+234	-77.5	-9.1238
+235	-77.5	-10.337
+236	-77.5	-10.869
+237	-77.5	-10.978
+238	-77.5	-11.088
+239	-77.5	-11.197
+240	-77.5	-11.869
+241	-77.5	-12.705
+242	-77.5	-13.541
+243	-77.5	-14.177
+244	-77.5	-14.576
+245	-77.5	-15.576
+246	-77.5	-16.414
+247	-77.5	-15.806
+248	-77.5	-15.216
+249	-77.5	-14.595
+250	-77.5	-14.273
+251	-77.5	-14.009
+252	-77.5	-14.644
+253	-77.5	-14.761
+254	-77.5	-16.577
+255	-77.5	-20.248
+256	-77.5	-20.138
+257	-77.5	-18.688
+258	-77.5	-16.175
+259	-77.5	-14.315
+260	-77.5	-12.173
+261	-77.5	-11.703
+262	-77.5	-11.756
+263	-77.5	-12.221
+264	-77.5	-13.852
+265	-77.5	-13.768
+266	-77.5	-12.904
+267	-77.5	-12.04
+268	-77.5	-11.083
+269	-77.5	-10.003
+270	-77.5	-8.9643
+271	-77.5	-8.6242
+272	-77.5	-8.2841
+273	-77.5	-7.7929
+274	-77.5	-6.8661
+275	-77.5	-5.979
+276	-77.5	-5.1755
+277	-77.5	-4.2573
+278	-77.5	-3.5137
+279	-77.5	-3.2838
+280	-77.5	-3.054
+281	-77.5	-2.8213
+282	-77.5	-2.5569
+283	-77.5	-2.2626
+284	-77.5	-1.9411
+285	-77.5	-1.6195
+286	-77.5	-1.2979
+287	-77.5	-1.1334
+288	-77.5	-1.2801
+289	-77.5	-1.4269
+290	-77.5	-1.4457
+291	-77.5	-1.2159
+292	-77.5	-0.87626
+293	-77.5	-0.70134
+294	-77.5	-0.52642
+295	-77.5	-0.35399
+296	-77.5	-0.42001
+297	-77.5	-0.46928
+298	-77.5	-0.51106
+299	-77.5	-0.44094
+300	-77.5	-0.39659
+301	-77.5	-0.368
+302	-77.5	-0.24921
+303	-77.5	-0.13121
+304	-77.5	0.079498
+305	-77.5	0.23935
+306	-77.5	0.29657
+307	-77.5	0.30956
+308	-77.5	0.32997
+309	-77.5	0.28449
+310	-77.5	0.13758
+311	-77.5	0.071109
+312	-77.5	0
+313	-77.5	0
+314	-77.5	0
+315	-77.5	0
+316	-77.5	0
+317	-77.5	0
+318	-77.5	0
+319	-77.5	0.15743
+320	-77.5	0
+321	-77.5	0
+322	-77.5	0
+323	-77.5	0
+324	-77.5	0.18075
+325	-77.5	0.47363
+326	-77.5	0.50779
+327	-77.5	0.43882
+328	-77.5	0.57641
+329	-77.5	0.97746
+330	-77.5	1.1322
+331	-77.5	1.1968
+332	-77.5	1.2694
+333	-77.5	1.3023
+334	-77.5	1.3157
+335	-77.5	1.3792
+336	-77.5	1.4564
+337	-77.5	1.4706
+338	-77.5	1.4565
+339	-77.5	1.5781
+340	-77.5	1.7449
+341	-77.5	1.937
+342	-77.5	2.1178
+343	-77.5	2.1966
+344	-77.5	2.4109
+345	-77.5	2.4767
+346	-77.5	2.4622
+347	-77.5	2.4477
+348	-77.5	2.4323
+349	-77.5	2.3616
+350	-77.5	2.2981
+351	-77.5	2.3336
+352	-77.5	2.3691
+353	-77.5	2.3823
+354	-77.5	2.382
+355	-77.5	2.3802
+356	-77.5	2.3762
+357	-77.5	2.3501
+358	-77.5	2.2879
+359	-77.5	2.2258
+360	-77.5	2.1846
+0	-77	2.3514
+1	-77	2.3058
+2	-77	2.2713
+3	-77	2.2367
+4	-77	2.2021
+5	-77	2.1269
+6	-77	2.0847
+7	-77	2.0477
+8	-77	2.0107
+9	-77	1.992
+10	-77	1.9751
+11	-77	1.9582
+12	-77	1.9413
+13	-77	1.9244
+14	-77	1.9075
+15	-77	1.8906
+16	-77	1.8763
+17	-77	1.868
+18	-77	1.8596
+19	-77	1.8513
+20	-77	1.843
+21	-77	1.8347
+22	-77	1.8243
+23	-77	1.8316
+24	-77	1.8378
+25	-77	1.844
+26	-77	1.8502
+27	-77	1.836
+28	-77	1.8335
+29	-77	1.8358
+30	-77	1.8145
+31	-77	1.7931
+32	-77	1.7926
+33	-77	1.8136
+34	-77	1.8345
+35	-77	1.8555
+36	-77	1.7703
+37	-77	1.6361
+38	-77	1.6123
+39	-77	1.5888
+40	-77	1.5736
+41	-77	1.5584
+42	-77	1.5433
+43	-77	1.5281
+44	-77	1.5194
+45	-77	1.6018
+46	-77	1.6842
+47	-77	1.6304
+48	-77	1.4969
+49	-77	1.2917
+50	-77	1.2823
+51	-77	1.2223
+52	-77	1.1623
+53	-77	1.1022
+54	-77	1.0422
+55	-77	0.98218
+56	-77	0.95089
+57	-77	0.89758
+58	-77	0.85831
+59	-77	0.81977
+60	-77	0.78123
+61	-77	0.74269
+62	-77	0.70414
+63	-77	0.66853
+64	-77	0.6369
+65	-77	0.60528
+66	-77	0.57366
+67	-77	0.54877
+68	-77	0.52843
+69	-77	0.50809
+70	-77	0.49166
+71	-77	0.47612
+72	-77	0.46059
+73	-77	0.44505
+74	-77	0.42952
+75	-77	0.41399
+76	-77	0.39666
+77	-77	0.36315
+78	-77	0.35545
+79	-77	0.36504
+80	-77	0.37463
+81	-77	0.38422
+82	-77	0.39381
+83	-77	0.33353
+84	-77	0.27249
+85	-77	0.26497
+86	-77	0.26817
+87	-77	0.27137
+88	-77	0.27457
+89	-77	0.27778
+90	-77	0.28227
+91	-77	0.29575
+92	-77	0.30924
+93	-77	0.32272
+94	-77	0.33621
+95	-77	0.3497
+96	-77	0.36318
+97	-77	0.41656
+98	-77	0.48992
+99	-77	0.54718
+100	-77	0.57959
+101	-77	0.54952
+102	-77	0.51945
+103	-77	0.49814
+104	-77	0.50045
+105	-77	0.50234
+106	-77	0.49882
+107	-77	0.4953
+108	-77	0.49179
+109	-77	0.48827
+110	-77	0.48475
+111	-77	0.48124
+112	-77	0.47772
+113	-77	0.47937
+114	-77	0.48457
+115	-77	0.48977
+116	-77	0.49497
+117	-77	0.50016
+118	-77	0.46317
+119	-77	0.41453
+120	-77	0.36589
+121	-77	0.36802
+122	-77	0.38855
+123	-77	0.39941
+124	-77	0.41026
+125	-77	0.42111
+126	-77	0.43197
+127	-77	0.42005
+128	-77	0.38208
+129	-77	0.35385
+130	-77	0.32913
+131	-77	0.30808
+132	-77	0.31747
+133	-77	0.33124
+134	-77	0.34501
+135	-77	0.35878
+136	-77	0.37255
+137	-77	0.38632
+138	-77	0.39107
+139	-77	0.39012
+140	-77	0.38917
+141	-77	0.38685
+142	-77	0.38899
+143	-77	0.41976
+144	-77	0.44165
+145	-77	0.46354
+146	-77	0.4813
+147	-77	0.45902
+148	-77	0.42461
+149	-77	0.38431
+150	-77	0.34401
+151	-77	0.30951
+152	-77	0.2859
+153	-77	0.23168
+154	-77	0.23456
+155	-77	0.24168
+156	-77	0.18091
+157	-77	0.025262
+158	-77	-0.063387
+159	-77	-0.29984
+160	-77	-0.64999
+161	-77	-0.87172
+162	-77	-0.81479
+163	-77	-0.53968
+164	-77	0
+165	-77	0
+166	-77	0
+167	-77	0
+168	-77	0
+169	-77	0
+170	-77	0
+171	-77	0
+172	-77	-0.18744
+173	-77	-0.083639
+174	-77	-0.042454
+175	-77	-0.17131
+176	-77	-0.17678
+177	-77	0
+178	-77	0
+179	-77	0
+180	-77	0
+181	-77	0
+182	-77	0
+183	-77	0
+184	-77	0
+185	-77	0
+186	-77	0
+187	-77	0
+188	-77	0
+189	-77	0
+190	-77	0
+191	-77	0
+192	-77	0
+193	-77	0
+194	-77	0
+195	-77	0
+196	-77	0
+197	-77	0
+198	-77	0
+199	-77	-0.38418
+200	-77	-0.93039
+201	-77	0
+202	-77	-0.47919
+203	-77	-0.60852
+204	-77	-0.6743
+205	-77	-0.87804
+206	-77	-0.6854
+207	-77	-0.051716
+208	-77	-0.17805
+209	-77	-0.71871
+210	-77	-1.8145
+211	-77	-2.9242
+212	-77	-3.0543
+213	-77	-3.5407
+214	-77	-4.0633
+215	-77	-4.4265
+216	-77	-4.4935
+217	-77	-4.4252
+218	-77	-4.3411
+219	-77	-4.7842
+220	-77	-5.4912
+221	-77	-6.1748
+222	-77	-6.6454
+223	-77	-6.9632
+224	-77	-7.1802
+225	-77	-7.5555
+226	-77	-7.9268
+227	-77	-8.1401
+228	-77	-8.3053
+229	-77	-8.4185
+230	-77	-8.1556
+231	-77	-8.0426
+232	-77	-8.9234
+233	-77	-9.2883
+234	-77	-9.7542
+235	-77	-10.974
+236	-77	-12.094
+237	-77	-12.26
+238	-77	-12.425
+239	-77	-12.571
+240	-77	-13.065
+241	-77	-13.473
+242	-77	-13.88
+243	-77	-14.811
+244	-77	-15.5
+245	-77	-16.53
+246	-77	-18.239
+247	-77	-17.658
+248	-77	-16.892
+249	-77	-15.526
+250	-77	-15.029
+251	-77	-15.124
+252	-77	-15.286
+253	-77	-15.27
+254	-77	-17.501
+255	-77	-21.019
+256	-77	-21.331
+257	-77	-19.91
+258	-77	-16.662
+259	-77	-14.936
+260	-77	-13.026
+261	-77	-12.313
+262	-77	-13.123
+263	-77	-13.013
+264	-77	-14.796
+265	-77	-15.665
+266	-77	-14.801
+267	-77	-13.937
+268	-77	-13.023
+269	-77	-11.943
+270	-77	-10.863
+271	-77	-9.91
+272	-77	-9.5699
+273	-77	-8.7995
+274	-77	-7.8727
+275	-77	-6.9715
+276	-77	-5.9465
+277	-77	-4.8234
+278	-77	-4.1543
+279	-77	-3.5207
+280	-77	-3.2908
+281	-77	-3.0563
+282	-77	-2.7918
+283	-77	-2.4923
+284	-77	-2.1659
+285	-77	-1.8432
+286	-77	-1.5205
+287	-77	-1.3578
+288	-77	-1.4253
+289	-77	-1.572
+290	-77	-1.4963
+291	-77	-1.3381
+292	-77	-0.99546
+293	-77	-0.65281
+294	-77	-0.42313
+295	-77	-0.32702
+296	-77	-0.43215
+297	-77	-0.48143
+298	-77	-0.46721
+299	-77	-0.38363
+300	-77	-0.33781
+301	-77	-0.202
+302	-77	-0.075287
+303	-77	0.063181
+304	-77	0.30317
+305	-77	0.39464
+306	-77	0.45013
+307	-77	0.50088
+308	-77	0.21625
+309	-77	0.19736
+310	-77	0.054096
+311	-77	0
+312	-77	0
+313	-77	0
+314	-77	0
+315	-77	0
+316	-77	0
+317	-77	0
+318	-77	0
+319	-77	0
+320	-77	0
+321	-77	0
+322	-77	0
+323	-77	0
+324	-77	0
+325	-77	0
+326	-77	0
+327	-77	0
+328	-77	0.35535
+329	-77	0.56083
+330	-77	1.0281
+331	-77	1.2406
+332	-77	1.3283
+333	-77	1.4445
+334	-77	1.4347
+335	-77	1.516
+336	-77	1.6491
+337	-77	1.6371
+338	-77	1.6201
+339	-77	1.7518
+340	-77	1.9077
+341	-77	2.0761
+342	-77	2.1736
+343	-77	2.2591
+344	-77	2.4734
+345	-77	2.6638
+346	-77	2.6506
+347	-77	2.6361
+348	-77	2.6209
+349	-77	2.5303
+350	-77	2.4533
+351	-77	2.4888
+352	-77	2.5243
+353	-77	2.5598
+354	-77	2.5666
+355	-77	2.5626
+356	-77	2.5587
+357	-77	2.5379
+358	-77	2.4757
+359	-77	2.4136
+360	-77	2.3514
+0	-76.5	2.5392
+1	-76.5	2.4771
+2	-76.5	2.4271
+3	-76.5	2.3925
+4	-76.5	2.354
+5	-76.5	2.2744
+6	-76.5	2.2279
+7	-76.5	2.1909
+8	-76.5	2.1524
+9	-76.5	2.1016
+10	-76.5	2.0882
+11	-76.5	2.0752
+12	-76.5	2.0622
+13	-76.5	2.0481
+14	-76.5	2.0313
+15	-76.5	2.0144
+16	-76.5	1.9998
+17	-76.5	1.9915
+18	-76.5	1.9814
+19	-76.5	1.9668
+20	-76.5	1.9521
+21	-76.5	1.9385
+22	-76.5	1.9393
+23	-76.5	1.9588
+24	-76.5	1.9691
+25	-76.5	1.9753
+26	-76.5	1.9815
+27	-76.5	1.9729
+28	-76.5	1.95
+29	-76.5	1.951
+30	-76.5	1.9296
+31	-76.5	1.9442
+32	-76.5	1.9651
+33	-76.5	1.9861
+34	-76.5	2.0071
+35	-76.5	2.028
+36	-76.5	1.9047
+37	-76.5	1.7432
+38	-76.5	1.7195
+39	-76.5	1.6958
+40	-76.5	1.6735
+41	-76.5	1.6583
+42	-76.5	1.6431
+43	-76.5	1.6279
+44	-76.5	1.6845
+45	-76.5	1.7669
+46	-76.5	1.8493
+47	-76.5	1.7592
+48	-76.5	1.6349
+49	-76.5	1.4296
+50	-76.5	1.3416
+51	-76.5	1.2816
+52	-76.5	1.2216
+53	-76.5	1.1616
+54	-76.5	1.1166
+55	-76.5	1.0888
+56	-76.5	1.0532
+57	-76.5	1.0044
+58	-76.5	0.94293
+59	-76.5	0.90438
+60	-76.5	0.86584
+61	-76.5	0.8273
+62	-76.5	0.78876
+63	-76.5	0.75022
+64	-76.5	0.71167
+65	-76.5	0.67313
+66	-76.5	0.63459
+67	-76.5	0.59861
+68	-76.5	0.58308
+69	-76.5	0.56755
+70	-76.5	0.55201
+71	-76.5	0.53648
+72	-76.5	0.52095
+73	-76.5	0.50541
+74	-76.5	0.48988
+75	-76.5	0.47434
+76	-76.5	0.44697
+77	-76.5	0.41055
+78	-76.5	0.38974
+79	-76.5	0.38706
+80	-76.5	0.39665
+81	-76.5	0.40624
+82	-76.5	0.41583
+83	-76.5	0.36436
+84	-76.5	0.30332
+85	-76.5	0.26826
+86	-76.5	0.27146
+87	-76.5	0.27466
+88	-76.5	0.27787
+89	-76.5	0.28107
+90	-76.5	0.28427
+91	-76.5	0.28747
+92	-76.5	0.29985
+93	-76.5	0.31333
+94	-76.5	0.32682
+95	-76.5	0.3403
+96	-76.5	0.3652
+97	-76.5	0.43857
+98	-76.5	0.51082
+99	-76.5	0.56562
+100	-76.5	0.6069
+101	-76.5	0.57682
+102	-76.5	0.54675
+103	-76.5	0.51667
+104	-76.5	0.50577
+105	-76.5	0.50226
+106	-76.5	0.49874
+107	-76.5	0.49522
+108	-76.5	0.4917
+109	-76.5	0.48819
+110	-76.5	0.48467
+111	-76.5	0.48115
+112	-76.5	0.47764
+113	-76.5	0.47979
+114	-76.5	0.48499
+115	-76.5	0.49019
+116	-76.5	0.49539
+117	-76.5	0.50059
+118	-76.5	0.49464
+119	-76.5	0.44601
+120	-76.5	0.39737
+121	-76.5	0.40123
+122	-76.5	0.41697
+123	-76.5	0.42783
+124	-76.5	0.43868
+125	-76.5	0.44953
+126	-76.5	0.46039
+127	-76.5	0.45821
+128	-76.5	0.42024
+129	-76.5	0.39527
+130	-76.5	0.37055
+131	-76.5	0.33777
+132	-76.5	0.35168
+133	-76.5	0.36545
+134	-76.5	0.37922
+135	-76.5	0.39299
+136	-76.5	0.40676
+137	-76.5	0.42053
+138	-76.5	0.41972
+139	-76.5	0.41877
+140	-76.5	0.41781
+141	-76.5	0.41686
+142	-76.5	0.43014
+143	-76.5	0.44888
+144	-76.5	0.46234
+145	-76.5	0.47579
+146	-76.5	0.45196
+147	-76.5	0.41809
+148	-76.5	0.41443
+149	-76.5	0.38432
+150	-76.5	0.35421
+151	-76.5	0.32409
+152	-76.5	0.29397
+153	-76.5	0.2289
+154	-76.5	0.23379
+155	-76.5	0.23239
+156	-76.5	0.16696
+157	-76.5	0.0052842
+158	-76.5	-0.022237
+159	-76.5	-0.21979
+160	-76.5	-0.66727
+161	-76.5	-0.94869
+162	-76.5	-0.9258
+163	-76.5	-0.62688
+164	-76.5	-0.098387
+165	-76.5	0
+166	-76.5	0
+167	-76.5	0
+168	-76.5	0
+169	-76.5	0
+170	-76.5	0
+171	-76.5	0
+172	-76.5	0
+173	-76.5	0
+174	-76.5	0
+175	-76.5	-0.0033589
+176	-76.5	-0.092671
+177	-76.5	0
+178	-76.5	0
+179	-76.5	0
+180	-76.5	0
+181	-76.5	0
+182	-76.5	0
+183	-76.5	0
+184	-76.5	0
+185	-76.5	0
+186	-76.5	0
+187	-76.5	0
+188	-76.5	0
+189	-76.5	0
+190	-76.5	0
+191	-76.5	0
+192	-76.5	0
+193	-76.5	0
+194	-76.5	0
+195	-76.5	0
+196	-76.5	0
+197	-76.5	0
+198	-76.5	0
+199	-76.5	0
+200	-76.5	-0.40809
+201	-76.5	0
+202	-76.5	0
+203	-76.5	0
+204	-76.5	0
+205	-76.5	0
+206	-76.5	0
+207	-76.5	0
+208	-76.5	0
+209	-76.5	0
+210	-76.5	-0.3735
+211	-76.5	-1.3013
+212	-76.5	-2.8965
+213	-76.5	-3.4345
+214	-76.5	-3.897
+215	-76.5	-4.2071
+216	-76.5	-3.9939
+217	-76.5	-4.3877
+218	-76.5	-4.3435
+219	-76.5	-4.8428
+220	-76.5	-5.5579
+221	-76.5	-6.2678
+222	-76.5	-6.7453
+223	-76.5	-7.2107
+224	-76.5	-7.4898
+225	-76.5	-7.8585
+226	-76.5	-8.2815
+227	-76.5	-8.837
+228	-76.5	-8.9087
+229	-76.5	-9.1259
+230	-76.5	-8.8719
+231	-76.5	-8.4738
+232	-76.5	-8.9041
+233	-76.5	-9.8408
+234	-76.5	-10.392
+235	-76.5	-11.275
+236	-76.5	-12.288
+237	-76.5	-13.382
+238	-76.5	-13.548
+239	-76.5	-13.967
+240	-76.5	-13.529
+241	-76.5	-13.677
+242	-76.5	-14.085
+243	-76.5	-15.209
+244	-76.5	-16.424
+245	-76.5	-17.483
+246	-76.5	-19.742
+247	-76.5	-19.188
+248	-76.5	-17.822
+249	-76.5	-16.456
+250	-76.5	-16.058
+251	-76.5	-15.697
+252	-76.5	-15.243
+253	-76.5	-15.778
+254	-76.5	-18.386
+255	-76.5	-21.46
+256	-76.5	-22.304
+257	-76.5	-21.103
+258	-76.5	-17.562
+259	-76.5	-15.407
+260	-76.5	-13.696
+261	-76.5	-13.559
+262	-76.5	-14.404
+263	-76.5	-13.804
+264	-76.5	-15.557
+265	-76.5	-16.385
+266	-76.5	-16.02
+267	-76.5	-15.449
+268	-76.5	-14.797
+269	-76.5	-13.785
+270	-76.5	-12.773
+271	-76.5	-11.723
+272	-76.5	-10.733
+273	-76.5	-9.7076
+274	-76.5	-8.6807
+275	-76.5	-7.623
+276	-76.5	-6.5126
+277	-76.5	-5.3895
+278	-76.5	-4.8795
+279	-76.5	-4.0874
+280	-76.5	-3.5276
+281	-76.5	-3.2912
+282	-76.5	-3.0185
+283	-76.5	-2.7244
+284	-76.5	-2.3911
+285	-76.5	-2.0643
+286	-76.5	-1.7416
+287	-76.5	-1.6441
+288	-76.5	-1.6146
+289	-76.5	-1.6413
+290	-76.5	-1.5469
+291	-76.5	-1.4525
+292	-76.5	-1.1177
+293	-76.5	-0.77506
+294	-76.5	-0.43241
+295	-76.5	-0.30006
+296	-76.5	-0.41782
+297	-76.5	-0.49357
+298	-76.5	-0.42335
+299	-76.5	-0.33977
+300	-76.5	-0.22923
+301	-76.5	-0.07279
+302	-76.5	0.12293
+303	-76.5	0.26139
+304	-76.5	0.44673
+305	-76.5	0.32613
+306	-76.5	0.17468
+307	-76.5	0.28997
+308	-76.5	0.01857
+309	-76.5	0.071887
+310	-76.5	0
+311	-76.5	0
+312	-76.5	0
+313	-76.5	0
+314	-76.5	0
+315	-76.5	0
+316	-76.5	0
+317	-76.5	0
+318	-76.5	0
+319	-76.5	0
+320	-76.5	0
+321	-76.5	0
+322	-76.5	0
+323	-76.5	0
+324	-76.5	0
+325	-76.5	0
+326	-76.5	0
+327	-76.5	0
+328	-76.5	0.020007
+329	-76.5	0.1442
+330	-76.5	0.57327
+331	-76.5	1.087
+332	-76.5	1.0863
+333	-76.5	0.93829
+334	-76.5	1.5537
+335	-76.5	1.6528
+336	-76.5	1.8184
+337	-76.5	1.8011
+338	-76.5	1.7794
+339	-76.5	1.8919
+340	-76.5	2.0345
+341	-76.5	2.1661
+342	-76.5	2.2294
+343	-76.5	2.3216
+344	-76.5	2.5385
+345	-76.5	2.7311
+346	-76.5	2.8358
+347	-76.5	2.8226
+348	-76.5	2.7926
+349	-76.5	2.699
+350	-76.5	2.6085
+351	-76.5	2.644
+352	-76.5	2.6795
+353	-76.5	2.7135
+354	-76.5	2.7359
+355	-76.5	2.7451
+356	-76.5	2.7411
+357	-76.5	2.7257
+358	-76.5	2.6635
+359	-76.5	2.6014
+360	-76.5	2.5392
+0	-76	2.727
+1	-76	2.6649
+2	-76	2.6027
+3	-76	2.5484
+4	-76	2.5016
+5	-76	2.4219
+6	-76	2.3712
+7	-76	2.3342
+8	-76	2.2777
+9	-76	2.2173
+10	-76	2.1885
+11	-76	2.1755
+12	-76	2.1626
+13	-76	2.1496
+14	-76	2.1366
+15	-76	2.1236
+16	-76	2.1092
+17	-76	2.0946
+18	-76	2.0799
+19	-76	2.0652
+20	-76	2.0529
+21	-76	2.0536
+22	-76	2.0544
+23	-76	2.0744
+24	-76	2.0959
+25	-76	2.1066
+26	-76	2.1128
+27	-76	2.1099
+28	-76	2.087
+29	-76	2.0747
+30	-76	2.0957
+31	-76	2.1167
+32	-76	2.1377
+33	-76	2.1586
+34	-76	2.1796
+35	-76	2.2006
+36	-76	2.039
+37	-76	1.948
+38	-76	1.8778
+39	-76	1.8049
+40	-76	1.7793
+41	-76	1.7581
+42	-76	1.743
+43	-76	1.7672
+44	-76	1.8496
+45	-76	1.932
+46	-76	1.9848
+47	-76	1.888
+48	-76	1.7728
+49	-76	1.5676
+50	-76	1.3868
+51	-76	1.341
+52	-76	1.2813
+53	-76	1.2535
+54	-76	1.2257
+55	-76	1.1962
+56	-76	1.1554
+57	-76	1.1112
+58	-76	1.0449
+59	-76	0.989
+60	-76	0.95046
+61	-76	0.91191
+62	-76	0.87337
+63	-76	0.83483
+64	-76	0.79629
+65	-76	0.75775
+66	-76	0.72989
+67	-76	0.66527
+68	-76	0.64344
+69	-76	0.6279
+70	-76	0.61237
+71	-76	0.59684
+72	-76	0.5813
+73	-76	0.56577
+74	-76	0.55023
+75	-76	0.5347
+76	-76	0.49729
+77	-76	0.45795
+78	-76	0.43714
+79	-76	0.41633
+80	-76	0.41867
+81	-76	0.42826
+82	-76	0.43785
+83	-76	0.39519
+84	-76	0.33415
+85	-76	0.2731
+86	-76	0.27475
+87	-76	0.27796
+88	-76	0.28116
+89	-76	0.28436
+90	-76	0.28756
+91	-76	0.29076
+92	-76	0.29396
+93	-76	0.30394
+94	-76	0.31742
+95	-76	0.33091
+96	-76	0.38721
+97	-76	0.46058
+98	-76	0.52927
+99	-76	0.58406
+100	-76	0.6342
+101	-76	0.60412
+102	-76	0.57405
+103	-76	0.54397
+104	-76	0.49585
+105	-76	0.49893
+106	-76	0.49866
+107	-76	0.49514
+108	-76	0.49162
+109	-76	0.48811
+110	-76	0.48459
+111	-76	0.48107
+112	-76	0.47756
+113	-76	0.48022
+114	-76	0.48541
+115	-76	0.49061
+116	-76	0.49581
+117	-76	0.50101
+118	-76	0.50621
+119	-76	0.47748
+120	-76	0.42884
+121	-76	0.43445
+122	-76	0.44539
+123	-76	0.45625
+124	-76	0.4671
+125	-76	0.47795
+126	-76	0.48881
+127	-76	0.49637
+128	-76	0.46141
+129	-76	0.43669
+130	-76	0.40221
+131	-76	0.37279
+132	-76	0.38589
+133	-76	0.39966
+134	-76	0.41343
+135	-76	0.4272
+136	-76	0.44097
+137	-76	0.44932
+138	-76	0.44837
+139	-76	0.44742
+140	-76	0.44646
+141	-76	0.44246
+142	-76	0.44338
+143	-76	0.45683
+144	-76	0.47028
+145	-76	0.48373
+146	-76	0.39948
+147	-76	0.33478
+148	-76	0.39641
+149	-76	0.36984
+150	-76	0.33972
+151	-76	0.30961
+152	-76	0.23318
+153	-76	0.22613
+154	-76	0.22571
+155	-76	0.13437
+156	-76	0.06982
+157	-76	-0.014694
+158	-76	-0.042215
+159	-76	-0.23959
+160	-76	-0.66807
+161	-76	-1.0437
+162	-76	-1.0266
+163	-76	-0.88111
+164	-76	-0.28552
+165	-76	0
+166	-76	0
+167	-76	0
+168	-76	0
+169	-76	0
+170	-76	0
+171	-76	0
+172	-76	0
+173	-76	0
+174	-76	0
+175	-76	0
+176	-76	0
+177	-76	0
+178	-76	0
+179	-76	0
+180	-76	0
+181	-76	0
+182	-76	0
+183	-76	0
+184	-76	0
+185	-76	0
+186	-76	0
+187	-76	0
+188	-76	0
+189	-76	0
+190	-76	0
+191	-76	0
+192	-76	0
+193	-76	0
+194	-76	0
+195	-76	0
+196	-76	0
+197	-76	0
+198	-76	0
+199	-76	0
+200	-76	0
+201	-76	0
+202	-76	0
+203	-76	0
+204	-76	0
+205	-76	0
+206	-76	0
+207	-76	0
+208	-76	0
+209	-76	0
+210	-76	0
+211	-76	0
+212	-76	-1.466
+213	-76	-1.9744
+214	-76	-2.3928
+215	-76	-3.9968
+216	-76	-2.6138
+217	-76	-4.1426
+218	-76	-2.5754
+219	-76	-4.7842
+220	-76	-5.6876
+221	-76	-6.3609
+222	-76	-6.8384
+223	-76	-7.1538
+224	-76	-7.3443
+225	-76	-7.7541
+226	-76	-8.2824
+227	-76	-9.2057
+228	-76	-9.4392
+229	-76	-9.627
+230	-76	-9.5883
+231	-76	-9.1902
+232	-76	-8.8217
+233	-76	-10.203
+234	-76	-11.029
+235	-76	-11.389
+236	-76	-12.405
+237	-76	-14.434
+238	-76	-14.738
+239	-76	-15.434
+240	-76	-15.178
+241	-76	-14.418
+242	-76	-14.29
+243	-76	-15.607
+244	-76	-17.026
+245	-76	-18.671
+246	-76	-20.022
+247	-76	-20.663
+248	-76	-19.12
+249	-76	-17.346
+250	-76	-16.7
+251	-76	-16.033
+252	-76	-15.449
+253	-76	-15.885
+254	-76	-18.805
+255	-76	-21.908
+256	-76	-23.448
+257	-76	-22.041
+258	-76	-18.462
+259	-76	-15.878
+260	-76	-14.737
+261	-76	-15.332
+262	-76	-15.196
+263	-76	-14.596
+264	-76	-15.821
+265	-76	-16.496
+266	-76	-16.942
+267	-76	-16.372
+268	-76	-15.198
+269	-76	-14.145
+270	-76	-13.133
+271	-76	-12.114
+272	-76	-11.199
+273	-76	-10.277
+274	-76	-9.2395
+275	-76	-8.1591
+276	-76	-7.0733
+277	-76	-5.9556
+278	-76	-5.6047
+279	-76	-4.8127
+280	-76	-4.0206
+281	-76	-3.5249
+282	-76	-3.2767
+283	-76	-3.5218
+284	-76	-2.821
+285	-76	-2.2899
+286	-76	-1.9628
+287	-76	-1.9305
+288	-76	-2.2755
+289	-76	-2.1865
+290	-76	-1.8529
+291	-76	-1.5193
+292	-76	-1.3303
+293	-76	-1.1765
+294	-76	-1.0227
+295	-76	-0.64938
+296	-76	-0.52304
+297	-76	-0.54975
+298	-76	-0.5138
+299	-76	-0.47725
+300	-76	-0.14297
+301	-76	0.10246
+302	-76	0.12559
+303	-76	0.46187
+304	-76	0.35171
+305	-76	0.27144
+306	-76	0.004718
+307	-76	0.080614
+308	-76	0
+309	-76	0
+310	-76	0
+311	-76	0
+312	-76	0
+313	-76	0
+314	-76	0
+315	-76	0
+316	-76	0
+317	-76	0
+318	-76	0
+319	-76	0
+320	-76	0
+321	-76	0
+322	-76	0
+323	-76	0
+324	-76	0
+325	-76	0
+326	-76	0
+327	-76	0
+328	-76	0
+329	-76	0
+330	-76	0.31262
+331	-76	0.51663
+332	-76	0.27086
+333	-76	0.37235
+334	-76	1.332
+335	-76	1.7601
+336	-76	1.8932
+337	-76	1.9588
+338	-76	1.9387
+339	-76	2.051
+340	-76	2.1764
+341	-76	2.231
+342	-76	2.2788
+343	-76	2.3841
+344	-76	2.6063
+345	-76	2.7811
+346	-76	3.0117
+347	-76	3.0002
+348	-76	2.9258
+349	-76	2.8676
+350	-76	2.7703
+351	-76	2.7992
+352	-76	2.8347
+353	-76	2.8653
+354	-76	2.8912
+355	-76	2.9049
+356	-76	2.9185
+357	-76	2.9135
+358	-76	2.8513
+359	-76	2.7892
+360	-76	2.727
+0	-75.5	2.8905
+1	-75.5	2.8312
+2	-75.5	2.7718
+3	-75.5	2.7125
+4	-75.5	2.6491
+5	-75.5	2.5694
+6	-75.5	2.5144
+7	-75.5	2.4728
+8	-75.5	2.403
+9	-75.5	2.3332
+10	-75.5	2.3034
+11	-75.5	2.2759
+12	-75.5	2.2629
+13	-75.5	2.2499
+14	-75.5	2.237
+15	-75.5	2.224
+16	-75.5	2.2082
+17	-75.5	2.193
+18	-75.5	2.1784
+19	-75.5	2.1672
+20	-75.5	2.168
+21	-75.5	2.1687
+22	-75.5	2.1695
+23	-75.5	2.1899
+24	-75.5	2.2115
+25	-75.5	2.233
+26	-75.5	2.2441
+27	-75.5	2.2468
+28	-75.5	2.2239
+29	-75.5	2.2168
+30	-75.5	2.2683
+31	-75.5	2.2892
+32	-75.5	2.3102
+33	-75.5	2.3312
+34	-75.5	2.3522
+35	-75.5	2.3731
+36	-75.5	2.1904
+37	-75.5	2.1545
+38	-75.5	2.0925
+39	-75.5	2.0196
+40	-75.5	1.9466
+41	-75.5	1.8737
+42	-75.5	1.8499
+43	-75.5	1.9323
+44	-75.5	2.0147
+45	-75.5	2.0971
+46	-75.5	2.1136
+47	-75.5	2.0168
+48	-75.5	1.9107
+49	-75.5	1.7055
+50	-75.5	1.5003
+51	-75.5	1.4182
+52	-75.5	1.3904
+53	-75.5	1.3626
+54	-75.5	1.3348
+55	-75.5	1.2985
+56	-75.5	1.2577
+57	-75.5	1.2168
+58	-75.5	1.1517
+59	-75.5	1.0854
+60	-75.5	1.0351
+61	-75.5	0.99653
+62	-75.5	0.95799
+63	-75.5	0.91944
+64	-75.5	0.8809
+65	-75.5	0.84236
+66	-75.5	0.8239
+67	-75.5	0.74377
+68	-75.5	0.71027
+69	-75.5	0.68826
+70	-75.5	0.67273
+71	-75.5	0.65719
+72	-75.5	0.64166
+73	-75.5	0.62612
+74	-75.5	0.61059
+75	-75.5	0.58716
+76	-75.5	0.5476
+77	-75.5	0.50804
+78	-75.5	0.48454
+79	-75.5	0.46373
+80	-75.5	0.44292
+81	-75.5	0.45028
+82	-75.5	0.45987
+83	-75.5	0.42602
+84	-75.5	0.36498
+85	-75.5	0.30393
+86	-75.5	0.28795
+87	-75.5	0.28555
+88	-75.5	0.28445
+89	-75.5	0.28765
+90	-75.5	0.29085
+91	-75.5	0.29405
+92	-75.5	0.29725
+93	-75.5	0.30045
+94	-75.5	0.30803
+95	-75.5	0.33585
+96	-75.5	0.40922
+97	-75.5	0.48259
+98	-75.5	0.54771
+99	-75.5	0.60251
+100	-75.5	0.65731
+101	-75.5	0.63142
+102	-75.5	0.60135
+103	-75.5	0.57127
+104	-75.5	0.48351
+105	-75.5	0.47858
+106	-75.5	0.48288
+107	-75.5	0.48718
+108	-75.5	0.49149
+109	-75.5	0.48803
+110	-75.5	0.48451
+111	-75.5	0.48099
+112	-75.5	0.47747
+113	-75.5	0.48064
+114	-75.5	0.48584
+115	-75.5	0.49103
+116	-75.5	0.49623
+117	-75.5	0.50143
+118	-75.5	0.50663
+119	-75.5	0.50895
+120	-75.5	0.46031
+121	-75.5	0.46296
+122	-75.5	0.47381
+123	-75.5	0.48467
+124	-75.5	0.49552
+125	-75.5	0.50637
+126	-75.5	0.51723
+127	-75.5	0.52808
+128	-75.5	0.50283
+129	-75.5	0.46665
+130	-75.5	0.42582
+131	-75.5	0.40791
+132	-75.5	0.42315
+133	-75.5	0.43387
+134	-75.5	0.44764
+135	-75.5	0.4614
+136	-75.5	0.47517
+137	-75.5	0.47797
+138	-75.5	0.47702
+139	-75.5	0.47607
+140	-75.5	0.47091
+141	-75.5	0.45969
+142	-75.5	0.45917
+143	-75.5	0.46477
+144	-75.5	0.47822
+145	-75.5	0.45711
+146	-75.5	0.347
+147	-75.5	0.25148
+148	-75.5	0.31311
+149	-75.5	0.35535
+150	-75.5	0.32524
+151	-75.5	0.28687
+152	-75.5	0.16746
+153	-75.5	0.21846
+154	-75.5	0.12769
+155	-75.5	0.036353
+156	-75.5	-0.047815
+157	-75.5	-0.034672
+158	-75.5	-0.11988
+159	-75.5	-0.22838
+160	-75.5	-0.63436
+161	-75.5	-1.0264
+162	-75.5	-1.1537
+163	-75.5	-0.93854
+164	-75.5	-0.35961
+165	-75.5	0
+166	-75.5	0
+167	-75.5	0
+168	-75.5	0
+169	-75.5	0
+170	-75.5	0
+171	-75.5	0
+172	-75.5	0
+173	-75.5	0
+174	-75.5	0
+175	-75.5	0
+176	-75.5	0
+177	-75.5	0
+178	-75.5	0
+179	-75.5	0
+180	-75.5	0
+181	-75.5	0
+182	-75.5	0
+183	-75.5	0
+184	-75.5	0
+185	-75.5	0
+186	-75.5	0
+187	-75.5	0
+188	-75.5	0
+189	-75.5	0
+190	-75.5	0
+191	-75.5	0
+192	-75.5	0
+193	-75.5	0
+194	-75.5	0
+195	-75.5	0
+196	-75.5	0
+197	-75.5	0
+198	-75.5	0
+199	-75.5	0
+200	-75.5	0
+201	-75.5	0
+202	-75.5	0
+203	-75.5	0
+204	-75.5	0
+205	-75.5	0
+206	-75.5	0
+207	-75.5	0
+208	-75.5	0
+209	-75.5	0
+210	-75.5	0
+211	-75.5	0
+212	-75.5	-0.14768
+213	-75.5	-1.1058
+214	-75.5	-0.62279
+215	-75.5	-2.0036
+216	-75.5	-1.2519
+217	-75.5	-2.2306
+218	-75.5	-1.4991
+219	-75.5	-2.242
+220	-75.5	-3.7317
+221	-75.5	-6.3635
+222	-75.5	-4.7448
+223	-75.5	-5.76
+224	-75.5	-7.1704
+225	-75.5	-7.6307
+226	-75.5	-8.1769
+227	-75.5	-8.9401
+228	-75.5	-9.7066
+229	-75.5	-10.103
+230	-75.5	-10.161
+231	-75.5	-9.7505
+232	-75.5	-9.4111
+233	-75.5	-10.196
+234	-75.5	-11.102
+235	-75.5	-11.435
+236	-75.5	-12.356
+237	-75.5	-14.274
+238	-75.5	-15.619
+239	-75.5	-15.765
+240	-75.5	-15.339
+241	-75.5	-14.91
+242	-75.5	-14.497
+243	-75.5	-15.598
+244	-75.5	-16.971
+245	-75.5	-17.926
+246	-75.5	-19.71
+247	-75.5	-22.008
+248	-75.5	-20.888
+249	-75.5	-18.023
+250	-75.5	-16.854
+251	-75.5	-15.721
+252	-75.5	-14.76
+253	-75.5	-15.755
+254	-75.5	-19.223
+255	-75.5	-21.678
+256	-75.5	-23.152
+257	-75.5	-21.56
+258	-75.5	-19.246
+259	-75.5	-16.463
+260	-75.5	-16.589
+261	-75.5	-16.163
+262	-75.5	-15.988
+263	-75.5	-15.388
+264	-75.5	-15.932
+265	-75.5	-16.606
+266	-75.5	-17.281
+267	-75.5	-16.903
+268	-75.5	-15.608
+269	-75.5	-14.505
+270	-75.5	-13.483
+271	-75.5	-12.438
+272	-75.5	-11.577
+273	-75.5	-10.847
+274	-75.5	-9.7754
+275	-75.5	-8.6949
+276	-75.5	-7.6104
+277	-75.5	-6.5217
+278	-75.5	-6.8399
+279	-75.5	-7.0748
+280	-75.5	-6.0941
+281	-75.5	-3.9562
+282	-75.5	-3.7707
+283	-75.5	-4.7727
+284	-75.5	-4.13
+285	-75.5	-3.4292
+286	-75.5	-2.975
+287	-75.5	-3.1243
+288	-75.5	-3.3952
+289	-75.5	-3.1874
+290	-75.5	-2.8538
+291	-75.5	-2.2064
+292	-75.5	-1.7942
+293	-75.5	-1.799
+294	-75.5	-1.6452
+295	-75.5	-1.2189
+296	-75.5	-0.74362
+297	-75.5	-0.74491
+298	-75.5	-0.74681
+299	-75.5	-0.58801
+300	-75.5	-0.21929
+301	-75.5	0.07051
+302	-75.5	0.044108
+303	-75.5	0.31683
+304	-75.5	0.027936
+305	-75.5	0.083883
+306	-75.5	0
+307	-75.5	0
+308	-75.5	0
+309	-75.5	0
+310	-75.5	0
+311	-75.5	0
+312	-75.5	0
+313	-75.5	0
+314	-75.5	0
+315	-75.5	0
+316	-75.5	0
+317	-75.5	0
+318	-75.5	0
+319	-75.5	0
+320	-75.5	0
+321	-75.5	0
+322	-75.5	0
+323	-75.5	0
+324	-75.5	0
+325	-75.5	0
+326	-75.5	0
+327	-75.5	0
+328	-75.5	0
+329	-75.5	0
+330	-75.5	0
+331	-75.5	0
+332	-75.5	0
+333	-75.5	0.22455
+334	-75.5	1.1441
+335	-75.5	1.7218
+336	-75.5	1.8791
+337	-75.5	2.0235
+338	-75.5	2.0658
+339	-75.5	2.0305
+340	-75.5	2.1266
+341	-75.5	2.2894
+342	-75.5	2.3024
+343	-75.5	2.4502
+344	-75.5	2.6638
+345	-75.5	2.8378
+346	-75.5	3.0564
+347	-75.5	3.1325
+348	-75.5	3.059
+349	-75.5	3.0194
+350	-75.5	2.939
+351	-75.5	2.9544
+352	-75.5	2.9868
+353	-75.5	3.0171
+354	-75.5	3.0466
+355	-75.5	3.0602
+356	-75.5	3.0738
+357	-75.5	3.0672
+358	-75.5	3.0091
+359	-75.5	2.9498
+360	-75.5	2.8905
+0	-75	3.0209
+1	-75	2.9616
+2	-75	2.9023
+3	-75	2.8429
+4	-75	2.7686
+5	-75	2.7169
+6	-75	2.6577
+7	-75	2.5981
+8	-75	2.5283
+9	-75	2.4585
+10	-75	2.4191
+11	-75	2.3894
+12	-75	2.3633
+13	-75	2.3503
+14	-75	2.3373
+15	-75	2.3234
+16	-75	2.3073
+17	-75	2.2915
+18	-75	2.2815
+19	-75	2.2823
+20	-75	2.2831
+21	-75	2.2838
+22	-75	2.2846
+23	-75	2.3055
+24	-75	2.3271
+25	-75	2.3486
+26	-75	2.3702
+27	-75	2.3816
+28	-75	2.3668
+29	-75	2.3642
+30	-75	2.4014
+31	-75	2.4618
+32	-75	2.4828
+33	-75	2.5037
+34	-75	2.5247
+35	-75	2.539
+36	-75	2.4043
+37	-75	2.361
+38	-75	2.3058
+39	-75	2.2343
+40	-75	2.1613
+41	-75	2.0896
+42	-75	2.0432
+43	-75	2.0974
+44	-75	2.1799
+45	-75	2.2623
+46	-75	2.2424
+47	-75	2.1456
+48	-75	2.0487
+49	-75	1.8434
+50	-75	1.6421
+51	-75	1.5304
+52	-75	1.4995
+53	-75	1.4717
+54	-75	1.4416
+55	-75	1.4007
+56	-75	1.3599
+57	-75	1.3191
+58	-75	1.2585
+59	-75	1.1922
+60	-75	1.1259
+61	-75	1.0811
+62	-75	1.0426
+63	-75	1.0041
+64	-75	0.96551
+65	-75	0.93938
+66	-75	0.91041
+67	-75	0.83029
+68	-75	0.7778
+69	-75	0.75528
+70	-75	0.73308
+71	-75	0.71755
+72	-75	0.70201
+73	-75	0.68648
+74	-75	0.67095
+75	-75	0.63747
+76	-75	0.59791
+77	-75	0.55836
+78	-75	0.53194
+79	-75	0.51113
+80	-75	0.49032
+81	-75	0.4723
+82	-75	0.48189
+83	-75	0.45685
+84	-75	0.39581
+85	-75	0.36687
+86	-75	0.3464
+87	-75	0.34399
+88	-75	0.34159
+89	-75	0.33918
+90	-75	0.33678
+91	-75	0.33437
+92	-75	0.33197
+93	-75	0.32956
+94	-75	0.32715
+95	-75	0.35786
+96	-75	0.43123
+97	-75	0.5046
+98	-75	0.56615
+99	-75	0.62095
+100	-75	0.67575
+101	-75	0.65873
+102	-75	0.62865
+103	-75	0.57949
+104	-75	0.47116
+105	-75	0.46493
+106	-75	0.46253
+107	-75	0.46684
+108	-75	0.47114
+109	-75	0.47544
+110	-75	0.47974
+111	-75	0.48091
+112	-75	0.47739
+113	-75	0.48106
+114	-75	0.48626
+115	-75	0.49146
+116	-75	0.49665
+117	-75	0.50185
+118	-75	0.50705
+119	-75	0.51225
+120	-75	0.49179
+121	-75	0.49138
+122	-75	0.50223
+123	-75	0.51309
+124	-75	0.52394
+125	-75	0.53479
+126	-75	0.54565
+127	-75	0.55416
+128	-75	0.53109
+129	-75	0.49026
+130	-75	0.44944
+131	-75	0.44304
+132	-75	0.46173
+133	-75	0.46808
+134	-75	0.48184
+135	-75	0.49561
+136	-75	0.50757
+137	-75	0.50662
+138	-75	0.50567
+139	-75	0.49936
+140	-75	0.48814
+141	-75	0.47693
+142	-75	0.477
+143	-75	0.47985
+144	-75	0.48617
+145	-75	0.40463
+146	-75	0.29452
+147	-75	0.1844
+148	-75	0.2298
+149	-75	0.29143
+150	-75	0.31076
+151	-75	0.22115
+152	-75	0.10174
+153	-75	0.09505
+154	-75	0.029672
+155	-75	-0.061666
+156	-75	-0.153
+157	-75	-0.10702
+158	-75	-0.21001
+159	-75	-0.30688
+160	-75	-0.43167
+161	-75	-0.85786
+162	-75	-1.2929
+163	-75	-0.8243
+164	-75	-0.20236
+165	-75	0
+166	-75	0
+167	-75	0
+168	-75	0
+169	-75	0
+170	-75	0
+171	-75	0
+172	-75	0
+173	-75	0
+174	-75	0
+175	-75	0
+176	-75	0
+177	-75	0
+178	-75	0
+179	-75	0
+180	-75	0
+181	-75	0
+182	-75	0
+183	-75	0
+184	-75	0
+185	-75	0
+186	-75	0
+187	-75	0
+188	-75	0
+189	-75	0
+190	-75	0
+191	-75	0
+192	-75	0
+193	-75	0
+194	-75	0
+195	-75	0
+196	-75	0
+197	-75	0
+198	-75	0
+199	-75	0
+200	-75	0
+201	-75	0
+202	-75	0
+203	-75	0
+204	-75	0
+205	-75	0
+206	-75	0
+207	-75	0
+208	-75	0
+209	-75	0
+210	-75	0
+211	-75	0
+212	-75	0
+213	-75	-0.23712
+214	-75	0
+215	-75	0
+216	-75	0
+217	-75	0
+218	-75	0
+219	-75	0
+220	-75	-2.79
+221	-75	-4.5921
+222	-75	-1.3852
+223	-75	-2.9181
+224	-75	-6.3516
+225	-75	-7.3415
+226	-75	-7.9073
+227	-75	-7.183
+228	-75	-7.7831
+229	-75	-8.2722
+230	-75	-10.084
+231	-75	-10.216
+232	-75	-10.022
+233	-75	-10.189
+234	-75	-10.813
+235	-75	-11.013
+236	-75	-11.39
+237	-75	-13.308
+238	-75	-15.022
+239	-75	-15.805
+240	-75	-15.497
+241	-75	-14.952
+242	-75	-14.629
+243	-75	-15.408
+244	-75	-16.223
+245	-75	-16.666
+246	-75	-19.001
+247	-75	-21.32
+248	-75	-20.22
+249	-75	-18.752
+250	-75	-17.462
+251	-75	-8.7845
+252	-75	-10.986
+253	-75	-15.922
+254	-75	-12.328
+255	-75	-13.262
+256	-75	-6.4699
+257	-75	-10.534
+258	-75	-9.9937
+259	-75	-16.725
+260	-75	-16.224
+261	-75	-15.796
+262	-75	-15.384
+263	-75	-15.289
+264	-75	-15.716
+265	-75	-16.302
+266	-75	-16.693
+267	-75	-16.297
+268	-75	-15.768
+269	-75	-14.852
+270	-75	-13.808
+271	-75	-12.763
+272	-75	-11.788
+273	-75	-10.726
+274	-75	-9.8443
+275	-75	-9.053
+276	-75	-8.7222
+277	-75	-8.575
+278	-75	-8.2185
+279	-75	-9.3897
+280	-75	-8.0777
+281	-75	-5.5831
+282	-75	-4.8325
+283	-75	-5.8345
+284	-75	-5.502
+285	-75	-5.3238
+286	-75	-4.8308
+287	-75	-4.3266
+288	-75	-4.3664
+289	-75	-4.1749
+290	-75	-3.8547
+291	-75	-2.4477
+292	-75	-1.9937
+293	-75	-2.1966
+294	-75	-2.2637
+295	-75	-1.8377
+296	-75	-1.5244
+297	-75	-1.3567
+298	-75	-1.2208
+299	-75	-0.57185
+300	-75	-0.1582
+301	-75	-0.05885
+302	-75	0
+303	-75	0.11495
+304	-75	0
+305	-75	0
+306	-75	0
+307	-75	0
+308	-75	0
+309	-75	0
+310	-75	0
+311	-75	0
+312	-75	0
+313	-75	0
+314	-75	0
+315	-75	0
+316	-75	0
+317	-75	0
+318	-75	0
+319	-75	0
+320	-75	0
+321	-75	0
+322	-75	0
+323	-75	0
+324	-75	0
+325	-75	0
+326	-75	0
+327	-75	0
+328	-75	0
+329	-75	0
+330	-75	0
+331	-75	0
+332	-75	0
+333	-75	0
+334	-75	0.20777
+335	-75	1.19
+336	-75	1.8611
+337	-75	2.0178
+338	-75	2.1064
+339	-75	2.0794
+340	-75	2.1007
+341	-75	2.3414
+342	-75	2.3355
+343	-75	2.5221
+344	-75	2.7205
+345	-75	2.8945
+346	-75	3.096
+347	-75	3.1703
+348	-75	3.1871
+349	-75	3.1526
+350	-75	3.1077
+351	-75	3.1083
+352	-75	3.1386
+353	-75	3.1688
+354	-75	3.1991
+355	-75	3.2156
+356	-75	3.2273
+357	-75	3.1985
+358	-75	3.1319
+359	-75	3.0802
+360	-75	3.0209
+0	-74.5	3.1513
+1	-74.5	3.092
+2	-74.5	3.0327
+3	-74.5	2.9608
+4	-74.5	2.8791
+5	-74.5	2.8439
+6	-74.5	2.7932
+7	-74.5	2.7234
+8	-74.5	2.6536
+9	-74.5	2.5838
+10	-74.5	2.5348
+11	-74.5	2.5051
+12	-74.5	2.4754
+13	-74.5	2.4507
+14	-74.5	2.4377
+15	-74.5	2.4224
+16	-74.5	2.4064
+17	-74.5	2.3755
+18	-74.5	2.3927
+19	-74.5	2.3974
+20	-74.5	2.3982
+21	-74.5	2.3989
+22	-74.5	2.3997
+23	-74.5	2.4211
+24	-74.5	2.4426
+25	-74.5	2.4642
+26	-74.5	2.4857
+27	-74.5	2.505
+28	-74.5	2.5142
+29	-74.5	2.5116
+30	-74.5	2.5249
+31	-74.5	2.5884
+32	-74.5	2.6519
+33	-74.5	2.6763
+34	-74.5	2.6973
+35	-74.5	2.6733
+36	-74.5	2.6182
+37	-74.5	2.5676
+38	-74.5	2.5123
+39	-74.5	2.449
+40	-74.5	2.3794
+41	-74.5	2.3515
+42	-74.5	2.3012
+43	-74.5	2.2626
+44	-74.5	2.345
+45	-74.5	2.4274
+46	-74.5	2.3712
+47	-74.5	2.2744
+48	-74.5	2.1776
+49	-74.5	1.9814
+50	-74.5	1.83
+51	-74.5	1.7169
+52	-74.5	1.6087
+53	-74.5	1.5809
+54	-74.5	1.5438
+55	-74.5	1.503
+56	-74.5	1.4622
+57	-74.5	1.4214
+58	-74.5	1.3653
+59	-74.5	1.299
+60	-74.5	1.2327
+61	-74.5	1.1663
+62	-74.5	1.1272
+63	-74.5	1.0887
+64	-74.5	1.0509
+65	-74.5	1.0373
+66	-74.5	0.99693
+67	-74.5	0.9168
+68	-74.5	0.84533
+69	-74.5	0.82281
+70	-74.5	0.80029
+71	-74.5	0.77791
+72	-74.5	0.76237
+73	-74.5	0.74684
+74	-74.5	0.72734
+75	-74.5	0.68779
+76	-74.5	0.64823
+77	-74.5	0.60867
+78	-74.5	0.57935
+79	-74.5	0.55854
+80	-74.5	0.53772
+81	-74.5	0.51691
+82	-74.5	0.50391
+83	-74.5	0.48768
+84	-74.5	0.44334
+85	-74.5	0.43938
+86	-74.5	0.40838
+87	-74.5	0.40244
+88	-74.5	0.40004
+89	-74.5	0.39763
+90	-74.5	0.39522
+91	-74.5	0.39282
+92	-74.5	0.39041
+93	-74.5	0.38778
+94	-74.5	0.38472
+95	-74.5	0.38327
+96	-74.5	0.45324
+97	-74.5	0.52661
+98	-74.5	0.5846
+99	-74.5	0.6394
+100	-74.5	0.6942
+101	-74.5	0.68603
+102	-74.5	0.65595
+103	-74.5	0.58293
+104	-74.5	0.47408
+105	-74.5	0.45258
+106	-74.5	0.44635
+107	-74.5	0.44649
+108	-74.5	0.45079
+109	-74.5	0.45509
+110	-74.5	0.4594
+111	-74.5	0.4637
+112	-74.5	0.449
+113	-74.5	0.43446
+114	-74.5	0.45133
+115	-74.5	0.4682
+116	-74.5	0.48507
+117	-74.5	0.50193
+118	-74.5	0.50747
+119	-74.5	0.51267
+120	-74.5	0.51787
+121	-74.5	0.5198
+122	-74.5	0.5274
+123	-74.5	0.52972
+124	-74.5	0.53204
+125	-74.5	0.53436
+126	-74.5	0.53668
+127	-74.5	0.5425
+128	-74.5	0.5547
+129	-74.5	0.51387
+130	-74.5	0.47305
+131	-74.5	0.47816
+132	-74.5	0.49921
+133	-74.5	0.50506
+134	-74.5	0.51605
+135	-74.5	0.52982
+136	-74.5	0.53622
+137	-74.5	0.53527
+138	-74.5	0.52781
+139	-74.5	0.51659
+140	-74.5	0.50538
+141	-74.5	0.49416
+142	-74.5	0.49482
+143	-74.5	0.49767
+144	-74.5	0.46062
+145	-74.5	0.35215
+146	-74.5	0.24204
+147	-74.5	0.13192
+148	-74.5	0.14649
+149	-74.5	0.20812
+150	-74.5	0.25348
+151	-74.5	0.15543
+152	-74.5	0.036016
+153	-74.5	-0.026596
+154	-74.5	-0.10305
+155	-74.5	-0.15969
+156	-74.5	-0.25102
+157	-74.5	-0.25081
+158	-74.5	-0.3005
+159	-74.5	-0.38537
+160	-74.5	-0.46647
+161	-74.5	-0.65486
+162	-74.5	-1.0401
+163	-74.5	-0.55554
+164	-74.5	-0.23428
+165	-74.5	0
+166	-74.5	0
+167	-74.5	0
+168	-74.5	0
+169	-74.5	0
+170	-74.5	0
+171	-74.5	0
+172	-74.5	0
+173	-74.5	0
+174	-74.5	0
+175	-74.5	0
+176	-74.5	0
+177	-74.5	0
+178	-74.5	0
+179	-74.5	0
+180	-74.5	0
+181	-74.5	0
+182	-74.5	0
+183	-74.5	0
+184	-74.5	0
+185	-74.5	0
+186	-74.5	0
+187	-74.5	0
+188	-74.5	0
+189	-74.5	0
+190	-74.5	0
+191	-74.5	0
+192	-74.5	0
+193	-74.5	0
+194	-74.5	0
+195	-74.5	0
+196	-74.5	0
+197	-74.5	0
+198	-74.5	0
+199	-74.5	0
+200	-74.5	0
+201	-74.5	0
+202	-74.5	0
+203	-74.5	0
+204	-74.5	0
+205	-74.5	0
+206	-74.5	0
+207	-74.5	0
+208	-74.5	0
+209	-74.5	0
+210	-74.5	0
+211	-74.5	0
+212	-74.5	0
+213	-74.5	0
+214	-74.5	0
+215	-74.5	0
+216	-74.5	0
+217	-74.5	0
+218	-74.5	0
+219	-74.5	0
+220	-74.5	-0.39285
+221	-74.5	-1.7832
+222	-74.5	-1.041
+223	-74.5	-1.7693
+224	-74.5	-3.0664
+225	-74.5	-3.8489
+226	-74.5	-1.5301
+227	-74.5	-2.9599
+228	-74.5	-3.4634
+229	-74.5	-2.0027
+230	-74.5	-5.3336
+231	-74.5	-5.906
+232	-74.5	-2.6095
+233	-74.5	-10.182
+234	-74.5	-10.604
+235	-74.5	-10.354
+236	-74.5	-10.424
+237	-74.5	-12.341
+238	-74.5	-14.035
+239	-74.5	-14.648
+240	-74.5	-14.703
+241	-74.5	-15.111
+242	-74.5	-14.983
+243	-74.5	-15.253
+244	-74.5	-10.862
+245	-74.5	-10.587
+246	-74.5	-16.404
+247	-74.5	-19.388
+248	-74.5	-14.526
+249	-74.5	-15.627
+250	-74.5	-10.565
+251	-74.5	-4.8787
+252	-74.5	-2.4796
+253	-74.5	-6.8974
+254	-74.5	-3.1953
+255	-74.5	0
+256	-74.5	0
+257	-74.5	-0.059397
+258	-74.5	-11.621
+259	-74.5	-16.27
+260	-74.5	-15.875
+261	-74.5	-15.429
+262	-74.5	-14.996
+263	-74.5	-14.848
+264	-74.5	-15.287
+265	-74.5	-15.754
+266	-74.5	-15.837
+267	-74.5	-15.32
+268	-74.5	-14.73
+269	-74.5	-13.913
+270	-74.5	-12.891
+271	-74.5	-12.065
+272	-74.5	-11.469
+273	-74.5	-10.431
+274	-74.5	-9.4478
+275	-74.5	-9.5599
+276	-74.5	-13.376
+277	-74.5	-11.543
+278	-74.5	-10.91
+279	-74.5	-10.774
+280	-74.5	-9.6767
+281	-74.5	-7.21
+282	-74.5	-6.5453
+283	-74.5	-7.1142
+284	-74.5	-6.5572
+285	-74.5	-6.1237
+286	-74.5	-5.923
+287	-74.5	-5.5288
+288	-74.5	-5.3375
+289	-74.5	-5.1461
+290	-74.5	-4.3334
+291	-74.5	-3.3738
+292	-74.5	-2.8824
+293	-74.5	-2.9941
+294	-74.5	-2.977
+295	-74.5	-2.6536
+296	-74.5	-2.4252
+297	-74.5	-2.2395
+298	-74.5	-1.9482
+299	-74.5	-1.1287
+300	-74.5	-0.094846
+301	-74.5	0
+302	-74.5	0
+303	-74.5	0
+304	-74.5	0
+305	-74.5	0
+306	-74.5	0
+307	-74.5	0
+308	-74.5	0
+309	-74.5	0
+310	-74.5	0
+311	-74.5	0
+312	-74.5	0
+313	-74.5	0
+314	-74.5	0
+315	-74.5	0
+316	-74.5	0
+317	-74.5	0
+318	-74.5	0
+319	-74.5	0
+320	-74.5	0
+321	-74.5	0
+322	-74.5	0
+323	-74.5	0
+324	-74.5	0
+325	-74.5	0
+326	-74.5	0
+327	-74.5	0
+328	-74.5	0
+329	-74.5	0
+330	-74.5	0
+331	-74.5	0
+332	-74.5	0
+333	-74.5	0
+334	-74.5	0
+335	-74.5	1.0727
+336	-74.5	1.824
+337	-74.5	1.9705
+338	-74.5	2.0891
+339	-74.5	2.1244
+340	-74.5	2.1749
+341	-74.5	2.3935
+342	-74.5	2.4052
+343	-74.5	2.5876
+344	-74.5	2.7651
+345	-74.5	2.9408
+346	-74.5	3.1107
+347	-74.5	3.1911
+348	-74.5	3.2204
+349	-74.5	3.2365
+350	-74.5	3.2179
+351	-74.5	3.2296
+352	-74.5	3.2602
+353	-74.5	3.2908
+354	-74.5	3.3215
+355	-74.5	3.3687
+356	-74.5	3.3802
+357	-74.5	3.3299
+358	-74.5	3.2502
+359	-74.5	3.2016
+360	-74.5	3.1513
+0	-74	3.2713
+1	-74	3.2224
+2	-74	3.1631
+3	-74	3.0713
+4	-74	2.9895
+5	-74	2.9544
+6	-74	2.8801
+7	-74	2.8436
+8	-74	2.7761
+9	-74	2.7087
+10	-74	2.6506
+11	-74	2.6209
+12	-74	2.5912
+13	-74	2.5615
+14	-74	2.5376
+15	-74	2.492
+16	-74	2.4424
+17	-74	2.4496
+18	-74	2.4862
+19	-74	2.4923
+20	-74	2.4983
+21	-74	2.5044
+22	-74	2.5113
+23	-74	2.5237
+24	-74	2.5394
+25	-74	2.555
+26	-74	2.5707
+27	-74	2.6044
+28	-74	2.6372
+29	-74	2.6589
+30	-74	2.6563
+31	-74	2.712
+32	-74	2.7755
+33	-74	2.839
+34	-74	2.8698
+35	-74	2.8339
+36	-74	2.8294
+37	-74	2.7741
+38	-74	2.7188
+39	-74	2.6684
+40	-74	2.6413
+41	-74	2.6135
+42	-74	2.5593
+43	-74	2.4655
+44	-74	2.5101
+45	-74	2.5925
+46	-74	2.5
+47	-74	2.4032
+48	-74	2.3064
+49	-74	2.1193
+50	-74	2.0178
+51	-74	1.9034
+52	-74	1.7756
+53	-74	1.6869
+54	-74	1.6461
+55	-74	1.6053
+56	-74	1.5644
+57	-74	1.5236
+58	-74	1.4721
+59	-74	1.4058
+60	-74	1.3395
+61	-74	1.2732
+62	-74	1.2118
+63	-74	1.1733
+64	-74	1.1489
+65	-74	1.1353
+66	-74	1.0834
+67	-74	1.0033
+68	-74	0.93477
+69	-74	0.89764
+70	-74	0.86948
+71	-74	0.84529
+72	-74	0.82277
+73	-74	0.80719
+74	-74	0.77766
+75	-74	0.7381
+76	-74	0.69854
+77	-74	0.65898
+78	-74	0.62675
+79	-74	0.60594
+80	-74	0.58513
+81	-74	0.56431
+82	-74	0.5435
+83	-74	0.51981
+84	-74	0.51585
+85	-74	0.5119
+86	-74	0.47954
+87	-74	0.46089
+88	-74	0.45848
+89	-74	0.45608
+90	-74	0.45367
+91	-74	0.45127
+92	-74	0.44841
+93	-74	0.44525
+94	-74	0.4428
+95	-74	0.44135
+96	-74	0.47525
+97	-74	0.54824
+98	-74	0.60304
+99	-74	0.65784
+100	-74	0.71264
+101	-74	0.71333
+102	-74	0.68325
+103	-74	0.58637
+104	-74	0.47752
+105	-74	0.44023
+106	-74	0.434
+107	-74	0.42777
+108	-74	0.43045
+109	-74	0.43475
+110	-74	0.43905
+111	-74	0.44335
+112	-74	0.33154
+113	-74	0.29233
+114	-74	0.31088
+115	-74	0.32775
+116	-74	0.34461
+117	-74	0.36148
+118	-74	0.37835
+119	-74	0.39522
+120	-74	0.41784
+121	-74	0.50993
+122	-74	0.51225
+123	-74	0.51457
+124	-74	0.51689
+125	-74	0.51921
+126	-74	0.52153
+127	-74	0.54565
+128	-74	0.57831
+129	-74	0.53749
+130	-74	0.49666
+131	-74	0.51329
+132	-74	0.53434
+133	-74	0.54365
+134	-74	0.55026
+135	-74	0.56403
+136	-74	0.56487
+137	-74	0.55626
+138	-74	0.54504
+139	-74	0.53383
+140	-74	0.52261
+141	-74	0.51139
+142	-74	0.51265
+143	-74	0.46812
+144	-74	0.4087
+145	-74	0.30017
+146	-74	0.18956
+147	-74	0.079441
+148	-74	0.063188
+149	-74	0.12482
+150	-74	0.13208
+151	-74	0.067728
+152	-74	-0.029705
+153	-74	-0.14824
+154	-74	-0.23597
+155	-74	-0.29164
+156	-74	-0.34904
+157	-74	-0.39565
+158	-74	-0.45182
+159	-74	-0.49866
+160	-74	-0.5775
+161	-74	-0.64862
+162	-74	-0.71288
+163	-74	-0.61951
+164	-74	-0.58403
+165	-74	-0.32222
+166	-74	-0.2131
+167	-74	-0.17582
+168	-74	-0.053104
+169	-74	0
+170	-74	-0.0040619
+171	-74	0
+172	-74	0
+173	-74	0
+174	-74	0
+175	-74	0
+176	-74	0
+177	-74	0
+178	-74	0
+179	-74	0
+180	-74	0
+181	-74	0
+182	-74	0
+183	-74	0
+184	-74	0
+185	-74	0
+186	-74	0
+187	-74	0
+188	-74	0
+189	-74	0
+190	-74	0
+191	-74	0
+192	-74	0
+193	-74	0
+194	-74	0
+195	-74	0
+196	-74	0
+197	-74	0
+198	-74	0
+199	-74	0
+200	-74	0
+201	-74	0
+202	-74	0
+203	-74	0
+204	-74	0
+205	-74	0
+206	-74	0
+207	-74	0
+208	-74	0
+209	-74	0
+210	-74	0
+211	-74	0
+212	-74	0
+213	-74	0
+214	-74	0
+215	-74	0
+216	-74	0
+217	-74	0
+218	-74	0
+219	-74	0
+220	-74	0
+221	-74	0
+222	-74	0
+223	-74	0
+224	-74	0
+225	-74	0
+226	-74	0
+227	-74	0
+228	-74	0
+229	-74	0
+230	-74	0
+231	-74	0
+232	-74	-2.9314
+233	-74	-9.4457
+234	-74	-8.6669
+235	-74	-7.2148
+236	-74	-9.7916
+237	-74	-10.118
+238	-74	-10.595
+239	-74	-12.219
+240	-74	-9.5957
+241	-74	-9.7808
+242	-74	-10.32
+243	-74	-8.3775
+244	-74	-3.0463
+245	-74	-3.174
+246	-74	-10.235
+247	-74	-9.6897
+248	-74	-2.4824
+249	-74	0
+250	-74	-0.30732
+251	-74	-0.71633
+252	-74	0
+253	-74	0
+254	-74	0
+255	-74	0
+256	-74	0
+257	-74	-5.8561
+258	-74	-17.732
+259	-74	-15.846
+260	-74	-14.645
+261	-74	-14.499
+262	-74	-13.973
+263	-74	-14.007
+264	-74	-14.697
+265	-74	-14.756
+266	-74	-14.772
+267	-74	-14.088
+268	-74	-13.533
+269	-74	-12.772
+270	-74	-12.024
+271	-74	-11.296
+272	-74	-10.62
+273	-74	-9.8489
+274	-74	-8.9785
+275	-74	-11.024
+276	-74	-9.8552
+277	-74	-11.315
+278	-74	-12.424
+279	-74	-10.872
+280	-74	-9.7547
+281	-74	-9.1599
+282	-74	-8.399
+283	-74	-7.8399
+284	-74	-7.1428
+285	-74	-6.9452
+286	-74	-6.756
+287	-74	-6.3339
+288	-74	-6.1353
+289	-74	-5.9619
+290	-74	-5.2252
+291	-74	-4.5899
+292	-74	-4.1199
+293	-74	-3.8981
+294	-74	-3.7314
+295	-74	-3.5506
+296	-74	-3.3225
+297	-74	-2.9278
+298	-74	-2.4079
+299	-74	-1.6814
+300	-74	-0.57697
+301	-74	0
+302	-74	0
+303	-74	0
+304	-74	0
+305	-74	0
+306	-74	0
+307	-74	0
+308	-74	0
+309	-74	0
+310	-74	0
+311	-74	0
+312	-74	0
+313	-74	0
+314	-74	0
+315	-74	0
+316	-74	0
+317	-74	0
+318	-74	0
+319	-74	0
+320	-74	0
+321	-74	0
+322	-74	0
+323	-74	0
+324	-74	0
+325	-74	0
+326	-74	0
+327	-74	0
+328	-74	0
+329	-74	0
+330	-74	0
+331	-74	0
+332	-74	0
+333	-74	0
+334	-74	0
+335	-74	0.47044
+336	-74	1.1463
+337	-74	1.2295
+338	-74	1.7003
+339	-74	1.0913
+340	-74	2.2465
+341	-74	2.461
+342	-74	2.4884
+343	-74	2.6392
+344	-74	2.7677
+345	-74	2.8922
+346	-74	3.0859
+347	-74	3.2164
+348	-74	3.2475
+349	-74	3.2949
+350	-74	3.2238
+351	-74	3.2882
+352	-74	3.3188
+353	-74	3.3494
+354	-74	3.37
+355	-74	3.4577
+356	-74	3.5331
+357	-74	3.4612
+358	-74	3.3733
+359	-74	3.3198
+360	-74	3.2713
+0	-73.5	3.3895
+1	-73.5	3.341
+2	-73.5	3.2877
+3	-73.5	3.1819
+4	-73.5	3.1
+5	-73.5	2.9923
+6	-73.5	2.9297
+7	-73.5	2.9189
+8	-73.5	2.8909
+9	-73.5	2.8234
+10	-73.5	2.7476
+11	-73.5	2.713
+12	-73.5	2.6836
+13	-73.5	2.6542
+14	-73.5	2.5569
+15	-73.5	2.521
+16	-73.5	2.4714
+17	-73.5	2.5238
+18	-73.5	2.5797
+19	-73.5	2.5857
+20	-73.5	2.5918
+21	-73.5	2.6002
+22	-73.5	2.6093
+23	-73.5	2.6051
+24	-73.5	2.6207
+25	-73.5	2.6363
+26	-73.5	2.6614
+27	-73.5	2.7093
+28	-73.5	2.7453
+29	-73.5	2.7683
+30	-73.5	2.7913
+31	-73.5	2.8355
+32	-73.5	2.899
+33	-73.5	2.9625
+34	-73.5	3.026
+35	-73.5	3.0478
+36	-73.5	3.0359
+37	-73.5	2.9806
+38	-73.5	2.9332
+39	-73.5	2.9182
+40	-73.5	2.8987
+41	-73.5	2.8754
+42	-73.5	2.8174
+43	-73.5	2.7235
+44	-73.5	2.6752
+45	-73.5	2.7256
+46	-73.5	2.6288
+47	-73.5	2.532
+48	-73.5	2.4351
+49	-73.5	2.2793
+50	-73.5	2.2057
+51	-73.5	2.0899
+52	-73.5	1.9622
+53	-73.5	1.8515
+54	-73.5	1.7734
+55	-73.5	1.7201
+56	-73.5	1.6669
+57	-73.5	1.6259
+58	-73.5	1.579
+59	-73.5	1.5126
+60	-73.5	1.4463
+61	-73.5	1.38
+62	-73.5	1.3136
+63	-73.5	1.2604
+64	-73.5	1.2468
+65	-73.5	1.2332
+66	-73.5	1.17
+67	-73.5	1.0951
+68	-73.5	1.0305
+69	-73.5	0.98594
+70	-73.5	0.95268
+71	-73.5	0.92452
+72	-73.5	0.89635
+73	-73.5	0.86815
+74	-73.5	0.82797
+75	-73.5	0.78841
+76	-73.5	0.74886
+77	-73.5	0.7093
+78	-73.5	0.67415
+79	-73.5	0.6535
+80	-73.5	0.64058
+81	-73.5	0.62765
+82	-73.5	0.615
+83	-73.5	0.59659
+84	-73.5	0.58837
+85	-73.5	0.58441
+86	-73.5	0.55071
+87	-73.5	0.51934
+88	-73.5	0.51693
+89	-73.5	0.51452
+90	-73.5	0.51212
+91	-73.5	0.50905
+92	-73.5	0.50589
+93	-73.5	0.50273
+94	-73.5	0.50088
+95	-73.5	0.49943
+96	-73.5	0.49798
+97	-73.5	0.56669
+98	-73.5	0.62149
+99	-73.5	0.67628
+100	-73.5	0.73108
+101	-73.5	0.74063
+102	-73.5	0.69867
+103	-73.5	0.58981
+104	-73.5	0.48096
+105	-73.5	0.42789
+106	-73.5	0.42166
+107	-73.5	0.41543
+108	-73.5	0.4101
+109	-73.5	0.4144
+110	-73.5	0.4187
+111	-73.5	0.35365
+112	-73.5	0.21408
+113	-73.5	0.1446
+114	-73.5	0.17043
+115	-73.5	0.18729
+116	-73.5	0.20416
+117	-73.5	0.22103
+118	-73.5	0.2379
+119	-73.5	0.25477
+120	-73.5	0.30471
+121	-73.5	0.41011
+122	-73.5	0.49709
+123	-73.5	0.49941
+124	-73.5	0.50173
+125	-73.5	0.50405
+126	-73.5	0.50637
+127	-73.5	0.54881
+128	-73.5	0.60192
+129	-73.5	0.5611
+130	-73.5	0.52736
+131	-73.5	0.54841
+132	-73.5	0.56946
+133	-73.5	0.58223
+134	-73.5	0.58697
+135	-73.5	0.59447
+136	-73.5	0.58471
+137	-73.5	0.57349
+138	-73.5	0.56228
+139	-73.5	0.55106
+140	-73.5	0.53984
+141	-73.5	0.52863
+142	-73.5	0.47561
+143	-73.5	0.41619
+144	-73.5	0.35678
+145	-73.5	0.24896
+146	-73.5	0.13725
+147	-73.5	0.026961
+148	-73.5	-0.020119
+149	-73.5	0.041511
+150	-73.5	0.010668
+151	-73.5	-0.04278
+152	-73.5	-0.12213
+153	-73.5	-0.26989
+154	-73.5	-0.36889
+155	-73.5	-0.42456
+156	-73.5	-0.48388
+157	-73.5	-0.54945
+158	-73.5	-0.60317
+159	-73.5	-0.63987
+160	-73.5	-0.69689
+161	-73.5	-0.76196
+162	-73.5	-0.79973
+163	-73.5	-0.73092
+164	-73.5	-0.68685
+165	-73.5	-0.61031
+166	-73.5	-0.53903
+167	-73.5	-0.3101
+168	-73.5	-0.49373
+169	-73.5	-0.23582
+170	-73.5	-0.1954
+171	-73.5	0
+172	-73.5	0
+173	-73.5	0
+174	-73.5	0
+175	-73.5	0
+176	-73.5	0
+177	-73.5	0
+178	-73.5	0
+179	-73.5	0
+180	-73.5	0
+181	-73.5	0
+182	-73.5	0
+183	-73.5	0
+184	-73.5	0
+185	-73.5	0
+186	-73.5	0
+187	-73.5	0
+188	-73.5	0
+189	-73.5	0
+190	-73.5	0
+191	-73.5	0
+192	-73.5	0
+193	-73.5	0
+194	-73.5	0
+195	-73.5	0
+196	-73.5	0
+197	-73.5	0
+198	-73.5	0
+199	-73.5	0
+200	-73.5	0
+201	-73.5	0
+202	-73.5	0
+203	-73.5	0
+204	-73.5	0
+205	-73.5	0
+206	-73.5	0
+207	-73.5	0
+208	-73.5	0
+209	-73.5	0
+210	-73.5	0
+211	-73.5	0
+212	-73.5	0
+213	-73.5	0
+214	-73.5	0
+215	-73.5	0
+216	-73.5	0
+217	-73.5	0
+218	-73.5	0
+219	-73.5	0
+220	-73.5	0
+221	-73.5	0
+222	-73.5	0
+223	-73.5	0
+224	-73.5	0
+225	-73.5	0
+226	-73.5	0
+227	-73.5	0
+228	-73.5	0
+229	-73.5	0
+230	-73.5	0
+231	-73.5	-0.4782
+232	-73.5	-5.4581
+233	-73.5	-8.0209
+234	-73.5	-3.4713
+235	-73.5	-2.1018
+236	-73.5	-0.97276
+237	-73.5	-3.6548
+238	-73.5	-4.3506
+239	-73.5	-1.8266
+240	-73.5	-0.35546
+241	-73.5	-2.4623
+242	-73.5	-2.1916
+243	-73.5	-0.74827
+244	-73.5	0
+245	-73.5	0
+246	-73.5	-5.1109
+247	-73.5	-0.12162
+248	-73.5	0
+249	-73.5	0
+250	-73.5	0
+251	-73.5	0
+252	-73.5	0
+253	-73.5	0
+254	-73.5	0
+255	-73.5	0
+256	-73.5	0
+257	-73.5	-4.5572
+258	-73.5	-16.162
+259	-73.5	-14.206
+260	-73.5	-12.578
+261	-73.5	-12.538
+262	-73.5	-12.907
+263	-73.5	-13.171
+264	-73.5	-12.85
+265	-73.5	-12.987
+266	-73.5	-12.751
+267	-73.5	-12.258
+268	-73.5	-11.911
+269	-73.5	-11.542
+270	-73.5	-10.932
+271	-73.5	-10.23
+272	-73.5	-9.5211
+273	-73.5	-8.824
+274	-73.5	-4.9706
+275	-73.5	-6.16
+276	-73.5	-2.6155
+277	-73.5	-0.6606
+278	-73.5	-3.0844
+279	-73.5	-11.256
+280	-73.5	-10.024
+281	-73.5	-9.1201
+282	-73.5	-8.5022
+283	-73.5	-8.2835
+284	-73.5	-6.1939
+285	-73.5	-7.3764
+286	-73.5	-7.3146
+287	-73.5	-7.1364
+288	-73.5	-6.921
+289	-73.5	-6.6963
+290	-73.5	-6.1745
+291	-73.5	-5.744
+292	-73.5	-5.281
+293	-73.5	-4.7936
+294	-73.5	-4.5148
+295	-73.5	-4.3829
+296	-73.5	-4.2146
+297	-73.5	-3.6141
+298	-73.5	-2.8443
+299	-73.5	-2.1682
+300	-73.5	-0.68933
+301	-73.5	0
+302	-73.5	0
+303	-73.5	0
+304	-73.5	0
+305	-73.5	0
+306	-73.5	0
+307	-73.5	0
+308	-73.5	0
+309	-73.5	0
+310	-73.5	0
+311	-73.5	0
+312	-73.5	0
+313	-73.5	0
+314	-73.5	0
+315	-73.5	0
+316	-73.5	0
+317	-73.5	0
+318	-73.5	0
+319	-73.5	0
+320	-73.5	0
+321	-73.5	0
+322	-73.5	0
+323	-73.5	0
+324	-73.5	0
+325	-73.5	0
+326	-73.5	0
+327	-73.5	0
+328	-73.5	0
+329	-73.5	0
+330	-73.5	0
+331	-73.5	0
+332	-73.5	0
+333	-73.5	0
+334	-73.5	0
+335	-73.5	0
+336	-73.5	0
+337	-73.5	0.21364
+338	-73.5	0
+339	-73.5	0.65857
+340	-73.5	2.1992
+341	-73.5	2.497
+342	-73.5	2.5438
+343	-73.5	2.6966
+344	-73.5	2.7917
+345	-73.5	2.8644
+346	-73.5	3.0569
+347	-73.5	3.2221
+348	-73.5	3.2746
+349	-73.5	3.2947
+350	-73.5	3.2674
+351	-73.5	3.3412
+352	-73.5	3.3774
+353	-73.5	3.3986
+354	-73.5	3.4042
+355	-73.5	3.4894
+356	-73.5	3.623
+357	-73.5	3.5913
+358	-73.5	3.5046
+359	-73.5	3.4381
+360	-73.5	3.3895
+0	-73	3.4151
+1	-73	3.3426
+2	-73	3.2901
+3	-73	3.2744
+4	-73	3.1875
+5	-73	3.0109
+6	-73	2.9824
+7	-73	2.9678
+8	-73	2.9577
+9	-73	2.9382
+10	-73	2.8569
+11	-73	2.8015
+12	-73	2.7721
+13	-73	2.6532
+14	-73	2.5619
+15	-73	2.5405
+16	-73	2.5371
+17	-73	2.5979
+18	-73	2.6587
+19	-73	2.6792
+20	-73	2.6885
+21	-73	2.701
+22	-73	2.7074
+23	-73	2.6994
+24	-73	2.702
+25	-73	2.7183
+26	-73	2.7663
+27	-73	2.8142
+28	-73	2.8534
+29	-73	2.8764
+30	-73	2.8471
+31	-73	3.0071
+32	-73	3.0694
+33	-73	3.1317
+34	-73	3.1939
+35	-73	3.2616
+36	-73	3.2424
+37	-73	3.1979
+38	-73	3.1833
+39	-73	3.168
+40	-73	3.1485
+41	-73	3.1287
+42	-73	3.0734
+43	-73	2.9816
+44	-73	2.8878
+45	-73	2.8544
+46	-73	2.7575
+47	-73	2.6607
+48	-73	2.5639
+49	-73	2.4672
+50	-73	2.3936
+51	-73	2.2765
+52	-73	2.1578
+53	-73	2.0519
+54	-73	1.9411
+55	-73	1.8705
+56	-73	1.8173
+57	-73	1.7641
+58	-73	1.7041
+59	-73	1.6395
+60	-73	1.575
+61	-73	1.5104
+62	-73	1.4459
+63	-73	1.3736
+64	-73	1.3447
+65	-73	1.3311
+66	-73	1.2565
+67	-73	1.1919
+68	-73	1.1273
+69	-73	1.0815
+70	-73	1.0371
+71	-73	1.0077
+72	-73	0.97956
+73	-73	0.94728
+74	-73	0.89911
+75	-73	0.85842
+76	-73	0.81772
+77	-73	0.77703
+78	-73	0.75374
+79	-73	0.74125
+80	-73	0.72832
+81	-73	0.71623
+82	-73	0.70655
+83	-73	0.68355
+84	-73	0.66088
+85	-73	0.65692
+86	-73	0.62187
+87	-73	0.58112
+88	-73	0.57538
+89	-73	0.57284
+90	-73	0.56968
+91	-73	0.56652
+92	-73	0.56336
+93	-73	0.5604
+94	-73	0.55895
+95	-73	0.5575
+96	-73	0.55606
+97	-73	0.58513
+98	-73	0.63993
+99	-73	0.69473
+100	-73	0.74953
+101	-73	0.76793
+102	-73	0.70211
+103	-73	0.59325
+104	-73	0.4844
+105	-73	0.41554
+106	-73	0.40931
+107	-73	0.40308
+108	-73	0.39685
+109	-73	0.39405
+110	-73	0.37575
+111	-73	0.23618
+112	-73	0.096616
+113	-73	-0.0031407
+114	-73	0.023691
+115	-73	0.046842
+116	-73	0.06371
+117	-73	0.080578
+118	-73	0.097446
+119	-73	0.11859
+120	-73	0.19158
+121	-73	0.27628
+122	-73	0.44083
+123	-73	0.48426
+124	-73	0.48658
+125	-73	0.4889
+126	-73	0.49488
+127	-73	0.55196
+128	-73	0.60905
+129	-73	0.58471
+130	-73	0.56248
+131	-73	0.58353
+132	-73	0.60459
+133	-73	0.62082
+134	-73	0.62556
+135	-73	0.60384
+136	-73	0.59119
+137	-73	0.57853
+138	-73	0.56588
+139	-73	0.55323
+140	-73	0.54057
+141	-73	0.49317
+142	-73	0.42319
+143	-73	0.36427
+144	-73	0.30486
+145	-73	0.19775
+146	-73	0.086037
+147	-73	-0.02552
+148	-73	-0.10343
+149	-73	-0.075132
+150	-73	-0.11074
+151	-73	-0.15329
+152	-73	-0.23348
+153	-73	-0.39153
+154	-73	-0.50181
+155	-73	-0.55748
+156	-73	-0.63717
+157	-73	-0.70299
+158	-73	-0.74759
+159	-73	-0.79122
+160	-73	-0.82792
+161	-73	-0.87588
+162	-73	-0.88711
+163	-73	-0.82217
+164	-73	-0.7521
+165	-73	-0.67877
+166	-73	-0.65322
+167	-73	-0.51788
+168	-73	-0.56138
+169	-73	-0.51403
+170	-73	-0.25368
+171	-73	0
+172	-73	0
+173	-73	0
+174	-73	0
+175	-73	0
+176	-73	0
+177	-73	0
+178	-73	0
+179	-73	0
+180	-73	0
+181	-73	0
+182	-73	0
+183	-73	0
+184	-73	0
+185	-73	0
+186	-73	0
+187	-73	0
+188	-73	0
+189	-73	0
+190	-73	0
+191	-73	0
+192	-73	0
+193	-73	0
+194	-73	0
+195	-73	0
+196	-73	0
+197	-73	0
+198	-73	0
+199	-73	0
+200	-73	0
+201	-73	0
+202	-73	0
+203	-73	0
+204	-73	0
+205	-73	0
+206	-73	0
+207	-73	0
+208	-73	0
+209	-73	0
+210	-73	0
+211	-73	0
+212	-73	0
+213	-73	0
+214	-73	0
+215	-73	0
+216	-73	0
+217	-73	0
+218	-73	0
+219	-73	0
+220	-73	0
+221	-73	0
+222	-73	0
+223	-73	0
+224	-73	0
+225	-73	0
+226	-73	0
+227	-73	0
+228	-73	0
+229	-73	0
+230	-73	0
+231	-73	-0.4583
+232	-73	-4.9228
+233	-73	-4.7265
+234	-73	0
+235	-73	0
+236	-73	0
+237	-73	0
+238	-73	0
+239	-73	0
+240	-73	0
+241	-73	0
+242	-73	0
+243	-73	0
+244	-73	0
+245	-73	0
+246	-73	0
+247	-73	0
+248	-73	0
+249	-73	0
+250	-73	0
+251	-73	0
+252	-73	0
+253	-73	0
+254	-73	0
+255	-73	0
+256	-73	0
+257	-73	-5.4482
+258	-73	-13.547
+259	-73	-11.769
+260	-73	-10.984
+261	-73	-10.918
+262	-73	-11.279
+263	-73	-11.175
+264	-73	-11.003
+265	-73	-10.878
+266	-73	-9.1961
+267	-73	-10.281
+268	-73	-10.006
+269	-73	-9.4775
+270	-73	-8.2122
+271	-73	-6.8916
+272	-73	-4.2305
+273	-73	-4.4892
+274	-73	-1.2334
+275	-73	-2.5643
+276	-73	0
+277	-73	0
+278	-73	0
+279	-73	-4.1844
+280	-73	-5.7628
+281	-73	-7.098
+282	-73	-7.9958
+283	-73	-5.2951
+284	-73	-3.9835
+285	-73	-5.8762
+286	-73	-4.7253
+287	-73	-7.7222
+288	-73	-7.6232
+289	-73	-7.3824
+290	-73	-6.8307
+291	-73	-6.3388
+292	-73	-6.0961
+293	-73	-5.6975
+294	-73	-5.3413
+295	-73	-5.2097
+296	-73	-4.9883
+297	-73	-4.3537
+298	-73	-3.5335
+299	-73	-2.696
+300	-73	-0.55722
+301	-73	0
+302	-73	0
+303	-73	0
+304	-73	0
+305	-73	0
+306	-73	0
+307	-73	0
+308	-73	0
+309	-73	0
+310	-73	0
+311	-73	0
+312	-73	0
+313	-73	0
+314	-73	0
+315	-73	0
+316	-73	0
+317	-73	0
+318	-73	0
+319	-73	0
+320	-73	0
+321	-73	0
+322	-73	0
+323	-73	0
+324	-73	0
+325	-73	0
+326	-73	0
+327	-73	0
+328	-73	0
+329	-73	0
+330	-73	0
+331	-73	0
+332	-73	0
+333	-73	0
+334	-73	0
+335	-73	0
+336	-73	0
+337	-73	0
+338	-73	0
+339	-73	0
+340	-73	1.2413
+341	-73	2.0136
+342	-73	2.0975
+343	-73	2.6276
+344	-73	2.7155
+345	-73	2.8144
+346	-73	3.0055
+347	-73	3.1671
+348	-73	3.2659
+349	-73	3.2971
+350	-73	3.2876
+351	-73	3.3668
+352	-73	3.4043
+353	-73	3.4307
+354	-73	3.4383
+355	-73	3.5211
+356	-73	3.598
+357	-73	3.5942
+358	-73	3.5507
+359	-73	3.4876
+360	-73	3.4151
+0	-72.5	3.3974
+1	-72.5	3.3249
+2	-72.5	3.2957
+3	-72.5	3.2837
+4	-72.5	3.2061
+5	-72.5	3.0616
+6	-72.5	3.035
+7	-72.5	2.9997
+8	-72.5	2.9824
+9	-72.5	2.9324
+10	-72.5	2.9203
+11	-72.5	2.89
+12	-72.5	2.7806
+13	-72.5	2.6503
+14	-72.5	2.567
+15	-72.5	2.5405
+16	-72.5	2.56
+17	-72.5	2.6359
+18	-72.5	2.7118
+19	-72.5	2.7331
+20	-72.5	2.7025
+21	-72.5	2.6718
+22	-72.5	2.7129
+23	-72.5	2.7685
+24	-72.5	2.7834
+25	-72.5	2.8225
+26	-72.5	2.8698
+27	-72.5	2.9171
+28	-72.5	2.9442
+29	-72.5	2.9068
+30	-72.5	3.0068
+31	-72.5	3.1765
+32	-72.5	3.2417
+33	-72.5	3.304
+34	-72.5	3.373
+35	-72.5	3.4468
+36	-72.5	3.4625
+37	-72.5	3.448
+38	-72.5	3.4334
+39	-72.5	3.4178
+40	-72.5	3.3942
+41	-72.5	3.3381
+42	-72.5	3.2783
+43	-72.5	3.2301
+44	-72.5	3.139
+45	-72.5	3.0442
+46	-72.5	2.954
+47	-72.5	2.8638
+48	-72.5	2.7583
+49	-72.5	2.6551
+50	-72.5	2.5815
+51	-72.5	2.463
+52	-72.5	2.3576
+53	-72.5	2.2523
+54	-72.5	2.1415
+55	-72.5	2.0306
+56	-72.5	1.9677
+57	-72.5	1.9145
+58	-72.5	1.8474
+59	-72.5	1.7803
+60	-72.5	1.7158
+61	-72.5	1.6513
+62	-72.5	1.5781
+63	-72.5	1.5019
+64	-72.5	1.4473
+65	-72.5	1.4231
+66	-72.5	1.3532
+67	-72.5	1.2886
+68	-72.5	1.224
+69	-72.5	1.177
+70	-72.5	1.1327
+71	-72.5	1.0909
+72	-72.5	1.0613
+73	-72.5	1.0264
+74	-72.5	0.98019
+75	-72.5	0.93019
+76	-72.5	0.8895
+77	-72.5	0.8488
+78	-72.5	0.83901
+79	-72.5	0.82899
+80	-72.5	0.81747
+81	-72.5	0.80778
+82	-72.5	0.79602
+83	-72.5	0.77051
+84	-72.5	0.73545
+85	-72.5	0.72944
+86	-72.5	0.69303
+87	-72.5	0.65228
+88	-72.5	0.63348
+89	-72.5	0.63032
+90	-72.5	0.62716
+91	-72.5	0.624
+92	-72.5	0.62083
+93	-72.5	0.61848
+94	-72.5	0.61703
+95	-72.5	0.61848
+96	-72.5	0.62434
+97	-72.5	0.64191
+98	-72.5	0.66401
+99	-72.5	0.71317
+100	-72.5	0.76797
+101	-72.5	0.79523
+102	-72.5	0.70555
+103	-72.5	0.59669
+104	-72.5	0.48784
+105	-72.5	0.40319
+106	-72.5	0.39696
+107	-72.5	0.39073
+108	-72.5	0.3845
+109	-72.5	0.37744
+110	-72.5	0.25829
+111	-72.5	0.11872
+112	-72.5	-0.020846
+113	-72.5	-0.15088
+114	-72.5	-0.12405
+115	-72.5	-0.097214
+116	-72.5	-0.076742
+117	-72.5	-0.059874
+118	-72.5	-0.043006
+119	-72.5	0.0054644
+120	-72.5	0.078459
+121	-72.5	0.15145
+122	-72.5	0.30701
+123	-72.5	0.4691
+124	-72.5	0.47142
+125	-72.5	0.47374
+126	-72.5	0.49804
+127	-72.5	0.55512
+128	-72.5	0.61221
+129	-72.5	0.60832
+130	-72.5	0.59761
+131	-72.5	0.61866
+132	-72.5	0.63971
+133	-72.5	0.65941
+134	-72.5	0.65918
+135	-72.5	0.59791
+136	-72.5	0.58955
+137	-72.5	0.57689
+138	-72.5	0.56424
+139	-72.5	0.55159
+140	-72.5	0.51983
+141	-72.5	0.4502
+142	-72.5	0.36907
+143	-72.5	0.31138
+144	-72.5	0.25294
+145	-72.5	0.14653
+146	-72.5	0.034824
+147	-72.5	-0.076887
+148	-72.5	-0.18673
+149	-72.5	-0.19654
+150	-72.5	-0.2418
+151	-72.5	-0.27177
+152	-72.5	-0.34484
+153	-72.5	-0.47141
+154	-72.5	-0.63473
+155	-72.5	-0.70837
+156	-72.5	-0.79047
+157	-72.5	-0.83271
+158	-72.5	-0.8201
+159	-72.5	-0.85003
+160	-72.5	-0.89509
+161	-72.5	-0.99236
+162	-72.5	-0.96234
+163	-72.5	-0.89862
+164	-72.5	-0.81188
+165	-72.5	-0.74784
+166	-72.5	-0.67719
+167	-72.5	-0.56561
+168	-72.5	-0.58416
+169	-72.5	-0.54159
+170	-72.5	-0.15807
+171	-72.5	0
+172	-72.5	0
+173	-72.5	0
+174	-72.5	0
+175	-72.5	0
+176	-72.5	0
+177	-72.5	0
+178	-72.5	0
+179	-72.5	0
+180	-72.5	0
+181	-72.5	0
+182	-72.5	0
+183	-72.5	0
+184	-72.5	0
+185	-72.5	0
+186	-72.5	0
+187	-72.5	0
+188	-72.5	0
+189	-72.5	0
+190	-72.5	0
+191	-72.5	0
+192	-72.5	0
+193	-72.5	0
+194	-72.5	0
+195	-72.5	0
+196	-72.5	0
+197	-72.5	0
+198	-72.5	0
+199	-72.5	0
+200	-72.5	0
+201	-72.5	0
+202	-72.5	0
+203	-72.5	0
+204	-72.5	0
+205	-72.5	0
+206	-72.5	0
+207	-72.5	0
+208	-72.5	0
+209	-72.5	0
+210	-72.5	0
+211	-72.5	0
+212	-72.5	0
+213	-72.5	0
+214	-72.5	0
+215	-72.5	0
+216	-72.5	0
+217	-72.5	0
+218	-72.5	0
+219	-72.5	0
+220	-72.5	0
+221	-72.5	0
+222	-72.5	0
+223	-72.5	0
+224	-72.5	0
+225	-72.5	0
+226	-72.5	0
+227	-72.5	0
+228	-72.5	0
+229	-72.5	0
+230	-72.5	0
+231	-72.5	-0.43839
+232	-72.5	-0.57695
+233	-72.5	-0.38066
+234	-72.5	0
+235	-72.5	0
+236	-72.5	0
+237	-72.5	0
+238	-72.5	0
+239	-72.5	0
+240	-72.5	0
+241	-72.5	0
+242	-72.5	0
+243	-72.5	0
+244	-72.5	0
+245	-72.5	0
+246	-72.5	0
+247	-72.5	0
+248	-72.5	0
+249	-72.5	0
+250	-72.5	0
+251	-72.5	0
+252	-72.5	0
+253	-72.5	0
+254	-72.5	0
+255	-72.5	0
+256	-72.5	0
+257	-72.5	-9.234
+258	-72.5	-10.943
+259	-72.5	-9.7079
+260	-72.5	-9.6304
+261	-72.5	-9.4884
+262	-72.5	-9.3055
+263	-72.5	-9.0729
+264	-72.5	-7.8565
+265	-72.5	-8.613
+266	-72.5	-3.6234
+267	-72.5	-5.9371
+268	-72.5	-6.1422
+269	-72.5	-3.2469
+270	-72.5	-1.9246
+271	-72.5	-0.69885
+272	-72.5	0
+273	-72.5	0
+274	-72.5	0
+275	-72.5	0
+276	-72.5	0
+277	-72.5	0
+278	-72.5	0
+279	-72.5	0
+280	-72.5	0
+281	-72.5	-3.027
+282	-72.5	-5.8867
+283	-72.5	-0.74742
+284	-72.5	0
+285	-72.5	-1.4229
+286	-72.5	-1.1145
+287	-72.5	-5.8137
+288	-72.5	-8.1782
+289	-72.5	-7.9999
+290	-72.5	-7.5126
+291	-72.5	-6.9605
+292	-72.5	-6.722
+293	-72.5	-6.5316
+294	-72.5	-6.2147
+295	-72.5	-6.0267
+296	-72.5	-5.7263
+297	-72.5	-4.9669
+298	-72.5	-4.1276
+299	-72.5	-3.2957
+300	-72.5	-1.1567
+301	-72.5	0
+302	-72.5	0
+303	-72.5	0
+304	-72.5	0
+305	-72.5	0
+306	-72.5	0
+307	-72.5	0
+308	-72.5	0
+309	-72.5	0
+310	-72.5	0
+311	-72.5	0
+312	-72.5	0
+313	-72.5	0
+314	-72.5	0
+315	-72.5	0
+316	-72.5	0
+317	-72.5	0
+318	-72.5	0
+319	-72.5	0
+320	-72.5	0
+321	-72.5	0
+322	-72.5	0
+323	-72.5	0
+324	-72.5	0
+325	-72.5	0
+326	-72.5	0
+327	-72.5	0
+328	-72.5	0
+329	-72.5	0
+330	-72.5	0
+331	-72.5	0
+332	-72.5	0
+333	-72.5	0
+334	-72.5	0
+335	-72.5	0
+336	-72.5	0
+337	-72.5	0
+338	-72.5	0
+339	-72.5	0
+340	-72.5	0.29745
+341	-72.5	0.66978
+342	-72.5	0.76254
+343	-72.5	1.8422
+344	-72.5	1.9188
+345	-72.5	2.7777
+346	-72.5	2.9257
+347	-72.5	3.0706
+348	-72.5	3.2258
+349	-72.5	3.2995
+350	-72.5	3.3246
+351	-72.5	3.3336
+352	-72.5	3.3175
+353	-72.5	3.3701
+354	-72.5	3.4524
+355	-72.5	3.5159
+356	-72.5	3.5731
+357	-72.5	3.575
+358	-72.5	3.5536
+359	-72.5	3.4512
+360	-72.5	3.3974
+0	-72	3.3653
+1	-72	3.3072
+2	-72	3.3007
+3	-72	3.2413
+4	-72	3.1787
+5	-72	3.1145
+6	-72	3.0915
+7	-72	3.0129
+8	-72	2.9852
+9	-72	2.9085
+10	-72	2.8822
+11	-72	2.8638
+12	-72	2.7483
+13	-72	2.6239
+14	-72	2.5617
+15	-72	2.5341
+16	-72	2.5668
+17	-72	2.6315
+18	-72	2.6985
+19	-72	2.7015
+20	-72	2.6523
+21	-72	2.6205
+22	-72	2.6899
+23	-72	2.8008
+24	-72	2.8457
+25	-72	2.8812
+26	-72	2.917
+27	-72	2.9643
+28	-72	2.9712
+29	-72	2.9316
+30	-72	3.1664
+31	-72	3.3459
+32	-72	3.4135
+33	-72	3.4763
+34	-72	3.5549
+35	-72	3.6184
+36	-72	3.6541
+37	-72	3.6399
+38	-72	3.6315
+39	-72	3.6534
+40	-72	3.6307
+41	-72	3.5243
+42	-72	3.4638
+43	-72	3.4529
+44	-72	3.3866
+45	-72	3.284
+46	-72	3.1938
+47	-72	3.0972
+48	-72	2.9509
+49	-72	2.8545
+50	-72	2.7693
+51	-72	2.6626
+52	-72	2.5574
+53	-72	2.4522
+54	-72	2.3419
+55	-72	2.231
+56	-72	2.1201
+57	-72	2.0627
+58	-72	1.9907
+59	-72	1.9211
+60	-72	1.8566
+61	-72	1.7902
+62	-72	1.705
+63	-72	1.6302
+64	-72	1.5756
+65	-72	1.5152
+66	-72	1.45
+67	-72	1.3854
+68	-72	1.3208
+69	-72	1.2726
+70	-72	1.2282
+71	-72	1.1764
+72	-72	1.1404
+73	-72	1.1055
+74	-72	1.0632
+75	-72	1.009
+76	-72	0.96127
+77	-72	0.92986
+78	-72	0.92428
+79	-72	0.91967
+80	-72	0.90902
+81	-72	0.89934
+82	-72	0.88244
+83	-72	0.85747
+84	-72	0.82241
+85	-72	0.80195
+86	-72	0.7642
+87	-72	0.74194
+88	-72	0.72039
+89	-72	0.70968
+90	-72	0.69898
+91	-72	0.68827
+92	-72	0.67831
+93	-72	0.68179
+94	-72	0.68765
+95	-72	0.69351
+96	-72	0.69847
+97	-72	0.71588
+98	-72	0.74456
+99	-72	0.76666
+100	-72	0.78876
+101	-72	0.81785
+102	-72	0.70899
+103	-72	0.60013
+104	-72	0.49128
+105	-72	0.39084
+106	-72	0.38461
+107	-72	0.37482
+108	-72	0.36442
+109	-72	0.24946
+110	-72	0.028359
+111	-72	-0.012099
+112	-72	-0.13831
+113	-72	-0.27788
+114	-72	-0.27178
+115	-72	-0.24495
+116	-72	-0.21812
+117	-72	-0.20033
+118	-72	-0.18066
+119	-72	-0.10766
+120	-72	-0.034668
+121	-72	-0.024251
+122	-72	0.17303
+123	-72	0.33773
+124	-72	0.45627
+125	-72	0.45859
+126	-72	0.50119
+127	-72	0.55828
+128	-72	0.61536
+129	-72	0.63194
+130	-72	0.63273
+131	-72	0.65378
+132	-72	0.67484
+133	-72	0.69589
+134	-72	0.66415
+135	-72	0.58832
+136	-72	0.58791
+137	-72	0.57525
+138	-72	0.5626
+139	-72	0.54649
+140	-72	0.47777
+141	-72	0.40712
+142	-72	0.32288
+143	-72	0.25726
+144	-72	0.19263
+145	-72	0.085029
+146	-72	-0.026454
+147	-72	-0.13794
+148	-72	-0.26735
+149	-72	-0.35281
+150	-72	-0.39632
+151	-72	-0.40278
+152	-72	-0.45963
+153	-72	-0.539
+154	-72	-0.76786
+155	-72	-0.84466
+156	-72	-0.92146
+157	-72	-0.91264
+158	-72	-0.8979
+159	-72	-0.91561
+160	-72	-0.97679
+161	-72	-1.0263
+162	-72	-1.0316
+163	-72	-0.95708
+164	-72	-0.8705
+165	-72	-0.8009
+166	-72	-0.60131
+167	-72	-0.57237
+168	-72	-0.5999
+169	-72	-0.48469
+170	-72	-0.13402
+171	-72	-0.11746
+172	-72	0
+173	-72	0
+174	-72	0
+175	-72	0
+176	-72	0
+177	-72	0
+178	-72	0
+179	-72	0
+180	-72	0
+181	-72	0
+182	-72	0
+183	-72	0
+184	-72	0
+185	-72	0
+186	-72	0
+187	-72	0
+188	-72	0
+189	-72	0
+190	-72	0
+191	-72	0
+192	-72	0
+193	-72	0
+194	-72	0
+195	-72	0
+196	-72	0
+197	-72	0
+198	-72	0
+199	-72	0
+200	-72	0
+201	-72	0
+202	-72	0
+203	-72	0
+204	-72	0
+205	-72	0
+206	-72	0
+207	-72	0
+208	-72	0
+209	-72	0
+210	-72	0
+211	-72	0
+212	-72	0
+213	-72	0
+214	-72	0
+215	-72	0
+216	-72	0
+217	-72	0
+218	-72	0
+219	-72	0
+220	-72	0
+221	-72	0
+222	-72	0
+223	-72	0
+224	-72	0
+225	-72	0
+226	-72	0
+227	-72	0
+228	-72	0
+229	-72	0
+230	-72	0
+231	-72	0
+232	-72	0
+233	-72	0
+234	-72	0
+235	-72	0
+236	-72	0
+237	-72	0
+238	-72	0
+239	-72	0
+240	-72	0
+241	-72	0
+242	-72	0
+243	-72	0
+244	-72	0
+245	-72	0
+246	-72	0
+247	-72	0
+248	-72	0
+249	-72	0
+250	-72	0
+251	-72	0
+252	-72	0
+253	-72	0
+254	-72	0
+255	-72	0
+256	-72	0
+257	-72	-3.3615
+258	-72	-3.7725
+259	-72	-6.5191
+260	-72	-7.2504
+261	-72	-5.0508
+262	-72	-3.6071
+263	-72	-4.0116
+264	-72	-2.992
+265	-72	-2.5085
+266	-72	-0.21334
+267	-72	-0.27929
+268	-72	-0.65965
+269	-72	0
+270	-72	0
+271	-72	0
+272	-72	0
+273	-72	0
+274	-72	0
+275	-72	0
+276	-72	0
+277	-72	0
+278	-72	0
+279	-72	0
+280	-72	0
+281	-72	0
+282	-72	-2.1847
+283	-72	0
+284	-72	-2.5008
+285	-72	-7.1158
+286	-72	-4.3639
+287	-72	-8.4681
+288	-72	-8.5541
+289	-72	-8.474
+290	-72	-8.1133
+291	-72	-7.5968
+292	-72	-7.4514
+293	-72	-7.2683
+294	-72	-7.0636
+295	-72	-6.824
+296	-72	-6.359
+297	-72	-5.5583
+298	-72	-4.7223
+299	-72	-3.8911
+300	-72	-1.1506
+301	-72	0
+302	-72	0
+303	-72	0
+304	-72	0
+305	-72	0
+306	-72	0
+307	-72	0
+308	-72	0
+309	-72	0
+310	-72	0
+311	-72	0
+312	-72	0
+313	-72	0
+314	-72	0
+315	-72	0
+316	-72	0
+317	-72	0
+318	-72	0
+319	-72	0
+320	-72	0
+321	-72	0
+322	-72	0
+323	-72	0
+324	-72	0
+325	-72	0
+326	-72	0
+327	-72	0
+328	-72	0
+329	-72	0
+330	-72	0
+331	-72	0
+332	-72	0
+333	-72	0
+334	-72	0
+335	-72	0
+336	-72	0
+337	-72	0
+338	-72	0
+339	-72	0
+340	-72	0
+341	-72	0
+342	-72	0
+343	-72	0.39416
+344	-72	0.36454
+345	-72	2.1495
+346	-72	2.4435
+347	-72	1.5432
+348	-72	2.6637
+349	-72	3.2143
+350	-72	3.2292
+351	-72	3.2215
+352	-72	3.2498
+353	-72	3.3323
+354	-72	3.3934
+355	-72	3.46
+356	-72	3.5482
+357	-72	3.5274
+358	-72	3.4954
+359	-72	3.4196
+360	-72	3.3653
+0	-71.5	3.2909
+1	-71.5	3.2504
+2	-71.5	3.2207
+3	-71.5	3.1853
+4	-71.5	3.1289
+5	-71.5	3.0717
+6	-71.5	3.0048
+7	-71.5	2.9994
+8	-71.5	2.9521
+9	-71.5	2.883
+10	-71.5	2.8389
+11	-71.5	2.8024
+12	-71.5	2.7066
+13	-71.5	2.6221
+14	-71.5	2.5501
+15	-71.5	2.5277
+16	-71.5	2.5745
+17	-71.5	2.6281
+18	-71.5	2.6617
+19	-71.5	2.6517
+20	-71.5	2.622
+21	-71.5	2.5743
+22	-71.5	2.6571
+23	-71.5	2.762
+24	-71.5	2.9015
+25	-71.5	2.9675
+26	-71.5	2.9775
+27	-71.5	3.0059
+28	-71.5	2.9993
+29	-71.5	3.0399
+30	-71.5	3.3261
+31	-71.5	3.5153
+32	-71.5	3.5829
+33	-71.5	3.6521
+34	-71.5	3.6971
+35	-71.5	3.7338
+36	-71.5	3.7946
+37	-71.5	3.8302
+38	-71.5	3.867
+39	-71.5	3.876
+40	-71.5	3.8
+41	-71.5	3.7105
+42	-71.5	3.6493
+43	-71.5	3.6266
+44	-71.5	3.6013
+45	-71.5	3.526
+46	-71.5	3.4337
+47	-71.5	3.2898
+48	-71.5	3.1436
+49	-71.5	3.0546
+50	-71.5	2.9495
+51	-71.5	2.8531
+52	-71.5	2.7573
+53	-71.5	2.6521
+54	-71.5	2.5423
+55	-71.5	2.4314
+56	-71.5	2.3136
+57	-71.5	2.2036
+58	-71.5	2.1339
+59	-71.5	2.062
+60	-71.5	1.9974
+61	-71.5	1.9171
+62	-71.5	1.832
+63	-71.5	1.7586
+64	-71.5	1.6791
+65	-71.5	1.6115
+66	-71.5	1.5532
+67	-71.5	1.4873
+68	-71.5	1.4188
+69	-71.5	1.3441
+70	-71.5	1.2906
+71	-71.5	1.2416
+72	-71.5	1.2136
+73	-71.5	1.182
+74	-71.5	1.1462
+75	-71.5	1.092
+76	-71.5	1.0378
+77	-71.5	1.0018
+78	-71.5	0.97558
+79	-71.5	1.0072
+80	-71.5	1.0083
+81	-71.5	0.994
+82	-71.5	0.96885
+83	-71.5	0.94398
+84	-71.5	0.90937
+85	-71.5	0.87447
+86	-71.5	0.85914
+87	-71.5	0.84277
+88	-71.5	0.81423
+89	-71.5	0.80352
+90	-71.5	0.79282
+91	-71.5	0.78211
+92	-71.5	0.75767
+93	-71.5	0.75683
+94	-71.5	0.76268
+95	-71.5	0.7685
+96	-71.5	0.77242
+97	-71.5	0.78978
+98	-71.5	0.825
+99	-71.5	0.84721
+100	-71.5	0.86931
+101	-71.5	0.83641
+102	-71.5	0.72066
+103	-71.5	0.61167
+104	-71.5	0.50267
+105	-71.5	0.39078
+106	-71.5	0.3618
+107	-71.5	0.35141
+108	-71.5	0.28421
+109	-71.5	0.088454
+110	-71.5	-0.17429
+111	-71.5	-0.28358
+112	-71.5	-0.32403
+113	-71.5	-0.39534
+114	-71.5	-0.41952
+115	-71.5	-0.39269
+116	-71.5	-0.36585
+117	-71.5	-0.34078
+118	-71.5	-0.29378
+119	-71.5	-0.28766
+120	-71.5	-0.30775
+121	-71.5	-0.19538
+122	-71.5	0.033444
+123	-71.5	0.20106
+124	-71.5	0.36845
+125	-71.5	0.44727
+126	-71.5	0.50435
+127	-71.5	0.56143
+128	-71.5	0.61852
+129	-71.5	0.65555
+130	-71.5	0.66786
+131	-71.5	0.68891
+132	-71.5	0.70996
+133	-71.5	0.70145
+134	-71.5	0.66912
+135	-71.5	0.59224
+136	-71.5	0.58195
+137	-71.5	0.57362
+138	-71.5	0.56096
+139	-71.5	0.50443
+140	-71.5	0.43572
+141	-71.5	0.36404
+142	-71.5	0.2798
+143	-71.5	0.20313
+144	-71.5	0.11818
+145	-71.5	0.015426
+146	-71.5	-0.096056
+147	-71.5	-0.20754
+148	-71.5	-0.38017
+149	-71.5	-0.51447
+150	-71.5	-0.52733
+151	-71.5	-0.53378
+152	-71.5	-0.58444
+153	-71.5	-0.648
+154	-71.5	-0.82873
+155	-71.5	-0.96009
+156	-71.5	-1.0145
+157	-71.5	-0.99951
+158	-71.5	-0.95613
+159	-71.5	-0.96974
+160	-71.5	-0.9258
+161	-71.5	-0.9757
+162	-71.5	-1.0766
+163	-71.5	-1.02
+164	-71.5	-0.8973
+165	-71.5	-0.71731
+166	-71.5	-0.58135
+167	-71.5	-0.52535
+168	-71.5	-0.50909
+169	-71.5	-0.41559
+170	-71.5	-0.2739
+171	-71.5	-0.15653
+172	-71.5	0
+173	-71.5	0
+174	-71.5	0
+175	-71.5	0
+176	-71.5	0
+177	-71.5	0
+178	-71.5	0
+179	-71.5	0
+180	-71.5	0
+181	-71.5	0
+182	-71.5	0
+183	-71.5	0
+184	-71.5	0
+185	-71.5	0
+186	-71.5	0
+187	-71.5	0
+188	-71.5	0
+189	-71.5	0
+190	-71.5	0
+191	-71.5	0
+192	-71.5	0
+193	-71.5	0
+194	-71.5	0
+195	-71.5	0
+196	-71.5	0
+197	-71.5	0
+198	-71.5	0
+199	-71.5	0
+200	-71.5	0
+201	-71.5	0
+202	-71.5	0
+203	-71.5	0
+204	-71.5	0
+205	-71.5	0
+206	-71.5	0
+207	-71.5	0
+208	-71.5	0
+209	-71.5	0
+210	-71.5	0
+211	-71.5	0
+212	-71.5	0
+213	-71.5	0
+214	-71.5	0
+215	-71.5	0
+216	-71.5	0
+217	-71.5	0
+218	-71.5	0
+219	-71.5	0
+220	-71.5	0
+221	-71.5	0
+222	-71.5	0
+223	-71.5	0
+224	-71.5	0
+225	-71.5	0
+226	-71.5	0
+227	-71.5	0
+228	-71.5	0
+229	-71.5	0
+230	-71.5	0
+231	-71.5	0
+232	-71.5	0
+233	-71.5	0
+234	-71.5	0
+235	-71.5	0
+236	-71.5	0
+237	-71.5	0
+238	-71.5	0
+239	-71.5	0
+240	-71.5	0
+241	-71.5	0
+242	-71.5	0
+243	-71.5	0
+244	-71.5	0
+245	-71.5	0
+246	-71.5	0
+247	-71.5	0
+248	-71.5	0
+249	-71.5	0
+250	-71.5	0
+251	-71.5	0
+252	-71.5	0
+253	-71.5	0
+254	-71.5	0
+255	-71.5	0
+256	-71.5	0
+257	-71.5	0
+258	-71.5	0
+259	-71.5	-0.35745
+260	-71.5	-2.0636
+261	-71.5	-1.1561
+262	-71.5	0
+263	-71.5	0
+264	-71.5	0
+265	-71.5	0
+266	-71.5	0
+267	-71.5	0
+268	-71.5	0
+269	-71.5	0
+270	-71.5	0
+271	-71.5	0
+272	-71.5	0
+273	-71.5	0
+274	-71.5	0
+275	-71.5	0
+276	-71.5	0
+277	-71.5	0
+278	-71.5	0
+279	-71.5	0
+280	-71.5	0
+281	-71.5	0
+282	-71.5	0
+283	-71.5	0
+284	-71.5	-1.6911
+285	-71.5	-5.1914
+286	-71.5	-8.7528
+287	-71.5	-8.7511
+288	-71.5	-8.7421
+289	-71.5	-8.8133
+290	-71.5	-8.6321
+291	-71.5	-8.1813
+292	-71.5	-8.0799
+293	-71.5	-8.0099
+294	-71.5	-7.8705
+295	-71.5	-7.6495
+296	-71.5	-6.8994
+297	-71.5	-6.1392
+298	-71.5	-5.3039
+299	-71.5	-4.4663
+300	-71.5	-1.2816
+301	-71.5	0
+302	-71.5	0
+303	-71.5	0
+304	-71.5	0
+305	-71.5	0
+306	-71.5	0
+307	-71.5	0
+308	-71.5	0
+309	-71.5	0
+310	-71.5	0
+311	-71.5	0
+312	-71.5	0
+313	-71.5	0
+314	-71.5	0
+315	-71.5	0
+316	-71.5	0
+317	-71.5	0
+318	-71.5	0
+319	-71.5	0
+320	-71.5	0
+321	-71.5	0
+322	-71.5	0
+323	-71.5	0
+324	-71.5	0
+325	-71.5	0
+326	-71.5	0
+327	-71.5	0
+328	-71.5	0
+329	-71.5	0
+330	-71.5	0
+331	-71.5	0
+332	-71.5	0
+333	-71.5	0
+334	-71.5	0
+335	-71.5	0
+336	-71.5	0
+337	-71.5	0
+338	-71.5	0
+339	-71.5	0
+340	-71.5	0
+341	-71.5	0
+342	-71.5	0
+343	-71.5	0
+344	-71.5	0
+345	-71.5	0.89419
+346	-71.5	1.1191
+347	-71.5	0
+348	-71.5	1.4054
+349	-71.5	2.2314
+350	-71.5	3.1164
+351	-71.5	3.1423
+352	-71.5	3.1709
+353	-71.5	3.2429
+354	-71.5	3.2925
+355	-71.5	3.3503
+356	-71.5	3.4248
+357	-71.5	3.4197
+358	-71.5	3.3829
+359	-71.5	3.3363
+360	-71.5	3.2909
+0	-71	3.1956
+1	-71	3.1617
+2	-71	3.1175
+3	-71	3.0976
+4	-71	3.0487
+5	-71	2.9816
+6	-71	2.9103
+7	-71	2.8807
+8	-71	2.8387
+9	-71	2.8189
+10	-71	2.7466
+11	-71	2.7411
+12	-71	2.6562
+13	-71	2.5686
+14	-71	2.5095
+15	-71	2.4993
+16	-71	2.5329
+17	-71	2.5925
+18	-71	2.6232
+19	-71	2.5783
+20	-71	2.5873
+21	-71	2.5692
+22	-71	2.6219
+23	-71	2.7285
+24	-71	2.9143
+25	-71	2.9275
+26	-71	2.9541
+27	-71	3.0224
+28	-71	3.0274
+29	-71	3.0795
+30	-71	3.369
+31	-71	3.5552
+32	-71	3.6147
+33	-71	3.7069
+34	-71	3.7346
+35	-71	3.7835
+36	-71	3.8791
+37	-71	3.9732
+38	-71	4.0094
+39	-71	4.0216
+40	-71	3.92
+41	-71	3.8335
+42	-71	3.7741
+43	-71	3.7444
+44	-71	3.7182
+45	-71	3.7107
+46	-71	3.6219
+47	-71	3.4774
+48	-71	3.3385
+49	-71	3.2287
+50	-71	3.1093
+51	-71	3.0095
+52	-71	2.9191
+53	-71	2.8296
+54	-71	2.7144
+55	-71	2.5913
+56	-71	2.4681
+57	-71	2.3395
+58	-71	2.265
+59	-71	2.2051
+60	-71	2.1293
+61	-71	2.044
+62	-71	1.9572
+63	-71	1.8542
+64	-71	1.7559
+65	-71	1.7024
+66	-71	1.6571
+67	-71	1.5912
+68	-71	1.508
+69	-71	1.4164
+70	-71	1.3513
+71	-71	1.3154
+72	-71	1.2897
+73	-71	1.2532
+74	-71	1.2091
+75	-71	1.1522
+76	-71	1.0942
+77	-71	1.0483
+78	-71	1.0405
+79	-71	1.082
+80	-71	1.1111
+81	-71	1.0759
+82	-71	1.0553
+83	-71	1.0304
+84	-71	0.99633
+85	-71	0.959
+86	-71	0.96385
+87	-71	0.94095
+88	-71	0.90889
+89	-71	0.89736
+90	-71	0.88665
+91	-71	0.86546
+92	-71	0.83636
+93	-71	0.83228
+94	-71	0.83772
+95	-71	0.84245
+96	-71	0.84637
+97	-71	0.86369
+98	-71	0.8989
+99	-71	0.92775
+100	-71	0.94985
+101	-71	0.87463
+102	-71	0.73797
+103	-71	0.62897
+104	-71	0.51998
+105	-71	0.40346
+106	-71	0.33839
+107	-71	0.31897
+108	-71	0.12793
+109	-71	-0.079603
+110	-71	-0.34235
+111	-71	-0.55505
+112	-71	-0.59551
+113	-71	-0.63498
+114	-71	-0.58081
+115	-71	-0.55349
+116	-71	-0.52616
+117	-71	-0.51376
+118	-71	-0.57116
+119	-71	-0.59126
+120	-71	-0.61135
+121	-71	-0.36414
+122	-71	-0.11105
+123	-71	0.061473
+124	-71	0.22909
+125	-71	0.37012
+126	-71	0.4495
+127	-71	0.52039
+128	-71	0.59127
+129	-71	0.6657
+130	-71	0.65702
+131	-71	0.64637
+132	-71	0.63571
+133	-71	0.65892
+134	-71	0.6647
+135	-71	0.5972
+136	-71	0.57237
+137	-71	0.57198
+138	-71	0.53109
+139	-71	0.46238
+140	-71	0.39366
+141	-71	0.32097
+142	-71	0.23672
+143	-71	0.1558
+144	-71	0.043724
+145	-71	-0.057391
+146	-71	-0.16566
+147	-71	-0.31377
+148	-71	-0.49269
+149	-71	-0.6103
+150	-71	-0.6348
+151	-71	-0.65929
+152	-71	-0.69426
+153	-71	-0.73424
+154	-71	-0.86435
+155	-71	-1.0722
+156	-71	-1.0966
+157	-71	-1.0763
+158	-71	-1.0149
+159	-71	-0.98871
+160	-71	-0.87021
+161	-71	-0.91422
+162	-71	-1.0015
+163	-71	-1.0188
+164	-71	-0.84656
+165	-71	-0.58443
+166	-71	-0.33333
+167	-71	-0.39192
+168	-71	-0.35951
+169	-71	-0.23448
+170	-71	-0.069308
+171	-71	-0.050087
+172	-71	0
+173	-71	0
+174	-71	0
+175	-71	0
+176	-71	0
+177	-71	0
+178	-71	0
+179	-71	0
+180	-71	0
+181	-71	0
+182	-71	0
+183	-71	0
+184	-71	0
+185	-71	0
+186	-71	0
+187	-71	0
+188	-71	0
+189	-71	0
+190	-71	0
+191	-71	0
+192	-71	0
+193	-71	0
+194	-71	0
+195	-71	0
+196	-71	0
+197	-71	0
+198	-71	0
+199	-71	0
+200	-71	0
+201	-71	0
+202	-71	0
+203	-71	0
+204	-71	0
+205	-71	0
+206	-71	0
+207	-71	0
+208	-71	0
+209	-71	0
+210	-71	0
+211	-71	0
+212	-71	0
+213	-71	0
+214	-71	0
+215	-71	0
+216	-71	0
+217	-71	0
+218	-71	0
+219	-71	0
+220	-71	0
+221	-71	0
+222	-71	0
+223	-71	0
+224	-71	0
+225	-71	0
+226	-71	0
+227	-71	0
+228	-71	0
+229	-71	0
+230	-71	0
+231	-71	0
+232	-71	0
+233	-71	0
+234	-71	0
+235	-71	0
+236	-71	0
+237	-71	0
+238	-71	0
+239	-71	0
+240	-71	0
+241	-71	0
+242	-71	0
+243	-71	0
+244	-71	0
+245	-71	0
+246	-71	0
+247	-71	0
+248	-71	0
+249	-71	0
+250	-71	0
+251	-71	0
+252	-71	0
+253	-71	0
+254	-71	0
+255	-71	0
+256	-71	0
+257	-71	0
+258	-71	0
+259	-71	0
+260	-71	0
+261	-71	0
+262	-71	0
+263	-71	0
+264	-71	0
+265	-71	0
+266	-71	0
+267	-71	0
+268	-71	0
+269	-71	0
+270	-71	0
+271	-71	0
+272	-71	0
+273	-71	0
+274	-71	0
+275	-71	0
+276	-71	0
+277	-71	0
+278	-71	0
+279	-71	0
+280	-71	0
+281	-71	0
+282	-71	0
+283	-71	0
+284	-71	0
+285	-71	-0.4969
+286	-71	-1.7817
+287	-71	-8.9201
+288	-71	-8.8409
+289	-71	-8.8882
+290	-71	-9.0265
+291	-71	-8.6965
+292	-71	-8.56
+293	-71	-8.6062
+294	-71	-8.5439
+295	-71	-8.1756
+296	-71	-7.4127
+297	-71	-6.645
+298	-71	-5.8772
+299	-71	-5.0384
+300	-71	0
+301	-71	0
+302	-71	0
+303	-71	0
+304	-71	0
+305	-71	0
+306	-71	0
+307	-71	0
+308	-71	0
+309	-71	0
+310	-71	0
+311	-71	0
+312	-71	0
+313	-71	0
+314	-71	0
+315	-71	0
+316	-71	0
+317	-71	0
+318	-71	0
+319	-71	0
+320	-71	0
+321	-71	0
+322	-71	0
+323	-71	0
+324	-71	0
+325	-71	0
+326	-71	0
+327	-71	0
+328	-71	0
+329	-71	0
+330	-71	0
+331	-71	0
+332	-71	0
+333	-71	0
+334	-71	0
+335	-71	0
+336	-71	0
+337	-71	0
+338	-71	0
+339	-71	0
+340	-71	0
+341	-71	0
+342	-71	0
+343	-71	0
+344	-71	0
+345	-71	0
+346	-71	0
+347	-71	0
+348	-71	0
+349	-71	0.76243
+350	-71	2.6965
+351	-71	2.1987
+352	-71	2.4221
+353	-71	2.9679
+354	-71	3.1124
+355	-71	2.7332
+356	-71	2.6867
+357	-71	3.3086
+358	-71	3.2542
+359	-71	3.235
+360	-71	3.1956
+0	-70.5	3.041
+1	-70.5	3.0073
+2	-70.5	2.9589
+3	-70.5	2.9305
+4	-70.5	2.9188
+5	-70.5	2.8587
+6	-70.5	2.8244
+7	-70.5	2.2539
+8	-70.5	2.4235
+9	-70.5	2.6952
+10	-70.5	2.6544
+11	-70.5	2.0583
+12	-70.5	2.5387
+13	-70.5	2.5138
+14	-70.5	2.4525
+15	-70.5	2.4534
+16	-70.5	2.4719
+17	-70.5	2.5238
+18	-70.5	2.543
+19	-70.5	2.1155
+20	-70.5	1.7439
+21	-70.5	2.5574
+22	-70.5	2.562
+23	-70.5	1.4907
+24	-70.5	1.5256
+25	-70.5	2.8746
+26	-70.5	1.9555
+27	-70.5	2.9367
+28	-70.5	3.0831
+29	-70.5	3.1192
+30	-70.5	3.4072
+31	-70.5	3.5291
+32	-70.5	3.6179
+33	-70.5	3.7299
+34	-70.5	3.771
+35	-70.5	3.8092
+36	-70.5	3.9079
+37	-70.5	4.014
+38	-70.5	4.035
+39	-70.5	4.1023
+40	-70.5	4.0403
+41	-70.5	3.9208
+42	-70.5	3.89
+43	-70.5	3.8631
+44	-70.5	3.8378
+45	-70.5	3.7713
+46	-70.5	3.754
+47	-70.5	3.6273
+48	-70.5	3.5044
+49	-70.5	3.3933
+50	-70.5	3.269
+51	-70.5	3.1673
+52	-70.5	3.0748
+53	-70.5	2.985
+54	-70.5	2.8689
+55	-70.5	2.7458
+56	-70.5	2.6161
+57	-70.5	2.4808
+58	-70.5	2.3896
+59	-70.5	2.3264
+60	-70.5	2.2483
+61	-70.5	2.1615
+62	-70.5	2.0691
+63	-70.5	1.9289
+64	-70.5	1.8326
+65	-70.5	1.7933
+66	-70.5	1.7565
+67	-70.5	1.6826
+68	-70.5	1.5902
+69	-70.5	1.496
+70	-70.5	1.4122
+71	-70.5	1.3893
+72	-70.5	1.3657
+73	-70.5	1.321
+74	-70.5	1.2693
+75	-70.5	1.2102
+76	-70.5	1.1457
+77	-70.5	1.095
+78	-70.5	1.1132
+79	-70.5	1.1548
+80	-70.5	1.1875
+81	-70.5	1.1555
+82	-70.5	1.1375
+83	-70.5	1.1168
+84	-70.5	1.0825
+85	-70.5	1.0432
+86	-70.5	1.0656
+87	-70.5	1.0391
+88	-70.5	1.0071
+89	-70.5	0.9912
+90	-70.5	0.97326
+91	-70.5	0.94119
+92	-70.5	0.91591
+93	-70.5	0.91183
+94	-70.5	0.91248
+95	-70.5	0.9164
+96	-70.5	0.92032
+97	-70.5	0.93759
+98	-70.5	0.97281
+99	-70.5	1.008
+100	-70.5	0.98964
+101	-70.5	0.9063
+102	-70.5	0.77016
+103	-70.5	0.64628
+104	-70.5	0.53728
+105	-70.5	0.41614
+106	-70.5	0.31497
+107	-70.5	0.16269
+108	-70.5	-0.028346
+109	-70.5	-0.24766
+110	-70.5	-0.51041
+111	-70.5	-0.77316
+112	-70.5	-0.86699
+113	-70.5	-0.88486
+114	-70.5	-0.75376
+115	-70.5	-0.72644
+116	-70.5	-0.69911
+117	-70.5	-0.87122
+118	-70.5	-0.87602
+119	-70.5	-0.89485
+120	-70.5	-0.78598
+121	-70.5	-0.53289
+122	-70.5	-0.27981
+123	-70.5	-0.078113
+124	-70.5	0.047755
+125	-70.5	0.17765
+126	-70.5	0.31597
+127	-70.5	0.38686
+128	-70.5	0.45774
+129	-70.5	0.55233
+130	-70.5	0.5824
+131	-70.5	0.57175
+132	-70.5	0.58983
+133	-70.5	0.61639
+134	-70.5	0.62023
+135	-70.5	0.60217
+136	-70.5	0.56278
+137	-70.5	0.56187
+138	-70.5	0.50049
+139	-70.5	0.43022
+140	-70.5	0.35996
+141	-70.5	0.29412
+142	-70.5	0.22945
+143	-70.5	0.12064
+144	-70.5	-0.0067381
+145	-70.5	-0.12229
+146	-70.5	-0.24554
+147	-70.5	-0.41773
+148	-70.5	-0.55418
+149	-70.5	-0.66286
+150	-70.5	-0.69724
+151	-70.5	-0.76153
+152	-70.5	-0.73659
+153	-70.5	-0.77104
+154	-70.5	-0.84979
+155	-70.5	-1.0794
+156	-70.5	-1.1166
+157	-70.5	-1.0856
+158	-70.5	-1.0618
+159	-70.5	-0.93632
+160	-70.5	-0.80122
+161	-70.5	-0.85559
+162	-70.5	-0.9169
+163	-70.5	-0.85191
+164	-70.5	-0.49929
+165	-70.5	-0.27794
+166	-70.5	0
+167	-70.5	0
+168	-70.5	-0.11185
+169	-70.5	-0.087978
+170	-70.5	0
+171	-70.5	0
+172	-70.5	0
+173	-70.5	0
+174	-70.5	0
+175	-70.5	0
+176	-70.5	0
+177	-70.5	0
+178	-70.5	0
+179	-70.5	0
+180	-70.5	0
+181	-70.5	0
+182	-70.5	0
+183	-70.5	0
+184	-70.5	0
+185	-70.5	0
+186	-70.5	0
+187	-70.5	0
+188	-70.5	0
+189	-70.5	0
+190	-70.5	0
+191	-70.5	0
+192	-70.5	0
+193	-70.5	0
+194	-70.5	0
+195	-70.5	0
+196	-70.5	0
+197	-70.5	0
+198	-70.5	0
+199	-70.5	0
+200	-70.5	0
+201	-70.5	0
+202	-70.5	0
+203	-70.5	0
+204	-70.5	0
+205	-70.5	0
+206	-70.5	0
+207	-70.5	0
+208	-70.5	0
+209	-70.5	0
+210	-70.5	0
+211	-70.5	0
+212	-70.5	0
+213	-70.5	0
+214	-70.5	0
+215	-70.5	0
+216	-70.5	0
+217	-70.5	0
+218	-70.5	0
+219	-70.5	0
+220	-70.5	0
+221	-70.5	0
+222	-70.5	0
+223	-70.5	0
+224	-70.5	0
+225	-70.5	0
+226	-70.5	0
+227	-70.5	0
+228	-70.5	0
+229	-70.5	0
+230	-70.5	0
+231	-70.5	0
+232	-70.5	0
+233	-70.5	0
+234	-70.5	0
+235	-70.5	0
+236	-70.5	0
+237	-70.5	0
+238	-70.5	0
+239	-70.5	0
+240	-70.5	0
+241	-70.5	0
+242	-70.5	0
+243	-70.5	0
+244	-70.5	0
+245	-70.5	0
+246	-70.5	0
+247	-70.5	0
+248	-70.5	0
+249	-70.5	0
+250	-70.5	0
+251	-70.5	0
+252	-70.5	0
+253	-70.5	0
+254	-70.5	0
+255	-70.5	0
+256	-70.5	0
+257	-70.5	0
+258	-70.5	0
+259	-70.5	0
+260	-70.5	0
+261	-70.5	0
+262	-70.5	0
+263	-70.5	0
+264	-70.5	0
+265	-70.5	0
+266	-70.5	0
+267	-70.5	0
+268	-70.5	0
+269	-70.5	0
+270	-70.5	0
+271	-70.5	0
+272	-70.5	0
+273	-70.5	0
+274	-70.5	0
+275	-70.5	0
+276	-70.5	0
+277	-70.5	0
+278	-70.5	0
+279	-70.5	0
+280	-70.5	0
+281	-70.5	0
+282	-70.5	0
+283	-70.5	0
+284	-70.5	0
+285	-70.5	0
+286	-70.5	-0.0044774
+287	-70.5	-5.966
+288	-70.5	-8.7701
+289	-70.5	-8.8943
+290	-70.5	-9.0873
+291	-70.5	-8.6499
+292	-70.5	-9.0516
+293	-70.5	-9.0637
+294	-70.5	-9.0369
+295	-70.5	-8.623
+296	-70.5	-7.9174
+297	-70.5	-7.1681
+298	-70.5	-6.4156
+299	-70.5	-4.6116
+300	-70.5	0
+301	-70.5	0
+302	-70.5	0
+303	-70.5	0
+304	-70.5	0
+305	-70.5	0
+306	-70.5	0
+307	-70.5	0
+308	-70.5	0
+309	-70.5	0
+310	-70.5	0
+311	-70.5	0
+312	-70.5	0
+313	-70.5	0
+314	-70.5	0
+315	-70.5	0
+316	-70.5	0
+317	-70.5	0
+318	-70.5	0
+319	-70.5	0
+320	-70.5	0
+321	-70.5	0
+322	-70.5	0
+323	-70.5	0
+324	-70.5	0
+325	-70.5	0
+326	-70.5	0
+327	-70.5	0
+328	-70.5	0
+329	-70.5	0
+330	-70.5	0
+331	-70.5	0
+332	-70.5	0
+333	-70.5	0
+334	-70.5	0
+335	-70.5	0
+336	-70.5	0
+337	-70.5	0
+338	-70.5	0
+339	-70.5	0
+340	-70.5	0
+341	-70.5	0
+342	-70.5	0
+343	-70.5	0
+344	-70.5	0
+345	-70.5	0
+346	-70.5	0
+347	-70.5	0
+348	-70.5	0
+349	-70.5	0.14739
+350	-70.5	1.8597
+351	-70.5	0.45377
+352	-70.5	1.7129
+353	-70.5	1.3406
+354	-70.5	1.5114
+355	-70.5	1.9202
+356	-70.5	1.5353
+357	-70.5	3.1317
+358	-70.5	3.0838
+359	-70.5	3.0673
+360	-70.5	3.041
+0	-70	2.4312
+1	-70	1.7001
+2	-70	1.257
+3	-70	2.1611
+4	-70	1.7663
+5	-70	0.82695
+6	-70	2.1876
+7	-70	0.76665
+8	-70	1.1759
+9	-70	2.2286
+10	-70	2.2778
+11	-70	1.028
+12	-70	1.1013
+13	-70	1.881
+14	-70	2.3972
+15	-70	2.3986
+16	-70	1.8692
+17	-70	2.2466
+18	-70	2.1867
+19	-70	1.7137
+20	-70	0.6198
+21	-70	2.0737
+22	-70	0.84934
+23	-70	0
+24	-70	0.13062
+25	-70	1.5595
+26	-70	0.41743
+27	-70	2.2325
+28	-70	1.1587
+29	-70	2.5968
+30	-70	3.3588
+31	-70	3.4514
+32	-70	3.5736
+33	-70	3.7136
+34	-70	3.7791
+35	-70	3.8443
+36	-70	3.9201
+37	-70	2.7425
+38	-70	2.6328
+39	-70	3.991
+40	-70	4.0373
+41	-70	3.9676
+42	-70	3.9894
+43	-70	3.9286
+44	-70	3.8848
+45	-70	3.8061
+46	-70	3.7976
+47	-70	3.7773
+48	-70	3.6493
+49	-70	3.5429
+50	-70	3.4287
+51	-70	3.3251
+52	-70	3.2326
+53	-70	3.1365
+54	-70	3.0223
+55	-70	2.9003
+56	-70	2.7623
+57	-70	2.622
+58	-70	2.5309
+59	-70	2.4441
+60	-70	2.3636
+61	-70	2.279
+62	-70	2.1491
+63	-70	2.0033
+64	-70	1.9235
+65	-70	1.842
+66	-70	1.8052
+67	-70	1.7564
+68	-70	1.6682
+69	-70	1.5689
+70	-70	1.4862
+71	-70	1.4554
+72	-70	1.4039
+73	-70	1.3605
+74	-70	0.57752
+75	-70	1.0953
+76	-70	0.97787
+77	-70	1.1567
+78	-70	1.1956
+79	-70	1.2259
+80	-70	1.2429
+81	-70	1.2279
+82	-70	1.2139
+83	-70	1.1999
+84	-70	1.1668
+85	-70	1.128
+86	-70	1.1409
+87	-70	1.1239
+88	-70	1.1053
+89	-70	1.0811
+90	-70	1.049
+91	-70	1.0169
+92	-70	0.99545
+93	-70	0.9798
+94	-70	0.96139
+95	-70	0.98865
+96	-70	0.99427
+97	-70	1.0115
+98	-70	1.0467
+99	-70	1.0725
+100	-70	1.0213
+101	-70	0.93798
+102	-70	0.80882
+103	-70	0.66526
+104	-70	0.55459
+105	-70	0.42882
+106	-70	0.27716
+107	-70	0.063702
+108	-70	-0.18463
+109	-70	-0.41572
+110	-70	-0.67621
+111	-70	-0.9339
+112	-70	-1.1223
+113	-70	-1.1347
+114	-70	-0.93992
+115	-70	-0.89938
+116	-70	-0.90573
+117	-70	-1.1904
+118	-70	-1.1825
+119	-70	-1.1988
+120	-70	-0.95743
+121	-70	-0.7056
+122	-70	-0.45378
+123	-70	-0.25229
+124	-70	-0.15336
+125	-70	-0.01482
+126	-70	0.1636
+127	-70	0.25333
+128	-70	0.32422
+129	-70	0.43896
+130	-70	0.50778
+131	-70	0.52074
+132	-70	0.5473
+133	-70	0.57385
+134	-70	0.57576
+135	-70	0.57767
+136	-70	0.5532
+137	-70	0.53776
+138	-70	0.49009
+139	-70	0.41982
+140	-70	0.35543
+141	-70	0.29579
+142	-70	0.22355
+143	-70	0.085469
+144	-70	-0.047505
+145	-70	-0.16643
+146	-70	-0.30747
+147	-70	-0.4298
+148	-70	-0.53198
+149	-70	-0.68582
+150	-70	-0.78285
+151	-70	-0.84027
+152	-70	-0.80252
+153	-70	-0.80192
+154	-70	-0.83522
+155	-70	-1.0443
+156	-70	-1.1022
+157	-70	-1.0971
+158	-70	-1.0877
+159	-70	-0.84331
+160	-70	-0.61486
+161	-70	-0.23025
+162	-70	-0.47685
+163	-70	-0.33574
+164	-70	-0.016012
+165	-70	0
+166	-70	0
+167	-70	0
+168	-70	0
+169	-70	0
+170	-70	0
+171	-70	0
+172	-70	0
+173	-70	0
+174	-70	0
+175	-70	0
+176	-70	0
+177	-70	0
+178	-70	0
+179	-70	0
+180	-70	0
+181	-70	0
+182	-70	0
+183	-70	0
+184	-70	0
+185	-70	0
+186	-70	0
+187	-70	0
+188	-70	0
+189	-70	0
+190	-70	0
+191	-70	0
+192	-70	0
+193	-70	0
+194	-70	0
+195	-70	0
+196	-70	0
+197	-70	0
+198	-70	0
+199	-70	0
+200	-70	0
+201	-70	0
+202	-70	0
+203	-70	0
+204	-70	0
+205	-70	0
+206	-70	0
+207	-70	0
+208	-70	0
+209	-70	0
+210	-70	0
+211	-70	0
+212	-70	0
+213	-70	0
+214	-70	0
+215	-70	0
+216	-70	0
+217	-70	0
+218	-70	0
+219	-70	0
+220	-70	0
+221	-70	0
+222	-70	0
+223	-70	0
+224	-70	0
+225	-70	0
+226	-70	0
+227	-70	0
+228	-70	0
+229	-70	0
+230	-70	0
+231	-70	0
+232	-70	0
+233	-70	0
+234	-70	0
+235	-70	0
+236	-70	0
+237	-70	0
+238	-70	0
+239	-70	0
+240	-70	0
+241	-70	0
+242	-70	0
+243	-70	0
+244	-70	0
+245	-70	0
+246	-70	0
+247	-70	0
+248	-70	0
+249	-70	0
+250	-70	0
+251	-70	0
+252	-70	0
+253	-70	0
+254	-70	0
+255	-70	0
+256	-70	0
+257	-70	0
+258	-70	0
+259	-70	0
+260	-70	0
+261	-70	0
+262	-70	0
+263	-70	0
+264	-70	0
+265	-70	0
+266	-70	0
+267	-70	0
+268	-70	0
+269	-70	0
+270	-70	0
+271	-70	0
+272	-70	0
+273	-70	0
+274	-70	0
+275	-70	0
+276	-70	0
+277	-70	0
+278	-70	0
+279	-70	0
+280	-70	0
+281	-70	0
+282	-70	0
+283	-70	0
+284	-70	0
+285	-70	0
+286	-70	0
+287	-70	-3.343
+288	-70	-8.6918
+289	-70	-8.8444
+290	-70	-8.9158
+291	-70	-3.8802
+292	-70	-7.81
+293	-70	-9.4524
+294	-70	-9.3885
+295	-70	-9.0832
+296	-70	-8.4003
+297	-70	-7.675
+298	-70	-6.9487
+299	-70	-5.7515
+300	-70	-1.6837
+301	-70	0
+302	-70	0
+303	-70	0
+304	-70	0
+305	-70	0
+306	-70	0
+307	-70	0
+308	-70	0
+309	-70	0
+310	-70	0
+311	-70	0
+312	-70	0
+313	-70	0
+314	-70	0
+315	-70	0
+316	-70	0
+317	-70	0
+318	-70	0
+319	-70	0
+320	-70	0
+321	-70	0
+322	-70	0
+323	-70	0
+324	-70	0
+325	-70	0
+326	-70	0
+327	-70	0
+328	-70	0
+329	-70	0
+330	-70	0
+331	-70	0
+332	-70	0
+333	-70	0
+334	-70	0
+335	-70	0
+336	-70	0
+337	-70	0
+338	-70	0
+339	-70	0
+340	-70	0
+341	-70	0
+342	-70	0
+343	-70	0
+344	-70	0
+345	-70	0
+346	-70	0
+347	-70	0
+348	-70	0
+349	-70	0
+350	-70	0.25902
+351	-70	0
+352	-70	0.35672
+353	-70	0
+354	-70	0.52224
+355	-70	0.51384
+356	-70	0.96705
+357	-70	1.8505
+358	-70	1.0649
+359	-70	2.8703
+360	-70	2.4312
+0	-69.5	0.4474
+1	-69.5	0
+2	-69.5	0
+3	-69.5	0
+4	-69.5	0.0024876
+5	-69.5	0
+6	-69.5	0.019903
+7	-69.5	0
+8	-69.5	0.17283
+9	-69.5	0.86516
+10	-69.5	0.25598
+11	-69.5	0
+12	-69.5	0
+13	-69.5	1.0258
+14	-69.5	1.2247
+15	-69.5	0.55277
+16	-69.5	0.59432
+17	-69.5	0.44877
+18	-69.5	0.41958
+19	-69.5	0.4166
+20	-69.5	0
+21	-69.5	0.82181
+22	-69.5	0
+23	-69.5	0
+24	-69.5	0
+25	-69.5	0
+26	-69.5	0
+27	-69.5	0
+28	-69.5	0
+29	-69.5	1.2774
+30	-69.5	2.5595
+31	-69.5	2.3037
+32	-69.5	3.431
+33	-69.5	3.5639
+34	-69.5	3.6856
+35	-69.5	3.8135
+36	-69.5	2.4982
+37	-69.5	1.7988
+38	-69.5	0.75402
+39	-69.5	1.6101
+40	-69.5	2.8414
+41	-69.5	4.0033
+42	-69.5	4.0529
+43	-69.5	3.9482
+44	-69.5	3.8755
+45	-69.5	3.7947
+46	-69.5	3.7989
+47	-69.5	3.8267
+48	-69.5	3.7144
+49	-69.5	3.6445
+50	-69.5	3.5554
+51	-69.5	3.4353
+52	-69.5	3.3277
+53	-69.5	3.2037
+54	-69.5	3.1645
+55	-69.5	3.0521
+56	-69.5	2.9085
+57	-69.5	2.7649
+58	-69.5	2.6563
+59	-69.5	2.539
+60	-69.5	2.459
+61	-69.5	2.389
+62	-69.5	2.2292
+63	-69.5	2.0836
+64	-69.5	2.0183
+65	-69.5	1.9108
+66	-69.5	1.842
+67	-69.5	1.8125
+68	-69.5	1.7352
+69	-69.5	1.6267
+70	-69.5	1.5499
+71	-69.5	1.5003
+72	-69.5	1.4379
+73	-69.5	1.4016
+74	-69.5	0.43458
+75	-69.5	0.34051
+76	-69.5	0.40922
+77	-69.5	0.54313
+78	-69.5	1.2623
+79	-69.5	1.291
+80	-69.5	1.3046
+81	-69.5	1.2855
+82	-69.5	1.2695
+83	-69.5	1.2404
+84	-69.5	1.2466
+85	-69.5	1.2133
+86	-69.5	1.2106
+87	-69.5	1.1934
+88	-69.5	1.1767
+89	-69.5	1.1241
+90	-69.5	1.1024
+91	-69.5	1.0807
+92	-69.5	1.0437
+93	-69.5	0.99255
+94	-69.5	0.9839
+95	-69.5	1.0109
+96	-69.5	1.0382
+97	-69.5	1.0679
+98	-69.5	1.0892
+99	-69.5	1.1057
+100	-69.5	1.0666
+101	-69.5	0.96965
+102	-69.5	0.84748
+103	-69.5	0.70392
+104	-69.5	0.56956
+105	-69.5	0.44893
+106	-69.5	0.2667
+107	-69.5	0.085232
+108	-69.5	-0.13007
+109	-69.5	-0.54114
+110	-69.5	-0.79884
+111	-69.5	-1.0766
+112	-69.5	-1.2989
+113	-69.5	-1.3787
+114	-69.5	-1.1632
+115	-69.5	-1.0723
+116	-69.5	-1.2632
+117	-69.5	-1.5045
+118	-69.5	-1.4946
+119	-69.5	-1.4179
+120	-69.5	-1.157
+121	-69.5	-0.90515
+122	-69.5	-0.66214
+123	-69.5	-0.48914
+124	-69.5	-0.35448
+125	-69.5	-0.20729
+126	-69.5	-0.028876
+127	-69.5	0.1198
+128	-69.5	0.20635
+129	-69.5	0.3256
+130	-69.5	0.44509
+131	-69.5	0.47821
+132	-69.5	0.50477
+133	-69.5	0.52938
+134	-69.5	0.53129
+135	-69.5	0.53323
+136	-69.5	0.53612
+137	-69.5	0.51364
+138	-69.5	0.47969
+139	-69.5	0.41231
+140	-69.5	0.3598
+141	-69.5	0.29766
+142	-69.5	0.19372
+143	-69.5	0.050303
+144	-69.5	-0.083351
+145	-69.5	-0.21058
+146	-69.5	-0.32104
+147	-69.5	-0.40394
+148	-69.5	-0.50938
+149	-69.5	-0.66544
+150	-69.5	-0.82981
+151	-69.5	-0.87602
+152	-69.5	-0.86607
+153	-69.5	-0.79651
+154	-69.5	-0.78703
+155	-69.5	-0.90231
+156	-69.5	-0.92669
+157	-69.5	-0.61848
+158	-69.5	-0.612
+159	-69.5	-0.58411
+160	-69.5	-0.29241
+161	-69.5	0
+162	-69.5	0
+163	-69.5	0
+164	-69.5	0
+165	-69.5	0
+166	-69.5	0
+167	-69.5	0
+168	-69.5	0
+169	-69.5	0
+170	-69.5	0
+171	-69.5	0
+172	-69.5	0
+173	-69.5	0
+174	-69.5	0
+175	-69.5	0
+176	-69.5	0
+177	-69.5	0
+178	-69.5	0
+179	-69.5	0
+180	-69.5	0
+181	-69.5	0
+182	-69.5	0
+183	-69.5	0
+184	-69.5	0
+185	-69.5	0
+186	-69.5	0
+187	-69.5	0
+188	-69.5	0
+189	-69.5	0
+190	-69.5	0
+191	-69.5	0
+192	-69.5	0
+193	-69.5	0
+194	-69.5	0
+195	-69.5	0
+196	-69.5	0
+197	-69.5	0
+198	-69.5	0
+199	-69.5	0
+200	-69.5	0
+201	-69.5	0
+202	-69.5	0
+203	-69.5	0
+204	-69.5	0
+205	-69.5	0
+206	-69.5	0
+207	-69.5	0
+208	-69.5	0
+209	-69.5	0
+210	-69.5	0
+211	-69.5	0
+212	-69.5	0
+213	-69.5	0
+214	-69.5	0
+215	-69.5	0
+216	-69.5	0
+217	-69.5	0
+218	-69.5	0
+219	-69.5	0
+220	-69.5	0
+221	-69.5	0
+222	-69.5	0
+223	-69.5	0
+224	-69.5	0
+225	-69.5	0
+226	-69.5	0
+227	-69.5	0
+228	-69.5	0
+229	-69.5	0
+230	-69.5	0
+231	-69.5	0
+232	-69.5	0
+233	-69.5	0
+234	-69.5	0
+235	-69.5	0
+236	-69.5	0
+237	-69.5	0
+238	-69.5	0
+239	-69.5	0
+240	-69.5	0
+241	-69.5	0
+242	-69.5	0
+243	-69.5	0
+244	-69.5	0
+245	-69.5	0
+246	-69.5	0
+247	-69.5	0
+248	-69.5	0
+249	-69.5	0
+250	-69.5	0
+251	-69.5	0
+252	-69.5	0
+253	-69.5	0
+254	-69.5	0
+255	-69.5	0
+256	-69.5	0
+257	-69.5	0
+258	-69.5	0
+259	-69.5	0
+260	-69.5	0
+261	-69.5	0
+262	-69.5	0
+263	-69.5	0
+264	-69.5	0
+265	-69.5	0
+266	-69.5	0
+267	-69.5	0
+268	-69.5	0
+269	-69.5	0
+270	-69.5	0
+271	-69.5	0
+272	-69.5	0
+273	-69.5	0
+274	-69.5	0
+275	-69.5	0
+276	-69.5	0
+277	-69.5	0
+278	-69.5	0
+279	-69.5	0
+280	-69.5	0
+281	-69.5	0
+282	-69.5	0
+283	-69.5	0
+284	-69.5	0
+285	-69.5	0
+286	-69.5	0
+287	-69.5	-0.10892
+288	-69.5	-5.5792
+289	-69.5	-8.7273
+290	-69.5	-7.2719
+291	-69.5	-1.9779
+292	-69.5	-4.2425
+293	-69.5	-9.7784
+294	-69.5	-9.6222
+295	-69.5	-9.3988
+296	-69.5	-8.8861
+297	-69.5	-8.1777
+298	-69.5	-7.4778
+299	-69.5	-6.6813
+300	-69.5	-2.3297
+301	-69.5	0
+302	-69.5	0
+303	-69.5	0
+304	-69.5	0
+305	-69.5	0
+306	-69.5	0
+307	-69.5	0
+308	-69.5	0
+309	-69.5	0
+310	-69.5	0
+311	-69.5	0
+312	-69.5	0
+313	-69.5	0
+314	-69.5	0
+315	-69.5	0
+316	-69.5	0
+317	-69.5	0
+318	-69.5	0
+319	-69.5	0
+320	-69.5	0
+321	-69.5	0
+322	-69.5	0
+323	-69.5	0
+324	-69.5	0
+325	-69.5	0
+326	-69.5	0
+327	-69.5	0
+328	-69.5	0
+329	-69.5	0
+330	-69.5	0
+331	-69.5	0
+332	-69.5	0
+333	-69.5	0
+334	-69.5	0
+335	-69.5	0
+336	-69.5	0
+337	-69.5	0
+338	-69.5	0
+339	-69.5	0
+340	-69.5	0
+341	-69.5	0
+342	-69.5	0
+343	-69.5	0
+344	-69.5	0
+345	-69.5	0
+346	-69.5	0
+347	-69.5	0
+348	-69.5	0
+349	-69.5	0
+350	-69.5	0
+351	-69.5	0
+352	-69.5	0
+353	-69.5	0
+354	-69.5	0
+355	-69.5	0
+356	-69.5	0.3607
+357	-69.5	0.31468
+358	-69.5	0
+359	-69.5	1.2186
+360	-69.5	0.4474
+0	-69	0
+1	-69	0
+2	-69	0
+3	-69	0
+4	-69	0
+5	-69	0
+6	-69	0
+7	-69	0
+8	-69	0
+9	-69	0
+10	-69	0
+11	-69	0
+12	-69	0
+13	-69	0
+14	-69	0
+15	-69	0
+16	-69	0
+17	-69	0
+18	-69	0
+19	-69	0
+20	-69	0
+21	-69	0
+22	-69	0
+23	-69	0
+24	-69	0
+25	-69	0
+26	-69	0
+27	-69	0
+28	-69	0
+29	-69	0.099252
+30	-69	0.16037
+31	-69	0.13024
+32	-69	2.0682
+33	-69	2.1992
+34	-69	2.9479
+35	-69	2.8112
+36	-69	0.45299
+37	-69	0
+38	-69	0
+39	-69	0
+40	-69	1.0288
+41	-69	3.6956
+42	-69	3.9329
+43	-69	3.9213
+44	-69	3.8612
+45	-69	3.7789
+46	-69	3.7846
+47	-69	3.7888
+48	-69	3.7811
+49	-69	3.7228
+50	-69	3.6485
+51	-69	3.5215
+52	-69	3.4134
+53	-69	3.2788
+54	-69	3.2085
+55	-69	3.1349
+56	-69	2.9824
+57	-69	2.853
+58	-69	2.75
+59	-69	2.6367
+60	-69	2.5284
+61	-69	2.4158
+62	-69	2.3097
+63	-69	2.1707
+64	-69	2.0976
+65	-69	1.9645
+66	-69	1.8803
+67	-69	1.8453
+68	-69	1.7866
+69	-69	1.6779
+70	-69	1.6071
+71	-69	1.5313
+72	-69	1.477
+73	-69	1.0086
+74	-69	0
+75	-69	0
+76	-69	0
+77	-69	0
+78	-69	0.71359
+79	-69	1.3286
+80	-69	1.3513
+81	-69	1.3406
+82	-69	1.3164
+83	-69	1.2846
+84	-69	1.2831
+85	-69	1.2977
+86	-69	1.2801
+87	-69	1.2612
+88	-69	1.2162
+89	-69	1.1613
+90	-69	1.1202
+91	-69	1.0985
+92	-69	1.0564
+93	-69	1.016
+94	-69	1.0065
+95	-69	1.0332
+96	-69	1.0605
+97	-69	1.1059
+98	-69	1.1245
+99	-69	1.1384
+100	-69	1.1101
+101	-69	1.0168
+102	-69	0.89942
+103	-69	0.75801
+104	-69	0.60234
+105	-69	0.47106
+106	-69	0.25624
+107	-69	0.056302
+108	-69	-0.10809
+109	-69	-0.5668
+110	-69	-0.92215
+111	-69	-1.2497
+112	-69	-1.4463
+113	-69	-1.5462
+114	-69	-1.3858
+115	-69	-1.2977
+116	-69	-1.6206
+117	-69	-1.8186
+118	-69	-1.8066
+119	-69	-1.6253
+120	-69	-1.3565
+121	-69	-1.1047
+122	-69	-0.90655
+123	-69	-0.73233
+124	-69	-0.57946
+125	-69	-0.35082
+126	-69	-0.19321
+127	-69	-0.035598
+128	-69	0.098475
+129	-69	0.22473
+130	-69	0.34654
+131	-69	0.41345
+132	-69	0.44684
+133	-69	0.48688
+134	-69	0.49244
+135	-69	0.49648
+136	-69	0.50773
+137	-69	0.48873
+138	-69	0.46676
+139	-69	0.41664
+140	-69	0.36409
+141	-69	0.30457
+142	-69	0.18669
+143	-69	0.037076
+144	-69	-0.057602
+145	-69	-0.1775
+146	-69	-0.27726
+147	-69	-0.36088
+148	-69	-0.48256
+149	-69	-0.64101
+150	-69	-0.75715
+151	-69	-0.68409
+152	-69	-0.8431
+153	-69	-0.76349
+154	-69	-0.73858
+155	-69	-0.59163
+156	-69	-0.45598
+157	-69	-0.022325
+158	-69	-0.16409
+159	-69	-0.099913
+160	-69	0
+161	-69	0
+162	-69	0
+163	-69	0
+164	-69	0
+165	-69	0
+166	-69	0
+167	-69	0
+168	-69	0
+169	-69	0
+170	-69	0
+171	-69	0
+172	-69	0
+173	-69	0
+174	-69	0
+175	-69	0
+176	-69	0
+177	-69	0
+178	-69	0
+179	-69	0
+180	-69	0
+181	-69	0
+182	-69	0
+183	-69	0
+184	-69	0
+185	-69	0
+186	-69	0
+187	-69	0
+188	-69	0
+189	-69	0
+190	-69	0
+191	-69	0
+192	-69	0
+193	-69	0
+194	-69	0
+195	-69	0
+196	-69	0
+197	-69	0
+198	-69	0
+199	-69	0
+200	-69	0
+201	-69	0
+202	-69	0
+203	-69	0
+204	-69	0
+205	-69	0
+206	-69	0
+207	-69	0
+208	-69	0
+209	-69	0
+210	-69	0
+211	-69	0
+212	-69	0
+213	-69	0
+214	-69	0
+215	-69	0
+216	-69	0
+217	-69	0
+218	-69	0
+219	-69	0
+220	-69	0
+221	-69	0
+222	-69	0
+223	-69	0
+224	-69	0
+225	-69	0
+226	-69	0
+227	-69	0
+228	-69	0
+229	-69	0
+230	-69	0
+231	-69	0
+232	-69	0
+233	-69	0
+234	-69	0
+235	-69	0
+236	-69	0
+237	-69	0
+238	-69	0
+239	-69	0
+240	-69	0
+241	-69	0
+242	-69	0
+243	-69	0
+244	-69	0
+245	-69	0
+246	-69	0
+247	-69	0
+248	-69	0
+249	-69	0
+250	-69	0
+251	-69	0
+252	-69	0
+253	-69	0
+254	-69	0
+255	-69	0
+256	-69	0
+257	-69	0
+258	-69	0
+259	-69	0
+260	-69	0
+261	-69	0
+262	-69	0
+263	-69	0
+264	-69	0
+265	-69	0
+266	-69	0
+267	-69	0
+268	-69	0
+269	-69	0
+270	-69	0
+271	-69	0
+272	-69	0
+273	-69	0
+274	-69	0
+275	-69	0
+276	-69	0
+277	-69	0
+278	-69	0
+279	-69	0
+280	-69	0
+281	-69	0
+282	-69	0
+283	-69	0
+284	-69	0
+285	-69	0
+286	-69	0
+287	-69	0
+288	-69	-3.5671
+289	-69	-6.2984
+290	-69	-2.7448
+291	-69	-1.3467
+292	-69	-0.27563
+293	-69	-7.9895
+294	-69	-9.8608
+295	-69	-9.628
+296	-69	-9.3621
+297	-69	-8.6794
+298	-69	-7.9813
+299	-69	-5.8005
+300	-69	-0.82313
+301	-69	0
+302	-69	0
+303	-69	0
+304	-69	0
+305	-69	0
+306	-69	0
+307	-69	0
+308	-69	0
+309	-69	0
+310	-69	0
+311	-69	0
+312	-69	0
+313	-69	0
+314	-69	0
+315	-69	0
+316	-69	0
+317	-69	0
+318	-69	0
+319	-69	0
+320	-69	0
+321	-69	0
+322	-69	0
+323	-69	0
+324	-69	0
+325	-69	0
+326	-69	0
+327	-69	0
+328	-69	0
+329	-69	0
+330	-69	0
+331	-69	0
+332	-69	0
+333	-69	0
+334	-69	0
+335	-69	0
+336	-69	0
+337	-69	0
+338	-69	0
+339	-69	0
+340	-69	0
+341	-69	0
+342	-69	0
+343	-69	0
+344	-69	0
+345	-69	0
+346	-69	0
+347	-69	0
+348	-69	0
+349	-69	0
+350	-69	0
+351	-69	0
+352	-69	0
+353	-69	0
+354	-69	0
+355	-69	0
+356	-69	0
+357	-69	0
+358	-69	0
+359	-69	0
+360	-69	0
+0	-68.5	0
+1	-68.5	0
+2	-68.5	0
+3	-68.5	0
+4	-68.5	0
+5	-68.5	0
+6	-68.5	0
+7	-68.5	0
+8	-68.5	0
+9	-68.5	0
+10	-68.5	0
+11	-68.5	0
+12	-68.5	0
+13	-68.5	0
+14	-68.5	0
+15	-68.5	0
+16	-68.5	0
+17	-68.5	0
+18	-68.5	0
+19	-68.5	0
+20	-68.5	0
+21	-68.5	0
+22	-68.5	0
+23	-68.5	0
+24	-68.5	0
+25	-68.5	0
+26	-68.5	0
+27	-68.5	0
+28	-68.5	0
+29	-68.5	0
+30	-68.5	0
+31	-68.5	0
+32	-68.5	0
+33	-68.5	0.45297
+34	-68.5	0
+35	-68.5	0.68047
+36	-68.5	0
+37	-68.5	0
+38	-68.5	0
+39	-68.5	0
+40	-68.5	0
+41	-68.5	2.2454
+42	-68.5	3.7229
+43	-68.5	3.7949
+44	-68.5	3.7377
+45	-68.5	3.7502
+46	-68.5	3.7369
+47	-68.5	3.7282
+48	-68.5	3.6924
+49	-68.5	3.6597
+50	-68.5	3.6834
+51	-68.5	3.6102
+52	-68.5	3.4958
+53	-68.5	3.3538
+54	-68.5	3.2304
+55	-68.5	3.1397
+56	-68.5	3.0122
+57	-68.5	2.9244
+58	-68.5	2.8373
+59	-68.5	2.6825
+60	-68.5	2.5498
+61	-68.5	2.4352
+62	-68.5	2.3613
+63	-68.5	2.2594
+64	-68.5	2.1288
+65	-68.5	1.9725
+66	-68.5	1.9196
+67	-68.5	1.8708
+68	-68.5	1.8113
+69	-68.5	1.721
+70	-68.5	0.98785
+71	-68.5	0.90268
+72	-68.5	0.88229
+73	-68.5	0.42564
+74	-68.5	0
+75	-68.5	0
+76	-68.5	0
+77	-68.5	0
+78	-68.5	0.23534
+79	-68.5	0.94744
+80	-68.5	1.3698
+81	-68.5	1.3725
+82	-68.5	1.368
+83	-68.5	1.3436
+84	-68.5	1.3363
+85	-68.5	1.3379
+86	-68.5	1.3231
+87	-68.5	1.298
+88	-68.5	1.2557
+89	-68.5	1.2008
+90	-68.5	1.1453
+91	-68.5	1.1156
+92	-68.5	1.0682
+93	-68.5	1.04
+94	-68.5	1.0291
+95	-68.5	1.0556
+96	-68.5	1.0864
+97	-68.5	1.1434
+98	-68.5	1.1572
+99	-68.5	1.1665
+100	-68.5	1.1372
+101	-68.5	1.0641
+102	-68.5	0.95526
+103	-68.5	0.81945
+104	-68.5	0.65536
+105	-68.5	0.4865
+106	-68.5	0.25724
+107	-68.5	0.004853
+108	-68.5	-0.19562
+109	-68.5	-0.5258
+110	-68.5	-1.0247
+111	-68.5	-1.3575
+112	-68.5	-1.5823
+113	-68.5	-1.6315
+114	-68.5	-1.576
+115	-68.5	-1.5197
+116	-68.5	-1.8635
+117	-68.5	-2.1142
+118	-68.5	-2.022
+119	-68.5	-1.6904
+120	-68.5	-1.5186
+121	-68.5	-1.3361
+122	-68.5	-1.151
+123	-68.5	-0.96126
+124	-68.5	-0.74645
+125	-68.5	-0.43264
+126	-68.5	-0.24124
+127	-68.5	-0.084227
+128	-68.5	-0.0011463
+129	-68.5	0.12127
+130	-68.5	0.24334
+131	-68.5	0.34842
+132	-68.5	0.38381
+133	-68.5	0.44401
+134	-68.5	0.45569
+135	-68.5	0.45973
+136	-68.5	0.47536
+137	-68.5	0.4633
+138	-68.5	0.46454
+139	-68.5	0.42078
+140	-68.5	0.36826
+141	-68.5	0.3123
+142	-68.5	0.19884
+143	-68.5	0.081839
+144	-68.5	0.0052374
+145	-68.5	-0.10143
+146	-68.5	-0.22593
+147	-68.5	-0.29718
+148	-68.5	-0.46235
+149	-68.5	-0.41187
+150	-68.5	-0.22563
+151	-68.5	-0.16801
+152	-68.5	-0.48497
+153	-68.5	-0.6955
+154	-68.5	-0.58488
+155	-68.5	-0.417
+156	-68.5	0
+157	-68.5	0
+158	-68.5	0
+159	-68.5	0
+160	-68.5	0
+161	-68.5	0
+162	-68.5	0
+163	-68.5	0
+164	-68.5	0
+165	-68.5	0
+166	-68.5	0
+167	-68.5	0
+168	-68.5	0
+169	-68.5	0
+170	-68.5	0
+171	-68.5	0
+172	-68.5	0
+173	-68.5	0
+174	-68.5	0
+175	-68.5	0
+176	-68.5	0
+177	-68.5	0
+178	-68.5	0
+179	-68.5	0
+180	-68.5	0
+181	-68.5	0
+182	-68.5	0
+183	-68.5	0
+184	-68.5	0
+185	-68.5	0
+186	-68.5	0
+187	-68.5	0
+188	-68.5	0
+189	-68.5	0
+190	-68.5	0
+191	-68.5	0
+192	-68.5	0
+193	-68.5	0
+194	-68.5	0
+195	-68.5	0
+196	-68.5	0
+197	-68.5	0
+198	-68.5	0
+199	-68.5	0
+200	-68.5	0
+201	-68.5	0
+202	-68.5	0
+203	-68.5	0
+204	-68.5	0
+205	-68.5	0
+206	-68.5	0
+207	-68.5	0
+208	-68.5	0
+209	-68.5	0
+210	-68.5	0
+211	-68.5	0
+212	-68.5	0
+213	-68.5	0
+214	-68.5	0
+215	-68.5	0
+216	-68.5	0
+217	-68.5	0
+218	-68.5	0
+219	-68.5	0
+220	-68.5	0
+221	-68.5	0
+222	-68.5	0
+223	-68.5	0
+224	-68.5	0
+225	-68.5	0
+226	-68.5	0
+227	-68.5	0
+228	-68.5	0
+229	-68.5	0
+230	-68.5	0
+231	-68.5	0
+232	-68.5	0
+233	-68.5	0
+234	-68.5	0
+235	-68.5	0
+236	-68.5	0
+237	-68.5	0
+238	-68.5	0
+239	-68.5	0
+240	-68.5	0
+241	-68.5	0
+242	-68.5	0
+243	-68.5	0
+244	-68.5	0
+245	-68.5	0
+246	-68.5	0
+247	-68.5	0
+248	-68.5	0
+249	-68.5	0
+250	-68.5	0
+251	-68.5	0
+252	-68.5	0
+253	-68.5	0
+254	-68.5	0
+255	-68.5	0
+256	-68.5	0
+257	-68.5	0
+258	-68.5	0
+259	-68.5	0
+260	-68.5	0
+261	-68.5	0
+262	-68.5	0
+263	-68.5	0
+264	-68.5	0
+265	-68.5	0
+266	-68.5	0
+267	-68.5	0
+268	-68.5	0
+269	-68.5	0
+270	-68.5	0
+271	-68.5	0
+272	-68.5	0
+273	-68.5	0
+274	-68.5	0
+275	-68.5	0
+276	-68.5	0
+277	-68.5	0
+278	-68.5	0
+279	-68.5	0
+280	-68.5	0
+281	-68.5	0
+282	-68.5	0
+283	-68.5	0
+284	-68.5	0
+285	-68.5	0
+286	-68.5	0
+287	-68.5	0
+288	-68.5	-2.8686
+289	-68.5	-2.6024
+290	-68.5	0
+291	-68.5	0
+292	-68.5	-1.6354
+293	-68.5	-8.7805
+294	-68.5	-10.102
+295	-68.5	-9.8441
+296	-68.5	-9.6698
+297	-68.5	-9.1739
+298	-68.5	-8.4744
+299	-68.5	-4.9779
+300	-68.5	0
+301	-68.5	0
+302	-68.5	0
+303	-68.5	0
+304	-68.5	0
+305	-68.5	0
+306	-68.5	0
+307	-68.5	0
+308	-68.5	0
+309	-68.5	0
+310	-68.5	0
+311	-68.5	0
+312	-68.5	0
+313	-68.5	0
+314	-68.5	0
+315	-68.5	0
+316	-68.5	0
+317	-68.5	0
+318	-68.5	0
+319	-68.5	0
+320	-68.5	0
+321	-68.5	0
+322	-68.5	0
+323	-68.5	0
+324	-68.5	0
+325	-68.5	0
+326	-68.5	0
+327	-68.5	0
+328	-68.5	0
+329	-68.5	0
+330	-68.5	0
+331	-68.5	0
+332	-68.5	0
+333	-68.5	0
+334	-68.5	0
+335	-68.5	0
+336	-68.5	0
+337	-68.5	0
+338	-68.5	0
+339	-68.5	0
+340	-68.5	0
+341	-68.5	0
+342	-68.5	0
+343	-68.5	0
+344	-68.5	0
+345	-68.5	0
+346	-68.5	0
+347	-68.5	0
+348	-68.5	0
+349	-68.5	0
+350	-68.5	0
+351	-68.5	0
+352	-68.5	0
+353	-68.5	0
+354	-68.5	0
+355	-68.5	0
+356	-68.5	0
+357	-68.5	0
+358	-68.5	0
+359	-68.5	0
+360	-68.5	0
+0	-68	0
+1	-68	0
+2	-68	0
+3	-68	0
+4	-68	0
+5	-68	0
+6	-68	0
+7	-68	0
+8	-68	0
+9	-68	0
+10	-68	0
+11	-68	0
+12	-68	0
+13	-68	0
+14	-68	0
+15	-68	0
+16	-68	0
+17	-68	0
+18	-68	0
+19	-68	0
+20	-68	0
+21	-68	0
+22	-68	0
+23	-68	0
+24	-68	0
+25	-68	0
+26	-68	0
+27	-68	0
+28	-68	0
+29	-68	0
+30	-68	0
+31	-68	0
+32	-68	0
+33	-68	0
+34	-68	0
+35	-68	0
+36	-68	0
+37	-68	0
+38	-68	0
+39	-68	0
+40	-68	0
+41	-68	1.1117
+42	-68	0
+43	-68	0.23377
+44	-68	1.7978
+45	-68	3.7235
+46	-68	3.6674
+47	-68	3.6244
+48	-68	3.1854
+49	-68	3.6022
+50	-68	3.6073
+51	-68	3.6219
+52	-68	3.5089
+53	-68	3.348
+54	-68	3.2105
+55	-68	3.1301
+56	-68	3.0419
+57	-68	2.9949
+58	-68	2.8671
+59	-68	2.6863
+60	-68	2.5326
+61	-68	2.4437
+62	-68	2.3758
+63	-68	2.2923
+64	-68	2.1502
+65	-68	1.8554
+66	-68	1.2899
+67	-68	1.5117
+68	-68	0.7785
+69	-68	0.75791
+70	-68	0.57589
+71	-68	0
+72	-68	0.10174
+73	-68	0
+74	-68	0
+75	-68	0
+76	-68	0
+77	-68	0
+78	-68	0
+79	-68	0.17961
+80	-68	0.62086
+81	-68	0.75012
+82	-68	1.4055
+83	-68	1.3959
+84	-68	1.3811
+85	-68	1.3646
+86	-68	1.3594
+87	-68	1.3287
+88	-68	1.2844
+89	-68	1.2367
+90	-68	1.182
+91	-68	1.1268
+92	-68	1.0755
+93	-68	1.0386
+94	-68	1.0517
+95	-68	1.0782
+96	-68	1.1135
+97	-68	1.1387
+98	-68	1.1727
+99	-68	1.1913
+100	-68	1.1539
+101	-68	1.1102
+102	-68	1.0024
+103	-68	0.8809
+104	-68	0.709
+105	-68	0.51348
+106	-68	0.29372
+107	-68	-0.0043785
+108	-68	-0.27078
+109	-68	-0.52558
+110	-68	-1.0508
+111	-68	-1.4281
+112	-68	-1.6744
+113	-68	-1.7167
+114	-68	-1.7271
+115	-68	-1.6657
+116	-68	-2.0173
+117	-68	-2.3534
+118	-68	-2.1424
+119	-68	-1.8105
+120	-68	-1.5452
+121	-68	-1.3953
+122	-68	-1.207
+123	-68	-1.0885
+124	-68	-0.883
+125	-68	-0.54457
+126	-68	-0.30035
+127	-68	-0.15844
+128	-68	-0.070442
+129	-68	0.017806
+130	-68	0.14014
+131	-68	0.26627
+132	-68	0.34782
+133	-68	0.40263
+134	-68	0.41694
+135	-68	0.42683
+136	-68	0.44299
+137	-68	0.4565
+138	-68	0.46489
+139	-68	0.41999
+140	-68	0.37222
+141	-68	0.33458
+142	-68	0.24895
+143	-68	0.17104
+144	-68	0.091323
+145	-68	-0.023223
+146	-68	-0.15133
+147	-68	-0.07057
+148	-68	-0.17364
+149	-68	0
+150	-68	0
+151	-68	0
+152	-68	-0.13526
+153	-68	-0.38412
+154	-68	-0.11691
+155	-68	-0.18624
+156	-68	0
+157	-68	0
+158	-68	0
+159	-68	0
+160	-68	0
+161	-68	0
+162	-68	0
+163	-68	0
+164	-68	0
+165	-68	0
+166	-68	0
+167	-68	0
+168	-68	0
+169	-68	0
+170	-68	0
+171	-68	0
+172	-68	0
+173	-68	0
+174	-68	0
+175	-68	0
+176	-68	0
+177	-68	0
+178	-68	0
+179	-68	0
+180	-68	0
+181	-68	0
+182	-68	0
+183	-68	0
+184	-68	0
+185	-68	0
+186	-68	0
+187	-68	0
+188	-68	0
+189	-68	0
+190	-68	0
+191	-68	0
+192	-68	0
+193	-68	0
+194	-68	0
+195	-68	0
+196	-68	0
+197	-68	0
+198	-68	0
+199	-68	0
+200	-68	0
+201	-68	0
+202	-68	0
+203	-68	0
+204	-68	0
+205	-68	0
+206	-68	0
+207	-68	0
+208	-68	0
+209	-68	0
+210	-68	0
+211	-68	0
+212	-68	0
+213	-68	0
+214	-68	0
+215	-68	0
+216	-68	0
+217	-68	0
+218	-68	0
+219	-68	0
+220	-68	0
+221	-68	0
+222	-68	0
+223	-68	0
+224	-68	0
+225	-68	0
+226	-68	0
+227	-68	0
+228	-68	0
+229	-68	0
+230	-68	0
+231	-68	0
+232	-68	0
+233	-68	0
+234	-68	0
+235	-68	0
+236	-68	0
+237	-68	0
+238	-68	0
+239	-68	0
+240	-68	0
+241	-68	0
+242	-68	0
+243	-68	0
+244	-68	0
+245	-68	0
+246	-68	0
+247	-68	0
+248	-68	0
+249	-68	0
+250	-68	0
+251	-68	0
+252	-68	0
+253	-68	0
+254	-68	0
+255	-68	0
+256	-68	0
+257	-68	0
+258	-68	0
+259	-68	0
+260	-68	0
+261	-68	0
+262	-68	0
+263	-68	0
+264	-68	0
+265	-68	0
+266	-68	0
+267	-68	0
+268	-68	0
+269	-68	0
+270	-68	0
+271	-68	0
+272	-68	0
+273	-68	0
+274	-68	0
+275	-68	0
+276	-68	0
+277	-68	0
+278	-68	0
+279	-68	0
+280	-68	0
+281	-68	0
+282	-68	0
+283	-68	0
+284	-68	0
+285	-68	0
+286	-68	0
+287	-68	0
+288	-68	0
+289	-68	0
+290	-68	0
+291	-68	0
+292	-68	-3.2558
+293	-68	-10.011
+294	-68	-10.184
+295	-68	-10.076
+296	-68	-9.8731
+297	-68	-9.5445
+298	-68	-8.9587
+299	-68	-4.4111
+300	-68	0
+301	-68	0
+302	-68	0
+303	-68	0
+304	-68	0
+305	-68	0
+306	-68	0
+307	-68	0
+308	-68	0
+309	-68	0
+310	-68	0
+311	-68	0
+312	-68	0
+313	-68	0
+314	-68	0
+315	-68	0
+316	-68	0
+317	-68	0
+318	-68	0
+319	-68	0
+320	-68	0
+321	-68	0
+322	-68	0
+323	-68	0
+324	-68	0
+325	-68	0
+326	-68	0
+327	-68	0
+328	-68	0
+329	-68	0
+330	-68	0
+331	-68	0
+332	-68	0
+333	-68	0
+334	-68	0
+335	-68	0
+336	-68	0
+337	-68	0
+338	-68	0
+339	-68	0
+340	-68	0
+341	-68	0
+342	-68	0
+343	-68	0
+344	-68	0
+345	-68	0
+346	-68	0
+347	-68	0
+348	-68	0
+349	-68	0
+350	-68	0
+351	-68	0
+352	-68	0
+353	-68	0
+354	-68	0
+355	-68	0
+356	-68	0
+357	-68	0
+358	-68	0
+359	-68	0
+360	-68	0
+0	-67.5	0
+1	-67.5	0
+2	-67.5	0
+3	-67.5	0
+4	-67.5	0
+5	-67.5	0
+6	-67.5	0
+7	-67.5	0
+8	-67.5	0
+9	-67.5	0
+10	-67.5	0
+11	-67.5	0
+12	-67.5	0
+13	-67.5	0
+14	-67.5	0
+15	-67.5	0
+16	-67.5	0
+17	-67.5	0
+18	-67.5	0
+19	-67.5	0
+20	-67.5	0
+21	-67.5	0
+22	-67.5	0
+23	-67.5	0
+24	-67.5	0
+25	-67.5	0
+26	-67.5	0
+27	-67.5	0
+28	-67.5	0
+29	-67.5	0
+30	-67.5	0
+31	-67.5	0
+32	-67.5	0
+33	-67.5	0
+34	-67.5	0
+35	-67.5	0
+36	-67.5	0
+37	-67.5	0
+38	-67.5	0
+39	-67.5	0
+40	-67.5	0
+41	-67.5	0
+42	-67.5	0
+43	-67.5	0
+44	-67.5	0
+45	-67.5	1.6014
+46	-67.5	1.2023
+47	-67.5	3.0162
+48	-67.5	1.2793
+49	-67.5	3.5048
+50	-67.5	3.5212
+51	-67.5	3.5338
+52	-67.5	3.479
+53	-67.5	3.3151
+54	-67.5	3.1835
+55	-67.5	3.0986
+56	-67.5	3.0315
+57	-67.5	2.2793
+58	-67.5	2.8403
+59	-67.5	2.1406
+60	-67.5	0.83504
+61	-67.5	1.6909
+62	-67.5	1.349
+63	-67.5	1.0654
+64	-67.5	1.875
+65	-67.5	1.3049
+66	-67.5	0.42991
+67	-67.5	0.46505
+68	-67.5	0
+69	-67.5	0
+70	-67.5	0
+71	-67.5	0
+72	-67.5	0
+73	-67.5	0
+74	-67.5	0
+75	-67.5	0
+76	-67.5	0
+77	-67.5	0
+78	-67.5	0
+79	-67.5	0
+80	-67.5	0
+81	-67.5	0.57337
+82	-67.5	1.421
+83	-67.5	1.41
+84	-67.5	1.3986
+85	-67.5	1.3837
+86	-67.5	1.3769
+87	-67.5	1.357
+88	-67.5	1.3108
+89	-67.5	1.2571
+90	-67.5	1.2002
+91	-67.5	1.1347
+92	-67.5	1.0764
+93	-67.5	1.0119
+94	-67.5	0.73697
+95	-67.5	0.81042
+96	-67.5	1.1026
+97	-67.5	1.1288
+98	-67.5	1.1607
+99	-67.5	1.192
+100	-67.5	1.1753
+101	-67.5	1.1426
+102	-67.5	1.0513
+103	-67.5	0.9363
+104	-67.5	0.78077
+105	-67.5	0.60385
+106	-67.5	0.32746
+107	-67.5	0.036504
+108	-67.5	-0.28639
+109	-67.5	-0.58324
+110	-67.5	-0.99919
+111	-67.5	-1.3508
+112	-67.5	-1.512
+113	-67.5	-1.738
+114	-67.5	-1.8311
+115	-67.5	-1.7748
+116	-67.5	-2.1495
+117	-67.5	-2.2771
+118	-67.5	-2.1337
+119	-67.5	-1.6533
+120	-67.5	-1.2755
+121	-67.5	-1.4447
+122	-67.5	-1.3032
+123	-67.5	-1.1553
+124	-67.5	-0.89458
+125	-67.5	-0.62009
+126	-67.5	-0.38531
+127	-67.5	-0.2093
+128	-67.5	-0.085593
+129	-67.5	0.022069
+130	-67.5	0.099095
+131	-67.5	0.21243
+132	-67.5	0.32875
+133	-67.5	0.35885
+134	-67.5	0.38762
+135	-67.5	0.43359
+136	-67.5	0.45027
+137	-67.5	0.46078
+138	-67.5	0.47041
+139	-67.5	0.42359
+140	-67.5	0.37287
+141	-67.5	0.36598
+142	-67.5	0.32541
+143	-67.5	0.25894
+144	-67.5	0.18402
+145	-67.5	0.057106
+146	-67.5	-0.056531
+147	-67.5	0
+148	-67.5	0
+149	-67.5	0
+150	-67.5	0
+151	-67.5	0
+152	-67.5	0
+153	-67.5	0
+154	-67.5	0
+155	-67.5	0
+156	-67.5	0
+157	-67.5	0
+158	-67.5	0
+159	-67.5	0
+160	-67.5	0
+161	-67.5	0
+162	-67.5	0
+163	-67.5	0
+164	-67.5	0
+165	-67.5	0
+166	-67.5	0
+167	-67.5	0
+168	-67.5	0
+169	-67.5	0
+170	-67.5	0
+171	-67.5	0
+172	-67.5	0
+173	-67.5	0
+174	-67.5	0
+175	-67.5	0
+176	-67.5	0
+177	-67.5	0
+178	-67.5	0
+179	-67.5	0
+180	-67.5	0
+181	-67.5	0
+182	-67.5	0
+183	-67.5	0
+184	-67.5	0
+185	-67.5	0
+186	-67.5	0
+187	-67.5	0
+188	-67.5	0
+189	-67.5	0
+190	-67.5	0
+191	-67.5	0
+192	-67.5	0
+193	-67.5	0
+194	-67.5	0
+195	-67.5	0
+196	-67.5	0
+197	-67.5	0
+198	-67.5	0
+199	-67.5	0
+200	-67.5	0
+201	-67.5	0
+202	-67.5	0
+203	-67.5	0
+204	-67.5	0
+205	-67.5	0
+206	-67.5	0
+207	-67.5	0
+208	-67.5	0
+209	-67.5	0
+210	-67.5	0
+211	-67.5	0
+212	-67.5	0
+213	-67.5	0
+214	-67.5	0
+215	-67.5	0
+216	-67.5	0
+217	-67.5	0
+218	-67.5	0
+219	-67.5	0
+220	-67.5	0
+221	-67.5	0
+222	-67.5	0
+223	-67.5	0
+224	-67.5	0
+225	-67.5	0
+226	-67.5	0
+227	-67.5	0
+228	-67.5	0
+229	-67.5	0
+230	-67.5	0
+231	-67.5	0
+232	-67.5	0
+233	-67.5	0
+234	-67.5	0
+235	-67.5	0
+236	-67.5	0
+237	-67.5	0
+238	-67.5	0
+239	-67.5	0
+240	-67.5	0
+241	-67.5	0
+242	-67.5	0
+243	-67.5	0
+244	-67.5	0
+245	-67.5	0
+246	-67.5	0
+247	-67.5	0
+248	-67.5	0
+249	-67.5	0
+250	-67.5	0
+251	-67.5	0
+252	-67.5	0
+253	-67.5	0
+254	-67.5	0
+255	-67.5	0
+256	-67.5	0
+257	-67.5	0
+258	-67.5	0
+259	-67.5	0
+260	-67.5	0
+261	-67.5	0
+262	-67.5	0
+263	-67.5	0
+264	-67.5	0
+265	-67.5	0
+266	-67.5	0
+267	-67.5	0
+268	-67.5	0
+269	-67.5	0
+270	-67.5	0
+271	-67.5	0
+272	-67.5	0
+273	-67.5	0
+274	-67.5	0
+275	-67.5	0
+276	-67.5	0
+277	-67.5	0
+278	-67.5	0
+279	-67.5	0
+280	-67.5	0
+281	-67.5	0
+282	-67.5	0
+283	-67.5	0
+284	-67.5	0
+285	-67.5	0
+286	-67.5	0
+287	-67.5	0
+288	-67.5	0
+289	-67.5	0
+290	-67.5	0
+291	-67.5	-0.73452
+292	-67.5	-6.464
+293	-67.5	-4.7141
+294	-67.5	-10.202
+295	-67.5	-10.203
+296	-67.5	-10.107
+297	-67.5	-9.8149
+298	-67.5	-9.3704
+299	-67.5	-4.9498
+300	-67.5	0
+301	-67.5	0
+302	-67.5	0
+303	-67.5	0
+304	-67.5	0
+305	-67.5	0
+306	-67.5	0
+307	-67.5	0
+308	-67.5	0
+309	-67.5	0
+310	-67.5	0
+311	-67.5	0
+312	-67.5	0
+313	-67.5	0
+314	-67.5	0
+315	-67.5	0
+316	-67.5	0
+317	-67.5	0
+318	-67.5	0
+319	-67.5	0
+320	-67.5	0
+321	-67.5	0
+322	-67.5	0
+323	-67.5	0
+324	-67.5	0
+325	-67.5	0
+326	-67.5	0
+327	-67.5	0
+328	-67.5	0
+329	-67.5	0
+330	-67.5	0
+331	-67.5	0
+332	-67.5	0
+333	-67.5	0
+334	-67.5	0
+335	-67.5	0
+336	-67.5	0
+337	-67.5	0
+338	-67.5	0
+339	-67.5	0
+340	-67.5	0
+341	-67.5	0
+342	-67.5	0
+343	-67.5	0
+344	-67.5	0
+345	-67.5	0
+346	-67.5	0
+347	-67.5	0
+348	-67.5	0
+349	-67.5	0
+350	-67.5	0
+351	-67.5	0
+352	-67.5	0
+353	-67.5	0
+354	-67.5	0
+355	-67.5	0
+356	-67.5	0
+357	-67.5	0
+358	-67.5	0
+359	-67.5	0
+360	-67.5	0
+0	-67	0
+1	-67	0
+2	-67	0
+3	-67	0
+4	-67	0
+5	-67	0
+6	-67	0
+7	-67	0
+8	-67	0
+9	-67	0
+10	-67	0
+11	-67	0
+12	-67	0
+13	-67	0
+14	-67	0
+15	-67	0
+16	-67	0
+17	-67	0
+18	-67	0
+19	-67	0
+20	-67	0
+21	-67	0
+22	-67	0
+23	-67	0
+24	-67	0
+25	-67	0
+26	-67	0
+27	-67	0
+28	-67	0
+29	-67	0
+30	-67	0
+31	-67	0
+32	-67	0
+33	-67	0
+34	-67	0
+35	-67	0
+36	-67	0
+37	-67	0
+38	-67	0
+39	-67	0
+40	-67	0
+41	-67	0
+42	-67	0
+43	-67	0
+44	-67	0
+45	-67	0
+46	-67	1.2439
+47	-67	1.5633
+48	-67	0.19588
+49	-67	1.8932
+50	-67	1.5238
+51	-67	3.3733
+52	-67	3.3456
+53	-67	3.2783
+54	-67	3.166
+55	-67	3.0804
+56	-67	2.9478
+57	-67	1.4667
+58	-67	1.2127
+59	-67	0.92951
+60	-67	0
+61	-67	0
+62	-67	0
+63	-67	0
+64	-67	0.71019
+65	-67	0.2605
+66	-67	0
+67	-67	0
+68	-67	0
+69	-67	0
+70	-67	0
+71	-67	0
+72	-67	0
+73	-67	0
+74	-67	0
+75	-67	0
+76	-67	0
+77	-67	0
+78	-67	0
+79	-67	0
+80	-67	0
+81	-67	0.38317
+82	-67	0.39768
+83	-67	0.94356
+84	-67	0.77504
+85	-67	1.209
+86	-67	1.3894
+87	-67	1.372
+88	-67	1.2098
+89	-67	0.85759
+90	-67	1.1493
+91	-67	1.1296
+92	-67	0.61787
+93	-67	0.84799
+94	-67	0.49732
+95	-67	0.59617
+96	-67	1.0871
+97	-67	1.1189
+98	-67	1.1488
+99	-67	1.1857
+100	-67	1.1979
+101	-67	1.1842
+102	-67	1.1107
+103	-67	0.99804
+104	-67	0.86773
+105	-67	0.68928
+106	-67	0.47617
+107	-67	0.17135
+108	-67	-0.24509
+109	-67	-0.4459
+110	-67	-0.73858
+111	-67	-1.1906
+112	-67	-1.3364
+113	-67	-1.6766
+114	-67	-1.8667
+115	-67	-1.9303
+116	-67	-2.0754
+117	-67	-2.0454
+118	-67	-1.9267
+119	-67	-0.64856
+120	-67	-0.68117
+121	-67	-0.82625
+122	-67	-0.83508
+123	-67	-1.0172
+124	-67	-0.79683
+125	-67	-0.69383
+126	-67	-0.41725
+127	-67	-0.23992
+128	-67	-0.098064
+129	-67	0.035613
+130	-67	0.13258
+131	-67	0.16901
+132	-67	0.28565
+133	-67	0.32242
+134	-67	0.3767
+135	-67	0.43287
+136	-67	0.39155
+137	-67	0.42393
+138	-67	0.46075
+139	-67	0.37881
+140	-67	0.19383
+141	-67	0.1681
+142	-67	0.33105
+143	-67	0.32063
+144	-67	0.10834
+145	-67	0.026068
+146	-67	0.042585
+147	-67	0
+148	-67	0
+149	-67	0
+150	-67	0
+151	-67	0
+152	-67	0
+153	-67	0
+154	-67	0
+155	-67	0
+156	-67	0
+157	-67	0
+158	-67	0
+159	-67	0
+160	-67	0
+161	-67	0
+162	-67	0
+163	-67	0
+164	-67	0
+165	-67	0
+166	-67	0
+167	-67	0
+168	-67	0
+169	-67	0
+170	-67	0
+171	-67	0
+172	-67	0
+173	-67	0
+174	-67	0
+175	-67	0
+176	-67	0
+177	-67	0
+178	-67	0
+179	-67	0
+180	-67	0
+181	-67	0
+182	-67	0
+183	-67	0
+184	-67	0
+185	-67	0
+186	-67	0
+187	-67	0
+188	-67	0
+189	-67	0
+190	-67	0
+191	-67	0
+192	-67	0
+193	-67	0
+194	-67	0
+195	-67	0
+196	-67	0
+197	-67	0
+198	-67	0
+199	-67	0
+200	-67	0
+201	-67	0
+202	-67	0
+203	-67	0
+204	-67	0
+205	-67	0
+206	-67	0
+207	-67	0
+208	-67	0
+209	-67	0
+210	-67	0
+211	-67	0
+212	-67	0
+213	-67	0
+214	-67	0
+215	-67	0
+216	-67	0
+217	-67	0
+218	-67	0
+219	-67	0
+220	-67	0
+221	-67	0
+222	-67	0
+223	-67	0
+224	-67	0
+225	-67	0
+226	-67	0
+227	-67	0
+228	-67	0
+229	-67	0
+230	-67	0
+231	-67	0
+232	-67	0
+233	-67	0
+234	-67	0
+235	-67	0
+236	-67	0
+237	-67	0
+238	-67	0
+239	-67	0
+240	-67	0
+241	-67	0
+242	-67	0
+243	-67	0
+244	-67	0
+245	-67	0
+246	-67	0
+247	-67	0
+248	-67	0
+249	-67	0
+250	-67	0
+251	-67	0
+252	-67	0
+253	-67	0
+254	-67	0
+255	-67	0
+256	-67	0
+257	-67	0
+258	-67	0
+259	-67	0
+260	-67	0
+261	-67	0
+262	-67	0
+263	-67	0
+264	-67	0
+265	-67	0
+266	-67	0
+267	-67	0
+268	-67	0
+269	-67	0
+270	-67	0
+271	-67	0
+272	-67	0
+273	-67	0
+274	-67	0
+275	-67	0
+276	-67	0
+277	-67	0
+278	-67	0
+279	-67	0
+280	-67	0
+281	-67	0
+282	-67	0
+283	-67	0
+284	-67	0
+285	-67	0
+286	-67	0
+287	-67	0
+288	-67	0
+289	-67	0
+290	-67	0
+291	-67	-3.5178
+292	-67	-8.0251
+293	-67	0
+294	-67	-10.179
+295	-67	-10.345
+296	-67	-10.325
+297	-67	-10.07
+298	-67	-9.6835
+299	-67	-8.3221
+300	-67	-2.0784
+301	-67	0
+302	-67	0
+303	-67	0
+304	-67	0
+305	-67	0
+306	-67	0
+307	-67	0
+308	-67	0
+309	-67	0
+310	-67	0
+311	-67	0
+312	-67	0
+313	-67	0
+314	-67	0
+315	-67	0
+316	-67	0
+317	-67	0
+318	-67	0
+319	-67	0
+320	-67	0
+321	-67	0
+322	-67	0
+323	-67	0
+324	-67	0
+325	-67	0
+326	-67	0
+327	-67	0
+328	-67	0
+329	-67	0
+330	-67	0
+331	-67	0
+332	-67	0
+333	-67	0
+334	-67	0
+335	-67	0
+336	-67	0
+337	-67	0
+338	-67	0
+339	-67	0
+340	-67	0
+341	-67	0
+342	-67	0
+343	-67	0
+344	-67	0
+345	-67	0
+346	-67	0
+347	-67	0
+348	-67	0
+349	-67	0
+350	-67	0
+351	-67	0
+352	-67	0
+353	-67	0
+354	-67	0
+355	-67	0
+356	-67	0
+357	-67	0
+358	-67	0
+359	-67	0
+360	-67	0
+0	-66.5	0
+1	-66.5	0
+2	-66.5	0
+3	-66.5	0
+4	-66.5	0
+5	-66.5	0
+6	-66.5	0
+7	-66.5	0
+8	-66.5	0
+9	-66.5	0
+10	-66.5	0
+11	-66.5	0
+12	-66.5	0
+13	-66.5	0
+14	-66.5	0
+15	-66.5	0
+16	-66.5	0
+17	-66.5	0
+18	-66.5	0
+19	-66.5	0
+20	-66.5	0
+21	-66.5	0
+22	-66.5	0
+23	-66.5	0
+24	-66.5	0
+25	-66.5	0
+26	-66.5	0
+27	-66.5	0
+28	-66.5	0
+29	-66.5	0
+30	-66.5	0
+31	-66.5	0
+32	-66.5	0
+33	-66.5	0
+34	-66.5	0
+35	-66.5	0
+36	-66.5	0
+37	-66.5	0
+38	-66.5	0
+39	-66.5	0
+40	-66.5	0
+41	-66.5	0
+42	-66.5	0
+43	-66.5	0
+44	-66.5	0
+45	-66.5	0
+46	-66.5	0
+47	-66.5	0
+48	-66.5	0
+49	-66.5	0.24804
+50	-66.5	0
+51	-66.5	2.1482
+52	-66.5	3.1961
+53	-66.5	3.1722
+54	-66.5	3.0996
+55	-66.5	2.9695
+56	-66.5	0.97036
+57	-66.5	1.1314
+58	-66.5	0
+59	-66.5	0
+60	-66.5	0
+61	-66.5	0
+62	-66.5	0
+63	-66.5	0
+64	-66.5	0
+65	-66.5	0
+66	-66.5	0
+67	-66.5	0
+68	-66.5	0
+69	-66.5	0
+70	-66.5	0
+71	-66.5	0
+72	-66.5	0
+73	-66.5	0
+74	-66.5	0
+75	-66.5	0
+76	-66.5	0
+77	-66.5	0
+78	-66.5	0
+79	-66.5	0
+80	-66.5	0
+81	-66.5	0
+82	-66.5	0
+83	-66.5	0.1068
+84	-66.5	0.10764
+85	-66.5	0.70573
+86	-66.5	1.0967
+87	-66.5	1.201
+88	-66.5	0.71955
+89	-66.5	0.1531
+90	-66.5	0.4487
+91	-66.5	0.81382
+92	-66.5	0.27209
+93	-66.5	0.59036
+94	-66.5	0.29554
+95	-66.5	0.53895
+96	-66.5	1.0736
+97	-66.5	1.1102
+98	-66.5	1.1394
+99	-66.5	1.1773
+100	-66.5	1.1953
+101	-66.5	1.2312
+102	-66.5	1.1646
+103	-66.5	1.0616
+104	-66.5	0.85805
+105	-66.5	0.35382
+106	-66.5	0.28966
+107	-66.5	0.061149
+108	-66.5	-0.12648
+109	-66.5	-0.1336
+110	-66.5	-0.21529
+111	-66.5	-0.66475
+112	-66.5	-1.0953
+113	-66.5	-1.3957
+114	-66.5	-1.0927
+115	-66.5	-1.6195
+116	-66.5	-1.6414
+117	-66.5	-0.90217
+118	-66.5	-0.6895
+119	-66.5	0
+120	-66.5	-0.086834
+121	-66.5	0
+122	-66.5	-0.077731
+123	-66.5	-0.5663
+124	-66.5	-0.49086
+125	-66.5	-0.28053
+126	-66.5	-0.22292
+127	-66.5	-0.065907
+128	-66.5	-0.015207
+129	-66.5	0.018611
+130	-66.5	0.10379
+131	-66.5	0.22082
+132	-66.5	0.20196
+133	-66.5	0.31945
+134	-66.5	0.39358
+135	-66.5	0.45115
+136	-66.5	0.21779
+137	-66.5	0.26717
+138	-66.5	0.3141
+139	-66.5	0.13684
+140	-66.5	0.0098482
+141	-66.5	0
+142	-66.5	0.073034
+143	-66.5	0.12092
+144	-66.5	0.005397
+145	-66.5	0
+146	-66.5	0.005793
+147	-66.5	0
+148	-66.5	0
+149	-66.5	0
+150	-66.5	0
+151	-66.5	0
+152	-66.5	0
+153	-66.5	0
+154	-66.5	0
+155	-66.5	0
+156	-66.5	0
+157	-66.5	0
+158	-66.5	0
+159	-66.5	0
+160	-66.5	0
+161	-66.5	0
+162	-66.5	0
+163	-66.5	0
+164	-66.5	0
+165	-66.5	0
+166	-66.5	0
+167	-66.5	0
+168	-66.5	0
+169	-66.5	0
+170	-66.5	0
+171	-66.5	0
+172	-66.5	0
+173	-66.5	0
+174	-66.5	0
+175	-66.5	0
+176	-66.5	0
+177	-66.5	0
+178	-66.5	0
+179	-66.5	0
+180	-66.5	0
+181	-66.5	0
+182	-66.5	0
+183	-66.5	0
+184	-66.5	0
+185	-66.5	0
+186	-66.5	0
+187	-66.5	0
+188	-66.5	0
+189	-66.5	0
+190	-66.5	0
+191	-66.5	0
+192	-66.5	0
+193	-66.5	0
+194	-66.5	0
+195	-66.5	0
+196	-66.5	0
+197	-66.5	0
+198	-66.5	0
+199	-66.5	0
+200	-66.5	0
+201	-66.5	0
+202	-66.5	0
+203	-66.5	0
+204	-66.5	0
+205	-66.5	0
+206	-66.5	0
+207	-66.5	0
+208	-66.5	0
+209	-66.5	0
+210	-66.5	0
+211	-66.5	0
+212	-66.5	0
+213	-66.5	0
+214	-66.5	0
+215	-66.5	0
+216	-66.5	0
+217	-66.5	0
+218	-66.5	0
+219	-66.5	0
+220	-66.5	0
+221	-66.5	0
+222	-66.5	0
+223	-66.5	0
+224	-66.5	0
+225	-66.5	0
+226	-66.5	0
+227	-66.5	0
+228	-66.5	0
+229	-66.5	0
+230	-66.5	0
+231	-66.5	0
+232	-66.5	0
+233	-66.5	0
+234	-66.5	0
+235	-66.5	0
+236	-66.5	0
+237	-66.5	0
+238	-66.5	0
+239	-66.5	0
+240	-66.5	0
+241	-66.5	0
+242	-66.5	0
+243	-66.5	0
+244	-66.5	0
+245	-66.5	0
+246	-66.5	0
+247	-66.5	0
+248	-66.5	0
+249	-66.5	0
+250	-66.5	0
+251	-66.5	0
+252	-66.5	0
+253	-66.5	0
+254	-66.5	0
+255	-66.5	0
+256	-66.5	0
+257	-66.5	0
+258	-66.5	0
+259	-66.5	0
+260	-66.5	0
+261	-66.5	0
+262	-66.5	0
+263	-66.5	0
+264	-66.5	0
+265	-66.5	0
+266	-66.5	0
+267	-66.5	0
+268	-66.5	0
+269	-66.5	0
+270	-66.5	0
+271	-66.5	0
+272	-66.5	0
+273	-66.5	0
+274	-66.5	0
+275	-66.5	0
+276	-66.5	0
+277	-66.5	0
+278	-66.5	0
+279	-66.5	0
+280	-66.5	0
+281	-66.5	0
+282	-66.5	0
+283	-66.5	0
+284	-66.5	0
+285	-66.5	0
+286	-66.5	0
+287	-66.5	0
+288	-66.5	0
+289	-66.5	0
+290	-66.5	0
+291	-66.5	0
+292	-66.5	-3.0366
+293	-66.5	0
+294	-66.5	-6.0774
+295	-66.5	-7.5766
+296	-66.5	-10.497
+297	-66.5	-10.238
+298	-66.5	-9.9533
+299	-66.5	-9.3992
+300	-66.5	0
+301	-66.5	0
+302	-66.5	0
+303	-66.5	0
+304	-66.5	0
+305	-66.5	0
+306	-66.5	0
+307	-66.5	0
+308	-66.5	0
+309	-66.5	0
+310	-66.5	0
+311	-66.5	0
+312	-66.5	0
+313	-66.5	0
+314	-66.5	0
+315	-66.5	0
+316	-66.5	0
+317	-66.5	0
+318	-66.5	0
+319	-66.5	0
+320	-66.5	0
+321	-66.5	0
+322	-66.5	0
+323	-66.5	0
+324	-66.5	0
+325	-66.5	0
+326	-66.5	0
+327	-66.5	0
+328	-66.5	0
+329	-66.5	0
+330	-66.5	0
+331	-66.5	0
+332	-66.5	0
+333	-66.5	0
+334	-66.5	0
+335	-66.5	0
+336	-66.5	0
+337	-66.5	0
+338	-66.5	0
+339	-66.5	0
+340	-66.5	0
+341	-66.5	0
+342	-66.5	0
+343	-66.5	0
+344	-66.5	0
+345	-66.5	0
+346	-66.5	0
+347	-66.5	0
+348	-66.5	0
+349	-66.5	0
+350	-66.5	0
+351	-66.5	0
+352	-66.5	0
+353	-66.5	0
+354	-66.5	0
+355	-66.5	0
+356	-66.5	0
+357	-66.5	0
+358	-66.5	0
+359	-66.5	0
+360	-66.5	0
+0	-66	0
+1	-66	0
+2	-66	0
+3	-66	0
+4	-66	0
+5	-66	0
+6	-66	0
+7	-66	0
+8	-66	0
+9	-66	0
+10	-66	0
+11	-66	0
+12	-66	0
+13	-66	0
+14	-66	0
+15	-66	0
+16	-66	0
+17	-66	0
+18	-66	0
+19	-66	0
+20	-66	0
+21	-66	0
+22	-66	0
+23	-66	0
+24	-66	0
+25	-66	0
+26	-66	0
+27	-66	0
+28	-66	0
+29	-66	0
+30	-66	0
+31	-66	0
+32	-66	0
+33	-66	0
+34	-66	0
+35	-66	0
+36	-66	0
+37	-66	0
+38	-66	0
+39	-66	0
+40	-66	0
+41	-66	0
+42	-66	0
+43	-66	0
+44	-66	0
+45	-66	0
+46	-66	0
+47	-66	0
+48	-66	0
+49	-66	0
+50	-66	0
+51	-66	1.6487
+52	-66	2.1723
+53	-66	2.5194
+54	-66	2.1817
+55	-66	2.673
+56	-66	0
+57	-66	0
+58	-66	0
+59	-66	0
+60	-66	0
+61	-66	0
+62	-66	0
+63	-66	0
+64	-66	0
+65	-66	0
+66	-66	0
+67	-66	0
+68	-66	0
+69	-66	0
+70	-66	0
+71	-66	0
+72	-66	0
+73	-66	0
+74	-66	0
+75	-66	0
+76	-66	0
+77	-66	0
+78	-66	0
+79	-66	0
+80	-66	0
+81	-66	0
+82	-66	0
+83	-66	0
+84	-66	0
+85	-66	0
+86	-66	0.05449
+87	-66	0.53346
+88	-66	0.35385
+89	-66	0
+90	-66	0
+91	-66	0.19631
+92	-66	0.12121
+93	-66	0.28887
+94	-66	0.07681
+95	-66	0.38263
+96	-66	1.0685
+97	-66	1.0999
+98	-66	1.1322
+99	-66	0.80151
+100	-66	1.0855
+101	-66	1.2326
+102	-66	1.1841
+103	-66	0.78271
+104	-66	0.58918
+105	-66	0.01311
+106	-66	0.012769
+107	-66	0
+108	-66	0
+109	-66	0
+110	-66	0
+111	-66	-0.10148
+112	-66	-0.69634
+113	-66	-0.88614
+114	-66	-0.44632
+115	-66	0
+116	-66	-0.0026337
+117	-66	0
+118	-66	0
+119	-66	0
+120	-66	0
+121	-66	0
+122	-66	0
+123	-66	0
+124	-66	0
+125	-66	0
+126	-66	0
+127	-66	0
+128	-66	0
+129	-66	0
+130	-66	0.020438
+131	-66	0.091662
+132	-66	0.02787
+133	-66	0.1984
+134	-66	0.28218
+135	-66	0.13906
+136	-66	0.090568
+137	-66	0.20214
+138	-66	0.21996
+139	-66	0
+140	-66	0
+141	-66	0
+142	-66	0
+143	-66	0
+144	-66	0
+145	-66	0
+146	-66	0
+147	-66	0
+148	-66	0
+149	-66	0
+150	-66	0
+151	-66	0
+152	-66	0
+153	-66	0
+154	-66	0
+155	-66	0
+156	-66	0
+157	-66	0
+158	-66	0
+159	-66	0
+160	-66	0
+161	-66	0
+162	-66	0
+163	-66	0
+164	-66	0
+165	-66	0
+166	-66	0
+167	-66	0
+168	-66	0
+169	-66	0
+170	-66	0
+171	-66	0
+172	-66	0
+173	-66	0
+174	-66	0
+175	-66	0
+176	-66	0
+177	-66	0
+178	-66	0
+179	-66	0
+180	-66	0
+181	-66	0
+182	-66	0
+183	-66	0
+184	-66	0
+185	-66	0
+186	-66	0
+187	-66	0
+188	-66	0
+189	-66	0
+190	-66	0
+191	-66	0
+192	-66	0
+193	-66	0
+194	-66	0
+195	-66	0
+196	-66	0
+197	-66	0
+198	-66	0
+199	-66	0
+200	-66	0
+201	-66	0
+202	-66	0
+203	-66	0
+204	-66	0
+205	-66	0
+206	-66	0
+207	-66	0
+208	-66	0
+209	-66	0
+210	-66	0
+211	-66	0
+212	-66	0
+213	-66	0
+214	-66	0
+215	-66	0
+216	-66	0
+217	-66	0
+218	-66	0
+219	-66	0
+220	-66	0
+221	-66	0
+222	-66	0
+223	-66	0
+224	-66	0
+225	-66	0
+226	-66	0
+227	-66	0
+228	-66	0
+229	-66	0
+230	-66	0
+231	-66	0
+232	-66	0
+233	-66	0
+234	-66	0
+235	-66	0
+236	-66	0
+237	-66	0
+238	-66	0
+239	-66	0
+240	-66	0
+241	-66	0
+242	-66	0
+243	-66	0
+244	-66	0
+245	-66	0
+246	-66	0
+247	-66	0
+248	-66	0
+249	-66	0
+250	-66	0
+251	-66	0
+252	-66	0
+253	-66	0
+254	-66	0
+255	-66	0
+256	-66	0
+257	-66	0
+258	-66	0
+259	-66	0
+260	-66	0
+261	-66	0
+262	-66	0
+263	-66	0
+264	-66	0
+265	-66	0
+266	-66	0
+267	-66	0
+268	-66	0
+269	-66	0
+270	-66	0
+271	-66	0
+272	-66	0
+273	-66	0
+274	-66	0
+275	-66	0
+276	-66	0
+277	-66	0
+278	-66	0
+279	-66	0
+280	-66	0
+281	-66	0
+282	-66	0
+283	-66	0
+284	-66	0
+285	-66	0
+286	-66	0
+287	-66	0
+288	-66	0
+289	-66	0
+290	-66	0
+291	-66	0
+292	-66	0
+293	-66	0
+294	-66	0
+295	-66	-6.3304
+296	-66	-7.427
+297	-66	-10.216
+298	-66	-10.137
+299	-66	-7.5391
+300	-66	0
+301	-66	0
+302	-66	0
+303	-66	0
+304	-66	0
+305	-66	0
+306	-66	0
+307	-66	0
+308	-66	0
+309	-66	0
+310	-66	0
+311	-66	0
+312	-66	0
+313	-66	0
+314	-66	0
+315	-66	0
+316	-66	0
+317	-66	0
+318	-66	0
+319	-66	0
+320	-66	0
+321	-66	0
+322	-66	0
+323	-66	0
+324	-66	0
+325	-66	0
+326	-66	0
+327	-66	0
+328	-66	0
+329	-66	0
+330	-66	0
+331	-66	0
+332	-66	0
+333	-66	0
+334	-66	0
+335	-66	0
+336	-66	0
+337	-66	0
+338	-66	0
+339	-66	0
+340	-66	0
+341	-66	0
+342	-66	0
+343	-66	0
+344	-66	0
+345	-66	0
+346	-66	0
+347	-66	0
+348	-66	0
+349	-66	0
+350	-66	0
+351	-66	0
+352	-66	0
+353	-66	0
+354	-66	0
+355	-66	0
+356	-66	0
+357	-66	0
+358	-66	0
+359	-66	0
+360	-66	0
+0	-65.5	0
+1	-65.5	0
+2	-65.5	0
+3	-65.5	0
+4	-65.5	0
+5	-65.5	0
+6	-65.5	0
+7	-65.5	0
+8	-65.5	0
+9	-65.5	0
+10	-65.5	0
+11	-65.5	0
+12	-65.5	0
+13	-65.5	0
+14	-65.5	0
+15	-65.5	0
+16	-65.5	0
+17	-65.5	0
+18	-65.5	0
+19	-65.5	0
+20	-65.5	0
+21	-65.5	0
+22	-65.5	0
+23	-65.5	0
+24	-65.5	0
+25	-65.5	0
+26	-65.5	0
+27	-65.5	0
+28	-65.5	0
+29	-65.5	0
+30	-65.5	0
+31	-65.5	0
+32	-65.5	0
+33	-65.5	0
+34	-65.5	0
+35	-65.5	0
+36	-65.5	0
+37	-65.5	0
+38	-65.5	0
+39	-65.5	0
+40	-65.5	0
+41	-65.5	0
+42	-65.5	0
+43	-65.5	0
+44	-65.5	0
+45	-65.5	0
+46	-65.5	0
+47	-65.5	0
+48	-65.5	0
+49	-65.5	0
+50	-65.5	0
+51	-65.5	0.28074
+52	-65.5	0.35487
+53	-65.5	1.321
+54	-65.5	0.93731
+55	-65.5	0.47283
+56	-65.5	0
+57	-65.5	0
+58	-65.5	0
+59	-65.5	0
+60	-65.5	0
+61	-65.5	0
+62	-65.5	0
+63	-65.5	0
+64	-65.5	0
+65	-65.5	0
+66	-65.5	0
+67	-65.5	0
+68	-65.5	0
+69	-65.5	0
+70	-65.5	0
+71	-65.5	0
+72	-65.5	0
+73	-65.5	0
+74	-65.5	0
+75	-65.5	0
+76	-65.5	0
+77	-65.5	0
+78	-65.5	0
+79	-65.5	0
+80	-65.5	0
+81	-65.5	0
+82	-65.5	0
+83	-65.5	0
+84	-65.5	0
+85	-65.5	0
+86	-65.5	0
+87	-65.5	0
+88	-65.5	0
+89	-65.5	0
+90	-65.5	0
+91	-65.5	0
+92	-65.5	0
+93	-65.5	0
+94	-65.5	0
+95	-65.5	0.2556
+96	-65.5	1.0684
+97	-65.5	0.47896
+98	-65.5	0.79753
+99	-65.5	0
+100	-65.5	0.24613
+101	-65.5	0.61175
+102	-65.5	0.16859
+103	-65.5	0.095889
+104	-65.5	0.11024
+105	-65.5	0
+106	-65.5	0
+107	-65.5	0
+108	-65.5	0
+109	-65.5	0
+110	-65.5	0
+111	-65.5	0
+112	-65.5	-0.12915
+113	-65.5	0
+114	-65.5	-0.32671
+115	-65.5	0
+116	-65.5	0
+117	-65.5	0
+118	-65.5	0
+119	-65.5	0
+120	-65.5	0
+121	-65.5	0
+122	-65.5	0
+123	-65.5	0
+124	-65.5	0
+125	-65.5	0
+126	-65.5	0
+127	-65.5	0
+128	-65.5	0
+129	-65.5	0
+130	-65.5	0
+131	-65.5	0
+132	-65.5	0
+133	-65.5	0.013622
+134	-65.5	0.05678
+135	-65.5	0
+136	-65.5	0
+137	-65.5	0.045314
+138	-65.5	0.0053625
+139	-65.5	0
+140	-65.5	0
+141	-65.5	0
+142	-65.5	0
+143	-65.5	0
+144	-65.5	0
+145	-65.5	0
+146	-65.5	0
+147	-65.5	0
+148	-65.5	0
+149	-65.5	0
+150	-65.5	0
+151	-65.5	0
+152	-65.5	0
+153	-65.5	0
+154	-65.5	0
+155	-65.5	0
+156	-65.5	0
+157	-65.5	0
+158	-65.5	0
+159	-65.5	0
+160	-65.5	0
+161	-65.5	0
+162	-65.5	0
+163	-65.5	0
+164	-65.5	0
+165	-65.5	0
+166	-65.5	0
+167	-65.5	0
+168	-65.5	0
+169	-65.5	0
+170	-65.5	0
+171	-65.5	0
+172	-65.5	0
+173	-65.5	0
+174	-65.5	0
+175	-65.5	0
+176	-65.5	0
+177	-65.5	0
+178	-65.5	0
+179	-65.5	0
+180	-65.5	0
+181	-65.5	0
+182	-65.5	0
+183	-65.5	0
+184	-65.5	0
+185	-65.5	0
+186	-65.5	0
+187	-65.5	0
+188	-65.5	0
+189	-65.5	0
+190	-65.5	0
+191	-65.5	0
+192	-65.5	0
+193	-65.5	0
+194	-65.5	0
+195	-65.5	0
+196	-65.5	0
+197	-65.5	0
+198	-65.5	0
+199	-65.5	0
+200	-65.5	0
+201	-65.5	0
+202	-65.5	0
+203	-65.5	0
+204	-65.5	0
+205	-65.5	0
+206	-65.5	0
+207	-65.5	0
+208	-65.5	0
+209	-65.5	0
+210	-65.5	0
+211	-65.5	0
+212	-65.5	0
+213	-65.5	0
+214	-65.5	0
+215	-65.5	0
+216	-65.5	0
+217	-65.5	0
+218	-65.5	0
+219	-65.5	0
+220	-65.5	0
+221	-65.5	0
+222	-65.5	0
+223	-65.5	0
+224	-65.5	0
+225	-65.5	0
+226	-65.5	0
+227	-65.5	0
+228	-65.5	0
+229	-65.5	0
+230	-65.5	0
+231	-65.5	0
+232	-65.5	0
+233	-65.5	0
+234	-65.5	0
+235	-65.5	0
+236	-65.5	0
+237	-65.5	0
+238	-65.5	0
+239	-65.5	0
+240	-65.5	0
+241	-65.5	0
+242	-65.5	0
+243	-65.5	0
+244	-65.5	0
+245	-65.5	0
+246	-65.5	0
+247	-65.5	0
+248	-65.5	0
+249	-65.5	0
+250	-65.5	0
+251	-65.5	0
+252	-65.5	0
+253	-65.5	0
+254	-65.5	0
+255	-65.5	0
+256	-65.5	0
+257	-65.5	0
+258	-65.5	0
+259	-65.5	0
+260	-65.5	0
+261	-65.5	0
+262	-65.5	0
+263	-65.5	0
+264	-65.5	0
+265	-65.5	0
+266	-65.5	0
+267	-65.5	0
+268	-65.5	0
+269	-65.5	0
+270	-65.5	0
+271	-65.5	0
+272	-65.5	0
+273	-65.5	0
+274	-65.5	0
+275	-65.5	0
+276	-65.5	0
+277	-65.5	0
+278	-65.5	0
+279	-65.5	0
+280	-65.5	0
+281	-65.5	0
+282	-65.5	0
+283	-65.5	0
+284	-65.5	0
+285	-65.5	0
+286	-65.5	0
+287	-65.5	0
+288	-65.5	0
+289	-65.5	0
+290	-65.5	0
+291	-65.5	0
+292	-65.5	0
+293	-65.5	0
+294	-65.5	0
+295	-65.5	-3.8401
+296	-65.5	-3.0703
+297	-65.5	-10.056
+298	-65.5	-8.3787
+299	-65.5	-2.0747
+300	-65.5	-4.6431
+301	-65.5	0
+302	-65.5	0
+303	-65.5	0
+304	-65.5	0
+305	-65.5	0
+306	-65.5	0
+307	-65.5	0
+308	-65.5	0
+309	-65.5	0
+310	-65.5	0
+311	-65.5	0
+312	-65.5	0
+313	-65.5	0
+314	-65.5	0
+315	-65.5	0
+316	-65.5	0
+317	-65.5	0
+318	-65.5	0
+319	-65.5	0
+320	-65.5	0
+321	-65.5	0
+322	-65.5	0
+323	-65.5	0
+324	-65.5	0
+325	-65.5	0
+326	-65.5	0
+327	-65.5	0
+328	-65.5	0
+329	-65.5	0
+330	-65.5	0
+331	-65.5	0
+332	-65.5	0
+333	-65.5	0
+334	-65.5	0
+335	-65.5	0
+336	-65.5	0
+337	-65.5	0
+338	-65.5	0
+339	-65.5	0
+340	-65.5	0
+341	-65.5	0
+342	-65.5	0
+343	-65.5	0
+344	-65.5	0
+345	-65.5	0
+346	-65.5	0
+347	-65.5	0
+348	-65.5	0
+349	-65.5	0
+350	-65.5	0
+351	-65.5	0
+352	-65.5	0
+353	-65.5	0
+354	-65.5	0
+355	-65.5	0
+356	-65.5	0
+357	-65.5	0
+358	-65.5	0
+359	-65.5	0
+360	-65.5	0
+0	-65	0
+1	-65	0
+2	-65	0
+3	-65	0
+4	-65	0
+5	-65	0
+6	-65	0
+7	-65	0
+8	-65	0
+9	-65	0
+10	-65	0
+11	-65	0
+12	-65	0
+13	-65	0
+14	-65	0
+15	-65	0
+16	-65	0
+17	-65	0
+18	-65	0
+19	-65	0
+20	-65	0
+21	-65	0
+22	-65	0
+23	-65	0
+24	-65	0
+25	-65	0
+26	-65	0
+27	-65	0
+28	-65	0
+29	-65	0
+30	-65	0
+31	-65	0
+32	-65	0
+33	-65	0
+34	-65	0
+35	-65	0
+36	-65	0
+37	-65	0
+38	-65	0
+39	-65	0
+40	-65	0
+41	-65	0
+42	-65	0
+43	-65	0
+44	-65	0
+45	-65	0
+46	-65	0
+47	-65	0
+48	-65	0
+49	-65	0
+50	-65	0
+51	-65	0
+52	-65	0
+53	-65	0
+54	-65	0
+55	-65	0
+56	-65	0
+57	-65	0
+58	-65	0
+59	-65	0
+60	-65	0
+61	-65	0
+62	-65	0
+63	-65	0
+64	-65	0
+65	-65	0
+66	-65	0
+67	-65	0
+68	-65	0
+69	-65	0
+70	-65	0
+71	-65	0
+72	-65	0
+73	-65	0
+74	-65	0
+75	-65	0
+76	-65	0
+77	-65	0
+78	-65	0
+79	-65	0
+80	-65	0
+81	-65	0
+82	-65	0
+83	-65	0
+84	-65	0
+85	-65	0
+86	-65	0
+87	-65	0
+88	-65	0
+89	-65	0
+90	-65	0
+91	-65	0
+92	-65	0
+93	-65	0
+94	-65	0
+95	-65	0
+96	-65	0.76052
+97	-65	0.2549
+98	-65	0
+99	-65	0
+100	-65	0
+101	-65	0
+102	-65	0
+103	-65	0
+104	-65	0
+105	-65	0
+106	-65	0
+107	-65	0
+108	-65	0
+109	-65	0
+110	-65	0
+111	-65	0
+112	-65	0
+113	-65	0
+114	-65	0
+115	-65	0
+116	-65	0
+117	-65	0
+118	-65	0
+119	-65	0
+120	-65	0
+121	-65	0
+122	-65	0
+123	-65	0
+124	-65	0
+125	-65	0
+126	-65	0
+127	-65	0
+128	-65	0
+129	-65	0
+130	-65	0
+131	-65	0
+132	-65	0
+133	-65	0
+134	-65	0
+135	-65	0
+136	-65	0
+137	-65	0
+138	-65	0
+139	-65	0
+140	-65	0
+141	-65	0
+142	-65	0
+143	-65	0
+144	-65	0
+145	-65	0
+146	-65	0
+147	-65	0
+148	-65	0
+149	-65	0
+150	-65	0
+151	-65	0
+152	-65	0
+153	-65	0
+154	-65	0
+155	-65	0
+156	-65	0
+157	-65	0
+158	-65	0
+159	-65	0
+160	-65	0
+161	-65	0
+162	-65	0
+163	-65	0
+164	-65	0
+165	-65	0
+166	-65	0
+167	-65	0
+168	-65	0
+169	-65	0
+170	-65	0
+171	-65	0
+172	-65	0
+173	-65	0
+174	-65	0
+175	-65	0
+176	-65	0
+177	-65	0
+178	-65	0
+179	-65	0
+180	-65	0
+181	-65	0
+182	-65	0
+183	-65	0
+184	-65	0
+185	-65	0
+186	-65	0
+187	-65	0
+188	-65	0
+189	-65	0
+190	-65	0
+191	-65	0
+192	-65	0
+193	-65	0
+194	-65	0
+195	-65	0
+196	-65	0
+197	-65	0
+198	-65	0
+199	-65	0
+200	-65	0
+201	-65	0
+202	-65	0
+203	-65	0
+204	-65	0
+205	-65	0
+206	-65	0
+207	-65	0
+208	-65	0
+209	-65	0
+210	-65	0
+211	-65	0
+212	-65	0
+213	-65	0
+214	-65	0
+215	-65	0
+216	-65	0
+217	-65	0
+218	-65	0
+219	-65	0
+220	-65	0
+221	-65	0
+222	-65	0
+223	-65	0
+224	-65	0
+225	-65	0
+226	-65	0
+227	-65	0
+228	-65	0
+229	-65	0
+230	-65	0
+231	-65	0
+232	-65	0
+233	-65	0
+234	-65	0
+235	-65	0
+236	-65	0
+237	-65	0
+238	-65	0
+239	-65	0
+240	-65	0
+241	-65	0
+242	-65	0
+243	-65	0
+244	-65	0
+245	-65	0
+246	-65	0
+247	-65	0
+248	-65	0
+249	-65	0
+250	-65	0
+251	-65	0
+252	-65	0
+253	-65	0
+254	-65	0
+255	-65	0
+256	-65	0
+257	-65	0
+258	-65	0
+259	-65	0
+260	-65	0
+261	-65	0
+262	-65	0
+263	-65	0
+264	-65	0
+265	-65	0
+266	-65	0
+267	-65	0
+268	-65	0
+269	-65	0
+270	-65	0
+271	-65	0
+272	-65	0
+273	-65	0
+274	-65	0
+275	-65	0
+276	-65	0
+277	-65	0
+278	-65	0
+279	-65	0
+280	-65	0
+281	-65	0
+282	-65	0
+283	-65	0
+284	-65	0
+285	-65	0
+286	-65	0
+287	-65	0
+288	-65	0
+289	-65	0
+290	-65	0
+291	-65	0
+292	-65	0
+293	-65	0
+294	-65	0
+295	-65	0
+296	-65	-2.8118
+297	-65	-1.2059
+298	-65	-3.7151
+299	-65	-2.3568
+300	-65	-7.6655
+301	-65	0
+302	-65	0
+303	-65	0
+304	-65	0
+305	-65	0
+306	-65	0
+307	-65	0
+308	-65	0
+309	-65	0
+310	-65	0
+311	-65	0
+312	-65	0
+313	-65	0
+314	-65	0
+315	-65	0
+316	-65	0
+317	-65	0
+318	-65	0
+319	-65	0
+320	-65	0
+321	-65	0
+322	-65	0
+323	-65	0
+324	-65	0
+325	-65	0
+326	-65	0
+327	-65	0
+328	-65	0
+329	-65	0
+330	-65	0
+331	-65	0
+332	-65	0
+333	-65	0
+334	-65	0
+335	-65	0
+336	-65	0
+337	-65	0
+338	-65	0
+339	-65	0
+340	-65	0
+341	-65	0
+342	-65	0
+343	-65	0
+344	-65	0
+345	-65	0
+346	-65	0
+347	-65	0
+348	-65	0
+349	-65	0
+350	-65	0
+351	-65	0
+352	-65	0
+353	-65	0
+354	-65	0
+355	-65	0
+356	-65	0
+357	-65	0
+358	-65	0
+359	-65	0
+360	-65	0
+0	-64.5	0
+1	-64.5	0
+2	-64.5	0
+3	-64.5	0
+4	-64.5	0
+5	-64.5	0
+6	-64.5	0
+7	-64.5	0
+8	-64.5	0
+9	-64.5	0
+10	-64.5	0
+11	-64.5	0
+12	-64.5	0
+13	-64.5	0
+14	-64.5	0
+15	-64.5	0
+16	-64.5	0
+17	-64.5	0
+18	-64.5	0
+19	-64.5	0
+20	-64.5	0
+21	-64.5	0
+22	-64.5	0
+23	-64.5	0
+24	-64.5	0
+25	-64.5	0
+26	-64.5	0
+27	-64.5	0
+28	-64.5	0
+29	-64.5	0
+30	-64.5	0
+31	-64.5	0
+32	-64.5	0
+33	-64.5	0
+34	-64.5	0
+35	-64.5	0
+36	-64.5	0
+37	-64.5	0
+38	-64.5	0
+39	-64.5	0
+40	-64.5	0
+41	-64.5	0
+42	-64.5	0
+43	-64.5	0
+44	-64.5	0
+45	-64.5	0
+46	-64.5	0
+47	-64.5	0
+48	-64.5	0
+49	-64.5	0
+50	-64.5	0
+51	-64.5	0
+52	-64.5	0
+53	-64.5	0
+54	-64.5	0
+55	-64.5	0
+56	-64.5	0
+57	-64.5	0
+58	-64.5	0
+59	-64.5	0
+60	-64.5	0
+61	-64.5	0
+62	-64.5	0
+63	-64.5	0
+64	-64.5	0
+65	-64.5	0
+66	-64.5	0
+67	-64.5	0
+68	-64.5	0
+69	-64.5	0
+70	-64.5	0
+71	-64.5	0
+72	-64.5	0
+73	-64.5	0
+74	-64.5	0
+75	-64.5	0
+76	-64.5	0
+77	-64.5	0
+78	-64.5	0
+79	-64.5	0
+80	-64.5	0
+81	-64.5	0
+82	-64.5	0
+83	-64.5	0
+84	-64.5	0
+85	-64.5	0
+86	-64.5	0
+87	-64.5	0
+88	-64.5	0
+89	-64.5	0
+90	-64.5	0
+91	-64.5	0
+92	-64.5	0
+93	-64.5	0
+94	-64.5	0
+95	-64.5	0
+96	-64.5	0.32394
+97	-64.5	0
+98	-64.5	0
+99	-64.5	0
+100	-64.5	0
+101	-64.5	0
+102	-64.5	0
+103	-64.5	0
+104	-64.5	0
+105	-64.5	0
+106	-64.5	0
+107	-64.5	0
+108	-64.5	0
+109	-64.5	0
+110	-64.5	0
+111	-64.5	0
+112	-64.5	0
+113	-64.5	0
+114	-64.5	0
+115	-64.5	0
+116	-64.5	0
+117	-64.5	0
+118	-64.5	0
+119	-64.5	0
+120	-64.5	0
+121	-64.5	0
+122	-64.5	0
+123	-64.5	0
+124	-64.5	0
+125	-64.5	0
+126	-64.5	0
+127	-64.5	0
+128	-64.5	0
+129	-64.5	0
+130	-64.5	0
+131	-64.5	0
+132	-64.5	0
+133	-64.5	0
+134	-64.5	0
+135	-64.5	0
+136	-64.5	0
+137	-64.5	0
+138	-64.5	0
+139	-64.5	0
+140	-64.5	0
+141	-64.5	0
+142	-64.5	0
+143	-64.5	0
+144	-64.5	0
+145	-64.5	0
+146	-64.5	0
+147	-64.5	0
+148	-64.5	0
+149	-64.5	0
+150	-64.5	0
+151	-64.5	0
+152	-64.5	0
+153	-64.5	0
+154	-64.5	0
+155	-64.5	0
+156	-64.5	0
+157	-64.5	0
+158	-64.5	0
+159	-64.5	0
+160	-64.5	0
+161	-64.5	0
+162	-64.5	0
+163	-64.5	0
+164	-64.5	0
+165	-64.5	0
+166	-64.5	0
+167	-64.5	0
+168	-64.5	0
+169	-64.5	0
+170	-64.5	0
+171	-64.5	0
+172	-64.5	0
+173	-64.5	0
+174	-64.5	0
+175	-64.5	0
+176	-64.5	0
+177	-64.5	0
+178	-64.5	0
+179	-64.5	0
+180	-64.5	0
+181	-64.5	0
+182	-64.5	0
+183	-64.5	0
+184	-64.5	0
+185	-64.5	0
+186	-64.5	0
+187	-64.5	0
+188	-64.5	0
+189	-64.5	0
+190	-64.5	0
+191	-64.5	0
+192	-64.5	0
+193	-64.5	0
+194	-64.5	0
+195	-64.5	0
+196	-64.5	0
+197	-64.5	0
+198	-64.5	0
+199	-64.5	0
+200	-64.5	0
+201	-64.5	0
+202	-64.5	0
+203	-64.5	0
+204	-64.5	0
+205	-64.5	0
+206	-64.5	0
+207	-64.5	0
+208	-64.5	0
+209	-64.5	0
+210	-64.5	0
+211	-64.5	0
+212	-64.5	0
+213	-64.5	0
+214	-64.5	0
+215	-64.5	0
+216	-64.5	0
+217	-64.5	0
+218	-64.5	0
+219	-64.5	0
+220	-64.5	0
+221	-64.5	0
+222	-64.5	0
+223	-64.5	0
+224	-64.5	0
+225	-64.5	0
+226	-64.5	0
+227	-64.5	0
+228	-64.5	0
+229	-64.5	0
+230	-64.5	0
+231	-64.5	0
+232	-64.5	0
+233	-64.5	0
+234	-64.5	0
+235	-64.5	0
+236	-64.5	0
+237	-64.5	0
+238	-64.5	0
+239	-64.5	0
+240	-64.5	0
+241	-64.5	0
+242	-64.5	0
+243	-64.5	0
+244	-64.5	0
+245	-64.5	0
+246	-64.5	0
+247	-64.5	0
+248	-64.5	0
+249	-64.5	0
+250	-64.5	0
+251	-64.5	0
+252	-64.5	0
+253	-64.5	0
+254	-64.5	0
+255	-64.5	0
+256	-64.5	0
+257	-64.5	0
+258	-64.5	0
+259	-64.5	0
+260	-64.5	0
+261	-64.5	0
+262	-64.5	0
+263	-64.5	0
+264	-64.5	0
+265	-64.5	0
+266	-64.5	0
+267	-64.5	0
+268	-64.5	0
+269	-64.5	0
+270	-64.5	0
+271	-64.5	0
+272	-64.5	0
+273	-64.5	0
+274	-64.5	0
+275	-64.5	0
+276	-64.5	0
+277	-64.5	0
+278	-64.5	0
+279	-64.5	0
+280	-64.5	0
+281	-64.5	0
+282	-64.5	0
+283	-64.5	0
+284	-64.5	0
+285	-64.5	0
+286	-64.5	0
+287	-64.5	0
+288	-64.5	0
+289	-64.5	0
+290	-64.5	0
+291	-64.5	0
+292	-64.5	0
+293	-64.5	0
+294	-64.5	0
+295	-64.5	0
+296	-64.5	-3.5535
+297	-64.5	-2.7073
+298	-64.5	-1.2432
+299	-64.5	-7.5991
+300	-64.5	-6.4194
+301	-64.5	-0.79883
+302	-64.5	-3.147
+303	-64.5	0
+304	-64.5	0
+305	-64.5	0
+306	-64.5	0
+307	-64.5	0
+308	-64.5	0
+309	-64.5	0
+310	-64.5	0
+311	-64.5	0
+312	-64.5	0
+313	-64.5	0
+314	-64.5	0
+315	-64.5	0
+316	-64.5	0
+317	-64.5	0
+318	-64.5	0
+319	-64.5	0
+320	-64.5	0
+321	-64.5	0
+322	-64.5	0
+323	-64.5	0
+324	-64.5	0
+325	-64.5	0
+326	-64.5	0
+327	-64.5	0
+328	-64.5	0
+329	-64.5	0
+330	-64.5	0
+331	-64.5	0
+332	-64.5	0
+333	-64.5	0
+334	-64.5	0
+335	-64.5	0
+336	-64.5	0
+337	-64.5	0
+338	-64.5	0
+339	-64.5	0
+340	-64.5	0
+341	-64.5	0
+342	-64.5	0
+343	-64.5	0
+344	-64.5	0
+345	-64.5	0
+346	-64.5	0
+347	-64.5	0
+348	-64.5	0
+349	-64.5	0
+350	-64.5	0
+351	-64.5	0
+352	-64.5	0
+353	-64.5	0
+354	-64.5	0
+355	-64.5	0
+356	-64.5	0
+357	-64.5	0
+358	-64.5	0
+359	-64.5	0
+360	-64.5	0
+0	-64	0
+1	-64	0
+2	-64	0
+3	-64	0
+4	-64	0
+5	-64	0
+6	-64	0
+7	-64	0
+8	-64	0
+9	-64	0
+10	-64	0
+11	-64	0
+12	-64	0
+13	-64	0
+14	-64	0
+15	-64	0
+16	-64	0
+17	-64	0
+18	-64	0
+19	-64	0
+20	-64	0
+21	-64	0
+22	-64	0
+23	-64	0
+24	-64	0
+25	-64	0
+26	-64	0
+27	-64	0
+28	-64	0
+29	-64	0
+30	-64	0
+31	-64	0
+32	-64	0
+33	-64	0
+34	-64	0
+35	-64	0
+36	-64	0
+37	-64	0
+38	-64	0
+39	-64	0
+40	-64	0
+41	-64	0
+42	-64	0
+43	-64	0
+44	-64	0
+45	-64	0
+46	-64	0
+47	-64	0
+48	-64	0
+49	-64	0
+50	-64	0
+51	-64	0
+52	-64	0
+53	-64	0
+54	-64	0
+55	-64	0
+56	-64	0
+57	-64	0
+58	-64	0
+59	-64	0
+60	-64	0
+61	-64	0
+62	-64	0
+63	-64	0
+64	-64	0
+65	-64	0
+66	-64	0
+67	-64	0
+68	-64	0
+69	-64	0
+70	-64	0
+71	-64	0
+72	-64	0
+73	-64	0
+74	-64	0
+75	-64	0
+76	-64	0
+77	-64	0
+78	-64	0
+79	-64	0
+80	-64	0
+81	-64	0
+82	-64	0
+83	-64	0
+84	-64	0
+85	-64	0
+86	-64	0
+87	-64	0
+88	-64	0
+89	-64	0
+90	-64	0
+91	-64	0
+92	-64	0
+93	-64	0
+94	-64	0
+95	-64	0
+96	-64	0
+97	-64	0
+98	-64	0
+99	-64	0
+100	-64	0
+101	-64	0
+102	-64	0
+103	-64	0
+104	-64	0
+105	-64	0
+106	-64	0
+107	-64	0
+108	-64	0
+109	-64	0
+110	-64	0
+111	-64	0
+112	-64	0
+113	-64	0
+114	-64	0
+115	-64	0
+116	-64	0
+117	-64	0
+118	-64	0
+119	-64	0
+120	-64	0
+121	-64	0
+122	-64	0
+123	-64	0
+124	-64	0
+125	-64	0
+126	-64	0
+127	-64	0
+128	-64	0
+129	-64	0
+130	-64	0
+131	-64	0
+132	-64	0
+133	-64	0
+134	-64	0
+135	-64	0
+136	-64	0
+137	-64	0
+138	-64	0
+139	-64	0
+140	-64	0
+141	-64	0
+142	-64	0
+143	-64	0
+144	-64	0
+145	-64	0
+146	-64	0
+147	-64	0
+148	-64	0
+149	-64	0
+150	-64	0
+151	-64	0
+152	-64	0
+153	-64	0
+154	-64	0
+155	-64	0
+156	-64	0
+157	-64	0
+158	-64	0
+159	-64	0
+160	-64	0
+161	-64	0
+162	-64	0
+163	-64	0
+164	-64	0
+165	-64	0
+166	-64	0
+167	-64	0
+168	-64	0
+169	-64	0
+170	-64	0
+171	-64	0
+172	-64	0
+173	-64	0
+174	-64	0
+175	-64	0
+176	-64	0
+177	-64	0
+178	-64	0
+179	-64	0
+180	-64	0
+181	-64	0
+182	-64	0
+183	-64	0
+184	-64	0
+185	-64	0
+186	-64	0
+187	-64	0
+188	-64	0
+189	-64	0
+190	-64	0
+191	-64	0
+192	-64	0
+193	-64	0
+194	-64	0
+195	-64	0
+196	-64	0
+197	-64	0
+198	-64	0
+199	-64	0
+200	-64	0
+201	-64	0
+202	-64	0
+203	-64	0
+204	-64	0
+205	-64	0
+206	-64	0
+207	-64	0
+208	-64	0
+209	-64	0
+210	-64	0
+211	-64	0
+212	-64	0
+213	-64	0
+214	-64	0
+215	-64	0
+216	-64	0
+217	-64	0
+218	-64	0
+219	-64	0
+220	-64	0
+221	-64	0
+222	-64	0
+223	-64	0
+224	-64	0
+225	-64	0
+226	-64	0
+227	-64	0
+228	-64	0
+229	-64	0
+230	-64	0
+231	-64	0
+232	-64	0
+233	-64	0
+234	-64	0
+235	-64	0
+236	-64	0
+237	-64	0
+238	-64	0
+239	-64	0
+240	-64	0
+241	-64	0
+242	-64	0
+243	-64	0
+244	-64	0
+245	-64	0
+246	-64	0
+247	-64	0
+248	-64	0
+249	-64	0
+250	-64	0
+251	-64	0
+252	-64	0
+253	-64	0
+254	-64	0
+255	-64	0
+256	-64	0
+257	-64	0
+258	-64	0
+259	-64	0
+260	-64	0
+261	-64	0
+262	-64	0
+263	-64	0
+264	-64	0
+265	-64	0
+266	-64	0
+267	-64	0
+268	-64	0
+269	-64	0
+270	-64	0
+271	-64	0
+272	-64	0
+273	-64	0
+274	-64	0
+275	-64	0
+276	-64	0
+277	-64	0
+278	-64	0
+279	-64	0
+280	-64	0
+281	-64	0
+282	-64	0
+283	-64	0
+284	-64	0
+285	-64	0
+286	-64	0
+287	-64	0
+288	-64	0
+289	-64	0
+290	-64	0
+291	-64	0
+292	-64	0
+293	-64	0
+294	-64	0
+295	-64	0
+296	-64	-2.7885
+297	-64	-0.14572
+298	-64	0
+299	-64	-5.7817
+300	-64	-4.4792
+301	-64	-5.0595
+302	-64	-5.7943
+303	-64	0
+304	-64	-1.4115
+305	-64	-0.13076
+306	-64	0
+307	-64	0
+308	-64	0
+309	-64	0
+310	-64	0
+311	-64	0
+312	-64	0
+313	-64	0
+314	-64	0
+315	-64	0
+316	-64	0
+317	-64	0
+318	-64	0
+319	-64	0
+320	-64	0
+321	-64	0
+322	-64	0
+323	-64	0
+324	-64	0
+325	-64	0
+326	-64	0
+327	-64	0
+328	-64	0
+329	-64	0
+330	-64	0
+331	-64	0
+332	-64	0
+333	-64	0
+334	-64	0
+335	-64	0
+336	-64	0
+337	-64	0
+338	-64	0
+339	-64	0
+340	-64	0
+341	-64	0
+342	-64	0
+343	-64	0
+344	-64	0
+345	-64	0
+346	-64	0
+347	-64	0
+348	-64	0
+349	-64	0
+350	-64	0
+351	-64	0
+352	-64	0
+353	-64	0
+354	-64	0
+355	-64	0
+356	-64	0
+357	-64	0
+358	-64	0
+359	-64	0
+360	-64	0
+0	-63.5	0
+1	-63.5	0
+2	-63.5	0
+3	-63.5	0
+4	-63.5	0
+5	-63.5	0
+6	-63.5	0
+7	-63.5	0
+8	-63.5	0
+9	-63.5	0
+10	-63.5	0
+11	-63.5	0
+12	-63.5	0
+13	-63.5	0
+14	-63.5	0
+15	-63.5	0
+16	-63.5	0
+17	-63.5	0
+18	-63.5	0
+19	-63.5	0
+20	-63.5	0
+21	-63.5	0
+22	-63.5	0
+23	-63.5	0
+24	-63.5	0
+25	-63.5	0
+26	-63.5	0
+27	-63.5	0
+28	-63.5	0
+29	-63.5	0
+30	-63.5	0
+31	-63.5	0
+32	-63.5	0
+33	-63.5	0
+34	-63.5	0
+35	-63.5	0
+36	-63.5	0
+37	-63.5	0
+38	-63.5	0
+39	-63.5	0
+40	-63.5	0
+41	-63.5	0
+42	-63.5	0
+43	-63.5	0
+44	-63.5	0
+45	-63.5	0
+46	-63.5	0
+47	-63.5	0
+48	-63.5	0
+49	-63.5	0
+50	-63.5	0
+51	-63.5	0
+52	-63.5	0
+53	-63.5	0
+54	-63.5	0
+55	-63.5	0
+56	-63.5	0
+57	-63.5	0
+58	-63.5	0
+59	-63.5	0
+60	-63.5	0
+61	-63.5	0
+62	-63.5	0
+63	-63.5	0
+64	-63.5	0
+65	-63.5	0
+66	-63.5	0
+67	-63.5	0
+68	-63.5	0
+69	-63.5	0
+70	-63.5	0
+71	-63.5	0
+72	-63.5	0
+73	-63.5	0
+74	-63.5	0
+75	-63.5	0
+76	-63.5	0
+77	-63.5	0
+78	-63.5	0
+79	-63.5	0
+80	-63.5	0
+81	-63.5	0
+82	-63.5	0
+83	-63.5	0
+84	-63.5	0
+85	-63.5	0
+86	-63.5	0
+87	-63.5	0
+88	-63.5	0
+89	-63.5	0
+90	-63.5	0
+91	-63.5	0
+92	-63.5	0
+93	-63.5	0
+94	-63.5	0
+95	-63.5	0
+96	-63.5	0
+97	-63.5	0
+98	-63.5	0
+99	-63.5	0
+100	-63.5	0
+101	-63.5	0
+102	-63.5	0
+103	-63.5	0
+104	-63.5	0
+105	-63.5	0
+106	-63.5	0
+107	-63.5	0
+108	-63.5	0
+109	-63.5	0
+110	-63.5	0
+111	-63.5	0
+112	-63.5	0
+113	-63.5	0
+114	-63.5	0
+115	-63.5	0
+116	-63.5	0
+117	-63.5	0
+118	-63.5	0
+119	-63.5	0
+120	-63.5	0
+121	-63.5	0
+122	-63.5	0
+123	-63.5	0
+124	-63.5	0
+125	-63.5	0
+126	-63.5	0
+127	-63.5	0
+128	-63.5	0
+129	-63.5	0
+130	-63.5	0
+131	-63.5	0
+132	-63.5	0
+133	-63.5	0
+134	-63.5	0
+135	-63.5	0
+136	-63.5	0
+137	-63.5	0
+138	-63.5	0
+139	-63.5	0
+140	-63.5	0
+141	-63.5	0
+142	-63.5	0
+143	-63.5	0
+144	-63.5	0
+145	-63.5	0
+146	-63.5	0
+147	-63.5	0
+148	-63.5	0
+149	-63.5	0
+150	-63.5	0
+151	-63.5	0
+152	-63.5	0
+153	-63.5	0
+154	-63.5	0
+155	-63.5	0
+156	-63.5	0
+157	-63.5	0
+158	-63.5	0
+159	-63.5	0
+160	-63.5	0
+161	-63.5	0
+162	-63.5	0
+163	-63.5	0
+164	-63.5	0
+165	-63.5	0
+166	-63.5	0
+167	-63.5	0
+168	-63.5	0
+169	-63.5	0
+170	-63.5	0
+171	-63.5	0
+172	-63.5	0
+173	-63.5	0
+174	-63.5	0
+175	-63.5	0
+176	-63.5	0
+177	-63.5	0
+178	-63.5	0
+179	-63.5	0
+180	-63.5	0
+181	-63.5	0
+182	-63.5	0
+183	-63.5	0
+184	-63.5	0
+185	-63.5	0
+186	-63.5	0
+187	-63.5	0
+188	-63.5	0
+189	-63.5	0
+190	-63.5	0
+191	-63.5	0
+192	-63.5	0
+193	-63.5	0
+194	-63.5	0
+195	-63.5	0
+196	-63.5	0
+197	-63.5	0
+198	-63.5	0
+199	-63.5	0
+200	-63.5	0
+201	-63.5	0
+202	-63.5	0
+203	-63.5	0
+204	-63.5	0
+205	-63.5	0
+206	-63.5	0
+207	-63.5	0
+208	-63.5	0
+209	-63.5	0
+210	-63.5	0
+211	-63.5	0
+212	-63.5	0
+213	-63.5	0
+214	-63.5	0
+215	-63.5	0
+216	-63.5	0
+217	-63.5	0
+218	-63.5	0
+219	-63.5	0
+220	-63.5	0
+221	-63.5	0
+222	-63.5	0
+223	-63.5	0
+224	-63.5	0
+225	-63.5	0
+226	-63.5	0
+227	-63.5	0
+228	-63.5	0
+229	-63.5	0
+230	-63.5	0
+231	-63.5	0
+232	-63.5	0
+233	-63.5	0
+234	-63.5	0
+235	-63.5	0
+236	-63.5	0
+237	-63.5	0
+238	-63.5	0
+239	-63.5	0
+240	-63.5	0
+241	-63.5	0
+242	-63.5	0
+243	-63.5	0
+244	-63.5	0
+245	-63.5	0
+246	-63.5	0
+247	-63.5	0
+248	-63.5	0
+249	-63.5	0
+250	-63.5	0
+251	-63.5	0
+252	-63.5	0
+253	-63.5	0
+254	-63.5	0
+255	-63.5	0
+256	-63.5	0
+257	-63.5	0
+258	-63.5	0
+259	-63.5	0
+260	-63.5	0
+261	-63.5	0
+262	-63.5	0
+263	-63.5	0
+264	-63.5	0
+265	-63.5	0
+266	-63.5	0
+267	-63.5	0
+268	-63.5	0
+269	-63.5	0
+270	-63.5	0
+271	-63.5	0
+272	-63.5	0
+273	-63.5	0
+274	-63.5	0
+275	-63.5	0
+276	-63.5	0
+277	-63.5	0
+278	-63.5	0
+279	-63.5	0
+280	-63.5	0
+281	-63.5	0
+282	-63.5	0
+283	-63.5	0
+284	-63.5	0
+285	-63.5	0
+286	-63.5	0
+287	-63.5	0
+288	-63.5	0
+289	-63.5	0
+290	-63.5	0
+291	-63.5	0
+292	-63.5	0
+293	-63.5	0
+294	-63.5	0
+295	-63.5	0
+296	-63.5	0
+297	-63.5	0
+298	-63.5	0
+299	-63.5	-0.060324
+300	-63.5	0
+301	-63.5	-4.5354
+302	-63.5	-2.8753
+303	-63.5	0
+304	-63.5	-3.6259
+305	-63.5	-1.1916
+306	-63.5	0
+307	-63.5	0
+308	-63.5	0
+309	-63.5	0
+310	-63.5	0
+311	-63.5	0
+312	-63.5	0
+313	-63.5	0
+314	-63.5	0
+315	-63.5	0
+316	-63.5	0
+317	-63.5	0
+318	-63.5	0
+319	-63.5	0
+320	-63.5	0
+321	-63.5	0
+322	-63.5	0
+323	-63.5	0
+324	-63.5	0
+325	-63.5	0
+326	-63.5	0
+327	-63.5	0
+328	-63.5	0
+329	-63.5	0
+330	-63.5	0
+331	-63.5	0
+332	-63.5	0
+333	-63.5	0
+334	-63.5	0
+335	-63.5	0
+336	-63.5	0
+337	-63.5	0
+338	-63.5	0
+339	-63.5	0
+340	-63.5	0
+341	-63.5	0
+342	-63.5	0
+343	-63.5	0
+344	-63.5	0
+345	-63.5	0
+346	-63.5	0
+347	-63.5	0
+348	-63.5	0
+349	-63.5	0
+350	-63.5	0
+351	-63.5	0
+352	-63.5	0
+353	-63.5	0
+354	-63.5	0
+355	-63.5	0
+356	-63.5	0
+357	-63.5	0
+358	-63.5	0
+359	-63.5	0
+360	-63.5	0
+0	-63	0
+1	-63	0
+2	-63	0
+3	-63	0
+4	-63	0
+5	-63	0
+6	-63	0
+7	-63	0
+8	-63	0
+9	-63	0
+10	-63	0
+11	-63	0
+12	-63	0
+13	-63	0
+14	-63	0
+15	-63	0
+16	-63	0
+17	-63	0
+18	-63	0
+19	-63	0
+20	-63	0
+21	-63	0
+22	-63	0
+23	-63	0
+24	-63	0
+25	-63	0
+26	-63	0
+27	-63	0
+28	-63	0
+29	-63	0
+30	-63	0
+31	-63	0
+32	-63	0
+33	-63	0
+34	-63	0
+35	-63	0
+36	-63	0
+37	-63	0
+38	-63	0
+39	-63	0
+40	-63	0
+41	-63	0
+42	-63	0
+43	-63	0
+44	-63	0
+45	-63	0
+46	-63	0
+47	-63	0
+48	-63	0
+49	-63	0
+50	-63	0
+51	-63	0
+52	-63	0
+53	-63	0
+54	-63	0
+55	-63	0
+56	-63	0
+57	-63	0
+58	-63	0
+59	-63	0
+60	-63	0
+61	-63	0
+62	-63	0
+63	-63	0
+64	-63	0
+65	-63	0
+66	-63	0
+67	-63	0
+68	-63	0
+69	-63	0
+70	-63	0
+71	-63	0
+72	-63	0
+73	-63	0
+74	-63	0
+75	-63	0
+76	-63	0
+77	-63	0
+78	-63	0
+79	-63	0
+80	-63	0
+81	-63	0
+82	-63	0
+83	-63	0
+84	-63	0
+85	-63	0
+86	-63	0
+87	-63	0
+88	-63	0
+89	-63	0
+90	-63	0
+91	-63	0
+92	-63	0
+93	-63	0
+94	-63	0
+95	-63	0
+96	-63	0
+97	-63	0
+98	-63	0
+99	-63	0
+100	-63	0
+101	-63	0
+102	-63	0
+103	-63	0
+104	-63	0
+105	-63	0
+106	-63	0
+107	-63	0
+108	-63	0
+109	-63	0
+110	-63	0
+111	-63	0
+112	-63	0
+113	-63	0
+114	-63	0
+115	-63	0
+116	-63	0
+117	-63	0
+118	-63	0
+119	-63	0
+120	-63	0
+121	-63	0
+122	-63	0
+123	-63	0
+124	-63	0
+125	-63	0
+126	-63	0
+127	-63	0
+128	-63	0
+129	-63	0
+130	-63	0
+131	-63	0
+132	-63	0
+133	-63	0
+134	-63	0
+135	-63	0
+136	-63	0
+137	-63	0
+138	-63	0
+139	-63	0
+140	-63	0
+141	-63	0
+142	-63	0
+143	-63	0
+144	-63	0
+145	-63	0
+146	-63	0
+147	-63	0
+148	-63	0
+149	-63	0
+150	-63	0
+151	-63	0
+152	-63	0
+153	-63	0
+154	-63	0
+155	-63	0
+156	-63	0
+157	-63	0
+158	-63	0
+159	-63	0
+160	-63	0
+161	-63	0
+162	-63	0
+163	-63	0
+164	-63	0
+165	-63	0
+166	-63	0
+167	-63	0
+168	-63	0
+169	-63	0
+170	-63	0
+171	-63	0
+172	-63	0
+173	-63	0
+174	-63	0
+175	-63	0
+176	-63	0
+177	-63	0
+178	-63	0
+179	-63	0
+180	-63	0
+181	-63	0
+182	-63	0
+183	-63	0
+184	-63	0
+185	-63	0
+186	-63	0
+187	-63	0
+188	-63	0
+189	-63	0
+190	-63	0
+191	-63	0
+192	-63	0
+193	-63	0
+194	-63	0
+195	-63	0
+196	-63	0
+197	-63	0
+198	-63	0
+199	-63	0
+200	-63	0
+201	-63	0
+202	-63	0
+203	-63	0
+204	-63	0
+205	-63	0
+206	-63	0
+207	-63	0
+208	-63	0
+209	-63	0
+210	-63	0
+211	-63	0
+212	-63	0
+213	-63	0
+214	-63	0
+215	-63	0
+216	-63	0
+217	-63	0
+218	-63	0
+219	-63	0
+220	-63	0
+221	-63	0
+222	-63	0
+223	-63	0
+224	-63	0
+225	-63	0
+226	-63	0
+227	-63	0
+228	-63	0
+229	-63	0
+230	-63	0
+231	-63	0
+232	-63	0
+233	-63	0
+234	-63	0
+235	-63	0
+236	-63	0
+237	-63	0
+238	-63	0
+239	-63	0
+240	-63	0
+241	-63	0
+242	-63	0
+243	-63	0
+244	-63	0
+245	-63	0
+246	-63	0
+247	-63	0
+248	-63	0
+249	-63	0
+250	-63	0
+251	-63	0
+252	-63	0
+253	-63	0
+254	-63	0
+255	-63	0
+256	-63	0
+257	-63	0
+258	-63	0
+259	-63	0
+260	-63	0
+261	-63	0
+262	-63	0
+263	-63	0
+264	-63	0
+265	-63	0
+266	-63	0
+267	-63	0
+268	-63	0
+269	-63	0
+270	-63	0
+271	-63	0
+272	-63	0
+273	-63	0
+274	-63	0
+275	-63	0
+276	-63	0
+277	-63	0
+278	-63	0
+279	-63	0
+280	-63	0
+281	-63	0
+282	-63	0
+283	-63	0
+284	-63	0
+285	-63	0
+286	-63	0
+287	-63	0
+288	-63	0
+289	-63	0
+290	-63	0
+291	-63	0
+292	-63	0
+293	-63	0
+294	-63	0
+295	-63	0
+296	-63	0
+297	-63	0
+298	-63	0
+299	-63	-3.4111
+300	-63	0
+301	-63	-0.85541
+302	-63	-0.6641
+303	-63	0
+304	-63	-2.7979
+305	-63	-0.84623
+306	-63	0
+307	-63	0
+308	-63	0
+309	-63	0
+310	-63	0
+311	-63	0
+312	-63	0
+313	-63	0
+314	-63	0
+315	-63	0
+316	-63	0
+317	-63	0
+318	-63	0
+319	-63	0
+320	-63	0
+321	-63	0
+322	-63	0
+323	-63	0
+324	-63	0
+325	-63	0
+326	-63	0
+327	-63	0
+328	-63	0
+329	-63	0
+330	-63	0
+331	-63	0
+332	-63	0
+333	-63	0
+334	-63	0
+335	-63	0
+336	-63	0
+337	-63	0
+338	-63	0
+339	-63	0
+340	-63	0
+341	-63	0
+342	-63	0
+343	-63	0
+344	-63	0
+345	-63	0
+346	-63	0
+347	-63	0
+348	-63	0
+349	-63	0
+350	-63	0
+351	-63	0
+352	-63	0
+353	-63	0
+354	-63	0
+355	-63	0
+356	-63	0
+357	-63	0
+358	-63	0
+359	-63	0
+360	-63	0
+0	-62.5	0
+1	-62.5	0
+2	-62.5	0
+3	-62.5	0
+4	-62.5	0
+5	-62.5	0
+6	-62.5	0
+7	-62.5	0
+8	-62.5	0
+9	-62.5	0
+10	-62.5	0
+11	-62.5	0
+12	-62.5	0
+13	-62.5	0
+14	-62.5	0
+15	-62.5	0
+16	-62.5	0
+17	-62.5	0
+18	-62.5	0
+19	-62.5	0
+20	-62.5	0
+21	-62.5	0
+22	-62.5	0
+23	-62.5	0
+24	-62.5	0
+25	-62.5	0
+26	-62.5	0
+27	-62.5	0
+28	-62.5	0
+29	-62.5	0
+30	-62.5	0
+31	-62.5	0
+32	-62.5	0
+33	-62.5	0
+34	-62.5	0
+35	-62.5	0
+36	-62.5	0
+37	-62.5	0
+38	-62.5	0
+39	-62.5	0
+40	-62.5	0
+41	-62.5	0
+42	-62.5	0
+43	-62.5	0
+44	-62.5	0
+45	-62.5	0
+46	-62.5	0
+47	-62.5	0
+48	-62.5	0
+49	-62.5	0
+50	-62.5	0
+51	-62.5	0
+52	-62.5	0
+53	-62.5	0
+54	-62.5	0
+55	-62.5	0
+56	-62.5	0
+57	-62.5	0
+58	-62.5	0
+59	-62.5	0
+60	-62.5	0
+61	-62.5	0
+62	-62.5	0
+63	-62.5	0
+64	-62.5	0
+65	-62.5	0
+66	-62.5	0
+67	-62.5	0
+68	-62.5	0
+69	-62.5	0
+70	-62.5	0
+71	-62.5	0
+72	-62.5	0
+73	-62.5	0
+74	-62.5	0
+75	-62.5	0
+76	-62.5	0
+77	-62.5	0
+78	-62.5	0
+79	-62.5	0
+80	-62.5	0
+81	-62.5	0
+82	-62.5	0
+83	-62.5	0
+84	-62.5	0
+85	-62.5	0
+86	-62.5	0
+87	-62.5	0
+88	-62.5	0
+89	-62.5	0
+90	-62.5	0
+91	-62.5	0
+92	-62.5	0
+93	-62.5	0
+94	-62.5	0
+95	-62.5	0
+96	-62.5	0
+97	-62.5	0
+98	-62.5	0
+99	-62.5	0
+100	-62.5	0
+101	-62.5	0
+102	-62.5	0
+103	-62.5	0
+104	-62.5	0
+105	-62.5	0
+106	-62.5	0
+107	-62.5	0
+108	-62.5	0
+109	-62.5	0
+110	-62.5	0
+111	-62.5	0
+112	-62.5	0
+113	-62.5	0
+114	-62.5	0
+115	-62.5	0
+116	-62.5	0
+117	-62.5	0
+118	-62.5	0
+119	-62.5	0
+120	-62.5	0
+121	-62.5	0
+122	-62.5	0
+123	-62.5	0
+124	-62.5	0
+125	-62.5	0
+126	-62.5	0
+127	-62.5	0
+128	-62.5	0
+129	-62.5	0
+130	-62.5	0
+131	-62.5	0
+132	-62.5	0
+133	-62.5	0
+134	-62.5	0
+135	-62.5	0
+136	-62.5	0
+137	-62.5	0
+138	-62.5	0
+139	-62.5	0
+140	-62.5	0
+141	-62.5	0
+142	-62.5	0
+143	-62.5	0
+144	-62.5	0
+145	-62.5	0
+146	-62.5	0
+147	-62.5	0
+148	-62.5	0
+149	-62.5	0
+150	-62.5	0
+151	-62.5	0
+152	-62.5	0
+153	-62.5	0
+154	-62.5	0
+155	-62.5	0
+156	-62.5	0
+157	-62.5	0
+158	-62.5	0
+159	-62.5	0
+160	-62.5	0
+161	-62.5	0
+162	-62.5	0
+163	-62.5	0
+164	-62.5	0
+165	-62.5	0
+166	-62.5	0
+167	-62.5	0
+168	-62.5	0
+169	-62.5	0
+170	-62.5	0
+171	-62.5	0
+172	-62.5	0
+173	-62.5	0
+174	-62.5	0
+175	-62.5	0
+176	-62.5	0
+177	-62.5	0
+178	-62.5	0
+179	-62.5	0
+180	-62.5	0
+181	-62.5	0
+182	-62.5	0
+183	-62.5	0
+184	-62.5	0
+185	-62.5	0
+186	-62.5	0
+187	-62.5	0
+188	-62.5	0
+189	-62.5	0
+190	-62.5	0
+191	-62.5	0
+192	-62.5	0
+193	-62.5	0
+194	-62.5	0
+195	-62.5	0
+196	-62.5	0
+197	-62.5	0
+198	-62.5	0
+199	-62.5	0
+200	-62.5	0
+201	-62.5	0
+202	-62.5	0
+203	-62.5	0
+204	-62.5	0
+205	-62.5	0
+206	-62.5	0
+207	-62.5	0
+208	-62.5	0
+209	-62.5	0
+210	-62.5	0
+211	-62.5	0
+212	-62.5	0
+213	-62.5	0
+214	-62.5	0
+215	-62.5	0
+216	-62.5	0
+217	-62.5	0
+218	-62.5	0
+219	-62.5	0
+220	-62.5	0
+221	-62.5	0
+222	-62.5	0
+223	-62.5	0
+224	-62.5	0
+225	-62.5	0
+226	-62.5	0
+227	-62.5	0
+228	-62.5	0
+229	-62.5	0
+230	-62.5	0
+231	-62.5	0
+232	-62.5	0
+233	-62.5	0
+234	-62.5	0
+235	-62.5	0
+236	-62.5	0
+237	-62.5	0
+238	-62.5	0
+239	-62.5	0
+240	-62.5	0
+241	-62.5	0
+242	-62.5	0
+243	-62.5	0
+244	-62.5	0
+245	-62.5	0
+246	-62.5	0
+247	-62.5	0
+248	-62.5	0
+249	-62.5	0
+250	-62.5	0
+251	-62.5	0
+252	-62.5	0
+253	-62.5	0
+254	-62.5	0
+255	-62.5	0
+256	-62.5	0
+257	-62.5	0
+258	-62.5	0
+259	-62.5	0
+260	-62.5	0
+261	-62.5	0
+262	-62.5	0
+263	-62.5	0
+264	-62.5	0
+265	-62.5	0
+266	-62.5	0
+267	-62.5	0
+268	-62.5	0
+269	-62.5	0
+270	-62.5	0
+271	-62.5	0
+272	-62.5	0
+273	-62.5	0
+274	-62.5	0
+275	-62.5	0
+276	-62.5	0
+277	-62.5	0
+278	-62.5	0
+279	-62.5	0
+280	-62.5	0
+281	-62.5	0
+282	-62.5	0
+283	-62.5	0
+284	-62.5	0
+285	-62.5	0
+286	-62.5	0
+287	-62.5	0
+288	-62.5	0
+289	-62.5	0
+290	-62.5	0
+291	-62.5	0
+292	-62.5	0
+293	-62.5	0
+294	-62.5	0
+295	-62.5	0
+296	-62.5	0
+297	-62.5	0
+298	-62.5	0
+299	-62.5	-3.1448
+300	-62.5	0
+301	-62.5	0
+302	-62.5	-2.9168
+303	-62.5	-0.25267
+304	-62.5	-0.18311
+305	-62.5	-0.37759
+306	-62.5	0
+307	-62.5	0
+308	-62.5	0
+309	-62.5	0
+310	-62.5	0
+311	-62.5	0
+312	-62.5	0
+313	-62.5	0
+314	-62.5	0
+315	-62.5	0
+316	-62.5	0
+317	-62.5	0
+318	-62.5	0
+319	-62.5	0
+320	-62.5	0
+321	-62.5	0
+322	-62.5	0
+323	-62.5	0
+324	-62.5	0
+325	-62.5	0
+326	-62.5	0
+327	-62.5	0
+328	-62.5	0
+329	-62.5	0
+330	-62.5	0
+331	-62.5	0
+332	-62.5	0
+333	-62.5	0
+334	-62.5	0
+335	-62.5	0
+336	-62.5	0
+337	-62.5	0
+338	-62.5	0
+339	-62.5	0
+340	-62.5	0
+341	-62.5	0
+342	-62.5	0
+343	-62.5	0
+344	-62.5	0
+345	-62.5	0
+346	-62.5	0
+347	-62.5	0
+348	-62.5	0
+349	-62.5	0
+350	-62.5	0
+351	-62.5	0
+352	-62.5	0
+353	-62.5	0
+354	-62.5	0
+355	-62.5	0
+356	-62.5	0
+357	-62.5	0
+358	-62.5	0
+359	-62.5	0
+360	-62.5	0
+0	-62	0
+1	-62	0
+2	-62	0
+3	-62	0
+4	-62	0
+5	-62	0
+6	-62	0
+7	-62	0
+8	-62	0
+9	-62	0
+10	-62	0
+11	-62	0
+12	-62	0
+13	-62	0
+14	-62	0
+15	-62	0
+16	-62	0
+17	-62	0
+18	-62	0
+19	-62	0
+20	-62	0
+21	-62	0
+22	-62	0
+23	-62	0
+24	-62	0
+25	-62	0
+26	-62	0
+27	-62	0
+28	-62	0
+29	-62	0
+30	-62	0
+31	-62	0
+32	-62	0
+33	-62	0
+34	-62	0
+35	-62	0
+36	-62	0
+37	-62	0
+38	-62	0
+39	-62	0
+40	-62	0
+41	-62	0
+42	-62	0
+43	-62	0
+44	-62	0
+45	-62	0
+46	-62	0
+47	-62	0
+48	-62	0
+49	-62	0
+50	-62	0
+51	-62	0
+52	-62	0
+53	-62	0
+54	-62	0
+55	-62	0
+56	-62	0
+57	-62	0
+58	-62	0
+59	-62	0
+60	-62	0
+61	-62	0
+62	-62	0
+63	-62	0
+64	-62	0
+65	-62	0
+66	-62	0
+67	-62	0
+68	-62	0
+69	-62	0
+70	-62	0
+71	-62	0
+72	-62	0
+73	-62	0
+74	-62	0
+75	-62	0
+76	-62	0
+77	-62	0
+78	-62	0
+79	-62	0
+80	-62	0
+81	-62	0
+82	-62	0
+83	-62	0
+84	-62	0
+85	-62	0
+86	-62	0
+87	-62	0
+88	-62	0
+89	-62	0
+90	-62	0
+91	-62	0
+92	-62	0
+93	-62	0
+94	-62	0
+95	-62	0
+96	-62	0
+97	-62	0
+98	-62	0
+99	-62	0
+100	-62	0
+101	-62	0
+102	-62	0
+103	-62	0
+104	-62	0
+105	-62	0
+106	-62	0
+107	-62	0
+108	-62	0
+109	-62	0
+110	-62	0
+111	-62	0
+112	-62	0
+113	-62	0
+114	-62	0
+115	-62	0
+116	-62	0
+117	-62	0
+118	-62	0
+119	-62	0
+120	-62	0
+121	-62	0
+122	-62	0
+123	-62	0
+124	-62	0
+125	-62	0
+126	-62	0
+127	-62	0
+128	-62	0
+129	-62	0
+130	-62	0
+131	-62	0
+132	-62	0
+133	-62	0
+134	-62	0
+135	-62	0
+136	-62	0
+137	-62	0
+138	-62	0
+139	-62	0
+140	-62	0
+141	-62	0
+142	-62	0
+143	-62	0
+144	-62	0
+145	-62	0
+146	-62	0
+147	-62	0
+148	-62	0
+149	-62	0
+150	-62	0
+151	-62	0
+152	-62	0
+153	-62	0
+154	-62	0
+155	-62	0
+156	-62	0
+157	-62	0
+158	-62	0
+159	-62	0
+160	-62	0
+161	-62	0
+162	-62	0
+163	-62	0
+164	-62	0
+165	-62	0
+166	-62	0
+167	-62	0
+168	-62	0
+169	-62	0
+170	-62	0
+171	-62	0
+172	-62	0
+173	-62	0
+174	-62	0
+175	-62	0
+176	-62	0
+177	-62	0
+178	-62	0
+179	-62	0
+180	-62	0
+181	-62	0
+182	-62	0
+183	-62	0
+184	-62	0
+185	-62	0
+186	-62	0
+187	-62	0
+188	-62	0
+189	-62	0
+190	-62	0
+191	-62	0
+192	-62	0
+193	-62	0
+194	-62	0
+195	-62	0
+196	-62	0
+197	-62	0
+198	-62	0
+199	-62	0
+200	-62	0
+201	-62	0
+202	-62	0
+203	-62	0
+204	-62	0
+205	-62	0
+206	-62	0
+207	-62	0
+208	-62	0
+209	-62	0
+210	-62	0
+211	-62	0
+212	-62	0
+213	-62	0
+214	-62	0
+215	-62	0
+216	-62	0
+217	-62	0
+218	-62	0
+219	-62	0
+220	-62	0
+221	-62	0
+222	-62	0
+223	-62	0
+224	-62	0
+225	-62	0
+226	-62	0
+227	-62	0
+228	-62	0
+229	-62	0
+230	-62	0
+231	-62	0
+232	-62	0
+233	-62	0
+234	-62	0
+235	-62	0
+236	-62	0
+237	-62	0
+238	-62	0
+239	-62	0
+240	-62	0
+241	-62	0
+242	-62	0
+243	-62	0
+244	-62	0
+245	-62	0
+246	-62	0
+247	-62	0
+248	-62	0
+249	-62	0
+250	-62	0
+251	-62	0
+252	-62	0
+253	-62	0
+254	-62	0
+255	-62	0
+256	-62	0
+257	-62	0
+258	-62	0
+259	-62	0
+260	-62	0
+261	-62	0
+262	-62	0
+263	-62	0
+264	-62	0
+265	-62	0
+266	-62	0
+267	-62	0
+268	-62	0
+269	-62	0
+270	-62	0
+271	-62	0
+272	-62	0
+273	-62	0
+274	-62	0
+275	-62	0
+276	-62	0
+277	-62	0
+278	-62	0
+279	-62	0
+280	-62	0
+281	-62	0
+282	-62	0
+283	-62	0
+284	-62	0
+285	-62	0
+286	-62	0
+287	-62	0
+288	-62	0
+289	-62	0
+290	-62	0
+291	-62	0
+292	-62	0
+293	-62	0
+294	-62	0
+295	-62	0
+296	-62	0
+297	-62	0
+298	-62	0
+299	-62	0
+300	-62	0
+301	-62	-1.1075
+302	-62	-3.8342
+303	-62	-0.55052
+304	-62	0
+305	-62	0
+306	-62	0
+307	-62	0
+308	-62	0
+309	-62	0
+310	-62	0
+311	-62	0
+312	-62	0
+313	-62	0
+314	-62	0
+315	-62	0
+316	-62	0
+317	-62	0
+318	-62	0
+319	-62	0
+320	-62	0
+321	-62	0
+322	-62	0
+323	-62	0
+324	-62	0
+325	-62	0
+326	-62	0
+327	-62	0
+328	-62	0
+329	-62	0
+330	-62	0
+331	-62	0
+332	-62	0
+333	-62	0
+334	-62	0
+335	-62	0
+336	-62	0
+337	-62	0
+338	-62	0
+339	-62	0
+340	-62	0
+341	-62	0
+342	-62	0
+343	-62	0
+344	-62	0
+345	-62	0
+346	-62	0
+347	-62	0
+348	-62	0
+349	-62	0
+350	-62	0
+351	-62	0
+352	-62	0
+353	-62	0
+354	-62	0
+355	-62	0
+356	-62	0
+357	-62	0
+358	-62	0
+359	-62	0
+360	-62	0
+0	-61.5	0
+1	-61.5	0
+2	-61.5	0
+3	-61.5	0
+4	-61.5	0
+5	-61.5	0
+6	-61.5	0
+7	-61.5	0
+8	-61.5	0
+9	-61.5	0
+10	-61.5	0
+11	-61.5	0
+12	-61.5	0
+13	-61.5	0
+14	-61.5	0
+15	-61.5	0
+16	-61.5	0
+17	-61.5	0
+18	-61.5	0
+19	-61.5	0
+20	-61.5	0
+21	-61.5	0
+22	-61.5	0
+23	-61.5	0
+24	-61.5	0
+25	-61.5	0
+26	-61.5	0
+27	-61.5	0
+28	-61.5	0
+29	-61.5	0
+30	-61.5	0
+31	-61.5	0
+32	-61.5	0
+33	-61.5	0
+34	-61.5	0
+35	-61.5	0
+36	-61.5	0
+37	-61.5	0
+38	-61.5	0
+39	-61.5	0
+40	-61.5	0
+41	-61.5	0
+42	-61.5	0
+43	-61.5	0
+44	-61.5	0
+45	-61.5	0
+46	-61.5	0
+47	-61.5	0
+48	-61.5	0
+49	-61.5	0
+50	-61.5	0
+51	-61.5	0
+52	-61.5	0
+53	-61.5	0
+54	-61.5	0
+55	-61.5	0
+56	-61.5	0
+57	-61.5	0
+58	-61.5	0
+59	-61.5	0
+60	-61.5	0
+61	-61.5	0
+62	-61.5	0
+63	-61.5	0
+64	-61.5	0
+65	-61.5	0
+66	-61.5	0
+67	-61.5	0
+68	-61.5	0
+69	-61.5	0
+70	-61.5	0
+71	-61.5	0
+72	-61.5	0
+73	-61.5	0
+74	-61.5	0
+75	-61.5	0
+76	-61.5	0
+77	-61.5	0
+78	-61.5	0
+79	-61.5	0
+80	-61.5	0
+81	-61.5	0
+82	-61.5	0
+83	-61.5	0
+84	-61.5	0
+85	-61.5	0
+86	-61.5	0
+87	-61.5	0
+88	-61.5	0
+89	-61.5	0
+90	-61.5	0
+91	-61.5	0
+92	-61.5	0
+93	-61.5	0
+94	-61.5	0
+95	-61.5	0
+96	-61.5	0
+97	-61.5	0
+98	-61.5	0
+99	-61.5	0
+100	-61.5	0
+101	-61.5	0
+102	-61.5	0
+103	-61.5	0
+104	-61.5	0
+105	-61.5	0
+106	-61.5	0
+107	-61.5	0
+108	-61.5	0
+109	-61.5	0
+110	-61.5	0
+111	-61.5	0
+112	-61.5	0
+113	-61.5	0
+114	-61.5	0
+115	-61.5	0
+116	-61.5	0
+117	-61.5	0
+118	-61.5	0
+119	-61.5	0
+120	-61.5	0
+121	-61.5	0
+122	-61.5	0
+123	-61.5	0
+124	-61.5	0
+125	-61.5	0
+126	-61.5	0
+127	-61.5	0
+128	-61.5	0
+129	-61.5	0
+130	-61.5	0
+131	-61.5	0
+132	-61.5	0
+133	-61.5	0
+134	-61.5	0
+135	-61.5	0
+136	-61.5	0
+137	-61.5	0
+138	-61.5	0
+139	-61.5	0
+140	-61.5	0
+141	-61.5	0
+142	-61.5	0
+143	-61.5	0
+144	-61.5	0
+145	-61.5	0
+146	-61.5	0
+147	-61.5	0
+148	-61.5	0
+149	-61.5	0
+150	-61.5	0
+151	-61.5	0
+152	-61.5	0
+153	-61.5	0
+154	-61.5	0
+155	-61.5	0
+156	-61.5	0
+157	-61.5	0
+158	-61.5	0
+159	-61.5	0
+160	-61.5	0
+161	-61.5	0
+162	-61.5	0
+163	-61.5	0
+164	-61.5	0
+165	-61.5	0
+166	-61.5	0
+167	-61.5	0
+168	-61.5	0
+169	-61.5	0
+170	-61.5	0
+171	-61.5	0
+172	-61.5	0
+173	-61.5	0
+174	-61.5	0
+175	-61.5	0
+176	-61.5	0
+177	-61.5	0
+178	-61.5	0
+179	-61.5	0
+180	-61.5	0
+181	-61.5	0
+182	-61.5	0
+183	-61.5	0
+184	-61.5	0
+185	-61.5	0
+186	-61.5	0
+187	-61.5	0
+188	-61.5	0
+189	-61.5	0
+190	-61.5	0
+191	-61.5	0
+192	-61.5	0
+193	-61.5	0
+194	-61.5	0
+195	-61.5	0
+196	-61.5	0
+197	-61.5	0
+198	-61.5	0
+199	-61.5	0
+200	-61.5	0
+201	-61.5	0
+202	-61.5	0
+203	-61.5	0
+204	-61.5	0
+205	-61.5	0
+206	-61.5	0
+207	-61.5	0
+208	-61.5	0
+209	-61.5	0
+210	-61.5	0
+211	-61.5	0
+212	-61.5	0
+213	-61.5	0
+214	-61.5	0
+215	-61.5	0
+216	-61.5	0
+217	-61.5	0
+218	-61.5	0
+219	-61.5	0
+220	-61.5	0
+221	-61.5	0
+222	-61.5	0
+223	-61.5	0
+224	-61.5	0
+225	-61.5	0
+226	-61.5	0
+227	-61.5	0
+228	-61.5	0
+229	-61.5	0
+230	-61.5	0
+231	-61.5	0
+232	-61.5	0
+233	-61.5	0
+234	-61.5	0
+235	-61.5	0
+236	-61.5	0
+237	-61.5	0
+238	-61.5	0
+239	-61.5	0
+240	-61.5	0
+241	-61.5	0
+242	-61.5	0
+243	-61.5	0
+244	-61.5	0
+245	-61.5	0
+246	-61.5	0
+247	-61.5	0
+248	-61.5	0
+249	-61.5	0
+250	-61.5	0
+251	-61.5	0
+252	-61.5	0
+253	-61.5	0
+254	-61.5	0
+255	-61.5	0
+256	-61.5	0
+257	-61.5	0
+258	-61.5	0
+259	-61.5	0
+260	-61.5	0
+261	-61.5	0
+262	-61.5	0
+263	-61.5	0
+264	-61.5	0
+265	-61.5	0
+266	-61.5	0
+267	-61.5	0
+268	-61.5	0
+269	-61.5	0
+270	-61.5	0
+271	-61.5	0
+272	-61.5	0
+273	-61.5	0
+274	-61.5	0
+275	-61.5	0
+276	-61.5	0
+277	-61.5	0
+278	-61.5	0
+279	-61.5	0
+280	-61.5	0
+281	-61.5	0
+282	-61.5	0
+283	-61.5	0
+284	-61.5	0
+285	-61.5	0
+286	-61.5	0
+287	-61.5	0
+288	-61.5	0
+289	-61.5	0
+290	-61.5	0
+291	-61.5	0
+292	-61.5	0
+293	-61.5	0
+294	-61.5	0
+295	-61.5	0
+296	-61.5	0
+297	-61.5	0
+298	-61.5	0
+299	-61.5	0
+300	-61.5	0
+301	-61.5	-0.8499
+302	-61.5	-2.6579
+303	-61.5	0
+304	-61.5	0
+305	-61.5	0
+306	-61.5	0
+307	-61.5	0
+308	-61.5	0
+309	-61.5	0
+310	-61.5	0
+311	-61.5	0
+312	-61.5	0
+313	-61.5	0
+314	-61.5	0
+315	-61.5	0
+316	-61.5	0
+317	-61.5	0
+318	-61.5	0
+319	-61.5	0
+320	-61.5	0
+321	-61.5	0
+322	-61.5	0
+323	-61.5	0
+324	-61.5	0
+325	-61.5	0
+326	-61.5	0
+327	-61.5	0
+328	-61.5	0
+329	-61.5	0
+330	-61.5	0
+331	-61.5	0
+332	-61.5	0
+333	-61.5	0
+334	-61.5	0
+335	-61.5	0
+336	-61.5	0
+337	-61.5	0
+338	-61.5	0
+339	-61.5	0
+340	-61.5	0
+341	-61.5	0
+342	-61.5	0
+343	-61.5	0
+344	-61.5	0
+345	-61.5	0
+346	-61.5	0
+347	-61.5	0
+348	-61.5	0
+349	-61.5	0
+350	-61.5	0
+351	-61.5	0
+352	-61.5	0
+353	-61.5	0
+354	-61.5	0
+355	-61.5	0
+356	-61.5	0
+357	-61.5	0
+358	-61.5	0
+359	-61.5	0
+360	-61.5	0
+0	-61	0
+1	-61	0
+2	-61	0
+3	-61	0
+4	-61	0
+5	-61	0
+6	-61	0
+7	-61	0
+8	-61	0
+9	-61	0
+10	-61	0
+11	-61	0
+12	-61	0
+13	-61	0
+14	-61	0
+15	-61	0
+16	-61	0
+17	-61	0
+18	-61	0
+19	-61	0
+20	-61	0
+21	-61	0
+22	-61	0
+23	-61	0
+24	-61	0
+25	-61	0
+26	-61	0
+27	-61	0
+28	-61	0
+29	-61	0
+30	-61	0
+31	-61	0
+32	-61	0
+33	-61	0
+34	-61	0
+35	-61	0
+36	-61	0
+37	-61	0
+38	-61	0
+39	-61	0
+40	-61	0
+41	-61	0
+42	-61	0
+43	-61	0
+44	-61	0
+45	-61	0
+46	-61	0
+47	-61	0
+48	-61	0
+49	-61	0
+50	-61	0
+51	-61	0
+52	-61	0
+53	-61	0
+54	-61	0
+55	-61	0
+56	-61	0
+57	-61	0
+58	-61	0
+59	-61	0
+60	-61	0
+61	-61	0
+62	-61	0
+63	-61	0
+64	-61	0
+65	-61	0
+66	-61	0
+67	-61	0
+68	-61	0
+69	-61	0
+70	-61	0
+71	-61	0
+72	-61	0
+73	-61	0
+74	-61	0
+75	-61	0
+76	-61	0
+77	-61	0
+78	-61	0
+79	-61	0
+80	-61	0
+81	-61	0
+82	-61	0
+83	-61	0
+84	-61	0
+85	-61	0
+86	-61	0
+87	-61	0
+88	-61	0
+89	-61	0
+90	-61	0
+91	-61	0
+92	-61	0
+93	-61	0
+94	-61	0
+95	-61	0
+96	-61	0
+97	-61	0
+98	-61	0
+99	-61	0
+100	-61	0
+101	-61	0
+102	-61	0
+103	-61	0
+104	-61	0
+105	-61	0
+106	-61	0
+107	-61	0
+108	-61	0
+109	-61	0
+110	-61	0
+111	-61	0
+112	-61	0
+113	-61	0
+114	-61	0
+115	-61	0
+116	-61	0
+117	-61	0
+118	-61	0
+119	-61	0
+120	-61	0
+121	-61	0
+122	-61	0
+123	-61	0
+124	-61	0
+125	-61	0
+126	-61	0
+127	-61	0
+128	-61	0
+129	-61	0
+130	-61	0
+131	-61	0
+132	-61	0
+133	-61	0
+134	-61	0
+135	-61	0
+136	-61	0
+137	-61	0
+138	-61	0
+139	-61	0
+140	-61	0
+141	-61	0
+142	-61	0
+143	-61	0
+144	-61	0
+145	-61	0
+146	-61	0
+147	-61	0
+148	-61	0
+149	-61	0
+150	-61	0
+151	-61	0
+152	-61	0
+153	-61	0
+154	-61	0
+155	-61	0
+156	-61	0
+157	-61	0
+158	-61	0
+159	-61	0
+160	-61	0
+161	-61	0
+162	-61	0
+163	-61	0
+164	-61	0
+165	-61	0
+166	-61	0
+167	-61	0
+168	-61	0
+169	-61	0
+170	-61	0
+171	-61	0
+172	-61	0
+173	-61	0
+174	-61	0
+175	-61	0
+176	-61	0
+177	-61	0
+178	-61	0
+179	-61	0
+180	-61	0
+181	-61	0
+182	-61	0
+183	-61	0
+184	-61	0
+185	-61	0
+186	-61	0
+187	-61	0
+188	-61	0
+189	-61	0
+190	-61	0
+191	-61	0
+192	-61	0
+193	-61	0
+194	-61	0
+195	-61	0
+196	-61	0
+197	-61	0
+198	-61	0
+199	-61	0
+200	-61	0
+201	-61	0
+202	-61	0
+203	-61	0
+204	-61	0
+205	-61	0
+206	-61	0
+207	-61	0
+208	-61	0
+209	-61	0
+210	-61	0
+211	-61	0
+212	-61	0
+213	-61	0
+214	-61	0
+215	-61	0
+216	-61	0
+217	-61	0
+218	-61	0
+219	-61	0
+220	-61	0
+221	-61	0
+222	-61	0
+223	-61	0
+224	-61	0
+225	-61	0
+226	-61	0
+227	-61	0
+228	-61	0
+229	-61	0
+230	-61	0
+231	-61	0
+232	-61	0
+233	-61	0
+234	-61	0
+235	-61	0
+236	-61	0
+237	-61	0
+238	-61	0
+239	-61	0
+240	-61	0
+241	-61	0
+242	-61	0
+243	-61	0
+244	-61	0
+245	-61	0
+246	-61	0
+247	-61	0
+248	-61	0
+249	-61	0
+250	-61	0
+251	-61	0
+252	-61	0
+253	-61	0
+254	-61	0
+255	-61	0
+256	-61	0
+257	-61	0
+258	-61	0
+259	-61	0
+260	-61	0
+261	-61	0
+262	-61	0
+263	-61	0
+264	-61	0
+265	-61	0
+266	-61	0
+267	-61	0
+268	-61	0
+269	-61	0
+270	-61	0
+271	-61	0
+272	-61	0
+273	-61	0
+274	-61	0
+275	-61	0
+276	-61	0
+277	-61	0
+278	-61	0
+279	-61	0
+280	-61	0
+281	-61	0
+282	-61	0
+283	-61	0
+284	-61	0
+285	-61	0
+286	-61	0
+287	-61	0
+288	-61	0
+289	-61	0
+290	-61	0
+291	-61	0
+292	-61	0
+293	-61	0
+294	-61	0
+295	-61	0
+296	-61	0
+297	-61	0
+298	-61	0
+299	-61	0
+300	-61	0
+301	-61	0
+302	-61	-1.4817
+303	-61	0
+304	-61	0
+305	-61	0
+306	-61	0
+307	-61	0
+308	-61	0
+309	-61	0
+310	-61	0
+311	-61	0
+312	-61	0
+313	-61	0
+314	-61	0
+315	-61	0
+316	-61	0
+317	-61	0
+318	-61	0
+319	-61	0
+320	-61	0
+321	-61	0
+322	-61	0
+323	-61	0
+324	-61	0
+325	-61	0
+326	-61	0
+327	-61	0
+328	-61	0
+329	-61	0
+330	-61	0
+331	-61	0
+332	-61	0
+333	-61	0
+334	-61	0
+335	-61	0
+336	-61	0
+337	-61	0
+338	-61	0
+339	-61	0
+340	-61	0
+341	-61	0
+342	-61	0
+343	-61	0
+344	-61	0
+345	-61	0
+346	-61	0
+347	-61	0
+348	-61	0
+349	-61	0
+350	-61	0
+351	-61	0
+352	-61	0
+353	-61	0
+354	-61	0
+355	-61	0
+356	-61	0
+357	-61	0
+358	-61	0
+359	-61	0
+360	-61	0
+0	-60.5	0
+1	-60.5	0
+2	-60.5	0
+3	-60.5	0
+4	-60.5	0
+5	-60.5	0
+6	-60.5	0
+7	-60.5	0
+8	-60.5	0
+9	-60.5	0
+10	-60.5	0
+11	-60.5	0
+12	-60.5	0
+13	-60.5	0
+14	-60.5	0
+15	-60.5	0
+16	-60.5	0
+17	-60.5	0
+18	-60.5	0
+19	-60.5	0
+20	-60.5	0
+21	-60.5	0
+22	-60.5	0
+23	-60.5	0
+24	-60.5	0
+25	-60.5	0
+26	-60.5	0
+27	-60.5	0
+28	-60.5	0
+29	-60.5	0
+30	-60.5	0
+31	-60.5	0
+32	-60.5	0
+33	-60.5	0
+34	-60.5	0
+35	-60.5	0
+36	-60.5	0
+37	-60.5	0
+38	-60.5	0
+39	-60.5	0
+40	-60.5	0
+41	-60.5	0
+42	-60.5	0
+43	-60.5	0
+44	-60.5	0
+45	-60.5	0
+46	-60.5	0
+47	-60.5	0
+48	-60.5	0
+49	-60.5	0
+50	-60.5	0
+51	-60.5	0
+52	-60.5	0
+53	-60.5	0
+54	-60.5	0
+55	-60.5	0
+56	-60.5	0
+57	-60.5	0
+58	-60.5	0
+59	-60.5	0
+60	-60.5	0
+61	-60.5	0
+62	-60.5	0
+63	-60.5	0
+64	-60.5	0
+65	-60.5	0
+66	-60.5	0
+67	-60.5	0
+68	-60.5	0
+69	-60.5	0
+70	-60.5	0
+71	-60.5	0
+72	-60.5	0
+73	-60.5	0
+74	-60.5	0
+75	-60.5	0
+76	-60.5	0
+77	-60.5	0
+78	-60.5	0
+79	-60.5	0
+80	-60.5	0
+81	-60.5	0
+82	-60.5	0
+83	-60.5	0
+84	-60.5	0
+85	-60.5	0
+86	-60.5	0
+87	-60.5	0
+88	-60.5	0
+89	-60.5	0
+90	-60.5	0
+91	-60.5	0
+92	-60.5	0
+93	-60.5	0
+94	-60.5	0
+95	-60.5	0
+96	-60.5	0
+97	-60.5	0
+98	-60.5	0
+99	-60.5	0
+100	-60.5	0
+101	-60.5	0
+102	-60.5	0
+103	-60.5	0
+104	-60.5	0
+105	-60.5	0
+106	-60.5	0
+107	-60.5	0
+108	-60.5	0
+109	-60.5	0
+110	-60.5	0
+111	-60.5	0
+112	-60.5	0
+113	-60.5	0
+114	-60.5	0
+115	-60.5	0
+116	-60.5	0
+117	-60.5	0
+118	-60.5	0
+119	-60.5	0
+120	-60.5	0
+121	-60.5	0
+122	-60.5	0
+123	-60.5	0
+124	-60.5	0
+125	-60.5	0
+126	-60.5	0
+127	-60.5	0
+128	-60.5	0
+129	-60.5	0
+130	-60.5	0
+131	-60.5	0
+132	-60.5	0
+133	-60.5	0
+134	-60.5	0
+135	-60.5	0
+136	-60.5	0
+137	-60.5	0
+138	-60.5	0
+139	-60.5	0
+140	-60.5	0
+141	-60.5	0
+142	-60.5	0
+143	-60.5	0
+144	-60.5	0
+145	-60.5	0
+146	-60.5	0
+147	-60.5	0
+148	-60.5	0
+149	-60.5	0
+150	-60.5	0
+151	-60.5	0
+152	-60.5	0
+153	-60.5	0
+154	-60.5	0
+155	-60.5	0
+156	-60.5	0
+157	-60.5	0
+158	-60.5	0
+159	-60.5	0
+160	-60.5	0
+161	-60.5	0
+162	-60.5	0
+163	-60.5	0
+164	-60.5	0
+165	-60.5	0
+166	-60.5	0
+167	-60.5	0
+168	-60.5	0
+169	-60.5	0
+170	-60.5	0
+171	-60.5	0
+172	-60.5	0
+173	-60.5	0
+174	-60.5	0
+175	-60.5	0
+176	-60.5	0
+177	-60.5	0
+178	-60.5	0
+179	-60.5	0
+180	-60.5	0
+181	-60.5	0
+182	-60.5	0
+183	-60.5	0
+184	-60.5	0
+185	-60.5	0
+186	-60.5	0
+187	-60.5	0
+188	-60.5	0
+189	-60.5	0
+190	-60.5	0
+191	-60.5	0
+192	-60.5	0
+193	-60.5	0
+194	-60.5	0
+195	-60.5	0
+196	-60.5	0
+197	-60.5	0
+198	-60.5	0
+199	-60.5	0
+200	-60.5	0
+201	-60.5	0
+202	-60.5	0
+203	-60.5	0
+204	-60.5	0
+205	-60.5	0
+206	-60.5	0
+207	-60.5	0
+208	-60.5	0
+209	-60.5	0
+210	-60.5	0
+211	-60.5	0
+212	-60.5	0
+213	-60.5	0
+214	-60.5	0
+215	-60.5	0
+216	-60.5	0
+217	-60.5	0
+218	-60.5	0
+219	-60.5	0
+220	-60.5	0
+221	-60.5	0
+222	-60.5	0
+223	-60.5	0
+224	-60.5	0
+225	-60.5	0
+226	-60.5	0
+227	-60.5	0
+228	-60.5	0
+229	-60.5	0
+230	-60.5	0
+231	-60.5	0
+232	-60.5	0
+233	-60.5	0
+234	-60.5	0
+235	-60.5	0
+236	-60.5	0
+237	-60.5	0
+238	-60.5	0
+239	-60.5	0
+240	-60.5	0
+241	-60.5	0
+242	-60.5	0
+243	-60.5	0
+244	-60.5	0
+245	-60.5	0
+246	-60.5	0
+247	-60.5	0
+248	-60.5	0
+249	-60.5	0
+250	-60.5	0
+251	-60.5	0
+252	-60.5	0
+253	-60.5	0
+254	-60.5	0
+255	-60.5	0
+256	-60.5	0
+257	-60.5	0
+258	-60.5	0
+259	-60.5	0
+260	-60.5	0
+261	-60.5	0
+262	-60.5	0
+263	-60.5	0
+264	-60.5	0
+265	-60.5	0
+266	-60.5	0
+267	-60.5	0
+268	-60.5	0
+269	-60.5	0
+270	-60.5	0
+271	-60.5	0
+272	-60.5	0
+273	-60.5	0
+274	-60.5	0
+275	-60.5	0
+276	-60.5	0
+277	-60.5	0
+278	-60.5	0
+279	-60.5	0
+280	-60.5	0
+281	-60.5	0
+282	-60.5	0
+283	-60.5	0
+284	-60.5	0
+285	-60.5	0
+286	-60.5	0
+287	-60.5	0
+288	-60.5	0
+289	-60.5	0
+290	-60.5	0
+291	-60.5	0
+292	-60.5	0
+293	-60.5	0
+294	-60.5	0
+295	-60.5	0
+296	-60.5	0
+297	-60.5	0
+298	-60.5	0
+299	-60.5	0
+300	-60.5	0
+301	-60.5	0
+302	-60.5	-0.3055
+303	-60.5	0
+304	-60.5	0
+305	-60.5	0
+306	-60.5	0
+307	-60.5	0
+308	-60.5	0
+309	-60.5	0
+310	-60.5	0
+311	-60.5	0
+312	-60.5	0
+313	-60.5	0
+314	-60.5	0
+315	-60.5	0
+316	-60.5	0
+317	-60.5	0
+318	-60.5	0
+319	-60.5	0
+320	-60.5	0
+321	-60.5	0
+322	-60.5	0
+323	-60.5	0
+324	-60.5	0
+325	-60.5	0
+326	-60.5	0
+327	-60.5	0
+328	-60.5	0
+329	-60.5	0
+330	-60.5	0
+331	-60.5	0
+332	-60.5	0
+333	-60.5	0
+334	-60.5	0
+335	-60.5	0
+336	-60.5	0
+337	-60.5	0
+338	-60.5	0
+339	-60.5	0
+340	-60.5	0
+341	-60.5	0
+342	-60.5	0
+343	-60.5	0
+344	-60.5	0
+345	-60.5	0
+346	-60.5	0
+347	-60.5	0
+348	-60.5	0
+349	-60.5	0
+350	-60.5	0
+351	-60.5	0
+352	-60.5	0
+353	-60.5	0
+354	-60.5	0
+355	-60.5	0
+356	-60.5	0
+357	-60.5	0
+358	-60.5	0
+359	-60.5	0
+360	-60.5	0
+0	-60	0
+1	-60	0
+2	-60	0
+3	-60	0
+4	-60	0
+5	-60	0
+6	-60	0
+7	-60	0
+8	-60	0
+9	-60	0
+10	-60	0
+11	-60	0
+12	-60	0
+13	-60	0
+14	-60	0
+15	-60	0
+16	-60	0
+17	-60	0
+18	-60	0
+19	-60	0
+20	-60	0
+21	-60	0
+22	-60	0
+23	-60	0
+24	-60	0
+25	-60	0
+26	-60	0
+27	-60	0
+28	-60	0
+29	-60	0
+30	-60	0
+31	-60	0
+32	-60	0
+33	-60	0
+34	-60	0
+35	-60	0
+36	-60	0
+37	-60	0
+38	-60	0
+39	-60	0
+40	-60	0
+41	-60	0
+42	-60	0
+43	-60	0
+44	-60	0
+45	-60	0
+46	-60	0
+47	-60	0
+48	-60	0
+49	-60	0
+50	-60	0
+51	-60	0
+52	-60	0
+53	-60	0
+54	-60	0
+55	-60	0
+56	-60	0
+57	-60	0
+58	-60	0
+59	-60	0
+60	-60	0
+61	-60	0
+62	-60	0
+63	-60	0
+64	-60	0
+65	-60	0
+66	-60	0
+67	-60	0
+68	-60	0
+69	-60	0
+70	-60	0
+71	-60	0
+72	-60	0
+73	-60	0
+74	-60	0
+75	-60	0
+76	-60	0
+77	-60	0
+78	-60	0
+79	-60	0
+80	-60	0
+81	-60	0
+82	-60	0
+83	-60	0
+84	-60	0
+85	-60	0
+86	-60	0
+87	-60	0
+88	-60	0
+89	-60	0
+90	-60	0
+91	-60	0
+92	-60	0
+93	-60	0
+94	-60	0
+95	-60	0
+96	-60	0
+97	-60	0
+98	-60	0
+99	-60	0
+100	-60	0
+101	-60	0
+102	-60	0
+103	-60	0
+104	-60	0
+105	-60	0
+106	-60	0
+107	-60	0
+108	-60	0
+109	-60	0
+110	-60	0
+111	-60	0
+112	-60	0
+113	-60	0
+114	-60	0
+115	-60	0
+116	-60	0
+117	-60	0
+118	-60	0
+119	-60	0
+120	-60	0
+121	-60	0
+122	-60	0
+123	-60	0
+124	-60	0
+125	-60	0
+126	-60	0
+127	-60	0
+128	-60	0
+129	-60	0
+130	-60	0
+131	-60	0
+132	-60	0
+133	-60	0
+134	-60	0
+135	-60	0
+136	-60	0
+137	-60	0
+138	-60	0
+139	-60	0
+140	-60	0
+141	-60	0
+142	-60	0
+143	-60	0
+144	-60	0
+145	-60	0
+146	-60	0
+147	-60	0
+148	-60	0
+149	-60	0
+150	-60	0
+151	-60	0
+152	-60	0
+153	-60	0
+154	-60	0
+155	-60	0
+156	-60	0
+157	-60	0
+158	-60	0
+159	-60	0
+160	-60	0
+161	-60	0
+162	-60	0
+163	-60	0
+164	-60	0
+165	-60	0
+166	-60	0
+167	-60	0
+168	-60	0
+169	-60	0
+170	-60	0
+171	-60	0
+172	-60	0
+173	-60	0
+174	-60	0
+175	-60	0
+176	-60	0
+177	-60	0
+178	-60	0
+179	-60	0
+180	-60	0
+181	-60	0
+182	-60	0
+183	-60	0
+184	-60	0
+185	-60	0
+186	-60	0
+187	-60	0
+188	-60	0
+189	-60	0
+190	-60	0
+191	-60	0
+192	-60	0
+193	-60	0
+194	-60	0
+195	-60	0
+196	-60	0
+197	-60	0
+198	-60	0
+199	-60	0
+200	-60	0
+201	-60	0
+202	-60	0
+203	-60	0
+204	-60	0
+205	-60	0
+206	-60	0
+207	-60	0
+208	-60	0
+209	-60	0
+210	-60	0
+211	-60	0
+212	-60	0
+213	-60	0
+214	-60	0
+215	-60	0
+216	-60	0
+217	-60	0
+218	-60	0
+219	-60	0
+220	-60	0
+221	-60	0
+222	-60	0
+223	-60	0
+224	-60	0
+225	-60	0
+226	-60	0
+227	-60	0
+228	-60	0
+229	-60	0
+230	-60	0
+231	-60	0
+232	-60	0
+233	-60	0
+234	-60	0
+235	-60	0
+236	-60	0
+237	-60	0
+238	-60	0
+239	-60	0
+240	-60	0
+241	-60	0
+242	-60	0
+243	-60	0
+244	-60	0
+245	-60	0
+246	-60	0
+247	-60	0
+248	-60	0
+249	-60	0
+250	-60	0
+251	-60	0
+252	-60	0
+253	-60	0
+254	-60	0
+255	-60	0
+256	-60	0
+257	-60	0
+258	-60	0
+259	-60	0
+260	-60	0
+261	-60	0
+262	-60	0
+263	-60	0
+264	-60	0
+265	-60	0
+266	-60	0
+267	-60	0
+268	-60	0
+269	-60	0
+270	-60	0
+271	-60	0
+272	-60	0
+273	-60	0
+274	-60	0
+275	-60	0
+276	-60	0
+277	-60	0
+278	-60	0
+279	-60	0
+280	-60	0
+281	-60	0
+282	-60	0
+283	-60	0
+284	-60	0
+285	-60	0
+286	-60	0
+287	-60	0
+288	-60	0
+289	-60	0
+290	-60	0
+291	-60	0
+292	-60	0
+293	-60	0
+294	-60	0
+295	-60	0
+296	-60	0
+297	-60	0
+298	-60	0
+299	-60	0
+300	-60	0
+301	-60	0
+302	-60	0
+303	-60	0
+304	-60	0
+305	-60	0
+306	-60	0
+307	-60	0
+308	-60	0
+309	-60	0
+310	-60	0
+311	-60	0
+312	-60	0
+313	-60	0
+314	-60	0
+315	-60	0
+316	-60	0
+317	-60	0
+318	-60	0
+319	-60	0
+320	-60	0
+321	-60	0
+322	-60	0
+323	-60	0
+324	-60	0
+325	-60	0
+326	-60	0
+327	-60	0
+328	-60	0
+329	-60	0
+330	-60	0
+331	-60	0
+332	-60	0
+333	-60	0
+334	-60	0
+335	-60	0
+336	-60	0
+337	-60	0
+338	-60	0
+339	-60	0
+340	-60	0
+341	-60	0
+342	-60	0
+343	-60	0
+344	-60	0
+345	-60	0
+346	-60	0
+347	-60	0
+348	-60	0
+349	-60	0
+350	-60	0
+351	-60	0
+352	-60	0
+353	-60	0
+354	-60	0
+355	-60	0
+356	-60	0
+357	-60	0
+358	-60	0
+359	-60	0
+360	-60	0
+0	-59.5	0
+1	-59.5	0
+2	-59.5	0
+3	-59.5	0
+4	-59.5	0
+5	-59.5	0
+6	-59.5	0
+7	-59.5	0
+8	-59.5	0
+9	-59.5	0
+10	-59.5	0
+11	-59.5	0
+12	-59.5	0
+13	-59.5	0
+14	-59.5	0
+15	-59.5	0
+16	-59.5	0
+17	-59.5	0
+18	-59.5	0
+19	-59.5	0
+20	-59.5	0
+21	-59.5	0
+22	-59.5	0
+23	-59.5	0
+24	-59.5	0
+25	-59.5	0
+26	-59.5	0
+27	-59.5	0
+28	-59.5	0
+29	-59.5	0
+30	-59.5	0
+31	-59.5	0
+32	-59.5	0
+33	-59.5	0
+34	-59.5	0
+35	-59.5	0
+36	-59.5	0
+37	-59.5	0
+38	-59.5	0
+39	-59.5	0
+40	-59.5	0
+41	-59.5	0
+42	-59.5	0
+43	-59.5	0
+44	-59.5	0
+45	-59.5	0
+46	-59.5	0
+47	-59.5	0
+48	-59.5	0
+49	-59.5	0
+50	-59.5	0
+51	-59.5	0
+52	-59.5	0
+53	-59.5	0
+54	-59.5	0
+55	-59.5	0
+56	-59.5	0
+57	-59.5	0
+58	-59.5	0
+59	-59.5	0
+60	-59.5	0
+61	-59.5	0
+62	-59.5	0
+63	-59.5	0
+64	-59.5	0
+65	-59.5	0
+66	-59.5	0
+67	-59.5	0
+68	-59.5	0
+69	-59.5	0
+70	-59.5	0
+71	-59.5	0
+72	-59.5	0
+73	-59.5	0
+74	-59.5	0
+75	-59.5	0
+76	-59.5	0
+77	-59.5	0
+78	-59.5	0
+79	-59.5	0
+80	-59.5	0
+81	-59.5	0
+82	-59.5	0
+83	-59.5	0
+84	-59.5	0
+85	-59.5	0
+86	-59.5	0
+87	-59.5	0
+88	-59.5	0
+89	-59.5	0
+90	-59.5	0
+91	-59.5	0
+92	-59.5	0
+93	-59.5	0
+94	-59.5	0
+95	-59.5	0
+96	-59.5	0
+97	-59.5	0
+98	-59.5	0
+99	-59.5	0
+100	-59.5	0
+101	-59.5	0
+102	-59.5	0
+103	-59.5	0
+104	-59.5	0
+105	-59.5	0
+106	-59.5	0
+107	-59.5	0
+108	-59.5	0
+109	-59.5	0
+110	-59.5	0
+111	-59.5	0
+112	-59.5	0
+113	-59.5	0
+114	-59.5	0
+115	-59.5	0
+116	-59.5	0
+117	-59.5	0
+118	-59.5	0
+119	-59.5	0
+120	-59.5	0
+121	-59.5	0
+122	-59.5	0
+123	-59.5	0
+124	-59.5	0
+125	-59.5	0
+126	-59.5	0
+127	-59.5	0
+128	-59.5	0
+129	-59.5	0
+130	-59.5	0
+131	-59.5	0
+132	-59.5	0
+133	-59.5	0
+134	-59.5	0
+135	-59.5	0
+136	-59.5	0
+137	-59.5	0
+138	-59.5	0
+139	-59.5	0
+140	-59.5	0
+141	-59.5	0
+142	-59.5	0
+143	-59.5	0
+144	-59.5	0
+145	-59.5	0
+146	-59.5	0
+147	-59.5	0
+148	-59.5	0
+149	-59.5	0
+150	-59.5	0
+151	-59.5	0
+152	-59.5	0
+153	-59.5	0
+154	-59.5	0
+155	-59.5	0
+156	-59.5	0
+157	-59.5	0
+158	-59.5	0
+159	-59.5	0
+160	-59.5	0
+161	-59.5	0
+162	-59.5	0
+163	-59.5	0
+164	-59.5	0
+165	-59.5	0
+166	-59.5	0
+167	-59.5	0
+168	-59.5	0
+169	-59.5	0
+170	-59.5	0
+171	-59.5	0
+172	-59.5	0
+173	-59.5	0
+174	-59.5	0
+175	-59.5	0
+176	-59.5	0
+177	-59.5	0
+178	-59.5	0
+179	-59.5	0
+180	-59.5	0
+181	-59.5	0
+182	-59.5	0
+183	-59.5	0
+184	-59.5	0
+185	-59.5	0
+186	-59.5	0
+187	-59.5	0
+188	-59.5	0
+189	-59.5	0
+190	-59.5	0
+191	-59.5	0
+192	-59.5	0
+193	-59.5	0
+194	-59.5	0
+195	-59.5	0
+196	-59.5	0
+197	-59.5	0
+198	-59.5	0
+199	-59.5	0
+200	-59.5	0
+201	-59.5	0
+202	-59.5	0
+203	-59.5	0
+204	-59.5	0
+205	-59.5	0
+206	-59.5	0
+207	-59.5	0
+208	-59.5	0
+209	-59.5	0
+210	-59.5	0
+211	-59.5	0
+212	-59.5	0
+213	-59.5	0
+214	-59.5	0
+215	-59.5	0
+216	-59.5	0
+217	-59.5	0
+218	-59.5	0
+219	-59.5	0
+220	-59.5	0
+221	-59.5	0
+222	-59.5	0
+223	-59.5	0
+224	-59.5	0
+225	-59.5	0
+226	-59.5	0
+227	-59.5	0
+228	-59.5	0
+229	-59.5	0
+230	-59.5	0
+231	-59.5	0
+232	-59.5	0
+233	-59.5	0
+234	-59.5	0
+235	-59.5	0
+236	-59.5	0
+237	-59.5	0
+238	-59.5	0
+239	-59.5	0
+240	-59.5	0
+241	-59.5	0
+242	-59.5	0
+243	-59.5	0
+244	-59.5	0
+245	-59.5	0
+246	-59.5	0
+247	-59.5	0
+248	-59.5	0
+249	-59.5	0
+250	-59.5	0
+251	-59.5	0
+252	-59.5	0
+253	-59.5	0
+254	-59.5	0
+255	-59.5	0
+256	-59.5	0
+257	-59.5	0
+258	-59.5	0
+259	-59.5	0
+260	-59.5	0
+261	-59.5	0
+262	-59.5	0
+263	-59.5	0
+264	-59.5	0
+265	-59.5	0
+266	-59.5	0
+267	-59.5	0
+268	-59.5	0
+269	-59.5	0
+270	-59.5	0
+271	-59.5	0
+272	-59.5	0
+273	-59.5	0
+274	-59.5	0
+275	-59.5	0
+276	-59.5	0
+277	-59.5	0
+278	-59.5	0
+279	-59.5	0
+280	-59.5	0
+281	-59.5	0
+282	-59.5	0
+283	-59.5	0
+284	-59.5	0
+285	-59.5	0
+286	-59.5	0
+287	-59.5	0
+288	-59.5	0
+289	-59.5	0
+290	-59.5	0
+291	-59.5	0
+292	-59.5	0
+293	-59.5	0
+294	-59.5	0
+295	-59.5	0
+296	-59.5	0
+297	-59.5	0
+298	-59.5	0
+299	-59.5	0
+300	-59.5	0
+301	-59.5	0
+302	-59.5	0
+303	-59.5	0
+304	-59.5	0
+305	-59.5	0
+306	-59.5	0
+307	-59.5	0
+308	-59.5	0
+309	-59.5	0
+310	-59.5	0
+311	-59.5	0
+312	-59.5	0
+313	-59.5	0
+314	-59.5	0
+315	-59.5	0
+316	-59.5	0
+317	-59.5	0
+318	-59.5	0
+319	-59.5	0
+320	-59.5	0
+321	-59.5	0
+322	-59.5	0
+323	-59.5	0
+324	-59.5	0
+325	-59.5	0
+326	-59.5	0
+327	-59.5	0
+328	-59.5	0
+329	-59.5	0
+330	-59.5	0
+331	-59.5	0
+332	-59.5	0
+333	-59.5	0
+334	-59.5	0
+335	-59.5	0
+336	-59.5	0
+337	-59.5	0
+338	-59.5	0
+339	-59.5	0
+340	-59.5	0
+341	-59.5	0
+342	-59.5	0
+343	-59.5	0
+344	-59.5	0
+345	-59.5	0
+346	-59.5	0
+347	-59.5	0
+348	-59.5	0
+349	-59.5	0
+350	-59.5	0
+351	-59.5	0
+352	-59.5	0
+353	-59.5	0
+354	-59.5	0
+355	-59.5	0
+356	-59.5	0
+357	-59.5	0
+358	-59.5	0
+359	-59.5	0
+360	-59.5	0
+0	-59	0
+1	-59	0
+2	-59	0
+3	-59	0
+4	-59	0
+5	-59	0
+6	-59	0
+7	-59	0
+8	-59	0
+9	-59	0
+10	-59	0
+11	-59	0
+12	-59	0
+13	-59	0
+14	-59	0
+15	-59	0
+16	-59	0
+17	-59	0
+18	-59	0
+19	-59	0
+20	-59	0
+21	-59	0
+22	-59	0
+23	-59	0
+24	-59	0
+25	-59	0
+26	-59	0
+27	-59	0
+28	-59	0
+29	-59	0
+30	-59	0
+31	-59	0
+32	-59	0
+33	-59	0
+34	-59	0
+35	-59	0
+36	-59	0
+37	-59	0
+38	-59	0
+39	-59	0
+40	-59	0
+41	-59	0
+42	-59	0
+43	-59	0
+44	-59	0
+45	-59	0
+46	-59	0
+47	-59	0
+48	-59	0
+49	-59	0
+50	-59	0
+51	-59	0
+52	-59	0
+53	-59	0
+54	-59	0
+55	-59	0
+56	-59	0
+57	-59	0
+58	-59	0
+59	-59	0
+60	-59	0
+61	-59	0
+62	-59	0
+63	-59	0
+64	-59	0
+65	-59	0
+66	-59	0
+67	-59	0
+68	-59	0
+69	-59	0
+70	-59	0
+71	-59	0
+72	-59	0
+73	-59	0
+74	-59	0
+75	-59	0
+76	-59	0
+77	-59	0
+78	-59	0
+79	-59	0
+80	-59	0
+81	-59	0
+82	-59	0
+83	-59	0
+84	-59	0
+85	-59	0
+86	-59	0
+87	-59	0
+88	-59	0
+89	-59	0
+90	-59	0
+91	-59	0
+92	-59	0
+93	-59	0
+94	-59	0
+95	-59	0
+96	-59	0
+97	-59	0
+98	-59	0
+99	-59	0
+100	-59	0
+101	-59	0
+102	-59	0
+103	-59	0
+104	-59	0
+105	-59	0
+106	-59	0
+107	-59	0
+108	-59	0
+109	-59	0
+110	-59	0
+111	-59	0
+112	-59	0
+113	-59	0
+114	-59	0
+115	-59	0
+116	-59	0
+117	-59	0
+118	-59	0
+119	-59	0
+120	-59	0
+121	-59	0
+122	-59	0
+123	-59	0
+124	-59	0
+125	-59	0
+126	-59	0
+127	-59	0
+128	-59	0
+129	-59	0
+130	-59	0
+131	-59	0
+132	-59	0
+133	-59	0
+134	-59	0
+135	-59	0
+136	-59	0
+137	-59	0
+138	-59	0
+139	-59	0
+140	-59	0
+141	-59	0
+142	-59	0
+143	-59	0
+144	-59	0
+145	-59	0
+146	-59	0
+147	-59	0
+148	-59	0
+149	-59	0
+150	-59	0
+151	-59	0
+152	-59	0
+153	-59	0
+154	-59	0
+155	-59	0
+156	-59	0
+157	-59	0
+158	-59	0
+159	-59	0
+160	-59	0
+161	-59	0
+162	-59	0
+163	-59	0
+164	-59	0
+165	-59	0
+166	-59	0
+167	-59	0
+168	-59	0
+169	-59	0
+170	-59	0
+171	-59	0
+172	-59	0
+173	-59	0
+174	-59	0
+175	-59	0
+176	-59	0
+177	-59	0
+178	-59	0
+179	-59	0
+180	-59	0
+181	-59	0
+182	-59	0
+183	-59	0
+184	-59	0
+185	-59	0
+186	-59	0
+187	-59	0
+188	-59	0
+189	-59	0
+190	-59	0
+191	-59	0
+192	-59	0
+193	-59	0
+194	-59	0
+195	-59	0
+196	-59	0
+197	-59	0
+198	-59	0
+199	-59	0
+200	-59	0
+201	-59	0
+202	-59	0
+203	-59	0
+204	-59	0
+205	-59	0
+206	-59	0
+207	-59	0
+208	-59	0
+209	-59	0
+210	-59	0
+211	-59	0
+212	-59	0
+213	-59	0
+214	-59	0
+215	-59	0
+216	-59	0
+217	-59	0
+218	-59	0
+219	-59	0
+220	-59	0
+221	-59	0
+222	-59	0
+223	-59	0
+224	-59	0
+225	-59	0
+226	-59	0
+227	-59	0
+228	-59	0
+229	-59	0
+230	-59	0
+231	-59	0
+232	-59	0
+233	-59	0
+234	-59	0
+235	-59	0
+236	-59	0
+237	-59	0
+238	-59	0
+239	-59	0
+240	-59	0
+241	-59	0
+242	-59	0
+243	-59	0
+244	-59	0
+245	-59	0
+246	-59	0
+247	-59	0
+248	-59	0
+249	-59	0
+250	-59	0
+251	-59	0
+252	-59	0
+253	-59	0
+254	-59	0
+255	-59	0
+256	-59	0
+257	-59	0
+258	-59	0
+259	-59	0
+260	-59	0
+261	-59	0
+262	-59	0
+263	-59	0
+264	-59	0
+265	-59	0
+266	-59	0
+267	-59	0
+268	-59	0
+269	-59	0
+270	-59	0
+271	-59	0
+272	-59	0
+273	-59	0
+274	-59	0
+275	-59	0
+276	-59	0
+277	-59	0
+278	-59	0
+279	-59	0
+280	-59	0
+281	-59	0
+282	-59	0
+283	-59	0
+284	-59	0
+285	-59	0
+286	-59	0
+287	-59	0
+288	-59	0
+289	-59	0
+290	-59	0
+291	-59	0
+292	-59	0
+293	-59	0
+294	-59	0
+295	-59	0
+296	-59	0
+297	-59	0
+298	-59	0
+299	-59	0
+300	-59	0
+301	-59	0
+302	-59	0
+303	-59	0
+304	-59	0
+305	-59	0
+306	-59	0
+307	-59	0
+308	-59	0
+309	-59	0
+310	-59	0
+311	-59	0
+312	-59	0
+313	-59	0
+314	-59	0
+315	-59	0
+316	-59	0
+317	-59	0
+318	-59	0
+319	-59	0
+320	-59	0
+321	-59	0
+322	-59	0
+323	-59	0
+324	-59	0
+325	-59	0
+326	-59	0
+327	-59	0
+328	-59	0
+329	-59	0
+330	-59	0
+331	-59	0
+332	-59	0
+333	-59	0
+334	-59	0
+335	-59	0
+336	-59	0
+337	-59	0
+338	-59	0
+339	-59	0
+340	-59	0
+341	-59	0
+342	-59	0
+343	-59	0
+344	-59	0
+345	-59	0
+346	-59	0
+347	-59	0
+348	-59	0
+349	-59	0
+350	-59	0
+351	-59	0
+352	-59	0
+353	-59	0
+354	-59	0
+355	-59	0
+356	-59	0
+357	-59	0
+358	-59	0
+359	-59	0
+360	-59	0
+0	-58.5	0
+1	-58.5	0
+2	-58.5	0
+3	-58.5	0
+4	-58.5	0
+5	-58.5	0
+6	-58.5	0
+7	-58.5	0
+8	-58.5	0
+9	-58.5	0
+10	-58.5	0
+11	-58.5	0
+12	-58.5	0
+13	-58.5	0
+14	-58.5	0
+15	-58.5	0
+16	-58.5	0
+17	-58.5	0
+18	-58.5	0
+19	-58.5	0
+20	-58.5	0
+21	-58.5	0
+22	-58.5	0
+23	-58.5	0
+24	-58.5	0
+25	-58.5	0
+26	-58.5	0
+27	-58.5	0
+28	-58.5	0
+29	-58.5	0
+30	-58.5	0
+31	-58.5	0
+32	-58.5	0
+33	-58.5	0
+34	-58.5	0
+35	-58.5	0
+36	-58.5	0
+37	-58.5	0
+38	-58.5	0
+39	-58.5	0
+40	-58.5	0
+41	-58.5	0
+42	-58.5	0
+43	-58.5	0
+44	-58.5	0
+45	-58.5	0
+46	-58.5	0
+47	-58.5	0
+48	-58.5	0
+49	-58.5	0
+50	-58.5	0
+51	-58.5	0
+52	-58.5	0
+53	-58.5	0
+54	-58.5	0
+55	-58.5	0
+56	-58.5	0
+57	-58.5	0
+58	-58.5	0
+59	-58.5	0
+60	-58.5	0
+61	-58.5	0
+62	-58.5	0
+63	-58.5	0
+64	-58.5	0
+65	-58.5	0
+66	-58.5	0
+67	-58.5	0
+68	-58.5	0
+69	-58.5	0
+70	-58.5	0
+71	-58.5	0
+72	-58.5	0
+73	-58.5	0
+74	-58.5	0
+75	-58.5	0
+76	-58.5	0
+77	-58.5	0
+78	-58.5	0
+79	-58.5	0
+80	-58.5	0
+81	-58.5	0
+82	-58.5	0
+83	-58.5	0
+84	-58.5	0
+85	-58.5	0
+86	-58.5	0
+87	-58.5	0
+88	-58.5	0
+89	-58.5	0
+90	-58.5	0
+91	-58.5	0
+92	-58.5	0
+93	-58.5	0
+94	-58.5	0
+95	-58.5	0
+96	-58.5	0
+97	-58.5	0
+98	-58.5	0
+99	-58.5	0
+100	-58.5	0
+101	-58.5	0
+102	-58.5	0
+103	-58.5	0
+104	-58.5	0
+105	-58.5	0
+106	-58.5	0
+107	-58.5	0
+108	-58.5	0
+109	-58.5	0
+110	-58.5	0
+111	-58.5	0
+112	-58.5	0
+113	-58.5	0
+114	-58.5	0
+115	-58.5	0
+116	-58.5	0
+117	-58.5	0
+118	-58.5	0
+119	-58.5	0
+120	-58.5	0
+121	-58.5	0
+122	-58.5	0
+123	-58.5	0
+124	-58.5	0
+125	-58.5	0
+126	-58.5	0
+127	-58.5	0
+128	-58.5	0
+129	-58.5	0
+130	-58.5	0
+131	-58.5	0
+132	-58.5	0
+133	-58.5	0
+134	-58.5	0
+135	-58.5	0
+136	-58.5	0
+137	-58.5	0
+138	-58.5	0
+139	-58.5	0
+140	-58.5	0
+141	-58.5	0
+142	-58.5	0
+143	-58.5	0
+144	-58.5	0
+145	-58.5	0
+146	-58.5	0
+147	-58.5	0
+148	-58.5	0
+149	-58.5	0
+150	-58.5	0
+151	-58.5	0
+152	-58.5	0
+153	-58.5	0
+154	-58.5	0
+155	-58.5	0
+156	-58.5	0
+157	-58.5	0
+158	-58.5	0
+159	-58.5	0
+160	-58.5	0
+161	-58.5	0
+162	-58.5	0
+163	-58.5	0
+164	-58.5	0
+165	-58.5	0
+166	-58.5	0
+167	-58.5	0
+168	-58.5	0
+169	-58.5	0
+170	-58.5	0
+171	-58.5	0
+172	-58.5	0
+173	-58.5	0
+174	-58.5	0
+175	-58.5	0
+176	-58.5	0
+177	-58.5	0
+178	-58.5	0
+179	-58.5	0
+180	-58.5	0
+181	-58.5	0
+182	-58.5	0
+183	-58.5	0
+184	-58.5	0
+185	-58.5	0
+186	-58.5	0
+187	-58.5	0
+188	-58.5	0
+189	-58.5	0
+190	-58.5	0
+191	-58.5	0
+192	-58.5	0
+193	-58.5	0
+194	-58.5	0
+195	-58.5	0
+196	-58.5	0
+197	-58.5	0
+198	-58.5	0
+199	-58.5	0
+200	-58.5	0
+201	-58.5	0
+202	-58.5	0
+203	-58.5	0
+204	-58.5	0
+205	-58.5	0
+206	-58.5	0
+207	-58.5	0
+208	-58.5	0
+209	-58.5	0
+210	-58.5	0
+211	-58.5	0
+212	-58.5	0
+213	-58.5	0
+214	-58.5	0
+215	-58.5	0
+216	-58.5	0
+217	-58.5	0
+218	-58.5	0
+219	-58.5	0
+220	-58.5	0
+221	-58.5	0
+222	-58.5	0
+223	-58.5	0
+224	-58.5	0
+225	-58.5	0
+226	-58.5	0
+227	-58.5	0
+228	-58.5	0
+229	-58.5	0
+230	-58.5	0
+231	-58.5	0
+232	-58.5	0
+233	-58.5	0
+234	-58.5	0
+235	-58.5	0
+236	-58.5	0
+237	-58.5	0
+238	-58.5	0
+239	-58.5	0
+240	-58.5	0
+241	-58.5	0
+242	-58.5	0
+243	-58.5	0
+244	-58.5	0
+245	-58.5	0
+246	-58.5	0
+247	-58.5	0
+248	-58.5	0
+249	-58.5	0
+250	-58.5	0
+251	-58.5	0
+252	-58.5	0
+253	-58.5	0
+254	-58.5	0
+255	-58.5	0
+256	-58.5	0
+257	-58.5	0
+258	-58.5	0
+259	-58.5	0
+260	-58.5	0
+261	-58.5	0
+262	-58.5	0
+263	-58.5	0
+264	-58.5	0
+265	-58.5	0
+266	-58.5	0
+267	-58.5	0
+268	-58.5	0
+269	-58.5	0
+270	-58.5	0
+271	-58.5	0
+272	-58.5	0
+273	-58.5	0
+274	-58.5	0
+275	-58.5	0
+276	-58.5	0
+277	-58.5	0
+278	-58.5	0
+279	-58.5	0
+280	-58.5	0
+281	-58.5	0
+282	-58.5	0
+283	-58.5	0
+284	-58.5	0
+285	-58.5	0
+286	-58.5	0
+287	-58.5	0
+288	-58.5	0
+289	-58.5	0
+290	-58.5	0
+291	-58.5	0
+292	-58.5	0
+293	-58.5	0
+294	-58.5	0
+295	-58.5	0
+296	-58.5	0
+297	-58.5	0
+298	-58.5	0
+299	-58.5	0
+300	-58.5	0
+301	-58.5	0
+302	-58.5	0
+303	-58.5	0
+304	-58.5	0
+305	-58.5	0
+306	-58.5	0
+307	-58.5	0
+308	-58.5	0
+309	-58.5	0
+310	-58.5	0
+311	-58.5	0
+312	-58.5	0
+313	-58.5	0
+314	-58.5	0
+315	-58.5	0
+316	-58.5	0
+317	-58.5	0
+318	-58.5	0
+319	-58.5	0
+320	-58.5	0
+321	-58.5	0
+322	-58.5	0
+323	-58.5	0
+324	-58.5	0
+325	-58.5	0
+326	-58.5	0
+327	-58.5	0
+328	-58.5	0
+329	-58.5	0
+330	-58.5	0
+331	-58.5	0
+332	-58.5	0
+333	-58.5	0
+334	-58.5	0
+335	-58.5	0
+336	-58.5	0
+337	-58.5	0
+338	-58.5	0
+339	-58.5	0
+340	-58.5	0
+341	-58.5	0
+342	-58.5	0
+343	-58.5	0
+344	-58.5	0
+345	-58.5	0
+346	-58.5	0
+347	-58.5	0
+348	-58.5	0
+349	-58.5	0
+350	-58.5	0
+351	-58.5	0
+352	-58.5	0
+353	-58.5	0
+354	-58.5	0
+355	-58.5	0
+356	-58.5	0
+357	-58.5	0
+358	-58.5	0
+359	-58.5	0
+360	-58.5	0
+0	-58	0
+1	-58	0
+2	-58	0
+3	-58	0
+4	-58	0
+5	-58	0
+6	-58	0
+7	-58	0
+8	-58	0
+9	-58	0
+10	-58	0
+11	-58	0
+12	-58	0
+13	-58	0
+14	-58	0
+15	-58	0
+16	-58	0
+17	-58	0
+18	-58	0
+19	-58	0
+20	-58	0
+21	-58	0
+22	-58	0
+23	-58	0
+24	-58	0
+25	-58	0
+26	-58	0
+27	-58	0
+28	-58	0
+29	-58	0
+30	-58	0
+31	-58	0
+32	-58	0
+33	-58	0
+34	-58	0
+35	-58	0
+36	-58	0
+37	-58	0
+38	-58	0
+39	-58	0
+40	-58	0
+41	-58	0
+42	-58	0
+43	-58	0
+44	-58	0
+45	-58	0
+46	-58	0
+47	-58	0
+48	-58	0
+49	-58	0
+50	-58	0
+51	-58	0
+52	-58	0
+53	-58	0
+54	-58	0
+55	-58	0
+56	-58	0
+57	-58	0
+58	-58	0
+59	-58	0
+60	-58	0
+61	-58	0
+62	-58	0
+63	-58	0
+64	-58	0
+65	-58	0
+66	-58	0
+67	-58	0
+68	-58	0
+69	-58	0
+70	-58	0
+71	-58	0
+72	-58	0
+73	-58	0
+74	-58	0
+75	-58	0
+76	-58	0
+77	-58	0
+78	-58	0
+79	-58	0
+80	-58	0
+81	-58	0
+82	-58	0
+83	-58	0
+84	-58	0
+85	-58	0
+86	-58	0
+87	-58	0
+88	-58	0
+89	-58	0
+90	-58	0
+91	-58	0
+92	-58	0
+93	-58	0
+94	-58	0
+95	-58	0
+96	-58	0
+97	-58	0
+98	-58	0
+99	-58	0
+100	-58	0
+101	-58	0
+102	-58	0
+103	-58	0
+104	-58	0
+105	-58	0
+106	-58	0
+107	-58	0
+108	-58	0
+109	-58	0
+110	-58	0
+111	-58	0
+112	-58	0
+113	-58	0
+114	-58	0
+115	-58	0
+116	-58	0
+117	-58	0
+118	-58	0
+119	-58	0
+120	-58	0
+121	-58	0
+122	-58	0
+123	-58	0
+124	-58	0
+125	-58	0
+126	-58	0
+127	-58	0
+128	-58	0
+129	-58	0
+130	-58	0
+131	-58	0
+132	-58	0
+133	-58	0
+134	-58	0
+135	-58	0
+136	-58	0
+137	-58	0
+138	-58	0
+139	-58	0
+140	-58	0
+141	-58	0
+142	-58	0
+143	-58	0
+144	-58	0
+145	-58	0
+146	-58	0
+147	-58	0
+148	-58	0
+149	-58	0
+150	-58	0
+151	-58	0
+152	-58	0
+153	-58	0
+154	-58	0
+155	-58	0
+156	-58	0
+157	-58	0
+158	-58	0
+159	-58	0
+160	-58	0
+161	-58	0
+162	-58	0
+163	-58	0
+164	-58	0
+165	-58	0
+166	-58	0
+167	-58	0
+168	-58	0
+169	-58	0
+170	-58	0
+171	-58	0
+172	-58	0
+173	-58	0
+174	-58	0
+175	-58	0
+176	-58	0
+177	-58	0
+178	-58	0
+179	-58	0
+180	-58	0
+181	-58	0
+182	-58	0
+183	-58	0
+184	-58	0
+185	-58	0
+186	-58	0
+187	-58	0
+188	-58	0
+189	-58	0
+190	-58	0
+191	-58	0
+192	-58	0
+193	-58	0
+194	-58	0
+195	-58	0
+196	-58	0
+197	-58	0
+198	-58	0
+199	-58	0
+200	-58	0
+201	-58	0
+202	-58	0
+203	-58	0
+204	-58	0
+205	-58	0
+206	-58	0
+207	-58	0
+208	-58	0
+209	-58	0
+210	-58	0
+211	-58	0
+212	-58	0
+213	-58	0
+214	-58	0
+215	-58	0
+216	-58	0
+217	-58	0
+218	-58	0
+219	-58	0
+220	-58	0
+221	-58	0
+222	-58	0
+223	-58	0
+224	-58	0
+225	-58	0
+226	-58	0
+227	-58	0
+228	-58	0
+229	-58	0
+230	-58	0
+231	-58	0
+232	-58	0
+233	-58	0
+234	-58	0
+235	-58	0
+236	-58	0
+237	-58	0
+238	-58	0
+239	-58	0
+240	-58	0
+241	-58	0
+242	-58	0
+243	-58	0
+244	-58	0
+245	-58	0
+246	-58	0
+247	-58	0
+248	-58	0
+249	-58	0
+250	-58	0
+251	-58	0
+252	-58	0
+253	-58	0
+254	-58	0
+255	-58	0
+256	-58	0
+257	-58	0
+258	-58	0
+259	-58	0
+260	-58	0
+261	-58	0
+262	-58	0
+263	-58	0
+264	-58	0
+265	-58	0
+266	-58	0
+267	-58	0
+268	-58	0
+269	-58	0
+270	-58	0
+271	-58	0
+272	-58	0
+273	-58	0
+274	-58	0
+275	-58	0
+276	-58	0
+277	-58	0
+278	-58	0
+279	-58	0
+280	-58	0
+281	-58	0
+282	-58	0
+283	-58	0
+284	-58	0
+285	-58	0
+286	-58	0
+287	-58	0
+288	-58	0
+289	-58	0
+290	-58	0
+291	-58	0
+292	-58	0
+293	-58	0
+294	-58	0
+295	-58	0
+296	-58	0
+297	-58	0
+298	-58	0
+299	-58	0
+300	-58	0
+301	-58	0
+302	-58	0
+303	-58	0
+304	-58	0
+305	-58	0
+306	-58	0
+307	-58	0
+308	-58	0
+309	-58	0
+310	-58	0
+311	-58	0
+312	-58	0
+313	-58	0
+314	-58	0
+315	-58	0
+316	-58	0
+317	-58	0
+318	-58	0
+319	-58	0
+320	-58	0
+321	-58	0
+322	-58	0
+323	-58	0
+324	-58	0
+325	-58	0
+326	-58	0
+327	-58	0
+328	-58	0
+329	-58	0
+330	-58	0
+331	-58	0
+332	-58	0
+333	-58	0
+334	-58	0
+335	-58	0
+336	-58	0
+337	-58	0
+338	-58	0
+339	-58	0
+340	-58	0
+341	-58	0
+342	-58	0
+343	-58	0
+344	-58	0
+345	-58	0
+346	-58	0
+347	-58	0
+348	-58	0
+349	-58	0
+350	-58	0
+351	-58	0
+352	-58	0
+353	-58	0
+354	-58	0
+355	-58	0
+356	-58	0
+357	-58	0
+358	-58	0
+359	-58	0
+360	-58	0
+0	-57.5	0
+1	-57.5	0
+2	-57.5	0
+3	-57.5	0
+4	-57.5	0
+5	-57.5	0
+6	-57.5	0
+7	-57.5	0
+8	-57.5	0
+9	-57.5	0
+10	-57.5	0
+11	-57.5	0
+12	-57.5	0
+13	-57.5	0
+14	-57.5	0
+15	-57.5	0
+16	-57.5	0
+17	-57.5	0
+18	-57.5	0
+19	-57.5	0
+20	-57.5	0
+21	-57.5	0
+22	-57.5	0
+23	-57.5	0
+24	-57.5	0
+25	-57.5	0
+26	-57.5	0
+27	-57.5	0
+28	-57.5	0
+29	-57.5	0
+30	-57.5	0
+31	-57.5	0
+32	-57.5	0
+33	-57.5	0
+34	-57.5	0
+35	-57.5	0
+36	-57.5	0
+37	-57.5	0
+38	-57.5	0
+39	-57.5	0
+40	-57.5	0
+41	-57.5	0
+42	-57.5	0
+43	-57.5	0
+44	-57.5	0
+45	-57.5	0
+46	-57.5	0
+47	-57.5	0
+48	-57.5	0
+49	-57.5	0
+50	-57.5	0
+51	-57.5	0
+52	-57.5	0
+53	-57.5	0
+54	-57.5	0
+55	-57.5	0
+56	-57.5	0
+57	-57.5	0
+58	-57.5	0
+59	-57.5	0
+60	-57.5	0
+61	-57.5	0
+62	-57.5	0
+63	-57.5	0
+64	-57.5	0
+65	-57.5	0
+66	-57.5	0
+67	-57.5	0
+68	-57.5	0
+69	-57.5	0
+70	-57.5	0
+71	-57.5	0
+72	-57.5	0
+73	-57.5	0
+74	-57.5	0
+75	-57.5	0
+76	-57.5	0
+77	-57.5	0
+78	-57.5	0
+79	-57.5	0
+80	-57.5	0
+81	-57.5	0
+82	-57.5	0
+83	-57.5	0
+84	-57.5	0
+85	-57.5	0
+86	-57.5	0
+87	-57.5	0
+88	-57.5	0
+89	-57.5	0
+90	-57.5	0
+91	-57.5	0
+92	-57.5	0
+93	-57.5	0
+94	-57.5	0
+95	-57.5	0
+96	-57.5	0
+97	-57.5	0
+98	-57.5	0
+99	-57.5	0
+100	-57.5	0
+101	-57.5	0
+102	-57.5	0
+103	-57.5	0
+104	-57.5	0
+105	-57.5	0
+106	-57.5	0
+107	-57.5	0
+108	-57.5	0
+109	-57.5	0
+110	-57.5	0
+111	-57.5	0
+112	-57.5	0
+113	-57.5	0
+114	-57.5	0
+115	-57.5	0
+116	-57.5	0
+117	-57.5	0
+118	-57.5	0
+119	-57.5	0
+120	-57.5	0
+121	-57.5	0
+122	-57.5	0
+123	-57.5	0
+124	-57.5	0
+125	-57.5	0
+126	-57.5	0
+127	-57.5	0
+128	-57.5	0
+129	-57.5	0
+130	-57.5	0
+131	-57.5	0
+132	-57.5	0
+133	-57.5	0
+134	-57.5	0
+135	-57.5	0
+136	-57.5	0
+137	-57.5	0
+138	-57.5	0
+139	-57.5	0
+140	-57.5	0
+141	-57.5	0
+142	-57.5	0
+143	-57.5	0
+144	-57.5	0
+145	-57.5	0
+146	-57.5	0
+147	-57.5	0
+148	-57.5	0
+149	-57.5	0
+150	-57.5	0
+151	-57.5	0
+152	-57.5	0
+153	-57.5	0
+154	-57.5	0
+155	-57.5	0
+156	-57.5	0
+157	-57.5	0
+158	-57.5	0
+159	-57.5	0
+160	-57.5	0
+161	-57.5	0
+162	-57.5	0
+163	-57.5	0
+164	-57.5	0
+165	-57.5	0
+166	-57.5	0
+167	-57.5	0
+168	-57.5	0
+169	-57.5	0
+170	-57.5	0
+171	-57.5	0
+172	-57.5	0
+173	-57.5	0
+174	-57.5	0
+175	-57.5	0
+176	-57.5	0
+177	-57.5	0
+178	-57.5	0
+179	-57.5	0
+180	-57.5	0
+181	-57.5	0
+182	-57.5	0
+183	-57.5	0
+184	-57.5	0
+185	-57.5	0
+186	-57.5	0
+187	-57.5	0
+188	-57.5	0
+189	-57.5	0
+190	-57.5	0
+191	-57.5	0
+192	-57.5	0
+193	-57.5	0
+194	-57.5	0
+195	-57.5	0
+196	-57.5	0
+197	-57.5	0
+198	-57.5	0
+199	-57.5	0
+200	-57.5	0
+201	-57.5	0
+202	-57.5	0
+203	-57.5	0
+204	-57.5	0
+205	-57.5	0
+206	-57.5	0
+207	-57.5	0
+208	-57.5	0
+209	-57.5	0
+210	-57.5	0
+211	-57.5	0
+212	-57.5	0
+213	-57.5	0
+214	-57.5	0
+215	-57.5	0
+216	-57.5	0
+217	-57.5	0
+218	-57.5	0
+219	-57.5	0
+220	-57.5	0
+221	-57.5	0
+222	-57.5	0
+223	-57.5	0
+224	-57.5	0
+225	-57.5	0
+226	-57.5	0
+227	-57.5	0
+228	-57.5	0
+229	-57.5	0
+230	-57.5	0
+231	-57.5	0
+232	-57.5	0
+233	-57.5	0
+234	-57.5	0
+235	-57.5	0
+236	-57.5	0
+237	-57.5	0
+238	-57.5	0
+239	-57.5	0
+240	-57.5	0
+241	-57.5	0
+242	-57.5	0
+243	-57.5	0
+244	-57.5	0
+245	-57.5	0
+246	-57.5	0
+247	-57.5	0
+248	-57.5	0
+249	-57.5	0
+250	-57.5	0
+251	-57.5	0
+252	-57.5	0
+253	-57.5	0
+254	-57.5	0
+255	-57.5	0
+256	-57.5	0
+257	-57.5	0
+258	-57.5	0
+259	-57.5	0
+260	-57.5	0
+261	-57.5	0
+262	-57.5	0
+263	-57.5	0
+264	-57.5	0
+265	-57.5	0
+266	-57.5	0
+267	-57.5	0
+268	-57.5	0
+269	-57.5	0
+270	-57.5	0
+271	-57.5	0
+272	-57.5	0
+273	-57.5	0
+274	-57.5	0
+275	-57.5	0
+276	-57.5	0
+277	-57.5	0
+278	-57.5	0
+279	-57.5	0
+280	-57.5	0
+281	-57.5	0
+282	-57.5	0
+283	-57.5	0
+284	-57.5	0
+285	-57.5	0
+286	-57.5	0
+287	-57.5	0
+288	-57.5	0
+289	-57.5	0
+290	-57.5	0
+291	-57.5	0
+292	-57.5	0
+293	-57.5	0
+294	-57.5	0
+295	-57.5	0
+296	-57.5	0
+297	-57.5	0
+298	-57.5	0
+299	-57.5	0
+300	-57.5	0
+301	-57.5	0
+302	-57.5	0
+303	-57.5	0
+304	-57.5	0
+305	-57.5	0
+306	-57.5	0
+307	-57.5	0
+308	-57.5	0
+309	-57.5	0
+310	-57.5	0
+311	-57.5	0
+312	-57.5	0
+313	-57.5	0
+314	-57.5	0
+315	-57.5	0
+316	-57.5	0
+317	-57.5	0
+318	-57.5	0
+319	-57.5	0
+320	-57.5	0
+321	-57.5	0
+322	-57.5	0
+323	-57.5	0
+324	-57.5	0
+325	-57.5	0
+326	-57.5	0
+327	-57.5	0
+328	-57.5	0
+329	-57.5	0
+330	-57.5	0
+331	-57.5	0
+332	-57.5	0
+333	-57.5	0
+334	-57.5	0
+335	-57.5	0
+336	-57.5	0
+337	-57.5	0
+338	-57.5	0
+339	-57.5	0
+340	-57.5	0
+341	-57.5	0
+342	-57.5	0
+343	-57.5	0
+344	-57.5	0
+345	-57.5	0
+346	-57.5	0
+347	-57.5	0
+348	-57.5	0
+349	-57.5	0
+350	-57.5	0
+351	-57.5	0
+352	-57.5	0
+353	-57.5	0
+354	-57.5	0
+355	-57.5	0
+356	-57.5	0
+357	-57.5	0
+358	-57.5	0
+359	-57.5	0
+360	-57.5	0
+0	-57	0
+1	-57	0
+2	-57	0
+3	-57	0
+4	-57	0
+5	-57	0
+6	-57	0
+7	-57	0
+8	-57	0
+9	-57	0
+10	-57	0
+11	-57	0
+12	-57	0
+13	-57	0
+14	-57	0
+15	-57	0
+16	-57	0
+17	-57	0
+18	-57	0
+19	-57	0
+20	-57	0
+21	-57	0
+22	-57	0
+23	-57	0
+24	-57	0
+25	-57	0
+26	-57	0
+27	-57	0
+28	-57	0
+29	-57	0
+30	-57	0
+31	-57	0
+32	-57	0
+33	-57	0
+34	-57	0
+35	-57	0
+36	-57	0
+37	-57	0
+38	-57	0
+39	-57	0
+40	-57	0
+41	-57	0
+42	-57	0
+43	-57	0
+44	-57	0
+45	-57	0
+46	-57	0
+47	-57	0
+48	-57	0
+49	-57	0
+50	-57	0
+51	-57	0
+52	-57	0
+53	-57	0
+54	-57	0
+55	-57	0
+56	-57	0
+57	-57	0
+58	-57	0
+59	-57	0
+60	-57	0
+61	-57	0
+62	-57	0
+63	-57	0
+64	-57	0
+65	-57	0
+66	-57	0
+67	-57	0
+68	-57	0
+69	-57	0
+70	-57	0
+71	-57	0
+72	-57	0
+73	-57	0
+74	-57	0
+75	-57	0
+76	-57	0
+77	-57	0
+78	-57	0
+79	-57	0
+80	-57	0
+81	-57	0
+82	-57	0
+83	-57	0
+84	-57	0
+85	-57	0
+86	-57	0
+87	-57	0
+88	-57	0
+89	-57	0
+90	-57	0
+91	-57	0
+92	-57	0
+93	-57	0
+94	-57	0
+95	-57	0
+96	-57	0
+97	-57	0
+98	-57	0
+99	-57	0
+100	-57	0
+101	-57	0
+102	-57	0
+103	-57	0
+104	-57	0
+105	-57	0
+106	-57	0
+107	-57	0
+108	-57	0
+109	-57	0
+110	-57	0
+111	-57	0
+112	-57	0
+113	-57	0
+114	-57	0
+115	-57	0
+116	-57	0
+117	-57	0
+118	-57	0
+119	-57	0
+120	-57	0
+121	-57	0
+122	-57	0
+123	-57	0
+124	-57	0
+125	-57	0
+126	-57	0
+127	-57	0
+128	-57	0
+129	-57	0
+130	-57	0
+131	-57	0
+132	-57	0
+133	-57	0
+134	-57	0
+135	-57	0
+136	-57	0
+137	-57	0
+138	-57	0
+139	-57	0
+140	-57	0
+141	-57	0
+142	-57	0
+143	-57	0
+144	-57	0
+145	-57	0
+146	-57	0
+147	-57	0
+148	-57	0
+149	-57	0
+150	-57	0
+151	-57	0
+152	-57	0
+153	-57	0
+154	-57	0
+155	-57	0
+156	-57	0
+157	-57	0
+158	-57	0
+159	-57	0
+160	-57	0
+161	-57	0
+162	-57	0
+163	-57	0
+164	-57	0
+165	-57	0
+166	-57	0
+167	-57	0
+168	-57	0
+169	-57	0
+170	-57	0
+171	-57	0
+172	-57	0
+173	-57	0
+174	-57	0
+175	-57	0
+176	-57	0
+177	-57	0
+178	-57	0
+179	-57	0
+180	-57	0
+181	-57	0
+182	-57	0
+183	-57	0
+184	-57	0
+185	-57	0
+186	-57	0
+187	-57	0
+188	-57	0
+189	-57	0
+190	-57	0
+191	-57	0
+192	-57	0
+193	-57	0
+194	-57	0
+195	-57	0
+196	-57	0
+197	-57	0
+198	-57	0
+199	-57	0
+200	-57	0
+201	-57	0
+202	-57	0
+203	-57	0
+204	-57	0
+205	-57	0
+206	-57	0
+207	-57	0
+208	-57	0
+209	-57	0
+210	-57	0
+211	-57	0
+212	-57	0
+213	-57	0
+214	-57	0
+215	-57	0
+216	-57	0
+217	-57	0
+218	-57	0
+219	-57	0
+220	-57	0
+221	-57	0
+222	-57	0
+223	-57	0
+224	-57	0
+225	-57	0
+226	-57	0
+227	-57	0
+228	-57	0
+229	-57	0
+230	-57	0
+231	-57	0
+232	-57	0
+233	-57	0
+234	-57	0
+235	-57	0
+236	-57	0
+237	-57	0
+238	-57	0
+239	-57	0
+240	-57	0
+241	-57	0
+242	-57	0
+243	-57	0
+244	-57	0
+245	-57	0
+246	-57	0
+247	-57	0
+248	-57	0
+249	-57	0
+250	-57	0
+251	-57	0
+252	-57	0
+253	-57	0
+254	-57	0
+255	-57	0
+256	-57	0
+257	-57	0
+258	-57	0
+259	-57	0
+260	-57	0
+261	-57	0
+262	-57	0
+263	-57	0
+264	-57	0
+265	-57	0
+266	-57	0
+267	-57	0
+268	-57	0
+269	-57	0
+270	-57	0
+271	-57	0
+272	-57	0
+273	-57	0
+274	-57	0
+275	-57	0
+276	-57	0
+277	-57	0
+278	-57	0
+279	-57	0
+280	-57	0
+281	-57	0
+282	-57	0
+283	-57	0
+284	-57	0
+285	-57	0
+286	-57	0
+287	-57	0
+288	-57	0
+289	-57	0
+290	-57	0
+291	-57	0
+292	-57	0
+293	-57	0
+294	-57	0
+295	-57	0
+296	-57	0
+297	-57	0
+298	-57	0
+299	-57	0
+300	-57	0
+301	-57	0
+302	-57	0
+303	-57	0
+304	-57	0
+305	-57	0
+306	-57	0
+307	-57	0
+308	-57	0
+309	-57	0
+310	-57	0
+311	-57	0
+312	-57	0
+313	-57	0
+314	-57	0
+315	-57	0
+316	-57	0
+317	-57	0
+318	-57	0
+319	-57	0
+320	-57	0
+321	-57	0
+322	-57	0
+323	-57	0
+324	-57	0
+325	-57	0
+326	-57	0
+327	-57	0
+328	-57	0
+329	-57	0
+330	-57	0
+331	-57	0
+332	-57	0
+333	-57	0
+334	-57	0
+335	-57	0
+336	-57	0
+337	-57	0
+338	-57	0
+339	-57	0
+340	-57	0
+341	-57	0
+342	-57	0
+343	-57	0
+344	-57	0
+345	-57	0
+346	-57	0
+347	-57	0
+348	-57	0
+349	-57	0
+350	-57	0
+351	-57	0
+352	-57	0
+353	-57	0
+354	-57	0
+355	-57	0
+356	-57	0
+357	-57	0
+358	-57	0
+359	-57	0
+360	-57	0
+0	-56.5	0
+1	-56.5	0
+2	-56.5	0
+3	-56.5	0
+4	-56.5	0
+5	-56.5	0
+6	-56.5	0
+7	-56.5	0
+8	-56.5	0
+9	-56.5	0
+10	-56.5	0
+11	-56.5	0
+12	-56.5	0
+13	-56.5	0
+14	-56.5	0
+15	-56.5	0
+16	-56.5	0
+17	-56.5	0
+18	-56.5	0
+19	-56.5	0
+20	-56.5	0
+21	-56.5	0
+22	-56.5	0
+23	-56.5	0
+24	-56.5	0
+25	-56.5	0
+26	-56.5	0
+27	-56.5	0
+28	-56.5	0
+29	-56.5	0
+30	-56.5	0
+31	-56.5	0
+32	-56.5	0
+33	-56.5	0
+34	-56.5	0
+35	-56.5	0
+36	-56.5	0
+37	-56.5	0
+38	-56.5	0
+39	-56.5	0
+40	-56.5	0
+41	-56.5	0
+42	-56.5	0
+43	-56.5	0
+44	-56.5	0
+45	-56.5	0
+46	-56.5	0
+47	-56.5	0
+48	-56.5	0
+49	-56.5	0
+50	-56.5	0
+51	-56.5	0
+52	-56.5	0
+53	-56.5	0
+54	-56.5	0
+55	-56.5	0
+56	-56.5	0
+57	-56.5	0
+58	-56.5	0
+59	-56.5	0
+60	-56.5	0
+61	-56.5	0
+62	-56.5	0
+63	-56.5	0
+64	-56.5	0
+65	-56.5	0
+66	-56.5	0
+67	-56.5	0
+68	-56.5	0
+69	-56.5	0
+70	-56.5	0
+71	-56.5	0
+72	-56.5	0
+73	-56.5	0
+74	-56.5	0
+75	-56.5	0
+76	-56.5	0
+77	-56.5	0
+78	-56.5	0
+79	-56.5	0
+80	-56.5	0
+81	-56.5	0
+82	-56.5	0
+83	-56.5	0
+84	-56.5	0
+85	-56.5	0
+86	-56.5	0
+87	-56.5	0
+88	-56.5	0
+89	-56.5	0
+90	-56.5	0
+91	-56.5	0
+92	-56.5	0
+93	-56.5	0
+94	-56.5	0
+95	-56.5	0
+96	-56.5	0
+97	-56.5	0
+98	-56.5	0
+99	-56.5	0
+100	-56.5	0
+101	-56.5	0
+102	-56.5	0
+103	-56.5	0
+104	-56.5	0
+105	-56.5	0
+106	-56.5	0
+107	-56.5	0
+108	-56.5	0
+109	-56.5	0
+110	-56.5	0
+111	-56.5	0
+112	-56.5	0
+113	-56.5	0
+114	-56.5	0
+115	-56.5	0
+116	-56.5	0
+117	-56.5	0
+118	-56.5	0
+119	-56.5	0
+120	-56.5	0
+121	-56.5	0
+122	-56.5	0
+123	-56.5	0
+124	-56.5	0
+125	-56.5	0
+126	-56.5	0
+127	-56.5	0
+128	-56.5	0
+129	-56.5	0
+130	-56.5	0
+131	-56.5	0
+132	-56.5	0
+133	-56.5	0
+134	-56.5	0
+135	-56.5	0
+136	-56.5	0
+137	-56.5	0
+138	-56.5	0
+139	-56.5	0
+140	-56.5	0
+141	-56.5	0
+142	-56.5	0
+143	-56.5	0
+144	-56.5	0
+145	-56.5	0
+146	-56.5	0
+147	-56.5	0
+148	-56.5	0
+149	-56.5	0
+150	-56.5	0
+151	-56.5	0
+152	-56.5	0
+153	-56.5	0
+154	-56.5	0
+155	-56.5	0
+156	-56.5	0
+157	-56.5	0
+158	-56.5	0
+159	-56.5	0
+160	-56.5	0
+161	-56.5	0
+162	-56.5	0
+163	-56.5	0
+164	-56.5	0
+165	-56.5	0
+166	-56.5	0
+167	-56.5	0
+168	-56.5	0
+169	-56.5	0
+170	-56.5	0
+171	-56.5	0
+172	-56.5	0
+173	-56.5	0
+174	-56.5	0
+175	-56.5	0
+176	-56.5	0
+177	-56.5	0
+178	-56.5	0
+179	-56.5	0
+180	-56.5	0
+181	-56.5	0
+182	-56.5	0
+183	-56.5	0
+184	-56.5	0
+185	-56.5	0
+186	-56.5	0
+187	-56.5	0
+188	-56.5	0
+189	-56.5	0
+190	-56.5	0
+191	-56.5	0
+192	-56.5	0
+193	-56.5	0
+194	-56.5	0
+195	-56.5	0
+196	-56.5	0
+197	-56.5	0
+198	-56.5	0
+199	-56.5	0
+200	-56.5	0
+201	-56.5	0
+202	-56.5	0
+203	-56.5	0
+204	-56.5	0
+205	-56.5	0
+206	-56.5	0
+207	-56.5	0
+208	-56.5	0
+209	-56.5	0
+210	-56.5	0
+211	-56.5	0
+212	-56.5	0
+213	-56.5	0
+214	-56.5	0
+215	-56.5	0
+216	-56.5	0
+217	-56.5	0
+218	-56.5	0
+219	-56.5	0
+220	-56.5	0
+221	-56.5	0
+222	-56.5	0
+223	-56.5	0
+224	-56.5	0
+225	-56.5	0
+226	-56.5	0
+227	-56.5	0
+228	-56.5	0
+229	-56.5	0
+230	-56.5	0
+231	-56.5	0
+232	-56.5	0
+233	-56.5	0
+234	-56.5	0
+235	-56.5	0
+236	-56.5	0
+237	-56.5	0
+238	-56.5	0
+239	-56.5	0
+240	-56.5	0
+241	-56.5	0
+242	-56.5	0
+243	-56.5	0
+244	-56.5	0
+245	-56.5	0
+246	-56.5	0
+247	-56.5	0
+248	-56.5	0
+249	-56.5	0
+250	-56.5	0
+251	-56.5	0
+252	-56.5	0
+253	-56.5	0
+254	-56.5	0
+255	-56.5	0
+256	-56.5	0
+257	-56.5	0
+258	-56.5	0
+259	-56.5	0
+260	-56.5	0
+261	-56.5	0
+262	-56.5	0
+263	-56.5	0
+264	-56.5	0
+265	-56.5	0
+266	-56.5	0
+267	-56.5	0
+268	-56.5	0
+269	-56.5	0
+270	-56.5	0
+271	-56.5	0
+272	-56.5	0
+273	-56.5	0
+274	-56.5	0
+275	-56.5	0
+276	-56.5	0
+277	-56.5	0
+278	-56.5	0
+279	-56.5	0
+280	-56.5	0
+281	-56.5	0
+282	-56.5	0
+283	-56.5	0
+284	-56.5	0
+285	-56.5	0
+286	-56.5	0
+287	-56.5	0
+288	-56.5	0
+289	-56.5	0
+290	-56.5	0
+291	-56.5	0
+292	-56.5	0
+293	-56.5	0
+294	-56.5	0
+295	-56.5	0
+296	-56.5	0
+297	-56.5	0
+298	-56.5	0
+299	-56.5	0
+300	-56.5	0
+301	-56.5	0
+302	-56.5	0
+303	-56.5	0
+304	-56.5	0
+305	-56.5	0
+306	-56.5	0
+307	-56.5	0
+308	-56.5	0
+309	-56.5	0
+310	-56.5	0
+311	-56.5	0
+312	-56.5	0
+313	-56.5	0
+314	-56.5	0
+315	-56.5	0
+316	-56.5	0
+317	-56.5	0
+318	-56.5	0
+319	-56.5	0
+320	-56.5	0
+321	-56.5	0
+322	-56.5	0
+323	-56.5	0
+324	-56.5	0
+325	-56.5	0
+326	-56.5	0
+327	-56.5	0
+328	-56.5	0
+329	-56.5	0
+330	-56.5	0
+331	-56.5	0
+332	-56.5	0
+333	-56.5	0
+334	-56.5	0
+335	-56.5	0
+336	-56.5	0
+337	-56.5	0
+338	-56.5	0
+339	-56.5	0
+340	-56.5	0
+341	-56.5	0
+342	-56.5	0
+343	-56.5	0
+344	-56.5	0
+345	-56.5	0
+346	-56.5	0
+347	-56.5	0
+348	-56.5	0
+349	-56.5	0
+350	-56.5	0
+351	-56.5	0
+352	-56.5	0
+353	-56.5	0
+354	-56.5	0
+355	-56.5	0
+356	-56.5	0
+357	-56.5	0
+358	-56.5	0
+359	-56.5	0
+360	-56.5	0
+0	-56	0
+1	-56	0
+2	-56	0
+3	-56	0
+4	-56	0
+5	-56	0
+6	-56	0
+7	-56	0
+8	-56	0
+9	-56	0
+10	-56	0
+11	-56	0
+12	-56	0
+13	-56	0
+14	-56	0
+15	-56	0
+16	-56	0
+17	-56	0
+18	-56	0
+19	-56	0
+20	-56	0
+21	-56	0
+22	-56	0
+23	-56	0
+24	-56	0
+25	-56	0
+26	-56	0
+27	-56	0
+28	-56	0
+29	-56	0
+30	-56	0
+31	-56	0
+32	-56	0
+33	-56	0
+34	-56	0
+35	-56	0
+36	-56	0
+37	-56	0
+38	-56	0
+39	-56	0
+40	-56	0
+41	-56	0
+42	-56	0
+43	-56	0
+44	-56	0
+45	-56	0
+46	-56	0
+47	-56	0
+48	-56	0
+49	-56	0
+50	-56	0
+51	-56	0
+52	-56	0
+53	-56	0
+54	-56	0
+55	-56	0
+56	-56	0
+57	-56	0
+58	-56	0
+59	-56	0
+60	-56	0
+61	-56	0
+62	-56	0
+63	-56	0
+64	-56	0
+65	-56	0
+66	-56	0
+67	-56	0
+68	-56	0
+69	-56	0
+70	-56	0
+71	-56	0
+72	-56	0
+73	-56	0
+74	-56	0
+75	-56	0
+76	-56	0
+77	-56	0
+78	-56	0
+79	-56	0
+80	-56	0
+81	-56	0
+82	-56	0
+83	-56	0
+84	-56	0
+85	-56	0
+86	-56	0
+87	-56	0
+88	-56	0
+89	-56	0
+90	-56	0
+91	-56	0
+92	-56	0
+93	-56	0
+94	-56	0
+95	-56	0
+96	-56	0
+97	-56	0
+98	-56	0
+99	-56	0
+100	-56	0
+101	-56	0
+102	-56	0
+103	-56	0
+104	-56	0
+105	-56	0
+106	-56	0
+107	-56	0
+108	-56	0
+109	-56	0
+110	-56	0
+111	-56	0
+112	-56	0
+113	-56	0
+114	-56	0
+115	-56	0
+116	-56	0
+117	-56	0
+118	-56	0
+119	-56	0
+120	-56	0
+121	-56	0
+122	-56	0
+123	-56	0
+124	-56	0
+125	-56	0
+126	-56	0
+127	-56	0
+128	-56	0
+129	-56	0
+130	-56	0
+131	-56	0
+132	-56	0
+133	-56	0
+134	-56	0
+135	-56	0
+136	-56	0
+137	-56	0
+138	-56	0
+139	-56	0
+140	-56	0
+141	-56	0
+142	-56	0
+143	-56	0
+144	-56	0
+145	-56	0
+146	-56	0
+147	-56	0
+148	-56	0
+149	-56	0
+150	-56	0
+151	-56	0
+152	-56	0
+153	-56	0
+154	-56	0
+155	-56	0
+156	-56	0
+157	-56	0
+158	-56	0
+159	-56	0
+160	-56	0
+161	-56	0
+162	-56	0
+163	-56	0
+164	-56	0
+165	-56	0
+166	-56	0
+167	-56	0
+168	-56	0
+169	-56	0
+170	-56	0
+171	-56	0
+172	-56	0
+173	-56	0
+174	-56	0
+175	-56	0
+176	-56	0
+177	-56	0
+178	-56	0
+179	-56	0
+180	-56	0
+181	-56	0
+182	-56	0
+183	-56	0
+184	-56	0
+185	-56	0
+186	-56	0
+187	-56	0
+188	-56	0
+189	-56	0
+190	-56	0
+191	-56	0
+192	-56	0
+193	-56	0
+194	-56	0
+195	-56	0
+196	-56	0
+197	-56	0
+198	-56	0
+199	-56	0
+200	-56	0
+201	-56	0
+202	-56	0
+203	-56	0
+204	-56	0
+205	-56	0
+206	-56	0
+207	-56	0
+208	-56	0
+209	-56	0
+210	-56	0
+211	-56	0
+212	-56	0
+213	-56	0
+214	-56	0
+215	-56	0
+216	-56	0
+217	-56	0
+218	-56	0
+219	-56	0
+220	-56	0
+221	-56	0
+222	-56	0
+223	-56	0
+224	-56	0
+225	-56	0
+226	-56	0
+227	-56	0
+228	-56	0
+229	-56	0
+230	-56	0
+231	-56	0
+232	-56	0
+233	-56	0
+234	-56	0
+235	-56	0
+236	-56	0
+237	-56	0
+238	-56	0
+239	-56	0
+240	-56	0
+241	-56	0
+242	-56	0
+243	-56	0
+244	-56	0
+245	-56	0
+246	-56	0
+247	-56	0
+248	-56	0
+249	-56	0
+250	-56	0
+251	-56	0
+252	-56	0
+253	-56	0
+254	-56	0
+255	-56	0
+256	-56	0
+257	-56	0
+258	-56	0
+259	-56	0
+260	-56	0
+261	-56	0
+262	-56	0
+263	-56	0
+264	-56	0
+265	-56	0
+266	-56	0
+267	-56	0
+268	-56	0
+269	-56	0
+270	-56	0
+271	-56	0
+272	-56	0
+273	-56	0
+274	-56	0
+275	-56	0
+276	-56	0
+277	-56	0
+278	-56	0
+279	-56	0
+280	-56	0
+281	-56	0
+282	-56	0
+283	-56	0
+284	-56	0
+285	-56	0
+286	-56	0
+287	-56	0
+288	-56	0
+289	-56	0
+290	-56	0
+291	-56	0
+292	-56	0
+293	-56	0
+294	-56	0
+295	-56	0
+296	-56	0
+297	-56	0
+298	-56	0
+299	-56	0
+300	-56	0
+301	-56	0
+302	-56	0
+303	-56	0
+304	-56	0
+305	-56	0
+306	-56	0
+307	-56	0
+308	-56	0
+309	-56	0
+310	-56	0
+311	-56	0
+312	-56	0
+313	-56	0
+314	-56	0
+315	-56	0
+316	-56	0
+317	-56	0
+318	-56	0
+319	-56	0
+320	-56	0
+321	-56	0
+322	-56	0
+323	-56	0
+324	-56	0
+325	-56	0
+326	-56	0
+327	-56	0
+328	-56	0
+329	-56	0
+330	-56	0
+331	-56	0
+332	-56	0
+333	-56	0
+334	-56	0
+335	-56	0
+336	-56	0
+337	-56	0
+338	-56	0
+339	-56	0
+340	-56	0
+341	-56	0
+342	-56	0
+343	-56	0
+344	-56	0
+345	-56	0
+346	-56	0
+347	-56	0
+348	-56	0
+349	-56	0
+350	-56	0
+351	-56	0
+352	-56	0
+353	-56	0
+354	-56	0
+355	-56	0
+356	-56	0
+357	-56	0
+358	-56	0
+359	-56	0
+360	-56	0
+0	-55.5	0
+1	-55.5	0
+2	-55.5	0
+3	-55.5	0
+4	-55.5	0
+5	-55.5	0
+6	-55.5	0
+7	-55.5	0
+8	-55.5	0
+9	-55.5	0
+10	-55.5	0
+11	-55.5	0
+12	-55.5	0
+13	-55.5	0
+14	-55.5	0
+15	-55.5	0
+16	-55.5	0
+17	-55.5	0
+18	-55.5	0
+19	-55.5	0
+20	-55.5	0
+21	-55.5	0
+22	-55.5	0
+23	-55.5	0
+24	-55.5	0
+25	-55.5	0
+26	-55.5	0
+27	-55.5	0
+28	-55.5	0
+29	-55.5	0
+30	-55.5	0
+31	-55.5	0
+32	-55.5	0
+33	-55.5	0
+34	-55.5	0
+35	-55.5	0
+36	-55.5	0
+37	-55.5	0
+38	-55.5	0
+39	-55.5	0
+40	-55.5	0
+41	-55.5	0
+42	-55.5	0
+43	-55.5	0
+44	-55.5	0
+45	-55.5	0
+46	-55.5	0
+47	-55.5	0
+48	-55.5	0
+49	-55.5	0
+50	-55.5	0
+51	-55.5	0
+52	-55.5	0
+53	-55.5	0
+54	-55.5	0
+55	-55.5	0
+56	-55.5	0
+57	-55.5	0
+58	-55.5	0
+59	-55.5	0
+60	-55.5	0
+61	-55.5	0
+62	-55.5	0
+63	-55.5	0
+64	-55.5	0
+65	-55.5	0
+66	-55.5	0
+67	-55.5	0
+68	-55.5	0
+69	-55.5	0
+70	-55.5	0
+71	-55.5	0
+72	-55.5	0
+73	-55.5	0
+74	-55.5	0
+75	-55.5	0
+76	-55.5	0
+77	-55.5	0
+78	-55.5	0
+79	-55.5	0
+80	-55.5	0
+81	-55.5	0
+82	-55.5	0
+83	-55.5	0
+84	-55.5	0
+85	-55.5	0
+86	-55.5	0
+87	-55.5	0
+88	-55.5	0
+89	-55.5	0
+90	-55.5	0
+91	-55.5	0
+92	-55.5	0
+93	-55.5	0
+94	-55.5	0
+95	-55.5	0
+96	-55.5	0
+97	-55.5	0
+98	-55.5	0
+99	-55.5	0
+100	-55.5	0
+101	-55.5	0
+102	-55.5	0
+103	-55.5	0
+104	-55.5	0
+105	-55.5	0
+106	-55.5	0
+107	-55.5	0
+108	-55.5	0
+109	-55.5	0
+110	-55.5	0
+111	-55.5	0
+112	-55.5	0
+113	-55.5	0
+114	-55.5	0
+115	-55.5	0
+116	-55.5	0
+117	-55.5	0
+118	-55.5	0
+119	-55.5	0
+120	-55.5	0
+121	-55.5	0
+122	-55.5	0
+123	-55.5	0
+124	-55.5	0
+125	-55.5	0
+126	-55.5	0
+127	-55.5	0
+128	-55.5	0
+129	-55.5	0
+130	-55.5	0
+131	-55.5	0
+132	-55.5	0
+133	-55.5	0
+134	-55.5	0
+135	-55.5	0
+136	-55.5	0
+137	-55.5	0
+138	-55.5	0
+139	-55.5	0
+140	-55.5	0
+141	-55.5	0
+142	-55.5	0
+143	-55.5	0
+144	-55.5	0
+145	-55.5	0
+146	-55.5	0
+147	-55.5	0
+148	-55.5	0
+149	-55.5	0
+150	-55.5	0
+151	-55.5	0
+152	-55.5	0
+153	-55.5	0
+154	-55.5	0
+155	-55.5	0
+156	-55.5	0
+157	-55.5	0
+158	-55.5	0
+159	-55.5	0
+160	-55.5	0
+161	-55.5	0
+162	-55.5	0
+163	-55.5	0
+164	-55.5	0
+165	-55.5	0
+166	-55.5	0
+167	-55.5	0
+168	-55.5	0
+169	-55.5	0
+170	-55.5	0
+171	-55.5	0
+172	-55.5	0
+173	-55.5	0
+174	-55.5	0
+175	-55.5	0
+176	-55.5	0
+177	-55.5	0
+178	-55.5	0
+179	-55.5	0
+180	-55.5	0
+181	-55.5	0
+182	-55.5	0
+183	-55.5	0
+184	-55.5	0
+185	-55.5	0
+186	-55.5	0
+187	-55.5	0
+188	-55.5	0
+189	-55.5	0
+190	-55.5	0
+191	-55.5	0
+192	-55.5	0
+193	-55.5	0
+194	-55.5	0
+195	-55.5	0
+196	-55.5	0
+197	-55.5	0
+198	-55.5	0
+199	-55.5	0
+200	-55.5	0
+201	-55.5	0
+202	-55.5	0
+203	-55.5	0
+204	-55.5	0
+205	-55.5	0
+206	-55.5	0
+207	-55.5	0
+208	-55.5	0
+209	-55.5	0
+210	-55.5	0
+211	-55.5	0
+212	-55.5	0
+213	-55.5	0
+214	-55.5	0
+215	-55.5	0
+216	-55.5	0
+217	-55.5	0
+218	-55.5	0
+219	-55.5	0
+220	-55.5	0
+221	-55.5	0
+222	-55.5	0
+223	-55.5	0
+224	-55.5	0
+225	-55.5	0
+226	-55.5	0
+227	-55.5	0
+228	-55.5	0
+229	-55.5	0
+230	-55.5	0
+231	-55.5	0
+232	-55.5	0
+233	-55.5	0
+234	-55.5	0
+235	-55.5	0
+236	-55.5	0
+237	-55.5	0
+238	-55.5	0
+239	-55.5	0
+240	-55.5	0
+241	-55.5	0
+242	-55.5	0
+243	-55.5	0
+244	-55.5	0
+245	-55.5	0
+246	-55.5	0
+247	-55.5	0
+248	-55.5	0
+249	-55.5	0
+250	-55.5	0
+251	-55.5	0
+252	-55.5	0
+253	-55.5	0
+254	-55.5	0
+255	-55.5	0
+256	-55.5	0
+257	-55.5	0
+258	-55.5	0
+259	-55.5	0
+260	-55.5	0
+261	-55.5	0
+262	-55.5	0
+263	-55.5	0
+264	-55.5	0
+265	-55.5	0
+266	-55.5	0
+267	-55.5	0
+268	-55.5	0
+269	-55.5	0
+270	-55.5	0
+271	-55.5	0
+272	-55.5	0
+273	-55.5	0
+274	-55.5	0
+275	-55.5	0
+276	-55.5	0
+277	-55.5	0
+278	-55.5	0
+279	-55.5	0
+280	-55.5	0
+281	-55.5	0
+282	-55.5	0
+283	-55.5	0
+284	-55.5	0
+285	-55.5	0
+286	-55.5	0
+287	-55.5	0
+288	-55.5	0
+289	-55.5	0
+290	-55.5	0
+291	-55.5	0
+292	-55.5	0
+293	-55.5	0
+294	-55.5	0
+295	-55.5	0
+296	-55.5	0
+297	-55.5	0
+298	-55.5	0
+299	-55.5	0
+300	-55.5	0
+301	-55.5	0
+302	-55.5	0
+303	-55.5	0
+304	-55.5	0
+305	-55.5	0
+306	-55.5	0
+307	-55.5	0
+308	-55.5	0
+309	-55.5	0
+310	-55.5	0
+311	-55.5	0
+312	-55.5	0
+313	-55.5	0
+314	-55.5	0
+315	-55.5	0
+316	-55.5	0
+317	-55.5	0
+318	-55.5	0
+319	-55.5	0
+320	-55.5	0
+321	-55.5	0
+322	-55.5	0
+323	-55.5	0
+324	-55.5	0
+325	-55.5	0
+326	-55.5	0
+327	-55.5	0
+328	-55.5	0
+329	-55.5	0
+330	-55.5	0
+331	-55.5	0
+332	-55.5	0
+333	-55.5	0
+334	-55.5	0
+335	-55.5	0
+336	-55.5	0
+337	-55.5	0
+338	-55.5	0
+339	-55.5	0
+340	-55.5	0
+341	-55.5	0
+342	-55.5	0
+343	-55.5	0
+344	-55.5	0
+345	-55.5	0
+346	-55.5	0
+347	-55.5	0
+348	-55.5	0
+349	-55.5	0
+350	-55.5	0
+351	-55.5	0
+352	-55.5	0
+353	-55.5	0
+354	-55.5	0
+355	-55.5	0
+356	-55.5	0
+357	-55.5	0
+358	-55.5	0
+359	-55.5	0
+360	-55.5	0
+0	-55	0
+1	-55	0
+2	-55	0
+3	-55	0
+4	-55	0
+5	-55	0
+6	-55	0
+7	-55	0
+8	-55	0
+9	-55	0
+10	-55	0
+11	-55	0
+12	-55	0
+13	-55	0
+14	-55	0
+15	-55	0
+16	-55	0
+17	-55	0
+18	-55	0
+19	-55	0
+20	-55	0
+21	-55	0
+22	-55	0
+23	-55	0
+24	-55	0
+25	-55	0
+26	-55	0
+27	-55	0
+28	-55	0
+29	-55	0
+30	-55	0
+31	-55	0
+32	-55	0
+33	-55	0
+34	-55	0
+35	-55	0
+36	-55	0
+37	-55	0
+38	-55	0
+39	-55	0
+40	-55	0
+41	-55	0
+42	-55	0
+43	-55	0
+44	-55	0
+45	-55	0
+46	-55	0
+47	-55	0
+48	-55	0
+49	-55	0
+50	-55	0
+51	-55	0
+52	-55	0
+53	-55	0
+54	-55	0
+55	-55	0
+56	-55	0
+57	-55	0
+58	-55	0
+59	-55	0
+60	-55	0
+61	-55	0
+62	-55	0
+63	-55	0
+64	-55	0
+65	-55	0
+66	-55	0
+67	-55	0
+68	-55	0
+69	-55	0
+70	-55	0
+71	-55	0
+72	-55	0
+73	-55	0
+74	-55	0
+75	-55	0
+76	-55	0
+77	-55	0
+78	-55	0
+79	-55	0
+80	-55	0
+81	-55	0
+82	-55	0
+83	-55	0
+84	-55	0
+85	-55	0
+86	-55	0
+87	-55	0
+88	-55	0
+89	-55	0
+90	-55	0
+91	-55	0
+92	-55	0
+93	-55	0
+94	-55	0
+95	-55	0
+96	-55	0
+97	-55	0
+98	-55	0
+99	-55	0
+100	-55	0
+101	-55	0
+102	-55	0
+103	-55	0
+104	-55	0
+105	-55	0
+106	-55	0
+107	-55	0
+108	-55	0
+109	-55	0
+110	-55	0
+111	-55	0
+112	-55	0
+113	-55	0
+114	-55	0
+115	-55	0
+116	-55	0
+117	-55	0
+118	-55	0
+119	-55	0
+120	-55	0
+121	-55	0
+122	-55	0
+123	-55	0
+124	-55	0
+125	-55	0
+126	-55	0
+127	-55	0
+128	-55	0
+129	-55	0
+130	-55	0
+131	-55	0
+132	-55	0
+133	-55	0
+134	-55	0
+135	-55	0
+136	-55	0
+137	-55	0
+138	-55	0
+139	-55	0
+140	-55	0
+141	-55	0
+142	-55	0
+143	-55	0
+144	-55	0
+145	-55	0
+146	-55	0
+147	-55	0
+148	-55	0
+149	-55	0
+150	-55	0
+151	-55	0
+152	-55	0
+153	-55	0
+154	-55	0
+155	-55	0
+156	-55	0
+157	-55	0
+158	-55	0
+159	-55	0
+160	-55	0
+161	-55	0
+162	-55	0
+163	-55	0
+164	-55	0
+165	-55	0
+166	-55	0
+167	-55	0
+168	-55	0
+169	-55	0
+170	-55	0
+171	-55	0
+172	-55	0
+173	-55	0
+174	-55	0
+175	-55	0
+176	-55	0
+177	-55	0
+178	-55	0
+179	-55	0
+180	-55	0
+181	-55	0
+182	-55	0
+183	-55	0
+184	-55	0
+185	-55	0
+186	-55	0
+187	-55	0
+188	-55	0
+189	-55	0
+190	-55	0
+191	-55	0
+192	-55	0
+193	-55	0
+194	-55	0
+195	-55	0
+196	-55	0
+197	-55	0
+198	-55	0
+199	-55	0
+200	-55	0
+201	-55	0
+202	-55	0
+203	-55	0
+204	-55	0
+205	-55	0
+206	-55	0
+207	-55	0
+208	-55	0
+209	-55	0
+210	-55	0
+211	-55	0
+212	-55	0
+213	-55	0
+214	-55	0
+215	-55	0
+216	-55	0
+217	-55	0
+218	-55	0
+219	-55	0
+220	-55	0
+221	-55	0
+222	-55	0
+223	-55	0
+224	-55	0
+225	-55	0
+226	-55	0
+227	-55	0
+228	-55	0
+229	-55	0
+230	-55	0
+231	-55	0
+232	-55	0
+233	-55	0
+234	-55	0
+235	-55	0
+236	-55	0
+237	-55	0
+238	-55	0
+239	-55	0
+240	-55	0
+241	-55	0
+242	-55	0
+243	-55	0
+244	-55	0
+245	-55	0
+246	-55	0
+247	-55	0
+248	-55	0
+249	-55	0
+250	-55	0
+251	-55	0
+252	-55	0
+253	-55	0
+254	-55	0
+255	-55	0
+256	-55	0
+257	-55	0
+258	-55	0
+259	-55	0
+260	-55	0
+261	-55	0
+262	-55	0
+263	-55	0
+264	-55	0
+265	-55	0
+266	-55	0
+267	-55	0
+268	-55	0
+269	-55	0
+270	-55	0
+271	-55	0
+272	-55	0
+273	-55	0
+274	-55	0
+275	-55	0
+276	-55	0
+277	-55	0
+278	-55	0
+279	-55	0
+280	-55	0
+281	-55	0
+282	-55	0
+283	-55	0
+284	-55	0
+285	-55	0
+286	-55	0
+287	-55	0
+288	-55	0
+289	-55	0
+290	-55	0
+291	-55	0
+292	-55	0
+293	-55	0
+294	-55	0
+295	-55	0
+296	-55	0
+297	-55	0
+298	-55	0
+299	-55	0
+300	-55	0
+301	-55	0
+302	-55	0
+303	-55	0
+304	-55	0
+305	-55	0
+306	-55	0
+307	-55	0
+308	-55	0
+309	-55	0
+310	-55	0
+311	-55	0
+312	-55	0
+313	-55	0
+314	-55	0
+315	-55	0
+316	-55	0
+317	-55	0
+318	-55	0
+319	-55	0
+320	-55	0
+321	-55	0
+322	-55	0
+323	-55	0
+324	-55	0
+325	-55	0
+326	-55	0
+327	-55	0
+328	-55	0
+329	-55	0
+330	-55	0
+331	-55	0
+332	-55	0
+333	-55	0
+334	-55	0
+335	-55	0
+336	-55	0
+337	-55	0
+338	-55	0
+339	-55	0
+340	-55	0
+341	-55	0
+342	-55	0
+343	-55	0
+344	-55	0
+345	-55	0
+346	-55	0
+347	-55	0
+348	-55	0
+349	-55	0
+350	-55	0
+351	-55	0
+352	-55	0
+353	-55	0
+354	-55	0
+355	-55	0
+356	-55	0
+357	-55	0
+358	-55	0
+359	-55	0
+360	-55	0
+0	-54.5	0
+1	-54.5	0
+2	-54.5	0
+3	-54.5	0
+4	-54.5	0
+5	-54.5	0
+6	-54.5	0
+7	-54.5	0
+8	-54.5	0
+9	-54.5	0
+10	-54.5	0
+11	-54.5	0
+12	-54.5	0
+13	-54.5	0
+14	-54.5	0
+15	-54.5	0
+16	-54.5	0
+17	-54.5	0
+18	-54.5	0
+19	-54.5	0
+20	-54.5	0
+21	-54.5	0
+22	-54.5	0
+23	-54.5	0
+24	-54.5	0
+25	-54.5	0
+26	-54.5	0
+27	-54.5	0
+28	-54.5	0
+29	-54.5	0
+30	-54.5	0
+31	-54.5	0
+32	-54.5	0
+33	-54.5	0
+34	-54.5	0
+35	-54.5	0
+36	-54.5	0
+37	-54.5	0
+38	-54.5	0
+39	-54.5	0
+40	-54.5	0
+41	-54.5	0
+42	-54.5	0
+43	-54.5	0
+44	-54.5	0
+45	-54.5	0
+46	-54.5	0
+47	-54.5	0
+48	-54.5	0
+49	-54.5	0
+50	-54.5	0
+51	-54.5	0
+52	-54.5	0
+53	-54.5	0
+54	-54.5	0
+55	-54.5	0
+56	-54.5	0
+57	-54.5	0
+58	-54.5	0
+59	-54.5	0
+60	-54.5	0
+61	-54.5	0
+62	-54.5	0
+63	-54.5	0
+64	-54.5	0
+65	-54.5	0
+66	-54.5	0
+67	-54.5	0
+68	-54.5	0
+69	-54.5	0
+70	-54.5	0
+71	-54.5	0
+72	-54.5	0
+73	-54.5	0
+74	-54.5	0
+75	-54.5	0
+76	-54.5	0
+77	-54.5	0
+78	-54.5	0
+79	-54.5	0
+80	-54.5	0
+81	-54.5	0
+82	-54.5	0
+83	-54.5	0
+84	-54.5	0
+85	-54.5	0
+86	-54.5	0
+87	-54.5	0
+88	-54.5	0
+89	-54.5	0
+90	-54.5	0
+91	-54.5	0
+92	-54.5	0
+93	-54.5	0
+94	-54.5	0
+95	-54.5	0
+96	-54.5	0
+97	-54.5	0
+98	-54.5	0
+99	-54.5	0
+100	-54.5	0
+101	-54.5	0
+102	-54.5	0
+103	-54.5	0
+104	-54.5	0
+105	-54.5	0
+106	-54.5	0
+107	-54.5	0
+108	-54.5	0
+109	-54.5	0
+110	-54.5	0
+111	-54.5	0
+112	-54.5	0
+113	-54.5	0
+114	-54.5	0
+115	-54.5	0
+116	-54.5	0
+117	-54.5	0
+118	-54.5	0
+119	-54.5	0
+120	-54.5	0
+121	-54.5	0
+122	-54.5	0
+123	-54.5	0
+124	-54.5	0
+125	-54.5	0
+126	-54.5	0
+127	-54.5	0
+128	-54.5	0
+129	-54.5	0
+130	-54.5	0
+131	-54.5	0
+132	-54.5	0
+133	-54.5	0
+134	-54.5	0
+135	-54.5	0
+136	-54.5	0
+137	-54.5	0
+138	-54.5	0
+139	-54.5	0
+140	-54.5	0
+141	-54.5	0
+142	-54.5	0
+143	-54.5	0
+144	-54.5	0
+145	-54.5	0
+146	-54.5	0
+147	-54.5	0
+148	-54.5	0
+149	-54.5	0
+150	-54.5	0
+151	-54.5	0
+152	-54.5	0
+153	-54.5	0
+154	-54.5	0
+155	-54.5	0
+156	-54.5	0
+157	-54.5	0
+158	-54.5	0
+159	-54.5	0
+160	-54.5	0
+161	-54.5	0
+162	-54.5	0
+163	-54.5	0
+164	-54.5	0
+165	-54.5	0
+166	-54.5	0
+167	-54.5	0
+168	-54.5	0
+169	-54.5	0
+170	-54.5	0
+171	-54.5	0
+172	-54.5	0
+173	-54.5	0
+174	-54.5	0
+175	-54.5	0
+176	-54.5	0
+177	-54.5	0
+178	-54.5	0
+179	-54.5	0
+180	-54.5	0
+181	-54.5	0
+182	-54.5	0
+183	-54.5	0
+184	-54.5	0
+185	-54.5	0
+186	-54.5	0
+187	-54.5	0
+188	-54.5	0
+189	-54.5	0
+190	-54.5	0
+191	-54.5	0
+192	-54.5	0
+193	-54.5	0
+194	-54.5	0
+195	-54.5	0
+196	-54.5	0
+197	-54.5	0
+198	-54.5	0
+199	-54.5	0
+200	-54.5	0
+201	-54.5	0
+202	-54.5	0
+203	-54.5	0
+204	-54.5	0
+205	-54.5	0
+206	-54.5	0
+207	-54.5	0
+208	-54.5	0
+209	-54.5	0
+210	-54.5	0
+211	-54.5	0
+212	-54.5	0
+213	-54.5	0
+214	-54.5	0
+215	-54.5	0
+216	-54.5	0
+217	-54.5	0
+218	-54.5	0
+219	-54.5	0
+220	-54.5	0
+221	-54.5	0
+222	-54.5	0
+223	-54.5	0
+224	-54.5	0
+225	-54.5	0
+226	-54.5	0
+227	-54.5	0
+228	-54.5	0
+229	-54.5	0
+230	-54.5	0
+231	-54.5	0
+232	-54.5	0
+233	-54.5	0
+234	-54.5	0
+235	-54.5	0
+236	-54.5	0
+237	-54.5	0
+238	-54.5	0
+239	-54.5	0
+240	-54.5	0
+241	-54.5	0
+242	-54.5	0
+243	-54.5	0
+244	-54.5	0
+245	-54.5	0
+246	-54.5	0
+247	-54.5	0
+248	-54.5	0
+249	-54.5	0
+250	-54.5	0
+251	-54.5	0
+252	-54.5	0
+253	-54.5	0
+254	-54.5	0
+255	-54.5	0
+256	-54.5	0
+257	-54.5	0
+258	-54.5	0
+259	-54.5	0
+260	-54.5	0
+261	-54.5	0
+262	-54.5	0
+263	-54.5	0
+264	-54.5	0
+265	-54.5	0
+266	-54.5	0
+267	-54.5	0
+268	-54.5	0
+269	-54.5	0
+270	-54.5	0
+271	-54.5	0
+272	-54.5	0
+273	-54.5	0
+274	-54.5	0
+275	-54.5	0
+276	-54.5	0
+277	-54.5	0
+278	-54.5	0
+279	-54.5	0
+280	-54.5	0
+281	-54.5	0
+282	-54.5	0
+283	-54.5	0
+284	-54.5	0
+285	-54.5	0
+286	-54.5	0
+287	-54.5	0
+288	-54.5	0
+289	-54.5	0
+290	-54.5	0
+291	-54.5	0
+292	-54.5	0
+293	-54.5	0
+294	-54.5	0
+295	-54.5	0
+296	-54.5	0
+297	-54.5	0
+298	-54.5	0
+299	-54.5	0
+300	-54.5	0
+301	-54.5	0
+302	-54.5	0
+303	-54.5	0
+304	-54.5	0
+305	-54.5	0
+306	-54.5	0
+307	-54.5	0
+308	-54.5	0
+309	-54.5	0
+310	-54.5	0
+311	-54.5	0
+312	-54.5	0
+313	-54.5	0
+314	-54.5	0
+315	-54.5	0
+316	-54.5	0
+317	-54.5	0
+318	-54.5	0
+319	-54.5	0
+320	-54.5	0
+321	-54.5	0
+322	-54.5	0
+323	-54.5	0
+324	-54.5	0
+325	-54.5	0
+326	-54.5	0
+327	-54.5	0
+328	-54.5	0
+329	-54.5	0
+330	-54.5	0
+331	-54.5	0
+332	-54.5	0
+333	-54.5	0
+334	-54.5	0
+335	-54.5	0
+336	-54.5	0
+337	-54.5	0
+338	-54.5	0
+339	-54.5	0
+340	-54.5	0
+341	-54.5	0
+342	-54.5	0
+343	-54.5	0
+344	-54.5	0
+345	-54.5	0
+346	-54.5	0
+347	-54.5	0
+348	-54.5	0
+349	-54.5	0
+350	-54.5	0
+351	-54.5	0
+352	-54.5	0
+353	-54.5	0
+354	-54.5	0
+355	-54.5	0
+356	-54.5	0
+357	-54.5	0
+358	-54.5	0
+359	-54.5	0
+360	-54.5	0
+0	-54	0
+1	-54	0
+2	-54	0
+3	-54	0
+4	-54	0
+5	-54	0
+6	-54	0
+7	-54	0
+8	-54	0
+9	-54	0
+10	-54	0
+11	-54	0
+12	-54	0
+13	-54	0
+14	-54	0
+15	-54	0
+16	-54	0
+17	-54	0
+18	-54	0
+19	-54	0
+20	-54	0
+21	-54	0
+22	-54	0
+23	-54	0
+24	-54	0
+25	-54	0
+26	-54	0
+27	-54	0
+28	-54	0
+29	-54	0
+30	-54	0
+31	-54	0
+32	-54	0
+33	-54	0
+34	-54	0
+35	-54	0
+36	-54	0
+37	-54	0
+38	-54	0
+39	-54	0
+40	-54	0
+41	-54	0
+42	-54	0
+43	-54	0
+44	-54	0
+45	-54	0
+46	-54	0
+47	-54	0
+48	-54	0
+49	-54	0
+50	-54	0
+51	-54	0
+52	-54	0
+53	-54	0
+54	-54	0
+55	-54	0
+56	-54	0
+57	-54	0
+58	-54	0
+59	-54	0
+60	-54	0
+61	-54	0
+62	-54	0
+63	-54	0
+64	-54	0
+65	-54	0
+66	-54	0
+67	-54	0
+68	-54	0
+69	-54	0
+70	-54	0
+71	-54	0
+72	-54	0
+73	-54	0
+74	-54	0
+75	-54	0
+76	-54	0
+77	-54	0
+78	-54	0
+79	-54	0
+80	-54	0
+81	-54	0
+82	-54	0
+83	-54	0
+84	-54	0
+85	-54	0
+86	-54	0
+87	-54	0
+88	-54	0
+89	-54	0
+90	-54	0
+91	-54	0
+92	-54	0
+93	-54	0
+94	-54	0
+95	-54	0
+96	-54	0
+97	-54	0
+98	-54	0
+99	-54	0
+100	-54	0
+101	-54	0
+102	-54	0
+103	-54	0
+104	-54	0
+105	-54	0
+106	-54	0
+107	-54	0
+108	-54	0
+109	-54	0
+110	-54	0
+111	-54	0
+112	-54	0
+113	-54	0
+114	-54	0
+115	-54	0
+116	-54	0
+117	-54	0
+118	-54	0
+119	-54	0
+120	-54	0
+121	-54	0
+122	-54	0
+123	-54	0
+124	-54	0
+125	-54	0
+126	-54	0
+127	-54	0
+128	-54	0
+129	-54	0
+130	-54	0
+131	-54	0
+132	-54	0
+133	-54	0
+134	-54	0
+135	-54	0
+136	-54	0
+137	-54	0
+138	-54	0
+139	-54	0
+140	-54	0
+141	-54	0
+142	-54	0
+143	-54	0
+144	-54	0
+145	-54	0
+146	-54	0
+147	-54	0
+148	-54	0
+149	-54	0
+150	-54	0
+151	-54	0
+152	-54	0
+153	-54	0
+154	-54	0
+155	-54	0
+156	-54	0
+157	-54	0
+158	-54	0
+159	-54	0
+160	-54	0
+161	-54	0
+162	-54	0
+163	-54	0
+164	-54	0
+165	-54	0
+166	-54	0
+167	-54	0
+168	-54	0
+169	-54	0
+170	-54	0
+171	-54	0
+172	-54	0
+173	-54	0
+174	-54	0
+175	-54	0
+176	-54	0
+177	-54	0
+178	-54	0
+179	-54	0
+180	-54	0
+181	-54	0
+182	-54	0
+183	-54	0
+184	-54	0
+185	-54	0
+186	-54	0
+187	-54	0
+188	-54	0
+189	-54	0
+190	-54	0
+191	-54	0
+192	-54	0
+193	-54	0
+194	-54	0
+195	-54	0
+196	-54	0
+197	-54	0
+198	-54	0
+199	-54	0
+200	-54	0
+201	-54	0
+202	-54	0
+203	-54	0
+204	-54	0
+205	-54	0
+206	-54	0
+207	-54	0
+208	-54	0
+209	-54	0
+210	-54	0
+211	-54	0
+212	-54	0
+213	-54	0
+214	-54	0
+215	-54	0
+216	-54	0
+217	-54	0
+218	-54	0
+219	-54	0
+220	-54	0
+221	-54	0
+222	-54	0
+223	-54	0
+224	-54	0
+225	-54	0
+226	-54	0
+227	-54	0
+228	-54	0
+229	-54	0
+230	-54	0
+231	-54	0
+232	-54	0
+233	-54	0
+234	-54	0
+235	-54	0
+236	-54	0
+237	-54	0
+238	-54	0
+239	-54	0
+240	-54	0
+241	-54	0
+242	-54	0
+243	-54	0
+244	-54	0
+245	-54	0
+246	-54	0
+247	-54	0
+248	-54	0
+249	-54	0
+250	-54	0
+251	-54	0
+252	-54	0
+253	-54	0
+254	-54	0
+255	-54	0
+256	-54	0
+257	-54	0
+258	-54	0
+259	-54	0
+260	-54	0
+261	-54	0
+262	-54	0
+263	-54	0
+264	-54	0
+265	-54	0
+266	-54	0
+267	-54	0
+268	-54	0
+269	-54	0
+270	-54	0
+271	-54	0
+272	-54	0
+273	-54	0
+274	-54	0
+275	-54	0
+276	-54	0
+277	-54	0
+278	-54	0
+279	-54	0
+280	-54	0
+281	-54	0
+282	-54	0
+283	-54	0
+284	-54	0
+285	-54	0
+286	-54	0
+287	-54	0
+288	-54	0
+289	-54	0
+290	-54	0
+291	-54	0
+292	-54	0
+293	-54	0
+294	-54	0
+295	-54	0
+296	-54	0
+297	-54	0
+298	-54	0
+299	-54	0
+300	-54	0
+301	-54	0
+302	-54	0
+303	-54	0
+304	-54	0
+305	-54	0
+306	-54	0
+307	-54	0
+308	-54	0
+309	-54	0
+310	-54	0
+311	-54	0
+312	-54	0
+313	-54	0
+314	-54	0
+315	-54	0
+316	-54	0
+317	-54	0
+318	-54	0
+319	-54	0
+320	-54	0
+321	-54	0
+322	-54	0
+323	-54	0
+324	-54	0
+325	-54	0
+326	-54	0
+327	-54	0
+328	-54	0
+329	-54	0
+330	-54	0
+331	-54	0
+332	-54	0
+333	-54	0
+334	-54	0
+335	-54	0
+336	-54	0
+337	-54	0
+338	-54	0
+339	-54	0
+340	-54	0
+341	-54	0
+342	-54	0
+343	-54	0
+344	-54	0
+345	-54	0
+346	-54	0
+347	-54	0
+348	-54	0
+349	-54	0
+350	-54	0
+351	-54	0
+352	-54	0
+353	-54	0
+354	-54	0
+355	-54	0
+356	-54	0
+357	-54	0
+358	-54	0
+359	-54	0
+360	-54	0
+0	-53.5	0
+1	-53.5	0
+2	-53.5	0
+3	-53.5	0
+4	-53.5	0
+5	-53.5	0
+6	-53.5	0
+7	-53.5	0
+8	-53.5	0
+9	-53.5	0
+10	-53.5	0
+11	-53.5	0
+12	-53.5	0
+13	-53.5	0
+14	-53.5	0
+15	-53.5	0
+16	-53.5	0
+17	-53.5	0
+18	-53.5	0
+19	-53.5	0
+20	-53.5	0
+21	-53.5	0
+22	-53.5	0
+23	-53.5	0
+24	-53.5	0
+25	-53.5	0
+26	-53.5	0
+27	-53.5	0
+28	-53.5	0
+29	-53.5	0
+30	-53.5	0
+31	-53.5	0
+32	-53.5	0
+33	-53.5	0
+34	-53.5	0
+35	-53.5	0
+36	-53.5	0
+37	-53.5	0
+38	-53.5	0
+39	-53.5	0
+40	-53.5	0
+41	-53.5	0
+42	-53.5	0
+43	-53.5	0
+44	-53.5	0
+45	-53.5	0
+46	-53.5	0
+47	-53.5	0
+48	-53.5	0
+49	-53.5	0
+50	-53.5	0
+51	-53.5	0
+52	-53.5	0
+53	-53.5	0
+54	-53.5	0
+55	-53.5	0
+56	-53.5	0
+57	-53.5	0
+58	-53.5	0
+59	-53.5	0
+60	-53.5	0
+61	-53.5	0
+62	-53.5	0
+63	-53.5	0
+64	-53.5	0
+65	-53.5	0
+66	-53.5	0
+67	-53.5	0
+68	-53.5	0
+69	-53.5	0
+70	-53.5	0
+71	-53.5	0
+72	-53.5	0
+73	-53.5	0
+74	-53.5	0
+75	-53.5	0
+76	-53.5	0
+77	-53.5	0
+78	-53.5	0
+79	-53.5	0
+80	-53.5	0
+81	-53.5	0
+82	-53.5	0
+83	-53.5	0
+84	-53.5	0
+85	-53.5	0
+86	-53.5	0
+87	-53.5	0
+88	-53.5	0
+89	-53.5	0
+90	-53.5	0
+91	-53.5	0
+92	-53.5	0
+93	-53.5	0
+94	-53.5	0
+95	-53.5	0
+96	-53.5	0
+97	-53.5	0
+98	-53.5	0
+99	-53.5	0
+100	-53.5	0
+101	-53.5	0
+102	-53.5	0
+103	-53.5	0
+104	-53.5	0
+105	-53.5	0
+106	-53.5	0
+107	-53.5	0
+108	-53.5	0
+109	-53.5	0
+110	-53.5	0
+111	-53.5	0
+112	-53.5	0
+113	-53.5	0
+114	-53.5	0
+115	-53.5	0
+116	-53.5	0
+117	-53.5	0
+118	-53.5	0
+119	-53.5	0
+120	-53.5	0
+121	-53.5	0
+122	-53.5	0
+123	-53.5	0
+124	-53.5	0
+125	-53.5	0
+126	-53.5	0
+127	-53.5	0
+128	-53.5	0
+129	-53.5	0
+130	-53.5	0
+131	-53.5	0
+132	-53.5	0
+133	-53.5	0
+134	-53.5	0
+135	-53.5	0
+136	-53.5	0
+137	-53.5	0
+138	-53.5	0
+139	-53.5	0
+140	-53.5	0
+141	-53.5	0
+142	-53.5	0
+143	-53.5	0
+144	-53.5	0
+145	-53.5	0
+146	-53.5	0
+147	-53.5	0
+148	-53.5	0
+149	-53.5	0
+150	-53.5	0
+151	-53.5	0
+152	-53.5	0
+153	-53.5	0
+154	-53.5	0
+155	-53.5	0
+156	-53.5	0
+157	-53.5	0
+158	-53.5	0
+159	-53.5	0
+160	-53.5	0
+161	-53.5	0
+162	-53.5	0
+163	-53.5	0
+164	-53.5	0
+165	-53.5	0
+166	-53.5	0
+167	-53.5	0
+168	-53.5	0
+169	-53.5	0
+170	-53.5	0
+171	-53.5	0
+172	-53.5	0
+173	-53.5	0
+174	-53.5	0
+175	-53.5	0
+176	-53.5	0
+177	-53.5	0
+178	-53.5	0
+179	-53.5	0
+180	-53.5	0
+181	-53.5	0
+182	-53.5	0
+183	-53.5	0
+184	-53.5	0
+185	-53.5	0
+186	-53.5	0
+187	-53.5	0
+188	-53.5	0
+189	-53.5	0
+190	-53.5	0
+191	-53.5	0
+192	-53.5	0
+193	-53.5	0
+194	-53.5	0
+195	-53.5	0
+196	-53.5	0
+197	-53.5	0
+198	-53.5	0
+199	-53.5	0
+200	-53.5	0
+201	-53.5	0
+202	-53.5	0
+203	-53.5	0
+204	-53.5	0
+205	-53.5	0
+206	-53.5	0
+207	-53.5	0
+208	-53.5	0
+209	-53.5	0
+210	-53.5	0
+211	-53.5	0
+212	-53.5	0
+213	-53.5	0
+214	-53.5	0
+215	-53.5	0
+216	-53.5	0
+217	-53.5	0
+218	-53.5	0
+219	-53.5	0
+220	-53.5	0
+221	-53.5	0
+222	-53.5	0
+223	-53.5	0
+224	-53.5	0
+225	-53.5	0
+226	-53.5	0
+227	-53.5	0
+228	-53.5	0
+229	-53.5	0
+230	-53.5	0
+231	-53.5	0
+232	-53.5	0
+233	-53.5	0
+234	-53.5	0
+235	-53.5	0
+236	-53.5	0
+237	-53.5	0
+238	-53.5	0
+239	-53.5	0
+240	-53.5	0
+241	-53.5	0
+242	-53.5	0
+243	-53.5	0
+244	-53.5	0
+245	-53.5	0
+246	-53.5	0
+247	-53.5	0
+248	-53.5	0
+249	-53.5	0
+250	-53.5	0
+251	-53.5	0
+252	-53.5	0
+253	-53.5	0
+254	-53.5	0
+255	-53.5	0
+256	-53.5	0
+257	-53.5	0
+258	-53.5	0
+259	-53.5	0
+260	-53.5	0
+261	-53.5	0
+262	-53.5	0
+263	-53.5	0
+264	-53.5	0
+265	-53.5	0
+266	-53.5	0
+267	-53.5	0
+268	-53.5	0
+269	-53.5	0
+270	-53.5	0
+271	-53.5	0
+272	-53.5	0
+273	-53.5	0
+274	-53.5	0
+275	-53.5	0
+276	-53.5	0
+277	-53.5	0
+278	-53.5	0
+279	-53.5	0
+280	-53.5	0
+281	-53.5	0
+282	-53.5	0
+283	-53.5	0
+284	-53.5	0
+285	-53.5	0
+286	-53.5	0
+287	-53.5	0
+288	-53.5	0
+289	-53.5	0
+290	-53.5	0
+291	-53.5	0
+292	-53.5	0
+293	-53.5	0
+294	-53.5	0
+295	-53.5	0
+296	-53.5	0
+297	-53.5	0
+298	-53.5	0
+299	-53.5	0
+300	-53.5	0
+301	-53.5	0
+302	-53.5	0
+303	-53.5	0
+304	-53.5	0
+305	-53.5	0
+306	-53.5	0
+307	-53.5	0
+308	-53.5	0
+309	-53.5	0
+310	-53.5	0
+311	-53.5	0
+312	-53.5	0
+313	-53.5	0
+314	-53.5	0
+315	-53.5	0
+316	-53.5	0
+317	-53.5	0
+318	-53.5	0
+319	-53.5	0
+320	-53.5	0
+321	-53.5	0
+322	-53.5	0
+323	-53.5	0
+324	-53.5	0
+325	-53.5	0
+326	-53.5	0
+327	-53.5	0
+328	-53.5	0
+329	-53.5	0
+330	-53.5	0
+331	-53.5	0
+332	-53.5	0
+333	-53.5	0
+334	-53.5	0
+335	-53.5	0
+336	-53.5	0
+337	-53.5	0
+338	-53.5	0
+339	-53.5	0
+340	-53.5	0
+341	-53.5	0
+342	-53.5	0
+343	-53.5	0
+344	-53.5	0
+345	-53.5	0
+346	-53.5	0
+347	-53.5	0
+348	-53.5	0
+349	-53.5	0
+350	-53.5	0
+351	-53.5	0
+352	-53.5	0
+353	-53.5	0
+354	-53.5	0
+355	-53.5	0
+356	-53.5	0
+357	-53.5	0
+358	-53.5	0
+359	-53.5	0
+360	-53.5	0
+0	-53	0
+1	-53	0
+2	-53	0
+3	-53	0
+4	-53	0
+5	-53	0
+6	-53	0
+7	-53	0
+8	-53	0
+9	-53	0
+10	-53	0
+11	-53	0
+12	-53	0
+13	-53	0
+14	-53	0
+15	-53	0
+16	-53	0
+17	-53	0
+18	-53	0
+19	-53	0
+20	-53	0
+21	-53	0
+22	-53	0
+23	-53	0
+24	-53	0
+25	-53	0
+26	-53	0
+27	-53	0
+28	-53	0
+29	-53	0
+30	-53	0
+31	-53	0
+32	-53	0
+33	-53	0
+34	-53	0
+35	-53	0
+36	-53	0
+37	-53	0
+38	-53	0
+39	-53	0
+40	-53	0
+41	-53	0
+42	-53	0
+43	-53	0
+44	-53	0
+45	-53	0
+46	-53	0
+47	-53	0
+48	-53	0
+49	-53	0
+50	-53	0
+51	-53	0
+52	-53	0
+53	-53	0
+54	-53	0
+55	-53	0
+56	-53	0
+57	-53	0
+58	-53	0
+59	-53	0
+60	-53	0
+61	-53	0
+62	-53	0
+63	-53	0
+64	-53	0
+65	-53	0
+66	-53	0
+67	-53	0
+68	-53	0
+69	-53	0
+70	-53	0
+71	-53	0
+72	-53	0
+73	-53	0
+74	-53	0
+75	-53	0
+76	-53	0
+77	-53	0
+78	-53	0
+79	-53	0
+80	-53	0
+81	-53	0
+82	-53	0
+83	-53	0
+84	-53	0
+85	-53	0
+86	-53	0
+87	-53	0
+88	-53	0
+89	-53	0
+90	-53	0
+91	-53	0
+92	-53	0
+93	-53	0
+94	-53	0
+95	-53	0
+96	-53	0
+97	-53	0
+98	-53	0
+99	-53	0
+100	-53	0
+101	-53	0
+102	-53	0
+103	-53	0
+104	-53	0
+105	-53	0
+106	-53	0
+107	-53	0
+108	-53	0
+109	-53	0
+110	-53	0
+111	-53	0
+112	-53	0
+113	-53	0
+114	-53	0
+115	-53	0
+116	-53	0
+117	-53	0
+118	-53	0
+119	-53	0
+120	-53	0
+121	-53	0
+122	-53	0
+123	-53	0
+124	-53	0
+125	-53	0
+126	-53	0
+127	-53	0
+128	-53	0
+129	-53	0
+130	-53	0
+131	-53	0
+132	-53	0
+133	-53	0
+134	-53	0
+135	-53	0
+136	-53	0
+137	-53	0
+138	-53	0
+139	-53	0
+140	-53	0
+141	-53	0
+142	-53	0
+143	-53	0
+144	-53	0
+145	-53	0
+146	-53	0
+147	-53	0
+148	-53	0
+149	-53	0
+150	-53	0
+151	-53	0
+152	-53	0
+153	-53	0
+154	-53	0
+155	-53	0
+156	-53	0
+157	-53	0
+158	-53	0
+159	-53	0
+160	-53	0
+161	-53	0
+162	-53	0
+163	-53	0
+164	-53	0
+165	-53	0
+166	-53	0
+167	-53	0
+168	-53	0
+169	-53	0
+170	-53	0
+171	-53	0
+172	-53	0
+173	-53	0
+174	-53	0
+175	-53	0
+176	-53	0
+177	-53	0
+178	-53	0
+179	-53	0
+180	-53	0
+181	-53	0
+182	-53	0
+183	-53	0
+184	-53	0
+185	-53	0
+186	-53	0
+187	-53	0
+188	-53	0
+189	-53	0
+190	-53	0
+191	-53	0
+192	-53	0
+193	-53	0
+194	-53	0
+195	-53	0
+196	-53	0
+197	-53	0
+198	-53	0
+199	-53	0
+200	-53	0
+201	-53	0
+202	-53	0
+203	-53	0
+204	-53	0
+205	-53	0
+206	-53	0
+207	-53	0
+208	-53	0
+209	-53	0
+210	-53	0
+211	-53	0
+212	-53	0
+213	-53	0
+214	-53	0
+215	-53	0
+216	-53	0
+217	-53	0
+218	-53	0
+219	-53	0
+220	-53	0
+221	-53	0
+222	-53	0
+223	-53	0
+224	-53	0
+225	-53	0
+226	-53	0
+227	-53	0
+228	-53	0
+229	-53	0
+230	-53	0
+231	-53	0
+232	-53	0
+233	-53	0
+234	-53	0
+235	-53	0
+236	-53	0
+237	-53	0
+238	-53	0
+239	-53	0
+240	-53	0
+241	-53	0
+242	-53	0
+243	-53	0
+244	-53	0
+245	-53	0
+246	-53	0
+247	-53	0
+248	-53	0
+249	-53	0
+250	-53	0
+251	-53	0
+252	-53	0
+253	-53	0
+254	-53	0
+255	-53	0
+256	-53	0
+257	-53	0
+258	-53	0
+259	-53	0
+260	-53	0
+261	-53	0
+262	-53	0
+263	-53	0
+264	-53	0
+265	-53	0
+266	-53	0
+267	-53	0
+268	-53	0
+269	-53	0
+270	-53	0
+271	-53	0
+272	-53	0
+273	-53	0
+274	-53	0
+275	-53	0
+276	-53	0
+277	-53	0
+278	-53	0
+279	-53	0
+280	-53	0
+281	-53	0
+282	-53	0
+283	-53	0
+284	-53	0
+285	-53	0
+286	-53	0
+287	-53	0
+288	-53	0
+289	-53	0
+290	-53	0
+291	-53	0
+292	-53	0
+293	-53	0
+294	-53	0
+295	-53	0
+296	-53	0
+297	-53	0
+298	-53	0
+299	-53	0
+300	-53	0
+301	-53	0
+302	-53	0
+303	-53	0
+304	-53	0
+305	-53	0
+306	-53	0
+307	-53	0
+308	-53	0
+309	-53	0
+310	-53	0
+311	-53	0
+312	-53	0
+313	-53	0
+314	-53	0
+315	-53	0
+316	-53	0
+317	-53	0
+318	-53	0
+319	-53	0
+320	-53	0
+321	-53	0
+322	-53	0
+323	-53	0
+324	-53	0
+325	-53	0
+326	-53	0
+327	-53	0
+328	-53	0
+329	-53	0
+330	-53	0
+331	-53	0
+332	-53	0
+333	-53	0
+334	-53	0
+335	-53	0
+336	-53	0
+337	-53	0
+338	-53	0
+339	-53	0
+340	-53	0
+341	-53	0
+342	-53	0
+343	-53	0
+344	-53	0
+345	-53	0
+346	-53	0
+347	-53	0
+348	-53	0
+349	-53	0
+350	-53	0
+351	-53	0
+352	-53	0
+353	-53	0
+354	-53	0
+355	-53	0
+356	-53	0
+357	-53	0
+358	-53	0
+359	-53	0
+360	-53	0
+0	-52.5	0
+1	-52.5	0
+2	-52.5	0
+3	-52.5	0
+4	-52.5	0
+5	-52.5	0
+6	-52.5	0
+7	-52.5	0
+8	-52.5	0
+9	-52.5	0
+10	-52.5	0
+11	-52.5	0
+12	-52.5	0
+13	-52.5	0
+14	-52.5	0
+15	-52.5	0
+16	-52.5	0
+17	-52.5	0
+18	-52.5	0
+19	-52.5	0
+20	-52.5	0
+21	-52.5	0
+22	-52.5	0
+23	-52.5	0
+24	-52.5	0
+25	-52.5	0
+26	-52.5	0
+27	-52.5	0
+28	-52.5	0
+29	-52.5	0
+30	-52.5	0
+31	-52.5	0
+32	-52.5	0
+33	-52.5	0
+34	-52.5	0
+35	-52.5	0
+36	-52.5	0
+37	-52.5	0
+38	-52.5	0
+39	-52.5	0
+40	-52.5	0
+41	-52.5	0
+42	-52.5	0
+43	-52.5	0
+44	-52.5	0
+45	-52.5	0
+46	-52.5	0
+47	-52.5	0
+48	-52.5	0
+49	-52.5	0
+50	-52.5	0
+51	-52.5	0
+52	-52.5	0
+53	-52.5	0
+54	-52.5	0
+55	-52.5	0
+56	-52.5	0
+57	-52.5	0
+58	-52.5	0
+59	-52.5	0
+60	-52.5	0
+61	-52.5	0
+62	-52.5	0
+63	-52.5	0
+64	-52.5	0
+65	-52.5	0
+66	-52.5	0
+67	-52.5	0
+68	-52.5	0
+69	-52.5	0
+70	-52.5	0
+71	-52.5	0
+72	-52.5	0
+73	-52.5	0
+74	-52.5	0
+75	-52.5	0
+76	-52.5	0
+77	-52.5	0
+78	-52.5	0
+79	-52.5	0
+80	-52.5	0
+81	-52.5	0
+82	-52.5	0
+83	-52.5	0
+84	-52.5	0
+85	-52.5	0
+86	-52.5	0
+87	-52.5	0
+88	-52.5	0
+89	-52.5	0
+90	-52.5	0
+91	-52.5	0
+92	-52.5	0
+93	-52.5	0
+94	-52.5	0
+95	-52.5	0
+96	-52.5	0
+97	-52.5	0
+98	-52.5	0
+99	-52.5	0
+100	-52.5	0
+101	-52.5	0
+102	-52.5	0
+103	-52.5	0
+104	-52.5	0
+105	-52.5	0
+106	-52.5	0
+107	-52.5	0
+108	-52.5	0
+109	-52.5	0
+110	-52.5	0
+111	-52.5	0
+112	-52.5	0
+113	-52.5	0
+114	-52.5	0
+115	-52.5	0
+116	-52.5	0
+117	-52.5	0
+118	-52.5	0
+119	-52.5	0
+120	-52.5	0
+121	-52.5	0
+122	-52.5	0
+123	-52.5	0
+124	-52.5	0
+125	-52.5	0
+126	-52.5	0
+127	-52.5	0
+128	-52.5	0
+129	-52.5	0
+130	-52.5	0
+131	-52.5	0
+132	-52.5	0
+133	-52.5	0
+134	-52.5	0
+135	-52.5	0
+136	-52.5	0
+137	-52.5	0
+138	-52.5	0
+139	-52.5	0
+140	-52.5	0
+141	-52.5	0
+142	-52.5	0
+143	-52.5	0
+144	-52.5	0
+145	-52.5	0
+146	-52.5	0
+147	-52.5	0
+148	-52.5	0
+149	-52.5	0
+150	-52.5	0
+151	-52.5	0
+152	-52.5	0
+153	-52.5	0
+154	-52.5	0
+155	-52.5	0
+156	-52.5	0
+157	-52.5	0
+158	-52.5	0
+159	-52.5	0
+160	-52.5	0
+161	-52.5	0
+162	-52.5	0
+163	-52.5	0
+164	-52.5	0
+165	-52.5	0
+166	-52.5	0
+167	-52.5	0
+168	-52.5	0
+169	-52.5	0
+170	-52.5	0
+171	-52.5	0
+172	-52.5	0
+173	-52.5	0
+174	-52.5	0
+175	-52.5	0
+176	-52.5	0
+177	-52.5	0
+178	-52.5	0
+179	-52.5	0
+180	-52.5	0
+181	-52.5	0
+182	-52.5	0
+183	-52.5	0
+184	-52.5	0
+185	-52.5	0
+186	-52.5	0
+187	-52.5	0
+188	-52.5	0
+189	-52.5	0
+190	-52.5	0
+191	-52.5	0
+192	-52.5	0
+193	-52.5	0
+194	-52.5	0
+195	-52.5	0
+196	-52.5	0
+197	-52.5	0
+198	-52.5	0
+199	-52.5	0
+200	-52.5	0
+201	-52.5	0
+202	-52.5	0
+203	-52.5	0
+204	-52.5	0
+205	-52.5	0
+206	-52.5	0
+207	-52.5	0
+208	-52.5	0
+209	-52.5	0
+210	-52.5	0
+211	-52.5	0
+212	-52.5	0
+213	-52.5	0
+214	-52.5	0
+215	-52.5	0
+216	-52.5	0
+217	-52.5	0
+218	-52.5	0
+219	-52.5	0
+220	-52.5	0
+221	-52.5	0
+222	-52.5	0
+223	-52.5	0
+224	-52.5	0
+225	-52.5	0
+226	-52.5	0
+227	-52.5	0
+228	-52.5	0
+229	-52.5	0
+230	-52.5	0
+231	-52.5	0
+232	-52.5	0
+233	-52.5	0
+234	-52.5	0
+235	-52.5	0
+236	-52.5	0
+237	-52.5	0
+238	-52.5	0
+239	-52.5	0
+240	-52.5	0
+241	-52.5	0
+242	-52.5	0
+243	-52.5	0
+244	-52.5	0
+245	-52.5	0
+246	-52.5	0
+247	-52.5	0
+248	-52.5	0
+249	-52.5	0
+250	-52.5	0
+251	-52.5	0
+252	-52.5	0
+253	-52.5	0
+254	-52.5	0
+255	-52.5	0
+256	-52.5	0
+257	-52.5	0
+258	-52.5	0
+259	-52.5	0
+260	-52.5	0
+261	-52.5	0
+262	-52.5	0
+263	-52.5	0
+264	-52.5	0
+265	-52.5	0
+266	-52.5	0
+267	-52.5	0
+268	-52.5	0
+269	-52.5	0
+270	-52.5	0
+271	-52.5	0
+272	-52.5	0
+273	-52.5	0
+274	-52.5	0
+275	-52.5	0
+276	-52.5	0
+277	-52.5	0
+278	-52.5	0
+279	-52.5	0
+280	-52.5	0
+281	-52.5	0
+282	-52.5	0
+283	-52.5	0
+284	-52.5	0
+285	-52.5	0
+286	-52.5	0
+287	-52.5	0
+288	-52.5	0
+289	-52.5	0
+290	-52.5	0
+291	-52.5	0
+292	-52.5	0
+293	-52.5	0
+294	-52.5	0
+295	-52.5	0
+296	-52.5	0
+297	-52.5	0
+298	-52.5	0
+299	-52.5	0
+300	-52.5	0
+301	-52.5	0
+302	-52.5	0
+303	-52.5	0
+304	-52.5	0
+305	-52.5	0
+306	-52.5	0
+307	-52.5	0
+308	-52.5	0
+309	-52.5	0
+310	-52.5	0
+311	-52.5	0
+312	-52.5	0
+313	-52.5	0
+314	-52.5	0
+315	-52.5	0
+316	-52.5	0
+317	-52.5	0
+318	-52.5	0
+319	-52.5	0
+320	-52.5	0
+321	-52.5	0
+322	-52.5	0
+323	-52.5	0
+324	-52.5	0
+325	-52.5	0
+326	-52.5	0
+327	-52.5	0
+328	-52.5	0
+329	-52.5	0
+330	-52.5	0
+331	-52.5	0
+332	-52.5	0
+333	-52.5	0
+334	-52.5	0
+335	-52.5	0
+336	-52.5	0
+337	-52.5	0
+338	-52.5	0
+339	-52.5	0
+340	-52.5	0
+341	-52.5	0
+342	-52.5	0
+343	-52.5	0
+344	-52.5	0
+345	-52.5	0
+346	-52.5	0
+347	-52.5	0
+348	-52.5	0
+349	-52.5	0
+350	-52.5	0
+351	-52.5	0
+352	-52.5	0
+353	-52.5	0
+354	-52.5	0
+355	-52.5	0
+356	-52.5	0
+357	-52.5	0
+358	-52.5	0
+359	-52.5	0
+360	-52.5	0
+0	-52	0
+1	-52	0
+2	-52	0
+3	-52	0
+4	-52	0
+5	-52	0
+6	-52	0
+7	-52	0
+8	-52	0
+9	-52	0
+10	-52	0
+11	-52	0
+12	-52	0
+13	-52	0
+14	-52	0
+15	-52	0
+16	-52	0
+17	-52	0
+18	-52	0
+19	-52	0
+20	-52	0
+21	-52	0
+22	-52	0
+23	-52	0
+24	-52	0
+25	-52	0
+26	-52	0
+27	-52	0
+28	-52	0
+29	-52	0
+30	-52	0
+31	-52	0
+32	-52	0
+33	-52	0
+34	-52	0
+35	-52	0
+36	-52	0
+37	-52	0
+38	-52	0
+39	-52	0
+40	-52	0
+41	-52	0
+42	-52	0
+43	-52	0
+44	-52	0
+45	-52	0
+46	-52	0
+47	-52	0
+48	-52	0
+49	-52	0
+50	-52	0
+51	-52	0
+52	-52	0
+53	-52	0
+54	-52	0
+55	-52	0
+56	-52	0
+57	-52	0
+58	-52	0
+59	-52	0
+60	-52	0
+61	-52	0
+62	-52	0
+63	-52	0
+64	-52	0
+65	-52	0
+66	-52	0
+67	-52	0
+68	-52	0
+69	-52	0
+70	-52	0
+71	-52	0
+72	-52	0
+73	-52	0
+74	-52	0
+75	-52	0
+76	-52	0
+77	-52	0
+78	-52	0
+79	-52	0
+80	-52	0
+81	-52	0
+82	-52	0
+83	-52	0
+84	-52	0
+85	-52	0
+86	-52	0
+87	-52	0
+88	-52	0
+89	-52	0
+90	-52	0
+91	-52	0
+92	-52	0
+93	-52	0
+94	-52	0
+95	-52	0
+96	-52	0
+97	-52	0
+98	-52	0
+99	-52	0
+100	-52	0
+101	-52	0
+102	-52	0
+103	-52	0
+104	-52	0
+105	-52	0
+106	-52	0
+107	-52	0
+108	-52	0
+109	-52	0
+110	-52	0
+111	-52	0
+112	-52	0
+113	-52	0
+114	-52	0
+115	-52	0
+116	-52	0
+117	-52	0
+118	-52	0
+119	-52	0
+120	-52	0
+121	-52	0
+122	-52	0
+123	-52	0
+124	-52	0
+125	-52	0
+126	-52	0
+127	-52	0
+128	-52	0
+129	-52	0
+130	-52	0
+131	-52	0
+132	-52	0
+133	-52	0
+134	-52	0
+135	-52	0
+136	-52	0
+137	-52	0
+138	-52	0
+139	-52	0
+140	-52	0
+141	-52	0
+142	-52	0
+143	-52	0
+144	-52	0
+145	-52	0
+146	-52	0
+147	-52	0
+148	-52	0
+149	-52	0
+150	-52	0
+151	-52	0
+152	-52	0
+153	-52	0
+154	-52	0
+155	-52	0
+156	-52	0
+157	-52	0
+158	-52	0
+159	-52	0
+160	-52	0
+161	-52	0
+162	-52	0
+163	-52	0
+164	-52	0
+165	-52	0
+166	-52	0
+167	-52	0
+168	-52	0
+169	-52	0
+170	-52	0
+171	-52	0
+172	-52	0
+173	-52	0
+174	-52	0
+175	-52	0
+176	-52	0
+177	-52	0
+178	-52	0
+179	-52	0
+180	-52	0
+181	-52	0
+182	-52	0
+183	-52	0
+184	-52	0
+185	-52	0
+186	-52	0
+187	-52	0
+188	-52	0
+189	-52	0
+190	-52	0
+191	-52	0
+192	-52	0
+193	-52	0
+194	-52	0
+195	-52	0
+196	-52	0
+197	-52	0
+198	-52	0
+199	-52	0
+200	-52	0
+201	-52	0
+202	-52	0
+203	-52	0
+204	-52	0
+205	-52	0
+206	-52	0
+207	-52	0
+208	-52	0
+209	-52	0
+210	-52	0
+211	-52	0
+212	-52	0
+213	-52	0
+214	-52	0
+215	-52	0
+216	-52	0
+217	-52	0
+218	-52	0
+219	-52	0
+220	-52	0
+221	-52	0
+222	-52	0
+223	-52	0
+224	-52	0
+225	-52	0
+226	-52	0
+227	-52	0
+228	-52	0
+229	-52	0
+230	-52	0
+231	-52	0
+232	-52	0
+233	-52	0
+234	-52	0
+235	-52	0
+236	-52	0
+237	-52	0
+238	-52	0
+239	-52	0
+240	-52	0
+241	-52	0
+242	-52	0
+243	-52	0
+244	-52	0
+245	-52	0
+246	-52	0
+247	-52	0
+248	-52	0
+249	-52	0
+250	-52	0
+251	-52	0
+252	-52	0
+253	-52	0
+254	-52	0
+255	-52	0
+256	-52	0
+257	-52	0
+258	-52	0
+259	-52	0
+260	-52	0
+261	-52	0
+262	-52	0
+263	-52	0
+264	-52	0
+265	-52	0
+266	-52	0
+267	-52	0
+268	-52	0
+269	-52	0
+270	-52	0
+271	-52	0
+272	-52	0
+273	-52	0
+274	-52	0
+275	-52	0
+276	-52	0
+277	-52	0
+278	-52	0
+279	-52	0
+280	-52	0
+281	-52	0
+282	-52	0
+283	-52	0
+284	-52	0
+285	-52	0
+286	-52	0
+287	-52	0
+288	-52	0
+289	-52	0
+290	-52	0
+291	-52	0
+292	-52	0
+293	-52	0
+294	-52	0
+295	-52	0
+296	-52	0
+297	-52	0
+298	-52	0
+299	-52	0
+300	-52	0
+301	-52	0
+302	-52	0
+303	-52	0
+304	-52	0
+305	-52	0
+306	-52	0
+307	-52	0
+308	-52	0
+309	-52	0
+310	-52	0
+311	-52	0
+312	-52	0
+313	-52	0
+314	-52	0
+315	-52	0
+316	-52	0
+317	-52	0
+318	-52	0
+319	-52	0
+320	-52	0
+321	-52	0
+322	-52	0
+323	-52	0
+324	-52	0
+325	-52	0
+326	-52	0
+327	-52	0
+328	-52	0
+329	-52	0
+330	-52	0
+331	-52	0
+332	-52	0
+333	-52	0
+334	-52	0
+335	-52	0
+336	-52	0
+337	-52	0
+338	-52	0
+339	-52	0
+340	-52	0
+341	-52	0
+342	-52	0
+343	-52	0
+344	-52	0
+345	-52	0
+346	-52	0
+347	-52	0
+348	-52	0
+349	-52	0
+350	-52	0
+351	-52	0
+352	-52	0
+353	-52	0
+354	-52	0
+355	-52	0
+356	-52	0
+357	-52	0
+358	-52	0
+359	-52	0
+360	-52	0
+0	-51.5	0
+1	-51.5	0
+2	-51.5	0
+3	-51.5	0
+4	-51.5	0
+5	-51.5	0
+6	-51.5	0
+7	-51.5	0
+8	-51.5	0
+9	-51.5	0
+10	-51.5	0
+11	-51.5	0
+12	-51.5	0
+13	-51.5	0
+14	-51.5	0
+15	-51.5	0
+16	-51.5	0
+17	-51.5	0
+18	-51.5	0
+19	-51.5	0
+20	-51.5	0
+21	-51.5	0
+22	-51.5	0
+23	-51.5	0
+24	-51.5	0
+25	-51.5	0
+26	-51.5	0
+27	-51.5	0
+28	-51.5	0
+29	-51.5	0
+30	-51.5	0
+31	-51.5	0
+32	-51.5	0
+33	-51.5	0
+34	-51.5	0
+35	-51.5	0
+36	-51.5	0
+37	-51.5	0
+38	-51.5	0
+39	-51.5	0
+40	-51.5	0
+41	-51.5	0
+42	-51.5	0
+43	-51.5	0
+44	-51.5	0
+45	-51.5	0
+46	-51.5	0
+47	-51.5	0
+48	-51.5	0
+49	-51.5	0
+50	-51.5	0
+51	-51.5	0
+52	-51.5	0
+53	-51.5	0
+54	-51.5	0
+55	-51.5	0
+56	-51.5	0
+57	-51.5	0
+58	-51.5	0
+59	-51.5	0
+60	-51.5	0
+61	-51.5	0
+62	-51.5	0
+63	-51.5	0
+64	-51.5	0
+65	-51.5	0
+66	-51.5	0
+67	-51.5	0
+68	-51.5	0
+69	-51.5	0
+70	-51.5	0
+71	-51.5	0
+72	-51.5	0
+73	-51.5	0
+74	-51.5	0
+75	-51.5	0
+76	-51.5	0
+77	-51.5	0
+78	-51.5	0
+79	-51.5	0
+80	-51.5	0
+81	-51.5	0
+82	-51.5	0
+83	-51.5	0
+84	-51.5	0
+85	-51.5	0
+86	-51.5	0
+87	-51.5	0
+88	-51.5	0
+89	-51.5	0
+90	-51.5	0
+91	-51.5	0
+92	-51.5	0
+93	-51.5	0
+94	-51.5	0
+95	-51.5	0
+96	-51.5	0
+97	-51.5	0
+98	-51.5	0
+99	-51.5	0
+100	-51.5	0
+101	-51.5	0
+102	-51.5	0
+103	-51.5	0
+104	-51.5	0
+105	-51.5	0
+106	-51.5	0
+107	-51.5	0
+108	-51.5	0
+109	-51.5	0
+110	-51.5	0
+111	-51.5	0
+112	-51.5	0
+113	-51.5	0
+114	-51.5	0
+115	-51.5	0
+116	-51.5	0
+117	-51.5	0
+118	-51.5	0
+119	-51.5	0
+120	-51.5	0
+121	-51.5	0
+122	-51.5	0
+123	-51.5	0
+124	-51.5	0
+125	-51.5	0
+126	-51.5	0
+127	-51.5	0
+128	-51.5	0
+129	-51.5	0
+130	-51.5	0
+131	-51.5	0
+132	-51.5	0
+133	-51.5	0
+134	-51.5	0
+135	-51.5	0
+136	-51.5	0
+137	-51.5	0
+138	-51.5	0
+139	-51.5	0
+140	-51.5	0
+141	-51.5	0
+142	-51.5	0
+143	-51.5	0
+144	-51.5	0
+145	-51.5	0
+146	-51.5	0
+147	-51.5	0
+148	-51.5	0
+149	-51.5	0
+150	-51.5	0
+151	-51.5	0
+152	-51.5	0
+153	-51.5	0
+154	-51.5	0
+155	-51.5	0
+156	-51.5	0
+157	-51.5	0
+158	-51.5	0
+159	-51.5	0
+160	-51.5	0
+161	-51.5	0
+162	-51.5	0
+163	-51.5	0
+164	-51.5	0
+165	-51.5	0
+166	-51.5	0
+167	-51.5	0
+168	-51.5	0
+169	-51.5	0
+170	-51.5	0
+171	-51.5	0
+172	-51.5	0
+173	-51.5	0
+174	-51.5	0
+175	-51.5	0
+176	-51.5	0
+177	-51.5	0
+178	-51.5	0
+179	-51.5	0
+180	-51.5	0
+181	-51.5	0
+182	-51.5	0
+183	-51.5	0
+184	-51.5	0
+185	-51.5	0
+186	-51.5	0
+187	-51.5	0
+188	-51.5	0
+189	-51.5	0
+190	-51.5	0
+191	-51.5	0
+192	-51.5	0
+193	-51.5	0
+194	-51.5	0
+195	-51.5	0
+196	-51.5	0
+197	-51.5	0
+198	-51.5	0
+199	-51.5	0
+200	-51.5	0
+201	-51.5	0
+202	-51.5	0
+203	-51.5	0
+204	-51.5	0
+205	-51.5	0
+206	-51.5	0
+207	-51.5	0
+208	-51.5	0
+209	-51.5	0
+210	-51.5	0
+211	-51.5	0
+212	-51.5	0
+213	-51.5	0
+214	-51.5	0
+215	-51.5	0
+216	-51.5	0
+217	-51.5	0
+218	-51.5	0
+219	-51.5	0
+220	-51.5	0
+221	-51.5	0
+222	-51.5	0
+223	-51.5	0
+224	-51.5	0
+225	-51.5	0
+226	-51.5	0
+227	-51.5	0
+228	-51.5	0
+229	-51.5	0
+230	-51.5	0
+231	-51.5	0
+232	-51.5	0
+233	-51.5	0
+234	-51.5	0
+235	-51.5	0
+236	-51.5	0
+237	-51.5	0
+238	-51.5	0
+239	-51.5	0
+240	-51.5	0
+241	-51.5	0
+242	-51.5	0
+243	-51.5	0
+244	-51.5	0
+245	-51.5	0
+246	-51.5	0
+247	-51.5	0
+248	-51.5	0
+249	-51.5	0
+250	-51.5	0
+251	-51.5	0
+252	-51.5	0
+253	-51.5	0
+254	-51.5	0
+255	-51.5	0
+256	-51.5	0
+257	-51.5	0
+258	-51.5	0
+259	-51.5	0
+260	-51.5	0
+261	-51.5	0
+262	-51.5	0
+263	-51.5	0
+264	-51.5	0
+265	-51.5	0
+266	-51.5	0
+267	-51.5	0
+268	-51.5	0
+269	-51.5	0
+270	-51.5	0
+271	-51.5	0
+272	-51.5	0
+273	-51.5	0
+274	-51.5	0
+275	-51.5	0
+276	-51.5	0
+277	-51.5	0
+278	-51.5	0
+279	-51.5	0
+280	-51.5	0
+281	-51.5	0
+282	-51.5	0
+283	-51.5	0
+284	-51.5	0
+285	-51.5	0
+286	-51.5	0
+287	-51.5	0
+288	-51.5	0
+289	-51.5	0
+290	-51.5	0
+291	-51.5	0
+292	-51.5	0
+293	-51.5	0
+294	-51.5	0
+295	-51.5	0
+296	-51.5	0
+297	-51.5	0
+298	-51.5	0
+299	-51.5	0
+300	-51.5	0
+301	-51.5	0
+302	-51.5	0
+303	-51.5	0
+304	-51.5	0
+305	-51.5	0
+306	-51.5	0
+307	-51.5	0
+308	-51.5	0
+309	-51.5	0
+310	-51.5	0
+311	-51.5	0
+312	-51.5	0
+313	-51.5	0
+314	-51.5	0
+315	-51.5	0
+316	-51.5	0
+317	-51.5	0
+318	-51.5	0
+319	-51.5	0
+320	-51.5	0
+321	-51.5	0
+322	-51.5	0
+323	-51.5	0
+324	-51.5	0
+325	-51.5	0
+326	-51.5	0
+327	-51.5	0
+328	-51.5	0
+329	-51.5	0
+330	-51.5	0
+331	-51.5	0
+332	-51.5	0
+333	-51.5	0
+334	-51.5	0
+335	-51.5	0
+336	-51.5	0
+337	-51.5	0
+338	-51.5	0
+339	-51.5	0
+340	-51.5	0
+341	-51.5	0
+342	-51.5	0
+343	-51.5	0
+344	-51.5	0
+345	-51.5	0
+346	-51.5	0
+347	-51.5	0
+348	-51.5	0
+349	-51.5	0
+350	-51.5	0
+351	-51.5	0
+352	-51.5	0
+353	-51.5	0
+354	-51.5	0
+355	-51.5	0
+356	-51.5	0
+357	-51.5	0
+358	-51.5	0
+359	-51.5	0
+360	-51.5	0
+0	-51	0
+1	-51	0
+2	-51	0
+3	-51	0
+4	-51	0
+5	-51	0
+6	-51	0
+7	-51	0
+8	-51	0
+9	-51	0
+10	-51	0
+11	-51	0
+12	-51	0
+13	-51	0
+14	-51	0
+15	-51	0
+16	-51	0
+17	-51	0
+18	-51	0
+19	-51	0
+20	-51	0
+21	-51	0
+22	-51	0
+23	-51	0
+24	-51	0
+25	-51	0
+26	-51	0
+27	-51	0
+28	-51	0
+29	-51	0
+30	-51	0
+31	-51	0
+32	-51	0
+33	-51	0
+34	-51	0
+35	-51	0
+36	-51	0
+37	-51	0
+38	-51	0
+39	-51	0
+40	-51	0
+41	-51	0
+42	-51	0
+43	-51	0
+44	-51	0
+45	-51	0
+46	-51	0
+47	-51	0
+48	-51	0
+49	-51	0
+50	-51	0
+51	-51	0
+52	-51	0
+53	-51	0
+54	-51	0
+55	-51	0
+56	-51	0
+57	-51	0
+58	-51	0
+59	-51	0
+60	-51	0
+61	-51	0
+62	-51	0
+63	-51	0
+64	-51	0
+65	-51	0
+66	-51	0
+67	-51	0
+68	-51	0
+69	-51	0
+70	-51	0
+71	-51	0
+72	-51	0
+73	-51	0
+74	-51	0
+75	-51	0
+76	-51	0
+77	-51	0
+78	-51	0
+79	-51	0
+80	-51	0
+81	-51	0
+82	-51	0
+83	-51	0
+84	-51	0
+85	-51	0
+86	-51	0
+87	-51	0
+88	-51	0
+89	-51	0
+90	-51	0
+91	-51	0
+92	-51	0
+93	-51	0
+94	-51	0
+95	-51	0
+96	-51	0
+97	-51	0
+98	-51	0
+99	-51	0
+100	-51	0
+101	-51	0
+102	-51	0
+103	-51	0
+104	-51	0
+105	-51	0
+106	-51	0
+107	-51	0
+108	-51	0
+109	-51	0
+110	-51	0
+111	-51	0
+112	-51	0
+113	-51	0
+114	-51	0
+115	-51	0
+116	-51	0
+117	-51	0
+118	-51	0
+119	-51	0
+120	-51	0
+121	-51	0
+122	-51	0
+123	-51	0
+124	-51	0
+125	-51	0
+126	-51	0
+127	-51	0
+128	-51	0
+129	-51	0
+130	-51	0
+131	-51	0
+132	-51	0
+133	-51	0
+134	-51	0
+135	-51	0
+136	-51	0
+137	-51	0
+138	-51	0
+139	-51	0
+140	-51	0
+141	-51	0
+142	-51	0
+143	-51	0
+144	-51	0
+145	-51	0
+146	-51	0
+147	-51	0
+148	-51	0
+149	-51	0
+150	-51	0
+151	-51	0
+152	-51	0
+153	-51	0
+154	-51	0
+155	-51	0
+156	-51	0
+157	-51	0
+158	-51	0
+159	-51	0
+160	-51	0
+161	-51	0
+162	-51	0
+163	-51	0
+164	-51	0
+165	-51	0
+166	-51	0
+167	-51	0
+168	-51	0
+169	-51	0
+170	-51	0
+171	-51	0
+172	-51	0
+173	-51	0
+174	-51	0
+175	-51	0
+176	-51	0
+177	-51	0
+178	-51	0
+179	-51	0
+180	-51	0
+181	-51	0
+182	-51	0
+183	-51	0
+184	-51	0
+185	-51	0
+186	-51	0
+187	-51	0
+188	-51	0
+189	-51	0
+190	-51	0
+191	-51	0
+192	-51	0
+193	-51	0
+194	-51	0
+195	-51	0
+196	-51	0
+197	-51	0
+198	-51	0
+199	-51	0
+200	-51	0
+201	-51	0
+202	-51	0
+203	-51	0
+204	-51	0
+205	-51	0
+206	-51	0
+207	-51	0
+208	-51	0
+209	-51	0
+210	-51	0
+211	-51	0
+212	-51	0
+213	-51	0
+214	-51	0
+215	-51	0
+216	-51	0
+217	-51	0
+218	-51	0
+219	-51	0
+220	-51	0
+221	-51	0
+222	-51	0
+223	-51	0
+224	-51	0
+225	-51	0
+226	-51	0
+227	-51	0
+228	-51	0
+229	-51	0
+230	-51	0
+231	-51	0
+232	-51	0
+233	-51	0
+234	-51	0
+235	-51	0
+236	-51	0
+237	-51	0
+238	-51	0
+239	-51	0
+240	-51	0
+241	-51	0
+242	-51	0
+243	-51	0
+244	-51	0
+245	-51	0
+246	-51	0
+247	-51	0
+248	-51	0
+249	-51	0
+250	-51	0
+251	-51	0
+252	-51	0
+253	-51	0
+254	-51	0
+255	-51	0
+256	-51	0
+257	-51	0
+258	-51	0
+259	-51	0
+260	-51	0
+261	-51	0
+262	-51	0
+263	-51	0
+264	-51	0
+265	-51	0
+266	-51	0
+267	-51	0
+268	-51	0
+269	-51	0
+270	-51	0
+271	-51	0
+272	-51	0
+273	-51	0
+274	-51	0
+275	-51	0
+276	-51	0
+277	-51	0
+278	-51	0
+279	-51	0
+280	-51	0
+281	-51	0
+282	-51	0
+283	-51	0
+284	-51	0
+285	-51	0
+286	-51	0
+287	-51	0
+288	-51	0
+289	-51	0
+290	-51	0
+291	-51	0
+292	-51	0
+293	-51	0
+294	-51	0
+295	-51	0
+296	-51	0
+297	-51	0
+298	-51	0
+299	-51	0
+300	-51	0
+301	-51	0
+302	-51	0
+303	-51	0
+304	-51	0
+305	-51	0
+306	-51	0
+307	-51	0
+308	-51	0
+309	-51	0
+310	-51	0
+311	-51	0
+312	-51	0
+313	-51	0
+314	-51	0
+315	-51	0
+316	-51	0
+317	-51	0
+318	-51	0
+319	-51	0
+320	-51	0
+321	-51	0
+322	-51	0
+323	-51	0
+324	-51	0
+325	-51	0
+326	-51	0
+327	-51	0
+328	-51	0
+329	-51	0
+330	-51	0
+331	-51	0
+332	-51	0
+333	-51	0
+334	-51	0
+335	-51	0
+336	-51	0
+337	-51	0
+338	-51	0
+339	-51	0
+340	-51	0
+341	-51	0
+342	-51	0
+343	-51	0
+344	-51	0
+345	-51	0
+346	-51	0
+347	-51	0
+348	-51	0
+349	-51	0
+350	-51	0
+351	-51	0
+352	-51	0
+353	-51	0
+354	-51	0
+355	-51	0
+356	-51	0
+357	-51	0
+358	-51	0
+359	-51	0
+360	-51	0
+0	-50.5	0
+1	-50.5	0
+2	-50.5	0
+3	-50.5	0
+4	-50.5	0
+5	-50.5	0
+6	-50.5	0
+7	-50.5	0
+8	-50.5	0
+9	-50.5	0
+10	-50.5	0
+11	-50.5	0
+12	-50.5	0
+13	-50.5	0
+14	-50.5	0
+15	-50.5	0
+16	-50.5	0
+17	-50.5	0
+18	-50.5	0
+19	-50.5	0
+20	-50.5	0
+21	-50.5	0
+22	-50.5	0
+23	-50.5	0
+24	-50.5	0
+25	-50.5	0
+26	-50.5	0
+27	-50.5	0
+28	-50.5	0
+29	-50.5	0
+30	-50.5	0
+31	-50.5	0
+32	-50.5	0
+33	-50.5	0
+34	-50.5	0
+35	-50.5	0
+36	-50.5	0
+37	-50.5	0
+38	-50.5	0
+39	-50.5	0
+40	-50.5	0
+41	-50.5	0
+42	-50.5	0
+43	-50.5	0
+44	-50.5	0
+45	-50.5	0
+46	-50.5	0
+47	-50.5	0
+48	-50.5	0
+49	-50.5	0
+50	-50.5	0
+51	-50.5	0
+52	-50.5	0
+53	-50.5	0
+54	-50.5	0
+55	-50.5	0
+56	-50.5	0
+57	-50.5	0
+58	-50.5	0
+59	-50.5	0
+60	-50.5	0
+61	-50.5	0
+62	-50.5	0
+63	-50.5	0
+64	-50.5	0
+65	-50.5	0
+66	-50.5	0
+67	-50.5	0
+68	-50.5	0
+69	-50.5	0
+70	-50.5	0
+71	-50.5	0
+72	-50.5	0
+73	-50.5	0
+74	-50.5	0
+75	-50.5	0
+76	-50.5	0
+77	-50.5	0
+78	-50.5	0
+79	-50.5	0
+80	-50.5	0
+81	-50.5	0
+82	-50.5	0
+83	-50.5	0
+84	-50.5	0
+85	-50.5	0
+86	-50.5	0
+87	-50.5	0
+88	-50.5	0
+89	-50.5	0
+90	-50.5	0
+91	-50.5	0
+92	-50.5	0
+93	-50.5	0
+94	-50.5	0
+95	-50.5	0
+96	-50.5	0
+97	-50.5	0
+98	-50.5	0
+99	-50.5	0
+100	-50.5	0
+101	-50.5	0
+102	-50.5	0
+103	-50.5	0
+104	-50.5	0
+105	-50.5	0
+106	-50.5	0
+107	-50.5	0
+108	-50.5	0
+109	-50.5	0
+110	-50.5	0
+111	-50.5	0
+112	-50.5	0
+113	-50.5	0
+114	-50.5	0
+115	-50.5	0
+116	-50.5	0
+117	-50.5	0
+118	-50.5	0
+119	-50.5	0
+120	-50.5	0
+121	-50.5	0
+122	-50.5	0
+123	-50.5	0
+124	-50.5	0
+125	-50.5	0
+126	-50.5	0
+127	-50.5	0
+128	-50.5	0
+129	-50.5	0
+130	-50.5	0
+131	-50.5	0
+132	-50.5	0
+133	-50.5	0
+134	-50.5	0
+135	-50.5	0
+136	-50.5	0
+137	-50.5	0
+138	-50.5	0
+139	-50.5	0
+140	-50.5	0
+141	-50.5	0
+142	-50.5	0
+143	-50.5	0
+144	-50.5	0
+145	-50.5	0
+146	-50.5	0
+147	-50.5	0
+148	-50.5	0
+149	-50.5	0
+150	-50.5	0
+151	-50.5	0
+152	-50.5	0
+153	-50.5	0
+154	-50.5	0
+155	-50.5	0
+156	-50.5	0
+157	-50.5	0
+158	-50.5	0
+159	-50.5	0
+160	-50.5	0
+161	-50.5	0
+162	-50.5	0
+163	-50.5	0
+164	-50.5	0
+165	-50.5	0
+166	-50.5	0
+167	-50.5	0
+168	-50.5	0
+169	-50.5	0
+170	-50.5	0
+171	-50.5	0
+172	-50.5	0
+173	-50.5	0
+174	-50.5	0
+175	-50.5	0
+176	-50.5	0
+177	-50.5	0
+178	-50.5	0
+179	-50.5	0
+180	-50.5	0
+181	-50.5	0
+182	-50.5	0
+183	-50.5	0
+184	-50.5	0
+185	-50.5	0
+186	-50.5	0
+187	-50.5	0
+188	-50.5	0
+189	-50.5	0
+190	-50.5	0
+191	-50.5	0
+192	-50.5	0
+193	-50.5	0
+194	-50.5	0
+195	-50.5	0
+196	-50.5	0
+197	-50.5	0
+198	-50.5	0
+199	-50.5	0
+200	-50.5	0
+201	-50.5	0
+202	-50.5	0
+203	-50.5	0
+204	-50.5	0
+205	-50.5	0
+206	-50.5	0
+207	-50.5	0
+208	-50.5	0
+209	-50.5	0
+210	-50.5	0
+211	-50.5	0
+212	-50.5	0
+213	-50.5	0
+214	-50.5	0
+215	-50.5	0
+216	-50.5	0
+217	-50.5	0
+218	-50.5	0
+219	-50.5	0
+220	-50.5	0
+221	-50.5	0
+222	-50.5	0
+223	-50.5	0
+224	-50.5	0
+225	-50.5	0
+226	-50.5	0
+227	-50.5	0
+228	-50.5	0
+229	-50.5	0
+230	-50.5	0
+231	-50.5	0
+232	-50.5	0
+233	-50.5	0
+234	-50.5	0
+235	-50.5	0
+236	-50.5	0
+237	-50.5	0
+238	-50.5	0
+239	-50.5	0
+240	-50.5	0
+241	-50.5	0
+242	-50.5	0
+243	-50.5	0
+244	-50.5	0
+245	-50.5	0
+246	-50.5	0
+247	-50.5	0
+248	-50.5	0
+249	-50.5	0
+250	-50.5	0
+251	-50.5	0
+252	-50.5	0
+253	-50.5	0
+254	-50.5	0
+255	-50.5	0
+256	-50.5	0
+257	-50.5	0
+258	-50.5	0
+259	-50.5	0
+260	-50.5	0
+261	-50.5	0
+262	-50.5	0
+263	-50.5	0
+264	-50.5	0
+265	-50.5	0
+266	-50.5	0
+267	-50.5	0
+268	-50.5	0
+269	-50.5	0
+270	-50.5	0
+271	-50.5	0
+272	-50.5	0
+273	-50.5	0
+274	-50.5	0
+275	-50.5	0
+276	-50.5	0
+277	-50.5	0
+278	-50.5	0
+279	-50.5	0
+280	-50.5	0
+281	-50.5	0
+282	-50.5	0
+283	-50.5	0
+284	-50.5	0
+285	-50.5	0
+286	-50.5	0
+287	-50.5	0
+288	-50.5	0
+289	-50.5	0
+290	-50.5	0
+291	-50.5	0
+292	-50.5	0
+293	-50.5	0
+294	-50.5	0
+295	-50.5	0
+296	-50.5	0
+297	-50.5	0
+298	-50.5	0
+299	-50.5	0
+300	-50.5	0
+301	-50.5	0
+302	-50.5	0
+303	-50.5	0
+304	-50.5	0
+305	-50.5	0
+306	-50.5	0
+307	-50.5	0
+308	-50.5	0
+309	-50.5	0
+310	-50.5	0
+311	-50.5	0
+312	-50.5	0
+313	-50.5	0
+314	-50.5	0
+315	-50.5	0
+316	-50.5	0
+317	-50.5	0
+318	-50.5	0
+319	-50.5	0
+320	-50.5	0
+321	-50.5	0
+322	-50.5	0
+323	-50.5	0
+324	-50.5	0
+325	-50.5	0
+326	-50.5	0
+327	-50.5	0
+328	-50.5	0
+329	-50.5	0
+330	-50.5	0
+331	-50.5	0
+332	-50.5	0
+333	-50.5	0
+334	-50.5	0
+335	-50.5	0
+336	-50.5	0
+337	-50.5	0
+338	-50.5	0
+339	-50.5	0
+340	-50.5	0
+341	-50.5	0
+342	-50.5	0
+343	-50.5	0
+344	-50.5	0
+345	-50.5	0
+346	-50.5	0
+347	-50.5	0
+348	-50.5	0
+349	-50.5	0
+350	-50.5	0
+351	-50.5	0
+352	-50.5	0
+353	-50.5	0
+354	-50.5	0
+355	-50.5	0
+356	-50.5	0
+357	-50.5	0
+358	-50.5	0
+359	-50.5	0
+360	-50.5	0
+0	-50	0
+1	-50	0
+2	-50	0
+3	-50	0
+4	-50	0
+5	-50	0
+6	-50	0
+7	-50	0
+8	-50	0
+9	-50	0
+10	-50	0
+11	-50	0
+12	-50	0
+13	-50	0
+14	-50	0
+15	-50	0
+16	-50	0
+17	-50	0
+18	-50	0
+19	-50	0
+20	-50	0
+21	-50	0
+22	-50	0
+23	-50	0
+24	-50	0
+25	-50	0
+26	-50	0
+27	-50	0
+28	-50	0
+29	-50	0
+30	-50	0
+31	-50	0
+32	-50	0
+33	-50	0
+34	-50	0
+35	-50	0
+36	-50	0
+37	-50	0
+38	-50	0
+39	-50	0
+40	-50	0
+41	-50	0
+42	-50	0
+43	-50	0
+44	-50	0
+45	-50	0
+46	-50	0
+47	-50	0
+48	-50	0
+49	-50	0
+50	-50	0
+51	-50	0
+52	-50	0
+53	-50	0
+54	-50	0
+55	-50	0
+56	-50	0
+57	-50	0
+58	-50	0
+59	-50	0
+60	-50	0
+61	-50	0
+62	-50	0
+63	-50	0
+64	-50	0
+65	-50	0
+66	-50	0
+67	-50	0
+68	-50	0
+69	-50	0
+70	-50	0
+71	-50	0
+72	-50	0
+73	-50	0
+74	-50	0
+75	-50	0
+76	-50	0
+77	-50	0
+78	-50	0
+79	-50	0
+80	-50	0
+81	-50	0
+82	-50	0
+83	-50	0
+84	-50	0
+85	-50	0
+86	-50	0
+87	-50	0
+88	-50	0
+89	-50	0
+90	-50	0
+91	-50	0
+92	-50	0
+93	-50	0
+94	-50	0
+95	-50	0
+96	-50	0
+97	-50	0
+98	-50	0
+99	-50	0
+100	-50	0
+101	-50	0
+102	-50	0
+103	-50	0
+104	-50	0
+105	-50	0
+106	-50	0
+107	-50	0
+108	-50	0
+109	-50	0
+110	-50	0
+111	-50	0
+112	-50	0
+113	-50	0
+114	-50	0
+115	-50	0
+116	-50	0
+117	-50	0
+118	-50	0
+119	-50	0
+120	-50	0
+121	-50	0
+122	-50	0
+123	-50	0
+124	-50	0
+125	-50	0
+126	-50	0
+127	-50	0
+128	-50	0
+129	-50	0
+130	-50	0
+131	-50	0
+132	-50	0
+133	-50	0
+134	-50	0
+135	-50	0
+136	-50	0
+137	-50	0
+138	-50	0
+139	-50	0
+140	-50	0
+141	-50	0
+142	-50	0
+143	-50	0
+144	-50	0
+145	-50	0
+146	-50	0
+147	-50	0
+148	-50	0
+149	-50	0
+150	-50	0
+151	-50	0
+152	-50	0
+153	-50	0
+154	-50	0
+155	-50	0
+156	-50	0
+157	-50	0
+158	-50	0
+159	-50	0
+160	-50	0
+161	-50	0
+162	-50	0
+163	-50	0
+164	-50	0
+165	-50	0
+166	-50	0
+167	-50	0
+168	-50	0
+169	-50	0
+170	-50	0
+171	-50	0
+172	-50	0
+173	-50	0
+174	-50	0
+175	-50	0
+176	-50	0
+177	-50	0
+178	-50	0
+179	-50	0
+180	-50	0
+181	-50	0
+182	-50	0
+183	-50	0
+184	-50	0
+185	-50	0
+186	-50	0
+187	-50	0
+188	-50	0
+189	-50	0
+190	-50	0
+191	-50	0
+192	-50	0
+193	-50	0
+194	-50	0
+195	-50	0
+196	-50	0
+197	-50	0
+198	-50	0
+199	-50	0
+200	-50	0
+201	-50	0
+202	-50	0
+203	-50	0
+204	-50	0
+205	-50	0
+206	-50	0
+207	-50	0
+208	-50	0
+209	-50	0
+210	-50	0
+211	-50	0
+212	-50	0
+213	-50	0
+214	-50	0
+215	-50	0
+216	-50	0
+217	-50	0
+218	-50	0
+219	-50	0
+220	-50	0
+221	-50	0
+222	-50	0
+223	-50	0
+224	-50	0
+225	-50	0
+226	-50	0
+227	-50	0
+228	-50	0
+229	-50	0
+230	-50	0
+231	-50	0
+232	-50	0
+233	-50	0
+234	-50	0
+235	-50	0
+236	-50	0
+237	-50	0
+238	-50	0
+239	-50	0
+240	-50	0
+241	-50	0
+242	-50	0
+243	-50	0
+244	-50	0
+245	-50	0
+246	-50	0
+247	-50	0
+248	-50	0
+249	-50	0
+250	-50	0
+251	-50	0
+252	-50	0
+253	-50	0
+254	-50	0
+255	-50	0
+256	-50	0
+257	-50	0
+258	-50	0
+259	-50	0
+260	-50	0
+261	-50	0
+262	-50	0
+263	-50	0
+264	-50	0
+265	-50	0
+266	-50	0
+267	-50	0
+268	-50	0
+269	-50	0
+270	-50	0
+271	-50	0
+272	-50	0
+273	-50	0
+274	-50	0
+275	-50	0
+276	-50	0
+277	-50	0
+278	-50	0
+279	-50	0
+280	-50	0
+281	-50	0
+282	-50	0
+283	-50	0
+284	-50	0
+285	-50	0
+286	-50	0
+287	-50	0
+288	-50	0
+289	-50	0
+290	-50	0
+291	-50	0
+292	-50	0
+293	-50	0
+294	-50	0
+295	-50	0
+296	-50	0
+297	-50	0
+298	-50	0
+299	-50	0
+300	-50	0
+301	-50	0
+302	-50	0
+303	-50	0
+304	-50	0
+305	-50	0
+306	-50	0
+307	-50	0
+308	-50	0
+309	-50	0
+310	-50	0
+311	-50	0
+312	-50	0
+313	-50	0
+314	-50	0
+315	-50	0
+316	-50	0
+317	-50	0
+318	-50	0
+319	-50	0
+320	-50	0
+321	-50	0
+322	-50	0
+323	-50	0
+324	-50	0
+325	-50	0
+326	-50	0
+327	-50	0
+328	-50	0
+329	-50	0
+330	-50	0
+331	-50	0
+332	-50	0
+333	-50	0
+334	-50	0
+335	-50	0
+336	-50	0
+337	-50	0
+338	-50	0
+339	-50	0
+340	-50	0
+341	-50	0
+342	-50	0
+343	-50	0
+344	-50	0
+345	-50	0
+346	-50	0
+347	-50	0
+348	-50	0
+349	-50	0
+350	-50	0
+351	-50	0
+352	-50	0
+353	-50	0
+354	-50	0
+355	-50	0
+356	-50	0
+357	-50	0
+358	-50	0
+359	-50	0
+360	-50	0
+0	-49.5	0
+1	-49.5	0
+2	-49.5	0
+3	-49.5	0
+4	-49.5	0
+5	-49.5	0
+6	-49.5	0
+7	-49.5	0
+8	-49.5	0
+9	-49.5	0
+10	-49.5	0
+11	-49.5	0
+12	-49.5	0
+13	-49.5	0
+14	-49.5	0
+15	-49.5	0
+16	-49.5	0
+17	-49.5	0
+18	-49.5	0
+19	-49.5	0
+20	-49.5	0
+21	-49.5	0
+22	-49.5	0
+23	-49.5	0
+24	-49.5	0
+25	-49.5	0
+26	-49.5	0
+27	-49.5	0
+28	-49.5	0
+29	-49.5	0
+30	-49.5	0
+31	-49.5	0
+32	-49.5	0
+33	-49.5	0
+34	-49.5	0
+35	-49.5	0
+36	-49.5	0
+37	-49.5	0
+38	-49.5	0
+39	-49.5	0
+40	-49.5	0
+41	-49.5	0
+42	-49.5	0
+43	-49.5	0
+44	-49.5	0
+45	-49.5	0
+46	-49.5	0
+47	-49.5	0
+48	-49.5	0
+49	-49.5	0
+50	-49.5	0
+51	-49.5	0
+52	-49.5	0
+53	-49.5	0
+54	-49.5	0
+55	-49.5	0
+56	-49.5	0
+57	-49.5	0
+58	-49.5	0
+59	-49.5	0
+60	-49.5	0
+61	-49.5	0
+62	-49.5	0
+63	-49.5	0
+64	-49.5	0
+65	-49.5	0
+66	-49.5	0
+67	-49.5	0
+68	-49.5	0
+69	-49.5	0
+70	-49.5	0
+71	-49.5	0
+72	-49.5	0
+73	-49.5	0
+74	-49.5	0
+75	-49.5	0
+76	-49.5	0
+77	-49.5	0
+78	-49.5	0
+79	-49.5	0
+80	-49.5	0
+81	-49.5	0
+82	-49.5	0
+83	-49.5	0
+84	-49.5	0
+85	-49.5	0
+86	-49.5	0
+87	-49.5	0
+88	-49.5	0
+89	-49.5	0
+90	-49.5	0
+91	-49.5	0
+92	-49.5	0
+93	-49.5	0
+94	-49.5	0
+95	-49.5	0
+96	-49.5	0
+97	-49.5	0
+98	-49.5	0
+99	-49.5	0
+100	-49.5	0
+101	-49.5	0
+102	-49.5	0
+103	-49.5	0
+104	-49.5	0
+105	-49.5	0
+106	-49.5	0
+107	-49.5	0
+108	-49.5	0
+109	-49.5	0
+110	-49.5	0
+111	-49.5	0
+112	-49.5	0
+113	-49.5	0
+114	-49.5	0
+115	-49.5	0
+116	-49.5	0
+117	-49.5	0
+118	-49.5	0
+119	-49.5	0
+120	-49.5	0
+121	-49.5	0
+122	-49.5	0
+123	-49.5	0
+124	-49.5	0
+125	-49.5	0
+126	-49.5	0
+127	-49.5	0
+128	-49.5	0
+129	-49.5	0
+130	-49.5	0
+131	-49.5	0
+132	-49.5	0
+133	-49.5	0
+134	-49.5	0
+135	-49.5	0
+136	-49.5	0
+137	-49.5	0
+138	-49.5	0
+139	-49.5	0
+140	-49.5	0
+141	-49.5	0
+142	-49.5	0
+143	-49.5	0
+144	-49.5	0
+145	-49.5	0
+146	-49.5	0
+147	-49.5	0
+148	-49.5	0
+149	-49.5	0
+150	-49.5	0
+151	-49.5	0
+152	-49.5	0
+153	-49.5	0
+154	-49.5	0
+155	-49.5	0
+156	-49.5	0
+157	-49.5	0
+158	-49.5	0
+159	-49.5	0
+160	-49.5	0
+161	-49.5	0
+162	-49.5	0
+163	-49.5	0
+164	-49.5	0
+165	-49.5	0
+166	-49.5	0
+167	-49.5	0
+168	-49.5	0
+169	-49.5	0
+170	-49.5	0
+171	-49.5	0
+172	-49.5	0
+173	-49.5	0
+174	-49.5	0
+175	-49.5	0
+176	-49.5	0
+177	-49.5	0
+178	-49.5	0
+179	-49.5	0
+180	-49.5	0
+181	-49.5	0
+182	-49.5	0
+183	-49.5	0
+184	-49.5	0
+185	-49.5	0
+186	-49.5	0
+187	-49.5	0
+188	-49.5	0
+189	-49.5	0
+190	-49.5	0
+191	-49.5	0
+192	-49.5	0
+193	-49.5	0
+194	-49.5	0
+195	-49.5	0
+196	-49.5	0
+197	-49.5	0
+198	-49.5	0
+199	-49.5	0
+200	-49.5	0
+201	-49.5	0
+202	-49.5	0
+203	-49.5	0
+204	-49.5	0
+205	-49.5	0
+206	-49.5	0
+207	-49.5	0
+208	-49.5	0
+209	-49.5	0
+210	-49.5	0
+211	-49.5	0
+212	-49.5	0
+213	-49.5	0
+214	-49.5	0
+215	-49.5	0
+216	-49.5	0
+217	-49.5	0
+218	-49.5	0
+219	-49.5	0
+220	-49.5	0
+221	-49.5	0
+222	-49.5	0
+223	-49.5	0
+224	-49.5	0
+225	-49.5	0
+226	-49.5	0
+227	-49.5	0
+228	-49.5	0
+229	-49.5	0
+230	-49.5	0
+231	-49.5	0
+232	-49.5	0
+233	-49.5	0
+234	-49.5	0
+235	-49.5	0
+236	-49.5	0
+237	-49.5	0
+238	-49.5	0
+239	-49.5	0
+240	-49.5	0
+241	-49.5	0
+242	-49.5	0
+243	-49.5	0
+244	-49.5	0
+245	-49.5	0
+246	-49.5	0
+247	-49.5	0
+248	-49.5	0
+249	-49.5	0
+250	-49.5	0
+251	-49.5	0
+252	-49.5	0
+253	-49.5	0
+254	-49.5	0
+255	-49.5	0
+256	-49.5	0
+257	-49.5	0
+258	-49.5	0
+259	-49.5	0
+260	-49.5	0
+261	-49.5	0
+262	-49.5	0
+263	-49.5	0
+264	-49.5	0
+265	-49.5	0
+266	-49.5	0
+267	-49.5	0
+268	-49.5	0
+269	-49.5	0
+270	-49.5	0
+271	-49.5	0
+272	-49.5	0
+273	-49.5	0
+274	-49.5	0
+275	-49.5	0
+276	-49.5	0
+277	-49.5	0
+278	-49.5	0
+279	-49.5	0
+280	-49.5	0
+281	-49.5	0
+282	-49.5	0
+283	-49.5	0
+284	-49.5	0
+285	-49.5	0
+286	-49.5	0
+287	-49.5	0
+288	-49.5	0
+289	-49.5	0
+290	-49.5	0
+291	-49.5	0
+292	-49.5	0
+293	-49.5	0
+294	-49.5	0
+295	-49.5	0
+296	-49.5	0
+297	-49.5	0
+298	-49.5	0
+299	-49.5	0
+300	-49.5	0
+301	-49.5	0
+302	-49.5	0
+303	-49.5	0
+304	-49.5	0
+305	-49.5	0
+306	-49.5	0
+307	-49.5	0
+308	-49.5	0
+309	-49.5	0
+310	-49.5	0
+311	-49.5	0
+312	-49.5	0
+313	-49.5	0
+314	-49.5	0
+315	-49.5	0
+316	-49.5	0
+317	-49.5	0
+318	-49.5	0
+319	-49.5	0
+320	-49.5	0
+321	-49.5	0
+322	-49.5	0
+323	-49.5	0
+324	-49.5	0
+325	-49.5	0
+326	-49.5	0
+327	-49.5	0
+328	-49.5	0
+329	-49.5	0
+330	-49.5	0
+331	-49.5	0
+332	-49.5	0
+333	-49.5	0
+334	-49.5	0
+335	-49.5	0
+336	-49.5	0
+337	-49.5	0
+338	-49.5	0
+339	-49.5	0
+340	-49.5	0
+341	-49.5	0
+342	-49.5	0
+343	-49.5	0
+344	-49.5	0
+345	-49.5	0
+346	-49.5	0
+347	-49.5	0
+348	-49.5	0
+349	-49.5	0
+350	-49.5	0
+351	-49.5	0
+352	-49.5	0
+353	-49.5	0
+354	-49.5	0
+355	-49.5	0
+356	-49.5	0
+357	-49.5	0
+358	-49.5	0
+359	-49.5	0
+360	-49.5	0
+0	-49	0
+1	-49	0
+2	-49	0
+3	-49	0
+4	-49	0
+5	-49	0
+6	-49	0
+7	-49	0
+8	-49	0
+9	-49	0
+10	-49	0
+11	-49	0
+12	-49	0
+13	-49	0
+14	-49	0
+15	-49	0
+16	-49	0
+17	-49	0
+18	-49	0
+19	-49	0
+20	-49	0
+21	-49	0
+22	-49	0
+23	-49	0
+24	-49	0
+25	-49	0
+26	-49	0
+27	-49	0
+28	-49	0
+29	-49	0
+30	-49	0
+31	-49	0
+32	-49	0
+33	-49	0
+34	-49	0
+35	-49	0
+36	-49	0
+37	-49	0
+38	-49	0
+39	-49	0
+40	-49	0
+41	-49	0
+42	-49	0
+43	-49	0
+44	-49	0
+45	-49	0
+46	-49	0
+47	-49	0
+48	-49	0
+49	-49	0
+50	-49	0
+51	-49	0
+52	-49	0
+53	-49	0
+54	-49	0
+55	-49	0
+56	-49	0
+57	-49	0
+58	-49	0
+59	-49	0
+60	-49	0
+61	-49	0
+62	-49	0
+63	-49	0
+64	-49	0
+65	-49	0
+66	-49	0
+67	-49	0
+68	-49	0
+69	-49	0
+70	-49	0
+71	-49	0
+72	-49	0
+73	-49	0
+74	-49	0
+75	-49	0
+76	-49	0
+77	-49	0
+78	-49	0
+79	-49	0
+80	-49	0
+81	-49	0
+82	-49	0
+83	-49	0
+84	-49	0
+85	-49	0
+86	-49	0
+87	-49	0
+88	-49	0
+89	-49	0
+90	-49	0
+91	-49	0
+92	-49	0
+93	-49	0
+94	-49	0
+95	-49	0
+96	-49	0
+97	-49	0
+98	-49	0
+99	-49	0
+100	-49	0
+101	-49	0
+102	-49	0
+103	-49	0
+104	-49	0
+105	-49	0
+106	-49	0
+107	-49	0
+108	-49	0
+109	-49	0
+110	-49	0
+111	-49	0
+112	-49	0
+113	-49	0
+114	-49	0
+115	-49	0
+116	-49	0
+117	-49	0
+118	-49	0
+119	-49	0
+120	-49	0
+121	-49	0
+122	-49	0
+123	-49	0
+124	-49	0
+125	-49	0
+126	-49	0
+127	-49	0
+128	-49	0
+129	-49	0
+130	-49	0
+131	-49	0
+132	-49	0
+133	-49	0
+134	-49	0
+135	-49	0
+136	-49	0
+137	-49	0
+138	-49	0
+139	-49	0
+140	-49	0
+141	-49	0
+142	-49	0
+143	-49	0
+144	-49	0
+145	-49	0
+146	-49	0
+147	-49	0
+148	-49	0
+149	-49	0
+150	-49	0
+151	-49	0
+152	-49	0
+153	-49	0
+154	-49	0
+155	-49	0
+156	-49	0
+157	-49	0
+158	-49	0
+159	-49	0
+160	-49	0
+161	-49	0
+162	-49	0
+163	-49	0
+164	-49	0
+165	-49	0
+166	-49	0
+167	-49	0
+168	-49	0
+169	-49	0
+170	-49	0
+171	-49	0
+172	-49	0
+173	-49	0
+174	-49	0
+175	-49	0
+176	-49	0
+177	-49	0
+178	-49	0
+179	-49	0
+180	-49	0
+181	-49	0
+182	-49	0
+183	-49	0
+184	-49	0
+185	-49	0
+186	-49	0
+187	-49	0
+188	-49	0
+189	-49	0
+190	-49	0
+191	-49	0
+192	-49	0
+193	-49	0
+194	-49	0
+195	-49	0
+196	-49	0
+197	-49	0
+198	-49	0
+199	-49	0
+200	-49	0
+201	-49	0
+202	-49	0
+203	-49	0
+204	-49	0
+205	-49	0
+206	-49	0
+207	-49	0
+208	-49	0
+209	-49	0
+210	-49	0
+211	-49	0
+212	-49	0
+213	-49	0
+214	-49	0
+215	-49	0
+216	-49	0
+217	-49	0
+218	-49	0
+219	-49	0
+220	-49	0
+221	-49	0
+222	-49	0
+223	-49	0
+224	-49	0
+225	-49	0
+226	-49	0
+227	-49	0
+228	-49	0
+229	-49	0
+230	-49	0
+231	-49	0
+232	-49	0
+233	-49	0
+234	-49	0
+235	-49	0
+236	-49	0
+237	-49	0
+238	-49	0
+239	-49	0
+240	-49	0
+241	-49	0
+242	-49	0
+243	-49	0
+244	-49	0
+245	-49	0
+246	-49	0
+247	-49	0
+248	-49	0
+249	-49	0
+250	-49	0
+251	-49	0
+252	-49	0
+253	-49	0
+254	-49	0
+255	-49	0
+256	-49	0
+257	-49	0
+258	-49	0
+259	-49	0
+260	-49	0
+261	-49	0
+262	-49	0
+263	-49	0
+264	-49	0
+265	-49	0
+266	-49	0
+267	-49	0
+268	-49	0
+269	-49	0
+270	-49	0
+271	-49	0
+272	-49	0
+273	-49	0
+274	-49	0
+275	-49	0
+276	-49	0
+277	-49	0
+278	-49	0
+279	-49	0
+280	-49	0
+281	-49	0
+282	-49	0
+283	-49	0
+284	-49	0
+285	-49	0
+286	-49	0
+287	-49	0
+288	-49	0
+289	-49	0
+290	-49	0
+291	-49	0
+292	-49	0
+293	-49	0
+294	-49	0
+295	-49	0
+296	-49	0
+297	-49	0
+298	-49	0
+299	-49	0
+300	-49	0
+301	-49	0
+302	-49	0
+303	-49	0
+304	-49	0
+305	-49	0
+306	-49	0
+307	-49	0
+308	-49	0
+309	-49	0
+310	-49	0
+311	-49	0
+312	-49	0
+313	-49	0
+314	-49	0
+315	-49	0
+316	-49	0
+317	-49	0
+318	-49	0
+319	-49	0
+320	-49	0
+321	-49	0
+322	-49	0
+323	-49	0
+324	-49	0
+325	-49	0
+326	-49	0
+327	-49	0
+328	-49	0
+329	-49	0
+330	-49	0
+331	-49	0
+332	-49	0
+333	-49	0
+334	-49	0
+335	-49	0
+336	-49	0
+337	-49	0
+338	-49	0
+339	-49	0
+340	-49	0
+341	-49	0
+342	-49	0
+343	-49	0
+344	-49	0
+345	-49	0
+346	-49	0
+347	-49	0
+348	-49	0
+349	-49	0
+350	-49	0
+351	-49	0
+352	-49	0
+353	-49	0
+354	-49	0
+355	-49	0
+356	-49	0
+357	-49	0
+358	-49	0
+359	-49	0
+360	-49	0
+0	-48.5	0
+1	-48.5	0
+2	-48.5	0
+3	-48.5	0
+4	-48.5	0
+5	-48.5	0
+6	-48.5	0
+7	-48.5	0
+8	-48.5	0
+9	-48.5	0
+10	-48.5	0
+11	-48.5	0
+12	-48.5	0
+13	-48.5	0
+14	-48.5	0
+15	-48.5	0
+16	-48.5	0
+17	-48.5	0
+18	-48.5	0
+19	-48.5	0
+20	-48.5	0
+21	-48.5	0
+22	-48.5	0
+23	-48.5	0
+24	-48.5	0
+25	-48.5	0
+26	-48.5	0
+27	-48.5	0
+28	-48.5	0
+29	-48.5	0
+30	-48.5	0
+31	-48.5	0
+32	-48.5	0
+33	-48.5	0
+34	-48.5	0
+35	-48.5	0
+36	-48.5	0
+37	-48.5	0
+38	-48.5	0
+39	-48.5	0
+40	-48.5	0
+41	-48.5	0
+42	-48.5	0
+43	-48.5	0
+44	-48.5	0
+45	-48.5	0
+46	-48.5	0
+47	-48.5	0
+48	-48.5	0
+49	-48.5	0
+50	-48.5	0
+51	-48.5	0
+52	-48.5	0
+53	-48.5	0
+54	-48.5	0
+55	-48.5	0
+56	-48.5	0
+57	-48.5	0
+58	-48.5	0
+59	-48.5	0
+60	-48.5	0
+61	-48.5	0
+62	-48.5	0
+63	-48.5	0
+64	-48.5	0
+65	-48.5	0
+66	-48.5	0
+67	-48.5	0
+68	-48.5	0
+69	-48.5	0
+70	-48.5	0
+71	-48.5	0
+72	-48.5	0
+73	-48.5	0
+74	-48.5	0
+75	-48.5	0
+76	-48.5	0
+77	-48.5	0
+78	-48.5	0
+79	-48.5	0
+80	-48.5	0
+81	-48.5	0
+82	-48.5	0
+83	-48.5	0
+84	-48.5	0
+85	-48.5	0
+86	-48.5	0
+87	-48.5	0
+88	-48.5	0
+89	-48.5	0
+90	-48.5	0
+91	-48.5	0
+92	-48.5	0
+93	-48.5	0
+94	-48.5	0
+95	-48.5	0
+96	-48.5	0
+97	-48.5	0
+98	-48.5	0
+99	-48.5	0
+100	-48.5	0
+101	-48.5	0
+102	-48.5	0
+103	-48.5	0
+104	-48.5	0
+105	-48.5	0
+106	-48.5	0
+107	-48.5	0
+108	-48.5	0
+109	-48.5	0
+110	-48.5	0
+111	-48.5	0
+112	-48.5	0
+113	-48.5	0
+114	-48.5	0
+115	-48.5	0
+116	-48.5	0
+117	-48.5	0
+118	-48.5	0
+119	-48.5	0
+120	-48.5	0
+121	-48.5	0
+122	-48.5	0
+123	-48.5	0
+124	-48.5	0
+125	-48.5	0
+126	-48.5	0
+127	-48.5	0
+128	-48.5	0
+129	-48.5	0
+130	-48.5	0
+131	-48.5	0
+132	-48.5	0
+133	-48.5	0
+134	-48.5	0
+135	-48.5	0
+136	-48.5	0
+137	-48.5	0
+138	-48.5	0
+139	-48.5	0
+140	-48.5	0
+141	-48.5	0
+142	-48.5	0
+143	-48.5	0
+144	-48.5	0
+145	-48.5	0
+146	-48.5	0
+147	-48.5	0
+148	-48.5	0
+149	-48.5	0
+150	-48.5	0
+151	-48.5	0
+152	-48.5	0
+153	-48.5	0
+154	-48.5	0
+155	-48.5	0
+156	-48.5	0
+157	-48.5	0
+158	-48.5	0
+159	-48.5	0
+160	-48.5	0
+161	-48.5	0
+162	-48.5	0
+163	-48.5	0
+164	-48.5	0
+165	-48.5	0
+166	-48.5	0
+167	-48.5	0
+168	-48.5	0
+169	-48.5	0
+170	-48.5	0
+171	-48.5	0
+172	-48.5	0
+173	-48.5	0
+174	-48.5	0
+175	-48.5	0
+176	-48.5	0
+177	-48.5	0
+178	-48.5	0
+179	-48.5	0
+180	-48.5	0
+181	-48.5	0
+182	-48.5	0
+183	-48.5	0
+184	-48.5	0
+185	-48.5	0
+186	-48.5	0
+187	-48.5	0
+188	-48.5	0
+189	-48.5	0
+190	-48.5	0
+191	-48.5	0
+192	-48.5	0
+193	-48.5	0
+194	-48.5	0
+195	-48.5	0
+196	-48.5	0
+197	-48.5	0
+198	-48.5	0
+199	-48.5	0
+200	-48.5	0
+201	-48.5	0
+202	-48.5	0
+203	-48.5	0
+204	-48.5	0
+205	-48.5	0
+206	-48.5	0
+207	-48.5	0
+208	-48.5	0
+209	-48.5	0
+210	-48.5	0
+211	-48.5	0
+212	-48.5	0
+213	-48.5	0
+214	-48.5	0
+215	-48.5	0
+216	-48.5	0
+217	-48.5	0
+218	-48.5	0
+219	-48.5	0
+220	-48.5	0
+221	-48.5	0
+222	-48.5	0
+223	-48.5	0
+224	-48.5	0
+225	-48.5	0
+226	-48.5	0
+227	-48.5	0
+228	-48.5	0
+229	-48.5	0
+230	-48.5	0
+231	-48.5	0
+232	-48.5	0
+233	-48.5	0
+234	-48.5	0
+235	-48.5	0
+236	-48.5	0
+237	-48.5	0
+238	-48.5	0
+239	-48.5	0
+240	-48.5	0
+241	-48.5	0
+242	-48.5	0
+243	-48.5	0
+244	-48.5	0
+245	-48.5	0
+246	-48.5	0
+247	-48.5	0
+248	-48.5	0
+249	-48.5	0
+250	-48.5	0
+251	-48.5	0
+252	-48.5	0
+253	-48.5	0
+254	-48.5	0
+255	-48.5	0
+256	-48.5	0
+257	-48.5	0
+258	-48.5	0
+259	-48.5	0
+260	-48.5	0
+261	-48.5	0
+262	-48.5	0
+263	-48.5	0
+264	-48.5	0
+265	-48.5	0
+266	-48.5	0
+267	-48.5	0
+268	-48.5	0
+269	-48.5	0
+270	-48.5	0
+271	-48.5	0
+272	-48.5	0
+273	-48.5	0
+274	-48.5	0
+275	-48.5	0
+276	-48.5	0
+277	-48.5	0
+278	-48.5	0
+279	-48.5	0
+280	-48.5	0
+281	-48.5	0
+282	-48.5	0
+283	-48.5	0
+284	-48.5	0
+285	-48.5	0
+286	-48.5	0
+287	-48.5	0
+288	-48.5	0
+289	-48.5	0
+290	-48.5	0
+291	-48.5	0
+292	-48.5	0
+293	-48.5	0
+294	-48.5	0
+295	-48.5	0
+296	-48.5	0
+297	-48.5	0
+298	-48.5	0
+299	-48.5	0
+300	-48.5	0
+301	-48.5	0
+302	-48.5	0
+303	-48.5	0
+304	-48.5	0
+305	-48.5	0
+306	-48.5	0
+307	-48.5	0
+308	-48.5	0
+309	-48.5	0
+310	-48.5	0
+311	-48.5	0
+312	-48.5	0
+313	-48.5	0
+314	-48.5	0
+315	-48.5	0
+316	-48.5	0
+317	-48.5	0
+318	-48.5	0
+319	-48.5	0
+320	-48.5	0
+321	-48.5	0
+322	-48.5	0
+323	-48.5	0
+324	-48.5	0
+325	-48.5	0
+326	-48.5	0
+327	-48.5	0
+328	-48.5	0
+329	-48.5	0
+330	-48.5	0
+331	-48.5	0
+332	-48.5	0
+333	-48.5	0
+334	-48.5	0
+335	-48.5	0
+336	-48.5	0
+337	-48.5	0
+338	-48.5	0
+339	-48.5	0
+340	-48.5	0
+341	-48.5	0
+342	-48.5	0
+343	-48.5	0
+344	-48.5	0
+345	-48.5	0
+346	-48.5	0
+347	-48.5	0
+348	-48.5	0
+349	-48.5	0
+350	-48.5	0
+351	-48.5	0
+352	-48.5	0
+353	-48.5	0
+354	-48.5	0
+355	-48.5	0
+356	-48.5	0
+357	-48.5	0
+358	-48.5	0
+359	-48.5	0
+360	-48.5	0
+0	-48	0
+1	-48	0
+2	-48	0
+3	-48	0
+4	-48	0
+5	-48	0
+6	-48	0
+7	-48	0
+8	-48	0
+9	-48	0
+10	-48	0
+11	-48	0
+12	-48	0
+13	-48	0
+14	-48	0
+15	-48	0
+16	-48	0
+17	-48	0
+18	-48	0
+19	-48	0
+20	-48	0
+21	-48	0
+22	-48	0
+23	-48	0
+24	-48	0
+25	-48	0
+26	-48	0
+27	-48	0
+28	-48	0
+29	-48	0
+30	-48	0
+31	-48	0
+32	-48	0
+33	-48	0
+34	-48	0
+35	-48	0
+36	-48	0
+37	-48	0
+38	-48	0
+39	-48	0
+40	-48	0
+41	-48	0
+42	-48	0
+43	-48	0
+44	-48	0
+45	-48	0
+46	-48	0
+47	-48	0
+48	-48	0
+49	-48	0
+50	-48	0
+51	-48	0
+52	-48	0
+53	-48	0
+54	-48	0
+55	-48	0
+56	-48	0
+57	-48	0
+58	-48	0
+59	-48	0
+60	-48	0
+61	-48	0
+62	-48	0
+63	-48	0
+64	-48	0
+65	-48	0
+66	-48	0
+67	-48	0
+68	-48	0
+69	-48	0
+70	-48	0
+71	-48	0
+72	-48	0
+73	-48	0
+74	-48	0
+75	-48	0
+76	-48	0
+77	-48	0
+78	-48	0
+79	-48	0
+80	-48	0
+81	-48	0
+82	-48	0
+83	-48	0
+84	-48	0
+85	-48	0
+86	-48	0
+87	-48	0
+88	-48	0
+89	-48	0
+90	-48	0
+91	-48	0
+92	-48	0
+93	-48	0
+94	-48	0
+95	-48	0
+96	-48	0
+97	-48	0
+98	-48	0
+99	-48	0
+100	-48	0
+101	-48	0
+102	-48	0
+103	-48	0
+104	-48	0
+105	-48	0
+106	-48	0
+107	-48	0
+108	-48	0
+109	-48	0
+110	-48	0
+111	-48	0
+112	-48	0
+113	-48	0
+114	-48	0
+115	-48	0
+116	-48	0
+117	-48	0
+118	-48	0
+119	-48	0
+120	-48	0
+121	-48	0
+122	-48	0
+123	-48	0
+124	-48	0
+125	-48	0
+126	-48	0
+127	-48	0
+128	-48	0
+129	-48	0
+130	-48	0
+131	-48	0
+132	-48	0
+133	-48	0
+134	-48	0
+135	-48	0
+136	-48	0
+137	-48	0
+138	-48	0
+139	-48	0
+140	-48	0
+141	-48	0
+142	-48	0
+143	-48	0
+144	-48	0
+145	-48	0
+146	-48	0
+147	-48	0
+148	-48	0
+149	-48	0
+150	-48	0
+151	-48	0
+152	-48	0
+153	-48	0
+154	-48	0
+155	-48	0
+156	-48	0
+157	-48	0
+158	-48	0
+159	-48	0
+160	-48	0
+161	-48	0
+162	-48	0
+163	-48	0
+164	-48	0
+165	-48	0
+166	-48	0
+167	-48	0
+168	-48	0
+169	-48	0
+170	-48	0
+171	-48	0
+172	-48	0
+173	-48	0
+174	-48	0
+175	-48	0
+176	-48	0
+177	-48	0
+178	-48	0
+179	-48	0
+180	-48	0
+181	-48	0
+182	-48	0
+183	-48	0
+184	-48	0
+185	-48	0
+186	-48	0
+187	-48	0
+188	-48	0
+189	-48	0
+190	-48	0
+191	-48	0
+192	-48	0
+193	-48	0
+194	-48	0
+195	-48	0
+196	-48	0
+197	-48	0
+198	-48	0
+199	-48	0
+200	-48	0
+201	-48	0
+202	-48	0
+203	-48	0
+204	-48	0
+205	-48	0
+206	-48	0
+207	-48	0
+208	-48	0
+209	-48	0
+210	-48	0
+211	-48	0
+212	-48	0
+213	-48	0
+214	-48	0
+215	-48	0
+216	-48	0
+217	-48	0
+218	-48	0
+219	-48	0
+220	-48	0
+221	-48	0
+222	-48	0
+223	-48	0
+224	-48	0
+225	-48	0
+226	-48	0
+227	-48	0
+228	-48	0
+229	-48	0
+230	-48	0
+231	-48	0
+232	-48	0
+233	-48	0
+234	-48	0
+235	-48	0
+236	-48	0
+237	-48	0
+238	-48	0
+239	-48	0
+240	-48	0
+241	-48	0
+242	-48	0
+243	-48	0
+244	-48	0
+245	-48	0
+246	-48	0
+247	-48	0
+248	-48	0
+249	-48	0
+250	-48	0
+251	-48	0
+252	-48	0
+253	-48	0
+254	-48	0
+255	-48	0
+256	-48	0
+257	-48	0
+258	-48	0
+259	-48	0
+260	-48	0
+261	-48	0
+262	-48	0
+263	-48	0
+264	-48	0
+265	-48	0
+266	-48	0
+267	-48	0
+268	-48	0
+269	-48	0
+270	-48	0
+271	-48	0
+272	-48	0
+273	-48	0
+274	-48	0
+275	-48	0
+276	-48	0
+277	-48	0
+278	-48	0
+279	-48	0
+280	-48	0
+281	-48	0
+282	-48	0
+283	-48	0
+284	-48	0
+285	-48	0
+286	-48	0
+287	-48	0
+288	-48	0
+289	-48	0
+290	-48	0
+291	-48	0
+292	-48	0
+293	-48	0
+294	-48	0
+295	-48	0
+296	-48	0
+297	-48	0
+298	-48	0
+299	-48	0
+300	-48	0
+301	-48	0
+302	-48	0
+303	-48	0
+304	-48	0
+305	-48	0
+306	-48	0
+307	-48	0
+308	-48	0
+309	-48	0
+310	-48	0
+311	-48	0
+312	-48	0
+313	-48	0
+314	-48	0
+315	-48	0
+316	-48	0
+317	-48	0
+318	-48	0
+319	-48	0
+320	-48	0
+321	-48	0
+322	-48	0
+323	-48	0
+324	-48	0
+325	-48	0
+326	-48	0
+327	-48	0
+328	-48	0
+329	-48	0
+330	-48	0
+331	-48	0
+332	-48	0
+333	-48	0
+334	-48	0
+335	-48	0
+336	-48	0
+337	-48	0
+338	-48	0
+339	-48	0
+340	-48	0
+341	-48	0
+342	-48	0
+343	-48	0
+344	-48	0
+345	-48	0
+346	-48	0
+347	-48	0
+348	-48	0
+349	-48	0
+350	-48	0
+351	-48	0
+352	-48	0
+353	-48	0
+354	-48	0
+355	-48	0
+356	-48	0
+357	-48	0
+358	-48	0
+359	-48	0
+360	-48	0
+0	-47.5	0
+1	-47.5	0
+2	-47.5	0
+3	-47.5	0
+4	-47.5	0
+5	-47.5	0
+6	-47.5	0
+7	-47.5	0
+8	-47.5	0
+9	-47.5	0
+10	-47.5	0
+11	-47.5	0
+12	-47.5	0
+13	-47.5	0
+14	-47.5	0
+15	-47.5	0
+16	-47.5	0
+17	-47.5	0
+18	-47.5	0
+19	-47.5	0
+20	-47.5	0
+21	-47.5	0
+22	-47.5	0
+23	-47.5	0
+24	-47.5	0
+25	-47.5	0
+26	-47.5	0
+27	-47.5	0
+28	-47.5	0
+29	-47.5	0
+30	-47.5	0
+31	-47.5	0
+32	-47.5	0
+33	-47.5	0
+34	-47.5	0
+35	-47.5	0
+36	-47.5	0
+37	-47.5	0
+38	-47.5	0
+39	-47.5	0
+40	-47.5	0
+41	-47.5	0
+42	-47.5	0
+43	-47.5	0
+44	-47.5	0
+45	-47.5	0
+46	-47.5	0
+47	-47.5	0
+48	-47.5	0
+49	-47.5	0
+50	-47.5	0
+51	-47.5	0
+52	-47.5	0
+53	-47.5	0
+54	-47.5	0
+55	-47.5	0
+56	-47.5	0
+57	-47.5	0
+58	-47.5	0
+59	-47.5	0
+60	-47.5	0
+61	-47.5	0
+62	-47.5	0
+63	-47.5	0
+64	-47.5	0
+65	-47.5	0
+66	-47.5	0
+67	-47.5	0
+68	-47.5	0
+69	-47.5	0
+70	-47.5	0
+71	-47.5	0
+72	-47.5	0
+73	-47.5	0
+74	-47.5	0
+75	-47.5	0
+76	-47.5	0
+77	-47.5	0
+78	-47.5	0
+79	-47.5	0
+80	-47.5	0
+81	-47.5	0
+82	-47.5	0
+83	-47.5	0
+84	-47.5	0
+85	-47.5	0
+86	-47.5	0
+87	-47.5	0
+88	-47.5	0
+89	-47.5	0
+90	-47.5	0
+91	-47.5	0
+92	-47.5	0
+93	-47.5	0
+94	-47.5	0
+95	-47.5	0
+96	-47.5	0
+97	-47.5	0
+98	-47.5	0
+99	-47.5	0
+100	-47.5	0
+101	-47.5	0
+102	-47.5	0
+103	-47.5	0
+104	-47.5	0
+105	-47.5	0
+106	-47.5	0
+107	-47.5	0
+108	-47.5	0
+109	-47.5	0
+110	-47.5	0
+111	-47.5	0
+112	-47.5	0
+113	-47.5	0
+114	-47.5	0
+115	-47.5	0
+116	-47.5	0
+117	-47.5	0
+118	-47.5	0
+119	-47.5	0
+120	-47.5	0
+121	-47.5	0
+122	-47.5	0
+123	-47.5	0
+124	-47.5	0
+125	-47.5	0
+126	-47.5	0
+127	-47.5	0
+128	-47.5	0
+129	-47.5	0
+130	-47.5	0
+131	-47.5	0
+132	-47.5	0
+133	-47.5	0
+134	-47.5	0
+135	-47.5	0
+136	-47.5	0
+137	-47.5	0
+138	-47.5	0
+139	-47.5	0
+140	-47.5	0
+141	-47.5	0
+142	-47.5	0
+143	-47.5	0
+144	-47.5	0
+145	-47.5	0
+146	-47.5	0
+147	-47.5	0
+148	-47.5	0
+149	-47.5	0
+150	-47.5	0
+151	-47.5	0
+152	-47.5	0
+153	-47.5	0
+154	-47.5	0
+155	-47.5	0
+156	-47.5	0
+157	-47.5	0
+158	-47.5	0
+159	-47.5	0
+160	-47.5	0
+161	-47.5	0
+162	-47.5	0
+163	-47.5	0
+164	-47.5	0
+165	-47.5	0
+166	-47.5	0
+167	-47.5	0
+168	-47.5	0
+169	-47.5	0
+170	-47.5	0
+171	-47.5	0
+172	-47.5	0
+173	-47.5	0
+174	-47.5	0
+175	-47.5	0
+176	-47.5	0
+177	-47.5	0
+178	-47.5	0
+179	-47.5	0
+180	-47.5	0
+181	-47.5	0
+182	-47.5	0
+183	-47.5	0
+184	-47.5	0
+185	-47.5	0
+186	-47.5	0
+187	-47.5	0
+188	-47.5	0
+189	-47.5	0
+190	-47.5	0
+191	-47.5	0
+192	-47.5	0
+193	-47.5	0
+194	-47.5	0
+195	-47.5	0
+196	-47.5	0
+197	-47.5	0
+198	-47.5	0
+199	-47.5	0
+200	-47.5	0
+201	-47.5	0
+202	-47.5	0
+203	-47.5	0
+204	-47.5	0
+205	-47.5	0
+206	-47.5	0
+207	-47.5	0
+208	-47.5	0
+209	-47.5	0
+210	-47.5	0
+211	-47.5	0
+212	-47.5	0
+213	-47.5	0
+214	-47.5	0
+215	-47.5	0
+216	-47.5	0
+217	-47.5	0
+218	-47.5	0
+219	-47.5	0
+220	-47.5	0
+221	-47.5	0
+222	-47.5	0
+223	-47.5	0
+224	-47.5	0
+225	-47.5	0
+226	-47.5	0
+227	-47.5	0
+228	-47.5	0
+229	-47.5	0
+230	-47.5	0
+231	-47.5	0
+232	-47.5	0
+233	-47.5	0
+234	-47.5	0
+235	-47.5	0
+236	-47.5	0
+237	-47.5	0
+238	-47.5	0
+239	-47.5	0
+240	-47.5	0
+241	-47.5	0
+242	-47.5	0
+243	-47.5	0
+244	-47.5	0
+245	-47.5	0
+246	-47.5	0
+247	-47.5	0
+248	-47.5	0
+249	-47.5	0
+250	-47.5	0
+251	-47.5	0
+252	-47.5	0
+253	-47.5	0
+254	-47.5	0
+255	-47.5	0
+256	-47.5	0
+257	-47.5	0
+258	-47.5	0
+259	-47.5	0
+260	-47.5	0
+261	-47.5	0
+262	-47.5	0
+263	-47.5	0
+264	-47.5	0
+265	-47.5	0
+266	-47.5	0
+267	-47.5	0
+268	-47.5	0
+269	-47.5	0
+270	-47.5	0
+271	-47.5	0
+272	-47.5	0
+273	-47.5	0
+274	-47.5	0
+275	-47.5	0
+276	-47.5	0
+277	-47.5	0
+278	-47.5	0
+279	-47.5	0
+280	-47.5	0
+281	-47.5	0
+282	-47.5	0
+283	-47.5	0
+284	-47.5	0
+285	-47.5	0
+286	-47.5	0
+287	-47.5	0
+288	-47.5	0
+289	-47.5	0
+290	-47.5	0
+291	-47.5	0
+292	-47.5	0
+293	-47.5	0
+294	-47.5	0
+295	-47.5	0
+296	-47.5	0
+297	-47.5	0
+298	-47.5	0
+299	-47.5	0
+300	-47.5	0
+301	-47.5	0
+302	-47.5	0
+303	-47.5	0
+304	-47.5	0
+305	-47.5	0
+306	-47.5	0
+307	-47.5	0
+308	-47.5	0
+309	-47.5	0
+310	-47.5	0
+311	-47.5	0
+312	-47.5	0
+313	-47.5	0
+314	-47.5	0
+315	-47.5	0
+316	-47.5	0
+317	-47.5	0
+318	-47.5	0
+319	-47.5	0
+320	-47.5	0
+321	-47.5	0
+322	-47.5	0
+323	-47.5	0
+324	-47.5	0
+325	-47.5	0
+326	-47.5	0
+327	-47.5	0
+328	-47.5	0
+329	-47.5	0
+330	-47.5	0
+331	-47.5	0
+332	-47.5	0
+333	-47.5	0
+334	-47.5	0
+335	-47.5	0
+336	-47.5	0
+337	-47.5	0
+338	-47.5	0
+339	-47.5	0
+340	-47.5	0
+341	-47.5	0
+342	-47.5	0
+343	-47.5	0
+344	-47.5	0
+345	-47.5	0
+346	-47.5	0
+347	-47.5	0
+348	-47.5	0
+349	-47.5	0
+350	-47.5	0
+351	-47.5	0
+352	-47.5	0
+353	-47.5	0
+354	-47.5	0
+355	-47.5	0
+356	-47.5	0
+357	-47.5	0
+358	-47.5	0
+359	-47.5	0
+360	-47.5	0
+0	-47	0
+1	-47	0
+2	-47	0
+3	-47	0
+4	-47	0
+5	-47	0
+6	-47	0
+7	-47	0
+8	-47	0
+9	-47	0
+10	-47	0
+11	-47	0
+12	-47	0
+13	-47	0
+14	-47	0
+15	-47	0
+16	-47	0
+17	-47	0
+18	-47	0
+19	-47	0
+20	-47	0
+21	-47	0
+22	-47	0
+23	-47	0
+24	-47	0
+25	-47	0
+26	-47	0
+27	-47	0
+28	-47	0
+29	-47	0
+30	-47	0
+31	-47	0
+32	-47	0
+33	-47	0
+34	-47	0
+35	-47	0
+36	-47	0
+37	-47	0
+38	-47	0
+39	-47	0
+40	-47	0
+41	-47	0
+42	-47	0
+43	-47	0
+44	-47	0
+45	-47	0
+46	-47	0
+47	-47	0
+48	-47	0
+49	-47	0
+50	-47	0
+51	-47	0
+52	-47	0
+53	-47	0
+54	-47	0
+55	-47	0
+56	-47	0
+57	-47	0
+58	-47	0
+59	-47	0
+60	-47	0
+61	-47	0
+62	-47	0
+63	-47	0
+64	-47	0
+65	-47	0
+66	-47	0
+67	-47	0
+68	-47	0
+69	-47	0
+70	-47	0
+71	-47	0
+72	-47	0
+73	-47	0
+74	-47	0
+75	-47	0
+76	-47	0
+77	-47	0
+78	-47	0
+79	-47	0
+80	-47	0
+81	-47	0
+82	-47	0
+83	-47	0
+84	-47	0
+85	-47	0
+86	-47	0
+87	-47	0
+88	-47	0
+89	-47	0
+90	-47	0
+91	-47	0
+92	-47	0
+93	-47	0
+94	-47	0
+95	-47	0
+96	-47	0
+97	-47	0
+98	-47	0
+99	-47	0
+100	-47	0
+101	-47	0
+102	-47	0
+103	-47	0
+104	-47	0
+105	-47	0
+106	-47	0
+107	-47	0
+108	-47	0
+109	-47	0
+110	-47	0
+111	-47	0
+112	-47	0
+113	-47	0
+114	-47	0
+115	-47	0
+116	-47	0
+117	-47	0
+118	-47	0
+119	-47	0
+120	-47	0
+121	-47	0
+122	-47	0
+123	-47	0
+124	-47	0
+125	-47	0
+126	-47	0
+127	-47	0
+128	-47	0
+129	-47	0
+130	-47	0
+131	-47	0
+132	-47	0
+133	-47	0
+134	-47	0
+135	-47	0
+136	-47	0
+137	-47	0
+138	-47	0
+139	-47	0
+140	-47	0
+141	-47	0
+142	-47	0
+143	-47	0
+144	-47	0
+145	-47	0
+146	-47	0
+147	-47	0
+148	-47	0
+149	-47	0
+150	-47	0
+151	-47	0
+152	-47	0
+153	-47	0
+154	-47	0
+155	-47	0
+156	-47	0
+157	-47	0
+158	-47	0
+159	-47	0
+160	-47	0
+161	-47	0
+162	-47	0
+163	-47	0
+164	-47	0
+165	-47	0
+166	-47	0
+167	-47	0
+168	-47	0
+169	-47	0
+170	-47	0
+171	-47	0
+172	-47	0
+173	-47	0
+174	-47	0
+175	-47	0
+176	-47	0
+177	-47	0
+178	-47	0
+179	-47	0
+180	-47	0
+181	-47	0
+182	-47	0
+183	-47	0
+184	-47	0
+185	-47	0
+186	-47	0
+187	-47	0
+188	-47	0
+189	-47	0
+190	-47	0
+191	-47	0
+192	-47	0
+193	-47	0
+194	-47	0
+195	-47	0
+196	-47	0
+197	-47	0
+198	-47	0
+199	-47	0
+200	-47	0
+201	-47	0
+202	-47	0
+203	-47	0
+204	-47	0
+205	-47	0
+206	-47	0
+207	-47	0
+208	-47	0
+209	-47	0
+210	-47	0
+211	-47	0
+212	-47	0
+213	-47	0
+214	-47	0
+215	-47	0
+216	-47	0
+217	-47	0
+218	-47	0
+219	-47	0
+220	-47	0
+221	-47	0
+222	-47	0
+223	-47	0
+224	-47	0
+225	-47	0
+226	-47	0
+227	-47	0
+228	-47	0
+229	-47	0
+230	-47	0
+231	-47	0
+232	-47	0
+233	-47	0
+234	-47	0
+235	-47	0
+236	-47	0
+237	-47	0
+238	-47	0
+239	-47	0
+240	-47	0
+241	-47	0
+242	-47	0
+243	-47	0
+244	-47	0
+245	-47	0
+246	-47	0
+247	-47	0
+248	-47	0
+249	-47	0
+250	-47	0
+251	-47	0
+252	-47	0
+253	-47	0
+254	-47	0
+255	-47	0
+256	-47	0
+257	-47	0
+258	-47	0
+259	-47	0
+260	-47	0
+261	-47	0
+262	-47	0
+263	-47	0
+264	-47	0
+265	-47	0
+266	-47	0
+267	-47	0
+268	-47	0
+269	-47	0
+270	-47	0
+271	-47	0
+272	-47	0
+273	-47	0
+274	-47	0
+275	-47	0
+276	-47	0
+277	-47	0
+278	-47	0
+279	-47	0
+280	-47	0
+281	-47	0
+282	-47	0
+283	-47	0
+284	-47	0
+285	-47	0
+286	-47	0
+287	-47	0
+288	-47	0
+289	-47	0
+290	-47	0
+291	-47	0
+292	-47	0
+293	-47	0
+294	-47	0
+295	-47	0
+296	-47	0
+297	-47	0
+298	-47	0
+299	-47	0
+300	-47	0
+301	-47	0
+302	-47	0
+303	-47	0
+304	-47	0
+305	-47	0
+306	-47	0
+307	-47	0
+308	-47	0
+309	-47	0
+310	-47	0
+311	-47	0
+312	-47	0
+313	-47	0
+314	-47	0
+315	-47	0
+316	-47	0
+317	-47	0
+318	-47	0
+319	-47	0
+320	-47	0
+321	-47	0
+322	-47	0
+323	-47	0
+324	-47	0
+325	-47	0
+326	-47	0
+327	-47	0
+328	-47	0
+329	-47	0
+330	-47	0
+331	-47	0
+332	-47	0
+333	-47	0
+334	-47	0
+335	-47	0
+336	-47	0
+337	-47	0
+338	-47	0
+339	-47	0
+340	-47	0
+341	-47	0
+342	-47	0
+343	-47	0
+344	-47	0
+345	-47	0
+346	-47	0
+347	-47	0
+348	-47	0
+349	-47	0
+350	-47	0
+351	-47	0
+352	-47	0
+353	-47	0
+354	-47	0
+355	-47	0
+356	-47	0
+357	-47	0
+358	-47	0
+359	-47	0
+360	-47	0
+0	-46.5	0
+1	-46.5	0
+2	-46.5	0
+3	-46.5	0
+4	-46.5	0
+5	-46.5	0
+6	-46.5	0
+7	-46.5	0
+8	-46.5	0
+9	-46.5	0
+10	-46.5	0
+11	-46.5	0
+12	-46.5	0
+13	-46.5	0
+14	-46.5	0
+15	-46.5	0
+16	-46.5	0
+17	-46.5	0
+18	-46.5	0
+19	-46.5	0
+20	-46.5	0
+21	-46.5	0
+22	-46.5	0
+23	-46.5	0
+24	-46.5	0
+25	-46.5	0
+26	-46.5	0
+27	-46.5	0
+28	-46.5	0
+29	-46.5	0
+30	-46.5	0
+31	-46.5	0
+32	-46.5	0
+33	-46.5	0
+34	-46.5	0
+35	-46.5	0
+36	-46.5	0
+37	-46.5	0
+38	-46.5	0
+39	-46.5	0
+40	-46.5	0
+41	-46.5	0
+42	-46.5	0
+43	-46.5	0
+44	-46.5	0
+45	-46.5	0
+46	-46.5	0
+47	-46.5	0
+48	-46.5	0
+49	-46.5	0
+50	-46.5	0
+51	-46.5	0
+52	-46.5	0
+53	-46.5	0
+54	-46.5	0
+55	-46.5	0
+56	-46.5	0
+57	-46.5	0
+58	-46.5	0
+59	-46.5	0
+60	-46.5	0
+61	-46.5	0
+62	-46.5	0
+63	-46.5	0
+64	-46.5	0
+65	-46.5	0
+66	-46.5	0
+67	-46.5	0
+68	-46.5	0
+69	-46.5	0
+70	-46.5	0
+71	-46.5	0
+72	-46.5	0
+73	-46.5	0
+74	-46.5	0
+75	-46.5	0
+76	-46.5	0
+77	-46.5	0
+78	-46.5	0
+79	-46.5	0
+80	-46.5	0
+81	-46.5	0
+82	-46.5	0
+83	-46.5	0
+84	-46.5	0
+85	-46.5	0
+86	-46.5	0
+87	-46.5	0
+88	-46.5	0
+89	-46.5	0
+90	-46.5	0
+91	-46.5	0
+92	-46.5	0
+93	-46.5	0
+94	-46.5	0
+95	-46.5	0
+96	-46.5	0
+97	-46.5	0
+98	-46.5	0
+99	-46.5	0
+100	-46.5	0
+101	-46.5	0
+102	-46.5	0
+103	-46.5	0
+104	-46.5	0
+105	-46.5	0
+106	-46.5	0
+107	-46.5	0
+108	-46.5	0
+109	-46.5	0
+110	-46.5	0
+111	-46.5	0
+112	-46.5	0
+113	-46.5	0
+114	-46.5	0
+115	-46.5	0
+116	-46.5	0
+117	-46.5	0
+118	-46.5	0
+119	-46.5	0
+120	-46.5	0
+121	-46.5	0
+122	-46.5	0
+123	-46.5	0
+124	-46.5	0
+125	-46.5	0
+126	-46.5	0
+127	-46.5	0
+128	-46.5	0
+129	-46.5	0
+130	-46.5	0
+131	-46.5	0
+132	-46.5	0
+133	-46.5	0
+134	-46.5	0
+135	-46.5	0
+136	-46.5	0
+137	-46.5	0
+138	-46.5	0
+139	-46.5	0
+140	-46.5	0
+141	-46.5	0
+142	-46.5	0
+143	-46.5	0
+144	-46.5	0
+145	-46.5	0
+146	-46.5	0
+147	-46.5	0
+148	-46.5	0
+149	-46.5	0
+150	-46.5	0
+151	-46.5	0
+152	-46.5	0
+153	-46.5	0
+154	-46.5	0
+155	-46.5	0
+156	-46.5	0
+157	-46.5	0
+158	-46.5	0
+159	-46.5	0
+160	-46.5	0
+161	-46.5	0
+162	-46.5	0
+163	-46.5	0
+164	-46.5	0
+165	-46.5	0
+166	-46.5	0
+167	-46.5	0
+168	-46.5	0
+169	-46.5	0
+170	-46.5	0
+171	-46.5	0
+172	-46.5	0
+173	-46.5	0
+174	-46.5	0
+175	-46.5	0
+176	-46.5	0
+177	-46.5	0
+178	-46.5	0
+179	-46.5	0
+180	-46.5	0
+181	-46.5	0
+182	-46.5	0
+183	-46.5	0
+184	-46.5	0
+185	-46.5	0
+186	-46.5	0
+187	-46.5	0
+188	-46.5	0
+189	-46.5	0
+190	-46.5	0
+191	-46.5	0
+192	-46.5	0
+193	-46.5	0
+194	-46.5	0
+195	-46.5	0
+196	-46.5	0
+197	-46.5	0
+198	-46.5	0
+199	-46.5	0
+200	-46.5	0
+201	-46.5	0
+202	-46.5	0
+203	-46.5	0
+204	-46.5	0
+205	-46.5	0
+206	-46.5	0
+207	-46.5	0
+208	-46.5	0
+209	-46.5	0
+210	-46.5	0
+211	-46.5	0
+212	-46.5	0
+213	-46.5	0
+214	-46.5	0
+215	-46.5	0
+216	-46.5	0
+217	-46.5	0
+218	-46.5	0
+219	-46.5	0
+220	-46.5	0
+221	-46.5	0
+222	-46.5	0
+223	-46.5	0
+224	-46.5	0
+225	-46.5	0
+226	-46.5	0
+227	-46.5	0
+228	-46.5	0
+229	-46.5	0
+230	-46.5	0
+231	-46.5	0
+232	-46.5	0
+233	-46.5	0
+234	-46.5	0
+235	-46.5	0
+236	-46.5	0
+237	-46.5	0
+238	-46.5	0
+239	-46.5	0
+240	-46.5	0
+241	-46.5	0
+242	-46.5	0
+243	-46.5	0
+244	-46.5	0
+245	-46.5	0
+246	-46.5	0
+247	-46.5	0
+248	-46.5	0
+249	-46.5	0
+250	-46.5	0
+251	-46.5	0
+252	-46.5	0
+253	-46.5	0
+254	-46.5	0
+255	-46.5	0
+256	-46.5	0
+257	-46.5	0
+258	-46.5	0
+259	-46.5	0
+260	-46.5	0
+261	-46.5	0
+262	-46.5	0
+263	-46.5	0
+264	-46.5	0
+265	-46.5	0
+266	-46.5	0
+267	-46.5	0
+268	-46.5	0
+269	-46.5	0
+270	-46.5	0
+271	-46.5	0
+272	-46.5	0
+273	-46.5	0
+274	-46.5	0
+275	-46.5	0
+276	-46.5	0
+277	-46.5	0
+278	-46.5	0
+279	-46.5	0
+280	-46.5	0
+281	-46.5	0
+282	-46.5	0
+283	-46.5	0
+284	-46.5	0
+285	-46.5	0
+286	-46.5	0
+287	-46.5	0
+288	-46.5	0
+289	-46.5	0
+290	-46.5	0
+291	-46.5	0
+292	-46.5	0
+293	-46.5	0
+294	-46.5	0
+295	-46.5	0
+296	-46.5	0
+297	-46.5	0
+298	-46.5	0
+299	-46.5	0
+300	-46.5	0
+301	-46.5	0
+302	-46.5	0
+303	-46.5	0
+304	-46.5	0
+305	-46.5	0
+306	-46.5	0
+307	-46.5	0
+308	-46.5	0
+309	-46.5	0
+310	-46.5	0
+311	-46.5	0
+312	-46.5	0
+313	-46.5	0
+314	-46.5	0
+315	-46.5	0
+316	-46.5	0
+317	-46.5	0
+318	-46.5	0
+319	-46.5	0
+320	-46.5	0
+321	-46.5	0
+322	-46.5	0
+323	-46.5	0
+324	-46.5	0
+325	-46.5	0
+326	-46.5	0
+327	-46.5	0
+328	-46.5	0
+329	-46.5	0
+330	-46.5	0
+331	-46.5	0
+332	-46.5	0
+333	-46.5	0
+334	-46.5	0
+335	-46.5	0
+336	-46.5	0
+337	-46.5	0
+338	-46.5	0
+339	-46.5	0
+340	-46.5	0
+341	-46.5	0
+342	-46.5	0
+343	-46.5	0
+344	-46.5	0
+345	-46.5	0
+346	-46.5	0
+347	-46.5	0
+348	-46.5	0
+349	-46.5	0
+350	-46.5	0
+351	-46.5	0
+352	-46.5	0
+353	-46.5	0
+354	-46.5	0
+355	-46.5	0
+356	-46.5	0
+357	-46.5	0
+358	-46.5	0
+359	-46.5	0
+360	-46.5	0
+0	-46	0
+1	-46	0
+2	-46	0
+3	-46	0
+4	-46	0
+5	-46	0
+6	-46	0
+7	-46	0
+8	-46	0
+9	-46	0
+10	-46	0
+11	-46	0
+12	-46	0
+13	-46	0
+14	-46	0
+15	-46	0
+16	-46	0
+17	-46	0
+18	-46	0
+19	-46	0
+20	-46	0
+21	-46	0
+22	-46	0
+23	-46	0
+24	-46	0
+25	-46	0
+26	-46	0
+27	-46	0
+28	-46	0
+29	-46	0
+30	-46	0
+31	-46	0
+32	-46	0
+33	-46	0
+34	-46	0
+35	-46	0
+36	-46	0
+37	-46	0
+38	-46	0
+39	-46	0
+40	-46	0
+41	-46	0
+42	-46	0
+43	-46	0
+44	-46	0
+45	-46	0
+46	-46	0
+47	-46	0
+48	-46	0
+49	-46	0
+50	-46	0
+51	-46	0
+52	-46	0
+53	-46	0
+54	-46	0
+55	-46	0
+56	-46	0
+57	-46	0
+58	-46	0
+59	-46	0
+60	-46	0
+61	-46	0
+62	-46	0
+63	-46	0
+64	-46	0
+65	-46	0
+66	-46	0
+67	-46	0
+68	-46	0
+69	-46	0
+70	-46	0
+71	-46	0
+72	-46	0
+73	-46	0
+74	-46	0
+75	-46	0
+76	-46	0
+77	-46	0
+78	-46	0
+79	-46	0
+80	-46	0
+81	-46	0
+82	-46	0
+83	-46	0
+84	-46	0
+85	-46	0
+86	-46	0
+87	-46	0
+88	-46	0
+89	-46	0
+90	-46	0
+91	-46	0
+92	-46	0
+93	-46	0
+94	-46	0
+95	-46	0
+96	-46	0
+97	-46	0
+98	-46	0
+99	-46	0
+100	-46	0
+101	-46	0
+102	-46	0
+103	-46	0
+104	-46	0
+105	-46	0
+106	-46	0
+107	-46	0
+108	-46	0
+109	-46	0
+110	-46	0
+111	-46	0
+112	-46	0
+113	-46	0
+114	-46	0
+115	-46	0
+116	-46	0
+117	-46	0
+118	-46	0
+119	-46	0
+120	-46	0
+121	-46	0
+122	-46	0
+123	-46	0
+124	-46	0
+125	-46	0
+126	-46	0
+127	-46	0
+128	-46	0
+129	-46	0
+130	-46	0
+131	-46	0
+132	-46	0
+133	-46	0
+134	-46	0
+135	-46	0
+136	-46	0
+137	-46	0
+138	-46	0
+139	-46	0
+140	-46	0
+141	-46	0
+142	-46	0
+143	-46	0
+144	-46	0
+145	-46	0
+146	-46	0
+147	-46	0
+148	-46	0
+149	-46	0
+150	-46	0
+151	-46	0
+152	-46	0
+153	-46	0
+154	-46	0
+155	-46	0
+156	-46	0
+157	-46	0
+158	-46	0
+159	-46	0
+160	-46	0
+161	-46	0
+162	-46	0
+163	-46	0
+164	-46	0
+165	-46	0
+166	-46	0
+167	-46	0
+168	-46	0
+169	-46	0
+170	-46	0
+171	-46	0
+172	-46	0
+173	-46	0
+174	-46	0
+175	-46	0
+176	-46	0
+177	-46	0
+178	-46	0
+179	-46	0
+180	-46	0
+181	-46	0
+182	-46	0
+183	-46	0
+184	-46	0
+185	-46	0
+186	-46	0
+187	-46	0
+188	-46	0
+189	-46	0
+190	-46	0
+191	-46	0
+192	-46	0
+193	-46	0
+194	-46	0
+195	-46	0
+196	-46	0
+197	-46	0
+198	-46	0
+199	-46	0
+200	-46	0
+201	-46	0
+202	-46	0
+203	-46	0
+204	-46	0
+205	-46	0
+206	-46	0
+207	-46	0
+208	-46	0
+209	-46	0
+210	-46	0
+211	-46	0
+212	-46	0
+213	-46	0
+214	-46	0
+215	-46	0
+216	-46	0
+217	-46	0
+218	-46	0
+219	-46	0
+220	-46	0
+221	-46	0
+222	-46	0
+223	-46	0
+224	-46	0
+225	-46	0
+226	-46	0
+227	-46	0
+228	-46	0
+229	-46	0
+230	-46	0
+231	-46	0
+232	-46	0
+233	-46	0
+234	-46	0
+235	-46	0
+236	-46	0
+237	-46	0
+238	-46	0
+239	-46	0
+240	-46	0
+241	-46	0
+242	-46	0
+243	-46	0
+244	-46	0
+245	-46	0
+246	-46	0
+247	-46	0
+248	-46	0
+249	-46	0
+250	-46	0
+251	-46	0
+252	-46	0
+253	-46	0
+254	-46	0
+255	-46	0
+256	-46	0
+257	-46	0
+258	-46	0
+259	-46	0
+260	-46	0
+261	-46	0
+262	-46	0
+263	-46	0
+264	-46	0
+265	-46	0
+266	-46	0
+267	-46	0
+268	-46	0
+269	-46	0
+270	-46	0
+271	-46	0
+272	-46	0
+273	-46	0
+274	-46	0
+275	-46	0
+276	-46	0
+277	-46	0
+278	-46	0
+279	-46	0
+280	-46	0
+281	-46	0
+282	-46	0
+283	-46	0
+284	-46	0
+285	-46	0
+286	-46	0
+287	-46	0
+288	-46	0
+289	-46	0
+290	-46	0
+291	-46	0
+292	-46	0
+293	-46	0
+294	-46	0
+295	-46	0
+296	-46	0
+297	-46	0
+298	-46	0
+299	-46	0
+300	-46	0
+301	-46	0
+302	-46	0
+303	-46	0
+304	-46	0
+305	-46	0
+306	-46	0
+307	-46	0
+308	-46	0
+309	-46	0
+310	-46	0
+311	-46	0
+312	-46	0
+313	-46	0
+314	-46	0
+315	-46	0
+316	-46	0
+317	-46	0
+318	-46	0
+319	-46	0
+320	-46	0
+321	-46	0
+322	-46	0
+323	-46	0
+324	-46	0
+325	-46	0
+326	-46	0
+327	-46	0
+328	-46	0
+329	-46	0
+330	-46	0
+331	-46	0
+332	-46	0
+333	-46	0
+334	-46	0
+335	-46	0
+336	-46	0
+337	-46	0
+338	-46	0
+339	-46	0
+340	-46	0
+341	-46	0
+342	-46	0
+343	-46	0
+344	-46	0
+345	-46	0
+346	-46	0
+347	-46	0
+348	-46	0
+349	-46	0
+350	-46	0
+351	-46	0
+352	-46	0
+353	-46	0
+354	-46	0
+355	-46	0
+356	-46	0
+357	-46	0
+358	-46	0
+359	-46	0
+360	-46	0
+0	-45.5	0
+1	-45.5	0
+2	-45.5	0
+3	-45.5	0
+4	-45.5	0
+5	-45.5	0
+6	-45.5	0
+7	-45.5	0
+8	-45.5	0
+9	-45.5	0
+10	-45.5	0
+11	-45.5	0
+12	-45.5	0
+13	-45.5	0
+14	-45.5	0
+15	-45.5	0
+16	-45.5	0
+17	-45.5	0
+18	-45.5	0
+19	-45.5	0
+20	-45.5	0
+21	-45.5	0
+22	-45.5	0
+23	-45.5	0
+24	-45.5	0
+25	-45.5	0
+26	-45.5	0
+27	-45.5	0
+28	-45.5	0
+29	-45.5	0
+30	-45.5	0
+31	-45.5	0
+32	-45.5	0
+33	-45.5	0
+34	-45.5	0
+35	-45.5	0
+36	-45.5	0
+37	-45.5	0
+38	-45.5	0
+39	-45.5	0
+40	-45.5	0
+41	-45.5	0
+42	-45.5	0
+43	-45.5	0
+44	-45.5	0
+45	-45.5	0
+46	-45.5	0
+47	-45.5	0
+48	-45.5	0
+49	-45.5	0
+50	-45.5	0
+51	-45.5	0
+52	-45.5	0
+53	-45.5	0
+54	-45.5	0
+55	-45.5	0
+56	-45.5	0
+57	-45.5	0
+58	-45.5	0
+59	-45.5	0
+60	-45.5	0
+61	-45.5	0
+62	-45.5	0
+63	-45.5	0
+64	-45.5	0
+65	-45.5	0
+66	-45.5	0
+67	-45.5	0
+68	-45.5	0
+69	-45.5	0
+70	-45.5	0
+71	-45.5	0
+72	-45.5	0
+73	-45.5	0
+74	-45.5	0
+75	-45.5	0
+76	-45.5	0
+77	-45.5	0
+78	-45.5	0
+79	-45.5	0
+80	-45.5	0
+81	-45.5	0
+82	-45.5	0
+83	-45.5	0
+84	-45.5	0
+85	-45.5	0
+86	-45.5	0
+87	-45.5	0
+88	-45.5	0
+89	-45.5	0
+90	-45.5	0
+91	-45.5	0
+92	-45.5	0
+93	-45.5	0
+94	-45.5	0
+95	-45.5	0
+96	-45.5	0
+97	-45.5	0
+98	-45.5	0
+99	-45.5	0
+100	-45.5	0
+101	-45.5	0
+102	-45.5	0
+103	-45.5	0
+104	-45.5	0
+105	-45.5	0
+106	-45.5	0
+107	-45.5	0
+108	-45.5	0
+109	-45.5	0
+110	-45.5	0
+111	-45.5	0
+112	-45.5	0
+113	-45.5	0
+114	-45.5	0
+115	-45.5	0
+116	-45.5	0
+117	-45.5	0
+118	-45.5	0
+119	-45.5	0
+120	-45.5	0
+121	-45.5	0
+122	-45.5	0
+123	-45.5	0
+124	-45.5	0
+125	-45.5	0
+126	-45.5	0
+127	-45.5	0
+128	-45.5	0
+129	-45.5	0
+130	-45.5	0
+131	-45.5	0
+132	-45.5	0
+133	-45.5	0
+134	-45.5	0
+135	-45.5	0
+136	-45.5	0
+137	-45.5	0
+138	-45.5	0
+139	-45.5	0
+140	-45.5	0
+141	-45.5	0
+142	-45.5	0
+143	-45.5	0
+144	-45.5	0
+145	-45.5	0
+146	-45.5	0
+147	-45.5	0
+148	-45.5	0
+149	-45.5	0
+150	-45.5	0
+151	-45.5	0
+152	-45.5	0
+153	-45.5	0
+154	-45.5	0
+155	-45.5	0
+156	-45.5	0
+157	-45.5	0
+158	-45.5	0
+159	-45.5	0
+160	-45.5	0
+161	-45.5	0
+162	-45.5	0
+163	-45.5	0
+164	-45.5	0
+165	-45.5	0
+166	-45.5	0
+167	-45.5	0
+168	-45.5	0
+169	-45.5	0
+170	-45.5	0
+171	-45.5	0
+172	-45.5	0
+173	-45.5	0
+174	-45.5	0
+175	-45.5	0
+176	-45.5	0
+177	-45.5	0
+178	-45.5	0
+179	-45.5	0
+180	-45.5	0
+181	-45.5	0
+182	-45.5	0
+183	-45.5	0
+184	-45.5	0
+185	-45.5	0
+186	-45.5	0
+187	-45.5	0
+188	-45.5	0
+189	-45.5	0
+190	-45.5	0
+191	-45.5	0
+192	-45.5	0
+193	-45.5	0
+194	-45.5	0
+195	-45.5	0
+196	-45.5	0
+197	-45.5	0
+198	-45.5	0
+199	-45.5	0
+200	-45.5	0
+201	-45.5	0
+202	-45.5	0
+203	-45.5	0
+204	-45.5	0
+205	-45.5	0
+206	-45.5	0
+207	-45.5	0
+208	-45.5	0
+209	-45.5	0
+210	-45.5	0
+211	-45.5	0
+212	-45.5	0
+213	-45.5	0
+214	-45.5	0
+215	-45.5	0
+216	-45.5	0
+217	-45.5	0
+218	-45.5	0
+219	-45.5	0
+220	-45.5	0
+221	-45.5	0
+222	-45.5	0
+223	-45.5	0
+224	-45.5	0
+225	-45.5	0
+226	-45.5	0
+227	-45.5	0
+228	-45.5	0
+229	-45.5	0
+230	-45.5	0
+231	-45.5	0
+232	-45.5	0
+233	-45.5	0
+234	-45.5	0
+235	-45.5	0
+236	-45.5	0
+237	-45.5	0
+238	-45.5	0
+239	-45.5	0
+240	-45.5	0
+241	-45.5	0
+242	-45.5	0
+243	-45.5	0
+244	-45.5	0
+245	-45.5	0
+246	-45.5	0
+247	-45.5	0
+248	-45.5	0
+249	-45.5	0
+250	-45.5	0
+251	-45.5	0
+252	-45.5	0
+253	-45.5	0
+254	-45.5	0
+255	-45.5	0
+256	-45.5	0
+257	-45.5	0
+258	-45.5	0
+259	-45.5	0
+260	-45.5	0
+261	-45.5	0
+262	-45.5	0
+263	-45.5	0
+264	-45.5	0
+265	-45.5	0
+266	-45.5	0
+267	-45.5	0
+268	-45.5	0
+269	-45.5	0
+270	-45.5	0
+271	-45.5	0
+272	-45.5	0
+273	-45.5	0
+274	-45.5	0
+275	-45.5	0
+276	-45.5	0
+277	-45.5	0
+278	-45.5	0
+279	-45.5	0
+280	-45.5	0
+281	-45.5	0
+282	-45.5	0
+283	-45.5	0
+284	-45.5	0
+285	-45.5	0
+286	-45.5	0
+287	-45.5	0
+288	-45.5	0
+289	-45.5	0
+290	-45.5	0
+291	-45.5	0
+292	-45.5	0
+293	-45.5	0
+294	-45.5	0
+295	-45.5	0
+296	-45.5	0
+297	-45.5	0
+298	-45.5	0
+299	-45.5	0
+300	-45.5	0
+301	-45.5	0
+302	-45.5	0
+303	-45.5	0
+304	-45.5	0
+305	-45.5	0
+306	-45.5	0
+307	-45.5	0
+308	-45.5	0
+309	-45.5	0
+310	-45.5	0
+311	-45.5	0
+312	-45.5	0
+313	-45.5	0
+314	-45.5	0
+315	-45.5	0
+316	-45.5	0
+317	-45.5	0
+318	-45.5	0
+319	-45.5	0
+320	-45.5	0
+321	-45.5	0
+322	-45.5	0
+323	-45.5	0
+324	-45.5	0
+325	-45.5	0
+326	-45.5	0
+327	-45.5	0
+328	-45.5	0
+329	-45.5	0
+330	-45.5	0
+331	-45.5	0
+332	-45.5	0
+333	-45.5	0
+334	-45.5	0
+335	-45.5	0
+336	-45.5	0
+337	-45.5	0
+338	-45.5	0
+339	-45.5	0
+340	-45.5	0
+341	-45.5	0
+342	-45.5	0
+343	-45.5	0
+344	-45.5	0
+345	-45.5	0
+346	-45.5	0
+347	-45.5	0
+348	-45.5	0
+349	-45.5	0
+350	-45.5	0
+351	-45.5	0
+352	-45.5	0
+353	-45.5	0
+354	-45.5	0
+355	-45.5	0
+356	-45.5	0
+357	-45.5	0
+358	-45.5	0
+359	-45.5	0
+360	-45.5	0
+0	-45	0
+1	-45	0
+2	-45	0
+3	-45	0
+4	-45	0
+5	-45	0
+6	-45	0
+7	-45	0
+8	-45	0
+9	-45	0
+10	-45	0
+11	-45	0
+12	-45	0
+13	-45	0
+14	-45	0
+15	-45	0
+16	-45	0
+17	-45	0
+18	-45	0
+19	-45	0
+20	-45	0
+21	-45	0
+22	-45	0
+23	-45	0
+24	-45	0
+25	-45	0
+26	-45	0
+27	-45	0
+28	-45	0
+29	-45	0
+30	-45	0
+31	-45	0
+32	-45	0
+33	-45	0
+34	-45	0
+35	-45	0
+36	-45	0
+37	-45	0
+38	-45	0
+39	-45	0
+40	-45	0
+41	-45	0
+42	-45	0
+43	-45	0
+44	-45	0
+45	-45	0
+46	-45	0
+47	-45	0
+48	-45	0
+49	-45	0
+50	-45	0
+51	-45	0
+52	-45	0
+53	-45	0
+54	-45	0
+55	-45	0
+56	-45	0
+57	-45	0
+58	-45	0
+59	-45	0
+60	-45	0
+61	-45	0
+62	-45	0
+63	-45	0
+64	-45	0
+65	-45	0
+66	-45	0
+67	-45	0
+68	-45	0
+69	-45	0
+70	-45	0
+71	-45	0
+72	-45	0
+73	-45	0
+74	-45	0
+75	-45	0
+76	-45	0
+77	-45	0
+78	-45	0
+79	-45	0
+80	-45	0
+81	-45	0
+82	-45	0
+83	-45	0
+84	-45	0
+85	-45	0
+86	-45	0
+87	-45	0
+88	-45	0
+89	-45	0
+90	-45	0
+91	-45	0
+92	-45	0
+93	-45	0
+94	-45	0
+95	-45	0
+96	-45	0
+97	-45	0
+98	-45	0
+99	-45	0
+100	-45	0
+101	-45	0
+102	-45	0
+103	-45	0
+104	-45	0
+105	-45	0
+106	-45	0
+107	-45	0
+108	-45	0
+109	-45	0
+110	-45	0
+111	-45	0
+112	-45	0
+113	-45	0
+114	-45	0
+115	-45	0
+116	-45	0
+117	-45	0
+118	-45	0
+119	-45	0
+120	-45	0
+121	-45	0
+122	-45	0
+123	-45	0
+124	-45	0
+125	-45	0
+126	-45	0
+127	-45	0
+128	-45	0
+129	-45	0
+130	-45	0
+131	-45	0
+132	-45	0
+133	-45	0
+134	-45	0
+135	-45	0
+136	-45	0
+137	-45	0
+138	-45	0
+139	-45	0
+140	-45	0
+141	-45	0
+142	-45	0
+143	-45	0
+144	-45	0
+145	-45	0
+146	-45	0
+147	-45	0
+148	-45	0
+149	-45	0
+150	-45	0
+151	-45	0
+152	-45	0
+153	-45	0
+154	-45	0
+155	-45	0
+156	-45	0
+157	-45	0
+158	-45	0
+159	-45	0
+160	-45	0
+161	-45	0
+162	-45	0
+163	-45	0
+164	-45	0
+165	-45	0
+166	-45	0
+167	-45	0
+168	-45	0
+169	-45	0
+170	-45	0
+171	-45	0
+172	-45	0
+173	-45	0
+174	-45	0
+175	-45	0
+176	-45	0
+177	-45	0
+178	-45	0
+179	-45	0
+180	-45	0
+181	-45	0
+182	-45	0
+183	-45	0
+184	-45	0
+185	-45	0
+186	-45	0
+187	-45	0
+188	-45	0
+189	-45	0
+190	-45	0
+191	-45	0
+192	-45	0
+193	-45	0
+194	-45	0
+195	-45	0
+196	-45	0
+197	-45	0
+198	-45	0
+199	-45	0
+200	-45	0
+201	-45	0
+202	-45	0
+203	-45	0
+204	-45	0
+205	-45	0
+206	-45	0
+207	-45	0
+208	-45	0
+209	-45	0
+210	-45	0
+211	-45	0
+212	-45	0
+213	-45	0
+214	-45	0
+215	-45	0
+216	-45	0
+217	-45	0
+218	-45	0
+219	-45	0
+220	-45	0
+221	-45	0
+222	-45	0
+223	-45	0
+224	-45	0
+225	-45	0
+226	-45	0
+227	-45	0
+228	-45	0
+229	-45	0
+230	-45	0
+231	-45	0
+232	-45	0
+233	-45	0
+234	-45	0
+235	-45	0
+236	-45	0
+237	-45	0
+238	-45	0
+239	-45	0
+240	-45	0
+241	-45	0
+242	-45	0
+243	-45	0
+244	-45	0
+245	-45	0
+246	-45	0
+247	-45	0
+248	-45	0
+249	-45	0
+250	-45	0
+251	-45	0
+252	-45	0
+253	-45	0
+254	-45	0
+255	-45	0
+256	-45	0
+257	-45	0
+258	-45	0
+259	-45	0
+260	-45	0
+261	-45	0
+262	-45	0
+263	-45	0
+264	-45	0
+265	-45	0
+266	-45	0
+267	-45	0
+268	-45	0
+269	-45	0
+270	-45	0
+271	-45	0
+272	-45	0
+273	-45	0
+274	-45	0
+275	-45	0
+276	-45	0
+277	-45	0
+278	-45	0
+279	-45	0
+280	-45	0
+281	-45	0
+282	-45	0
+283	-45	0
+284	-45	0
+285	-45	0
+286	-45	0
+287	-45	0
+288	-45	0
+289	-45	0
+290	-45	0
+291	-45	0
+292	-45	0
+293	-45	0
+294	-45	0
+295	-45	0
+296	-45	0
+297	-45	0
+298	-45	0
+299	-45	0
+300	-45	0
+301	-45	0
+302	-45	0
+303	-45	0
+304	-45	0
+305	-45	0
+306	-45	0
+307	-45	0
+308	-45	0
+309	-45	0
+310	-45	0
+311	-45	0
+312	-45	0
+313	-45	0
+314	-45	0
+315	-45	0
+316	-45	0
+317	-45	0
+318	-45	0
+319	-45	0
+320	-45	0
+321	-45	0
+322	-45	0
+323	-45	0
+324	-45	0
+325	-45	0
+326	-45	0
+327	-45	0
+328	-45	0
+329	-45	0
+330	-45	0
+331	-45	0
+332	-45	0
+333	-45	0
+334	-45	0
+335	-45	0
+336	-45	0
+337	-45	0
+338	-45	0
+339	-45	0
+340	-45	0
+341	-45	0
+342	-45	0
+343	-45	0
+344	-45	0
+345	-45	0
+346	-45	0
+347	-45	0
+348	-45	0
+349	-45	0
+350	-45	0
+351	-45	0
+352	-45	0
+353	-45	0
+354	-45	0
+355	-45	0
+356	-45	0
+357	-45	0
+358	-45	0
+359	-45	0
+360	-45	0
+0	-44.5	0
+1	-44.5	0
+2	-44.5	0
+3	-44.5	0
+4	-44.5	0
+5	-44.5	0
+6	-44.5	0
+7	-44.5	0
+8	-44.5	0
+9	-44.5	0
+10	-44.5	0
+11	-44.5	0
+12	-44.5	0
+13	-44.5	0
+14	-44.5	0
+15	-44.5	0
+16	-44.5	0
+17	-44.5	0
+18	-44.5	0
+19	-44.5	0
+20	-44.5	0
+21	-44.5	0
+22	-44.5	0
+23	-44.5	0
+24	-44.5	0
+25	-44.5	0
+26	-44.5	0
+27	-44.5	0
+28	-44.5	0
+29	-44.5	0
+30	-44.5	0
+31	-44.5	0
+32	-44.5	0
+33	-44.5	0
+34	-44.5	0
+35	-44.5	0
+36	-44.5	0
+37	-44.5	0
+38	-44.5	0
+39	-44.5	0
+40	-44.5	0
+41	-44.5	0
+42	-44.5	0
+43	-44.5	0
+44	-44.5	0
+45	-44.5	0
+46	-44.5	0
+47	-44.5	0
+48	-44.5	0
+49	-44.5	0
+50	-44.5	0
+51	-44.5	0
+52	-44.5	0
+53	-44.5	0
+54	-44.5	0
+55	-44.5	0
+56	-44.5	0
+57	-44.5	0
+58	-44.5	0
+59	-44.5	0
+60	-44.5	0
+61	-44.5	0
+62	-44.5	0
+63	-44.5	0
+64	-44.5	0
+65	-44.5	0
+66	-44.5	0
+67	-44.5	0
+68	-44.5	0
+69	-44.5	0
+70	-44.5	0
+71	-44.5	0
+72	-44.5	0
+73	-44.5	0
+74	-44.5	0
+75	-44.5	0
+76	-44.5	0
+77	-44.5	0
+78	-44.5	0
+79	-44.5	0
+80	-44.5	0
+81	-44.5	0
+82	-44.5	0
+83	-44.5	0
+84	-44.5	0
+85	-44.5	0
+86	-44.5	0
+87	-44.5	0
+88	-44.5	0
+89	-44.5	0
+90	-44.5	0
+91	-44.5	0
+92	-44.5	0
+93	-44.5	0
+94	-44.5	0
+95	-44.5	0
+96	-44.5	0
+97	-44.5	0
+98	-44.5	0
+99	-44.5	0
+100	-44.5	0
+101	-44.5	0
+102	-44.5	0
+103	-44.5	0
+104	-44.5	0
+105	-44.5	0
+106	-44.5	0
+107	-44.5	0
+108	-44.5	0
+109	-44.5	0
+110	-44.5	0
+111	-44.5	0
+112	-44.5	0
+113	-44.5	0
+114	-44.5	0
+115	-44.5	0
+116	-44.5	0
+117	-44.5	0
+118	-44.5	0
+119	-44.5	0
+120	-44.5	0
+121	-44.5	0
+122	-44.5	0
+123	-44.5	0
+124	-44.5	0
+125	-44.5	0
+126	-44.5	0
+127	-44.5	0
+128	-44.5	0
+129	-44.5	0
+130	-44.5	0
+131	-44.5	0
+132	-44.5	0
+133	-44.5	0
+134	-44.5	0
+135	-44.5	0
+136	-44.5	0
+137	-44.5	0
+138	-44.5	0
+139	-44.5	0
+140	-44.5	0
+141	-44.5	0
+142	-44.5	0
+143	-44.5	0
+144	-44.5	0
+145	-44.5	0
+146	-44.5	0
+147	-44.5	0
+148	-44.5	0
+149	-44.5	0
+150	-44.5	0
+151	-44.5	0
+152	-44.5	0
+153	-44.5	0
+154	-44.5	0
+155	-44.5	0
+156	-44.5	0
+157	-44.5	0
+158	-44.5	0
+159	-44.5	0
+160	-44.5	0
+161	-44.5	0
+162	-44.5	0
+163	-44.5	0
+164	-44.5	0
+165	-44.5	0
+166	-44.5	0
+167	-44.5	0
+168	-44.5	0
+169	-44.5	0
+170	-44.5	0
+171	-44.5	0
+172	-44.5	0
+173	-44.5	0
+174	-44.5	0
+175	-44.5	0
+176	-44.5	0
+177	-44.5	0
+178	-44.5	0
+179	-44.5	0
+180	-44.5	0
+181	-44.5	0
+182	-44.5	0
+183	-44.5	0
+184	-44.5	0
+185	-44.5	0
+186	-44.5	0
+187	-44.5	0
+188	-44.5	0
+189	-44.5	0
+190	-44.5	0
+191	-44.5	0
+192	-44.5	0
+193	-44.5	0
+194	-44.5	0
+195	-44.5	0
+196	-44.5	0
+197	-44.5	0
+198	-44.5	0
+199	-44.5	0
+200	-44.5	0
+201	-44.5	0
+202	-44.5	0
+203	-44.5	0
+204	-44.5	0
+205	-44.5	0
+206	-44.5	0
+207	-44.5	0
+208	-44.5	0
+209	-44.5	0
+210	-44.5	0
+211	-44.5	0
+212	-44.5	0
+213	-44.5	0
+214	-44.5	0
+215	-44.5	0
+216	-44.5	0
+217	-44.5	0
+218	-44.5	0
+219	-44.5	0
+220	-44.5	0
+221	-44.5	0
+222	-44.5	0
+223	-44.5	0
+224	-44.5	0
+225	-44.5	0
+226	-44.5	0
+227	-44.5	0
+228	-44.5	0
+229	-44.5	0
+230	-44.5	0
+231	-44.5	0
+232	-44.5	0
+233	-44.5	0
+234	-44.5	0
+235	-44.5	0
+236	-44.5	0
+237	-44.5	0
+238	-44.5	0
+239	-44.5	0
+240	-44.5	0
+241	-44.5	0
+242	-44.5	0
+243	-44.5	0
+244	-44.5	0
+245	-44.5	0
+246	-44.5	0
+247	-44.5	0
+248	-44.5	0
+249	-44.5	0
+250	-44.5	0
+251	-44.5	0
+252	-44.5	0
+253	-44.5	0
+254	-44.5	0
+255	-44.5	0
+256	-44.5	0
+257	-44.5	0
+258	-44.5	0
+259	-44.5	0
+260	-44.5	0
+261	-44.5	0
+262	-44.5	0
+263	-44.5	0
+264	-44.5	0
+265	-44.5	0
+266	-44.5	0
+267	-44.5	0
+268	-44.5	0
+269	-44.5	0
+270	-44.5	0
+271	-44.5	0
+272	-44.5	0
+273	-44.5	0
+274	-44.5	0
+275	-44.5	0
+276	-44.5	0
+277	-44.5	0
+278	-44.5	0
+279	-44.5	0
+280	-44.5	0
+281	-44.5	0
+282	-44.5	0
+283	-44.5	0
+284	-44.5	0
+285	-44.5	0
+286	-44.5	0
+287	-44.5	0
+288	-44.5	0
+289	-44.5	0
+290	-44.5	0
+291	-44.5	0
+292	-44.5	0
+293	-44.5	0
+294	-44.5	0
+295	-44.5	0
+296	-44.5	0
+297	-44.5	0
+298	-44.5	0
+299	-44.5	0
+300	-44.5	0
+301	-44.5	0
+302	-44.5	0
+303	-44.5	0
+304	-44.5	0
+305	-44.5	0
+306	-44.5	0
+307	-44.5	0
+308	-44.5	0
+309	-44.5	0
+310	-44.5	0
+311	-44.5	0
+312	-44.5	0
+313	-44.5	0
+314	-44.5	0
+315	-44.5	0
+316	-44.5	0
+317	-44.5	0
+318	-44.5	0
+319	-44.5	0
+320	-44.5	0
+321	-44.5	0
+322	-44.5	0
+323	-44.5	0
+324	-44.5	0
+325	-44.5	0
+326	-44.5	0
+327	-44.5	0
+328	-44.5	0
+329	-44.5	0
+330	-44.5	0
+331	-44.5	0
+332	-44.5	0
+333	-44.5	0
+334	-44.5	0
+335	-44.5	0
+336	-44.5	0
+337	-44.5	0
+338	-44.5	0
+339	-44.5	0
+340	-44.5	0
+341	-44.5	0
+342	-44.5	0
+343	-44.5	0
+344	-44.5	0
+345	-44.5	0
+346	-44.5	0
+347	-44.5	0
+348	-44.5	0
+349	-44.5	0
+350	-44.5	0
+351	-44.5	0
+352	-44.5	0
+353	-44.5	0
+354	-44.5	0
+355	-44.5	0
+356	-44.5	0
+357	-44.5	0
+358	-44.5	0
+359	-44.5	0
+360	-44.5	0
+0	-44	0
+1	-44	0
+2	-44	0
+3	-44	0
+4	-44	0
+5	-44	0
+6	-44	0
+7	-44	0
+8	-44	0
+9	-44	0
+10	-44	0
+11	-44	0
+12	-44	0
+13	-44	0
+14	-44	0
+15	-44	0
+16	-44	0
+17	-44	0
+18	-44	0
+19	-44	0
+20	-44	0
+21	-44	0
+22	-44	0
+23	-44	0
+24	-44	0
+25	-44	0
+26	-44	0
+27	-44	0
+28	-44	0
+29	-44	0
+30	-44	0
+31	-44	0
+32	-44	0
+33	-44	0
+34	-44	0
+35	-44	0
+36	-44	0
+37	-44	0
+38	-44	0
+39	-44	0
+40	-44	0
+41	-44	0
+42	-44	0
+43	-44	0
+44	-44	0
+45	-44	0
+46	-44	0
+47	-44	0
+48	-44	0
+49	-44	0
+50	-44	0
+51	-44	0
+52	-44	0
+53	-44	0
+54	-44	0
+55	-44	0
+56	-44	0
+57	-44	0
+58	-44	0
+59	-44	0
+60	-44	0
+61	-44	0
+62	-44	0
+63	-44	0
+64	-44	0
+65	-44	0
+66	-44	0
+67	-44	0
+68	-44	0
+69	-44	0
+70	-44	0
+71	-44	0
+72	-44	0
+73	-44	0
+74	-44	0
+75	-44	0
+76	-44	0
+77	-44	0
+78	-44	0
+79	-44	0
+80	-44	0
+81	-44	0
+82	-44	0
+83	-44	0
+84	-44	0
+85	-44	0
+86	-44	0
+87	-44	0
+88	-44	0
+89	-44	0
+90	-44	0
+91	-44	0
+92	-44	0
+93	-44	0
+94	-44	0
+95	-44	0
+96	-44	0
+97	-44	0
+98	-44	0
+99	-44	0
+100	-44	0
+101	-44	0
+102	-44	0
+103	-44	0
+104	-44	0
+105	-44	0
+106	-44	0
+107	-44	0
+108	-44	0
+109	-44	0
+110	-44	0
+111	-44	0
+112	-44	0
+113	-44	0
+114	-44	0
+115	-44	0
+116	-44	0
+117	-44	0
+118	-44	0
+119	-44	0
+120	-44	0
+121	-44	0
+122	-44	0
+123	-44	0
+124	-44	0
+125	-44	0
+126	-44	0
+127	-44	0
+128	-44	0
+129	-44	0
+130	-44	0
+131	-44	0
+132	-44	0
+133	-44	0
+134	-44	0
+135	-44	0
+136	-44	0
+137	-44	0
+138	-44	0
+139	-44	0
+140	-44	0
+141	-44	0
+142	-44	0
+143	-44	0
+144	-44	0
+145	-44	0
+146	-44	0
+147	-44	0
+148	-44	0
+149	-44	0
+150	-44	0
+151	-44	0
+152	-44	0
+153	-44	0
+154	-44	0
+155	-44	0
+156	-44	0
+157	-44	0
+158	-44	0
+159	-44	0
+160	-44	0
+161	-44	0
+162	-44	0
+163	-44	0
+164	-44	0
+165	-44	0
+166	-44	0
+167	-44	0
+168	-44	0
+169	-44	0
+170	-44	0
+171	-44	0
+172	-44	0
+173	-44	0
+174	-44	0
+175	-44	0
+176	-44	0
+177	-44	0
+178	-44	0
+179	-44	0
+180	-44	0
+181	-44	0
+182	-44	0
+183	-44	0
+184	-44	0
+185	-44	0
+186	-44	0
+187	-44	0
+188	-44	0
+189	-44	0
+190	-44	0
+191	-44	0
+192	-44	0
+193	-44	0
+194	-44	0
+195	-44	0
+196	-44	0
+197	-44	0
+198	-44	0
+199	-44	0
+200	-44	0
+201	-44	0
+202	-44	0
+203	-44	0
+204	-44	0
+205	-44	0
+206	-44	0
+207	-44	0
+208	-44	0
+209	-44	0
+210	-44	0
+211	-44	0
+212	-44	0
+213	-44	0
+214	-44	0
+215	-44	0
+216	-44	0
+217	-44	0
+218	-44	0
+219	-44	0
+220	-44	0
+221	-44	0
+222	-44	0
+223	-44	0
+224	-44	0
+225	-44	0
+226	-44	0
+227	-44	0
+228	-44	0
+229	-44	0
+230	-44	0
+231	-44	0
+232	-44	0
+233	-44	0
+234	-44	0
+235	-44	0
+236	-44	0
+237	-44	0
+238	-44	0
+239	-44	0
+240	-44	0
+241	-44	0
+242	-44	0
+243	-44	0
+244	-44	0
+245	-44	0
+246	-44	0
+247	-44	0
+248	-44	0
+249	-44	0
+250	-44	0
+251	-44	0
+252	-44	0
+253	-44	0
+254	-44	0
+255	-44	0
+256	-44	0
+257	-44	0
+258	-44	0
+259	-44	0
+260	-44	0
+261	-44	0
+262	-44	0
+263	-44	0
+264	-44	0
+265	-44	0
+266	-44	0
+267	-44	0
+268	-44	0
+269	-44	0
+270	-44	0
+271	-44	0
+272	-44	0
+273	-44	0
+274	-44	0
+275	-44	0
+276	-44	0
+277	-44	0
+278	-44	0
+279	-44	0
+280	-44	0
+281	-44	0
+282	-44	0
+283	-44	0
+284	-44	0
+285	-44	0
+286	-44	0
+287	-44	0
+288	-44	0
+289	-44	0
+290	-44	0
+291	-44	0
+292	-44	0
+293	-44	0
+294	-44	0
+295	-44	0
+296	-44	0
+297	-44	0
+298	-44	0
+299	-44	0
+300	-44	0
+301	-44	0
+302	-44	0
+303	-44	0
+304	-44	0
+305	-44	0
+306	-44	0
+307	-44	0
+308	-44	0
+309	-44	0
+310	-44	0
+311	-44	0
+312	-44	0
+313	-44	0
+314	-44	0
+315	-44	0
+316	-44	0
+317	-44	0
+318	-44	0
+319	-44	0
+320	-44	0
+321	-44	0
+322	-44	0
+323	-44	0
+324	-44	0
+325	-44	0
+326	-44	0
+327	-44	0
+328	-44	0
+329	-44	0
+330	-44	0
+331	-44	0
+332	-44	0
+333	-44	0
+334	-44	0
+335	-44	0
+336	-44	0
+337	-44	0
+338	-44	0
+339	-44	0
+340	-44	0
+341	-44	0
+342	-44	0
+343	-44	0
+344	-44	0
+345	-44	0
+346	-44	0
+347	-44	0
+348	-44	0
+349	-44	0
+350	-44	0
+351	-44	0
+352	-44	0
+353	-44	0
+354	-44	0
+355	-44	0
+356	-44	0
+357	-44	0
+358	-44	0
+359	-44	0
+360	-44	0
+0	-43.5	0
+1	-43.5	0
+2	-43.5	0
+3	-43.5	0
+4	-43.5	0
+5	-43.5	0
+6	-43.5	0
+7	-43.5	0
+8	-43.5	0
+9	-43.5	0
+10	-43.5	0
+11	-43.5	0
+12	-43.5	0
+13	-43.5	0
+14	-43.5	0
+15	-43.5	0
+16	-43.5	0
+17	-43.5	0
+18	-43.5	0
+19	-43.5	0
+20	-43.5	0
+21	-43.5	0
+22	-43.5	0
+23	-43.5	0
+24	-43.5	0
+25	-43.5	0
+26	-43.5	0
+27	-43.5	0
+28	-43.5	0
+29	-43.5	0
+30	-43.5	0
+31	-43.5	0
+32	-43.5	0
+33	-43.5	0
+34	-43.5	0
+35	-43.5	0
+36	-43.5	0
+37	-43.5	0
+38	-43.5	0
+39	-43.5	0
+40	-43.5	0
+41	-43.5	0
+42	-43.5	0
+43	-43.5	0
+44	-43.5	0
+45	-43.5	0
+46	-43.5	0
+47	-43.5	0
+48	-43.5	0
+49	-43.5	0
+50	-43.5	0
+51	-43.5	0
+52	-43.5	0
+53	-43.5	0
+54	-43.5	0
+55	-43.5	0
+56	-43.5	0
+57	-43.5	0
+58	-43.5	0
+59	-43.5	0
+60	-43.5	0
+61	-43.5	0
+62	-43.5	0
+63	-43.5	0
+64	-43.5	0
+65	-43.5	0
+66	-43.5	0
+67	-43.5	0
+68	-43.5	0
+69	-43.5	0
+70	-43.5	0
+71	-43.5	0
+72	-43.5	0
+73	-43.5	0
+74	-43.5	0
+75	-43.5	0
+76	-43.5	0
+77	-43.5	0
+78	-43.5	0
+79	-43.5	0
+80	-43.5	0
+81	-43.5	0
+82	-43.5	0
+83	-43.5	0
+84	-43.5	0
+85	-43.5	0
+86	-43.5	0
+87	-43.5	0
+88	-43.5	0
+89	-43.5	0
+90	-43.5	0
+91	-43.5	0
+92	-43.5	0
+93	-43.5	0
+94	-43.5	0
+95	-43.5	0
+96	-43.5	0
+97	-43.5	0
+98	-43.5	0
+99	-43.5	0
+100	-43.5	0
+101	-43.5	0
+102	-43.5	0
+103	-43.5	0
+104	-43.5	0
+105	-43.5	0
+106	-43.5	0
+107	-43.5	0
+108	-43.5	0
+109	-43.5	0
+110	-43.5	0
+111	-43.5	0
+112	-43.5	0
+113	-43.5	0
+114	-43.5	0
+115	-43.5	0
+116	-43.5	0
+117	-43.5	0
+118	-43.5	0
+119	-43.5	0
+120	-43.5	0
+121	-43.5	0
+122	-43.5	0
+123	-43.5	0
+124	-43.5	0
+125	-43.5	0
+126	-43.5	0
+127	-43.5	0
+128	-43.5	0
+129	-43.5	0
+130	-43.5	0
+131	-43.5	0
+132	-43.5	0
+133	-43.5	0
+134	-43.5	0
+135	-43.5	0
+136	-43.5	0
+137	-43.5	0
+138	-43.5	0
+139	-43.5	0
+140	-43.5	0
+141	-43.5	0
+142	-43.5	0
+143	-43.5	0
+144	-43.5	0
+145	-43.5	0
+146	-43.5	0
+147	-43.5	0
+148	-43.5	0
+149	-43.5	0
+150	-43.5	0
+151	-43.5	0
+152	-43.5	0
+153	-43.5	0
+154	-43.5	0
+155	-43.5	0
+156	-43.5	0
+157	-43.5	0
+158	-43.5	0
+159	-43.5	0
+160	-43.5	0
+161	-43.5	0
+162	-43.5	0
+163	-43.5	0
+164	-43.5	0
+165	-43.5	0
+166	-43.5	0
+167	-43.5	0
+168	-43.5	0
+169	-43.5	0
+170	-43.5	0
+171	-43.5	0
+172	-43.5	0
+173	-43.5	0
+174	-43.5	0
+175	-43.5	0
+176	-43.5	0
+177	-43.5	0
+178	-43.5	0
+179	-43.5	0
+180	-43.5	0
+181	-43.5	0
+182	-43.5	0
+183	-43.5	0
+184	-43.5	0
+185	-43.5	0
+186	-43.5	0
+187	-43.5	0
+188	-43.5	0
+189	-43.5	0
+190	-43.5	0
+191	-43.5	0
+192	-43.5	0
+193	-43.5	0
+194	-43.5	0
+195	-43.5	0
+196	-43.5	0
+197	-43.5	0
+198	-43.5	0
+199	-43.5	0
+200	-43.5	0
+201	-43.5	0
+202	-43.5	0
+203	-43.5	0
+204	-43.5	0
+205	-43.5	0
+206	-43.5	0
+207	-43.5	0
+208	-43.5	0
+209	-43.5	0
+210	-43.5	0
+211	-43.5	0
+212	-43.5	0
+213	-43.5	0
+214	-43.5	0
+215	-43.5	0
+216	-43.5	0
+217	-43.5	0
+218	-43.5	0
+219	-43.5	0
+220	-43.5	0
+221	-43.5	0
+222	-43.5	0
+223	-43.5	0
+224	-43.5	0
+225	-43.5	0
+226	-43.5	0
+227	-43.5	0
+228	-43.5	0
+229	-43.5	0
+230	-43.5	0
+231	-43.5	0
+232	-43.5	0
+233	-43.5	0
+234	-43.5	0
+235	-43.5	0
+236	-43.5	0
+237	-43.5	0
+238	-43.5	0
+239	-43.5	0
+240	-43.5	0
+241	-43.5	0
+242	-43.5	0
+243	-43.5	0
+244	-43.5	0
+245	-43.5	0
+246	-43.5	0
+247	-43.5	0
+248	-43.5	0
+249	-43.5	0
+250	-43.5	0
+251	-43.5	0
+252	-43.5	0
+253	-43.5	0
+254	-43.5	0
+255	-43.5	0
+256	-43.5	0
+257	-43.5	0
+258	-43.5	0
+259	-43.5	0
+260	-43.5	0
+261	-43.5	0
+262	-43.5	0
+263	-43.5	0
+264	-43.5	0
+265	-43.5	0
+266	-43.5	0
+267	-43.5	0
+268	-43.5	0
+269	-43.5	0
+270	-43.5	0
+271	-43.5	0
+272	-43.5	0
+273	-43.5	0
+274	-43.5	0
+275	-43.5	0
+276	-43.5	0
+277	-43.5	0
+278	-43.5	0
+279	-43.5	0
+280	-43.5	0
+281	-43.5	0
+282	-43.5	0
+283	-43.5	0
+284	-43.5	0
+285	-43.5	0
+286	-43.5	0
+287	-43.5	0
+288	-43.5	0
+289	-43.5	0
+290	-43.5	0
+291	-43.5	0
+292	-43.5	0
+293	-43.5	0
+294	-43.5	0
+295	-43.5	0
+296	-43.5	0
+297	-43.5	0
+298	-43.5	0
+299	-43.5	0
+300	-43.5	0
+301	-43.5	0
+302	-43.5	0
+303	-43.5	0
+304	-43.5	0
+305	-43.5	0
+306	-43.5	0
+307	-43.5	0
+308	-43.5	0
+309	-43.5	0
+310	-43.5	0
+311	-43.5	0
+312	-43.5	0
+313	-43.5	0
+314	-43.5	0
+315	-43.5	0
+316	-43.5	0
+317	-43.5	0
+318	-43.5	0
+319	-43.5	0
+320	-43.5	0
+321	-43.5	0
+322	-43.5	0
+323	-43.5	0
+324	-43.5	0
+325	-43.5	0
+326	-43.5	0
+327	-43.5	0
+328	-43.5	0
+329	-43.5	0
+330	-43.5	0
+331	-43.5	0
+332	-43.5	0
+333	-43.5	0
+334	-43.5	0
+335	-43.5	0
+336	-43.5	0
+337	-43.5	0
+338	-43.5	0
+339	-43.5	0
+340	-43.5	0
+341	-43.5	0
+342	-43.5	0
+343	-43.5	0
+344	-43.5	0
+345	-43.5	0
+346	-43.5	0
+347	-43.5	0
+348	-43.5	0
+349	-43.5	0
+350	-43.5	0
+351	-43.5	0
+352	-43.5	0
+353	-43.5	0
+354	-43.5	0
+355	-43.5	0
+356	-43.5	0
+357	-43.5	0
+358	-43.5	0
+359	-43.5	0
+360	-43.5	0
+0	-43	0
+1	-43	0
+2	-43	0
+3	-43	0
+4	-43	0
+5	-43	0
+6	-43	0
+7	-43	0
+8	-43	0
+9	-43	0
+10	-43	0
+11	-43	0
+12	-43	0
+13	-43	0
+14	-43	0
+15	-43	0
+16	-43	0
+17	-43	0
+18	-43	0
+19	-43	0
+20	-43	0
+21	-43	0
+22	-43	0
+23	-43	0
+24	-43	0
+25	-43	0
+26	-43	0
+27	-43	0
+28	-43	0
+29	-43	0
+30	-43	0
+31	-43	0
+32	-43	0
+33	-43	0
+34	-43	0
+35	-43	0
+36	-43	0
+37	-43	0
+38	-43	0
+39	-43	0
+40	-43	0
+41	-43	0
+42	-43	0
+43	-43	0
+44	-43	0
+45	-43	0
+46	-43	0
+47	-43	0
+48	-43	0
+49	-43	0
+50	-43	0
+51	-43	0
+52	-43	0
+53	-43	0
+54	-43	0
+55	-43	0
+56	-43	0
+57	-43	0
+58	-43	0
+59	-43	0
+60	-43	0
+61	-43	0
+62	-43	0
+63	-43	0
+64	-43	0
+65	-43	0
+66	-43	0
+67	-43	0
+68	-43	0
+69	-43	0
+70	-43	0
+71	-43	0
+72	-43	0
+73	-43	0
+74	-43	0
+75	-43	0
+76	-43	0
+77	-43	0
+78	-43	0
+79	-43	0
+80	-43	0
+81	-43	0
+82	-43	0
+83	-43	0
+84	-43	0
+85	-43	0
+86	-43	0
+87	-43	0
+88	-43	0
+89	-43	0
+90	-43	0
+91	-43	0
+92	-43	0
+93	-43	0
+94	-43	0
+95	-43	0
+96	-43	0
+97	-43	0
+98	-43	0
+99	-43	0
+100	-43	0
+101	-43	0
+102	-43	0
+103	-43	0
+104	-43	0
+105	-43	0
+106	-43	0
+107	-43	0
+108	-43	0
+109	-43	0
+110	-43	0
+111	-43	0
+112	-43	0
+113	-43	0
+114	-43	0
+115	-43	0
+116	-43	0
+117	-43	0
+118	-43	0
+119	-43	0
+120	-43	0
+121	-43	0
+122	-43	0
+123	-43	0
+124	-43	0
+125	-43	0
+126	-43	0
+127	-43	0
+128	-43	0
+129	-43	0
+130	-43	0
+131	-43	0
+132	-43	0
+133	-43	0
+134	-43	0
+135	-43	0
+136	-43	0
+137	-43	0
+138	-43	0
+139	-43	0
+140	-43	0
+141	-43	0
+142	-43	0
+143	-43	0
+144	-43	0
+145	-43	0
+146	-43	0
+147	-43	0
+148	-43	0
+149	-43	0
+150	-43	0
+151	-43	0
+152	-43	0
+153	-43	0
+154	-43	0
+155	-43	0
+156	-43	0
+157	-43	0
+158	-43	0
+159	-43	0
+160	-43	0
+161	-43	0
+162	-43	0
+163	-43	0
+164	-43	0
+165	-43	0
+166	-43	0
+167	-43	0
+168	-43	0
+169	-43	0
+170	-43	0
+171	-43	0
+172	-43	0
+173	-43	0
+174	-43	0
+175	-43	0
+176	-43	0
+177	-43	0
+178	-43	0
+179	-43	0
+180	-43	0
+181	-43	0
+182	-43	0
+183	-43	0
+184	-43	0
+185	-43	0
+186	-43	0
+187	-43	0
+188	-43	0
+189	-43	0
+190	-43	0
+191	-43	0
+192	-43	0
+193	-43	0
+194	-43	0
+195	-43	0
+196	-43	0
+197	-43	0
+198	-43	0
+199	-43	0
+200	-43	0
+201	-43	0
+202	-43	0
+203	-43	0
+204	-43	0
+205	-43	0
+206	-43	0
+207	-43	0
+208	-43	0
+209	-43	0
+210	-43	0
+211	-43	0
+212	-43	0
+213	-43	0
+214	-43	0
+215	-43	0
+216	-43	0
+217	-43	0
+218	-43	0
+219	-43	0
+220	-43	0
+221	-43	0
+222	-43	0
+223	-43	0
+224	-43	0
+225	-43	0
+226	-43	0
+227	-43	0
+228	-43	0
+229	-43	0
+230	-43	0
+231	-43	0
+232	-43	0
+233	-43	0
+234	-43	0
+235	-43	0
+236	-43	0
+237	-43	0
+238	-43	0
+239	-43	0
+240	-43	0
+241	-43	0
+242	-43	0
+243	-43	0
+244	-43	0
+245	-43	0
+246	-43	0
+247	-43	0
+248	-43	0
+249	-43	0
+250	-43	0
+251	-43	0
+252	-43	0
+253	-43	0
+254	-43	0
+255	-43	0
+256	-43	0
+257	-43	0
+258	-43	0
+259	-43	0
+260	-43	0
+261	-43	0
+262	-43	0
+263	-43	0
+264	-43	0
+265	-43	0
+266	-43	0
+267	-43	0
+268	-43	0
+269	-43	0
+270	-43	0
+271	-43	0
+272	-43	0
+273	-43	0
+274	-43	0
+275	-43	0
+276	-43	0
+277	-43	0
+278	-43	0
+279	-43	0
+280	-43	0
+281	-43	0
+282	-43	0
+283	-43	0
+284	-43	0
+285	-43	0
+286	-43	0
+287	-43	0
+288	-43	0
+289	-43	0
+290	-43	0
+291	-43	0
+292	-43	0
+293	-43	0
+294	-43	0
+295	-43	0
+296	-43	0
+297	-43	0
+298	-43	0
+299	-43	0
+300	-43	0
+301	-43	0
+302	-43	0
+303	-43	0
+304	-43	0
+305	-43	0
+306	-43	0
+307	-43	0
+308	-43	0
+309	-43	0
+310	-43	0
+311	-43	0
+312	-43	0
+313	-43	0
+314	-43	0
+315	-43	0
+316	-43	0
+317	-43	0
+318	-43	0
+319	-43	0
+320	-43	0
+321	-43	0
+322	-43	0
+323	-43	0
+324	-43	0
+325	-43	0
+326	-43	0
+327	-43	0
+328	-43	0
+329	-43	0
+330	-43	0
+331	-43	0
+332	-43	0
+333	-43	0
+334	-43	0
+335	-43	0
+336	-43	0
+337	-43	0
+338	-43	0
+339	-43	0
+340	-43	0
+341	-43	0
+342	-43	0
+343	-43	0
+344	-43	0
+345	-43	0
+346	-43	0
+347	-43	0
+348	-43	0
+349	-43	0
+350	-43	0
+351	-43	0
+352	-43	0
+353	-43	0
+354	-43	0
+355	-43	0
+356	-43	0
+357	-43	0
+358	-43	0
+359	-43	0
+360	-43	0
+0	-42.5	0
+1	-42.5	0
+2	-42.5	0
+3	-42.5	0
+4	-42.5	0
+5	-42.5	0
+6	-42.5	0
+7	-42.5	0
+8	-42.5	0
+9	-42.5	0
+10	-42.5	0
+11	-42.5	0
+12	-42.5	0
+13	-42.5	0
+14	-42.5	0
+15	-42.5	0
+16	-42.5	0
+17	-42.5	0
+18	-42.5	0
+19	-42.5	0
+20	-42.5	0
+21	-42.5	0
+22	-42.5	0
+23	-42.5	0
+24	-42.5	0
+25	-42.5	0
+26	-42.5	0
+27	-42.5	0
+28	-42.5	0
+29	-42.5	0
+30	-42.5	0
+31	-42.5	0
+32	-42.5	0
+33	-42.5	0
+34	-42.5	0
+35	-42.5	0
+36	-42.5	0
+37	-42.5	0
+38	-42.5	0
+39	-42.5	0
+40	-42.5	0
+41	-42.5	0
+42	-42.5	0
+43	-42.5	0
+44	-42.5	0
+45	-42.5	0
+46	-42.5	0
+47	-42.5	0
+48	-42.5	0
+49	-42.5	0
+50	-42.5	0
+51	-42.5	0
+52	-42.5	0
+53	-42.5	0
+54	-42.5	0
+55	-42.5	0
+56	-42.5	0
+57	-42.5	0
+58	-42.5	0
+59	-42.5	0
+60	-42.5	0
+61	-42.5	0
+62	-42.5	0
+63	-42.5	0
+64	-42.5	0
+65	-42.5	0
+66	-42.5	0
+67	-42.5	0
+68	-42.5	0
+69	-42.5	0
+70	-42.5	0
+71	-42.5	0
+72	-42.5	0
+73	-42.5	0
+74	-42.5	0
+75	-42.5	0
+76	-42.5	0
+77	-42.5	0
+78	-42.5	0
+79	-42.5	0
+80	-42.5	0
+81	-42.5	0
+82	-42.5	0
+83	-42.5	0
+84	-42.5	0
+85	-42.5	0
+86	-42.5	0
+87	-42.5	0
+88	-42.5	0
+89	-42.5	0
+90	-42.5	0
+91	-42.5	0
+92	-42.5	0
+93	-42.5	0
+94	-42.5	0
+95	-42.5	0
+96	-42.5	0
+97	-42.5	0
+98	-42.5	0
+99	-42.5	0
+100	-42.5	0
+101	-42.5	0
+102	-42.5	0
+103	-42.5	0
+104	-42.5	0
+105	-42.5	0
+106	-42.5	0
+107	-42.5	0
+108	-42.5	0
+109	-42.5	0
+110	-42.5	0
+111	-42.5	0
+112	-42.5	0
+113	-42.5	0
+114	-42.5	0
+115	-42.5	0
+116	-42.5	0
+117	-42.5	0
+118	-42.5	0
+119	-42.5	0
+120	-42.5	0
+121	-42.5	0
+122	-42.5	0
+123	-42.5	0
+124	-42.5	0
+125	-42.5	0
+126	-42.5	0
+127	-42.5	0
+128	-42.5	0
+129	-42.5	0
+130	-42.5	0
+131	-42.5	0
+132	-42.5	0
+133	-42.5	0
+134	-42.5	0
+135	-42.5	0
+136	-42.5	0
+137	-42.5	0
+138	-42.5	0
+139	-42.5	0
+140	-42.5	0
+141	-42.5	0
+142	-42.5	0
+143	-42.5	0
+144	-42.5	0
+145	-42.5	0
+146	-42.5	0
+147	-42.5	0
+148	-42.5	0
+149	-42.5	0
+150	-42.5	0
+151	-42.5	0
+152	-42.5	0
+153	-42.5	0
+154	-42.5	0
+155	-42.5	0
+156	-42.5	0
+157	-42.5	0
+158	-42.5	0
+159	-42.5	0
+160	-42.5	0
+161	-42.5	0
+162	-42.5	0
+163	-42.5	0
+164	-42.5	0
+165	-42.5	0
+166	-42.5	0
+167	-42.5	0
+168	-42.5	0
+169	-42.5	0
+170	-42.5	0
+171	-42.5	0
+172	-42.5	0
+173	-42.5	0
+174	-42.5	0
+175	-42.5	0
+176	-42.5	0
+177	-42.5	0
+178	-42.5	0
+179	-42.5	0
+180	-42.5	0
+181	-42.5	0
+182	-42.5	0
+183	-42.5	0
+184	-42.5	0
+185	-42.5	0
+186	-42.5	0
+187	-42.5	0
+188	-42.5	0
+189	-42.5	0
+190	-42.5	0
+191	-42.5	0
+192	-42.5	0
+193	-42.5	0
+194	-42.5	0
+195	-42.5	0
+196	-42.5	0
+197	-42.5	0
+198	-42.5	0
+199	-42.5	0
+200	-42.5	0
+201	-42.5	0
+202	-42.5	0
+203	-42.5	0
+204	-42.5	0
+205	-42.5	0
+206	-42.5	0
+207	-42.5	0
+208	-42.5	0
+209	-42.5	0
+210	-42.5	0
+211	-42.5	0
+212	-42.5	0
+213	-42.5	0
+214	-42.5	0
+215	-42.5	0
+216	-42.5	0
+217	-42.5	0
+218	-42.5	0
+219	-42.5	0
+220	-42.5	0
+221	-42.5	0
+222	-42.5	0
+223	-42.5	0
+224	-42.5	0
+225	-42.5	0
+226	-42.5	0
+227	-42.5	0
+228	-42.5	0
+229	-42.5	0
+230	-42.5	0
+231	-42.5	0
+232	-42.5	0
+233	-42.5	0
+234	-42.5	0
+235	-42.5	0
+236	-42.5	0
+237	-42.5	0
+238	-42.5	0
+239	-42.5	0
+240	-42.5	0
+241	-42.5	0
+242	-42.5	0
+243	-42.5	0
+244	-42.5	0
+245	-42.5	0
+246	-42.5	0
+247	-42.5	0
+248	-42.5	0
+249	-42.5	0
+250	-42.5	0
+251	-42.5	0
+252	-42.5	0
+253	-42.5	0
+254	-42.5	0
+255	-42.5	0
+256	-42.5	0
+257	-42.5	0
+258	-42.5	0
+259	-42.5	0
+260	-42.5	0
+261	-42.5	0
+262	-42.5	0
+263	-42.5	0
+264	-42.5	0
+265	-42.5	0
+266	-42.5	0
+267	-42.5	0
+268	-42.5	0
+269	-42.5	0
+270	-42.5	0
+271	-42.5	0
+272	-42.5	0
+273	-42.5	0
+274	-42.5	0
+275	-42.5	0
+276	-42.5	0
+277	-42.5	0
+278	-42.5	0
+279	-42.5	0
+280	-42.5	0
+281	-42.5	0
+282	-42.5	0
+283	-42.5	0
+284	-42.5	0
+285	-42.5	0
+286	-42.5	0
+287	-42.5	0
+288	-42.5	0
+289	-42.5	0
+290	-42.5	0
+291	-42.5	0
+292	-42.5	0
+293	-42.5	0
+294	-42.5	0
+295	-42.5	0
+296	-42.5	0
+297	-42.5	0
+298	-42.5	0
+299	-42.5	0
+300	-42.5	0
+301	-42.5	0
+302	-42.5	0
+303	-42.5	0
+304	-42.5	0
+305	-42.5	0
+306	-42.5	0
+307	-42.5	0
+308	-42.5	0
+309	-42.5	0
+310	-42.5	0
+311	-42.5	0
+312	-42.5	0
+313	-42.5	0
+314	-42.5	0
+315	-42.5	0
+316	-42.5	0
+317	-42.5	0
+318	-42.5	0
+319	-42.5	0
+320	-42.5	0
+321	-42.5	0
+322	-42.5	0
+323	-42.5	0
+324	-42.5	0
+325	-42.5	0
+326	-42.5	0
+327	-42.5	0
+328	-42.5	0
+329	-42.5	0
+330	-42.5	0
+331	-42.5	0
+332	-42.5	0
+333	-42.5	0
+334	-42.5	0
+335	-42.5	0
+336	-42.5	0
+337	-42.5	0
+338	-42.5	0
+339	-42.5	0
+340	-42.5	0
+341	-42.5	0
+342	-42.5	0
+343	-42.5	0
+344	-42.5	0
+345	-42.5	0
+346	-42.5	0
+347	-42.5	0
+348	-42.5	0
+349	-42.5	0
+350	-42.5	0
+351	-42.5	0
+352	-42.5	0
+353	-42.5	0
+354	-42.5	0
+355	-42.5	0
+356	-42.5	0
+357	-42.5	0
+358	-42.5	0
+359	-42.5	0
+360	-42.5	0
+0	-42	0
+1	-42	0
+2	-42	0
+3	-42	0
+4	-42	0
+5	-42	0
+6	-42	0
+7	-42	0
+8	-42	0
+9	-42	0
+10	-42	0
+11	-42	0
+12	-42	0
+13	-42	0
+14	-42	0
+15	-42	0
+16	-42	0
+17	-42	0
+18	-42	0
+19	-42	0
+20	-42	0
+21	-42	0
+22	-42	0
+23	-42	0
+24	-42	0
+25	-42	0
+26	-42	0
+27	-42	0
+28	-42	0
+29	-42	0
+30	-42	0
+31	-42	0
+32	-42	0
+33	-42	0
+34	-42	0
+35	-42	0
+36	-42	0
+37	-42	0
+38	-42	0
+39	-42	0
+40	-42	0
+41	-42	0
+42	-42	0
+43	-42	0
+44	-42	0
+45	-42	0
+46	-42	0
+47	-42	0
+48	-42	0
+49	-42	0
+50	-42	0
+51	-42	0
+52	-42	0
+53	-42	0
+54	-42	0
+55	-42	0
+56	-42	0
+57	-42	0
+58	-42	0
+59	-42	0
+60	-42	0
+61	-42	0
+62	-42	0
+63	-42	0
+64	-42	0
+65	-42	0
+66	-42	0
+67	-42	0
+68	-42	0
+69	-42	0
+70	-42	0
+71	-42	0
+72	-42	0
+73	-42	0
+74	-42	0
+75	-42	0
+76	-42	0
+77	-42	0
+78	-42	0
+79	-42	0
+80	-42	0
+81	-42	0
+82	-42	0
+83	-42	0
+84	-42	0
+85	-42	0
+86	-42	0
+87	-42	0
+88	-42	0
+89	-42	0
+90	-42	0
+91	-42	0
+92	-42	0
+93	-42	0
+94	-42	0
+95	-42	0
+96	-42	0
+97	-42	0
+98	-42	0
+99	-42	0
+100	-42	0
+101	-42	0
+102	-42	0
+103	-42	0
+104	-42	0
+105	-42	0
+106	-42	0
+107	-42	0
+108	-42	0
+109	-42	0
+110	-42	0
+111	-42	0
+112	-42	0
+113	-42	0
+114	-42	0
+115	-42	0
+116	-42	0
+117	-42	0
+118	-42	0
+119	-42	0
+120	-42	0
+121	-42	0
+122	-42	0
+123	-42	0
+124	-42	0
+125	-42	0
+126	-42	0
+127	-42	0
+128	-42	0
+129	-42	0
+130	-42	0
+131	-42	0
+132	-42	0
+133	-42	0
+134	-42	0
+135	-42	0
+136	-42	0
+137	-42	0
+138	-42	0
+139	-42	0
+140	-42	0
+141	-42	0
+142	-42	0
+143	-42	0
+144	-42	0
+145	-42	0
+146	-42	0
+147	-42	0
+148	-42	0
+149	-42	0
+150	-42	0
+151	-42	0
+152	-42	0
+153	-42	0
+154	-42	0
+155	-42	0
+156	-42	0
+157	-42	0
+158	-42	0
+159	-42	0
+160	-42	0
+161	-42	0
+162	-42	0
+163	-42	0
+164	-42	0
+165	-42	0
+166	-42	0
+167	-42	0
+168	-42	0
+169	-42	0
+170	-42	0
+171	-42	0
+172	-42	0
+173	-42	0
+174	-42	0
+175	-42	0
+176	-42	0
+177	-42	0
+178	-42	0
+179	-42	0
+180	-42	0
+181	-42	0
+182	-42	0
+183	-42	0
+184	-42	0
+185	-42	0
+186	-42	0
+187	-42	0
+188	-42	0
+189	-42	0
+190	-42	0
+191	-42	0
+192	-42	0
+193	-42	0
+194	-42	0
+195	-42	0
+196	-42	0
+197	-42	0
+198	-42	0
+199	-42	0
+200	-42	0
+201	-42	0
+202	-42	0
+203	-42	0
+204	-42	0
+205	-42	0
+206	-42	0
+207	-42	0
+208	-42	0
+209	-42	0
+210	-42	0
+211	-42	0
+212	-42	0
+213	-42	0
+214	-42	0
+215	-42	0
+216	-42	0
+217	-42	0
+218	-42	0
+219	-42	0
+220	-42	0
+221	-42	0
+222	-42	0
+223	-42	0
+224	-42	0
+225	-42	0
+226	-42	0
+227	-42	0
+228	-42	0
+229	-42	0
+230	-42	0
+231	-42	0
+232	-42	0
+233	-42	0
+234	-42	0
+235	-42	0
+236	-42	0
+237	-42	0
+238	-42	0
+239	-42	0
+240	-42	0
+241	-42	0
+242	-42	0
+243	-42	0
+244	-42	0
+245	-42	0
+246	-42	0
+247	-42	0
+248	-42	0
+249	-42	0
+250	-42	0
+251	-42	0
+252	-42	0
+253	-42	0
+254	-42	0
+255	-42	0
+256	-42	0
+257	-42	0
+258	-42	0
+259	-42	0
+260	-42	0
+261	-42	0
+262	-42	0
+263	-42	0
+264	-42	0
+265	-42	0
+266	-42	0
+267	-42	0
+268	-42	0
+269	-42	0
+270	-42	0
+271	-42	0
+272	-42	0
+273	-42	0
+274	-42	0
+275	-42	0
+276	-42	0
+277	-42	0
+278	-42	0
+279	-42	0
+280	-42	0
+281	-42	0
+282	-42	0
+283	-42	0
+284	-42	0
+285	-42	0
+286	-42	0
+287	-42	0
+288	-42	0
+289	-42	0
+290	-42	0
+291	-42	0
+292	-42	0
+293	-42	0
+294	-42	0
+295	-42	0
+296	-42	0
+297	-42	0
+298	-42	0
+299	-42	0
+300	-42	0
+301	-42	0
+302	-42	0
+303	-42	0
+304	-42	0
+305	-42	0
+306	-42	0
+307	-42	0
+308	-42	0
+309	-42	0
+310	-42	0
+311	-42	0
+312	-42	0
+313	-42	0
+314	-42	0
+315	-42	0
+316	-42	0
+317	-42	0
+318	-42	0
+319	-42	0
+320	-42	0
+321	-42	0
+322	-42	0
+323	-42	0
+324	-42	0
+325	-42	0
+326	-42	0
+327	-42	0
+328	-42	0
+329	-42	0
+330	-42	0
+331	-42	0
+332	-42	0
+333	-42	0
+334	-42	0
+335	-42	0
+336	-42	0
+337	-42	0
+338	-42	0
+339	-42	0
+340	-42	0
+341	-42	0
+342	-42	0
+343	-42	0
+344	-42	0
+345	-42	0
+346	-42	0
+347	-42	0
+348	-42	0
+349	-42	0
+350	-42	0
+351	-42	0
+352	-42	0
+353	-42	0
+354	-42	0
+355	-42	0
+356	-42	0
+357	-42	0
+358	-42	0
+359	-42	0
+360	-42	0
+0	-41.5	0
+1	-41.5	0
+2	-41.5	0
+3	-41.5	0
+4	-41.5	0
+5	-41.5	0
+6	-41.5	0
+7	-41.5	0
+8	-41.5	0
+9	-41.5	0
+10	-41.5	0
+11	-41.5	0
+12	-41.5	0
+13	-41.5	0
+14	-41.5	0
+15	-41.5	0
+16	-41.5	0
+17	-41.5	0
+18	-41.5	0
+19	-41.5	0
+20	-41.5	0
+21	-41.5	0
+22	-41.5	0
+23	-41.5	0
+24	-41.5	0
+25	-41.5	0
+26	-41.5	0
+27	-41.5	0
+28	-41.5	0
+29	-41.5	0
+30	-41.5	0
+31	-41.5	0
+32	-41.5	0
+33	-41.5	0
+34	-41.5	0
+35	-41.5	0
+36	-41.5	0
+37	-41.5	0
+38	-41.5	0
+39	-41.5	0
+40	-41.5	0
+41	-41.5	0
+42	-41.5	0
+43	-41.5	0
+44	-41.5	0
+45	-41.5	0
+46	-41.5	0
+47	-41.5	0
+48	-41.5	0
+49	-41.5	0
+50	-41.5	0
+51	-41.5	0
+52	-41.5	0
+53	-41.5	0
+54	-41.5	0
+55	-41.5	0
+56	-41.5	0
+57	-41.5	0
+58	-41.5	0
+59	-41.5	0
+60	-41.5	0
+61	-41.5	0
+62	-41.5	0
+63	-41.5	0
+64	-41.5	0
+65	-41.5	0
+66	-41.5	0
+67	-41.5	0
+68	-41.5	0
+69	-41.5	0
+70	-41.5	0
+71	-41.5	0
+72	-41.5	0
+73	-41.5	0
+74	-41.5	0
+75	-41.5	0
+76	-41.5	0
+77	-41.5	0
+78	-41.5	0
+79	-41.5	0
+80	-41.5	0
+81	-41.5	0
+82	-41.5	0
+83	-41.5	0
+84	-41.5	0
+85	-41.5	0
+86	-41.5	0
+87	-41.5	0
+88	-41.5	0
+89	-41.5	0
+90	-41.5	0
+91	-41.5	0
+92	-41.5	0
+93	-41.5	0
+94	-41.5	0
+95	-41.5	0
+96	-41.5	0
+97	-41.5	0
+98	-41.5	0
+99	-41.5	0
+100	-41.5	0
+101	-41.5	0
+102	-41.5	0
+103	-41.5	0
+104	-41.5	0
+105	-41.5	0
+106	-41.5	0
+107	-41.5	0
+108	-41.5	0
+109	-41.5	0
+110	-41.5	0
+111	-41.5	0
+112	-41.5	0
+113	-41.5	0
+114	-41.5	0
+115	-41.5	0
+116	-41.5	0
+117	-41.5	0
+118	-41.5	0
+119	-41.5	0
+120	-41.5	0
+121	-41.5	0
+122	-41.5	0
+123	-41.5	0
+124	-41.5	0
+125	-41.5	0
+126	-41.5	0
+127	-41.5	0
+128	-41.5	0
+129	-41.5	0
+130	-41.5	0
+131	-41.5	0
+132	-41.5	0
+133	-41.5	0
+134	-41.5	0
+135	-41.5	0
+136	-41.5	0
+137	-41.5	0
+138	-41.5	0
+139	-41.5	0
+140	-41.5	0
+141	-41.5	0
+142	-41.5	0
+143	-41.5	0
+144	-41.5	0
+145	-41.5	0
+146	-41.5	0
+147	-41.5	0
+148	-41.5	0
+149	-41.5	0
+150	-41.5	0
+151	-41.5	0
+152	-41.5	0
+153	-41.5	0
+154	-41.5	0
+155	-41.5	0
+156	-41.5	0
+157	-41.5	0
+158	-41.5	0
+159	-41.5	0
+160	-41.5	0
+161	-41.5	0
+162	-41.5	0
+163	-41.5	0
+164	-41.5	0
+165	-41.5	0
+166	-41.5	0
+167	-41.5	0
+168	-41.5	0
+169	-41.5	0
+170	-41.5	0
+171	-41.5	0
+172	-41.5	0
+173	-41.5	0
+174	-41.5	0
+175	-41.5	0
+176	-41.5	0
+177	-41.5	0
+178	-41.5	0
+179	-41.5	0
+180	-41.5	0
+181	-41.5	0
+182	-41.5	0
+183	-41.5	0
+184	-41.5	0
+185	-41.5	0
+186	-41.5	0
+187	-41.5	0
+188	-41.5	0
+189	-41.5	0
+190	-41.5	0
+191	-41.5	0
+192	-41.5	0
+193	-41.5	0
+194	-41.5	0
+195	-41.5	0
+196	-41.5	0
+197	-41.5	0
+198	-41.5	0
+199	-41.5	0
+200	-41.5	0
+201	-41.5	0
+202	-41.5	0
+203	-41.5	0
+204	-41.5	0
+205	-41.5	0
+206	-41.5	0
+207	-41.5	0
+208	-41.5	0
+209	-41.5	0
+210	-41.5	0
+211	-41.5	0
+212	-41.5	0
+213	-41.5	0
+214	-41.5	0
+215	-41.5	0
+216	-41.5	0
+217	-41.5	0
+218	-41.5	0
+219	-41.5	0
+220	-41.5	0
+221	-41.5	0
+222	-41.5	0
+223	-41.5	0
+224	-41.5	0
+225	-41.5	0
+226	-41.5	0
+227	-41.5	0
+228	-41.5	0
+229	-41.5	0
+230	-41.5	0
+231	-41.5	0
+232	-41.5	0
+233	-41.5	0
+234	-41.5	0
+235	-41.5	0
+236	-41.5	0
+237	-41.5	0
+238	-41.5	0
+239	-41.5	0
+240	-41.5	0
+241	-41.5	0
+242	-41.5	0
+243	-41.5	0
+244	-41.5	0
+245	-41.5	0
+246	-41.5	0
+247	-41.5	0
+248	-41.5	0
+249	-41.5	0
+250	-41.5	0
+251	-41.5	0
+252	-41.5	0
+253	-41.5	0
+254	-41.5	0
+255	-41.5	0
+256	-41.5	0
+257	-41.5	0
+258	-41.5	0
+259	-41.5	0
+260	-41.5	0
+261	-41.5	0
+262	-41.5	0
+263	-41.5	0
+264	-41.5	0
+265	-41.5	0
+266	-41.5	0
+267	-41.5	0
+268	-41.5	0
+269	-41.5	0
+270	-41.5	0
+271	-41.5	0
+272	-41.5	0
+273	-41.5	0
+274	-41.5	0
+275	-41.5	0
+276	-41.5	0
+277	-41.5	0
+278	-41.5	0
+279	-41.5	0
+280	-41.5	0
+281	-41.5	0
+282	-41.5	0
+283	-41.5	0
+284	-41.5	0
+285	-41.5	0
+286	-41.5	0
+287	-41.5	0
+288	-41.5	0
+289	-41.5	0
+290	-41.5	0
+291	-41.5	0
+292	-41.5	0
+293	-41.5	0
+294	-41.5	0
+295	-41.5	0
+296	-41.5	0
+297	-41.5	0
+298	-41.5	0
+299	-41.5	0
+300	-41.5	0
+301	-41.5	0
+302	-41.5	0
+303	-41.5	0
+304	-41.5	0
+305	-41.5	0
+306	-41.5	0
+307	-41.5	0
+308	-41.5	0
+309	-41.5	0
+310	-41.5	0
+311	-41.5	0
+312	-41.5	0
+313	-41.5	0
+314	-41.5	0
+315	-41.5	0
+316	-41.5	0
+317	-41.5	0
+318	-41.5	0
+319	-41.5	0
+320	-41.5	0
+321	-41.5	0
+322	-41.5	0
+323	-41.5	0
+324	-41.5	0
+325	-41.5	0
+326	-41.5	0
+327	-41.5	0
+328	-41.5	0
+329	-41.5	0
+330	-41.5	0
+331	-41.5	0
+332	-41.5	0
+333	-41.5	0
+334	-41.5	0
+335	-41.5	0
+336	-41.5	0
+337	-41.5	0
+338	-41.5	0
+339	-41.5	0
+340	-41.5	0
+341	-41.5	0
+342	-41.5	0
+343	-41.5	0
+344	-41.5	0
+345	-41.5	0
+346	-41.5	0
+347	-41.5	0
+348	-41.5	0
+349	-41.5	0
+350	-41.5	0
+351	-41.5	0
+352	-41.5	0
+353	-41.5	0
+354	-41.5	0
+355	-41.5	0
+356	-41.5	0
+357	-41.5	0
+358	-41.5	0
+359	-41.5	0
+360	-41.5	0
+0	-41	0
+1	-41	0
+2	-41	0
+3	-41	0
+4	-41	0
+5	-41	0
+6	-41	0
+7	-41	0
+8	-41	0
+9	-41	0
+10	-41	0
+11	-41	0
+12	-41	0
+13	-41	0
+14	-41	0
+15	-41	0
+16	-41	0
+17	-41	0
+18	-41	0
+19	-41	0
+20	-41	0
+21	-41	0
+22	-41	0
+23	-41	0
+24	-41	0
+25	-41	0
+26	-41	0
+27	-41	0
+28	-41	0
+29	-41	0
+30	-41	0
+31	-41	0
+32	-41	0
+33	-41	0
+34	-41	0
+35	-41	0
+36	-41	0
+37	-41	0
+38	-41	0
+39	-41	0
+40	-41	0
+41	-41	0
+42	-41	0
+43	-41	0
+44	-41	0
+45	-41	0
+46	-41	0
+47	-41	0
+48	-41	0
+49	-41	0
+50	-41	0
+51	-41	0
+52	-41	0
+53	-41	0
+54	-41	0
+55	-41	0
+56	-41	0
+57	-41	0
+58	-41	0
+59	-41	0
+60	-41	0
+61	-41	0
+62	-41	0
+63	-41	0
+64	-41	0
+65	-41	0
+66	-41	0
+67	-41	0
+68	-41	0
+69	-41	0
+70	-41	0
+71	-41	0
+72	-41	0
+73	-41	0
+74	-41	0
+75	-41	0
+76	-41	0
+77	-41	0
+78	-41	0
+79	-41	0
+80	-41	0
+81	-41	0
+82	-41	0
+83	-41	0
+84	-41	0
+85	-41	0
+86	-41	0
+87	-41	0
+88	-41	0
+89	-41	0
+90	-41	0
+91	-41	0
+92	-41	0
+93	-41	0
+94	-41	0
+95	-41	0
+96	-41	0
+97	-41	0
+98	-41	0
+99	-41	0
+100	-41	0
+101	-41	0
+102	-41	0
+103	-41	0
+104	-41	0
+105	-41	0
+106	-41	0
+107	-41	0
+108	-41	0
+109	-41	0
+110	-41	0
+111	-41	0
+112	-41	0
+113	-41	0
+114	-41	0
+115	-41	0
+116	-41	0
+117	-41	0
+118	-41	0
+119	-41	0
+120	-41	0
+121	-41	0
+122	-41	0
+123	-41	0
+124	-41	0
+125	-41	0
+126	-41	0
+127	-41	0
+128	-41	0
+129	-41	0
+130	-41	0
+131	-41	0
+132	-41	0
+133	-41	0
+134	-41	0
+135	-41	0
+136	-41	0
+137	-41	0
+138	-41	0
+139	-41	0
+140	-41	0
+141	-41	0
+142	-41	0
+143	-41	0
+144	-41	0
+145	-41	0
+146	-41	0
+147	-41	0
+148	-41	0
+149	-41	0
+150	-41	0
+151	-41	0
+152	-41	0
+153	-41	0
+154	-41	0
+155	-41	0
+156	-41	0
+157	-41	0
+158	-41	0
+159	-41	0
+160	-41	0
+161	-41	0
+162	-41	0
+163	-41	0
+164	-41	0
+165	-41	0
+166	-41	0
+167	-41	0
+168	-41	0
+169	-41	0
+170	-41	0
+171	-41	0
+172	-41	0
+173	-41	0
+174	-41	0
+175	-41	0
+176	-41	0
+177	-41	0
+178	-41	0
+179	-41	0
+180	-41	0
+181	-41	0
+182	-41	0
+183	-41	0
+184	-41	0
+185	-41	0
+186	-41	0
+187	-41	0
+188	-41	0
+189	-41	0
+190	-41	0
+191	-41	0
+192	-41	0
+193	-41	0
+194	-41	0
+195	-41	0
+196	-41	0
+197	-41	0
+198	-41	0
+199	-41	0
+200	-41	0
+201	-41	0
+202	-41	0
+203	-41	0
+204	-41	0
+205	-41	0
+206	-41	0
+207	-41	0
+208	-41	0
+209	-41	0
+210	-41	0
+211	-41	0
+212	-41	0
+213	-41	0
+214	-41	0
+215	-41	0
+216	-41	0
+217	-41	0
+218	-41	0
+219	-41	0
+220	-41	0
+221	-41	0
+222	-41	0
+223	-41	0
+224	-41	0
+225	-41	0
+226	-41	0
+227	-41	0
+228	-41	0
+229	-41	0
+230	-41	0
+231	-41	0
+232	-41	0
+233	-41	0
+234	-41	0
+235	-41	0
+236	-41	0
+237	-41	0
+238	-41	0
+239	-41	0
+240	-41	0
+241	-41	0
+242	-41	0
+243	-41	0
+244	-41	0
+245	-41	0
+246	-41	0
+247	-41	0
+248	-41	0
+249	-41	0
+250	-41	0
+251	-41	0
+252	-41	0
+253	-41	0
+254	-41	0
+255	-41	0
+256	-41	0
+257	-41	0
+258	-41	0
+259	-41	0
+260	-41	0
+261	-41	0
+262	-41	0
+263	-41	0
+264	-41	0
+265	-41	0
+266	-41	0
+267	-41	0
+268	-41	0
+269	-41	0
+270	-41	0
+271	-41	0
+272	-41	0
+273	-41	0
+274	-41	0
+275	-41	0
+276	-41	0
+277	-41	0
+278	-41	0
+279	-41	0
+280	-41	0
+281	-41	0
+282	-41	0
+283	-41	0
+284	-41	0
+285	-41	0
+286	-41	0
+287	-41	0
+288	-41	0
+289	-41	0
+290	-41	0
+291	-41	0
+292	-41	0
+293	-41	0
+294	-41	0
+295	-41	0
+296	-41	0
+297	-41	0
+298	-41	0
+299	-41	0
+300	-41	0
+301	-41	0
+302	-41	0
+303	-41	0
+304	-41	0
+305	-41	0
+306	-41	0
+307	-41	0
+308	-41	0
+309	-41	0
+310	-41	0
+311	-41	0
+312	-41	0
+313	-41	0
+314	-41	0
+315	-41	0
+316	-41	0
+317	-41	0
+318	-41	0
+319	-41	0
+320	-41	0
+321	-41	0
+322	-41	0
+323	-41	0
+324	-41	0
+325	-41	0
+326	-41	0
+327	-41	0
+328	-41	0
+329	-41	0
+330	-41	0
+331	-41	0
+332	-41	0
+333	-41	0
+334	-41	0
+335	-41	0
+336	-41	0
+337	-41	0
+338	-41	0
+339	-41	0
+340	-41	0
+341	-41	0
+342	-41	0
+343	-41	0
+344	-41	0
+345	-41	0
+346	-41	0
+347	-41	0
+348	-41	0
+349	-41	0
+350	-41	0
+351	-41	0
+352	-41	0
+353	-41	0
+354	-41	0
+355	-41	0
+356	-41	0
+357	-41	0
+358	-41	0
+359	-41	0
+360	-41	0
+0	-40.5	0
+1	-40.5	0
+2	-40.5	0
+3	-40.5	0
+4	-40.5	0
+5	-40.5	0
+6	-40.5	0
+7	-40.5	0
+8	-40.5	0
+9	-40.5	0
+10	-40.5	0
+11	-40.5	0
+12	-40.5	0
+13	-40.5	0
+14	-40.5	0
+15	-40.5	0
+16	-40.5	0
+17	-40.5	0
+18	-40.5	0
+19	-40.5	0
+20	-40.5	0
+21	-40.5	0
+22	-40.5	0
+23	-40.5	0
+24	-40.5	0
+25	-40.5	0
+26	-40.5	0
+27	-40.5	0
+28	-40.5	0
+29	-40.5	0
+30	-40.5	0
+31	-40.5	0
+32	-40.5	0
+33	-40.5	0
+34	-40.5	0
+35	-40.5	0
+36	-40.5	0
+37	-40.5	0
+38	-40.5	0
+39	-40.5	0
+40	-40.5	0
+41	-40.5	0
+42	-40.5	0
+43	-40.5	0
+44	-40.5	0
+45	-40.5	0
+46	-40.5	0
+47	-40.5	0
+48	-40.5	0
+49	-40.5	0
+50	-40.5	0
+51	-40.5	0
+52	-40.5	0
+53	-40.5	0
+54	-40.5	0
+55	-40.5	0
+56	-40.5	0
+57	-40.5	0
+58	-40.5	0
+59	-40.5	0
+60	-40.5	0
+61	-40.5	0
+62	-40.5	0
+63	-40.5	0
+64	-40.5	0
+65	-40.5	0
+66	-40.5	0
+67	-40.5	0
+68	-40.5	0
+69	-40.5	0
+70	-40.5	0
+71	-40.5	0
+72	-40.5	0
+73	-40.5	0
+74	-40.5	0
+75	-40.5	0
+76	-40.5	0
+77	-40.5	0
+78	-40.5	0
+79	-40.5	0
+80	-40.5	0
+81	-40.5	0
+82	-40.5	0
+83	-40.5	0
+84	-40.5	0
+85	-40.5	0
+86	-40.5	0
+87	-40.5	0
+88	-40.5	0
+89	-40.5	0
+90	-40.5	0
+91	-40.5	0
+92	-40.5	0
+93	-40.5	0
+94	-40.5	0
+95	-40.5	0
+96	-40.5	0
+97	-40.5	0
+98	-40.5	0
+99	-40.5	0
+100	-40.5	0
+101	-40.5	0
+102	-40.5	0
+103	-40.5	0
+104	-40.5	0
+105	-40.5	0
+106	-40.5	0
+107	-40.5	0
+108	-40.5	0
+109	-40.5	0
+110	-40.5	0
+111	-40.5	0
+112	-40.5	0
+113	-40.5	0
+114	-40.5	0
+115	-40.5	0
+116	-40.5	0
+117	-40.5	0
+118	-40.5	0
+119	-40.5	0
+120	-40.5	0
+121	-40.5	0
+122	-40.5	0
+123	-40.5	0
+124	-40.5	0
+125	-40.5	0
+126	-40.5	0
+127	-40.5	0
+128	-40.5	0
+129	-40.5	0
+130	-40.5	0
+131	-40.5	0
+132	-40.5	0
+133	-40.5	0
+134	-40.5	0
+135	-40.5	0
+136	-40.5	0
+137	-40.5	0
+138	-40.5	0
+139	-40.5	0
+140	-40.5	0
+141	-40.5	0
+142	-40.5	0
+143	-40.5	0
+144	-40.5	0
+145	-40.5	0
+146	-40.5	0
+147	-40.5	0
+148	-40.5	0
+149	-40.5	0
+150	-40.5	0
+151	-40.5	0
+152	-40.5	0
+153	-40.5	0
+154	-40.5	0
+155	-40.5	0
+156	-40.5	0
+157	-40.5	0
+158	-40.5	0
+159	-40.5	0
+160	-40.5	0
+161	-40.5	0
+162	-40.5	0
+163	-40.5	0
+164	-40.5	0
+165	-40.5	0
+166	-40.5	0
+167	-40.5	0
+168	-40.5	0
+169	-40.5	0
+170	-40.5	0
+171	-40.5	0
+172	-40.5	0
+173	-40.5	0
+174	-40.5	0
+175	-40.5	0
+176	-40.5	0
+177	-40.5	0
+178	-40.5	0
+179	-40.5	0
+180	-40.5	0
+181	-40.5	0
+182	-40.5	0
+183	-40.5	0
+184	-40.5	0
+185	-40.5	0
+186	-40.5	0
+187	-40.5	0
+188	-40.5	0
+189	-40.5	0
+190	-40.5	0
+191	-40.5	0
+192	-40.5	0
+193	-40.5	0
+194	-40.5	0
+195	-40.5	0
+196	-40.5	0
+197	-40.5	0
+198	-40.5	0
+199	-40.5	0
+200	-40.5	0
+201	-40.5	0
+202	-40.5	0
+203	-40.5	0
+204	-40.5	0
+205	-40.5	0
+206	-40.5	0
+207	-40.5	0
+208	-40.5	0
+209	-40.5	0
+210	-40.5	0
+211	-40.5	0
+212	-40.5	0
+213	-40.5	0
+214	-40.5	0
+215	-40.5	0
+216	-40.5	0
+217	-40.5	0
+218	-40.5	0
+219	-40.5	0
+220	-40.5	0
+221	-40.5	0
+222	-40.5	0
+223	-40.5	0
+224	-40.5	0
+225	-40.5	0
+226	-40.5	0
+227	-40.5	0
+228	-40.5	0
+229	-40.5	0
+230	-40.5	0
+231	-40.5	0
+232	-40.5	0
+233	-40.5	0
+234	-40.5	0
+235	-40.5	0
+236	-40.5	0
+237	-40.5	0
+238	-40.5	0
+239	-40.5	0
+240	-40.5	0
+241	-40.5	0
+242	-40.5	0
+243	-40.5	0
+244	-40.5	0
+245	-40.5	0
+246	-40.5	0
+247	-40.5	0
+248	-40.5	0
+249	-40.5	0
+250	-40.5	0
+251	-40.5	0
+252	-40.5	0
+253	-40.5	0
+254	-40.5	0
+255	-40.5	0
+256	-40.5	0
+257	-40.5	0
+258	-40.5	0
+259	-40.5	0
+260	-40.5	0
+261	-40.5	0
+262	-40.5	0
+263	-40.5	0
+264	-40.5	0
+265	-40.5	0
+266	-40.5	0
+267	-40.5	0
+268	-40.5	0
+269	-40.5	0
+270	-40.5	0
+271	-40.5	0
+272	-40.5	0
+273	-40.5	0
+274	-40.5	0
+275	-40.5	0
+276	-40.5	0
+277	-40.5	0
+278	-40.5	0
+279	-40.5	0
+280	-40.5	0
+281	-40.5	0
+282	-40.5	0
+283	-40.5	0
+284	-40.5	0
+285	-40.5	0
+286	-40.5	0
+287	-40.5	0
+288	-40.5	0
+289	-40.5	0
+290	-40.5	0
+291	-40.5	0
+292	-40.5	0
+293	-40.5	0
+294	-40.5	0
+295	-40.5	0
+296	-40.5	0
+297	-40.5	0
+298	-40.5	0
+299	-40.5	0
+300	-40.5	0
+301	-40.5	0
+302	-40.5	0
+303	-40.5	0
+304	-40.5	0
+305	-40.5	0
+306	-40.5	0
+307	-40.5	0
+308	-40.5	0
+309	-40.5	0
+310	-40.5	0
+311	-40.5	0
+312	-40.5	0
+313	-40.5	0
+314	-40.5	0
+315	-40.5	0
+316	-40.5	0
+317	-40.5	0
+318	-40.5	0
+319	-40.5	0
+320	-40.5	0
+321	-40.5	0
+322	-40.5	0
+323	-40.5	0
+324	-40.5	0
+325	-40.5	0
+326	-40.5	0
+327	-40.5	0
+328	-40.5	0
+329	-40.5	0
+330	-40.5	0
+331	-40.5	0
+332	-40.5	0
+333	-40.5	0
+334	-40.5	0
+335	-40.5	0
+336	-40.5	0
+337	-40.5	0
+338	-40.5	0
+339	-40.5	0
+340	-40.5	0
+341	-40.5	0
+342	-40.5	0
+343	-40.5	0
+344	-40.5	0
+345	-40.5	0
+346	-40.5	0
+347	-40.5	0
+348	-40.5	0
+349	-40.5	0
+350	-40.5	0
+351	-40.5	0
+352	-40.5	0
+353	-40.5	0
+354	-40.5	0
+355	-40.5	0
+356	-40.5	0
+357	-40.5	0
+358	-40.5	0
+359	-40.5	0
+360	-40.5	0
+0	-40	0
+1	-40	0
+2	-40	0
+3	-40	0
+4	-40	0
+5	-40	0
+6	-40	0
+7	-40	0
+8	-40	0
+9	-40	0
+10	-40	0
+11	-40	0
+12	-40	0
+13	-40	0
+14	-40	0
+15	-40	0
+16	-40	0
+17	-40	0
+18	-40	0
+19	-40	0
+20	-40	0
+21	-40	0
+22	-40	0
+23	-40	0
+24	-40	0
+25	-40	0
+26	-40	0
+27	-40	0
+28	-40	0
+29	-40	0
+30	-40	0
+31	-40	0
+32	-40	0
+33	-40	0
+34	-40	0
+35	-40	0
+36	-40	0
+37	-40	0
+38	-40	0
+39	-40	0
+40	-40	0
+41	-40	0
+42	-40	0
+43	-40	0
+44	-40	0
+45	-40	0
+46	-40	0
+47	-40	0
+48	-40	0
+49	-40	0
+50	-40	0
+51	-40	0
+52	-40	0
+53	-40	0
+54	-40	0
+55	-40	0
+56	-40	0
+57	-40	0
+58	-40	0
+59	-40	0
+60	-40	0
+61	-40	0
+62	-40	0
+63	-40	0
+64	-40	0
+65	-40	0
+66	-40	0
+67	-40	0
+68	-40	0
+69	-40	0
+70	-40	0
+71	-40	0
+72	-40	0
+73	-40	0
+74	-40	0
+75	-40	0
+76	-40	0
+77	-40	0
+78	-40	0
+79	-40	0
+80	-40	0
+81	-40	0
+82	-40	0
+83	-40	0
+84	-40	0
+85	-40	0
+86	-40	0
+87	-40	0
+88	-40	0
+89	-40	0
+90	-40	0
+91	-40	0
+92	-40	0
+93	-40	0
+94	-40	0
+95	-40	0
+96	-40	0
+97	-40	0
+98	-40	0
+99	-40	0
+100	-40	0
+101	-40	0
+102	-40	0
+103	-40	0
+104	-40	0
+105	-40	0
+106	-40	0
+107	-40	0
+108	-40	0
+109	-40	0
+110	-40	0
+111	-40	0
+112	-40	0
+113	-40	0
+114	-40	0
+115	-40	0
+116	-40	0
+117	-40	0
+118	-40	0
+119	-40	0
+120	-40	0
+121	-40	0
+122	-40	0
+123	-40	0
+124	-40	0
+125	-40	0
+126	-40	0
+127	-40	0
+128	-40	0
+129	-40	0
+130	-40	0
+131	-40	0
+132	-40	0
+133	-40	0
+134	-40	0
+135	-40	0
+136	-40	0
+137	-40	0
+138	-40	0
+139	-40	0
+140	-40	0
+141	-40	0
+142	-40	0
+143	-40	0
+144	-40	0
+145	-40	0
+146	-40	0
+147	-40	0
+148	-40	0
+149	-40	0
+150	-40	0
+151	-40	0
+152	-40	0
+153	-40	0
+154	-40	0
+155	-40	0
+156	-40	0
+157	-40	0
+158	-40	0
+159	-40	0
+160	-40	0
+161	-40	0
+162	-40	0
+163	-40	0
+164	-40	0
+165	-40	0
+166	-40	0
+167	-40	0
+168	-40	0
+169	-40	0
+170	-40	0
+171	-40	0
+172	-40	0
+173	-40	0
+174	-40	0
+175	-40	0
+176	-40	0
+177	-40	0
+178	-40	0
+179	-40	0
+180	-40	0
+181	-40	0
+182	-40	0
+183	-40	0
+184	-40	0
+185	-40	0
+186	-40	0
+187	-40	0
+188	-40	0
+189	-40	0
+190	-40	0
+191	-40	0
+192	-40	0
+193	-40	0
+194	-40	0
+195	-40	0
+196	-40	0
+197	-40	0
+198	-40	0
+199	-40	0
+200	-40	0
+201	-40	0
+202	-40	0
+203	-40	0
+204	-40	0
+205	-40	0
+206	-40	0
+207	-40	0
+208	-40	0
+209	-40	0
+210	-40	0
+211	-40	0
+212	-40	0
+213	-40	0
+214	-40	0
+215	-40	0
+216	-40	0
+217	-40	0
+218	-40	0
+219	-40	0
+220	-40	0
+221	-40	0
+222	-40	0
+223	-40	0
+224	-40	0
+225	-40	0
+226	-40	0
+227	-40	0
+228	-40	0
+229	-40	0
+230	-40	0
+231	-40	0
+232	-40	0
+233	-40	0
+234	-40	0
+235	-40	0
+236	-40	0
+237	-40	0
+238	-40	0
+239	-40	0
+240	-40	0
+241	-40	0
+242	-40	0
+243	-40	0
+244	-40	0
+245	-40	0
+246	-40	0
+247	-40	0
+248	-40	0
+249	-40	0
+250	-40	0
+251	-40	0
+252	-40	0
+253	-40	0
+254	-40	0
+255	-40	0
+256	-40	0
+257	-40	0
+258	-40	0
+259	-40	0
+260	-40	0
+261	-40	0
+262	-40	0
+263	-40	0
+264	-40	0
+265	-40	0
+266	-40	0
+267	-40	0
+268	-40	0
+269	-40	0
+270	-40	0
+271	-40	0
+272	-40	0
+273	-40	0
+274	-40	0
+275	-40	0
+276	-40	0
+277	-40	0
+278	-40	0
+279	-40	0
+280	-40	0
+281	-40	0
+282	-40	0
+283	-40	0
+284	-40	0
+285	-40	0
+286	-40	0
+287	-40	0
+288	-40	0
+289	-40	0
+290	-40	0
+291	-40	0
+292	-40	0
+293	-40	0
+294	-40	0
+295	-40	0
+296	-40	0
+297	-40	0
+298	-40	0
+299	-40	0
+300	-40	0
+301	-40	0
+302	-40	0
+303	-40	0
+304	-40	0
+305	-40	0
+306	-40	0
+307	-40	0
+308	-40	0
+309	-40	0
+310	-40	0
+311	-40	0
+312	-40	0
+313	-40	0
+314	-40	0
+315	-40	0
+316	-40	0
+317	-40	0
+318	-40	0
+319	-40	0
+320	-40	0
+321	-40	0
+322	-40	0
+323	-40	0
+324	-40	0
+325	-40	0
+326	-40	0
+327	-40	0
+328	-40	0
+329	-40	0
+330	-40	0
+331	-40	0
+332	-40	0
+333	-40	0
+334	-40	0
+335	-40	0
+336	-40	0
+337	-40	0
+338	-40	0
+339	-40	0
+340	-40	0
+341	-40	0
+342	-40	0
+343	-40	0
+344	-40	0
+345	-40	0
+346	-40	0
+347	-40	0
+348	-40	0
+349	-40	0
+350	-40	0
+351	-40	0
+352	-40	0
+353	-40	0
+354	-40	0
+355	-40	0
+356	-40	0
+357	-40	0
+358	-40	0
+359	-40	0
+360	-40	0
+0	-39.5	0
+1	-39.5	0
+2	-39.5	0
+3	-39.5	0
+4	-39.5	0
+5	-39.5	0
+6	-39.5	0
+7	-39.5	0
+8	-39.5	0
+9	-39.5	0
+10	-39.5	0
+11	-39.5	0
+12	-39.5	0
+13	-39.5	0
+14	-39.5	0
+15	-39.5	0
+16	-39.5	0
+17	-39.5	0
+18	-39.5	0
+19	-39.5	0
+20	-39.5	0
+21	-39.5	0
+22	-39.5	0
+23	-39.5	0
+24	-39.5	0
+25	-39.5	0
+26	-39.5	0
+27	-39.5	0
+28	-39.5	0
+29	-39.5	0
+30	-39.5	0
+31	-39.5	0
+32	-39.5	0
+33	-39.5	0
+34	-39.5	0
+35	-39.5	0
+36	-39.5	0
+37	-39.5	0
+38	-39.5	0
+39	-39.5	0
+40	-39.5	0
+41	-39.5	0
+42	-39.5	0
+43	-39.5	0
+44	-39.5	0
+45	-39.5	0
+46	-39.5	0
+47	-39.5	0
+48	-39.5	0
+49	-39.5	0
+50	-39.5	0
+51	-39.5	0
+52	-39.5	0
+53	-39.5	0
+54	-39.5	0
+55	-39.5	0
+56	-39.5	0
+57	-39.5	0
+58	-39.5	0
+59	-39.5	0
+60	-39.5	0
+61	-39.5	0
+62	-39.5	0
+63	-39.5	0
+64	-39.5	0
+65	-39.5	0
+66	-39.5	0
+67	-39.5	0
+68	-39.5	0
+69	-39.5	0
+70	-39.5	0
+71	-39.5	0
+72	-39.5	0
+73	-39.5	0
+74	-39.5	0
+75	-39.5	0
+76	-39.5	0
+77	-39.5	0
+78	-39.5	0
+79	-39.5	0
+80	-39.5	0
+81	-39.5	0
+82	-39.5	0
+83	-39.5	0
+84	-39.5	0
+85	-39.5	0
+86	-39.5	0
+87	-39.5	0
+88	-39.5	0
+89	-39.5	0
+90	-39.5	0
+91	-39.5	0
+92	-39.5	0
+93	-39.5	0
+94	-39.5	0
+95	-39.5	0
+96	-39.5	0
+97	-39.5	0
+98	-39.5	0
+99	-39.5	0
+100	-39.5	0
+101	-39.5	0
+102	-39.5	0
+103	-39.5	0
+104	-39.5	0
+105	-39.5	0
+106	-39.5	0
+107	-39.5	0
+108	-39.5	0
+109	-39.5	0
+110	-39.5	0
+111	-39.5	0
+112	-39.5	0
+113	-39.5	0
+114	-39.5	0
+115	-39.5	0
+116	-39.5	0
+117	-39.5	0
+118	-39.5	0
+119	-39.5	0
+120	-39.5	0
+121	-39.5	0
+122	-39.5	0
+123	-39.5	0
+124	-39.5	0
+125	-39.5	0
+126	-39.5	0
+127	-39.5	0
+128	-39.5	0
+129	-39.5	0
+130	-39.5	0
+131	-39.5	0
+132	-39.5	0
+133	-39.5	0
+134	-39.5	0
+135	-39.5	0
+136	-39.5	0
+137	-39.5	0
+138	-39.5	0
+139	-39.5	0
+140	-39.5	0
+141	-39.5	0
+142	-39.5	0
+143	-39.5	0
+144	-39.5	0
+145	-39.5	0
+146	-39.5	0
+147	-39.5	0
+148	-39.5	0
+149	-39.5	0
+150	-39.5	0
+151	-39.5	0
+152	-39.5	0
+153	-39.5	0
+154	-39.5	0
+155	-39.5	0
+156	-39.5	0
+157	-39.5	0
+158	-39.5	0
+159	-39.5	0
+160	-39.5	0
+161	-39.5	0
+162	-39.5	0
+163	-39.5	0
+164	-39.5	0
+165	-39.5	0
+166	-39.5	0
+167	-39.5	0
+168	-39.5	0
+169	-39.5	0
+170	-39.5	0
+171	-39.5	0
+172	-39.5	0
+173	-39.5	0
+174	-39.5	0
+175	-39.5	0
+176	-39.5	0
+177	-39.5	0
+178	-39.5	0
+179	-39.5	0
+180	-39.5	0
+181	-39.5	0
+182	-39.5	0
+183	-39.5	0
+184	-39.5	0
+185	-39.5	0
+186	-39.5	0
+187	-39.5	0
+188	-39.5	0
+189	-39.5	0
+190	-39.5	0
+191	-39.5	0
+192	-39.5	0
+193	-39.5	0
+194	-39.5	0
+195	-39.5	0
+196	-39.5	0
+197	-39.5	0
+198	-39.5	0
+199	-39.5	0
+200	-39.5	0
+201	-39.5	0
+202	-39.5	0
+203	-39.5	0
+204	-39.5	0
+205	-39.5	0
+206	-39.5	0
+207	-39.5	0
+208	-39.5	0
+209	-39.5	0
+210	-39.5	0
+211	-39.5	0
+212	-39.5	0
+213	-39.5	0
+214	-39.5	0
+215	-39.5	0
+216	-39.5	0
+217	-39.5	0
+218	-39.5	0
+219	-39.5	0
+220	-39.5	0
+221	-39.5	0
+222	-39.5	0
+223	-39.5	0
+224	-39.5	0
+225	-39.5	0
+226	-39.5	0
+227	-39.5	0
+228	-39.5	0
+229	-39.5	0
+230	-39.5	0
+231	-39.5	0
+232	-39.5	0
+233	-39.5	0
+234	-39.5	0
+235	-39.5	0
+236	-39.5	0
+237	-39.5	0
+238	-39.5	0
+239	-39.5	0
+240	-39.5	0
+241	-39.5	0
+242	-39.5	0
+243	-39.5	0
+244	-39.5	0
+245	-39.5	0
+246	-39.5	0
+247	-39.5	0
+248	-39.5	0
+249	-39.5	0
+250	-39.5	0
+251	-39.5	0
+252	-39.5	0
+253	-39.5	0
+254	-39.5	0
+255	-39.5	0
+256	-39.5	0
+257	-39.5	0
+258	-39.5	0
+259	-39.5	0
+260	-39.5	0
+261	-39.5	0
+262	-39.5	0
+263	-39.5	0
+264	-39.5	0
+265	-39.5	0
+266	-39.5	0
+267	-39.5	0
+268	-39.5	0
+269	-39.5	0
+270	-39.5	0
+271	-39.5	0
+272	-39.5	0
+273	-39.5	0
+274	-39.5	0
+275	-39.5	0
+276	-39.5	0
+277	-39.5	0
+278	-39.5	0
+279	-39.5	0
+280	-39.5	0
+281	-39.5	0
+282	-39.5	0
+283	-39.5	0
+284	-39.5	0
+285	-39.5	0
+286	-39.5	0
+287	-39.5	0
+288	-39.5	0
+289	-39.5	0
+290	-39.5	0
+291	-39.5	0
+292	-39.5	0
+293	-39.5	0
+294	-39.5	0
+295	-39.5	0
+296	-39.5	0
+297	-39.5	0
+298	-39.5	0
+299	-39.5	0
+300	-39.5	0
+301	-39.5	0
+302	-39.5	0
+303	-39.5	0
+304	-39.5	0
+305	-39.5	0
+306	-39.5	0
+307	-39.5	0
+308	-39.5	0
+309	-39.5	0
+310	-39.5	0
+311	-39.5	0
+312	-39.5	0
+313	-39.5	0
+314	-39.5	0
+315	-39.5	0
+316	-39.5	0
+317	-39.5	0
+318	-39.5	0
+319	-39.5	0
+320	-39.5	0
+321	-39.5	0
+322	-39.5	0
+323	-39.5	0
+324	-39.5	0
+325	-39.5	0
+326	-39.5	0
+327	-39.5	0
+328	-39.5	0
+329	-39.5	0
+330	-39.5	0
+331	-39.5	0
+332	-39.5	0
+333	-39.5	0
+334	-39.5	0
+335	-39.5	0
+336	-39.5	0
+337	-39.5	0
+338	-39.5	0
+339	-39.5	0
+340	-39.5	0
+341	-39.5	0
+342	-39.5	0
+343	-39.5	0
+344	-39.5	0
+345	-39.5	0
+346	-39.5	0
+347	-39.5	0
+348	-39.5	0
+349	-39.5	0
+350	-39.5	0
+351	-39.5	0
+352	-39.5	0
+353	-39.5	0
+354	-39.5	0
+355	-39.5	0
+356	-39.5	0
+357	-39.5	0
+358	-39.5	0
+359	-39.5	0
+360	-39.5	0
+0	-39	0
+1	-39	0
+2	-39	0
+3	-39	0
+4	-39	0
+5	-39	0
+6	-39	0
+7	-39	0
+8	-39	0
+9	-39	0
+10	-39	0
+11	-39	0
+12	-39	0
+13	-39	0
+14	-39	0
+15	-39	0
+16	-39	0
+17	-39	0
+18	-39	0
+19	-39	0
+20	-39	0
+21	-39	0
+22	-39	0
+23	-39	0
+24	-39	0
+25	-39	0
+26	-39	0
+27	-39	0
+28	-39	0
+29	-39	0
+30	-39	0
+31	-39	0
+32	-39	0
+33	-39	0
+34	-39	0
+35	-39	0
+36	-39	0
+37	-39	0
+38	-39	0
+39	-39	0
+40	-39	0
+41	-39	0
+42	-39	0
+43	-39	0
+44	-39	0
+45	-39	0
+46	-39	0
+47	-39	0
+48	-39	0
+49	-39	0
+50	-39	0
+51	-39	0
+52	-39	0
+53	-39	0
+54	-39	0
+55	-39	0
+56	-39	0
+57	-39	0
+58	-39	0
+59	-39	0
+60	-39	0
+61	-39	0
+62	-39	0
+63	-39	0
+64	-39	0
+65	-39	0
+66	-39	0
+67	-39	0
+68	-39	0
+69	-39	0
+70	-39	0
+71	-39	0
+72	-39	0
+73	-39	0
+74	-39	0
+75	-39	0
+76	-39	0
+77	-39	0
+78	-39	0
+79	-39	0
+80	-39	0
+81	-39	0
+82	-39	0
+83	-39	0
+84	-39	0
+85	-39	0
+86	-39	0
+87	-39	0
+88	-39	0
+89	-39	0
+90	-39	0
+91	-39	0
+92	-39	0
+93	-39	0
+94	-39	0
+95	-39	0
+96	-39	0
+97	-39	0
+98	-39	0
+99	-39	0
+100	-39	0
+101	-39	0
+102	-39	0
+103	-39	0
+104	-39	0
+105	-39	0
+106	-39	0
+107	-39	0
+108	-39	0
+109	-39	0
+110	-39	0
+111	-39	0
+112	-39	0
+113	-39	0
+114	-39	0
+115	-39	0
+116	-39	0
+117	-39	0
+118	-39	0
+119	-39	0
+120	-39	0
+121	-39	0
+122	-39	0
+123	-39	0
+124	-39	0
+125	-39	0
+126	-39	0
+127	-39	0
+128	-39	0
+129	-39	0
+130	-39	0
+131	-39	0
+132	-39	0
+133	-39	0
+134	-39	0
+135	-39	0
+136	-39	0
+137	-39	0
+138	-39	0
+139	-39	0
+140	-39	0
+141	-39	0
+142	-39	0
+143	-39	0
+144	-39	0
+145	-39	0
+146	-39	0
+147	-39	0
+148	-39	0
+149	-39	0
+150	-39	0
+151	-39	0
+152	-39	0
+153	-39	0
+154	-39	0
+155	-39	0
+156	-39	0
+157	-39	0
+158	-39	0
+159	-39	0
+160	-39	0
+161	-39	0
+162	-39	0
+163	-39	0
+164	-39	0
+165	-39	0
+166	-39	0
+167	-39	0
+168	-39	0
+169	-39	0
+170	-39	0
+171	-39	0
+172	-39	0
+173	-39	0
+174	-39	0
+175	-39	0
+176	-39	0
+177	-39	0
+178	-39	0
+179	-39	0
+180	-39	0
+181	-39	0
+182	-39	0
+183	-39	0
+184	-39	0
+185	-39	0
+186	-39	0
+187	-39	0
+188	-39	0
+189	-39	0
+190	-39	0
+191	-39	0
+192	-39	0
+193	-39	0
+194	-39	0
+195	-39	0
+196	-39	0
+197	-39	0
+198	-39	0
+199	-39	0
+200	-39	0
+201	-39	0
+202	-39	0
+203	-39	0
+204	-39	0
+205	-39	0
+206	-39	0
+207	-39	0
+208	-39	0
+209	-39	0
+210	-39	0
+211	-39	0
+212	-39	0
+213	-39	0
+214	-39	0
+215	-39	0
+216	-39	0
+217	-39	0
+218	-39	0
+219	-39	0
+220	-39	0
+221	-39	0
+222	-39	0
+223	-39	0
+224	-39	0
+225	-39	0
+226	-39	0
+227	-39	0
+228	-39	0
+229	-39	0
+230	-39	0
+231	-39	0
+232	-39	0
+233	-39	0
+234	-39	0
+235	-39	0
+236	-39	0
+237	-39	0
+238	-39	0
+239	-39	0
+240	-39	0
+241	-39	0
+242	-39	0
+243	-39	0
+244	-39	0
+245	-39	0
+246	-39	0
+247	-39	0
+248	-39	0
+249	-39	0
+250	-39	0
+251	-39	0
+252	-39	0
+253	-39	0
+254	-39	0
+255	-39	0
+256	-39	0
+257	-39	0
+258	-39	0
+259	-39	0
+260	-39	0
+261	-39	0
+262	-39	0
+263	-39	0
+264	-39	0
+265	-39	0
+266	-39	0
+267	-39	0
+268	-39	0
+269	-39	0
+270	-39	0
+271	-39	0
+272	-39	0
+273	-39	0
+274	-39	0
+275	-39	0
+276	-39	0
+277	-39	0
+278	-39	0
+279	-39	0
+280	-39	0
+281	-39	0
+282	-39	0
+283	-39	0
+284	-39	0
+285	-39	0
+286	-39	0
+287	-39	0
+288	-39	0
+289	-39	0
+290	-39	0
+291	-39	0
+292	-39	0
+293	-39	0
+294	-39	0
+295	-39	0
+296	-39	0
+297	-39	0
+298	-39	0
+299	-39	0
+300	-39	0
+301	-39	0
+302	-39	0
+303	-39	0
+304	-39	0
+305	-39	0
+306	-39	0
+307	-39	0
+308	-39	0
+309	-39	0
+310	-39	0
+311	-39	0
+312	-39	0
+313	-39	0
+314	-39	0
+315	-39	0
+316	-39	0
+317	-39	0
+318	-39	0
+319	-39	0
+320	-39	0
+321	-39	0
+322	-39	0
+323	-39	0
+324	-39	0
+325	-39	0
+326	-39	0
+327	-39	0
+328	-39	0
+329	-39	0
+330	-39	0
+331	-39	0
+332	-39	0
+333	-39	0
+334	-39	0
+335	-39	0
+336	-39	0
+337	-39	0
+338	-39	0
+339	-39	0
+340	-39	0
+341	-39	0
+342	-39	0
+343	-39	0
+344	-39	0
+345	-39	0
+346	-39	0
+347	-39	0
+348	-39	0
+349	-39	0
+350	-39	0
+351	-39	0
+352	-39	0
+353	-39	0
+354	-39	0
+355	-39	0
+356	-39	0
+357	-39	0
+358	-39	0
+359	-39	0
+360	-39	0
+0	-38.5	0
+1	-38.5	0
+2	-38.5	0
+3	-38.5	0
+4	-38.5	0
+5	-38.5	0
+6	-38.5	0
+7	-38.5	0
+8	-38.5	0
+9	-38.5	0
+10	-38.5	0
+11	-38.5	0
+12	-38.5	0
+13	-38.5	0
+14	-38.5	0
+15	-38.5	0
+16	-38.5	0
+17	-38.5	0
+18	-38.5	0
+19	-38.5	0
+20	-38.5	0
+21	-38.5	0
+22	-38.5	0
+23	-38.5	0
+24	-38.5	0
+25	-38.5	0
+26	-38.5	0
+27	-38.5	0
+28	-38.5	0
+29	-38.5	0
+30	-38.5	0
+31	-38.5	0
+32	-38.5	0
+33	-38.5	0
+34	-38.5	0
+35	-38.5	0
+36	-38.5	0
+37	-38.5	0
+38	-38.5	0
+39	-38.5	0
+40	-38.5	0
+41	-38.5	0
+42	-38.5	0
+43	-38.5	0
+44	-38.5	0
+45	-38.5	0
+46	-38.5	0
+47	-38.5	0
+48	-38.5	0
+49	-38.5	0
+50	-38.5	0
+51	-38.5	0
+52	-38.5	0
+53	-38.5	0
+54	-38.5	0
+55	-38.5	0
+56	-38.5	0
+57	-38.5	0
+58	-38.5	0
+59	-38.5	0
+60	-38.5	0
+61	-38.5	0
+62	-38.5	0
+63	-38.5	0
+64	-38.5	0
+65	-38.5	0
+66	-38.5	0
+67	-38.5	0
+68	-38.5	0
+69	-38.5	0
+70	-38.5	0
+71	-38.5	0
+72	-38.5	0
+73	-38.5	0
+74	-38.5	0
+75	-38.5	0
+76	-38.5	0
+77	-38.5	0
+78	-38.5	0
+79	-38.5	0
+80	-38.5	0
+81	-38.5	0
+82	-38.5	0
+83	-38.5	0
+84	-38.5	0
+85	-38.5	0
+86	-38.5	0
+87	-38.5	0
+88	-38.5	0
+89	-38.5	0
+90	-38.5	0
+91	-38.5	0
+92	-38.5	0
+93	-38.5	0
+94	-38.5	0
+95	-38.5	0
+96	-38.5	0
+97	-38.5	0
+98	-38.5	0
+99	-38.5	0
+100	-38.5	0
+101	-38.5	0
+102	-38.5	0
+103	-38.5	0
+104	-38.5	0
+105	-38.5	0
+106	-38.5	0
+107	-38.5	0
+108	-38.5	0
+109	-38.5	0
+110	-38.5	0
+111	-38.5	0
+112	-38.5	0
+113	-38.5	0
+114	-38.5	0
+115	-38.5	0
+116	-38.5	0
+117	-38.5	0
+118	-38.5	0
+119	-38.5	0
+120	-38.5	0
+121	-38.5	0
+122	-38.5	0
+123	-38.5	0
+124	-38.5	0
+125	-38.5	0
+126	-38.5	0
+127	-38.5	0
+128	-38.5	0
+129	-38.5	0
+130	-38.5	0
+131	-38.5	0
+132	-38.5	0
+133	-38.5	0
+134	-38.5	0
+135	-38.5	0
+136	-38.5	0
+137	-38.5	0
+138	-38.5	0
+139	-38.5	0
+140	-38.5	0
+141	-38.5	0
+142	-38.5	0
+143	-38.5	0
+144	-38.5	0
+145	-38.5	0
+146	-38.5	0
+147	-38.5	0
+148	-38.5	0
+149	-38.5	0
+150	-38.5	0
+151	-38.5	0
+152	-38.5	0
+153	-38.5	0
+154	-38.5	0
+155	-38.5	0
+156	-38.5	0
+157	-38.5	0
+158	-38.5	0
+159	-38.5	0
+160	-38.5	0
+161	-38.5	0
+162	-38.5	0
+163	-38.5	0
+164	-38.5	0
+165	-38.5	0
+166	-38.5	0
+167	-38.5	0
+168	-38.5	0
+169	-38.5	0
+170	-38.5	0
+171	-38.5	0
+172	-38.5	0
+173	-38.5	0
+174	-38.5	0
+175	-38.5	0
+176	-38.5	0
+177	-38.5	0
+178	-38.5	0
+179	-38.5	0
+180	-38.5	0
+181	-38.5	0
+182	-38.5	0
+183	-38.5	0
+184	-38.5	0
+185	-38.5	0
+186	-38.5	0
+187	-38.5	0
+188	-38.5	0
+189	-38.5	0
+190	-38.5	0
+191	-38.5	0
+192	-38.5	0
+193	-38.5	0
+194	-38.5	0
+195	-38.5	0
+196	-38.5	0
+197	-38.5	0
+198	-38.5	0
+199	-38.5	0
+200	-38.5	0
+201	-38.5	0
+202	-38.5	0
+203	-38.5	0
+204	-38.5	0
+205	-38.5	0
+206	-38.5	0
+207	-38.5	0
+208	-38.5	0
+209	-38.5	0
+210	-38.5	0
+211	-38.5	0
+212	-38.5	0
+213	-38.5	0
+214	-38.5	0
+215	-38.5	0
+216	-38.5	0
+217	-38.5	0
+218	-38.5	0
+219	-38.5	0
+220	-38.5	0
+221	-38.5	0
+222	-38.5	0
+223	-38.5	0
+224	-38.5	0
+225	-38.5	0
+226	-38.5	0
+227	-38.5	0
+228	-38.5	0
+229	-38.5	0
+230	-38.5	0
+231	-38.5	0
+232	-38.5	0
+233	-38.5	0
+234	-38.5	0
+235	-38.5	0
+236	-38.5	0
+237	-38.5	0
+238	-38.5	0
+239	-38.5	0
+240	-38.5	0
+241	-38.5	0
+242	-38.5	0
+243	-38.5	0
+244	-38.5	0
+245	-38.5	0
+246	-38.5	0
+247	-38.5	0
+248	-38.5	0
+249	-38.5	0
+250	-38.5	0
+251	-38.5	0
+252	-38.5	0
+253	-38.5	0
+254	-38.5	0
+255	-38.5	0
+256	-38.5	0
+257	-38.5	0
+258	-38.5	0
+259	-38.5	0
+260	-38.5	0
+261	-38.5	0
+262	-38.5	0
+263	-38.5	0
+264	-38.5	0
+265	-38.5	0
+266	-38.5	0
+267	-38.5	0
+268	-38.5	0
+269	-38.5	0
+270	-38.5	0
+271	-38.5	0
+272	-38.5	0
+273	-38.5	0
+274	-38.5	0
+275	-38.5	0
+276	-38.5	0
+277	-38.5	0
+278	-38.5	0
+279	-38.5	0
+280	-38.5	0
+281	-38.5	0
+282	-38.5	0
+283	-38.5	0
+284	-38.5	0
+285	-38.5	0
+286	-38.5	0
+287	-38.5	0
+288	-38.5	0
+289	-38.5	0
+290	-38.5	0
+291	-38.5	0
+292	-38.5	0
+293	-38.5	0
+294	-38.5	0
+295	-38.5	0
+296	-38.5	0
+297	-38.5	0
+298	-38.5	0
+299	-38.5	0
+300	-38.5	0
+301	-38.5	0
+302	-38.5	0
+303	-38.5	0
+304	-38.5	0
+305	-38.5	0
+306	-38.5	0
+307	-38.5	0
+308	-38.5	0
+309	-38.5	0
+310	-38.5	0
+311	-38.5	0
+312	-38.5	0
+313	-38.5	0
+314	-38.5	0
+315	-38.5	0
+316	-38.5	0
+317	-38.5	0
+318	-38.5	0
+319	-38.5	0
+320	-38.5	0
+321	-38.5	0
+322	-38.5	0
+323	-38.5	0
+324	-38.5	0
+325	-38.5	0
+326	-38.5	0
+327	-38.5	0
+328	-38.5	0
+329	-38.5	0
+330	-38.5	0
+331	-38.5	0
+332	-38.5	0
+333	-38.5	0
+334	-38.5	0
+335	-38.5	0
+336	-38.5	0
+337	-38.5	0
+338	-38.5	0
+339	-38.5	0
+340	-38.5	0
+341	-38.5	0
+342	-38.5	0
+343	-38.5	0
+344	-38.5	0
+345	-38.5	0
+346	-38.5	0
+347	-38.5	0
+348	-38.5	0
+349	-38.5	0
+350	-38.5	0
+351	-38.5	0
+352	-38.5	0
+353	-38.5	0
+354	-38.5	0
+355	-38.5	0
+356	-38.5	0
+357	-38.5	0
+358	-38.5	0
+359	-38.5	0
+360	-38.5	0
+0	-38	0
+1	-38	0
+2	-38	0
+3	-38	0
+4	-38	0
+5	-38	0
+6	-38	0
+7	-38	0
+8	-38	0
+9	-38	0
+10	-38	0
+11	-38	0
+12	-38	0
+13	-38	0
+14	-38	0
+15	-38	0
+16	-38	0
+17	-38	0
+18	-38	0
+19	-38	0
+20	-38	0
+21	-38	0
+22	-38	0
+23	-38	0
+24	-38	0
+25	-38	0
+26	-38	0
+27	-38	0
+28	-38	0
+29	-38	0
+30	-38	0
+31	-38	0
+32	-38	0
+33	-38	0
+34	-38	0
+35	-38	0
+36	-38	0
+37	-38	0
+38	-38	0
+39	-38	0
+40	-38	0
+41	-38	0
+42	-38	0
+43	-38	0
+44	-38	0
+45	-38	0
+46	-38	0
+47	-38	0
+48	-38	0
+49	-38	0
+50	-38	0
+51	-38	0
+52	-38	0
+53	-38	0
+54	-38	0
+55	-38	0
+56	-38	0
+57	-38	0
+58	-38	0
+59	-38	0
+60	-38	0
+61	-38	0
+62	-38	0
+63	-38	0
+64	-38	0
+65	-38	0
+66	-38	0
+67	-38	0
+68	-38	0
+69	-38	0
+70	-38	0
+71	-38	0
+72	-38	0
+73	-38	0
+74	-38	0
+75	-38	0
+76	-38	0
+77	-38	0
+78	-38	0
+79	-38	0
+80	-38	0
+81	-38	0
+82	-38	0
+83	-38	0
+84	-38	0
+85	-38	0
+86	-38	0
+87	-38	0
+88	-38	0
+89	-38	0
+90	-38	0
+91	-38	0
+92	-38	0
+93	-38	0
+94	-38	0
+95	-38	0
+96	-38	0
+97	-38	0
+98	-38	0
+99	-38	0
+100	-38	0
+101	-38	0
+102	-38	0
+103	-38	0
+104	-38	0
+105	-38	0
+106	-38	0
+107	-38	0
+108	-38	0
+109	-38	0
+110	-38	0
+111	-38	0
+112	-38	0
+113	-38	0
+114	-38	0
+115	-38	0
+116	-38	0
+117	-38	0
+118	-38	0
+119	-38	0
+120	-38	0
+121	-38	0
+122	-38	0
+123	-38	0
+124	-38	0
+125	-38	0
+126	-38	0
+127	-38	0
+128	-38	0
+129	-38	0
+130	-38	0
+131	-38	0
+132	-38	0
+133	-38	0
+134	-38	0
+135	-38	0
+136	-38	0
+137	-38	0
+138	-38	0
+139	-38	0
+140	-38	0
+141	-38	0
+142	-38	0
+143	-38	0
+144	-38	0
+145	-38	0
+146	-38	0
+147	-38	0
+148	-38	0
+149	-38	0
+150	-38	0
+151	-38	0
+152	-38	0
+153	-38	0
+154	-38	0
+155	-38	0
+156	-38	0
+157	-38	0
+158	-38	0
+159	-38	0
+160	-38	0
+161	-38	0
+162	-38	0
+163	-38	0
+164	-38	0
+165	-38	0
+166	-38	0
+167	-38	0
+168	-38	0
+169	-38	0
+170	-38	0
+171	-38	0
+172	-38	0
+173	-38	0
+174	-38	0
+175	-38	0
+176	-38	0
+177	-38	0
+178	-38	0
+179	-38	0
+180	-38	0
+181	-38	0
+182	-38	0
+183	-38	0
+184	-38	0
+185	-38	0
+186	-38	0
+187	-38	0
+188	-38	0
+189	-38	0
+190	-38	0
+191	-38	0
+192	-38	0
+193	-38	0
+194	-38	0
+195	-38	0
+196	-38	0
+197	-38	0
+198	-38	0
+199	-38	0
+200	-38	0
+201	-38	0
+202	-38	0
+203	-38	0
+204	-38	0
+205	-38	0
+206	-38	0
+207	-38	0
+208	-38	0
+209	-38	0
+210	-38	0
+211	-38	0
+212	-38	0
+213	-38	0
+214	-38	0
+215	-38	0
+216	-38	0
+217	-38	0
+218	-38	0
+219	-38	0
+220	-38	0
+221	-38	0
+222	-38	0
+223	-38	0
+224	-38	0
+225	-38	0
+226	-38	0
+227	-38	0
+228	-38	0
+229	-38	0
+230	-38	0
+231	-38	0
+232	-38	0
+233	-38	0
+234	-38	0
+235	-38	0
+236	-38	0
+237	-38	0
+238	-38	0
+239	-38	0
+240	-38	0
+241	-38	0
+242	-38	0
+243	-38	0
+244	-38	0
+245	-38	0
+246	-38	0
+247	-38	0
+248	-38	0
+249	-38	0
+250	-38	0
+251	-38	0
+252	-38	0
+253	-38	0
+254	-38	0
+255	-38	0
+256	-38	0
+257	-38	0
+258	-38	0
+259	-38	0
+260	-38	0
+261	-38	0
+262	-38	0
+263	-38	0
+264	-38	0
+265	-38	0
+266	-38	0
+267	-38	0
+268	-38	0
+269	-38	0
+270	-38	0
+271	-38	0
+272	-38	0
+273	-38	0
+274	-38	0
+275	-38	0
+276	-38	0
+277	-38	0
+278	-38	0
+279	-38	0
+280	-38	0
+281	-38	0
+282	-38	0
+283	-38	0
+284	-38	0
+285	-38	0
+286	-38	0
+287	-38	0
+288	-38	0
+289	-38	0
+290	-38	0
+291	-38	0
+292	-38	0
+293	-38	0
+294	-38	0
+295	-38	0
+296	-38	0
+297	-38	0
+298	-38	0
+299	-38	0
+300	-38	0
+301	-38	0
+302	-38	0
+303	-38	0
+304	-38	0
+305	-38	0
+306	-38	0
+307	-38	0
+308	-38	0
+309	-38	0
+310	-38	0
+311	-38	0
+312	-38	0
+313	-38	0
+314	-38	0
+315	-38	0
+316	-38	0
+317	-38	0
+318	-38	0
+319	-38	0
+320	-38	0
+321	-38	0
+322	-38	0
+323	-38	0
+324	-38	0
+325	-38	0
+326	-38	0
+327	-38	0
+328	-38	0
+329	-38	0
+330	-38	0
+331	-38	0
+332	-38	0
+333	-38	0
+334	-38	0
+335	-38	0
+336	-38	0
+337	-38	0
+338	-38	0
+339	-38	0
+340	-38	0
+341	-38	0
+342	-38	0
+343	-38	0
+344	-38	0
+345	-38	0
+346	-38	0
+347	-38	0
+348	-38	0
+349	-38	0
+350	-38	0
+351	-38	0
+352	-38	0
+353	-38	0
+354	-38	0
+355	-38	0
+356	-38	0
+357	-38	0
+358	-38	0
+359	-38	0
+360	-38	0
+0	-37.5	0
+1	-37.5	0
+2	-37.5	0
+3	-37.5	0
+4	-37.5	0
+5	-37.5	0
+6	-37.5	0
+7	-37.5	0
+8	-37.5	0
+9	-37.5	0
+10	-37.5	0
+11	-37.5	0
+12	-37.5	0
+13	-37.5	0
+14	-37.5	0
+15	-37.5	0
+16	-37.5	0
+17	-37.5	0
+18	-37.5	0
+19	-37.5	0
+20	-37.5	0
+21	-37.5	0
+22	-37.5	0
+23	-37.5	0
+24	-37.5	0
+25	-37.5	0
+26	-37.5	0
+27	-37.5	0
+28	-37.5	0
+29	-37.5	0
+30	-37.5	0
+31	-37.5	0
+32	-37.5	0
+33	-37.5	0
+34	-37.5	0
+35	-37.5	0
+36	-37.5	0
+37	-37.5	0
+38	-37.5	0
+39	-37.5	0
+40	-37.5	0
+41	-37.5	0
+42	-37.5	0
+43	-37.5	0
+44	-37.5	0
+45	-37.5	0
+46	-37.5	0
+47	-37.5	0
+48	-37.5	0
+49	-37.5	0
+50	-37.5	0
+51	-37.5	0
+52	-37.5	0
+53	-37.5	0
+54	-37.5	0
+55	-37.5	0
+56	-37.5	0
+57	-37.5	0
+58	-37.5	0
+59	-37.5	0
+60	-37.5	0
+61	-37.5	0
+62	-37.5	0
+63	-37.5	0
+64	-37.5	0
+65	-37.5	0
+66	-37.5	0
+67	-37.5	0
+68	-37.5	0
+69	-37.5	0
+70	-37.5	0
+71	-37.5	0
+72	-37.5	0
+73	-37.5	0
+74	-37.5	0
+75	-37.5	0
+76	-37.5	0
+77	-37.5	0
+78	-37.5	0
+79	-37.5	0
+80	-37.5	0
+81	-37.5	0
+82	-37.5	0
+83	-37.5	0
+84	-37.5	0
+85	-37.5	0
+86	-37.5	0
+87	-37.5	0
+88	-37.5	0
+89	-37.5	0
+90	-37.5	0
+91	-37.5	0
+92	-37.5	0
+93	-37.5	0
+94	-37.5	0
+95	-37.5	0
+96	-37.5	0
+97	-37.5	0
+98	-37.5	0
+99	-37.5	0
+100	-37.5	0
+101	-37.5	0
+102	-37.5	0
+103	-37.5	0
+104	-37.5	0
+105	-37.5	0
+106	-37.5	0
+107	-37.5	0
+108	-37.5	0
+109	-37.5	0
+110	-37.5	0
+111	-37.5	0
+112	-37.5	0
+113	-37.5	0
+114	-37.5	0
+115	-37.5	0
+116	-37.5	0
+117	-37.5	0
+118	-37.5	0
+119	-37.5	0
+120	-37.5	0
+121	-37.5	0
+122	-37.5	0
+123	-37.5	0
+124	-37.5	0
+125	-37.5	0
+126	-37.5	0
+127	-37.5	0
+128	-37.5	0
+129	-37.5	0
+130	-37.5	0
+131	-37.5	0
+132	-37.5	0
+133	-37.5	0
+134	-37.5	0
+135	-37.5	0
+136	-37.5	0
+137	-37.5	0
+138	-37.5	0
+139	-37.5	0
+140	-37.5	0
+141	-37.5	0
+142	-37.5	0
+143	-37.5	0
+144	-37.5	0
+145	-37.5	0
+146	-37.5	0
+147	-37.5	0
+148	-37.5	0
+149	-37.5	0
+150	-37.5	0
+151	-37.5	0
+152	-37.5	0
+153	-37.5	0
+154	-37.5	0
+155	-37.5	0
+156	-37.5	0
+157	-37.5	0
+158	-37.5	0
+159	-37.5	0
+160	-37.5	0
+161	-37.5	0
+162	-37.5	0
+163	-37.5	0
+164	-37.5	0
+165	-37.5	0
+166	-37.5	0
+167	-37.5	0
+168	-37.5	0
+169	-37.5	0
+170	-37.5	0
+171	-37.5	0
+172	-37.5	0
+173	-37.5	0
+174	-37.5	0
+175	-37.5	0
+176	-37.5	0
+177	-37.5	0
+178	-37.5	0
+179	-37.5	0
+180	-37.5	0
+181	-37.5	0
+182	-37.5	0
+183	-37.5	0
+184	-37.5	0
+185	-37.5	0
+186	-37.5	0
+187	-37.5	0
+188	-37.5	0
+189	-37.5	0
+190	-37.5	0
+191	-37.5	0
+192	-37.5	0
+193	-37.5	0
+194	-37.5	0
+195	-37.5	0
+196	-37.5	0
+197	-37.5	0
+198	-37.5	0
+199	-37.5	0
+200	-37.5	0
+201	-37.5	0
+202	-37.5	0
+203	-37.5	0
+204	-37.5	0
+205	-37.5	0
+206	-37.5	0
+207	-37.5	0
+208	-37.5	0
+209	-37.5	0
+210	-37.5	0
+211	-37.5	0
+212	-37.5	0
+213	-37.5	0
+214	-37.5	0
+215	-37.5	0
+216	-37.5	0
+217	-37.5	0
+218	-37.5	0
+219	-37.5	0
+220	-37.5	0
+221	-37.5	0
+222	-37.5	0
+223	-37.5	0
+224	-37.5	0
+225	-37.5	0
+226	-37.5	0
+227	-37.5	0
+228	-37.5	0
+229	-37.5	0
+230	-37.5	0
+231	-37.5	0
+232	-37.5	0
+233	-37.5	0
+234	-37.5	0
+235	-37.5	0
+236	-37.5	0
+237	-37.5	0
+238	-37.5	0
+239	-37.5	0
+240	-37.5	0
+241	-37.5	0
+242	-37.5	0
+243	-37.5	0
+244	-37.5	0
+245	-37.5	0
+246	-37.5	0
+247	-37.5	0
+248	-37.5	0
+249	-37.5	0
+250	-37.5	0
+251	-37.5	0
+252	-37.5	0
+253	-37.5	0
+254	-37.5	0
+255	-37.5	0
+256	-37.5	0
+257	-37.5	0
+258	-37.5	0
+259	-37.5	0
+260	-37.5	0
+261	-37.5	0
+262	-37.5	0
+263	-37.5	0
+264	-37.5	0
+265	-37.5	0
+266	-37.5	0
+267	-37.5	0
+268	-37.5	0
+269	-37.5	0
+270	-37.5	0
+271	-37.5	0
+272	-37.5	0
+273	-37.5	0
+274	-37.5	0
+275	-37.5	0
+276	-37.5	0
+277	-37.5	0
+278	-37.5	0
+279	-37.5	0
+280	-37.5	0
+281	-37.5	0
+282	-37.5	0
+283	-37.5	0
+284	-37.5	0
+285	-37.5	0
+286	-37.5	0
+287	-37.5	0
+288	-37.5	0
+289	-37.5	0
+290	-37.5	0
+291	-37.5	0
+292	-37.5	0
+293	-37.5	0
+294	-37.5	0
+295	-37.5	0
+296	-37.5	0
+297	-37.5	0
+298	-37.5	0
+299	-37.5	0
+300	-37.5	0
+301	-37.5	0
+302	-37.5	0
+303	-37.5	0
+304	-37.5	0
+305	-37.5	0
+306	-37.5	0
+307	-37.5	0
+308	-37.5	0
+309	-37.5	0
+310	-37.5	0
+311	-37.5	0
+312	-37.5	0
+313	-37.5	0
+314	-37.5	0
+315	-37.5	0
+316	-37.5	0
+317	-37.5	0
+318	-37.5	0
+319	-37.5	0
+320	-37.5	0
+321	-37.5	0
+322	-37.5	0
+323	-37.5	0
+324	-37.5	0
+325	-37.5	0
+326	-37.5	0
+327	-37.5	0
+328	-37.5	0
+329	-37.5	0
+330	-37.5	0
+331	-37.5	0
+332	-37.5	0
+333	-37.5	0
+334	-37.5	0
+335	-37.5	0
+336	-37.5	0
+337	-37.5	0
+338	-37.5	0
+339	-37.5	0
+340	-37.5	0
+341	-37.5	0
+342	-37.5	0
+343	-37.5	0
+344	-37.5	0
+345	-37.5	0
+346	-37.5	0
+347	-37.5	0
+348	-37.5	0
+349	-37.5	0
+350	-37.5	0
+351	-37.5	0
+352	-37.5	0
+353	-37.5	0
+354	-37.5	0
+355	-37.5	0
+356	-37.5	0
+357	-37.5	0
+358	-37.5	0
+359	-37.5	0
+360	-37.5	0
+0	-37	0
+1	-37	0
+2	-37	0
+3	-37	0
+4	-37	0
+5	-37	0
+6	-37	0
+7	-37	0
+8	-37	0
+9	-37	0
+10	-37	0
+11	-37	0
+12	-37	0
+13	-37	0
+14	-37	0
+15	-37	0
+16	-37	0
+17	-37	0
+18	-37	0
+19	-37	0
+20	-37	0
+21	-37	0
+22	-37	0
+23	-37	0
+24	-37	0
+25	-37	0
+26	-37	0
+27	-37	0
+28	-37	0
+29	-37	0
+30	-37	0
+31	-37	0
+32	-37	0
+33	-37	0
+34	-37	0
+35	-37	0
+36	-37	0
+37	-37	0
+38	-37	0
+39	-37	0
+40	-37	0
+41	-37	0
+42	-37	0
+43	-37	0
+44	-37	0
+45	-37	0
+46	-37	0
+47	-37	0
+48	-37	0
+49	-37	0
+50	-37	0
+51	-37	0
+52	-37	0
+53	-37	0
+54	-37	0
+55	-37	0
+56	-37	0
+57	-37	0
+58	-37	0
+59	-37	0
+60	-37	0
+61	-37	0
+62	-37	0
+63	-37	0
+64	-37	0
+65	-37	0
+66	-37	0
+67	-37	0
+68	-37	0
+69	-37	0
+70	-37	0
+71	-37	0
+72	-37	0
+73	-37	0
+74	-37	0
+75	-37	0
+76	-37	0
+77	-37	0
+78	-37	0
+79	-37	0
+80	-37	0
+81	-37	0
+82	-37	0
+83	-37	0
+84	-37	0
+85	-37	0
+86	-37	0
+87	-37	0
+88	-37	0
+89	-37	0
+90	-37	0
+91	-37	0
+92	-37	0
+93	-37	0
+94	-37	0
+95	-37	0
+96	-37	0
+97	-37	0
+98	-37	0
+99	-37	0
+100	-37	0
+101	-37	0
+102	-37	0
+103	-37	0
+104	-37	0
+105	-37	0
+106	-37	0
+107	-37	0
+108	-37	0
+109	-37	0
+110	-37	0
+111	-37	0
+112	-37	0
+113	-37	0
+114	-37	0
+115	-37	0
+116	-37	0
+117	-37	0
+118	-37	0
+119	-37	0
+120	-37	0
+121	-37	0
+122	-37	0
+123	-37	0
+124	-37	0
+125	-37	0
+126	-37	0
+127	-37	0
+128	-37	0
+129	-37	0
+130	-37	0
+131	-37	0
+132	-37	0
+133	-37	0
+134	-37	0
+135	-37	0
+136	-37	0
+137	-37	0
+138	-37	0
+139	-37	0
+140	-37	0
+141	-37	0
+142	-37	0
+143	-37	0
+144	-37	0
+145	-37	0
+146	-37	0
+147	-37	0
+148	-37	0
+149	-37	0
+150	-37	0
+151	-37	0
+152	-37	0
+153	-37	0
+154	-37	0
+155	-37	0
+156	-37	0
+157	-37	0
+158	-37	0
+159	-37	0
+160	-37	0
+161	-37	0
+162	-37	0
+163	-37	0
+164	-37	0
+165	-37	0
+166	-37	0
+167	-37	0
+168	-37	0
+169	-37	0
+170	-37	0
+171	-37	0
+172	-37	0
+173	-37	0
+174	-37	0
+175	-37	0
+176	-37	0
+177	-37	0
+178	-37	0
+179	-37	0
+180	-37	0
+181	-37	0
+182	-37	0
+183	-37	0
+184	-37	0
+185	-37	0
+186	-37	0
+187	-37	0
+188	-37	0
+189	-37	0
+190	-37	0
+191	-37	0
+192	-37	0
+193	-37	0
+194	-37	0
+195	-37	0
+196	-37	0
+197	-37	0
+198	-37	0
+199	-37	0
+200	-37	0
+201	-37	0
+202	-37	0
+203	-37	0
+204	-37	0
+205	-37	0
+206	-37	0
+207	-37	0
+208	-37	0
+209	-37	0
+210	-37	0
+211	-37	0
+212	-37	0
+213	-37	0
+214	-37	0
+215	-37	0
+216	-37	0
+217	-37	0
+218	-37	0
+219	-37	0
+220	-37	0
+221	-37	0
+222	-37	0
+223	-37	0
+224	-37	0
+225	-37	0
+226	-37	0
+227	-37	0
+228	-37	0
+229	-37	0
+230	-37	0
+231	-37	0
+232	-37	0
+233	-37	0
+234	-37	0
+235	-37	0
+236	-37	0
+237	-37	0
+238	-37	0
+239	-37	0
+240	-37	0
+241	-37	0
+242	-37	0
+243	-37	0
+244	-37	0
+245	-37	0
+246	-37	0
+247	-37	0
+248	-37	0
+249	-37	0
+250	-37	0
+251	-37	0
+252	-37	0
+253	-37	0
+254	-37	0
+255	-37	0
+256	-37	0
+257	-37	0
+258	-37	0
+259	-37	0
+260	-37	0
+261	-37	0
+262	-37	0
+263	-37	0
+264	-37	0
+265	-37	0
+266	-37	0
+267	-37	0
+268	-37	0
+269	-37	0
+270	-37	0
+271	-37	0
+272	-37	0
+273	-37	0
+274	-37	0
+275	-37	0
+276	-37	0
+277	-37	0
+278	-37	0
+279	-37	0
+280	-37	0
+281	-37	0
+282	-37	0
+283	-37	0
+284	-37	0
+285	-37	0
+286	-37	0
+287	-37	0
+288	-37	0
+289	-37	0
+290	-37	0
+291	-37	0
+292	-37	0
+293	-37	0
+294	-37	0
+295	-37	0
+296	-37	0
+297	-37	0
+298	-37	0
+299	-37	0
+300	-37	0
+301	-37	0
+302	-37	0
+303	-37	0
+304	-37	0
+305	-37	0
+306	-37	0
+307	-37	0
+308	-37	0
+309	-37	0
+310	-37	0
+311	-37	0
+312	-37	0
+313	-37	0
+314	-37	0
+315	-37	0
+316	-37	0
+317	-37	0
+318	-37	0
+319	-37	0
+320	-37	0
+321	-37	0
+322	-37	0
+323	-37	0
+324	-37	0
+325	-37	0
+326	-37	0
+327	-37	0
+328	-37	0
+329	-37	0
+330	-37	0
+331	-37	0
+332	-37	0
+333	-37	0
+334	-37	0
+335	-37	0
+336	-37	0
+337	-37	0
+338	-37	0
+339	-37	0
+340	-37	0
+341	-37	0
+342	-37	0
+343	-37	0
+344	-37	0
+345	-37	0
+346	-37	0
+347	-37	0
+348	-37	0
+349	-37	0
+350	-37	0
+351	-37	0
+352	-37	0
+353	-37	0
+354	-37	0
+355	-37	0
+356	-37	0
+357	-37	0
+358	-37	0
+359	-37	0
+360	-37	0
+0	-36.5	0
+1	-36.5	0
+2	-36.5	0
+3	-36.5	0
+4	-36.5	0
+5	-36.5	0
+6	-36.5	0
+7	-36.5	0
+8	-36.5	0
+9	-36.5	0
+10	-36.5	0
+11	-36.5	0
+12	-36.5	0
+13	-36.5	0
+14	-36.5	0
+15	-36.5	0
+16	-36.5	0
+17	-36.5	0
+18	-36.5	0
+19	-36.5	0
+20	-36.5	0
+21	-36.5	0
+22	-36.5	0
+23	-36.5	0
+24	-36.5	0
+25	-36.5	0
+26	-36.5	0
+27	-36.5	0
+28	-36.5	0
+29	-36.5	0
+30	-36.5	0
+31	-36.5	0
+32	-36.5	0
+33	-36.5	0
+34	-36.5	0
+35	-36.5	0
+36	-36.5	0
+37	-36.5	0
+38	-36.5	0
+39	-36.5	0
+40	-36.5	0
+41	-36.5	0
+42	-36.5	0
+43	-36.5	0
+44	-36.5	0
+45	-36.5	0
+46	-36.5	0
+47	-36.5	0
+48	-36.5	0
+49	-36.5	0
+50	-36.5	0
+51	-36.5	0
+52	-36.5	0
+53	-36.5	0
+54	-36.5	0
+55	-36.5	0
+56	-36.5	0
+57	-36.5	0
+58	-36.5	0
+59	-36.5	0
+60	-36.5	0
+61	-36.5	0
+62	-36.5	0
+63	-36.5	0
+64	-36.5	0
+65	-36.5	0
+66	-36.5	0
+67	-36.5	0
+68	-36.5	0
+69	-36.5	0
+70	-36.5	0
+71	-36.5	0
+72	-36.5	0
+73	-36.5	0
+74	-36.5	0
+75	-36.5	0
+76	-36.5	0
+77	-36.5	0
+78	-36.5	0
+79	-36.5	0
+80	-36.5	0
+81	-36.5	0
+82	-36.5	0
+83	-36.5	0
+84	-36.5	0
+85	-36.5	0
+86	-36.5	0
+87	-36.5	0
+88	-36.5	0
+89	-36.5	0
+90	-36.5	0
+91	-36.5	0
+92	-36.5	0
+93	-36.5	0
+94	-36.5	0
+95	-36.5	0
+96	-36.5	0
+97	-36.5	0
+98	-36.5	0
+99	-36.5	0
+100	-36.5	0
+101	-36.5	0
+102	-36.5	0
+103	-36.5	0
+104	-36.5	0
+105	-36.5	0
+106	-36.5	0
+107	-36.5	0
+108	-36.5	0
+109	-36.5	0
+110	-36.5	0
+111	-36.5	0
+112	-36.5	0
+113	-36.5	0
+114	-36.5	0
+115	-36.5	0
+116	-36.5	0
+117	-36.5	0
+118	-36.5	0
+119	-36.5	0
+120	-36.5	0
+121	-36.5	0
+122	-36.5	0
+123	-36.5	0
+124	-36.5	0
+125	-36.5	0
+126	-36.5	0
+127	-36.5	0
+128	-36.5	0
+129	-36.5	0
+130	-36.5	0
+131	-36.5	0
+132	-36.5	0
+133	-36.5	0
+134	-36.5	0
+135	-36.5	0
+136	-36.5	0
+137	-36.5	0
+138	-36.5	0
+139	-36.5	0
+140	-36.5	0
+141	-36.5	0
+142	-36.5	0
+143	-36.5	0
+144	-36.5	0
+145	-36.5	0
+146	-36.5	0
+147	-36.5	0
+148	-36.5	0
+149	-36.5	0
+150	-36.5	0
+151	-36.5	0
+152	-36.5	0
+153	-36.5	0
+154	-36.5	0
+155	-36.5	0
+156	-36.5	0
+157	-36.5	0
+158	-36.5	0
+159	-36.5	0
+160	-36.5	0
+161	-36.5	0
+162	-36.5	0
+163	-36.5	0
+164	-36.5	0
+165	-36.5	0
+166	-36.5	0
+167	-36.5	0
+168	-36.5	0
+169	-36.5	0
+170	-36.5	0
+171	-36.5	0
+172	-36.5	0
+173	-36.5	0
+174	-36.5	0
+175	-36.5	0
+176	-36.5	0
+177	-36.5	0
+178	-36.5	0
+179	-36.5	0
+180	-36.5	0
+181	-36.5	0
+182	-36.5	0
+183	-36.5	0
+184	-36.5	0
+185	-36.5	0
+186	-36.5	0
+187	-36.5	0
+188	-36.5	0
+189	-36.5	0
+190	-36.5	0
+191	-36.5	0
+192	-36.5	0
+193	-36.5	0
+194	-36.5	0
+195	-36.5	0
+196	-36.5	0
+197	-36.5	0
+198	-36.5	0
+199	-36.5	0
+200	-36.5	0
+201	-36.5	0
+202	-36.5	0
+203	-36.5	0
+204	-36.5	0
+205	-36.5	0
+206	-36.5	0
+207	-36.5	0
+208	-36.5	0
+209	-36.5	0
+210	-36.5	0
+211	-36.5	0
+212	-36.5	0
+213	-36.5	0
+214	-36.5	0
+215	-36.5	0
+216	-36.5	0
+217	-36.5	0
+218	-36.5	0
+219	-36.5	0
+220	-36.5	0
+221	-36.5	0
+222	-36.5	0
+223	-36.5	0
+224	-36.5	0
+225	-36.5	0
+226	-36.5	0
+227	-36.5	0
+228	-36.5	0
+229	-36.5	0
+230	-36.5	0
+231	-36.5	0
+232	-36.5	0
+233	-36.5	0
+234	-36.5	0
+235	-36.5	0
+236	-36.5	0
+237	-36.5	0
+238	-36.5	0
+239	-36.5	0
+240	-36.5	0
+241	-36.5	0
+242	-36.5	0
+243	-36.5	0
+244	-36.5	0
+245	-36.5	0
+246	-36.5	0
+247	-36.5	0
+248	-36.5	0
+249	-36.5	0
+250	-36.5	0
+251	-36.5	0
+252	-36.5	0
+253	-36.5	0
+254	-36.5	0
+255	-36.5	0
+256	-36.5	0
+257	-36.5	0
+258	-36.5	0
+259	-36.5	0
+260	-36.5	0
+261	-36.5	0
+262	-36.5	0
+263	-36.5	0
+264	-36.5	0
+265	-36.5	0
+266	-36.5	0
+267	-36.5	0
+268	-36.5	0
+269	-36.5	0
+270	-36.5	0
+271	-36.5	0
+272	-36.5	0
+273	-36.5	0
+274	-36.5	0
+275	-36.5	0
+276	-36.5	0
+277	-36.5	0
+278	-36.5	0
+279	-36.5	0
+280	-36.5	0
+281	-36.5	0
+282	-36.5	0
+283	-36.5	0
+284	-36.5	0
+285	-36.5	0
+286	-36.5	0
+287	-36.5	0
+288	-36.5	0
+289	-36.5	0
+290	-36.5	0
+291	-36.5	0
+292	-36.5	0
+293	-36.5	0
+294	-36.5	0
+295	-36.5	0
+296	-36.5	0
+297	-36.5	0
+298	-36.5	0
+299	-36.5	0
+300	-36.5	0
+301	-36.5	0
+302	-36.5	0
+303	-36.5	0
+304	-36.5	0
+305	-36.5	0
+306	-36.5	0
+307	-36.5	0
+308	-36.5	0
+309	-36.5	0
+310	-36.5	0
+311	-36.5	0
+312	-36.5	0
+313	-36.5	0
+314	-36.5	0
+315	-36.5	0
+316	-36.5	0
+317	-36.5	0
+318	-36.5	0
+319	-36.5	0
+320	-36.5	0
+321	-36.5	0
+322	-36.5	0
+323	-36.5	0
+324	-36.5	0
+325	-36.5	0
+326	-36.5	0
+327	-36.5	0
+328	-36.5	0
+329	-36.5	0
+330	-36.5	0
+331	-36.5	0
+332	-36.5	0
+333	-36.5	0
+334	-36.5	0
+335	-36.5	0
+336	-36.5	0
+337	-36.5	0
+338	-36.5	0
+339	-36.5	0
+340	-36.5	0
+341	-36.5	0
+342	-36.5	0
+343	-36.5	0
+344	-36.5	0
+345	-36.5	0
+346	-36.5	0
+347	-36.5	0
+348	-36.5	0
+349	-36.5	0
+350	-36.5	0
+351	-36.5	0
+352	-36.5	0
+353	-36.5	0
+354	-36.5	0
+355	-36.5	0
+356	-36.5	0
+357	-36.5	0
+358	-36.5	0
+359	-36.5	0
+360	-36.5	0
+0	-36	0
+1	-36	0
+2	-36	0
+3	-36	0
+4	-36	0
+5	-36	0
+6	-36	0
+7	-36	0
+8	-36	0
+9	-36	0
+10	-36	0
+11	-36	0
+12	-36	0
+13	-36	0
+14	-36	0
+15	-36	0
+16	-36	0
+17	-36	0
+18	-36	0
+19	-36	0
+20	-36	0
+21	-36	0
+22	-36	0
+23	-36	0
+24	-36	0
+25	-36	0
+26	-36	0
+27	-36	0
+28	-36	0
+29	-36	0
+30	-36	0
+31	-36	0
+32	-36	0
+33	-36	0
+34	-36	0
+35	-36	0
+36	-36	0
+37	-36	0
+38	-36	0
+39	-36	0
+40	-36	0
+41	-36	0
+42	-36	0
+43	-36	0
+44	-36	0
+45	-36	0
+46	-36	0
+47	-36	0
+48	-36	0
+49	-36	0
+50	-36	0
+51	-36	0
+52	-36	0
+53	-36	0
+54	-36	0
+55	-36	0
+56	-36	0
+57	-36	0
+58	-36	0
+59	-36	0
+60	-36	0
+61	-36	0
+62	-36	0
+63	-36	0
+64	-36	0
+65	-36	0
+66	-36	0
+67	-36	0
+68	-36	0
+69	-36	0
+70	-36	0
+71	-36	0
+72	-36	0
+73	-36	0
+74	-36	0
+75	-36	0
+76	-36	0
+77	-36	0
+78	-36	0
+79	-36	0
+80	-36	0
+81	-36	0
+82	-36	0
+83	-36	0
+84	-36	0
+85	-36	0
+86	-36	0
+87	-36	0
+88	-36	0
+89	-36	0
+90	-36	0
+91	-36	0
+92	-36	0
+93	-36	0
+94	-36	0
+95	-36	0
+96	-36	0
+97	-36	0
+98	-36	0
+99	-36	0
+100	-36	0
+101	-36	0
+102	-36	0
+103	-36	0
+104	-36	0
+105	-36	0
+106	-36	0
+107	-36	0
+108	-36	0
+109	-36	0
+110	-36	0
+111	-36	0
+112	-36	0
+113	-36	0
+114	-36	0
+115	-36	0
+116	-36	0
+117	-36	0
+118	-36	0
+119	-36	0
+120	-36	0
+121	-36	0
+122	-36	0
+123	-36	0
+124	-36	0
+125	-36	0
+126	-36	0
+127	-36	0
+128	-36	0
+129	-36	0
+130	-36	0
+131	-36	0
+132	-36	0
+133	-36	0
+134	-36	0
+135	-36	0
+136	-36	0
+137	-36	0
+138	-36	0
+139	-36	0
+140	-36	0
+141	-36	0
+142	-36	0
+143	-36	0
+144	-36	0
+145	-36	0
+146	-36	0
+147	-36	0
+148	-36	0
+149	-36	0
+150	-36	0
+151	-36	0
+152	-36	0
+153	-36	0
+154	-36	0
+155	-36	0
+156	-36	0
+157	-36	0
+158	-36	0
+159	-36	0
+160	-36	0
+161	-36	0
+162	-36	0
+163	-36	0
+164	-36	0
+165	-36	0
+166	-36	0
+167	-36	0
+168	-36	0
+169	-36	0
+170	-36	0
+171	-36	0
+172	-36	0
+173	-36	0
+174	-36	0
+175	-36	0
+176	-36	0
+177	-36	0
+178	-36	0
+179	-36	0
+180	-36	0
+181	-36	0
+182	-36	0
+183	-36	0
+184	-36	0
+185	-36	0
+186	-36	0
+187	-36	0
+188	-36	0
+189	-36	0
+190	-36	0
+191	-36	0
+192	-36	0
+193	-36	0
+194	-36	0
+195	-36	0
+196	-36	0
+197	-36	0
+198	-36	0
+199	-36	0
+200	-36	0
+201	-36	0
+202	-36	0
+203	-36	0
+204	-36	0
+205	-36	0
+206	-36	0
+207	-36	0
+208	-36	0
+209	-36	0
+210	-36	0
+211	-36	0
+212	-36	0
+213	-36	0
+214	-36	0
+215	-36	0
+216	-36	0
+217	-36	0
+218	-36	0
+219	-36	0
+220	-36	0
+221	-36	0
+222	-36	0
+223	-36	0
+224	-36	0
+225	-36	0
+226	-36	0
+227	-36	0
+228	-36	0
+229	-36	0
+230	-36	0
+231	-36	0
+232	-36	0
+233	-36	0
+234	-36	0
+235	-36	0
+236	-36	0
+237	-36	0
+238	-36	0
+239	-36	0
+240	-36	0
+241	-36	0
+242	-36	0
+243	-36	0
+244	-36	0
+245	-36	0
+246	-36	0
+247	-36	0
+248	-36	0
+249	-36	0
+250	-36	0
+251	-36	0
+252	-36	0
+253	-36	0
+254	-36	0
+255	-36	0
+256	-36	0
+257	-36	0
+258	-36	0
+259	-36	0
+260	-36	0
+261	-36	0
+262	-36	0
+263	-36	0
+264	-36	0
+265	-36	0
+266	-36	0
+267	-36	0
+268	-36	0
+269	-36	0
+270	-36	0
+271	-36	0
+272	-36	0
+273	-36	0
+274	-36	0
+275	-36	0
+276	-36	0
+277	-36	0
+278	-36	0
+279	-36	0
+280	-36	0
+281	-36	0
+282	-36	0
+283	-36	0
+284	-36	0
+285	-36	0
+286	-36	0
+287	-36	0
+288	-36	0
+289	-36	0
+290	-36	0
+291	-36	0
+292	-36	0
+293	-36	0
+294	-36	0
+295	-36	0
+296	-36	0
+297	-36	0
+298	-36	0
+299	-36	0
+300	-36	0
+301	-36	0
+302	-36	0
+303	-36	0
+304	-36	0
+305	-36	0
+306	-36	0
+307	-36	0
+308	-36	0
+309	-36	0
+310	-36	0
+311	-36	0
+312	-36	0
+313	-36	0
+314	-36	0
+315	-36	0
+316	-36	0
+317	-36	0
+318	-36	0
+319	-36	0
+320	-36	0
+321	-36	0
+322	-36	0
+323	-36	0
+324	-36	0
+325	-36	0
+326	-36	0
+327	-36	0
+328	-36	0
+329	-36	0
+330	-36	0
+331	-36	0
+332	-36	0
+333	-36	0
+334	-36	0
+335	-36	0
+336	-36	0
+337	-36	0
+338	-36	0
+339	-36	0
+340	-36	0
+341	-36	0
+342	-36	0
+343	-36	0
+344	-36	0
+345	-36	0
+346	-36	0
+347	-36	0
+348	-36	0
+349	-36	0
+350	-36	0
+351	-36	0
+352	-36	0
+353	-36	0
+354	-36	0
+355	-36	0
+356	-36	0
+357	-36	0
+358	-36	0
+359	-36	0
+360	-36	0
+0	-35.5	0
+1	-35.5	0
+2	-35.5	0
+3	-35.5	0
+4	-35.5	0
+5	-35.5	0
+6	-35.5	0
+7	-35.5	0
+8	-35.5	0
+9	-35.5	0
+10	-35.5	0
+11	-35.5	0
+12	-35.5	0
+13	-35.5	0
+14	-35.5	0
+15	-35.5	0
+16	-35.5	0
+17	-35.5	0
+18	-35.5	0
+19	-35.5	0
+20	-35.5	0
+21	-35.5	0
+22	-35.5	0
+23	-35.5	0
+24	-35.5	0
+25	-35.5	0
+26	-35.5	0
+27	-35.5	0
+28	-35.5	0
+29	-35.5	0
+30	-35.5	0
+31	-35.5	0
+32	-35.5	0
+33	-35.5	0
+34	-35.5	0
+35	-35.5	0
+36	-35.5	0
+37	-35.5	0
+38	-35.5	0
+39	-35.5	0
+40	-35.5	0
+41	-35.5	0
+42	-35.5	0
+43	-35.5	0
+44	-35.5	0
+45	-35.5	0
+46	-35.5	0
+47	-35.5	0
+48	-35.5	0
+49	-35.5	0
+50	-35.5	0
+51	-35.5	0
+52	-35.5	0
+53	-35.5	0
+54	-35.5	0
+55	-35.5	0
+56	-35.5	0
+57	-35.5	0
+58	-35.5	0
+59	-35.5	0
+60	-35.5	0
+61	-35.5	0
+62	-35.5	0
+63	-35.5	0
+64	-35.5	0
+65	-35.5	0
+66	-35.5	0
+67	-35.5	0
+68	-35.5	0
+69	-35.5	0
+70	-35.5	0
+71	-35.5	0
+72	-35.5	0
+73	-35.5	0
+74	-35.5	0
+75	-35.5	0
+76	-35.5	0
+77	-35.5	0
+78	-35.5	0
+79	-35.5	0
+80	-35.5	0
+81	-35.5	0
+82	-35.5	0
+83	-35.5	0
+84	-35.5	0
+85	-35.5	0
+86	-35.5	0
+87	-35.5	0
+88	-35.5	0
+89	-35.5	0
+90	-35.5	0
+91	-35.5	0
+92	-35.5	0
+93	-35.5	0
+94	-35.5	0
+95	-35.5	0
+96	-35.5	0
+97	-35.5	0
+98	-35.5	0
+99	-35.5	0
+100	-35.5	0
+101	-35.5	0
+102	-35.5	0
+103	-35.5	0
+104	-35.5	0
+105	-35.5	0
+106	-35.5	0
+107	-35.5	0
+108	-35.5	0
+109	-35.5	0
+110	-35.5	0
+111	-35.5	0
+112	-35.5	0
+113	-35.5	0
+114	-35.5	0
+115	-35.5	0
+116	-35.5	0
+117	-35.5	0
+118	-35.5	0
+119	-35.5	0
+120	-35.5	0
+121	-35.5	0
+122	-35.5	0
+123	-35.5	0
+124	-35.5	0
+125	-35.5	0
+126	-35.5	0
+127	-35.5	0
+128	-35.5	0
+129	-35.5	0
+130	-35.5	0
+131	-35.5	0
+132	-35.5	0
+133	-35.5	0
+134	-35.5	0
+135	-35.5	0
+136	-35.5	0
+137	-35.5	0
+138	-35.5	0
+139	-35.5	0
+140	-35.5	0
+141	-35.5	0
+142	-35.5	0
+143	-35.5	0
+144	-35.5	0
+145	-35.5	0
+146	-35.5	0
+147	-35.5	0
+148	-35.5	0
+149	-35.5	0
+150	-35.5	0
+151	-35.5	0
+152	-35.5	0
+153	-35.5	0
+154	-35.5	0
+155	-35.5	0
+156	-35.5	0
+157	-35.5	0
+158	-35.5	0
+159	-35.5	0
+160	-35.5	0
+161	-35.5	0
+162	-35.5	0
+163	-35.5	0
+164	-35.5	0
+165	-35.5	0
+166	-35.5	0
+167	-35.5	0
+168	-35.5	0
+169	-35.5	0
+170	-35.5	0
+171	-35.5	0
+172	-35.5	0
+173	-35.5	0
+174	-35.5	0
+175	-35.5	0
+176	-35.5	0
+177	-35.5	0
+178	-35.5	0
+179	-35.5	0
+180	-35.5	0
+181	-35.5	0
+182	-35.5	0
+183	-35.5	0
+184	-35.5	0
+185	-35.5	0
+186	-35.5	0
+187	-35.5	0
+188	-35.5	0
+189	-35.5	0
+190	-35.5	0
+191	-35.5	0
+192	-35.5	0
+193	-35.5	0
+194	-35.5	0
+195	-35.5	0
+196	-35.5	0
+197	-35.5	0
+198	-35.5	0
+199	-35.5	0
+200	-35.5	0
+201	-35.5	0
+202	-35.5	0
+203	-35.5	0
+204	-35.5	0
+205	-35.5	0
+206	-35.5	0
+207	-35.5	0
+208	-35.5	0
+209	-35.5	0
+210	-35.5	0
+211	-35.5	0
+212	-35.5	0
+213	-35.5	0
+214	-35.5	0
+215	-35.5	0
+216	-35.5	0
+217	-35.5	0
+218	-35.5	0
+219	-35.5	0
+220	-35.5	0
+221	-35.5	0
+222	-35.5	0
+223	-35.5	0
+224	-35.5	0
+225	-35.5	0
+226	-35.5	0
+227	-35.5	0
+228	-35.5	0
+229	-35.5	0
+230	-35.5	0
+231	-35.5	0
+232	-35.5	0
+233	-35.5	0
+234	-35.5	0
+235	-35.5	0
+236	-35.5	0
+237	-35.5	0
+238	-35.5	0
+239	-35.5	0
+240	-35.5	0
+241	-35.5	0
+242	-35.5	0
+243	-35.5	0
+244	-35.5	0
+245	-35.5	0
+246	-35.5	0
+247	-35.5	0
+248	-35.5	0
+249	-35.5	0
+250	-35.5	0
+251	-35.5	0
+252	-35.5	0
+253	-35.5	0
+254	-35.5	0
+255	-35.5	0
+256	-35.5	0
+257	-35.5	0
+258	-35.5	0
+259	-35.5	0
+260	-35.5	0
+261	-35.5	0
+262	-35.5	0
+263	-35.5	0
+264	-35.5	0
+265	-35.5	0
+266	-35.5	0
+267	-35.5	0
+268	-35.5	0
+269	-35.5	0
+270	-35.5	0
+271	-35.5	0
+272	-35.5	0
+273	-35.5	0
+274	-35.5	0
+275	-35.5	0
+276	-35.5	0
+277	-35.5	0
+278	-35.5	0
+279	-35.5	0
+280	-35.5	0
+281	-35.5	0
+282	-35.5	0
+283	-35.5	0
+284	-35.5	0
+285	-35.5	0
+286	-35.5	0
+287	-35.5	0
+288	-35.5	0
+289	-35.5	0
+290	-35.5	0
+291	-35.5	0
+292	-35.5	0
+293	-35.5	0
+294	-35.5	0
+295	-35.5	0
+296	-35.5	0
+297	-35.5	0
+298	-35.5	0
+299	-35.5	0
+300	-35.5	0
+301	-35.5	0
+302	-35.5	0
+303	-35.5	0
+304	-35.5	0
+305	-35.5	0
+306	-35.5	0
+307	-35.5	0
+308	-35.5	0
+309	-35.5	0
+310	-35.5	0
+311	-35.5	0
+312	-35.5	0
+313	-35.5	0
+314	-35.5	0
+315	-35.5	0
+316	-35.5	0
+317	-35.5	0
+318	-35.5	0
+319	-35.5	0
+320	-35.5	0
+321	-35.5	0
+322	-35.5	0
+323	-35.5	0
+324	-35.5	0
+325	-35.5	0
+326	-35.5	0
+327	-35.5	0
+328	-35.5	0
+329	-35.5	0
+330	-35.5	0
+331	-35.5	0
+332	-35.5	0
+333	-35.5	0
+334	-35.5	0
+335	-35.5	0
+336	-35.5	0
+337	-35.5	0
+338	-35.5	0
+339	-35.5	0
+340	-35.5	0
+341	-35.5	0
+342	-35.5	0
+343	-35.5	0
+344	-35.5	0
+345	-35.5	0
+346	-35.5	0
+347	-35.5	0
+348	-35.5	0
+349	-35.5	0
+350	-35.5	0
+351	-35.5	0
+352	-35.5	0
+353	-35.5	0
+354	-35.5	0
+355	-35.5	0
+356	-35.5	0
+357	-35.5	0
+358	-35.5	0
+359	-35.5	0
+360	-35.5	0
+0	-35	0
+1	-35	0
+2	-35	0
+3	-35	0
+4	-35	0
+5	-35	0
+6	-35	0
+7	-35	0
+8	-35	0
+9	-35	0
+10	-35	0
+11	-35	0
+12	-35	0
+13	-35	0
+14	-35	0
+15	-35	0
+16	-35	0
+17	-35	0
+18	-35	0
+19	-35	0
+20	-35	0
+21	-35	0
+22	-35	0
+23	-35	0
+24	-35	0
+25	-35	0
+26	-35	0
+27	-35	0
+28	-35	0
+29	-35	0
+30	-35	0
+31	-35	0
+32	-35	0
+33	-35	0
+34	-35	0
+35	-35	0
+36	-35	0
+37	-35	0
+38	-35	0
+39	-35	0
+40	-35	0
+41	-35	0
+42	-35	0
+43	-35	0
+44	-35	0
+45	-35	0
+46	-35	0
+47	-35	0
+48	-35	0
+49	-35	0
+50	-35	0
+51	-35	0
+52	-35	0
+53	-35	0
+54	-35	0
+55	-35	0
+56	-35	0
+57	-35	0
+58	-35	0
+59	-35	0
+60	-35	0
+61	-35	0
+62	-35	0
+63	-35	0
+64	-35	0
+65	-35	0
+66	-35	0
+67	-35	0
+68	-35	0
+69	-35	0
+70	-35	0
+71	-35	0
+72	-35	0
+73	-35	0
+74	-35	0
+75	-35	0
+76	-35	0
+77	-35	0
+78	-35	0
+79	-35	0
+80	-35	0
+81	-35	0
+82	-35	0
+83	-35	0
+84	-35	0
+85	-35	0
+86	-35	0
+87	-35	0
+88	-35	0
+89	-35	0
+90	-35	0
+91	-35	0
+92	-35	0
+93	-35	0
+94	-35	0
+95	-35	0
+96	-35	0
+97	-35	0
+98	-35	0
+99	-35	0
+100	-35	0
+101	-35	0
+102	-35	0
+103	-35	0
+104	-35	0
+105	-35	0
+106	-35	0
+107	-35	0
+108	-35	0
+109	-35	0
+110	-35	0
+111	-35	0
+112	-35	0
+113	-35	0
+114	-35	0
+115	-35	0
+116	-35	0
+117	-35	0
+118	-35	0
+119	-35	0
+120	-35	0
+121	-35	0
+122	-35	0
+123	-35	0
+124	-35	0
+125	-35	0
+126	-35	0
+127	-35	0
+128	-35	0
+129	-35	0
+130	-35	0
+131	-35	0
+132	-35	0
+133	-35	0
+134	-35	0
+135	-35	0
+136	-35	0
+137	-35	0
+138	-35	0
+139	-35	0
+140	-35	0
+141	-35	0
+142	-35	0
+143	-35	0
+144	-35	0
+145	-35	0
+146	-35	0
+147	-35	0
+148	-35	0
+149	-35	0
+150	-35	0
+151	-35	0
+152	-35	0
+153	-35	0
+154	-35	0
+155	-35	0
+156	-35	0
+157	-35	0
+158	-35	0
+159	-35	0
+160	-35	0
+161	-35	0
+162	-35	0
+163	-35	0
+164	-35	0
+165	-35	0
+166	-35	0
+167	-35	0
+168	-35	0
+169	-35	0
+170	-35	0
+171	-35	0
+172	-35	0
+173	-35	0
+174	-35	0
+175	-35	0
+176	-35	0
+177	-35	0
+178	-35	0
+179	-35	0
+180	-35	0
+181	-35	0
+182	-35	0
+183	-35	0
+184	-35	0
+185	-35	0
+186	-35	0
+187	-35	0
+188	-35	0
+189	-35	0
+190	-35	0
+191	-35	0
+192	-35	0
+193	-35	0
+194	-35	0
+195	-35	0
+196	-35	0
+197	-35	0
+198	-35	0
+199	-35	0
+200	-35	0
+201	-35	0
+202	-35	0
+203	-35	0
+204	-35	0
+205	-35	0
+206	-35	0
+207	-35	0
+208	-35	0
+209	-35	0
+210	-35	0
+211	-35	0
+212	-35	0
+213	-35	0
+214	-35	0
+215	-35	0
+216	-35	0
+217	-35	0
+218	-35	0
+219	-35	0
+220	-35	0
+221	-35	0
+222	-35	0
+223	-35	0
+224	-35	0
+225	-35	0
+226	-35	0
+227	-35	0
+228	-35	0
+229	-35	0
+230	-35	0
+231	-35	0
+232	-35	0
+233	-35	0
+234	-35	0
+235	-35	0
+236	-35	0
+237	-35	0
+238	-35	0
+239	-35	0
+240	-35	0
+241	-35	0
+242	-35	0
+243	-35	0
+244	-35	0
+245	-35	0
+246	-35	0
+247	-35	0
+248	-35	0
+249	-35	0
+250	-35	0
+251	-35	0
+252	-35	0
+253	-35	0
+254	-35	0
+255	-35	0
+256	-35	0
+257	-35	0
+258	-35	0
+259	-35	0
+260	-35	0
+261	-35	0
+262	-35	0
+263	-35	0
+264	-35	0
+265	-35	0
+266	-35	0
+267	-35	0
+268	-35	0
+269	-35	0
+270	-35	0
+271	-35	0
+272	-35	0
+273	-35	0
+274	-35	0
+275	-35	0
+276	-35	0
+277	-35	0
+278	-35	0
+279	-35	0
+280	-35	0
+281	-35	0
+282	-35	0
+283	-35	0
+284	-35	0
+285	-35	0
+286	-35	0
+287	-35	0
+288	-35	0
+289	-35	0
+290	-35	0
+291	-35	0
+292	-35	0
+293	-35	0
+294	-35	0
+295	-35	0
+296	-35	0
+297	-35	0
+298	-35	0
+299	-35	0
+300	-35	0
+301	-35	0
+302	-35	0
+303	-35	0
+304	-35	0
+305	-35	0
+306	-35	0
+307	-35	0
+308	-35	0
+309	-35	0
+310	-35	0
+311	-35	0
+312	-35	0
+313	-35	0
+314	-35	0
+315	-35	0
+316	-35	0
+317	-35	0
+318	-35	0
+319	-35	0
+320	-35	0
+321	-35	0
+322	-35	0
+323	-35	0
+324	-35	0
+325	-35	0
+326	-35	0
+327	-35	0
+328	-35	0
+329	-35	0
+330	-35	0
+331	-35	0
+332	-35	0
+333	-35	0
+334	-35	0
+335	-35	0
+336	-35	0
+337	-35	0
+338	-35	0
+339	-35	0
+340	-35	0
+341	-35	0
+342	-35	0
+343	-35	0
+344	-35	0
+345	-35	0
+346	-35	0
+347	-35	0
+348	-35	0
+349	-35	0
+350	-35	0
+351	-35	0
+352	-35	0
+353	-35	0
+354	-35	0
+355	-35	0
+356	-35	0
+357	-35	0
+358	-35	0
+359	-35	0
+360	-35	0
+0	-34.5	0
+1	-34.5	0
+2	-34.5	0
+3	-34.5	0
+4	-34.5	0
+5	-34.5	0
+6	-34.5	0
+7	-34.5	0
+8	-34.5	0
+9	-34.5	0
+10	-34.5	0
+11	-34.5	0
+12	-34.5	0
+13	-34.5	0
+14	-34.5	0
+15	-34.5	0
+16	-34.5	0
+17	-34.5	0
+18	-34.5	0
+19	-34.5	0
+20	-34.5	0
+21	-34.5	0
+22	-34.5	0
+23	-34.5	0
+24	-34.5	0
+25	-34.5	0
+26	-34.5	0
+27	-34.5	0
+28	-34.5	0
+29	-34.5	0
+30	-34.5	0
+31	-34.5	0
+32	-34.5	0
+33	-34.5	0
+34	-34.5	0
+35	-34.5	0
+36	-34.5	0
+37	-34.5	0
+38	-34.5	0
+39	-34.5	0
+40	-34.5	0
+41	-34.5	0
+42	-34.5	0
+43	-34.5	0
+44	-34.5	0
+45	-34.5	0
+46	-34.5	0
+47	-34.5	0
+48	-34.5	0
+49	-34.5	0
+50	-34.5	0
+51	-34.5	0
+52	-34.5	0
+53	-34.5	0
+54	-34.5	0
+55	-34.5	0
+56	-34.5	0
+57	-34.5	0
+58	-34.5	0
+59	-34.5	0
+60	-34.5	0
+61	-34.5	0
+62	-34.5	0
+63	-34.5	0
+64	-34.5	0
+65	-34.5	0
+66	-34.5	0
+67	-34.5	0
+68	-34.5	0
+69	-34.5	0
+70	-34.5	0
+71	-34.5	0
+72	-34.5	0
+73	-34.5	0
+74	-34.5	0
+75	-34.5	0
+76	-34.5	0
+77	-34.5	0
+78	-34.5	0
+79	-34.5	0
+80	-34.5	0
+81	-34.5	0
+82	-34.5	0
+83	-34.5	0
+84	-34.5	0
+85	-34.5	0
+86	-34.5	0
+87	-34.5	0
+88	-34.5	0
+89	-34.5	0
+90	-34.5	0
+91	-34.5	0
+92	-34.5	0
+93	-34.5	0
+94	-34.5	0
+95	-34.5	0
+96	-34.5	0
+97	-34.5	0
+98	-34.5	0
+99	-34.5	0
+100	-34.5	0
+101	-34.5	0
+102	-34.5	0
+103	-34.5	0
+104	-34.5	0
+105	-34.5	0
+106	-34.5	0
+107	-34.5	0
+108	-34.5	0
+109	-34.5	0
+110	-34.5	0
+111	-34.5	0
+112	-34.5	0
+113	-34.5	0
+114	-34.5	0
+115	-34.5	0
+116	-34.5	0
+117	-34.5	0
+118	-34.5	0
+119	-34.5	0
+120	-34.5	0
+121	-34.5	0
+122	-34.5	0
+123	-34.5	0
+124	-34.5	0
+125	-34.5	0
+126	-34.5	0
+127	-34.5	0
+128	-34.5	0
+129	-34.5	0
+130	-34.5	0
+131	-34.5	0
+132	-34.5	0
+133	-34.5	0
+134	-34.5	0
+135	-34.5	0
+136	-34.5	0
+137	-34.5	0
+138	-34.5	0
+139	-34.5	0
+140	-34.5	0
+141	-34.5	0
+142	-34.5	0
+143	-34.5	0
+144	-34.5	0
+145	-34.5	0
+146	-34.5	0
+147	-34.5	0
+148	-34.5	0
+149	-34.5	0
+150	-34.5	0
+151	-34.5	0
+152	-34.5	0
+153	-34.5	0
+154	-34.5	0
+155	-34.5	0
+156	-34.5	0
+157	-34.5	0
+158	-34.5	0
+159	-34.5	0
+160	-34.5	0
+161	-34.5	0
+162	-34.5	0
+163	-34.5	0
+164	-34.5	0
+165	-34.5	0
+166	-34.5	0
+167	-34.5	0
+168	-34.5	0
+169	-34.5	0
+170	-34.5	0
+171	-34.5	0
+172	-34.5	0
+173	-34.5	0
+174	-34.5	0
+175	-34.5	0
+176	-34.5	0
+177	-34.5	0
+178	-34.5	0
+179	-34.5	0
+180	-34.5	0
+181	-34.5	0
+182	-34.5	0
+183	-34.5	0
+184	-34.5	0
+185	-34.5	0
+186	-34.5	0
+187	-34.5	0
+188	-34.5	0
+189	-34.5	0
+190	-34.5	0
+191	-34.5	0
+192	-34.5	0
+193	-34.5	0
+194	-34.5	0
+195	-34.5	0
+196	-34.5	0
+197	-34.5	0
+198	-34.5	0
+199	-34.5	0
+200	-34.5	0
+201	-34.5	0
+202	-34.5	0
+203	-34.5	0
+204	-34.5	0
+205	-34.5	0
+206	-34.5	0
+207	-34.5	0
+208	-34.5	0
+209	-34.5	0
+210	-34.5	0
+211	-34.5	0
+212	-34.5	0
+213	-34.5	0
+214	-34.5	0
+215	-34.5	0
+216	-34.5	0
+217	-34.5	0
+218	-34.5	0
+219	-34.5	0
+220	-34.5	0
+221	-34.5	0
+222	-34.5	0
+223	-34.5	0
+224	-34.5	0
+225	-34.5	0
+226	-34.5	0
+227	-34.5	0
+228	-34.5	0
+229	-34.5	0
+230	-34.5	0
+231	-34.5	0
+232	-34.5	0
+233	-34.5	0
+234	-34.5	0
+235	-34.5	0
+236	-34.5	0
+237	-34.5	0
+238	-34.5	0
+239	-34.5	0
+240	-34.5	0
+241	-34.5	0
+242	-34.5	0
+243	-34.5	0
+244	-34.5	0
+245	-34.5	0
+246	-34.5	0
+247	-34.5	0
+248	-34.5	0
+249	-34.5	0
+250	-34.5	0
+251	-34.5	0
+252	-34.5	0
+253	-34.5	0
+254	-34.5	0
+255	-34.5	0
+256	-34.5	0
+257	-34.5	0
+258	-34.5	0
+259	-34.5	0
+260	-34.5	0
+261	-34.5	0
+262	-34.5	0
+263	-34.5	0
+264	-34.5	0
+265	-34.5	0
+266	-34.5	0
+267	-34.5	0
+268	-34.5	0
+269	-34.5	0
+270	-34.5	0
+271	-34.5	0
+272	-34.5	0
+273	-34.5	0
+274	-34.5	0
+275	-34.5	0
+276	-34.5	0
+277	-34.5	0
+278	-34.5	0
+279	-34.5	0
+280	-34.5	0
+281	-34.5	0
+282	-34.5	0
+283	-34.5	0
+284	-34.5	0
+285	-34.5	0
+286	-34.5	0
+287	-34.5	0
+288	-34.5	0
+289	-34.5	0
+290	-34.5	0
+291	-34.5	0
+292	-34.5	0
+293	-34.5	0
+294	-34.5	0
+295	-34.5	0
+296	-34.5	0
+297	-34.5	0
+298	-34.5	0
+299	-34.5	0
+300	-34.5	0
+301	-34.5	0
+302	-34.5	0
+303	-34.5	0
+304	-34.5	0
+305	-34.5	0
+306	-34.5	0
+307	-34.5	0
+308	-34.5	0
+309	-34.5	0
+310	-34.5	0
+311	-34.5	0
+312	-34.5	0
+313	-34.5	0
+314	-34.5	0
+315	-34.5	0
+316	-34.5	0
+317	-34.5	0
+318	-34.5	0
+319	-34.5	0
+320	-34.5	0
+321	-34.5	0
+322	-34.5	0
+323	-34.5	0
+324	-34.5	0
+325	-34.5	0
+326	-34.5	0
+327	-34.5	0
+328	-34.5	0
+329	-34.5	0
+330	-34.5	0
+331	-34.5	0
+332	-34.5	0
+333	-34.5	0
+334	-34.5	0
+335	-34.5	0
+336	-34.5	0
+337	-34.5	0
+338	-34.5	0
+339	-34.5	0
+340	-34.5	0
+341	-34.5	0
+342	-34.5	0
+343	-34.5	0
+344	-34.5	0
+345	-34.5	0
+346	-34.5	0
+347	-34.5	0
+348	-34.5	0
+349	-34.5	0
+350	-34.5	0
+351	-34.5	0
+352	-34.5	0
+353	-34.5	0
+354	-34.5	0
+355	-34.5	0
+356	-34.5	0
+357	-34.5	0
+358	-34.5	0
+359	-34.5	0
+360	-34.5	0
+0	-34	0
+1	-34	0
+2	-34	0
+3	-34	0
+4	-34	0
+5	-34	0
+6	-34	0
+7	-34	0
+8	-34	0
+9	-34	0
+10	-34	0
+11	-34	0
+12	-34	0
+13	-34	0
+14	-34	0
+15	-34	0
+16	-34	0
+17	-34	0
+18	-34	0
+19	-34	0
+20	-34	0
+21	-34	0
+22	-34	0
+23	-34	0
+24	-34	0
+25	-34	0
+26	-34	0
+27	-34	0
+28	-34	0
+29	-34	0
+30	-34	0
+31	-34	0
+32	-34	0
+33	-34	0
+34	-34	0
+35	-34	0
+36	-34	0
+37	-34	0
+38	-34	0
+39	-34	0
+40	-34	0
+41	-34	0
+42	-34	0
+43	-34	0
+44	-34	0
+45	-34	0
+46	-34	0
+47	-34	0
+48	-34	0
+49	-34	0
+50	-34	0
+51	-34	0
+52	-34	0
+53	-34	0
+54	-34	0
+55	-34	0
+56	-34	0
+57	-34	0
+58	-34	0
+59	-34	0
+60	-34	0
+61	-34	0
+62	-34	0
+63	-34	0
+64	-34	0
+65	-34	0
+66	-34	0
+67	-34	0
+68	-34	0
+69	-34	0
+70	-34	0
+71	-34	0
+72	-34	0
+73	-34	0
+74	-34	0
+75	-34	0
+76	-34	0
+77	-34	0
+78	-34	0
+79	-34	0
+80	-34	0
+81	-34	0
+82	-34	0
+83	-34	0
+84	-34	0
+85	-34	0
+86	-34	0
+87	-34	0
+88	-34	0
+89	-34	0
+90	-34	0
+91	-34	0
+92	-34	0
+93	-34	0
+94	-34	0
+95	-34	0
+96	-34	0
+97	-34	0
+98	-34	0
+99	-34	0
+100	-34	0
+101	-34	0
+102	-34	0
+103	-34	0
+104	-34	0
+105	-34	0
+106	-34	0
+107	-34	0
+108	-34	0
+109	-34	0
+110	-34	0
+111	-34	0
+112	-34	0
+113	-34	0
+114	-34	0
+115	-34	0
+116	-34	0
+117	-34	0
+118	-34	0
+119	-34	0
+120	-34	0
+121	-34	0
+122	-34	0
+123	-34	0
+124	-34	0
+125	-34	0
+126	-34	0
+127	-34	0
+128	-34	0
+129	-34	0
+130	-34	0
+131	-34	0
+132	-34	0
+133	-34	0
+134	-34	0
+135	-34	0
+136	-34	0
+137	-34	0
+138	-34	0
+139	-34	0
+140	-34	0
+141	-34	0
+142	-34	0
+143	-34	0
+144	-34	0
+145	-34	0
+146	-34	0
+147	-34	0
+148	-34	0
+149	-34	0
+150	-34	0
+151	-34	0
+152	-34	0
+153	-34	0
+154	-34	0
+155	-34	0
+156	-34	0
+157	-34	0
+158	-34	0
+159	-34	0
+160	-34	0
+161	-34	0
+162	-34	0
+163	-34	0
+164	-34	0
+165	-34	0
+166	-34	0
+167	-34	0
+168	-34	0
+169	-34	0
+170	-34	0
+171	-34	0
+172	-34	0
+173	-34	0
+174	-34	0
+175	-34	0
+176	-34	0
+177	-34	0
+178	-34	0
+179	-34	0
+180	-34	0
+181	-34	0
+182	-34	0
+183	-34	0
+184	-34	0
+185	-34	0
+186	-34	0
+187	-34	0
+188	-34	0
+189	-34	0
+190	-34	0
+191	-34	0
+192	-34	0
+193	-34	0
+194	-34	0
+195	-34	0
+196	-34	0
+197	-34	0
+198	-34	0
+199	-34	0
+200	-34	0
+201	-34	0
+202	-34	0
+203	-34	0
+204	-34	0
+205	-34	0
+206	-34	0
+207	-34	0
+208	-34	0
+209	-34	0
+210	-34	0
+211	-34	0
+212	-34	0
+213	-34	0
+214	-34	0
+215	-34	0
+216	-34	0
+217	-34	0
+218	-34	0
+219	-34	0
+220	-34	0
+221	-34	0
+222	-34	0
+223	-34	0
+224	-34	0
+225	-34	0
+226	-34	0
+227	-34	0
+228	-34	0
+229	-34	0
+230	-34	0
+231	-34	0
+232	-34	0
+233	-34	0
+234	-34	0
+235	-34	0
+236	-34	0
+237	-34	0
+238	-34	0
+239	-34	0
+240	-34	0
+241	-34	0
+242	-34	0
+243	-34	0
+244	-34	0
+245	-34	0
+246	-34	0
+247	-34	0
+248	-34	0
+249	-34	0
+250	-34	0
+251	-34	0
+252	-34	0
+253	-34	0
+254	-34	0
+255	-34	0
+256	-34	0
+257	-34	0
+258	-34	0
+259	-34	0
+260	-34	0
+261	-34	0
+262	-34	0
+263	-34	0
+264	-34	0
+265	-34	0
+266	-34	0
+267	-34	0
+268	-34	0
+269	-34	0
+270	-34	0
+271	-34	0
+272	-34	0
+273	-34	0
+274	-34	0
+275	-34	0
+276	-34	0
+277	-34	0
+278	-34	0
+279	-34	0
+280	-34	0
+281	-34	0
+282	-34	0
+283	-34	0
+284	-34	0
+285	-34	0
+286	-34	0
+287	-34	0
+288	-34	0
+289	-34	0
+290	-34	0
+291	-34	0
+292	-34	0
+293	-34	0
+294	-34	0
+295	-34	0
+296	-34	0
+297	-34	0
+298	-34	0
+299	-34	0
+300	-34	0
+301	-34	0
+302	-34	0
+303	-34	0
+304	-34	0
+305	-34	0
+306	-34	0
+307	-34	0
+308	-34	0
+309	-34	0
+310	-34	0
+311	-34	0
+312	-34	0
+313	-34	0
+314	-34	0
+315	-34	0
+316	-34	0
+317	-34	0
+318	-34	0
+319	-34	0
+320	-34	0
+321	-34	0
+322	-34	0
+323	-34	0
+324	-34	0
+325	-34	0
+326	-34	0
+327	-34	0
+328	-34	0
+329	-34	0
+330	-34	0
+331	-34	0
+332	-34	0
+333	-34	0
+334	-34	0
+335	-34	0
+336	-34	0
+337	-34	0
+338	-34	0
+339	-34	0
+340	-34	0
+341	-34	0
+342	-34	0
+343	-34	0
+344	-34	0
+345	-34	0
+346	-34	0
+347	-34	0
+348	-34	0
+349	-34	0
+350	-34	0
+351	-34	0
+352	-34	0
+353	-34	0
+354	-34	0
+355	-34	0
+356	-34	0
+357	-34	0
+358	-34	0
+359	-34	0
+360	-34	0
+0	-33.5	0
+1	-33.5	0
+2	-33.5	0
+3	-33.5	0
+4	-33.5	0
+5	-33.5	0
+6	-33.5	0
+7	-33.5	0
+8	-33.5	0
+9	-33.5	0
+10	-33.5	0
+11	-33.5	0
+12	-33.5	0
+13	-33.5	0
+14	-33.5	0
+15	-33.5	0
+16	-33.5	0
+17	-33.5	0
+18	-33.5	0
+19	-33.5	0
+20	-33.5	0
+21	-33.5	0
+22	-33.5	0
+23	-33.5	0
+24	-33.5	0
+25	-33.5	0
+26	-33.5	0
+27	-33.5	0
+28	-33.5	0
+29	-33.5	0
+30	-33.5	0
+31	-33.5	0
+32	-33.5	0
+33	-33.5	0
+34	-33.5	0
+35	-33.5	0
+36	-33.5	0
+37	-33.5	0
+38	-33.5	0
+39	-33.5	0
+40	-33.5	0
+41	-33.5	0
+42	-33.5	0
+43	-33.5	0
+44	-33.5	0
+45	-33.5	0
+46	-33.5	0
+47	-33.5	0
+48	-33.5	0
+49	-33.5	0
+50	-33.5	0
+51	-33.5	0
+52	-33.5	0
+53	-33.5	0
+54	-33.5	0
+55	-33.5	0
+56	-33.5	0
+57	-33.5	0
+58	-33.5	0
+59	-33.5	0
+60	-33.5	0
+61	-33.5	0
+62	-33.5	0
+63	-33.5	0
+64	-33.5	0
+65	-33.5	0
+66	-33.5	0
+67	-33.5	0
+68	-33.5	0
+69	-33.5	0
+70	-33.5	0
+71	-33.5	0
+72	-33.5	0
+73	-33.5	0
+74	-33.5	0
+75	-33.5	0
+76	-33.5	0
+77	-33.5	0
+78	-33.5	0
+79	-33.5	0
+80	-33.5	0
+81	-33.5	0
+82	-33.5	0
+83	-33.5	0
+84	-33.5	0
+85	-33.5	0
+86	-33.5	0
+87	-33.5	0
+88	-33.5	0
+89	-33.5	0
+90	-33.5	0
+91	-33.5	0
+92	-33.5	0
+93	-33.5	0
+94	-33.5	0
+95	-33.5	0
+96	-33.5	0
+97	-33.5	0
+98	-33.5	0
+99	-33.5	0
+100	-33.5	0
+101	-33.5	0
+102	-33.5	0
+103	-33.5	0
+104	-33.5	0
+105	-33.5	0
+106	-33.5	0
+107	-33.5	0
+108	-33.5	0
+109	-33.5	0
+110	-33.5	0
+111	-33.5	0
+112	-33.5	0
+113	-33.5	0
+114	-33.5	0
+115	-33.5	0
+116	-33.5	0
+117	-33.5	0
+118	-33.5	0
+119	-33.5	0
+120	-33.5	0
+121	-33.5	0
+122	-33.5	0
+123	-33.5	0
+124	-33.5	0
+125	-33.5	0
+126	-33.5	0
+127	-33.5	0
+128	-33.5	0
+129	-33.5	0
+130	-33.5	0
+131	-33.5	0
+132	-33.5	0
+133	-33.5	0
+134	-33.5	0
+135	-33.5	0
+136	-33.5	0
+137	-33.5	0
+138	-33.5	0
+139	-33.5	0
+140	-33.5	0
+141	-33.5	0
+142	-33.5	0
+143	-33.5	0
+144	-33.5	0
+145	-33.5	0
+146	-33.5	0
+147	-33.5	0
+148	-33.5	0
+149	-33.5	0
+150	-33.5	0
+151	-33.5	0
+152	-33.5	0
+153	-33.5	0
+154	-33.5	0
+155	-33.5	0
+156	-33.5	0
+157	-33.5	0
+158	-33.5	0
+159	-33.5	0
+160	-33.5	0
+161	-33.5	0
+162	-33.5	0
+163	-33.5	0
+164	-33.5	0
+165	-33.5	0
+166	-33.5	0
+167	-33.5	0
+168	-33.5	0
+169	-33.5	0
+170	-33.5	0
+171	-33.5	0
+172	-33.5	0
+173	-33.5	0
+174	-33.5	0
+175	-33.5	0
+176	-33.5	0
+177	-33.5	0
+178	-33.5	0
+179	-33.5	0
+180	-33.5	0
+181	-33.5	0
+182	-33.5	0
+183	-33.5	0
+184	-33.5	0
+185	-33.5	0
+186	-33.5	0
+187	-33.5	0
+188	-33.5	0
+189	-33.5	0
+190	-33.5	0
+191	-33.5	0
+192	-33.5	0
+193	-33.5	0
+194	-33.5	0
+195	-33.5	0
+196	-33.5	0
+197	-33.5	0
+198	-33.5	0
+199	-33.5	0
+200	-33.5	0
+201	-33.5	0
+202	-33.5	0
+203	-33.5	0
+204	-33.5	0
+205	-33.5	0
+206	-33.5	0
+207	-33.5	0
+208	-33.5	0
+209	-33.5	0
+210	-33.5	0
+211	-33.5	0
+212	-33.5	0
+213	-33.5	0
+214	-33.5	0
+215	-33.5	0
+216	-33.5	0
+217	-33.5	0
+218	-33.5	0
+219	-33.5	0
+220	-33.5	0
+221	-33.5	0
+222	-33.5	0
+223	-33.5	0
+224	-33.5	0
+225	-33.5	0
+226	-33.5	0
+227	-33.5	0
+228	-33.5	0
+229	-33.5	0
+230	-33.5	0
+231	-33.5	0
+232	-33.5	0
+233	-33.5	0
+234	-33.5	0
+235	-33.5	0
+236	-33.5	0
+237	-33.5	0
+238	-33.5	0
+239	-33.5	0
+240	-33.5	0
+241	-33.5	0
+242	-33.5	0
+243	-33.5	0
+244	-33.5	0
+245	-33.5	0
+246	-33.5	0
+247	-33.5	0
+248	-33.5	0
+249	-33.5	0
+250	-33.5	0
+251	-33.5	0
+252	-33.5	0
+253	-33.5	0
+254	-33.5	0
+255	-33.5	0
+256	-33.5	0
+257	-33.5	0
+258	-33.5	0
+259	-33.5	0
+260	-33.5	0
+261	-33.5	0
+262	-33.5	0
+263	-33.5	0
+264	-33.5	0
+265	-33.5	0
+266	-33.5	0
+267	-33.5	0
+268	-33.5	0
+269	-33.5	0
+270	-33.5	0
+271	-33.5	0
+272	-33.5	0
+273	-33.5	0
+274	-33.5	0
+275	-33.5	0
+276	-33.5	0
+277	-33.5	0
+278	-33.5	0
+279	-33.5	0
+280	-33.5	0
+281	-33.5	0
+282	-33.5	0
+283	-33.5	0
+284	-33.5	0
+285	-33.5	0
+286	-33.5	0
+287	-33.5	0
+288	-33.5	0
+289	-33.5	0
+290	-33.5	0
+291	-33.5	0
+292	-33.5	0
+293	-33.5	0
+294	-33.5	0
+295	-33.5	0
+296	-33.5	0
+297	-33.5	0
+298	-33.5	0
+299	-33.5	0
+300	-33.5	0
+301	-33.5	0
+302	-33.5	0
+303	-33.5	0
+304	-33.5	0
+305	-33.5	0
+306	-33.5	0
+307	-33.5	0
+308	-33.5	0
+309	-33.5	0
+310	-33.5	0
+311	-33.5	0
+312	-33.5	0
+313	-33.5	0
+314	-33.5	0
+315	-33.5	0
+316	-33.5	0
+317	-33.5	0
+318	-33.5	0
+319	-33.5	0
+320	-33.5	0
+321	-33.5	0
+322	-33.5	0
+323	-33.5	0
+324	-33.5	0
+325	-33.5	0
+326	-33.5	0
+327	-33.5	0
+328	-33.5	0
+329	-33.5	0
+330	-33.5	0
+331	-33.5	0
+332	-33.5	0
+333	-33.5	0
+334	-33.5	0
+335	-33.5	0
+336	-33.5	0
+337	-33.5	0
+338	-33.5	0
+339	-33.5	0
+340	-33.5	0
+341	-33.5	0
+342	-33.5	0
+343	-33.5	0
+344	-33.5	0
+345	-33.5	0
+346	-33.5	0
+347	-33.5	0
+348	-33.5	0
+349	-33.5	0
+350	-33.5	0
+351	-33.5	0
+352	-33.5	0
+353	-33.5	0
+354	-33.5	0
+355	-33.5	0
+356	-33.5	0
+357	-33.5	0
+358	-33.5	0
+359	-33.5	0
+360	-33.5	0
+0	-33	0
+1	-33	0
+2	-33	0
+3	-33	0
+4	-33	0
+5	-33	0
+6	-33	0
+7	-33	0
+8	-33	0
+9	-33	0
+10	-33	0
+11	-33	0
+12	-33	0
+13	-33	0
+14	-33	0
+15	-33	0
+16	-33	0
+17	-33	0
+18	-33	0
+19	-33	0
+20	-33	0
+21	-33	0
+22	-33	0
+23	-33	0
+24	-33	0
+25	-33	0
+26	-33	0
+27	-33	0
+28	-33	0
+29	-33	0
+30	-33	0
+31	-33	0
+32	-33	0
+33	-33	0
+34	-33	0
+35	-33	0
+36	-33	0
+37	-33	0
+38	-33	0
+39	-33	0
+40	-33	0
+41	-33	0
+42	-33	0
+43	-33	0
+44	-33	0
+45	-33	0
+46	-33	0
+47	-33	0
+48	-33	0
+49	-33	0
+50	-33	0
+51	-33	0
+52	-33	0
+53	-33	0
+54	-33	0
+55	-33	0
+56	-33	0
+57	-33	0
+58	-33	0
+59	-33	0
+60	-33	0
+61	-33	0
+62	-33	0
+63	-33	0
+64	-33	0
+65	-33	0
+66	-33	0
+67	-33	0
+68	-33	0
+69	-33	0
+70	-33	0
+71	-33	0
+72	-33	0
+73	-33	0
+74	-33	0
+75	-33	0
+76	-33	0
+77	-33	0
+78	-33	0
+79	-33	0
+80	-33	0
+81	-33	0
+82	-33	0
+83	-33	0
+84	-33	0
+85	-33	0
+86	-33	0
+87	-33	0
+88	-33	0
+89	-33	0
+90	-33	0
+91	-33	0
+92	-33	0
+93	-33	0
+94	-33	0
+95	-33	0
+96	-33	0
+97	-33	0
+98	-33	0
+99	-33	0
+100	-33	0
+101	-33	0
+102	-33	0
+103	-33	0
+104	-33	0
+105	-33	0
+106	-33	0
+107	-33	0
+108	-33	0
+109	-33	0
+110	-33	0
+111	-33	0
+112	-33	0
+113	-33	0
+114	-33	0
+115	-33	0
+116	-33	0
+117	-33	0
+118	-33	0
+119	-33	0
+120	-33	0
+121	-33	0
+122	-33	0
+123	-33	0
+124	-33	0
+125	-33	0
+126	-33	0
+127	-33	0
+128	-33	0
+129	-33	0
+130	-33	0
+131	-33	0
+132	-33	0
+133	-33	0
+134	-33	0
+135	-33	0
+136	-33	0
+137	-33	0
+138	-33	0
+139	-33	0
+140	-33	0
+141	-33	0
+142	-33	0
+143	-33	0
+144	-33	0
+145	-33	0
+146	-33	0
+147	-33	0
+148	-33	0
+149	-33	0
+150	-33	0
+151	-33	0
+152	-33	0
+153	-33	0
+154	-33	0
+155	-33	0
+156	-33	0
+157	-33	0
+158	-33	0
+159	-33	0
+160	-33	0
+161	-33	0
+162	-33	0
+163	-33	0
+164	-33	0
+165	-33	0
+166	-33	0
+167	-33	0
+168	-33	0
+169	-33	0
+170	-33	0
+171	-33	0
+172	-33	0
+173	-33	0
+174	-33	0
+175	-33	0
+176	-33	0
+177	-33	0
+178	-33	0
+179	-33	0
+180	-33	0
+181	-33	0
+182	-33	0
+183	-33	0
+184	-33	0
+185	-33	0
+186	-33	0
+187	-33	0
+188	-33	0
+189	-33	0
+190	-33	0
+191	-33	0
+192	-33	0
+193	-33	0
+194	-33	0
+195	-33	0
+196	-33	0
+197	-33	0
+198	-33	0
+199	-33	0
+200	-33	0
+201	-33	0
+202	-33	0
+203	-33	0
+204	-33	0
+205	-33	0
+206	-33	0
+207	-33	0
+208	-33	0
+209	-33	0
+210	-33	0
+211	-33	0
+212	-33	0
+213	-33	0
+214	-33	0
+215	-33	0
+216	-33	0
+217	-33	0
+218	-33	0
+219	-33	0
+220	-33	0
+221	-33	0
+222	-33	0
+223	-33	0
+224	-33	0
+225	-33	0
+226	-33	0
+227	-33	0
+228	-33	0
+229	-33	0
+230	-33	0
+231	-33	0
+232	-33	0
+233	-33	0
+234	-33	0
+235	-33	0
+236	-33	0
+237	-33	0
+238	-33	0
+239	-33	0
+240	-33	0
+241	-33	0
+242	-33	0
+243	-33	0
+244	-33	0
+245	-33	0
+246	-33	0
+247	-33	0
+248	-33	0
+249	-33	0
+250	-33	0
+251	-33	0
+252	-33	0
+253	-33	0
+254	-33	0
+255	-33	0
+256	-33	0
+257	-33	0
+258	-33	0
+259	-33	0
+260	-33	0
+261	-33	0
+262	-33	0
+263	-33	0
+264	-33	0
+265	-33	0
+266	-33	0
+267	-33	0
+268	-33	0
+269	-33	0
+270	-33	0
+271	-33	0
+272	-33	0
+273	-33	0
+274	-33	0
+275	-33	0
+276	-33	0
+277	-33	0
+278	-33	0
+279	-33	0
+280	-33	0
+281	-33	0
+282	-33	0
+283	-33	0
+284	-33	0
+285	-33	0
+286	-33	0
+287	-33	0
+288	-33	0
+289	-33	0
+290	-33	0
+291	-33	0
+292	-33	0
+293	-33	0
+294	-33	0
+295	-33	0
+296	-33	0
+297	-33	0
+298	-33	0
+299	-33	0
+300	-33	0
+301	-33	0
+302	-33	0
+303	-33	0
+304	-33	0
+305	-33	0
+306	-33	0
+307	-33	0
+308	-33	0
+309	-33	0
+310	-33	0
+311	-33	0
+312	-33	0
+313	-33	0
+314	-33	0
+315	-33	0
+316	-33	0
+317	-33	0
+318	-33	0
+319	-33	0
+320	-33	0
+321	-33	0
+322	-33	0
+323	-33	0
+324	-33	0
+325	-33	0
+326	-33	0
+327	-33	0
+328	-33	0
+329	-33	0
+330	-33	0
+331	-33	0
+332	-33	0
+333	-33	0
+334	-33	0
+335	-33	0
+336	-33	0
+337	-33	0
+338	-33	0
+339	-33	0
+340	-33	0
+341	-33	0
+342	-33	0
+343	-33	0
+344	-33	0
+345	-33	0
+346	-33	0
+347	-33	0
+348	-33	0
+349	-33	0
+350	-33	0
+351	-33	0
+352	-33	0
+353	-33	0
+354	-33	0
+355	-33	0
+356	-33	0
+357	-33	0
+358	-33	0
+359	-33	0
+360	-33	0
+0	-32.5	0
+1	-32.5	0
+2	-32.5	0
+3	-32.5	0
+4	-32.5	0
+5	-32.5	0
+6	-32.5	0
+7	-32.5	0
+8	-32.5	0
+9	-32.5	0
+10	-32.5	0
+11	-32.5	0
+12	-32.5	0
+13	-32.5	0
+14	-32.5	0
+15	-32.5	0
+16	-32.5	0
+17	-32.5	0
+18	-32.5	0
+19	-32.5	0
+20	-32.5	0
+21	-32.5	0
+22	-32.5	0
+23	-32.5	0
+24	-32.5	0
+25	-32.5	0
+26	-32.5	0
+27	-32.5	0
+28	-32.5	0
+29	-32.5	0
+30	-32.5	0
+31	-32.5	0
+32	-32.5	0
+33	-32.5	0
+34	-32.5	0
+35	-32.5	0
+36	-32.5	0
+37	-32.5	0
+38	-32.5	0
+39	-32.5	0
+40	-32.5	0
+41	-32.5	0
+42	-32.5	0
+43	-32.5	0
+44	-32.5	0
+45	-32.5	0
+46	-32.5	0
+47	-32.5	0
+48	-32.5	0
+49	-32.5	0
+50	-32.5	0
+51	-32.5	0
+52	-32.5	0
+53	-32.5	0
+54	-32.5	0
+55	-32.5	0
+56	-32.5	0
+57	-32.5	0
+58	-32.5	0
+59	-32.5	0
+60	-32.5	0
+61	-32.5	0
+62	-32.5	0
+63	-32.5	0
+64	-32.5	0
+65	-32.5	0
+66	-32.5	0
+67	-32.5	0
+68	-32.5	0
+69	-32.5	0
+70	-32.5	0
+71	-32.5	0
+72	-32.5	0
+73	-32.5	0
+74	-32.5	0
+75	-32.5	0
+76	-32.5	0
+77	-32.5	0
+78	-32.5	0
+79	-32.5	0
+80	-32.5	0
+81	-32.5	0
+82	-32.5	0
+83	-32.5	0
+84	-32.5	0
+85	-32.5	0
+86	-32.5	0
+87	-32.5	0
+88	-32.5	0
+89	-32.5	0
+90	-32.5	0
+91	-32.5	0
+92	-32.5	0
+93	-32.5	0
+94	-32.5	0
+95	-32.5	0
+96	-32.5	0
+97	-32.5	0
+98	-32.5	0
+99	-32.5	0
+100	-32.5	0
+101	-32.5	0
+102	-32.5	0
+103	-32.5	0
+104	-32.5	0
+105	-32.5	0
+106	-32.5	0
+107	-32.5	0
+108	-32.5	0
+109	-32.5	0
+110	-32.5	0
+111	-32.5	0
+112	-32.5	0
+113	-32.5	0
+114	-32.5	0
+115	-32.5	0
+116	-32.5	0
+117	-32.5	0
+118	-32.5	0
+119	-32.5	0
+120	-32.5	0
+121	-32.5	0
+122	-32.5	0
+123	-32.5	0
+124	-32.5	0
+125	-32.5	0
+126	-32.5	0
+127	-32.5	0
+128	-32.5	0
+129	-32.5	0
+130	-32.5	0
+131	-32.5	0
+132	-32.5	0
+133	-32.5	0
+134	-32.5	0
+135	-32.5	0
+136	-32.5	0
+137	-32.5	0
+138	-32.5	0
+139	-32.5	0
+140	-32.5	0
+141	-32.5	0
+142	-32.5	0
+143	-32.5	0
+144	-32.5	0
+145	-32.5	0
+146	-32.5	0
+147	-32.5	0
+148	-32.5	0
+149	-32.5	0
+150	-32.5	0
+151	-32.5	0
+152	-32.5	0
+153	-32.5	0
+154	-32.5	0
+155	-32.5	0
+156	-32.5	0
+157	-32.5	0
+158	-32.5	0
+159	-32.5	0
+160	-32.5	0
+161	-32.5	0
+162	-32.5	0
+163	-32.5	0
+164	-32.5	0
+165	-32.5	0
+166	-32.5	0
+167	-32.5	0
+168	-32.5	0
+169	-32.5	0
+170	-32.5	0
+171	-32.5	0
+172	-32.5	0
+173	-32.5	0
+174	-32.5	0
+175	-32.5	0
+176	-32.5	0
+177	-32.5	0
+178	-32.5	0
+179	-32.5	0
+180	-32.5	0
+181	-32.5	0
+182	-32.5	0
+183	-32.5	0
+184	-32.5	0
+185	-32.5	0
+186	-32.5	0
+187	-32.5	0
+188	-32.5	0
+189	-32.5	0
+190	-32.5	0
+191	-32.5	0
+192	-32.5	0
+193	-32.5	0
+194	-32.5	0
+195	-32.5	0
+196	-32.5	0
+197	-32.5	0
+198	-32.5	0
+199	-32.5	0
+200	-32.5	0
+201	-32.5	0
+202	-32.5	0
+203	-32.5	0
+204	-32.5	0
+205	-32.5	0
+206	-32.5	0
+207	-32.5	0
+208	-32.5	0
+209	-32.5	0
+210	-32.5	0
+211	-32.5	0
+212	-32.5	0
+213	-32.5	0
+214	-32.5	0
+215	-32.5	0
+216	-32.5	0
+217	-32.5	0
+218	-32.5	0
+219	-32.5	0
+220	-32.5	0
+221	-32.5	0
+222	-32.5	0
+223	-32.5	0
+224	-32.5	0
+225	-32.5	0
+226	-32.5	0
+227	-32.5	0
+228	-32.5	0
+229	-32.5	0
+230	-32.5	0
+231	-32.5	0
+232	-32.5	0
+233	-32.5	0
+234	-32.5	0
+235	-32.5	0
+236	-32.5	0
+237	-32.5	0
+238	-32.5	0
+239	-32.5	0
+240	-32.5	0
+241	-32.5	0
+242	-32.5	0
+243	-32.5	0
+244	-32.5	0
+245	-32.5	0
+246	-32.5	0
+247	-32.5	0
+248	-32.5	0
+249	-32.5	0
+250	-32.5	0
+251	-32.5	0
+252	-32.5	0
+253	-32.5	0
+254	-32.5	0
+255	-32.5	0
+256	-32.5	0
+257	-32.5	0
+258	-32.5	0
+259	-32.5	0
+260	-32.5	0
+261	-32.5	0
+262	-32.5	0
+263	-32.5	0
+264	-32.5	0
+265	-32.5	0
+266	-32.5	0
+267	-32.5	0
+268	-32.5	0
+269	-32.5	0
+270	-32.5	0
+271	-32.5	0
+272	-32.5	0
+273	-32.5	0
+274	-32.5	0
+275	-32.5	0
+276	-32.5	0
+277	-32.5	0
+278	-32.5	0
+279	-32.5	0
+280	-32.5	0
+281	-32.5	0
+282	-32.5	0
+283	-32.5	0
+284	-32.5	0
+285	-32.5	0
+286	-32.5	0
+287	-32.5	0
+288	-32.5	0
+289	-32.5	0
+290	-32.5	0
+291	-32.5	0
+292	-32.5	0
+293	-32.5	0
+294	-32.5	0
+295	-32.5	0
+296	-32.5	0
+297	-32.5	0
+298	-32.5	0
+299	-32.5	0
+300	-32.5	0
+301	-32.5	0
+302	-32.5	0
+303	-32.5	0
+304	-32.5	0
+305	-32.5	0
+306	-32.5	0
+307	-32.5	0
+308	-32.5	0
+309	-32.5	0
+310	-32.5	0
+311	-32.5	0
+312	-32.5	0
+313	-32.5	0
+314	-32.5	0
+315	-32.5	0
+316	-32.5	0
+317	-32.5	0
+318	-32.5	0
+319	-32.5	0
+320	-32.5	0
+321	-32.5	0
+322	-32.5	0
+323	-32.5	0
+324	-32.5	0
+325	-32.5	0
+326	-32.5	0
+327	-32.5	0
+328	-32.5	0
+329	-32.5	0
+330	-32.5	0
+331	-32.5	0
+332	-32.5	0
+333	-32.5	0
+334	-32.5	0
+335	-32.5	0
+336	-32.5	0
+337	-32.5	0
+338	-32.5	0
+339	-32.5	0
+340	-32.5	0
+341	-32.5	0
+342	-32.5	0
+343	-32.5	0
+344	-32.5	0
+345	-32.5	0
+346	-32.5	0
+347	-32.5	0
+348	-32.5	0
+349	-32.5	0
+350	-32.5	0
+351	-32.5	0
+352	-32.5	0
+353	-32.5	0
+354	-32.5	0
+355	-32.5	0
+356	-32.5	0
+357	-32.5	0
+358	-32.5	0
+359	-32.5	0
+360	-32.5	0
+0	-32	0
+1	-32	0
+2	-32	0
+3	-32	0
+4	-32	0
+5	-32	0
+6	-32	0
+7	-32	0
+8	-32	0
+9	-32	0
+10	-32	0
+11	-32	0
+12	-32	0
+13	-32	0
+14	-32	0
+15	-32	0
+16	-32	0
+17	-32	0
+18	-32	0
+19	-32	0
+20	-32	0
+21	-32	0
+22	-32	0
+23	-32	0
+24	-32	0
+25	-32	0
+26	-32	0
+27	-32	0
+28	-32	0
+29	-32	0
+30	-32	0
+31	-32	0
+32	-32	0
+33	-32	0
+34	-32	0
+35	-32	0
+36	-32	0
+37	-32	0
+38	-32	0
+39	-32	0
+40	-32	0
+41	-32	0
+42	-32	0
+43	-32	0
+44	-32	0
+45	-32	0
+46	-32	0
+47	-32	0
+48	-32	0
+49	-32	0
+50	-32	0
+51	-32	0
+52	-32	0
+53	-32	0
+54	-32	0
+55	-32	0
+56	-32	0
+57	-32	0
+58	-32	0
+59	-32	0
+60	-32	0
+61	-32	0
+62	-32	0
+63	-32	0
+64	-32	0
+65	-32	0
+66	-32	0
+67	-32	0
+68	-32	0
+69	-32	0
+70	-32	0
+71	-32	0
+72	-32	0
+73	-32	0
+74	-32	0
+75	-32	0
+76	-32	0
+77	-32	0
+78	-32	0
+79	-32	0
+80	-32	0
+81	-32	0
+82	-32	0
+83	-32	0
+84	-32	0
+85	-32	0
+86	-32	0
+87	-32	0
+88	-32	0
+89	-32	0
+90	-32	0
+91	-32	0
+92	-32	0
+93	-32	0
+94	-32	0
+95	-32	0
+96	-32	0
+97	-32	0
+98	-32	0
+99	-32	0
+100	-32	0
+101	-32	0
+102	-32	0
+103	-32	0
+104	-32	0
+105	-32	0
+106	-32	0
+107	-32	0
+108	-32	0
+109	-32	0
+110	-32	0
+111	-32	0
+112	-32	0
+113	-32	0
+114	-32	0
+115	-32	0
+116	-32	0
+117	-32	0
+118	-32	0
+119	-32	0
+120	-32	0
+121	-32	0
+122	-32	0
+123	-32	0
+124	-32	0
+125	-32	0
+126	-32	0
+127	-32	0
+128	-32	0
+129	-32	0
+130	-32	0
+131	-32	0
+132	-32	0
+133	-32	0
+134	-32	0
+135	-32	0
+136	-32	0
+137	-32	0
+138	-32	0
+139	-32	0
+140	-32	0
+141	-32	0
+142	-32	0
+143	-32	0
+144	-32	0
+145	-32	0
+146	-32	0
+147	-32	0
+148	-32	0
+149	-32	0
+150	-32	0
+151	-32	0
+152	-32	0
+153	-32	0
+154	-32	0
+155	-32	0
+156	-32	0
+157	-32	0
+158	-32	0
+159	-32	0
+160	-32	0
+161	-32	0
+162	-32	0
+163	-32	0
+164	-32	0
+165	-32	0
+166	-32	0
+167	-32	0
+168	-32	0
+169	-32	0
+170	-32	0
+171	-32	0
+172	-32	0
+173	-32	0
+174	-32	0
+175	-32	0
+176	-32	0
+177	-32	0
+178	-32	0
+179	-32	0
+180	-32	0
+181	-32	0
+182	-32	0
+183	-32	0
+184	-32	0
+185	-32	0
+186	-32	0
+187	-32	0
+188	-32	0
+189	-32	0
+190	-32	0
+191	-32	0
+192	-32	0
+193	-32	0
+194	-32	0
+195	-32	0
+196	-32	0
+197	-32	0
+198	-32	0
+199	-32	0
+200	-32	0
+201	-32	0
+202	-32	0
+203	-32	0
+204	-32	0
+205	-32	0
+206	-32	0
+207	-32	0
+208	-32	0
+209	-32	0
+210	-32	0
+211	-32	0
+212	-32	0
+213	-32	0
+214	-32	0
+215	-32	0
+216	-32	0
+217	-32	0
+218	-32	0
+219	-32	0
+220	-32	0
+221	-32	0
+222	-32	0
+223	-32	0
+224	-32	0
+225	-32	0
+226	-32	0
+227	-32	0
+228	-32	0
+229	-32	0
+230	-32	0
+231	-32	0
+232	-32	0
+233	-32	0
+234	-32	0
+235	-32	0
+236	-32	0
+237	-32	0
+238	-32	0
+239	-32	0
+240	-32	0
+241	-32	0
+242	-32	0
+243	-32	0
+244	-32	0
+245	-32	0
+246	-32	0
+247	-32	0
+248	-32	0
+249	-32	0
+250	-32	0
+251	-32	0
+252	-32	0
+253	-32	0
+254	-32	0
+255	-32	0
+256	-32	0
+257	-32	0
+258	-32	0
+259	-32	0
+260	-32	0
+261	-32	0
+262	-32	0
+263	-32	0
+264	-32	0
+265	-32	0
+266	-32	0
+267	-32	0
+268	-32	0
+269	-32	0
+270	-32	0
+271	-32	0
+272	-32	0
+273	-32	0
+274	-32	0
+275	-32	0
+276	-32	0
+277	-32	0
+278	-32	0
+279	-32	0
+280	-32	0
+281	-32	0
+282	-32	0
+283	-32	0
+284	-32	0
+285	-32	0
+286	-32	0
+287	-32	0
+288	-32	0
+289	-32	0
+290	-32	0
+291	-32	0
+292	-32	0
+293	-32	0
+294	-32	0
+295	-32	0
+296	-32	0
+297	-32	0
+298	-32	0
+299	-32	0
+300	-32	0
+301	-32	0
+302	-32	0
+303	-32	0
+304	-32	0
+305	-32	0
+306	-32	0
+307	-32	0
+308	-32	0
+309	-32	0
+310	-32	0
+311	-32	0
+312	-32	0
+313	-32	0
+314	-32	0
+315	-32	0
+316	-32	0
+317	-32	0
+318	-32	0
+319	-32	0
+320	-32	0
+321	-32	0
+322	-32	0
+323	-32	0
+324	-32	0
+325	-32	0
+326	-32	0
+327	-32	0
+328	-32	0
+329	-32	0
+330	-32	0
+331	-32	0
+332	-32	0
+333	-32	0
+334	-32	0
+335	-32	0
+336	-32	0
+337	-32	0
+338	-32	0
+339	-32	0
+340	-32	0
+341	-32	0
+342	-32	0
+343	-32	0
+344	-32	0
+345	-32	0
+346	-32	0
+347	-32	0
+348	-32	0
+349	-32	0
+350	-32	0
+351	-32	0
+352	-32	0
+353	-32	0
+354	-32	0
+355	-32	0
+356	-32	0
+357	-32	0
+358	-32	0
+359	-32	0
+360	-32	0
+0	-31.5	0
+1	-31.5	0
+2	-31.5	0
+3	-31.5	0
+4	-31.5	0
+5	-31.5	0
+6	-31.5	0
+7	-31.5	0
+8	-31.5	0
+9	-31.5	0
+10	-31.5	0
+11	-31.5	0
+12	-31.5	0
+13	-31.5	0
+14	-31.5	0
+15	-31.5	0
+16	-31.5	0
+17	-31.5	0
+18	-31.5	0
+19	-31.5	0
+20	-31.5	0
+21	-31.5	0
+22	-31.5	0
+23	-31.5	0
+24	-31.5	0
+25	-31.5	0
+26	-31.5	0
+27	-31.5	0
+28	-31.5	0
+29	-31.5	0
+30	-31.5	0
+31	-31.5	0
+32	-31.5	0
+33	-31.5	0
+34	-31.5	0
+35	-31.5	0
+36	-31.5	0
+37	-31.5	0
+38	-31.5	0
+39	-31.5	0
+40	-31.5	0
+41	-31.5	0
+42	-31.5	0
+43	-31.5	0
+44	-31.5	0
+45	-31.5	0
+46	-31.5	0
+47	-31.5	0
+48	-31.5	0
+49	-31.5	0
+50	-31.5	0
+51	-31.5	0
+52	-31.5	0
+53	-31.5	0
+54	-31.5	0
+55	-31.5	0
+56	-31.5	0
+57	-31.5	0
+58	-31.5	0
+59	-31.5	0
+60	-31.5	0
+61	-31.5	0
+62	-31.5	0
+63	-31.5	0
+64	-31.5	0
+65	-31.5	0
+66	-31.5	0
+67	-31.5	0
+68	-31.5	0
+69	-31.5	0
+70	-31.5	0
+71	-31.5	0
+72	-31.5	0
+73	-31.5	0
+74	-31.5	0
+75	-31.5	0
+76	-31.5	0
+77	-31.5	0
+78	-31.5	0
+79	-31.5	0
+80	-31.5	0
+81	-31.5	0
+82	-31.5	0
+83	-31.5	0
+84	-31.5	0
+85	-31.5	0
+86	-31.5	0
+87	-31.5	0
+88	-31.5	0
+89	-31.5	0
+90	-31.5	0
+91	-31.5	0
+92	-31.5	0
+93	-31.5	0
+94	-31.5	0
+95	-31.5	0
+96	-31.5	0
+97	-31.5	0
+98	-31.5	0
+99	-31.5	0
+100	-31.5	0
+101	-31.5	0
+102	-31.5	0
+103	-31.5	0
+104	-31.5	0
+105	-31.5	0
+106	-31.5	0
+107	-31.5	0
+108	-31.5	0
+109	-31.5	0
+110	-31.5	0
+111	-31.5	0
+112	-31.5	0
+113	-31.5	0
+114	-31.5	0
+115	-31.5	0
+116	-31.5	0
+117	-31.5	0
+118	-31.5	0
+119	-31.5	0
+120	-31.5	0
+121	-31.5	0
+122	-31.5	0
+123	-31.5	0
+124	-31.5	0
+125	-31.5	0
+126	-31.5	0
+127	-31.5	0
+128	-31.5	0
+129	-31.5	0
+130	-31.5	0
+131	-31.5	0
+132	-31.5	0
+133	-31.5	0
+134	-31.5	0
+135	-31.5	0
+136	-31.5	0
+137	-31.5	0
+138	-31.5	0
+139	-31.5	0
+140	-31.5	0
+141	-31.5	0
+142	-31.5	0
+143	-31.5	0
+144	-31.5	0
+145	-31.5	0
+146	-31.5	0
+147	-31.5	0
+148	-31.5	0
+149	-31.5	0
+150	-31.5	0
+151	-31.5	0
+152	-31.5	0
+153	-31.5	0
+154	-31.5	0
+155	-31.5	0
+156	-31.5	0
+157	-31.5	0
+158	-31.5	0
+159	-31.5	0
+160	-31.5	0
+161	-31.5	0
+162	-31.5	0
+163	-31.5	0
+164	-31.5	0
+165	-31.5	0
+166	-31.5	0
+167	-31.5	0
+168	-31.5	0
+169	-31.5	0
+170	-31.5	0
+171	-31.5	0
+172	-31.5	0
+173	-31.5	0
+174	-31.5	0
+175	-31.5	0
+176	-31.5	0
+177	-31.5	0
+178	-31.5	0
+179	-31.5	0
+180	-31.5	0
+181	-31.5	0
+182	-31.5	0
+183	-31.5	0
+184	-31.5	0
+185	-31.5	0
+186	-31.5	0
+187	-31.5	0
+188	-31.5	0
+189	-31.5	0
+190	-31.5	0
+191	-31.5	0
+192	-31.5	0
+193	-31.5	0
+194	-31.5	0
+195	-31.5	0
+196	-31.5	0
+197	-31.5	0
+198	-31.5	0
+199	-31.5	0
+200	-31.5	0
+201	-31.5	0
+202	-31.5	0
+203	-31.5	0
+204	-31.5	0
+205	-31.5	0
+206	-31.5	0
+207	-31.5	0
+208	-31.5	0
+209	-31.5	0
+210	-31.5	0
+211	-31.5	0
+212	-31.5	0
+213	-31.5	0
+214	-31.5	0
+215	-31.5	0
+216	-31.5	0
+217	-31.5	0
+218	-31.5	0
+219	-31.5	0
+220	-31.5	0
+221	-31.5	0
+222	-31.5	0
+223	-31.5	0
+224	-31.5	0
+225	-31.5	0
+226	-31.5	0
+227	-31.5	0
+228	-31.5	0
+229	-31.5	0
+230	-31.5	0
+231	-31.5	0
+232	-31.5	0
+233	-31.5	0
+234	-31.5	0
+235	-31.5	0
+236	-31.5	0
+237	-31.5	0
+238	-31.5	0
+239	-31.5	0
+240	-31.5	0
+241	-31.5	0
+242	-31.5	0
+243	-31.5	0
+244	-31.5	0
+245	-31.5	0
+246	-31.5	0
+247	-31.5	0
+248	-31.5	0
+249	-31.5	0
+250	-31.5	0
+251	-31.5	0
+252	-31.5	0
+253	-31.5	0
+254	-31.5	0
+255	-31.5	0
+256	-31.5	0
+257	-31.5	0
+258	-31.5	0
+259	-31.5	0
+260	-31.5	0
+261	-31.5	0
+262	-31.5	0
+263	-31.5	0
+264	-31.5	0
+265	-31.5	0
+266	-31.5	0
+267	-31.5	0
+268	-31.5	0
+269	-31.5	0
+270	-31.5	0
+271	-31.5	0
+272	-31.5	0
+273	-31.5	0
+274	-31.5	0
+275	-31.5	0
+276	-31.5	0
+277	-31.5	0
+278	-31.5	0
+279	-31.5	0
+280	-31.5	0
+281	-31.5	0
+282	-31.5	0
+283	-31.5	0
+284	-31.5	0
+285	-31.5	0
+286	-31.5	0
+287	-31.5	0
+288	-31.5	0
+289	-31.5	0
+290	-31.5	0
+291	-31.5	0
+292	-31.5	0
+293	-31.5	0
+294	-31.5	0
+295	-31.5	0
+296	-31.5	0
+297	-31.5	0
+298	-31.5	0
+299	-31.5	0
+300	-31.5	0
+301	-31.5	0
+302	-31.5	0
+303	-31.5	0
+304	-31.5	0
+305	-31.5	0
+306	-31.5	0
+307	-31.5	0
+308	-31.5	0
+309	-31.5	0
+310	-31.5	0
+311	-31.5	0
+312	-31.5	0
+313	-31.5	0
+314	-31.5	0
+315	-31.5	0
+316	-31.5	0
+317	-31.5	0
+318	-31.5	0
+319	-31.5	0
+320	-31.5	0
+321	-31.5	0
+322	-31.5	0
+323	-31.5	0
+324	-31.5	0
+325	-31.5	0
+326	-31.5	0
+327	-31.5	0
+328	-31.5	0
+329	-31.5	0
+330	-31.5	0
+331	-31.5	0
+332	-31.5	0
+333	-31.5	0
+334	-31.5	0
+335	-31.5	0
+336	-31.5	0
+337	-31.5	0
+338	-31.5	0
+339	-31.5	0
+340	-31.5	0
+341	-31.5	0
+342	-31.5	0
+343	-31.5	0
+344	-31.5	0
+345	-31.5	0
+346	-31.5	0
+347	-31.5	0
+348	-31.5	0
+349	-31.5	0
+350	-31.5	0
+351	-31.5	0
+352	-31.5	0
+353	-31.5	0
+354	-31.5	0
+355	-31.5	0
+356	-31.5	0
+357	-31.5	0
+358	-31.5	0
+359	-31.5	0
+360	-31.5	0
+0	-31	0
+1	-31	0
+2	-31	0
+3	-31	0
+4	-31	0
+5	-31	0
+6	-31	0
+7	-31	0
+8	-31	0
+9	-31	0
+10	-31	0
+11	-31	0
+12	-31	0
+13	-31	0
+14	-31	0
+15	-31	0
+16	-31	0
+17	-31	0
+18	-31	0
+19	-31	0
+20	-31	0
+21	-31	0
+22	-31	0
+23	-31	0
+24	-31	0
+25	-31	0
+26	-31	0
+27	-31	0
+28	-31	0
+29	-31	0
+30	-31	0
+31	-31	0
+32	-31	0
+33	-31	0
+34	-31	0
+35	-31	0
+36	-31	0
+37	-31	0
+38	-31	0
+39	-31	0
+40	-31	0
+41	-31	0
+42	-31	0
+43	-31	0
+44	-31	0
+45	-31	0
+46	-31	0
+47	-31	0
+48	-31	0
+49	-31	0
+50	-31	0
+51	-31	0
+52	-31	0
+53	-31	0
+54	-31	0
+55	-31	0
+56	-31	0
+57	-31	0
+58	-31	0
+59	-31	0
+60	-31	0
+61	-31	0
+62	-31	0
+63	-31	0
+64	-31	0
+65	-31	0
+66	-31	0
+67	-31	0
+68	-31	0
+69	-31	0
+70	-31	0
+71	-31	0
+72	-31	0
+73	-31	0
+74	-31	0
+75	-31	0
+76	-31	0
+77	-31	0
+78	-31	0
+79	-31	0
+80	-31	0
+81	-31	0
+82	-31	0
+83	-31	0
+84	-31	0
+85	-31	0
+86	-31	0
+87	-31	0
+88	-31	0
+89	-31	0
+90	-31	0
+91	-31	0
+92	-31	0
+93	-31	0
+94	-31	0
+95	-31	0
+96	-31	0
+97	-31	0
+98	-31	0
+99	-31	0
+100	-31	0
+101	-31	0
+102	-31	0
+103	-31	0
+104	-31	0
+105	-31	0
+106	-31	0
+107	-31	0
+108	-31	0
+109	-31	0
+110	-31	0
+111	-31	0
+112	-31	0
+113	-31	0
+114	-31	0
+115	-31	0
+116	-31	0
+117	-31	0
+118	-31	0
+119	-31	0
+120	-31	0
+121	-31	0
+122	-31	0
+123	-31	0
+124	-31	0
+125	-31	0
+126	-31	0
+127	-31	0
+128	-31	0
+129	-31	0
+130	-31	0
+131	-31	0
+132	-31	0
+133	-31	0
+134	-31	0
+135	-31	0
+136	-31	0
+137	-31	0
+138	-31	0
+139	-31	0
+140	-31	0
+141	-31	0
+142	-31	0
+143	-31	0
+144	-31	0
+145	-31	0
+146	-31	0
+147	-31	0
+148	-31	0
+149	-31	0
+150	-31	0
+151	-31	0
+152	-31	0
+153	-31	0
+154	-31	0
+155	-31	0
+156	-31	0
+157	-31	0
+158	-31	0
+159	-31	0
+160	-31	0
+161	-31	0
+162	-31	0
+163	-31	0
+164	-31	0
+165	-31	0
+166	-31	0
+167	-31	0
+168	-31	0
+169	-31	0
+170	-31	0
+171	-31	0
+172	-31	0
+173	-31	0
+174	-31	0
+175	-31	0
+176	-31	0
+177	-31	0
+178	-31	0
+179	-31	0
+180	-31	0
+181	-31	0
+182	-31	0
+183	-31	0
+184	-31	0
+185	-31	0
+186	-31	0
+187	-31	0
+188	-31	0
+189	-31	0
+190	-31	0
+191	-31	0
+192	-31	0
+193	-31	0
+194	-31	0
+195	-31	0
+196	-31	0
+197	-31	0
+198	-31	0
+199	-31	0
+200	-31	0
+201	-31	0
+202	-31	0
+203	-31	0
+204	-31	0
+205	-31	0
+206	-31	0
+207	-31	0
+208	-31	0
+209	-31	0
+210	-31	0
+211	-31	0
+212	-31	0
+213	-31	0
+214	-31	0
+215	-31	0
+216	-31	0
+217	-31	0
+218	-31	0
+219	-31	0
+220	-31	0
+221	-31	0
+222	-31	0
+223	-31	0
+224	-31	0
+225	-31	0
+226	-31	0
+227	-31	0
+228	-31	0
+229	-31	0
+230	-31	0
+231	-31	0
+232	-31	0
+233	-31	0
+234	-31	0
+235	-31	0
+236	-31	0
+237	-31	0
+238	-31	0
+239	-31	0
+240	-31	0
+241	-31	0
+242	-31	0
+243	-31	0
+244	-31	0
+245	-31	0
+246	-31	0
+247	-31	0
+248	-31	0
+249	-31	0
+250	-31	0
+251	-31	0
+252	-31	0
+253	-31	0
+254	-31	0
+255	-31	0
+256	-31	0
+257	-31	0
+258	-31	0
+259	-31	0
+260	-31	0
+261	-31	0
+262	-31	0
+263	-31	0
+264	-31	0
+265	-31	0
+266	-31	0
+267	-31	0
+268	-31	0
+269	-31	0
+270	-31	0
+271	-31	0
+272	-31	0
+273	-31	0
+274	-31	0
+275	-31	0
+276	-31	0
+277	-31	0
+278	-31	0
+279	-31	0
+280	-31	0
+281	-31	0
+282	-31	0
+283	-31	0
+284	-31	0
+285	-31	0
+286	-31	0
+287	-31	0
+288	-31	0
+289	-31	0
+290	-31	0
+291	-31	0
+292	-31	0
+293	-31	0
+294	-31	0
+295	-31	0
+296	-31	0
+297	-31	0
+298	-31	0
+299	-31	0
+300	-31	0
+301	-31	0
+302	-31	0
+303	-31	0
+304	-31	0
+305	-31	0
+306	-31	0
+307	-31	0
+308	-31	0
+309	-31	0
+310	-31	0
+311	-31	0
+312	-31	0
+313	-31	0
+314	-31	0
+315	-31	0
+316	-31	0
+317	-31	0
+318	-31	0
+319	-31	0
+320	-31	0
+321	-31	0
+322	-31	0
+323	-31	0
+324	-31	0
+325	-31	0
+326	-31	0
+327	-31	0
+328	-31	0
+329	-31	0
+330	-31	0
+331	-31	0
+332	-31	0
+333	-31	0
+334	-31	0
+335	-31	0
+336	-31	0
+337	-31	0
+338	-31	0
+339	-31	0
+340	-31	0
+341	-31	0
+342	-31	0
+343	-31	0
+344	-31	0
+345	-31	0
+346	-31	0
+347	-31	0
+348	-31	0
+349	-31	0
+350	-31	0
+351	-31	0
+352	-31	0
+353	-31	0
+354	-31	0
+355	-31	0
+356	-31	0
+357	-31	0
+358	-31	0
+359	-31	0
+360	-31	0
+0	-30.5	0
+1	-30.5	0
+2	-30.5	0
+3	-30.5	0
+4	-30.5	0
+5	-30.5	0
+6	-30.5	0
+7	-30.5	0
+8	-30.5	0
+9	-30.5	0
+10	-30.5	0
+11	-30.5	0
+12	-30.5	0
+13	-30.5	0
+14	-30.5	0
+15	-30.5	0
+16	-30.5	0
+17	-30.5	0
+18	-30.5	0
+19	-30.5	0
+20	-30.5	0
+21	-30.5	0
+22	-30.5	0
+23	-30.5	0
+24	-30.5	0
+25	-30.5	0
+26	-30.5	0
+27	-30.5	0
+28	-30.5	0
+29	-30.5	0
+30	-30.5	0
+31	-30.5	0
+32	-30.5	0
+33	-30.5	0
+34	-30.5	0
+35	-30.5	0
+36	-30.5	0
+37	-30.5	0
+38	-30.5	0
+39	-30.5	0
+40	-30.5	0
+41	-30.5	0
+42	-30.5	0
+43	-30.5	0
+44	-30.5	0
+45	-30.5	0
+46	-30.5	0
+47	-30.5	0
+48	-30.5	0
+49	-30.5	0
+50	-30.5	0
+51	-30.5	0
+52	-30.5	0
+53	-30.5	0
+54	-30.5	0
+55	-30.5	0
+56	-30.5	0
+57	-30.5	0
+58	-30.5	0
+59	-30.5	0
+60	-30.5	0
+61	-30.5	0
+62	-30.5	0
+63	-30.5	0
+64	-30.5	0
+65	-30.5	0
+66	-30.5	0
+67	-30.5	0
+68	-30.5	0
+69	-30.5	0
+70	-30.5	0
+71	-30.5	0
+72	-30.5	0
+73	-30.5	0
+74	-30.5	0
+75	-30.5	0
+76	-30.5	0
+77	-30.5	0
+78	-30.5	0
+79	-30.5	0
+80	-30.5	0
+81	-30.5	0
+82	-30.5	0
+83	-30.5	0
+84	-30.5	0
+85	-30.5	0
+86	-30.5	0
+87	-30.5	0
+88	-30.5	0
+89	-30.5	0
+90	-30.5	0
+91	-30.5	0
+92	-30.5	0
+93	-30.5	0
+94	-30.5	0
+95	-30.5	0
+96	-30.5	0
+97	-30.5	0
+98	-30.5	0
+99	-30.5	0
+100	-30.5	0
+101	-30.5	0
+102	-30.5	0
+103	-30.5	0
+104	-30.5	0
+105	-30.5	0
+106	-30.5	0
+107	-30.5	0
+108	-30.5	0
+109	-30.5	0
+110	-30.5	0
+111	-30.5	0
+112	-30.5	0
+113	-30.5	0
+114	-30.5	0
+115	-30.5	0
+116	-30.5	0
+117	-30.5	0
+118	-30.5	0
+119	-30.5	0
+120	-30.5	0
+121	-30.5	0
+122	-30.5	0
+123	-30.5	0
+124	-30.5	0
+125	-30.5	0
+126	-30.5	0
+127	-30.5	0
+128	-30.5	0
+129	-30.5	0
+130	-30.5	0
+131	-30.5	0
+132	-30.5	0
+133	-30.5	0
+134	-30.5	0
+135	-30.5	0
+136	-30.5	0
+137	-30.5	0
+138	-30.5	0
+139	-30.5	0
+140	-30.5	0
+141	-30.5	0
+142	-30.5	0
+143	-30.5	0
+144	-30.5	0
+145	-30.5	0
+146	-30.5	0
+147	-30.5	0
+148	-30.5	0
+149	-30.5	0
+150	-30.5	0
+151	-30.5	0
+152	-30.5	0
+153	-30.5	0
+154	-30.5	0
+155	-30.5	0
+156	-30.5	0
+157	-30.5	0
+158	-30.5	0
+159	-30.5	0
+160	-30.5	0
+161	-30.5	0
+162	-30.5	0
+163	-30.5	0
+164	-30.5	0
+165	-30.5	0
+166	-30.5	0
+167	-30.5	0
+168	-30.5	0
+169	-30.5	0
+170	-30.5	0
+171	-30.5	0
+172	-30.5	0
+173	-30.5	0
+174	-30.5	0
+175	-30.5	0
+176	-30.5	0
+177	-30.5	0
+178	-30.5	0
+179	-30.5	0
+180	-30.5	0
+181	-30.5	0
+182	-30.5	0
+183	-30.5	0
+184	-30.5	0
+185	-30.5	0
+186	-30.5	0
+187	-30.5	0
+188	-30.5	0
+189	-30.5	0
+190	-30.5	0
+191	-30.5	0
+192	-30.5	0
+193	-30.5	0
+194	-30.5	0
+195	-30.5	0
+196	-30.5	0
+197	-30.5	0
+198	-30.5	0
+199	-30.5	0
+200	-30.5	0
+201	-30.5	0
+202	-30.5	0
+203	-30.5	0
+204	-30.5	0
+205	-30.5	0
+206	-30.5	0
+207	-30.5	0
+208	-30.5	0
+209	-30.5	0
+210	-30.5	0
+211	-30.5	0
+212	-30.5	0
+213	-30.5	0
+214	-30.5	0
+215	-30.5	0
+216	-30.5	0
+217	-30.5	0
+218	-30.5	0
+219	-30.5	0
+220	-30.5	0
+221	-30.5	0
+222	-30.5	0
+223	-30.5	0
+224	-30.5	0
+225	-30.5	0
+226	-30.5	0
+227	-30.5	0
+228	-30.5	0
+229	-30.5	0
+230	-30.5	0
+231	-30.5	0
+232	-30.5	0
+233	-30.5	0
+234	-30.5	0
+235	-30.5	0
+236	-30.5	0
+237	-30.5	0
+238	-30.5	0
+239	-30.5	0
+240	-30.5	0
+241	-30.5	0
+242	-30.5	0
+243	-30.5	0
+244	-30.5	0
+245	-30.5	0
+246	-30.5	0
+247	-30.5	0
+248	-30.5	0
+249	-30.5	0
+250	-30.5	0
+251	-30.5	0
+252	-30.5	0
+253	-30.5	0
+254	-30.5	0
+255	-30.5	0
+256	-30.5	0
+257	-30.5	0
+258	-30.5	0
+259	-30.5	0
+260	-30.5	0
+261	-30.5	0
+262	-30.5	0
+263	-30.5	0
+264	-30.5	0
+265	-30.5	0
+266	-30.5	0
+267	-30.5	0
+268	-30.5	0
+269	-30.5	0
+270	-30.5	0
+271	-30.5	0
+272	-30.5	0
+273	-30.5	0
+274	-30.5	0
+275	-30.5	0
+276	-30.5	0
+277	-30.5	0
+278	-30.5	0
+279	-30.5	0
+280	-30.5	0
+281	-30.5	0
+282	-30.5	0
+283	-30.5	0
+284	-30.5	0
+285	-30.5	0
+286	-30.5	0
+287	-30.5	0
+288	-30.5	0
+289	-30.5	0
+290	-30.5	0
+291	-30.5	0
+292	-30.5	0
+293	-30.5	0
+294	-30.5	0
+295	-30.5	0
+296	-30.5	0
+297	-30.5	0
+298	-30.5	0
+299	-30.5	0
+300	-30.5	0
+301	-30.5	0
+302	-30.5	0
+303	-30.5	0
+304	-30.5	0
+305	-30.5	0
+306	-30.5	0
+307	-30.5	0
+308	-30.5	0
+309	-30.5	0
+310	-30.5	0
+311	-30.5	0
+312	-30.5	0
+313	-30.5	0
+314	-30.5	0
+315	-30.5	0
+316	-30.5	0
+317	-30.5	0
+318	-30.5	0
+319	-30.5	0
+320	-30.5	0
+321	-30.5	0
+322	-30.5	0
+323	-30.5	0
+324	-30.5	0
+325	-30.5	0
+326	-30.5	0
+327	-30.5	0
+328	-30.5	0
+329	-30.5	0
+330	-30.5	0
+331	-30.5	0
+332	-30.5	0
+333	-30.5	0
+334	-30.5	0
+335	-30.5	0
+336	-30.5	0
+337	-30.5	0
+338	-30.5	0
+339	-30.5	0
+340	-30.5	0
+341	-30.5	0
+342	-30.5	0
+343	-30.5	0
+344	-30.5	0
+345	-30.5	0
+346	-30.5	0
+347	-30.5	0
+348	-30.5	0
+349	-30.5	0
+350	-30.5	0
+351	-30.5	0
+352	-30.5	0
+353	-30.5	0
+354	-30.5	0
+355	-30.5	0
+356	-30.5	0
+357	-30.5	0
+358	-30.5	0
+359	-30.5	0
+360	-30.5	0
+0	-30	0
+1	-30	0
+2	-30	0
+3	-30	0
+4	-30	0
+5	-30	0
+6	-30	0
+7	-30	0
+8	-30	0
+9	-30	0
+10	-30	0
+11	-30	0
+12	-30	0
+13	-30	0
+14	-30	0
+15	-30	0
+16	-30	0
+17	-30	0
+18	-30	0
+19	-30	0
+20	-30	0
+21	-30	0
+22	-30	0
+23	-30	0
+24	-30	0
+25	-30	0
+26	-30	0
+27	-30	0
+28	-30	0
+29	-30	0
+30	-30	0
+31	-30	0
+32	-30	0
+33	-30	0
+34	-30	0
+35	-30	0
+36	-30	0
+37	-30	0
+38	-30	0
+39	-30	0
+40	-30	0
+41	-30	0
+42	-30	0
+43	-30	0
+44	-30	0
+45	-30	0
+46	-30	0
+47	-30	0
+48	-30	0
+49	-30	0
+50	-30	0
+51	-30	0
+52	-30	0
+53	-30	0
+54	-30	0
+55	-30	0
+56	-30	0
+57	-30	0
+58	-30	0
+59	-30	0
+60	-30	0
+61	-30	0
+62	-30	0
+63	-30	0
+64	-30	0
+65	-30	0
+66	-30	0
+67	-30	0
+68	-30	0
+69	-30	0
+70	-30	0
+71	-30	0
+72	-30	0
+73	-30	0
+74	-30	0
+75	-30	0
+76	-30	0
+77	-30	0
+78	-30	0
+79	-30	0
+80	-30	0
+81	-30	0
+82	-30	0
+83	-30	0
+84	-30	0
+85	-30	0
+86	-30	0
+87	-30	0
+88	-30	0
+89	-30	0
+90	-30	0
+91	-30	0
+92	-30	0
+93	-30	0
+94	-30	0
+95	-30	0
+96	-30	0
+97	-30	0
+98	-30	0
+99	-30	0
+100	-30	0
+101	-30	0
+102	-30	0
+103	-30	0
+104	-30	0
+105	-30	0
+106	-30	0
+107	-30	0
+108	-30	0
+109	-30	0
+110	-30	0
+111	-30	0
+112	-30	0
+113	-30	0
+114	-30	0
+115	-30	0
+116	-30	0
+117	-30	0
+118	-30	0
+119	-30	0
+120	-30	0
+121	-30	0
+122	-30	0
+123	-30	0
+124	-30	0
+125	-30	0
+126	-30	0
+127	-30	0
+128	-30	0
+129	-30	0
+130	-30	0
+131	-30	0
+132	-30	0
+133	-30	0
+134	-30	0
+135	-30	0
+136	-30	0
+137	-30	0
+138	-30	0
+139	-30	0
+140	-30	0
+141	-30	0
+142	-30	0
+143	-30	0
+144	-30	0
+145	-30	0
+146	-30	0
+147	-30	0
+148	-30	0
+149	-30	0
+150	-30	0
+151	-30	0
+152	-30	0
+153	-30	0
+154	-30	0
+155	-30	0
+156	-30	0
+157	-30	0
+158	-30	0
+159	-30	0
+160	-30	0
+161	-30	0
+162	-30	0
+163	-30	0
+164	-30	0
+165	-30	0
+166	-30	0
+167	-30	0
+168	-30	0
+169	-30	0
+170	-30	0
+171	-30	0
+172	-30	0
+173	-30	0
+174	-30	0
+175	-30	0
+176	-30	0
+177	-30	0
+178	-30	0
+179	-30	0
+180	-30	0
+181	-30	0
+182	-30	0
+183	-30	0
+184	-30	0
+185	-30	0
+186	-30	0
+187	-30	0
+188	-30	0
+189	-30	0
+190	-30	0
+191	-30	0
+192	-30	0
+193	-30	0
+194	-30	0
+195	-30	0
+196	-30	0
+197	-30	0
+198	-30	0
+199	-30	0
+200	-30	0
+201	-30	0
+202	-30	0
+203	-30	0
+204	-30	0
+205	-30	0
+206	-30	0
+207	-30	0
+208	-30	0
+209	-30	0
+210	-30	0
+211	-30	0
+212	-30	0
+213	-30	0
+214	-30	0
+215	-30	0
+216	-30	0
+217	-30	0
+218	-30	0
+219	-30	0
+220	-30	0
+221	-30	0
+222	-30	0
+223	-30	0
+224	-30	0
+225	-30	0
+226	-30	0
+227	-30	0
+228	-30	0
+229	-30	0
+230	-30	0
+231	-30	0
+232	-30	0
+233	-30	0
+234	-30	0
+235	-30	0
+236	-30	0
+237	-30	0
+238	-30	0
+239	-30	0
+240	-30	0
+241	-30	0
+242	-30	0
+243	-30	0
+244	-30	0
+245	-30	0
+246	-30	0
+247	-30	0
+248	-30	0
+249	-30	0
+250	-30	0
+251	-30	0
+252	-30	0
+253	-30	0
+254	-30	0
+255	-30	0
+256	-30	0
+257	-30	0
+258	-30	0
+259	-30	0
+260	-30	0
+261	-30	0
+262	-30	0
+263	-30	0
+264	-30	0
+265	-30	0
+266	-30	0
+267	-30	0
+268	-30	0
+269	-30	0
+270	-30	0
+271	-30	0
+272	-30	0
+273	-30	0
+274	-30	0
+275	-30	0
+276	-30	0
+277	-30	0
+278	-30	0
+279	-30	0
+280	-30	0
+281	-30	0
+282	-30	0
+283	-30	0
+284	-30	0
+285	-30	0
+286	-30	0
+287	-30	0
+288	-30	0
+289	-30	0
+290	-30	0
+291	-30	0
+292	-30	0
+293	-30	0
+294	-30	0
+295	-30	0
+296	-30	0
+297	-30	0
+298	-30	0
+299	-30	0
+300	-30	0
+301	-30	0
+302	-30	0
+303	-30	0
+304	-30	0
+305	-30	0
+306	-30	0
+307	-30	0
+308	-30	0
+309	-30	0
+310	-30	0
+311	-30	0
+312	-30	0
+313	-30	0
+314	-30	0
+315	-30	0
+316	-30	0
+317	-30	0
+318	-30	0
+319	-30	0
+320	-30	0
+321	-30	0
+322	-30	0
+323	-30	0
+324	-30	0
+325	-30	0
+326	-30	0
+327	-30	0
+328	-30	0
+329	-30	0
+330	-30	0
+331	-30	0
+332	-30	0
+333	-30	0
+334	-30	0
+335	-30	0
+336	-30	0
+337	-30	0
+338	-30	0
+339	-30	0
+340	-30	0
+341	-30	0
+342	-30	0
+343	-30	0
+344	-30	0
+345	-30	0
+346	-30	0
+347	-30	0
+348	-30	0
+349	-30	0
+350	-30	0
+351	-30	0
+352	-30	0
+353	-30	0
+354	-30	0
+355	-30	0
+356	-30	0
+357	-30	0
+358	-30	0
+359	-30	0
+360	-30	0
+0	-29.5	0
+1	-29.5	0
+2	-29.5	0
+3	-29.5	0
+4	-29.5	0
+5	-29.5	0
+6	-29.5	0
+7	-29.5	0
+8	-29.5	0
+9	-29.5	0
+10	-29.5	0
+11	-29.5	0
+12	-29.5	0
+13	-29.5	0
+14	-29.5	0
+15	-29.5	0
+16	-29.5	0
+17	-29.5	0
+18	-29.5	0
+19	-29.5	0
+20	-29.5	0
+21	-29.5	0
+22	-29.5	0
+23	-29.5	0
+24	-29.5	0
+25	-29.5	0
+26	-29.5	0
+27	-29.5	0
+28	-29.5	0
+29	-29.5	0
+30	-29.5	0
+31	-29.5	0
+32	-29.5	0
+33	-29.5	0
+34	-29.5	0
+35	-29.5	0
+36	-29.5	0
+37	-29.5	0
+38	-29.5	0
+39	-29.5	0
+40	-29.5	0
+41	-29.5	0
+42	-29.5	0
+43	-29.5	0
+44	-29.5	0
+45	-29.5	0
+46	-29.5	0
+47	-29.5	0
+48	-29.5	0
+49	-29.5	0
+50	-29.5	0
+51	-29.5	0
+52	-29.5	0
+53	-29.5	0
+54	-29.5	0
+55	-29.5	0
+56	-29.5	0
+57	-29.5	0
+58	-29.5	0
+59	-29.5	0
+60	-29.5	0
+61	-29.5	0
+62	-29.5	0
+63	-29.5	0
+64	-29.5	0
+65	-29.5	0
+66	-29.5	0
+67	-29.5	0
+68	-29.5	0
+69	-29.5	0
+70	-29.5	0
+71	-29.5	0
+72	-29.5	0
+73	-29.5	0
+74	-29.5	0
+75	-29.5	0
+76	-29.5	0
+77	-29.5	0
+78	-29.5	0
+79	-29.5	0
+80	-29.5	0
+81	-29.5	0
+82	-29.5	0
+83	-29.5	0
+84	-29.5	0
+85	-29.5	0
+86	-29.5	0
+87	-29.5	0
+88	-29.5	0
+89	-29.5	0
+90	-29.5	0
+91	-29.5	0
+92	-29.5	0
+93	-29.5	0
+94	-29.5	0
+95	-29.5	0
+96	-29.5	0
+97	-29.5	0
+98	-29.5	0
+99	-29.5	0
+100	-29.5	0
+101	-29.5	0
+102	-29.5	0
+103	-29.5	0
+104	-29.5	0
+105	-29.5	0
+106	-29.5	0
+107	-29.5	0
+108	-29.5	0
+109	-29.5	0
+110	-29.5	0
+111	-29.5	0
+112	-29.5	0
+113	-29.5	0
+114	-29.5	0
+115	-29.5	0
+116	-29.5	0
+117	-29.5	0
+118	-29.5	0
+119	-29.5	0
+120	-29.5	0
+121	-29.5	0
+122	-29.5	0
+123	-29.5	0
+124	-29.5	0
+125	-29.5	0
+126	-29.5	0
+127	-29.5	0
+128	-29.5	0
+129	-29.5	0
+130	-29.5	0
+131	-29.5	0
+132	-29.5	0
+133	-29.5	0
+134	-29.5	0
+135	-29.5	0
+136	-29.5	0
+137	-29.5	0
+138	-29.5	0
+139	-29.5	0
+140	-29.5	0
+141	-29.5	0
+142	-29.5	0
+143	-29.5	0
+144	-29.5	0
+145	-29.5	0
+146	-29.5	0
+147	-29.5	0
+148	-29.5	0
+149	-29.5	0
+150	-29.5	0
+151	-29.5	0
+152	-29.5	0
+153	-29.5	0
+154	-29.5	0
+155	-29.5	0
+156	-29.5	0
+157	-29.5	0
+158	-29.5	0
+159	-29.5	0
+160	-29.5	0
+161	-29.5	0
+162	-29.5	0
+163	-29.5	0
+164	-29.5	0
+165	-29.5	0
+166	-29.5	0
+167	-29.5	0
+168	-29.5	0
+169	-29.5	0
+170	-29.5	0
+171	-29.5	0
+172	-29.5	0
+173	-29.5	0
+174	-29.5	0
+175	-29.5	0
+176	-29.5	0
+177	-29.5	0
+178	-29.5	0
+179	-29.5	0
+180	-29.5	0
+181	-29.5	0
+182	-29.5	0
+183	-29.5	0
+184	-29.5	0
+185	-29.5	0
+186	-29.5	0
+187	-29.5	0
+188	-29.5	0
+189	-29.5	0
+190	-29.5	0
+191	-29.5	0
+192	-29.5	0
+193	-29.5	0
+194	-29.5	0
+195	-29.5	0
+196	-29.5	0
+197	-29.5	0
+198	-29.5	0
+199	-29.5	0
+200	-29.5	0
+201	-29.5	0
+202	-29.5	0
+203	-29.5	0
+204	-29.5	0
+205	-29.5	0
+206	-29.5	0
+207	-29.5	0
+208	-29.5	0
+209	-29.5	0
+210	-29.5	0
+211	-29.5	0
+212	-29.5	0
+213	-29.5	0
+214	-29.5	0
+215	-29.5	0
+216	-29.5	0
+217	-29.5	0
+218	-29.5	0
+219	-29.5	0
+220	-29.5	0
+221	-29.5	0
+222	-29.5	0
+223	-29.5	0
+224	-29.5	0
+225	-29.5	0
+226	-29.5	0
+227	-29.5	0
+228	-29.5	0
+229	-29.5	0
+230	-29.5	0
+231	-29.5	0
+232	-29.5	0
+233	-29.5	0
+234	-29.5	0
+235	-29.5	0
+236	-29.5	0
+237	-29.5	0
+238	-29.5	0
+239	-29.5	0
+240	-29.5	0
+241	-29.5	0
+242	-29.5	0
+243	-29.5	0
+244	-29.5	0
+245	-29.5	0
+246	-29.5	0
+247	-29.5	0
+248	-29.5	0
+249	-29.5	0
+250	-29.5	0
+251	-29.5	0
+252	-29.5	0
+253	-29.5	0
+254	-29.5	0
+255	-29.5	0
+256	-29.5	0
+257	-29.5	0
+258	-29.5	0
+259	-29.5	0
+260	-29.5	0
+261	-29.5	0
+262	-29.5	0
+263	-29.5	0
+264	-29.5	0
+265	-29.5	0
+266	-29.5	0
+267	-29.5	0
+268	-29.5	0
+269	-29.5	0
+270	-29.5	0
+271	-29.5	0
+272	-29.5	0
+273	-29.5	0
+274	-29.5	0
+275	-29.5	0
+276	-29.5	0
+277	-29.5	0
+278	-29.5	0
+279	-29.5	0
+280	-29.5	0
+281	-29.5	0
+282	-29.5	0
+283	-29.5	0
+284	-29.5	0
+285	-29.5	0
+286	-29.5	0
+287	-29.5	0
+288	-29.5	0
+289	-29.5	0
+290	-29.5	0
+291	-29.5	0
+292	-29.5	0
+293	-29.5	0
+294	-29.5	0
+295	-29.5	0
+296	-29.5	0
+297	-29.5	0
+298	-29.5	0
+299	-29.5	0
+300	-29.5	0
+301	-29.5	0
+302	-29.5	0
+303	-29.5	0
+304	-29.5	0
+305	-29.5	0
+306	-29.5	0
+307	-29.5	0
+308	-29.5	0
+309	-29.5	0
+310	-29.5	0
+311	-29.5	0
+312	-29.5	0
+313	-29.5	0
+314	-29.5	0
+315	-29.5	0
+316	-29.5	0
+317	-29.5	0
+318	-29.5	0
+319	-29.5	0
+320	-29.5	0
+321	-29.5	0
+322	-29.5	0
+323	-29.5	0
+324	-29.5	0
+325	-29.5	0
+326	-29.5	0
+327	-29.5	0
+328	-29.5	0
+329	-29.5	0
+330	-29.5	0
+331	-29.5	0
+332	-29.5	0
+333	-29.5	0
+334	-29.5	0
+335	-29.5	0
+336	-29.5	0
+337	-29.5	0
+338	-29.5	0
+339	-29.5	0
+340	-29.5	0
+341	-29.5	0
+342	-29.5	0
+343	-29.5	0
+344	-29.5	0
+345	-29.5	0
+346	-29.5	0
+347	-29.5	0
+348	-29.5	0
+349	-29.5	0
+350	-29.5	0
+351	-29.5	0
+352	-29.5	0
+353	-29.5	0
+354	-29.5	0
+355	-29.5	0
+356	-29.5	0
+357	-29.5	0
+358	-29.5	0
+359	-29.5	0
+360	-29.5	0
+0	-29	0
+1	-29	0
+2	-29	0
+3	-29	0
+4	-29	0
+5	-29	0
+6	-29	0
+7	-29	0
+8	-29	0
+9	-29	0
+10	-29	0
+11	-29	0
+12	-29	0
+13	-29	0
+14	-29	0
+15	-29	0
+16	-29	0
+17	-29	0
+18	-29	0
+19	-29	0
+20	-29	0
+21	-29	0
+22	-29	0
+23	-29	0
+24	-29	0
+25	-29	0
+26	-29	0
+27	-29	0
+28	-29	0
+29	-29	0
+30	-29	0
+31	-29	0
+32	-29	0
+33	-29	0
+34	-29	0
+35	-29	0
+36	-29	0
+37	-29	0
+38	-29	0
+39	-29	0
+40	-29	0
+41	-29	0
+42	-29	0
+43	-29	0
+44	-29	0
+45	-29	0
+46	-29	0
+47	-29	0
+48	-29	0
+49	-29	0
+50	-29	0
+51	-29	0
+52	-29	0
+53	-29	0
+54	-29	0
+55	-29	0
+56	-29	0
+57	-29	0
+58	-29	0
+59	-29	0
+60	-29	0
+61	-29	0
+62	-29	0
+63	-29	0
+64	-29	0
+65	-29	0
+66	-29	0
+67	-29	0
+68	-29	0
+69	-29	0
+70	-29	0
+71	-29	0
+72	-29	0
+73	-29	0
+74	-29	0
+75	-29	0
+76	-29	0
+77	-29	0
+78	-29	0
+79	-29	0
+80	-29	0
+81	-29	0
+82	-29	0
+83	-29	0
+84	-29	0
+85	-29	0
+86	-29	0
+87	-29	0
+88	-29	0
+89	-29	0
+90	-29	0
+91	-29	0
+92	-29	0
+93	-29	0
+94	-29	0
+95	-29	0
+96	-29	0
+97	-29	0
+98	-29	0
+99	-29	0
+100	-29	0
+101	-29	0
+102	-29	0
+103	-29	0
+104	-29	0
+105	-29	0
+106	-29	0
+107	-29	0
+108	-29	0
+109	-29	0
+110	-29	0
+111	-29	0
+112	-29	0
+113	-29	0
+114	-29	0
+115	-29	0
+116	-29	0
+117	-29	0
+118	-29	0
+119	-29	0
+120	-29	0
+121	-29	0
+122	-29	0
+123	-29	0
+124	-29	0
+125	-29	0
+126	-29	0
+127	-29	0
+128	-29	0
+129	-29	0
+130	-29	0
+131	-29	0
+132	-29	0
+133	-29	0
+134	-29	0
+135	-29	0
+136	-29	0
+137	-29	0
+138	-29	0
+139	-29	0
+140	-29	0
+141	-29	0
+142	-29	0
+143	-29	0
+144	-29	0
+145	-29	0
+146	-29	0
+147	-29	0
+148	-29	0
+149	-29	0
+150	-29	0
+151	-29	0
+152	-29	0
+153	-29	0
+154	-29	0
+155	-29	0
+156	-29	0
+157	-29	0
+158	-29	0
+159	-29	0
+160	-29	0
+161	-29	0
+162	-29	0
+163	-29	0
+164	-29	0
+165	-29	0
+166	-29	0
+167	-29	0
+168	-29	0
+169	-29	0
+170	-29	0
+171	-29	0
+172	-29	0
+173	-29	0
+174	-29	0
+175	-29	0
+176	-29	0
+177	-29	0
+178	-29	0
+179	-29	0
+180	-29	0
+181	-29	0
+182	-29	0
+183	-29	0
+184	-29	0
+185	-29	0
+186	-29	0
+187	-29	0
+188	-29	0
+189	-29	0
+190	-29	0
+191	-29	0
+192	-29	0
+193	-29	0
+194	-29	0
+195	-29	0
+196	-29	0
+197	-29	0
+198	-29	0
+199	-29	0
+200	-29	0
+201	-29	0
+202	-29	0
+203	-29	0
+204	-29	0
+205	-29	0
+206	-29	0
+207	-29	0
+208	-29	0
+209	-29	0
+210	-29	0
+211	-29	0
+212	-29	0
+213	-29	0
+214	-29	0
+215	-29	0
+216	-29	0
+217	-29	0
+218	-29	0
+219	-29	0
+220	-29	0
+221	-29	0
+222	-29	0
+223	-29	0
+224	-29	0
+225	-29	0
+226	-29	0
+227	-29	0
+228	-29	0
+229	-29	0
+230	-29	0
+231	-29	0
+232	-29	0
+233	-29	0
+234	-29	0
+235	-29	0
+236	-29	0
+237	-29	0
+238	-29	0
+239	-29	0
+240	-29	0
+241	-29	0
+242	-29	0
+243	-29	0
+244	-29	0
+245	-29	0
+246	-29	0
+247	-29	0
+248	-29	0
+249	-29	0
+250	-29	0
+251	-29	0
+252	-29	0
+253	-29	0
+254	-29	0
+255	-29	0
+256	-29	0
+257	-29	0
+258	-29	0
+259	-29	0
+260	-29	0
+261	-29	0
+262	-29	0
+263	-29	0
+264	-29	0
+265	-29	0
+266	-29	0
+267	-29	0
+268	-29	0
+269	-29	0
+270	-29	0
+271	-29	0
+272	-29	0
+273	-29	0
+274	-29	0
+275	-29	0
+276	-29	0
+277	-29	0
+278	-29	0
+279	-29	0
+280	-29	0
+281	-29	0
+282	-29	0
+283	-29	0
+284	-29	0
+285	-29	0
+286	-29	0
+287	-29	0
+288	-29	0
+289	-29	0
+290	-29	0
+291	-29	0
+292	-29	0
+293	-29	0
+294	-29	0
+295	-29	0
+296	-29	0
+297	-29	0
+298	-29	0
+299	-29	0
+300	-29	0
+301	-29	0
+302	-29	0
+303	-29	0
+304	-29	0
+305	-29	0
+306	-29	0
+307	-29	0
+308	-29	0
+309	-29	0
+310	-29	0
+311	-29	0
+312	-29	0
+313	-29	0
+314	-29	0
+315	-29	0
+316	-29	0
+317	-29	0
+318	-29	0
+319	-29	0
+320	-29	0
+321	-29	0
+322	-29	0
+323	-29	0
+324	-29	0
+325	-29	0
+326	-29	0
+327	-29	0
+328	-29	0
+329	-29	0
+330	-29	0
+331	-29	0
+332	-29	0
+333	-29	0
+334	-29	0
+335	-29	0
+336	-29	0
+337	-29	0
+338	-29	0
+339	-29	0
+340	-29	0
+341	-29	0
+342	-29	0
+343	-29	0
+344	-29	0
+345	-29	0
+346	-29	0
+347	-29	0
+348	-29	0
+349	-29	0
+350	-29	0
+351	-29	0
+352	-29	0
+353	-29	0
+354	-29	0
+355	-29	0
+356	-29	0
+357	-29	0
+358	-29	0
+359	-29	0
+360	-29	0
+0	-28.5	0
+1	-28.5	0
+2	-28.5	0
+3	-28.5	0
+4	-28.5	0
+5	-28.5	0
+6	-28.5	0
+7	-28.5	0
+8	-28.5	0
+9	-28.5	0
+10	-28.5	0
+11	-28.5	0
+12	-28.5	0
+13	-28.5	0
+14	-28.5	0
+15	-28.5	0
+16	-28.5	0
+17	-28.5	0
+18	-28.5	0
+19	-28.5	0
+20	-28.5	0
+21	-28.5	0
+22	-28.5	0
+23	-28.5	0
+24	-28.5	0
+25	-28.5	0
+26	-28.5	0
+27	-28.5	0
+28	-28.5	0
+29	-28.5	0
+30	-28.5	0
+31	-28.5	0
+32	-28.5	0
+33	-28.5	0
+34	-28.5	0
+35	-28.5	0
+36	-28.5	0
+37	-28.5	0
+38	-28.5	0
+39	-28.5	0
+40	-28.5	0
+41	-28.5	0
+42	-28.5	0
+43	-28.5	0
+44	-28.5	0
+45	-28.5	0
+46	-28.5	0
+47	-28.5	0
+48	-28.5	0
+49	-28.5	0
+50	-28.5	0
+51	-28.5	0
+52	-28.5	0
+53	-28.5	0
+54	-28.5	0
+55	-28.5	0
+56	-28.5	0
+57	-28.5	0
+58	-28.5	0
+59	-28.5	0
+60	-28.5	0
+61	-28.5	0
+62	-28.5	0
+63	-28.5	0
+64	-28.5	0
+65	-28.5	0
+66	-28.5	0
+67	-28.5	0
+68	-28.5	0
+69	-28.5	0
+70	-28.5	0
+71	-28.5	0
+72	-28.5	0
+73	-28.5	0
+74	-28.5	0
+75	-28.5	0
+76	-28.5	0
+77	-28.5	0
+78	-28.5	0
+79	-28.5	0
+80	-28.5	0
+81	-28.5	0
+82	-28.5	0
+83	-28.5	0
+84	-28.5	0
+85	-28.5	0
+86	-28.5	0
+87	-28.5	0
+88	-28.5	0
+89	-28.5	0
+90	-28.5	0
+91	-28.5	0
+92	-28.5	0
+93	-28.5	0
+94	-28.5	0
+95	-28.5	0
+96	-28.5	0
+97	-28.5	0
+98	-28.5	0
+99	-28.5	0
+100	-28.5	0
+101	-28.5	0
+102	-28.5	0
+103	-28.5	0
+104	-28.5	0
+105	-28.5	0
+106	-28.5	0
+107	-28.5	0
+108	-28.5	0
+109	-28.5	0
+110	-28.5	0
+111	-28.5	0
+112	-28.5	0
+113	-28.5	0
+114	-28.5	0
+115	-28.5	0
+116	-28.5	0
+117	-28.5	0
+118	-28.5	0
+119	-28.5	0
+120	-28.5	0
+121	-28.5	0
+122	-28.5	0
+123	-28.5	0
+124	-28.5	0
+125	-28.5	0
+126	-28.5	0
+127	-28.5	0
+128	-28.5	0
+129	-28.5	0
+130	-28.5	0
+131	-28.5	0
+132	-28.5	0
+133	-28.5	0
+134	-28.5	0
+135	-28.5	0
+136	-28.5	0
+137	-28.5	0
+138	-28.5	0
+139	-28.5	0
+140	-28.5	0
+141	-28.5	0
+142	-28.5	0
+143	-28.5	0
+144	-28.5	0
+145	-28.5	0
+146	-28.5	0
+147	-28.5	0
+148	-28.5	0
+149	-28.5	0
+150	-28.5	0
+151	-28.5	0
+152	-28.5	0
+153	-28.5	0
+154	-28.5	0
+155	-28.5	0
+156	-28.5	0
+157	-28.5	0
+158	-28.5	0
+159	-28.5	0
+160	-28.5	0
+161	-28.5	0
+162	-28.5	0
+163	-28.5	0
+164	-28.5	0
+165	-28.5	0
+166	-28.5	0
+167	-28.5	0
+168	-28.5	0
+169	-28.5	0
+170	-28.5	0
+171	-28.5	0
+172	-28.5	0
+173	-28.5	0
+174	-28.5	0
+175	-28.5	0
+176	-28.5	0
+177	-28.5	0
+178	-28.5	0
+179	-28.5	0
+180	-28.5	0
+181	-28.5	0
+182	-28.5	0
+183	-28.5	0
+184	-28.5	0
+185	-28.5	0
+186	-28.5	0
+187	-28.5	0
+188	-28.5	0
+189	-28.5	0
+190	-28.5	0
+191	-28.5	0
+192	-28.5	0
+193	-28.5	0
+194	-28.5	0
+195	-28.5	0
+196	-28.5	0
+197	-28.5	0
+198	-28.5	0
+199	-28.5	0
+200	-28.5	0
+201	-28.5	0
+202	-28.5	0
+203	-28.5	0
+204	-28.5	0
+205	-28.5	0
+206	-28.5	0
+207	-28.5	0
+208	-28.5	0
+209	-28.5	0
+210	-28.5	0
+211	-28.5	0
+212	-28.5	0
+213	-28.5	0
+214	-28.5	0
+215	-28.5	0
+216	-28.5	0
+217	-28.5	0
+218	-28.5	0
+219	-28.5	0
+220	-28.5	0
+221	-28.5	0
+222	-28.5	0
+223	-28.5	0
+224	-28.5	0
+225	-28.5	0
+226	-28.5	0
+227	-28.5	0
+228	-28.5	0
+229	-28.5	0
+230	-28.5	0
+231	-28.5	0
+232	-28.5	0
+233	-28.5	0
+234	-28.5	0
+235	-28.5	0
+236	-28.5	0
+237	-28.5	0
+238	-28.5	0
+239	-28.5	0
+240	-28.5	0
+241	-28.5	0
+242	-28.5	0
+243	-28.5	0
+244	-28.5	0
+245	-28.5	0
+246	-28.5	0
+247	-28.5	0
+248	-28.5	0
+249	-28.5	0
+250	-28.5	0
+251	-28.5	0
+252	-28.5	0
+253	-28.5	0
+254	-28.5	0
+255	-28.5	0
+256	-28.5	0
+257	-28.5	0
+258	-28.5	0
+259	-28.5	0
+260	-28.5	0
+261	-28.5	0
+262	-28.5	0
+263	-28.5	0
+264	-28.5	0
+265	-28.5	0
+266	-28.5	0
+267	-28.5	0
+268	-28.5	0
+269	-28.5	0
+270	-28.5	0
+271	-28.5	0
+272	-28.5	0
+273	-28.5	0
+274	-28.5	0
+275	-28.5	0
+276	-28.5	0
+277	-28.5	0
+278	-28.5	0
+279	-28.5	0
+280	-28.5	0
+281	-28.5	0
+282	-28.5	0
+283	-28.5	0
+284	-28.5	0
+285	-28.5	0
+286	-28.5	0
+287	-28.5	0
+288	-28.5	0
+289	-28.5	0
+290	-28.5	0
+291	-28.5	0
+292	-28.5	0
+293	-28.5	0
+294	-28.5	0
+295	-28.5	0
+296	-28.5	0
+297	-28.5	0
+298	-28.5	0
+299	-28.5	0
+300	-28.5	0
+301	-28.5	0
+302	-28.5	0
+303	-28.5	0
+304	-28.5	0
+305	-28.5	0
+306	-28.5	0
+307	-28.5	0
+308	-28.5	0
+309	-28.5	0
+310	-28.5	0
+311	-28.5	0
+312	-28.5	0
+313	-28.5	0
+314	-28.5	0
+315	-28.5	0
+316	-28.5	0
+317	-28.5	0
+318	-28.5	0
+319	-28.5	0
+320	-28.5	0
+321	-28.5	0
+322	-28.5	0
+323	-28.5	0
+324	-28.5	0
+325	-28.5	0
+326	-28.5	0
+327	-28.5	0
+328	-28.5	0
+329	-28.5	0
+330	-28.5	0
+331	-28.5	0
+332	-28.5	0
+333	-28.5	0
+334	-28.5	0
+335	-28.5	0
+336	-28.5	0
+337	-28.5	0
+338	-28.5	0
+339	-28.5	0
+340	-28.5	0
+341	-28.5	0
+342	-28.5	0
+343	-28.5	0
+344	-28.5	0
+345	-28.5	0
+346	-28.5	0
+347	-28.5	0
+348	-28.5	0
+349	-28.5	0
+350	-28.5	0
+351	-28.5	0
+352	-28.5	0
+353	-28.5	0
+354	-28.5	0
+355	-28.5	0
+356	-28.5	0
+357	-28.5	0
+358	-28.5	0
+359	-28.5	0
+360	-28.5	0
+0	-28	0
+1	-28	0
+2	-28	0
+3	-28	0
+4	-28	0
+5	-28	0
+6	-28	0
+7	-28	0
+8	-28	0
+9	-28	0
+10	-28	0
+11	-28	0
+12	-28	0
+13	-28	0
+14	-28	0
+15	-28	0
+16	-28	0
+17	-28	0
+18	-28	0
+19	-28	0
+20	-28	0
+21	-28	0
+22	-28	0
+23	-28	0
+24	-28	0
+25	-28	0
+26	-28	0
+27	-28	0
+28	-28	0
+29	-28	0
+30	-28	0
+31	-28	0
+32	-28	0
+33	-28	0
+34	-28	0
+35	-28	0
+36	-28	0
+37	-28	0
+38	-28	0
+39	-28	0
+40	-28	0
+41	-28	0
+42	-28	0
+43	-28	0
+44	-28	0
+45	-28	0
+46	-28	0
+47	-28	0
+48	-28	0
+49	-28	0
+50	-28	0
+51	-28	0
+52	-28	0
+53	-28	0
+54	-28	0
+55	-28	0
+56	-28	0
+57	-28	0
+58	-28	0
+59	-28	0
+60	-28	0
+61	-28	0
+62	-28	0
+63	-28	0
+64	-28	0
+65	-28	0
+66	-28	0
+67	-28	0
+68	-28	0
+69	-28	0
+70	-28	0
+71	-28	0
+72	-28	0
+73	-28	0
+74	-28	0
+75	-28	0
+76	-28	0
+77	-28	0
+78	-28	0
+79	-28	0
+80	-28	0
+81	-28	0
+82	-28	0
+83	-28	0
+84	-28	0
+85	-28	0
+86	-28	0
+87	-28	0
+88	-28	0
+89	-28	0
+90	-28	0
+91	-28	0
+92	-28	0
+93	-28	0
+94	-28	0
+95	-28	0
+96	-28	0
+97	-28	0
+98	-28	0
+99	-28	0
+100	-28	0
+101	-28	0
+102	-28	0
+103	-28	0
+104	-28	0
+105	-28	0
+106	-28	0
+107	-28	0
+108	-28	0
+109	-28	0
+110	-28	0
+111	-28	0
+112	-28	0
+113	-28	0
+114	-28	0
+115	-28	0
+116	-28	0
+117	-28	0
+118	-28	0
+119	-28	0
+120	-28	0
+121	-28	0
+122	-28	0
+123	-28	0
+124	-28	0
+125	-28	0
+126	-28	0
+127	-28	0
+128	-28	0
+129	-28	0
+130	-28	0
+131	-28	0
+132	-28	0
+133	-28	0
+134	-28	0
+135	-28	0
+136	-28	0
+137	-28	0
+138	-28	0
+139	-28	0
+140	-28	0
+141	-28	0
+142	-28	0
+143	-28	0
+144	-28	0
+145	-28	0
+146	-28	0
+147	-28	0
+148	-28	0
+149	-28	0
+150	-28	0
+151	-28	0
+152	-28	0
+153	-28	0
+154	-28	0
+155	-28	0
+156	-28	0
+157	-28	0
+158	-28	0
+159	-28	0
+160	-28	0
+161	-28	0
+162	-28	0
+163	-28	0
+164	-28	0
+165	-28	0
+166	-28	0
+167	-28	0
+168	-28	0
+169	-28	0
+170	-28	0
+171	-28	0
+172	-28	0
+173	-28	0
+174	-28	0
+175	-28	0
+176	-28	0
+177	-28	0
+178	-28	0
+179	-28	0
+180	-28	0
+181	-28	0
+182	-28	0
+183	-28	0
+184	-28	0
+185	-28	0
+186	-28	0
+187	-28	0
+188	-28	0
+189	-28	0
+190	-28	0
+191	-28	0
+192	-28	0
+193	-28	0
+194	-28	0
+195	-28	0
+196	-28	0
+197	-28	0
+198	-28	0
+199	-28	0
+200	-28	0
+201	-28	0
+202	-28	0
+203	-28	0
+204	-28	0
+205	-28	0
+206	-28	0
+207	-28	0
+208	-28	0
+209	-28	0
+210	-28	0
+211	-28	0
+212	-28	0
+213	-28	0
+214	-28	0
+215	-28	0
+216	-28	0
+217	-28	0
+218	-28	0
+219	-28	0
+220	-28	0
+221	-28	0
+222	-28	0
+223	-28	0
+224	-28	0
+225	-28	0
+226	-28	0
+227	-28	0
+228	-28	0
+229	-28	0
+230	-28	0
+231	-28	0
+232	-28	0
+233	-28	0
+234	-28	0
+235	-28	0
+236	-28	0
+237	-28	0
+238	-28	0
+239	-28	0
+240	-28	0
+241	-28	0
+242	-28	0
+243	-28	0
+244	-28	0
+245	-28	0
+246	-28	0
+247	-28	0
+248	-28	0
+249	-28	0
+250	-28	0
+251	-28	0
+252	-28	0
+253	-28	0
+254	-28	0
+255	-28	0
+256	-28	0
+257	-28	0
+258	-28	0
+259	-28	0
+260	-28	0
+261	-28	0
+262	-28	0
+263	-28	0
+264	-28	0
+265	-28	0
+266	-28	0
+267	-28	0
+268	-28	0
+269	-28	0
+270	-28	0
+271	-28	0
+272	-28	0
+273	-28	0
+274	-28	0
+275	-28	0
+276	-28	0
+277	-28	0
+278	-28	0
+279	-28	0
+280	-28	0
+281	-28	0
+282	-28	0
+283	-28	0
+284	-28	0
+285	-28	0
+286	-28	0
+287	-28	0
+288	-28	0
+289	-28	0
+290	-28	0
+291	-28	0
+292	-28	0
+293	-28	0
+294	-28	0
+295	-28	0
+296	-28	0
+297	-28	0
+298	-28	0
+299	-28	0
+300	-28	0
+301	-28	0
+302	-28	0
+303	-28	0
+304	-28	0
+305	-28	0
+306	-28	0
+307	-28	0
+308	-28	0
+309	-28	0
+310	-28	0
+311	-28	0
+312	-28	0
+313	-28	0
+314	-28	0
+315	-28	0
+316	-28	0
+317	-28	0
+318	-28	0
+319	-28	0
+320	-28	0
+321	-28	0
+322	-28	0
+323	-28	0
+324	-28	0
+325	-28	0
+326	-28	0
+327	-28	0
+328	-28	0
+329	-28	0
+330	-28	0
+331	-28	0
+332	-28	0
+333	-28	0
+334	-28	0
+335	-28	0
+336	-28	0
+337	-28	0
+338	-28	0
+339	-28	0
+340	-28	0
+341	-28	0
+342	-28	0
+343	-28	0
+344	-28	0
+345	-28	0
+346	-28	0
+347	-28	0
+348	-28	0
+349	-28	0
+350	-28	0
+351	-28	0
+352	-28	0
+353	-28	0
+354	-28	0
+355	-28	0
+356	-28	0
+357	-28	0
+358	-28	0
+359	-28	0
+360	-28	0
+0	-27.5	0
+1	-27.5	0
+2	-27.5	0
+3	-27.5	0
+4	-27.5	0
+5	-27.5	0
+6	-27.5	0
+7	-27.5	0
+8	-27.5	0
+9	-27.5	0
+10	-27.5	0
+11	-27.5	0
+12	-27.5	0
+13	-27.5	0
+14	-27.5	0
+15	-27.5	0
+16	-27.5	0
+17	-27.5	0
+18	-27.5	0
+19	-27.5	0
+20	-27.5	0
+21	-27.5	0
+22	-27.5	0
+23	-27.5	0
+24	-27.5	0
+25	-27.5	0
+26	-27.5	0
+27	-27.5	0
+28	-27.5	0
+29	-27.5	0
+30	-27.5	0
+31	-27.5	0
+32	-27.5	0
+33	-27.5	0
+34	-27.5	0
+35	-27.5	0
+36	-27.5	0
+37	-27.5	0
+38	-27.5	0
+39	-27.5	0
+40	-27.5	0
+41	-27.5	0
+42	-27.5	0
+43	-27.5	0
+44	-27.5	0
+45	-27.5	0
+46	-27.5	0
+47	-27.5	0
+48	-27.5	0
+49	-27.5	0
+50	-27.5	0
+51	-27.5	0
+52	-27.5	0
+53	-27.5	0
+54	-27.5	0
+55	-27.5	0
+56	-27.5	0
+57	-27.5	0
+58	-27.5	0
+59	-27.5	0
+60	-27.5	0
+61	-27.5	0
+62	-27.5	0
+63	-27.5	0
+64	-27.5	0
+65	-27.5	0
+66	-27.5	0
+67	-27.5	0
+68	-27.5	0
+69	-27.5	0
+70	-27.5	0
+71	-27.5	0
+72	-27.5	0
+73	-27.5	0
+74	-27.5	0
+75	-27.5	0
+76	-27.5	0
+77	-27.5	0
+78	-27.5	0
+79	-27.5	0
+80	-27.5	0
+81	-27.5	0
+82	-27.5	0
+83	-27.5	0
+84	-27.5	0
+85	-27.5	0
+86	-27.5	0
+87	-27.5	0
+88	-27.5	0
+89	-27.5	0
+90	-27.5	0
+91	-27.5	0
+92	-27.5	0
+93	-27.5	0
+94	-27.5	0
+95	-27.5	0
+96	-27.5	0
+97	-27.5	0
+98	-27.5	0
+99	-27.5	0
+100	-27.5	0
+101	-27.5	0
+102	-27.5	0
+103	-27.5	0
+104	-27.5	0
+105	-27.5	0
+106	-27.5	0
+107	-27.5	0
+108	-27.5	0
+109	-27.5	0
+110	-27.5	0
+111	-27.5	0
+112	-27.5	0
+113	-27.5	0
+114	-27.5	0
+115	-27.5	0
+116	-27.5	0
+117	-27.5	0
+118	-27.5	0
+119	-27.5	0
+120	-27.5	0
+121	-27.5	0
+122	-27.5	0
+123	-27.5	0
+124	-27.5	0
+125	-27.5	0
+126	-27.5	0
+127	-27.5	0
+128	-27.5	0
+129	-27.5	0
+130	-27.5	0
+131	-27.5	0
+132	-27.5	0
+133	-27.5	0
+134	-27.5	0
+135	-27.5	0
+136	-27.5	0
+137	-27.5	0
+138	-27.5	0
+139	-27.5	0
+140	-27.5	0
+141	-27.5	0
+142	-27.5	0
+143	-27.5	0
+144	-27.5	0
+145	-27.5	0
+146	-27.5	0
+147	-27.5	0
+148	-27.5	0
+149	-27.5	0
+150	-27.5	0
+151	-27.5	0
+152	-27.5	0
+153	-27.5	0
+154	-27.5	0
+155	-27.5	0
+156	-27.5	0
+157	-27.5	0
+158	-27.5	0
+159	-27.5	0
+160	-27.5	0
+161	-27.5	0
+162	-27.5	0
+163	-27.5	0
+164	-27.5	0
+165	-27.5	0
+166	-27.5	0
+167	-27.5	0
+168	-27.5	0
+169	-27.5	0
+170	-27.5	0
+171	-27.5	0
+172	-27.5	0
+173	-27.5	0
+174	-27.5	0
+175	-27.5	0
+176	-27.5	0
+177	-27.5	0
+178	-27.5	0
+179	-27.5	0
+180	-27.5	0
+181	-27.5	0
+182	-27.5	0
+183	-27.5	0
+184	-27.5	0
+185	-27.5	0
+186	-27.5	0
+187	-27.5	0
+188	-27.5	0
+189	-27.5	0
+190	-27.5	0
+191	-27.5	0
+192	-27.5	0
+193	-27.5	0
+194	-27.5	0
+195	-27.5	0
+196	-27.5	0
+197	-27.5	0
+198	-27.5	0
+199	-27.5	0
+200	-27.5	0
+201	-27.5	0
+202	-27.5	0
+203	-27.5	0
+204	-27.5	0
+205	-27.5	0
+206	-27.5	0
+207	-27.5	0
+208	-27.5	0
+209	-27.5	0
+210	-27.5	0
+211	-27.5	0
+212	-27.5	0
+213	-27.5	0
+214	-27.5	0
+215	-27.5	0
+216	-27.5	0
+217	-27.5	0
+218	-27.5	0
+219	-27.5	0
+220	-27.5	0
+221	-27.5	0
+222	-27.5	0
+223	-27.5	0
+224	-27.5	0
+225	-27.5	0
+226	-27.5	0
+227	-27.5	0
+228	-27.5	0
+229	-27.5	0
+230	-27.5	0
+231	-27.5	0
+232	-27.5	0
+233	-27.5	0
+234	-27.5	0
+235	-27.5	0
+236	-27.5	0
+237	-27.5	0
+238	-27.5	0
+239	-27.5	0
+240	-27.5	0
+241	-27.5	0
+242	-27.5	0
+243	-27.5	0
+244	-27.5	0
+245	-27.5	0
+246	-27.5	0
+247	-27.5	0
+248	-27.5	0
+249	-27.5	0
+250	-27.5	0
+251	-27.5	0
+252	-27.5	0
+253	-27.5	0
+254	-27.5	0
+255	-27.5	0
+256	-27.5	0
+257	-27.5	0
+258	-27.5	0
+259	-27.5	0
+260	-27.5	0
+261	-27.5	0
+262	-27.5	0
+263	-27.5	0
+264	-27.5	0
+265	-27.5	0
+266	-27.5	0
+267	-27.5	0
+268	-27.5	0
+269	-27.5	0
+270	-27.5	0
+271	-27.5	0
+272	-27.5	0
+273	-27.5	0
+274	-27.5	0
+275	-27.5	0
+276	-27.5	0
+277	-27.5	0
+278	-27.5	0
+279	-27.5	0
+280	-27.5	0
+281	-27.5	0
+282	-27.5	0
+283	-27.5	0
+284	-27.5	0
+285	-27.5	0
+286	-27.5	0
+287	-27.5	0
+288	-27.5	0
+289	-27.5	0
+290	-27.5	0
+291	-27.5	0
+292	-27.5	0
+293	-27.5	0
+294	-27.5	0
+295	-27.5	0
+296	-27.5	0
+297	-27.5	0
+298	-27.5	0
+299	-27.5	0
+300	-27.5	0
+301	-27.5	0
+302	-27.5	0
+303	-27.5	0
+304	-27.5	0
+305	-27.5	0
+306	-27.5	0
+307	-27.5	0
+308	-27.5	0
+309	-27.5	0
+310	-27.5	0
+311	-27.5	0
+312	-27.5	0
+313	-27.5	0
+314	-27.5	0
+315	-27.5	0
+316	-27.5	0
+317	-27.5	0
+318	-27.5	0
+319	-27.5	0
+320	-27.5	0
+321	-27.5	0
+322	-27.5	0
+323	-27.5	0
+324	-27.5	0
+325	-27.5	0
+326	-27.5	0
+327	-27.5	0
+328	-27.5	0
+329	-27.5	0
+330	-27.5	0
+331	-27.5	0
+332	-27.5	0
+333	-27.5	0
+334	-27.5	0
+335	-27.5	0
+336	-27.5	0
+337	-27.5	0
+338	-27.5	0
+339	-27.5	0
+340	-27.5	0
+341	-27.5	0
+342	-27.5	0
+343	-27.5	0
+344	-27.5	0
+345	-27.5	0
+346	-27.5	0
+347	-27.5	0
+348	-27.5	0
+349	-27.5	0
+350	-27.5	0
+351	-27.5	0
+352	-27.5	0
+353	-27.5	0
+354	-27.5	0
+355	-27.5	0
+356	-27.5	0
+357	-27.5	0
+358	-27.5	0
+359	-27.5	0
+360	-27.5	0
+0	-27	0
+1	-27	0
+2	-27	0
+3	-27	0
+4	-27	0
+5	-27	0
+6	-27	0
+7	-27	0
+8	-27	0
+9	-27	0
+10	-27	0
+11	-27	0
+12	-27	0
+13	-27	0
+14	-27	0
+15	-27	0
+16	-27	0
+17	-27	0
+18	-27	0
+19	-27	0
+20	-27	0
+21	-27	0
+22	-27	0
+23	-27	0
+24	-27	0
+25	-27	0
+26	-27	0
+27	-27	0
+28	-27	0
+29	-27	0
+30	-27	0
+31	-27	0
+32	-27	0
+33	-27	0
+34	-27	0
+35	-27	0
+36	-27	0
+37	-27	0
+38	-27	0
+39	-27	0
+40	-27	0
+41	-27	0
+42	-27	0
+43	-27	0
+44	-27	0
+45	-27	0
+46	-27	0
+47	-27	0
+48	-27	0
+49	-27	0
+50	-27	0
+51	-27	0
+52	-27	0
+53	-27	0
+54	-27	0
+55	-27	0
+56	-27	0
+57	-27	0
+58	-27	0
+59	-27	0
+60	-27	0
+61	-27	0
+62	-27	0
+63	-27	0
+64	-27	0
+65	-27	0
+66	-27	0
+67	-27	0
+68	-27	0
+69	-27	0
+70	-27	0
+71	-27	0
+72	-27	0
+73	-27	0
+74	-27	0
+75	-27	0
+76	-27	0
+77	-27	0
+78	-27	0
+79	-27	0
+80	-27	0
+81	-27	0
+82	-27	0
+83	-27	0
+84	-27	0
+85	-27	0
+86	-27	0
+87	-27	0
+88	-27	0
+89	-27	0
+90	-27	0
+91	-27	0
+92	-27	0
+93	-27	0
+94	-27	0
+95	-27	0
+96	-27	0
+97	-27	0
+98	-27	0
+99	-27	0
+100	-27	0
+101	-27	0
+102	-27	0
+103	-27	0
+104	-27	0
+105	-27	0
+106	-27	0
+107	-27	0
+108	-27	0
+109	-27	0
+110	-27	0
+111	-27	0
+112	-27	0
+113	-27	0
+114	-27	0
+115	-27	0
+116	-27	0
+117	-27	0
+118	-27	0
+119	-27	0
+120	-27	0
+121	-27	0
+122	-27	0
+123	-27	0
+124	-27	0
+125	-27	0
+126	-27	0
+127	-27	0
+128	-27	0
+129	-27	0
+130	-27	0
+131	-27	0
+132	-27	0
+133	-27	0
+134	-27	0
+135	-27	0
+136	-27	0
+137	-27	0
+138	-27	0
+139	-27	0
+140	-27	0
+141	-27	0
+142	-27	0
+143	-27	0
+144	-27	0
+145	-27	0
+146	-27	0
+147	-27	0
+148	-27	0
+149	-27	0
+150	-27	0
+151	-27	0
+152	-27	0
+153	-27	0
+154	-27	0
+155	-27	0
+156	-27	0
+157	-27	0
+158	-27	0
+159	-27	0
+160	-27	0
+161	-27	0
+162	-27	0
+163	-27	0
+164	-27	0
+165	-27	0
+166	-27	0
+167	-27	0
+168	-27	0
+169	-27	0
+170	-27	0
+171	-27	0
+172	-27	0
+173	-27	0
+174	-27	0
+175	-27	0
+176	-27	0
+177	-27	0
+178	-27	0
+179	-27	0
+180	-27	0
+181	-27	0
+182	-27	0
+183	-27	0
+184	-27	0
+185	-27	0
+186	-27	0
+187	-27	0
+188	-27	0
+189	-27	0
+190	-27	0
+191	-27	0
+192	-27	0
+193	-27	0
+194	-27	0
+195	-27	0
+196	-27	0
+197	-27	0
+198	-27	0
+199	-27	0
+200	-27	0
+201	-27	0
+202	-27	0
+203	-27	0
+204	-27	0
+205	-27	0
+206	-27	0
+207	-27	0
+208	-27	0
+209	-27	0
+210	-27	0
+211	-27	0
+212	-27	0
+213	-27	0
+214	-27	0
+215	-27	0
+216	-27	0
+217	-27	0
+218	-27	0
+219	-27	0
+220	-27	0
+221	-27	0
+222	-27	0
+223	-27	0
+224	-27	0
+225	-27	0
+226	-27	0
+227	-27	0
+228	-27	0
+229	-27	0
+230	-27	0
+231	-27	0
+232	-27	0
+233	-27	0
+234	-27	0
+235	-27	0
+236	-27	0
+237	-27	0
+238	-27	0
+239	-27	0
+240	-27	0
+241	-27	0
+242	-27	0
+243	-27	0
+244	-27	0
+245	-27	0
+246	-27	0
+247	-27	0
+248	-27	0
+249	-27	0
+250	-27	0
+251	-27	0
+252	-27	0
+253	-27	0
+254	-27	0
+255	-27	0
+256	-27	0
+257	-27	0
+258	-27	0
+259	-27	0
+260	-27	0
+261	-27	0
+262	-27	0
+263	-27	0
+264	-27	0
+265	-27	0
+266	-27	0
+267	-27	0
+268	-27	0
+269	-27	0
+270	-27	0
+271	-27	0
+272	-27	0
+273	-27	0
+274	-27	0
+275	-27	0
+276	-27	0
+277	-27	0
+278	-27	0
+279	-27	0
+280	-27	0
+281	-27	0
+282	-27	0
+283	-27	0
+284	-27	0
+285	-27	0
+286	-27	0
+287	-27	0
+288	-27	0
+289	-27	0
+290	-27	0
+291	-27	0
+292	-27	0
+293	-27	0
+294	-27	0
+295	-27	0
+296	-27	0
+297	-27	0
+298	-27	0
+299	-27	0
+300	-27	0
+301	-27	0
+302	-27	0
+303	-27	0
+304	-27	0
+305	-27	0
+306	-27	0
+307	-27	0
+308	-27	0
+309	-27	0
+310	-27	0
+311	-27	0
+312	-27	0
+313	-27	0
+314	-27	0
+315	-27	0
+316	-27	0
+317	-27	0
+318	-27	0
+319	-27	0
+320	-27	0
+321	-27	0
+322	-27	0
+323	-27	0
+324	-27	0
+325	-27	0
+326	-27	0
+327	-27	0
+328	-27	0
+329	-27	0
+330	-27	0
+331	-27	0
+332	-27	0
+333	-27	0
+334	-27	0
+335	-27	0
+336	-27	0
+337	-27	0
+338	-27	0
+339	-27	0
+340	-27	0
+341	-27	0
+342	-27	0
+343	-27	0
+344	-27	0
+345	-27	0
+346	-27	0
+347	-27	0
+348	-27	0
+349	-27	0
+350	-27	0
+351	-27	0
+352	-27	0
+353	-27	0
+354	-27	0
+355	-27	0
+356	-27	0
+357	-27	0
+358	-27	0
+359	-27	0
+360	-27	0
+0	-26.5	0
+1	-26.5	0
+2	-26.5	0
+3	-26.5	0
+4	-26.5	0
+5	-26.5	0
+6	-26.5	0
+7	-26.5	0
+8	-26.5	0
+9	-26.5	0
+10	-26.5	0
+11	-26.5	0
+12	-26.5	0
+13	-26.5	0
+14	-26.5	0
+15	-26.5	0
+16	-26.5	0
+17	-26.5	0
+18	-26.5	0
+19	-26.5	0
+20	-26.5	0
+21	-26.5	0
+22	-26.5	0
+23	-26.5	0
+24	-26.5	0
+25	-26.5	0
+26	-26.5	0
+27	-26.5	0
+28	-26.5	0
+29	-26.5	0
+30	-26.5	0
+31	-26.5	0
+32	-26.5	0
+33	-26.5	0
+34	-26.5	0
+35	-26.5	0
+36	-26.5	0
+37	-26.5	0
+38	-26.5	0
+39	-26.5	0
+40	-26.5	0
+41	-26.5	0
+42	-26.5	0
+43	-26.5	0
+44	-26.5	0
+45	-26.5	0
+46	-26.5	0
+47	-26.5	0
+48	-26.5	0
+49	-26.5	0
+50	-26.5	0
+51	-26.5	0
+52	-26.5	0
+53	-26.5	0
+54	-26.5	0
+55	-26.5	0
+56	-26.5	0
+57	-26.5	0
+58	-26.5	0
+59	-26.5	0
+60	-26.5	0
+61	-26.5	0
+62	-26.5	0
+63	-26.5	0
+64	-26.5	0
+65	-26.5	0
+66	-26.5	0
+67	-26.5	0
+68	-26.5	0
+69	-26.5	0
+70	-26.5	0
+71	-26.5	0
+72	-26.5	0
+73	-26.5	0
+74	-26.5	0
+75	-26.5	0
+76	-26.5	0
+77	-26.5	0
+78	-26.5	0
+79	-26.5	0
+80	-26.5	0
+81	-26.5	0
+82	-26.5	0
+83	-26.5	0
+84	-26.5	0
+85	-26.5	0
+86	-26.5	0
+87	-26.5	0
+88	-26.5	0
+89	-26.5	0
+90	-26.5	0
+91	-26.5	0
+92	-26.5	0
+93	-26.5	0
+94	-26.5	0
+95	-26.5	0
+96	-26.5	0
+97	-26.5	0
+98	-26.5	0
+99	-26.5	0
+100	-26.5	0
+101	-26.5	0
+102	-26.5	0
+103	-26.5	0
+104	-26.5	0
+105	-26.5	0
+106	-26.5	0
+107	-26.5	0
+108	-26.5	0
+109	-26.5	0
+110	-26.5	0
+111	-26.5	0
+112	-26.5	0
+113	-26.5	0
+114	-26.5	0
+115	-26.5	0
+116	-26.5	0
+117	-26.5	0
+118	-26.5	0
+119	-26.5	0
+120	-26.5	0
+121	-26.5	0
+122	-26.5	0
+123	-26.5	0
+124	-26.5	0
+125	-26.5	0
+126	-26.5	0
+127	-26.5	0
+128	-26.5	0
+129	-26.5	0
+130	-26.5	0
+131	-26.5	0
+132	-26.5	0
+133	-26.5	0
+134	-26.5	0
+135	-26.5	0
+136	-26.5	0
+137	-26.5	0
+138	-26.5	0
+139	-26.5	0
+140	-26.5	0
+141	-26.5	0
+142	-26.5	0
+143	-26.5	0
+144	-26.5	0
+145	-26.5	0
+146	-26.5	0
+147	-26.5	0
+148	-26.5	0
+149	-26.5	0
+150	-26.5	0
+151	-26.5	0
+152	-26.5	0
+153	-26.5	0
+154	-26.5	0
+155	-26.5	0
+156	-26.5	0
+157	-26.5	0
+158	-26.5	0
+159	-26.5	0
+160	-26.5	0
+161	-26.5	0
+162	-26.5	0
+163	-26.5	0
+164	-26.5	0
+165	-26.5	0
+166	-26.5	0
+167	-26.5	0
+168	-26.5	0
+169	-26.5	0
+170	-26.5	0
+171	-26.5	0
+172	-26.5	0
+173	-26.5	0
+174	-26.5	0
+175	-26.5	0
+176	-26.5	0
+177	-26.5	0
+178	-26.5	0
+179	-26.5	0
+180	-26.5	0
+181	-26.5	0
+182	-26.5	0
+183	-26.5	0
+184	-26.5	0
+185	-26.5	0
+186	-26.5	0
+187	-26.5	0
+188	-26.5	0
+189	-26.5	0
+190	-26.5	0
+191	-26.5	0
+192	-26.5	0
+193	-26.5	0
+194	-26.5	0
+195	-26.5	0
+196	-26.5	0
+197	-26.5	0
+198	-26.5	0
+199	-26.5	0
+200	-26.5	0
+201	-26.5	0
+202	-26.5	0
+203	-26.5	0
+204	-26.5	0
+205	-26.5	0
+206	-26.5	0
+207	-26.5	0
+208	-26.5	0
+209	-26.5	0
+210	-26.5	0
+211	-26.5	0
+212	-26.5	0
+213	-26.5	0
+214	-26.5	0
+215	-26.5	0
+216	-26.5	0
+217	-26.5	0
+218	-26.5	0
+219	-26.5	0
+220	-26.5	0
+221	-26.5	0
+222	-26.5	0
+223	-26.5	0
+224	-26.5	0
+225	-26.5	0
+226	-26.5	0
+227	-26.5	0
+228	-26.5	0
+229	-26.5	0
+230	-26.5	0
+231	-26.5	0
+232	-26.5	0
+233	-26.5	0
+234	-26.5	0
+235	-26.5	0
+236	-26.5	0
+237	-26.5	0
+238	-26.5	0
+239	-26.5	0
+240	-26.5	0
+241	-26.5	0
+242	-26.5	0
+243	-26.5	0
+244	-26.5	0
+245	-26.5	0
+246	-26.5	0
+247	-26.5	0
+248	-26.5	0
+249	-26.5	0
+250	-26.5	0
+251	-26.5	0
+252	-26.5	0
+253	-26.5	0
+254	-26.5	0
+255	-26.5	0
+256	-26.5	0
+257	-26.5	0
+258	-26.5	0
+259	-26.5	0
+260	-26.5	0
+261	-26.5	0
+262	-26.5	0
+263	-26.5	0
+264	-26.5	0
+265	-26.5	0
+266	-26.5	0
+267	-26.5	0
+268	-26.5	0
+269	-26.5	0
+270	-26.5	0
+271	-26.5	0
+272	-26.5	0
+273	-26.5	0
+274	-26.5	0
+275	-26.5	0
+276	-26.5	0
+277	-26.5	0
+278	-26.5	0
+279	-26.5	0
+280	-26.5	0
+281	-26.5	0
+282	-26.5	0
+283	-26.5	0
+284	-26.5	0
+285	-26.5	0
+286	-26.5	0
+287	-26.5	0
+288	-26.5	0
+289	-26.5	0
+290	-26.5	0
+291	-26.5	0
+292	-26.5	0
+293	-26.5	0
+294	-26.5	0
+295	-26.5	0
+296	-26.5	0
+297	-26.5	0
+298	-26.5	0
+299	-26.5	0
+300	-26.5	0
+301	-26.5	0
+302	-26.5	0
+303	-26.5	0
+304	-26.5	0
+305	-26.5	0
+306	-26.5	0
+307	-26.5	0
+308	-26.5	0
+309	-26.5	0
+310	-26.5	0
+311	-26.5	0
+312	-26.5	0
+313	-26.5	0
+314	-26.5	0
+315	-26.5	0
+316	-26.5	0
+317	-26.5	0
+318	-26.5	0
+319	-26.5	0
+320	-26.5	0
+321	-26.5	0
+322	-26.5	0
+323	-26.5	0
+324	-26.5	0
+325	-26.5	0
+326	-26.5	0
+327	-26.5	0
+328	-26.5	0
+329	-26.5	0
+330	-26.5	0
+331	-26.5	0
+332	-26.5	0
+333	-26.5	0
+334	-26.5	0
+335	-26.5	0
+336	-26.5	0
+337	-26.5	0
+338	-26.5	0
+339	-26.5	0
+340	-26.5	0
+341	-26.5	0
+342	-26.5	0
+343	-26.5	0
+344	-26.5	0
+345	-26.5	0
+346	-26.5	0
+347	-26.5	0
+348	-26.5	0
+349	-26.5	0
+350	-26.5	0
+351	-26.5	0
+352	-26.5	0
+353	-26.5	0
+354	-26.5	0
+355	-26.5	0
+356	-26.5	0
+357	-26.5	0
+358	-26.5	0
+359	-26.5	0
+360	-26.5	0
+0	-26	0
+1	-26	0
+2	-26	0
+3	-26	0
+4	-26	0
+5	-26	0
+6	-26	0
+7	-26	0
+8	-26	0
+9	-26	0
+10	-26	0
+11	-26	0
+12	-26	0
+13	-26	0
+14	-26	0
+15	-26	0
+16	-26	0
+17	-26	0
+18	-26	0
+19	-26	0
+20	-26	0
+21	-26	0
+22	-26	0
+23	-26	0
+24	-26	0
+25	-26	0
+26	-26	0
+27	-26	0
+28	-26	0
+29	-26	0
+30	-26	0
+31	-26	0
+32	-26	0
+33	-26	0
+34	-26	0
+35	-26	0
+36	-26	0
+37	-26	0
+38	-26	0
+39	-26	0
+40	-26	0
+41	-26	0
+42	-26	0
+43	-26	0
+44	-26	0
+45	-26	0
+46	-26	0
+47	-26	0
+48	-26	0
+49	-26	0
+50	-26	0
+51	-26	0
+52	-26	0
+53	-26	0
+54	-26	0
+55	-26	0
+56	-26	0
+57	-26	0
+58	-26	0
+59	-26	0
+60	-26	0
+61	-26	0
+62	-26	0
+63	-26	0
+64	-26	0
+65	-26	0
+66	-26	0
+67	-26	0
+68	-26	0
+69	-26	0
+70	-26	0
+71	-26	0
+72	-26	0
+73	-26	0
+74	-26	0
+75	-26	0
+76	-26	0
+77	-26	0
+78	-26	0
+79	-26	0
+80	-26	0
+81	-26	0
+82	-26	0
+83	-26	0
+84	-26	0
+85	-26	0
+86	-26	0
+87	-26	0
+88	-26	0
+89	-26	0
+90	-26	0
+91	-26	0
+92	-26	0
+93	-26	0
+94	-26	0
+95	-26	0
+96	-26	0
+97	-26	0
+98	-26	0
+99	-26	0
+100	-26	0
+101	-26	0
+102	-26	0
+103	-26	0
+104	-26	0
+105	-26	0
+106	-26	0
+107	-26	0
+108	-26	0
+109	-26	0
+110	-26	0
+111	-26	0
+112	-26	0
+113	-26	0
+114	-26	0
+115	-26	0
+116	-26	0
+117	-26	0
+118	-26	0
+119	-26	0
+120	-26	0
+121	-26	0
+122	-26	0
+123	-26	0
+124	-26	0
+125	-26	0
+126	-26	0
+127	-26	0
+128	-26	0
+129	-26	0
+130	-26	0
+131	-26	0
+132	-26	0
+133	-26	0
+134	-26	0
+135	-26	0
+136	-26	0
+137	-26	0
+138	-26	0
+139	-26	0
+140	-26	0
+141	-26	0
+142	-26	0
+143	-26	0
+144	-26	0
+145	-26	0
+146	-26	0
+147	-26	0
+148	-26	0
+149	-26	0
+150	-26	0
+151	-26	0
+152	-26	0
+153	-26	0
+154	-26	0
+155	-26	0
+156	-26	0
+157	-26	0
+158	-26	0
+159	-26	0
+160	-26	0
+161	-26	0
+162	-26	0
+163	-26	0
+164	-26	0
+165	-26	0
+166	-26	0
+167	-26	0
+168	-26	0
+169	-26	0
+170	-26	0
+171	-26	0
+172	-26	0
+173	-26	0
+174	-26	0
+175	-26	0
+176	-26	0
+177	-26	0
+178	-26	0
+179	-26	0
+180	-26	0
+181	-26	0
+182	-26	0
+183	-26	0
+184	-26	0
+185	-26	0
+186	-26	0
+187	-26	0
+188	-26	0
+189	-26	0
+190	-26	0
+191	-26	0
+192	-26	0
+193	-26	0
+194	-26	0
+195	-26	0
+196	-26	0
+197	-26	0
+198	-26	0
+199	-26	0
+200	-26	0
+201	-26	0
+202	-26	0
+203	-26	0
+204	-26	0
+205	-26	0
+206	-26	0
+207	-26	0
+208	-26	0
+209	-26	0
+210	-26	0
+211	-26	0
+212	-26	0
+213	-26	0
+214	-26	0
+215	-26	0
+216	-26	0
+217	-26	0
+218	-26	0
+219	-26	0
+220	-26	0
+221	-26	0
+222	-26	0
+223	-26	0
+224	-26	0
+225	-26	0
+226	-26	0
+227	-26	0
+228	-26	0
+229	-26	0
+230	-26	0
+231	-26	0
+232	-26	0
+233	-26	0
+234	-26	0
+235	-26	0
+236	-26	0
+237	-26	0
+238	-26	0
+239	-26	0
+240	-26	0
+241	-26	0
+242	-26	0
+243	-26	0
+244	-26	0
+245	-26	0
+246	-26	0
+247	-26	0
+248	-26	0
+249	-26	0
+250	-26	0
+251	-26	0
+252	-26	0
+253	-26	0
+254	-26	0
+255	-26	0
+256	-26	0
+257	-26	0
+258	-26	0
+259	-26	0
+260	-26	0
+261	-26	0
+262	-26	0
+263	-26	0
+264	-26	0
+265	-26	0
+266	-26	0
+267	-26	0
+268	-26	0
+269	-26	0
+270	-26	0
+271	-26	0
+272	-26	0
+273	-26	0
+274	-26	0
+275	-26	0
+276	-26	0
+277	-26	0
+278	-26	0
+279	-26	0
+280	-26	0
+281	-26	0
+282	-26	0
+283	-26	0
+284	-26	0
+285	-26	0
+286	-26	0
+287	-26	0
+288	-26	0
+289	-26	0
+290	-26	0
+291	-26	0
+292	-26	0
+293	-26	0
+294	-26	0
+295	-26	0
+296	-26	0
+297	-26	0
+298	-26	0
+299	-26	0
+300	-26	0
+301	-26	0
+302	-26	0
+303	-26	0
+304	-26	0
+305	-26	0
+306	-26	0
+307	-26	0
+308	-26	0
+309	-26	0
+310	-26	0
+311	-26	0
+312	-26	0
+313	-26	0
+314	-26	0
+315	-26	0
+316	-26	0
+317	-26	0
+318	-26	0
+319	-26	0
+320	-26	0
+321	-26	0
+322	-26	0
+323	-26	0
+324	-26	0
+325	-26	0
+326	-26	0
+327	-26	0
+328	-26	0
+329	-26	0
+330	-26	0
+331	-26	0
+332	-26	0
+333	-26	0
+334	-26	0
+335	-26	0
+336	-26	0
+337	-26	0
+338	-26	0
+339	-26	0
+340	-26	0
+341	-26	0
+342	-26	0
+343	-26	0
+344	-26	0
+345	-26	0
+346	-26	0
+347	-26	0
+348	-26	0
+349	-26	0
+350	-26	0
+351	-26	0
+352	-26	0
+353	-26	0
+354	-26	0
+355	-26	0
+356	-26	0
+357	-26	0
+358	-26	0
+359	-26	0
+360	-26	0
+0	-25.5	0
+1	-25.5	0
+2	-25.5	0
+3	-25.5	0
+4	-25.5	0
+5	-25.5	0
+6	-25.5	0
+7	-25.5	0
+8	-25.5	0
+9	-25.5	0
+10	-25.5	0
+11	-25.5	0
+12	-25.5	0
+13	-25.5	0
+14	-25.5	0
+15	-25.5	0
+16	-25.5	0
+17	-25.5	0
+18	-25.5	0
+19	-25.5	0
+20	-25.5	0
+21	-25.5	0
+22	-25.5	0
+23	-25.5	0
+24	-25.5	0
+25	-25.5	0
+26	-25.5	0
+27	-25.5	0
+28	-25.5	0
+29	-25.5	0
+30	-25.5	0
+31	-25.5	0
+32	-25.5	0
+33	-25.5	0
+34	-25.5	0
+35	-25.5	0
+36	-25.5	0
+37	-25.5	0
+38	-25.5	0
+39	-25.5	0
+40	-25.5	0
+41	-25.5	0
+42	-25.5	0
+43	-25.5	0
+44	-25.5	0
+45	-25.5	0
+46	-25.5	0
+47	-25.5	0
+48	-25.5	0
+49	-25.5	0
+50	-25.5	0
+51	-25.5	0
+52	-25.5	0
+53	-25.5	0
+54	-25.5	0
+55	-25.5	0
+56	-25.5	0
+57	-25.5	0
+58	-25.5	0
+59	-25.5	0
+60	-25.5	0
+61	-25.5	0
+62	-25.5	0
+63	-25.5	0
+64	-25.5	0
+65	-25.5	0
+66	-25.5	0
+67	-25.5	0
+68	-25.5	0
+69	-25.5	0
+70	-25.5	0
+71	-25.5	0
+72	-25.5	0
+73	-25.5	0
+74	-25.5	0
+75	-25.5	0
+76	-25.5	0
+77	-25.5	0
+78	-25.5	0
+79	-25.5	0
+80	-25.5	0
+81	-25.5	0
+82	-25.5	0
+83	-25.5	0
+84	-25.5	0
+85	-25.5	0
+86	-25.5	0
+87	-25.5	0
+88	-25.5	0
+89	-25.5	0
+90	-25.5	0
+91	-25.5	0
+92	-25.5	0
+93	-25.5	0
+94	-25.5	0
+95	-25.5	0
+96	-25.5	0
+97	-25.5	0
+98	-25.5	0
+99	-25.5	0
+100	-25.5	0
+101	-25.5	0
+102	-25.5	0
+103	-25.5	0
+104	-25.5	0
+105	-25.5	0
+106	-25.5	0
+107	-25.5	0
+108	-25.5	0
+109	-25.5	0
+110	-25.5	0
+111	-25.5	0
+112	-25.5	0
+113	-25.5	0
+114	-25.5	0
+115	-25.5	0
+116	-25.5	0
+117	-25.5	0
+118	-25.5	0
+119	-25.5	0
+120	-25.5	0
+121	-25.5	0
+122	-25.5	0
+123	-25.5	0
+124	-25.5	0
+125	-25.5	0
+126	-25.5	0
+127	-25.5	0
+128	-25.5	0
+129	-25.5	0
+130	-25.5	0
+131	-25.5	0
+132	-25.5	0
+133	-25.5	0
+134	-25.5	0
+135	-25.5	0
+136	-25.5	0
+137	-25.5	0
+138	-25.5	0
+139	-25.5	0
+140	-25.5	0
+141	-25.5	0
+142	-25.5	0
+143	-25.5	0
+144	-25.5	0
+145	-25.5	0
+146	-25.5	0
+147	-25.5	0
+148	-25.5	0
+149	-25.5	0
+150	-25.5	0
+151	-25.5	0
+152	-25.5	0
+153	-25.5	0
+154	-25.5	0
+155	-25.5	0
+156	-25.5	0
+157	-25.5	0
+158	-25.5	0
+159	-25.5	0
+160	-25.5	0
+161	-25.5	0
+162	-25.5	0
+163	-25.5	0
+164	-25.5	0
+165	-25.5	0
+166	-25.5	0
+167	-25.5	0
+168	-25.5	0
+169	-25.5	0
+170	-25.5	0
+171	-25.5	0
+172	-25.5	0
+173	-25.5	0
+174	-25.5	0
+175	-25.5	0
+176	-25.5	0
+177	-25.5	0
+178	-25.5	0
+179	-25.5	0
+180	-25.5	0
+181	-25.5	0
+182	-25.5	0
+183	-25.5	0
+184	-25.5	0
+185	-25.5	0
+186	-25.5	0
+187	-25.5	0
+188	-25.5	0
+189	-25.5	0
+190	-25.5	0
+191	-25.5	0
+192	-25.5	0
+193	-25.5	0
+194	-25.5	0
+195	-25.5	0
+196	-25.5	0
+197	-25.5	0
+198	-25.5	0
+199	-25.5	0
+200	-25.5	0
+201	-25.5	0
+202	-25.5	0
+203	-25.5	0
+204	-25.5	0
+205	-25.5	0
+206	-25.5	0
+207	-25.5	0
+208	-25.5	0
+209	-25.5	0
+210	-25.5	0
+211	-25.5	0
+212	-25.5	0
+213	-25.5	0
+214	-25.5	0
+215	-25.5	0
+216	-25.5	0
+217	-25.5	0
+218	-25.5	0
+219	-25.5	0
+220	-25.5	0
+221	-25.5	0
+222	-25.5	0
+223	-25.5	0
+224	-25.5	0
+225	-25.5	0
+226	-25.5	0
+227	-25.5	0
+228	-25.5	0
+229	-25.5	0
+230	-25.5	0
+231	-25.5	0
+232	-25.5	0
+233	-25.5	0
+234	-25.5	0
+235	-25.5	0
+236	-25.5	0
+237	-25.5	0
+238	-25.5	0
+239	-25.5	0
+240	-25.5	0
+241	-25.5	0
+242	-25.5	0
+243	-25.5	0
+244	-25.5	0
+245	-25.5	0
+246	-25.5	0
+247	-25.5	0
+248	-25.5	0
+249	-25.5	0
+250	-25.5	0
+251	-25.5	0
+252	-25.5	0
+253	-25.5	0
+254	-25.5	0
+255	-25.5	0
+256	-25.5	0
+257	-25.5	0
+258	-25.5	0
+259	-25.5	0
+260	-25.5	0
+261	-25.5	0
+262	-25.5	0
+263	-25.5	0
+264	-25.5	0
+265	-25.5	0
+266	-25.5	0
+267	-25.5	0
+268	-25.5	0
+269	-25.5	0
+270	-25.5	0
+271	-25.5	0
+272	-25.5	0
+273	-25.5	0
+274	-25.5	0
+275	-25.5	0
+276	-25.5	0
+277	-25.5	0
+278	-25.5	0
+279	-25.5	0
+280	-25.5	0
+281	-25.5	0
+282	-25.5	0
+283	-25.5	0
+284	-25.5	0
+285	-25.5	0
+286	-25.5	0
+287	-25.5	0
+288	-25.5	0
+289	-25.5	0
+290	-25.5	0
+291	-25.5	0
+292	-25.5	0
+293	-25.5	0
+294	-25.5	0
+295	-25.5	0
+296	-25.5	0
+297	-25.5	0
+298	-25.5	0
+299	-25.5	0
+300	-25.5	0
+301	-25.5	0
+302	-25.5	0
+303	-25.5	0
+304	-25.5	0
+305	-25.5	0
+306	-25.5	0
+307	-25.5	0
+308	-25.5	0
+309	-25.5	0
+310	-25.5	0
+311	-25.5	0
+312	-25.5	0
+313	-25.5	0
+314	-25.5	0
+315	-25.5	0
+316	-25.5	0
+317	-25.5	0
+318	-25.5	0
+319	-25.5	0
+320	-25.5	0
+321	-25.5	0
+322	-25.5	0
+323	-25.5	0
+324	-25.5	0
+325	-25.5	0
+326	-25.5	0
+327	-25.5	0
+328	-25.5	0
+329	-25.5	0
+330	-25.5	0
+331	-25.5	0
+332	-25.5	0
+333	-25.5	0
+334	-25.5	0
+335	-25.5	0
+336	-25.5	0
+337	-25.5	0
+338	-25.5	0
+339	-25.5	0
+340	-25.5	0
+341	-25.5	0
+342	-25.5	0
+343	-25.5	0
+344	-25.5	0
+345	-25.5	0
+346	-25.5	0
+347	-25.5	0
+348	-25.5	0
+349	-25.5	0
+350	-25.5	0
+351	-25.5	0
+352	-25.5	0
+353	-25.5	0
+354	-25.5	0
+355	-25.5	0
+356	-25.5	0
+357	-25.5	0
+358	-25.5	0
+359	-25.5	0
+360	-25.5	0
+0	-25	0
+1	-25	0
+2	-25	0
+3	-25	0
+4	-25	0
+5	-25	0
+6	-25	0
+7	-25	0
+8	-25	0
+9	-25	0
+10	-25	0
+11	-25	0
+12	-25	0
+13	-25	0
+14	-25	0
+15	-25	0
+16	-25	0
+17	-25	0
+18	-25	0
+19	-25	0
+20	-25	0
+21	-25	0
+22	-25	0
+23	-25	0
+24	-25	0
+25	-25	0
+26	-25	0
+27	-25	0
+28	-25	0
+29	-25	0
+30	-25	0
+31	-25	0
+32	-25	0
+33	-25	0
+34	-25	0
+35	-25	0
+36	-25	0
+37	-25	0
+38	-25	0
+39	-25	0
+40	-25	0
+41	-25	0
+42	-25	0
+43	-25	0
+44	-25	0
+45	-25	0
+46	-25	0
+47	-25	0
+48	-25	0
+49	-25	0
+50	-25	0
+51	-25	0
+52	-25	0
+53	-25	0
+54	-25	0
+55	-25	0
+56	-25	0
+57	-25	0
+58	-25	0
+59	-25	0
+60	-25	0
+61	-25	0
+62	-25	0
+63	-25	0
+64	-25	0
+65	-25	0
+66	-25	0
+67	-25	0
+68	-25	0
+69	-25	0
+70	-25	0
+71	-25	0
+72	-25	0
+73	-25	0
+74	-25	0
+75	-25	0
+76	-25	0
+77	-25	0
+78	-25	0
+79	-25	0
+80	-25	0
+81	-25	0
+82	-25	0
+83	-25	0
+84	-25	0
+85	-25	0
+86	-25	0
+87	-25	0
+88	-25	0
+89	-25	0
+90	-25	0
+91	-25	0
+92	-25	0
+93	-25	0
+94	-25	0
+95	-25	0
+96	-25	0
+97	-25	0
+98	-25	0
+99	-25	0
+100	-25	0
+101	-25	0
+102	-25	0
+103	-25	0
+104	-25	0
+105	-25	0
+106	-25	0
+107	-25	0
+108	-25	0
+109	-25	0
+110	-25	0
+111	-25	0
+112	-25	0
+113	-25	0
+114	-25	0
+115	-25	0
+116	-25	0
+117	-25	0
+118	-25	0
+119	-25	0
+120	-25	0
+121	-25	0
+122	-25	0
+123	-25	0
+124	-25	0
+125	-25	0
+126	-25	0
+127	-25	0
+128	-25	0
+129	-25	0
+130	-25	0
+131	-25	0
+132	-25	0
+133	-25	0
+134	-25	0
+135	-25	0
+136	-25	0
+137	-25	0
+138	-25	0
+139	-25	0
+140	-25	0
+141	-25	0
+142	-25	0
+143	-25	0
+144	-25	0
+145	-25	0
+146	-25	0
+147	-25	0
+148	-25	0
+149	-25	0
+150	-25	0
+151	-25	0
+152	-25	0
+153	-25	0
+154	-25	0
+155	-25	0
+156	-25	0
+157	-25	0
+158	-25	0
+159	-25	0
+160	-25	0
+161	-25	0
+162	-25	0
+163	-25	0
+164	-25	0
+165	-25	0
+166	-25	0
+167	-25	0
+168	-25	0
+169	-25	0
+170	-25	0
+171	-25	0
+172	-25	0
+173	-25	0
+174	-25	0
+175	-25	0
+176	-25	0
+177	-25	0
+178	-25	0
+179	-25	0
+180	-25	0
+181	-25	0
+182	-25	0
+183	-25	0
+184	-25	0
+185	-25	0
+186	-25	0
+187	-25	0
+188	-25	0
+189	-25	0
+190	-25	0
+191	-25	0
+192	-25	0
+193	-25	0
+194	-25	0
+195	-25	0
+196	-25	0
+197	-25	0
+198	-25	0
+199	-25	0
+200	-25	0
+201	-25	0
+202	-25	0
+203	-25	0
+204	-25	0
+205	-25	0
+206	-25	0
+207	-25	0
+208	-25	0
+209	-25	0
+210	-25	0
+211	-25	0
+212	-25	0
+213	-25	0
+214	-25	0
+215	-25	0
+216	-25	0
+217	-25	0
+218	-25	0
+219	-25	0
+220	-25	0
+221	-25	0
+222	-25	0
+223	-25	0
+224	-25	0
+225	-25	0
+226	-25	0
+227	-25	0
+228	-25	0
+229	-25	0
+230	-25	0
+231	-25	0
+232	-25	0
+233	-25	0
+234	-25	0
+235	-25	0
+236	-25	0
+237	-25	0
+238	-25	0
+239	-25	0
+240	-25	0
+241	-25	0
+242	-25	0
+243	-25	0
+244	-25	0
+245	-25	0
+246	-25	0
+247	-25	0
+248	-25	0
+249	-25	0
+250	-25	0
+251	-25	0
+252	-25	0
+253	-25	0
+254	-25	0
+255	-25	0
+256	-25	0
+257	-25	0
+258	-25	0
+259	-25	0
+260	-25	0
+261	-25	0
+262	-25	0
+263	-25	0
+264	-25	0
+265	-25	0
+266	-25	0
+267	-25	0
+268	-25	0
+269	-25	0
+270	-25	0
+271	-25	0
+272	-25	0
+273	-25	0
+274	-25	0
+275	-25	0
+276	-25	0
+277	-25	0
+278	-25	0
+279	-25	0
+280	-25	0
+281	-25	0
+282	-25	0
+283	-25	0
+284	-25	0
+285	-25	0
+286	-25	0
+287	-25	0
+288	-25	0
+289	-25	0
+290	-25	0
+291	-25	0
+292	-25	0
+293	-25	0
+294	-25	0
+295	-25	0
+296	-25	0
+297	-25	0
+298	-25	0
+299	-25	0
+300	-25	0
+301	-25	0
+302	-25	0
+303	-25	0
+304	-25	0
+305	-25	0
+306	-25	0
+307	-25	0
+308	-25	0
+309	-25	0
+310	-25	0
+311	-25	0
+312	-25	0
+313	-25	0
+314	-25	0
+315	-25	0
+316	-25	0
+317	-25	0
+318	-25	0
+319	-25	0
+320	-25	0
+321	-25	0
+322	-25	0
+323	-25	0
+324	-25	0
+325	-25	0
+326	-25	0
+327	-25	0
+328	-25	0
+329	-25	0
+330	-25	0
+331	-25	0
+332	-25	0
+333	-25	0
+334	-25	0
+335	-25	0
+336	-25	0
+337	-25	0
+338	-25	0
+339	-25	0
+340	-25	0
+341	-25	0
+342	-25	0
+343	-25	0
+344	-25	0
+345	-25	0
+346	-25	0
+347	-25	0
+348	-25	0
+349	-25	0
+350	-25	0
+351	-25	0
+352	-25	0
+353	-25	0
+354	-25	0
+355	-25	0
+356	-25	0
+357	-25	0
+358	-25	0
+359	-25	0
+360	-25	0
+0	-24.5	0
+1	-24.5	0
+2	-24.5	0
+3	-24.5	0
+4	-24.5	0
+5	-24.5	0
+6	-24.5	0
+7	-24.5	0
+8	-24.5	0
+9	-24.5	0
+10	-24.5	0
+11	-24.5	0
+12	-24.5	0
+13	-24.5	0
+14	-24.5	0
+15	-24.5	0
+16	-24.5	0
+17	-24.5	0
+18	-24.5	0
+19	-24.5	0
+20	-24.5	0
+21	-24.5	0
+22	-24.5	0
+23	-24.5	0
+24	-24.5	0
+25	-24.5	0
+26	-24.5	0
+27	-24.5	0
+28	-24.5	0
+29	-24.5	0
+30	-24.5	0
+31	-24.5	0
+32	-24.5	0
+33	-24.5	0
+34	-24.5	0
+35	-24.5	0
+36	-24.5	0
+37	-24.5	0
+38	-24.5	0
+39	-24.5	0
+40	-24.5	0
+41	-24.5	0
+42	-24.5	0
+43	-24.5	0
+44	-24.5	0
+45	-24.5	0
+46	-24.5	0
+47	-24.5	0
+48	-24.5	0
+49	-24.5	0
+50	-24.5	0
+51	-24.5	0
+52	-24.5	0
+53	-24.5	0
+54	-24.5	0
+55	-24.5	0
+56	-24.5	0
+57	-24.5	0
+58	-24.5	0
+59	-24.5	0
+60	-24.5	0
+61	-24.5	0
+62	-24.5	0
+63	-24.5	0
+64	-24.5	0
+65	-24.5	0
+66	-24.5	0
+67	-24.5	0
+68	-24.5	0
+69	-24.5	0
+70	-24.5	0
+71	-24.5	0
+72	-24.5	0
+73	-24.5	0
+74	-24.5	0
+75	-24.5	0
+76	-24.5	0
+77	-24.5	0
+78	-24.5	0
+79	-24.5	0
+80	-24.5	0
+81	-24.5	0
+82	-24.5	0
+83	-24.5	0
+84	-24.5	0
+85	-24.5	0
+86	-24.5	0
+87	-24.5	0
+88	-24.5	0
+89	-24.5	0
+90	-24.5	0
+91	-24.5	0
+92	-24.5	0
+93	-24.5	0
+94	-24.5	0
+95	-24.5	0
+96	-24.5	0
+97	-24.5	0
+98	-24.5	0
+99	-24.5	0
+100	-24.5	0
+101	-24.5	0
+102	-24.5	0
+103	-24.5	0
+104	-24.5	0
+105	-24.5	0
+106	-24.5	0
+107	-24.5	0
+108	-24.5	0
+109	-24.5	0
+110	-24.5	0
+111	-24.5	0
+112	-24.5	0
+113	-24.5	0
+114	-24.5	0
+115	-24.5	0
+116	-24.5	0
+117	-24.5	0
+118	-24.5	0
+119	-24.5	0
+120	-24.5	0
+121	-24.5	0
+122	-24.5	0
+123	-24.5	0
+124	-24.5	0
+125	-24.5	0
+126	-24.5	0
+127	-24.5	0
+128	-24.5	0
+129	-24.5	0
+130	-24.5	0
+131	-24.5	0
+132	-24.5	0
+133	-24.5	0
+134	-24.5	0
+135	-24.5	0
+136	-24.5	0
+137	-24.5	0
+138	-24.5	0
+139	-24.5	0
+140	-24.5	0
+141	-24.5	0
+142	-24.5	0
+143	-24.5	0
+144	-24.5	0
+145	-24.5	0
+146	-24.5	0
+147	-24.5	0
+148	-24.5	0
+149	-24.5	0
+150	-24.5	0
+151	-24.5	0
+152	-24.5	0
+153	-24.5	0
+154	-24.5	0
+155	-24.5	0
+156	-24.5	0
+157	-24.5	0
+158	-24.5	0
+159	-24.5	0
+160	-24.5	0
+161	-24.5	0
+162	-24.5	0
+163	-24.5	0
+164	-24.5	0
+165	-24.5	0
+166	-24.5	0
+167	-24.5	0
+168	-24.5	0
+169	-24.5	0
+170	-24.5	0
+171	-24.5	0
+172	-24.5	0
+173	-24.5	0
+174	-24.5	0
+175	-24.5	0
+176	-24.5	0
+177	-24.5	0
+178	-24.5	0
+179	-24.5	0
+180	-24.5	0
+181	-24.5	0
+182	-24.5	0
+183	-24.5	0
+184	-24.5	0
+185	-24.5	0
+186	-24.5	0
+187	-24.5	0
+188	-24.5	0
+189	-24.5	0
+190	-24.5	0
+191	-24.5	0
+192	-24.5	0
+193	-24.5	0
+194	-24.5	0
+195	-24.5	0
+196	-24.5	0
+197	-24.5	0
+198	-24.5	0
+199	-24.5	0
+200	-24.5	0
+201	-24.5	0
+202	-24.5	0
+203	-24.5	0
+204	-24.5	0
+205	-24.5	0
+206	-24.5	0
+207	-24.5	0
+208	-24.5	0
+209	-24.5	0
+210	-24.5	0
+211	-24.5	0
+212	-24.5	0
+213	-24.5	0
+214	-24.5	0
+215	-24.5	0
+216	-24.5	0
+217	-24.5	0
+218	-24.5	0
+219	-24.5	0
+220	-24.5	0
+221	-24.5	0
+222	-24.5	0
+223	-24.5	0
+224	-24.5	0
+225	-24.5	0
+226	-24.5	0
+227	-24.5	0
+228	-24.5	0
+229	-24.5	0
+230	-24.5	0
+231	-24.5	0
+232	-24.5	0
+233	-24.5	0
+234	-24.5	0
+235	-24.5	0
+236	-24.5	0
+237	-24.5	0
+238	-24.5	0
+239	-24.5	0
+240	-24.5	0
+241	-24.5	0
+242	-24.5	0
+243	-24.5	0
+244	-24.5	0
+245	-24.5	0
+246	-24.5	0
+247	-24.5	0
+248	-24.5	0
+249	-24.5	0
+250	-24.5	0
+251	-24.5	0
+252	-24.5	0
+253	-24.5	0
+254	-24.5	0
+255	-24.5	0
+256	-24.5	0
+257	-24.5	0
+258	-24.5	0
+259	-24.5	0
+260	-24.5	0
+261	-24.5	0
+262	-24.5	0
+263	-24.5	0
+264	-24.5	0
+265	-24.5	0
+266	-24.5	0
+267	-24.5	0
+268	-24.5	0
+269	-24.5	0
+270	-24.5	0
+271	-24.5	0
+272	-24.5	0
+273	-24.5	0
+274	-24.5	0
+275	-24.5	0
+276	-24.5	0
+277	-24.5	0
+278	-24.5	0
+279	-24.5	0
+280	-24.5	0
+281	-24.5	0
+282	-24.5	0
+283	-24.5	0
+284	-24.5	0
+285	-24.5	0
+286	-24.5	0
+287	-24.5	0
+288	-24.5	0
+289	-24.5	0
+290	-24.5	0
+291	-24.5	0
+292	-24.5	0
+293	-24.5	0
+294	-24.5	0
+295	-24.5	0
+296	-24.5	0
+297	-24.5	0
+298	-24.5	0
+299	-24.5	0
+300	-24.5	0
+301	-24.5	0
+302	-24.5	0
+303	-24.5	0
+304	-24.5	0
+305	-24.5	0
+306	-24.5	0
+307	-24.5	0
+308	-24.5	0
+309	-24.5	0
+310	-24.5	0
+311	-24.5	0
+312	-24.5	0
+313	-24.5	0
+314	-24.5	0
+315	-24.5	0
+316	-24.5	0
+317	-24.5	0
+318	-24.5	0
+319	-24.5	0
+320	-24.5	0
+321	-24.5	0
+322	-24.5	0
+323	-24.5	0
+324	-24.5	0
+325	-24.5	0
+326	-24.5	0
+327	-24.5	0
+328	-24.5	0
+329	-24.5	0
+330	-24.5	0
+331	-24.5	0
+332	-24.5	0
+333	-24.5	0
+334	-24.5	0
+335	-24.5	0
+336	-24.5	0
+337	-24.5	0
+338	-24.5	0
+339	-24.5	0
+340	-24.5	0
+341	-24.5	0
+342	-24.5	0
+343	-24.5	0
+344	-24.5	0
+345	-24.5	0
+346	-24.5	0
+347	-24.5	0
+348	-24.5	0
+349	-24.5	0
+350	-24.5	0
+351	-24.5	0
+352	-24.5	0
+353	-24.5	0
+354	-24.5	0
+355	-24.5	0
+356	-24.5	0
+357	-24.5	0
+358	-24.5	0
+359	-24.5	0
+360	-24.5	0
+0	-24	0
+1	-24	0
+2	-24	0
+3	-24	0
+4	-24	0
+5	-24	0
+6	-24	0
+7	-24	0
+8	-24	0
+9	-24	0
+10	-24	0
+11	-24	0
+12	-24	0
+13	-24	0
+14	-24	0
+15	-24	0
+16	-24	0
+17	-24	0
+18	-24	0
+19	-24	0
+20	-24	0
+21	-24	0
+22	-24	0
+23	-24	0
+24	-24	0
+25	-24	0
+26	-24	0
+27	-24	0
+28	-24	0
+29	-24	0
+30	-24	0
+31	-24	0
+32	-24	0
+33	-24	0
+34	-24	0
+35	-24	0
+36	-24	0
+37	-24	0
+38	-24	0
+39	-24	0
+40	-24	0
+41	-24	0
+42	-24	0
+43	-24	0
+44	-24	0
+45	-24	0
+46	-24	0
+47	-24	0
+48	-24	0
+49	-24	0
+50	-24	0
+51	-24	0
+52	-24	0
+53	-24	0
+54	-24	0
+55	-24	0
+56	-24	0
+57	-24	0
+58	-24	0
+59	-24	0
+60	-24	0
+61	-24	0
+62	-24	0
+63	-24	0
+64	-24	0
+65	-24	0
+66	-24	0
+67	-24	0
+68	-24	0
+69	-24	0
+70	-24	0
+71	-24	0
+72	-24	0
+73	-24	0
+74	-24	0
+75	-24	0
+76	-24	0
+77	-24	0
+78	-24	0
+79	-24	0
+80	-24	0
+81	-24	0
+82	-24	0
+83	-24	0
+84	-24	0
+85	-24	0
+86	-24	0
+87	-24	0
+88	-24	0
+89	-24	0
+90	-24	0
+91	-24	0
+92	-24	0
+93	-24	0
+94	-24	0
+95	-24	0
+96	-24	0
+97	-24	0
+98	-24	0
+99	-24	0
+100	-24	0
+101	-24	0
+102	-24	0
+103	-24	0
+104	-24	0
+105	-24	0
+106	-24	0
+107	-24	0
+108	-24	0
+109	-24	0
+110	-24	0
+111	-24	0
+112	-24	0
+113	-24	0
+114	-24	0
+115	-24	0
+116	-24	0
+117	-24	0
+118	-24	0
+119	-24	0
+120	-24	0
+121	-24	0
+122	-24	0
+123	-24	0
+124	-24	0
+125	-24	0
+126	-24	0
+127	-24	0
+128	-24	0
+129	-24	0
+130	-24	0
+131	-24	0
+132	-24	0
+133	-24	0
+134	-24	0
+135	-24	0
+136	-24	0
+137	-24	0
+138	-24	0
+139	-24	0
+140	-24	0
+141	-24	0
+142	-24	0
+143	-24	0
+144	-24	0
+145	-24	0
+146	-24	0
+147	-24	0
+148	-24	0
+149	-24	0
+150	-24	0
+151	-24	0
+152	-24	0
+153	-24	0
+154	-24	0
+155	-24	0
+156	-24	0
+157	-24	0
+158	-24	0
+159	-24	0
+160	-24	0
+161	-24	0
+162	-24	0
+163	-24	0
+164	-24	0
+165	-24	0
+166	-24	0
+167	-24	0
+168	-24	0
+169	-24	0
+170	-24	0
+171	-24	0
+172	-24	0
+173	-24	0
+174	-24	0
+175	-24	0
+176	-24	0
+177	-24	0
+178	-24	0
+179	-24	0
+180	-24	0
+181	-24	0
+182	-24	0
+183	-24	0
+184	-24	0
+185	-24	0
+186	-24	0
+187	-24	0
+188	-24	0
+189	-24	0
+190	-24	0
+191	-24	0
+192	-24	0
+193	-24	0
+194	-24	0
+195	-24	0
+196	-24	0
+197	-24	0
+198	-24	0
+199	-24	0
+200	-24	0
+201	-24	0
+202	-24	0
+203	-24	0
+204	-24	0
+205	-24	0
+206	-24	0
+207	-24	0
+208	-24	0
+209	-24	0
+210	-24	0
+211	-24	0
+212	-24	0
+213	-24	0
+214	-24	0
+215	-24	0
+216	-24	0
+217	-24	0
+218	-24	0
+219	-24	0
+220	-24	0
+221	-24	0
+222	-24	0
+223	-24	0
+224	-24	0
+225	-24	0
+226	-24	0
+227	-24	0
+228	-24	0
+229	-24	0
+230	-24	0
+231	-24	0
+232	-24	0
+233	-24	0
+234	-24	0
+235	-24	0
+236	-24	0
+237	-24	0
+238	-24	0
+239	-24	0
+240	-24	0
+241	-24	0
+242	-24	0
+243	-24	0
+244	-24	0
+245	-24	0
+246	-24	0
+247	-24	0
+248	-24	0
+249	-24	0
+250	-24	0
+251	-24	0
+252	-24	0
+253	-24	0
+254	-24	0
+255	-24	0
+256	-24	0
+257	-24	0
+258	-24	0
+259	-24	0
+260	-24	0
+261	-24	0
+262	-24	0
+263	-24	0
+264	-24	0
+265	-24	0
+266	-24	0
+267	-24	0
+268	-24	0
+269	-24	0
+270	-24	0
+271	-24	0
+272	-24	0
+273	-24	0
+274	-24	0
+275	-24	0
+276	-24	0
+277	-24	0
+278	-24	0
+279	-24	0
+280	-24	0
+281	-24	0
+282	-24	0
+283	-24	0
+284	-24	0
+285	-24	0
+286	-24	0
+287	-24	0
+288	-24	0
+289	-24	0
+290	-24	0
+291	-24	0
+292	-24	0
+293	-24	0
+294	-24	0
+295	-24	0
+296	-24	0
+297	-24	0
+298	-24	0
+299	-24	0
+300	-24	0
+301	-24	0
+302	-24	0
+303	-24	0
+304	-24	0
+305	-24	0
+306	-24	0
+307	-24	0
+308	-24	0
+309	-24	0
+310	-24	0
+311	-24	0
+312	-24	0
+313	-24	0
+314	-24	0
+315	-24	0
+316	-24	0
+317	-24	0
+318	-24	0
+319	-24	0
+320	-24	0
+321	-24	0
+322	-24	0
+323	-24	0
+324	-24	0
+325	-24	0
+326	-24	0
+327	-24	0
+328	-24	0
+329	-24	0
+330	-24	0
+331	-24	0
+332	-24	0
+333	-24	0
+334	-24	0
+335	-24	0
+336	-24	0
+337	-24	0
+338	-24	0
+339	-24	0
+340	-24	0
+341	-24	0
+342	-24	0
+343	-24	0
+344	-24	0
+345	-24	0
+346	-24	0
+347	-24	0
+348	-24	0
+349	-24	0
+350	-24	0
+351	-24	0
+352	-24	0
+353	-24	0
+354	-24	0
+355	-24	0
+356	-24	0
+357	-24	0
+358	-24	0
+359	-24	0
+360	-24	0
+0	-23.5	0
+1	-23.5	0
+2	-23.5	0
+3	-23.5	0
+4	-23.5	0
+5	-23.5	0
+6	-23.5	0
+7	-23.5	0
+8	-23.5	0
+9	-23.5	0
+10	-23.5	0
+11	-23.5	0
+12	-23.5	0
+13	-23.5	0
+14	-23.5	0
+15	-23.5	0
+16	-23.5	0
+17	-23.5	0
+18	-23.5	0
+19	-23.5	0
+20	-23.5	0
+21	-23.5	0
+22	-23.5	0
+23	-23.5	0
+24	-23.5	0
+25	-23.5	0
+26	-23.5	0
+27	-23.5	0
+28	-23.5	0
+29	-23.5	0
+30	-23.5	0
+31	-23.5	0
+32	-23.5	0
+33	-23.5	0
+34	-23.5	0
+35	-23.5	0
+36	-23.5	0
+37	-23.5	0
+38	-23.5	0
+39	-23.5	0
+40	-23.5	0
+41	-23.5	0
+42	-23.5	0
+43	-23.5	0
+44	-23.5	0
+45	-23.5	0
+46	-23.5	0
+47	-23.5	0
+48	-23.5	0
+49	-23.5	0
+50	-23.5	0
+51	-23.5	0
+52	-23.5	0
+53	-23.5	0
+54	-23.5	0
+55	-23.5	0
+56	-23.5	0
+57	-23.5	0
+58	-23.5	0
+59	-23.5	0
+60	-23.5	0
+61	-23.5	0
+62	-23.5	0
+63	-23.5	0
+64	-23.5	0
+65	-23.5	0
+66	-23.5	0
+67	-23.5	0
+68	-23.5	0
+69	-23.5	0
+70	-23.5	0
+71	-23.5	0
+72	-23.5	0
+73	-23.5	0
+74	-23.5	0
+75	-23.5	0
+76	-23.5	0
+77	-23.5	0
+78	-23.5	0
+79	-23.5	0
+80	-23.5	0
+81	-23.5	0
+82	-23.5	0
+83	-23.5	0
+84	-23.5	0
+85	-23.5	0
+86	-23.5	0
+87	-23.5	0
+88	-23.5	0
+89	-23.5	0
+90	-23.5	0
+91	-23.5	0
+92	-23.5	0
+93	-23.5	0
+94	-23.5	0
+95	-23.5	0
+96	-23.5	0
+97	-23.5	0
+98	-23.5	0
+99	-23.5	0
+100	-23.5	0
+101	-23.5	0
+102	-23.5	0
+103	-23.5	0
+104	-23.5	0
+105	-23.5	0
+106	-23.5	0
+107	-23.5	0
+108	-23.5	0
+109	-23.5	0
+110	-23.5	0
+111	-23.5	0
+112	-23.5	0
+113	-23.5	0
+114	-23.5	0
+115	-23.5	0
+116	-23.5	0
+117	-23.5	0
+118	-23.5	0
+119	-23.5	0
+120	-23.5	0
+121	-23.5	0
+122	-23.5	0
+123	-23.5	0
+124	-23.5	0
+125	-23.5	0
+126	-23.5	0
+127	-23.5	0
+128	-23.5	0
+129	-23.5	0
+130	-23.5	0
+131	-23.5	0
+132	-23.5	0
+133	-23.5	0
+134	-23.5	0
+135	-23.5	0
+136	-23.5	0
+137	-23.5	0
+138	-23.5	0
+139	-23.5	0
+140	-23.5	0
+141	-23.5	0
+142	-23.5	0
+143	-23.5	0
+144	-23.5	0
+145	-23.5	0
+146	-23.5	0
+147	-23.5	0
+148	-23.5	0
+149	-23.5	0
+150	-23.5	0
+151	-23.5	0
+152	-23.5	0
+153	-23.5	0
+154	-23.5	0
+155	-23.5	0
+156	-23.5	0
+157	-23.5	0
+158	-23.5	0
+159	-23.5	0
+160	-23.5	0
+161	-23.5	0
+162	-23.5	0
+163	-23.5	0
+164	-23.5	0
+165	-23.5	0
+166	-23.5	0
+167	-23.5	0
+168	-23.5	0
+169	-23.5	0
+170	-23.5	0
+171	-23.5	0
+172	-23.5	0
+173	-23.5	0
+174	-23.5	0
+175	-23.5	0
+176	-23.5	0
+177	-23.5	0
+178	-23.5	0
+179	-23.5	0
+180	-23.5	0
+181	-23.5	0
+182	-23.5	0
+183	-23.5	0
+184	-23.5	0
+185	-23.5	0
+186	-23.5	0
+187	-23.5	0
+188	-23.5	0
+189	-23.5	0
+190	-23.5	0
+191	-23.5	0
+192	-23.5	0
+193	-23.5	0
+194	-23.5	0
+195	-23.5	0
+196	-23.5	0
+197	-23.5	0
+198	-23.5	0
+199	-23.5	0
+200	-23.5	0
+201	-23.5	0
+202	-23.5	0
+203	-23.5	0
+204	-23.5	0
+205	-23.5	0
+206	-23.5	0
+207	-23.5	0
+208	-23.5	0
+209	-23.5	0
+210	-23.5	0
+211	-23.5	0
+212	-23.5	0
+213	-23.5	0
+214	-23.5	0
+215	-23.5	0
+216	-23.5	0
+217	-23.5	0
+218	-23.5	0
+219	-23.5	0
+220	-23.5	0
+221	-23.5	0
+222	-23.5	0
+223	-23.5	0
+224	-23.5	0
+225	-23.5	0
+226	-23.5	0
+227	-23.5	0
+228	-23.5	0
+229	-23.5	0
+230	-23.5	0
+231	-23.5	0
+232	-23.5	0
+233	-23.5	0
+234	-23.5	0
+235	-23.5	0
+236	-23.5	0
+237	-23.5	0
+238	-23.5	0
+239	-23.5	0
+240	-23.5	0
+241	-23.5	0
+242	-23.5	0
+243	-23.5	0
+244	-23.5	0
+245	-23.5	0
+246	-23.5	0
+247	-23.5	0
+248	-23.5	0
+249	-23.5	0
+250	-23.5	0
+251	-23.5	0
+252	-23.5	0
+253	-23.5	0
+254	-23.5	0
+255	-23.5	0
+256	-23.5	0
+257	-23.5	0
+258	-23.5	0
+259	-23.5	0
+260	-23.5	0
+261	-23.5	0
+262	-23.5	0
+263	-23.5	0
+264	-23.5	0
+265	-23.5	0
+266	-23.5	0
+267	-23.5	0
+268	-23.5	0
+269	-23.5	0
+270	-23.5	0
+271	-23.5	0
+272	-23.5	0
+273	-23.5	0
+274	-23.5	0
+275	-23.5	0
+276	-23.5	0
+277	-23.5	0
+278	-23.5	0
+279	-23.5	0
+280	-23.5	0
+281	-23.5	0
+282	-23.5	0
+283	-23.5	0
+284	-23.5	0
+285	-23.5	0
+286	-23.5	0
+287	-23.5	0
+288	-23.5	0
+289	-23.5	0
+290	-23.5	0
+291	-23.5	0
+292	-23.5	0
+293	-23.5	0
+294	-23.5	0
+295	-23.5	0
+296	-23.5	0
+297	-23.5	0
+298	-23.5	0
+299	-23.5	0
+300	-23.5	0
+301	-23.5	0
+302	-23.5	0
+303	-23.5	0
+304	-23.5	0
+305	-23.5	0
+306	-23.5	0
+307	-23.5	0
+308	-23.5	0
+309	-23.5	0
+310	-23.5	0
+311	-23.5	0
+312	-23.5	0
+313	-23.5	0
+314	-23.5	0
+315	-23.5	0
+316	-23.5	0
+317	-23.5	0
+318	-23.5	0
+319	-23.5	0
+320	-23.5	0
+321	-23.5	0
+322	-23.5	0
+323	-23.5	0
+324	-23.5	0
+325	-23.5	0
+326	-23.5	0
+327	-23.5	0
+328	-23.5	0
+329	-23.5	0
+330	-23.5	0
+331	-23.5	0
+332	-23.5	0
+333	-23.5	0
+334	-23.5	0
+335	-23.5	0
+336	-23.5	0
+337	-23.5	0
+338	-23.5	0
+339	-23.5	0
+340	-23.5	0
+341	-23.5	0
+342	-23.5	0
+343	-23.5	0
+344	-23.5	0
+345	-23.5	0
+346	-23.5	0
+347	-23.5	0
+348	-23.5	0
+349	-23.5	0
+350	-23.5	0
+351	-23.5	0
+352	-23.5	0
+353	-23.5	0
+354	-23.5	0
+355	-23.5	0
+356	-23.5	0
+357	-23.5	0
+358	-23.5	0
+359	-23.5	0
+360	-23.5	0
+0	-23	0
+1	-23	0
+2	-23	0
+3	-23	0
+4	-23	0
+5	-23	0
+6	-23	0
+7	-23	0
+8	-23	0
+9	-23	0
+10	-23	0
+11	-23	0
+12	-23	0
+13	-23	0
+14	-23	0
+15	-23	0
+16	-23	0
+17	-23	0
+18	-23	0
+19	-23	0
+20	-23	0
+21	-23	0
+22	-23	0
+23	-23	0
+24	-23	0
+25	-23	0
+26	-23	0
+27	-23	0
+28	-23	0
+29	-23	0
+30	-23	0
+31	-23	0
+32	-23	0
+33	-23	0
+34	-23	0
+35	-23	0
+36	-23	0
+37	-23	0
+38	-23	0
+39	-23	0
+40	-23	0
+41	-23	0
+42	-23	0
+43	-23	0
+44	-23	0
+45	-23	0
+46	-23	0
+47	-23	0
+48	-23	0
+49	-23	0
+50	-23	0
+51	-23	0
+52	-23	0
+53	-23	0
+54	-23	0
+55	-23	0
+56	-23	0
+57	-23	0
+58	-23	0
+59	-23	0
+60	-23	0
+61	-23	0
+62	-23	0
+63	-23	0
+64	-23	0
+65	-23	0
+66	-23	0
+67	-23	0
+68	-23	0
+69	-23	0
+70	-23	0
+71	-23	0
+72	-23	0
+73	-23	0
+74	-23	0
+75	-23	0
+76	-23	0
+77	-23	0
+78	-23	0
+79	-23	0
+80	-23	0
+81	-23	0
+82	-23	0
+83	-23	0
+84	-23	0
+85	-23	0
+86	-23	0
+87	-23	0
+88	-23	0
+89	-23	0
+90	-23	0
+91	-23	0
+92	-23	0
+93	-23	0
+94	-23	0
+95	-23	0
+96	-23	0
+97	-23	0
+98	-23	0
+99	-23	0
+100	-23	0
+101	-23	0
+102	-23	0
+103	-23	0
+104	-23	0
+105	-23	0
+106	-23	0
+107	-23	0
+108	-23	0
+109	-23	0
+110	-23	0
+111	-23	0
+112	-23	0
+113	-23	0
+114	-23	0
+115	-23	0
+116	-23	0
+117	-23	0
+118	-23	0
+119	-23	0
+120	-23	0
+121	-23	0
+122	-23	0
+123	-23	0
+124	-23	0
+125	-23	0
+126	-23	0
+127	-23	0
+128	-23	0
+129	-23	0
+130	-23	0
+131	-23	0
+132	-23	0
+133	-23	0
+134	-23	0
+135	-23	0
+136	-23	0
+137	-23	0
+138	-23	0
+139	-23	0
+140	-23	0
+141	-23	0
+142	-23	0
+143	-23	0
+144	-23	0
+145	-23	0
+146	-23	0
+147	-23	0
+148	-23	0
+149	-23	0
+150	-23	0
+151	-23	0
+152	-23	0
+153	-23	0
+154	-23	0
+155	-23	0
+156	-23	0
+157	-23	0
+158	-23	0
+159	-23	0
+160	-23	0
+161	-23	0
+162	-23	0
+163	-23	0
+164	-23	0
+165	-23	0
+166	-23	0
+167	-23	0
+168	-23	0
+169	-23	0
+170	-23	0
+171	-23	0
+172	-23	0
+173	-23	0
+174	-23	0
+175	-23	0
+176	-23	0
+177	-23	0
+178	-23	0
+179	-23	0
+180	-23	0
+181	-23	0
+182	-23	0
+183	-23	0
+184	-23	0
+185	-23	0
+186	-23	0
+187	-23	0
+188	-23	0
+189	-23	0
+190	-23	0
+191	-23	0
+192	-23	0
+193	-23	0
+194	-23	0
+195	-23	0
+196	-23	0
+197	-23	0
+198	-23	0
+199	-23	0
+200	-23	0
+201	-23	0
+202	-23	0
+203	-23	0
+204	-23	0
+205	-23	0
+206	-23	0
+207	-23	0
+208	-23	0
+209	-23	0
+210	-23	0
+211	-23	0
+212	-23	0
+213	-23	0
+214	-23	0
+215	-23	0
+216	-23	0
+217	-23	0
+218	-23	0
+219	-23	0
+220	-23	0
+221	-23	0
+222	-23	0
+223	-23	0
+224	-23	0
+225	-23	0
+226	-23	0
+227	-23	0
+228	-23	0
+229	-23	0
+230	-23	0
+231	-23	0
+232	-23	0
+233	-23	0
+234	-23	0
+235	-23	0
+236	-23	0
+237	-23	0
+238	-23	0
+239	-23	0
+240	-23	0
+241	-23	0
+242	-23	0
+243	-23	0
+244	-23	0
+245	-23	0
+246	-23	0
+247	-23	0
+248	-23	0
+249	-23	0
+250	-23	0
+251	-23	0
+252	-23	0
+253	-23	0
+254	-23	0
+255	-23	0
+256	-23	0
+257	-23	0
+258	-23	0
+259	-23	0
+260	-23	0
+261	-23	0
+262	-23	0
+263	-23	0
+264	-23	0
+265	-23	0
+266	-23	0
+267	-23	0
+268	-23	0
+269	-23	0
+270	-23	0
+271	-23	0
+272	-23	0
+273	-23	0
+274	-23	0
+275	-23	0
+276	-23	0
+277	-23	0
+278	-23	0
+279	-23	0
+280	-23	0
+281	-23	0
+282	-23	0
+283	-23	0
+284	-23	0
+285	-23	0
+286	-23	0
+287	-23	0
+288	-23	0
+289	-23	0
+290	-23	0
+291	-23	0
+292	-23	0
+293	-23	0
+294	-23	0
+295	-23	0
+296	-23	0
+297	-23	0
+298	-23	0
+299	-23	0
+300	-23	0
+301	-23	0
+302	-23	0
+303	-23	0
+304	-23	0
+305	-23	0
+306	-23	0
+307	-23	0
+308	-23	0
+309	-23	0
+310	-23	0
+311	-23	0
+312	-23	0
+313	-23	0
+314	-23	0
+315	-23	0
+316	-23	0
+317	-23	0
+318	-23	0
+319	-23	0
+320	-23	0
+321	-23	0
+322	-23	0
+323	-23	0
+324	-23	0
+325	-23	0
+326	-23	0
+327	-23	0
+328	-23	0
+329	-23	0
+330	-23	0
+331	-23	0
+332	-23	0
+333	-23	0
+334	-23	0
+335	-23	0
+336	-23	0
+337	-23	0
+338	-23	0
+339	-23	0
+340	-23	0
+341	-23	0
+342	-23	0
+343	-23	0
+344	-23	0
+345	-23	0
+346	-23	0
+347	-23	0
+348	-23	0
+349	-23	0
+350	-23	0
+351	-23	0
+352	-23	0
+353	-23	0
+354	-23	0
+355	-23	0
+356	-23	0
+357	-23	0
+358	-23	0
+359	-23	0
+360	-23	0
+0	-22.5	0
+1	-22.5	0
+2	-22.5	0
+3	-22.5	0
+4	-22.5	0
+5	-22.5	0
+6	-22.5	0
+7	-22.5	0
+8	-22.5	0
+9	-22.5	0
+10	-22.5	0
+11	-22.5	0
+12	-22.5	0
+13	-22.5	0
+14	-22.5	0
+15	-22.5	0
+16	-22.5	0
+17	-22.5	0
+18	-22.5	0
+19	-22.5	0
+20	-22.5	0
+21	-22.5	0
+22	-22.5	0
+23	-22.5	0
+24	-22.5	0
+25	-22.5	0
+26	-22.5	0
+27	-22.5	0
+28	-22.5	0
+29	-22.5	0
+30	-22.5	0
+31	-22.5	0
+32	-22.5	0
+33	-22.5	0
+34	-22.5	0
+35	-22.5	0
+36	-22.5	0
+37	-22.5	0
+38	-22.5	0
+39	-22.5	0
+40	-22.5	0
+41	-22.5	0
+42	-22.5	0
+43	-22.5	0
+44	-22.5	0
+45	-22.5	0
+46	-22.5	0
+47	-22.5	0
+48	-22.5	0
+49	-22.5	0
+50	-22.5	0
+51	-22.5	0
+52	-22.5	0
+53	-22.5	0
+54	-22.5	0
+55	-22.5	0
+56	-22.5	0
+57	-22.5	0
+58	-22.5	0
+59	-22.5	0
+60	-22.5	0
+61	-22.5	0
+62	-22.5	0
+63	-22.5	0
+64	-22.5	0
+65	-22.5	0
+66	-22.5	0
+67	-22.5	0
+68	-22.5	0
+69	-22.5	0
+70	-22.5	0
+71	-22.5	0
+72	-22.5	0
+73	-22.5	0
+74	-22.5	0
+75	-22.5	0
+76	-22.5	0
+77	-22.5	0
+78	-22.5	0
+79	-22.5	0
+80	-22.5	0
+81	-22.5	0
+82	-22.5	0
+83	-22.5	0
+84	-22.5	0
+85	-22.5	0
+86	-22.5	0
+87	-22.5	0
+88	-22.5	0
+89	-22.5	0
+90	-22.5	0
+91	-22.5	0
+92	-22.5	0
+93	-22.5	0
+94	-22.5	0
+95	-22.5	0
+96	-22.5	0
+97	-22.5	0
+98	-22.5	0
+99	-22.5	0
+100	-22.5	0
+101	-22.5	0
+102	-22.5	0
+103	-22.5	0
+104	-22.5	0
+105	-22.5	0
+106	-22.5	0
+107	-22.5	0
+108	-22.5	0
+109	-22.5	0
+110	-22.5	0
+111	-22.5	0
+112	-22.5	0
+113	-22.5	0
+114	-22.5	0
+115	-22.5	0
+116	-22.5	0
+117	-22.5	0
+118	-22.5	0
+119	-22.5	0
+120	-22.5	0
+121	-22.5	0
+122	-22.5	0
+123	-22.5	0
+124	-22.5	0
+125	-22.5	0
+126	-22.5	0
+127	-22.5	0
+128	-22.5	0
+129	-22.5	0
+130	-22.5	0
+131	-22.5	0
+132	-22.5	0
+133	-22.5	0
+134	-22.5	0
+135	-22.5	0
+136	-22.5	0
+137	-22.5	0
+138	-22.5	0
+139	-22.5	0
+140	-22.5	0
+141	-22.5	0
+142	-22.5	0
+143	-22.5	0
+144	-22.5	0
+145	-22.5	0
+146	-22.5	0
+147	-22.5	0
+148	-22.5	0
+149	-22.5	0
+150	-22.5	0
+151	-22.5	0
+152	-22.5	0
+153	-22.5	0
+154	-22.5	0
+155	-22.5	0
+156	-22.5	0
+157	-22.5	0
+158	-22.5	0
+159	-22.5	0
+160	-22.5	0
+161	-22.5	0
+162	-22.5	0
+163	-22.5	0
+164	-22.5	0
+165	-22.5	0
+166	-22.5	0
+167	-22.5	0
+168	-22.5	0
+169	-22.5	0
+170	-22.5	0
+171	-22.5	0
+172	-22.5	0
+173	-22.5	0
+174	-22.5	0
+175	-22.5	0
+176	-22.5	0
+177	-22.5	0
+178	-22.5	0
+179	-22.5	0
+180	-22.5	0
+181	-22.5	0
+182	-22.5	0
+183	-22.5	0
+184	-22.5	0
+185	-22.5	0
+186	-22.5	0
+187	-22.5	0
+188	-22.5	0
+189	-22.5	0
+190	-22.5	0
+191	-22.5	0
+192	-22.5	0
+193	-22.5	0
+194	-22.5	0
+195	-22.5	0
+196	-22.5	0
+197	-22.5	0
+198	-22.5	0
+199	-22.5	0
+200	-22.5	0
+201	-22.5	0
+202	-22.5	0
+203	-22.5	0
+204	-22.5	0
+205	-22.5	0
+206	-22.5	0
+207	-22.5	0
+208	-22.5	0
+209	-22.5	0
+210	-22.5	0
+211	-22.5	0
+212	-22.5	0
+213	-22.5	0
+214	-22.5	0
+215	-22.5	0
+216	-22.5	0
+217	-22.5	0
+218	-22.5	0
+219	-22.5	0
+220	-22.5	0
+221	-22.5	0
+222	-22.5	0
+223	-22.5	0
+224	-22.5	0
+225	-22.5	0
+226	-22.5	0
+227	-22.5	0
+228	-22.5	0
+229	-22.5	0
+230	-22.5	0
+231	-22.5	0
+232	-22.5	0
+233	-22.5	0
+234	-22.5	0
+235	-22.5	0
+236	-22.5	0
+237	-22.5	0
+238	-22.5	0
+239	-22.5	0
+240	-22.5	0
+241	-22.5	0
+242	-22.5	0
+243	-22.5	0
+244	-22.5	0
+245	-22.5	0
+246	-22.5	0
+247	-22.5	0
+248	-22.5	0
+249	-22.5	0
+250	-22.5	0
+251	-22.5	0
+252	-22.5	0
+253	-22.5	0
+254	-22.5	0
+255	-22.5	0
+256	-22.5	0
+257	-22.5	0
+258	-22.5	0
+259	-22.5	0
+260	-22.5	0
+261	-22.5	0
+262	-22.5	0
+263	-22.5	0
+264	-22.5	0
+265	-22.5	0
+266	-22.5	0
+267	-22.5	0
+268	-22.5	0
+269	-22.5	0
+270	-22.5	0
+271	-22.5	0
+272	-22.5	0
+273	-22.5	0
+274	-22.5	0
+275	-22.5	0
+276	-22.5	0
+277	-22.5	0
+278	-22.5	0
+279	-22.5	0
+280	-22.5	0
+281	-22.5	0
+282	-22.5	0
+283	-22.5	0
+284	-22.5	0
+285	-22.5	0
+286	-22.5	0
+287	-22.5	0
+288	-22.5	0
+289	-22.5	0
+290	-22.5	0
+291	-22.5	0
+292	-22.5	0
+293	-22.5	0
+294	-22.5	0
+295	-22.5	0
+296	-22.5	0
+297	-22.5	0
+298	-22.5	0
+299	-22.5	0
+300	-22.5	0
+301	-22.5	0
+302	-22.5	0
+303	-22.5	0
+304	-22.5	0
+305	-22.5	0
+306	-22.5	0
+307	-22.5	0
+308	-22.5	0
+309	-22.5	0
+310	-22.5	0
+311	-22.5	0
+312	-22.5	0
+313	-22.5	0
+314	-22.5	0
+315	-22.5	0
+316	-22.5	0
+317	-22.5	0
+318	-22.5	0
+319	-22.5	0
+320	-22.5	0
+321	-22.5	0
+322	-22.5	0
+323	-22.5	0
+324	-22.5	0
+325	-22.5	0
+326	-22.5	0
+327	-22.5	0
+328	-22.5	0
+329	-22.5	0
+330	-22.5	0
+331	-22.5	0
+332	-22.5	0
+333	-22.5	0
+334	-22.5	0
+335	-22.5	0
+336	-22.5	0
+337	-22.5	0
+338	-22.5	0
+339	-22.5	0
+340	-22.5	0
+341	-22.5	0
+342	-22.5	0
+343	-22.5	0
+344	-22.5	0
+345	-22.5	0
+346	-22.5	0
+347	-22.5	0
+348	-22.5	0
+349	-22.5	0
+350	-22.5	0
+351	-22.5	0
+352	-22.5	0
+353	-22.5	0
+354	-22.5	0
+355	-22.5	0
+356	-22.5	0
+357	-22.5	0
+358	-22.5	0
+359	-22.5	0
+360	-22.5	0
+0	-22	0
+1	-22	0
+2	-22	0
+3	-22	0
+4	-22	0
+5	-22	0
+6	-22	0
+7	-22	0
+8	-22	0
+9	-22	0
+10	-22	0
+11	-22	0
+12	-22	0
+13	-22	0
+14	-22	0
+15	-22	0
+16	-22	0
+17	-22	0
+18	-22	0
+19	-22	0
+20	-22	0
+21	-22	0
+22	-22	0
+23	-22	0
+24	-22	0
+25	-22	0
+26	-22	0
+27	-22	0
+28	-22	0
+29	-22	0
+30	-22	0
+31	-22	0
+32	-22	0
+33	-22	0
+34	-22	0
+35	-22	0
+36	-22	0
+37	-22	0
+38	-22	0
+39	-22	0
+40	-22	0
+41	-22	0
+42	-22	0
+43	-22	0
+44	-22	0
+45	-22	0
+46	-22	0
+47	-22	0
+48	-22	0
+49	-22	0
+50	-22	0
+51	-22	0
+52	-22	0
+53	-22	0
+54	-22	0
+55	-22	0
+56	-22	0
+57	-22	0
+58	-22	0
+59	-22	0
+60	-22	0
+61	-22	0
+62	-22	0
+63	-22	0
+64	-22	0
+65	-22	0
+66	-22	0
+67	-22	0
+68	-22	0
+69	-22	0
+70	-22	0
+71	-22	0
+72	-22	0
+73	-22	0
+74	-22	0
+75	-22	0
+76	-22	0
+77	-22	0
+78	-22	0
+79	-22	0
+80	-22	0
+81	-22	0
+82	-22	0
+83	-22	0
+84	-22	0
+85	-22	0
+86	-22	0
+87	-22	0
+88	-22	0
+89	-22	0
+90	-22	0
+91	-22	0
+92	-22	0
+93	-22	0
+94	-22	0
+95	-22	0
+96	-22	0
+97	-22	0
+98	-22	0
+99	-22	0
+100	-22	0
+101	-22	0
+102	-22	0
+103	-22	0
+104	-22	0
+105	-22	0
+106	-22	0
+107	-22	0
+108	-22	0
+109	-22	0
+110	-22	0
+111	-22	0
+112	-22	0
+113	-22	0
+114	-22	0
+115	-22	0
+116	-22	0
+117	-22	0
+118	-22	0
+119	-22	0
+120	-22	0
+121	-22	0
+122	-22	0
+123	-22	0
+124	-22	0
+125	-22	0
+126	-22	0
+127	-22	0
+128	-22	0
+129	-22	0
+130	-22	0
+131	-22	0
+132	-22	0
+133	-22	0
+134	-22	0
+135	-22	0
+136	-22	0
+137	-22	0
+138	-22	0
+139	-22	0
+140	-22	0
+141	-22	0
+142	-22	0
+143	-22	0
+144	-22	0
+145	-22	0
+146	-22	0
+147	-22	0
+148	-22	0
+149	-22	0
+150	-22	0
+151	-22	0
+152	-22	0
+153	-22	0
+154	-22	0
+155	-22	0
+156	-22	0
+157	-22	0
+158	-22	0
+159	-22	0
+160	-22	0
+161	-22	0
+162	-22	0
+163	-22	0
+164	-22	0
+165	-22	0
+166	-22	0
+167	-22	0
+168	-22	0
+169	-22	0
+170	-22	0
+171	-22	0
+172	-22	0
+173	-22	0
+174	-22	0
+175	-22	0
+176	-22	0
+177	-22	0
+178	-22	0
+179	-22	0
+180	-22	0
+181	-22	0
+182	-22	0
+183	-22	0
+184	-22	0
+185	-22	0
+186	-22	0
+187	-22	0
+188	-22	0
+189	-22	0
+190	-22	0
+191	-22	0
+192	-22	0
+193	-22	0
+194	-22	0
+195	-22	0
+196	-22	0
+197	-22	0
+198	-22	0
+199	-22	0
+200	-22	0
+201	-22	0
+202	-22	0
+203	-22	0
+204	-22	0
+205	-22	0
+206	-22	0
+207	-22	0
+208	-22	0
+209	-22	0
+210	-22	0
+211	-22	0
+212	-22	0
+213	-22	0
+214	-22	0
+215	-22	0
+216	-22	0
+217	-22	0
+218	-22	0
+219	-22	0
+220	-22	0
+221	-22	0
+222	-22	0
+223	-22	0
+224	-22	0
+225	-22	0
+226	-22	0
+227	-22	0
+228	-22	0
+229	-22	0
+230	-22	0
+231	-22	0
+232	-22	0
+233	-22	0
+234	-22	0
+235	-22	0
+236	-22	0
+237	-22	0
+238	-22	0
+239	-22	0
+240	-22	0
+241	-22	0
+242	-22	0
+243	-22	0
+244	-22	0
+245	-22	0
+246	-22	0
+247	-22	0
+248	-22	0
+249	-22	0
+250	-22	0
+251	-22	0
+252	-22	0
+253	-22	0
+254	-22	0
+255	-22	0
+256	-22	0
+257	-22	0
+258	-22	0
+259	-22	0
+260	-22	0
+261	-22	0
+262	-22	0
+263	-22	0
+264	-22	0
+265	-22	0
+266	-22	0
+267	-22	0
+268	-22	0
+269	-22	0
+270	-22	0
+271	-22	0
+272	-22	0
+273	-22	0
+274	-22	0
+275	-22	0
+276	-22	0
+277	-22	0
+278	-22	0
+279	-22	0
+280	-22	0
+281	-22	0
+282	-22	0
+283	-22	0
+284	-22	0
+285	-22	0
+286	-22	0
+287	-22	0
+288	-22	0
+289	-22	0
+290	-22	0
+291	-22	0
+292	-22	0
+293	-22	0
+294	-22	0
+295	-22	0
+296	-22	0
+297	-22	0
+298	-22	0
+299	-22	0
+300	-22	0
+301	-22	0
+302	-22	0
+303	-22	0
+304	-22	0
+305	-22	0
+306	-22	0
+307	-22	0
+308	-22	0
+309	-22	0
+310	-22	0
+311	-22	0
+312	-22	0
+313	-22	0
+314	-22	0
+315	-22	0
+316	-22	0
+317	-22	0
+318	-22	0
+319	-22	0
+320	-22	0
+321	-22	0
+322	-22	0
+323	-22	0
+324	-22	0
+325	-22	0
+326	-22	0
+327	-22	0
+328	-22	0
+329	-22	0
+330	-22	0
+331	-22	0
+332	-22	0
+333	-22	0
+334	-22	0
+335	-22	0
+336	-22	0
+337	-22	0
+338	-22	0
+339	-22	0
+340	-22	0
+341	-22	0
+342	-22	0
+343	-22	0
+344	-22	0
+345	-22	0
+346	-22	0
+347	-22	0
+348	-22	0
+349	-22	0
+350	-22	0
+351	-22	0
+352	-22	0
+353	-22	0
+354	-22	0
+355	-22	0
+356	-22	0
+357	-22	0
+358	-22	0
+359	-22	0
+360	-22	0
+0	-21.5	0
+1	-21.5	0
+2	-21.5	0
+3	-21.5	0
+4	-21.5	0
+5	-21.5	0
+6	-21.5	0
+7	-21.5	0
+8	-21.5	0
+9	-21.5	0
+10	-21.5	0
+11	-21.5	0
+12	-21.5	0
+13	-21.5	0
+14	-21.5	0
+15	-21.5	0
+16	-21.5	0
+17	-21.5	0
+18	-21.5	0
+19	-21.5	0
+20	-21.5	0
+21	-21.5	0
+22	-21.5	0
+23	-21.5	0
+24	-21.5	0
+25	-21.5	0
+26	-21.5	0
+27	-21.5	0
+28	-21.5	0
+29	-21.5	0
+30	-21.5	0
+31	-21.5	0
+32	-21.5	0
+33	-21.5	0
+34	-21.5	0
+35	-21.5	0
+36	-21.5	0
+37	-21.5	0
+38	-21.5	0
+39	-21.5	0
+40	-21.5	0
+41	-21.5	0
+42	-21.5	0
+43	-21.5	0
+44	-21.5	0
+45	-21.5	0
+46	-21.5	0
+47	-21.5	0
+48	-21.5	0
+49	-21.5	0
+50	-21.5	0
+51	-21.5	0
+52	-21.5	0
+53	-21.5	0
+54	-21.5	0
+55	-21.5	0
+56	-21.5	0
+57	-21.5	0
+58	-21.5	0
+59	-21.5	0
+60	-21.5	0
+61	-21.5	0
+62	-21.5	0
+63	-21.5	0
+64	-21.5	0
+65	-21.5	0
+66	-21.5	0
+67	-21.5	0
+68	-21.5	0
+69	-21.5	0
+70	-21.5	0
+71	-21.5	0
+72	-21.5	0
+73	-21.5	0
+74	-21.5	0
+75	-21.5	0
+76	-21.5	0
+77	-21.5	0
+78	-21.5	0
+79	-21.5	0
+80	-21.5	0
+81	-21.5	0
+82	-21.5	0
+83	-21.5	0
+84	-21.5	0
+85	-21.5	0
+86	-21.5	0
+87	-21.5	0
+88	-21.5	0
+89	-21.5	0
+90	-21.5	0
+91	-21.5	0
+92	-21.5	0
+93	-21.5	0
+94	-21.5	0
+95	-21.5	0
+96	-21.5	0
+97	-21.5	0
+98	-21.5	0
+99	-21.5	0
+100	-21.5	0
+101	-21.5	0
+102	-21.5	0
+103	-21.5	0
+104	-21.5	0
+105	-21.5	0
+106	-21.5	0
+107	-21.5	0
+108	-21.5	0
+109	-21.5	0
+110	-21.5	0
+111	-21.5	0
+112	-21.5	0
+113	-21.5	0
+114	-21.5	0
+115	-21.5	0
+116	-21.5	0
+117	-21.5	0
+118	-21.5	0
+119	-21.5	0
+120	-21.5	0
+121	-21.5	0
+122	-21.5	0
+123	-21.5	0
+124	-21.5	0
+125	-21.5	0
+126	-21.5	0
+127	-21.5	0
+128	-21.5	0
+129	-21.5	0
+130	-21.5	0
+131	-21.5	0
+132	-21.5	0
+133	-21.5	0
+134	-21.5	0
+135	-21.5	0
+136	-21.5	0
+137	-21.5	0
+138	-21.5	0
+139	-21.5	0
+140	-21.5	0
+141	-21.5	0
+142	-21.5	0
+143	-21.5	0
+144	-21.5	0
+145	-21.5	0
+146	-21.5	0
+147	-21.5	0
+148	-21.5	0
+149	-21.5	0
+150	-21.5	0
+151	-21.5	0
+152	-21.5	0
+153	-21.5	0
+154	-21.5	0
+155	-21.5	0
+156	-21.5	0
+157	-21.5	0
+158	-21.5	0
+159	-21.5	0
+160	-21.5	0
+161	-21.5	0
+162	-21.5	0
+163	-21.5	0
+164	-21.5	0
+165	-21.5	0
+166	-21.5	0
+167	-21.5	0
+168	-21.5	0
+169	-21.5	0
+170	-21.5	0
+171	-21.5	0
+172	-21.5	0
+173	-21.5	0
+174	-21.5	0
+175	-21.5	0
+176	-21.5	0
+177	-21.5	0
+178	-21.5	0
+179	-21.5	0
+180	-21.5	0
+181	-21.5	0
+182	-21.5	0
+183	-21.5	0
+184	-21.5	0
+185	-21.5	0
+186	-21.5	0
+187	-21.5	0
+188	-21.5	0
+189	-21.5	0
+190	-21.5	0
+191	-21.5	0
+192	-21.5	0
+193	-21.5	0
+194	-21.5	0
+195	-21.5	0
+196	-21.5	0
+197	-21.5	0
+198	-21.5	0
+199	-21.5	0
+200	-21.5	0
+201	-21.5	0
+202	-21.5	0
+203	-21.5	0
+204	-21.5	0
+205	-21.5	0
+206	-21.5	0
+207	-21.5	0
+208	-21.5	0
+209	-21.5	0
+210	-21.5	0
+211	-21.5	0
+212	-21.5	0
+213	-21.5	0
+214	-21.5	0
+215	-21.5	0
+216	-21.5	0
+217	-21.5	0
+218	-21.5	0
+219	-21.5	0
+220	-21.5	0
+221	-21.5	0
+222	-21.5	0
+223	-21.5	0
+224	-21.5	0
+225	-21.5	0
+226	-21.5	0
+227	-21.5	0
+228	-21.5	0
+229	-21.5	0
+230	-21.5	0
+231	-21.5	0
+232	-21.5	0
+233	-21.5	0
+234	-21.5	0
+235	-21.5	0
+236	-21.5	0
+237	-21.5	0
+238	-21.5	0
+239	-21.5	0
+240	-21.5	0
+241	-21.5	0
+242	-21.5	0
+243	-21.5	0
+244	-21.5	0
+245	-21.5	0
+246	-21.5	0
+247	-21.5	0
+248	-21.5	0
+249	-21.5	0
+250	-21.5	0
+251	-21.5	0
+252	-21.5	0
+253	-21.5	0
+254	-21.5	0
+255	-21.5	0
+256	-21.5	0
+257	-21.5	0
+258	-21.5	0
+259	-21.5	0
+260	-21.5	0
+261	-21.5	0
+262	-21.5	0
+263	-21.5	0
+264	-21.5	0
+265	-21.5	0
+266	-21.5	0
+267	-21.5	0
+268	-21.5	0
+269	-21.5	0
+270	-21.5	0
+271	-21.5	0
+272	-21.5	0
+273	-21.5	0
+274	-21.5	0
+275	-21.5	0
+276	-21.5	0
+277	-21.5	0
+278	-21.5	0
+279	-21.5	0
+280	-21.5	0
+281	-21.5	0
+282	-21.5	0
+283	-21.5	0
+284	-21.5	0
+285	-21.5	0
+286	-21.5	0
+287	-21.5	0
+288	-21.5	0
+289	-21.5	0
+290	-21.5	0
+291	-21.5	0
+292	-21.5	0
+293	-21.5	0
+294	-21.5	0
+295	-21.5	0
+296	-21.5	0
+297	-21.5	0
+298	-21.5	0
+299	-21.5	0
+300	-21.5	0
+301	-21.5	0
+302	-21.5	0
+303	-21.5	0
+304	-21.5	0
+305	-21.5	0
+306	-21.5	0
+307	-21.5	0
+308	-21.5	0
+309	-21.5	0
+310	-21.5	0
+311	-21.5	0
+312	-21.5	0
+313	-21.5	0
+314	-21.5	0
+315	-21.5	0
+316	-21.5	0
+317	-21.5	0
+318	-21.5	0
+319	-21.5	0
+320	-21.5	0
+321	-21.5	0
+322	-21.5	0
+323	-21.5	0
+324	-21.5	0
+325	-21.5	0
+326	-21.5	0
+327	-21.5	0
+328	-21.5	0
+329	-21.5	0
+330	-21.5	0
+331	-21.5	0
+332	-21.5	0
+333	-21.5	0
+334	-21.5	0
+335	-21.5	0
+336	-21.5	0
+337	-21.5	0
+338	-21.5	0
+339	-21.5	0
+340	-21.5	0
+341	-21.5	0
+342	-21.5	0
+343	-21.5	0
+344	-21.5	0
+345	-21.5	0
+346	-21.5	0
+347	-21.5	0
+348	-21.5	0
+349	-21.5	0
+350	-21.5	0
+351	-21.5	0
+352	-21.5	0
+353	-21.5	0
+354	-21.5	0
+355	-21.5	0
+356	-21.5	0
+357	-21.5	0
+358	-21.5	0
+359	-21.5	0
+360	-21.5	0
+0	-21	0
+1	-21	0
+2	-21	0
+3	-21	0
+4	-21	0
+5	-21	0
+6	-21	0
+7	-21	0
+8	-21	0
+9	-21	0
+10	-21	0
+11	-21	0
+12	-21	0
+13	-21	0
+14	-21	0
+15	-21	0
+16	-21	0
+17	-21	0
+18	-21	0
+19	-21	0
+20	-21	0
+21	-21	0
+22	-21	0
+23	-21	0
+24	-21	0
+25	-21	0
+26	-21	0
+27	-21	0
+28	-21	0
+29	-21	0
+30	-21	0
+31	-21	0
+32	-21	0
+33	-21	0
+34	-21	0
+35	-21	0
+36	-21	0
+37	-21	0
+38	-21	0
+39	-21	0
+40	-21	0
+41	-21	0
+42	-21	0
+43	-21	0
+44	-21	0
+45	-21	0
+46	-21	0
+47	-21	0
+48	-21	0
+49	-21	0
+50	-21	0
+51	-21	0
+52	-21	0
+53	-21	0
+54	-21	0
+55	-21	0
+56	-21	0
+57	-21	0
+58	-21	0
+59	-21	0
+60	-21	0
+61	-21	0
+62	-21	0
+63	-21	0
+64	-21	0
+65	-21	0
+66	-21	0
+67	-21	0
+68	-21	0
+69	-21	0
+70	-21	0
+71	-21	0
+72	-21	0
+73	-21	0
+74	-21	0
+75	-21	0
+76	-21	0
+77	-21	0
+78	-21	0
+79	-21	0
+80	-21	0
+81	-21	0
+82	-21	0
+83	-21	0
+84	-21	0
+85	-21	0
+86	-21	0
+87	-21	0
+88	-21	0
+89	-21	0
+90	-21	0
+91	-21	0
+92	-21	0
+93	-21	0
+94	-21	0
+95	-21	0
+96	-21	0
+97	-21	0
+98	-21	0
+99	-21	0
+100	-21	0
+101	-21	0
+102	-21	0
+103	-21	0
+104	-21	0
+105	-21	0
+106	-21	0
+107	-21	0
+108	-21	0
+109	-21	0
+110	-21	0
+111	-21	0
+112	-21	0
+113	-21	0
+114	-21	0
+115	-21	0
+116	-21	0
+117	-21	0
+118	-21	0
+119	-21	0
+120	-21	0
+121	-21	0
+122	-21	0
+123	-21	0
+124	-21	0
+125	-21	0
+126	-21	0
+127	-21	0
+128	-21	0
+129	-21	0
+130	-21	0
+131	-21	0
+132	-21	0
+133	-21	0
+134	-21	0
+135	-21	0
+136	-21	0
+137	-21	0
+138	-21	0
+139	-21	0
+140	-21	0
+141	-21	0
+142	-21	0
+143	-21	0
+144	-21	0
+145	-21	0
+146	-21	0
+147	-21	0
+148	-21	0
+149	-21	0
+150	-21	0
+151	-21	0
+152	-21	0
+153	-21	0
+154	-21	0
+155	-21	0
+156	-21	0
+157	-21	0
+158	-21	0
+159	-21	0
+160	-21	0
+161	-21	0
+162	-21	0
+163	-21	0
+164	-21	0
+165	-21	0
+166	-21	0
+167	-21	0
+168	-21	0
+169	-21	0
+170	-21	0
+171	-21	0
+172	-21	0
+173	-21	0
+174	-21	0
+175	-21	0
+176	-21	0
+177	-21	0
+178	-21	0
+179	-21	0
+180	-21	0
+181	-21	0
+182	-21	0
+183	-21	0
+184	-21	0
+185	-21	0
+186	-21	0
+187	-21	0
+188	-21	0
+189	-21	0
+190	-21	0
+191	-21	0
+192	-21	0
+193	-21	0
+194	-21	0
+195	-21	0
+196	-21	0
+197	-21	0
+198	-21	0
+199	-21	0
+200	-21	0
+201	-21	0
+202	-21	0
+203	-21	0
+204	-21	0
+205	-21	0
+206	-21	0
+207	-21	0
+208	-21	0
+209	-21	0
+210	-21	0
+211	-21	0
+212	-21	0
+213	-21	0
+214	-21	0
+215	-21	0
+216	-21	0
+217	-21	0
+218	-21	0
+219	-21	0
+220	-21	0
+221	-21	0
+222	-21	0
+223	-21	0
+224	-21	0
+225	-21	0
+226	-21	0
+227	-21	0
+228	-21	0
+229	-21	0
+230	-21	0
+231	-21	0
+232	-21	0
+233	-21	0
+234	-21	0
+235	-21	0
+236	-21	0
+237	-21	0
+238	-21	0
+239	-21	0
+240	-21	0
+241	-21	0
+242	-21	0
+243	-21	0
+244	-21	0
+245	-21	0
+246	-21	0
+247	-21	0
+248	-21	0
+249	-21	0
+250	-21	0
+251	-21	0
+252	-21	0
+253	-21	0
+254	-21	0
+255	-21	0
+256	-21	0
+257	-21	0
+258	-21	0
+259	-21	0
+260	-21	0
+261	-21	0
+262	-21	0
+263	-21	0
+264	-21	0
+265	-21	0
+266	-21	0
+267	-21	0
+268	-21	0
+269	-21	0
+270	-21	0
+271	-21	0
+272	-21	0
+273	-21	0
+274	-21	0
+275	-21	0
+276	-21	0
+277	-21	0
+278	-21	0
+279	-21	0
+280	-21	0
+281	-21	0
+282	-21	0
+283	-21	0
+284	-21	0
+285	-21	0
+286	-21	0
+287	-21	0
+288	-21	0
+289	-21	0
+290	-21	0
+291	-21	0
+292	-21	0
+293	-21	0
+294	-21	0
+295	-21	0
+296	-21	0
+297	-21	0
+298	-21	0
+299	-21	0
+300	-21	0
+301	-21	0
+302	-21	0
+303	-21	0
+304	-21	0
+305	-21	0
+306	-21	0
+307	-21	0
+308	-21	0
+309	-21	0
+310	-21	0
+311	-21	0
+312	-21	0
+313	-21	0
+314	-21	0
+315	-21	0
+316	-21	0
+317	-21	0
+318	-21	0
+319	-21	0
+320	-21	0
+321	-21	0
+322	-21	0
+323	-21	0
+324	-21	0
+325	-21	0
+326	-21	0
+327	-21	0
+328	-21	0
+329	-21	0
+330	-21	0
+331	-21	0
+332	-21	0
+333	-21	0
+334	-21	0
+335	-21	0
+336	-21	0
+337	-21	0
+338	-21	0
+339	-21	0
+340	-21	0
+341	-21	0
+342	-21	0
+343	-21	0
+344	-21	0
+345	-21	0
+346	-21	0
+347	-21	0
+348	-21	0
+349	-21	0
+350	-21	0
+351	-21	0
+352	-21	0
+353	-21	0
+354	-21	0
+355	-21	0
+356	-21	0
+357	-21	0
+358	-21	0
+359	-21	0
+360	-21	0
+0	-20.5	0
+1	-20.5	0
+2	-20.5	0
+3	-20.5	0
+4	-20.5	0
+5	-20.5	0
+6	-20.5	0
+7	-20.5	0
+8	-20.5	0
+9	-20.5	0
+10	-20.5	0
+11	-20.5	0
+12	-20.5	0
+13	-20.5	0
+14	-20.5	0
+15	-20.5	0
+16	-20.5	0
+17	-20.5	0
+18	-20.5	0
+19	-20.5	0
+20	-20.5	0
+21	-20.5	0
+22	-20.5	0
+23	-20.5	0
+24	-20.5	0
+25	-20.5	0
+26	-20.5	0
+27	-20.5	0
+28	-20.5	0
+29	-20.5	0
+30	-20.5	0
+31	-20.5	0
+32	-20.5	0
+33	-20.5	0
+34	-20.5	0
+35	-20.5	0
+36	-20.5	0
+37	-20.5	0
+38	-20.5	0
+39	-20.5	0
+40	-20.5	0
+41	-20.5	0
+42	-20.5	0
+43	-20.5	0
+44	-20.5	0
+45	-20.5	0
+46	-20.5	0
+47	-20.5	0
+48	-20.5	0
+49	-20.5	0
+50	-20.5	0
+51	-20.5	0
+52	-20.5	0
+53	-20.5	0
+54	-20.5	0
+55	-20.5	0
+56	-20.5	0
+57	-20.5	0
+58	-20.5	0
+59	-20.5	0
+60	-20.5	0
+61	-20.5	0
+62	-20.5	0
+63	-20.5	0
+64	-20.5	0
+65	-20.5	0
+66	-20.5	0
+67	-20.5	0
+68	-20.5	0
+69	-20.5	0
+70	-20.5	0
+71	-20.5	0
+72	-20.5	0
+73	-20.5	0
+74	-20.5	0
+75	-20.5	0
+76	-20.5	0
+77	-20.5	0
+78	-20.5	0
+79	-20.5	0
+80	-20.5	0
+81	-20.5	0
+82	-20.5	0
+83	-20.5	0
+84	-20.5	0
+85	-20.5	0
+86	-20.5	0
+87	-20.5	0
+88	-20.5	0
+89	-20.5	0
+90	-20.5	0
+91	-20.5	0
+92	-20.5	0
+93	-20.5	0
+94	-20.5	0
+95	-20.5	0
+96	-20.5	0
+97	-20.5	0
+98	-20.5	0
+99	-20.5	0
+100	-20.5	0
+101	-20.5	0
+102	-20.5	0
+103	-20.5	0
+104	-20.5	0
+105	-20.5	0
+106	-20.5	0
+107	-20.5	0
+108	-20.5	0
+109	-20.5	0
+110	-20.5	0
+111	-20.5	0
+112	-20.5	0
+113	-20.5	0
+114	-20.5	0
+115	-20.5	0
+116	-20.5	0
+117	-20.5	0
+118	-20.5	0
+119	-20.5	0
+120	-20.5	0
+121	-20.5	0
+122	-20.5	0
+123	-20.5	0
+124	-20.5	0
+125	-20.5	0
+126	-20.5	0
+127	-20.5	0
+128	-20.5	0
+129	-20.5	0
+130	-20.5	0
+131	-20.5	0
+132	-20.5	0
+133	-20.5	0
+134	-20.5	0
+135	-20.5	0
+136	-20.5	0
+137	-20.5	0
+138	-20.5	0
+139	-20.5	0
+140	-20.5	0
+141	-20.5	0
+142	-20.5	0
+143	-20.5	0
+144	-20.5	0
+145	-20.5	0
+146	-20.5	0
+147	-20.5	0
+148	-20.5	0
+149	-20.5	0
+150	-20.5	0
+151	-20.5	0
+152	-20.5	0
+153	-20.5	0
+154	-20.5	0
+155	-20.5	0
+156	-20.5	0
+157	-20.5	0
+158	-20.5	0
+159	-20.5	0
+160	-20.5	0
+161	-20.5	0
+162	-20.5	0
+163	-20.5	0
+164	-20.5	0
+165	-20.5	0
+166	-20.5	0
+167	-20.5	0
+168	-20.5	0
+169	-20.5	0
+170	-20.5	0
+171	-20.5	0
+172	-20.5	0
+173	-20.5	0
+174	-20.5	0
+175	-20.5	0
+176	-20.5	0
+177	-20.5	0
+178	-20.5	0
+179	-20.5	0
+180	-20.5	0
+181	-20.5	0
+182	-20.5	0
+183	-20.5	0
+184	-20.5	0
+185	-20.5	0
+186	-20.5	0
+187	-20.5	0
+188	-20.5	0
+189	-20.5	0
+190	-20.5	0
+191	-20.5	0
+192	-20.5	0
+193	-20.5	0
+194	-20.5	0
+195	-20.5	0
+196	-20.5	0
+197	-20.5	0
+198	-20.5	0
+199	-20.5	0
+200	-20.5	0
+201	-20.5	0
+202	-20.5	0
+203	-20.5	0
+204	-20.5	0
+205	-20.5	0
+206	-20.5	0
+207	-20.5	0
+208	-20.5	0
+209	-20.5	0
+210	-20.5	0
+211	-20.5	0
+212	-20.5	0
+213	-20.5	0
+214	-20.5	0
+215	-20.5	0
+216	-20.5	0
+217	-20.5	0
+218	-20.5	0
+219	-20.5	0
+220	-20.5	0
+221	-20.5	0
+222	-20.5	0
+223	-20.5	0
+224	-20.5	0
+225	-20.5	0
+226	-20.5	0
+227	-20.5	0
+228	-20.5	0
+229	-20.5	0
+230	-20.5	0
+231	-20.5	0
+232	-20.5	0
+233	-20.5	0
+234	-20.5	0
+235	-20.5	0
+236	-20.5	0
+237	-20.5	0
+238	-20.5	0
+239	-20.5	0
+240	-20.5	0
+241	-20.5	0
+242	-20.5	0
+243	-20.5	0
+244	-20.5	0
+245	-20.5	0
+246	-20.5	0
+247	-20.5	0
+248	-20.5	0
+249	-20.5	0
+250	-20.5	0
+251	-20.5	0
+252	-20.5	0
+253	-20.5	0
+254	-20.5	0
+255	-20.5	0
+256	-20.5	0
+257	-20.5	0
+258	-20.5	0
+259	-20.5	0
+260	-20.5	0
+261	-20.5	0
+262	-20.5	0
+263	-20.5	0
+264	-20.5	0
+265	-20.5	0
+266	-20.5	0
+267	-20.5	0
+268	-20.5	0
+269	-20.5	0
+270	-20.5	0
+271	-20.5	0
+272	-20.5	0
+273	-20.5	0
+274	-20.5	0
+275	-20.5	0
+276	-20.5	0
+277	-20.5	0
+278	-20.5	0
+279	-20.5	0
+280	-20.5	0
+281	-20.5	0
+282	-20.5	0
+283	-20.5	0
+284	-20.5	0
+285	-20.5	0
+286	-20.5	0
+287	-20.5	0
+288	-20.5	0
+289	-20.5	0
+290	-20.5	0
+291	-20.5	0
+292	-20.5	0
+293	-20.5	0
+294	-20.5	0
+295	-20.5	0
+296	-20.5	0
+297	-20.5	0
+298	-20.5	0
+299	-20.5	0
+300	-20.5	0
+301	-20.5	0
+302	-20.5	0
+303	-20.5	0
+304	-20.5	0
+305	-20.5	0
+306	-20.5	0
+307	-20.5	0
+308	-20.5	0
+309	-20.5	0
+310	-20.5	0
+311	-20.5	0
+312	-20.5	0
+313	-20.5	0
+314	-20.5	0
+315	-20.5	0
+316	-20.5	0
+317	-20.5	0
+318	-20.5	0
+319	-20.5	0
+320	-20.5	0
+321	-20.5	0
+322	-20.5	0
+323	-20.5	0
+324	-20.5	0
+325	-20.5	0
+326	-20.5	0
+327	-20.5	0
+328	-20.5	0
+329	-20.5	0
+330	-20.5	0
+331	-20.5	0
+332	-20.5	0
+333	-20.5	0
+334	-20.5	0
+335	-20.5	0
+336	-20.5	0
+337	-20.5	0
+338	-20.5	0
+339	-20.5	0
+340	-20.5	0
+341	-20.5	0
+342	-20.5	0
+343	-20.5	0
+344	-20.5	0
+345	-20.5	0
+346	-20.5	0
+347	-20.5	0
+348	-20.5	0
+349	-20.5	0
+350	-20.5	0
+351	-20.5	0
+352	-20.5	0
+353	-20.5	0
+354	-20.5	0
+355	-20.5	0
+356	-20.5	0
+357	-20.5	0
+358	-20.5	0
+359	-20.5	0
+360	-20.5	0
+0	-20	0
+1	-20	0
+2	-20	0
+3	-20	0
+4	-20	0
+5	-20	0
+6	-20	0
+7	-20	0
+8	-20	0
+9	-20	0
+10	-20	0
+11	-20	0
+12	-20	0
+13	-20	0
+14	-20	0
+15	-20	0
+16	-20	0
+17	-20	0
+18	-20	0
+19	-20	0
+20	-20	0
+21	-20	0
+22	-20	0
+23	-20	0
+24	-20	0
+25	-20	0
+26	-20	0
+27	-20	0
+28	-20	0
+29	-20	0
+30	-20	0
+31	-20	0
+32	-20	0
+33	-20	0
+34	-20	0
+35	-20	0
+36	-20	0
+37	-20	0
+38	-20	0
+39	-20	0
+40	-20	0
+41	-20	0
+42	-20	0
+43	-20	0
+44	-20	0
+45	-20	0
+46	-20	0
+47	-20	0
+48	-20	0
+49	-20	0
+50	-20	0
+51	-20	0
+52	-20	0
+53	-20	0
+54	-20	0
+55	-20	0
+56	-20	0
+57	-20	0
+58	-20	0
+59	-20	0
+60	-20	0
+61	-20	0
+62	-20	0
+63	-20	0
+64	-20	0
+65	-20	0
+66	-20	0
+67	-20	0
+68	-20	0
+69	-20	0
+70	-20	0
+71	-20	0
+72	-20	0
+73	-20	0
+74	-20	0
+75	-20	0
+76	-20	0
+77	-20	0
+78	-20	0
+79	-20	0
+80	-20	0
+81	-20	0
+82	-20	0
+83	-20	0
+84	-20	0
+85	-20	0
+86	-20	0
+87	-20	0
+88	-20	0
+89	-20	0
+90	-20	0
+91	-20	0
+92	-20	0
+93	-20	0
+94	-20	0
+95	-20	0
+96	-20	0
+97	-20	0
+98	-20	0
+99	-20	0
+100	-20	0
+101	-20	0
+102	-20	0
+103	-20	0
+104	-20	0
+105	-20	0
+106	-20	0
+107	-20	0
+108	-20	0
+109	-20	0
+110	-20	0
+111	-20	0
+112	-20	0
+113	-20	0
+114	-20	0
+115	-20	0
+116	-20	0
+117	-20	0
+118	-20	0
+119	-20	0
+120	-20	0
+121	-20	0
+122	-20	0
+123	-20	0
+124	-20	0
+125	-20	0
+126	-20	0
+127	-20	0
+128	-20	0
+129	-20	0
+130	-20	0
+131	-20	0
+132	-20	0
+133	-20	0
+134	-20	0
+135	-20	0
+136	-20	0
+137	-20	0
+138	-20	0
+139	-20	0
+140	-20	0
+141	-20	0
+142	-20	0
+143	-20	0
+144	-20	0
+145	-20	0
+146	-20	0
+147	-20	0
+148	-20	0
+149	-20	0
+150	-20	0
+151	-20	0
+152	-20	0
+153	-20	0
+154	-20	0
+155	-20	0
+156	-20	0
+157	-20	0
+158	-20	0
+159	-20	0
+160	-20	0
+161	-20	0
+162	-20	0
+163	-20	0
+164	-20	0
+165	-20	0
+166	-20	0
+167	-20	0
+168	-20	0
+169	-20	0
+170	-20	0
+171	-20	0
+172	-20	0
+173	-20	0
+174	-20	0
+175	-20	0
+176	-20	0
+177	-20	0
+178	-20	0
+179	-20	0
+180	-20	0
+181	-20	0
+182	-20	0
+183	-20	0
+184	-20	0
+185	-20	0
+186	-20	0
+187	-20	0
+188	-20	0
+189	-20	0
+190	-20	0
+191	-20	0
+192	-20	0
+193	-20	0
+194	-20	0
+195	-20	0
+196	-20	0
+197	-20	0
+198	-20	0
+199	-20	0
+200	-20	0
+201	-20	0
+202	-20	0
+203	-20	0
+204	-20	0
+205	-20	0
+206	-20	0
+207	-20	0
+208	-20	0
+209	-20	0
+210	-20	0
+211	-20	0
+212	-20	0
+213	-20	0
+214	-20	0
+215	-20	0
+216	-20	0
+217	-20	0
+218	-20	0
+219	-20	0
+220	-20	0
+221	-20	0
+222	-20	0
+223	-20	0
+224	-20	0
+225	-20	0
+226	-20	0
+227	-20	0
+228	-20	0
+229	-20	0
+230	-20	0
+231	-20	0
+232	-20	0
+233	-20	0
+234	-20	0
+235	-20	0
+236	-20	0
+237	-20	0
+238	-20	0
+239	-20	0
+240	-20	0
+241	-20	0
+242	-20	0
+243	-20	0
+244	-20	0
+245	-20	0
+246	-20	0
+247	-20	0
+248	-20	0
+249	-20	0
+250	-20	0
+251	-20	0
+252	-20	0
+253	-20	0
+254	-20	0
+255	-20	0
+256	-20	0
+257	-20	0
+258	-20	0
+259	-20	0
+260	-20	0
+261	-20	0
+262	-20	0
+263	-20	0
+264	-20	0
+265	-20	0
+266	-20	0
+267	-20	0
+268	-20	0
+269	-20	0
+270	-20	0
+271	-20	0
+272	-20	0
+273	-20	0
+274	-20	0
+275	-20	0
+276	-20	0
+277	-20	0
+278	-20	0
+279	-20	0
+280	-20	0
+281	-20	0
+282	-20	0
+283	-20	0
+284	-20	0
+285	-20	0
+286	-20	0
+287	-20	0
+288	-20	0
+289	-20	0
+290	-20	0
+291	-20	0
+292	-20	0
+293	-20	0
+294	-20	0
+295	-20	0
+296	-20	0
+297	-20	0
+298	-20	0
+299	-20	0
+300	-20	0
+301	-20	0
+302	-20	0
+303	-20	0
+304	-20	0
+305	-20	0
+306	-20	0
+307	-20	0
+308	-20	0
+309	-20	0
+310	-20	0
+311	-20	0
+312	-20	0
+313	-20	0
+314	-20	0
+315	-20	0
+316	-20	0
+317	-20	0
+318	-20	0
+319	-20	0
+320	-20	0
+321	-20	0
+322	-20	0
+323	-20	0
+324	-20	0
+325	-20	0
+326	-20	0
+327	-20	0
+328	-20	0
+329	-20	0
+330	-20	0
+331	-20	0
+332	-20	0
+333	-20	0
+334	-20	0
+335	-20	0
+336	-20	0
+337	-20	0
+338	-20	0
+339	-20	0
+340	-20	0
+341	-20	0
+342	-20	0
+343	-20	0
+344	-20	0
+345	-20	0
+346	-20	0
+347	-20	0
+348	-20	0
+349	-20	0
+350	-20	0
+351	-20	0
+352	-20	0
+353	-20	0
+354	-20	0
+355	-20	0
+356	-20	0
+357	-20	0
+358	-20	0
+359	-20	0
+360	-20	0
+0	-19.5	0
+1	-19.5	0
+2	-19.5	0
+3	-19.5	0
+4	-19.5	0
+5	-19.5	0
+6	-19.5	0
+7	-19.5	0
+8	-19.5	0
+9	-19.5	0
+10	-19.5	0
+11	-19.5	0
+12	-19.5	0
+13	-19.5	0
+14	-19.5	0
+15	-19.5	0
+16	-19.5	0
+17	-19.5	0
+18	-19.5	0
+19	-19.5	0
+20	-19.5	0
+21	-19.5	0
+22	-19.5	0
+23	-19.5	0
+24	-19.5	0
+25	-19.5	0
+26	-19.5	0
+27	-19.5	0
+28	-19.5	0
+29	-19.5	0
+30	-19.5	0
+31	-19.5	0
+32	-19.5	0
+33	-19.5	0
+34	-19.5	0
+35	-19.5	0
+36	-19.5	0
+37	-19.5	0
+38	-19.5	0
+39	-19.5	0
+40	-19.5	0
+41	-19.5	0
+42	-19.5	0
+43	-19.5	0
+44	-19.5	0
+45	-19.5	0
+46	-19.5	0
+47	-19.5	0
+48	-19.5	0
+49	-19.5	0
+50	-19.5	0
+51	-19.5	0
+52	-19.5	0
+53	-19.5	0
+54	-19.5	0
+55	-19.5	0
+56	-19.5	0
+57	-19.5	0
+58	-19.5	0
+59	-19.5	0
+60	-19.5	0
+61	-19.5	0
+62	-19.5	0
+63	-19.5	0
+64	-19.5	0
+65	-19.5	0
+66	-19.5	0
+67	-19.5	0
+68	-19.5	0
+69	-19.5	0
+70	-19.5	0
+71	-19.5	0
+72	-19.5	0
+73	-19.5	0
+74	-19.5	0
+75	-19.5	0
+76	-19.5	0
+77	-19.5	0
+78	-19.5	0
+79	-19.5	0
+80	-19.5	0
+81	-19.5	0
+82	-19.5	0
+83	-19.5	0
+84	-19.5	0
+85	-19.5	0
+86	-19.5	0
+87	-19.5	0
+88	-19.5	0
+89	-19.5	0
+90	-19.5	0
+91	-19.5	0
+92	-19.5	0
+93	-19.5	0
+94	-19.5	0
+95	-19.5	0
+96	-19.5	0
+97	-19.5	0
+98	-19.5	0
+99	-19.5	0
+100	-19.5	0
+101	-19.5	0
+102	-19.5	0
+103	-19.5	0
+104	-19.5	0
+105	-19.5	0
+106	-19.5	0
+107	-19.5	0
+108	-19.5	0
+109	-19.5	0
+110	-19.5	0
+111	-19.5	0
+112	-19.5	0
+113	-19.5	0
+114	-19.5	0
+115	-19.5	0
+116	-19.5	0
+117	-19.5	0
+118	-19.5	0
+119	-19.5	0
+120	-19.5	0
+121	-19.5	0
+122	-19.5	0
+123	-19.5	0
+124	-19.5	0
+125	-19.5	0
+126	-19.5	0
+127	-19.5	0
+128	-19.5	0
+129	-19.5	0
+130	-19.5	0
+131	-19.5	0
+132	-19.5	0
+133	-19.5	0
+134	-19.5	0
+135	-19.5	0
+136	-19.5	0
+137	-19.5	0
+138	-19.5	0
+139	-19.5	0
+140	-19.5	0
+141	-19.5	0
+142	-19.5	0
+143	-19.5	0
+144	-19.5	0
+145	-19.5	0
+146	-19.5	0
+147	-19.5	0
+148	-19.5	0
+149	-19.5	0
+150	-19.5	0
+151	-19.5	0
+152	-19.5	0
+153	-19.5	0
+154	-19.5	0
+155	-19.5	0
+156	-19.5	0
+157	-19.5	0
+158	-19.5	0
+159	-19.5	0
+160	-19.5	0
+161	-19.5	0
+162	-19.5	0
+163	-19.5	0
+164	-19.5	0
+165	-19.5	0
+166	-19.5	0
+167	-19.5	0
+168	-19.5	0
+169	-19.5	0
+170	-19.5	0
+171	-19.5	0
+172	-19.5	0
+173	-19.5	0
+174	-19.5	0
+175	-19.5	0
+176	-19.5	0
+177	-19.5	0
+178	-19.5	0
+179	-19.5	0
+180	-19.5	0
+181	-19.5	0
+182	-19.5	0
+183	-19.5	0
+184	-19.5	0
+185	-19.5	0
+186	-19.5	0
+187	-19.5	0
+188	-19.5	0
+189	-19.5	0
+190	-19.5	0
+191	-19.5	0
+192	-19.5	0
+193	-19.5	0
+194	-19.5	0
+195	-19.5	0
+196	-19.5	0
+197	-19.5	0
+198	-19.5	0
+199	-19.5	0
+200	-19.5	0
+201	-19.5	0
+202	-19.5	0
+203	-19.5	0
+204	-19.5	0
+205	-19.5	0
+206	-19.5	0
+207	-19.5	0
+208	-19.5	0
+209	-19.5	0
+210	-19.5	0
+211	-19.5	0
+212	-19.5	0
+213	-19.5	0
+214	-19.5	0
+215	-19.5	0
+216	-19.5	0
+217	-19.5	0
+218	-19.5	0
+219	-19.5	0
+220	-19.5	0
+221	-19.5	0
+222	-19.5	0
+223	-19.5	0
+224	-19.5	0
+225	-19.5	0
+226	-19.5	0
+227	-19.5	0
+228	-19.5	0
+229	-19.5	0
+230	-19.5	0
+231	-19.5	0
+232	-19.5	0
+233	-19.5	0
+234	-19.5	0
+235	-19.5	0
+236	-19.5	0
+237	-19.5	0
+238	-19.5	0
+239	-19.5	0
+240	-19.5	0
+241	-19.5	0
+242	-19.5	0
+243	-19.5	0
+244	-19.5	0
+245	-19.5	0
+246	-19.5	0
+247	-19.5	0
+248	-19.5	0
+249	-19.5	0
+250	-19.5	0
+251	-19.5	0
+252	-19.5	0
+253	-19.5	0
+254	-19.5	0
+255	-19.5	0
+256	-19.5	0
+257	-19.5	0
+258	-19.5	0
+259	-19.5	0
+260	-19.5	0
+261	-19.5	0
+262	-19.5	0
+263	-19.5	0
+264	-19.5	0
+265	-19.5	0
+266	-19.5	0
+267	-19.5	0
+268	-19.5	0
+269	-19.5	0
+270	-19.5	0
+271	-19.5	0
+272	-19.5	0
+273	-19.5	0
+274	-19.5	0
+275	-19.5	0
+276	-19.5	0
+277	-19.5	0
+278	-19.5	0
+279	-19.5	0
+280	-19.5	0
+281	-19.5	0
+282	-19.5	0
+283	-19.5	0
+284	-19.5	0
+285	-19.5	0
+286	-19.5	0
+287	-19.5	0
+288	-19.5	0
+289	-19.5	0
+290	-19.5	0
+291	-19.5	0
+292	-19.5	0
+293	-19.5	0
+294	-19.5	0
+295	-19.5	0
+296	-19.5	0
+297	-19.5	0
+298	-19.5	0
+299	-19.5	0
+300	-19.5	0
+301	-19.5	0
+302	-19.5	0
+303	-19.5	0
+304	-19.5	0
+305	-19.5	0
+306	-19.5	0
+307	-19.5	0
+308	-19.5	0
+309	-19.5	0
+310	-19.5	0
+311	-19.5	0
+312	-19.5	0
+313	-19.5	0
+314	-19.5	0
+315	-19.5	0
+316	-19.5	0
+317	-19.5	0
+318	-19.5	0
+319	-19.5	0
+320	-19.5	0
+321	-19.5	0
+322	-19.5	0
+323	-19.5	0
+324	-19.5	0
+325	-19.5	0
+326	-19.5	0
+327	-19.5	0
+328	-19.5	0
+329	-19.5	0
+330	-19.5	0
+331	-19.5	0
+332	-19.5	0
+333	-19.5	0
+334	-19.5	0
+335	-19.5	0
+336	-19.5	0
+337	-19.5	0
+338	-19.5	0
+339	-19.5	0
+340	-19.5	0
+341	-19.5	0
+342	-19.5	0
+343	-19.5	0
+344	-19.5	0
+345	-19.5	0
+346	-19.5	0
+347	-19.5	0
+348	-19.5	0
+349	-19.5	0
+350	-19.5	0
+351	-19.5	0
+352	-19.5	0
+353	-19.5	0
+354	-19.5	0
+355	-19.5	0
+356	-19.5	0
+357	-19.5	0
+358	-19.5	0
+359	-19.5	0
+360	-19.5	0
+0	-19	0
+1	-19	0
+2	-19	0
+3	-19	0
+4	-19	0
+5	-19	0
+6	-19	0
+7	-19	0
+8	-19	0
+9	-19	0
+10	-19	0
+11	-19	0
+12	-19	0
+13	-19	0
+14	-19	0
+15	-19	0
+16	-19	0
+17	-19	0
+18	-19	0
+19	-19	0
+20	-19	0
+21	-19	0
+22	-19	0
+23	-19	0
+24	-19	0
+25	-19	0
+26	-19	0
+27	-19	0
+28	-19	0
+29	-19	0
+30	-19	0
+31	-19	0
+32	-19	0
+33	-19	0
+34	-19	0
+35	-19	0
+36	-19	0
+37	-19	0
+38	-19	0
+39	-19	0
+40	-19	0
+41	-19	0
+42	-19	0
+43	-19	0
+44	-19	0
+45	-19	0
+46	-19	0
+47	-19	0
+48	-19	0
+49	-19	0
+50	-19	0
+51	-19	0
+52	-19	0
+53	-19	0
+54	-19	0
+55	-19	0
+56	-19	0
+57	-19	0
+58	-19	0
+59	-19	0
+60	-19	0
+61	-19	0
+62	-19	0
+63	-19	0
+64	-19	0
+65	-19	0
+66	-19	0
+67	-19	0
+68	-19	0
+69	-19	0
+70	-19	0
+71	-19	0
+72	-19	0
+73	-19	0
+74	-19	0
+75	-19	0
+76	-19	0
+77	-19	0
+78	-19	0
+79	-19	0
+80	-19	0
+81	-19	0
+82	-19	0
+83	-19	0
+84	-19	0
+85	-19	0
+86	-19	0
+87	-19	0
+88	-19	0
+89	-19	0
+90	-19	0
+91	-19	0
+92	-19	0
+93	-19	0
+94	-19	0
+95	-19	0
+96	-19	0
+97	-19	0
+98	-19	0
+99	-19	0
+100	-19	0
+101	-19	0
+102	-19	0
+103	-19	0
+104	-19	0
+105	-19	0
+106	-19	0
+107	-19	0
+108	-19	0
+109	-19	0
+110	-19	0
+111	-19	0
+112	-19	0
+113	-19	0
+114	-19	0
+115	-19	0
+116	-19	0
+117	-19	0
+118	-19	0
+119	-19	0
+120	-19	0
+121	-19	0
+122	-19	0
+123	-19	0
+124	-19	0
+125	-19	0
+126	-19	0
+127	-19	0
+128	-19	0
+129	-19	0
+130	-19	0
+131	-19	0
+132	-19	0
+133	-19	0
+134	-19	0
+135	-19	0
+136	-19	0
+137	-19	0
+138	-19	0
+139	-19	0
+140	-19	0
+141	-19	0
+142	-19	0
+143	-19	0
+144	-19	0
+145	-19	0
+146	-19	0
+147	-19	0
+148	-19	0
+149	-19	0
+150	-19	0
+151	-19	0
+152	-19	0
+153	-19	0
+154	-19	0
+155	-19	0
+156	-19	0
+157	-19	0
+158	-19	0
+159	-19	0
+160	-19	0
+161	-19	0
+162	-19	0
+163	-19	0
+164	-19	0
+165	-19	0
+166	-19	0
+167	-19	0
+168	-19	0
+169	-19	0
+170	-19	0
+171	-19	0
+172	-19	0
+173	-19	0
+174	-19	0
+175	-19	0
+176	-19	0
+177	-19	0
+178	-19	0
+179	-19	0
+180	-19	0
+181	-19	0
+182	-19	0
+183	-19	0
+184	-19	0
+185	-19	0
+186	-19	0
+187	-19	0
+188	-19	0
+189	-19	0
+190	-19	0
+191	-19	0
+192	-19	0
+193	-19	0
+194	-19	0
+195	-19	0
+196	-19	0
+197	-19	0
+198	-19	0
+199	-19	0
+200	-19	0
+201	-19	0
+202	-19	0
+203	-19	0
+204	-19	0
+205	-19	0
+206	-19	0
+207	-19	0
+208	-19	0
+209	-19	0
+210	-19	0
+211	-19	0
+212	-19	0
+213	-19	0
+214	-19	0
+215	-19	0
+216	-19	0
+217	-19	0
+218	-19	0
+219	-19	0
+220	-19	0
+221	-19	0
+222	-19	0
+223	-19	0
+224	-19	0
+225	-19	0
+226	-19	0
+227	-19	0
+228	-19	0
+229	-19	0
+230	-19	0
+231	-19	0
+232	-19	0
+233	-19	0
+234	-19	0
+235	-19	0
+236	-19	0
+237	-19	0
+238	-19	0
+239	-19	0
+240	-19	0
+241	-19	0
+242	-19	0
+243	-19	0
+244	-19	0
+245	-19	0
+246	-19	0
+247	-19	0
+248	-19	0
+249	-19	0
+250	-19	0
+251	-19	0
+252	-19	0
+253	-19	0
+254	-19	0
+255	-19	0
+256	-19	0
+257	-19	0
+258	-19	0
+259	-19	0
+260	-19	0
+261	-19	0
+262	-19	0
+263	-19	0
+264	-19	0
+265	-19	0
+266	-19	0
+267	-19	0
+268	-19	0
+269	-19	0
+270	-19	0
+271	-19	0
+272	-19	0
+273	-19	0
+274	-19	0
+275	-19	0
+276	-19	0
+277	-19	0
+278	-19	0
+279	-19	0
+280	-19	0
+281	-19	0
+282	-19	0
+283	-19	0
+284	-19	0
+285	-19	0
+286	-19	0
+287	-19	0
+288	-19	0
+289	-19	0
+290	-19	0
+291	-19	0
+292	-19	0
+293	-19	0
+294	-19	0
+295	-19	0
+296	-19	0
+297	-19	0
+298	-19	0
+299	-19	0
+300	-19	0
+301	-19	0
+302	-19	0
+303	-19	0
+304	-19	0
+305	-19	0
+306	-19	0
+307	-19	0
+308	-19	0
+309	-19	0
+310	-19	0
+311	-19	0
+312	-19	0
+313	-19	0
+314	-19	0
+315	-19	0
+316	-19	0
+317	-19	0
+318	-19	0
+319	-19	0
+320	-19	0
+321	-19	0
+322	-19	0
+323	-19	0
+324	-19	0
+325	-19	0
+326	-19	0
+327	-19	0
+328	-19	0
+329	-19	0
+330	-19	0
+331	-19	0
+332	-19	0
+333	-19	0
+334	-19	0
+335	-19	0
+336	-19	0
+337	-19	0
+338	-19	0
+339	-19	0
+340	-19	0
+341	-19	0
+342	-19	0
+343	-19	0
+344	-19	0
+345	-19	0
+346	-19	0
+347	-19	0
+348	-19	0
+349	-19	0
+350	-19	0
+351	-19	0
+352	-19	0
+353	-19	0
+354	-19	0
+355	-19	0
+356	-19	0
+357	-19	0
+358	-19	0
+359	-19	0
+360	-19	0
+0	-18.5	0
+1	-18.5	0
+2	-18.5	0
+3	-18.5	0
+4	-18.5	0
+5	-18.5	0
+6	-18.5	0
+7	-18.5	0
+8	-18.5	0
+9	-18.5	0
+10	-18.5	0
+11	-18.5	0
+12	-18.5	0
+13	-18.5	0
+14	-18.5	0
+15	-18.5	0
+16	-18.5	0
+17	-18.5	0
+18	-18.5	0
+19	-18.5	0
+20	-18.5	0
+21	-18.5	0
+22	-18.5	0
+23	-18.5	0
+24	-18.5	0
+25	-18.5	0
+26	-18.5	0
+27	-18.5	0
+28	-18.5	0
+29	-18.5	0
+30	-18.5	0
+31	-18.5	0
+32	-18.5	0
+33	-18.5	0
+34	-18.5	0
+35	-18.5	0
+36	-18.5	0
+37	-18.5	0
+38	-18.5	0
+39	-18.5	0
+40	-18.5	0
+41	-18.5	0
+42	-18.5	0
+43	-18.5	0
+44	-18.5	0
+45	-18.5	0
+46	-18.5	0
+47	-18.5	0
+48	-18.5	0
+49	-18.5	0
+50	-18.5	0
+51	-18.5	0
+52	-18.5	0
+53	-18.5	0
+54	-18.5	0
+55	-18.5	0
+56	-18.5	0
+57	-18.5	0
+58	-18.5	0
+59	-18.5	0
+60	-18.5	0
+61	-18.5	0
+62	-18.5	0
+63	-18.5	0
+64	-18.5	0
+65	-18.5	0
+66	-18.5	0
+67	-18.5	0
+68	-18.5	0
+69	-18.5	0
+70	-18.5	0
+71	-18.5	0
+72	-18.5	0
+73	-18.5	0
+74	-18.5	0
+75	-18.5	0
+76	-18.5	0
+77	-18.5	0
+78	-18.5	0
+79	-18.5	0
+80	-18.5	0
+81	-18.5	0
+82	-18.5	0
+83	-18.5	0
+84	-18.5	0
+85	-18.5	0
+86	-18.5	0
+87	-18.5	0
+88	-18.5	0
+89	-18.5	0
+90	-18.5	0
+91	-18.5	0
+92	-18.5	0
+93	-18.5	0
+94	-18.5	0
+95	-18.5	0
+96	-18.5	0
+97	-18.5	0
+98	-18.5	0
+99	-18.5	0
+100	-18.5	0
+101	-18.5	0
+102	-18.5	0
+103	-18.5	0
+104	-18.5	0
+105	-18.5	0
+106	-18.5	0
+107	-18.5	0
+108	-18.5	0
+109	-18.5	0
+110	-18.5	0
+111	-18.5	0
+112	-18.5	0
+113	-18.5	0
+114	-18.5	0
+115	-18.5	0
+116	-18.5	0
+117	-18.5	0
+118	-18.5	0
+119	-18.5	0
+120	-18.5	0
+121	-18.5	0
+122	-18.5	0
+123	-18.5	0
+124	-18.5	0
+125	-18.5	0
+126	-18.5	0
+127	-18.5	0
+128	-18.5	0
+129	-18.5	0
+130	-18.5	0
+131	-18.5	0
+132	-18.5	0
+133	-18.5	0
+134	-18.5	0
+135	-18.5	0
+136	-18.5	0
+137	-18.5	0
+138	-18.5	0
+139	-18.5	0
+140	-18.5	0
+141	-18.5	0
+142	-18.5	0
+143	-18.5	0
+144	-18.5	0
+145	-18.5	0
+146	-18.5	0
+147	-18.5	0
+148	-18.5	0
+149	-18.5	0
+150	-18.5	0
+151	-18.5	0
+152	-18.5	0
+153	-18.5	0
+154	-18.5	0
+155	-18.5	0
+156	-18.5	0
+157	-18.5	0
+158	-18.5	0
+159	-18.5	0
+160	-18.5	0
+161	-18.5	0
+162	-18.5	0
+163	-18.5	0
+164	-18.5	0
+165	-18.5	0
+166	-18.5	0
+167	-18.5	0
+168	-18.5	0
+169	-18.5	0
+170	-18.5	0
+171	-18.5	0
+172	-18.5	0
+173	-18.5	0
+174	-18.5	0
+175	-18.5	0
+176	-18.5	0
+177	-18.5	0
+178	-18.5	0
+179	-18.5	0
+180	-18.5	0
+181	-18.5	0
+182	-18.5	0
+183	-18.5	0
+184	-18.5	0
+185	-18.5	0
+186	-18.5	0
+187	-18.5	0
+188	-18.5	0
+189	-18.5	0
+190	-18.5	0
+191	-18.5	0
+192	-18.5	0
+193	-18.5	0
+194	-18.5	0
+195	-18.5	0
+196	-18.5	0
+197	-18.5	0
+198	-18.5	0
+199	-18.5	0
+200	-18.5	0
+201	-18.5	0
+202	-18.5	0
+203	-18.5	0
+204	-18.5	0
+205	-18.5	0
+206	-18.5	0
+207	-18.5	0
+208	-18.5	0
+209	-18.5	0
+210	-18.5	0
+211	-18.5	0
+212	-18.5	0
+213	-18.5	0
+214	-18.5	0
+215	-18.5	0
+216	-18.5	0
+217	-18.5	0
+218	-18.5	0
+219	-18.5	0
+220	-18.5	0
+221	-18.5	0
+222	-18.5	0
+223	-18.5	0
+224	-18.5	0
+225	-18.5	0
+226	-18.5	0
+227	-18.5	0
+228	-18.5	0
+229	-18.5	0
+230	-18.5	0
+231	-18.5	0
+232	-18.5	0
+233	-18.5	0
+234	-18.5	0
+235	-18.5	0
+236	-18.5	0
+237	-18.5	0
+238	-18.5	0
+239	-18.5	0
+240	-18.5	0
+241	-18.5	0
+242	-18.5	0
+243	-18.5	0
+244	-18.5	0
+245	-18.5	0
+246	-18.5	0
+247	-18.5	0
+248	-18.5	0
+249	-18.5	0
+250	-18.5	0
+251	-18.5	0
+252	-18.5	0
+253	-18.5	0
+254	-18.5	0
+255	-18.5	0
+256	-18.5	0
+257	-18.5	0
+258	-18.5	0
+259	-18.5	0
+260	-18.5	0
+261	-18.5	0
+262	-18.5	0
+263	-18.5	0
+264	-18.5	0
+265	-18.5	0
+266	-18.5	0
+267	-18.5	0
+268	-18.5	0
+269	-18.5	0
+270	-18.5	0
+271	-18.5	0
+272	-18.5	0
+273	-18.5	0
+274	-18.5	0
+275	-18.5	0
+276	-18.5	0
+277	-18.5	0
+278	-18.5	0
+279	-18.5	0
+280	-18.5	0
+281	-18.5	0
+282	-18.5	0
+283	-18.5	0
+284	-18.5	0
+285	-18.5	0
+286	-18.5	0
+287	-18.5	0
+288	-18.5	0
+289	-18.5	0
+290	-18.5	0
+291	-18.5	0
+292	-18.5	0
+293	-18.5	0
+294	-18.5	0
+295	-18.5	0
+296	-18.5	0
+297	-18.5	0
+298	-18.5	0
+299	-18.5	0
+300	-18.5	0
+301	-18.5	0
+302	-18.5	0
+303	-18.5	0
+304	-18.5	0
+305	-18.5	0
+306	-18.5	0
+307	-18.5	0
+308	-18.5	0
+309	-18.5	0
+310	-18.5	0
+311	-18.5	0
+312	-18.5	0
+313	-18.5	0
+314	-18.5	0
+315	-18.5	0
+316	-18.5	0
+317	-18.5	0
+318	-18.5	0
+319	-18.5	0
+320	-18.5	0
+321	-18.5	0
+322	-18.5	0
+323	-18.5	0
+324	-18.5	0
+325	-18.5	0
+326	-18.5	0
+327	-18.5	0
+328	-18.5	0
+329	-18.5	0
+330	-18.5	0
+331	-18.5	0
+332	-18.5	0
+333	-18.5	0
+334	-18.5	0
+335	-18.5	0
+336	-18.5	0
+337	-18.5	0
+338	-18.5	0
+339	-18.5	0
+340	-18.5	0
+341	-18.5	0
+342	-18.5	0
+343	-18.5	0
+344	-18.5	0
+345	-18.5	0
+346	-18.5	0
+347	-18.5	0
+348	-18.5	0
+349	-18.5	0
+350	-18.5	0
+351	-18.5	0
+352	-18.5	0
+353	-18.5	0
+354	-18.5	0
+355	-18.5	0
+356	-18.5	0
+357	-18.5	0
+358	-18.5	0
+359	-18.5	0
+360	-18.5	0
+0	-18	0
+1	-18	0
+2	-18	0
+3	-18	0
+4	-18	0
+5	-18	0
+6	-18	0
+7	-18	0
+8	-18	0
+9	-18	0
+10	-18	0
+11	-18	0
+12	-18	0
+13	-18	0
+14	-18	0
+15	-18	0
+16	-18	0
+17	-18	0
+18	-18	0
+19	-18	0
+20	-18	0
+21	-18	0
+22	-18	0
+23	-18	0
+24	-18	0
+25	-18	0
+26	-18	0
+27	-18	0
+28	-18	0
+29	-18	0
+30	-18	0
+31	-18	0
+32	-18	0
+33	-18	0
+34	-18	0
+35	-18	0
+36	-18	0
+37	-18	0
+38	-18	0
+39	-18	0
+40	-18	0
+41	-18	0
+42	-18	0
+43	-18	0
+44	-18	0
+45	-18	0
+46	-18	0
+47	-18	0
+48	-18	0
+49	-18	0
+50	-18	0
+51	-18	0
+52	-18	0
+53	-18	0
+54	-18	0
+55	-18	0
+56	-18	0
+57	-18	0
+58	-18	0
+59	-18	0
+60	-18	0
+61	-18	0
+62	-18	0
+63	-18	0
+64	-18	0
+65	-18	0
+66	-18	0
+67	-18	0
+68	-18	0
+69	-18	0
+70	-18	0
+71	-18	0
+72	-18	0
+73	-18	0
+74	-18	0
+75	-18	0
+76	-18	0
+77	-18	0
+78	-18	0
+79	-18	0
+80	-18	0
+81	-18	0
+82	-18	0
+83	-18	0
+84	-18	0
+85	-18	0
+86	-18	0
+87	-18	0
+88	-18	0
+89	-18	0
+90	-18	0
+91	-18	0
+92	-18	0
+93	-18	0
+94	-18	0
+95	-18	0
+96	-18	0
+97	-18	0
+98	-18	0
+99	-18	0
+100	-18	0
+101	-18	0
+102	-18	0
+103	-18	0
+104	-18	0
+105	-18	0
+106	-18	0
+107	-18	0
+108	-18	0
+109	-18	0
+110	-18	0
+111	-18	0
+112	-18	0
+113	-18	0
+114	-18	0
+115	-18	0
+116	-18	0
+117	-18	0
+118	-18	0
+119	-18	0
+120	-18	0
+121	-18	0
+122	-18	0
+123	-18	0
+124	-18	0
+125	-18	0
+126	-18	0
+127	-18	0
+128	-18	0
+129	-18	0
+130	-18	0
+131	-18	0
+132	-18	0
+133	-18	0
+134	-18	0
+135	-18	0
+136	-18	0
+137	-18	0
+138	-18	0
+139	-18	0
+140	-18	0
+141	-18	0
+142	-18	0
+143	-18	0
+144	-18	0
+145	-18	0
+146	-18	0
+147	-18	0
+148	-18	0
+149	-18	0
+150	-18	0
+151	-18	0
+152	-18	0
+153	-18	0
+154	-18	0
+155	-18	0
+156	-18	0
+157	-18	0
+158	-18	0
+159	-18	0
+160	-18	0
+161	-18	0
+162	-18	0
+163	-18	0
+164	-18	0
+165	-18	0
+166	-18	0
+167	-18	0
+168	-18	0
+169	-18	0
+170	-18	0
+171	-18	0
+172	-18	0
+173	-18	0
+174	-18	0
+175	-18	0
+176	-18	0
+177	-18	0
+178	-18	0
+179	-18	0
+180	-18	0
+181	-18	0
+182	-18	0
+183	-18	0
+184	-18	0
+185	-18	0
+186	-18	0
+187	-18	0
+188	-18	0
+189	-18	0
+190	-18	0
+191	-18	0
+192	-18	0
+193	-18	0
+194	-18	0
+195	-18	0
+196	-18	0
+197	-18	0
+198	-18	0
+199	-18	0
+200	-18	0
+201	-18	0
+202	-18	0
+203	-18	0
+204	-18	0
+205	-18	0
+206	-18	0
+207	-18	0
+208	-18	0
+209	-18	0
+210	-18	0
+211	-18	0
+212	-18	0
+213	-18	0
+214	-18	0
+215	-18	0
+216	-18	0
+217	-18	0
+218	-18	0
+219	-18	0
+220	-18	0
+221	-18	0
+222	-18	0
+223	-18	0
+224	-18	0
+225	-18	0
+226	-18	0
+227	-18	0
+228	-18	0
+229	-18	0
+230	-18	0
+231	-18	0
+232	-18	0
+233	-18	0
+234	-18	0
+235	-18	0
+236	-18	0
+237	-18	0
+238	-18	0
+239	-18	0
+240	-18	0
+241	-18	0
+242	-18	0
+243	-18	0
+244	-18	0
+245	-18	0
+246	-18	0
+247	-18	0
+248	-18	0
+249	-18	0
+250	-18	0
+251	-18	0
+252	-18	0
+253	-18	0
+254	-18	0
+255	-18	0
+256	-18	0
+257	-18	0
+258	-18	0
+259	-18	0
+260	-18	0
+261	-18	0
+262	-18	0
+263	-18	0
+264	-18	0
+265	-18	0
+266	-18	0
+267	-18	0
+268	-18	0
+269	-18	0
+270	-18	0
+271	-18	0
+272	-18	0
+273	-18	0
+274	-18	0
+275	-18	0
+276	-18	0
+277	-18	0
+278	-18	0
+279	-18	0
+280	-18	0
+281	-18	0
+282	-18	0
+283	-18	0
+284	-18	0
+285	-18	0
+286	-18	0
+287	-18	0
+288	-18	0
+289	-18	0
+290	-18	0
+291	-18	0
+292	-18	0
+293	-18	0
+294	-18	0
+295	-18	0
+296	-18	0
+297	-18	0
+298	-18	0
+299	-18	0
+300	-18	0
+301	-18	0
+302	-18	0
+303	-18	0
+304	-18	0
+305	-18	0
+306	-18	0
+307	-18	0
+308	-18	0
+309	-18	0
+310	-18	0
+311	-18	0
+312	-18	0
+313	-18	0
+314	-18	0
+315	-18	0
+316	-18	0
+317	-18	0
+318	-18	0
+319	-18	0
+320	-18	0
+321	-18	0
+322	-18	0
+323	-18	0
+324	-18	0
+325	-18	0
+326	-18	0
+327	-18	0
+328	-18	0
+329	-18	0
+330	-18	0
+331	-18	0
+332	-18	0
+333	-18	0
+334	-18	0
+335	-18	0
+336	-18	0
+337	-18	0
+338	-18	0
+339	-18	0
+340	-18	0
+341	-18	0
+342	-18	0
+343	-18	0
+344	-18	0
+345	-18	0
+346	-18	0
+347	-18	0
+348	-18	0
+349	-18	0
+350	-18	0
+351	-18	0
+352	-18	0
+353	-18	0
+354	-18	0
+355	-18	0
+356	-18	0
+357	-18	0
+358	-18	0
+359	-18	0
+360	-18	0
+0	-17.5	0
+1	-17.5	0
+2	-17.5	0
+3	-17.5	0
+4	-17.5	0
+5	-17.5	0
+6	-17.5	0
+7	-17.5	0
+8	-17.5	0
+9	-17.5	0
+10	-17.5	0
+11	-17.5	0
+12	-17.5	0
+13	-17.5	0
+14	-17.5	0
+15	-17.5	0
+16	-17.5	0
+17	-17.5	0
+18	-17.5	0
+19	-17.5	0
+20	-17.5	0
+21	-17.5	0
+22	-17.5	0
+23	-17.5	0
+24	-17.5	0
+25	-17.5	0
+26	-17.5	0
+27	-17.5	0
+28	-17.5	0
+29	-17.5	0
+30	-17.5	0
+31	-17.5	0
+32	-17.5	0
+33	-17.5	0
+34	-17.5	0
+35	-17.5	0
+36	-17.5	0
+37	-17.5	0
+38	-17.5	0
+39	-17.5	0
+40	-17.5	0
+41	-17.5	0
+42	-17.5	0
+43	-17.5	0
+44	-17.5	0
+45	-17.5	0
+46	-17.5	0
+47	-17.5	0
+48	-17.5	0
+49	-17.5	0
+50	-17.5	0
+51	-17.5	0
+52	-17.5	0
+53	-17.5	0
+54	-17.5	0
+55	-17.5	0
+56	-17.5	0
+57	-17.5	0
+58	-17.5	0
+59	-17.5	0
+60	-17.5	0
+61	-17.5	0
+62	-17.5	0
+63	-17.5	0
+64	-17.5	0
+65	-17.5	0
+66	-17.5	0
+67	-17.5	0
+68	-17.5	0
+69	-17.5	0
+70	-17.5	0
+71	-17.5	0
+72	-17.5	0
+73	-17.5	0
+74	-17.5	0
+75	-17.5	0
+76	-17.5	0
+77	-17.5	0
+78	-17.5	0
+79	-17.5	0
+80	-17.5	0
+81	-17.5	0
+82	-17.5	0
+83	-17.5	0
+84	-17.5	0
+85	-17.5	0
+86	-17.5	0
+87	-17.5	0
+88	-17.5	0
+89	-17.5	0
+90	-17.5	0
+91	-17.5	0
+92	-17.5	0
+93	-17.5	0
+94	-17.5	0
+95	-17.5	0
+96	-17.5	0
+97	-17.5	0
+98	-17.5	0
+99	-17.5	0
+100	-17.5	0
+101	-17.5	0
+102	-17.5	0
+103	-17.5	0
+104	-17.5	0
+105	-17.5	0
+106	-17.5	0
+107	-17.5	0
+108	-17.5	0
+109	-17.5	0
+110	-17.5	0
+111	-17.5	0
+112	-17.5	0
+113	-17.5	0
+114	-17.5	0
+115	-17.5	0
+116	-17.5	0
+117	-17.5	0
+118	-17.5	0
+119	-17.5	0
+120	-17.5	0
+121	-17.5	0
+122	-17.5	0
+123	-17.5	0
+124	-17.5	0
+125	-17.5	0
+126	-17.5	0
+127	-17.5	0
+128	-17.5	0
+129	-17.5	0
+130	-17.5	0
+131	-17.5	0
+132	-17.5	0
+133	-17.5	0
+134	-17.5	0
+135	-17.5	0
+136	-17.5	0
+137	-17.5	0
+138	-17.5	0
+139	-17.5	0
+140	-17.5	0
+141	-17.5	0
+142	-17.5	0
+143	-17.5	0
+144	-17.5	0
+145	-17.5	0
+146	-17.5	0
+147	-17.5	0
+148	-17.5	0
+149	-17.5	0
+150	-17.5	0
+151	-17.5	0
+152	-17.5	0
+153	-17.5	0
+154	-17.5	0
+155	-17.5	0
+156	-17.5	0
+157	-17.5	0
+158	-17.5	0
+159	-17.5	0
+160	-17.5	0
+161	-17.5	0
+162	-17.5	0
+163	-17.5	0
+164	-17.5	0
+165	-17.5	0
+166	-17.5	0
+167	-17.5	0
+168	-17.5	0
+169	-17.5	0
+170	-17.5	0
+171	-17.5	0
+172	-17.5	0
+173	-17.5	0
+174	-17.5	0
+175	-17.5	0
+176	-17.5	0
+177	-17.5	0
+178	-17.5	0
+179	-17.5	0
+180	-17.5	0
+181	-17.5	0
+182	-17.5	0
+183	-17.5	0
+184	-17.5	0
+185	-17.5	0
+186	-17.5	0
+187	-17.5	0
+188	-17.5	0
+189	-17.5	0
+190	-17.5	0
+191	-17.5	0
+192	-17.5	0
+193	-17.5	0
+194	-17.5	0
+195	-17.5	0
+196	-17.5	0
+197	-17.5	0
+198	-17.5	0
+199	-17.5	0
+200	-17.5	0
+201	-17.5	0
+202	-17.5	0
+203	-17.5	0
+204	-17.5	0
+205	-17.5	0
+206	-17.5	0
+207	-17.5	0
+208	-17.5	0
+209	-17.5	0
+210	-17.5	0
+211	-17.5	0
+212	-17.5	0
+213	-17.5	0
+214	-17.5	0
+215	-17.5	0
+216	-17.5	0
+217	-17.5	0
+218	-17.5	0
+219	-17.5	0
+220	-17.5	0
+221	-17.5	0
+222	-17.5	0
+223	-17.5	0
+224	-17.5	0
+225	-17.5	0
+226	-17.5	0
+227	-17.5	0
+228	-17.5	0
+229	-17.5	0
+230	-17.5	0
+231	-17.5	0
+232	-17.5	0
+233	-17.5	0
+234	-17.5	0
+235	-17.5	0
+236	-17.5	0
+237	-17.5	0
+238	-17.5	0
+239	-17.5	0
+240	-17.5	0
+241	-17.5	0
+242	-17.5	0
+243	-17.5	0
+244	-17.5	0
+245	-17.5	0
+246	-17.5	0
+247	-17.5	0
+248	-17.5	0
+249	-17.5	0
+250	-17.5	0
+251	-17.5	0
+252	-17.5	0
+253	-17.5	0
+254	-17.5	0
+255	-17.5	0
+256	-17.5	0
+257	-17.5	0
+258	-17.5	0
+259	-17.5	0
+260	-17.5	0
+261	-17.5	0
+262	-17.5	0
+263	-17.5	0
+264	-17.5	0
+265	-17.5	0
+266	-17.5	0
+267	-17.5	0
+268	-17.5	0
+269	-17.5	0
+270	-17.5	0
+271	-17.5	0
+272	-17.5	0
+273	-17.5	0
+274	-17.5	0
+275	-17.5	0
+276	-17.5	0
+277	-17.5	0
+278	-17.5	0
+279	-17.5	0
+280	-17.5	0
+281	-17.5	0
+282	-17.5	0
+283	-17.5	0
+284	-17.5	0
+285	-17.5	0
+286	-17.5	0
+287	-17.5	0
+288	-17.5	0
+289	-17.5	0
+290	-17.5	0
+291	-17.5	0
+292	-17.5	0
+293	-17.5	0
+294	-17.5	0
+295	-17.5	0
+296	-17.5	0
+297	-17.5	0
+298	-17.5	0
+299	-17.5	0
+300	-17.5	0
+301	-17.5	0
+302	-17.5	0
+303	-17.5	0
+304	-17.5	0
+305	-17.5	0
+306	-17.5	0
+307	-17.5	0
+308	-17.5	0
+309	-17.5	0
+310	-17.5	0
+311	-17.5	0
+312	-17.5	0
+313	-17.5	0
+314	-17.5	0
+315	-17.5	0
+316	-17.5	0
+317	-17.5	0
+318	-17.5	0
+319	-17.5	0
+320	-17.5	0
+321	-17.5	0
+322	-17.5	0
+323	-17.5	0
+324	-17.5	0
+325	-17.5	0
+326	-17.5	0
+327	-17.5	0
+328	-17.5	0
+329	-17.5	0
+330	-17.5	0
+331	-17.5	0
+332	-17.5	0
+333	-17.5	0
+334	-17.5	0
+335	-17.5	0
+336	-17.5	0
+337	-17.5	0
+338	-17.5	0
+339	-17.5	0
+340	-17.5	0
+341	-17.5	0
+342	-17.5	0
+343	-17.5	0
+344	-17.5	0
+345	-17.5	0
+346	-17.5	0
+347	-17.5	0
+348	-17.5	0
+349	-17.5	0
+350	-17.5	0
+351	-17.5	0
+352	-17.5	0
+353	-17.5	0
+354	-17.5	0
+355	-17.5	0
+356	-17.5	0
+357	-17.5	0
+358	-17.5	0
+359	-17.5	0
+360	-17.5	0
+0	-17	0
+1	-17	0
+2	-17	0
+3	-17	0
+4	-17	0
+5	-17	0
+6	-17	0
+7	-17	0
+8	-17	0
+9	-17	0
+10	-17	0
+11	-17	0
+12	-17	0
+13	-17	0
+14	-17	0
+15	-17	0
+16	-17	0
+17	-17	0
+18	-17	0
+19	-17	0
+20	-17	0
+21	-17	0
+22	-17	0
+23	-17	0
+24	-17	0
+25	-17	0
+26	-17	0
+27	-17	0
+28	-17	0
+29	-17	0
+30	-17	0
+31	-17	0
+32	-17	0
+33	-17	0
+34	-17	0
+35	-17	0
+36	-17	0
+37	-17	0
+38	-17	0
+39	-17	0
+40	-17	0
+41	-17	0
+42	-17	0
+43	-17	0
+44	-17	0
+45	-17	0
+46	-17	0
+47	-17	0
+48	-17	0
+49	-17	0
+50	-17	0
+51	-17	0
+52	-17	0
+53	-17	0
+54	-17	0
+55	-17	0
+56	-17	0
+57	-17	0
+58	-17	0
+59	-17	0
+60	-17	0
+61	-17	0
+62	-17	0
+63	-17	0
+64	-17	0
+65	-17	0
+66	-17	0
+67	-17	0
+68	-17	0
+69	-17	0
+70	-17	0
+71	-17	0
+72	-17	0
+73	-17	0
+74	-17	0
+75	-17	0
+76	-17	0
+77	-17	0
+78	-17	0
+79	-17	0
+80	-17	0
+81	-17	0
+82	-17	0
+83	-17	0
+84	-17	0
+85	-17	0
+86	-17	0
+87	-17	0
+88	-17	0
+89	-17	0
+90	-17	0
+91	-17	0
+92	-17	0
+93	-17	0
+94	-17	0
+95	-17	0
+96	-17	0
+97	-17	0
+98	-17	0
+99	-17	0
+100	-17	0
+101	-17	0
+102	-17	0
+103	-17	0
+104	-17	0
+105	-17	0
+106	-17	0
+107	-17	0
+108	-17	0
+109	-17	0
+110	-17	0
+111	-17	0
+112	-17	0
+113	-17	0
+114	-17	0
+115	-17	0
+116	-17	0
+117	-17	0
+118	-17	0
+119	-17	0
+120	-17	0
+121	-17	0
+122	-17	0
+123	-17	0
+124	-17	0
+125	-17	0
+126	-17	0
+127	-17	0
+128	-17	0
+129	-17	0
+130	-17	0
+131	-17	0
+132	-17	0
+133	-17	0
+134	-17	0
+135	-17	0
+136	-17	0
+137	-17	0
+138	-17	0
+139	-17	0
+140	-17	0
+141	-17	0
+142	-17	0
+143	-17	0
+144	-17	0
+145	-17	0
+146	-17	0
+147	-17	0
+148	-17	0
+149	-17	0
+150	-17	0
+151	-17	0
+152	-17	0
+153	-17	0
+154	-17	0
+155	-17	0
+156	-17	0
+157	-17	0
+158	-17	0
+159	-17	0
+160	-17	0
+161	-17	0
+162	-17	0
+163	-17	0
+164	-17	0
+165	-17	0
+166	-17	0
+167	-17	0
+168	-17	0
+169	-17	0
+170	-17	0
+171	-17	0
+172	-17	0
+173	-17	0
+174	-17	0
+175	-17	0
+176	-17	0
+177	-17	0
+178	-17	0
+179	-17	0
+180	-17	0
+181	-17	0
+182	-17	0
+183	-17	0
+184	-17	0
+185	-17	0
+186	-17	0
+187	-17	0
+188	-17	0
+189	-17	0
+190	-17	0
+191	-17	0
+192	-17	0
+193	-17	0
+194	-17	0
+195	-17	0
+196	-17	0
+197	-17	0
+198	-17	0
+199	-17	0
+200	-17	0
+201	-17	0
+202	-17	0
+203	-17	0
+204	-17	0
+205	-17	0
+206	-17	0
+207	-17	0
+208	-17	0
+209	-17	0
+210	-17	0
+211	-17	0
+212	-17	0
+213	-17	0
+214	-17	0
+215	-17	0
+216	-17	0
+217	-17	0
+218	-17	0
+219	-17	0
+220	-17	0
+221	-17	0
+222	-17	0
+223	-17	0
+224	-17	0
+225	-17	0
+226	-17	0
+227	-17	0
+228	-17	0
+229	-17	0
+230	-17	0
+231	-17	0
+232	-17	0
+233	-17	0
+234	-17	0
+235	-17	0
+236	-17	0
+237	-17	0
+238	-17	0
+239	-17	0
+240	-17	0
+241	-17	0
+242	-17	0
+243	-17	0
+244	-17	0
+245	-17	0
+246	-17	0
+247	-17	0
+248	-17	0
+249	-17	0
+250	-17	0
+251	-17	0
+252	-17	0
+253	-17	0
+254	-17	0
+255	-17	0
+256	-17	0
+257	-17	0
+258	-17	0
+259	-17	0
+260	-17	0
+261	-17	0
+262	-17	0
+263	-17	0
+264	-17	0
+265	-17	0
+266	-17	0
+267	-17	0
+268	-17	0
+269	-17	0
+270	-17	0
+271	-17	0
+272	-17	0
+273	-17	0
+274	-17	0
+275	-17	0
+276	-17	0
+277	-17	0
+278	-17	0
+279	-17	0
+280	-17	0
+281	-17	0
+282	-17	0
+283	-17	0
+284	-17	0
+285	-17	0
+286	-17	0
+287	-17	0
+288	-17	0
+289	-17	0
+290	-17	0
+291	-17	0
+292	-17	0
+293	-17	0
+294	-17	0
+295	-17	0
+296	-17	0
+297	-17	0
+298	-17	0
+299	-17	0
+300	-17	0
+301	-17	0
+302	-17	0
+303	-17	0
+304	-17	0
+305	-17	0
+306	-17	0
+307	-17	0
+308	-17	0
+309	-17	0
+310	-17	0
+311	-17	0
+312	-17	0
+313	-17	0
+314	-17	0
+315	-17	0
+316	-17	0
+317	-17	0
+318	-17	0
+319	-17	0
+320	-17	0
+321	-17	0
+322	-17	0
+323	-17	0
+324	-17	0
+325	-17	0
+326	-17	0
+327	-17	0
+328	-17	0
+329	-17	0
+330	-17	0
+331	-17	0
+332	-17	0
+333	-17	0
+334	-17	0
+335	-17	0
+336	-17	0
+337	-17	0
+338	-17	0
+339	-17	0
+340	-17	0
+341	-17	0
+342	-17	0
+343	-17	0
+344	-17	0
+345	-17	0
+346	-17	0
+347	-17	0
+348	-17	0
+349	-17	0
+350	-17	0
+351	-17	0
+352	-17	0
+353	-17	0
+354	-17	0
+355	-17	0
+356	-17	0
+357	-17	0
+358	-17	0
+359	-17	0
+360	-17	0
+0	-16.5	0
+1	-16.5	0
+2	-16.5	0
+3	-16.5	0
+4	-16.5	0
+5	-16.5	0
+6	-16.5	0
+7	-16.5	0
+8	-16.5	0
+9	-16.5	0
+10	-16.5	0
+11	-16.5	0
+12	-16.5	0
+13	-16.5	0
+14	-16.5	0
+15	-16.5	0
+16	-16.5	0
+17	-16.5	0
+18	-16.5	0
+19	-16.5	0
+20	-16.5	0
+21	-16.5	0
+22	-16.5	0
+23	-16.5	0
+24	-16.5	0
+25	-16.5	0
+26	-16.5	0
+27	-16.5	0
+28	-16.5	0
+29	-16.5	0
+30	-16.5	0
+31	-16.5	0
+32	-16.5	0
+33	-16.5	0
+34	-16.5	0
+35	-16.5	0
+36	-16.5	0
+37	-16.5	0
+38	-16.5	0
+39	-16.5	0
+40	-16.5	0
+41	-16.5	0
+42	-16.5	0
+43	-16.5	0
+44	-16.5	0
+45	-16.5	0
+46	-16.5	0
+47	-16.5	0
+48	-16.5	0
+49	-16.5	0
+50	-16.5	0
+51	-16.5	0
+52	-16.5	0
+53	-16.5	0
+54	-16.5	0
+55	-16.5	0
+56	-16.5	0
+57	-16.5	0
+58	-16.5	0
+59	-16.5	0
+60	-16.5	0
+61	-16.5	0
+62	-16.5	0
+63	-16.5	0
+64	-16.5	0
+65	-16.5	0
+66	-16.5	0
+67	-16.5	0
+68	-16.5	0
+69	-16.5	0
+70	-16.5	0
+71	-16.5	0
+72	-16.5	0
+73	-16.5	0
+74	-16.5	0
+75	-16.5	0
+76	-16.5	0
+77	-16.5	0
+78	-16.5	0
+79	-16.5	0
+80	-16.5	0
+81	-16.5	0
+82	-16.5	0
+83	-16.5	0
+84	-16.5	0
+85	-16.5	0
+86	-16.5	0
+87	-16.5	0
+88	-16.5	0
+89	-16.5	0
+90	-16.5	0
+91	-16.5	0
+92	-16.5	0
+93	-16.5	0
+94	-16.5	0
+95	-16.5	0
+96	-16.5	0
+97	-16.5	0
+98	-16.5	0
+99	-16.5	0
+100	-16.5	0
+101	-16.5	0
+102	-16.5	0
+103	-16.5	0
+104	-16.5	0
+105	-16.5	0
+106	-16.5	0
+107	-16.5	0
+108	-16.5	0
+109	-16.5	0
+110	-16.5	0
+111	-16.5	0
+112	-16.5	0
+113	-16.5	0
+114	-16.5	0
+115	-16.5	0
+116	-16.5	0
+117	-16.5	0
+118	-16.5	0
+119	-16.5	0
+120	-16.5	0
+121	-16.5	0
+122	-16.5	0
+123	-16.5	0
+124	-16.5	0
+125	-16.5	0
+126	-16.5	0
+127	-16.5	0
+128	-16.5	0
+129	-16.5	0
+130	-16.5	0
+131	-16.5	0
+132	-16.5	0
+133	-16.5	0
+134	-16.5	0
+135	-16.5	0
+136	-16.5	0
+137	-16.5	0
+138	-16.5	0
+139	-16.5	0
+140	-16.5	0
+141	-16.5	0
+142	-16.5	0
+143	-16.5	0
+144	-16.5	0
+145	-16.5	0
+146	-16.5	0
+147	-16.5	0
+148	-16.5	0
+149	-16.5	0
+150	-16.5	0
+151	-16.5	0
+152	-16.5	0
+153	-16.5	0
+154	-16.5	0
+155	-16.5	0
+156	-16.5	0
+157	-16.5	0
+158	-16.5	0
+159	-16.5	0
+160	-16.5	0
+161	-16.5	0
+162	-16.5	0
+163	-16.5	0
+164	-16.5	0
+165	-16.5	0
+166	-16.5	0
+167	-16.5	0
+168	-16.5	0
+169	-16.5	0
+170	-16.5	0
+171	-16.5	0
+172	-16.5	0
+173	-16.5	0
+174	-16.5	0
+175	-16.5	0
+176	-16.5	0
+177	-16.5	0
+178	-16.5	0
+179	-16.5	0
+180	-16.5	0
+181	-16.5	0
+182	-16.5	0
+183	-16.5	0
+184	-16.5	0
+185	-16.5	0
+186	-16.5	0
+187	-16.5	0
+188	-16.5	0
+189	-16.5	0
+190	-16.5	0
+191	-16.5	0
+192	-16.5	0
+193	-16.5	0
+194	-16.5	0
+195	-16.5	0
+196	-16.5	0
+197	-16.5	0
+198	-16.5	0
+199	-16.5	0
+200	-16.5	0
+201	-16.5	0
+202	-16.5	0
+203	-16.5	0
+204	-16.5	0
+205	-16.5	0
+206	-16.5	0
+207	-16.5	0
+208	-16.5	0
+209	-16.5	0
+210	-16.5	0
+211	-16.5	0
+212	-16.5	0
+213	-16.5	0
+214	-16.5	0
+215	-16.5	0
+216	-16.5	0
+217	-16.5	0
+218	-16.5	0
+219	-16.5	0
+220	-16.5	0
+221	-16.5	0
+222	-16.5	0
+223	-16.5	0
+224	-16.5	0
+225	-16.5	0
+226	-16.5	0
+227	-16.5	0
+228	-16.5	0
+229	-16.5	0
+230	-16.5	0
+231	-16.5	0
+232	-16.5	0
+233	-16.5	0
+234	-16.5	0
+235	-16.5	0
+236	-16.5	0
+237	-16.5	0
+238	-16.5	0
+239	-16.5	0
+240	-16.5	0
+241	-16.5	0
+242	-16.5	0
+243	-16.5	0
+244	-16.5	0
+245	-16.5	0
+246	-16.5	0
+247	-16.5	0
+248	-16.5	0
+249	-16.5	0
+250	-16.5	0
+251	-16.5	0
+252	-16.5	0
+253	-16.5	0
+254	-16.5	0
+255	-16.5	0
+256	-16.5	0
+257	-16.5	0
+258	-16.5	0
+259	-16.5	0
+260	-16.5	0
+261	-16.5	0
+262	-16.5	0
+263	-16.5	0
+264	-16.5	0
+265	-16.5	0
+266	-16.5	0
+267	-16.5	0
+268	-16.5	0
+269	-16.5	0
+270	-16.5	0
+271	-16.5	0
+272	-16.5	0
+273	-16.5	0
+274	-16.5	0
+275	-16.5	0
+276	-16.5	0
+277	-16.5	0
+278	-16.5	0
+279	-16.5	0
+280	-16.5	0
+281	-16.5	0
+282	-16.5	0
+283	-16.5	0
+284	-16.5	0
+285	-16.5	0
+286	-16.5	0
+287	-16.5	0
+288	-16.5	0
+289	-16.5	0
+290	-16.5	0
+291	-16.5	0
+292	-16.5	0
+293	-16.5	0
+294	-16.5	0
+295	-16.5	0
+296	-16.5	0
+297	-16.5	0
+298	-16.5	0
+299	-16.5	0
+300	-16.5	0
+301	-16.5	0
+302	-16.5	0
+303	-16.5	0
+304	-16.5	0
+305	-16.5	0
+306	-16.5	0
+307	-16.5	0
+308	-16.5	0
+309	-16.5	0
+310	-16.5	0
+311	-16.5	0
+312	-16.5	0
+313	-16.5	0
+314	-16.5	0
+315	-16.5	0
+316	-16.5	0
+317	-16.5	0
+318	-16.5	0
+319	-16.5	0
+320	-16.5	0
+321	-16.5	0
+322	-16.5	0
+323	-16.5	0
+324	-16.5	0
+325	-16.5	0
+326	-16.5	0
+327	-16.5	0
+328	-16.5	0
+329	-16.5	0
+330	-16.5	0
+331	-16.5	0
+332	-16.5	0
+333	-16.5	0
+334	-16.5	0
+335	-16.5	0
+336	-16.5	0
+337	-16.5	0
+338	-16.5	0
+339	-16.5	0
+340	-16.5	0
+341	-16.5	0
+342	-16.5	0
+343	-16.5	0
+344	-16.5	0
+345	-16.5	0
+346	-16.5	0
+347	-16.5	0
+348	-16.5	0
+349	-16.5	0
+350	-16.5	0
+351	-16.5	0
+352	-16.5	0
+353	-16.5	0
+354	-16.5	0
+355	-16.5	0
+356	-16.5	0
+357	-16.5	0
+358	-16.5	0
+359	-16.5	0
+360	-16.5	0
+0	-16	0
+1	-16	0
+2	-16	0
+3	-16	0
+4	-16	0
+5	-16	0
+6	-16	0
+7	-16	0
+8	-16	0
+9	-16	0
+10	-16	0
+11	-16	0
+12	-16	0
+13	-16	0
+14	-16	0
+15	-16	0
+16	-16	0
+17	-16	0
+18	-16	0
+19	-16	0
+20	-16	0
+21	-16	0
+22	-16	0
+23	-16	0
+24	-16	0
+25	-16	0
+26	-16	0
+27	-16	0
+28	-16	0
+29	-16	0
+30	-16	0
+31	-16	0
+32	-16	0
+33	-16	0
+34	-16	0
+35	-16	0
+36	-16	0
+37	-16	0
+38	-16	0
+39	-16	0
+40	-16	0
+41	-16	0
+42	-16	0
+43	-16	0
+44	-16	0
+45	-16	0
+46	-16	0
+47	-16	0
+48	-16	0
+49	-16	0
+50	-16	0
+51	-16	0
+52	-16	0
+53	-16	0
+54	-16	0
+55	-16	0
+56	-16	0
+57	-16	0
+58	-16	0
+59	-16	0
+60	-16	0
+61	-16	0
+62	-16	0
+63	-16	0
+64	-16	0
+65	-16	0
+66	-16	0
+67	-16	0
+68	-16	0
+69	-16	0
+70	-16	0
+71	-16	0
+72	-16	0
+73	-16	0
+74	-16	0
+75	-16	0
+76	-16	0
+77	-16	0
+78	-16	0
+79	-16	0
+80	-16	0
+81	-16	0
+82	-16	0
+83	-16	0
+84	-16	0
+85	-16	0
+86	-16	0
+87	-16	0
+88	-16	0
+89	-16	0
+90	-16	0
+91	-16	0
+92	-16	0
+93	-16	0
+94	-16	0
+95	-16	0
+96	-16	0
+97	-16	0
+98	-16	0
+99	-16	0
+100	-16	0
+101	-16	0
+102	-16	0
+103	-16	0
+104	-16	0
+105	-16	0
+106	-16	0
+107	-16	0
+108	-16	0
+109	-16	0
+110	-16	0
+111	-16	0
+112	-16	0
+113	-16	0
+114	-16	0
+115	-16	0
+116	-16	0
+117	-16	0
+118	-16	0
+119	-16	0
+120	-16	0
+121	-16	0
+122	-16	0
+123	-16	0
+124	-16	0
+125	-16	0
+126	-16	0
+127	-16	0
+128	-16	0
+129	-16	0
+130	-16	0
+131	-16	0
+132	-16	0
+133	-16	0
+134	-16	0
+135	-16	0
+136	-16	0
+137	-16	0
+138	-16	0
+139	-16	0
+140	-16	0
+141	-16	0
+142	-16	0
+143	-16	0
+144	-16	0
+145	-16	0
+146	-16	0
+147	-16	0
+148	-16	0
+149	-16	0
+150	-16	0
+151	-16	0
+152	-16	0
+153	-16	0
+154	-16	0
+155	-16	0
+156	-16	0
+157	-16	0
+158	-16	0
+159	-16	0
+160	-16	0
+161	-16	0
+162	-16	0
+163	-16	0
+164	-16	0
+165	-16	0
+166	-16	0
+167	-16	0
+168	-16	0
+169	-16	0
+170	-16	0
+171	-16	0
+172	-16	0
+173	-16	0
+174	-16	0
+175	-16	0
+176	-16	0
+177	-16	0
+178	-16	0
+179	-16	0
+180	-16	0
+181	-16	0
+182	-16	0
+183	-16	0
+184	-16	0
+185	-16	0
+186	-16	0
+187	-16	0
+188	-16	0
+189	-16	0
+190	-16	0
+191	-16	0
+192	-16	0
+193	-16	0
+194	-16	0
+195	-16	0
+196	-16	0
+197	-16	0
+198	-16	0
+199	-16	0
+200	-16	0
+201	-16	0
+202	-16	0
+203	-16	0
+204	-16	0
+205	-16	0
+206	-16	0
+207	-16	0
+208	-16	0
+209	-16	0
+210	-16	0
+211	-16	0
+212	-16	0
+213	-16	0
+214	-16	0
+215	-16	0
+216	-16	0
+217	-16	0
+218	-16	0
+219	-16	0
+220	-16	0
+221	-16	0
+222	-16	0
+223	-16	0
+224	-16	0
+225	-16	0
+226	-16	0
+227	-16	0
+228	-16	0
+229	-16	0
+230	-16	0
+231	-16	0
+232	-16	0
+233	-16	0
+234	-16	0
+235	-16	0
+236	-16	0
+237	-16	0
+238	-16	0
+239	-16	0
+240	-16	0
+241	-16	0
+242	-16	0
+243	-16	0
+244	-16	0
+245	-16	0
+246	-16	0
+247	-16	0
+248	-16	0
+249	-16	0
+250	-16	0
+251	-16	0
+252	-16	0
+253	-16	0
+254	-16	0
+255	-16	0
+256	-16	0
+257	-16	0
+258	-16	0
+259	-16	0
+260	-16	0
+261	-16	0
+262	-16	0
+263	-16	0
+264	-16	0
+265	-16	0
+266	-16	0
+267	-16	0
+268	-16	0
+269	-16	0
+270	-16	0
+271	-16	0
+272	-16	0
+273	-16	0
+274	-16	0
+275	-16	0
+276	-16	0
+277	-16	0
+278	-16	0
+279	-16	0
+280	-16	0
+281	-16	0
+282	-16	0
+283	-16	0
+284	-16	0
+285	-16	0
+286	-16	0
+287	-16	0
+288	-16	0
+289	-16	0
+290	-16	0
+291	-16	0
+292	-16	0
+293	-16	0
+294	-16	0
+295	-16	0
+296	-16	0
+297	-16	0
+298	-16	0
+299	-16	0
+300	-16	0
+301	-16	0
+302	-16	0
+303	-16	0
+304	-16	0
+305	-16	0
+306	-16	0
+307	-16	0
+308	-16	0
+309	-16	0
+310	-16	0
+311	-16	0
+312	-16	0
+313	-16	0
+314	-16	0
+315	-16	0
+316	-16	0
+317	-16	0
+318	-16	0
+319	-16	0
+320	-16	0
+321	-16	0
+322	-16	0
+323	-16	0
+324	-16	0
+325	-16	0
+326	-16	0
+327	-16	0
+328	-16	0
+329	-16	0
+330	-16	0
+331	-16	0
+332	-16	0
+333	-16	0
+334	-16	0
+335	-16	0
+336	-16	0
+337	-16	0
+338	-16	0
+339	-16	0
+340	-16	0
+341	-16	0
+342	-16	0
+343	-16	0
+344	-16	0
+345	-16	0
+346	-16	0
+347	-16	0
+348	-16	0
+349	-16	0
+350	-16	0
+351	-16	0
+352	-16	0
+353	-16	0
+354	-16	0
+355	-16	0
+356	-16	0
+357	-16	0
+358	-16	0
+359	-16	0
+360	-16	0
+0	-15.5	0
+1	-15.5	0
+2	-15.5	0
+3	-15.5	0
+4	-15.5	0
+5	-15.5	0
+6	-15.5	0
+7	-15.5	0
+8	-15.5	0
+9	-15.5	0
+10	-15.5	0
+11	-15.5	0
+12	-15.5	0
+13	-15.5	0
+14	-15.5	0
+15	-15.5	0
+16	-15.5	0
+17	-15.5	0
+18	-15.5	0
+19	-15.5	0
+20	-15.5	0
+21	-15.5	0
+22	-15.5	0
+23	-15.5	0
+24	-15.5	0
+25	-15.5	0
+26	-15.5	0
+27	-15.5	0
+28	-15.5	0
+29	-15.5	0
+30	-15.5	0
+31	-15.5	0
+32	-15.5	0
+33	-15.5	0
+34	-15.5	0
+35	-15.5	0
+36	-15.5	0
+37	-15.5	0
+38	-15.5	0
+39	-15.5	0
+40	-15.5	0
+41	-15.5	0
+42	-15.5	0
+43	-15.5	0
+44	-15.5	0
+45	-15.5	0
+46	-15.5	0
+47	-15.5	0
+48	-15.5	0
+49	-15.5	0
+50	-15.5	0
+51	-15.5	0
+52	-15.5	0
+53	-15.5	0
+54	-15.5	0
+55	-15.5	0
+56	-15.5	0
+57	-15.5	0
+58	-15.5	0
+59	-15.5	0
+60	-15.5	0
+61	-15.5	0
+62	-15.5	0
+63	-15.5	0
+64	-15.5	0
+65	-15.5	0
+66	-15.5	0
+67	-15.5	0
+68	-15.5	0
+69	-15.5	0
+70	-15.5	0
+71	-15.5	0
+72	-15.5	0
+73	-15.5	0
+74	-15.5	0
+75	-15.5	0
+76	-15.5	0
+77	-15.5	0
+78	-15.5	0
+79	-15.5	0
+80	-15.5	0
+81	-15.5	0
+82	-15.5	0
+83	-15.5	0
+84	-15.5	0
+85	-15.5	0
+86	-15.5	0
+87	-15.5	0
+88	-15.5	0
+89	-15.5	0
+90	-15.5	0
+91	-15.5	0
+92	-15.5	0
+93	-15.5	0
+94	-15.5	0
+95	-15.5	0
+96	-15.5	0
+97	-15.5	0
+98	-15.5	0
+99	-15.5	0
+100	-15.5	0
+101	-15.5	0
+102	-15.5	0
+103	-15.5	0
+104	-15.5	0
+105	-15.5	0
+106	-15.5	0
+107	-15.5	0
+108	-15.5	0
+109	-15.5	0
+110	-15.5	0
+111	-15.5	0
+112	-15.5	0
+113	-15.5	0
+114	-15.5	0
+115	-15.5	0
+116	-15.5	0
+117	-15.5	0
+118	-15.5	0
+119	-15.5	0
+120	-15.5	0
+121	-15.5	0
+122	-15.5	0
+123	-15.5	0
+124	-15.5	0
+125	-15.5	0
+126	-15.5	0
+127	-15.5	0
+128	-15.5	0
+129	-15.5	0
+130	-15.5	0
+131	-15.5	0
+132	-15.5	0
+133	-15.5	0
+134	-15.5	0
+135	-15.5	0
+136	-15.5	0
+137	-15.5	0
+138	-15.5	0
+139	-15.5	0
+140	-15.5	0
+141	-15.5	0
+142	-15.5	0
+143	-15.5	0
+144	-15.5	0
+145	-15.5	0
+146	-15.5	0
+147	-15.5	0
+148	-15.5	0
+149	-15.5	0
+150	-15.5	0
+151	-15.5	0
+152	-15.5	0
+153	-15.5	0
+154	-15.5	0
+155	-15.5	0
+156	-15.5	0
+157	-15.5	0
+158	-15.5	0
+159	-15.5	0
+160	-15.5	0
+161	-15.5	0
+162	-15.5	0
+163	-15.5	0
+164	-15.5	0
+165	-15.5	0
+166	-15.5	0
+167	-15.5	0
+168	-15.5	0
+169	-15.5	0
+170	-15.5	0
+171	-15.5	0
+172	-15.5	0
+173	-15.5	0
+174	-15.5	0
+175	-15.5	0
+176	-15.5	0
+177	-15.5	0
+178	-15.5	0
+179	-15.5	0
+180	-15.5	0
+181	-15.5	0
+182	-15.5	0
+183	-15.5	0
+184	-15.5	0
+185	-15.5	0
+186	-15.5	0
+187	-15.5	0
+188	-15.5	0
+189	-15.5	0
+190	-15.5	0
+191	-15.5	0
+192	-15.5	0
+193	-15.5	0
+194	-15.5	0
+195	-15.5	0
+196	-15.5	0
+197	-15.5	0
+198	-15.5	0
+199	-15.5	0
+200	-15.5	0
+201	-15.5	0
+202	-15.5	0
+203	-15.5	0
+204	-15.5	0
+205	-15.5	0
+206	-15.5	0
+207	-15.5	0
+208	-15.5	0
+209	-15.5	0
+210	-15.5	0
+211	-15.5	0
+212	-15.5	0
+213	-15.5	0
+214	-15.5	0
+215	-15.5	0
+216	-15.5	0
+217	-15.5	0
+218	-15.5	0
+219	-15.5	0
+220	-15.5	0
+221	-15.5	0
+222	-15.5	0
+223	-15.5	0
+224	-15.5	0
+225	-15.5	0
+226	-15.5	0
+227	-15.5	0
+228	-15.5	0
+229	-15.5	0
+230	-15.5	0
+231	-15.5	0
+232	-15.5	0
+233	-15.5	0
+234	-15.5	0
+235	-15.5	0
+236	-15.5	0
+237	-15.5	0
+238	-15.5	0
+239	-15.5	0
+240	-15.5	0
+241	-15.5	0
+242	-15.5	0
+243	-15.5	0
+244	-15.5	0
+245	-15.5	0
+246	-15.5	0
+247	-15.5	0
+248	-15.5	0
+249	-15.5	0
+250	-15.5	0
+251	-15.5	0
+252	-15.5	0
+253	-15.5	0
+254	-15.5	0
+255	-15.5	0
+256	-15.5	0
+257	-15.5	0
+258	-15.5	0
+259	-15.5	0
+260	-15.5	0
+261	-15.5	0
+262	-15.5	0
+263	-15.5	0
+264	-15.5	0
+265	-15.5	0
+266	-15.5	0
+267	-15.5	0
+268	-15.5	0
+269	-15.5	0
+270	-15.5	0
+271	-15.5	0
+272	-15.5	0
+273	-15.5	0
+274	-15.5	0
+275	-15.5	0
+276	-15.5	0
+277	-15.5	0
+278	-15.5	0
+279	-15.5	0
+280	-15.5	0
+281	-15.5	0
+282	-15.5	0
+283	-15.5	0
+284	-15.5	0
+285	-15.5	0
+286	-15.5	0
+287	-15.5	0
+288	-15.5	0
+289	-15.5	0
+290	-15.5	0
+291	-15.5	0
+292	-15.5	0
+293	-15.5	0
+294	-15.5	0
+295	-15.5	0
+296	-15.5	0
+297	-15.5	0
+298	-15.5	0
+299	-15.5	0
+300	-15.5	0
+301	-15.5	0
+302	-15.5	0
+303	-15.5	0
+304	-15.5	0
+305	-15.5	0
+306	-15.5	0
+307	-15.5	0
+308	-15.5	0
+309	-15.5	0
+310	-15.5	0
+311	-15.5	0
+312	-15.5	0
+313	-15.5	0
+314	-15.5	0
+315	-15.5	0
+316	-15.5	0
+317	-15.5	0
+318	-15.5	0
+319	-15.5	0
+320	-15.5	0
+321	-15.5	0
+322	-15.5	0
+323	-15.5	0
+324	-15.5	0
+325	-15.5	0
+326	-15.5	0
+327	-15.5	0
+328	-15.5	0
+329	-15.5	0
+330	-15.5	0
+331	-15.5	0
+332	-15.5	0
+333	-15.5	0
+334	-15.5	0
+335	-15.5	0
+336	-15.5	0
+337	-15.5	0
+338	-15.5	0
+339	-15.5	0
+340	-15.5	0
+341	-15.5	0
+342	-15.5	0
+343	-15.5	0
+344	-15.5	0
+345	-15.5	0
+346	-15.5	0
+347	-15.5	0
+348	-15.5	0
+349	-15.5	0
+350	-15.5	0
+351	-15.5	0
+352	-15.5	0
+353	-15.5	0
+354	-15.5	0
+355	-15.5	0
+356	-15.5	0
+357	-15.5	0
+358	-15.5	0
+359	-15.5	0
+360	-15.5	0
+0	-15	0
+1	-15	0
+2	-15	0
+3	-15	0
+4	-15	0
+5	-15	0
+6	-15	0
+7	-15	0
+8	-15	0
+9	-15	0
+10	-15	0
+11	-15	0
+12	-15	0
+13	-15	0
+14	-15	0
+15	-15	0
+16	-15	0
+17	-15	0
+18	-15	0
+19	-15	0
+20	-15	0
+21	-15	0
+22	-15	0
+23	-15	0
+24	-15	0
+25	-15	0
+26	-15	0
+27	-15	0
+28	-15	0
+29	-15	0
+30	-15	0
+31	-15	0
+32	-15	0
+33	-15	0
+34	-15	0
+35	-15	0
+36	-15	0
+37	-15	0
+38	-15	0
+39	-15	0
+40	-15	0
+41	-15	0
+42	-15	0
+43	-15	0
+44	-15	0
+45	-15	0
+46	-15	0
+47	-15	0
+48	-15	0
+49	-15	0
+50	-15	0
+51	-15	0
+52	-15	0
+53	-15	0
+54	-15	0
+55	-15	0
+56	-15	0
+57	-15	0
+58	-15	0
+59	-15	0
+60	-15	0
+61	-15	0
+62	-15	0
+63	-15	0
+64	-15	0
+65	-15	0
+66	-15	0
+67	-15	0
+68	-15	0
+69	-15	0
+70	-15	0
+71	-15	0
+72	-15	0
+73	-15	0
+74	-15	0
+75	-15	0
+76	-15	0
+77	-15	0
+78	-15	0
+79	-15	0
+80	-15	0
+81	-15	0
+82	-15	0
+83	-15	0
+84	-15	0
+85	-15	0
+86	-15	0
+87	-15	0
+88	-15	0
+89	-15	0
+90	-15	0
+91	-15	0
+92	-15	0
+93	-15	0
+94	-15	0
+95	-15	0
+96	-15	0
+97	-15	0
+98	-15	0
+99	-15	0
+100	-15	0
+101	-15	0
+102	-15	0
+103	-15	0
+104	-15	0
+105	-15	0
+106	-15	0
+107	-15	0
+108	-15	0
+109	-15	0
+110	-15	0
+111	-15	0
+112	-15	0
+113	-15	0
+114	-15	0
+115	-15	0
+116	-15	0
+117	-15	0
+118	-15	0
+119	-15	0
+120	-15	0
+121	-15	0
+122	-15	0
+123	-15	0
+124	-15	0
+125	-15	0
+126	-15	0
+127	-15	0
+128	-15	0
+129	-15	0
+130	-15	0
+131	-15	0
+132	-15	0
+133	-15	0
+134	-15	0
+135	-15	0
+136	-15	0
+137	-15	0
+138	-15	0
+139	-15	0
+140	-15	0
+141	-15	0
+142	-15	0
+143	-15	0
+144	-15	0
+145	-15	0
+146	-15	0
+147	-15	0
+148	-15	0
+149	-15	0
+150	-15	0
+151	-15	0
+152	-15	0
+153	-15	0
+154	-15	0
+155	-15	0
+156	-15	0
+157	-15	0
+158	-15	0
+159	-15	0
+160	-15	0
+161	-15	0
+162	-15	0
+163	-15	0
+164	-15	0
+165	-15	0
+166	-15	0
+167	-15	0
+168	-15	0
+169	-15	0
+170	-15	0
+171	-15	0
+172	-15	0
+173	-15	0
+174	-15	0
+175	-15	0
+176	-15	0
+177	-15	0
+178	-15	0
+179	-15	0
+180	-15	0
+181	-15	0
+182	-15	0
+183	-15	0
+184	-15	0
+185	-15	0
+186	-15	0
+187	-15	0
+188	-15	0
+189	-15	0
+190	-15	0
+191	-15	0
+192	-15	0
+193	-15	0
+194	-15	0
+195	-15	0
+196	-15	0
+197	-15	0
+198	-15	0
+199	-15	0
+200	-15	0
+201	-15	0
+202	-15	0
+203	-15	0
+204	-15	0
+205	-15	0
+206	-15	0
+207	-15	0
+208	-15	0
+209	-15	0
+210	-15	0
+211	-15	0
+212	-15	0
+213	-15	0
+214	-15	0
+215	-15	0
+216	-15	0
+217	-15	0
+218	-15	0
+219	-15	0
+220	-15	0
+221	-15	0
+222	-15	0
+223	-15	0
+224	-15	0
+225	-15	0
+226	-15	0
+227	-15	0
+228	-15	0
+229	-15	0
+230	-15	0
+231	-15	0
+232	-15	0
+233	-15	0
+234	-15	0
+235	-15	0
+236	-15	0
+237	-15	0
+238	-15	0
+239	-15	0
+240	-15	0
+241	-15	0
+242	-15	0
+243	-15	0
+244	-15	0
+245	-15	0
+246	-15	0
+247	-15	0
+248	-15	0
+249	-15	0
+250	-15	0
+251	-15	0
+252	-15	0
+253	-15	0
+254	-15	0
+255	-15	0
+256	-15	0
+257	-15	0
+258	-15	0
+259	-15	0
+260	-15	0
+261	-15	0
+262	-15	0
+263	-15	0
+264	-15	0
+265	-15	0
+266	-15	0
+267	-15	0
+268	-15	0
+269	-15	0
+270	-15	0
+271	-15	0
+272	-15	0
+273	-15	0
+274	-15	0
+275	-15	0
+276	-15	0
+277	-15	0
+278	-15	0
+279	-15	0
+280	-15	0
+281	-15	0
+282	-15	0
+283	-15	0
+284	-15	0
+285	-15	0
+286	-15	0
+287	-15	0
+288	-15	0
+289	-15	0
+290	-15	0
+291	-15	0
+292	-15	0
+293	-15	0
+294	-15	0
+295	-15	0
+296	-15	0
+297	-15	0
+298	-15	0
+299	-15	0
+300	-15	0
+301	-15	0
+302	-15	0
+303	-15	0
+304	-15	0
+305	-15	0
+306	-15	0
+307	-15	0
+308	-15	0
+309	-15	0
+310	-15	0
+311	-15	0
+312	-15	0
+313	-15	0
+314	-15	0
+315	-15	0
+316	-15	0
+317	-15	0
+318	-15	0
+319	-15	0
+320	-15	0
+321	-15	0
+322	-15	0
+323	-15	0
+324	-15	0
+325	-15	0
+326	-15	0
+327	-15	0
+328	-15	0
+329	-15	0
+330	-15	0
+331	-15	0
+332	-15	0
+333	-15	0
+334	-15	0
+335	-15	0
+336	-15	0
+337	-15	0
+338	-15	0
+339	-15	0
+340	-15	0
+341	-15	0
+342	-15	0
+343	-15	0
+344	-15	0
+345	-15	0
+346	-15	0
+347	-15	0
+348	-15	0
+349	-15	0
+350	-15	0
+351	-15	0
+352	-15	0
+353	-15	0
+354	-15	0
+355	-15	0
+356	-15	0
+357	-15	0
+358	-15	0
+359	-15	0
+360	-15	0
+0	-14.5	0
+1	-14.5	0
+2	-14.5	0
+3	-14.5	0
+4	-14.5	0
+5	-14.5	0
+6	-14.5	0
+7	-14.5	0
+8	-14.5	0
+9	-14.5	0
+10	-14.5	0
+11	-14.5	0
+12	-14.5	0
+13	-14.5	0
+14	-14.5	0
+15	-14.5	0
+16	-14.5	0
+17	-14.5	0
+18	-14.5	0
+19	-14.5	0
+20	-14.5	0
+21	-14.5	0
+22	-14.5	0
+23	-14.5	0
+24	-14.5	0
+25	-14.5	0
+26	-14.5	0
+27	-14.5	0
+28	-14.5	0
+29	-14.5	0
+30	-14.5	0
+31	-14.5	0
+32	-14.5	0
+33	-14.5	0
+34	-14.5	0
+35	-14.5	0
+36	-14.5	0
+37	-14.5	0
+38	-14.5	0
+39	-14.5	0
+40	-14.5	0
+41	-14.5	0
+42	-14.5	0
+43	-14.5	0
+44	-14.5	0
+45	-14.5	0
+46	-14.5	0
+47	-14.5	0
+48	-14.5	0
+49	-14.5	0
+50	-14.5	0
+51	-14.5	0
+52	-14.5	0
+53	-14.5	0
+54	-14.5	0
+55	-14.5	0
+56	-14.5	0
+57	-14.5	0
+58	-14.5	0
+59	-14.5	0
+60	-14.5	0
+61	-14.5	0
+62	-14.5	0
+63	-14.5	0
+64	-14.5	0
+65	-14.5	0
+66	-14.5	0
+67	-14.5	0
+68	-14.5	0
+69	-14.5	0
+70	-14.5	0
+71	-14.5	0
+72	-14.5	0
+73	-14.5	0
+74	-14.5	0
+75	-14.5	0
+76	-14.5	0
+77	-14.5	0
+78	-14.5	0
+79	-14.5	0
+80	-14.5	0
+81	-14.5	0
+82	-14.5	0
+83	-14.5	0
+84	-14.5	0
+85	-14.5	0
+86	-14.5	0
+87	-14.5	0
+88	-14.5	0
+89	-14.5	0
+90	-14.5	0
+91	-14.5	0
+92	-14.5	0
+93	-14.5	0
+94	-14.5	0
+95	-14.5	0
+96	-14.5	0
+97	-14.5	0
+98	-14.5	0
+99	-14.5	0
+100	-14.5	0
+101	-14.5	0
+102	-14.5	0
+103	-14.5	0
+104	-14.5	0
+105	-14.5	0
+106	-14.5	0
+107	-14.5	0
+108	-14.5	0
+109	-14.5	0
+110	-14.5	0
+111	-14.5	0
+112	-14.5	0
+113	-14.5	0
+114	-14.5	0
+115	-14.5	0
+116	-14.5	0
+117	-14.5	0
+118	-14.5	0
+119	-14.5	0
+120	-14.5	0
+121	-14.5	0
+122	-14.5	0
+123	-14.5	0
+124	-14.5	0
+125	-14.5	0
+126	-14.5	0
+127	-14.5	0
+128	-14.5	0
+129	-14.5	0
+130	-14.5	0
+131	-14.5	0
+132	-14.5	0
+133	-14.5	0
+134	-14.5	0
+135	-14.5	0
+136	-14.5	0
+137	-14.5	0
+138	-14.5	0
+139	-14.5	0
+140	-14.5	0
+141	-14.5	0
+142	-14.5	0
+143	-14.5	0
+144	-14.5	0
+145	-14.5	0
+146	-14.5	0
+147	-14.5	0
+148	-14.5	0
+149	-14.5	0
+150	-14.5	0
+151	-14.5	0
+152	-14.5	0
+153	-14.5	0
+154	-14.5	0
+155	-14.5	0
+156	-14.5	0
+157	-14.5	0
+158	-14.5	0
+159	-14.5	0
+160	-14.5	0
+161	-14.5	0
+162	-14.5	0
+163	-14.5	0
+164	-14.5	0
+165	-14.5	0
+166	-14.5	0
+167	-14.5	0
+168	-14.5	0
+169	-14.5	0
+170	-14.5	0
+171	-14.5	0
+172	-14.5	0
+173	-14.5	0
+174	-14.5	0
+175	-14.5	0
+176	-14.5	0
+177	-14.5	0
+178	-14.5	0
+179	-14.5	0
+180	-14.5	0
+181	-14.5	0
+182	-14.5	0
+183	-14.5	0
+184	-14.5	0
+185	-14.5	0
+186	-14.5	0
+187	-14.5	0
+188	-14.5	0
+189	-14.5	0
+190	-14.5	0
+191	-14.5	0
+192	-14.5	0
+193	-14.5	0
+194	-14.5	0
+195	-14.5	0
+196	-14.5	0
+197	-14.5	0
+198	-14.5	0
+199	-14.5	0
+200	-14.5	0
+201	-14.5	0
+202	-14.5	0
+203	-14.5	0
+204	-14.5	0
+205	-14.5	0
+206	-14.5	0
+207	-14.5	0
+208	-14.5	0
+209	-14.5	0
+210	-14.5	0
+211	-14.5	0
+212	-14.5	0
+213	-14.5	0
+214	-14.5	0
+215	-14.5	0
+216	-14.5	0
+217	-14.5	0
+218	-14.5	0
+219	-14.5	0
+220	-14.5	0
+221	-14.5	0
+222	-14.5	0
+223	-14.5	0
+224	-14.5	0
+225	-14.5	0
+226	-14.5	0
+227	-14.5	0
+228	-14.5	0
+229	-14.5	0
+230	-14.5	0
+231	-14.5	0
+232	-14.5	0
+233	-14.5	0
+234	-14.5	0
+235	-14.5	0
+236	-14.5	0
+237	-14.5	0
+238	-14.5	0
+239	-14.5	0
+240	-14.5	0
+241	-14.5	0
+242	-14.5	0
+243	-14.5	0
+244	-14.5	0
+245	-14.5	0
+246	-14.5	0
+247	-14.5	0
+248	-14.5	0
+249	-14.5	0
+250	-14.5	0
+251	-14.5	0
+252	-14.5	0
+253	-14.5	0
+254	-14.5	0
+255	-14.5	0
+256	-14.5	0
+257	-14.5	0
+258	-14.5	0
+259	-14.5	0
+260	-14.5	0
+261	-14.5	0
+262	-14.5	0
+263	-14.5	0
+264	-14.5	0
+265	-14.5	0
+266	-14.5	0
+267	-14.5	0
+268	-14.5	0
+269	-14.5	0
+270	-14.5	0
+271	-14.5	0
+272	-14.5	0
+273	-14.5	0
+274	-14.5	0
+275	-14.5	0
+276	-14.5	0
+277	-14.5	0
+278	-14.5	0
+279	-14.5	0
+280	-14.5	0
+281	-14.5	0
+282	-14.5	0
+283	-14.5	0
+284	-14.5	0
+285	-14.5	0
+286	-14.5	0
+287	-14.5	0
+288	-14.5	0
+289	-14.5	0
+290	-14.5	0
+291	-14.5	0
+292	-14.5	0
+293	-14.5	0
+294	-14.5	0
+295	-14.5	0
+296	-14.5	0
+297	-14.5	0
+298	-14.5	0
+299	-14.5	0
+300	-14.5	0
+301	-14.5	0
+302	-14.5	0
+303	-14.5	0
+304	-14.5	0
+305	-14.5	0
+306	-14.5	0
+307	-14.5	0
+308	-14.5	0
+309	-14.5	0
+310	-14.5	0
+311	-14.5	0
+312	-14.5	0
+313	-14.5	0
+314	-14.5	0
+315	-14.5	0
+316	-14.5	0
+317	-14.5	0
+318	-14.5	0
+319	-14.5	0
+320	-14.5	0
+321	-14.5	0
+322	-14.5	0
+323	-14.5	0
+324	-14.5	0
+325	-14.5	0
+326	-14.5	0
+327	-14.5	0
+328	-14.5	0
+329	-14.5	0
+330	-14.5	0
+331	-14.5	0
+332	-14.5	0
+333	-14.5	0
+334	-14.5	0
+335	-14.5	0
+336	-14.5	0
+337	-14.5	0
+338	-14.5	0
+339	-14.5	0
+340	-14.5	0
+341	-14.5	0
+342	-14.5	0
+343	-14.5	0
+344	-14.5	0
+345	-14.5	0
+346	-14.5	0
+347	-14.5	0
+348	-14.5	0
+349	-14.5	0
+350	-14.5	0
+351	-14.5	0
+352	-14.5	0
+353	-14.5	0
+354	-14.5	0
+355	-14.5	0
+356	-14.5	0
+357	-14.5	0
+358	-14.5	0
+359	-14.5	0
+360	-14.5	0
+0	-14	0
+1	-14	0
+2	-14	0
+3	-14	0
+4	-14	0
+5	-14	0
+6	-14	0
+7	-14	0
+8	-14	0
+9	-14	0
+10	-14	0
+11	-14	0
+12	-14	0
+13	-14	0
+14	-14	0
+15	-14	0
+16	-14	0
+17	-14	0
+18	-14	0
+19	-14	0
+20	-14	0
+21	-14	0
+22	-14	0
+23	-14	0
+24	-14	0
+25	-14	0
+26	-14	0
+27	-14	0
+28	-14	0
+29	-14	0
+30	-14	0
+31	-14	0
+32	-14	0
+33	-14	0
+34	-14	0
+35	-14	0
+36	-14	0
+37	-14	0
+38	-14	0
+39	-14	0
+40	-14	0
+41	-14	0
+42	-14	0
+43	-14	0
+44	-14	0
+45	-14	0
+46	-14	0
+47	-14	0
+48	-14	0
+49	-14	0
+50	-14	0
+51	-14	0
+52	-14	0
+53	-14	0
+54	-14	0
+55	-14	0
+56	-14	0
+57	-14	0
+58	-14	0
+59	-14	0
+60	-14	0
+61	-14	0
+62	-14	0
+63	-14	0
+64	-14	0
+65	-14	0
+66	-14	0
+67	-14	0
+68	-14	0
+69	-14	0
+70	-14	0
+71	-14	0
+72	-14	0
+73	-14	0
+74	-14	0
+75	-14	0
+76	-14	0
+77	-14	0
+78	-14	0
+79	-14	0
+80	-14	0
+81	-14	0
+82	-14	0
+83	-14	0
+84	-14	0
+85	-14	0
+86	-14	0
+87	-14	0
+88	-14	0
+89	-14	0
+90	-14	0
+91	-14	0
+92	-14	0
+93	-14	0
+94	-14	0
+95	-14	0
+96	-14	0
+97	-14	0
+98	-14	0
+99	-14	0
+100	-14	0
+101	-14	0
+102	-14	0
+103	-14	0
+104	-14	0
+105	-14	0
+106	-14	0
+107	-14	0
+108	-14	0
+109	-14	0
+110	-14	0
+111	-14	0
+112	-14	0
+113	-14	0
+114	-14	0
+115	-14	0
+116	-14	0
+117	-14	0
+118	-14	0
+119	-14	0
+120	-14	0
+121	-14	0
+122	-14	0
+123	-14	0
+124	-14	0
+125	-14	0
+126	-14	0
+127	-14	0
+128	-14	0
+129	-14	0
+130	-14	0
+131	-14	0
+132	-14	0
+133	-14	0
+134	-14	0
+135	-14	0
+136	-14	0
+137	-14	0
+138	-14	0
+139	-14	0
+140	-14	0
+141	-14	0
+142	-14	0
+143	-14	0
+144	-14	0
+145	-14	0
+146	-14	0
+147	-14	0
+148	-14	0
+149	-14	0
+150	-14	0
+151	-14	0
+152	-14	0
+153	-14	0
+154	-14	0
+155	-14	0
+156	-14	0
+157	-14	0
+158	-14	0
+159	-14	0
+160	-14	0
+161	-14	0
+162	-14	0
+163	-14	0
+164	-14	0
+165	-14	0
+166	-14	0
+167	-14	0
+168	-14	0
+169	-14	0
+170	-14	0
+171	-14	0
+172	-14	0
+173	-14	0
+174	-14	0
+175	-14	0
+176	-14	0
+177	-14	0
+178	-14	0
+179	-14	0
+180	-14	0
+181	-14	0
+182	-14	0
+183	-14	0
+184	-14	0
+185	-14	0
+186	-14	0
+187	-14	0
+188	-14	0
+189	-14	0
+190	-14	0
+191	-14	0
+192	-14	0
+193	-14	0
+194	-14	0
+195	-14	0
+196	-14	0
+197	-14	0
+198	-14	0
+199	-14	0
+200	-14	0
+201	-14	0
+202	-14	0
+203	-14	0
+204	-14	0
+205	-14	0
+206	-14	0
+207	-14	0
+208	-14	0
+209	-14	0
+210	-14	0
+211	-14	0
+212	-14	0
+213	-14	0
+214	-14	0
+215	-14	0
+216	-14	0
+217	-14	0
+218	-14	0
+219	-14	0
+220	-14	0
+221	-14	0
+222	-14	0
+223	-14	0
+224	-14	0
+225	-14	0
+226	-14	0
+227	-14	0
+228	-14	0
+229	-14	0
+230	-14	0
+231	-14	0
+232	-14	0
+233	-14	0
+234	-14	0
+235	-14	0
+236	-14	0
+237	-14	0
+238	-14	0
+239	-14	0
+240	-14	0
+241	-14	0
+242	-14	0
+243	-14	0
+244	-14	0
+245	-14	0
+246	-14	0
+247	-14	0
+248	-14	0
+249	-14	0
+250	-14	0
+251	-14	0
+252	-14	0
+253	-14	0
+254	-14	0
+255	-14	0
+256	-14	0
+257	-14	0
+258	-14	0
+259	-14	0
+260	-14	0
+261	-14	0
+262	-14	0
+263	-14	0
+264	-14	0
+265	-14	0
+266	-14	0
+267	-14	0
+268	-14	0
+269	-14	0
+270	-14	0
+271	-14	0
+272	-14	0
+273	-14	0
+274	-14	0
+275	-14	0
+276	-14	0
+277	-14	0
+278	-14	0
+279	-14	0
+280	-14	0
+281	-14	0
+282	-14	0
+283	-14	0
+284	-14	0
+285	-14	0
+286	-14	0
+287	-14	0
+288	-14	0
+289	-14	0
+290	-14	0
+291	-14	0
+292	-14	0
+293	-14	0
+294	-14	0
+295	-14	0
+296	-14	0
+297	-14	0
+298	-14	0
+299	-14	0
+300	-14	0
+301	-14	0
+302	-14	0
+303	-14	0
+304	-14	0
+305	-14	0
+306	-14	0
+307	-14	0
+308	-14	0
+309	-14	0
+310	-14	0
+311	-14	0
+312	-14	0
+313	-14	0
+314	-14	0
+315	-14	0
+316	-14	0
+317	-14	0
+318	-14	0
+319	-14	0
+320	-14	0
+321	-14	0
+322	-14	0
+323	-14	0
+324	-14	0
+325	-14	0
+326	-14	0
+327	-14	0
+328	-14	0
+329	-14	0
+330	-14	0
+331	-14	0
+332	-14	0
+333	-14	0
+334	-14	0
+335	-14	0
+336	-14	0
+337	-14	0
+338	-14	0
+339	-14	0
+340	-14	0
+341	-14	0
+342	-14	0
+343	-14	0
+344	-14	0
+345	-14	0
+346	-14	0
+347	-14	0
+348	-14	0
+349	-14	0
+350	-14	0
+351	-14	0
+352	-14	0
+353	-14	0
+354	-14	0
+355	-14	0
+356	-14	0
+357	-14	0
+358	-14	0
+359	-14	0
+360	-14	0
+0	-13.5	0
+1	-13.5	0
+2	-13.5	0
+3	-13.5	0
+4	-13.5	0
+5	-13.5	0
+6	-13.5	0
+7	-13.5	0
+8	-13.5	0
+9	-13.5	0
+10	-13.5	0
+11	-13.5	0
+12	-13.5	0
+13	-13.5	0
+14	-13.5	0
+15	-13.5	0
+16	-13.5	0
+17	-13.5	0
+18	-13.5	0
+19	-13.5	0
+20	-13.5	0
+21	-13.5	0
+22	-13.5	0
+23	-13.5	0
+24	-13.5	0
+25	-13.5	0
+26	-13.5	0
+27	-13.5	0
+28	-13.5	0
+29	-13.5	0
+30	-13.5	0
+31	-13.5	0
+32	-13.5	0
+33	-13.5	0
+34	-13.5	0
+35	-13.5	0
+36	-13.5	0
+37	-13.5	0
+38	-13.5	0
+39	-13.5	0
+40	-13.5	0
+41	-13.5	0
+42	-13.5	0
+43	-13.5	0
+44	-13.5	0
+45	-13.5	0
+46	-13.5	0
+47	-13.5	0
+48	-13.5	0
+49	-13.5	0
+50	-13.5	0
+51	-13.5	0
+52	-13.5	0
+53	-13.5	0
+54	-13.5	0
+55	-13.5	0
+56	-13.5	0
+57	-13.5	0
+58	-13.5	0
+59	-13.5	0
+60	-13.5	0
+61	-13.5	0
+62	-13.5	0
+63	-13.5	0
+64	-13.5	0
+65	-13.5	0
+66	-13.5	0
+67	-13.5	0
+68	-13.5	0
+69	-13.5	0
+70	-13.5	0
+71	-13.5	0
+72	-13.5	0
+73	-13.5	0
+74	-13.5	0
+75	-13.5	0
+76	-13.5	0
+77	-13.5	0
+78	-13.5	0
+79	-13.5	0
+80	-13.5	0
+81	-13.5	0
+82	-13.5	0
+83	-13.5	0
+84	-13.5	0
+85	-13.5	0
+86	-13.5	0
+87	-13.5	0
+88	-13.5	0
+89	-13.5	0
+90	-13.5	0
+91	-13.5	0
+92	-13.5	0
+93	-13.5	0
+94	-13.5	0
+95	-13.5	0
+96	-13.5	0
+97	-13.5	0
+98	-13.5	0
+99	-13.5	0
+100	-13.5	0
+101	-13.5	0
+102	-13.5	0
+103	-13.5	0
+104	-13.5	0
+105	-13.5	0
+106	-13.5	0
+107	-13.5	0
+108	-13.5	0
+109	-13.5	0
+110	-13.5	0
+111	-13.5	0
+112	-13.5	0
+113	-13.5	0
+114	-13.5	0
+115	-13.5	0
+116	-13.5	0
+117	-13.5	0
+118	-13.5	0
+119	-13.5	0
+120	-13.5	0
+121	-13.5	0
+122	-13.5	0
+123	-13.5	0
+124	-13.5	0
+125	-13.5	0
+126	-13.5	0
+127	-13.5	0
+128	-13.5	0
+129	-13.5	0
+130	-13.5	0
+131	-13.5	0
+132	-13.5	0
+133	-13.5	0
+134	-13.5	0
+135	-13.5	0
+136	-13.5	0
+137	-13.5	0
+138	-13.5	0
+139	-13.5	0
+140	-13.5	0
+141	-13.5	0
+142	-13.5	0
+143	-13.5	0
+144	-13.5	0
+145	-13.5	0
+146	-13.5	0
+147	-13.5	0
+148	-13.5	0
+149	-13.5	0
+150	-13.5	0
+151	-13.5	0
+152	-13.5	0
+153	-13.5	0
+154	-13.5	0
+155	-13.5	0
+156	-13.5	0
+157	-13.5	0
+158	-13.5	0
+159	-13.5	0
+160	-13.5	0
+161	-13.5	0
+162	-13.5	0
+163	-13.5	0
+164	-13.5	0
+165	-13.5	0
+166	-13.5	0
+167	-13.5	0
+168	-13.5	0
+169	-13.5	0
+170	-13.5	0
+171	-13.5	0
+172	-13.5	0
+173	-13.5	0
+174	-13.5	0
+175	-13.5	0
+176	-13.5	0
+177	-13.5	0
+178	-13.5	0
+179	-13.5	0
+180	-13.5	0
+181	-13.5	0
+182	-13.5	0
+183	-13.5	0
+184	-13.5	0
+185	-13.5	0
+186	-13.5	0
+187	-13.5	0
+188	-13.5	0
+189	-13.5	0
+190	-13.5	0
+191	-13.5	0
+192	-13.5	0
+193	-13.5	0
+194	-13.5	0
+195	-13.5	0
+196	-13.5	0
+197	-13.5	0
+198	-13.5	0
+199	-13.5	0
+200	-13.5	0
+201	-13.5	0
+202	-13.5	0
+203	-13.5	0
+204	-13.5	0
+205	-13.5	0
+206	-13.5	0
+207	-13.5	0
+208	-13.5	0
+209	-13.5	0
+210	-13.5	0
+211	-13.5	0
+212	-13.5	0
+213	-13.5	0
+214	-13.5	0
+215	-13.5	0
+216	-13.5	0
+217	-13.5	0
+218	-13.5	0
+219	-13.5	0
+220	-13.5	0
+221	-13.5	0
+222	-13.5	0
+223	-13.5	0
+224	-13.5	0
+225	-13.5	0
+226	-13.5	0
+227	-13.5	0
+228	-13.5	0
+229	-13.5	0
+230	-13.5	0
+231	-13.5	0
+232	-13.5	0
+233	-13.5	0
+234	-13.5	0
+235	-13.5	0
+236	-13.5	0
+237	-13.5	0
+238	-13.5	0
+239	-13.5	0
+240	-13.5	0
+241	-13.5	0
+242	-13.5	0
+243	-13.5	0
+244	-13.5	0
+245	-13.5	0
+246	-13.5	0
+247	-13.5	0
+248	-13.5	0
+249	-13.5	0
+250	-13.5	0
+251	-13.5	0
+252	-13.5	0
+253	-13.5	0
+254	-13.5	0
+255	-13.5	0
+256	-13.5	0
+257	-13.5	0
+258	-13.5	0
+259	-13.5	0
+260	-13.5	0
+261	-13.5	0
+262	-13.5	0
+263	-13.5	0
+264	-13.5	0
+265	-13.5	0
+266	-13.5	0
+267	-13.5	0
+268	-13.5	0
+269	-13.5	0
+270	-13.5	0
+271	-13.5	0
+272	-13.5	0
+273	-13.5	0
+274	-13.5	0
+275	-13.5	0
+276	-13.5	0
+277	-13.5	0
+278	-13.5	0
+279	-13.5	0
+280	-13.5	0
+281	-13.5	0
+282	-13.5	0
+283	-13.5	0
+284	-13.5	0
+285	-13.5	0
+286	-13.5	0
+287	-13.5	0
+288	-13.5	0
+289	-13.5	0
+290	-13.5	0
+291	-13.5	0
+292	-13.5	0
+293	-13.5	0
+294	-13.5	0
+295	-13.5	0
+296	-13.5	0
+297	-13.5	0
+298	-13.5	0
+299	-13.5	0
+300	-13.5	0
+301	-13.5	0
+302	-13.5	0
+303	-13.5	0
+304	-13.5	0
+305	-13.5	0
+306	-13.5	0
+307	-13.5	0
+308	-13.5	0
+309	-13.5	0
+310	-13.5	0
+311	-13.5	0
+312	-13.5	0
+313	-13.5	0
+314	-13.5	0
+315	-13.5	0
+316	-13.5	0
+317	-13.5	0
+318	-13.5	0
+319	-13.5	0
+320	-13.5	0
+321	-13.5	0
+322	-13.5	0
+323	-13.5	0
+324	-13.5	0
+325	-13.5	0
+326	-13.5	0
+327	-13.5	0
+328	-13.5	0
+329	-13.5	0
+330	-13.5	0
+331	-13.5	0
+332	-13.5	0
+333	-13.5	0
+334	-13.5	0
+335	-13.5	0
+336	-13.5	0
+337	-13.5	0
+338	-13.5	0
+339	-13.5	0
+340	-13.5	0
+341	-13.5	0
+342	-13.5	0
+343	-13.5	0
+344	-13.5	0
+345	-13.5	0
+346	-13.5	0
+347	-13.5	0
+348	-13.5	0
+349	-13.5	0
+350	-13.5	0
+351	-13.5	0
+352	-13.5	0
+353	-13.5	0
+354	-13.5	0
+355	-13.5	0
+356	-13.5	0
+357	-13.5	0
+358	-13.5	0
+359	-13.5	0
+360	-13.5	0
+0	-13	0
+1	-13	0
+2	-13	0
+3	-13	0
+4	-13	0
+5	-13	0
+6	-13	0
+7	-13	0
+8	-13	0
+9	-13	0
+10	-13	0
+11	-13	0
+12	-13	0
+13	-13	0
+14	-13	0
+15	-13	0
+16	-13	0
+17	-13	0
+18	-13	0
+19	-13	0
+20	-13	0
+21	-13	0
+22	-13	0
+23	-13	0
+24	-13	0
+25	-13	0
+26	-13	0
+27	-13	0
+28	-13	0
+29	-13	0
+30	-13	0
+31	-13	0
+32	-13	0
+33	-13	0
+34	-13	0
+35	-13	0
+36	-13	0
+37	-13	0
+38	-13	0
+39	-13	0
+40	-13	0
+41	-13	0
+42	-13	0
+43	-13	0
+44	-13	0
+45	-13	0
+46	-13	0
+47	-13	0
+48	-13	0
+49	-13	0
+50	-13	0
+51	-13	0
+52	-13	0
+53	-13	0
+54	-13	0
+55	-13	0
+56	-13	0
+57	-13	0
+58	-13	0
+59	-13	0
+60	-13	0
+61	-13	0
+62	-13	0
+63	-13	0
+64	-13	0
+65	-13	0
+66	-13	0
+67	-13	0
+68	-13	0
+69	-13	0
+70	-13	0
+71	-13	0
+72	-13	0
+73	-13	0
+74	-13	0
+75	-13	0
+76	-13	0
+77	-13	0
+78	-13	0
+79	-13	0
+80	-13	0
+81	-13	0
+82	-13	0
+83	-13	0
+84	-13	0
+85	-13	0
+86	-13	0
+87	-13	0
+88	-13	0
+89	-13	0
+90	-13	0
+91	-13	0
+92	-13	0
+93	-13	0
+94	-13	0
+95	-13	0
+96	-13	0
+97	-13	0
+98	-13	0
+99	-13	0
+100	-13	0
+101	-13	0
+102	-13	0
+103	-13	0
+104	-13	0
+105	-13	0
+106	-13	0
+107	-13	0
+108	-13	0
+109	-13	0
+110	-13	0
+111	-13	0
+112	-13	0
+113	-13	0
+114	-13	0
+115	-13	0
+116	-13	0
+117	-13	0
+118	-13	0
+119	-13	0
+120	-13	0
+121	-13	0
+122	-13	0
+123	-13	0
+124	-13	0
+125	-13	0
+126	-13	0
+127	-13	0
+128	-13	0
+129	-13	0
+130	-13	0
+131	-13	0
+132	-13	0
+133	-13	0
+134	-13	0
+135	-13	0
+136	-13	0
+137	-13	0
+138	-13	0
+139	-13	0
+140	-13	0
+141	-13	0
+142	-13	0
+143	-13	0
+144	-13	0
+145	-13	0
+146	-13	0
+147	-13	0
+148	-13	0
+149	-13	0
+150	-13	0
+151	-13	0
+152	-13	0
+153	-13	0
+154	-13	0
+155	-13	0
+156	-13	0
+157	-13	0
+158	-13	0
+159	-13	0
+160	-13	0
+161	-13	0
+162	-13	0
+163	-13	0
+164	-13	0
+165	-13	0
+166	-13	0
+167	-13	0
+168	-13	0
+169	-13	0
+170	-13	0
+171	-13	0
+172	-13	0
+173	-13	0
+174	-13	0
+175	-13	0
+176	-13	0
+177	-13	0
+178	-13	0
+179	-13	0
+180	-13	0
+181	-13	0
+182	-13	0
+183	-13	0
+184	-13	0
+185	-13	0
+186	-13	0
+187	-13	0
+188	-13	0
+189	-13	0
+190	-13	0
+191	-13	0
+192	-13	0
+193	-13	0
+194	-13	0
+195	-13	0
+196	-13	0
+197	-13	0
+198	-13	0
+199	-13	0
+200	-13	0
+201	-13	0
+202	-13	0
+203	-13	0
+204	-13	0
+205	-13	0
+206	-13	0
+207	-13	0
+208	-13	0
+209	-13	0
+210	-13	0
+211	-13	0
+212	-13	0
+213	-13	0
+214	-13	0
+215	-13	0
+216	-13	0
+217	-13	0
+218	-13	0
+219	-13	0
+220	-13	0
+221	-13	0
+222	-13	0
+223	-13	0
+224	-13	0
+225	-13	0
+226	-13	0
+227	-13	0
+228	-13	0
+229	-13	0
+230	-13	0
+231	-13	0
+232	-13	0
+233	-13	0
+234	-13	0
+235	-13	0
+236	-13	0
+237	-13	0
+238	-13	0
+239	-13	0
+240	-13	0
+241	-13	0
+242	-13	0
+243	-13	0
+244	-13	0
+245	-13	0
+246	-13	0
+247	-13	0
+248	-13	0
+249	-13	0
+250	-13	0
+251	-13	0
+252	-13	0
+253	-13	0
+254	-13	0
+255	-13	0
+256	-13	0
+257	-13	0
+258	-13	0
+259	-13	0
+260	-13	0
+261	-13	0
+262	-13	0
+263	-13	0
+264	-13	0
+265	-13	0
+266	-13	0
+267	-13	0
+268	-13	0
+269	-13	0
+270	-13	0
+271	-13	0
+272	-13	0
+273	-13	0
+274	-13	0
+275	-13	0
+276	-13	0
+277	-13	0
+278	-13	0
+279	-13	0
+280	-13	0
+281	-13	0
+282	-13	0
+283	-13	0
+284	-13	0
+285	-13	0
+286	-13	0
+287	-13	0
+288	-13	0
+289	-13	0
+290	-13	0
+291	-13	0
+292	-13	0
+293	-13	0
+294	-13	0
+295	-13	0
+296	-13	0
+297	-13	0
+298	-13	0
+299	-13	0
+300	-13	0
+301	-13	0
+302	-13	0
+303	-13	0
+304	-13	0
+305	-13	0
+306	-13	0
+307	-13	0
+308	-13	0
+309	-13	0
+310	-13	0
+311	-13	0
+312	-13	0
+313	-13	0
+314	-13	0
+315	-13	0
+316	-13	0
+317	-13	0
+318	-13	0
+319	-13	0
+320	-13	0
+321	-13	0
+322	-13	0
+323	-13	0
+324	-13	0
+325	-13	0
+326	-13	0
+327	-13	0
+328	-13	0
+329	-13	0
+330	-13	0
+331	-13	0
+332	-13	0
+333	-13	0
+334	-13	0
+335	-13	0
+336	-13	0
+337	-13	0
+338	-13	0
+339	-13	0
+340	-13	0
+341	-13	0
+342	-13	0
+343	-13	0
+344	-13	0
+345	-13	0
+346	-13	0
+347	-13	0
+348	-13	0
+349	-13	0
+350	-13	0
+351	-13	0
+352	-13	0
+353	-13	0
+354	-13	0
+355	-13	0
+356	-13	0
+357	-13	0
+358	-13	0
+359	-13	0
+360	-13	0
+0	-12.5	0
+1	-12.5	0
+2	-12.5	0
+3	-12.5	0
+4	-12.5	0
+5	-12.5	0
+6	-12.5	0
+7	-12.5	0
+8	-12.5	0
+9	-12.5	0
+10	-12.5	0
+11	-12.5	0
+12	-12.5	0
+13	-12.5	0
+14	-12.5	0
+15	-12.5	0
+16	-12.5	0
+17	-12.5	0
+18	-12.5	0
+19	-12.5	0
+20	-12.5	0
+21	-12.5	0
+22	-12.5	0
+23	-12.5	0
+24	-12.5	0
+25	-12.5	0
+26	-12.5	0
+27	-12.5	0
+28	-12.5	0
+29	-12.5	0
+30	-12.5	0
+31	-12.5	0
+32	-12.5	0
+33	-12.5	0
+34	-12.5	0
+35	-12.5	0
+36	-12.5	0
+37	-12.5	0
+38	-12.5	0
+39	-12.5	0
+40	-12.5	0
+41	-12.5	0
+42	-12.5	0
+43	-12.5	0
+44	-12.5	0
+45	-12.5	0
+46	-12.5	0
+47	-12.5	0
+48	-12.5	0
+49	-12.5	0
+50	-12.5	0
+51	-12.5	0
+52	-12.5	0
+53	-12.5	0
+54	-12.5	0
+55	-12.5	0
+56	-12.5	0
+57	-12.5	0
+58	-12.5	0
+59	-12.5	0
+60	-12.5	0
+61	-12.5	0
+62	-12.5	0
+63	-12.5	0
+64	-12.5	0
+65	-12.5	0
+66	-12.5	0
+67	-12.5	0
+68	-12.5	0
+69	-12.5	0
+70	-12.5	0
+71	-12.5	0
+72	-12.5	0
+73	-12.5	0
+74	-12.5	0
+75	-12.5	0
+76	-12.5	0
+77	-12.5	0
+78	-12.5	0
+79	-12.5	0
+80	-12.5	0
+81	-12.5	0
+82	-12.5	0
+83	-12.5	0
+84	-12.5	0
+85	-12.5	0
+86	-12.5	0
+87	-12.5	0
+88	-12.5	0
+89	-12.5	0
+90	-12.5	0
+91	-12.5	0
+92	-12.5	0
+93	-12.5	0
+94	-12.5	0
+95	-12.5	0
+96	-12.5	0
+97	-12.5	0
+98	-12.5	0
+99	-12.5	0
+100	-12.5	0
+101	-12.5	0
+102	-12.5	0
+103	-12.5	0
+104	-12.5	0
+105	-12.5	0
+106	-12.5	0
+107	-12.5	0
+108	-12.5	0
+109	-12.5	0
+110	-12.5	0
+111	-12.5	0
+112	-12.5	0
+113	-12.5	0
+114	-12.5	0
+115	-12.5	0
+116	-12.5	0
+117	-12.5	0
+118	-12.5	0
+119	-12.5	0
+120	-12.5	0
+121	-12.5	0
+122	-12.5	0
+123	-12.5	0
+124	-12.5	0
+125	-12.5	0
+126	-12.5	0
+127	-12.5	0
+128	-12.5	0
+129	-12.5	0
+130	-12.5	0
+131	-12.5	0
+132	-12.5	0
+133	-12.5	0
+134	-12.5	0
+135	-12.5	0
+136	-12.5	0
+137	-12.5	0
+138	-12.5	0
+139	-12.5	0
+140	-12.5	0
+141	-12.5	0
+142	-12.5	0
+143	-12.5	0
+144	-12.5	0
+145	-12.5	0
+146	-12.5	0
+147	-12.5	0
+148	-12.5	0
+149	-12.5	0
+150	-12.5	0
+151	-12.5	0
+152	-12.5	0
+153	-12.5	0
+154	-12.5	0
+155	-12.5	0
+156	-12.5	0
+157	-12.5	0
+158	-12.5	0
+159	-12.5	0
+160	-12.5	0
+161	-12.5	0
+162	-12.5	0
+163	-12.5	0
+164	-12.5	0
+165	-12.5	0
+166	-12.5	0
+167	-12.5	0
+168	-12.5	0
+169	-12.5	0
+170	-12.5	0
+171	-12.5	0
+172	-12.5	0
+173	-12.5	0
+174	-12.5	0
+175	-12.5	0
+176	-12.5	0
+177	-12.5	0
+178	-12.5	0
+179	-12.5	0
+180	-12.5	0
+181	-12.5	0
+182	-12.5	0
+183	-12.5	0
+184	-12.5	0
+185	-12.5	0
+186	-12.5	0
+187	-12.5	0
+188	-12.5	0
+189	-12.5	0
+190	-12.5	0
+191	-12.5	0
+192	-12.5	0
+193	-12.5	0
+194	-12.5	0
+195	-12.5	0
+196	-12.5	0
+197	-12.5	0
+198	-12.5	0
+199	-12.5	0
+200	-12.5	0
+201	-12.5	0
+202	-12.5	0
+203	-12.5	0
+204	-12.5	0
+205	-12.5	0
+206	-12.5	0
+207	-12.5	0
+208	-12.5	0
+209	-12.5	0
+210	-12.5	0
+211	-12.5	0
+212	-12.5	0
+213	-12.5	0
+214	-12.5	0
+215	-12.5	0
+216	-12.5	0
+217	-12.5	0
+218	-12.5	0
+219	-12.5	0
+220	-12.5	0
+221	-12.5	0
+222	-12.5	0
+223	-12.5	0
+224	-12.5	0
+225	-12.5	0
+226	-12.5	0
+227	-12.5	0
+228	-12.5	0
+229	-12.5	0
+230	-12.5	0
+231	-12.5	0
+232	-12.5	0
+233	-12.5	0
+234	-12.5	0
+235	-12.5	0
+236	-12.5	0
+237	-12.5	0
+238	-12.5	0
+239	-12.5	0
+240	-12.5	0
+241	-12.5	0
+242	-12.5	0
+243	-12.5	0
+244	-12.5	0
+245	-12.5	0
+246	-12.5	0
+247	-12.5	0
+248	-12.5	0
+249	-12.5	0
+250	-12.5	0
+251	-12.5	0
+252	-12.5	0
+253	-12.5	0
+254	-12.5	0
+255	-12.5	0
+256	-12.5	0
+257	-12.5	0
+258	-12.5	0
+259	-12.5	0
+260	-12.5	0
+261	-12.5	0
+262	-12.5	0
+263	-12.5	0
+264	-12.5	0
+265	-12.5	0
+266	-12.5	0
+267	-12.5	0
+268	-12.5	0
+269	-12.5	0
+270	-12.5	0
+271	-12.5	0
+272	-12.5	0
+273	-12.5	0
+274	-12.5	0
+275	-12.5	0
+276	-12.5	0
+277	-12.5	0
+278	-12.5	0
+279	-12.5	0
+280	-12.5	0
+281	-12.5	0
+282	-12.5	0
+283	-12.5	0
+284	-12.5	0
+285	-12.5	0
+286	-12.5	0
+287	-12.5	0
+288	-12.5	0
+289	-12.5	0
+290	-12.5	0
+291	-12.5	0
+292	-12.5	0
+293	-12.5	0
+294	-12.5	0
+295	-12.5	0
+296	-12.5	0
+297	-12.5	0
+298	-12.5	0
+299	-12.5	0
+300	-12.5	0
+301	-12.5	0
+302	-12.5	0
+303	-12.5	0
+304	-12.5	0
+305	-12.5	0
+306	-12.5	0
+307	-12.5	0
+308	-12.5	0
+309	-12.5	0
+310	-12.5	0
+311	-12.5	0
+312	-12.5	0
+313	-12.5	0
+314	-12.5	0
+315	-12.5	0
+316	-12.5	0
+317	-12.5	0
+318	-12.5	0
+319	-12.5	0
+320	-12.5	0
+321	-12.5	0
+322	-12.5	0
+323	-12.5	0
+324	-12.5	0
+325	-12.5	0
+326	-12.5	0
+327	-12.5	0
+328	-12.5	0
+329	-12.5	0
+330	-12.5	0
+331	-12.5	0
+332	-12.5	0
+333	-12.5	0
+334	-12.5	0
+335	-12.5	0
+336	-12.5	0
+337	-12.5	0
+338	-12.5	0
+339	-12.5	0
+340	-12.5	0
+341	-12.5	0
+342	-12.5	0
+343	-12.5	0
+344	-12.5	0
+345	-12.5	0
+346	-12.5	0
+347	-12.5	0
+348	-12.5	0
+349	-12.5	0
+350	-12.5	0
+351	-12.5	0
+352	-12.5	0
+353	-12.5	0
+354	-12.5	0
+355	-12.5	0
+356	-12.5	0
+357	-12.5	0
+358	-12.5	0
+359	-12.5	0
+360	-12.5	0
+0	-12	0
+1	-12	0
+2	-12	0
+3	-12	0
+4	-12	0
+5	-12	0
+6	-12	0
+7	-12	0
+8	-12	0
+9	-12	0
+10	-12	0
+11	-12	0
+12	-12	0
+13	-12	0
+14	-12	0
+15	-12	0
+16	-12	0
+17	-12	0
+18	-12	0
+19	-12	0
+20	-12	0
+21	-12	0
+22	-12	0
+23	-12	0
+24	-12	0
+25	-12	0
+26	-12	0
+27	-12	0
+28	-12	0
+29	-12	0
+30	-12	0
+31	-12	0
+32	-12	0
+33	-12	0
+34	-12	0
+35	-12	0
+36	-12	0
+37	-12	0
+38	-12	0
+39	-12	0
+40	-12	0
+41	-12	0
+42	-12	0
+43	-12	0
+44	-12	0
+45	-12	0
+46	-12	0
+47	-12	0
+48	-12	0
+49	-12	0
+50	-12	0
+51	-12	0
+52	-12	0
+53	-12	0
+54	-12	0
+55	-12	0
+56	-12	0
+57	-12	0
+58	-12	0
+59	-12	0
+60	-12	0
+61	-12	0
+62	-12	0
+63	-12	0
+64	-12	0
+65	-12	0
+66	-12	0
+67	-12	0
+68	-12	0
+69	-12	0
+70	-12	0
+71	-12	0
+72	-12	0
+73	-12	0
+74	-12	0
+75	-12	0
+76	-12	0
+77	-12	0
+78	-12	0
+79	-12	0
+80	-12	0
+81	-12	0
+82	-12	0
+83	-12	0
+84	-12	0
+85	-12	0
+86	-12	0
+87	-12	0
+88	-12	0
+89	-12	0
+90	-12	0
+91	-12	0
+92	-12	0
+93	-12	0
+94	-12	0
+95	-12	0
+96	-12	0
+97	-12	0
+98	-12	0
+99	-12	0
+100	-12	0
+101	-12	0
+102	-12	0
+103	-12	0
+104	-12	0
+105	-12	0
+106	-12	0
+107	-12	0
+108	-12	0
+109	-12	0
+110	-12	0
+111	-12	0
+112	-12	0
+113	-12	0
+114	-12	0
+115	-12	0
+116	-12	0
+117	-12	0
+118	-12	0
+119	-12	0
+120	-12	0
+121	-12	0
+122	-12	0
+123	-12	0
+124	-12	0
+125	-12	0
+126	-12	0
+127	-12	0
+128	-12	0
+129	-12	0
+130	-12	0
+131	-12	0
+132	-12	0
+133	-12	0
+134	-12	0
+135	-12	0
+136	-12	0
+137	-12	0
+138	-12	0
+139	-12	0
+140	-12	0
+141	-12	0
+142	-12	0
+143	-12	0
+144	-12	0
+145	-12	0
+146	-12	0
+147	-12	0
+148	-12	0
+149	-12	0
+150	-12	0
+151	-12	0
+152	-12	0
+153	-12	0
+154	-12	0
+155	-12	0
+156	-12	0
+157	-12	0
+158	-12	0
+159	-12	0
+160	-12	0
+161	-12	0
+162	-12	0
+163	-12	0
+164	-12	0
+165	-12	0
+166	-12	0
+167	-12	0
+168	-12	0
+169	-12	0
+170	-12	0
+171	-12	0
+172	-12	0
+173	-12	0
+174	-12	0
+175	-12	0
+176	-12	0
+177	-12	0
+178	-12	0
+179	-12	0
+180	-12	0
+181	-12	0
+182	-12	0
+183	-12	0
+184	-12	0
+185	-12	0
+186	-12	0
+187	-12	0
+188	-12	0
+189	-12	0
+190	-12	0
+191	-12	0
+192	-12	0
+193	-12	0
+194	-12	0
+195	-12	0
+196	-12	0
+197	-12	0
+198	-12	0
+199	-12	0
+200	-12	0
+201	-12	0
+202	-12	0
+203	-12	0
+204	-12	0
+205	-12	0
+206	-12	0
+207	-12	0
+208	-12	0
+209	-12	0
+210	-12	0
+211	-12	0
+212	-12	0
+213	-12	0
+214	-12	0
+215	-12	0
+216	-12	0
+217	-12	0
+218	-12	0
+219	-12	0
+220	-12	0
+221	-12	0
+222	-12	0
+223	-12	0
+224	-12	0
+225	-12	0
+226	-12	0
+227	-12	0
+228	-12	0
+229	-12	0
+230	-12	0
+231	-12	0
+232	-12	0
+233	-12	0
+234	-12	0
+235	-12	0
+236	-12	0
+237	-12	0
+238	-12	0
+239	-12	0
+240	-12	0
+241	-12	0
+242	-12	0
+243	-12	0
+244	-12	0
+245	-12	0
+246	-12	0
+247	-12	0
+248	-12	0
+249	-12	0
+250	-12	0
+251	-12	0
+252	-12	0
+253	-12	0
+254	-12	0
+255	-12	0
+256	-12	0
+257	-12	0
+258	-12	0
+259	-12	0
+260	-12	0
+261	-12	0
+262	-12	0
+263	-12	0
+264	-12	0
+265	-12	0
+266	-12	0
+267	-12	0
+268	-12	0
+269	-12	0
+270	-12	0
+271	-12	0
+272	-12	0
+273	-12	0
+274	-12	0
+275	-12	0
+276	-12	0
+277	-12	0
+278	-12	0
+279	-12	0
+280	-12	0
+281	-12	0
+282	-12	0
+283	-12	0
+284	-12	0
+285	-12	0
+286	-12	0
+287	-12	0
+288	-12	0
+289	-12	0
+290	-12	0
+291	-12	0
+292	-12	0
+293	-12	0
+294	-12	0
+295	-12	0
+296	-12	0
+297	-12	0
+298	-12	0
+299	-12	0
+300	-12	0
+301	-12	0
+302	-12	0
+303	-12	0
+304	-12	0
+305	-12	0
+306	-12	0
+307	-12	0
+308	-12	0
+309	-12	0
+310	-12	0
+311	-12	0
+312	-12	0
+313	-12	0
+314	-12	0
+315	-12	0
+316	-12	0
+317	-12	0
+318	-12	0
+319	-12	0
+320	-12	0
+321	-12	0
+322	-12	0
+323	-12	0
+324	-12	0
+325	-12	0
+326	-12	0
+327	-12	0
+328	-12	0
+329	-12	0
+330	-12	0
+331	-12	0
+332	-12	0
+333	-12	0
+334	-12	0
+335	-12	0
+336	-12	0
+337	-12	0
+338	-12	0
+339	-12	0
+340	-12	0
+341	-12	0
+342	-12	0
+343	-12	0
+344	-12	0
+345	-12	0
+346	-12	0
+347	-12	0
+348	-12	0
+349	-12	0
+350	-12	0
+351	-12	0
+352	-12	0
+353	-12	0
+354	-12	0
+355	-12	0
+356	-12	0
+357	-12	0
+358	-12	0
+359	-12	0
+360	-12	0
+0	-11.5	0
+1	-11.5	0
+2	-11.5	0
+3	-11.5	0
+4	-11.5	0
+5	-11.5	0
+6	-11.5	0
+7	-11.5	0
+8	-11.5	0
+9	-11.5	0
+10	-11.5	0
+11	-11.5	0
+12	-11.5	0
+13	-11.5	0
+14	-11.5	0
+15	-11.5	0
+16	-11.5	0
+17	-11.5	0
+18	-11.5	0
+19	-11.5	0
+20	-11.5	0
+21	-11.5	0
+22	-11.5	0
+23	-11.5	0
+24	-11.5	0
+25	-11.5	0
+26	-11.5	0
+27	-11.5	0
+28	-11.5	0
+29	-11.5	0
+30	-11.5	0
+31	-11.5	0
+32	-11.5	0
+33	-11.5	0
+34	-11.5	0
+35	-11.5	0
+36	-11.5	0
+37	-11.5	0
+38	-11.5	0
+39	-11.5	0
+40	-11.5	0
+41	-11.5	0
+42	-11.5	0
+43	-11.5	0
+44	-11.5	0
+45	-11.5	0
+46	-11.5	0
+47	-11.5	0
+48	-11.5	0
+49	-11.5	0
+50	-11.5	0
+51	-11.5	0
+52	-11.5	0
+53	-11.5	0
+54	-11.5	0
+55	-11.5	0
+56	-11.5	0
+57	-11.5	0
+58	-11.5	0
+59	-11.5	0
+60	-11.5	0
+61	-11.5	0
+62	-11.5	0
+63	-11.5	0
+64	-11.5	0
+65	-11.5	0
+66	-11.5	0
+67	-11.5	0
+68	-11.5	0
+69	-11.5	0
+70	-11.5	0
+71	-11.5	0
+72	-11.5	0
+73	-11.5	0
+74	-11.5	0
+75	-11.5	0
+76	-11.5	0
+77	-11.5	0
+78	-11.5	0
+79	-11.5	0
+80	-11.5	0
+81	-11.5	0
+82	-11.5	0
+83	-11.5	0
+84	-11.5	0
+85	-11.5	0
+86	-11.5	0
+87	-11.5	0
+88	-11.5	0
+89	-11.5	0
+90	-11.5	0
+91	-11.5	0
+92	-11.5	0
+93	-11.5	0
+94	-11.5	0
+95	-11.5	0
+96	-11.5	0
+97	-11.5	0
+98	-11.5	0
+99	-11.5	0
+100	-11.5	0
+101	-11.5	0
+102	-11.5	0
+103	-11.5	0
+104	-11.5	0
+105	-11.5	0
+106	-11.5	0
+107	-11.5	0
+108	-11.5	0
+109	-11.5	0
+110	-11.5	0
+111	-11.5	0
+112	-11.5	0
+113	-11.5	0
+114	-11.5	0
+115	-11.5	0
+116	-11.5	0
+117	-11.5	0
+118	-11.5	0
+119	-11.5	0
+120	-11.5	0
+121	-11.5	0
+122	-11.5	0
+123	-11.5	0
+124	-11.5	0
+125	-11.5	0
+126	-11.5	0
+127	-11.5	0
+128	-11.5	0
+129	-11.5	0
+130	-11.5	0
+131	-11.5	0
+132	-11.5	0
+133	-11.5	0
+134	-11.5	0
+135	-11.5	0
+136	-11.5	0
+137	-11.5	0
+138	-11.5	0
+139	-11.5	0
+140	-11.5	0
+141	-11.5	0
+142	-11.5	0
+143	-11.5	0
+144	-11.5	0
+145	-11.5	0
+146	-11.5	0
+147	-11.5	0
+148	-11.5	0
+149	-11.5	0
+150	-11.5	0
+151	-11.5	0
+152	-11.5	0
+153	-11.5	0
+154	-11.5	0
+155	-11.5	0
+156	-11.5	0
+157	-11.5	0
+158	-11.5	0
+159	-11.5	0
+160	-11.5	0
+161	-11.5	0
+162	-11.5	0
+163	-11.5	0
+164	-11.5	0
+165	-11.5	0
+166	-11.5	0
+167	-11.5	0
+168	-11.5	0
+169	-11.5	0
+170	-11.5	0
+171	-11.5	0
+172	-11.5	0
+173	-11.5	0
+174	-11.5	0
+175	-11.5	0
+176	-11.5	0
+177	-11.5	0
+178	-11.5	0
+179	-11.5	0
+180	-11.5	0
+181	-11.5	0
+182	-11.5	0
+183	-11.5	0
+184	-11.5	0
+185	-11.5	0
+186	-11.5	0
+187	-11.5	0
+188	-11.5	0
+189	-11.5	0
+190	-11.5	0
+191	-11.5	0
+192	-11.5	0
+193	-11.5	0
+194	-11.5	0
+195	-11.5	0
+196	-11.5	0
+197	-11.5	0
+198	-11.5	0
+199	-11.5	0
+200	-11.5	0
+201	-11.5	0
+202	-11.5	0
+203	-11.5	0
+204	-11.5	0
+205	-11.5	0
+206	-11.5	0
+207	-11.5	0
+208	-11.5	0
+209	-11.5	0
+210	-11.5	0
+211	-11.5	0
+212	-11.5	0
+213	-11.5	0
+214	-11.5	0
+215	-11.5	0
+216	-11.5	0
+217	-11.5	0
+218	-11.5	0
+219	-11.5	0
+220	-11.5	0
+221	-11.5	0
+222	-11.5	0
+223	-11.5	0
+224	-11.5	0
+225	-11.5	0
+226	-11.5	0
+227	-11.5	0
+228	-11.5	0
+229	-11.5	0
+230	-11.5	0
+231	-11.5	0
+232	-11.5	0
+233	-11.5	0
+234	-11.5	0
+235	-11.5	0
+236	-11.5	0
+237	-11.5	0
+238	-11.5	0
+239	-11.5	0
+240	-11.5	0
+241	-11.5	0
+242	-11.5	0
+243	-11.5	0
+244	-11.5	0
+245	-11.5	0
+246	-11.5	0
+247	-11.5	0
+248	-11.5	0
+249	-11.5	0
+250	-11.5	0
+251	-11.5	0
+252	-11.5	0
+253	-11.5	0
+254	-11.5	0
+255	-11.5	0
+256	-11.5	0
+257	-11.5	0
+258	-11.5	0
+259	-11.5	0
+260	-11.5	0
+261	-11.5	0
+262	-11.5	0
+263	-11.5	0
+264	-11.5	0
+265	-11.5	0
+266	-11.5	0
+267	-11.5	0
+268	-11.5	0
+269	-11.5	0
+270	-11.5	0
+271	-11.5	0
+272	-11.5	0
+273	-11.5	0
+274	-11.5	0
+275	-11.5	0
+276	-11.5	0
+277	-11.5	0
+278	-11.5	0
+279	-11.5	0
+280	-11.5	0
+281	-11.5	0
+282	-11.5	0
+283	-11.5	0
+284	-11.5	0
+285	-11.5	0
+286	-11.5	0
+287	-11.5	0
+288	-11.5	0
+289	-11.5	0
+290	-11.5	0
+291	-11.5	0
+292	-11.5	0
+293	-11.5	0
+294	-11.5	0
+295	-11.5	0
+296	-11.5	0
+297	-11.5	0
+298	-11.5	0
+299	-11.5	0
+300	-11.5	0
+301	-11.5	0
+302	-11.5	0
+303	-11.5	0
+304	-11.5	0
+305	-11.5	0
+306	-11.5	0
+307	-11.5	0
+308	-11.5	0
+309	-11.5	0
+310	-11.5	0
+311	-11.5	0
+312	-11.5	0
+313	-11.5	0
+314	-11.5	0
+315	-11.5	0
+316	-11.5	0
+317	-11.5	0
+318	-11.5	0
+319	-11.5	0
+320	-11.5	0
+321	-11.5	0
+322	-11.5	0
+323	-11.5	0
+324	-11.5	0
+325	-11.5	0
+326	-11.5	0
+327	-11.5	0
+328	-11.5	0
+329	-11.5	0
+330	-11.5	0
+331	-11.5	0
+332	-11.5	0
+333	-11.5	0
+334	-11.5	0
+335	-11.5	0
+336	-11.5	0
+337	-11.5	0
+338	-11.5	0
+339	-11.5	0
+340	-11.5	0
+341	-11.5	0
+342	-11.5	0
+343	-11.5	0
+344	-11.5	0
+345	-11.5	0
+346	-11.5	0
+347	-11.5	0
+348	-11.5	0
+349	-11.5	0
+350	-11.5	0
+351	-11.5	0
+352	-11.5	0
+353	-11.5	0
+354	-11.5	0
+355	-11.5	0
+356	-11.5	0
+357	-11.5	0
+358	-11.5	0
+359	-11.5	0
+360	-11.5	0
+0	-11	0
+1	-11	0
+2	-11	0
+3	-11	0
+4	-11	0
+5	-11	0
+6	-11	0
+7	-11	0
+8	-11	0
+9	-11	0
+10	-11	0
+11	-11	0
+12	-11	0
+13	-11	0
+14	-11	0
+15	-11	0
+16	-11	0
+17	-11	0
+18	-11	0
+19	-11	0
+20	-11	0
+21	-11	0
+22	-11	0
+23	-11	0
+24	-11	0
+25	-11	0
+26	-11	0
+27	-11	0
+28	-11	0
+29	-11	0
+30	-11	0
+31	-11	0
+32	-11	0
+33	-11	0
+34	-11	0
+35	-11	0
+36	-11	0
+37	-11	0
+38	-11	0
+39	-11	0
+40	-11	0
+41	-11	0
+42	-11	0
+43	-11	0
+44	-11	0
+45	-11	0
+46	-11	0
+47	-11	0
+48	-11	0
+49	-11	0
+50	-11	0
+51	-11	0
+52	-11	0
+53	-11	0
+54	-11	0
+55	-11	0
+56	-11	0
+57	-11	0
+58	-11	0
+59	-11	0
+60	-11	0
+61	-11	0
+62	-11	0
+63	-11	0
+64	-11	0
+65	-11	0
+66	-11	0
+67	-11	0
+68	-11	0
+69	-11	0
+70	-11	0
+71	-11	0
+72	-11	0
+73	-11	0
+74	-11	0
+75	-11	0
+76	-11	0
+77	-11	0
+78	-11	0
+79	-11	0
+80	-11	0
+81	-11	0
+82	-11	0
+83	-11	0
+84	-11	0
+85	-11	0
+86	-11	0
+87	-11	0
+88	-11	0
+89	-11	0
+90	-11	0
+91	-11	0
+92	-11	0
+93	-11	0
+94	-11	0
+95	-11	0
+96	-11	0
+97	-11	0
+98	-11	0
+99	-11	0
+100	-11	0
+101	-11	0
+102	-11	0
+103	-11	0
+104	-11	0
+105	-11	0
+106	-11	0
+107	-11	0
+108	-11	0
+109	-11	0
+110	-11	0
+111	-11	0
+112	-11	0
+113	-11	0
+114	-11	0
+115	-11	0
+116	-11	0
+117	-11	0
+118	-11	0
+119	-11	0
+120	-11	0
+121	-11	0
+122	-11	0
+123	-11	0
+124	-11	0
+125	-11	0
+126	-11	0
+127	-11	0
+128	-11	0
+129	-11	0
+130	-11	0
+131	-11	0
+132	-11	0
+133	-11	0
+134	-11	0
+135	-11	0
+136	-11	0
+137	-11	0
+138	-11	0
+139	-11	0
+140	-11	0
+141	-11	0
+142	-11	0
+143	-11	0
+144	-11	0
+145	-11	0
+146	-11	0
+147	-11	0
+148	-11	0
+149	-11	0
+150	-11	0
+151	-11	0
+152	-11	0
+153	-11	0
+154	-11	0
+155	-11	0
+156	-11	0
+157	-11	0
+158	-11	0
+159	-11	0
+160	-11	0
+161	-11	0
+162	-11	0
+163	-11	0
+164	-11	0
+165	-11	0
+166	-11	0
+167	-11	0
+168	-11	0
+169	-11	0
+170	-11	0
+171	-11	0
+172	-11	0
+173	-11	0
+174	-11	0
+175	-11	0
+176	-11	0
+177	-11	0
+178	-11	0
+179	-11	0
+180	-11	0
+181	-11	0
+182	-11	0
+183	-11	0
+184	-11	0
+185	-11	0
+186	-11	0
+187	-11	0
+188	-11	0
+189	-11	0
+190	-11	0
+191	-11	0
+192	-11	0
+193	-11	0
+194	-11	0
+195	-11	0
+196	-11	0
+197	-11	0
+198	-11	0
+199	-11	0
+200	-11	0
+201	-11	0
+202	-11	0
+203	-11	0
+204	-11	0
+205	-11	0
+206	-11	0
+207	-11	0
+208	-11	0
+209	-11	0
+210	-11	0
+211	-11	0
+212	-11	0
+213	-11	0
+214	-11	0
+215	-11	0
+216	-11	0
+217	-11	0
+218	-11	0
+219	-11	0
+220	-11	0
+221	-11	0
+222	-11	0
+223	-11	0
+224	-11	0
+225	-11	0
+226	-11	0
+227	-11	0
+228	-11	0
+229	-11	0
+230	-11	0
+231	-11	0
+232	-11	0
+233	-11	0
+234	-11	0
+235	-11	0
+236	-11	0
+237	-11	0
+238	-11	0
+239	-11	0
+240	-11	0
+241	-11	0
+242	-11	0
+243	-11	0
+244	-11	0
+245	-11	0
+246	-11	0
+247	-11	0
+248	-11	0
+249	-11	0
+250	-11	0
+251	-11	0
+252	-11	0
+253	-11	0
+254	-11	0
+255	-11	0
+256	-11	0
+257	-11	0
+258	-11	0
+259	-11	0
+260	-11	0
+261	-11	0
+262	-11	0
+263	-11	0
+264	-11	0
+265	-11	0
+266	-11	0
+267	-11	0
+268	-11	0
+269	-11	0
+270	-11	0
+271	-11	0
+272	-11	0
+273	-11	0
+274	-11	0
+275	-11	0
+276	-11	0
+277	-11	0
+278	-11	0
+279	-11	0
+280	-11	0
+281	-11	0
+282	-11	0
+283	-11	0
+284	-11	0
+285	-11	0
+286	-11	0
+287	-11	0
+288	-11	0
+289	-11	0
+290	-11	0
+291	-11	0
+292	-11	0
+293	-11	0
+294	-11	0
+295	-11	0
+296	-11	0
+297	-11	0
+298	-11	0
+299	-11	0
+300	-11	0
+301	-11	0
+302	-11	0
+303	-11	0
+304	-11	0
+305	-11	0
+306	-11	0
+307	-11	0
+308	-11	0
+309	-11	0
+310	-11	0
+311	-11	0
+312	-11	0
+313	-11	0
+314	-11	0
+315	-11	0
+316	-11	0
+317	-11	0
+318	-11	0
+319	-11	0
+320	-11	0
+321	-11	0
+322	-11	0
+323	-11	0
+324	-11	0
+325	-11	0
+326	-11	0
+327	-11	0
+328	-11	0
+329	-11	0
+330	-11	0
+331	-11	0
+332	-11	0
+333	-11	0
+334	-11	0
+335	-11	0
+336	-11	0
+337	-11	0
+338	-11	0
+339	-11	0
+340	-11	0
+341	-11	0
+342	-11	0
+343	-11	0
+344	-11	0
+345	-11	0
+346	-11	0
+347	-11	0
+348	-11	0
+349	-11	0
+350	-11	0
+351	-11	0
+352	-11	0
+353	-11	0
+354	-11	0
+355	-11	0
+356	-11	0
+357	-11	0
+358	-11	0
+359	-11	0
+360	-11	0
+0	-10.5	0
+1	-10.5	0
+2	-10.5	0
+3	-10.5	0
+4	-10.5	0
+5	-10.5	0
+6	-10.5	0
+7	-10.5	0
+8	-10.5	0
+9	-10.5	0
+10	-10.5	0
+11	-10.5	0
+12	-10.5	0
+13	-10.5	0
+14	-10.5	0
+15	-10.5	0
+16	-10.5	0
+17	-10.5	0
+18	-10.5	0
+19	-10.5	0
+20	-10.5	0
+21	-10.5	0
+22	-10.5	0
+23	-10.5	0
+24	-10.5	0
+25	-10.5	0
+26	-10.5	0
+27	-10.5	0
+28	-10.5	0
+29	-10.5	0
+30	-10.5	0
+31	-10.5	0
+32	-10.5	0
+33	-10.5	0
+34	-10.5	0
+35	-10.5	0
+36	-10.5	0
+37	-10.5	0
+38	-10.5	0
+39	-10.5	0
+40	-10.5	0
+41	-10.5	0
+42	-10.5	0
+43	-10.5	0
+44	-10.5	0
+45	-10.5	0
+46	-10.5	0
+47	-10.5	0
+48	-10.5	0
+49	-10.5	0
+50	-10.5	0
+51	-10.5	0
+52	-10.5	0
+53	-10.5	0
+54	-10.5	0
+55	-10.5	0
+56	-10.5	0
+57	-10.5	0
+58	-10.5	0
+59	-10.5	0
+60	-10.5	0
+61	-10.5	0
+62	-10.5	0
+63	-10.5	0
+64	-10.5	0
+65	-10.5	0
+66	-10.5	0
+67	-10.5	0
+68	-10.5	0
+69	-10.5	0
+70	-10.5	0
+71	-10.5	0
+72	-10.5	0
+73	-10.5	0
+74	-10.5	0
+75	-10.5	0
+76	-10.5	0
+77	-10.5	0
+78	-10.5	0
+79	-10.5	0
+80	-10.5	0
+81	-10.5	0
+82	-10.5	0
+83	-10.5	0
+84	-10.5	0
+85	-10.5	0
+86	-10.5	0
+87	-10.5	0
+88	-10.5	0
+89	-10.5	0
+90	-10.5	0
+91	-10.5	0
+92	-10.5	0
+93	-10.5	0
+94	-10.5	0
+95	-10.5	0
+96	-10.5	0
+97	-10.5	0
+98	-10.5	0
+99	-10.5	0
+100	-10.5	0
+101	-10.5	0
+102	-10.5	0
+103	-10.5	0
+104	-10.5	0
+105	-10.5	0
+106	-10.5	0
+107	-10.5	0
+108	-10.5	0
+109	-10.5	0
+110	-10.5	0
+111	-10.5	0
+112	-10.5	0
+113	-10.5	0
+114	-10.5	0
+115	-10.5	0
+116	-10.5	0
+117	-10.5	0
+118	-10.5	0
+119	-10.5	0
+120	-10.5	0
+121	-10.5	0
+122	-10.5	0
+123	-10.5	0
+124	-10.5	0
+125	-10.5	0
+126	-10.5	0
+127	-10.5	0
+128	-10.5	0
+129	-10.5	0
+130	-10.5	0
+131	-10.5	0
+132	-10.5	0
+133	-10.5	0
+134	-10.5	0
+135	-10.5	0
+136	-10.5	0
+137	-10.5	0
+138	-10.5	0
+139	-10.5	0
+140	-10.5	0
+141	-10.5	0
+142	-10.5	0
+143	-10.5	0
+144	-10.5	0
+145	-10.5	0
+146	-10.5	0
+147	-10.5	0
+148	-10.5	0
+149	-10.5	0
+150	-10.5	0
+151	-10.5	0
+152	-10.5	0
+153	-10.5	0
+154	-10.5	0
+155	-10.5	0
+156	-10.5	0
+157	-10.5	0
+158	-10.5	0
+159	-10.5	0
+160	-10.5	0
+161	-10.5	0
+162	-10.5	0
+163	-10.5	0
+164	-10.5	0
+165	-10.5	0
+166	-10.5	0
+167	-10.5	0
+168	-10.5	0
+169	-10.5	0
+170	-10.5	0
+171	-10.5	0
+172	-10.5	0
+173	-10.5	0
+174	-10.5	0
+175	-10.5	0
+176	-10.5	0
+177	-10.5	0
+178	-10.5	0
+179	-10.5	0
+180	-10.5	0
+181	-10.5	0
+182	-10.5	0
+183	-10.5	0
+184	-10.5	0
+185	-10.5	0
+186	-10.5	0
+187	-10.5	0
+188	-10.5	0
+189	-10.5	0
+190	-10.5	0
+191	-10.5	0
+192	-10.5	0
+193	-10.5	0
+194	-10.5	0
+195	-10.5	0
+196	-10.5	0
+197	-10.5	0
+198	-10.5	0
+199	-10.5	0
+200	-10.5	0
+201	-10.5	0
+202	-10.5	0
+203	-10.5	0
+204	-10.5	0
+205	-10.5	0
+206	-10.5	0
+207	-10.5	0
+208	-10.5	0
+209	-10.5	0
+210	-10.5	0
+211	-10.5	0
+212	-10.5	0
+213	-10.5	0
+214	-10.5	0
+215	-10.5	0
+216	-10.5	0
+217	-10.5	0
+218	-10.5	0
+219	-10.5	0
+220	-10.5	0
+221	-10.5	0
+222	-10.5	0
+223	-10.5	0
+224	-10.5	0
+225	-10.5	0
+226	-10.5	0
+227	-10.5	0
+228	-10.5	0
+229	-10.5	0
+230	-10.5	0
+231	-10.5	0
+232	-10.5	0
+233	-10.5	0
+234	-10.5	0
+235	-10.5	0
+236	-10.5	0
+237	-10.5	0
+238	-10.5	0
+239	-10.5	0
+240	-10.5	0
+241	-10.5	0
+242	-10.5	0
+243	-10.5	0
+244	-10.5	0
+245	-10.5	0
+246	-10.5	0
+247	-10.5	0
+248	-10.5	0
+249	-10.5	0
+250	-10.5	0
+251	-10.5	0
+252	-10.5	0
+253	-10.5	0
+254	-10.5	0
+255	-10.5	0
+256	-10.5	0
+257	-10.5	0
+258	-10.5	0
+259	-10.5	0
+260	-10.5	0
+261	-10.5	0
+262	-10.5	0
+263	-10.5	0
+264	-10.5	0
+265	-10.5	0
+266	-10.5	0
+267	-10.5	0
+268	-10.5	0
+269	-10.5	0
+270	-10.5	0
+271	-10.5	0
+272	-10.5	0
+273	-10.5	0
+274	-10.5	0
+275	-10.5	0
+276	-10.5	0
+277	-10.5	0
+278	-10.5	0
+279	-10.5	0
+280	-10.5	0
+281	-10.5	0
+282	-10.5	0
+283	-10.5	0
+284	-10.5	0
+285	-10.5	0
+286	-10.5	0
+287	-10.5	0
+288	-10.5	0
+289	-10.5	0
+290	-10.5	0
+291	-10.5	0
+292	-10.5	0
+293	-10.5	0
+294	-10.5	0
+295	-10.5	0
+296	-10.5	0
+297	-10.5	0
+298	-10.5	0
+299	-10.5	0
+300	-10.5	0
+301	-10.5	0
+302	-10.5	0
+303	-10.5	0
+304	-10.5	0
+305	-10.5	0
+306	-10.5	0
+307	-10.5	0
+308	-10.5	0
+309	-10.5	0
+310	-10.5	0
+311	-10.5	0
+312	-10.5	0
+313	-10.5	0
+314	-10.5	0
+315	-10.5	0
+316	-10.5	0
+317	-10.5	0
+318	-10.5	0
+319	-10.5	0
+320	-10.5	0
+321	-10.5	0
+322	-10.5	0
+323	-10.5	0
+324	-10.5	0
+325	-10.5	0
+326	-10.5	0
+327	-10.5	0
+328	-10.5	0
+329	-10.5	0
+330	-10.5	0
+331	-10.5	0
+332	-10.5	0
+333	-10.5	0
+334	-10.5	0
+335	-10.5	0
+336	-10.5	0
+337	-10.5	0
+338	-10.5	0
+339	-10.5	0
+340	-10.5	0
+341	-10.5	0
+342	-10.5	0
+343	-10.5	0
+344	-10.5	0
+345	-10.5	0
+346	-10.5	0
+347	-10.5	0
+348	-10.5	0
+349	-10.5	0
+350	-10.5	0
+351	-10.5	0
+352	-10.5	0
+353	-10.5	0
+354	-10.5	0
+355	-10.5	0
+356	-10.5	0
+357	-10.5	0
+358	-10.5	0
+359	-10.5	0
+360	-10.5	0
+0	-10	0
+1	-10	0
+2	-10	0
+3	-10	0
+4	-10	0
+5	-10	0
+6	-10	0
+7	-10	0
+8	-10	0
+9	-10	0
+10	-10	0
+11	-10	0
+12	-10	0
+13	-10	0
+14	-10	0
+15	-10	0
+16	-10	0
+17	-10	0
+18	-10	0
+19	-10	0
+20	-10	0
+21	-10	0
+22	-10	0
+23	-10	0
+24	-10	0
+25	-10	0
+26	-10	0
+27	-10	0
+28	-10	0
+29	-10	0
+30	-10	0
+31	-10	0
+32	-10	0
+33	-10	0
+34	-10	0
+35	-10	0
+36	-10	0
+37	-10	0
+38	-10	0
+39	-10	0
+40	-10	0
+41	-10	0
+42	-10	0
+43	-10	0
+44	-10	0
+45	-10	0
+46	-10	0
+47	-10	0
+48	-10	0
+49	-10	0
+50	-10	0
+51	-10	0
+52	-10	0
+53	-10	0
+54	-10	0
+55	-10	0
+56	-10	0
+57	-10	0
+58	-10	0
+59	-10	0
+60	-10	0
+61	-10	0
+62	-10	0
+63	-10	0
+64	-10	0
+65	-10	0
+66	-10	0
+67	-10	0
+68	-10	0
+69	-10	0
+70	-10	0
+71	-10	0
+72	-10	0
+73	-10	0
+74	-10	0
+75	-10	0
+76	-10	0
+77	-10	0
+78	-10	0
+79	-10	0
+80	-10	0
+81	-10	0
+82	-10	0
+83	-10	0
+84	-10	0
+85	-10	0
+86	-10	0
+87	-10	0
+88	-10	0
+89	-10	0
+90	-10	0
+91	-10	0
+92	-10	0
+93	-10	0
+94	-10	0
+95	-10	0
+96	-10	0
+97	-10	0
+98	-10	0
+99	-10	0
+100	-10	0
+101	-10	0
+102	-10	0
+103	-10	0
+104	-10	0
+105	-10	0
+106	-10	0
+107	-10	0
+108	-10	0
+109	-10	0
+110	-10	0
+111	-10	0
+112	-10	0
+113	-10	0
+114	-10	0
+115	-10	0
+116	-10	0
+117	-10	0
+118	-10	0
+119	-10	0
+120	-10	0
+121	-10	0
+122	-10	0
+123	-10	0
+124	-10	0
+125	-10	0
+126	-10	0
+127	-10	0
+128	-10	0
+129	-10	0
+130	-10	0
+131	-10	0
+132	-10	0
+133	-10	0
+134	-10	0
+135	-10	0
+136	-10	0
+137	-10	0
+138	-10	0
+139	-10	0
+140	-10	0
+141	-10	0
+142	-10	0
+143	-10	0
+144	-10	0
+145	-10	0
+146	-10	0
+147	-10	0
+148	-10	0
+149	-10	0
+150	-10	0
+151	-10	0
+152	-10	0
+153	-10	0
+154	-10	0
+155	-10	0
+156	-10	0
+157	-10	0
+158	-10	0
+159	-10	0
+160	-10	0
+161	-10	0
+162	-10	0
+163	-10	0
+164	-10	0
+165	-10	0
+166	-10	0
+167	-10	0
+168	-10	0
+169	-10	0
+170	-10	0
+171	-10	0
+172	-10	0
+173	-10	0
+174	-10	0
+175	-10	0
+176	-10	0
+177	-10	0
+178	-10	0
+179	-10	0
+180	-10	0
+181	-10	0
+182	-10	0
+183	-10	0
+184	-10	0
+185	-10	0
+186	-10	0
+187	-10	0
+188	-10	0
+189	-10	0
+190	-10	0
+191	-10	0
+192	-10	0
+193	-10	0
+194	-10	0
+195	-10	0
+196	-10	0
+197	-10	0
+198	-10	0
+199	-10	0
+200	-10	0
+201	-10	0
+202	-10	0
+203	-10	0
+204	-10	0
+205	-10	0
+206	-10	0
+207	-10	0
+208	-10	0
+209	-10	0
+210	-10	0
+211	-10	0
+212	-10	0
+213	-10	0
+214	-10	0
+215	-10	0
+216	-10	0
+217	-10	0
+218	-10	0
+219	-10	0
+220	-10	0
+221	-10	0
+222	-10	0
+223	-10	0
+224	-10	0
+225	-10	0
+226	-10	0
+227	-10	0
+228	-10	0
+229	-10	0
+230	-10	0
+231	-10	0
+232	-10	0
+233	-10	0
+234	-10	0
+235	-10	0
+236	-10	0
+237	-10	0
+238	-10	0
+239	-10	0
+240	-10	0
+241	-10	0
+242	-10	0
+243	-10	0
+244	-10	0
+245	-10	0
+246	-10	0
+247	-10	0
+248	-10	0
+249	-10	0
+250	-10	0
+251	-10	0
+252	-10	0
+253	-10	0
+254	-10	0
+255	-10	0
+256	-10	0
+257	-10	0
+258	-10	0
+259	-10	0
+260	-10	0
+261	-10	0
+262	-10	0
+263	-10	0
+264	-10	0
+265	-10	0
+266	-10	0
+267	-10	0
+268	-10	0
+269	-10	0
+270	-10	0
+271	-10	0
+272	-10	0
+273	-10	0
+274	-10	0
+275	-10	0
+276	-10	0
+277	-10	0
+278	-10	0
+279	-10	0
+280	-10	0
+281	-10	0
+282	-10	0
+283	-10	0
+284	-10	0
+285	-10	0
+286	-10	0
+287	-10	0
+288	-10	0
+289	-10	0
+290	-10	0
+291	-10	0
+292	-10	0
+293	-10	0
+294	-10	0
+295	-10	0
+296	-10	0
+297	-10	0
+298	-10	0
+299	-10	0
+300	-10	0
+301	-10	0
+302	-10	0
+303	-10	0
+304	-10	0
+305	-10	0
+306	-10	0
+307	-10	0
+308	-10	0
+309	-10	0
+310	-10	0
+311	-10	0
+312	-10	0
+313	-10	0
+314	-10	0
+315	-10	0
+316	-10	0
+317	-10	0
+318	-10	0
+319	-10	0
+320	-10	0
+321	-10	0
+322	-10	0
+323	-10	0
+324	-10	0
+325	-10	0
+326	-10	0
+327	-10	0
+328	-10	0
+329	-10	0
+330	-10	0
+331	-10	0
+332	-10	0
+333	-10	0
+334	-10	0
+335	-10	0
+336	-10	0
+337	-10	0
+338	-10	0
+339	-10	0
+340	-10	0
+341	-10	0
+342	-10	0
+343	-10	0
+344	-10	0
+345	-10	0
+346	-10	0
+347	-10	0
+348	-10	0
+349	-10	0
+350	-10	0
+351	-10	0
+352	-10	0
+353	-10	0
+354	-10	0
+355	-10	0
+356	-10	0
+357	-10	0
+358	-10	0
+359	-10	0
+360	-10	0
+0	-9.5	0
+1	-9.5	0
+2	-9.5	0
+3	-9.5	0
+4	-9.5	0
+5	-9.5	0
+6	-9.5	0
+7	-9.5	0
+8	-9.5	0
+9	-9.5	0
+10	-9.5	0
+11	-9.5	0
+12	-9.5	0
+13	-9.5	0
+14	-9.5	0
+15	-9.5	0
+16	-9.5	0
+17	-9.5	0
+18	-9.5	0
+19	-9.5	0
+20	-9.5	0
+21	-9.5	0
+22	-9.5	0
+23	-9.5	0
+24	-9.5	0
+25	-9.5	0
+26	-9.5	0
+27	-9.5	0
+28	-9.5	0
+29	-9.5	0
+30	-9.5	0
+31	-9.5	0
+32	-9.5	0
+33	-9.5	0
+34	-9.5	0
+35	-9.5	0
+36	-9.5	0
+37	-9.5	0
+38	-9.5	0
+39	-9.5	0
+40	-9.5	0
+41	-9.5	0
+42	-9.5	0
+43	-9.5	0
+44	-9.5	0
+45	-9.5	0
+46	-9.5	0
+47	-9.5	0
+48	-9.5	0
+49	-9.5	0
+50	-9.5	0
+51	-9.5	0
+52	-9.5	0
+53	-9.5	0
+54	-9.5	0
+55	-9.5	0
+56	-9.5	0
+57	-9.5	0
+58	-9.5	0
+59	-9.5	0
+60	-9.5	0
+61	-9.5	0
+62	-9.5	0
+63	-9.5	0
+64	-9.5	0
+65	-9.5	0
+66	-9.5	0
+67	-9.5	0
+68	-9.5	0
+69	-9.5	0
+70	-9.5	0
+71	-9.5	0
+72	-9.5	0
+73	-9.5	0
+74	-9.5	0
+75	-9.5	0
+76	-9.5	0
+77	-9.5	0
+78	-9.5	0
+79	-9.5	0
+80	-9.5	0
+81	-9.5	0
+82	-9.5	0
+83	-9.5	0
+84	-9.5	0
+85	-9.5	0
+86	-9.5	0
+87	-9.5	0
+88	-9.5	0
+89	-9.5	0
+90	-9.5	0
+91	-9.5	0
+92	-9.5	0
+93	-9.5	0
+94	-9.5	0
+95	-9.5	0
+96	-9.5	0
+97	-9.5	0
+98	-9.5	0
+99	-9.5	0
+100	-9.5	0
+101	-9.5	0
+102	-9.5	0
+103	-9.5	0
+104	-9.5	0
+105	-9.5	0
+106	-9.5	0
+107	-9.5	0
+108	-9.5	0
+109	-9.5	0
+110	-9.5	0
+111	-9.5	0
+112	-9.5	0
+113	-9.5	0
+114	-9.5	0
+115	-9.5	0
+116	-9.5	0
+117	-9.5	0
+118	-9.5	0
+119	-9.5	0
+120	-9.5	0
+121	-9.5	0
+122	-9.5	0
+123	-9.5	0
+124	-9.5	0
+125	-9.5	0
+126	-9.5	0
+127	-9.5	0
+128	-9.5	0
+129	-9.5	0
+130	-9.5	0
+131	-9.5	0
+132	-9.5	0
+133	-9.5	0
+134	-9.5	0
+135	-9.5	0
+136	-9.5	0
+137	-9.5	0
+138	-9.5	0
+139	-9.5	0
+140	-9.5	0
+141	-9.5	0
+142	-9.5	0
+143	-9.5	0
+144	-9.5	0
+145	-9.5	0
+146	-9.5	0
+147	-9.5	0
+148	-9.5	0
+149	-9.5	0
+150	-9.5	0
+151	-9.5	0
+152	-9.5	0
+153	-9.5	0
+154	-9.5	0
+155	-9.5	0
+156	-9.5	0
+157	-9.5	0
+158	-9.5	0
+159	-9.5	0
+160	-9.5	0
+161	-9.5	0
+162	-9.5	0
+163	-9.5	0
+164	-9.5	0
+165	-9.5	0
+166	-9.5	0
+167	-9.5	0
+168	-9.5	0
+169	-9.5	0
+170	-9.5	0
+171	-9.5	0
+172	-9.5	0
+173	-9.5	0
+174	-9.5	0
+175	-9.5	0
+176	-9.5	0
+177	-9.5	0
+178	-9.5	0
+179	-9.5	0
+180	-9.5	0
+181	-9.5	0
+182	-9.5	0
+183	-9.5	0
+184	-9.5	0
+185	-9.5	0
+186	-9.5	0
+187	-9.5	0
+188	-9.5	0
+189	-9.5	0
+190	-9.5	0
+191	-9.5	0
+192	-9.5	0
+193	-9.5	0
+194	-9.5	0
+195	-9.5	0
+196	-9.5	0
+197	-9.5	0
+198	-9.5	0
+199	-9.5	0
+200	-9.5	0
+201	-9.5	0
+202	-9.5	0
+203	-9.5	0
+204	-9.5	0
+205	-9.5	0
+206	-9.5	0
+207	-9.5	0
+208	-9.5	0
+209	-9.5	0
+210	-9.5	0
+211	-9.5	0
+212	-9.5	0
+213	-9.5	0
+214	-9.5	0
+215	-9.5	0
+216	-9.5	0
+217	-9.5	0
+218	-9.5	0
+219	-9.5	0
+220	-9.5	0
+221	-9.5	0
+222	-9.5	0
+223	-9.5	0
+224	-9.5	0
+225	-9.5	0
+226	-9.5	0
+227	-9.5	0
+228	-9.5	0
+229	-9.5	0
+230	-9.5	0
+231	-9.5	0
+232	-9.5	0
+233	-9.5	0
+234	-9.5	0
+235	-9.5	0
+236	-9.5	0
+237	-9.5	0
+238	-9.5	0
+239	-9.5	0
+240	-9.5	0
+241	-9.5	0
+242	-9.5	0
+243	-9.5	0
+244	-9.5	0
+245	-9.5	0
+246	-9.5	0
+247	-9.5	0
+248	-9.5	0
+249	-9.5	0
+250	-9.5	0
+251	-9.5	0
+252	-9.5	0
+253	-9.5	0
+254	-9.5	0
+255	-9.5	0
+256	-9.5	0
+257	-9.5	0
+258	-9.5	0
+259	-9.5	0
+260	-9.5	0
+261	-9.5	0
+262	-9.5	0
+263	-9.5	0
+264	-9.5	0
+265	-9.5	0
+266	-9.5	0
+267	-9.5	0
+268	-9.5	0
+269	-9.5	0
+270	-9.5	0
+271	-9.5	0
+272	-9.5	0
+273	-9.5	0
+274	-9.5	0
+275	-9.5	0
+276	-9.5	0
+277	-9.5	0
+278	-9.5	0
+279	-9.5	0
+280	-9.5	0
+281	-9.5	0
+282	-9.5	0
+283	-9.5	0
+284	-9.5	0
+285	-9.5	0
+286	-9.5	0
+287	-9.5	0
+288	-9.5	0
+289	-9.5	0
+290	-9.5	0
+291	-9.5	0
+292	-9.5	0
+293	-9.5	0
+294	-9.5	0
+295	-9.5	0
+296	-9.5	0
+297	-9.5	0
+298	-9.5	0
+299	-9.5	0
+300	-9.5	0
+301	-9.5	0
+302	-9.5	0
+303	-9.5	0
+304	-9.5	0
+305	-9.5	0
+306	-9.5	0
+307	-9.5	0
+308	-9.5	0
+309	-9.5	0
+310	-9.5	0
+311	-9.5	0
+312	-9.5	0
+313	-9.5	0
+314	-9.5	0
+315	-9.5	0
+316	-9.5	0
+317	-9.5	0
+318	-9.5	0
+319	-9.5	0
+320	-9.5	0
+321	-9.5	0
+322	-9.5	0
+323	-9.5	0
+324	-9.5	0
+325	-9.5	0
+326	-9.5	0
+327	-9.5	0
+328	-9.5	0
+329	-9.5	0
+330	-9.5	0
+331	-9.5	0
+332	-9.5	0
+333	-9.5	0
+334	-9.5	0
+335	-9.5	0
+336	-9.5	0
+337	-9.5	0
+338	-9.5	0
+339	-9.5	0
+340	-9.5	0
+341	-9.5	0
+342	-9.5	0
+343	-9.5	0
+344	-9.5	0
+345	-9.5	0
+346	-9.5	0
+347	-9.5	0
+348	-9.5	0
+349	-9.5	0
+350	-9.5	0
+351	-9.5	0
+352	-9.5	0
+353	-9.5	0
+354	-9.5	0
+355	-9.5	0
+356	-9.5	0
+357	-9.5	0
+358	-9.5	0
+359	-9.5	0
+360	-9.5	0
+0	-9	0
+1	-9	0
+2	-9	0
+3	-9	0
+4	-9	0
+5	-9	0
+6	-9	0
+7	-9	0
+8	-9	0
+9	-9	0
+10	-9	0
+11	-9	0
+12	-9	0
+13	-9	0
+14	-9	0
+15	-9	0
+16	-9	0
+17	-9	0
+18	-9	0
+19	-9	0
+20	-9	0
+21	-9	0
+22	-9	0
+23	-9	0
+24	-9	0
+25	-9	0
+26	-9	0
+27	-9	0
+28	-9	0
+29	-9	0
+30	-9	0
+31	-9	0
+32	-9	0
+33	-9	0
+34	-9	0
+35	-9	0
+36	-9	0
+37	-9	0
+38	-9	0
+39	-9	0
+40	-9	0
+41	-9	0
+42	-9	0
+43	-9	0
+44	-9	0
+45	-9	0
+46	-9	0
+47	-9	0
+48	-9	0
+49	-9	0
+50	-9	0
+51	-9	0
+52	-9	0
+53	-9	0
+54	-9	0
+55	-9	0
+56	-9	0
+57	-9	0
+58	-9	0
+59	-9	0
+60	-9	0
+61	-9	0
+62	-9	0
+63	-9	0
+64	-9	0
+65	-9	0
+66	-9	0
+67	-9	0
+68	-9	0
+69	-9	0
+70	-9	0
+71	-9	0
+72	-9	0
+73	-9	0
+74	-9	0
+75	-9	0
+76	-9	0
+77	-9	0
+78	-9	0
+79	-9	0
+80	-9	0
+81	-9	0
+82	-9	0
+83	-9	0
+84	-9	0
+85	-9	0
+86	-9	0
+87	-9	0
+88	-9	0
+89	-9	0
+90	-9	0
+91	-9	0
+92	-9	0
+93	-9	0
+94	-9	0
+95	-9	0
+96	-9	0
+97	-9	0
+98	-9	0
+99	-9	0
+100	-9	0
+101	-9	0
+102	-9	0
+103	-9	0
+104	-9	0
+105	-9	0
+106	-9	0
+107	-9	0
+108	-9	0
+109	-9	0
+110	-9	0
+111	-9	0
+112	-9	0
+113	-9	0
+114	-9	0
+115	-9	0
+116	-9	0
+117	-9	0
+118	-9	0
+119	-9	0
+120	-9	0
+121	-9	0
+122	-9	0
+123	-9	0
+124	-9	0
+125	-9	0
+126	-9	0
+127	-9	0
+128	-9	0
+129	-9	0
+130	-9	0
+131	-9	0
+132	-9	0
+133	-9	0
+134	-9	0
+135	-9	0
+136	-9	0
+137	-9	0
+138	-9	0
+139	-9	0
+140	-9	0
+141	-9	0
+142	-9	0
+143	-9	0
+144	-9	0
+145	-9	0
+146	-9	0
+147	-9	0
+148	-9	0
+149	-9	0
+150	-9	0
+151	-9	0
+152	-9	0
+153	-9	0
+154	-9	0
+155	-9	0
+156	-9	0
+157	-9	0
+158	-9	0
+159	-9	0
+160	-9	0
+161	-9	0
+162	-9	0
+163	-9	0
+164	-9	0
+165	-9	0
+166	-9	0
+167	-9	0
+168	-9	0
+169	-9	0
+170	-9	0
+171	-9	0
+172	-9	0
+173	-9	0
+174	-9	0
+175	-9	0
+176	-9	0
+177	-9	0
+178	-9	0
+179	-9	0
+180	-9	0
+181	-9	0
+182	-9	0
+183	-9	0
+184	-9	0
+185	-9	0
+186	-9	0
+187	-9	0
+188	-9	0
+189	-9	0
+190	-9	0
+191	-9	0
+192	-9	0
+193	-9	0
+194	-9	0
+195	-9	0
+196	-9	0
+197	-9	0
+198	-9	0
+199	-9	0
+200	-9	0
+201	-9	0
+202	-9	0
+203	-9	0
+204	-9	0
+205	-9	0
+206	-9	0
+207	-9	0
+208	-9	0
+209	-9	0
+210	-9	0
+211	-9	0
+212	-9	0
+213	-9	0
+214	-9	0
+215	-9	0
+216	-9	0
+217	-9	0
+218	-9	0
+219	-9	0
+220	-9	0
+221	-9	0
+222	-9	0
+223	-9	0
+224	-9	0
+225	-9	0
+226	-9	0
+227	-9	0
+228	-9	0
+229	-9	0
+230	-9	0
+231	-9	0
+232	-9	0
+233	-9	0
+234	-9	0
+235	-9	0
+236	-9	0
+237	-9	0
+238	-9	0
+239	-9	0
+240	-9	0
+241	-9	0
+242	-9	0
+243	-9	0
+244	-9	0
+245	-9	0
+246	-9	0
+247	-9	0
+248	-9	0
+249	-9	0
+250	-9	0
+251	-9	0
+252	-9	0
+253	-9	0
+254	-9	0
+255	-9	0
+256	-9	0
+257	-9	0
+258	-9	0
+259	-9	0
+260	-9	0
+261	-9	0
+262	-9	0
+263	-9	0
+264	-9	0
+265	-9	0
+266	-9	0
+267	-9	0
+268	-9	0
+269	-9	0
+270	-9	0
+271	-9	0
+272	-9	0
+273	-9	0
+274	-9	0
+275	-9	0
+276	-9	0
+277	-9	0
+278	-9	0
+279	-9	0
+280	-9	0
+281	-9	0
+282	-9	0
+283	-9	0
+284	-9	0
+285	-9	0
+286	-9	0
+287	-9	0
+288	-9	0
+289	-9	0
+290	-9	0
+291	-9	0
+292	-9	0
+293	-9	0
+294	-9	0
+295	-9	0
+296	-9	0
+297	-9	0
+298	-9	0
+299	-9	0
+300	-9	0
+301	-9	0
+302	-9	0
+303	-9	0
+304	-9	0
+305	-9	0
+306	-9	0
+307	-9	0
+308	-9	0
+309	-9	0
+310	-9	0
+311	-9	0
+312	-9	0
+313	-9	0
+314	-9	0
+315	-9	0
+316	-9	0
+317	-9	0
+318	-9	0
+319	-9	0
+320	-9	0
+321	-9	0
+322	-9	0
+323	-9	0
+324	-9	0
+325	-9	0
+326	-9	0
+327	-9	0
+328	-9	0
+329	-9	0
+330	-9	0
+331	-9	0
+332	-9	0
+333	-9	0
+334	-9	0
+335	-9	0
+336	-9	0
+337	-9	0
+338	-9	0
+339	-9	0
+340	-9	0
+341	-9	0
+342	-9	0
+343	-9	0
+344	-9	0
+345	-9	0
+346	-9	0
+347	-9	0
+348	-9	0
+349	-9	0
+350	-9	0
+351	-9	0
+352	-9	0
+353	-9	0
+354	-9	0
+355	-9	0
+356	-9	0
+357	-9	0
+358	-9	0
+359	-9	0
+360	-9	0
+0	-8.5	0
+1	-8.5	0
+2	-8.5	0
+3	-8.5	0
+4	-8.5	0
+5	-8.5	0
+6	-8.5	0
+7	-8.5	0
+8	-8.5	0
+9	-8.5	0
+10	-8.5	0
+11	-8.5	0
+12	-8.5	0
+13	-8.5	0
+14	-8.5	0
+15	-8.5	0
+16	-8.5	0
+17	-8.5	0
+18	-8.5	0
+19	-8.5	0
+20	-8.5	0
+21	-8.5	0
+22	-8.5	0
+23	-8.5	0
+24	-8.5	0
+25	-8.5	0
+26	-8.5	0
+27	-8.5	0
+28	-8.5	0
+29	-8.5	0
+30	-8.5	0
+31	-8.5	0
+32	-8.5	0
+33	-8.5	0
+34	-8.5	0
+35	-8.5	0
+36	-8.5	0
+37	-8.5	0
+38	-8.5	0
+39	-8.5	0
+40	-8.5	0
+41	-8.5	0
+42	-8.5	0
+43	-8.5	0
+44	-8.5	0
+45	-8.5	0
+46	-8.5	0
+47	-8.5	0
+48	-8.5	0
+49	-8.5	0
+50	-8.5	0
+51	-8.5	0
+52	-8.5	0
+53	-8.5	0
+54	-8.5	0
+55	-8.5	0
+56	-8.5	0
+57	-8.5	0
+58	-8.5	0
+59	-8.5	0
+60	-8.5	0
+61	-8.5	0
+62	-8.5	0
+63	-8.5	0
+64	-8.5	0
+65	-8.5	0
+66	-8.5	0
+67	-8.5	0
+68	-8.5	0
+69	-8.5	0
+70	-8.5	0
+71	-8.5	0
+72	-8.5	0
+73	-8.5	0
+74	-8.5	0
+75	-8.5	0
+76	-8.5	0
+77	-8.5	0
+78	-8.5	0
+79	-8.5	0
+80	-8.5	0
+81	-8.5	0
+82	-8.5	0
+83	-8.5	0
+84	-8.5	0
+85	-8.5	0
+86	-8.5	0
+87	-8.5	0
+88	-8.5	0
+89	-8.5	0
+90	-8.5	0
+91	-8.5	0
+92	-8.5	0
+93	-8.5	0
+94	-8.5	0
+95	-8.5	0
+96	-8.5	0
+97	-8.5	0
+98	-8.5	0
+99	-8.5	0
+100	-8.5	0
+101	-8.5	0
+102	-8.5	0
+103	-8.5	0
+104	-8.5	0
+105	-8.5	0
+106	-8.5	0
+107	-8.5	0
+108	-8.5	0
+109	-8.5	0
+110	-8.5	0
+111	-8.5	0
+112	-8.5	0
+113	-8.5	0
+114	-8.5	0
+115	-8.5	0
+116	-8.5	0
+117	-8.5	0
+118	-8.5	0
+119	-8.5	0
+120	-8.5	0
+121	-8.5	0
+122	-8.5	0
+123	-8.5	0
+124	-8.5	0
+125	-8.5	0
+126	-8.5	0
+127	-8.5	0
+128	-8.5	0
+129	-8.5	0
+130	-8.5	0
+131	-8.5	0
+132	-8.5	0
+133	-8.5	0
+134	-8.5	0
+135	-8.5	0
+136	-8.5	0
+137	-8.5	0
+138	-8.5	0
+139	-8.5	0
+140	-8.5	0
+141	-8.5	0
+142	-8.5	0
+143	-8.5	0
+144	-8.5	0
+145	-8.5	0
+146	-8.5	0
+147	-8.5	0
+148	-8.5	0
+149	-8.5	0
+150	-8.5	0
+151	-8.5	0
+152	-8.5	0
+153	-8.5	0
+154	-8.5	0
+155	-8.5	0
+156	-8.5	0
+157	-8.5	0
+158	-8.5	0
+159	-8.5	0
+160	-8.5	0
+161	-8.5	0
+162	-8.5	0
+163	-8.5	0
+164	-8.5	0
+165	-8.5	0
+166	-8.5	0
+167	-8.5	0
+168	-8.5	0
+169	-8.5	0
+170	-8.5	0
+171	-8.5	0
+172	-8.5	0
+173	-8.5	0
+174	-8.5	0
+175	-8.5	0
+176	-8.5	0
+177	-8.5	0
+178	-8.5	0
+179	-8.5	0
+180	-8.5	0
+181	-8.5	0
+182	-8.5	0
+183	-8.5	0
+184	-8.5	0
+185	-8.5	0
+186	-8.5	0
+187	-8.5	0
+188	-8.5	0
+189	-8.5	0
+190	-8.5	0
+191	-8.5	0
+192	-8.5	0
+193	-8.5	0
+194	-8.5	0
+195	-8.5	0
+196	-8.5	0
+197	-8.5	0
+198	-8.5	0
+199	-8.5	0
+200	-8.5	0
+201	-8.5	0
+202	-8.5	0
+203	-8.5	0
+204	-8.5	0
+205	-8.5	0
+206	-8.5	0
+207	-8.5	0
+208	-8.5	0
+209	-8.5	0
+210	-8.5	0
+211	-8.5	0
+212	-8.5	0
+213	-8.5	0
+214	-8.5	0
+215	-8.5	0
+216	-8.5	0
+217	-8.5	0
+218	-8.5	0
+219	-8.5	0
+220	-8.5	0
+221	-8.5	0
+222	-8.5	0
+223	-8.5	0
+224	-8.5	0
+225	-8.5	0
+226	-8.5	0
+227	-8.5	0
+228	-8.5	0
+229	-8.5	0
+230	-8.5	0
+231	-8.5	0
+232	-8.5	0
+233	-8.5	0
+234	-8.5	0
+235	-8.5	0
+236	-8.5	0
+237	-8.5	0
+238	-8.5	0
+239	-8.5	0
+240	-8.5	0
+241	-8.5	0
+242	-8.5	0
+243	-8.5	0
+244	-8.5	0
+245	-8.5	0
+246	-8.5	0
+247	-8.5	0
+248	-8.5	0
+249	-8.5	0
+250	-8.5	0
+251	-8.5	0
+252	-8.5	0
+253	-8.5	0
+254	-8.5	0
+255	-8.5	0
+256	-8.5	0
+257	-8.5	0
+258	-8.5	0
+259	-8.5	0
+260	-8.5	0
+261	-8.5	0
+262	-8.5	0
+263	-8.5	0
+264	-8.5	0
+265	-8.5	0
+266	-8.5	0
+267	-8.5	0
+268	-8.5	0
+269	-8.5	0
+270	-8.5	0
+271	-8.5	0
+272	-8.5	0
+273	-8.5	0
+274	-8.5	0
+275	-8.5	0
+276	-8.5	0
+277	-8.5	0
+278	-8.5	0
+279	-8.5	0
+280	-8.5	0
+281	-8.5	0
+282	-8.5	0
+283	-8.5	0
+284	-8.5	0
+285	-8.5	0
+286	-8.5	0
+287	-8.5	0
+288	-8.5	0
+289	-8.5	0
+290	-8.5	0
+291	-8.5	0
+292	-8.5	0
+293	-8.5	0
+294	-8.5	0
+295	-8.5	0
+296	-8.5	0
+297	-8.5	0
+298	-8.5	0
+299	-8.5	0
+300	-8.5	0
+301	-8.5	0
+302	-8.5	0
+303	-8.5	0
+304	-8.5	0
+305	-8.5	0
+306	-8.5	0
+307	-8.5	0
+308	-8.5	0
+309	-8.5	0
+310	-8.5	0
+311	-8.5	0
+312	-8.5	0
+313	-8.5	0
+314	-8.5	0
+315	-8.5	0
+316	-8.5	0
+317	-8.5	0
+318	-8.5	0
+319	-8.5	0
+320	-8.5	0
+321	-8.5	0
+322	-8.5	0
+323	-8.5	0
+324	-8.5	0
+325	-8.5	0
+326	-8.5	0
+327	-8.5	0
+328	-8.5	0
+329	-8.5	0
+330	-8.5	0
+331	-8.5	0
+332	-8.5	0
+333	-8.5	0
+334	-8.5	0
+335	-8.5	0
+336	-8.5	0
+337	-8.5	0
+338	-8.5	0
+339	-8.5	0
+340	-8.5	0
+341	-8.5	0
+342	-8.5	0
+343	-8.5	0
+344	-8.5	0
+345	-8.5	0
+346	-8.5	0
+347	-8.5	0
+348	-8.5	0
+349	-8.5	0
+350	-8.5	0
+351	-8.5	0
+352	-8.5	0
+353	-8.5	0
+354	-8.5	0
+355	-8.5	0
+356	-8.5	0
+357	-8.5	0
+358	-8.5	0
+359	-8.5	0
+360	-8.5	0
+0	-8	0
+1	-8	0
+2	-8	0
+3	-8	0
+4	-8	0
+5	-8	0
+6	-8	0
+7	-8	0
+8	-8	0
+9	-8	0
+10	-8	0
+11	-8	0
+12	-8	0
+13	-8	0
+14	-8	0
+15	-8	0
+16	-8	0
+17	-8	0
+18	-8	0
+19	-8	0
+20	-8	0
+21	-8	0
+22	-8	0
+23	-8	0
+24	-8	0
+25	-8	0
+26	-8	0
+27	-8	0
+28	-8	0
+29	-8	0
+30	-8	0
+31	-8	0
+32	-8	0
+33	-8	0
+34	-8	0
+35	-8	0
+36	-8	0
+37	-8	0
+38	-8	0
+39	-8	0
+40	-8	0
+41	-8	0
+42	-8	0
+43	-8	0
+44	-8	0
+45	-8	0
+46	-8	0
+47	-8	0
+48	-8	0
+49	-8	0
+50	-8	0
+51	-8	0
+52	-8	0
+53	-8	0
+54	-8	0
+55	-8	0
+56	-8	0
+57	-8	0
+58	-8	0
+59	-8	0
+60	-8	0
+61	-8	0
+62	-8	0
+63	-8	0
+64	-8	0
+65	-8	0
+66	-8	0
+67	-8	0
+68	-8	0
+69	-8	0
+70	-8	0
+71	-8	0
+72	-8	0
+73	-8	0
+74	-8	0
+75	-8	0
+76	-8	0
+77	-8	0
+78	-8	0
+79	-8	0
+80	-8	0
+81	-8	0
+82	-8	0
+83	-8	0
+84	-8	0
+85	-8	0
+86	-8	0
+87	-8	0
+88	-8	0
+89	-8	0
+90	-8	0
+91	-8	0
+92	-8	0
+93	-8	0
+94	-8	0
+95	-8	0
+96	-8	0
+97	-8	0
+98	-8	0
+99	-8	0
+100	-8	0
+101	-8	0
+102	-8	0
+103	-8	0
+104	-8	0
+105	-8	0
+106	-8	0
+107	-8	0
+108	-8	0
+109	-8	0
+110	-8	0
+111	-8	0
+112	-8	0
+113	-8	0
+114	-8	0
+115	-8	0
+116	-8	0
+117	-8	0
+118	-8	0
+119	-8	0
+120	-8	0
+121	-8	0
+122	-8	0
+123	-8	0
+124	-8	0
+125	-8	0
+126	-8	0
+127	-8	0
+128	-8	0
+129	-8	0
+130	-8	0
+131	-8	0
+132	-8	0
+133	-8	0
+134	-8	0
+135	-8	0
+136	-8	0
+137	-8	0
+138	-8	0
+139	-8	0
+140	-8	0
+141	-8	0
+142	-8	0
+143	-8	0
+144	-8	0
+145	-8	0
+146	-8	0
+147	-8	0
+148	-8	0
+149	-8	0
+150	-8	0
+151	-8	0
+152	-8	0
+153	-8	0
+154	-8	0
+155	-8	0
+156	-8	0
+157	-8	0
+158	-8	0
+159	-8	0
+160	-8	0
+161	-8	0
+162	-8	0
+163	-8	0
+164	-8	0
+165	-8	0
+166	-8	0
+167	-8	0
+168	-8	0
+169	-8	0
+170	-8	0
+171	-8	0
+172	-8	0
+173	-8	0
+174	-8	0
+175	-8	0
+176	-8	0
+177	-8	0
+178	-8	0
+179	-8	0
+180	-8	0
+181	-8	0
+182	-8	0
+183	-8	0
+184	-8	0
+185	-8	0
+186	-8	0
+187	-8	0
+188	-8	0
+189	-8	0
+190	-8	0
+191	-8	0
+192	-8	0
+193	-8	0
+194	-8	0
+195	-8	0
+196	-8	0
+197	-8	0
+198	-8	0
+199	-8	0
+200	-8	0
+201	-8	0
+202	-8	0
+203	-8	0
+204	-8	0
+205	-8	0
+206	-8	0
+207	-8	0
+208	-8	0
+209	-8	0
+210	-8	0
+211	-8	0
+212	-8	0
+213	-8	0
+214	-8	0
+215	-8	0
+216	-8	0
+217	-8	0
+218	-8	0
+219	-8	0
+220	-8	0
+221	-8	0
+222	-8	0
+223	-8	0
+224	-8	0
+225	-8	0
+226	-8	0
+227	-8	0
+228	-8	0
+229	-8	0
+230	-8	0
+231	-8	0
+232	-8	0
+233	-8	0
+234	-8	0
+235	-8	0
+236	-8	0
+237	-8	0
+238	-8	0
+239	-8	0
+240	-8	0
+241	-8	0
+242	-8	0
+243	-8	0
+244	-8	0
+245	-8	0
+246	-8	0
+247	-8	0
+248	-8	0
+249	-8	0
+250	-8	0
+251	-8	0
+252	-8	0
+253	-8	0
+254	-8	0
+255	-8	0
+256	-8	0
+257	-8	0
+258	-8	0
+259	-8	0
+260	-8	0
+261	-8	0
+262	-8	0
+263	-8	0
+264	-8	0
+265	-8	0
+266	-8	0
+267	-8	0
+268	-8	0
+269	-8	0
+270	-8	0
+271	-8	0
+272	-8	0
+273	-8	0
+274	-8	0
+275	-8	0
+276	-8	0
+277	-8	0
+278	-8	0
+279	-8	0
+280	-8	0
+281	-8	0
+282	-8	0
+283	-8	0
+284	-8	0
+285	-8	0
+286	-8	0
+287	-8	0
+288	-8	0
+289	-8	0
+290	-8	0
+291	-8	0
+292	-8	0
+293	-8	0
+294	-8	0
+295	-8	0
+296	-8	0
+297	-8	0
+298	-8	0
+299	-8	0
+300	-8	0
+301	-8	0
+302	-8	0
+303	-8	0
+304	-8	0
+305	-8	0
+306	-8	0
+307	-8	0
+308	-8	0
+309	-8	0
+310	-8	0
+311	-8	0
+312	-8	0
+313	-8	0
+314	-8	0
+315	-8	0
+316	-8	0
+317	-8	0
+318	-8	0
+319	-8	0
+320	-8	0
+321	-8	0
+322	-8	0
+323	-8	0
+324	-8	0
+325	-8	0
+326	-8	0
+327	-8	0
+328	-8	0
+329	-8	0
+330	-8	0
+331	-8	0
+332	-8	0
+333	-8	0
+334	-8	0
+335	-8	0
+336	-8	0
+337	-8	0
+338	-8	0
+339	-8	0
+340	-8	0
+341	-8	0
+342	-8	0
+343	-8	0
+344	-8	0
+345	-8	0
+346	-8	0
+347	-8	0
+348	-8	0
+349	-8	0
+350	-8	0
+351	-8	0
+352	-8	0
+353	-8	0
+354	-8	0
+355	-8	0
+356	-8	0
+357	-8	0
+358	-8	0
+359	-8	0
+360	-8	0
+0	-7.5	0
+1	-7.5	0
+2	-7.5	0
+3	-7.5	0
+4	-7.5	0
+5	-7.5	0
+6	-7.5	0
+7	-7.5	0
+8	-7.5	0
+9	-7.5	0
+10	-7.5	0
+11	-7.5	0
+12	-7.5	0
+13	-7.5	0
+14	-7.5	0
+15	-7.5	0
+16	-7.5	0
+17	-7.5	0
+18	-7.5	0
+19	-7.5	0
+20	-7.5	0
+21	-7.5	0
+22	-7.5	0
+23	-7.5	0
+24	-7.5	0
+25	-7.5	0
+26	-7.5	0
+27	-7.5	0
+28	-7.5	0
+29	-7.5	0
+30	-7.5	0
+31	-7.5	0
+32	-7.5	0
+33	-7.5	0
+34	-7.5	0
+35	-7.5	0
+36	-7.5	0
+37	-7.5	0
+38	-7.5	0
+39	-7.5	0
+40	-7.5	0
+41	-7.5	0
+42	-7.5	0
+43	-7.5	0
+44	-7.5	0
+45	-7.5	0
+46	-7.5	0
+47	-7.5	0
+48	-7.5	0
+49	-7.5	0
+50	-7.5	0
+51	-7.5	0
+52	-7.5	0
+53	-7.5	0
+54	-7.5	0
+55	-7.5	0
+56	-7.5	0
+57	-7.5	0
+58	-7.5	0
+59	-7.5	0
+60	-7.5	0
+61	-7.5	0
+62	-7.5	0
+63	-7.5	0
+64	-7.5	0
+65	-7.5	0
+66	-7.5	0
+67	-7.5	0
+68	-7.5	0
+69	-7.5	0
+70	-7.5	0
+71	-7.5	0
+72	-7.5	0
+73	-7.5	0
+74	-7.5	0
+75	-7.5	0
+76	-7.5	0
+77	-7.5	0
+78	-7.5	0
+79	-7.5	0
+80	-7.5	0
+81	-7.5	0
+82	-7.5	0
+83	-7.5	0
+84	-7.5	0
+85	-7.5	0
+86	-7.5	0
+87	-7.5	0
+88	-7.5	0
+89	-7.5	0
+90	-7.5	0
+91	-7.5	0
+92	-7.5	0
+93	-7.5	0
+94	-7.5	0
+95	-7.5	0
+96	-7.5	0
+97	-7.5	0
+98	-7.5	0
+99	-7.5	0
+100	-7.5	0
+101	-7.5	0
+102	-7.5	0
+103	-7.5	0
+104	-7.5	0
+105	-7.5	0
+106	-7.5	0
+107	-7.5	0
+108	-7.5	0
+109	-7.5	0
+110	-7.5	0
+111	-7.5	0
+112	-7.5	0
+113	-7.5	0
+114	-7.5	0
+115	-7.5	0
+116	-7.5	0
+117	-7.5	0
+118	-7.5	0
+119	-7.5	0
+120	-7.5	0
+121	-7.5	0
+122	-7.5	0
+123	-7.5	0
+124	-7.5	0
+125	-7.5	0
+126	-7.5	0
+127	-7.5	0
+128	-7.5	0
+129	-7.5	0
+130	-7.5	0
+131	-7.5	0
+132	-7.5	0
+133	-7.5	0
+134	-7.5	0
+135	-7.5	0
+136	-7.5	0
+137	-7.5	0
+138	-7.5	0
+139	-7.5	0
+140	-7.5	0
+141	-7.5	0
+142	-7.5	0
+143	-7.5	0
+144	-7.5	0
+145	-7.5	0
+146	-7.5	0
+147	-7.5	0
+148	-7.5	0
+149	-7.5	0
+150	-7.5	0
+151	-7.5	0
+152	-7.5	0
+153	-7.5	0
+154	-7.5	0
+155	-7.5	0
+156	-7.5	0
+157	-7.5	0
+158	-7.5	0
+159	-7.5	0
+160	-7.5	0
+161	-7.5	0
+162	-7.5	0
+163	-7.5	0
+164	-7.5	0
+165	-7.5	0
+166	-7.5	0
+167	-7.5	0
+168	-7.5	0
+169	-7.5	0
+170	-7.5	0
+171	-7.5	0
+172	-7.5	0
+173	-7.5	0
+174	-7.5	0
+175	-7.5	0
+176	-7.5	0
+177	-7.5	0
+178	-7.5	0
+179	-7.5	0
+180	-7.5	0
+181	-7.5	0
+182	-7.5	0
+183	-7.5	0
+184	-7.5	0
+185	-7.5	0
+186	-7.5	0
+187	-7.5	0
+188	-7.5	0
+189	-7.5	0
+190	-7.5	0
+191	-7.5	0
+192	-7.5	0
+193	-7.5	0
+194	-7.5	0
+195	-7.5	0
+196	-7.5	0
+197	-7.5	0
+198	-7.5	0
+199	-7.5	0
+200	-7.5	0
+201	-7.5	0
+202	-7.5	0
+203	-7.5	0
+204	-7.5	0
+205	-7.5	0
+206	-7.5	0
+207	-7.5	0
+208	-7.5	0
+209	-7.5	0
+210	-7.5	0
+211	-7.5	0
+212	-7.5	0
+213	-7.5	0
+214	-7.5	0
+215	-7.5	0
+216	-7.5	0
+217	-7.5	0
+218	-7.5	0
+219	-7.5	0
+220	-7.5	0
+221	-7.5	0
+222	-7.5	0
+223	-7.5	0
+224	-7.5	0
+225	-7.5	0
+226	-7.5	0
+227	-7.5	0
+228	-7.5	0
+229	-7.5	0
+230	-7.5	0
+231	-7.5	0
+232	-7.5	0
+233	-7.5	0
+234	-7.5	0
+235	-7.5	0
+236	-7.5	0
+237	-7.5	0
+238	-7.5	0
+239	-7.5	0
+240	-7.5	0
+241	-7.5	0
+242	-7.5	0
+243	-7.5	0
+244	-7.5	0
+245	-7.5	0
+246	-7.5	0
+247	-7.5	0
+248	-7.5	0
+249	-7.5	0
+250	-7.5	0
+251	-7.5	0
+252	-7.5	0
+253	-7.5	0
+254	-7.5	0
+255	-7.5	0
+256	-7.5	0
+257	-7.5	0
+258	-7.5	0
+259	-7.5	0
+260	-7.5	0
+261	-7.5	0
+262	-7.5	0
+263	-7.5	0
+264	-7.5	0
+265	-7.5	0
+266	-7.5	0
+267	-7.5	0
+268	-7.5	0
+269	-7.5	0
+270	-7.5	0
+271	-7.5	0
+272	-7.5	0
+273	-7.5	0
+274	-7.5	0
+275	-7.5	0
+276	-7.5	0
+277	-7.5	0
+278	-7.5	0
+279	-7.5	0
+280	-7.5	0
+281	-7.5	0
+282	-7.5	0
+283	-7.5	0
+284	-7.5	0
+285	-7.5	0
+286	-7.5	0
+287	-7.5	0
+288	-7.5	0
+289	-7.5	0
+290	-7.5	0
+291	-7.5	0
+292	-7.5	0
+293	-7.5	0
+294	-7.5	0
+295	-7.5	0
+296	-7.5	0
+297	-7.5	0
+298	-7.5	0
+299	-7.5	0
+300	-7.5	0
+301	-7.5	0
+302	-7.5	0
+303	-7.5	0
+304	-7.5	0
+305	-7.5	0
+306	-7.5	0
+307	-7.5	0
+308	-7.5	0
+309	-7.5	0
+310	-7.5	0
+311	-7.5	0
+312	-7.5	0
+313	-7.5	0
+314	-7.5	0
+315	-7.5	0
+316	-7.5	0
+317	-7.5	0
+318	-7.5	0
+319	-7.5	0
+320	-7.5	0
+321	-7.5	0
+322	-7.5	0
+323	-7.5	0
+324	-7.5	0
+325	-7.5	0
+326	-7.5	0
+327	-7.5	0
+328	-7.5	0
+329	-7.5	0
+330	-7.5	0
+331	-7.5	0
+332	-7.5	0
+333	-7.5	0
+334	-7.5	0
+335	-7.5	0
+336	-7.5	0
+337	-7.5	0
+338	-7.5	0
+339	-7.5	0
+340	-7.5	0
+341	-7.5	0
+342	-7.5	0
+343	-7.5	0
+344	-7.5	0
+345	-7.5	0
+346	-7.5	0
+347	-7.5	0
+348	-7.5	0
+349	-7.5	0
+350	-7.5	0
+351	-7.5	0
+352	-7.5	0
+353	-7.5	0
+354	-7.5	0
+355	-7.5	0
+356	-7.5	0
+357	-7.5	0
+358	-7.5	0
+359	-7.5	0
+360	-7.5	0
+0	-7	0
+1	-7	0
+2	-7	0
+3	-7	0
+4	-7	0
+5	-7	0
+6	-7	0
+7	-7	0
+8	-7	0
+9	-7	0
+10	-7	0
+11	-7	0
+12	-7	0
+13	-7	0
+14	-7	0
+15	-7	0
+16	-7	0
+17	-7	0
+18	-7	0
+19	-7	0
+20	-7	0
+21	-7	0
+22	-7	0
+23	-7	0
+24	-7	0
+25	-7	0
+26	-7	0
+27	-7	0
+28	-7	0
+29	-7	0
+30	-7	0
+31	-7	0
+32	-7	0
+33	-7	0
+34	-7	0
+35	-7	0
+36	-7	0
+37	-7	0
+38	-7	0
+39	-7	0
+40	-7	0
+41	-7	0
+42	-7	0
+43	-7	0
+44	-7	0
+45	-7	0
+46	-7	0
+47	-7	0
+48	-7	0
+49	-7	0
+50	-7	0
+51	-7	0
+52	-7	0
+53	-7	0
+54	-7	0
+55	-7	0
+56	-7	0
+57	-7	0
+58	-7	0
+59	-7	0
+60	-7	0
+61	-7	0
+62	-7	0
+63	-7	0
+64	-7	0
+65	-7	0
+66	-7	0
+67	-7	0
+68	-7	0
+69	-7	0
+70	-7	0
+71	-7	0
+72	-7	0
+73	-7	0
+74	-7	0
+75	-7	0
+76	-7	0
+77	-7	0
+78	-7	0
+79	-7	0
+80	-7	0
+81	-7	0
+82	-7	0
+83	-7	0
+84	-7	0
+85	-7	0
+86	-7	0
+87	-7	0
+88	-7	0
+89	-7	0
+90	-7	0
+91	-7	0
+92	-7	0
+93	-7	0
+94	-7	0
+95	-7	0
+96	-7	0
+97	-7	0
+98	-7	0
+99	-7	0
+100	-7	0
+101	-7	0
+102	-7	0
+103	-7	0
+104	-7	0
+105	-7	0
+106	-7	0
+107	-7	0
+108	-7	0
+109	-7	0
+110	-7	0
+111	-7	0
+112	-7	0
+113	-7	0
+114	-7	0
+115	-7	0
+116	-7	0
+117	-7	0
+118	-7	0
+119	-7	0
+120	-7	0
+121	-7	0
+122	-7	0
+123	-7	0
+124	-7	0
+125	-7	0
+126	-7	0
+127	-7	0
+128	-7	0
+129	-7	0
+130	-7	0
+131	-7	0
+132	-7	0
+133	-7	0
+134	-7	0
+135	-7	0
+136	-7	0
+137	-7	0
+138	-7	0
+139	-7	0
+140	-7	0
+141	-7	0
+142	-7	0
+143	-7	0
+144	-7	0
+145	-7	0
+146	-7	0
+147	-7	0
+148	-7	0
+149	-7	0
+150	-7	0
+151	-7	0
+152	-7	0
+153	-7	0
+154	-7	0
+155	-7	0
+156	-7	0
+157	-7	0
+158	-7	0
+159	-7	0
+160	-7	0
+161	-7	0
+162	-7	0
+163	-7	0
+164	-7	0
+165	-7	0
+166	-7	0
+167	-7	0
+168	-7	0
+169	-7	0
+170	-7	0
+171	-7	0
+172	-7	0
+173	-7	0
+174	-7	0
+175	-7	0
+176	-7	0
+177	-7	0
+178	-7	0
+179	-7	0
+180	-7	0
+181	-7	0
+182	-7	0
+183	-7	0
+184	-7	0
+185	-7	0
+186	-7	0
+187	-7	0
+188	-7	0
+189	-7	0
+190	-7	0
+191	-7	0
+192	-7	0
+193	-7	0
+194	-7	0
+195	-7	0
+196	-7	0
+197	-7	0
+198	-7	0
+199	-7	0
+200	-7	0
+201	-7	0
+202	-7	0
+203	-7	0
+204	-7	0
+205	-7	0
+206	-7	0
+207	-7	0
+208	-7	0
+209	-7	0
+210	-7	0
+211	-7	0
+212	-7	0
+213	-7	0
+214	-7	0
+215	-7	0
+216	-7	0
+217	-7	0
+218	-7	0
+219	-7	0
+220	-7	0
+221	-7	0
+222	-7	0
+223	-7	0
+224	-7	0
+225	-7	0
+226	-7	0
+227	-7	0
+228	-7	0
+229	-7	0
+230	-7	0
+231	-7	0
+232	-7	0
+233	-7	0
+234	-7	0
+235	-7	0
+236	-7	0
+237	-7	0
+238	-7	0
+239	-7	0
+240	-7	0
+241	-7	0
+242	-7	0
+243	-7	0
+244	-7	0
+245	-7	0
+246	-7	0
+247	-7	0
+248	-7	0
+249	-7	0
+250	-7	0
+251	-7	0
+252	-7	0
+253	-7	0
+254	-7	0
+255	-7	0
+256	-7	0
+257	-7	0
+258	-7	0
+259	-7	0
+260	-7	0
+261	-7	0
+262	-7	0
+263	-7	0
+264	-7	0
+265	-7	0
+266	-7	0
+267	-7	0
+268	-7	0
+269	-7	0
+270	-7	0
+271	-7	0
+272	-7	0
+273	-7	0
+274	-7	0
+275	-7	0
+276	-7	0
+277	-7	0
+278	-7	0
+279	-7	0
+280	-7	0
+281	-7	0
+282	-7	0
+283	-7	0
+284	-7	0
+285	-7	0
+286	-7	0
+287	-7	0
+288	-7	0
+289	-7	0
+290	-7	0
+291	-7	0
+292	-7	0
+293	-7	0
+294	-7	0
+295	-7	0
+296	-7	0
+297	-7	0
+298	-7	0
+299	-7	0
+300	-7	0
+301	-7	0
+302	-7	0
+303	-7	0
+304	-7	0
+305	-7	0
+306	-7	0
+307	-7	0
+308	-7	0
+309	-7	0
+310	-7	0
+311	-7	0
+312	-7	0
+313	-7	0
+314	-7	0
+315	-7	0
+316	-7	0
+317	-7	0
+318	-7	0
+319	-7	0
+320	-7	0
+321	-7	0
+322	-7	0
+323	-7	0
+324	-7	0
+325	-7	0
+326	-7	0
+327	-7	0
+328	-7	0
+329	-7	0
+330	-7	0
+331	-7	0
+332	-7	0
+333	-7	0
+334	-7	0
+335	-7	0
+336	-7	0
+337	-7	0
+338	-7	0
+339	-7	0
+340	-7	0
+341	-7	0
+342	-7	0
+343	-7	0
+344	-7	0
+345	-7	0
+346	-7	0
+347	-7	0
+348	-7	0
+349	-7	0
+350	-7	0
+351	-7	0
+352	-7	0
+353	-7	0
+354	-7	0
+355	-7	0
+356	-7	0
+357	-7	0
+358	-7	0
+359	-7	0
+360	-7	0
+0	-6.5	0
+1	-6.5	0
+2	-6.5	0
+3	-6.5	0
+4	-6.5	0
+5	-6.5	0
+6	-6.5	0
+7	-6.5	0
+8	-6.5	0
+9	-6.5	0
+10	-6.5	0
+11	-6.5	0
+12	-6.5	0
+13	-6.5	0
+14	-6.5	0
+15	-6.5	0
+16	-6.5	0
+17	-6.5	0
+18	-6.5	0
+19	-6.5	0
+20	-6.5	0
+21	-6.5	0
+22	-6.5	0
+23	-6.5	0
+24	-6.5	0
+25	-6.5	0
+26	-6.5	0
+27	-6.5	0
+28	-6.5	0
+29	-6.5	0
+30	-6.5	0
+31	-6.5	0
+32	-6.5	0
+33	-6.5	0
+34	-6.5	0
+35	-6.5	0
+36	-6.5	0
+37	-6.5	0
+38	-6.5	0
+39	-6.5	0
+40	-6.5	0
+41	-6.5	0
+42	-6.5	0
+43	-6.5	0
+44	-6.5	0
+45	-6.5	0
+46	-6.5	0
+47	-6.5	0
+48	-6.5	0
+49	-6.5	0
+50	-6.5	0
+51	-6.5	0
+52	-6.5	0
+53	-6.5	0
+54	-6.5	0
+55	-6.5	0
+56	-6.5	0
+57	-6.5	0
+58	-6.5	0
+59	-6.5	0
+60	-6.5	0
+61	-6.5	0
+62	-6.5	0
+63	-6.5	0
+64	-6.5	0
+65	-6.5	0
+66	-6.5	0
+67	-6.5	0
+68	-6.5	0
+69	-6.5	0
+70	-6.5	0
+71	-6.5	0
+72	-6.5	0
+73	-6.5	0
+74	-6.5	0
+75	-6.5	0
+76	-6.5	0
+77	-6.5	0
+78	-6.5	0
+79	-6.5	0
+80	-6.5	0
+81	-6.5	0
+82	-6.5	0
+83	-6.5	0
+84	-6.5	0
+85	-6.5	0
+86	-6.5	0
+87	-6.5	0
+88	-6.5	0
+89	-6.5	0
+90	-6.5	0
+91	-6.5	0
+92	-6.5	0
+93	-6.5	0
+94	-6.5	0
+95	-6.5	0
+96	-6.5	0
+97	-6.5	0
+98	-6.5	0
+99	-6.5	0
+100	-6.5	0
+101	-6.5	0
+102	-6.5	0
+103	-6.5	0
+104	-6.5	0
+105	-6.5	0
+106	-6.5	0
+107	-6.5	0
+108	-6.5	0
+109	-6.5	0
+110	-6.5	0
+111	-6.5	0
+112	-6.5	0
+113	-6.5	0
+114	-6.5	0
+115	-6.5	0
+116	-6.5	0
+117	-6.5	0
+118	-6.5	0
+119	-6.5	0
+120	-6.5	0
+121	-6.5	0
+122	-6.5	0
+123	-6.5	0
+124	-6.5	0
+125	-6.5	0
+126	-6.5	0
+127	-6.5	0
+128	-6.5	0
+129	-6.5	0
+130	-6.5	0
+131	-6.5	0
+132	-6.5	0
+133	-6.5	0
+134	-6.5	0
+135	-6.5	0
+136	-6.5	0
+137	-6.5	0
+138	-6.5	0
+139	-6.5	0
+140	-6.5	0
+141	-6.5	0
+142	-6.5	0
+143	-6.5	0
+144	-6.5	0
+145	-6.5	0
+146	-6.5	0
+147	-6.5	0
+148	-6.5	0
+149	-6.5	0
+150	-6.5	0
+151	-6.5	0
+152	-6.5	0
+153	-6.5	0
+154	-6.5	0
+155	-6.5	0
+156	-6.5	0
+157	-6.5	0
+158	-6.5	0
+159	-6.5	0
+160	-6.5	0
+161	-6.5	0
+162	-6.5	0
+163	-6.5	0
+164	-6.5	0
+165	-6.5	0
+166	-6.5	0
+167	-6.5	0
+168	-6.5	0
+169	-6.5	0
+170	-6.5	0
+171	-6.5	0
+172	-6.5	0
+173	-6.5	0
+174	-6.5	0
+175	-6.5	0
+176	-6.5	0
+177	-6.5	0
+178	-6.5	0
+179	-6.5	0
+180	-6.5	0
+181	-6.5	0
+182	-6.5	0
+183	-6.5	0
+184	-6.5	0
+185	-6.5	0
+186	-6.5	0
+187	-6.5	0
+188	-6.5	0
+189	-6.5	0
+190	-6.5	0
+191	-6.5	0
+192	-6.5	0
+193	-6.5	0
+194	-6.5	0
+195	-6.5	0
+196	-6.5	0
+197	-6.5	0
+198	-6.5	0
+199	-6.5	0
+200	-6.5	0
+201	-6.5	0
+202	-6.5	0
+203	-6.5	0
+204	-6.5	0
+205	-6.5	0
+206	-6.5	0
+207	-6.5	0
+208	-6.5	0
+209	-6.5	0
+210	-6.5	0
+211	-6.5	0
+212	-6.5	0
+213	-6.5	0
+214	-6.5	0
+215	-6.5	0
+216	-6.5	0
+217	-6.5	0
+218	-6.5	0
+219	-6.5	0
+220	-6.5	0
+221	-6.5	0
+222	-6.5	0
+223	-6.5	0
+224	-6.5	0
+225	-6.5	0
+226	-6.5	0
+227	-6.5	0
+228	-6.5	0
+229	-6.5	0
+230	-6.5	0
+231	-6.5	0
+232	-6.5	0
+233	-6.5	0
+234	-6.5	0
+235	-6.5	0
+236	-6.5	0
+237	-6.5	0
+238	-6.5	0
+239	-6.5	0
+240	-6.5	0
+241	-6.5	0
+242	-6.5	0
+243	-6.5	0
+244	-6.5	0
+245	-6.5	0
+246	-6.5	0
+247	-6.5	0
+248	-6.5	0
+249	-6.5	0
+250	-6.5	0
+251	-6.5	0
+252	-6.5	0
+253	-6.5	0
+254	-6.5	0
+255	-6.5	0
+256	-6.5	0
+257	-6.5	0
+258	-6.5	0
+259	-6.5	0
+260	-6.5	0
+261	-6.5	0
+262	-6.5	0
+263	-6.5	0
+264	-6.5	0
+265	-6.5	0
+266	-6.5	0
+267	-6.5	0
+268	-6.5	0
+269	-6.5	0
+270	-6.5	0
+271	-6.5	0
+272	-6.5	0
+273	-6.5	0
+274	-6.5	0
+275	-6.5	0
+276	-6.5	0
+277	-6.5	0
+278	-6.5	0
+279	-6.5	0
+280	-6.5	0
+281	-6.5	0
+282	-6.5	0
+283	-6.5	0
+284	-6.5	0
+285	-6.5	0
+286	-6.5	0
+287	-6.5	0
+288	-6.5	0
+289	-6.5	0
+290	-6.5	0
+291	-6.5	0
+292	-6.5	0
+293	-6.5	0
+294	-6.5	0
+295	-6.5	0
+296	-6.5	0
+297	-6.5	0
+298	-6.5	0
+299	-6.5	0
+300	-6.5	0
+301	-6.5	0
+302	-6.5	0
+303	-6.5	0
+304	-6.5	0
+305	-6.5	0
+306	-6.5	0
+307	-6.5	0
+308	-6.5	0
+309	-6.5	0
+310	-6.5	0
+311	-6.5	0
+312	-6.5	0
+313	-6.5	0
+314	-6.5	0
+315	-6.5	0
+316	-6.5	0
+317	-6.5	0
+318	-6.5	0
+319	-6.5	0
+320	-6.5	0
+321	-6.5	0
+322	-6.5	0
+323	-6.5	0
+324	-6.5	0
+325	-6.5	0
+326	-6.5	0
+327	-6.5	0
+328	-6.5	0
+329	-6.5	0
+330	-6.5	0
+331	-6.5	0
+332	-6.5	0
+333	-6.5	0
+334	-6.5	0
+335	-6.5	0
+336	-6.5	0
+337	-6.5	0
+338	-6.5	0
+339	-6.5	0
+340	-6.5	0
+341	-6.5	0
+342	-6.5	0
+343	-6.5	0
+344	-6.5	0
+345	-6.5	0
+346	-6.5	0
+347	-6.5	0
+348	-6.5	0
+349	-6.5	0
+350	-6.5	0
+351	-6.5	0
+352	-6.5	0
+353	-6.5	0
+354	-6.5	0
+355	-6.5	0
+356	-6.5	0
+357	-6.5	0
+358	-6.5	0
+359	-6.5	0
+360	-6.5	0
+0	-6	0
+1	-6	0
+2	-6	0
+3	-6	0
+4	-6	0
+5	-6	0
+6	-6	0
+7	-6	0
+8	-6	0
+9	-6	0
+10	-6	0
+11	-6	0
+12	-6	0
+13	-6	0
+14	-6	0
+15	-6	0
+16	-6	0
+17	-6	0
+18	-6	0
+19	-6	0
+20	-6	0
+21	-6	0
+22	-6	0
+23	-6	0
+24	-6	0
+25	-6	0
+26	-6	0
+27	-6	0
+28	-6	0
+29	-6	0
+30	-6	0
+31	-6	0
+32	-6	0
+33	-6	0
+34	-6	0
+35	-6	0
+36	-6	0
+37	-6	0
+38	-6	0
+39	-6	0
+40	-6	0
+41	-6	0
+42	-6	0
+43	-6	0
+44	-6	0
+45	-6	0
+46	-6	0
+47	-6	0
+48	-6	0
+49	-6	0
+50	-6	0
+51	-6	0
+52	-6	0
+53	-6	0
+54	-6	0
+55	-6	0
+56	-6	0
+57	-6	0
+58	-6	0
+59	-6	0
+60	-6	0
+61	-6	0
+62	-6	0
+63	-6	0
+64	-6	0
+65	-6	0
+66	-6	0
+67	-6	0
+68	-6	0
+69	-6	0
+70	-6	0
+71	-6	0
+72	-6	0
+73	-6	0
+74	-6	0
+75	-6	0
+76	-6	0
+77	-6	0
+78	-6	0
+79	-6	0
+80	-6	0
+81	-6	0
+82	-6	0
+83	-6	0
+84	-6	0
+85	-6	0
+86	-6	0
+87	-6	0
+88	-6	0
+89	-6	0
+90	-6	0
+91	-6	0
+92	-6	0
+93	-6	0
+94	-6	0
+95	-6	0
+96	-6	0
+97	-6	0
+98	-6	0
+99	-6	0
+100	-6	0
+101	-6	0
+102	-6	0
+103	-6	0
+104	-6	0
+105	-6	0
+106	-6	0
+107	-6	0
+108	-6	0
+109	-6	0
+110	-6	0
+111	-6	0
+112	-6	0
+113	-6	0
+114	-6	0
+115	-6	0
+116	-6	0
+117	-6	0
+118	-6	0
+119	-6	0
+120	-6	0
+121	-6	0
+122	-6	0
+123	-6	0
+124	-6	0
+125	-6	0
+126	-6	0
+127	-6	0
+128	-6	0
+129	-6	0
+130	-6	0
+131	-6	0
+132	-6	0
+133	-6	0
+134	-6	0
+135	-6	0
+136	-6	0
+137	-6	0
+138	-6	0
+139	-6	0
+140	-6	0
+141	-6	0
+142	-6	0
+143	-6	0
+144	-6	0
+145	-6	0
+146	-6	0
+147	-6	0
+148	-6	0
+149	-6	0
+150	-6	0
+151	-6	0
+152	-6	0
+153	-6	0
+154	-6	0
+155	-6	0
+156	-6	0
+157	-6	0
+158	-6	0
+159	-6	0
+160	-6	0
+161	-6	0
+162	-6	0
+163	-6	0
+164	-6	0
+165	-6	0
+166	-6	0
+167	-6	0
+168	-6	0
+169	-6	0
+170	-6	0
+171	-6	0
+172	-6	0
+173	-6	0
+174	-6	0
+175	-6	0
+176	-6	0
+177	-6	0
+178	-6	0
+179	-6	0
+180	-6	0
+181	-6	0
+182	-6	0
+183	-6	0
+184	-6	0
+185	-6	0
+186	-6	0
+187	-6	0
+188	-6	0
+189	-6	0
+190	-6	0
+191	-6	0
+192	-6	0
+193	-6	0
+194	-6	0
+195	-6	0
+196	-6	0
+197	-6	0
+198	-6	0
+199	-6	0
+200	-6	0
+201	-6	0
+202	-6	0
+203	-6	0
+204	-6	0
+205	-6	0
+206	-6	0
+207	-6	0
+208	-6	0
+209	-6	0
+210	-6	0
+211	-6	0
+212	-6	0
+213	-6	0
+214	-6	0
+215	-6	0
+216	-6	0
+217	-6	0
+218	-6	0
+219	-6	0
+220	-6	0
+221	-6	0
+222	-6	0
+223	-6	0
+224	-6	0
+225	-6	0
+226	-6	0
+227	-6	0
+228	-6	0
+229	-6	0
+230	-6	0
+231	-6	0
+232	-6	0
+233	-6	0
+234	-6	0
+235	-6	0
+236	-6	0
+237	-6	0
+238	-6	0
+239	-6	0
+240	-6	0
+241	-6	0
+242	-6	0
+243	-6	0
+244	-6	0
+245	-6	0
+246	-6	0
+247	-6	0
+248	-6	0
+249	-6	0
+250	-6	0
+251	-6	0
+252	-6	0
+253	-6	0
+254	-6	0
+255	-6	0
+256	-6	0
+257	-6	0
+258	-6	0
+259	-6	0
+260	-6	0
+261	-6	0
+262	-6	0
+263	-6	0
+264	-6	0
+265	-6	0
+266	-6	0
+267	-6	0
+268	-6	0
+269	-6	0
+270	-6	0
+271	-6	0
+272	-6	0
+273	-6	0
+274	-6	0
+275	-6	0
+276	-6	0
+277	-6	0
+278	-6	0
+279	-6	0
+280	-6	0
+281	-6	0
+282	-6	0
+283	-6	0
+284	-6	0
+285	-6	0
+286	-6	0
+287	-6	0
+288	-6	0
+289	-6	0
+290	-6	0
+291	-6	0
+292	-6	0
+293	-6	0
+294	-6	0
+295	-6	0
+296	-6	0
+297	-6	0
+298	-6	0
+299	-6	0
+300	-6	0
+301	-6	0
+302	-6	0
+303	-6	0
+304	-6	0
+305	-6	0
+306	-6	0
+307	-6	0
+308	-6	0
+309	-6	0
+310	-6	0
+311	-6	0
+312	-6	0
+313	-6	0
+314	-6	0
+315	-6	0
+316	-6	0
+317	-6	0
+318	-6	0
+319	-6	0
+320	-6	0
+321	-6	0
+322	-6	0
+323	-6	0
+324	-6	0
+325	-6	0
+326	-6	0
+327	-6	0
+328	-6	0
+329	-6	0
+330	-6	0
+331	-6	0
+332	-6	0
+333	-6	0
+334	-6	0
+335	-6	0
+336	-6	0
+337	-6	0
+338	-6	0
+339	-6	0
+340	-6	0
+341	-6	0
+342	-6	0
+343	-6	0
+344	-6	0
+345	-6	0
+346	-6	0
+347	-6	0
+348	-6	0
+349	-6	0
+350	-6	0
+351	-6	0
+352	-6	0
+353	-6	0
+354	-6	0
+355	-6	0
+356	-6	0
+357	-6	0
+358	-6	0
+359	-6	0
+360	-6	0
+0	-5.5	0
+1	-5.5	0
+2	-5.5	0
+3	-5.5	0
+4	-5.5	0
+5	-5.5	0
+6	-5.5	0
+7	-5.5	0
+8	-5.5	0
+9	-5.5	0
+10	-5.5	0
+11	-5.5	0
+12	-5.5	0
+13	-5.5	0
+14	-5.5	0
+15	-5.5	0
+16	-5.5	0
+17	-5.5	0
+18	-5.5	0
+19	-5.5	0
+20	-5.5	0
+21	-5.5	0
+22	-5.5	0
+23	-5.5	0
+24	-5.5	0
+25	-5.5	0
+26	-5.5	0
+27	-5.5	0
+28	-5.5	0
+29	-5.5	0
+30	-5.5	0
+31	-5.5	0
+32	-5.5	0
+33	-5.5	0
+34	-5.5	0
+35	-5.5	0
+36	-5.5	0
+37	-5.5	0
+38	-5.5	0
+39	-5.5	0
+40	-5.5	0
+41	-5.5	0
+42	-5.5	0
+43	-5.5	0
+44	-5.5	0
+45	-5.5	0
+46	-5.5	0
+47	-5.5	0
+48	-5.5	0
+49	-5.5	0
+50	-5.5	0
+51	-5.5	0
+52	-5.5	0
+53	-5.5	0
+54	-5.5	0
+55	-5.5	0
+56	-5.5	0
+57	-5.5	0
+58	-5.5	0
+59	-5.5	0
+60	-5.5	0
+61	-5.5	0
+62	-5.5	0
+63	-5.5	0
+64	-5.5	0
+65	-5.5	0
+66	-5.5	0
+67	-5.5	0
+68	-5.5	0
+69	-5.5	0
+70	-5.5	0
+71	-5.5	0
+72	-5.5	0
+73	-5.5	0
+74	-5.5	0
+75	-5.5	0
+76	-5.5	0
+77	-5.5	0
+78	-5.5	0
+79	-5.5	0
+80	-5.5	0
+81	-5.5	0
+82	-5.5	0
+83	-5.5	0
+84	-5.5	0
+85	-5.5	0
+86	-5.5	0
+87	-5.5	0
+88	-5.5	0
+89	-5.5	0
+90	-5.5	0
+91	-5.5	0
+92	-5.5	0
+93	-5.5	0
+94	-5.5	0
+95	-5.5	0
+96	-5.5	0
+97	-5.5	0
+98	-5.5	0
+99	-5.5	0
+100	-5.5	0
+101	-5.5	0
+102	-5.5	0
+103	-5.5	0
+104	-5.5	0
+105	-5.5	0
+106	-5.5	0
+107	-5.5	0
+108	-5.5	0
+109	-5.5	0
+110	-5.5	0
+111	-5.5	0
+112	-5.5	0
+113	-5.5	0
+114	-5.5	0
+115	-5.5	0
+116	-5.5	0
+117	-5.5	0
+118	-5.5	0
+119	-5.5	0
+120	-5.5	0
+121	-5.5	0
+122	-5.5	0
+123	-5.5	0
+124	-5.5	0
+125	-5.5	0
+126	-5.5	0
+127	-5.5	0
+128	-5.5	0
+129	-5.5	0
+130	-5.5	0
+131	-5.5	0
+132	-5.5	0
+133	-5.5	0
+134	-5.5	0
+135	-5.5	0
+136	-5.5	0
+137	-5.5	0
+138	-5.5	0
+139	-5.5	0
+140	-5.5	0
+141	-5.5	0
+142	-5.5	0
+143	-5.5	0
+144	-5.5	0
+145	-5.5	0
+146	-5.5	0
+147	-5.5	0
+148	-5.5	0
+149	-5.5	0
+150	-5.5	0
+151	-5.5	0
+152	-5.5	0
+153	-5.5	0
+154	-5.5	0
+155	-5.5	0
+156	-5.5	0
+157	-5.5	0
+158	-5.5	0
+159	-5.5	0
+160	-5.5	0
+161	-5.5	0
+162	-5.5	0
+163	-5.5	0
+164	-5.5	0
+165	-5.5	0
+166	-5.5	0
+167	-5.5	0
+168	-5.5	0
+169	-5.5	0
+170	-5.5	0
+171	-5.5	0
+172	-5.5	0
+173	-5.5	0
+174	-5.5	0
+175	-5.5	0
+176	-5.5	0
+177	-5.5	0
+178	-5.5	0
+179	-5.5	0
+180	-5.5	0
+181	-5.5	0
+182	-5.5	0
+183	-5.5	0
+184	-5.5	0
+185	-5.5	0
+186	-5.5	0
+187	-5.5	0
+188	-5.5	0
+189	-5.5	0
+190	-5.5	0
+191	-5.5	0
+192	-5.5	0
+193	-5.5	0
+194	-5.5	0
+195	-5.5	0
+196	-5.5	0
+197	-5.5	0
+198	-5.5	0
+199	-5.5	0
+200	-5.5	0
+201	-5.5	0
+202	-5.5	0
+203	-5.5	0
+204	-5.5	0
+205	-5.5	0
+206	-5.5	0
+207	-5.5	0
+208	-5.5	0
+209	-5.5	0
+210	-5.5	0
+211	-5.5	0
+212	-5.5	0
+213	-5.5	0
+214	-5.5	0
+215	-5.5	0
+216	-5.5	0
+217	-5.5	0
+218	-5.5	0
+219	-5.5	0
+220	-5.5	0
+221	-5.5	0
+222	-5.5	0
+223	-5.5	0
+224	-5.5	0
+225	-5.5	0
+226	-5.5	0
+227	-5.5	0
+228	-5.5	0
+229	-5.5	0
+230	-5.5	0
+231	-5.5	0
+232	-5.5	0
+233	-5.5	0
+234	-5.5	0
+235	-5.5	0
+236	-5.5	0
+237	-5.5	0
+238	-5.5	0
+239	-5.5	0
+240	-5.5	0
+241	-5.5	0
+242	-5.5	0
+243	-5.5	0
+244	-5.5	0
+245	-5.5	0
+246	-5.5	0
+247	-5.5	0
+248	-5.5	0
+249	-5.5	0
+250	-5.5	0
+251	-5.5	0
+252	-5.5	0
+253	-5.5	0
+254	-5.5	0
+255	-5.5	0
+256	-5.5	0
+257	-5.5	0
+258	-5.5	0
+259	-5.5	0
+260	-5.5	0
+261	-5.5	0
+262	-5.5	0
+263	-5.5	0
+264	-5.5	0
+265	-5.5	0
+266	-5.5	0
+267	-5.5	0
+268	-5.5	0
+269	-5.5	0
+270	-5.5	0
+271	-5.5	0
+272	-5.5	0
+273	-5.5	0
+274	-5.5	0
+275	-5.5	0
+276	-5.5	0
+277	-5.5	0
+278	-5.5	0
+279	-5.5	0
+280	-5.5	0
+281	-5.5	0
+282	-5.5	0
+283	-5.5	0
+284	-5.5	0
+285	-5.5	0
+286	-5.5	0
+287	-5.5	0
+288	-5.5	0
+289	-5.5	0
+290	-5.5	0
+291	-5.5	0
+292	-5.5	0
+293	-5.5	0
+294	-5.5	0
+295	-5.5	0
+296	-5.5	0
+297	-5.5	0
+298	-5.5	0
+299	-5.5	0
+300	-5.5	0
+301	-5.5	0
+302	-5.5	0
+303	-5.5	0
+304	-5.5	0
+305	-5.5	0
+306	-5.5	0
+307	-5.5	0
+308	-5.5	0
+309	-5.5	0
+310	-5.5	0
+311	-5.5	0
+312	-5.5	0
+313	-5.5	0
+314	-5.5	0
+315	-5.5	0
+316	-5.5	0
+317	-5.5	0
+318	-5.5	0
+319	-5.5	0
+320	-5.5	0
+321	-5.5	0
+322	-5.5	0
+323	-5.5	0
+324	-5.5	0
+325	-5.5	0
+326	-5.5	0
+327	-5.5	0
+328	-5.5	0
+329	-5.5	0
+330	-5.5	0
+331	-5.5	0
+332	-5.5	0
+333	-5.5	0
+334	-5.5	0
+335	-5.5	0
+336	-5.5	0
+337	-5.5	0
+338	-5.5	0
+339	-5.5	0
+340	-5.5	0
+341	-5.5	0
+342	-5.5	0
+343	-5.5	0
+344	-5.5	0
+345	-5.5	0
+346	-5.5	0
+347	-5.5	0
+348	-5.5	0
+349	-5.5	0
+350	-5.5	0
+351	-5.5	0
+352	-5.5	0
+353	-5.5	0
+354	-5.5	0
+355	-5.5	0
+356	-5.5	0
+357	-5.5	0
+358	-5.5	0
+359	-5.5	0
+360	-5.5	0
+0	-5	0
+1	-5	0
+2	-5	0
+3	-5	0
+4	-5	0
+5	-5	0
+6	-5	0
+7	-5	0
+8	-5	0
+9	-5	0
+10	-5	0
+11	-5	0
+12	-5	0
+13	-5	0
+14	-5	0
+15	-5	0
+16	-5	0
+17	-5	0
+18	-5	0
+19	-5	0
+20	-5	0
+21	-5	0
+22	-5	0
+23	-5	0
+24	-5	0
+25	-5	0
+26	-5	0
+27	-5	0
+28	-5	0
+29	-5	0
+30	-5	0
+31	-5	0
+32	-5	0
+33	-5	0
+34	-5	0
+35	-5	0
+36	-5	0
+37	-5	0
+38	-5	0
+39	-5	0
+40	-5	0
+41	-5	0
+42	-5	0
+43	-5	0
+44	-5	0
+45	-5	0
+46	-5	0
+47	-5	0
+48	-5	0
+49	-5	0
+50	-5	0
+51	-5	0
+52	-5	0
+53	-5	0
+54	-5	0
+55	-5	0
+56	-5	0
+57	-5	0
+58	-5	0
+59	-5	0
+60	-5	0
+61	-5	0
+62	-5	0
+63	-5	0
+64	-5	0
+65	-5	0
+66	-5	0
+67	-5	0
+68	-5	0
+69	-5	0
+70	-5	0
+71	-5	0
+72	-5	0
+73	-5	0
+74	-5	0
+75	-5	0
+76	-5	0
+77	-5	0
+78	-5	0
+79	-5	0
+80	-5	0
+81	-5	0
+82	-5	0
+83	-5	0
+84	-5	0
+85	-5	0
+86	-5	0
+87	-5	0
+88	-5	0
+89	-5	0
+90	-5	0
+91	-5	0
+92	-5	0
+93	-5	0
+94	-5	0
+95	-5	0
+96	-5	0
+97	-5	0
+98	-5	0
+99	-5	0
+100	-5	0
+101	-5	0
+102	-5	0
+103	-5	0
+104	-5	0
+105	-5	0
+106	-5	0
+107	-5	0
+108	-5	0
+109	-5	0
+110	-5	0
+111	-5	0
+112	-5	0
+113	-5	0
+114	-5	0
+115	-5	0
+116	-5	0
+117	-5	0
+118	-5	0
+119	-5	0
+120	-5	0
+121	-5	0
+122	-5	0
+123	-5	0
+124	-5	0
+125	-5	0
+126	-5	0
+127	-5	0
+128	-5	0
+129	-5	0
+130	-5	0
+131	-5	0
+132	-5	0
+133	-5	0
+134	-5	0
+135	-5	0
+136	-5	0
+137	-5	0
+138	-5	0
+139	-5	0
+140	-5	0
+141	-5	0
+142	-5	0
+143	-5	0
+144	-5	0
+145	-5	0
+146	-5	0
+147	-5	0
+148	-5	0
+149	-5	0
+150	-5	0
+151	-5	0
+152	-5	0
+153	-5	0
+154	-5	0
+155	-5	0
+156	-5	0
+157	-5	0
+158	-5	0
+159	-5	0
+160	-5	0
+161	-5	0
+162	-5	0
+163	-5	0
+164	-5	0
+165	-5	0
+166	-5	0
+167	-5	0
+168	-5	0
+169	-5	0
+170	-5	0
+171	-5	0
+172	-5	0
+173	-5	0
+174	-5	0
+175	-5	0
+176	-5	0
+177	-5	0
+178	-5	0
+179	-5	0
+180	-5	0
+181	-5	0
+182	-5	0
+183	-5	0
+184	-5	0
+185	-5	0
+186	-5	0
+187	-5	0
+188	-5	0
+189	-5	0
+190	-5	0
+191	-5	0
+192	-5	0
+193	-5	0
+194	-5	0
+195	-5	0
+196	-5	0
+197	-5	0
+198	-5	0
+199	-5	0
+200	-5	0
+201	-5	0
+202	-5	0
+203	-5	0
+204	-5	0
+205	-5	0
+206	-5	0
+207	-5	0
+208	-5	0
+209	-5	0
+210	-5	0
+211	-5	0
+212	-5	0
+213	-5	0
+214	-5	0
+215	-5	0
+216	-5	0
+217	-5	0
+218	-5	0
+219	-5	0
+220	-5	0
+221	-5	0
+222	-5	0
+223	-5	0
+224	-5	0
+225	-5	0
+226	-5	0
+227	-5	0
+228	-5	0
+229	-5	0
+230	-5	0
+231	-5	0
+232	-5	0
+233	-5	0
+234	-5	0
+235	-5	0
+236	-5	0
+237	-5	0
+238	-5	0
+239	-5	0
+240	-5	0
+241	-5	0
+242	-5	0
+243	-5	0
+244	-5	0
+245	-5	0
+246	-5	0
+247	-5	0
+248	-5	0
+249	-5	0
+250	-5	0
+251	-5	0
+252	-5	0
+253	-5	0
+254	-5	0
+255	-5	0
+256	-5	0
+257	-5	0
+258	-5	0
+259	-5	0
+260	-5	0
+261	-5	0
+262	-5	0
+263	-5	0
+264	-5	0
+265	-5	0
+266	-5	0
+267	-5	0
+268	-5	0
+269	-5	0
+270	-5	0
+271	-5	0
+272	-5	0
+273	-5	0
+274	-5	0
+275	-5	0
+276	-5	0
+277	-5	0
+278	-5	0
+279	-5	0
+280	-5	0
+281	-5	0
+282	-5	0
+283	-5	0
+284	-5	0
+285	-5	0
+286	-5	0
+287	-5	0
+288	-5	0
+289	-5	0
+290	-5	0
+291	-5	0
+292	-5	0
+293	-5	0
+294	-5	0
+295	-5	0
+296	-5	0
+297	-5	0
+298	-5	0
+299	-5	0
+300	-5	0
+301	-5	0
+302	-5	0
+303	-5	0
+304	-5	0
+305	-5	0
+306	-5	0
+307	-5	0
+308	-5	0
+309	-5	0
+310	-5	0
+311	-5	0
+312	-5	0
+313	-5	0
+314	-5	0
+315	-5	0
+316	-5	0
+317	-5	0
+318	-5	0
+319	-5	0
+320	-5	0
+321	-5	0
+322	-5	0
+323	-5	0
+324	-5	0
+325	-5	0
+326	-5	0
+327	-5	0
+328	-5	0
+329	-5	0
+330	-5	0
+331	-5	0
+332	-5	0
+333	-5	0
+334	-5	0
+335	-5	0
+336	-5	0
+337	-5	0
+338	-5	0
+339	-5	0
+340	-5	0
+341	-5	0
+342	-5	0
+343	-5	0
+344	-5	0
+345	-5	0
+346	-5	0
+347	-5	0
+348	-5	0
+349	-5	0
+350	-5	0
+351	-5	0
+352	-5	0
+353	-5	0
+354	-5	0
+355	-5	0
+356	-5	0
+357	-5	0
+358	-5	0
+359	-5	0
+360	-5	0
+0	-4.5	0
+1	-4.5	0
+2	-4.5	0
+3	-4.5	0
+4	-4.5	0
+5	-4.5	0
+6	-4.5	0
+7	-4.5	0
+8	-4.5	0
+9	-4.5	0
+10	-4.5	0
+11	-4.5	0
+12	-4.5	0
+13	-4.5	0
+14	-4.5	0
+15	-4.5	0
+16	-4.5	0
+17	-4.5	0
+18	-4.5	0
+19	-4.5	0
+20	-4.5	0
+21	-4.5	0
+22	-4.5	0
+23	-4.5	0
+24	-4.5	0
+25	-4.5	0
+26	-4.5	0
+27	-4.5	0
+28	-4.5	0
+29	-4.5	0
+30	-4.5	0
+31	-4.5	0
+32	-4.5	0
+33	-4.5	0
+34	-4.5	0
+35	-4.5	0
+36	-4.5	0
+37	-4.5	0
+38	-4.5	0
+39	-4.5	0
+40	-4.5	0
+41	-4.5	0
+42	-4.5	0
+43	-4.5	0
+44	-4.5	0
+45	-4.5	0
+46	-4.5	0
+47	-4.5	0
+48	-4.5	0
+49	-4.5	0
+50	-4.5	0
+51	-4.5	0
+52	-4.5	0
+53	-4.5	0
+54	-4.5	0
+55	-4.5	0
+56	-4.5	0
+57	-4.5	0
+58	-4.5	0
+59	-4.5	0
+60	-4.5	0
+61	-4.5	0
+62	-4.5	0
+63	-4.5	0
+64	-4.5	0
+65	-4.5	0
+66	-4.5	0
+67	-4.5	0
+68	-4.5	0
+69	-4.5	0
+70	-4.5	0
+71	-4.5	0
+72	-4.5	0
+73	-4.5	0
+74	-4.5	0
+75	-4.5	0
+76	-4.5	0
+77	-4.5	0
+78	-4.5	0
+79	-4.5	0
+80	-4.5	0
+81	-4.5	0
+82	-4.5	0
+83	-4.5	0
+84	-4.5	0
+85	-4.5	0
+86	-4.5	0
+87	-4.5	0
+88	-4.5	0
+89	-4.5	0
+90	-4.5	0
+91	-4.5	0
+92	-4.5	0
+93	-4.5	0
+94	-4.5	0
+95	-4.5	0
+96	-4.5	0
+97	-4.5	0
+98	-4.5	0
+99	-4.5	0
+100	-4.5	0
+101	-4.5	0
+102	-4.5	0
+103	-4.5	0
+104	-4.5	0
+105	-4.5	0
+106	-4.5	0
+107	-4.5	0
+108	-4.5	0
+109	-4.5	0
+110	-4.5	0
+111	-4.5	0
+112	-4.5	0
+113	-4.5	0
+114	-4.5	0
+115	-4.5	0
+116	-4.5	0
+117	-4.5	0
+118	-4.5	0
+119	-4.5	0
+120	-4.5	0
+121	-4.5	0
+122	-4.5	0
+123	-4.5	0
+124	-4.5	0
+125	-4.5	0
+126	-4.5	0
+127	-4.5	0
+128	-4.5	0
+129	-4.5	0
+130	-4.5	0
+131	-4.5	0
+132	-4.5	0
+133	-4.5	0
+134	-4.5	0
+135	-4.5	0
+136	-4.5	0
+137	-4.5	0
+138	-4.5	0
+139	-4.5	0
+140	-4.5	0
+141	-4.5	0
+142	-4.5	0
+143	-4.5	0
+144	-4.5	0
+145	-4.5	0
+146	-4.5	0
+147	-4.5	0
+148	-4.5	0
+149	-4.5	0
+150	-4.5	0
+151	-4.5	0
+152	-4.5	0
+153	-4.5	0
+154	-4.5	0
+155	-4.5	0
+156	-4.5	0
+157	-4.5	0
+158	-4.5	0
+159	-4.5	0
+160	-4.5	0
+161	-4.5	0
+162	-4.5	0
+163	-4.5	0
+164	-4.5	0
+165	-4.5	0
+166	-4.5	0
+167	-4.5	0
+168	-4.5	0
+169	-4.5	0
+170	-4.5	0
+171	-4.5	0
+172	-4.5	0
+173	-4.5	0
+174	-4.5	0
+175	-4.5	0
+176	-4.5	0
+177	-4.5	0
+178	-4.5	0
+179	-4.5	0
+180	-4.5	0
+181	-4.5	0
+182	-4.5	0
+183	-4.5	0
+184	-4.5	0
+185	-4.5	0
+186	-4.5	0
+187	-4.5	0
+188	-4.5	0
+189	-4.5	0
+190	-4.5	0
+191	-4.5	0
+192	-4.5	0
+193	-4.5	0
+194	-4.5	0
+195	-4.5	0
+196	-4.5	0
+197	-4.5	0
+198	-4.5	0
+199	-4.5	0
+200	-4.5	0
+201	-4.5	0
+202	-4.5	0
+203	-4.5	0
+204	-4.5	0
+205	-4.5	0
+206	-4.5	0
+207	-4.5	0
+208	-4.5	0
+209	-4.5	0
+210	-4.5	0
+211	-4.5	0
+212	-4.5	0
+213	-4.5	0
+214	-4.5	0
+215	-4.5	0
+216	-4.5	0
+217	-4.5	0
+218	-4.5	0
+219	-4.5	0
+220	-4.5	0
+221	-4.5	0
+222	-4.5	0
+223	-4.5	0
+224	-4.5	0
+225	-4.5	0
+226	-4.5	0
+227	-4.5	0
+228	-4.5	0
+229	-4.5	0
+230	-4.5	0
+231	-4.5	0
+232	-4.5	0
+233	-4.5	0
+234	-4.5	0
+235	-4.5	0
+236	-4.5	0
+237	-4.5	0
+238	-4.5	0
+239	-4.5	0
+240	-4.5	0
+241	-4.5	0
+242	-4.5	0
+243	-4.5	0
+244	-4.5	0
+245	-4.5	0
+246	-4.5	0
+247	-4.5	0
+248	-4.5	0
+249	-4.5	0
+250	-4.5	0
+251	-4.5	0
+252	-4.5	0
+253	-4.5	0
+254	-4.5	0
+255	-4.5	0
+256	-4.5	0
+257	-4.5	0
+258	-4.5	0
+259	-4.5	0
+260	-4.5	0
+261	-4.5	0
+262	-4.5	0
+263	-4.5	0
+264	-4.5	0
+265	-4.5	0
+266	-4.5	0
+267	-4.5	0
+268	-4.5	0
+269	-4.5	0
+270	-4.5	0
+271	-4.5	0
+272	-4.5	0
+273	-4.5	0
+274	-4.5	0
+275	-4.5	0
+276	-4.5	0
+277	-4.5	0
+278	-4.5	0
+279	-4.5	0
+280	-4.5	0
+281	-4.5	0
+282	-4.5	0
+283	-4.5	0
+284	-4.5	0
+285	-4.5	0
+286	-4.5	0
+287	-4.5	0
+288	-4.5	0
+289	-4.5	0
+290	-4.5	0
+291	-4.5	0
+292	-4.5	0
+293	-4.5	0
+294	-4.5	0
+295	-4.5	0
+296	-4.5	0
+297	-4.5	0
+298	-4.5	0
+299	-4.5	0
+300	-4.5	0
+301	-4.5	0
+302	-4.5	0
+303	-4.5	0
+304	-4.5	0
+305	-4.5	0
+306	-4.5	0
+307	-4.5	0
+308	-4.5	0
+309	-4.5	0
+310	-4.5	0
+311	-4.5	0
+312	-4.5	0
+313	-4.5	0
+314	-4.5	0
+315	-4.5	0
+316	-4.5	0
+317	-4.5	0
+318	-4.5	0
+319	-4.5	0
+320	-4.5	0
+321	-4.5	0
+322	-4.5	0
+323	-4.5	0
+324	-4.5	0
+325	-4.5	0
+326	-4.5	0
+327	-4.5	0
+328	-4.5	0
+329	-4.5	0
+330	-4.5	0
+331	-4.5	0
+332	-4.5	0
+333	-4.5	0
+334	-4.5	0
+335	-4.5	0
+336	-4.5	0
+337	-4.5	0
+338	-4.5	0
+339	-4.5	0
+340	-4.5	0
+341	-4.5	0
+342	-4.5	0
+343	-4.5	0
+344	-4.5	0
+345	-4.5	0
+346	-4.5	0
+347	-4.5	0
+348	-4.5	0
+349	-4.5	0
+350	-4.5	0
+351	-4.5	0
+352	-4.5	0
+353	-4.5	0
+354	-4.5	0
+355	-4.5	0
+356	-4.5	0
+357	-4.5	0
+358	-4.5	0
+359	-4.5	0
+360	-4.5	0
+0	-4	0
+1	-4	0
+2	-4	0
+3	-4	0
+4	-4	0
+5	-4	0
+6	-4	0
+7	-4	0
+8	-4	0
+9	-4	0
+10	-4	0
+11	-4	0
+12	-4	0
+13	-4	0
+14	-4	0
+15	-4	0
+16	-4	0
+17	-4	0
+18	-4	0
+19	-4	0
+20	-4	0
+21	-4	0
+22	-4	0
+23	-4	0
+24	-4	0
+25	-4	0
+26	-4	0
+27	-4	0
+28	-4	0
+29	-4	0
+30	-4	0
+31	-4	0
+32	-4	0
+33	-4	0
+34	-4	0
+35	-4	0
+36	-4	0
+37	-4	0
+38	-4	0
+39	-4	0
+40	-4	0
+41	-4	0
+42	-4	0
+43	-4	0
+44	-4	0
+45	-4	0
+46	-4	0
+47	-4	0
+48	-4	0
+49	-4	0
+50	-4	0
+51	-4	0
+52	-4	0
+53	-4	0
+54	-4	0
+55	-4	0
+56	-4	0
+57	-4	0
+58	-4	0
+59	-4	0
+60	-4	0
+61	-4	0
+62	-4	0
+63	-4	0
+64	-4	0
+65	-4	0
+66	-4	0
+67	-4	0
+68	-4	0
+69	-4	0
+70	-4	0
+71	-4	0
+72	-4	0
+73	-4	0
+74	-4	0
+75	-4	0
+76	-4	0
+77	-4	0
+78	-4	0
+79	-4	0
+80	-4	0
+81	-4	0
+82	-4	0
+83	-4	0
+84	-4	0
+85	-4	0
+86	-4	0
+87	-4	0
+88	-4	0
+89	-4	0
+90	-4	0
+91	-4	0
+92	-4	0
+93	-4	0
+94	-4	0
+95	-4	0
+96	-4	0
+97	-4	0
+98	-4	0
+99	-4	0
+100	-4	0
+101	-4	0
+102	-4	0
+103	-4	0
+104	-4	0
+105	-4	0
+106	-4	0
+107	-4	0
+108	-4	0
+109	-4	0
+110	-4	0
+111	-4	0
+112	-4	0
+113	-4	0
+114	-4	0
+115	-4	0
+116	-4	0
+117	-4	0
+118	-4	0
+119	-4	0
+120	-4	0
+121	-4	0
+122	-4	0
+123	-4	0
+124	-4	0
+125	-4	0
+126	-4	0
+127	-4	0
+128	-4	0
+129	-4	0
+130	-4	0
+131	-4	0
+132	-4	0
+133	-4	0
+134	-4	0
+135	-4	0
+136	-4	0
+137	-4	0
+138	-4	0
+139	-4	0
+140	-4	0
+141	-4	0
+142	-4	0
+143	-4	0
+144	-4	0
+145	-4	0
+146	-4	0
+147	-4	0
+148	-4	0
+149	-4	0
+150	-4	0
+151	-4	0
+152	-4	0
+153	-4	0
+154	-4	0
+155	-4	0
+156	-4	0
+157	-4	0
+158	-4	0
+159	-4	0
+160	-4	0
+161	-4	0
+162	-4	0
+163	-4	0
+164	-4	0
+165	-4	0
+166	-4	0
+167	-4	0
+168	-4	0
+169	-4	0
+170	-4	0
+171	-4	0
+172	-4	0
+173	-4	0
+174	-4	0
+175	-4	0
+176	-4	0
+177	-4	0
+178	-4	0
+179	-4	0
+180	-4	0
+181	-4	0
+182	-4	0
+183	-4	0
+184	-4	0
+185	-4	0
+186	-4	0
+187	-4	0
+188	-4	0
+189	-4	0
+190	-4	0
+191	-4	0
+192	-4	0
+193	-4	0
+194	-4	0
+195	-4	0
+196	-4	0
+197	-4	0
+198	-4	0
+199	-4	0
+200	-4	0
+201	-4	0
+202	-4	0
+203	-4	0
+204	-4	0
+205	-4	0
+206	-4	0
+207	-4	0
+208	-4	0
+209	-4	0
+210	-4	0
+211	-4	0
+212	-4	0
+213	-4	0
+214	-4	0
+215	-4	0
+216	-4	0
+217	-4	0
+218	-4	0
+219	-4	0
+220	-4	0
+221	-4	0
+222	-4	0
+223	-4	0
+224	-4	0
+225	-4	0
+226	-4	0
+227	-4	0
+228	-4	0
+229	-4	0
+230	-4	0
+231	-4	0
+232	-4	0
+233	-4	0
+234	-4	0
+235	-4	0
+236	-4	0
+237	-4	0
+238	-4	0
+239	-4	0
+240	-4	0
+241	-4	0
+242	-4	0
+243	-4	0
+244	-4	0
+245	-4	0
+246	-4	0
+247	-4	0
+248	-4	0
+249	-4	0
+250	-4	0
+251	-4	0
+252	-4	0
+253	-4	0
+254	-4	0
+255	-4	0
+256	-4	0
+257	-4	0
+258	-4	0
+259	-4	0
+260	-4	0
+261	-4	0
+262	-4	0
+263	-4	0
+264	-4	0
+265	-4	0
+266	-4	0
+267	-4	0
+268	-4	0
+269	-4	0
+270	-4	0
+271	-4	0
+272	-4	0
+273	-4	0
+274	-4	0
+275	-4	0
+276	-4	0
+277	-4	0
+278	-4	0
+279	-4	0
+280	-4	0
+281	-4	0
+282	-4	0
+283	-4	0
+284	-4	0
+285	-4	0
+286	-4	0
+287	-4	0
+288	-4	0
+289	-4	0
+290	-4	0
+291	-4	0
+292	-4	0
+293	-4	0
+294	-4	0
+295	-4	0
+296	-4	0
+297	-4	0
+298	-4	0
+299	-4	0
+300	-4	0
+301	-4	0
+302	-4	0
+303	-4	0
+304	-4	0
+305	-4	0
+306	-4	0
+307	-4	0
+308	-4	0
+309	-4	0
+310	-4	0
+311	-4	0
+312	-4	0
+313	-4	0
+314	-4	0
+315	-4	0
+316	-4	0
+317	-4	0
+318	-4	0
+319	-4	0
+320	-4	0
+321	-4	0
+322	-4	0
+323	-4	0
+324	-4	0
+325	-4	0
+326	-4	0
+327	-4	0
+328	-4	0
+329	-4	0
+330	-4	0
+331	-4	0
+332	-4	0
+333	-4	0
+334	-4	0
+335	-4	0
+336	-4	0
+337	-4	0
+338	-4	0
+339	-4	0
+340	-4	0
+341	-4	0
+342	-4	0
+343	-4	0
+344	-4	0
+345	-4	0
+346	-4	0
+347	-4	0
+348	-4	0
+349	-4	0
+350	-4	0
+351	-4	0
+352	-4	0
+353	-4	0
+354	-4	0
+355	-4	0
+356	-4	0
+357	-4	0
+358	-4	0
+359	-4	0
+360	-4	0
+0	-3.5	0
+1	-3.5	0
+2	-3.5	0
+3	-3.5	0
+4	-3.5	0
+5	-3.5	0
+6	-3.5	0
+7	-3.5	0
+8	-3.5	0
+9	-3.5	0
+10	-3.5	0
+11	-3.5	0
+12	-3.5	0
+13	-3.5	0
+14	-3.5	0
+15	-3.5	0
+16	-3.5	0
+17	-3.5	0
+18	-3.5	0
+19	-3.5	0
+20	-3.5	0
+21	-3.5	0
+22	-3.5	0
+23	-3.5	0
+24	-3.5	0
+25	-3.5	0
+26	-3.5	0
+27	-3.5	0
+28	-3.5	0
+29	-3.5	0
+30	-3.5	0
+31	-3.5	0
+32	-3.5	0
+33	-3.5	0
+34	-3.5	0
+35	-3.5	0
+36	-3.5	0
+37	-3.5	0
+38	-3.5	0
+39	-3.5	0
+40	-3.5	0
+41	-3.5	0
+42	-3.5	0
+43	-3.5	0
+44	-3.5	0
+45	-3.5	0
+46	-3.5	0
+47	-3.5	0
+48	-3.5	0
+49	-3.5	0
+50	-3.5	0
+51	-3.5	0
+52	-3.5	0
+53	-3.5	0
+54	-3.5	0
+55	-3.5	0
+56	-3.5	0
+57	-3.5	0
+58	-3.5	0
+59	-3.5	0
+60	-3.5	0
+61	-3.5	0
+62	-3.5	0
+63	-3.5	0
+64	-3.5	0
+65	-3.5	0
+66	-3.5	0
+67	-3.5	0
+68	-3.5	0
+69	-3.5	0
+70	-3.5	0
+71	-3.5	0
+72	-3.5	0
+73	-3.5	0
+74	-3.5	0
+75	-3.5	0
+76	-3.5	0
+77	-3.5	0
+78	-3.5	0
+79	-3.5	0
+80	-3.5	0
+81	-3.5	0
+82	-3.5	0
+83	-3.5	0
+84	-3.5	0
+85	-3.5	0
+86	-3.5	0
+87	-3.5	0
+88	-3.5	0
+89	-3.5	0
+90	-3.5	0
+91	-3.5	0
+92	-3.5	0
+93	-3.5	0
+94	-3.5	0
+95	-3.5	0
+96	-3.5	0
+97	-3.5	0
+98	-3.5	0
+99	-3.5	0
+100	-3.5	0
+101	-3.5	0
+102	-3.5	0
+103	-3.5	0
+104	-3.5	0
+105	-3.5	0
+106	-3.5	0
+107	-3.5	0
+108	-3.5	0
+109	-3.5	0
+110	-3.5	0
+111	-3.5	0
+112	-3.5	0
+113	-3.5	0
+114	-3.5	0
+115	-3.5	0
+116	-3.5	0
+117	-3.5	0
+118	-3.5	0
+119	-3.5	0
+120	-3.5	0
+121	-3.5	0
+122	-3.5	0
+123	-3.5	0
+124	-3.5	0
+125	-3.5	0
+126	-3.5	0
+127	-3.5	0
+128	-3.5	0
+129	-3.5	0
+130	-3.5	0
+131	-3.5	0
+132	-3.5	0
+133	-3.5	0
+134	-3.5	0
+135	-3.5	0
+136	-3.5	0
+137	-3.5	0
+138	-3.5	0
+139	-3.5	0
+140	-3.5	0
+141	-3.5	0
+142	-3.5	0
+143	-3.5	0
+144	-3.5	0
+145	-3.5	0
+146	-3.5	0
+147	-3.5	0
+148	-3.5	0
+149	-3.5	0
+150	-3.5	0
+151	-3.5	0
+152	-3.5	0
+153	-3.5	0
+154	-3.5	0
+155	-3.5	0
+156	-3.5	0
+157	-3.5	0
+158	-3.5	0
+159	-3.5	0
+160	-3.5	0
+161	-3.5	0
+162	-3.5	0
+163	-3.5	0
+164	-3.5	0
+165	-3.5	0
+166	-3.5	0
+167	-3.5	0
+168	-3.5	0
+169	-3.5	0
+170	-3.5	0
+171	-3.5	0
+172	-3.5	0
+173	-3.5	0
+174	-3.5	0
+175	-3.5	0
+176	-3.5	0
+177	-3.5	0
+178	-3.5	0
+179	-3.5	0
+180	-3.5	0
+181	-3.5	0
+182	-3.5	0
+183	-3.5	0
+184	-3.5	0
+185	-3.5	0
+186	-3.5	0
+187	-3.5	0
+188	-3.5	0
+189	-3.5	0
+190	-3.5	0
+191	-3.5	0
+192	-3.5	0
+193	-3.5	0
+194	-3.5	0
+195	-3.5	0
+196	-3.5	0
+197	-3.5	0
+198	-3.5	0
+199	-3.5	0
+200	-3.5	0
+201	-3.5	0
+202	-3.5	0
+203	-3.5	0
+204	-3.5	0
+205	-3.5	0
+206	-3.5	0
+207	-3.5	0
+208	-3.5	0
+209	-3.5	0
+210	-3.5	0
+211	-3.5	0
+212	-3.5	0
+213	-3.5	0
+214	-3.5	0
+215	-3.5	0
+216	-3.5	0
+217	-3.5	0
+218	-3.5	0
+219	-3.5	0
+220	-3.5	0
+221	-3.5	0
+222	-3.5	0
+223	-3.5	0
+224	-3.5	0
+225	-3.5	0
+226	-3.5	0
+227	-3.5	0
+228	-3.5	0
+229	-3.5	0
+230	-3.5	0
+231	-3.5	0
+232	-3.5	0
+233	-3.5	0
+234	-3.5	0
+235	-3.5	0
+236	-3.5	0
+237	-3.5	0
+238	-3.5	0
+239	-3.5	0
+240	-3.5	0
+241	-3.5	0
+242	-3.5	0
+243	-3.5	0
+244	-3.5	0
+245	-3.5	0
+246	-3.5	0
+247	-3.5	0
+248	-3.5	0
+249	-3.5	0
+250	-3.5	0
+251	-3.5	0
+252	-3.5	0
+253	-3.5	0
+254	-3.5	0
+255	-3.5	0
+256	-3.5	0
+257	-3.5	0
+258	-3.5	0
+259	-3.5	0
+260	-3.5	0
+261	-3.5	0
+262	-3.5	0
+263	-3.5	0
+264	-3.5	0
+265	-3.5	0
+266	-3.5	0
+267	-3.5	0
+268	-3.5	0
+269	-3.5	0
+270	-3.5	0
+271	-3.5	0
+272	-3.5	0
+273	-3.5	0
+274	-3.5	0
+275	-3.5	0
+276	-3.5	0
+277	-3.5	0
+278	-3.5	0
+279	-3.5	0
+280	-3.5	0
+281	-3.5	0
+282	-3.5	0
+283	-3.5	0
+284	-3.5	0
+285	-3.5	0
+286	-3.5	0
+287	-3.5	0
+288	-3.5	0
+289	-3.5	0
+290	-3.5	0
+291	-3.5	0
+292	-3.5	0
+293	-3.5	0
+294	-3.5	0
+295	-3.5	0
+296	-3.5	0
+297	-3.5	0
+298	-3.5	0
+299	-3.5	0
+300	-3.5	0
+301	-3.5	0
+302	-3.5	0
+303	-3.5	0
+304	-3.5	0
+305	-3.5	0
+306	-3.5	0
+307	-3.5	0
+308	-3.5	0
+309	-3.5	0
+310	-3.5	0
+311	-3.5	0
+312	-3.5	0
+313	-3.5	0
+314	-3.5	0
+315	-3.5	0
+316	-3.5	0
+317	-3.5	0
+318	-3.5	0
+319	-3.5	0
+320	-3.5	0
+321	-3.5	0
+322	-3.5	0
+323	-3.5	0
+324	-3.5	0
+325	-3.5	0
+326	-3.5	0
+327	-3.5	0
+328	-3.5	0
+329	-3.5	0
+330	-3.5	0
+331	-3.5	0
+332	-3.5	0
+333	-3.5	0
+334	-3.5	0
+335	-3.5	0
+336	-3.5	0
+337	-3.5	0
+338	-3.5	0
+339	-3.5	0
+340	-3.5	0
+341	-3.5	0
+342	-3.5	0
+343	-3.5	0
+344	-3.5	0
+345	-3.5	0
+346	-3.5	0
+347	-3.5	0
+348	-3.5	0
+349	-3.5	0
+350	-3.5	0
+351	-3.5	0
+352	-3.5	0
+353	-3.5	0
+354	-3.5	0
+355	-3.5	0
+356	-3.5	0
+357	-3.5	0
+358	-3.5	0
+359	-3.5	0
+360	-3.5	0
+0	-3	0
+1	-3	0
+2	-3	0
+3	-3	0
+4	-3	0
+5	-3	0
+6	-3	0
+7	-3	0
+8	-3	0
+9	-3	0
+10	-3	0
+11	-3	0
+12	-3	0
+13	-3	0
+14	-3	0
+15	-3	0
+16	-3	0
+17	-3	0
+18	-3	0
+19	-3	0
+20	-3	0
+21	-3	0
+22	-3	0
+23	-3	0
+24	-3	0
+25	-3	0
+26	-3	0
+27	-3	0
+28	-3	0
+29	-3	0
+30	-3	0
+31	-3	0
+32	-3	0
+33	-3	0
+34	-3	0
+35	-3	0
+36	-3	0
+37	-3	0
+38	-3	0
+39	-3	0
+40	-3	0
+41	-3	0
+42	-3	0
+43	-3	0
+44	-3	0
+45	-3	0
+46	-3	0
+47	-3	0
+48	-3	0
+49	-3	0
+50	-3	0
+51	-3	0
+52	-3	0
+53	-3	0
+54	-3	0
+55	-3	0
+56	-3	0
+57	-3	0
+58	-3	0
+59	-3	0
+60	-3	0
+61	-3	0
+62	-3	0
+63	-3	0
+64	-3	0
+65	-3	0
+66	-3	0
+67	-3	0
+68	-3	0
+69	-3	0
+70	-3	0
+71	-3	0
+72	-3	0
+73	-3	0
+74	-3	0
+75	-3	0
+76	-3	0
+77	-3	0
+78	-3	0
+79	-3	0
+80	-3	0
+81	-3	0
+82	-3	0
+83	-3	0
+84	-3	0
+85	-3	0
+86	-3	0
+87	-3	0
+88	-3	0
+89	-3	0
+90	-3	0
+91	-3	0
+92	-3	0
+93	-3	0
+94	-3	0
+95	-3	0
+96	-3	0
+97	-3	0
+98	-3	0
+99	-3	0
+100	-3	0
+101	-3	0
+102	-3	0
+103	-3	0
+104	-3	0
+105	-3	0
+106	-3	0
+107	-3	0
+108	-3	0
+109	-3	0
+110	-3	0
+111	-3	0
+112	-3	0
+113	-3	0
+114	-3	0
+115	-3	0
+116	-3	0
+117	-3	0
+118	-3	0
+119	-3	0
+120	-3	0
+121	-3	0
+122	-3	0
+123	-3	0
+124	-3	0
+125	-3	0
+126	-3	0
+127	-3	0
+128	-3	0
+129	-3	0
+130	-3	0
+131	-3	0
+132	-3	0
+133	-3	0
+134	-3	0
+135	-3	0
+136	-3	0
+137	-3	0
+138	-3	0
+139	-3	0
+140	-3	0
+141	-3	0
+142	-3	0
+143	-3	0
+144	-3	0
+145	-3	0
+146	-3	0
+147	-3	0
+148	-3	0
+149	-3	0
+150	-3	0
+151	-3	0
+152	-3	0
+153	-3	0
+154	-3	0
+155	-3	0
+156	-3	0
+157	-3	0
+158	-3	0
+159	-3	0
+160	-3	0
+161	-3	0
+162	-3	0
+163	-3	0
+164	-3	0
+165	-3	0
+166	-3	0
+167	-3	0
+168	-3	0
+169	-3	0
+170	-3	0
+171	-3	0
+172	-3	0
+173	-3	0
+174	-3	0
+175	-3	0
+176	-3	0
+177	-3	0
+178	-3	0
+179	-3	0
+180	-3	0
+181	-3	0
+182	-3	0
+183	-3	0
+184	-3	0
+185	-3	0
+186	-3	0
+187	-3	0
+188	-3	0
+189	-3	0
+190	-3	0
+191	-3	0
+192	-3	0
+193	-3	0
+194	-3	0
+195	-3	0
+196	-3	0
+197	-3	0
+198	-3	0
+199	-3	0
+200	-3	0
+201	-3	0
+202	-3	0
+203	-3	0
+204	-3	0
+205	-3	0
+206	-3	0
+207	-3	0
+208	-3	0
+209	-3	0
+210	-3	0
+211	-3	0
+212	-3	0
+213	-3	0
+214	-3	0
+215	-3	0
+216	-3	0
+217	-3	0
+218	-3	0
+219	-3	0
+220	-3	0
+221	-3	0
+222	-3	0
+223	-3	0
+224	-3	0
+225	-3	0
+226	-3	0
+227	-3	0
+228	-3	0
+229	-3	0
+230	-3	0
+231	-3	0
+232	-3	0
+233	-3	0
+234	-3	0
+235	-3	0
+236	-3	0
+237	-3	0
+238	-3	0
+239	-3	0
+240	-3	0
+241	-3	0
+242	-3	0
+243	-3	0
+244	-3	0
+245	-3	0
+246	-3	0
+247	-3	0
+248	-3	0
+249	-3	0
+250	-3	0
+251	-3	0
+252	-3	0
+253	-3	0
+254	-3	0
+255	-3	0
+256	-3	0
+257	-3	0
+258	-3	0
+259	-3	0
+260	-3	0
+261	-3	0
+262	-3	0
+263	-3	0
+264	-3	0
+265	-3	0
+266	-3	0
+267	-3	0
+268	-3	0
+269	-3	0
+270	-3	0
+271	-3	0
+272	-3	0
+273	-3	0
+274	-3	0
+275	-3	0
+276	-3	0
+277	-3	0
+278	-3	0
+279	-3	0
+280	-3	0
+281	-3	0
+282	-3	0
+283	-3	0
+284	-3	0
+285	-3	0
+286	-3	0
+287	-3	0
+288	-3	0
+289	-3	0
+290	-3	0
+291	-3	0
+292	-3	0
+293	-3	0
+294	-3	0
+295	-3	0
+296	-3	0
+297	-3	0
+298	-3	0
+299	-3	0
+300	-3	0
+301	-3	0
+302	-3	0
+303	-3	0
+304	-3	0
+305	-3	0
+306	-3	0
+307	-3	0
+308	-3	0
+309	-3	0
+310	-3	0
+311	-3	0
+312	-3	0
+313	-3	0
+314	-3	0
+315	-3	0
+316	-3	0
+317	-3	0
+318	-3	0
+319	-3	0
+320	-3	0
+321	-3	0
+322	-3	0
+323	-3	0
+324	-3	0
+325	-3	0
+326	-3	0
+327	-3	0
+328	-3	0
+329	-3	0
+330	-3	0
+331	-3	0
+332	-3	0
+333	-3	0
+334	-3	0
+335	-3	0
+336	-3	0
+337	-3	0
+338	-3	0
+339	-3	0
+340	-3	0
+341	-3	0
+342	-3	0
+343	-3	0
+344	-3	0
+345	-3	0
+346	-3	0
+347	-3	0
+348	-3	0
+349	-3	0
+350	-3	0
+351	-3	0
+352	-3	0
+353	-3	0
+354	-3	0
+355	-3	0
+356	-3	0
+357	-3	0
+358	-3	0
+359	-3	0
+360	-3	0
+0	-2.5	0
+1	-2.5	0
+2	-2.5	0
+3	-2.5	0
+4	-2.5	0
+5	-2.5	0
+6	-2.5	0
+7	-2.5	0
+8	-2.5	0
+9	-2.5	0
+10	-2.5	0
+11	-2.5	0
+12	-2.5	0
+13	-2.5	0
+14	-2.5	0
+15	-2.5	0
+16	-2.5	0
+17	-2.5	0
+18	-2.5	0
+19	-2.5	0
+20	-2.5	0
+21	-2.5	0
+22	-2.5	0
+23	-2.5	0
+24	-2.5	0
+25	-2.5	0
+26	-2.5	0
+27	-2.5	0
+28	-2.5	0
+29	-2.5	0
+30	-2.5	0
+31	-2.5	0
+32	-2.5	0
+33	-2.5	0
+34	-2.5	0
+35	-2.5	0
+36	-2.5	0
+37	-2.5	0
+38	-2.5	0
+39	-2.5	0
+40	-2.5	0
+41	-2.5	0
+42	-2.5	0
+43	-2.5	0
+44	-2.5	0
+45	-2.5	0
+46	-2.5	0
+47	-2.5	0
+48	-2.5	0
+49	-2.5	0
+50	-2.5	0
+51	-2.5	0
+52	-2.5	0
+53	-2.5	0
+54	-2.5	0
+55	-2.5	0
+56	-2.5	0
+57	-2.5	0
+58	-2.5	0
+59	-2.5	0
+60	-2.5	0
+61	-2.5	0
+62	-2.5	0
+63	-2.5	0
+64	-2.5	0
+65	-2.5	0
+66	-2.5	0
+67	-2.5	0
+68	-2.5	0
+69	-2.5	0
+70	-2.5	0
+71	-2.5	0
+72	-2.5	0
+73	-2.5	0
+74	-2.5	0
+75	-2.5	0
+76	-2.5	0
+77	-2.5	0
+78	-2.5	0
+79	-2.5	0
+80	-2.5	0
+81	-2.5	0
+82	-2.5	0
+83	-2.5	0
+84	-2.5	0
+85	-2.5	0
+86	-2.5	0
+87	-2.5	0
+88	-2.5	0
+89	-2.5	0
+90	-2.5	0
+91	-2.5	0
+92	-2.5	0
+93	-2.5	0
+94	-2.5	0
+95	-2.5	0
+96	-2.5	0
+97	-2.5	0
+98	-2.5	0
+99	-2.5	0
+100	-2.5	0
+101	-2.5	0
+102	-2.5	0
+103	-2.5	0
+104	-2.5	0
+105	-2.5	0
+106	-2.5	0
+107	-2.5	0
+108	-2.5	0
+109	-2.5	0
+110	-2.5	0
+111	-2.5	0
+112	-2.5	0
+113	-2.5	0
+114	-2.5	0
+115	-2.5	0
+116	-2.5	0
+117	-2.5	0
+118	-2.5	0
+119	-2.5	0
+120	-2.5	0
+121	-2.5	0
+122	-2.5	0
+123	-2.5	0
+124	-2.5	0
+125	-2.5	0
+126	-2.5	0
+127	-2.5	0
+128	-2.5	0
+129	-2.5	0
+130	-2.5	0
+131	-2.5	0
+132	-2.5	0
+133	-2.5	0
+134	-2.5	0
+135	-2.5	0
+136	-2.5	0
+137	-2.5	0
+138	-2.5	0
+139	-2.5	0
+140	-2.5	0
+141	-2.5	0
+142	-2.5	0
+143	-2.5	0
+144	-2.5	0
+145	-2.5	0
+146	-2.5	0
+147	-2.5	0
+148	-2.5	0
+149	-2.5	0
+150	-2.5	0
+151	-2.5	0
+152	-2.5	0
+153	-2.5	0
+154	-2.5	0
+155	-2.5	0
+156	-2.5	0
+157	-2.5	0
+158	-2.5	0
+159	-2.5	0
+160	-2.5	0
+161	-2.5	0
+162	-2.5	0
+163	-2.5	0
+164	-2.5	0
+165	-2.5	0
+166	-2.5	0
+167	-2.5	0
+168	-2.5	0
+169	-2.5	0
+170	-2.5	0
+171	-2.5	0
+172	-2.5	0
+173	-2.5	0
+174	-2.5	0
+175	-2.5	0
+176	-2.5	0
+177	-2.5	0
+178	-2.5	0
+179	-2.5	0
+180	-2.5	0
+181	-2.5	0
+182	-2.5	0
+183	-2.5	0
+184	-2.5	0
+185	-2.5	0
+186	-2.5	0
+187	-2.5	0
+188	-2.5	0
+189	-2.5	0
+190	-2.5	0
+191	-2.5	0
+192	-2.5	0
+193	-2.5	0
+194	-2.5	0
+195	-2.5	0
+196	-2.5	0
+197	-2.5	0
+198	-2.5	0
+199	-2.5	0
+200	-2.5	0
+201	-2.5	0
+202	-2.5	0
+203	-2.5	0
+204	-2.5	0
+205	-2.5	0
+206	-2.5	0
+207	-2.5	0
+208	-2.5	0
+209	-2.5	0
+210	-2.5	0
+211	-2.5	0
+212	-2.5	0
+213	-2.5	0
+214	-2.5	0
+215	-2.5	0
+216	-2.5	0
+217	-2.5	0
+218	-2.5	0
+219	-2.5	0
+220	-2.5	0
+221	-2.5	0
+222	-2.5	0
+223	-2.5	0
+224	-2.5	0
+225	-2.5	0
+226	-2.5	0
+227	-2.5	0
+228	-2.5	0
+229	-2.5	0
+230	-2.5	0
+231	-2.5	0
+232	-2.5	0
+233	-2.5	0
+234	-2.5	0
+235	-2.5	0
+236	-2.5	0
+237	-2.5	0
+238	-2.5	0
+239	-2.5	0
+240	-2.5	0
+241	-2.5	0
+242	-2.5	0
+243	-2.5	0
+244	-2.5	0
+245	-2.5	0
+246	-2.5	0
+247	-2.5	0
+248	-2.5	0
+249	-2.5	0
+250	-2.5	0
+251	-2.5	0
+252	-2.5	0
+253	-2.5	0
+254	-2.5	0
+255	-2.5	0
+256	-2.5	0
+257	-2.5	0
+258	-2.5	0
+259	-2.5	0
+260	-2.5	0
+261	-2.5	0
+262	-2.5	0
+263	-2.5	0
+264	-2.5	0
+265	-2.5	0
+266	-2.5	0
+267	-2.5	0
+268	-2.5	0
+269	-2.5	0
+270	-2.5	0
+271	-2.5	0
+272	-2.5	0
+273	-2.5	0
+274	-2.5	0
+275	-2.5	0
+276	-2.5	0
+277	-2.5	0
+278	-2.5	0
+279	-2.5	0
+280	-2.5	0
+281	-2.5	0
+282	-2.5	0
+283	-2.5	0
+284	-2.5	0
+285	-2.5	0
+286	-2.5	0
+287	-2.5	0
+288	-2.5	0
+289	-2.5	0
+290	-2.5	0
+291	-2.5	0
+292	-2.5	0
+293	-2.5	0
+294	-2.5	0
+295	-2.5	0
+296	-2.5	0
+297	-2.5	0
+298	-2.5	0
+299	-2.5	0
+300	-2.5	0
+301	-2.5	0
+302	-2.5	0
+303	-2.5	0
+304	-2.5	0
+305	-2.5	0
+306	-2.5	0
+307	-2.5	0
+308	-2.5	0
+309	-2.5	0
+310	-2.5	0
+311	-2.5	0
+312	-2.5	0
+313	-2.5	0
+314	-2.5	0
+315	-2.5	0
+316	-2.5	0
+317	-2.5	0
+318	-2.5	0
+319	-2.5	0
+320	-2.5	0
+321	-2.5	0
+322	-2.5	0
+323	-2.5	0
+324	-2.5	0
+325	-2.5	0
+326	-2.5	0
+327	-2.5	0
+328	-2.5	0
+329	-2.5	0
+330	-2.5	0
+331	-2.5	0
+332	-2.5	0
+333	-2.5	0
+334	-2.5	0
+335	-2.5	0
+336	-2.5	0
+337	-2.5	0
+338	-2.5	0
+339	-2.5	0
+340	-2.5	0
+341	-2.5	0
+342	-2.5	0
+343	-2.5	0
+344	-2.5	0
+345	-2.5	0
+346	-2.5	0
+347	-2.5	0
+348	-2.5	0
+349	-2.5	0
+350	-2.5	0
+351	-2.5	0
+352	-2.5	0
+353	-2.5	0
+354	-2.5	0
+355	-2.5	0
+356	-2.5	0
+357	-2.5	0
+358	-2.5	0
+359	-2.5	0
+360	-2.5	0
+0	-2	0
+1	-2	0
+2	-2	0
+3	-2	0
+4	-2	0
+5	-2	0
+6	-2	0
+7	-2	0
+8	-2	0
+9	-2	0
+10	-2	0
+11	-2	0
+12	-2	0
+13	-2	0
+14	-2	0
+15	-2	0
+16	-2	0
+17	-2	0
+18	-2	0
+19	-2	0
+20	-2	0
+21	-2	0
+22	-2	0
+23	-2	0
+24	-2	0
+25	-2	0
+26	-2	0
+27	-2	0
+28	-2	0
+29	-2	0
+30	-2	0
+31	-2	0
+32	-2	0
+33	-2	0
+34	-2	0
+35	-2	0
+36	-2	0
+37	-2	0
+38	-2	0
+39	-2	0
+40	-2	0
+41	-2	0
+42	-2	0
+43	-2	0
+44	-2	0
+45	-2	0
+46	-2	0
+47	-2	0
+48	-2	0
+49	-2	0
+50	-2	0
+51	-2	0
+52	-2	0
+53	-2	0
+54	-2	0
+55	-2	0
+56	-2	0
+57	-2	0
+58	-2	0
+59	-2	0
+60	-2	0
+61	-2	0
+62	-2	0
+63	-2	0
+64	-2	0
+65	-2	0
+66	-2	0
+67	-2	0
+68	-2	0
+69	-2	0
+70	-2	0
+71	-2	0
+72	-2	0
+73	-2	0
+74	-2	0
+75	-2	0
+76	-2	0
+77	-2	0
+78	-2	0
+79	-2	0
+80	-2	0
+81	-2	0
+82	-2	0
+83	-2	0
+84	-2	0
+85	-2	0
+86	-2	0
+87	-2	0
+88	-2	0
+89	-2	0
+90	-2	0
+91	-2	0
+92	-2	0
+93	-2	0
+94	-2	0
+95	-2	0
+96	-2	0
+97	-2	0
+98	-2	0
+99	-2	0
+100	-2	0
+101	-2	0
+102	-2	0
+103	-2	0
+104	-2	0
+105	-2	0
+106	-2	0
+107	-2	0
+108	-2	0
+109	-2	0
+110	-2	0
+111	-2	0
+112	-2	0
+113	-2	0
+114	-2	0
+115	-2	0
+116	-2	0
+117	-2	0
+118	-2	0
+119	-2	0
+120	-2	0
+121	-2	0
+122	-2	0
+123	-2	0
+124	-2	0
+125	-2	0
+126	-2	0
+127	-2	0
+128	-2	0
+129	-2	0
+130	-2	0
+131	-2	0
+132	-2	0
+133	-2	0
+134	-2	0
+135	-2	0
+136	-2	0
+137	-2	0
+138	-2	0
+139	-2	0
+140	-2	0
+141	-2	0
+142	-2	0
+143	-2	0
+144	-2	0
+145	-2	0
+146	-2	0
+147	-2	0
+148	-2	0
+149	-2	0
+150	-2	0
+151	-2	0
+152	-2	0
+153	-2	0
+154	-2	0
+155	-2	0
+156	-2	0
+157	-2	0
+158	-2	0
+159	-2	0
+160	-2	0
+161	-2	0
+162	-2	0
+163	-2	0
+164	-2	0
+165	-2	0
+166	-2	0
+167	-2	0
+168	-2	0
+169	-2	0
+170	-2	0
+171	-2	0
+172	-2	0
+173	-2	0
+174	-2	0
+175	-2	0
+176	-2	0
+177	-2	0
+178	-2	0
+179	-2	0
+180	-2	0
+181	-2	0
+182	-2	0
+183	-2	0
+184	-2	0
+185	-2	0
+186	-2	0
+187	-2	0
+188	-2	0
+189	-2	0
+190	-2	0
+191	-2	0
+192	-2	0
+193	-2	0
+194	-2	0
+195	-2	0
+196	-2	0
+197	-2	0
+198	-2	0
+199	-2	0
+200	-2	0
+201	-2	0
+202	-2	0
+203	-2	0
+204	-2	0
+205	-2	0
+206	-2	0
+207	-2	0
+208	-2	0
+209	-2	0
+210	-2	0
+211	-2	0
+212	-2	0
+213	-2	0
+214	-2	0
+215	-2	0
+216	-2	0
+217	-2	0
+218	-2	0
+219	-2	0
+220	-2	0
+221	-2	0
+222	-2	0
+223	-2	0
+224	-2	0
+225	-2	0
+226	-2	0
+227	-2	0
+228	-2	0
+229	-2	0
+230	-2	0
+231	-2	0
+232	-2	0
+233	-2	0
+234	-2	0
+235	-2	0
+236	-2	0
+237	-2	0
+238	-2	0
+239	-2	0
+240	-2	0
+241	-2	0
+242	-2	0
+243	-2	0
+244	-2	0
+245	-2	0
+246	-2	0
+247	-2	0
+248	-2	0
+249	-2	0
+250	-2	0
+251	-2	0
+252	-2	0
+253	-2	0
+254	-2	0
+255	-2	0
+256	-2	0
+257	-2	0
+258	-2	0
+259	-2	0
+260	-2	0
+261	-2	0
+262	-2	0
+263	-2	0
+264	-2	0
+265	-2	0
+266	-2	0
+267	-2	0
+268	-2	0
+269	-2	0
+270	-2	0
+271	-2	0
+272	-2	0
+273	-2	0
+274	-2	0
+275	-2	0
+276	-2	0
+277	-2	0
+278	-2	0
+279	-2	0
+280	-2	0
+281	-2	0
+282	-2	0
+283	-2	0
+284	-2	0
+285	-2	0
+286	-2	0
+287	-2	0
+288	-2	0
+289	-2	0
+290	-2	0
+291	-2	0
+292	-2	0
+293	-2	0
+294	-2	0
+295	-2	0
+296	-2	0
+297	-2	0
+298	-2	0
+299	-2	0
+300	-2	0
+301	-2	0
+302	-2	0
+303	-2	0
+304	-2	0
+305	-2	0
+306	-2	0
+307	-2	0
+308	-2	0
+309	-2	0
+310	-2	0
+311	-2	0
+312	-2	0
+313	-2	0
+314	-2	0
+315	-2	0
+316	-2	0
+317	-2	0
+318	-2	0
+319	-2	0
+320	-2	0
+321	-2	0
+322	-2	0
+323	-2	0
+324	-2	0
+325	-2	0
+326	-2	0
+327	-2	0
+328	-2	0
+329	-2	0
+330	-2	0
+331	-2	0
+332	-2	0
+333	-2	0
+334	-2	0
+335	-2	0
+336	-2	0
+337	-2	0
+338	-2	0
+339	-2	0
+340	-2	0
+341	-2	0
+342	-2	0
+343	-2	0
+344	-2	0
+345	-2	0
+346	-2	0
+347	-2	0
+348	-2	0
+349	-2	0
+350	-2	0
+351	-2	0
+352	-2	0
+353	-2	0
+354	-2	0
+355	-2	0
+356	-2	0
+357	-2	0
+358	-2	0
+359	-2	0
+360	-2	0
+0	-1.5	0
+1	-1.5	0
+2	-1.5	0
+3	-1.5	0
+4	-1.5	0
+5	-1.5	0
+6	-1.5	0
+7	-1.5	0
+8	-1.5	0
+9	-1.5	0
+10	-1.5	0
+11	-1.5	0
+12	-1.5	0
+13	-1.5	0
+14	-1.5	0
+15	-1.5	0
+16	-1.5	0
+17	-1.5	0
+18	-1.5	0
+19	-1.5	0
+20	-1.5	0
+21	-1.5	0
+22	-1.5	0
+23	-1.5	0
+24	-1.5	0
+25	-1.5	0
+26	-1.5	0
+27	-1.5	0
+28	-1.5	0
+29	-1.5	0
+30	-1.5	0
+31	-1.5	0
+32	-1.5	0
+33	-1.5	0
+34	-1.5	0
+35	-1.5	0
+36	-1.5	0
+37	-1.5	0
+38	-1.5	0
+39	-1.5	0
+40	-1.5	0
+41	-1.5	0
+42	-1.5	0
+43	-1.5	0
+44	-1.5	0
+45	-1.5	0
+46	-1.5	0
+47	-1.5	0
+48	-1.5	0
+49	-1.5	0
+50	-1.5	0
+51	-1.5	0
+52	-1.5	0
+53	-1.5	0
+54	-1.5	0
+55	-1.5	0
+56	-1.5	0
+57	-1.5	0
+58	-1.5	0
+59	-1.5	0
+60	-1.5	0
+61	-1.5	0
+62	-1.5	0
+63	-1.5	0
+64	-1.5	0
+65	-1.5	0
+66	-1.5	0
+67	-1.5	0
+68	-1.5	0
+69	-1.5	0
+70	-1.5	0
+71	-1.5	0
+72	-1.5	0
+73	-1.5	0
+74	-1.5	0
+75	-1.5	0
+76	-1.5	0
+77	-1.5	0
+78	-1.5	0
+79	-1.5	0
+80	-1.5	0
+81	-1.5	0
+82	-1.5	0
+83	-1.5	0
+84	-1.5	0
+85	-1.5	0
+86	-1.5	0
+87	-1.5	0
+88	-1.5	0
+89	-1.5	0
+90	-1.5	0
+91	-1.5	0
+92	-1.5	0
+93	-1.5	0
+94	-1.5	0
+95	-1.5	0
+96	-1.5	0
+97	-1.5	0
+98	-1.5	0
+99	-1.5	0
+100	-1.5	0
+101	-1.5	0
+102	-1.5	0
+103	-1.5	0
+104	-1.5	0
+105	-1.5	0
+106	-1.5	0
+107	-1.5	0
+108	-1.5	0
+109	-1.5	0
+110	-1.5	0
+111	-1.5	0
+112	-1.5	0
+113	-1.5	0
+114	-1.5	0
+115	-1.5	0
+116	-1.5	0
+117	-1.5	0
+118	-1.5	0
+119	-1.5	0
+120	-1.5	0
+121	-1.5	0
+122	-1.5	0
+123	-1.5	0
+124	-1.5	0
+125	-1.5	0
+126	-1.5	0
+127	-1.5	0
+128	-1.5	0
+129	-1.5	0
+130	-1.5	0
+131	-1.5	0
+132	-1.5	0
+133	-1.5	0
+134	-1.5	0
+135	-1.5	0
+136	-1.5	0
+137	-1.5	0
+138	-1.5	0
+139	-1.5	0
+140	-1.5	0
+141	-1.5	0
+142	-1.5	0
+143	-1.5	0
+144	-1.5	0
+145	-1.5	0
+146	-1.5	0
+147	-1.5	0
+148	-1.5	0
+149	-1.5	0
+150	-1.5	0
+151	-1.5	0
+152	-1.5	0
+153	-1.5	0
+154	-1.5	0
+155	-1.5	0
+156	-1.5	0
+157	-1.5	0
+158	-1.5	0
+159	-1.5	0
+160	-1.5	0
+161	-1.5	0
+162	-1.5	0
+163	-1.5	0
+164	-1.5	0
+165	-1.5	0
+166	-1.5	0
+167	-1.5	0
+168	-1.5	0
+169	-1.5	0
+170	-1.5	0
+171	-1.5	0
+172	-1.5	0
+173	-1.5	0
+174	-1.5	0
+175	-1.5	0
+176	-1.5	0
+177	-1.5	0
+178	-1.5	0
+179	-1.5	0
+180	-1.5	0
+181	-1.5	0
+182	-1.5	0
+183	-1.5	0
+184	-1.5	0
+185	-1.5	0
+186	-1.5	0
+187	-1.5	0
+188	-1.5	0
+189	-1.5	0
+190	-1.5	0
+191	-1.5	0
+192	-1.5	0
+193	-1.5	0
+194	-1.5	0
+195	-1.5	0
+196	-1.5	0
+197	-1.5	0
+198	-1.5	0
+199	-1.5	0
+200	-1.5	0
+201	-1.5	0
+202	-1.5	0
+203	-1.5	0
+204	-1.5	0
+205	-1.5	0
+206	-1.5	0
+207	-1.5	0
+208	-1.5	0
+209	-1.5	0
+210	-1.5	0
+211	-1.5	0
+212	-1.5	0
+213	-1.5	0
+214	-1.5	0
+215	-1.5	0
+216	-1.5	0
+217	-1.5	0
+218	-1.5	0
+219	-1.5	0
+220	-1.5	0
+221	-1.5	0
+222	-1.5	0
+223	-1.5	0
+224	-1.5	0
+225	-1.5	0
+226	-1.5	0
+227	-1.5	0
+228	-1.5	0
+229	-1.5	0
+230	-1.5	0
+231	-1.5	0
+232	-1.5	0
+233	-1.5	0
+234	-1.5	0
+235	-1.5	0
+236	-1.5	0
+237	-1.5	0
+238	-1.5	0
+239	-1.5	0
+240	-1.5	0
+241	-1.5	0
+242	-1.5	0
+243	-1.5	0
+244	-1.5	0
+245	-1.5	0
+246	-1.5	0
+247	-1.5	0
+248	-1.5	0
+249	-1.5	0
+250	-1.5	0
+251	-1.5	0
+252	-1.5	0
+253	-1.5	0
+254	-1.5	0
+255	-1.5	0
+256	-1.5	0
+257	-1.5	0
+258	-1.5	0
+259	-1.5	0
+260	-1.5	0
+261	-1.5	0
+262	-1.5	0
+263	-1.5	0
+264	-1.5	0
+265	-1.5	0
+266	-1.5	0
+267	-1.5	0
+268	-1.5	0
+269	-1.5	0
+270	-1.5	0
+271	-1.5	0
+272	-1.5	0
+273	-1.5	0
+274	-1.5	0
+275	-1.5	0
+276	-1.5	0
+277	-1.5	0
+278	-1.5	0
+279	-1.5	0
+280	-1.5	0
+281	-1.5	0
+282	-1.5	0
+283	-1.5	0
+284	-1.5	0
+285	-1.5	0
+286	-1.5	0
+287	-1.5	0
+288	-1.5	0
+289	-1.5	0
+290	-1.5	0
+291	-1.5	0
+292	-1.5	0
+293	-1.5	0
+294	-1.5	0
+295	-1.5	0
+296	-1.5	0
+297	-1.5	0
+298	-1.5	0
+299	-1.5	0
+300	-1.5	0
+301	-1.5	0
+302	-1.5	0
+303	-1.5	0
+304	-1.5	0
+305	-1.5	0
+306	-1.5	0
+307	-1.5	0
+308	-1.5	0
+309	-1.5	0
+310	-1.5	0
+311	-1.5	0
+312	-1.5	0
+313	-1.5	0
+314	-1.5	0
+315	-1.5	0
+316	-1.5	0
+317	-1.5	0
+318	-1.5	0
+319	-1.5	0
+320	-1.5	0
+321	-1.5	0
+322	-1.5	0
+323	-1.5	0
+324	-1.5	0
+325	-1.5	0
+326	-1.5	0
+327	-1.5	0
+328	-1.5	0
+329	-1.5	0
+330	-1.5	0
+331	-1.5	0
+332	-1.5	0
+333	-1.5	0
+334	-1.5	0
+335	-1.5	0
+336	-1.5	0
+337	-1.5	0
+338	-1.5	0
+339	-1.5	0
+340	-1.5	0
+341	-1.5	0
+342	-1.5	0
+343	-1.5	0
+344	-1.5	0
+345	-1.5	0
+346	-1.5	0
+347	-1.5	0
+348	-1.5	0
+349	-1.5	0
+350	-1.5	0
+351	-1.5	0
+352	-1.5	0
+353	-1.5	0
+354	-1.5	0
+355	-1.5	0
+356	-1.5	0
+357	-1.5	0
+358	-1.5	0
+359	-1.5	0
+360	-1.5	0
+0	-1	0
+1	-1	0
+2	-1	0
+3	-1	0
+4	-1	0
+5	-1	0
+6	-1	0
+7	-1	0
+8	-1	0
+9	-1	0
+10	-1	0
+11	-1	0
+12	-1	0
+13	-1	0
+14	-1	0
+15	-1	0
+16	-1	0
+17	-1	0
+18	-1	0
+19	-1	0
+20	-1	0
+21	-1	0
+22	-1	0
+23	-1	0
+24	-1	0
+25	-1	0
+26	-1	0
+27	-1	0
+28	-1	0
+29	-1	0
+30	-1	0
+31	-1	0
+32	-1	0
+33	-1	0
+34	-1	0
+35	-1	0
+36	-1	0
+37	-1	0
+38	-1	0
+39	-1	0
+40	-1	0
+41	-1	0
+42	-1	0
+43	-1	0
+44	-1	0
+45	-1	0
+46	-1	0
+47	-1	0
+48	-1	0
+49	-1	0
+50	-1	0
+51	-1	0
+52	-1	0
+53	-1	0
+54	-1	0
+55	-1	0
+56	-1	0
+57	-1	0
+58	-1	0
+59	-1	0
+60	-1	0
+61	-1	0
+62	-1	0
+63	-1	0
+64	-1	0
+65	-1	0
+66	-1	0
+67	-1	0
+68	-1	0
+69	-1	0
+70	-1	0
+71	-1	0
+72	-1	0
+73	-1	0
+74	-1	0
+75	-1	0
+76	-1	0
+77	-1	0
+78	-1	0
+79	-1	0
+80	-1	0
+81	-1	0
+82	-1	0
+83	-1	0
+84	-1	0
+85	-1	0
+86	-1	0
+87	-1	0
+88	-1	0
+89	-1	0
+90	-1	0
+91	-1	0
+92	-1	0
+93	-1	0
+94	-1	0
+95	-1	0
+96	-1	0
+97	-1	0
+98	-1	0
+99	-1	0
+100	-1	0
+101	-1	0
+102	-1	0
+103	-1	0
+104	-1	0
+105	-1	0
+106	-1	0
+107	-1	0
+108	-1	0
+109	-1	0
+110	-1	0
+111	-1	0
+112	-1	0
+113	-1	0
+114	-1	0
+115	-1	0
+116	-1	0
+117	-1	0
+118	-1	0
+119	-1	0
+120	-1	0
+121	-1	0
+122	-1	0
+123	-1	0
+124	-1	0
+125	-1	0
+126	-1	0
+127	-1	0
+128	-1	0
+129	-1	0
+130	-1	0
+131	-1	0
+132	-1	0
+133	-1	0
+134	-1	0
+135	-1	0
+136	-1	0
+137	-1	0
+138	-1	0
+139	-1	0
+140	-1	0
+141	-1	0
+142	-1	0
+143	-1	0
+144	-1	0
+145	-1	0
+146	-1	0
+147	-1	0
+148	-1	0
+149	-1	0
+150	-1	0
+151	-1	0
+152	-1	0
+153	-1	0
+154	-1	0
+155	-1	0
+156	-1	0
+157	-1	0
+158	-1	0
+159	-1	0
+160	-1	0
+161	-1	0
+162	-1	0
+163	-1	0
+164	-1	0
+165	-1	0
+166	-1	0
+167	-1	0
+168	-1	0
+169	-1	0
+170	-1	0
+171	-1	0
+172	-1	0
+173	-1	0
+174	-1	0
+175	-1	0
+176	-1	0
+177	-1	0
+178	-1	0
+179	-1	0
+180	-1	0
+181	-1	0
+182	-1	0
+183	-1	0
+184	-1	0
+185	-1	0
+186	-1	0
+187	-1	0
+188	-1	0
+189	-1	0
+190	-1	0
+191	-1	0
+192	-1	0
+193	-1	0
+194	-1	0
+195	-1	0
+196	-1	0
+197	-1	0
+198	-1	0
+199	-1	0
+200	-1	0
+201	-1	0
+202	-1	0
+203	-1	0
+204	-1	0
+205	-1	0
+206	-1	0
+207	-1	0
+208	-1	0
+209	-1	0
+210	-1	0
+211	-1	0
+212	-1	0
+213	-1	0
+214	-1	0
+215	-1	0
+216	-1	0
+217	-1	0
+218	-1	0
+219	-1	0
+220	-1	0
+221	-1	0
+222	-1	0
+223	-1	0
+224	-1	0
+225	-1	0
+226	-1	0
+227	-1	0
+228	-1	0
+229	-1	0
+230	-1	0
+231	-1	0
+232	-1	0
+233	-1	0
+234	-1	0
+235	-1	0
+236	-1	0
+237	-1	0
+238	-1	0
+239	-1	0
+240	-1	0
+241	-1	0
+242	-1	0
+243	-1	0
+244	-1	0
+245	-1	0
+246	-1	0
+247	-1	0
+248	-1	0
+249	-1	0
+250	-1	0
+251	-1	0
+252	-1	0
+253	-1	0
+254	-1	0
+255	-1	0
+256	-1	0
+257	-1	0
+258	-1	0
+259	-1	0
+260	-1	0
+261	-1	0
+262	-1	0
+263	-1	0
+264	-1	0
+265	-1	0
+266	-1	0
+267	-1	0
+268	-1	0
+269	-1	0
+270	-1	0
+271	-1	0
+272	-1	0
+273	-1	0
+274	-1	0
+275	-1	0
+276	-1	0
+277	-1	0
+278	-1	0
+279	-1	0
+280	-1	0
+281	-1	0
+282	-1	0
+283	-1	0
+284	-1	0
+285	-1	0
+286	-1	0
+287	-1	0
+288	-1	0
+289	-1	0
+290	-1	0
+291	-1	0
+292	-1	0
+293	-1	0
+294	-1	0
+295	-1	0
+296	-1	0
+297	-1	0
+298	-1	0
+299	-1	0
+300	-1	0
+301	-1	0
+302	-1	0
+303	-1	0
+304	-1	0
+305	-1	0
+306	-1	0
+307	-1	0
+308	-1	0
+309	-1	0
+310	-1	0
+311	-1	0
+312	-1	0
+313	-1	0
+314	-1	0
+315	-1	0
+316	-1	0
+317	-1	0
+318	-1	0
+319	-1	0
+320	-1	0
+321	-1	0
+322	-1	0
+323	-1	0
+324	-1	0
+325	-1	0
+326	-1	0
+327	-1	0
+328	-1	0
+329	-1	0
+330	-1	0
+331	-1	0
+332	-1	0
+333	-1	0
+334	-1	0
+335	-1	0
+336	-1	0
+337	-1	0
+338	-1	0
+339	-1	0
+340	-1	0
+341	-1	0
+342	-1	0
+343	-1	0
+344	-1	0
+345	-1	0
+346	-1	0
+347	-1	0
+348	-1	0
+349	-1	0
+350	-1	0
+351	-1	0
+352	-1	0
+353	-1	0
+354	-1	0
+355	-1	0
+356	-1	0
+357	-1	0
+358	-1	0
+359	-1	0
+360	-1	0
+0	-0.5	0
+1	-0.5	0
+2	-0.5	0
+3	-0.5	0
+4	-0.5	0
+5	-0.5	0
+6	-0.5	0
+7	-0.5	0
+8	-0.5	0
+9	-0.5	0
+10	-0.5	0
+11	-0.5	0
+12	-0.5	0
+13	-0.5	0
+14	-0.5	0
+15	-0.5	0
+16	-0.5	0
+17	-0.5	0
+18	-0.5	0
+19	-0.5	0
+20	-0.5	0
+21	-0.5	0
+22	-0.5	0
+23	-0.5	0
+24	-0.5	0
+25	-0.5	0
+26	-0.5	0
+27	-0.5	0
+28	-0.5	0
+29	-0.5	0
+30	-0.5	0
+31	-0.5	0
+32	-0.5	0
+33	-0.5	0
+34	-0.5	0
+35	-0.5	0
+36	-0.5	0
+37	-0.5	0
+38	-0.5	0
+39	-0.5	0
+40	-0.5	0
+41	-0.5	0
+42	-0.5	0
+43	-0.5	0
+44	-0.5	0
+45	-0.5	0
+46	-0.5	0
+47	-0.5	0
+48	-0.5	0
+49	-0.5	0
+50	-0.5	0
+51	-0.5	0
+52	-0.5	0
+53	-0.5	0
+54	-0.5	0
+55	-0.5	0
+56	-0.5	0
+57	-0.5	0
+58	-0.5	0
+59	-0.5	0
+60	-0.5	0
+61	-0.5	0
+62	-0.5	0
+63	-0.5	0
+64	-0.5	0
+65	-0.5	0
+66	-0.5	0
+67	-0.5	0
+68	-0.5	0
+69	-0.5	0
+70	-0.5	0
+71	-0.5	0
+72	-0.5	0
+73	-0.5	0
+74	-0.5	0
+75	-0.5	0
+76	-0.5	0
+77	-0.5	0
+78	-0.5	0
+79	-0.5	0
+80	-0.5	0
+81	-0.5	0
+82	-0.5	0
+83	-0.5	0
+84	-0.5	0
+85	-0.5	0
+86	-0.5	0
+87	-0.5	0
+88	-0.5	0
+89	-0.5	0
+90	-0.5	0
+91	-0.5	0
+92	-0.5	0
+93	-0.5	0
+94	-0.5	0
+95	-0.5	0
+96	-0.5	0
+97	-0.5	0
+98	-0.5	0
+99	-0.5	0
+100	-0.5	0
+101	-0.5	0
+102	-0.5	0
+103	-0.5	0
+104	-0.5	0
+105	-0.5	0
+106	-0.5	0
+107	-0.5	0
+108	-0.5	0
+109	-0.5	0
+110	-0.5	0
+111	-0.5	0
+112	-0.5	0
+113	-0.5	0
+114	-0.5	0
+115	-0.5	0
+116	-0.5	0
+117	-0.5	0
+118	-0.5	0
+119	-0.5	0
+120	-0.5	0
+121	-0.5	0
+122	-0.5	0
+123	-0.5	0
+124	-0.5	0
+125	-0.5	0
+126	-0.5	0
+127	-0.5	0
+128	-0.5	0
+129	-0.5	0
+130	-0.5	0
+131	-0.5	0
+132	-0.5	0
+133	-0.5	0
+134	-0.5	0
+135	-0.5	0
+136	-0.5	0
+137	-0.5	0
+138	-0.5	0
+139	-0.5	0
+140	-0.5	0
+141	-0.5	0
+142	-0.5	0
+143	-0.5	0
+144	-0.5	0
+145	-0.5	0
+146	-0.5	0
+147	-0.5	0
+148	-0.5	0
+149	-0.5	0
+150	-0.5	0
+151	-0.5	0
+152	-0.5	0
+153	-0.5	0
+154	-0.5	0
+155	-0.5	0
+156	-0.5	0
+157	-0.5	0
+158	-0.5	0
+159	-0.5	0
+160	-0.5	0
+161	-0.5	0
+162	-0.5	0
+163	-0.5	0
+164	-0.5	0
+165	-0.5	0
+166	-0.5	0
+167	-0.5	0
+168	-0.5	0
+169	-0.5	0
+170	-0.5	0
+171	-0.5	0
+172	-0.5	0
+173	-0.5	0
+174	-0.5	0
+175	-0.5	0
+176	-0.5	0
+177	-0.5	0
+178	-0.5	0
+179	-0.5	0
+180	-0.5	0
+181	-0.5	0
+182	-0.5	0
+183	-0.5	0
+184	-0.5	0
+185	-0.5	0
+186	-0.5	0
+187	-0.5	0
+188	-0.5	0
+189	-0.5	0
+190	-0.5	0
+191	-0.5	0
+192	-0.5	0
+193	-0.5	0
+194	-0.5	0
+195	-0.5	0
+196	-0.5	0
+197	-0.5	0
+198	-0.5	0
+199	-0.5	0
+200	-0.5	0
+201	-0.5	0
+202	-0.5	0
+203	-0.5	0
+204	-0.5	0
+205	-0.5	0
+206	-0.5	0
+207	-0.5	0
+208	-0.5	0
+209	-0.5	0
+210	-0.5	0
+211	-0.5	0
+212	-0.5	0
+213	-0.5	0
+214	-0.5	0
+215	-0.5	0
+216	-0.5	0
+217	-0.5	0
+218	-0.5	0
+219	-0.5	0
+220	-0.5	0
+221	-0.5	0
+222	-0.5	0
+223	-0.5	0
+224	-0.5	0
+225	-0.5	0
+226	-0.5	0
+227	-0.5	0
+228	-0.5	0
+229	-0.5	0
+230	-0.5	0
+231	-0.5	0
+232	-0.5	0
+233	-0.5	0
+234	-0.5	0
+235	-0.5	0
+236	-0.5	0
+237	-0.5	0
+238	-0.5	0
+239	-0.5	0
+240	-0.5	0
+241	-0.5	0
+242	-0.5	0
+243	-0.5	0
+244	-0.5	0
+245	-0.5	0
+246	-0.5	0
+247	-0.5	0
+248	-0.5	0
+249	-0.5	0
+250	-0.5	0
+251	-0.5	0
+252	-0.5	0
+253	-0.5	0
+254	-0.5	0
+255	-0.5	0
+256	-0.5	0
+257	-0.5	0
+258	-0.5	0
+259	-0.5	0
+260	-0.5	0
+261	-0.5	0
+262	-0.5	0
+263	-0.5	0
+264	-0.5	0
+265	-0.5	0
+266	-0.5	0
+267	-0.5	0
+268	-0.5	0
+269	-0.5	0
+270	-0.5	0
+271	-0.5	0
+272	-0.5	0
+273	-0.5	0
+274	-0.5	0
+275	-0.5	0
+276	-0.5	0
+277	-0.5	0
+278	-0.5	0
+279	-0.5	0
+280	-0.5	0
+281	-0.5	0
+282	-0.5	0
+283	-0.5	0
+284	-0.5	0
+285	-0.5	0
+286	-0.5	0
+287	-0.5	0
+288	-0.5	0
+289	-0.5	0
+290	-0.5	0
+291	-0.5	0
+292	-0.5	0
+293	-0.5	0
+294	-0.5	0
+295	-0.5	0
+296	-0.5	0
+297	-0.5	0
+298	-0.5	0
+299	-0.5	0
+300	-0.5	0
+301	-0.5	0
+302	-0.5	0
+303	-0.5	0
+304	-0.5	0
+305	-0.5	0
+306	-0.5	0
+307	-0.5	0
+308	-0.5	0
+309	-0.5	0
+310	-0.5	0
+311	-0.5	0
+312	-0.5	0
+313	-0.5	0
+314	-0.5	0
+315	-0.5	0
+316	-0.5	0
+317	-0.5	0
+318	-0.5	0
+319	-0.5	0
+320	-0.5	0
+321	-0.5	0
+322	-0.5	0
+323	-0.5	0
+324	-0.5	0
+325	-0.5	0
+326	-0.5	0
+327	-0.5	0
+328	-0.5	0
+329	-0.5	0
+330	-0.5	0
+331	-0.5	0
+332	-0.5	0
+333	-0.5	0
+334	-0.5	0
+335	-0.5	0
+336	-0.5	0
+337	-0.5	0
+338	-0.5	0
+339	-0.5	0
+340	-0.5	0
+341	-0.5	0
+342	-0.5	0
+343	-0.5	0
+344	-0.5	0
+345	-0.5	0
+346	-0.5	0
+347	-0.5	0
+348	-0.5	0
+349	-0.5	0
+350	-0.5	0
+351	-0.5	0
+352	-0.5	0
+353	-0.5	0
+354	-0.5	0
+355	-0.5	0
+356	-0.5	0
+357	-0.5	0
+358	-0.5	0
+359	-0.5	0
+360	-0.5	0
+0	0	0
+1	0	0
+2	0	0
+3	0	0
+4	0	0
+5	0	0
+6	0	0
+7	0	0
+8	0	0
+9	0	0
+10	0	0
+11	0	0
+12	0	0
+13	0	0
+14	0	0
+15	0	0
+16	0	0
+17	0	0
+18	0	0
+19	0	0
+20	0	0
+21	0	0
+22	0	0
+23	0	0
+24	0	0
+25	0	0
+26	0	0
+27	0	0
+28	0	0
+29	0	0
+30	0	0
+31	0	0
+32	0	0
+33	0	0
+34	0	0
+35	0	0
+36	0	0
+37	0	0
+38	0	0
+39	0	0
+40	0	0
+41	0	0
+42	0	0
+43	0	0
+44	0	0
+45	0	0
+46	0	0
+47	0	0
+48	0	0
+49	0	0
+50	0	0
+51	0	0
+52	0	0
+53	0	0
+54	0	0
+55	0	0
+56	0	0
+57	0	0
+58	0	0
+59	0	0
+60	0	0
+61	0	0
+62	0	0
+63	0	0
+64	0	0
+65	0	0
+66	0	0
+67	0	0
+68	0	0
+69	0	0
+70	0	0
+71	0	0
+72	0	0
+73	0	0
+74	0	0
+75	0	0
+76	0	0
+77	0	0
+78	0	0
+79	0	0
+80	0	0
+81	0	0
+82	0	0
+83	0	0
+84	0	0
+85	0	0
+86	0	0
+87	0	0
+88	0	0
+89	0	0
+90	0	0
+91	0	0
+92	0	0
+93	0	0
+94	0	0
+95	0	0
+96	0	0
+97	0	0
+98	0	0
+99	0	0
+100	0	0
+101	0	0
+102	0	0
+103	0	0
+104	0	0
+105	0	0
+106	0	0
+107	0	0
+108	0	0
+109	0	0
+110	0	0
+111	0	0
+112	0	0
+113	0	0
+114	0	0
+115	0	0
+116	0	0
+117	0	0
+118	0	0
+119	0	0
+120	0	0
+121	0	0
+122	0	0
+123	0	0
+124	0	0
+125	0	0
+126	0	0
+127	0	0
+128	0	0
+129	0	0
+130	0	0
+131	0	0
+132	0	0
+133	0	0
+134	0	0
+135	0	0
+136	0	0
+137	0	0
+138	0	0
+139	0	0
+140	0	0
+141	0	0
+142	0	0
+143	0	0
+144	0	0
+145	0	0
+146	0	0
+147	0	0
+148	0	0
+149	0	0
+150	0	0
+151	0	0
+152	0	0
+153	0	0
+154	0	0
+155	0	0
+156	0	0
+157	0	0
+158	0	0
+159	0	0
+160	0	0
+161	0	0
+162	0	0
+163	0	0
+164	0	0
+165	0	0
+166	0	0
+167	0	0
+168	0	0
+169	0	0
+170	0	0
+171	0	0
+172	0	0
+173	0	0
+174	0	0
+175	0	0
+176	0	0
+177	0	0
+178	0	0
+179	0	0
+180	0	0
+181	0	0
+182	0	0
+183	0	0
+184	0	0
+185	0	0
+186	0	0
+187	0	0
+188	0	0
+189	0	0
+190	0	0
+191	0	0
+192	0	0
+193	0	0
+194	0	0
+195	0	0
+196	0	0
+197	0	0
+198	0	0
+199	0	0
+200	0	0
+201	0	0
+202	0	0
+203	0	0
+204	0	0
+205	0	0
+206	0	0
+207	0	0
+208	0	0
+209	0	0
+210	0	0
+211	0	0
+212	0	0
+213	0	0
+214	0	0
+215	0	0
+216	0	0
+217	0	0
+218	0	0
+219	0	0
+220	0	0
+221	0	0
+222	0	0
+223	0	0
+224	0	0
+225	0	0
+226	0	0
+227	0	0
+228	0	0
+229	0	0
+230	0	0
+231	0	0
+232	0	0
+233	0	0
+234	0	0
+235	0	0
+236	0	0
+237	0	0
+238	0	0
+239	0	0
+240	0	0
+241	0	0
+242	0	0
+243	0	0
+244	0	0
+245	0	0
+246	0	0
+247	0	0
+248	0	0
+249	0	0
+250	0	0
+251	0	0
+252	0	0
+253	0	0
+254	0	0
+255	0	0
+256	0	0
+257	0	0
+258	0	0
+259	0	0
+260	0	0
+261	0	0
+262	0	0
+263	0	0
+264	0	0
+265	0	0
+266	0	0
+267	0	0
+268	0	0
+269	0	0
+270	0	0
+271	0	0
+272	0	0
+273	0	0
+274	0	0
+275	0	0
+276	0	0
+277	0	0
+278	0	0
+279	0	0
+280	0	0
+281	0	0
+282	0	0
+283	0	0
+284	0	0
+285	0	0
+286	0	0
+287	0	0
+288	0	0
+289	0	0
+290	0	0
+291	0	0
+292	0	0
+293	0	0
+294	0	0
+295	0	0
+296	0	0
+297	0	0
+298	0	0
+299	0	0
+300	0	0
+301	0	0
+302	0	0
+303	0	0
+304	0	0
+305	0	0
+306	0	0
+307	0	0
+308	0	0
+309	0	0
+310	0	0
+311	0	0
+312	0	0
+313	0	0
+314	0	0
+315	0	0
+316	0	0
+317	0	0
+318	0	0
+319	0	0
+320	0	0
+321	0	0
+322	0	0
+323	0	0
+324	0	0
+325	0	0
+326	0	0
+327	0	0
+328	0	0
+329	0	0
+330	0	0
+331	0	0
+332	0	0
+333	0	0
+334	0	0
+335	0	0
+336	0	0
+337	0	0
+338	0	0
+339	0	0
+340	0	0
+341	0	0
+342	0	0
+343	0	0
+344	0	0
+345	0	0
+346	0	0
+347	0	0
+348	0	0
+349	0	0
+350	0	0
+351	0	0
+352	0	0
+353	0	0
+354	0	0
+355	0	0
+356	0	0
+357	0	0
+358	0	0
+359	0	0
+360	0	0
+0	0.5	0
+1	0.5	0
+2	0.5	0
+3	0.5	0
+4	0.5	0
+5	0.5	0
+6	0.5	0
+7	0.5	0
+8	0.5	0
+9	0.5	0
+10	0.5	0
+11	0.5	0
+12	0.5	0
+13	0.5	0
+14	0.5	0
+15	0.5	0
+16	0.5	0
+17	0.5	0
+18	0.5	0
+19	0.5	0
+20	0.5	0
+21	0.5	0
+22	0.5	0
+23	0.5	0
+24	0.5	0
+25	0.5	0
+26	0.5	0
+27	0.5	0
+28	0.5	0
+29	0.5	0
+30	0.5	0
+31	0.5	0
+32	0.5	0
+33	0.5	0
+34	0.5	0
+35	0.5	0
+36	0.5	0
+37	0.5	0
+38	0.5	0
+39	0.5	0
+40	0.5	0
+41	0.5	0
+42	0.5	0
+43	0.5	0
+44	0.5	0
+45	0.5	0
+46	0.5	0
+47	0.5	0
+48	0.5	0
+49	0.5	0
+50	0.5	0
+51	0.5	0
+52	0.5	0
+53	0.5	0
+54	0.5	0
+55	0.5	0
+56	0.5	0
+57	0.5	0
+58	0.5	0
+59	0.5	0
+60	0.5	0
+61	0.5	0
+62	0.5	0
+63	0.5	0
+64	0.5	0
+65	0.5	0
+66	0.5	0
+67	0.5	0
+68	0.5	0
+69	0.5	0
+70	0.5	0
+71	0.5	0
+72	0.5	0
+73	0.5	0
+74	0.5	0
+75	0.5	0
+76	0.5	0
+77	0.5	0
+78	0.5	0
+79	0.5	0
+80	0.5	0
+81	0.5	0
+82	0.5	0
+83	0.5	0
+84	0.5	0
+85	0.5	0
+86	0.5	0
+87	0.5	0
+88	0.5	0
+89	0.5	0
+90	0.5	0
+91	0.5	0
+92	0.5	0
+93	0.5	0
+94	0.5	0
+95	0.5	0
+96	0.5	0
+97	0.5	0
+98	0.5	0
+99	0.5	0
+100	0.5	0
+101	0.5	0
+102	0.5	0
+103	0.5	0
+104	0.5	0
+105	0.5	0
+106	0.5	0
+107	0.5	0
+108	0.5	0
+109	0.5	0
+110	0.5	0
+111	0.5	0
+112	0.5	0
+113	0.5	0
+114	0.5	0
+115	0.5	0
+116	0.5	0
+117	0.5	0
+118	0.5	0
+119	0.5	0
+120	0.5	0
+121	0.5	0
+122	0.5	0
+123	0.5	0
+124	0.5	0
+125	0.5	0
+126	0.5	0
+127	0.5	0
+128	0.5	0
+129	0.5	0
+130	0.5	0
+131	0.5	0
+132	0.5	0
+133	0.5	0
+134	0.5	0
+135	0.5	0
+136	0.5	0
+137	0.5	0
+138	0.5	0
+139	0.5	0
+140	0.5	0
+141	0.5	0
+142	0.5	0
+143	0.5	0
+144	0.5	0
+145	0.5	0
+146	0.5	0
+147	0.5	0
+148	0.5	0
+149	0.5	0
+150	0.5	0
+151	0.5	0
+152	0.5	0
+153	0.5	0
+154	0.5	0
+155	0.5	0
+156	0.5	0
+157	0.5	0
+158	0.5	0
+159	0.5	0
+160	0.5	0
+161	0.5	0
+162	0.5	0
+163	0.5	0
+164	0.5	0
+165	0.5	0
+166	0.5	0
+167	0.5	0
+168	0.5	0
+169	0.5	0
+170	0.5	0
+171	0.5	0
+172	0.5	0
+173	0.5	0
+174	0.5	0
+175	0.5	0
+176	0.5	0
+177	0.5	0
+178	0.5	0
+179	0.5	0
+180	0.5	0
+181	0.5	0
+182	0.5	0
+183	0.5	0
+184	0.5	0
+185	0.5	0
+186	0.5	0
+187	0.5	0
+188	0.5	0
+189	0.5	0
+190	0.5	0
+191	0.5	0
+192	0.5	0
+193	0.5	0
+194	0.5	0
+195	0.5	0
+196	0.5	0
+197	0.5	0
+198	0.5	0
+199	0.5	0
+200	0.5	0
+201	0.5	0
+202	0.5	0
+203	0.5	0
+204	0.5	0
+205	0.5	0
+206	0.5	0
+207	0.5	0
+208	0.5	0
+209	0.5	0
+210	0.5	0
+211	0.5	0
+212	0.5	0
+213	0.5	0
+214	0.5	0
+215	0.5	0
+216	0.5	0
+217	0.5	0
+218	0.5	0
+219	0.5	0
+220	0.5	0
+221	0.5	0
+222	0.5	0
+223	0.5	0
+224	0.5	0
+225	0.5	0
+226	0.5	0
+227	0.5	0
+228	0.5	0
+229	0.5	0
+230	0.5	0
+231	0.5	0
+232	0.5	0
+233	0.5	0
+234	0.5	0
+235	0.5	0
+236	0.5	0
+237	0.5	0
+238	0.5	0
+239	0.5	0
+240	0.5	0
+241	0.5	0
+242	0.5	0
+243	0.5	0
+244	0.5	0
+245	0.5	0
+246	0.5	0
+247	0.5	0
+248	0.5	0
+249	0.5	0
+250	0.5	0
+251	0.5	0
+252	0.5	0
+253	0.5	0
+254	0.5	0
+255	0.5	0
+256	0.5	0
+257	0.5	0
+258	0.5	0
+259	0.5	0
+260	0.5	0
+261	0.5	0
+262	0.5	0
+263	0.5	0
+264	0.5	0
+265	0.5	0
+266	0.5	0
+267	0.5	0
+268	0.5	0
+269	0.5	0
+270	0.5	0
+271	0.5	0
+272	0.5	0
+273	0.5	0
+274	0.5	0
+275	0.5	0
+276	0.5	0
+277	0.5	0
+278	0.5	0
+279	0.5	0
+280	0.5	0
+281	0.5	0
+282	0.5	0
+283	0.5	0
+284	0.5	0
+285	0.5	0
+286	0.5	0
+287	0.5	0
+288	0.5	0
+289	0.5	0
+290	0.5	0
+291	0.5	0
+292	0.5	0
+293	0.5	0
+294	0.5	0
+295	0.5	0
+296	0.5	0
+297	0.5	0
+298	0.5	0
+299	0.5	0
+300	0.5	0
+301	0.5	0
+302	0.5	0
+303	0.5	0
+304	0.5	0
+305	0.5	0
+306	0.5	0
+307	0.5	0
+308	0.5	0
+309	0.5	0
+310	0.5	0
+311	0.5	0
+312	0.5	0
+313	0.5	0
+314	0.5	0
+315	0.5	0
+316	0.5	0
+317	0.5	0
+318	0.5	0
+319	0.5	0
+320	0.5	0
+321	0.5	0
+322	0.5	0
+323	0.5	0
+324	0.5	0
+325	0.5	0
+326	0.5	0
+327	0.5	0
+328	0.5	0
+329	0.5	0
+330	0.5	0
+331	0.5	0
+332	0.5	0
+333	0.5	0
+334	0.5	0
+335	0.5	0
+336	0.5	0
+337	0.5	0
+338	0.5	0
+339	0.5	0
+340	0.5	0
+341	0.5	0
+342	0.5	0
+343	0.5	0
+344	0.5	0
+345	0.5	0
+346	0.5	0
+347	0.5	0
+348	0.5	0
+349	0.5	0
+350	0.5	0
+351	0.5	0
+352	0.5	0
+353	0.5	0
+354	0.5	0
+355	0.5	0
+356	0.5	0
+357	0.5	0
+358	0.5	0
+359	0.5	0
+360	0.5	0
+0	1	0
+1	1	0
+2	1	0
+3	1	0
+4	1	0
+5	1	0
+6	1	0
+7	1	0
+8	1	0
+9	1	0
+10	1	0
+11	1	0
+12	1	0
+13	1	0
+14	1	0
+15	1	0
+16	1	0
+17	1	0
+18	1	0
+19	1	0
+20	1	0
+21	1	0
+22	1	0
+23	1	0
+24	1	0
+25	1	0
+26	1	0
+27	1	0
+28	1	0
+29	1	0
+30	1	0
+31	1	0
+32	1	0
+33	1	0
+34	1	0
+35	1	0
+36	1	0
+37	1	0
+38	1	0
+39	1	0
+40	1	0
+41	1	0
+42	1	0
+43	1	0
+44	1	0
+45	1	0
+46	1	0
+47	1	0
+48	1	0
+49	1	0
+50	1	0
+51	1	0
+52	1	0
+53	1	0
+54	1	0
+55	1	0
+56	1	0
+57	1	0
+58	1	0
+59	1	0
+60	1	0
+61	1	0
+62	1	0
+63	1	0
+64	1	0
+65	1	0
+66	1	0
+67	1	0
+68	1	0
+69	1	0
+70	1	0
+71	1	0
+72	1	0
+73	1	0
+74	1	0
+75	1	0
+76	1	0
+77	1	0
+78	1	0
+79	1	0
+80	1	0
+81	1	0
+82	1	0
+83	1	0
+84	1	0
+85	1	0
+86	1	0
+87	1	0
+88	1	0
+89	1	0
+90	1	0
+91	1	0
+92	1	0
+93	1	0
+94	1	0
+95	1	0
+96	1	0
+97	1	0
+98	1	0
+99	1	0
+100	1	0
+101	1	0
+102	1	0
+103	1	0
+104	1	0
+105	1	0
+106	1	0
+107	1	0
+108	1	0
+109	1	0
+110	1	0
+111	1	0
+112	1	0
+113	1	0
+114	1	0
+115	1	0
+116	1	0
+117	1	0
+118	1	0
+119	1	0
+120	1	0
+121	1	0
+122	1	0
+123	1	0
+124	1	0
+125	1	0
+126	1	0
+127	1	0
+128	1	0
+129	1	0
+130	1	0
+131	1	0
+132	1	0
+133	1	0
+134	1	0
+135	1	0
+136	1	0
+137	1	0
+138	1	0
+139	1	0
+140	1	0
+141	1	0
+142	1	0
+143	1	0
+144	1	0
+145	1	0
+146	1	0
+147	1	0
+148	1	0
+149	1	0
+150	1	0
+151	1	0
+152	1	0
+153	1	0
+154	1	0
+155	1	0
+156	1	0
+157	1	0
+158	1	0
+159	1	0
+160	1	0
+161	1	0
+162	1	0
+163	1	0
+164	1	0
+165	1	0
+166	1	0
+167	1	0
+168	1	0
+169	1	0
+170	1	0
+171	1	0
+172	1	0
+173	1	0
+174	1	0
+175	1	0
+176	1	0
+177	1	0
+178	1	0
+179	1	0
+180	1	0
+181	1	0
+182	1	0
+183	1	0
+184	1	0
+185	1	0
+186	1	0
+187	1	0
+188	1	0
+189	1	0
+190	1	0
+191	1	0
+192	1	0
+193	1	0
+194	1	0
+195	1	0
+196	1	0
+197	1	0
+198	1	0
+199	1	0
+200	1	0
+201	1	0
+202	1	0
+203	1	0
+204	1	0
+205	1	0
+206	1	0
+207	1	0
+208	1	0
+209	1	0
+210	1	0
+211	1	0
+212	1	0
+213	1	0
+214	1	0
+215	1	0
+216	1	0
+217	1	0
+218	1	0
+219	1	0
+220	1	0
+221	1	0
+222	1	0
+223	1	0
+224	1	0
+225	1	0
+226	1	0
+227	1	0
+228	1	0
+229	1	0
+230	1	0
+231	1	0
+232	1	0
+233	1	0
+234	1	0
+235	1	0
+236	1	0
+237	1	0
+238	1	0
+239	1	0
+240	1	0
+241	1	0
+242	1	0
+243	1	0
+244	1	0
+245	1	0
+246	1	0
+247	1	0
+248	1	0
+249	1	0
+250	1	0
+251	1	0
+252	1	0
+253	1	0
+254	1	0
+255	1	0
+256	1	0
+257	1	0
+258	1	0
+259	1	0
+260	1	0
+261	1	0
+262	1	0
+263	1	0
+264	1	0
+265	1	0
+266	1	0
+267	1	0
+268	1	0
+269	1	0
+270	1	0
+271	1	0
+272	1	0
+273	1	0
+274	1	0
+275	1	0
+276	1	0
+277	1	0
+278	1	0
+279	1	0
+280	1	0
+281	1	0
+282	1	0
+283	1	0
+284	1	0
+285	1	0
+286	1	0
+287	1	0
+288	1	0
+289	1	0
+290	1	0
+291	1	0
+292	1	0
+293	1	0
+294	1	0
+295	1	0
+296	1	0
+297	1	0
+298	1	0
+299	1	0
+300	1	0
+301	1	0
+302	1	0
+303	1	0
+304	1	0
+305	1	0
+306	1	0
+307	1	0
+308	1	0
+309	1	0
+310	1	0
+311	1	0
+312	1	0
+313	1	0
+314	1	0
+315	1	0
+316	1	0
+317	1	0
+318	1	0
+319	1	0
+320	1	0
+321	1	0
+322	1	0
+323	1	0
+324	1	0
+325	1	0
+326	1	0
+327	1	0
+328	1	0
+329	1	0
+330	1	0
+331	1	0
+332	1	0
+333	1	0
+334	1	0
+335	1	0
+336	1	0
+337	1	0
+338	1	0
+339	1	0
+340	1	0
+341	1	0
+342	1	0
+343	1	0
+344	1	0
+345	1	0
+346	1	0
+347	1	0
+348	1	0
+349	1	0
+350	1	0
+351	1	0
+352	1	0
+353	1	0
+354	1	0
+355	1	0
+356	1	0
+357	1	0
+358	1	0
+359	1	0
+360	1	0
+0	1.5	0
+1	1.5	0
+2	1.5	0
+3	1.5	0
+4	1.5	0
+5	1.5	0
+6	1.5	0
+7	1.5	0
+8	1.5	0
+9	1.5	0
+10	1.5	0
+11	1.5	0
+12	1.5	0
+13	1.5	0
+14	1.5	0
+15	1.5	0
+16	1.5	0
+17	1.5	0
+18	1.5	0
+19	1.5	0
+20	1.5	0
+21	1.5	0
+22	1.5	0
+23	1.5	0
+24	1.5	0
+25	1.5	0
+26	1.5	0
+27	1.5	0
+28	1.5	0
+29	1.5	0
+30	1.5	0
+31	1.5	0
+32	1.5	0
+33	1.5	0
+34	1.5	0
+35	1.5	0
+36	1.5	0
+37	1.5	0
+38	1.5	0
+39	1.5	0
+40	1.5	0
+41	1.5	0
+42	1.5	0
+43	1.5	0
+44	1.5	0
+45	1.5	0
+46	1.5	0
+47	1.5	0
+48	1.5	0
+49	1.5	0
+50	1.5	0
+51	1.5	0
+52	1.5	0
+53	1.5	0
+54	1.5	0
+55	1.5	0
+56	1.5	0
+57	1.5	0
+58	1.5	0
+59	1.5	0
+60	1.5	0
+61	1.5	0
+62	1.5	0
+63	1.5	0
+64	1.5	0
+65	1.5	0
+66	1.5	0
+67	1.5	0
+68	1.5	0
+69	1.5	0
+70	1.5	0
+71	1.5	0
+72	1.5	0
+73	1.5	0
+74	1.5	0
+75	1.5	0
+76	1.5	0
+77	1.5	0
+78	1.5	0
+79	1.5	0
+80	1.5	0
+81	1.5	0
+82	1.5	0
+83	1.5	0
+84	1.5	0
+85	1.5	0
+86	1.5	0
+87	1.5	0
+88	1.5	0
+89	1.5	0
+90	1.5	0
+91	1.5	0
+92	1.5	0
+93	1.5	0
+94	1.5	0
+95	1.5	0
+96	1.5	0
+97	1.5	0
+98	1.5	0
+99	1.5	0
+100	1.5	0
+101	1.5	0
+102	1.5	0
+103	1.5	0
+104	1.5	0
+105	1.5	0
+106	1.5	0
+107	1.5	0
+108	1.5	0
+109	1.5	0
+110	1.5	0
+111	1.5	0
+112	1.5	0
+113	1.5	0
+114	1.5	0
+115	1.5	0
+116	1.5	0
+117	1.5	0
+118	1.5	0
+119	1.5	0
+120	1.5	0
+121	1.5	0
+122	1.5	0
+123	1.5	0
+124	1.5	0
+125	1.5	0
+126	1.5	0
+127	1.5	0
+128	1.5	0
+129	1.5	0
+130	1.5	0
+131	1.5	0
+132	1.5	0
+133	1.5	0
+134	1.5	0
+135	1.5	0
+136	1.5	0
+137	1.5	0
+138	1.5	0
+139	1.5	0
+140	1.5	0
+141	1.5	0
+142	1.5	0
+143	1.5	0
+144	1.5	0
+145	1.5	0
+146	1.5	0
+147	1.5	0
+148	1.5	0
+149	1.5	0
+150	1.5	0
+151	1.5	0
+152	1.5	0
+153	1.5	0
+154	1.5	0
+155	1.5	0
+156	1.5	0
+157	1.5	0
+158	1.5	0
+159	1.5	0
+160	1.5	0
+161	1.5	0
+162	1.5	0
+163	1.5	0
+164	1.5	0
+165	1.5	0
+166	1.5	0
+167	1.5	0
+168	1.5	0
+169	1.5	0
+170	1.5	0
+171	1.5	0
+172	1.5	0
+173	1.5	0
+174	1.5	0
+175	1.5	0
+176	1.5	0
+177	1.5	0
+178	1.5	0
+179	1.5	0
+180	1.5	0
+181	1.5	0
+182	1.5	0
+183	1.5	0
+184	1.5	0
+185	1.5	0
+186	1.5	0
+187	1.5	0
+188	1.5	0
+189	1.5	0
+190	1.5	0
+191	1.5	0
+192	1.5	0
+193	1.5	0
+194	1.5	0
+195	1.5	0
+196	1.5	0
+197	1.5	0
+198	1.5	0
+199	1.5	0
+200	1.5	0
+201	1.5	0
+202	1.5	0
+203	1.5	0
+204	1.5	0
+205	1.5	0
+206	1.5	0
+207	1.5	0
+208	1.5	0
+209	1.5	0
+210	1.5	0
+211	1.5	0
+212	1.5	0
+213	1.5	0
+214	1.5	0
+215	1.5	0
+216	1.5	0
+217	1.5	0
+218	1.5	0
+219	1.5	0
+220	1.5	0
+221	1.5	0
+222	1.5	0
+223	1.5	0
+224	1.5	0
+225	1.5	0
+226	1.5	0
+227	1.5	0
+228	1.5	0
+229	1.5	0
+230	1.5	0
+231	1.5	0
+232	1.5	0
+233	1.5	0
+234	1.5	0
+235	1.5	0
+236	1.5	0
+237	1.5	0
+238	1.5	0
+239	1.5	0
+240	1.5	0
+241	1.5	0
+242	1.5	0
+243	1.5	0
+244	1.5	0
+245	1.5	0
+246	1.5	0
+247	1.5	0
+248	1.5	0
+249	1.5	0
+250	1.5	0
+251	1.5	0
+252	1.5	0
+253	1.5	0
+254	1.5	0
+255	1.5	0
+256	1.5	0
+257	1.5	0
+258	1.5	0
+259	1.5	0
+260	1.5	0
+261	1.5	0
+262	1.5	0
+263	1.5	0
+264	1.5	0
+265	1.5	0
+266	1.5	0
+267	1.5	0
+268	1.5	0
+269	1.5	0
+270	1.5	0
+271	1.5	0
+272	1.5	0
+273	1.5	0
+274	1.5	0
+275	1.5	0
+276	1.5	0
+277	1.5	0
+278	1.5	0
+279	1.5	0
+280	1.5	0
+281	1.5	0
+282	1.5	0
+283	1.5	0
+284	1.5	0
+285	1.5	0
+286	1.5	0
+287	1.5	0
+288	1.5	0
+289	1.5	0
+290	1.5	0
+291	1.5	0
+292	1.5	0
+293	1.5	0
+294	1.5	0
+295	1.5	0
+296	1.5	0
+297	1.5	0
+298	1.5	0
+299	1.5	0
+300	1.5	0
+301	1.5	0
+302	1.5	0
+303	1.5	0
+304	1.5	0
+305	1.5	0
+306	1.5	0
+307	1.5	0
+308	1.5	0
+309	1.5	0
+310	1.5	0
+311	1.5	0
+312	1.5	0
+313	1.5	0
+314	1.5	0
+315	1.5	0
+316	1.5	0
+317	1.5	0
+318	1.5	0
+319	1.5	0
+320	1.5	0
+321	1.5	0
+322	1.5	0
+323	1.5	0
+324	1.5	0
+325	1.5	0
+326	1.5	0
+327	1.5	0
+328	1.5	0
+329	1.5	0
+330	1.5	0
+331	1.5	0
+332	1.5	0
+333	1.5	0
+334	1.5	0
+335	1.5	0
+336	1.5	0
+337	1.5	0
+338	1.5	0
+339	1.5	0
+340	1.5	0
+341	1.5	0
+342	1.5	0
+343	1.5	0
+344	1.5	0
+345	1.5	0
+346	1.5	0
+347	1.5	0
+348	1.5	0
+349	1.5	0
+350	1.5	0
+351	1.5	0
+352	1.5	0
+353	1.5	0
+354	1.5	0
+355	1.5	0
+356	1.5	0
+357	1.5	0
+358	1.5	0
+359	1.5	0
+360	1.5	0
+0	2	0
+1	2	0
+2	2	0
+3	2	0
+4	2	0
+5	2	0
+6	2	0
+7	2	0
+8	2	0
+9	2	0
+10	2	0
+11	2	0
+12	2	0
+13	2	0
+14	2	0
+15	2	0
+16	2	0
+17	2	0
+18	2	0
+19	2	0
+20	2	0
+21	2	0
+22	2	0
+23	2	0
+24	2	0
+25	2	0
+26	2	0
+27	2	0
+28	2	0
+29	2	0
+30	2	0
+31	2	0
+32	2	0
+33	2	0
+34	2	0
+35	2	0
+36	2	0
+37	2	0
+38	2	0
+39	2	0
+40	2	0
+41	2	0
+42	2	0
+43	2	0
+44	2	0
+45	2	0
+46	2	0
+47	2	0
+48	2	0
+49	2	0
+50	2	0
+51	2	0
+52	2	0
+53	2	0
+54	2	0
+55	2	0
+56	2	0
+57	2	0
+58	2	0
+59	2	0
+60	2	0
+61	2	0
+62	2	0
+63	2	0
+64	2	0
+65	2	0
+66	2	0
+67	2	0
+68	2	0
+69	2	0
+70	2	0
+71	2	0
+72	2	0
+73	2	0
+74	2	0
+75	2	0
+76	2	0
+77	2	0
+78	2	0
+79	2	0
+80	2	0
+81	2	0
+82	2	0
+83	2	0
+84	2	0
+85	2	0
+86	2	0
+87	2	0
+88	2	0
+89	2	0
+90	2	0
+91	2	0
+92	2	0
+93	2	0
+94	2	0
+95	2	0
+96	2	0
+97	2	0
+98	2	0
+99	2	0
+100	2	0
+101	2	0
+102	2	0
+103	2	0
+104	2	0
+105	2	0
+106	2	0
+107	2	0
+108	2	0
+109	2	0
+110	2	0
+111	2	0
+112	2	0
+113	2	0
+114	2	0
+115	2	0
+116	2	0
+117	2	0
+118	2	0
+119	2	0
+120	2	0
+121	2	0
+122	2	0
+123	2	0
+124	2	0
+125	2	0
+126	2	0
+127	2	0
+128	2	0
+129	2	0
+130	2	0
+131	2	0
+132	2	0
+133	2	0
+134	2	0
+135	2	0
+136	2	0
+137	2	0
+138	2	0
+139	2	0
+140	2	0
+141	2	0
+142	2	0
+143	2	0
+144	2	0
+145	2	0
+146	2	0
+147	2	0
+148	2	0
+149	2	0
+150	2	0
+151	2	0
+152	2	0
+153	2	0
+154	2	0
+155	2	0
+156	2	0
+157	2	0
+158	2	0
+159	2	0
+160	2	0
+161	2	0
+162	2	0
+163	2	0
+164	2	0
+165	2	0
+166	2	0
+167	2	0
+168	2	0
+169	2	0
+170	2	0
+171	2	0
+172	2	0
+173	2	0
+174	2	0
+175	2	0
+176	2	0
+177	2	0
+178	2	0
+179	2	0
+180	2	0
+181	2	0
+182	2	0
+183	2	0
+184	2	0
+185	2	0
+186	2	0
+187	2	0
+188	2	0
+189	2	0
+190	2	0
+191	2	0
+192	2	0
+193	2	0
+194	2	0
+195	2	0
+196	2	0
+197	2	0
+198	2	0
+199	2	0
+200	2	0
+201	2	0
+202	2	0
+203	2	0
+204	2	0
+205	2	0
+206	2	0
+207	2	0
+208	2	0
+209	2	0
+210	2	0
+211	2	0
+212	2	0
+213	2	0
+214	2	0
+215	2	0
+216	2	0
+217	2	0
+218	2	0
+219	2	0
+220	2	0
+221	2	0
+222	2	0
+223	2	0
+224	2	0
+225	2	0
+226	2	0
+227	2	0
+228	2	0
+229	2	0
+230	2	0
+231	2	0
+232	2	0
+233	2	0
+234	2	0
+235	2	0
+236	2	0
+237	2	0
+238	2	0
+239	2	0
+240	2	0
+241	2	0
+242	2	0
+243	2	0
+244	2	0
+245	2	0
+246	2	0
+247	2	0
+248	2	0
+249	2	0
+250	2	0
+251	2	0
+252	2	0
+253	2	0
+254	2	0
+255	2	0
+256	2	0
+257	2	0
+258	2	0
+259	2	0
+260	2	0
+261	2	0
+262	2	0
+263	2	0
+264	2	0
+265	2	0
+266	2	0
+267	2	0
+268	2	0
+269	2	0
+270	2	0
+271	2	0
+272	2	0
+273	2	0
+274	2	0
+275	2	0
+276	2	0
+277	2	0
+278	2	0
+279	2	0
+280	2	0
+281	2	0
+282	2	0
+283	2	0
+284	2	0
+285	2	0
+286	2	0
+287	2	0
+288	2	0
+289	2	0
+290	2	0
+291	2	0
+292	2	0
+293	2	0
+294	2	0
+295	2	0
+296	2	0
+297	2	0
+298	2	0
+299	2	0
+300	2	0
+301	2	0
+302	2	0
+303	2	0
+304	2	0
+305	2	0
+306	2	0
+307	2	0
+308	2	0
+309	2	0
+310	2	0
+311	2	0
+312	2	0
+313	2	0
+314	2	0
+315	2	0
+316	2	0
+317	2	0
+318	2	0
+319	2	0
+320	2	0
+321	2	0
+322	2	0
+323	2	0
+324	2	0
+325	2	0
+326	2	0
+327	2	0
+328	2	0
+329	2	0
+330	2	0
+331	2	0
+332	2	0
+333	2	0
+334	2	0
+335	2	0
+336	2	0
+337	2	0
+338	2	0
+339	2	0
+340	2	0
+341	2	0
+342	2	0
+343	2	0
+344	2	0
+345	2	0
+346	2	0
+347	2	0
+348	2	0
+349	2	0
+350	2	0
+351	2	0
+352	2	0
+353	2	0
+354	2	0
+355	2	0
+356	2	0
+357	2	0
+358	2	0
+359	2	0
+360	2	0
+0	2.5	0
+1	2.5	0
+2	2.5	0
+3	2.5	0
+4	2.5	0
+5	2.5	0
+6	2.5	0
+7	2.5	0
+8	2.5	0
+9	2.5	0
+10	2.5	0
+11	2.5	0
+12	2.5	0
+13	2.5	0
+14	2.5	0
+15	2.5	0
+16	2.5	0
+17	2.5	0
+18	2.5	0
+19	2.5	0
+20	2.5	0
+21	2.5	0
+22	2.5	0
+23	2.5	0
+24	2.5	0
+25	2.5	0
+26	2.5	0
+27	2.5	0
+28	2.5	0
+29	2.5	0
+30	2.5	0
+31	2.5	0
+32	2.5	0
+33	2.5	0
+34	2.5	0
+35	2.5	0
+36	2.5	0
+37	2.5	0
+38	2.5	0
+39	2.5	0
+40	2.5	0
+41	2.5	0
+42	2.5	0
+43	2.5	0
+44	2.5	0
+45	2.5	0
+46	2.5	0
+47	2.5	0
+48	2.5	0
+49	2.5	0
+50	2.5	0
+51	2.5	0
+52	2.5	0
+53	2.5	0
+54	2.5	0
+55	2.5	0
+56	2.5	0
+57	2.5	0
+58	2.5	0
+59	2.5	0
+60	2.5	0
+61	2.5	0
+62	2.5	0
+63	2.5	0
+64	2.5	0
+65	2.5	0
+66	2.5	0
+67	2.5	0
+68	2.5	0
+69	2.5	0
+70	2.5	0
+71	2.5	0
+72	2.5	0
+73	2.5	0
+74	2.5	0
+75	2.5	0
+76	2.5	0
+77	2.5	0
+78	2.5	0
+79	2.5	0
+80	2.5	0
+81	2.5	0
+82	2.5	0
+83	2.5	0
+84	2.5	0
+85	2.5	0
+86	2.5	0
+87	2.5	0
+88	2.5	0
+89	2.5	0
+90	2.5	0
+91	2.5	0
+92	2.5	0
+93	2.5	0
+94	2.5	0
+95	2.5	0
+96	2.5	0
+97	2.5	0
+98	2.5	0
+99	2.5	0
+100	2.5	0
+101	2.5	0
+102	2.5	0
+103	2.5	0
+104	2.5	0
+105	2.5	0
+106	2.5	0
+107	2.5	0
+108	2.5	0
+109	2.5	0
+110	2.5	0
+111	2.5	0
+112	2.5	0
+113	2.5	0
+114	2.5	0
+115	2.5	0
+116	2.5	0
+117	2.5	0
+118	2.5	0
+119	2.5	0
+120	2.5	0
+121	2.5	0
+122	2.5	0
+123	2.5	0
+124	2.5	0
+125	2.5	0
+126	2.5	0
+127	2.5	0
+128	2.5	0
+129	2.5	0
+130	2.5	0
+131	2.5	0
+132	2.5	0
+133	2.5	0
+134	2.5	0
+135	2.5	0
+136	2.5	0
+137	2.5	0
+138	2.5	0
+139	2.5	0
+140	2.5	0
+141	2.5	0
+142	2.5	0
+143	2.5	0
+144	2.5	0
+145	2.5	0
+146	2.5	0
+147	2.5	0
+148	2.5	0
+149	2.5	0
+150	2.5	0
+151	2.5	0
+152	2.5	0
+153	2.5	0
+154	2.5	0
+155	2.5	0
+156	2.5	0
+157	2.5	0
+158	2.5	0
+159	2.5	0
+160	2.5	0
+161	2.5	0
+162	2.5	0
+163	2.5	0
+164	2.5	0
+165	2.5	0
+166	2.5	0
+167	2.5	0
+168	2.5	0
+169	2.5	0
+170	2.5	0
+171	2.5	0
+172	2.5	0
+173	2.5	0
+174	2.5	0
+175	2.5	0
+176	2.5	0
+177	2.5	0
+178	2.5	0
+179	2.5	0
+180	2.5	0
+181	2.5	0
+182	2.5	0
+183	2.5	0
+184	2.5	0
+185	2.5	0
+186	2.5	0
+187	2.5	0
+188	2.5	0
+189	2.5	0
+190	2.5	0
+191	2.5	0
+192	2.5	0
+193	2.5	0
+194	2.5	0
+195	2.5	0
+196	2.5	0
+197	2.5	0
+198	2.5	0
+199	2.5	0
+200	2.5	0
+201	2.5	0
+202	2.5	0
+203	2.5	0
+204	2.5	0
+205	2.5	0
+206	2.5	0
+207	2.5	0
+208	2.5	0
+209	2.5	0
+210	2.5	0
+211	2.5	0
+212	2.5	0
+213	2.5	0
+214	2.5	0
+215	2.5	0
+216	2.5	0
+217	2.5	0
+218	2.5	0
+219	2.5	0
+220	2.5	0
+221	2.5	0
+222	2.5	0
+223	2.5	0
+224	2.5	0
+225	2.5	0
+226	2.5	0
+227	2.5	0
+228	2.5	0
+229	2.5	0
+230	2.5	0
+231	2.5	0
+232	2.5	0
+233	2.5	0
+234	2.5	0
+235	2.5	0
+236	2.5	0
+237	2.5	0
+238	2.5	0
+239	2.5	0
+240	2.5	0
+241	2.5	0
+242	2.5	0
+243	2.5	0
+244	2.5	0
+245	2.5	0
+246	2.5	0
+247	2.5	0
+248	2.5	0
+249	2.5	0
+250	2.5	0
+251	2.5	0
+252	2.5	0
+253	2.5	0
+254	2.5	0
+255	2.5	0
+256	2.5	0
+257	2.5	0
+258	2.5	0
+259	2.5	0
+260	2.5	0
+261	2.5	0
+262	2.5	0
+263	2.5	0
+264	2.5	0
+265	2.5	0
+266	2.5	0
+267	2.5	0
+268	2.5	0
+269	2.5	0
+270	2.5	0
+271	2.5	0
+272	2.5	0
+273	2.5	0
+274	2.5	0
+275	2.5	0
+276	2.5	0
+277	2.5	0
+278	2.5	0
+279	2.5	0
+280	2.5	0
+281	2.5	0
+282	2.5	0
+283	2.5	0
+284	2.5	0
+285	2.5	0
+286	2.5	0
+287	2.5	0
+288	2.5	0
+289	2.5	0
+290	2.5	0
+291	2.5	0
+292	2.5	0
+293	2.5	0
+294	2.5	0
+295	2.5	0
+296	2.5	0
+297	2.5	0
+298	2.5	0
+299	2.5	0
+300	2.5	0
+301	2.5	0
+302	2.5	0
+303	2.5	0
+304	2.5	0
+305	2.5	0
+306	2.5	0
+307	2.5	0
+308	2.5	0
+309	2.5	0
+310	2.5	0
+311	2.5	0
+312	2.5	0
+313	2.5	0
+314	2.5	0
+315	2.5	0
+316	2.5	0
+317	2.5	0
+318	2.5	0
+319	2.5	0
+320	2.5	0
+321	2.5	0
+322	2.5	0
+323	2.5	0
+324	2.5	0
+325	2.5	0
+326	2.5	0
+327	2.5	0
+328	2.5	0
+329	2.5	0
+330	2.5	0
+331	2.5	0
+332	2.5	0
+333	2.5	0
+334	2.5	0
+335	2.5	0
+336	2.5	0
+337	2.5	0
+338	2.5	0
+339	2.5	0
+340	2.5	0
+341	2.5	0
+342	2.5	0
+343	2.5	0
+344	2.5	0
+345	2.5	0
+346	2.5	0
+347	2.5	0
+348	2.5	0
+349	2.5	0
+350	2.5	0
+351	2.5	0
+352	2.5	0
+353	2.5	0
+354	2.5	0
+355	2.5	0
+356	2.5	0
+357	2.5	0
+358	2.5	0
+359	2.5	0
+360	2.5	0
+0	3	0
+1	3	0
+2	3	0
+3	3	0
+4	3	0
+5	3	0
+6	3	0
+7	3	0
+8	3	0
+9	3	0
+10	3	0
+11	3	0
+12	3	0
+13	3	0
+14	3	0
+15	3	0
+16	3	0
+17	3	0
+18	3	0
+19	3	0
+20	3	0
+21	3	0
+22	3	0
+23	3	0
+24	3	0
+25	3	0
+26	3	0
+27	3	0
+28	3	0
+29	3	0
+30	3	0
+31	3	0
+32	3	0
+33	3	0
+34	3	0
+35	3	0
+36	3	0
+37	3	0
+38	3	0
+39	3	0
+40	3	0
+41	3	0
+42	3	0
+43	3	0
+44	3	0
+45	3	0
+46	3	0
+47	3	0
+48	3	0
+49	3	0
+50	3	0
+51	3	0
+52	3	0
+53	3	0
+54	3	0
+55	3	0
+56	3	0
+57	3	0
+58	3	0
+59	3	0
+60	3	0
+61	3	0
+62	3	0
+63	3	0
+64	3	0
+65	3	0
+66	3	0
+67	3	0
+68	3	0
+69	3	0
+70	3	0
+71	3	0
+72	3	0
+73	3	0
+74	3	0
+75	3	0
+76	3	0
+77	3	0
+78	3	0
+79	3	0
+80	3	0
+81	3	0
+82	3	0
+83	3	0
+84	3	0
+85	3	0
+86	3	0
+87	3	0
+88	3	0
+89	3	0
+90	3	0
+91	3	0
+92	3	0
+93	3	0
+94	3	0
+95	3	0
+96	3	0
+97	3	0
+98	3	0
+99	3	0
+100	3	0
+101	3	0
+102	3	0
+103	3	0
+104	3	0
+105	3	0
+106	3	0
+107	3	0
+108	3	0
+109	3	0
+110	3	0
+111	3	0
+112	3	0
+113	3	0
+114	3	0
+115	3	0
+116	3	0
+117	3	0
+118	3	0
+119	3	0
+120	3	0
+121	3	0
+122	3	0
+123	3	0
+124	3	0
+125	3	0
+126	3	0
+127	3	0
+128	3	0
+129	3	0
+130	3	0
+131	3	0
+132	3	0
+133	3	0
+134	3	0
+135	3	0
+136	3	0
+137	3	0
+138	3	0
+139	3	0
+140	3	0
+141	3	0
+142	3	0
+143	3	0
+144	3	0
+145	3	0
+146	3	0
+147	3	0
+148	3	0
+149	3	0
+150	3	0
+151	3	0
+152	3	0
+153	3	0
+154	3	0
+155	3	0
+156	3	0
+157	3	0
+158	3	0
+159	3	0
+160	3	0
+161	3	0
+162	3	0
+163	3	0
+164	3	0
+165	3	0
+166	3	0
+167	3	0
+168	3	0
+169	3	0
+170	3	0
+171	3	0
+172	3	0
+173	3	0
+174	3	0
+175	3	0
+176	3	0
+177	3	0
+178	3	0
+179	3	0
+180	3	0
+181	3	0
+182	3	0
+183	3	0
+184	3	0
+185	3	0
+186	3	0
+187	3	0
+188	3	0
+189	3	0
+190	3	0
+191	3	0
+192	3	0
+193	3	0
+194	3	0
+195	3	0
+196	3	0
+197	3	0
+198	3	0
+199	3	0
+200	3	0
+201	3	0
+202	3	0
+203	3	0
+204	3	0
+205	3	0
+206	3	0
+207	3	0
+208	3	0
+209	3	0
+210	3	0
+211	3	0
+212	3	0
+213	3	0
+214	3	0
+215	3	0
+216	3	0
+217	3	0
+218	3	0
+219	3	0
+220	3	0
+221	3	0
+222	3	0
+223	3	0
+224	3	0
+225	3	0
+226	3	0
+227	3	0
+228	3	0
+229	3	0
+230	3	0
+231	3	0
+232	3	0
+233	3	0
+234	3	0
+235	3	0
+236	3	0
+237	3	0
+238	3	0
+239	3	0
+240	3	0
+241	3	0
+242	3	0
+243	3	0
+244	3	0
+245	3	0
+246	3	0
+247	3	0
+248	3	0
+249	3	0
+250	3	0
+251	3	0
+252	3	0
+253	3	0
+254	3	0
+255	3	0
+256	3	0
+257	3	0
+258	3	0
+259	3	0
+260	3	0
+261	3	0
+262	3	0
+263	3	0
+264	3	0
+265	3	0
+266	3	0
+267	3	0
+268	3	0
+269	3	0
+270	3	0
+271	3	0
+272	3	0
+273	3	0
+274	3	0
+275	3	0
+276	3	0
+277	3	0
+278	3	0
+279	3	0
+280	3	0
+281	3	0
+282	3	0
+283	3	0
+284	3	0
+285	3	0
+286	3	0
+287	3	0
+288	3	0
+289	3	0
+290	3	0
+291	3	0
+292	3	0
+293	3	0
+294	3	0
+295	3	0
+296	3	0
+297	3	0
+298	3	0
+299	3	0
+300	3	0
+301	3	0
+302	3	0
+303	3	0
+304	3	0
+305	3	0
+306	3	0
+307	3	0
+308	3	0
+309	3	0
+310	3	0
+311	3	0
+312	3	0
+313	3	0
+314	3	0
+315	3	0
+316	3	0
+317	3	0
+318	3	0
+319	3	0
+320	3	0
+321	3	0
+322	3	0
+323	3	0
+324	3	0
+325	3	0
+326	3	0
+327	3	0
+328	3	0
+329	3	0
+330	3	0
+331	3	0
+332	3	0
+333	3	0
+334	3	0
+335	3	0
+336	3	0
+337	3	0
+338	3	0
+339	3	0
+340	3	0
+341	3	0
+342	3	0
+343	3	0
+344	3	0
+345	3	0
+346	3	0
+347	3	0
+348	3	0
+349	3	0
+350	3	0
+351	3	0
+352	3	0
+353	3	0
+354	3	0
+355	3	0
+356	3	0
+357	3	0
+358	3	0
+359	3	0
+360	3	0
+0	3.5	0
+1	3.5	0
+2	3.5	0
+3	3.5	0
+4	3.5	0
+5	3.5	0
+6	3.5	0
+7	3.5	0
+8	3.5	0
+9	3.5	0
+10	3.5	0
+11	3.5	0
+12	3.5	0
+13	3.5	0
+14	3.5	0
+15	3.5	0
+16	3.5	0
+17	3.5	0
+18	3.5	0
+19	3.5	0
+20	3.5	0
+21	3.5	0
+22	3.5	0
+23	3.5	0
+24	3.5	0
+25	3.5	0
+26	3.5	0
+27	3.5	0
+28	3.5	0
+29	3.5	0
+30	3.5	0
+31	3.5	0
+32	3.5	0
+33	3.5	0
+34	3.5	0
+35	3.5	0
+36	3.5	0
+37	3.5	0
+38	3.5	0
+39	3.5	0
+40	3.5	0
+41	3.5	0
+42	3.5	0
+43	3.5	0
+44	3.5	0
+45	3.5	0
+46	3.5	0
+47	3.5	0
+48	3.5	0
+49	3.5	0
+50	3.5	0
+51	3.5	0
+52	3.5	0
+53	3.5	0
+54	3.5	0
+55	3.5	0
+56	3.5	0
+57	3.5	0
+58	3.5	0
+59	3.5	0
+60	3.5	0
+61	3.5	0
+62	3.5	0
+63	3.5	0
+64	3.5	0
+65	3.5	0
+66	3.5	0
+67	3.5	0
+68	3.5	0
+69	3.5	0
+70	3.5	0
+71	3.5	0
+72	3.5	0
+73	3.5	0
+74	3.5	0
+75	3.5	0
+76	3.5	0
+77	3.5	0
+78	3.5	0
+79	3.5	0
+80	3.5	0
+81	3.5	0
+82	3.5	0
+83	3.5	0
+84	3.5	0
+85	3.5	0
+86	3.5	0
+87	3.5	0
+88	3.5	0
+89	3.5	0
+90	3.5	0
+91	3.5	0
+92	3.5	0
+93	3.5	0
+94	3.5	0
+95	3.5	0
+96	3.5	0
+97	3.5	0
+98	3.5	0
+99	3.5	0
+100	3.5	0
+101	3.5	0
+102	3.5	0
+103	3.5	0
+104	3.5	0
+105	3.5	0
+106	3.5	0
+107	3.5	0
+108	3.5	0
+109	3.5	0
+110	3.5	0
+111	3.5	0
+112	3.5	0
+113	3.5	0
+114	3.5	0
+115	3.5	0
+116	3.5	0
+117	3.5	0
+118	3.5	0
+119	3.5	0
+120	3.5	0
+121	3.5	0
+122	3.5	0
+123	3.5	0
+124	3.5	0
+125	3.5	0
+126	3.5	0
+127	3.5	0
+128	3.5	0
+129	3.5	0
+130	3.5	0
+131	3.5	0
+132	3.5	0
+133	3.5	0
+134	3.5	0
+135	3.5	0
+136	3.5	0
+137	3.5	0
+138	3.5	0
+139	3.5	0
+140	3.5	0
+141	3.5	0
+142	3.5	0
+143	3.5	0
+144	3.5	0
+145	3.5	0
+146	3.5	0
+147	3.5	0
+148	3.5	0
+149	3.5	0
+150	3.5	0
+151	3.5	0
+152	3.5	0
+153	3.5	0
+154	3.5	0
+155	3.5	0
+156	3.5	0
+157	3.5	0
+158	3.5	0
+159	3.5	0
+160	3.5	0
+161	3.5	0
+162	3.5	0
+163	3.5	0
+164	3.5	0
+165	3.5	0
+166	3.5	0
+167	3.5	0
+168	3.5	0
+169	3.5	0
+170	3.5	0
+171	3.5	0
+172	3.5	0
+173	3.5	0
+174	3.5	0
+175	3.5	0
+176	3.5	0
+177	3.5	0
+178	3.5	0
+179	3.5	0
+180	3.5	0
+181	3.5	0
+182	3.5	0
+183	3.5	0
+184	3.5	0
+185	3.5	0
+186	3.5	0
+187	3.5	0
+188	3.5	0
+189	3.5	0
+190	3.5	0
+191	3.5	0
+192	3.5	0
+193	3.5	0
+194	3.5	0
+195	3.5	0
+196	3.5	0
+197	3.5	0
+198	3.5	0
+199	3.5	0
+200	3.5	0
+201	3.5	0
+202	3.5	0
+203	3.5	0
+204	3.5	0
+205	3.5	0
+206	3.5	0
+207	3.5	0
+208	3.5	0
+209	3.5	0
+210	3.5	0
+211	3.5	0
+212	3.5	0
+213	3.5	0
+214	3.5	0
+215	3.5	0
+216	3.5	0
+217	3.5	0
+218	3.5	0
+219	3.5	0
+220	3.5	0
+221	3.5	0
+222	3.5	0
+223	3.5	0
+224	3.5	0
+225	3.5	0
+226	3.5	0
+227	3.5	0
+228	3.5	0
+229	3.5	0
+230	3.5	0
+231	3.5	0
+232	3.5	0
+233	3.5	0
+234	3.5	0
+235	3.5	0
+236	3.5	0
+237	3.5	0
+238	3.5	0
+239	3.5	0
+240	3.5	0
+241	3.5	0
+242	3.5	0
+243	3.5	0
+244	3.5	0
+245	3.5	0
+246	3.5	0
+247	3.5	0
+248	3.5	0
+249	3.5	0
+250	3.5	0
+251	3.5	0
+252	3.5	0
+253	3.5	0
+254	3.5	0
+255	3.5	0
+256	3.5	0
+257	3.5	0
+258	3.5	0
+259	3.5	0
+260	3.5	0
+261	3.5	0
+262	3.5	0
+263	3.5	0
+264	3.5	0
+265	3.5	0
+266	3.5	0
+267	3.5	0
+268	3.5	0
+269	3.5	0
+270	3.5	0
+271	3.5	0
+272	3.5	0
+273	3.5	0
+274	3.5	0
+275	3.5	0
+276	3.5	0
+277	3.5	0
+278	3.5	0
+279	3.5	0
+280	3.5	0
+281	3.5	0
+282	3.5	0
+283	3.5	0
+284	3.5	0
+285	3.5	0
+286	3.5	0
+287	3.5	0
+288	3.5	0
+289	3.5	0
+290	3.5	0
+291	3.5	0
+292	3.5	0
+293	3.5	0
+294	3.5	0
+295	3.5	0
+296	3.5	0
+297	3.5	0
+298	3.5	0
+299	3.5	0
+300	3.5	0
+301	3.5	0
+302	3.5	0
+303	3.5	0
+304	3.5	0
+305	3.5	0
+306	3.5	0
+307	3.5	0
+308	3.5	0
+309	3.5	0
+310	3.5	0
+311	3.5	0
+312	3.5	0
+313	3.5	0
+314	3.5	0
+315	3.5	0
+316	3.5	0
+317	3.5	0
+318	3.5	0
+319	3.5	0
+320	3.5	0
+321	3.5	0
+322	3.5	0
+323	3.5	0
+324	3.5	0
+325	3.5	0
+326	3.5	0
+327	3.5	0
+328	3.5	0
+329	3.5	0
+330	3.5	0
+331	3.5	0
+332	3.5	0
+333	3.5	0
+334	3.5	0
+335	3.5	0
+336	3.5	0
+337	3.5	0
+338	3.5	0
+339	3.5	0
+340	3.5	0
+341	3.5	0
+342	3.5	0
+343	3.5	0
+344	3.5	0
+345	3.5	0
+346	3.5	0
+347	3.5	0
+348	3.5	0
+349	3.5	0
+350	3.5	0
+351	3.5	0
+352	3.5	0
+353	3.5	0
+354	3.5	0
+355	3.5	0
+356	3.5	0
+357	3.5	0
+358	3.5	0
+359	3.5	0
+360	3.5	0
+0	4	0
+1	4	0
+2	4	0
+3	4	0
+4	4	0
+5	4	0
+6	4	0
+7	4	0
+8	4	0
+9	4	0
+10	4	0
+11	4	0
+12	4	0
+13	4	0
+14	4	0
+15	4	0
+16	4	0
+17	4	0
+18	4	0
+19	4	0
+20	4	0
+21	4	0
+22	4	0
+23	4	0
+24	4	0
+25	4	0
+26	4	0
+27	4	0
+28	4	0
+29	4	0
+30	4	0
+31	4	0
+32	4	0
+33	4	0
+34	4	0
+35	4	0
+36	4	0
+37	4	0
+38	4	0
+39	4	0
+40	4	0
+41	4	0
+42	4	0
+43	4	0
+44	4	0
+45	4	0
+46	4	0
+47	4	0
+48	4	0
+49	4	0
+50	4	0
+51	4	0
+52	4	0
+53	4	0
+54	4	0
+55	4	0
+56	4	0
+57	4	0
+58	4	0
+59	4	0
+60	4	0
+61	4	0
+62	4	0
+63	4	0
+64	4	0
+65	4	0
+66	4	0
+67	4	0
+68	4	0
+69	4	0
+70	4	0
+71	4	0
+72	4	0
+73	4	0
+74	4	0
+75	4	0
+76	4	0
+77	4	0
+78	4	0
+79	4	0
+80	4	0
+81	4	0
+82	4	0
+83	4	0
+84	4	0
+85	4	0
+86	4	0
+87	4	0
+88	4	0
+89	4	0
+90	4	0
+91	4	0
+92	4	0
+93	4	0
+94	4	0
+95	4	0
+96	4	0
+97	4	0
+98	4	0
+99	4	0
+100	4	0
+101	4	0
+102	4	0
+103	4	0
+104	4	0
+105	4	0
+106	4	0
+107	4	0
+108	4	0
+109	4	0
+110	4	0
+111	4	0
+112	4	0
+113	4	0
+114	4	0
+115	4	0
+116	4	0
+117	4	0
+118	4	0
+119	4	0
+120	4	0
+121	4	0
+122	4	0
+123	4	0
+124	4	0
+125	4	0
+126	4	0
+127	4	0
+128	4	0
+129	4	0
+130	4	0
+131	4	0
+132	4	0
+133	4	0
+134	4	0
+135	4	0
+136	4	0
+137	4	0
+138	4	0
+139	4	0
+140	4	0
+141	4	0
+142	4	0
+143	4	0
+144	4	0
+145	4	0
+146	4	0
+147	4	0
+148	4	0
+149	4	0
+150	4	0
+151	4	0
+152	4	0
+153	4	0
+154	4	0
+155	4	0
+156	4	0
+157	4	0
+158	4	0
+159	4	0
+160	4	0
+161	4	0
+162	4	0
+163	4	0
+164	4	0
+165	4	0
+166	4	0
+167	4	0
+168	4	0
+169	4	0
+170	4	0
+171	4	0
+172	4	0
+173	4	0
+174	4	0
+175	4	0
+176	4	0
+177	4	0
+178	4	0
+179	4	0
+180	4	0
+181	4	0
+182	4	0
+183	4	0
+184	4	0
+185	4	0
+186	4	0
+187	4	0
+188	4	0
+189	4	0
+190	4	0
+191	4	0
+192	4	0
+193	4	0
+194	4	0
+195	4	0
+196	4	0
+197	4	0
+198	4	0
+199	4	0
+200	4	0
+201	4	0
+202	4	0
+203	4	0
+204	4	0
+205	4	0
+206	4	0
+207	4	0
+208	4	0
+209	4	0
+210	4	0
+211	4	0
+212	4	0
+213	4	0
+214	4	0
+215	4	0
+216	4	0
+217	4	0
+218	4	0
+219	4	0
+220	4	0
+221	4	0
+222	4	0
+223	4	0
+224	4	0
+225	4	0
+226	4	0
+227	4	0
+228	4	0
+229	4	0
+230	4	0
+231	4	0
+232	4	0
+233	4	0
+234	4	0
+235	4	0
+236	4	0
+237	4	0
+238	4	0
+239	4	0
+240	4	0
+241	4	0
+242	4	0
+243	4	0
+244	4	0
+245	4	0
+246	4	0
+247	4	0
+248	4	0
+249	4	0
+250	4	0
+251	4	0
+252	4	0
+253	4	0
+254	4	0
+255	4	0
+256	4	0
+257	4	0
+258	4	0
+259	4	0
+260	4	0
+261	4	0
+262	4	0
+263	4	0
+264	4	0
+265	4	0
+266	4	0
+267	4	0
+268	4	0
+269	4	0
+270	4	0
+271	4	0
+272	4	0
+273	4	0
+274	4	0
+275	4	0
+276	4	0
+277	4	0
+278	4	0
+279	4	0
+280	4	0
+281	4	0
+282	4	0
+283	4	0
+284	4	0
+285	4	0
+286	4	0
+287	4	0
+288	4	0
+289	4	0
+290	4	0
+291	4	0
+292	4	0
+293	4	0
+294	4	0
+295	4	0
+296	4	0
+297	4	0
+298	4	0
+299	4	0
+300	4	0
+301	4	0
+302	4	0
+303	4	0
+304	4	0
+305	4	0
+306	4	0
+307	4	0
+308	4	0
+309	4	0
+310	4	0
+311	4	0
+312	4	0
+313	4	0
+314	4	0
+315	4	0
+316	4	0
+317	4	0
+318	4	0
+319	4	0
+320	4	0
+321	4	0
+322	4	0
+323	4	0
+324	4	0
+325	4	0
+326	4	0
+327	4	0
+328	4	0
+329	4	0
+330	4	0
+331	4	0
+332	4	0
+333	4	0
+334	4	0
+335	4	0
+336	4	0
+337	4	0
+338	4	0
+339	4	0
+340	4	0
+341	4	0
+342	4	0
+343	4	0
+344	4	0
+345	4	0
+346	4	0
+347	4	0
+348	4	0
+349	4	0
+350	4	0
+351	4	0
+352	4	0
+353	4	0
+354	4	0
+355	4	0
+356	4	0
+357	4	0
+358	4	0
+359	4	0
+360	4	0
+0	4.5	0
+1	4.5	0
+2	4.5	0
+3	4.5	0
+4	4.5	0
+5	4.5	0
+6	4.5	0
+7	4.5	0
+8	4.5	0
+9	4.5	0
+10	4.5	0
+11	4.5	0
+12	4.5	0
+13	4.5	0
+14	4.5	0
+15	4.5	0
+16	4.5	0
+17	4.5	0
+18	4.5	0
+19	4.5	0
+20	4.5	0
+21	4.5	0
+22	4.5	0
+23	4.5	0
+24	4.5	0
+25	4.5	0
+26	4.5	0
+27	4.5	0
+28	4.5	0
+29	4.5	0
+30	4.5	0
+31	4.5	0
+32	4.5	0
+33	4.5	0
+34	4.5	0
+35	4.5	0
+36	4.5	0
+37	4.5	0
+38	4.5	0
+39	4.5	0
+40	4.5	0
+41	4.5	0
+42	4.5	0
+43	4.5	0
+44	4.5	0
+45	4.5	0
+46	4.5	0
+47	4.5	0
+48	4.5	0
+49	4.5	0
+50	4.5	0
+51	4.5	0
+52	4.5	0
+53	4.5	0
+54	4.5	0
+55	4.5	0
+56	4.5	0
+57	4.5	0
+58	4.5	0
+59	4.5	0
+60	4.5	0
+61	4.5	0
+62	4.5	0
+63	4.5	0
+64	4.5	0
+65	4.5	0
+66	4.5	0
+67	4.5	0
+68	4.5	0
+69	4.5	0
+70	4.5	0
+71	4.5	0
+72	4.5	0
+73	4.5	0
+74	4.5	0
+75	4.5	0
+76	4.5	0
+77	4.5	0
+78	4.5	0
+79	4.5	0
+80	4.5	0
+81	4.5	0
+82	4.5	0
+83	4.5	0
+84	4.5	0
+85	4.5	0
+86	4.5	0
+87	4.5	0
+88	4.5	0
+89	4.5	0
+90	4.5	0
+91	4.5	0
+92	4.5	0
+93	4.5	0
+94	4.5	0
+95	4.5	0
+96	4.5	0
+97	4.5	0
+98	4.5	0
+99	4.5	0
+100	4.5	0
+101	4.5	0
+102	4.5	0
+103	4.5	0
+104	4.5	0
+105	4.5	0
+106	4.5	0
+107	4.5	0
+108	4.5	0
+109	4.5	0
+110	4.5	0
+111	4.5	0
+112	4.5	0
+113	4.5	0
+114	4.5	0
+115	4.5	0
+116	4.5	0
+117	4.5	0
+118	4.5	0
+119	4.5	0
+120	4.5	0
+121	4.5	0
+122	4.5	0
+123	4.5	0
+124	4.5	0
+125	4.5	0
+126	4.5	0
+127	4.5	0
+128	4.5	0
+129	4.5	0
+130	4.5	0
+131	4.5	0
+132	4.5	0
+133	4.5	0
+134	4.5	0
+135	4.5	0
+136	4.5	0
+137	4.5	0
+138	4.5	0
+139	4.5	0
+140	4.5	0
+141	4.5	0
+142	4.5	0
+143	4.5	0
+144	4.5	0
+145	4.5	0
+146	4.5	0
+147	4.5	0
+148	4.5	0
+149	4.5	0
+150	4.5	0
+151	4.5	0
+152	4.5	0
+153	4.5	0
+154	4.5	0
+155	4.5	0
+156	4.5	0
+157	4.5	0
+158	4.5	0
+159	4.5	0
+160	4.5	0
+161	4.5	0
+162	4.5	0
+163	4.5	0
+164	4.5	0
+165	4.5	0
+166	4.5	0
+167	4.5	0
+168	4.5	0
+169	4.5	0
+170	4.5	0
+171	4.5	0
+172	4.5	0
+173	4.5	0
+174	4.5	0
+175	4.5	0
+176	4.5	0
+177	4.5	0
+178	4.5	0
+179	4.5	0
+180	4.5	0
+181	4.5	0
+182	4.5	0
+183	4.5	0
+184	4.5	0
+185	4.5	0
+186	4.5	0
+187	4.5	0
+188	4.5	0
+189	4.5	0
+190	4.5	0
+191	4.5	0
+192	4.5	0
+193	4.5	0
+194	4.5	0
+195	4.5	0
+196	4.5	0
+197	4.5	0
+198	4.5	0
+199	4.5	0
+200	4.5	0
+201	4.5	0
+202	4.5	0
+203	4.5	0
+204	4.5	0
+205	4.5	0
+206	4.5	0
+207	4.5	0
+208	4.5	0
+209	4.5	0
+210	4.5	0
+211	4.5	0
+212	4.5	0
+213	4.5	0
+214	4.5	0
+215	4.5	0
+216	4.5	0
+217	4.5	0
+218	4.5	0
+219	4.5	0
+220	4.5	0
+221	4.5	0
+222	4.5	0
+223	4.5	0
+224	4.5	0
+225	4.5	0
+226	4.5	0
+227	4.5	0
+228	4.5	0
+229	4.5	0
+230	4.5	0
+231	4.5	0
+232	4.5	0
+233	4.5	0
+234	4.5	0
+235	4.5	0
+236	4.5	0
+237	4.5	0
+238	4.5	0
+239	4.5	0
+240	4.5	0
+241	4.5	0
+242	4.5	0
+243	4.5	0
+244	4.5	0
+245	4.5	0
+246	4.5	0
+247	4.5	0
+248	4.5	0
+249	4.5	0
+250	4.5	0
+251	4.5	0
+252	4.5	0
+253	4.5	0
+254	4.5	0
+255	4.5	0
+256	4.5	0
+257	4.5	0
+258	4.5	0
+259	4.5	0
+260	4.5	0
+261	4.5	0
+262	4.5	0
+263	4.5	0
+264	4.5	0
+265	4.5	0
+266	4.5	0
+267	4.5	0
+268	4.5	0
+269	4.5	0
+270	4.5	0
+271	4.5	0
+272	4.5	0
+273	4.5	0
+274	4.5	0
+275	4.5	0
+276	4.5	0
+277	4.5	0
+278	4.5	0
+279	4.5	0
+280	4.5	0
+281	4.5	0
+282	4.5	0
+283	4.5	0
+284	4.5	0
+285	4.5	0
+286	4.5	0
+287	4.5	0
+288	4.5	0
+289	4.5	0
+290	4.5	0
+291	4.5	0
+292	4.5	0
+293	4.5	0
+294	4.5	0
+295	4.5	0
+296	4.5	0
+297	4.5	0
+298	4.5	0
+299	4.5	0
+300	4.5	0
+301	4.5	0
+302	4.5	0
+303	4.5	0
+304	4.5	0
+305	4.5	0
+306	4.5	0
+307	4.5	0
+308	4.5	0
+309	4.5	0
+310	4.5	0
+311	4.5	0
+312	4.5	0
+313	4.5	0
+314	4.5	0
+315	4.5	0
+316	4.5	0
+317	4.5	0
+318	4.5	0
+319	4.5	0
+320	4.5	0
+321	4.5	0
+322	4.5	0
+323	4.5	0
+324	4.5	0
+325	4.5	0
+326	4.5	0
+327	4.5	0
+328	4.5	0
+329	4.5	0
+330	4.5	0
+331	4.5	0
+332	4.5	0
+333	4.5	0
+334	4.5	0
+335	4.5	0
+336	4.5	0
+337	4.5	0
+338	4.5	0
+339	4.5	0
+340	4.5	0
+341	4.5	0
+342	4.5	0
+343	4.5	0
+344	4.5	0
+345	4.5	0
+346	4.5	0
+347	4.5	0
+348	4.5	0
+349	4.5	0
+350	4.5	0
+351	4.5	0
+352	4.5	0
+353	4.5	0
+354	4.5	0
+355	4.5	0
+356	4.5	0
+357	4.5	0
+358	4.5	0
+359	4.5	0
+360	4.5	0
+0	5	0
+1	5	0
+2	5	0
+3	5	0
+4	5	0
+5	5	0
+6	5	0
+7	5	0
+8	5	0
+9	5	0
+10	5	0
+11	5	0
+12	5	0
+13	5	0
+14	5	0
+15	5	0
+16	5	0
+17	5	0
+18	5	0
+19	5	0
+20	5	0
+21	5	0
+22	5	0
+23	5	0
+24	5	0
+25	5	0
+26	5	0
+27	5	0
+28	5	0
+29	5	0
+30	5	0
+31	5	0
+32	5	0
+33	5	0
+34	5	0
+35	5	0
+36	5	0
+37	5	0
+38	5	0
+39	5	0
+40	5	0
+41	5	0
+42	5	0
+43	5	0
+44	5	0
+45	5	0
+46	5	0
+47	5	0
+48	5	0
+49	5	0
+50	5	0
+51	5	0
+52	5	0
+53	5	0
+54	5	0
+55	5	0
+56	5	0
+57	5	0
+58	5	0
+59	5	0
+60	5	0
+61	5	0
+62	5	0
+63	5	0
+64	5	0
+65	5	0
+66	5	0
+67	5	0
+68	5	0
+69	5	0
+70	5	0
+71	5	0
+72	5	0
+73	5	0
+74	5	0
+75	5	0
+76	5	0
+77	5	0
+78	5	0
+79	5	0
+80	5	0
+81	5	0
+82	5	0
+83	5	0
+84	5	0
+85	5	0
+86	5	0
+87	5	0
+88	5	0
+89	5	0
+90	5	0
+91	5	0
+92	5	0
+93	5	0
+94	5	0
+95	5	0
+96	5	0
+97	5	0
+98	5	0
+99	5	0
+100	5	0
+101	5	0
+102	5	0
+103	5	0
+104	5	0
+105	5	0
+106	5	0
+107	5	0
+108	5	0
+109	5	0
+110	5	0
+111	5	0
+112	5	0
+113	5	0
+114	5	0
+115	5	0
+116	5	0
+117	5	0
+118	5	0
+119	5	0
+120	5	0
+121	5	0
+122	5	0
+123	5	0
+124	5	0
+125	5	0
+126	5	0
+127	5	0
+128	5	0
+129	5	0
+130	5	0
+131	5	0
+132	5	0
+133	5	0
+134	5	0
+135	5	0
+136	5	0
+137	5	0
+138	5	0
+139	5	0
+140	5	0
+141	5	0
+142	5	0
+143	5	0
+144	5	0
+145	5	0
+146	5	0
+147	5	0
+148	5	0
+149	5	0
+150	5	0
+151	5	0
+152	5	0
+153	5	0
+154	5	0
+155	5	0
+156	5	0
+157	5	0
+158	5	0
+159	5	0
+160	5	0
+161	5	0
+162	5	0
+163	5	0
+164	5	0
+165	5	0
+166	5	0
+167	5	0
+168	5	0
+169	5	0
+170	5	0
+171	5	0
+172	5	0
+173	5	0
+174	5	0
+175	5	0
+176	5	0
+177	5	0
+178	5	0
+179	5	0
+180	5	0
+181	5	0
+182	5	0
+183	5	0
+184	5	0
+185	5	0
+186	5	0
+187	5	0
+188	5	0
+189	5	0
+190	5	0
+191	5	0
+192	5	0
+193	5	0
+194	5	0
+195	5	0
+196	5	0
+197	5	0
+198	5	0
+199	5	0
+200	5	0
+201	5	0
+202	5	0
+203	5	0
+204	5	0
+205	5	0
+206	5	0
+207	5	0
+208	5	0
+209	5	0
+210	5	0
+211	5	0
+212	5	0
+213	5	0
+214	5	0
+215	5	0
+216	5	0
+217	5	0
+218	5	0
+219	5	0
+220	5	0
+221	5	0
+222	5	0
+223	5	0
+224	5	0
+225	5	0
+226	5	0
+227	5	0
+228	5	0
+229	5	0
+230	5	0
+231	5	0
+232	5	0
+233	5	0
+234	5	0
+235	5	0
+236	5	0
+237	5	0
+238	5	0
+239	5	0
+240	5	0
+241	5	0
+242	5	0
+243	5	0
+244	5	0
+245	5	0
+246	5	0
+247	5	0
+248	5	0
+249	5	0
+250	5	0
+251	5	0
+252	5	0
+253	5	0
+254	5	0
+255	5	0
+256	5	0
+257	5	0
+258	5	0
+259	5	0
+260	5	0
+261	5	0
+262	5	0
+263	5	0
+264	5	0
+265	5	0
+266	5	0
+267	5	0
+268	5	0
+269	5	0
+270	5	0
+271	5	0
+272	5	0
+273	5	0
+274	5	0
+275	5	0
+276	5	0
+277	5	0
+278	5	0
+279	5	0
+280	5	0
+281	5	0
+282	5	0
+283	5	0
+284	5	0
+285	5	0
+286	5	0
+287	5	0
+288	5	0
+289	5	0
+290	5	0
+291	5	0
+292	5	0
+293	5	0
+294	5	0
+295	5	0
+296	5	0
+297	5	0
+298	5	0
+299	5	0
+300	5	0
+301	5	0
+302	5	0
+303	5	0
+304	5	0
+305	5	0
+306	5	0
+307	5	0
+308	5	0
+309	5	0
+310	5	0
+311	5	0
+312	5	0
+313	5	0
+314	5	0
+315	5	0
+316	5	0
+317	5	0
+318	5	0
+319	5	0
+320	5	0
+321	5	0
+322	5	0
+323	5	0
+324	5	0
+325	5	0
+326	5	0
+327	5	0
+328	5	0
+329	5	0
+330	5	0
+331	5	0
+332	5	0
+333	5	0
+334	5	0
+335	5	0
+336	5	0
+337	5	0
+338	5	0
+339	5	0
+340	5	0
+341	5	0
+342	5	0
+343	5	0
+344	5	0
+345	5	0
+346	5	0
+347	5	0
+348	5	0
+349	5	0
+350	5	0
+351	5	0
+352	5	0
+353	5	0
+354	5	0
+355	5	0
+356	5	0
+357	5	0
+358	5	0
+359	5	0
+360	5	0
+0	5.5	0
+1	5.5	0
+2	5.5	0
+3	5.5	0
+4	5.5	0
+5	5.5	0
+6	5.5	0
+7	5.5	0
+8	5.5	0
+9	5.5	0
+10	5.5	0
+11	5.5	0
+12	5.5	0
+13	5.5	0
+14	5.5	0
+15	5.5	0
+16	5.5	0
+17	5.5	0
+18	5.5	0
+19	5.5	0
+20	5.5	0
+21	5.5	0
+22	5.5	0
+23	5.5	0
+24	5.5	0
+25	5.5	0
+26	5.5	0
+27	5.5	0
+28	5.5	0
+29	5.5	0
+30	5.5	0
+31	5.5	0
+32	5.5	0
+33	5.5	0
+34	5.5	0
+35	5.5	0
+36	5.5	0
+37	5.5	0
+38	5.5	0
+39	5.5	0
+40	5.5	0
+41	5.5	0
+42	5.5	0
+43	5.5	0
+44	5.5	0
+45	5.5	0
+46	5.5	0
+47	5.5	0
+48	5.5	0
+49	5.5	0
+50	5.5	0
+51	5.5	0
+52	5.5	0
+53	5.5	0
+54	5.5	0
+55	5.5	0
+56	5.5	0
+57	5.5	0
+58	5.5	0
+59	5.5	0
+60	5.5	0
+61	5.5	0
+62	5.5	0
+63	5.5	0
+64	5.5	0
+65	5.5	0
+66	5.5	0
+67	5.5	0
+68	5.5	0
+69	5.5	0
+70	5.5	0
+71	5.5	0
+72	5.5	0
+73	5.5	0
+74	5.5	0
+75	5.5	0
+76	5.5	0
+77	5.5	0
+78	5.5	0
+79	5.5	0
+80	5.5	0
+81	5.5	0
+82	5.5	0
+83	5.5	0
+84	5.5	0
+85	5.5	0
+86	5.5	0
+87	5.5	0
+88	5.5	0
+89	5.5	0
+90	5.5	0
+91	5.5	0
+92	5.5	0
+93	5.5	0
+94	5.5	0
+95	5.5	0
+96	5.5	0
+97	5.5	0
+98	5.5	0
+99	5.5	0
+100	5.5	0
+101	5.5	0
+102	5.5	0
+103	5.5	0
+104	5.5	0
+105	5.5	0
+106	5.5	0
+107	5.5	0
+108	5.5	0
+109	5.5	0
+110	5.5	0
+111	5.5	0
+112	5.5	0
+113	5.5	0
+114	5.5	0
+115	5.5	0
+116	5.5	0
+117	5.5	0
+118	5.5	0
+119	5.5	0
+120	5.5	0
+121	5.5	0
+122	5.5	0
+123	5.5	0
+124	5.5	0
+125	5.5	0
+126	5.5	0
+127	5.5	0
+128	5.5	0
+129	5.5	0
+130	5.5	0
+131	5.5	0
+132	5.5	0
+133	5.5	0
+134	5.5	0
+135	5.5	0
+136	5.5	0
+137	5.5	0
+138	5.5	0
+139	5.5	0
+140	5.5	0
+141	5.5	0
+142	5.5	0
+143	5.5	0
+144	5.5	0
+145	5.5	0
+146	5.5	0
+147	5.5	0
+148	5.5	0
+149	5.5	0
+150	5.5	0
+151	5.5	0
+152	5.5	0
+153	5.5	0
+154	5.5	0
+155	5.5	0
+156	5.5	0
+157	5.5	0
+158	5.5	0
+159	5.5	0
+160	5.5	0
+161	5.5	0
+162	5.5	0
+163	5.5	0
+164	5.5	0
+165	5.5	0
+166	5.5	0
+167	5.5	0
+168	5.5	0
+169	5.5	0
+170	5.5	0
+171	5.5	0
+172	5.5	0
+173	5.5	0
+174	5.5	0
+175	5.5	0
+176	5.5	0
+177	5.5	0
+178	5.5	0
+179	5.5	0
+180	5.5	0
+181	5.5	0
+182	5.5	0
+183	5.5	0
+184	5.5	0
+185	5.5	0
+186	5.5	0
+187	5.5	0
+188	5.5	0
+189	5.5	0
+190	5.5	0
+191	5.5	0
+192	5.5	0
+193	5.5	0
+194	5.5	0
+195	5.5	0
+196	5.5	0
+197	5.5	0
+198	5.5	0
+199	5.5	0
+200	5.5	0
+201	5.5	0
+202	5.5	0
+203	5.5	0
+204	5.5	0
+205	5.5	0
+206	5.5	0
+207	5.5	0
+208	5.5	0
+209	5.5	0
+210	5.5	0
+211	5.5	0
+212	5.5	0
+213	5.5	0
+214	5.5	0
+215	5.5	0
+216	5.5	0
+217	5.5	0
+218	5.5	0
+219	5.5	0
+220	5.5	0
+221	5.5	0
+222	5.5	0
+223	5.5	0
+224	5.5	0
+225	5.5	0
+226	5.5	0
+227	5.5	0
+228	5.5	0
+229	5.5	0
+230	5.5	0
+231	5.5	0
+232	5.5	0
+233	5.5	0
+234	5.5	0
+235	5.5	0
+236	5.5	0
+237	5.5	0
+238	5.5	0
+239	5.5	0
+240	5.5	0
+241	5.5	0
+242	5.5	0
+243	5.5	0
+244	5.5	0
+245	5.5	0
+246	5.5	0
+247	5.5	0
+248	5.5	0
+249	5.5	0
+250	5.5	0
+251	5.5	0
+252	5.5	0
+253	5.5	0
+254	5.5	0
+255	5.5	0
+256	5.5	0
+257	5.5	0
+258	5.5	0
+259	5.5	0
+260	5.5	0
+261	5.5	0
+262	5.5	0
+263	5.5	0
+264	5.5	0
+265	5.5	0
+266	5.5	0
+267	5.5	0
+268	5.5	0
+269	5.5	0
+270	5.5	0
+271	5.5	0
+272	5.5	0
+273	5.5	0
+274	5.5	0
+275	5.5	0
+276	5.5	0
+277	5.5	0
+278	5.5	0
+279	5.5	0
+280	5.5	0
+281	5.5	0
+282	5.5	0
+283	5.5	0
+284	5.5	0
+285	5.5	0
+286	5.5	0
+287	5.5	0
+288	5.5	0
+289	5.5	0
+290	5.5	0
+291	5.5	0
+292	5.5	0
+293	5.5	0
+294	5.5	0
+295	5.5	0
+296	5.5	0
+297	5.5	0
+298	5.5	0
+299	5.5	0
+300	5.5	0
+301	5.5	0
+302	5.5	0
+303	5.5	0
+304	5.5	0
+305	5.5	0
+306	5.5	0
+307	5.5	0
+308	5.5	0
+309	5.5	0
+310	5.5	0
+311	5.5	0
+312	5.5	0
+313	5.5	0
+314	5.5	0
+315	5.5	0
+316	5.5	0
+317	5.5	0
+318	5.5	0
+319	5.5	0
+320	5.5	0
+321	5.5	0
+322	5.5	0
+323	5.5	0
+324	5.5	0
+325	5.5	0
+326	5.5	0
+327	5.5	0
+328	5.5	0
+329	5.5	0
+330	5.5	0
+331	5.5	0
+332	5.5	0
+333	5.5	0
+334	5.5	0
+335	5.5	0
+336	5.5	0
+337	5.5	0
+338	5.5	0
+339	5.5	0
+340	5.5	0
+341	5.5	0
+342	5.5	0
+343	5.5	0
+344	5.5	0
+345	5.5	0
+346	5.5	0
+347	5.5	0
+348	5.5	0
+349	5.5	0
+350	5.5	0
+351	5.5	0
+352	5.5	0
+353	5.5	0
+354	5.5	0
+355	5.5	0
+356	5.5	0
+357	5.5	0
+358	5.5	0
+359	5.5	0
+360	5.5	0
+0	6	0
+1	6	0
+2	6	0
+3	6	0
+4	6	0
+5	6	0
+6	6	0
+7	6	0
+8	6	0
+9	6	0
+10	6	0
+11	6	0
+12	6	0
+13	6	0
+14	6	0
+15	6	0
+16	6	0
+17	6	0
+18	6	0
+19	6	0
+20	6	0
+21	6	0
+22	6	0
+23	6	0
+24	6	0
+25	6	0
+26	6	0
+27	6	0
+28	6	0
+29	6	0
+30	6	0
+31	6	0
+32	6	0
+33	6	0
+34	6	0
+35	6	0
+36	6	0
+37	6	0
+38	6	0
+39	6	0
+40	6	0
+41	6	0
+42	6	0
+43	6	0
+44	6	0
+45	6	0
+46	6	0
+47	6	0
+48	6	0
+49	6	0
+50	6	0
+51	6	0
+52	6	0
+53	6	0
+54	6	0
+55	6	0
+56	6	0
+57	6	0
+58	6	0
+59	6	0
+60	6	0
+61	6	0
+62	6	0
+63	6	0
+64	6	0
+65	6	0
+66	6	0
+67	6	0
+68	6	0
+69	6	0
+70	6	0
+71	6	0
+72	6	0
+73	6	0
+74	6	0
+75	6	0
+76	6	0
+77	6	0
+78	6	0
+79	6	0
+80	6	0
+81	6	0
+82	6	0
+83	6	0
+84	6	0
+85	6	0
+86	6	0
+87	6	0
+88	6	0
+89	6	0
+90	6	0
+91	6	0
+92	6	0
+93	6	0
+94	6	0
+95	6	0
+96	6	0
+97	6	0
+98	6	0
+99	6	0
+100	6	0
+101	6	0
+102	6	0
+103	6	0
+104	6	0
+105	6	0
+106	6	0
+107	6	0
+108	6	0
+109	6	0
+110	6	0
+111	6	0
+112	6	0
+113	6	0
+114	6	0
+115	6	0
+116	6	0
+117	6	0
+118	6	0
+119	6	0
+120	6	0
+121	6	0
+122	6	0
+123	6	0
+124	6	0
+125	6	0
+126	6	0
+127	6	0
+128	6	0
+129	6	0
+130	6	0
+131	6	0
+132	6	0
+133	6	0
+134	6	0
+135	6	0
+136	6	0
+137	6	0
+138	6	0
+139	6	0
+140	6	0
+141	6	0
+142	6	0
+143	6	0
+144	6	0
+145	6	0
+146	6	0
+147	6	0
+148	6	0
+149	6	0
+150	6	0
+151	6	0
+152	6	0
+153	6	0
+154	6	0
+155	6	0
+156	6	0
+157	6	0
+158	6	0
+159	6	0
+160	6	0
+161	6	0
+162	6	0
+163	6	0
+164	6	0
+165	6	0
+166	6	0
+167	6	0
+168	6	0
+169	6	0
+170	6	0
+171	6	0
+172	6	0
+173	6	0
+174	6	0
+175	6	0
+176	6	0
+177	6	0
+178	6	0
+179	6	0
+180	6	0
+181	6	0
+182	6	0
+183	6	0
+184	6	0
+185	6	0
+186	6	0
+187	6	0
+188	6	0
+189	6	0
+190	6	0
+191	6	0
+192	6	0
+193	6	0
+194	6	0
+195	6	0
+196	6	0
+197	6	0
+198	6	0
+199	6	0
+200	6	0
+201	6	0
+202	6	0
+203	6	0
+204	6	0
+205	6	0
+206	6	0
+207	6	0
+208	6	0
+209	6	0
+210	6	0
+211	6	0
+212	6	0
+213	6	0
+214	6	0
+215	6	0
+216	6	0
+217	6	0
+218	6	0
+219	6	0
+220	6	0
+221	6	0
+222	6	0
+223	6	0
+224	6	0
+225	6	0
+226	6	0
+227	6	0
+228	6	0
+229	6	0
+230	6	0
+231	6	0
+232	6	0
+233	6	0
+234	6	0
+235	6	0
+236	6	0
+237	6	0
+238	6	0
+239	6	0
+240	6	0
+241	6	0
+242	6	0
+243	6	0
+244	6	0
+245	6	0
+246	6	0
+247	6	0
+248	6	0
+249	6	0
+250	6	0
+251	6	0
+252	6	0
+253	6	0
+254	6	0
+255	6	0
+256	6	0
+257	6	0
+258	6	0
+259	6	0
+260	6	0
+261	6	0
+262	6	0
+263	6	0
+264	6	0
+265	6	0
+266	6	0
+267	6	0
+268	6	0
+269	6	0
+270	6	0
+271	6	0
+272	6	0
+273	6	0
+274	6	0
+275	6	0
+276	6	0
+277	6	0
+278	6	0
+279	6	0
+280	6	0
+281	6	0
+282	6	0
+283	6	0
+284	6	0
+285	6	0
+286	6	0
+287	6	0
+288	6	0
+289	6	0
+290	6	0
+291	6	0
+292	6	0
+293	6	0
+294	6	0
+295	6	0
+296	6	0
+297	6	0
+298	6	0
+299	6	0
+300	6	0
+301	6	0
+302	6	0
+303	6	0
+304	6	0
+305	6	0
+306	6	0
+307	6	0
+308	6	0
+309	6	0
+310	6	0
+311	6	0
+312	6	0
+313	6	0
+314	6	0
+315	6	0
+316	6	0
+317	6	0
+318	6	0
+319	6	0
+320	6	0
+321	6	0
+322	6	0
+323	6	0
+324	6	0
+325	6	0
+326	6	0
+327	6	0
+328	6	0
+329	6	0
+330	6	0
+331	6	0
+332	6	0
+333	6	0
+334	6	0
+335	6	0
+336	6	0
+337	6	0
+338	6	0
+339	6	0
+340	6	0
+341	6	0
+342	6	0
+343	6	0
+344	6	0
+345	6	0
+346	6	0
+347	6	0
+348	6	0
+349	6	0
+350	6	0
+351	6	0
+352	6	0
+353	6	0
+354	6	0
+355	6	0
+356	6	0
+357	6	0
+358	6	0
+359	6	0
+360	6	0
+0	6.5	0
+1	6.5	0
+2	6.5	0
+3	6.5	0
+4	6.5	0
+5	6.5	0
+6	6.5	0
+7	6.5	0
+8	6.5	0
+9	6.5	0
+10	6.5	0
+11	6.5	0
+12	6.5	0
+13	6.5	0
+14	6.5	0
+15	6.5	0
+16	6.5	0
+17	6.5	0
+18	6.5	0
+19	6.5	0
+20	6.5	0
+21	6.5	0
+22	6.5	0
+23	6.5	0
+24	6.5	0
+25	6.5	0
+26	6.5	0
+27	6.5	0
+28	6.5	0
+29	6.5	0
+30	6.5	0
+31	6.5	0
+32	6.5	0
+33	6.5	0
+34	6.5	0
+35	6.5	0
+36	6.5	0
+37	6.5	0
+38	6.5	0
+39	6.5	0
+40	6.5	0
+41	6.5	0
+42	6.5	0
+43	6.5	0
+44	6.5	0
+45	6.5	0
+46	6.5	0
+47	6.5	0
+48	6.5	0
+49	6.5	0
+50	6.5	0
+51	6.5	0
+52	6.5	0
+53	6.5	0
+54	6.5	0
+55	6.5	0
+56	6.5	0
+57	6.5	0
+58	6.5	0
+59	6.5	0
+60	6.5	0
+61	6.5	0
+62	6.5	0
+63	6.5	0
+64	6.5	0
+65	6.5	0
+66	6.5	0
+67	6.5	0
+68	6.5	0
+69	6.5	0
+70	6.5	0
+71	6.5	0
+72	6.5	0
+73	6.5	0
+74	6.5	0
+75	6.5	0
+76	6.5	0
+77	6.5	0
+78	6.5	0
+79	6.5	0
+80	6.5	0
+81	6.5	0
+82	6.5	0
+83	6.5	0
+84	6.5	0
+85	6.5	0
+86	6.5	0
+87	6.5	0
+88	6.5	0
+89	6.5	0
+90	6.5	0
+91	6.5	0
+92	6.5	0
+93	6.5	0
+94	6.5	0
+95	6.5	0
+96	6.5	0
+97	6.5	0
+98	6.5	0
+99	6.5	0
+100	6.5	0
+101	6.5	0
+102	6.5	0
+103	6.5	0
+104	6.5	0
+105	6.5	0
+106	6.5	0
+107	6.5	0
+108	6.5	0
+109	6.5	0
+110	6.5	0
+111	6.5	0
+112	6.5	0
+113	6.5	0
+114	6.5	0
+115	6.5	0
+116	6.5	0
+117	6.5	0
+118	6.5	0
+119	6.5	0
+120	6.5	0
+121	6.5	0
+122	6.5	0
+123	6.5	0
+124	6.5	0
+125	6.5	0
+126	6.5	0
+127	6.5	0
+128	6.5	0
+129	6.5	0
+130	6.5	0
+131	6.5	0
+132	6.5	0
+133	6.5	0
+134	6.5	0
+135	6.5	0
+136	6.5	0
+137	6.5	0
+138	6.5	0
+139	6.5	0
+140	6.5	0
+141	6.5	0
+142	6.5	0
+143	6.5	0
+144	6.5	0
+145	6.5	0
+146	6.5	0
+147	6.5	0
+148	6.5	0
+149	6.5	0
+150	6.5	0
+151	6.5	0
+152	6.5	0
+153	6.5	0
+154	6.5	0
+155	6.5	0
+156	6.5	0
+157	6.5	0
+158	6.5	0
+159	6.5	0
+160	6.5	0
+161	6.5	0
+162	6.5	0
+163	6.5	0
+164	6.5	0
+165	6.5	0
+166	6.5	0
+167	6.5	0
+168	6.5	0
+169	6.5	0
+170	6.5	0
+171	6.5	0
+172	6.5	0
+173	6.5	0
+174	6.5	0
+175	6.5	0
+176	6.5	0
+177	6.5	0
+178	6.5	0
+179	6.5	0
+180	6.5	0
+181	6.5	0
+182	6.5	0
+183	6.5	0
+184	6.5	0
+185	6.5	0
+186	6.5	0
+187	6.5	0
+188	6.5	0
+189	6.5	0
+190	6.5	0
+191	6.5	0
+192	6.5	0
+193	6.5	0
+194	6.5	0
+195	6.5	0
+196	6.5	0
+197	6.5	0
+198	6.5	0
+199	6.5	0
+200	6.5	0
+201	6.5	0
+202	6.5	0
+203	6.5	0
+204	6.5	0
+205	6.5	0
+206	6.5	0
+207	6.5	0
+208	6.5	0
+209	6.5	0
+210	6.5	0
+211	6.5	0
+212	6.5	0
+213	6.5	0
+214	6.5	0
+215	6.5	0
+216	6.5	0
+217	6.5	0
+218	6.5	0
+219	6.5	0
+220	6.5	0
+221	6.5	0
+222	6.5	0
+223	6.5	0
+224	6.5	0
+225	6.5	0
+226	6.5	0
+227	6.5	0
+228	6.5	0
+229	6.5	0
+230	6.5	0
+231	6.5	0
+232	6.5	0
+233	6.5	0
+234	6.5	0
+235	6.5	0
+236	6.5	0
+237	6.5	0
+238	6.5	0
+239	6.5	0
+240	6.5	0
+241	6.5	0
+242	6.5	0
+243	6.5	0
+244	6.5	0
+245	6.5	0
+246	6.5	0
+247	6.5	0
+248	6.5	0
+249	6.5	0
+250	6.5	0
+251	6.5	0
+252	6.5	0
+253	6.5	0
+254	6.5	0
+255	6.5	0
+256	6.5	0
+257	6.5	0
+258	6.5	0
+259	6.5	0
+260	6.5	0
+261	6.5	0
+262	6.5	0
+263	6.5	0
+264	6.5	0
+265	6.5	0
+266	6.5	0
+267	6.5	0
+268	6.5	0
+269	6.5	0
+270	6.5	0
+271	6.5	0
+272	6.5	0
+273	6.5	0
+274	6.5	0
+275	6.5	0
+276	6.5	0
+277	6.5	0
+278	6.5	0
+279	6.5	0
+280	6.5	0
+281	6.5	0
+282	6.5	0
+283	6.5	0
+284	6.5	0
+285	6.5	0
+286	6.5	0
+287	6.5	0
+288	6.5	0
+289	6.5	0
+290	6.5	0
+291	6.5	0
+292	6.5	0
+293	6.5	0
+294	6.5	0
+295	6.5	0
+296	6.5	0
+297	6.5	0
+298	6.5	0
+299	6.5	0
+300	6.5	0
+301	6.5	0
+302	6.5	0
+303	6.5	0
+304	6.5	0
+305	6.5	0
+306	6.5	0
+307	6.5	0
+308	6.5	0
+309	6.5	0
+310	6.5	0
+311	6.5	0
+312	6.5	0
+313	6.5	0
+314	6.5	0
+315	6.5	0
+316	6.5	0
+317	6.5	0
+318	6.5	0
+319	6.5	0
+320	6.5	0
+321	6.5	0
+322	6.5	0
+323	6.5	0
+324	6.5	0
+325	6.5	0
+326	6.5	0
+327	6.5	0
+328	6.5	0
+329	6.5	0
+330	6.5	0
+331	6.5	0
+332	6.5	0
+333	6.5	0
+334	6.5	0
+335	6.5	0
+336	6.5	0
+337	6.5	0
+338	6.5	0
+339	6.5	0
+340	6.5	0
+341	6.5	0
+342	6.5	0
+343	6.5	0
+344	6.5	0
+345	6.5	0
+346	6.5	0
+347	6.5	0
+348	6.5	0
+349	6.5	0
+350	6.5	0
+351	6.5	0
+352	6.5	0
+353	6.5	0
+354	6.5	0
+355	6.5	0
+356	6.5	0
+357	6.5	0
+358	6.5	0
+359	6.5	0
+360	6.5	0
+0	7	0
+1	7	0
+2	7	0
+3	7	0
+4	7	0
+5	7	0
+6	7	0
+7	7	0
+8	7	0
+9	7	0
+10	7	0
+11	7	0
+12	7	0
+13	7	0
+14	7	0
+15	7	0
+16	7	0
+17	7	0
+18	7	0
+19	7	0
+20	7	0
+21	7	0
+22	7	0
+23	7	0
+24	7	0
+25	7	0
+26	7	0
+27	7	0
+28	7	0
+29	7	0
+30	7	0
+31	7	0
+32	7	0
+33	7	0
+34	7	0
+35	7	0
+36	7	0
+37	7	0
+38	7	0
+39	7	0
+40	7	0
+41	7	0
+42	7	0
+43	7	0
+44	7	0
+45	7	0
+46	7	0
+47	7	0
+48	7	0
+49	7	0
+50	7	0
+51	7	0
+52	7	0
+53	7	0
+54	7	0
+55	7	0
+56	7	0
+57	7	0
+58	7	0
+59	7	0
+60	7	0
+61	7	0
+62	7	0
+63	7	0
+64	7	0
+65	7	0
+66	7	0
+67	7	0
+68	7	0
+69	7	0
+70	7	0
+71	7	0
+72	7	0
+73	7	0
+74	7	0
+75	7	0
+76	7	0
+77	7	0
+78	7	0
+79	7	0
+80	7	0
+81	7	0
+82	7	0
+83	7	0
+84	7	0
+85	7	0
+86	7	0
+87	7	0
+88	7	0
+89	7	0
+90	7	0
+91	7	0
+92	7	0
+93	7	0
+94	7	0
+95	7	0
+96	7	0
+97	7	0
+98	7	0
+99	7	0
+100	7	0
+101	7	0
+102	7	0
+103	7	0
+104	7	0
+105	7	0
+106	7	0
+107	7	0
+108	7	0
+109	7	0
+110	7	0
+111	7	0
+112	7	0
+113	7	0
+114	7	0
+115	7	0
+116	7	0
+117	7	0
+118	7	0
+119	7	0
+120	7	0
+121	7	0
+122	7	0
+123	7	0
+124	7	0
+125	7	0
+126	7	0
+127	7	0
+128	7	0
+129	7	0
+130	7	0
+131	7	0
+132	7	0
+133	7	0
+134	7	0
+135	7	0
+136	7	0
+137	7	0
+138	7	0
+139	7	0
+140	7	0
+141	7	0
+142	7	0
+143	7	0
+144	7	0
+145	7	0
+146	7	0
+147	7	0
+148	7	0
+149	7	0
+150	7	0
+151	7	0
+152	7	0
+153	7	0
+154	7	0
+155	7	0
+156	7	0
+157	7	0
+158	7	0
+159	7	0
+160	7	0
+161	7	0
+162	7	0
+163	7	0
+164	7	0
+165	7	0
+166	7	0
+167	7	0
+168	7	0
+169	7	0
+170	7	0
+171	7	0
+172	7	0
+173	7	0
+174	7	0
+175	7	0
+176	7	0
+177	7	0
+178	7	0
+179	7	0
+180	7	0
+181	7	0
+182	7	0
+183	7	0
+184	7	0
+185	7	0
+186	7	0
+187	7	0
+188	7	0
+189	7	0
+190	7	0
+191	7	0
+192	7	0
+193	7	0
+194	7	0
+195	7	0
+196	7	0
+197	7	0
+198	7	0
+199	7	0
+200	7	0
+201	7	0
+202	7	0
+203	7	0
+204	7	0
+205	7	0
+206	7	0
+207	7	0
+208	7	0
+209	7	0
+210	7	0
+211	7	0
+212	7	0
+213	7	0
+214	7	0
+215	7	0
+216	7	0
+217	7	0
+218	7	0
+219	7	0
+220	7	0
+221	7	0
+222	7	0
+223	7	0
+224	7	0
+225	7	0
+226	7	0
+227	7	0
+228	7	0
+229	7	0
+230	7	0
+231	7	0
+232	7	0
+233	7	0
+234	7	0
+235	7	0
+236	7	0
+237	7	0
+238	7	0
+239	7	0
+240	7	0
+241	7	0
+242	7	0
+243	7	0
+244	7	0
+245	7	0
+246	7	0
+247	7	0
+248	7	0
+249	7	0
+250	7	0
+251	7	0
+252	7	0
+253	7	0
+254	7	0
+255	7	0
+256	7	0
+257	7	0
+258	7	0
+259	7	0
+260	7	0
+261	7	0
+262	7	0
+263	7	0
+264	7	0
+265	7	0
+266	7	0
+267	7	0
+268	7	0
+269	7	0
+270	7	0
+271	7	0
+272	7	0
+273	7	0
+274	7	0
+275	7	0
+276	7	0
+277	7	0
+278	7	0
+279	7	0
+280	7	0
+281	7	0
+282	7	0
+283	7	0
+284	7	0
+285	7	0
+286	7	0
+287	7	0
+288	7	0
+289	7	0
+290	7	0
+291	7	0
+292	7	0
+293	7	0
+294	7	0
+295	7	0
+296	7	0
+297	7	0
+298	7	0
+299	7	0
+300	7	0
+301	7	0
+302	7	0
+303	7	0
+304	7	0
+305	7	0
+306	7	0
+307	7	0
+308	7	0
+309	7	0
+310	7	0
+311	7	0
+312	7	0
+313	7	0
+314	7	0
+315	7	0
+316	7	0
+317	7	0
+318	7	0
+319	7	0
+320	7	0
+321	7	0
+322	7	0
+323	7	0
+324	7	0
+325	7	0
+326	7	0
+327	7	0
+328	7	0
+329	7	0
+330	7	0
+331	7	0
+332	7	0
+333	7	0
+334	7	0
+335	7	0
+336	7	0
+337	7	0
+338	7	0
+339	7	0
+340	7	0
+341	7	0
+342	7	0
+343	7	0
+344	7	0
+345	7	0
+346	7	0
+347	7	0
+348	7	0
+349	7	0
+350	7	0
+351	7	0
+352	7	0
+353	7	0
+354	7	0
+355	7	0
+356	7	0
+357	7	0
+358	7	0
+359	7	0
+360	7	0
+0	7.5	0
+1	7.5	0
+2	7.5	0
+3	7.5	0
+4	7.5	0
+5	7.5	0
+6	7.5	0
+7	7.5	0
+8	7.5	0
+9	7.5	0
+10	7.5	0
+11	7.5	0
+12	7.5	0
+13	7.5	0
+14	7.5	0
+15	7.5	0
+16	7.5	0
+17	7.5	0
+18	7.5	0
+19	7.5	0
+20	7.5	0
+21	7.5	0
+22	7.5	0
+23	7.5	0
+24	7.5	0
+25	7.5	0
+26	7.5	0
+27	7.5	0
+28	7.5	0
+29	7.5	0
+30	7.5	0
+31	7.5	0
+32	7.5	0
+33	7.5	0
+34	7.5	0
+35	7.5	0
+36	7.5	0
+37	7.5	0
+38	7.5	0
+39	7.5	0
+40	7.5	0
+41	7.5	0
+42	7.5	0
+43	7.5	0
+44	7.5	0
+45	7.5	0
+46	7.5	0
+47	7.5	0
+48	7.5	0
+49	7.5	0
+50	7.5	0
+51	7.5	0
+52	7.5	0
+53	7.5	0
+54	7.5	0
+55	7.5	0
+56	7.5	0
+57	7.5	0
+58	7.5	0
+59	7.5	0
+60	7.5	0
+61	7.5	0
+62	7.5	0
+63	7.5	0
+64	7.5	0
+65	7.5	0
+66	7.5	0
+67	7.5	0
+68	7.5	0
+69	7.5	0
+70	7.5	0
+71	7.5	0
+72	7.5	0
+73	7.5	0
+74	7.5	0
+75	7.5	0
+76	7.5	0
+77	7.5	0
+78	7.5	0
+79	7.5	0
+80	7.5	0
+81	7.5	0
+82	7.5	0
+83	7.5	0
+84	7.5	0
+85	7.5	0
+86	7.5	0
+87	7.5	0
+88	7.5	0
+89	7.5	0
+90	7.5	0
+91	7.5	0
+92	7.5	0
+93	7.5	0
+94	7.5	0
+95	7.5	0
+96	7.5	0
+97	7.5	0
+98	7.5	0
+99	7.5	0
+100	7.5	0
+101	7.5	0
+102	7.5	0
+103	7.5	0
+104	7.5	0
+105	7.5	0
+106	7.5	0
+107	7.5	0
+108	7.5	0
+109	7.5	0
+110	7.5	0
+111	7.5	0
+112	7.5	0
+113	7.5	0
+114	7.5	0
+115	7.5	0
+116	7.5	0
+117	7.5	0
+118	7.5	0
+119	7.5	0
+120	7.5	0
+121	7.5	0
+122	7.5	0
+123	7.5	0
+124	7.5	0
+125	7.5	0
+126	7.5	0
+127	7.5	0
+128	7.5	0
+129	7.5	0
+130	7.5	0
+131	7.5	0
+132	7.5	0
+133	7.5	0
+134	7.5	0
+135	7.5	0
+136	7.5	0
+137	7.5	0
+138	7.5	0
+139	7.5	0
+140	7.5	0
+141	7.5	0
+142	7.5	0
+143	7.5	0
+144	7.5	0
+145	7.5	0
+146	7.5	0
+147	7.5	0
+148	7.5	0
+149	7.5	0
+150	7.5	0
+151	7.5	0
+152	7.5	0
+153	7.5	0
+154	7.5	0
+155	7.5	0
+156	7.5	0
+157	7.5	0
+158	7.5	0
+159	7.5	0
+160	7.5	0
+161	7.5	0
+162	7.5	0
+163	7.5	0
+164	7.5	0
+165	7.5	0
+166	7.5	0
+167	7.5	0
+168	7.5	0
+169	7.5	0
+170	7.5	0
+171	7.5	0
+172	7.5	0
+173	7.5	0
+174	7.5	0
+175	7.5	0
+176	7.5	0
+177	7.5	0
+178	7.5	0
+179	7.5	0
+180	7.5	0
+181	7.5	0
+182	7.5	0
+183	7.5	0
+184	7.5	0
+185	7.5	0
+186	7.5	0
+187	7.5	0
+188	7.5	0
+189	7.5	0
+190	7.5	0
+191	7.5	0
+192	7.5	0
+193	7.5	0
+194	7.5	0
+195	7.5	0
+196	7.5	0
+197	7.5	0
+198	7.5	0
+199	7.5	0
+200	7.5	0
+201	7.5	0
+202	7.5	0
+203	7.5	0
+204	7.5	0
+205	7.5	0
+206	7.5	0
+207	7.5	0
+208	7.5	0
+209	7.5	0
+210	7.5	0
+211	7.5	0
+212	7.5	0
+213	7.5	0
+214	7.5	0
+215	7.5	0
+216	7.5	0
+217	7.5	0
+218	7.5	0
+219	7.5	0
+220	7.5	0
+221	7.5	0
+222	7.5	0
+223	7.5	0
+224	7.5	0
+225	7.5	0
+226	7.5	0
+227	7.5	0
+228	7.5	0
+229	7.5	0
+230	7.5	0
+231	7.5	0
+232	7.5	0
+233	7.5	0
+234	7.5	0
+235	7.5	0
+236	7.5	0
+237	7.5	0
+238	7.5	0
+239	7.5	0
+240	7.5	0
+241	7.5	0
+242	7.5	0
+243	7.5	0
+244	7.5	0
+245	7.5	0
+246	7.5	0
+247	7.5	0
+248	7.5	0
+249	7.5	0
+250	7.5	0
+251	7.5	0
+252	7.5	0
+253	7.5	0
+254	7.5	0
+255	7.5	0
+256	7.5	0
+257	7.5	0
+258	7.5	0
+259	7.5	0
+260	7.5	0
+261	7.5	0
+262	7.5	0
+263	7.5	0
+264	7.5	0
+265	7.5	0
+266	7.5	0
+267	7.5	0
+268	7.5	0
+269	7.5	0
+270	7.5	0
+271	7.5	0
+272	7.5	0
+273	7.5	0
+274	7.5	0
+275	7.5	0
+276	7.5	0
+277	7.5	0
+278	7.5	0
+279	7.5	0
+280	7.5	0
+281	7.5	0
+282	7.5	0
+283	7.5	0
+284	7.5	0
+285	7.5	0
+286	7.5	0
+287	7.5	0
+288	7.5	0
+289	7.5	0
+290	7.5	0
+291	7.5	0
+292	7.5	0
+293	7.5	0
+294	7.5	0
+295	7.5	0
+296	7.5	0
+297	7.5	0
+298	7.5	0
+299	7.5	0
+300	7.5	0
+301	7.5	0
+302	7.5	0
+303	7.5	0
+304	7.5	0
+305	7.5	0
+306	7.5	0
+307	7.5	0
+308	7.5	0
+309	7.5	0
+310	7.5	0
+311	7.5	0
+312	7.5	0
+313	7.5	0
+314	7.5	0
+315	7.5	0
+316	7.5	0
+317	7.5	0
+318	7.5	0
+319	7.5	0
+320	7.5	0
+321	7.5	0
+322	7.5	0
+323	7.5	0
+324	7.5	0
+325	7.5	0
+326	7.5	0
+327	7.5	0
+328	7.5	0
+329	7.5	0
+330	7.5	0
+331	7.5	0
+332	7.5	0
+333	7.5	0
+334	7.5	0
+335	7.5	0
+336	7.5	0
+337	7.5	0
+338	7.5	0
+339	7.5	0
+340	7.5	0
+341	7.5	0
+342	7.5	0
+343	7.5	0
+344	7.5	0
+345	7.5	0
+346	7.5	0
+347	7.5	0
+348	7.5	0
+349	7.5	0
+350	7.5	0
+351	7.5	0
+352	7.5	0
+353	7.5	0
+354	7.5	0
+355	7.5	0
+356	7.5	0
+357	7.5	0
+358	7.5	0
+359	7.5	0
+360	7.5	0
+0	8	0
+1	8	0
+2	8	0
+3	8	0
+4	8	0
+5	8	0
+6	8	0
+7	8	0
+8	8	0
+9	8	0
+10	8	0
+11	8	0
+12	8	0
+13	8	0
+14	8	0
+15	8	0
+16	8	0
+17	8	0
+18	8	0
+19	8	0
+20	8	0
+21	8	0
+22	8	0
+23	8	0
+24	8	0
+25	8	0
+26	8	0
+27	8	0
+28	8	0
+29	8	0
+30	8	0
+31	8	0
+32	8	0
+33	8	0
+34	8	0
+35	8	0
+36	8	0
+37	8	0
+38	8	0
+39	8	0
+40	8	0
+41	8	0
+42	8	0
+43	8	0
+44	8	0
+45	8	0
+46	8	0
+47	8	0
+48	8	0
+49	8	0
+50	8	0
+51	8	0
+52	8	0
+53	8	0
+54	8	0
+55	8	0
+56	8	0
+57	8	0
+58	8	0
+59	8	0
+60	8	0
+61	8	0
+62	8	0
+63	8	0
+64	8	0
+65	8	0
+66	8	0
+67	8	0
+68	8	0
+69	8	0
+70	8	0
+71	8	0
+72	8	0
+73	8	0
+74	8	0
+75	8	0
+76	8	0
+77	8	0
+78	8	0
+79	8	0
+80	8	0
+81	8	0
+82	8	0
+83	8	0
+84	8	0
+85	8	0
+86	8	0
+87	8	0
+88	8	0
+89	8	0
+90	8	0
+91	8	0
+92	8	0
+93	8	0
+94	8	0
+95	8	0
+96	8	0
+97	8	0
+98	8	0
+99	8	0
+100	8	0
+101	8	0
+102	8	0
+103	8	0
+104	8	0
+105	8	0
+106	8	0
+107	8	0
+108	8	0
+109	8	0
+110	8	0
+111	8	0
+112	8	0
+113	8	0
+114	8	0
+115	8	0
+116	8	0
+117	8	0
+118	8	0
+119	8	0
+120	8	0
+121	8	0
+122	8	0
+123	8	0
+124	8	0
+125	8	0
+126	8	0
+127	8	0
+128	8	0
+129	8	0
+130	8	0
+131	8	0
+132	8	0
+133	8	0
+134	8	0
+135	8	0
+136	8	0
+137	8	0
+138	8	0
+139	8	0
+140	8	0
+141	8	0
+142	8	0
+143	8	0
+144	8	0
+145	8	0
+146	8	0
+147	8	0
+148	8	0
+149	8	0
+150	8	0
+151	8	0
+152	8	0
+153	8	0
+154	8	0
+155	8	0
+156	8	0
+157	8	0
+158	8	0
+159	8	0
+160	8	0
+161	8	0
+162	8	0
+163	8	0
+164	8	0
+165	8	0
+166	8	0
+167	8	0
+168	8	0
+169	8	0
+170	8	0
+171	8	0
+172	8	0
+173	8	0
+174	8	0
+175	8	0
+176	8	0
+177	8	0
+178	8	0
+179	8	0
+180	8	0
+181	8	0
+182	8	0
+183	8	0
+184	8	0
+185	8	0
+186	8	0
+187	8	0
+188	8	0
+189	8	0
+190	8	0
+191	8	0
+192	8	0
+193	8	0
+194	8	0
+195	8	0
+196	8	0
+197	8	0
+198	8	0
+199	8	0
+200	8	0
+201	8	0
+202	8	0
+203	8	0
+204	8	0
+205	8	0
+206	8	0
+207	8	0
+208	8	0
+209	8	0
+210	8	0
+211	8	0
+212	8	0
+213	8	0
+214	8	0
+215	8	0
+216	8	0
+217	8	0
+218	8	0
+219	8	0
+220	8	0
+221	8	0
+222	8	0
+223	8	0
+224	8	0
+225	8	0
+226	8	0
+227	8	0
+228	8	0
+229	8	0
+230	8	0
+231	8	0
+232	8	0
+233	8	0
+234	8	0
+235	8	0
+236	8	0
+237	8	0
+238	8	0
+239	8	0
+240	8	0
+241	8	0
+242	8	0
+243	8	0
+244	8	0
+245	8	0
+246	8	0
+247	8	0
+248	8	0
+249	8	0
+250	8	0
+251	8	0
+252	8	0
+253	8	0
+254	8	0
+255	8	0
+256	8	0
+257	8	0
+258	8	0
+259	8	0
+260	8	0
+261	8	0
+262	8	0
+263	8	0
+264	8	0
+265	8	0
+266	8	0
+267	8	0
+268	8	0
+269	8	0
+270	8	0
+271	8	0
+272	8	0
+273	8	0
+274	8	0
+275	8	0
+276	8	0
+277	8	0
+278	8	0
+279	8	0
+280	8	0
+281	8	0
+282	8	0
+283	8	0
+284	8	0
+285	8	0
+286	8	0
+287	8	0
+288	8	0
+289	8	0
+290	8	0
+291	8	0
+292	8	0
+293	8	0
+294	8	0
+295	8	0
+296	8	0
+297	8	0
+298	8	0
+299	8	0
+300	8	0
+301	8	0
+302	8	0
+303	8	0
+304	8	0
+305	8	0
+306	8	0
+307	8	0
+308	8	0
+309	8	0
+310	8	0
+311	8	0
+312	8	0
+313	8	0
+314	8	0
+315	8	0
+316	8	0
+317	8	0
+318	8	0
+319	8	0
+320	8	0
+321	8	0
+322	8	0
+323	8	0
+324	8	0
+325	8	0
+326	8	0
+327	8	0
+328	8	0
+329	8	0
+330	8	0
+331	8	0
+332	8	0
+333	8	0
+334	8	0
+335	8	0
+336	8	0
+337	8	0
+338	8	0
+339	8	0
+340	8	0
+341	8	0
+342	8	0
+343	8	0
+344	8	0
+345	8	0
+346	8	0
+347	8	0
+348	8	0
+349	8	0
+350	8	0
+351	8	0
+352	8	0
+353	8	0
+354	8	0
+355	8	0
+356	8	0
+357	8	0
+358	8	0
+359	8	0
+360	8	0
+0	8.5	0
+1	8.5	0
+2	8.5	0
+3	8.5	0
+4	8.5	0
+5	8.5	0
+6	8.5	0
+7	8.5	0
+8	8.5	0
+9	8.5	0
+10	8.5	0
+11	8.5	0
+12	8.5	0
+13	8.5	0
+14	8.5	0
+15	8.5	0
+16	8.5	0
+17	8.5	0
+18	8.5	0
+19	8.5	0
+20	8.5	0
+21	8.5	0
+22	8.5	0
+23	8.5	0
+24	8.5	0
+25	8.5	0
+26	8.5	0
+27	8.5	0
+28	8.5	0
+29	8.5	0
+30	8.5	0
+31	8.5	0
+32	8.5	0
+33	8.5	0
+34	8.5	0
+35	8.5	0
+36	8.5	0
+37	8.5	0
+38	8.5	0
+39	8.5	0
+40	8.5	0
+41	8.5	0
+42	8.5	0
+43	8.5	0
+44	8.5	0
+45	8.5	0
+46	8.5	0
+47	8.5	0
+48	8.5	0
+49	8.5	0
+50	8.5	0
+51	8.5	0
+52	8.5	0
+53	8.5	0
+54	8.5	0
+55	8.5	0
+56	8.5	0
+57	8.5	0
+58	8.5	0
+59	8.5	0
+60	8.5	0
+61	8.5	0
+62	8.5	0
+63	8.5	0
+64	8.5	0
+65	8.5	0
+66	8.5	0
+67	8.5	0
+68	8.5	0
+69	8.5	0
+70	8.5	0
+71	8.5	0
+72	8.5	0
+73	8.5	0
+74	8.5	0
+75	8.5	0
+76	8.5	0
+77	8.5	0
+78	8.5	0
+79	8.5	0
+80	8.5	0
+81	8.5	0
+82	8.5	0
+83	8.5	0
+84	8.5	0
+85	8.5	0
+86	8.5	0
+87	8.5	0
+88	8.5	0
+89	8.5	0
+90	8.5	0
+91	8.5	0
+92	8.5	0
+93	8.5	0
+94	8.5	0
+95	8.5	0
+96	8.5	0
+97	8.5	0
+98	8.5	0
+99	8.5	0
+100	8.5	0
+101	8.5	0
+102	8.5	0
+103	8.5	0
+104	8.5	0
+105	8.5	0
+106	8.5	0
+107	8.5	0
+108	8.5	0
+109	8.5	0
+110	8.5	0
+111	8.5	0
+112	8.5	0
+113	8.5	0
+114	8.5	0
+115	8.5	0
+116	8.5	0
+117	8.5	0
+118	8.5	0
+119	8.5	0
+120	8.5	0
+121	8.5	0
+122	8.5	0
+123	8.5	0
+124	8.5	0
+125	8.5	0
+126	8.5	0
+127	8.5	0
+128	8.5	0
+129	8.5	0
+130	8.5	0
+131	8.5	0
+132	8.5	0
+133	8.5	0
+134	8.5	0
+135	8.5	0
+136	8.5	0
+137	8.5	0
+138	8.5	0
+139	8.5	0
+140	8.5	0
+141	8.5	0
+142	8.5	0
+143	8.5	0
+144	8.5	0
+145	8.5	0
+146	8.5	0
+147	8.5	0
+148	8.5	0
+149	8.5	0
+150	8.5	0
+151	8.5	0
+152	8.5	0
+153	8.5	0
+154	8.5	0
+155	8.5	0
+156	8.5	0
+157	8.5	0
+158	8.5	0
+159	8.5	0
+160	8.5	0
+161	8.5	0
+162	8.5	0
+163	8.5	0
+164	8.5	0
+165	8.5	0
+166	8.5	0
+167	8.5	0
+168	8.5	0
+169	8.5	0
+170	8.5	0
+171	8.5	0
+172	8.5	0
+173	8.5	0
+174	8.5	0
+175	8.5	0
+176	8.5	0
+177	8.5	0
+178	8.5	0
+179	8.5	0
+180	8.5	0
+181	8.5	0
+182	8.5	0
+183	8.5	0
+184	8.5	0
+185	8.5	0
+186	8.5	0
+187	8.5	0
+188	8.5	0
+189	8.5	0
+190	8.5	0
+191	8.5	0
+192	8.5	0
+193	8.5	0
+194	8.5	0
+195	8.5	0
+196	8.5	0
+197	8.5	0
+198	8.5	0
+199	8.5	0
+200	8.5	0
+201	8.5	0
+202	8.5	0
+203	8.5	0
+204	8.5	0
+205	8.5	0
+206	8.5	0
+207	8.5	0
+208	8.5	0
+209	8.5	0
+210	8.5	0
+211	8.5	0
+212	8.5	0
+213	8.5	0
+214	8.5	0
+215	8.5	0
+216	8.5	0
+217	8.5	0
+218	8.5	0
+219	8.5	0
+220	8.5	0
+221	8.5	0
+222	8.5	0
+223	8.5	0
+224	8.5	0
+225	8.5	0
+226	8.5	0
+227	8.5	0
+228	8.5	0
+229	8.5	0
+230	8.5	0
+231	8.5	0
+232	8.5	0
+233	8.5	0
+234	8.5	0
+235	8.5	0
+236	8.5	0
+237	8.5	0
+238	8.5	0
+239	8.5	0
+240	8.5	0
+241	8.5	0
+242	8.5	0
+243	8.5	0
+244	8.5	0
+245	8.5	0
+246	8.5	0
+247	8.5	0
+248	8.5	0
+249	8.5	0
+250	8.5	0
+251	8.5	0
+252	8.5	0
+253	8.5	0
+254	8.5	0
+255	8.5	0
+256	8.5	0
+257	8.5	0
+258	8.5	0
+259	8.5	0
+260	8.5	0
+261	8.5	0
+262	8.5	0
+263	8.5	0
+264	8.5	0
+265	8.5	0
+266	8.5	0
+267	8.5	0
+268	8.5	0
+269	8.5	0
+270	8.5	0
+271	8.5	0
+272	8.5	0
+273	8.5	0
+274	8.5	0
+275	8.5	0
+276	8.5	0
+277	8.5	0
+278	8.5	0
+279	8.5	0
+280	8.5	0
+281	8.5	0
+282	8.5	0
+283	8.5	0
+284	8.5	0
+285	8.5	0
+286	8.5	0
+287	8.5	0
+288	8.5	0
+289	8.5	0
+290	8.5	0
+291	8.5	0
+292	8.5	0
+293	8.5	0
+294	8.5	0
+295	8.5	0
+296	8.5	0
+297	8.5	0
+298	8.5	0
+299	8.5	0
+300	8.5	0
+301	8.5	0
+302	8.5	0
+303	8.5	0
+304	8.5	0
+305	8.5	0
+306	8.5	0
+307	8.5	0
+308	8.5	0
+309	8.5	0
+310	8.5	0
+311	8.5	0
+312	8.5	0
+313	8.5	0
+314	8.5	0
+315	8.5	0
+316	8.5	0
+317	8.5	0
+318	8.5	0
+319	8.5	0
+320	8.5	0
+321	8.5	0
+322	8.5	0
+323	8.5	0
+324	8.5	0
+325	8.5	0
+326	8.5	0
+327	8.5	0
+328	8.5	0
+329	8.5	0
+330	8.5	0
+331	8.5	0
+332	8.5	0
+333	8.5	0
+334	8.5	0
+335	8.5	0
+336	8.5	0
+337	8.5	0
+338	8.5	0
+339	8.5	0
+340	8.5	0
+341	8.5	0
+342	8.5	0
+343	8.5	0
+344	8.5	0
+345	8.5	0
+346	8.5	0
+347	8.5	0
+348	8.5	0
+349	8.5	0
+350	8.5	0
+351	8.5	0
+352	8.5	0
+353	8.5	0
+354	8.5	0
+355	8.5	0
+356	8.5	0
+357	8.5	0
+358	8.5	0
+359	8.5	0
+360	8.5	0
+0	9	0
+1	9	0
+2	9	0
+3	9	0
+4	9	0
+5	9	0
+6	9	0
+7	9	0
+8	9	0
+9	9	0
+10	9	0
+11	9	0
+12	9	0
+13	9	0
+14	9	0
+15	9	0
+16	9	0
+17	9	0
+18	9	0
+19	9	0
+20	9	0
+21	9	0
+22	9	0
+23	9	0
+24	9	0
+25	9	0
+26	9	0
+27	9	0
+28	9	0
+29	9	0
+30	9	0
+31	9	0
+32	9	0
+33	9	0
+34	9	0
+35	9	0
+36	9	0
+37	9	0
+38	9	0
+39	9	0
+40	9	0
+41	9	0
+42	9	0
+43	9	0
+44	9	0
+45	9	0
+46	9	0
+47	9	0
+48	9	0
+49	9	0
+50	9	0
+51	9	0
+52	9	0
+53	9	0
+54	9	0
+55	9	0
+56	9	0
+57	9	0
+58	9	0
+59	9	0
+60	9	0
+61	9	0
+62	9	0
+63	9	0
+64	9	0
+65	9	0
+66	9	0
+67	9	0
+68	9	0
+69	9	0
+70	9	0
+71	9	0
+72	9	0
+73	9	0
+74	9	0
+75	9	0
+76	9	0
+77	9	0
+78	9	0
+79	9	0
+80	9	0
+81	9	0
+82	9	0
+83	9	0
+84	9	0
+85	9	0
+86	9	0
+87	9	0
+88	9	0
+89	9	0
+90	9	0
+91	9	0
+92	9	0
+93	9	0
+94	9	0
+95	9	0
+96	9	0
+97	9	0
+98	9	0
+99	9	0
+100	9	0
+101	9	0
+102	9	0
+103	9	0
+104	9	0
+105	9	0
+106	9	0
+107	9	0
+108	9	0
+109	9	0
+110	9	0
+111	9	0
+112	9	0
+113	9	0
+114	9	0
+115	9	0
+116	9	0
+117	9	0
+118	9	0
+119	9	0
+120	9	0
+121	9	0
+122	9	0
+123	9	0
+124	9	0
+125	9	0
+126	9	0
+127	9	0
+128	9	0
+129	9	0
+130	9	0
+131	9	0
+132	9	0
+133	9	0
+134	9	0
+135	9	0
+136	9	0
+137	9	0
+138	9	0
+139	9	0
+140	9	0
+141	9	0
+142	9	0
+143	9	0
+144	9	0
+145	9	0
+146	9	0
+147	9	0
+148	9	0
+149	9	0
+150	9	0
+151	9	0
+152	9	0
+153	9	0
+154	9	0
+155	9	0
+156	9	0
+157	9	0
+158	9	0
+159	9	0
+160	9	0
+161	9	0
+162	9	0
+163	9	0
+164	9	0
+165	9	0
+166	9	0
+167	9	0
+168	9	0
+169	9	0
+170	9	0
+171	9	0
+172	9	0
+173	9	0
+174	9	0
+175	9	0
+176	9	0
+177	9	0
+178	9	0
+179	9	0
+180	9	0
+181	9	0
+182	9	0
+183	9	0
+184	9	0
+185	9	0
+186	9	0
+187	9	0
+188	9	0
+189	9	0
+190	9	0
+191	9	0
+192	9	0
+193	9	0
+194	9	0
+195	9	0
+196	9	0
+197	9	0
+198	9	0
+199	9	0
+200	9	0
+201	9	0
+202	9	0
+203	9	0
+204	9	0
+205	9	0
+206	9	0
+207	9	0
+208	9	0
+209	9	0
+210	9	0
+211	9	0
+212	9	0
+213	9	0
+214	9	0
+215	9	0
+216	9	0
+217	9	0
+218	9	0
+219	9	0
+220	9	0
+221	9	0
+222	9	0
+223	9	0
+224	9	0
+225	9	0
+226	9	0
+227	9	0
+228	9	0
+229	9	0
+230	9	0
+231	9	0
+232	9	0
+233	9	0
+234	9	0
+235	9	0
+236	9	0
+237	9	0
+238	9	0
+239	9	0
+240	9	0
+241	9	0
+242	9	0
+243	9	0
+244	9	0
+245	9	0
+246	9	0
+247	9	0
+248	9	0
+249	9	0
+250	9	0
+251	9	0
+252	9	0
+253	9	0
+254	9	0
+255	9	0
+256	9	0
+257	9	0
+258	9	0
+259	9	0
+260	9	0
+261	9	0
+262	9	0
+263	9	0
+264	9	0
+265	9	0
+266	9	0
+267	9	0
+268	9	0
+269	9	0
+270	9	0
+271	9	0
+272	9	0
+273	9	0
+274	9	0
+275	9	0
+276	9	0
+277	9	0
+278	9	0
+279	9	0
+280	9	0
+281	9	0
+282	9	0
+283	9	0
+284	9	0
+285	9	0
+286	9	0
+287	9	0
+288	9	0
+289	9	0
+290	9	0
+291	9	0
+292	9	0
+293	9	0
+294	9	0
+295	9	0
+296	9	0
+297	9	0
+298	9	0
+299	9	0
+300	9	0
+301	9	0
+302	9	0
+303	9	0
+304	9	0
+305	9	0
+306	9	0
+307	9	0
+308	9	0
+309	9	0
+310	9	0
+311	9	0
+312	9	0
+313	9	0
+314	9	0
+315	9	0
+316	9	0
+317	9	0
+318	9	0
+319	9	0
+320	9	0
+321	9	0
+322	9	0
+323	9	0
+324	9	0
+325	9	0
+326	9	0
+327	9	0
+328	9	0
+329	9	0
+330	9	0
+331	9	0
+332	9	0
+333	9	0
+334	9	0
+335	9	0
+336	9	0
+337	9	0
+338	9	0
+339	9	0
+340	9	0
+341	9	0
+342	9	0
+343	9	0
+344	9	0
+345	9	0
+346	9	0
+347	9	0
+348	9	0
+349	9	0
+350	9	0
+351	9	0
+352	9	0
+353	9	0
+354	9	0
+355	9	0
+356	9	0
+357	9	0
+358	9	0
+359	9	0
+360	9	0
+0	9.5	0
+1	9.5	0
+2	9.5	0
+3	9.5	0
+4	9.5	0
+5	9.5	0
+6	9.5	0
+7	9.5	0
+8	9.5	0
+9	9.5	0
+10	9.5	0
+11	9.5	0
+12	9.5	0
+13	9.5	0
+14	9.5	0
+15	9.5	0
+16	9.5	0
+17	9.5	0
+18	9.5	0
+19	9.5	0
+20	9.5	0
+21	9.5	0
+22	9.5	0
+23	9.5	0
+24	9.5	0
+25	9.5	0
+26	9.5	0
+27	9.5	0
+28	9.5	0
+29	9.5	0
+30	9.5	0
+31	9.5	0
+32	9.5	0
+33	9.5	0
+34	9.5	0
+35	9.5	0
+36	9.5	0
+37	9.5	0
+38	9.5	0
+39	9.5	0
+40	9.5	0
+41	9.5	0
+42	9.5	0
+43	9.5	0
+44	9.5	0
+45	9.5	0
+46	9.5	0
+47	9.5	0
+48	9.5	0
+49	9.5	0
+50	9.5	0
+51	9.5	0
+52	9.5	0
+53	9.5	0
+54	9.5	0
+55	9.5	0
+56	9.5	0
+57	9.5	0
+58	9.5	0
+59	9.5	0
+60	9.5	0
+61	9.5	0
+62	9.5	0
+63	9.5	0
+64	9.5	0
+65	9.5	0
+66	9.5	0
+67	9.5	0
+68	9.5	0
+69	9.5	0
+70	9.5	0
+71	9.5	0
+72	9.5	0
+73	9.5	0
+74	9.5	0
+75	9.5	0
+76	9.5	0
+77	9.5	0
+78	9.5	0
+79	9.5	0
+80	9.5	0
+81	9.5	0
+82	9.5	0
+83	9.5	0
+84	9.5	0
+85	9.5	0
+86	9.5	0
+87	9.5	0
+88	9.5	0
+89	9.5	0
+90	9.5	0
+91	9.5	0
+92	9.5	0
+93	9.5	0
+94	9.5	0
+95	9.5	0
+96	9.5	0
+97	9.5	0
+98	9.5	0
+99	9.5	0
+100	9.5	0
+101	9.5	0
+102	9.5	0
+103	9.5	0
+104	9.5	0
+105	9.5	0
+106	9.5	0
+107	9.5	0
+108	9.5	0
+109	9.5	0
+110	9.5	0
+111	9.5	0
+112	9.5	0
+113	9.5	0
+114	9.5	0
+115	9.5	0
+116	9.5	0
+117	9.5	0
+118	9.5	0
+119	9.5	0
+120	9.5	0
+121	9.5	0
+122	9.5	0
+123	9.5	0
+124	9.5	0
+125	9.5	0
+126	9.5	0
+127	9.5	0
+128	9.5	0
+129	9.5	0
+130	9.5	0
+131	9.5	0
+132	9.5	0
+133	9.5	0
+134	9.5	0
+135	9.5	0
+136	9.5	0
+137	9.5	0
+138	9.5	0
+139	9.5	0
+140	9.5	0
+141	9.5	0
+142	9.5	0
+143	9.5	0
+144	9.5	0
+145	9.5	0
+146	9.5	0
+147	9.5	0
+148	9.5	0
+149	9.5	0
+150	9.5	0
+151	9.5	0
+152	9.5	0
+153	9.5	0
+154	9.5	0
+155	9.5	0
+156	9.5	0
+157	9.5	0
+158	9.5	0
+159	9.5	0
+160	9.5	0
+161	9.5	0
+162	9.5	0
+163	9.5	0
+164	9.5	0
+165	9.5	0
+166	9.5	0
+167	9.5	0
+168	9.5	0
+169	9.5	0
+170	9.5	0
+171	9.5	0
+172	9.5	0
+173	9.5	0
+174	9.5	0
+175	9.5	0
+176	9.5	0
+177	9.5	0
+178	9.5	0
+179	9.5	0
+180	9.5	0
+181	9.5	0
+182	9.5	0
+183	9.5	0
+184	9.5	0
+185	9.5	0
+186	9.5	0
+187	9.5	0
+188	9.5	0
+189	9.5	0
+190	9.5	0
+191	9.5	0
+192	9.5	0
+193	9.5	0
+194	9.5	0
+195	9.5	0
+196	9.5	0
+197	9.5	0
+198	9.5	0
+199	9.5	0
+200	9.5	0
+201	9.5	0
+202	9.5	0
+203	9.5	0
+204	9.5	0
+205	9.5	0
+206	9.5	0
+207	9.5	0
+208	9.5	0
+209	9.5	0
+210	9.5	0
+211	9.5	0
+212	9.5	0
+213	9.5	0
+214	9.5	0
+215	9.5	0
+216	9.5	0
+217	9.5	0
+218	9.5	0
+219	9.5	0
+220	9.5	0
+221	9.5	0
+222	9.5	0
+223	9.5	0
+224	9.5	0
+225	9.5	0
+226	9.5	0
+227	9.5	0
+228	9.5	0
+229	9.5	0
+230	9.5	0
+231	9.5	0
+232	9.5	0
+233	9.5	0
+234	9.5	0
+235	9.5	0
+236	9.5	0
+237	9.5	0
+238	9.5	0
+239	9.5	0
+240	9.5	0
+241	9.5	0
+242	9.5	0
+243	9.5	0
+244	9.5	0
+245	9.5	0
+246	9.5	0
+247	9.5	0
+248	9.5	0
+249	9.5	0
+250	9.5	0
+251	9.5	0
+252	9.5	0
+253	9.5	0
+254	9.5	0
+255	9.5	0
+256	9.5	0
+257	9.5	0
+258	9.5	0
+259	9.5	0
+260	9.5	0
+261	9.5	0
+262	9.5	0
+263	9.5	0
+264	9.5	0
+265	9.5	0
+266	9.5	0
+267	9.5	0
+268	9.5	0
+269	9.5	0
+270	9.5	0
+271	9.5	0
+272	9.5	0
+273	9.5	0
+274	9.5	0
+275	9.5	0
+276	9.5	0
+277	9.5	0
+278	9.5	0
+279	9.5	0
+280	9.5	0
+281	9.5	0
+282	9.5	0
+283	9.5	0
+284	9.5	0
+285	9.5	0
+286	9.5	0
+287	9.5	0
+288	9.5	0
+289	9.5	0
+290	9.5	0
+291	9.5	0
+292	9.5	0
+293	9.5	0
+294	9.5	0
+295	9.5	0
+296	9.5	0
+297	9.5	0
+298	9.5	0
+299	9.5	0
+300	9.5	0
+301	9.5	0
+302	9.5	0
+303	9.5	0
+304	9.5	0
+305	9.5	0
+306	9.5	0
+307	9.5	0
+308	9.5	0
+309	9.5	0
+310	9.5	0
+311	9.5	0
+312	9.5	0
+313	9.5	0
+314	9.5	0
+315	9.5	0
+316	9.5	0
+317	9.5	0
+318	9.5	0
+319	9.5	0
+320	9.5	0
+321	9.5	0
+322	9.5	0
+323	9.5	0
+324	9.5	0
+325	9.5	0
+326	9.5	0
+327	9.5	0
+328	9.5	0
+329	9.5	0
+330	9.5	0
+331	9.5	0
+332	9.5	0
+333	9.5	0
+334	9.5	0
+335	9.5	0
+336	9.5	0
+337	9.5	0
+338	9.5	0
+339	9.5	0
+340	9.5	0
+341	9.5	0
+342	9.5	0
+343	9.5	0
+344	9.5	0
+345	9.5	0
+346	9.5	0
+347	9.5	0
+348	9.5	0
+349	9.5	0
+350	9.5	0
+351	9.5	0
+352	9.5	0
+353	9.5	0
+354	9.5	0
+355	9.5	0
+356	9.5	0
+357	9.5	0
+358	9.5	0
+359	9.5	0
+360	9.5	0
+0	10	0
+1	10	0
+2	10	0
+3	10	0
+4	10	0
+5	10	0
+6	10	0
+7	10	0
+8	10	0
+9	10	0
+10	10	0
+11	10	0
+12	10	0
+13	10	0
+14	10	0
+15	10	0
+16	10	0
+17	10	0
+18	10	0
+19	10	0
+20	10	0
+21	10	0
+22	10	0
+23	10	0
+24	10	0
+25	10	0
+26	10	0
+27	10	0
+28	10	0
+29	10	0
+30	10	0
+31	10	0
+32	10	0
+33	10	0
+34	10	0
+35	10	0
+36	10	0
+37	10	0
+38	10	0
+39	10	0
+40	10	0
+41	10	0
+42	10	0
+43	10	0
+44	10	0
+45	10	0
+46	10	0
+47	10	0
+48	10	0
+49	10	0
+50	10	0
+51	10	0
+52	10	0
+53	10	0
+54	10	0
+55	10	0
+56	10	0
+57	10	0
+58	10	0
+59	10	0
+60	10	0
+61	10	0
+62	10	0
+63	10	0
+64	10	0
+65	10	0
+66	10	0
+67	10	0
+68	10	0
+69	10	0
+70	10	0
+71	10	0
+72	10	0
+73	10	0
+74	10	0
+75	10	0
+76	10	0
+77	10	0
+78	10	0
+79	10	0
+80	10	0
+81	10	0
+82	10	0
+83	10	0
+84	10	0
+85	10	0
+86	10	0
+87	10	0
+88	10	0
+89	10	0
+90	10	0
+91	10	0
+92	10	0
+93	10	0
+94	10	0
+95	10	0
+96	10	0
+97	10	0
+98	10	0
+99	10	0
+100	10	0
+101	10	0
+102	10	0
+103	10	0
+104	10	0
+105	10	0
+106	10	0
+107	10	0
+108	10	0
+109	10	0
+110	10	0
+111	10	0
+112	10	0
+113	10	0
+114	10	0
+115	10	0
+116	10	0
+117	10	0
+118	10	0
+119	10	0
+120	10	0
+121	10	0
+122	10	0
+123	10	0
+124	10	0
+125	10	0
+126	10	0
+127	10	0
+128	10	0
+129	10	0
+130	10	0
+131	10	0
+132	10	0
+133	10	0
+134	10	0
+135	10	0
+136	10	0
+137	10	0
+138	10	0
+139	10	0
+140	10	0
+141	10	0
+142	10	0
+143	10	0
+144	10	0
+145	10	0
+146	10	0
+147	10	0
+148	10	0
+149	10	0
+150	10	0
+151	10	0
+152	10	0
+153	10	0
+154	10	0
+155	10	0
+156	10	0
+157	10	0
+158	10	0
+159	10	0
+160	10	0
+161	10	0
+162	10	0
+163	10	0
+164	10	0
+165	10	0
+166	10	0
+167	10	0
+168	10	0
+169	10	0
+170	10	0
+171	10	0
+172	10	0
+173	10	0
+174	10	0
+175	10	0
+176	10	0
+177	10	0
+178	10	0
+179	10	0
+180	10	0
+181	10	0
+182	10	0
+183	10	0
+184	10	0
+185	10	0
+186	10	0
+187	10	0
+188	10	0
+189	10	0
+190	10	0
+191	10	0
+192	10	0
+193	10	0
+194	10	0
+195	10	0
+196	10	0
+197	10	0
+198	10	0
+199	10	0
+200	10	0
+201	10	0
+202	10	0
+203	10	0
+204	10	0
+205	10	0
+206	10	0
+207	10	0
+208	10	0
+209	10	0
+210	10	0
+211	10	0
+212	10	0
+213	10	0
+214	10	0
+215	10	0
+216	10	0
+217	10	0
+218	10	0
+219	10	0
+220	10	0
+221	10	0
+222	10	0
+223	10	0
+224	10	0
+225	10	0
+226	10	0
+227	10	0
+228	10	0
+229	10	0
+230	10	0
+231	10	0
+232	10	0
+233	10	0
+234	10	0
+235	10	0
+236	10	0
+237	10	0
+238	10	0
+239	10	0
+240	10	0
+241	10	0
+242	10	0
+243	10	0
+244	10	0
+245	10	0
+246	10	0
+247	10	0
+248	10	0
+249	10	0
+250	10	0
+251	10	0
+252	10	0
+253	10	0
+254	10	0
+255	10	0
+256	10	0
+257	10	0
+258	10	0
+259	10	0
+260	10	0
+261	10	0
+262	10	0
+263	10	0
+264	10	0
+265	10	0
+266	10	0
+267	10	0
+268	10	0
+269	10	0
+270	10	0
+271	10	0
+272	10	0
+273	10	0
+274	10	0
+275	10	0
+276	10	0
+277	10	0
+278	10	0
+279	10	0
+280	10	0
+281	10	0
+282	10	0
+283	10	0
+284	10	0
+285	10	0
+286	10	0
+287	10	0
+288	10	0
+289	10	0
+290	10	0
+291	10	0
+292	10	0
+293	10	0
+294	10	0
+295	10	0
+296	10	0
+297	10	0
+298	10	0
+299	10	0
+300	10	0
+301	10	0
+302	10	0
+303	10	0
+304	10	0
+305	10	0
+306	10	0
+307	10	0
+308	10	0
+309	10	0
+310	10	0
+311	10	0
+312	10	0
+313	10	0
+314	10	0
+315	10	0
+316	10	0
+317	10	0
+318	10	0
+319	10	0
+320	10	0
+321	10	0
+322	10	0
+323	10	0
+324	10	0
+325	10	0
+326	10	0
+327	10	0
+328	10	0
+329	10	0
+330	10	0
+331	10	0
+332	10	0
+333	10	0
+334	10	0
+335	10	0
+336	10	0
+337	10	0
+338	10	0
+339	10	0
+340	10	0
+341	10	0
+342	10	0
+343	10	0
+344	10	0
+345	10	0
+346	10	0
+347	10	0
+348	10	0
+349	10	0
+350	10	0
+351	10	0
+352	10	0
+353	10	0
+354	10	0
+355	10	0
+356	10	0
+357	10	0
+358	10	0
+359	10	0
+360	10	0
+0	10.5	0
+1	10.5	0
+2	10.5	0
+3	10.5	0
+4	10.5	0
+5	10.5	0
+6	10.5	0
+7	10.5	0
+8	10.5	0
+9	10.5	0
+10	10.5	0
+11	10.5	0
+12	10.5	0
+13	10.5	0
+14	10.5	0
+15	10.5	0
+16	10.5	0
+17	10.5	0
+18	10.5	0
+19	10.5	0
+20	10.5	0
+21	10.5	0
+22	10.5	0
+23	10.5	0
+24	10.5	0
+25	10.5	0
+26	10.5	0
+27	10.5	0
+28	10.5	0
+29	10.5	0
+30	10.5	0
+31	10.5	0
+32	10.5	0
+33	10.5	0
+34	10.5	0
+35	10.5	0
+36	10.5	0
+37	10.5	0
+38	10.5	0
+39	10.5	0
+40	10.5	0
+41	10.5	0
+42	10.5	0
+43	10.5	0
+44	10.5	0
+45	10.5	0
+46	10.5	0
+47	10.5	0
+48	10.5	0
+49	10.5	0
+50	10.5	0
+51	10.5	0
+52	10.5	0
+53	10.5	0
+54	10.5	0
+55	10.5	0
+56	10.5	0
+57	10.5	0
+58	10.5	0
+59	10.5	0
+60	10.5	0
+61	10.5	0
+62	10.5	0
+63	10.5	0
+64	10.5	0
+65	10.5	0
+66	10.5	0
+67	10.5	0
+68	10.5	0
+69	10.5	0
+70	10.5	0
+71	10.5	0
+72	10.5	0
+73	10.5	0
+74	10.5	0
+75	10.5	0
+76	10.5	0
+77	10.5	0
+78	10.5	0
+79	10.5	0
+80	10.5	0
+81	10.5	0
+82	10.5	0
+83	10.5	0
+84	10.5	0
+85	10.5	0
+86	10.5	0
+87	10.5	0
+88	10.5	0
+89	10.5	0
+90	10.5	0
+91	10.5	0
+92	10.5	0
+93	10.5	0
+94	10.5	0
+95	10.5	0
+96	10.5	0
+97	10.5	0
+98	10.5	0
+99	10.5	0
+100	10.5	0
+101	10.5	0
+102	10.5	0
+103	10.5	0
+104	10.5	0
+105	10.5	0
+106	10.5	0
+107	10.5	0
+108	10.5	0
+109	10.5	0
+110	10.5	0
+111	10.5	0
+112	10.5	0
+113	10.5	0
+114	10.5	0
+115	10.5	0
+116	10.5	0
+117	10.5	0
+118	10.5	0
+119	10.5	0
+120	10.5	0
+121	10.5	0
+122	10.5	0
+123	10.5	0
+124	10.5	0
+125	10.5	0
+126	10.5	0
+127	10.5	0
+128	10.5	0
+129	10.5	0
+130	10.5	0
+131	10.5	0
+132	10.5	0
+133	10.5	0
+134	10.5	0
+135	10.5	0
+136	10.5	0
+137	10.5	0
+138	10.5	0
+139	10.5	0
+140	10.5	0
+141	10.5	0
+142	10.5	0
+143	10.5	0
+144	10.5	0
+145	10.5	0
+146	10.5	0
+147	10.5	0
+148	10.5	0
+149	10.5	0
+150	10.5	0
+151	10.5	0
+152	10.5	0
+153	10.5	0
+154	10.5	0
+155	10.5	0
+156	10.5	0
+157	10.5	0
+158	10.5	0
+159	10.5	0
+160	10.5	0
+161	10.5	0
+162	10.5	0
+163	10.5	0
+164	10.5	0
+165	10.5	0
+166	10.5	0
+167	10.5	0
+168	10.5	0
+169	10.5	0
+170	10.5	0
+171	10.5	0
+172	10.5	0
+173	10.5	0
+174	10.5	0
+175	10.5	0
+176	10.5	0
+177	10.5	0
+178	10.5	0
+179	10.5	0
+180	10.5	0
+181	10.5	0
+182	10.5	0
+183	10.5	0
+184	10.5	0
+185	10.5	0
+186	10.5	0
+187	10.5	0
+188	10.5	0
+189	10.5	0
+190	10.5	0
+191	10.5	0
+192	10.5	0
+193	10.5	0
+194	10.5	0
+195	10.5	0
+196	10.5	0
+197	10.5	0
+198	10.5	0
+199	10.5	0
+200	10.5	0
+201	10.5	0
+202	10.5	0
+203	10.5	0
+204	10.5	0
+205	10.5	0
+206	10.5	0
+207	10.5	0
+208	10.5	0
+209	10.5	0
+210	10.5	0
+211	10.5	0
+212	10.5	0
+213	10.5	0
+214	10.5	0
+215	10.5	0
+216	10.5	0
+217	10.5	0
+218	10.5	0
+219	10.5	0
+220	10.5	0
+221	10.5	0
+222	10.5	0
+223	10.5	0
+224	10.5	0
+225	10.5	0
+226	10.5	0
+227	10.5	0
+228	10.5	0
+229	10.5	0
+230	10.5	0
+231	10.5	0
+232	10.5	0
+233	10.5	0
+234	10.5	0
+235	10.5	0
+236	10.5	0
+237	10.5	0
+238	10.5	0
+239	10.5	0
+240	10.5	0
+241	10.5	0
+242	10.5	0
+243	10.5	0
+244	10.5	0
+245	10.5	0
+246	10.5	0
+247	10.5	0
+248	10.5	0
+249	10.5	0
+250	10.5	0
+251	10.5	0
+252	10.5	0
+253	10.5	0
+254	10.5	0
+255	10.5	0
+256	10.5	0
+257	10.5	0
+258	10.5	0
+259	10.5	0
+260	10.5	0
+261	10.5	0
+262	10.5	0
+263	10.5	0
+264	10.5	0
+265	10.5	0
+266	10.5	0
+267	10.5	0
+268	10.5	0
+269	10.5	0
+270	10.5	0
+271	10.5	0
+272	10.5	0
+273	10.5	0
+274	10.5	0
+275	10.5	0
+276	10.5	0
+277	10.5	0
+278	10.5	0
+279	10.5	0
+280	10.5	0
+281	10.5	0
+282	10.5	0
+283	10.5	0
+284	10.5	0
+285	10.5	0
+286	10.5	0
+287	10.5	0
+288	10.5	0
+289	10.5	0
+290	10.5	0
+291	10.5	0
+292	10.5	0
+293	10.5	0
+294	10.5	0
+295	10.5	0
+296	10.5	0
+297	10.5	0
+298	10.5	0
+299	10.5	0
+300	10.5	0
+301	10.5	0
+302	10.5	0
+303	10.5	0
+304	10.5	0
+305	10.5	0
+306	10.5	0
+307	10.5	0
+308	10.5	0
+309	10.5	0
+310	10.5	0
+311	10.5	0
+312	10.5	0
+313	10.5	0
+314	10.5	0
+315	10.5	0
+316	10.5	0
+317	10.5	0
+318	10.5	0
+319	10.5	0
+320	10.5	0
+321	10.5	0
+322	10.5	0
+323	10.5	0
+324	10.5	0
+325	10.5	0
+326	10.5	0
+327	10.5	0
+328	10.5	0
+329	10.5	0
+330	10.5	0
+331	10.5	0
+332	10.5	0
+333	10.5	0
+334	10.5	0
+335	10.5	0
+336	10.5	0
+337	10.5	0
+338	10.5	0
+339	10.5	0
+340	10.5	0
+341	10.5	0
+342	10.5	0
+343	10.5	0
+344	10.5	0
+345	10.5	0
+346	10.5	0
+347	10.5	0
+348	10.5	0
+349	10.5	0
+350	10.5	0
+351	10.5	0
+352	10.5	0
+353	10.5	0
+354	10.5	0
+355	10.5	0
+356	10.5	0
+357	10.5	0
+358	10.5	0
+359	10.5	0
+360	10.5	0
+0	11	0
+1	11	0
+2	11	0
+3	11	0
+4	11	0
+5	11	0
+6	11	0
+7	11	0
+8	11	0
+9	11	0
+10	11	0
+11	11	0
+12	11	0
+13	11	0
+14	11	0
+15	11	0
+16	11	0
+17	11	0
+18	11	0
+19	11	0
+20	11	0
+21	11	0
+22	11	0
+23	11	0
+24	11	0
+25	11	0
+26	11	0
+27	11	0
+28	11	0
+29	11	0
+30	11	0
+31	11	0
+32	11	0
+33	11	0
+34	11	0
+35	11	0
+36	11	0
+37	11	0
+38	11	0
+39	11	0
+40	11	0
+41	11	0
+42	11	0
+43	11	0
+44	11	0
+45	11	0
+46	11	0
+47	11	0
+48	11	0
+49	11	0
+50	11	0
+51	11	0
+52	11	0
+53	11	0
+54	11	0
+55	11	0
+56	11	0
+57	11	0
+58	11	0
+59	11	0
+60	11	0
+61	11	0
+62	11	0
+63	11	0
+64	11	0
+65	11	0
+66	11	0
+67	11	0
+68	11	0
+69	11	0
+70	11	0
+71	11	0
+72	11	0
+73	11	0
+74	11	0
+75	11	0
+76	11	0
+77	11	0
+78	11	0
+79	11	0
+80	11	0
+81	11	0
+82	11	0
+83	11	0
+84	11	0
+85	11	0
+86	11	0
+87	11	0
+88	11	0
+89	11	0
+90	11	0
+91	11	0
+92	11	0
+93	11	0
+94	11	0
+95	11	0
+96	11	0
+97	11	0
+98	11	0
+99	11	0
+100	11	0
+101	11	0
+102	11	0
+103	11	0
+104	11	0
+105	11	0
+106	11	0
+107	11	0
+108	11	0
+109	11	0
+110	11	0
+111	11	0
+112	11	0
+113	11	0
+114	11	0
+115	11	0
+116	11	0
+117	11	0
+118	11	0
+119	11	0
+120	11	0
+121	11	0
+122	11	0
+123	11	0
+124	11	0
+125	11	0
+126	11	0
+127	11	0
+128	11	0
+129	11	0
+130	11	0
+131	11	0
+132	11	0
+133	11	0
+134	11	0
+135	11	0
+136	11	0
+137	11	0
+138	11	0
+139	11	0
+140	11	0
+141	11	0
+142	11	0
+143	11	0
+144	11	0
+145	11	0
+146	11	0
+147	11	0
+148	11	0
+149	11	0
+150	11	0
+151	11	0
+152	11	0
+153	11	0
+154	11	0
+155	11	0
+156	11	0
+157	11	0
+158	11	0
+159	11	0
+160	11	0
+161	11	0
+162	11	0
+163	11	0
+164	11	0
+165	11	0
+166	11	0
+167	11	0
+168	11	0
+169	11	0
+170	11	0
+171	11	0
+172	11	0
+173	11	0
+174	11	0
+175	11	0
+176	11	0
+177	11	0
+178	11	0
+179	11	0
+180	11	0
+181	11	0
+182	11	0
+183	11	0
+184	11	0
+185	11	0
+186	11	0
+187	11	0
+188	11	0
+189	11	0
+190	11	0
+191	11	0
+192	11	0
+193	11	0
+194	11	0
+195	11	0
+196	11	0
+197	11	0
+198	11	0
+199	11	0
+200	11	0
+201	11	0
+202	11	0
+203	11	0
+204	11	0
+205	11	0
+206	11	0
+207	11	0
+208	11	0
+209	11	0
+210	11	0
+211	11	0
+212	11	0
+213	11	0
+214	11	0
+215	11	0
+216	11	0
+217	11	0
+218	11	0
+219	11	0
+220	11	0
+221	11	0
+222	11	0
+223	11	0
+224	11	0
+225	11	0
+226	11	0
+227	11	0
+228	11	0
+229	11	0
+230	11	0
+231	11	0
+232	11	0
+233	11	0
+234	11	0
+235	11	0
+236	11	0
+237	11	0
+238	11	0
+239	11	0
+240	11	0
+241	11	0
+242	11	0
+243	11	0
+244	11	0
+245	11	0
+246	11	0
+247	11	0
+248	11	0
+249	11	0
+250	11	0
+251	11	0
+252	11	0
+253	11	0
+254	11	0
+255	11	0
+256	11	0
+257	11	0
+258	11	0
+259	11	0
+260	11	0
+261	11	0
+262	11	0
+263	11	0
+264	11	0
+265	11	0
+266	11	0
+267	11	0
+268	11	0
+269	11	0
+270	11	0
+271	11	0
+272	11	0
+273	11	0
+274	11	0
+275	11	0
+276	11	0
+277	11	0
+278	11	0
+279	11	0
+280	11	0
+281	11	0
+282	11	0
+283	11	0
+284	11	0
+285	11	0
+286	11	0
+287	11	0
+288	11	0
+289	11	0
+290	11	0
+291	11	0
+292	11	0
+293	11	0
+294	11	0
+295	11	0
+296	11	0
+297	11	0
+298	11	0
+299	11	0
+300	11	0
+301	11	0
+302	11	0
+303	11	0
+304	11	0
+305	11	0
+306	11	0
+307	11	0
+308	11	0
+309	11	0
+310	11	0
+311	11	0
+312	11	0
+313	11	0
+314	11	0
+315	11	0
+316	11	0
+317	11	0
+318	11	0
+319	11	0
+320	11	0
+321	11	0
+322	11	0
+323	11	0
+324	11	0
+325	11	0
+326	11	0
+327	11	0
+328	11	0
+329	11	0
+330	11	0
+331	11	0
+332	11	0
+333	11	0
+334	11	0
+335	11	0
+336	11	0
+337	11	0
+338	11	0
+339	11	0
+340	11	0
+341	11	0
+342	11	0
+343	11	0
+344	11	0
+345	11	0
+346	11	0
+347	11	0
+348	11	0
+349	11	0
+350	11	0
+351	11	0
+352	11	0
+353	11	0
+354	11	0
+355	11	0
+356	11	0
+357	11	0
+358	11	0
+359	11	0
+360	11	0
+0	11.5	0
+1	11.5	0
+2	11.5	0
+3	11.5	0
+4	11.5	0
+5	11.5	0
+6	11.5	0
+7	11.5	0
+8	11.5	0
+9	11.5	0
+10	11.5	0
+11	11.5	0
+12	11.5	0
+13	11.5	0
+14	11.5	0
+15	11.5	0
+16	11.5	0
+17	11.5	0
+18	11.5	0
+19	11.5	0
+20	11.5	0
+21	11.5	0
+22	11.5	0
+23	11.5	0
+24	11.5	0
+25	11.5	0
+26	11.5	0
+27	11.5	0
+28	11.5	0
+29	11.5	0
+30	11.5	0
+31	11.5	0
+32	11.5	0
+33	11.5	0
+34	11.5	0
+35	11.5	0
+36	11.5	0
+37	11.5	0
+38	11.5	0
+39	11.5	0
+40	11.5	0
+41	11.5	0
+42	11.5	0
+43	11.5	0
+44	11.5	0
+45	11.5	0
+46	11.5	0
+47	11.5	0
+48	11.5	0
+49	11.5	0
+50	11.5	0
+51	11.5	0
+52	11.5	0
+53	11.5	0
+54	11.5	0
+55	11.5	0
+56	11.5	0
+57	11.5	0
+58	11.5	0
+59	11.5	0
+60	11.5	0
+61	11.5	0
+62	11.5	0
+63	11.5	0
+64	11.5	0
+65	11.5	0
+66	11.5	0
+67	11.5	0
+68	11.5	0
+69	11.5	0
+70	11.5	0
+71	11.5	0
+72	11.5	0
+73	11.5	0
+74	11.5	0
+75	11.5	0
+76	11.5	0
+77	11.5	0
+78	11.5	0
+79	11.5	0
+80	11.5	0
+81	11.5	0
+82	11.5	0
+83	11.5	0
+84	11.5	0
+85	11.5	0
+86	11.5	0
+87	11.5	0
+88	11.5	0
+89	11.5	0
+90	11.5	0
+91	11.5	0
+92	11.5	0
+93	11.5	0
+94	11.5	0
+95	11.5	0
+96	11.5	0
+97	11.5	0
+98	11.5	0
+99	11.5	0
+100	11.5	0
+101	11.5	0
+102	11.5	0
+103	11.5	0
+104	11.5	0
+105	11.5	0
+106	11.5	0
+107	11.5	0
+108	11.5	0
+109	11.5	0
+110	11.5	0
+111	11.5	0
+112	11.5	0
+113	11.5	0
+114	11.5	0
+115	11.5	0
+116	11.5	0
+117	11.5	0
+118	11.5	0
+119	11.5	0
+120	11.5	0
+121	11.5	0
+122	11.5	0
+123	11.5	0
+124	11.5	0
+125	11.5	0
+126	11.5	0
+127	11.5	0
+128	11.5	0
+129	11.5	0
+130	11.5	0
+131	11.5	0
+132	11.5	0
+133	11.5	0
+134	11.5	0
+135	11.5	0
+136	11.5	0
+137	11.5	0
+138	11.5	0
+139	11.5	0
+140	11.5	0
+141	11.5	0
+142	11.5	0
+143	11.5	0
+144	11.5	0
+145	11.5	0
+146	11.5	0
+147	11.5	0
+148	11.5	0
+149	11.5	0
+150	11.5	0
+151	11.5	0
+152	11.5	0
+153	11.5	0
+154	11.5	0
+155	11.5	0
+156	11.5	0
+157	11.5	0
+158	11.5	0
+159	11.5	0
+160	11.5	0
+161	11.5	0
+162	11.5	0
+163	11.5	0
+164	11.5	0
+165	11.5	0
+166	11.5	0
+167	11.5	0
+168	11.5	0
+169	11.5	0
+170	11.5	0
+171	11.5	0
+172	11.5	0
+173	11.5	0
+174	11.5	0
+175	11.5	0
+176	11.5	0
+177	11.5	0
+178	11.5	0
+179	11.5	0
+180	11.5	0
+181	11.5	0
+182	11.5	0
+183	11.5	0
+184	11.5	0
+185	11.5	0
+186	11.5	0
+187	11.5	0
+188	11.5	0
+189	11.5	0
+190	11.5	0
+191	11.5	0
+192	11.5	0
+193	11.5	0
+194	11.5	0
+195	11.5	0
+196	11.5	0
+197	11.5	0
+198	11.5	0
+199	11.5	0
+200	11.5	0
+201	11.5	0
+202	11.5	0
+203	11.5	0
+204	11.5	0
+205	11.5	0
+206	11.5	0
+207	11.5	0
+208	11.5	0
+209	11.5	0
+210	11.5	0
+211	11.5	0
+212	11.5	0
+213	11.5	0
+214	11.5	0
+215	11.5	0
+216	11.5	0
+217	11.5	0
+218	11.5	0
+219	11.5	0
+220	11.5	0
+221	11.5	0
+222	11.5	0
+223	11.5	0
+224	11.5	0
+225	11.5	0
+226	11.5	0
+227	11.5	0
+228	11.5	0
+229	11.5	0
+230	11.5	0
+231	11.5	0
+232	11.5	0
+233	11.5	0
+234	11.5	0
+235	11.5	0
+236	11.5	0
+237	11.5	0
+238	11.5	0
+239	11.5	0
+240	11.5	0
+241	11.5	0
+242	11.5	0
+243	11.5	0
+244	11.5	0
+245	11.5	0
+246	11.5	0
+247	11.5	0
+248	11.5	0
+249	11.5	0
+250	11.5	0
+251	11.5	0
+252	11.5	0
+253	11.5	0
+254	11.5	0
+255	11.5	0
+256	11.5	0
+257	11.5	0
+258	11.5	0
+259	11.5	0
+260	11.5	0
+261	11.5	0
+262	11.5	0
+263	11.5	0
+264	11.5	0
+265	11.5	0
+266	11.5	0
+267	11.5	0
+268	11.5	0
+269	11.5	0
+270	11.5	0
+271	11.5	0
+272	11.5	0
+273	11.5	0
+274	11.5	0
+275	11.5	0
+276	11.5	0
+277	11.5	0
+278	11.5	0
+279	11.5	0
+280	11.5	0
+281	11.5	0
+282	11.5	0
+283	11.5	0
+284	11.5	0
+285	11.5	0
+286	11.5	0
+287	11.5	0
+288	11.5	0
+289	11.5	0
+290	11.5	0
+291	11.5	0
+292	11.5	0
+293	11.5	0
+294	11.5	0
+295	11.5	0
+296	11.5	0
+297	11.5	0
+298	11.5	0
+299	11.5	0
+300	11.5	0
+301	11.5	0
+302	11.5	0
+303	11.5	0
+304	11.5	0
+305	11.5	0
+306	11.5	0
+307	11.5	0
+308	11.5	0
+309	11.5	0
+310	11.5	0
+311	11.5	0
+312	11.5	0
+313	11.5	0
+314	11.5	0
+315	11.5	0
+316	11.5	0
+317	11.5	0
+318	11.5	0
+319	11.5	0
+320	11.5	0
+321	11.5	0
+322	11.5	0
+323	11.5	0
+324	11.5	0
+325	11.5	0
+326	11.5	0
+327	11.5	0
+328	11.5	0
+329	11.5	0
+330	11.5	0
+331	11.5	0
+332	11.5	0
+333	11.5	0
+334	11.5	0
+335	11.5	0
+336	11.5	0
+337	11.5	0
+338	11.5	0
+339	11.5	0
+340	11.5	0
+341	11.5	0
+342	11.5	0
+343	11.5	0
+344	11.5	0
+345	11.5	0
+346	11.5	0
+347	11.5	0
+348	11.5	0
+349	11.5	0
+350	11.5	0
+351	11.5	0
+352	11.5	0
+353	11.5	0
+354	11.5	0
+355	11.5	0
+356	11.5	0
+357	11.5	0
+358	11.5	0
+359	11.5	0
+360	11.5	0
+0	12	0
+1	12	0
+2	12	0
+3	12	0
+4	12	0
+5	12	0
+6	12	0
+7	12	0
+8	12	0
+9	12	0
+10	12	0
+11	12	0
+12	12	0
+13	12	0
+14	12	0
+15	12	0
+16	12	0
+17	12	0
+18	12	0
+19	12	0
+20	12	0
+21	12	0
+22	12	0
+23	12	0
+24	12	0
+25	12	0
+26	12	0
+27	12	0
+28	12	0
+29	12	0
+30	12	0
+31	12	0
+32	12	0
+33	12	0
+34	12	0
+35	12	0
+36	12	0
+37	12	0
+38	12	0
+39	12	0
+40	12	0
+41	12	0
+42	12	0
+43	12	0
+44	12	0
+45	12	0
+46	12	0
+47	12	0
+48	12	0
+49	12	0
+50	12	0
+51	12	0
+52	12	0
+53	12	0
+54	12	0
+55	12	0
+56	12	0
+57	12	0
+58	12	0
+59	12	0
+60	12	0
+61	12	0
+62	12	0
+63	12	0
+64	12	0
+65	12	0
+66	12	0
+67	12	0
+68	12	0
+69	12	0
+70	12	0
+71	12	0
+72	12	0
+73	12	0
+74	12	0
+75	12	0
+76	12	0
+77	12	0
+78	12	0
+79	12	0
+80	12	0
+81	12	0
+82	12	0
+83	12	0
+84	12	0
+85	12	0
+86	12	0
+87	12	0
+88	12	0
+89	12	0
+90	12	0
+91	12	0
+92	12	0
+93	12	0
+94	12	0
+95	12	0
+96	12	0
+97	12	0
+98	12	0
+99	12	0
+100	12	0
+101	12	0
+102	12	0
+103	12	0
+104	12	0
+105	12	0
+106	12	0
+107	12	0
+108	12	0
+109	12	0
+110	12	0
+111	12	0
+112	12	0
+113	12	0
+114	12	0
+115	12	0
+116	12	0
+117	12	0
+118	12	0
+119	12	0
+120	12	0
+121	12	0
+122	12	0
+123	12	0
+124	12	0
+125	12	0
+126	12	0
+127	12	0
+128	12	0
+129	12	0
+130	12	0
+131	12	0
+132	12	0
+133	12	0
+134	12	0
+135	12	0
+136	12	0
+137	12	0
+138	12	0
+139	12	0
+140	12	0
+141	12	0
+142	12	0
+143	12	0
+144	12	0
+145	12	0
+146	12	0
+147	12	0
+148	12	0
+149	12	0
+150	12	0
+151	12	0
+152	12	0
+153	12	0
+154	12	0
+155	12	0
+156	12	0
+157	12	0
+158	12	0
+159	12	0
+160	12	0
+161	12	0
+162	12	0
+163	12	0
+164	12	0
+165	12	0
+166	12	0
+167	12	0
+168	12	0
+169	12	0
+170	12	0
+171	12	0
+172	12	0
+173	12	0
+174	12	0
+175	12	0
+176	12	0
+177	12	0
+178	12	0
+179	12	0
+180	12	0
+181	12	0
+182	12	0
+183	12	0
+184	12	0
+185	12	0
+186	12	0
+187	12	0
+188	12	0
+189	12	0
+190	12	0
+191	12	0
+192	12	0
+193	12	0
+194	12	0
+195	12	0
+196	12	0
+197	12	0
+198	12	0
+199	12	0
+200	12	0
+201	12	0
+202	12	0
+203	12	0
+204	12	0
+205	12	0
+206	12	0
+207	12	0
+208	12	0
+209	12	0
+210	12	0
+211	12	0
+212	12	0
+213	12	0
+214	12	0
+215	12	0
+216	12	0
+217	12	0
+218	12	0
+219	12	0
+220	12	0
+221	12	0
+222	12	0
+223	12	0
+224	12	0
+225	12	0
+226	12	0
+227	12	0
+228	12	0
+229	12	0
+230	12	0
+231	12	0
+232	12	0
+233	12	0
+234	12	0
+235	12	0
+236	12	0
+237	12	0
+238	12	0
+239	12	0
+240	12	0
+241	12	0
+242	12	0
+243	12	0
+244	12	0
+245	12	0
+246	12	0
+247	12	0
+248	12	0
+249	12	0
+250	12	0
+251	12	0
+252	12	0
+253	12	0
+254	12	0
+255	12	0
+256	12	0
+257	12	0
+258	12	0
+259	12	0
+260	12	0
+261	12	0
+262	12	0
+263	12	0
+264	12	0
+265	12	0
+266	12	0
+267	12	0
+268	12	0
+269	12	0
+270	12	0
+271	12	0
+272	12	0
+273	12	0
+274	12	0
+275	12	0
+276	12	0
+277	12	0
+278	12	0
+279	12	0
+280	12	0
+281	12	0
+282	12	0
+283	12	0
+284	12	0
+285	12	0
+286	12	0
+287	12	0
+288	12	0
+289	12	0
+290	12	0
+291	12	0
+292	12	0
+293	12	0
+294	12	0
+295	12	0
+296	12	0
+297	12	0
+298	12	0
+299	12	0
+300	12	0
+301	12	0
+302	12	0
+303	12	0
+304	12	0
+305	12	0
+306	12	0
+307	12	0
+308	12	0
+309	12	0
+310	12	0
+311	12	0
+312	12	0
+313	12	0
+314	12	0
+315	12	0
+316	12	0
+317	12	0
+318	12	0
+319	12	0
+320	12	0
+321	12	0
+322	12	0
+323	12	0
+324	12	0
+325	12	0
+326	12	0
+327	12	0
+328	12	0
+329	12	0
+330	12	0
+331	12	0
+332	12	0
+333	12	0
+334	12	0
+335	12	0
+336	12	0
+337	12	0
+338	12	0
+339	12	0
+340	12	0
+341	12	0
+342	12	0
+343	12	0
+344	12	0
+345	12	0
+346	12	0
+347	12	0
+348	12	0
+349	12	0
+350	12	0
+351	12	0
+352	12	0
+353	12	0
+354	12	0
+355	12	0
+356	12	0
+357	12	0
+358	12	0
+359	12	0
+360	12	0
+0	12.5	0
+1	12.5	0
+2	12.5	0
+3	12.5	0
+4	12.5	0
+5	12.5	0
+6	12.5	0
+7	12.5	0
+8	12.5	0
+9	12.5	0
+10	12.5	0
+11	12.5	0
+12	12.5	0
+13	12.5	0
+14	12.5	0
+15	12.5	0
+16	12.5	0
+17	12.5	0
+18	12.5	0
+19	12.5	0
+20	12.5	0
+21	12.5	0
+22	12.5	0
+23	12.5	0
+24	12.5	0
+25	12.5	0
+26	12.5	0
+27	12.5	0
+28	12.5	0
+29	12.5	0
+30	12.5	0
+31	12.5	0
+32	12.5	0
+33	12.5	0
+34	12.5	0
+35	12.5	0
+36	12.5	0
+37	12.5	0
+38	12.5	0
+39	12.5	0
+40	12.5	0
+41	12.5	0
+42	12.5	0
+43	12.5	0
+44	12.5	0
+45	12.5	0
+46	12.5	0
+47	12.5	0
+48	12.5	0
+49	12.5	0
+50	12.5	0
+51	12.5	0
+52	12.5	0
+53	12.5	0
+54	12.5	0
+55	12.5	0
+56	12.5	0
+57	12.5	0
+58	12.5	0
+59	12.5	0
+60	12.5	0
+61	12.5	0
+62	12.5	0
+63	12.5	0
+64	12.5	0
+65	12.5	0
+66	12.5	0
+67	12.5	0
+68	12.5	0
+69	12.5	0
+70	12.5	0
+71	12.5	0
+72	12.5	0
+73	12.5	0
+74	12.5	0
+75	12.5	0
+76	12.5	0
+77	12.5	0
+78	12.5	0
+79	12.5	0
+80	12.5	0
+81	12.5	0
+82	12.5	0
+83	12.5	0
+84	12.5	0
+85	12.5	0
+86	12.5	0
+87	12.5	0
+88	12.5	0
+89	12.5	0
+90	12.5	0
+91	12.5	0
+92	12.5	0
+93	12.5	0
+94	12.5	0
+95	12.5	0
+96	12.5	0
+97	12.5	0
+98	12.5	0
+99	12.5	0
+100	12.5	0
+101	12.5	0
+102	12.5	0
+103	12.5	0
+104	12.5	0
+105	12.5	0
+106	12.5	0
+107	12.5	0
+108	12.5	0
+109	12.5	0
+110	12.5	0
+111	12.5	0
+112	12.5	0
+113	12.5	0
+114	12.5	0
+115	12.5	0
+116	12.5	0
+117	12.5	0
+118	12.5	0
+119	12.5	0
+120	12.5	0
+121	12.5	0
+122	12.5	0
+123	12.5	0
+124	12.5	0
+125	12.5	0
+126	12.5	0
+127	12.5	0
+128	12.5	0
+129	12.5	0
+130	12.5	0
+131	12.5	0
+132	12.5	0
+133	12.5	0
+134	12.5	0
+135	12.5	0
+136	12.5	0
+137	12.5	0
+138	12.5	0
+139	12.5	0
+140	12.5	0
+141	12.5	0
+142	12.5	0
+143	12.5	0
+144	12.5	0
+145	12.5	0
+146	12.5	0
+147	12.5	0
+148	12.5	0
+149	12.5	0
+150	12.5	0
+151	12.5	0
+152	12.5	0
+153	12.5	0
+154	12.5	0
+155	12.5	0
+156	12.5	0
+157	12.5	0
+158	12.5	0
+159	12.5	0
+160	12.5	0
+161	12.5	0
+162	12.5	0
+163	12.5	0
+164	12.5	0
+165	12.5	0
+166	12.5	0
+167	12.5	0
+168	12.5	0
+169	12.5	0
+170	12.5	0
+171	12.5	0
+172	12.5	0
+173	12.5	0
+174	12.5	0
+175	12.5	0
+176	12.5	0
+177	12.5	0
+178	12.5	0
+179	12.5	0
+180	12.5	0
+181	12.5	0
+182	12.5	0
+183	12.5	0
+184	12.5	0
+185	12.5	0
+186	12.5	0
+187	12.5	0
+188	12.5	0
+189	12.5	0
+190	12.5	0
+191	12.5	0
+192	12.5	0
+193	12.5	0
+194	12.5	0
+195	12.5	0
+196	12.5	0
+197	12.5	0
+198	12.5	0
+199	12.5	0
+200	12.5	0
+201	12.5	0
+202	12.5	0
+203	12.5	0
+204	12.5	0
+205	12.5	0
+206	12.5	0
+207	12.5	0
+208	12.5	0
+209	12.5	0
+210	12.5	0
+211	12.5	0
+212	12.5	0
+213	12.5	0
+214	12.5	0
+215	12.5	0
+216	12.5	0
+217	12.5	0
+218	12.5	0
+219	12.5	0
+220	12.5	0
+221	12.5	0
+222	12.5	0
+223	12.5	0
+224	12.5	0
+225	12.5	0
+226	12.5	0
+227	12.5	0
+228	12.5	0
+229	12.5	0
+230	12.5	0
+231	12.5	0
+232	12.5	0
+233	12.5	0
+234	12.5	0
+235	12.5	0
+236	12.5	0
+237	12.5	0
+238	12.5	0
+239	12.5	0
+240	12.5	0
+241	12.5	0
+242	12.5	0
+243	12.5	0
+244	12.5	0
+245	12.5	0
+246	12.5	0
+247	12.5	0
+248	12.5	0
+249	12.5	0
+250	12.5	0
+251	12.5	0
+252	12.5	0
+253	12.5	0
+254	12.5	0
+255	12.5	0
+256	12.5	0
+257	12.5	0
+258	12.5	0
+259	12.5	0
+260	12.5	0
+261	12.5	0
+262	12.5	0
+263	12.5	0
+264	12.5	0
+265	12.5	0
+266	12.5	0
+267	12.5	0
+268	12.5	0
+269	12.5	0
+270	12.5	0
+271	12.5	0
+272	12.5	0
+273	12.5	0
+274	12.5	0
+275	12.5	0
+276	12.5	0
+277	12.5	0
+278	12.5	0
+279	12.5	0
+280	12.5	0
+281	12.5	0
+282	12.5	0
+283	12.5	0
+284	12.5	0
+285	12.5	0
+286	12.5	0
+287	12.5	0
+288	12.5	0
+289	12.5	0
+290	12.5	0
+291	12.5	0
+292	12.5	0
+293	12.5	0
+294	12.5	0
+295	12.5	0
+296	12.5	0
+297	12.5	0
+298	12.5	0
+299	12.5	0
+300	12.5	0
+301	12.5	0
+302	12.5	0
+303	12.5	0
+304	12.5	0
+305	12.5	0
+306	12.5	0
+307	12.5	0
+308	12.5	0
+309	12.5	0
+310	12.5	0
+311	12.5	0
+312	12.5	0
+313	12.5	0
+314	12.5	0
+315	12.5	0
+316	12.5	0
+317	12.5	0
+318	12.5	0
+319	12.5	0
+320	12.5	0
+321	12.5	0
+322	12.5	0
+323	12.5	0
+324	12.5	0
+325	12.5	0
+326	12.5	0
+327	12.5	0
+328	12.5	0
+329	12.5	0
+330	12.5	0
+331	12.5	0
+332	12.5	0
+333	12.5	0
+334	12.5	0
+335	12.5	0
+336	12.5	0
+337	12.5	0
+338	12.5	0
+339	12.5	0
+340	12.5	0
+341	12.5	0
+342	12.5	0
+343	12.5	0
+344	12.5	0
+345	12.5	0
+346	12.5	0
+347	12.5	0
+348	12.5	0
+349	12.5	0
+350	12.5	0
+351	12.5	0
+352	12.5	0
+353	12.5	0
+354	12.5	0
+355	12.5	0
+356	12.5	0
+357	12.5	0
+358	12.5	0
+359	12.5	0
+360	12.5	0
+0	13	0
+1	13	0
+2	13	0
+3	13	0
+4	13	0
+5	13	0
+6	13	0
+7	13	0
+8	13	0
+9	13	0
+10	13	0
+11	13	0
+12	13	0
+13	13	0
+14	13	0
+15	13	0
+16	13	0
+17	13	0
+18	13	0
+19	13	0
+20	13	0
+21	13	0
+22	13	0
+23	13	0
+24	13	0
+25	13	0
+26	13	0
+27	13	0
+28	13	0
+29	13	0
+30	13	0
+31	13	0
+32	13	0
+33	13	0
+34	13	0
+35	13	0
+36	13	0
+37	13	0
+38	13	0
+39	13	0
+40	13	0
+41	13	0
+42	13	0
+43	13	0
+44	13	0
+45	13	0
+46	13	0
+47	13	0
+48	13	0
+49	13	0
+50	13	0
+51	13	0
+52	13	0
+53	13	0
+54	13	0
+55	13	0
+56	13	0
+57	13	0
+58	13	0
+59	13	0
+60	13	0
+61	13	0
+62	13	0
+63	13	0
+64	13	0
+65	13	0
+66	13	0
+67	13	0
+68	13	0
+69	13	0
+70	13	0
+71	13	0
+72	13	0
+73	13	0
+74	13	0
+75	13	0
+76	13	0
+77	13	0
+78	13	0
+79	13	0
+80	13	0
+81	13	0
+82	13	0
+83	13	0
+84	13	0
+85	13	0
+86	13	0
+87	13	0
+88	13	0
+89	13	0
+90	13	0
+91	13	0
+92	13	0
+93	13	0
+94	13	0
+95	13	0
+96	13	0
+97	13	0
+98	13	0
+99	13	0
+100	13	0
+101	13	0
+102	13	0
+103	13	0
+104	13	0
+105	13	0
+106	13	0
+107	13	0
+108	13	0
+109	13	0
+110	13	0
+111	13	0
+112	13	0
+113	13	0
+114	13	0
+115	13	0
+116	13	0
+117	13	0
+118	13	0
+119	13	0
+120	13	0
+121	13	0
+122	13	0
+123	13	0
+124	13	0
+125	13	0
+126	13	0
+127	13	0
+128	13	0
+129	13	0
+130	13	0
+131	13	0
+132	13	0
+133	13	0
+134	13	0
+135	13	0
+136	13	0
+137	13	0
+138	13	0
+139	13	0
+140	13	0
+141	13	0
+142	13	0
+143	13	0
+144	13	0
+145	13	0
+146	13	0
+147	13	0
+148	13	0
+149	13	0
+150	13	0
+151	13	0
+152	13	0
+153	13	0
+154	13	0
+155	13	0
+156	13	0
+157	13	0
+158	13	0
+159	13	0
+160	13	0
+161	13	0
+162	13	0
+163	13	0
+164	13	0
+165	13	0
+166	13	0
+167	13	0
+168	13	0
+169	13	0
+170	13	0
+171	13	0
+172	13	0
+173	13	0
+174	13	0
+175	13	0
+176	13	0
+177	13	0
+178	13	0
+179	13	0
+180	13	0
+181	13	0
+182	13	0
+183	13	0
+184	13	0
+185	13	0
+186	13	0
+187	13	0
+188	13	0
+189	13	0
+190	13	0
+191	13	0
+192	13	0
+193	13	0
+194	13	0
+195	13	0
+196	13	0
+197	13	0
+198	13	0
+199	13	0
+200	13	0
+201	13	0
+202	13	0
+203	13	0
+204	13	0
+205	13	0
+206	13	0
+207	13	0
+208	13	0
+209	13	0
+210	13	0
+211	13	0
+212	13	0
+213	13	0
+214	13	0
+215	13	0
+216	13	0
+217	13	0
+218	13	0
+219	13	0
+220	13	0
+221	13	0
+222	13	0
+223	13	0
+224	13	0
+225	13	0
+226	13	0
+227	13	0
+228	13	0
+229	13	0
+230	13	0
+231	13	0
+232	13	0
+233	13	0
+234	13	0
+235	13	0
+236	13	0
+237	13	0
+238	13	0
+239	13	0
+240	13	0
+241	13	0
+242	13	0
+243	13	0
+244	13	0
+245	13	0
+246	13	0
+247	13	0
+248	13	0
+249	13	0
+250	13	0
+251	13	0
+252	13	0
+253	13	0
+254	13	0
+255	13	0
+256	13	0
+257	13	0
+258	13	0
+259	13	0
+260	13	0
+261	13	0
+262	13	0
+263	13	0
+264	13	0
+265	13	0
+266	13	0
+267	13	0
+268	13	0
+269	13	0
+270	13	0
+271	13	0
+272	13	0
+273	13	0
+274	13	0
+275	13	0
+276	13	0
+277	13	0
+278	13	0
+279	13	0
+280	13	0
+281	13	0
+282	13	0
+283	13	0
+284	13	0
+285	13	0
+286	13	0
+287	13	0
+288	13	0
+289	13	0
+290	13	0
+291	13	0
+292	13	0
+293	13	0
+294	13	0
+295	13	0
+296	13	0
+297	13	0
+298	13	0
+299	13	0
+300	13	0
+301	13	0
+302	13	0
+303	13	0
+304	13	0
+305	13	0
+306	13	0
+307	13	0
+308	13	0
+309	13	0
+310	13	0
+311	13	0
+312	13	0
+313	13	0
+314	13	0
+315	13	0
+316	13	0
+317	13	0
+318	13	0
+319	13	0
+320	13	0
+321	13	0
+322	13	0
+323	13	0
+324	13	0
+325	13	0
+326	13	0
+327	13	0
+328	13	0
+329	13	0
+330	13	0
+331	13	0
+332	13	0
+333	13	0
+334	13	0
+335	13	0
+336	13	0
+337	13	0
+338	13	0
+339	13	0
+340	13	0
+341	13	0
+342	13	0
+343	13	0
+344	13	0
+345	13	0
+346	13	0
+347	13	0
+348	13	0
+349	13	0
+350	13	0
+351	13	0
+352	13	0
+353	13	0
+354	13	0
+355	13	0
+356	13	0
+357	13	0
+358	13	0
+359	13	0
+360	13	0
+0	13.5	0
+1	13.5	0
+2	13.5	0
+3	13.5	0
+4	13.5	0
+5	13.5	0
+6	13.5	0
+7	13.5	0
+8	13.5	0
+9	13.5	0
+10	13.5	0
+11	13.5	0
+12	13.5	0
+13	13.5	0
+14	13.5	0
+15	13.5	0
+16	13.5	0
+17	13.5	0
+18	13.5	0
+19	13.5	0
+20	13.5	0
+21	13.5	0
+22	13.5	0
+23	13.5	0
+24	13.5	0
+25	13.5	0
+26	13.5	0
+27	13.5	0
+28	13.5	0
+29	13.5	0
+30	13.5	0
+31	13.5	0
+32	13.5	0
+33	13.5	0
+34	13.5	0
+35	13.5	0
+36	13.5	0
+37	13.5	0
+38	13.5	0
+39	13.5	0
+40	13.5	0
+41	13.5	0
+42	13.5	0
+43	13.5	0
+44	13.5	0
+45	13.5	0
+46	13.5	0
+47	13.5	0
+48	13.5	0
+49	13.5	0
+50	13.5	0
+51	13.5	0
+52	13.5	0
+53	13.5	0
+54	13.5	0
+55	13.5	0
+56	13.5	0
+57	13.5	0
+58	13.5	0
+59	13.5	0
+60	13.5	0
+61	13.5	0
+62	13.5	0
+63	13.5	0
+64	13.5	0
+65	13.5	0
+66	13.5	0
+67	13.5	0
+68	13.5	0
+69	13.5	0
+70	13.5	0
+71	13.5	0
+72	13.5	0
+73	13.5	0
+74	13.5	0
+75	13.5	0
+76	13.5	0
+77	13.5	0
+78	13.5	0
+79	13.5	0
+80	13.5	0
+81	13.5	0
+82	13.5	0
+83	13.5	0
+84	13.5	0
+85	13.5	0
+86	13.5	0
+87	13.5	0
+88	13.5	0
+89	13.5	0
+90	13.5	0
+91	13.5	0
+92	13.5	0
+93	13.5	0
+94	13.5	0
+95	13.5	0
+96	13.5	0
+97	13.5	0
+98	13.5	0
+99	13.5	0
+100	13.5	0
+101	13.5	0
+102	13.5	0
+103	13.5	0
+104	13.5	0
+105	13.5	0
+106	13.5	0
+107	13.5	0
+108	13.5	0
+109	13.5	0
+110	13.5	0
+111	13.5	0
+112	13.5	0
+113	13.5	0
+114	13.5	0
+115	13.5	0
+116	13.5	0
+117	13.5	0
+118	13.5	0
+119	13.5	0
+120	13.5	0
+121	13.5	0
+122	13.5	0
+123	13.5	0
+124	13.5	0
+125	13.5	0
+126	13.5	0
+127	13.5	0
+128	13.5	0
+129	13.5	0
+130	13.5	0
+131	13.5	0
+132	13.5	0
+133	13.5	0
+134	13.5	0
+135	13.5	0
+136	13.5	0
+137	13.5	0
+138	13.5	0
+139	13.5	0
+140	13.5	0
+141	13.5	0
+142	13.5	0
+143	13.5	0
+144	13.5	0
+145	13.5	0
+146	13.5	0
+147	13.5	0
+148	13.5	0
+149	13.5	0
+150	13.5	0
+151	13.5	0
+152	13.5	0
+153	13.5	0
+154	13.5	0
+155	13.5	0
+156	13.5	0
+157	13.5	0
+158	13.5	0
+159	13.5	0
+160	13.5	0
+161	13.5	0
+162	13.5	0
+163	13.5	0
+164	13.5	0
+165	13.5	0
+166	13.5	0
+167	13.5	0
+168	13.5	0
+169	13.5	0
+170	13.5	0
+171	13.5	0
+172	13.5	0
+173	13.5	0
+174	13.5	0
+175	13.5	0
+176	13.5	0
+177	13.5	0
+178	13.5	0
+179	13.5	0
+180	13.5	0
+181	13.5	0
+182	13.5	0
+183	13.5	0
+184	13.5	0
+185	13.5	0
+186	13.5	0
+187	13.5	0
+188	13.5	0
+189	13.5	0
+190	13.5	0
+191	13.5	0
+192	13.5	0
+193	13.5	0
+194	13.5	0
+195	13.5	0
+196	13.5	0
+197	13.5	0
+198	13.5	0
+199	13.5	0
+200	13.5	0
+201	13.5	0
+202	13.5	0
+203	13.5	0
+204	13.5	0
+205	13.5	0
+206	13.5	0
+207	13.5	0
+208	13.5	0
+209	13.5	0
+210	13.5	0
+211	13.5	0
+212	13.5	0
+213	13.5	0
+214	13.5	0
+215	13.5	0
+216	13.5	0
+217	13.5	0
+218	13.5	0
+219	13.5	0
+220	13.5	0
+221	13.5	0
+222	13.5	0
+223	13.5	0
+224	13.5	0
+225	13.5	0
+226	13.5	0
+227	13.5	0
+228	13.5	0
+229	13.5	0
+230	13.5	0
+231	13.5	0
+232	13.5	0
+233	13.5	0
+234	13.5	0
+235	13.5	0
+236	13.5	0
+237	13.5	0
+238	13.5	0
+239	13.5	0
+240	13.5	0
+241	13.5	0
+242	13.5	0
+243	13.5	0
+244	13.5	0
+245	13.5	0
+246	13.5	0
+247	13.5	0
+248	13.5	0
+249	13.5	0
+250	13.5	0
+251	13.5	0
+252	13.5	0
+253	13.5	0
+254	13.5	0
+255	13.5	0
+256	13.5	0
+257	13.5	0
+258	13.5	0
+259	13.5	0
+260	13.5	0
+261	13.5	0
+262	13.5	0
+263	13.5	0
+264	13.5	0
+265	13.5	0
+266	13.5	0
+267	13.5	0
+268	13.5	0
+269	13.5	0
+270	13.5	0
+271	13.5	0
+272	13.5	0
+273	13.5	0
+274	13.5	0
+275	13.5	0
+276	13.5	0
+277	13.5	0
+278	13.5	0
+279	13.5	0
+280	13.5	0
+281	13.5	0
+282	13.5	0
+283	13.5	0
+284	13.5	0
+285	13.5	0
+286	13.5	0
+287	13.5	0
+288	13.5	0
+289	13.5	0
+290	13.5	0
+291	13.5	0
+292	13.5	0
+293	13.5	0
+294	13.5	0
+295	13.5	0
+296	13.5	0
+297	13.5	0
+298	13.5	0
+299	13.5	0
+300	13.5	0
+301	13.5	0
+302	13.5	0
+303	13.5	0
+304	13.5	0
+305	13.5	0
+306	13.5	0
+307	13.5	0
+308	13.5	0
+309	13.5	0
+310	13.5	0
+311	13.5	0
+312	13.5	0
+313	13.5	0
+314	13.5	0
+315	13.5	0
+316	13.5	0
+317	13.5	0
+318	13.5	0
+319	13.5	0
+320	13.5	0
+321	13.5	0
+322	13.5	0
+323	13.5	0
+324	13.5	0
+325	13.5	0
+326	13.5	0
+327	13.5	0
+328	13.5	0
+329	13.5	0
+330	13.5	0
+331	13.5	0
+332	13.5	0
+333	13.5	0
+334	13.5	0
+335	13.5	0
+336	13.5	0
+337	13.5	0
+338	13.5	0
+339	13.5	0
+340	13.5	0
+341	13.5	0
+342	13.5	0
+343	13.5	0
+344	13.5	0
+345	13.5	0
+346	13.5	0
+347	13.5	0
+348	13.5	0
+349	13.5	0
+350	13.5	0
+351	13.5	0
+352	13.5	0
+353	13.5	0
+354	13.5	0
+355	13.5	0
+356	13.5	0
+357	13.5	0
+358	13.5	0
+359	13.5	0
+360	13.5	0
+0	14	0
+1	14	0
+2	14	0
+3	14	0
+4	14	0
+5	14	0
+6	14	0
+7	14	0
+8	14	0
+9	14	0
+10	14	0
+11	14	0
+12	14	0
+13	14	0
+14	14	0
+15	14	0
+16	14	0
+17	14	0
+18	14	0
+19	14	0
+20	14	0
+21	14	0
+22	14	0
+23	14	0
+24	14	0
+25	14	0
+26	14	0
+27	14	0
+28	14	0
+29	14	0
+30	14	0
+31	14	0
+32	14	0
+33	14	0
+34	14	0
+35	14	0
+36	14	0
+37	14	0
+38	14	0
+39	14	0
+40	14	0
+41	14	0
+42	14	0
+43	14	0
+44	14	0
+45	14	0
+46	14	0
+47	14	0
+48	14	0
+49	14	0
+50	14	0
+51	14	0
+52	14	0
+53	14	0
+54	14	0
+55	14	0
+56	14	0
+57	14	0
+58	14	0
+59	14	0
+60	14	0
+61	14	0
+62	14	0
+63	14	0
+64	14	0
+65	14	0
+66	14	0
+67	14	0
+68	14	0
+69	14	0
+70	14	0
+71	14	0
+72	14	0
+73	14	0
+74	14	0
+75	14	0
+76	14	0
+77	14	0
+78	14	0
+79	14	0
+80	14	0
+81	14	0
+82	14	0
+83	14	0
+84	14	0
+85	14	0
+86	14	0
+87	14	0
+88	14	0
+89	14	0
+90	14	0
+91	14	0
+92	14	0
+93	14	0
+94	14	0
+95	14	0
+96	14	0
+97	14	0
+98	14	0
+99	14	0
+100	14	0
+101	14	0
+102	14	0
+103	14	0
+104	14	0
+105	14	0
+106	14	0
+107	14	0
+108	14	0
+109	14	0
+110	14	0
+111	14	0
+112	14	0
+113	14	0
+114	14	0
+115	14	0
+116	14	0
+117	14	0
+118	14	0
+119	14	0
+120	14	0
+121	14	0
+122	14	0
+123	14	0
+124	14	0
+125	14	0
+126	14	0
+127	14	0
+128	14	0
+129	14	0
+130	14	0
+131	14	0
+132	14	0
+133	14	0
+134	14	0
+135	14	0
+136	14	0
+137	14	0
+138	14	0
+139	14	0
+140	14	0
+141	14	0
+142	14	0
+143	14	0
+144	14	0
+145	14	0
+146	14	0
+147	14	0
+148	14	0
+149	14	0
+150	14	0
+151	14	0
+152	14	0
+153	14	0
+154	14	0
+155	14	0
+156	14	0
+157	14	0
+158	14	0
+159	14	0
+160	14	0
+161	14	0
+162	14	0
+163	14	0
+164	14	0
+165	14	0
+166	14	0
+167	14	0
+168	14	0
+169	14	0
+170	14	0
+171	14	0
+172	14	0
+173	14	0
+174	14	0
+175	14	0
+176	14	0
+177	14	0
+178	14	0
+179	14	0
+180	14	0
+181	14	0
+182	14	0
+183	14	0
+184	14	0
+185	14	0
+186	14	0
+187	14	0
+188	14	0
+189	14	0
+190	14	0
+191	14	0
+192	14	0
+193	14	0
+194	14	0
+195	14	0
+196	14	0
+197	14	0
+198	14	0
+199	14	0
+200	14	0
+201	14	0
+202	14	0
+203	14	0
+204	14	0
+205	14	0
+206	14	0
+207	14	0
+208	14	0
+209	14	0
+210	14	0
+211	14	0
+212	14	0
+213	14	0
+214	14	0
+215	14	0
+216	14	0
+217	14	0
+218	14	0
+219	14	0
+220	14	0
+221	14	0
+222	14	0
+223	14	0
+224	14	0
+225	14	0
+226	14	0
+227	14	0
+228	14	0
+229	14	0
+230	14	0
+231	14	0
+232	14	0
+233	14	0
+234	14	0
+235	14	0
+236	14	0
+237	14	0
+238	14	0
+239	14	0
+240	14	0
+241	14	0
+242	14	0
+243	14	0
+244	14	0
+245	14	0
+246	14	0
+247	14	0
+248	14	0
+249	14	0
+250	14	0
+251	14	0
+252	14	0
+253	14	0
+254	14	0
+255	14	0
+256	14	0
+257	14	0
+258	14	0
+259	14	0
+260	14	0
+261	14	0
+262	14	0
+263	14	0
+264	14	0
+265	14	0
+266	14	0
+267	14	0
+268	14	0
+269	14	0
+270	14	0
+271	14	0
+272	14	0
+273	14	0
+274	14	0
+275	14	0
+276	14	0
+277	14	0
+278	14	0
+279	14	0
+280	14	0
+281	14	0
+282	14	0
+283	14	0
+284	14	0
+285	14	0
+286	14	0
+287	14	0
+288	14	0
+289	14	0
+290	14	0
+291	14	0
+292	14	0
+293	14	0
+294	14	0
+295	14	0
+296	14	0
+297	14	0
+298	14	0
+299	14	0
+300	14	0
+301	14	0
+302	14	0
+303	14	0
+304	14	0
+305	14	0
+306	14	0
+307	14	0
+308	14	0
+309	14	0
+310	14	0
+311	14	0
+312	14	0
+313	14	0
+314	14	0
+315	14	0
+316	14	0
+317	14	0
+318	14	0
+319	14	0
+320	14	0
+321	14	0
+322	14	0
+323	14	0
+324	14	0
+325	14	0
+326	14	0
+327	14	0
+328	14	0
+329	14	0
+330	14	0
+331	14	0
+332	14	0
+333	14	0
+334	14	0
+335	14	0
+336	14	0
+337	14	0
+338	14	0
+339	14	0
+340	14	0
+341	14	0
+342	14	0
+343	14	0
+344	14	0
+345	14	0
+346	14	0
+347	14	0
+348	14	0
+349	14	0
+350	14	0
+351	14	0
+352	14	0
+353	14	0
+354	14	0
+355	14	0
+356	14	0
+357	14	0
+358	14	0
+359	14	0
+360	14	0
+0	14.5	0
+1	14.5	0
+2	14.5	0
+3	14.5	0
+4	14.5	0
+5	14.5	0
+6	14.5	0
+7	14.5	0
+8	14.5	0
+9	14.5	0
+10	14.5	0
+11	14.5	0
+12	14.5	0
+13	14.5	0
+14	14.5	0
+15	14.5	0
+16	14.5	0
+17	14.5	0
+18	14.5	0
+19	14.5	0
+20	14.5	0
+21	14.5	0
+22	14.5	0
+23	14.5	0
+24	14.5	0
+25	14.5	0
+26	14.5	0
+27	14.5	0
+28	14.5	0
+29	14.5	0
+30	14.5	0
+31	14.5	0
+32	14.5	0
+33	14.5	0
+34	14.5	0
+35	14.5	0
+36	14.5	0
+37	14.5	0
+38	14.5	0
+39	14.5	0
+40	14.5	0
+41	14.5	0
+42	14.5	0
+43	14.5	0
+44	14.5	0
+45	14.5	0
+46	14.5	0
+47	14.5	0
+48	14.5	0
+49	14.5	0
+50	14.5	0
+51	14.5	0
+52	14.5	0
+53	14.5	0
+54	14.5	0
+55	14.5	0
+56	14.5	0
+57	14.5	0
+58	14.5	0
+59	14.5	0
+60	14.5	0
+61	14.5	0
+62	14.5	0
+63	14.5	0
+64	14.5	0
+65	14.5	0
+66	14.5	0
+67	14.5	0
+68	14.5	0
+69	14.5	0
+70	14.5	0
+71	14.5	0
+72	14.5	0
+73	14.5	0
+74	14.5	0
+75	14.5	0
+76	14.5	0
+77	14.5	0
+78	14.5	0
+79	14.5	0
+80	14.5	0
+81	14.5	0
+82	14.5	0
+83	14.5	0
+84	14.5	0
+85	14.5	0
+86	14.5	0
+87	14.5	0
+88	14.5	0
+89	14.5	0
+90	14.5	0
+91	14.5	0
+92	14.5	0
+93	14.5	0
+94	14.5	0
+95	14.5	0
+96	14.5	0
+97	14.5	0
+98	14.5	0
+99	14.5	0
+100	14.5	0
+101	14.5	0
+102	14.5	0
+103	14.5	0
+104	14.5	0
+105	14.5	0
+106	14.5	0
+107	14.5	0
+108	14.5	0
+109	14.5	0
+110	14.5	0
+111	14.5	0
+112	14.5	0
+113	14.5	0
+114	14.5	0
+115	14.5	0
+116	14.5	0
+117	14.5	0
+118	14.5	0
+119	14.5	0
+120	14.5	0
+121	14.5	0
+122	14.5	0
+123	14.5	0
+124	14.5	0
+125	14.5	0
+126	14.5	0
+127	14.5	0
+128	14.5	0
+129	14.5	0
+130	14.5	0
+131	14.5	0
+132	14.5	0
+133	14.5	0
+134	14.5	0
+135	14.5	0
+136	14.5	0
+137	14.5	0
+138	14.5	0
+139	14.5	0
+140	14.5	0
+141	14.5	0
+142	14.5	0
+143	14.5	0
+144	14.5	0
+145	14.5	0
+146	14.5	0
+147	14.5	0
+148	14.5	0
+149	14.5	0
+150	14.5	0
+151	14.5	0
+152	14.5	0
+153	14.5	0
+154	14.5	0
+155	14.5	0
+156	14.5	0
+157	14.5	0
+158	14.5	0
+159	14.5	0
+160	14.5	0
+161	14.5	0
+162	14.5	0
+163	14.5	0
+164	14.5	0
+165	14.5	0
+166	14.5	0
+167	14.5	0
+168	14.5	0
+169	14.5	0
+170	14.5	0
+171	14.5	0
+172	14.5	0
+173	14.5	0
+174	14.5	0
+175	14.5	0
+176	14.5	0
+177	14.5	0
+178	14.5	0
+179	14.5	0
+180	14.5	0
+181	14.5	0
+182	14.5	0
+183	14.5	0
+184	14.5	0
+185	14.5	0
+186	14.5	0
+187	14.5	0
+188	14.5	0
+189	14.5	0
+190	14.5	0
+191	14.5	0
+192	14.5	0
+193	14.5	0
+194	14.5	0
+195	14.5	0
+196	14.5	0
+197	14.5	0
+198	14.5	0
+199	14.5	0
+200	14.5	0
+201	14.5	0
+202	14.5	0
+203	14.5	0
+204	14.5	0
+205	14.5	0
+206	14.5	0
+207	14.5	0
+208	14.5	0
+209	14.5	0
+210	14.5	0
+211	14.5	0
+212	14.5	0
+213	14.5	0
+214	14.5	0
+215	14.5	0
+216	14.5	0
+217	14.5	0
+218	14.5	0
+219	14.5	0
+220	14.5	0
+221	14.5	0
+222	14.5	0
+223	14.5	0
+224	14.5	0
+225	14.5	0
+226	14.5	0
+227	14.5	0
+228	14.5	0
+229	14.5	0
+230	14.5	0
+231	14.5	0
+232	14.5	0
+233	14.5	0
+234	14.5	0
+235	14.5	0
+236	14.5	0
+237	14.5	0
+238	14.5	0
+239	14.5	0
+240	14.5	0
+241	14.5	0
+242	14.5	0
+243	14.5	0
+244	14.5	0
+245	14.5	0
+246	14.5	0
+247	14.5	0
+248	14.5	0
+249	14.5	0
+250	14.5	0
+251	14.5	0
+252	14.5	0
+253	14.5	0
+254	14.5	0
+255	14.5	0
+256	14.5	0
+257	14.5	0
+258	14.5	0
+259	14.5	0
+260	14.5	0
+261	14.5	0
+262	14.5	0
+263	14.5	0
+264	14.5	0
+265	14.5	0
+266	14.5	0
+267	14.5	0
+268	14.5	0
+269	14.5	0
+270	14.5	0
+271	14.5	0
+272	14.5	0
+273	14.5	0
+274	14.5	0
+275	14.5	0
+276	14.5	0
+277	14.5	0
+278	14.5	0
+279	14.5	0
+280	14.5	0
+281	14.5	0
+282	14.5	0
+283	14.5	0
+284	14.5	0
+285	14.5	0
+286	14.5	0
+287	14.5	0
+288	14.5	0
+289	14.5	0
+290	14.5	0
+291	14.5	0
+292	14.5	0
+293	14.5	0
+294	14.5	0
+295	14.5	0
+296	14.5	0
+297	14.5	0
+298	14.5	0
+299	14.5	0
+300	14.5	0
+301	14.5	0
+302	14.5	0
+303	14.5	0
+304	14.5	0
+305	14.5	0
+306	14.5	0
+307	14.5	0
+308	14.5	0
+309	14.5	0
+310	14.5	0
+311	14.5	0
+312	14.5	0
+313	14.5	0
+314	14.5	0
+315	14.5	0
+316	14.5	0
+317	14.5	0
+318	14.5	0
+319	14.5	0
+320	14.5	0
+321	14.5	0
+322	14.5	0
+323	14.5	0
+324	14.5	0
+325	14.5	0
+326	14.5	0
+327	14.5	0
+328	14.5	0
+329	14.5	0
+330	14.5	0
+331	14.5	0
+332	14.5	0
+333	14.5	0
+334	14.5	0
+335	14.5	0
+336	14.5	0
+337	14.5	0
+338	14.5	0
+339	14.5	0
+340	14.5	0
+341	14.5	0
+342	14.5	0
+343	14.5	0
+344	14.5	0
+345	14.5	0
+346	14.5	0
+347	14.5	0
+348	14.5	0
+349	14.5	0
+350	14.5	0
+351	14.5	0
+352	14.5	0
+353	14.5	0
+354	14.5	0
+355	14.5	0
+356	14.5	0
+357	14.5	0
+358	14.5	0
+359	14.5	0
+360	14.5	0
+0	15	0
+1	15	0
+2	15	0
+3	15	0
+4	15	0
+5	15	0
+6	15	0
+7	15	0
+8	15	0
+9	15	0
+10	15	0
+11	15	0
+12	15	0
+13	15	0
+14	15	0
+15	15	0
+16	15	0
+17	15	0
+18	15	0
+19	15	0
+20	15	0
+21	15	0
+22	15	0
+23	15	0
+24	15	0
+25	15	0
+26	15	0
+27	15	0
+28	15	0
+29	15	0
+30	15	0
+31	15	0
+32	15	0
+33	15	0
+34	15	0
+35	15	0
+36	15	0
+37	15	0
+38	15	0
+39	15	0
+40	15	0
+41	15	0
+42	15	0
+43	15	0
+44	15	0
+45	15	0
+46	15	0
+47	15	0
+48	15	0
+49	15	0
+50	15	0
+51	15	0
+52	15	0
+53	15	0
+54	15	0
+55	15	0
+56	15	0
+57	15	0
+58	15	0
+59	15	0
+60	15	0
+61	15	0
+62	15	0
+63	15	0
+64	15	0
+65	15	0
+66	15	0
+67	15	0
+68	15	0
+69	15	0
+70	15	0
+71	15	0
+72	15	0
+73	15	0
+74	15	0
+75	15	0
+76	15	0
+77	15	0
+78	15	0
+79	15	0
+80	15	0
+81	15	0
+82	15	0
+83	15	0
+84	15	0
+85	15	0
+86	15	0
+87	15	0
+88	15	0
+89	15	0
+90	15	0
+91	15	0
+92	15	0
+93	15	0
+94	15	0
+95	15	0
+96	15	0
+97	15	0
+98	15	0
+99	15	0
+100	15	0
+101	15	0
+102	15	0
+103	15	0
+104	15	0
+105	15	0
+106	15	0
+107	15	0
+108	15	0
+109	15	0
+110	15	0
+111	15	0
+112	15	0
+113	15	0
+114	15	0
+115	15	0
+116	15	0
+117	15	0
+118	15	0
+119	15	0
+120	15	0
+121	15	0
+122	15	0
+123	15	0
+124	15	0
+125	15	0
+126	15	0
+127	15	0
+128	15	0
+129	15	0
+130	15	0
+131	15	0
+132	15	0
+133	15	0
+134	15	0
+135	15	0
+136	15	0
+137	15	0
+138	15	0
+139	15	0
+140	15	0
+141	15	0
+142	15	0
+143	15	0
+144	15	0
+145	15	0
+146	15	0
+147	15	0
+148	15	0
+149	15	0
+150	15	0
+151	15	0
+152	15	0
+153	15	0
+154	15	0
+155	15	0
+156	15	0
+157	15	0
+158	15	0
+159	15	0
+160	15	0
+161	15	0
+162	15	0
+163	15	0
+164	15	0
+165	15	0
+166	15	0
+167	15	0
+168	15	0
+169	15	0
+170	15	0
+171	15	0
+172	15	0
+173	15	0
+174	15	0
+175	15	0
+176	15	0
+177	15	0
+178	15	0
+179	15	0
+180	15	0
+181	15	0
+182	15	0
+183	15	0
+184	15	0
+185	15	0
+186	15	0
+187	15	0
+188	15	0
+189	15	0
+190	15	0
+191	15	0
+192	15	0
+193	15	0
+194	15	0
+195	15	0
+196	15	0
+197	15	0
+198	15	0
+199	15	0
+200	15	0
+201	15	0
+202	15	0
+203	15	0
+204	15	0
+205	15	0
+206	15	0
+207	15	0
+208	15	0
+209	15	0
+210	15	0
+211	15	0
+212	15	0
+213	15	0
+214	15	0
+215	15	0
+216	15	0
+217	15	0
+218	15	0
+219	15	0
+220	15	0
+221	15	0
+222	15	0
+223	15	0
+224	15	0
+225	15	0
+226	15	0
+227	15	0
+228	15	0
+229	15	0
+230	15	0
+231	15	0
+232	15	0
+233	15	0
+234	15	0
+235	15	0
+236	15	0
+237	15	0
+238	15	0
+239	15	0
+240	15	0
+241	15	0
+242	15	0
+243	15	0
+244	15	0
+245	15	0
+246	15	0
+247	15	0
+248	15	0
+249	15	0
+250	15	0
+251	15	0
+252	15	0
+253	15	0
+254	15	0
+255	15	0
+256	15	0
+257	15	0
+258	15	0
+259	15	0
+260	15	0
+261	15	0
+262	15	0
+263	15	0
+264	15	0
+265	15	0
+266	15	0
+267	15	0
+268	15	0
+269	15	0
+270	15	0
+271	15	0
+272	15	0
+273	15	0
+274	15	0
+275	15	0
+276	15	0
+277	15	0
+278	15	0
+279	15	0
+280	15	0
+281	15	0
+282	15	0
+283	15	0
+284	15	0
+285	15	0
+286	15	0
+287	15	0
+288	15	0
+289	15	0
+290	15	0
+291	15	0
+292	15	0
+293	15	0
+294	15	0
+295	15	0
+296	15	0
+297	15	0
+298	15	0
+299	15	0
+300	15	0
+301	15	0
+302	15	0
+303	15	0
+304	15	0
+305	15	0
+306	15	0
+307	15	0
+308	15	0
+309	15	0
+310	15	0
+311	15	0
+312	15	0
+313	15	0
+314	15	0
+315	15	0
+316	15	0
+317	15	0
+318	15	0
+319	15	0
+320	15	0
+321	15	0
+322	15	0
+323	15	0
+324	15	0
+325	15	0
+326	15	0
+327	15	0
+328	15	0
+329	15	0
+330	15	0
+331	15	0
+332	15	0
+333	15	0
+334	15	0
+335	15	0
+336	15	0
+337	15	0
+338	15	0
+339	15	0
+340	15	0
+341	15	0
+342	15	0
+343	15	0
+344	15	0
+345	15	0
+346	15	0
+347	15	0
+348	15	0
+349	15	0
+350	15	0
+351	15	0
+352	15	0
+353	15	0
+354	15	0
+355	15	0
+356	15	0
+357	15	0
+358	15	0
+359	15	0
+360	15	0
+0	15.5	0
+1	15.5	0
+2	15.5	0
+3	15.5	0
+4	15.5	0
+5	15.5	0
+6	15.5	0
+7	15.5	0
+8	15.5	0
+9	15.5	0
+10	15.5	0
+11	15.5	0
+12	15.5	0
+13	15.5	0
+14	15.5	0
+15	15.5	0
+16	15.5	0
+17	15.5	0
+18	15.5	0
+19	15.5	0
+20	15.5	0
+21	15.5	0
+22	15.5	0
+23	15.5	0
+24	15.5	0
+25	15.5	0
+26	15.5	0
+27	15.5	0
+28	15.5	0
+29	15.5	0
+30	15.5	0
+31	15.5	0
+32	15.5	0
+33	15.5	0
+34	15.5	0
+35	15.5	0
+36	15.5	0
+37	15.5	0
+38	15.5	0
+39	15.5	0
+40	15.5	0
+41	15.5	0
+42	15.5	0
+43	15.5	0
+44	15.5	0
+45	15.5	0
+46	15.5	0
+47	15.5	0
+48	15.5	0
+49	15.5	0
+50	15.5	0
+51	15.5	0
+52	15.5	0
+53	15.5	0
+54	15.5	0
+55	15.5	0
+56	15.5	0
+57	15.5	0
+58	15.5	0
+59	15.5	0
+60	15.5	0
+61	15.5	0
+62	15.5	0
+63	15.5	0
+64	15.5	0
+65	15.5	0
+66	15.5	0
+67	15.5	0
+68	15.5	0
+69	15.5	0
+70	15.5	0
+71	15.5	0
+72	15.5	0
+73	15.5	0
+74	15.5	0
+75	15.5	0
+76	15.5	0
+77	15.5	0
+78	15.5	0
+79	15.5	0
+80	15.5	0
+81	15.5	0
+82	15.5	0
+83	15.5	0
+84	15.5	0
+85	15.5	0
+86	15.5	0
+87	15.5	0
+88	15.5	0
+89	15.5	0
+90	15.5	0
+91	15.5	0
+92	15.5	0
+93	15.5	0
+94	15.5	0
+95	15.5	0
+96	15.5	0
+97	15.5	0
+98	15.5	0
+99	15.5	0
+100	15.5	0
+101	15.5	0
+102	15.5	0
+103	15.5	0
+104	15.5	0
+105	15.5	0
+106	15.5	0
+107	15.5	0
+108	15.5	0
+109	15.5	0
+110	15.5	0
+111	15.5	0
+112	15.5	0
+113	15.5	0
+114	15.5	0
+115	15.5	0
+116	15.5	0
+117	15.5	0
+118	15.5	0
+119	15.5	0
+120	15.5	0
+121	15.5	0
+122	15.5	0
+123	15.5	0
+124	15.5	0
+125	15.5	0
+126	15.5	0
+127	15.5	0
+128	15.5	0
+129	15.5	0
+130	15.5	0
+131	15.5	0
+132	15.5	0
+133	15.5	0
+134	15.5	0
+135	15.5	0
+136	15.5	0
+137	15.5	0
+138	15.5	0
+139	15.5	0
+140	15.5	0
+141	15.5	0
+142	15.5	0
+143	15.5	0
+144	15.5	0
+145	15.5	0
+146	15.5	0
+147	15.5	0
+148	15.5	0
+149	15.5	0
+150	15.5	0
+151	15.5	0
+152	15.5	0
+153	15.5	0
+154	15.5	0
+155	15.5	0
+156	15.5	0
+157	15.5	0
+158	15.5	0
+159	15.5	0
+160	15.5	0
+161	15.5	0
+162	15.5	0
+163	15.5	0
+164	15.5	0
+165	15.5	0
+166	15.5	0
+167	15.5	0
+168	15.5	0
+169	15.5	0
+170	15.5	0
+171	15.5	0
+172	15.5	0
+173	15.5	0
+174	15.5	0
+175	15.5	0
+176	15.5	0
+177	15.5	0
+178	15.5	0
+179	15.5	0
+180	15.5	0
+181	15.5	0
+182	15.5	0
+183	15.5	0
+184	15.5	0
+185	15.5	0
+186	15.5	0
+187	15.5	0
+188	15.5	0
+189	15.5	0
+190	15.5	0
+191	15.5	0
+192	15.5	0
+193	15.5	0
+194	15.5	0
+195	15.5	0
+196	15.5	0
+197	15.5	0
+198	15.5	0
+199	15.5	0
+200	15.5	0
+201	15.5	0
+202	15.5	0
+203	15.5	0
+204	15.5	0
+205	15.5	0
+206	15.5	0
+207	15.5	0
+208	15.5	0
+209	15.5	0
+210	15.5	0
+211	15.5	0
+212	15.5	0
+213	15.5	0
+214	15.5	0
+215	15.5	0
+216	15.5	0
+217	15.5	0
+218	15.5	0
+219	15.5	0
+220	15.5	0
+221	15.5	0
+222	15.5	0
+223	15.5	0
+224	15.5	0
+225	15.5	0
+226	15.5	0
+227	15.5	0
+228	15.5	0
+229	15.5	0
+230	15.5	0
+231	15.5	0
+232	15.5	0
+233	15.5	0
+234	15.5	0
+235	15.5	0
+236	15.5	0
+237	15.5	0
+238	15.5	0
+239	15.5	0
+240	15.5	0
+241	15.5	0
+242	15.5	0
+243	15.5	0
+244	15.5	0
+245	15.5	0
+246	15.5	0
+247	15.5	0
+248	15.5	0
+249	15.5	0
+250	15.5	0
+251	15.5	0
+252	15.5	0
+253	15.5	0
+254	15.5	0
+255	15.5	0
+256	15.5	0
+257	15.5	0
+258	15.5	0
+259	15.5	0
+260	15.5	0
+261	15.5	0
+262	15.5	0
+263	15.5	0
+264	15.5	0
+265	15.5	0
+266	15.5	0
+267	15.5	0
+268	15.5	0
+269	15.5	0
+270	15.5	0
+271	15.5	0
+272	15.5	0
+273	15.5	0
+274	15.5	0
+275	15.5	0
+276	15.5	0
+277	15.5	0
+278	15.5	0
+279	15.5	0
+280	15.5	0
+281	15.5	0
+282	15.5	0
+283	15.5	0
+284	15.5	0
+285	15.5	0
+286	15.5	0
+287	15.5	0
+288	15.5	0
+289	15.5	0
+290	15.5	0
+291	15.5	0
+292	15.5	0
+293	15.5	0
+294	15.5	0
+295	15.5	0
+296	15.5	0
+297	15.5	0
+298	15.5	0
+299	15.5	0
+300	15.5	0
+301	15.5	0
+302	15.5	0
+303	15.5	0
+304	15.5	0
+305	15.5	0
+306	15.5	0
+307	15.5	0
+308	15.5	0
+309	15.5	0
+310	15.5	0
+311	15.5	0
+312	15.5	0
+313	15.5	0
+314	15.5	0
+315	15.5	0
+316	15.5	0
+317	15.5	0
+318	15.5	0
+319	15.5	0
+320	15.5	0
+321	15.5	0
+322	15.5	0
+323	15.5	0
+324	15.5	0
+325	15.5	0
+326	15.5	0
+327	15.5	0
+328	15.5	0
+329	15.5	0
+330	15.5	0
+331	15.5	0
+332	15.5	0
+333	15.5	0
+334	15.5	0
+335	15.5	0
+336	15.5	0
+337	15.5	0
+338	15.5	0
+339	15.5	0
+340	15.5	0
+341	15.5	0
+342	15.5	0
+343	15.5	0
+344	15.5	0
+345	15.5	0
+346	15.5	0
+347	15.5	0
+348	15.5	0
+349	15.5	0
+350	15.5	0
+351	15.5	0
+352	15.5	0
+353	15.5	0
+354	15.5	0
+355	15.5	0
+356	15.5	0
+357	15.5	0
+358	15.5	0
+359	15.5	0
+360	15.5	0
+0	16	0
+1	16	0
+2	16	0
+3	16	0
+4	16	0
+5	16	0
+6	16	0
+7	16	0
+8	16	0
+9	16	0
+10	16	0
+11	16	0
+12	16	0
+13	16	0
+14	16	0
+15	16	0
+16	16	0
+17	16	0
+18	16	0
+19	16	0
+20	16	0
+21	16	0
+22	16	0
+23	16	0
+24	16	0
+25	16	0
+26	16	0
+27	16	0
+28	16	0
+29	16	0
+30	16	0
+31	16	0
+32	16	0
+33	16	0
+34	16	0
+35	16	0
+36	16	0
+37	16	0
+38	16	0
+39	16	0
+40	16	0
+41	16	0
+42	16	0
+43	16	0
+44	16	0
+45	16	0
+46	16	0
+47	16	0
+48	16	0
+49	16	0
+50	16	0
+51	16	0
+52	16	0
+53	16	0
+54	16	0
+55	16	0
+56	16	0
+57	16	0
+58	16	0
+59	16	0
+60	16	0
+61	16	0
+62	16	0
+63	16	0
+64	16	0
+65	16	0
+66	16	0
+67	16	0
+68	16	0
+69	16	0
+70	16	0
+71	16	0
+72	16	0
+73	16	0
+74	16	0
+75	16	0
+76	16	0
+77	16	0
+78	16	0
+79	16	0
+80	16	0
+81	16	0
+82	16	0
+83	16	0
+84	16	0
+85	16	0
+86	16	0
+87	16	0
+88	16	0
+89	16	0
+90	16	0
+91	16	0
+92	16	0
+93	16	0
+94	16	0
+95	16	0
+96	16	0
+97	16	0
+98	16	0
+99	16	0
+100	16	0
+101	16	0
+102	16	0
+103	16	0
+104	16	0
+105	16	0
+106	16	0
+107	16	0
+108	16	0
+109	16	0
+110	16	0
+111	16	0
+112	16	0
+113	16	0
+114	16	0
+115	16	0
+116	16	0
+117	16	0
+118	16	0
+119	16	0
+120	16	0
+121	16	0
+122	16	0
+123	16	0
+124	16	0
+125	16	0
+126	16	0
+127	16	0
+128	16	0
+129	16	0
+130	16	0
+131	16	0
+132	16	0
+133	16	0
+134	16	0
+135	16	0
+136	16	0
+137	16	0
+138	16	0
+139	16	0
+140	16	0
+141	16	0
+142	16	0
+143	16	0
+144	16	0
+145	16	0
+146	16	0
+147	16	0
+148	16	0
+149	16	0
+150	16	0
+151	16	0
+152	16	0
+153	16	0
+154	16	0
+155	16	0
+156	16	0
+157	16	0
+158	16	0
+159	16	0
+160	16	0
+161	16	0
+162	16	0
+163	16	0
+164	16	0
+165	16	0
+166	16	0
+167	16	0
+168	16	0
+169	16	0
+170	16	0
+171	16	0
+172	16	0
+173	16	0
+174	16	0
+175	16	0
+176	16	0
+177	16	0
+178	16	0
+179	16	0
+180	16	0
+181	16	0
+182	16	0
+183	16	0
+184	16	0
+185	16	0
+186	16	0
+187	16	0
+188	16	0
+189	16	0
+190	16	0
+191	16	0
+192	16	0
+193	16	0
+194	16	0
+195	16	0
+196	16	0
+197	16	0
+198	16	0
+199	16	0
+200	16	0
+201	16	0
+202	16	0
+203	16	0
+204	16	0
+205	16	0
+206	16	0
+207	16	0
+208	16	0
+209	16	0
+210	16	0
+211	16	0
+212	16	0
+213	16	0
+214	16	0
+215	16	0
+216	16	0
+217	16	0
+218	16	0
+219	16	0
+220	16	0
+221	16	0
+222	16	0
+223	16	0
+224	16	0
+225	16	0
+226	16	0
+227	16	0
+228	16	0
+229	16	0
+230	16	0
+231	16	0
+232	16	0
+233	16	0
+234	16	0
+235	16	0
+236	16	0
+237	16	0
+238	16	0
+239	16	0
+240	16	0
+241	16	0
+242	16	0
+243	16	0
+244	16	0
+245	16	0
+246	16	0
+247	16	0
+248	16	0
+249	16	0
+250	16	0
+251	16	0
+252	16	0
+253	16	0
+254	16	0
+255	16	0
+256	16	0
+257	16	0
+258	16	0
+259	16	0
+260	16	0
+261	16	0
+262	16	0
+263	16	0
+264	16	0
+265	16	0
+266	16	0
+267	16	0
+268	16	0
+269	16	0
+270	16	0
+271	16	0
+272	16	0
+273	16	0
+274	16	0
+275	16	0
+276	16	0
+277	16	0
+278	16	0
+279	16	0
+280	16	0
+281	16	0
+282	16	0
+283	16	0
+284	16	0
+285	16	0
+286	16	0
+287	16	0
+288	16	0
+289	16	0
+290	16	0
+291	16	0
+292	16	0
+293	16	0
+294	16	0
+295	16	0
+296	16	0
+297	16	0
+298	16	0
+299	16	0
+300	16	0
+301	16	0
+302	16	0
+303	16	0
+304	16	0
+305	16	0
+306	16	0
+307	16	0
+308	16	0
+309	16	0
+310	16	0
+311	16	0
+312	16	0
+313	16	0
+314	16	0
+315	16	0
+316	16	0
+317	16	0
+318	16	0
+319	16	0
+320	16	0
+321	16	0
+322	16	0
+323	16	0
+324	16	0
+325	16	0
+326	16	0
+327	16	0
+328	16	0
+329	16	0
+330	16	0
+331	16	0
+332	16	0
+333	16	0
+334	16	0
+335	16	0
+336	16	0
+337	16	0
+338	16	0
+339	16	0
+340	16	0
+341	16	0
+342	16	0
+343	16	0
+344	16	0
+345	16	0
+346	16	0
+347	16	0
+348	16	0
+349	16	0
+350	16	0
+351	16	0
+352	16	0
+353	16	0
+354	16	0
+355	16	0
+356	16	0
+357	16	0
+358	16	0
+359	16	0
+360	16	0
+0	16.5	0
+1	16.5	0
+2	16.5	0
+3	16.5	0
+4	16.5	0
+5	16.5	0
+6	16.5	0
+7	16.5	0
+8	16.5	0
+9	16.5	0
+10	16.5	0
+11	16.5	0
+12	16.5	0
+13	16.5	0
+14	16.5	0
+15	16.5	0
+16	16.5	0
+17	16.5	0
+18	16.5	0
+19	16.5	0
+20	16.5	0
+21	16.5	0
+22	16.5	0
+23	16.5	0
+24	16.5	0
+25	16.5	0
+26	16.5	0
+27	16.5	0
+28	16.5	0
+29	16.5	0
+30	16.5	0
+31	16.5	0
+32	16.5	0
+33	16.5	0
+34	16.5	0
+35	16.5	0
+36	16.5	0
+37	16.5	0
+38	16.5	0
+39	16.5	0
+40	16.5	0
+41	16.5	0
+42	16.5	0
+43	16.5	0
+44	16.5	0
+45	16.5	0
+46	16.5	0
+47	16.5	0
+48	16.5	0
+49	16.5	0
+50	16.5	0
+51	16.5	0
+52	16.5	0
+53	16.5	0
+54	16.5	0
+55	16.5	0
+56	16.5	0
+57	16.5	0
+58	16.5	0
+59	16.5	0
+60	16.5	0
+61	16.5	0
+62	16.5	0
+63	16.5	0
+64	16.5	0
+65	16.5	0
+66	16.5	0
+67	16.5	0
+68	16.5	0
+69	16.5	0
+70	16.5	0
+71	16.5	0
+72	16.5	0
+73	16.5	0
+74	16.5	0
+75	16.5	0
+76	16.5	0
+77	16.5	0
+78	16.5	0
+79	16.5	0
+80	16.5	0
+81	16.5	0
+82	16.5	0
+83	16.5	0
+84	16.5	0
+85	16.5	0
+86	16.5	0
+87	16.5	0
+88	16.5	0
+89	16.5	0
+90	16.5	0
+91	16.5	0
+92	16.5	0
+93	16.5	0
+94	16.5	0
+95	16.5	0
+96	16.5	0
+97	16.5	0
+98	16.5	0
+99	16.5	0
+100	16.5	0
+101	16.5	0
+102	16.5	0
+103	16.5	0
+104	16.5	0
+105	16.5	0
+106	16.5	0
+107	16.5	0
+108	16.5	0
+109	16.5	0
+110	16.5	0
+111	16.5	0
+112	16.5	0
+113	16.5	0
+114	16.5	0
+115	16.5	0
+116	16.5	0
+117	16.5	0
+118	16.5	0
+119	16.5	0
+120	16.5	0
+121	16.5	0
+122	16.5	0
+123	16.5	0
+124	16.5	0
+125	16.5	0
+126	16.5	0
+127	16.5	0
+128	16.5	0
+129	16.5	0
+130	16.5	0
+131	16.5	0
+132	16.5	0
+133	16.5	0
+134	16.5	0
+135	16.5	0
+136	16.5	0
+137	16.5	0
+138	16.5	0
+139	16.5	0
+140	16.5	0
+141	16.5	0
+142	16.5	0
+143	16.5	0
+144	16.5	0
+145	16.5	0
+146	16.5	0
+147	16.5	0
+148	16.5	0
+149	16.5	0
+150	16.5	0
+151	16.5	0
+152	16.5	0
+153	16.5	0
+154	16.5	0
+155	16.5	0
+156	16.5	0
+157	16.5	0
+158	16.5	0
+159	16.5	0
+160	16.5	0
+161	16.5	0
+162	16.5	0
+163	16.5	0
+164	16.5	0
+165	16.5	0
+166	16.5	0
+167	16.5	0
+168	16.5	0
+169	16.5	0
+170	16.5	0
+171	16.5	0
+172	16.5	0
+173	16.5	0
+174	16.5	0
+175	16.5	0
+176	16.5	0
+177	16.5	0
+178	16.5	0
+179	16.5	0
+180	16.5	0
+181	16.5	0
+182	16.5	0
+183	16.5	0
+184	16.5	0
+185	16.5	0
+186	16.5	0
+187	16.5	0
+188	16.5	0
+189	16.5	0
+190	16.5	0
+191	16.5	0
+192	16.5	0
+193	16.5	0
+194	16.5	0
+195	16.5	0
+196	16.5	0
+197	16.5	0
+198	16.5	0
+199	16.5	0
+200	16.5	0
+201	16.5	0
+202	16.5	0
+203	16.5	0
+204	16.5	0
+205	16.5	0
+206	16.5	0
+207	16.5	0
+208	16.5	0
+209	16.5	0
+210	16.5	0
+211	16.5	0
+212	16.5	0
+213	16.5	0
+214	16.5	0
+215	16.5	0
+216	16.5	0
+217	16.5	0
+218	16.5	0
+219	16.5	0
+220	16.5	0
+221	16.5	0
+222	16.5	0
+223	16.5	0
+224	16.5	0
+225	16.5	0
+226	16.5	0
+227	16.5	0
+228	16.5	0
+229	16.5	0
+230	16.5	0
+231	16.5	0
+232	16.5	0
+233	16.5	0
+234	16.5	0
+235	16.5	0
+236	16.5	0
+237	16.5	0
+238	16.5	0
+239	16.5	0
+240	16.5	0
+241	16.5	0
+242	16.5	0
+243	16.5	0
+244	16.5	0
+245	16.5	0
+246	16.5	0
+247	16.5	0
+248	16.5	0
+249	16.5	0
+250	16.5	0
+251	16.5	0
+252	16.5	0
+253	16.5	0
+254	16.5	0
+255	16.5	0
+256	16.5	0
+257	16.5	0
+258	16.5	0
+259	16.5	0
+260	16.5	0
+261	16.5	0
+262	16.5	0
+263	16.5	0
+264	16.5	0
+265	16.5	0
+266	16.5	0
+267	16.5	0
+268	16.5	0
+269	16.5	0
+270	16.5	0
+271	16.5	0
+272	16.5	0
+273	16.5	0
+274	16.5	0
+275	16.5	0
+276	16.5	0
+277	16.5	0
+278	16.5	0
+279	16.5	0
+280	16.5	0
+281	16.5	0
+282	16.5	0
+283	16.5	0
+284	16.5	0
+285	16.5	0
+286	16.5	0
+287	16.5	0
+288	16.5	0
+289	16.5	0
+290	16.5	0
+291	16.5	0
+292	16.5	0
+293	16.5	0
+294	16.5	0
+295	16.5	0
+296	16.5	0
+297	16.5	0
+298	16.5	0
+299	16.5	0
+300	16.5	0
+301	16.5	0
+302	16.5	0
+303	16.5	0
+304	16.5	0
+305	16.5	0
+306	16.5	0
+307	16.5	0
+308	16.5	0
+309	16.5	0
+310	16.5	0
+311	16.5	0
+312	16.5	0
+313	16.5	0
+314	16.5	0
+315	16.5	0
+316	16.5	0
+317	16.5	0
+318	16.5	0
+319	16.5	0
+320	16.5	0
+321	16.5	0
+322	16.5	0
+323	16.5	0
+324	16.5	0
+325	16.5	0
+326	16.5	0
+327	16.5	0
+328	16.5	0
+329	16.5	0
+330	16.5	0
+331	16.5	0
+332	16.5	0
+333	16.5	0
+334	16.5	0
+335	16.5	0
+336	16.5	0
+337	16.5	0
+338	16.5	0
+339	16.5	0
+340	16.5	0
+341	16.5	0
+342	16.5	0
+343	16.5	0
+344	16.5	0
+345	16.5	0
+346	16.5	0
+347	16.5	0
+348	16.5	0
+349	16.5	0
+350	16.5	0
+351	16.5	0
+352	16.5	0
+353	16.5	0
+354	16.5	0
+355	16.5	0
+356	16.5	0
+357	16.5	0
+358	16.5	0
+359	16.5	0
+360	16.5	0
+0	17	0
+1	17	0
+2	17	0
+3	17	0
+4	17	0
+5	17	0
+6	17	0
+7	17	0
+8	17	0
+9	17	0
+10	17	0
+11	17	0
+12	17	0
+13	17	0
+14	17	0
+15	17	0
+16	17	0
+17	17	0
+18	17	0
+19	17	0
+20	17	0
+21	17	0
+22	17	0
+23	17	0
+24	17	0
+25	17	0
+26	17	0
+27	17	0
+28	17	0
+29	17	0
+30	17	0
+31	17	0
+32	17	0
+33	17	0
+34	17	0
+35	17	0
+36	17	0
+37	17	0
+38	17	0
+39	17	0
+40	17	0
+41	17	0
+42	17	0
+43	17	0
+44	17	0
+45	17	0
+46	17	0
+47	17	0
+48	17	0
+49	17	0
+50	17	0
+51	17	0
+52	17	0
+53	17	0
+54	17	0
+55	17	0
+56	17	0
+57	17	0
+58	17	0
+59	17	0
+60	17	0
+61	17	0
+62	17	0
+63	17	0
+64	17	0
+65	17	0
+66	17	0
+67	17	0
+68	17	0
+69	17	0
+70	17	0
+71	17	0
+72	17	0
+73	17	0
+74	17	0
+75	17	0
+76	17	0
+77	17	0
+78	17	0
+79	17	0
+80	17	0
+81	17	0
+82	17	0
+83	17	0
+84	17	0
+85	17	0
+86	17	0
+87	17	0
+88	17	0
+89	17	0
+90	17	0
+91	17	0
+92	17	0
+93	17	0
+94	17	0
+95	17	0
+96	17	0
+97	17	0
+98	17	0
+99	17	0
+100	17	0
+101	17	0
+102	17	0
+103	17	0
+104	17	0
+105	17	0
+106	17	0
+107	17	0
+108	17	0
+109	17	0
+110	17	0
+111	17	0
+112	17	0
+113	17	0
+114	17	0
+115	17	0
+116	17	0
+117	17	0
+118	17	0
+119	17	0
+120	17	0
+121	17	0
+122	17	0
+123	17	0
+124	17	0
+125	17	0
+126	17	0
+127	17	0
+128	17	0
+129	17	0
+130	17	0
+131	17	0
+132	17	0
+133	17	0
+134	17	0
+135	17	0
+136	17	0
+137	17	0
+138	17	0
+139	17	0
+140	17	0
+141	17	0
+142	17	0
+143	17	0
+144	17	0
+145	17	0
+146	17	0
+147	17	0
+148	17	0
+149	17	0
+150	17	0
+151	17	0
+152	17	0
+153	17	0
+154	17	0
+155	17	0
+156	17	0
+157	17	0
+158	17	0
+159	17	0
+160	17	0
+161	17	0
+162	17	0
+163	17	0
+164	17	0
+165	17	0
+166	17	0
+167	17	0
+168	17	0
+169	17	0
+170	17	0
+171	17	0
+172	17	0
+173	17	0
+174	17	0
+175	17	0
+176	17	0
+177	17	0
+178	17	0
+179	17	0
+180	17	0
+181	17	0
+182	17	0
+183	17	0
+184	17	0
+185	17	0
+186	17	0
+187	17	0
+188	17	0
+189	17	0
+190	17	0
+191	17	0
+192	17	0
+193	17	0
+194	17	0
+195	17	0
+196	17	0
+197	17	0
+198	17	0
+199	17	0
+200	17	0
+201	17	0
+202	17	0
+203	17	0
+204	17	0
+205	17	0
+206	17	0
+207	17	0
+208	17	0
+209	17	0
+210	17	0
+211	17	0
+212	17	0
+213	17	0
+214	17	0
+215	17	0
+216	17	0
+217	17	0
+218	17	0
+219	17	0
+220	17	0
+221	17	0
+222	17	0
+223	17	0
+224	17	0
+225	17	0
+226	17	0
+227	17	0
+228	17	0
+229	17	0
+230	17	0
+231	17	0
+232	17	0
+233	17	0
+234	17	0
+235	17	0
+236	17	0
+237	17	0
+238	17	0
+239	17	0
+240	17	0
+241	17	0
+242	17	0
+243	17	0
+244	17	0
+245	17	0
+246	17	0
+247	17	0
+248	17	0
+249	17	0
+250	17	0
+251	17	0
+252	17	0
+253	17	0
+254	17	0
+255	17	0
+256	17	0
+257	17	0
+258	17	0
+259	17	0
+260	17	0
+261	17	0
+262	17	0
+263	17	0
+264	17	0
+265	17	0
+266	17	0
+267	17	0
+268	17	0
+269	17	0
+270	17	0
+271	17	0
+272	17	0
+273	17	0
+274	17	0
+275	17	0
+276	17	0
+277	17	0
+278	17	0
+279	17	0
+280	17	0
+281	17	0
+282	17	0
+283	17	0
+284	17	0
+285	17	0
+286	17	0
+287	17	0
+288	17	0
+289	17	0
+290	17	0
+291	17	0
+292	17	0
+293	17	0
+294	17	0
+295	17	0
+296	17	0
+297	17	0
+298	17	0
+299	17	0
+300	17	0
+301	17	0
+302	17	0
+303	17	0
+304	17	0
+305	17	0
+306	17	0
+307	17	0
+308	17	0
+309	17	0
+310	17	0
+311	17	0
+312	17	0
+313	17	0
+314	17	0
+315	17	0
+316	17	0
+317	17	0
+318	17	0
+319	17	0
+320	17	0
+321	17	0
+322	17	0
+323	17	0
+324	17	0
+325	17	0
+326	17	0
+327	17	0
+328	17	0
+329	17	0
+330	17	0
+331	17	0
+332	17	0
+333	17	0
+334	17	0
+335	17	0
+336	17	0
+337	17	0
+338	17	0
+339	17	0
+340	17	0
+341	17	0
+342	17	0
+343	17	0
+344	17	0
+345	17	0
+346	17	0
+347	17	0
+348	17	0
+349	17	0
+350	17	0
+351	17	0
+352	17	0
+353	17	0
+354	17	0
+355	17	0
+356	17	0
+357	17	0
+358	17	0
+359	17	0
+360	17	0
+0	17.5	0
+1	17.5	0
+2	17.5	0
+3	17.5	0
+4	17.5	0
+5	17.5	0
+6	17.5	0
+7	17.5	0
+8	17.5	0
+9	17.5	0
+10	17.5	0
+11	17.5	0
+12	17.5	0
+13	17.5	0
+14	17.5	0
+15	17.5	0
+16	17.5	0
+17	17.5	0
+18	17.5	0
+19	17.5	0
+20	17.5	0
+21	17.5	0
+22	17.5	0
+23	17.5	0
+24	17.5	0
+25	17.5	0
+26	17.5	0
+27	17.5	0
+28	17.5	0
+29	17.5	0
+30	17.5	0
+31	17.5	0
+32	17.5	0
+33	17.5	0
+34	17.5	0
+35	17.5	0
+36	17.5	0
+37	17.5	0
+38	17.5	0
+39	17.5	0
+40	17.5	0
+41	17.5	0
+42	17.5	0
+43	17.5	0
+44	17.5	0
+45	17.5	0
+46	17.5	0
+47	17.5	0
+48	17.5	0
+49	17.5	0
+50	17.5	0
+51	17.5	0
+52	17.5	0
+53	17.5	0
+54	17.5	0
+55	17.5	0
+56	17.5	0
+57	17.5	0
+58	17.5	0
+59	17.5	0
+60	17.5	0
+61	17.5	0
+62	17.5	0
+63	17.5	0
+64	17.5	0
+65	17.5	0
+66	17.5	0
+67	17.5	0
+68	17.5	0
+69	17.5	0
+70	17.5	0
+71	17.5	0
+72	17.5	0
+73	17.5	0
+74	17.5	0
+75	17.5	0
+76	17.5	0
+77	17.5	0
+78	17.5	0
+79	17.5	0
+80	17.5	0
+81	17.5	0
+82	17.5	0
+83	17.5	0
+84	17.5	0
+85	17.5	0
+86	17.5	0
+87	17.5	0
+88	17.5	0
+89	17.5	0
+90	17.5	0
+91	17.5	0
+92	17.5	0
+93	17.5	0
+94	17.5	0
+95	17.5	0
+96	17.5	0
+97	17.5	0
+98	17.5	0
+99	17.5	0
+100	17.5	0
+101	17.5	0
+102	17.5	0
+103	17.5	0
+104	17.5	0
+105	17.5	0
+106	17.5	0
+107	17.5	0
+108	17.5	0
+109	17.5	0
+110	17.5	0
+111	17.5	0
+112	17.5	0
+113	17.5	0
+114	17.5	0
+115	17.5	0
+116	17.5	0
+117	17.5	0
+118	17.5	0
+119	17.5	0
+120	17.5	0
+121	17.5	0
+122	17.5	0
+123	17.5	0
+124	17.5	0
+125	17.5	0
+126	17.5	0
+127	17.5	0
+128	17.5	0
+129	17.5	0
+130	17.5	0
+131	17.5	0
+132	17.5	0
+133	17.5	0
+134	17.5	0
+135	17.5	0
+136	17.5	0
+137	17.5	0
+138	17.5	0
+139	17.5	0
+140	17.5	0
+141	17.5	0
+142	17.5	0
+143	17.5	0
+144	17.5	0
+145	17.5	0
+146	17.5	0
+147	17.5	0
+148	17.5	0
+149	17.5	0
+150	17.5	0
+151	17.5	0
+152	17.5	0
+153	17.5	0
+154	17.5	0
+155	17.5	0
+156	17.5	0
+157	17.5	0
+158	17.5	0
+159	17.5	0
+160	17.5	0
+161	17.5	0
+162	17.5	0
+163	17.5	0
+164	17.5	0
+165	17.5	0
+166	17.5	0
+167	17.5	0
+168	17.5	0
+169	17.5	0
+170	17.5	0
+171	17.5	0
+172	17.5	0
+173	17.5	0
+174	17.5	0
+175	17.5	0
+176	17.5	0
+177	17.5	0
+178	17.5	0
+179	17.5	0
+180	17.5	0
+181	17.5	0
+182	17.5	0
+183	17.5	0
+184	17.5	0
+185	17.5	0
+186	17.5	0
+187	17.5	0
+188	17.5	0
+189	17.5	0
+190	17.5	0
+191	17.5	0
+192	17.5	0
+193	17.5	0
+194	17.5	0
+195	17.5	0
+196	17.5	0
+197	17.5	0
+198	17.5	0
+199	17.5	0
+200	17.5	0
+201	17.5	0
+202	17.5	0
+203	17.5	0
+204	17.5	0
+205	17.5	0
+206	17.5	0
+207	17.5	0
+208	17.5	0
+209	17.5	0
+210	17.5	0
+211	17.5	0
+212	17.5	0
+213	17.5	0
+214	17.5	0
+215	17.5	0
+216	17.5	0
+217	17.5	0
+218	17.5	0
+219	17.5	0
+220	17.5	0
+221	17.5	0
+222	17.5	0
+223	17.5	0
+224	17.5	0
+225	17.5	0
+226	17.5	0
+227	17.5	0
+228	17.5	0
+229	17.5	0
+230	17.5	0
+231	17.5	0
+232	17.5	0
+233	17.5	0
+234	17.5	0
+235	17.5	0
+236	17.5	0
+237	17.5	0
+238	17.5	0
+239	17.5	0
+240	17.5	0
+241	17.5	0
+242	17.5	0
+243	17.5	0
+244	17.5	0
+245	17.5	0
+246	17.5	0
+247	17.5	0
+248	17.5	0
+249	17.5	0
+250	17.5	0
+251	17.5	0
+252	17.5	0
+253	17.5	0
+254	17.5	0
+255	17.5	0
+256	17.5	0
+257	17.5	0
+258	17.5	0
+259	17.5	0
+260	17.5	0
+261	17.5	0
+262	17.5	0
+263	17.5	0
+264	17.5	0
+265	17.5	0
+266	17.5	0
+267	17.5	0
+268	17.5	0
+269	17.5	0
+270	17.5	0
+271	17.5	0
+272	17.5	0
+273	17.5	0
+274	17.5	0
+275	17.5	0
+276	17.5	0
+277	17.5	0
+278	17.5	0
+279	17.5	0
+280	17.5	0
+281	17.5	0
+282	17.5	0
+283	17.5	0
+284	17.5	0
+285	17.5	0
+286	17.5	0
+287	17.5	0
+288	17.5	0
+289	17.5	0
+290	17.5	0
+291	17.5	0
+292	17.5	0
+293	17.5	0
+294	17.5	0
+295	17.5	0
+296	17.5	0
+297	17.5	0
+298	17.5	0
+299	17.5	0
+300	17.5	0
+301	17.5	0
+302	17.5	0
+303	17.5	0
+304	17.5	0
+305	17.5	0
+306	17.5	0
+307	17.5	0
+308	17.5	0
+309	17.5	0
+310	17.5	0
+311	17.5	0
+312	17.5	0
+313	17.5	0
+314	17.5	0
+315	17.5	0
+316	17.5	0
+317	17.5	0
+318	17.5	0
+319	17.5	0
+320	17.5	0
+321	17.5	0
+322	17.5	0
+323	17.5	0
+324	17.5	0
+325	17.5	0
+326	17.5	0
+327	17.5	0
+328	17.5	0
+329	17.5	0
+330	17.5	0
+331	17.5	0
+332	17.5	0
+333	17.5	0
+334	17.5	0
+335	17.5	0
+336	17.5	0
+337	17.5	0
+338	17.5	0
+339	17.5	0
+340	17.5	0
+341	17.5	0
+342	17.5	0
+343	17.5	0
+344	17.5	0
+345	17.5	0
+346	17.5	0
+347	17.5	0
+348	17.5	0
+349	17.5	0
+350	17.5	0
+351	17.5	0
+352	17.5	0
+353	17.5	0
+354	17.5	0
+355	17.5	0
+356	17.5	0
+357	17.5	0
+358	17.5	0
+359	17.5	0
+360	17.5	0
+0	18	0
+1	18	0
+2	18	0
+3	18	0
+4	18	0
+5	18	0
+6	18	0
+7	18	0
+8	18	0
+9	18	0
+10	18	0
+11	18	0
+12	18	0
+13	18	0
+14	18	0
+15	18	0
+16	18	0
+17	18	0
+18	18	0
+19	18	0
+20	18	0
+21	18	0
+22	18	0
+23	18	0
+24	18	0
+25	18	0
+26	18	0
+27	18	0
+28	18	0
+29	18	0
+30	18	0
+31	18	0
+32	18	0
+33	18	0
+34	18	0
+35	18	0
+36	18	0
+37	18	0
+38	18	0
+39	18	0
+40	18	0
+41	18	0
+42	18	0
+43	18	0
+44	18	0
+45	18	0
+46	18	0
+47	18	0
+48	18	0
+49	18	0
+50	18	0
+51	18	0
+52	18	0
+53	18	0
+54	18	0
+55	18	0
+56	18	0
+57	18	0
+58	18	0
+59	18	0
+60	18	0
+61	18	0
+62	18	0
+63	18	0
+64	18	0
+65	18	0
+66	18	0
+67	18	0
+68	18	0
+69	18	0
+70	18	0
+71	18	0
+72	18	0
+73	18	0
+74	18	0
+75	18	0
+76	18	0
+77	18	0
+78	18	0
+79	18	0
+80	18	0
+81	18	0
+82	18	0
+83	18	0
+84	18	0
+85	18	0
+86	18	0
+87	18	0
+88	18	0
+89	18	0
+90	18	0
+91	18	0
+92	18	0
+93	18	0
+94	18	0
+95	18	0
+96	18	0
+97	18	0
+98	18	0
+99	18	0
+100	18	0
+101	18	0
+102	18	0
+103	18	0
+104	18	0
+105	18	0
+106	18	0
+107	18	0
+108	18	0
+109	18	0
+110	18	0
+111	18	0
+112	18	0
+113	18	0
+114	18	0
+115	18	0
+116	18	0
+117	18	0
+118	18	0
+119	18	0
+120	18	0
+121	18	0
+122	18	0
+123	18	0
+124	18	0
+125	18	0
+126	18	0
+127	18	0
+128	18	0
+129	18	0
+130	18	0
+131	18	0
+132	18	0
+133	18	0
+134	18	0
+135	18	0
+136	18	0
+137	18	0
+138	18	0
+139	18	0
+140	18	0
+141	18	0
+142	18	0
+143	18	0
+144	18	0
+145	18	0
+146	18	0
+147	18	0
+148	18	0
+149	18	0
+150	18	0
+151	18	0
+152	18	0
+153	18	0
+154	18	0
+155	18	0
+156	18	0
+157	18	0
+158	18	0
+159	18	0
+160	18	0
+161	18	0
+162	18	0
+163	18	0
+164	18	0
+165	18	0
+166	18	0
+167	18	0
+168	18	0
+169	18	0
+170	18	0
+171	18	0
+172	18	0
+173	18	0
+174	18	0
+175	18	0
+176	18	0
+177	18	0
+178	18	0
+179	18	0
+180	18	0
+181	18	0
+182	18	0
+183	18	0
+184	18	0
+185	18	0
+186	18	0
+187	18	0
+188	18	0
+189	18	0
+190	18	0
+191	18	0
+192	18	0
+193	18	0
+194	18	0
+195	18	0
+196	18	0
+197	18	0
+198	18	0
+199	18	0
+200	18	0
+201	18	0
+202	18	0
+203	18	0
+204	18	0
+205	18	0
+206	18	0
+207	18	0
+208	18	0
+209	18	0
+210	18	0
+211	18	0
+212	18	0
+213	18	0
+214	18	0
+215	18	0
+216	18	0
+217	18	0
+218	18	0
+219	18	0
+220	18	0
+221	18	0
+222	18	0
+223	18	0
+224	18	0
+225	18	0
+226	18	0
+227	18	0
+228	18	0
+229	18	0
+230	18	0
+231	18	0
+232	18	0
+233	18	0
+234	18	0
+235	18	0
+236	18	0
+237	18	0
+238	18	0
+239	18	0
+240	18	0
+241	18	0
+242	18	0
+243	18	0
+244	18	0
+245	18	0
+246	18	0
+247	18	0
+248	18	0
+249	18	0
+250	18	0
+251	18	0
+252	18	0
+253	18	0
+254	18	0
+255	18	0
+256	18	0
+257	18	0
+258	18	0
+259	18	0
+260	18	0
+261	18	0
+262	18	0
+263	18	0
+264	18	0
+265	18	0
+266	18	0
+267	18	0
+268	18	0
+269	18	0
+270	18	0
+271	18	0
+272	18	0
+273	18	0
+274	18	0
+275	18	0
+276	18	0
+277	18	0
+278	18	0
+279	18	0
+280	18	0
+281	18	0
+282	18	0
+283	18	0
+284	18	0
+285	18	0
+286	18	0
+287	18	0
+288	18	0
+289	18	0
+290	18	0
+291	18	0
+292	18	0
+293	18	0
+294	18	0
+295	18	0
+296	18	0
+297	18	0
+298	18	0
+299	18	0
+300	18	0
+301	18	0
+302	18	0
+303	18	0
+304	18	0
+305	18	0
+306	18	0
+307	18	0
+308	18	0
+309	18	0
+310	18	0
+311	18	0
+312	18	0
+313	18	0
+314	18	0
+315	18	0
+316	18	0
+317	18	0
+318	18	0
+319	18	0
+320	18	0
+321	18	0
+322	18	0
+323	18	0
+324	18	0
+325	18	0
+326	18	0
+327	18	0
+328	18	0
+329	18	0
+330	18	0
+331	18	0
+332	18	0
+333	18	0
+334	18	0
+335	18	0
+336	18	0
+337	18	0
+338	18	0
+339	18	0
+340	18	0
+341	18	0
+342	18	0
+343	18	0
+344	18	0
+345	18	0
+346	18	0
+347	18	0
+348	18	0
+349	18	0
+350	18	0
+351	18	0
+352	18	0
+353	18	0
+354	18	0
+355	18	0
+356	18	0
+357	18	0
+358	18	0
+359	18	0
+360	18	0
+0	18.5	0
+1	18.5	0
+2	18.5	0
+3	18.5	0
+4	18.5	0
+5	18.5	0
+6	18.5	0
+7	18.5	0
+8	18.5	0
+9	18.5	0
+10	18.5	0
+11	18.5	0
+12	18.5	0
+13	18.5	0
+14	18.5	0
+15	18.5	0
+16	18.5	0
+17	18.5	0
+18	18.5	0
+19	18.5	0
+20	18.5	0
+21	18.5	0
+22	18.5	0
+23	18.5	0
+24	18.5	0
+25	18.5	0
+26	18.5	0
+27	18.5	0
+28	18.5	0
+29	18.5	0
+30	18.5	0
+31	18.5	0
+32	18.5	0
+33	18.5	0
+34	18.5	0
+35	18.5	0
+36	18.5	0
+37	18.5	0
+38	18.5	0
+39	18.5	0
+40	18.5	0
+41	18.5	0
+42	18.5	0
+43	18.5	0
+44	18.5	0
+45	18.5	0
+46	18.5	0
+47	18.5	0
+48	18.5	0
+49	18.5	0
+50	18.5	0
+51	18.5	0
+52	18.5	0
+53	18.5	0
+54	18.5	0
+55	18.5	0
+56	18.5	0
+57	18.5	0
+58	18.5	0
+59	18.5	0
+60	18.5	0
+61	18.5	0
+62	18.5	0
+63	18.5	0
+64	18.5	0
+65	18.5	0
+66	18.5	0
+67	18.5	0
+68	18.5	0
+69	18.5	0
+70	18.5	0
+71	18.5	0
+72	18.5	0
+73	18.5	0
+74	18.5	0
+75	18.5	0
+76	18.5	0
+77	18.5	0
+78	18.5	0
+79	18.5	0
+80	18.5	0
+81	18.5	0
+82	18.5	0
+83	18.5	0
+84	18.5	0
+85	18.5	0
+86	18.5	0
+87	18.5	0
+88	18.5	0
+89	18.5	0
+90	18.5	0
+91	18.5	0
+92	18.5	0
+93	18.5	0
+94	18.5	0
+95	18.5	0
+96	18.5	0
+97	18.5	0
+98	18.5	0
+99	18.5	0
+100	18.5	0
+101	18.5	0
+102	18.5	0
+103	18.5	0
+104	18.5	0
+105	18.5	0
+106	18.5	0
+107	18.5	0
+108	18.5	0
+109	18.5	0
+110	18.5	0
+111	18.5	0
+112	18.5	0
+113	18.5	0
+114	18.5	0
+115	18.5	0
+116	18.5	0
+117	18.5	0
+118	18.5	0
+119	18.5	0
+120	18.5	0
+121	18.5	0
+122	18.5	0
+123	18.5	0
+124	18.5	0
+125	18.5	0
+126	18.5	0
+127	18.5	0
+128	18.5	0
+129	18.5	0
+130	18.5	0
+131	18.5	0
+132	18.5	0
+133	18.5	0
+134	18.5	0
+135	18.5	0
+136	18.5	0
+137	18.5	0
+138	18.5	0
+139	18.5	0
+140	18.5	0
+141	18.5	0
+142	18.5	0
+143	18.5	0
+144	18.5	0
+145	18.5	0
+146	18.5	0
+147	18.5	0
+148	18.5	0
+149	18.5	0
+150	18.5	0
+151	18.5	0
+152	18.5	0
+153	18.5	0
+154	18.5	0
+155	18.5	0
+156	18.5	0
+157	18.5	0
+158	18.5	0
+159	18.5	0
+160	18.5	0
+161	18.5	0
+162	18.5	0
+163	18.5	0
+164	18.5	0
+165	18.5	0
+166	18.5	0
+167	18.5	0
+168	18.5	0
+169	18.5	0
+170	18.5	0
+171	18.5	0
+172	18.5	0
+173	18.5	0
+174	18.5	0
+175	18.5	0
+176	18.5	0
+177	18.5	0
+178	18.5	0
+179	18.5	0
+180	18.5	0
+181	18.5	0
+182	18.5	0
+183	18.5	0
+184	18.5	0
+185	18.5	0
+186	18.5	0
+187	18.5	0
+188	18.5	0
+189	18.5	0
+190	18.5	0
+191	18.5	0
+192	18.5	0
+193	18.5	0
+194	18.5	0
+195	18.5	0
+196	18.5	0
+197	18.5	0
+198	18.5	0
+199	18.5	0
+200	18.5	0
+201	18.5	0
+202	18.5	0
+203	18.5	0
+204	18.5	0
+205	18.5	0
+206	18.5	0
+207	18.5	0
+208	18.5	0
+209	18.5	0
+210	18.5	0
+211	18.5	0
+212	18.5	0
+213	18.5	0
+214	18.5	0
+215	18.5	0
+216	18.5	0
+217	18.5	0
+218	18.5	0
+219	18.5	0
+220	18.5	0
+221	18.5	0
+222	18.5	0
+223	18.5	0
+224	18.5	0
+225	18.5	0
+226	18.5	0
+227	18.5	0
+228	18.5	0
+229	18.5	0
+230	18.5	0
+231	18.5	0
+232	18.5	0
+233	18.5	0
+234	18.5	0
+235	18.5	0
+236	18.5	0
+237	18.5	0
+238	18.5	0
+239	18.5	0
+240	18.5	0
+241	18.5	0
+242	18.5	0
+243	18.5	0
+244	18.5	0
+245	18.5	0
+246	18.5	0
+247	18.5	0
+248	18.5	0
+249	18.5	0
+250	18.5	0
+251	18.5	0
+252	18.5	0
+253	18.5	0
+254	18.5	0
+255	18.5	0
+256	18.5	0
+257	18.5	0
+258	18.5	0
+259	18.5	0
+260	18.5	0
+261	18.5	0
+262	18.5	0
+263	18.5	0
+264	18.5	0
+265	18.5	0
+266	18.5	0
+267	18.5	0
+268	18.5	0
+269	18.5	0
+270	18.5	0
+271	18.5	0
+272	18.5	0
+273	18.5	0
+274	18.5	0
+275	18.5	0
+276	18.5	0
+277	18.5	0
+278	18.5	0
+279	18.5	0
+280	18.5	0
+281	18.5	0
+282	18.5	0
+283	18.5	0
+284	18.5	0
+285	18.5	0
+286	18.5	0
+287	18.5	0
+288	18.5	0
+289	18.5	0
+290	18.5	0
+291	18.5	0
+292	18.5	0
+293	18.5	0
+294	18.5	0
+295	18.5	0
+296	18.5	0
+297	18.5	0
+298	18.5	0
+299	18.5	0
+300	18.5	0
+301	18.5	0
+302	18.5	0
+303	18.5	0
+304	18.5	0
+305	18.5	0
+306	18.5	0
+307	18.5	0
+308	18.5	0
+309	18.5	0
+310	18.5	0
+311	18.5	0
+312	18.5	0
+313	18.5	0
+314	18.5	0
+315	18.5	0
+316	18.5	0
+317	18.5	0
+318	18.5	0
+319	18.5	0
+320	18.5	0
+321	18.5	0
+322	18.5	0
+323	18.5	0
+324	18.5	0
+325	18.5	0
+326	18.5	0
+327	18.5	0
+328	18.5	0
+329	18.5	0
+330	18.5	0
+331	18.5	0
+332	18.5	0
+333	18.5	0
+334	18.5	0
+335	18.5	0
+336	18.5	0
+337	18.5	0
+338	18.5	0
+339	18.5	0
+340	18.5	0
+341	18.5	0
+342	18.5	0
+343	18.5	0
+344	18.5	0
+345	18.5	0
+346	18.5	0
+347	18.5	0
+348	18.5	0
+349	18.5	0
+350	18.5	0
+351	18.5	0
+352	18.5	0
+353	18.5	0
+354	18.5	0
+355	18.5	0
+356	18.5	0
+357	18.5	0
+358	18.5	0
+359	18.5	0
+360	18.5	0
+0	19	0
+1	19	0
+2	19	0
+3	19	0
+4	19	0
+5	19	0
+6	19	0
+7	19	0
+8	19	0
+9	19	0
+10	19	0
+11	19	0
+12	19	0
+13	19	0
+14	19	0
+15	19	0
+16	19	0
+17	19	0
+18	19	0
+19	19	0
+20	19	0
+21	19	0
+22	19	0
+23	19	0
+24	19	0
+25	19	0
+26	19	0
+27	19	0
+28	19	0
+29	19	0
+30	19	0
+31	19	0
+32	19	0
+33	19	0
+34	19	0
+35	19	0
+36	19	0
+37	19	0
+38	19	0
+39	19	0
+40	19	0
+41	19	0
+42	19	0
+43	19	0
+44	19	0
+45	19	0
+46	19	0
+47	19	0
+48	19	0
+49	19	0
+50	19	0
+51	19	0
+52	19	0
+53	19	0
+54	19	0
+55	19	0
+56	19	0
+57	19	0
+58	19	0
+59	19	0
+60	19	0
+61	19	0
+62	19	0
+63	19	0
+64	19	0
+65	19	0
+66	19	0
+67	19	0
+68	19	0
+69	19	0
+70	19	0
+71	19	0
+72	19	0
+73	19	0
+74	19	0
+75	19	0
+76	19	0
+77	19	0
+78	19	0
+79	19	0
+80	19	0
+81	19	0
+82	19	0
+83	19	0
+84	19	0
+85	19	0
+86	19	0
+87	19	0
+88	19	0
+89	19	0
+90	19	0
+91	19	0
+92	19	0
+93	19	0
+94	19	0
+95	19	0
+96	19	0
+97	19	0
+98	19	0
+99	19	0
+100	19	0
+101	19	0
+102	19	0
+103	19	0
+104	19	0
+105	19	0
+106	19	0
+107	19	0
+108	19	0
+109	19	0
+110	19	0
+111	19	0
+112	19	0
+113	19	0
+114	19	0
+115	19	0
+116	19	0
+117	19	0
+118	19	0
+119	19	0
+120	19	0
+121	19	0
+122	19	0
+123	19	0
+124	19	0
+125	19	0
+126	19	0
+127	19	0
+128	19	0
+129	19	0
+130	19	0
+131	19	0
+132	19	0
+133	19	0
+134	19	0
+135	19	0
+136	19	0
+137	19	0
+138	19	0
+139	19	0
+140	19	0
+141	19	0
+142	19	0
+143	19	0
+144	19	0
+145	19	0
+146	19	0
+147	19	0
+148	19	0
+149	19	0
+150	19	0
+151	19	0
+152	19	0
+153	19	0
+154	19	0
+155	19	0
+156	19	0
+157	19	0
+158	19	0
+159	19	0
+160	19	0
+161	19	0
+162	19	0
+163	19	0
+164	19	0
+165	19	0
+166	19	0
+167	19	0
+168	19	0
+169	19	0
+170	19	0
+171	19	0
+172	19	0
+173	19	0
+174	19	0
+175	19	0
+176	19	0
+177	19	0
+178	19	0
+179	19	0
+180	19	0
+181	19	0
+182	19	0
+183	19	0
+184	19	0
+185	19	0
+186	19	0
+187	19	0
+188	19	0
+189	19	0
+190	19	0
+191	19	0
+192	19	0
+193	19	0
+194	19	0
+195	19	0
+196	19	0
+197	19	0
+198	19	0
+199	19	0
+200	19	0
+201	19	0
+202	19	0
+203	19	0
+204	19	0
+205	19	0
+206	19	0
+207	19	0
+208	19	0
+209	19	0
+210	19	0
+211	19	0
+212	19	0
+213	19	0
+214	19	0
+215	19	0
+216	19	0
+217	19	0
+218	19	0
+219	19	0
+220	19	0
+221	19	0
+222	19	0
+223	19	0
+224	19	0
+225	19	0
+226	19	0
+227	19	0
+228	19	0
+229	19	0
+230	19	0
+231	19	0
+232	19	0
+233	19	0
+234	19	0
+235	19	0
+236	19	0
+237	19	0
+238	19	0
+239	19	0
+240	19	0
+241	19	0
+242	19	0
+243	19	0
+244	19	0
+245	19	0
+246	19	0
+247	19	0
+248	19	0
+249	19	0
+250	19	0
+251	19	0
+252	19	0
+253	19	0
+254	19	0
+255	19	0
+256	19	0
+257	19	0
+258	19	0
+259	19	0
+260	19	0
+261	19	0
+262	19	0
+263	19	0
+264	19	0
+265	19	0
+266	19	0
+267	19	0
+268	19	0
+269	19	0
+270	19	0
+271	19	0
+272	19	0
+273	19	0
+274	19	0
+275	19	0
+276	19	0
+277	19	0
+278	19	0
+279	19	0
+280	19	0
+281	19	0
+282	19	0
+283	19	0
+284	19	0
+285	19	0
+286	19	0
+287	19	0
+288	19	0
+289	19	0
+290	19	0
+291	19	0
+292	19	0
+293	19	0
+294	19	0
+295	19	0
+296	19	0
+297	19	0
+298	19	0
+299	19	0
+300	19	0
+301	19	0
+302	19	0
+303	19	0
+304	19	0
+305	19	0
+306	19	0
+307	19	0
+308	19	0
+309	19	0
+310	19	0
+311	19	0
+312	19	0
+313	19	0
+314	19	0
+315	19	0
+316	19	0
+317	19	0
+318	19	0
+319	19	0
+320	19	0
+321	19	0
+322	19	0
+323	19	0
+324	19	0
+325	19	0
+326	19	0
+327	19	0
+328	19	0
+329	19	0
+330	19	0
+331	19	0
+332	19	0
+333	19	0
+334	19	0
+335	19	0
+336	19	0
+337	19	0
+338	19	0
+339	19	0
+340	19	0
+341	19	0
+342	19	0
+343	19	0
+344	19	0
+345	19	0
+346	19	0
+347	19	0
+348	19	0
+349	19	0
+350	19	0
+351	19	0
+352	19	0
+353	19	0
+354	19	0
+355	19	0
+356	19	0
+357	19	0
+358	19	0
+359	19	0
+360	19	0
+0	19.5	0
+1	19.5	0
+2	19.5	0
+3	19.5	0
+4	19.5	0
+5	19.5	0
+6	19.5	0
+7	19.5	0
+8	19.5	0
+9	19.5	0
+10	19.5	0
+11	19.5	0
+12	19.5	0
+13	19.5	0
+14	19.5	0
+15	19.5	0
+16	19.5	0
+17	19.5	0
+18	19.5	0
+19	19.5	0
+20	19.5	0
+21	19.5	0
+22	19.5	0
+23	19.5	0
+24	19.5	0
+25	19.5	0
+26	19.5	0
+27	19.5	0
+28	19.5	0
+29	19.5	0
+30	19.5	0
+31	19.5	0
+32	19.5	0
+33	19.5	0
+34	19.5	0
+35	19.5	0
+36	19.5	0
+37	19.5	0
+38	19.5	0
+39	19.5	0
+40	19.5	0
+41	19.5	0
+42	19.5	0
+43	19.5	0
+44	19.5	0
+45	19.5	0
+46	19.5	0
+47	19.5	0
+48	19.5	0
+49	19.5	0
+50	19.5	0
+51	19.5	0
+52	19.5	0
+53	19.5	0
+54	19.5	0
+55	19.5	0
+56	19.5	0
+57	19.5	0
+58	19.5	0
+59	19.5	0
+60	19.5	0
+61	19.5	0
+62	19.5	0
+63	19.5	0
+64	19.5	0
+65	19.5	0
+66	19.5	0
+67	19.5	0
+68	19.5	0
+69	19.5	0
+70	19.5	0
+71	19.5	0
+72	19.5	0
+73	19.5	0
+74	19.5	0
+75	19.5	0
+76	19.5	0
+77	19.5	0
+78	19.5	0
+79	19.5	0
+80	19.5	0
+81	19.5	0
+82	19.5	0
+83	19.5	0
+84	19.5	0
+85	19.5	0
+86	19.5	0
+87	19.5	0
+88	19.5	0
+89	19.5	0
+90	19.5	0
+91	19.5	0
+92	19.5	0
+93	19.5	0
+94	19.5	0
+95	19.5	0
+96	19.5	0
+97	19.5	0
+98	19.5	0
+99	19.5	0
+100	19.5	0
+101	19.5	0
+102	19.5	0
+103	19.5	0
+104	19.5	0
+105	19.5	0
+106	19.5	0
+107	19.5	0
+108	19.5	0
+109	19.5	0
+110	19.5	0
+111	19.5	0
+112	19.5	0
+113	19.5	0
+114	19.5	0
+115	19.5	0
+116	19.5	0
+117	19.5	0
+118	19.5	0
+119	19.5	0
+120	19.5	0
+121	19.5	0
+122	19.5	0
+123	19.5	0
+124	19.5	0
+125	19.5	0
+126	19.5	0
+127	19.5	0
+128	19.5	0
+129	19.5	0
+130	19.5	0
+131	19.5	0
+132	19.5	0
+133	19.5	0
+134	19.5	0
+135	19.5	0
+136	19.5	0
+137	19.5	0
+138	19.5	0
+139	19.5	0
+140	19.5	0
+141	19.5	0
+142	19.5	0
+143	19.5	0
+144	19.5	0
+145	19.5	0
+146	19.5	0
+147	19.5	0
+148	19.5	0
+149	19.5	0
+150	19.5	0
+151	19.5	0
+152	19.5	0
+153	19.5	0
+154	19.5	0
+155	19.5	0
+156	19.5	0
+157	19.5	0
+158	19.5	0
+159	19.5	0
+160	19.5	0
+161	19.5	0
+162	19.5	0
+163	19.5	0
+164	19.5	0
+165	19.5	0
+166	19.5	0
+167	19.5	0
+168	19.5	0
+169	19.5	0
+170	19.5	0
+171	19.5	0
+172	19.5	0
+173	19.5	0
+174	19.5	0
+175	19.5	0
+176	19.5	0
+177	19.5	0
+178	19.5	0
+179	19.5	0
+180	19.5	0
+181	19.5	0
+182	19.5	0
+183	19.5	0
+184	19.5	0
+185	19.5	0
+186	19.5	0
+187	19.5	0
+188	19.5	0
+189	19.5	0
+190	19.5	0
+191	19.5	0
+192	19.5	0
+193	19.5	0
+194	19.5	0
+195	19.5	0
+196	19.5	0
+197	19.5	0
+198	19.5	0
+199	19.5	0
+200	19.5	0
+201	19.5	0
+202	19.5	0
+203	19.5	0
+204	19.5	0
+205	19.5	0
+206	19.5	0
+207	19.5	0
+208	19.5	0
+209	19.5	0
+210	19.5	0
+211	19.5	0
+212	19.5	0
+213	19.5	0
+214	19.5	0
+215	19.5	0
+216	19.5	0
+217	19.5	0
+218	19.5	0
+219	19.5	0
+220	19.5	0
+221	19.5	0
+222	19.5	0
+223	19.5	0
+224	19.5	0
+225	19.5	0
+226	19.5	0
+227	19.5	0
+228	19.5	0
+229	19.5	0
+230	19.5	0
+231	19.5	0
+232	19.5	0
+233	19.5	0
+234	19.5	0
+235	19.5	0
+236	19.5	0
+237	19.5	0
+238	19.5	0
+239	19.5	0
+240	19.5	0
+241	19.5	0
+242	19.5	0
+243	19.5	0
+244	19.5	0
+245	19.5	0
+246	19.5	0
+247	19.5	0
+248	19.5	0
+249	19.5	0
+250	19.5	0
+251	19.5	0
+252	19.5	0
+253	19.5	0
+254	19.5	0
+255	19.5	0
+256	19.5	0
+257	19.5	0
+258	19.5	0
+259	19.5	0
+260	19.5	0
+261	19.5	0
+262	19.5	0
+263	19.5	0
+264	19.5	0
+265	19.5	0
+266	19.5	0
+267	19.5	0
+268	19.5	0
+269	19.5	0
+270	19.5	0
+271	19.5	0
+272	19.5	0
+273	19.5	0
+274	19.5	0
+275	19.5	0
+276	19.5	0
+277	19.5	0
+278	19.5	0
+279	19.5	0
+280	19.5	0
+281	19.5	0
+282	19.5	0
+283	19.5	0
+284	19.5	0
+285	19.5	0
+286	19.5	0
+287	19.5	0
+288	19.5	0
+289	19.5	0
+290	19.5	0
+291	19.5	0
+292	19.5	0
+293	19.5	0
+294	19.5	0
+295	19.5	0
+296	19.5	0
+297	19.5	0
+298	19.5	0
+299	19.5	0
+300	19.5	0
+301	19.5	0
+302	19.5	0
+303	19.5	0
+304	19.5	0
+305	19.5	0
+306	19.5	0
+307	19.5	0
+308	19.5	0
+309	19.5	0
+310	19.5	0
+311	19.5	0
+312	19.5	0
+313	19.5	0
+314	19.5	0
+315	19.5	0
+316	19.5	0
+317	19.5	0
+318	19.5	0
+319	19.5	0
+320	19.5	0
+321	19.5	0
+322	19.5	0
+323	19.5	0
+324	19.5	0
+325	19.5	0
+326	19.5	0
+327	19.5	0
+328	19.5	0
+329	19.5	0
+330	19.5	0
+331	19.5	0
+332	19.5	0
+333	19.5	0
+334	19.5	0
+335	19.5	0
+336	19.5	0
+337	19.5	0
+338	19.5	0
+339	19.5	0
+340	19.5	0
+341	19.5	0
+342	19.5	0
+343	19.5	0
+344	19.5	0
+345	19.5	0
+346	19.5	0
+347	19.5	0
+348	19.5	0
+349	19.5	0
+350	19.5	0
+351	19.5	0
+352	19.5	0
+353	19.5	0
+354	19.5	0
+355	19.5	0
+356	19.5	0
+357	19.5	0
+358	19.5	0
+359	19.5	0
+360	19.5	0
+0	20	0
+1	20	0
+2	20	0
+3	20	0
+4	20	0
+5	20	0
+6	20	0
+7	20	0
+8	20	0
+9	20	0
+10	20	0
+11	20	0
+12	20	0
+13	20	0
+14	20	0
+15	20	0
+16	20	0
+17	20	0
+18	20	0
+19	20	0
+20	20	0
+21	20	0
+22	20	0
+23	20	0
+24	20	0
+25	20	0
+26	20	0
+27	20	0
+28	20	0
+29	20	0
+30	20	0
+31	20	0
+32	20	0
+33	20	0
+34	20	0
+35	20	0
+36	20	0
+37	20	0
+38	20	0
+39	20	0
+40	20	0
+41	20	0
+42	20	0
+43	20	0
+44	20	0
+45	20	0
+46	20	0
+47	20	0
+48	20	0
+49	20	0
+50	20	0
+51	20	0
+52	20	0
+53	20	0
+54	20	0
+55	20	0
+56	20	0
+57	20	0
+58	20	0
+59	20	0
+60	20	0
+61	20	0
+62	20	0
+63	20	0
+64	20	0
+65	20	0
+66	20	0
+67	20	0
+68	20	0
+69	20	0
+70	20	0
+71	20	0
+72	20	0
+73	20	0
+74	20	0
+75	20	0
+76	20	0
+77	20	0
+78	20	0
+79	20	0
+80	20	0
+81	20	0
+82	20	0
+83	20	0
+84	20	0
+85	20	0
+86	20	0
+87	20	0
+88	20	0
+89	20	0
+90	20	0
+91	20	0
+92	20	0
+93	20	0
+94	20	0
+95	20	0
+96	20	0
+97	20	0
+98	20	0
+99	20	0
+100	20	0
+101	20	0
+102	20	0
+103	20	0
+104	20	0
+105	20	0
+106	20	0
+107	20	0
+108	20	0
+109	20	0
+110	20	0
+111	20	0
+112	20	0
+113	20	0
+114	20	0
+115	20	0
+116	20	0
+117	20	0
+118	20	0
+119	20	0
+120	20	0
+121	20	0
+122	20	0
+123	20	0
+124	20	0
+125	20	0
+126	20	0
+127	20	0
+128	20	0
+129	20	0
+130	20	0
+131	20	0
+132	20	0
+133	20	0
+134	20	0
+135	20	0
+136	20	0
+137	20	0
+138	20	0
+139	20	0
+140	20	0
+141	20	0
+142	20	0
+143	20	0
+144	20	0
+145	20	0
+146	20	0
+147	20	0
+148	20	0
+149	20	0
+150	20	0
+151	20	0
+152	20	0
+153	20	0
+154	20	0
+155	20	0
+156	20	0
+157	20	0
+158	20	0
+159	20	0
+160	20	0
+161	20	0
+162	20	0
+163	20	0
+164	20	0
+165	20	0
+166	20	0
+167	20	0
+168	20	0
+169	20	0
+170	20	0
+171	20	0
+172	20	0
+173	20	0
+174	20	0
+175	20	0
+176	20	0
+177	20	0
+178	20	0
+179	20	0
+180	20	0
+181	20	0
+182	20	0
+183	20	0
+184	20	0
+185	20	0
+186	20	0
+187	20	0
+188	20	0
+189	20	0
+190	20	0
+191	20	0
+192	20	0
+193	20	0
+194	20	0
+195	20	0
+196	20	0
+197	20	0
+198	20	0
+199	20	0
+200	20	0
+201	20	0
+202	20	0
+203	20	0
+204	20	0
+205	20	0
+206	20	0
+207	20	0
+208	20	0
+209	20	0
+210	20	0
+211	20	0
+212	20	0
+213	20	0
+214	20	0
+215	20	0
+216	20	0
+217	20	0
+218	20	0
+219	20	0
+220	20	0
+221	20	0
+222	20	0
+223	20	0
+224	20	0
+225	20	0
+226	20	0
+227	20	0
+228	20	0
+229	20	0
+230	20	0
+231	20	0
+232	20	0
+233	20	0
+234	20	0
+235	20	0
+236	20	0
+237	20	0
+238	20	0
+239	20	0
+240	20	0
+241	20	0
+242	20	0
+243	20	0
+244	20	0
+245	20	0
+246	20	0
+247	20	0
+248	20	0
+249	20	0
+250	20	0
+251	20	0
+252	20	0
+253	20	0
+254	20	0
+255	20	0
+256	20	0
+257	20	0
+258	20	0
+259	20	0
+260	20	0
+261	20	0
+262	20	0
+263	20	0
+264	20	0
+265	20	0
+266	20	0
+267	20	0
+268	20	0
+269	20	0
+270	20	0
+271	20	0
+272	20	0
+273	20	0
+274	20	0
+275	20	0
+276	20	0
+277	20	0
+278	20	0
+279	20	0
+280	20	0
+281	20	0
+282	20	0
+283	20	0
+284	20	0
+285	20	0
+286	20	0
+287	20	0
+288	20	0
+289	20	0
+290	20	0
+291	20	0
+292	20	0
+293	20	0
+294	20	0
+295	20	0
+296	20	0
+297	20	0
+298	20	0
+299	20	0
+300	20	0
+301	20	0
+302	20	0
+303	20	0
+304	20	0
+305	20	0
+306	20	0
+307	20	0
+308	20	0
+309	20	0
+310	20	0
+311	20	0
+312	20	0
+313	20	0
+314	20	0
+315	20	0
+316	20	0
+317	20	0
+318	20	0
+319	20	0
+320	20	0
+321	20	0
+322	20	0
+323	20	0
+324	20	0
+325	20	0
+326	20	0
+327	20	0
+328	20	0
+329	20	0
+330	20	0
+331	20	0
+332	20	0
+333	20	0
+334	20	0
+335	20	0
+336	20	0
+337	20	0
+338	20	0
+339	20	0
+340	20	0
+341	20	0
+342	20	0
+343	20	0
+344	20	0
+345	20	0
+346	20	0
+347	20	0
+348	20	0
+349	20	0
+350	20	0
+351	20	0
+352	20	0
+353	20	0
+354	20	0
+355	20	0
+356	20	0
+357	20	0
+358	20	0
+359	20	0
+360	20	0
+0	20.5	0
+1	20.5	0
+2	20.5	0
+3	20.5	0
+4	20.5	0
+5	20.5	0
+6	20.5	0
+7	20.5	0
+8	20.5	0
+9	20.5	0
+10	20.5	0
+11	20.5	0
+12	20.5	0
+13	20.5	0
+14	20.5	0
+15	20.5	0
+16	20.5	0
+17	20.5	0
+18	20.5	0
+19	20.5	0
+20	20.5	0
+21	20.5	0
+22	20.5	0
+23	20.5	0
+24	20.5	0
+25	20.5	0
+26	20.5	0
+27	20.5	0
+28	20.5	0
+29	20.5	0
+30	20.5	0
+31	20.5	0
+32	20.5	0
+33	20.5	0
+34	20.5	0
+35	20.5	0
+36	20.5	0
+37	20.5	0
+38	20.5	0
+39	20.5	0
+40	20.5	0
+41	20.5	0
+42	20.5	0
+43	20.5	0
+44	20.5	0
+45	20.5	0
+46	20.5	0
+47	20.5	0
+48	20.5	0
+49	20.5	0
+50	20.5	0
+51	20.5	0
+52	20.5	0
+53	20.5	0
+54	20.5	0
+55	20.5	0
+56	20.5	0
+57	20.5	0
+58	20.5	0
+59	20.5	0
+60	20.5	0
+61	20.5	0
+62	20.5	0
+63	20.5	0
+64	20.5	0
+65	20.5	0
+66	20.5	0
+67	20.5	0
+68	20.5	0
+69	20.5	0
+70	20.5	0
+71	20.5	0
+72	20.5	0
+73	20.5	0
+74	20.5	0
+75	20.5	0
+76	20.5	0
+77	20.5	0
+78	20.5	0
+79	20.5	0
+80	20.5	0
+81	20.5	0
+82	20.5	0
+83	20.5	0
+84	20.5	0
+85	20.5	0
+86	20.5	0
+87	20.5	0
+88	20.5	0
+89	20.5	0
+90	20.5	0
+91	20.5	0
+92	20.5	0
+93	20.5	0
+94	20.5	0
+95	20.5	0
+96	20.5	0
+97	20.5	0
+98	20.5	0
+99	20.5	0
+100	20.5	0
+101	20.5	0
+102	20.5	0
+103	20.5	0
+104	20.5	0
+105	20.5	0
+106	20.5	0
+107	20.5	0
+108	20.5	0
+109	20.5	0
+110	20.5	0
+111	20.5	0
+112	20.5	0
+113	20.5	0
+114	20.5	0
+115	20.5	0
+116	20.5	0
+117	20.5	0
+118	20.5	0
+119	20.5	0
+120	20.5	0
+121	20.5	0
+122	20.5	0
+123	20.5	0
+124	20.5	0
+125	20.5	0
+126	20.5	0
+127	20.5	0
+128	20.5	0
+129	20.5	0
+130	20.5	0
+131	20.5	0
+132	20.5	0
+133	20.5	0
+134	20.5	0
+135	20.5	0
+136	20.5	0
+137	20.5	0
+138	20.5	0
+139	20.5	0
+140	20.5	0
+141	20.5	0
+142	20.5	0
+143	20.5	0
+144	20.5	0
+145	20.5	0
+146	20.5	0
+147	20.5	0
+148	20.5	0
+149	20.5	0
+150	20.5	0
+151	20.5	0
+152	20.5	0
+153	20.5	0
+154	20.5	0
+155	20.5	0
+156	20.5	0
+157	20.5	0
+158	20.5	0
+159	20.5	0
+160	20.5	0
+161	20.5	0
+162	20.5	0
+163	20.5	0
+164	20.5	0
+165	20.5	0
+166	20.5	0
+167	20.5	0
+168	20.5	0
+169	20.5	0
+170	20.5	0
+171	20.5	0
+172	20.5	0
+173	20.5	0
+174	20.5	0
+175	20.5	0
+176	20.5	0
+177	20.5	0
+178	20.5	0
+179	20.5	0
+180	20.5	0
+181	20.5	0
+182	20.5	0
+183	20.5	0
+184	20.5	0
+185	20.5	0
+186	20.5	0
+187	20.5	0
+188	20.5	0
+189	20.5	0
+190	20.5	0
+191	20.5	0
+192	20.5	0
+193	20.5	0
+194	20.5	0
+195	20.5	0
+196	20.5	0
+197	20.5	0
+198	20.5	0
+199	20.5	0
+200	20.5	0
+201	20.5	0
+202	20.5	0
+203	20.5	0
+204	20.5	0
+205	20.5	0
+206	20.5	0
+207	20.5	0
+208	20.5	0
+209	20.5	0
+210	20.5	0
+211	20.5	0
+212	20.5	0
+213	20.5	0
+214	20.5	0
+215	20.5	0
+216	20.5	0
+217	20.5	0
+218	20.5	0
+219	20.5	0
+220	20.5	0
+221	20.5	0
+222	20.5	0
+223	20.5	0
+224	20.5	0
+225	20.5	0
+226	20.5	0
+227	20.5	0
+228	20.5	0
+229	20.5	0
+230	20.5	0
+231	20.5	0
+232	20.5	0
+233	20.5	0
+234	20.5	0
+235	20.5	0
+236	20.5	0
+237	20.5	0
+238	20.5	0
+239	20.5	0
+240	20.5	0
+241	20.5	0
+242	20.5	0
+243	20.5	0
+244	20.5	0
+245	20.5	0
+246	20.5	0
+247	20.5	0
+248	20.5	0
+249	20.5	0
+250	20.5	0
+251	20.5	0
+252	20.5	0
+253	20.5	0
+254	20.5	0
+255	20.5	0
+256	20.5	0
+257	20.5	0
+258	20.5	0
+259	20.5	0
+260	20.5	0
+261	20.5	0
+262	20.5	0
+263	20.5	0
+264	20.5	0
+265	20.5	0
+266	20.5	0
+267	20.5	0
+268	20.5	0
+269	20.5	0
+270	20.5	0
+271	20.5	0
+272	20.5	0
+273	20.5	0
+274	20.5	0
+275	20.5	0
+276	20.5	0
+277	20.5	0
+278	20.5	0
+279	20.5	0
+280	20.5	0
+281	20.5	0
+282	20.5	0
+283	20.5	0
+284	20.5	0
+285	20.5	0
+286	20.5	0
+287	20.5	0
+288	20.5	0
+289	20.5	0
+290	20.5	0
+291	20.5	0
+292	20.5	0
+293	20.5	0
+294	20.5	0
+295	20.5	0
+296	20.5	0
+297	20.5	0
+298	20.5	0
+299	20.5	0
+300	20.5	0
+301	20.5	0
+302	20.5	0
+303	20.5	0
+304	20.5	0
+305	20.5	0
+306	20.5	0
+307	20.5	0
+308	20.5	0
+309	20.5	0
+310	20.5	0
+311	20.5	0
+312	20.5	0
+313	20.5	0
+314	20.5	0
+315	20.5	0
+316	20.5	0
+317	20.5	0
+318	20.5	0
+319	20.5	0
+320	20.5	0
+321	20.5	0
+322	20.5	0
+323	20.5	0
+324	20.5	0
+325	20.5	0
+326	20.5	0
+327	20.5	0
+328	20.5	0
+329	20.5	0
+330	20.5	0
+331	20.5	0
+332	20.5	0
+333	20.5	0
+334	20.5	0
+335	20.5	0
+336	20.5	0
+337	20.5	0
+338	20.5	0
+339	20.5	0
+340	20.5	0
+341	20.5	0
+342	20.5	0
+343	20.5	0
+344	20.5	0
+345	20.5	0
+346	20.5	0
+347	20.5	0
+348	20.5	0
+349	20.5	0
+350	20.5	0
+351	20.5	0
+352	20.5	0
+353	20.5	0
+354	20.5	0
+355	20.5	0
+356	20.5	0
+357	20.5	0
+358	20.5	0
+359	20.5	0
+360	20.5	0
+0	21	0
+1	21	0
+2	21	0
+3	21	0
+4	21	0
+5	21	0
+6	21	0
+7	21	0
+8	21	0
+9	21	0
+10	21	0
+11	21	0
+12	21	0
+13	21	0
+14	21	0
+15	21	0
+16	21	0
+17	21	0
+18	21	0
+19	21	0
+20	21	0
+21	21	0
+22	21	0
+23	21	0
+24	21	0
+25	21	0
+26	21	0
+27	21	0
+28	21	0
+29	21	0
+30	21	0
+31	21	0
+32	21	0
+33	21	0
+34	21	0
+35	21	0
+36	21	0
+37	21	0
+38	21	0
+39	21	0
+40	21	0
+41	21	0
+42	21	0
+43	21	0
+44	21	0
+45	21	0
+46	21	0
+47	21	0
+48	21	0
+49	21	0
+50	21	0
+51	21	0
+52	21	0
+53	21	0
+54	21	0
+55	21	0
+56	21	0
+57	21	0
+58	21	0
+59	21	0
+60	21	0
+61	21	0
+62	21	0
+63	21	0
+64	21	0
+65	21	0
+66	21	0
+67	21	0
+68	21	0
+69	21	0
+70	21	0
+71	21	0
+72	21	0
+73	21	0
+74	21	0
+75	21	0
+76	21	0
+77	21	0
+78	21	0
+79	21	0
+80	21	0
+81	21	0
+82	21	0
+83	21	0
+84	21	0
+85	21	0
+86	21	0
+87	21	0
+88	21	0
+89	21	0
+90	21	0
+91	21	0
+92	21	0
+93	21	0
+94	21	0
+95	21	0
+96	21	0
+97	21	0
+98	21	0
+99	21	0
+100	21	0
+101	21	0
+102	21	0
+103	21	0
+104	21	0
+105	21	0
+106	21	0
+107	21	0
+108	21	0
+109	21	0
+110	21	0
+111	21	0
+112	21	0
+113	21	0
+114	21	0
+115	21	0
+116	21	0
+117	21	0
+118	21	0
+119	21	0
+120	21	0
+121	21	0
+122	21	0
+123	21	0
+124	21	0
+125	21	0
+126	21	0
+127	21	0
+128	21	0
+129	21	0
+130	21	0
+131	21	0
+132	21	0
+133	21	0
+134	21	0
+135	21	0
+136	21	0
+137	21	0
+138	21	0
+139	21	0
+140	21	0
+141	21	0
+142	21	0
+143	21	0
+144	21	0
+145	21	0
+146	21	0
+147	21	0
+148	21	0
+149	21	0
+150	21	0
+151	21	0
+152	21	0
+153	21	0
+154	21	0
+155	21	0
+156	21	0
+157	21	0
+158	21	0
+159	21	0
+160	21	0
+161	21	0
+162	21	0
+163	21	0
+164	21	0
+165	21	0
+166	21	0
+167	21	0
+168	21	0
+169	21	0
+170	21	0
+171	21	0
+172	21	0
+173	21	0
+174	21	0
+175	21	0
+176	21	0
+177	21	0
+178	21	0
+179	21	0
+180	21	0
+181	21	0
+182	21	0
+183	21	0
+184	21	0
+185	21	0
+186	21	0
+187	21	0
+188	21	0
+189	21	0
+190	21	0
+191	21	0
+192	21	0
+193	21	0
+194	21	0
+195	21	0
+196	21	0
+197	21	0
+198	21	0
+199	21	0
+200	21	0
+201	21	0
+202	21	0
+203	21	0
+204	21	0
+205	21	0
+206	21	0
+207	21	0
+208	21	0
+209	21	0
+210	21	0
+211	21	0
+212	21	0
+213	21	0
+214	21	0
+215	21	0
+216	21	0
+217	21	0
+218	21	0
+219	21	0
+220	21	0
+221	21	0
+222	21	0
+223	21	0
+224	21	0
+225	21	0
+226	21	0
+227	21	0
+228	21	0
+229	21	0
+230	21	0
+231	21	0
+232	21	0
+233	21	0
+234	21	0
+235	21	0
+236	21	0
+237	21	0
+238	21	0
+239	21	0
+240	21	0
+241	21	0
+242	21	0
+243	21	0
+244	21	0
+245	21	0
+246	21	0
+247	21	0
+248	21	0
+249	21	0
+250	21	0
+251	21	0
+252	21	0
+253	21	0
+254	21	0
+255	21	0
+256	21	0
+257	21	0
+258	21	0
+259	21	0
+260	21	0
+261	21	0
+262	21	0
+263	21	0
+264	21	0
+265	21	0
+266	21	0
+267	21	0
+268	21	0
+269	21	0
+270	21	0
+271	21	0
+272	21	0
+273	21	0
+274	21	0
+275	21	0
+276	21	0
+277	21	0
+278	21	0
+279	21	0
+280	21	0
+281	21	0
+282	21	0
+283	21	0
+284	21	0
+285	21	0
+286	21	0
+287	21	0
+288	21	0
+289	21	0
+290	21	0
+291	21	0
+292	21	0
+293	21	0
+294	21	0
+295	21	0
+296	21	0
+297	21	0
+298	21	0
+299	21	0
+300	21	0
+301	21	0
+302	21	0
+303	21	0
+304	21	0
+305	21	0
+306	21	0
+307	21	0
+308	21	0
+309	21	0
+310	21	0
+311	21	0
+312	21	0
+313	21	0
+314	21	0
+315	21	0
+316	21	0
+317	21	0
+318	21	0
+319	21	0
+320	21	0
+321	21	0
+322	21	0
+323	21	0
+324	21	0
+325	21	0
+326	21	0
+327	21	0
+328	21	0
+329	21	0
+330	21	0
+331	21	0
+332	21	0
+333	21	0
+334	21	0
+335	21	0
+336	21	0
+337	21	0
+338	21	0
+339	21	0
+340	21	0
+341	21	0
+342	21	0
+343	21	0
+344	21	0
+345	21	0
+346	21	0
+347	21	0
+348	21	0
+349	21	0
+350	21	0
+351	21	0
+352	21	0
+353	21	0
+354	21	0
+355	21	0
+356	21	0
+357	21	0
+358	21	0
+359	21	0
+360	21	0
+0	21.5	0
+1	21.5	0
+2	21.5	0
+3	21.5	0
+4	21.5	0
+5	21.5	0
+6	21.5	0
+7	21.5	0
+8	21.5	0
+9	21.5	0
+10	21.5	0
+11	21.5	0
+12	21.5	0
+13	21.5	0
+14	21.5	0
+15	21.5	0
+16	21.5	0
+17	21.5	0
+18	21.5	0
+19	21.5	0
+20	21.5	0
+21	21.5	0
+22	21.5	0
+23	21.5	0
+24	21.5	0
+25	21.5	0
+26	21.5	0
+27	21.5	0
+28	21.5	0
+29	21.5	0
+30	21.5	0
+31	21.5	0
+32	21.5	0
+33	21.5	0
+34	21.5	0
+35	21.5	0
+36	21.5	0
+37	21.5	0
+38	21.5	0
+39	21.5	0
+40	21.5	0
+41	21.5	0
+42	21.5	0
+43	21.5	0
+44	21.5	0
+45	21.5	0
+46	21.5	0
+47	21.5	0
+48	21.5	0
+49	21.5	0
+50	21.5	0
+51	21.5	0
+52	21.5	0
+53	21.5	0
+54	21.5	0
+55	21.5	0
+56	21.5	0
+57	21.5	0
+58	21.5	0
+59	21.5	0
+60	21.5	0
+61	21.5	0
+62	21.5	0
+63	21.5	0
+64	21.5	0
+65	21.5	0
+66	21.5	0
+67	21.5	0
+68	21.5	0
+69	21.5	0
+70	21.5	0
+71	21.5	0
+72	21.5	0
+73	21.5	0
+74	21.5	0
+75	21.5	0
+76	21.5	0
+77	21.5	0
+78	21.5	0
+79	21.5	0
+80	21.5	0
+81	21.5	0
+82	21.5	0
+83	21.5	0
+84	21.5	0
+85	21.5	0
+86	21.5	0
+87	21.5	0
+88	21.5	0
+89	21.5	0
+90	21.5	0
+91	21.5	0
+92	21.5	0
+93	21.5	0
+94	21.5	0
+95	21.5	0
+96	21.5	0
+97	21.5	0
+98	21.5	0
+99	21.5	0
+100	21.5	0
+101	21.5	0
+102	21.5	0
+103	21.5	0
+104	21.5	0
+105	21.5	0
+106	21.5	0
+107	21.5	0
+108	21.5	0
+109	21.5	0
+110	21.5	0
+111	21.5	0
+112	21.5	0
+113	21.5	0
+114	21.5	0
+115	21.5	0
+116	21.5	0
+117	21.5	0
+118	21.5	0
+119	21.5	0
+120	21.5	0
+121	21.5	0
+122	21.5	0
+123	21.5	0
+124	21.5	0
+125	21.5	0
+126	21.5	0
+127	21.5	0
+128	21.5	0
+129	21.5	0
+130	21.5	0
+131	21.5	0
+132	21.5	0
+133	21.5	0
+134	21.5	0
+135	21.5	0
+136	21.5	0
+137	21.5	0
+138	21.5	0
+139	21.5	0
+140	21.5	0
+141	21.5	0
+142	21.5	0
+143	21.5	0
+144	21.5	0
+145	21.5	0
+146	21.5	0
+147	21.5	0
+148	21.5	0
+149	21.5	0
+150	21.5	0
+151	21.5	0
+152	21.5	0
+153	21.5	0
+154	21.5	0
+155	21.5	0
+156	21.5	0
+157	21.5	0
+158	21.5	0
+159	21.5	0
+160	21.5	0
+161	21.5	0
+162	21.5	0
+163	21.5	0
+164	21.5	0
+165	21.5	0
+166	21.5	0
+167	21.5	0
+168	21.5	0
+169	21.5	0
+170	21.5	0
+171	21.5	0
+172	21.5	0
+173	21.5	0
+174	21.5	0
+175	21.5	0
+176	21.5	0
+177	21.5	0
+178	21.5	0
+179	21.5	0
+180	21.5	0
+181	21.5	0
+182	21.5	0
+183	21.5	0
+184	21.5	0
+185	21.5	0
+186	21.5	0
+187	21.5	0
+188	21.5	0
+189	21.5	0
+190	21.5	0
+191	21.5	0
+192	21.5	0
+193	21.5	0
+194	21.5	0
+195	21.5	0
+196	21.5	0
+197	21.5	0
+198	21.5	0
+199	21.5	0
+200	21.5	0
+201	21.5	0
+202	21.5	0
+203	21.5	0
+204	21.5	0
+205	21.5	0
+206	21.5	0
+207	21.5	0
+208	21.5	0
+209	21.5	0
+210	21.5	0
+211	21.5	0
+212	21.5	0
+213	21.5	0
+214	21.5	0
+215	21.5	0
+216	21.5	0
+217	21.5	0
+218	21.5	0
+219	21.5	0
+220	21.5	0
+221	21.5	0
+222	21.5	0
+223	21.5	0
+224	21.5	0
+225	21.5	0
+226	21.5	0
+227	21.5	0
+228	21.5	0
+229	21.5	0
+230	21.5	0
+231	21.5	0
+232	21.5	0
+233	21.5	0
+234	21.5	0
+235	21.5	0
+236	21.5	0
+237	21.5	0
+238	21.5	0
+239	21.5	0
+240	21.5	0
+241	21.5	0
+242	21.5	0
+243	21.5	0
+244	21.5	0
+245	21.5	0
+246	21.5	0
+247	21.5	0
+248	21.5	0
+249	21.5	0
+250	21.5	0
+251	21.5	0
+252	21.5	0
+253	21.5	0
+254	21.5	0
+255	21.5	0
+256	21.5	0
+257	21.5	0
+258	21.5	0
+259	21.5	0
+260	21.5	0
+261	21.5	0
+262	21.5	0
+263	21.5	0
+264	21.5	0
+265	21.5	0
+266	21.5	0
+267	21.5	0
+268	21.5	0
+269	21.5	0
+270	21.5	0
+271	21.5	0
+272	21.5	0
+273	21.5	0
+274	21.5	0
+275	21.5	0
+276	21.5	0
+277	21.5	0
+278	21.5	0
+279	21.5	0
+280	21.5	0
+281	21.5	0
+282	21.5	0
+283	21.5	0
+284	21.5	0
+285	21.5	0
+286	21.5	0
+287	21.5	0
+288	21.5	0
+289	21.5	0
+290	21.5	0
+291	21.5	0
+292	21.5	0
+293	21.5	0
+294	21.5	0
+295	21.5	0
+296	21.5	0
+297	21.5	0
+298	21.5	0
+299	21.5	0
+300	21.5	0
+301	21.5	0
+302	21.5	0
+303	21.5	0
+304	21.5	0
+305	21.5	0
+306	21.5	0
+307	21.5	0
+308	21.5	0
+309	21.5	0
+310	21.5	0
+311	21.5	0
+312	21.5	0
+313	21.5	0
+314	21.5	0
+315	21.5	0
+316	21.5	0
+317	21.5	0
+318	21.5	0
+319	21.5	0
+320	21.5	0
+321	21.5	0
+322	21.5	0
+323	21.5	0
+324	21.5	0
+325	21.5	0
+326	21.5	0
+327	21.5	0
+328	21.5	0
+329	21.5	0
+330	21.5	0
+331	21.5	0
+332	21.5	0
+333	21.5	0
+334	21.5	0
+335	21.5	0
+336	21.5	0
+337	21.5	0
+338	21.5	0
+339	21.5	0
+340	21.5	0
+341	21.5	0
+342	21.5	0
+343	21.5	0
+344	21.5	0
+345	21.5	0
+346	21.5	0
+347	21.5	0
+348	21.5	0
+349	21.5	0
+350	21.5	0
+351	21.5	0
+352	21.5	0
+353	21.5	0
+354	21.5	0
+355	21.5	0
+356	21.5	0
+357	21.5	0
+358	21.5	0
+359	21.5	0
+360	21.5	0
+0	22	0
+1	22	0
+2	22	0
+3	22	0
+4	22	0
+5	22	0
+6	22	0
+7	22	0
+8	22	0
+9	22	0
+10	22	0
+11	22	0
+12	22	0
+13	22	0
+14	22	0
+15	22	0
+16	22	0
+17	22	0
+18	22	0
+19	22	0
+20	22	0
+21	22	0
+22	22	0
+23	22	0
+24	22	0
+25	22	0
+26	22	0
+27	22	0
+28	22	0
+29	22	0
+30	22	0
+31	22	0
+32	22	0
+33	22	0
+34	22	0
+35	22	0
+36	22	0
+37	22	0
+38	22	0
+39	22	0
+40	22	0
+41	22	0
+42	22	0
+43	22	0
+44	22	0
+45	22	0
+46	22	0
+47	22	0
+48	22	0
+49	22	0
+50	22	0
+51	22	0
+52	22	0
+53	22	0
+54	22	0
+55	22	0
+56	22	0
+57	22	0
+58	22	0
+59	22	0
+60	22	0
+61	22	0
+62	22	0
+63	22	0
+64	22	0
+65	22	0
+66	22	0
+67	22	0
+68	22	0
+69	22	0
+70	22	0
+71	22	0
+72	22	0
+73	22	0
+74	22	0
+75	22	0
+76	22	0
+77	22	0
+78	22	0
+79	22	0
+80	22	0
+81	22	0
+82	22	0
+83	22	0
+84	22	0
+85	22	0
+86	22	0
+87	22	0
+88	22	0
+89	22	0
+90	22	0
+91	22	0
+92	22	0
+93	22	0
+94	22	0
+95	22	0
+96	22	0
+97	22	0
+98	22	0
+99	22	0
+100	22	0
+101	22	0
+102	22	0
+103	22	0
+104	22	0
+105	22	0
+106	22	0
+107	22	0
+108	22	0
+109	22	0
+110	22	0
+111	22	0
+112	22	0
+113	22	0
+114	22	0
+115	22	0
+116	22	0
+117	22	0
+118	22	0
+119	22	0
+120	22	0
+121	22	0
+122	22	0
+123	22	0
+124	22	0
+125	22	0
+126	22	0
+127	22	0
+128	22	0
+129	22	0
+130	22	0
+131	22	0
+132	22	0
+133	22	0
+134	22	0
+135	22	0
+136	22	0
+137	22	0
+138	22	0
+139	22	0
+140	22	0
+141	22	0
+142	22	0
+143	22	0
+144	22	0
+145	22	0
+146	22	0
+147	22	0
+148	22	0
+149	22	0
+150	22	0
+151	22	0
+152	22	0
+153	22	0
+154	22	0
+155	22	0
+156	22	0
+157	22	0
+158	22	0
+159	22	0
+160	22	0
+161	22	0
+162	22	0
+163	22	0
+164	22	0
+165	22	0
+166	22	0
+167	22	0
+168	22	0
+169	22	0
+170	22	0
+171	22	0
+172	22	0
+173	22	0
+174	22	0
+175	22	0
+176	22	0
+177	22	0
+178	22	0
+179	22	0
+180	22	0
+181	22	0
+182	22	0
+183	22	0
+184	22	0
+185	22	0
+186	22	0
+187	22	0
+188	22	0
+189	22	0
+190	22	0
+191	22	0
+192	22	0
+193	22	0
+194	22	0
+195	22	0
+196	22	0
+197	22	0
+198	22	0
+199	22	0
+200	22	0
+201	22	0
+202	22	0
+203	22	0
+204	22	0
+205	22	0
+206	22	0
+207	22	0
+208	22	0
+209	22	0
+210	22	0
+211	22	0
+212	22	0
+213	22	0
+214	22	0
+215	22	0
+216	22	0
+217	22	0
+218	22	0
+219	22	0
+220	22	0
+221	22	0
+222	22	0
+223	22	0
+224	22	0
+225	22	0
+226	22	0
+227	22	0
+228	22	0
+229	22	0
+230	22	0
+231	22	0
+232	22	0
+233	22	0
+234	22	0
+235	22	0
+236	22	0
+237	22	0
+238	22	0
+239	22	0
+240	22	0
+241	22	0
+242	22	0
+243	22	0
+244	22	0
+245	22	0
+246	22	0
+247	22	0
+248	22	0
+249	22	0
+250	22	0
+251	22	0
+252	22	0
+253	22	0
+254	22	0
+255	22	0
+256	22	0
+257	22	0
+258	22	0
+259	22	0
+260	22	0
+261	22	0
+262	22	0
+263	22	0
+264	22	0
+265	22	0
+266	22	0
+267	22	0
+268	22	0
+269	22	0
+270	22	0
+271	22	0
+272	22	0
+273	22	0
+274	22	0
+275	22	0
+276	22	0
+277	22	0
+278	22	0
+279	22	0
+280	22	0
+281	22	0
+282	22	0
+283	22	0
+284	22	0
+285	22	0
+286	22	0
+287	22	0
+288	22	0
+289	22	0
+290	22	0
+291	22	0
+292	22	0
+293	22	0
+294	22	0
+295	22	0
+296	22	0
+297	22	0
+298	22	0
+299	22	0
+300	22	0
+301	22	0
+302	22	0
+303	22	0
+304	22	0
+305	22	0
+306	22	0
+307	22	0
+308	22	0
+309	22	0
+310	22	0
+311	22	0
+312	22	0
+313	22	0
+314	22	0
+315	22	0
+316	22	0
+317	22	0
+318	22	0
+319	22	0
+320	22	0
+321	22	0
+322	22	0
+323	22	0
+324	22	0
+325	22	0
+326	22	0
+327	22	0
+328	22	0
+329	22	0
+330	22	0
+331	22	0
+332	22	0
+333	22	0
+334	22	0
+335	22	0
+336	22	0
+337	22	0
+338	22	0
+339	22	0
+340	22	0
+341	22	0
+342	22	0
+343	22	0
+344	22	0
+345	22	0
+346	22	0
+347	22	0
+348	22	0
+349	22	0
+350	22	0
+351	22	0
+352	22	0
+353	22	0
+354	22	0
+355	22	0
+356	22	0
+357	22	0
+358	22	0
+359	22	0
+360	22	0
+0	22.5	0
+1	22.5	0
+2	22.5	0
+3	22.5	0
+4	22.5	0
+5	22.5	0
+6	22.5	0
+7	22.5	0
+8	22.5	0
+9	22.5	0
+10	22.5	0
+11	22.5	0
+12	22.5	0
+13	22.5	0
+14	22.5	0
+15	22.5	0
+16	22.5	0
+17	22.5	0
+18	22.5	0
+19	22.5	0
+20	22.5	0
+21	22.5	0
+22	22.5	0
+23	22.5	0
+24	22.5	0
+25	22.5	0
+26	22.5	0
+27	22.5	0
+28	22.5	0
+29	22.5	0
+30	22.5	0
+31	22.5	0
+32	22.5	0
+33	22.5	0
+34	22.5	0
+35	22.5	0
+36	22.5	0
+37	22.5	0
+38	22.5	0
+39	22.5	0
+40	22.5	0
+41	22.5	0
+42	22.5	0
+43	22.5	0
+44	22.5	0
+45	22.5	0
+46	22.5	0
+47	22.5	0
+48	22.5	0
+49	22.5	0
+50	22.5	0
+51	22.5	0
+52	22.5	0
+53	22.5	0
+54	22.5	0
+55	22.5	0
+56	22.5	0
+57	22.5	0
+58	22.5	0
+59	22.5	0
+60	22.5	0
+61	22.5	0
+62	22.5	0
+63	22.5	0
+64	22.5	0
+65	22.5	0
+66	22.5	0
+67	22.5	0
+68	22.5	0
+69	22.5	0
+70	22.5	0
+71	22.5	0
+72	22.5	0
+73	22.5	0
+74	22.5	0
+75	22.5	0
+76	22.5	0
+77	22.5	0
+78	22.5	0
+79	22.5	0
+80	22.5	0
+81	22.5	0
+82	22.5	0
+83	22.5	0
+84	22.5	0
+85	22.5	0
+86	22.5	0
+87	22.5	0
+88	22.5	0
+89	22.5	0
+90	22.5	0
+91	22.5	0
+92	22.5	0
+93	22.5	0
+94	22.5	0
+95	22.5	0
+96	22.5	0
+97	22.5	0
+98	22.5	0
+99	22.5	0
+100	22.5	0
+101	22.5	0
+102	22.5	0
+103	22.5	0
+104	22.5	0
+105	22.5	0
+106	22.5	0
+107	22.5	0
+108	22.5	0
+109	22.5	0
+110	22.5	0
+111	22.5	0
+112	22.5	0
+113	22.5	0
+114	22.5	0
+115	22.5	0
+116	22.5	0
+117	22.5	0
+118	22.5	0
+119	22.5	0
+120	22.5	0
+121	22.5	0
+122	22.5	0
+123	22.5	0
+124	22.5	0
+125	22.5	0
+126	22.5	0
+127	22.5	0
+128	22.5	0
+129	22.5	0
+130	22.5	0
+131	22.5	0
+132	22.5	0
+133	22.5	0
+134	22.5	0
+135	22.5	0
+136	22.5	0
+137	22.5	0
+138	22.5	0
+139	22.5	0
+140	22.5	0
+141	22.5	0
+142	22.5	0
+143	22.5	0
+144	22.5	0
+145	22.5	0
+146	22.5	0
+147	22.5	0
+148	22.5	0
+149	22.5	0
+150	22.5	0
+151	22.5	0
+152	22.5	0
+153	22.5	0
+154	22.5	0
+155	22.5	0
+156	22.5	0
+157	22.5	0
+158	22.5	0
+159	22.5	0
+160	22.5	0
+161	22.5	0
+162	22.5	0
+163	22.5	0
+164	22.5	0
+165	22.5	0
+166	22.5	0
+167	22.5	0
+168	22.5	0
+169	22.5	0
+170	22.5	0
+171	22.5	0
+172	22.5	0
+173	22.5	0
+174	22.5	0
+175	22.5	0
+176	22.5	0
+177	22.5	0
+178	22.5	0
+179	22.5	0
+180	22.5	0
+181	22.5	0
+182	22.5	0
+183	22.5	0
+184	22.5	0
+185	22.5	0
+186	22.5	0
+187	22.5	0
+188	22.5	0
+189	22.5	0
+190	22.5	0
+191	22.5	0
+192	22.5	0
+193	22.5	0
+194	22.5	0
+195	22.5	0
+196	22.5	0
+197	22.5	0
+198	22.5	0
+199	22.5	0
+200	22.5	0
+201	22.5	0
+202	22.5	0
+203	22.5	0
+204	22.5	0
+205	22.5	0
+206	22.5	0
+207	22.5	0
+208	22.5	0
+209	22.5	0
+210	22.5	0
+211	22.5	0
+212	22.5	0
+213	22.5	0
+214	22.5	0
+215	22.5	0
+216	22.5	0
+217	22.5	0
+218	22.5	0
+219	22.5	0
+220	22.5	0
+221	22.5	0
+222	22.5	0
+223	22.5	0
+224	22.5	0
+225	22.5	0
+226	22.5	0
+227	22.5	0
+228	22.5	0
+229	22.5	0
+230	22.5	0
+231	22.5	0
+232	22.5	0
+233	22.5	0
+234	22.5	0
+235	22.5	0
+236	22.5	0
+237	22.5	0
+238	22.5	0
+239	22.5	0
+240	22.5	0
+241	22.5	0
+242	22.5	0
+243	22.5	0
+244	22.5	0
+245	22.5	0
+246	22.5	0
+247	22.5	0
+248	22.5	0
+249	22.5	0
+250	22.5	0
+251	22.5	0
+252	22.5	0
+253	22.5	0
+254	22.5	0
+255	22.5	0
+256	22.5	0
+257	22.5	0
+258	22.5	0
+259	22.5	0
+260	22.5	0
+261	22.5	0
+262	22.5	0
+263	22.5	0
+264	22.5	0
+265	22.5	0
+266	22.5	0
+267	22.5	0
+268	22.5	0
+269	22.5	0
+270	22.5	0
+271	22.5	0
+272	22.5	0
+273	22.5	0
+274	22.5	0
+275	22.5	0
+276	22.5	0
+277	22.5	0
+278	22.5	0
+279	22.5	0
+280	22.5	0
+281	22.5	0
+282	22.5	0
+283	22.5	0
+284	22.5	0
+285	22.5	0
+286	22.5	0
+287	22.5	0
+288	22.5	0
+289	22.5	0
+290	22.5	0
+291	22.5	0
+292	22.5	0
+293	22.5	0
+294	22.5	0
+295	22.5	0
+296	22.5	0
+297	22.5	0
+298	22.5	0
+299	22.5	0
+300	22.5	0
+301	22.5	0
+302	22.5	0
+303	22.5	0
+304	22.5	0
+305	22.5	0
+306	22.5	0
+307	22.5	0
+308	22.5	0
+309	22.5	0
+310	22.5	0
+311	22.5	0
+312	22.5	0
+313	22.5	0
+314	22.5	0
+315	22.5	0
+316	22.5	0
+317	22.5	0
+318	22.5	0
+319	22.5	0
+320	22.5	0
+321	22.5	0
+322	22.5	0
+323	22.5	0
+324	22.5	0
+325	22.5	0
+326	22.5	0
+327	22.5	0
+328	22.5	0
+329	22.5	0
+330	22.5	0
+331	22.5	0
+332	22.5	0
+333	22.5	0
+334	22.5	0
+335	22.5	0
+336	22.5	0
+337	22.5	0
+338	22.5	0
+339	22.5	0
+340	22.5	0
+341	22.5	0
+342	22.5	0
+343	22.5	0
+344	22.5	0
+345	22.5	0
+346	22.5	0
+347	22.5	0
+348	22.5	0
+349	22.5	0
+350	22.5	0
+351	22.5	0
+352	22.5	0
+353	22.5	0
+354	22.5	0
+355	22.5	0
+356	22.5	0
+357	22.5	0
+358	22.5	0
+359	22.5	0
+360	22.5	0
+0	23	0
+1	23	0
+2	23	0
+3	23	0
+4	23	0
+5	23	0
+6	23	0
+7	23	0
+8	23	0
+9	23	0
+10	23	0
+11	23	0
+12	23	0
+13	23	0
+14	23	0
+15	23	0
+16	23	0
+17	23	0
+18	23	0
+19	23	0
+20	23	0
+21	23	0
+22	23	0
+23	23	0
+24	23	0
+25	23	0
+26	23	0
+27	23	0
+28	23	0
+29	23	0
+30	23	0
+31	23	0
+32	23	0
+33	23	0
+34	23	0
+35	23	0
+36	23	0
+37	23	0
+38	23	0
+39	23	0
+40	23	0
+41	23	0
+42	23	0
+43	23	0
+44	23	0
+45	23	0
+46	23	0
+47	23	0
+48	23	0
+49	23	0
+50	23	0
+51	23	0
+52	23	0
+53	23	0
+54	23	0
+55	23	0
+56	23	0
+57	23	0
+58	23	0
+59	23	0
+60	23	0
+61	23	0
+62	23	0
+63	23	0
+64	23	0
+65	23	0
+66	23	0
+67	23	0
+68	23	0
+69	23	0
+70	23	0
+71	23	0
+72	23	0
+73	23	0
+74	23	0
+75	23	0
+76	23	0
+77	23	0
+78	23	0
+79	23	0
+80	23	0
+81	23	0
+82	23	0
+83	23	0
+84	23	0
+85	23	0
+86	23	0
+87	23	0
+88	23	0
+89	23	0
+90	23	0
+91	23	0
+92	23	0
+93	23	0
+94	23	0
+95	23	0
+96	23	0
+97	23	0
+98	23	0
+99	23	0
+100	23	0
+101	23	0
+102	23	0
+103	23	0
+104	23	0
+105	23	0
+106	23	0
+107	23	0
+108	23	0
+109	23	0
+110	23	0
+111	23	0
+112	23	0
+113	23	0
+114	23	0
+115	23	0
+116	23	0
+117	23	0
+118	23	0
+119	23	0
+120	23	0
+121	23	0
+122	23	0
+123	23	0
+124	23	0
+125	23	0
+126	23	0
+127	23	0
+128	23	0
+129	23	0
+130	23	0
+131	23	0
+132	23	0
+133	23	0
+134	23	0
+135	23	0
+136	23	0
+137	23	0
+138	23	0
+139	23	0
+140	23	0
+141	23	0
+142	23	0
+143	23	0
+144	23	0
+145	23	0
+146	23	0
+147	23	0
+148	23	0
+149	23	0
+150	23	0
+151	23	0
+152	23	0
+153	23	0
+154	23	0
+155	23	0
+156	23	0
+157	23	0
+158	23	0
+159	23	0
+160	23	0
+161	23	0
+162	23	0
+163	23	0
+164	23	0
+165	23	0
+166	23	0
+167	23	0
+168	23	0
+169	23	0
+170	23	0
+171	23	0
+172	23	0
+173	23	0
+174	23	0
+175	23	0
+176	23	0
+177	23	0
+178	23	0
+179	23	0
+180	23	0
+181	23	0
+182	23	0
+183	23	0
+184	23	0
+185	23	0
+186	23	0
+187	23	0
+188	23	0
+189	23	0
+190	23	0
+191	23	0
+192	23	0
+193	23	0
+194	23	0
+195	23	0
+196	23	0
+197	23	0
+198	23	0
+199	23	0
+200	23	0
+201	23	0
+202	23	0
+203	23	0
+204	23	0
+205	23	0
+206	23	0
+207	23	0
+208	23	0
+209	23	0
+210	23	0
+211	23	0
+212	23	0
+213	23	0
+214	23	0
+215	23	0
+216	23	0
+217	23	0
+218	23	0
+219	23	0
+220	23	0
+221	23	0
+222	23	0
+223	23	0
+224	23	0
+225	23	0
+226	23	0
+227	23	0
+228	23	0
+229	23	0
+230	23	0
+231	23	0
+232	23	0
+233	23	0
+234	23	0
+235	23	0
+236	23	0
+237	23	0
+238	23	0
+239	23	0
+240	23	0
+241	23	0
+242	23	0
+243	23	0
+244	23	0
+245	23	0
+246	23	0
+247	23	0
+248	23	0
+249	23	0
+250	23	0
+251	23	0
+252	23	0
+253	23	0
+254	23	0
+255	23	0
+256	23	0
+257	23	0
+258	23	0
+259	23	0
+260	23	0
+261	23	0
+262	23	0
+263	23	0
+264	23	0
+265	23	0
+266	23	0
+267	23	0
+268	23	0
+269	23	0
+270	23	0
+271	23	0
+272	23	0
+273	23	0
+274	23	0
+275	23	0
+276	23	0
+277	23	0
+278	23	0
+279	23	0
+280	23	0
+281	23	0
+282	23	0
+283	23	0
+284	23	0
+285	23	0
+286	23	0
+287	23	0
+288	23	0
+289	23	0
+290	23	0
+291	23	0
+292	23	0
+293	23	0
+294	23	0
+295	23	0
+296	23	0
+297	23	0
+298	23	0
+299	23	0
+300	23	0
+301	23	0
+302	23	0
+303	23	0
+304	23	0
+305	23	0
+306	23	0
+307	23	0
+308	23	0
+309	23	0
+310	23	0
+311	23	0
+312	23	0
+313	23	0
+314	23	0
+315	23	0
+316	23	0
+317	23	0
+318	23	0
+319	23	0
+320	23	0
+321	23	0
+322	23	0
+323	23	0
+324	23	0
+325	23	0
+326	23	0
+327	23	0
+328	23	0
+329	23	0
+330	23	0
+331	23	0
+332	23	0
+333	23	0
+334	23	0
+335	23	0
+336	23	0
+337	23	0
+338	23	0
+339	23	0
+340	23	0
+341	23	0
+342	23	0
+343	23	0
+344	23	0
+345	23	0
+346	23	0
+347	23	0
+348	23	0
+349	23	0
+350	23	0
+351	23	0
+352	23	0
+353	23	0
+354	23	0
+355	23	0
+356	23	0
+357	23	0
+358	23	0
+359	23	0
+360	23	0
+0	23.5	0
+1	23.5	0
+2	23.5	0
+3	23.5	0
+4	23.5	0
+5	23.5	0
+6	23.5	0
+7	23.5	0
+8	23.5	0
+9	23.5	0
+10	23.5	0
+11	23.5	0
+12	23.5	0
+13	23.5	0
+14	23.5	0
+15	23.5	0
+16	23.5	0
+17	23.5	0
+18	23.5	0
+19	23.5	0
+20	23.5	0
+21	23.5	0
+22	23.5	0
+23	23.5	0
+24	23.5	0
+25	23.5	0
+26	23.5	0
+27	23.5	0
+28	23.5	0
+29	23.5	0
+30	23.5	0
+31	23.5	0
+32	23.5	0
+33	23.5	0
+34	23.5	0
+35	23.5	0
+36	23.5	0
+37	23.5	0
+38	23.5	0
+39	23.5	0
+40	23.5	0
+41	23.5	0
+42	23.5	0
+43	23.5	0
+44	23.5	0
+45	23.5	0
+46	23.5	0
+47	23.5	0
+48	23.5	0
+49	23.5	0
+50	23.5	0
+51	23.5	0
+52	23.5	0
+53	23.5	0
+54	23.5	0
+55	23.5	0
+56	23.5	0
+57	23.5	0
+58	23.5	0
+59	23.5	0
+60	23.5	0
+61	23.5	0
+62	23.5	0
+63	23.5	0
+64	23.5	0
+65	23.5	0
+66	23.5	0
+67	23.5	0
+68	23.5	0
+69	23.5	0
+70	23.5	0
+71	23.5	0
+72	23.5	0
+73	23.5	0
+74	23.5	0
+75	23.5	0
+76	23.5	0
+77	23.5	0
+78	23.5	0
+79	23.5	0
+80	23.5	0
+81	23.5	0
+82	23.5	0
+83	23.5	0
+84	23.5	0
+85	23.5	0
+86	23.5	0
+87	23.5	0
+88	23.5	0
+89	23.5	0
+90	23.5	0
+91	23.5	0
+92	23.5	0
+93	23.5	0
+94	23.5	0
+95	23.5	0
+96	23.5	0
+97	23.5	0
+98	23.5	0
+99	23.5	0
+100	23.5	0
+101	23.5	0
+102	23.5	0
+103	23.5	0
+104	23.5	0
+105	23.5	0
+106	23.5	0
+107	23.5	0
+108	23.5	0
+109	23.5	0
+110	23.5	0
+111	23.5	0
+112	23.5	0
+113	23.5	0
+114	23.5	0
+115	23.5	0
+116	23.5	0
+117	23.5	0
+118	23.5	0
+119	23.5	0
+120	23.5	0
+121	23.5	0
+122	23.5	0
+123	23.5	0
+124	23.5	0
+125	23.5	0
+126	23.5	0
+127	23.5	0
+128	23.5	0
+129	23.5	0
+130	23.5	0
+131	23.5	0
+132	23.5	0
+133	23.5	0
+134	23.5	0
+135	23.5	0
+136	23.5	0
+137	23.5	0
+138	23.5	0
+139	23.5	0
+140	23.5	0
+141	23.5	0
+142	23.5	0
+143	23.5	0
+144	23.5	0
+145	23.5	0
+146	23.5	0
+147	23.5	0
+148	23.5	0
+149	23.5	0
+150	23.5	0
+151	23.5	0
+152	23.5	0
+153	23.5	0
+154	23.5	0
+155	23.5	0
+156	23.5	0
+157	23.5	0
+158	23.5	0
+159	23.5	0
+160	23.5	0
+161	23.5	0
+162	23.5	0
+163	23.5	0
+164	23.5	0
+165	23.5	0
+166	23.5	0
+167	23.5	0
+168	23.5	0
+169	23.5	0
+170	23.5	0
+171	23.5	0
+172	23.5	0
+173	23.5	0
+174	23.5	0
+175	23.5	0
+176	23.5	0
+177	23.5	0
+178	23.5	0
+179	23.5	0
+180	23.5	0
+181	23.5	0
+182	23.5	0
+183	23.5	0
+184	23.5	0
+185	23.5	0
+186	23.5	0
+187	23.5	0
+188	23.5	0
+189	23.5	0
+190	23.5	0
+191	23.5	0
+192	23.5	0
+193	23.5	0
+194	23.5	0
+195	23.5	0
+196	23.5	0
+197	23.5	0
+198	23.5	0
+199	23.5	0
+200	23.5	0
+201	23.5	0
+202	23.5	0
+203	23.5	0
+204	23.5	0
+205	23.5	0
+206	23.5	0
+207	23.5	0
+208	23.5	0
+209	23.5	0
+210	23.5	0
+211	23.5	0
+212	23.5	0
+213	23.5	0
+214	23.5	0
+215	23.5	0
+216	23.5	0
+217	23.5	0
+218	23.5	0
+219	23.5	0
+220	23.5	0
+221	23.5	0
+222	23.5	0
+223	23.5	0
+224	23.5	0
+225	23.5	0
+226	23.5	0
+227	23.5	0
+228	23.5	0
+229	23.5	0
+230	23.5	0
+231	23.5	0
+232	23.5	0
+233	23.5	0
+234	23.5	0
+235	23.5	0
+236	23.5	0
+237	23.5	0
+238	23.5	0
+239	23.5	0
+240	23.5	0
+241	23.5	0
+242	23.5	0
+243	23.5	0
+244	23.5	0
+245	23.5	0
+246	23.5	0
+247	23.5	0
+248	23.5	0
+249	23.5	0
+250	23.5	0
+251	23.5	0
+252	23.5	0
+253	23.5	0
+254	23.5	0
+255	23.5	0
+256	23.5	0
+257	23.5	0
+258	23.5	0
+259	23.5	0
+260	23.5	0
+261	23.5	0
+262	23.5	0
+263	23.5	0
+264	23.5	0
+265	23.5	0
+266	23.5	0
+267	23.5	0
+268	23.5	0
+269	23.5	0
+270	23.5	0
+271	23.5	0
+272	23.5	0
+273	23.5	0
+274	23.5	0
+275	23.5	0
+276	23.5	0
+277	23.5	0
+278	23.5	0
+279	23.5	0
+280	23.5	0
+281	23.5	0
+282	23.5	0
+283	23.5	0
+284	23.5	0
+285	23.5	0
+286	23.5	0
+287	23.5	0
+288	23.5	0
+289	23.5	0
+290	23.5	0
+291	23.5	0
+292	23.5	0
+293	23.5	0
+294	23.5	0
+295	23.5	0
+296	23.5	0
+297	23.5	0
+298	23.5	0
+299	23.5	0
+300	23.5	0
+301	23.5	0
+302	23.5	0
+303	23.5	0
+304	23.5	0
+305	23.5	0
+306	23.5	0
+307	23.5	0
+308	23.5	0
+309	23.5	0
+310	23.5	0
+311	23.5	0
+312	23.5	0
+313	23.5	0
+314	23.5	0
+315	23.5	0
+316	23.5	0
+317	23.5	0
+318	23.5	0
+319	23.5	0
+320	23.5	0
+321	23.5	0
+322	23.5	0
+323	23.5	0
+324	23.5	0
+325	23.5	0
+326	23.5	0
+327	23.5	0
+328	23.5	0
+329	23.5	0
+330	23.5	0
+331	23.5	0
+332	23.5	0
+333	23.5	0
+334	23.5	0
+335	23.5	0
+336	23.5	0
+337	23.5	0
+338	23.5	0
+339	23.5	0
+340	23.5	0
+341	23.5	0
+342	23.5	0
+343	23.5	0
+344	23.5	0
+345	23.5	0
+346	23.5	0
+347	23.5	0
+348	23.5	0
+349	23.5	0
+350	23.5	0
+351	23.5	0
+352	23.5	0
+353	23.5	0
+354	23.5	0
+355	23.5	0
+356	23.5	0
+357	23.5	0
+358	23.5	0
+359	23.5	0
+360	23.5	0
+0	24	0
+1	24	0
+2	24	0
+3	24	0
+4	24	0
+5	24	0
+6	24	0
+7	24	0
+8	24	0
+9	24	0
+10	24	0
+11	24	0
+12	24	0
+13	24	0
+14	24	0
+15	24	0
+16	24	0
+17	24	0
+18	24	0
+19	24	0
+20	24	0
+21	24	0
+22	24	0
+23	24	0
+24	24	0
+25	24	0
+26	24	0
+27	24	0
+28	24	0
+29	24	0
+30	24	0
+31	24	0
+32	24	0
+33	24	0
+34	24	0
+35	24	0
+36	24	0
+37	24	0
+38	24	0
+39	24	0
+40	24	0
+41	24	0
+42	24	0
+43	24	0
+44	24	0
+45	24	0
+46	24	0
+47	24	0
+48	24	0
+49	24	0
+50	24	0
+51	24	0
+52	24	0
+53	24	0
+54	24	0
+55	24	0
+56	24	0
+57	24	0
+58	24	0
+59	24	0
+60	24	0
+61	24	0
+62	24	0
+63	24	0
+64	24	0
+65	24	0
+66	24	0
+67	24	0
+68	24	0
+69	24	0
+70	24	0
+71	24	0
+72	24	0
+73	24	0
+74	24	0
+75	24	0
+76	24	0
+77	24	0
+78	24	0
+79	24	0
+80	24	0
+81	24	0
+82	24	0
+83	24	0
+84	24	0
+85	24	0
+86	24	0
+87	24	0
+88	24	0
+89	24	0
+90	24	0
+91	24	0
+92	24	0
+93	24	0
+94	24	0
+95	24	0
+96	24	0
+97	24	0
+98	24	0
+99	24	0
+100	24	0
+101	24	0
+102	24	0
+103	24	0
+104	24	0
+105	24	0
+106	24	0
+107	24	0
+108	24	0
+109	24	0
+110	24	0
+111	24	0
+112	24	0
+113	24	0
+114	24	0
+115	24	0
+116	24	0
+117	24	0
+118	24	0
+119	24	0
+120	24	0
+121	24	0
+122	24	0
+123	24	0
+124	24	0
+125	24	0
+126	24	0
+127	24	0
+128	24	0
+129	24	0
+130	24	0
+131	24	0
+132	24	0
+133	24	0
+134	24	0
+135	24	0
+136	24	0
+137	24	0
+138	24	0
+139	24	0
+140	24	0
+141	24	0
+142	24	0
+143	24	0
+144	24	0
+145	24	0
+146	24	0
+147	24	0
+148	24	0
+149	24	0
+150	24	0
+151	24	0
+152	24	0
+153	24	0
+154	24	0
+155	24	0
+156	24	0
+157	24	0
+158	24	0
+159	24	0
+160	24	0
+161	24	0
+162	24	0
+163	24	0
+164	24	0
+165	24	0
+166	24	0
+167	24	0
+168	24	0
+169	24	0
+170	24	0
+171	24	0
+172	24	0
+173	24	0
+174	24	0
+175	24	0
+176	24	0
+177	24	0
+178	24	0
+179	24	0
+180	24	0
+181	24	0
+182	24	0
+183	24	0
+184	24	0
+185	24	0
+186	24	0
+187	24	0
+188	24	0
+189	24	0
+190	24	0
+191	24	0
+192	24	0
+193	24	0
+194	24	0
+195	24	0
+196	24	0
+197	24	0
+198	24	0
+199	24	0
+200	24	0
+201	24	0
+202	24	0
+203	24	0
+204	24	0
+205	24	0
+206	24	0
+207	24	0
+208	24	0
+209	24	0
+210	24	0
+211	24	0
+212	24	0
+213	24	0
+214	24	0
+215	24	0
+216	24	0
+217	24	0
+218	24	0
+219	24	0
+220	24	0
+221	24	0
+222	24	0
+223	24	0
+224	24	0
+225	24	0
+226	24	0
+227	24	0
+228	24	0
+229	24	0
+230	24	0
+231	24	0
+232	24	0
+233	24	0
+234	24	0
+235	24	0
+236	24	0
+237	24	0
+238	24	0
+239	24	0
+240	24	0
+241	24	0
+242	24	0
+243	24	0
+244	24	0
+245	24	0
+246	24	0
+247	24	0
+248	24	0
+249	24	0
+250	24	0
+251	24	0
+252	24	0
+253	24	0
+254	24	0
+255	24	0
+256	24	0
+257	24	0
+258	24	0
+259	24	0
+260	24	0
+261	24	0
+262	24	0
+263	24	0
+264	24	0
+265	24	0
+266	24	0
+267	24	0
+268	24	0
+269	24	0
+270	24	0
+271	24	0
+272	24	0
+273	24	0
+274	24	0
+275	24	0
+276	24	0
+277	24	0
+278	24	0
+279	24	0
+280	24	0
+281	24	0
+282	24	0
+283	24	0
+284	24	0
+285	24	0
+286	24	0
+287	24	0
+288	24	0
+289	24	0
+290	24	0
+291	24	0
+292	24	0
+293	24	0
+294	24	0
+295	24	0
+296	24	0
+297	24	0
+298	24	0
+299	24	0
+300	24	0
+301	24	0
+302	24	0
+303	24	0
+304	24	0
+305	24	0
+306	24	0
+307	24	0
+308	24	0
+309	24	0
+310	24	0
+311	24	0
+312	24	0
+313	24	0
+314	24	0
+315	24	0
+316	24	0
+317	24	0
+318	24	0
+319	24	0
+320	24	0
+321	24	0
+322	24	0
+323	24	0
+324	24	0
+325	24	0
+326	24	0
+327	24	0
+328	24	0
+329	24	0
+330	24	0
+331	24	0
+332	24	0
+333	24	0
+334	24	0
+335	24	0
+336	24	0
+337	24	0
+338	24	0
+339	24	0
+340	24	0
+341	24	0
+342	24	0
+343	24	0
+344	24	0
+345	24	0
+346	24	0
+347	24	0
+348	24	0
+349	24	0
+350	24	0
+351	24	0
+352	24	0
+353	24	0
+354	24	0
+355	24	0
+356	24	0
+357	24	0
+358	24	0
+359	24	0
+360	24	0
+0	24.5	0
+1	24.5	0
+2	24.5	0
+3	24.5	0
+4	24.5	0
+5	24.5	0
+6	24.5	0
+7	24.5	0
+8	24.5	0
+9	24.5	0
+10	24.5	0
+11	24.5	0
+12	24.5	0
+13	24.5	0
+14	24.5	0
+15	24.5	0
+16	24.5	0
+17	24.5	0
+18	24.5	0
+19	24.5	0
+20	24.5	0
+21	24.5	0
+22	24.5	0
+23	24.5	0
+24	24.5	0
+25	24.5	0
+26	24.5	0
+27	24.5	0
+28	24.5	0
+29	24.5	0
+30	24.5	0
+31	24.5	0
+32	24.5	0
+33	24.5	0
+34	24.5	0
+35	24.5	0
+36	24.5	0
+37	24.5	0
+38	24.5	0
+39	24.5	0
+40	24.5	0
+41	24.5	0
+42	24.5	0
+43	24.5	0
+44	24.5	0
+45	24.5	0
+46	24.5	0
+47	24.5	0
+48	24.5	0
+49	24.5	0
+50	24.5	0
+51	24.5	0
+52	24.5	0
+53	24.5	0
+54	24.5	0
+55	24.5	0
+56	24.5	0
+57	24.5	0
+58	24.5	0
+59	24.5	0
+60	24.5	0
+61	24.5	0
+62	24.5	0
+63	24.5	0
+64	24.5	0
+65	24.5	0
+66	24.5	0
+67	24.5	0
+68	24.5	0
+69	24.5	0
+70	24.5	0
+71	24.5	0
+72	24.5	0
+73	24.5	0
+74	24.5	0
+75	24.5	0
+76	24.5	0
+77	24.5	0
+78	24.5	0
+79	24.5	0
+80	24.5	0
+81	24.5	0
+82	24.5	0
+83	24.5	0
+84	24.5	0
+85	24.5	0
+86	24.5	0
+87	24.5	0
+88	24.5	0
+89	24.5	0
+90	24.5	0
+91	24.5	0
+92	24.5	0
+93	24.5	0
+94	24.5	0
+95	24.5	0
+96	24.5	0
+97	24.5	0
+98	24.5	0
+99	24.5	0
+100	24.5	0
+101	24.5	0
+102	24.5	0
+103	24.5	0
+104	24.5	0
+105	24.5	0
+106	24.5	0
+107	24.5	0
+108	24.5	0
+109	24.5	0
+110	24.5	0
+111	24.5	0
+112	24.5	0
+113	24.5	0
+114	24.5	0
+115	24.5	0
+116	24.5	0
+117	24.5	0
+118	24.5	0
+119	24.5	0
+120	24.5	0
+121	24.5	0
+122	24.5	0
+123	24.5	0
+124	24.5	0
+125	24.5	0
+126	24.5	0
+127	24.5	0
+128	24.5	0
+129	24.5	0
+130	24.5	0
+131	24.5	0
+132	24.5	0
+133	24.5	0
+134	24.5	0
+135	24.5	0
+136	24.5	0
+137	24.5	0
+138	24.5	0
+139	24.5	0
+140	24.5	0
+141	24.5	0
+142	24.5	0
+143	24.5	0
+144	24.5	0
+145	24.5	0
+146	24.5	0
+147	24.5	0
+148	24.5	0
+149	24.5	0
+150	24.5	0
+151	24.5	0
+152	24.5	0
+153	24.5	0
+154	24.5	0
+155	24.5	0
+156	24.5	0
+157	24.5	0
+158	24.5	0
+159	24.5	0
+160	24.5	0
+161	24.5	0
+162	24.5	0
+163	24.5	0
+164	24.5	0
+165	24.5	0
+166	24.5	0
+167	24.5	0
+168	24.5	0
+169	24.5	0
+170	24.5	0
+171	24.5	0
+172	24.5	0
+173	24.5	0
+174	24.5	0
+175	24.5	0
+176	24.5	0
+177	24.5	0
+178	24.5	0
+179	24.5	0
+180	24.5	0
+181	24.5	0
+182	24.5	0
+183	24.5	0
+184	24.5	0
+185	24.5	0
+186	24.5	0
+187	24.5	0
+188	24.5	0
+189	24.5	0
+190	24.5	0
+191	24.5	0
+192	24.5	0
+193	24.5	0
+194	24.5	0
+195	24.5	0
+196	24.5	0
+197	24.5	0
+198	24.5	0
+199	24.5	0
+200	24.5	0
+201	24.5	0
+202	24.5	0
+203	24.5	0
+204	24.5	0
+205	24.5	0
+206	24.5	0
+207	24.5	0
+208	24.5	0
+209	24.5	0
+210	24.5	0
+211	24.5	0
+212	24.5	0
+213	24.5	0
+214	24.5	0
+215	24.5	0
+216	24.5	0
+217	24.5	0
+218	24.5	0
+219	24.5	0
+220	24.5	0
+221	24.5	0
+222	24.5	0
+223	24.5	0
+224	24.5	0
+225	24.5	0
+226	24.5	0
+227	24.5	0
+228	24.5	0
+229	24.5	0
+230	24.5	0
+231	24.5	0
+232	24.5	0
+233	24.5	0
+234	24.5	0
+235	24.5	0
+236	24.5	0
+237	24.5	0
+238	24.5	0
+239	24.5	0
+240	24.5	0
+241	24.5	0
+242	24.5	0
+243	24.5	0
+244	24.5	0
+245	24.5	0
+246	24.5	0
+247	24.5	0
+248	24.5	0
+249	24.5	0
+250	24.5	0
+251	24.5	0
+252	24.5	0
+253	24.5	0
+254	24.5	0
+255	24.5	0
+256	24.5	0
+257	24.5	0
+258	24.5	0
+259	24.5	0
+260	24.5	0
+261	24.5	0
+262	24.5	0
+263	24.5	0
+264	24.5	0
+265	24.5	0
+266	24.5	0
+267	24.5	0
+268	24.5	0
+269	24.5	0
+270	24.5	0
+271	24.5	0
+272	24.5	0
+273	24.5	0
+274	24.5	0
+275	24.5	0
+276	24.5	0
+277	24.5	0
+278	24.5	0
+279	24.5	0
+280	24.5	0
+281	24.5	0
+282	24.5	0
+283	24.5	0
+284	24.5	0
+285	24.5	0
+286	24.5	0
+287	24.5	0
+288	24.5	0
+289	24.5	0
+290	24.5	0
+291	24.5	0
+292	24.5	0
+293	24.5	0
+294	24.5	0
+295	24.5	0
+296	24.5	0
+297	24.5	0
+298	24.5	0
+299	24.5	0
+300	24.5	0
+301	24.5	0
+302	24.5	0
+303	24.5	0
+304	24.5	0
+305	24.5	0
+306	24.5	0
+307	24.5	0
+308	24.5	0
+309	24.5	0
+310	24.5	0
+311	24.5	0
+312	24.5	0
+313	24.5	0
+314	24.5	0
+315	24.5	0
+316	24.5	0
+317	24.5	0
+318	24.5	0
+319	24.5	0
+320	24.5	0
+321	24.5	0
+322	24.5	0
+323	24.5	0
+324	24.5	0
+325	24.5	0
+326	24.5	0
+327	24.5	0
+328	24.5	0
+329	24.5	0
+330	24.5	0
+331	24.5	0
+332	24.5	0
+333	24.5	0
+334	24.5	0
+335	24.5	0
+336	24.5	0
+337	24.5	0
+338	24.5	0
+339	24.5	0
+340	24.5	0
+341	24.5	0
+342	24.5	0
+343	24.5	0
+344	24.5	0
+345	24.5	0
+346	24.5	0
+347	24.5	0
+348	24.5	0
+349	24.5	0
+350	24.5	0
+351	24.5	0
+352	24.5	0
+353	24.5	0
+354	24.5	0
+355	24.5	0
+356	24.5	0
+357	24.5	0
+358	24.5	0
+359	24.5	0
+360	24.5	0
+0	25	0
+1	25	0
+2	25	0
+3	25	0
+4	25	0
+5	25	0
+6	25	0
+7	25	0
+8	25	0
+9	25	0
+10	25	0
+11	25	0
+12	25	0
+13	25	0
+14	25	0
+15	25	0
+16	25	0
+17	25	0
+18	25	0
+19	25	0
+20	25	0
+21	25	0
+22	25	0
+23	25	0
+24	25	0
+25	25	0
+26	25	0
+27	25	0
+28	25	0
+29	25	0
+30	25	0
+31	25	0
+32	25	0
+33	25	0
+34	25	0
+35	25	0
+36	25	0
+37	25	0
+38	25	0
+39	25	0
+40	25	0
+41	25	0
+42	25	0
+43	25	0
+44	25	0
+45	25	0
+46	25	0
+47	25	0
+48	25	0
+49	25	0
+50	25	0
+51	25	0
+52	25	0
+53	25	0
+54	25	0
+55	25	0
+56	25	0
+57	25	0
+58	25	0
+59	25	0
+60	25	0
+61	25	0
+62	25	0
+63	25	0
+64	25	0
+65	25	0
+66	25	0
+67	25	0
+68	25	0
+69	25	0
+70	25	0
+71	25	0
+72	25	0
+73	25	0
+74	25	0
+75	25	0
+76	25	0
+77	25	0
+78	25	0
+79	25	0
+80	25	0
+81	25	0
+82	25	0
+83	25	0
+84	25	0
+85	25	0
+86	25	0
+87	25	0
+88	25	0
+89	25	0
+90	25	0
+91	25	0
+92	25	0
+93	25	0
+94	25	0
+95	25	0
+96	25	0
+97	25	0
+98	25	0
+99	25	0
+100	25	0
+101	25	0
+102	25	0
+103	25	0
+104	25	0
+105	25	0
+106	25	0
+107	25	0
+108	25	0
+109	25	0
+110	25	0
+111	25	0
+112	25	0
+113	25	0
+114	25	0
+115	25	0
+116	25	0
+117	25	0
+118	25	0
+119	25	0
+120	25	0
+121	25	0
+122	25	0
+123	25	0
+124	25	0
+125	25	0
+126	25	0
+127	25	0
+128	25	0
+129	25	0
+130	25	0
+131	25	0
+132	25	0
+133	25	0
+134	25	0
+135	25	0
+136	25	0
+137	25	0
+138	25	0
+139	25	0
+140	25	0
+141	25	0
+142	25	0
+143	25	0
+144	25	0
+145	25	0
+146	25	0
+147	25	0
+148	25	0
+149	25	0
+150	25	0
+151	25	0
+152	25	0
+153	25	0
+154	25	0
+155	25	0
+156	25	0
+157	25	0
+158	25	0
+159	25	0
+160	25	0
+161	25	0
+162	25	0
+163	25	0
+164	25	0
+165	25	0
+166	25	0
+167	25	0
+168	25	0
+169	25	0
+170	25	0
+171	25	0
+172	25	0
+173	25	0
+174	25	0
+175	25	0
+176	25	0
+177	25	0
+178	25	0
+179	25	0
+180	25	0
+181	25	0
+182	25	0
+183	25	0
+184	25	0
+185	25	0
+186	25	0
+187	25	0
+188	25	0
+189	25	0
+190	25	0
+191	25	0
+192	25	0
+193	25	0
+194	25	0
+195	25	0
+196	25	0
+197	25	0
+198	25	0
+199	25	0
+200	25	0
+201	25	0
+202	25	0
+203	25	0
+204	25	0
+205	25	0
+206	25	0
+207	25	0
+208	25	0
+209	25	0
+210	25	0
+211	25	0
+212	25	0
+213	25	0
+214	25	0
+215	25	0
+216	25	0
+217	25	0
+218	25	0
+219	25	0
+220	25	0
+221	25	0
+222	25	0
+223	25	0
+224	25	0
+225	25	0
+226	25	0
+227	25	0
+228	25	0
+229	25	0
+230	25	0
+231	25	0
+232	25	0
+233	25	0
+234	25	0
+235	25	0
+236	25	0
+237	25	0
+238	25	0
+239	25	0
+240	25	0
+241	25	0
+242	25	0
+243	25	0
+244	25	0
+245	25	0
+246	25	0
+247	25	0
+248	25	0
+249	25	0
+250	25	0
+251	25	0
+252	25	0
+253	25	0
+254	25	0
+255	25	0
+256	25	0
+257	25	0
+258	25	0
+259	25	0
+260	25	0
+261	25	0
+262	25	0
+263	25	0
+264	25	0
+265	25	0
+266	25	0
+267	25	0
+268	25	0
+269	25	0
+270	25	0
+271	25	0
+272	25	0
+273	25	0
+274	25	0
+275	25	0
+276	25	0
+277	25	0
+278	25	0
+279	25	0
+280	25	0
+281	25	0
+282	25	0
+283	25	0
+284	25	0
+285	25	0
+286	25	0
+287	25	0
+288	25	0
+289	25	0
+290	25	0
+291	25	0
+292	25	0
+293	25	0
+294	25	0
+295	25	0
+296	25	0
+297	25	0
+298	25	0
+299	25	0
+300	25	0
+301	25	0
+302	25	0
+303	25	0
+304	25	0
+305	25	0
+306	25	0
+307	25	0
+308	25	0
+309	25	0
+310	25	0
+311	25	0
+312	25	0
+313	25	0
+314	25	0
+315	25	0
+316	25	0
+317	25	0
+318	25	0
+319	25	0
+320	25	0
+321	25	0
+322	25	0
+323	25	0
+324	25	0
+325	25	0
+326	25	0
+327	25	0
+328	25	0
+329	25	0
+330	25	0
+331	25	0
+332	25	0
+333	25	0
+334	25	0
+335	25	0
+336	25	0
+337	25	0
+338	25	0
+339	25	0
+340	25	0
+341	25	0
+342	25	0
+343	25	0
+344	25	0
+345	25	0
+346	25	0
+347	25	0
+348	25	0
+349	25	0
+350	25	0
+351	25	0
+352	25	0
+353	25	0
+354	25	0
+355	25	0
+356	25	0
+357	25	0
+358	25	0
+359	25	0
+360	25	0
+0	25.5	0
+1	25.5	0
+2	25.5	0
+3	25.5	0
+4	25.5	0
+5	25.5	0
+6	25.5	0
+7	25.5	0
+8	25.5	0
+9	25.5	0
+10	25.5	0
+11	25.5	0
+12	25.5	0
+13	25.5	0
+14	25.5	0
+15	25.5	0
+16	25.5	0
+17	25.5	0
+18	25.5	0
+19	25.5	0
+20	25.5	0
+21	25.5	0
+22	25.5	0
+23	25.5	0
+24	25.5	0
+25	25.5	0
+26	25.5	0
+27	25.5	0
+28	25.5	0
+29	25.5	0
+30	25.5	0
+31	25.5	0
+32	25.5	0
+33	25.5	0
+34	25.5	0
+35	25.5	0
+36	25.5	0
+37	25.5	0
+38	25.5	0
+39	25.5	0
+40	25.5	0
+41	25.5	0
+42	25.5	0
+43	25.5	0
+44	25.5	0
+45	25.5	0
+46	25.5	0
+47	25.5	0
+48	25.5	0
+49	25.5	0
+50	25.5	0
+51	25.5	0
+52	25.5	0
+53	25.5	0
+54	25.5	0
+55	25.5	0
+56	25.5	0
+57	25.5	0
+58	25.5	0
+59	25.5	0
+60	25.5	0
+61	25.5	0
+62	25.5	0
+63	25.5	0
+64	25.5	0
+65	25.5	0
+66	25.5	0
+67	25.5	0
+68	25.5	0
+69	25.5	0
+70	25.5	0
+71	25.5	0
+72	25.5	0
+73	25.5	0
+74	25.5	0
+75	25.5	0
+76	25.5	0
+77	25.5	0
+78	25.5	0
+79	25.5	0
+80	25.5	0
+81	25.5	0
+82	25.5	0
+83	25.5	0
+84	25.5	0
+85	25.5	0
+86	25.5	0
+87	25.5	0
+88	25.5	0
+89	25.5	0
+90	25.5	0
+91	25.5	0
+92	25.5	0
+93	25.5	0
+94	25.5	0
+95	25.5	0
+96	25.5	0
+97	25.5	0
+98	25.5	0
+99	25.5	0
+100	25.5	0
+101	25.5	0
+102	25.5	0
+103	25.5	0
+104	25.5	0
+105	25.5	0
+106	25.5	0
+107	25.5	0
+108	25.5	0
+109	25.5	0
+110	25.5	0
+111	25.5	0
+112	25.5	0
+113	25.5	0
+114	25.5	0
+115	25.5	0
+116	25.5	0
+117	25.5	0
+118	25.5	0
+119	25.5	0
+120	25.5	0
+121	25.5	0
+122	25.5	0
+123	25.5	0
+124	25.5	0
+125	25.5	0
+126	25.5	0
+127	25.5	0
+128	25.5	0
+129	25.5	0
+130	25.5	0
+131	25.5	0
+132	25.5	0
+133	25.5	0
+134	25.5	0
+135	25.5	0
+136	25.5	0
+137	25.5	0
+138	25.5	0
+139	25.5	0
+140	25.5	0
+141	25.5	0
+142	25.5	0
+143	25.5	0
+144	25.5	0
+145	25.5	0
+146	25.5	0
+147	25.5	0
+148	25.5	0
+149	25.5	0
+150	25.5	0
+151	25.5	0
+152	25.5	0
+153	25.5	0
+154	25.5	0
+155	25.5	0
+156	25.5	0
+157	25.5	0
+158	25.5	0
+159	25.5	0
+160	25.5	0
+161	25.5	0
+162	25.5	0
+163	25.5	0
+164	25.5	0
+165	25.5	0
+166	25.5	0
+167	25.5	0
+168	25.5	0
+169	25.5	0
+170	25.5	0
+171	25.5	0
+172	25.5	0
+173	25.5	0
+174	25.5	0
+175	25.5	0
+176	25.5	0
+177	25.5	0
+178	25.5	0
+179	25.5	0
+180	25.5	0
+181	25.5	0
+182	25.5	0
+183	25.5	0
+184	25.5	0
+185	25.5	0
+186	25.5	0
+187	25.5	0
+188	25.5	0
+189	25.5	0
+190	25.5	0
+191	25.5	0
+192	25.5	0
+193	25.5	0
+194	25.5	0
+195	25.5	0
+196	25.5	0
+197	25.5	0
+198	25.5	0
+199	25.5	0
+200	25.5	0
+201	25.5	0
+202	25.5	0
+203	25.5	0
+204	25.5	0
+205	25.5	0
+206	25.5	0
+207	25.5	0
+208	25.5	0
+209	25.5	0
+210	25.5	0
+211	25.5	0
+212	25.5	0
+213	25.5	0
+214	25.5	0
+215	25.5	0
+216	25.5	0
+217	25.5	0
+218	25.5	0
+219	25.5	0
+220	25.5	0
+221	25.5	0
+222	25.5	0
+223	25.5	0
+224	25.5	0
+225	25.5	0
+226	25.5	0
+227	25.5	0
+228	25.5	0
+229	25.5	0
+230	25.5	0
+231	25.5	0
+232	25.5	0
+233	25.5	0
+234	25.5	0
+235	25.5	0
+236	25.5	0
+237	25.5	0
+238	25.5	0
+239	25.5	0
+240	25.5	0
+241	25.5	0
+242	25.5	0
+243	25.5	0
+244	25.5	0
+245	25.5	0
+246	25.5	0
+247	25.5	0
+248	25.5	0
+249	25.5	0
+250	25.5	0
+251	25.5	0
+252	25.5	0
+253	25.5	0
+254	25.5	0
+255	25.5	0
+256	25.5	0
+257	25.5	0
+258	25.5	0
+259	25.5	0
+260	25.5	0
+261	25.5	0
+262	25.5	0
+263	25.5	0
+264	25.5	0
+265	25.5	0
+266	25.5	0
+267	25.5	0
+268	25.5	0
+269	25.5	0
+270	25.5	0
+271	25.5	0
+272	25.5	0
+273	25.5	0
+274	25.5	0
+275	25.5	0
+276	25.5	0
+277	25.5	0
+278	25.5	0
+279	25.5	0
+280	25.5	0
+281	25.5	0
+282	25.5	0
+283	25.5	0
+284	25.5	0
+285	25.5	0
+286	25.5	0
+287	25.5	0
+288	25.5	0
+289	25.5	0
+290	25.5	0
+291	25.5	0
+292	25.5	0
+293	25.5	0
+294	25.5	0
+295	25.5	0
+296	25.5	0
+297	25.5	0
+298	25.5	0
+299	25.5	0
+300	25.5	0
+301	25.5	0
+302	25.5	0
+303	25.5	0
+304	25.5	0
+305	25.5	0
+306	25.5	0
+307	25.5	0
+308	25.5	0
+309	25.5	0
+310	25.5	0
+311	25.5	0
+312	25.5	0
+313	25.5	0
+314	25.5	0
+315	25.5	0
+316	25.5	0
+317	25.5	0
+318	25.5	0
+319	25.5	0
+320	25.5	0
+321	25.5	0
+322	25.5	0
+323	25.5	0
+324	25.5	0
+325	25.5	0
+326	25.5	0
+327	25.5	0
+328	25.5	0
+329	25.5	0
+330	25.5	0
+331	25.5	0
+332	25.5	0
+333	25.5	0
+334	25.5	0
+335	25.5	0
+336	25.5	0
+337	25.5	0
+338	25.5	0
+339	25.5	0
+340	25.5	0
+341	25.5	0
+342	25.5	0
+343	25.5	0
+344	25.5	0
+345	25.5	0
+346	25.5	0
+347	25.5	0
+348	25.5	0
+349	25.5	0
+350	25.5	0
+351	25.5	0
+352	25.5	0
+353	25.5	0
+354	25.5	0
+355	25.5	0
+356	25.5	0
+357	25.5	0
+358	25.5	0
+359	25.5	0
+360	25.5	0
+0	26	0
+1	26	0
+2	26	0
+3	26	0
+4	26	0
+5	26	0
+6	26	0
+7	26	0
+8	26	0
+9	26	0
+10	26	0
+11	26	0
+12	26	0
+13	26	0
+14	26	0
+15	26	0
+16	26	0
+17	26	0
+18	26	0
+19	26	0
+20	26	0
+21	26	0
+22	26	0
+23	26	0
+24	26	0
+25	26	0
+26	26	0
+27	26	0
+28	26	0
+29	26	0
+30	26	0
+31	26	0
+32	26	0
+33	26	0
+34	26	0
+35	26	0
+36	26	0
+37	26	0
+38	26	0
+39	26	0
+40	26	0
+41	26	0
+42	26	0
+43	26	0
+44	26	0
+45	26	0
+46	26	0
+47	26	0
+48	26	0
+49	26	0
+50	26	0
+51	26	0
+52	26	0
+53	26	0
+54	26	0
+55	26	0
+56	26	0
+57	26	0
+58	26	0
+59	26	0
+60	26	0
+61	26	0
+62	26	0
+63	26	0
+64	26	0
+65	26	0
+66	26	0
+67	26	0
+68	26	0
+69	26	0
+70	26	0
+71	26	0
+72	26	0
+73	26	0
+74	26	0
+75	26	0
+76	26	0
+77	26	0
+78	26	0
+79	26	0
+80	26	0
+81	26	0
+82	26	0
+83	26	0
+84	26	0
+85	26	0
+86	26	0
+87	26	0
+88	26	0
+89	26	0
+90	26	0
+91	26	0
+92	26	0
+93	26	0
+94	26	0
+95	26	0
+96	26	0
+97	26	0
+98	26	0
+99	26	0
+100	26	0
+101	26	0
+102	26	0
+103	26	0
+104	26	0
+105	26	0
+106	26	0
+107	26	0
+108	26	0
+109	26	0
+110	26	0
+111	26	0
+112	26	0
+113	26	0
+114	26	0
+115	26	0
+116	26	0
+117	26	0
+118	26	0
+119	26	0
+120	26	0
+121	26	0
+122	26	0
+123	26	0
+124	26	0
+125	26	0
+126	26	0
+127	26	0
+128	26	0
+129	26	0
+130	26	0
+131	26	0
+132	26	0
+133	26	0
+134	26	0
+135	26	0
+136	26	0
+137	26	0
+138	26	0
+139	26	0
+140	26	0
+141	26	0
+142	26	0
+143	26	0
+144	26	0
+145	26	0
+146	26	0
+147	26	0
+148	26	0
+149	26	0
+150	26	0
+151	26	0
+152	26	0
+153	26	0
+154	26	0
+155	26	0
+156	26	0
+157	26	0
+158	26	0
+159	26	0
+160	26	0
+161	26	0
+162	26	0
+163	26	0
+164	26	0
+165	26	0
+166	26	0
+167	26	0
+168	26	0
+169	26	0
+170	26	0
+171	26	0
+172	26	0
+173	26	0
+174	26	0
+175	26	0
+176	26	0
+177	26	0
+178	26	0
+179	26	0
+180	26	0
+181	26	0
+182	26	0
+183	26	0
+184	26	0
+185	26	0
+186	26	0
+187	26	0
+188	26	0
+189	26	0
+190	26	0
+191	26	0
+192	26	0
+193	26	0
+194	26	0
+195	26	0
+196	26	0
+197	26	0
+198	26	0
+199	26	0
+200	26	0
+201	26	0
+202	26	0
+203	26	0
+204	26	0
+205	26	0
+206	26	0
+207	26	0
+208	26	0
+209	26	0
+210	26	0
+211	26	0
+212	26	0
+213	26	0
+214	26	0
+215	26	0
+216	26	0
+217	26	0
+218	26	0
+219	26	0
+220	26	0
+221	26	0
+222	26	0
+223	26	0
+224	26	0
+225	26	0
+226	26	0
+227	26	0
+228	26	0
+229	26	0
+230	26	0
+231	26	0
+232	26	0
+233	26	0
+234	26	0
+235	26	0
+236	26	0
+237	26	0
+238	26	0
+239	26	0
+240	26	0
+241	26	0
+242	26	0
+243	26	0
+244	26	0
+245	26	0
+246	26	0
+247	26	0
+248	26	0
+249	26	0
+250	26	0
+251	26	0
+252	26	0
+253	26	0
+254	26	0
+255	26	0
+256	26	0
+257	26	0
+258	26	0
+259	26	0
+260	26	0
+261	26	0
+262	26	0
+263	26	0
+264	26	0
+265	26	0
+266	26	0
+267	26	0
+268	26	0
+269	26	0
+270	26	0
+271	26	0
+272	26	0
+273	26	0
+274	26	0
+275	26	0
+276	26	0
+277	26	0
+278	26	0
+279	26	0
+280	26	0
+281	26	0
+282	26	0
+283	26	0
+284	26	0
+285	26	0
+286	26	0
+287	26	0
+288	26	0
+289	26	0
+290	26	0
+291	26	0
+292	26	0
+293	26	0
+294	26	0
+295	26	0
+296	26	0
+297	26	0
+298	26	0
+299	26	0
+300	26	0
+301	26	0
+302	26	0
+303	26	0
+304	26	0
+305	26	0
+306	26	0
+307	26	0
+308	26	0
+309	26	0
+310	26	0
+311	26	0
+312	26	0
+313	26	0
+314	26	0
+315	26	0
+316	26	0
+317	26	0
+318	26	0
+319	26	0
+320	26	0
+321	26	0
+322	26	0
+323	26	0
+324	26	0
+325	26	0
+326	26	0
+327	26	0
+328	26	0
+329	26	0
+330	26	0
+331	26	0
+332	26	0
+333	26	0
+334	26	0
+335	26	0
+336	26	0
+337	26	0
+338	26	0
+339	26	0
+340	26	0
+341	26	0
+342	26	0
+343	26	0
+344	26	0
+345	26	0
+346	26	0
+347	26	0
+348	26	0
+349	26	0
+350	26	0
+351	26	0
+352	26	0
+353	26	0
+354	26	0
+355	26	0
+356	26	0
+357	26	0
+358	26	0
+359	26	0
+360	26	0
+0	26.5	0
+1	26.5	0
+2	26.5	0
+3	26.5	0
+4	26.5	0
+5	26.5	0
+6	26.5	0
+7	26.5	0
+8	26.5	0
+9	26.5	0
+10	26.5	0
+11	26.5	0
+12	26.5	0
+13	26.5	0
+14	26.5	0
+15	26.5	0
+16	26.5	0
+17	26.5	0
+18	26.5	0
+19	26.5	0
+20	26.5	0
+21	26.5	0
+22	26.5	0
+23	26.5	0
+24	26.5	0
+25	26.5	0
+26	26.5	0
+27	26.5	0
+28	26.5	0
+29	26.5	0
+30	26.5	0
+31	26.5	0
+32	26.5	0
+33	26.5	0
+34	26.5	0
+35	26.5	0
+36	26.5	0
+37	26.5	0
+38	26.5	0
+39	26.5	0
+40	26.5	0
+41	26.5	0
+42	26.5	0
+43	26.5	0
+44	26.5	0
+45	26.5	0
+46	26.5	0
+47	26.5	0
+48	26.5	0
+49	26.5	0
+50	26.5	0
+51	26.5	0
+52	26.5	0
+53	26.5	0
+54	26.5	0
+55	26.5	0
+56	26.5	0
+57	26.5	0
+58	26.5	0
+59	26.5	0
+60	26.5	0
+61	26.5	0
+62	26.5	0
+63	26.5	0
+64	26.5	0
+65	26.5	0
+66	26.5	0
+67	26.5	0
+68	26.5	0
+69	26.5	0
+70	26.5	0
+71	26.5	0
+72	26.5	0
+73	26.5	0
+74	26.5	0
+75	26.5	0
+76	26.5	0
+77	26.5	0
+78	26.5	0
+79	26.5	0
+80	26.5	0
+81	26.5	0
+82	26.5	0
+83	26.5	0
+84	26.5	0
+85	26.5	0
+86	26.5	0
+87	26.5	0
+88	26.5	0
+89	26.5	0
+90	26.5	0
+91	26.5	0
+92	26.5	0
+93	26.5	0
+94	26.5	0
+95	26.5	0
+96	26.5	0
+97	26.5	0
+98	26.5	0
+99	26.5	0
+100	26.5	0
+101	26.5	0
+102	26.5	0
+103	26.5	0
+104	26.5	0
+105	26.5	0
+106	26.5	0
+107	26.5	0
+108	26.5	0
+109	26.5	0
+110	26.5	0
+111	26.5	0
+112	26.5	0
+113	26.5	0
+114	26.5	0
+115	26.5	0
+116	26.5	0
+117	26.5	0
+118	26.5	0
+119	26.5	0
+120	26.5	0
+121	26.5	0
+122	26.5	0
+123	26.5	0
+124	26.5	0
+125	26.5	0
+126	26.5	0
+127	26.5	0
+128	26.5	0
+129	26.5	0
+130	26.5	0
+131	26.5	0
+132	26.5	0
+133	26.5	0
+134	26.5	0
+135	26.5	0
+136	26.5	0
+137	26.5	0
+138	26.5	0
+139	26.5	0
+140	26.5	0
+141	26.5	0
+142	26.5	0
+143	26.5	0
+144	26.5	0
+145	26.5	0
+146	26.5	0
+147	26.5	0
+148	26.5	0
+149	26.5	0
+150	26.5	0
+151	26.5	0
+152	26.5	0
+153	26.5	0
+154	26.5	0
+155	26.5	0
+156	26.5	0
+157	26.5	0
+158	26.5	0
+159	26.5	0
+160	26.5	0
+161	26.5	0
+162	26.5	0
+163	26.5	0
+164	26.5	0
+165	26.5	0
+166	26.5	0
+167	26.5	0
+168	26.5	0
+169	26.5	0
+170	26.5	0
+171	26.5	0
+172	26.5	0
+173	26.5	0
+174	26.5	0
+175	26.5	0
+176	26.5	0
+177	26.5	0
+178	26.5	0
+179	26.5	0
+180	26.5	0
+181	26.5	0
+182	26.5	0
+183	26.5	0
+184	26.5	0
+185	26.5	0
+186	26.5	0
+187	26.5	0
+188	26.5	0
+189	26.5	0
+190	26.5	0
+191	26.5	0
+192	26.5	0
+193	26.5	0
+194	26.5	0
+195	26.5	0
+196	26.5	0
+197	26.5	0
+198	26.5	0
+199	26.5	0
+200	26.5	0
+201	26.5	0
+202	26.5	0
+203	26.5	0
+204	26.5	0
+205	26.5	0
+206	26.5	0
+207	26.5	0
+208	26.5	0
+209	26.5	0
+210	26.5	0
+211	26.5	0
+212	26.5	0
+213	26.5	0
+214	26.5	0
+215	26.5	0
+216	26.5	0
+217	26.5	0
+218	26.5	0
+219	26.5	0
+220	26.5	0
+221	26.5	0
+222	26.5	0
+223	26.5	0
+224	26.5	0
+225	26.5	0
+226	26.5	0
+227	26.5	0
+228	26.5	0
+229	26.5	0
+230	26.5	0
+231	26.5	0
+232	26.5	0
+233	26.5	0
+234	26.5	0
+235	26.5	0
+236	26.5	0
+237	26.5	0
+238	26.5	0
+239	26.5	0
+240	26.5	0
+241	26.5	0
+242	26.5	0
+243	26.5	0
+244	26.5	0
+245	26.5	0
+246	26.5	0
+247	26.5	0
+248	26.5	0
+249	26.5	0
+250	26.5	0
+251	26.5	0
+252	26.5	0
+253	26.5	0
+254	26.5	0
+255	26.5	0
+256	26.5	0
+257	26.5	0
+258	26.5	0
+259	26.5	0
+260	26.5	0
+261	26.5	0
+262	26.5	0
+263	26.5	0
+264	26.5	0
+265	26.5	0
+266	26.5	0
+267	26.5	0
+268	26.5	0
+269	26.5	0
+270	26.5	0
+271	26.5	0
+272	26.5	0
+273	26.5	0
+274	26.5	0
+275	26.5	0
+276	26.5	0
+277	26.5	0
+278	26.5	0
+279	26.5	0
+280	26.5	0
+281	26.5	0
+282	26.5	0
+283	26.5	0
+284	26.5	0
+285	26.5	0
+286	26.5	0
+287	26.5	0
+288	26.5	0
+289	26.5	0
+290	26.5	0
+291	26.5	0
+292	26.5	0
+293	26.5	0
+294	26.5	0
+295	26.5	0
+296	26.5	0
+297	26.5	0
+298	26.5	0
+299	26.5	0
+300	26.5	0
+301	26.5	0
+302	26.5	0
+303	26.5	0
+304	26.5	0
+305	26.5	0
+306	26.5	0
+307	26.5	0
+308	26.5	0
+309	26.5	0
+310	26.5	0
+311	26.5	0
+312	26.5	0
+313	26.5	0
+314	26.5	0
+315	26.5	0
+316	26.5	0
+317	26.5	0
+318	26.5	0
+319	26.5	0
+320	26.5	0
+321	26.5	0
+322	26.5	0
+323	26.5	0
+324	26.5	0
+325	26.5	0
+326	26.5	0
+327	26.5	0
+328	26.5	0
+329	26.5	0
+330	26.5	0
+331	26.5	0
+332	26.5	0
+333	26.5	0
+334	26.5	0
+335	26.5	0
+336	26.5	0
+337	26.5	0
+338	26.5	0
+339	26.5	0
+340	26.5	0
+341	26.5	0
+342	26.5	0
+343	26.5	0
+344	26.5	0
+345	26.5	0
+346	26.5	0
+347	26.5	0
+348	26.5	0
+349	26.5	0
+350	26.5	0
+351	26.5	0
+352	26.5	0
+353	26.5	0
+354	26.5	0
+355	26.5	0
+356	26.5	0
+357	26.5	0
+358	26.5	0
+359	26.5	0
+360	26.5	0
+0	27	0
+1	27	0
+2	27	0
+3	27	0
+4	27	0
+5	27	0
+6	27	0
+7	27	0
+8	27	0
+9	27	0
+10	27	0
+11	27	0
+12	27	0
+13	27	0
+14	27	0
+15	27	0
+16	27	0
+17	27	0
+18	27	0
+19	27	0
+20	27	0
+21	27	0
+22	27	0
+23	27	0
+24	27	0
+25	27	0
+26	27	0
+27	27	0
+28	27	0
+29	27	0
+30	27	0
+31	27	0
+32	27	0
+33	27	0
+34	27	0
+35	27	0
+36	27	0
+37	27	0
+38	27	0
+39	27	0
+40	27	0
+41	27	0
+42	27	0
+43	27	0
+44	27	0
+45	27	0
+46	27	0
+47	27	0
+48	27	0
+49	27	0
+50	27	0
+51	27	0
+52	27	0
+53	27	0
+54	27	0
+55	27	0
+56	27	0
+57	27	0
+58	27	0
+59	27	0
+60	27	0
+61	27	0
+62	27	0
+63	27	0
+64	27	0
+65	27	0
+66	27	0
+67	27	0
+68	27	0
+69	27	0
+70	27	0
+71	27	0
+72	27	0
+73	27	0
+74	27	0
+75	27	0
+76	27	0
+77	27	0
+78	27	0
+79	27	0
+80	27	0
+81	27	0
+82	27	0
+83	27	0
+84	27	0
+85	27	0
+86	27	0
+87	27	0
+88	27	0
+89	27	0
+90	27	0
+91	27	0
+92	27	0
+93	27	0
+94	27	0
+95	27	0
+96	27	0
+97	27	0
+98	27	0
+99	27	0
+100	27	0
+101	27	0
+102	27	0
+103	27	0
+104	27	0
+105	27	0
+106	27	0
+107	27	0
+108	27	0
+109	27	0
+110	27	0
+111	27	0
+112	27	0
+113	27	0
+114	27	0
+115	27	0
+116	27	0
+117	27	0
+118	27	0
+119	27	0
+120	27	0
+121	27	0
+122	27	0
+123	27	0
+124	27	0
+125	27	0
+126	27	0
+127	27	0
+128	27	0
+129	27	0
+130	27	0
+131	27	0
+132	27	0
+133	27	0
+134	27	0
+135	27	0
+136	27	0
+137	27	0
+138	27	0
+139	27	0
+140	27	0
+141	27	0
+142	27	0
+143	27	0
+144	27	0
+145	27	0
+146	27	0
+147	27	0
+148	27	0
+149	27	0
+150	27	0
+151	27	0
+152	27	0
+153	27	0
+154	27	0
+155	27	0
+156	27	0
+157	27	0
+158	27	0
+159	27	0
+160	27	0
+161	27	0
+162	27	0
+163	27	0
+164	27	0
+165	27	0
+166	27	0
+167	27	0
+168	27	0
+169	27	0
+170	27	0
+171	27	0
+172	27	0
+173	27	0
+174	27	0
+175	27	0
+176	27	0
+177	27	0
+178	27	0
+179	27	0
+180	27	0
+181	27	0
+182	27	0
+183	27	0
+184	27	0
+185	27	0
+186	27	0
+187	27	0
+188	27	0
+189	27	0
+190	27	0
+191	27	0
+192	27	0
+193	27	0
+194	27	0
+195	27	0
+196	27	0
+197	27	0
+198	27	0
+199	27	0
+200	27	0
+201	27	0
+202	27	0
+203	27	0
+204	27	0
+205	27	0
+206	27	0
+207	27	0
+208	27	0
+209	27	0
+210	27	0
+211	27	0
+212	27	0
+213	27	0
+214	27	0
+215	27	0
+216	27	0
+217	27	0
+218	27	0
+219	27	0
+220	27	0
+221	27	0
+222	27	0
+223	27	0
+224	27	0
+225	27	0
+226	27	0
+227	27	0
+228	27	0
+229	27	0
+230	27	0
+231	27	0
+232	27	0
+233	27	0
+234	27	0
+235	27	0
+236	27	0
+237	27	0
+238	27	0
+239	27	0
+240	27	0
+241	27	0
+242	27	0
+243	27	0
+244	27	0
+245	27	0
+246	27	0
+247	27	0
+248	27	0
+249	27	0
+250	27	0
+251	27	0
+252	27	0
+253	27	0
+254	27	0
+255	27	0
+256	27	0
+257	27	0
+258	27	0
+259	27	0
+260	27	0
+261	27	0
+262	27	0
+263	27	0
+264	27	0
+265	27	0
+266	27	0
+267	27	0
+268	27	0
+269	27	0
+270	27	0
+271	27	0
+272	27	0
+273	27	0
+274	27	0
+275	27	0
+276	27	0
+277	27	0
+278	27	0
+279	27	0
+280	27	0
+281	27	0
+282	27	0
+283	27	0
+284	27	0
+285	27	0
+286	27	0
+287	27	0
+288	27	0
+289	27	0
+290	27	0
+291	27	0
+292	27	0
+293	27	0
+294	27	0
+295	27	0
+296	27	0
+297	27	0
+298	27	0
+299	27	0
+300	27	0
+301	27	0
+302	27	0
+303	27	0
+304	27	0
+305	27	0
+306	27	0
+307	27	0
+308	27	0
+309	27	0
+310	27	0
+311	27	0
+312	27	0
+313	27	0
+314	27	0
+315	27	0
+316	27	0
+317	27	0
+318	27	0
+319	27	0
+320	27	0
+321	27	0
+322	27	0
+323	27	0
+324	27	0
+325	27	0
+326	27	0
+327	27	0
+328	27	0
+329	27	0
+330	27	0
+331	27	0
+332	27	0
+333	27	0
+334	27	0
+335	27	0
+336	27	0
+337	27	0
+338	27	0
+339	27	0
+340	27	0
+341	27	0
+342	27	0
+343	27	0
+344	27	0
+345	27	0
+346	27	0
+347	27	0
+348	27	0
+349	27	0
+350	27	0
+351	27	0
+352	27	0
+353	27	0
+354	27	0
+355	27	0
+356	27	0
+357	27	0
+358	27	0
+359	27	0
+360	27	0
+0	27.5	0
+1	27.5	0
+2	27.5	0
+3	27.5	0
+4	27.5	0
+5	27.5	0
+6	27.5	0
+7	27.5	0
+8	27.5	0
+9	27.5	0
+10	27.5	0
+11	27.5	0
+12	27.5	0
+13	27.5	0
+14	27.5	0
+15	27.5	0
+16	27.5	0
+17	27.5	0
+18	27.5	0
+19	27.5	0
+20	27.5	0
+21	27.5	0
+22	27.5	0
+23	27.5	0
+24	27.5	0
+25	27.5	0
+26	27.5	0
+27	27.5	0
+28	27.5	0
+29	27.5	0
+30	27.5	0
+31	27.5	0
+32	27.5	0
+33	27.5	0
+34	27.5	0
+35	27.5	0
+36	27.5	0
+37	27.5	0
+38	27.5	0
+39	27.5	0
+40	27.5	0
+41	27.5	0
+42	27.5	0
+43	27.5	0
+44	27.5	0
+45	27.5	0
+46	27.5	0
+47	27.5	0
+48	27.5	0
+49	27.5	0
+50	27.5	0
+51	27.5	0
+52	27.5	0
+53	27.5	0
+54	27.5	0
+55	27.5	0
+56	27.5	0
+57	27.5	0
+58	27.5	0
+59	27.5	0
+60	27.5	0
+61	27.5	0
+62	27.5	0
+63	27.5	0
+64	27.5	0
+65	27.5	0
+66	27.5	0
+67	27.5	0
+68	27.5	0
+69	27.5	0
+70	27.5	0
+71	27.5	0
+72	27.5	0
+73	27.5	0
+74	27.5	0
+75	27.5	0
+76	27.5	0
+77	27.5	0
+78	27.5	0
+79	27.5	0
+80	27.5	0
+81	27.5	0
+82	27.5	0
+83	27.5	0
+84	27.5	0
+85	27.5	0
+86	27.5	0
+87	27.5	0
+88	27.5	0
+89	27.5	0
+90	27.5	0
+91	27.5	0
+92	27.5	0
+93	27.5	0
+94	27.5	0
+95	27.5	0
+96	27.5	0
+97	27.5	0
+98	27.5	0
+99	27.5	0
+100	27.5	0
+101	27.5	0
+102	27.5	0
+103	27.5	0
+104	27.5	0
+105	27.5	0
+106	27.5	0
+107	27.5	0
+108	27.5	0
+109	27.5	0
+110	27.5	0
+111	27.5	0
+112	27.5	0
+113	27.5	0
+114	27.5	0
+115	27.5	0
+116	27.5	0
+117	27.5	0
+118	27.5	0
+119	27.5	0
+120	27.5	0
+121	27.5	0
+122	27.5	0
+123	27.5	0
+124	27.5	0
+125	27.5	0
+126	27.5	0
+127	27.5	0
+128	27.5	0
+129	27.5	0
+130	27.5	0
+131	27.5	0
+132	27.5	0
+133	27.5	0
+134	27.5	0
+135	27.5	0
+136	27.5	0
+137	27.5	0
+138	27.5	0
+139	27.5	0
+140	27.5	0
+141	27.5	0
+142	27.5	0
+143	27.5	0
+144	27.5	0
+145	27.5	0
+146	27.5	0
+147	27.5	0
+148	27.5	0
+149	27.5	0
+150	27.5	0
+151	27.5	0
+152	27.5	0
+153	27.5	0
+154	27.5	0
+155	27.5	0
+156	27.5	0
+157	27.5	0
+158	27.5	0
+159	27.5	0
+160	27.5	0
+161	27.5	0
+162	27.5	0
+163	27.5	0
+164	27.5	0
+165	27.5	0
+166	27.5	0
+167	27.5	0
+168	27.5	0
+169	27.5	0
+170	27.5	0
+171	27.5	0
+172	27.5	0
+173	27.5	0
+174	27.5	0
+175	27.5	0
+176	27.5	0
+177	27.5	0
+178	27.5	0
+179	27.5	0
+180	27.5	0
+181	27.5	0
+182	27.5	0
+183	27.5	0
+184	27.5	0
+185	27.5	0
+186	27.5	0
+187	27.5	0
+188	27.5	0
+189	27.5	0
+190	27.5	0
+191	27.5	0
+192	27.5	0
+193	27.5	0
+194	27.5	0
+195	27.5	0
+196	27.5	0
+197	27.5	0
+198	27.5	0
+199	27.5	0
+200	27.5	0
+201	27.5	0
+202	27.5	0
+203	27.5	0
+204	27.5	0
+205	27.5	0
+206	27.5	0
+207	27.5	0
+208	27.5	0
+209	27.5	0
+210	27.5	0
+211	27.5	0
+212	27.5	0
+213	27.5	0
+214	27.5	0
+215	27.5	0
+216	27.5	0
+217	27.5	0
+218	27.5	0
+219	27.5	0
+220	27.5	0
+221	27.5	0
+222	27.5	0
+223	27.5	0
+224	27.5	0
+225	27.5	0
+226	27.5	0
+227	27.5	0
+228	27.5	0
+229	27.5	0
+230	27.5	0
+231	27.5	0
+232	27.5	0
+233	27.5	0
+234	27.5	0
+235	27.5	0
+236	27.5	0
+237	27.5	0
+238	27.5	0
+239	27.5	0
+240	27.5	0
+241	27.5	0
+242	27.5	0
+243	27.5	0
+244	27.5	0
+245	27.5	0
+246	27.5	0
+247	27.5	0
+248	27.5	0
+249	27.5	0
+250	27.5	0
+251	27.5	0
+252	27.5	0
+253	27.5	0
+254	27.5	0
+255	27.5	0
+256	27.5	0
+257	27.5	0
+258	27.5	0
+259	27.5	0
+260	27.5	0
+261	27.5	0
+262	27.5	0
+263	27.5	0
+264	27.5	0
+265	27.5	0
+266	27.5	0
+267	27.5	0
+268	27.5	0
+269	27.5	0
+270	27.5	0
+271	27.5	0
+272	27.5	0
+273	27.5	0
+274	27.5	0
+275	27.5	0
+276	27.5	0
+277	27.5	0
+278	27.5	0
+279	27.5	0
+280	27.5	0
+281	27.5	0
+282	27.5	0
+283	27.5	0
+284	27.5	0
+285	27.5	0
+286	27.5	0
+287	27.5	0
+288	27.5	0
+289	27.5	0
+290	27.5	0
+291	27.5	0
+292	27.5	0
+293	27.5	0
+294	27.5	0
+295	27.5	0
+296	27.5	0
+297	27.5	0
+298	27.5	0
+299	27.5	0
+300	27.5	0
+301	27.5	0
+302	27.5	0
+303	27.5	0
+304	27.5	0
+305	27.5	0
+306	27.5	0
+307	27.5	0
+308	27.5	0
+309	27.5	0
+310	27.5	0
+311	27.5	0
+312	27.5	0
+313	27.5	0
+314	27.5	0
+315	27.5	0
+316	27.5	0
+317	27.5	0
+318	27.5	0
+319	27.5	0
+320	27.5	0
+321	27.5	0
+322	27.5	0
+323	27.5	0
+324	27.5	0
+325	27.5	0
+326	27.5	0
+327	27.5	0
+328	27.5	0
+329	27.5	0
+330	27.5	0
+331	27.5	0
+332	27.5	0
+333	27.5	0
+334	27.5	0
+335	27.5	0
+336	27.5	0
+337	27.5	0
+338	27.5	0
+339	27.5	0
+340	27.5	0
+341	27.5	0
+342	27.5	0
+343	27.5	0
+344	27.5	0
+345	27.5	0
+346	27.5	0
+347	27.5	0
+348	27.5	0
+349	27.5	0
+350	27.5	0
+351	27.5	0
+352	27.5	0
+353	27.5	0
+354	27.5	0
+355	27.5	0
+356	27.5	0
+357	27.5	0
+358	27.5	0
+359	27.5	0
+360	27.5	0
+0	28	0
+1	28	0
+2	28	0
+3	28	0
+4	28	0
+5	28	0
+6	28	0
+7	28	0
+8	28	0
+9	28	0
+10	28	0
+11	28	0
+12	28	0
+13	28	0
+14	28	0
+15	28	0
+16	28	0
+17	28	0
+18	28	0
+19	28	0
+20	28	0
+21	28	0
+22	28	0
+23	28	0
+24	28	0
+25	28	0
+26	28	0
+27	28	0
+28	28	0
+29	28	0
+30	28	0
+31	28	0
+32	28	0
+33	28	0
+34	28	0
+35	28	0
+36	28	0
+37	28	0
+38	28	0
+39	28	0
+40	28	0
+41	28	0
+42	28	0
+43	28	0
+44	28	0
+45	28	0
+46	28	0
+47	28	0
+48	28	0
+49	28	0
+50	28	0
+51	28	0
+52	28	0
+53	28	0
+54	28	0
+55	28	0
+56	28	0
+57	28	0
+58	28	0
+59	28	0
+60	28	0
+61	28	0
+62	28	0
+63	28	0
+64	28	0
+65	28	0
+66	28	0
+67	28	0
+68	28	0
+69	28	0
+70	28	0
+71	28	0
+72	28	0
+73	28	0
+74	28	0
+75	28	0
+76	28	0
+77	28	0
+78	28	0
+79	28	0
+80	28	0
+81	28	0
+82	28	0
+83	28	0
+84	28	0
+85	28	0
+86	28	0
+87	28	0
+88	28	0
+89	28	0
+90	28	0
+91	28	0
+92	28	0
+93	28	0
+94	28	0
+95	28	0
+96	28	0
+97	28	0
+98	28	0
+99	28	0
+100	28	0
+101	28	0
+102	28	0
+103	28	0
+104	28	0
+105	28	0
+106	28	0
+107	28	0
+108	28	0
+109	28	0
+110	28	0
+111	28	0
+112	28	0
+113	28	0
+114	28	0
+115	28	0
+116	28	0
+117	28	0
+118	28	0
+119	28	0
+120	28	0
+121	28	0
+122	28	0
+123	28	0
+124	28	0
+125	28	0
+126	28	0
+127	28	0
+128	28	0
+129	28	0
+130	28	0
+131	28	0
+132	28	0
+133	28	0
+134	28	0
+135	28	0
+136	28	0
+137	28	0
+138	28	0
+139	28	0
+140	28	0
+141	28	0
+142	28	0
+143	28	0
+144	28	0
+145	28	0
+146	28	0
+147	28	0
+148	28	0
+149	28	0
+150	28	0
+151	28	0
+152	28	0
+153	28	0
+154	28	0
+155	28	0
+156	28	0
+157	28	0
+158	28	0
+159	28	0
+160	28	0
+161	28	0
+162	28	0
+163	28	0
+164	28	0
+165	28	0
+166	28	0
+167	28	0
+168	28	0
+169	28	0
+170	28	0
+171	28	0
+172	28	0
+173	28	0
+174	28	0
+175	28	0
+176	28	0
+177	28	0
+178	28	0
+179	28	0
+180	28	0
+181	28	0
+182	28	0
+183	28	0
+184	28	0
+185	28	0
+186	28	0
+187	28	0
+188	28	0
+189	28	0
+190	28	0
+191	28	0
+192	28	0
+193	28	0
+194	28	0
+195	28	0
+196	28	0
+197	28	0
+198	28	0
+199	28	0
+200	28	0
+201	28	0
+202	28	0
+203	28	0
+204	28	0
+205	28	0
+206	28	0
+207	28	0
+208	28	0
+209	28	0
+210	28	0
+211	28	0
+212	28	0
+213	28	0
+214	28	0
+215	28	0
+216	28	0
+217	28	0
+218	28	0
+219	28	0
+220	28	0
+221	28	0
+222	28	0
+223	28	0
+224	28	0
+225	28	0
+226	28	0
+227	28	0
+228	28	0
+229	28	0
+230	28	0
+231	28	0
+232	28	0
+233	28	0
+234	28	0
+235	28	0
+236	28	0
+237	28	0
+238	28	0
+239	28	0
+240	28	0
+241	28	0
+242	28	0
+243	28	0
+244	28	0
+245	28	0
+246	28	0
+247	28	0
+248	28	0
+249	28	0
+250	28	0
+251	28	0
+252	28	0
+253	28	0
+254	28	0
+255	28	0
+256	28	0
+257	28	0
+258	28	0
+259	28	0
+260	28	0
+261	28	0
+262	28	0
+263	28	0
+264	28	0
+265	28	0
+266	28	0
+267	28	0
+268	28	0
+269	28	0
+270	28	0
+271	28	0
+272	28	0
+273	28	0
+274	28	0
+275	28	0
+276	28	0
+277	28	0
+278	28	0
+279	28	0
+280	28	0
+281	28	0
+282	28	0
+283	28	0
+284	28	0
+285	28	0
+286	28	0
+287	28	0
+288	28	0
+289	28	0
+290	28	0
+291	28	0
+292	28	0
+293	28	0
+294	28	0
+295	28	0
+296	28	0
+297	28	0
+298	28	0
+299	28	0
+300	28	0
+301	28	0
+302	28	0
+303	28	0
+304	28	0
+305	28	0
+306	28	0
+307	28	0
+308	28	0
+309	28	0
+310	28	0
+311	28	0
+312	28	0
+313	28	0
+314	28	0
+315	28	0
+316	28	0
+317	28	0
+318	28	0
+319	28	0
+320	28	0
+321	28	0
+322	28	0
+323	28	0
+324	28	0
+325	28	0
+326	28	0
+327	28	0
+328	28	0
+329	28	0
+330	28	0
+331	28	0
+332	28	0
+333	28	0
+334	28	0
+335	28	0
+336	28	0
+337	28	0
+338	28	0
+339	28	0
+340	28	0
+341	28	0
+342	28	0
+343	28	0
+344	28	0
+345	28	0
+346	28	0
+347	28	0
+348	28	0
+349	28	0
+350	28	0
+351	28	0
+352	28	0
+353	28	0
+354	28	0
+355	28	0
+356	28	0
+357	28	0
+358	28	0
+359	28	0
+360	28	0
+0	28.5	0
+1	28.5	0
+2	28.5	0
+3	28.5	0
+4	28.5	0
+5	28.5	0
+6	28.5	0
+7	28.5	0
+8	28.5	0
+9	28.5	0
+10	28.5	0
+11	28.5	0
+12	28.5	0
+13	28.5	0
+14	28.5	0
+15	28.5	0
+16	28.5	0
+17	28.5	0
+18	28.5	0
+19	28.5	0
+20	28.5	0
+21	28.5	0
+22	28.5	0
+23	28.5	0
+24	28.5	0
+25	28.5	0
+26	28.5	0
+27	28.5	0
+28	28.5	0
+29	28.5	0
+30	28.5	0
+31	28.5	0
+32	28.5	0
+33	28.5	0
+34	28.5	0
+35	28.5	0
+36	28.5	0
+37	28.5	0
+38	28.5	0
+39	28.5	0
+40	28.5	0
+41	28.5	0
+42	28.5	0
+43	28.5	0
+44	28.5	0
+45	28.5	0
+46	28.5	0
+47	28.5	0
+48	28.5	0
+49	28.5	0
+50	28.5	0
+51	28.5	0
+52	28.5	0
+53	28.5	0
+54	28.5	0
+55	28.5	0
+56	28.5	0
+57	28.5	0
+58	28.5	0
+59	28.5	0
+60	28.5	0
+61	28.5	0
+62	28.5	0
+63	28.5	0
+64	28.5	0
+65	28.5	0
+66	28.5	0
+67	28.5	0
+68	28.5	0
+69	28.5	0
+70	28.5	0
+71	28.5	0
+72	28.5	0
+73	28.5	0
+74	28.5	0
+75	28.5	0
+76	28.5	0
+77	28.5	0
+78	28.5	0
+79	28.5	0
+80	28.5	0
+81	28.5	0
+82	28.5	0
+83	28.5	0
+84	28.5	0
+85	28.5	0
+86	28.5	0
+87	28.5	0
+88	28.5	0
+89	28.5	0
+90	28.5	0
+91	28.5	0
+92	28.5	0
+93	28.5	0
+94	28.5	0
+95	28.5	0
+96	28.5	0
+97	28.5	0
+98	28.5	0
+99	28.5	0
+100	28.5	0
+101	28.5	0
+102	28.5	0
+103	28.5	0
+104	28.5	0
+105	28.5	0
+106	28.5	0
+107	28.5	0
+108	28.5	0
+109	28.5	0
+110	28.5	0
+111	28.5	0
+112	28.5	0
+113	28.5	0
+114	28.5	0
+115	28.5	0
+116	28.5	0
+117	28.5	0
+118	28.5	0
+119	28.5	0
+120	28.5	0
+121	28.5	0
+122	28.5	0
+123	28.5	0
+124	28.5	0
+125	28.5	0
+126	28.5	0
+127	28.5	0
+128	28.5	0
+129	28.5	0
+130	28.5	0
+131	28.5	0
+132	28.5	0
+133	28.5	0
+134	28.5	0
+135	28.5	0
+136	28.5	0
+137	28.5	0
+138	28.5	0
+139	28.5	0
+140	28.5	0
+141	28.5	0
+142	28.5	0
+143	28.5	0
+144	28.5	0
+145	28.5	0
+146	28.5	0
+147	28.5	0
+148	28.5	0
+149	28.5	0
+150	28.5	0
+151	28.5	0
+152	28.5	0
+153	28.5	0
+154	28.5	0
+155	28.5	0
+156	28.5	0
+157	28.5	0
+158	28.5	0
+159	28.5	0
+160	28.5	0
+161	28.5	0
+162	28.5	0
+163	28.5	0
+164	28.5	0
+165	28.5	0
+166	28.5	0
+167	28.5	0
+168	28.5	0
+169	28.5	0
+170	28.5	0
+171	28.5	0
+172	28.5	0
+173	28.5	0
+174	28.5	0
+175	28.5	0
+176	28.5	0
+177	28.5	0
+178	28.5	0
+179	28.5	0
+180	28.5	0
+181	28.5	0
+182	28.5	0
+183	28.5	0
+184	28.5	0
+185	28.5	0
+186	28.5	0
+187	28.5	0
+188	28.5	0
+189	28.5	0
+190	28.5	0
+191	28.5	0
+192	28.5	0
+193	28.5	0
+194	28.5	0
+195	28.5	0
+196	28.5	0
+197	28.5	0
+198	28.5	0
+199	28.5	0
+200	28.5	0
+201	28.5	0
+202	28.5	0
+203	28.5	0
+204	28.5	0
+205	28.5	0
+206	28.5	0
+207	28.5	0
+208	28.5	0
+209	28.5	0
+210	28.5	0
+211	28.5	0
+212	28.5	0
+213	28.5	0
+214	28.5	0
+215	28.5	0
+216	28.5	0
+217	28.5	0
+218	28.5	0
+219	28.5	0
+220	28.5	0
+221	28.5	0
+222	28.5	0
+223	28.5	0
+224	28.5	0
+225	28.5	0
+226	28.5	0
+227	28.5	0
+228	28.5	0
+229	28.5	0
+230	28.5	0
+231	28.5	0
+232	28.5	0
+233	28.5	0
+234	28.5	0
+235	28.5	0
+236	28.5	0
+237	28.5	0
+238	28.5	0
+239	28.5	0
+240	28.5	0
+241	28.5	0
+242	28.5	0
+243	28.5	0
+244	28.5	0
+245	28.5	0
+246	28.5	0
+247	28.5	0
+248	28.5	0
+249	28.5	0
+250	28.5	0
+251	28.5	0
+252	28.5	0
+253	28.5	0
+254	28.5	0
+255	28.5	0
+256	28.5	0
+257	28.5	0
+258	28.5	0
+259	28.5	0
+260	28.5	0
+261	28.5	0
+262	28.5	0
+263	28.5	0
+264	28.5	0
+265	28.5	0
+266	28.5	0
+267	28.5	0
+268	28.5	0
+269	28.5	0
+270	28.5	0
+271	28.5	0
+272	28.5	0
+273	28.5	0
+274	28.5	0
+275	28.5	0
+276	28.5	0
+277	28.5	0
+278	28.5	0
+279	28.5	0
+280	28.5	0
+281	28.5	0
+282	28.5	0
+283	28.5	0
+284	28.5	0
+285	28.5	0
+286	28.5	0
+287	28.5	0
+288	28.5	0
+289	28.5	0
+290	28.5	0
+291	28.5	0
+292	28.5	0
+293	28.5	0
+294	28.5	0
+295	28.5	0
+296	28.5	0
+297	28.5	0
+298	28.5	0
+299	28.5	0
+300	28.5	0
+301	28.5	0
+302	28.5	0
+303	28.5	0
+304	28.5	0
+305	28.5	0
+306	28.5	0
+307	28.5	0
+308	28.5	0
+309	28.5	0
+310	28.5	0
+311	28.5	0
+312	28.5	0
+313	28.5	0
+314	28.5	0
+315	28.5	0
+316	28.5	0
+317	28.5	0
+318	28.5	0
+319	28.5	0
+320	28.5	0
+321	28.5	0
+322	28.5	0
+323	28.5	0
+324	28.5	0
+325	28.5	0
+326	28.5	0
+327	28.5	0
+328	28.5	0
+329	28.5	0
+330	28.5	0
+331	28.5	0
+332	28.5	0
+333	28.5	0
+334	28.5	0
+335	28.5	0
+336	28.5	0
+337	28.5	0
+338	28.5	0
+339	28.5	0
+340	28.5	0
+341	28.5	0
+342	28.5	0
+343	28.5	0
+344	28.5	0
+345	28.5	0
+346	28.5	0
+347	28.5	0
+348	28.5	0
+349	28.5	0
+350	28.5	0
+351	28.5	0
+352	28.5	0
+353	28.5	0
+354	28.5	0
+355	28.5	0
+356	28.5	0
+357	28.5	0
+358	28.5	0
+359	28.5	0
+360	28.5	0
+0	29	0
+1	29	0
+2	29	0
+3	29	0
+4	29	0
+5	29	0
+6	29	0
+7	29	0
+8	29	0
+9	29	0
+10	29	0
+11	29	0
+12	29	0
+13	29	0
+14	29	0
+15	29	0
+16	29	0
+17	29	0
+18	29	0
+19	29	0
+20	29	0
+21	29	0
+22	29	0
+23	29	0
+24	29	0
+25	29	0
+26	29	0
+27	29	0
+28	29	0
+29	29	0
+30	29	0
+31	29	0
+32	29	0
+33	29	0
+34	29	0
+35	29	0
+36	29	0
+37	29	0
+38	29	0
+39	29	0
+40	29	0
+41	29	0
+42	29	0
+43	29	0
+44	29	0
+45	29	0
+46	29	0
+47	29	0
+48	29	0
+49	29	0
+50	29	0
+51	29	0
+52	29	0
+53	29	0
+54	29	0
+55	29	0
+56	29	0
+57	29	0
+58	29	0
+59	29	0
+60	29	0
+61	29	0
+62	29	0
+63	29	0
+64	29	0
+65	29	0
+66	29	0
+67	29	0
+68	29	0
+69	29	0
+70	29	0
+71	29	0
+72	29	0
+73	29	0
+74	29	0
+75	29	0
+76	29	0
+77	29	0
+78	29	0
+79	29	0
+80	29	0
+81	29	0
+82	29	0
+83	29	0
+84	29	0
+85	29	0
+86	29	0
+87	29	0
+88	29	0
+89	29	0
+90	29	0
+91	29	0
+92	29	0
+93	29	0
+94	29	0
+95	29	0
+96	29	0
+97	29	0
+98	29	0
+99	29	0
+100	29	0
+101	29	0
+102	29	0
+103	29	0
+104	29	0
+105	29	0
+106	29	0
+107	29	0
+108	29	0
+109	29	0
+110	29	0
+111	29	0
+112	29	0
+113	29	0
+114	29	0
+115	29	0
+116	29	0
+117	29	0
+118	29	0
+119	29	0
+120	29	0
+121	29	0
+122	29	0
+123	29	0
+124	29	0
+125	29	0
+126	29	0
+127	29	0
+128	29	0
+129	29	0
+130	29	0
+131	29	0
+132	29	0
+133	29	0
+134	29	0
+135	29	0
+136	29	0
+137	29	0
+138	29	0
+139	29	0
+140	29	0
+141	29	0
+142	29	0
+143	29	0
+144	29	0
+145	29	0
+146	29	0
+147	29	0
+148	29	0
+149	29	0
+150	29	0
+151	29	0
+152	29	0
+153	29	0
+154	29	0
+155	29	0
+156	29	0
+157	29	0
+158	29	0
+159	29	0
+160	29	0
+161	29	0
+162	29	0
+163	29	0
+164	29	0
+165	29	0
+166	29	0
+167	29	0
+168	29	0
+169	29	0
+170	29	0
+171	29	0
+172	29	0
+173	29	0
+174	29	0
+175	29	0
+176	29	0
+177	29	0
+178	29	0
+179	29	0
+180	29	0
+181	29	0
+182	29	0
+183	29	0
+184	29	0
+185	29	0
+186	29	0
+187	29	0
+188	29	0
+189	29	0
+190	29	0
+191	29	0
+192	29	0
+193	29	0
+194	29	0
+195	29	0
+196	29	0
+197	29	0
+198	29	0
+199	29	0
+200	29	0
+201	29	0
+202	29	0
+203	29	0
+204	29	0
+205	29	0
+206	29	0
+207	29	0
+208	29	0
+209	29	0
+210	29	0
+211	29	0
+212	29	0
+213	29	0
+214	29	0
+215	29	0
+216	29	0
+217	29	0
+218	29	0
+219	29	0
+220	29	0
+221	29	0
+222	29	0
+223	29	0
+224	29	0
+225	29	0
+226	29	0
+227	29	0
+228	29	0
+229	29	0
+230	29	0
+231	29	0
+232	29	0
+233	29	0
+234	29	0
+235	29	0
+236	29	0
+237	29	0
+238	29	0
+239	29	0
+240	29	0
+241	29	0
+242	29	0
+243	29	0
+244	29	0
+245	29	0
+246	29	0
+247	29	0
+248	29	0
+249	29	0
+250	29	0
+251	29	0
+252	29	0
+253	29	0
+254	29	0
+255	29	0
+256	29	0
+257	29	0
+258	29	0
+259	29	0
+260	29	0
+261	29	0
+262	29	0
+263	29	0
+264	29	0
+265	29	0
+266	29	0
+267	29	0
+268	29	0
+269	29	0
+270	29	0
+271	29	0
+272	29	0
+273	29	0
+274	29	0
+275	29	0
+276	29	0
+277	29	0
+278	29	0
+279	29	0
+280	29	0
+281	29	0
+282	29	0
+283	29	0
+284	29	0
+285	29	0
+286	29	0
+287	29	0
+288	29	0
+289	29	0
+290	29	0
+291	29	0
+292	29	0
+293	29	0
+294	29	0
+295	29	0
+296	29	0
+297	29	0
+298	29	0
+299	29	0
+300	29	0
+301	29	0
+302	29	0
+303	29	0
+304	29	0
+305	29	0
+306	29	0
+307	29	0
+308	29	0
+309	29	0
+310	29	0
+311	29	0
+312	29	0
+313	29	0
+314	29	0
+315	29	0
+316	29	0
+317	29	0
+318	29	0
+319	29	0
+320	29	0
+321	29	0
+322	29	0
+323	29	0
+324	29	0
+325	29	0
+326	29	0
+327	29	0
+328	29	0
+329	29	0
+330	29	0
+331	29	0
+332	29	0
+333	29	0
+334	29	0
+335	29	0
+336	29	0
+337	29	0
+338	29	0
+339	29	0
+340	29	0
+341	29	0
+342	29	0
+343	29	0
+344	29	0
+345	29	0
+346	29	0
+347	29	0
+348	29	0
+349	29	0
+350	29	0
+351	29	0
+352	29	0
+353	29	0
+354	29	0
+355	29	0
+356	29	0
+357	29	0
+358	29	0
+359	29	0
+360	29	0
+0	29.5	0
+1	29.5	0
+2	29.5	0
+3	29.5	0
+4	29.5	0
+5	29.5	0
+6	29.5	0
+7	29.5	0
+8	29.5	0
+9	29.5	0
+10	29.5	0
+11	29.5	0
+12	29.5	0
+13	29.5	0
+14	29.5	0
+15	29.5	0
+16	29.5	0
+17	29.5	0
+18	29.5	0
+19	29.5	0
+20	29.5	0
+21	29.5	0
+22	29.5	0
+23	29.5	0
+24	29.5	0
+25	29.5	0
+26	29.5	0
+27	29.5	0
+28	29.5	0
+29	29.5	0
+30	29.5	0
+31	29.5	0
+32	29.5	0
+33	29.5	0
+34	29.5	0
+35	29.5	0
+36	29.5	0
+37	29.5	0
+38	29.5	0
+39	29.5	0
+40	29.5	0
+41	29.5	0
+42	29.5	0
+43	29.5	0
+44	29.5	0
+45	29.5	0
+46	29.5	0
+47	29.5	0
+48	29.5	0
+49	29.5	0
+50	29.5	0
+51	29.5	0
+52	29.5	0
+53	29.5	0
+54	29.5	0
+55	29.5	0
+56	29.5	0
+57	29.5	0
+58	29.5	0
+59	29.5	0
+60	29.5	0
+61	29.5	0
+62	29.5	0
+63	29.5	0
+64	29.5	0
+65	29.5	0
+66	29.5	0
+67	29.5	0
+68	29.5	0
+69	29.5	0
+70	29.5	0
+71	29.5	0
+72	29.5	0
+73	29.5	0
+74	29.5	0
+75	29.5	0
+76	29.5	0
+77	29.5	0
+78	29.5	0
+79	29.5	0
+80	29.5	0
+81	29.5	0
+82	29.5	0
+83	29.5	0
+84	29.5	0
+85	29.5	0
+86	29.5	0
+87	29.5	0
+88	29.5	0
+89	29.5	0
+90	29.5	0
+91	29.5	0
+92	29.5	0
+93	29.5	0
+94	29.5	0
+95	29.5	0
+96	29.5	0
+97	29.5	0
+98	29.5	0
+99	29.5	0
+100	29.5	0
+101	29.5	0
+102	29.5	0
+103	29.5	0
+104	29.5	0
+105	29.5	0
+106	29.5	0
+107	29.5	0
+108	29.5	0
+109	29.5	0
+110	29.5	0
+111	29.5	0
+112	29.5	0
+113	29.5	0
+114	29.5	0
+115	29.5	0
+116	29.5	0
+117	29.5	0
+118	29.5	0
+119	29.5	0
+120	29.5	0
+121	29.5	0
+122	29.5	0
+123	29.5	0
+124	29.5	0
+125	29.5	0
+126	29.5	0
+127	29.5	0
+128	29.5	0
+129	29.5	0
+130	29.5	0
+131	29.5	0
+132	29.5	0
+133	29.5	0
+134	29.5	0
+135	29.5	0
+136	29.5	0
+137	29.5	0
+138	29.5	0
+139	29.5	0
+140	29.5	0
+141	29.5	0
+142	29.5	0
+143	29.5	0
+144	29.5	0
+145	29.5	0
+146	29.5	0
+147	29.5	0
+148	29.5	0
+149	29.5	0
+150	29.5	0
+151	29.5	0
+152	29.5	0
+153	29.5	0
+154	29.5	0
+155	29.5	0
+156	29.5	0
+157	29.5	0
+158	29.5	0
+159	29.5	0
+160	29.5	0
+161	29.5	0
+162	29.5	0
+163	29.5	0
+164	29.5	0
+165	29.5	0
+166	29.5	0
+167	29.5	0
+168	29.5	0
+169	29.5	0
+170	29.5	0
+171	29.5	0
+172	29.5	0
+173	29.5	0
+174	29.5	0
+175	29.5	0
+176	29.5	0
+177	29.5	0
+178	29.5	0
+179	29.5	0
+180	29.5	0
+181	29.5	0
+182	29.5	0
+183	29.5	0
+184	29.5	0
+185	29.5	0
+186	29.5	0
+187	29.5	0
+188	29.5	0
+189	29.5	0
+190	29.5	0
+191	29.5	0
+192	29.5	0
+193	29.5	0
+194	29.5	0
+195	29.5	0
+196	29.5	0
+197	29.5	0
+198	29.5	0
+199	29.5	0
+200	29.5	0
+201	29.5	0
+202	29.5	0
+203	29.5	0
+204	29.5	0
+205	29.5	0
+206	29.5	0
+207	29.5	0
+208	29.5	0
+209	29.5	0
+210	29.5	0
+211	29.5	0
+212	29.5	0
+213	29.5	0
+214	29.5	0
+215	29.5	0
+216	29.5	0
+217	29.5	0
+218	29.5	0
+219	29.5	0
+220	29.5	0
+221	29.5	0
+222	29.5	0
+223	29.5	0
+224	29.5	0
+225	29.5	0
+226	29.5	0
+227	29.5	0
+228	29.5	0
+229	29.5	0
+230	29.5	0
+231	29.5	0
+232	29.5	0
+233	29.5	0
+234	29.5	0
+235	29.5	0
+236	29.5	0
+237	29.5	0
+238	29.5	0
+239	29.5	0
+240	29.5	0
+241	29.5	0
+242	29.5	0
+243	29.5	0
+244	29.5	0
+245	29.5	0
+246	29.5	0
+247	29.5	0
+248	29.5	0
+249	29.5	0
+250	29.5	0
+251	29.5	0
+252	29.5	0
+253	29.5	0
+254	29.5	0
+255	29.5	0
+256	29.5	0
+257	29.5	0
+258	29.5	0
+259	29.5	0
+260	29.5	0
+261	29.5	0
+262	29.5	0
+263	29.5	0
+264	29.5	0
+265	29.5	0
+266	29.5	0
+267	29.5	0
+268	29.5	0
+269	29.5	0
+270	29.5	0
+271	29.5	0
+272	29.5	0
+273	29.5	0
+274	29.5	0
+275	29.5	0
+276	29.5	0
+277	29.5	0
+278	29.5	0
+279	29.5	0
+280	29.5	0
+281	29.5	0
+282	29.5	0
+283	29.5	0
+284	29.5	0
+285	29.5	0
+286	29.5	0
+287	29.5	0
+288	29.5	0
+289	29.5	0
+290	29.5	0
+291	29.5	0
+292	29.5	0
+293	29.5	0
+294	29.5	0
+295	29.5	0
+296	29.5	0
+297	29.5	0
+298	29.5	0
+299	29.5	0
+300	29.5	0
+301	29.5	0
+302	29.5	0
+303	29.5	0
+304	29.5	0
+305	29.5	0
+306	29.5	0
+307	29.5	0
+308	29.5	0
+309	29.5	0
+310	29.5	0
+311	29.5	0
+312	29.5	0
+313	29.5	0
+314	29.5	0
+315	29.5	0
+316	29.5	0
+317	29.5	0
+318	29.5	0
+319	29.5	0
+320	29.5	0
+321	29.5	0
+322	29.5	0
+323	29.5	0
+324	29.5	0
+325	29.5	0
+326	29.5	0
+327	29.5	0
+328	29.5	0
+329	29.5	0
+330	29.5	0
+331	29.5	0
+332	29.5	0
+333	29.5	0
+334	29.5	0
+335	29.5	0
+336	29.5	0
+337	29.5	0
+338	29.5	0
+339	29.5	0
+340	29.5	0
+341	29.5	0
+342	29.5	0
+343	29.5	0
+344	29.5	0
+345	29.5	0
+346	29.5	0
+347	29.5	0
+348	29.5	0
+349	29.5	0
+350	29.5	0
+351	29.5	0
+352	29.5	0
+353	29.5	0
+354	29.5	0
+355	29.5	0
+356	29.5	0
+357	29.5	0
+358	29.5	0
+359	29.5	0
+360	29.5	0
+0	30	0
+1	30	0
+2	30	0
+3	30	0
+4	30	0
+5	30	0
+6	30	0
+7	30	0
+8	30	0
+9	30	0
+10	30	0
+11	30	0
+12	30	0
+13	30	0
+14	30	0
+15	30	0
+16	30	0
+17	30	0
+18	30	0
+19	30	0
+20	30	0
+21	30	0
+22	30	0
+23	30	0
+24	30	0
+25	30	0
+26	30	0
+27	30	0
+28	30	0
+29	30	0
+30	30	0
+31	30	0
+32	30	0
+33	30	0
+34	30	0
+35	30	0
+36	30	0
+37	30	0
+38	30	0
+39	30	0
+40	30	0
+41	30	0
+42	30	0
+43	30	0
+44	30	0
+45	30	0
+46	30	0
+47	30	0
+48	30	0
+49	30	0
+50	30	0
+51	30	0
+52	30	0
+53	30	0
+54	30	0
+55	30	0
+56	30	0
+57	30	0
+58	30	0
+59	30	0
+60	30	0
+61	30	0
+62	30	0
+63	30	0
+64	30	0
+65	30	0
+66	30	0
+67	30	0
+68	30	0
+69	30	0
+70	30	0
+71	30	0
+72	30	0
+73	30	0
+74	30	0
+75	30	0
+76	30	0
+77	30	0
+78	30	0
+79	30	0
+80	30	0
+81	30	0
+82	30	0
+83	30	0
+84	30	0
+85	30	0
+86	30	0
+87	30	0
+88	30	0
+89	30	0
+90	30	0
+91	30	0
+92	30	0
+93	30	0
+94	30	0
+95	30	0
+96	30	0
+97	30	0
+98	30	0
+99	30	0
+100	30	0
+101	30	0
+102	30	0
+103	30	0
+104	30	0
+105	30	0
+106	30	0
+107	30	0
+108	30	0
+109	30	0
+110	30	0
+111	30	0
+112	30	0
+113	30	0
+114	30	0
+115	30	0
+116	30	0
+117	30	0
+118	30	0
+119	30	0
+120	30	0
+121	30	0
+122	30	0
+123	30	0
+124	30	0
+125	30	0
+126	30	0
+127	30	0
+128	30	0
+129	30	0
+130	30	0
+131	30	0
+132	30	0
+133	30	0
+134	30	0
+135	30	0
+136	30	0
+137	30	0
+138	30	0
+139	30	0
+140	30	0
+141	30	0
+142	30	0
+143	30	0
+144	30	0
+145	30	0
+146	30	0
+147	30	0
+148	30	0
+149	30	0
+150	30	0
+151	30	0
+152	30	0
+153	30	0
+154	30	0
+155	30	0
+156	30	0
+157	30	0
+158	30	0
+159	30	0
+160	30	0
+161	30	0
+162	30	0
+163	30	0
+164	30	0
+165	30	0
+166	30	0
+167	30	0
+168	30	0
+169	30	0
+170	30	0
+171	30	0
+172	30	0
+173	30	0
+174	30	0
+175	30	0
+176	30	0
+177	30	0
+178	30	0
+179	30	0
+180	30	0
+181	30	0
+182	30	0
+183	30	0
+184	30	0
+185	30	0
+186	30	0
+187	30	0
+188	30	0
+189	30	0
+190	30	0
+191	30	0
+192	30	0
+193	30	0
+194	30	0
+195	30	0
+196	30	0
+197	30	0
+198	30	0
+199	30	0
+200	30	0
+201	30	0
+202	30	0
+203	30	0
+204	30	0
+205	30	0
+206	30	0
+207	30	0
+208	30	0
+209	30	0
+210	30	0
+211	30	0
+212	30	0
+213	30	0
+214	30	0
+215	30	0
+216	30	0
+217	30	0
+218	30	0
+219	30	0
+220	30	0
+221	30	0
+222	30	0
+223	30	0
+224	30	0
+225	30	0
+226	30	0
+227	30	0
+228	30	0
+229	30	0
+230	30	0
+231	30	0
+232	30	0
+233	30	0
+234	30	0
+235	30	0
+236	30	0
+237	30	0
+238	30	0
+239	30	0
+240	30	0
+241	30	0
+242	30	0
+243	30	0
+244	30	0
+245	30	0
+246	30	0
+247	30	0
+248	30	0
+249	30	0
+250	30	0
+251	30	0
+252	30	0
+253	30	0
+254	30	0
+255	30	0
+256	30	0
+257	30	0
+258	30	0
+259	30	0
+260	30	0
+261	30	0
+262	30	0
+263	30	0
+264	30	0
+265	30	0
+266	30	0
+267	30	0
+268	30	0
+269	30	0
+270	30	0
+271	30	0
+272	30	0
+273	30	0
+274	30	0
+275	30	0
+276	30	0
+277	30	0
+278	30	0
+279	30	0
+280	30	0
+281	30	0
+282	30	0
+283	30	0
+284	30	0
+285	30	0
+286	30	0
+287	30	0
+288	30	0
+289	30	0
+290	30	0
+291	30	0
+292	30	0
+293	30	0
+294	30	0
+295	30	0
+296	30	0
+297	30	0
+298	30	0
+299	30	0
+300	30	0
+301	30	0
+302	30	0
+303	30	0
+304	30	0
+305	30	0
+306	30	0
+307	30	0
+308	30	0
+309	30	0
+310	30	0
+311	30	0
+312	30	0
+313	30	0
+314	30	0
+315	30	0
+316	30	0
+317	30	0
+318	30	0
+319	30	0
+320	30	0
+321	30	0
+322	30	0
+323	30	0
+324	30	0
+325	30	0
+326	30	0
+327	30	0
+328	30	0
+329	30	0
+330	30	0
+331	30	0
+332	30	0
+333	30	0
+334	30	0
+335	30	0
+336	30	0
+337	30	0
+338	30	0
+339	30	0
+340	30	0
+341	30	0
+342	30	0
+343	30	0
+344	30	0
+345	30	0
+346	30	0
+347	30	0
+348	30	0
+349	30	0
+350	30	0
+351	30	0
+352	30	0
+353	30	0
+354	30	0
+355	30	0
+356	30	0
+357	30	0
+358	30	0
+359	30	0
+360	30	0
+0	30.5	0
+1	30.5	0
+2	30.5	0
+3	30.5	0
+4	30.5	0
+5	30.5	0
+6	30.5	0
+7	30.5	0
+8	30.5	0
+9	30.5	0
+10	30.5	0
+11	30.5	0
+12	30.5	0
+13	30.5	0
+14	30.5	0
+15	30.5	0
+16	30.5	0
+17	30.5	0
+18	30.5	0
+19	30.5	0
+20	30.5	0
+21	30.5	0
+22	30.5	0
+23	30.5	0
+24	30.5	0
+25	30.5	0
+26	30.5	0
+27	30.5	0
+28	30.5	0
+29	30.5	0
+30	30.5	0
+31	30.5	0
+32	30.5	0
+33	30.5	0
+34	30.5	0
+35	30.5	0
+36	30.5	0
+37	30.5	0
+38	30.5	0
+39	30.5	0
+40	30.5	0
+41	30.5	0
+42	30.5	0
+43	30.5	0
+44	30.5	0
+45	30.5	0
+46	30.5	0
+47	30.5	0
+48	30.5	0
+49	30.5	0
+50	30.5	0
+51	30.5	0
+52	30.5	0
+53	30.5	0
+54	30.5	0
+55	30.5	0
+56	30.5	0
+57	30.5	0
+58	30.5	0
+59	30.5	0
+60	30.5	0
+61	30.5	0
+62	30.5	0
+63	30.5	0
+64	30.5	0
+65	30.5	0
+66	30.5	0
+67	30.5	0
+68	30.5	0
+69	30.5	0
+70	30.5	0
+71	30.5	0
+72	30.5	0
+73	30.5	0
+74	30.5	0
+75	30.5	0
+76	30.5	0
+77	30.5	0
+78	30.5	0
+79	30.5	0
+80	30.5	0
+81	30.5	0
+82	30.5	0
+83	30.5	0
+84	30.5	0
+85	30.5	0
+86	30.5	0
+87	30.5	0
+88	30.5	0
+89	30.5	0
+90	30.5	0
+91	30.5	0
+92	30.5	0
+93	30.5	0
+94	30.5	0
+95	30.5	0
+96	30.5	0
+97	30.5	0
+98	30.5	0
+99	30.5	0
+100	30.5	0
+101	30.5	0
+102	30.5	0
+103	30.5	0
+104	30.5	0
+105	30.5	0
+106	30.5	0
+107	30.5	0
+108	30.5	0
+109	30.5	0
+110	30.5	0
+111	30.5	0
+112	30.5	0
+113	30.5	0
+114	30.5	0
+115	30.5	0
+116	30.5	0
+117	30.5	0
+118	30.5	0
+119	30.5	0
+120	30.5	0
+121	30.5	0
+122	30.5	0
+123	30.5	0
+124	30.5	0
+125	30.5	0
+126	30.5	0
+127	30.5	0
+128	30.5	0
+129	30.5	0
+130	30.5	0
+131	30.5	0
+132	30.5	0
+133	30.5	0
+134	30.5	0
+135	30.5	0
+136	30.5	0
+137	30.5	0
+138	30.5	0
+139	30.5	0
+140	30.5	0
+141	30.5	0
+142	30.5	0
+143	30.5	0
+144	30.5	0
+145	30.5	0
+146	30.5	0
+147	30.5	0
+148	30.5	0
+149	30.5	0
+150	30.5	0
+151	30.5	0
+152	30.5	0
+153	30.5	0
+154	30.5	0
+155	30.5	0
+156	30.5	0
+157	30.5	0
+158	30.5	0
+159	30.5	0
+160	30.5	0
+161	30.5	0
+162	30.5	0
+163	30.5	0
+164	30.5	0
+165	30.5	0
+166	30.5	0
+167	30.5	0
+168	30.5	0
+169	30.5	0
+170	30.5	0
+171	30.5	0
+172	30.5	0
+173	30.5	0
+174	30.5	0
+175	30.5	0
+176	30.5	0
+177	30.5	0
+178	30.5	0
+179	30.5	0
+180	30.5	0
+181	30.5	0
+182	30.5	0
+183	30.5	0
+184	30.5	0
+185	30.5	0
+186	30.5	0
+187	30.5	0
+188	30.5	0
+189	30.5	0
+190	30.5	0
+191	30.5	0
+192	30.5	0
+193	30.5	0
+194	30.5	0
+195	30.5	0
+196	30.5	0
+197	30.5	0
+198	30.5	0
+199	30.5	0
+200	30.5	0
+201	30.5	0
+202	30.5	0
+203	30.5	0
+204	30.5	0
+205	30.5	0
+206	30.5	0
+207	30.5	0
+208	30.5	0
+209	30.5	0
+210	30.5	0
+211	30.5	0
+212	30.5	0
+213	30.5	0
+214	30.5	0
+215	30.5	0
+216	30.5	0
+217	30.5	0
+218	30.5	0
+219	30.5	0
+220	30.5	0
+221	30.5	0
+222	30.5	0
+223	30.5	0
+224	30.5	0
+225	30.5	0
+226	30.5	0
+227	30.5	0
+228	30.5	0
+229	30.5	0
+230	30.5	0
+231	30.5	0
+232	30.5	0
+233	30.5	0
+234	30.5	0
+235	30.5	0
+236	30.5	0
+237	30.5	0
+238	30.5	0
+239	30.5	0
+240	30.5	0
+241	30.5	0
+242	30.5	0
+243	30.5	0
+244	30.5	0
+245	30.5	0
+246	30.5	0
+247	30.5	0
+248	30.5	0
+249	30.5	0
+250	30.5	0
+251	30.5	0
+252	30.5	0
+253	30.5	0
+254	30.5	0
+255	30.5	0
+256	30.5	0
+257	30.5	0
+258	30.5	0
+259	30.5	0
+260	30.5	0
+261	30.5	0
+262	30.5	0
+263	30.5	0
+264	30.5	0
+265	30.5	0
+266	30.5	0
+267	30.5	0
+268	30.5	0
+269	30.5	0
+270	30.5	0
+271	30.5	0
+272	30.5	0
+273	30.5	0
+274	30.5	0
+275	30.5	0
+276	30.5	0
+277	30.5	0
+278	30.5	0
+279	30.5	0
+280	30.5	0
+281	30.5	0
+282	30.5	0
+283	30.5	0
+284	30.5	0
+285	30.5	0
+286	30.5	0
+287	30.5	0
+288	30.5	0
+289	30.5	0
+290	30.5	0
+291	30.5	0
+292	30.5	0
+293	30.5	0
+294	30.5	0
+295	30.5	0
+296	30.5	0
+297	30.5	0
+298	30.5	0
+299	30.5	0
+300	30.5	0
+301	30.5	0
+302	30.5	0
+303	30.5	0
+304	30.5	0
+305	30.5	0
+306	30.5	0
+307	30.5	0
+308	30.5	0
+309	30.5	0
+310	30.5	0
+311	30.5	0
+312	30.5	0
+313	30.5	0
+314	30.5	0
+315	30.5	0
+316	30.5	0
+317	30.5	0
+318	30.5	0
+319	30.5	0
+320	30.5	0
+321	30.5	0
+322	30.5	0
+323	30.5	0
+324	30.5	0
+325	30.5	0
+326	30.5	0
+327	30.5	0
+328	30.5	0
+329	30.5	0
+330	30.5	0
+331	30.5	0
+332	30.5	0
+333	30.5	0
+334	30.5	0
+335	30.5	0
+336	30.5	0
+337	30.5	0
+338	30.5	0
+339	30.5	0
+340	30.5	0
+341	30.5	0
+342	30.5	0
+343	30.5	0
+344	30.5	0
+345	30.5	0
+346	30.5	0
+347	30.5	0
+348	30.5	0
+349	30.5	0
+350	30.5	0
+351	30.5	0
+352	30.5	0
+353	30.5	0
+354	30.5	0
+355	30.5	0
+356	30.5	0
+357	30.5	0
+358	30.5	0
+359	30.5	0
+360	30.5	0
+0	31	0
+1	31	0
+2	31	0
+3	31	0
+4	31	0
+5	31	0
+6	31	0
+7	31	0
+8	31	0
+9	31	0
+10	31	0
+11	31	0
+12	31	0
+13	31	0
+14	31	0
+15	31	0
+16	31	0
+17	31	0
+18	31	0
+19	31	0
+20	31	0
+21	31	0
+22	31	0
+23	31	0
+24	31	0
+25	31	0
+26	31	0
+27	31	0
+28	31	0
+29	31	0
+30	31	0
+31	31	0
+32	31	0
+33	31	0
+34	31	0
+35	31	0
+36	31	0
+37	31	0
+38	31	0
+39	31	0
+40	31	0
+41	31	0
+42	31	0
+43	31	0
+44	31	0
+45	31	0
+46	31	0
+47	31	0
+48	31	0
+49	31	0
+50	31	0
+51	31	0
+52	31	0
+53	31	0
+54	31	0
+55	31	0
+56	31	0
+57	31	0
+58	31	0
+59	31	0
+60	31	0
+61	31	0
+62	31	0
+63	31	0
+64	31	0
+65	31	0
+66	31	0
+67	31	0
+68	31	0
+69	31	0
+70	31	0
+71	31	0
+72	31	0
+73	31	0
+74	31	0
+75	31	0
+76	31	0
+77	31	0
+78	31	0
+79	31	0
+80	31	0
+81	31	0
+82	31	0
+83	31	0
+84	31	0
+85	31	0
+86	31	0
+87	31	0
+88	31	0
+89	31	0
+90	31	0
+91	31	0
+92	31	0
+93	31	0
+94	31	0
+95	31	0
+96	31	0
+97	31	0
+98	31	0
+99	31	0
+100	31	0
+101	31	0
+102	31	0
+103	31	0
+104	31	0
+105	31	0
+106	31	0
+107	31	0
+108	31	0
+109	31	0
+110	31	0
+111	31	0
+112	31	0
+113	31	0
+114	31	0
+115	31	0
+116	31	0
+117	31	0
+118	31	0
+119	31	0
+120	31	0
+121	31	0
+122	31	0
+123	31	0
+124	31	0
+125	31	0
+126	31	0
+127	31	0
+128	31	0
+129	31	0
+130	31	0
+131	31	0
+132	31	0
+133	31	0
+134	31	0
+135	31	0
+136	31	0
+137	31	0
+138	31	0
+139	31	0
+140	31	0
+141	31	0
+142	31	0
+143	31	0
+144	31	0
+145	31	0
+146	31	0
+147	31	0
+148	31	0
+149	31	0
+150	31	0
+151	31	0
+152	31	0
+153	31	0
+154	31	0
+155	31	0
+156	31	0
+157	31	0
+158	31	0
+159	31	0
+160	31	0
+161	31	0
+162	31	0
+163	31	0
+164	31	0
+165	31	0
+166	31	0
+167	31	0
+168	31	0
+169	31	0
+170	31	0
+171	31	0
+172	31	0
+173	31	0
+174	31	0
+175	31	0
+176	31	0
+177	31	0
+178	31	0
+179	31	0
+180	31	0
+181	31	0
+182	31	0
+183	31	0
+184	31	0
+185	31	0
+186	31	0
+187	31	0
+188	31	0
+189	31	0
+190	31	0
+191	31	0
+192	31	0
+193	31	0
+194	31	0
+195	31	0
+196	31	0
+197	31	0
+198	31	0
+199	31	0
+200	31	0
+201	31	0
+202	31	0
+203	31	0
+204	31	0
+205	31	0
+206	31	0
+207	31	0
+208	31	0
+209	31	0
+210	31	0
+211	31	0
+212	31	0
+213	31	0
+214	31	0
+215	31	0
+216	31	0
+217	31	0
+218	31	0
+219	31	0
+220	31	0
+221	31	0
+222	31	0
+223	31	0
+224	31	0
+225	31	0
+226	31	0
+227	31	0
+228	31	0
+229	31	0
+230	31	0
+231	31	0
+232	31	0
+233	31	0
+234	31	0
+235	31	0
+236	31	0
+237	31	0
+238	31	0
+239	31	0
+240	31	0
+241	31	0
+242	31	0
+243	31	0
+244	31	0
+245	31	0
+246	31	0
+247	31	0
+248	31	0
+249	31	0
+250	31	0
+251	31	0
+252	31	0
+253	31	0
+254	31	0
+255	31	0
+256	31	0
+257	31	0
+258	31	0
+259	31	0
+260	31	0
+261	31	0
+262	31	0
+263	31	0
+264	31	0
+265	31	0
+266	31	0
+267	31	0
+268	31	0
+269	31	0
+270	31	0
+271	31	0
+272	31	0
+273	31	0
+274	31	0
+275	31	0
+276	31	0
+277	31	0
+278	31	0
+279	31	0
+280	31	0
+281	31	0
+282	31	0
+283	31	0
+284	31	0
+285	31	0
+286	31	0
+287	31	0
+288	31	0
+289	31	0
+290	31	0
+291	31	0
+292	31	0
+293	31	0
+294	31	0
+295	31	0
+296	31	0
+297	31	0
+298	31	0
+299	31	0
+300	31	0
+301	31	0
+302	31	0
+303	31	0
+304	31	0
+305	31	0
+306	31	0
+307	31	0
+308	31	0
+309	31	0
+310	31	0
+311	31	0
+312	31	0
+313	31	0
+314	31	0
+315	31	0
+316	31	0
+317	31	0
+318	31	0
+319	31	0
+320	31	0
+321	31	0
+322	31	0
+323	31	0
+324	31	0
+325	31	0
+326	31	0
+327	31	0
+328	31	0
+329	31	0
+330	31	0
+331	31	0
+332	31	0
+333	31	0
+334	31	0
+335	31	0
+336	31	0
+337	31	0
+338	31	0
+339	31	0
+340	31	0
+341	31	0
+342	31	0
+343	31	0
+344	31	0
+345	31	0
+346	31	0
+347	31	0
+348	31	0
+349	31	0
+350	31	0
+351	31	0
+352	31	0
+353	31	0
+354	31	0
+355	31	0
+356	31	0
+357	31	0
+358	31	0
+359	31	0
+360	31	0
+0	31.5	0
+1	31.5	0
+2	31.5	0
+3	31.5	0
+4	31.5	0
+5	31.5	0
+6	31.5	0
+7	31.5	0
+8	31.5	0
+9	31.5	0
+10	31.5	0
+11	31.5	0
+12	31.5	0
+13	31.5	0
+14	31.5	0
+15	31.5	0
+16	31.5	0
+17	31.5	0
+18	31.5	0
+19	31.5	0
+20	31.5	0
+21	31.5	0
+22	31.5	0
+23	31.5	0
+24	31.5	0
+25	31.5	0
+26	31.5	0
+27	31.5	0
+28	31.5	0
+29	31.5	0
+30	31.5	0
+31	31.5	0
+32	31.5	0
+33	31.5	0
+34	31.5	0
+35	31.5	0
+36	31.5	0
+37	31.5	0
+38	31.5	0
+39	31.5	0
+40	31.5	0
+41	31.5	0
+42	31.5	0
+43	31.5	0
+44	31.5	0
+45	31.5	0
+46	31.5	0
+47	31.5	0
+48	31.5	0
+49	31.5	0
+50	31.5	0
+51	31.5	0
+52	31.5	0
+53	31.5	0
+54	31.5	0
+55	31.5	0
+56	31.5	0
+57	31.5	0
+58	31.5	0
+59	31.5	0
+60	31.5	0
+61	31.5	0
+62	31.5	0
+63	31.5	0
+64	31.5	0
+65	31.5	0
+66	31.5	0
+67	31.5	0
+68	31.5	0
+69	31.5	0
+70	31.5	0
+71	31.5	0
+72	31.5	0
+73	31.5	0
+74	31.5	0
+75	31.5	0
+76	31.5	0
+77	31.5	0
+78	31.5	0
+79	31.5	0
+80	31.5	0
+81	31.5	0
+82	31.5	0
+83	31.5	0
+84	31.5	0
+85	31.5	0
+86	31.5	0
+87	31.5	0
+88	31.5	0
+89	31.5	0
+90	31.5	0
+91	31.5	0
+92	31.5	0
+93	31.5	0
+94	31.5	0
+95	31.5	0
+96	31.5	0
+97	31.5	0
+98	31.5	0
+99	31.5	0
+100	31.5	0
+101	31.5	0
+102	31.5	0
+103	31.5	0
+104	31.5	0
+105	31.5	0
+106	31.5	0
+107	31.5	0
+108	31.5	0
+109	31.5	0
+110	31.5	0
+111	31.5	0
+112	31.5	0
+113	31.5	0
+114	31.5	0
+115	31.5	0
+116	31.5	0
+117	31.5	0
+118	31.5	0
+119	31.5	0
+120	31.5	0
+121	31.5	0
+122	31.5	0
+123	31.5	0
+124	31.5	0
+125	31.5	0
+126	31.5	0
+127	31.5	0
+128	31.5	0
+129	31.5	0
+130	31.5	0
+131	31.5	0
+132	31.5	0
+133	31.5	0
+134	31.5	0
+135	31.5	0
+136	31.5	0
+137	31.5	0
+138	31.5	0
+139	31.5	0
+140	31.5	0
+141	31.5	0
+142	31.5	0
+143	31.5	0
+144	31.5	0
+145	31.5	0
+146	31.5	0
+147	31.5	0
+148	31.5	0
+149	31.5	0
+150	31.5	0
+151	31.5	0
+152	31.5	0
+153	31.5	0
+154	31.5	0
+155	31.5	0
+156	31.5	0
+157	31.5	0
+158	31.5	0
+159	31.5	0
+160	31.5	0
+161	31.5	0
+162	31.5	0
+163	31.5	0
+164	31.5	0
+165	31.5	0
+166	31.5	0
+167	31.5	0
+168	31.5	0
+169	31.5	0
+170	31.5	0
+171	31.5	0
+172	31.5	0
+173	31.5	0
+174	31.5	0
+175	31.5	0
+176	31.5	0
+177	31.5	0
+178	31.5	0
+179	31.5	0
+180	31.5	0
+181	31.5	0
+182	31.5	0
+183	31.5	0
+184	31.5	0
+185	31.5	0
+186	31.5	0
+187	31.5	0
+188	31.5	0
+189	31.5	0
+190	31.5	0
+191	31.5	0
+192	31.5	0
+193	31.5	0
+194	31.5	0
+195	31.5	0
+196	31.5	0
+197	31.5	0
+198	31.5	0
+199	31.5	0
+200	31.5	0
+201	31.5	0
+202	31.5	0
+203	31.5	0
+204	31.5	0
+205	31.5	0
+206	31.5	0
+207	31.5	0
+208	31.5	0
+209	31.5	0
+210	31.5	0
+211	31.5	0
+212	31.5	0
+213	31.5	0
+214	31.5	0
+215	31.5	0
+216	31.5	0
+217	31.5	0
+218	31.5	0
+219	31.5	0
+220	31.5	0
+221	31.5	0
+222	31.5	0
+223	31.5	0
+224	31.5	0
+225	31.5	0
+226	31.5	0
+227	31.5	0
+228	31.5	0
+229	31.5	0
+230	31.5	0
+231	31.5	0
+232	31.5	0
+233	31.5	0
+234	31.5	0
+235	31.5	0
+236	31.5	0
+237	31.5	0
+238	31.5	0
+239	31.5	0
+240	31.5	0
+241	31.5	0
+242	31.5	0
+243	31.5	0
+244	31.5	0
+245	31.5	0
+246	31.5	0
+247	31.5	0
+248	31.5	0
+249	31.5	0
+250	31.5	0
+251	31.5	0
+252	31.5	0
+253	31.5	0
+254	31.5	0
+255	31.5	0
+256	31.5	0
+257	31.5	0
+258	31.5	0
+259	31.5	0
+260	31.5	0
+261	31.5	0
+262	31.5	0
+263	31.5	0
+264	31.5	0
+265	31.5	0
+266	31.5	0
+267	31.5	0
+268	31.5	0
+269	31.5	0
+270	31.5	0
+271	31.5	0
+272	31.5	0
+273	31.5	0
+274	31.5	0
+275	31.5	0
+276	31.5	0
+277	31.5	0
+278	31.5	0
+279	31.5	0
+280	31.5	0
+281	31.5	0
+282	31.5	0
+283	31.5	0
+284	31.5	0
+285	31.5	0
+286	31.5	0
+287	31.5	0
+288	31.5	0
+289	31.5	0
+290	31.5	0
+291	31.5	0
+292	31.5	0
+293	31.5	0
+294	31.5	0
+295	31.5	0
+296	31.5	0
+297	31.5	0
+298	31.5	0
+299	31.5	0
+300	31.5	0
+301	31.5	0
+302	31.5	0
+303	31.5	0
+304	31.5	0
+305	31.5	0
+306	31.5	0
+307	31.5	0
+308	31.5	0
+309	31.5	0
+310	31.5	0
+311	31.5	0
+312	31.5	0
+313	31.5	0
+314	31.5	0
+315	31.5	0
+316	31.5	0
+317	31.5	0
+318	31.5	0
+319	31.5	0
+320	31.5	0
+321	31.5	0
+322	31.5	0
+323	31.5	0
+324	31.5	0
+325	31.5	0
+326	31.5	0
+327	31.5	0
+328	31.5	0
+329	31.5	0
+330	31.5	0
+331	31.5	0
+332	31.5	0
+333	31.5	0
+334	31.5	0
+335	31.5	0
+336	31.5	0
+337	31.5	0
+338	31.5	0
+339	31.5	0
+340	31.5	0
+341	31.5	0
+342	31.5	0
+343	31.5	0
+344	31.5	0
+345	31.5	0
+346	31.5	0
+347	31.5	0
+348	31.5	0
+349	31.5	0
+350	31.5	0
+351	31.5	0
+352	31.5	0
+353	31.5	0
+354	31.5	0
+355	31.5	0
+356	31.5	0
+357	31.5	0
+358	31.5	0
+359	31.5	0
+360	31.5	0
+0	32	0
+1	32	0
+2	32	0
+3	32	0
+4	32	0
+5	32	0
+6	32	0
+7	32	0
+8	32	0
+9	32	0
+10	32	0
+11	32	0
+12	32	0
+13	32	0
+14	32	0
+15	32	0
+16	32	0
+17	32	0
+18	32	0
+19	32	0
+20	32	0
+21	32	0
+22	32	0
+23	32	0
+24	32	0
+25	32	0
+26	32	0
+27	32	0
+28	32	0
+29	32	0
+30	32	0
+31	32	0
+32	32	0
+33	32	0
+34	32	0
+35	32	0
+36	32	0
+37	32	0
+38	32	0
+39	32	0
+40	32	0
+41	32	0
+42	32	0
+43	32	0
+44	32	0
+45	32	0
+46	32	0
+47	32	0
+48	32	0
+49	32	0
+50	32	0
+51	32	0
+52	32	0
+53	32	0
+54	32	0
+55	32	0
+56	32	0
+57	32	0
+58	32	0
+59	32	0
+60	32	0
+61	32	0
+62	32	0
+63	32	0
+64	32	0
+65	32	0
+66	32	0
+67	32	0
+68	32	0
+69	32	0
+70	32	0
+71	32	0
+72	32	0
+73	32	0
+74	32	0
+75	32	0
+76	32	0
+77	32	0
+78	32	0
+79	32	0
+80	32	0
+81	32	0
+82	32	0
+83	32	0
+84	32	0
+85	32	0
+86	32	0
+87	32	0
+88	32	0
+89	32	0
+90	32	0
+91	32	0
+92	32	0
+93	32	0
+94	32	0
+95	32	0
+96	32	0
+97	32	0
+98	32	0
+99	32	0
+100	32	0
+101	32	0
+102	32	0
+103	32	0
+104	32	0
+105	32	0
+106	32	0
+107	32	0
+108	32	0
+109	32	0
+110	32	0
+111	32	0
+112	32	0
+113	32	0
+114	32	0
+115	32	0
+116	32	0
+117	32	0
+118	32	0
+119	32	0
+120	32	0
+121	32	0
+122	32	0
+123	32	0
+124	32	0
+125	32	0
+126	32	0
+127	32	0
+128	32	0
+129	32	0
+130	32	0
+131	32	0
+132	32	0
+133	32	0
+134	32	0
+135	32	0
+136	32	0
+137	32	0
+138	32	0
+139	32	0
+140	32	0
+141	32	0
+142	32	0
+143	32	0
+144	32	0
+145	32	0
+146	32	0
+147	32	0
+148	32	0
+149	32	0
+150	32	0
+151	32	0
+152	32	0
+153	32	0
+154	32	0
+155	32	0
+156	32	0
+157	32	0
+158	32	0
+159	32	0
+160	32	0
+161	32	0
+162	32	0
+163	32	0
+164	32	0
+165	32	0
+166	32	0
+167	32	0
+168	32	0
+169	32	0
+170	32	0
+171	32	0
+172	32	0
+173	32	0
+174	32	0
+175	32	0
+176	32	0
+177	32	0
+178	32	0
+179	32	0
+180	32	0
+181	32	0
+182	32	0
+183	32	0
+184	32	0
+185	32	0
+186	32	0
+187	32	0
+188	32	0
+189	32	0
+190	32	0
+191	32	0
+192	32	0
+193	32	0
+194	32	0
+195	32	0
+196	32	0
+197	32	0
+198	32	0
+199	32	0
+200	32	0
+201	32	0
+202	32	0
+203	32	0
+204	32	0
+205	32	0
+206	32	0
+207	32	0
+208	32	0
+209	32	0
+210	32	0
+211	32	0
+212	32	0
+213	32	0
+214	32	0
+215	32	0
+216	32	0
+217	32	0
+218	32	0
+219	32	0
+220	32	0
+221	32	0
+222	32	0
+223	32	0
+224	32	0
+225	32	0
+226	32	0
+227	32	0
+228	32	0
+229	32	0
+230	32	0
+231	32	0
+232	32	0
+233	32	0
+234	32	0
+235	32	0
+236	32	0
+237	32	0
+238	32	0
+239	32	0
+240	32	0
+241	32	0
+242	32	0
+243	32	0
+244	32	0
+245	32	0
+246	32	0
+247	32	0
+248	32	0
+249	32	0
+250	32	0
+251	32	0
+252	32	0
+253	32	0
+254	32	0
+255	32	0
+256	32	0
+257	32	0
+258	32	0
+259	32	0
+260	32	0
+261	32	0
+262	32	0
+263	32	0
+264	32	0
+265	32	0
+266	32	0
+267	32	0
+268	32	0
+269	32	0
+270	32	0
+271	32	0
+272	32	0
+273	32	0
+274	32	0
+275	32	0
+276	32	0
+277	32	0
+278	32	0
+279	32	0
+280	32	0
+281	32	0
+282	32	0
+283	32	0
+284	32	0
+285	32	0
+286	32	0
+287	32	0
+288	32	0
+289	32	0
+290	32	0
+291	32	0
+292	32	0
+293	32	0
+294	32	0
+295	32	0
+296	32	0
+297	32	0
+298	32	0
+299	32	0
+300	32	0
+301	32	0
+302	32	0
+303	32	0
+304	32	0
+305	32	0
+306	32	0
+307	32	0
+308	32	0
+309	32	0
+310	32	0
+311	32	0
+312	32	0
+313	32	0
+314	32	0
+315	32	0
+316	32	0
+317	32	0
+318	32	0
+319	32	0
+320	32	0
+321	32	0
+322	32	0
+323	32	0
+324	32	0
+325	32	0
+326	32	0
+327	32	0
+328	32	0
+329	32	0
+330	32	0
+331	32	0
+332	32	0
+333	32	0
+334	32	0
+335	32	0
+336	32	0
+337	32	0
+338	32	0
+339	32	0
+340	32	0
+341	32	0
+342	32	0
+343	32	0
+344	32	0
+345	32	0
+346	32	0
+347	32	0
+348	32	0
+349	32	0
+350	32	0
+351	32	0
+352	32	0
+353	32	0
+354	32	0
+355	32	0
+356	32	0
+357	32	0
+358	32	0
+359	32	0
+360	32	0
+0	32.5	0
+1	32.5	0
+2	32.5	0
+3	32.5	0
+4	32.5	0
+5	32.5	0
+6	32.5	0
+7	32.5	0
+8	32.5	0
+9	32.5	0
+10	32.5	0
+11	32.5	0
+12	32.5	0
+13	32.5	0
+14	32.5	0
+15	32.5	0
+16	32.5	0
+17	32.5	0
+18	32.5	0
+19	32.5	0
+20	32.5	0
+21	32.5	0
+22	32.5	0
+23	32.5	0
+24	32.5	0
+25	32.5	0
+26	32.5	0
+27	32.5	0
+28	32.5	0
+29	32.5	0
+30	32.5	0
+31	32.5	0
+32	32.5	0
+33	32.5	0
+34	32.5	0
+35	32.5	0
+36	32.5	0
+37	32.5	0
+38	32.5	0
+39	32.5	0
+40	32.5	0
+41	32.5	0
+42	32.5	0
+43	32.5	0
+44	32.5	0
+45	32.5	0
+46	32.5	0
+47	32.5	0
+48	32.5	0
+49	32.5	0
+50	32.5	0
+51	32.5	0
+52	32.5	0
+53	32.5	0
+54	32.5	0
+55	32.5	0
+56	32.5	0
+57	32.5	0
+58	32.5	0
+59	32.5	0
+60	32.5	0
+61	32.5	0
+62	32.5	0
+63	32.5	0
+64	32.5	0
+65	32.5	0
+66	32.5	0
+67	32.5	0
+68	32.5	0
+69	32.5	0
+70	32.5	0
+71	32.5	0
+72	32.5	0
+73	32.5	0
+74	32.5	0
+75	32.5	0
+76	32.5	0
+77	32.5	0
+78	32.5	0
+79	32.5	0
+80	32.5	0
+81	32.5	0
+82	32.5	0
+83	32.5	0
+84	32.5	0
+85	32.5	0
+86	32.5	0
+87	32.5	0
+88	32.5	0
+89	32.5	0
+90	32.5	0
+91	32.5	0
+92	32.5	0
+93	32.5	0
+94	32.5	0
+95	32.5	0
+96	32.5	0
+97	32.5	0
+98	32.5	0
+99	32.5	0
+100	32.5	0
+101	32.5	0
+102	32.5	0
+103	32.5	0
+104	32.5	0
+105	32.5	0
+106	32.5	0
+107	32.5	0
+108	32.5	0
+109	32.5	0
+110	32.5	0
+111	32.5	0
+112	32.5	0
+113	32.5	0
+114	32.5	0
+115	32.5	0
+116	32.5	0
+117	32.5	0
+118	32.5	0
+119	32.5	0
+120	32.5	0
+121	32.5	0
+122	32.5	0
+123	32.5	0
+124	32.5	0
+125	32.5	0
+126	32.5	0
+127	32.5	0
+128	32.5	0
+129	32.5	0
+130	32.5	0
+131	32.5	0
+132	32.5	0
+133	32.5	0
+134	32.5	0
+135	32.5	0
+136	32.5	0
+137	32.5	0
+138	32.5	0
+139	32.5	0
+140	32.5	0
+141	32.5	0
+142	32.5	0
+143	32.5	0
+144	32.5	0
+145	32.5	0
+146	32.5	0
+147	32.5	0
+148	32.5	0
+149	32.5	0
+150	32.5	0
+151	32.5	0
+152	32.5	0
+153	32.5	0
+154	32.5	0
+155	32.5	0
+156	32.5	0
+157	32.5	0
+158	32.5	0
+159	32.5	0
+160	32.5	0
+161	32.5	0
+162	32.5	0
+163	32.5	0
+164	32.5	0
+165	32.5	0
+166	32.5	0
+167	32.5	0
+168	32.5	0
+169	32.5	0
+170	32.5	0
+171	32.5	0
+172	32.5	0
+173	32.5	0
+174	32.5	0
+175	32.5	0
+176	32.5	0
+177	32.5	0
+178	32.5	0
+179	32.5	0
+180	32.5	0
+181	32.5	0
+182	32.5	0
+183	32.5	0
+184	32.5	0
+185	32.5	0
+186	32.5	0
+187	32.5	0
+188	32.5	0
+189	32.5	0
+190	32.5	0
+191	32.5	0
+192	32.5	0
+193	32.5	0
+194	32.5	0
+195	32.5	0
+196	32.5	0
+197	32.5	0
+198	32.5	0
+199	32.5	0
+200	32.5	0
+201	32.5	0
+202	32.5	0
+203	32.5	0
+204	32.5	0
+205	32.5	0
+206	32.5	0
+207	32.5	0
+208	32.5	0
+209	32.5	0
+210	32.5	0
+211	32.5	0
+212	32.5	0
+213	32.5	0
+214	32.5	0
+215	32.5	0
+216	32.5	0
+217	32.5	0
+218	32.5	0
+219	32.5	0
+220	32.5	0
+221	32.5	0
+222	32.5	0
+223	32.5	0
+224	32.5	0
+225	32.5	0
+226	32.5	0
+227	32.5	0
+228	32.5	0
+229	32.5	0
+230	32.5	0
+231	32.5	0
+232	32.5	0
+233	32.5	0
+234	32.5	0
+235	32.5	0
+236	32.5	0
+237	32.5	0
+238	32.5	0
+239	32.5	0
+240	32.5	0
+241	32.5	0
+242	32.5	0
+243	32.5	0
+244	32.5	0
+245	32.5	0
+246	32.5	0
+247	32.5	0
+248	32.5	0
+249	32.5	0
+250	32.5	0
+251	32.5	0
+252	32.5	0
+253	32.5	0
+254	32.5	0
+255	32.5	0
+256	32.5	0
+257	32.5	0
+258	32.5	0
+259	32.5	0
+260	32.5	0
+261	32.5	0
+262	32.5	0
+263	32.5	0
+264	32.5	0
+265	32.5	0
+266	32.5	0
+267	32.5	0
+268	32.5	0
+269	32.5	0
+270	32.5	0
+271	32.5	0
+272	32.5	0
+273	32.5	0
+274	32.5	0
+275	32.5	0
+276	32.5	0
+277	32.5	0
+278	32.5	0
+279	32.5	0
+280	32.5	0
+281	32.5	0
+282	32.5	0
+283	32.5	0
+284	32.5	0
+285	32.5	0
+286	32.5	0
+287	32.5	0
+288	32.5	0
+289	32.5	0
+290	32.5	0
+291	32.5	0
+292	32.5	0
+293	32.5	0
+294	32.5	0
+295	32.5	0
+296	32.5	0
+297	32.5	0
+298	32.5	0
+299	32.5	0
+300	32.5	0
+301	32.5	0
+302	32.5	0
+303	32.5	0
+304	32.5	0
+305	32.5	0
+306	32.5	0
+307	32.5	0
+308	32.5	0
+309	32.5	0
+310	32.5	0
+311	32.5	0
+312	32.5	0
+313	32.5	0
+314	32.5	0
+315	32.5	0
+316	32.5	0
+317	32.5	0
+318	32.5	0
+319	32.5	0
+320	32.5	0
+321	32.5	0
+322	32.5	0
+323	32.5	0
+324	32.5	0
+325	32.5	0
+326	32.5	0
+327	32.5	0
+328	32.5	0
+329	32.5	0
+330	32.5	0
+331	32.5	0
+332	32.5	0
+333	32.5	0
+334	32.5	0
+335	32.5	0
+336	32.5	0
+337	32.5	0
+338	32.5	0
+339	32.5	0
+340	32.5	0
+341	32.5	0
+342	32.5	0
+343	32.5	0
+344	32.5	0
+345	32.5	0
+346	32.5	0
+347	32.5	0
+348	32.5	0
+349	32.5	0
+350	32.5	0
+351	32.5	0
+352	32.5	0
+353	32.5	0
+354	32.5	0
+355	32.5	0
+356	32.5	0
+357	32.5	0
+358	32.5	0
+359	32.5	0
+360	32.5	0
+0	33	0
+1	33	0
+2	33	0
+3	33	0
+4	33	0
+5	33	0
+6	33	0
+7	33	0
+8	33	0
+9	33	0
+10	33	0
+11	33	0
+12	33	0
+13	33	0
+14	33	0
+15	33	0
+16	33	0
+17	33	0
+18	33	0
+19	33	0
+20	33	0
+21	33	0
+22	33	0
+23	33	0
+24	33	0
+25	33	0
+26	33	0
+27	33	0
+28	33	0
+29	33	0
+30	33	0
+31	33	0
+32	33	0
+33	33	0
+34	33	0
+35	33	0
+36	33	0
+37	33	0
+38	33	0
+39	33	0
+40	33	0
+41	33	0
+42	33	0
+43	33	0
+44	33	0
+45	33	0
+46	33	0
+47	33	0
+48	33	0
+49	33	0
+50	33	0
+51	33	0
+52	33	0
+53	33	0
+54	33	0
+55	33	0
+56	33	0
+57	33	0
+58	33	0
+59	33	0
+60	33	0
+61	33	0
+62	33	0
+63	33	0
+64	33	0
+65	33	0
+66	33	0
+67	33	0
+68	33	0
+69	33	0
+70	33	0
+71	33	0
+72	33	0
+73	33	0
+74	33	0
+75	33	0
+76	33	0
+77	33	0
+78	33	0
+79	33	0
+80	33	0
+81	33	0
+82	33	0
+83	33	0
+84	33	0
+85	33	0
+86	33	0
+87	33	0
+88	33	0
+89	33	0
+90	33	0
+91	33	0
+92	33	0
+93	33	0
+94	33	0
+95	33	0
+96	33	0
+97	33	0
+98	33	0
+99	33	0
+100	33	0
+101	33	0
+102	33	0
+103	33	0
+104	33	0
+105	33	0
+106	33	0
+107	33	0
+108	33	0
+109	33	0
+110	33	0
+111	33	0
+112	33	0
+113	33	0
+114	33	0
+115	33	0
+116	33	0
+117	33	0
+118	33	0
+119	33	0
+120	33	0
+121	33	0
+122	33	0
+123	33	0
+124	33	0
+125	33	0
+126	33	0
+127	33	0
+128	33	0
+129	33	0
+130	33	0
+131	33	0
+132	33	0
+133	33	0
+134	33	0
+135	33	0
+136	33	0
+137	33	0
+138	33	0
+139	33	0
+140	33	0
+141	33	0
+142	33	0
+143	33	0
+144	33	0
+145	33	0
+146	33	0
+147	33	0
+148	33	0
+149	33	0
+150	33	0
+151	33	0
+152	33	0
+153	33	0
+154	33	0
+155	33	0
+156	33	0
+157	33	0
+158	33	0
+159	33	0
+160	33	0
+161	33	0
+162	33	0
+163	33	0
+164	33	0
+165	33	0
+166	33	0
+167	33	0
+168	33	0
+169	33	0
+170	33	0
+171	33	0
+172	33	0
+173	33	0
+174	33	0
+175	33	0
+176	33	0
+177	33	0
+178	33	0
+179	33	0
+180	33	0
+181	33	0
+182	33	0
+183	33	0
+184	33	0
+185	33	0
+186	33	0
+187	33	0
+188	33	0
+189	33	0
+190	33	0
+191	33	0
+192	33	0
+193	33	0
+194	33	0
+195	33	0
+196	33	0
+197	33	0
+198	33	0
+199	33	0
+200	33	0
+201	33	0
+202	33	0
+203	33	0
+204	33	0
+205	33	0
+206	33	0
+207	33	0
+208	33	0
+209	33	0
+210	33	0
+211	33	0
+212	33	0
+213	33	0
+214	33	0
+215	33	0
+216	33	0
+217	33	0
+218	33	0
+219	33	0
+220	33	0
+221	33	0
+222	33	0
+223	33	0
+224	33	0
+225	33	0
+226	33	0
+227	33	0
+228	33	0
+229	33	0
+230	33	0
+231	33	0
+232	33	0
+233	33	0
+234	33	0
+235	33	0
+236	33	0
+237	33	0
+238	33	0
+239	33	0
+240	33	0
+241	33	0
+242	33	0
+243	33	0
+244	33	0
+245	33	0
+246	33	0
+247	33	0
+248	33	0
+249	33	0
+250	33	0
+251	33	0
+252	33	0
+253	33	0
+254	33	0
+255	33	0
+256	33	0
+257	33	0
+258	33	0
+259	33	0
+260	33	0
+261	33	0
+262	33	0
+263	33	0
+264	33	0
+265	33	0
+266	33	0
+267	33	0
+268	33	0
+269	33	0
+270	33	0
+271	33	0
+272	33	0
+273	33	0
+274	33	0
+275	33	0
+276	33	0
+277	33	0
+278	33	0
+279	33	0
+280	33	0
+281	33	0
+282	33	0
+283	33	0
+284	33	0
+285	33	0
+286	33	0
+287	33	0
+288	33	0
+289	33	0
+290	33	0
+291	33	0
+292	33	0
+293	33	0
+294	33	0
+295	33	0
+296	33	0
+297	33	0
+298	33	0
+299	33	0
+300	33	0
+301	33	0
+302	33	0
+303	33	0
+304	33	0
+305	33	0
+306	33	0
+307	33	0
+308	33	0
+309	33	0
+310	33	0
+311	33	0
+312	33	0
+313	33	0
+314	33	0
+315	33	0
+316	33	0
+317	33	0
+318	33	0
+319	33	0
+320	33	0
+321	33	0
+322	33	0
+323	33	0
+324	33	0
+325	33	0
+326	33	0
+327	33	0
+328	33	0
+329	33	0
+330	33	0
+331	33	0
+332	33	0
+333	33	0
+334	33	0
+335	33	0
+336	33	0
+337	33	0
+338	33	0
+339	33	0
+340	33	0
+341	33	0
+342	33	0
+343	33	0
+344	33	0
+345	33	0
+346	33	0
+347	33	0
+348	33	0
+349	33	0
+350	33	0
+351	33	0
+352	33	0
+353	33	0
+354	33	0
+355	33	0
+356	33	0
+357	33	0
+358	33	0
+359	33	0
+360	33	0
+0	33.5	0
+1	33.5	0
+2	33.5	0
+3	33.5	0
+4	33.5	0
+5	33.5	0
+6	33.5	0
+7	33.5	0
+8	33.5	0
+9	33.5	0
+10	33.5	0
+11	33.5	0
+12	33.5	0
+13	33.5	0
+14	33.5	0
+15	33.5	0
+16	33.5	0
+17	33.5	0
+18	33.5	0
+19	33.5	0
+20	33.5	0
+21	33.5	0
+22	33.5	0
+23	33.5	0
+24	33.5	0
+25	33.5	0
+26	33.5	0
+27	33.5	0
+28	33.5	0
+29	33.5	0
+30	33.5	0
+31	33.5	0
+32	33.5	0
+33	33.5	0
+34	33.5	0
+35	33.5	0
+36	33.5	0
+37	33.5	0
+38	33.5	0
+39	33.5	0
+40	33.5	0
+41	33.5	0
+42	33.5	0
+43	33.5	0
+44	33.5	0
+45	33.5	0
+46	33.5	0
+47	33.5	0
+48	33.5	0
+49	33.5	0
+50	33.5	0
+51	33.5	0
+52	33.5	0
+53	33.5	0
+54	33.5	0
+55	33.5	0
+56	33.5	0
+57	33.5	0
+58	33.5	0
+59	33.5	0
+60	33.5	0
+61	33.5	0
+62	33.5	0
+63	33.5	0
+64	33.5	0
+65	33.5	0
+66	33.5	0
+67	33.5	0
+68	33.5	0
+69	33.5	0
+70	33.5	0
+71	33.5	0
+72	33.5	0
+73	33.5	0
+74	33.5	0
+75	33.5	0
+76	33.5	0
+77	33.5	0
+78	33.5	0
+79	33.5	0
+80	33.5	0
+81	33.5	0
+82	33.5	0
+83	33.5	0
+84	33.5	0
+85	33.5	0
+86	33.5	0
+87	33.5	0
+88	33.5	0
+89	33.5	0
+90	33.5	0
+91	33.5	0
+92	33.5	0
+93	33.5	0
+94	33.5	0
+95	33.5	0
+96	33.5	0
+97	33.5	0
+98	33.5	0
+99	33.5	0
+100	33.5	0
+101	33.5	0
+102	33.5	0
+103	33.5	0
+104	33.5	0
+105	33.5	0
+106	33.5	0
+107	33.5	0
+108	33.5	0
+109	33.5	0
+110	33.5	0
+111	33.5	0
+112	33.5	0
+113	33.5	0
+114	33.5	0
+115	33.5	0
+116	33.5	0
+117	33.5	0
+118	33.5	0
+119	33.5	0
+120	33.5	0
+121	33.5	0
+122	33.5	0
+123	33.5	0
+124	33.5	0
+125	33.5	0
+126	33.5	0
+127	33.5	0
+128	33.5	0
+129	33.5	0
+130	33.5	0
+131	33.5	0
+132	33.5	0
+133	33.5	0
+134	33.5	0
+135	33.5	0
+136	33.5	0
+137	33.5	0
+138	33.5	0
+139	33.5	0
+140	33.5	0
+141	33.5	0
+142	33.5	0
+143	33.5	0
+144	33.5	0
+145	33.5	0
+146	33.5	0
+147	33.5	0
+148	33.5	0
+149	33.5	0
+150	33.5	0
+151	33.5	0
+152	33.5	0
+153	33.5	0
+154	33.5	0
+155	33.5	0
+156	33.5	0
+157	33.5	0
+158	33.5	0
+159	33.5	0
+160	33.5	0
+161	33.5	0
+162	33.5	0
+163	33.5	0
+164	33.5	0
+165	33.5	0
+166	33.5	0
+167	33.5	0
+168	33.5	0
+169	33.5	0
+170	33.5	0
+171	33.5	0
+172	33.5	0
+173	33.5	0
+174	33.5	0
+175	33.5	0
+176	33.5	0
+177	33.5	0
+178	33.5	0
+179	33.5	0
+180	33.5	0
+181	33.5	0
+182	33.5	0
+183	33.5	0
+184	33.5	0
+185	33.5	0
+186	33.5	0
+187	33.5	0
+188	33.5	0
+189	33.5	0
+190	33.5	0
+191	33.5	0
+192	33.5	0
+193	33.5	0
+194	33.5	0
+195	33.5	0
+196	33.5	0
+197	33.5	0
+198	33.5	0
+199	33.5	0
+200	33.5	0
+201	33.5	0
+202	33.5	0
+203	33.5	0
+204	33.5	0
+205	33.5	0
+206	33.5	0
+207	33.5	0
+208	33.5	0
+209	33.5	0
+210	33.5	0
+211	33.5	0
+212	33.5	0
+213	33.5	0
+214	33.5	0
+215	33.5	0
+216	33.5	0
+217	33.5	0
+218	33.5	0
+219	33.5	0
+220	33.5	0
+221	33.5	0
+222	33.5	0
+223	33.5	0
+224	33.5	0
+225	33.5	0
+226	33.5	0
+227	33.5	0
+228	33.5	0
+229	33.5	0
+230	33.5	0
+231	33.5	0
+232	33.5	0
+233	33.5	0
+234	33.5	0
+235	33.5	0
+236	33.5	0
+237	33.5	0
+238	33.5	0
+239	33.5	0
+240	33.5	0
+241	33.5	0
+242	33.5	0
+243	33.5	0
+244	33.5	0
+245	33.5	0
+246	33.5	0
+247	33.5	0
+248	33.5	0
+249	33.5	0
+250	33.5	0
+251	33.5	0
+252	33.5	0
+253	33.5	0
+254	33.5	0
+255	33.5	0
+256	33.5	0
+257	33.5	0
+258	33.5	0
+259	33.5	0
+260	33.5	0
+261	33.5	0
+262	33.5	0
+263	33.5	0
+264	33.5	0
+265	33.5	0
+266	33.5	0
+267	33.5	0
+268	33.5	0
+269	33.5	0
+270	33.5	0
+271	33.5	0
+272	33.5	0
+273	33.5	0
+274	33.5	0
+275	33.5	0
+276	33.5	0
+277	33.5	0
+278	33.5	0
+279	33.5	0
+280	33.5	0
+281	33.5	0
+282	33.5	0
+283	33.5	0
+284	33.5	0
+285	33.5	0
+286	33.5	0
+287	33.5	0
+288	33.5	0
+289	33.5	0
+290	33.5	0
+291	33.5	0
+292	33.5	0
+293	33.5	0
+294	33.5	0
+295	33.5	0
+296	33.5	0
+297	33.5	0
+298	33.5	0
+299	33.5	0
+300	33.5	0
+301	33.5	0
+302	33.5	0
+303	33.5	0
+304	33.5	0
+305	33.5	0
+306	33.5	0
+307	33.5	0
+308	33.5	0
+309	33.5	0
+310	33.5	0
+311	33.5	0
+312	33.5	0
+313	33.5	0
+314	33.5	0
+315	33.5	0
+316	33.5	0
+317	33.5	0
+318	33.5	0
+319	33.5	0
+320	33.5	0
+321	33.5	0
+322	33.5	0
+323	33.5	0
+324	33.5	0
+325	33.5	0
+326	33.5	0
+327	33.5	0
+328	33.5	0
+329	33.5	0
+330	33.5	0
+331	33.5	0
+332	33.5	0
+333	33.5	0
+334	33.5	0
+335	33.5	0
+336	33.5	0
+337	33.5	0
+338	33.5	0
+339	33.5	0
+340	33.5	0
+341	33.5	0
+342	33.5	0
+343	33.5	0
+344	33.5	0
+345	33.5	0
+346	33.5	0
+347	33.5	0
+348	33.5	0
+349	33.5	0
+350	33.5	0
+351	33.5	0
+352	33.5	0
+353	33.5	0
+354	33.5	0
+355	33.5	0
+356	33.5	0
+357	33.5	0
+358	33.5	0
+359	33.5	0
+360	33.5	0
+0	34	0
+1	34	0
+2	34	0
+3	34	0
+4	34	0
+5	34	0
+6	34	0
+7	34	0
+8	34	0
+9	34	0
+10	34	0
+11	34	0
+12	34	0
+13	34	0
+14	34	0
+15	34	0
+16	34	0
+17	34	0
+18	34	0
+19	34	0
+20	34	0
+21	34	0
+22	34	0
+23	34	0
+24	34	0
+25	34	0
+26	34	0
+27	34	0
+28	34	0
+29	34	0
+30	34	0
+31	34	0
+32	34	0
+33	34	0
+34	34	0
+35	34	0
+36	34	0
+37	34	0
+38	34	0
+39	34	0
+40	34	0
+41	34	0
+42	34	0
+43	34	0
+44	34	0
+45	34	0
+46	34	0
+47	34	0
+48	34	0
+49	34	0
+50	34	0
+51	34	0
+52	34	0
+53	34	0
+54	34	0
+55	34	0
+56	34	0
+57	34	0
+58	34	0
+59	34	0
+60	34	0
+61	34	0
+62	34	0
+63	34	0
+64	34	0
+65	34	0
+66	34	0
+67	34	0
+68	34	0
+69	34	0
+70	34	0
+71	34	0
+72	34	0
+73	34	0
+74	34	0
+75	34	0
+76	34	0
+77	34	0
+78	34	0
+79	34	0
+80	34	0
+81	34	0
+82	34	0
+83	34	0
+84	34	0
+85	34	0
+86	34	0
+87	34	0
+88	34	0
+89	34	0
+90	34	0
+91	34	0
+92	34	0
+93	34	0
+94	34	0
+95	34	0
+96	34	0
+97	34	0
+98	34	0
+99	34	0
+100	34	0
+101	34	0
+102	34	0
+103	34	0
+104	34	0
+105	34	0
+106	34	0
+107	34	0
+108	34	0
+109	34	0
+110	34	0
+111	34	0
+112	34	0
+113	34	0
+114	34	0
+115	34	0
+116	34	0
+117	34	0
+118	34	0
+119	34	0
+120	34	0
+121	34	0
+122	34	0
+123	34	0
+124	34	0
+125	34	0
+126	34	0
+127	34	0
+128	34	0
+129	34	0
+130	34	0
+131	34	0
+132	34	0
+133	34	0
+134	34	0
+135	34	0
+136	34	0
+137	34	0
+138	34	0
+139	34	0
+140	34	0
+141	34	0
+142	34	0
+143	34	0
+144	34	0
+145	34	0
+146	34	0
+147	34	0
+148	34	0
+149	34	0
+150	34	0
+151	34	0
+152	34	0
+153	34	0
+154	34	0
+155	34	0
+156	34	0
+157	34	0
+158	34	0
+159	34	0
+160	34	0
+161	34	0
+162	34	0
+163	34	0
+164	34	0
+165	34	0
+166	34	0
+167	34	0
+168	34	0
+169	34	0
+170	34	0
+171	34	0
+172	34	0
+173	34	0
+174	34	0
+175	34	0
+176	34	0
+177	34	0
+178	34	0
+179	34	0
+180	34	0
+181	34	0
+182	34	0
+183	34	0
+184	34	0
+185	34	0
+186	34	0
+187	34	0
+188	34	0
+189	34	0
+190	34	0
+191	34	0
+192	34	0
+193	34	0
+194	34	0
+195	34	0
+196	34	0
+197	34	0
+198	34	0
+199	34	0
+200	34	0
+201	34	0
+202	34	0
+203	34	0
+204	34	0
+205	34	0
+206	34	0
+207	34	0
+208	34	0
+209	34	0
+210	34	0
+211	34	0
+212	34	0
+213	34	0
+214	34	0
+215	34	0
+216	34	0
+217	34	0
+218	34	0
+219	34	0
+220	34	0
+221	34	0
+222	34	0
+223	34	0
+224	34	0
+225	34	0
+226	34	0
+227	34	0
+228	34	0
+229	34	0
+230	34	0
+231	34	0
+232	34	0
+233	34	0
+234	34	0
+235	34	0
+236	34	0
+237	34	0
+238	34	0
+239	34	0
+240	34	0
+241	34	0
+242	34	0
+243	34	0
+244	34	0
+245	34	0
+246	34	0
+247	34	0
+248	34	0
+249	34	0
+250	34	0
+251	34	0
+252	34	0
+253	34	0
+254	34	0
+255	34	0
+256	34	0
+257	34	0
+258	34	0
+259	34	0
+260	34	0
+261	34	0
+262	34	0
+263	34	0
+264	34	0
+265	34	0
+266	34	0
+267	34	0
+268	34	0
+269	34	0
+270	34	0
+271	34	0
+272	34	0
+273	34	0
+274	34	0
+275	34	0
+276	34	0
+277	34	0
+278	34	0
+279	34	0
+280	34	0
+281	34	0
+282	34	0
+283	34	0
+284	34	0
+285	34	0
+286	34	0
+287	34	0
+288	34	0
+289	34	0
+290	34	0
+291	34	0
+292	34	0
+293	34	0
+294	34	0
+295	34	0
+296	34	0
+297	34	0
+298	34	0
+299	34	0
+300	34	0
+301	34	0
+302	34	0
+303	34	0
+304	34	0
+305	34	0
+306	34	0
+307	34	0
+308	34	0
+309	34	0
+310	34	0
+311	34	0
+312	34	0
+313	34	0
+314	34	0
+315	34	0
+316	34	0
+317	34	0
+318	34	0
+319	34	0
+320	34	0
+321	34	0
+322	34	0
+323	34	0
+324	34	0
+325	34	0
+326	34	0
+327	34	0
+328	34	0
+329	34	0
+330	34	0
+331	34	0
+332	34	0
+333	34	0
+334	34	0
+335	34	0
+336	34	0
+337	34	0
+338	34	0
+339	34	0
+340	34	0
+341	34	0
+342	34	0
+343	34	0
+344	34	0
+345	34	0
+346	34	0
+347	34	0
+348	34	0
+349	34	0
+350	34	0
+351	34	0
+352	34	0
+353	34	0
+354	34	0
+355	34	0
+356	34	0
+357	34	0
+358	34	0
+359	34	0
+360	34	0
+0	34.5	0
+1	34.5	0
+2	34.5	0
+3	34.5	0
+4	34.5	0
+5	34.5	0
+6	34.5	0
+7	34.5	0
+8	34.5	0
+9	34.5	0
+10	34.5	0
+11	34.5	0
+12	34.5	0
+13	34.5	0
+14	34.5	0
+15	34.5	0
+16	34.5	0
+17	34.5	0
+18	34.5	0
+19	34.5	0
+20	34.5	0
+21	34.5	0
+22	34.5	0
+23	34.5	0
+24	34.5	0
+25	34.5	0
+26	34.5	0
+27	34.5	0
+28	34.5	0
+29	34.5	0
+30	34.5	0
+31	34.5	0
+32	34.5	0
+33	34.5	0
+34	34.5	0
+35	34.5	0
+36	34.5	0
+37	34.5	0
+38	34.5	0
+39	34.5	0
+40	34.5	0
+41	34.5	0
+42	34.5	0
+43	34.5	0
+44	34.5	0
+45	34.5	0
+46	34.5	0
+47	34.5	0
+48	34.5	0
+49	34.5	0
+50	34.5	0
+51	34.5	0
+52	34.5	0
+53	34.5	0
+54	34.5	0
+55	34.5	0
+56	34.5	0
+57	34.5	0
+58	34.5	0
+59	34.5	0
+60	34.5	0
+61	34.5	0
+62	34.5	0
+63	34.5	0
+64	34.5	0
+65	34.5	0
+66	34.5	0
+67	34.5	0
+68	34.5	0
+69	34.5	0
+70	34.5	0
+71	34.5	0
+72	34.5	0
+73	34.5	0
+74	34.5	0
+75	34.5	0
+76	34.5	0
+77	34.5	0
+78	34.5	0
+79	34.5	0
+80	34.5	0
+81	34.5	0
+82	34.5	0
+83	34.5	0
+84	34.5	0
+85	34.5	0
+86	34.5	0
+87	34.5	0
+88	34.5	0
+89	34.5	0
+90	34.5	0
+91	34.5	0
+92	34.5	0
+93	34.5	0
+94	34.5	0
+95	34.5	0
+96	34.5	0
+97	34.5	0
+98	34.5	0
+99	34.5	0
+100	34.5	0
+101	34.5	0
+102	34.5	0
+103	34.5	0
+104	34.5	0
+105	34.5	0
+106	34.5	0
+107	34.5	0
+108	34.5	0
+109	34.5	0
+110	34.5	0
+111	34.5	0
+112	34.5	0
+113	34.5	0
+114	34.5	0
+115	34.5	0
+116	34.5	0
+117	34.5	0
+118	34.5	0
+119	34.5	0
+120	34.5	0
+121	34.5	0
+122	34.5	0
+123	34.5	0
+124	34.5	0
+125	34.5	0
+126	34.5	0
+127	34.5	0
+128	34.5	0
+129	34.5	0
+130	34.5	0
+131	34.5	0
+132	34.5	0
+133	34.5	0
+134	34.5	0
+135	34.5	0
+136	34.5	0
+137	34.5	0
+138	34.5	0
+139	34.5	0
+140	34.5	0
+141	34.5	0
+142	34.5	0
+143	34.5	0
+144	34.5	0
+145	34.5	0
+146	34.5	0
+147	34.5	0
+148	34.5	0
+149	34.5	0
+150	34.5	0
+151	34.5	0
+152	34.5	0
+153	34.5	0
+154	34.5	0
+155	34.5	0
+156	34.5	0
+157	34.5	0
+158	34.5	0
+159	34.5	0
+160	34.5	0
+161	34.5	0
+162	34.5	0
+163	34.5	0
+164	34.5	0
+165	34.5	0
+166	34.5	0
+167	34.5	0
+168	34.5	0
+169	34.5	0
+170	34.5	0
+171	34.5	0
+172	34.5	0
+173	34.5	0
+174	34.5	0
+175	34.5	0
+176	34.5	0
+177	34.5	0
+178	34.5	0
+179	34.5	0
+180	34.5	0
+181	34.5	0
+182	34.5	0
+183	34.5	0
+184	34.5	0
+185	34.5	0
+186	34.5	0
+187	34.5	0
+188	34.5	0
+189	34.5	0
+190	34.5	0
+191	34.5	0
+192	34.5	0
+193	34.5	0
+194	34.5	0
+195	34.5	0
+196	34.5	0
+197	34.5	0
+198	34.5	0
+199	34.5	0
+200	34.5	0
+201	34.5	0
+202	34.5	0
+203	34.5	0
+204	34.5	0
+205	34.5	0
+206	34.5	0
+207	34.5	0
+208	34.5	0
+209	34.5	0
+210	34.5	0
+211	34.5	0
+212	34.5	0
+213	34.5	0
+214	34.5	0
+215	34.5	0
+216	34.5	0
+217	34.5	0
+218	34.5	0
+219	34.5	0
+220	34.5	0
+221	34.5	0
+222	34.5	0
+223	34.5	0
+224	34.5	0
+225	34.5	0
+226	34.5	0
+227	34.5	0
+228	34.5	0
+229	34.5	0
+230	34.5	0
+231	34.5	0
+232	34.5	0
+233	34.5	0
+234	34.5	0
+235	34.5	0
+236	34.5	0
+237	34.5	0
+238	34.5	0
+239	34.5	0
+240	34.5	0
+241	34.5	0
+242	34.5	0
+243	34.5	0
+244	34.5	0
+245	34.5	0
+246	34.5	0
+247	34.5	0
+248	34.5	0
+249	34.5	0
+250	34.5	0
+251	34.5	0
+252	34.5	0
+253	34.5	0
+254	34.5	0
+255	34.5	0
+256	34.5	0
+257	34.5	0
+258	34.5	0
+259	34.5	0
+260	34.5	0
+261	34.5	0
+262	34.5	0
+263	34.5	0
+264	34.5	0
+265	34.5	0
+266	34.5	0
+267	34.5	0
+268	34.5	0
+269	34.5	0
+270	34.5	0
+271	34.5	0
+272	34.5	0
+273	34.5	0
+274	34.5	0
+275	34.5	0
+276	34.5	0
+277	34.5	0
+278	34.5	0
+279	34.5	0
+280	34.5	0
+281	34.5	0
+282	34.5	0
+283	34.5	0
+284	34.5	0
+285	34.5	0
+286	34.5	0
+287	34.5	0
+288	34.5	0
+289	34.5	0
+290	34.5	0
+291	34.5	0
+292	34.5	0
+293	34.5	0
+294	34.5	0
+295	34.5	0
+296	34.5	0
+297	34.5	0
+298	34.5	0
+299	34.5	0
+300	34.5	0
+301	34.5	0
+302	34.5	0
+303	34.5	0
+304	34.5	0
+305	34.5	0
+306	34.5	0
+307	34.5	0
+308	34.5	0
+309	34.5	0
+310	34.5	0
+311	34.5	0
+312	34.5	0
+313	34.5	0
+314	34.5	0
+315	34.5	0
+316	34.5	0
+317	34.5	0
+318	34.5	0
+319	34.5	0
+320	34.5	0
+321	34.5	0
+322	34.5	0
+323	34.5	0
+324	34.5	0
+325	34.5	0
+326	34.5	0
+327	34.5	0
+328	34.5	0
+329	34.5	0
+330	34.5	0
+331	34.5	0
+332	34.5	0
+333	34.5	0
+334	34.5	0
+335	34.5	0
+336	34.5	0
+337	34.5	0
+338	34.5	0
+339	34.5	0
+340	34.5	0
+341	34.5	0
+342	34.5	0
+343	34.5	0
+344	34.5	0
+345	34.5	0
+346	34.5	0
+347	34.5	0
+348	34.5	0
+349	34.5	0
+350	34.5	0
+351	34.5	0
+352	34.5	0
+353	34.5	0
+354	34.5	0
+355	34.5	0
+356	34.5	0
+357	34.5	0
+358	34.5	0
+359	34.5	0
+360	34.5	0
+0	35	0
+1	35	0
+2	35	0
+3	35	0
+4	35	0
+5	35	0
+6	35	0
+7	35	0
+8	35	0
+9	35	0
+10	35	0
+11	35	0
+12	35	0
+13	35	0
+14	35	0
+15	35	0
+16	35	0
+17	35	0
+18	35	0
+19	35	0
+20	35	0
+21	35	0
+22	35	0
+23	35	0
+24	35	0
+25	35	0
+26	35	0
+27	35	0
+28	35	0
+29	35	0
+30	35	0
+31	35	0
+32	35	0
+33	35	0
+34	35	0
+35	35	0
+36	35	0
+37	35	0
+38	35	0
+39	35	0
+40	35	0
+41	35	0
+42	35	0
+43	35	0
+44	35	0
+45	35	0
+46	35	0
+47	35	0
+48	35	0
+49	35	0
+50	35	0
+51	35	0
+52	35	0
+53	35	0
+54	35	0
+55	35	0
+56	35	0
+57	35	0
+58	35	0
+59	35	0
+60	35	0
+61	35	0
+62	35	0
+63	35	0
+64	35	0
+65	35	0
+66	35	0
+67	35	0
+68	35	0
+69	35	0
+70	35	0
+71	35	0
+72	35	0
+73	35	0
+74	35	0
+75	35	0
+76	35	0
+77	35	0
+78	35	0
+79	35	0
+80	35	0
+81	35	0
+82	35	0
+83	35	0
+84	35	0
+85	35	0
+86	35	0
+87	35	0
+88	35	0
+89	35	0
+90	35	0
+91	35	0
+92	35	0
+93	35	0
+94	35	0
+95	35	0
+96	35	0
+97	35	0
+98	35	0
+99	35	0
+100	35	0
+101	35	0
+102	35	0
+103	35	0
+104	35	0
+105	35	0
+106	35	0
+107	35	0
+108	35	0
+109	35	0
+110	35	0
+111	35	0
+112	35	0
+113	35	0
+114	35	0
+115	35	0
+116	35	0
+117	35	0
+118	35	0
+119	35	0
+120	35	0
+121	35	0
+122	35	0
+123	35	0
+124	35	0
+125	35	0
+126	35	0
+127	35	0
+128	35	0
+129	35	0
+130	35	0
+131	35	0
+132	35	0
+133	35	0
+134	35	0
+135	35	0
+136	35	0
+137	35	0
+138	35	0
+139	35	0
+140	35	0
+141	35	0
+142	35	0
+143	35	0
+144	35	0
+145	35	0
+146	35	0
+147	35	0
+148	35	0
+149	35	0
+150	35	0
+151	35	0
+152	35	0
+153	35	0
+154	35	0
+155	35	0
+156	35	0
+157	35	0
+158	35	0
+159	35	0
+160	35	0
+161	35	0
+162	35	0
+163	35	0
+164	35	0
+165	35	0
+166	35	0
+167	35	0
+168	35	0
+169	35	0
+170	35	0
+171	35	0
+172	35	0
+173	35	0
+174	35	0
+175	35	0
+176	35	0
+177	35	0
+178	35	0
+179	35	0
+180	35	0
+181	35	0
+182	35	0
+183	35	0
+184	35	0
+185	35	0
+186	35	0
+187	35	0
+188	35	0
+189	35	0
+190	35	0
+191	35	0
+192	35	0
+193	35	0
+194	35	0
+195	35	0
+196	35	0
+197	35	0
+198	35	0
+199	35	0
+200	35	0
+201	35	0
+202	35	0
+203	35	0
+204	35	0
+205	35	0
+206	35	0
+207	35	0
+208	35	0
+209	35	0
+210	35	0
+211	35	0
+212	35	0
+213	35	0
+214	35	0
+215	35	0
+216	35	0
+217	35	0
+218	35	0
+219	35	0
+220	35	0
+221	35	0
+222	35	0
+223	35	0
+224	35	0
+225	35	0
+226	35	0
+227	35	0
+228	35	0
+229	35	0
+230	35	0
+231	35	0
+232	35	0
+233	35	0
+234	35	0
+235	35	0
+236	35	0
+237	35	0
+238	35	0
+239	35	0
+240	35	0
+241	35	0
+242	35	0
+243	35	0
+244	35	0
+245	35	0
+246	35	0
+247	35	0
+248	35	0
+249	35	0
+250	35	0
+251	35	0
+252	35	0
+253	35	0
+254	35	0
+255	35	0
+256	35	0
+257	35	0
+258	35	0
+259	35	0
+260	35	0
+261	35	0
+262	35	0
+263	35	0
+264	35	0
+265	35	0
+266	35	0
+267	35	0
+268	35	0
+269	35	0
+270	35	0
+271	35	0
+272	35	0
+273	35	0
+274	35	0
+275	35	0
+276	35	0
+277	35	0
+278	35	0
+279	35	0
+280	35	0
+281	35	0
+282	35	0
+283	35	0
+284	35	0
+285	35	0
+286	35	0
+287	35	0
+288	35	0
+289	35	0
+290	35	0
+291	35	0
+292	35	0
+293	35	0
+294	35	0
+295	35	0
+296	35	0
+297	35	0
+298	35	0
+299	35	0
+300	35	0
+301	35	0
+302	35	0
+303	35	0
+304	35	0
+305	35	0
+306	35	0
+307	35	0
+308	35	0
+309	35	0
+310	35	0
+311	35	0
+312	35	0
+313	35	0
+314	35	0
+315	35	0
+316	35	0
+317	35	0
+318	35	0
+319	35	0
+320	35	0
+321	35	0
+322	35	0
+323	35	0
+324	35	0
+325	35	0
+326	35	0
+327	35	0
+328	35	0
+329	35	0
+330	35	0
+331	35	0
+332	35	0
+333	35	0
+334	35	0
+335	35	0
+336	35	0
+337	35	0
+338	35	0
+339	35	0
+340	35	0
+341	35	0
+342	35	0
+343	35	0
+344	35	0
+345	35	0
+346	35	0
+347	35	0
+348	35	0
+349	35	0
+350	35	0
+351	35	0
+352	35	0
+353	35	0
+354	35	0
+355	35	0
+356	35	0
+357	35	0
+358	35	0
+359	35	0
+360	35	0
+0	35.5	0
+1	35.5	0
+2	35.5	0
+3	35.5	0
+4	35.5	0
+5	35.5	0
+6	35.5	0
+7	35.5	0
+8	35.5	0
+9	35.5	0
+10	35.5	0
+11	35.5	0
+12	35.5	0
+13	35.5	0
+14	35.5	0
+15	35.5	0
+16	35.5	0
+17	35.5	0
+18	35.5	0
+19	35.5	0
+20	35.5	0
+21	35.5	0
+22	35.5	0
+23	35.5	0
+24	35.5	0
+25	35.5	0
+26	35.5	0
+27	35.5	0
+28	35.5	0
+29	35.5	0
+30	35.5	0
+31	35.5	0
+32	35.5	0
+33	35.5	0
+34	35.5	0
+35	35.5	0
+36	35.5	0
+37	35.5	0
+38	35.5	0
+39	35.5	0
+40	35.5	0
+41	35.5	0
+42	35.5	0
+43	35.5	0
+44	35.5	0
+45	35.5	0
+46	35.5	0
+47	35.5	0
+48	35.5	0
+49	35.5	0
+50	35.5	0
+51	35.5	0
+52	35.5	0
+53	35.5	0
+54	35.5	0
+55	35.5	0
+56	35.5	0
+57	35.5	0
+58	35.5	0
+59	35.5	0
+60	35.5	0
+61	35.5	0
+62	35.5	0
+63	35.5	0
+64	35.5	0
+65	35.5	0
+66	35.5	0
+67	35.5	0
+68	35.5	0
+69	35.5	0
+70	35.5	0
+71	35.5	0
+72	35.5	0
+73	35.5	0
+74	35.5	0
+75	35.5	0
+76	35.5	0
+77	35.5	0
+78	35.5	0
+79	35.5	0
+80	35.5	0
+81	35.5	0
+82	35.5	0
+83	35.5	0
+84	35.5	0
+85	35.5	0
+86	35.5	0
+87	35.5	0
+88	35.5	0
+89	35.5	0
+90	35.5	0
+91	35.5	0
+92	35.5	0
+93	35.5	0
+94	35.5	0
+95	35.5	0
+96	35.5	0
+97	35.5	0
+98	35.5	0
+99	35.5	0
+100	35.5	0
+101	35.5	0
+102	35.5	0
+103	35.5	0
+104	35.5	0
+105	35.5	0
+106	35.5	0
+107	35.5	0
+108	35.5	0
+109	35.5	0
+110	35.5	0
+111	35.5	0
+112	35.5	0
+113	35.5	0
+114	35.5	0
+115	35.5	0
+116	35.5	0
+117	35.5	0
+118	35.5	0
+119	35.5	0
+120	35.5	0
+121	35.5	0
+122	35.5	0
+123	35.5	0
+124	35.5	0
+125	35.5	0
+126	35.5	0
+127	35.5	0
+128	35.5	0
+129	35.5	0
+130	35.5	0
+131	35.5	0
+132	35.5	0
+133	35.5	0
+134	35.5	0
+135	35.5	0
+136	35.5	0
+137	35.5	0
+138	35.5	0
+139	35.5	0
+140	35.5	0
+141	35.5	0
+142	35.5	0
+143	35.5	0
+144	35.5	0
+145	35.5	0
+146	35.5	0
+147	35.5	0
+148	35.5	0
+149	35.5	0
+150	35.5	0
+151	35.5	0
+152	35.5	0
+153	35.5	0
+154	35.5	0
+155	35.5	0
+156	35.5	0
+157	35.5	0
+158	35.5	0
+159	35.5	0
+160	35.5	0
+161	35.5	0
+162	35.5	0
+163	35.5	0
+164	35.5	0
+165	35.5	0
+166	35.5	0
+167	35.5	0
+168	35.5	0
+169	35.5	0
+170	35.5	0
+171	35.5	0
+172	35.5	0
+173	35.5	0
+174	35.5	0
+175	35.5	0
+176	35.5	0
+177	35.5	0
+178	35.5	0
+179	35.5	0
+180	35.5	0
+181	35.5	0
+182	35.5	0
+183	35.5	0
+184	35.5	0
+185	35.5	0
+186	35.5	0
+187	35.5	0
+188	35.5	0
+189	35.5	0
+190	35.5	0
+191	35.5	0
+192	35.5	0
+193	35.5	0
+194	35.5	0
+195	35.5	0
+196	35.5	0
+197	35.5	0
+198	35.5	0
+199	35.5	0
+200	35.5	0
+201	35.5	0
+202	35.5	0
+203	35.5	0
+204	35.5	0
+205	35.5	0
+206	35.5	0
+207	35.5	0
+208	35.5	0
+209	35.5	0
+210	35.5	0
+211	35.5	0
+212	35.5	0
+213	35.5	0
+214	35.5	0
+215	35.5	0
+216	35.5	0
+217	35.5	0
+218	35.5	0
+219	35.5	0
+220	35.5	0
+221	35.5	0
+222	35.5	0
+223	35.5	0
+224	35.5	0
+225	35.5	0
+226	35.5	0
+227	35.5	0
+228	35.5	0
+229	35.5	0
+230	35.5	0
+231	35.5	0
+232	35.5	0
+233	35.5	0
+234	35.5	0
+235	35.5	0
+236	35.5	0
+237	35.5	0
+238	35.5	0
+239	35.5	0
+240	35.5	0
+241	35.5	0
+242	35.5	0
+243	35.5	0
+244	35.5	0
+245	35.5	0
+246	35.5	0
+247	35.5	0
+248	35.5	0
+249	35.5	0
+250	35.5	0
+251	35.5	0
+252	35.5	0
+253	35.5	0
+254	35.5	0
+255	35.5	0
+256	35.5	0
+257	35.5	0
+258	35.5	0
+259	35.5	0
+260	35.5	0
+261	35.5	0
+262	35.5	0
+263	35.5	0
+264	35.5	0
+265	35.5	0
+266	35.5	0
+267	35.5	0
+268	35.5	0
+269	35.5	0
+270	35.5	0
+271	35.5	0
+272	35.5	0
+273	35.5	0
+274	35.5	0
+275	35.5	0
+276	35.5	0
+277	35.5	0
+278	35.5	0
+279	35.5	0
+280	35.5	0
+281	35.5	0
+282	35.5	0
+283	35.5	0
+284	35.5	0
+285	35.5	0
+286	35.5	0
+287	35.5	0
+288	35.5	0
+289	35.5	0
+290	35.5	0
+291	35.5	0
+292	35.5	0
+293	35.5	0
+294	35.5	0
+295	35.5	0
+296	35.5	0
+297	35.5	0
+298	35.5	0
+299	35.5	0
+300	35.5	0
+301	35.5	0
+302	35.5	0
+303	35.5	0
+304	35.5	0
+305	35.5	0
+306	35.5	0
+307	35.5	0
+308	35.5	0
+309	35.5	0
+310	35.5	0
+311	35.5	0
+312	35.5	0
+313	35.5	0
+314	35.5	0
+315	35.5	0
+316	35.5	0
+317	35.5	0
+318	35.5	0
+319	35.5	0
+320	35.5	0
+321	35.5	0
+322	35.5	0
+323	35.5	0
+324	35.5	0
+325	35.5	0
+326	35.5	0
+327	35.5	0
+328	35.5	0
+329	35.5	0
+330	35.5	0
+331	35.5	0
+332	35.5	0
+333	35.5	0
+334	35.5	0
+335	35.5	0
+336	35.5	0
+337	35.5	0
+338	35.5	0
+339	35.5	0
+340	35.5	0
+341	35.5	0
+342	35.5	0
+343	35.5	0
+344	35.5	0
+345	35.5	0
+346	35.5	0
+347	35.5	0
+348	35.5	0
+349	35.5	0
+350	35.5	0
+351	35.5	0
+352	35.5	0
+353	35.5	0
+354	35.5	0
+355	35.5	0
+356	35.5	0
+357	35.5	0
+358	35.5	0
+359	35.5	0
+360	35.5	0
+0	36	0
+1	36	0
+2	36	0
+3	36	0
+4	36	0
+5	36	0
+6	36	0
+7	36	0
+8	36	0
+9	36	0
+10	36	0
+11	36	0
+12	36	0
+13	36	0
+14	36	0
+15	36	0
+16	36	0
+17	36	0
+18	36	0
+19	36	0
+20	36	0
+21	36	0
+22	36	0
+23	36	0
+24	36	0
+25	36	0
+26	36	0
+27	36	0
+28	36	0
+29	36	0
+30	36	0
+31	36	0
+32	36	0
+33	36	0
+34	36	0
+35	36	0
+36	36	0
+37	36	0
+38	36	0
+39	36	0
+40	36	0
+41	36	0
+42	36	0
+43	36	0
+44	36	0
+45	36	0
+46	36	0
+47	36	0
+48	36	0
+49	36	0
+50	36	0
+51	36	0
+52	36	0
+53	36	0
+54	36	0
+55	36	0
+56	36	0
+57	36	0
+58	36	0
+59	36	0
+60	36	0
+61	36	0
+62	36	0
+63	36	0
+64	36	0
+65	36	0
+66	36	0
+67	36	0
+68	36	0
+69	36	0
+70	36	0
+71	36	0
+72	36	0
+73	36	0
+74	36	0
+75	36	0
+76	36	0
+77	36	0
+78	36	0
+79	36	0
+80	36	0
+81	36	0
+82	36	0
+83	36	0
+84	36	0
+85	36	0
+86	36	0
+87	36	0
+88	36	0
+89	36	0
+90	36	0
+91	36	0
+92	36	0
+93	36	0
+94	36	0
+95	36	0
+96	36	0
+97	36	0
+98	36	0
+99	36	0
+100	36	0
+101	36	0
+102	36	0
+103	36	0
+104	36	0
+105	36	0
+106	36	0
+107	36	0
+108	36	0
+109	36	0
+110	36	0
+111	36	0
+112	36	0
+113	36	0
+114	36	0
+115	36	0
+116	36	0
+117	36	0
+118	36	0
+119	36	0
+120	36	0
+121	36	0
+122	36	0
+123	36	0
+124	36	0
+125	36	0
+126	36	0
+127	36	0
+128	36	0
+129	36	0
+130	36	0
+131	36	0
+132	36	0
+133	36	0
+134	36	0
+135	36	0
+136	36	0
+137	36	0
+138	36	0
+139	36	0
+140	36	0
+141	36	0
+142	36	0
+143	36	0
+144	36	0
+145	36	0
+146	36	0
+147	36	0
+148	36	0
+149	36	0
+150	36	0
+151	36	0
+152	36	0
+153	36	0
+154	36	0
+155	36	0
+156	36	0
+157	36	0
+158	36	0
+159	36	0
+160	36	0
+161	36	0
+162	36	0
+163	36	0
+164	36	0
+165	36	0
+166	36	0
+167	36	0
+168	36	0
+169	36	0
+170	36	0
+171	36	0
+172	36	0
+173	36	0
+174	36	0
+175	36	0
+176	36	0
+177	36	0
+178	36	0
+179	36	0
+180	36	0
+181	36	0
+182	36	0
+183	36	0
+184	36	0
+185	36	0
+186	36	0
+187	36	0
+188	36	0
+189	36	0
+190	36	0
+191	36	0
+192	36	0
+193	36	0
+194	36	0
+195	36	0
+196	36	0
+197	36	0
+198	36	0
+199	36	0
+200	36	0
+201	36	0
+202	36	0
+203	36	0
+204	36	0
+205	36	0
+206	36	0
+207	36	0
+208	36	0
+209	36	0
+210	36	0
+211	36	0
+212	36	0
+213	36	0
+214	36	0
+215	36	0
+216	36	0
+217	36	0
+218	36	0
+219	36	0
+220	36	0
+221	36	0
+222	36	0
+223	36	0
+224	36	0
+225	36	0
+226	36	0
+227	36	0
+228	36	0
+229	36	0
+230	36	0
+231	36	0
+232	36	0
+233	36	0
+234	36	0
+235	36	0
+236	36	0
+237	36	0
+238	36	0
+239	36	0
+240	36	0
+241	36	0
+242	36	0
+243	36	0
+244	36	0
+245	36	0
+246	36	0
+247	36	0
+248	36	0
+249	36	0
+250	36	0
+251	36	0
+252	36	0
+253	36	0
+254	36	0
+255	36	0
+256	36	0
+257	36	0
+258	36	0
+259	36	0
+260	36	0
+261	36	0
+262	36	0
+263	36	0
+264	36	0
+265	36	0
+266	36	0
+267	36	0
+268	36	0
+269	36	0
+270	36	0
+271	36	0
+272	36	0
+273	36	0
+274	36	0
+275	36	0
+276	36	0
+277	36	0
+278	36	0
+279	36	0
+280	36	0
+281	36	0
+282	36	0
+283	36	0
+284	36	0
+285	36	0
+286	36	0
+287	36	0
+288	36	0
+289	36	0
+290	36	0
+291	36	0
+292	36	0
+293	36	0
+294	36	0
+295	36	0
+296	36	0
+297	36	0
+298	36	0
+299	36	0
+300	36	0
+301	36	0
+302	36	0
+303	36	0
+304	36	0
+305	36	0
+306	36	0
+307	36	0
+308	36	0
+309	36	0
+310	36	0
+311	36	0
+312	36	0
+313	36	0
+314	36	0
+315	36	0
+316	36	0
+317	36	0
+318	36	0
+319	36	0
+320	36	0
+321	36	0
+322	36	0
+323	36	0
+324	36	0
+325	36	0
+326	36	0
+327	36	0
+328	36	0
+329	36	0
+330	36	0
+331	36	0
+332	36	0
+333	36	0
+334	36	0
+335	36	0
+336	36	0
+337	36	0
+338	36	0
+339	36	0
+340	36	0
+341	36	0
+342	36	0
+343	36	0
+344	36	0
+345	36	0
+346	36	0
+347	36	0
+348	36	0
+349	36	0
+350	36	0
+351	36	0
+352	36	0
+353	36	0
+354	36	0
+355	36	0
+356	36	0
+357	36	0
+358	36	0
+359	36	0
+360	36	0
+0	36.5	0
+1	36.5	0
+2	36.5	0
+3	36.5	0
+4	36.5	0
+5	36.5	0
+6	36.5	0
+7	36.5	0
+8	36.5	0
+9	36.5	0
+10	36.5	0
+11	36.5	0
+12	36.5	0
+13	36.5	0
+14	36.5	0
+15	36.5	0
+16	36.5	0
+17	36.5	0
+18	36.5	0
+19	36.5	0
+20	36.5	0
+21	36.5	0
+22	36.5	0
+23	36.5	0
+24	36.5	0
+25	36.5	0
+26	36.5	0
+27	36.5	0
+28	36.5	0
+29	36.5	0
+30	36.5	0
+31	36.5	0
+32	36.5	0
+33	36.5	0
+34	36.5	0
+35	36.5	0
+36	36.5	0
+37	36.5	0
+38	36.5	0
+39	36.5	0
+40	36.5	0
+41	36.5	0
+42	36.5	0
+43	36.5	0
+44	36.5	0
+45	36.5	0
+46	36.5	0
+47	36.5	0
+48	36.5	0
+49	36.5	0
+50	36.5	0
+51	36.5	0
+52	36.5	0
+53	36.5	0
+54	36.5	0
+55	36.5	0
+56	36.5	0
+57	36.5	0
+58	36.5	0
+59	36.5	0
+60	36.5	0
+61	36.5	0
+62	36.5	0
+63	36.5	0
+64	36.5	0
+65	36.5	0
+66	36.5	0
+67	36.5	0
+68	36.5	0
+69	36.5	0
+70	36.5	0
+71	36.5	0
+72	36.5	0
+73	36.5	0
+74	36.5	0
+75	36.5	0
+76	36.5	0
+77	36.5	0
+78	36.5	0
+79	36.5	0
+80	36.5	0
+81	36.5	0
+82	36.5	0
+83	36.5	0
+84	36.5	0
+85	36.5	0
+86	36.5	0
+87	36.5	0
+88	36.5	0
+89	36.5	0
+90	36.5	0
+91	36.5	0
+92	36.5	0
+93	36.5	0
+94	36.5	0
+95	36.5	0
+96	36.5	0
+97	36.5	0
+98	36.5	0
+99	36.5	0
+100	36.5	0
+101	36.5	0
+102	36.5	0
+103	36.5	0
+104	36.5	0
+105	36.5	0
+106	36.5	0
+107	36.5	0
+108	36.5	0
+109	36.5	0
+110	36.5	0
+111	36.5	0
+112	36.5	0
+113	36.5	0
+114	36.5	0
+115	36.5	0
+116	36.5	0
+117	36.5	0
+118	36.5	0
+119	36.5	0
+120	36.5	0
+121	36.5	0
+122	36.5	0
+123	36.5	0
+124	36.5	0
+125	36.5	0
+126	36.5	0
+127	36.5	0
+128	36.5	0
+129	36.5	0
+130	36.5	0
+131	36.5	0
+132	36.5	0
+133	36.5	0
+134	36.5	0
+135	36.5	0
+136	36.5	0
+137	36.5	0
+138	36.5	0
+139	36.5	0
+140	36.5	0
+141	36.5	0
+142	36.5	0
+143	36.5	0
+144	36.5	0
+145	36.5	0
+146	36.5	0
+147	36.5	0
+148	36.5	0
+149	36.5	0
+150	36.5	0
+151	36.5	0
+152	36.5	0
+153	36.5	0
+154	36.5	0
+155	36.5	0
+156	36.5	0
+157	36.5	0
+158	36.5	0
+159	36.5	0
+160	36.5	0
+161	36.5	0
+162	36.5	0
+163	36.5	0
+164	36.5	0
+165	36.5	0
+166	36.5	0
+167	36.5	0
+168	36.5	0
+169	36.5	0
+170	36.5	0
+171	36.5	0
+172	36.5	0
+173	36.5	0
+174	36.5	0
+175	36.5	0
+176	36.5	0
+177	36.5	0
+178	36.5	0
+179	36.5	0
+180	36.5	0
+181	36.5	0
+182	36.5	0
+183	36.5	0
+184	36.5	0
+185	36.5	0
+186	36.5	0
+187	36.5	0
+188	36.5	0
+189	36.5	0
+190	36.5	0
+191	36.5	0
+192	36.5	0
+193	36.5	0
+194	36.5	0
+195	36.5	0
+196	36.5	0
+197	36.5	0
+198	36.5	0
+199	36.5	0
+200	36.5	0
+201	36.5	0
+202	36.5	0
+203	36.5	0
+204	36.5	0
+205	36.5	0
+206	36.5	0
+207	36.5	0
+208	36.5	0
+209	36.5	0
+210	36.5	0
+211	36.5	0
+212	36.5	0
+213	36.5	0
+214	36.5	0
+215	36.5	0
+216	36.5	0
+217	36.5	0
+218	36.5	0
+219	36.5	0
+220	36.5	0
+221	36.5	0
+222	36.5	0
+223	36.5	0
+224	36.5	0
+225	36.5	0
+226	36.5	0
+227	36.5	0
+228	36.5	0
+229	36.5	0
+230	36.5	0
+231	36.5	0
+232	36.5	0
+233	36.5	0
+234	36.5	0
+235	36.5	0
+236	36.5	0
+237	36.5	0
+238	36.5	0
+239	36.5	0
+240	36.5	0
+241	36.5	0
+242	36.5	0
+243	36.5	0
+244	36.5	0
+245	36.5	0
+246	36.5	0
+247	36.5	0
+248	36.5	0
+249	36.5	0
+250	36.5	0
+251	36.5	0
+252	36.5	0
+253	36.5	0
+254	36.5	0
+255	36.5	0
+256	36.5	0
+257	36.5	0
+258	36.5	0
+259	36.5	0
+260	36.5	0
+261	36.5	0
+262	36.5	0
+263	36.5	0
+264	36.5	0
+265	36.5	0
+266	36.5	0
+267	36.5	0
+268	36.5	0
+269	36.5	0
+270	36.5	0
+271	36.5	0
+272	36.5	0
+273	36.5	0
+274	36.5	0
+275	36.5	0
+276	36.5	0
+277	36.5	0
+278	36.5	0
+279	36.5	0
+280	36.5	0
+281	36.5	0
+282	36.5	0
+283	36.5	0
+284	36.5	0
+285	36.5	0
+286	36.5	0
+287	36.5	0
+288	36.5	0
+289	36.5	0
+290	36.5	0
+291	36.5	0
+292	36.5	0
+293	36.5	0
+294	36.5	0
+295	36.5	0
+296	36.5	0
+297	36.5	0
+298	36.5	0
+299	36.5	0
+300	36.5	0
+301	36.5	0
+302	36.5	0
+303	36.5	0
+304	36.5	0
+305	36.5	0
+306	36.5	0
+307	36.5	0
+308	36.5	0
+309	36.5	0
+310	36.5	0
+311	36.5	0
+312	36.5	0
+313	36.5	0
+314	36.5	0
+315	36.5	0
+316	36.5	0
+317	36.5	0
+318	36.5	0
+319	36.5	0
+320	36.5	0
+321	36.5	0
+322	36.5	0
+323	36.5	0
+324	36.5	0
+325	36.5	0
+326	36.5	0
+327	36.5	0
+328	36.5	0
+329	36.5	0
+330	36.5	0
+331	36.5	0
+332	36.5	0
+333	36.5	0
+334	36.5	0
+335	36.5	0
+336	36.5	0
+337	36.5	0
+338	36.5	0
+339	36.5	0
+340	36.5	0
+341	36.5	0
+342	36.5	0
+343	36.5	0
+344	36.5	0
+345	36.5	0
+346	36.5	0
+347	36.5	0
+348	36.5	0
+349	36.5	0
+350	36.5	0
+351	36.5	0
+352	36.5	0
+353	36.5	0
+354	36.5	0
+355	36.5	0
+356	36.5	0
+357	36.5	0
+358	36.5	0
+359	36.5	0
+360	36.5	0
+0	37	0
+1	37	0
+2	37	0
+3	37	0
+4	37	0
+5	37	0
+6	37	0
+7	37	0
+8	37	0
+9	37	0
+10	37	0
+11	37	0
+12	37	0
+13	37	0
+14	37	0
+15	37	0
+16	37	0
+17	37	0
+18	37	0
+19	37	0
+20	37	0
+21	37	0
+22	37	0
+23	37	0
+24	37	0
+25	37	0
+26	37	0
+27	37	0
+28	37	0
+29	37	0
+30	37	0
+31	37	0
+32	37	0
+33	37	0
+34	37	0
+35	37	0
+36	37	0
+37	37	0
+38	37	0
+39	37	0
+40	37	0
+41	37	0
+42	37	0
+43	37	0
+44	37	0
+45	37	0
+46	37	0
+47	37	0
+48	37	0
+49	37	0
+50	37	0
+51	37	0
+52	37	0
+53	37	0
+54	37	0
+55	37	0
+56	37	0
+57	37	0
+58	37	0
+59	37	0
+60	37	0
+61	37	0
+62	37	0
+63	37	0
+64	37	0
+65	37	0
+66	37	0
+67	37	0
+68	37	0
+69	37	0
+70	37	0
+71	37	0
+72	37	0
+73	37	0
+74	37	0
+75	37	0
+76	37	0
+77	37	0
+78	37	0
+79	37	0
+80	37	0
+81	37	0
+82	37	0
+83	37	0
+84	37	0
+85	37	0
+86	37	0
+87	37	0
+88	37	0
+89	37	0
+90	37	0
+91	37	0
+92	37	0
+93	37	0
+94	37	0
+95	37	0
+96	37	0
+97	37	0
+98	37	0
+99	37	0
+100	37	0
+101	37	0
+102	37	0
+103	37	0
+104	37	0
+105	37	0
+106	37	0
+107	37	0
+108	37	0
+109	37	0
+110	37	0
+111	37	0
+112	37	0
+113	37	0
+114	37	0
+115	37	0
+116	37	0
+117	37	0
+118	37	0
+119	37	0
+120	37	0
+121	37	0
+122	37	0
+123	37	0
+124	37	0
+125	37	0
+126	37	0
+127	37	0
+128	37	0
+129	37	0
+130	37	0
+131	37	0
+132	37	0
+133	37	0
+134	37	0
+135	37	0
+136	37	0
+137	37	0
+138	37	0
+139	37	0
+140	37	0
+141	37	0
+142	37	0
+143	37	0
+144	37	0
+145	37	0
+146	37	0
+147	37	0
+148	37	0
+149	37	0
+150	37	0
+151	37	0
+152	37	0
+153	37	0
+154	37	0
+155	37	0
+156	37	0
+157	37	0
+158	37	0
+159	37	0
+160	37	0
+161	37	0
+162	37	0
+163	37	0
+164	37	0
+165	37	0
+166	37	0
+167	37	0
+168	37	0
+169	37	0
+170	37	0
+171	37	0
+172	37	0
+173	37	0
+174	37	0
+175	37	0
+176	37	0
+177	37	0
+178	37	0
+179	37	0
+180	37	0
+181	37	0
+182	37	0
+183	37	0
+184	37	0
+185	37	0
+186	37	0
+187	37	0
+188	37	0
+189	37	0
+190	37	0
+191	37	0
+192	37	0
+193	37	0
+194	37	0
+195	37	0
+196	37	0
+197	37	0
+198	37	0
+199	37	0
+200	37	0
+201	37	0
+202	37	0
+203	37	0
+204	37	0
+205	37	0
+206	37	0
+207	37	0
+208	37	0
+209	37	0
+210	37	0
+211	37	0
+212	37	0
+213	37	0
+214	37	0
+215	37	0
+216	37	0
+217	37	0
+218	37	0
+219	37	0
+220	37	0
+221	37	0
+222	37	0
+223	37	0
+224	37	0
+225	37	0
+226	37	0
+227	37	0
+228	37	0
+229	37	0
+230	37	0
+231	37	0
+232	37	0
+233	37	0
+234	37	0
+235	37	0
+236	37	0
+237	37	0
+238	37	0
+239	37	0
+240	37	0
+241	37	0
+242	37	0
+243	37	0
+244	37	0
+245	37	0
+246	37	0
+247	37	0
+248	37	0
+249	37	0
+250	37	0
+251	37	0
+252	37	0
+253	37	0
+254	37	0
+255	37	0
+256	37	0
+257	37	0
+258	37	0
+259	37	0
+260	37	0
+261	37	0
+262	37	0
+263	37	0
+264	37	0
+265	37	0
+266	37	0
+267	37	0
+268	37	0
+269	37	0
+270	37	0
+271	37	0
+272	37	0
+273	37	0
+274	37	0
+275	37	0
+276	37	0
+277	37	0
+278	37	0
+279	37	0
+280	37	0
+281	37	0
+282	37	0
+283	37	0
+284	37	0
+285	37	0
+286	37	0
+287	37	0
+288	37	0
+289	37	0
+290	37	0
+291	37	0
+292	37	0
+293	37	0
+294	37	0
+295	37	0
+296	37	0
+297	37	0
+298	37	0
+299	37	0
+300	37	0
+301	37	0
+302	37	0
+303	37	0
+304	37	0
+305	37	0
+306	37	0
+307	37	0
+308	37	0
+309	37	0
+310	37	0
+311	37	0
+312	37	0
+313	37	0
+314	37	0
+315	37	0
+316	37	0
+317	37	0
+318	37	0
+319	37	0
+320	37	0
+321	37	0
+322	37	0
+323	37	0
+324	37	0
+325	37	0
+326	37	0
+327	37	0
+328	37	0
+329	37	0
+330	37	0
+331	37	0
+332	37	0
+333	37	0
+334	37	0
+335	37	0
+336	37	0
+337	37	0
+338	37	0
+339	37	0
+340	37	0
+341	37	0
+342	37	0
+343	37	0
+344	37	0
+345	37	0
+346	37	0
+347	37	0
+348	37	0
+349	37	0
+350	37	0
+351	37	0
+352	37	0
+353	37	0
+354	37	0
+355	37	0
+356	37	0
+357	37	0
+358	37	0
+359	37	0
+360	37	0
+0	37.5	0
+1	37.5	0
+2	37.5	0
+3	37.5	0
+4	37.5	0
+5	37.5	0
+6	37.5	0
+7	37.5	0
+8	37.5	0
+9	37.5	0
+10	37.5	0
+11	37.5	0
+12	37.5	0
+13	37.5	0
+14	37.5	0
+15	37.5	0
+16	37.5	0
+17	37.5	0
+18	37.5	0
+19	37.5	0
+20	37.5	0
+21	37.5	0
+22	37.5	0
+23	37.5	0
+24	37.5	0
+25	37.5	0
+26	37.5	0
+27	37.5	0
+28	37.5	0
+29	37.5	0
+30	37.5	0
+31	37.5	0
+32	37.5	0
+33	37.5	0
+34	37.5	0
+35	37.5	0
+36	37.5	0
+37	37.5	0
+38	37.5	0
+39	37.5	0
+40	37.5	0
+41	37.5	0
+42	37.5	0
+43	37.5	0
+44	37.5	0
+45	37.5	0
+46	37.5	0
+47	37.5	0
+48	37.5	0
+49	37.5	0
+50	37.5	0
+51	37.5	0
+52	37.5	0
+53	37.5	0
+54	37.5	0
+55	37.5	0
+56	37.5	0
+57	37.5	0
+58	37.5	0
+59	37.5	0
+60	37.5	0
+61	37.5	0
+62	37.5	0
+63	37.5	0
+64	37.5	0
+65	37.5	0
+66	37.5	0
+67	37.5	0
+68	37.5	0
+69	37.5	0
+70	37.5	0
+71	37.5	0
+72	37.5	0
+73	37.5	0
+74	37.5	0
+75	37.5	0
+76	37.5	0
+77	37.5	0
+78	37.5	0
+79	37.5	0
+80	37.5	0
+81	37.5	0
+82	37.5	0
+83	37.5	0
+84	37.5	0
+85	37.5	0
+86	37.5	0
+87	37.5	0
+88	37.5	0
+89	37.5	0
+90	37.5	0
+91	37.5	0
+92	37.5	0
+93	37.5	0
+94	37.5	0
+95	37.5	0
+96	37.5	0
+97	37.5	0
+98	37.5	0
+99	37.5	0
+100	37.5	0
+101	37.5	0
+102	37.5	0
+103	37.5	0
+104	37.5	0
+105	37.5	0
+106	37.5	0
+107	37.5	0
+108	37.5	0
+109	37.5	0
+110	37.5	0
+111	37.5	0
+112	37.5	0
+113	37.5	0
+114	37.5	0
+115	37.5	0
+116	37.5	0
+117	37.5	0
+118	37.5	0
+119	37.5	0
+120	37.5	0
+121	37.5	0
+122	37.5	0
+123	37.5	0
+124	37.5	0
+125	37.5	0
+126	37.5	0
+127	37.5	0
+128	37.5	0
+129	37.5	0
+130	37.5	0
+131	37.5	0
+132	37.5	0
+133	37.5	0
+134	37.5	0
+135	37.5	0
+136	37.5	0
+137	37.5	0
+138	37.5	0
+139	37.5	0
+140	37.5	0
+141	37.5	0
+142	37.5	0
+143	37.5	0
+144	37.5	0
+145	37.5	0
+146	37.5	0
+147	37.5	0
+148	37.5	0
+149	37.5	0
+150	37.5	0
+151	37.5	0
+152	37.5	0
+153	37.5	0
+154	37.5	0
+155	37.5	0
+156	37.5	0
+157	37.5	0
+158	37.5	0
+159	37.5	0
+160	37.5	0
+161	37.5	0
+162	37.5	0
+163	37.5	0
+164	37.5	0
+165	37.5	0
+166	37.5	0
+167	37.5	0
+168	37.5	0
+169	37.5	0
+170	37.5	0
+171	37.5	0
+172	37.5	0
+173	37.5	0
+174	37.5	0
+175	37.5	0
+176	37.5	0
+177	37.5	0
+178	37.5	0
+179	37.5	0
+180	37.5	0
+181	37.5	0
+182	37.5	0
+183	37.5	0
+184	37.5	0
+185	37.5	0
+186	37.5	0
+187	37.5	0
+188	37.5	0
+189	37.5	0
+190	37.5	0
+191	37.5	0
+192	37.5	0
+193	37.5	0
+194	37.5	0
+195	37.5	0
+196	37.5	0
+197	37.5	0
+198	37.5	0
+199	37.5	0
+200	37.5	0
+201	37.5	0
+202	37.5	0
+203	37.5	0
+204	37.5	0
+205	37.5	0
+206	37.5	0
+207	37.5	0
+208	37.5	0
+209	37.5	0
+210	37.5	0
+211	37.5	0
+212	37.5	0
+213	37.5	0
+214	37.5	0
+215	37.5	0
+216	37.5	0
+217	37.5	0
+218	37.5	0
+219	37.5	0
+220	37.5	0
+221	37.5	0
+222	37.5	0
+223	37.5	0
+224	37.5	0
+225	37.5	0
+226	37.5	0
+227	37.5	0
+228	37.5	0
+229	37.5	0
+230	37.5	0
+231	37.5	0
+232	37.5	0
+233	37.5	0
+234	37.5	0
+235	37.5	0
+236	37.5	0
+237	37.5	0
+238	37.5	0
+239	37.5	0
+240	37.5	0
+241	37.5	0
+242	37.5	0
+243	37.5	0
+244	37.5	0
+245	37.5	0
+246	37.5	0
+247	37.5	0
+248	37.5	0
+249	37.5	0
+250	37.5	0
+251	37.5	0
+252	37.5	0
+253	37.5	0
+254	37.5	0
+255	37.5	0
+256	37.5	0
+257	37.5	0
+258	37.5	0
+259	37.5	0
+260	37.5	0
+261	37.5	0
+262	37.5	0
+263	37.5	0
+264	37.5	0
+265	37.5	0
+266	37.5	0
+267	37.5	0
+268	37.5	0
+269	37.5	0
+270	37.5	0
+271	37.5	0
+272	37.5	0
+273	37.5	0
+274	37.5	0
+275	37.5	0
+276	37.5	0
+277	37.5	0
+278	37.5	0
+279	37.5	0
+280	37.5	0
+281	37.5	0
+282	37.5	0
+283	37.5	0
+284	37.5	0
+285	37.5	0
+286	37.5	0
+287	37.5	0
+288	37.5	0
+289	37.5	0
+290	37.5	0
+291	37.5	0
+292	37.5	0
+293	37.5	0
+294	37.5	0
+295	37.5	0
+296	37.5	0
+297	37.5	0
+298	37.5	0
+299	37.5	0
+300	37.5	0
+301	37.5	0
+302	37.5	0
+303	37.5	0
+304	37.5	0
+305	37.5	0
+306	37.5	0
+307	37.5	0
+308	37.5	0
+309	37.5	0
+310	37.5	0
+311	37.5	0
+312	37.5	0
+313	37.5	0
+314	37.5	0
+315	37.5	0
+316	37.5	0
+317	37.5	0
+318	37.5	0
+319	37.5	0
+320	37.5	0
+321	37.5	0
+322	37.5	0
+323	37.5	0
+324	37.5	0
+325	37.5	0
+326	37.5	0
+327	37.5	0
+328	37.5	0
+329	37.5	0
+330	37.5	0
+331	37.5	0
+332	37.5	0
+333	37.5	0
+334	37.5	0
+335	37.5	0
+336	37.5	0
+337	37.5	0
+338	37.5	0
+339	37.5	0
+340	37.5	0
+341	37.5	0
+342	37.5	0
+343	37.5	0
+344	37.5	0
+345	37.5	0
+346	37.5	0
+347	37.5	0
+348	37.5	0
+349	37.5	0
+350	37.5	0
+351	37.5	0
+352	37.5	0
+353	37.5	0
+354	37.5	0
+355	37.5	0
+356	37.5	0
+357	37.5	0
+358	37.5	0
+359	37.5	0
+360	37.5	0
+0	38	0
+1	38	0
+2	38	0
+3	38	0
+4	38	0
+5	38	0
+6	38	0
+7	38	0
+8	38	0
+9	38	0
+10	38	0
+11	38	0
+12	38	0
+13	38	0
+14	38	0
+15	38	0
+16	38	0
+17	38	0
+18	38	0
+19	38	0
+20	38	0
+21	38	0
+22	38	0
+23	38	0
+24	38	0
+25	38	0
+26	38	0
+27	38	0
+28	38	0
+29	38	0
+30	38	0
+31	38	0
+32	38	0
+33	38	0
+34	38	0
+35	38	0
+36	38	0
+37	38	0
+38	38	0
+39	38	0
+40	38	0
+41	38	0
+42	38	0
+43	38	0
+44	38	0
+45	38	0
+46	38	0
+47	38	0
+48	38	0
+49	38	0
+50	38	0
+51	38	0
+52	38	0
+53	38	0
+54	38	0
+55	38	0
+56	38	0
+57	38	0
+58	38	0
+59	38	0
+60	38	0
+61	38	0
+62	38	0
+63	38	0
+64	38	0
+65	38	0
+66	38	0
+67	38	0
+68	38	0
+69	38	0
+70	38	0
+71	38	0
+72	38	0
+73	38	0
+74	38	0
+75	38	0
+76	38	0
+77	38	0
+78	38	0
+79	38	0
+80	38	0
+81	38	0
+82	38	0
+83	38	0
+84	38	0
+85	38	0
+86	38	0
+87	38	0
+88	38	0
+89	38	0
+90	38	0
+91	38	0
+92	38	0
+93	38	0
+94	38	0
+95	38	0
+96	38	0
+97	38	0
+98	38	0
+99	38	0
+100	38	0
+101	38	0
+102	38	0
+103	38	0
+104	38	0
+105	38	0
+106	38	0
+107	38	0
+108	38	0
+109	38	0
+110	38	0
+111	38	0
+112	38	0
+113	38	0
+114	38	0
+115	38	0
+116	38	0
+117	38	0
+118	38	0
+119	38	0
+120	38	0
+121	38	0
+122	38	0
+123	38	0
+124	38	0
+125	38	0
+126	38	0
+127	38	0
+128	38	0
+129	38	0
+130	38	0
+131	38	0
+132	38	0
+133	38	0
+134	38	0
+135	38	0
+136	38	0
+137	38	0
+138	38	0
+139	38	0
+140	38	0
+141	38	0
+142	38	0
+143	38	0
+144	38	0
+145	38	0
+146	38	0
+147	38	0
+148	38	0
+149	38	0
+150	38	0
+151	38	0
+152	38	0
+153	38	0
+154	38	0
+155	38	0
+156	38	0
+157	38	0
+158	38	0
+159	38	0
+160	38	0
+161	38	0
+162	38	0
+163	38	0
+164	38	0
+165	38	0
+166	38	0
+167	38	0
+168	38	0
+169	38	0
+170	38	0
+171	38	0
+172	38	0
+173	38	0
+174	38	0
+175	38	0
+176	38	0
+177	38	0
+178	38	0
+179	38	0
+180	38	0
+181	38	0
+182	38	0
+183	38	0
+184	38	0
+185	38	0
+186	38	0
+187	38	0
+188	38	0
+189	38	0
+190	38	0
+191	38	0
+192	38	0
+193	38	0
+194	38	0
+195	38	0
+196	38	0
+197	38	0
+198	38	0
+199	38	0
+200	38	0
+201	38	0
+202	38	0
+203	38	0
+204	38	0
+205	38	0
+206	38	0
+207	38	0
+208	38	0
+209	38	0
+210	38	0
+211	38	0
+212	38	0
+213	38	0
+214	38	0
+215	38	0
+216	38	0
+217	38	0
+218	38	0
+219	38	0
+220	38	0
+221	38	0
+222	38	0
+223	38	0
+224	38	0
+225	38	0
+226	38	0
+227	38	0
+228	38	0
+229	38	0
+230	38	0
+231	38	0
+232	38	0
+233	38	0
+234	38	0
+235	38	0
+236	38	0
+237	38	0
+238	38	0
+239	38	0
+240	38	0
+241	38	0
+242	38	0
+243	38	0
+244	38	0
+245	38	0
+246	38	0
+247	38	0
+248	38	0
+249	38	0
+250	38	0
+251	38	0
+252	38	0
+253	38	0
+254	38	0
+255	38	0
+256	38	0
+257	38	0
+258	38	0
+259	38	0
+260	38	0
+261	38	0
+262	38	0
+263	38	0
+264	38	0
+265	38	0
+266	38	0
+267	38	0
+268	38	0
+269	38	0
+270	38	0
+271	38	0
+272	38	0
+273	38	0
+274	38	0
+275	38	0
+276	38	0
+277	38	0
+278	38	0
+279	38	0
+280	38	0
+281	38	0
+282	38	0
+283	38	0
+284	38	0
+285	38	0
+286	38	0
+287	38	0
+288	38	0
+289	38	0
+290	38	0
+291	38	0
+292	38	0
+293	38	0
+294	38	0
+295	38	0
+296	38	0
+297	38	0
+298	38	0
+299	38	0
+300	38	0
+301	38	0
+302	38	0
+303	38	0
+304	38	0
+305	38	0
+306	38	0
+307	38	0
+308	38	0
+309	38	0
+310	38	0
+311	38	0
+312	38	0
+313	38	0
+314	38	0
+315	38	0
+316	38	0
+317	38	0
+318	38	0
+319	38	0
+320	38	0
+321	38	0
+322	38	0
+323	38	0
+324	38	0
+325	38	0
+326	38	0
+327	38	0
+328	38	0
+329	38	0
+330	38	0
+331	38	0
+332	38	0
+333	38	0
+334	38	0
+335	38	0
+336	38	0
+337	38	0
+338	38	0
+339	38	0
+340	38	0
+341	38	0
+342	38	0
+343	38	0
+344	38	0
+345	38	0
+346	38	0
+347	38	0
+348	38	0
+349	38	0
+350	38	0
+351	38	0
+352	38	0
+353	38	0
+354	38	0
+355	38	0
+356	38	0
+357	38	0
+358	38	0
+359	38	0
+360	38	0
+0	38.5	0
+1	38.5	0
+2	38.5	0
+3	38.5	0
+4	38.5	0
+5	38.5	0
+6	38.5	0
+7	38.5	0
+8	38.5	0
+9	38.5	0
+10	38.5	0
+11	38.5	0
+12	38.5	0
+13	38.5	0
+14	38.5	0
+15	38.5	0
+16	38.5	0
+17	38.5	0
+18	38.5	0
+19	38.5	0
+20	38.5	0
+21	38.5	0
+22	38.5	0
+23	38.5	0
+24	38.5	0
+25	38.5	0
+26	38.5	0
+27	38.5	0
+28	38.5	0
+29	38.5	0
+30	38.5	0
+31	38.5	0
+32	38.5	0
+33	38.5	0
+34	38.5	0
+35	38.5	0
+36	38.5	0
+37	38.5	0
+38	38.5	0
+39	38.5	0
+40	38.5	0
+41	38.5	0
+42	38.5	0
+43	38.5	0
+44	38.5	0
+45	38.5	0
+46	38.5	0
+47	38.5	0
+48	38.5	0
+49	38.5	0
+50	38.5	0
+51	38.5	0
+52	38.5	0
+53	38.5	0
+54	38.5	0
+55	38.5	0
+56	38.5	0
+57	38.5	0
+58	38.5	0
+59	38.5	0
+60	38.5	0
+61	38.5	0
+62	38.5	0
+63	38.5	0
+64	38.5	0
+65	38.5	0
+66	38.5	0
+67	38.5	0
+68	38.5	0
+69	38.5	0
+70	38.5	0
+71	38.5	0
+72	38.5	0
+73	38.5	0
+74	38.5	0
+75	38.5	0
+76	38.5	0
+77	38.5	0
+78	38.5	0
+79	38.5	0
+80	38.5	0
+81	38.5	0
+82	38.5	0
+83	38.5	0
+84	38.5	0
+85	38.5	0
+86	38.5	0
+87	38.5	0
+88	38.5	0
+89	38.5	0
+90	38.5	0
+91	38.5	0
+92	38.5	0
+93	38.5	0
+94	38.5	0
+95	38.5	0
+96	38.5	0
+97	38.5	0
+98	38.5	0
+99	38.5	0
+100	38.5	0
+101	38.5	0
+102	38.5	0
+103	38.5	0
+104	38.5	0
+105	38.5	0
+106	38.5	0
+107	38.5	0
+108	38.5	0
+109	38.5	0
+110	38.5	0
+111	38.5	0
+112	38.5	0
+113	38.5	0
+114	38.5	0
+115	38.5	0
+116	38.5	0
+117	38.5	0
+118	38.5	0
+119	38.5	0
+120	38.5	0
+121	38.5	0
+122	38.5	0
+123	38.5	0
+124	38.5	0
+125	38.5	0
+126	38.5	0
+127	38.5	0
+128	38.5	0
+129	38.5	0
+130	38.5	0
+131	38.5	0
+132	38.5	0
+133	38.5	0
+134	38.5	0
+135	38.5	0
+136	38.5	0
+137	38.5	0
+138	38.5	0
+139	38.5	0
+140	38.5	0
+141	38.5	0
+142	38.5	0
+143	38.5	0
+144	38.5	0
+145	38.5	0
+146	38.5	0
+147	38.5	0
+148	38.5	0
+149	38.5	0
+150	38.5	0
+151	38.5	0
+152	38.5	0
+153	38.5	0
+154	38.5	0
+155	38.5	0
+156	38.5	0
+157	38.5	0
+158	38.5	0
+159	38.5	0
+160	38.5	0
+161	38.5	0
+162	38.5	0
+163	38.5	0
+164	38.5	0
+165	38.5	0
+166	38.5	0
+167	38.5	0
+168	38.5	0
+169	38.5	0
+170	38.5	0
+171	38.5	0
+172	38.5	0
+173	38.5	0
+174	38.5	0
+175	38.5	0
+176	38.5	0
+177	38.5	0
+178	38.5	0
+179	38.5	0
+180	38.5	0
+181	38.5	0
+182	38.5	0
+183	38.5	0
+184	38.5	0
+185	38.5	0
+186	38.5	0
+187	38.5	0
+188	38.5	0
+189	38.5	0
+190	38.5	0
+191	38.5	0
+192	38.5	0
+193	38.5	0
+194	38.5	0
+195	38.5	0
+196	38.5	0
+197	38.5	0
+198	38.5	0
+199	38.5	0
+200	38.5	0
+201	38.5	0
+202	38.5	0
+203	38.5	0
+204	38.5	0
+205	38.5	0
+206	38.5	0
+207	38.5	0
+208	38.5	0
+209	38.5	0
+210	38.5	0
+211	38.5	0
+212	38.5	0
+213	38.5	0
+214	38.5	0
+215	38.5	0
+216	38.5	0
+217	38.5	0
+218	38.5	0
+219	38.5	0
+220	38.5	0
+221	38.5	0
+222	38.5	0
+223	38.5	0
+224	38.5	0
+225	38.5	0
+226	38.5	0
+227	38.5	0
+228	38.5	0
+229	38.5	0
+230	38.5	0
+231	38.5	0
+232	38.5	0
+233	38.5	0
+234	38.5	0
+235	38.5	0
+236	38.5	0
+237	38.5	0
+238	38.5	0
+239	38.5	0
+240	38.5	0
+241	38.5	0
+242	38.5	0
+243	38.5	0
+244	38.5	0
+245	38.5	0
+246	38.5	0
+247	38.5	0
+248	38.5	0
+249	38.5	0
+250	38.5	0
+251	38.5	0
+252	38.5	0
+253	38.5	0
+254	38.5	0
+255	38.5	0
+256	38.5	0
+257	38.5	0
+258	38.5	0
+259	38.5	0
+260	38.5	0
+261	38.5	0
+262	38.5	0
+263	38.5	0
+264	38.5	0
+265	38.5	0
+266	38.5	0
+267	38.5	0
+268	38.5	0
+269	38.5	0
+270	38.5	0
+271	38.5	0
+272	38.5	0
+273	38.5	0
+274	38.5	0
+275	38.5	0
+276	38.5	0
+277	38.5	0
+278	38.5	0
+279	38.5	0
+280	38.5	0
+281	38.5	0
+282	38.5	0
+283	38.5	0
+284	38.5	0
+285	38.5	0
+286	38.5	0
+287	38.5	0
+288	38.5	0
+289	38.5	0
+290	38.5	0
+291	38.5	0
+292	38.5	0
+293	38.5	0
+294	38.5	0
+295	38.5	0
+296	38.5	0
+297	38.5	0
+298	38.5	0
+299	38.5	0
+300	38.5	0
+301	38.5	0
+302	38.5	0
+303	38.5	0
+304	38.5	0
+305	38.5	0
+306	38.5	0
+307	38.5	0
+308	38.5	0
+309	38.5	0
+310	38.5	0
+311	38.5	0
+312	38.5	0
+313	38.5	0
+314	38.5	0
+315	38.5	0
+316	38.5	0
+317	38.5	0
+318	38.5	0
+319	38.5	0
+320	38.5	0
+321	38.5	0
+322	38.5	0
+323	38.5	0
+324	38.5	0
+325	38.5	0
+326	38.5	0
+327	38.5	0
+328	38.5	0
+329	38.5	0
+330	38.5	0
+331	38.5	0
+332	38.5	0
+333	38.5	0
+334	38.5	0
+335	38.5	0
+336	38.5	0
+337	38.5	0
+338	38.5	0
+339	38.5	0
+340	38.5	0
+341	38.5	0
+342	38.5	0
+343	38.5	0
+344	38.5	0
+345	38.5	0
+346	38.5	0
+347	38.5	0
+348	38.5	0
+349	38.5	0
+350	38.5	0
+351	38.5	0
+352	38.5	0
+353	38.5	0
+354	38.5	0
+355	38.5	0
+356	38.5	0
+357	38.5	0
+358	38.5	0
+359	38.5	0
+360	38.5	0
+0	39	0
+1	39	0
+2	39	0
+3	39	0
+4	39	0
+5	39	0
+6	39	0
+7	39	0
+8	39	0
+9	39	0
+10	39	0
+11	39	0
+12	39	0
+13	39	0
+14	39	0
+15	39	0
+16	39	0
+17	39	0
+18	39	0
+19	39	0
+20	39	0
+21	39	0
+22	39	0
+23	39	0
+24	39	0
+25	39	0
+26	39	0
+27	39	0
+28	39	0
+29	39	0
+30	39	0
+31	39	0
+32	39	0
+33	39	0
+34	39	0
+35	39	0
+36	39	0
+37	39	0
+38	39	0
+39	39	0
+40	39	0
+41	39	0
+42	39	0
+43	39	0
+44	39	0
+45	39	0
+46	39	0
+47	39	0
+48	39	0
+49	39	0
+50	39	0
+51	39	0
+52	39	0
+53	39	0
+54	39	0
+55	39	0
+56	39	0
+57	39	0
+58	39	0
+59	39	0
+60	39	0
+61	39	0
+62	39	0
+63	39	0
+64	39	0
+65	39	0
+66	39	0
+67	39	0
+68	39	0
+69	39	0
+70	39	0
+71	39	0
+72	39	0
+73	39	0
+74	39	0
+75	39	0
+76	39	0
+77	39	0
+78	39	0
+79	39	0
+80	39	0
+81	39	0
+82	39	0
+83	39	0
+84	39	0
+85	39	0
+86	39	0
+87	39	0
+88	39	0
+89	39	0
+90	39	0
+91	39	0
+92	39	0
+93	39	0
+94	39	0
+95	39	0
+96	39	0
+97	39	0
+98	39	0
+99	39	0
+100	39	0
+101	39	0
+102	39	0
+103	39	0
+104	39	0
+105	39	0
+106	39	0
+107	39	0
+108	39	0
+109	39	0
+110	39	0
+111	39	0
+112	39	0
+113	39	0
+114	39	0
+115	39	0
+116	39	0
+117	39	0
+118	39	0
+119	39	0
+120	39	0
+121	39	0
+122	39	0
+123	39	0
+124	39	0
+125	39	0
+126	39	0
+127	39	0
+128	39	0
+129	39	0
+130	39	0
+131	39	0
+132	39	0
+133	39	0
+134	39	0
+135	39	0
+136	39	0
+137	39	0
+138	39	0
+139	39	0
+140	39	0
+141	39	0
+142	39	0
+143	39	0
+144	39	0
+145	39	0
+146	39	0
+147	39	0
+148	39	0
+149	39	0
+150	39	0
+151	39	0
+152	39	0
+153	39	0
+154	39	0
+155	39	0
+156	39	0
+157	39	0
+158	39	0
+159	39	0
+160	39	0
+161	39	0
+162	39	0
+163	39	0
+164	39	0
+165	39	0
+166	39	0
+167	39	0
+168	39	0
+169	39	0
+170	39	0
+171	39	0
+172	39	0
+173	39	0
+174	39	0
+175	39	0
+176	39	0
+177	39	0
+178	39	0
+179	39	0
+180	39	0
+181	39	0
+182	39	0
+183	39	0
+184	39	0
+185	39	0
+186	39	0
+187	39	0
+188	39	0
+189	39	0
+190	39	0
+191	39	0
+192	39	0
+193	39	0
+194	39	0
+195	39	0
+196	39	0
+197	39	0
+198	39	0
+199	39	0
+200	39	0
+201	39	0
+202	39	0
+203	39	0
+204	39	0
+205	39	0
+206	39	0
+207	39	0
+208	39	0
+209	39	0
+210	39	0
+211	39	0
+212	39	0
+213	39	0
+214	39	0
+215	39	0
+216	39	0
+217	39	0
+218	39	0
+219	39	0
+220	39	0
+221	39	0
+222	39	0
+223	39	0
+224	39	0
+225	39	0
+226	39	0
+227	39	0
+228	39	0
+229	39	0
+230	39	0
+231	39	0
+232	39	0
+233	39	0
+234	39	0
+235	39	0
+236	39	0
+237	39	0
+238	39	0
+239	39	0
+240	39	0
+241	39	0
+242	39	0
+243	39	0
+244	39	0
+245	39	0
+246	39	0
+247	39	0
+248	39	0
+249	39	0
+250	39	0
+251	39	0
+252	39	0
+253	39	0
+254	39	0
+255	39	0
+256	39	0
+257	39	0
+258	39	0
+259	39	0
+260	39	0
+261	39	0
+262	39	0
+263	39	0
+264	39	0
+265	39	0
+266	39	0
+267	39	0
+268	39	0
+269	39	0
+270	39	0
+271	39	0
+272	39	0
+273	39	0
+274	39	0
+275	39	0
+276	39	0
+277	39	0
+278	39	0
+279	39	0
+280	39	0
+281	39	0
+282	39	0
+283	39	0
+284	39	0
+285	39	0
+286	39	0
+287	39	0
+288	39	0
+289	39	0
+290	39	0
+291	39	0
+292	39	0
+293	39	0
+294	39	0
+295	39	0
+296	39	0
+297	39	0
+298	39	0
+299	39	0
+300	39	0
+301	39	0
+302	39	0
+303	39	0
+304	39	0
+305	39	0
+306	39	0
+307	39	0
+308	39	0
+309	39	0
+310	39	0
+311	39	0
+312	39	0
+313	39	0
+314	39	0
+315	39	0
+316	39	0
+317	39	0
+318	39	0
+319	39	0
+320	39	0
+321	39	0
+322	39	0
+323	39	0
+324	39	0
+325	39	0
+326	39	0
+327	39	0
+328	39	0
+329	39	0
+330	39	0
+331	39	0
+332	39	0
+333	39	0
+334	39	0
+335	39	0
+336	39	0
+337	39	0
+338	39	0
+339	39	0
+340	39	0
+341	39	0
+342	39	0
+343	39	0
+344	39	0
+345	39	0
+346	39	0
+347	39	0
+348	39	0
+349	39	0
+350	39	0
+351	39	0
+352	39	0
+353	39	0
+354	39	0
+355	39	0
+356	39	0
+357	39	0
+358	39	0
+359	39	0
+360	39	0
+0	39.5	0
+1	39.5	0
+2	39.5	0
+3	39.5	0
+4	39.5	0
+5	39.5	0
+6	39.5	0
+7	39.5	0
+8	39.5	0
+9	39.5	0
+10	39.5	0
+11	39.5	0
+12	39.5	0
+13	39.5	0
+14	39.5	0
+15	39.5	0
+16	39.5	0
+17	39.5	0
+18	39.5	0
+19	39.5	0
+20	39.5	0
+21	39.5	0
+22	39.5	0
+23	39.5	0
+24	39.5	0
+25	39.5	0
+26	39.5	0
+27	39.5	0
+28	39.5	0
+29	39.5	0
+30	39.5	0
+31	39.5	0
+32	39.5	0
+33	39.5	0
+34	39.5	0
+35	39.5	0
+36	39.5	0
+37	39.5	0
+38	39.5	0
+39	39.5	0
+40	39.5	0
+41	39.5	0
+42	39.5	0
+43	39.5	0
+44	39.5	0
+45	39.5	0
+46	39.5	0
+47	39.5	0
+48	39.5	0
+49	39.5	0
+50	39.5	0
+51	39.5	0
+52	39.5	0
+53	39.5	0
+54	39.5	0
+55	39.5	0
+56	39.5	0
+57	39.5	0
+58	39.5	0
+59	39.5	0
+60	39.5	0
+61	39.5	0
+62	39.5	0
+63	39.5	0
+64	39.5	0
+65	39.5	0
+66	39.5	0
+67	39.5	0
+68	39.5	0
+69	39.5	0
+70	39.5	0
+71	39.5	0
+72	39.5	0
+73	39.5	0
+74	39.5	0
+75	39.5	0
+76	39.5	0
+77	39.5	0
+78	39.5	0
+79	39.5	0
+80	39.5	0
+81	39.5	0
+82	39.5	0
+83	39.5	0
+84	39.5	0
+85	39.5	0
+86	39.5	0
+87	39.5	0
+88	39.5	0
+89	39.5	0
+90	39.5	0
+91	39.5	0
+92	39.5	0
+93	39.5	0
+94	39.5	0
+95	39.5	0
+96	39.5	0
+97	39.5	0
+98	39.5	0
+99	39.5	0
+100	39.5	0
+101	39.5	0
+102	39.5	0
+103	39.5	0
+104	39.5	0
+105	39.5	0
+106	39.5	0
+107	39.5	0
+108	39.5	0
+109	39.5	0
+110	39.5	0
+111	39.5	0
+112	39.5	0
+113	39.5	0
+114	39.5	0
+115	39.5	0
+116	39.5	0
+117	39.5	0
+118	39.5	0
+119	39.5	0
+120	39.5	0
+121	39.5	0
+122	39.5	0
+123	39.5	0
+124	39.5	0
+125	39.5	0
+126	39.5	0
+127	39.5	0
+128	39.5	0
+129	39.5	0
+130	39.5	0
+131	39.5	0
+132	39.5	0
+133	39.5	0
+134	39.5	0
+135	39.5	0
+136	39.5	0
+137	39.5	0
+138	39.5	0
+139	39.5	0
+140	39.5	0
+141	39.5	0
+142	39.5	0
+143	39.5	0
+144	39.5	0
+145	39.5	0
+146	39.5	0
+147	39.5	0
+148	39.5	0
+149	39.5	0
+150	39.5	0
+151	39.5	0
+152	39.5	0
+153	39.5	0
+154	39.5	0
+155	39.5	0
+156	39.5	0
+157	39.5	0
+158	39.5	0
+159	39.5	0
+160	39.5	0
+161	39.5	0
+162	39.5	0
+163	39.5	0
+164	39.5	0
+165	39.5	0
+166	39.5	0
+167	39.5	0
+168	39.5	0
+169	39.5	0
+170	39.5	0
+171	39.5	0
+172	39.5	0
+173	39.5	0
+174	39.5	0
+175	39.5	0
+176	39.5	0
+177	39.5	0
+178	39.5	0
+179	39.5	0
+180	39.5	0
+181	39.5	0
+182	39.5	0
+183	39.5	0
+184	39.5	0
+185	39.5	0
+186	39.5	0
+187	39.5	0
+188	39.5	0
+189	39.5	0
+190	39.5	0
+191	39.5	0
+192	39.5	0
+193	39.5	0
+194	39.5	0
+195	39.5	0
+196	39.5	0
+197	39.5	0
+198	39.5	0
+199	39.5	0
+200	39.5	0
+201	39.5	0
+202	39.5	0
+203	39.5	0
+204	39.5	0
+205	39.5	0
+206	39.5	0
+207	39.5	0
+208	39.5	0
+209	39.5	0
+210	39.5	0
+211	39.5	0
+212	39.5	0
+213	39.5	0
+214	39.5	0
+215	39.5	0
+216	39.5	0
+217	39.5	0
+218	39.5	0
+219	39.5	0
+220	39.5	0
+221	39.5	0
+222	39.5	0
+223	39.5	0
+224	39.5	0
+225	39.5	0
+226	39.5	0
+227	39.5	0
+228	39.5	0
+229	39.5	0
+230	39.5	0
+231	39.5	0
+232	39.5	0
+233	39.5	0
+234	39.5	0
+235	39.5	0
+236	39.5	0
+237	39.5	0
+238	39.5	0
+239	39.5	0
+240	39.5	0
+241	39.5	0
+242	39.5	0
+243	39.5	0
+244	39.5	0
+245	39.5	0
+246	39.5	0
+247	39.5	0
+248	39.5	0
+249	39.5	0
+250	39.5	0
+251	39.5	0
+252	39.5	0
+253	39.5	0
+254	39.5	0
+255	39.5	0
+256	39.5	0
+257	39.5	0
+258	39.5	0
+259	39.5	0
+260	39.5	0
+261	39.5	0
+262	39.5	0
+263	39.5	0
+264	39.5	0
+265	39.5	0
+266	39.5	0
+267	39.5	0
+268	39.5	0
+269	39.5	0
+270	39.5	0
+271	39.5	0
+272	39.5	0
+273	39.5	0
+274	39.5	0
+275	39.5	0
+276	39.5	0
+277	39.5	0
+278	39.5	0
+279	39.5	0
+280	39.5	0
+281	39.5	0
+282	39.5	0
+283	39.5	0
+284	39.5	0
+285	39.5	0
+286	39.5	0
+287	39.5	0
+288	39.5	0
+289	39.5	0
+290	39.5	0
+291	39.5	0
+292	39.5	0
+293	39.5	0
+294	39.5	0
+295	39.5	0
+296	39.5	0
+297	39.5	0
+298	39.5	0
+299	39.5	0
+300	39.5	0
+301	39.5	0
+302	39.5	0
+303	39.5	0
+304	39.5	0
+305	39.5	0
+306	39.5	0
+307	39.5	0
+308	39.5	0
+309	39.5	0
+310	39.5	0
+311	39.5	0
+312	39.5	0
+313	39.5	0
+314	39.5	0
+315	39.5	0
+316	39.5	0
+317	39.5	0
+318	39.5	0
+319	39.5	0
+320	39.5	0
+321	39.5	0
+322	39.5	0
+323	39.5	0
+324	39.5	0
+325	39.5	0
+326	39.5	0
+327	39.5	0
+328	39.5	0
+329	39.5	0
+330	39.5	0
+331	39.5	0
+332	39.5	0
+333	39.5	0
+334	39.5	0
+335	39.5	0
+336	39.5	0
+337	39.5	0
+338	39.5	0
+339	39.5	0
+340	39.5	0
+341	39.5	0
+342	39.5	0
+343	39.5	0
+344	39.5	0
+345	39.5	0
+346	39.5	0
+347	39.5	0
+348	39.5	0
+349	39.5	0
+350	39.5	0
+351	39.5	0
+352	39.5	0
+353	39.5	0
+354	39.5	0
+355	39.5	0
+356	39.5	0
+357	39.5	0
+358	39.5	0
+359	39.5	0
+360	39.5	0
+0	40	0
+1	40	0
+2	40	0
+3	40	0
+4	40	0
+5	40	0
+6	40	0
+7	40	0
+8	40	0
+9	40	0
+10	40	0
+11	40	0
+12	40	0
+13	40	0
+14	40	0
+15	40	0
+16	40	0
+17	40	0
+18	40	0
+19	40	0
+20	40	0
+21	40	0
+22	40	0
+23	40	0
+24	40	0
+25	40	0
+26	40	0
+27	40	0
+28	40	0
+29	40	0
+30	40	0
+31	40	0
+32	40	0
+33	40	0
+34	40	0
+35	40	0
+36	40	0
+37	40	0
+38	40	0
+39	40	0
+40	40	0
+41	40	0
+42	40	0
+43	40	0
+44	40	0
+45	40	0
+46	40	0
+47	40	0
+48	40	0
+49	40	0
+50	40	0
+51	40	0
+52	40	0
+53	40	0
+54	40	0
+55	40	0
+56	40	0
+57	40	0
+58	40	0
+59	40	0
+60	40	0
+61	40	0
+62	40	0
+63	40	0
+64	40	0
+65	40	0
+66	40	0
+67	40	0
+68	40	0
+69	40	0
+70	40	0
+71	40	0
+72	40	0
+73	40	0
+74	40	0
+75	40	0
+76	40	0
+77	40	0
+78	40	0
+79	40	0
+80	40	0
+81	40	0
+82	40	0
+83	40	0
+84	40	0
+85	40	0
+86	40	0
+87	40	0
+88	40	0
+89	40	0
+90	40	0
+91	40	0
+92	40	0
+93	40	0
+94	40	0
+95	40	0
+96	40	0
+97	40	0
+98	40	0
+99	40	0
+100	40	0
+101	40	0
+102	40	0
+103	40	0
+104	40	0
+105	40	0
+106	40	0
+107	40	0
+108	40	0
+109	40	0
+110	40	0
+111	40	0
+112	40	0
+113	40	0
+114	40	0
+115	40	0
+116	40	0
+117	40	0
+118	40	0
+119	40	0
+120	40	0
+121	40	0
+122	40	0
+123	40	0
+124	40	0
+125	40	0
+126	40	0
+127	40	0
+128	40	0
+129	40	0
+130	40	0
+131	40	0
+132	40	0
+133	40	0
+134	40	0
+135	40	0
+136	40	0
+137	40	0
+138	40	0
+139	40	0
+140	40	0
+141	40	0
+142	40	0
+143	40	0
+144	40	0
+145	40	0
+146	40	0
+147	40	0
+148	40	0
+149	40	0
+150	40	0
+151	40	0
+152	40	0
+153	40	0
+154	40	0
+155	40	0
+156	40	0
+157	40	0
+158	40	0
+159	40	0
+160	40	0
+161	40	0
+162	40	0
+163	40	0
+164	40	0
+165	40	0
+166	40	0
+167	40	0
+168	40	0
+169	40	0
+170	40	0
+171	40	0
+172	40	0
+173	40	0
+174	40	0
+175	40	0
+176	40	0
+177	40	0
+178	40	0
+179	40	0
+180	40	0
+181	40	0
+182	40	0
+183	40	0
+184	40	0
+185	40	0
+186	40	0
+187	40	0
+188	40	0
+189	40	0
+190	40	0
+191	40	0
+192	40	0
+193	40	0
+194	40	0
+195	40	0
+196	40	0
+197	40	0
+198	40	0
+199	40	0
+200	40	0
+201	40	0
+202	40	0
+203	40	0
+204	40	0
+205	40	0
+206	40	0
+207	40	0
+208	40	0
+209	40	0
+210	40	0
+211	40	0
+212	40	0
+213	40	0
+214	40	0
+215	40	0
+216	40	0
+217	40	0
+218	40	0
+219	40	0
+220	40	0
+221	40	0
+222	40	0
+223	40	0
+224	40	0
+225	40	0
+226	40	0
+227	40	0
+228	40	0
+229	40	0
+230	40	0
+231	40	0
+232	40	0
+233	40	0
+234	40	0
+235	40	0
+236	40	0
+237	40	0
+238	40	0
+239	40	0
+240	40	0
+241	40	0
+242	40	0
+243	40	0
+244	40	0
+245	40	0
+246	40	0
+247	40	0
+248	40	0
+249	40	0
+250	40	0
+251	40	0
+252	40	0
+253	40	0
+254	40	0
+255	40	0
+256	40	0
+257	40	0
+258	40	0
+259	40	0
+260	40	0
+261	40	0
+262	40	0
+263	40	0
+264	40	0
+265	40	0
+266	40	0
+267	40	0
+268	40	0
+269	40	0
+270	40	0
+271	40	0
+272	40	0
+273	40	0
+274	40	0
+275	40	0
+276	40	0
+277	40	0
+278	40	0
+279	40	0
+280	40	0
+281	40	0
+282	40	0
+283	40	0
+284	40	0
+285	40	0
+286	40	0
+287	40	0
+288	40	0
+289	40	0
+290	40	0
+291	40	0
+292	40	0
+293	40	0
+294	40	0
+295	40	0
+296	40	0
+297	40	0
+298	40	0
+299	40	0
+300	40	0
+301	40	0
+302	40	0
+303	40	0
+304	40	0
+305	40	0
+306	40	0
+307	40	0
+308	40	0
+309	40	0
+310	40	0
+311	40	0
+312	40	0
+313	40	0
+314	40	0
+315	40	0
+316	40	0
+317	40	0
+318	40	0
+319	40	0
+320	40	0
+321	40	0
+322	40	0
+323	40	0
+324	40	0
+325	40	0
+326	40	0
+327	40	0
+328	40	0
+329	40	0
+330	40	0
+331	40	0
+332	40	0
+333	40	0
+334	40	0
+335	40	0
+336	40	0
+337	40	0
+338	40	0
+339	40	0
+340	40	0
+341	40	0
+342	40	0
+343	40	0
+344	40	0
+345	40	0
+346	40	0
+347	40	0
+348	40	0
+349	40	0
+350	40	0
+351	40	0
+352	40	0
+353	40	0
+354	40	0
+355	40	0
+356	40	0
+357	40	0
+358	40	0
+359	40	0
+360	40	0
+0	40.5	0
+1	40.5	0
+2	40.5	0
+3	40.5	0
+4	40.5	0
+5	40.5	0
+6	40.5	0
+7	40.5	0
+8	40.5	0
+9	40.5	0
+10	40.5	0
+11	40.5	0
+12	40.5	0
+13	40.5	0
+14	40.5	0
+15	40.5	0
+16	40.5	0
+17	40.5	0
+18	40.5	0
+19	40.5	0
+20	40.5	0
+21	40.5	0
+22	40.5	0
+23	40.5	0
+24	40.5	0
+25	40.5	0
+26	40.5	0
+27	40.5	0
+28	40.5	0
+29	40.5	0
+30	40.5	0
+31	40.5	0
+32	40.5	0
+33	40.5	0
+34	40.5	0
+35	40.5	0
+36	40.5	0
+37	40.5	0
+38	40.5	0
+39	40.5	0
+40	40.5	0
+41	40.5	0
+42	40.5	0
+43	40.5	0
+44	40.5	0
+45	40.5	0
+46	40.5	0
+47	40.5	0
+48	40.5	0
+49	40.5	0
+50	40.5	0
+51	40.5	0
+52	40.5	0
+53	40.5	0
+54	40.5	0
+55	40.5	0
+56	40.5	0
+57	40.5	0
+58	40.5	0
+59	40.5	0
+60	40.5	0
+61	40.5	0
+62	40.5	0
+63	40.5	0
+64	40.5	0
+65	40.5	0
+66	40.5	0
+67	40.5	0
+68	40.5	0
+69	40.5	0
+70	40.5	0
+71	40.5	0
+72	40.5	0
+73	40.5	0
+74	40.5	0
+75	40.5	0
+76	40.5	0
+77	40.5	0
+78	40.5	0
+79	40.5	0
+80	40.5	0
+81	40.5	0
+82	40.5	0
+83	40.5	0
+84	40.5	0
+85	40.5	0
+86	40.5	0
+87	40.5	0
+88	40.5	0
+89	40.5	0
+90	40.5	0
+91	40.5	0
+92	40.5	0
+93	40.5	0
+94	40.5	0
+95	40.5	0
+96	40.5	0
+97	40.5	0
+98	40.5	0
+99	40.5	0
+100	40.5	0
+101	40.5	0
+102	40.5	0
+103	40.5	0
+104	40.5	0
+105	40.5	0
+106	40.5	0
+107	40.5	0
+108	40.5	0
+109	40.5	0
+110	40.5	0
+111	40.5	0
+112	40.5	0
+113	40.5	0
+114	40.5	0
+115	40.5	0
+116	40.5	0
+117	40.5	0
+118	40.5	0
+119	40.5	0
+120	40.5	0
+121	40.5	0
+122	40.5	0
+123	40.5	0
+124	40.5	0
+125	40.5	0
+126	40.5	0
+127	40.5	0
+128	40.5	0
+129	40.5	0
+130	40.5	0
+131	40.5	0
+132	40.5	0
+133	40.5	0
+134	40.5	0
+135	40.5	0
+136	40.5	0
+137	40.5	0
+138	40.5	0
+139	40.5	0
+140	40.5	0
+141	40.5	0
+142	40.5	0
+143	40.5	0
+144	40.5	0
+145	40.5	0
+146	40.5	0
+147	40.5	0
+148	40.5	0
+149	40.5	0
+150	40.5	0
+151	40.5	0
+152	40.5	0
+153	40.5	0
+154	40.5	0
+155	40.5	0
+156	40.5	0
+157	40.5	0
+158	40.5	0
+159	40.5	0
+160	40.5	0
+161	40.5	0
+162	40.5	0
+163	40.5	0
+164	40.5	0
+165	40.5	0
+166	40.5	0
+167	40.5	0
+168	40.5	0
+169	40.5	0
+170	40.5	0
+171	40.5	0
+172	40.5	0
+173	40.5	0
+174	40.5	0
+175	40.5	0
+176	40.5	0
+177	40.5	0
+178	40.5	0
+179	40.5	0
+180	40.5	0
+181	40.5	0
+182	40.5	0
+183	40.5	0
+184	40.5	0
+185	40.5	0
+186	40.5	0
+187	40.5	0
+188	40.5	0
+189	40.5	0
+190	40.5	0
+191	40.5	0
+192	40.5	0
+193	40.5	0
+194	40.5	0
+195	40.5	0
+196	40.5	0
+197	40.5	0
+198	40.5	0
+199	40.5	0
+200	40.5	0
+201	40.5	0
+202	40.5	0
+203	40.5	0
+204	40.5	0
+205	40.5	0
+206	40.5	0
+207	40.5	0
+208	40.5	0
+209	40.5	0
+210	40.5	0
+211	40.5	0
+212	40.5	0
+213	40.5	0
+214	40.5	0
+215	40.5	0
+216	40.5	0
+217	40.5	0
+218	40.5	0
+219	40.5	0
+220	40.5	0
+221	40.5	0
+222	40.5	0
+223	40.5	0
+224	40.5	0
+225	40.5	0
+226	40.5	0
+227	40.5	0
+228	40.5	0
+229	40.5	0
+230	40.5	0
+231	40.5	0
+232	40.5	0
+233	40.5	0
+234	40.5	0
+235	40.5	0
+236	40.5	0
+237	40.5	0
+238	40.5	0
+239	40.5	0
+240	40.5	0
+241	40.5	0
+242	40.5	0
+243	40.5	0
+244	40.5	0
+245	40.5	0
+246	40.5	0
+247	40.5	0
+248	40.5	0
+249	40.5	0
+250	40.5	0
+251	40.5	0
+252	40.5	0
+253	40.5	0
+254	40.5	0
+255	40.5	0
+256	40.5	0
+257	40.5	0
+258	40.5	0
+259	40.5	0
+260	40.5	0
+261	40.5	0
+262	40.5	0
+263	40.5	0
+264	40.5	0
+265	40.5	0
+266	40.5	0
+267	40.5	0
+268	40.5	0
+269	40.5	0
+270	40.5	0
+271	40.5	0
+272	40.5	0
+273	40.5	0
+274	40.5	0
+275	40.5	0
+276	40.5	0
+277	40.5	0
+278	40.5	0
+279	40.5	0
+280	40.5	0
+281	40.5	0
+282	40.5	0
+283	40.5	0
+284	40.5	0
+285	40.5	0
+286	40.5	0
+287	40.5	0
+288	40.5	0
+289	40.5	0
+290	40.5	0
+291	40.5	0
+292	40.5	0
+293	40.5	0
+294	40.5	0
+295	40.5	0
+296	40.5	0
+297	40.5	0
+298	40.5	0
+299	40.5	0
+300	40.5	0
+301	40.5	0
+302	40.5	0
+303	40.5	0
+304	40.5	0
+305	40.5	0
+306	40.5	0
+307	40.5	0
+308	40.5	0
+309	40.5	0
+310	40.5	0
+311	40.5	0
+312	40.5	0
+313	40.5	0
+314	40.5	0
+315	40.5	0
+316	40.5	0
+317	40.5	0
+318	40.5	0
+319	40.5	0
+320	40.5	0
+321	40.5	0
+322	40.5	0
+323	40.5	0
+324	40.5	0
+325	40.5	0
+326	40.5	0
+327	40.5	0
+328	40.5	0
+329	40.5	0
+330	40.5	0
+331	40.5	0
+332	40.5	0
+333	40.5	0
+334	40.5	0
+335	40.5	0
+336	40.5	0
+337	40.5	0
+338	40.5	0
+339	40.5	0
+340	40.5	0
+341	40.5	0
+342	40.5	0
+343	40.5	0
+344	40.5	0
+345	40.5	0
+346	40.5	0
+347	40.5	0
+348	40.5	0
+349	40.5	0
+350	40.5	0
+351	40.5	0
+352	40.5	0
+353	40.5	0
+354	40.5	0
+355	40.5	0
+356	40.5	0
+357	40.5	0
+358	40.5	0
+359	40.5	0
+360	40.5	0
+0	41	0
+1	41	0
+2	41	0
+3	41	0
+4	41	0
+5	41	0
+6	41	0
+7	41	0
+8	41	0
+9	41	0
+10	41	0
+11	41	0
+12	41	0
+13	41	0
+14	41	0
+15	41	0
+16	41	0
+17	41	0
+18	41	0
+19	41	0
+20	41	0
+21	41	0
+22	41	0
+23	41	0
+24	41	0
+25	41	0
+26	41	0
+27	41	0
+28	41	0
+29	41	0
+30	41	0
+31	41	0
+32	41	0
+33	41	0
+34	41	0
+35	41	0
+36	41	0
+37	41	0
+38	41	0
+39	41	0
+40	41	0
+41	41	0
+42	41	0
+43	41	0
+44	41	0
+45	41	0
+46	41	0
+47	41	0
+48	41	0
+49	41	0
+50	41	0
+51	41	0
+52	41	0
+53	41	0
+54	41	0
+55	41	0
+56	41	0
+57	41	0
+58	41	0
+59	41	0
+60	41	0
+61	41	0
+62	41	0
+63	41	0
+64	41	0
+65	41	0
+66	41	0
+67	41	0
+68	41	0
+69	41	0
+70	41	0
+71	41	0
+72	41	0
+73	41	0
+74	41	0
+75	41	0
+76	41	0
+77	41	0
+78	41	0
+79	41	0
+80	41	0
+81	41	0
+82	41	0
+83	41	0
+84	41	0
+85	41	0
+86	41	0
+87	41	0
+88	41	0
+89	41	0
+90	41	0
+91	41	0
+92	41	0
+93	41	0
+94	41	0
+95	41	0
+96	41	0
+97	41	0
+98	41	0
+99	41	0
+100	41	0
+101	41	0
+102	41	0
+103	41	0
+104	41	0
+105	41	0
+106	41	0
+107	41	0
+108	41	0
+109	41	0
+110	41	0
+111	41	0
+112	41	0
+113	41	0
+114	41	0
+115	41	0
+116	41	0
+117	41	0
+118	41	0
+119	41	0
+120	41	0
+121	41	0
+122	41	0
+123	41	0
+124	41	0
+125	41	0
+126	41	0
+127	41	0
+128	41	0
+129	41	0
+130	41	0
+131	41	0
+132	41	0
+133	41	0
+134	41	0
+135	41	0
+136	41	0
+137	41	0
+138	41	0
+139	41	0
+140	41	0
+141	41	0
+142	41	0
+143	41	0
+144	41	0
+145	41	0
+146	41	0
+147	41	0
+148	41	0
+149	41	0
+150	41	0
+151	41	0
+152	41	0
+153	41	0
+154	41	0
+155	41	0
+156	41	0
+157	41	0
+158	41	0
+159	41	0
+160	41	0
+161	41	0
+162	41	0
+163	41	0
+164	41	0
+165	41	0
+166	41	0
+167	41	0
+168	41	0
+169	41	0
+170	41	0
+171	41	0
+172	41	0
+173	41	0
+174	41	0
+175	41	0
+176	41	0
+177	41	0
+178	41	0
+179	41	0
+180	41	0
+181	41	0
+182	41	0
+183	41	0
+184	41	0
+185	41	0
+186	41	0
+187	41	0
+188	41	0
+189	41	0
+190	41	0
+191	41	0
+192	41	0
+193	41	0
+194	41	0
+195	41	0
+196	41	0
+197	41	0
+198	41	0
+199	41	0
+200	41	0
+201	41	0
+202	41	0
+203	41	0
+204	41	0
+205	41	0
+206	41	0
+207	41	0
+208	41	0
+209	41	0
+210	41	0
+211	41	0
+212	41	0
+213	41	0
+214	41	0
+215	41	0
+216	41	0
+217	41	0
+218	41	0
+219	41	0
+220	41	0
+221	41	0
+222	41	0
+223	41	0
+224	41	0
+225	41	0
+226	41	0
+227	41	0
+228	41	0
+229	41	0
+230	41	0
+231	41	0
+232	41	0
+233	41	0
+234	41	0
+235	41	0
+236	41	0
+237	41	0
+238	41	0
+239	41	0
+240	41	0
+241	41	0
+242	41	0
+243	41	0
+244	41	0
+245	41	0
+246	41	0
+247	41	0
+248	41	0
+249	41	0
+250	41	0
+251	41	0
+252	41	0
+253	41	0
+254	41	0
+255	41	0
+256	41	0
+257	41	0
+258	41	0
+259	41	0
+260	41	0
+261	41	0
+262	41	0
+263	41	0
+264	41	0
+265	41	0
+266	41	0
+267	41	0
+268	41	0
+269	41	0
+270	41	0
+271	41	0
+272	41	0
+273	41	0
+274	41	0
+275	41	0
+276	41	0
+277	41	0
+278	41	0
+279	41	0
+280	41	0
+281	41	0
+282	41	0
+283	41	0
+284	41	0
+285	41	0
+286	41	0
+287	41	0
+288	41	0
+289	41	0
+290	41	0
+291	41	0
+292	41	0
+293	41	0
+294	41	0
+295	41	0
+296	41	0
+297	41	0
+298	41	0
+299	41	0
+300	41	0
+301	41	0
+302	41	0
+303	41	0
+304	41	0
+305	41	0
+306	41	0
+307	41	0
+308	41	0
+309	41	0
+310	41	0
+311	41	0
+312	41	0
+313	41	0
+314	41	0
+315	41	0
+316	41	0
+317	41	0
+318	41	0
+319	41	0
+320	41	0
+321	41	0
+322	41	0
+323	41	0
+324	41	0
+325	41	0
+326	41	0
+327	41	0
+328	41	0
+329	41	0
+330	41	0
+331	41	0
+332	41	0
+333	41	0
+334	41	0
+335	41	0
+336	41	0
+337	41	0
+338	41	0
+339	41	0
+340	41	0
+341	41	0
+342	41	0
+343	41	0
+344	41	0
+345	41	0
+346	41	0
+347	41	0
+348	41	0
+349	41	0
+350	41	0
+351	41	0
+352	41	0
+353	41	0
+354	41	0
+355	41	0
+356	41	0
+357	41	0
+358	41	0
+359	41	0
+360	41	0
+0	41.5	0
+1	41.5	0
+2	41.5	0
+3	41.5	0
+4	41.5	0
+5	41.5	0
+6	41.5	0
+7	41.5	0
+8	41.5	0
+9	41.5	0
+10	41.5	0
+11	41.5	0
+12	41.5	0
+13	41.5	0
+14	41.5	0
+15	41.5	0
+16	41.5	0
+17	41.5	0
+18	41.5	0
+19	41.5	0
+20	41.5	0
+21	41.5	0
+22	41.5	0
+23	41.5	0
+24	41.5	0
+25	41.5	0
+26	41.5	0
+27	41.5	0
+28	41.5	0
+29	41.5	0
+30	41.5	0
+31	41.5	0
+32	41.5	0
+33	41.5	0
+34	41.5	0
+35	41.5	0
+36	41.5	0
+37	41.5	0
+38	41.5	0
+39	41.5	0
+40	41.5	0
+41	41.5	0
+42	41.5	0
+43	41.5	0
+44	41.5	0
+45	41.5	0
+46	41.5	0
+47	41.5	0
+48	41.5	0
+49	41.5	0
+50	41.5	0
+51	41.5	0
+52	41.5	0
+53	41.5	0
+54	41.5	0
+55	41.5	0
+56	41.5	0
+57	41.5	0
+58	41.5	0
+59	41.5	0
+60	41.5	0
+61	41.5	0
+62	41.5	0
+63	41.5	0
+64	41.5	0
+65	41.5	0
+66	41.5	0
+67	41.5	0
+68	41.5	0
+69	41.5	0
+70	41.5	0
+71	41.5	0
+72	41.5	0
+73	41.5	0
+74	41.5	0
+75	41.5	0
+76	41.5	0
+77	41.5	0
+78	41.5	0
+79	41.5	0
+80	41.5	0
+81	41.5	0
+82	41.5	0
+83	41.5	0
+84	41.5	0
+85	41.5	0
+86	41.5	0
+87	41.5	0
+88	41.5	0
+89	41.5	0
+90	41.5	0
+91	41.5	0
+92	41.5	0
+93	41.5	0
+94	41.5	0
+95	41.5	0
+96	41.5	0
+97	41.5	0
+98	41.5	0
+99	41.5	0
+100	41.5	0
+101	41.5	0
+102	41.5	0
+103	41.5	0
+104	41.5	0
+105	41.5	0
+106	41.5	0
+107	41.5	0
+108	41.5	0
+109	41.5	0
+110	41.5	0
+111	41.5	0
+112	41.5	0
+113	41.5	0
+114	41.5	0
+115	41.5	0
+116	41.5	0
+117	41.5	0
+118	41.5	0
+119	41.5	0
+120	41.5	0
+121	41.5	0
+122	41.5	0
+123	41.5	0
+124	41.5	0
+125	41.5	0
+126	41.5	0
+127	41.5	0
+128	41.5	0
+129	41.5	0
+130	41.5	0
+131	41.5	0
+132	41.5	0
+133	41.5	0
+134	41.5	0
+135	41.5	0
+136	41.5	0
+137	41.5	0
+138	41.5	0
+139	41.5	0
+140	41.5	0
+141	41.5	0
+142	41.5	0
+143	41.5	0
+144	41.5	0
+145	41.5	0
+146	41.5	0
+147	41.5	0
+148	41.5	0
+149	41.5	0
+150	41.5	0
+151	41.5	0
+152	41.5	0
+153	41.5	0
+154	41.5	0
+155	41.5	0
+156	41.5	0
+157	41.5	0
+158	41.5	0
+159	41.5	0
+160	41.5	0
+161	41.5	0
+162	41.5	0
+163	41.5	0
+164	41.5	0
+165	41.5	0
+166	41.5	0
+167	41.5	0
+168	41.5	0
+169	41.5	0
+170	41.5	0
+171	41.5	0
+172	41.5	0
+173	41.5	0
+174	41.5	0
+175	41.5	0
+176	41.5	0
+177	41.5	0
+178	41.5	0
+179	41.5	0
+180	41.5	0
+181	41.5	0
+182	41.5	0
+183	41.5	0
+184	41.5	0
+185	41.5	0
+186	41.5	0
+187	41.5	0
+188	41.5	0
+189	41.5	0
+190	41.5	0
+191	41.5	0
+192	41.5	0
+193	41.5	0
+194	41.5	0
+195	41.5	0
+196	41.5	0
+197	41.5	0
+198	41.5	0
+199	41.5	0
+200	41.5	0
+201	41.5	0
+202	41.5	0
+203	41.5	0
+204	41.5	0
+205	41.5	0
+206	41.5	0
+207	41.5	0
+208	41.5	0
+209	41.5	0
+210	41.5	0
+211	41.5	0
+212	41.5	0
+213	41.5	0
+214	41.5	0
+215	41.5	0
+216	41.5	0
+217	41.5	0
+218	41.5	0
+219	41.5	0
+220	41.5	0
+221	41.5	0
+222	41.5	0
+223	41.5	0
+224	41.5	0
+225	41.5	0
+226	41.5	0
+227	41.5	0
+228	41.5	0
+229	41.5	0
+230	41.5	0
+231	41.5	0
+232	41.5	0
+233	41.5	0
+234	41.5	0
+235	41.5	0
+236	41.5	0
+237	41.5	0
+238	41.5	0
+239	41.5	0
+240	41.5	0
+241	41.5	0
+242	41.5	0
+243	41.5	0
+244	41.5	0
+245	41.5	0
+246	41.5	0
+247	41.5	0
+248	41.5	0
+249	41.5	0
+250	41.5	0
+251	41.5	0
+252	41.5	0
+253	41.5	0
+254	41.5	0
+255	41.5	0
+256	41.5	0
+257	41.5	0
+258	41.5	0
+259	41.5	0
+260	41.5	0
+261	41.5	0
+262	41.5	0
+263	41.5	0
+264	41.5	0
+265	41.5	0
+266	41.5	0
+267	41.5	0
+268	41.5	0
+269	41.5	0
+270	41.5	0
+271	41.5	0
+272	41.5	0
+273	41.5	0
+274	41.5	0
+275	41.5	0
+276	41.5	0
+277	41.5	0
+278	41.5	0
+279	41.5	0
+280	41.5	0
+281	41.5	0
+282	41.5	0
+283	41.5	0
+284	41.5	0
+285	41.5	0
+286	41.5	0
+287	41.5	0
+288	41.5	0
+289	41.5	0
+290	41.5	0
+291	41.5	0
+292	41.5	0
+293	41.5	0
+294	41.5	0
+295	41.5	0
+296	41.5	0
+297	41.5	0
+298	41.5	0
+299	41.5	0
+300	41.5	0
+301	41.5	0
+302	41.5	0
+303	41.5	0
+304	41.5	0
+305	41.5	0
+306	41.5	0
+307	41.5	0
+308	41.5	0
+309	41.5	0
+310	41.5	0
+311	41.5	0
+312	41.5	0
+313	41.5	0
+314	41.5	0
+315	41.5	0
+316	41.5	0
+317	41.5	0
+318	41.5	0
+319	41.5	0
+320	41.5	0
+321	41.5	0
+322	41.5	0
+323	41.5	0
+324	41.5	0
+325	41.5	0
+326	41.5	0
+327	41.5	0
+328	41.5	0
+329	41.5	0
+330	41.5	0
+331	41.5	0
+332	41.5	0
+333	41.5	0
+334	41.5	0
+335	41.5	0
+336	41.5	0
+337	41.5	0
+338	41.5	0
+339	41.5	0
+340	41.5	0
+341	41.5	0
+342	41.5	0
+343	41.5	0
+344	41.5	0
+345	41.5	0
+346	41.5	0
+347	41.5	0
+348	41.5	0
+349	41.5	0
+350	41.5	0
+351	41.5	0
+352	41.5	0
+353	41.5	0
+354	41.5	0
+355	41.5	0
+356	41.5	0
+357	41.5	0
+358	41.5	0
+359	41.5	0
+360	41.5	0
+0	42	0
+1	42	0
+2	42	0
+3	42	0
+4	42	0
+5	42	0
+6	42	0
+7	42	0
+8	42	0
+9	42	0
+10	42	0
+11	42	0
+12	42	0
+13	42	0
+14	42	0
+15	42	0
+16	42	0
+17	42	0
+18	42	0
+19	42	0
+20	42	0
+21	42	0
+22	42	0
+23	42	0
+24	42	0
+25	42	0
+26	42	0
+27	42	0
+28	42	0
+29	42	0
+30	42	0
+31	42	0
+32	42	0
+33	42	0
+34	42	0
+35	42	0
+36	42	0
+37	42	0
+38	42	0
+39	42	0
+40	42	0
+41	42	0
+42	42	0
+43	42	0
+44	42	0
+45	42	0
+46	42	0
+47	42	0
+48	42	0
+49	42	0
+50	42	0
+51	42	0
+52	42	0
+53	42	0
+54	42	0
+55	42	0
+56	42	0
+57	42	0
+58	42	0
+59	42	0
+60	42	0
+61	42	0
+62	42	0
+63	42	0
+64	42	0
+65	42	0
+66	42	0
+67	42	0
+68	42	0
+69	42	0
+70	42	0
+71	42	0
+72	42	0
+73	42	0
+74	42	0
+75	42	0
+76	42	0
+77	42	0
+78	42	0
+79	42	0
+80	42	0
+81	42	0
+82	42	0
+83	42	0
+84	42	0
+85	42	0
+86	42	0
+87	42	0
+88	42	0
+89	42	0
+90	42	0
+91	42	0
+92	42	0
+93	42	0
+94	42	0
+95	42	0
+96	42	0
+97	42	0
+98	42	0
+99	42	0
+100	42	0
+101	42	0
+102	42	0
+103	42	0
+104	42	0
+105	42	0
+106	42	0
+107	42	0
+108	42	0
+109	42	0
+110	42	0
+111	42	0
+112	42	0
+113	42	0
+114	42	0
+115	42	0
+116	42	0
+117	42	0
+118	42	0
+119	42	0
+120	42	0
+121	42	0
+122	42	0
+123	42	0
+124	42	0
+125	42	0
+126	42	0
+127	42	0
+128	42	0
+129	42	0
+130	42	0
+131	42	0
+132	42	0
+133	42	0
+134	42	0
+135	42	0
+136	42	0
+137	42	0
+138	42	0
+139	42	0
+140	42	0
+141	42	0
+142	42	0
+143	42	0
+144	42	0
+145	42	0
+146	42	0
+147	42	0
+148	42	0
+149	42	0
+150	42	0
+151	42	0
+152	42	0
+153	42	0
+154	42	0
+155	42	0
+156	42	0
+157	42	0
+158	42	0
+159	42	0
+160	42	0
+161	42	0
+162	42	0
+163	42	0
+164	42	0
+165	42	0
+166	42	0
+167	42	0
+168	42	0
+169	42	0
+170	42	0
+171	42	0
+172	42	0
+173	42	0
+174	42	0
+175	42	0
+176	42	0
+177	42	0
+178	42	0
+179	42	0
+180	42	0
+181	42	0
+182	42	0
+183	42	0
+184	42	0
+185	42	0
+186	42	0
+187	42	0
+188	42	0
+189	42	0
+190	42	0
+191	42	0
+192	42	0
+193	42	0
+194	42	0
+195	42	0
+196	42	0
+197	42	0
+198	42	0
+199	42	0
+200	42	0
+201	42	0
+202	42	0
+203	42	0
+204	42	0
+205	42	0
+206	42	0
+207	42	0
+208	42	0
+209	42	0
+210	42	0
+211	42	0
+212	42	0
+213	42	0
+214	42	0
+215	42	0
+216	42	0
+217	42	0
+218	42	0
+219	42	0
+220	42	0
+221	42	0
+222	42	0
+223	42	0
+224	42	0
+225	42	0
+226	42	0
+227	42	0
+228	42	0
+229	42	0
+230	42	0
+231	42	0
+232	42	0
+233	42	0
+234	42	0
+235	42	0
+236	42	0
+237	42	0
+238	42	0
+239	42	0
+240	42	0
+241	42	0
+242	42	0
+243	42	0
+244	42	0
+245	42	0
+246	42	0
+247	42	0
+248	42	0
+249	42	0
+250	42	0
+251	42	0
+252	42	0
+253	42	0
+254	42	0
+255	42	0
+256	42	0
+257	42	0
+258	42	0
+259	42	0
+260	42	0
+261	42	0
+262	42	0
+263	42	0
+264	42	0
+265	42	0
+266	42	0
+267	42	0
+268	42	0
+269	42	0
+270	42	0
+271	42	0
+272	42	0
+273	42	0
+274	42	0
+275	42	0
+276	42	0
+277	42	0
+278	42	0
+279	42	0
+280	42	0
+281	42	0
+282	42	0
+283	42	0
+284	42	0
+285	42	0
+286	42	0
+287	42	0
+288	42	0
+289	42	0
+290	42	0
+291	42	0
+292	42	0
+293	42	0
+294	42	0
+295	42	0
+296	42	0
+297	42	0
+298	42	0
+299	42	0
+300	42	0
+301	42	0
+302	42	0
+303	42	0
+304	42	0
+305	42	0
+306	42	0
+307	42	0
+308	42	0
+309	42	0
+310	42	0
+311	42	0
+312	42	0
+313	42	0
+314	42	0
+315	42	0
+316	42	0
+317	42	0
+318	42	0
+319	42	0
+320	42	0
+321	42	0
+322	42	0
+323	42	0
+324	42	0
+325	42	0
+326	42	0
+327	42	0
+328	42	0
+329	42	0
+330	42	0
+331	42	0
+332	42	0
+333	42	0
+334	42	0
+335	42	0
+336	42	0
+337	42	0
+338	42	0
+339	42	0
+340	42	0
+341	42	0
+342	42	0
+343	42	0
+344	42	0
+345	42	0
+346	42	0
+347	42	0
+348	42	0
+349	42	0
+350	42	0
+351	42	0
+352	42	0
+353	42	0
+354	42	0
+355	42	0
+356	42	0
+357	42	0
+358	42	0
+359	42	0
+360	42	0
+0	42.5	0
+1	42.5	0
+2	42.5	0
+3	42.5	0
+4	42.5	0
+5	42.5	0
+6	42.5	0
+7	42.5	0
+8	42.5	0
+9	42.5	0
+10	42.5	0
+11	42.5	0
+12	42.5	0
+13	42.5	0
+14	42.5	0
+15	42.5	0
+16	42.5	0
+17	42.5	0
+18	42.5	0
+19	42.5	0
+20	42.5	0
+21	42.5	0
+22	42.5	0
+23	42.5	0
+24	42.5	0
+25	42.5	0
+26	42.5	0
+27	42.5	0
+28	42.5	0
+29	42.5	0
+30	42.5	0
+31	42.5	0
+32	42.5	0
+33	42.5	0
+34	42.5	0
+35	42.5	0
+36	42.5	0
+37	42.5	0
+38	42.5	0
+39	42.5	0
+40	42.5	0
+41	42.5	0
+42	42.5	0
+43	42.5	0
+44	42.5	0
+45	42.5	0
+46	42.5	0
+47	42.5	0
+48	42.5	0
+49	42.5	0
+50	42.5	0
+51	42.5	0
+52	42.5	0
+53	42.5	0
+54	42.5	0
+55	42.5	0
+56	42.5	0
+57	42.5	0
+58	42.5	0
+59	42.5	0
+60	42.5	0
+61	42.5	0
+62	42.5	0
+63	42.5	0
+64	42.5	0
+65	42.5	0
+66	42.5	0
+67	42.5	0
+68	42.5	0
+69	42.5	0
+70	42.5	0
+71	42.5	0
+72	42.5	0
+73	42.5	0
+74	42.5	0
+75	42.5	0
+76	42.5	0
+77	42.5	0
+78	42.5	0
+79	42.5	0
+80	42.5	0
+81	42.5	0
+82	42.5	0
+83	42.5	0
+84	42.5	0
+85	42.5	0
+86	42.5	0
+87	42.5	0
+88	42.5	0
+89	42.5	0
+90	42.5	0
+91	42.5	0
+92	42.5	0
+93	42.5	0
+94	42.5	0
+95	42.5	0
+96	42.5	0
+97	42.5	0
+98	42.5	0
+99	42.5	0
+100	42.5	0
+101	42.5	0
+102	42.5	0
+103	42.5	0
+104	42.5	0
+105	42.5	0
+106	42.5	0
+107	42.5	0
+108	42.5	0
+109	42.5	0
+110	42.5	0
+111	42.5	0
+112	42.5	0
+113	42.5	0
+114	42.5	0
+115	42.5	0
+116	42.5	0
+117	42.5	0
+118	42.5	0
+119	42.5	0
+120	42.5	0
+121	42.5	0
+122	42.5	0
+123	42.5	0
+124	42.5	0
+125	42.5	0
+126	42.5	0
+127	42.5	0
+128	42.5	0
+129	42.5	0
+130	42.5	0
+131	42.5	0
+132	42.5	0
+133	42.5	0
+134	42.5	0
+135	42.5	0
+136	42.5	0
+137	42.5	0
+138	42.5	0
+139	42.5	0
+140	42.5	0
+141	42.5	0
+142	42.5	0
+143	42.5	0
+144	42.5	0
+145	42.5	0
+146	42.5	0
+147	42.5	0
+148	42.5	0
+149	42.5	0
+150	42.5	0
+151	42.5	0
+152	42.5	0
+153	42.5	0
+154	42.5	0
+155	42.5	0
+156	42.5	0
+157	42.5	0
+158	42.5	0
+159	42.5	0
+160	42.5	0
+161	42.5	0
+162	42.5	0
+163	42.5	0
+164	42.5	0
+165	42.5	0
+166	42.5	0
+167	42.5	0
+168	42.5	0
+169	42.5	0
+170	42.5	0
+171	42.5	0
+172	42.5	0
+173	42.5	0
+174	42.5	0
+175	42.5	0
+176	42.5	0
+177	42.5	0
+178	42.5	0
+179	42.5	0
+180	42.5	0
+181	42.5	0
+182	42.5	0
+183	42.5	0
+184	42.5	0
+185	42.5	0
+186	42.5	0
+187	42.5	0
+188	42.5	0
+189	42.5	0
+190	42.5	0
+191	42.5	0
+192	42.5	0
+193	42.5	0
+194	42.5	0
+195	42.5	0
+196	42.5	0
+197	42.5	0
+198	42.5	0
+199	42.5	0
+200	42.5	0
+201	42.5	0
+202	42.5	0
+203	42.5	0
+204	42.5	0
+205	42.5	0
+206	42.5	0
+207	42.5	0
+208	42.5	0
+209	42.5	0
+210	42.5	0
+211	42.5	0
+212	42.5	0
+213	42.5	0
+214	42.5	0
+215	42.5	0
+216	42.5	0
+217	42.5	0
+218	42.5	0
+219	42.5	0
+220	42.5	0
+221	42.5	0
+222	42.5	0
+223	42.5	0
+224	42.5	0
+225	42.5	0
+226	42.5	0
+227	42.5	0
+228	42.5	0
+229	42.5	0
+230	42.5	0
+231	42.5	0
+232	42.5	0
+233	42.5	0
+234	42.5	0
+235	42.5	0
+236	42.5	0
+237	42.5	0
+238	42.5	0
+239	42.5	0
+240	42.5	0
+241	42.5	0
+242	42.5	0
+243	42.5	0
+244	42.5	0
+245	42.5	0
+246	42.5	0
+247	42.5	0
+248	42.5	0
+249	42.5	0
+250	42.5	0
+251	42.5	0
+252	42.5	0
+253	42.5	0
+254	42.5	0
+255	42.5	0
+256	42.5	0
+257	42.5	0
+258	42.5	0
+259	42.5	0
+260	42.5	0
+261	42.5	0
+262	42.5	0
+263	42.5	0
+264	42.5	0
+265	42.5	0
+266	42.5	0
+267	42.5	0
+268	42.5	0
+269	42.5	0
+270	42.5	0
+271	42.5	0
+272	42.5	0
+273	42.5	0
+274	42.5	0
+275	42.5	0
+276	42.5	0
+277	42.5	0
+278	42.5	0
+279	42.5	0
+280	42.5	0
+281	42.5	0
+282	42.5	0
+283	42.5	0
+284	42.5	0
+285	42.5	0
+286	42.5	0
+287	42.5	0
+288	42.5	0
+289	42.5	0
+290	42.5	0
+291	42.5	0
+292	42.5	0
+293	42.5	0
+294	42.5	0
+295	42.5	0
+296	42.5	0
+297	42.5	0
+298	42.5	0
+299	42.5	0
+300	42.5	0
+301	42.5	0
+302	42.5	0
+303	42.5	0
+304	42.5	0
+305	42.5	0
+306	42.5	0
+307	42.5	0
+308	42.5	0
+309	42.5	0
+310	42.5	0
+311	42.5	0
+312	42.5	0
+313	42.5	0
+314	42.5	0
+315	42.5	0
+316	42.5	0
+317	42.5	0
+318	42.5	0
+319	42.5	0
+320	42.5	0
+321	42.5	0
+322	42.5	0
+323	42.5	0
+324	42.5	0
+325	42.5	0
+326	42.5	0
+327	42.5	0
+328	42.5	0
+329	42.5	0
+330	42.5	0
+331	42.5	0
+332	42.5	0
+333	42.5	0
+334	42.5	0
+335	42.5	0
+336	42.5	0
+337	42.5	0
+338	42.5	0
+339	42.5	0
+340	42.5	0
+341	42.5	0
+342	42.5	0
+343	42.5	0
+344	42.5	0
+345	42.5	0
+346	42.5	0
+347	42.5	0
+348	42.5	0
+349	42.5	0
+350	42.5	0
+351	42.5	0
+352	42.5	0
+353	42.5	0
+354	42.5	0
+355	42.5	0
+356	42.5	0
+357	42.5	0
+358	42.5	0
+359	42.5	0
+360	42.5	0
+0	43	0
+1	43	0
+2	43	0
+3	43	0
+4	43	0
+5	43	0
+6	43	0
+7	43	0
+8	43	0
+9	43	0
+10	43	0
+11	43	0
+12	43	0
+13	43	0
+14	43	0
+15	43	0
+16	43	0
+17	43	0
+18	43	0
+19	43	0
+20	43	0
+21	43	0
+22	43	0
+23	43	0
+24	43	0
+25	43	0
+26	43	0
+27	43	0
+28	43	0
+29	43	0
+30	43	0
+31	43	0
+32	43	0
+33	43	0
+34	43	0
+35	43	0
+36	43	0
+37	43	0
+38	43	0
+39	43	0
+40	43	0
+41	43	0
+42	43	0
+43	43	0
+44	43	0
+45	43	0
+46	43	0
+47	43	0
+48	43	0
+49	43	0
+50	43	0
+51	43	0
+52	43	0
+53	43	0
+54	43	0
+55	43	0
+56	43	0
+57	43	0
+58	43	0
+59	43	0
+60	43	0
+61	43	0
+62	43	0
+63	43	0
+64	43	0
+65	43	0
+66	43	0
+67	43	0
+68	43	0
+69	43	0
+70	43	0
+71	43	0
+72	43	0
+73	43	0
+74	43	0
+75	43	0
+76	43	0
+77	43	0
+78	43	0
+79	43	0
+80	43	0
+81	43	0
+82	43	0
+83	43	0
+84	43	0
+85	43	0
+86	43	0
+87	43	0
+88	43	0
+89	43	0
+90	43	0
+91	43	0
+92	43	0
+93	43	0
+94	43	0
+95	43	0
+96	43	0
+97	43	0
+98	43	0
+99	43	0
+100	43	0
+101	43	0
+102	43	0
+103	43	0
+104	43	0
+105	43	0
+106	43	0
+107	43	0
+108	43	0
+109	43	0
+110	43	0
+111	43	0
+112	43	0
+113	43	0
+114	43	0
+115	43	0
+116	43	0
+117	43	0
+118	43	0
+119	43	0
+120	43	0
+121	43	0
+122	43	0
+123	43	0
+124	43	0
+125	43	0
+126	43	0
+127	43	0
+128	43	0
+129	43	0
+130	43	0
+131	43	0
+132	43	0
+133	43	0
+134	43	0
+135	43	0
+136	43	0
+137	43	0
+138	43	0
+139	43	0
+140	43	0
+141	43	0
+142	43	0
+143	43	0
+144	43	0
+145	43	0
+146	43	0
+147	43	0
+148	43	0
+149	43	0
+150	43	0
+151	43	0
+152	43	0
+153	43	0
+154	43	0
+155	43	0
+156	43	0
+157	43	0
+158	43	0
+159	43	0
+160	43	0
+161	43	0
+162	43	0
+163	43	0
+164	43	0
+165	43	0
+166	43	0
+167	43	0
+168	43	0
+169	43	0
+170	43	0
+171	43	0
+172	43	0
+173	43	0
+174	43	0
+175	43	0
+176	43	0
+177	43	0
+178	43	0
+179	43	0
+180	43	0
+181	43	0
+182	43	0
+183	43	0
+184	43	0
+185	43	0
+186	43	0
+187	43	0
+188	43	0
+189	43	0
+190	43	0
+191	43	0
+192	43	0
+193	43	0
+194	43	0
+195	43	0
+196	43	0
+197	43	0
+198	43	0
+199	43	0
+200	43	0
+201	43	0
+202	43	0
+203	43	0
+204	43	0
+205	43	0
+206	43	0
+207	43	0
+208	43	0
+209	43	0
+210	43	0
+211	43	0
+212	43	0
+213	43	0
+214	43	0
+215	43	0
+216	43	0
+217	43	0
+218	43	0
+219	43	0
+220	43	0
+221	43	0
+222	43	0
+223	43	0
+224	43	0
+225	43	0
+226	43	0
+227	43	0
+228	43	0
+229	43	0
+230	43	0
+231	43	0
+232	43	0
+233	43	0
+234	43	0
+235	43	0
+236	43	0
+237	43	0
+238	43	0
+239	43	0
+240	43	0
+241	43	0
+242	43	0
+243	43	0
+244	43	0
+245	43	0
+246	43	0
+247	43	0
+248	43	0
+249	43	0
+250	43	0
+251	43	0
+252	43	0
+253	43	0
+254	43	0
+255	43	0
+256	43	0
+257	43	0
+258	43	0
+259	43	0
+260	43	0
+261	43	0
+262	43	0
+263	43	0
+264	43	0
+265	43	0
+266	43	0
+267	43	0
+268	43	0
+269	43	0
+270	43	0
+271	43	0
+272	43	0
+273	43	0
+274	43	0
+275	43	0
+276	43	0
+277	43	0
+278	43	0
+279	43	0
+280	43	0
+281	43	0
+282	43	0
+283	43	0
+284	43	0
+285	43	0
+286	43	0
+287	43	0
+288	43	0
+289	43	0
+290	43	0
+291	43	0
+292	43	0
+293	43	0
+294	43	0
+295	43	0
+296	43	0
+297	43	0
+298	43	0
+299	43	0
+300	43	0
+301	43	0
+302	43	0
+303	43	0
+304	43	0
+305	43	0
+306	43	0
+307	43	0
+308	43	0
+309	43	0
+310	43	0
+311	43	0
+312	43	0
+313	43	0
+314	43	0
+315	43	0
+316	43	0
+317	43	0
+318	43	0
+319	43	0
+320	43	0
+321	43	0
+322	43	0
+323	43	0
+324	43	0
+325	43	0
+326	43	0
+327	43	0
+328	43	0
+329	43	0
+330	43	0
+331	43	0
+332	43	0
+333	43	0
+334	43	0
+335	43	0
+336	43	0
+337	43	0
+338	43	0
+339	43	0
+340	43	0
+341	43	0
+342	43	0
+343	43	0
+344	43	0
+345	43	0
+346	43	0
+347	43	0
+348	43	0
+349	43	0
+350	43	0
+351	43	0
+352	43	0
+353	43	0
+354	43	0
+355	43	0
+356	43	0
+357	43	0
+358	43	0
+359	43	0
+360	43	0
+0	43.5	0
+1	43.5	0
+2	43.5	0
+3	43.5	0
+4	43.5	0
+5	43.5	0
+6	43.5	0
+7	43.5	0
+8	43.5	0
+9	43.5	0
+10	43.5	0
+11	43.5	0
+12	43.5	0
+13	43.5	0
+14	43.5	0
+15	43.5	0
+16	43.5	0
+17	43.5	0
+18	43.5	0
+19	43.5	0
+20	43.5	0
+21	43.5	0
+22	43.5	0
+23	43.5	0
+24	43.5	0
+25	43.5	0
+26	43.5	0
+27	43.5	0
+28	43.5	0
+29	43.5	0
+30	43.5	0
+31	43.5	0
+32	43.5	0
+33	43.5	0
+34	43.5	0
+35	43.5	0
+36	43.5	0
+37	43.5	0
+38	43.5	0
+39	43.5	0
+40	43.5	0
+41	43.5	0
+42	43.5	0
+43	43.5	0
+44	43.5	0
+45	43.5	0
+46	43.5	0
+47	43.5	0
+48	43.5	0
+49	43.5	0
+50	43.5	0
+51	43.5	0
+52	43.5	0
+53	43.5	0
+54	43.5	0
+55	43.5	0
+56	43.5	0
+57	43.5	0
+58	43.5	0
+59	43.5	0
+60	43.5	0
+61	43.5	0
+62	43.5	0
+63	43.5	0
+64	43.5	0
+65	43.5	0
+66	43.5	0
+67	43.5	0
+68	43.5	0
+69	43.5	0
+70	43.5	0
+71	43.5	0
+72	43.5	0
+73	43.5	0
+74	43.5	0
+75	43.5	0
+76	43.5	0
+77	43.5	0
+78	43.5	0
+79	43.5	0
+80	43.5	0
+81	43.5	0
+82	43.5	0
+83	43.5	0
+84	43.5	0
+85	43.5	0
+86	43.5	0
+87	43.5	0
+88	43.5	0
+89	43.5	0
+90	43.5	0
+91	43.5	0
+92	43.5	0
+93	43.5	0
+94	43.5	0
+95	43.5	0
+96	43.5	0
+97	43.5	0
+98	43.5	0
+99	43.5	0
+100	43.5	0
+101	43.5	0
+102	43.5	0
+103	43.5	0
+104	43.5	0
+105	43.5	0
+106	43.5	0
+107	43.5	0
+108	43.5	0
+109	43.5	0
+110	43.5	0
+111	43.5	0
+112	43.5	0
+113	43.5	0
+114	43.5	0
+115	43.5	0
+116	43.5	0
+117	43.5	0
+118	43.5	0
+119	43.5	0
+120	43.5	0
+121	43.5	0
+122	43.5	0
+123	43.5	0
+124	43.5	0
+125	43.5	0
+126	43.5	0
+127	43.5	0
+128	43.5	0
+129	43.5	0
+130	43.5	0
+131	43.5	0
+132	43.5	0
+133	43.5	0
+134	43.5	0
+135	43.5	0
+136	43.5	0
+137	43.5	0
+138	43.5	0
+139	43.5	0
+140	43.5	0
+141	43.5	0
+142	43.5	0
+143	43.5	0
+144	43.5	0
+145	43.5	0
+146	43.5	0
+147	43.5	0
+148	43.5	0
+149	43.5	0
+150	43.5	0
+151	43.5	0
+152	43.5	0
+153	43.5	0
+154	43.5	0
+155	43.5	0
+156	43.5	0
+157	43.5	0
+158	43.5	0
+159	43.5	0
+160	43.5	0
+161	43.5	0
+162	43.5	0
+163	43.5	0
+164	43.5	0
+165	43.5	0
+166	43.5	0
+167	43.5	0
+168	43.5	0
+169	43.5	0
+170	43.5	0
+171	43.5	0
+172	43.5	0
+173	43.5	0
+174	43.5	0
+175	43.5	0
+176	43.5	0
+177	43.5	0
+178	43.5	0
+179	43.5	0
+180	43.5	0
+181	43.5	0
+182	43.5	0
+183	43.5	0
+184	43.5	0
+185	43.5	0
+186	43.5	0
+187	43.5	0
+188	43.5	0
+189	43.5	0
+190	43.5	0
+191	43.5	0
+192	43.5	0
+193	43.5	0
+194	43.5	0
+195	43.5	0
+196	43.5	0
+197	43.5	0
+198	43.5	0
+199	43.5	0
+200	43.5	0
+201	43.5	0
+202	43.5	0
+203	43.5	0
+204	43.5	0
+205	43.5	0
+206	43.5	0
+207	43.5	0
+208	43.5	0
+209	43.5	0
+210	43.5	0
+211	43.5	0
+212	43.5	0
+213	43.5	0
+214	43.5	0
+215	43.5	0
+216	43.5	0
+217	43.5	0
+218	43.5	0
+219	43.5	0
+220	43.5	0
+221	43.5	0
+222	43.5	0
+223	43.5	0
+224	43.5	0
+225	43.5	0
+226	43.5	0
+227	43.5	0
+228	43.5	0
+229	43.5	0
+230	43.5	0
+231	43.5	0
+232	43.5	0
+233	43.5	0
+234	43.5	0
+235	43.5	0
+236	43.5	0
+237	43.5	0
+238	43.5	0
+239	43.5	0
+240	43.5	0
+241	43.5	0
+242	43.5	0
+243	43.5	0
+244	43.5	0
+245	43.5	0
+246	43.5	0
+247	43.5	0
+248	43.5	0
+249	43.5	0
+250	43.5	0
+251	43.5	0
+252	43.5	0
+253	43.5	0
+254	43.5	0
+255	43.5	0
+256	43.5	0
+257	43.5	0
+258	43.5	0
+259	43.5	0
+260	43.5	0
+261	43.5	0
+262	43.5	0
+263	43.5	0
+264	43.5	0
+265	43.5	0
+266	43.5	0
+267	43.5	0
+268	43.5	0
+269	43.5	0
+270	43.5	0
+271	43.5	0
+272	43.5	0
+273	43.5	0
+274	43.5	0
+275	43.5	0
+276	43.5	0
+277	43.5	0
+278	43.5	0
+279	43.5	0
+280	43.5	0
+281	43.5	0
+282	43.5	0
+283	43.5	0
+284	43.5	0
+285	43.5	0
+286	43.5	0
+287	43.5	0
+288	43.5	0
+289	43.5	0
+290	43.5	0
+291	43.5	0
+292	43.5	0
+293	43.5	0
+294	43.5	0
+295	43.5	0
+296	43.5	0
+297	43.5	0
+298	43.5	0
+299	43.5	0
+300	43.5	0
+301	43.5	0
+302	43.5	0
+303	43.5	0
+304	43.5	0
+305	43.5	0
+306	43.5	0
+307	43.5	0
+308	43.5	0
+309	43.5	0
+310	43.5	0
+311	43.5	0
+312	43.5	0
+313	43.5	0
+314	43.5	0
+315	43.5	0
+316	43.5	0
+317	43.5	0
+318	43.5	0
+319	43.5	0
+320	43.5	0
+321	43.5	0
+322	43.5	0
+323	43.5	0
+324	43.5	0
+325	43.5	0
+326	43.5	0
+327	43.5	0
+328	43.5	0
+329	43.5	0
+330	43.5	0
+331	43.5	0
+332	43.5	0
+333	43.5	0
+334	43.5	0
+335	43.5	0
+336	43.5	0
+337	43.5	0
+338	43.5	0
+339	43.5	0
+340	43.5	0
+341	43.5	0
+342	43.5	0
+343	43.5	0
+344	43.5	0
+345	43.5	0
+346	43.5	0
+347	43.5	0
+348	43.5	0
+349	43.5	0
+350	43.5	0
+351	43.5	0
+352	43.5	0
+353	43.5	0
+354	43.5	0
+355	43.5	0
+356	43.5	0
+357	43.5	0
+358	43.5	0
+359	43.5	0
+360	43.5	0
+0	44	0
+1	44	0
+2	44	0
+3	44	0
+4	44	0
+5	44	0
+6	44	0
+7	44	0
+8	44	0
+9	44	0
+10	44	0
+11	44	0
+12	44	0
+13	44	0
+14	44	0
+15	44	0
+16	44	0
+17	44	0
+18	44	0
+19	44	0
+20	44	0
+21	44	0
+22	44	0
+23	44	0
+24	44	0
+25	44	0
+26	44	0
+27	44	0
+28	44	0
+29	44	0
+30	44	0
+31	44	0
+32	44	0
+33	44	0
+34	44	0
+35	44	0
+36	44	0
+37	44	0
+38	44	0
+39	44	0
+40	44	0
+41	44	0
+42	44	0
+43	44	0
+44	44	0
+45	44	0
+46	44	0
+47	44	0
+48	44	0
+49	44	0
+50	44	0
+51	44	0
+52	44	0
+53	44	0
+54	44	0
+55	44	0
+56	44	0
+57	44	0
+58	44	0
+59	44	0
+60	44	0
+61	44	0
+62	44	0
+63	44	0
+64	44	0
+65	44	0
+66	44	0
+67	44	0
+68	44	0
+69	44	0
+70	44	0
+71	44	0
+72	44	0
+73	44	0
+74	44	0
+75	44	0
+76	44	0
+77	44	0
+78	44	0
+79	44	0
+80	44	0
+81	44	0
+82	44	0
+83	44	0
+84	44	0
+85	44	0
+86	44	0
+87	44	0
+88	44	0
+89	44	0
+90	44	0
+91	44	0
+92	44	0
+93	44	0
+94	44	0
+95	44	0
+96	44	0
+97	44	0
+98	44	0
+99	44	0
+100	44	0
+101	44	0
+102	44	0
+103	44	0
+104	44	0
+105	44	0
+106	44	0
+107	44	0
+108	44	0
+109	44	0
+110	44	0
+111	44	0
+112	44	0
+113	44	0
+114	44	0
+115	44	0
+116	44	0
+117	44	0
+118	44	0
+119	44	0
+120	44	0
+121	44	0
+122	44	0
+123	44	0
+124	44	0
+125	44	0
+126	44	0
+127	44	0
+128	44	0
+129	44	0
+130	44	0
+131	44	0
+132	44	0
+133	44	0
+134	44	0
+135	44	0
+136	44	0
+137	44	0
+138	44	0
+139	44	0
+140	44	0
+141	44	0
+142	44	0
+143	44	0
+144	44	0
+145	44	0
+146	44	0
+147	44	0
+148	44	0
+149	44	0
+150	44	0
+151	44	0
+152	44	0
+153	44	0
+154	44	0
+155	44	0
+156	44	0
+157	44	0
+158	44	0
+159	44	0
+160	44	0
+161	44	0
+162	44	0
+163	44	0
+164	44	0
+165	44	0
+166	44	0
+167	44	0
+168	44	0
+169	44	0
+170	44	0
+171	44	0
+172	44	0
+173	44	0
+174	44	0
+175	44	0
+176	44	0
+177	44	0
+178	44	0
+179	44	0
+180	44	0
+181	44	0
+182	44	0
+183	44	0
+184	44	0
+185	44	0
+186	44	0
+187	44	0
+188	44	0
+189	44	0
+190	44	0
+191	44	0
+192	44	0
+193	44	0
+194	44	0
+195	44	0
+196	44	0
+197	44	0
+198	44	0
+199	44	0
+200	44	0
+201	44	0
+202	44	0
+203	44	0
+204	44	0
+205	44	0
+206	44	0
+207	44	0
+208	44	0
+209	44	0
+210	44	0
+211	44	0
+212	44	0
+213	44	0
+214	44	0
+215	44	0
+216	44	0
+217	44	0
+218	44	0
+219	44	0
+220	44	0
+221	44	0
+222	44	0
+223	44	0
+224	44	0
+225	44	0
+226	44	0
+227	44	0
+228	44	0
+229	44	0
+230	44	0
+231	44	0
+232	44	0
+233	44	0
+234	44	0
+235	44	0
+236	44	0
+237	44	0
+238	44	0
+239	44	0
+240	44	0
+241	44	0
+242	44	0
+243	44	0
+244	44	0
+245	44	0
+246	44	0
+247	44	0
+248	44	0
+249	44	0
+250	44	0
+251	44	0
+252	44	0
+253	44	0
+254	44	0
+255	44	0
+256	44	0
+257	44	0
+258	44	0
+259	44	0
+260	44	0
+261	44	0
+262	44	0
+263	44	0
+264	44	0
+265	44	0
+266	44	0
+267	44	0
+268	44	0
+269	44	0
+270	44	0
+271	44	0
+272	44	0
+273	44	0
+274	44	0
+275	44	0
+276	44	0
+277	44	0
+278	44	0
+279	44	0
+280	44	0
+281	44	0
+282	44	0
+283	44	0
+284	44	0
+285	44	0
+286	44	0
+287	44	0
+288	44	0
+289	44	0
+290	44	0
+291	44	0
+292	44	0
+293	44	0
+294	44	0
+295	44	0
+296	44	0
+297	44	0
+298	44	0
+299	44	0
+300	44	0
+301	44	0
+302	44	0
+303	44	0
+304	44	0
+305	44	0
+306	44	0
+307	44	0
+308	44	0
+309	44	0
+310	44	0
+311	44	0
+312	44	0
+313	44	0
+314	44	0
+315	44	0
+316	44	0
+317	44	0
+318	44	0
+319	44	0
+320	44	0
+321	44	0
+322	44	0
+323	44	0
+324	44	0
+325	44	0
+326	44	0
+327	44	0
+328	44	0
+329	44	0
+330	44	0
+331	44	0
+332	44	0
+333	44	0
+334	44	0
+335	44	0
+336	44	0
+337	44	0
+338	44	0
+339	44	0
+340	44	0
+341	44	0
+342	44	0
+343	44	0
+344	44	0
+345	44	0
+346	44	0
+347	44	0
+348	44	0
+349	44	0
+350	44	0
+351	44	0
+352	44	0
+353	44	0
+354	44	0
+355	44	0
+356	44	0
+357	44	0
+358	44	0
+359	44	0
+360	44	0
+0	44.5	0
+1	44.5	0
+2	44.5	0
+3	44.5	0
+4	44.5	0
+5	44.5	0
+6	44.5	0
+7	44.5	0
+8	44.5	0
+9	44.5	0
+10	44.5	0
+11	44.5	0
+12	44.5	0
+13	44.5	0
+14	44.5	0
+15	44.5	0
+16	44.5	0
+17	44.5	0
+18	44.5	0
+19	44.5	0
+20	44.5	0
+21	44.5	0
+22	44.5	0
+23	44.5	0
+24	44.5	0
+25	44.5	0
+26	44.5	0
+27	44.5	0
+28	44.5	0
+29	44.5	0
+30	44.5	0
+31	44.5	0
+32	44.5	0
+33	44.5	0
+34	44.5	0
+35	44.5	0
+36	44.5	0
+37	44.5	0
+38	44.5	0
+39	44.5	0
+40	44.5	0
+41	44.5	0
+42	44.5	0
+43	44.5	0
+44	44.5	0
+45	44.5	0
+46	44.5	0
+47	44.5	0
+48	44.5	0
+49	44.5	0
+50	44.5	0
+51	44.5	0
+52	44.5	0
+53	44.5	0
+54	44.5	0
+55	44.5	0
+56	44.5	0
+57	44.5	0
+58	44.5	0
+59	44.5	0
+60	44.5	0
+61	44.5	0
+62	44.5	0
+63	44.5	0
+64	44.5	0
+65	44.5	0
+66	44.5	0
+67	44.5	0
+68	44.5	0
+69	44.5	0
+70	44.5	0
+71	44.5	0
+72	44.5	0
+73	44.5	0
+74	44.5	0
+75	44.5	0
+76	44.5	0
+77	44.5	0
+78	44.5	0
+79	44.5	0
+80	44.5	0
+81	44.5	0
+82	44.5	0
+83	44.5	0
+84	44.5	0
+85	44.5	0
+86	44.5	0
+87	44.5	0
+88	44.5	0
+89	44.5	0
+90	44.5	0
+91	44.5	0
+92	44.5	0
+93	44.5	0
+94	44.5	0
+95	44.5	0
+96	44.5	0
+97	44.5	0
+98	44.5	0
+99	44.5	0
+100	44.5	0
+101	44.5	0
+102	44.5	0
+103	44.5	0
+104	44.5	0
+105	44.5	0
+106	44.5	0
+107	44.5	0
+108	44.5	0
+109	44.5	0
+110	44.5	0
+111	44.5	0
+112	44.5	0
+113	44.5	0
+114	44.5	0
+115	44.5	0
+116	44.5	0
+117	44.5	0
+118	44.5	0
+119	44.5	0
+120	44.5	0
+121	44.5	0
+122	44.5	0
+123	44.5	0
+124	44.5	0
+125	44.5	0
+126	44.5	0
+127	44.5	0
+128	44.5	0
+129	44.5	0
+130	44.5	0
+131	44.5	0
+132	44.5	0
+133	44.5	0
+134	44.5	0
+135	44.5	0
+136	44.5	0
+137	44.5	0
+138	44.5	0
+139	44.5	0
+140	44.5	0
+141	44.5	0
+142	44.5	0
+143	44.5	0
+144	44.5	0
+145	44.5	0
+146	44.5	0
+147	44.5	0
+148	44.5	0
+149	44.5	0
+150	44.5	0
+151	44.5	0
+152	44.5	0
+153	44.5	0
+154	44.5	0
+155	44.5	0
+156	44.5	0
+157	44.5	0
+158	44.5	0
+159	44.5	0
+160	44.5	0
+161	44.5	0
+162	44.5	0
+163	44.5	0
+164	44.5	0
+165	44.5	0
+166	44.5	0
+167	44.5	0
+168	44.5	0
+169	44.5	0
+170	44.5	0
+171	44.5	0
+172	44.5	0
+173	44.5	0
+174	44.5	0
+175	44.5	0
+176	44.5	0
+177	44.5	0
+178	44.5	0
+179	44.5	0
+180	44.5	0
+181	44.5	0
+182	44.5	0
+183	44.5	0
+184	44.5	0
+185	44.5	0
+186	44.5	0
+187	44.5	0
+188	44.5	0
+189	44.5	0
+190	44.5	0
+191	44.5	0
+192	44.5	0
+193	44.5	0
+194	44.5	0
+195	44.5	0
+196	44.5	0
+197	44.5	0
+198	44.5	0
+199	44.5	0
+200	44.5	0
+201	44.5	0
+202	44.5	0
+203	44.5	0
+204	44.5	0
+205	44.5	0
+206	44.5	0
+207	44.5	0
+208	44.5	0
+209	44.5	0
+210	44.5	0
+211	44.5	0
+212	44.5	0
+213	44.5	0
+214	44.5	0
+215	44.5	0
+216	44.5	0
+217	44.5	0
+218	44.5	0
+219	44.5	0
+220	44.5	0
+221	44.5	0
+222	44.5	0
+223	44.5	0
+224	44.5	0
+225	44.5	0
+226	44.5	0
+227	44.5	0
+228	44.5	0
+229	44.5	0
+230	44.5	0
+231	44.5	0
+232	44.5	0
+233	44.5	0
+234	44.5	0
+235	44.5	0
+236	44.5	0
+237	44.5	0
+238	44.5	0
+239	44.5	0
+240	44.5	0
+241	44.5	0
+242	44.5	0
+243	44.5	0
+244	44.5	0
+245	44.5	0
+246	44.5	0
+247	44.5	0
+248	44.5	0
+249	44.5	0
+250	44.5	0
+251	44.5	0
+252	44.5	0
+253	44.5	0
+254	44.5	0
+255	44.5	0
+256	44.5	0
+257	44.5	0
+258	44.5	0
+259	44.5	0
+260	44.5	0
+261	44.5	0
+262	44.5	0
+263	44.5	0
+264	44.5	0
+265	44.5	0
+266	44.5	0
+267	44.5	0
+268	44.5	0
+269	44.5	0
+270	44.5	0
+271	44.5	0
+272	44.5	0
+273	44.5	0
+274	44.5	0
+275	44.5	0
+276	44.5	0
+277	44.5	0
+278	44.5	0
+279	44.5	0
+280	44.5	0
+281	44.5	0
+282	44.5	0
+283	44.5	0
+284	44.5	0
+285	44.5	0
+286	44.5	0
+287	44.5	0
+288	44.5	0
+289	44.5	0
+290	44.5	0
+291	44.5	0
+292	44.5	0
+293	44.5	0
+294	44.5	0
+295	44.5	0
+296	44.5	0
+297	44.5	0
+298	44.5	0
+299	44.5	0
+300	44.5	0
+301	44.5	0
+302	44.5	0
+303	44.5	0
+304	44.5	0
+305	44.5	0
+306	44.5	0
+307	44.5	0
+308	44.5	0
+309	44.5	0
+310	44.5	0
+311	44.5	0
+312	44.5	0
+313	44.5	0
+314	44.5	0
+315	44.5	0
+316	44.5	0
+317	44.5	0
+318	44.5	0
+319	44.5	0
+320	44.5	0
+321	44.5	0
+322	44.5	0
+323	44.5	0
+324	44.5	0
+325	44.5	0
+326	44.5	0
+327	44.5	0
+328	44.5	0
+329	44.5	0
+330	44.5	0
+331	44.5	0
+332	44.5	0
+333	44.5	0
+334	44.5	0
+335	44.5	0
+336	44.5	0
+337	44.5	0
+338	44.5	0
+339	44.5	0
+340	44.5	0
+341	44.5	0
+342	44.5	0
+343	44.5	0
+344	44.5	0
+345	44.5	0
+346	44.5	0
+347	44.5	0
+348	44.5	0
+349	44.5	0
+350	44.5	0
+351	44.5	0
+352	44.5	0
+353	44.5	0
+354	44.5	0
+355	44.5	0
+356	44.5	0
+357	44.5	0
+358	44.5	0
+359	44.5	0
+360	44.5	0
+0	45	0
+1	45	0
+2	45	0
+3	45	0
+4	45	0
+5	45	0
+6	45	0
+7	45	0
+8	45	0
+9	45	0
+10	45	0
+11	45	0
+12	45	0
+13	45	0
+14	45	0
+15	45	0
+16	45	0
+17	45	0
+18	45	0
+19	45	0
+20	45	0
+21	45	0
+22	45	0
+23	45	0
+24	45	0
+25	45	0
+26	45	0
+27	45	0
+28	45	0
+29	45	0
+30	45	0
+31	45	0
+32	45	0
+33	45	0
+34	45	0
+35	45	0
+36	45	0
+37	45	0
+38	45	0
+39	45	0
+40	45	0
+41	45	0
+42	45	0
+43	45	0
+44	45	0
+45	45	0
+46	45	0
+47	45	0
+48	45	0
+49	45	0
+50	45	0
+51	45	0
+52	45	0
+53	45	0
+54	45	0
+55	45	0
+56	45	0
+57	45	0
+58	45	0
+59	45	0
+60	45	0
+61	45	0
+62	45	0
+63	45	0
+64	45	0
+65	45	0
+66	45	0
+67	45	0
+68	45	0
+69	45	0
+70	45	0
+71	45	0
+72	45	0
+73	45	0
+74	45	0
+75	45	0
+76	45	0
+77	45	0
+78	45	0
+79	45	0
+80	45	0
+81	45	0
+82	45	0
+83	45	0
+84	45	0
+85	45	0
+86	45	0
+87	45	0
+88	45	0
+89	45	0
+90	45	0
+91	45	0
+92	45	0
+93	45	0
+94	45	0
+95	45	0
+96	45	0
+97	45	0
+98	45	0
+99	45	0
+100	45	0
+101	45	0
+102	45	0
+103	45	0
+104	45	0
+105	45	0
+106	45	0
+107	45	0
+108	45	0
+109	45	0
+110	45	0
+111	45	0
+112	45	0
+113	45	0
+114	45	0
+115	45	0
+116	45	0
+117	45	0
+118	45	0
+119	45	0
+120	45	0
+121	45	0
+122	45	0
+123	45	0
+124	45	0
+125	45	0
+126	45	0
+127	45	0
+128	45	0
+129	45	0
+130	45	0
+131	45	0
+132	45	0
+133	45	0
+134	45	0
+135	45	0
+136	45	0
+137	45	0
+138	45	0
+139	45	0
+140	45	0
+141	45	0
+142	45	0
+143	45	0
+144	45	0
+145	45	0
+146	45	0
+147	45	0
+148	45	0
+149	45	0
+150	45	0
+151	45	0
+152	45	0
+153	45	0
+154	45	0
+155	45	0
+156	45	0
+157	45	0
+158	45	0
+159	45	0
+160	45	0
+161	45	0
+162	45	0
+163	45	0
+164	45	0
+165	45	0
+166	45	0
+167	45	0
+168	45	0
+169	45	0
+170	45	0
+171	45	0
+172	45	0
+173	45	0
+174	45	0
+175	45	0
+176	45	0
+177	45	0
+178	45	0
+179	45	0
+180	45	0
+181	45	0
+182	45	0
+183	45	0
+184	45	0
+185	45	0
+186	45	0
+187	45	0
+188	45	0
+189	45	0
+190	45	0
+191	45	0
+192	45	0
+193	45	0
+194	45	0
+195	45	0
+196	45	0
+197	45	0
+198	45	0
+199	45	0
+200	45	0
+201	45	0
+202	45	0
+203	45	0
+204	45	0
+205	45	0
+206	45	0
+207	45	0
+208	45	0
+209	45	0
+210	45	0
+211	45	0
+212	45	0
+213	45	0
+214	45	0
+215	45	0
+216	45	0
+217	45	0
+218	45	0
+219	45	0
+220	45	0
+221	45	0
+222	45	0
+223	45	0
+224	45	0
+225	45	0
+226	45	0
+227	45	0
+228	45	0
+229	45	0
+230	45	0
+231	45	0
+232	45	0
+233	45	0
+234	45	0
+235	45	0
+236	45	0
+237	45	0
+238	45	0
+239	45	0
+240	45	0
+241	45	0
+242	45	0
+243	45	0
+244	45	0
+245	45	0
+246	45	0
+247	45	0
+248	45	0
+249	45	0
+250	45	0
+251	45	0
+252	45	0
+253	45	0
+254	45	0
+255	45	0
+256	45	0
+257	45	0
+258	45	0
+259	45	0
+260	45	0
+261	45	0
+262	45	0
+263	45	0
+264	45	0
+265	45	0
+266	45	0
+267	45	0
+268	45	0
+269	45	0
+270	45	0
+271	45	0
+272	45	0
+273	45	0
+274	45	0
+275	45	0
+276	45	0
+277	45	0
+278	45	0
+279	45	0
+280	45	0
+281	45	0
+282	45	0
+283	45	0
+284	45	0
+285	45	0
+286	45	0
+287	45	0
+288	45	0
+289	45	0
+290	45	0
+291	45	0
+292	45	0
+293	45	0
+294	45	0
+295	45	0
+296	45	0
+297	45	0
+298	45	0
+299	45	0
+300	45	0
+301	45	0
+302	45	0
+303	45	0
+304	45	0
+305	45	0
+306	45	0
+307	45	0
+308	45	0
+309	45	0
+310	45	0
+311	45	0
+312	45	0
+313	45	0
+314	45	0
+315	45	0
+316	45	0
+317	45	0
+318	45	0
+319	45	0
+320	45	0
+321	45	0
+322	45	0
+323	45	0
+324	45	0
+325	45	0
+326	45	0
+327	45	0
+328	45	0
+329	45	0
+330	45	0
+331	45	0
+332	45	0
+333	45	0
+334	45	0
+335	45	0
+336	45	0
+337	45	0
+338	45	0
+339	45	0
+340	45	0
+341	45	0
+342	45	0
+343	45	0
+344	45	0
+345	45	0
+346	45	0
+347	45	0
+348	45	0
+349	45	0
+350	45	0
+351	45	0
+352	45	0
+353	45	0
+354	45	0
+355	45	0
+356	45	0
+357	45	0
+358	45	0
+359	45	0
+360	45	0
+0	45.5	0
+1	45.5	0
+2	45.5	0
+3	45.5	0
+4	45.5	0
+5	45.5	0
+6	45.5	0
+7	45.5	0
+8	45.5	0
+9	45.5	0
+10	45.5	0
+11	45.5	0
+12	45.5	0
+13	45.5	0
+14	45.5	0
+15	45.5	0
+16	45.5	0
+17	45.5	0
+18	45.5	0
+19	45.5	0
+20	45.5	0
+21	45.5	0
+22	45.5	0
+23	45.5	0
+24	45.5	0
+25	45.5	0
+26	45.5	0
+27	45.5	0
+28	45.5	0
+29	45.5	0
+30	45.5	0
+31	45.5	0
+32	45.5	0
+33	45.5	0
+34	45.5	0
+35	45.5	0
+36	45.5	0
+37	45.5	0
+38	45.5	0
+39	45.5	0
+40	45.5	0
+41	45.5	0
+42	45.5	0
+43	45.5	0
+44	45.5	0
+45	45.5	0
+46	45.5	0
+47	45.5	0
+48	45.5	0
+49	45.5	0
+50	45.5	0
+51	45.5	0
+52	45.5	0
+53	45.5	0
+54	45.5	0
+55	45.5	0
+56	45.5	0
+57	45.5	0
+58	45.5	0
+59	45.5	0
+60	45.5	0
+61	45.5	0
+62	45.5	0
+63	45.5	0
+64	45.5	0
+65	45.5	0
+66	45.5	0
+67	45.5	0
+68	45.5	0
+69	45.5	0
+70	45.5	0
+71	45.5	0
+72	45.5	0
+73	45.5	0
+74	45.5	0
+75	45.5	0
+76	45.5	0
+77	45.5	0
+78	45.5	0
+79	45.5	0
+80	45.5	0
+81	45.5	0
+82	45.5	0
+83	45.5	0
+84	45.5	0
+85	45.5	0
+86	45.5	0
+87	45.5	0
+88	45.5	0
+89	45.5	0
+90	45.5	0
+91	45.5	0
+92	45.5	0
+93	45.5	0
+94	45.5	0
+95	45.5	0
+96	45.5	0
+97	45.5	0
+98	45.5	0
+99	45.5	0
+100	45.5	0
+101	45.5	0
+102	45.5	0
+103	45.5	0
+104	45.5	0
+105	45.5	0
+106	45.5	0
+107	45.5	0
+108	45.5	0
+109	45.5	0
+110	45.5	0
+111	45.5	0
+112	45.5	0
+113	45.5	0
+114	45.5	0
+115	45.5	0
+116	45.5	0
+117	45.5	0
+118	45.5	0
+119	45.5	0
+120	45.5	0
+121	45.5	0
+122	45.5	0
+123	45.5	0
+124	45.5	0
+125	45.5	0
+126	45.5	0
+127	45.5	0
+128	45.5	0
+129	45.5	0
+130	45.5	0
+131	45.5	0
+132	45.5	0
+133	45.5	0
+134	45.5	0
+135	45.5	0
+136	45.5	0
+137	45.5	0
+138	45.5	0
+139	45.5	0
+140	45.5	0
+141	45.5	0
+142	45.5	0
+143	45.5	0
+144	45.5	0
+145	45.5	0
+146	45.5	0
+147	45.5	0
+148	45.5	0
+149	45.5	0
+150	45.5	0
+151	45.5	0
+152	45.5	0
+153	45.5	0
+154	45.5	0
+155	45.5	0
+156	45.5	0
+157	45.5	0
+158	45.5	0
+159	45.5	0
+160	45.5	0
+161	45.5	0
+162	45.5	0
+163	45.5	0
+164	45.5	0
+165	45.5	0
+166	45.5	0
+167	45.5	0
+168	45.5	0
+169	45.5	0
+170	45.5	0
+171	45.5	0
+172	45.5	0
+173	45.5	0
+174	45.5	0
+175	45.5	0
+176	45.5	0
+177	45.5	0
+178	45.5	0
+179	45.5	0
+180	45.5	0
+181	45.5	0
+182	45.5	0
+183	45.5	0
+184	45.5	0
+185	45.5	0
+186	45.5	0
+187	45.5	0
+188	45.5	0
+189	45.5	0
+190	45.5	0
+191	45.5	0
+192	45.5	0
+193	45.5	0
+194	45.5	0
+195	45.5	0
+196	45.5	0
+197	45.5	0
+198	45.5	0
+199	45.5	0
+200	45.5	0
+201	45.5	0
+202	45.5	0
+203	45.5	0
+204	45.5	0
+205	45.5	0
+206	45.5	0
+207	45.5	0
+208	45.5	0
+209	45.5	0
+210	45.5	0
+211	45.5	0
+212	45.5	0
+213	45.5	0
+214	45.5	0
+215	45.5	0
+216	45.5	0
+217	45.5	0
+218	45.5	0
+219	45.5	0
+220	45.5	0
+221	45.5	0
+222	45.5	0
+223	45.5	0
+224	45.5	0
+225	45.5	0
+226	45.5	0
+227	45.5	0
+228	45.5	0
+229	45.5	0
+230	45.5	0
+231	45.5	0
+232	45.5	0
+233	45.5	0
+234	45.5	0
+235	45.5	0
+236	45.5	0
+237	45.5	0
+238	45.5	0
+239	45.5	0
+240	45.5	0
+241	45.5	0
+242	45.5	0
+243	45.5	0
+244	45.5	0
+245	45.5	0
+246	45.5	0
+247	45.5	0
+248	45.5	0
+249	45.5	0
+250	45.5	0
+251	45.5	0
+252	45.5	0
+253	45.5	0
+254	45.5	0
+255	45.5	0
+256	45.5	0
+257	45.5	0
+258	45.5	0
+259	45.5	0
+260	45.5	0
+261	45.5	0
+262	45.5	0
+263	45.5	0
+264	45.5	0
+265	45.5	0
+266	45.5	0
+267	45.5	0
+268	45.5	0
+269	45.5	0
+270	45.5	0
+271	45.5	0
+272	45.5	0
+273	45.5	0
+274	45.5	0
+275	45.5	0
+276	45.5	0
+277	45.5	0
+278	45.5	0
+279	45.5	0
+280	45.5	0
+281	45.5	0
+282	45.5	0
+283	45.5	0
+284	45.5	0
+285	45.5	0
+286	45.5	0
+287	45.5	0
+288	45.5	0
+289	45.5	0
+290	45.5	0
+291	45.5	0
+292	45.5	0
+293	45.5	0
+294	45.5	0
+295	45.5	0
+296	45.5	0
+297	45.5	0
+298	45.5	0
+299	45.5	0
+300	45.5	0
+301	45.5	0
+302	45.5	0
+303	45.5	0
+304	45.5	0
+305	45.5	0
+306	45.5	0
+307	45.5	0
+308	45.5	0
+309	45.5	0
+310	45.5	0
+311	45.5	0
+312	45.5	0
+313	45.5	0
+314	45.5	0
+315	45.5	0
+316	45.5	0
+317	45.5	0
+318	45.5	0
+319	45.5	0
+320	45.5	0
+321	45.5	0
+322	45.5	0
+323	45.5	0
+324	45.5	0
+325	45.5	0
+326	45.5	0
+327	45.5	0
+328	45.5	0
+329	45.5	0
+330	45.5	0
+331	45.5	0
+332	45.5	0
+333	45.5	0
+334	45.5	0
+335	45.5	0
+336	45.5	0
+337	45.5	0
+338	45.5	0
+339	45.5	0
+340	45.5	0
+341	45.5	0
+342	45.5	0
+343	45.5	0
+344	45.5	0
+345	45.5	0
+346	45.5	0
+347	45.5	0
+348	45.5	0
+349	45.5	0
+350	45.5	0
+351	45.5	0
+352	45.5	0
+353	45.5	0
+354	45.5	0
+355	45.5	0
+356	45.5	0
+357	45.5	0
+358	45.5	0
+359	45.5	0
+360	45.5	0
+0	46	0
+1	46	0
+2	46	0
+3	46	0
+4	46	0
+5	46	0
+6	46	0
+7	46	0
+8	46	0
+9	46	0
+10	46	0
+11	46	0
+12	46	0
+13	46	0
+14	46	0
+15	46	0
+16	46	0
+17	46	0
+18	46	0
+19	46	0
+20	46	0
+21	46	0
+22	46	0
+23	46	0
+24	46	0
+25	46	0
+26	46	0
+27	46	0
+28	46	0
+29	46	0
+30	46	0
+31	46	0
+32	46	0
+33	46	0
+34	46	0
+35	46	0
+36	46	0
+37	46	0
+38	46	0
+39	46	0
+40	46	0
+41	46	0
+42	46	0
+43	46	0
+44	46	0
+45	46	0
+46	46	0
+47	46	0
+48	46	0
+49	46	0
+50	46	0
+51	46	0
+52	46	0
+53	46	0
+54	46	0
+55	46	0
+56	46	0
+57	46	0
+58	46	0
+59	46	0
+60	46	0
+61	46	0
+62	46	0
+63	46	0
+64	46	0
+65	46	0
+66	46	0
+67	46	0
+68	46	0
+69	46	0
+70	46	0
+71	46	0
+72	46	0
+73	46	0
+74	46	0
+75	46	0
+76	46	0
+77	46	0
+78	46	0
+79	46	0
+80	46	0
+81	46	0
+82	46	0
+83	46	0
+84	46	0
+85	46	0
+86	46	0
+87	46	0
+88	46	0
+89	46	0
+90	46	0
+91	46	0
+92	46	0
+93	46	0
+94	46	0
+95	46	0
+96	46	0
+97	46	0
+98	46	0
+99	46	0
+100	46	0
+101	46	0
+102	46	0
+103	46	0
+104	46	0
+105	46	0
+106	46	0
+107	46	0
+108	46	0
+109	46	0
+110	46	0
+111	46	0
+112	46	0
+113	46	0
+114	46	0
+115	46	0
+116	46	0
+117	46	0
+118	46	0
+119	46	0
+120	46	0
+121	46	0
+122	46	0
+123	46	0
+124	46	0
+125	46	0
+126	46	0
+127	46	0
+128	46	0
+129	46	0
+130	46	0
+131	46	0
+132	46	0
+133	46	0
+134	46	0
+135	46	0
+136	46	0
+137	46	0
+138	46	0
+139	46	0
+140	46	0
+141	46	0
+142	46	0
+143	46	0
+144	46	0
+145	46	0
+146	46	0
+147	46	0
+148	46	0
+149	46	0
+150	46	0
+151	46	0
+152	46	0
+153	46	0
+154	46	0
+155	46	0
+156	46	0
+157	46	0
+158	46	0
+159	46	0
+160	46	0
+161	46	0
+162	46	0
+163	46	0
+164	46	0
+165	46	0
+166	46	0
+167	46	0
+168	46	0
+169	46	0
+170	46	0
+171	46	0
+172	46	0
+173	46	0
+174	46	0
+175	46	0
+176	46	0
+177	46	0
+178	46	0
+179	46	0
+180	46	0
+181	46	0
+182	46	0
+183	46	0
+184	46	0
+185	46	0
+186	46	0
+187	46	0
+188	46	0
+189	46	0
+190	46	0
+191	46	0
+192	46	0
+193	46	0
+194	46	0
+195	46	0
+196	46	0
+197	46	0
+198	46	0
+199	46	0
+200	46	0
+201	46	0
+202	46	0
+203	46	0
+204	46	0
+205	46	0
+206	46	0
+207	46	0
+208	46	0
+209	46	0
+210	46	0
+211	46	0
+212	46	0
+213	46	0
+214	46	0
+215	46	0
+216	46	0
+217	46	0
+218	46	0
+219	46	0
+220	46	0
+221	46	0
+222	46	0
+223	46	0
+224	46	0
+225	46	0
+226	46	0
+227	46	0
+228	46	0
+229	46	0
+230	46	0
+231	46	0
+232	46	0
+233	46	0
+234	46	0
+235	46	0
+236	46	0
+237	46	0
+238	46	0
+239	46	0
+240	46	0
+241	46	0
+242	46	0
+243	46	0
+244	46	0
+245	46	0
+246	46	0
+247	46	0
+248	46	0
+249	46	0
+250	46	0
+251	46	0
+252	46	0
+253	46	0
+254	46	0
+255	46	0
+256	46	0
+257	46	0
+258	46	0
+259	46	0
+260	46	0
+261	46	0
+262	46	0
+263	46	0
+264	46	0
+265	46	0
+266	46	0
+267	46	0
+268	46	0
+269	46	0
+270	46	0
+271	46	0
+272	46	0
+273	46	0
+274	46	0
+275	46	0
+276	46	0
+277	46	0
+278	46	0
+279	46	0
+280	46	0
+281	46	0
+282	46	0
+283	46	0
+284	46	0
+285	46	0
+286	46	0
+287	46	0
+288	46	0
+289	46	0
+290	46	0
+291	46	0
+292	46	0
+293	46	0
+294	46	0
+295	46	0
+296	46	0
+297	46	0
+298	46	0
+299	46	0
+300	46	0
+301	46	0
+302	46	0
+303	46	0
+304	46	0
+305	46	0
+306	46	0
+307	46	0
+308	46	0
+309	46	0
+310	46	0
+311	46	0
+312	46	0
+313	46	0
+314	46	0
+315	46	0
+316	46	0
+317	46	0
+318	46	0
+319	46	0
+320	46	0
+321	46	0
+322	46	0
+323	46	0
+324	46	0
+325	46	0
+326	46	0
+327	46	0
+328	46	0
+329	46	0
+330	46	0
+331	46	0
+332	46	0
+333	46	0
+334	46	0
+335	46	0
+336	46	0
+337	46	0
+338	46	0
+339	46	0
+340	46	0
+341	46	0
+342	46	0
+343	46	0
+344	46	0
+345	46	0
+346	46	0
+347	46	0
+348	46	0
+349	46	0
+350	46	0
+351	46	0
+352	46	0
+353	46	0
+354	46	0
+355	46	0
+356	46	0
+357	46	0
+358	46	0
+359	46	0
+360	46	0
+0	46.5	0
+1	46.5	0
+2	46.5	0
+3	46.5	0
+4	46.5	0
+5	46.5	0
+6	46.5	0
+7	46.5	0
+8	46.5	0
+9	46.5	0
+10	46.5	0
+11	46.5	0
+12	46.5	0
+13	46.5	0
+14	46.5	0
+15	46.5	0
+16	46.5	0
+17	46.5	0
+18	46.5	0
+19	46.5	0
+20	46.5	0
+21	46.5	0
+22	46.5	0
+23	46.5	0
+24	46.5	0
+25	46.5	0
+26	46.5	0
+27	46.5	0
+28	46.5	0
+29	46.5	0
+30	46.5	0
+31	46.5	0
+32	46.5	0
+33	46.5	0
+34	46.5	0
+35	46.5	0
+36	46.5	0
+37	46.5	0
+38	46.5	0
+39	46.5	0
+40	46.5	0
+41	46.5	0
+42	46.5	0
+43	46.5	0
+44	46.5	0
+45	46.5	0
+46	46.5	0
+47	46.5	0
+48	46.5	0
+49	46.5	0
+50	46.5	0
+51	46.5	0
+52	46.5	0
+53	46.5	0
+54	46.5	0
+55	46.5	0
+56	46.5	0
+57	46.5	0
+58	46.5	0
+59	46.5	0
+60	46.5	0
+61	46.5	0
+62	46.5	0
+63	46.5	0
+64	46.5	0
+65	46.5	0
+66	46.5	0
+67	46.5	0
+68	46.5	0
+69	46.5	0
+70	46.5	0
+71	46.5	0
+72	46.5	0
+73	46.5	0
+74	46.5	0
+75	46.5	0
+76	46.5	0
+77	46.5	0
+78	46.5	0
+79	46.5	0
+80	46.5	0
+81	46.5	0
+82	46.5	0
+83	46.5	0
+84	46.5	0
+85	46.5	0
+86	46.5	0
+87	46.5	0
+88	46.5	0
+89	46.5	0
+90	46.5	0
+91	46.5	0
+92	46.5	0
+93	46.5	0
+94	46.5	0
+95	46.5	0
+96	46.5	0
+97	46.5	0
+98	46.5	0
+99	46.5	0
+100	46.5	0
+101	46.5	0
+102	46.5	0
+103	46.5	0
+104	46.5	0
+105	46.5	0
+106	46.5	0
+107	46.5	0
+108	46.5	0
+109	46.5	0
+110	46.5	0
+111	46.5	0
+112	46.5	0
+113	46.5	0
+114	46.5	0
+115	46.5	0
+116	46.5	0
+117	46.5	0
+118	46.5	0
+119	46.5	0
+120	46.5	0
+121	46.5	0
+122	46.5	0
+123	46.5	0
+124	46.5	0
+125	46.5	0
+126	46.5	0
+127	46.5	0
+128	46.5	0
+129	46.5	0
+130	46.5	0
+131	46.5	0
+132	46.5	0
+133	46.5	0
+134	46.5	0
+135	46.5	0
+136	46.5	0
+137	46.5	0
+138	46.5	0
+139	46.5	0
+140	46.5	0
+141	46.5	0
+142	46.5	0
+143	46.5	0
+144	46.5	0
+145	46.5	0
+146	46.5	0
+147	46.5	0
+148	46.5	0
+149	46.5	0
+150	46.5	0
+151	46.5	0
+152	46.5	0
+153	46.5	0
+154	46.5	0
+155	46.5	0
+156	46.5	0
+157	46.5	0
+158	46.5	0
+159	46.5	0
+160	46.5	0
+161	46.5	0
+162	46.5	0
+163	46.5	0
+164	46.5	0
+165	46.5	0
+166	46.5	0
+167	46.5	0
+168	46.5	0
+169	46.5	0
+170	46.5	0
+171	46.5	0
+172	46.5	0
+173	46.5	0
+174	46.5	0
+175	46.5	0
+176	46.5	0
+177	46.5	0
+178	46.5	0
+179	46.5	0
+180	46.5	0
+181	46.5	0
+182	46.5	0
+183	46.5	0
+184	46.5	0
+185	46.5	0
+186	46.5	0
+187	46.5	0
+188	46.5	0
+189	46.5	0
+190	46.5	0
+191	46.5	0
+192	46.5	0
+193	46.5	0
+194	46.5	0
+195	46.5	0
+196	46.5	0
+197	46.5	0
+198	46.5	0
+199	46.5	0
+200	46.5	0
+201	46.5	0
+202	46.5	0
+203	46.5	0
+204	46.5	0
+205	46.5	0
+206	46.5	0
+207	46.5	0
+208	46.5	0
+209	46.5	0
+210	46.5	0
+211	46.5	0
+212	46.5	0
+213	46.5	0
+214	46.5	0
+215	46.5	0
+216	46.5	0
+217	46.5	0
+218	46.5	0
+219	46.5	0
+220	46.5	0
+221	46.5	0
+222	46.5	0
+223	46.5	0
+224	46.5	0
+225	46.5	0
+226	46.5	0
+227	46.5	0
+228	46.5	0
+229	46.5	0
+230	46.5	0
+231	46.5	0
+232	46.5	0
+233	46.5	0
+234	46.5	0
+235	46.5	0
+236	46.5	0
+237	46.5	0
+238	46.5	0
+239	46.5	0
+240	46.5	0
+241	46.5	0
+242	46.5	0
+243	46.5	0
+244	46.5	0
+245	46.5	0
+246	46.5	0
+247	46.5	0
+248	46.5	0
+249	46.5	0
+250	46.5	0
+251	46.5	0
+252	46.5	0
+253	46.5	0
+254	46.5	0
+255	46.5	0
+256	46.5	0
+257	46.5	0
+258	46.5	0
+259	46.5	0
+260	46.5	0
+261	46.5	0
+262	46.5	0
+263	46.5	0
+264	46.5	0
+265	46.5	0
+266	46.5	0
+267	46.5	0
+268	46.5	0
+269	46.5	0
+270	46.5	0
+271	46.5	0
+272	46.5	0
+273	46.5	0
+274	46.5	0
+275	46.5	0
+276	46.5	0
+277	46.5	0
+278	46.5	0
+279	46.5	0
+280	46.5	0
+281	46.5	0
+282	46.5	0
+283	46.5	0
+284	46.5	0
+285	46.5	0
+286	46.5	0
+287	46.5	0
+288	46.5	0
+289	46.5	0
+290	46.5	0
+291	46.5	0
+292	46.5	0
+293	46.5	0
+294	46.5	0
+295	46.5	0
+296	46.5	0
+297	46.5	0
+298	46.5	0
+299	46.5	0
+300	46.5	0
+301	46.5	0
+302	46.5	0
+303	46.5	0
+304	46.5	0
+305	46.5	0
+306	46.5	0
+307	46.5	0
+308	46.5	0
+309	46.5	0
+310	46.5	0
+311	46.5	0
+312	46.5	0
+313	46.5	0
+314	46.5	0
+315	46.5	0
+316	46.5	0
+317	46.5	0
+318	46.5	0
+319	46.5	0
+320	46.5	0
+321	46.5	0
+322	46.5	0
+323	46.5	0
+324	46.5	0
+325	46.5	0
+326	46.5	0
+327	46.5	0
+328	46.5	0
+329	46.5	0
+330	46.5	0
+331	46.5	0
+332	46.5	0
+333	46.5	0
+334	46.5	0
+335	46.5	0
+336	46.5	0
+337	46.5	0
+338	46.5	0
+339	46.5	0
+340	46.5	0
+341	46.5	0
+342	46.5	0
+343	46.5	0
+344	46.5	0
+345	46.5	0
+346	46.5	0
+347	46.5	0
+348	46.5	0
+349	46.5	0
+350	46.5	0
+351	46.5	0
+352	46.5	0
+353	46.5	0
+354	46.5	0
+355	46.5	0
+356	46.5	0
+357	46.5	0
+358	46.5	0
+359	46.5	0
+360	46.5	0
+0	47	0
+1	47	0
+2	47	0
+3	47	0
+4	47	0
+5	47	0
+6	47	0
+7	47	0
+8	47	0
+9	47	0
+10	47	0
+11	47	0
+12	47	0
+13	47	0
+14	47	0
+15	47	0
+16	47	0
+17	47	0
+18	47	0
+19	47	0
+20	47	0
+21	47	0
+22	47	0
+23	47	0
+24	47	0
+25	47	0
+26	47	0
+27	47	0
+28	47	0
+29	47	0
+30	47	0
+31	47	0
+32	47	0
+33	47	0
+34	47	0
+35	47	0
+36	47	0
+37	47	0
+38	47	0
+39	47	0
+40	47	0
+41	47	0
+42	47	0
+43	47	0
+44	47	0
+45	47	0
+46	47	0
+47	47	0
+48	47	0
+49	47	0
+50	47	0
+51	47	0
+52	47	0
+53	47	0
+54	47	0
+55	47	0
+56	47	0
+57	47	0
+58	47	0
+59	47	0
+60	47	0
+61	47	0
+62	47	0
+63	47	0
+64	47	0
+65	47	0
+66	47	0
+67	47	0
+68	47	0
+69	47	0
+70	47	0
+71	47	0
+72	47	0
+73	47	0
+74	47	0
+75	47	0
+76	47	0
+77	47	0
+78	47	0
+79	47	0
+80	47	0
+81	47	0
+82	47	0
+83	47	0
+84	47	0
+85	47	0
+86	47	0
+87	47	0
+88	47	0
+89	47	0
+90	47	0
+91	47	0
+92	47	0
+93	47	0
+94	47	0
+95	47	0
+96	47	0
+97	47	0
+98	47	0
+99	47	0
+100	47	0
+101	47	0
+102	47	0
+103	47	0
+104	47	0
+105	47	0
+106	47	0
+107	47	0
+108	47	0
+109	47	0
+110	47	0
+111	47	0
+112	47	0
+113	47	0
+114	47	0
+115	47	0
+116	47	0
+117	47	0
+118	47	0
+119	47	0
+120	47	0
+121	47	0
+122	47	0
+123	47	0
+124	47	0
+125	47	0
+126	47	0
+127	47	0
+128	47	0
+129	47	0
+130	47	0
+131	47	0
+132	47	0
+133	47	0
+134	47	0
+135	47	0
+136	47	0
+137	47	0
+138	47	0
+139	47	0
+140	47	0
+141	47	0
+142	47	0
+143	47	0
+144	47	0
+145	47	0
+146	47	0
+147	47	0
+148	47	0
+149	47	0
+150	47	0
+151	47	0
+152	47	0
+153	47	0
+154	47	0
+155	47	0
+156	47	0
+157	47	0
+158	47	0
+159	47	0
+160	47	0
+161	47	0
+162	47	0
+163	47	0
+164	47	0
+165	47	0
+166	47	0
+167	47	0
+168	47	0
+169	47	0
+170	47	0
+171	47	0
+172	47	0
+173	47	0
+174	47	0
+175	47	0
+176	47	0
+177	47	0
+178	47	0
+179	47	0
+180	47	0
+181	47	0
+182	47	0
+183	47	0
+184	47	0
+185	47	0
+186	47	0
+187	47	0
+188	47	0
+189	47	0
+190	47	0
+191	47	0
+192	47	0
+193	47	0
+194	47	0
+195	47	0
+196	47	0
+197	47	0
+198	47	0
+199	47	0
+200	47	0
+201	47	0
+202	47	0
+203	47	0
+204	47	0
+205	47	0
+206	47	0
+207	47	0
+208	47	0
+209	47	0
+210	47	0
+211	47	0
+212	47	0
+213	47	0
+214	47	0
+215	47	0
+216	47	0
+217	47	0
+218	47	0
+219	47	0
+220	47	0
+221	47	0
+222	47	0
+223	47	0
+224	47	0
+225	47	0
+226	47	0
+227	47	0
+228	47	0
+229	47	0
+230	47	0
+231	47	0
+232	47	0
+233	47	0
+234	47	0
+235	47	0
+236	47	0
+237	47	0
+238	47	0
+239	47	0
+240	47	0
+241	47	0
+242	47	0
+243	47	0
+244	47	0
+245	47	0
+246	47	0
+247	47	0
+248	47	0
+249	47	0
+250	47	0
+251	47	0
+252	47	0
+253	47	0
+254	47	0
+255	47	0
+256	47	0
+257	47	0
+258	47	0
+259	47	0
+260	47	0
+261	47	0
+262	47	0
+263	47	0
+264	47	0
+265	47	0
+266	47	0
+267	47	0
+268	47	0
+269	47	0
+270	47	0
+271	47	0
+272	47	0
+273	47	0
+274	47	0
+275	47	0
+276	47	0
+277	47	0
+278	47	0
+279	47	0
+280	47	0
+281	47	0
+282	47	0
+283	47	0
+284	47	0
+285	47	0
+286	47	0
+287	47	0
+288	47	0
+289	47	0
+290	47	0
+291	47	0
+292	47	0
+293	47	0
+294	47	0
+295	47	0
+296	47	0
+297	47	0
+298	47	0
+299	47	0
+300	47	0
+301	47	0
+302	47	0
+303	47	0
+304	47	0
+305	47	0
+306	47	0
+307	47	0
+308	47	0
+309	47	0
+310	47	0
+311	47	0
+312	47	0
+313	47	0
+314	47	0
+315	47	0
+316	47	0
+317	47	0
+318	47	0
+319	47	0
+320	47	0
+321	47	0
+322	47	0
+323	47	0
+324	47	0
+325	47	0
+326	47	0
+327	47	0
+328	47	0
+329	47	0
+330	47	0
+331	47	0
+332	47	0
+333	47	0
+334	47	0
+335	47	0
+336	47	0
+337	47	0
+338	47	0
+339	47	0
+340	47	0
+341	47	0
+342	47	0
+343	47	0
+344	47	0
+345	47	0
+346	47	0
+347	47	0
+348	47	0
+349	47	0
+350	47	0
+351	47	0
+352	47	0
+353	47	0
+354	47	0
+355	47	0
+356	47	0
+357	47	0
+358	47	0
+359	47	0
+360	47	0
+0	47.5	0
+1	47.5	0
+2	47.5	0
+3	47.5	0
+4	47.5	0
+5	47.5	0
+6	47.5	0
+7	47.5	0
+8	47.5	0
+9	47.5	0
+10	47.5	0
+11	47.5	0
+12	47.5	0
+13	47.5	0
+14	47.5	0
+15	47.5	0
+16	47.5	0
+17	47.5	0
+18	47.5	0
+19	47.5	0
+20	47.5	0
+21	47.5	0
+22	47.5	0
+23	47.5	0
+24	47.5	0
+25	47.5	0
+26	47.5	0
+27	47.5	0
+28	47.5	0
+29	47.5	0
+30	47.5	0
+31	47.5	0
+32	47.5	0
+33	47.5	0
+34	47.5	0
+35	47.5	0
+36	47.5	0
+37	47.5	0
+38	47.5	0
+39	47.5	0
+40	47.5	0
+41	47.5	0
+42	47.5	0
+43	47.5	0
+44	47.5	0
+45	47.5	0
+46	47.5	0
+47	47.5	0
+48	47.5	0
+49	47.5	0
+50	47.5	0
+51	47.5	0
+52	47.5	0
+53	47.5	0
+54	47.5	0
+55	47.5	0
+56	47.5	0
+57	47.5	0
+58	47.5	0
+59	47.5	0
+60	47.5	0
+61	47.5	0
+62	47.5	0
+63	47.5	0
+64	47.5	0
+65	47.5	0
+66	47.5	0
+67	47.5	0
+68	47.5	0
+69	47.5	0
+70	47.5	0
+71	47.5	0
+72	47.5	0
+73	47.5	0
+74	47.5	0
+75	47.5	0
+76	47.5	0
+77	47.5	0
+78	47.5	0
+79	47.5	0
+80	47.5	0
+81	47.5	0
+82	47.5	0
+83	47.5	0
+84	47.5	0
+85	47.5	0
+86	47.5	0
+87	47.5	0
+88	47.5	0
+89	47.5	0
+90	47.5	0
+91	47.5	0
+92	47.5	0
+93	47.5	0
+94	47.5	0
+95	47.5	0
+96	47.5	0
+97	47.5	0
+98	47.5	0
+99	47.5	0
+100	47.5	0
+101	47.5	0
+102	47.5	0
+103	47.5	0
+104	47.5	0
+105	47.5	0
+106	47.5	0
+107	47.5	0
+108	47.5	0
+109	47.5	0
+110	47.5	0
+111	47.5	0
+112	47.5	0
+113	47.5	0
+114	47.5	0
+115	47.5	0
+116	47.5	0
+117	47.5	0
+118	47.5	0
+119	47.5	0
+120	47.5	0
+121	47.5	0
+122	47.5	0
+123	47.5	0
+124	47.5	0
+125	47.5	0
+126	47.5	0
+127	47.5	0
+128	47.5	0
+129	47.5	0
+130	47.5	0
+131	47.5	0
+132	47.5	0
+133	47.5	0
+134	47.5	0
+135	47.5	0
+136	47.5	0
+137	47.5	0
+138	47.5	0
+139	47.5	0
+140	47.5	0
+141	47.5	0
+142	47.5	0
+143	47.5	0
+144	47.5	0
+145	47.5	0
+146	47.5	0
+147	47.5	0
+148	47.5	0
+149	47.5	0
+150	47.5	0
+151	47.5	0
+152	47.5	0
+153	47.5	0
+154	47.5	0
+155	47.5	0
+156	47.5	0
+157	47.5	0
+158	47.5	0
+159	47.5	0
+160	47.5	0
+161	47.5	0
+162	47.5	0
+163	47.5	0
+164	47.5	0
+165	47.5	0
+166	47.5	0
+167	47.5	0
+168	47.5	0
+169	47.5	0
+170	47.5	0
+171	47.5	0
+172	47.5	0
+173	47.5	0
+174	47.5	0
+175	47.5	0
+176	47.5	0
+177	47.5	0
+178	47.5	0
+179	47.5	0
+180	47.5	0
+181	47.5	0
+182	47.5	0
+183	47.5	0
+184	47.5	0
+185	47.5	0
+186	47.5	0
+187	47.5	0
+188	47.5	0
+189	47.5	0
+190	47.5	0
+191	47.5	0
+192	47.5	0
+193	47.5	0
+194	47.5	0
+195	47.5	0
+196	47.5	0
+197	47.5	0
+198	47.5	0
+199	47.5	0
+200	47.5	0
+201	47.5	0
+202	47.5	0
+203	47.5	0
+204	47.5	0
+205	47.5	0
+206	47.5	0
+207	47.5	0
+208	47.5	0
+209	47.5	0
+210	47.5	0
+211	47.5	0
+212	47.5	0
+213	47.5	0
+214	47.5	0
+215	47.5	0
+216	47.5	0
+217	47.5	0
+218	47.5	0
+219	47.5	0
+220	47.5	0
+221	47.5	0
+222	47.5	0
+223	47.5	0
+224	47.5	0
+225	47.5	0
+226	47.5	0
+227	47.5	0
+228	47.5	0
+229	47.5	0
+230	47.5	0
+231	47.5	0
+232	47.5	0
+233	47.5	0
+234	47.5	0
+235	47.5	0
+236	47.5	0
+237	47.5	0
+238	47.5	0
+239	47.5	0
+240	47.5	0
+241	47.5	0
+242	47.5	0
+243	47.5	0
+244	47.5	0
+245	47.5	0
+246	47.5	0
+247	47.5	0
+248	47.5	0
+249	47.5	0
+250	47.5	0
+251	47.5	0
+252	47.5	0
+253	47.5	0
+254	47.5	0
+255	47.5	0
+256	47.5	0
+257	47.5	0
+258	47.5	0
+259	47.5	0
+260	47.5	0
+261	47.5	0
+262	47.5	0
+263	47.5	0
+264	47.5	0
+265	47.5	0
+266	47.5	0
+267	47.5	0
+268	47.5	0
+269	47.5	0
+270	47.5	0
+271	47.5	0
+272	47.5	0
+273	47.5	0
+274	47.5	0
+275	47.5	0
+276	47.5	0
+277	47.5	0
+278	47.5	0
+279	47.5	0
+280	47.5	0
+281	47.5	0
+282	47.5	0
+283	47.5	0
+284	47.5	0
+285	47.5	0
+286	47.5	0
+287	47.5	0
+288	47.5	0
+289	47.5	0
+290	47.5	0
+291	47.5	0
+292	47.5	0
+293	47.5	0
+294	47.5	0
+295	47.5	0
+296	47.5	0
+297	47.5	0
+298	47.5	0
+299	47.5	0
+300	47.5	0
+301	47.5	0
+302	47.5	0
+303	47.5	0
+304	47.5	0
+305	47.5	0
+306	47.5	0
+307	47.5	0
+308	47.5	0
+309	47.5	0
+310	47.5	0
+311	47.5	0
+312	47.5	0
+313	47.5	0
+314	47.5	0
+315	47.5	0
+316	47.5	0
+317	47.5	0
+318	47.5	0
+319	47.5	0
+320	47.5	0
+321	47.5	0
+322	47.5	0
+323	47.5	0
+324	47.5	0
+325	47.5	0
+326	47.5	0
+327	47.5	0
+328	47.5	0
+329	47.5	0
+330	47.5	0
+331	47.5	0
+332	47.5	0
+333	47.5	0
+334	47.5	0
+335	47.5	0
+336	47.5	0
+337	47.5	0
+338	47.5	0
+339	47.5	0
+340	47.5	0
+341	47.5	0
+342	47.5	0
+343	47.5	0
+344	47.5	0
+345	47.5	0
+346	47.5	0
+347	47.5	0
+348	47.5	0
+349	47.5	0
+350	47.5	0
+351	47.5	0
+352	47.5	0
+353	47.5	0
+354	47.5	0
+355	47.5	0
+356	47.5	0
+357	47.5	0
+358	47.5	0
+359	47.5	0
+360	47.5	0
+0	48	0
+1	48	0
+2	48	0
+3	48	0
+4	48	0
+5	48	0
+6	48	0
+7	48	0
+8	48	0
+9	48	0
+10	48	0
+11	48	0
+12	48	0
+13	48	0
+14	48	0
+15	48	0
+16	48	0
+17	48	0
+18	48	0
+19	48	0
+20	48	0
+21	48	0
+22	48	0
+23	48	0
+24	48	0
+25	48	0
+26	48	0
+27	48	0
+28	48	0
+29	48	0
+30	48	0
+31	48	0
+32	48	0
+33	48	0
+34	48	0
+35	48	0
+36	48	0
+37	48	0
+38	48	0
+39	48	0
+40	48	0
+41	48	0
+42	48	0
+43	48	0
+44	48	0
+45	48	0
+46	48	0
+47	48	0
+48	48	0
+49	48	0
+50	48	0
+51	48	0
+52	48	0
+53	48	0
+54	48	0
+55	48	0
+56	48	0
+57	48	0
+58	48	0
+59	48	0
+60	48	0
+61	48	0
+62	48	0
+63	48	0
+64	48	0
+65	48	0
+66	48	0
+67	48	0
+68	48	0
+69	48	0
+70	48	0
+71	48	0
+72	48	0
+73	48	0
+74	48	0
+75	48	0
+76	48	0
+77	48	0
+78	48	0
+79	48	0
+80	48	0
+81	48	0
+82	48	0
+83	48	0
+84	48	0
+85	48	0
+86	48	0
+87	48	0
+88	48	0
+89	48	0
+90	48	0
+91	48	0
+92	48	0
+93	48	0
+94	48	0
+95	48	0
+96	48	0
+97	48	0
+98	48	0
+99	48	0
+100	48	0
+101	48	0
+102	48	0
+103	48	0
+104	48	0
+105	48	0
+106	48	0
+107	48	0
+108	48	0
+109	48	0
+110	48	0
+111	48	0
+112	48	0
+113	48	0
+114	48	0
+115	48	0
+116	48	0
+117	48	0
+118	48	0
+119	48	0
+120	48	0
+121	48	0
+122	48	0
+123	48	0
+124	48	0
+125	48	0
+126	48	0
+127	48	0
+128	48	0
+129	48	0
+130	48	0
+131	48	0
+132	48	0
+133	48	0
+134	48	0
+135	48	0
+136	48	0
+137	48	0
+138	48	0
+139	48	0
+140	48	0
+141	48	0
+142	48	0
+143	48	0
+144	48	0
+145	48	0
+146	48	0
+147	48	0
+148	48	0
+149	48	0
+150	48	0
+151	48	0
+152	48	0
+153	48	0
+154	48	0
+155	48	0
+156	48	0
+157	48	0
+158	48	0
+159	48	0
+160	48	0
+161	48	0
+162	48	0
+163	48	0
+164	48	0
+165	48	0
+166	48	0
+167	48	0
+168	48	0
+169	48	0
+170	48	0
+171	48	0
+172	48	0
+173	48	0
+174	48	0
+175	48	0
+176	48	0
+177	48	0
+178	48	0
+179	48	0
+180	48	0
+181	48	0
+182	48	0
+183	48	0
+184	48	0
+185	48	0
+186	48	0
+187	48	0
+188	48	0
+189	48	0
+190	48	0
+191	48	0
+192	48	0
+193	48	0
+194	48	0
+195	48	0
+196	48	0
+197	48	0
+198	48	0
+199	48	0
+200	48	0
+201	48	0
+202	48	0
+203	48	0
+204	48	0
+205	48	0
+206	48	0
+207	48	0
+208	48	0
+209	48	0
+210	48	0
+211	48	0
+212	48	0
+213	48	0
+214	48	0
+215	48	0
+216	48	0
+217	48	0
+218	48	0
+219	48	0
+220	48	0
+221	48	0
+222	48	0
+223	48	0
+224	48	0
+225	48	0
+226	48	0
+227	48	0
+228	48	0
+229	48	0
+230	48	0
+231	48	0
+232	48	0
+233	48	0
+234	48	0
+235	48	0
+236	48	0
+237	48	0
+238	48	0
+239	48	0
+240	48	0
+241	48	0
+242	48	0
+243	48	0
+244	48	0
+245	48	0
+246	48	0
+247	48	0
+248	48	0
+249	48	0
+250	48	0
+251	48	0
+252	48	0
+253	48	0
+254	48	0
+255	48	0
+256	48	0
+257	48	0
+258	48	0
+259	48	0
+260	48	0
+261	48	0
+262	48	0
+263	48	0
+264	48	0
+265	48	0
+266	48	0
+267	48	0
+268	48	0
+269	48	0
+270	48	0
+271	48	0
+272	48	0
+273	48	0
+274	48	0
+275	48	0
+276	48	0
+277	48	0
+278	48	0
+279	48	0
+280	48	0
+281	48	0
+282	48	0
+283	48	0
+284	48	0
+285	48	0
+286	48	0
+287	48	0
+288	48	0
+289	48	0
+290	48	0
+291	48	0
+292	48	0
+293	48	0
+294	48	0
+295	48	0
+296	48	0
+297	48	0
+298	48	0
+299	48	0
+300	48	0
+301	48	0
+302	48	0
+303	48	0
+304	48	0
+305	48	0
+306	48	0
+307	48	0
+308	48	0
+309	48	0
+310	48	0
+311	48	0
+312	48	0
+313	48	0
+314	48	0
+315	48	0
+316	48	0
+317	48	0
+318	48	0
+319	48	0
+320	48	0
+321	48	0
+322	48	0
+323	48	0
+324	48	0
+325	48	0
+326	48	0
+327	48	0
+328	48	0
+329	48	0
+330	48	0
+331	48	0
+332	48	0
+333	48	0
+334	48	0
+335	48	0
+336	48	0
+337	48	0
+338	48	0
+339	48	0
+340	48	0
+341	48	0
+342	48	0
+343	48	0
+344	48	0
+345	48	0
+346	48	0
+347	48	0
+348	48	0
+349	48	0
+350	48	0
+351	48	0
+352	48	0
+353	48	0
+354	48	0
+355	48	0
+356	48	0
+357	48	0
+358	48	0
+359	48	0
+360	48	0
+0	48.5	0
+1	48.5	0
+2	48.5	0
+3	48.5	0
+4	48.5	0
+5	48.5	0
+6	48.5	0
+7	48.5	0
+8	48.5	0
+9	48.5	0
+10	48.5	0
+11	48.5	0
+12	48.5	0
+13	48.5	0
+14	48.5	0
+15	48.5	0
+16	48.5	0
+17	48.5	0
+18	48.5	0
+19	48.5	0
+20	48.5	0
+21	48.5	0
+22	48.5	0
+23	48.5	0
+24	48.5	0
+25	48.5	0
+26	48.5	0
+27	48.5	0
+28	48.5	0
+29	48.5	0
+30	48.5	0
+31	48.5	0
+32	48.5	0
+33	48.5	0
+34	48.5	0
+35	48.5	0
+36	48.5	0
+37	48.5	0
+38	48.5	0
+39	48.5	0
+40	48.5	0
+41	48.5	0
+42	48.5	0
+43	48.5	0
+44	48.5	0
+45	48.5	0
+46	48.5	0
+47	48.5	0
+48	48.5	0
+49	48.5	0
+50	48.5	0
+51	48.5	0
+52	48.5	0
+53	48.5	0
+54	48.5	0
+55	48.5	0
+56	48.5	0
+57	48.5	0
+58	48.5	0
+59	48.5	0
+60	48.5	0
+61	48.5	0
+62	48.5	0
+63	48.5	0
+64	48.5	0
+65	48.5	0
+66	48.5	0
+67	48.5	0
+68	48.5	0
+69	48.5	0
+70	48.5	0
+71	48.5	0
+72	48.5	0
+73	48.5	0
+74	48.5	0
+75	48.5	0
+76	48.5	0
+77	48.5	0
+78	48.5	0
+79	48.5	0
+80	48.5	0
+81	48.5	0
+82	48.5	0
+83	48.5	0
+84	48.5	0
+85	48.5	0
+86	48.5	0
+87	48.5	0
+88	48.5	0
+89	48.5	0
+90	48.5	0
+91	48.5	0
+92	48.5	0
+93	48.5	0
+94	48.5	0
+95	48.5	0
+96	48.5	0
+97	48.5	0
+98	48.5	0
+99	48.5	0
+100	48.5	0
+101	48.5	0
+102	48.5	0
+103	48.5	0
+104	48.5	0
+105	48.5	0
+106	48.5	0
+107	48.5	0
+108	48.5	0
+109	48.5	0
+110	48.5	0
+111	48.5	0
+112	48.5	0
+113	48.5	0
+114	48.5	0
+115	48.5	0
+116	48.5	0
+117	48.5	0
+118	48.5	0
+119	48.5	0
+120	48.5	0
+121	48.5	0
+122	48.5	0
+123	48.5	0
+124	48.5	0
+125	48.5	0
+126	48.5	0
+127	48.5	0
+128	48.5	0
+129	48.5	0
+130	48.5	0
+131	48.5	0
+132	48.5	0
+133	48.5	0
+134	48.5	0
+135	48.5	0
+136	48.5	0
+137	48.5	0
+138	48.5	0
+139	48.5	0
+140	48.5	0
+141	48.5	0
+142	48.5	0
+143	48.5	0
+144	48.5	0
+145	48.5	0
+146	48.5	0
+147	48.5	0
+148	48.5	0
+149	48.5	0
+150	48.5	0
+151	48.5	0
+152	48.5	0
+153	48.5	0
+154	48.5	0
+155	48.5	0
+156	48.5	0
+157	48.5	0
+158	48.5	0
+159	48.5	0
+160	48.5	0
+161	48.5	0
+162	48.5	0
+163	48.5	0
+164	48.5	0
+165	48.5	0
+166	48.5	0
+167	48.5	0
+168	48.5	0
+169	48.5	0
+170	48.5	0
+171	48.5	0
+172	48.5	0
+173	48.5	0
+174	48.5	0
+175	48.5	0
+176	48.5	0
+177	48.5	0
+178	48.5	0
+179	48.5	0
+180	48.5	0
+181	48.5	0
+182	48.5	0
+183	48.5	0
+184	48.5	0
+185	48.5	0
+186	48.5	0
+187	48.5	0
+188	48.5	0
+189	48.5	0
+190	48.5	0
+191	48.5	0
+192	48.5	0
+193	48.5	0
+194	48.5	0
+195	48.5	0
+196	48.5	0
+197	48.5	0
+198	48.5	0
+199	48.5	0
+200	48.5	0
+201	48.5	0
+202	48.5	0
+203	48.5	0
+204	48.5	0
+205	48.5	0
+206	48.5	0
+207	48.5	0
+208	48.5	0
+209	48.5	0
+210	48.5	0
+211	48.5	0
+212	48.5	0
+213	48.5	0
+214	48.5	0
+215	48.5	0
+216	48.5	0
+217	48.5	0
+218	48.5	0
+219	48.5	0
+220	48.5	0
+221	48.5	0
+222	48.5	0
+223	48.5	0
+224	48.5	0
+225	48.5	0
+226	48.5	0
+227	48.5	0
+228	48.5	0
+229	48.5	0
+230	48.5	0
+231	48.5	0
+232	48.5	0
+233	48.5	0
+234	48.5	0
+235	48.5	0
+236	48.5	0
+237	48.5	0
+238	48.5	0
+239	48.5	0
+240	48.5	0
+241	48.5	0
+242	48.5	0
+243	48.5	0
+244	48.5	0
+245	48.5	0
+246	48.5	0
+247	48.5	0
+248	48.5	0
+249	48.5	0
+250	48.5	0
+251	48.5	0
+252	48.5	0
+253	48.5	0
+254	48.5	0
+255	48.5	0
+256	48.5	0
+257	48.5	0
+258	48.5	0
+259	48.5	0
+260	48.5	0
+261	48.5	0
+262	48.5	0
+263	48.5	0
+264	48.5	0
+265	48.5	0
+266	48.5	0
+267	48.5	0
+268	48.5	0
+269	48.5	0
+270	48.5	0
+271	48.5	0
+272	48.5	0
+273	48.5	0
+274	48.5	0
+275	48.5	0
+276	48.5	0
+277	48.5	0
+278	48.5	0
+279	48.5	0
+280	48.5	0
+281	48.5	0
+282	48.5	0
+283	48.5	0
+284	48.5	0
+285	48.5	0
+286	48.5	0
+287	48.5	0
+288	48.5	0
+289	48.5	0
+290	48.5	0
+291	48.5	0
+292	48.5	0
+293	48.5	0
+294	48.5	0
+295	48.5	0
+296	48.5	0
+297	48.5	0
+298	48.5	0
+299	48.5	0
+300	48.5	0
+301	48.5	0
+302	48.5	0
+303	48.5	0
+304	48.5	0
+305	48.5	0
+306	48.5	0
+307	48.5	0
+308	48.5	0
+309	48.5	0
+310	48.5	0
+311	48.5	0
+312	48.5	0
+313	48.5	0
+314	48.5	0
+315	48.5	0
+316	48.5	0
+317	48.5	0
+318	48.5	0
+319	48.5	0
+320	48.5	0
+321	48.5	0
+322	48.5	0
+323	48.5	0
+324	48.5	0
+325	48.5	0
+326	48.5	0
+327	48.5	0
+328	48.5	0
+329	48.5	0
+330	48.5	0
+331	48.5	0
+332	48.5	0
+333	48.5	0
+334	48.5	0
+335	48.5	0
+336	48.5	0
+337	48.5	0
+338	48.5	0
+339	48.5	0
+340	48.5	0
+341	48.5	0
+342	48.5	0
+343	48.5	0
+344	48.5	0
+345	48.5	0
+346	48.5	0
+347	48.5	0
+348	48.5	0
+349	48.5	0
+350	48.5	0
+351	48.5	0
+352	48.5	0
+353	48.5	0
+354	48.5	0
+355	48.5	0
+356	48.5	0
+357	48.5	0
+358	48.5	0
+359	48.5	0
+360	48.5	0
+0	49	0
+1	49	0
+2	49	0
+3	49	0
+4	49	0
+5	49	0
+6	49	0
+7	49	0
+8	49	0
+9	49	0
+10	49	0
+11	49	0
+12	49	0
+13	49	0
+14	49	0
+15	49	0
+16	49	0
+17	49	0
+18	49	0
+19	49	0
+20	49	0
+21	49	0
+22	49	0
+23	49	0
+24	49	0
+25	49	0
+26	49	0
+27	49	0
+28	49	0
+29	49	0
+30	49	0
+31	49	0
+32	49	0
+33	49	0
+34	49	0
+35	49	0
+36	49	0
+37	49	0
+38	49	0
+39	49	0
+40	49	0
+41	49	0
+42	49	0
+43	49	0
+44	49	0
+45	49	0
+46	49	0
+47	49	0
+48	49	0
+49	49	0
+50	49	0
+51	49	0
+52	49	0
+53	49	0
+54	49	0
+55	49	0
+56	49	0
+57	49	0
+58	49	0
+59	49	0
+60	49	0
+61	49	0
+62	49	0
+63	49	0
+64	49	0
+65	49	0
+66	49	0
+67	49	0
+68	49	0
+69	49	0
+70	49	0
+71	49	0
+72	49	0
+73	49	0
+74	49	0
+75	49	0
+76	49	0
+77	49	0
+78	49	0
+79	49	0
+80	49	0
+81	49	0
+82	49	0
+83	49	0
+84	49	0
+85	49	0
+86	49	0
+87	49	0
+88	49	0
+89	49	0
+90	49	0
+91	49	0
+92	49	0
+93	49	0
+94	49	0
+95	49	0
+96	49	0
+97	49	0
+98	49	0
+99	49	0
+100	49	0
+101	49	0
+102	49	0
+103	49	0
+104	49	0
+105	49	0
+106	49	0
+107	49	0
+108	49	0
+109	49	0
+110	49	0
+111	49	0
+112	49	0
+113	49	0
+114	49	0
+115	49	0
+116	49	0
+117	49	0
+118	49	0
+119	49	0
+120	49	0
+121	49	0
+122	49	0
+123	49	0
+124	49	0
+125	49	0
+126	49	0
+127	49	0
+128	49	0
+129	49	0
+130	49	0
+131	49	0
+132	49	0
+133	49	0
+134	49	0
+135	49	0
+136	49	0
+137	49	0
+138	49	0
+139	49	0
+140	49	0
+141	49	0
+142	49	0
+143	49	0
+144	49	0
+145	49	0
+146	49	0
+147	49	0
+148	49	0
+149	49	0
+150	49	0
+151	49	0
+152	49	0
+153	49	0
+154	49	0
+155	49	0
+156	49	0
+157	49	0
+158	49	0
+159	49	0
+160	49	0
+161	49	0
+162	49	0
+163	49	0
+164	49	0
+165	49	0
+166	49	0
+167	49	0
+168	49	0
+169	49	0
+170	49	0
+171	49	0
+172	49	0
+173	49	0
+174	49	0
+175	49	0
+176	49	0
+177	49	0
+178	49	0
+179	49	0
+180	49	0
+181	49	0
+182	49	0
+183	49	0
+184	49	0
+185	49	0
+186	49	0
+187	49	0
+188	49	0
+189	49	0
+190	49	0
+191	49	0
+192	49	0
+193	49	0
+194	49	0
+195	49	0
+196	49	0
+197	49	0
+198	49	0
+199	49	0
+200	49	0
+201	49	0
+202	49	0
+203	49	0
+204	49	0
+205	49	0
+206	49	0
+207	49	0
+208	49	0
+209	49	0
+210	49	0
+211	49	0
+212	49	0
+213	49	0
+214	49	0
+215	49	0
+216	49	0
+217	49	0
+218	49	0
+219	49	0
+220	49	0
+221	49	0
+222	49	0
+223	49	0
+224	49	0
+225	49	0
+226	49	0
+227	49	0
+228	49	0
+229	49	0
+230	49	0
+231	49	0
+232	49	0
+233	49	0
+234	49	0
+235	49	0
+236	49	0
+237	49	0
+238	49	0
+239	49	0
+240	49	0
+241	49	0
+242	49	0
+243	49	0
+244	49	0
+245	49	0
+246	49	0
+247	49	0
+248	49	0
+249	49	0
+250	49	0
+251	49	0
+252	49	0
+253	49	0
+254	49	0
+255	49	0
+256	49	0
+257	49	0
+258	49	0
+259	49	0
+260	49	0
+261	49	0
+262	49	0
+263	49	0
+264	49	0
+265	49	0
+266	49	0
+267	49	0
+268	49	0
+269	49	0
+270	49	0
+271	49	0
+272	49	0
+273	49	0
+274	49	0
+275	49	0
+276	49	0
+277	49	0
+278	49	0
+279	49	0
+280	49	0
+281	49	0
+282	49	0
+283	49	0
+284	49	0
+285	49	0
+286	49	0
+287	49	0
+288	49	0
+289	49	0
+290	49	0
+291	49	0
+292	49	0
+293	49	0
+294	49	0
+295	49	0
+296	49	0
+297	49	0
+298	49	0
+299	49	0
+300	49	0
+301	49	0
+302	49	0
+303	49	0
+304	49	0
+305	49	0
+306	49	0
+307	49	0
+308	49	0
+309	49	0
+310	49	0
+311	49	0
+312	49	0
+313	49	0
+314	49	0
+315	49	0
+316	49	0
+317	49	0
+318	49	0
+319	49	0
+320	49	0
+321	49	0
+322	49	0
+323	49	0
+324	49	0
+325	49	0
+326	49	0
+327	49	0
+328	49	0
+329	49	0
+330	49	0
+331	49	0
+332	49	0
+333	49	0
+334	49	0
+335	49	0
+336	49	0
+337	49	0
+338	49	0
+339	49	0
+340	49	0
+341	49	0
+342	49	0
+343	49	0
+344	49	0
+345	49	0
+346	49	0
+347	49	0
+348	49	0
+349	49	0
+350	49	0
+351	49	0
+352	49	0
+353	49	0
+354	49	0
+355	49	0
+356	49	0
+357	49	0
+358	49	0
+359	49	0
+360	49	0
+0	49.5	0
+1	49.5	0
+2	49.5	0
+3	49.5	0
+4	49.5	0
+5	49.5	0
+6	49.5	0
+7	49.5	0
+8	49.5	0
+9	49.5	0
+10	49.5	0
+11	49.5	0
+12	49.5	0
+13	49.5	0
+14	49.5	0
+15	49.5	0
+16	49.5	0
+17	49.5	0
+18	49.5	0
+19	49.5	0
+20	49.5	0
+21	49.5	0
+22	49.5	0
+23	49.5	0
+24	49.5	0
+25	49.5	0
+26	49.5	0
+27	49.5	0
+28	49.5	0
+29	49.5	0
+30	49.5	0
+31	49.5	0
+32	49.5	0
+33	49.5	0
+34	49.5	0
+35	49.5	0
+36	49.5	0
+37	49.5	0
+38	49.5	0
+39	49.5	0
+40	49.5	0
+41	49.5	0
+42	49.5	0
+43	49.5	0
+44	49.5	0
+45	49.5	0
+46	49.5	0
+47	49.5	0
+48	49.5	0
+49	49.5	0
+50	49.5	0
+51	49.5	0
+52	49.5	0
+53	49.5	0
+54	49.5	0
+55	49.5	0
+56	49.5	0
+57	49.5	0
+58	49.5	0
+59	49.5	0
+60	49.5	0
+61	49.5	0
+62	49.5	0
+63	49.5	0
+64	49.5	0
+65	49.5	0
+66	49.5	0
+67	49.5	0
+68	49.5	0
+69	49.5	0
+70	49.5	0
+71	49.5	0
+72	49.5	0
+73	49.5	0
+74	49.5	0
+75	49.5	0
+76	49.5	0
+77	49.5	0
+78	49.5	0
+79	49.5	0
+80	49.5	0
+81	49.5	0
+82	49.5	0
+83	49.5	0
+84	49.5	0
+85	49.5	0
+86	49.5	0
+87	49.5	0
+88	49.5	0
+89	49.5	0
+90	49.5	0
+91	49.5	0
+92	49.5	0
+93	49.5	0
+94	49.5	0
+95	49.5	0
+96	49.5	0
+97	49.5	0
+98	49.5	0
+99	49.5	0
+100	49.5	0
+101	49.5	0
+102	49.5	0
+103	49.5	0
+104	49.5	0
+105	49.5	0
+106	49.5	0
+107	49.5	0
+108	49.5	0
+109	49.5	0
+110	49.5	0
+111	49.5	0
+112	49.5	0
+113	49.5	0
+114	49.5	0
+115	49.5	0
+116	49.5	0
+117	49.5	0
+118	49.5	0
+119	49.5	0
+120	49.5	0
+121	49.5	0
+122	49.5	0
+123	49.5	0
+124	49.5	0
+125	49.5	0
+126	49.5	0
+127	49.5	0
+128	49.5	0
+129	49.5	0
+130	49.5	0
+131	49.5	0
+132	49.5	0
+133	49.5	0
+134	49.5	0
+135	49.5	0
+136	49.5	0
+137	49.5	0
+138	49.5	0
+139	49.5	0
+140	49.5	0
+141	49.5	0
+142	49.5	0
+143	49.5	0
+144	49.5	0
+145	49.5	0
+146	49.5	0
+147	49.5	0
+148	49.5	0
+149	49.5	0
+150	49.5	0
+151	49.5	0
+152	49.5	0
+153	49.5	0
+154	49.5	0
+155	49.5	0
+156	49.5	0
+157	49.5	0
+158	49.5	0
+159	49.5	0
+160	49.5	0
+161	49.5	0
+162	49.5	0
+163	49.5	0
+164	49.5	0
+165	49.5	0
+166	49.5	0
+167	49.5	0
+168	49.5	0
+169	49.5	0
+170	49.5	0
+171	49.5	0
+172	49.5	0
+173	49.5	0
+174	49.5	0
+175	49.5	0
+176	49.5	0
+177	49.5	0
+178	49.5	0
+179	49.5	0
+180	49.5	0
+181	49.5	0
+182	49.5	0
+183	49.5	0
+184	49.5	0
+185	49.5	0
+186	49.5	0
+187	49.5	0
+188	49.5	0
+189	49.5	0
+190	49.5	0
+191	49.5	0
+192	49.5	0
+193	49.5	0
+194	49.5	0
+195	49.5	0
+196	49.5	0
+197	49.5	0
+198	49.5	0
+199	49.5	0
+200	49.5	0
+201	49.5	0
+202	49.5	0
+203	49.5	0
+204	49.5	0
+205	49.5	0
+206	49.5	0
+207	49.5	0
+208	49.5	0
+209	49.5	0
+210	49.5	0
+211	49.5	0
+212	49.5	0
+213	49.5	0
+214	49.5	0
+215	49.5	0
+216	49.5	0
+217	49.5	0
+218	49.5	0
+219	49.5	0
+220	49.5	0
+221	49.5	0
+222	49.5	0
+223	49.5	0
+224	49.5	0
+225	49.5	0
+226	49.5	0
+227	49.5	0
+228	49.5	0
+229	49.5	0
+230	49.5	0
+231	49.5	0
+232	49.5	0
+233	49.5	0
+234	49.5	0
+235	49.5	0
+236	49.5	0
+237	49.5	0
+238	49.5	0
+239	49.5	0
+240	49.5	0
+241	49.5	0
+242	49.5	0
+243	49.5	0
+244	49.5	0
+245	49.5	0
+246	49.5	0
+247	49.5	0
+248	49.5	0
+249	49.5	0
+250	49.5	0
+251	49.5	0
+252	49.5	0
+253	49.5	0
+254	49.5	0
+255	49.5	0
+256	49.5	0
+257	49.5	0
+258	49.5	0
+259	49.5	0
+260	49.5	0
+261	49.5	0
+262	49.5	0
+263	49.5	0
+264	49.5	0
+265	49.5	0
+266	49.5	0
+267	49.5	0
+268	49.5	0
+269	49.5	0
+270	49.5	0
+271	49.5	0
+272	49.5	0
+273	49.5	0
+274	49.5	0
+275	49.5	0
+276	49.5	0
+277	49.5	0
+278	49.5	0
+279	49.5	0
+280	49.5	0
+281	49.5	0
+282	49.5	0
+283	49.5	0
+284	49.5	0
+285	49.5	0
+286	49.5	0
+287	49.5	0
+288	49.5	0
+289	49.5	0
+290	49.5	0
+291	49.5	0
+292	49.5	0
+293	49.5	0
+294	49.5	0
+295	49.5	0
+296	49.5	0
+297	49.5	0
+298	49.5	0
+299	49.5	0
+300	49.5	0
+301	49.5	0
+302	49.5	0
+303	49.5	0
+304	49.5	0
+305	49.5	0
+306	49.5	0
+307	49.5	0
+308	49.5	0
+309	49.5	0
+310	49.5	0
+311	49.5	0
+312	49.5	0
+313	49.5	0
+314	49.5	0
+315	49.5	0
+316	49.5	0
+317	49.5	0
+318	49.5	0
+319	49.5	0
+320	49.5	0
+321	49.5	0
+322	49.5	0
+323	49.5	0
+324	49.5	0
+325	49.5	0
+326	49.5	0
+327	49.5	0
+328	49.5	0
+329	49.5	0
+330	49.5	0
+331	49.5	0
+332	49.5	0
+333	49.5	0
+334	49.5	0
+335	49.5	0
+336	49.5	0
+337	49.5	0
+338	49.5	0
+339	49.5	0
+340	49.5	0
+341	49.5	0
+342	49.5	0
+343	49.5	0
+344	49.5	0
+345	49.5	0
+346	49.5	0
+347	49.5	0
+348	49.5	0
+349	49.5	0
+350	49.5	0
+351	49.5	0
+352	49.5	0
+353	49.5	0
+354	49.5	0
+355	49.5	0
+356	49.5	0
+357	49.5	0
+358	49.5	0
+359	49.5	0
+360	49.5	0
+0	50	0
+1	50	0
+2	50	0
+3	50	0
+4	50	0
+5	50	0
+6	50	0
+7	50	0
+8	50	0
+9	50	0
+10	50	0
+11	50	0
+12	50	0
+13	50	0
+14	50	0
+15	50	0
+16	50	0
+17	50	0
+18	50	0
+19	50	0
+20	50	0
+21	50	0
+22	50	0
+23	50	0
+24	50	0
+25	50	0
+26	50	0
+27	50	0
+28	50	0
+29	50	0
+30	50	0
+31	50	0
+32	50	0
+33	50	0
+34	50	0
+35	50	0
+36	50	0
+37	50	0
+38	50	0
+39	50	0
+40	50	0
+41	50	0
+42	50	0
+43	50	0
+44	50	0
+45	50	0
+46	50	0
+47	50	0
+48	50	0
+49	50	0
+50	50	0
+51	50	0
+52	50	0
+53	50	0
+54	50	0
+55	50	0
+56	50	0
+57	50	0
+58	50	0
+59	50	0
+60	50	0
+61	50	0
+62	50	0
+63	50	0
+64	50	0
+65	50	0
+66	50	0
+67	50	0
+68	50	0
+69	50	0
+70	50	0
+71	50	0
+72	50	0
+73	50	0
+74	50	0
+75	50	0
+76	50	0
+77	50	0
+78	50	0
+79	50	0
+80	50	0
+81	50	0
+82	50	0
+83	50	0
+84	50	0
+85	50	0
+86	50	0
+87	50	0
+88	50	0
+89	50	0
+90	50	0
+91	50	0
+92	50	0
+93	50	0
+94	50	0
+95	50	0
+96	50	0
+97	50	0
+98	50	0
+99	50	0
+100	50	0
+101	50	0
+102	50	0
+103	50	0
+104	50	0
+105	50	0
+106	50	0
+107	50	0
+108	50	0
+109	50	0
+110	50	0
+111	50	0
+112	50	0
+113	50	0
+114	50	0
+115	50	0
+116	50	0
+117	50	0
+118	50	0
+119	50	0
+120	50	0
+121	50	0
+122	50	0
+123	50	0
+124	50	0
+125	50	0
+126	50	0
+127	50	0
+128	50	0
+129	50	0
+130	50	0
+131	50	0
+132	50	0
+133	50	0
+134	50	0
+135	50	0
+136	50	0
+137	50	0
+138	50	0
+139	50	0
+140	50	0
+141	50	0
+142	50	0
+143	50	0
+144	50	0
+145	50	0
+146	50	0
+147	50	0
+148	50	0
+149	50	0
+150	50	0
+151	50	0
+152	50	0
+153	50	0
+154	50	0
+155	50	0
+156	50	0
+157	50	0
+158	50	0
+159	50	0
+160	50	0
+161	50	0
+162	50	0
+163	50	0
+164	50	0
+165	50	0
+166	50	0
+167	50	0
+168	50	0
+169	50	0
+170	50	0
+171	50	0
+172	50	0
+173	50	0
+174	50	0
+175	50	0
+176	50	0
+177	50	0
+178	50	0
+179	50	0
+180	50	0
+181	50	0
+182	50	0
+183	50	0
+184	50	0
+185	50	0
+186	50	0
+187	50	0
+188	50	0
+189	50	0
+190	50	0
+191	50	0
+192	50	0
+193	50	0
+194	50	0
+195	50	0
+196	50	0
+197	50	0
+198	50	0
+199	50	0
+200	50	0
+201	50	0
+202	50	0
+203	50	0
+204	50	0
+205	50	0
+206	50	0
+207	50	0
+208	50	0
+209	50	0
+210	50	0
+211	50	0
+212	50	0
+213	50	0
+214	50	0
+215	50	0
+216	50	0
+217	50	0
+218	50	0
+219	50	0
+220	50	0
+221	50	0
+222	50	0
+223	50	0
+224	50	0
+225	50	0
+226	50	0
+227	50	0
+228	50	0
+229	50	0
+230	50	0
+231	50	0
+232	50	0
+233	50	0
+234	50	0
+235	50	0
+236	50	0
+237	50	0
+238	50	0
+239	50	0
+240	50	0
+241	50	0
+242	50	0
+243	50	0
+244	50	0
+245	50	0
+246	50	0
+247	50	0
+248	50	0
+249	50	0
+250	50	0
+251	50	0
+252	50	0
+253	50	0
+254	50	0
+255	50	0
+256	50	0
+257	50	0
+258	50	0
+259	50	0
+260	50	0
+261	50	0
+262	50	0
+263	50	0
+264	50	0
+265	50	0
+266	50	0
+267	50	0
+268	50	0
+269	50	0
+270	50	0
+271	50	0
+272	50	0
+273	50	0
+274	50	0
+275	50	0
+276	50	0
+277	50	0
+278	50	0
+279	50	0
+280	50	0
+281	50	0
+282	50	0
+283	50	0
+284	50	0
+285	50	0
+286	50	0
+287	50	0
+288	50	0
+289	50	0
+290	50	0
+291	50	0
+292	50	0
+293	50	0
+294	50	0
+295	50	0
+296	50	0
+297	50	0
+298	50	0
+299	50	0
+300	50	0
+301	50	0
+302	50	0
+303	50	0
+304	50	0
+305	50	0
+306	50	0
+307	50	0
+308	50	0
+309	50	0
+310	50	0
+311	50	0
+312	50	0
+313	50	0
+314	50	0
+315	50	0
+316	50	0
+317	50	0
+318	50	0
+319	50	0
+320	50	0
+321	50	0
+322	50	0
+323	50	0
+324	50	0
+325	50	0
+326	50	0
+327	50	0
+328	50	0
+329	50	0
+330	50	0
+331	50	0
+332	50	0
+333	50	0
+334	50	0
+335	50	0
+336	50	0
+337	50	0
+338	50	0
+339	50	0
+340	50	0
+341	50	0
+342	50	0
+343	50	0
+344	50	0
+345	50	0
+346	50	0
+347	50	0
+348	50	0
+349	50	0
+350	50	0
+351	50	0
+352	50	0
+353	50	0
+354	50	0
+355	50	0
+356	50	0
+357	50	0
+358	50	0
+359	50	0
+360	50	0
+0	50.5	0
+1	50.5	0
+2	50.5	0
+3	50.5	0
+4	50.5	0
+5	50.5	0
+6	50.5	0
+7	50.5	0
+8	50.5	0
+9	50.5	0
+10	50.5	0
+11	50.5	0
+12	50.5	0
+13	50.5	0
+14	50.5	0
+15	50.5	0
+16	50.5	0
+17	50.5	0
+18	50.5	0
+19	50.5	0
+20	50.5	0
+21	50.5	0
+22	50.5	0
+23	50.5	0
+24	50.5	0
+25	50.5	0
+26	50.5	0
+27	50.5	0
+28	50.5	0
+29	50.5	0
+30	50.5	0
+31	50.5	0
+32	50.5	0
+33	50.5	0
+34	50.5	0
+35	50.5	0
+36	50.5	0
+37	50.5	0
+38	50.5	0
+39	50.5	0
+40	50.5	0
+41	50.5	0
+42	50.5	0
+43	50.5	0
+44	50.5	0
+45	50.5	0
+46	50.5	0
+47	50.5	0
+48	50.5	0
+49	50.5	0
+50	50.5	0
+51	50.5	0
+52	50.5	0
+53	50.5	0
+54	50.5	0
+55	50.5	0
+56	50.5	0
+57	50.5	0
+58	50.5	0
+59	50.5	0
+60	50.5	0
+61	50.5	0
+62	50.5	0
+63	50.5	0
+64	50.5	0
+65	50.5	0
+66	50.5	0
+67	50.5	0
+68	50.5	0
+69	50.5	0
+70	50.5	0
+71	50.5	0
+72	50.5	0
+73	50.5	0
+74	50.5	0
+75	50.5	0
+76	50.5	0
+77	50.5	0
+78	50.5	0
+79	50.5	0
+80	50.5	0
+81	50.5	0
+82	50.5	0
+83	50.5	0
+84	50.5	0
+85	50.5	0
+86	50.5	0
+87	50.5	0
+88	50.5	0
+89	50.5	0
+90	50.5	0
+91	50.5	0
+92	50.5	0
+93	50.5	0
+94	50.5	0
+95	50.5	0
+96	50.5	0
+97	50.5	0
+98	50.5	0
+99	50.5	0
+100	50.5	0
+101	50.5	0
+102	50.5	0
+103	50.5	0
+104	50.5	0
+105	50.5	0
+106	50.5	0
+107	50.5	0
+108	50.5	0
+109	50.5	0
+110	50.5	0
+111	50.5	0
+112	50.5	0
+113	50.5	0
+114	50.5	0
+115	50.5	0
+116	50.5	0
+117	50.5	0
+118	50.5	0
+119	50.5	0
+120	50.5	0
+121	50.5	0
+122	50.5	0
+123	50.5	0
+124	50.5	0
+125	50.5	0
+126	50.5	0
+127	50.5	0
+128	50.5	0
+129	50.5	0
+130	50.5	0
+131	50.5	0
+132	50.5	0
+133	50.5	0
+134	50.5	0
+135	50.5	0
+136	50.5	0
+137	50.5	0
+138	50.5	0
+139	50.5	0
+140	50.5	0
+141	50.5	0
+142	50.5	0
+143	50.5	0
+144	50.5	0
+145	50.5	0
+146	50.5	0
+147	50.5	0
+148	50.5	0
+149	50.5	0
+150	50.5	0
+151	50.5	0
+152	50.5	0
+153	50.5	0
+154	50.5	0
+155	50.5	0
+156	50.5	0
+157	50.5	0
+158	50.5	0
+159	50.5	0
+160	50.5	0
+161	50.5	0
+162	50.5	0
+163	50.5	0
+164	50.5	0
+165	50.5	0
+166	50.5	0
+167	50.5	0
+168	50.5	0
+169	50.5	0
+170	50.5	0
+171	50.5	0
+172	50.5	0
+173	50.5	0
+174	50.5	0
+175	50.5	0
+176	50.5	0
+177	50.5	0
+178	50.5	0
+179	50.5	0
+180	50.5	0
+181	50.5	0
+182	50.5	0
+183	50.5	0
+184	50.5	0
+185	50.5	0
+186	50.5	0
+187	50.5	0
+188	50.5	0
+189	50.5	0
+190	50.5	0
+191	50.5	0
+192	50.5	0
+193	50.5	0
+194	50.5	0
+195	50.5	0
+196	50.5	0
+197	50.5	0
+198	50.5	0
+199	50.5	0
+200	50.5	0
+201	50.5	0
+202	50.5	0
+203	50.5	0
+204	50.5	0
+205	50.5	0
+206	50.5	0
+207	50.5	0
+208	50.5	0
+209	50.5	0
+210	50.5	0
+211	50.5	0
+212	50.5	0
+213	50.5	0
+214	50.5	0
+215	50.5	0
+216	50.5	0
+217	50.5	0
+218	50.5	0
+219	50.5	0
+220	50.5	0
+221	50.5	0
+222	50.5	0
+223	50.5	0
+224	50.5	0
+225	50.5	0
+226	50.5	0
+227	50.5	0
+228	50.5	0
+229	50.5	0
+230	50.5	0
+231	50.5	0
+232	50.5	0
+233	50.5	0
+234	50.5	0
+235	50.5	0
+236	50.5	0
+237	50.5	0
+238	50.5	0
+239	50.5	0
+240	50.5	0
+241	50.5	0
+242	50.5	0
+243	50.5	0
+244	50.5	0
+245	50.5	0
+246	50.5	0
+247	50.5	0
+248	50.5	0
+249	50.5	0
+250	50.5	0
+251	50.5	0
+252	50.5	0
+253	50.5	0
+254	50.5	0
+255	50.5	0
+256	50.5	0
+257	50.5	0
+258	50.5	0
+259	50.5	0
+260	50.5	0
+261	50.5	0
+262	50.5	0
+263	50.5	0
+264	50.5	0
+265	50.5	0
+266	50.5	0
+267	50.5	0
+268	50.5	0
+269	50.5	0
+270	50.5	0
+271	50.5	0
+272	50.5	0
+273	50.5	0
+274	50.5	0
+275	50.5	0
+276	50.5	0
+277	50.5	0
+278	50.5	0
+279	50.5	0
+280	50.5	0
+281	50.5	0
+282	50.5	0
+283	50.5	0
+284	50.5	0
+285	50.5	0
+286	50.5	0
+287	50.5	0
+288	50.5	0
+289	50.5	0
+290	50.5	0
+291	50.5	0
+292	50.5	0
+293	50.5	0
+294	50.5	0
+295	50.5	0
+296	50.5	0
+297	50.5	0
+298	50.5	0
+299	50.5	0
+300	50.5	0
+301	50.5	0
+302	50.5	0
+303	50.5	0
+304	50.5	0
+305	50.5	0
+306	50.5	0
+307	50.5	0
+308	50.5	0
+309	50.5	0
+310	50.5	0
+311	50.5	0
+312	50.5	0
+313	50.5	0
+314	50.5	0
+315	50.5	0
+316	50.5	0
+317	50.5	0
+318	50.5	0
+319	50.5	0
+320	50.5	0
+321	50.5	0
+322	50.5	0
+323	50.5	0
+324	50.5	0
+325	50.5	0
+326	50.5	0
+327	50.5	0
+328	50.5	0
+329	50.5	0
+330	50.5	0
+331	50.5	0
+332	50.5	0
+333	50.5	0
+334	50.5	0
+335	50.5	0
+336	50.5	0
+337	50.5	0
+338	50.5	0
+339	50.5	0
+340	50.5	0
+341	50.5	0
+342	50.5	0
+343	50.5	0
+344	50.5	0
+345	50.5	0
+346	50.5	0
+347	50.5	0
+348	50.5	0
+349	50.5	0
+350	50.5	0
+351	50.5	0
+352	50.5	0
+353	50.5	0
+354	50.5	0
+355	50.5	0
+356	50.5	0
+357	50.5	0
+358	50.5	0
+359	50.5	0
+360	50.5	0
+0	51	0
+1	51	0
+2	51	0
+3	51	0
+4	51	0
+5	51	0
+6	51	0
+7	51	0
+8	51	0
+9	51	0
+10	51	0
+11	51	0
+12	51	0
+13	51	0
+14	51	0
+15	51	0
+16	51	0
+17	51	0
+18	51	0
+19	51	0
+20	51	0
+21	51	0
+22	51	0
+23	51	0
+24	51	0
+25	51	0
+26	51	0
+27	51	0
+28	51	0
+29	51	0
+30	51	0
+31	51	0
+32	51	0
+33	51	0
+34	51	0
+35	51	0
+36	51	0
+37	51	0
+38	51	0
+39	51	0
+40	51	0
+41	51	0
+42	51	0
+43	51	0
+44	51	0
+45	51	0
+46	51	0
+47	51	0
+48	51	0
+49	51	0
+50	51	0
+51	51	0
+52	51	0
+53	51	0
+54	51	0
+55	51	0
+56	51	0
+57	51	0
+58	51	0
+59	51	0
+60	51	0
+61	51	0
+62	51	0
+63	51	0
+64	51	0
+65	51	0
+66	51	0
+67	51	0
+68	51	0
+69	51	0
+70	51	0
+71	51	0
+72	51	0
+73	51	0
+74	51	0
+75	51	0
+76	51	0
+77	51	0
+78	51	0
+79	51	0
+80	51	0
+81	51	0
+82	51	0
+83	51	0
+84	51	0
+85	51	0
+86	51	0
+87	51	0
+88	51	0
+89	51	0
+90	51	0
+91	51	0
+92	51	0
+93	51	0
+94	51	0
+95	51	0
+96	51	0
+97	51	0
+98	51	0
+99	51	0
+100	51	0
+101	51	0
+102	51	0
+103	51	0
+104	51	0
+105	51	0
+106	51	0
+107	51	0
+108	51	0
+109	51	0
+110	51	0
+111	51	0
+112	51	0
+113	51	0
+114	51	0
+115	51	0
+116	51	0
+117	51	0
+118	51	0
+119	51	0
+120	51	0
+121	51	0
+122	51	0
+123	51	0
+124	51	0
+125	51	0
+126	51	0
+127	51	0
+128	51	0
+129	51	0
+130	51	0
+131	51	0
+132	51	0
+133	51	0
+134	51	0
+135	51	0
+136	51	0
+137	51	0
+138	51	0
+139	51	0
+140	51	0
+141	51	0
+142	51	0
+143	51	0
+144	51	0
+145	51	0
+146	51	0
+147	51	0
+148	51	0
+149	51	0
+150	51	0
+151	51	0
+152	51	0
+153	51	0
+154	51	0
+155	51	0
+156	51	0
+157	51	0
+158	51	0
+159	51	0
+160	51	0
+161	51	0
+162	51	0
+163	51	0
+164	51	0
+165	51	0
+166	51	0
+167	51	0
+168	51	0
+169	51	0
+170	51	0
+171	51	0
+172	51	0
+173	51	0
+174	51	0
+175	51	0
+176	51	0
+177	51	0
+178	51	0
+179	51	0
+180	51	0
+181	51	0
+182	51	0
+183	51	0
+184	51	0
+185	51	0
+186	51	0
+187	51	0
+188	51	0
+189	51	0
+190	51	0
+191	51	0
+192	51	0
+193	51	0
+194	51	0
+195	51	0
+196	51	0
+197	51	0
+198	51	0
+199	51	0
+200	51	0
+201	51	0
+202	51	0
+203	51	0
+204	51	0
+205	51	0
+206	51	0
+207	51	0
+208	51	0
+209	51	0
+210	51	0
+211	51	0
+212	51	0
+213	51	0
+214	51	0
+215	51	0
+216	51	0
+217	51	0
+218	51	0
+219	51	0
+220	51	0
+221	51	0
+222	51	0
+223	51	0
+224	51	0
+225	51	0
+226	51	0
+227	51	0
+228	51	0
+229	51	0
+230	51	0
+231	51	0
+232	51	0
+233	51	0
+234	51	0
+235	51	0
+236	51	0
+237	51	0
+238	51	0
+239	51	0
+240	51	0
+241	51	0
+242	51	0
+243	51	0
+244	51	0
+245	51	0
+246	51	0
+247	51	0
+248	51	0
+249	51	0
+250	51	0
+251	51	0
+252	51	0
+253	51	0
+254	51	0
+255	51	0
+256	51	0
+257	51	0
+258	51	0
+259	51	0
+260	51	0
+261	51	0
+262	51	0
+263	51	0
+264	51	0
+265	51	0
+266	51	0
+267	51	0
+268	51	0
+269	51	0
+270	51	0
+271	51	0
+272	51	0
+273	51	0
+274	51	0
+275	51	0
+276	51	0
+277	51	0
+278	51	0
+279	51	0
+280	51	0
+281	51	0
+282	51	0
+283	51	0
+284	51	0
+285	51	0
+286	51	0
+287	51	0
+288	51	0
+289	51	0
+290	51	0
+291	51	0
+292	51	0
+293	51	0
+294	51	0
+295	51	0
+296	51	0
+297	51	0
+298	51	0
+299	51	0
+300	51	0
+301	51	0
+302	51	0
+303	51	0
+304	51	0
+305	51	0
+306	51	0
+307	51	0
+308	51	0
+309	51	0
+310	51	0
+311	51	0
+312	51	0
+313	51	0
+314	51	0
+315	51	0
+316	51	0
+317	51	0
+318	51	0
+319	51	0
+320	51	0
+321	51	0
+322	51	0
+323	51	0
+324	51	0
+325	51	0
+326	51	0
+327	51	0
+328	51	0
+329	51	0
+330	51	0
+331	51	0
+332	51	0
+333	51	0
+334	51	0
+335	51	0
+336	51	0
+337	51	0
+338	51	0
+339	51	0
+340	51	0
+341	51	0
+342	51	0
+343	51	0
+344	51	0
+345	51	0
+346	51	0
+347	51	0
+348	51	0
+349	51	0
+350	51	0
+351	51	0
+352	51	0
+353	51	0
+354	51	0
+355	51	0
+356	51	0
+357	51	0
+358	51	0
+359	51	0
+360	51	0
+0	51.5	0
+1	51.5	0
+2	51.5	0
+3	51.5	0
+4	51.5	0
+5	51.5	0
+6	51.5	0
+7	51.5	0
+8	51.5	0
+9	51.5	0
+10	51.5	0
+11	51.5	0
+12	51.5	0
+13	51.5	0
+14	51.5	0
+15	51.5	0
+16	51.5	0
+17	51.5	0
+18	51.5	0
+19	51.5	0
+20	51.5	0
+21	51.5	0
+22	51.5	0
+23	51.5	0
+24	51.5	0
+25	51.5	0
+26	51.5	0
+27	51.5	0
+28	51.5	0
+29	51.5	0
+30	51.5	0
+31	51.5	0
+32	51.5	0
+33	51.5	0
+34	51.5	0
+35	51.5	0
+36	51.5	0
+37	51.5	0
+38	51.5	0
+39	51.5	0
+40	51.5	0
+41	51.5	0
+42	51.5	0
+43	51.5	0
+44	51.5	0
+45	51.5	0
+46	51.5	0
+47	51.5	0
+48	51.5	0
+49	51.5	0
+50	51.5	0
+51	51.5	0
+52	51.5	0
+53	51.5	0
+54	51.5	0
+55	51.5	0
+56	51.5	0
+57	51.5	0
+58	51.5	0
+59	51.5	0
+60	51.5	0
+61	51.5	0
+62	51.5	0
+63	51.5	0
+64	51.5	0
+65	51.5	0
+66	51.5	0
+67	51.5	0
+68	51.5	0
+69	51.5	0
+70	51.5	0
+71	51.5	0
+72	51.5	0
+73	51.5	0
+74	51.5	0
+75	51.5	0
+76	51.5	0
+77	51.5	0
+78	51.5	0
+79	51.5	0
+80	51.5	0
+81	51.5	0
+82	51.5	0
+83	51.5	0
+84	51.5	0
+85	51.5	0
+86	51.5	0
+87	51.5	0
+88	51.5	0
+89	51.5	0
+90	51.5	0
+91	51.5	0
+92	51.5	0
+93	51.5	0
+94	51.5	0
+95	51.5	0
+96	51.5	0
+97	51.5	0
+98	51.5	0
+99	51.5	0
+100	51.5	0
+101	51.5	0
+102	51.5	0
+103	51.5	0
+104	51.5	0
+105	51.5	0
+106	51.5	0
+107	51.5	0
+108	51.5	0
+109	51.5	0
+110	51.5	0
+111	51.5	0
+112	51.5	0
+113	51.5	0
+114	51.5	0
+115	51.5	0
+116	51.5	0
+117	51.5	0
+118	51.5	0
+119	51.5	0
+120	51.5	0
+121	51.5	0
+122	51.5	0
+123	51.5	0
+124	51.5	0
+125	51.5	0
+126	51.5	0
+127	51.5	0
+128	51.5	0
+129	51.5	0
+130	51.5	0
+131	51.5	0
+132	51.5	0
+133	51.5	0
+134	51.5	0
+135	51.5	0
+136	51.5	0
+137	51.5	0
+138	51.5	0
+139	51.5	0
+140	51.5	0
+141	51.5	0
+142	51.5	0
+143	51.5	0
+144	51.5	0
+145	51.5	0
+146	51.5	0
+147	51.5	0
+148	51.5	0
+149	51.5	0
+150	51.5	0
+151	51.5	0
+152	51.5	0
+153	51.5	0
+154	51.5	0
+155	51.5	0
+156	51.5	0
+157	51.5	0
+158	51.5	0
+159	51.5	0
+160	51.5	0
+161	51.5	0
+162	51.5	0
+163	51.5	0
+164	51.5	0
+165	51.5	0
+166	51.5	0
+167	51.5	0
+168	51.5	0
+169	51.5	0
+170	51.5	0
+171	51.5	0
+172	51.5	0
+173	51.5	0
+174	51.5	0
+175	51.5	0
+176	51.5	0
+177	51.5	0
+178	51.5	0
+179	51.5	0
+180	51.5	0
+181	51.5	0
+182	51.5	0
+183	51.5	0
+184	51.5	0
+185	51.5	0
+186	51.5	0
+187	51.5	0
+188	51.5	0
+189	51.5	0
+190	51.5	0
+191	51.5	0
+192	51.5	0
+193	51.5	0
+194	51.5	0
+195	51.5	0
+196	51.5	0
+197	51.5	0
+198	51.5	0
+199	51.5	0
+200	51.5	0
+201	51.5	0
+202	51.5	0
+203	51.5	0
+204	51.5	0
+205	51.5	0
+206	51.5	0
+207	51.5	0
+208	51.5	0
+209	51.5	0
+210	51.5	0
+211	51.5	0
+212	51.5	0
+213	51.5	0
+214	51.5	0
+215	51.5	0
+216	51.5	0
+217	51.5	0
+218	51.5	0
+219	51.5	0
+220	51.5	0
+221	51.5	0
+222	51.5	0
+223	51.5	0
+224	51.5	0
+225	51.5	0
+226	51.5	0
+227	51.5	0
+228	51.5	0
+229	51.5	0
+230	51.5	0
+231	51.5	0
+232	51.5	0
+233	51.5	0
+234	51.5	0
+235	51.5	0
+236	51.5	0
+237	51.5	0
+238	51.5	0
+239	51.5	0
+240	51.5	0
+241	51.5	0
+242	51.5	0
+243	51.5	0
+244	51.5	0
+245	51.5	0
+246	51.5	0
+247	51.5	0
+248	51.5	0
+249	51.5	0
+250	51.5	0
+251	51.5	0
+252	51.5	0
+253	51.5	0
+254	51.5	0
+255	51.5	0
+256	51.5	0
+257	51.5	0
+258	51.5	0
+259	51.5	0
+260	51.5	0
+261	51.5	0
+262	51.5	0
+263	51.5	0
+264	51.5	0
+265	51.5	0
+266	51.5	0
+267	51.5	0
+268	51.5	0
+269	51.5	0
+270	51.5	0
+271	51.5	0
+272	51.5	0
+273	51.5	0
+274	51.5	0
+275	51.5	0
+276	51.5	0
+277	51.5	0
+278	51.5	0
+279	51.5	0
+280	51.5	0
+281	51.5	0
+282	51.5	0
+283	51.5	0
+284	51.5	0
+285	51.5	0
+286	51.5	0
+287	51.5	0
+288	51.5	0
+289	51.5	0
+290	51.5	0
+291	51.5	0
+292	51.5	0
+293	51.5	0
+294	51.5	0
+295	51.5	0
+296	51.5	0
+297	51.5	0
+298	51.5	0
+299	51.5	0
+300	51.5	0
+301	51.5	0
+302	51.5	0
+303	51.5	0
+304	51.5	0
+305	51.5	0
+306	51.5	0
+307	51.5	0
+308	51.5	0
+309	51.5	0
+310	51.5	0
+311	51.5	0
+312	51.5	0
+313	51.5	0
+314	51.5	0
+315	51.5	0
+316	51.5	0
+317	51.5	0
+318	51.5	0
+319	51.5	0
+320	51.5	0
+321	51.5	0
+322	51.5	0
+323	51.5	0
+324	51.5	0
+325	51.5	0
+326	51.5	0
+327	51.5	0
+328	51.5	0
+329	51.5	0
+330	51.5	0
+331	51.5	0
+332	51.5	0
+333	51.5	0
+334	51.5	0
+335	51.5	0
+336	51.5	0
+337	51.5	0
+338	51.5	0
+339	51.5	0
+340	51.5	0
+341	51.5	0
+342	51.5	0
+343	51.5	0
+344	51.5	0
+345	51.5	0
+346	51.5	0
+347	51.5	0
+348	51.5	0
+349	51.5	0
+350	51.5	0
+351	51.5	0
+352	51.5	0
+353	51.5	0
+354	51.5	0
+355	51.5	0
+356	51.5	0
+357	51.5	0
+358	51.5	0
+359	51.5	0
+360	51.5	0
+0	52	0
+1	52	0
+2	52	0
+3	52	0
+4	52	0
+5	52	0
+6	52	0
+7	52	0
+8	52	0
+9	52	0
+10	52	0
+11	52	0
+12	52	0
+13	52	0
+14	52	0
+15	52	0
+16	52	0
+17	52	0
+18	52	0
+19	52	0
+20	52	0
+21	52	0
+22	52	0
+23	52	0
+24	52	0
+25	52	0
+26	52	0
+27	52	0
+28	52	0
+29	52	0
+30	52	0
+31	52	0
+32	52	0
+33	52	0
+34	52	0
+35	52	0
+36	52	0
+37	52	0
+38	52	0
+39	52	0
+40	52	0
+41	52	0
+42	52	0
+43	52	0
+44	52	0
+45	52	0
+46	52	0
+47	52	0
+48	52	0
+49	52	0
+50	52	0
+51	52	0
+52	52	0
+53	52	0
+54	52	0
+55	52	0
+56	52	0
+57	52	0
+58	52	0
+59	52	0
+60	52	0
+61	52	0
+62	52	0
+63	52	0
+64	52	0
+65	52	0
+66	52	0
+67	52	0
+68	52	0
+69	52	0
+70	52	0
+71	52	0
+72	52	0
+73	52	0
+74	52	0
+75	52	0
+76	52	0
+77	52	0
+78	52	0
+79	52	0
+80	52	0
+81	52	0
+82	52	0
+83	52	0
+84	52	0
+85	52	0
+86	52	0
+87	52	0
+88	52	0
+89	52	0
+90	52	0
+91	52	0
+92	52	0
+93	52	0
+94	52	0
+95	52	0
+96	52	0
+97	52	0
+98	52	0
+99	52	0
+100	52	0
+101	52	0
+102	52	0
+103	52	0
+104	52	0
+105	52	0
+106	52	0
+107	52	0
+108	52	0
+109	52	0
+110	52	0
+111	52	0
+112	52	0
+113	52	0
+114	52	0
+115	52	0
+116	52	0
+117	52	0
+118	52	0
+119	52	0
+120	52	0
+121	52	0
+122	52	0
+123	52	0
+124	52	0
+125	52	0
+126	52	0
+127	52	0
+128	52	0
+129	52	0
+130	52	0
+131	52	0
+132	52	0
+133	52	0
+134	52	0
+135	52	0
+136	52	0
+137	52	0
+138	52	0
+139	52	0
+140	52	0
+141	52	0
+142	52	0
+143	52	0
+144	52	0
+145	52	0
+146	52	0
+147	52	0
+148	52	0
+149	52	0
+150	52	0
+151	52	0
+152	52	0
+153	52	0
+154	52	0
+155	52	0
+156	52	0
+157	52	0
+158	52	0
+159	52	0
+160	52	0
+161	52	0
+162	52	0
+163	52	0
+164	52	0
+165	52	0
+166	52	0
+167	52	0
+168	52	0
+169	52	0
+170	52	0
+171	52	0
+172	52	0
+173	52	0
+174	52	0
+175	52	0
+176	52	0
+177	52	0
+178	52	0
+179	52	0
+180	52	0
+181	52	0
+182	52	0
+183	52	0
+184	52	0
+185	52	0
+186	52	0
+187	52	0
+188	52	0
+189	52	0
+190	52	0
+191	52	0
+192	52	0
+193	52	0
+194	52	0
+195	52	0
+196	52	0
+197	52	0
+198	52	0
+199	52	0
+200	52	0
+201	52	0
+202	52	0
+203	52	0
+204	52	0
+205	52	0
+206	52	0
+207	52	0
+208	52	0
+209	52	0
+210	52	0
+211	52	0
+212	52	0
+213	52	0
+214	52	0
+215	52	0
+216	52	0
+217	52	0
+218	52	0
+219	52	0
+220	52	0
+221	52	0
+222	52	0
+223	52	0
+224	52	0
+225	52	0
+226	52	0
+227	52	0
+228	52	0
+229	52	0
+230	52	0
+231	52	0
+232	52	0
+233	52	0
+234	52	0
+235	52	0
+236	52	0
+237	52	0
+238	52	0
+239	52	0
+240	52	0
+241	52	0
+242	52	0
+243	52	0
+244	52	0
+245	52	0
+246	52	0
+247	52	0
+248	52	0
+249	52	0
+250	52	0
+251	52	0
+252	52	0
+253	52	0
+254	52	0
+255	52	0
+256	52	0
+257	52	0
+258	52	0
+259	52	0
+260	52	0
+261	52	0
+262	52	0
+263	52	0
+264	52	0
+265	52	0
+266	52	0
+267	52	0
+268	52	0
+269	52	0
+270	52	0
+271	52	0
+272	52	0
+273	52	0
+274	52	0
+275	52	0
+276	52	0
+277	52	0
+278	52	0
+279	52	0
+280	52	0
+281	52	0
+282	52	0
+283	52	0
+284	52	0
+285	52	0
+286	52	0
+287	52	0
+288	52	0
+289	52	0
+290	52	0
+291	52	0
+292	52	0
+293	52	0
+294	52	0
+295	52	0
+296	52	0
+297	52	0
+298	52	0
+299	52	0
+300	52	0
+301	52	0
+302	52	0
+303	52	0
+304	52	0
+305	52	0
+306	52	0
+307	52	0
+308	52	0
+309	52	0
+310	52	0
+311	52	0
+312	52	0
+313	52	0
+314	52	0
+315	52	0
+316	52	0
+317	52	0
+318	52	0
+319	52	0
+320	52	0
+321	52	0
+322	52	0
+323	52	0
+324	52	0
+325	52	0
+326	52	0
+327	52	0
+328	52	0
+329	52	0
+330	52	0
+331	52	0
+332	52	0
+333	52	0
+334	52	0
+335	52	0
+336	52	0
+337	52	0
+338	52	0
+339	52	0
+340	52	0
+341	52	0
+342	52	0
+343	52	0
+344	52	0
+345	52	0
+346	52	0
+347	52	0
+348	52	0
+349	52	0
+350	52	0
+351	52	0
+352	52	0
+353	52	0
+354	52	0
+355	52	0
+356	52	0
+357	52	0
+358	52	0
+359	52	0
+360	52	0
+0	52.5	0
+1	52.5	0
+2	52.5	0
+3	52.5	0
+4	52.5	0
+5	52.5	0
+6	52.5	0
+7	52.5	0
+8	52.5	0
+9	52.5	0
+10	52.5	0
+11	52.5	0
+12	52.5	0
+13	52.5	0
+14	52.5	0
+15	52.5	0
+16	52.5	0
+17	52.5	0
+18	52.5	0
+19	52.5	0
+20	52.5	0
+21	52.5	0
+22	52.5	0
+23	52.5	0
+24	52.5	0
+25	52.5	0
+26	52.5	0
+27	52.5	0
+28	52.5	0
+29	52.5	0
+30	52.5	0
+31	52.5	0
+32	52.5	0
+33	52.5	0
+34	52.5	0
+35	52.5	0
+36	52.5	0
+37	52.5	0
+38	52.5	0
+39	52.5	0
+40	52.5	0
+41	52.5	0
+42	52.5	0
+43	52.5	0
+44	52.5	0
+45	52.5	0
+46	52.5	0
+47	52.5	0
+48	52.5	0
+49	52.5	0
+50	52.5	0
+51	52.5	0
+52	52.5	0
+53	52.5	0
+54	52.5	0
+55	52.5	0
+56	52.5	0
+57	52.5	0
+58	52.5	0
+59	52.5	0
+60	52.5	0
+61	52.5	0
+62	52.5	0
+63	52.5	0
+64	52.5	0
+65	52.5	0
+66	52.5	0
+67	52.5	0
+68	52.5	0
+69	52.5	0
+70	52.5	0
+71	52.5	0
+72	52.5	0
+73	52.5	0
+74	52.5	0
+75	52.5	0
+76	52.5	0
+77	52.5	0
+78	52.5	0
+79	52.5	0
+80	52.5	0
+81	52.5	0
+82	52.5	0
+83	52.5	0
+84	52.5	0
+85	52.5	0
+86	52.5	0
+87	52.5	0
+88	52.5	0
+89	52.5	0
+90	52.5	0
+91	52.5	0
+92	52.5	0
+93	52.5	0
+94	52.5	0
+95	52.5	0
+96	52.5	0
+97	52.5	0
+98	52.5	0
+99	52.5	0
+100	52.5	0
+101	52.5	0
+102	52.5	0
+103	52.5	0
+104	52.5	0
+105	52.5	0
+106	52.5	0
+107	52.5	0
+108	52.5	0
+109	52.5	0
+110	52.5	0
+111	52.5	0
+112	52.5	0
+113	52.5	0
+114	52.5	0
+115	52.5	0
+116	52.5	0
+117	52.5	0
+118	52.5	0
+119	52.5	0
+120	52.5	0
+121	52.5	0
+122	52.5	0
+123	52.5	0
+124	52.5	0
+125	52.5	0
+126	52.5	0
+127	52.5	0
+128	52.5	0
+129	52.5	0
+130	52.5	0
+131	52.5	0
+132	52.5	0
+133	52.5	0
+134	52.5	0
+135	52.5	0
+136	52.5	0
+137	52.5	0
+138	52.5	0
+139	52.5	0
+140	52.5	0
+141	52.5	0
+142	52.5	0
+143	52.5	0
+144	52.5	0
+145	52.5	0
+146	52.5	0
+147	52.5	0
+148	52.5	0
+149	52.5	0
+150	52.5	0
+151	52.5	0
+152	52.5	0
+153	52.5	0
+154	52.5	0
+155	52.5	0
+156	52.5	0
+157	52.5	0
+158	52.5	0
+159	52.5	0
+160	52.5	0
+161	52.5	0
+162	52.5	0
+163	52.5	0
+164	52.5	0
+165	52.5	0
+166	52.5	0
+167	52.5	0
+168	52.5	0
+169	52.5	0
+170	52.5	0
+171	52.5	0
+172	52.5	0
+173	52.5	0
+174	52.5	0
+175	52.5	0
+176	52.5	0
+177	52.5	0
+178	52.5	0
+179	52.5	0
+180	52.5	0
+181	52.5	0
+182	52.5	0
+183	52.5	0
+184	52.5	0
+185	52.5	0
+186	52.5	0
+187	52.5	0
+188	52.5	0
+189	52.5	0
+190	52.5	0
+191	52.5	0
+192	52.5	0
+193	52.5	0
+194	52.5	0
+195	52.5	0
+196	52.5	0
+197	52.5	0
+198	52.5	0
+199	52.5	0
+200	52.5	0
+201	52.5	0
+202	52.5	0
+203	52.5	0
+204	52.5	0
+205	52.5	0
+206	52.5	0
+207	52.5	0
+208	52.5	0
+209	52.5	0
+210	52.5	0
+211	52.5	0
+212	52.5	0
+213	52.5	0
+214	52.5	0
+215	52.5	0
+216	52.5	0
+217	52.5	0
+218	52.5	0
+219	52.5	0
+220	52.5	0
+221	52.5	0
+222	52.5	0
+223	52.5	0
+224	52.5	0
+225	52.5	0
+226	52.5	0
+227	52.5	0
+228	52.5	0
+229	52.5	0
+230	52.5	0
+231	52.5	0
+232	52.5	0
+233	52.5	0
+234	52.5	0
+235	52.5	0
+236	52.5	0
+237	52.5	0
+238	52.5	0
+239	52.5	0
+240	52.5	0
+241	52.5	0
+242	52.5	0
+243	52.5	0
+244	52.5	0
+245	52.5	0
+246	52.5	0
+247	52.5	0
+248	52.5	0
+249	52.5	0
+250	52.5	0
+251	52.5	0
+252	52.5	0
+253	52.5	0
+254	52.5	0
+255	52.5	0
+256	52.5	0
+257	52.5	0
+258	52.5	0
+259	52.5	0
+260	52.5	0
+261	52.5	0
+262	52.5	0
+263	52.5	0
+264	52.5	0
+265	52.5	0
+266	52.5	0
+267	52.5	0
+268	52.5	0
+269	52.5	0
+270	52.5	0
+271	52.5	0
+272	52.5	0
+273	52.5	0
+274	52.5	0
+275	52.5	0
+276	52.5	0
+277	52.5	0
+278	52.5	0
+279	52.5	0
+280	52.5	0
+281	52.5	0
+282	52.5	0
+283	52.5	0
+284	52.5	0
+285	52.5	0
+286	52.5	0
+287	52.5	0
+288	52.5	0
+289	52.5	0
+290	52.5	0
+291	52.5	0
+292	52.5	0
+293	52.5	0
+294	52.5	0
+295	52.5	0
+296	52.5	0
+297	52.5	0
+298	52.5	0
+299	52.5	0
+300	52.5	0
+301	52.5	0
+302	52.5	0
+303	52.5	0
+304	52.5	0
+305	52.5	0
+306	52.5	0
+307	52.5	0
+308	52.5	0
+309	52.5	0
+310	52.5	0
+311	52.5	0
+312	52.5	0
+313	52.5	0
+314	52.5	0
+315	52.5	0
+316	52.5	0
+317	52.5	0
+318	52.5	0
+319	52.5	0
+320	52.5	0
+321	52.5	0
+322	52.5	0
+323	52.5	0
+324	52.5	0
+325	52.5	0
+326	52.5	0
+327	52.5	0
+328	52.5	0
+329	52.5	0
+330	52.5	0
+331	52.5	0
+332	52.5	0
+333	52.5	0
+334	52.5	0
+335	52.5	0
+336	52.5	0
+337	52.5	0
+338	52.5	0
+339	52.5	0
+340	52.5	0
+341	52.5	0
+342	52.5	0
+343	52.5	0
+344	52.5	0
+345	52.5	0
+346	52.5	0
+347	52.5	0
+348	52.5	0
+349	52.5	0
+350	52.5	0
+351	52.5	0
+352	52.5	0
+353	52.5	0
+354	52.5	0
+355	52.5	0
+356	52.5	0
+357	52.5	0
+358	52.5	0
+359	52.5	0
+360	52.5	0
+0	53	0
+1	53	0
+2	53	0
+3	53	0
+4	53	0
+5	53	0
+6	53	0
+7	53	0
+8	53	0
+9	53	0
+10	53	0
+11	53	0
+12	53	0
+13	53	0
+14	53	0
+15	53	0
+16	53	0
+17	53	0
+18	53	0
+19	53	0
+20	53	0
+21	53	0
+22	53	0
+23	53	0
+24	53	0
+25	53	0
+26	53	0
+27	53	0
+28	53	0
+29	53	0
+30	53	0
+31	53	0
+32	53	0
+33	53	0
+34	53	0
+35	53	0
+36	53	0
+37	53	0
+38	53	0
+39	53	0
+40	53	0
+41	53	0
+42	53	0
+43	53	0
+44	53	0
+45	53	0
+46	53	0
+47	53	0
+48	53	0
+49	53	0
+50	53	0
+51	53	0
+52	53	0
+53	53	0
+54	53	0
+55	53	0
+56	53	0
+57	53	0
+58	53	0
+59	53	0
+60	53	0
+61	53	0
+62	53	0
+63	53	0
+64	53	0
+65	53	0
+66	53	0
+67	53	0
+68	53	0
+69	53	0
+70	53	0
+71	53	0
+72	53	0
+73	53	0
+74	53	0
+75	53	0
+76	53	0
+77	53	0
+78	53	0
+79	53	0
+80	53	0
+81	53	0
+82	53	0
+83	53	0
+84	53	0
+85	53	0
+86	53	0
+87	53	0
+88	53	0
+89	53	0
+90	53	0
+91	53	0
+92	53	0
+93	53	0
+94	53	0
+95	53	0
+96	53	0
+97	53	0
+98	53	0
+99	53	0
+100	53	0
+101	53	0
+102	53	0
+103	53	0
+104	53	0
+105	53	0
+106	53	0
+107	53	0
+108	53	0
+109	53	0
+110	53	0
+111	53	0
+112	53	0
+113	53	0
+114	53	0
+115	53	0
+116	53	0
+117	53	0
+118	53	0
+119	53	0
+120	53	0
+121	53	0
+122	53	0
+123	53	0
+124	53	0
+125	53	0
+126	53	0
+127	53	0
+128	53	0
+129	53	0
+130	53	0
+131	53	0
+132	53	0
+133	53	0
+134	53	0
+135	53	0
+136	53	0
+137	53	0
+138	53	0
+139	53	0
+140	53	0
+141	53	0
+142	53	0
+143	53	0
+144	53	0
+145	53	0
+146	53	0
+147	53	0
+148	53	0
+149	53	0
+150	53	0
+151	53	0
+152	53	0
+153	53	0
+154	53	0
+155	53	0
+156	53	0
+157	53	0
+158	53	0
+159	53	0
+160	53	0
+161	53	0
+162	53	0
+163	53	0
+164	53	0
+165	53	0
+166	53	0
+167	53	0
+168	53	0
+169	53	0
+170	53	0
+171	53	0
+172	53	0
+173	53	0
+174	53	0
+175	53	0
+176	53	0
+177	53	0
+178	53	0
+179	53	0
+180	53	0
+181	53	0
+182	53	0
+183	53	0
+184	53	0
+185	53	0
+186	53	0
+187	53	0
+188	53	0
+189	53	0
+190	53	0
+191	53	0
+192	53	0
+193	53	0
+194	53	0
+195	53	0
+196	53	0
+197	53	0
+198	53	0
+199	53	0
+200	53	0
+201	53	0
+202	53	0
+203	53	0
+204	53	0
+205	53	0
+206	53	0
+207	53	0
+208	53	0
+209	53	0
+210	53	0
+211	53	0
+212	53	0
+213	53	0
+214	53	0
+215	53	0
+216	53	0
+217	53	0
+218	53	0
+219	53	0
+220	53	0
+221	53	0
+222	53	0
+223	53	0
+224	53	0
+225	53	0
+226	53	0
+227	53	0
+228	53	0
+229	53	0
+230	53	0
+231	53	0
+232	53	0
+233	53	0
+234	53	0
+235	53	0
+236	53	0
+237	53	0
+238	53	0
+239	53	0
+240	53	0
+241	53	0
+242	53	0
+243	53	0
+244	53	0
+245	53	0
+246	53	0
+247	53	0
+248	53	0
+249	53	0
+250	53	0
+251	53	0
+252	53	0
+253	53	0
+254	53	0
+255	53	0
+256	53	0
+257	53	0
+258	53	0
+259	53	0
+260	53	0
+261	53	0
+262	53	0
+263	53	0
+264	53	0
+265	53	0
+266	53	0
+267	53	0
+268	53	0
+269	53	0
+270	53	0
+271	53	0
+272	53	0
+273	53	0
+274	53	0
+275	53	0
+276	53	0
+277	53	0
+278	53	0
+279	53	0
+280	53	0
+281	53	0
+282	53	0
+283	53	0
+284	53	0
+285	53	0
+286	53	0
+287	53	0
+288	53	0
+289	53	0
+290	53	0
+291	53	0
+292	53	0
+293	53	0
+294	53	0
+295	53	0
+296	53	0
+297	53	0
+298	53	0
+299	53	0
+300	53	0
+301	53	0
+302	53	0
+303	53	0
+304	53	0
+305	53	0
+306	53	0
+307	53	0
+308	53	0
+309	53	0
+310	53	0
+311	53	0
+312	53	0
+313	53	0
+314	53	0
+315	53	0
+316	53	0
+317	53	0
+318	53	0
+319	53	0
+320	53	0
+321	53	0
+322	53	0
+323	53	0
+324	53	0
+325	53	0
+326	53	0
+327	53	0
+328	53	0
+329	53	0
+330	53	0
+331	53	0
+332	53	0
+333	53	0
+334	53	0
+335	53	0
+336	53	0
+337	53	0
+338	53	0
+339	53	0
+340	53	0
+341	53	0
+342	53	0
+343	53	0
+344	53	0
+345	53	0
+346	53	0
+347	53	0
+348	53	0
+349	53	0
+350	53	0
+351	53	0
+352	53	0
+353	53	0
+354	53	0
+355	53	0
+356	53	0
+357	53	0
+358	53	0
+359	53	0
+360	53	0
+0	53.5	0
+1	53.5	0
+2	53.5	0
+3	53.5	0
+4	53.5	0
+5	53.5	0
+6	53.5	0
+7	53.5	0
+8	53.5	0
+9	53.5	0
+10	53.5	0
+11	53.5	0
+12	53.5	0
+13	53.5	0
+14	53.5	0
+15	53.5	0
+16	53.5	0
+17	53.5	0
+18	53.5	0
+19	53.5	0
+20	53.5	0
+21	53.5	0
+22	53.5	0
+23	53.5	0
+24	53.5	0
+25	53.5	0
+26	53.5	0
+27	53.5	0
+28	53.5	0
+29	53.5	0
+30	53.5	0
+31	53.5	0
+32	53.5	0
+33	53.5	0
+34	53.5	0
+35	53.5	0
+36	53.5	0
+37	53.5	0
+38	53.5	0
+39	53.5	0
+40	53.5	0
+41	53.5	0
+42	53.5	0
+43	53.5	0
+44	53.5	0
+45	53.5	0
+46	53.5	0
+47	53.5	0
+48	53.5	0
+49	53.5	0
+50	53.5	0
+51	53.5	0
+52	53.5	0
+53	53.5	0
+54	53.5	0
+55	53.5	0
+56	53.5	0
+57	53.5	0
+58	53.5	0
+59	53.5	0
+60	53.5	0
+61	53.5	0
+62	53.5	0
+63	53.5	0
+64	53.5	0
+65	53.5	0
+66	53.5	0
+67	53.5	0
+68	53.5	0
+69	53.5	0
+70	53.5	0
+71	53.5	0
+72	53.5	0
+73	53.5	0
+74	53.5	0
+75	53.5	0
+76	53.5	0
+77	53.5	0
+78	53.5	0
+79	53.5	0
+80	53.5	0
+81	53.5	0
+82	53.5	0
+83	53.5	0
+84	53.5	0
+85	53.5	0
+86	53.5	0
+87	53.5	0
+88	53.5	0
+89	53.5	0
+90	53.5	0
+91	53.5	0
+92	53.5	0
+93	53.5	0
+94	53.5	0
+95	53.5	0
+96	53.5	0
+97	53.5	0
+98	53.5	0
+99	53.5	0
+100	53.5	0
+101	53.5	0
+102	53.5	0
+103	53.5	0
+104	53.5	0
+105	53.5	0
+106	53.5	0
+107	53.5	0
+108	53.5	0
+109	53.5	0
+110	53.5	0
+111	53.5	0
+112	53.5	0
+113	53.5	0
+114	53.5	0
+115	53.5	0
+116	53.5	0
+117	53.5	0
+118	53.5	0
+119	53.5	0
+120	53.5	0
+121	53.5	0
+122	53.5	0
+123	53.5	0
+124	53.5	0
+125	53.5	0
+126	53.5	0
+127	53.5	0
+128	53.5	0
+129	53.5	0
+130	53.5	0
+131	53.5	0
+132	53.5	0
+133	53.5	0
+134	53.5	0
+135	53.5	0
+136	53.5	0
+137	53.5	0
+138	53.5	0
+139	53.5	0
+140	53.5	0
+141	53.5	0
+142	53.5	0
+143	53.5	0
+144	53.5	0
+145	53.5	0
+146	53.5	0
+147	53.5	0
+148	53.5	0
+149	53.5	0
+150	53.5	0
+151	53.5	0
+152	53.5	0
+153	53.5	0
+154	53.5	0
+155	53.5	0
+156	53.5	0
+157	53.5	0
+158	53.5	0
+159	53.5	0
+160	53.5	0
+161	53.5	0
+162	53.5	0
+163	53.5	0
+164	53.5	0
+165	53.5	0
+166	53.5	0
+167	53.5	0
+168	53.5	0
+169	53.5	0
+170	53.5	0
+171	53.5	0
+172	53.5	0
+173	53.5	0
+174	53.5	0
+175	53.5	0
+176	53.5	0
+177	53.5	0
+178	53.5	0
+179	53.5	0
+180	53.5	0
+181	53.5	0
+182	53.5	0
+183	53.5	0
+184	53.5	0
+185	53.5	0
+186	53.5	0
+187	53.5	0
+188	53.5	0
+189	53.5	0
+190	53.5	0
+191	53.5	0
+192	53.5	0
+193	53.5	0
+194	53.5	0
+195	53.5	0
+196	53.5	0
+197	53.5	0
+198	53.5	0
+199	53.5	0
+200	53.5	0
+201	53.5	0
+202	53.5	0
+203	53.5	0
+204	53.5	0
+205	53.5	0
+206	53.5	0
+207	53.5	0
+208	53.5	0
+209	53.5	0
+210	53.5	0
+211	53.5	0
+212	53.5	0
+213	53.5	0
+214	53.5	0
+215	53.5	0
+216	53.5	0
+217	53.5	0
+218	53.5	0
+219	53.5	0
+220	53.5	0
+221	53.5	0
+222	53.5	0
+223	53.5	0
+224	53.5	0
+225	53.5	0
+226	53.5	0
+227	53.5	0
+228	53.5	0
+229	53.5	0
+230	53.5	0
+231	53.5	0
+232	53.5	0
+233	53.5	0
+234	53.5	0
+235	53.5	0
+236	53.5	0
+237	53.5	0
+238	53.5	0
+239	53.5	0
+240	53.5	0
+241	53.5	0
+242	53.5	0
+243	53.5	0
+244	53.5	0
+245	53.5	0
+246	53.5	0
+247	53.5	0
+248	53.5	0
+249	53.5	0
+250	53.5	0
+251	53.5	0
+252	53.5	0
+253	53.5	0
+254	53.5	0
+255	53.5	0
+256	53.5	0
+257	53.5	0
+258	53.5	0
+259	53.5	0
+260	53.5	0
+261	53.5	0
+262	53.5	0
+263	53.5	0
+264	53.5	0
+265	53.5	0
+266	53.5	0
+267	53.5	0
+268	53.5	0
+269	53.5	0
+270	53.5	0
+271	53.5	0
+272	53.5	0
+273	53.5	0
+274	53.5	0
+275	53.5	0
+276	53.5	0
+277	53.5	0
+278	53.5	0
+279	53.5	0
+280	53.5	0
+281	53.5	0
+282	53.5	0
+283	53.5	0
+284	53.5	0
+285	53.5	0
+286	53.5	0
+287	53.5	0
+288	53.5	0
+289	53.5	0
+290	53.5	0
+291	53.5	0
+292	53.5	0
+293	53.5	0
+294	53.5	0
+295	53.5	0
+296	53.5	0
+297	53.5	0
+298	53.5	0
+299	53.5	0
+300	53.5	0
+301	53.5	0
+302	53.5	0
+303	53.5	0
+304	53.5	0
+305	53.5	0
+306	53.5	0
+307	53.5	0
+308	53.5	0
+309	53.5	0
+310	53.5	0
+311	53.5	0
+312	53.5	0
+313	53.5	0
+314	53.5	0
+315	53.5	0
+316	53.5	0
+317	53.5	0
+318	53.5	0
+319	53.5	0
+320	53.5	0
+321	53.5	0
+322	53.5	0
+323	53.5	0
+324	53.5	0
+325	53.5	0
+326	53.5	0
+327	53.5	0
+328	53.5	0
+329	53.5	0
+330	53.5	0
+331	53.5	0
+332	53.5	0
+333	53.5	0
+334	53.5	0
+335	53.5	0
+336	53.5	0
+337	53.5	0
+338	53.5	0
+339	53.5	0
+340	53.5	0
+341	53.5	0
+342	53.5	0
+343	53.5	0
+344	53.5	0
+345	53.5	0
+346	53.5	0
+347	53.5	0
+348	53.5	0
+349	53.5	0
+350	53.5	0
+351	53.5	0
+352	53.5	0
+353	53.5	0
+354	53.5	0
+355	53.5	0
+356	53.5	0
+357	53.5	0
+358	53.5	0
+359	53.5	0
+360	53.5	0
+0	54	0
+1	54	0
+2	54	0
+3	54	0
+4	54	0
+5	54	0
+6	54	0
+7	54	0
+8	54	0
+9	54	0
+10	54	0
+11	54	0
+12	54	0
+13	54	0
+14	54	0
+15	54	0
+16	54	0
+17	54	0
+18	54	0
+19	54	0
+20	54	0
+21	54	0
+22	54	0
+23	54	0
+24	54	0
+25	54	0
+26	54	0
+27	54	0
+28	54	0
+29	54	0
+30	54	0
+31	54	0
+32	54	0
+33	54	0
+34	54	0
+35	54	0
+36	54	0
+37	54	0
+38	54	0
+39	54	0
+40	54	0
+41	54	0
+42	54	0
+43	54	0
+44	54	0
+45	54	0
+46	54	0
+47	54	0
+48	54	0
+49	54	0
+50	54	0
+51	54	0
+52	54	0
+53	54	0
+54	54	0
+55	54	0
+56	54	0
+57	54	0
+58	54	0
+59	54	0
+60	54	0
+61	54	0
+62	54	0
+63	54	0
+64	54	0
+65	54	0
+66	54	0
+67	54	0
+68	54	0
+69	54	0
+70	54	0
+71	54	0
+72	54	0
+73	54	0
+74	54	0
+75	54	0
+76	54	0
+77	54	0
+78	54	0
+79	54	0
+80	54	0
+81	54	0
+82	54	0
+83	54	0
+84	54	0
+85	54	0
+86	54	0
+87	54	0
+88	54	0
+89	54	0
+90	54	0
+91	54	0
+92	54	0
+93	54	0
+94	54	0
+95	54	0
+96	54	0
+97	54	0
+98	54	0
+99	54	0
+100	54	0
+101	54	0
+102	54	0
+103	54	0
+104	54	0
+105	54	0
+106	54	0
+107	54	0
+108	54	0
+109	54	0
+110	54	0
+111	54	0
+112	54	0
+113	54	0
+114	54	0
+115	54	0
+116	54	0
+117	54	0
+118	54	0
+119	54	0
+120	54	0
+121	54	0
+122	54	0
+123	54	0
+124	54	0
+125	54	0
+126	54	0
+127	54	0
+128	54	0
+129	54	0
+130	54	0
+131	54	0
+132	54	0
+133	54	0
+134	54	0
+135	54	0
+136	54	0
+137	54	0
+138	54	0
+139	54	0
+140	54	0
+141	54	0
+142	54	0
+143	54	0
+144	54	0
+145	54	0
+146	54	0
+147	54	0
+148	54	0
+149	54	0
+150	54	0
+151	54	0
+152	54	0
+153	54	0
+154	54	0
+155	54	0
+156	54	0
+157	54	0
+158	54	0
+159	54	0
+160	54	0
+161	54	0
+162	54	0
+163	54	0
+164	54	0
+165	54	0
+166	54	0
+167	54	0
+168	54	0
+169	54	0
+170	54	0
+171	54	0
+172	54	0
+173	54	0
+174	54	0
+175	54	0
+176	54	0
+177	54	0
+178	54	0
+179	54	0
+180	54	0
+181	54	0
+182	54	0
+183	54	0
+184	54	0
+185	54	0
+186	54	0
+187	54	0
+188	54	0
+189	54	0
+190	54	0
+191	54	0
+192	54	0
+193	54	0
+194	54	0
+195	54	0
+196	54	0
+197	54	0
+198	54	0
+199	54	0
+200	54	0
+201	54	0
+202	54	0
+203	54	0
+204	54	0
+205	54	0
+206	54	0
+207	54	0
+208	54	0
+209	54	0
+210	54	0
+211	54	0
+212	54	0
+213	54	0
+214	54	0
+215	54	0
+216	54	0
+217	54	0
+218	54	0
+219	54	0
+220	54	0
+221	54	0
+222	54	0
+223	54	0
+224	54	0
+225	54	0
+226	54	0
+227	54	0
+228	54	0
+229	54	0
+230	54	0
+231	54	0
+232	54	0
+233	54	0
+234	54	0
+235	54	0
+236	54	0
+237	54	0
+238	54	0
+239	54	0
+240	54	0
+241	54	0
+242	54	0
+243	54	0
+244	54	0
+245	54	0
+246	54	0
+247	54	0
+248	54	0
+249	54	0
+250	54	0
+251	54	0
+252	54	0
+253	54	0
+254	54	0
+255	54	0
+256	54	0
+257	54	0
+258	54	0
+259	54	0
+260	54	0
+261	54	0
+262	54	0
+263	54	0
+264	54	0
+265	54	0
+266	54	0
+267	54	0
+268	54	0
+269	54	0
+270	54	0
+271	54	0
+272	54	0
+273	54	0
+274	54	0
+275	54	0
+276	54	0
+277	54	0
+278	54	0
+279	54	0
+280	54	0
+281	54	0
+282	54	0
+283	54	0
+284	54	0
+285	54	0
+286	54	0
+287	54	0
+288	54	0
+289	54	0
+290	54	0
+291	54	0
+292	54	0
+293	54	0
+294	54	0
+295	54	0
+296	54	0
+297	54	0
+298	54	0
+299	54	0
+300	54	0
+301	54	0
+302	54	0
+303	54	0
+304	54	0
+305	54	0
+306	54	0
+307	54	0
+308	54	0
+309	54	0
+310	54	0
+311	54	0
+312	54	0
+313	54	0
+314	54	0
+315	54	0
+316	54	0
+317	54	0
+318	54	0
+319	54	0
+320	54	0
+321	54	0
+322	54	0
+323	54	0
+324	54	0
+325	54	0
+326	54	0
+327	54	0
+328	54	0
+329	54	0
+330	54	0
+331	54	0
+332	54	0
+333	54	0
+334	54	0
+335	54	0
+336	54	0
+337	54	0
+338	54	0
+339	54	0
+340	54	0
+341	54	0
+342	54	0
+343	54	0
+344	54	0
+345	54	0
+346	54	0
+347	54	0
+348	54	0
+349	54	0
+350	54	0
+351	54	0
+352	54	0
+353	54	0
+354	54	0
+355	54	0
+356	54	0
+357	54	0
+358	54	0
+359	54	0
+360	54	0
+0	54.5	0
+1	54.5	0
+2	54.5	0
+3	54.5	0
+4	54.5	0
+5	54.5	0
+6	54.5	0
+7	54.5	0
+8	54.5	0
+9	54.5	0
+10	54.5	0
+11	54.5	0
+12	54.5	0
+13	54.5	0
+14	54.5	0
+15	54.5	0
+16	54.5	0
+17	54.5	0
+18	54.5	0
+19	54.5	0
+20	54.5	0
+21	54.5	0
+22	54.5	0
+23	54.5	0
+24	54.5	0
+25	54.5	0
+26	54.5	0
+27	54.5	0
+28	54.5	0
+29	54.5	0
+30	54.5	0
+31	54.5	0
+32	54.5	0
+33	54.5	0
+34	54.5	0
+35	54.5	0
+36	54.5	0
+37	54.5	0
+38	54.5	0
+39	54.5	0
+40	54.5	0
+41	54.5	0
+42	54.5	0
+43	54.5	0
+44	54.5	0
+45	54.5	0
+46	54.5	0
+47	54.5	0
+48	54.5	0
+49	54.5	0
+50	54.5	0
+51	54.5	0
+52	54.5	0
+53	54.5	0
+54	54.5	0
+55	54.5	0
+56	54.5	0
+57	54.5	0
+58	54.5	0
+59	54.5	0
+60	54.5	0
+61	54.5	0
+62	54.5	0
+63	54.5	0
+64	54.5	0
+65	54.5	0
+66	54.5	0
+67	54.5	0
+68	54.5	0
+69	54.5	0
+70	54.5	0
+71	54.5	0
+72	54.5	0
+73	54.5	0
+74	54.5	0
+75	54.5	0
+76	54.5	0
+77	54.5	0
+78	54.5	0
+79	54.5	0
+80	54.5	0
+81	54.5	0
+82	54.5	0
+83	54.5	0
+84	54.5	0
+85	54.5	0
+86	54.5	0
+87	54.5	0
+88	54.5	0
+89	54.5	0
+90	54.5	0
+91	54.5	0
+92	54.5	0
+93	54.5	0
+94	54.5	0
+95	54.5	0
+96	54.5	0
+97	54.5	0
+98	54.5	0
+99	54.5	0
+100	54.5	0
+101	54.5	0
+102	54.5	0
+103	54.5	0
+104	54.5	0
+105	54.5	0
+106	54.5	0
+107	54.5	0
+108	54.5	0
+109	54.5	0
+110	54.5	0
+111	54.5	0
+112	54.5	0
+113	54.5	0
+114	54.5	0
+115	54.5	0
+116	54.5	0
+117	54.5	0
+118	54.5	0
+119	54.5	0
+120	54.5	0
+121	54.5	0
+122	54.5	0
+123	54.5	0
+124	54.5	0
+125	54.5	0
+126	54.5	0
+127	54.5	0
+128	54.5	0
+129	54.5	0
+130	54.5	0
+131	54.5	0
+132	54.5	0
+133	54.5	0
+134	54.5	0
+135	54.5	0
+136	54.5	0
+137	54.5	0
+138	54.5	0
+139	54.5	0
+140	54.5	0
+141	54.5	0
+142	54.5	0
+143	54.5	0
+144	54.5	0
+145	54.5	0
+146	54.5	0
+147	54.5	0
+148	54.5	0
+149	54.5	0
+150	54.5	0
+151	54.5	0
+152	54.5	0
+153	54.5	0
+154	54.5	0
+155	54.5	0
+156	54.5	0
+157	54.5	0
+158	54.5	0
+159	54.5	0
+160	54.5	0
+161	54.5	0
+162	54.5	0
+163	54.5	0
+164	54.5	0
+165	54.5	0
+166	54.5	0
+167	54.5	0
+168	54.5	0
+169	54.5	0
+170	54.5	0
+171	54.5	0
+172	54.5	0
+173	54.5	0
+174	54.5	0
+175	54.5	0
+176	54.5	0
+177	54.5	0
+178	54.5	0
+179	54.5	0
+180	54.5	0
+181	54.5	0
+182	54.5	0
+183	54.5	0
+184	54.5	0
+185	54.5	0
+186	54.5	0
+187	54.5	0
+188	54.5	0
+189	54.5	0
+190	54.5	0
+191	54.5	0
+192	54.5	0
+193	54.5	0
+194	54.5	0
+195	54.5	0
+196	54.5	0
+197	54.5	0
+198	54.5	0
+199	54.5	0
+200	54.5	0
+201	54.5	0
+202	54.5	0
+203	54.5	0
+204	54.5	0
+205	54.5	0
+206	54.5	0
+207	54.5	0
+208	54.5	0
+209	54.5	0
+210	54.5	0
+211	54.5	0
+212	54.5	0
+213	54.5	0
+214	54.5	0
+215	54.5	0
+216	54.5	0
+217	54.5	0
+218	54.5	0
+219	54.5	0
+220	54.5	0
+221	54.5	0
+222	54.5	0
+223	54.5	0
+224	54.5	0
+225	54.5	0
+226	54.5	0
+227	54.5	0
+228	54.5	0
+229	54.5	0
+230	54.5	0
+231	54.5	0
+232	54.5	0
+233	54.5	0
+234	54.5	0
+235	54.5	0
+236	54.5	0
+237	54.5	0
+238	54.5	0
+239	54.5	0
+240	54.5	0
+241	54.5	0
+242	54.5	0
+243	54.5	0
+244	54.5	0
+245	54.5	0
+246	54.5	0
+247	54.5	0
+248	54.5	0
+249	54.5	0
+250	54.5	0
+251	54.5	0
+252	54.5	0
+253	54.5	0
+254	54.5	0
+255	54.5	0
+256	54.5	0
+257	54.5	0
+258	54.5	0
+259	54.5	0
+260	54.5	0
+261	54.5	0
+262	54.5	0
+263	54.5	0
+264	54.5	0
+265	54.5	0
+266	54.5	0
+267	54.5	0
+268	54.5	0
+269	54.5	0
+270	54.5	0
+271	54.5	0
+272	54.5	0
+273	54.5	0
+274	54.5	0
+275	54.5	0
+276	54.5	0
+277	54.5	0
+278	54.5	0
+279	54.5	0
+280	54.5	0
+281	54.5	0
+282	54.5	0
+283	54.5	0
+284	54.5	0
+285	54.5	0
+286	54.5	0
+287	54.5	0
+288	54.5	0
+289	54.5	0
+290	54.5	0
+291	54.5	0
+292	54.5	0
+293	54.5	0
+294	54.5	0
+295	54.5	0
+296	54.5	0
+297	54.5	0
+298	54.5	0
+299	54.5	0
+300	54.5	0
+301	54.5	0
+302	54.5	0
+303	54.5	0
+304	54.5	0
+305	54.5	0
+306	54.5	0
+307	54.5	0
+308	54.5	0
+309	54.5	0
+310	54.5	0
+311	54.5	0
+312	54.5	0
+313	54.5	0
+314	54.5	0
+315	54.5	0
+316	54.5	0
+317	54.5	0
+318	54.5	0
+319	54.5	0
+320	54.5	0
+321	54.5	0
+322	54.5	0
+323	54.5	0
+324	54.5	0
+325	54.5	0
+326	54.5	0
+327	54.5	0
+328	54.5	0
+329	54.5	0
+330	54.5	0
+331	54.5	0
+332	54.5	0
+333	54.5	0
+334	54.5	0
+335	54.5	0
+336	54.5	0
+337	54.5	0
+338	54.5	0
+339	54.5	0
+340	54.5	0
+341	54.5	0
+342	54.5	0
+343	54.5	0
+344	54.5	0
+345	54.5	0
+346	54.5	0
+347	54.5	0
+348	54.5	0
+349	54.5	0
+350	54.5	0
+351	54.5	0
+352	54.5	0
+353	54.5	0
+354	54.5	0
+355	54.5	0
+356	54.5	0
+357	54.5	0
+358	54.5	0
+359	54.5	0
+360	54.5	0
+0	55	0
+1	55	0
+2	55	0
+3	55	0
+4	55	0
+5	55	0
+6	55	0
+7	55	0
+8	55	0
+9	55	0
+10	55	0
+11	55	0
+12	55	0
+13	55	0
+14	55	0
+15	55	0
+16	55	0
+17	55	0
+18	55	0
+19	55	0
+20	55	0
+21	55	0
+22	55	0
+23	55	0
+24	55	0
+25	55	0
+26	55	0
+27	55	0
+28	55	0
+29	55	0
+30	55	0
+31	55	0
+32	55	0
+33	55	0
+34	55	0
+35	55	0
+36	55	0
+37	55	0
+38	55	0
+39	55	0
+40	55	0
+41	55	0
+42	55	0
+43	55	0
+44	55	0
+45	55	0
+46	55	0
+47	55	0
+48	55	0
+49	55	0
+50	55	0
+51	55	0
+52	55	0
+53	55	0
+54	55	0
+55	55	0
+56	55	0
+57	55	0
+58	55	0
+59	55	0
+60	55	0
+61	55	0
+62	55	0
+63	55	0
+64	55	0
+65	55	0
+66	55	0
+67	55	0
+68	55	0
+69	55	0
+70	55	0
+71	55	0
+72	55	0
+73	55	0
+74	55	0
+75	55	0
+76	55	0
+77	55	0
+78	55	0
+79	55	0
+80	55	0
+81	55	0
+82	55	0
+83	55	0
+84	55	0
+85	55	0
+86	55	0
+87	55	0
+88	55	0
+89	55	0
+90	55	0
+91	55	0
+92	55	0
+93	55	0
+94	55	0
+95	55	0
+96	55	0
+97	55	0
+98	55	0
+99	55	0
+100	55	0
+101	55	0
+102	55	0
+103	55	0
+104	55	0
+105	55	0
+106	55	0
+107	55	0
+108	55	0
+109	55	0
+110	55	0
+111	55	0
+112	55	0
+113	55	0
+114	55	0
+115	55	0
+116	55	0
+117	55	0
+118	55	0
+119	55	0
+120	55	0
+121	55	0
+122	55	0
+123	55	0
+124	55	0
+125	55	0
+126	55	0
+127	55	0
+128	55	0
+129	55	0
+130	55	0
+131	55	0
+132	55	0
+133	55	0
+134	55	0
+135	55	0
+136	55	0
+137	55	0
+138	55	0
+139	55	0
+140	55	0
+141	55	0
+142	55	0
+143	55	0
+144	55	0
+145	55	0
+146	55	0
+147	55	0
+148	55	0
+149	55	0
+150	55	0
+151	55	0
+152	55	0
+153	55	0
+154	55	0
+155	55	0
+156	55	0
+157	55	0
+158	55	0
+159	55	0
+160	55	0
+161	55	0
+162	55	0
+163	55	0
+164	55	0
+165	55	0
+166	55	0
+167	55	0
+168	55	0
+169	55	0
+170	55	0
+171	55	0
+172	55	0
+173	55	0
+174	55	0
+175	55	0
+176	55	0
+177	55	0
+178	55	0
+179	55	0
+180	55	0
+181	55	0
+182	55	0
+183	55	0
+184	55	0
+185	55	0
+186	55	0
+187	55	0
+188	55	0
+189	55	0
+190	55	0
+191	55	0
+192	55	0
+193	55	0
+194	55	0
+195	55	0
+196	55	0
+197	55	0
+198	55	0
+199	55	0
+200	55	0
+201	55	0
+202	55	0
+203	55	0
+204	55	0
+205	55	0
+206	55	0
+207	55	0
+208	55	0
+209	55	0
+210	55	0
+211	55	0
+212	55	0
+213	55	0
+214	55	0
+215	55	0
+216	55	0
+217	55	0
+218	55	0
+219	55	0
+220	55	0
+221	55	0
+222	55	0
+223	55	0
+224	55	0
+225	55	0
+226	55	0
+227	55	0
+228	55	0
+229	55	0
+230	55	0
+231	55	0
+232	55	0
+233	55	0
+234	55	0
+235	55	0
+236	55	0
+237	55	0
+238	55	0
+239	55	0
+240	55	0
+241	55	0
+242	55	0
+243	55	0
+244	55	0
+245	55	0
+246	55	0
+247	55	0
+248	55	0
+249	55	0
+250	55	0
+251	55	0
+252	55	0
+253	55	0
+254	55	0
+255	55	0
+256	55	0
+257	55	0
+258	55	0
+259	55	0
+260	55	0
+261	55	0
+262	55	0
+263	55	0
+264	55	0
+265	55	0
+266	55	0
+267	55	0
+268	55	0
+269	55	0
+270	55	0
+271	55	0
+272	55	0
+273	55	0
+274	55	0
+275	55	0
+276	55	0
+277	55	0
+278	55	0
+279	55	0
+280	55	0
+281	55	0
+282	55	0
+283	55	0
+284	55	0
+285	55	0
+286	55	0
+287	55	0
+288	55	0
+289	55	0
+290	55	0
+291	55	0
+292	55	0
+293	55	0
+294	55	0
+295	55	0
+296	55	0
+297	55	0
+298	55	0
+299	55	0
+300	55	0
+301	55	0
+302	55	0
+303	55	0
+304	55	0
+305	55	0
+306	55	0
+307	55	0
+308	55	0
+309	55	0
+310	55	0
+311	55	0
+312	55	0
+313	55	0
+314	55	0
+315	55	0
+316	55	0
+317	55	0
+318	55	0
+319	55	0
+320	55	0
+321	55	0
+322	55	0
+323	55	0
+324	55	0
+325	55	0
+326	55	0
+327	55	0
+328	55	0
+329	55	0
+330	55	0
+331	55	0
+332	55	0
+333	55	0
+334	55	0
+335	55	0
+336	55	0
+337	55	0
+338	55	0
+339	55	0
+340	55	0
+341	55	0
+342	55	0
+343	55	0
+344	55	0
+345	55	0
+346	55	0
+347	55	0
+348	55	0
+349	55	0
+350	55	0
+351	55	0
+352	55	0
+353	55	0
+354	55	0
+355	55	0
+356	55	0
+357	55	0
+358	55	0
+359	55	0
+360	55	0
+0	55.5	0
+1	55.5	0
+2	55.5	0
+3	55.5	0
+4	55.5	0
+5	55.5	0
+6	55.5	0
+7	55.5	0
+8	55.5	0
+9	55.5	0
+10	55.5	0
+11	55.5	0
+12	55.5	0
+13	55.5	0
+14	55.5	0
+15	55.5	0
+16	55.5	0
+17	55.5	0
+18	55.5	0
+19	55.5	0
+20	55.5	0
+21	55.5	0
+22	55.5	0
+23	55.5	0
+24	55.5	0
+25	55.5	0
+26	55.5	0
+27	55.5	0
+28	55.5	0
+29	55.5	0
+30	55.5	0
+31	55.5	0
+32	55.5	0
+33	55.5	0
+34	55.5	0
+35	55.5	0
+36	55.5	0
+37	55.5	0
+38	55.5	0
+39	55.5	0
+40	55.5	0
+41	55.5	0
+42	55.5	0
+43	55.5	0
+44	55.5	0
+45	55.5	0
+46	55.5	0
+47	55.5	0
+48	55.5	0
+49	55.5	0
+50	55.5	0
+51	55.5	0
+52	55.5	0
+53	55.5	0
+54	55.5	0
+55	55.5	0
+56	55.5	0
+57	55.5	0
+58	55.5	0
+59	55.5	0
+60	55.5	0
+61	55.5	0
+62	55.5	0
+63	55.5	0
+64	55.5	0
+65	55.5	0
+66	55.5	0
+67	55.5	0
+68	55.5	0
+69	55.5	0
+70	55.5	0
+71	55.5	0
+72	55.5	0
+73	55.5	0
+74	55.5	0
+75	55.5	0
+76	55.5	0
+77	55.5	0
+78	55.5	0
+79	55.5	0
+80	55.5	0
+81	55.5	0
+82	55.5	0
+83	55.5	0
+84	55.5	0
+85	55.5	0
+86	55.5	0
+87	55.5	0
+88	55.5	0
+89	55.5	0
+90	55.5	0
+91	55.5	0
+92	55.5	0
+93	55.5	0
+94	55.5	0
+95	55.5	0
+96	55.5	0
+97	55.5	0
+98	55.5	0
+99	55.5	0
+100	55.5	0
+101	55.5	0
+102	55.5	0
+103	55.5	0
+104	55.5	0
+105	55.5	0
+106	55.5	0
+107	55.5	0
+108	55.5	0
+109	55.5	0
+110	55.5	0
+111	55.5	0
+112	55.5	0
+113	55.5	0
+114	55.5	0
+115	55.5	0
+116	55.5	0
+117	55.5	0
+118	55.5	0
+119	55.5	0
+120	55.5	0
+121	55.5	0
+122	55.5	0
+123	55.5	0
+124	55.5	0
+125	55.5	0
+126	55.5	0
+127	55.5	0
+128	55.5	0
+129	55.5	0
+130	55.5	0
+131	55.5	0
+132	55.5	0
+133	55.5	0
+134	55.5	0
+135	55.5	0
+136	55.5	0
+137	55.5	0
+138	55.5	0
+139	55.5	0
+140	55.5	0
+141	55.5	0
+142	55.5	0
+143	55.5	0
+144	55.5	0
+145	55.5	0
+146	55.5	0
+147	55.5	0
+148	55.5	0
+149	55.5	0
+150	55.5	0
+151	55.5	0
+152	55.5	0
+153	55.5	0
+154	55.5	0
+155	55.5	0
+156	55.5	0
+157	55.5	0
+158	55.5	0
+159	55.5	0
+160	55.5	0
+161	55.5	0
+162	55.5	0
+163	55.5	0
+164	55.5	0
+165	55.5	0
+166	55.5	0
+167	55.5	0
+168	55.5	0
+169	55.5	0
+170	55.5	0
+171	55.5	0
+172	55.5	0
+173	55.5	0
+174	55.5	0
+175	55.5	0
+176	55.5	0
+177	55.5	0
+178	55.5	0
+179	55.5	0
+180	55.5	0
+181	55.5	0
+182	55.5	0
+183	55.5	0
+184	55.5	0
+185	55.5	0
+186	55.5	0
+187	55.5	0
+188	55.5	0
+189	55.5	0
+190	55.5	0
+191	55.5	0
+192	55.5	0
+193	55.5	0
+194	55.5	0
+195	55.5	0
+196	55.5	0
+197	55.5	0
+198	55.5	0
+199	55.5	0
+200	55.5	0
+201	55.5	0
+202	55.5	0
+203	55.5	0
+204	55.5	0
+205	55.5	0
+206	55.5	0
+207	55.5	0
+208	55.5	0
+209	55.5	0
+210	55.5	0
+211	55.5	0
+212	55.5	0
+213	55.5	0
+214	55.5	0
+215	55.5	0
+216	55.5	0
+217	55.5	0
+218	55.5	0
+219	55.5	0
+220	55.5	0
+221	55.5	0
+222	55.5	0
+223	55.5	0
+224	55.5	0
+225	55.5	0
+226	55.5	0
+227	55.5	0
+228	55.5	0
+229	55.5	0
+230	55.5	0
+231	55.5	0
+232	55.5	0
+233	55.5	0
+234	55.5	0
+235	55.5	0
+236	55.5	0
+237	55.5	0
+238	55.5	0
+239	55.5	0
+240	55.5	0
+241	55.5	0
+242	55.5	0
+243	55.5	0
+244	55.5	0
+245	55.5	0
+246	55.5	0
+247	55.5	0
+248	55.5	0
+249	55.5	0
+250	55.5	0
+251	55.5	0
+252	55.5	0
+253	55.5	0
+254	55.5	0
+255	55.5	0
+256	55.5	0
+257	55.5	0
+258	55.5	0
+259	55.5	0
+260	55.5	0
+261	55.5	0
+262	55.5	0
+263	55.5	0
+264	55.5	0
+265	55.5	0
+266	55.5	0
+267	55.5	0
+268	55.5	0
+269	55.5	0
+270	55.5	0
+271	55.5	0
+272	55.5	0
+273	55.5	0
+274	55.5	0
+275	55.5	0
+276	55.5	0
+277	55.5	0
+278	55.5	0
+279	55.5	0
+280	55.5	0
+281	55.5	0
+282	55.5	0
+283	55.5	0
+284	55.5	0
+285	55.5	0
+286	55.5	0
+287	55.5	0
+288	55.5	0
+289	55.5	0
+290	55.5	0
+291	55.5	0
+292	55.5	0
+293	55.5	0
+294	55.5	0
+295	55.5	0
+296	55.5	0
+297	55.5	0
+298	55.5	0
+299	55.5	0
+300	55.5	0
+301	55.5	0
+302	55.5	0
+303	55.5	0
+304	55.5	0
+305	55.5	0
+306	55.5	0
+307	55.5	0
+308	55.5	0
+309	55.5	0
+310	55.5	0
+311	55.5	0
+312	55.5	0
+313	55.5	0
+314	55.5	0
+315	55.5	0
+316	55.5	0
+317	55.5	0
+318	55.5	0
+319	55.5	0
+320	55.5	0
+321	55.5	0
+322	55.5	0
+323	55.5	0
+324	55.5	0
+325	55.5	0
+326	55.5	0
+327	55.5	0
+328	55.5	0
+329	55.5	0
+330	55.5	0
+331	55.5	0
+332	55.5	0
+333	55.5	0
+334	55.5	0
+335	55.5	0
+336	55.5	0
+337	55.5	0
+338	55.5	0
+339	55.5	0
+340	55.5	0
+341	55.5	0
+342	55.5	0
+343	55.5	0
+344	55.5	0
+345	55.5	0
+346	55.5	0
+347	55.5	0
+348	55.5	0
+349	55.5	0
+350	55.5	0
+351	55.5	0
+352	55.5	0
+353	55.5	0
+354	55.5	0
+355	55.5	0
+356	55.5	0
+357	55.5	0
+358	55.5	0
+359	55.5	0
+360	55.5	0
+0	56	0
+1	56	0
+2	56	0
+3	56	0
+4	56	0
+5	56	0
+6	56	0
+7	56	0
+8	56	0
+9	56	0
+10	56	0
+11	56	0
+12	56	0
+13	56	0
+14	56	0
+15	56	0
+16	56	0
+17	56	0
+18	56	0
+19	56	0
+20	56	0
+21	56	0
+22	56	0
+23	56	0
+24	56	0
+25	56	0
+26	56	0
+27	56	0
+28	56	0
+29	56	0
+30	56	0
+31	56	0
+32	56	0
+33	56	0
+34	56	0
+35	56	0
+36	56	0
+37	56	0
+38	56	0
+39	56	0
+40	56	0
+41	56	0
+42	56	0
+43	56	0
+44	56	0
+45	56	0
+46	56	0
+47	56	0
+48	56	0
+49	56	0
+50	56	0
+51	56	0
+52	56	0
+53	56	0
+54	56	0
+55	56	0
+56	56	0
+57	56	0
+58	56	0
+59	56	0
+60	56	0
+61	56	0
+62	56	0
+63	56	0
+64	56	0
+65	56	0
+66	56	0
+67	56	0
+68	56	0
+69	56	0
+70	56	0
+71	56	0
+72	56	0
+73	56	0
+74	56	0
+75	56	0
+76	56	0
+77	56	0
+78	56	0
+79	56	0
+80	56	0
+81	56	0
+82	56	0
+83	56	0
+84	56	0
+85	56	0
+86	56	0
+87	56	0
+88	56	0
+89	56	0
+90	56	0
+91	56	0
+92	56	0
+93	56	0
+94	56	0
+95	56	0
+96	56	0
+97	56	0
+98	56	0
+99	56	0
+100	56	0
+101	56	0
+102	56	0
+103	56	0
+104	56	0
+105	56	0
+106	56	0
+107	56	0
+108	56	0
+109	56	0
+110	56	0
+111	56	0
+112	56	0
+113	56	0
+114	56	0
+115	56	0
+116	56	0
+117	56	0
+118	56	0
+119	56	0
+120	56	0
+121	56	0
+122	56	0
+123	56	0
+124	56	0
+125	56	0
+126	56	0
+127	56	0
+128	56	0
+129	56	0
+130	56	0
+131	56	0
+132	56	0
+133	56	0
+134	56	0
+135	56	0
+136	56	0
+137	56	0
+138	56	0
+139	56	0
+140	56	0
+141	56	0
+142	56	0
+143	56	0
+144	56	0
+145	56	0
+146	56	0
+147	56	0
+148	56	0
+149	56	0
+150	56	0
+151	56	0
+152	56	0
+153	56	0
+154	56	0
+155	56	0
+156	56	0
+157	56	0
+158	56	0
+159	56	0
+160	56	0
+161	56	0
+162	56	0
+163	56	0
+164	56	0
+165	56	0
+166	56	0
+167	56	0
+168	56	0
+169	56	0
+170	56	0
+171	56	0
+172	56	0
+173	56	0
+174	56	0
+175	56	0
+176	56	0
+177	56	0
+178	56	0
+179	56	0
+180	56	0
+181	56	0
+182	56	0
+183	56	0
+184	56	0
+185	56	0
+186	56	0
+187	56	0
+188	56	0
+189	56	0
+190	56	0
+191	56	0
+192	56	0
+193	56	0
+194	56	0
+195	56	0
+196	56	0
+197	56	0
+198	56	0
+199	56	0
+200	56	0
+201	56	0
+202	56	0
+203	56	0
+204	56	0
+205	56	0
+206	56	0
+207	56	0
+208	56	0
+209	56	0
+210	56	0
+211	56	0
+212	56	0
+213	56	0
+214	56	0
+215	56	0
+216	56	0
+217	56	0
+218	56	0
+219	56	0
+220	56	0
+221	56	0
+222	56	0
+223	56	0
+224	56	0
+225	56	0
+226	56	0
+227	56	0
+228	56	0
+229	56	0
+230	56	0
+231	56	0
+232	56	0
+233	56	0
+234	56	0
+235	56	0
+236	56	0
+237	56	0
+238	56	0
+239	56	0
+240	56	0
+241	56	0
+242	56	0
+243	56	0
+244	56	0
+245	56	0
+246	56	0
+247	56	0
+248	56	0
+249	56	0
+250	56	0
+251	56	0
+252	56	0
+253	56	0
+254	56	0
+255	56	0
+256	56	0
+257	56	0
+258	56	0
+259	56	0
+260	56	0
+261	56	0
+262	56	0
+263	56	0
+264	56	0
+265	56	0
+266	56	0
+267	56	0
+268	56	0
+269	56	0
+270	56	0
+271	56	0
+272	56	0
+273	56	0
+274	56	0
+275	56	0
+276	56	0
+277	56	0
+278	56	0
+279	56	0
+280	56	0
+281	56	0
+282	56	0
+283	56	0
+284	56	0
+285	56	0
+286	56	0
+287	56	0
+288	56	0
+289	56	0
+290	56	0
+291	56	0
+292	56	0
+293	56	0
+294	56	0
+295	56	0
+296	56	0
+297	56	0
+298	56	0
+299	56	0
+300	56	0
+301	56	0
+302	56	0
+303	56	0
+304	56	0
+305	56	0
+306	56	0
+307	56	0
+308	56	0
+309	56	0
+310	56	0
+311	56	0
+312	56	0
+313	56	0
+314	56	0
+315	56	0
+316	56	0
+317	56	0
+318	56	0
+319	56	0
+320	56	0
+321	56	0
+322	56	0
+323	56	0
+324	56	0
+325	56	0
+326	56	0
+327	56	0
+328	56	0
+329	56	0
+330	56	0
+331	56	0
+332	56	0
+333	56	0
+334	56	0
+335	56	0
+336	56	0
+337	56	0
+338	56	0
+339	56	0
+340	56	0
+341	56	0
+342	56	0
+343	56	0
+344	56	0
+345	56	0
+346	56	0
+347	56	0
+348	56	0
+349	56	0
+350	56	0
+351	56	0
+352	56	0
+353	56	0
+354	56	0
+355	56	0
+356	56	0
+357	56	0
+358	56	0
+359	56	0
+360	56	0
+0	56.5	0
+1	56.5	0
+2	56.5	0
+3	56.5	0
+4	56.5	0
+5	56.5	0
+6	56.5	0
+7	56.5	0
+8	56.5	0
+9	56.5	0
+10	56.5	0
+11	56.5	0
+12	56.5	0
+13	56.5	0
+14	56.5	0
+15	56.5	0
+16	56.5	0
+17	56.5	0
+18	56.5	0
+19	56.5	0
+20	56.5	0
+21	56.5	0
+22	56.5	0
+23	56.5	0
+24	56.5	0
+25	56.5	0
+26	56.5	0
+27	56.5	0
+28	56.5	0
+29	56.5	0
+30	56.5	0
+31	56.5	0
+32	56.5	0
+33	56.5	0
+34	56.5	0
+35	56.5	0
+36	56.5	0
+37	56.5	0
+38	56.5	0
+39	56.5	0
+40	56.5	0
+41	56.5	0
+42	56.5	0
+43	56.5	0
+44	56.5	0
+45	56.5	0
+46	56.5	0
+47	56.5	0
+48	56.5	0
+49	56.5	0
+50	56.5	0
+51	56.5	0
+52	56.5	0
+53	56.5	0
+54	56.5	0
+55	56.5	0
+56	56.5	0
+57	56.5	0
+58	56.5	0
+59	56.5	0
+60	56.5	0
+61	56.5	0
+62	56.5	0
+63	56.5	0
+64	56.5	0
+65	56.5	0
+66	56.5	0
+67	56.5	0
+68	56.5	0
+69	56.5	0
+70	56.5	0
+71	56.5	0
+72	56.5	0
+73	56.5	0
+74	56.5	0
+75	56.5	0
+76	56.5	0
+77	56.5	0
+78	56.5	0
+79	56.5	0
+80	56.5	0
+81	56.5	0
+82	56.5	0
+83	56.5	0
+84	56.5	0
+85	56.5	0
+86	56.5	0
+87	56.5	0
+88	56.5	0
+89	56.5	0
+90	56.5	0
+91	56.5	0
+92	56.5	0
+93	56.5	0
+94	56.5	0
+95	56.5	0
+96	56.5	0
+97	56.5	0
+98	56.5	0
+99	56.5	0
+100	56.5	0
+101	56.5	0
+102	56.5	0
+103	56.5	0
+104	56.5	0
+105	56.5	0
+106	56.5	0
+107	56.5	0
+108	56.5	0
+109	56.5	0
+110	56.5	0
+111	56.5	0
+112	56.5	0
+113	56.5	0
+114	56.5	0
+115	56.5	0
+116	56.5	0
+117	56.5	0
+118	56.5	0
+119	56.5	0
+120	56.5	0
+121	56.5	0
+122	56.5	0
+123	56.5	0
+124	56.5	0
+125	56.5	0
+126	56.5	0
+127	56.5	0
+128	56.5	0
+129	56.5	0
+130	56.5	0
+131	56.5	0
+132	56.5	0
+133	56.5	0
+134	56.5	0
+135	56.5	0
+136	56.5	0
+137	56.5	0
+138	56.5	0
+139	56.5	0
+140	56.5	0
+141	56.5	0
+142	56.5	0
+143	56.5	0
+144	56.5	0
+145	56.5	0
+146	56.5	0
+147	56.5	0
+148	56.5	0
+149	56.5	0
+150	56.5	0
+151	56.5	0
+152	56.5	0
+153	56.5	0
+154	56.5	0
+155	56.5	0
+156	56.5	0
+157	56.5	0
+158	56.5	0
+159	56.5	0
+160	56.5	0
+161	56.5	0
+162	56.5	0
+163	56.5	0
+164	56.5	0
+165	56.5	0
+166	56.5	0
+167	56.5	0
+168	56.5	0
+169	56.5	0
+170	56.5	0
+171	56.5	0
+172	56.5	0
+173	56.5	0
+174	56.5	0
+175	56.5	0
+176	56.5	0
+177	56.5	0
+178	56.5	0
+179	56.5	0
+180	56.5	0
+181	56.5	0
+182	56.5	0
+183	56.5	0
+184	56.5	0
+185	56.5	0
+186	56.5	0
+187	56.5	0
+188	56.5	0
+189	56.5	0
+190	56.5	0
+191	56.5	0
+192	56.5	0
+193	56.5	0
+194	56.5	0
+195	56.5	0
+196	56.5	0
+197	56.5	0
+198	56.5	0
+199	56.5	0
+200	56.5	0
+201	56.5	0
+202	56.5	0
+203	56.5	0
+204	56.5	0
+205	56.5	0
+206	56.5	0
+207	56.5	0
+208	56.5	0
+209	56.5	0
+210	56.5	0
+211	56.5	0
+212	56.5	0
+213	56.5	0
+214	56.5	0
+215	56.5	0
+216	56.5	0
+217	56.5	0
+218	56.5	0
+219	56.5	0
+220	56.5	0
+221	56.5	0
+222	56.5	0
+223	56.5	0
+224	56.5	0
+225	56.5	0
+226	56.5	0
+227	56.5	0
+228	56.5	0
+229	56.5	0
+230	56.5	0
+231	56.5	0
+232	56.5	0
+233	56.5	0
+234	56.5	0
+235	56.5	0
+236	56.5	0
+237	56.5	0
+238	56.5	0
+239	56.5	0
+240	56.5	0
+241	56.5	0
+242	56.5	0
+243	56.5	0
+244	56.5	0
+245	56.5	0
+246	56.5	0
+247	56.5	0
+248	56.5	0
+249	56.5	0
+250	56.5	0
+251	56.5	0
+252	56.5	0
+253	56.5	0
+254	56.5	0
+255	56.5	0
+256	56.5	0
+257	56.5	0
+258	56.5	0
+259	56.5	0
+260	56.5	0
+261	56.5	0
+262	56.5	0
+263	56.5	0
+264	56.5	0
+265	56.5	0
+266	56.5	0
+267	56.5	0
+268	56.5	0
+269	56.5	0
+270	56.5	0
+271	56.5	0
+272	56.5	0
+273	56.5	0
+274	56.5	0
+275	56.5	0
+276	56.5	0
+277	56.5	0
+278	56.5	0
+279	56.5	0
+280	56.5	0
+281	56.5	0
+282	56.5	0
+283	56.5	0
+284	56.5	0
+285	56.5	0
+286	56.5	0
+287	56.5	0
+288	56.5	0
+289	56.5	0
+290	56.5	0
+291	56.5	0
+292	56.5	0
+293	56.5	0
+294	56.5	0
+295	56.5	0
+296	56.5	0
+297	56.5	0
+298	56.5	0
+299	56.5	0
+300	56.5	0
+301	56.5	0
+302	56.5	0
+303	56.5	0
+304	56.5	0
+305	56.5	0
+306	56.5	0
+307	56.5	0
+308	56.5	0
+309	56.5	0
+310	56.5	0
+311	56.5	0
+312	56.5	0
+313	56.5	0
+314	56.5	0
+315	56.5	0
+316	56.5	0
+317	56.5	0
+318	56.5	0
+319	56.5	0
+320	56.5	0
+321	56.5	0
+322	56.5	0
+323	56.5	0
+324	56.5	0
+325	56.5	0
+326	56.5	0
+327	56.5	0
+328	56.5	0
+329	56.5	0
+330	56.5	0
+331	56.5	0
+332	56.5	0
+333	56.5	0
+334	56.5	0
+335	56.5	0
+336	56.5	0
+337	56.5	0
+338	56.5	0
+339	56.5	0
+340	56.5	0
+341	56.5	0
+342	56.5	0
+343	56.5	0
+344	56.5	0
+345	56.5	0
+346	56.5	0
+347	56.5	0
+348	56.5	0
+349	56.5	0
+350	56.5	0
+351	56.5	0
+352	56.5	0
+353	56.5	0
+354	56.5	0
+355	56.5	0
+356	56.5	0
+357	56.5	0
+358	56.5	0
+359	56.5	0
+360	56.5	0
+0	57	0
+1	57	0
+2	57	0
+3	57	0
+4	57	0
+5	57	0
+6	57	0
+7	57	0
+8	57	0
+9	57	0
+10	57	0
+11	57	0
+12	57	0
+13	57	0
+14	57	0
+15	57	0
+16	57	0
+17	57	0
+18	57	0
+19	57	0
+20	57	0
+21	57	0
+22	57	0
+23	57	0
+24	57	0
+25	57	0
+26	57	0
+27	57	0
+28	57	0
+29	57	0
+30	57	0
+31	57	0
+32	57	0
+33	57	0
+34	57	0
+35	57	0
+36	57	0
+37	57	0
+38	57	0
+39	57	0
+40	57	0
+41	57	0
+42	57	0
+43	57	0
+44	57	0
+45	57	0
+46	57	0
+47	57	0
+48	57	0
+49	57	0
+50	57	0
+51	57	0
+52	57	0
+53	57	0
+54	57	0
+55	57	0
+56	57	0
+57	57	0
+58	57	0
+59	57	0
+60	57	0
+61	57	0
+62	57	0
+63	57	0
+64	57	0
+65	57	0
+66	57	0
+67	57	0
+68	57	0
+69	57	0
+70	57	0
+71	57	0
+72	57	0
+73	57	0
+74	57	0
+75	57	0
+76	57	0
+77	57	0
+78	57	0
+79	57	0
+80	57	0
+81	57	0
+82	57	0
+83	57	0
+84	57	0
+85	57	0
+86	57	0
+87	57	0
+88	57	0
+89	57	0
+90	57	0
+91	57	0
+92	57	0
+93	57	0
+94	57	0
+95	57	0
+96	57	0
+97	57	0
+98	57	0
+99	57	0
+100	57	0
+101	57	0
+102	57	0
+103	57	0
+104	57	0
+105	57	0
+106	57	0
+107	57	0
+108	57	0
+109	57	0
+110	57	0
+111	57	0
+112	57	0
+113	57	0
+114	57	0
+115	57	0
+116	57	0
+117	57	0
+118	57	0
+119	57	0
+120	57	0
+121	57	0
+122	57	0
+123	57	0
+124	57	0
+125	57	0
+126	57	0
+127	57	0
+128	57	0
+129	57	0
+130	57	0
+131	57	0
+132	57	0
+133	57	0
+134	57	0
+135	57	0
+136	57	0
+137	57	0
+138	57	0
+139	57	0
+140	57	0
+141	57	0
+142	57	0
+143	57	0
+144	57	0
+145	57	0
+146	57	0
+147	57	0
+148	57	0
+149	57	0
+150	57	0
+151	57	0
+152	57	0
+153	57	0
+154	57	0
+155	57	0
+156	57	0
+157	57	0
+158	57	0
+159	57	0
+160	57	0
+161	57	0
+162	57	0
+163	57	0
+164	57	0
+165	57	0
+166	57	0
+167	57	0
+168	57	0
+169	57	0
+170	57	0
+171	57	0
+172	57	0
+173	57	0
+174	57	0
+175	57	0
+176	57	0
+177	57	0
+178	57	0
+179	57	0
+180	57	0
+181	57	0
+182	57	0
+183	57	0
+184	57	0
+185	57	0
+186	57	0
+187	57	0
+188	57	0
+189	57	0
+190	57	0
+191	57	0
+192	57	0
+193	57	0
+194	57	0
+195	57	0
+196	57	0
+197	57	0
+198	57	0
+199	57	0
+200	57	0
+201	57	0
+202	57	0
+203	57	0
+204	57	0
+205	57	0
+206	57	0
+207	57	0
+208	57	0
+209	57	0
+210	57	0
+211	57	0
+212	57	0
+213	57	0
+214	57	0
+215	57	0
+216	57	0
+217	57	0
+218	57	0
+219	57	0
+220	57	0
+221	57	0
+222	57	0
+223	57	0
+224	57	0
+225	57	0
+226	57	0
+227	57	0
+228	57	0
+229	57	0
+230	57	0
+231	57	0
+232	57	0
+233	57	0
+234	57	0
+235	57	0
+236	57	0
+237	57	0
+238	57	0
+239	57	0
+240	57	0
+241	57	0
+242	57	0
+243	57	0
+244	57	0
+245	57	0
+246	57	0
+247	57	0
+248	57	0
+249	57	0
+250	57	0
+251	57	0
+252	57	0
+253	57	0
+254	57	0
+255	57	0
+256	57	0
+257	57	0
+258	57	0
+259	57	0
+260	57	0
+261	57	0
+262	57	0
+263	57	0
+264	57	0
+265	57	0
+266	57	0
+267	57	0
+268	57	0
+269	57	0
+270	57	0
+271	57	0
+272	57	0
+273	57	0
+274	57	0
+275	57	0
+276	57	0
+277	57	0
+278	57	0
+279	57	0
+280	57	0
+281	57	0
+282	57	0
+283	57	0
+284	57	0
+285	57	0
+286	57	0
+287	57	0
+288	57	0
+289	57	0
+290	57	0
+291	57	0
+292	57	0
+293	57	0
+294	57	0
+295	57	0
+296	57	0
+297	57	0
+298	57	0
+299	57	0
+300	57	0
+301	57	0
+302	57	0
+303	57	0
+304	57	0
+305	57	0
+306	57	0
+307	57	0
+308	57	0
+309	57	0
+310	57	0
+311	57	0
+312	57	0
+313	57	0
+314	57	0
+315	57	0
+316	57	0
+317	57	0
+318	57	0
+319	57	0
+320	57	0
+321	57	0
+322	57	0
+323	57	0
+324	57	0
+325	57	0
+326	57	0
+327	57	0
+328	57	0
+329	57	0
+330	57	0
+331	57	0
+332	57	0
+333	57	0
+334	57	0
+335	57	0
+336	57	0
+337	57	0
+338	57	0
+339	57	0
+340	57	0
+341	57	0
+342	57	0
+343	57	0
+344	57	0
+345	57	0
+346	57	0
+347	57	0
+348	57	0
+349	57	0
+350	57	0
+351	57	0
+352	57	0
+353	57	0
+354	57	0
+355	57	0
+356	57	0
+357	57	0
+358	57	0
+359	57	0
+360	57	0
+0	57.5	0
+1	57.5	0
+2	57.5	0
+3	57.5	0
+4	57.5	0
+5	57.5	0
+6	57.5	0
+7	57.5	0
+8	57.5	0
+9	57.5	0
+10	57.5	0
+11	57.5	0
+12	57.5	0
+13	57.5	0
+14	57.5	0
+15	57.5	0
+16	57.5	0
+17	57.5	0
+18	57.5	0
+19	57.5	0
+20	57.5	0
+21	57.5	0
+22	57.5	0
+23	57.5	0
+24	57.5	0
+25	57.5	0
+26	57.5	0
+27	57.5	0
+28	57.5	0
+29	57.5	0
+30	57.5	0
+31	57.5	0
+32	57.5	0
+33	57.5	0
+34	57.5	0
+35	57.5	0
+36	57.5	0
+37	57.5	0
+38	57.5	0
+39	57.5	0
+40	57.5	0
+41	57.5	0
+42	57.5	0
+43	57.5	0
+44	57.5	0
+45	57.5	0
+46	57.5	0
+47	57.5	0
+48	57.5	0
+49	57.5	0
+50	57.5	0
+51	57.5	0
+52	57.5	0
+53	57.5	0
+54	57.5	0
+55	57.5	0
+56	57.5	0
+57	57.5	0
+58	57.5	0
+59	57.5	0
+60	57.5	0
+61	57.5	0
+62	57.5	0
+63	57.5	0
+64	57.5	0
+65	57.5	0
+66	57.5	0
+67	57.5	0
+68	57.5	0
+69	57.5	0
+70	57.5	0
+71	57.5	0
+72	57.5	0
+73	57.5	0
+74	57.5	0
+75	57.5	0
+76	57.5	0
+77	57.5	0
+78	57.5	0
+79	57.5	0
+80	57.5	0
+81	57.5	0
+82	57.5	0
+83	57.5	0
+84	57.5	0
+85	57.5	0
+86	57.5	0
+87	57.5	0
+88	57.5	0
+89	57.5	0
+90	57.5	0
+91	57.5	0
+92	57.5	0
+93	57.5	0
+94	57.5	0
+95	57.5	0
+96	57.5	0
+97	57.5	0
+98	57.5	0
+99	57.5	0
+100	57.5	0
+101	57.5	0
+102	57.5	0
+103	57.5	0
+104	57.5	0
+105	57.5	0
+106	57.5	0
+107	57.5	0
+108	57.5	0
+109	57.5	0
+110	57.5	0
+111	57.5	0
+112	57.5	0
+113	57.5	0
+114	57.5	0
+115	57.5	0
+116	57.5	0
+117	57.5	0
+118	57.5	0
+119	57.5	0
+120	57.5	0
+121	57.5	0
+122	57.5	0
+123	57.5	0
+124	57.5	0
+125	57.5	0
+126	57.5	0
+127	57.5	0
+128	57.5	0
+129	57.5	0
+130	57.5	0
+131	57.5	0
+132	57.5	0
+133	57.5	0
+134	57.5	0
+135	57.5	0
+136	57.5	0
+137	57.5	0
+138	57.5	0
+139	57.5	0
+140	57.5	0
+141	57.5	0
+142	57.5	0
+143	57.5	0
+144	57.5	0
+145	57.5	0
+146	57.5	0
+147	57.5	0
+148	57.5	0
+149	57.5	0
+150	57.5	0
+151	57.5	0
+152	57.5	0
+153	57.5	0
+154	57.5	0
+155	57.5	0
+156	57.5	0
+157	57.5	0
+158	57.5	0
+159	57.5	0
+160	57.5	0
+161	57.5	0
+162	57.5	0
+163	57.5	0
+164	57.5	0
+165	57.5	0
+166	57.5	0
+167	57.5	0
+168	57.5	0
+169	57.5	0
+170	57.5	0
+171	57.5	0
+172	57.5	0
+173	57.5	0
+174	57.5	0
+175	57.5	0
+176	57.5	0
+177	57.5	0
+178	57.5	0
+179	57.5	0
+180	57.5	0
+181	57.5	0
+182	57.5	0
+183	57.5	0
+184	57.5	0
+185	57.5	0
+186	57.5	0
+187	57.5	0
+188	57.5	0
+189	57.5	0
+190	57.5	0
+191	57.5	0
+192	57.5	0
+193	57.5	0
+194	57.5	0
+195	57.5	0
+196	57.5	0
+197	57.5	0
+198	57.5	0
+199	57.5	0
+200	57.5	0
+201	57.5	0
+202	57.5	0
+203	57.5	0
+204	57.5	0
+205	57.5	0
+206	57.5	0
+207	57.5	0
+208	57.5	0
+209	57.5	0
+210	57.5	0
+211	57.5	0
+212	57.5	0
+213	57.5	0
+214	57.5	0
+215	57.5	0
+216	57.5	0
+217	57.5	0
+218	57.5	0
+219	57.5	0
+220	57.5	0
+221	57.5	0
+222	57.5	0
+223	57.5	0
+224	57.5	0
+225	57.5	0
+226	57.5	0
+227	57.5	0
+228	57.5	0
+229	57.5	0
+230	57.5	0
+231	57.5	0
+232	57.5	0
+233	57.5	0
+234	57.5	0
+235	57.5	0
+236	57.5	0
+237	57.5	0
+238	57.5	0
+239	57.5	0
+240	57.5	0
+241	57.5	0
+242	57.5	0
+243	57.5	0
+244	57.5	0
+245	57.5	0
+246	57.5	0
+247	57.5	0
+248	57.5	0
+249	57.5	0
+250	57.5	0
+251	57.5	0
+252	57.5	0
+253	57.5	0
+254	57.5	0
+255	57.5	0
+256	57.5	0
+257	57.5	0
+258	57.5	0
+259	57.5	0
+260	57.5	0
+261	57.5	0
+262	57.5	0
+263	57.5	0
+264	57.5	0
+265	57.5	0
+266	57.5	0
+267	57.5	0
+268	57.5	0
+269	57.5	0
+270	57.5	0
+271	57.5	0
+272	57.5	0
+273	57.5	0
+274	57.5	0
+275	57.5	0
+276	57.5	0
+277	57.5	0
+278	57.5	0
+279	57.5	0
+280	57.5	0
+281	57.5	0
+282	57.5	0
+283	57.5	0
+284	57.5	0
+285	57.5	0
+286	57.5	0
+287	57.5	0
+288	57.5	0
+289	57.5	0
+290	57.5	0
+291	57.5	0
+292	57.5	0
+293	57.5	0
+294	57.5	0
+295	57.5	0
+296	57.5	0
+297	57.5	0
+298	57.5	0
+299	57.5	0
+300	57.5	0
+301	57.5	0
+302	57.5	0
+303	57.5	0
+304	57.5	0
+305	57.5	0
+306	57.5	0
+307	57.5	0
+308	57.5	0
+309	57.5	0
+310	57.5	0
+311	57.5	0
+312	57.5	0
+313	57.5	0
+314	57.5	0
+315	57.5	0
+316	57.5	0
+317	57.5	0
+318	57.5	0
+319	57.5	0
+320	57.5	0
+321	57.5	0
+322	57.5	0
+323	57.5	0
+324	57.5	0
+325	57.5	0
+326	57.5	0
+327	57.5	0
+328	57.5	0
+329	57.5	0
+330	57.5	0
+331	57.5	0
+332	57.5	0
+333	57.5	0
+334	57.5	0
+335	57.5	0
+336	57.5	0
+337	57.5	0
+338	57.5	0
+339	57.5	0
+340	57.5	0
+341	57.5	0
+342	57.5	0
+343	57.5	0
+344	57.5	0
+345	57.5	0
+346	57.5	0
+347	57.5	0
+348	57.5	0
+349	57.5	0
+350	57.5	0
+351	57.5	0
+352	57.5	0
+353	57.5	0
+354	57.5	0
+355	57.5	0
+356	57.5	0
+357	57.5	0
+358	57.5	0
+359	57.5	0
+360	57.5	0
+0	58	0
+1	58	0
+2	58	0
+3	58	0
+4	58	0
+5	58	0
+6	58	0
+7	58	0
+8	58	0
+9	58	0
+10	58	0
+11	58	0
+12	58	0
+13	58	0
+14	58	0
+15	58	0
+16	58	0
+17	58	0
+18	58	0
+19	58	0
+20	58	0
+21	58	0
+22	58	0
+23	58	0
+24	58	0
+25	58	0
+26	58	0
+27	58	0
+28	58	0
+29	58	0
+30	58	0
+31	58	0
+32	58	0
+33	58	0
+34	58	0
+35	58	0
+36	58	0
+37	58	0
+38	58	0
+39	58	0
+40	58	0
+41	58	0
+42	58	0
+43	58	0
+44	58	0
+45	58	0
+46	58	0
+47	58	0
+48	58	0
+49	58	0
+50	58	0
+51	58	0
+52	58	0
+53	58	0
+54	58	0
+55	58	0
+56	58	0
+57	58	0
+58	58	0
+59	58	0
+60	58	0
+61	58	0
+62	58	0
+63	58	0
+64	58	0
+65	58	0
+66	58	0
+67	58	0
+68	58	0
+69	58	0
+70	58	0
+71	58	0
+72	58	0
+73	58	0
+74	58	0
+75	58	0
+76	58	0
+77	58	0
+78	58	0
+79	58	0
+80	58	0
+81	58	0
+82	58	0
+83	58	0
+84	58	0
+85	58	0
+86	58	0
+87	58	0
+88	58	0
+89	58	0
+90	58	0
+91	58	0
+92	58	0
+93	58	0
+94	58	0
+95	58	0
+96	58	0
+97	58	0
+98	58	0
+99	58	0
+100	58	0
+101	58	0
+102	58	0
+103	58	0
+104	58	0
+105	58	0
+106	58	0
+107	58	0
+108	58	0
+109	58	0
+110	58	0
+111	58	0
+112	58	0
+113	58	0
+114	58	0
+115	58	0
+116	58	0
+117	58	0
+118	58	0
+119	58	0
+120	58	0
+121	58	0
+122	58	0
+123	58	0
+124	58	0
+125	58	0
+126	58	0
+127	58	0
+128	58	0
+129	58	0
+130	58	0
+131	58	0
+132	58	0
+133	58	0
+134	58	0
+135	58	0
+136	58	0
+137	58	0
+138	58	0
+139	58	0
+140	58	0
+141	58	0
+142	58	0
+143	58	0
+144	58	0
+145	58	0
+146	58	0
+147	58	0
+148	58	0
+149	58	0
+150	58	0
+151	58	0
+152	58	0
+153	58	0
+154	58	0
+155	58	0
+156	58	0
+157	58	0
+158	58	0
+159	58	0
+160	58	0
+161	58	0
+162	58	0
+163	58	0
+164	58	0
+165	58	0
+166	58	0
+167	58	0
+168	58	0
+169	58	0
+170	58	0
+171	58	0
+172	58	0
+173	58	0
+174	58	0
+175	58	0
+176	58	0
+177	58	0
+178	58	0
+179	58	0
+180	58	0
+181	58	0
+182	58	0
+183	58	0
+184	58	0
+185	58	0
+186	58	0
+187	58	0
+188	58	0
+189	58	0
+190	58	0
+191	58	0
+192	58	0
+193	58	0
+194	58	0
+195	58	0
+196	58	0
+197	58	0
+198	58	0
+199	58	0
+200	58	0
+201	58	0
+202	58	0
+203	58	0
+204	58	0
+205	58	0
+206	58	0
+207	58	0
+208	58	0
+209	58	0
+210	58	0
+211	58	0
+212	58	0
+213	58	0
+214	58	0
+215	58	0
+216	58	0
+217	58	0
+218	58	0
+219	58	0
+220	58	0
+221	58	0
+222	58	0
+223	58	0
+224	58	0
+225	58	0
+226	58	0
+227	58	0
+228	58	0
+229	58	0
+230	58	0
+231	58	0
+232	58	0
+233	58	0
+234	58	0
+235	58	0
+236	58	0
+237	58	0
+238	58	0
+239	58	0
+240	58	0
+241	58	0
+242	58	0
+243	58	0
+244	58	0
+245	58	0
+246	58	0
+247	58	0
+248	58	0
+249	58	0
+250	58	0
+251	58	0
+252	58	0
+253	58	0
+254	58	0
+255	58	0
+256	58	0
+257	58	0
+258	58	0
+259	58	0
+260	58	0
+261	58	0
+262	58	0
+263	58	0
+264	58	0
+265	58	0
+266	58	0
+267	58	0
+268	58	0
+269	58	0
+270	58	0
+271	58	0
+272	58	0
+273	58	0
+274	58	0
+275	58	0
+276	58	0
+277	58	0
+278	58	0
+279	58	0
+280	58	0
+281	58	0
+282	58	0
+283	58	0
+284	58	0
+285	58	0
+286	58	0
+287	58	0
+288	58	0
+289	58	0
+290	58	0
+291	58	0
+292	58	0
+293	58	0
+294	58	0
+295	58	0
+296	58	0
+297	58	0
+298	58	0
+299	58	0
+300	58	0
+301	58	0
+302	58	0
+303	58	0
+304	58	0
+305	58	0
+306	58	0
+307	58	0
+308	58	0
+309	58	0
+310	58	0
+311	58	0
+312	58	0
+313	58	0
+314	58	0
+315	58	0
+316	58	0
+317	58	0
+318	58	0
+319	58	0
+320	58	0
+321	58	0
+322	58	0
+323	58	0
+324	58	0
+325	58	0
+326	58	0
+327	58	0
+328	58	0
+329	58	0
+330	58	0
+331	58	0
+332	58	0
+333	58	0
+334	58	0
+335	58	0
+336	58	0
+337	58	0
+338	58	0
+339	58	0
+340	58	0
+341	58	0
+342	58	0
+343	58	0
+344	58	0
+345	58	0
+346	58	0
+347	58	0
+348	58	0
+349	58	0
+350	58	0
+351	58	0
+352	58	0
+353	58	0
+354	58	0
+355	58	0
+356	58	0
+357	58	0
+358	58	0
+359	58	0
+360	58	0
+0	58.5	0
+1	58.5	0
+2	58.5	0
+3	58.5	0
+4	58.5	0
+5	58.5	0
+6	58.5	0
+7	58.5	0
+8	58.5	0
+9	58.5	0
+10	58.5	0
+11	58.5	0
+12	58.5	0
+13	58.5	0
+14	58.5	0
+15	58.5	0
+16	58.5	0
+17	58.5	0
+18	58.5	0
+19	58.5	0
+20	58.5	0
+21	58.5	0
+22	58.5	0
+23	58.5	0
+24	58.5	0
+25	58.5	0
+26	58.5	0
+27	58.5	0
+28	58.5	0
+29	58.5	0
+30	58.5	0
+31	58.5	0
+32	58.5	0
+33	58.5	0
+34	58.5	0
+35	58.5	0
+36	58.5	0
+37	58.5	0
+38	58.5	0
+39	58.5	0
+40	58.5	0
+41	58.5	0
+42	58.5	0
+43	58.5	0
+44	58.5	0
+45	58.5	0
+46	58.5	0
+47	58.5	0
+48	58.5	0
+49	58.5	0
+50	58.5	0
+51	58.5	0
+52	58.5	0
+53	58.5	0
+54	58.5	0
+55	58.5	0
+56	58.5	0
+57	58.5	0
+58	58.5	0
+59	58.5	0
+60	58.5	0
+61	58.5	0
+62	58.5	0
+63	58.5	0
+64	58.5	0
+65	58.5	0
+66	58.5	0
+67	58.5	0
+68	58.5	0
+69	58.5	0
+70	58.5	0
+71	58.5	0
+72	58.5	0
+73	58.5	0
+74	58.5	0
+75	58.5	0
+76	58.5	0
+77	58.5	0
+78	58.5	0
+79	58.5	0
+80	58.5	0
+81	58.5	0
+82	58.5	0
+83	58.5	0
+84	58.5	0
+85	58.5	0
+86	58.5	0
+87	58.5	0
+88	58.5	0
+89	58.5	0
+90	58.5	0
+91	58.5	0
+92	58.5	0
+93	58.5	0
+94	58.5	0
+95	58.5	0
+96	58.5	0
+97	58.5	0
+98	58.5	0
+99	58.5	0
+100	58.5	0
+101	58.5	0
+102	58.5	0
+103	58.5	0
+104	58.5	0
+105	58.5	0
+106	58.5	0
+107	58.5	0
+108	58.5	0
+109	58.5	0
+110	58.5	0
+111	58.5	0
+112	58.5	0
+113	58.5	0
+114	58.5	0
+115	58.5	0
+116	58.5	0
+117	58.5	0
+118	58.5	0
+119	58.5	0
+120	58.5	0
+121	58.5	0
+122	58.5	0
+123	58.5	0
+124	58.5	0
+125	58.5	0
+126	58.5	0
+127	58.5	0
+128	58.5	0
+129	58.5	0
+130	58.5	0
+131	58.5	0
+132	58.5	0
+133	58.5	0
+134	58.5	0
+135	58.5	0
+136	58.5	0
+137	58.5	0
+138	58.5	0
+139	58.5	0
+140	58.5	0
+141	58.5	0
+142	58.5	0
+143	58.5	0
+144	58.5	0
+145	58.5	0
+146	58.5	0
+147	58.5	0
+148	58.5	0
+149	58.5	0
+150	58.5	0
+151	58.5	0
+152	58.5	0
+153	58.5	0
+154	58.5	0
+155	58.5	0
+156	58.5	0
+157	58.5	0
+158	58.5	0
+159	58.5	0
+160	58.5	0
+161	58.5	0
+162	58.5	0
+163	58.5	0
+164	58.5	0
+165	58.5	0
+166	58.5	0
+167	58.5	0
+168	58.5	0
+169	58.5	0
+170	58.5	0
+171	58.5	0
+172	58.5	0
+173	58.5	0
+174	58.5	0
+175	58.5	0
+176	58.5	0
+177	58.5	0
+178	58.5	0
+179	58.5	0
+180	58.5	0
+181	58.5	0
+182	58.5	0
+183	58.5	0
+184	58.5	0
+185	58.5	0
+186	58.5	0
+187	58.5	0
+188	58.5	0
+189	58.5	0
+190	58.5	0
+191	58.5	0
+192	58.5	0
+193	58.5	0
+194	58.5	0
+195	58.5	0
+196	58.5	0
+197	58.5	0
+198	58.5	0
+199	58.5	0
+200	58.5	0
+201	58.5	0
+202	58.5	0
+203	58.5	0
+204	58.5	0
+205	58.5	0
+206	58.5	0
+207	58.5	0
+208	58.5	0
+209	58.5	0
+210	58.5	0
+211	58.5	0
+212	58.5	0
+213	58.5	0
+214	58.5	0
+215	58.5	0
+216	58.5	0
+217	58.5	0
+218	58.5	0
+219	58.5	0
+220	58.5	0
+221	58.5	0
+222	58.5	0
+223	58.5	0
+224	58.5	0
+225	58.5	0
+226	58.5	0
+227	58.5	0
+228	58.5	0
+229	58.5	0
+230	58.5	0
+231	58.5	0
+232	58.5	0
+233	58.5	0
+234	58.5	0
+235	58.5	0
+236	58.5	0
+237	58.5	0
+238	58.5	0
+239	58.5	0
+240	58.5	0
+241	58.5	0
+242	58.5	0
+243	58.5	0
+244	58.5	0
+245	58.5	0
+246	58.5	0
+247	58.5	0
+248	58.5	0
+249	58.5	0
+250	58.5	0
+251	58.5	0
+252	58.5	0
+253	58.5	0
+254	58.5	0
+255	58.5	0
+256	58.5	0
+257	58.5	0
+258	58.5	0
+259	58.5	0
+260	58.5	0
+261	58.5	0
+262	58.5	0
+263	58.5	0
+264	58.5	0
+265	58.5	0
+266	58.5	0
+267	58.5	0
+268	58.5	0
+269	58.5	0
+270	58.5	0
+271	58.5	0
+272	58.5	0
+273	58.5	0
+274	58.5	0
+275	58.5	0
+276	58.5	0
+277	58.5	0
+278	58.5	0
+279	58.5	0
+280	58.5	0
+281	58.5	0
+282	58.5	0
+283	58.5	0
+284	58.5	0
+285	58.5	0
+286	58.5	0
+287	58.5	0
+288	58.5	0
+289	58.5	0
+290	58.5	0
+291	58.5	0
+292	58.5	0
+293	58.5	0
+294	58.5	0
+295	58.5	0
+296	58.5	0
+297	58.5	0
+298	58.5	0
+299	58.5	0
+300	58.5	0
+301	58.5	0
+302	58.5	0
+303	58.5	0
+304	58.5	0
+305	58.5	0
+306	58.5	0
+307	58.5	0
+308	58.5	0
+309	58.5	0
+310	58.5	0
+311	58.5	0
+312	58.5	0
+313	58.5	0
+314	58.5	0
+315	58.5	0
+316	58.5	0
+317	58.5	0
+318	58.5	0
+319	58.5	0
+320	58.5	0
+321	58.5	0
+322	58.5	0
+323	58.5	0
+324	58.5	0
+325	58.5	0
+326	58.5	0
+327	58.5	0
+328	58.5	0
+329	58.5	0
+330	58.5	0
+331	58.5	0
+332	58.5	0
+333	58.5	0
+334	58.5	0
+335	58.5	0
+336	58.5	0
+337	58.5	0
+338	58.5	0
+339	58.5	0
+340	58.5	0
+341	58.5	0
+342	58.5	0
+343	58.5	0
+344	58.5	0
+345	58.5	0
+346	58.5	0
+347	58.5	0
+348	58.5	0
+349	58.5	0
+350	58.5	0
+351	58.5	0
+352	58.5	0
+353	58.5	0
+354	58.5	0
+355	58.5	0
+356	58.5	0
+357	58.5	0
+358	58.5	0
+359	58.5	0
+360	58.5	0
+0	59	0
+1	59	0
+2	59	0
+3	59	0
+4	59	0
+5	59	0
+6	59	0
+7	59	0
+8	59	0
+9	59	0
+10	59	0
+11	59	0
+12	59	0
+13	59	0
+14	59	0
+15	59	0
+16	59	0
+17	59	0
+18	59	0
+19	59	0
+20	59	0
+21	59	0
+22	59	0
+23	59	0
+24	59	0
+25	59	0
+26	59	0
+27	59	0
+28	59	0
+29	59	0
+30	59	0
+31	59	0
+32	59	0
+33	59	0
+34	59	0
+35	59	0
+36	59	0
+37	59	0
+38	59	0
+39	59	0
+40	59	0
+41	59	0
+42	59	0
+43	59	0
+44	59	0
+45	59	0
+46	59	0
+47	59	0
+48	59	0
+49	59	0
+50	59	0
+51	59	0
+52	59	0
+53	59	0
+54	59	0
+55	59	0
+56	59	0
+57	59	0
+58	59	0
+59	59	0
+60	59	0
+61	59	0
+62	59	0
+63	59	0
+64	59	0
+65	59	0
+66	59	0
+67	59	0
+68	59	0
+69	59	0
+70	59	0
+71	59	0
+72	59	0
+73	59	0
+74	59	0
+75	59	0
+76	59	0
+77	59	0
+78	59	0
+79	59	0
+80	59	0
+81	59	0
+82	59	0
+83	59	0
+84	59	0
+85	59	0
+86	59	0
+87	59	0
+88	59	0
+89	59	0
+90	59	0
+91	59	0
+92	59	0
+93	59	0
+94	59	0
+95	59	0
+96	59	0
+97	59	0
+98	59	0
+99	59	0
+100	59	0
+101	59	0
+102	59	0
+103	59	0
+104	59	0
+105	59	0
+106	59	0
+107	59	0
+108	59	0
+109	59	0
+110	59	0
+111	59	0
+112	59	0
+113	59	0
+114	59	0
+115	59	0
+116	59	0
+117	59	0
+118	59	0
+119	59	0
+120	59	0
+121	59	0
+122	59	0
+123	59	0
+124	59	0
+125	59	0
+126	59	0
+127	59	0
+128	59	0
+129	59	0
+130	59	0
+131	59	0
+132	59	0
+133	59	0
+134	59	0
+135	59	0
+136	59	0
+137	59	0
+138	59	0
+139	59	0
+140	59	0
+141	59	0
+142	59	0
+143	59	0
+144	59	0
+145	59	0
+146	59	0
+147	59	0
+148	59	0
+149	59	0
+150	59	0
+151	59	0
+152	59	0
+153	59	0
+154	59	0
+155	59	0
+156	59	0
+157	59	0
+158	59	0
+159	59	0
+160	59	0
+161	59	0
+162	59	0
+163	59	0
+164	59	0
+165	59	0
+166	59	0
+167	59	0
+168	59	0
+169	59	0
+170	59	0
+171	59	0
+172	59	0
+173	59	0
+174	59	0
+175	59	0
+176	59	0
+177	59	0
+178	59	0
+179	59	0
+180	59	0
+181	59	0
+182	59	0
+183	59	0
+184	59	0
+185	59	0
+186	59	0
+187	59	0
+188	59	0
+189	59	0
+190	59	0
+191	59	0
+192	59	0
+193	59	0
+194	59	0
+195	59	0
+196	59	0
+197	59	0
+198	59	0
+199	59	0
+200	59	0
+201	59	0
+202	59	0
+203	59	0
+204	59	0
+205	59	0
+206	59	0
+207	59	0
+208	59	0
+209	59	0
+210	59	0
+211	59	0
+212	59	0
+213	59	0
+214	59	0
+215	59	0
+216	59	0
+217	59	0
+218	59	0
+219	59	0
+220	59	0
+221	59	0
+222	59	0
+223	59	0
+224	59	0
+225	59	0
+226	59	0
+227	59	0
+228	59	0
+229	59	0
+230	59	0
+231	59	0
+232	59	0
+233	59	0
+234	59	0
+235	59	0
+236	59	0
+237	59	0
+238	59	0
+239	59	0
+240	59	0
+241	59	0
+242	59	0
+243	59	0
+244	59	0
+245	59	0
+246	59	0
+247	59	0
+248	59	0
+249	59	0
+250	59	0
+251	59	0
+252	59	0
+253	59	0
+254	59	0
+255	59	0
+256	59	0
+257	59	0
+258	59	0
+259	59	0
+260	59	0
+261	59	0
+262	59	0
+263	59	0
+264	59	0
+265	59	0
+266	59	0
+267	59	0
+268	59	0
+269	59	0
+270	59	0
+271	59	0
+272	59	0
+273	59	0
+274	59	0
+275	59	0
+276	59	0
+277	59	0
+278	59	0
+279	59	0
+280	59	0
+281	59	0
+282	59	0
+283	59	0
+284	59	0
+285	59	0
+286	59	0
+287	59	0
+288	59	0
+289	59	0
+290	59	0
+291	59	0
+292	59	0
+293	59	0
+294	59	0
+295	59	0
+296	59	0
+297	59	0
+298	59	0
+299	59	0
+300	59	0
+301	59	0
+302	59	0
+303	59	0
+304	59	0
+305	59	0
+306	59	0
+307	59	0
+308	59	0
+309	59	0
+310	59	0
+311	59	0
+312	59	0
+313	59	0
+314	59	0
+315	59	0
+316	59	0
+317	59	0
+318	59	0
+319	59	0
+320	59	0
+321	59	0
+322	59	0
+323	59	0
+324	59	0
+325	59	0
+326	59	0
+327	59	0
+328	59	0
+329	59	0
+330	59	0
+331	59	0
+332	59	0
+333	59	0
+334	59	0
+335	59	0
+336	59	0
+337	59	0
+338	59	0
+339	59	0
+340	59	0
+341	59	0
+342	59	0
+343	59	0
+344	59	0
+345	59	0
+346	59	0
+347	59	0
+348	59	0
+349	59	0
+350	59	0
+351	59	0
+352	59	0
+353	59	0
+354	59	0
+355	59	0
+356	59	0
+357	59	0
+358	59	0
+359	59	0
+360	59	0
+0	59.5	0
+1	59.5	0
+2	59.5	0
+3	59.5	0
+4	59.5	0
+5	59.5	0
+6	59.5	0
+7	59.5	0
+8	59.5	0
+9	59.5	0
+10	59.5	0
+11	59.5	0
+12	59.5	0
+13	59.5	0
+14	59.5	0
+15	59.5	0
+16	59.5	0
+17	59.5	0
+18	59.5	0
+19	59.5	0
+20	59.5	0
+21	59.5	0
+22	59.5	0
+23	59.5	0
+24	59.5	0
+25	59.5	0
+26	59.5	0
+27	59.5	0
+28	59.5	0
+29	59.5	0
+30	59.5	0
+31	59.5	0
+32	59.5	0
+33	59.5	0
+34	59.5	0
+35	59.5	0
+36	59.5	0
+37	59.5	0
+38	59.5	0
+39	59.5	0
+40	59.5	0
+41	59.5	0
+42	59.5	0
+43	59.5	0
+44	59.5	0
+45	59.5	0
+46	59.5	0
+47	59.5	0
+48	59.5	0
+49	59.5	0
+50	59.5	0
+51	59.5	0
+52	59.5	0
+53	59.5	0
+54	59.5	0
+55	59.5	0
+56	59.5	0
+57	59.5	0
+58	59.5	0
+59	59.5	0
+60	59.5	0
+61	59.5	0
+62	59.5	0
+63	59.5	0
+64	59.5	0
+65	59.5	0
+66	59.5	0
+67	59.5	0
+68	59.5	0
+69	59.5	0
+70	59.5	0
+71	59.5	0
+72	59.5	0
+73	59.5	0
+74	59.5	0
+75	59.5	0
+76	59.5	0
+77	59.5	0
+78	59.5	0
+79	59.5	0
+80	59.5	0
+81	59.5	0
+82	59.5	0
+83	59.5	0
+84	59.5	0
+85	59.5	0
+86	59.5	0
+87	59.5	0
+88	59.5	0
+89	59.5	0
+90	59.5	0
+91	59.5	0
+92	59.5	0
+93	59.5	0
+94	59.5	0
+95	59.5	0
+96	59.5	0
+97	59.5	0
+98	59.5	0
+99	59.5	0
+100	59.5	0
+101	59.5	0
+102	59.5	0
+103	59.5	0
+104	59.5	0
+105	59.5	0
+106	59.5	0
+107	59.5	0
+108	59.5	0
+109	59.5	0
+110	59.5	0
+111	59.5	0
+112	59.5	0
+113	59.5	0
+114	59.5	0
+115	59.5	0
+116	59.5	0
+117	59.5	0
+118	59.5	0
+119	59.5	0
+120	59.5	0
+121	59.5	0
+122	59.5	0
+123	59.5	0
+124	59.5	0
+125	59.5	0
+126	59.5	0
+127	59.5	0
+128	59.5	0
+129	59.5	0
+130	59.5	0
+131	59.5	0
+132	59.5	0
+133	59.5	0
+134	59.5	0
+135	59.5	0
+136	59.5	0
+137	59.5	0
+138	59.5	0
+139	59.5	0
+140	59.5	0
+141	59.5	0
+142	59.5	0
+143	59.5	0
+144	59.5	0
+145	59.5	0
+146	59.5	0
+147	59.5	0
+148	59.5	0
+149	59.5	0
+150	59.5	0
+151	59.5	0
+152	59.5	0
+153	59.5	0
+154	59.5	0
+155	59.5	0
+156	59.5	0
+157	59.5	0
+158	59.5	0
+159	59.5	0
+160	59.5	0
+161	59.5	0
+162	59.5	0
+163	59.5	0
+164	59.5	0
+165	59.5	0
+166	59.5	0
+167	59.5	0
+168	59.5	0
+169	59.5	0
+170	59.5	0
+171	59.5	0
+172	59.5	0
+173	59.5	0
+174	59.5	0
+175	59.5	0
+176	59.5	0
+177	59.5	0
+178	59.5	0
+179	59.5	0
+180	59.5	0
+181	59.5	0
+182	59.5	0
+183	59.5	0
+184	59.5	0
+185	59.5	0
+186	59.5	0
+187	59.5	0
+188	59.5	0
+189	59.5	0
+190	59.5	0
+191	59.5	0
+192	59.5	0
+193	59.5	0
+194	59.5	0
+195	59.5	0
+196	59.5	0
+197	59.5	0
+198	59.5	0
+199	59.5	0
+200	59.5	0
+201	59.5	0
+202	59.5	0
+203	59.5	0
+204	59.5	0
+205	59.5	0
+206	59.5	0
+207	59.5	0
+208	59.5	0
+209	59.5	0
+210	59.5	0
+211	59.5	0
+212	59.5	0
+213	59.5	0
+214	59.5	0
+215	59.5	0
+216	59.5	0
+217	59.5	0
+218	59.5	0
+219	59.5	0
+220	59.5	0
+221	59.5	0
+222	59.5	0
+223	59.5	0
+224	59.5	0
+225	59.5	0
+226	59.5	0
+227	59.5	0
+228	59.5	0
+229	59.5	0
+230	59.5	0
+231	59.5	0
+232	59.5	0
+233	59.5	0
+234	59.5	0
+235	59.5	0
+236	59.5	0
+237	59.5	0
+238	59.5	0
+239	59.5	0
+240	59.5	0
+241	59.5	0
+242	59.5	0
+243	59.5	0
+244	59.5	0
+245	59.5	0
+246	59.5	0
+247	59.5	0
+248	59.5	0
+249	59.5	0
+250	59.5	0
+251	59.5	0
+252	59.5	0
+253	59.5	0
+254	59.5	0
+255	59.5	0
+256	59.5	0
+257	59.5	0
+258	59.5	0
+259	59.5	0
+260	59.5	0
+261	59.5	0
+262	59.5	0
+263	59.5	0
+264	59.5	0
+265	59.5	0
+266	59.5	0
+267	59.5	0
+268	59.5	0
+269	59.5	0
+270	59.5	0
+271	59.5	0
+272	59.5	0
+273	59.5	0
+274	59.5	0
+275	59.5	0
+276	59.5	0
+277	59.5	0
+278	59.5	0
+279	59.5	0
+280	59.5	0
+281	59.5	0
+282	59.5	0
+283	59.5	0
+284	59.5	0
+285	59.5	0
+286	59.5	0
+287	59.5	0
+288	59.5	0
+289	59.5	0
+290	59.5	0
+291	59.5	0
+292	59.5	0
+293	59.5	0
+294	59.5	0
+295	59.5	0
+296	59.5	0
+297	59.5	0
+298	59.5	0
+299	59.5	0
+300	59.5	0
+301	59.5	0
+302	59.5	0
+303	59.5	0
+304	59.5	0
+305	59.5	0
+306	59.5	0
+307	59.5	0
+308	59.5	0
+309	59.5	0
+310	59.5	0
+311	59.5	0
+312	59.5	0
+313	59.5	0
+314	59.5	0
+315	59.5	0
+316	59.5	0
+317	59.5	0
+318	59.5	0
+319	59.5	0
+320	59.5	0
+321	59.5	0
+322	59.5	0
+323	59.5	0
+324	59.5	0
+325	59.5	0
+326	59.5	0
+327	59.5	0
+328	59.5	0
+329	59.5	0
+330	59.5	0
+331	59.5	0
+332	59.5	0
+333	59.5	0
+334	59.5	0
+335	59.5	0
+336	59.5	0
+337	59.5	0
+338	59.5	0
+339	59.5	0
+340	59.5	0
+341	59.5	0
+342	59.5	0
+343	59.5	0
+344	59.5	0
+345	59.5	0
+346	59.5	0
+347	59.5	0
+348	59.5	0
+349	59.5	0
+350	59.5	0
+351	59.5	0
+352	59.5	0
+353	59.5	0
+354	59.5	0
+355	59.5	0
+356	59.5	0
+357	59.5	0
+358	59.5	0
+359	59.5	0
+360	59.5	0
+0	60	0
+1	60	0
+2	60	0
+3	60	0
+4	60	0
+5	60	0
+6	60	0
+7	60	0
+8	60	0
+9	60	0
+10	60	0
+11	60	0
+12	60	0
+13	60	0
+14	60	0
+15	60	0
+16	60	0
+17	60	0
+18	60	0
+19	60	0
+20	60	0
+21	60	0
+22	60	0
+23	60	0
+24	60	0
+25	60	0
+26	60	0
+27	60	0
+28	60	0
+29	60	0
+30	60	0
+31	60	0
+32	60	0
+33	60	0
+34	60	0
+35	60	0
+36	60	0
+37	60	0
+38	60	0
+39	60	0
+40	60	0
+41	60	0
+42	60	0
+43	60	0
+44	60	0
+45	60	0
+46	60	0
+47	60	0
+48	60	0
+49	60	0
+50	60	0
+51	60	0
+52	60	0
+53	60	0
+54	60	0
+55	60	0
+56	60	0
+57	60	0
+58	60	0
+59	60	0
+60	60	0
+61	60	0
+62	60	0
+63	60	0
+64	60	0
+65	60	0
+66	60	0
+67	60	0
+68	60	0
+69	60	0
+70	60	0
+71	60	0
+72	60	0
+73	60	0
+74	60	0
+75	60	0
+76	60	0
+77	60	0
+78	60	0
+79	60	0
+80	60	0
+81	60	0
+82	60	0
+83	60	0
+84	60	0
+85	60	0
+86	60	0
+87	60	0
+88	60	0
+89	60	0
+90	60	0
+91	60	0
+92	60	0
+93	60	0
+94	60	0
+95	60	0
+96	60	0
+97	60	0
+98	60	0
+99	60	0
+100	60	0
+101	60	0
+102	60	0
+103	60	0
+104	60	0
+105	60	0
+106	60	0
+107	60	0
+108	60	0
+109	60	0
+110	60	0
+111	60	0
+112	60	0
+113	60	0
+114	60	0
+115	60	0
+116	60	0
+117	60	0
+118	60	0
+119	60	0
+120	60	0
+121	60	0
+122	60	0
+123	60	0
+124	60	0
+125	60	0
+126	60	0
+127	60	0
+128	60	0
+129	60	0
+130	60	0
+131	60	0
+132	60	0
+133	60	0
+134	60	0
+135	60	0
+136	60	0
+137	60	0
+138	60	0
+139	60	0
+140	60	0
+141	60	0
+142	60	0
+143	60	0
+144	60	0
+145	60	0
+146	60	0
+147	60	0
+148	60	0
+149	60	0
+150	60	0
+151	60	0
+152	60	0
+153	60	0
+154	60	0
+155	60	0
+156	60	0
+157	60	0
+158	60	0
+159	60	0
+160	60	0
+161	60	0
+162	60	0
+163	60	0
+164	60	0
+165	60	0
+166	60	0
+167	60	0
+168	60	0
+169	60	0
+170	60	0
+171	60	0
+172	60	0
+173	60	0
+174	60	0
+175	60	0
+176	60	0
+177	60	0
+178	60	0
+179	60	0
+180	60	0
+181	60	0
+182	60	0
+183	60	0
+184	60	0
+185	60	0
+186	60	0
+187	60	0
+188	60	0
+189	60	0
+190	60	0
+191	60	0
+192	60	0
+193	60	0
+194	60	0
+195	60	0
+196	60	0
+197	60	0
+198	60	0
+199	60	0
+200	60	0
+201	60	0
+202	60	0
+203	60	0
+204	60	0
+205	60	0
+206	60	0
+207	60	0
+208	60	0
+209	60	0
+210	60	0
+211	60	0
+212	60	0
+213	60	0
+214	60	0
+215	60	0
+216	60	0
+217	60	0
+218	60	0
+219	60	0
+220	60	0
+221	60	0
+222	60	0
+223	60	0
+224	60	0
+225	60	0
+226	60	0
+227	60	0
+228	60	0
+229	60	0
+230	60	0
+231	60	0
+232	60	0
+233	60	0
+234	60	0
+235	60	0
+236	60	0
+237	60	0
+238	60	0
+239	60	0
+240	60	0
+241	60	0
+242	60	0
+243	60	0
+244	60	0
+245	60	0
+246	60	0
+247	60	0
+248	60	0
+249	60	0
+250	60	0
+251	60	0
+252	60	0
+253	60	0
+254	60	0
+255	60	0
+256	60	0
+257	60	0
+258	60	0
+259	60	0
+260	60	0
+261	60	0
+262	60	0
+263	60	0
+264	60	0
+265	60	0
+266	60	0
+267	60	0
+268	60	0
+269	60	0
+270	60	0
+271	60	0
+272	60	0
+273	60	0
+274	60	0
+275	60	0
+276	60	0
+277	60	0
+278	60	0
+279	60	0
+280	60	0
+281	60	0
+282	60	0
+283	60	0
+284	60	0
+285	60	0
+286	60	0
+287	60	0
+288	60	0
+289	60	0
+290	60	0
+291	60	0
+292	60	0
+293	60	0
+294	60	0
+295	60	0
+296	60	0
+297	60	0
+298	60	0
+299	60	0
+300	60	0
+301	60	0
+302	60	0
+303	60	0
+304	60	0
+305	60	0
+306	60	0
+307	60	0
+308	60	0
+309	60	0
+310	60	0
+311	60	0
+312	60	0
+313	60	0
+314	60	0
+315	60	0
+316	60	0
+317	60	0
+318	60	0
+319	60	0
+320	60	0
+321	60	0
+322	60	0
+323	60	0
+324	60	0
+325	60	0
+326	60	0
+327	60	0
+328	60	0
+329	60	0
+330	60	0
+331	60	0
+332	60	0
+333	60	0
+334	60	0
+335	60	0
+336	60	0
+337	60	0
+338	60	0
+339	60	0
+340	60	0
+341	60	0
+342	60	0
+343	60	0
+344	60	0
+345	60	0
+346	60	0
+347	60	0
+348	60	0
+349	60	0
+350	60	0
+351	60	0
+352	60	0
+353	60	0
+354	60	0
+355	60	0
+356	60	0
+357	60	0
+358	60	0
+359	60	0
+360	60	0
+0	60.5	0
+1	60.5	0
+2	60.5	0
+3	60.5	0
+4	60.5	0
+5	60.5	0
+6	60.5	0
+7	60.5	0
+8	60.5	0
+9	60.5	0
+10	60.5	0
+11	60.5	0
+12	60.5	0
+13	60.5	0
+14	60.5	0
+15	60.5	0
+16	60.5	0
+17	60.5	0
+18	60.5	0
+19	60.5	0
+20	60.5	0
+21	60.5	0
+22	60.5	0
+23	60.5	0
+24	60.5	0
+25	60.5	0
+26	60.5	0
+27	60.5	0
+28	60.5	0
+29	60.5	0
+30	60.5	0
+31	60.5	0
+32	60.5	0
+33	60.5	0
+34	60.5	0
+35	60.5	0
+36	60.5	0
+37	60.5	0
+38	60.5	0
+39	60.5	0
+40	60.5	0
+41	60.5	0
+42	60.5	0
+43	60.5	0
+44	60.5	0
+45	60.5	0
+46	60.5	0
+47	60.5	0
+48	60.5	0
+49	60.5	0
+50	60.5	0
+51	60.5	0
+52	60.5	0
+53	60.5	0
+54	60.5	0
+55	60.5	0
+56	60.5	0
+57	60.5	0
+58	60.5	0
+59	60.5	0
+60	60.5	0
+61	60.5	0
+62	60.5	0
+63	60.5	0
+64	60.5	0
+65	60.5	0
+66	60.5	0
+67	60.5	0
+68	60.5	0
+69	60.5	0
+70	60.5	0
+71	60.5	0
+72	60.5	0
+73	60.5	0
+74	60.5	0
+75	60.5	0
+76	60.5	0
+77	60.5	0
+78	60.5	0
+79	60.5	0
+80	60.5	0
+81	60.5	0
+82	60.5	0
+83	60.5	0
+84	60.5	0
+85	60.5	0
+86	60.5	0
+87	60.5	0
+88	60.5	0
+89	60.5	0
+90	60.5	0
+91	60.5	0
+92	60.5	0
+93	60.5	0
+94	60.5	0
+95	60.5	0
+96	60.5	0
+97	60.5	0
+98	60.5	0
+99	60.5	0
+100	60.5	0
+101	60.5	0
+102	60.5	0
+103	60.5	0
+104	60.5	0
+105	60.5	0
+106	60.5	0
+107	60.5	0
+108	60.5	0
+109	60.5	0
+110	60.5	0
+111	60.5	0
+112	60.5	0
+113	60.5	0
+114	60.5	0
+115	60.5	0
+116	60.5	0
+117	60.5	0
+118	60.5	0
+119	60.5	0
+120	60.5	0
+121	60.5	0
+122	60.5	0
+123	60.5	0
+124	60.5	0
+125	60.5	0
+126	60.5	0
+127	60.5	0
+128	60.5	0
+129	60.5	0
+130	60.5	0
+131	60.5	0
+132	60.5	0
+133	60.5	0
+134	60.5	0
+135	60.5	0
+136	60.5	0
+137	60.5	0
+138	60.5	0
+139	60.5	0
+140	60.5	0
+141	60.5	0
+142	60.5	0
+143	60.5	0
+144	60.5	0
+145	60.5	0
+146	60.5	0
+147	60.5	0
+148	60.5	0
+149	60.5	0
+150	60.5	0
+151	60.5	0
+152	60.5	0
+153	60.5	0
+154	60.5	0
+155	60.5	0
+156	60.5	0
+157	60.5	0
+158	60.5	0
+159	60.5	0
+160	60.5	0
+161	60.5	0
+162	60.5	0
+163	60.5	0
+164	60.5	0
+165	60.5	0
+166	60.5	0
+167	60.5	0
+168	60.5	0
+169	60.5	0
+170	60.5	0
+171	60.5	0
+172	60.5	0
+173	60.5	0
+174	60.5	0
+175	60.5	0
+176	60.5	0
+177	60.5	0
+178	60.5	0
+179	60.5	0
+180	60.5	0
+181	60.5	0
+182	60.5	0
+183	60.5	0
+184	60.5	0
+185	60.5	0
+186	60.5	0
+187	60.5	0
+188	60.5	0
+189	60.5	0
+190	60.5	0
+191	60.5	0
+192	60.5	0
+193	60.5	0
+194	60.5	0
+195	60.5	0
+196	60.5	0
+197	60.5	0
+198	60.5	0
+199	60.5	0
+200	60.5	0
+201	60.5	0
+202	60.5	0
+203	60.5	0
+204	60.5	0
+205	60.5	0
+206	60.5	0
+207	60.5	0
+208	60.5	0
+209	60.5	0
+210	60.5	0
+211	60.5	0
+212	60.5	0
+213	60.5	0
+214	60.5	0
+215	60.5	0
+216	60.5	0
+217	60.5	0
+218	60.5	0
+219	60.5	0
+220	60.5	0
+221	60.5	0
+222	60.5	0
+223	60.5	0
+224	60.5	0
+225	60.5	0
+226	60.5	0
+227	60.5	0
+228	60.5	0
+229	60.5	0
+230	60.5	0
+231	60.5	0
+232	60.5	0
+233	60.5	0
+234	60.5	0
+235	60.5	0
+236	60.5	0
+237	60.5	0
+238	60.5	0
+239	60.5	0
+240	60.5	0
+241	60.5	0
+242	60.5	0
+243	60.5	0
+244	60.5	0
+245	60.5	0
+246	60.5	0
+247	60.5	0
+248	60.5	0
+249	60.5	0
+250	60.5	0
+251	60.5	0
+252	60.5	0
+253	60.5	0
+254	60.5	0
+255	60.5	0
+256	60.5	0
+257	60.5	0
+258	60.5	0
+259	60.5	0
+260	60.5	0
+261	60.5	0
+262	60.5	0
+263	60.5	0
+264	60.5	0
+265	60.5	0
+266	60.5	0
+267	60.5	0
+268	60.5	0
+269	60.5	0
+270	60.5	0
+271	60.5	0
+272	60.5	0
+273	60.5	0
+274	60.5	0
+275	60.5	0
+276	60.5	0
+277	60.5	0
+278	60.5	0
+279	60.5	0
+280	60.5	0
+281	60.5	0
+282	60.5	0
+283	60.5	0
+284	60.5	0
+285	60.5	0
+286	60.5	0
+287	60.5	0
+288	60.5	0
+289	60.5	0
+290	60.5	0
+291	60.5	0
+292	60.5	0
+293	60.5	0
+294	60.5	0
+295	60.5	0
+296	60.5	0
+297	60.5	0
+298	60.5	0
+299	60.5	0
+300	60.5	0
+301	60.5	0
+302	60.5	0
+303	60.5	0
+304	60.5	0
+305	60.5	0
+306	60.5	0
+307	60.5	0
+308	60.5	0
+309	60.5	0
+310	60.5	0
+311	60.5	0
+312	60.5	0
+313	60.5	0
+314	60.5	0
+315	60.5	0
+316	60.5	0
+317	60.5	0
+318	60.5	0
+319	60.5	0
+320	60.5	0
+321	60.5	0
+322	60.5	0
+323	60.5	0
+324	60.5	0
+325	60.5	0
+326	60.5	0
+327	60.5	0
+328	60.5	0
+329	60.5	0
+330	60.5	0
+331	60.5	0
+332	60.5	0
+333	60.5	0
+334	60.5	0
+335	60.5	0
+336	60.5	0
+337	60.5	0
+338	60.5	0
+339	60.5	0
+340	60.5	0
+341	60.5	0
+342	60.5	0
+343	60.5	0
+344	60.5	0
+345	60.5	0
+346	60.5	0
+347	60.5	0
+348	60.5	0
+349	60.5	0
+350	60.5	0
+351	60.5	0
+352	60.5	0
+353	60.5	0
+354	60.5	0
+355	60.5	0
+356	60.5	0
+357	60.5	0
+358	60.5	0
+359	60.5	0
+360	60.5	0
+0	61	0
+1	61	0
+2	61	0
+3	61	0
+4	61	0
+5	61	0
+6	61	0
+7	61	0
+8	61	0
+9	61	0
+10	61	0
+11	61	0
+12	61	0
+13	61	0
+14	61	0
+15	61	0
+16	61	0
+17	61	0
+18	61	0
+19	61	0
+20	61	0
+21	61	0
+22	61	0
+23	61	0
+24	61	0
+25	61	0
+26	61	0
+27	61	0
+28	61	0
+29	61	0
+30	61	0
+31	61	0
+32	61	0
+33	61	0
+34	61	0
+35	61	0
+36	61	0
+37	61	0
+38	61	0
+39	61	0
+40	61	0
+41	61	0
+42	61	0
+43	61	0
+44	61	0
+45	61	0
+46	61	0
+47	61	0
+48	61	0
+49	61	0
+50	61	0
+51	61	0
+52	61	0
+53	61	0
+54	61	0
+55	61	0
+56	61	0
+57	61	0
+58	61	0
+59	61	0
+60	61	0
+61	61	0
+62	61	0
+63	61	0
+64	61	0
+65	61	0
+66	61	0
+67	61	0
+68	61	0
+69	61	0
+70	61	0
+71	61	0
+72	61	0
+73	61	0
+74	61	0
+75	61	0
+76	61	0
+77	61	0
+78	61	0
+79	61	0
+80	61	0
+81	61	0
+82	61	0
+83	61	0
+84	61	0
+85	61	0
+86	61	0
+87	61	0
+88	61	0
+89	61	0
+90	61	0
+91	61	0
+92	61	0
+93	61	0
+94	61	0
+95	61	0
+96	61	0
+97	61	0
+98	61	0
+99	61	0
+100	61	0
+101	61	0
+102	61	0
+103	61	0
+104	61	0
+105	61	0
+106	61	0
+107	61	0
+108	61	0
+109	61	0
+110	61	0
+111	61	0
+112	61	0
+113	61	0
+114	61	0
+115	61	0
+116	61	0
+117	61	0
+118	61	0
+119	61	0
+120	61	0
+121	61	0
+122	61	0
+123	61	0
+124	61	0
+125	61	0
+126	61	0
+127	61	0
+128	61	0
+129	61	0
+130	61	0
+131	61	0
+132	61	0
+133	61	0
+134	61	0
+135	61	0
+136	61	0
+137	61	0
+138	61	0
+139	61	0
+140	61	0
+141	61	0
+142	61	0
+143	61	0
+144	61	0
+145	61	0
+146	61	0
+147	61	0
+148	61	0
+149	61	0
+150	61	0
+151	61	0
+152	61	0
+153	61	0
+154	61	0
+155	61	0
+156	61	0
+157	61	0
+158	61	0
+159	61	0
+160	61	0
+161	61	0
+162	61	0
+163	61	0
+164	61	0
+165	61	0
+166	61	0
+167	61	0
+168	61	0
+169	61	0
+170	61	0
+171	61	0
+172	61	0
+173	61	0
+174	61	0
+175	61	0
+176	61	0
+177	61	0
+178	61	0
+179	61	0
+180	61	0
+181	61	0
+182	61	0
+183	61	0
+184	61	0
+185	61	0
+186	61	0
+187	61	0
+188	61	0
+189	61	0
+190	61	0
+191	61	0
+192	61	0
+193	61	0
+194	61	0
+195	61	0
+196	61	0
+197	61	0
+198	61	0
+199	61	0
+200	61	0
+201	61	0
+202	61	0
+203	61	0
+204	61	0
+205	61	0
+206	61	0
+207	61	0
+208	61	0
+209	61	0
+210	61	0
+211	61	0
+212	61	0
+213	61	0
+214	61	0
+215	61	0
+216	61	0
+217	61	0
+218	61	0
+219	61	0
+220	61	0
+221	61	0
+222	61	0
+223	61	0
+224	61	0
+225	61	0
+226	61	0
+227	61	0
+228	61	0
+229	61	0
+230	61	0
+231	61	0
+232	61	0
+233	61	0
+234	61	0
+235	61	0
+236	61	0
+237	61	0
+238	61	0
+239	61	0
+240	61	0
+241	61	0
+242	61	0
+243	61	0
+244	61	0
+245	61	0
+246	61	0
+247	61	0
+248	61	0
+249	61	0
+250	61	0
+251	61	0
+252	61	0
+253	61	0
+254	61	0
+255	61	0
+256	61	0
+257	61	0
+258	61	0
+259	61	0
+260	61	0
+261	61	0
+262	61	0
+263	61	0
+264	61	0
+265	61	0
+266	61	0
+267	61	0
+268	61	0
+269	61	0
+270	61	0
+271	61	0
+272	61	0
+273	61	0
+274	61	0
+275	61	0
+276	61	0
+277	61	0
+278	61	0
+279	61	0
+280	61	0
+281	61	0
+282	61	0
+283	61	0
+284	61	0
+285	61	0
+286	61	0
+287	61	0
+288	61	0
+289	61	0
+290	61	0
+291	61	0
+292	61	0
+293	61	0
+294	61	0
+295	61	0
+296	61	0
+297	61	0
+298	61	0
+299	61	0
+300	61	0
+301	61	0
+302	61	0
+303	61	0
+304	61	0
+305	61	0
+306	61	0
+307	61	0
+308	61	0
+309	61	0
+310	61	0
+311	61	0
+312	61	0
+313	61	0
+314	61	0
+315	61	0
+316	61	0
+317	61	0
+318	61	0
+319	61	0
+320	61	0
+321	61	0
+322	61	0
+323	61	0
+324	61	0
+325	61	0
+326	61	0
+327	61	0
+328	61	0
+329	61	0
+330	61	0
+331	61	0
+332	61	0
+333	61	0
+334	61	0
+335	61	0
+336	61	0
+337	61	0
+338	61	0
+339	61	0
+340	61	0
+341	61	0
+342	61	0
+343	61	0
+344	61	0
+345	61	0
+346	61	0
+347	61	0
+348	61	0
+349	61	0
+350	61	0
+351	61	0
+352	61	0
+353	61	0
+354	61	0
+355	61	0
+356	61	0
+357	61	0
+358	61	0
+359	61	0
+360	61	0
+0	61.5	0
+1	61.5	0
+2	61.5	0
+3	61.5	0
+4	61.5	0
+5	61.5	0
+6	61.5	0
+7	61.5	0
+8	61.5	0
+9	61.5	0
+10	61.5	0
+11	61.5	0
+12	61.5	0
+13	61.5	0
+14	61.5	0
+15	61.5	0
+16	61.5	0
+17	61.5	0
+18	61.5	0
+19	61.5	0
+20	61.5	0
+21	61.5	0
+22	61.5	0
+23	61.5	0
+24	61.5	0
+25	61.5	0
+26	61.5	0
+27	61.5	0
+28	61.5	0
+29	61.5	0
+30	61.5	0
+31	61.5	0
+32	61.5	0
+33	61.5	0
+34	61.5	0
+35	61.5	0
+36	61.5	0
+37	61.5	0
+38	61.5	0
+39	61.5	0
+40	61.5	0
+41	61.5	0
+42	61.5	0
+43	61.5	0
+44	61.5	0
+45	61.5	0
+46	61.5	0
+47	61.5	0
+48	61.5	0
+49	61.5	0
+50	61.5	0
+51	61.5	0
+52	61.5	0
+53	61.5	0
+54	61.5	0
+55	61.5	0
+56	61.5	0
+57	61.5	0
+58	61.5	0
+59	61.5	0
+60	61.5	0
+61	61.5	0
+62	61.5	0
+63	61.5	0
+64	61.5	0
+65	61.5	0
+66	61.5	0
+67	61.5	0
+68	61.5	0
+69	61.5	0
+70	61.5	0
+71	61.5	0
+72	61.5	0
+73	61.5	0
+74	61.5	0
+75	61.5	0
+76	61.5	0
+77	61.5	0
+78	61.5	0
+79	61.5	0
+80	61.5	0
+81	61.5	0
+82	61.5	0
+83	61.5	0
+84	61.5	0
+85	61.5	0
+86	61.5	0
+87	61.5	0
+88	61.5	0
+89	61.5	0
+90	61.5	0
+91	61.5	0
+92	61.5	0
+93	61.5	0
+94	61.5	0
+95	61.5	0
+96	61.5	0
+97	61.5	0
+98	61.5	0
+99	61.5	0
+100	61.5	0
+101	61.5	0
+102	61.5	0
+103	61.5	0
+104	61.5	0
+105	61.5	0
+106	61.5	0
+107	61.5	0
+108	61.5	0
+109	61.5	0
+110	61.5	0
+111	61.5	0
+112	61.5	0
+113	61.5	0
+114	61.5	0
+115	61.5	0
+116	61.5	0
+117	61.5	0
+118	61.5	0
+119	61.5	0
+120	61.5	0
+121	61.5	0
+122	61.5	0
+123	61.5	0
+124	61.5	0
+125	61.5	0
+126	61.5	0
+127	61.5	0
+128	61.5	0
+129	61.5	0
+130	61.5	0
+131	61.5	0
+132	61.5	0
+133	61.5	0
+134	61.5	0
+135	61.5	0
+136	61.5	0
+137	61.5	0
+138	61.5	0
+139	61.5	0
+140	61.5	0
+141	61.5	0
+142	61.5	0
+143	61.5	0
+144	61.5	0
+145	61.5	0
+146	61.5	0
+147	61.5	0
+148	61.5	0
+149	61.5	0
+150	61.5	0
+151	61.5	0
+152	61.5	0
+153	61.5	0
+154	61.5	0
+155	61.5	0
+156	61.5	0
+157	61.5	0
+158	61.5	0
+159	61.5	0
+160	61.5	0
+161	61.5	0
+162	61.5	0
+163	61.5	0
+164	61.5	0
+165	61.5	0
+166	61.5	0
+167	61.5	0
+168	61.5	0
+169	61.5	0
+170	61.5	0
+171	61.5	0
+172	61.5	0
+173	61.5	0
+174	61.5	0
+175	61.5	0
+176	61.5	0
+177	61.5	0
+178	61.5	0
+179	61.5	0
+180	61.5	0
+181	61.5	0
+182	61.5	0
+183	61.5	0
+184	61.5	0
+185	61.5	0
+186	61.5	0
+187	61.5	0
+188	61.5	0
+189	61.5	0
+190	61.5	0
+191	61.5	0
+192	61.5	0
+193	61.5	0
+194	61.5	0
+195	61.5	0
+196	61.5	0
+197	61.5	0
+198	61.5	0
+199	61.5	0
+200	61.5	0
+201	61.5	0
+202	61.5	0
+203	61.5	0
+204	61.5	0
+205	61.5	0
+206	61.5	0
+207	61.5	0
+208	61.5	0
+209	61.5	0
+210	61.5	0
+211	61.5	0
+212	61.5	0
+213	61.5	0
+214	61.5	0
+215	61.5	0
+216	61.5	0
+217	61.5	0
+218	61.5	0
+219	61.5	0
+220	61.5	0
+221	61.5	0
+222	61.5	0
+223	61.5	0
+224	61.5	0
+225	61.5	0
+226	61.5	0
+227	61.5	0
+228	61.5	0
+229	61.5	0
+230	61.5	0
+231	61.5	0
+232	61.5	0
+233	61.5	0
+234	61.5	0
+235	61.5	0
+236	61.5	0
+237	61.5	0
+238	61.5	0
+239	61.5	0
+240	61.5	0
+241	61.5	0
+242	61.5	0
+243	61.5	0
+244	61.5	0
+245	61.5	0
+246	61.5	0
+247	61.5	0
+248	61.5	0
+249	61.5	0
+250	61.5	0
+251	61.5	0
+252	61.5	0
+253	61.5	0
+254	61.5	0
+255	61.5	0
+256	61.5	0
+257	61.5	0
+258	61.5	0
+259	61.5	0
+260	61.5	0
+261	61.5	0
+262	61.5	0
+263	61.5	0
+264	61.5	0
+265	61.5	0
+266	61.5	0
+267	61.5	0
+268	61.5	0
+269	61.5	0
+270	61.5	0
+271	61.5	0
+272	61.5	0
+273	61.5	0
+274	61.5	0
+275	61.5	0
+276	61.5	0
+277	61.5	0
+278	61.5	0
+279	61.5	0
+280	61.5	0
+281	61.5	0
+282	61.5	0
+283	61.5	0
+284	61.5	0
+285	61.5	0
+286	61.5	0
+287	61.5	0
+288	61.5	0
+289	61.5	0
+290	61.5	0
+291	61.5	0
+292	61.5	0
+293	61.5	0
+294	61.5	0
+295	61.5	0
+296	61.5	0
+297	61.5	0
+298	61.5	0
+299	61.5	0
+300	61.5	0
+301	61.5	0
+302	61.5	0
+303	61.5	0
+304	61.5	0
+305	61.5	0
+306	61.5	0
+307	61.5	0
+308	61.5	0
+309	61.5	0
+310	61.5	0
+311	61.5	0
+312	61.5	0
+313	61.5	0
+314	61.5	0
+315	61.5	0
+316	61.5	0
+317	61.5	0
+318	61.5	0
+319	61.5	0
+320	61.5	0
+321	61.5	0
+322	61.5	0
+323	61.5	0
+324	61.5	0
+325	61.5	0
+326	61.5	0
+327	61.5	0
+328	61.5	0
+329	61.5	0
+330	61.5	0
+331	61.5	0
+332	61.5	0
+333	61.5	0
+334	61.5	0
+335	61.5	0
+336	61.5	0
+337	61.5	0
+338	61.5	0
+339	61.5	0
+340	61.5	0
+341	61.5	0
+342	61.5	0
+343	61.5	0
+344	61.5	0
+345	61.5	0
+346	61.5	0
+347	61.5	0
+348	61.5	0
+349	61.5	0
+350	61.5	0
+351	61.5	0
+352	61.5	0
+353	61.5	0
+354	61.5	0
+355	61.5	0
+356	61.5	0
+357	61.5	0
+358	61.5	0
+359	61.5	0
+360	61.5	0
+0	62	0
+1	62	0
+2	62	0
+3	62	0
+4	62	0
+5	62	0
+6	62	0
+7	62	0
+8	62	0
+9	62	0
+10	62	0
+11	62	0
+12	62	0
+13	62	0
+14	62	0
+15	62	0
+16	62	0
+17	62	0
+18	62	0
+19	62	0
+20	62	0
+21	62	0
+22	62	0
+23	62	0
+24	62	0
+25	62	0
+26	62	0
+27	62	0
+28	62	0
+29	62	0
+30	62	0
+31	62	0
+32	62	0
+33	62	0
+34	62	0
+35	62	0
+36	62	0
+37	62	0
+38	62	0
+39	62	0
+40	62	0
+41	62	0
+42	62	0
+43	62	0
+44	62	0
+45	62	0
+46	62	0
+47	62	0
+48	62	0
+49	62	0
+50	62	0
+51	62	0
+52	62	0
+53	62	0
+54	62	0
+55	62	0
+56	62	0
+57	62	0
+58	62	0
+59	62	0
+60	62	0
+61	62	0
+62	62	0
+63	62	0
+64	62	0
+65	62	0
+66	62	0
+67	62	0
+68	62	0
+69	62	0
+70	62	0
+71	62	0
+72	62	0
+73	62	0
+74	62	0
+75	62	0
+76	62	0
+77	62	0
+78	62	0
+79	62	0
+80	62	0
+81	62	0
+82	62	0
+83	62	0
+84	62	0
+85	62	0
+86	62	0
+87	62	0
+88	62	0
+89	62	0
+90	62	0
+91	62	0
+92	62	0
+93	62	0
+94	62	0
+95	62	0
+96	62	0
+97	62	0
+98	62	0
+99	62	0
+100	62	0
+101	62	0
+102	62	0
+103	62	0
+104	62	0
+105	62	0
+106	62	0
+107	62	0
+108	62	0
+109	62	0
+110	62	0
+111	62	0
+112	62	0
+113	62	0
+114	62	0
+115	62	0
+116	62	0
+117	62	0
+118	62	0
+119	62	0
+120	62	0
+121	62	0
+122	62	0
+123	62	0
+124	62	0
+125	62	0
+126	62	0
+127	62	0
+128	62	0
+129	62	0
+130	62	0
+131	62	0
+132	62	0
+133	62	0
+134	62	0
+135	62	0
+136	62	0
+137	62	0
+138	62	0
+139	62	0
+140	62	0
+141	62	0
+142	62	0
+143	62	0
+144	62	0
+145	62	0
+146	62	0
+147	62	0
+148	62	0
+149	62	0
+150	62	0
+151	62	0
+152	62	0
+153	62	0
+154	62	0
+155	62	0
+156	62	0
+157	62	0
+158	62	0
+159	62	0
+160	62	0
+161	62	0
+162	62	0
+163	62	0
+164	62	0
+165	62	0
+166	62	0
+167	62	0
+168	62	0
+169	62	0
+170	62	0
+171	62	0
+172	62	0
+173	62	0
+174	62	0
+175	62	0
+176	62	0
+177	62	0
+178	62	0
+179	62	0
+180	62	0
+181	62	0
+182	62	0
+183	62	0
+184	62	0
+185	62	0
+186	62	0
+187	62	0
+188	62	0
+189	62	0
+190	62	0
+191	62	0
+192	62	0
+193	62	0
+194	62	0
+195	62	0
+196	62	0
+197	62	0
+198	62	0
+199	62	0
+200	62	0
+201	62	0
+202	62	0
+203	62	0
+204	62	0
+205	62	0
+206	62	0
+207	62	0
+208	62	0
+209	62	0
+210	62	0
+211	62	0
+212	62	0
+213	62	0
+214	62	0
+215	62	0
+216	62	0
+217	62	0
+218	62	0
+219	62	0
+220	62	0
+221	62	0
+222	62	0
+223	62	0
+224	62	0
+225	62	0
+226	62	0
+227	62	0
+228	62	0
+229	62	0
+230	62	0
+231	62	0
+232	62	0
+233	62	0
+234	62	0
+235	62	0
+236	62	0
+237	62	0
+238	62	0
+239	62	0
+240	62	0
+241	62	0
+242	62	0
+243	62	0
+244	62	0
+245	62	0
+246	62	0
+247	62	0
+248	62	0
+249	62	0
+250	62	0
+251	62	0
+252	62	0
+253	62	0
+254	62	0
+255	62	0
+256	62	0
+257	62	0
+258	62	0
+259	62	0
+260	62	0
+261	62	0
+262	62	0
+263	62	0
+264	62	0
+265	62	0
+266	62	0
+267	62	0
+268	62	0
+269	62	0
+270	62	0
+271	62	0
+272	62	0
+273	62	0
+274	62	0
+275	62	0
+276	62	0
+277	62	0
+278	62	0
+279	62	0
+280	62	0
+281	62	0
+282	62	0
+283	62	0
+284	62	0
+285	62	0
+286	62	0
+287	62	0
+288	62	0
+289	62	0
+290	62	0
+291	62	0
+292	62	0
+293	62	0
+294	62	0
+295	62	0
+296	62	0
+297	62	0
+298	62	0
+299	62	0
+300	62	0
+301	62	0
+302	62	0
+303	62	0
+304	62	0
+305	62	0
+306	62	0
+307	62	0
+308	62	0
+309	62	0
+310	62	0
+311	62	0
+312	62	0
+313	62	0
+314	62	0
+315	62	0
+316	62	0
+317	62	0
+318	62	0
+319	62	0
+320	62	0
+321	62	0
+322	62	0
+323	62	0
+324	62	0
+325	62	0
+326	62	0
+327	62	0
+328	62	0
+329	62	0
+330	62	0
+331	62	0
+332	62	0
+333	62	0
+334	62	0
+335	62	0
+336	62	0
+337	62	0
+338	62	0
+339	62	0
+340	62	0
+341	62	0
+342	62	0
+343	62	0
+344	62	0
+345	62	0
+346	62	0
+347	62	0
+348	62	0
+349	62	0
+350	62	0
+351	62	0
+352	62	0
+353	62	0
+354	62	0
+355	62	0
+356	62	0
+357	62	0
+358	62	0
+359	62	0
+360	62	0
+0	62.5	0
+1	62.5	0
+2	62.5	0
+3	62.5	0
+4	62.5	0
+5	62.5	0
+6	62.5	0
+7	62.5	0
+8	62.5	0
+9	62.5	0
+10	62.5	0
+11	62.5	0
+12	62.5	0
+13	62.5	0
+14	62.5	0
+15	62.5	0
+16	62.5	0
+17	62.5	0
+18	62.5	0
+19	62.5	0
+20	62.5	0
+21	62.5	0
+22	62.5	0
+23	62.5	0
+24	62.5	0
+25	62.5	0
+26	62.5	0
+27	62.5	0
+28	62.5	0
+29	62.5	0
+30	62.5	0
+31	62.5	0
+32	62.5	0
+33	62.5	0
+34	62.5	0
+35	62.5	0
+36	62.5	0
+37	62.5	0
+38	62.5	0
+39	62.5	0
+40	62.5	0
+41	62.5	0
+42	62.5	0
+43	62.5	0
+44	62.5	0
+45	62.5	0
+46	62.5	0
+47	62.5	0
+48	62.5	0
+49	62.5	0
+50	62.5	0
+51	62.5	0
+52	62.5	0
+53	62.5	0
+54	62.5	0
+55	62.5	0
+56	62.5	0
+57	62.5	0
+58	62.5	0
+59	62.5	0
+60	62.5	0
+61	62.5	0
+62	62.5	0
+63	62.5	0
+64	62.5	0
+65	62.5	0
+66	62.5	0
+67	62.5	0
+68	62.5	0
+69	62.5	0
+70	62.5	0
+71	62.5	0
+72	62.5	0
+73	62.5	0
+74	62.5	0
+75	62.5	0
+76	62.5	0
+77	62.5	0
+78	62.5	0
+79	62.5	0
+80	62.5	0
+81	62.5	0
+82	62.5	0
+83	62.5	0
+84	62.5	0
+85	62.5	0
+86	62.5	0
+87	62.5	0
+88	62.5	0
+89	62.5	0
+90	62.5	0
+91	62.5	0
+92	62.5	0
+93	62.5	0
+94	62.5	0
+95	62.5	0
+96	62.5	0
+97	62.5	0
+98	62.5	0
+99	62.5	0
+100	62.5	0
+101	62.5	0
+102	62.5	0
+103	62.5	0
+104	62.5	0
+105	62.5	0
+106	62.5	0
+107	62.5	0
+108	62.5	0
+109	62.5	0
+110	62.5	0
+111	62.5	0
+112	62.5	0
+113	62.5	0
+114	62.5	0
+115	62.5	0
+116	62.5	0
+117	62.5	0
+118	62.5	0
+119	62.5	0
+120	62.5	0
+121	62.5	0
+122	62.5	0
+123	62.5	0
+124	62.5	0
+125	62.5	0
+126	62.5	0
+127	62.5	0
+128	62.5	0
+129	62.5	0
+130	62.5	0
+131	62.5	0
+132	62.5	0
+133	62.5	0
+134	62.5	0
+135	62.5	0
+136	62.5	0
+137	62.5	0
+138	62.5	0
+139	62.5	0
+140	62.5	0
+141	62.5	0
+142	62.5	0
+143	62.5	0
+144	62.5	0
+145	62.5	0
+146	62.5	0
+147	62.5	0
+148	62.5	0
+149	62.5	0
+150	62.5	0
+151	62.5	0
+152	62.5	0
+153	62.5	0
+154	62.5	0
+155	62.5	0
+156	62.5	0
+157	62.5	0
+158	62.5	0
+159	62.5	0
+160	62.5	0
+161	62.5	0
+162	62.5	0
+163	62.5	0
+164	62.5	0
+165	62.5	0
+166	62.5	0
+167	62.5	0
+168	62.5	0
+169	62.5	0
+170	62.5	0
+171	62.5	0
+172	62.5	0
+173	62.5	0
+174	62.5	0
+175	62.5	0
+176	62.5	0
+177	62.5	0
+178	62.5	0
+179	62.5	0
+180	62.5	0
+181	62.5	0
+182	62.5	0
+183	62.5	0
+184	62.5	0
+185	62.5	0
+186	62.5	0
+187	62.5	0
+188	62.5	0
+189	62.5	0
+190	62.5	0
+191	62.5	0
+192	62.5	0
+193	62.5	0
+194	62.5	0
+195	62.5	0
+196	62.5	0
+197	62.5	0
+198	62.5	0
+199	62.5	0
+200	62.5	0
+201	62.5	0
+202	62.5	0
+203	62.5	0
+204	62.5	0
+205	62.5	0
+206	62.5	0
+207	62.5	0
+208	62.5	0
+209	62.5	0
+210	62.5	0
+211	62.5	0
+212	62.5	0
+213	62.5	0
+214	62.5	0
+215	62.5	0
+216	62.5	0
+217	62.5	0
+218	62.5	0
+219	62.5	0
+220	62.5	0
+221	62.5	0
+222	62.5	0
+223	62.5	0
+224	62.5	0
+225	62.5	0
+226	62.5	0
+227	62.5	0
+228	62.5	0
+229	62.5	0
+230	62.5	0
+231	62.5	0
+232	62.5	0
+233	62.5	0
+234	62.5	0
+235	62.5	0
+236	62.5	0
+237	62.5	0
+238	62.5	0
+239	62.5	0
+240	62.5	0
+241	62.5	0
+242	62.5	0
+243	62.5	0
+244	62.5	0
+245	62.5	0
+246	62.5	0
+247	62.5	0
+248	62.5	0
+249	62.5	0
+250	62.5	0
+251	62.5	0
+252	62.5	0
+253	62.5	0
+254	62.5	0
+255	62.5	0
+256	62.5	0
+257	62.5	0
+258	62.5	0
+259	62.5	0
+260	62.5	0
+261	62.5	0
+262	62.5	0
+263	62.5	0
+264	62.5	0
+265	62.5	0
+266	62.5	0
+267	62.5	0
+268	62.5	0
+269	62.5	0
+270	62.5	0
+271	62.5	0
+272	62.5	0
+273	62.5	0
+274	62.5	0
+275	62.5	0
+276	62.5	0
+277	62.5	0
+278	62.5	0
+279	62.5	0
+280	62.5	0
+281	62.5	0
+282	62.5	0
+283	62.5	0
+284	62.5	0
+285	62.5	0
+286	62.5	0
+287	62.5	0
+288	62.5	0
+289	62.5	0
+290	62.5	0
+291	62.5	0
+292	62.5	0
+293	62.5	0
+294	62.5	0
+295	62.5	0
+296	62.5	0
+297	62.5	0
+298	62.5	0
+299	62.5	0
+300	62.5	0
+301	62.5	0
+302	62.5	0
+303	62.5	0
+304	62.5	0
+305	62.5	0
+306	62.5	0
+307	62.5	0
+308	62.5	0
+309	62.5	0
+310	62.5	0
+311	62.5	0
+312	62.5	0
+313	62.5	0
+314	62.5	0
+315	62.5	0
+316	62.5	0
+317	62.5	0
+318	62.5	0
+319	62.5	0
+320	62.5	0
+321	62.5	0
+322	62.5	0
+323	62.5	0
+324	62.5	0
+325	62.5	0
+326	62.5	0
+327	62.5	0
+328	62.5	0
+329	62.5	0
+330	62.5	0
+331	62.5	0
+332	62.5	0
+333	62.5	0
+334	62.5	0
+335	62.5	0
+336	62.5	0
+337	62.5	0
+338	62.5	0
+339	62.5	0
+340	62.5	0
+341	62.5	0
+342	62.5	0
+343	62.5	0
+344	62.5	0
+345	62.5	0
+346	62.5	0
+347	62.5	0
+348	62.5	0
+349	62.5	0
+350	62.5	0
+351	62.5	0
+352	62.5	0
+353	62.5	0
+354	62.5	0
+355	62.5	0
+356	62.5	0
+357	62.5	0
+358	62.5	0
+359	62.5	0
+360	62.5	0
+0	63	0
+1	63	0
+2	63	0
+3	63	0
+4	63	0
+5	63	0
+6	63	0
+7	63	0
+8	63	0
+9	63	0
+10	63	0
+11	63	0
+12	63	0
+13	63	0
+14	63	0
+15	63	0
+16	63	0
+17	63	0
+18	63	0
+19	63	0
+20	63	0
+21	63	0
+22	63	0
+23	63	0
+24	63	0
+25	63	0
+26	63	0
+27	63	0
+28	63	0
+29	63	0
+30	63	0
+31	63	0
+32	63	0
+33	63	0
+34	63	0
+35	63	0
+36	63	0
+37	63	0
+38	63	0
+39	63	0
+40	63	0
+41	63	0
+42	63	0
+43	63	0
+44	63	0
+45	63	0
+46	63	0
+47	63	0
+48	63	0
+49	63	0
+50	63	0
+51	63	0
+52	63	0
+53	63	0
+54	63	0
+55	63	0
+56	63	0
+57	63	0
+58	63	0
+59	63	0
+60	63	0
+61	63	0
+62	63	0
+63	63	0
+64	63	0
+65	63	0
+66	63	0
+67	63	0
+68	63	0
+69	63	0
+70	63	0
+71	63	0
+72	63	0
+73	63	0
+74	63	0
+75	63	0
+76	63	0
+77	63	0
+78	63	0
+79	63	0
+80	63	0
+81	63	0
+82	63	0
+83	63	0
+84	63	0
+85	63	0
+86	63	0
+87	63	0
+88	63	0
+89	63	0
+90	63	0
+91	63	0
+92	63	0
+93	63	0
+94	63	0
+95	63	0
+96	63	0
+97	63	0
+98	63	0
+99	63	0
+100	63	0
+101	63	0
+102	63	0
+103	63	0
+104	63	0
+105	63	0
+106	63	0
+107	63	0
+108	63	0
+109	63	0
+110	63	0
+111	63	0
+112	63	0
+113	63	0
+114	63	0
+115	63	0
+116	63	0
+117	63	0
+118	63	0
+119	63	0
+120	63	0
+121	63	0
+122	63	0
+123	63	0
+124	63	0
+125	63	0
+126	63	0
+127	63	0
+128	63	0
+129	63	0
+130	63	0
+131	63	0
+132	63	0
+133	63	0
+134	63	0
+135	63	0
+136	63	0
+137	63	0
+138	63	0
+139	63	0
+140	63	0
+141	63	0
+142	63	0
+143	63	0
+144	63	0
+145	63	0
+146	63	0
+147	63	0
+148	63	0
+149	63	0
+150	63	0
+151	63	0
+152	63	0
+153	63	0
+154	63	0
+155	63	0
+156	63	0
+157	63	0
+158	63	0
+159	63	0
+160	63	0
+161	63	0
+162	63	0
+163	63	0
+164	63	0
+165	63	0
+166	63	0
+167	63	0
+168	63	0
+169	63	0
+170	63	0
+171	63	0
+172	63	0
+173	63	0
+174	63	0
+175	63	0
+176	63	0
+177	63	0
+178	63	0
+179	63	0
+180	63	0
+181	63	0
+182	63	0
+183	63	0
+184	63	0
+185	63	0
+186	63	0
+187	63	0
+188	63	0
+189	63	0
+190	63	0
+191	63	0
+192	63	0
+193	63	0
+194	63	0
+195	63	0
+196	63	0
+197	63	0
+198	63	0
+199	63	0
+200	63	0
+201	63	0
+202	63	0
+203	63	0
+204	63	0
+205	63	0
+206	63	0
+207	63	0
+208	63	0
+209	63	0
+210	63	0
+211	63	0
+212	63	0
+213	63	0
+214	63	0
+215	63	0
+216	63	0
+217	63	0
+218	63	0
+219	63	0
+220	63	0
+221	63	0
+222	63	0
+223	63	0
+224	63	0
+225	63	0
+226	63	0
+227	63	0
+228	63	0
+229	63	0
+230	63	0
+231	63	0
+232	63	0
+233	63	0
+234	63	0
+235	63	0
+236	63	0
+237	63	0
+238	63	0
+239	63	0
+240	63	0
+241	63	0
+242	63	0
+243	63	0
+244	63	0
+245	63	0
+246	63	0
+247	63	0
+248	63	0
+249	63	0
+250	63	0
+251	63	0
+252	63	0
+253	63	0
+254	63	0
+255	63	0
+256	63	0
+257	63	0
+258	63	0
+259	63	0
+260	63	0
+261	63	0
+262	63	0
+263	63	0
+264	63	0
+265	63	0
+266	63	0
+267	63	0
+268	63	0
+269	63	0
+270	63	0
+271	63	0
+272	63	0
+273	63	0
+274	63	0
+275	63	0
+276	63	0
+277	63	0
+278	63	0
+279	63	0
+280	63	0
+281	63	0
+282	63	0
+283	63	0
+284	63	0
+285	63	0
+286	63	0
+287	63	0
+288	63	0
+289	63	0
+290	63	0
+291	63	0
+292	63	0
+293	63	0
+294	63	0
+295	63	0
+296	63	0
+297	63	0
+298	63	0
+299	63	0
+300	63	0
+301	63	0
+302	63	0
+303	63	0
+304	63	0
+305	63	0
+306	63	0
+307	63	0
+308	63	0
+309	63	0
+310	63	0
+311	63	0
+312	63	0
+313	63	0
+314	63	0
+315	63	0
+316	63	0
+317	63	0
+318	63	0
+319	63	0
+320	63	0
+321	63	0
+322	63	0
+323	63	0
+324	63	0
+325	63	0
+326	63	0
+327	63	0
+328	63	0
+329	63	0
+330	63	0
+331	63	0
+332	63	0
+333	63	0
+334	63	0
+335	63	0
+336	63	0
+337	63	0
+338	63	0
+339	63	0
+340	63	0
+341	63	0
+342	63	0
+343	63	0
+344	63	0
+345	63	0
+346	63	0
+347	63	0
+348	63	0
+349	63	0
+350	63	0
+351	63	0
+352	63	0
+353	63	0
+354	63	0
+355	63	0
+356	63	0
+357	63	0
+358	63	0
+359	63	0
+360	63	0
+0	63.5	0
+1	63.5	0
+2	63.5	0
+3	63.5	0
+4	63.5	0
+5	63.5	0
+6	63.5	0
+7	63.5	0
+8	63.5	0
+9	63.5	0
+10	63.5	0
+11	63.5	0
+12	63.5	0
+13	63.5	0
+14	63.5	0
+15	63.5	0
+16	63.5	0
+17	63.5	0
+18	63.5	0
+19	63.5	0
+20	63.5	0
+21	63.5	0
+22	63.5	0
+23	63.5	0
+24	63.5	0
+25	63.5	0
+26	63.5	0
+27	63.5	0
+28	63.5	0
+29	63.5	0
+30	63.5	0
+31	63.5	0
+32	63.5	0
+33	63.5	0
+34	63.5	0
+35	63.5	0
+36	63.5	0
+37	63.5	0
+38	63.5	0
+39	63.5	0
+40	63.5	0
+41	63.5	0
+42	63.5	0
+43	63.5	0
+44	63.5	0
+45	63.5	0
+46	63.5	0
+47	63.5	0
+48	63.5	0
+49	63.5	0
+50	63.5	0
+51	63.5	0
+52	63.5	0
+53	63.5	0
+54	63.5	0
+55	63.5	0
+56	63.5	0
+57	63.5	0
+58	63.5	0
+59	63.5	0
+60	63.5	0
+61	63.5	0
+62	63.5	0
+63	63.5	0
+64	63.5	0
+65	63.5	0
+66	63.5	0
+67	63.5	0
+68	63.5	0
+69	63.5	0
+70	63.5	0
+71	63.5	0
+72	63.5	0
+73	63.5	0
+74	63.5	0
+75	63.5	0
+76	63.5	0
+77	63.5	0
+78	63.5	0
+79	63.5	0
+80	63.5	0
+81	63.5	0
+82	63.5	0
+83	63.5	0
+84	63.5	0
+85	63.5	0
+86	63.5	0
+87	63.5	0
+88	63.5	0
+89	63.5	0
+90	63.5	0
+91	63.5	0
+92	63.5	0
+93	63.5	0
+94	63.5	0
+95	63.5	0
+96	63.5	0
+97	63.5	0
+98	63.5	0
+99	63.5	0
+100	63.5	0
+101	63.5	0
+102	63.5	0
+103	63.5	0
+104	63.5	0
+105	63.5	0
+106	63.5	0
+107	63.5	0
+108	63.5	0
+109	63.5	0
+110	63.5	0
+111	63.5	0
+112	63.5	0
+113	63.5	0
+114	63.5	0
+115	63.5	0
+116	63.5	0
+117	63.5	0
+118	63.5	0
+119	63.5	0
+120	63.5	0
+121	63.5	0
+122	63.5	0
+123	63.5	0
+124	63.5	0
+125	63.5	0
+126	63.5	0
+127	63.5	0
+128	63.5	0
+129	63.5	0
+130	63.5	0
+131	63.5	0
+132	63.5	0
+133	63.5	0
+134	63.5	0
+135	63.5	0
+136	63.5	0
+137	63.5	0
+138	63.5	0
+139	63.5	0
+140	63.5	0
+141	63.5	0
+142	63.5	0
+143	63.5	0
+144	63.5	0
+145	63.5	0
+146	63.5	0
+147	63.5	0
+148	63.5	0
+149	63.5	0
+150	63.5	0
+151	63.5	0
+152	63.5	0
+153	63.5	0
+154	63.5	0
+155	63.5	0
+156	63.5	0
+157	63.5	0
+158	63.5	0
+159	63.5	0
+160	63.5	0
+161	63.5	0
+162	63.5	0
+163	63.5	0
+164	63.5	0
+165	63.5	0
+166	63.5	0
+167	63.5	0
+168	63.5	0
+169	63.5	0
+170	63.5	0
+171	63.5	0
+172	63.5	0
+173	63.5	0
+174	63.5	0
+175	63.5	0
+176	63.5	0
+177	63.5	0
+178	63.5	0
+179	63.5	0
+180	63.5	0
+181	63.5	0
+182	63.5	0
+183	63.5	0
+184	63.5	0
+185	63.5	0
+186	63.5	0
+187	63.5	0
+188	63.5	0
+189	63.5	0
+190	63.5	0
+191	63.5	0
+192	63.5	0
+193	63.5	0
+194	63.5	0
+195	63.5	0
+196	63.5	0
+197	63.5	0
+198	63.5	0
+199	63.5	0
+200	63.5	0
+201	63.5	0
+202	63.5	0
+203	63.5	0
+204	63.5	0
+205	63.5	0
+206	63.5	0
+207	63.5	0
+208	63.5	0
+209	63.5	0
+210	63.5	0
+211	63.5	0
+212	63.5	0
+213	63.5	0
+214	63.5	0
+215	63.5	0
+216	63.5	0
+217	63.5	0
+218	63.5	0
+219	63.5	0
+220	63.5	0
+221	63.5	0
+222	63.5	0
+223	63.5	0
+224	63.5	0
+225	63.5	0
+226	63.5	0
+227	63.5	0
+228	63.5	0
+229	63.5	0
+230	63.5	0
+231	63.5	0
+232	63.5	0
+233	63.5	0
+234	63.5	0
+235	63.5	0
+236	63.5	0
+237	63.5	0
+238	63.5	0
+239	63.5	0
+240	63.5	0
+241	63.5	0
+242	63.5	0
+243	63.5	0
+244	63.5	0
+245	63.5	0
+246	63.5	0
+247	63.5	0
+248	63.5	0
+249	63.5	0
+250	63.5	0
+251	63.5	0
+252	63.5	0
+253	63.5	0
+254	63.5	0
+255	63.5	0
+256	63.5	0
+257	63.5	0
+258	63.5	0
+259	63.5	0
+260	63.5	0
+261	63.5	0
+262	63.5	0
+263	63.5	0
+264	63.5	0
+265	63.5	0
+266	63.5	0
+267	63.5	0
+268	63.5	0
+269	63.5	0
+270	63.5	0
+271	63.5	0
+272	63.5	0
+273	63.5	0
+274	63.5	0
+275	63.5	0
+276	63.5	0
+277	63.5	0
+278	63.5	0
+279	63.5	0
+280	63.5	0
+281	63.5	0
+282	63.5	0
+283	63.5	0
+284	63.5	0
+285	63.5	0
+286	63.5	0
+287	63.5	0
+288	63.5	0
+289	63.5	0
+290	63.5	0
+291	63.5	0
+292	63.5	0
+293	63.5	0
+294	63.5	0
+295	63.5	0
+296	63.5	0
+297	63.5	0
+298	63.5	0
+299	63.5	0
+300	63.5	0
+301	63.5	0
+302	63.5	0
+303	63.5	0
+304	63.5	0
+305	63.5	0
+306	63.5	0
+307	63.5	0
+308	63.5	0
+309	63.5	0
+310	63.5	0
+311	63.5	0
+312	63.5	0
+313	63.5	0
+314	63.5	0
+315	63.5	0
+316	63.5	0
+317	63.5	0
+318	63.5	0
+319	63.5	0
+320	63.5	0
+321	63.5	0
+322	63.5	0
+323	63.5	0
+324	63.5	0
+325	63.5	0
+326	63.5	0
+327	63.5	0
+328	63.5	0
+329	63.5	0
+330	63.5	0
+331	63.5	0
+332	63.5	0
+333	63.5	0
+334	63.5	0
+335	63.5	0
+336	63.5	0
+337	63.5	0
+338	63.5	0
+339	63.5	0
+340	63.5	0
+341	63.5	0
+342	63.5	0
+343	63.5	0
+344	63.5	0
+345	63.5	0
+346	63.5	0
+347	63.5	0
+348	63.5	0
+349	63.5	0
+350	63.5	0
+351	63.5	0
+352	63.5	0
+353	63.5	0
+354	63.5	0
+355	63.5	0
+356	63.5	0
+357	63.5	0
+358	63.5	0
+359	63.5	0
+360	63.5	0
+0	64	0
+1	64	0
+2	64	0
+3	64	0
+4	64	0
+5	64	0
+6	64	0
+7	64	0
+8	64	0
+9	64	0
+10	64	0
+11	64	0
+12	64	0
+13	64	0
+14	64	0
+15	64	0
+16	64	0
+17	64	0
+18	64	0
+19	64	0
+20	64	0
+21	64	0
+22	64	0
+23	64	0
+24	64	0
+25	64	0
+26	64	0
+27	64	0
+28	64	0
+29	64	0
+30	64	0
+31	64	0
+32	64	0
+33	64	0
+34	64	0
+35	64	0
+36	64	0
+37	64	0
+38	64	0
+39	64	0
+40	64	0
+41	64	0
+42	64	0
+43	64	0
+44	64	0
+45	64	0
+46	64	0
+47	64	0
+48	64	0
+49	64	0
+50	64	0
+51	64	0
+52	64	0
+53	64	0
+54	64	0
+55	64	0
+56	64	0
+57	64	0
+58	64	0
+59	64	0
+60	64	0
+61	64	0
+62	64	0
+63	64	0
+64	64	0
+65	64	0
+66	64	0
+67	64	0
+68	64	0
+69	64	0
+70	64	0
+71	64	0
+72	64	0
+73	64	0
+74	64	0
+75	64	0
+76	64	0
+77	64	0
+78	64	0
+79	64	0
+80	64	0
+81	64	0
+82	64	0
+83	64	0
+84	64	0
+85	64	0
+86	64	0
+87	64	0
+88	64	0
+89	64	0
+90	64	0
+91	64	0
+92	64	0
+93	64	0
+94	64	0
+95	64	0
+96	64	0
+97	64	0
+98	64	0
+99	64	0
+100	64	0
+101	64	0
+102	64	0
+103	64	0
+104	64	0
+105	64	0
+106	64	0
+107	64	0
+108	64	0
+109	64	0
+110	64	0
+111	64	0
+112	64	0
+113	64	0
+114	64	0
+115	64	0
+116	64	0
+117	64	0
+118	64	0
+119	64	0
+120	64	0
+121	64	0
+122	64	0
+123	64	0
+124	64	0
+125	64	0
+126	64	0
+127	64	0
+128	64	0
+129	64	0
+130	64	0
+131	64	0
+132	64	0
+133	64	0
+134	64	0
+135	64	0
+136	64	0
+137	64	0
+138	64	0
+139	64	0
+140	64	0
+141	64	0
+142	64	0
+143	64	0
+144	64	0
+145	64	0
+146	64	0
+147	64	0
+148	64	0
+149	64	0
+150	64	0
+151	64	0
+152	64	0
+153	64	0
+154	64	0
+155	64	0
+156	64	0
+157	64	0
+158	64	0
+159	64	0
+160	64	0
+161	64	0
+162	64	0
+163	64	0
+164	64	0
+165	64	0
+166	64	0
+167	64	0
+168	64	0
+169	64	0
+170	64	0
+171	64	0
+172	64	0
+173	64	0
+174	64	0
+175	64	0
+176	64	0
+177	64	0
+178	64	0
+179	64	0
+180	64	0
+181	64	0
+182	64	0
+183	64	0
+184	64	0
+185	64	0
+186	64	0
+187	64	0
+188	64	0
+189	64	0
+190	64	0
+191	64	0
+192	64	0
+193	64	0
+194	64	0
+195	64	0
+196	64	0
+197	64	0
+198	64	0
+199	64	0
+200	64	0
+201	64	0
+202	64	0
+203	64	0
+204	64	0
+205	64	0
+206	64	0
+207	64	0
+208	64	0
+209	64	0
+210	64	0
+211	64	0
+212	64	0
+213	64	0
+214	64	0
+215	64	0
+216	64	0
+217	64	0
+218	64	0
+219	64	0
+220	64	0
+221	64	0
+222	64	0
+223	64	0
+224	64	0
+225	64	0
+226	64	0
+227	64	0
+228	64	0
+229	64	0
+230	64	0
+231	64	0
+232	64	0
+233	64	0
+234	64	0
+235	64	0
+236	64	0
+237	64	0
+238	64	0
+239	64	0
+240	64	0
+241	64	0
+242	64	0
+243	64	0
+244	64	0
+245	64	0
+246	64	0
+247	64	0
+248	64	0
+249	64	0
+250	64	0
+251	64	0
+252	64	0
+253	64	0
+254	64	0
+255	64	0
+256	64	0
+257	64	0
+258	64	0
+259	64	0
+260	64	0
+261	64	0
+262	64	0
+263	64	0
+264	64	0
+265	64	0
+266	64	0
+267	64	0
+268	64	0
+269	64	0
+270	64	0
+271	64	0
+272	64	0
+273	64	0
+274	64	0
+275	64	0
+276	64	0
+277	64	0
+278	64	0
+279	64	0
+280	64	0
+281	64	0
+282	64	0
+283	64	0
+284	64	0
+285	64	0
+286	64	0
+287	64	0
+288	64	0
+289	64	0
+290	64	0
+291	64	0
+292	64	0
+293	64	0
+294	64	0
+295	64	0
+296	64	0
+297	64	0
+298	64	0
+299	64	0
+300	64	0
+301	64	0
+302	64	0
+303	64	0
+304	64	0
+305	64	0
+306	64	0
+307	64	0
+308	64	0
+309	64	0
+310	64	0
+311	64	0
+312	64	0
+313	64	0
+314	64	0
+315	64	0
+316	64	0
+317	64	0
+318	64	0
+319	64	0
+320	64	0
+321	64	0
+322	64	0
+323	64	0
+324	64	0
+325	64	0
+326	64	0
+327	64	0
+328	64	0
+329	64	0
+330	64	0
+331	64	0
+332	64	0
+333	64	0
+334	64	0
+335	64	0
+336	64	0
+337	64	0
+338	64	0
+339	64	0
+340	64	0
+341	64	0
+342	64	0
+343	64	0
+344	64	0
+345	64	0
+346	64	0
+347	64	0
+348	64	0
+349	64	0
+350	64	0
+351	64	0
+352	64	0
+353	64	0
+354	64	0
+355	64	0
+356	64	0
+357	64	0
+358	64	0
+359	64	0
+360	64	0
+0	64.5	0
+1	64.5	0
+2	64.5	0
+3	64.5	0
+4	64.5	0
+5	64.5	0
+6	64.5	0
+7	64.5	0
+8	64.5	0
+9	64.5	0
+10	64.5	0
+11	64.5	0
+12	64.5	0
+13	64.5	0
+14	64.5	0
+15	64.5	0
+16	64.5	0
+17	64.5	0
+18	64.5	0
+19	64.5	0
+20	64.5	0
+21	64.5	0
+22	64.5	0
+23	64.5	0
+24	64.5	0
+25	64.5	0
+26	64.5	0
+27	64.5	0
+28	64.5	0
+29	64.5	0
+30	64.5	0
+31	64.5	0
+32	64.5	0
+33	64.5	0
+34	64.5	0
+35	64.5	0
+36	64.5	0
+37	64.5	0
+38	64.5	0
+39	64.5	0
+40	64.5	0
+41	64.5	0
+42	64.5	0
+43	64.5	0
+44	64.5	0
+45	64.5	0
+46	64.5	0
+47	64.5	0
+48	64.5	0
+49	64.5	0
+50	64.5	0
+51	64.5	0
+52	64.5	0
+53	64.5	0
+54	64.5	0
+55	64.5	0
+56	64.5	0
+57	64.5	0
+58	64.5	0
+59	64.5	0
+60	64.5	0
+61	64.5	0
+62	64.5	0
+63	64.5	0
+64	64.5	0
+65	64.5	0
+66	64.5	0
+67	64.5	0
+68	64.5	0
+69	64.5	0
+70	64.5	0
+71	64.5	0
+72	64.5	0
+73	64.5	0
+74	64.5	0
+75	64.5	0
+76	64.5	0
+77	64.5	0
+78	64.5	0
+79	64.5	0
+80	64.5	0
+81	64.5	0
+82	64.5	0
+83	64.5	0
+84	64.5	0
+85	64.5	0
+86	64.5	0
+87	64.5	0
+88	64.5	0
+89	64.5	0
+90	64.5	0
+91	64.5	0
+92	64.5	0
+93	64.5	0
+94	64.5	0
+95	64.5	0
+96	64.5	0
+97	64.5	0
+98	64.5	0
+99	64.5	0
+100	64.5	0
+101	64.5	0
+102	64.5	0
+103	64.5	0
+104	64.5	0
+105	64.5	0
+106	64.5	0
+107	64.5	0
+108	64.5	0
+109	64.5	0
+110	64.5	0
+111	64.5	0
+112	64.5	0
+113	64.5	0
+114	64.5	0
+115	64.5	0
+116	64.5	0
+117	64.5	0
+118	64.5	0
+119	64.5	0
+120	64.5	0
+121	64.5	0
+122	64.5	0
+123	64.5	0
+124	64.5	0
+125	64.5	0
+126	64.5	0
+127	64.5	0
+128	64.5	0
+129	64.5	0
+130	64.5	0
+131	64.5	0
+132	64.5	0
+133	64.5	0
+134	64.5	0
+135	64.5	0
+136	64.5	0
+137	64.5	0
+138	64.5	0
+139	64.5	0
+140	64.5	0
+141	64.5	0
+142	64.5	0
+143	64.5	0
+144	64.5	0
+145	64.5	0
+146	64.5	0
+147	64.5	0
+148	64.5	0
+149	64.5	0
+150	64.5	0
+151	64.5	0
+152	64.5	0
+153	64.5	0
+154	64.5	0
+155	64.5	0
+156	64.5	0
+157	64.5	0
+158	64.5	0
+159	64.5	0
+160	64.5	0
+161	64.5	0
+162	64.5	0
+163	64.5	0
+164	64.5	0
+165	64.5	0
+166	64.5	0
+167	64.5	0
+168	64.5	0
+169	64.5	0
+170	64.5	0
+171	64.5	0
+172	64.5	0
+173	64.5	0
+174	64.5	0
+175	64.5	0
+176	64.5	0
+177	64.5	0
+178	64.5	0
+179	64.5	0
+180	64.5	0
+181	64.5	0
+182	64.5	0
+183	64.5	0
+184	64.5	0
+185	64.5	0
+186	64.5	0
+187	64.5	0
+188	64.5	0
+189	64.5	0
+190	64.5	0
+191	64.5	0
+192	64.5	0
+193	64.5	0
+194	64.5	0
+195	64.5	0
+196	64.5	0
+197	64.5	0
+198	64.5	0
+199	64.5	0
+200	64.5	0
+201	64.5	0
+202	64.5	0
+203	64.5	0
+204	64.5	0
+205	64.5	0
+206	64.5	0
+207	64.5	0
+208	64.5	0
+209	64.5	0
+210	64.5	0
+211	64.5	0
+212	64.5	0
+213	64.5	0
+214	64.5	0
+215	64.5	0
+216	64.5	0
+217	64.5	0
+218	64.5	0
+219	64.5	0
+220	64.5	0
+221	64.5	0
+222	64.5	0
+223	64.5	0
+224	64.5	0
+225	64.5	0
+226	64.5	0
+227	64.5	0
+228	64.5	0
+229	64.5	0
+230	64.5	0
+231	64.5	0
+232	64.5	0
+233	64.5	0
+234	64.5	0
+235	64.5	0
+236	64.5	0
+237	64.5	0
+238	64.5	0
+239	64.5	0
+240	64.5	0
+241	64.5	0
+242	64.5	0
+243	64.5	0
+244	64.5	0
+245	64.5	0
+246	64.5	0
+247	64.5	0
+248	64.5	0
+249	64.5	0
+250	64.5	0
+251	64.5	0
+252	64.5	0
+253	64.5	0
+254	64.5	0
+255	64.5	0
+256	64.5	0
+257	64.5	0
+258	64.5	0
+259	64.5	0
+260	64.5	0
+261	64.5	0
+262	64.5	0
+263	64.5	0
+264	64.5	0
+265	64.5	0
+266	64.5	0
+267	64.5	0
+268	64.5	0
+269	64.5	0
+270	64.5	0
+271	64.5	0
+272	64.5	0
+273	64.5	0
+274	64.5	0
+275	64.5	0
+276	64.5	0
+277	64.5	0
+278	64.5	0
+279	64.5	0
+280	64.5	0
+281	64.5	0
+282	64.5	0
+283	64.5	0
+284	64.5	0
+285	64.5	0
+286	64.5	0
+287	64.5	0
+288	64.5	0
+289	64.5	0
+290	64.5	0
+291	64.5	0
+292	64.5	0
+293	64.5	0
+294	64.5	0
+295	64.5	0
+296	64.5	0
+297	64.5	0
+298	64.5	0
+299	64.5	0
+300	64.5	0
+301	64.5	0
+302	64.5	0
+303	64.5	0
+304	64.5	0
+305	64.5	0
+306	64.5	0
+307	64.5	0
+308	64.5	0
+309	64.5	0
+310	64.5	0
+311	64.5	0
+312	64.5	0
+313	64.5	0
+314	64.5	0
+315	64.5	0
+316	64.5	0
+317	64.5	0
+318	64.5	0
+319	64.5	0
+320	64.5	0
+321	64.5	0
+322	64.5	0
+323	64.5	0
+324	64.5	0
+325	64.5	0
+326	64.5	0
+327	64.5	0
+328	64.5	0
+329	64.5	0
+330	64.5	0
+331	64.5	0
+332	64.5	0
+333	64.5	0
+334	64.5	0
+335	64.5	0
+336	64.5	0
+337	64.5	0
+338	64.5	0
+339	64.5	0
+340	64.5	0
+341	64.5	0
+342	64.5	0
+343	64.5	0
+344	64.5	0
+345	64.5	0
+346	64.5	0
+347	64.5	0
+348	64.5	0
+349	64.5	0
+350	64.5	0
+351	64.5	0
+352	64.5	0
+353	64.5	0
+354	64.5	0
+355	64.5	0
+356	64.5	0
+357	64.5	0
+358	64.5	0
+359	64.5	0
+360	64.5	0
+0	65	0
+1	65	0
+2	65	0
+3	65	0
+4	65	0
+5	65	0
+6	65	0
+7	65	0
+8	65	0
+9	65	0
+10	65	0
+11	65	0
+12	65	0
+13	65	0
+14	65	0
+15	65	0
+16	65	0
+17	65	0
+18	65	0
+19	65	0
+20	65	0
+21	65	0
+22	65	0
+23	65	0
+24	65	0
+25	65	0
+26	65	0
+27	65	0
+28	65	0
+29	65	0
+30	65	0
+31	65	0
+32	65	0
+33	65	0
+34	65	0
+35	65	0
+36	65	0
+37	65	0
+38	65	0
+39	65	0
+40	65	0
+41	65	0
+42	65	0
+43	65	0
+44	65	0
+45	65	0
+46	65	0
+47	65	0
+48	65	0
+49	65	0
+50	65	0
+51	65	0
+52	65	0
+53	65	0
+54	65	0
+55	65	0
+56	65	0
+57	65	0
+58	65	0
+59	65	0
+60	65	0
+61	65	0
+62	65	0
+63	65	0
+64	65	0
+65	65	0
+66	65	0
+67	65	0
+68	65	0
+69	65	0
+70	65	0
+71	65	0
+72	65	0
+73	65	0
+74	65	0
+75	65	0
+76	65	0
+77	65	0
+78	65	0
+79	65	0
+80	65	0
+81	65	0
+82	65	0
+83	65	0
+84	65	0
+85	65	0
+86	65	0
+87	65	0
+88	65	0
+89	65	0
+90	65	0
+91	65	0
+92	65	0
+93	65	0
+94	65	0
+95	65	0
+96	65	0
+97	65	0
+98	65	0
+99	65	0
+100	65	0
+101	65	0
+102	65	0
+103	65	0
+104	65	0
+105	65	0
+106	65	0
+107	65	0
+108	65	0
+109	65	0
+110	65	0
+111	65	0
+112	65	0
+113	65	0
+114	65	0
+115	65	0
+116	65	0
+117	65	0
+118	65	0
+119	65	0
+120	65	0
+121	65	0
+122	65	0
+123	65	0
+124	65	0
+125	65	0
+126	65	0
+127	65	0
+128	65	0
+129	65	0
+130	65	0
+131	65	0
+132	65	0
+133	65	0
+134	65	0
+135	65	0
+136	65	0
+137	65	0
+138	65	0
+139	65	0
+140	65	0
+141	65	0
+142	65	0
+143	65	0
+144	65	0
+145	65	0
+146	65	0
+147	65	0
+148	65	0
+149	65	0
+150	65	0
+151	65	0
+152	65	0
+153	65	0
+154	65	0
+155	65	0
+156	65	0
+157	65	0
+158	65	0
+159	65	0
+160	65	0
+161	65	0
+162	65	0
+163	65	0
+164	65	0
+165	65	0
+166	65	0
+167	65	0
+168	65	0
+169	65	0
+170	65	0
+171	65	0
+172	65	0
+173	65	0
+174	65	0
+175	65	0
+176	65	0
+177	65	0
+178	65	0
+179	65	0
+180	65	0
+181	65	0
+182	65	0
+183	65	0
+184	65	0
+185	65	0
+186	65	0
+187	65	0
+188	65	0
+189	65	0
+190	65	0
+191	65	0
+192	65	0
+193	65	0
+194	65	0
+195	65	0
+196	65	0
+197	65	0
+198	65	0
+199	65	0
+200	65	0
+201	65	0
+202	65	0
+203	65	0
+204	65	0
+205	65	0
+206	65	0
+207	65	0
+208	65	0
+209	65	0
+210	65	0
+211	65	0
+212	65	0
+213	65	0
+214	65	0
+215	65	0
+216	65	0
+217	65	0
+218	65	0
+219	65	0
+220	65	0
+221	65	0
+222	65	0
+223	65	0
+224	65	0
+225	65	0
+226	65	0
+227	65	0
+228	65	0
+229	65	0
+230	65	0
+231	65	0
+232	65	0
+233	65	0
+234	65	0
+235	65	0
+236	65	0
+237	65	0
+238	65	0
+239	65	0
+240	65	0
+241	65	0
+242	65	0
+243	65	0
+244	65	0
+245	65	0
+246	65	0
+247	65	0
+248	65	0
+249	65	0
+250	65	0
+251	65	0
+252	65	0
+253	65	0
+254	65	0
+255	65	0
+256	65	0
+257	65	0
+258	65	0
+259	65	0
+260	65	0
+261	65	0
+262	65	0
+263	65	0
+264	65	0
+265	65	0
+266	65	0
+267	65	0
+268	65	0
+269	65	0
+270	65	0
+271	65	0
+272	65	0
+273	65	0
+274	65	0
+275	65	0
+276	65	0
+277	65	0
+278	65	0
+279	65	0
+280	65	0
+281	65	0
+282	65	0
+283	65	0
+284	65	0
+285	65	0
+286	65	0
+287	65	0
+288	65	0
+289	65	0
+290	65	0
+291	65	0
+292	65	0
+293	65	0
+294	65	0
+295	65	0
+296	65	0
+297	65	0
+298	65	0
+299	65	0
+300	65	0
+301	65	0
+302	65	0
+303	65	0
+304	65	0
+305	65	0
+306	65	0
+307	65	0
+308	65	0
+309	65	0
+310	65	0
+311	65	0
+312	65	0
+313	65	0
+314	65	0
+315	65	0
+316	65	0
+317	65	0
+318	65	0
+319	65	0
+320	65	0
+321	65	0
+322	65	0
+323	65	0
+324	65	0
+325	65	0
+326	65	0
+327	65	0
+328	65	0
+329	65	0
+330	65	0
+331	65	0
+332	65	0
+333	65	0
+334	65	0
+335	65	0
+336	65	0
+337	65	0
+338	65	0
+339	65	0
+340	65	0
+341	65	0
+342	65	0
+343	65	0
+344	65	0
+345	65	0
+346	65	0
+347	65	0
+348	65	0
+349	65	0
+350	65	0
+351	65	0
+352	65	0
+353	65	0
+354	65	0
+355	65	0
+356	65	0
+357	65	0
+358	65	0
+359	65	0
+360	65	0
+0	65.5	0
+1	65.5	0
+2	65.5	0
+3	65.5	0
+4	65.5	0
+5	65.5	0
+6	65.5	0
+7	65.5	0
+8	65.5	0
+9	65.5	0
+10	65.5	0
+11	65.5	0
+12	65.5	0
+13	65.5	0
+14	65.5	0
+15	65.5	0
+16	65.5	0
+17	65.5	0
+18	65.5	0
+19	65.5	0
+20	65.5	0
+21	65.5	0
+22	65.5	0
+23	65.5	0
+24	65.5	0
+25	65.5	0
+26	65.5	0
+27	65.5	0
+28	65.5	0
+29	65.5	0
+30	65.5	0
+31	65.5	0
+32	65.5	0
+33	65.5	0
+34	65.5	0
+35	65.5	0
+36	65.5	0
+37	65.5	0
+38	65.5	0
+39	65.5	0
+40	65.5	0
+41	65.5	0
+42	65.5	0
+43	65.5	0
+44	65.5	0
+45	65.5	0
+46	65.5	0
+47	65.5	0
+48	65.5	0
+49	65.5	0
+50	65.5	0
+51	65.5	0
+52	65.5	0
+53	65.5	0
+54	65.5	0
+55	65.5	0
+56	65.5	0
+57	65.5	0
+58	65.5	0
+59	65.5	0
+60	65.5	0
+61	65.5	0
+62	65.5	0
+63	65.5	0
+64	65.5	0
+65	65.5	0
+66	65.5	0
+67	65.5	0
+68	65.5	0
+69	65.5	0
+70	65.5	0
+71	65.5	0
+72	65.5	0
+73	65.5	0
+74	65.5	0
+75	65.5	0
+76	65.5	0
+77	65.5	0
+78	65.5	0
+79	65.5	0
+80	65.5	0
+81	65.5	0
+82	65.5	0
+83	65.5	0
+84	65.5	0
+85	65.5	0
+86	65.5	0
+87	65.5	0
+88	65.5	0
+89	65.5	0
+90	65.5	0
+91	65.5	0
+92	65.5	0
+93	65.5	0
+94	65.5	0
+95	65.5	0
+96	65.5	0
+97	65.5	0
+98	65.5	0
+99	65.5	0
+100	65.5	0
+101	65.5	0
+102	65.5	0
+103	65.5	0
+104	65.5	0
+105	65.5	0
+106	65.5	0
+107	65.5	0
+108	65.5	0
+109	65.5	0
+110	65.5	0
+111	65.5	0
+112	65.5	0
+113	65.5	0
+114	65.5	0
+115	65.5	0
+116	65.5	0
+117	65.5	0
+118	65.5	0
+119	65.5	0
+120	65.5	0
+121	65.5	0
+122	65.5	0
+123	65.5	0
+124	65.5	0
+125	65.5	0
+126	65.5	0
+127	65.5	0
+128	65.5	0
+129	65.5	0
+130	65.5	0
+131	65.5	0
+132	65.5	0
+133	65.5	0
+134	65.5	0
+135	65.5	0
+136	65.5	0
+137	65.5	0
+138	65.5	0
+139	65.5	0
+140	65.5	0
+141	65.5	0
+142	65.5	0
+143	65.5	0
+144	65.5	0
+145	65.5	0
+146	65.5	0
+147	65.5	0
+148	65.5	0
+149	65.5	0
+150	65.5	0
+151	65.5	0
+152	65.5	0
+153	65.5	0
+154	65.5	0
+155	65.5	0
+156	65.5	0
+157	65.5	0
+158	65.5	0
+159	65.5	0
+160	65.5	0
+161	65.5	0
+162	65.5	0
+163	65.5	0
+164	65.5	0
+165	65.5	0
+166	65.5	0
+167	65.5	0
+168	65.5	0
+169	65.5	0
+170	65.5	0
+171	65.5	0
+172	65.5	0
+173	65.5	0
+174	65.5	0
+175	65.5	0
+176	65.5	0
+177	65.5	0
+178	65.5	0
+179	65.5	0
+180	65.5	0
+181	65.5	0
+182	65.5	0
+183	65.5	0
+184	65.5	0
+185	65.5	0
+186	65.5	0
+187	65.5	0
+188	65.5	0
+189	65.5	0
+190	65.5	0
+191	65.5	0
+192	65.5	0
+193	65.5	0
+194	65.5	0
+195	65.5	0
+196	65.5	0
+197	65.5	0
+198	65.5	0
+199	65.5	0
+200	65.5	0
+201	65.5	0
+202	65.5	0
+203	65.5	0
+204	65.5	0
+205	65.5	0
+206	65.5	0
+207	65.5	0
+208	65.5	0
+209	65.5	0
+210	65.5	0
+211	65.5	0
+212	65.5	0
+213	65.5	0
+214	65.5	0
+215	65.5	0
+216	65.5	0
+217	65.5	0
+218	65.5	0
+219	65.5	0
+220	65.5	0
+221	65.5	0
+222	65.5	0
+223	65.5	0
+224	65.5	0
+225	65.5	0
+226	65.5	0
+227	65.5	0
+228	65.5	0
+229	65.5	0
+230	65.5	0
+231	65.5	0
+232	65.5	0
+233	65.5	0
+234	65.5	0
+235	65.5	0
+236	65.5	0
+237	65.5	0
+238	65.5	0
+239	65.5	0
+240	65.5	0
+241	65.5	0
+242	65.5	0
+243	65.5	0
+244	65.5	0
+245	65.5	0
+246	65.5	0
+247	65.5	0
+248	65.5	0
+249	65.5	0
+250	65.5	0
+251	65.5	0
+252	65.5	0
+253	65.5	0
+254	65.5	0
+255	65.5	0
+256	65.5	0
+257	65.5	0
+258	65.5	0
+259	65.5	0
+260	65.5	0
+261	65.5	0
+262	65.5	0
+263	65.5	0
+264	65.5	0
+265	65.5	0
+266	65.5	0
+267	65.5	0
+268	65.5	0
+269	65.5	0
+270	65.5	0
+271	65.5	0
+272	65.5	0
+273	65.5	0
+274	65.5	0
+275	65.5	0
+276	65.5	0
+277	65.5	0
+278	65.5	0
+279	65.5	0
+280	65.5	0
+281	65.5	0
+282	65.5	0
+283	65.5	0
+284	65.5	0
+285	65.5	0
+286	65.5	0
+287	65.5	0
+288	65.5	0
+289	65.5	0
+290	65.5	0
+291	65.5	0
+292	65.5	0
+293	65.5	0
+294	65.5	0
+295	65.5	0
+296	65.5	0
+297	65.5	0
+298	65.5	0
+299	65.5	0
+300	65.5	0
+301	65.5	0
+302	65.5	0
+303	65.5	0
+304	65.5	0
+305	65.5	0
+306	65.5	0
+307	65.5	0
+308	65.5	0
+309	65.5	0
+310	65.5	0
+311	65.5	0
+312	65.5	0
+313	65.5	0
+314	65.5	0
+315	65.5	0
+316	65.5	0
+317	65.5	0
+318	65.5	0
+319	65.5	0
+320	65.5	0
+321	65.5	0
+322	65.5	0
+323	65.5	0
+324	65.5	0
+325	65.5	0
+326	65.5	0
+327	65.5	0
+328	65.5	0
+329	65.5	0
+330	65.5	0
+331	65.5	0
+332	65.5	0
+333	65.5	0
+334	65.5	0
+335	65.5	0
+336	65.5	0
+337	65.5	0
+338	65.5	0
+339	65.5	0
+340	65.5	0
+341	65.5	0
+342	65.5	0
+343	65.5	0
+344	65.5	0
+345	65.5	0
+346	65.5	0
+347	65.5	0
+348	65.5	0
+349	65.5	0
+350	65.5	0
+351	65.5	0
+352	65.5	0
+353	65.5	0
+354	65.5	0
+355	65.5	0
+356	65.5	0
+357	65.5	0
+358	65.5	0
+359	65.5	0
+360	65.5	0
+0	66	0
+1	66	0
+2	66	0
+3	66	0
+4	66	0
+5	66	0
+6	66	0
+7	66	0
+8	66	0
+9	66	0
+10	66	0
+11	66	0
+12	66	0
+13	66	0
+14	66	0
+15	66	0
+16	66	0
+17	66	0
+18	66	0
+19	66	0
+20	66	0
+21	66	0
+22	66	0
+23	66	0
+24	66	0
+25	66	0
+26	66	0
+27	66	0
+28	66	0
+29	66	0
+30	66	0
+31	66	0
+32	66	0
+33	66	0
+34	66	0
+35	66	0
+36	66	0
+37	66	0
+38	66	0
+39	66	0
+40	66	0
+41	66	0
+42	66	0
+43	66	0
+44	66	0
+45	66	0
+46	66	0
+47	66	0
+48	66	0
+49	66	0
+50	66	0
+51	66	0
+52	66	0
+53	66	0
+54	66	0
+55	66	0
+56	66	0
+57	66	0
+58	66	0
+59	66	0
+60	66	0
+61	66	0
+62	66	0
+63	66	0
+64	66	0
+65	66	0
+66	66	0
+67	66	0
+68	66	0
+69	66	0
+70	66	0
+71	66	0
+72	66	0
+73	66	0
+74	66	0
+75	66	0
+76	66	0
+77	66	0
+78	66	0
+79	66	0
+80	66	0
+81	66	0
+82	66	0
+83	66	0
+84	66	0
+85	66	0
+86	66	0
+87	66	0
+88	66	0
+89	66	0
+90	66	0
+91	66	0
+92	66	0
+93	66	0
+94	66	0
+95	66	0
+96	66	0
+97	66	0
+98	66	0
+99	66	0
+100	66	0
+101	66	0
+102	66	0
+103	66	0
+104	66	0
+105	66	0
+106	66	0
+107	66	0
+108	66	0
+109	66	0
+110	66	0
+111	66	0
+112	66	0
+113	66	0
+114	66	0
+115	66	0
+116	66	0
+117	66	0
+118	66	0
+119	66	0
+120	66	0
+121	66	0
+122	66	0
+123	66	0
+124	66	0
+125	66	0
+126	66	0
+127	66	0
+128	66	0
+129	66	0
+130	66	0
+131	66	0
+132	66	0
+133	66	0
+134	66	0
+135	66	0
+136	66	0
+137	66	0
+138	66	0
+139	66	0
+140	66	0
+141	66	0
+142	66	0
+143	66	0
+144	66	0
+145	66	0
+146	66	0
+147	66	0
+148	66	0
+149	66	0
+150	66	0
+151	66	0
+152	66	0
+153	66	0
+154	66	0
+155	66	0
+156	66	0
+157	66	0
+158	66	0
+159	66	0
+160	66	0
+161	66	0
+162	66	0
+163	66	0
+164	66	0
+165	66	0
+166	66	0
+167	66	0
+168	66	0
+169	66	0
+170	66	0
+171	66	0
+172	66	0
+173	66	0
+174	66	0
+175	66	0
+176	66	0
+177	66	0
+178	66	0
+179	66	0
+180	66	0
+181	66	0
+182	66	0
+183	66	0
+184	66	0
+185	66	0
+186	66	0
+187	66	0
+188	66	0
+189	66	0
+190	66	0
+191	66	0
+192	66	0
+193	66	0
+194	66	0
+195	66	0
+196	66	0
+197	66	0
+198	66	0
+199	66	0
+200	66	0
+201	66	0
+202	66	0
+203	66	0
+204	66	0
+205	66	0
+206	66	0
+207	66	0
+208	66	0
+209	66	0
+210	66	0
+211	66	0
+212	66	0
+213	66	0
+214	66	0
+215	66	0
+216	66	0
+217	66	0
+218	66	0
+219	66	0
+220	66	0
+221	66	0
+222	66	0
+223	66	0
+224	66	0
+225	66	0
+226	66	0
+227	66	0
+228	66	0
+229	66	0
+230	66	0
+231	66	0
+232	66	0
+233	66	0
+234	66	0
+235	66	0
+236	66	0
+237	66	0
+238	66	0
+239	66	0
+240	66	0
+241	66	0
+242	66	0
+243	66	0
+244	66	0
+245	66	0
+246	66	0
+247	66	0
+248	66	0
+249	66	0
+250	66	0
+251	66	0
+252	66	0
+253	66	0
+254	66	0
+255	66	0
+256	66	0
+257	66	0
+258	66	0
+259	66	0
+260	66	0
+261	66	0
+262	66	0
+263	66	0
+264	66	0
+265	66	0
+266	66	0
+267	66	0
+268	66	0
+269	66	0
+270	66	0
+271	66	0
+272	66	0
+273	66	0
+274	66	0
+275	66	0
+276	66	0
+277	66	0
+278	66	0
+279	66	0
+280	66	0
+281	66	0
+282	66	0
+283	66	0
+284	66	0
+285	66	0
+286	66	0
+287	66	0
+288	66	0
+289	66	0
+290	66	0
+291	66	0
+292	66	0
+293	66	0
+294	66	0
+295	66	0
+296	66	0
+297	66	0
+298	66	0
+299	66	0
+300	66	0
+301	66	0
+302	66	0
+303	66	0
+304	66	0
+305	66	0
+306	66	0
+307	66	0
+308	66	0
+309	66	0
+310	66	0
+311	66	0
+312	66	0
+313	66	0
+314	66	0
+315	66	0
+316	66	0
+317	66	0
+318	66	0
+319	66	0
+320	66	0
+321	66	0
+322	66	0
+323	66	0
+324	66	0
+325	66	0
+326	66	0
+327	66	0
+328	66	0
+329	66	0
+330	66	0
+331	66	0
+332	66	0
+333	66	0
+334	66	0
+335	66	0
+336	66	0
+337	66	0
+338	66	0
+339	66	0
+340	66	0
+341	66	0
+342	66	0
+343	66	0
+344	66	0
+345	66	0
+346	66	0
+347	66	0
+348	66	0
+349	66	0
+350	66	0
+351	66	0
+352	66	0
+353	66	0
+354	66	0
+355	66	0
+356	66	0
+357	66	0
+358	66	0
+359	66	0
+360	66	0
+0	66.5	0
+1	66.5	0
+2	66.5	0
+3	66.5	0
+4	66.5	0
+5	66.5	0
+6	66.5	0
+7	66.5	0
+8	66.5	0
+9	66.5	0
+10	66.5	0
+11	66.5	0
+12	66.5	0
+13	66.5	0
+14	66.5	0
+15	66.5	0
+16	66.5	0
+17	66.5	0
+18	66.5	0
+19	66.5	0
+20	66.5	0
+21	66.5	0
+22	66.5	0
+23	66.5	0
+24	66.5	0
+25	66.5	0
+26	66.5	0
+27	66.5	0
+28	66.5	0
+29	66.5	0
+30	66.5	0
+31	66.5	0
+32	66.5	0
+33	66.5	0
+34	66.5	0
+35	66.5	0
+36	66.5	0
+37	66.5	0
+38	66.5	0
+39	66.5	0
+40	66.5	0
+41	66.5	0
+42	66.5	0
+43	66.5	0
+44	66.5	0
+45	66.5	0
+46	66.5	0
+47	66.5	0
+48	66.5	0
+49	66.5	0
+50	66.5	0
+51	66.5	0
+52	66.5	0
+53	66.5	0
+54	66.5	0
+55	66.5	0
+56	66.5	0
+57	66.5	0
+58	66.5	0
+59	66.5	0
+60	66.5	0
+61	66.5	0
+62	66.5	0
+63	66.5	0
+64	66.5	0
+65	66.5	0
+66	66.5	0
+67	66.5	0
+68	66.5	0
+69	66.5	0
+70	66.5	0
+71	66.5	0
+72	66.5	0
+73	66.5	0
+74	66.5	0
+75	66.5	0
+76	66.5	0
+77	66.5	0
+78	66.5	0
+79	66.5	0
+80	66.5	0
+81	66.5	0
+82	66.5	0
+83	66.5	0
+84	66.5	0
+85	66.5	0
+86	66.5	0
+87	66.5	0
+88	66.5	0
+89	66.5	0
+90	66.5	0
+91	66.5	0
+92	66.5	0
+93	66.5	0
+94	66.5	0
+95	66.5	0
+96	66.5	0
+97	66.5	0
+98	66.5	0
+99	66.5	0
+100	66.5	0
+101	66.5	0
+102	66.5	0
+103	66.5	0
+104	66.5	0
+105	66.5	0
+106	66.5	0
+107	66.5	0
+108	66.5	0
+109	66.5	0
+110	66.5	0
+111	66.5	0
+112	66.5	0
+113	66.5	0
+114	66.5	0
+115	66.5	0
+116	66.5	0
+117	66.5	0
+118	66.5	0
+119	66.5	0
+120	66.5	0
+121	66.5	0
+122	66.5	0
+123	66.5	0
+124	66.5	0
+125	66.5	0
+126	66.5	0
+127	66.5	0
+128	66.5	0
+129	66.5	0
+130	66.5	0
+131	66.5	0
+132	66.5	0
+133	66.5	0
+134	66.5	0
+135	66.5	0
+136	66.5	0
+137	66.5	0
+138	66.5	0
+139	66.5	0
+140	66.5	0
+141	66.5	0
+142	66.5	0
+143	66.5	0
+144	66.5	0
+145	66.5	0
+146	66.5	0
+147	66.5	0
+148	66.5	0
+149	66.5	0
+150	66.5	0
+151	66.5	0
+152	66.5	0
+153	66.5	0
+154	66.5	0
+155	66.5	0
+156	66.5	0
+157	66.5	0
+158	66.5	0
+159	66.5	0
+160	66.5	0
+161	66.5	0
+162	66.5	0
+163	66.5	0
+164	66.5	0
+165	66.5	0
+166	66.5	0
+167	66.5	0
+168	66.5	0
+169	66.5	0
+170	66.5	0
+171	66.5	0
+172	66.5	0
+173	66.5	0
+174	66.5	0
+175	66.5	0
+176	66.5	0
+177	66.5	0
+178	66.5	0
+179	66.5	0
+180	66.5	0
+181	66.5	0
+182	66.5	0
+183	66.5	0
+184	66.5	0
+185	66.5	0
+186	66.5	0
+187	66.5	0
+188	66.5	0
+189	66.5	0
+190	66.5	0
+191	66.5	0
+192	66.5	0
+193	66.5	0
+194	66.5	0
+195	66.5	0
+196	66.5	0
+197	66.5	0
+198	66.5	0
+199	66.5	0
+200	66.5	0
+201	66.5	0
+202	66.5	0
+203	66.5	0
+204	66.5	0
+205	66.5	0
+206	66.5	0
+207	66.5	0
+208	66.5	0
+209	66.5	0
+210	66.5	0
+211	66.5	0
+212	66.5	0
+213	66.5	0
+214	66.5	0
+215	66.5	0
+216	66.5	0
+217	66.5	0
+218	66.5	0
+219	66.5	0
+220	66.5	0
+221	66.5	0
+222	66.5	0
+223	66.5	0
+224	66.5	0
+225	66.5	0
+226	66.5	0
+227	66.5	0
+228	66.5	0
+229	66.5	0
+230	66.5	0
+231	66.5	0
+232	66.5	0
+233	66.5	0
+234	66.5	0
+235	66.5	0
+236	66.5	0
+237	66.5	0
+238	66.5	0
+239	66.5	0
+240	66.5	0
+241	66.5	0
+242	66.5	0
+243	66.5	0
+244	66.5	0
+245	66.5	0
+246	66.5	0
+247	66.5	0
+248	66.5	0
+249	66.5	0
+250	66.5	0
+251	66.5	0
+252	66.5	0
+253	66.5	0
+254	66.5	0
+255	66.5	0
+256	66.5	0
+257	66.5	0
+258	66.5	0
+259	66.5	0
+260	66.5	0
+261	66.5	0
+262	66.5	0
+263	66.5	0
+264	66.5	0
+265	66.5	0
+266	66.5	0
+267	66.5	0
+268	66.5	0
+269	66.5	0
+270	66.5	0
+271	66.5	0
+272	66.5	0
+273	66.5	0
+274	66.5	0
+275	66.5	0
+276	66.5	0
+277	66.5	0
+278	66.5	0
+279	66.5	0
+280	66.5	0
+281	66.5	0
+282	66.5	0
+283	66.5	0
+284	66.5	0
+285	66.5	0
+286	66.5	0
+287	66.5	0
+288	66.5	0
+289	66.5	0
+290	66.5	0
+291	66.5	0
+292	66.5	0
+293	66.5	0
+294	66.5	0
+295	66.5	0
+296	66.5	0
+297	66.5	0
+298	66.5	0
+299	66.5	0
+300	66.5	0
+301	66.5	0
+302	66.5	0
+303	66.5	0
+304	66.5	0
+305	66.5	0
+306	66.5	0
+307	66.5	0
+308	66.5	0
+309	66.5	0
+310	66.5	0
+311	66.5	0
+312	66.5	0
+313	66.5	0
+314	66.5	0
+315	66.5	0
+316	66.5	0
+317	66.5	0
+318	66.5	0
+319	66.5	0
+320	66.5	0
+321	66.5	0
+322	66.5	0
+323	66.5	0
+324	66.5	0
+325	66.5	0
+326	66.5	0
+327	66.5	0
+328	66.5	0
+329	66.5	0
+330	66.5	0
+331	66.5	0
+332	66.5	0
+333	66.5	0
+334	66.5	0
+335	66.5	0
+336	66.5	0
+337	66.5	0
+338	66.5	0
+339	66.5	0
+340	66.5	0
+341	66.5	0
+342	66.5	0
+343	66.5	0
+344	66.5	0
+345	66.5	0
+346	66.5	0
+347	66.5	0
+348	66.5	0
+349	66.5	0
+350	66.5	0
+351	66.5	0
+352	66.5	0
+353	66.5	0
+354	66.5	0
+355	66.5	0
+356	66.5	0
+357	66.5	0
+358	66.5	0
+359	66.5	0
+360	66.5	0
+0	67	0
+1	67	0
+2	67	0
+3	67	0
+4	67	0
+5	67	0
+6	67	0
+7	67	0
+8	67	0
+9	67	0
+10	67	0
+11	67	0
+12	67	0
+13	67	0
+14	67	0
+15	67	0
+16	67	0
+17	67	0
+18	67	0
+19	67	0
+20	67	0
+21	67	0
+22	67	0
+23	67	0
+24	67	0
+25	67	0
+26	67	0
+27	67	0
+28	67	0
+29	67	0
+30	67	0
+31	67	0
+32	67	0
+33	67	0
+34	67	0
+35	67	0
+36	67	0
+37	67	0
+38	67	0
+39	67	0
+40	67	0
+41	67	0
+42	67	0
+43	67	0
+44	67	0
+45	67	0
+46	67	0
+47	67	0
+48	67	0
+49	67	0
+50	67	0
+51	67	0
+52	67	0
+53	67	0
+54	67	0
+55	67	0
+56	67	0
+57	67	0
+58	67	0
+59	67	0
+60	67	0
+61	67	0
+62	67	0
+63	67	0
+64	67	0
+65	67	0
+66	67	0
+67	67	0
+68	67	0
+69	67	0
+70	67	0
+71	67	0
+72	67	0
+73	67	0
+74	67	0
+75	67	0
+76	67	0
+77	67	0
+78	67	0
+79	67	0
+80	67	0
+81	67	0
+82	67	0
+83	67	0
+84	67	0
+85	67	0
+86	67	0
+87	67	0
+88	67	0
+89	67	0
+90	67	0
+91	67	0
+92	67	0
+93	67	0
+94	67	0
+95	67	0
+96	67	0
+97	67	0
+98	67	0
+99	67	0
+100	67	0
+101	67	0
+102	67	0
+103	67	0
+104	67	0
+105	67	0
+106	67	0
+107	67	0
+108	67	0
+109	67	0
+110	67	0
+111	67	0
+112	67	0
+113	67	0
+114	67	0
+115	67	0
+116	67	0
+117	67	0
+118	67	0
+119	67	0
+120	67	0
+121	67	0
+122	67	0
+123	67	0
+124	67	0
+125	67	0
+126	67	0
+127	67	0
+128	67	0
+129	67	0
+130	67	0
+131	67	0
+132	67	0
+133	67	0
+134	67	0
+135	67	0
+136	67	0
+137	67	0
+138	67	0
+139	67	0
+140	67	0
+141	67	0
+142	67	0
+143	67	0
+144	67	0
+145	67	0
+146	67	0
+147	67	0
+148	67	0
+149	67	0
+150	67	0
+151	67	0
+152	67	0
+153	67	0
+154	67	0
+155	67	0
+156	67	0
+157	67	0
+158	67	0
+159	67	0
+160	67	0
+161	67	0
+162	67	0
+163	67	0
+164	67	0
+165	67	0
+166	67	0
+167	67	0
+168	67	0
+169	67	0
+170	67	0
+171	67	0
+172	67	0
+173	67	0
+174	67	0
+175	67	0
+176	67	0
+177	67	0
+178	67	0
+179	67	0
+180	67	0
+181	67	0
+182	67	0
+183	67	0
+184	67	0
+185	67	0
+186	67	0
+187	67	0
+188	67	0
+189	67	0
+190	67	0
+191	67	0
+192	67	0
+193	67	0
+194	67	0
+195	67	0
+196	67	0
+197	67	0
+198	67	0
+199	67	0
+200	67	0
+201	67	0
+202	67	0
+203	67	0
+204	67	0
+205	67	0
+206	67	0
+207	67	0
+208	67	0
+209	67	0
+210	67	0
+211	67	0
+212	67	0
+213	67	0
+214	67	0
+215	67	0
+216	67	0
+217	67	0
+218	67	0
+219	67	0
+220	67	0
+221	67	0
+222	67	0
+223	67	0
+224	67	0
+225	67	0
+226	67	0
+227	67	0
+228	67	0
+229	67	0
+230	67	0
+231	67	0
+232	67	0
+233	67	0
+234	67	0
+235	67	0
+236	67	0
+237	67	0
+238	67	0
+239	67	0
+240	67	0
+241	67	0
+242	67	0
+243	67	0
+244	67	0
+245	67	0
+246	67	0
+247	67	0
+248	67	0
+249	67	0
+250	67	0
+251	67	0
+252	67	0
+253	67	0
+254	67	0
+255	67	0
+256	67	0
+257	67	0
+258	67	0
+259	67	0
+260	67	0
+261	67	0
+262	67	0
+263	67	0
+264	67	0
+265	67	0
+266	67	0
+267	67	0
+268	67	0
+269	67	0
+270	67	0
+271	67	0
+272	67	0
+273	67	0
+274	67	0
+275	67	0
+276	67	0
+277	67	0
+278	67	0
+279	67	0
+280	67	0
+281	67	0
+282	67	0
+283	67	0
+284	67	0
+285	67	0
+286	67	0
+287	67	0
+288	67	0
+289	67	0
+290	67	0
+291	67	0
+292	67	0
+293	67	0
+294	67	0
+295	67	0
+296	67	0
+297	67	0
+298	67	0
+299	67	0
+300	67	0
+301	67	0
+302	67	0
+303	67	0
+304	67	0
+305	67	0
+306	67	0
+307	67	0
+308	67	0
+309	67	0
+310	67	0
+311	67	0
+312	67	0
+313	67	0
+314	67	0
+315	67	0
+316	67	0
+317	67	0
+318	67	0
+319	67	0
+320	67	0
+321	67	0
+322	67	0
+323	67	0
+324	67	0
+325	67	0
+326	67	0
+327	67	0
+328	67	0
+329	67	0
+330	67	0
+331	67	0
+332	67	0
+333	67	0
+334	67	0
+335	67	0
+336	67	0
+337	67	0
+338	67	0
+339	67	0
+340	67	0
+341	67	0
+342	67	0
+343	67	0
+344	67	0
+345	67	0
+346	67	0
+347	67	0
+348	67	0
+349	67	0
+350	67	0
+351	67	0
+352	67	0
+353	67	0
+354	67	0
+355	67	0
+356	67	0
+357	67	0
+358	67	0
+359	67	0
+360	67	0
+0	67.5	0
+1	67.5	0
+2	67.5	0
+3	67.5	0
+4	67.5	0
+5	67.5	0
+6	67.5	0
+7	67.5	0
+8	67.5	0
+9	67.5	0
+10	67.5	0
+11	67.5	0
+12	67.5	0
+13	67.5	0
+14	67.5	0
+15	67.5	0
+16	67.5	0
+17	67.5	0
+18	67.5	0
+19	67.5	0
+20	67.5	0
+21	67.5	0
+22	67.5	0
+23	67.5	0
+24	67.5	0
+25	67.5	0
+26	67.5	0
+27	67.5	0
+28	67.5	0
+29	67.5	0
+30	67.5	0
+31	67.5	0
+32	67.5	0
+33	67.5	0
+34	67.5	0
+35	67.5	0
+36	67.5	0
+37	67.5	0
+38	67.5	0
+39	67.5	0
+40	67.5	0
+41	67.5	0
+42	67.5	0
+43	67.5	0
+44	67.5	0
+45	67.5	0
+46	67.5	0
+47	67.5	0
+48	67.5	0
+49	67.5	0
+50	67.5	0
+51	67.5	0
+52	67.5	0
+53	67.5	0
+54	67.5	0
+55	67.5	0
+56	67.5	0
+57	67.5	0
+58	67.5	0
+59	67.5	0
+60	67.5	0
+61	67.5	0
+62	67.5	0
+63	67.5	0
+64	67.5	0
+65	67.5	0
+66	67.5	0
+67	67.5	0
+68	67.5	0
+69	67.5	0
+70	67.5	0
+71	67.5	0
+72	67.5	0
+73	67.5	0
+74	67.5	0
+75	67.5	0
+76	67.5	0
+77	67.5	0
+78	67.5	0
+79	67.5	0
+80	67.5	0
+81	67.5	0
+82	67.5	0
+83	67.5	0
+84	67.5	0
+85	67.5	0
+86	67.5	0
+87	67.5	0
+88	67.5	0
+89	67.5	0
+90	67.5	0
+91	67.5	0
+92	67.5	0
+93	67.5	0
+94	67.5	0
+95	67.5	0
+96	67.5	0
+97	67.5	0
+98	67.5	0
+99	67.5	0
+100	67.5	0
+101	67.5	0
+102	67.5	0
+103	67.5	0
+104	67.5	0
+105	67.5	0
+106	67.5	0
+107	67.5	0
+108	67.5	0
+109	67.5	0
+110	67.5	0
+111	67.5	0
+112	67.5	0
+113	67.5	0
+114	67.5	0
+115	67.5	0
+116	67.5	0
+117	67.5	0
+118	67.5	0
+119	67.5	0
+120	67.5	0
+121	67.5	0
+122	67.5	0
+123	67.5	0
+124	67.5	0
+125	67.5	0
+126	67.5	0
+127	67.5	0
+128	67.5	0
+129	67.5	0
+130	67.5	0
+131	67.5	0
+132	67.5	0
+133	67.5	0
+134	67.5	0
+135	67.5	0
+136	67.5	0
+137	67.5	0
+138	67.5	0
+139	67.5	0
+140	67.5	0
+141	67.5	0
+142	67.5	0
+143	67.5	0
+144	67.5	0
+145	67.5	0
+146	67.5	0
+147	67.5	0
+148	67.5	0
+149	67.5	0
+150	67.5	0
+151	67.5	0
+152	67.5	0
+153	67.5	0
+154	67.5	0
+155	67.5	0
+156	67.5	0
+157	67.5	0
+158	67.5	0
+159	67.5	0
+160	67.5	0
+161	67.5	0
+162	67.5	0
+163	67.5	0
+164	67.5	0
+165	67.5	0
+166	67.5	0
+167	67.5	0
+168	67.5	0
+169	67.5	0
+170	67.5	0
+171	67.5	0
+172	67.5	0
+173	67.5	0
+174	67.5	0
+175	67.5	0
+176	67.5	0
+177	67.5	0
+178	67.5	0
+179	67.5	0
+180	67.5	0
+181	67.5	0
+182	67.5	0
+183	67.5	0
+184	67.5	0
+185	67.5	0
+186	67.5	0
+187	67.5	0
+188	67.5	0
+189	67.5	0
+190	67.5	0
+191	67.5	0
+192	67.5	0
+193	67.5	0
+194	67.5	0
+195	67.5	0
+196	67.5	0
+197	67.5	0
+198	67.5	0
+199	67.5	0
+200	67.5	0
+201	67.5	0
+202	67.5	0
+203	67.5	0
+204	67.5	0
+205	67.5	0
+206	67.5	0
+207	67.5	0
+208	67.5	0
+209	67.5	0
+210	67.5	0
+211	67.5	0
+212	67.5	0
+213	67.5	0
+214	67.5	0
+215	67.5	0
+216	67.5	0
+217	67.5	0
+218	67.5	0
+219	67.5	0
+220	67.5	0
+221	67.5	0
+222	67.5	0
+223	67.5	0
+224	67.5	0
+225	67.5	0
+226	67.5	0
+227	67.5	0
+228	67.5	0
+229	67.5	0
+230	67.5	0
+231	67.5	0
+232	67.5	0
+233	67.5	0
+234	67.5	0
+235	67.5	0
+236	67.5	0
+237	67.5	0
+238	67.5	0
+239	67.5	0
+240	67.5	0
+241	67.5	0
+242	67.5	0
+243	67.5	0
+244	67.5	0
+245	67.5	0
+246	67.5	0
+247	67.5	0
+248	67.5	0
+249	67.5	0
+250	67.5	0
+251	67.5	0
+252	67.5	0
+253	67.5	0
+254	67.5	0
+255	67.5	0
+256	67.5	0
+257	67.5	0
+258	67.5	0
+259	67.5	0
+260	67.5	0
+261	67.5	0
+262	67.5	0
+263	67.5	0
+264	67.5	0
+265	67.5	0
+266	67.5	0
+267	67.5	0
+268	67.5	0
+269	67.5	0
+270	67.5	0
+271	67.5	0
+272	67.5	0
+273	67.5	0
+274	67.5	0
+275	67.5	0
+276	67.5	0
+277	67.5	0
+278	67.5	0
+279	67.5	0
+280	67.5	0
+281	67.5	0
+282	67.5	0
+283	67.5	0
+284	67.5	0
+285	67.5	0
+286	67.5	0
+287	67.5	0
+288	67.5	0
+289	67.5	0
+290	67.5	0
+291	67.5	0
+292	67.5	0
+293	67.5	0
+294	67.5	0
+295	67.5	0
+296	67.5	0
+297	67.5	0
+298	67.5	0
+299	67.5	0
+300	67.5	0
+301	67.5	0
+302	67.5	0
+303	67.5	0
+304	67.5	0
+305	67.5	0
+306	67.5	0
+307	67.5	0
+308	67.5	0
+309	67.5	0
+310	67.5	0
+311	67.5	0
+312	67.5	0
+313	67.5	0
+314	67.5	0
+315	67.5	0
+316	67.5	0
+317	67.5	0
+318	67.5	0
+319	67.5	0
+320	67.5	0
+321	67.5	0
+322	67.5	0
+323	67.5	0
+324	67.5	0
+325	67.5	0
+326	67.5	0
+327	67.5	0
+328	67.5	0
+329	67.5	0
+330	67.5	0
+331	67.5	0
+332	67.5	0
+333	67.5	0
+334	67.5	0
+335	67.5	0
+336	67.5	0
+337	67.5	0
+338	67.5	0
+339	67.5	0
+340	67.5	0
+341	67.5	0
+342	67.5	0
+343	67.5	0
+344	67.5	0
+345	67.5	0
+346	67.5	0
+347	67.5	0
+348	67.5	0
+349	67.5	0
+350	67.5	0
+351	67.5	0
+352	67.5	0
+353	67.5	0
+354	67.5	0
+355	67.5	0
+356	67.5	0
+357	67.5	0
+358	67.5	0
+359	67.5	0
+360	67.5	0
+0	68	0
+1	68	0
+2	68	0
+3	68	0
+4	68	0
+5	68	0
+6	68	0
+7	68	0
+8	68	0
+9	68	0
+10	68	0
+11	68	0
+12	68	0
+13	68	0
+14	68	0
+15	68	0
+16	68	0
+17	68	0
+18	68	0
+19	68	0
+20	68	0
+21	68	0
+22	68	0
+23	68	0
+24	68	0
+25	68	0
+26	68	0
+27	68	0
+28	68	0
+29	68	0
+30	68	0
+31	68	0
+32	68	0
+33	68	0
+34	68	0
+35	68	0
+36	68	0
+37	68	0
+38	68	0
+39	68	0
+40	68	0
+41	68	0
+42	68	0
+43	68	0
+44	68	0
+45	68	0
+46	68	0
+47	68	0
+48	68	0
+49	68	0
+50	68	0
+51	68	0
+52	68	0
+53	68	0
+54	68	0
+55	68	0
+56	68	0
+57	68	0
+58	68	0
+59	68	0
+60	68	0
+61	68	0
+62	68	0
+63	68	0
+64	68	0
+65	68	0
+66	68	0
+67	68	0
+68	68	0
+69	68	0
+70	68	0
+71	68	0
+72	68	0
+73	68	0
+74	68	0
+75	68	0
+76	68	0
+77	68	0
+78	68	0
+79	68	0
+80	68	0
+81	68	0
+82	68	0
+83	68	0
+84	68	0
+85	68	0
+86	68	0
+87	68	0
+88	68	0
+89	68	0
+90	68	0
+91	68	0
+92	68	0
+93	68	0
+94	68	0
+95	68	0
+96	68	0
+97	68	0
+98	68	0
+99	68	0
+100	68	0
+101	68	0
+102	68	0
+103	68	0
+104	68	0
+105	68	0
+106	68	0
+107	68	0
+108	68	0
+109	68	0
+110	68	0
+111	68	0
+112	68	0
+113	68	0
+114	68	0
+115	68	0
+116	68	0
+117	68	0
+118	68	0
+119	68	0
+120	68	0
+121	68	0
+122	68	0
+123	68	0
+124	68	0
+125	68	0
+126	68	0
+127	68	0
+128	68	0
+129	68	0
+130	68	0
+131	68	0
+132	68	0
+133	68	0
+134	68	0
+135	68	0
+136	68	0
+137	68	0
+138	68	0
+139	68	0
+140	68	0
+141	68	0
+142	68	0
+143	68	0
+144	68	0
+145	68	0
+146	68	0
+147	68	0
+148	68	0
+149	68	0
+150	68	0
+151	68	0
+152	68	0
+153	68	0
+154	68	0
+155	68	0
+156	68	0
+157	68	0
+158	68	0
+159	68	0
+160	68	0
+161	68	0
+162	68	0
+163	68	0
+164	68	0
+165	68	0
+166	68	0
+167	68	0
+168	68	0
+169	68	0
+170	68	0
+171	68	0
+172	68	0
+173	68	0
+174	68	0
+175	68	0
+176	68	0
+177	68	0
+178	68	0
+179	68	0
+180	68	0
+181	68	0
+182	68	0
+183	68	0
+184	68	0
+185	68	0
+186	68	0
+187	68	0
+188	68	0
+189	68	0
+190	68	0
+191	68	0
+192	68	0
+193	68	0
+194	68	0
+195	68	0
+196	68	0
+197	68	0
+198	68	0
+199	68	0
+200	68	0
+201	68	0
+202	68	0
+203	68	0
+204	68	0
+205	68	0
+206	68	0
+207	68	0
+208	68	0
+209	68	0
+210	68	0
+211	68	0
+212	68	0
+213	68	0
+214	68	0
+215	68	0
+216	68	0
+217	68	0
+218	68	0
+219	68	0
+220	68	0
+221	68	0
+222	68	0
+223	68	0
+224	68	0
+225	68	0
+226	68	0
+227	68	0
+228	68	0
+229	68	0
+230	68	0
+231	68	0
+232	68	0
+233	68	0
+234	68	0
+235	68	0
+236	68	0
+237	68	0
+238	68	0
+239	68	0
+240	68	0
+241	68	0
+242	68	0
+243	68	0
+244	68	0
+245	68	0
+246	68	0
+247	68	0
+248	68	0
+249	68	0
+250	68	0
+251	68	0
+252	68	0
+253	68	0
+254	68	0
+255	68	0
+256	68	0
+257	68	0
+258	68	0
+259	68	0
+260	68	0
+261	68	0
+262	68	0
+263	68	0
+264	68	0
+265	68	0
+266	68	0
+267	68	0
+268	68	0
+269	68	0
+270	68	0
+271	68	0
+272	68	0
+273	68	0
+274	68	0
+275	68	0
+276	68	0
+277	68	0
+278	68	0
+279	68	0
+280	68	0
+281	68	0
+282	68	0
+283	68	0
+284	68	0
+285	68	0
+286	68	0
+287	68	0
+288	68	0
+289	68	0
+290	68	0
+291	68	0
+292	68	0
+293	68	0
+294	68	0
+295	68	0
+296	68	0
+297	68	0
+298	68	0
+299	68	0
+300	68	0
+301	68	0
+302	68	0
+303	68	0
+304	68	0
+305	68	0
+306	68	0
+307	68	0
+308	68	0
+309	68	0
+310	68	0
+311	68	0
+312	68	0
+313	68	0
+314	68	0
+315	68	0
+316	68	0
+317	68	0
+318	68	0
+319	68	0
+320	68	0
+321	68	0
+322	68	0
+323	68	0
+324	68	0
+325	68	0
+326	68	0
+327	68	0
+328	68	0
+329	68	0
+330	68	0
+331	68	0
+332	68	0
+333	68	0
+334	68	0
+335	68	0
+336	68	0
+337	68	0
+338	68	0
+339	68	0
+340	68	0
+341	68	0
+342	68	0
+343	68	0
+344	68	0
+345	68	0
+346	68	0
+347	68	0
+348	68	0
+349	68	0
+350	68	0
+351	68	0
+352	68	0
+353	68	0
+354	68	0
+355	68	0
+356	68	0
+357	68	0
+358	68	0
+359	68	0
+360	68	0
+0	68.5	0
+1	68.5	0
+2	68.5	0
+3	68.5	0
+4	68.5	0
+5	68.5	0
+6	68.5	0
+7	68.5	0
+8	68.5	0
+9	68.5	0
+10	68.5	0
+11	68.5	0
+12	68.5	0
+13	68.5	0
+14	68.5	0
+15	68.5	0
+16	68.5	0
+17	68.5	0
+18	68.5	0
+19	68.5	0
+20	68.5	0
+21	68.5	0
+22	68.5	0
+23	68.5	0
+24	68.5	0
+25	68.5	0
+26	68.5	0
+27	68.5	0
+28	68.5	0
+29	68.5	0
+30	68.5	0
+31	68.5	0
+32	68.5	0
+33	68.5	0
+34	68.5	0
+35	68.5	0
+36	68.5	0
+37	68.5	0
+38	68.5	0
+39	68.5	0
+40	68.5	0
+41	68.5	0
+42	68.5	0
+43	68.5	0
+44	68.5	0
+45	68.5	0
+46	68.5	0
+47	68.5	0
+48	68.5	0
+49	68.5	0
+50	68.5	0
+51	68.5	0
+52	68.5	0
+53	68.5	0
+54	68.5	0
+55	68.5	0
+56	68.5	0
+57	68.5	0
+58	68.5	0
+59	68.5	0
+60	68.5	0
+61	68.5	0
+62	68.5	0
+63	68.5	0
+64	68.5	0
+65	68.5	0
+66	68.5	0
+67	68.5	0
+68	68.5	0
+69	68.5	0
+70	68.5	0
+71	68.5	0
+72	68.5	0
+73	68.5	0
+74	68.5	0
+75	68.5	0
+76	68.5	0
+77	68.5	0
+78	68.5	0
+79	68.5	0
+80	68.5	0
+81	68.5	0
+82	68.5	0
+83	68.5	0
+84	68.5	0
+85	68.5	0
+86	68.5	0
+87	68.5	0
+88	68.5	0
+89	68.5	0
+90	68.5	0
+91	68.5	0
+92	68.5	0
+93	68.5	0
+94	68.5	0
+95	68.5	0
+96	68.5	0
+97	68.5	0
+98	68.5	0
+99	68.5	0
+100	68.5	0
+101	68.5	0
+102	68.5	0
+103	68.5	0
+104	68.5	0
+105	68.5	0
+106	68.5	0
+107	68.5	0
+108	68.5	0
+109	68.5	0
+110	68.5	0
+111	68.5	0
+112	68.5	0
+113	68.5	0
+114	68.5	0
+115	68.5	0
+116	68.5	0
+117	68.5	0
+118	68.5	0
+119	68.5	0
+120	68.5	0
+121	68.5	0
+122	68.5	0
+123	68.5	0
+124	68.5	0
+125	68.5	0
+126	68.5	0
+127	68.5	0
+128	68.5	0
+129	68.5	0
+130	68.5	0
+131	68.5	0
+132	68.5	0
+133	68.5	0
+134	68.5	0
+135	68.5	0
+136	68.5	0
+137	68.5	0
+138	68.5	0
+139	68.5	0
+140	68.5	0
+141	68.5	0
+142	68.5	0
+143	68.5	0
+144	68.5	0
+145	68.5	0
+146	68.5	0
+147	68.5	0
+148	68.5	0
+149	68.5	0
+150	68.5	0
+151	68.5	0
+152	68.5	0
+153	68.5	0
+154	68.5	0
+155	68.5	0
+156	68.5	0
+157	68.5	0
+158	68.5	0
+159	68.5	0
+160	68.5	0
+161	68.5	0
+162	68.5	0
+163	68.5	0
+164	68.5	0
+165	68.5	0
+166	68.5	0
+167	68.5	0
+168	68.5	0
+169	68.5	0
+170	68.5	0
+171	68.5	0
+172	68.5	0
+173	68.5	0
+174	68.5	0
+175	68.5	0
+176	68.5	0
+177	68.5	0
+178	68.5	0
+179	68.5	0
+180	68.5	0
+181	68.5	0
+182	68.5	0
+183	68.5	0
+184	68.5	0
+185	68.5	0
+186	68.5	0
+187	68.5	0
+188	68.5	0
+189	68.5	0
+190	68.5	0
+191	68.5	0
+192	68.5	0
+193	68.5	0
+194	68.5	0
+195	68.5	0
+196	68.5	0
+197	68.5	0
+198	68.5	0
+199	68.5	0
+200	68.5	0
+201	68.5	0
+202	68.5	0
+203	68.5	0
+204	68.5	0
+205	68.5	0
+206	68.5	0
+207	68.5	0
+208	68.5	0
+209	68.5	0
+210	68.5	0
+211	68.5	0
+212	68.5	0
+213	68.5	0
+214	68.5	0
+215	68.5	0
+216	68.5	0
+217	68.5	0
+218	68.5	0
+219	68.5	0
+220	68.5	0
+221	68.5	0
+222	68.5	0
+223	68.5	0
+224	68.5	0
+225	68.5	0
+226	68.5	0
+227	68.5	0
+228	68.5	0
+229	68.5	0
+230	68.5	0
+231	68.5	0
+232	68.5	0
+233	68.5	0
+234	68.5	0
+235	68.5	0
+236	68.5	0
+237	68.5	0
+238	68.5	0
+239	68.5	0
+240	68.5	0
+241	68.5	0
+242	68.5	0
+243	68.5	0
+244	68.5	0
+245	68.5	0
+246	68.5	0
+247	68.5	0
+248	68.5	0
+249	68.5	0
+250	68.5	0
+251	68.5	0
+252	68.5	0
+253	68.5	0
+254	68.5	0
+255	68.5	0
+256	68.5	0
+257	68.5	0
+258	68.5	0
+259	68.5	0
+260	68.5	0
+261	68.5	0
+262	68.5	0
+263	68.5	0
+264	68.5	0
+265	68.5	0
+266	68.5	0
+267	68.5	0
+268	68.5	0
+269	68.5	0
+270	68.5	0
+271	68.5	0
+272	68.5	0
+273	68.5	0
+274	68.5	0
+275	68.5	0
+276	68.5	0
+277	68.5	0
+278	68.5	0
+279	68.5	0
+280	68.5	0
+281	68.5	0
+282	68.5	0
+283	68.5	0
+284	68.5	0
+285	68.5	0
+286	68.5	0
+287	68.5	0
+288	68.5	0
+289	68.5	0
+290	68.5	0
+291	68.5	0
+292	68.5	0
+293	68.5	0
+294	68.5	0
+295	68.5	0
+296	68.5	0
+297	68.5	0
+298	68.5	0
+299	68.5	0
+300	68.5	0
+301	68.5	0
+302	68.5	0
+303	68.5	0
+304	68.5	0
+305	68.5	0
+306	68.5	0
+307	68.5	0
+308	68.5	0
+309	68.5	0
+310	68.5	0
+311	68.5	0
+312	68.5	0
+313	68.5	0
+314	68.5	0
+315	68.5	0
+316	68.5	0
+317	68.5	0
+318	68.5	0
+319	68.5	0
+320	68.5	0
+321	68.5	0
+322	68.5	0
+323	68.5	0
+324	68.5	0
+325	68.5	0
+326	68.5	0
+327	68.5	0
+328	68.5	0
+329	68.5	0
+330	68.5	0
+331	68.5	0
+332	68.5	0
+333	68.5	0
+334	68.5	0
+335	68.5	0
+336	68.5	0
+337	68.5	0
+338	68.5	0
+339	68.5	0
+340	68.5	0
+341	68.5	0
+342	68.5	0
+343	68.5	0
+344	68.5	0
+345	68.5	0
+346	68.5	0
+347	68.5	0
+348	68.5	0
+349	68.5	0
+350	68.5	0
+351	68.5	0
+352	68.5	0
+353	68.5	0
+354	68.5	0
+355	68.5	0
+356	68.5	0
+357	68.5	0
+358	68.5	0
+359	68.5	0
+360	68.5	0
+0	69	0
+1	69	0
+2	69	0
+3	69	0
+4	69	0
+5	69	0
+6	69	0
+7	69	0
+8	69	0
+9	69	0
+10	69	0
+11	69	0
+12	69	0
+13	69	0
+14	69	0
+15	69	0
+16	69	0
+17	69	0
+18	69	0
+19	69	0
+20	69	0
+21	69	0
+22	69	0
+23	69	0
+24	69	0
+25	69	0
+26	69	0
+27	69	0
+28	69	0
+29	69	0
+30	69	0
+31	69	0
+32	69	0
+33	69	0
+34	69	0
+35	69	0
+36	69	0
+37	69	0
+38	69	0
+39	69	0
+40	69	0
+41	69	0
+42	69	0
+43	69	0
+44	69	0
+45	69	0
+46	69	0
+47	69	0
+48	69	0
+49	69	0
+50	69	0
+51	69	0
+52	69	0
+53	69	0
+54	69	0
+55	69	0
+56	69	0
+57	69	0
+58	69	0
+59	69	0
+60	69	0
+61	69	0
+62	69	0
+63	69	0
+64	69	0
+65	69	0
+66	69	0
+67	69	0
+68	69	0
+69	69	0
+70	69	0
+71	69	0
+72	69	0
+73	69	0
+74	69	0
+75	69	0
+76	69	0
+77	69	0
+78	69	0
+79	69	0
+80	69	0
+81	69	0
+82	69	0
+83	69	0
+84	69	0
+85	69	0
+86	69	0
+87	69	0
+88	69	0
+89	69	0
+90	69	0
+91	69	0
+92	69	0
+93	69	0
+94	69	0
+95	69	0
+96	69	0
+97	69	0
+98	69	0
+99	69	0
+100	69	0
+101	69	0
+102	69	0
+103	69	0
+104	69	0
+105	69	0
+106	69	0
+107	69	0
+108	69	0
+109	69	0
+110	69	0
+111	69	0
+112	69	0
+113	69	0
+114	69	0
+115	69	0
+116	69	0
+117	69	0
+118	69	0
+119	69	0
+120	69	0
+121	69	0
+122	69	0
+123	69	0
+124	69	0
+125	69	0
+126	69	0
+127	69	0
+128	69	0
+129	69	0
+130	69	0
+131	69	0
+132	69	0
+133	69	0
+134	69	0
+135	69	0
+136	69	0
+137	69	0
+138	69	0
+139	69	0
+140	69	0
+141	69	0
+142	69	0
+143	69	0
+144	69	0
+145	69	0
+146	69	0
+147	69	0
+148	69	0
+149	69	0
+150	69	0
+151	69	0
+152	69	0
+153	69	0
+154	69	0
+155	69	0
+156	69	0
+157	69	0
+158	69	0
+159	69	0
+160	69	0
+161	69	0
+162	69	0
+163	69	0
+164	69	0
+165	69	0
+166	69	0
+167	69	0
+168	69	0
+169	69	0
+170	69	0
+171	69	0
+172	69	0
+173	69	0
+174	69	0
+175	69	0
+176	69	0
+177	69	0
+178	69	0
+179	69	0
+180	69	0
+181	69	0
+182	69	0
+183	69	0
+184	69	0
+185	69	0
+186	69	0
+187	69	0
+188	69	0
+189	69	0
+190	69	0
+191	69	0
+192	69	0
+193	69	0
+194	69	0
+195	69	0
+196	69	0
+197	69	0
+198	69	0
+199	69	0
+200	69	0
+201	69	0
+202	69	0
+203	69	0
+204	69	0
+205	69	0
+206	69	0
+207	69	0
+208	69	0
+209	69	0
+210	69	0
+211	69	0
+212	69	0
+213	69	0
+214	69	0
+215	69	0
+216	69	0
+217	69	0
+218	69	0
+219	69	0
+220	69	0
+221	69	0
+222	69	0
+223	69	0
+224	69	0
+225	69	0
+226	69	0
+227	69	0
+228	69	0
+229	69	0
+230	69	0
+231	69	0
+232	69	0
+233	69	0
+234	69	0
+235	69	0
+236	69	0
+237	69	0
+238	69	0
+239	69	0
+240	69	0
+241	69	0
+242	69	0
+243	69	0
+244	69	0
+245	69	0
+246	69	0
+247	69	0
+248	69	0
+249	69	0
+250	69	0
+251	69	0
+252	69	0
+253	69	0
+254	69	0
+255	69	0
+256	69	0
+257	69	0
+258	69	0
+259	69	0
+260	69	0
+261	69	0
+262	69	0
+263	69	0
+264	69	0
+265	69	0
+266	69	0
+267	69	0
+268	69	0
+269	69	0
+270	69	0
+271	69	0
+272	69	0
+273	69	0
+274	69	0
+275	69	0
+276	69	0
+277	69	0
+278	69	0
+279	69	0
+280	69	0
+281	69	0
+282	69	0
+283	69	0
+284	69	0
+285	69	0
+286	69	0
+287	69	0
+288	69	0
+289	69	0
+290	69	0
+291	69	0
+292	69	0
+293	69	0
+294	69	0
+295	69	0
+296	69	0
+297	69	0
+298	69	0
+299	69	0
+300	69	0
+301	69	0
+302	69	0
+303	69	0
+304	69	0
+305	69	0
+306	69	0
+307	69	0
+308	69	0
+309	69	0
+310	69	0
+311	69	0
+312	69	0
+313	69	0
+314	69	0
+315	69	0
+316	69	0
+317	69	0
+318	69	0
+319	69	0
+320	69	0
+321	69	0
+322	69	0
+323	69	0
+324	69	0
+325	69	0
+326	69	0
+327	69	0
+328	69	0
+329	69	0
+330	69	0
+331	69	0
+332	69	0
+333	69	0
+334	69	0
+335	69	0
+336	69	0
+337	69	0
+338	69	0
+339	69	0
+340	69	0
+341	69	0
+342	69	0
+343	69	0
+344	69	0
+345	69	0
+346	69	0
+347	69	0
+348	69	0
+349	69	0
+350	69	0
+351	69	0
+352	69	0
+353	69	0
+354	69	0
+355	69	0
+356	69	0
+357	69	0
+358	69	0
+359	69	0
+360	69	0
+0	69.5	0
+1	69.5	0
+2	69.5	0
+3	69.5	0
+4	69.5	0
+5	69.5	0
+6	69.5	0
+7	69.5	0
+8	69.5	0
+9	69.5	0
+10	69.5	0
+11	69.5	0
+12	69.5	0
+13	69.5	0
+14	69.5	0
+15	69.5	0
+16	69.5	0
+17	69.5	0
+18	69.5	0
+19	69.5	0
+20	69.5	0
+21	69.5	0
+22	69.5	0
+23	69.5	0
+24	69.5	0
+25	69.5	0
+26	69.5	0
+27	69.5	0
+28	69.5	0
+29	69.5	0
+30	69.5	0
+31	69.5	0
+32	69.5	0
+33	69.5	0
+34	69.5	0
+35	69.5	0
+36	69.5	0
+37	69.5	0
+38	69.5	0
+39	69.5	0
+40	69.5	0
+41	69.5	0
+42	69.5	0
+43	69.5	0
+44	69.5	0
+45	69.5	0
+46	69.5	0
+47	69.5	0
+48	69.5	0
+49	69.5	0
+50	69.5	0
+51	69.5	0
+52	69.5	0
+53	69.5	0
+54	69.5	0
+55	69.5	0
+56	69.5	0
+57	69.5	0
+58	69.5	0
+59	69.5	0
+60	69.5	0
+61	69.5	0
+62	69.5	0
+63	69.5	0
+64	69.5	0
+65	69.5	0
+66	69.5	0
+67	69.5	0
+68	69.5	0
+69	69.5	0
+70	69.5	0
+71	69.5	0
+72	69.5	0
+73	69.5	0
+74	69.5	0
+75	69.5	0
+76	69.5	0
+77	69.5	0
+78	69.5	0
+79	69.5	0
+80	69.5	0
+81	69.5	0
+82	69.5	0
+83	69.5	0
+84	69.5	0
+85	69.5	0
+86	69.5	0
+87	69.5	0
+88	69.5	0
+89	69.5	0
+90	69.5	0
+91	69.5	0
+92	69.5	0
+93	69.5	0
+94	69.5	0
+95	69.5	0
+96	69.5	0
+97	69.5	0
+98	69.5	0
+99	69.5	0
+100	69.5	0
+101	69.5	0
+102	69.5	0
+103	69.5	0
+104	69.5	0
+105	69.5	0
+106	69.5	0
+107	69.5	0
+108	69.5	0
+109	69.5	0
+110	69.5	0
+111	69.5	0
+112	69.5	0
+113	69.5	0
+114	69.5	0
+115	69.5	0
+116	69.5	0
+117	69.5	0
+118	69.5	0
+119	69.5	0
+120	69.5	0
+121	69.5	0
+122	69.5	0
+123	69.5	0
+124	69.5	0
+125	69.5	0
+126	69.5	0
+127	69.5	0
+128	69.5	0
+129	69.5	0
+130	69.5	0
+131	69.5	0
+132	69.5	0
+133	69.5	0
+134	69.5	0
+135	69.5	0
+136	69.5	0
+137	69.5	0
+138	69.5	0
+139	69.5	0
+140	69.5	0
+141	69.5	0
+142	69.5	0
+143	69.5	0
+144	69.5	0
+145	69.5	0
+146	69.5	0
+147	69.5	0
+148	69.5	0
+149	69.5	0
+150	69.5	0
+151	69.5	0
+152	69.5	0
+153	69.5	0
+154	69.5	0
+155	69.5	0
+156	69.5	0
+157	69.5	0
+158	69.5	0
+159	69.5	0
+160	69.5	0
+161	69.5	0
+162	69.5	0
+163	69.5	0
+164	69.5	0
+165	69.5	0
+166	69.5	0
+167	69.5	0
+168	69.5	0
+169	69.5	0
+170	69.5	0
+171	69.5	0
+172	69.5	0
+173	69.5	0
+174	69.5	0
+175	69.5	0
+176	69.5	0
+177	69.5	0
+178	69.5	0
+179	69.5	0
+180	69.5	0
+181	69.5	0
+182	69.5	0
+183	69.5	0
+184	69.5	0
+185	69.5	0
+186	69.5	0
+187	69.5	0
+188	69.5	0
+189	69.5	0
+190	69.5	0
+191	69.5	0
+192	69.5	0
+193	69.5	0
+194	69.5	0
+195	69.5	0
+196	69.5	0
+197	69.5	0
+198	69.5	0
+199	69.5	0
+200	69.5	0
+201	69.5	0
+202	69.5	0
+203	69.5	0
+204	69.5	0
+205	69.5	0
+206	69.5	0
+207	69.5	0
+208	69.5	0
+209	69.5	0
+210	69.5	0
+211	69.5	0
+212	69.5	0
+213	69.5	0
+214	69.5	0
+215	69.5	0
+216	69.5	0
+217	69.5	0
+218	69.5	0
+219	69.5	0
+220	69.5	0
+221	69.5	0
+222	69.5	0
+223	69.5	0
+224	69.5	0
+225	69.5	0
+226	69.5	0
+227	69.5	0
+228	69.5	0
+229	69.5	0
+230	69.5	0
+231	69.5	0
+232	69.5	0
+233	69.5	0
+234	69.5	0
+235	69.5	0
+236	69.5	0
+237	69.5	0
+238	69.5	0
+239	69.5	0
+240	69.5	0
+241	69.5	0
+242	69.5	0
+243	69.5	0
+244	69.5	0
+245	69.5	0
+246	69.5	0
+247	69.5	0
+248	69.5	0
+249	69.5	0
+250	69.5	0
+251	69.5	0
+252	69.5	0
+253	69.5	0
+254	69.5	0
+255	69.5	0
+256	69.5	0
+257	69.5	0
+258	69.5	0
+259	69.5	0
+260	69.5	0
+261	69.5	0
+262	69.5	0
+263	69.5	0
+264	69.5	0
+265	69.5	0
+266	69.5	0
+267	69.5	0
+268	69.5	0
+269	69.5	0
+270	69.5	0
+271	69.5	0
+272	69.5	0
+273	69.5	0
+274	69.5	0
+275	69.5	0
+276	69.5	0
+277	69.5	0
+278	69.5	0
+279	69.5	0
+280	69.5	0
+281	69.5	0
+282	69.5	0
+283	69.5	0
+284	69.5	0
+285	69.5	0
+286	69.5	0
+287	69.5	0
+288	69.5	0
+289	69.5	0
+290	69.5	0
+291	69.5	0
+292	69.5	0
+293	69.5	0
+294	69.5	0
+295	69.5	0
+296	69.5	0
+297	69.5	0
+298	69.5	0
+299	69.5	0
+300	69.5	0
+301	69.5	0
+302	69.5	0
+303	69.5	0
+304	69.5	0
+305	69.5	0
+306	69.5	0
+307	69.5	0
+308	69.5	0
+309	69.5	0
+310	69.5	0
+311	69.5	0
+312	69.5	0
+313	69.5	0
+314	69.5	0
+315	69.5	0
+316	69.5	0
+317	69.5	0
+318	69.5	0
+319	69.5	0
+320	69.5	0
+321	69.5	0
+322	69.5	0
+323	69.5	0
+324	69.5	0
+325	69.5	0
+326	69.5	0
+327	69.5	0
+328	69.5	0
+329	69.5	0
+330	69.5	0
+331	69.5	0
+332	69.5	0
+333	69.5	0
+334	69.5	0
+335	69.5	0
+336	69.5	0
+337	69.5	0
+338	69.5	0
+339	69.5	0
+340	69.5	0
+341	69.5	0
+342	69.5	0
+343	69.5	0
+344	69.5	0
+345	69.5	0
+346	69.5	0
+347	69.5	0
+348	69.5	0
+349	69.5	0
+350	69.5	0
+351	69.5	0
+352	69.5	0
+353	69.5	0
+354	69.5	0
+355	69.5	0
+356	69.5	0
+357	69.5	0
+358	69.5	0
+359	69.5	0
+360	69.5	0
+0	70	0
+1	70	0
+2	70	0
+3	70	0
+4	70	0
+5	70	0
+6	70	0
+7	70	0
+8	70	0
+9	70	0
+10	70	0
+11	70	0
+12	70	0
+13	70	0
+14	70	0
+15	70	0
+16	70	0
+17	70	0
+18	70	0
+19	70	0
+20	70	0
+21	70	0
+22	70	0
+23	70	0
+24	70	0
+25	70	0
+26	70	0
+27	70	0
+28	70	0
+29	70	0
+30	70	0
+31	70	0
+32	70	0
+33	70	0
+34	70	0
+35	70	0
+36	70	0
+37	70	0
+38	70	0
+39	70	0
+40	70	0
+41	70	0
+42	70	0
+43	70	0
+44	70	0
+45	70	0
+46	70	0
+47	70	0
+48	70	0
+49	70	0
+50	70	0
+51	70	0
+52	70	0
+53	70	0
+54	70	0
+55	70	0
+56	70	0
+57	70	0
+58	70	0
+59	70	0
+60	70	0
+61	70	0
+62	70	0
+63	70	0
+64	70	0
+65	70	0
+66	70	0
+67	70	0
+68	70	0
+69	70	0
+70	70	0
+71	70	0
+72	70	0
+73	70	0
+74	70	0
+75	70	0
+76	70	0
+77	70	0
+78	70	0
+79	70	0
+80	70	0
+81	70	0
+82	70	0
+83	70	0
+84	70	0
+85	70	0
+86	70	0
+87	70	0
+88	70	0
+89	70	0
+90	70	0
+91	70	0
+92	70	0
+93	70	0
+94	70	0
+95	70	0
+96	70	0
+97	70	0
+98	70	0
+99	70	0
+100	70	0
+101	70	0
+102	70	0
+103	70	0
+104	70	0
+105	70	0
+106	70	0
+107	70	0
+108	70	0
+109	70	0
+110	70	0
+111	70	0
+112	70	0
+113	70	0
+114	70	0
+115	70	0
+116	70	0
+117	70	0
+118	70	0
+119	70	0
+120	70	0
+121	70	0
+122	70	0
+123	70	0
+124	70	0
+125	70	0
+126	70	0
+127	70	0
+128	70	0
+129	70	0
+130	70	0
+131	70	0
+132	70	0
+133	70	0
+134	70	0
+135	70	0
+136	70	0
+137	70	0
+138	70	0
+139	70	0
+140	70	0
+141	70	0
+142	70	0
+143	70	0
+144	70	0
+145	70	0
+146	70	0
+147	70	0
+148	70	0
+149	70	0
+150	70	0
+151	70	0
+152	70	0
+153	70	0
+154	70	0
+155	70	0
+156	70	0
+157	70	0
+158	70	0
+159	70	0
+160	70	0
+161	70	0
+162	70	0
+163	70	0
+164	70	0
+165	70	0
+166	70	0
+167	70	0
+168	70	0
+169	70	0
+170	70	0
+171	70	0
+172	70	0
+173	70	0
+174	70	0
+175	70	0
+176	70	0
+177	70	0
+178	70	0
+179	70	0
+180	70	0
+181	70	0
+182	70	0
+183	70	0
+184	70	0
+185	70	0
+186	70	0
+187	70	0
+188	70	0
+189	70	0
+190	70	0
+191	70	0
+192	70	0
+193	70	0
+194	70	0
+195	70	0
+196	70	0
+197	70	0
+198	70	0
+199	70	0
+200	70	0
+201	70	0
+202	70	0
+203	70	0
+204	70	0
+205	70	0
+206	70	0
+207	70	0
+208	70	0
+209	70	0
+210	70	0
+211	70	0
+212	70	0
+213	70	0
+214	70	0
+215	70	0
+216	70	0
+217	70	0
+218	70	0
+219	70	0
+220	70	0
+221	70	0
+222	70	0
+223	70	0
+224	70	0
+225	70	0
+226	70	0
+227	70	0
+228	70	0
+229	70	0
+230	70	0
+231	70	0
+232	70	0
+233	70	0
+234	70	0
+235	70	0
+236	70	0
+237	70	0
+238	70	0
+239	70	0
+240	70	0
+241	70	0
+242	70	0
+243	70	0
+244	70	0
+245	70	0
+246	70	0
+247	70	0
+248	70	0
+249	70	0
+250	70	0
+251	70	0
+252	70	0
+253	70	0
+254	70	0
+255	70	0
+256	70	0
+257	70	0
+258	70	0
+259	70	0
+260	70	0
+261	70	0
+262	70	0
+263	70	0
+264	70	0
+265	70	0
+266	70	0
+267	70	0
+268	70	0
+269	70	0
+270	70	0
+271	70	0
+272	70	0
+273	70	0
+274	70	0
+275	70	0
+276	70	0
+277	70	0
+278	70	0
+279	70	0
+280	70	0
+281	70	0
+282	70	0
+283	70	0
+284	70	0
+285	70	0
+286	70	0
+287	70	0
+288	70	0
+289	70	0
+290	70	0
+291	70	0
+292	70	0
+293	70	0
+294	70	0
+295	70	0
+296	70	0
+297	70	0
+298	70	0
+299	70	0
+300	70	0
+301	70	0
+302	70	0
+303	70	0
+304	70	0
+305	70	0
+306	70	0
+307	70	0
+308	70	0
+309	70	0
+310	70	0
+311	70	0
+312	70	0
+313	70	0
+314	70	0
+315	70	0
+316	70	0
+317	70	0
+318	70	0
+319	70	0
+320	70	0
+321	70	0
+322	70	0
+323	70	0
+324	70	0
+325	70	0
+326	70	0
+327	70	0
+328	70	0
+329	70	0
+330	70	0
+331	70	0
+332	70	0
+333	70	0
+334	70	0
+335	70	0
+336	70	0
+337	70	0
+338	70	0
+339	70	0
+340	70	0
+341	70	0
+342	70	0
+343	70	0
+344	70	0
+345	70	0
+346	70	0
+347	70	0
+348	70	0
+349	70	0
+350	70	0
+351	70	0
+352	70	0
+353	70	0
+354	70	0
+355	70	0
+356	70	0
+357	70	0
+358	70	0
+359	70	0
+360	70	0
+0	70.5	0
+1	70.5	0
+2	70.5	0
+3	70.5	0
+4	70.5	0
+5	70.5	0
+6	70.5	0
+7	70.5	0
+8	70.5	0
+9	70.5	0
+10	70.5	0
+11	70.5	0
+12	70.5	0
+13	70.5	0
+14	70.5	0
+15	70.5	0
+16	70.5	0
+17	70.5	0
+18	70.5	0
+19	70.5	0
+20	70.5	0
+21	70.5	0
+22	70.5	0
+23	70.5	0
+24	70.5	0
+25	70.5	0
+26	70.5	0
+27	70.5	0
+28	70.5	0
+29	70.5	0
+30	70.5	0
+31	70.5	0
+32	70.5	0
+33	70.5	0
+34	70.5	0
+35	70.5	0
+36	70.5	0
+37	70.5	0
+38	70.5	0
+39	70.5	0
+40	70.5	0
+41	70.5	0
+42	70.5	0
+43	70.5	0
+44	70.5	0
+45	70.5	0
+46	70.5	0
+47	70.5	0
+48	70.5	0
+49	70.5	0
+50	70.5	0
+51	70.5	0
+52	70.5	0
+53	70.5	0
+54	70.5	0
+55	70.5	0
+56	70.5	0
+57	70.5	0
+58	70.5	0
+59	70.5	0
+60	70.5	0
+61	70.5	0
+62	70.5	0
+63	70.5	0
+64	70.5	0
+65	70.5	0
+66	70.5	0
+67	70.5	0
+68	70.5	0
+69	70.5	0
+70	70.5	0
+71	70.5	0
+72	70.5	0
+73	70.5	0
+74	70.5	0
+75	70.5	0
+76	70.5	0
+77	70.5	0
+78	70.5	0
+79	70.5	0
+80	70.5	0
+81	70.5	0
+82	70.5	0
+83	70.5	0
+84	70.5	0
+85	70.5	0
+86	70.5	0
+87	70.5	0
+88	70.5	0
+89	70.5	0
+90	70.5	0
+91	70.5	0
+92	70.5	0
+93	70.5	0
+94	70.5	0
+95	70.5	0
+96	70.5	0
+97	70.5	0
+98	70.5	0
+99	70.5	0
+100	70.5	0
+101	70.5	0
+102	70.5	0
+103	70.5	0
+104	70.5	0
+105	70.5	0
+106	70.5	0
+107	70.5	0
+108	70.5	0
+109	70.5	0
+110	70.5	0
+111	70.5	0
+112	70.5	0
+113	70.5	0
+114	70.5	0
+115	70.5	0
+116	70.5	0
+117	70.5	0
+118	70.5	0
+119	70.5	0
+120	70.5	0
+121	70.5	0
+122	70.5	0
+123	70.5	0
+124	70.5	0
+125	70.5	0
+126	70.5	0
+127	70.5	0
+128	70.5	0
+129	70.5	0
+130	70.5	0
+131	70.5	0
+132	70.5	0
+133	70.5	0
+134	70.5	0
+135	70.5	0
+136	70.5	0
+137	70.5	0
+138	70.5	0
+139	70.5	0
+140	70.5	0
+141	70.5	0
+142	70.5	0
+143	70.5	0
+144	70.5	0
+145	70.5	0
+146	70.5	0
+147	70.5	0
+148	70.5	0
+149	70.5	0
+150	70.5	0
+151	70.5	0
+152	70.5	0
+153	70.5	0
+154	70.5	0
+155	70.5	0
+156	70.5	0
+157	70.5	0
+158	70.5	0
+159	70.5	0
+160	70.5	0
+161	70.5	0
+162	70.5	0
+163	70.5	0
+164	70.5	0
+165	70.5	0
+166	70.5	0
+167	70.5	0
+168	70.5	0
+169	70.5	0
+170	70.5	0
+171	70.5	0
+172	70.5	0
+173	70.5	0
+174	70.5	0
+175	70.5	0
+176	70.5	0
+177	70.5	0
+178	70.5	0
+179	70.5	0
+180	70.5	0
+181	70.5	0
+182	70.5	0
+183	70.5	0
+184	70.5	0
+185	70.5	0
+186	70.5	0
+187	70.5	0
+188	70.5	0
+189	70.5	0
+190	70.5	0
+191	70.5	0
+192	70.5	0
+193	70.5	0
+194	70.5	0
+195	70.5	0
+196	70.5	0
+197	70.5	0
+198	70.5	0
+199	70.5	0
+200	70.5	0
+201	70.5	0
+202	70.5	0
+203	70.5	0
+204	70.5	0
+205	70.5	0
+206	70.5	0
+207	70.5	0
+208	70.5	0
+209	70.5	0
+210	70.5	0
+211	70.5	0
+212	70.5	0
+213	70.5	0
+214	70.5	0
+215	70.5	0
+216	70.5	0
+217	70.5	0
+218	70.5	0
+219	70.5	0
+220	70.5	0
+221	70.5	0
+222	70.5	0
+223	70.5	0
+224	70.5	0
+225	70.5	0
+226	70.5	0
+227	70.5	0
+228	70.5	0
+229	70.5	0
+230	70.5	0
+231	70.5	0
+232	70.5	0
+233	70.5	0
+234	70.5	0
+235	70.5	0
+236	70.5	0
+237	70.5	0
+238	70.5	0
+239	70.5	0
+240	70.5	0
+241	70.5	0
+242	70.5	0
+243	70.5	0
+244	70.5	0
+245	70.5	0
+246	70.5	0
+247	70.5	0
+248	70.5	0
+249	70.5	0
+250	70.5	0
+251	70.5	0
+252	70.5	0
+253	70.5	0
+254	70.5	0
+255	70.5	0
+256	70.5	0
+257	70.5	0
+258	70.5	0
+259	70.5	0
+260	70.5	0
+261	70.5	0
+262	70.5	0
+263	70.5	0
+264	70.5	0
+265	70.5	0
+266	70.5	0
+267	70.5	0
+268	70.5	0
+269	70.5	0
+270	70.5	0
+271	70.5	0
+272	70.5	0
+273	70.5	0
+274	70.5	0
+275	70.5	0
+276	70.5	0
+277	70.5	0
+278	70.5	0
+279	70.5	0
+280	70.5	0
+281	70.5	0
+282	70.5	0
+283	70.5	0
+284	70.5	0
+285	70.5	0
+286	70.5	0
+287	70.5	0
+288	70.5	0
+289	70.5	0
+290	70.5	0
+291	70.5	0
+292	70.5	0
+293	70.5	0
+294	70.5	0
+295	70.5	0
+296	70.5	0
+297	70.5	0
+298	70.5	0
+299	70.5	0
+300	70.5	0
+301	70.5	0
+302	70.5	0
+303	70.5	0
+304	70.5	0
+305	70.5	0
+306	70.5	0
+307	70.5	0
+308	70.5	0
+309	70.5	0
+310	70.5	0
+311	70.5	0
+312	70.5	0
+313	70.5	0
+314	70.5	0
+315	70.5	0
+316	70.5	0
+317	70.5	0
+318	70.5	0
+319	70.5	0
+320	70.5	0
+321	70.5	0
+322	70.5	0
+323	70.5	0
+324	70.5	0
+325	70.5	0
+326	70.5	0
+327	70.5	0
+328	70.5	0
+329	70.5	0
+330	70.5	0
+331	70.5	0
+332	70.5	0
+333	70.5	0
+334	70.5	0
+335	70.5	0
+336	70.5	0
+337	70.5	0
+338	70.5	0
+339	70.5	0
+340	70.5	0
+341	70.5	0
+342	70.5	0
+343	70.5	0
+344	70.5	0
+345	70.5	0
+346	70.5	0
+347	70.5	0
+348	70.5	0
+349	70.5	0
+350	70.5	0
+351	70.5	0
+352	70.5	0
+353	70.5	0
+354	70.5	0
+355	70.5	0
+356	70.5	0
+357	70.5	0
+358	70.5	0
+359	70.5	0
+360	70.5	0
+0	71	0
+1	71	0
+2	71	0
+3	71	0
+4	71	0
+5	71	0
+6	71	0
+7	71	0
+8	71	0
+9	71	0
+10	71	0
+11	71	0
+12	71	0
+13	71	0
+14	71	0
+15	71	0
+16	71	0
+17	71	0
+18	71	0
+19	71	0
+20	71	0
+21	71	0
+22	71	0
+23	71	0
+24	71	0
+25	71	0
+26	71	0
+27	71	0
+28	71	0
+29	71	0
+30	71	0
+31	71	0
+32	71	0
+33	71	0
+34	71	0
+35	71	0
+36	71	0
+37	71	0
+38	71	0
+39	71	0
+40	71	0
+41	71	0
+42	71	0
+43	71	0
+44	71	0
+45	71	0
+46	71	0
+47	71	0
+48	71	0
+49	71	0
+50	71	0
+51	71	0
+52	71	0
+53	71	0
+54	71	0
+55	71	0
+56	71	0
+57	71	0
+58	71	0
+59	71	0
+60	71	0
+61	71	0
+62	71	0
+63	71	0
+64	71	0
+65	71	0
+66	71	0
+67	71	0
+68	71	0
+69	71	0
+70	71	0
+71	71	0
+72	71	0
+73	71	0
+74	71	0
+75	71	0
+76	71	0
+77	71	0
+78	71	0
+79	71	0
+80	71	0
+81	71	0
+82	71	0
+83	71	0
+84	71	0
+85	71	0
+86	71	0
+87	71	0
+88	71	0
+89	71	0
+90	71	0
+91	71	0
+92	71	0
+93	71	0
+94	71	0
+95	71	0
+96	71	0
+97	71	0
+98	71	0
+99	71	0
+100	71	0
+101	71	0
+102	71	0
+103	71	0
+104	71	0
+105	71	0
+106	71	0
+107	71	0
+108	71	0
+109	71	0
+110	71	0
+111	71	0
+112	71	0
+113	71	0
+114	71	0
+115	71	0
+116	71	0
+117	71	0
+118	71	0
+119	71	0
+120	71	0
+121	71	0
+122	71	0
+123	71	0
+124	71	0
+125	71	0
+126	71	0
+127	71	0
+128	71	0
+129	71	0
+130	71	0
+131	71	0
+132	71	0
+133	71	0
+134	71	0
+135	71	0
+136	71	0
+137	71	0
+138	71	0
+139	71	0
+140	71	0
+141	71	0
+142	71	0
+143	71	0
+144	71	0
+145	71	0
+146	71	0
+147	71	0
+148	71	0
+149	71	0
+150	71	0
+151	71	0
+152	71	0
+153	71	0
+154	71	0
+155	71	0
+156	71	0
+157	71	0
+158	71	0
+159	71	0
+160	71	0
+161	71	0
+162	71	0
+163	71	0
+164	71	0
+165	71	0
+166	71	0
+167	71	0
+168	71	0
+169	71	0
+170	71	0
+171	71	0
+172	71	0
+173	71	0
+174	71	0
+175	71	0
+176	71	0
+177	71	0
+178	71	0
+179	71	0
+180	71	0
+181	71	0
+182	71	0
+183	71	0
+184	71	0
+185	71	0
+186	71	0
+187	71	0
+188	71	0
+189	71	0
+190	71	0
+191	71	0
+192	71	0
+193	71	0
+194	71	0
+195	71	0
+196	71	0
+197	71	0
+198	71	0
+199	71	0
+200	71	0
+201	71	0
+202	71	0
+203	71	0
+204	71	0
+205	71	0
+206	71	0
+207	71	0
+208	71	0
+209	71	0
+210	71	0
+211	71	0
+212	71	0
+213	71	0
+214	71	0
+215	71	0
+216	71	0
+217	71	0
+218	71	0
+219	71	0
+220	71	0
+221	71	0
+222	71	0
+223	71	0
+224	71	0
+225	71	0
+226	71	0
+227	71	0
+228	71	0
+229	71	0
+230	71	0
+231	71	0
+232	71	0
+233	71	0
+234	71	0
+235	71	0
+236	71	0
+237	71	0
+238	71	0
+239	71	0
+240	71	0
+241	71	0
+242	71	0
+243	71	0
+244	71	0
+245	71	0
+246	71	0
+247	71	0
+248	71	0
+249	71	0
+250	71	0
+251	71	0
+252	71	0
+253	71	0
+254	71	0
+255	71	0
+256	71	0
+257	71	0
+258	71	0
+259	71	0
+260	71	0
+261	71	0
+262	71	0
+263	71	0
+264	71	0
+265	71	0
+266	71	0
+267	71	0
+268	71	0
+269	71	0
+270	71	0
+271	71	0
+272	71	0
+273	71	0
+274	71	0
+275	71	0
+276	71	0
+277	71	0
+278	71	0
+279	71	0
+280	71	0
+281	71	0
+282	71	0
+283	71	0
+284	71	0
+285	71	0
+286	71	0
+287	71	0
+288	71	0
+289	71	0
+290	71	0
+291	71	0
+292	71	0
+293	71	0
+294	71	0
+295	71	0
+296	71	0
+297	71	0
+298	71	0
+299	71	0
+300	71	0
+301	71	0
+302	71	0
+303	71	0
+304	71	0
+305	71	0
+306	71	0
+307	71	0
+308	71	0
+309	71	0
+310	71	0
+311	71	0
+312	71	0
+313	71	0
+314	71	0
+315	71	0
+316	71	0
+317	71	0
+318	71	0
+319	71	0
+320	71	0
+321	71	0
+322	71	0
+323	71	0
+324	71	0
+325	71	0
+326	71	0
+327	71	0
+328	71	0
+329	71	0
+330	71	0
+331	71	0
+332	71	0
+333	71	0
+334	71	0
+335	71	0
+336	71	0
+337	71	0
+338	71	0
+339	71	0
+340	71	0
+341	71	0
+342	71	0
+343	71	0
+344	71	0
+345	71	0
+346	71	0
+347	71	0
+348	71	0
+349	71	0
+350	71	0
+351	71	0
+352	71	0
+353	71	0
+354	71	0
+355	71	0
+356	71	0
+357	71	0
+358	71	0
+359	71	0
+360	71	0
+0	71.5	0
+1	71.5	0
+2	71.5	0
+3	71.5	0
+4	71.5	0
+5	71.5	0
+6	71.5	0
+7	71.5	0
+8	71.5	0
+9	71.5	0
+10	71.5	0
+11	71.5	0
+12	71.5	0
+13	71.5	0
+14	71.5	0
+15	71.5	0
+16	71.5	0
+17	71.5	0
+18	71.5	0
+19	71.5	0
+20	71.5	0
+21	71.5	0
+22	71.5	0
+23	71.5	0
+24	71.5	0
+25	71.5	0
+26	71.5	0
+27	71.5	0
+28	71.5	0
+29	71.5	0
+30	71.5	0
+31	71.5	0
+32	71.5	0
+33	71.5	0
+34	71.5	0
+35	71.5	0
+36	71.5	0
+37	71.5	0
+38	71.5	0
+39	71.5	0
+40	71.5	0
+41	71.5	0
+42	71.5	0
+43	71.5	0
+44	71.5	0
+45	71.5	0
+46	71.5	0
+47	71.5	0
+48	71.5	0
+49	71.5	0
+50	71.5	0
+51	71.5	0
+52	71.5	0
+53	71.5	0
+54	71.5	0
+55	71.5	0
+56	71.5	0
+57	71.5	0
+58	71.5	0
+59	71.5	0
+60	71.5	0
+61	71.5	0
+62	71.5	0
+63	71.5	0
+64	71.5	0
+65	71.5	0
+66	71.5	0
+67	71.5	0
+68	71.5	0
+69	71.5	0
+70	71.5	0
+71	71.5	0
+72	71.5	0
+73	71.5	0
+74	71.5	0
+75	71.5	0
+76	71.5	0
+77	71.5	0
+78	71.5	0
+79	71.5	0
+80	71.5	0
+81	71.5	0
+82	71.5	0
+83	71.5	0
+84	71.5	0
+85	71.5	0
+86	71.5	0
+87	71.5	0
+88	71.5	0
+89	71.5	0
+90	71.5	0
+91	71.5	0
+92	71.5	0
+93	71.5	0
+94	71.5	0
+95	71.5	0
+96	71.5	0
+97	71.5	0
+98	71.5	0
+99	71.5	0
+100	71.5	0
+101	71.5	0
+102	71.5	0
+103	71.5	0
+104	71.5	0
+105	71.5	0
+106	71.5	0
+107	71.5	0
+108	71.5	0
+109	71.5	0
+110	71.5	0
+111	71.5	0
+112	71.5	0
+113	71.5	0
+114	71.5	0
+115	71.5	0
+116	71.5	0
+117	71.5	0
+118	71.5	0
+119	71.5	0
+120	71.5	0
+121	71.5	0
+122	71.5	0
+123	71.5	0
+124	71.5	0
+125	71.5	0
+126	71.5	0
+127	71.5	0
+128	71.5	0
+129	71.5	0
+130	71.5	0
+131	71.5	0
+132	71.5	0
+133	71.5	0
+134	71.5	0
+135	71.5	0
+136	71.5	0
+137	71.5	0
+138	71.5	0
+139	71.5	0
+140	71.5	0
+141	71.5	0
+142	71.5	0
+143	71.5	0
+144	71.5	0
+145	71.5	0
+146	71.5	0
+147	71.5	0
+148	71.5	0
+149	71.5	0
+150	71.5	0
+151	71.5	0
+152	71.5	0
+153	71.5	0
+154	71.5	0
+155	71.5	0
+156	71.5	0
+157	71.5	0
+158	71.5	0
+159	71.5	0
+160	71.5	0
+161	71.5	0
+162	71.5	0
+163	71.5	0
+164	71.5	0
+165	71.5	0
+166	71.5	0
+167	71.5	0
+168	71.5	0
+169	71.5	0
+170	71.5	0
+171	71.5	0
+172	71.5	0
+173	71.5	0
+174	71.5	0
+175	71.5	0
+176	71.5	0
+177	71.5	0
+178	71.5	0
+179	71.5	0
+180	71.5	0
+181	71.5	0
+182	71.5	0
+183	71.5	0
+184	71.5	0
+185	71.5	0
+186	71.5	0
+187	71.5	0
+188	71.5	0
+189	71.5	0
+190	71.5	0
+191	71.5	0
+192	71.5	0
+193	71.5	0
+194	71.5	0
+195	71.5	0
+196	71.5	0
+197	71.5	0
+198	71.5	0
+199	71.5	0
+200	71.5	0
+201	71.5	0
+202	71.5	0
+203	71.5	0
+204	71.5	0
+205	71.5	0
+206	71.5	0
+207	71.5	0
+208	71.5	0
+209	71.5	0
+210	71.5	0
+211	71.5	0
+212	71.5	0
+213	71.5	0
+214	71.5	0
+215	71.5	0
+216	71.5	0
+217	71.5	0
+218	71.5	0
+219	71.5	0
+220	71.5	0
+221	71.5	0
+222	71.5	0
+223	71.5	0
+224	71.5	0
+225	71.5	0
+226	71.5	0
+227	71.5	0
+228	71.5	0
+229	71.5	0
+230	71.5	0
+231	71.5	0
+232	71.5	0
+233	71.5	0
+234	71.5	0
+235	71.5	0
+236	71.5	0
+237	71.5	0
+238	71.5	0
+239	71.5	0
+240	71.5	0
+241	71.5	0
+242	71.5	0
+243	71.5	0
+244	71.5	0
+245	71.5	0
+246	71.5	0
+247	71.5	0
+248	71.5	0
+249	71.5	0
+250	71.5	0
+251	71.5	0
+252	71.5	0
+253	71.5	0
+254	71.5	0
+255	71.5	0
+256	71.5	0
+257	71.5	0
+258	71.5	0
+259	71.5	0
+260	71.5	0
+261	71.5	0
+262	71.5	0
+263	71.5	0
+264	71.5	0
+265	71.5	0
+266	71.5	0
+267	71.5	0
+268	71.5	0
+269	71.5	0
+270	71.5	0
+271	71.5	0
+272	71.5	0
+273	71.5	0
+274	71.5	0
+275	71.5	0
+276	71.5	0
+277	71.5	0
+278	71.5	0
+279	71.5	0
+280	71.5	0
+281	71.5	0
+282	71.5	0
+283	71.5	0
+284	71.5	0
+285	71.5	0
+286	71.5	0
+287	71.5	0
+288	71.5	0
+289	71.5	0
+290	71.5	0
+291	71.5	0
+292	71.5	0
+293	71.5	0
+294	71.5	0
+295	71.5	0
+296	71.5	0
+297	71.5	0
+298	71.5	0
+299	71.5	0
+300	71.5	0
+301	71.5	0
+302	71.5	0
+303	71.5	0
+304	71.5	0
+305	71.5	0
+306	71.5	0
+307	71.5	0
+308	71.5	0
+309	71.5	0
+310	71.5	0
+311	71.5	0
+312	71.5	0
+313	71.5	0
+314	71.5	0
+315	71.5	0
+316	71.5	0
+317	71.5	0
+318	71.5	0
+319	71.5	0
+320	71.5	0
+321	71.5	0
+322	71.5	0
+323	71.5	0
+324	71.5	0
+325	71.5	0
+326	71.5	0
+327	71.5	0
+328	71.5	0
+329	71.5	0
+330	71.5	0
+331	71.5	0
+332	71.5	0
+333	71.5	0
+334	71.5	0
+335	71.5	0
+336	71.5	0
+337	71.5	0
+338	71.5	0
+339	71.5	0
+340	71.5	0
+341	71.5	0
+342	71.5	0
+343	71.5	0
+344	71.5	0
+345	71.5	0
+346	71.5	0
+347	71.5	0
+348	71.5	0
+349	71.5	0
+350	71.5	0
+351	71.5	0
+352	71.5	0
+353	71.5	0
+354	71.5	0
+355	71.5	0
+356	71.5	0
+357	71.5	0
+358	71.5	0
+359	71.5	0
+360	71.5	0
+0	72	0
+1	72	0
+2	72	0
+3	72	0
+4	72	0
+5	72	0
+6	72	0
+7	72	0
+8	72	0
+9	72	0
+10	72	0
+11	72	0
+12	72	0
+13	72	0
+14	72	0
+15	72	0
+16	72	0
+17	72	0
+18	72	0
+19	72	0
+20	72	0
+21	72	0
+22	72	0
+23	72	0
+24	72	0
+25	72	0
+26	72	0
+27	72	0
+28	72	0
+29	72	0
+30	72	0
+31	72	0
+32	72	0
+33	72	0
+34	72	0
+35	72	0
+36	72	0
+37	72	0
+38	72	0
+39	72	0
+40	72	0
+41	72	0
+42	72	0
+43	72	0
+44	72	0
+45	72	0
+46	72	0
+47	72	0
+48	72	0
+49	72	0
+50	72	0
+51	72	0
+52	72	0
+53	72	0
+54	72	0
+55	72	0
+56	72	0
+57	72	0
+58	72	0
+59	72	0
+60	72	0
+61	72	0
+62	72	0
+63	72	0
+64	72	0
+65	72	0
+66	72	0
+67	72	0
+68	72	0
+69	72	0
+70	72	0
+71	72	0
+72	72	0
+73	72	0
+74	72	0
+75	72	0
+76	72	0
+77	72	0
+78	72	0
+79	72	0
+80	72	0
+81	72	0
+82	72	0
+83	72	0
+84	72	0
+85	72	0
+86	72	0
+87	72	0
+88	72	0
+89	72	0
+90	72	0
+91	72	0
+92	72	0
+93	72	0
+94	72	0
+95	72	0
+96	72	0
+97	72	0
+98	72	0
+99	72	0
+100	72	0
+101	72	0
+102	72	0
+103	72	0
+104	72	0
+105	72	0
+106	72	0
+107	72	0
+108	72	0
+109	72	0
+110	72	0
+111	72	0
+112	72	0
+113	72	0
+114	72	0
+115	72	0
+116	72	0
+117	72	0
+118	72	0
+119	72	0
+120	72	0
+121	72	0
+122	72	0
+123	72	0
+124	72	0
+125	72	0
+126	72	0
+127	72	0
+128	72	0
+129	72	0
+130	72	0
+131	72	0
+132	72	0
+133	72	0
+134	72	0
+135	72	0
+136	72	0
+137	72	0
+138	72	0
+139	72	0
+140	72	0
+141	72	0
+142	72	0
+143	72	0
+144	72	0
+145	72	0
+146	72	0
+147	72	0
+148	72	0
+149	72	0
+150	72	0
+151	72	0
+152	72	0
+153	72	0
+154	72	0
+155	72	0
+156	72	0
+157	72	0
+158	72	0
+159	72	0
+160	72	0
+161	72	0
+162	72	0
+163	72	0
+164	72	0
+165	72	0
+166	72	0
+167	72	0
+168	72	0
+169	72	0
+170	72	0
+171	72	0
+172	72	0
+173	72	0
+174	72	0
+175	72	0
+176	72	0
+177	72	0
+178	72	0
+179	72	0
+180	72	0
+181	72	0
+182	72	0
+183	72	0
+184	72	0
+185	72	0
+186	72	0
+187	72	0
+188	72	0
+189	72	0
+190	72	0
+191	72	0
+192	72	0
+193	72	0
+194	72	0
+195	72	0
+196	72	0
+197	72	0
+198	72	0
+199	72	0
+200	72	0
+201	72	0
+202	72	0
+203	72	0
+204	72	0
+205	72	0
+206	72	0
+207	72	0
+208	72	0
+209	72	0
+210	72	0
+211	72	0
+212	72	0
+213	72	0
+214	72	0
+215	72	0
+216	72	0
+217	72	0
+218	72	0
+219	72	0
+220	72	0
+221	72	0
+222	72	0
+223	72	0
+224	72	0
+225	72	0
+226	72	0
+227	72	0
+228	72	0
+229	72	0
+230	72	0
+231	72	0
+232	72	0
+233	72	0
+234	72	0
+235	72	0
+236	72	0
+237	72	0
+238	72	0
+239	72	0
+240	72	0
+241	72	0
+242	72	0
+243	72	0
+244	72	0
+245	72	0
+246	72	0
+247	72	0
+248	72	0
+249	72	0
+250	72	0
+251	72	0
+252	72	0
+253	72	0
+254	72	0
+255	72	0
+256	72	0
+257	72	0
+258	72	0
+259	72	0
+260	72	0
+261	72	0
+262	72	0
+263	72	0
+264	72	0
+265	72	0
+266	72	0
+267	72	0
+268	72	0
+269	72	0
+270	72	0
+271	72	0
+272	72	0
+273	72	0
+274	72	0
+275	72	0
+276	72	0
+277	72	0
+278	72	0
+279	72	0
+280	72	0
+281	72	0
+282	72	0
+283	72	0
+284	72	0
+285	72	0
+286	72	0
+287	72	0
+288	72	0
+289	72	0
+290	72	0
+291	72	0
+292	72	0
+293	72	0
+294	72	0
+295	72	0
+296	72	0
+297	72	0
+298	72	0
+299	72	0
+300	72	0
+301	72	0
+302	72	0
+303	72	0
+304	72	0
+305	72	0
+306	72	0
+307	72	0
+308	72	0
+309	72	0
+310	72	0
+311	72	0
+312	72	0
+313	72	0
+314	72	0
+315	72	0
+316	72	0
+317	72	0
+318	72	0
+319	72	0
+320	72	0
+321	72	0
+322	72	0
+323	72	0
+324	72	0
+325	72	0
+326	72	0
+327	72	0
+328	72	0
+329	72	0
+330	72	0
+331	72	0
+332	72	0
+333	72	0
+334	72	0
+335	72	0
+336	72	0
+337	72	0
+338	72	0
+339	72	0
+340	72	0
+341	72	0
+342	72	0
+343	72	0
+344	72	0
+345	72	0
+346	72	0
+347	72	0
+348	72	0
+349	72	0
+350	72	0
+351	72	0
+352	72	0
+353	72	0
+354	72	0
+355	72	0
+356	72	0
+357	72	0
+358	72	0
+359	72	0
+360	72	0
+0	72.5	0
+1	72.5	0
+2	72.5	0
+3	72.5	0
+4	72.5	0
+5	72.5	0
+6	72.5	0
+7	72.5	0
+8	72.5	0
+9	72.5	0
+10	72.5	0
+11	72.5	0
+12	72.5	0
+13	72.5	0
+14	72.5	0
+15	72.5	0
+16	72.5	0
+17	72.5	0
+18	72.5	0
+19	72.5	0
+20	72.5	0
+21	72.5	0
+22	72.5	0
+23	72.5	0
+24	72.5	0
+25	72.5	0
+26	72.5	0
+27	72.5	0
+28	72.5	0
+29	72.5	0
+30	72.5	0
+31	72.5	0
+32	72.5	0
+33	72.5	0
+34	72.5	0
+35	72.5	0
+36	72.5	0
+37	72.5	0
+38	72.5	0
+39	72.5	0
+40	72.5	0
+41	72.5	0
+42	72.5	0
+43	72.5	0
+44	72.5	0
+45	72.5	0
+46	72.5	0
+47	72.5	0
+48	72.5	0
+49	72.5	0
+50	72.5	0
+51	72.5	0
+52	72.5	0
+53	72.5	0
+54	72.5	0
+55	72.5	0
+56	72.5	0
+57	72.5	0
+58	72.5	0
+59	72.5	0
+60	72.5	0
+61	72.5	0
+62	72.5	0
+63	72.5	0
+64	72.5	0
+65	72.5	0
+66	72.5	0
+67	72.5	0
+68	72.5	0
+69	72.5	0
+70	72.5	0
+71	72.5	0
+72	72.5	0
+73	72.5	0
+74	72.5	0
+75	72.5	0
+76	72.5	0
+77	72.5	0
+78	72.5	0
+79	72.5	0
+80	72.5	0
+81	72.5	0
+82	72.5	0
+83	72.5	0
+84	72.5	0
+85	72.5	0
+86	72.5	0
+87	72.5	0
+88	72.5	0
+89	72.5	0
+90	72.5	0
+91	72.5	0
+92	72.5	0
+93	72.5	0
+94	72.5	0
+95	72.5	0
+96	72.5	0
+97	72.5	0
+98	72.5	0
+99	72.5	0
+100	72.5	0
+101	72.5	0
+102	72.5	0
+103	72.5	0
+104	72.5	0
+105	72.5	0
+106	72.5	0
+107	72.5	0
+108	72.5	0
+109	72.5	0
+110	72.5	0
+111	72.5	0
+112	72.5	0
+113	72.5	0
+114	72.5	0
+115	72.5	0
+116	72.5	0
+117	72.5	0
+118	72.5	0
+119	72.5	0
+120	72.5	0
+121	72.5	0
+122	72.5	0
+123	72.5	0
+124	72.5	0
+125	72.5	0
+126	72.5	0
+127	72.5	0
+128	72.5	0
+129	72.5	0
+130	72.5	0
+131	72.5	0
+132	72.5	0
+133	72.5	0
+134	72.5	0
+135	72.5	0
+136	72.5	0
+137	72.5	0
+138	72.5	0
+139	72.5	0
+140	72.5	0
+141	72.5	0
+142	72.5	0
+143	72.5	0
+144	72.5	0
+145	72.5	0
+146	72.5	0
+147	72.5	0
+148	72.5	0
+149	72.5	0
+150	72.5	0
+151	72.5	0
+152	72.5	0
+153	72.5	0
+154	72.5	0
+155	72.5	0
+156	72.5	0
+157	72.5	0
+158	72.5	0
+159	72.5	0
+160	72.5	0
+161	72.5	0
+162	72.5	0
+163	72.5	0
+164	72.5	0
+165	72.5	0
+166	72.5	0
+167	72.5	0
+168	72.5	0
+169	72.5	0
+170	72.5	0
+171	72.5	0
+172	72.5	0
+173	72.5	0
+174	72.5	0
+175	72.5	0
+176	72.5	0
+177	72.5	0
+178	72.5	0
+179	72.5	0
+180	72.5	0
+181	72.5	0
+182	72.5	0
+183	72.5	0
+184	72.5	0
+185	72.5	0
+186	72.5	0
+187	72.5	0
+188	72.5	0
+189	72.5	0
+190	72.5	0
+191	72.5	0
+192	72.5	0
+193	72.5	0
+194	72.5	0
+195	72.5	0
+196	72.5	0
+197	72.5	0
+198	72.5	0
+199	72.5	0
+200	72.5	0
+201	72.5	0
+202	72.5	0
+203	72.5	0
+204	72.5	0
+205	72.5	0
+206	72.5	0
+207	72.5	0
+208	72.5	0
+209	72.5	0
+210	72.5	0
+211	72.5	0
+212	72.5	0
+213	72.5	0
+214	72.5	0
+215	72.5	0
+216	72.5	0
+217	72.5	0
+218	72.5	0
+219	72.5	0
+220	72.5	0
+221	72.5	0
+222	72.5	0
+223	72.5	0
+224	72.5	0
+225	72.5	0
+226	72.5	0
+227	72.5	0
+228	72.5	0
+229	72.5	0
+230	72.5	0
+231	72.5	0
+232	72.5	0
+233	72.5	0
+234	72.5	0
+235	72.5	0
+236	72.5	0
+237	72.5	0
+238	72.5	0
+239	72.5	0
+240	72.5	0
+241	72.5	0
+242	72.5	0
+243	72.5	0
+244	72.5	0
+245	72.5	0
+246	72.5	0
+247	72.5	0
+248	72.5	0
+249	72.5	0
+250	72.5	0
+251	72.5	0
+252	72.5	0
+253	72.5	0
+254	72.5	0
+255	72.5	0
+256	72.5	0
+257	72.5	0
+258	72.5	0
+259	72.5	0
+260	72.5	0
+261	72.5	0
+262	72.5	0
+263	72.5	0
+264	72.5	0
+265	72.5	0
+266	72.5	0
+267	72.5	0
+268	72.5	0
+269	72.5	0
+270	72.5	0
+271	72.5	0
+272	72.5	0
+273	72.5	0
+274	72.5	0
+275	72.5	0
+276	72.5	0
+277	72.5	0
+278	72.5	0
+279	72.5	0
+280	72.5	0
+281	72.5	0
+282	72.5	0
+283	72.5	0
+284	72.5	0
+285	72.5	0
+286	72.5	0
+287	72.5	0
+288	72.5	0
+289	72.5	0
+290	72.5	0
+291	72.5	0
+292	72.5	0
+293	72.5	0
+294	72.5	0
+295	72.5	0
+296	72.5	0
+297	72.5	0
+298	72.5	0
+299	72.5	0
+300	72.5	0
+301	72.5	0
+302	72.5	0
+303	72.5	0
+304	72.5	0
+305	72.5	0
+306	72.5	0
+307	72.5	0
+308	72.5	0
+309	72.5	0
+310	72.5	0
+311	72.5	0
+312	72.5	0
+313	72.5	0
+314	72.5	0
+315	72.5	0
+316	72.5	0
+317	72.5	0
+318	72.5	0
+319	72.5	0
+320	72.5	0
+321	72.5	0
+322	72.5	0
+323	72.5	0
+324	72.5	0
+325	72.5	0
+326	72.5	0
+327	72.5	0
+328	72.5	0
+329	72.5	0
+330	72.5	0
+331	72.5	0
+332	72.5	0
+333	72.5	0
+334	72.5	0
+335	72.5	0
+336	72.5	0
+337	72.5	0
+338	72.5	0
+339	72.5	0
+340	72.5	0
+341	72.5	0
+342	72.5	0
+343	72.5	0
+344	72.5	0
+345	72.5	0
+346	72.5	0
+347	72.5	0
+348	72.5	0
+349	72.5	0
+350	72.5	0
+351	72.5	0
+352	72.5	0
+353	72.5	0
+354	72.5	0
+355	72.5	0
+356	72.5	0
+357	72.5	0
+358	72.5	0
+359	72.5	0
+360	72.5	0
+0	73	0
+1	73	0
+2	73	0
+3	73	0
+4	73	0
+5	73	0
+6	73	0
+7	73	0
+8	73	0
+9	73	0
+10	73	0
+11	73	0
+12	73	0
+13	73	0
+14	73	0
+15	73	0
+16	73	0
+17	73	0
+18	73	0
+19	73	0
+20	73	0
+21	73	0
+22	73	0
+23	73	0
+24	73	0
+25	73	0
+26	73	0
+27	73	0
+28	73	0
+29	73	0
+30	73	0
+31	73	0
+32	73	0
+33	73	0
+34	73	0
+35	73	0
+36	73	0
+37	73	0
+38	73	0
+39	73	0
+40	73	0
+41	73	0
+42	73	0
+43	73	0
+44	73	0
+45	73	0
+46	73	0
+47	73	0
+48	73	0
+49	73	0
+50	73	0
+51	73	0
+52	73	0
+53	73	0
+54	73	0
+55	73	0
+56	73	0
+57	73	0
+58	73	0
+59	73	0
+60	73	0
+61	73	0
+62	73	0
+63	73	0
+64	73	0
+65	73	0
+66	73	0
+67	73	0
+68	73	0
+69	73	0
+70	73	0
+71	73	0
+72	73	0
+73	73	0
+74	73	0
+75	73	0
+76	73	0
+77	73	0
+78	73	0
+79	73	0
+80	73	0
+81	73	0
+82	73	0
+83	73	0
+84	73	0
+85	73	0
+86	73	0
+87	73	0
+88	73	0
+89	73	0
+90	73	0
+91	73	0
+92	73	0
+93	73	0
+94	73	0
+95	73	0
+96	73	0
+97	73	0
+98	73	0
+99	73	0
+100	73	0
+101	73	0
+102	73	0
+103	73	0
+104	73	0
+105	73	0
+106	73	0
+107	73	0
+108	73	0
+109	73	0
+110	73	0
+111	73	0
+112	73	0
+113	73	0
+114	73	0
+115	73	0
+116	73	0
+117	73	0
+118	73	0
+119	73	0
+120	73	0
+121	73	0
+122	73	0
+123	73	0
+124	73	0
+125	73	0
+126	73	0
+127	73	0
+128	73	0
+129	73	0
+130	73	0
+131	73	0
+132	73	0
+133	73	0
+134	73	0
+135	73	0
+136	73	0
+137	73	0
+138	73	0
+139	73	0
+140	73	0
+141	73	0
+142	73	0
+143	73	0
+144	73	0
+145	73	0
+146	73	0
+147	73	0
+148	73	0
+149	73	0
+150	73	0
+151	73	0
+152	73	0
+153	73	0
+154	73	0
+155	73	0
+156	73	0
+157	73	0
+158	73	0
+159	73	0
+160	73	0
+161	73	0
+162	73	0
+163	73	0
+164	73	0
+165	73	0
+166	73	0
+167	73	0
+168	73	0
+169	73	0
+170	73	0
+171	73	0
+172	73	0
+173	73	0
+174	73	0
+175	73	0
+176	73	0
+177	73	0
+178	73	0
+179	73	0
+180	73	0
+181	73	0
+182	73	0
+183	73	0
+184	73	0
+185	73	0
+186	73	0
+187	73	0
+188	73	0
+189	73	0
+190	73	0
+191	73	0
+192	73	0
+193	73	0
+194	73	0
+195	73	0
+196	73	0
+197	73	0
+198	73	0
+199	73	0
+200	73	0
+201	73	0
+202	73	0
+203	73	0
+204	73	0
+205	73	0
+206	73	0
+207	73	0
+208	73	0
+209	73	0
+210	73	0
+211	73	0
+212	73	0
+213	73	0
+214	73	0
+215	73	0
+216	73	0
+217	73	0
+218	73	0
+219	73	0
+220	73	0
+221	73	0
+222	73	0
+223	73	0
+224	73	0
+225	73	0
+226	73	0
+227	73	0
+228	73	0
+229	73	0
+230	73	0
+231	73	0
+232	73	0
+233	73	0
+234	73	0
+235	73	0
+236	73	0
+237	73	0
+238	73	0
+239	73	0
+240	73	0
+241	73	0
+242	73	0
+243	73	0
+244	73	0
+245	73	0
+246	73	0
+247	73	0
+248	73	0
+249	73	0
+250	73	0
+251	73	0
+252	73	0
+253	73	0
+254	73	0
+255	73	0
+256	73	0
+257	73	0
+258	73	0
+259	73	0
+260	73	0
+261	73	0
+262	73	0
+263	73	0
+264	73	0
+265	73	0
+266	73	0
+267	73	0
+268	73	0
+269	73	0
+270	73	0
+271	73	0
+272	73	0
+273	73	0
+274	73	0
+275	73	0
+276	73	0
+277	73	0
+278	73	0
+279	73	0
+280	73	0
+281	73	0
+282	73	0
+283	73	0
+284	73	0
+285	73	0
+286	73	0
+287	73	0
+288	73	0
+289	73	0
+290	73	0
+291	73	0
+292	73	0
+293	73	0
+294	73	0
+295	73	0
+296	73	0
+297	73	0
+298	73	0
+299	73	0
+300	73	0
+301	73	0
+302	73	0
+303	73	0
+304	73	0
+305	73	0
+306	73	0
+307	73	0
+308	73	0
+309	73	0
+310	73	0
+311	73	0
+312	73	0
+313	73	0
+314	73	0
+315	73	0
+316	73	0
+317	73	0
+318	73	0
+319	73	0
+320	73	0
+321	73	0
+322	73	0
+323	73	0
+324	73	0
+325	73	0
+326	73	0
+327	73	0
+328	73	0
+329	73	0
+330	73	0
+331	73	0
+332	73	0
+333	73	0
+334	73	0
+335	73	0
+336	73	0
+337	73	0
+338	73	0
+339	73	0
+340	73	0
+341	73	0
+342	73	0
+343	73	0
+344	73	0
+345	73	0
+346	73	0
+347	73	0
+348	73	0
+349	73	0
+350	73	0
+351	73	0
+352	73	0
+353	73	0
+354	73	0
+355	73	0
+356	73	0
+357	73	0
+358	73	0
+359	73	0
+360	73	0
+0	73.5	0
+1	73.5	0
+2	73.5	0
+3	73.5	0
+4	73.5	0
+5	73.5	0
+6	73.5	0
+7	73.5	0
+8	73.5	0
+9	73.5	0
+10	73.5	0
+11	73.5	0
+12	73.5	0
+13	73.5	0
+14	73.5	0
+15	73.5	0
+16	73.5	0
+17	73.5	0
+18	73.5	0
+19	73.5	0
+20	73.5	0
+21	73.5	0
+22	73.5	0
+23	73.5	0
+24	73.5	0
+25	73.5	0
+26	73.5	0
+27	73.5	0
+28	73.5	0
+29	73.5	0
+30	73.5	0
+31	73.5	0
+32	73.5	0
+33	73.5	0
+34	73.5	0
+35	73.5	0
+36	73.5	0
+37	73.5	0
+38	73.5	0
+39	73.5	0
+40	73.5	0
+41	73.5	0
+42	73.5	0
+43	73.5	0
+44	73.5	0
+45	73.5	0
+46	73.5	0
+47	73.5	0
+48	73.5	0
+49	73.5	0
+50	73.5	0
+51	73.5	0
+52	73.5	0
+53	73.5	0
+54	73.5	0
+55	73.5	0
+56	73.5	0
+57	73.5	0
+58	73.5	0
+59	73.5	0
+60	73.5	0
+61	73.5	0
+62	73.5	0
+63	73.5	0
+64	73.5	0
+65	73.5	0
+66	73.5	0
+67	73.5	0
+68	73.5	0
+69	73.5	0
+70	73.5	0
+71	73.5	0
+72	73.5	0
+73	73.5	0
+74	73.5	0
+75	73.5	0
+76	73.5	0
+77	73.5	0
+78	73.5	0
+79	73.5	0
+80	73.5	0
+81	73.5	0
+82	73.5	0
+83	73.5	0
+84	73.5	0
+85	73.5	0
+86	73.5	0
+87	73.5	0
+88	73.5	0
+89	73.5	0
+90	73.5	0
+91	73.5	0
+92	73.5	0
+93	73.5	0
+94	73.5	0
+95	73.5	0
+96	73.5	0
+97	73.5	0
+98	73.5	0
+99	73.5	0
+100	73.5	0
+101	73.5	0
+102	73.5	0
+103	73.5	0
+104	73.5	0
+105	73.5	0
+106	73.5	0
+107	73.5	0
+108	73.5	0
+109	73.5	0
+110	73.5	0
+111	73.5	0
+112	73.5	0
+113	73.5	0
+114	73.5	0
+115	73.5	0
+116	73.5	0
+117	73.5	0
+118	73.5	0
+119	73.5	0
+120	73.5	0
+121	73.5	0
+122	73.5	0
+123	73.5	0
+124	73.5	0
+125	73.5	0
+126	73.5	0
+127	73.5	0
+128	73.5	0
+129	73.5	0
+130	73.5	0
+131	73.5	0
+132	73.5	0
+133	73.5	0
+134	73.5	0
+135	73.5	0
+136	73.5	0
+137	73.5	0
+138	73.5	0
+139	73.5	0
+140	73.5	0
+141	73.5	0
+142	73.5	0
+143	73.5	0
+144	73.5	0
+145	73.5	0
+146	73.5	0
+147	73.5	0
+148	73.5	0
+149	73.5	0
+150	73.5	0
+151	73.5	0
+152	73.5	0
+153	73.5	0
+154	73.5	0
+155	73.5	0
+156	73.5	0
+157	73.5	0
+158	73.5	0
+159	73.5	0
+160	73.5	0
+161	73.5	0
+162	73.5	0
+163	73.5	0
+164	73.5	0
+165	73.5	0
+166	73.5	0
+167	73.5	0
+168	73.5	0
+169	73.5	0
+170	73.5	0
+171	73.5	0
+172	73.5	0
+173	73.5	0
+174	73.5	0
+175	73.5	0
+176	73.5	0
+177	73.5	0
+178	73.5	0
+179	73.5	0
+180	73.5	0
+181	73.5	0
+182	73.5	0
+183	73.5	0
+184	73.5	0
+185	73.5	0
+186	73.5	0
+187	73.5	0
+188	73.5	0
+189	73.5	0
+190	73.5	0
+191	73.5	0
+192	73.5	0
+193	73.5	0
+194	73.5	0
+195	73.5	0
+196	73.5	0
+197	73.5	0
+198	73.5	0
+199	73.5	0
+200	73.5	0
+201	73.5	0
+202	73.5	0
+203	73.5	0
+204	73.5	0
+205	73.5	0
+206	73.5	0
+207	73.5	0
+208	73.5	0
+209	73.5	0
+210	73.5	0
+211	73.5	0
+212	73.5	0
+213	73.5	0
+214	73.5	0
+215	73.5	0
+216	73.5	0
+217	73.5	0
+218	73.5	0
+219	73.5	0
+220	73.5	0
+221	73.5	0
+222	73.5	0
+223	73.5	0
+224	73.5	0
+225	73.5	0
+226	73.5	0
+227	73.5	0
+228	73.5	0
+229	73.5	0
+230	73.5	0
+231	73.5	0
+232	73.5	0
+233	73.5	0
+234	73.5	0
+235	73.5	0
+236	73.5	0
+237	73.5	0
+238	73.5	0
+239	73.5	0
+240	73.5	0
+241	73.5	0
+242	73.5	0
+243	73.5	0
+244	73.5	0
+245	73.5	0
+246	73.5	0
+247	73.5	0
+248	73.5	0
+249	73.5	0
+250	73.5	0
+251	73.5	0
+252	73.5	0
+253	73.5	0
+254	73.5	0
+255	73.5	0
+256	73.5	0
+257	73.5	0
+258	73.5	0
+259	73.5	0
+260	73.5	0
+261	73.5	0
+262	73.5	0
+263	73.5	0
+264	73.5	0
+265	73.5	0
+266	73.5	0
+267	73.5	0
+268	73.5	0
+269	73.5	0
+270	73.5	0
+271	73.5	0
+272	73.5	0
+273	73.5	0
+274	73.5	0
+275	73.5	0
+276	73.5	0
+277	73.5	0
+278	73.5	0
+279	73.5	0
+280	73.5	0
+281	73.5	0
+282	73.5	0
+283	73.5	0
+284	73.5	0
+285	73.5	0
+286	73.5	0
+287	73.5	0
+288	73.5	0
+289	73.5	0
+290	73.5	0
+291	73.5	0
+292	73.5	0
+293	73.5	0
+294	73.5	0
+295	73.5	0
+296	73.5	0
+297	73.5	0
+298	73.5	0
+299	73.5	0
+300	73.5	0
+301	73.5	0
+302	73.5	0
+303	73.5	0
+304	73.5	0
+305	73.5	0
+306	73.5	0
+307	73.5	0
+308	73.5	0
+309	73.5	0
+310	73.5	0
+311	73.5	0
+312	73.5	0
+313	73.5	0
+314	73.5	0
+315	73.5	0
+316	73.5	0
+317	73.5	0
+318	73.5	0
+319	73.5	0
+320	73.5	0
+321	73.5	0
+322	73.5	0
+323	73.5	0
+324	73.5	0
+325	73.5	0
+326	73.5	0
+327	73.5	0
+328	73.5	0
+329	73.5	0
+330	73.5	0
+331	73.5	0
+332	73.5	0
+333	73.5	0
+334	73.5	0
+335	73.5	0
+336	73.5	0
+337	73.5	0
+338	73.5	0
+339	73.5	0
+340	73.5	0
+341	73.5	0
+342	73.5	0
+343	73.5	0
+344	73.5	0
+345	73.5	0
+346	73.5	0
+347	73.5	0
+348	73.5	0
+349	73.5	0
+350	73.5	0
+351	73.5	0
+352	73.5	0
+353	73.5	0
+354	73.5	0
+355	73.5	0
+356	73.5	0
+357	73.5	0
+358	73.5	0
+359	73.5	0
+360	73.5	0
+0	74	0
+1	74	0
+2	74	0
+3	74	0
+4	74	0
+5	74	0
+6	74	0
+7	74	0
+8	74	0
+9	74	0
+10	74	0
+11	74	0
+12	74	0
+13	74	0
+14	74	0
+15	74	0
+16	74	0
+17	74	0
+18	74	0
+19	74	0
+20	74	0
+21	74	0
+22	74	0
+23	74	0
+24	74	0
+25	74	0
+26	74	0
+27	74	0
+28	74	0
+29	74	0
+30	74	0
+31	74	0
+32	74	0
+33	74	0
+34	74	0
+35	74	0
+36	74	0
+37	74	0
+38	74	0
+39	74	0
+40	74	0
+41	74	0
+42	74	0
+43	74	0
+44	74	0
+45	74	0
+46	74	0
+47	74	0
+48	74	0
+49	74	0
+50	74	0
+51	74	0
+52	74	0
+53	74	0
+54	74	0
+55	74	0
+56	74	0
+57	74	0
+58	74	0
+59	74	0
+60	74	0
+61	74	0
+62	74	0
+63	74	0
+64	74	0
+65	74	0
+66	74	0
+67	74	0
+68	74	0
+69	74	0
+70	74	0
+71	74	0
+72	74	0
+73	74	0
+74	74	0
+75	74	0
+76	74	0
+77	74	0
+78	74	0
+79	74	0
+80	74	0
+81	74	0
+82	74	0
+83	74	0
+84	74	0
+85	74	0
+86	74	0
+87	74	0
+88	74	0
+89	74	0
+90	74	0
+91	74	0
+92	74	0
+93	74	0
+94	74	0
+95	74	0
+96	74	0
+97	74	0
+98	74	0
+99	74	0
+100	74	0
+101	74	0
+102	74	0
+103	74	0
+104	74	0
+105	74	0
+106	74	0
+107	74	0
+108	74	0
+109	74	0
+110	74	0
+111	74	0
+112	74	0
+113	74	0
+114	74	0
+115	74	0
+116	74	0
+117	74	0
+118	74	0
+119	74	0
+120	74	0
+121	74	0
+122	74	0
+123	74	0
+124	74	0
+125	74	0
+126	74	0
+127	74	0
+128	74	0
+129	74	0
+130	74	0
+131	74	0
+132	74	0
+133	74	0
+134	74	0
+135	74	0
+136	74	0
+137	74	0
+138	74	0
+139	74	0
+140	74	0
+141	74	0
+142	74	0
+143	74	0
+144	74	0
+145	74	0
+146	74	0
+147	74	0
+148	74	0
+149	74	0
+150	74	0
+151	74	0
+152	74	0
+153	74	0
+154	74	0
+155	74	0
+156	74	0
+157	74	0
+158	74	0
+159	74	0
+160	74	0
+161	74	0
+162	74	0
+163	74	0
+164	74	0
+165	74	0
+166	74	0
+167	74	0
+168	74	0
+169	74	0
+170	74	0
+171	74	0
+172	74	0
+173	74	0
+174	74	0
+175	74	0
+176	74	0
+177	74	0
+178	74	0
+179	74	0
+180	74	0
+181	74	0
+182	74	0
+183	74	0
+184	74	0
+185	74	0
+186	74	0
+187	74	0
+188	74	0
+189	74	0
+190	74	0
+191	74	0
+192	74	0
+193	74	0
+194	74	0
+195	74	0
+196	74	0
+197	74	0
+198	74	0
+199	74	0
+200	74	0
+201	74	0
+202	74	0
+203	74	0
+204	74	0
+205	74	0
+206	74	0
+207	74	0
+208	74	0
+209	74	0
+210	74	0
+211	74	0
+212	74	0
+213	74	0
+214	74	0
+215	74	0
+216	74	0
+217	74	0
+218	74	0
+219	74	0
+220	74	0
+221	74	0
+222	74	0
+223	74	0
+224	74	0
+225	74	0
+226	74	0
+227	74	0
+228	74	0
+229	74	0
+230	74	0
+231	74	0
+232	74	0
+233	74	0
+234	74	0
+235	74	0
+236	74	0
+237	74	0
+238	74	0
+239	74	0
+240	74	0
+241	74	0
+242	74	0
+243	74	0
+244	74	0
+245	74	0
+246	74	0
+247	74	0
+248	74	0
+249	74	0
+250	74	0
+251	74	0
+252	74	0
+253	74	0
+254	74	0
+255	74	0
+256	74	0
+257	74	0
+258	74	0
+259	74	0
+260	74	0
+261	74	0
+262	74	0
+263	74	0
+264	74	0
+265	74	0
+266	74	0
+267	74	0
+268	74	0
+269	74	0
+270	74	0
+271	74	0
+272	74	0
+273	74	0
+274	74	0
+275	74	0
+276	74	0
+277	74	0
+278	74	0
+279	74	0
+280	74	0
+281	74	0
+282	74	0
+283	74	0
+284	74	0
+285	74	0
+286	74	0
+287	74	0
+288	74	0
+289	74	0
+290	74	0
+291	74	0
+292	74	0
+293	74	0
+294	74	0
+295	74	0
+296	74	0
+297	74	0
+298	74	0
+299	74	0
+300	74	0
+301	74	0
+302	74	0
+303	74	0
+304	74	0
+305	74	0
+306	74	0
+307	74	0
+308	74	0
+309	74	0
+310	74	0
+311	74	0
+312	74	0
+313	74	0
+314	74	0
+315	74	0
+316	74	0
+317	74	0
+318	74	0
+319	74	0
+320	74	0
+321	74	0
+322	74	0
+323	74	0
+324	74	0
+325	74	0
+326	74	0
+327	74	0
+328	74	0
+329	74	0
+330	74	0
+331	74	0
+332	74	0
+333	74	0
+334	74	0
+335	74	0
+336	74	0
+337	74	0
+338	74	0
+339	74	0
+340	74	0
+341	74	0
+342	74	0
+343	74	0
+344	74	0
+345	74	0
+346	74	0
+347	74	0
+348	74	0
+349	74	0
+350	74	0
+351	74	0
+352	74	0
+353	74	0
+354	74	0
+355	74	0
+356	74	0
+357	74	0
+358	74	0
+359	74	0
+360	74	0
+0	74.5	0
+1	74.5	0
+2	74.5	0
+3	74.5	0
+4	74.5	0
+5	74.5	0
+6	74.5	0
+7	74.5	0
+8	74.5	0
+9	74.5	0
+10	74.5	0
+11	74.5	0
+12	74.5	0
+13	74.5	0
+14	74.5	0
+15	74.5	0
+16	74.5	0
+17	74.5	0
+18	74.5	0
+19	74.5	0
+20	74.5	0
+21	74.5	0
+22	74.5	0
+23	74.5	0
+24	74.5	0
+25	74.5	0
+26	74.5	0
+27	74.5	0
+28	74.5	0
+29	74.5	0
+30	74.5	0
+31	74.5	0
+32	74.5	0
+33	74.5	0
+34	74.5	0
+35	74.5	0
+36	74.5	0
+37	74.5	0
+38	74.5	0
+39	74.5	0
+40	74.5	0
+41	74.5	0
+42	74.5	0
+43	74.5	0
+44	74.5	0
+45	74.5	0
+46	74.5	0
+47	74.5	0
+48	74.5	0
+49	74.5	0
+50	74.5	0
+51	74.5	0
+52	74.5	0
+53	74.5	0
+54	74.5	0
+55	74.5	0
+56	74.5	0
+57	74.5	0
+58	74.5	0
+59	74.5	0
+60	74.5	0
+61	74.5	0
+62	74.5	0
+63	74.5	0
+64	74.5	0
+65	74.5	0
+66	74.5	0
+67	74.5	0
+68	74.5	0
+69	74.5	0
+70	74.5	0
+71	74.5	0
+72	74.5	0
+73	74.5	0
+74	74.5	0
+75	74.5	0
+76	74.5	0
+77	74.5	0
+78	74.5	0
+79	74.5	0
+80	74.5	0
+81	74.5	0
+82	74.5	0
+83	74.5	0
+84	74.5	0
+85	74.5	0
+86	74.5	0
+87	74.5	0
+88	74.5	0
+89	74.5	0
+90	74.5	0
+91	74.5	0
+92	74.5	0
+93	74.5	0
+94	74.5	0
+95	74.5	0
+96	74.5	0
+97	74.5	0
+98	74.5	0
+99	74.5	0
+100	74.5	0
+101	74.5	0
+102	74.5	0
+103	74.5	0
+104	74.5	0
+105	74.5	0
+106	74.5	0
+107	74.5	0
+108	74.5	0
+109	74.5	0
+110	74.5	0
+111	74.5	0
+112	74.5	0
+113	74.5	0
+114	74.5	0
+115	74.5	0
+116	74.5	0
+117	74.5	0
+118	74.5	0
+119	74.5	0
+120	74.5	0
+121	74.5	0
+122	74.5	0
+123	74.5	0
+124	74.5	0
+125	74.5	0
+126	74.5	0
+127	74.5	0
+128	74.5	0
+129	74.5	0
+130	74.5	0
+131	74.5	0
+132	74.5	0
+133	74.5	0
+134	74.5	0
+135	74.5	0
+136	74.5	0
+137	74.5	0
+138	74.5	0
+139	74.5	0
+140	74.5	0
+141	74.5	0
+142	74.5	0
+143	74.5	0
+144	74.5	0
+145	74.5	0
+146	74.5	0
+147	74.5	0
+148	74.5	0
+149	74.5	0
+150	74.5	0
+151	74.5	0
+152	74.5	0
+153	74.5	0
+154	74.5	0
+155	74.5	0
+156	74.5	0
+157	74.5	0
+158	74.5	0
+159	74.5	0
+160	74.5	0
+161	74.5	0
+162	74.5	0
+163	74.5	0
+164	74.5	0
+165	74.5	0
+166	74.5	0
+167	74.5	0
+168	74.5	0
+169	74.5	0
+170	74.5	0
+171	74.5	0
+172	74.5	0
+173	74.5	0
+174	74.5	0
+175	74.5	0
+176	74.5	0
+177	74.5	0
+178	74.5	0
+179	74.5	0
+180	74.5	0
+181	74.5	0
+182	74.5	0
+183	74.5	0
+184	74.5	0
+185	74.5	0
+186	74.5	0
+187	74.5	0
+188	74.5	0
+189	74.5	0
+190	74.5	0
+191	74.5	0
+192	74.5	0
+193	74.5	0
+194	74.5	0
+195	74.5	0
+196	74.5	0
+197	74.5	0
+198	74.5	0
+199	74.5	0
+200	74.5	0
+201	74.5	0
+202	74.5	0
+203	74.5	0
+204	74.5	0
+205	74.5	0
+206	74.5	0
+207	74.5	0
+208	74.5	0
+209	74.5	0
+210	74.5	0
+211	74.5	0
+212	74.5	0
+213	74.5	0
+214	74.5	0
+215	74.5	0
+216	74.5	0
+217	74.5	0
+218	74.5	0
+219	74.5	0
+220	74.5	0
+221	74.5	0
+222	74.5	0
+223	74.5	0
+224	74.5	0
+225	74.5	0
+226	74.5	0
+227	74.5	0
+228	74.5	0
+229	74.5	0
+230	74.5	0
+231	74.5	0
+232	74.5	0
+233	74.5	0
+234	74.5	0
+235	74.5	0
+236	74.5	0
+237	74.5	0
+238	74.5	0
+239	74.5	0
+240	74.5	0
+241	74.5	0
+242	74.5	0
+243	74.5	0
+244	74.5	0
+245	74.5	0
+246	74.5	0
+247	74.5	0
+248	74.5	0
+249	74.5	0
+250	74.5	0
+251	74.5	0
+252	74.5	0
+253	74.5	0
+254	74.5	0
+255	74.5	0
+256	74.5	0
+257	74.5	0
+258	74.5	0
+259	74.5	0
+260	74.5	0
+261	74.5	0
+262	74.5	0
+263	74.5	0
+264	74.5	0
+265	74.5	0
+266	74.5	0
+267	74.5	0
+268	74.5	0
+269	74.5	0
+270	74.5	0
+271	74.5	0
+272	74.5	0
+273	74.5	0
+274	74.5	0
+275	74.5	0
+276	74.5	0
+277	74.5	0
+278	74.5	0
+279	74.5	0
+280	74.5	0
+281	74.5	0
+282	74.5	0
+283	74.5	0
+284	74.5	0
+285	74.5	0
+286	74.5	0
+287	74.5	0
+288	74.5	0
+289	74.5	0
+290	74.5	0
+291	74.5	0
+292	74.5	0
+293	74.5	0
+294	74.5	0
+295	74.5	0
+296	74.5	0
+297	74.5	0
+298	74.5	0
+299	74.5	0
+300	74.5	0
+301	74.5	0
+302	74.5	0
+303	74.5	0
+304	74.5	0
+305	74.5	0
+306	74.5	0
+307	74.5	0
+308	74.5	0
+309	74.5	0
+310	74.5	0
+311	74.5	0
+312	74.5	0
+313	74.5	0
+314	74.5	0
+315	74.5	0
+316	74.5	0
+317	74.5	0
+318	74.5	0
+319	74.5	0
+320	74.5	0
+321	74.5	0
+322	74.5	0
+323	74.5	0
+324	74.5	0
+325	74.5	0
+326	74.5	0
+327	74.5	0
+328	74.5	0
+329	74.5	0
+330	74.5	0
+331	74.5	0
+332	74.5	0
+333	74.5	0
+334	74.5	0
+335	74.5	0
+336	74.5	0
+337	74.5	0
+338	74.5	0
+339	74.5	0
+340	74.5	0
+341	74.5	0
+342	74.5	0
+343	74.5	0
+344	74.5	0
+345	74.5	0
+346	74.5	0
+347	74.5	0
+348	74.5	0
+349	74.5	0
+350	74.5	0
+351	74.5	0
+352	74.5	0
+353	74.5	0
+354	74.5	0
+355	74.5	0
+356	74.5	0
+357	74.5	0
+358	74.5	0
+359	74.5	0
+360	74.5	0
+0	75	0
+1	75	0
+2	75	0
+3	75	0
+4	75	0
+5	75	0
+6	75	0
+7	75	0
+8	75	0
+9	75	0
+10	75	0
+11	75	0
+12	75	0
+13	75	0
+14	75	0
+15	75	0
+16	75	0
+17	75	0
+18	75	0
+19	75	0
+20	75	0
+21	75	0
+22	75	0
+23	75	0
+24	75	0
+25	75	0
+26	75	0
+27	75	0
+28	75	0
+29	75	0
+30	75	0
+31	75	0
+32	75	0
+33	75	0
+34	75	0
+35	75	0
+36	75	0
+37	75	0
+38	75	0
+39	75	0
+40	75	0
+41	75	0
+42	75	0
+43	75	0
+44	75	0
+45	75	0
+46	75	0
+47	75	0
+48	75	0
+49	75	0
+50	75	0
+51	75	0
+52	75	0
+53	75	0
+54	75	0
+55	75	0
+56	75	0
+57	75	0
+58	75	0
+59	75	0
+60	75	0
+61	75	0
+62	75	0
+63	75	0
+64	75	0
+65	75	0
+66	75	0
+67	75	0
+68	75	0
+69	75	0
+70	75	0
+71	75	0
+72	75	0
+73	75	0
+74	75	0
+75	75	0
+76	75	0
+77	75	0
+78	75	0
+79	75	0
+80	75	0
+81	75	0
+82	75	0
+83	75	0
+84	75	0
+85	75	0
+86	75	0
+87	75	0
+88	75	0
+89	75	0
+90	75	0
+91	75	0
+92	75	0
+93	75	0
+94	75	0
+95	75	0
+96	75	0
+97	75	0
+98	75	0
+99	75	0
+100	75	0
+101	75	0
+102	75	0
+103	75	0
+104	75	0
+105	75	0
+106	75	0
+107	75	0
+108	75	0
+109	75	0
+110	75	0
+111	75	0
+112	75	0
+113	75	0
+114	75	0
+115	75	0
+116	75	0
+117	75	0
+118	75	0
+119	75	0
+120	75	0
+121	75	0
+122	75	0
+123	75	0
+124	75	0
+125	75	0
+126	75	0
+127	75	0
+128	75	0
+129	75	0
+130	75	0
+131	75	0
+132	75	0
+133	75	0
+134	75	0
+135	75	0
+136	75	0
+137	75	0
+138	75	0
+139	75	0
+140	75	0
+141	75	0
+142	75	0
+143	75	0
+144	75	0
+145	75	0
+146	75	0
+147	75	0
+148	75	0
+149	75	0
+150	75	0
+151	75	0
+152	75	0
+153	75	0
+154	75	0
+155	75	0
+156	75	0
+157	75	0
+158	75	0
+159	75	0
+160	75	0
+161	75	0
+162	75	0
+163	75	0
+164	75	0
+165	75	0
+166	75	0
+167	75	0
+168	75	0
+169	75	0
+170	75	0
+171	75	0
+172	75	0
+173	75	0
+174	75	0
+175	75	0
+176	75	0
+177	75	0
+178	75	0
+179	75	0
+180	75	0
+181	75	0
+182	75	0
+183	75	0
+184	75	0
+185	75	0
+186	75	0
+187	75	0
+188	75	0
+189	75	0
+190	75	0
+191	75	0
+192	75	0
+193	75	0
+194	75	0
+195	75	0
+196	75	0
+197	75	0
+198	75	0
+199	75	0
+200	75	0
+201	75	0
+202	75	0
+203	75	0
+204	75	0
+205	75	0
+206	75	0
+207	75	0
+208	75	0
+209	75	0
+210	75	0
+211	75	0
+212	75	0
+213	75	0
+214	75	0
+215	75	0
+216	75	0
+217	75	0
+218	75	0
+219	75	0
+220	75	0
+221	75	0
+222	75	0
+223	75	0
+224	75	0
+225	75	0
+226	75	0
+227	75	0
+228	75	0
+229	75	0
+230	75	0
+231	75	0
+232	75	0
+233	75	0
+234	75	0
+235	75	0
+236	75	0
+237	75	0
+238	75	0
+239	75	0
+240	75	0
+241	75	0
+242	75	0
+243	75	0
+244	75	0
+245	75	0
+246	75	0
+247	75	0
+248	75	0
+249	75	0
+250	75	0
+251	75	0
+252	75	0
+253	75	0
+254	75	0
+255	75	0
+256	75	0
+257	75	0
+258	75	0
+259	75	0
+260	75	0
+261	75	0
+262	75	0
+263	75	0
+264	75	0
+265	75	0
+266	75	0
+267	75	0
+268	75	0
+269	75	0
+270	75	0
+271	75	0
+272	75	0
+273	75	0
+274	75	0
+275	75	0
+276	75	0
+277	75	0
+278	75	0
+279	75	0
+280	75	0
+281	75	0
+282	75	0
+283	75	0
+284	75	0
+285	75	0
+286	75	0
+287	75	0
+288	75	0
+289	75	0
+290	75	0
+291	75	0
+292	75	0
+293	75	0
+294	75	0
+295	75	0
+296	75	0
+297	75	0
+298	75	0
+299	75	0
+300	75	0
+301	75	0
+302	75	0
+303	75	0
+304	75	0
+305	75	0
+306	75	0
+307	75	0
+308	75	0
+309	75	0
+310	75	0
+311	75	0
+312	75	0
+313	75	0
+314	75	0
+315	75	0
+316	75	0
+317	75	0
+318	75	0
+319	75	0
+320	75	0
+321	75	0
+322	75	0
+323	75	0
+324	75	0
+325	75	0
+326	75	0
+327	75	0
+328	75	0
+329	75	0
+330	75	0
+331	75	0
+332	75	0
+333	75	0
+334	75	0
+335	75	0
+336	75	0
+337	75	0
+338	75	0
+339	75	0
+340	75	0
+341	75	0
+342	75	0
+343	75	0
+344	75	0
+345	75	0
+346	75	0
+347	75	0
+348	75	0
+349	75	0
+350	75	0
+351	75	0
+352	75	0
+353	75	0
+354	75	0
+355	75	0
+356	75	0
+357	75	0
+358	75	0
+359	75	0
+360	75	0
+0	75.5	0
+1	75.5	0
+2	75.5	0
+3	75.5	0
+4	75.5	0
+5	75.5	0
+6	75.5	0
+7	75.5	0
+8	75.5	0
+9	75.5	0
+10	75.5	0
+11	75.5	0
+12	75.5	0
+13	75.5	0
+14	75.5	0
+15	75.5	0
+16	75.5	0
+17	75.5	0
+18	75.5	0
+19	75.5	0
+20	75.5	0
+21	75.5	0
+22	75.5	0
+23	75.5	0
+24	75.5	0
+25	75.5	0
+26	75.5	0
+27	75.5	0
+28	75.5	0
+29	75.5	0
+30	75.5	0
+31	75.5	0
+32	75.5	0
+33	75.5	0
+34	75.5	0
+35	75.5	0
+36	75.5	0
+37	75.5	0
+38	75.5	0
+39	75.5	0
+40	75.5	0
+41	75.5	0
+42	75.5	0
+43	75.5	0
+44	75.5	0
+45	75.5	0
+46	75.5	0
+47	75.5	0
+48	75.5	0
+49	75.5	0
+50	75.5	0
+51	75.5	0
+52	75.5	0
+53	75.5	0
+54	75.5	0
+55	75.5	0
+56	75.5	0
+57	75.5	0
+58	75.5	0
+59	75.5	0
+60	75.5	0
+61	75.5	0
+62	75.5	0
+63	75.5	0
+64	75.5	0
+65	75.5	0
+66	75.5	0
+67	75.5	0
+68	75.5	0
+69	75.5	0
+70	75.5	0
+71	75.5	0
+72	75.5	0
+73	75.5	0
+74	75.5	0
+75	75.5	0
+76	75.5	0
+77	75.5	0
+78	75.5	0
+79	75.5	0
+80	75.5	0
+81	75.5	0
+82	75.5	0
+83	75.5	0
+84	75.5	0
+85	75.5	0
+86	75.5	0
+87	75.5	0
+88	75.5	0
+89	75.5	0
+90	75.5	0
+91	75.5	0
+92	75.5	0
+93	75.5	0
+94	75.5	0
+95	75.5	0
+96	75.5	0
+97	75.5	0
+98	75.5	0
+99	75.5	0
+100	75.5	0
+101	75.5	0
+102	75.5	0
+103	75.5	0
+104	75.5	0
+105	75.5	0
+106	75.5	0
+107	75.5	0
+108	75.5	0
+109	75.5	0
+110	75.5	0
+111	75.5	0
+112	75.5	0
+113	75.5	0
+114	75.5	0
+115	75.5	0
+116	75.5	0
+117	75.5	0
+118	75.5	0
+119	75.5	0
+120	75.5	0
+121	75.5	0
+122	75.5	0
+123	75.5	0
+124	75.5	0
+125	75.5	0
+126	75.5	0
+127	75.5	0
+128	75.5	0
+129	75.5	0
+130	75.5	0
+131	75.5	0
+132	75.5	0
+133	75.5	0
+134	75.5	0
+135	75.5	0
+136	75.5	0
+137	75.5	0
+138	75.5	0
+139	75.5	0
+140	75.5	0
+141	75.5	0
+142	75.5	0
+143	75.5	0
+144	75.5	0
+145	75.5	0
+146	75.5	0
+147	75.5	0
+148	75.5	0
+149	75.5	0
+150	75.5	0
+151	75.5	0
+152	75.5	0
+153	75.5	0
+154	75.5	0
+155	75.5	0
+156	75.5	0
+157	75.5	0
+158	75.5	0
+159	75.5	0
+160	75.5	0
+161	75.5	0
+162	75.5	0
+163	75.5	0
+164	75.5	0
+165	75.5	0
+166	75.5	0
+167	75.5	0
+168	75.5	0
+169	75.5	0
+170	75.5	0
+171	75.5	0
+172	75.5	0
+173	75.5	0
+174	75.5	0
+175	75.5	0
+176	75.5	0
+177	75.5	0
+178	75.5	0
+179	75.5	0
+180	75.5	0
+181	75.5	0
+182	75.5	0
+183	75.5	0
+184	75.5	0
+185	75.5	0
+186	75.5	0
+187	75.5	0
+188	75.5	0
+189	75.5	0
+190	75.5	0
+191	75.5	0
+192	75.5	0
+193	75.5	0
+194	75.5	0
+195	75.5	0
+196	75.5	0
+197	75.5	0
+198	75.5	0
+199	75.5	0
+200	75.5	0
+201	75.5	0
+202	75.5	0
+203	75.5	0
+204	75.5	0
+205	75.5	0
+206	75.5	0
+207	75.5	0
+208	75.5	0
+209	75.5	0
+210	75.5	0
+211	75.5	0
+212	75.5	0
+213	75.5	0
+214	75.5	0
+215	75.5	0
+216	75.5	0
+217	75.5	0
+218	75.5	0
+219	75.5	0
+220	75.5	0
+221	75.5	0
+222	75.5	0
+223	75.5	0
+224	75.5	0
+225	75.5	0
+226	75.5	0
+227	75.5	0
+228	75.5	0
+229	75.5	0
+230	75.5	0
+231	75.5	0
+232	75.5	0
+233	75.5	0
+234	75.5	0
+235	75.5	0
+236	75.5	0
+237	75.5	0
+238	75.5	0
+239	75.5	0
+240	75.5	0
+241	75.5	0
+242	75.5	0
+243	75.5	0
+244	75.5	0
+245	75.5	0
+246	75.5	0
+247	75.5	0
+248	75.5	0
+249	75.5	0
+250	75.5	0
+251	75.5	0
+252	75.5	0
+253	75.5	0
+254	75.5	0
+255	75.5	0
+256	75.5	0
+257	75.5	0
+258	75.5	0
+259	75.5	0
+260	75.5	0
+261	75.5	0
+262	75.5	0
+263	75.5	0
+264	75.5	0
+265	75.5	0
+266	75.5	0
+267	75.5	0
+268	75.5	0
+269	75.5	0
+270	75.5	0
+271	75.5	0
+272	75.5	0
+273	75.5	0
+274	75.5	0
+275	75.5	0
+276	75.5	0
+277	75.5	0
+278	75.5	0
+279	75.5	0
+280	75.5	0
+281	75.5	0
+282	75.5	0
+283	75.5	0
+284	75.5	0
+285	75.5	0
+286	75.5	0
+287	75.5	0
+288	75.5	0
+289	75.5	0
+290	75.5	0
+291	75.5	0
+292	75.5	0
+293	75.5	0
+294	75.5	0
+295	75.5	0
+296	75.5	0
+297	75.5	0
+298	75.5	0
+299	75.5	0
+300	75.5	0
+301	75.5	0
+302	75.5	0
+303	75.5	0
+304	75.5	0
+305	75.5	0
+306	75.5	0
+307	75.5	0
+308	75.5	0
+309	75.5	0
+310	75.5	0
+311	75.5	0
+312	75.5	0
+313	75.5	0
+314	75.5	0
+315	75.5	0
+316	75.5	0
+317	75.5	0
+318	75.5	0
+319	75.5	0
+320	75.5	0
+321	75.5	0
+322	75.5	0
+323	75.5	0
+324	75.5	0
+325	75.5	0
+326	75.5	0
+327	75.5	0
+328	75.5	0
+329	75.5	0
+330	75.5	0
+331	75.5	0
+332	75.5	0
+333	75.5	0
+334	75.5	0
+335	75.5	0
+336	75.5	0
+337	75.5	0
+338	75.5	0
+339	75.5	0
+340	75.5	0
+341	75.5	0
+342	75.5	0
+343	75.5	0
+344	75.5	0
+345	75.5	0
+346	75.5	0
+347	75.5	0
+348	75.5	0
+349	75.5	0
+350	75.5	0
+351	75.5	0
+352	75.5	0
+353	75.5	0
+354	75.5	0
+355	75.5	0
+356	75.5	0
+357	75.5	0
+358	75.5	0
+359	75.5	0
+360	75.5	0
+0	76	0
+1	76	0
+2	76	0
+3	76	0
+4	76	0
+5	76	0
+6	76	0
+7	76	0
+8	76	0
+9	76	0
+10	76	0
+11	76	0
+12	76	0
+13	76	0
+14	76	0
+15	76	0
+16	76	0
+17	76	0
+18	76	0
+19	76	0
+20	76	0
+21	76	0
+22	76	0
+23	76	0
+24	76	0
+25	76	0
+26	76	0
+27	76	0
+28	76	0
+29	76	0
+30	76	0
+31	76	0
+32	76	0
+33	76	0
+34	76	0
+35	76	0
+36	76	0
+37	76	0
+38	76	0
+39	76	0
+40	76	0
+41	76	0
+42	76	0
+43	76	0
+44	76	0
+45	76	0
+46	76	0
+47	76	0
+48	76	0
+49	76	0
+50	76	0
+51	76	0
+52	76	0
+53	76	0
+54	76	0
+55	76	0
+56	76	0
+57	76	0
+58	76	0
+59	76	0
+60	76	0
+61	76	0
+62	76	0
+63	76	0
+64	76	0
+65	76	0
+66	76	0
+67	76	0
+68	76	0
+69	76	0
+70	76	0
+71	76	0
+72	76	0
+73	76	0
+74	76	0
+75	76	0
+76	76	0
+77	76	0
+78	76	0
+79	76	0
+80	76	0
+81	76	0
+82	76	0
+83	76	0
+84	76	0
+85	76	0
+86	76	0
+87	76	0
+88	76	0
+89	76	0
+90	76	0
+91	76	0
+92	76	0
+93	76	0
+94	76	0
+95	76	0
+96	76	0
+97	76	0
+98	76	0
+99	76	0
+100	76	0
+101	76	0
+102	76	0
+103	76	0
+104	76	0
+105	76	0
+106	76	0
+107	76	0
+108	76	0
+109	76	0
+110	76	0
+111	76	0
+112	76	0
+113	76	0
+114	76	0
+115	76	0
+116	76	0
+117	76	0
+118	76	0
+119	76	0
+120	76	0
+121	76	0
+122	76	0
+123	76	0
+124	76	0
+125	76	0
+126	76	0
+127	76	0
+128	76	0
+129	76	0
+130	76	0
+131	76	0
+132	76	0
+133	76	0
+134	76	0
+135	76	0
+136	76	0
+137	76	0
+138	76	0
+139	76	0
+140	76	0
+141	76	0
+142	76	0
+143	76	0
+144	76	0
+145	76	0
+146	76	0
+147	76	0
+148	76	0
+149	76	0
+150	76	0
+151	76	0
+152	76	0
+153	76	0
+154	76	0
+155	76	0
+156	76	0
+157	76	0
+158	76	0
+159	76	0
+160	76	0
+161	76	0
+162	76	0
+163	76	0
+164	76	0
+165	76	0
+166	76	0
+167	76	0
+168	76	0
+169	76	0
+170	76	0
+171	76	0
+172	76	0
+173	76	0
+174	76	0
+175	76	0
+176	76	0
+177	76	0
+178	76	0
+179	76	0
+180	76	0
+181	76	0
+182	76	0
+183	76	0
+184	76	0
+185	76	0
+186	76	0
+187	76	0
+188	76	0
+189	76	0
+190	76	0
+191	76	0
+192	76	0
+193	76	0
+194	76	0
+195	76	0
+196	76	0
+197	76	0
+198	76	0
+199	76	0
+200	76	0
+201	76	0
+202	76	0
+203	76	0
+204	76	0
+205	76	0
+206	76	0
+207	76	0
+208	76	0
+209	76	0
+210	76	0
+211	76	0
+212	76	0
+213	76	0
+214	76	0
+215	76	0
+216	76	0
+217	76	0
+218	76	0
+219	76	0
+220	76	0
+221	76	0
+222	76	0
+223	76	0
+224	76	0
+225	76	0
+226	76	0
+227	76	0
+228	76	0
+229	76	0
+230	76	0
+231	76	0
+232	76	0
+233	76	0
+234	76	0
+235	76	0
+236	76	0
+237	76	0
+238	76	0
+239	76	0
+240	76	0
+241	76	0
+242	76	0
+243	76	0
+244	76	0
+245	76	0
+246	76	0
+247	76	0
+248	76	0
+249	76	0
+250	76	0
+251	76	0
+252	76	0
+253	76	0
+254	76	0
+255	76	0
+256	76	0
+257	76	0
+258	76	0
+259	76	0
+260	76	0
+261	76	0
+262	76	0
+263	76	0
+264	76	0
+265	76	0
+266	76	0
+267	76	0
+268	76	0
+269	76	0
+270	76	0
+271	76	0
+272	76	0
+273	76	0
+274	76	0
+275	76	0
+276	76	0
+277	76	0
+278	76	0
+279	76	0
+280	76	0
+281	76	0
+282	76	0
+283	76	0
+284	76	0
+285	76	0
+286	76	0
+287	76	0
+288	76	0
+289	76	0
+290	76	0
+291	76	0
+292	76	0
+293	76	0
+294	76	0
+295	76	0
+296	76	0
+297	76	0
+298	76	0
+299	76	0
+300	76	0
+301	76	0
+302	76	0
+303	76	0
+304	76	0
+305	76	0
+306	76	0
+307	76	0
+308	76	0
+309	76	0
+310	76	0
+311	76	0
+312	76	0
+313	76	0
+314	76	0
+315	76	0
+316	76	0
+317	76	0
+318	76	0
+319	76	0
+320	76	0
+321	76	0
+322	76	0
+323	76	0
+324	76	0
+325	76	0
+326	76	0
+327	76	0
+328	76	0
+329	76	0
+330	76	0
+331	76	0
+332	76	0
+333	76	0
+334	76	0
+335	76	0
+336	76	0
+337	76	0
+338	76	0
+339	76	0
+340	76	0
+341	76	0
+342	76	0
+343	76	0
+344	76	0
+345	76	0
+346	76	0
+347	76	0
+348	76	0
+349	76	0
+350	76	0
+351	76	0
+352	76	0
+353	76	0
+354	76	0
+355	76	0
+356	76	0
+357	76	0
+358	76	0
+359	76	0
+360	76	0
+0	76.5	0
+1	76.5	0
+2	76.5	0
+3	76.5	0
+4	76.5	0
+5	76.5	0
+6	76.5	0
+7	76.5	0
+8	76.5	0
+9	76.5	0
+10	76.5	0
+11	76.5	0
+12	76.5	0
+13	76.5	0
+14	76.5	0
+15	76.5	0
+16	76.5	0
+17	76.5	0
+18	76.5	0
+19	76.5	0
+20	76.5	0
+21	76.5	0
+22	76.5	0
+23	76.5	0
+24	76.5	0
+25	76.5	0
+26	76.5	0
+27	76.5	0
+28	76.5	0
+29	76.5	0
+30	76.5	0
+31	76.5	0
+32	76.5	0
+33	76.5	0
+34	76.5	0
+35	76.5	0
+36	76.5	0
+37	76.5	0
+38	76.5	0
+39	76.5	0
+40	76.5	0
+41	76.5	0
+42	76.5	0
+43	76.5	0
+44	76.5	0
+45	76.5	0
+46	76.5	0
+47	76.5	0
+48	76.5	0
+49	76.5	0
+50	76.5	0
+51	76.5	0
+52	76.5	0
+53	76.5	0
+54	76.5	0
+55	76.5	0
+56	76.5	0
+57	76.5	0
+58	76.5	0
+59	76.5	0
+60	76.5	0
+61	76.5	0
+62	76.5	0
+63	76.5	0
+64	76.5	0
+65	76.5	0
+66	76.5	0
+67	76.5	0
+68	76.5	0
+69	76.5	0
+70	76.5	0
+71	76.5	0
+72	76.5	0
+73	76.5	0
+74	76.5	0
+75	76.5	0
+76	76.5	0
+77	76.5	0
+78	76.5	0
+79	76.5	0
+80	76.5	0
+81	76.5	0
+82	76.5	0
+83	76.5	0
+84	76.5	0
+85	76.5	0
+86	76.5	0
+87	76.5	0
+88	76.5	0
+89	76.5	0
+90	76.5	0
+91	76.5	0
+92	76.5	0
+93	76.5	0
+94	76.5	0
+95	76.5	0
+96	76.5	0
+97	76.5	0
+98	76.5	0
+99	76.5	0
+100	76.5	0
+101	76.5	0
+102	76.5	0
+103	76.5	0
+104	76.5	0
+105	76.5	0
+106	76.5	0
+107	76.5	0
+108	76.5	0
+109	76.5	0
+110	76.5	0
+111	76.5	0
+112	76.5	0
+113	76.5	0
+114	76.5	0
+115	76.5	0
+116	76.5	0
+117	76.5	0
+118	76.5	0
+119	76.5	0
+120	76.5	0
+121	76.5	0
+122	76.5	0
+123	76.5	0
+124	76.5	0
+125	76.5	0
+126	76.5	0
+127	76.5	0
+128	76.5	0
+129	76.5	0
+130	76.5	0
+131	76.5	0
+132	76.5	0
+133	76.5	0
+134	76.5	0
+135	76.5	0
+136	76.5	0
+137	76.5	0
+138	76.5	0
+139	76.5	0
+140	76.5	0
+141	76.5	0
+142	76.5	0
+143	76.5	0
+144	76.5	0
+145	76.5	0
+146	76.5	0
+147	76.5	0
+148	76.5	0
+149	76.5	0
+150	76.5	0
+151	76.5	0
+152	76.5	0
+153	76.5	0
+154	76.5	0
+155	76.5	0
+156	76.5	0
+157	76.5	0
+158	76.5	0
+159	76.5	0
+160	76.5	0
+161	76.5	0
+162	76.5	0
+163	76.5	0
+164	76.5	0
+165	76.5	0
+166	76.5	0
+167	76.5	0
+168	76.5	0
+169	76.5	0
+170	76.5	0
+171	76.5	0
+172	76.5	0
+173	76.5	0
+174	76.5	0
+175	76.5	0
+176	76.5	0
+177	76.5	0
+178	76.5	0
+179	76.5	0
+180	76.5	0
+181	76.5	0
+182	76.5	0
+183	76.5	0
+184	76.5	0
+185	76.5	0
+186	76.5	0
+187	76.5	0
+188	76.5	0
+189	76.5	0
+190	76.5	0
+191	76.5	0
+192	76.5	0
+193	76.5	0
+194	76.5	0
+195	76.5	0
+196	76.5	0
+197	76.5	0
+198	76.5	0
+199	76.5	0
+200	76.5	0
+201	76.5	0
+202	76.5	0
+203	76.5	0
+204	76.5	0
+205	76.5	0
+206	76.5	0
+207	76.5	0
+208	76.5	0
+209	76.5	0
+210	76.5	0
+211	76.5	0
+212	76.5	0
+213	76.5	0
+214	76.5	0
+215	76.5	0
+216	76.5	0
+217	76.5	0
+218	76.5	0
+219	76.5	0
+220	76.5	0
+221	76.5	0
+222	76.5	0
+223	76.5	0
+224	76.5	0
+225	76.5	0
+226	76.5	0
+227	76.5	0
+228	76.5	0
+229	76.5	0
+230	76.5	0
+231	76.5	0
+232	76.5	0
+233	76.5	0
+234	76.5	0
+235	76.5	0
+236	76.5	0
+237	76.5	0
+238	76.5	0
+239	76.5	0
+240	76.5	0
+241	76.5	0
+242	76.5	0
+243	76.5	0
+244	76.5	0
+245	76.5	0
+246	76.5	0
+247	76.5	0
+248	76.5	0
+249	76.5	0
+250	76.5	0
+251	76.5	0
+252	76.5	0
+253	76.5	0
+254	76.5	0
+255	76.5	0
+256	76.5	0
+257	76.5	0
+258	76.5	0
+259	76.5	0
+260	76.5	0
+261	76.5	0
+262	76.5	0
+263	76.5	0
+264	76.5	0
+265	76.5	0
+266	76.5	0
+267	76.5	0
+268	76.5	0
+269	76.5	0
+270	76.5	0
+271	76.5	0
+272	76.5	0
+273	76.5	0
+274	76.5	0
+275	76.5	0
+276	76.5	0
+277	76.5	0
+278	76.5	0
+279	76.5	0
+280	76.5	0
+281	76.5	0
+282	76.5	0
+283	76.5	0
+284	76.5	0
+285	76.5	0
+286	76.5	0
+287	76.5	0
+288	76.5	0
+289	76.5	0
+290	76.5	0
+291	76.5	0
+292	76.5	0
+293	76.5	0
+294	76.5	0
+295	76.5	0
+296	76.5	0
+297	76.5	0
+298	76.5	0
+299	76.5	0
+300	76.5	0
+301	76.5	0
+302	76.5	0
+303	76.5	0
+304	76.5	0
+305	76.5	0
+306	76.5	0
+307	76.5	0
+308	76.5	0
+309	76.5	0
+310	76.5	0
+311	76.5	0
+312	76.5	0
+313	76.5	0
+314	76.5	0
+315	76.5	0
+316	76.5	0
+317	76.5	0
+318	76.5	0
+319	76.5	0
+320	76.5	0
+321	76.5	0
+322	76.5	0
+323	76.5	0
+324	76.5	0
+325	76.5	0
+326	76.5	0
+327	76.5	0
+328	76.5	0
+329	76.5	0
+330	76.5	0
+331	76.5	0
+332	76.5	0
+333	76.5	0
+334	76.5	0
+335	76.5	0
+336	76.5	0
+337	76.5	0
+338	76.5	0
+339	76.5	0
+340	76.5	0
+341	76.5	0
+342	76.5	0
+343	76.5	0
+344	76.5	0
+345	76.5	0
+346	76.5	0
+347	76.5	0
+348	76.5	0
+349	76.5	0
+350	76.5	0
+351	76.5	0
+352	76.5	0
+353	76.5	0
+354	76.5	0
+355	76.5	0
+356	76.5	0
+357	76.5	0
+358	76.5	0
+359	76.5	0
+360	76.5	0
+0	77	0
+1	77	0
+2	77	0
+3	77	0
+4	77	0
+5	77	0
+6	77	0
+7	77	0
+8	77	0
+9	77	0
+10	77	0
+11	77	0
+12	77	0
+13	77	0
+14	77	0
+15	77	0
+16	77	0
+17	77	0
+18	77	0
+19	77	0
+20	77	0
+21	77	0
+22	77	0
+23	77	0
+24	77	0
+25	77	0
+26	77	0
+27	77	0
+28	77	0
+29	77	0
+30	77	0
+31	77	0
+32	77	0
+33	77	0
+34	77	0
+35	77	0
+36	77	0
+37	77	0
+38	77	0
+39	77	0
+40	77	0
+41	77	0
+42	77	0
+43	77	0
+44	77	0
+45	77	0
+46	77	0
+47	77	0
+48	77	0
+49	77	0
+50	77	0
+51	77	0
+52	77	0
+53	77	0
+54	77	0
+55	77	0
+56	77	0
+57	77	0
+58	77	0
+59	77	0
+60	77	0
+61	77	0
+62	77	0
+63	77	0
+64	77	0
+65	77	0
+66	77	0
+67	77	0
+68	77	0
+69	77	0
+70	77	0
+71	77	0
+72	77	0
+73	77	0
+74	77	0
+75	77	0
+76	77	0
+77	77	0
+78	77	0
+79	77	0
+80	77	0
+81	77	0
+82	77	0
+83	77	0
+84	77	0
+85	77	0
+86	77	0
+87	77	0
+88	77	0
+89	77	0
+90	77	0
+91	77	0
+92	77	0
+93	77	0
+94	77	0
+95	77	0
+96	77	0
+97	77	0
+98	77	0
+99	77	0
+100	77	0
+101	77	0
+102	77	0
+103	77	0
+104	77	0
+105	77	0
+106	77	0
+107	77	0
+108	77	0
+109	77	0
+110	77	0
+111	77	0
+112	77	0
+113	77	0
+114	77	0
+115	77	0
+116	77	0
+117	77	0
+118	77	0
+119	77	0
+120	77	0
+121	77	0
+122	77	0
+123	77	0
+124	77	0
+125	77	0
+126	77	0
+127	77	0
+128	77	0
+129	77	0
+130	77	0
+131	77	0
+132	77	0
+133	77	0
+134	77	0
+135	77	0
+136	77	0
+137	77	0
+138	77	0
+139	77	0
+140	77	0
+141	77	0
+142	77	0
+143	77	0
+144	77	0
+145	77	0
+146	77	0
+147	77	0
+148	77	0
+149	77	0
+150	77	0
+151	77	0
+152	77	0
+153	77	0
+154	77	0
+155	77	0
+156	77	0
+157	77	0
+158	77	0
+159	77	0
+160	77	0
+161	77	0
+162	77	0
+163	77	0
+164	77	0
+165	77	0
+166	77	0
+167	77	0
+168	77	0
+169	77	0
+170	77	0
+171	77	0
+172	77	0
+173	77	0
+174	77	0
+175	77	0
+176	77	0
+177	77	0
+178	77	0
+179	77	0
+180	77	0
+181	77	0
+182	77	0
+183	77	0
+184	77	0
+185	77	0
+186	77	0
+187	77	0
+188	77	0
+189	77	0
+190	77	0
+191	77	0
+192	77	0
+193	77	0
+194	77	0
+195	77	0
+196	77	0
+197	77	0
+198	77	0
+199	77	0
+200	77	0
+201	77	0
+202	77	0
+203	77	0
+204	77	0
+205	77	0
+206	77	0
+207	77	0
+208	77	0
+209	77	0
+210	77	0
+211	77	0
+212	77	0
+213	77	0
+214	77	0
+215	77	0
+216	77	0
+217	77	0
+218	77	0
+219	77	0
+220	77	0
+221	77	0
+222	77	0
+223	77	0
+224	77	0
+225	77	0
+226	77	0
+227	77	0
+228	77	0
+229	77	0
+230	77	0
+231	77	0
+232	77	0
+233	77	0
+234	77	0
+235	77	0
+236	77	0
+237	77	0
+238	77	0
+239	77	0
+240	77	0
+241	77	0
+242	77	0
+243	77	0
+244	77	0
+245	77	0
+246	77	0
+247	77	0
+248	77	0
+249	77	0
+250	77	0
+251	77	0
+252	77	0
+253	77	0
+254	77	0
+255	77	0
+256	77	0
+257	77	0
+258	77	0
+259	77	0
+260	77	0
+261	77	0
+262	77	0
+263	77	0
+264	77	0
+265	77	0
+266	77	0
+267	77	0
+268	77	0
+269	77	0
+270	77	0
+271	77	0
+272	77	0
+273	77	0
+274	77	0
+275	77	0
+276	77	0
+277	77	0
+278	77	0
+279	77	0
+280	77	0
+281	77	0
+282	77	0
+283	77	0
+284	77	0
+285	77	0
+286	77	0
+287	77	0
+288	77	0
+289	77	0
+290	77	0
+291	77	0
+292	77	0
+293	77	0
+294	77	0
+295	77	0
+296	77	0
+297	77	0
+298	77	0
+299	77	0
+300	77	0
+301	77	0
+302	77	0
+303	77	0
+304	77	0
+305	77	0
+306	77	0
+307	77	0
+308	77	0
+309	77	0
+310	77	0
+311	77	0
+312	77	0
+313	77	0
+314	77	0
+315	77	0
+316	77	0
+317	77	0
+318	77	0
+319	77	0
+320	77	0
+321	77	0
+322	77	0
+323	77	0
+324	77	0
+325	77	0
+326	77	0
+327	77	0
+328	77	0
+329	77	0
+330	77	0
+331	77	0
+332	77	0
+333	77	0
+334	77	0
+335	77	0
+336	77	0
+337	77	0
+338	77	0
+339	77	0
+340	77	0
+341	77	0
+342	77	0
+343	77	0
+344	77	0
+345	77	0
+346	77	0
+347	77	0
+348	77	0
+349	77	0
+350	77	0
+351	77	0
+352	77	0
+353	77	0
+354	77	0
+355	77	0
+356	77	0
+357	77	0
+358	77	0
+359	77	0
+360	77	0
+0	77.5	0
+1	77.5	0
+2	77.5	0
+3	77.5	0
+4	77.5	0
+5	77.5	0
+6	77.5	0
+7	77.5	0
+8	77.5	0
+9	77.5	0
+10	77.5	0
+11	77.5	0
+12	77.5	0
+13	77.5	0
+14	77.5	0
+15	77.5	0
+16	77.5	0
+17	77.5	0
+18	77.5	0
+19	77.5	0
+20	77.5	0
+21	77.5	0
+22	77.5	0
+23	77.5	0
+24	77.5	0
+25	77.5	0
+26	77.5	0
+27	77.5	0
+28	77.5	0
+29	77.5	0
+30	77.5	0
+31	77.5	0
+32	77.5	0
+33	77.5	0
+34	77.5	0
+35	77.5	0
+36	77.5	0
+37	77.5	0
+38	77.5	0
+39	77.5	0
+40	77.5	0
+41	77.5	0
+42	77.5	0
+43	77.5	0
+44	77.5	0
+45	77.5	0
+46	77.5	0
+47	77.5	0
+48	77.5	0
+49	77.5	0
+50	77.5	0
+51	77.5	0
+52	77.5	0
+53	77.5	0
+54	77.5	0
+55	77.5	0
+56	77.5	0
+57	77.5	0
+58	77.5	0
+59	77.5	0
+60	77.5	0
+61	77.5	0
+62	77.5	0
+63	77.5	0
+64	77.5	0
+65	77.5	0
+66	77.5	0
+67	77.5	0
+68	77.5	0
+69	77.5	0
+70	77.5	0
+71	77.5	0
+72	77.5	0
+73	77.5	0
+74	77.5	0
+75	77.5	0
+76	77.5	0
+77	77.5	0
+78	77.5	0
+79	77.5	0
+80	77.5	0
+81	77.5	0
+82	77.5	0
+83	77.5	0
+84	77.5	0
+85	77.5	0
+86	77.5	0
+87	77.5	0
+88	77.5	0
+89	77.5	0
+90	77.5	0
+91	77.5	0
+92	77.5	0
+93	77.5	0
+94	77.5	0
+95	77.5	0
+96	77.5	0
+97	77.5	0
+98	77.5	0
+99	77.5	0
+100	77.5	0
+101	77.5	0
+102	77.5	0
+103	77.5	0
+104	77.5	0
+105	77.5	0
+106	77.5	0
+107	77.5	0
+108	77.5	0
+109	77.5	0
+110	77.5	0
+111	77.5	0
+112	77.5	0
+113	77.5	0
+114	77.5	0
+115	77.5	0
+116	77.5	0
+117	77.5	0
+118	77.5	0
+119	77.5	0
+120	77.5	0
+121	77.5	0
+122	77.5	0
+123	77.5	0
+124	77.5	0
+125	77.5	0
+126	77.5	0
+127	77.5	0
+128	77.5	0
+129	77.5	0
+130	77.5	0
+131	77.5	0
+132	77.5	0
+133	77.5	0
+134	77.5	0
+135	77.5	0
+136	77.5	0
+137	77.5	0
+138	77.5	0
+139	77.5	0
+140	77.5	0
+141	77.5	0
+142	77.5	0
+143	77.5	0
+144	77.5	0
+145	77.5	0
+146	77.5	0
+147	77.5	0
+148	77.5	0
+149	77.5	0
+150	77.5	0
+151	77.5	0
+152	77.5	0
+153	77.5	0
+154	77.5	0
+155	77.5	0
+156	77.5	0
+157	77.5	0
+158	77.5	0
+159	77.5	0
+160	77.5	0
+161	77.5	0
+162	77.5	0
+163	77.5	0
+164	77.5	0
+165	77.5	0
+166	77.5	0
+167	77.5	0
+168	77.5	0
+169	77.5	0
+170	77.5	0
+171	77.5	0
+172	77.5	0
+173	77.5	0
+174	77.5	0
+175	77.5	0
+176	77.5	0
+177	77.5	0
+178	77.5	0
+179	77.5	0
+180	77.5	0
+181	77.5	0
+182	77.5	0
+183	77.5	0
+184	77.5	0
+185	77.5	0
+186	77.5	0
+187	77.5	0
+188	77.5	0
+189	77.5	0
+190	77.5	0
+191	77.5	0
+192	77.5	0
+193	77.5	0
+194	77.5	0
+195	77.5	0
+196	77.5	0
+197	77.5	0
+198	77.5	0
+199	77.5	0
+200	77.5	0
+201	77.5	0
+202	77.5	0
+203	77.5	0
+204	77.5	0
+205	77.5	0
+206	77.5	0
+207	77.5	0
+208	77.5	0
+209	77.5	0
+210	77.5	0
+211	77.5	0
+212	77.5	0
+213	77.5	0
+214	77.5	0
+215	77.5	0
+216	77.5	0
+217	77.5	0
+218	77.5	0
+219	77.5	0
+220	77.5	0
+221	77.5	0
+222	77.5	0
+223	77.5	0
+224	77.5	0
+225	77.5	0
+226	77.5	0
+227	77.5	0
+228	77.5	0
+229	77.5	0
+230	77.5	0
+231	77.5	0
+232	77.5	0
+233	77.5	0
+234	77.5	0
+235	77.5	0
+236	77.5	0
+237	77.5	0
+238	77.5	0
+239	77.5	0
+240	77.5	0
+241	77.5	0
+242	77.5	0
+243	77.5	0
+244	77.5	0
+245	77.5	0
+246	77.5	0
+247	77.5	0
+248	77.5	0
+249	77.5	0
+250	77.5	0
+251	77.5	0
+252	77.5	0
+253	77.5	0
+254	77.5	0
+255	77.5	0
+256	77.5	0
+257	77.5	0
+258	77.5	0
+259	77.5	0
+260	77.5	0
+261	77.5	0
+262	77.5	0
+263	77.5	0
+264	77.5	0
+265	77.5	0
+266	77.5	0
+267	77.5	0
+268	77.5	0
+269	77.5	0
+270	77.5	0
+271	77.5	0
+272	77.5	0
+273	77.5	0
+274	77.5	0
+275	77.5	0
+276	77.5	0
+277	77.5	0
+278	77.5	0
+279	77.5	0
+280	77.5	0
+281	77.5	0
+282	77.5	0
+283	77.5	0
+284	77.5	0
+285	77.5	0
+286	77.5	0
+287	77.5	0
+288	77.5	0
+289	77.5	0
+290	77.5	0
+291	77.5	0
+292	77.5	0
+293	77.5	0
+294	77.5	0
+295	77.5	0
+296	77.5	0
+297	77.5	0
+298	77.5	0
+299	77.5	0
+300	77.5	0
+301	77.5	0
+302	77.5	0
+303	77.5	0
+304	77.5	0
+305	77.5	0
+306	77.5	0
+307	77.5	0
+308	77.5	0
+309	77.5	0
+310	77.5	0
+311	77.5	0
+312	77.5	0
+313	77.5	0
+314	77.5	0
+315	77.5	0
+316	77.5	0
+317	77.5	0
+318	77.5	0
+319	77.5	0
+320	77.5	0
+321	77.5	0
+322	77.5	0
+323	77.5	0
+324	77.5	0
+325	77.5	0
+326	77.5	0
+327	77.5	0
+328	77.5	0
+329	77.5	0
+330	77.5	0
+331	77.5	0
+332	77.5	0
+333	77.5	0
+334	77.5	0
+335	77.5	0
+336	77.5	0
+337	77.5	0
+338	77.5	0
+339	77.5	0
+340	77.5	0
+341	77.5	0
+342	77.5	0
+343	77.5	0
+344	77.5	0
+345	77.5	0
+346	77.5	0
+347	77.5	0
+348	77.5	0
+349	77.5	0
+350	77.5	0
+351	77.5	0
+352	77.5	0
+353	77.5	0
+354	77.5	0
+355	77.5	0
+356	77.5	0
+357	77.5	0
+358	77.5	0
+359	77.5	0
+360	77.5	0
+0	78	0
+1	78	0
+2	78	0
+3	78	0
+4	78	0
+5	78	0
+6	78	0
+7	78	0
+8	78	0
+9	78	0
+10	78	0
+11	78	0
+12	78	0
+13	78	0
+14	78	0
+15	78	0
+16	78	0
+17	78	0
+18	78	0
+19	78	0
+20	78	0
+21	78	0
+22	78	0
+23	78	0
+24	78	0
+25	78	0
+26	78	0
+27	78	0
+28	78	0
+29	78	0
+30	78	0
+31	78	0
+32	78	0
+33	78	0
+34	78	0
+35	78	0
+36	78	0
+37	78	0
+38	78	0
+39	78	0
+40	78	0
+41	78	0
+42	78	0
+43	78	0
+44	78	0
+45	78	0
+46	78	0
+47	78	0
+48	78	0
+49	78	0
+50	78	0
+51	78	0
+52	78	0
+53	78	0
+54	78	0
+55	78	0
+56	78	0
+57	78	0
+58	78	0
+59	78	0
+60	78	0
+61	78	0
+62	78	0
+63	78	0
+64	78	0
+65	78	0
+66	78	0
+67	78	0
+68	78	0
+69	78	0
+70	78	0
+71	78	0
+72	78	0
+73	78	0
+74	78	0
+75	78	0
+76	78	0
+77	78	0
+78	78	0
+79	78	0
+80	78	0
+81	78	0
+82	78	0
+83	78	0
+84	78	0
+85	78	0
+86	78	0
+87	78	0
+88	78	0
+89	78	0
+90	78	0
+91	78	0
+92	78	0
+93	78	0
+94	78	0
+95	78	0
+96	78	0
+97	78	0
+98	78	0
+99	78	0
+100	78	0
+101	78	0
+102	78	0
+103	78	0
+104	78	0
+105	78	0
+106	78	0
+107	78	0
+108	78	0
+109	78	0
+110	78	0
+111	78	0
+112	78	0
+113	78	0
+114	78	0
+115	78	0
+116	78	0
+117	78	0
+118	78	0
+119	78	0
+120	78	0
+121	78	0
+122	78	0
+123	78	0
+124	78	0
+125	78	0
+126	78	0
+127	78	0
+128	78	0
+129	78	0
+130	78	0
+131	78	0
+132	78	0
+133	78	0
+134	78	0
+135	78	0
+136	78	0
+137	78	0
+138	78	0
+139	78	0
+140	78	0
+141	78	0
+142	78	0
+143	78	0
+144	78	0
+145	78	0
+146	78	0
+147	78	0
+148	78	0
+149	78	0
+150	78	0
+151	78	0
+152	78	0
+153	78	0
+154	78	0
+155	78	0
+156	78	0
+157	78	0
+158	78	0
+159	78	0
+160	78	0
+161	78	0
+162	78	0
+163	78	0
+164	78	0
+165	78	0
+166	78	0
+167	78	0
+168	78	0
+169	78	0
+170	78	0
+171	78	0
+172	78	0
+173	78	0
+174	78	0
+175	78	0
+176	78	0
+177	78	0
+178	78	0
+179	78	0
+180	78	0
+181	78	0
+182	78	0
+183	78	0
+184	78	0
+185	78	0
+186	78	0
+187	78	0
+188	78	0
+189	78	0
+190	78	0
+191	78	0
+192	78	0
+193	78	0
+194	78	0
+195	78	0
+196	78	0
+197	78	0
+198	78	0
+199	78	0
+200	78	0
+201	78	0
+202	78	0
+203	78	0
+204	78	0
+205	78	0
+206	78	0
+207	78	0
+208	78	0
+209	78	0
+210	78	0
+211	78	0
+212	78	0
+213	78	0
+214	78	0
+215	78	0
+216	78	0
+217	78	0
+218	78	0
+219	78	0
+220	78	0
+221	78	0
+222	78	0
+223	78	0
+224	78	0
+225	78	0
+226	78	0
+227	78	0
+228	78	0
+229	78	0
+230	78	0
+231	78	0
+232	78	0
+233	78	0
+234	78	0
+235	78	0
+236	78	0
+237	78	0
+238	78	0
+239	78	0
+240	78	0
+241	78	0
+242	78	0
+243	78	0
+244	78	0
+245	78	0
+246	78	0
+247	78	0
+248	78	0
+249	78	0
+250	78	0
+251	78	0
+252	78	0
+253	78	0
+254	78	0
+255	78	0
+256	78	0
+257	78	0
+258	78	0
+259	78	0
+260	78	0
+261	78	0
+262	78	0
+263	78	0
+264	78	0
+265	78	0
+266	78	0
+267	78	0
+268	78	0
+269	78	0
+270	78	0
+271	78	0
+272	78	0
+273	78	0
+274	78	0
+275	78	0
+276	78	0
+277	78	0
+278	78	0
+279	78	0
+280	78	0
+281	78	0
+282	78	0
+283	78	0
+284	78	0
+285	78	0
+286	78	0
+287	78	0
+288	78	0
+289	78	0
+290	78	0
+291	78	0
+292	78	0
+293	78	0
+294	78	0
+295	78	0
+296	78	0
+297	78	0
+298	78	0
+299	78	0
+300	78	0
+301	78	0
+302	78	0
+303	78	0
+304	78	0
+305	78	0
+306	78	0
+307	78	0
+308	78	0
+309	78	0
+310	78	0
+311	78	0
+312	78	0
+313	78	0
+314	78	0
+315	78	0
+316	78	0
+317	78	0
+318	78	0
+319	78	0
+320	78	0
+321	78	0
+322	78	0
+323	78	0
+324	78	0
+325	78	0
+326	78	0
+327	78	0
+328	78	0
+329	78	0
+330	78	0
+331	78	0
+332	78	0
+333	78	0
+334	78	0
+335	78	0
+336	78	0
+337	78	0
+338	78	0
+339	78	0
+340	78	0
+341	78	0
+342	78	0
+343	78	0
+344	78	0
+345	78	0
+346	78	0
+347	78	0
+348	78	0
+349	78	0
+350	78	0
+351	78	0
+352	78	0
+353	78	0
+354	78	0
+355	78	0
+356	78	0
+357	78	0
+358	78	0
+359	78	0
+360	78	0
+0	78.5	0
+1	78.5	0
+2	78.5	0
+3	78.5	0
+4	78.5	0
+5	78.5	0
+6	78.5	0
+7	78.5	0
+8	78.5	0
+9	78.5	0
+10	78.5	0
+11	78.5	0
+12	78.5	0
+13	78.5	0
+14	78.5	0
+15	78.5	0
+16	78.5	0
+17	78.5	0
+18	78.5	0
+19	78.5	0
+20	78.5	0
+21	78.5	0
+22	78.5	0
+23	78.5	0
+24	78.5	0
+25	78.5	0
+26	78.5	0
+27	78.5	0
+28	78.5	0
+29	78.5	0
+30	78.5	0
+31	78.5	0
+32	78.5	0
+33	78.5	0
+34	78.5	0
+35	78.5	0
+36	78.5	0
+37	78.5	0
+38	78.5	0
+39	78.5	0
+40	78.5	0
+41	78.5	0
+42	78.5	0
+43	78.5	0
+44	78.5	0
+45	78.5	0
+46	78.5	0
+47	78.5	0
+48	78.5	0
+49	78.5	0
+50	78.5	0
+51	78.5	0
+52	78.5	0
+53	78.5	0
+54	78.5	0
+55	78.5	0
+56	78.5	0
+57	78.5	0
+58	78.5	0
+59	78.5	0
+60	78.5	0
+61	78.5	0
+62	78.5	0
+63	78.5	0
+64	78.5	0
+65	78.5	0
+66	78.5	0
+67	78.5	0
+68	78.5	0
+69	78.5	0
+70	78.5	0
+71	78.5	0
+72	78.5	0
+73	78.5	0
+74	78.5	0
+75	78.5	0
+76	78.5	0
+77	78.5	0
+78	78.5	0
+79	78.5	0
+80	78.5	0
+81	78.5	0
+82	78.5	0
+83	78.5	0
+84	78.5	0
+85	78.5	0
+86	78.5	0
+87	78.5	0
+88	78.5	0
+89	78.5	0
+90	78.5	0
+91	78.5	0
+92	78.5	0
+93	78.5	0
+94	78.5	0
+95	78.5	0
+96	78.5	0
+97	78.5	0
+98	78.5	0
+99	78.5	0
+100	78.5	0
+101	78.5	0
+102	78.5	0
+103	78.5	0
+104	78.5	0
+105	78.5	0
+106	78.5	0
+107	78.5	0
+108	78.5	0
+109	78.5	0
+110	78.5	0
+111	78.5	0
+112	78.5	0
+113	78.5	0
+114	78.5	0
+115	78.5	0
+116	78.5	0
+117	78.5	0
+118	78.5	0
+119	78.5	0
+120	78.5	0
+121	78.5	0
+122	78.5	0
+123	78.5	0
+124	78.5	0
+125	78.5	0
+126	78.5	0
+127	78.5	0
+128	78.5	0
+129	78.5	0
+130	78.5	0
+131	78.5	0
+132	78.5	0
+133	78.5	0
+134	78.5	0
+135	78.5	0
+136	78.5	0
+137	78.5	0
+138	78.5	0
+139	78.5	0
+140	78.5	0
+141	78.5	0
+142	78.5	0
+143	78.5	0
+144	78.5	0
+145	78.5	0
+146	78.5	0
+147	78.5	0
+148	78.5	0
+149	78.5	0
+150	78.5	0
+151	78.5	0
+152	78.5	0
+153	78.5	0
+154	78.5	0
+155	78.5	0
+156	78.5	0
+157	78.5	0
+158	78.5	0
+159	78.5	0
+160	78.5	0
+161	78.5	0
+162	78.5	0
+163	78.5	0
+164	78.5	0
+165	78.5	0
+166	78.5	0
+167	78.5	0
+168	78.5	0
+169	78.5	0
+170	78.5	0
+171	78.5	0
+172	78.5	0
+173	78.5	0
+174	78.5	0
+175	78.5	0
+176	78.5	0
+177	78.5	0
+178	78.5	0
+179	78.5	0
+180	78.5	0
+181	78.5	0
+182	78.5	0
+183	78.5	0
+184	78.5	0
+185	78.5	0
+186	78.5	0
+187	78.5	0
+188	78.5	0
+189	78.5	0
+190	78.5	0
+191	78.5	0
+192	78.5	0
+193	78.5	0
+194	78.5	0
+195	78.5	0
+196	78.5	0
+197	78.5	0
+198	78.5	0
+199	78.5	0
+200	78.5	0
+201	78.5	0
+202	78.5	0
+203	78.5	0
+204	78.5	0
+205	78.5	0
+206	78.5	0
+207	78.5	0
+208	78.5	0
+209	78.5	0
+210	78.5	0
+211	78.5	0
+212	78.5	0
+213	78.5	0
+214	78.5	0
+215	78.5	0
+216	78.5	0
+217	78.5	0
+218	78.5	0
+219	78.5	0
+220	78.5	0
+221	78.5	0
+222	78.5	0
+223	78.5	0
+224	78.5	0
+225	78.5	0
+226	78.5	0
+227	78.5	0
+228	78.5	0
+229	78.5	0
+230	78.5	0
+231	78.5	0
+232	78.5	0
+233	78.5	0
+234	78.5	0
+235	78.5	0
+236	78.5	0
+237	78.5	0
+238	78.5	0
+239	78.5	0
+240	78.5	0
+241	78.5	0
+242	78.5	0
+243	78.5	0
+244	78.5	0
+245	78.5	0
+246	78.5	0
+247	78.5	0
+248	78.5	0
+249	78.5	0
+250	78.5	0
+251	78.5	0
+252	78.5	0
+253	78.5	0
+254	78.5	0
+255	78.5	0
+256	78.5	0
+257	78.5	0
+258	78.5	0
+259	78.5	0
+260	78.5	0
+261	78.5	0
+262	78.5	0
+263	78.5	0
+264	78.5	0
+265	78.5	0
+266	78.5	0
+267	78.5	0
+268	78.5	0
+269	78.5	0
+270	78.5	0
+271	78.5	0
+272	78.5	0
+273	78.5	0
+274	78.5	0
+275	78.5	0
+276	78.5	0
+277	78.5	0
+278	78.5	0
+279	78.5	0
+280	78.5	0
+281	78.5	0
+282	78.5	0
+283	78.5	0
+284	78.5	0
+285	78.5	0
+286	78.5	0
+287	78.5	0
+288	78.5	0
+289	78.5	0
+290	78.5	0
+291	78.5	0
+292	78.5	0
+293	78.5	0
+294	78.5	0
+295	78.5	0
+296	78.5	0
+297	78.5	0
+298	78.5	0
+299	78.5	0
+300	78.5	0
+301	78.5	0
+302	78.5	0
+303	78.5	0
+304	78.5	0
+305	78.5	0
+306	78.5	0
+307	78.5	0
+308	78.5	0
+309	78.5	0
+310	78.5	0
+311	78.5	0
+312	78.5	0
+313	78.5	0
+314	78.5	0
+315	78.5	0
+316	78.5	0
+317	78.5	0
+318	78.5	0
+319	78.5	0
+320	78.5	0
+321	78.5	0
+322	78.5	0
+323	78.5	0
+324	78.5	0
+325	78.5	0
+326	78.5	0
+327	78.5	0
+328	78.5	0
+329	78.5	0
+330	78.5	0
+331	78.5	0
+332	78.5	0
+333	78.5	0
+334	78.5	0
+335	78.5	0
+336	78.5	0
+337	78.5	0
+338	78.5	0
+339	78.5	0
+340	78.5	0
+341	78.5	0
+342	78.5	0
+343	78.5	0
+344	78.5	0
+345	78.5	0
+346	78.5	0
+347	78.5	0
+348	78.5	0
+349	78.5	0
+350	78.5	0
+351	78.5	0
+352	78.5	0
+353	78.5	0
+354	78.5	0
+355	78.5	0
+356	78.5	0
+357	78.5	0
+358	78.5	0
+359	78.5	0
+360	78.5	0
+0	79	0
+1	79	0
+2	79	0
+3	79	0
+4	79	0
+5	79	0
+6	79	0
+7	79	0
+8	79	0
+9	79	0
+10	79	0
+11	79	0
+12	79	0
+13	79	0
+14	79	0
+15	79	0
+16	79	0
+17	79	0
+18	79	0
+19	79	0
+20	79	0
+21	79	0
+22	79	0
+23	79	0
+24	79	0
+25	79	0
+26	79	0
+27	79	0
+28	79	0
+29	79	0
+30	79	0
+31	79	0
+32	79	0
+33	79	0
+34	79	0
+35	79	0
+36	79	0
+37	79	0
+38	79	0
+39	79	0
+40	79	0
+41	79	0
+42	79	0
+43	79	0
+44	79	0
+45	79	0
+46	79	0
+47	79	0
+48	79	0
+49	79	0
+50	79	0
+51	79	0
+52	79	0
+53	79	0
+54	79	0
+55	79	0
+56	79	0
+57	79	0
+58	79	0
+59	79	0
+60	79	0
+61	79	0
+62	79	0
+63	79	0
+64	79	0
+65	79	0
+66	79	0
+67	79	0
+68	79	0
+69	79	0
+70	79	0
+71	79	0
+72	79	0
+73	79	0
+74	79	0
+75	79	0
+76	79	0
+77	79	0
+78	79	0
+79	79	0
+80	79	0
+81	79	0
+82	79	0
+83	79	0
+84	79	0
+85	79	0
+86	79	0
+87	79	0
+88	79	0
+89	79	0
+90	79	0
+91	79	0
+92	79	0
+93	79	0
+94	79	0
+95	79	0
+96	79	0
+97	79	0
+98	79	0
+99	79	0
+100	79	0
+101	79	0
+102	79	0
+103	79	0
+104	79	0
+105	79	0
+106	79	0
+107	79	0
+108	79	0
+109	79	0
+110	79	0
+111	79	0
+112	79	0
+113	79	0
+114	79	0
+115	79	0
+116	79	0
+117	79	0
+118	79	0
+119	79	0
+120	79	0
+121	79	0
+122	79	0
+123	79	0
+124	79	0
+125	79	0
+126	79	0
+127	79	0
+128	79	0
+129	79	0
+130	79	0
+131	79	0
+132	79	0
+133	79	0
+134	79	0
+135	79	0
+136	79	0
+137	79	0
+138	79	0
+139	79	0
+140	79	0
+141	79	0
+142	79	0
+143	79	0
+144	79	0
+145	79	0
+146	79	0
+147	79	0
+148	79	0
+149	79	0
+150	79	0
+151	79	0
+152	79	0
+153	79	0
+154	79	0
+155	79	0
+156	79	0
+157	79	0
+158	79	0
+159	79	0
+160	79	0
+161	79	0
+162	79	0
+163	79	0
+164	79	0
+165	79	0
+166	79	0
+167	79	0
+168	79	0
+169	79	0
+170	79	0
+171	79	0
+172	79	0
+173	79	0
+174	79	0
+175	79	0
+176	79	0
+177	79	0
+178	79	0
+179	79	0
+180	79	0
+181	79	0
+182	79	0
+183	79	0
+184	79	0
+185	79	0
+186	79	0
+187	79	0
+188	79	0
+189	79	0
+190	79	0
+191	79	0
+192	79	0
+193	79	0
+194	79	0
+195	79	0
+196	79	0
+197	79	0
+198	79	0
+199	79	0
+200	79	0
+201	79	0
+202	79	0
+203	79	0
+204	79	0
+205	79	0
+206	79	0
+207	79	0
+208	79	0
+209	79	0
+210	79	0
+211	79	0
+212	79	0
+213	79	0
+214	79	0
+215	79	0
+216	79	0
+217	79	0
+218	79	0
+219	79	0
+220	79	0
+221	79	0
+222	79	0
+223	79	0
+224	79	0
+225	79	0
+226	79	0
+227	79	0
+228	79	0
+229	79	0
+230	79	0
+231	79	0
+232	79	0
+233	79	0
+234	79	0
+235	79	0
+236	79	0
+237	79	0
+238	79	0
+239	79	0
+240	79	0
+241	79	0
+242	79	0
+243	79	0
+244	79	0
+245	79	0
+246	79	0
+247	79	0
+248	79	0
+249	79	0
+250	79	0
+251	79	0
+252	79	0
+253	79	0
+254	79	0
+255	79	0
+256	79	0
+257	79	0
+258	79	0
+259	79	0
+260	79	0
+261	79	0
+262	79	0
+263	79	0
+264	79	0
+265	79	0
+266	79	0
+267	79	0
+268	79	0
+269	79	0
+270	79	0
+271	79	0
+272	79	0
+273	79	0
+274	79	0
+275	79	0
+276	79	0
+277	79	0
+278	79	0
+279	79	0
+280	79	0
+281	79	0
+282	79	0
+283	79	0
+284	79	0
+285	79	0
+286	79	0
+287	79	0
+288	79	0
+289	79	0
+290	79	0
+291	79	0
+292	79	0
+293	79	0
+294	79	0
+295	79	0
+296	79	0
+297	79	0
+298	79	0
+299	79	0
+300	79	0
+301	79	0
+302	79	0
+303	79	0
+304	79	0
+305	79	0
+306	79	0
+307	79	0
+308	79	0
+309	79	0
+310	79	0
+311	79	0
+312	79	0
+313	79	0
+314	79	0
+315	79	0
+316	79	0
+317	79	0
+318	79	0
+319	79	0
+320	79	0
+321	79	0
+322	79	0
+323	79	0
+324	79	0
+325	79	0
+326	79	0
+327	79	0
+328	79	0
+329	79	0
+330	79	0
+331	79	0
+332	79	0
+333	79	0
+334	79	0
+335	79	0
+336	79	0
+337	79	0
+338	79	0
+339	79	0
+340	79	0
+341	79	0
+342	79	0
+343	79	0
+344	79	0
+345	79	0
+346	79	0
+347	79	0
+348	79	0
+349	79	0
+350	79	0
+351	79	0
+352	79	0
+353	79	0
+354	79	0
+355	79	0
+356	79	0
+357	79	0
+358	79	0
+359	79	0
+360	79	0
+0	79.5	0
+1	79.5	0
+2	79.5	0
+3	79.5	0
+4	79.5	0
+5	79.5	0
+6	79.5	0
+7	79.5	0
+8	79.5	0
+9	79.5	0
+10	79.5	0
+11	79.5	0
+12	79.5	0
+13	79.5	0
+14	79.5	0
+15	79.5	0
+16	79.5	0
+17	79.5	0
+18	79.5	0
+19	79.5	0
+20	79.5	0
+21	79.5	0
+22	79.5	0
+23	79.5	0
+24	79.5	0
+25	79.5	0
+26	79.5	0
+27	79.5	0
+28	79.5	0
+29	79.5	0
+30	79.5	0
+31	79.5	0
+32	79.5	0
+33	79.5	0
+34	79.5	0
+35	79.5	0
+36	79.5	0
+37	79.5	0
+38	79.5	0
+39	79.5	0
+40	79.5	0
+41	79.5	0
+42	79.5	0
+43	79.5	0
+44	79.5	0
+45	79.5	0
+46	79.5	0
+47	79.5	0
+48	79.5	0
+49	79.5	0
+50	79.5	0
+51	79.5	0
+52	79.5	0
+53	79.5	0
+54	79.5	0
+55	79.5	0
+56	79.5	0
+57	79.5	0
+58	79.5	0
+59	79.5	0
+60	79.5	0
+61	79.5	0
+62	79.5	0
+63	79.5	0
+64	79.5	0
+65	79.5	0
+66	79.5	0
+67	79.5	0
+68	79.5	0
+69	79.5	0
+70	79.5	0
+71	79.5	0
+72	79.5	0
+73	79.5	0
+74	79.5	0
+75	79.5	0
+76	79.5	0
+77	79.5	0
+78	79.5	0
+79	79.5	0
+80	79.5	0
+81	79.5	0
+82	79.5	0
+83	79.5	0
+84	79.5	0
+85	79.5	0
+86	79.5	0
+87	79.5	0
+88	79.5	0
+89	79.5	0
+90	79.5	0
+91	79.5	0
+92	79.5	0
+93	79.5	0
+94	79.5	0
+95	79.5	0
+96	79.5	0
+97	79.5	0
+98	79.5	0
+99	79.5	0
+100	79.5	0
+101	79.5	0
+102	79.5	0
+103	79.5	0
+104	79.5	0
+105	79.5	0
+106	79.5	0
+107	79.5	0
+108	79.5	0
+109	79.5	0
+110	79.5	0
+111	79.5	0
+112	79.5	0
+113	79.5	0
+114	79.5	0
+115	79.5	0
+116	79.5	0
+117	79.5	0
+118	79.5	0
+119	79.5	0
+120	79.5	0
+121	79.5	0
+122	79.5	0
+123	79.5	0
+124	79.5	0
+125	79.5	0
+126	79.5	0
+127	79.5	0
+128	79.5	0
+129	79.5	0
+130	79.5	0
+131	79.5	0
+132	79.5	0
+133	79.5	0
+134	79.5	0
+135	79.5	0
+136	79.5	0
+137	79.5	0
+138	79.5	0
+139	79.5	0
+140	79.5	0
+141	79.5	0
+142	79.5	0
+143	79.5	0
+144	79.5	0
+145	79.5	0
+146	79.5	0
+147	79.5	0
+148	79.5	0
+149	79.5	0
+150	79.5	0
+151	79.5	0
+152	79.5	0
+153	79.5	0
+154	79.5	0
+155	79.5	0
+156	79.5	0
+157	79.5	0
+158	79.5	0
+159	79.5	0
+160	79.5	0
+161	79.5	0
+162	79.5	0
+163	79.5	0
+164	79.5	0
+165	79.5	0
+166	79.5	0
+167	79.5	0
+168	79.5	0
+169	79.5	0
+170	79.5	0
+171	79.5	0
+172	79.5	0
+173	79.5	0
+174	79.5	0
+175	79.5	0
+176	79.5	0
+177	79.5	0
+178	79.5	0
+179	79.5	0
+180	79.5	0
+181	79.5	0
+182	79.5	0
+183	79.5	0
+184	79.5	0
+185	79.5	0
+186	79.5	0
+187	79.5	0
+188	79.5	0
+189	79.5	0
+190	79.5	0
+191	79.5	0
+192	79.5	0
+193	79.5	0
+194	79.5	0
+195	79.5	0
+196	79.5	0
+197	79.5	0
+198	79.5	0
+199	79.5	0
+200	79.5	0
+201	79.5	0
+202	79.5	0
+203	79.5	0
+204	79.5	0
+205	79.5	0
+206	79.5	0
+207	79.5	0
+208	79.5	0
+209	79.5	0
+210	79.5	0
+211	79.5	0
+212	79.5	0
+213	79.5	0
+214	79.5	0
+215	79.5	0
+216	79.5	0
+217	79.5	0
+218	79.5	0
+219	79.5	0
+220	79.5	0
+221	79.5	0
+222	79.5	0
+223	79.5	0
+224	79.5	0
+225	79.5	0
+226	79.5	0
+227	79.5	0
+228	79.5	0
+229	79.5	0
+230	79.5	0
+231	79.5	0
+232	79.5	0
+233	79.5	0
+234	79.5	0
+235	79.5	0
+236	79.5	0
+237	79.5	0
+238	79.5	0
+239	79.5	0
+240	79.5	0
+241	79.5	0
+242	79.5	0
+243	79.5	0
+244	79.5	0
+245	79.5	0
+246	79.5	0
+247	79.5	0
+248	79.5	0
+249	79.5	0
+250	79.5	0
+251	79.5	0
+252	79.5	0
+253	79.5	0
+254	79.5	0
+255	79.5	0
+256	79.5	0
+257	79.5	0
+258	79.5	0
+259	79.5	0
+260	79.5	0
+261	79.5	0
+262	79.5	0
+263	79.5	0
+264	79.5	0
+265	79.5	0
+266	79.5	0
+267	79.5	0
+268	79.5	0
+269	79.5	0
+270	79.5	0
+271	79.5	0
+272	79.5	0
+273	79.5	0
+274	79.5	0
+275	79.5	0
+276	79.5	0
+277	79.5	0
+278	79.5	0
+279	79.5	0
+280	79.5	0
+281	79.5	0
+282	79.5	0
+283	79.5	0
+284	79.5	0
+285	79.5	0
+286	79.5	0
+287	79.5	0
+288	79.5	0
+289	79.5	0
+290	79.5	0
+291	79.5	0
+292	79.5	0
+293	79.5	0
+294	79.5	0
+295	79.5	0
+296	79.5	0
+297	79.5	0
+298	79.5	0
+299	79.5	0
+300	79.5	0
+301	79.5	0
+302	79.5	0
+303	79.5	0
+304	79.5	0
+305	79.5	0
+306	79.5	0
+307	79.5	0
+308	79.5	0
+309	79.5	0
+310	79.5	0
+311	79.5	0
+312	79.5	0
+313	79.5	0
+314	79.5	0
+315	79.5	0
+316	79.5	0
+317	79.5	0
+318	79.5	0
+319	79.5	0
+320	79.5	0
+321	79.5	0
+322	79.5	0
+323	79.5	0
+324	79.5	0
+325	79.5	0
+326	79.5	0
+327	79.5	0
+328	79.5	0
+329	79.5	0
+330	79.5	0
+331	79.5	0
+332	79.5	0
+333	79.5	0
+334	79.5	0
+335	79.5	0
+336	79.5	0
+337	79.5	0
+338	79.5	0
+339	79.5	0
+340	79.5	0
+341	79.5	0
+342	79.5	0
+343	79.5	0
+344	79.5	0
+345	79.5	0
+346	79.5	0
+347	79.5	0
+348	79.5	0
+349	79.5	0
+350	79.5	0
+351	79.5	0
+352	79.5	0
+353	79.5	0
+354	79.5	0
+355	79.5	0
+356	79.5	0
+357	79.5	0
+358	79.5	0
+359	79.5	0
+360	79.5	0
+0	80	0
+1	80	0
+2	80	0
+3	80	0
+4	80	0
+5	80	0
+6	80	0
+7	80	0
+8	80	0
+9	80	0
+10	80	0
+11	80	0
+12	80	0
+13	80	0
+14	80	0
+15	80	0
+16	80	0
+17	80	0
+18	80	0
+19	80	0
+20	80	0
+21	80	0
+22	80	0
+23	80	0
+24	80	0
+25	80	0
+26	80	0
+27	80	0
+28	80	0
+29	80	0
+30	80	0
+31	80	0
+32	80	0
+33	80	0
+34	80	0
+35	80	0
+36	80	0
+37	80	0
+38	80	0
+39	80	0
+40	80	0
+41	80	0
+42	80	0
+43	80	0
+44	80	0
+45	80	0
+46	80	0
+47	80	0
+48	80	0
+49	80	0
+50	80	0
+51	80	0
+52	80	0
+53	80	0
+54	80	0
+55	80	0
+56	80	0
+57	80	0
+58	80	0
+59	80	0
+60	80	0
+61	80	0
+62	80	0
+63	80	0
+64	80	0
+65	80	0
+66	80	0
+67	80	0
+68	80	0
+69	80	0
+70	80	0
+71	80	0
+72	80	0
+73	80	0
+74	80	0
+75	80	0
+76	80	0
+77	80	0
+78	80	0
+79	80	0
+80	80	0
+81	80	0
+82	80	0
+83	80	0
+84	80	0
+85	80	0
+86	80	0
+87	80	0
+88	80	0
+89	80	0
+90	80	0
+91	80	0
+92	80	0
+93	80	0
+94	80	0
+95	80	0
+96	80	0
+97	80	0
+98	80	0
+99	80	0
+100	80	0
+101	80	0
+102	80	0
+103	80	0
+104	80	0
+105	80	0
+106	80	0
+107	80	0
+108	80	0
+109	80	0
+110	80	0
+111	80	0
+112	80	0
+113	80	0
+114	80	0
+115	80	0
+116	80	0
+117	80	0
+118	80	0
+119	80	0
+120	80	0
+121	80	0
+122	80	0
+123	80	0
+124	80	0
+125	80	0
+126	80	0
+127	80	0
+128	80	0
+129	80	0
+130	80	0
+131	80	0
+132	80	0
+133	80	0
+134	80	0
+135	80	0
+136	80	0
+137	80	0
+138	80	0
+139	80	0
+140	80	0
+141	80	0
+142	80	0
+143	80	0
+144	80	0
+145	80	0
+146	80	0
+147	80	0
+148	80	0
+149	80	0
+150	80	0
+151	80	0
+152	80	0
+153	80	0
+154	80	0
+155	80	0
+156	80	0
+157	80	0
+158	80	0
+159	80	0
+160	80	0
+161	80	0
+162	80	0
+163	80	0
+164	80	0
+165	80	0
+166	80	0
+167	80	0
+168	80	0
+169	80	0
+170	80	0
+171	80	0
+172	80	0
+173	80	0
+174	80	0
+175	80	0
+176	80	0
+177	80	0
+178	80	0
+179	80	0
+180	80	0
+181	80	0
+182	80	0
+183	80	0
+184	80	0
+185	80	0
+186	80	0
+187	80	0
+188	80	0
+189	80	0
+190	80	0
+191	80	0
+192	80	0
+193	80	0
+194	80	0
+195	80	0
+196	80	0
+197	80	0
+198	80	0
+199	80	0
+200	80	0
+201	80	0
+202	80	0
+203	80	0
+204	80	0
+205	80	0
+206	80	0
+207	80	0
+208	80	0
+209	80	0
+210	80	0
+211	80	0
+212	80	0
+213	80	0
+214	80	0
+215	80	0
+216	80	0
+217	80	0
+218	80	0
+219	80	0
+220	80	0
+221	80	0
+222	80	0
+223	80	0
+224	80	0
+225	80	0
+226	80	0
+227	80	0
+228	80	0
+229	80	0
+230	80	0
+231	80	0
+232	80	0
+233	80	0
+234	80	0
+235	80	0
+236	80	0
+237	80	0
+238	80	0
+239	80	0
+240	80	0
+241	80	0
+242	80	0
+243	80	0
+244	80	0
+245	80	0
+246	80	0
+247	80	0
+248	80	0
+249	80	0
+250	80	0
+251	80	0
+252	80	0
+253	80	0
+254	80	0
+255	80	0
+256	80	0
+257	80	0
+258	80	0
+259	80	0
+260	80	0
+261	80	0
+262	80	0
+263	80	0
+264	80	0
+265	80	0
+266	80	0
+267	80	0
+268	80	0
+269	80	0
+270	80	0
+271	80	0
+272	80	0
+273	80	0
+274	80	0
+275	80	0
+276	80	0
+277	80	0
+278	80	0
+279	80	0
+280	80	0
+281	80	0
+282	80	0
+283	80	0
+284	80	0
+285	80	0
+286	80	0
+287	80	0
+288	80	0
+289	80	0
+290	80	0
+291	80	0
+292	80	0
+293	80	0
+294	80	0
+295	80	0
+296	80	0
+297	80	0
+298	80	0
+299	80	0
+300	80	0
+301	80	0
+302	80	0
+303	80	0
+304	80	0
+305	80	0
+306	80	0
+307	80	0
+308	80	0
+309	80	0
+310	80	0
+311	80	0
+312	80	0
+313	80	0
+314	80	0
+315	80	0
+316	80	0
+317	80	0
+318	80	0
+319	80	0
+320	80	0
+321	80	0
+322	80	0
+323	80	0
+324	80	0
+325	80	0
+326	80	0
+327	80	0
+328	80	0
+329	80	0
+330	80	0
+331	80	0
+332	80	0
+333	80	0
+334	80	0
+335	80	0
+336	80	0
+337	80	0
+338	80	0
+339	80	0
+340	80	0
+341	80	0
+342	80	0
+343	80	0
+344	80	0
+345	80	0
+346	80	0
+347	80	0
+348	80	0
+349	80	0
+350	80	0
+351	80	0
+352	80	0
+353	80	0
+354	80	0
+355	80	0
+356	80	0
+357	80	0
+358	80	0
+359	80	0
+360	80	0
+0	80.5	0
+1	80.5	0
+2	80.5	0
+3	80.5	0
+4	80.5	0
+5	80.5	0
+6	80.5	0
+7	80.5	0
+8	80.5	0
+9	80.5	0
+10	80.5	0
+11	80.5	0
+12	80.5	0
+13	80.5	0
+14	80.5	0
+15	80.5	0
+16	80.5	0
+17	80.5	0
+18	80.5	0
+19	80.5	0
+20	80.5	0
+21	80.5	0
+22	80.5	0
+23	80.5	0
+24	80.5	0
+25	80.5	0
+26	80.5	0
+27	80.5	0
+28	80.5	0
+29	80.5	0
+30	80.5	0
+31	80.5	0
+32	80.5	0
+33	80.5	0
+34	80.5	0
+35	80.5	0
+36	80.5	0
+37	80.5	0
+38	80.5	0
+39	80.5	0
+40	80.5	0
+41	80.5	0
+42	80.5	0
+43	80.5	0
+44	80.5	0
+45	80.5	0
+46	80.5	0
+47	80.5	0
+48	80.5	0
+49	80.5	0
+50	80.5	0
+51	80.5	0
+52	80.5	0
+53	80.5	0
+54	80.5	0
+55	80.5	0
+56	80.5	0
+57	80.5	0
+58	80.5	0
+59	80.5	0
+60	80.5	0
+61	80.5	0
+62	80.5	0
+63	80.5	0
+64	80.5	0
+65	80.5	0
+66	80.5	0
+67	80.5	0
+68	80.5	0
+69	80.5	0
+70	80.5	0
+71	80.5	0
+72	80.5	0
+73	80.5	0
+74	80.5	0
+75	80.5	0
+76	80.5	0
+77	80.5	0
+78	80.5	0
+79	80.5	0
+80	80.5	0
+81	80.5	0
+82	80.5	0
+83	80.5	0
+84	80.5	0
+85	80.5	0
+86	80.5	0
+87	80.5	0
+88	80.5	0
+89	80.5	0
+90	80.5	0
+91	80.5	0
+92	80.5	0
+93	80.5	0
+94	80.5	0
+95	80.5	0
+96	80.5	0
+97	80.5	0
+98	80.5	0
+99	80.5	0
+100	80.5	0
+101	80.5	0
+102	80.5	0
+103	80.5	0
+104	80.5	0
+105	80.5	0
+106	80.5	0
+107	80.5	0
+108	80.5	0
+109	80.5	0
+110	80.5	0
+111	80.5	0
+112	80.5	0
+113	80.5	0
+114	80.5	0
+115	80.5	0
+116	80.5	0
+117	80.5	0
+118	80.5	0
+119	80.5	0
+120	80.5	0
+121	80.5	0
+122	80.5	0
+123	80.5	0
+124	80.5	0
+125	80.5	0
+126	80.5	0
+127	80.5	0
+128	80.5	0
+129	80.5	0
+130	80.5	0
+131	80.5	0
+132	80.5	0
+133	80.5	0
+134	80.5	0
+135	80.5	0
+136	80.5	0
+137	80.5	0
+138	80.5	0
+139	80.5	0
+140	80.5	0
+141	80.5	0
+142	80.5	0
+143	80.5	0
+144	80.5	0
+145	80.5	0
+146	80.5	0
+147	80.5	0
+148	80.5	0
+149	80.5	0
+150	80.5	0
+151	80.5	0
+152	80.5	0
+153	80.5	0
+154	80.5	0
+155	80.5	0
+156	80.5	0
+157	80.5	0
+158	80.5	0
+159	80.5	0
+160	80.5	0
+161	80.5	0
+162	80.5	0
+163	80.5	0
+164	80.5	0
+165	80.5	0
+166	80.5	0
+167	80.5	0
+168	80.5	0
+169	80.5	0
+170	80.5	0
+171	80.5	0
+172	80.5	0
+173	80.5	0
+174	80.5	0
+175	80.5	0
+176	80.5	0
+177	80.5	0
+178	80.5	0
+179	80.5	0
+180	80.5	0
+181	80.5	0
+182	80.5	0
+183	80.5	0
+184	80.5	0
+185	80.5	0
+186	80.5	0
+187	80.5	0
+188	80.5	0
+189	80.5	0
+190	80.5	0
+191	80.5	0
+192	80.5	0
+193	80.5	0
+194	80.5	0
+195	80.5	0
+196	80.5	0
+197	80.5	0
+198	80.5	0
+199	80.5	0
+200	80.5	0
+201	80.5	0
+202	80.5	0
+203	80.5	0
+204	80.5	0
+205	80.5	0
+206	80.5	0
+207	80.5	0
+208	80.5	0
+209	80.5	0
+210	80.5	0
+211	80.5	0
+212	80.5	0
+213	80.5	0
+214	80.5	0
+215	80.5	0
+216	80.5	0
+217	80.5	0
+218	80.5	0
+219	80.5	0
+220	80.5	0
+221	80.5	0
+222	80.5	0
+223	80.5	0
+224	80.5	0
+225	80.5	0
+226	80.5	0
+227	80.5	0
+228	80.5	0
+229	80.5	0
+230	80.5	0
+231	80.5	0
+232	80.5	0
+233	80.5	0
+234	80.5	0
+235	80.5	0
+236	80.5	0
+237	80.5	0
+238	80.5	0
+239	80.5	0
+240	80.5	0
+241	80.5	0
+242	80.5	0
+243	80.5	0
+244	80.5	0
+245	80.5	0
+246	80.5	0
+247	80.5	0
+248	80.5	0
+249	80.5	0
+250	80.5	0
+251	80.5	0
+252	80.5	0
+253	80.5	0
+254	80.5	0
+255	80.5	0
+256	80.5	0
+257	80.5	0
+258	80.5	0
+259	80.5	0
+260	80.5	0
+261	80.5	0
+262	80.5	0
+263	80.5	0
+264	80.5	0
+265	80.5	0
+266	80.5	0
+267	80.5	0
+268	80.5	0
+269	80.5	0
+270	80.5	0
+271	80.5	0
+272	80.5	0
+273	80.5	0
+274	80.5	0
+275	80.5	0
+276	80.5	0
+277	80.5	0
+278	80.5	0
+279	80.5	0
+280	80.5	0
+281	80.5	0
+282	80.5	0
+283	80.5	0
+284	80.5	0
+285	80.5	0
+286	80.5	0
+287	80.5	0
+288	80.5	0
+289	80.5	0
+290	80.5	0
+291	80.5	0
+292	80.5	0
+293	80.5	0
+294	80.5	0
+295	80.5	0
+296	80.5	0
+297	80.5	0
+298	80.5	0
+299	80.5	0
+300	80.5	0
+301	80.5	0
+302	80.5	0
+303	80.5	0
+304	80.5	0
+305	80.5	0
+306	80.5	0
+307	80.5	0
+308	80.5	0
+309	80.5	0
+310	80.5	0
+311	80.5	0
+312	80.5	0
+313	80.5	0
+314	80.5	0
+315	80.5	0
+316	80.5	0
+317	80.5	0
+318	80.5	0
+319	80.5	0
+320	80.5	0
+321	80.5	0
+322	80.5	0
+323	80.5	0
+324	80.5	0
+325	80.5	0
+326	80.5	0
+327	80.5	0
+328	80.5	0
+329	80.5	0
+330	80.5	0
+331	80.5	0
+332	80.5	0
+333	80.5	0
+334	80.5	0
+335	80.5	0
+336	80.5	0
+337	80.5	0
+338	80.5	0
+339	80.5	0
+340	80.5	0
+341	80.5	0
+342	80.5	0
+343	80.5	0
+344	80.5	0
+345	80.5	0
+346	80.5	0
+347	80.5	0
+348	80.5	0
+349	80.5	0
+350	80.5	0
+351	80.5	0
+352	80.5	0
+353	80.5	0
+354	80.5	0
+355	80.5	0
+356	80.5	0
+357	80.5	0
+358	80.5	0
+359	80.5	0
+360	80.5	0
+0	81	0
+1	81	0
+2	81	0
+3	81	0
+4	81	0
+5	81	0
+6	81	0
+7	81	0
+8	81	0
+9	81	0
+10	81	0
+11	81	0
+12	81	0
+13	81	0
+14	81	0
+15	81	0
+16	81	0
+17	81	0
+18	81	0
+19	81	0
+20	81	0
+21	81	0
+22	81	0
+23	81	0
+24	81	0
+25	81	0
+26	81	0
+27	81	0
+28	81	0
+29	81	0
+30	81	0
+31	81	0
+32	81	0
+33	81	0
+34	81	0
+35	81	0
+36	81	0
+37	81	0
+38	81	0
+39	81	0
+40	81	0
+41	81	0
+42	81	0
+43	81	0
+44	81	0
+45	81	0
+46	81	0
+47	81	0
+48	81	0
+49	81	0
+50	81	0
+51	81	0
+52	81	0
+53	81	0
+54	81	0
+55	81	0
+56	81	0
+57	81	0
+58	81	0
+59	81	0
+60	81	0
+61	81	0
+62	81	0
+63	81	0
+64	81	0
+65	81	0
+66	81	0
+67	81	0
+68	81	0
+69	81	0
+70	81	0
+71	81	0
+72	81	0
+73	81	0
+74	81	0
+75	81	0
+76	81	0
+77	81	0
+78	81	0
+79	81	0
+80	81	0
+81	81	0
+82	81	0
+83	81	0
+84	81	0
+85	81	0
+86	81	0
+87	81	0
+88	81	0
+89	81	0
+90	81	0
+91	81	0
+92	81	0
+93	81	0
+94	81	0
+95	81	0
+96	81	0
+97	81	0
+98	81	0
+99	81	0
+100	81	0
+101	81	0
+102	81	0
+103	81	0
+104	81	0
+105	81	0
+106	81	0
+107	81	0
+108	81	0
+109	81	0
+110	81	0
+111	81	0
+112	81	0
+113	81	0
+114	81	0
+115	81	0
+116	81	0
+117	81	0
+118	81	0
+119	81	0
+120	81	0
+121	81	0
+122	81	0
+123	81	0
+124	81	0
+125	81	0
+126	81	0
+127	81	0
+128	81	0
+129	81	0
+130	81	0
+131	81	0
+132	81	0
+133	81	0
+134	81	0
+135	81	0
+136	81	0
+137	81	0
+138	81	0
+139	81	0
+140	81	0
+141	81	0
+142	81	0
+143	81	0
+144	81	0
+145	81	0
+146	81	0
+147	81	0
+148	81	0
+149	81	0
+150	81	0
+151	81	0
+152	81	0
+153	81	0
+154	81	0
+155	81	0
+156	81	0
+157	81	0
+158	81	0
+159	81	0
+160	81	0
+161	81	0
+162	81	0
+163	81	0
+164	81	0
+165	81	0
+166	81	0
+167	81	0
+168	81	0
+169	81	0
+170	81	0
+171	81	0
+172	81	0
+173	81	0
+174	81	0
+175	81	0
+176	81	0
+177	81	0
+178	81	0
+179	81	0
+180	81	0
+181	81	0
+182	81	0
+183	81	0
+184	81	0
+185	81	0
+186	81	0
+187	81	0
+188	81	0
+189	81	0
+190	81	0
+191	81	0
+192	81	0
+193	81	0
+194	81	0
+195	81	0
+196	81	0
+197	81	0
+198	81	0
+199	81	0
+200	81	0
+201	81	0
+202	81	0
+203	81	0
+204	81	0
+205	81	0
+206	81	0
+207	81	0
+208	81	0
+209	81	0
+210	81	0
+211	81	0
+212	81	0
+213	81	0
+214	81	0
+215	81	0
+216	81	0
+217	81	0
+218	81	0
+219	81	0
+220	81	0
+221	81	0
+222	81	0
+223	81	0
+224	81	0
+225	81	0
+226	81	0
+227	81	0
+228	81	0
+229	81	0
+230	81	0
+231	81	0
+232	81	0
+233	81	0
+234	81	0
+235	81	0
+236	81	0
+237	81	0
+238	81	0
+239	81	0
+240	81	0
+241	81	0
+242	81	0
+243	81	0
+244	81	0
+245	81	0
+246	81	0
+247	81	0
+248	81	0
+249	81	0
+250	81	0
+251	81	0
+252	81	0
+253	81	0
+254	81	0
+255	81	0
+256	81	0
+257	81	0
+258	81	0
+259	81	0
+260	81	0
+261	81	0
+262	81	0
+263	81	0
+264	81	0
+265	81	0
+266	81	0
+267	81	0
+268	81	0
+269	81	0
+270	81	0
+271	81	0
+272	81	0
+273	81	0
+274	81	0
+275	81	0
+276	81	0
+277	81	0
+278	81	0
+279	81	0
+280	81	0
+281	81	0
+282	81	0
+283	81	0
+284	81	0
+285	81	0
+286	81	0
+287	81	0
+288	81	0
+289	81	0
+290	81	0
+291	81	0
+292	81	0
+293	81	0
+294	81	0
+295	81	0
+296	81	0
+297	81	0
+298	81	0
+299	81	0
+300	81	0
+301	81	0
+302	81	0
+303	81	0
+304	81	0
+305	81	0
+306	81	0
+307	81	0
+308	81	0
+309	81	0
+310	81	0
+311	81	0
+312	81	0
+313	81	0
+314	81	0
+315	81	0
+316	81	0
+317	81	0
+318	81	0
+319	81	0
+320	81	0
+321	81	0
+322	81	0
+323	81	0
+324	81	0
+325	81	0
+326	81	0
+327	81	0
+328	81	0
+329	81	0
+330	81	0
+331	81	0
+332	81	0
+333	81	0
+334	81	0
+335	81	0
+336	81	0
+337	81	0
+338	81	0
+339	81	0
+340	81	0
+341	81	0
+342	81	0
+343	81	0
+344	81	0
+345	81	0
+346	81	0
+347	81	0
+348	81	0
+349	81	0
+350	81	0
+351	81	0
+352	81	0
+353	81	0
+354	81	0
+355	81	0
+356	81	0
+357	81	0
+358	81	0
+359	81	0
+360	81	0
+0	81.5	0
+1	81.5	0
+2	81.5	0
+3	81.5	0
+4	81.5	0
+5	81.5	0
+6	81.5	0
+7	81.5	0
+8	81.5	0
+9	81.5	0
+10	81.5	0
+11	81.5	0
+12	81.5	0
+13	81.5	0
+14	81.5	0
+15	81.5	0
+16	81.5	0
+17	81.5	0
+18	81.5	0
+19	81.5	0
+20	81.5	0
+21	81.5	0
+22	81.5	0
+23	81.5	0
+24	81.5	0
+25	81.5	0
+26	81.5	0
+27	81.5	0
+28	81.5	0
+29	81.5	0
+30	81.5	0
+31	81.5	0
+32	81.5	0
+33	81.5	0
+34	81.5	0
+35	81.5	0
+36	81.5	0
+37	81.5	0
+38	81.5	0
+39	81.5	0
+40	81.5	0
+41	81.5	0
+42	81.5	0
+43	81.5	0
+44	81.5	0
+45	81.5	0
+46	81.5	0
+47	81.5	0
+48	81.5	0
+49	81.5	0
+50	81.5	0
+51	81.5	0
+52	81.5	0
+53	81.5	0
+54	81.5	0
+55	81.5	0
+56	81.5	0
+57	81.5	0
+58	81.5	0
+59	81.5	0
+60	81.5	0
+61	81.5	0
+62	81.5	0
+63	81.5	0
+64	81.5	0
+65	81.5	0
+66	81.5	0
+67	81.5	0
+68	81.5	0
+69	81.5	0
+70	81.5	0
+71	81.5	0
+72	81.5	0
+73	81.5	0
+74	81.5	0
+75	81.5	0
+76	81.5	0
+77	81.5	0
+78	81.5	0
+79	81.5	0
+80	81.5	0
+81	81.5	0
+82	81.5	0
+83	81.5	0
+84	81.5	0
+85	81.5	0
+86	81.5	0
+87	81.5	0
+88	81.5	0
+89	81.5	0
+90	81.5	0
+91	81.5	0
+92	81.5	0
+93	81.5	0
+94	81.5	0
+95	81.5	0
+96	81.5	0
+97	81.5	0
+98	81.5	0
+99	81.5	0
+100	81.5	0
+101	81.5	0
+102	81.5	0
+103	81.5	0
+104	81.5	0
+105	81.5	0
+106	81.5	0
+107	81.5	0
+108	81.5	0
+109	81.5	0
+110	81.5	0
+111	81.5	0
+112	81.5	0
+113	81.5	0
+114	81.5	0
+115	81.5	0
+116	81.5	0
+117	81.5	0
+118	81.5	0
+119	81.5	0
+120	81.5	0
+121	81.5	0
+122	81.5	0
+123	81.5	0
+124	81.5	0
+125	81.5	0
+126	81.5	0
+127	81.5	0
+128	81.5	0
+129	81.5	0
+130	81.5	0
+131	81.5	0
+132	81.5	0
+133	81.5	0
+134	81.5	0
+135	81.5	0
+136	81.5	0
+137	81.5	0
+138	81.5	0
+139	81.5	0
+140	81.5	0
+141	81.5	0
+142	81.5	0
+143	81.5	0
+144	81.5	0
+145	81.5	0
+146	81.5	0
+147	81.5	0
+148	81.5	0
+149	81.5	0
+150	81.5	0
+151	81.5	0
+152	81.5	0
+153	81.5	0
+154	81.5	0
+155	81.5	0
+156	81.5	0
+157	81.5	0
+158	81.5	0
+159	81.5	0
+160	81.5	0
+161	81.5	0
+162	81.5	0
+163	81.5	0
+164	81.5	0
+165	81.5	0
+166	81.5	0
+167	81.5	0
+168	81.5	0
+169	81.5	0
+170	81.5	0
+171	81.5	0
+172	81.5	0
+173	81.5	0
+174	81.5	0
+175	81.5	0
+176	81.5	0
+177	81.5	0
+178	81.5	0
+179	81.5	0
+180	81.5	0
+181	81.5	0
+182	81.5	0
+183	81.5	0
+184	81.5	0
+185	81.5	0
+186	81.5	0
+187	81.5	0
+188	81.5	0
+189	81.5	0
+190	81.5	0
+191	81.5	0
+192	81.5	0
+193	81.5	0
+194	81.5	0
+195	81.5	0
+196	81.5	0
+197	81.5	0
+198	81.5	0
+199	81.5	0
+200	81.5	0
+201	81.5	0
+202	81.5	0
+203	81.5	0
+204	81.5	0
+205	81.5	0
+206	81.5	0
+207	81.5	0
+208	81.5	0
+209	81.5	0
+210	81.5	0
+211	81.5	0
+212	81.5	0
+213	81.5	0
+214	81.5	0
+215	81.5	0
+216	81.5	0
+217	81.5	0
+218	81.5	0
+219	81.5	0
+220	81.5	0
+221	81.5	0
+222	81.5	0
+223	81.5	0
+224	81.5	0
+225	81.5	0
+226	81.5	0
+227	81.5	0
+228	81.5	0
+229	81.5	0
+230	81.5	0
+231	81.5	0
+232	81.5	0
+233	81.5	0
+234	81.5	0
+235	81.5	0
+236	81.5	0
+237	81.5	0
+238	81.5	0
+239	81.5	0
+240	81.5	0
+241	81.5	0
+242	81.5	0
+243	81.5	0
+244	81.5	0
+245	81.5	0
+246	81.5	0
+247	81.5	0
+248	81.5	0
+249	81.5	0
+250	81.5	0
+251	81.5	0
+252	81.5	0
+253	81.5	0
+254	81.5	0
+255	81.5	0
+256	81.5	0
+257	81.5	0
+258	81.5	0
+259	81.5	0
+260	81.5	0
+261	81.5	0
+262	81.5	0
+263	81.5	0
+264	81.5	0
+265	81.5	0
+266	81.5	0
+267	81.5	0
+268	81.5	0
+269	81.5	0
+270	81.5	0
+271	81.5	0
+272	81.5	0
+273	81.5	0
+274	81.5	0
+275	81.5	0
+276	81.5	0
+277	81.5	0
+278	81.5	0
+279	81.5	0
+280	81.5	0
+281	81.5	0
+282	81.5	0
+283	81.5	0
+284	81.5	0
+285	81.5	0
+286	81.5	0
+287	81.5	0
+288	81.5	0
+289	81.5	0
+290	81.5	0
+291	81.5	0
+292	81.5	0
+293	81.5	0
+294	81.5	0
+295	81.5	0
+296	81.5	0
+297	81.5	0
+298	81.5	0
+299	81.5	0
+300	81.5	0
+301	81.5	0
+302	81.5	0
+303	81.5	0
+304	81.5	0
+305	81.5	0
+306	81.5	0
+307	81.5	0
+308	81.5	0
+309	81.5	0
+310	81.5	0
+311	81.5	0
+312	81.5	0
+313	81.5	0
+314	81.5	0
+315	81.5	0
+316	81.5	0
+317	81.5	0
+318	81.5	0
+319	81.5	0
+320	81.5	0
+321	81.5	0
+322	81.5	0
+323	81.5	0
+324	81.5	0
+325	81.5	0
+326	81.5	0
+327	81.5	0
+328	81.5	0
+329	81.5	0
+330	81.5	0
+331	81.5	0
+332	81.5	0
+333	81.5	0
+334	81.5	0
+335	81.5	0
+336	81.5	0
+337	81.5	0
+338	81.5	0
+339	81.5	0
+340	81.5	0
+341	81.5	0
+342	81.5	0
+343	81.5	0
+344	81.5	0
+345	81.5	0
+346	81.5	0
+347	81.5	0
+348	81.5	0
+349	81.5	0
+350	81.5	0
+351	81.5	0
+352	81.5	0
+353	81.5	0
+354	81.5	0
+355	81.5	0
+356	81.5	0
+357	81.5	0
+358	81.5	0
+359	81.5	0
+360	81.5	0
+0	82	0
+1	82	0
+2	82	0
+3	82	0
+4	82	0
+5	82	0
+6	82	0
+7	82	0
+8	82	0
+9	82	0
+10	82	0
+11	82	0
+12	82	0
+13	82	0
+14	82	0
+15	82	0
+16	82	0
+17	82	0
+18	82	0
+19	82	0
+20	82	0
+21	82	0
+22	82	0
+23	82	0
+24	82	0
+25	82	0
+26	82	0
+27	82	0
+28	82	0
+29	82	0
+30	82	0
+31	82	0
+32	82	0
+33	82	0
+34	82	0
+35	82	0
+36	82	0
+37	82	0
+38	82	0
+39	82	0
+40	82	0
+41	82	0
+42	82	0
+43	82	0
+44	82	0
+45	82	0
+46	82	0
+47	82	0
+48	82	0
+49	82	0
+50	82	0
+51	82	0
+52	82	0
+53	82	0
+54	82	0
+55	82	0
+56	82	0
+57	82	0
+58	82	0
+59	82	0
+60	82	0
+61	82	0
+62	82	0
+63	82	0
+64	82	0
+65	82	0
+66	82	0
+67	82	0
+68	82	0
+69	82	0
+70	82	0
+71	82	0
+72	82	0
+73	82	0
+74	82	0
+75	82	0
+76	82	0
+77	82	0
+78	82	0
+79	82	0
+80	82	0
+81	82	0
+82	82	0
+83	82	0
+84	82	0
+85	82	0
+86	82	0
+87	82	0
+88	82	0
+89	82	0
+90	82	0
+91	82	0
+92	82	0
+93	82	0
+94	82	0
+95	82	0
+96	82	0
+97	82	0
+98	82	0
+99	82	0
+100	82	0
+101	82	0
+102	82	0
+103	82	0
+104	82	0
+105	82	0
+106	82	0
+107	82	0
+108	82	0
+109	82	0
+110	82	0
+111	82	0
+112	82	0
+113	82	0
+114	82	0
+115	82	0
+116	82	0
+117	82	0
+118	82	0
+119	82	0
+120	82	0
+121	82	0
+122	82	0
+123	82	0
+124	82	0
+125	82	0
+126	82	0
+127	82	0
+128	82	0
+129	82	0
+130	82	0
+131	82	0
+132	82	0
+133	82	0
+134	82	0
+135	82	0
+136	82	0
+137	82	0
+138	82	0
+139	82	0
+140	82	0
+141	82	0
+142	82	0
+143	82	0
+144	82	0
+145	82	0
+146	82	0
+147	82	0
+148	82	0
+149	82	0
+150	82	0
+151	82	0
+152	82	0
+153	82	0
+154	82	0
+155	82	0
+156	82	0
+157	82	0
+158	82	0
+159	82	0
+160	82	0
+161	82	0
+162	82	0
+163	82	0
+164	82	0
+165	82	0
+166	82	0
+167	82	0
+168	82	0
+169	82	0
+170	82	0
+171	82	0
+172	82	0
+173	82	0
+174	82	0
+175	82	0
+176	82	0
+177	82	0
+178	82	0
+179	82	0
+180	82	0
+181	82	0
+182	82	0
+183	82	0
+184	82	0
+185	82	0
+186	82	0
+187	82	0
+188	82	0
+189	82	0
+190	82	0
+191	82	0
+192	82	0
+193	82	0
+194	82	0
+195	82	0
+196	82	0
+197	82	0
+198	82	0
+199	82	0
+200	82	0
+201	82	0
+202	82	0
+203	82	0
+204	82	0
+205	82	0
+206	82	0
+207	82	0
+208	82	0
+209	82	0
+210	82	0
+211	82	0
+212	82	0
+213	82	0
+214	82	0
+215	82	0
+216	82	0
+217	82	0
+218	82	0
+219	82	0
+220	82	0
+221	82	0
+222	82	0
+223	82	0
+224	82	0
+225	82	0
+226	82	0
+227	82	0
+228	82	0
+229	82	0
+230	82	0
+231	82	0
+232	82	0
+233	82	0
+234	82	0
+235	82	0
+236	82	0
+237	82	0
+238	82	0
+239	82	0
+240	82	0
+241	82	0
+242	82	0
+243	82	0
+244	82	0
+245	82	0
+246	82	0
+247	82	0
+248	82	0
+249	82	0
+250	82	0
+251	82	0
+252	82	0
+253	82	0
+254	82	0
+255	82	0
+256	82	0
+257	82	0
+258	82	0
+259	82	0
+260	82	0
+261	82	0
+262	82	0
+263	82	0
+264	82	0
+265	82	0
+266	82	0
+267	82	0
+268	82	0
+269	82	0
+270	82	0
+271	82	0
+272	82	0
+273	82	0
+274	82	0
+275	82	0
+276	82	0
+277	82	0
+278	82	0
+279	82	0
+280	82	0
+281	82	0
+282	82	0
+283	82	0
+284	82	0
+285	82	0
+286	82	0
+287	82	0
+288	82	0
+289	82	0
+290	82	0
+291	82	0
+292	82	0
+293	82	0
+294	82	0
+295	82	0
+296	82	0
+297	82	0
+298	82	0
+299	82	0
+300	82	0
+301	82	0
+302	82	0
+303	82	0
+304	82	0
+305	82	0
+306	82	0
+307	82	0
+308	82	0
+309	82	0
+310	82	0
+311	82	0
+312	82	0
+313	82	0
+314	82	0
+315	82	0
+316	82	0
+317	82	0
+318	82	0
+319	82	0
+320	82	0
+321	82	0
+322	82	0
+323	82	0
+324	82	0
+325	82	0
+326	82	0
+327	82	0
+328	82	0
+329	82	0
+330	82	0
+331	82	0
+332	82	0
+333	82	0
+334	82	0
+335	82	0
+336	82	0
+337	82	0
+338	82	0
+339	82	0
+340	82	0
+341	82	0
+342	82	0
+343	82	0
+344	82	0
+345	82	0
+346	82	0
+347	82	0
+348	82	0
+349	82	0
+350	82	0
+351	82	0
+352	82	0
+353	82	0
+354	82	0
+355	82	0
+356	82	0
+357	82	0
+358	82	0
+359	82	0
+360	82	0
+0	82.5	0
+1	82.5	0
+2	82.5	0
+3	82.5	0
+4	82.5	0
+5	82.5	0
+6	82.5	0
+7	82.5	0
+8	82.5	0
+9	82.5	0
+10	82.5	0
+11	82.5	0
+12	82.5	0
+13	82.5	0
+14	82.5	0
+15	82.5	0
+16	82.5	0
+17	82.5	0
+18	82.5	0
+19	82.5	0
+20	82.5	0
+21	82.5	0
+22	82.5	0
+23	82.5	0
+24	82.5	0
+25	82.5	0
+26	82.5	0
+27	82.5	0
+28	82.5	0
+29	82.5	0
+30	82.5	0
+31	82.5	0
+32	82.5	0
+33	82.5	0
+34	82.5	0
+35	82.5	0
+36	82.5	0
+37	82.5	0
+38	82.5	0
+39	82.5	0
+40	82.5	0
+41	82.5	0
+42	82.5	0
+43	82.5	0
+44	82.5	0
+45	82.5	0
+46	82.5	0
+47	82.5	0
+48	82.5	0
+49	82.5	0
+50	82.5	0
+51	82.5	0
+52	82.5	0
+53	82.5	0
+54	82.5	0
+55	82.5	0
+56	82.5	0
+57	82.5	0
+58	82.5	0
+59	82.5	0
+60	82.5	0
+61	82.5	0
+62	82.5	0
+63	82.5	0
+64	82.5	0
+65	82.5	0
+66	82.5	0
+67	82.5	0
+68	82.5	0
+69	82.5	0
+70	82.5	0
+71	82.5	0
+72	82.5	0
+73	82.5	0
+74	82.5	0
+75	82.5	0
+76	82.5	0
+77	82.5	0
+78	82.5	0
+79	82.5	0
+80	82.5	0
+81	82.5	0
+82	82.5	0
+83	82.5	0
+84	82.5	0
+85	82.5	0
+86	82.5	0
+87	82.5	0
+88	82.5	0
+89	82.5	0
+90	82.5	0
+91	82.5	0
+92	82.5	0
+93	82.5	0
+94	82.5	0
+95	82.5	0
+96	82.5	0
+97	82.5	0
+98	82.5	0
+99	82.5	0
+100	82.5	0
+101	82.5	0
+102	82.5	0
+103	82.5	0
+104	82.5	0
+105	82.5	0
+106	82.5	0
+107	82.5	0
+108	82.5	0
+109	82.5	0
+110	82.5	0
+111	82.5	0
+112	82.5	0
+113	82.5	0
+114	82.5	0
+115	82.5	0
+116	82.5	0
+117	82.5	0
+118	82.5	0
+119	82.5	0
+120	82.5	0
+121	82.5	0
+122	82.5	0
+123	82.5	0
+124	82.5	0
+125	82.5	0
+126	82.5	0
+127	82.5	0
+128	82.5	0
+129	82.5	0
+130	82.5	0
+131	82.5	0
+132	82.5	0
+133	82.5	0
+134	82.5	0
+135	82.5	0
+136	82.5	0
+137	82.5	0
+138	82.5	0
+139	82.5	0
+140	82.5	0
+141	82.5	0
+142	82.5	0
+143	82.5	0
+144	82.5	0
+145	82.5	0
+146	82.5	0
+147	82.5	0
+148	82.5	0
+149	82.5	0
+150	82.5	0
+151	82.5	0
+152	82.5	0
+153	82.5	0
+154	82.5	0
+155	82.5	0
+156	82.5	0
+157	82.5	0
+158	82.5	0
+159	82.5	0
+160	82.5	0
+161	82.5	0
+162	82.5	0
+163	82.5	0
+164	82.5	0
+165	82.5	0
+166	82.5	0
+167	82.5	0
+168	82.5	0
+169	82.5	0
+170	82.5	0
+171	82.5	0
+172	82.5	0
+173	82.5	0
+174	82.5	0
+175	82.5	0
+176	82.5	0
+177	82.5	0
+178	82.5	0
+179	82.5	0
+180	82.5	0
+181	82.5	0
+182	82.5	0
+183	82.5	0
+184	82.5	0
+185	82.5	0
+186	82.5	0
+187	82.5	0
+188	82.5	0
+189	82.5	0
+190	82.5	0
+191	82.5	0
+192	82.5	0
+193	82.5	0
+194	82.5	0
+195	82.5	0
+196	82.5	0
+197	82.5	0
+198	82.5	0
+199	82.5	0
+200	82.5	0
+201	82.5	0
+202	82.5	0
+203	82.5	0
+204	82.5	0
+205	82.5	0
+206	82.5	0
+207	82.5	0
+208	82.5	0
+209	82.5	0
+210	82.5	0
+211	82.5	0
+212	82.5	0
+213	82.5	0
+214	82.5	0
+215	82.5	0
+216	82.5	0
+217	82.5	0
+218	82.5	0
+219	82.5	0
+220	82.5	0
+221	82.5	0
+222	82.5	0
+223	82.5	0
+224	82.5	0
+225	82.5	0
+226	82.5	0
+227	82.5	0
+228	82.5	0
+229	82.5	0
+230	82.5	0
+231	82.5	0
+232	82.5	0
+233	82.5	0
+234	82.5	0
+235	82.5	0
+236	82.5	0
+237	82.5	0
+238	82.5	0
+239	82.5	0
+240	82.5	0
+241	82.5	0
+242	82.5	0
+243	82.5	0
+244	82.5	0
+245	82.5	0
+246	82.5	0
+247	82.5	0
+248	82.5	0
+249	82.5	0
+250	82.5	0
+251	82.5	0
+252	82.5	0
+253	82.5	0
+254	82.5	0
+255	82.5	0
+256	82.5	0
+257	82.5	0
+258	82.5	0
+259	82.5	0
+260	82.5	0
+261	82.5	0
+262	82.5	0
+263	82.5	0
+264	82.5	0
+265	82.5	0
+266	82.5	0
+267	82.5	0
+268	82.5	0
+269	82.5	0
+270	82.5	0
+271	82.5	0
+272	82.5	0
+273	82.5	0
+274	82.5	0
+275	82.5	0
+276	82.5	0
+277	82.5	0
+278	82.5	0
+279	82.5	0
+280	82.5	0
+281	82.5	0
+282	82.5	0
+283	82.5	0
+284	82.5	0
+285	82.5	0
+286	82.5	0
+287	82.5	0
+288	82.5	0
+289	82.5	0
+290	82.5	0
+291	82.5	0
+292	82.5	0
+293	82.5	0
+294	82.5	0
+295	82.5	0
+296	82.5	0
+297	82.5	0
+298	82.5	0
+299	82.5	0
+300	82.5	0
+301	82.5	0
+302	82.5	0
+303	82.5	0
+304	82.5	0
+305	82.5	0
+306	82.5	0
+307	82.5	0
+308	82.5	0
+309	82.5	0
+310	82.5	0
+311	82.5	0
+312	82.5	0
+313	82.5	0
+314	82.5	0
+315	82.5	0
+316	82.5	0
+317	82.5	0
+318	82.5	0
+319	82.5	0
+320	82.5	0
+321	82.5	0
+322	82.5	0
+323	82.5	0
+324	82.5	0
+325	82.5	0
+326	82.5	0
+327	82.5	0
+328	82.5	0
+329	82.5	0
+330	82.5	0
+331	82.5	0
+332	82.5	0
+333	82.5	0
+334	82.5	0
+335	82.5	0
+336	82.5	0
+337	82.5	0
+338	82.5	0
+339	82.5	0
+340	82.5	0
+341	82.5	0
+342	82.5	0
+343	82.5	0
+344	82.5	0
+345	82.5	0
+346	82.5	0
+347	82.5	0
+348	82.5	0
+349	82.5	0
+350	82.5	0
+351	82.5	0
+352	82.5	0
+353	82.5	0
+354	82.5	0
+355	82.5	0
+356	82.5	0
+357	82.5	0
+358	82.5	0
+359	82.5	0
+360	82.5	0
+0	83	0
+1	83	0
+2	83	0
+3	83	0
+4	83	0
+5	83	0
+6	83	0
+7	83	0
+8	83	0
+9	83	0
+10	83	0
+11	83	0
+12	83	0
+13	83	0
+14	83	0
+15	83	0
+16	83	0
+17	83	0
+18	83	0
+19	83	0
+20	83	0
+21	83	0
+22	83	0
+23	83	0
+24	83	0
+25	83	0
+26	83	0
+27	83	0
+28	83	0
+29	83	0
+30	83	0
+31	83	0
+32	83	0
+33	83	0
+34	83	0
+35	83	0
+36	83	0
+37	83	0
+38	83	0
+39	83	0
+40	83	0
+41	83	0
+42	83	0
+43	83	0
+44	83	0
+45	83	0
+46	83	0
+47	83	0
+48	83	0
+49	83	0
+50	83	0
+51	83	0
+52	83	0
+53	83	0
+54	83	0
+55	83	0
+56	83	0
+57	83	0
+58	83	0
+59	83	0
+60	83	0
+61	83	0
+62	83	0
+63	83	0
+64	83	0
+65	83	0
+66	83	0
+67	83	0
+68	83	0
+69	83	0
+70	83	0
+71	83	0
+72	83	0
+73	83	0
+74	83	0
+75	83	0
+76	83	0
+77	83	0
+78	83	0
+79	83	0
+80	83	0
+81	83	0
+82	83	0
+83	83	0
+84	83	0
+85	83	0
+86	83	0
+87	83	0
+88	83	0
+89	83	0
+90	83	0
+91	83	0
+92	83	0
+93	83	0
+94	83	0
+95	83	0
+96	83	0
+97	83	0
+98	83	0
+99	83	0
+100	83	0
+101	83	0
+102	83	0
+103	83	0
+104	83	0
+105	83	0
+106	83	0
+107	83	0
+108	83	0
+109	83	0
+110	83	0
+111	83	0
+112	83	0
+113	83	0
+114	83	0
+115	83	0
+116	83	0
+117	83	0
+118	83	0
+119	83	0
+120	83	0
+121	83	0
+122	83	0
+123	83	0
+124	83	0
+125	83	0
+126	83	0
+127	83	0
+128	83	0
+129	83	0
+130	83	0
+131	83	0
+132	83	0
+133	83	0
+134	83	0
+135	83	0
+136	83	0
+137	83	0
+138	83	0
+139	83	0
+140	83	0
+141	83	0
+142	83	0
+143	83	0
+144	83	0
+145	83	0
+146	83	0
+147	83	0
+148	83	0
+149	83	0
+150	83	0
+151	83	0
+152	83	0
+153	83	0
+154	83	0
+155	83	0
+156	83	0
+157	83	0
+158	83	0
+159	83	0
+160	83	0
+161	83	0
+162	83	0
+163	83	0
+164	83	0
+165	83	0
+166	83	0
+167	83	0
+168	83	0
+169	83	0
+170	83	0
+171	83	0
+172	83	0
+173	83	0
+174	83	0
+175	83	0
+176	83	0
+177	83	0
+178	83	0
+179	83	0
+180	83	0
+181	83	0
+182	83	0
+183	83	0
+184	83	0
+185	83	0
+186	83	0
+187	83	0
+188	83	0
+189	83	0
+190	83	0
+191	83	0
+192	83	0
+193	83	0
+194	83	0
+195	83	0
+196	83	0
+197	83	0
+198	83	0
+199	83	0
+200	83	0
+201	83	0
+202	83	0
+203	83	0
+204	83	0
+205	83	0
+206	83	0
+207	83	0
+208	83	0
+209	83	0
+210	83	0
+211	83	0
+212	83	0
+213	83	0
+214	83	0
+215	83	0
+216	83	0
+217	83	0
+218	83	0
+219	83	0
+220	83	0
+221	83	0
+222	83	0
+223	83	0
+224	83	0
+225	83	0
+226	83	0
+227	83	0
+228	83	0
+229	83	0
+230	83	0
+231	83	0
+232	83	0
+233	83	0
+234	83	0
+235	83	0
+236	83	0
+237	83	0
+238	83	0
+239	83	0
+240	83	0
+241	83	0
+242	83	0
+243	83	0
+244	83	0
+245	83	0
+246	83	0
+247	83	0
+248	83	0
+249	83	0
+250	83	0
+251	83	0
+252	83	0
+253	83	0
+254	83	0
+255	83	0
+256	83	0
+257	83	0
+258	83	0
+259	83	0
+260	83	0
+261	83	0
+262	83	0
+263	83	0
+264	83	0
+265	83	0
+266	83	0
+267	83	0
+268	83	0
+269	83	0
+270	83	0
+271	83	0
+272	83	0
+273	83	0
+274	83	0
+275	83	0
+276	83	0
+277	83	0
+278	83	0
+279	83	0
+280	83	0
+281	83	0
+282	83	0
+283	83	0
+284	83	0
+285	83	0
+286	83	0
+287	83	0
+288	83	0
+289	83	0
+290	83	0
+291	83	0
+292	83	0
+293	83	0
+294	83	0
+295	83	0
+296	83	0
+297	83	0
+298	83	0
+299	83	0
+300	83	0
+301	83	0
+302	83	0
+303	83	0
+304	83	0
+305	83	0
+306	83	0
+307	83	0
+308	83	0
+309	83	0
+310	83	0
+311	83	0
+312	83	0
+313	83	0
+314	83	0
+315	83	0
+316	83	0
+317	83	0
+318	83	0
+319	83	0
+320	83	0
+321	83	0
+322	83	0
+323	83	0
+324	83	0
+325	83	0
+326	83	0
+327	83	0
+328	83	0
+329	83	0
+330	83	0
+331	83	0
+332	83	0
+333	83	0
+334	83	0
+335	83	0
+336	83	0
+337	83	0
+338	83	0
+339	83	0
+340	83	0
+341	83	0
+342	83	0
+343	83	0
+344	83	0
+345	83	0
+346	83	0
+347	83	0
+348	83	0
+349	83	0
+350	83	0
+351	83	0
+352	83	0
+353	83	0
+354	83	0
+355	83	0
+356	83	0
+357	83	0
+358	83	0
+359	83	0
+360	83	0
+0	83.5	0
+1	83.5	0
+2	83.5	0
+3	83.5	0
+4	83.5	0
+5	83.5	0
+6	83.5	0
+7	83.5	0
+8	83.5	0
+9	83.5	0
+10	83.5	0
+11	83.5	0
+12	83.5	0
+13	83.5	0
+14	83.5	0
+15	83.5	0
+16	83.5	0
+17	83.5	0
+18	83.5	0
+19	83.5	0
+20	83.5	0
+21	83.5	0
+22	83.5	0
+23	83.5	0
+24	83.5	0
+25	83.5	0
+26	83.5	0
+27	83.5	0
+28	83.5	0
+29	83.5	0
+30	83.5	0
+31	83.5	0
+32	83.5	0
+33	83.5	0
+34	83.5	0
+35	83.5	0
+36	83.5	0
+37	83.5	0
+38	83.5	0
+39	83.5	0
+40	83.5	0
+41	83.5	0
+42	83.5	0
+43	83.5	0
+44	83.5	0
+45	83.5	0
+46	83.5	0
+47	83.5	0
+48	83.5	0
+49	83.5	0
+50	83.5	0
+51	83.5	0
+52	83.5	0
+53	83.5	0
+54	83.5	0
+55	83.5	0
+56	83.5	0
+57	83.5	0
+58	83.5	0
+59	83.5	0
+60	83.5	0
+61	83.5	0
+62	83.5	0
+63	83.5	0
+64	83.5	0
+65	83.5	0
+66	83.5	0
+67	83.5	0
+68	83.5	0
+69	83.5	0
+70	83.5	0
+71	83.5	0
+72	83.5	0
+73	83.5	0
+74	83.5	0
+75	83.5	0
+76	83.5	0
+77	83.5	0
+78	83.5	0
+79	83.5	0
+80	83.5	0
+81	83.5	0
+82	83.5	0
+83	83.5	0
+84	83.5	0
+85	83.5	0
+86	83.5	0
+87	83.5	0
+88	83.5	0
+89	83.5	0
+90	83.5	0
+91	83.5	0
+92	83.5	0
+93	83.5	0
+94	83.5	0
+95	83.5	0
+96	83.5	0
+97	83.5	0
+98	83.5	0
+99	83.5	0
+100	83.5	0
+101	83.5	0
+102	83.5	0
+103	83.5	0
+104	83.5	0
+105	83.5	0
+106	83.5	0
+107	83.5	0
+108	83.5	0
+109	83.5	0
+110	83.5	0
+111	83.5	0
+112	83.5	0
+113	83.5	0
+114	83.5	0
+115	83.5	0
+116	83.5	0
+117	83.5	0
+118	83.5	0
+119	83.5	0
+120	83.5	0
+121	83.5	0
+122	83.5	0
+123	83.5	0
+124	83.5	0
+125	83.5	0
+126	83.5	0
+127	83.5	0
+128	83.5	0
+129	83.5	0
+130	83.5	0
+131	83.5	0
+132	83.5	0
+133	83.5	0
+134	83.5	0
+135	83.5	0
+136	83.5	0
+137	83.5	0
+138	83.5	0
+139	83.5	0
+140	83.5	0
+141	83.5	0
+142	83.5	0
+143	83.5	0
+144	83.5	0
+145	83.5	0
+146	83.5	0
+147	83.5	0
+148	83.5	0
+149	83.5	0
+150	83.5	0
+151	83.5	0
+152	83.5	0
+153	83.5	0
+154	83.5	0
+155	83.5	0
+156	83.5	0
+157	83.5	0
+158	83.5	0
+159	83.5	0
+160	83.5	0
+161	83.5	0
+162	83.5	0
+163	83.5	0
+164	83.5	0
+165	83.5	0
+166	83.5	0
+167	83.5	0
+168	83.5	0
+169	83.5	0
+170	83.5	0
+171	83.5	0
+172	83.5	0
+173	83.5	0
+174	83.5	0
+175	83.5	0
+176	83.5	0
+177	83.5	0
+178	83.5	0
+179	83.5	0
+180	83.5	0
+181	83.5	0
+182	83.5	0
+183	83.5	0
+184	83.5	0
+185	83.5	0
+186	83.5	0
+187	83.5	0
+188	83.5	0
+189	83.5	0
+190	83.5	0
+191	83.5	0
+192	83.5	0
+193	83.5	0
+194	83.5	0
+195	83.5	0
+196	83.5	0
+197	83.5	0
+198	83.5	0
+199	83.5	0
+200	83.5	0
+201	83.5	0
+202	83.5	0
+203	83.5	0
+204	83.5	0
+205	83.5	0
+206	83.5	0
+207	83.5	0
+208	83.5	0
+209	83.5	0
+210	83.5	0
+211	83.5	0
+212	83.5	0
+213	83.5	0
+214	83.5	0
+215	83.5	0
+216	83.5	0
+217	83.5	0
+218	83.5	0
+219	83.5	0
+220	83.5	0
+221	83.5	0
+222	83.5	0
+223	83.5	0
+224	83.5	0
+225	83.5	0
+226	83.5	0
+227	83.5	0
+228	83.5	0
+229	83.5	0
+230	83.5	0
+231	83.5	0
+232	83.5	0
+233	83.5	0
+234	83.5	0
+235	83.5	0
+236	83.5	0
+237	83.5	0
+238	83.5	0
+239	83.5	0
+240	83.5	0
+241	83.5	0
+242	83.5	0
+243	83.5	0
+244	83.5	0
+245	83.5	0
+246	83.5	0
+247	83.5	0
+248	83.5	0
+249	83.5	0
+250	83.5	0
+251	83.5	0
+252	83.5	0
+253	83.5	0
+254	83.5	0
+255	83.5	0
+256	83.5	0
+257	83.5	0
+258	83.5	0
+259	83.5	0
+260	83.5	0
+261	83.5	0
+262	83.5	0
+263	83.5	0
+264	83.5	0
+265	83.5	0
+266	83.5	0
+267	83.5	0
+268	83.5	0
+269	83.5	0
+270	83.5	0
+271	83.5	0
+272	83.5	0
+273	83.5	0
+274	83.5	0
+275	83.5	0
+276	83.5	0
+277	83.5	0
+278	83.5	0
+279	83.5	0
+280	83.5	0
+281	83.5	0
+282	83.5	0
+283	83.5	0
+284	83.5	0
+285	83.5	0
+286	83.5	0
+287	83.5	0
+288	83.5	0
+289	83.5	0
+290	83.5	0
+291	83.5	0
+292	83.5	0
+293	83.5	0
+294	83.5	0
+295	83.5	0
+296	83.5	0
+297	83.5	0
+298	83.5	0
+299	83.5	0
+300	83.5	0
+301	83.5	0
+302	83.5	0
+303	83.5	0
+304	83.5	0
+305	83.5	0
+306	83.5	0
+307	83.5	0
+308	83.5	0
+309	83.5	0
+310	83.5	0
+311	83.5	0
+312	83.5	0
+313	83.5	0
+314	83.5	0
+315	83.5	0
+316	83.5	0
+317	83.5	0
+318	83.5	0
+319	83.5	0
+320	83.5	0
+321	83.5	0
+322	83.5	0
+323	83.5	0
+324	83.5	0
+325	83.5	0
+326	83.5	0
+327	83.5	0
+328	83.5	0
+329	83.5	0
+330	83.5	0
+331	83.5	0
+332	83.5	0
+333	83.5	0
+334	83.5	0
+335	83.5	0
+336	83.5	0
+337	83.5	0
+338	83.5	0
+339	83.5	0
+340	83.5	0
+341	83.5	0
+342	83.5	0
+343	83.5	0
+344	83.5	0
+345	83.5	0
+346	83.5	0
+347	83.5	0
+348	83.5	0
+349	83.5	0
+350	83.5	0
+351	83.5	0
+352	83.5	0
+353	83.5	0
+354	83.5	0
+355	83.5	0
+356	83.5	0
+357	83.5	0
+358	83.5	0
+359	83.5	0
+360	83.5	0
+0	84	0
+1	84	0
+2	84	0
+3	84	0
+4	84	0
+5	84	0
+6	84	0
+7	84	0
+8	84	0
+9	84	0
+10	84	0
+11	84	0
+12	84	0
+13	84	0
+14	84	0
+15	84	0
+16	84	0
+17	84	0
+18	84	0
+19	84	0
+20	84	0
+21	84	0
+22	84	0
+23	84	0
+24	84	0
+25	84	0
+26	84	0
+27	84	0
+28	84	0
+29	84	0
+30	84	0
+31	84	0
+32	84	0
+33	84	0
+34	84	0
+35	84	0
+36	84	0
+37	84	0
+38	84	0
+39	84	0
+40	84	0
+41	84	0
+42	84	0
+43	84	0
+44	84	0
+45	84	0
+46	84	0
+47	84	0
+48	84	0
+49	84	0
+50	84	0
+51	84	0
+52	84	0
+53	84	0
+54	84	0
+55	84	0
+56	84	0
+57	84	0
+58	84	0
+59	84	0
+60	84	0
+61	84	0
+62	84	0
+63	84	0
+64	84	0
+65	84	0
+66	84	0
+67	84	0
+68	84	0
+69	84	0
+70	84	0
+71	84	0
+72	84	0
+73	84	0
+74	84	0
+75	84	0
+76	84	0
+77	84	0
+78	84	0
+79	84	0
+80	84	0
+81	84	0
+82	84	0
+83	84	0
+84	84	0
+85	84	0
+86	84	0
+87	84	0
+88	84	0
+89	84	0
+90	84	0
+91	84	0
+92	84	0
+93	84	0
+94	84	0
+95	84	0
+96	84	0
+97	84	0
+98	84	0
+99	84	0
+100	84	0
+101	84	0
+102	84	0
+103	84	0
+104	84	0
+105	84	0
+106	84	0
+107	84	0
+108	84	0
+109	84	0
+110	84	0
+111	84	0
+112	84	0
+113	84	0
+114	84	0
+115	84	0
+116	84	0
+117	84	0
+118	84	0
+119	84	0
+120	84	0
+121	84	0
+122	84	0
+123	84	0
+124	84	0
+125	84	0
+126	84	0
+127	84	0
+128	84	0
+129	84	0
+130	84	0
+131	84	0
+132	84	0
+133	84	0
+134	84	0
+135	84	0
+136	84	0
+137	84	0
+138	84	0
+139	84	0
+140	84	0
+141	84	0
+142	84	0
+143	84	0
+144	84	0
+145	84	0
+146	84	0
+147	84	0
+148	84	0
+149	84	0
+150	84	0
+151	84	0
+152	84	0
+153	84	0
+154	84	0
+155	84	0
+156	84	0
+157	84	0
+158	84	0
+159	84	0
+160	84	0
+161	84	0
+162	84	0
+163	84	0
+164	84	0
+165	84	0
+166	84	0
+167	84	0
+168	84	0
+169	84	0
+170	84	0
+171	84	0
+172	84	0
+173	84	0
+174	84	0
+175	84	0
+176	84	0
+177	84	0
+178	84	0
+179	84	0
+180	84	0
+181	84	0
+182	84	0
+183	84	0
+184	84	0
+185	84	0
+186	84	0
+187	84	0
+188	84	0
+189	84	0
+190	84	0
+191	84	0
+192	84	0
+193	84	0
+194	84	0
+195	84	0
+196	84	0
+197	84	0
+198	84	0
+199	84	0
+200	84	0
+201	84	0
+202	84	0
+203	84	0
+204	84	0
+205	84	0
+206	84	0
+207	84	0
+208	84	0
+209	84	0
+210	84	0
+211	84	0
+212	84	0
+213	84	0
+214	84	0
+215	84	0
+216	84	0
+217	84	0
+218	84	0
+219	84	0
+220	84	0
+221	84	0
+222	84	0
+223	84	0
+224	84	0
+225	84	0
+226	84	0
+227	84	0
+228	84	0
+229	84	0
+230	84	0
+231	84	0
+232	84	0
+233	84	0
+234	84	0
+235	84	0
+236	84	0
+237	84	0
+238	84	0
+239	84	0
+240	84	0
+241	84	0
+242	84	0
+243	84	0
+244	84	0
+245	84	0
+246	84	0
+247	84	0
+248	84	0
+249	84	0
+250	84	0
+251	84	0
+252	84	0
+253	84	0
+254	84	0
+255	84	0
+256	84	0
+257	84	0
+258	84	0
+259	84	0
+260	84	0
+261	84	0
+262	84	0
+263	84	0
+264	84	0
+265	84	0
+266	84	0
+267	84	0
+268	84	0
+269	84	0
+270	84	0
+271	84	0
+272	84	0
+273	84	0
+274	84	0
+275	84	0
+276	84	0
+277	84	0
+278	84	0
+279	84	0
+280	84	0
+281	84	0
+282	84	0
+283	84	0
+284	84	0
+285	84	0
+286	84	0
+287	84	0
+288	84	0
+289	84	0
+290	84	0
+291	84	0
+292	84	0
+293	84	0
+294	84	0
+295	84	0
+296	84	0
+297	84	0
+298	84	0
+299	84	0
+300	84	0
+301	84	0
+302	84	0
+303	84	0
+304	84	0
+305	84	0
+306	84	0
+307	84	0
+308	84	0
+309	84	0
+310	84	0
+311	84	0
+312	84	0
+313	84	0
+314	84	0
+315	84	0
+316	84	0
+317	84	0
+318	84	0
+319	84	0
+320	84	0
+321	84	0
+322	84	0
+323	84	0
+324	84	0
+325	84	0
+326	84	0
+327	84	0
+328	84	0
+329	84	0
+330	84	0
+331	84	0
+332	84	0
+333	84	0
+334	84	0
+335	84	0
+336	84	0
+337	84	0
+338	84	0
+339	84	0
+340	84	0
+341	84	0
+342	84	0
+343	84	0
+344	84	0
+345	84	0
+346	84	0
+347	84	0
+348	84	0
+349	84	0
+350	84	0
+351	84	0
+352	84	0
+353	84	0
+354	84	0
+355	84	0
+356	84	0
+357	84	0
+358	84	0
+359	84	0
+360	84	0
+0	84.5	0
+1	84.5	0
+2	84.5	0
+3	84.5	0
+4	84.5	0
+5	84.5	0
+6	84.5	0
+7	84.5	0
+8	84.5	0
+9	84.5	0
+10	84.5	0
+11	84.5	0
+12	84.5	0
+13	84.5	0
+14	84.5	0
+15	84.5	0
+16	84.5	0
+17	84.5	0
+18	84.5	0
+19	84.5	0
+20	84.5	0
+21	84.5	0
+22	84.5	0
+23	84.5	0
+24	84.5	0
+25	84.5	0
+26	84.5	0
+27	84.5	0
+28	84.5	0
+29	84.5	0
+30	84.5	0
+31	84.5	0
+32	84.5	0
+33	84.5	0
+34	84.5	0
+35	84.5	0
+36	84.5	0
+37	84.5	0
+38	84.5	0
+39	84.5	0
+40	84.5	0
+41	84.5	0
+42	84.5	0
+43	84.5	0
+44	84.5	0
+45	84.5	0
+46	84.5	0
+47	84.5	0
+48	84.5	0
+49	84.5	0
+50	84.5	0
+51	84.5	0
+52	84.5	0
+53	84.5	0
+54	84.5	0
+55	84.5	0
+56	84.5	0
+57	84.5	0
+58	84.5	0
+59	84.5	0
+60	84.5	0
+61	84.5	0
+62	84.5	0
+63	84.5	0
+64	84.5	0
+65	84.5	0
+66	84.5	0
+67	84.5	0
+68	84.5	0
+69	84.5	0
+70	84.5	0
+71	84.5	0
+72	84.5	0
+73	84.5	0
+74	84.5	0
+75	84.5	0
+76	84.5	0
+77	84.5	0
+78	84.5	0
+79	84.5	0
+80	84.5	0
+81	84.5	0
+82	84.5	0
+83	84.5	0
+84	84.5	0
+85	84.5	0
+86	84.5	0
+87	84.5	0
+88	84.5	0
+89	84.5	0
+90	84.5	0
+91	84.5	0
+92	84.5	0
+93	84.5	0
+94	84.5	0
+95	84.5	0
+96	84.5	0
+97	84.5	0
+98	84.5	0
+99	84.5	0
+100	84.5	0
+101	84.5	0
+102	84.5	0
+103	84.5	0
+104	84.5	0
+105	84.5	0
+106	84.5	0
+107	84.5	0
+108	84.5	0
+109	84.5	0
+110	84.5	0
+111	84.5	0
+112	84.5	0
+113	84.5	0
+114	84.5	0
+115	84.5	0
+116	84.5	0
+117	84.5	0
+118	84.5	0
+119	84.5	0
+120	84.5	0
+121	84.5	0
+122	84.5	0
+123	84.5	0
+124	84.5	0
+125	84.5	0
+126	84.5	0
+127	84.5	0
+128	84.5	0
+129	84.5	0
+130	84.5	0
+131	84.5	0
+132	84.5	0
+133	84.5	0
+134	84.5	0
+135	84.5	0
+136	84.5	0
+137	84.5	0
+138	84.5	0
+139	84.5	0
+140	84.5	0
+141	84.5	0
+142	84.5	0
+143	84.5	0
+144	84.5	0
+145	84.5	0
+146	84.5	0
+147	84.5	0
+148	84.5	0
+149	84.5	0
+150	84.5	0
+151	84.5	0
+152	84.5	0
+153	84.5	0
+154	84.5	0
+155	84.5	0
+156	84.5	0
+157	84.5	0
+158	84.5	0
+159	84.5	0
+160	84.5	0
+161	84.5	0
+162	84.5	0
+163	84.5	0
+164	84.5	0
+165	84.5	0
+166	84.5	0
+167	84.5	0
+168	84.5	0
+169	84.5	0
+170	84.5	0
+171	84.5	0
+172	84.5	0
+173	84.5	0
+174	84.5	0
+175	84.5	0
+176	84.5	0
+177	84.5	0
+178	84.5	0
+179	84.5	0
+180	84.5	0
+181	84.5	0
+182	84.5	0
+183	84.5	0
+184	84.5	0
+185	84.5	0
+186	84.5	0
+187	84.5	0
+188	84.5	0
+189	84.5	0
+190	84.5	0
+191	84.5	0
+192	84.5	0
+193	84.5	0
+194	84.5	0
+195	84.5	0
+196	84.5	0
+197	84.5	0
+198	84.5	0
+199	84.5	0
+200	84.5	0
+201	84.5	0
+202	84.5	0
+203	84.5	0
+204	84.5	0
+205	84.5	0
+206	84.5	0
+207	84.5	0
+208	84.5	0
+209	84.5	0
+210	84.5	0
+211	84.5	0
+212	84.5	0
+213	84.5	0
+214	84.5	0
+215	84.5	0
+216	84.5	0
+217	84.5	0
+218	84.5	0
+219	84.5	0
+220	84.5	0
+221	84.5	0
+222	84.5	0
+223	84.5	0
+224	84.5	0
+225	84.5	0
+226	84.5	0
+227	84.5	0
+228	84.5	0
+229	84.5	0
+230	84.5	0
+231	84.5	0
+232	84.5	0
+233	84.5	0
+234	84.5	0
+235	84.5	0
+236	84.5	0
+237	84.5	0
+238	84.5	0
+239	84.5	0
+240	84.5	0
+241	84.5	0
+242	84.5	0
+243	84.5	0
+244	84.5	0
+245	84.5	0
+246	84.5	0
+247	84.5	0
+248	84.5	0
+249	84.5	0
+250	84.5	0
+251	84.5	0
+252	84.5	0
+253	84.5	0
+254	84.5	0
+255	84.5	0
+256	84.5	0
+257	84.5	0
+258	84.5	0
+259	84.5	0
+260	84.5	0
+261	84.5	0
+262	84.5	0
+263	84.5	0
+264	84.5	0
+265	84.5	0
+266	84.5	0
+267	84.5	0
+268	84.5	0
+269	84.5	0
+270	84.5	0
+271	84.5	0
+272	84.5	0
+273	84.5	0
+274	84.5	0
+275	84.5	0
+276	84.5	0
+277	84.5	0
+278	84.5	0
+279	84.5	0
+280	84.5	0
+281	84.5	0
+282	84.5	0
+283	84.5	0
+284	84.5	0
+285	84.5	0
+286	84.5	0
+287	84.5	0
+288	84.5	0
+289	84.5	0
+290	84.5	0
+291	84.5	0
+292	84.5	0
+293	84.5	0
+294	84.5	0
+295	84.5	0
+296	84.5	0
+297	84.5	0
+298	84.5	0
+299	84.5	0
+300	84.5	0
+301	84.5	0
+302	84.5	0
+303	84.5	0
+304	84.5	0
+305	84.5	0
+306	84.5	0
+307	84.5	0
+308	84.5	0
+309	84.5	0
+310	84.5	0
+311	84.5	0
+312	84.5	0
+313	84.5	0
+314	84.5	0
+315	84.5	0
+316	84.5	0
+317	84.5	0
+318	84.5	0
+319	84.5	0
+320	84.5	0
+321	84.5	0
+322	84.5	0
+323	84.5	0
+324	84.5	0
+325	84.5	0
+326	84.5	0
+327	84.5	0
+328	84.5	0
+329	84.5	0
+330	84.5	0
+331	84.5	0
+332	84.5	0
+333	84.5	0
+334	84.5	0
+335	84.5	0
+336	84.5	0
+337	84.5	0
+338	84.5	0
+339	84.5	0
+340	84.5	0
+341	84.5	0
+342	84.5	0
+343	84.5	0
+344	84.5	0
+345	84.5	0
+346	84.5	0
+347	84.5	0
+348	84.5	0
+349	84.5	0
+350	84.5	0
+351	84.5	0
+352	84.5	0
+353	84.5	0
+354	84.5	0
+355	84.5	0
+356	84.5	0
+357	84.5	0
+358	84.5	0
+359	84.5	0
+360	84.5	0
+0	85	0
+1	85	0
+2	85	0
+3	85	0
+4	85	0
+5	85	0
+6	85	0
+7	85	0
+8	85	0
+9	85	0
+10	85	0
+11	85	0
+12	85	0
+13	85	0
+14	85	0
+15	85	0
+16	85	0
+17	85	0
+18	85	0
+19	85	0
+20	85	0
+21	85	0
+22	85	0
+23	85	0
+24	85	0
+25	85	0
+26	85	0
+27	85	0
+28	85	0
+29	85	0
+30	85	0
+31	85	0
+32	85	0
+33	85	0
+34	85	0
+35	85	0
+36	85	0
+37	85	0
+38	85	0
+39	85	0
+40	85	0
+41	85	0
+42	85	0
+43	85	0
+44	85	0
+45	85	0
+46	85	0
+47	85	0
+48	85	0
+49	85	0
+50	85	0
+51	85	0
+52	85	0
+53	85	0
+54	85	0
+55	85	0
+56	85	0
+57	85	0
+58	85	0
+59	85	0
+60	85	0
+61	85	0
+62	85	0
+63	85	0
+64	85	0
+65	85	0
+66	85	0
+67	85	0
+68	85	0
+69	85	0
+70	85	0
+71	85	0
+72	85	0
+73	85	0
+74	85	0
+75	85	0
+76	85	0
+77	85	0
+78	85	0
+79	85	0
+80	85	0
+81	85	0
+82	85	0
+83	85	0
+84	85	0
+85	85	0
+86	85	0
+87	85	0
+88	85	0
+89	85	0
+90	85	0
+91	85	0
+92	85	0
+93	85	0
+94	85	0
+95	85	0
+96	85	0
+97	85	0
+98	85	0
+99	85	0
+100	85	0
+101	85	0
+102	85	0
+103	85	0
+104	85	0
+105	85	0
+106	85	0
+107	85	0
+108	85	0
+109	85	0
+110	85	0
+111	85	0
+112	85	0
+113	85	0
+114	85	0
+115	85	0
+116	85	0
+117	85	0
+118	85	0
+119	85	0
+120	85	0
+121	85	0
+122	85	0
+123	85	0
+124	85	0
+125	85	0
+126	85	0
+127	85	0
+128	85	0
+129	85	0
+130	85	0
+131	85	0
+132	85	0
+133	85	0
+134	85	0
+135	85	0
+136	85	0
+137	85	0
+138	85	0
+139	85	0
+140	85	0
+141	85	0
+142	85	0
+143	85	0
+144	85	0
+145	85	0
+146	85	0
+147	85	0
+148	85	0
+149	85	0
+150	85	0
+151	85	0
+152	85	0
+153	85	0
+154	85	0
+155	85	0
+156	85	0
+157	85	0
+158	85	0
+159	85	0
+160	85	0
+161	85	0
+162	85	0
+163	85	0
+164	85	0
+165	85	0
+166	85	0
+167	85	0
+168	85	0
+169	85	0
+170	85	0
+171	85	0
+172	85	0
+173	85	0
+174	85	0
+175	85	0
+176	85	0
+177	85	0
+178	85	0
+179	85	0
+180	85	0
+181	85	0
+182	85	0
+183	85	0
+184	85	0
+185	85	0
+186	85	0
+187	85	0
+188	85	0
+189	85	0
+190	85	0
+191	85	0
+192	85	0
+193	85	0
+194	85	0
+195	85	0
+196	85	0
+197	85	0
+198	85	0
+199	85	0
+200	85	0
+201	85	0
+202	85	0
+203	85	0
+204	85	0
+205	85	0
+206	85	0
+207	85	0
+208	85	0
+209	85	0
+210	85	0
+211	85	0
+212	85	0
+213	85	0
+214	85	0
+215	85	0
+216	85	0
+217	85	0
+218	85	0
+219	85	0
+220	85	0
+221	85	0
+222	85	0
+223	85	0
+224	85	0
+225	85	0
+226	85	0
+227	85	0
+228	85	0
+229	85	0
+230	85	0
+231	85	0
+232	85	0
+233	85	0
+234	85	0
+235	85	0
+236	85	0
+237	85	0
+238	85	0
+239	85	0
+240	85	0
+241	85	0
+242	85	0
+243	85	0
+244	85	0
+245	85	0
+246	85	0
+247	85	0
+248	85	0
+249	85	0
+250	85	0
+251	85	0
+252	85	0
+253	85	0
+254	85	0
+255	85	0
+256	85	0
+257	85	0
+258	85	0
+259	85	0
+260	85	0
+261	85	0
+262	85	0
+263	85	0
+264	85	0
+265	85	0
+266	85	0
+267	85	0
+268	85	0
+269	85	0
+270	85	0
+271	85	0
+272	85	0
+273	85	0
+274	85	0
+275	85	0
+276	85	0
+277	85	0
+278	85	0
+279	85	0
+280	85	0
+281	85	0
+282	85	0
+283	85	0
+284	85	0
+285	85	0
+286	85	0
+287	85	0
+288	85	0
+289	85	0
+290	85	0
+291	85	0
+292	85	0
+293	85	0
+294	85	0
+295	85	0
+296	85	0
+297	85	0
+298	85	0
+299	85	0
+300	85	0
+301	85	0
+302	85	0
+303	85	0
+304	85	0
+305	85	0
+306	85	0
+307	85	0
+308	85	0
+309	85	0
+310	85	0
+311	85	0
+312	85	0
+313	85	0
+314	85	0
+315	85	0
+316	85	0
+317	85	0
+318	85	0
+319	85	0
+320	85	0
+321	85	0
+322	85	0
+323	85	0
+324	85	0
+325	85	0
+326	85	0
+327	85	0
+328	85	0
+329	85	0
+330	85	0
+331	85	0
+332	85	0
+333	85	0
+334	85	0
+335	85	0
+336	85	0
+337	85	0
+338	85	0
+339	85	0
+340	85	0
+341	85	0
+342	85	0
+343	85	0
+344	85	0
+345	85	0
+346	85	0
+347	85	0
+348	85	0
+349	85	0
+350	85	0
+351	85	0
+352	85	0
+353	85	0
+354	85	0
+355	85	0
+356	85	0
+357	85	0
+358	85	0
+359	85	0
+360	85	0
+0	85.5	0
+1	85.5	0
+2	85.5	0
+3	85.5	0
+4	85.5	0
+5	85.5	0
+6	85.5	0
+7	85.5	0
+8	85.5	0
+9	85.5	0
+10	85.5	0
+11	85.5	0
+12	85.5	0
+13	85.5	0
+14	85.5	0
+15	85.5	0
+16	85.5	0
+17	85.5	0
+18	85.5	0
+19	85.5	0
+20	85.5	0
+21	85.5	0
+22	85.5	0
+23	85.5	0
+24	85.5	0
+25	85.5	0
+26	85.5	0
+27	85.5	0
+28	85.5	0
+29	85.5	0
+30	85.5	0
+31	85.5	0
+32	85.5	0
+33	85.5	0
+34	85.5	0
+35	85.5	0
+36	85.5	0
+37	85.5	0
+38	85.5	0
+39	85.5	0
+40	85.5	0
+41	85.5	0
+42	85.5	0
+43	85.5	0
+44	85.5	0
+45	85.5	0
+46	85.5	0
+47	85.5	0
+48	85.5	0
+49	85.5	0
+50	85.5	0
+51	85.5	0
+52	85.5	0
+53	85.5	0
+54	85.5	0
+55	85.5	0
+56	85.5	0
+57	85.5	0
+58	85.5	0
+59	85.5	0
+60	85.5	0
+61	85.5	0
+62	85.5	0
+63	85.5	0
+64	85.5	0
+65	85.5	0
+66	85.5	0
+67	85.5	0
+68	85.5	0
+69	85.5	0
+70	85.5	0
+71	85.5	0
+72	85.5	0
+73	85.5	0
+74	85.5	0
+75	85.5	0
+76	85.5	0
+77	85.5	0
+78	85.5	0
+79	85.5	0
+80	85.5	0
+81	85.5	0
+82	85.5	0
+83	85.5	0
+84	85.5	0
+85	85.5	0
+86	85.5	0
+87	85.5	0
+88	85.5	0
+89	85.5	0
+90	85.5	0
+91	85.5	0
+92	85.5	0
+93	85.5	0
+94	85.5	0
+95	85.5	0
+96	85.5	0
+97	85.5	0
+98	85.5	0
+99	85.5	0
+100	85.5	0
+101	85.5	0
+102	85.5	0
+103	85.5	0
+104	85.5	0
+105	85.5	0
+106	85.5	0
+107	85.5	0
+108	85.5	0
+109	85.5	0
+110	85.5	0
+111	85.5	0
+112	85.5	0
+113	85.5	0
+114	85.5	0
+115	85.5	0
+116	85.5	0
+117	85.5	0
+118	85.5	0
+119	85.5	0
+120	85.5	0
+121	85.5	0
+122	85.5	0
+123	85.5	0
+124	85.5	0
+125	85.5	0
+126	85.5	0
+127	85.5	0
+128	85.5	0
+129	85.5	0
+130	85.5	0
+131	85.5	0
+132	85.5	0
+133	85.5	0
+134	85.5	0
+135	85.5	0
+136	85.5	0
+137	85.5	0
+138	85.5	0
+139	85.5	0
+140	85.5	0
+141	85.5	0
+142	85.5	0
+143	85.5	0
+144	85.5	0
+145	85.5	0
+146	85.5	0
+147	85.5	0
+148	85.5	0
+149	85.5	0
+150	85.5	0
+151	85.5	0
+152	85.5	0
+153	85.5	0
+154	85.5	0
+155	85.5	0
+156	85.5	0
+157	85.5	0
+158	85.5	0
+159	85.5	0
+160	85.5	0
+161	85.5	0
+162	85.5	0
+163	85.5	0
+164	85.5	0
+165	85.5	0
+166	85.5	0
+167	85.5	0
+168	85.5	0
+169	85.5	0
+170	85.5	0
+171	85.5	0
+172	85.5	0
+173	85.5	0
+174	85.5	0
+175	85.5	0
+176	85.5	0
+177	85.5	0
+178	85.5	0
+179	85.5	0
+180	85.5	0
+181	85.5	0
+182	85.5	0
+183	85.5	0
+184	85.5	0
+185	85.5	0
+186	85.5	0
+187	85.5	0
+188	85.5	0
+189	85.5	0
+190	85.5	0
+191	85.5	0
+192	85.5	0
+193	85.5	0
+194	85.5	0
+195	85.5	0
+196	85.5	0
+197	85.5	0
+198	85.5	0
+199	85.5	0
+200	85.5	0
+201	85.5	0
+202	85.5	0
+203	85.5	0
+204	85.5	0
+205	85.5	0
+206	85.5	0
+207	85.5	0
+208	85.5	0
+209	85.5	0
+210	85.5	0
+211	85.5	0
+212	85.5	0
+213	85.5	0
+214	85.5	0
+215	85.5	0
+216	85.5	0
+217	85.5	0
+218	85.5	0
+219	85.5	0
+220	85.5	0
+221	85.5	0
+222	85.5	0
+223	85.5	0
+224	85.5	0
+225	85.5	0
+226	85.5	0
+227	85.5	0
+228	85.5	0
+229	85.5	0
+230	85.5	0
+231	85.5	0
+232	85.5	0
+233	85.5	0
+234	85.5	0
+235	85.5	0
+236	85.5	0
+237	85.5	0
+238	85.5	0
+239	85.5	0
+240	85.5	0
+241	85.5	0
+242	85.5	0
+243	85.5	0
+244	85.5	0
+245	85.5	0
+246	85.5	0
+247	85.5	0
+248	85.5	0
+249	85.5	0
+250	85.5	0
+251	85.5	0
+252	85.5	0
+253	85.5	0
+254	85.5	0
+255	85.5	0
+256	85.5	0
+257	85.5	0
+258	85.5	0
+259	85.5	0
+260	85.5	0
+261	85.5	0
+262	85.5	0
+263	85.5	0
+264	85.5	0
+265	85.5	0
+266	85.5	0
+267	85.5	0
+268	85.5	0
+269	85.5	0
+270	85.5	0
+271	85.5	0
+272	85.5	0
+273	85.5	0
+274	85.5	0
+275	85.5	0
+276	85.5	0
+277	85.5	0
+278	85.5	0
+279	85.5	0
+280	85.5	0
+281	85.5	0
+282	85.5	0
+283	85.5	0
+284	85.5	0
+285	85.5	0
+286	85.5	0
+287	85.5	0
+288	85.5	0
+289	85.5	0
+290	85.5	0
+291	85.5	0
+292	85.5	0
+293	85.5	0
+294	85.5	0
+295	85.5	0
+296	85.5	0
+297	85.5	0
+298	85.5	0
+299	85.5	0
+300	85.5	0
+301	85.5	0
+302	85.5	0
+303	85.5	0
+304	85.5	0
+305	85.5	0
+306	85.5	0
+307	85.5	0
+308	85.5	0
+309	85.5	0
+310	85.5	0
+311	85.5	0
+312	85.5	0
+313	85.5	0
+314	85.5	0
+315	85.5	0
+316	85.5	0
+317	85.5	0
+318	85.5	0
+319	85.5	0
+320	85.5	0
+321	85.5	0
+322	85.5	0
+323	85.5	0
+324	85.5	0
+325	85.5	0
+326	85.5	0
+327	85.5	0
+328	85.5	0
+329	85.5	0
+330	85.5	0
+331	85.5	0
+332	85.5	0
+333	85.5	0
+334	85.5	0
+335	85.5	0
+336	85.5	0
+337	85.5	0
+338	85.5	0
+339	85.5	0
+340	85.5	0
+341	85.5	0
+342	85.5	0
+343	85.5	0
+344	85.5	0
+345	85.5	0
+346	85.5	0
+347	85.5	0
+348	85.5	0
+349	85.5	0
+350	85.5	0
+351	85.5	0
+352	85.5	0
+353	85.5	0
+354	85.5	0
+355	85.5	0
+356	85.5	0
+357	85.5	0
+358	85.5	0
+359	85.5	0
+360	85.5	0
+0	86	0
+1	86	0
+2	86	0
+3	86	0
+4	86	0
+5	86	0
+6	86	0
+7	86	0
+8	86	0
+9	86	0
+10	86	0
+11	86	0
+12	86	0
+13	86	0
+14	86	0
+15	86	0
+16	86	0
+17	86	0
+18	86	0
+19	86	0
+20	86	0
+21	86	0
+22	86	0
+23	86	0
+24	86	0
+25	86	0
+26	86	0
+27	86	0
+28	86	0
+29	86	0
+30	86	0
+31	86	0
+32	86	0
+33	86	0
+34	86	0
+35	86	0
+36	86	0
+37	86	0
+38	86	0
+39	86	0
+40	86	0
+41	86	0
+42	86	0
+43	86	0
+44	86	0
+45	86	0
+46	86	0
+47	86	0
+48	86	0
+49	86	0
+50	86	0
+51	86	0
+52	86	0
+53	86	0
+54	86	0
+55	86	0
+56	86	0
+57	86	0
+58	86	0
+59	86	0
+60	86	0
+61	86	0
+62	86	0
+63	86	0
+64	86	0
+65	86	0
+66	86	0
+67	86	0
+68	86	0
+69	86	0
+70	86	0
+71	86	0
+72	86	0
+73	86	0
+74	86	0
+75	86	0
+76	86	0
+77	86	0
+78	86	0
+79	86	0
+80	86	0
+81	86	0
+82	86	0
+83	86	0
+84	86	0
+85	86	0
+86	86	0
+87	86	0
+88	86	0
+89	86	0
+90	86	0
+91	86	0
+92	86	0
+93	86	0
+94	86	0
+95	86	0
+96	86	0
+97	86	0
+98	86	0
+99	86	0
+100	86	0
+101	86	0
+102	86	0
+103	86	0
+104	86	0
+105	86	0
+106	86	0
+107	86	0
+108	86	0
+109	86	0
+110	86	0
+111	86	0
+112	86	0
+113	86	0
+114	86	0
+115	86	0
+116	86	0
+117	86	0
+118	86	0
+119	86	0
+120	86	0
+121	86	0
+122	86	0
+123	86	0
+124	86	0
+125	86	0
+126	86	0
+127	86	0
+128	86	0
+129	86	0
+130	86	0
+131	86	0
+132	86	0
+133	86	0
+134	86	0
+135	86	0
+136	86	0
+137	86	0
+138	86	0
+139	86	0
+140	86	0
+141	86	0
+142	86	0
+143	86	0
+144	86	0
+145	86	0
+146	86	0
+147	86	0
+148	86	0
+149	86	0
+150	86	0
+151	86	0
+152	86	0
+153	86	0
+154	86	0
+155	86	0
+156	86	0
+157	86	0
+158	86	0
+159	86	0
+160	86	0
+161	86	0
+162	86	0
+163	86	0
+164	86	0
+165	86	0
+166	86	0
+167	86	0
+168	86	0
+169	86	0
+170	86	0
+171	86	0
+172	86	0
+173	86	0
+174	86	0
+175	86	0
+176	86	0
+177	86	0
+178	86	0
+179	86	0
+180	86	0
+181	86	0
+182	86	0
+183	86	0
+184	86	0
+185	86	0
+186	86	0
+187	86	0
+188	86	0
+189	86	0
+190	86	0
+191	86	0
+192	86	0
+193	86	0
+194	86	0
+195	86	0
+196	86	0
+197	86	0
+198	86	0
+199	86	0
+200	86	0
+201	86	0
+202	86	0
+203	86	0
+204	86	0
+205	86	0
+206	86	0
+207	86	0
+208	86	0
+209	86	0
+210	86	0
+211	86	0
+212	86	0
+213	86	0
+214	86	0
+215	86	0
+216	86	0
+217	86	0
+218	86	0
+219	86	0
+220	86	0
+221	86	0
+222	86	0
+223	86	0
+224	86	0
+225	86	0
+226	86	0
+227	86	0
+228	86	0
+229	86	0
+230	86	0
+231	86	0
+232	86	0
+233	86	0
+234	86	0
+235	86	0
+236	86	0
+237	86	0
+238	86	0
+239	86	0
+240	86	0
+241	86	0
+242	86	0
+243	86	0
+244	86	0
+245	86	0
+246	86	0
+247	86	0
+248	86	0
+249	86	0
+250	86	0
+251	86	0
+252	86	0
+253	86	0
+254	86	0
+255	86	0
+256	86	0
+257	86	0
+258	86	0
+259	86	0
+260	86	0
+261	86	0
+262	86	0
+263	86	0
+264	86	0
+265	86	0
+266	86	0
+267	86	0
+268	86	0
+269	86	0
+270	86	0
+271	86	0
+272	86	0
+273	86	0
+274	86	0
+275	86	0
+276	86	0
+277	86	0
+278	86	0
+279	86	0
+280	86	0
+281	86	0
+282	86	0
+283	86	0
+284	86	0
+285	86	0
+286	86	0
+287	86	0
+288	86	0
+289	86	0
+290	86	0
+291	86	0
+292	86	0
+293	86	0
+294	86	0
+295	86	0
+296	86	0
+297	86	0
+298	86	0
+299	86	0
+300	86	0
+301	86	0
+302	86	0
+303	86	0
+304	86	0
+305	86	0
+306	86	0
+307	86	0
+308	86	0
+309	86	0
+310	86	0
+311	86	0
+312	86	0
+313	86	0
+314	86	0
+315	86	0
+316	86	0
+317	86	0
+318	86	0
+319	86	0
+320	86	0
+321	86	0
+322	86	0
+323	86	0
+324	86	0
+325	86	0
+326	86	0
+327	86	0
+328	86	0
+329	86	0
+330	86	0
+331	86	0
+332	86	0
+333	86	0
+334	86	0
+335	86	0
+336	86	0
+337	86	0
+338	86	0
+339	86	0
+340	86	0
+341	86	0
+342	86	0
+343	86	0
+344	86	0
+345	86	0
+346	86	0
+347	86	0
+348	86	0
+349	86	0
+350	86	0
+351	86	0
+352	86	0
+353	86	0
+354	86	0
+355	86	0
+356	86	0
+357	86	0
+358	86	0
+359	86	0
+360	86	0
+0	86.5	0
+1	86.5	0
+2	86.5	0
+3	86.5	0
+4	86.5	0
+5	86.5	0
+6	86.5	0
+7	86.5	0
+8	86.5	0
+9	86.5	0
+10	86.5	0
+11	86.5	0
+12	86.5	0
+13	86.5	0
+14	86.5	0
+15	86.5	0
+16	86.5	0
+17	86.5	0
+18	86.5	0
+19	86.5	0
+20	86.5	0
+21	86.5	0
+22	86.5	0
+23	86.5	0
+24	86.5	0
+25	86.5	0
+26	86.5	0
+27	86.5	0
+28	86.5	0
+29	86.5	0
+30	86.5	0
+31	86.5	0
+32	86.5	0
+33	86.5	0
+34	86.5	0
+35	86.5	0
+36	86.5	0
+37	86.5	0
+38	86.5	0
+39	86.5	0
+40	86.5	0
+41	86.5	0
+42	86.5	0
+43	86.5	0
+44	86.5	0
+45	86.5	0
+46	86.5	0
+47	86.5	0
+48	86.5	0
+49	86.5	0
+50	86.5	0
+51	86.5	0
+52	86.5	0
+53	86.5	0
+54	86.5	0
+55	86.5	0
+56	86.5	0
+57	86.5	0
+58	86.5	0
+59	86.5	0
+60	86.5	0
+61	86.5	0
+62	86.5	0
+63	86.5	0
+64	86.5	0
+65	86.5	0
+66	86.5	0
+67	86.5	0
+68	86.5	0
+69	86.5	0
+70	86.5	0
+71	86.5	0
+72	86.5	0
+73	86.5	0
+74	86.5	0
+75	86.5	0
+76	86.5	0
+77	86.5	0
+78	86.5	0
+79	86.5	0
+80	86.5	0
+81	86.5	0
+82	86.5	0
+83	86.5	0
+84	86.5	0
+85	86.5	0
+86	86.5	0
+87	86.5	0
+88	86.5	0
+89	86.5	0
+90	86.5	0
+91	86.5	0
+92	86.5	0
+93	86.5	0
+94	86.5	0
+95	86.5	0
+96	86.5	0
+97	86.5	0
+98	86.5	0
+99	86.5	0
+100	86.5	0
+101	86.5	0
+102	86.5	0
+103	86.5	0
+104	86.5	0
+105	86.5	0
+106	86.5	0
+107	86.5	0
+108	86.5	0
+109	86.5	0
+110	86.5	0
+111	86.5	0
+112	86.5	0
+113	86.5	0
+114	86.5	0
+115	86.5	0
+116	86.5	0
+117	86.5	0
+118	86.5	0
+119	86.5	0
+120	86.5	0
+121	86.5	0
+122	86.5	0
+123	86.5	0
+124	86.5	0
+125	86.5	0
+126	86.5	0
+127	86.5	0
+128	86.5	0
+129	86.5	0
+130	86.5	0
+131	86.5	0
+132	86.5	0
+133	86.5	0
+134	86.5	0
+135	86.5	0
+136	86.5	0
+137	86.5	0
+138	86.5	0
+139	86.5	0
+140	86.5	0
+141	86.5	0
+142	86.5	0
+143	86.5	0
+144	86.5	0
+145	86.5	0
+146	86.5	0
+147	86.5	0
+148	86.5	0
+149	86.5	0
+150	86.5	0
+151	86.5	0
+152	86.5	0
+153	86.5	0
+154	86.5	0
+155	86.5	0
+156	86.5	0
+157	86.5	0
+158	86.5	0
+159	86.5	0
+160	86.5	0
+161	86.5	0
+162	86.5	0
+163	86.5	0
+164	86.5	0
+165	86.5	0
+166	86.5	0
+167	86.5	0
+168	86.5	0
+169	86.5	0
+170	86.5	0
+171	86.5	0
+172	86.5	0
+173	86.5	0
+174	86.5	0
+175	86.5	0
+176	86.5	0
+177	86.5	0
+178	86.5	0
+179	86.5	0
+180	86.5	0
+181	86.5	0
+182	86.5	0
+183	86.5	0
+184	86.5	0
+185	86.5	0
+186	86.5	0
+187	86.5	0
+188	86.5	0
+189	86.5	0
+190	86.5	0
+191	86.5	0
+192	86.5	0
+193	86.5	0
+194	86.5	0
+195	86.5	0
+196	86.5	0
+197	86.5	0
+198	86.5	0
+199	86.5	0
+200	86.5	0
+201	86.5	0
+202	86.5	0
+203	86.5	0
+204	86.5	0
+205	86.5	0
+206	86.5	0
+207	86.5	0
+208	86.5	0
+209	86.5	0
+210	86.5	0
+211	86.5	0
+212	86.5	0
+213	86.5	0
+214	86.5	0
+215	86.5	0
+216	86.5	0
+217	86.5	0
+218	86.5	0
+219	86.5	0
+220	86.5	0
+221	86.5	0
+222	86.5	0
+223	86.5	0
+224	86.5	0
+225	86.5	0
+226	86.5	0
+227	86.5	0
+228	86.5	0
+229	86.5	0
+230	86.5	0
+231	86.5	0
+232	86.5	0
+233	86.5	0
+234	86.5	0
+235	86.5	0
+236	86.5	0
+237	86.5	0
+238	86.5	0
+239	86.5	0
+240	86.5	0
+241	86.5	0
+242	86.5	0
+243	86.5	0
+244	86.5	0
+245	86.5	0
+246	86.5	0
+247	86.5	0
+248	86.5	0
+249	86.5	0
+250	86.5	0
+251	86.5	0
+252	86.5	0
+253	86.5	0
+254	86.5	0
+255	86.5	0
+256	86.5	0
+257	86.5	0
+258	86.5	0
+259	86.5	0
+260	86.5	0
+261	86.5	0
+262	86.5	0
+263	86.5	0
+264	86.5	0
+265	86.5	0
+266	86.5	0
+267	86.5	0
+268	86.5	0
+269	86.5	0
+270	86.5	0
+271	86.5	0
+272	86.5	0
+273	86.5	0
+274	86.5	0
+275	86.5	0
+276	86.5	0
+277	86.5	0
+278	86.5	0
+279	86.5	0
+280	86.5	0
+281	86.5	0
+282	86.5	0
+283	86.5	0
+284	86.5	0
+285	86.5	0
+286	86.5	0
+287	86.5	0
+288	86.5	0
+289	86.5	0
+290	86.5	0
+291	86.5	0
+292	86.5	0
+293	86.5	0
+294	86.5	0
+295	86.5	0
+296	86.5	0
+297	86.5	0
+298	86.5	0
+299	86.5	0
+300	86.5	0
+301	86.5	0
+302	86.5	0
+303	86.5	0
+304	86.5	0
+305	86.5	0
+306	86.5	0
+307	86.5	0
+308	86.5	0
+309	86.5	0
+310	86.5	0
+311	86.5	0
+312	86.5	0
+313	86.5	0
+314	86.5	0
+315	86.5	0
+316	86.5	0
+317	86.5	0
+318	86.5	0
+319	86.5	0
+320	86.5	0
+321	86.5	0
+322	86.5	0
+323	86.5	0
+324	86.5	0
+325	86.5	0
+326	86.5	0
+327	86.5	0
+328	86.5	0
+329	86.5	0
+330	86.5	0
+331	86.5	0
+332	86.5	0
+333	86.5	0
+334	86.5	0
+335	86.5	0
+336	86.5	0
+337	86.5	0
+338	86.5	0
+339	86.5	0
+340	86.5	0
+341	86.5	0
+342	86.5	0
+343	86.5	0
+344	86.5	0
+345	86.5	0
+346	86.5	0
+347	86.5	0
+348	86.5	0
+349	86.5	0
+350	86.5	0
+351	86.5	0
+352	86.5	0
+353	86.5	0
+354	86.5	0
+355	86.5	0
+356	86.5	0
+357	86.5	0
+358	86.5	0
+359	86.5	0
+360	86.5	0
+0	87	0
+1	87	0
+2	87	0
+3	87	0
+4	87	0
+5	87	0
+6	87	0
+7	87	0
+8	87	0
+9	87	0
+10	87	0
+11	87	0
+12	87	0
+13	87	0
+14	87	0
+15	87	0
+16	87	0
+17	87	0
+18	87	0
+19	87	0
+20	87	0
+21	87	0
+22	87	0
+23	87	0
+24	87	0
+25	87	0
+26	87	0
+27	87	0
+28	87	0
+29	87	0
+30	87	0
+31	87	0
+32	87	0
+33	87	0
+34	87	0
+35	87	0
+36	87	0
+37	87	0
+38	87	0
+39	87	0
+40	87	0
+41	87	0
+42	87	0
+43	87	0
+44	87	0
+45	87	0
+46	87	0
+47	87	0
+48	87	0
+49	87	0
+50	87	0
+51	87	0
+52	87	0
+53	87	0
+54	87	0
+55	87	0
+56	87	0
+57	87	0
+58	87	0
+59	87	0
+60	87	0
+61	87	0
+62	87	0
+63	87	0
+64	87	0
+65	87	0
+66	87	0
+67	87	0
+68	87	0
+69	87	0
+70	87	0
+71	87	0
+72	87	0
+73	87	0
+74	87	0
+75	87	0
+76	87	0
+77	87	0
+78	87	0
+79	87	0
+80	87	0
+81	87	0
+82	87	0
+83	87	0
+84	87	0
+85	87	0
+86	87	0
+87	87	0
+88	87	0
+89	87	0
+90	87	0
+91	87	0
+92	87	0
+93	87	0
+94	87	0
+95	87	0
+96	87	0
+97	87	0
+98	87	0
+99	87	0
+100	87	0
+101	87	0
+102	87	0
+103	87	0
+104	87	0
+105	87	0
+106	87	0
+107	87	0
+108	87	0
+109	87	0
+110	87	0
+111	87	0
+112	87	0
+113	87	0
+114	87	0
+115	87	0
+116	87	0
+117	87	0
+118	87	0
+119	87	0
+120	87	0
+121	87	0
+122	87	0
+123	87	0
+124	87	0
+125	87	0
+126	87	0
+127	87	0
+128	87	0
+129	87	0
+130	87	0
+131	87	0
+132	87	0
+133	87	0
+134	87	0
+135	87	0
+136	87	0
+137	87	0
+138	87	0
+139	87	0
+140	87	0
+141	87	0
+142	87	0
+143	87	0
+144	87	0
+145	87	0
+146	87	0
+147	87	0
+148	87	0
+149	87	0
+150	87	0
+151	87	0
+152	87	0
+153	87	0
+154	87	0
+155	87	0
+156	87	0
+157	87	0
+158	87	0
+159	87	0
+160	87	0
+161	87	0
+162	87	0
+163	87	0
+164	87	0
+165	87	0
+166	87	0
+167	87	0
+168	87	0
+169	87	0
+170	87	0
+171	87	0
+172	87	0
+173	87	0
+174	87	0
+175	87	0
+176	87	0
+177	87	0
+178	87	0
+179	87	0
+180	87	0
+181	87	0
+182	87	0
+183	87	0
+184	87	0
+185	87	0
+186	87	0
+187	87	0
+188	87	0
+189	87	0
+190	87	0
+191	87	0
+192	87	0
+193	87	0
+194	87	0
+195	87	0
+196	87	0
+197	87	0
+198	87	0
+199	87	0
+200	87	0
+201	87	0
+202	87	0
+203	87	0
+204	87	0
+205	87	0
+206	87	0
+207	87	0
+208	87	0
+209	87	0
+210	87	0
+211	87	0
+212	87	0
+213	87	0
+214	87	0
+215	87	0
+216	87	0
+217	87	0
+218	87	0
+219	87	0
+220	87	0
+221	87	0
+222	87	0
+223	87	0
+224	87	0
+225	87	0
+226	87	0
+227	87	0
+228	87	0
+229	87	0
+230	87	0
+231	87	0
+232	87	0
+233	87	0
+234	87	0
+235	87	0
+236	87	0
+237	87	0
+238	87	0
+239	87	0
+240	87	0
+241	87	0
+242	87	0
+243	87	0
+244	87	0
+245	87	0
+246	87	0
+247	87	0
+248	87	0
+249	87	0
+250	87	0
+251	87	0
+252	87	0
+253	87	0
+254	87	0
+255	87	0
+256	87	0
+257	87	0
+258	87	0
+259	87	0
+260	87	0
+261	87	0
+262	87	0
+263	87	0
+264	87	0
+265	87	0
+266	87	0
+267	87	0
+268	87	0
+269	87	0
+270	87	0
+271	87	0
+272	87	0
+273	87	0
+274	87	0
+275	87	0
+276	87	0
+277	87	0
+278	87	0
+279	87	0
+280	87	0
+281	87	0
+282	87	0
+283	87	0
+284	87	0
+285	87	0
+286	87	0
+287	87	0
+288	87	0
+289	87	0
+290	87	0
+291	87	0
+292	87	0
+293	87	0
+294	87	0
+295	87	0
+296	87	0
+297	87	0
+298	87	0
+299	87	0
+300	87	0
+301	87	0
+302	87	0
+303	87	0
+304	87	0
+305	87	0
+306	87	0
+307	87	0
+308	87	0
+309	87	0
+310	87	0
+311	87	0
+312	87	0
+313	87	0
+314	87	0
+315	87	0
+316	87	0
+317	87	0
+318	87	0
+319	87	0
+320	87	0
+321	87	0
+322	87	0
+323	87	0
+324	87	0
+325	87	0
+326	87	0
+327	87	0
+328	87	0
+329	87	0
+330	87	0
+331	87	0
+332	87	0
+333	87	0
+334	87	0
+335	87	0
+336	87	0
+337	87	0
+338	87	0
+339	87	0
+340	87	0
+341	87	0
+342	87	0
+343	87	0
+344	87	0
+345	87	0
+346	87	0
+347	87	0
+348	87	0
+349	87	0
+350	87	0
+351	87	0
+352	87	0
+353	87	0
+354	87	0
+355	87	0
+356	87	0
+357	87	0
+358	87	0
+359	87	0
+360	87	0
+0	87.5	0
+1	87.5	0
+2	87.5	0
+3	87.5	0
+4	87.5	0
+5	87.5	0
+6	87.5	0
+7	87.5	0
+8	87.5	0
+9	87.5	0
+10	87.5	0
+11	87.5	0
+12	87.5	0
+13	87.5	0
+14	87.5	0
+15	87.5	0
+16	87.5	0
+17	87.5	0
+18	87.5	0
+19	87.5	0
+20	87.5	0
+21	87.5	0
+22	87.5	0
+23	87.5	0
+24	87.5	0
+25	87.5	0
+26	87.5	0
+27	87.5	0
+28	87.5	0
+29	87.5	0
+30	87.5	0
+31	87.5	0
+32	87.5	0
+33	87.5	0
+34	87.5	0
+35	87.5	0
+36	87.5	0
+37	87.5	0
+38	87.5	0
+39	87.5	0
+40	87.5	0
+41	87.5	0
+42	87.5	0
+43	87.5	0
+44	87.5	0
+45	87.5	0
+46	87.5	0
+47	87.5	0
+48	87.5	0
+49	87.5	0
+50	87.5	0
+51	87.5	0
+52	87.5	0
+53	87.5	0
+54	87.5	0
+55	87.5	0
+56	87.5	0
+57	87.5	0
+58	87.5	0
+59	87.5	0
+60	87.5	0
+61	87.5	0
+62	87.5	0
+63	87.5	0
+64	87.5	0
+65	87.5	0
+66	87.5	0
+67	87.5	0
+68	87.5	0
+69	87.5	0
+70	87.5	0
+71	87.5	0
+72	87.5	0
+73	87.5	0
+74	87.5	0
+75	87.5	0
+76	87.5	0
+77	87.5	0
+78	87.5	0
+79	87.5	0
+80	87.5	0
+81	87.5	0
+82	87.5	0
+83	87.5	0
+84	87.5	0
+85	87.5	0
+86	87.5	0
+87	87.5	0
+88	87.5	0
+89	87.5	0
+90	87.5	0
+91	87.5	0
+92	87.5	0
+93	87.5	0
+94	87.5	0
+95	87.5	0
+96	87.5	0
+97	87.5	0
+98	87.5	0
+99	87.5	0
+100	87.5	0
+101	87.5	0
+102	87.5	0
+103	87.5	0
+104	87.5	0
+105	87.5	0
+106	87.5	0
+107	87.5	0
+108	87.5	0
+109	87.5	0
+110	87.5	0
+111	87.5	0
+112	87.5	0
+113	87.5	0
+114	87.5	0
+115	87.5	0
+116	87.5	0
+117	87.5	0
+118	87.5	0
+119	87.5	0
+120	87.5	0
+121	87.5	0
+122	87.5	0
+123	87.5	0
+124	87.5	0
+125	87.5	0
+126	87.5	0
+127	87.5	0
+128	87.5	0
+129	87.5	0
+130	87.5	0
+131	87.5	0
+132	87.5	0
+133	87.5	0
+134	87.5	0
+135	87.5	0
+136	87.5	0
+137	87.5	0
+138	87.5	0
+139	87.5	0
+140	87.5	0
+141	87.5	0
+142	87.5	0
+143	87.5	0
+144	87.5	0
+145	87.5	0
+146	87.5	0
+147	87.5	0
+148	87.5	0
+149	87.5	0
+150	87.5	0
+151	87.5	0
+152	87.5	0
+153	87.5	0
+154	87.5	0
+155	87.5	0
+156	87.5	0
+157	87.5	0
+158	87.5	0
+159	87.5	0
+160	87.5	0
+161	87.5	0
+162	87.5	0
+163	87.5	0
+164	87.5	0
+165	87.5	0
+166	87.5	0
+167	87.5	0
+168	87.5	0
+169	87.5	0
+170	87.5	0
+171	87.5	0
+172	87.5	0
+173	87.5	0
+174	87.5	0
+175	87.5	0
+176	87.5	0
+177	87.5	0
+178	87.5	0
+179	87.5	0
+180	87.5	0
+181	87.5	0
+182	87.5	0
+183	87.5	0
+184	87.5	0
+185	87.5	0
+186	87.5	0
+187	87.5	0
+188	87.5	0
+189	87.5	0
+190	87.5	0
+191	87.5	0
+192	87.5	0
+193	87.5	0
+194	87.5	0
+195	87.5	0
+196	87.5	0
+197	87.5	0
+198	87.5	0
+199	87.5	0
+200	87.5	0
+201	87.5	0
+202	87.5	0
+203	87.5	0
+204	87.5	0
+205	87.5	0
+206	87.5	0
+207	87.5	0
+208	87.5	0
+209	87.5	0
+210	87.5	0
+211	87.5	0
+212	87.5	0
+213	87.5	0
+214	87.5	0
+215	87.5	0
+216	87.5	0
+217	87.5	0
+218	87.5	0
+219	87.5	0
+220	87.5	0
+221	87.5	0
+222	87.5	0
+223	87.5	0
+224	87.5	0
+225	87.5	0
+226	87.5	0
+227	87.5	0
+228	87.5	0
+229	87.5	0
+230	87.5	0
+231	87.5	0
+232	87.5	0
+233	87.5	0
+234	87.5	0
+235	87.5	0
+236	87.5	0
+237	87.5	0
+238	87.5	0
+239	87.5	0
+240	87.5	0
+241	87.5	0
+242	87.5	0
+243	87.5	0
+244	87.5	0
+245	87.5	0
+246	87.5	0
+247	87.5	0
+248	87.5	0
+249	87.5	0
+250	87.5	0
+251	87.5	0
+252	87.5	0
+253	87.5	0
+254	87.5	0
+255	87.5	0
+256	87.5	0
+257	87.5	0
+258	87.5	0
+259	87.5	0
+260	87.5	0
+261	87.5	0
+262	87.5	0
+263	87.5	0
+264	87.5	0
+265	87.5	0
+266	87.5	0
+267	87.5	0
+268	87.5	0
+269	87.5	0
+270	87.5	0
+271	87.5	0
+272	87.5	0
+273	87.5	0
+274	87.5	0
+275	87.5	0
+276	87.5	0
+277	87.5	0
+278	87.5	0
+279	87.5	0
+280	87.5	0
+281	87.5	0
+282	87.5	0
+283	87.5	0
+284	87.5	0
+285	87.5	0
+286	87.5	0
+287	87.5	0
+288	87.5	0
+289	87.5	0
+290	87.5	0
+291	87.5	0
+292	87.5	0
+293	87.5	0
+294	87.5	0
+295	87.5	0
+296	87.5	0
+297	87.5	0
+298	87.5	0
+299	87.5	0
+300	87.5	0
+301	87.5	0
+302	87.5	0
+303	87.5	0
+304	87.5	0
+305	87.5	0
+306	87.5	0
+307	87.5	0
+308	87.5	0
+309	87.5	0
+310	87.5	0
+311	87.5	0
+312	87.5	0
+313	87.5	0
+314	87.5	0
+315	87.5	0
+316	87.5	0
+317	87.5	0
+318	87.5	0
+319	87.5	0
+320	87.5	0
+321	87.5	0
+322	87.5	0
+323	87.5	0
+324	87.5	0
+325	87.5	0
+326	87.5	0
+327	87.5	0
+328	87.5	0
+329	87.5	0
+330	87.5	0
+331	87.5	0
+332	87.5	0
+333	87.5	0
+334	87.5	0
+335	87.5	0
+336	87.5	0
+337	87.5	0
+338	87.5	0
+339	87.5	0
+340	87.5	0
+341	87.5	0
+342	87.5	0
+343	87.5	0
+344	87.5	0
+345	87.5	0
+346	87.5	0
+347	87.5	0
+348	87.5	0
+349	87.5	0
+350	87.5	0
+351	87.5	0
+352	87.5	0
+353	87.5	0
+354	87.5	0
+355	87.5	0
+356	87.5	0
+357	87.5	0
+358	87.5	0
+359	87.5	0
+360	87.5	0
+0	88	0
+1	88	0
+2	88	0
+3	88	0
+4	88	0
+5	88	0
+6	88	0
+7	88	0
+8	88	0
+9	88	0
+10	88	0
+11	88	0
+12	88	0
+13	88	0
+14	88	0
+15	88	0
+16	88	0
+17	88	0
+18	88	0
+19	88	0
+20	88	0
+21	88	0
+22	88	0
+23	88	0
+24	88	0
+25	88	0
+26	88	0
+27	88	0
+28	88	0
+29	88	0
+30	88	0
+31	88	0
+32	88	0
+33	88	0
+34	88	0
+35	88	0
+36	88	0
+37	88	0
+38	88	0
+39	88	0
+40	88	0
+41	88	0
+42	88	0
+43	88	0
+44	88	0
+45	88	0
+46	88	0
+47	88	0
+48	88	0
+49	88	0
+50	88	0
+51	88	0
+52	88	0
+53	88	0
+54	88	0
+55	88	0
+56	88	0
+57	88	0
+58	88	0
+59	88	0
+60	88	0
+61	88	0
+62	88	0
+63	88	0
+64	88	0
+65	88	0
+66	88	0
+67	88	0
+68	88	0
+69	88	0
+70	88	0
+71	88	0
+72	88	0
+73	88	0
+74	88	0
+75	88	0
+76	88	0
+77	88	0
+78	88	0
+79	88	0
+80	88	0
+81	88	0
+82	88	0
+83	88	0
+84	88	0
+85	88	0
+86	88	0
+87	88	0
+88	88	0
+89	88	0
+90	88	0
+91	88	0
+92	88	0
+93	88	0
+94	88	0
+95	88	0
+96	88	0
+97	88	0
+98	88	0
+99	88	0
+100	88	0
+101	88	0
+102	88	0
+103	88	0
+104	88	0
+105	88	0
+106	88	0
+107	88	0
+108	88	0
+109	88	0
+110	88	0
+111	88	0
+112	88	0
+113	88	0
+114	88	0
+115	88	0
+116	88	0
+117	88	0
+118	88	0
+119	88	0
+120	88	0
+121	88	0
+122	88	0
+123	88	0
+124	88	0
+125	88	0
+126	88	0
+127	88	0
+128	88	0
+129	88	0
+130	88	0
+131	88	0
+132	88	0
+133	88	0
+134	88	0
+135	88	0
+136	88	0
+137	88	0
+138	88	0
+139	88	0
+140	88	0
+141	88	0
+142	88	0
+143	88	0
+144	88	0
+145	88	0
+146	88	0
+147	88	0
+148	88	0
+149	88	0
+150	88	0
+151	88	0
+152	88	0
+153	88	0
+154	88	0
+155	88	0
+156	88	0
+157	88	0
+158	88	0
+159	88	0
+160	88	0
+161	88	0
+162	88	0
+163	88	0
+164	88	0
+165	88	0
+166	88	0
+167	88	0
+168	88	0
+169	88	0
+170	88	0
+171	88	0
+172	88	0
+173	88	0
+174	88	0
+175	88	0
+176	88	0
+177	88	0
+178	88	0
+179	88	0
+180	88	0
+181	88	0
+182	88	0
+183	88	0
+184	88	0
+185	88	0
+186	88	0
+187	88	0
+188	88	0
+189	88	0
+190	88	0
+191	88	0
+192	88	0
+193	88	0
+194	88	0
+195	88	0
+196	88	0
+197	88	0
+198	88	0
+199	88	0
+200	88	0
+201	88	0
+202	88	0
+203	88	0
+204	88	0
+205	88	0
+206	88	0
+207	88	0
+208	88	0
+209	88	0
+210	88	0
+211	88	0
+212	88	0
+213	88	0
+214	88	0
+215	88	0
+216	88	0
+217	88	0
+218	88	0
+219	88	0
+220	88	0
+221	88	0
+222	88	0
+223	88	0
+224	88	0
+225	88	0
+226	88	0
+227	88	0
+228	88	0
+229	88	0
+230	88	0
+231	88	0
+232	88	0
+233	88	0
+234	88	0
+235	88	0
+236	88	0
+237	88	0
+238	88	0
+239	88	0
+240	88	0
+241	88	0
+242	88	0
+243	88	0
+244	88	0
+245	88	0
+246	88	0
+247	88	0
+248	88	0
+249	88	0
+250	88	0
+251	88	0
+252	88	0
+253	88	0
+254	88	0
+255	88	0
+256	88	0
+257	88	0
+258	88	0
+259	88	0
+260	88	0
+261	88	0
+262	88	0
+263	88	0
+264	88	0
+265	88	0
+266	88	0
+267	88	0
+268	88	0
+269	88	0
+270	88	0
+271	88	0
+272	88	0
+273	88	0
+274	88	0
+275	88	0
+276	88	0
+277	88	0
+278	88	0
+279	88	0
+280	88	0
+281	88	0
+282	88	0
+283	88	0
+284	88	0
+285	88	0
+286	88	0
+287	88	0
+288	88	0
+289	88	0
+290	88	0
+291	88	0
+292	88	0
+293	88	0
+294	88	0
+295	88	0
+296	88	0
+297	88	0
+298	88	0
+299	88	0
+300	88	0
+301	88	0
+302	88	0
+303	88	0
+304	88	0
+305	88	0
+306	88	0
+307	88	0
+308	88	0
+309	88	0
+310	88	0
+311	88	0
+312	88	0
+313	88	0
+314	88	0
+315	88	0
+316	88	0
+317	88	0
+318	88	0
+319	88	0
+320	88	0
+321	88	0
+322	88	0
+323	88	0
+324	88	0
+325	88	0
+326	88	0
+327	88	0
+328	88	0
+329	88	0
+330	88	0
+331	88	0
+332	88	0
+333	88	0
+334	88	0
+335	88	0
+336	88	0
+337	88	0
+338	88	0
+339	88	0
+340	88	0
+341	88	0
+342	88	0
+343	88	0
+344	88	0
+345	88	0
+346	88	0
+347	88	0
+348	88	0
+349	88	0
+350	88	0
+351	88	0
+352	88	0
+353	88	0
+354	88	0
+355	88	0
+356	88	0
+357	88	0
+358	88	0
+359	88	0
+360	88	0
+0	88.5	-0.44719
+1	88.5	-0.44719
+2	88.5	-0.44719
+3	88.5	-0.44719
+4	88.5	-0.44719
+5	88.5	-0.44719
+6	88.5	-0.44719
+7	88.5	-0.44719
+8	88.5	-0.44719
+9	88.5	-0.44719
+10	88.5	-0.44719
+11	88.5	-0.44719
+12	88.5	-0.44719
+13	88.5	-0.44719
+14	88.5	-0.44719
+15	88.5	-0.44719
+16	88.5	-0.44719
+17	88.5	-0.44719
+18	88.5	-0.44719
+19	88.5	-0.44719
+20	88.5	-0.44719
+21	88.5	-0.44719
+22	88.5	-0.44719
+23	88.5	-0.44719
+24	88.5	-0.44719
+25	88.5	-0.44719
+26	88.5	-0.44719
+27	88.5	-0.44719
+28	88.5	-0.44719
+29	88.5	-0.44719
+30	88.5	-0.44719
+31	88.5	-0.44719
+32	88.5	-0.44719
+33	88.5	-0.44719
+34	88.5	-0.44719
+35	88.5	-0.44719
+36	88.5	-0.44719
+37	88.5	-0.44719
+38	88.5	-0.44719
+39	88.5	-0.44719
+40	88.5	-0.44719
+41	88.5	-0.44719
+42	88.5	-0.44719
+43	88.5	-0.44719
+44	88.5	-0.44719
+45	88.5	-0.44719
+46	88.5	-0.44719
+47	88.5	-0.44719
+48	88.5	-0.44719
+49	88.5	-0.44719
+50	88.5	-0.44719
+51	88.5	-0.44719
+52	88.5	-0.44719
+53	88.5	-0.44719
+54	88.5	-0.44719
+55	88.5	-0.44719
+56	88.5	-0.44719
+57	88.5	-0.44719
+58	88.5	-0.44719
+59	88.5	-0.44719
+60	88.5	-0.44719
+61	88.5	-0.44719
+62	88.5	-0.44719
+63	88.5	-0.44719
+64	88.5	-0.44719
+65	88.5	-0.44719
+66	88.5	-0.44719
+67	88.5	-0.44719
+68	88.5	-0.44719
+69	88.5	-0.44719
+70	88.5	-0.44719
+71	88.5	-0.44719
+72	88.5	-0.44719
+73	88.5	-0.44719
+74	88.5	-0.44719
+75	88.5	-0.44719
+76	88.5	-0.44719
+77	88.5	-0.44719
+78	88.5	-0.44719
+79	88.5	-0.44719
+80	88.5	-0.44719
+81	88.5	-0.44719
+82	88.5	-0.44719
+83	88.5	-0.44719
+84	88.5	-0.44719
+85	88.5	-0.44719
+86	88.5	-0.44719
+87	88.5	-0.44719
+88	88.5	-0.44719
+89	88.5	-0.44719
+90	88.5	-0.44719
+91	88.5	-0.44719
+92	88.5	-0.44719
+93	88.5	-0.44719
+94	88.5	-0.44719
+95	88.5	-0.44719
+96	88.5	-0.44719
+97	88.5	-0.44719
+98	88.5	-0.44719
+99	88.5	-0.44719
+100	88.5	-0.44719
+101	88.5	-0.44719
+102	88.5	-0.44719
+103	88.5	-0.44719
+104	88.5	-0.44719
+105	88.5	-0.44719
+106	88.5	-0.44719
+107	88.5	-0.44719
+108	88.5	-0.44719
+109	88.5	-0.44719
+110	88.5	-0.44719
+111	88.5	-0.44719
+112	88.5	-0.44719
+113	88.5	-0.44719
+114	88.5	-0.44719
+115	88.5	-0.44719
+116	88.5	-0.44719
+117	88.5	-0.44719
+118	88.5	-0.44719
+119	88.5	-0.44719
+120	88.5	-0.44719
+121	88.5	-0.44719
+122	88.5	-0.44719
+123	88.5	-0.44719
+124	88.5	-0.44719
+125	88.5	-0.44719
+126	88.5	-0.44719
+127	88.5	-0.44719
+128	88.5	-0.44719
+129	88.5	-0.44719
+130	88.5	-0.44719
+131	88.5	-0.44719
+132	88.5	-0.44719
+133	88.5	-0.44719
+134	88.5	-0.44719
+135	88.5	-0.44719
+136	88.5	-0.44719
+137	88.5	-0.44719
+138	88.5	-0.44719
+139	88.5	-0.44719
+140	88.5	-0.44719
+141	88.5	-0.44719
+142	88.5	-0.44719
+143	88.5	-0.44719
+144	88.5	-0.44719
+145	88.5	-0.44719
+146	88.5	-0.44719
+147	88.5	-0.44719
+148	88.5	-0.44719
+149	88.5	-0.44719
+150	88.5	-0.44719
+151	88.5	-0.44719
+152	88.5	-0.44719
+153	88.5	-0.44719
+154	88.5	-0.44719
+155	88.5	-0.44719
+156	88.5	-0.44719
+157	88.5	-0.44719
+158	88.5	-0.44719
+159	88.5	-0.44719
+160	88.5	-0.44719
+161	88.5	-0.44719
+162	88.5	-0.44719
+163	88.5	-0.44719
+164	88.5	-0.44719
+165	88.5	-0.44719
+166	88.5	-0.44719
+167	88.5	-0.44719
+168	88.5	-0.44719
+169	88.5	-0.44719
+170	88.5	-0.44719
+171	88.5	-0.44719
+172	88.5	-0.44719
+173	88.5	-0.44719
+174	88.5	-0.44719
+175	88.5	-0.44719
+176	88.5	-0.44719
+177	88.5	-0.44719
+178	88.5	-0.44719
+179	88.5	-0.44719
+180	88.5	-0.44719
+181	88.5	-0.44719
+182	88.5	-0.44719
+183	88.5	-0.44719
+184	88.5	-0.44719
+185	88.5	-0.44719
+186	88.5	-0.44719
+187	88.5	-0.44719
+188	88.5	-0.44719
+189	88.5	-0.44719
+190	88.5	-0.44719
+191	88.5	-0.44719
+192	88.5	-0.44719
+193	88.5	-0.44719
+194	88.5	-0.44719
+195	88.5	-0.44719
+196	88.5	-0.44719
+197	88.5	-0.44719
+198	88.5	-0.44719
+199	88.5	-0.44719
+200	88.5	-0.44719
+201	88.5	-0.44719
+202	88.5	-0.44719
+203	88.5	-0.44719
+204	88.5	-0.44719
+205	88.5	-0.44719
+206	88.5	-0.44719
+207	88.5	-0.44719
+208	88.5	-0.44719
+209	88.5	-0.44719
+210	88.5	-0.44719
+211	88.5	-0.44719
+212	88.5	-0.44719
+213	88.5	-0.44719
+214	88.5	-0.44719
+215	88.5	-0.44719
+216	88.5	-0.44719
+217	88.5	-0.44719
+218	88.5	-0.44719
+219	88.5	-0.44719
+220	88.5	-0.44719
+221	88.5	-0.44719
+222	88.5	-0.44719
+223	88.5	-0.44719
+224	88.5	-0.44719
+225	88.5	-0.44719
+226	88.5	-0.44719
+227	88.5	-0.44719
+228	88.5	-0.44719
+229	88.5	-0.44719
+230	88.5	-0.44719
+231	88.5	-0.44719
+232	88.5	-0.44719
+233	88.5	-0.44719
+234	88.5	-0.44719
+235	88.5	-0.44719
+236	88.5	-0.44719
+237	88.5	-0.44719
+238	88.5	-0.44719
+239	88.5	-0.44719
+240	88.5	-0.44719
+241	88.5	-0.44719
+242	88.5	-0.44719
+243	88.5	-0.44719
+244	88.5	-0.44719
+245	88.5	-0.44719
+246	88.5	-0.44719
+247	88.5	-0.44719
+248	88.5	-0.44719
+249	88.5	-0.44719
+250	88.5	-0.44719
+251	88.5	-0.44719
+252	88.5	-0.44719
+253	88.5	-0.44719
+254	88.5	-0.44719
+255	88.5	-0.44719
+256	88.5	-0.44719
+257	88.5	-0.44719
+258	88.5	-0.44719
+259	88.5	-0.44719
+260	88.5	-0.44719
+261	88.5	-0.44719
+262	88.5	-0.44719
+263	88.5	-0.44719
+264	88.5	-0.44719
+265	88.5	-0.44719
+266	88.5	-0.44719
+267	88.5	-0.44719
+268	88.5	-0.44719
+269	88.5	-0.44719
+270	88.5	-0.44719
+271	88.5	-0.44719
+272	88.5	-0.44719
+273	88.5	-0.44719
+274	88.5	-0.44719
+275	88.5	-0.44719
+276	88.5	-0.44719
+277	88.5	-0.44719
+278	88.5	-0.44719
+279	88.5	-0.44719
+280	88.5	-0.44719
+281	88.5	-0.44719
+282	88.5	-0.44719
+283	88.5	-0.44719
+284	88.5	-0.44719
+285	88.5	-0.44719
+286	88.5	-0.44719
+287	88.5	-0.44719
+288	88.5	-0.44719
+289	88.5	-0.44719
+290	88.5	-0.44719
+291	88.5	-0.44719
+292	88.5	-0.44719
+293	88.5	-0.44719
+294	88.5	-0.44719
+295	88.5	-0.44719
+296	88.5	-0.44719
+297	88.5	-0.44719
+298	88.5	-0.44719
+299	88.5	-0.44719
+300	88.5	-0.44719
+301	88.5	-0.44719
+302	88.5	-0.44719
+303	88.5	-0.44719
+304	88.5	-0.44719
+305	88.5	-0.44719
+306	88.5	-0.44719
+307	88.5	-0.44719
+308	88.5	-0.44719
+309	88.5	-0.44719
+310	88.5	-0.44719
+311	88.5	-0.44719
+312	88.5	-0.44719
+313	88.5	-0.44719
+314	88.5	-0.44719
+315	88.5	-0.44719
+316	88.5	-0.44719
+317	88.5	-0.44719
+318	88.5	-0.44719
+319	88.5	-0.44719
+320	88.5	-0.44719
+321	88.5	-0.44719
+322	88.5	-0.44719
+323	88.5	-0.44719
+324	88.5	-0.44719
+325	88.5	-0.44719
+326	88.5	-0.44719
+327	88.5	-0.44719
+328	88.5	-0.44719
+329	88.5	-0.44719
+330	88.5	-0.44719
+331	88.5	-0.44719
+332	88.5	-0.44719
+333	88.5	-0.44719
+334	88.5	-0.44719
+335	88.5	-0.44719
+336	88.5	-0.44719
+337	88.5	-0.44719
+338	88.5	-0.44719
+339	88.5	-0.44719
+340	88.5	-0.44719
+341	88.5	-0.44719
+342	88.5	-0.44719
+343	88.5	-0.44719
+344	88.5	-0.44719
+345	88.5	-0.44719
+346	88.5	-0.44719
+347	88.5	-0.44719
+348	88.5	-0.44719
+349	88.5	-0.44719
+350	88.5	-0.44719
+351	88.5	-0.44719
+352	88.5	-0.44719
+353	88.5	-0.44719
+354	88.5	-0.44719
+355	88.5	-0.44719
+356	88.5	-0.44719
+357	88.5	-0.44719
+358	88.5	-0.44719
+359	88.5	-0.44719
+360	88.5	-0.44719
+0	89	-0.44719
+1	89	-0.44719
+2	89	-0.44719
+3	89	-0.44719
+4	89	-0.44719
+5	89	-0.44719
+6	89	-0.44719
+7	89	-0.44719
+8	89	-0.44719
+9	89	-0.44719
+10	89	-0.44719
+11	89	-0.44719
+12	89	-0.44719
+13	89	-0.44719
+14	89	-0.44719
+15	89	-0.44719
+16	89	-0.44719
+17	89	-0.44719
+18	89	-0.44719
+19	89	-0.44719
+20	89	-0.44719
+21	89	-0.44719
+22	89	-0.44719
+23	89	-0.44719
+24	89	-0.44719
+25	89	-0.44719
+26	89	-0.44719
+27	89	-0.44719
+28	89	-0.44719
+29	89	-0.44719
+30	89	-0.44719
+31	89	-0.44719
+32	89	-0.44719
+33	89	-0.44719
+34	89	-0.44719
+35	89	-0.44719
+36	89	-0.44719
+37	89	-0.44719
+38	89	-0.44719
+39	89	-0.44719
+40	89	-0.44719
+41	89	-0.44719
+42	89	-0.44719
+43	89	-0.44719
+44	89	-0.44719
+45	89	-0.44719
+46	89	-0.44719
+47	89	-0.44719
+48	89	-0.44719
+49	89	-0.44719
+50	89	-0.44719
+51	89	-0.44719
+52	89	-0.44719
+53	89	-0.44719
+54	89	-0.44719
+55	89	-0.44719
+56	89	-0.44719
+57	89	-0.44719
+58	89	-0.44719
+59	89	-0.44719
+60	89	-0.44719
+61	89	-0.44719
+62	89	-0.44719
+63	89	-0.44719
+64	89	-0.44719
+65	89	-0.44719
+66	89	-0.44719
+67	89	-0.44719
+68	89	-0.44719
+69	89	-0.44719
+70	89	-0.44719
+71	89	-0.44719
+72	89	-0.44719
+73	89	-0.44719
+74	89	-0.44719
+75	89	-0.44719
+76	89	-0.44719
+77	89	-0.44719
+78	89	-0.44719
+79	89	-0.44719
+80	89	-0.44719
+81	89	-0.44719
+82	89	-0.44719
+83	89	-0.44719
+84	89	-0.44719
+85	89	-0.44719
+86	89	-0.44719
+87	89	-0.44719
+88	89	-0.44719
+89	89	-0.44719
+90	89	-0.44719
+91	89	-0.44719
+92	89	-0.44719
+93	89	-0.44719
+94	89	-0.44719
+95	89	-0.44719
+96	89	-0.44719
+97	89	-0.44719
+98	89	-0.44719
+99	89	-0.44719
+100	89	-0.44719
+101	89	-0.44719
+102	89	-0.44719
+103	89	-0.44719
+104	89	-0.44719
+105	89	-0.44719
+106	89	-0.44719
+107	89	-0.44719
+108	89	-0.44719
+109	89	-0.44719
+110	89	-0.44719
+111	89	-0.44719
+112	89	-0.44719
+113	89	-0.44719
+114	89	-0.44719
+115	89	-0.44719
+116	89	-0.44719
+117	89	-0.44719
+118	89	-0.44719
+119	89	-0.44719
+120	89	-0.44719
+121	89	-0.44719
+122	89	-0.44719
+123	89	-0.44719
+124	89	-0.44719
+125	89	-0.44719
+126	89	-0.44719
+127	89	-0.44719
+128	89	-0.44719
+129	89	-0.44719
+130	89	-0.44719
+131	89	-0.44719
+132	89	-0.44719
+133	89	-0.44719
+134	89	-0.44719
+135	89	-0.44719
+136	89	-0.44719
+137	89	-0.44719
+138	89	-0.44719
+139	89	-0.44719
+140	89	-0.44719
+141	89	-0.44719
+142	89	-0.44719
+143	89	-0.44719
+144	89	-0.44719
+145	89	-0.44719
+146	89	-0.44719
+147	89	-0.44719
+148	89	-0.44719
+149	89	-0.44719
+150	89	-0.44719
+151	89	-0.44719
+152	89	-0.44719
+153	89	-0.44719
+154	89	-0.44719
+155	89	-0.44719
+156	89	-0.44719
+157	89	-0.44719
+158	89	-0.44719
+159	89	-0.44719
+160	89	-0.44719
+161	89	-0.44719
+162	89	-0.44719
+163	89	-0.44719
+164	89	-0.44719
+165	89	-0.44719
+166	89	-0.44719
+167	89	-0.44719
+168	89	-0.44719
+169	89	-0.44719
+170	89	-0.44719
+171	89	-0.44719
+172	89	-0.44719
+173	89	-0.44719
+174	89	-0.44719
+175	89	-0.44719
+176	89	-0.44719
+177	89	-0.44719
+178	89	-0.44719
+179	89	-0.44719
+180	89	-0.44719
+181	89	-0.44719
+182	89	-0.44719
+183	89	-0.44719
+184	89	-0.44719
+185	89	-0.44719
+186	89	-0.44719
+187	89	-0.44719
+188	89	-0.44719
+189	89	-0.44719
+190	89	-0.44719
+191	89	-0.44719
+192	89	-0.44719
+193	89	-0.44719
+194	89	-0.44719
+195	89	-0.44719
+196	89	-0.44719
+197	89	-0.44719
+198	89	-0.44719
+199	89	-0.44719
+200	89	-0.44719
+201	89	-0.44719
+202	89	-0.44719
+203	89	-0.44719
+204	89	-0.44719
+205	89	-0.44719
+206	89	-0.44719
+207	89	-0.44719
+208	89	-0.44719
+209	89	-0.44719
+210	89	-0.44719
+211	89	-0.44719
+212	89	-0.44719
+213	89	-0.44719
+214	89	-0.44719
+215	89	-0.44719
+216	89	-0.44719
+217	89	-0.44719
+218	89	-0.44719
+219	89	-0.44719
+220	89	-0.44719
+221	89	-0.44719
+222	89	-0.44719
+223	89	-0.44719
+224	89	-0.44719
+225	89	-0.44719
+226	89	-0.44719
+227	89	-0.44719
+228	89	-0.44719
+229	89	-0.44719
+230	89	-0.44719
+231	89	-0.44719
+232	89	-0.44719
+233	89	-0.44719
+234	89	-0.44719
+235	89	-0.44719
+236	89	-0.44719
+237	89	-0.44719
+238	89	-0.44719
+239	89	-0.44719
+240	89	-0.44719
+241	89	-0.44719
+242	89	-0.44719
+243	89	-0.44719
+244	89	-0.44719
+245	89	-0.44719
+246	89	-0.44719
+247	89	-0.44719
+248	89	-0.44719
+249	89	-0.44719
+250	89	-0.44719
+251	89	-0.44719
+252	89	-0.44719
+253	89	-0.44719
+254	89	-0.44719
+255	89	-0.44719
+256	89	-0.44719
+257	89	-0.44719
+258	89	-0.44719
+259	89	-0.44719
+260	89	-0.44719
+261	89	-0.44719
+262	89	-0.44719
+263	89	-0.44719
+264	89	-0.44719
+265	89	-0.44719
+266	89	-0.44719
+267	89	-0.44719
+268	89	-0.44719
+269	89	-0.44719
+270	89	-0.44719
+271	89	-0.44719
+272	89	-0.44719
+273	89	-0.44719
+274	89	-0.44719
+275	89	-0.44719
+276	89	-0.44719
+277	89	-0.44719
+278	89	-0.44719
+279	89	-0.44719
+280	89	-0.44719
+281	89	-0.44719
+282	89	-0.44719
+283	89	-0.44719
+284	89	-0.44719
+285	89	-0.44719
+286	89	-0.44719
+287	89	-0.44719
+288	89	-0.44719
+289	89	-0.44719
+290	89	-0.44719
+291	89	-0.44719
+292	89	-0.44719
+293	89	-0.44719
+294	89	-0.44719
+295	89	-0.44719
+296	89	-0.44719
+297	89	-0.44719
+298	89	-0.44719
+299	89	-0.44719
+300	89	-0.44719
+301	89	-0.44719
+302	89	-0.44719
+303	89	-0.44719
+304	89	-0.44719
+305	89	-0.44719
+306	89	-0.44719
+307	89	-0.44719
+308	89	-0.44719
+309	89	-0.44719
+310	89	-0.44719
+311	89	-0.44719
+312	89	-0.44719
+313	89	-0.44719
+314	89	-0.44719
+315	89	-0.44719
+316	89	-0.44719
+317	89	-0.44719
+318	89	-0.44719
+319	89	-0.44719
+320	89	-0.44719
+321	89	-0.44719
+322	89	-0.44719
+323	89	-0.44719
+324	89	-0.44719
+325	89	-0.44719
+326	89	-0.44719
+327	89	-0.44719
+328	89	-0.44719
+329	89	-0.44719
+330	89	-0.44719
+331	89	-0.44719
+332	89	-0.44719
+333	89	-0.44719
+334	89	-0.44719
+335	89	-0.44719
+336	89	-0.44719
+337	89	-0.44719
+338	89	-0.44719
+339	89	-0.44719
+340	89	-0.44719
+341	89	-0.44719
+342	89	-0.44719
+343	89	-0.44719
+344	89	-0.44719
+345	89	-0.44719
+346	89	-0.44719
+347	89	-0.44719
+348	89	-0.44719
+349	89	-0.44719
+350	89	-0.44719
+351	89	-0.44719
+352	89	-0.44719
+353	89	-0.44719
+354	89	-0.44719
+355	89	-0.44719
+356	89	-0.44719
+357	89	-0.44719
+358	89	-0.44719
+359	89	-0.44719
+360	89	-0.44719
+0	89.5	-0.44719
+1	89.5	-0.44719
+2	89.5	-0.44719
+3	89.5	-0.44719
+4	89.5	-0.44719
+5	89.5	-0.44719
+6	89.5	-0.44719
+7	89.5	-0.44719
+8	89.5	-0.44719
+9	89.5	-0.44719
+10	89.5	-0.44719
+11	89.5	-0.44719
+12	89.5	-0.44719
+13	89.5	-0.44719
+14	89.5	-0.44719
+15	89.5	-0.44719
+16	89.5	-0.44719
+17	89.5	-0.44719
+18	89.5	-0.44719
+19	89.5	-0.44719
+20	89.5	-0.44719
+21	89.5	-0.44719
+22	89.5	-0.44719
+23	89.5	-0.44719
+24	89.5	-0.44719
+25	89.5	-0.44719
+26	89.5	-0.44719
+27	89.5	-0.44719
+28	89.5	-0.44719
+29	89.5	-0.44719
+30	89.5	-0.44719
+31	89.5	-0.44719
+32	89.5	-0.44719
+33	89.5	-0.44719
+34	89.5	-0.44719
+35	89.5	-0.44719
+36	89.5	-0.44719
+37	89.5	-0.44719
+38	89.5	-0.44719
+39	89.5	-0.44719
+40	89.5	-0.44719
+41	89.5	-0.44719
+42	89.5	-0.44719
+43	89.5	-0.44719
+44	89.5	-0.44719
+45	89.5	-0.44719
+46	89.5	-0.44719
+47	89.5	-0.44719
+48	89.5	-0.44719
+49	89.5	-0.44719
+50	89.5	-0.44719
+51	89.5	-0.44719
+52	89.5	-0.44719
+53	89.5	-0.44719
+54	89.5	-0.44719
+55	89.5	-0.44719
+56	89.5	-0.44719
+57	89.5	-0.44719
+58	89.5	-0.44719
+59	89.5	-0.44719
+60	89.5	-0.44719
+61	89.5	-0.44719
+62	89.5	-0.44719
+63	89.5	-0.44719
+64	89.5	-0.44719
+65	89.5	-0.44719
+66	89.5	-0.44719
+67	89.5	-0.44719
+68	89.5	-0.44719
+69	89.5	-0.44719
+70	89.5	-0.44719
+71	89.5	-0.44719
+72	89.5	-0.44719
+73	89.5	-0.44719
+74	89.5	-0.44719
+75	89.5	-0.44719
+76	89.5	-0.44719
+77	89.5	-0.44719
+78	89.5	-0.44719
+79	89.5	-0.44719
+80	89.5	-0.44719
+81	89.5	-0.44719
+82	89.5	-0.44719
+83	89.5	-0.44719
+84	89.5	-0.44719
+85	89.5	-0.44719
+86	89.5	-0.44719
+87	89.5	-0.44719
+88	89.5	-0.44719
+89	89.5	-0.44719
+90	89.5	-0.44719
+91	89.5	-0.44719
+92	89.5	-0.44719
+93	89.5	-0.44719
+94	89.5	-0.44719
+95	89.5	-0.44719
+96	89.5	-0.44719
+97	89.5	-0.44719
+98	89.5	-0.44719
+99	89.5	-0.44719
+100	89.5	-0.44719
+101	89.5	-0.44719
+102	89.5	-0.44719
+103	89.5	-0.44719
+104	89.5	-0.44719
+105	89.5	-0.44719
+106	89.5	-0.44719
+107	89.5	-0.44719
+108	89.5	-0.44719
+109	89.5	-0.44719
+110	89.5	-0.44719
+111	89.5	-0.44719
+112	89.5	-0.44719
+113	89.5	-0.44719
+114	89.5	-0.44719
+115	89.5	-0.44719
+116	89.5	-0.44719
+117	89.5	-0.44719
+118	89.5	-0.44719
+119	89.5	-0.44719
+120	89.5	-0.44719
+121	89.5	-0.44719
+122	89.5	-0.44719
+123	89.5	-0.44719
+124	89.5	-0.44719
+125	89.5	-0.44719
+126	89.5	-0.44719
+127	89.5	-0.44719
+128	89.5	-0.44719
+129	89.5	-0.44719
+130	89.5	-0.44719
+131	89.5	-0.44719
+132	89.5	-0.44719
+133	89.5	-0.44719
+134	89.5	-0.44719
+135	89.5	-0.44719
+136	89.5	-0.44719
+137	89.5	-0.44719
+138	89.5	-0.44719
+139	89.5	-0.44719
+140	89.5	-0.44719
+141	89.5	-0.44719
+142	89.5	-0.44719
+143	89.5	-0.44719
+144	89.5	-0.44719
+145	89.5	-0.44719
+146	89.5	-0.44719
+147	89.5	-0.44719
+148	89.5	-0.44719
+149	89.5	-0.44719
+150	89.5	-0.44719
+151	89.5	-0.44719
+152	89.5	-0.44719
+153	89.5	-0.44719
+154	89.5	-0.44719
+155	89.5	-0.44719
+156	89.5	-0.44719
+157	89.5	-0.44719
+158	89.5	-0.44719
+159	89.5	-0.44719
+160	89.5	-0.44719
+161	89.5	-0.44719
+162	89.5	-0.44719
+163	89.5	-0.44719
+164	89.5	-0.44719
+165	89.5	-0.44719
+166	89.5	-0.44719
+167	89.5	-0.44719
+168	89.5	-0.44719
+169	89.5	-0.44719
+170	89.5	-0.44719
+171	89.5	-0.44719
+172	89.5	-0.44719
+173	89.5	-0.44719
+174	89.5	-0.44719
+175	89.5	-0.44719
+176	89.5	-0.44719
+177	89.5	-0.44719
+178	89.5	-0.44719
+179	89.5	-0.44719
+180	89.5	-0.44719
+181	89.5	-0.44719
+182	89.5	-0.44719
+183	89.5	-0.44719
+184	89.5	-0.44719
+185	89.5	-0.44719
+186	89.5	-0.44719
+187	89.5	-0.44719
+188	89.5	-0.44719
+189	89.5	-0.44719
+190	89.5	-0.44719
+191	89.5	-0.44719
+192	89.5	-0.44719
+193	89.5	-0.44719
+194	89.5	-0.44719
+195	89.5	-0.44719
+196	89.5	-0.44719
+197	89.5	-0.44719
+198	89.5	-0.44719
+199	89.5	-0.44719
+200	89.5	-0.44719
+201	89.5	-0.44719
+202	89.5	-0.44719
+203	89.5	-0.44719
+204	89.5	-0.44719
+205	89.5	-0.44719
+206	89.5	-0.44719
+207	89.5	-0.44719
+208	89.5	-0.44719
+209	89.5	-0.44719
+210	89.5	-0.44719
+211	89.5	-0.44719
+212	89.5	-0.44719
+213	89.5	-0.44719
+214	89.5	-0.44719
+215	89.5	-0.44719
+216	89.5	-0.44719
+217	89.5	-0.44719
+218	89.5	-0.44719
+219	89.5	-0.44719
+220	89.5	-0.44719
+221	89.5	-0.44719
+222	89.5	-0.44719
+223	89.5	-0.44719
+224	89.5	-0.44719
+225	89.5	-0.44719
+226	89.5	-0.44719
+227	89.5	-0.44719
+228	89.5	-0.44719
+229	89.5	-0.44719
+230	89.5	-0.44719
+231	89.5	-0.44719
+232	89.5	-0.44719
+233	89.5	-0.44719
+234	89.5	-0.44719
+235	89.5	-0.44719
+236	89.5	-0.44719
+237	89.5	-0.44719
+238	89.5	-0.44719
+239	89.5	-0.44719
+240	89.5	-0.44719
+241	89.5	-0.44719
+242	89.5	-0.44719
+243	89.5	-0.44719
+244	89.5	-0.44719
+245	89.5	-0.44719
+246	89.5	-0.44719
+247	89.5	-0.44719
+248	89.5	-0.44719
+249	89.5	-0.44719
+250	89.5	-0.44719
+251	89.5	-0.44719
+252	89.5	-0.44719
+253	89.5	-0.44719
+254	89.5	-0.44719
+255	89.5	-0.44719
+256	89.5	-0.44719
+257	89.5	-0.44719
+258	89.5	-0.44719
+259	89.5	-0.44719
+260	89.5	-0.44719
+261	89.5	-0.44719
+262	89.5	-0.44719
+263	89.5	-0.44719
+264	89.5	-0.44719
+265	89.5	-0.44719
+266	89.5	-0.44719
+267	89.5	-0.44719
+268	89.5	-0.44719
+269	89.5	-0.44719
+270	89.5	-0.44719
+271	89.5	-0.44719
+272	89.5	-0.44719
+273	89.5	-0.44719
+274	89.5	-0.44719
+275	89.5	-0.44719
+276	89.5	-0.44719
+277	89.5	-0.44719
+278	89.5	-0.44719
+279	89.5	-0.44719
+280	89.5	-0.44719
+281	89.5	-0.44719
+282	89.5	-0.44719
+283	89.5	-0.44719
+284	89.5	-0.44719
+285	89.5	-0.44719
+286	89.5	-0.44719
+287	89.5	-0.44719
+288	89.5	-0.44719
+289	89.5	-0.44719
+290	89.5	-0.44719
+291	89.5	-0.44719
+292	89.5	-0.44719
+293	89.5	-0.44719
+294	89.5	-0.44719
+295	89.5	-0.44719
+296	89.5	-0.44719
+297	89.5	-0.44719
+298	89.5	-0.44719
+299	89.5	-0.44719
+300	89.5	-0.44719
+301	89.5	-0.44719
+302	89.5	-0.44719
+303	89.5	-0.44719
+304	89.5	-0.44719
+305	89.5	-0.44719
+306	89.5	-0.44719
+307	89.5	-0.44719
+308	89.5	-0.44719
+309	89.5	-0.44719
+310	89.5	-0.44719
+311	89.5	-0.44719
+312	89.5	-0.44719
+313	89.5	-0.44719
+314	89.5	-0.44719
+315	89.5	-0.44719
+316	89.5	-0.44719
+317	89.5	-0.44719
+318	89.5	-0.44719
+319	89.5	-0.44719
+320	89.5	-0.44719
+321	89.5	-0.44719
+322	89.5	-0.44719
+323	89.5	-0.44719
+324	89.5	-0.44719
+325	89.5	-0.44719
+326	89.5	-0.44719
+327	89.5	-0.44719
+328	89.5	-0.44719
+329	89.5	-0.44719
+330	89.5	-0.44719
+331	89.5	-0.44719
+332	89.5	-0.44719
+333	89.5	-0.44719
+334	89.5	-0.44719
+335	89.5	-0.44719
+336	89.5	-0.44719
+337	89.5	-0.44719
+338	89.5	-0.44719
+339	89.5	-0.44719
+340	89.5	-0.44719
+341	89.5	-0.44719
+342	89.5	-0.44719
+343	89.5	-0.44719
+344	89.5	-0.44719
+345	89.5	-0.44719
+346	89.5	-0.44719
+347	89.5	-0.44719
+348	89.5	-0.44719
+349	89.5	-0.44719
+350	89.5	-0.44719
+351	89.5	-0.44719
+352	89.5	-0.44719
+353	89.5	-0.44719
+354	89.5	-0.44719
+355	89.5	-0.44719
+356	89.5	-0.44719
+357	89.5	-0.44719
+358	89.5	-0.44719
+359	89.5	-0.44719
+360	89.5	-0.44719
+0	90	-0.44719
+1	90	-0.44719
+2	90	-0.44719
+3	90	-0.44719
+4	90	-0.44719
+5	90	-0.44719
+6	90	-0.44719
+7	90	-0.44719
+8	90	-0.44719
+9	90	-0.44719
+10	90	-0.44719
+11	90	-0.44719
+12	90	-0.44719
+13	90	-0.44719
+14	90	-0.44719
+15	90	-0.44719
+16	90	-0.44719
+17	90	-0.44719
+18	90	-0.44719
+19	90	-0.44719
+20	90	-0.44719
+21	90	-0.44719
+22	90	-0.44719
+23	90	-0.44719
+24	90	-0.44719
+25	90	-0.44719
+26	90	-0.44719
+27	90	-0.44719
+28	90	-0.44719
+29	90	-0.44719
+30	90	-0.44719
+31	90	-0.44719
+32	90	-0.44719
+33	90	-0.44719
+34	90	-0.44719
+35	90	-0.44719
+36	90	-0.44719
+37	90	-0.44719
+38	90	-0.44719
+39	90	-0.44719
+40	90	-0.44719
+41	90	-0.44719
+42	90	-0.44719
+43	90	-0.44719
+44	90	-0.44719
+45	90	-0.44719
+46	90	-0.44719
+47	90	-0.44719
+48	90	-0.44719
+49	90	-0.44719
+50	90	-0.44719
+51	90	-0.44719
+52	90	-0.44719
+53	90	-0.44719
+54	90	-0.44719
+55	90	-0.44719
+56	90	-0.44719
+57	90	-0.44719
+58	90	-0.44719
+59	90	-0.44719
+60	90	-0.44719
+61	90	-0.44719
+62	90	-0.44719
+63	90	-0.44719
+64	90	-0.44719
+65	90	-0.44719
+66	90	-0.44719
+67	90	-0.44719
+68	90	-0.44719
+69	90	-0.44719
+70	90	-0.44719
+71	90	-0.44719
+72	90	-0.44719
+73	90	-0.44719
+74	90	-0.44719
+75	90	-0.44719
+76	90	-0.44719
+77	90	-0.44719
+78	90	-0.44719
+79	90	-0.44719
+80	90	-0.44719
+81	90	-0.44719
+82	90	-0.44719
+83	90	-0.44719
+84	90	-0.44719
+85	90	-0.44719
+86	90	-0.44719
+87	90	-0.44719
+88	90	-0.44719
+89	90	-0.44719
+90	90	-0.44719
+91	90	-0.44719
+92	90	-0.44719
+93	90	-0.44719
+94	90	-0.44719
+95	90	-0.44719
+96	90	-0.44719
+97	90	-0.44719
+98	90	-0.44719
+99	90	-0.44719
+100	90	-0.44719
+101	90	-0.44719
+102	90	-0.44719
+103	90	-0.44719
+104	90	-0.44719
+105	90	-0.44719
+106	90	-0.44719
+107	90	-0.44719
+108	90	-0.44719
+109	90	-0.44719
+110	90	-0.44719
+111	90	-0.44719
+112	90	-0.44719
+113	90	-0.44719
+114	90	-0.44719
+115	90	-0.44719
+116	90	-0.44719
+117	90	-0.44719
+118	90	-0.44719
+119	90	-0.44719
+120	90	-0.44719
+121	90	-0.44719
+122	90	-0.44719
+123	90	-0.44719
+124	90	-0.44719
+125	90	-0.44719
+126	90	-0.44719
+127	90	-0.44719
+128	90	-0.44719
+129	90	-0.44719
+130	90	-0.44719
+131	90	-0.44719
+132	90	-0.44719
+133	90	-0.44719
+134	90	-0.44719
+135	90	-0.44719
+136	90	-0.44719
+137	90	-0.44719
+138	90	-0.44719
+139	90	-0.44719
+140	90	-0.44719
+141	90	-0.44719
+142	90	-0.44719
+143	90	-0.44719
+144	90	-0.44719
+145	90	-0.44719
+146	90	-0.44719
+147	90	-0.44719
+148	90	-0.44719
+149	90	-0.44719
+150	90	-0.44719
+151	90	-0.44719
+152	90	-0.44719
+153	90	-0.44719
+154	90	-0.44719
+155	90	-0.44719
+156	90	-0.44719
+157	90	-0.44719
+158	90	-0.44719
+159	90	-0.44719
+160	90	-0.44719
+161	90	-0.44719
+162	90	-0.44719
+163	90	-0.44719
+164	90	-0.44719
+165	90	-0.44719
+166	90	-0.44719
+167	90	-0.44719
+168	90	-0.44719
+169	90	-0.44719
+170	90	-0.44719
+171	90	-0.44719
+172	90	-0.44719
+173	90	-0.44719
+174	90	-0.44719
+175	90	-0.44719
+176	90	-0.44719
+177	90	-0.44719
+178	90	-0.44719
+179	90	-0.44719
+180	90	-0.44719
+181	90	-0.44719
+182	90	-0.44719
+183	90	-0.44719
+184	90	-0.44719
+185	90	-0.44719
+186	90	-0.44719
+187	90	-0.44719
+188	90	-0.44719
+189	90	-0.44719
+190	90	-0.44719
+191	90	-0.44719
+192	90	-0.44719
+193	90	-0.44719
+194	90	-0.44719
+195	90	-0.44719
+196	90	-0.44719
+197	90	-0.44719
+198	90	-0.44719
+199	90	-0.44719
+200	90	-0.44719
+201	90	-0.44719
+202	90	-0.44719
+203	90	-0.44719
+204	90	-0.44719
+205	90	-0.44719
+206	90	-0.44719
+207	90	-0.44719
+208	90	-0.44719
+209	90	-0.44719
+210	90	-0.44719
+211	90	-0.44719
+212	90	-0.44719
+213	90	-0.44719
+214	90	-0.44719
+215	90	-0.44719
+216	90	-0.44719
+217	90	-0.44719
+218	90	-0.44719
+219	90	-0.44719
+220	90	-0.44719
+221	90	-0.44719
+222	90	-0.44719
+223	90	-0.44719
+224	90	-0.44719
+225	90	-0.44719
+226	90	-0.44719
+227	90	-0.44719
+228	90	-0.44719
+229	90	-0.44719
+230	90	-0.44719
+231	90	-0.44719
+232	90	-0.44719
+233	90	-0.44719
+234	90	-0.44719
+235	90	-0.44719
+236	90	-0.44719
+237	90	-0.44719
+238	90	-0.44719
+239	90	-0.44719
+240	90	-0.44719
+241	90	-0.44719
+242	90	-0.44719
+243	90	-0.44719
+244	90	-0.44719
+245	90	-0.44719
+246	90	-0.44719
+247	90	-0.44719
+248	90	-0.44719
+249	90	-0.44719
+250	90	-0.44719
+251	90	-0.44719
+252	90	-0.44719
+253	90	-0.44719
+254	90	-0.44719
+255	90	-0.44719
+256	90	-0.44719
+257	90	-0.44719
+258	90	-0.44719
+259	90	-0.44719
+260	90	-0.44719
+261	90	-0.44719
+262	90	-0.44719
+263	90	-0.44719
+264	90	-0.44719
+265	90	-0.44719
+266	90	-0.44719
+267	90	-0.44719
+268	90	-0.44719
+269	90	-0.44719
+270	90	-0.44719
+271	90	-0.44719
+272	90	-0.44719
+273	90	-0.44719
+274	90	-0.44719
+275	90	-0.44719
+276	90	-0.44719
+277	90	-0.44719
+278	90	-0.44719
+279	90	-0.44719
+280	90	-0.44719
+281	90	-0.44719
+282	90	-0.44719
+283	90	-0.44719
+284	90	-0.44719
+285	90	-0.44719
+286	90	-0.44719
+287	90	-0.44719
+288	90	-0.44719
+289	90	-0.44719
+290	90	-0.44719
+291	90	-0.44719
+292	90	-0.44719
+293	90	-0.44719
+294	90	-0.44719
+295	90	-0.44719
+296	90	-0.44719
+297	90	-0.44719
+298	90	-0.44719
+299	90	-0.44719
+300	90	-0.44719
+301	90	-0.44719
+302	90	-0.44719
+303	90	-0.44719
+304	90	-0.44719
+305	90	-0.44719
+306	90	-0.44719
+307	90	-0.44719
+308	90	-0.44719
+309	90	-0.44719
+310	90	-0.44719
+311	90	-0.44719
+312	90	-0.44719
+313	90	-0.44719
+314	90	-0.44719
+315	90	-0.44719
+316	90	-0.44719
+317	90	-0.44719
+318	90	-0.44719
+319	90	-0.44719
+320	90	-0.44719
+321	90	-0.44719
+322	90	-0.44719
+323	90	-0.44719
+324	90	-0.44719
+325	90	-0.44719
+326	90	-0.44719
+327	90	-0.44719
+328	90	-0.44719
+329	90	-0.44719
+330	90	-0.44719
+331	90	-0.44719
+332	90	-0.44719
+333	90	-0.44719
+334	90	-0.44719
+335	90	-0.44719
+336	90	-0.44719
+337	90	-0.44719
+338	90	-0.44719
+339	90	-0.44719
+340	90	-0.44719
+341	90	-0.44719
+342	90	-0.44719
+343	90	-0.44719
+344	90	-0.44719
+345	90	-0.44719
+346	90	-0.44719
+347	90	-0.44719
+348	90	-0.44719
+349	90	-0.44719
+350	90	-0.44719
+351	90	-0.44719
+352	90	-0.44719
+353	90	-0.44719
+354	90	-0.44719
+355	90	-0.44719
+356	90	-0.44719
+357	90	-0.44719
+358	90	-0.44719
+359	90	-0.44719
+360	90	-0.44719
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/CON_delH_trend.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/CON_delH_trend.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/CON_delH_trend.txt	(revision 27955)
@@ -0,0 +1,130321 @@
+0	-90	0
+1	-90	0
+2	-90	0
+3	-90	0
+4	-90	0
+5	-90	0
+6	-90	0
+7	-90	0
+8	-90	0
+9	-90	0
+10	-90	0
+11	-90	0
+12	-90	0
+13	-90	0
+14	-90	0
+15	-90	0
+16	-90	0
+17	-90	0
+18	-90	0
+19	-90	0
+20	-90	0
+21	-90	0
+22	-90	0
+23	-90	0
+24	-90	0
+25	-90	0
+26	-90	0
+27	-90	0
+28	-90	0
+29	-90	0
+30	-90	0
+31	-90	0
+32	-90	0
+33	-90	0
+34	-90	0
+35	-90	0
+36	-90	0
+37	-90	0
+38	-90	0
+39	-90	0
+40	-90	0
+41	-90	0
+42	-90	0
+43	-90	0
+44	-90	0
+45	-90	0
+46	-90	0
+47	-90	0
+48	-90	0
+49	-90	0
+50	-90	0
+51	-90	0
+52	-90	0
+53	-90	0
+54	-90	0
+55	-90	0
+56	-90	0
+57	-90	0
+58	-90	0
+59	-90	0
+60	-90	0
+61	-90	0
+62	-90	0
+63	-90	0
+64	-90	0
+65	-90	0
+66	-90	0
+67	-90	0
+68	-90	0
+69	-90	0
+70	-90	0
+71	-90	0
+72	-90	0
+73	-90	0
+74	-90	0
+75	-90	0
+76	-90	0
+77	-90	0
+78	-90	0
+79	-90	0
+80	-90	0
+81	-90	0
+82	-90	0
+83	-90	0
+84	-90	0
+85	-90	0
+86	-90	0
+87	-90	0
+88	-90	0
+89	-90	0
+90	-90	0
+91	-90	0
+92	-90	0
+93	-90	0
+94	-90	0
+95	-90	0
+96	-90	0
+97	-90	0
+98	-90	0
+99	-90	0
+100	-90	0
+101	-90	0
+102	-90	0
+103	-90	0
+104	-90	0
+105	-90	0
+106	-90	0
+107	-90	0
+108	-90	0
+109	-90	0
+110	-90	0
+111	-90	0
+112	-90	0
+113	-90	0
+114	-90	0
+115	-90	0
+116	-90	0
+117	-90	0
+118	-90	0
+119	-90	0
+120	-90	0
+121	-90	0
+122	-90	0
+123	-90	0
+124	-90	0
+125	-90	0
+126	-90	0
+127	-90	0
+128	-90	0
+129	-90	0
+130	-90	0
+131	-90	0
+132	-90	0
+133	-90	0
+134	-90	0
+135	-90	0
+136	-90	0
+137	-90	0
+138	-90	0
+139	-90	0
+140	-90	0
+141	-90	0
+142	-90	0
+143	-90	0
+144	-90	0
+145	-90	0
+146	-90	0
+147	-90	0
+148	-90	0
+149	-90	0
+150	-90	0
+151	-90	0
+152	-90	0
+153	-90	0
+154	-90	0
+155	-90	0
+156	-90	0
+157	-90	0
+158	-90	0
+159	-90	0
+160	-90	0
+161	-90	0
+162	-90	0
+163	-90	0
+164	-90	0
+165	-90	0
+166	-90	0
+167	-90	0
+168	-90	0
+169	-90	0
+170	-90	0
+171	-90	0
+172	-90	0
+173	-90	0
+174	-90	0
+175	-90	0
+176	-90	0
+177	-90	0
+178	-90	0
+179	-90	0
+180	-90	0
+181	-90	0
+182	-90	0
+183	-90	0
+184	-90	0
+185	-90	0
+186	-90	0
+187	-90	0
+188	-90	0
+189	-90	0
+190	-90	0
+191	-90	0
+192	-90	0
+193	-90	0
+194	-90	0
+195	-90	0
+196	-90	0
+197	-90	0
+198	-90	0
+199	-90	0
+200	-90	0
+201	-90	0
+202	-90	0
+203	-90	0
+204	-90	0
+205	-90	0
+206	-90	0
+207	-90	0
+208	-90	0
+209	-90	0
+210	-90	0
+211	-90	0
+212	-90	0
+213	-90	0
+214	-90	0
+215	-90	0
+216	-90	0
+217	-90	0
+218	-90	0
+219	-90	0
+220	-90	0
+221	-90	0
+222	-90	0
+223	-90	0
+224	-90	0
+225	-90	0
+226	-90	0
+227	-90	0
+228	-90	0
+229	-90	0
+230	-90	0
+231	-90	0
+232	-90	0
+233	-90	0
+234	-90	0
+235	-90	0
+236	-90	0
+237	-90	0
+238	-90	0
+239	-90	0
+240	-90	0
+241	-90	0
+242	-90	0
+243	-90	0
+244	-90	0
+245	-90	0
+246	-90	0
+247	-90	0
+248	-90	0
+249	-90	0
+250	-90	0
+251	-90	0
+252	-90	0
+253	-90	0
+254	-90	0
+255	-90	0
+256	-90	0
+257	-90	0
+258	-90	0
+259	-90	0
+260	-90	0
+261	-90	0
+262	-90	0
+263	-90	0
+264	-90	0
+265	-90	0
+266	-90	0
+267	-90	0
+268	-90	0
+269	-90	0
+270	-90	0
+271	-90	0
+272	-90	0
+273	-90	0
+274	-90	0
+275	-90	0
+276	-90	0
+277	-90	0
+278	-90	0
+279	-90	0
+280	-90	0
+281	-90	0
+282	-90	0
+283	-90	0
+284	-90	0
+285	-90	0
+286	-90	0
+287	-90	0
+288	-90	0
+289	-90	0
+290	-90	0
+291	-90	0
+292	-90	0
+293	-90	0
+294	-90	0
+295	-90	0
+296	-90	0
+297	-90	0
+298	-90	0
+299	-90	0
+300	-90	0
+301	-90	0
+302	-90	0
+303	-90	0
+304	-90	0
+305	-90	0
+306	-90	0
+307	-90	0
+308	-90	0
+309	-90	0
+310	-90	0
+311	-90	0
+312	-90	0
+313	-90	0
+314	-90	0
+315	-90	0
+316	-90	0
+317	-90	0
+318	-90	0
+319	-90	0
+320	-90	0
+321	-90	0
+322	-90	0
+323	-90	0
+324	-90	0
+325	-90	0
+326	-90	0
+327	-90	0
+328	-90	0
+329	-90	0
+330	-90	0
+331	-90	0
+332	-90	0
+333	-90	0
+334	-90	0
+335	-90	0
+336	-90	0
+337	-90	0
+338	-90	0
+339	-90	0
+340	-90	0
+341	-90	0
+342	-90	0
+343	-90	0
+344	-90	0
+345	-90	0
+346	-90	0
+347	-90	0
+348	-90	0
+349	-90	0
+350	-90	0
+351	-90	0
+352	-90	0
+353	-90	0
+354	-90	0
+355	-90	0
+356	-90	0
+357	-90	0
+358	-90	0
+359	-90	0
+360	-90	0
+0	-89.5	0
+1	-89.5	0
+2	-89.5	0
+3	-89.5	0
+4	-89.5	0
+5	-89.5	0
+6	-89.5	0
+7	-89.5	0
+8	-89.5	0
+9	-89.5	0
+10	-89.5	0
+11	-89.5	0
+12	-89.5	0
+13	-89.5	0
+14	-89.5	0
+15	-89.5	0
+16	-89.5	0
+17	-89.5	0
+18	-89.5	0
+19	-89.5	0
+20	-89.5	0
+21	-89.5	0
+22	-89.5	0
+23	-89.5	0
+24	-89.5	0
+25	-89.5	0
+26	-89.5	0
+27	-89.5	0
+28	-89.5	0
+29	-89.5	0
+30	-89.5	0
+31	-89.5	0
+32	-89.5	0
+33	-89.5	0
+34	-89.5	0
+35	-89.5	0
+36	-89.5	0
+37	-89.5	0
+38	-89.5	0
+39	-89.5	0
+40	-89.5	0
+41	-89.5	0
+42	-89.5	0
+43	-89.5	0
+44	-89.5	0
+45	-89.5	0
+46	-89.5	0
+47	-89.5	0
+48	-89.5	0
+49	-89.5	0
+50	-89.5	0
+51	-89.5	0
+52	-89.5	0
+53	-89.5	0
+54	-89.5	0
+55	-89.5	0
+56	-89.5	0
+57	-89.5	0
+58	-89.5	0
+59	-89.5	0
+60	-89.5	0
+61	-89.5	0
+62	-89.5	0
+63	-89.5	0
+64	-89.5	0
+65	-89.5	0
+66	-89.5	0
+67	-89.5	0
+68	-89.5	0
+69	-89.5	0
+70	-89.5	0
+71	-89.5	0
+72	-89.5	0
+73	-89.5	0
+74	-89.5	0
+75	-89.5	0
+76	-89.5	0
+77	-89.5	0
+78	-89.5	0
+79	-89.5	0
+80	-89.5	0
+81	-89.5	0
+82	-89.5	0
+83	-89.5	0
+84	-89.5	0
+85	-89.5	0
+86	-89.5	0
+87	-89.5	0
+88	-89.5	0
+89	-89.5	0
+90	-89.5	0
+91	-89.5	0
+92	-89.5	0
+93	-89.5	0
+94	-89.5	0
+95	-89.5	0
+96	-89.5	0
+97	-89.5	0
+98	-89.5	0
+99	-89.5	0
+100	-89.5	0
+101	-89.5	0
+102	-89.5	0
+103	-89.5	0
+104	-89.5	0
+105	-89.5	0
+106	-89.5	0
+107	-89.5	0
+108	-89.5	0
+109	-89.5	0
+110	-89.5	0
+111	-89.5	0
+112	-89.5	0
+113	-89.5	0
+114	-89.5	0
+115	-89.5	0
+116	-89.5	0
+117	-89.5	0
+118	-89.5	0
+119	-89.5	0
+120	-89.5	0
+121	-89.5	0
+122	-89.5	0
+123	-89.5	0
+124	-89.5	0
+125	-89.5	0
+126	-89.5	0
+127	-89.5	0
+128	-89.5	0
+129	-89.5	0
+130	-89.5	0
+131	-89.5	0
+132	-89.5	0
+133	-89.5	0
+134	-89.5	0
+135	-89.5	0
+136	-89.5	0
+137	-89.5	0
+138	-89.5	0
+139	-89.5	0
+140	-89.5	0
+141	-89.5	0
+142	-89.5	0
+143	-89.5	0
+144	-89.5	0
+145	-89.5	0
+146	-89.5	0
+147	-89.5	0
+148	-89.5	0
+149	-89.5	0
+150	-89.5	0
+151	-89.5	0
+152	-89.5	0
+153	-89.5	0
+154	-89.5	0
+155	-89.5	0
+156	-89.5	0
+157	-89.5	0
+158	-89.5	0
+159	-89.5	0
+160	-89.5	0
+161	-89.5	0
+162	-89.5	0
+163	-89.5	0
+164	-89.5	0
+165	-89.5	0
+166	-89.5	0
+167	-89.5	0
+168	-89.5	0
+169	-89.5	0
+170	-89.5	0
+171	-89.5	0
+172	-89.5	0
+173	-89.5	0
+174	-89.5	0
+175	-89.5	0
+176	-89.5	0
+177	-89.5	0
+178	-89.5	0
+179	-89.5	0
+180	-89.5	0
+181	-89.5	0
+182	-89.5	0
+183	-89.5	0
+184	-89.5	0
+185	-89.5	0
+186	-89.5	0
+187	-89.5	0
+188	-89.5	0
+189	-89.5	0
+190	-89.5	0
+191	-89.5	0
+192	-89.5	0
+193	-89.5	0
+194	-89.5	0
+195	-89.5	0
+196	-89.5	0
+197	-89.5	0
+198	-89.5	0
+199	-89.5	0
+200	-89.5	0
+201	-89.5	0
+202	-89.5	0
+203	-89.5	0
+204	-89.5	0
+205	-89.5	0
+206	-89.5	0
+207	-89.5	0
+208	-89.5	0
+209	-89.5	0
+210	-89.5	0
+211	-89.5	0
+212	-89.5	0
+213	-89.5	0
+214	-89.5	0
+215	-89.5	0
+216	-89.5	0
+217	-89.5	0
+218	-89.5	0
+219	-89.5	0
+220	-89.5	0
+221	-89.5	0
+222	-89.5	0
+223	-89.5	0
+224	-89.5	0
+225	-89.5	0
+226	-89.5	0
+227	-89.5	0
+228	-89.5	0
+229	-89.5	0
+230	-89.5	0
+231	-89.5	0
+232	-89.5	0
+233	-89.5	0
+234	-89.5	0
+235	-89.5	0
+236	-89.5	0
+237	-89.5	0
+238	-89.5	0
+239	-89.5	0
+240	-89.5	0
+241	-89.5	0
+242	-89.5	0
+243	-89.5	0
+244	-89.5	0
+245	-89.5	0
+246	-89.5	0
+247	-89.5	0
+248	-89.5	0
+249	-89.5	0
+250	-89.5	0
+251	-89.5	0
+252	-89.5	0
+253	-89.5	0
+254	-89.5	0
+255	-89.5	0
+256	-89.5	0
+257	-89.5	0
+258	-89.5	0
+259	-89.5	0
+260	-89.5	0
+261	-89.5	0
+262	-89.5	0
+263	-89.5	0
+264	-89.5	0
+265	-89.5	0
+266	-89.5	0
+267	-89.5	0
+268	-89.5	0
+269	-89.5	0
+270	-89.5	0
+271	-89.5	0
+272	-89.5	0
+273	-89.5	0
+274	-89.5	0
+275	-89.5	0
+276	-89.5	0
+277	-89.5	0
+278	-89.5	0
+279	-89.5	0
+280	-89.5	0
+281	-89.5	0
+282	-89.5	0
+283	-89.5	0
+284	-89.5	0
+285	-89.5	0
+286	-89.5	0
+287	-89.5	0
+288	-89.5	0
+289	-89.5	0
+290	-89.5	0
+291	-89.5	0
+292	-89.5	0
+293	-89.5	0
+294	-89.5	0
+295	-89.5	0
+296	-89.5	0
+297	-89.5	0
+298	-89.5	0
+299	-89.5	0
+300	-89.5	0
+301	-89.5	0
+302	-89.5	0
+303	-89.5	0
+304	-89.5	0
+305	-89.5	0
+306	-89.5	0
+307	-89.5	0
+308	-89.5	0
+309	-89.5	0
+310	-89.5	0
+311	-89.5	0
+312	-89.5	0
+313	-89.5	0
+314	-89.5	0
+315	-89.5	0
+316	-89.5	0
+317	-89.5	0
+318	-89.5	0
+319	-89.5	0
+320	-89.5	0
+321	-89.5	0
+322	-89.5	0
+323	-89.5	0
+324	-89.5	0
+325	-89.5	0
+326	-89.5	0
+327	-89.5	0
+328	-89.5	0
+329	-89.5	0
+330	-89.5	0
+331	-89.5	0
+332	-89.5	0
+333	-89.5	0
+334	-89.5	0
+335	-89.5	0
+336	-89.5	0
+337	-89.5	0
+338	-89.5	0
+339	-89.5	0
+340	-89.5	0
+341	-89.5	0
+342	-89.5	0
+343	-89.5	0
+344	-89.5	0
+345	-89.5	0
+346	-89.5	0
+347	-89.5	0
+348	-89.5	0
+349	-89.5	0
+350	-89.5	0
+351	-89.5	0
+352	-89.5	0
+353	-89.5	0
+354	-89.5	0
+355	-89.5	0
+356	-89.5	0
+357	-89.5	0
+358	-89.5	0
+359	-89.5	0
+360	-89.5	0
+0	-89	0
+1	-89	0
+2	-89	0
+3	-89	0
+4	-89	0
+5	-89	0
+6	-89	0
+7	-89	0
+8	-89	0
+9	-89	0
+10	-89	0
+11	-89	0
+12	-89	0
+13	-89	0
+14	-89	0
+15	-89	0
+16	-89	0
+17	-89	0
+18	-89	0
+19	-89	0
+20	-89	0
+21	-89	0
+22	-89	0
+23	-89	0
+24	-89	0
+25	-89	0
+26	-89	0
+27	-89	0
+28	-89	0
+29	-89	0
+30	-89	0
+31	-89	0
+32	-89	0
+33	-89	0
+34	-89	0
+35	-89	0
+36	-89	0
+37	-89	0
+38	-89	0
+39	-89	0
+40	-89	0
+41	-89	0
+42	-89	0
+43	-89	0
+44	-89	0
+45	-89	0
+46	-89	0
+47	-89	0
+48	-89	0
+49	-89	0
+50	-89	0
+51	-89	0
+52	-89	0
+53	-89	0
+54	-89	0
+55	-89	0
+56	-89	0
+57	-89	0
+58	-89	0
+59	-89	0
+60	-89	0
+61	-89	0
+62	-89	0
+63	-89	0
+64	-89	0
+65	-89	0
+66	-89	0
+67	-89	0
+68	-89	0
+69	-89	0
+70	-89	0
+71	-89	0
+72	-89	0
+73	-89	0
+74	-89	0
+75	-89	0
+76	-89	0
+77	-89	0
+78	-89	0
+79	-89	0
+80	-89	0
+81	-89	0
+82	-89	0
+83	-89	0
+84	-89	0
+85	-89	0
+86	-89	0
+87	-89	0
+88	-89	0
+89	-89	0
+90	-89	0
+91	-89	0
+92	-89	0
+93	-89	0
+94	-89	0
+95	-89	0
+96	-89	0
+97	-89	0
+98	-89	0
+99	-89	0
+100	-89	0
+101	-89	0
+102	-89	0
+103	-89	0
+104	-89	0
+105	-89	0
+106	-89	0
+107	-89	0
+108	-89	0
+109	-89	0
+110	-89	0
+111	-89	0
+112	-89	0
+113	-89	0
+114	-89	0
+115	-89	0
+116	-89	0
+117	-89	0
+118	-89	0
+119	-89	0
+120	-89	0
+121	-89	0
+122	-89	0
+123	-89	0
+124	-89	0
+125	-89	0
+126	-89	0
+127	-89	0
+128	-89	0
+129	-89	0
+130	-89	0
+131	-89	0
+132	-89	0
+133	-89	0
+134	-89	0
+135	-89	0
+136	-89	0
+137	-89	0
+138	-89	0
+139	-89	0
+140	-89	0
+141	-89	0
+142	-89	0
+143	-89	0
+144	-89	0
+145	-89	0
+146	-89	0
+147	-89	0
+148	-89	0
+149	-89	0
+150	-89	0
+151	-89	0
+152	-89	0
+153	-89	0
+154	-89	0
+155	-89	0
+156	-89	0
+157	-89	0
+158	-89	0
+159	-89	0
+160	-89	0
+161	-89	0
+162	-89	0
+163	-89	0
+164	-89	0
+165	-89	0
+166	-89	0
+167	-89	0
+168	-89	0
+169	-89	0
+170	-89	0
+171	-89	0
+172	-89	0
+173	-89	0
+174	-89	0
+175	-89	0
+176	-89	0
+177	-89	0
+178	-89	0
+179	-89	0
+180	-89	0
+181	-89	0
+182	-89	0
+183	-89	0
+184	-89	0
+185	-89	0
+186	-89	0
+187	-89	0
+188	-89	0
+189	-89	0
+190	-89	0
+191	-89	0
+192	-89	0
+193	-89	0
+194	-89	0
+195	-89	0
+196	-89	0
+197	-89	0
+198	-89	0
+199	-89	0
+200	-89	0
+201	-89	0
+202	-89	0
+203	-89	0
+204	-89	0
+205	-89	0
+206	-89	0
+207	-89	0
+208	-89	0
+209	-89	0
+210	-89	0
+211	-89	0
+212	-89	0
+213	-89	0
+214	-89	0
+215	-89	0
+216	-89	0
+217	-89	0
+218	-89	0
+219	-89	0
+220	-89	0
+221	-89	0
+222	-89	0
+223	-89	0
+224	-89	0
+225	-89	0
+226	-89	0
+227	-89	0
+228	-89	0
+229	-89	0
+230	-89	0
+231	-89	0
+232	-89	0
+233	-89	0
+234	-89	0
+235	-89	0
+236	-89	0
+237	-89	0
+238	-89	0
+239	-89	0
+240	-89	0
+241	-89	0
+242	-89	0
+243	-89	0
+244	-89	0
+245	-89	0
+246	-89	0
+247	-89	0
+248	-89	0
+249	-89	0
+250	-89	0
+251	-89	0
+252	-89	0
+253	-89	0
+254	-89	0
+255	-89	0
+256	-89	0
+257	-89	0
+258	-89	0
+259	-89	0
+260	-89	0
+261	-89	0
+262	-89	0
+263	-89	0
+264	-89	0
+265	-89	0
+266	-89	0
+267	-89	0
+268	-89	0
+269	-89	0
+270	-89	0
+271	-89	0
+272	-89	0
+273	-89	0
+274	-89	0
+275	-89	0
+276	-89	0
+277	-89	0
+278	-89	0
+279	-89	0
+280	-89	0
+281	-89	0
+282	-89	0
+283	-89	0
+284	-89	0
+285	-89	0
+286	-89	0
+287	-89	0
+288	-89	0
+289	-89	0
+290	-89	0
+291	-89	0
+292	-89	0
+293	-89	0
+294	-89	0
+295	-89	0
+296	-89	0
+297	-89	0
+298	-89	0
+299	-89	0
+300	-89	0
+301	-89	0
+302	-89	0
+303	-89	0
+304	-89	0
+305	-89	0
+306	-89	0
+307	-89	0
+308	-89	0
+309	-89	0
+310	-89	0
+311	-89	0
+312	-89	0
+313	-89	0
+314	-89	0
+315	-89	0
+316	-89	0
+317	-89	0
+318	-89	0
+319	-89	0
+320	-89	0
+321	-89	0
+322	-89	0
+323	-89	0
+324	-89	0
+325	-89	0
+326	-89	0
+327	-89	0
+328	-89	0
+329	-89	0
+330	-89	0
+331	-89	0
+332	-89	0
+333	-89	0
+334	-89	0
+335	-89	0
+336	-89	0
+337	-89	0
+338	-89	0
+339	-89	0
+340	-89	0
+341	-89	0
+342	-89	0
+343	-89	0
+344	-89	0
+345	-89	0
+346	-89	0
+347	-89	0
+348	-89	0
+349	-89	0
+350	-89	0
+351	-89	0
+352	-89	0
+353	-89	0
+354	-89	0
+355	-89	0
+356	-89	0
+357	-89	0
+358	-89	0
+359	-89	0
+360	-89	0
+0	-88.5	0
+1	-88.5	0
+2	-88.5	0
+3	-88.5	0
+4	-88.5	0
+5	-88.5	0
+6	-88.5	0
+7	-88.5	0
+8	-88.5	0
+9	-88.5	0
+10	-88.5	0
+11	-88.5	0
+12	-88.5	0
+13	-88.5	0
+14	-88.5	0
+15	-88.5	0
+16	-88.5	0
+17	-88.5	0
+18	-88.5	0
+19	-88.5	0
+20	-88.5	0
+21	-88.5	0
+22	-88.5	0
+23	-88.5	0
+24	-88.5	0
+25	-88.5	0
+26	-88.5	0
+27	-88.5	0
+28	-88.5	0
+29	-88.5	0
+30	-88.5	0
+31	-88.5	0
+32	-88.5	0
+33	-88.5	0
+34	-88.5	0
+35	-88.5	0
+36	-88.5	0
+37	-88.5	0
+38	-88.5	0
+39	-88.5	0
+40	-88.5	0
+41	-88.5	0
+42	-88.5	0
+43	-88.5	0
+44	-88.5	0
+45	-88.5	0
+46	-88.5	0
+47	-88.5	0
+48	-88.5	0
+49	-88.5	0
+50	-88.5	0
+51	-88.5	0
+52	-88.5	0
+53	-88.5	0
+54	-88.5	0
+55	-88.5	0
+56	-88.5	0
+57	-88.5	0
+58	-88.5	0
+59	-88.5	0
+60	-88.5	0
+61	-88.5	0
+62	-88.5	0
+63	-88.5	0
+64	-88.5	0
+65	-88.5	0
+66	-88.5	0
+67	-88.5	0
+68	-88.5	0
+69	-88.5	0
+70	-88.5	0
+71	-88.5	0
+72	-88.5	0
+73	-88.5	0
+74	-88.5	0
+75	-88.5	0
+76	-88.5	0
+77	-88.5	0
+78	-88.5	0
+79	-88.5	0
+80	-88.5	0
+81	-88.5	0
+82	-88.5	0
+83	-88.5	0
+84	-88.5	0
+85	-88.5	0
+86	-88.5	0
+87	-88.5	0
+88	-88.5	0
+89	-88.5	0
+90	-88.5	0
+91	-88.5	0
+92	-88.5	0
+93	-88.5	0
+94	-88.5	0
+95	-88.5	0
+96	-88.5	0
+97	-88.5	0
+98	-88.5	0
+99	-88.5	0
+100	-88.5	0
+101	-88.5	0
+102	-88.5	0
+103	-88.5	0
+104	-88.5	0
+105	-88.5	0
+106	-88.5	0
+107	-88.5	0
+108	-88.5	0
+109	-88.5	0
+110	-88.5	0
+111	-88.5	0
+112	-88.5	0
+113	-88.5	0
+114	-88.5	0
+115	-88.5	0
+116	-88.5	0
+117	-88.5	0
+118	-88.5	0
+119	-88.5	0
+120	-88.5	0
+121	-88.5	0
+122	-88.5	0
+123	-88.5	0
+124	-88.5	0
+125	-88.5	0
+126	-88.5	0
+127	-88.5	0
+128	-88.5	0
+129	-88.5	0
+130	-88.5	0
+131	-88.5	0
+132	-88.5	0
+133	-88.5	0
+134	-88.5	0
+135	-88.5	0
+136	-88.5	0
+137	-88.5	0
+138	-88.5	0
+139	-88.5	0
+140	-88.5	0
+141	-88.5	0
+142	-88.5	0
+143	-88.5	0
+144	-88.5	0
+145	-88.5	0
+146	-88.5	0
+147	-88.5	0
+148	-88.5	0
+149	-88.5	0
+150	-88.5	0
+151	-88.5	0
+152	-88.5	0
+153	-88.5	0
+154	-88.5	0
+155	-88.5	0
+156	-88.5	0
+157	-88.5	0
+158	-88.5	0
+159	-88.5	0
+160	-88.5	0
+161	-88.5	0
+162	-88.5	0
+163	-88.5	0
+164	-88.5	0
+165	-88.5	0
+166	-88.5	0
+167	-88.5	0
+168	-88.5	0
+169	-88.5	0
+170	-88.5	0
+171	-88.5	0
+172	-88.5	0
+173	-88.5	0
+174	-88.5	0
+175	-88.5	0
+176	-88.5	0
+177	-88.5	0
+178	-88.5	0
+179	-88.5	0
+180	-88.5	0
+181	-88.5	0
+182	-88.5	0
+183	-88.5	0
+184	-88.5	0
+185	-88.5	0
+186	-88.5	0
+187	-88.5	0
+188	-88.5	0
+189	-88.5	0
+190	-88.5	0
+191	-88.5	0
+192	-88.5	0
+193	-88.5	0
+194	-88.5	0
+195	-88.5	0
+196	-88.5	0
+197	-88.5	0
+198	-88.5	0
+199	-88.5	0
+200	-88.5	0
+201	-88.5	0
+202	-88.5	0
+203	-88.5	0
+204	-88.5	0
+205	-88.5	0
+206	-88.5	0
+207	-88.5	0
+208	-88.5	0
+209	-88.5	0
+210	-88.5	0
+211	-88.5	0
+212	-88.5	0
+213	-88.5	0
+214	-88.5	0
+215	-88.5	0
+216	-88.5	0
+217	-88.5	0
+218	-88.5	0
+219	-88.5	0
+220	-88.5	0
+221	-88.5	0
+222	-88.5	0
+223	-88.5	0
+224	-88.5	0
+225	-88.5	0
+226	-88.5	0
+227	-88.5	0
+228	-88.5	0
+229	-88.5	0
+230	-88.5	0
+231	-88.5	0
+232	-88.5	0
+233	-88.5	0
+234	-88.5	0
+235	-88.5	0
+236	-88.5	0
+237	-88.5	0
+238	-88.5	0
+239	-88.5	0
+240	-88.5	0
+241	-88.5	0
+242	-88.5	0
+243	-88.5	0
+244	-88.5	0
+245	-88.5	0
+246	-88.5	0
+247	-88.5	0
+248	-88.5	0
+249	-88.5	0
+250	-88.5	0
+251	-88.5	0
+252	-88.5	0
+253	-88.5	0
+254	-88.5	0
+255	-88.5	0
+256	-88.5	0
+257	-88.5	0
+258	-88.5	0
+259	-88.5	0
+260	-88.5	0
+261	-88.5	0
+262	-88.5	0
+263	-88.5	0
+264	-88.5	0
+265	-88.5	0
+266	-88.5	0
+267	-88.5	0
+268	-88.5	0
+269	-88.5	0
+270	-88.5	0
+271	-88.5	0
+272	-88.5	0
+273	-88.5	0
+274	-88.5	0
+275	-88.5	0
+276	-88.5	0
+277	-88.5	0
+278	-88.5	0
+279	-88.5	0
+280	-88.5	0
+281	-88.5	0
+282	-88.5	0
+283	-88.5	0
+284	-88.5	0
+285	-88.5	0
+286	-88.5	0
+287	-88.5	0
+288	-88.5	0
+289	-88.5	0
+290	-88.5	0
+291	-88.5	0
+292	-88.5	0
+293	-88.5	0
+294	-88.5	0
+295	-88.5	0
+296	-88.5	0
+297	-88.5	0
+298	-88.5	0
+299	-88.5	0
+300	-88.5	0
+301	-88.5	0
+302	-88.5	0
+303	-88.5	0
+304	-88.5	0
+305	-88.5	0
+306	-88.5	0
+307	-88.5	0
+308	-88.5	0
+309	-88.5	0
+310	-88.5	0
+311	-88.5	0
+312	-88.5	0
+313	-88.5	0
+314	-88.5	0
+315	-88.5	0
+316	-88.5	0
+317	-88.5	0
+318	-88.5	0
+319	-88.5	0
+320	-88.5	0
+321	-88.5	0
+322	-88.5	0
+323	-88.5	0
+324	-88.5	0
+325	-88.5	0
+326	-88.5	0
+327	-88.5	0
+328	-88.5	0
+329	-88.5	0
+330	-88.5	0
+331	-88.5	0
+332	-88.5	0
+333	-88.5	0
+334	-88.5	0
+335	-88.5	0
+336	-88.5	0
+337	-88.5	0
+338	-88.5	0
+339	-88.5	0
+340	-88.5	0
+341	-88.5	0
+342	-88.5	0
+343	-88.5	0
+344	-88.5	0
+345	-88.5	0
+346	-88.5	0
+347	-88.5	0
+348	-88.5	0
+349	-88.5	0
+350	-88.5	0
+351	-88.5	0
+352	-88.5	0
+353	-88.5	0
+354	-88.5	0
+355	-88.5	0
+356	-88.5	0
+357	-88.5	0
+358	-88.5	0
+359	-88.5	0
+360	-88.5	0
+0	-88	0
+1	-88	0
+2	-88	0
+3	-88	0
+4	-88	0
+5	-88	0
+6	-88	0
+7	-88	0
+8	-88	0
+9	-88	0
+10	-88	0
+11	-88	0
+12	-88	0
+13	-88	0
+14	-88	0
+15	-88	0
+16	-88	0
+17	-88	0
+18	-88	0
+19	-88	0
+20	-88	0
+21	-88	0
+22	-88	0
+23	-88	0
+24	-88	0
+25	-88	0
+26	-88	0
+27	-88	0
+28	-88	0
+29	-88	0
+30	-88	0
+31	-88	0
+32	-88	0
+33	-88	0
+34	-88	0
+35	-88	0
+36	-88	0
+37	-88	0
+38	-88	0
+39	-88	0
+40	-88	0
+41	-88	0
+42	-88	0
+43	-88	0
+44	-88	0
+45	-88	0
+46	-88	0
+47	-88	0
+48	-88	0
+49	-88	0
+50	-88	0
+51	-88	0
+52	-88	0
+53	-88	0
+54	-88	0
+55	-88	0
+56	-88	0
+57	-88	0
+58	-88	0
+59	-88	0
+60	-88	0
+61	-88	0
+62	-88	0
+63	-88	0
+64	-88	0
+65	-88	0
+66	-88	0
+67	-88	0
+68	-88	0
+69	-88	0
+70	-88	0
+71	-88	0
+72	-88	0
+73	-88	0
+74	-88	0
+75	-88	0
+76	-88	0
+77	-88	0
+78	-88	0
+79	-88	0
+80	-88	0
+81	-88	0
+82	-88	0
+83	-88	0
+84	-88	0
+85	-88	0
+86	-88	0
+87	-88	0
+88	-88	0
+89	-88	0
+90	-88	0
+91	-88	0
+92	-88	0
+93	-88	0
+94	-88	0
+95	-88	0
+96	-88	0
+97	-88	0
+98	-88	0
+99	-88	0
+100	-88	0
+101	-88	0
+102	-88	0
+103	-88	0
+104	-88	0
+105	-88	0
+106	-88	0
+107	-88	0
+108	-88	0
+109	-88	0
+110	-88	0
+111	-88	0
+112	-88	0
+113	-88	0
+114	-88	0
+115	-88	0
+116	-88	0
+117	-88	0
+118	-88	0
+119	-88	0
+120	-88	0
+121	-88	0
+122	-88	0
+123	-88	0
+124	-88	0
+125	-88	0
+126	-88	0
+127	-88	0
+128	-88	0
+129	-88	0
+130	-88	0
+131	-88	0
+132	-88	0
+133	-88	0
+134	-88	0
+135	-88	0
+136	-88	0
+137	-88	0
+138	-88	0
+139	-88	0
+140	-88	0
+141	-88	0
+142	-88	0
+143	-88	0
+144	-88	0
+145	-88	0
+146	-88	0
+147	-88	0
+148	-88	0
+149	-88	0
+150	-88	0
+151	-88	0
+152	-88	0
+153	-88	0
+154	-88	0
+155	-88	0
+156	-88	0
+157	-88	0
+158	-88	0
+159	-88	0
+160	-88	0
+161	-88	0
+162	-88	0
+163	-88	0
+164	-88	0
+165	-88	0
+166	-88	0
+167	-88	0
+168	-88	0
+169	-88	0
+170	-88	0
+171	-88	0
+172	-88	0
+173	-88	0
+174	-88	0
+175	-88	0
+176	-88	0
+177	-88	0
+178	-88	0
+179	-88	0
+180	-88	0
+181	-88	0
+182	-88	0
+183	-88	0
+184	-88	0
+185	-88	0
+186	-88	0
+187	-88	0
+188	-88	0
+189	-88	0
+190	-88	0
+191	-88	0
+192	-88	0
+193	-88	0
+194	-88	0
+195	-88	0
+196	-88	0
+197	-88	0
+198	-88	0
+199	-88	0
+200	-88	0
+201	-88	0
+202	-88	0
+203	-88	0
+204	-88	0
+205	-88	0
+206	-88	0
+207	-88	0
+208	-88	0
+209	-88	0
+210	-88	0
+211	-88	0
+212	-88	0
+213	-88	0
+214	-88	0
+215	-88	0
+216	-88	0
+217	-88	0
+218	-88	0
+219	-88	0
+220	-88	0
+221	-88	0
+222	-88	0
+223	-88	0
+224	-88	0
+225	-88	0
+226	-88	0
+227	-88	0
+228	-88	0
+229	-88	0
+230	-88	0
+231	-88	0
+232	-88	0
+233	-88	0
+234	-88	0
+235	-88	0
+236	-88	0
+237	-88	0
+238	-88	0
+239	-88	0
+240	-88	0
+241	-88	0
+242	-88	0
+243	-88	0
+244	-88	0
+245	-88	0
+246	-88	0
+247	-88	0
+248	-88	0
+249	-88	0
+250	-88	0
+251	-88	0
+252	-88	0
+253	-88	0
+254	-88	0
+255	-88	0
+256	-88	0
+257	-88	0
+258	-88	0
+259	-88	0
+260	-88	0
+261	-88	0
+262	-88	0
+263	-88	0
+264	-88	0
+265	-88	0
+266	-88	0
+267	-88	0
+268	-88	0
+269	-88	0
+270	-88	0
+271	-88	0
+272	-88	0
+273	-88	0
+274	-88	0
+275	-88	0
+276	-88	0
+277	-88	0
+278	-88	0
+279	-88	0
+280	-88	0
+281	-88	0
+282	-88	0
+283	-88	0
+284	-88	0
+285	-88	0
+286	-88	0
+287	-88	0
+288	-88	0
+289	-88	0
+290	-88	0
+291	-88	0
+292	-88	0
+293	-88	0
+294	-88	0
+295	-88	0
+296	-88	0
+297	-88	0
+298	-88	0
+299	-88	0
+300	-88	0
+301	-88	0
+302	-88	0
+303	-88	0
+304	-88	0
+305	-88	0
+306	-88	0
+307	-88	0
+308	-88	0
+309	-88	0
+310	-88	0
+311	-88	0
+312	-88	0
+313	-88	0
+314	-88	0
+315	-88	0
+316	-88	0
+317	-88	0
+318	-88	0
+319	-88	0
+320	-88	0
+321	-88	0
+322	-88	0
+323	-88	0
+324	-88	0
+325	-88	0
+326	-88	0
+327	-88	0
+328	-88	0
+329	-88	0
+330	-88	0
+331	-88	0
+332	-88	0
+333	-88	0
+334	-88	0
+335	-88	0
+336	-88	0
+337	-88	0
+338	-88	0
+339	-88	0
+340	-88	0
+341	-88	0
+342	-88	0
+343	-88	0
+344	-88	0
+345	-88	0
+346	-88	0
+347	-88	0
+348	-88	0
+349	-88	0
+350	-88	0
+351	-88	0
+352	-88	0
+353	-88	0
+354	-88	0
+355	-88	0
+356	-88	0
+357	-88	0
+358	-88	0
+359	-88	0
+360	-88	0
+0	-87.5	0
+1	-87.5	0
+2	-87.5	0
+3	-87.5	0
+4	-87.5	0
+5	-87.5	0
+6	-87.5	0
+7	-87.5	0
+8	-87.5	0
+9	-87.5	0
+10	-87.5	0
+11	-87.5	0
+12	-87.5	0
+13	-87.5	0
+14	-87.5	0
+15	-87.5	0
+16	-87.5	0
+17	-87.5	0
+18	-87.5	0
+19	-87.5	0
+20	-87.5	0
+21	-87.5	0
+22	-87.5	0
+23	-87.5	0
+24	-87.5	0
+25	-87.5	0
+26	-87.5	0
+27	-87.5	0
+28	-87.5	0
+29	-87.5	0
+30	-87.5	0
+31	-87.5	0
+32	-87.5	0
+33	-87.5	0
+34	-87.5	0
+35	-87.5	0
+36	-87.5	0
+37	-87.5	0
+38	-87.5	0
+39	-87.5	0
+40	-87.5	0
+41	-87.5	0
+42	-87.5	0
+43	-87.5	0
+44	-87.5	0
+45	-87.5	0
+46	-87.5	0
+47	-87.5	0
+48	-87.5	0
+49	-87.5	0
+50	-87.5	0
+51	-87.5	0
+52	-87.5	0
+53	-87.5	0
+54	-87.5	0
+55	-87.5	0
+56	-87.5	0
+57	-87.5	0
+58	-87.5	0
+59	-87.5	0
+60	-87.5	0
+61	-87.5	0
+62	-87.5	0
+63	-87.5	0
+64	-87.5	0
+65	-87.5	0
+66	-87.5	0
+67	-87.5	0
+68	-87.5	0
+69	-87.5	0
+70	-87.5	0
+71	-87.5	0
+72	-87.5	0
+73	-87.5	0
+74	-87.5	0
+75	-87.5	0
+76	-87.5	0
+77	-87.5	0
+78	-87.5	0
+79	-87.5	0
+80	-87.5	0
+81	-87.5	0
+82	-87.5	0
+83	-87.5	0
+84	-87.5	0
+85	-87.5	0
+86	-87.5	0
+87	-87.5	0
+88	-87.5	0
+89	-87.5	0
+90	-87.5	0
+91	-87.5	0
+92	-87.5	0
+93	-87.5	0
+94	-87.5	0
+95	-87.5	0
+96	-87.5	0
+97	-87.5	0
+98	-87.5	0
+99	-87.5	0
+100	-87.5	0
+101	-87.5	0
+102	-87.5	0
+103	-87.5	0
+104	-87.5	0
+105	-87.5	0
+106	-87.5	0
+107	-87.5	0
+108	-87.5	0
+109	-87.5	0
+110	-87.5	0
+111	-87.5	0
+112	-87.5	0
+113	-87.5	0
+114	-87.5	0
+115	-87.5	0
+116	-87.5	0
+117	-87.5	0
+118	-87.5	0
+119	-87.5	0
+120	-87.5	0
+121	-87.5	0
+122	-87.5	0
+123	-87.5	0
+124	-87.5	0
+125	-87.5	0
+126	-87.5	0
+127	-87.5	0
+128	-87.5	0
+129	-87.5	0
+130	-87.5	0
+131	-87.5	0
+132	-87.5	0
+133	-87.5	0
+134	-87.5	0
+135	-87.5	0
+136	-87.5	0
+137	-87.5	0
+138	-87.5	0
+139	-87.5	0
+140	-87.5	0
+141	-87.5	0
+142	-87.5	0
+143	-87.5	0
+144	-87.5	0
+145	-87.5	0
+146	-87.5	0
+147	-87.5	0
+148	-87.5	0
+149	-87.5	0
+150	-87.5	0
+151	-87.5	0
+152	-87.5	0
+153	-87.5	0
+154	-87.5	0
+155	-87.5	0
+156	-87.5	0
+157	-87.5	0
+158	-87.5	0
+159	-87.5	0
+160	-87.5	0
+161	-87.5	0
+162	-87.5	0
+163	-87.5	0
+164	-87.5	0
+165	-87.5	0
+166	-87.5	0
+167	-87.5	0
+168	-87.5	0
+169	-87.5	0
+170	-87.5	0
+171	-87.5	0
+172	-87.5	0
+173	-87.5	0
+174	-87.5	0
+175	-87.5	0
+176	-87.5	0
+177	-87.5	0
+178	-87.5	0
+179	-87.5	0
+180	-87.5	0
+181	-87.5	0
+182	-87.5	0
+183	-87.5	0
+184	-87.5	0
+185	-87.5	0
+186	-87.5	0
+187	-87.5	0
+188	-87.5	0
+189	-87.5	0
+190	-87.5	0
+191	-87.5	0
+192	-87.5	0
+193	-87.5	0
+194	-87.5	0
+195	-87.5	0
+196	-87.5	0
+197	-87.5	0
+198	-87.5	0
+199	-87.5	0
+200	-87.5	0
+201	-87.5	0
+202	-87.5	0
+203	-87.5	0
+204	-87.5	0
+205	-87.5	0
+206	-87.5	0
+207	-87.5	0
+208	-87.5	0
+209	-87.5	0
+210	-87.5	0
+211	-87.5	0
+212	-87.5	0
+213	-87.5	0
+214	-87.5	0
+215	-87.5	0
+216	-87.5	0
+217	-87.5	0
+218	-87.5	0
+219	-87.5	0
+220	-87.5	0
+221	-87.5	0
+222	-87.5	0
+223	-87.5	0
+224	-87.5	0
+225	-87.5	0
+226	-87.5	0
+227	-87.5	0
+228	-87.5	0
+229	-87.5	0
+230	-87.5	0
+231	-87.5	0
+232	-87.5	0
+233	-87.5	0
+234	-87.5	0
+235	-87.5	0
+236	-87.5	0
+237	-87.5	0
+238	-87.5	0
+239	-87.5	0
+240	-87.5	0
+241	-87.5	0
+242	-87.5	0
+243	-87.5	0
+244	-87.5	0
+245	-87.5	0
+246	-87.5	0
+247	-87.5	0
+248	-87.5	0
+249	-87.5	0
+250	-87.5	0
+251	-87.5	0
+252	-87.5	0
+253	-87.5	0
+254	-87.5	0
+255	-87.5	0
+256	-87.5	0
+257	-87.5	0
+258	-87.5	0
+259	-87.5	0
+260	-87.5	0
+261	-87.5	0
+262	-87.5	0
+263	-87.5	0
+264	-87.5	0
+265	-87.5	0
+266	-87.5	0
+267	-87.5	0
+268	-87.5	0
+269	-87.5	0
+270	-87.5	0
+271	-87.5	0
+272	-87.5	0
+273	-87.5	0
+274	-87.5	0
+275	-87.5	0
+276	-87.5	0
+277	-87.5	0
+278	-87.5	0
+279	-87.5	0
+280	-87.5	0
+281	-87.5	0
+282	-87.5	0
+283	-87.5	0
+284	-87.5	0
+285	-87.5	0
+286	-87.5	0
+287	-87.5	0
+288	-87.5	0
+289	-87.5	0
+290	-87.5	0
+291	-87.5	0
+292	-87.5	0
+293	-87.5	0
+294	-87.5	0
+295	-87.5	0
+296	-87.5	0
+297	-87.5	0
+298	-87.5	0
+299	-87.5	0
+300	-87.5	0
+301	-87.5	0
+302	-87.5	0
+303	-87.5	0
+304	-87.5	0
+305	-87.5	0
+306	-87.5	0
+307	-87.5	0
+308	-87.5	0
+309	-87.5	0
+310	-87.5	0
+311	-87.5	0
+312	-87.5	0
+313	-87.5	0
+314	-87.5	0
+315	-87.5	0
+316	-87.5	0
+317	-87.5	0
+318	-87.5	0
+319	-87.5	0
+320	-87.5	0
+321	-87.5	0
+322	-87.5	0
+323	-87.5	0
+324	-87.5	0
+325	-87.5	0
+326	-87.5	0
+327	-87.5	0
+328	-87.5	0
+329	-87.5	0
+330	-87.5	0
+331	-87.5	0
+332	-87.5	0
+333	-87.5	0
+334	-87.5	0
+335	-87.5	0
+336	-87.5	0
+337	-87.5	0
+338	-87.5	0
+339	-87.5	0
+340	-87.5	0
+341	-87.5	0
+342	-87.5	0
+343	-87.5	0
+344	-87.5	0
+345	-87.5	0
+346	-87.5	0
+347	-87.5	0
+348	-87.5	0
+349	-87.5	0
+350	-87.5	0
+351	-87.5	0
+352	-87.5	0
+353	-87.5	0
+354	-87.5	0
+355	-87.5	0
+356	-87.5	0
+357	-87.5	0
+358	-87.5	0
+359	-87.5	0
+360	-87.5	0
+0	-87	0
+1	-87	0
+2	-87	0
+3	-87	0
+4	-87	0
+5	-87	0
+6	-87	0
+7	-87	0
+8	-87	0
+9	-87	0
+10	-87	0
+11	-87	0
+12	-87	0
+13	-87	0
+14	-87	0
+15	-87	0
+16	-87	0
+17	-87	0
+18	-87	0
+19	-87	0
+20	-87	0
+21	-87	0
+22	-87	0
+23	-87	0
+24	-87	0
+25	-87	0
+26	-87	0
+27	-87	0
+28	-87	0
+29	-87	0
+30	-87	0
+31	-87	0
+32	-87	0
+33	-87	0
+34	-87	0
+35	-87	0
+36	-87	0
+37	-87	0
+38	-87	0
+39	-87	0
+40	-87	0
+41	-87	0
+42	-87	0
+43	-87	0
+44	-87	0
+45	-87	0
+46	-87	0
+47	-87	0
+48	-87	0
+49	-87	0
+50	-87	0
+51	-87	0
+52	-87	0
+53	-87	0
+54	-87	0
+55	-87	0
+56	-87	0
+57	-87	0
+58	-87	0
+59	-87	0
+60	-87	0
+61	-87	0
+62	-87	0
+63	-87	0
+64	-87	0
+65	-87	0
+66	-87	0
+67	-87	0
+68	-87	0
+69	-87	0
+70	-87	0
+71	-87	0
+72	-87	0
+73	-87	0
+74	-87	0
+75	-87	0
+76	-87	0
+77	-87	0
+78	-87	0
+79	-87	0
+80	-87	0
+81	-87	0
+82	-87	0
+83	-87	0
+84	-87	0
+85	-87	0
+86	-87	0
+87	-87	0
+88	-87	0
+89	-87	0
+90	-87	0
+91	-87	0
+92	-87	0
+93	-87	0
+94	-87	0
+95	-87	0
+96	-87	0
+97	-87	0
+98	-87	0
+99	-87	0
+100	-87	0
+101	-87	0
+102	-87	0
+103	-87	0
+104	-87	0
+105	-87	0
+106	-87	0
+107	-87	0
+108	-87	0
+109	-87	0
+110	-87	0
+111	-87	0
+112	-87	0
+113	-87	0
+114	-87	0
+115	-87	0
+116	-87	0
+117	-87	0
+118	-87	0
+119	-87	0
+120	-87	0
+121	-87	0
+122	-87	0
+123	-87	0
+124	-87	0
+125	-87	0
+126	-87	0
+127	-87	0
+128	-87	0
+129	-87	0
+130	-87	0
+131	-87	0
+132	-87	0
+133	-87	0
+134	-87	0
+135	-87	0
+136	-87	0
+137	-87	0
+138	-87	0
+139	-87	0
+140	-87	0
+141	-87	0
+142	-87	0
+143	-87	0
+144	-87	0
+145	-87	0
+146	-87	0
+147	-87	0
+148	-87	0
+149	-87	0
+150	-87	0
+151	-87	0
+152	-87	0
+153	-87	0
+154	-87	0
+155	-87	0
+156	-87	0
+157	-87	0
+158	-87	0
+159	-87	0
+160	-87	0
+161	-87	0
+162	-87	0
+163	-87	0
+164	-87	0
+165	-87	0
+166	-87	0
+167	-87	0
+168	-87	0
+169	-87	0
+170	-87	0
+171	-87	0
+172	-87	0
+173	-87	0
+174	-87	0
+175	-87	0
+176	-87	0
+177	-87	0
+178	-87	0
+179	-87	0
+180	-87	0
+181	-87	0
+182	-87	0
+183	-87	0
+184	-87	0
+185	-87	0
+186	-87	0
+187	-87	0
+188	-87	0
+189	-87	0
+190	-87	0
+191	-87	0
+192	-87	0
+193	-87	0
+194	-87	0
+195	-87	0
+196	-87	0
+197	-87	0
+198	-87	0
+199	-87	0
+200	-87	0
+201	-87	0
+202	-87	0
+203	-87	0
+204	-87	0
+205	-87	0
+206	-87	0
+207	-87	0
+208	-87	0
+209	-87	0
+210	-87	0
+211	-87	0
+212	-87	0
+213	-87	0
+214	-87	0
+215	-87	0
+216	-87	0
+217	-87	0
+218	-87	0
+219	-87	0
+220	-87	0
+221	-87	0
+222	-87	0
+223	-87	0
+224	-87	0
+225	-87	0
+226	-87	0
+227	-87	0
+228	-87	0
+229	-87	0
+230	-87	0
+231	-87	0
+232	-87	0
+233	-87	0
+234	-87	0
+235	-87	0
+236	-87	0
+237	-87	0
+238	-87	0
+239	-87	0
+240	-87	0
+241	-87	0
+242	-87	0
+243	-87	0
+244	-87	0
+245	-87	0
+246	-87	0
+247	-87	0
+248	-87	0
+249	-87	0
+250	-87	0
+251	-87	0
+252	-87	0
+253	-87	0
+254	-87	0
+255	-87	0
+256	-87	0
+257	-87	0
+258	-87	0
+259	-87	0
+260	-87	0
+261	-87	0
+262	-87	0
+263	-87	0
+264	-87	0
+265	-87	0
+266	-87	0
+267	-87	0
+268	-87	0
+269	-87	0
+270	-87	0
+271	-87	0
+272	-87	0
+273	-87	0
+274	-87	0
+275	-87	0
+276	-87	0
+277	-87	0
+278	-87	0
+279	-87	0
+280	-87	0
+281	-87	0
+282	-87	0
+283	-87	0
+284	-87	0
+285	-87	0
+286	-87	0
+287	-87	0
+288	-87	0
+289	-87	0
+290	-87	0
+291	-87	0
+292	-87	0
+293	-87	0
+294	-87	0
+295	-87	0
+296	-87	0
+297	-87	0
+298	-87	0
+299	-87	0
+300	-87	0
+301	-87	0
+302	-87	0
+303	-87	0
+304	-87	0
+305	-87	0
+306	-87	0
+307	-87	0
+308	-87	0
+309	-87	0
+310	-87	0
+311	-87	0
+312	-87	0
+313	-87	0
+314	-87	0
+315	-87	0
+316	-87	0
+317	-87	0
+318	-87	0
+319	-87	0
+320	-87	0
+321	-87	0
+322	-87	0
+323	-87	0
+324	-87	0
+325	-87	0
+326	-87	0
+327	-87	0
+328	-87	0
+329	-87	0
+330	-87	0
+331	-87	0
+332	-87	0
+333	-87	0
+334	-87	0
+335	-87	0
+336	-87	0
+337	-87	0
+338	-87	0
+339	-87	0
+340	-87	0
+341	-87	0
+342	-87	0
+343	-87	0
+344	-87	0
+345	-87	0
+346	-87	0
+347	-87	0
+348	-87	0
+349	-87	0
+350	-87	0
+351	-87	0
+352	-87	0
+353	-87	0
+354	-87	0
+355	-87	0
+356	-87	0
+357	-87	0
+358	-87	0
+359	-87	0
+360	-87	0
+0	-86.5	0
+1	-86.5	0
+2	-86.5	0
+3	-86.5	0
+4	-86.5	0
+5	-86.5	0
+6	-86.5	0
+7	-86.5	0
+8	-86.5	0
+9	-86.5	0
+10	-86.5	0
+11	-86.5	0
+12	-86.5	0
+13	-86.5	0
+14	-86.5	0
+15	-86.5	0
+16	-86.5	0
+17	-86.5	0
+18	-86.5	0
+19	-86.5	0
+20	-86.5	0
+21	-86.5	0
+22	-86.5	0
+23	-86.5	0
+24	-86.5	0
+25	-86.5	0
+26	-86.5	0
+27	-86.5	0
+28	-86.5	0
+29	-86.5	0
+30	-86.5	0
+31	-86.5	0
+32	-86.5	0
+33	-86.5	0
+34	-86.5	0
+35	-86.5	0
+36	-86.5	0
+37	-86.5	0
+38	-86.5	0
+39	-86.5	0
+40	-86.5	0
+41	-86.5	0
+42	-86.5	0
+43	-86.5	0
+44	-86.5	0
+45	-86.5	0
+46	-86.5	0
+47	-86.5	0
+48	-86.5	0
+49	-86.5	0
+50	-86.5	0
+51	-86.5	0
+52	-86.5	0
+53	-86.5	0
+54	-86.5	0
+55	-86.5	0
+56	-86.5	0
+57	-86.5	0
+58	-86.5	0
+59	-86.5	0
+60	-86.5	0
+61	-86.5	0
+62	-86.5	0
+63	-86.5	0
+64	-86.5	0
+65	-86.5	0
+66	-86.5	0
+67	-86.5	0
+68	-86.5	0
+69	-86.5	0
+70	-86.5	0
+71	-86.5	0
+72	-86.5	0
+73	-86.5	0
+74	-86.5	0
+75	-86.5	0
+76	-86.5	0
+77	-86.5	0
+78	-86.5	0
+79	-86.5	0
+80	-86.5	0
+81	-86.5	0
+82	-86.5	0
+83	-86.5	0
+84	-86.5	0
+85	-86.5	0
+86	-86.5	0
+87	-86.5	0
+88	-86.5	0
+89	-86.5	0
+90	-86.5	0
+91	-86.5	0
+92	-86.5	0
+93	-86.5	0
+94	-86.5	0
+95	-86.5	0
+96	-86.5	0
+97	-86.5	0
+98	-86.5	0
+99	-86.5	0
+100	-86.5	0
+101	-86.5	0
+102	-86.5	0
+103	-86.5	0
+104	-86.5	0
+105	-86.5	0
+106	-86.5	0
+107	-86.5	0
+108	-86.5	0
+109	-86.5	0
+110	-86.5	0
+111	-86.5	0
+112	-86.5	0
+113	-86.5	0
+114	-86.5	0
+115	-86.5	0
+116	-86.5	0
+117	-86.5	0
+118	-86.5	0
+119	-86.5	0
+120	-86.5	0
+121	-86.5	0
+122	-86.5	0
+123	-86.5	0
+124	-86.5	0
+125	-86.5	0
+126	-86.5	0
+127	-86.5	0
+128	-86.5	0
+129	-86.5	0
+130	-86.5	0
+131	-86.5	0
+132	-86.5	0
+133	-86.5	0
+134	-86.5	0
+135	-86.5	0
+136	-86.5	0
+137	-86.5	0
+138	-86.5	0
+139	-86.5	0
+140	-86.5	0
+141	-86.5	0
+142	-86.5	0
+143	-86.5	0
+144	-86.5	0
+145	-86.5	0
+146	-86.5	0
+147	-86.5	0
+148	-86.5	0
+149	-86.5	0
+150	-86.5	0
+151	-86.5	0
+152	-86.5	0
+153	-86.5	0
+154	-86.5	0
+155	-86.5	0
+156	-86.5	0
+157	-86.5	0
+158	-86.5	0
+159	-86.5	0
+160	-86.5	0
+161	-86.5	0
+162	-86.5	0
+163	-86.5	0
+164	-86.5	0
+165	-86.5	0
+166	-86.5	0
+167	-86.5	0
+168	-86.5	0
+169	-86.5	0
+170	-86.5	0
+171	-86.5	0
+172	-86.5	0
+173	-86.5	0
+174	-86.5	0
+175	-86.5	0
+176	-86.5	0
+177	-86.5	0
+178	-86.5	0
+179	-86.5	0
+180	-86.5	0
+181	-86.5	0
+182	-86.5	0
+183	-86.5	0
+184	-86.5	0
+185	-86.5	0
+186	-86.5	0
+187	-86.5	0
+188	-86.5	0
+189	-86.5	0
+190	-86.5	0
+191	-86.5	0
+192	-86.5	0
+193	-86.5	0
+194	-86.5	0
+195	-86.5	0
+196	-86.5	0
+197	-86.5	0
+198	-86.5	0
+199	-86.5	0
+200	-86.5	0
+201	-86.5	0
+202	-86.5	0
+203	-86.5	0
+204	-86.5	0
+205	-86.5	0
+206	-86.5	0
+207	-86.5	0
+208	-86.5	0
+209	-86.5	0
+210	-86.5	0
+211	-86.5	0
+212	-86.5	0
+213	-86.5	0
+214	-86.5	0
+215	-86.5	0
+216	-86.5	0
+217	-86.5	0
+218	-86.5	0
+219	-86.5	0
+220	-86.5	0
+221	-86.5	0
+222	-86.5	0
+223	-86.5	0
+224	-86.5	0
+225	-86.5	0
+226	-86.5	0
+227	-86.5	0
+228	-86.5	0
+229	-86.5	0
+230	-86.5	0
+231	-86.5	0
+232	-86.5	0
+233	-86.5	0
+234	-86.5	0
+235	-86.5	0
+236	-86.5	0
+237	-86.5	0
+238	-86.5	0
+239	-86.5	0
+240	-86.5	0
+241	-86.5	0
+242	-86.5	0
+243	-86.5	0
+244	-86.5	0
+245	-86.5	0
+246	-86.5	0
+247	-86.5	0
+248	-86.5	0
+249	-86.5	0
+250	-86.5	0
+251	-86.5	0
+252	-86.5	0
+253	-86.5	0
+254	-86.5	0
+255	-86.5	0
+256	-86.5	0
+257	-86.5	0
+258	-86.5	0
+259	-86.5	0
+260	-86.5	0
+261	-86.5	0
+262	-86.5	0
+263	-86.5	0
+264	-86.5	0
+265	-86.5	0
+266	-86.5	0
+267	-86.5	0
+268	-86.5	0
+269	-86.5	0
+270	-86.5	0
+271	-86.5	0
+272	-86.5	0
+273	-86.5	0
+274	-86.5	0
+275	-86.5	0
+276	-86.5	0
+277	-86.5	0
+278	-86.5	0
+279	-86.5	0
+280	-86.5	0
+281	-86.5	0
+282	-86.5	0
+283	-86.5	0
+284	-86.5	0
+285	-86.5	0
+286	-86.5	0
+287	-86.5	0
+288	-86.5	0
+289	-86.5	0
+290	-86.5	0
+291	-86.5	0
+292	-86.5	0
+293	-86.5	0
+294	-86.5	0
+295	-86.5	0
+296	-86.5	0
+297	-86.5	0
+298	-86.5	0
+299	-86.5	0
+300	-86.5	0
+301	-86.5	0
+302	-86.5	0
+303	-86.5	0
+304	-86.5	0
+305	-86.5	0
+306	-86.5	0
+307	-86.5	0
+308	-86.5	0
+309	-86.5	0
+310	-86.5	0
+311	-86.5	0
+312	-86.5	0
+313	-86.5	0
+314	-86.5	0
+315	-86.5	0
+316	-86.5	0
+317	-86.5	0
+318	-86.5	0
+319	-86.5	0
+320	-86.5	0
+321	-86.5	0
+322	-86.5	0
+323	-86.5	0
+324	-86.5	0
+325	-86.5	0
+326	-86.5	0
+327	-86.5	0
+328	-86.5	0
+329	-86.5	0
+330	-86.5	0
+331	-86.5	0
+332	-86.5	0
+333	-86.5	0
+334	-86.5	0
+335	-86.5	0
+336	-86.5	0
+337	-86.5	0
+338	-86.5	0
+339	-86.5	0
+340	-86.5	0
+341	-86.5	0
+342	-86.5	0
+343	-86.5	0
+344	-86.5	0
+345	-86.5	0
+346	-86.5	0
+347	-86.5	0
+348	-86.5	0
+349	-86.5	0
+350	-86.5	0
+351	-86.5	0
+352	-86.5	0
+353	-86.5	0
+354	-86.5	0
+355	-86.5	0
+356	-86.5	0
+357	-86.5	0
+358	-86.5	0
+359	-86.5	0
+360	-86.5	0
+0	-86	0
+1	-86	0
+2	-86	0
+3	-86	0
+4	-86	0
+5	-86	0
+6	-86	0
+7	-86	0
+8	-86	0
+9	-86	0
+10	-86	0
+11	-86	0
+12	-86	0
+13	-86	0
+14	-86	0
+15	-86	0
+16	-86	0
+17	-86	0
+18	-86	0
+19	-86	0
+20	-86	0
+21	-86	0
+22	-86	0
+23	-86	0
+24	-86	0
+25	-86	0
+26	-86	0
+27	-86	0
+28	-86	0
+29	-86	0
+30	-86	0
+31	-86	0
+32	-86	0
+33	-86	0
+34	-86	0
+35	-86	0
+36	-86	0
+37	-86	0
+38	-86	0
+39	-86	0
+40	-86	0
+41	-86	0
+42	-86	0
+43	-86	0
+44	-86	0
+45	-86	0
+46	-86	0
+47	-86	0
+48	-86	0
+49	-86	0
+50	-86	0
+51	-86	0
+52	-86	0
+53	-86	0
+54	-86	0
+55	-86	0
+56	-86	0
+57	-86	0
+58	-86	0
+59	-86	0
+60	-86	0
+61	-86	0
+62	-86	0
+63	-86	0
+64	-86	0
+65	-86	0
+66	-86	0
+67	-86	0
+68	-86	0
+69	-86	0
+70	-86	0
+71	-86	0
+72	-86	0
+73	-86	0
+74	-86	0
+75	-86	0
+76	-86	0
+77	-86	0
+78	-86	0
+79	-86	0
+80	-86	0
+81	-86	0
+82	-86	0
+83	-86	0
+84	-86	0
+85	-86	0
+86	-86	0
+87	-86	0
+88	-86	0
+89	-86	0
+90	-86	0
+91	-86	0
+92	-86	0
+93	-86	0
+94	-86	0
+95	-86	0
+96	-86	0
+97	-86	0
+98	-86	0
+99	-86	0
+100	-86	0
+101	-86	0
+102	-86	0
+103	-86	0
+104	-86	0
+105	-86	0
+106	-86	0
+107	-86	0
+108	-86	0
+109	-86	0
+110	-86	0
+111	-86	0
+112	-86	0
+113	-86	0
+114	-86	0
+115	-86	0
+116	-86	0
+117	-86	0
+118	-86	0
+119	-86	0
+120	-86	0
+121	-86	0
+122	-86	0
+123	-86	0
+124	-86	0
+125	-86	0
+126	-86	0
+127	-86	0
+128	-86	0
+129	-86	0
+130	-86	0
+131	-86	0
+132	-86	0
+133	-86	0
+134	-86	0
+135	-86	0
+136	-86	0
+137	-86	0
+138	-86	0
+139	-86	0
+140	-86	0
+141	-86	0
+142	-86	0
+143	-86	0
+144	-86	0
+145	-86	0
+146	-86	0
+147	-86	0
+148	-86	0
+149	-86	0
+150	-86	0
+151	-86	0
+152	-86	0
+153	-86	0
+154	-86	0
+155	-86	0
+156	-86	0
+157	-86	0
+158	-86	0
+159	-86	0
+160	-86	0
+161	-86	0
+162	-86	0
+163	-86	0
+164	-86	0
+165	-86	0
+166	-86	0
+167	-86	0
+168	-86	0
+169	-86	0
+170	-86	0
+171	-86	0
+172	-86	0
+173	-86	0
+174	-86	0
+175	-86	0
+176	-86	0
+177	-86	0
+178	-86	0
+179	-86	0
+180	-86	0
+181	-86	0
+182	-86	0
+183	-86	0
+184	-86	0
+185	-86	0
+186	-86	0
+187	-86	0
+188	-86	0
+189	-86	0
+190	-86	0
+191	-86	0
+192	-86	0
+193	-86	0
+194	-86	0
+195	-86	0
+196	-86	0
+197	-86	0
+198	-86	0
+199	-86	0
+200	-86	0
+201	-86	0
+202	-86	0
+203	-86	0
+204	-86	0
+205	-86	0
+206	-86	0
+207	-86	0
+208	-86	0
+209	-86	0
+210	-86	0
+211	-86	0
+212	-86	0
+213	-86	0
+214	-86	0
+215	-86	0
+216	-86	0
+217	-86	0
+218	-86	0
+219	-86	0
+220	-86	0
+221	-86	0
+222	-86	0
+223	-86	0
+224	-86	0
+225	-86	0
+226	-86	0
+227	-86	0
+228	-86	0
+229	-86	0
+230	-86	0
+231	-86	0
+232	-86	0
+233	-86	0
+234	-86	0
+235	-86	0
+236	-86	0
+237	-86	0
+238	-86	0
+239	-86	0
+240	-86	0
+241	-86	0
+242	-86	0
+243	-86	0
+244	-86	0
+245	-86	0
+246	-86	0
+247	-86	0
+248	-86	0
+249	-86	0
+250	-86	0
+251	-86	0
+252	-86	0
+253	-86	0
+254	-86	0
+255	-86	0
+256	-86	0
+257	-86	0
+258	-86	0
+259	-86	0
+260	-86	0
+261	-86	0
+262	-86	0
+263	-86	0
+264	-86	0
+265	-86	0
+266	-86	0
+267	-86	0
+268	-86	0
+269	-86	0
+270	-86	0
+271	-86	0
+272	-86	0
+273	-86	0
+274	-86	0
+275	-86	0
+276	-86	0
+277	-86	0
+278	-86	0
+279	-86	0
+280	-86	0
+281	-86	0
+282	-86	0
+283	-86	0
+284	-86	0
+285	-86	0
+286	-86	0
+287	-86	0
+288	-86	0
+289	-86	0
+290	-86	0
+291	-86	0
+292	-86	0
+293	-86	0
+294	-86	0
+295	-86	0
+296	-86	0
+297	-86	0
+298	-86	0
+299	-86	0
+300	-86	0
+301	-86	0
+302	-86	0
+303	-86	0
+304	-86	0
+305	-86	0
+306	-86	0
+307	-86	0
+308	-86	0
+309	-86	0
+310	-86	0
+311	-86	0
+312	-86	0
+313	-86	0
+314	-86	0
+315	-86	0
+316	-86	0
+317	-86	0
+318	-86	0
+319	-86	0
+320	-86	0
+321	-86	0
+322	-86	0
+323	-86	0
+324	-86	0
+325	-86	0
+326	-86	0
+327	-86	0
+328	-86	0
+329	-86	0
+330	-86	0
+331	-86	0
+332	-86	0
+333	-86	0
+334	-86	0
+335	-86	0
+336	-86	0
+337	-86	0
+338	-86	0
+339	-86	0
+340	-86	0
+341	-86	0
+342	-86	0
+343	-86	0
+344	-86	0
+345	-86	0
+346	-86	0
+347	-86	0
+348	-86	0
+349	-86	0
+350	-86	0
+351	-86	0
+352	-86	0
+353	-86	0
+354	-86	0
+355	-86	0
+356	-86	0
+357	-86	0
+358	-86	0
+359	-86	0
+360	-86	0
+0	-85.5	0
+1	-85.5	0
+2	-85.5	0
+3	-85.5	0
+4	-85.5	0
+5	-85.5	0
+6	-85.5	0
+7	-85.5	0
+8	-85.5	0
+9	-85.5	0
+10	-85.5	0
+11	-85.5	0
+12	-85.5	0
+13	-85.5	0
+14	-85.5	0
+15	-85.5	0
+16	-85.5	0
+17	-85.5	0
+18	-85.5	0
+19	-85.5	0
+20	-85.5	0
+21	-85.5	0
+22	-85.5	0
+23	-85.5	0
+24	-85.5	0
+25	-85.5	0
+26	-85.5	0
+27	-85.5	0
+28	-85.5	0
+29	-85.5	0
+30	-85.5	0
+31	-85.5	0
+32	-85.5	0
+33	-85.5	0
+34	-85.5	0
+35	-85.5	0
+36	-85.5	0
+37	-85.5	0
+38	-85.5	0
+39	-85.5	0
+40	-85.5	0
+41	-85.5	0
+42	-85.5	0
+43	-85.5	0
+44	-85.5	0
+45	-85.5	0
+46	-85.5	0
+47	-85.5	0
+48	-85.5	0
+49	-85.5	0
+50	-85.5	0
+51	-85.5	0
+52	-85.5	0
+53	-85.5	0
+54	-85.5	0
+55	-85.5	0
+56	-85.5	0
+57	-85.5	0
+58	-85.5	0
+59	-85.5	0
+60	-85.5	0
+61	-85.5	0
+62	-85.5	0
+63	-85.5	0
+64	-85.5	0
+65	-85.5	0
+66	-85.5	0
+67	-85.5	0
+68	-85.5	0
+69	-85.5	0
+70	-85.5	0
+71	-85.5	0
+72	-85.5	0
+73	-85.5	0
+74	-85.5	0
+75	-85.5	0
+76	-85.5	0
+77	-85.5	0
+78	-85.5	0
+79	-85.5	0
+80	-85.5	0
+81	-85.5	0
+82	-85.5	0
+83	-85.5	0
+84	-85.5	0
+85	-85.5	0
+86	-85.5	0
+87	-85.5	0
+88	-85.5	0
+89	-85.5	0
+90	-85.5	0
+91	-85.5	0
+92	-85.5	0
+93	-85.5	0
+94	-85.5	0
+95	-85.5	0
+96	-85.5	0
+97	-85.5	0
+98	-85.5	0
+99	-85.5	0
+100	-85.5	0
+101	-85.5	0
+102	-85.5	0
+103	-85.5	0
+104	-85.5	0
+105	-85.5	0
+106	-85.5	0
+107	-85.5	0
+108	-85.5	0
+109	-85.5	0
+110	-85.5	0
+111	-85.5	0
+112	-85.5	0
+113	-85.5	0
+114	-85.5	0
+115	-85.5	0
+116	-85.5	0
+117	-85.5	0
+118	-85.5	0
+119	-85.5	0
+120	-85.5	0
+121	-85.5	0
+122	-85.5	0
+123	-85.5	0
+124	-85.5	0
+125	-85.5	0
+126	-85.5	0
+127	-85.5	0
+128	-85.5	0
+129	-85.5	0
+130	-85.5	0
+131	-85.5	0
+132	-85.5	0
+133	-85.5	0
+134	-85.5	0
+135	-85.5	0
+136	-85.5	0
+137	-85.5	0
+138	-85.5	0
+139	-85.5	0
+140	-85.5	0
+141	-85.5	0
+142	-85.5	0
+143	-85.5	0
+144	-85.5	0
+145	-85.5	0
+146	-85.5	0
+147	-85.5	0
+148	-85.5	0
+149	-85.5	0
+150	-85.5	0
+151	-85.5	0
+152	-85.5	0
+153	-85.5	0
+154	-85.5	0
+155	-85.5	0
+156	-85.5	0
+157	-85.5	0
+158	-85.5	0
+159	-85.5	0
+160	-85.5	0
+161	-85.5	0
+162	-85.5	0
+163	-85.5	0
+164	-85.5	0
+165	-85.5	0
+166	-85.5	0
+167	-85.5	0
+168	-85.5	0
+169	-85.5	0
+170	-85.5	0
+171	-85.5	0
+172	-85.5	0
+173	-85.5	0
+174	-85.5	0
+175	-85.5	0
+176	-85.5	0
+177	-85.5	0
+178	-85.5	0
+179	-85.5	0
+180	-85.5	0
+181	-85.5	0
+182	-85.5	0
+183	-85.5	0
+184	-85.5	0
+185	-85.5	0
+186	-85.5	0
+187	-85.5	0
+188	-85.5	0
+189	-85.5	0
+190	-85.5	0
+191	-85.5	0
+192	-85.5	0
+193	-85.5	0
+194	-85.5	0
+195	-85.5	0
+196	-85.5	0
+197	-85.5	0
+198	-85.5	0
+199	-85.5	0
+200	-85.5	0
+201	-85.5	0
+202	-85.5	0
+203	-85.5	0
+204	-85.5	0
+205	-85.5	0
+206	-85.5	0
+207	-85.5	0
+208	-85.5	0
+209	-85.5	0
+210	-85.5	0
+211	-85.5	0
+212	-85.5	0
+213	-85.5	0
+214	-85.5	0
+215	-85.5	0
+216	-85.5	0
+217	-85.5	0
+218	-85.5	0
+219	-85.5	0
+220	-85.5	0
+221	-85.5	0
+222	-85.5	0
+223	-85.5	0
+224	-85.5	0
+225	-85.5	0
+226	-85.5	0
+227	-85.5	0
+228	-85.5	0
+229	-85.5	0
+230	-85.5	0
+231	-85.5	0
+232	-85.5	0
+233	-85.5	0
+234	-85.5	0
+235	-85.5	0
+236	-85.5	0
+237	-85.5	0
+238	-85.5	0
+239	-85.5	0
+240	-85.5	0
+241	-85.5	0
+242	-85.5	0
+243	-85.5	0
+244	-85.5	0
+245	-85.5	0
+246	-85.5	0
+247	-85.5	0
+248	-85.5	0
+249	-85.5	0
+250	-85.5	0
+251	-85.5	0
+252	-85.5	0
+253	-85.5	0
+254	-85.5	0
+255	-85.5	0
+256	-85.5	0
+257	-85.5	0
+258	-85.5	0
+259	-85.5	0
+260	-85.5	0
+261	-85.5	0
+262	-85.5	0
+263	-85.5	0
+264	-85.5	0
+265	-85.5	0
+266	-85.5	0
+267	-85.5	0
+268	-85.5	0
+269	-85.5	0
+270	-85.5	0
+271	-85.5	0
+272	-85.5	0
+273	-85.5	0
+274	-85.5	0
+275	-85.5	0
+276	-85.5	0
+277	-85.5	0
+278	-85.5	0
+279	-85.5	0
+280	-85.5	0
+281	-85.5	0
+282	-85.5	0
+283	-85.5	0
+284	-85.5	0
+285	-85.5	0
+286	-85.5	0
+287	-85.5	0
+288	-85.5	0
+289	-85.5	0
+290	-85.5	0
+291	-85.5	0
+292	-85.5	0
+293	-85.5	0
+294	-85.5	0
+295	-85.5	0
+296	-85.5	0
+297	-85.5	0
+298	-85.5	0
+299	-85.5	0
+300	-85.5	0
+301	-85.5	0
+302	-85.5	0
+303	-85.5	0
+304	-85.5	0
+305	-85.5	0
+306	-85.5	0
+307	-85.5	0
+308	-85.5	0
+309	-85.5	0
+310	-85.5	0
+311	-85.5	0
+312	-85.5	0
+313	-85.5	0
+314	-85.5	0
+315	-85.5	0
+316	-85.5	0
+317	-85.5	0
+318	-85.5	0
+319	-85.5	0
+320	-85.5	0
+321	-85.5	0
+322	-85.5	0
+323	-85.5	0
+324	-85.5	0
+325	-85.5	0
+326	-85.5	0
+327	-85.5	0
+328	-85.5	0
+329	-85.5	0
+330	-85.5	0
+331	-85.5	0
+332	-85.5	0
+333	-85.5	0
+334	-85.5	0
+335	-85.5	0
+336	-85.5	0
+337	-85.5	0
+338	-85.5	0
+339	-85.5	0
+340	-85.5	0
+341	-85.5	0
+342	-85.5	0
+343	-85.5	0
+344	-85.5	0
+345	-85.5	0
+346	-85.5	0
+347	-85.5	0
+348	-85.5	0
+349	-85.5	0
+350	-85.5	0
+351	-85.5	0
+352	-85.5	0
+353	-85.5	0
+354	-85.5	0
+355	-85.5	0
+356	-85.5	0
+357	-85.5	0
+358	-85.5	0
+359	-85.5	0
+360	-85.5	0
+0	-85	0
+1	-85	0
+2	-85	0
+3	-85	0
+4	-85	0
+5	-85	0
+6	-85	0
+7	-85	0
+8	-85	0
+9	-85	0
+10	-85	0
+11	-85	0
+12	-85	0
+13	-85	0
+14	-85	0
+15	-85	0
+16	-85	0
+17	-85	0
+18	-85	0
+19	-85	0
+20	-85	0
+21	-85	0
+22	-85	0
+23	-85	0
+24	-85	0
+25	-85	0
+26	-85	0
+27	-85	0
+28	-85	0
+29	-85	0
+30	-85	0
+31	-85	0
+32	-85	0
+33	-85	0
+34	-85	0
+35	-85	0
+36	-85	0
+37	-85	0
+38	-85	0
+39	-85	0
+40	-85	0
+41	-85	0
+42	-85	0
+43	-85	0
+44	-85	0
+45	-85	0
+46	-85	0
+47	-85	0
+48	-85	0
+49	-85	0
+50	-85	0
+51	-85	0
+52	-85	0
+53	-85	0
+54	-85	0
+55	-85	0
+56	-85	0
+57	-85	0
+58	-85	0
+59	-85	0
+60	-85	0
+61	-85	0
+62	-85	0
+63	-85	0
+64	-85	0
+65	-85	0
+66	-85	0
+67	-85	0
+68	-85	0
+69	-85	0
+70	-85	0
+71	-85	0
+72	-85	0
+73	-85	0
+74	-85	0
+75	-85	0
+76	-85	0
+77	-85	0
+78	-85	0
+79	-85	0
+80	-85	0
+81	-85	0
+82	-85	0
+83	-85	0
+84	-85	0
+85	-85	0
+86	-85	0
+87	-85	0
+88	-85	0
+89	-85	0
+90	-85	0
+91	-85	0
+92	-85	0
+93	-85	0
+94	-85	0
+95	-85	0
+96	-85	0
+97	-85	0
+98	-85	0
+99	-85	0
+100	-85	0
+101	-85	0
+102	-85	0
+103	-85	0
+104	-85	0
+105	-85	0
+106	-85	0
+107	-85	0
+108	-85	0
+109	-85	0
+110	-85	0
+111	-85	0
+112	-85	0
+113	-85	0
+114	-85	0
+115	-85	0
+116	-85	0
+117	-85	0
+118	-85	0
+119	-85	0
+120	-85	0
+121	-85	0
+122	-85	0
+123	-85	0
+124	-85	0
+125	-85	0
+126	-85	0
+127	-85	0
+128	-85	0
+129	-85	0
+130	-85	0
+131	-85	0
+132	-85	0
+133	-85	0
+134	-85	0
+135	-85	0
+136	-85	0
+137	-85	0
+138	-85	0
+139	-85	0
+140	-85	0
+141	-85	0
+142	-85	0
+143	-85	0
+144	-85	0
+145	-85	0
+146	-85	0
+147	-85	0
+148	-85	0
+149	-85	0
+150	-85	0
+151	-85	0
+152	-85	0
+153	-85	0
+154	-85	0
+155	-85	0
+156	-85	0
+157	-85	0
+158	-85	0
+159	-85	0
+160	-85	0
+161	-85	0
+162	-85	0
+163	-85	0
+164	-85	0
+165	-85	0
+166	-85	0
+167	-85	0
+168	-85	0
+169	-85	0
+170	-85	0
+171	-85	0
+172	-85	0
+173	-85	0
+174	-85	0
+175	-85	0
+176	-85	0
+177	-85	0
+178	-85	0
+179	-85	0
+180	-85	0
+181	-85	0
+182	-85	0
+183	-85	0
+184	-85	0
+185	-85	0
+186	-85	0
+187	-85	0
+188	-85	0
+189	-85	0
+190	-85	0
+191	-85	0
+192	-85	0
+193	-85	0
+194	-85	0
+195	-85	0
+196	-85	0
+197	-85	0
+198	-85	0
+199	-85	0
+200	-85	0
+201	-85	0
+202	-85	0
+203	-85	0
+204	-85	0
+205	-85	0
+206	-85	0
+207	-85	0
+208	-85	0
+209	-85	0
+210	-85	0
+211	-85	0
+212	-85	0
+213	-85	0
+214	-85	0
+215	-85	0
+216	-85	0
+217	-85	0
+218	-85	0
+219	-85	0
+220	-85	0
+221	-85	0
+222	-85	0
+223	-85	0
+224	-85	0
+225	-85	0
+226	-85	0
+227	-85	0
+228	-85	0
+229	-85	0
+230	-85	0
+231	-85	0
+232	-85	0
+233	-85	0
+234	-85	0
+235	-85	0
+236	-85	0
+237	-85	0
+238	-85	0
+239	-85	0
+240	-85	0
+241	-85	0
+242	-85	0
+243	-85	0
+244	-85	0
+245	-85	0
+246	-85	0
+247	-85	0
+248	-85	0
+249	-85	0
+250	-85	0
+251	-85	0
+252	-85	0
+253	-85	0
+254	-85	0
+255	-85	0
+256	-85	0
+257	-85	0
+258	-85	0
+259	-85	0
+260	-85	0
+261	-85	0
+262	-85	0
+263	-85	0
+264	-85	0
+265	-85	0
+266	-85	0
+267	-85	0
+268	-85	0
+269	-85	0
+270	-85	0
+271	-85	0
+272	-85	0
+273	-85	0
+274	-85	0
+275	-85	0
+276	-85	0
+277	-85	0
+278	-85	0
+279	-85	0
+280	-85	0
+281	-85	0
+282	-85	0
+283	-85	0
+284	-85	0
+285	-85	0
+286	-85	0
+287	-85	0
+288	-85	0
+289	-85	0
+290	-85	0
+291	-85	0
+292	-85	0
+293	-85	0
+294	-85	0
+295	-85	0
+296	-85	0
+297	-85	0
+298	-85	0
+299	-85	0
+300	-85	0
+301	-85	0
+302	-85	0
+303	-85	0
+304	-85	0
+305	-85	0
+306	-85	0
+307	-85	0
+308	-85	0
+309	-85	0
+310	-85	0
+311	-85	0
+312	-85	0
+313	-85	0
+314	-85	0
+315	-85	0
+316	-85	0
+317	-85	0
+318	-85	0
+319	-85	0
+320	-85	0
+321	-85	0
+322	-85	0
+323	-85	0
+324	-85	0
+325	-85	0
+326	-85	0
+327	-85	0
+328	-85	0
+329	-85	0
+330	-85	0
+331	-85	0
+332	-85	0
+333	-85	0
+334	-85	0
+335	-85	0
+336	-85	0
+337	-85	0
+338	-85	0
+339	-85	0
+340	-85	0
+341	-85	0
+342	-85	0
+343	-85	0
+344	-85	0
+345	-85	0
+346	-85	0
+347	-85	0
+348	-85	0
+349	-85	0
+350	-85	0
+351	-85	0
+352	-85	0
+353	-85	0
+354	-85	0
+355	-85	0
+356	-85	0
+357	-85	0
+358	-85	0
+359	-85	0
+360	-85	0
+0	-84.5	0
+1	-84.5	0
+2	-84.5	0
+3	-84.5	0
+4	-84.5	0
+5	-84.5	0
+6	-84.5	0
+7	-84.5	0
+8	-84.5	0
+9	-84.5	0
+10	-84.5	0
+11	-84.5	0
+12	-84.5	0
+13	-84.5	0
+14	-84.5	0
+15	-84.5	0
+16	-84.5	0
+17	-84.5	0
+18	-84.5	0
+19	-84.5	0
+20	-84.5	0
+21	-84.5	0
+22	-84.5	0
+23	-84.5	0
+24	-84.5	0
+25	-84.5	0
+26	-84.5	0
+27	-84.5	0
+28	-84.5	0
+29	-84.5	0
+30	-84.5	0
+31	-84.5	0
+32	-84.5	0
+33	-84.5	0
+34	-84.5	0
+35	-84.5	0
+36	-84.5	0
+37	-84.5	0
+38	-84.5	0
+39	-84.5	0
+40	-84.5	0
+41	-84.5	0
+42	-84.5	0
+43	-84.5	0
+44	-84.5	0
+45	-84.5	0
+46	-84.5	0
+47	-84.5	0
+48	-84.5	0
+49	-84.5	0
+50	-84.5	0
+51	-84.5	0
+52	-84.5	0
+53	-84.5	0
+54	-84.5	0
+55	-84.5	0
+56	-84.5	0
+57	-84.5	0
+58	-84.5	0
+59	-84.5	0
+60	-84.5	0
+61	-84.5	0
+62	-84.5	0
+63	-84.5	0
+64	-84.5	0
+65	-84.5	0
+66	-84.5	0
+67	-84.5	0
+68	-84.5	0
+69	-84.5	0
+70	-84.5	0
+71	-84.5	0
+72	-84.5	0
+73	-84.5	0
+74	-84.5	0
+75	-84.5	0
+76	-84.5	0
+77	-84.5	0
+78	-84.5	0
+79	-84.5	0
+80	-84.5	0
+81	-84.5	0
+82	-84.5	0
+83	-84.5	0
+84	-84.5	0
+85	-84.5	0
+86	-84.5	0
+87	-84.5	0
+88	-84.5	0
+89	-84.5	0
+90	-84.5	0
+91	-84.5	0
+92	-84.5	0
+93	-84.5	0
+94	-84.5	0
+95	-84.5	0
+96	-84.5	0
+97	-84.5	0
+98	-84.5	0
+99	-84.5	0
+100	-84.5	0
+101	-84.5	0
+102	-84.5	0
+103	-84.5	0
+104	-84.5	0
+105	-84.5	0
+106	-84.5	0
+107	-84.5	0
+108	-84.5	0
+109	-84.5	0
+110	-84.5	0
+111	-84.5	0
+112	-84.5	0
+113	-84.5	0
+114	-84.5	0
+115	-84.5	0
+116	-84.5	0
+117	-84.5	0
+118	-84.5	0
+119	-84.5	0
+120	-84.5	0
+121	-84.5	0
+122	-84.5	0
+123	-84.5	0
+124	-84.5	0
+125	-84.5	0
+126	-84.5	0
+127	-84.5	0
+128	-84.5	0
+129	-84.5	0
+130	-84.5	0
+131	-84.5	0
+132	-84.5	0
+133	-84.5	0
+134	-84.5	0
+135	-84.5	0
+136	-84.5	0
+137	-84.5	0
+138	-84.5	0
+139	-84.5	0
+140	-84.5	0
+141	-84.5	0
+142	-84.5	0
+143	-84.5	0
+144	-84.5	0
+145	-84.5	0
+146	-84.5	0
+147	-84.5	0
+148	-84.5	0
+149	-84.5	0
+150	-84.5	0
+151	-84.5	0
+152	-84.5	0
+153	-84.5	0
+154	-84.5	0
+155	-84.5	0
+156	-84.5	0
+157	-84.5	0
+158	-84.5	0
+159	-84.5	0
+160	-84.5	0
+161	-84.5	0
+162	-84.5	0
+163	-84.5	0
+164	-84.5	0
+165	-84.5	0
+166	-84.5	0
+167	-84.5	0
+168	-84.5	0
+169	-84.5	0
+170	-84.5	0
+171	-84.5	0
+172	-84.5	0
+173	-84.5	0
+174	-84.5	0
+175	-84.5	0
+176	-84.5	0
+177	-84.5	0
+178	-84.5	0
+179	-84.5	0
+180	-84.5	0
+181	-84.5	0
+182	-84.5	0
+183	-84.5	0
+184	-84.5	0
+185	-84.5	0
+186	-84.5	0
+187	-84.5	0
+188	-84.5	0
+189	-84.5	0
+190	-84.5	0
+191	-84.5	0
+192	-84.5	0
+193	-84.5	0
+194	-84.5	0
+195	-84.5	0
+196	-84.5	0
+197	-84.5	0
+198	-84.5	0
+199	-84.5	0
+200	-84.5	0
+201	-84.5	0
+202	-84.5	0
+203	-84.5	0
+204	-84.5	0
+205	-84.5	0
+206	-84.5	0
+207	-84.5	0
+208	-84.5	0
+209	-84.5	0
+210	-84.5	0
+211	-84.5	0
+212	-84.5	0
+213	-84.5	0
+214	-84.5	0
+215	-84.5	0
+216	-84.5	0
+217	-84.5	0
+218	-84.5	0
+219	-84.5	0
+220	-84.5	0
+221	-84.5	0
+222	-84.5	0
+223	-84.5	0
+224	-84.5	0
+225	-84.5	0
+226	-84.5	0
+227	-84.5	0
+228	-84.5	0
+229	-84.5	0
+230	-84.5	0
+231	-84.5	0
+232	-84.5	0
+233	-84.5	0
+234	-84.5	0
+235	-84.5	0
+236	-84.5	0
+237	-84.5	0
+238	-84.5	0
+239	-84.5	0
+240	-84.5	0
+241	-84.5	0
+242	-84.5	0
+243	-84.5	0
+244	-84.5	0
+245	-84.5	0
+246	-84.5	0
+247	-84.5	0
+248	-84.5	0
+249	-84.5	0
+250	-84.5	0
+251	-84.5	0
+252	-84.5	0
+253	-84.5	0
+254	-84.5	0
+255	-84.5	0
+256	-84.5	0
+257	-84.5	0
+258	-84.5	0
+259	-84.5	0
+260	-84.5	0
+261	-84.5	0
+262	-84.5	0
+263	-84.5	0
+264	-84.5	0
+265	-84.5	0
+266	-84.5	0
+267	-84.5	0
+268	-84.5	0
+269	-84.5	0
+270	-84.5	0
+271	-84.5	0
+272	-84.5	0
+273	-84.5	0
+274	-84.5	0
+275	-84.5	0
+276	-84.5	0
+277	-84.5	0
+278	-84.5	0
+279	-84.5	0
+280	-84.5	0
+281	-84.5	0
+282	-84.5	0
+283	-84.5	0
+284	-84.5	0
+285	-84.5	0
+286	-84.5	0
+287	-84.5	0
+288	-84.5	0
+289	-84.5	0
+290	-84.5	0
+291	-84.5	0
+292	-84.5	0
+293	-84.5	0
+294	-84.5	0
+295	-84.5	0
+296	-84.5	0
+297	-84.5	0
+298	-84.5	0
+299	-84.5	0
+300	-84.5	0
+301	-84.5	0
+302	-84.5	0
+303	-84.5	0
+304	-84.5	0
+305	-84.5	0
+306	-84.5	0
+307	-84.5	0
+308	-84.5	0
+309	-84.5	0
+310	-84.5	0
+311	-84.5	0
+312	-84.5	0
+313	-84.5	0
+314	-84.5	0
+315	-84.5	0
+316	-84.5	0
+317	-84.5	0
+318	-84.5	0
+319	-84.5	0
+320	-84.5	0
+321	-84.5	0
+322	-84.5	0
+323	-84.5	0
+324	-84.5	0
+325	-84.5	0
+326	-84.5	0
+327	-84.5	0
+328	-84.5	0
+329	-84.5	0
+330	-84.5	0
+331	-84.5	0
+332	-84.5	0
+333	-84.5	0
+334	-84.5	0
+335	-84.5	0
+336	-84.5	0
+337	-84.5	0
+338	-84.5	0
+339	-84.5	0
+340	-84.5	0
+341	-84.5	0
+342	-84.5	0
+343	-84.5	0
+344	-84.5	0
+345	-84.5	0
+346	-84.5	0
+347	-84.5	0
+348	-84.5	0
+349	-84.5	0
+350	-84.5	0
+351	-84.5	0
+352	-84.5	0
+353	-84.5	0
+354	-84.5	0
+355	-84.5	0
+356	-84.5	0
+357	-84.5	0
+358	-84.5	0
+359	-84.5	0
+360	-84.5	0
+0	-84	0
+1	-84	0
+2	-84	0
+3	-84	0
+4	-84	0
+5	-84	0
+6	-84	0
+7	-84	0
+8	-84	0
+9	-84	0
+10	-84	0
+11	-84	0
+12	-84	0
+13	-84	0
+14	-84	0
+15	-84	0
+16	-84	0
+17	-84	0
+18	-84	0
+19	-84	0
+20	-84	0
+21	-84	0
+22	-84	0
+23	-84	0
+24	-84	0
+25	-84	0
+26	-84	0
+27	-84	0
+28	-84	0
+29	-84	0
+30	-84	0
+31	-84	0
+32	-84	0
+33	-84	0
+34	-84	0
+35	-84	0
+36	-84	0
+37	-84	0
+38	-84	0
+39	-84	0
+40	-84	0
+41	-84	0
+42	-84	0
+43	-84	0
+44	-84	0
+45	-84	0
+46	-84	0
+47	-84	0
+48	-84	0
+49	-84	0
+50	-84	0
+51	-84	0
+52	-84	0
+53	-84	0
+54	-84	0
+55	-84	0
+56	-84	0
+57	-84	0
+58	-84	0
+59	-84	0
+60	-84	0
+61	-84	0
+62	-84	0
+63	-84	0
+64	-84	0
+65	-84	0
+66	-84	0
+67	-84	0
+68	-84	0
+69	-84	0
+70	-84	0
+71	-84	0
+72	-84	0
+73	-84	0
+74	-84	0
+75	-84	0
+76	-84	0
+77	-84	0
+78	-84	0
+79	-84	0
+80	-84	0
+81	-84	0
+82	-84	0
+83	-84	0
+84	-84	0
+85	-84	0
+86	-84	0
+87	-84	0
+88	-84	0
+89	-84	0
+90	-84	0
+91	-84	0
+92	-84	0
+93	-84	0
+94	-84	0
+95	-84	0
+96	-84	0
+97	-84	0
+98	-84	0
+99	-84	0
+100	-84	0
+101	-84	0
+102	-84	0
+103	-84	0
+104	-84	0
+105	-84	0
+106	-84	0
+107	-84	0
+108	-84	0
+109	-84	0
+110	-84	0
+111	-84	0
+112	-84	0
+113	-84	0
+114	-84	0
+115	-84	0
+116	-84	0
+117	-84	0
+118	-84	0
+119	-84	0
+120	-84	0
+121	-84	0
+122	-84	0
+123	-84	0
+124	-84	0
+125	-84	0
+126	-84	0
+127	-84	0
+128	-84	0
+129	-84	0
+130	-84	0
+131	-84	0
+132	-84	0
+133	-84	0
+134	-84	0
+135	-84	0
+136	-84	0
+137	-84	0
+138	-84	0
+139	-84	0
+140	-84	0
+141	-84	0
+142	-84	0
+143	-84	0
+144	-84	0
+145	-84	0
+146	-84	0
+147	-84	0
+148	-84	0
+149	-84	0
+150	-84	0
+151	-84	0
+152	-84	0
+153	-84	0
+154	-84	0
+155	-84	0
+156	-84	0
+157	-84	0
+158	-84	0
+159	-84	0
+160	-84	0
+161	-84	0
+162	-84	0
+163	-84	0
+164	-84	0
+165	-84	0
+166	-84	0
+167	-84	0
+168	-84	0
+169	-84	0
+170	-84	0
+171	-84	0
+172	-84	0
+173	-84	0
+174	-84	0
+175	-84	0
+176	-84	0
+177	-84	0
+178	-84	0
+179	-84	0
+180	-84	0
+181	-84	0
+182	-84	0
+183	-84	0
+184	-84	0
+185	-84	0
+186	-84	0
+187	-84	0
+188	-84	0
+189	-84	0
+190	-84	0
+191	-84	0
+192	-84	0
+193	-84	0
+194	-84	0
+195	-84	0
+196	-84	0
+197	-84	0
+198	-84	0
+199	-84	0
+200	-84	0
+201	-84	0
+202	-84	0
+203	-84	0
+204	-84	0
+205	-84	0
+206	-84	0
+207	-84	0
+208	-84	0
+209	-84	0
+210	-84	0
+211	-84	0
+212	-84	0
+213	-84	0
+214	-84	0
+215	-84	0
+216	-84	0
+217	-84	0
+218	-84	0
+219	-84	0
+220	-84	0
+221	-84	0
+222	-84	0
+223	-84	0
+224	-84	0
+225	-84	0
+226	-84	0
+227	-84	0
+228	-84	0
+229	-84	0
+230	-84	0
+231	-84	0
+232	-84	0
+233	-84	0
+234	-84	0
+235	-84	0
+236	-84	0
+237	-84	0
+238	-84	0
+239	-84	0
+240	-84	0
+241	-84	0
+242	-84	0
+243	-84	0
+244	-84	0
+245	-84	0
+246	-84	0
+247	-84	0
+248	-84	0
+249	-84	0
+250	-84	0
+251	-84	0
+252	-84	0
+253	-84	0
+254	-84	0
+255	-84	0
+256	-84	0
+257	-84	0
+258	-84	0
+259	-84	0
+260	-84	0
+261	-84	0
+262	-84	0
+263	-84	0
+264	-84	0
+265	-84	0
+266	-84	0
+267	-84	0
+268	-84	0
+269	-84	0
+270	-84	0
+271	-84	0
+272	-84	0
+273	-84	0
+274	-84	0
+275	-84	0
+276	-84	0
+277	-84	0
+278	-84	0
+279	-84	0
+280	-84	0
+281	-84	0
+282	-84	0
+283	-84	0
+284	-84	0
+285	-84	0
+286	-84	0
+287	-84	0
+288	-84	0
+289	-84	0
+290	-84	0
+291	-84	0
+292	-84	0
+293	-84	0
+294	-84	0
+295	-84	0
+296	-84	0
+297	-84	0
+298	-84	0
+299	-84	0
+300	-84	0
+301	-84	0
+302	-84	0
+303	-84	0
+304	-84	0
+305	-84	0
+306	-84	0
+307	-84	0
+308	-84	0
+309	-84	0
+310	-84	0
+311	-84	0
+312	-84	0
+313	-84	0
+314	-84	0
+315	-84	0
+316	-84	0
+317	-84	0
+318	-84	0
+319	-84	0
+320	-84	0
+321	-84	0
+322	-84	0
+323	-84	0
+324	-84	0
+325	-84	0
+326	-84	0
+327	-84	0
+328	-84	0
+329	-84	0
+330	-84	0
+331	-84	0
+332	-84	0
+333	-84	0
+334	-84	0
+335	-84	0
+336	-84	0
+337	-84	0
+338	-84	0
+339	-84	0
+340	-84	0
+341	-84	0
+342	-84	0
+343	-84	0
+344	-84	0
+345	-84	0
+346	-84	0
+347	-84	0
+348	-84	0
+349	-84	0
+350	-84	0
+351	-84	0
+352	-84	0
+353	-84	0
+354	-84	0
+355	-84	0
+356	-84	0
+357	-84	0
+358	-84	0
+359	-84	0
+360	-84	0
+0	-83.5	0
+1	-83.5	0
+2	-83.5	0
+3	-83.5	0
+4	-83.5	0
+5	-83.5	0
+6	-83.5	0
+7	-83.5	0
+8	-83.5	0
+9	-83.5	0
+10	-83.5	0
+11	-83.5	0
+12	-83.5	0
+13	-83.5	0
+14	-83.5	0
+15	-83.5	0
+16	-83.5	0
+17	-83.5	0
+18	-83.5	0
+19	-83.5	0
+20	-83.5	0
+21	-83.5	0
+22	-83.5	0
+23	-83.5	0
+24	-83.5	0
+25	-83.5	0
+26	-83.5	0
+27	-83.5	0
+28	-83.5	0
+29	-83.5	0
+30	-83.5	0
+31	-83.5	0
+32	-83.5	0
+33	-83.5	0
+34	-83.5	0
+35	-83.5	0
+36	-83.5	0
+37	-83.5	0
+38	-83.5	0
+39	-83.5	0
+40	-83.5	0
+41	-83.5	0
+42	-83.5	0
+43	-83.5	0
+44	-83.5	0
+45	-83.5	0
+46	-83.5	0
+47	-83.5	0
+48	-83.5	0
+49	-83.5	0
+50	-83.5	0
+51	-83.5	0
+52	-83.5	0
+53	-83.5	0
+54	-83.5	0
+55	-83.5	0
+56	-83.5	0
+57	-83.5	0
+58	-83.5	0
+59	-83.5	0
+60	-83.5	0
+61	-83.5	0
+62	-83.5	0
+63	-83.5	0
+64	-83.5	0
+65	-83.5	0
+66	-83.5	0
+67	-83.5	0
+68	-83.5	0
+69	-83.5	0
+70	-83.5	0
+71	-83.5	0
+72	-83.5	0
+73	-83.5	0
+74	-83.5	0
+75	-83.5	0
+76	-83.5	0
+77	-83.5	0
+78	-83.5	0
+79	-83.5	0
+80	-83.5	0
+81	-83.5	0
+82	-83.5	0
+83	-83.5	0
+84	-83.5	0
+85	-83.5	0
+86	-83.5	0
+87	-83.5	0
+88	-83.5	0
+89	-83.5	0
+90	-83.5	0
+91	-83.5	0
+92	-83.5	0
+93	-83.5	0
+94	-83.5	0
+95	-83.5	0
+96	-83.5	0
+97	-83.5	0
+98	-83.5	0
+99	-83.5	0
+100	-83.5	0
+101	-83.5	0
+102	-83.5	0
+103	-83.5	0
+104	-83.5	0
+105	-83.5	0
+106	-83.5	0
+107	-83.5	0
+108	-83.5	0
+109	-83.5	0
+110	-83.5	0
+111	-83.5	0
+112	-83.5	0
+113	-83.5	0
+114	-83.5	0
+115	-83.5	0
+116	-83.5	0
+117	-83.5	0
+118	-83.5	0
+119	-83.5	0
+120	-83.5	0
+121	-83.5	0
+122	-83.5	0
+123	-83.5	0
+124	-83.5	0
+125	-83.5	0
+126	-83.5	0
+127	-83.5	0
+128	-83.5	0
+129	-83.5	0
+130	-83.5	0
+131	-83.5	0
+132	-83.5	0
+133	-83.5	0
+134	-83.5	0
+135	-83.5	0
+136	-83.5	0
+137	-83.5	0
+138	-83.5	0
+139	-83.5	0
+140	-83.5	0
+141	-83.5	0
+142	-83.5	0
+143	-83.5	0
+144	-83.5	0
+145	-83.5	0
+146	-83.5	0
+147	-83.5	0
+148	-83.5	0
+149	-83.5	0
+150	-83.5	0
+151	-83.5	0
+152	-83.5	0
+153	-83.5	0
+154	-83.5	0
+155	-83.5	0
+156	-83.5	0
+157	-83.5	0
+158	-83.5	0
+159	-83.5	0
+160	-83.5	0
+161	-83.5	0
+162	-83.5	0
+163	-83.5	0
+164	-83.5	0
+165	-83.5	0
+166	-83.5	0
+167	-83.5	0
+168	-83.5	0
+169	-83.5	0
+170	-83.5	0
+171	-83.5	0
+172	-83.5	0
+173	-83.5	0
+174	-83.5	0
+175	-83.5	0
+176	-83.5	0
+177	-83.5	0
+178	-83.5	0
+179	-83.5	0
+180	-83.5	0
+181	-83.5	0
+182	-83.5	0
+183	-83.5	0
+184	-83.5	0
+185	-83.5	0
+186	-83.5	0
+187	-83.5	0
+188	-83.5	0
+189	-83.5	0
+190	-83.5	0
+191	-83.5	0
+192	-83.5	0
+193	-83.5	0
+194	-83.5	0
+195	-83.5	0
+196	-83.5	0
+197	-83.5	0
+198	-83.5	0
+199	-83.5	0
+200	-83.5	0
+201	-83.5	0
+202	-83.5	0
+203	-83.5	0
+204	-83.5	0
+205	-83.5	0
+206	-83.5	0
+207	-83.5	0
+208	-83.5	0
+209	-83.5	0
+210	-83.5	0
+211	-83.5	0
+212	-83.5	0
+213	-83.5	0
+214	-83.5	0
+215	-83.5	0
+216	-83.5	0
+217	-83.5	0
+218	-83.5	0
+219	-83.5	0
+220	-83.5	0
+221	-83.5	0
+222	-83.5	0
+223	-83.5	0
+224	-83.5	0
+225	-83.5	0
+226	-83.5	0
+227	-83.5	0
+228	-83.5	0
+229	-83.5	0
+230	-83.5	0
+231	-83.5	0
+232	-83.5	0
+233	-83.5	0
+234	-83.5	0
+235	-83.5	0
+236	-83.5	0
+237	-83.5	0
+238	-83.5	0
+239	-83.5	0
+240	-83.5	0
+241	-83.5	0
+242	-83.5	0
+243	-83.5	0
+244	-83.5	0
+245	-83.5	0
+246	-83.5	0
+247	-83.5	0
+248	-83.5	0
+249	-83.5	0
+250	-83.5	0
+251	-83.5	0
+252	-83.5	0
+253	-83.5	0
+254	-83.5	0
+255	-83.5	0
+256	-83.5	0
+257	-83.5	0
+258	-83.5	0
+259	-83.5	0
+260	-83.5	0
+261	-83.5	0
+262	-83.5	0
+263	-83.5	0
+264	-83.5	0
+265	-83.5	0
+266	-83.5	0
+267	-83.5	0
+268	-83.5	0
+269	-83.5	0
+270	-83.5	0
+271	-83.5	0
+272	-83.5	0
+273	-83.5	0
+274	-83.5	0
+275	-83.5	0
+276	-83.5	0
+277	-83.5	0
+278	-83.5	0
+279	-83.5	0
+280	-83.5	0
+281	-83.5	0
+282	-83.5	0
+283	-83.5	0
+284	-83.5	0
+285	-83.5	0
+286	-83.5	0
+287	-83.5	0
+288	-83.5	0
+289	-83.5	0
+290	-83.5	0
+291	-83.5	0
+292	-83.5	0
+293	-83.5	0
+294	-83.5	0
+295	-83.5	0
+296	-83.5	0
+297	-83.5	0
+298	-83.5	0
+299	-83.5	0
+300	-83.5	0
+301	-83.5	0
+302	-83.5	0
+303	-83.5	0
+304	-83.5	0
+305	-83.5	0
+306	-83.5	0
+307	-83.5	0
+308	-83.5	0
+309	-83.5	0
+310	-83.5	0
+311	-83.5	0
+312	-83.5	0
+313	-83.5	0
+314	-83.5	0
+315	-83.5	0
+316	-83.5	0
+317	-83.5	0
+318	-83.5	0
+319	-83.5	0
+320	-83.5	0
+321	-83.5	0
+322	-83.5	0
+323	-83.5	0
+324	-83.5	0
+325	-83.5	0
+326	-83.5	0
+327	-83.5	0
+328	-83.5	0
+329	-83.5	0
+330	-83.5	0
+331	-83.5	0
+332	-83.5	0
+333	-83.5	0
+334	-83.5	0
+335	-83.5	0
+336	-83.5	0
+337	-83.5	0
+338	-83.5	0
+339	-83.5	0
+340	-83.5	0
+341	-83.5	0
+342	-83.5	0
+343	-83.5	0
+344	-83.5	0
+345	-83.5	0
+346	-83.5	0
+347	-83.5	0
+348	-83.5	0
+349	-83.5	0
+350	-83.5	0
+351	-83.5	0
+352	-83.5	0
+353	-83.5	0
+354	-83.5	0
+355	-83.5	0
+356	-83.5	0
+357	-83.5	0
+358	-83.5	0
+359	-83.5	0
+360	-83.5	0
+0	-83	0
+1	-83	0
+2	-83	0
+3	-83	0
+4	-83	0
+5	-83	0
+6	-83	0
+7	-83	0
+8	-83	0
+9	-83	0
+10	-83	0
+11	-83	0
+12	-83	0
+13	-83	0
+14	-83	0
+15	-83	0
+16	-83	0
+17	-83	0
+18	-83	0
+19	-83	0
+20	-83	0
+21	-83	0
+22	-83	0
+23	-83	0
+24	-83	0
+25	-83	0
+26	-83	0
+27	-83	0
+28	-83	0
+29	-83	0
+30	-83	0
+31	-83	0
+32	-83	0
+33	-83	0
+34	-83	0
+35	-83	0
+36	-83	0
+37	-83	0
+38	-83	0
+39	-83	0
+40	-83	0
+41	-83	0
+42	-83	0
+43	-83	0
+44	-83	0
+45	-83	0
+46	-83	0
+47	-83	0
+48	-83	0
+49	-83	0
+50	-83	0
+51	-83	0
+52	-83	0
+53	-83	0
+54	-83	0
+55	-83	0
+56	-83	0
+57	-83	0
+58	-83	0
+59	-83	0
+60	-83	0
+61	-83	0
+62	-83	0
+63	-83	0
+64	-83	0
+65	-83	0
+66	-83	0
+67	-83	0
+68	-83	0
+69	-83	0
+70	-83	0
+71	-83	0
+72	-83	0
+73	-83	0
+74	-83	0
+75	-83	0
+76	-83	0
+77	-83	0
+78	-83	0
+79	-83	0
+80	-83	0
+81	-83	0
+82	-83	0
+83	-83	0
+84	-83	0
+85	-83	0
+86	-83	0
+87	-83	0
+88	-83	0
+89	-83	0
+90	-83	0
+91	-83	0
+92	-83	0
+93	-83	0
+94	-83	0
+95	-83	0
+96	-83	0
+97	-83	0
+98	-83	0
+99	-83	0
+100	-83	0
+101	-83	0
+102	-83	0
+103	-83	0
+104	-83	0
+105	-83	0
+106	-83	0
+107	-83	0
+108	-83	0
+109	-83	0
+110	-83	0
+111	-83	0
+112	-83	0
+113	-83	0
+114	-83	0
+115	-83	0
+116	-83	0
+117	-83	0
+118	-83	0
+119	-83	0
+120	-83	0
+121	-83	0
+122	-83	0
+123	-83	0
+124	-83	0
+125	-83	0
+126	-83	0
+127	-83	0
+128	-83	0
+129	-83	0
+130	-83	0
+131	-83	0
+132	-83	0
+133	-83	0
+134	-83	0
+135	-83	0
+136	-83	0
+137	-83	0
+138	-83	0
+139	-83	0
+140	-83	0
+141	-83	0
+142	-83	0
+143	-83	0
+144	-83	0
+145	-83	0
+146	-83	0
+147	-83	0
+148	-83	0
+149	-83	0
+150	-83	0
+151	-83	0
+152	-83	0
+153	-83	0
+154	-83	0
+155	-83	0
+156	-83	0
+157	-83	0
+158	-83	0
+159	-83	0
+160	-83	0
+161	-83	0
+162	-83	0
+163	-83	0
+164	-83	0
+165	-83	0
+166	-83	0
+167	-83	0
+168	-83	0
+169	-83	0
+170	-83	0
+171	-83	0
+172	-83	0
+173	-83	0
+174	-83	0
+175	-83	0
+176	-83	0
+177	-83	0
+178	-83	0
+179	-83	0
+180	-83	0
+181	-83	0
+182	-83	0
+183	-83	0
+184	-83	0
+185	-83	0
+186	-83	0
+187	-83	0
+188	-83	0
+189	-83	0
+190	-83	0
+191	-83	0
+192	-83	0
+193	-83	0
+194	-83	0
+195	-83	0
+196	-83	0
+197	-83	0
+198	-83	0
+199	-83	0
+200	-83	0
+201	-83	0
+202	-83	0
+203	-83	0
+204	-83	0
+205	-83	0
+206	-83	0
+207	-83	0
+208	-83	0
+209	-83	0
+210	-83	0
+211	-83	0
+212	-83	0
+213	-83	0
+214	-83	0
+215	-83	0
+216	-83	0
+217	-83	0
+218	-83	0
+219	-83	0
+220	-83	0
+221	-83	0
+222	-83	0
+223	-83	0
+224	-83	0
+225	-83	0
+226	-83	0
+227	-83	0
+228	-83	0
+229	-83	0
+230	-83	0
+231	-83	0
+232	-83	0
+233	-83	0
+234	-83	0
+235	-83	0
+236	-83	0
+237	-83	0
+238	-83	0
+239	-83	0
+240	-83	0
+241	-83	0
+242	-83	0
+243	-83	0
+244	-83	0
+245	-83	0
+246	-83	0
+247	-83	0
+248	-83	0
+249	-83	0
+250	-83	0
+251	-83	0
+252	-83	0
+253	-83	0
+254	-83	0
+255	-83	0
+256	-83	0
+257	-83	0
+258	-83	0
+259	-83	0
+260	-83	0
+261	-83	0
+262	-83	0
+263	-83	0
+264	-83	0
+265	-83	0
+266	-83	0
+267	-83	0
+268	-83	0
+269	-83	0
+270	-83	0
+271	-83	0
+272	-83	0
+273	-83	0
+274	-83	0
+275	-83	0
+276	-83	0
+277	-83	0
+278	-83	0
+279	-83	0
+280	-83	0
+281	-83	0
+282	-83	0
+283	-83	0
+284	-83	0
+285	-83	0
+286	-83	0
+287	-83	0
+288	-83	0
+289	-83	0
+290	-83	0
+291	-83	0
+292	-83	0
+293	-83	0
+294	-83	0
+295	-83	0
+296	-83	0
+297	-83	0
+298	-83	0
+299	-83	0
+300	-83	0
+301	-83	0
+302	-83	0
+303	-83	0
+304	-83	0
+305	-83	0
+306	-83	0
+307	-83	0
+308	-83	0
+309	-83	0
+310	-83	0
+311	-83	0
+312	-83	0
+313	-83	0
+314	-83	0
+315	-83	0
+316	-83	0
+317	-83	0
+318	-83	0
+319	-83	0
+320	-83	0
+321	-83	0
+322	-83	0
+323	-83	0
+324	-83	0
+325	-83	0
+326	-83	0
+327	-83	0
+328	-83	0
+329	-83	0
+330	-83	0
+331	-83	0
+332	-83	0
+333	-83	0
+334	-83	0
+335	-83	0
+336	-83	0
+337	-83	0
+338	-83	0
+339	-83	0
+340	-83	0
+341	-83	0
+342	-83	0
+343	-83	0
+344	-83	0
+345	-83	0
+346	-83	0
+347	-83	0
+348	-83	0
+349	-83	0
+350	-83	0
+351	-83	0
+352	-83	0
+353	-83	0
+354	-83	0
+355	-83	0
+356	-83	0
+357	-83	0
+358	-83	0
+359	-83	0
+360	-83	0
+0	-82.5	0
+1	-82.5	0
+2	-82.5	0
+3	-82.5	0
+4	-82.5	0
+5	-82.5	0
+6	-82.5	0
+7	-82.5	0
+8	-82.5	0
+9	-82.5	0
+10	-82.5	0
+11	-82.5	0
+12	-82.5	0
+13	-82.5	0
+14	-82.5	0
+15	-82.5	0
+16	-82.5	0
+17	-82.5	0
+18	-82.5	0
+19	-82.5	0
+20	-82.5	0
+21	-82.5	0
+22	-82.5	0
+23	-82.5	0
+24	-82.5	0
+25	-82.5	0
+26	-82.5	0
+27	-82.5	0
+28	-82.5	0
+29	-82.5	0
+30	-82.5	0
+31	-82.5	0
+32	-82.5	0
+33	-82.5	0
+34	-82.5	0
+35	-82.5	0
+36	-82.5	0
+37	-82.5	0
+38	-82.5	0
+39	-82.5	0
+40	-82.5	0
+41	-82.5	0
+42	-82.5	0
+43	-82.5	0
+44	-82.5	0
+45	-82.5	0
+46	-82.5	0
+47	-82.5	0
+48	-82.5	0
+49	-82.5	0
+50	-82.5	0
+51	-82.5	0
+52	-82.5	0
+53	-82.5	0
+54	-82.5	0
+55	-82.5	0
+56	-82.5	0
+57	-82.5	0
+58	-82.5	0
+59	-82.5	0
+60	-82.5	0
+61	-82.5	0
+62	-82.5	0
+63	-82.5	0
+64	-82.5	0
+65	-82.5	0
+66	-82.5	0
+67	-82.5	0
+68	-82.5	0
+69	-82.5	0
+70	-82.5	0
+71	-82.5	0
+72	-82.5	0
+73	-82.5	0
+74	-82.5	0
+75	-82.5	0
+76	-82.5	0
+77	-82.5	0
+78	-82.5	0
+79	-82.5	0
+80	-82.5	0
+81	-82.5	0
+82	-82.5	0
+83	-82.5	0
+84	-82.5	0
+85	-82.5	0
+86	-82.5	0
+87	-82.5	0
+88	-82.5	0
+89	-82.5	0
+90	-82.5	0
+91	-82.5	0
+92	-82.5	0
+93	-82.5	0
+94	-82.5	0
+95	-82.5	0
+96	-82.5	0
+97	-82.5	0
+98	-82.5	0
+99	-82.5	0
+100	-82.5	0
+101	-82.5	0
+102	-82.5	0
+103	-82.5	0
+104	-82.5	0
+105	-82.5	0
+106	-82.5	0
+107	-82.5	0
+108	-82.5	0
+109	-82.5	0
+110	-82.5	0
+111	-82.5	0
+112	-82.5	0
+113	-82.5	0
+114	-82.5	0
+115	-82.5	0
+116	-82.5	0
+117	-82.5	0
+118	-82.5	0
+119	-82.5	0
+120	-82.5	0
+121	-82.5	0
+122	-82.5	0
+123	-82.5	0
+124	-82.5	0
+125	-82.5	0
+126	-82.5	0
+127	-82.5	0
+128	-82.5	0
+129	-82.5	0
+130	-82.5	0
+131	-82.5	0
+132	-82.5	0
+133	-82.5	0
+134	-82.5	0
+135	-82.5	0
+136	-82.5	0
+137	-82.5	0
+138	-82.5	0
+139	-82.5	0
+140	-82.5	0
+141	-82.5	0
+142	-82.5	0
+143	-82.5	0
+144	-82.5	0
+145	-82.5	0
+146	-82.5	0
+147	-82.5	0
+148	-82.5	0
+149	-82.5	0
+150	-82.5	0
+151	-82.5	0
+152	-82.5	0
+153	-82.5	0
+154	-82.5	0
+155	-82.5	0
+156	-82.5	0
+157	-82.5	0
+158	-82.5	0
+159	-82.5	0
+160	-82.5	0
+161	-82.5	0
+162	-82.5	0
+163	-82.5	0
+164	-82.5	0
+165	-82.5	0
+166	-82.5	0
+167	-82.5	0
+168	-82.5	0
+169	-82.5	0
+170	-82.5	0
+171	-82.5	0
+172	-82.5	0
+173	-82.5	0
+174	-82.5	0
+175	-82.5	0
+176	-82.5	0
+177	-82.5	0
+178	-82.5	0
+179	-82.5	0
+180	-82.5	0
+181	-82.5	0
+182	-82.5	0
+183	-82.5	0
+184	-82.5	0
+185	-82.5	0
+186	-82.5	0
+187	-82.5	0
+188	-82.5	0
+189	-82.5	0
+190	-82.5	0
+191	-82.5	0
+192	-82.5	0
+193	-82.5	0
+194	-82.5	0
+195	-82.5	0
+196	-82.5	0
+197	-82.5	0
+198	-82.5	0
+199	-82.5	0
+200	-82.5	0
+201	-82.5	0
+202	-82.5	0
+203	-82.5	0
+204	-82.5	0
+205	-82.5	0
+206	-82.5	0
+207	-82.5	0
+208	-82.5	0
+209	-82.5	0
+210	-82.5	0
+211	-82.5	0
+212	-82.5	0
+213	-82.5	0
+214	-82.5	0
+215	-82.5	0
+216	-82.5	0
+217	-82.5	0
+218	-82.5	0
+219	-82.5	0
+220	-82.5	0
+221	-82.5	0
+222	-82.5	0
+223	-82.5	0
+224	-82.5	0
+225	-82.5	0
+226	-82.5	0
+227	-82.5	0
+228	-82.5	0
+229	-82.5	0
+230	-82.5	0
+231	-82.5	0
+232	-82.5	0
+233	-82.5	0
+234	-82.5	0
+235	-82.5	0
+236	-82.5	0
+237	-82.5	0
+238	-82.5	0
+239	-82.5	0
+240	-82.5	0
+241	-82.5	0
+242	-82.5	0
+243	-82.5	0
+244	-82.5	0
+245	-82.5	0
+246	-82.5	0
+247	-82.5	0
+248	-82.5	0
+249	-82.5	0
+250	-82.5	0
+251	-82.5	0
+252	-82.5	0
+253	-82.5	0
+254	-82.5	0
+255	-82.5	0
+256	-82.5	0
+257	-82.5	0
+258	-82.5	0
+259	-82.5	0
+260	-82.5	0
+261	-82.5	0
+262	-82.5	0
+263	-82.5	0
+264	-82.5	0
+265	-82.5	0
+266	-82.5	0
+267	-82.5	0
+268	-82.5	0
+269	-82.5	0
+270	-82.5	0
+271	-82.5	0
+272	-82.5	0
+273	-82.5	0
+274	-82.5	0
+275	-82.5	0
+276	-82.5	0
+277	-82.5	0
+278	-82.5	0
+279	-82.5	0
+280	-82.5	0
+281	-82.5	0
+282	-82.5	0
+283	-82.5	0
+284	-82.5	0
+285	-82.5	0
+286	-82.5	0
+287	-82.5	0
+288	-82.5	0
+289	-82.5	0
+290	-82.5	0
+291	-82.5	0
+292	-82.5	0
+293	-82.5	0
+294	-82.5	0
+295	-82.5	0
+296	-82.5	0
+297	-82.5	0
+298	-82.5	0
+299	-82.5	0
+300	-82.5	0
+301	-82.5	0
+302	-82.5	0
+303	-82.5	0
+304	-82.5	0
+305	-82.5	0
+306	-82.5	0
+307	-82.5	0
+308	-82.5	0
+309	-82.5	0
+310	-82.5	0
+311	-82.5	0
+312	-82.5	0
+313	-82.5	0
+314	-82.5	0
+315	-82.5	0
+316	-82.5	0
+317	-82.5	0
+318	-82.5	0
+319	-82.5	0
+320	-82.5	0
+321	-82.5	0
+322	-82.5	0
+323	-82.5	0
+324	-82.5	0
+325	-82.5	0
+326	-82.5	0
+327	-82.5	0
+328	-82.5	0
+329	-82.5	0
+330	-82.5	0
+331	-82.5	0
+332	-82.5	0
+333	-82.5	0
+334	-82.5	0
+335	-82.5	0
+336	-82.5	0
+337	-82.5	0
+338	-82.5	0
+339	-82.5	0
+340	-82.5	0
+341	-82.5	0
+342	-82.5	0
+343	-82.5	0
+344	-82.5	0
+345	-82.5	0
+346	-82.5	0
+347	-82.5	0
+348	-82.5	0
+349	-82.5	0
+350	-82.5	0
+351	-82.5	0
+352	-82.5	0
+353	-82.5	0
+354	-82.5	0
+355	-82.5	0
+356	-82.5	0
+357	-82.5	0
+358	-82.5	0
+359	-82.5	0
+360	-82.5	0
+0	-82	0
+1	-82	0
+2	-82	0
+3	-82	0
+4	-82	0
+5	-82	0
+6	-82	0
+7	-82	0
+8	-82	0
+9	-82	0
+10	-82	0
+11	-82	0
+12	-82	0
+13	-82	0
+14	-82	0
+15	-82	0
+16	-82	0
+17	-82	0
+18	-82	0
+19	-82	0
+20	-82	0
+21	-82	0
+22	-82	0
+23	-82	0
+24	-82	0
+25	-82	0
+26	-82	0
+27	-82	0
+28	-82	0
+29	-82	0
+30	-82	0
+31	-82	0
+32	-82	0
+33	-82	0
+34	-82	0
+35	-82	0
+36	-82	0
+37	-82	0
+38	-82	0
+39	-82	0
+40	-82	0
+41	-82	0
+42	-82	0
+43	-82	0
+44	-82	0
+45	-82	0
+46	-82	0
+47	-82	0
+48	-82	0
+49	-82	0
+50	-82	0
+51	-82	0
+52	-82	0
+53	-82	0
+54	-82	0
+55	-82	0
+56	-82	0
+57	-82	0
+58	-82	0
+59	-82	0
+60	-82	0
+61	-82	0
+62	-82	0
+63	-82	0
+64	-82	0
+65	-82	0
+66	-82	0
+67	-82	0
+68	-82	0
+69	-82	0
+70	-82	0
+71	-82	0
+72	-82	0
+73	-82	0
+74	-82	0
+75	-82	0
+76	-82	0
+77	-82	0
+78	-82	0
+79	-82	0
+80	-82	0
+81	-82	0
+82	-82	0
+83	-82	0
+84	-82	0
+85	-82	0
+86	-82	0
+87	-82	0
+88	-82	0
+89	-82	0
+90	-82	0
+91	-82	0
+92	-82	0
+93	-82	0
+94	-82	0
+95	-82	0
+96	-82	0
+97	-82	0
+98	-82	0
+99	-82	0
+100	-82	0
+101	-82	0
+102	-82	0
+103	-82	0
+104	-82	0
+105	-82	0
+106	-82	0
+107	-82	0
+108	-82	0
+109	-82	0
+110	-82	0
+111	-82	0
+112	-82	0
+113	-82	0
+114	-82	0
+115	-82	0
+116	-82	0
+117	-82	0
+118	-82	0
+119	-82	0
+120	-82	0
+121	-82	0
+122	-82	0
+123	-82	0
+124	-82	0
+125	-82	0
+126	-82	0
+127	-82	0
+128	-82	0
+129	-82	0
+130	-82	0
+131	-82	0
+132	-82	0
+133	-82	0
+134	-82	0
+135	-82	0
+136	-82	0
+137	-82	0
+138	-82	0
+139	-82	0
+140	-82	0
+141	-82	0
+142	-82	0
+143	-82	0
+144	-82	0
+145	-82	0
+146	-82	0
+147	-82	0
+148	-82	0
+149	-82	0
+150	-82	0
+151	-82	0
+152	-82	0
+153	-82	0
+154	-82	0
+155	-82	0
+156	-82	0
+157	-82	0
+158	-82	0
+159	-82	0
+160	-82	0
+161	-82	0
+162	-82	0
+163	-82	0
+164	-82	0
+165	-82	0
+166	-82	0
+167	-82	0
+168	-82	0
+169	-82	0
+170	-82	0
+171	-82	0
+172	-82	0
+173	-82	0
+174	-82	0
+175	-82	0
+176	-82	0
+177	-82	0
+178	-82	0
+179	-82	0
+180	-82	0
+181	-82	0
+182	-82	0
+183	-82	0
+184	-82	0
+185	-82	0
+186	-82	0
+187	-82	0
+188	-82	0
+189	-82	0
+190	-82	0
+191	-82	0
+192	-82	0
+193	-82	0
+194	-82	0
+195	-82	0
+196	-82	0
+197	-82	0
+198	-82	0
+199	-82	0
+200	-82	0
+201	-82	0
+202	-82	0
+203	-82	0
+204	-82	0
+205	-82	0
+206	-82	0
+207	-82	0
+208	-82	0
+209	-82	0
+210	-82	0
+211	-82	0
+212	-82	0
+213	-82	0
+214	-82	0
+215	-82	0
+216	-82	0
+217	-82	0
+218	-82	0
+219	-82	0
+220	-82	0
+221	-82	0
+222	-82	0
+223	-82	0
+224	-82	0
+225	-82	0
+226	-82	0
+227	-82	0
+228	-82	0
+229	-82	0
+230	-82	0
+231	-82	0
+232	-82	0
+233	-82	0
+234	-82	0
+235	-82	0
+236	-82	0
+237	-82	0
+238	-82	0
+239	-82	0
+240	-82	0
+241	-82	0
+242	-82	0
+243	-82	0
+244	-82	0
+245	-82	0
+246	-82	0
+247	-82	0
+248	-82	0
+249	-82	0
+250	-82	0
+251	-82	0
+252	-82	0
+253	-82	0
+254	-82	0
+255	-82	0
+256	-82	0
+257	-82	0
+258	-82	0
+259	-82	0
+260	-82	0
+261	-82	0
+262	-82	0
+263	-82	0
+264	-82	0
+265	-82	0
+266	-82	0
+267	-82	0
+268	-82	0
+269	-82	0
+270	-82	0
+271	-82	0
+272	-82	0
+273	-82	0
+274	-82	0
+275	-82	0
+276	-82	0
+277	-82	0
+278	-82	0
+279	-82	0
+280	-82	0
+281	-82	0
+282	-82	0
+283	-82	0
+284	-82	0
+285	-82	0
+286	-82	0
+287	-82	0
+288	-82	0
+289	-82	0
+290	-82	0
+291	-82	0
+292	-82	0
+293	-82	0
+294	-82	0
+295	-82	0
+296	-82	0
+297	-82	0
+298	-82	0
+299	-82	0
+300	-82	0
+301	-82	0
+302	-82	0
+303	-82	0
+304	-82	0
+305	-82	0
+306	-82	0
+307	-82	0
+308	-82	0
+309	-82	0
+310	-82	0
+311	-82	0
+312	-82	0
+313	-82	0
+314	-82	0
+315	-82	0
+316	-82	0
+317	-82	0
+318	-82	0
+319	-82	0
+320	-82	0
+321	-82	0
+322	-82	0
+323	-82	0
+324	-82	0
+325	-82	0
+326	-82	0
+327	-82	0
+328	-82	0
+329	-82	0
+330	-82	0
+331	-82	0
+332	-82	0
+333	-82	0
+334	-82	0
+335	-82	0
+336	-82	0
+337	-82	0
+338	-82	0
+339	-82	0
+340	-82	0
+341	-82	0
+342	-82	0
+343	-82	0
+344	-82	0
+345	-82	0
+346	-82	0
+347	-82	0
+348	-82	0
+349	-82	0
+350	-82	0
+351	-82	0
+352	-82	0
+353	-82	0
+354	-82	0
+355	-82	0
+356	-82	0
+357	-82	0
+358	-82	0
+359	-82	0
+360	-82	0
+0	-81.5	0
+1	-81.5	0
+2	-81.5	0
+3	-81.5	0
+4	-81.5	0
+5	-81.5	0
+6	-81.5	0
+7	-81.5	0
+8	-81.5	0
+9	-81.5	0
+10	-81.5	0
+11	-81.5	0
+12	-81.5	0
+13	-81.5	0
+14	-81.5	0
+15	-81.5	0
+16	-81.5	0
+17	-81.5	0
+18	-81.5	0
+19	-81.5	0
+20	-81.5	0
+21	-81.5	0
+22	-81.5	0
+23	-81.5	0
+24	-81.5	0
+25	-81.5	0
+26	-81.5	0
+27	-81.5	0
+28	-81.5	0
+29	-81.5	0
+30	-81.5	0
+31	-81.5	0
+32	-81.5	0
+33	-81.5	0
+34	-81.5	0
+35	-81.5	0
+36	-81.5	0
+37	-81.5	0
+38	-81.5	0
+39	-81.5	0
+40	-81.5	0
+41	-81.5	0
+42	-81.5	0
+43	-81.5	0
+44	-81.5	0
+45	-81.5	0
+46	-81.5	0
+47	-81.5	0
+48	-81.5	0
+49	-81.5	0
+50	-81.5	0
+51	-81.5	0
+52	-81.5	0
+53	-81.5	0
+54	-81.5	0
+55	-81.5	0
+56	-81.5	0
+57	-81.5	0
+58	-81.5	0
+59	-81.5	0
+60	-81.5	0
+61	-81.5	0
+62	-81.5	0
+63	-81.5	0
+64	-81.5	0
+65	-81.5	0
+66	-81.5	0
+67	-81.5	0
+68	-81.5	0
+69	-81.5	0
+70	-81.5	0
+71	-81.5	0
+72	-81.5	0
+73	-81.5	0
+74	-81.5	0
+75	-81.5	0
+76	-81.5	0
+77	-81.5	0
+78	-81.5	0
+79	-81.5	0
+80	-81.5	0
+81	-81.5	0
+82	-81.5	0
+83	-81.5	0
+84	-81.5	0
+85	-81.5	0
+86	-81.5	0
+87	-81.5	0
+88	-81.5	0
+89	-81.5	0
+90	-81.5	0
+91	-81.5	0
+92	-81.5	0
+93	-81.5	0
+94	-81.5	0
+95	-81.5	0
+96	-81.5	0
+97	-81.5	0
+98	-81.5	0
+99	-81.5	0
+100	-81.5	0
+101	-81.5	0
+102	-81.5	0
+103	-81.5	0
+104	-81.5	0
+105	-81.5	0
+106	-81.5	0
+107	-81.5	0
+108	-81.5	0
+109	-81.5	0
+110	-81.5	0
+111	-81.5	0
+112	-81.5	0
+113	-81.5	0
+114	-81.5	0
+115	-81.5	0
+116	-81.5	0
+117	-81.5	0
+118	-81.5	0
+119	-81.5	0
+120	-81.5	0
+121	-81.5	0
+122	-81.5	0
+123	-81.5	0
+124	-81.5	0
+125	-81.5	0
+126	-81.5	0
+127	-81.5	0
+128	-81.5	0
+129	-81.5	0
+130	-81.5	0
+131	-81.5	0
+132	-81.5	0
+133	-81.5	0
+134	-81.5	0
+135	-81.5	0
+136	-81.5	0
+137	-81.5	0
+138	-81.5	0
+139	-81.5	0
+140	-81.5	0
+141	-81.5	0
+142	-81.5	0
+143	-81.5	0
+144	-81.5	0
+145	-81.5	0
+146	-81.5	0
+147	-81.5	0
+148	-81.5	0
+149	-81.5	0
+150	-81.5	0
+151	-81.5	0
+152	-81.5	0
+153	-81.5	0
+154	-81.5	0
+155	-81.5	0
+156	-81.5	0
+157	-81.5	0
+158	-81.5	0
+159	-81.5	0
+160	-81.5	0
+161	-81.5	0
+162	-81.5	0
+163	-81.5	0
+164	-81.5	0
+165	-81.5	0
+166	-81.5	0
+167	-81.5	0
+168	-81.5	0
+169	-81.5	0
+170	-81.5	0
+171	-81.5	0
+172	-81.5	0
+173	-81.5	0
+174	-81.5	0
+175	-81.5	0
+176	-81.5	0
+177	-81.5	0
+178	-81.5	0
+179	-81.5	0
+180	-81.5	0
+181	-81.5	0
+182	-81.5	0
+183	-81.5	0
+184	-81.5	0
+185	-81.5	0
+186	-81.5	0
+187	-81.5	0
+188	-81.5	0
+189	-81.5	0
+190	-81.5	0
+191	-81.5	0
+192	-81.5	0
+193	-81.5	0
+194	-81.5	0
+195	-81.5	0
+196	-81.5	0
+197	-81.5	0
+198	-81.5	0
+199	-81.5	0
+200	-81.5	0
+201	-81.5	0
+202	-81.5	0
+203	-81.5	0
+204	-81.5	0
+205	-81.5	0
+206	-81.5	0
+207	-81.5	0
+208	-81.5	0
+209	-81.5	0
+210	-81.5	0
+211	-81.5	0
+212	-81.5	0
+213	-81.5	0
+214	-81.5	0
+215	-81.5	0
+216	-81.5	0
+217	-81.5	0
+218	-81.5	0
+219	-81.5	0
+220	-81.5	0
+221	-81.5	0
+222	-81.5	0
+223	-81.5	0
+224	-81.5	0
+225	-81.5	0
+226	-81.5	0
+227	-81.5	0
+228	-81.5	0
+229	-81.5	0
+230	-81.5	0
+231	-81.5	0
+232	-81.5	0
+233	-81.5	0
+234	-81.5	0
+235	-81.5	0
+236	-81.5	0
+237	-81.5	0
+238	-81.5	0
+239	-81.5	0
+240	-81.5	0
+241	-81.5	0
+242	-81.5	0
+243	-81.5	0
+244	-81.5	0
+245	-81.5	0
+246	-81.5	0
+247	-81.5	0
+248	-81.5	0
+249	-81.5	0
+250	-81.5	0
+251	-81.5	0
+252	-81.5	0
+253	-81.5	0
+254	-81.5	0
+255	-81.5	0
+256	-81.5	0
+257	-81.5	0
+258	-81.5	0
+259	-81.5	0
+260	-81.5	0
+261	-81.5	0
+262	-81.5	0
+263	-81.5	0
+264	-81.5	0
+265	-81.5	0
+266	-81.5	0
+267	-81.5	0
+268	-81.5	0
+269	-81.5	0
+270	-81.5	0
+271	-81.5	0
+272	-81.5	0
+273	-81.5	0
+274	-81.5	0
+275	-81.5	0
+276	-81.5	0
+277	-81.5	0
+278	-81.5	0
+279	-81.5	0
+280	-81.5	0
+281	-81.5	0
+282	-81.5	0
+283	-81.5	0
+284	-81.5	0
+285	-81.5	0
+286	-81.5	0
+287	-81.5	0
+288	-81.5	0
+289	-81.5	0
+290	-81.5	0
+291	-81.5	0
+292	-81.5	0
+293	-81.5	0
+294	-81.5	0
+295	-81.5	0
+296	-81.5	0
+297	-81.5	0
+298	-81.5	0
+299	-81.5	0
+300	-81.5	0
+301	-81.5	0
+302	-81.5	0
+303	-81.5	0
+304	-81.5	0
+305	-81.5	0
+306	-81.5	0
+307	-81.5	0
+308	-81.5	0
+309	-81.5	0
+310	-81.5	0
+311	-81.5	0
+312	-81.5	0
+313	-81.5	0
+314	-81.5	0
+315	-81.5	0
+316	-81.5	0
+317	-81.5	0
+318	-81.5	0
+319	-81.5	0
+320	-81.5	0
+321	-81.5	0
+322	-81.5	0
+323	-81.5	0
+324	-81.5	0
+325	-81.5	0
+326	-81.5	0
+327	-81.5	0
+328	-81.5	0
+329	-81.5	0
+330	-81.5	0
+331	-81.5	0
+332	-81.5	0
+333	-81.5	0
+334	-81.5	0
+335	-81.5	0
+336	-81.5	0
+337	-81.5	0
+338	-81.5	0
+339	-81.5	0
+340	-81.5	0
+341	-81.5	0
+342	-81.5	0
+343	-81.5	0
+344	-81.5	0
+345	-81.5	0
+346	-81.5	0
+347	-81.5	0
+348	-81.5	0
+349	-81.5	0
+350	-81.5	0
+351	-81.5	0
+352	-81.5	0
+353	-81.5	0
+354	-81.5	0
+355	-81.5	0
+356	-81.5	0
+357	-81.5	0
+358	-81.5	0
+359	-81.5	0
+360	-81.5	0
+0	-81	0
+1	-81	0
+2	-81	0
+3	-81	0
+4	-81	0
+5	-81	0
+6	-81	0
+7	-81	0
+8	-81	0
+9	-81	0
+10	-81	0
+11	-81	0
+12	-81	0
+13	-81	0
+14	-81	0
+15	-81	0
+16	-81	0
+17	-81	0
+18	-81	0
+19	-81	0
+20	-81	0
+21	-81	0
+22	-81	0
+23	-81	0
+24	-81	0
+25	-81	0
+26	-81	0
+27	-81	0
+28	-81	0
+29	-81	0
+30	-81	0
+31	-81	0
+32	-81	0
+33	-81	0
+34	-81	0
+35	-81	0
+36	-81	0
+37	-81	0
+38	-81	0
+39	-81	0
+40	-81	0
+41	-81	0
+42	-81	0
+43	-81	0
+44	-81	0
+45	-81	0
+46	-81	0
+47	-81	0
+48	-81	0
+49	-81	0
+50	-81	0
+51	-81	0
+52	-81	0
+53	-81	0
+54	-81	0
+55	-81	0
+56	-81	0
+57	-81	0
+58	-81	0
+59	-81	0
+60	-81	0
+61	-81	0
+62	-81	0
+63	-81	0
+64	-81	0
+65	-81	0
+66	-81	0
+67	-81	0
+68	-81	0
+69	-81	0
+70	-81	0
+71	-81	0
+72	-81	0
+73	-81	0
+74	-81	0
+75	-81	0
+76	-81	0
+77	-81	0
+78	-81	0
+79	-81	0
+80	-81	0
+81	-81	0
+82	-81	0
+83	-81	0
+84	-81	0
+85	-81	0
+86	-81	0
+87	-81	0
+88	-81	0
+89	-81	0
+90	-81	0
+91	-81	0
+92	-81	0
+93	-81	0
+94	-81	0
+95	-81	0
+96	-81	0
+97	-81	0
+98	-81	0
+99	-81	0
+100	-81	0
+101	-81	0
+102	-81	0
+103	-81	0
+104	-81	0
+105	-81	0
+106	-81	0
+107	-81	0
+108	-81	0
+109	-81	0
+110	-81	0
+111	-81	0
+112	-81	0
+113	-81	0
+114	-81	0
+115	-81	0
+116	-81	0
+117	-81	0
+118	-81	0
+119	-81	0
+120	-81	0
+121	-81	0
+122	-81	0
+123	-81	0
+124	-81	0
+125	-81	0
+126	-81	0
+127	-81	0
+128	-81	0
+129	-81	0
+130	-81	0
+131	-81	0
+132	-81	0
+133	-81	0
+134	-81	0
+135	-81	0
+136	-81	0
+137	-81	0
+138	-81	0
+139	-81	0
+140	-81	0
+141	-81	0
+142	-81	0
+143	-81	0
+144	-81	0
+145	-81	0
+146	-81	0
+147	-81	0
+148	-81	0
+149	-81	0
+150	-81	0
+151	-81	0
+152	-81	0
+153	-81	0
+154	-81	0
+155	-81	0
+156	-81	0
+157	-81	0
+158	-81	0
+159	-81	0
+160	-81	0
+161	-81	0
+162	-81	0
+163	-81	0
+164	-81	0
+165	-81	0
+166	-81	0
+167	-81	0
+168	-81	0
+169	-81	0
+170	-81	0
+171	-81	0
+172	-81	0
+173	-81	0
+174	-81	0
+175	-81	0
+176	-81	0
+177	-81	0
+178	-81	0
+179	-81	0
+180	-81	0
+181	-81	0
+182	-81	0
+183	-81	0
+184	-81	0
+185	-81	0
+186	-81	0
+187	-81	0
+188	-81	0
+189	-81	0
+190	-81	0
+191	-81	0
+192	-81	0
+193	-81	0
+194	-81	0
+195	-81	0
+196	-81	0
+197	-81	0
+198	-81	0
+199	-81	0
+200	-81	0
+201	-81	0
+202	-81	0
+203	-81	0
+204	-81	0
+205	-81	0
+206	-81	0
+207	-81	0
+208	-81	0
+209	-81	0
+210	-81	0
+211	-81	0
+212	-81	0
+213	-81	0
+214	-81	0
+215	-81	0
+216	-81	0
+217	-81	0
+218	-81	0
+219	-81	0
+220	-81	0
+221	-81	0
+222	-81	0
+223	-81	0
+224	-81	0
+225	-81	0
+226	-81	0
+227	-81	0
+228	-81	0
+229	-81	0
+230	-81	0
+231	-81	0
+232	-81	0
+233	-81	0
+234	-81	0
+235	-81	0
+236	-81	0
+237	-81	0
+238	-81	0
+239	-81	0
+240	-81	0
+241	-81	0
+242	-81	0
+243	-81	0
+244	-81	0
+245	-81	0
+246	-81	0
+247	-81	0
+248	-81	0
+249	-81	0
+250	-81	0
+251	-81	0
+252	-81	0
+253	-81	0
+254	-81	0
+255	-81	0
+256	-81	0
+257	-81	0
+258	-81	0
+259	-81	0
+260	-81	0
+261	-81	0
+262	-81	0
+263	-81	0
+264	-81	0
+265	-81	0
+266	-81	0
+267	-81	0
+268	-81	0
+269	-81	0
+270	-81	0
+271	-81	0
+272	-81	0
+273	-81	0
+274	-81	0
+275	-81	0
+276	-81	0
+277	-81	0
+278	-81	0
+279	-81	0
+280	-81	0
+281	-81	0
+282	-81	0
+283	-81	0
+284	-81	0
+285	-81	0
+286	-81	0
+287	-81	0
+288	-81	0
+289	-81	0
+290	-81	0
+291	-81	0
+292	-81	0
+293	-81	0
+294	-81	0
+295	-81	0
+296	-81	0
+297	-81	0
+298	-81	0
+299	-81	0
+300	-81	0
+301	-81	0
+302	-81	0
+303	-81	0
+304	-81	0
+305	-81	0
+306	-81	0
+307	-81	0
+308	-81	0
+309	-81	0
+310	-81	0
+311	-81	0
+312	-81	0
+313	-81	0
+314	-81	0
+315	-81	0
+316	-81	0
+317	-81	0
+318	-81	0
+319	-81	0
+320	-81	0
+321	-81	0
+322	-81	0
+323	-81	0
+324	-81	0
+325	-81	0
+326	-81	0
+327	-81	0
+328	-81	0
+329	-81	0
+330	-81	0
+331	-81	0
+332	-81	0
+333	-81	0
+334	-81	0
+335	-81	0
+336	-81	0
+337	-81	0
+338	-81	0
+339	-81	0
+340	-81	0
+341	-81	0
+342	-81	0
+343	-81	0
+344	-81	0
+345	-81	0
+346	-81	0
+347	-81	0
+348	-81	0
+349	-81	0
+350	-81	0
+351	-81	0
+352	-81	0
+353	-81	0
+354	-81	0
+355	-81	0
+356	-81	0
+357	-81	0
+358	-81	0
+359	-81	0
+360	-81	0
+0	-80.5	0
+1	-80.5	0
+2	-80.5	0
+3	-80.5	0
+4	-80.5	0
+5	-80.5	0
+6	-80.5	0
+7	-80.5	0
+8	-80.5	0
+9	-80.5	0
+10	-80.5	0
+11	-80.5	0
+12	-80.5	0
+13	-80.5	0
+14	-80.5	0
+15	-80.5	0
+16	-80.5	0
+17	-80.5	0
+18	-80.5	0
+19	-80.5	0
+20	-80.5	0
+21	-80.5	0
+22	-80.5	0
+23	-80.5	0
+24	-80.5	0
+25	-80.5	0
+26	-80.5	0
+27	-80.5	0
+28	-80.5	0
+29	-80.5	0
+30	-80.5	0
+31	-80.5	0
+32	-80.5	0
+33	-80.5	0
+34	-80.5	0
+35	-80.5	0
+36	-80.5	0
+37	-80.5	0
+38	-80.5	0
+39	-80.5	0
+40	-80.5	0
+41	-80.5	0
+42	-80.5	0
+43	-80.5	0
+44	-80.5	0
+45	-80.5	0
+46	-80.5	0
+47	-80.5	0
+48	-80.5	0
+49	-80.5	0
+50	-80.5	0
+51	-80.5	0
+52	-80.5	0
+53	-80.5	0
+54	-80.5	0
+55	-80.5	0
+56	-80.5	0
+57	-80.5	0
+58	-80.5	0
+59	-80.5	0
+60	-80.5	0
+61	-80.5	0
+62	-80.5	0
+63	-80.5	0
+64	-80.5	0
+65	-80.5	0
+66	-80.5	0
+67	-80.5	0
+68	-80.5	0
+69	-80.5	0
+70	-80.5	0
+71	-80.5	0
+72	-80.5	0
+73	-80.5	0
+74	-80.5	0
+75	-80.5	0
+76	-80.5	0
+77	-80.5	0
+78	-80.5	0
+79	-80.5	0
+80	-80.5	0
+81	-80.5	0
+82	-80.5	0
+83	-80.5	0
+84	-80.5	0
+85	-80.5	0
+86	-80.5	0
+87	-80.5	0
+88	-80.5	0
+89	-80.5	0
+90	-80.5	0
+91	-80.5	0
+92	-80.5	0
+93	-80.5	0
+94	-80.5	0
+95	-80.5	0
+96	-80.5	0
+97	-80.5	0
+98	-80.5	0
+99	-80.5	0
+100	-80.5	0
+101	-80.5	0
+102	-80.5	0
+103	-80.5	0
+104	-80.5	0
+105	-80.5	0
+106	-80.5	0
+107	-80.5	0
+108	-80.5	0
+109	-80.5	0
+110	-80.5	0
+111	-80.5	0
+112	-80.5	0
+113	-80.5	0
+114	-80.5	0
+115	-80.5	0
+116	-80.5	0
+117	-80.5	0
+118	-80.5	0
+119	-80.5	0
+120	-80.5	0
+121	-80.5	0
+122	-80.5	0
+123	-80.5	0
+124	-80.5	0
+125	-80.5	0
+126	-80.5	0
+127	-80.5	0
+128	-80.5	0
+129	-80.5	0
+130	-80.5	0
+131	-80.5	0
+132	-80.5	0
+133	-80.5	0
+134	-80.5	0
+135	-80.5	0
+136	-80.5	0
+137	-80.5	0
+138	-80.5	0
+139	-80.5	0
+140	-80.5	0
+141	-80.5	0
+142	-80.5	0
+143	-80.5	0
+144	-80.5	0
+145	-80.5	0
+146	-80.5	0
+147	-80.5	0
+148	-80.5	0
+149	-80.5	0
+150	-80.5	0
+151	-80.5	0
+152	-80.5	0
+153	-80.5	0
+154	-80.5	0
+155	-80.5	0
+156	-80.5	0
+157	-80.5	0
+158	-80.5	0
+159	-80.5	0
+160	-80.5	0
+161	-80.5	0
+162	-80.5	0
+163	-80.5	0
+164	-80.5	0
+165	-80.5	0
+166	-80.5	0
+167	-80.5	0
+168	-80.5	0
+169	-80.5	0
+170	-80.5	0
+171	-80.5	0
+172	-80.5	0
+173	-80.5	0
+174	-80.5	0
+175	-80.5	0
+176	-80.5	0
+177	-80.5	0
+178	-80.5	0
+179	-80.5	0
+180	-80.5	0
+181	-80.5	0
+182	-80.5	0
+183	-80.5	0
+184	-80.5	0
+185	-80.5	0
+186	-80.5	0
+187	-80.5	0
+188	-80.5	0
+189	-80.5	0
+190	-80.5	0
+191	-80.5	0
+192	-80.5	0
+193	-80.5	0
+194	-80.5	0
+195	-80.5	0
+196	-80.5	0
+197	-80.5	0
+198	-80.5	0
+199	-80.5	0
+200	-80.5	0
+201	-80.5	0
+202	-80.5	0
+203	-80.5	0
+204	-80.5	0
+205	-80.5	0
+206	-80.5	0
+207	-80.5	0
+208	-80.5	0
+209	-80.5	0
+210	-80.5	0
+211	-80.5	0
+212	-80.5	0
+213	-80.5	0
+214	-80.5	0
+215	-80.5	0
+216	-80.5	0
+217	-80.5	0
+218	-80.5	0
+219	-80.5	0
+220	-80.5	0
+221	-80.5	0
+222	-80.5	0
+223	-80.5	0
+224	-80.5	0
+225	-80.5	0
+226	-80.5	0
+227	-80.5	0
+228	-80.5	0
+229	-80.5	0
+230	-80.5	0
+231	-80.5	0
+232	-80.5	0
+233	-80.5	0
+234	-80.5	0
+235	-80.5	0
+236	-80.5	0
+237	-80.5	0
+238	-80.5	0
+239	-80.5	0
+240	-80.5	0
+241	-80.5	0
+242	-80.5	0
+243	-80.5	0
+244	-80.5	0
+245	-80.5	0
+246	-80.5	0
+247	-80.5	0
+248	-80.5	0
+249	-80.5	0
+250	-80.5	0
+251	-80.5	0
+252	-80.5	0
+253	-80.5	0
+254	-80.5	0
+255	-80.5	0
+256	-80.5	0
+257	-80.5	0
+258	-80.5	0
+259	-80.5	0
+260	-80.5	0
+261	-80.5	0
+262	-80.5	0
+263	-80.5	0
+264	-80.5	0
+265	-80.5	0
+266	-80.5	0
+267	-80.5	0
+268	-80.5	0
+269	-80.5	0
+270	-80.5	0
+271	-80.5	0
+272	-80.5	0
+273	-80.5	0
+274	-80.5	0
+275	-80.5	0
+276	-80.5	0
+277	-80.5	0
+278	-80.5	0
+279	-80.5	0
+280	-80.5	0
+281	-80.5	0
+282	-80.5	0
+283	-80.5	0
+284	-80.5	0
+285	-80.5	0
+286	-80.5	0
+287	-80.5	0
+288	-80.5	0
+289	-80.5	0
+290	-80.5	0
+291	-80.5	0
+292	-80.5	0
+293	-80.5	0
+294	-80.5	0
+295	-80.5	0
+296	-80.5	0
+297	-80.5	0
+298	-80.5	0
+299	-80.5	0
+300	-80.5	0
+301	-80.5	0
+302	-80.5	0
+303	-80.5	0
+304	-80.5	0
+305	-80.5	0
+306	-80.5	0
+307	-80.5	0
+308	-80.5	0
+309	-80.5	0
+310	-80.5	0
+311	-80.5	0
+312	-80.5	0
+313	-80.5	0
+314	-80.5	0
+315	-80.5	0
+316	-80.5	0
+317	-80.5	0
+318	-80.5	0
+319	-80.5	0
+320	-80.5	0
+321	-80.5	0
+322	-80.5	0
+323	-80.5	0
+324	-80.5	0
+325	-80.5	0
+326	-80.5	0
+327	-80.5	0
+328	-80.5	0
+329	-80.5	0
+330	-80.5	0
+331	-80.5	0
+332	-80.5	0
+333	-80.5	0
+334	-80.5	0
+335	-80.5	0
+336	-80.5	0
+337	-80.5	0
+338	-80.5	0
+339	-80.5	0
+340	-80.5	0
+341	-80.5	0
+342	-80.5	0
+343	-80.5	0
+344	-80.5	0
+345	-80.5	0
+346	-80.5	0
+347	-80.5	0
+348	-80.5	0
+349	-80.5	0
+350	-80.5	0
+351	-80.5	0
+352	-80.5	0
+353	-80.5	0
+354	-80.5	0
+355	-80.5	0
+356	-80.5	0
+357	-80.5	0
+358	-80.5	0
+359	-80.5	0
+360	-80.5	0
+0	-80	0
+1	-80	0
+2	-80	0
+3	-80	0
+4	-80	0
+5	-80	0
+6	-80	0
+7	-80	0
+8	-80	0
+9	-80	0
+10	-80	0
+11	-80	0
+12	-80	0
+13	-80	0
+14	-80	0
+15	-80	0
+16	-80	0
+17	-80	0
+18	-80	0
+19	-80	0
+20	-80	0
+21	-80	0
+22	-80	0
+23	-80	0
+24	-80	0
+25	-80	0
+26	-80	0
+27	-80	0
+28	-80	0
+29	-80	0
+30	-80	0
+31	-80	0
+32	-80	0
+33	-80	0
+34	-80	0
+35	-80	0
+36	-80	0
+37	-80	0
+38	-80	0
+39	-80	0
+40	-80	0
+41	-80	0
+42	-80	0
+43	-80	0
+44	-80	0
+45	-80	0
+46	-80	0
+47	-80	0
+48	-80	0
+49	-80	0
+50	-80	0
+51	-80	0
+52	-80	0
+53	-80	0
+54	-80	0
+55	-80	0
+56	-80	0
+57	-80	0
+58	-80	0
+59	-80	0
+60	-80	0
+61	-80	0
+62	-80	0
+63	-80	0
+64	-80	0
+65	-80	0
+66	-80	0
+67	-80	0
+68	-80	0
+69	-80	0
+70	-80	0
+71	-80	0
+72	-80	0
+73	-80	0
+74	-80	0
+75	-80	0
+76	-80	0
+77	-80	0
+78	-80	0
+79	-80	0
+80	-80	0
+81	-80	0
+82	-80	0
+83	-80	0
+84	-80	0
+85	-80	0
+86	-80	0
+87	-80	0
+88	-80	0
+89	-80	0
+90	-80	0
+91	-80	0
+92	-80	0
+93	-80	0
+94	-80	0
+95	-80	0
+96	-80	0
+97	-80	0
+98	-80	0
+99	-80	0
+100	-80	0
+101	-80	0
+102	-80	0
+103	-80	0
+104	-80	0
+105	-80	0
+106	-80	0
+107	-80	0
+108	-80	0
+109	-80	0
+110	-80	0
+111	-80	0
+112	-80	0
+113	-80	0
+114	-80	0
+115	-80	0
+116	-80	0
+117	-80	0
+118	-80	0
+119	-80	0
+120	-80	0
+121	-80	0
+122	-80	0
+123	-80	0
+124	-80	0
+125	-80	0
+126	-80	0
+127	-80	0
+128	-80	0
+129	-80	0
+130	-80	0
+131	-80	0
+132	-80	0
+133	-80	0
+134	-80	0
+135	-80	0
+136	-80	0
+137	-80	0
+138	-80	0
+139	-80	0
+140	-80	0
+141	-80	0
+142	-80	0
+143	-80	0
+144	-80	0
+145	-80	0
+146	-80	0
+147	-80	0
+148	-80	0
+149	-80	0
+150	-80	0
+151	-80	0
+152	-80	0
+153	-80	0
+154	-80	0
+155	-80	0
+156	-80	0
+157	-80	0
+158	-80	0
+159	-80	0
+160	-80	0
+161	-80	0
+162	-80	0
+163	-80	0
+164	-80	0
+165	-80	0
+166	-80	0
+167	-80	0
+168	-80	0
+169	-80	0
+170	-80	0
+171	-80	0
+172	-80	0
+173	-80	0
+174	-80	0
+175	-80	0
+176	-80	0
+177	-80	0
+178	-80	0
+179	-80	0
+180	-80	0
+181	-80	0
+182	-80	0
+183	-80	0
+184	-80	0
+185	-80	0
+186	-80	0
+187	-80	0
+188	-80	0
+189	-80	0
+190	-80	0
+191	-80	0
+192	-80	0
+193	-80	0
+194	-80	0
+195	-80	0
+196	-80	0
+197	-80	0
+198	-80	0
+199	-80	0
+200	-80	0
+201	-80	0
+202	-80	0
+203	-80	0
+204	-80	0
+205	-80	0
+206	-80	0
+207	-80	0
+208	-80	0
+209	-80	0
+210	-80	0
+211	-80	0
+212	-80	0
+213	-80	0
+214	-80	0
+215	-80	0
+216	-80	0
+217	-80	0
+218	-80	0
+219	-80	0
+220	-80	0
+221	-80	0
+222	-80	0
+223	-80	0
+224	-80	0
+225	-80	0
+226	-80	0
+227	-80	0
+228	-80	0
+229	-80	0
+230	-80	0
+231	-80	0
+232	-80	0
+233	-80	0
+234	-80	0
+235	-80	0
+236	-80	0
+237	-80	0
+238	-80	0
+239	-80	0
+240	-80	0
+241	-80	0
+242	-80	0
+243	-80	0
+244	-80	0
+245	-80	0
+246	-80	0
+247	-80	0
+248	-80	0
+249	-80	0
+250	-80	0
+251	-80	0
+252	-80	0
+253	-80	0
+254	-80	0
+255	-80	0
+256	-80	0
+257	-80	0
+258	-80	0
+259	-80	0
+260	-80	0
+261	-80	0
+262	-80	0
+263	-80	0
+264	-80	0
+265	-80	0
+266	-80	0
+267	-80	0
+268	-80	0
+269	-80	0
+270	-80	0
+271	-80	0
+272	-80	0
+273	-80	0
+274	-80	0
+275	-80	0
+276	-80	0
+277	-80	0
+278	-80	0
+279	-80	0
+280	-80	0
+281	-80	0
+282	-80	0
+283	-80	0
+284	-80	0
+285	-80	0
+286	-80	0
+287	-80	0
+288	-80	0
+289	-80	0
+290	-80	0
+291	-80	0
+292	-80	0
+293	-80	0
+294	-80	0
+295	-80	0
+296	-80	0
+297	-80	0
+298	-80	0
+299	-80	0
+300	-80	0
+301	-80	0
+302	-80	0
+303	-80	0
+304	-80	0
+305	-80	0
+306	-80	0
+307	-80	0
+308	-80	0
+309	-80	0
+310	-80	0
+311	-80	0
+312	-80	0
+313	-80	0
+314	-80	0
+315	-80	0
+316	-80	0
+317	-80	0
+318	-80	0
+319	-80	0
+320	-80	0
+321	-80	0
+322	-80	0
+323	-80	0
+324	-80	0
+325	-80	0
+326	-80	0
+327	-80	0
+328	-80	0
+329	-80	0
+330	-80	0
+331	-80	0
+332	-80	0
+333	-80	0
+334	-80	0
+335	-80	0
+336	-80	0
+337	-80	0
+338	-80	0
+339	-80	0
+340	-80	0
+341	-80	0
+342	-80	0
+343	-80	0
+344	-80	0
+345	-80	0
+346	-80	0
+347	-80	0
+348	-80	0
+349	-80	0
+350	-80	0
+351	-80	0
+352	-80	0
+353	-80	0
+354	-80	0
+355	-80	0
+356	-80	0
+357	-80	0
+358	-80	0
+359	-80	0
+360	-80	0
+0	-79.5	0
+1	-79.5	0
+2	-79.5	0
+3	-79.5	0
+4	-79.5	0
+5	-79.5	0
+6	-79.5	0
+7	-79.5	0
+8	-79.5	0
+9	-79.5	0
+10	-79.5	0
+11	-79.5	0
+12	-79.5	0
+13	-79.5	0
+14	-79.5	0
+15	-79.5	0
+16	-79.5	0
+17	-79.5	0
+18	-79.5	0
+19	-79.5	0
+20	-79.5	0
+21	-79.5	0
+22	-79.5	0
+23	-79.5	0
+24	-79.5	0
+25	-79.5	0
+26	-79.5	0
+27	-79.5	0
+28	-79.5	0
+29	-79.5	0
+30	-79.5	0
+31	-79.5	0
+32	-79.5	0
+33	-79.5	0
+34	-79.5	0
+35	-79.5	0
+36	-79.5	0
+37	-79.5	0
+38	-79.5	0
+39	-79.5	0
+40	-79.5	0
+41	-79.5	0
+42	-79.5	0
+43	-79.5	0
+44	-79.5	0
+45	-79.5	0
+46	-79.5	0
+47	-79.5	0
+48	-79.5	0
+49	-79.5	0
+50	-79.5	0
+51	-79.5	0
+52	-79.5	0
+53	-79.5	0
+54	-79.5	0
+55	-79.5	0
+56	-79.5	0
+57	-79.5	0
+58	-79.5	0
+59	-79.5	0
+60	-79.5	0
+61	-79.5	0
+62	-79.5	0
+63	-79.5	0
+64	-79.5	0
+65	-79.5	0
+66	-79.5	0
+67	-79.5	0
+68	-79.5	0
+69	-79.5	0
+70	-79.5	0
+71	-79.5	0
+72	-79.5	0
+73	-79.5	0
+74	-79.5	0
+75	-79.5	0
+76	-79.5	0
+77	-79.5	0
+78	-79.5	0
+79	-79.5	0
+80	-79.5	0
+81	-79.5	0
+82	-79.5	0
+83	-79.5	0
+84	-79.5	0
+85	-79.5	0
+86	-79.5	0
+87	-79.5	0
+88	-79.5	0
+89	-79.5	0
+90	-79.5	0
+91	-79.5	0
+92	-79.5	0
+93	-79.5	0
+94	-79.5	0
+95	-79.5	0
+96	-79.5	0
+97	-79.5	0
+98	-79.5	0
+99	-79.5	0
+100	-79.5	0
+101	-79.5	0
+102	-79.5	0
+103	-79.5	0
+104	-79.5	0
+105	-79.5	0
+106	-79.5	0
+107	-79.5	0
+108	-79.5	0
+109	-79.5	0
+110	-79.5	0
+111	-79.5	0
+112	-79.5	0
+113	-79.5	0
+114	-79.5	0
+115	-79.5	0
+116	-79.5	0
+117	-79.5	0
+118	-79.5	0
+119	-79.5	0
+120	-79.5	0
+121	-79.5	0
+122	-79.5	0
+123	-79.5	0
+124	-79.5	0
+125	-79.5	0
+126	-79.5	0
+127	-79.5	0
+128	-79.5	0
+129	-79.5	0
+130	-79.5	0
+131	-79.5	0
+132	-79.5	0
+133	-79.5	0
+134	-79.5	0
+135	-79.5	0
+136	-79.5	0
+137	-79.5	0
+138	-79.5	0
+139	-79.5	0
+140	-79.5	0
+141	-79.5	0
+142	-79.5	0
+143	-79.5	0
+144	-79.5	0
+145	-79.5	0
+146	-79.5	0
+147	-79.5	0
+148	-79.5	0
+149	-79.5	0
+150	-79.5	0
+151	-79.5	0
+152	-79.5	0
+153	-79.5	0
+154	-79.5	0
+155	-79.5	0
+156	-79.5	0
+157	-79.5	0
+158	-79.5	0
+159	-79.5	0
+160	-79.5	0
+161	-79.5	0
+162	-79.5	0
+163	-79.5	0
+164	-79.5	0
+165	-79.5	0
+166	-79.5	0
+167	-79.5	0
+168	-79.5	0
+169	-79.5	0
+170	-79.5	0
+171	-79.5	0
+172	-79.5	0
+173	-79.5	0
+174	-79.5	0
+175	-79.5	0
+176	-79.5	0
+177	-79.5	0
+178	-79.5	0
+179	-79.5	0
+180	-79.5	0
+181	-79.5	0
+182	-79.5	0
+183	-79.5	0
+184	-79.5	0
+185	-79.5	0
+186	-79.5	0
+187	-79.5	0
+188	-79.5	0
+189	-79.5	0
+190	-79.5	0
+191	-79.5	0
+192	-79.5	0
+193	-79.5	0
+194	-79.5	0
+195	-79.5	0
+196	-79.5	0
+197	-79.5	0
+198	-79.5	0
+199	-79.5	0
+200	-79.5	0
+201	-79.5	0
+202	-79.5	0
+203	-79.5	0
+204	-79.5	0
+205	-79.5	0
+206	-79.5	0
+207	-79.5	0
+208	-79.5	0
+209	-79.5	0
+210	-79.5	0
+211	-79.5	0
+212	-79.5	0
+213	-79.5	0
+214	-79.5	0
+215	-79.5	0
+216	-79.5	0
+217	-79.5	0
+218	-79.5	0
+219	-79.5	0
+220	-79.5	0
+221	-79.5	0
+222	-79.5	0
+223	-79.5	0
+224	-79.5	0
+225	-79.5	0
+226	-79.5	0
+227	-79.5	0
+228	-79.5	0
+229	-79.5	0
+230	-79.5	0
+231	-79.5	0
+232	-79.5	0
+233	-79.5	0
+234	-79.5	0
+235	-79.5	0
+236	-79.5	0
+237	-79.5	0
+238	-79.5	0
+239	-79.5	0
+240	-79.5	0
+241	-79.5	0
+242	-79.5	0
+243	-79.5	0
+244	-79.5	0
+245	-79.5	0
+246	-79.5	0
+247	-79.5	0
+248	-79.5	0
+249	-79.5	0
+250	-79.5	0
+251	-79.5	0
+252	-79.5	0
+253	-79.5	0
+254	-79.5	0
+255	-79.5	0
+256	-79.5	0
+257	-79.5	0
+258	-79.5	0
+259	-79.5	0
+260	-79.5	0
+261	-79.5	0
+262	-79.5	0
+263	-79.5	0
+264	-79.5	0
+265	-79.5	0
+266	-79.5	0
+267	-79.5	0
+268	-79.5	0
+269	-79.5	0
+270	-79.5	0
+271	-79.5	0
+272	-79.5	0
+273	-79.5	0
+274	-79.5	0
+275	-79.5	0
+276	-79.5	0
+277	-79.5	0
+278	-79.5	0
+279	-79.5	0
+280	-79.5	0
+281	-79.5	0
+282	-79.5	0
+283	-79.5	0
+284	-79.5	0
+285	-79.5	0
+286	-79.5	0
+287	-79.5	0
+288	-79.5	0
+289	-79.5	0
+290	-79.5	0
+291	-79.5	0
+292	-79.5	0
+293	-79.5	0
+294	-79.5	0
+295	-79.5	0
+296	-79.5	0
+297	-79.5	0
+298	-79.5	0
+299	-79.5	0
+300	-79.5	0
+301	-79.5	0
+302	-79.5	0
+303	-79.5	0
+304	-79.5	0
+305	-79.5	0
+306	-79.5	0
+307	-79.5	0
+308	-79.5	0
+309	-79.5	0
+310	-79.5	0
+311	-79.5	0
+312	-79.5	0
+313	-79.5	0
+314	-79.5	0
+315	-79.5	0
+316	-79.5	0
+317	-79.5	0
+318	-79.5	0
+319	-79.5	0
+320	-79.5	0
+321	-79.5	0
+322	-79.5	0
+323	-79.5	0
+324	-79.5	0
+325	-79.5	0
+326	-79.5	0
+327	-79.5	0
+328	-79.5	0
+329	-79.5	0
+330	-79.5	0
+331	-79.5	0
+332	-79.5	0
+333	-79.5	0
+334	-79.5	0
+335	-79.5	0
+336	-79.5	0
+337	-79.5	0
+338	-79.5	0
+339	-79.5	0
+340	-79.5	0
+341	-79.5	0
+342	-79.5	0
+343	-79.5	0
+344	-79.5	0
+345	-79.5	0
+346	-79.5	0
+347	-79.5	0
+348	-79.5	0
+349	-79.5	0
+350	-79.5	0
+351	-79.5	0
+352	-79.5	0
+353	-79.5	0
+354	-79.5	0
+355	-79.5	0
+356	-79.5	0
+357	-79.5	0
+358	-79.5	0
+359	-79.5	0
+360	-79.5	0
+0	-79	0
+1	-79	0
+2	-79	0
+3	-79	0
+4	-79	0
+5	-79	0
+6	-79	0
+7	-79	0
+8	-79	0
+9	-79	0
+10	-79	0
+11	-79	0
+12	-79	0
+13	-79	0
+14	-79	0
+15	-79	0
+16	-79	0
+17	-79	0
+18	-79	0
+19	-79	0
+20	-79	0
+21	-79	0
+22	-79	0
+23	-79	0
+24	-79	0
+25	-79	0
+26	-79	0
+27	-79	0
+28	-79	0
+29	-79	0
+30	-79	0
+31	-79	0
+32	-79	0
+33	-79	0
+34	-79	0
+35	-79	0
+36	-79	0
+37	-79	0
+38	-79	0
+39	-79	0
+40	-79	0
+41	-79	0
+42	-79	0
+43	-79	0
+44	-79	0
+45	-79	0
+46	-79	0
+47	-79	0
+48	-79	0
+49	-79	0
+50	-79	0
+51	-79	0
+52	-79	0
+53	-79	0
+54	-79	0
+55	-79	0
+56	-79	0
+57	-79	0
+58	-79	0
+59	-79	0
+60	-79	0
+61	-79	0
+62	-79	0
+63	-79	0
+64	-79	0
+65	-79	0
+66	-79	0
+67	-79	0
+68	-79	0
+69	-79	0
+70	-79	0
+71	-79	0
+72	-79	0
+73	-79	0
+74	-79	0
+75	-79	0
+76	-79	0
+77	-79	0
+78	-79	0
+79	-79	0
+80	-79	0
+81	-79	0
+82	-79	0
+83	-79	0
+84	-79	0
+85	-79	0
+86	-79	0
+87	-79	0
+88	-79	0
+89	-79	0
+90	-79	0
+91	-79	0
+92	-79	0
+93	-79	0
+94	-79	0
+95	-79	0
+96	-79	0
+97	-79	0
+98	-79	0
+99	-79	0
+100	-79	0
+101	-79	0
+102	-79	0
+103	-79	0
+104	-79	0
+105	-79	0
+106	-79	0
+107	-79	0
+108	-79	0
+109	-79	0
+110	-79	0
+111	-79	0
+112	-79	0
+113	-79	0
+114	-79	0
+115	-79	0
+116	-79	0
+117	-79	0
+118	-79	0
+119	-79	0
+120	-79	0
+121	-79	0
+122	-79	0
+123	-79	0
+124	-79	0
+125	-79	0
+126	-79	0
+127	-79	0
+128	-79	0
+129	-79	0
+130	-79	0
+131	-79	0
+132	-79	0
+133	-79	0
+134	-79	0
+135	-79	0
+136	-79	0
+137	-79	0
+138	-79	0
+139	-79	0
+140	-79	0
+141	-79	0
+142	-79	0
+143	-79	0
+144	-79	0
+145	-79	0
+146	-79	0
+147	-79	0
+148	-79	0
+149	-79	0
+150	-79	0
+151	-79	0
+152	-79	0
+153	-79	0
+154	-79	0
+155	-79	0
+156	-79	0
+157	-79	0
+158	-79	0
+159	-79	0
+160	-79	0
+161	-79	0
+162	-79	0
+163	-79	0
+164	-79	0
+165	-79	0
+166	-79	0
+167	-79	0
+168	-79	0
+169	-79	0
+170	-79	0
+171	-79	0
+172	-79	0
+173	-79	0
+174	-79	0
+175	-79	0
+176	-79	0
+177	-79	0
+178	-79	0
+179	-79	0
+180	-79	0
+181	-79	0
+182	-79	0
+183	-79	0
+184	-79	0
+185	-79	0
+186	-79	0
+187	-79	0
+188	-79	0
+189	-79	0
+190	-79	0
+191	-79	0
+192	-79	0
+193	-79	0
+194	-79	0
+195	-79	0
+196	-79	0
+197	-79	0
+198	-79	0
+199	-79	0
+200	-79	0
+201	-79	0
+202	-79	0
+203	-79	0
+204	-79	0
+205	-79	0
+206	-79	0
+207	-79	0
+208	-79	0
+209	-79	0
+210	-79	0
+211	-79	0
+212	-79	0
+213	-79	0
+214	-79	0
+215	-79	0
+216	-79	0
+217	-79	0
+218	-79	0
+219	-79	0
+220	-79	0
+221	-79	0
+222	-79	0
+223	-79	0
+224	-79	0
+225	-79	0
+226	-79	0
+227	-79	0
+228	-79	0
+229	-79	0
+230	-79	0
+231	-79	0
+232	-79	0
+233	-79	0
+234	-79	0
+235	-79	0
+236	-79	0
+237	-79	0
+238	-79	0
+239	-79	0
+240	-79	0
+241	-79	0
+242	-79	0
+243	-79	0
+244	-79	0
+245	-79	0
+246	-79	0
+247	-79	0
+248	-79	0
+249	-79	0
+250	-79	0
+251	-79	0
+252	-79	0
+253	-79	0
+254	-79	0
+255	-79	0
+256	-79	0
+257	-79	0
+258	-79	0
+259	-79	0
+260	-79	0
+261	-79	0
+262	-79	0
+263	-79	0
+264	-79	0
+265	-79	0
+266	-79	0
+267	-79	0
+268	-79	0
+269	-79	0
+270	-79	0
+271	-79	0
+272	-79	0
+273	-79	0
+274	-79	0
+275	-79	0
+276	-79	0
+277	-79	0
+278	-79	0
+279	-79	0
+280	-79	0
+281	-79	0
+282	-79	0
+283	-79	0
+284	-79	0
+285	-79	0
+286	-79	0
+287	-79	0
+288	-79	0
+289	-79	0
+290	-79	0
+291	-79	0
+292	-79	0
+293	-79	0
+294	-79	0
+295	-79	0
+296	-79	0
+297	-79	0
+298	-79	0
+299	-79	0
+300	-79	0
+301	-79	0
+302	-79	0
+303	-79	0
+304	-79	0
+305	-79	0
+306	-79	0
+307	-79	0
+308	-79	0
+309	-79	0
+310	-79	0
+311	-79	0
+312	-79	0
+313	-79	0
+314	-79	0
+315	-79	0
+316	-79	0
+317	-79	0
+318	-79	0
+319	-79	0
+320	-79	0
+321	-79	0
+322	-79	0
+323	-79	0
+324	-79	0
+325	-79	0
+326	-79	0
+327	-79	0
+328	-79	0
+329	-79	0
+330	-79	0
+331	-79	0
+332	-79	0
+333	-79	0
+334	-79	0
+335	-79	0
+336	-79	0
+337	-79	0
+338	-79	0
+339	-79	0
+340	-79	0
+341	-79	0
+342	-79	0
+343	-79	0
+344	-79	0
+345	-79	0
+346	-79	0
+347	-79	0
+348	-79	0
+349	-79	0
+350	-79	0
+351	-79	0
+352	-79	0
+353	-79	0
+354	-79	0
+355	-79	0
+356	-79	0
+357	-79	0
+358	-79	0
+359	-79	0
+360	-79	0
+0	-78.5	0
+1	-78.5	0
+2	-78.5	0
+3	-78.5	0
+4	-78.5	0
+5	-78.5	0
+6	-78.5	0
+7	-78.5	0
+8	-78.5	0
+9	-78.5	0
+10	-78.5	0
+11	-78.5	0
+12	-78.5	0
+13	-78.5	0
+14	-78.5	0
+15	-78.5	0
+16	-78.5	0
+17	-78.5	0
+18	-78.5	0
+19	-78.5	0
+20	-78.5	0
+21	-78.5	0
+22	-78.5	0
+23	-78.5	0
+24	-78.5	0
+25	-78.5	0
+26	-78.5	0
+27	-78.5	0
+28	-78.5	0
+29	-78.5	0
+30	-78.5	0
+31	-78.5	0
+32	-78.5	0
+33	-78.5	0
+34	-78.5	0
+35	-78.5	0
+36	-78.5	0
+37	-78.5	0
+38	-78.5	0
+39	-78.5	0
+40	-78.5	0
+41	-78.5	0
+42	-78.5	0
+43	-78.5	0
+44	-78.5	0
+45	-78.5	0
+46	-78.5	0
+47	-78.5	0
+48	-78.5	0
+49	-78.5	0
+50	-78.5	0
+51	-78.5	0
+52	-78.5	0
+53	-78.5	0
+54	-78.5	0
+55	-78.5	0
+56	-78.5	0
+57	-78.5	0
+58	-78.5	0
+59	-78.5	0
+60	-78.5	0
+61	-78.5	0
+62	-78.5	0
+63	-78.5	0
+64	-78.5	0
+65	-78.5	0
+66	-78.5	0
+67	-78.5	0
+68	-78.5	0
+69	-78.5	0
+70	-78.5	0
+71	-78.5	0
+72	-78.5	0
+73	-78.5	0
+74	-78.5	0
+75	-78.5	0
+76	-78.5	0
+77	-78.5	0
+78	-78.5	0
+79	-78.5	0
+80	-78.5	0
+81	-78.5	0
+82	-78.5	0
+83	-78.5	0
+84	-78.5	0
+85	-78.5	0
+86	-78.5	0
+87	-78.5	0
+88	-78.5	0
+89	-78.5	0
+90	-78.5	0
+91	-78.5	0
+92	-78.5	0
+93	-78.5	0
+94	-78.5	0
+95	-78.5	0
+96	-78.5	0
+97	-78.5	0
+98	-78.5	0
+99	-78.5	0
+100	-78.5	0
+101	-78.5	0
+102	-78.5	0
+103	-78.5	0
+104	-78.5	0
+105	-78.5	0
+106	-78.5	0
+107	-78.5	0
+108	-78.5	0
+109	-78.5	0
+110	-78.5	0
+111	-78.5	0
+112	-78.5	0
+113	-78.5	0
+114	-78.5	0
+115	-78.5	0
+116	-78.5	0
+117	-78.5	0
+118	-78.5	0
+119	-78.5	0
+120	-78.5	0
+121	-78.5	0
+122	-78.5	0
+123	-78.5	0
+124	-78.5	0
+125	-78.5	0
+126	-78.5	0
+127	-78.5	0
+128	-78.5	0
+129	-78.5	0
+130	-78.5	0
+131	-78.5	0
+132	-78.5	0
+133	-78.5	0
+134	-78.5	0
+135	-78.5	0
+136	-78.5	0
+137	-78.5	0
+138	-78.5	0
+139	-78.5	0
+140	-78.5	0
+141	-78.5	0
+142	-78.5	0
+143	-78.5	0
+144	-78.5	0
+145	-78.5	0
+146	-78.5	0
+147	-78.5	0
+148	-78.5	0
+149	-78.5	0
+150	-78.5	0
+151	-78.5	0
+152	-78.5	0
+153	-78.5	0
+154	-78.5	0
+155	-78.5	0
+156	-78.5	0
+157	-78.5	0
+158	-78.5	0
+159	-78.5	0
+160	-78.5	0
+161	-78.5	0
+162	-78.5	0
+163	-78.5	0
+164	-78.5	0
+165	-78.5	0
+166	-78.5	0
+167	-78.5	0
+168	-78.5	0
+169	-78.5	0
+170	-78.5	0
+171	-78.5	0
+172	-78.5	0
+173	-78.5	0
+174	-78.5	0
+175	-78.5	0
+176	-78.5	0
+177	-78.5	0
+178	-78.5	0
+179	-78.5	0
+180	-78.5	0
+181	-78.5	0
+182	-78.5	0
+183	-78.5	0
+184	-78.5	0
+185	-78.5	0
+186	-78.5	0
+187	-78.5	0
+188	-78.5	0
+189	-78.5	0
+190	-78.5	0
+191	-78.5	0
+192	-78.5	0
+193	-78.5	0
+194	-78.5	0
+195	-78.5	0
+196	-78.5	0
+197	-78.5	0
+198	-78.5	0
+199	-78.5	0
+200	-78.5	0
+201	-78.5	0
+202	-78.5	0
+203	-78.5	0
+204	-78.5	0
+205	-78.5	0
+206	-78.5	0
+207	-78.5	0
+208	-78.5	0
+209	-78.5	0
+210	-78.5	0
+211	-78.5	0
+212	-78.5	0
+213	-78.5	0
+214	-78.5	0
+215	-78.5	0
+216	-78.5	0
+217	-78.5	0
+218	-78.5	0
+219	-78.5	0
+220	-78.5	0
+221	-78.5	0
+222	-78.5	0
+223	-78.5	0
+224	-78.5	0
+225	-78.5	0
+226	-78.5	0
+227	-78.5	0
+228	-78.5	0
+229	-78.5	0
+230	-78.5	0
+231	-78.5	0
+232	-78.5	0
+233	-78.5	0
+234	-78.5	0
+235	-78.5	0
+236	-78.5	0
+237	-78.5	0
+238	-78.5	0
+239	-78.5	0
+240	-78.5	0
+241	-78.5	0
+242	-78.5	0
+243	-78.5	0
+244	-78.5	0
+245	-78.5	0
+246	-78.5	0
+247	-78.5	0
+248	-78.5	0
+249	-78.5	0
+250	-78.5	0
+251	-78.5	0
+252	-78.5	0
+253	-78.5	0
+254	-78.5	0
+255	-78.5	0
+256	-78.5	0
+257	-78.5	0
+258	-78.5	0
+259	-78.5	0
+260	-78.5	0
+261	-78.5	0
+262	-78.5	0
+263	-78.5	0
+264	-78.5	0
+265	-78.5	0
+266	-78.5	0
+267	-78.5	0
+268	-78.5	0
+269	-78.5	0
+270	-78.5	0
+271	-78.5	0
+272	-78.5	0
+273	-78.5	0
+274	-78.5	0
+275	-78.5	0
+276	-78.5	0
+277	-78.5	0
+278	-78.5	0
+279	-78.5	0
+280	-78.5	0
+281	-78.5	0
+282	-78.5	0
+283	-78.5	0
+284	-78.5	0
+285	-78.5	0
+286	-78.5	0
+287	-78.5	0
+288	-78.5	0
+289	-78.5	0
+290	-78.5	0
+291	-78.5	0
+292	-78.5	0
+293	-78.5	0
+294	-78.5	0
+295	-78.5	0
+296	-78.5	0
+297	-78.5	0
+298	-78.5	0
+299	-78.5	0
+300	-78.5	0
+301	-78.5	0
+302	-78.5	0
+303	-78.5	0
+304	-78.5	0
+305	-78.5	0
+306	-78.5	0
+307	-78.5	0
+308	-78.5	0
+309	-78.5	0
+310	-78.5	0
+311	-78.5	0
+312	-78.5	0
+313	-78.5	0
+314	-78.5	0
+315	-78.5	0
+316	-78.5	0
+317	-78.5	0
+318	-78.5	0
+319	-78.5	0
+320	-78.5	0
+321	-78.5	0
+322	-78.5	0
+323	-78.5	0
+324	-78.5	0
+325	-78.5	0
+326	-78.5	0
+327	-78.5	0
+328	-78.5	0
+329	-78.5	0
+330	-78.5	0
+331	-78.5	0
+332	-78.5	0
+333	-78.5	0
+334	-78.5	0
+335	-78.5	0
+336	-78.5	0
+337	-78.5	0
+338	-78.5	0
+339	-78.5	0
+340	-78.5	0
+341	-78.5	0
+342	-78.5	0
+343	-78.5	0
+344	-78.5	0
+345	-78.5	0
+346	-78.5	0
+347	-78.5	0
+348	-78.5	0
+349	-78.5	0
+350	-78.5	0
+351	-78.5	0
+352	-78.5	0
+353	-78.5	0
+354	-78.5	0
+355	-78.5	0
+356	-78.5	0
+357	-78.5	0
+358	-78.5	0
+359	-78.5	0
+360	-78.5	0
+0	-78	0
+1	-78	0
+2	-78	0
+3	-78	0
+4	-78	0
+5	-78	0
+6	-78	0
+7	-78	0
+8	-78	0
+9	-78	0
+10	-78	0
+11	-78	0
+12	-78	0
+13	-78	0
+14	-78	0
+15	-78	0
+16	-78	0
+17	-78	0
+18	-78	0
+19	-78	0
+20	-78	0
+21	-78	0
+22	-78	0
+23	-78	0
+24	-78	0
+25	-78	0
+26	-78	0
+27	-78	0
+28	-78	0
+29	-78	0
+30	-78	0
+31	-78	0
+32	-78	0
+33	-78	0
+34	-78	0
+35	-78	0
+36	-78	0
+37	-78	0
+38	-78	0
+39	-78	0
+40	-78	0
+41	-78	0
+42	-78	0
+43	-78	0
+44	-78	0
+45	-78	0
+46	-78	0
+47	-78	0
+48	-78	0
+49	-78	0
+50	-78	0
+51	-78	0
+52	-78	0
+53	-78	0
+54	-78	0
+55	-78	0
+56	-78	0
+57	-78	0
+58	-78	0
+59	-78	0
+60	-78	0
+61	-78	0
+62	-78	0
+63	-78	0
+64	-78	0
+65	-78	0
+66	-78	0
+67	-78	0
+68	-78	0
+69	-78	0
+70	-78	0
+71	-78	0
+72	-78	0
+73	-78	0
+74	-78	0
+75	-78	0
+76	-78	0
+77	-78	0
+78	-78	0
+79	-78	0
+80	-78	0
+81	-78	0
+82	-78	0
+83	-78	0
+84	-78	0
+85	-78	0
+86	-78	0
+87	-78	0
+88	-78	0
+89	-78	0
+90	-78	0
+91	-78	0
+92	-78	0
+93	-78	0
+94	-78	0
+95	-78	0
+96	-78	0
+97	-78	0
+98	-78	0
+99	-78	0
+100	-78	0
+101	-78	0
+102	-78	0
+103	-78	0
+104	-78	0
+105	-78	0
+106	-78	0
+107	-78	0
+108	-78	0
+109	-78	0
+110	-78	0
+111	-78	0
+112	-78	0
+113	-78	0
+114	-78	0
+115	-78	0
+116	-78	0
+117	-78	0
+118	-78	0
+119	-78	0
+120	-78	0
+121	-78	0
+122	-78	0
+123	-78	0
+124	-78	0
+125	-78	0
+126	-78	0
+127	-78	0
+128	-78	0
+129	-78	0
+130	-78	0
+131	-78	0
+132	-78	0
+133	-78	0
+134	-78	0
+135	-78	0
+136	-78	0
+137	-78	0
+138	-78	0
+139	-78	0
+140	-78	0
+141	-78	0
+142	-78	0
+143	-78	0
+144	-78	0
+145	-78	0
+146	-78	0
+147	-78	0
+148	-78	0
+149	-78	0
+150	-78	0
+151	-78	0
+152	-78	0
+153	-78	0
+154	-78	0
+155	-78	0
+156	-78	0
+157	-78	0
+158	-78	0
+159	-78	0
+160	-78	0
+161	-78	0
+162	-78	0
+163	-78	0
+164	-78	0
+165	-78	0
+166	-78	0
+167	-78	0
+168	-78	0
+169	-78	0
+170	-78	0
+171	-78	0
+172	-78	0
+173	-78	0
+174	-78	0
+175	-78	0
+176	-78	0
+177	-78	0
+178	-78	0
+179	-78	0
+180	-78	0
+181	-78	0
+182	-78	0
+183	-78	0
+184	-78	0
+185	-78	0
+186	-78	0
+187	-78	0
+188	-78	0
+189	-78	0
+190	-78	0
+191	-78	0
+192	-78	0
+193	-78	0
+194	-78	0
+195	-78	0
+196	-78	0
+197	-78	0
+198	-78	0
+199	-78	0
+200	-78	0
+201	-78	0
+202	-78	0
+203	-78	0
+204	-78	0
+205	-78	0
+206	-78	0
+207	-78	0
+208	-78	0
+209	-78	0
+210	-78	0
+211	-78	0
+212	-78	0
+213	-78	0
+214	-78	0
+215	-78	0
+216	-78	0
+217	-78	0
+218	-78	0
+219	-78	0
+220	-78	0
+221	-78	0
+222	-78	0
+223	-78	0
+224	-78	0
+225	-78	0
+226	-78	0
+227	-78	0
+228	-78	0
+229	-78	0
+230	-78	0
+231	-78	0
+232	-78	0
+233	-78	0
+234	-78	0
+235	-78	0
+236	-78	0
+237	-78	0
+238	-78	0
+239	-78	0
+240	-78	0
+241	-78	0
+242	-78	0
+243	-78	0
+244	-78	0
+245	-78	0
+246	-78	0
+247	-78	0
+248	-78	0
+249	-78	0
+250	-78	0
+251	-78	0
+252	-78	0
+253	-78	0
+254	-78	0
+255	-78	0
+256	-78	0
+257	-78	0
+258	-78	0
+259	-78	0
+260	-78	0
+261	-78	0
+262	-78	0
+263	-78	0
+264	-78	0
+265	-78	0
+266	-78	0
+267	-78	0
+268	-78	0
+269	-78	0
+270	-78	0
+271	-78	0
+272	-78	0
+273	-78	0
+274	-78	0
+275	-78	0
+276	-78	0
+277	-78	0
+278	-78	0
+279	-78	0
+280	-78	0
+281	-78	0
+282	-78	0
+283	-78	0
+284	-78	0
+285	-78	0
+286	-78	0
+287	-78	0
+288	-78	0
+289	-78	0
+290	-78	0
+291	-78	0
+292	-78	0
+293	-78	0
+294	-78	0
+295	-78	0
+296	-78	0
+297	-78	0
+298	-78	0
+299	-78	0
+300	-78	0
+301	-78	0
+302	-78	0
+303	-78	0
+304	-78	0
+305	-78	0
+306	-78	0
+307	-78	0
+308	-78	0
+309	-78	0
+310	-78	0
+311	-78	0
+312	-78	0
+313	-78	0
+314	-78	0
+315	-78	0
+316	-78	0
+317	-78	0
+318	-78	0
+319	-78	0
+320	-78	0
+321	-78	0
+322	-78	0
+323	-78	0
+324	-78	0
+325	-78	0
+326	-78	0
+327	-78	0
+328	-78	0
+329	-78	0
+330	-78	0
+331	-78	0
+332	-78	0
+333	-78	0
+334	-78	0
+335	-78	0
+336	-78	0
+337	-78	0
+338	-78	0
+339	-78	0
+340	-78	0
+341	-78	0
+342	-78	0
+343	-78	0
+344	-78	0
+345	-78	0
+346	-78	0
+347	-78	0
+348	-78	0
+349	-78	0
+350	-78	0
+351	-78	0
+352	-78	0
+353	-78	0
+354	-78	0
+355	-78	0
+356	-78	0
+357	-78	0
+358	-78	0
+359	-78	0
+360	-78	0
+0	-77.5	0
+1	-77.5	0
+2	-77.5	0
+3	-77.5	0
+4	-77.5	0
+5	-77.5	0
+6	-77.5	0
+7	-77.5	0
+8	-77.5	0
+9	-77.5	0
+10	-77.5	0
+11	-77.5	0
+12	-77.5	0
+13	-77.5	0
+14	-77.5	0
+15	-77.5	0
+16	-77.5	0
+17	-77.5	0
+18	-77.5	0
+19	-77.5	0
+20	-77.5	0
+21	-77.5	0
+22	-77.5	0
+23	-77.5	0
+24	-77.5	0
+25	-77.5	0
+26	-77.5	0
+27	-77.5	0
+28	-77.5	0
+29	-77.5	0
+30	-77.5	0
+31	-77.5	0
+32	-77.5	0
+33	-77.5	0
+34	-77.5	0
+35	-77.5	0
+36	-77.5	0
+37	-77.5	0
+38	-77.5	0
+39	-77.5	0
+40	-77.5	0
+41	-77.5	0
+42	-77.5	0
+43	-77.5	0
+44	-77.5	0
+45	-77.5	0
+46	-77.5	0
+47	-77.5	0
+48	-77.5	0
+49	-77.5	0
+50	-77.5	0
+51	-77.5	0
+52	-77.5	0
+53	-77.5	0
+54	-77.5	0
+55	-77.5	0
+56	-77.5	0
+57	-77.5	0
+58	-77.5	0
+59	-77.5	0
+60	-77.5	0
+61	-77.5	0
+62	-77.5	0
+63	-77.5	0
+64	-77.5	0
+65	-77.5	0
+66	-77.5	0
+67	-77.5	0
+68	-77.5	0
+69	-77.5	0
+70	-77.5	0
+71	-77.5	0
+72	-77.5	0
+73	-77.5	0
+74	-77.5	0
+75	-77.5	0
+76	-77.5	0
+77	-77.5	0
+78	-77.5	0
+79	-77.5	0
+80	-77.5	0
+81	-77.5	0
+82	-77.5	0
+83	-77.5	0
+84	-77.5	0
+85	-77.5	0
+86	-77.5	0
+87	-77.5	0
+88	-77.5	0
+89	-77.5	0
+90	-77.5	0
+91	-77.5	0
+92	-77.5	0
+93	-77.5	0
+94	-77.5	0
+95	-77.5	0
+96	-77.5	0
+97	-77.5	0
+98	-77.5	0
+99	-77.5	0
+100	-77.5	0
+101	-77.5	0
+102	-77.5	0
+103	-77.5	0
+104	-77.5	0
+105	-77.5	0
+106	-77.5	0
+107	-77.5	0
+108	-77.5	0
+109	-77.5	0
+110	-77.5	0
+111	-77.5	0
+112	-77.5	0
+113	-77.5	0
+114	-77.5	0
+115	-77.5	0
+116	-77.5	0
+117	-77.5	0
+118	-77.5	0
+119	-77.5	0
+120	-77.5	0
+121	-77.5	0
+122	-77.5	0
+123	-77.5	0
+124	-77.5	0
+125	-77.5	0
+126	-77.5	0
+127	-77.5	0
+128	-77.5	0
+129	-77.5	0
+130	-77.5	0
+131	-77.5	0
+132	-77.5	0
+133	-77.5	0
+134	-77.5	0
+135	-77.5	0
+136	-77.5	0
+137	-77.5	0
+138	-77.5	0
+139	-77.5	0
+140	-77.5	0
+141	-77.5	0
+142	-77.5	0
+143	-77.5	0
+144	-77.5	0
+145	-77.5	0
+146	-77.5	0
+147	-77.5	0
+148	-77.5	0
+149	-77.5	0
+150	-77.5	0
+151	-77.5	0
+152	-77.5	0
+153	-77.5	0
+154	-77.5	0
+155	-77.5	0
+156	-77.5	0
+157	-77.5	0
+158	-77.5	0
+159	-77.5	0
+160	-77.5	0
+161	-77.5	0
+162	-77.5	0
+163	-77.5	0
+164	-77.5	0
+165	-77.5	0
+166	-77.5	0
+167	-77.5	0
+168	-77.5	0
+169	-77.5	0
+170	-77.5	0
+171	-77.5	0
+172	-77.5	0
+173	-77.5	0
+174	-77.5	0
+175	-77.5	0
+176	-77.5	0
+177	-77.5	0
+178	-77.5	0
+179	-77.5	0
+180	-77.5	0
+181	-77.5	0
+182	-77.5	0
+183	-77.5	0
+184	-77.5	0
+185	-77.5	0
+186	-77.5	0
+187	-77.5	0
+188	-77.5	0
+189	-77.5	0
+190	-77.5	0
+191	-77.5	0
+192	-77.5	0
+193	-77.5	0
+194	-77.5	0
+195	-77.5	0
+196	-77.5	0
+197	-77.5	0
+198	-77.5	0
+199	-77.5	0
+200	-77.5	0
+201	-77.5	0
+202	-77.5	0
+203	-77.5	0
+204	-77.5	0
+205	-77.5	0
+206	-77.5	0
+207	-77.5	0
+208	-77.5	0
+209	-77.5	0
+210	-77.5	0
+211	-77.5	0
+212	-77.5	0
+213	-77.5	0
+214	-77.5	0
+215	-77.5	0
+216	-77.5	0
+217	-77.5	0
+218	-77.5	0
+219	-77.5	0
+220	-77.5	0
+221	-77.5	0
+222	-77.5	0
+223	-77.5	0
+224	-77.5	0
+225	-77.5	0
+226	-77.5	0
+227	-77.5	0
+228	-77.5	0
+229	-77.5	0
+230	-77.5	0
+231	-77.5	0
+232	-77.5	0
+233	-77.5	0
+234	-77.5	0
+235	-77.5	0
+236	-77.5	0
+237	-77.5	0
+238	-77.5	0
+239	-77.5	0
+240	-77.5	0
+241	-77.5	0
+242	-77.5	0
+243	-77.5	0
+244	-77.5	0
+245	-77.5	0
+246	-77.5	0
+247	-77.5	0
+248	-77.5	0
+249	-77.5	0
+250	-77.5	0
+251	-77.5	0
+252	-77.5	0
+253	-77.5	0
+254	-77.5	0
+255	-77.5	0
+256	-77.5	0
+257	-77.5	0
+258	-77.5	0
+259	-77.5	0
+260	-77.5	0
+261	-77.5	0
+262	-77.5	0
+263	-77.5	0
+264	-77.5	0
+265	-77.5	0
+266	-77.5	0
+267	-77.5	0
+268	-77.5	0
+269	-77.5	0
+270	-77.5	0
+271	-77.5	0
+272	-77.5	0
+273	-77.5	0
+274	-77.5	0
+275	-77.5	0
+276	-77.5	0
+277	-77.5	0
+278	-77.5	0
+279	-77.5	0
+280	-77.5	0
+281	-77.5	0
+282	-77.5	0
+283	-77.5	0
+284	-77.5	0
+285	-77.5	0
+286	-77.5	0
+287	-77.5	0
+288	-77.5	0
+289	-77.5	0
+290	-77.5	0
+291	-77.5	0
+292	-77.5	0
+293	-77.5	0
+294	-77.5	0
+295	-77.5	0
+296	-77.5	0
+297	-77.5	0
+298	-77.5	0
+299	-77.5	0
+300	-77.5	0
+301	-77.5	0
+302	-77.5	0
+303	-77.5	0
+304	-77.5	0
+305	-77.5	0
+306	-77.5	0
+307	-77.5	0
+308	-77.5	0
+309	-77.5	0
+310	-77.5	0
+311	-77.5	0
+312	-77.5	0
+313	-77.5	0
+314	-77.5	0
+315	-77.5	0
+316	-77.5	0
+317	-77.5	0
+318	-77.5	0
+319	-77.5	0
+320	-77.5	0
+321	-77.5	0
+322	-77.5	0
+323	-77.5	0
+324	-77.5	0
+325	-77.5	0
+326	-77.5	0
+327	-77.5	0
+328	-77.5	0
+329	-77.5	0
+330	-77.5	0
+331	-77.5	0
+332	-77.5	0
+333	-77.5	0
+334	-77.5	0
+335	-77.5	0
+336	-77.5	0
+337	-77.5	0
+338	-77.5	0
+339	-77.5	0
+340	-77.5	0
+341	-77.5	0
+342	-77.5	0
+343	-77.5	0
+344	-77.5	0
+345	-77.5	0
+346	-77.5	0
+347	-77.5	0
+348	-77.5	0
+349	-77.5	0
+350	-77.5	0
+351	-77.5	0
+352	-77.5	0
+353	-77.5	0
+354	-77.5	0
+355	-77.5	0
+356	-77.5	0
+357	-77.5	0
+358	-77.5	0
+359	-77.5	0
+360	-77.5	0
+0	-77	0
+1	-77	0
+2	-77	0
+3	-77	0
+4	-77	0
+5	-77	0
+6	-77	0
+7	-77	0
+8	-77	0
+9	-77	0
+10	-77	0
+11	-77	0
+12	-77	0
+13	-77	0
+14	-77	0
+15	-77	0
+16	-77	0
+17	-77	0
+18	-77	0
+19	-77	0
+20	-77	0
+21	-77	0
+22	-77	0
+23	-77	0
+24	-77	0
+25	-77	0
+26	-77	0
+27	-77	0
+28	-77	0
+29	-77	0
+30	-77	0
+31	-77	0
+32	-77	0
+33	-77	0
+34	-77	0
+35	-77	0
+36	-77	0
+37	-77	0
+38	-77	0
+39	-77	0
+40	-77	0
+41	-77	0
+42	-77	0
+43	-77	0
+44	-77	0
+45	-77	0
+46	-77	0
+47	-77	0
+48	-77	0
+49	-77	0
+50	-77	0
+51	-77	0
+52	-77	0
+53	-77	0
+54	-77	0
+55	-77	0
+56	-77	0
+57	-77	0
+58	-77	0
+59	-77	0
+60	-77	0
+61	-77	0
+62	-77	0
+63	-77	0
+64	-77	0
+65	-77	0
+66	-77	0
+67	-77	0
+68	-77	0
+69	-77	0
+70	-77	0
+71	-77	0
+72	-77	0
+73	-77	0
+74	-77	0
+75	-77	0
+76	-77	0
+77	-77	0
+78	-77	0
+79	-77	0
+80	-77	0
+81	-77	0
+82	-77	0
+83	-77	0
+84	-77	0
+85	-77	0
+86	-77	0
+87	-77	0
+88	-77	0
+89	-77	0
+90	-77	0
+91	-77	0
+92	-77	0
+93	-77	0
+94	-77	0
+95	-77	0
+96	-77	0
+97	-77	0
+98	-77	0
+99	-77	0
+100	-77	0
+101	-77	0
+102	-77	0
+103	-77	0
+104	-77	0
+105	-77	0
+106	-77	0
+107	-77	0
+108	-77	0
+109	-77	0
+110	-77	0
+111	-77	0
+112	-77	0
+113	-77	0
+114	-77	0
+115	-77	0
+116	-77	0
+117	-77	0
+118	-77	0
+119	-77	0
+120	-77	0
+121	-77	0
+122	-77	0
+123	-77	0
+124	-77	0
+125	-77	0
+126	-77	0
+127	-77	0
+128	-77	0
+129	-77	0
+130	-77	0
+131	-77	0
+132	-77	0
+133	-77	0
+134	-77	0
+135	-77	0
+136	-77	0
+137	-77	0
+138	-77	0
+139	-77	0
+140	-77	0
+141	-77	0
+142	-77	0
+143	-77	0
+144	-77	0
+145	-77	0
+146	-77	0
+147	-77	0
+148	-77	0
+149	-77	0
+150	-77	0
+151	-77	0
+152	-77	0
+153	-77	0
+154	-77	0
+155	-77	0
+156	-77	0
+157	-77	0
+158	-77	0
+159	-77	0
+160	-77	0
+161	-77	0
+162	-77	0
+163	-77	0
+164	-77	0
+165	-77	0
+166	-77	0
+167	-77	0
+168	-77	0
+169	-77	0
+170	-77	0
+171	-77	0
+172	-77	0
+173	-77	0
+174	-77	0
+175	-77	0
+176	-77	0
+177	-77	0
+178	-77	0
+179	-77	0
+180	-77	0
+181	-77	0
+182	-77	0
+183	-77	0
+184	-77	0
+185	-77	0
+186	-77	0
+187	-77	0
+188	-77	0
+189	-77	0
+190	-77	0
+191	-77	0
+192	-77	0
+193	-77	0
+194	-77	0
+195	-77	0
+196	-77	0
+197	-77	0
+198	-77	0
+199	-77	0
+200	-77	0
+201	-77	0
+202	-77	0
+203	-77	0
+204	-77	0
+205	-77	0
+206	-77	0
+207	-77	0
+208	-77	0
+209	-77	0
+210	-77	0
+211	-77	0
+212	-77	0
+213	-77	0
+214	-77	0
+215	-77	0
+216	-77	0
+217	-77	0
+218	-77	0
+219	-77	0
+220	-77	0
+221	-77	0
+222	-77	0
+223	-77	0
+224	-77	0
+225	-77	0
+226	-77	0
+227	-77	0
+228	-77	0
+229	-77	0
+230	-77	0
+231	-77	0
+232	-77	0
+233	-77	0
+234	-77	0
+235	-77	0
+236	-77	0
+237	-77	0
+238	-77	0
+239	-77	0
+240	-77	0
+241	-77	0
+242	-77	0
+243	-77	0
+244	-77	0
+245	-77	0
+246	-77	0
+247	-77	0
+248	-77	0
+249	-77	0
+250	-77	0
+251	-77	0
+252	-77	0
+253	-77	0
+254	-77	0
+255	-77	0
+256	-77	0
+257	-77	0
+258	-77	0
+259	-77	0
+260	-77	0
+261	-77	0
+262	-77	0
+263	-77	0
+264	-77	0
+265	-77	0
+266	-77	0
+267	-77	0
+268	-77	0
+269	-77	0
+270	-77	0
+271	-77	0
+272	-77	0
+273	-77	0
+274	-77	0
+275	-77	0
+276	-77	0
+277	-77	0
+278	-77	0
+279	-77	0
+280	-77	0
+281	-77	0
+282	-77	0
+283	-77	0
+284	-77	0
+285	-77	0
+286	-77	0
+287	-77	0
+288	-77	0
+289	-77	0
+290	-77	0
+291	-77	0
+292	-77	0
+293	-77	0
+294	-77	0
+295	-77	0
+296	-77	0
+297	-77	0
+298	-77	0
+299	-77	0
+300	-77	0
+301	-77	0
+302	-77	0
+303	-77	0
+304	-77	0
+305	-77	0
+306	-77	0
+307	-77	0
+308	-77	0
+309	-77	0
+310	-77	0
+311	-77	0
+312	-77	0
+313	-77	0
+314	-77	0
+315	-77	0
+316	-77	0
+317	-77	0
+318	-77	0
+319	-77	0
+320	-77	0
+321	-77	0
+322	-77	0
+323	-77	0
+324	-77	0
+325	-77	0
+326	-77	0
+327	-77	0
+328	-77	0
+329	-77	0
+330	-77	0
+331	-77	0
+332	-77	0
+333	-77	0
+334	-77	0
+335	-77	0
+336	-77	0
+337	-77	0
+338	-77	0
+339	-77	0
+340	-77	0
+341	-77	0
+342	-77	0
+343	-77	0
+344	-77	0
+345	-77	0
+346	-77	0
+347	-77	0
+348	-77	0
+349	-77	0
+350	-77	0
+351	-77	0
+352	-77	0
+353	-77	0
+354	-77	0
+355	-77	0
+356	-77	0
+357	-77	0
+358	-77	0
+359	-77	0
+360	-77	0
+0	-76.5	0
+1	-76.5	0
+2	-76.5	0
+3	-76.5	0
+4	-76.5	0
+5	-76.5	0
+6	-76.5	0
+7	-76.5	0
+8	-76.5	0
+9	-76.5	0
+10	-76.5	0
+11	-76.5	0
+12	-76.5	0
+13	-76.5	0
+14	-76.5	0
+15	-76.5	0
+16	-76.5	0
+17	-76.5	0
+18	-76.5	0
+19	-76.5	0
+20	-76.5	0
+21	-76.5	0
+22	-76.5	0
+23	-76.5	0
+24	-76.5	0
+25	-76.5	0
+26	-76.5	0
+27	-76.5	0
+28	-76.5	0
+29	-76.5	0
+30	-76.5	0
+31	-76.5	0
+32	-76.5	0
+33	-76.5	0
+34	-76.5	0
+35	-76.5	0
+36	-76.5	0
+37	-76.5	0
+38	-76.5	0
+39	-76.5	0
+40	-76.5	0
+41	-76.5	0
+42	-76.5	0
+43	-76.5	0
+44	-76.5	0
+45	-76.5	0
+46	-76.5	0
+47	-76.5	0
+48	-76.5	0
+49	-76.5	0
+50	-76.5	0
+51	-76.5	0
+52	-76.5	0
+53	-76.5	0
+54	-76.5	0
+55	-76.5	0
+56	-76.5	0
+57	-76.5	0
+58	-76.5	0
+59	-76.5	0
+60	-76.5	0
+61	-76.5	0
+62	-76.5	0
+63	-76.5	0
+64	-76.5	0
+65	-76.5	0
+66	-76.5	0
+67	-76.5	0
+68	-76.5	0
+69	-76.5	0
+70	-76.5	0
+71	-76.5	0
+72	-76.5	0
+73	-76.5	0
+74	-76.5	0
+75	-76.5	0
+76	-76.5	0
+77	-76.5	0
+78	-76.5	0
+79	-76.5	0
+80	-76.5	0
+81	-76.5	0
+82	-76.5	0
+83	-76.5	0
+84	-76.5	0
+85	-76.5	0
+86	-76.5	0
+87	-76.5	0
+88	-76.5	0
+89	-76.5	0
+90	-76.5	0
+91	-76.5	0
+92	-76.5	0
+93	-76.5	0
+94	-76.5	0
+95	-76.5	0
+96	-76.5	0
+97	-76.5	0
+98	-76.5	0
+99	-76.5	0
+100	-76.5	0
+101	-76.5	0
+102	-76.5	0
+103	-76.5	0
+104	-76.5	0
+105	-76.5	0
+106	-76.5	0
+107	-76.5	0
+108	-76.5	0
+109	-76.5	0
+110	-76.5	0
+111	-76.5	0
+112	-76.5	0
+113	-76.5	0
+114	-76.5	0
+115	-76.5	0
+116	-76.5	0
+117	-76.5	0
+118	-76.5	0
+119	-76.5	0
+120	-76.5	0
+121	-76.5	0
+122	-76.5	0
+123	-76.5	0
+124	-76.5	0
+125	-76.5	0
+126	-76.5	0
+127	-76.5	0
+128	-76.5	0
+129	-76.5	0
+130	-76.5	0
+131	-76.5	0
+132	-76.5	0
+133	-76.5	0
+134	-76.5	0
+135	-76.5	0
+136	-76.5	0
+137	-76.5	0
+138	-76.5	0
+139	-76.5	0
+140	-76.5	0
+141	-76.5	0
+142	-76.5	0
+143	-76.5	0
+144	-76.5	0
+145	-76.5	0
+146	-76.5	0
+147	-76.5	0
+148	-76.5	0
+149	-76.5	0
+150	-76.5	0
+151	-76.5	0
+152	-76.5	0
+153	-76.5	0
+154	-76.5	0
+155	-76.5	0
+156	-76.5	0
+157	-76.5	0
+158	-76.5	0
+159	-76.5	0
+160	-76.5	0
+161	-76.5	0
+162	-76.5	0
+163	-76.5	0
+164	-76.5	0
+165	-76.5	0
+166	-76.5	0
+167	-76.5	0
+168	-76.5	0
+169	-76.5	0
+170	-76.5	0
+171	-76.5	0
+172	-76.5	0
+173	-76.5	0
+174	-76.5	0
+175	-76.5	0
+176	-76.5	0
+177	-76.5	0
+178	-76.5	0
+179	-76.5	0
+180	-76.5	0
+181	-76.5	0
+182	-76.5	0
+183	-76.5	0
+184	-76.5	0
+185	-76.5	0
+186	-76.5	0
+187	-76.5	0
+188	-76.5	0
+189	-76.5	0
+190	-76.5	0
+191	-76.5	0
+192	-76.5	0
+193	-76.5	0
+194	-76.5	0
+195	-76.5	0
+196	-76.5	0
+197	-76.5	0
+198	-76.5	0
+199	-76.5	0
+200	-76.5	0
+201	-76.5	0
+202	-76.5	0
+203	-76.5	0
+204	-76.5	0
+205	-76.5	0
+206	-76.5	0
+207	-76.5	0
+208	-76.5	0
+209	-76.5	0
+210	-76.5	0
+211	-76.5	0
+212	-76.5	0
+213	-76.5	0
+214	-76.5	0
+215	-76.5	0
+216	-76.5	0
+217	-76.5	0
+218	-76.5	0
+219	-76.5	0
+220	-76.5	0
+221	-76.5	0
+222	-76.5	0
+223	-76.5	0
+224	-76.5	0
+225	-76.5	0
+226	-76.5	0
+227	-76.5	0
+228	-76.5	0
+229	-76.5	0
+230	-76.5	0
+231	-76.5	0
+232	-76.5	0
+233	-76.5	0
+234	-76.5	0
+235	-76.5	0
+236	-76.5	0
+237	-76.5	0
+238	-76.5	0
+239	-76.5	0
+240	-76.5	0
+241	-76.5	0
+242	-76.5	0
+243	-76.5	0
+244	-76.5	0
+245	-76.5	0
+246	-76.5	0
+247	-76.5	0
+248	-76.5	0
+249	-76.5	0
+250	-76.5	0
+251	-76.5	0
+252	-76.5	0
+253	-76.5	0
+254	-76.5	0
+255	-76.5	0
+256	-76.5	0
+257	-76.5	0
+258	-76.5	0
+259	-76.5	0
+260	-76.5	0
+261	-76.5	0
+262	-76.5	0
+263	-76.5	0
+264	-76.5	0
+265	-76.5	0
+266	-76.5	0
+267	-76.5	0
+268	-76.5	0
+269	-76.5	0
+270	-76.5	0
+271	-76.5	0
+272	-76.5	0
+273	-76.5	0
+274	-76.5	0
+275	-76.5	0
+276	-76.5	0
+277	-76.5	0
+278	-76.5	0
+279	-76.5	0
+280	-76.5	0
+281	-76.5	0
+282	-76.5	0
+283	-76.5	0
+284	-76.5	0
+285	-76.5	0
+286	-76.5	0
+287	-76.5	0
+288	-76.5	0
+289	-76.5	0
+290	-76.5	0
+291	-76.5	0
+292	-76.5	0
+293	-76.5	0
+294	-76.5	0
+295	-76.5	0
+296	-76.5	0
+297	-76.5	0
+298	-76.5	0
+299	-76.5	0
+300	-76.5	0
+301	-76.5	0
+302	-76.5	0
+303	-76.5	0
+304	-76.5	0
+305	-76.5	0
+306	-76.5	0
+307	-76.5	0
+308	-76.5	0
+309	-76.5	0
+310	-76.5	0
+311	-76.5	0
+312	-76.5	0
+313	-76.5	0
+314	-76.5	0
+315	-76.5	0
+316	-76.5	0
+317	-76.5	0
+318	-76.5	0
+319	-76.5	0
+320	-76.5	0
+321	-76.5	0
+322	-76.5	0
+323	-76.5	0
+324	-76.5	0
+325	-76.5	0
+326	-76.5	0
+327	-76.5	0
+328	-76.5	0
+329	-76.5	0
+330	-76.5	0
+331	-76.5	0
+332	-76.5	0
+333	-76.5	0
+334	-76.5	0
+335	-76.5	0
+336	-76.5	0
+337	-76.5	0
+338	-76.5	0
+339	-76.5	0
+340	-76.5	0
+341	-76.5	0
+342	-76.5	0
+343	-76.5	0
+344	-76.5	0
+345	-76.5	0
+346	-76.5	0
+347	-76.5	0
+348	-76.5	0
+349	-76.5	0
+350	-76.5	0
+351	-76.5	0
+352	-76.5	0
+353	-76.5	0
+354	-76.5	0
+355	-76.5	0
+356	-76.5	0
+357	-76.5	0
+358	-76.5	0
+359	-76.5	0
+360	-76.5	0
+0	-76	0
+1	-76	0
+2	-76	0
+3	-76	0
+4	-76	0
+5	-76	0
+6	-76	0
+7	-76	0
+8	-76	0
+9	-76	0
+10	-76	0
+11	-76	0
+12	-76	0
+13	-76	0
+14	-76	0
+15	-76	0
+16	-76	0
+17	-76	0
+18	-76	0
+19	-76	0
+20	-76	0
+21	-76	0
+22	-76	0
+23	-76	0
+24	-76	0
+25	-76	0
+26	-76	0
+27	-76	0
+28	-76	0
+29	-76	0
+30	-76	0
+31	-76	0
+32	-76	0
+33	-76	0
+34	-76	0
+35	-76	0
+36	-76	0
+37	-76	0
+38	-76	0
+39	-76	0
+40	-76	0
+41	-76	0
+42	-76	0
+43	-76	0
+44	-76	0
+45	-76	0
+46	-76	0
+47	-76	0
+48	-76	0
+49	-76	0
+50	-76	0
+51	-76	0
+52	-76	0
+53	-76	0
+54	-76	0
+55	-76	0
+56	-76	0
+57	-76	0
+58	-76	0
+59	-76	0
+60	-76	0
+61	-76	0
+62	-76	0
+63	-76	0
+64	-76	0
+65	-76	0
+66	-76	0
+67	-76	0
+68	-76	0
+69	-76	0
+70	-76	0
+71	-76	0
+72	-76	0
+73	-76	0
+74	-76	0
+75	-76	0
+76	-76	0
+77	-76	0
+78	-76	0
+79	-76	0
+80	-76	0
+81	-76	0
+82	-76	0
+83	-76	0
+84	-76	0
+85	-76	0
+86	-76	0
+87	-76	0
+88	-76	0
+89	-76	0
+90	-76	0
+91	-76	0
+92	-76	0
+93	-76	0
+94	-76	0
+95	-76	0
+96	-76	0
+97	-76	0
+98	-76	0
+99	-76	0
+100	-76	0
+101	-76	0
+102	-76	0
+103	-76	0
+104	-76	0
+105	-76	0
+106	-76	0
+107	-76	0
+108	-76	0
+109	-76	0
+110	-76	0
+111	-76	0
+112	-76	0
+113	-76	0
+114	-76	0
+115	-76	0
+116	-76	0
+117	-76	0
+118	-76	0
+119	-76	0
+120	-76	0
+121	-76	0
+122	-76	0
+123	-76	0
+124	-76	0
+125	-76	0
+126	-76	0
+127	-76	0
+128	-76	0
+129	-76	0
+130	-76	0
+131	-76	0
+132	-76	0
+133	-76	0
+134	-76	0
+135	-76	0
+136	-76	0
+137	-76	0
+138	-76	0
+139	-76	0
+140	-76	0
+141	-76	0
+142	-76	0
+143	-76	0
+144	-76	0
+145	-76	0
+146	-76	0
+147	-76	0
+148	-76	0
+149	-76	0
+150	-76	0
+151	-76	0
+152	-76	0
+153	-76	0
+154	-76	0
+155	-76	0
+156	-76	0
+157	-76	0
+158	-76	0
+159	-76	0
+160	-76	0
+161	-76	0
+162	-76	0
+163	-76	0
+164	-76	0
+165	-76	0
+166	-76	0
+167	-76	0
+168	-76	0
+169	-76	0
+170	-76	0
+171	-76	0
+172	-76	0
+173	-76	0
+174	-76	0
+175	-76	0
+176	-76	0
+177	-76	0
+178	-76	0
+179	-76	0
+180	-76	0
+181	-76	0
+182	-76	0
+183	-76	0
+184	-76	0
+185	-76	0
+186	-76	0
+187	-76	0
+188	-76	0
+189	-76	0
+190	-76	0
+191	-76	0
+192	-76	0
+193	-76	0
+194	-76	0
+195	-76	0
+196	-76	0
+197	-76	0
+198	-76	0
+199	-76	0
+200	-76	0
+201	-76	0
+202	-76	0
+203	-76	0
+204	-76	0
+205	-76	0
+206	-76	0
+207	-76	0
+208	-76	0
+209	-76	0
+210	-76	0
+211	-76	0
+212	-76	0
+213	-76	0
+214	-76	0
+215	-76	0
+216	-76	0
+217	-76	0
+218	-76	0
+219	-76	0
+220	-76	0
+221	-76	0
+222	-76	0
+223	-76	0
+224	-76	0
+225	-76	0
+226	-76	0
+227	-76	0
+228	-76	0
+229	-76	0
+230	-76	0
+231	-76	0
+232	-76	0
+233	-76	0
+234	-76	0
+235	-76	0
+236	-76	0
+237	-76	0
+238	-76	0
+239	-76	0
+240	-76	0
+241	-76	0
+242	-76	0
+243	-76	0
+244	-76	0
+245	-76	0
+246	-76	0
+247	-76	0
+248	-76	0
+249	-76	0
+250	-76	0
+251	-76	0
+252	-76	0
+253	-76	0
+254	-76	0
+255	-76	0
+256	-76	0
+257	-76	0
+258	-76	0
+259	-76	0
+260	-76	0
+261	-76	0
+262	-76	0
+263	-76	0
+264	-76	0
+265	-76	0
+266	-76	0
+267	-76	0
+268	-76	0
+269	-76	0
+270	-76	0
+271	-76	0
+272	-76	0
+273	-76	0
+274	-76	0
+275	-76	0
+276	-76	0
+277	-76	0
+278	-76	0
+279	-76	0
+280	-76	0
+281	-76	0
+282	-76	0
+283	-76	0
+284	-76	0
+285	-76	0
+286	-76	0
+287	-76	0
+288	-76	0
+289	-76	0
+290	-76	0
+291	-76	0
+292	-76	0
+293	-76	0
+294	-76	0
+295	-76	0
+296	-76	0
+297	-76	0
+298	-76	0
+299	-76	0
+300	-76	0
+301	-76	0
+302	-76	0
+303	-76	0
+304	-76	0
+305	-76	0
+306	-76	0
+307	-76	0
+308	-76	0
+309	-76	0
+310	-76	0
+311	-76	0
+312	-76	0
+313	-76	0
+314	-76	0
+315	-76	0
+316	-76	0
+317	-76	0
+318	-76	0
+319	-76	0
+320	-76	0
+321	-76	0
+322	-76	0
+323	-76	0
+324	-76	0
+325	-76	0
+326	-76	0
+327	-76	0
+328	-76	0
+329	-76	0
+330	-76	0
+331	-76	0
+332	-76	0
+333	-76	0
+334	-76	0
+335	-76	0
+336	-76	0
+337	-76	0
+338	-76	0
+339	-76	0
+340	-76	0
+341	-76	0
+342	-76	0
+343	-76	0
+344	-76	0
+345	-76	0
+346	-76	0
+347	-76	0
+348	-76	0
+349	-76	0
+350	-76	0
+351	-76	0
+352	-76	0
+353	-76	0
+354	-76	0
+355	-76	0
+356	-76	0
+357	-76	0
+358	-76	0
+359	-76	0
+360	-76	0
+0	-75.5	0
+1	-75.5	0
+2	-75.5	0
+3	-75.5	0
+4	-75.5	0
+5	-75.5	0
+6	-75.5	0
+7	-75.5	0
+8	-75.5	0
+9	-75.5	0
+10	-75.5	0
+11	-75.5	0
+12	-75.5	0
+13	-75.5	0
+14	-75.5	0
+15	-75.5	0
+16	-75.5	0
+17	-75.5	0
+18	-75.5	0
+19	-75.5	0
+20	-75.5	0
+21	-75.5	0
+22	-75.5	0
+23	-75.5	0
+24	-75.5	0
+25	-75.5	0
+26	-75.5	0
+27	-75.5	0
+28	-75.5	0
+29	-75.5	0
+30	-75.5	0
+31	-75.5	0
+32	-75.5	0
+33	-75.5	0
+34	-75.5	0
+35	-75.5	0
+36	-75.5	0
+37	-75.5	0
+38	-75.5	0
+39	-75.5	0
+40	-75.5	0
+41	-75.5	0
+42	-75.5	0
+43	-75.5	0
+44	-75.5	0
+45	-75.5	0
+46	-75.5	0
+47	-75.5	0
+48	-75.5	0
+49	-75.5	0
+50	-75.5	0
+51	-75.5	0
+52	-75.5	0
+53	-75.5	0
+54	-75.5	0
+55	-75.5	0
+56	-75.5	0
+57	-75.5	0
+58	-75.5	0
+59	-75.5	0
+60	-75.5	0
+61	-75.5	0
+62	-75.5	0
+63	-75.5	0
+64	-75.5	0
+65	-75.5	0
+66	-75.5	0
+67	-75.5	0
+68	-75.5	0
+69	-75.5	0
+70	-75.5	0
+71	-75.5	0
+72	-75.5	0
+73	-75.5	0
+74	-75.5	0
+75	-75.5	0
+76	-75.5	0
+77	-75.5	0
+78	-75.5	0
+79	-75.5	0
+80	-75.5	0
+81	-75.5	0
+82	-75.5	0
+83	-75.5	0
+84	-75.5	0
+85	-75.5	0
+86	-75.5	0
+87	-75.5	0
+88	-75.5	0
+89	-75.5	0
+90	-75.5	0
+91	-75.5	0
+92	-75.5	0
+93	-75.5	0
+94	-75.5	0
+95	-75.5	0
+96	-75.5	0
+97	-75.5	0
+98	-75.5	0
+99	-75.5	0
+100	-75.5	0
+101	-75.5	0
+102	-75.5	0
+103	-75.5	0
+104	-75.5	0
+105	-75.5	0
+106	-75.5	0
+107	-75.5	0
+108	-75.5	0
+109	-75.5	0
+110	-75.5	0
+111	-75.5	0
+112	-75.5	0
+113	-75.5	0
+114	-75.5	0
+115	-75.5	0
+116	-75.5	0
+117	-75.5	0
+118	-75.5	0
+119	-75.5	0
+120	-75.5	0
+121	-75.5	0
+122	-75.5	0
+123	-75.5	0
+124	-75.5	0
+125	-75.5	0
+126	-75.5	0
+127	-75.5	0
+128	-75.5	0
+129	-75.5	0
+130	-75.5	0
+131	-75.5	0
+132	-75.5	0
+133	-75.5	0
+134	-75.5	0
+135	-75.5	0
+136	-75.5	0
+137	-75.5	0
+138	-75.5	0
+139	-75.5	0
+140	-75.5	0
+141	-75.5	0
+142	-75.5	0
+143	-75.5	0
+144	-75.5	0
+145	-75.5	0
+146	-75.5	0
+147	-75.5	0
+148	-75.5	0
+149	-75.5	0
+150	-75.5	0
+151	-75.5	0
+152	-75.5	0
+153	-75.5	0
+154	-75.5	0
+155	-75.5	0
+156	-75.5	0
+157	-75.5	0
+158	-75.5	0
+159	-75.5	0
+160	-75.5	0
+161	-75.5	0
+162	-75.5	0
+163	-75.5	0
+164	-75.5	0
+165	-75.5	0
+166	-75.5	0
+167	-75.5	0
+168	-75.5	0
+169	-75.5	0
+170	-75.5	0
+171	-75.5	0
+172	-75.5	0
+173	-75.5	0
+174	-75.5	0
+175	-75.5	0
+176	-75.5	0
+177	-75.5	0
+178	-75.5	0
+179	-75.5	0
+180	-75.5	0
+181	-75.5	0
+182	-75.5	0
+183	-75.5	0
+184	-75.5	0
+185	-75.5	0
+186	-75.5	0
+187	-75.5	0
+188	-75.5	0
+189	-75.5	0
+190	-75.5	0
+191	-75.5	0
+192	-75.5	0
+193	-75.5	0
+194	-75.5	0
+195	-75.5	0
+196	-75.5	0
+197	-75.5	0
+198	-75.5	0
+199	-75.5	0
+200	-75.5	0
+201	-75.5	0
+202	-75.5	0
+203	-75.5	0
+204	-75.5	0
+205	-75.5	0
+206	-75.5	0
+207	-75.5	0
+208	-75.5	0
+209	-75.5	0
+210	-75.5	0
+211	-75.5	0
+212	-75.5	0
+213	-75.5	0
+214	-75.5	0
+215	-75.5	0
+216	-75.5	0
+217	-75.5	0
+218	-75.5	0
+219	-75.5	0
+220	-75.5	0
+221	-75.5	0
+222	-75.5	0
+223	-75.5	0
+224	-75.5	0
+225	-75.5	0
+226	-75.5	0
+227	-75.5	0
+228	-75.5	0
+229	-75.5	0
+230	-75.5	0
+231	-75.5	0
+232	-75.5	0
+233	-75.5	0
+234	-75.5	0
+235	-75.5	0
+236	-75.5	0
+237	-75.5	0
+238	-75.5	0
+239	-75.5	0
+240	-75.5	0
+241	-75.5	0
+242	-75.5	0
+243	-75.5	0
+244	-75.5	0
+245	-75.5	0
+246	-75.5	0
+247	-75.5	0
+248	-75.5	0
+249	-75.5	0
+250	-75.5	0
+251	-75.5	0
+252	-75.5	0
+253	-75.5	0
+254	-75.5	0
+255	-75.5	0
+256	-75.5	0
+257	-75.5	0
+258	-75.5	0
+259	-75.5	0
+260	-75.5	0
+261	-75.5	0
+262	-75.5	0
+263	-75.5	0
+264	-75.5	0
+265	-75.5	0
+266	-75.5	0
+267	-75.5	0
+268	-75.5	0
+269	-75.5	0
+270	-75.5	0
+271	-75.5	0
+272	-75.5	0
+273	-75.5	0
+274	-75.5	0
+275	-75.5	0
+276	-75.5	0
+277	-75.5	0
+278	-75.5	0
+279	-75.5	0
+280	-75.5	0
+281	-75.5	0
+282	-75.5	0
+283	-75.5	0
+284	-75.5	0
+285	-75.5	0
+286	-75.5	0
+287	-75.5	0
+288	-75.5	0
+289	-75.5	0
+290	-75.5	0
+291	-75.5	0
+292	-75.5	0
+293	-75.5	0
+294	-75.5	0
+295	-75.5	0
+296	-75.5	0
+297	-75.5	0
+298	-75.5	0
+299	-75.5	0
+300	-75.5	0
+301	-75.5	0
+302	-75.5	0
+303	-75.5	0
+304	-75.5	0
+305	-75.5	0
+306	-75.5	0
+307	-75.5	0
+308	-75.5	0
+309	-75.5	0
+310	-75.5	0
+311	-75.5	0
+312	-75.5	0
+313	-75.5	0
+314	-75.5	0
+315	-75.5	0
+316	-75.5	0
+317	-75.5	0
+318	-75.5	0
+319	-75.5	0
+320	-75.5	0
+321	-75.5	0
+322	-75.5	0
+323	-75.5	0
+324	-75.5	0
+325	-75.5	0
+326	-75.5	0
+327	-75.5	0
+328	-75.5	0
+329	-75.5	0
+330	-75.5	0
+331	-75.5	0
+332	-75.5	0
+333	-75.5	0
+334	-75.5	0
+335	-75.5	0
+336	-75.5	0
+337	-75.5	0
+338	-75.5	0
+339	-75.5	0
+340	-75.5	0
+341	-75.5	0
+342	-75.5	0
+343	-75.5	0
+344	-75.5	0
+345	-75.5	0
+346	-75.5	0
+347	-75.5	0
+348	-75.5	0
+349	-75.5	0
+350	-75.5	0
+351	-75.5	0
+352	-75.5	0
+353	-75.5	0
+354	-75.5	0
+355	-75.5	0
+356	-75.5	0
+357	-75.5	0
+358	-75.5	0
+359	-75.5	0
+360	-75.5	0
+0	-75	0
+1	-75	0
+2	-75	0
+3	-75	0
+4	-75	0
+5	-75	0
+6	-75	0
+7	-75	0
+8	-75	0
+9	-75	0
+10	-75	0
+11	-75	0
+12	-75	0
+13	-75	0
+14	-75	0
+15	-75	0
+16	-75	0
+17	-75	0
+18	-75	0
+19	-75	0
+20	-75	0
+21	-75	0
+22	-75	0
+23	-75	0
+24	-75	0
+25	-75	0
+26	-75	0
+27	-75	0
+28	-75	0
+29	-75	0
+30	-75	0
+31	-75	0
+32	-75	0
+33	-75	0
+34	-75	0
+35	-75	0
+36	-75	0
+37	-75	0
+38	-75	0
+39	-75	0
+40	-75	0
+41	-75	0
+42	-75	0
+43	-75	0
+44	-75	0
+45	-75	0
+46	-75	0
+47	-75	0
+48	-75	0
+49	-75	0
+50	-75	0
+51	-75	0
+52	-75	0
+53	-75	0
+54	-75	0
+55	-75	0
+56	-75	0
+57	-75	0
+58	-75	0
+59	-75	0
+60	-75	0
+61	-75	0
+62	-75	0
+63	-75	0
+64	-75	0
+65	-75	0
+66	-75	0
+67	-75	0
+68	-75	0
+69	-75	0
+70	-75	0
+71	-75	0
+72	-75	0
+73	-75	0
+74	-75	0
+75	-75	0
+76	-75	0
+77	-75	0
+78	-75	0
+79	-75	0
+80	-75	0
+81	-75	0
+82	-75	0
+83	-75	0
+84	-75	0
+85	-75	0
+86	-75	0
+87	-75	0
+88	-75	0
+89	-75	0
+90	-75	0
+91	-75	0
+92	-75	0
+93	-75	0
+94	-75	0
+95	-75	0
+96	-75	0
+97	-75	0
+98	-75	0
+99	-75	0
+100	-75	0
+101	-75	0
+102	-75	0
+103	-75	0
+104	-75	0
+105	-75	0
+106	-75	0
+107	-75	0
+108	-75	0
+109	-75	0
+110	-75	0
+111	-75	0
+112	-75	0
+113	-75	0
+114	-75	0
+115	-75	0
+116	-75	0
+117	-75	0
+118	-75	0
+119	-75	0
+120	-75	0
+121	-75	0
+122	-75	0
+123	-75	0
+124	-75	0
+125	-75	0
+126	-75	0
+127	-75	0
+128	-75	0
+129	-75	0
+130	-75	0
+131	-75	0
+132	-75	0
+133	-75	0
+134	-75	0
+135	-75	0
+136	-75	0
+137	-75	0
+138	-75	0
+139	-75	0
+140	-75	0
+141	-75	0
+142	-75	0
+143	-75	0
+144	-75	0
+145	-75	0
+146	-75	0
+147	-75	0
+148	-75	0
+149	-75	0
+150	-75	0
+151	-75	0
+152	-75	0
+153	-75	0
+154	-75	0
+155	-75	0
+156	-75	0
+157	-75	0
+158	-75	0
+159	-75	0
+160	-75	0
+161	-75	0
+162	-75	0
+163	-75	0
+164	-75	0
+165	-75	0
+166	-75	0
+167	-75	0
+168	-75	0
+169	-75	0
+170	-75	0
+171	-75	0
+172	-75	0
+173	-75	0
+174	-75	0
+175	-75	0
+176	-75	0
+177	-75	0
+178	-75	0
+179	-75	0
+180	-75	0
+181	-75	0
+182	-75	0
+183	-75	0
+184	-75	0
+185	-75	0
+186	-75	0
+187	-75	0
+188	-75	0
+189	-75	0
+190	-75	0
+191	-75	0
+192	-75	0
+193	-75	0
+194	-75	0
+195	-75	0
+196	-75	0
+197	-75	0
+198	-75	0
+199	-75	0
+200	-75	0
+201	-75	0
+202	-75	0
+203	-75	0
+204	-75	0
+205	-75	0
+206	-75	0
+207	-75	0
+208	-75	0
+209	-75	0
+210	-75	0
+211	-75	0
+212	-75	0
+213	-75	0
+214	-75	0
+215	-75	0
+216	-75	0
+217	-75	0
+218	-75	0
+219	-75	0
+220	-75	0
+221	-75	0
+222	-75	0
+223	-75	0
+224	-75	0
+225	-75	0
+226	-75	0
+227	-75	0
+228	-75	0
+229	-75	0
+230	-75	0
+231	-75	0
+232	-75	0
+233	-75	0
+234	-75	0
+235	-75	0
+236	-75	0
+237	-75	0
+238	-75	0
+239	-75	0
+240	-75	0
+241	-75	0
+242	-75	0
+243	-75	0
+244	-75	0
+245	-75	0
+246	-75	0
+247	-75	0
+248	-75	0
+249	-75	0
+250	-75	0
+251	-75	0
+252	-75	0
+253	-75	0
+254	-75	0
+255	-75	0
+256	-75	0
+257	-75	0
+258	-75	0
+259	-75	0
+260	-75	0
+261	-75	0
+262	-75	0
+263	-75	0
+264	-75	0
+265	-75	0
+266	-75	0
+267	-75	0
+268	-75	0
+269	-75	0
+270	-75	0
+271	-75	0
+272	-75	0
+273	-75	0
+274	-75	0
+275	-75	0
+276	-75	0
+277	-75	0
+278	-75	0
+279	-75	0
+280	-75	0
+281	-75	0
+282	-75	0
+283	-75	0
+284	-75	0
+285	-75	0
+286	-75	0
+287	-75	0
+288	-75	0
+289	-75	0
+290	-75	0
+291	-75	0
+292	-75	0
+293	-75	0
+294	-75	0
+295	-75	0
+296	-75	0
+297	-75	0
+298	-75	0
+299	-75	0
+300	-75	0
+301	-75	0
+302	-75	0
+303	-75	0
+304	-75	0
+305	-75	0
+306	-75	0
+307	-75	0
+308	-75	0
+309	-75	0
+310	-75	0
+311	-75	0
+312	-75	0
+313	-75	0
+314	-75	0
+315	-75	0
+316	-75	0
+317	-75	0
+318	-75	0
+319	-75	0
+320	-75	0
+321	-75	0
+322	-75	0
+323	-75	0
+324	-75	0
+325	-75	0
+326	-75	0
+327	-75	0
+328	-75	0
+329	-75	0
+330	-75	0
+331	-75	0
+332	-75	0
+333	-75	0
+334	-75	0
+335	-75	0
+336	-75	0
+337	-75	0
+338	-75	0
+339	-75	0
+340	-75	0
+341	-75	0
+342	-75	0
+343	-75	0
+344	-75	0
+345	-75	0
+346	-75	0
+347	-75	0
+348	-75	0
+349	-75	0
+350	-75	0
+351	-75	0
+352	-75	0
+353	-75	0
+354	-75	0
+355	-75	0
+356	-75	0
+357	-75	0
+358	-75	0
+359	-75	0
+360	-75	0
+0	-74.5	0
+1	-74.5	0
+2	-74.5	0
+3	-74.5	0
+4	-74.5	0
+5	-74.5	0
+6	-74.5	0
+7	-74.5	0
+8	-74.5	0
+9	-74.5	0
+10	-74.5	0
+11	-74.5	0
+12	-74.5	0
+13	-74.5	0
+14	-74.5	0
+15	-74.5	0
+16	-74.5	0
+17	-74.5	0
+18	-74.5	0
+19	-74.5	0
+20	-74.5	0
+21	-74.5	0
+22	-74.5	0
+23	-74.5	0
+24	-74.5	0
+25	-74.5	0
+26	-74.5	0
+27	-74.5	0
+28	-74.5	0
+29	-74.5	0
+30	-74.5	0
+31	-74.5	0
+32	-74.5	0
+33	-74.5	0
+34	-74.5	0
+35	-74.5	0
+36	-74.5	0
+37	-74.5	0
+38	-74.5	0
+39	-74.5	0
+40	-74.5	0
+41	-74.5	0
+42	-74.5	0
+43	-74.5	0
+44	-74.5	0
+45	-74.5	0
+46	-74.5	0
+47	-74.5	0
+48	-74.5	0
+49	-74.5	0
+50	-74.5	0
+51	-74.5	0
+52	-74.5	0
+53	-74.5	0
+54	-74.5	0
+55	-74.5	0
+56	-74.5	0
+57	-74.5	0
+58	-74.5	0
+59	-74.5	0
+60	-74.5	0
+61	-74.5	0
+62	-74.5	0
+63	-74.5	0
+64	-74.5	0
+65	-74.5	0
+66	-74.5	0
+67	-74.5	0
+68	-74.5	0
+69	-74.5	0
+70	-74.5	0
+71	-74.5	0
+72	-74.5	0
+73	-74.5	0
+74	-74.5	0
+75	-74.5	0
+76	-74.5	0
+77	-74.5	0
+78	-74.5	0
+79	-74.5	0
+80	-74.5	0
+81	-74.5	0
+82	-74.5	0
+83	-74.5	0
+84	-74.5	0
+85	-74.5	0
+86	-74.5	0
+87	-74.5	0
+88	-74.5	0
+89	-74.5	0
+90	-74.5	0
+91	-74.5	0
+92	-74.5	0
+93	-74.5	0
+94	-74.5	0
+95	-74.5	0
+96	-74.5	0
+97	-74.5	0
+98	-74.5	0
+99	-74.5	0
+100	-74.5	0
+101	-74.5	0
+102	-74.5	0
+103	-74.5	0
+104	-74.5	0
+105	-74.5	0
+106	-74.5	0
+107	-74.5	0
+108	-74.5	0
+109	-74.5	0
+110	-74.5	0
+111	-74.5	0
+112	-74.5	0
+113	-74.5	0
+114	-74.5	0
+115	-74.5	0
+116	-74.5	0
+117	-74.5	0
+118	-74.5	0
+119	-74.5	0
+120	-74.5	0
+121	-74.5	0
+122	-74.5	0
+123	-74.5	0
+124	-74.5	0
+125	-74.5	0
+126	-74.5	0
+127	-74.5	0
+128	-74.5	0
+129	-74.5	0
+130	-74.5	0
+131	-74.5	0
+132	-74.5	0
+133	-74.5	0
+134	-74.5	0
+135	-74.5	0
+136	-74.5	0
+137	-74.5	0
+138	-74.5	0
+139	-74.5	0
+140	-74.5	0
+141	-74.5	0
+142	-74.5	0
+143	-74.5	0
+144	-74.5	0
+145	-74.5	0
+146	-74.5	0
+147	-74.5	0
+148	-74.5	0
+149	-74.5	0
+150	-74.5	0
+151	-74.5	0
+152	-74.5	0
+153	-74.5	0
+154	-74.5	0
+155	-74.5	0
+156	-74.5	0
+157	-74.5	0
+158	-74.5	0
+159	-74.5	0
+160	-74.5	0
+161	-74.5	0
+162	-74.5	0
+163	-74.5	0
+164	-74.5	0
+165	-74.5	0
+166	-74.5	0
+167	-74.5	0
+168	-74.5	0
+169	-74.5	0
+170	-74.5	0
+171	-74.5	0
+172	-74.5	0
+173	-74.5	0
+174	-74.5	0
+175	-74.5	0
+176	-74.5	0
+177	-74.5	0
+178	-74.5	0
+179	-74.5	0
+180	-74.5	0
+181	-74.5	0
+182	-74.5	0
+183	-74.5	0
+184	-74.5	0
+185	-74.5	0
+186	-74.5	0
+187	-74.5	0
+188	-74.5	0
+189	-74.5	0
+190	-74.5	0
+191	-74.5	0
+192	-74.5	0
+193	-74.5	0
+194	-74.5	0
+195	-74.5	0
+196	-74.5	0
+197	-74.5	0
+198	-74.5	0
+199	-74.5	0
+200	-74.5	0
+201	-74.5	0
+202	-74.5	0
+203	-74.5	0
+204	-74.5	0
+205	-74.5	0
+206	-74.5	0
+207	-74.5	0
+208	-74.5	0
+209	-74.5	0
+210	-74.5	0
+211	-74.5	0
+212	-74.5	0
+213	-74.5	0
+214	-74.5	0
+215	-74.5	0
+216	-74.5	0
+217	-74.5	0
+218	-74.5	0
+219	-74.5	0
+220	-74.5	0
+221	-74.5	0
+222	-74.5	0
+223	-74.5	0
+224	-74.5	0
+225	-74.5	0
+226	-74.5	0
+227	-74.5	0
+228	-74.5	0
+229	-74.5	0
+230	-74.5	0
+231	-74.5	0
+232	-74.5	0
+233	-74.5	0
+234	-74.5	0
+235	-74.5	0
+236	-74.5	0
+237	-74.5	0
+238	-74.5	0
+239	-74.5	0
+240	-74.5	0
+241	-74.5	0
+242	-74.5	0
+243	-74.5	0
+244	-74.5	0
+245	-74.5	0
+246	-74.5	0
+247	-74.5	0
+248	-74.5	0
+249	-74.5	0
+250	-74.5	0
+251	-74.5	0
+252	-74.5	0
+253	-74.5	0
+254	-74.5	0
+255	-74.5	0
+256	-74.5	0
+257	-74.5	0
+258	-74.5	0
+259	-74.5	0
+260	-74.5	0
+261	-74.5	0
+262	-74.5	0
+263	-74.5	0
+264	-74.5	0
+265	-74.5	0
+266	-74.5	0
+267	-74.5	0
+268	-74.5	0
+269	-74.5	0
+270	-74.5	0
+271	-74.5	0
+272	-74.5	0
+273	-74.5	0
+274	-74.5	0
+275	-74.5	0
+276	-74.5	0
+277	-74.5	0
+278	-74.5	0
+279	-74.5	0
+280	-74.5	0
+281	-74.5	0
+282	-74.5	0
+283	-74.5	0
+284	-74.5	0
+285	-74.5	0
+286	-74.5	0
+287	-74.5	0
+288	-74.5	0
+289	-74.5	0
+290	-74.5	0
+291	-74.5	0
+292	-74.5	0
+293	-74.5	0
+294	-74.5	0
+295	-74.5	0
+296	-74.5	0
+297	-74.5	0
+298	-74.5	0
+299	-74.5	0
+300	-74.5	0
+301	-74.5	0
+302	-74.5	0
+303	-74.5	0
+304	-74.5	0
+305	-74.5	0
+306	-74.5	0
+307	-74.5	0
+308	-74.5	0
+309	-74.5	0
+310	-74.5	0
+311	-74.5	0
+312	-74.5	0
+313	-74.5	0
+314	-74.5	0
+315	-74.5	0
+316	-74.5	0
+317	-74.5	0
+318	-74.5	0
+319	-74.5	0
+320	-74.5	0
+321	-74.5	0
+322	-74.5	0
+323	-74.5	0
+324	-74.5	0
+325	-74.5	0
+326	-74.5	0
+327	-74.5	0
+328	-74.5	0
+329	-74.5	0
+330	-74.5	0
+331	-74.5	0
+332	-74.5	0
+333	-74.5	0
+334	-74.5	0
+335	-74.5	0
+336	-74.5	0
+337	-74.5	0
+338	-74.5	0
+339	-74.5	0
+340	-74.5	0
+341	-74.5	0
+342	-74.5	0
+343	-74.5	0
+344	-74.5	0
+345	-74.5	0
+346	-74.5	0
+347	-74.5	0
+348	-74.5	0
+349	-74.5	0
+350	-74.5	0
+351	-74.5	0
+352	-74.5	0
+353	-74.5	0
+354	-74.5	0
+355	-74.5	0
+356	-74.5	0
+357	-74.5	0
+358	-74.5	0
+359	-74.5	0
+360	-74.5	0
+0	-74	0
+1	-74	0
+2	-74	0
+3	-74	0
+4	-74	0
+5	-74	0
+6	-74	0
+7	-74	0
+8	-74	0
+9	-74	0
+10	-74	0
+11	-74	0
+12	-74	0
+13	-74	0
+14	-74	0
+15	-74	0
+16	-74	0
+17	-74	0
+18	-74	0
+19	-74	0
+20	-74	0
+21	-74	0
+22	-74	0
+23	-74	0
+24	-74	0
+25	-74	0
+26	-74	0
+27	-74	0
+28	-74	0
+29	-74	0
+30	-74	0
+31	-74	0
+32	-74	0
+33	-74	0
+34	-74	0
+35	-74	0
+36	-74	0
+37	-74	0
+38	-74	0
+39	-74	0
+40	-74	0
+41	-74	0
+42	-74	0
+43	-74	0
+44	-74	0
+45	-74	0
+46	-74	0
+47	-74	0
+48	-74	0
+49	-74	0
+50	-74	0
+51	-74	0
+52	-74	0
+53	-74	0
+54	-74	0
+55	-74	0
+56	-74	0
+57	-74	0
+58	-74	0
+59	-74	0
+60	-74	0
+61	-74	0
+62	-74	0
+63	-74	0
+64	-74	0
+65	-74	0
+66	-74	0
+67	-74	0
+68	-74	0
+69	-74	0
+70	-74	0
+71	-74	0
+72	-74	0
+73	-74	0
+74	-74	0
+75	-74	0
+76	-74	0
+77	-74	0
+78	-74	0
+79	-74	0
+80	-74	0
+81	-74	0
+82	-74	0
+83	-74	0
+84	-74	0
+85	-74	0
+86	-74	0
+87	-74	0
+88	-74	0
+89	-74	0
+90	-74	0
+91	-74	0
+92	-74	0
+93	-74	0
+94	-74	0
+95	-74	0
+96	-74	0
+97	-74	0
+98	-74	0
+99	-74	0
+100	-74	0
+101	-74	0
+102	-74	0
+103	-74	0
+104	-74	0
+105	-74	0
+106	-74	0
+107	-74	0
+108	-74	0
+109	-74	0
+110	-74	0
+111	-74	0
+112	-74	0
+113	-74	0
+114	-74	0
+115	-74	0
+116	-74	0
+117	-74	0
+118	-74	0
+119	-74	0
+120	-74	0
+121	-74	0
+122	-74	0
+123	-74	0
+124	-74	0
+125	-74	0
+126	-74	0
+127	-74	0
+128	-74	0
+129	-74	0
+130	-74	0
+131	-74	0
+132	-74	0
+133	-74	0
+134	-74	0
+135	-74	0
+136	-74	0
+137	-74	0
+138	-74	0
+139	-74	0
+140	-74	0
+141	-74	0
+142	-74	0
+143	-74	0
+144	-74	0
+145	-74	0
+146	-74	0
+147	-74	0
+148	-74	0
+149	-74	0
+150	-74	0
+151	-74	0
+152	-74	0
+153	-74	0
+154	-74	0
+155	-74	0
+156	-74	0
+157	-74	0
+158	-74	0
+159	-74	0
+160	-74	0
+161	-74	0
+162	-74	0
+163	-74	0
+164	-74	0
+165	-74	0
+166	-74	0
+167	-74	0
+168	-74	0
+169	-74	0
+170	-74	0
+171	-74	0
+172	-74	0
+173	-74	0
+174	-74	0
+175	-74	0
+176	-74	0
+177	-74	0
+178	-74	0
+179	-74	0
+180	-74	0
+181	-74	0
+182	-74	0
+183	-74	0
+184	-74	0
+185	-74	0
+186	-74	0
+187	-74	0
+188	-74	0
+189	-74	0
+190	-74	0
+191	-74	0
+192	-74	0
+193	-74	0
+194	-74	0
+195	-74	0
+196	-74	0
+197	-74	0
+198	-74	0
+199	-74	0
+200	-74	0
+201	-74	0
+202	-74	0
+203	-74	0
+204	-74	0
+205	-74	0
+206	-74	0
+207	-74	0
+208	-74	0
+209	-74	0
+210	-74	0
+211	-74	0
+212	-74	0
+213	-74	0
+214	-74	0
+215	-74	0
+216	-74	0
+217	-74	0
+218	-74	0
+219	-74	0
+220	-74	0
+221	-74	0
+222	-74	0
+223	-74	0
+224	-74	0
+225	-74	0
+226	-74	0
+227	-74	0
+228	-74	0
+229	-74	0
+230	-74	0
+231	-74	0
+232	-74	0
+233	-74	0
+234	-74	0
+235	-74	0
+236	-74	0
+237	-74	0
+238	-74	0
+239	-74	0
+240	-74	0
+241	-74	0
+242	-74	0
+243	-74	0
+244	-74	0
+245	-74	0
+246	-74	0
+247	-74	0
+248	-74	0
+249	-74	0
+250	-74	0
+251	-74	0
+252	-74	0
+253	-74	0
+254	-74	0
+255	-74	0
+256	-74	0
+257	-74	0
+258	-74	0
+259	-74	0
+260	-74	0
+261	-74	0
+262	-74	0
+263	-74	0
+264	-74	0
+265	-74	0
+266	-74	0
+267	-74	0
+268	-74	0
+269	-74	0
+270	-74	0
+271	-74	0
+272	-74	0
+273	-74	0
+274	-74	0
+275	-74	0
+276	-74	0
+277	-74	0
+278	-74	0
+279	-74	0
+280	-74	0
+281	-74	0
+282	-74	0
+283	-74	0
+284	-74	0
+285	-74	0
+286	-74	0
+287	-74	0
+288	-74	0
+289	-74	0
+290	-74	0
+291	-74	0
+292	-74	0
+293	-74	0
+294	-74	0
+295	-74	0
+296	-74	0
+297	-74	0
+298	-74	0
+299	-74	0
+300	-74	0
+301	-74	0
+302	-74	0
+303	-74	0
+304	-74	0
+305	-74	0
+306	-74	0
+307	-74	0
+308	-74	0
+309	-74	0
+310	-74	0
+311	-74	0
+312	-74	0
+313	-74	0
+314	-74	0
+315	-74	0
+316	-74	0
+317	-74	0
+318	-74	0
+319	-74	0
+320	-74	0
+321	-74	0
+322	-74	0
+323	-74	0
+324	-74	0
+325	-74	0
+326	-74	0
+327	-74	0
+328	-74	0
+329	-74	0
+330	-74	0
+331	-74	0
+332	-74	0
+333	-74	0
+334	-74	0
+335	-74	0
+336	-74	0
+337	-74	0
+338	-74	0
+339	-74	0
+340	-74	0
+341	-74	0
+342	-74	0
+343	-74	0
+344	-74	0
+345	-74	0
+346	-74	0
+347	-74	0
+348	-74	0
+349	-74	0
+350	-74	0
+351	-74	0
+352	-74	0
+353	-74	0
+354	-74	0
+355	-74	0
+356	-74	0
+357	-74	0
+358	-74	0
+359	-74	0
+360	-74	0
+0	-73.5	0
+1	-73.5	0
+2	-73.5	0
+3	-73.5	0
+4	-73.5	0
+5	-73.5	0
+6	-73.5	0
+7	-73.5	0
+8	-73.5	0
+9	-73.5	0
+10	-73.5	0
+11	-73.5	0
+12	-73.5	0
+13	-73.5	0
+14	-73.5	0
+15	-73.5	0
+16	-73.5	0
+17	-73.5	0
+18	-73.5	0
+19	-73.5	0
+20	-73.5	0
+21	-73.5	0
+22	-73.5	0
+23	-73.5	0
+24	-73.5	0
+25	-73.5	0
+26	-73.5	0
+27	-73.5	0
+28	-73.5	0
+29	-73.5	0
+30	-73.5	0
+31	-73.5	0
+32	-73.5	0
+33	-73.5	0
+34	-73.5	0
+35	-73.5	0
+36	-73.5	0
+37	-73.5	0
+38	-73.5	0
+39	-73.5	0
+40	-73.5	0
+41	-73.5	0
+42	-73.5	0
+43	-73.5	0
+44	-73.5	0
+45	-73.5	0
+46	-73.5	0
+47	-73.5	0
+48	-73.5	0
+49	-73.5	0
+50	-73.5	0
+51	-73.5	0
+52	-73.5	0
+53	-73.5	0
+54	-73.5	0
+55	-73.5	0
+56	-73.5	0
+57	-73.5	0
+58	-73.5	0
+59	-73.5	0
+60	-73.5	0
+61	-73.5	0
+62	-73.5	0
+63	-73.5	0
+64	-73.5	0
+65	-73.5	0
+66	-73.5	0
+67	-73.5	0
+68	-73.5	0
+69	-73.5	0
+70	-73.5	0
+71	-73.5	0
+72	-73.5	0
+73	-73.5	0
+74	-73.5	0
+75	-73.5	0
+76	-73.5	0
+77	-73.5	0
+78	-73.5	0
+79	-73.5	0
+80	-73.5	0
+81	-73.5	0
+82	-73.5	0
+83	-73.5	0
+84	-73.5	0
+85	-73.5	0
+86	-73.5	0
+87	-73.5	0
+88	-73.5	0
+89	-73.5	0
+90	-73.5	0
+91	-73.5	0
+92	-73.5	0
+93	-73.5	0
+94	-73.5	0
+95	-73.5	0
+96	-73.5	0
+97	-73.5	0
+98	-73.5	0
+99	-73.5	0
+100	-73.5	0
+101	-73.5	0
+102	-73.5	0
+103	-73.5	0
+104	-73.5	0
+105	-73.5	0
+106	-73.5	0
+107	-73.5	0
+108	-73.5	0
+109	-73.5	0
+110	-73.5	0
+111	-73.5	0
+112	-73.5	0
+113	-73.5	0
+114	-73.5	0
+115	-73.5	0
+116	-73.5	0
+117	-73.5	0
+118	-73.5	0
+119	-73.5	0
+120	-73.5	0
+121	-73.5	0
+122	-73.5	0
+123	-73.5	0
+124	-73.5	0
+125	-73.5	0
+126	-73.5	0
+127	-73.5	0
+128	-73.5	0
+129	-73.5	0
+130	-73.5	0
+131	-73.5	0
+132	-73.5	0
+133	-73.5	0
+134	-73.5	0
+135	-73.5	0
+136	-73.5	0
+137	-73.5	0
+138	-73.5	0
+139	-73.5	0
+140	-73.5	0
+141	-73.5	0
+142	-73.5	0
+143	-73.5	0
+144	-73.5	0
+145	-73.5	0
+146	-73.5	0
+147	-73.5	0
+148	-73.5	0
+149	-73.5	0
+150	-73.5	0
+151	-73.5	0
+152	-73.5	0
+153	-73.5	0
+154	-73.5	0
+155	-73.5	0
+156	-73.5	0
+157	-73.5	0
+158	-73.5	0
+159	-73.5	0
+160	-73.5	0
+161	-73.5	0
+162	-73.5	0
+163	-73.5	0
+164	-73.5	0
+165	-73.5	0
+166	-73.5	0
+167	-73.5	0
+168	-73.5	0
+169	-73.5	0
+170	-73.5	0
+171	-73.5	0
+172	-73.5	0
+173	-73.5	0
+174	-73.5	0
+175	-73.5	0
+176	-73.5	0
+177	-73.5	0
+178	-73.5	0
+179	-73.5	0
+180	-73.5	0
+181	-73.5	0
+182	-73.5	0
+183	-73.5	0
+184	-73.5	0
+185	-73.5	0
+186	-73.5	0
+187	-73.5	0
+188	-73.5	0
+189	-73.5	0
+190	-73.5	0
+191	-73.5	0
+192	-73.5	0
+193	-73.5	0
+194	-73.5	0
+195	-73.5	0
+196	-73.5	0
+197	-73.5	0
+198	-73.5	0
+199	-73.5	0
+200	-73.5	0
+201	-73.5	0
+202	-73.5	0
+203	-73.5	0
+204	-73.5	0
+205	-73.5	0
+206	-73.5	0
+207	-73.5	0
+208	-73.5	0
+209	-73.5	0
+210	-73.5	0
+211	-73.5	0
+212	-73.5	0
+213	-73.5	0
+214	-73.5	0
+215	-73.5	0
+216	-73.5	0
+217	-73.5	0
+218	-73.5	0
+219	-73.5	0
+220	-73.5	0
+221	-73.5	0
+222	-73.5	0
+223	-73.5	0
+224	-73.5	0
+225	-73.5	0
+226	-73.5	0
+227	-73.5	0
+228	-73.5	0
+229	-73.5	0
+230	-73.5	0
+231	-73.5	0
+232	-73.5	0
+233	-73.5	0
+234	-73.5	0
+235	-73.5	0
+236	-73.5	0
+237	-73.5	0
+238	-73.5	0
+239	-73.5	0
+240	-73.5	0
+241	-73.5	0
+242	-73.5	0
+243	-73.5	0
+244	-73.5	0
+245	-73.5	0
+246	-73.5	0
+247	-73.5	0
+248	-73.5	0
+249	-73.5	0
+250	-73.5	0
+251	-73.5	0
+252	-73.5	0
+253	-73.5	0
+254	-73.5	0
+255	-73.5	0
+256	-73.5	0
+257	-73.5	0
+258	-73.5	0
+259	-73.5	0
+260	-73.5	0
+261	-73.5	0
+262	-73.5	0
+263	-73.5	0
+264	-73.5	0
+265	-73.5	0
+266	-73.5	0
+267	-73.5	0
+268	-73.5	0
+269	-73.5	0
+270	-73.5	0
+271	-73.5	0
+272	-73.5	0
+273	-73.5	0
+274	-73.5	0
+275	-73.5	0
+276	-73.5	0
+277	-73.5	0
+278	-73.5	0
+279	-73.5	0
+280	-73.5	0
+281	-73.5	0
+282	-73.5	0
+283	-73.5	0
+284	-73.5	0
+285	-73.5	0
+286	-73.5	0
+287	-73.5	0
+288	-73.5	0
+289	-73.5	0
+290	-73.5	0
+291	-73.5	0
+292	-73.5	0
+293	-73.5	0
+294	-73.5	0
+295	-73.5	0
+296	-73.5	0
+297	-73.5	0
+298	-73.5	0
+299	-73.5	0
+300	-73.5	0
+301	-73.5	0
+302	-73.5	0
+303	-73.5	0
+304	-73.5	0
+305	-73.5	0
+306	-73.5	0
+307	-73.5	0
+308	-73.5	0
+309	-73.5	0
+310	-73.5	0
+311	-73.5	0
+312	-73.5	0
+313	-73.5	0
+314	-73.5	0
+315	-73.5	0
+316	-73.5	0
+317	-73.5	0
+318	-73.5	0
+319	-73.5	0
+320	-73.5	0
+321	-73.5	0
+322	-73.5	0
+323	-73.5	0
+324	-73.5	0
+325	-73.5	0
+326	-73.5	0
+327	-73.5	0
+328	-73.5	0
+329	-73.5	0
+330	-73.5	0
+331	-73.5	0
+332	-73.5	0
+333	-73.5	0
+334	-73.5	0
+335	-73.5	0
+336	-73.5	0
+337	-73.5	0
+338	-73.5	0
+339	-73.5	0
+340	-73.5	0
+341	-73.5	0
+342	-73.5	0
+343	-73.5	0
+344	-73.5	0
+345	-73.5	0
+346	-73.5	0
+347	-73.5	0
+348	-73.5	0
+349	-73.5	0
+350	-73.5	0
+351	-73.5	0
+352	-73.5	0
+353	-73.5	0
+354	-73.5	0
+355	-73.5	0
+356	-73.5	0
+357	-73.5	0
+358	-73.5	0
+359	-73.5	0
+360	-73.5	0
+0	-73	0
+1	-73	0
+2	-73	0
+3	-73	0
+4	-73	0
+5	-73	0
+6	-73	0
+7	-73	0
+8	-73	0
+9	-73	0
+10	-73	0
+11	-73	0
+12	-73	0
+13	-73	0
+14	-73	0
+15	-73	0
+16	-73	0
+17	-73	0
+18	-73	0
+19	-73	0
+20	-73	0
+21	-73	0
+22	-73	0
+23	-73	0
+24	-73	0
+25	-73	0
+26	-73	0
+27	-73	0
+28	-73	0
+29	-73	0
+30	-73	0
+31	-73	0
+32	-73	0
+33	-73	0
+34	-73	0
+35	-73	0
+36	-73	0
+37	-73	0
+38	-73	0
+39	-73	0
+40	-73	0
+41	-73	0
+42	-73	0
+43	-73	0
+44	-73	0
+45	-73	0
+46	-73	0
+47	-73	0
+48	-73	0
+49	-73	0
+50	-73	0
+51	-73	0
+52	-73	0
+53	-73	0
+54	-73	0
+55	-73	0
+56	-73	0
+57	-73	0
+58	-73	0
+59	-73	0
+60	-73	0
+61	-73	0
+62	-73	0
+63	-73	0
+64	-73	0
+65	-73	0
+66	-73	0
+67	-73	0
+68	-73	0
+69	-73	0
+70	-73	0
+71	-73	0
+72	-73	0
+73	-73	0
+74	-73	0
+75	-73	0
+76	-73	0
+77	-73	0
+78	-73	0
+79	-73	0
+80	-73	0
+81	-73	0
+82	-73	0
+83	-73	0
+84	-73	0
+85	-73	0
+86	-73	0
+87	-73	0
+88	-73	0
+89	-73	0
+90	-73	0
+91	-73	0
+92	-73	0
+93	-73	0
+94	-73	0
+95	-73	0
+96	-73	0
+97	-73	0
+98	-73	0
+99	-73	0
+100	-73	0
+101	-73	0
+102	-73	0
+103	-73	0
+104	-73	0
+105	-73	0
+106	-73	0
+107	-73	0
+108	-73	0
+109	-73	0
+110	-73	0
+111	-73	0
+112	-73	0
+113	-73	0
+114	-73	0
+115	-73	0
+116	-73	0
+117	-73	0
+118	-73	0
+119	-73	0
+120	-73	0
+121	-73	0
+122	-73	0
+123	-73	0
+124	-73	0
+125	-73	0
+126	-73	0
+127	-73	0
+128	-73	0
+129	-73	0
+130	-73	0
+131	-73	0
+132	-73	0
+133	-73	0
+134	-73	0
+135	-73	0
+136	-73	0
+137	-73	0
+138	-73	0
+139	-73	0
+140	-73	0
+141	-73	0
+142	-73	0
+143	-73	0
+144	-73	0
+145	-73	0
+146	-73	0
+147	-73	0
+148	-73	0
+149	-73	0
+150	-73	0
+151	-73	0
+152	-73	0
+153	-73	0
+154	-73	0
+155	-73	0
+156	-73	0
+157	-73	0
+158	-73	0
+159	-73	0
+160	-73	0
+161	-73	0
+162	-73	0
+163	-73	0
+164	-73	0
+165	-73	0
+166	-73	0
+167	-73	0
+168	-73	0
+169	-73	0
+170	-73	0
+171	-73	0
+172	-73	0
+173	-73	0
+174	-73	0
+175	-73	0
+176	-73	0
+177	-73	0
+178	-73	0
+179	-73	0
+180	-73	0
+181	-73	0
+182	-73	0
+183	-73	0
+184	-73	0
+185	-73	0
+186	-73	0
+187	-73	0
+188	-73	0
+189	-73	0
+190	-73	0
+191	-73	0
+192	-73	0
+193	-73	0
+194	-73	0
+195	-73	0
+196	-73	0
+197	-73	0
+198	-73	0
+199	-73	0
+200	-73	0
+201	-73	0
+202	-73	0
+203	-73	0
+204	-73	0
+205	-73	0
+206	-73	0
+207	-73	0
+208	-73	0
+209	-73	0
+210	-73	0
+211	-73	0
+212	-73	0
+213	-73	0
+214	-73	0
+215	-73	0
+216	-73	0
+217	-73	0
+218	-73	0
+219	-73	0
+220	-73	0
+221	-73	0
+222	-73	0
+223	-73	0
+224	-73	0
+225	-73	0
+226	-73	0
+227	-73	0
+228	-73	0
+229	-73	0
+230	-73	0
+231	-73	0
+232	-73	0
+233	-73	0
+234	-73	0
+235	-73	0
+236	-73	0
+237	-73	0
+238	-73	0
+239	-73	0
+240	-73	0
+241	-73	0
+242	-73	0
+243	-73	0
+244	-73	0
+245	-73	0
+246	-73	0
+247	-73	0
+248	-73	0
+249	-73	0
+250	-73	0
+251	-73	0
+252	-73	0
+253	-73	0
+254	-73	0
+255	-73	0
+256	-73	0
+257	-73	0
+258	-73	0
+259	-73	0
+260	-73	0
+261	-73	0
+262	-73	0
+263	-73	0
+264	-73	0
+265	-73	0
+266	-73	0
+267	-73	0
+268	-73	0
+269	-73	0
+270	-73	0
+271	-73	0
+272	-73	0
+273	-73	0
+274	-73	0
+275	-73	0
+276	-73	0
+277	-73	0
+278	-73	0
+279	-73	0
+280	-73	0
+281	-73	0
+282	-73	0
+283	-73	0
+284	-73	0
+285	-73	0
+286	-73	0
+287	-73	0
+288	-73	0
+289	-73	0
+290	-73	0
+291	-73	0
+292	-73	0
+293	-73	0
+294	-73	0
+295	-73	0
+296	-73	0
+297	-73	0
+298	-73	0
+299	-73	0
+300	-73	0
+301	-73	0
+302	-73	0
+303	-73	0
+304	-73	0
+305	-73	0
+306	-73	0
+307	-73	0
+308	-73	0
+309	-73	0
+310	-73	0
+311	-73	0
+312	-73	0
+313	-73	0
+314	-73	0
+315	-73	0
+316	-73	0
+317	-73	0
+318	-73	0
+319	-73	0
+320	-73	0
+321	-73	0
+322	-73	0
+323	-73	0
+324	-73	0
+325	-73	0
+326	-73	0
+327	-73	0
+328	-73	0
+329	-73	0
+330	-73	0
+331	-73	0
+332	-73	0
+333	-73	0
+334	-73	0
+335	-73	0
+336	-73	0
+337	-73	0
+338	-73	0
+339	-73	0
+340	-73	0
+341	-73	0
+342	-73	0
+343	-73	0
+344	-73	0
+345	-73	0
+346	-73	0
+347	-73	0
+348	-73	0
+349	-73	0
+350	-73	0
+351	-73	0
+352	-73	0
+353	-73	0
+354	-73	0
+355	-73	0
+356	-73	0
+357	-73	0
+358	-73	0
+359	-73	0
+360	-73	0
+0	-72.5	0
+1	-72.5	0
+2	-72.5	0
+3	-72.5	0
+4	-72.5	0
+5	-72.5	0
+6	-72.5	0
+7	-72.5	0
+8	-72.5	0
+9	-72.5	0
+10	-72.5	0
+11	-72.5	0
+12	-72.5	0
+13	-72.5	0
+14	-72.5	0
+15	-72.5	0
+16	-72.5	0
+17	-72.5	0
+18	-72.5	0
+19	-72.5	0
+20	-72.5	0
+21	-72.5	0
+22	-72.5	0
+23	-72.5	0
+24	-72.5	0
+25	-72.5	0
+26	-72.5	0
+27	-72.5	0
+28	-72.5	0
+29	-72.5	0
+30	-72.5	0
+31	-72.5	0
+32	-72.5	0
+33	-72.5	0
+34	-72.5	0
+35	-72.5	0
+36	-72.5	0
+37	-72.5	0
+38	-72.5	0
+39	-72.5	0
+40	-72.5	0
+41	-72.5	0
+42	-72.5	0
+43	-72.5	0
+44	-72.5	0
+45	-72.5	0
+46	-72.5	0
+47	-72.5	0
+48	-72.5	0
+49	-72.5	0
+50	-72.5	0
+51	-72.5	0
+52	-72.5	0
+53	-72.5	0
+54	-72.5	0
+55	-72.5	0
+56	-72.5	0
+57	-72.5	0
+58	-72.5	0
+59	-72.5	0
+60	-72.5	0
+61	-72.5	0
+62	-72.5	0
+63	-72.5	0
+64	-72.5	0
+65	-72.5	0
+66	-72.5	0
+67	-72.5	0
+68	-72.5	0
+69	-72.5	0
+70	-72.5	0
+71	-72.5	0
+72	-72.5	0
+73	-72.5	0
+74	-72.5	0
+75	-72.5	0
+76	-72.5	0
+77	-72.5	0
+78	-72.5	0
+79	-72.5	0
+80	-72.5	0
+81	-72.5	0
+82	-72.5	0
+83	-72.5	0
+84	-72.5	0
+85	-72.5	0
+86	-72.5	0
+87	-72.5	0
+88	-72.5	0
+89	-72.5	0
+90	-72.5	0
+91	-72.5	0
+92	-72.5	0
+93	-72.5	0
+94	-72.5	0
+95	-72.5	0
+96	-72.5	0
+97	-72.5	0
+98	-72.5	0
+99	-72.5	0
+100	-72.5	0
+101	-72.5	0
+102	-72.5	0
+103	-72.5	0
+104	-72.5	0
+105	-72.5	0
+106	-72.5	0
+107	-72.5	0
+108	-72.5	0
+109	-72.5	0
+110	-72.5	0
+111	-72.5	0
+112	-72.5	0
+113	-72.5	0
+114	-72.5	0
+115	-72.5	0
+116	-72.5	0
+117	-72.5	0
+118	-72.5	0
+119	-72.5	0
+120	-72.5	0
+121	-72.5	0
+122	-72.5	0
+123	-72.5	0
+124	-72.5	0
+125	-72.5	0
+126	-72.5	0
+127	-72.5	0
+128	-72.5	0
+129	-72.5	0
+130	-72.5	0
+131	-72.5	0
+132	-72.5	0
+133	-72.5	0
+134	-72.5	0
+135	-72.5	0
+136	-72.5	0
+137	-72.5	0
+138	-72.5	0
+139	-72.5	0
+140	-72.5	0
+141	-72.5	0
+142	-72.5	0
+143	-72.5	0
+144	-72.5	0
+145	-72.5	0
+146	-72.5	0
+147	-72.5	0
+148	-72.5	0
+149	-72.5	0
+150	-72.5	0
+151	-72.5	0
+152	-72.5	0
+153	-72.5	0
+154	-72.5	0
+155	-72.5	0
+156	-72.5	0
+157	-72.5	0
+158	-72.5	0
+159	-72.5	0
+160	-72.5	0
+161	-72.5	0
+162	-72.5	0
+163	-72.5	0
+164	-72.5	0
+165	-72.5	0
+166	-72.5	0
+167	-72.5	0
+168	-72.5	0
+169	-72.5	0
+170	-72.5	0
+171	-72.5	0
+172	-72.5	0
+173	-72.5	0
+174	-72.5	0
+175	-72.5	0
+176	-72.5	0
+177	-72.5	0
+178	-72.5	0
+179	-72.5	0
+180	-72.5	0
+181	-72.5	0
+182	-72.5	0
+183	-72.5	0
+184	-72.5	0
+185	-72.5	0
+186	-72.5	0
+187	-72.5	0
+188	-72.5	0
+189	-72.5	0
+190	-72.5	0
+191	-72.5	0
+192	-72.5	0
+193	-72.5	0
+194	-72.5	0
+195	-72.5	0
+196	-72.5	0
+197	-72.5	0
+198	-72.5	0
+199	-72.5	0
+200	-72.5	0
+201	-72.5	0
+202	-72.5	0
+203	-72.5	0
+204	-72.5	0
+205	-72.5	0
+206	-72.5	0
+207	-72.5	0
+208	-72.5	0
+209	-72.5	0
+210	-72.5	0
+211	-72.5	0
+212	-72.5	0
+213	-72.5	0
+214	-72.5	0
+215	-72.5	0
+216	-72.5	0
+217	-72.5	0
+218	-72.5	0
+219	-72.5	0
+220	-72.5	0
+221	-72.5	0
+222	-72.5	0
+223	-72.5	0
+224	-72.5	0
+225	-72.5	0
+226	-72.5	0
+227	-72.5	0
+228	-72.5	0
+229	-72.5	0
+230	-72.5	0
+231	-72.5	0
+232	-72.5	0
+233	-72.5	0
+234	-72.5	0
+235	-72.5	0
+236	-72.5	0
+237	-72.5	0
+238	-72.5	0
+239	-72.5	0
+240	-72.5	0
+241	-72.5	0
+242	-72.5	0
+243	-72.5	0
+244	-72.5	0
+245	-72.5	0
+246	-72.5	0
+247	-72.5	0
+248	-72.5	0
+249	-72.5	0
+250	-72.5	0
+251	-72.5	0
+252	-72.5	0
+253	-72.5	0
+254	-72.5	0
+255	-72.5	0
+256	-72.5	0
+257	-72.5	0
+258	-72.5	0
+259	-72.5	0
+260	-72.5	0
+261	-72.5	0
+262	-72.5	0
+263	-72.5	0
+264	-72.5	0
+265	-72.5	0
+266	-72.5	0
+267	-72.5	0
+268	-72.5	0
+269	-72.5	0
+270	-72.5	0
+271	-72.5	0
+272	-72.5	0
+273	-72.5	0
+274	-72.5	0
+275	-72.5	0
+276	-72.5	0
+277	-72.5	0
+278	-72.5	0
+279	-72.5	0
+280	-72.5	0
+281	-72.5	0
+282	-72.5	0
+283	-72.5	0
+284	-72.5	0
+285	-72.5	0
+286	-72.5	0
+287	-72.5	0
+288	-72.5	0
+289	-72.5	0
+290	-72.5	0
+291	-72.5	0
+292	-72.5	0
+293	-72.5	0
+294	-72.5	0
+295	-72.5	0
+296	-72.5	0
+297	-72.5	0
+298	-72.5	0
+299	-72.5	0
+300	-72.5	0
+301	-72.5	0
+302	-72.5	0
+303	-72.5	0
+304	-72.5	0
+305	-72.5	0
+306	-72.5	0
+307	-72.5	0
+308	-72.5	0
+309	-72.5	0
+310	-72.5	0
+311	-72.5	0
+312	-72.5	0
+313	-72.5	0
+314	-72.5	0
+315	-72.5	0
+316	-72.5	0
+317	-72.5	0
+318	-72.5	0
+319	-72.5	0
+320	-72.5	0
+321	-72.5	0
+322	-72.5	0
+323	-72.5	0
+324	-72.5	0
+325	-72.5	0
+326	-72.5	0
+327	-72.5	0
+328	-72.5	0
+329	-72.5	0
+330	-72.5	0
+331	-72.5	0
+332	-72.5	0
+333	-72.5	0
+334	-72.5	0
+335	-72.5	0
+336	-72.5	0
+337	-72.5	0
+338	-72.5	0
+339	-72.5	0
+340	-72.5	0
+341	-72.5	0
+342	-72.5	0
+343	-72.5	0
+344	-72.5	0
+345	-72.5	0
+346	-72.5	0
+347	-72.5	0
+348	-72.5	0
+349	-72.5	0
+350	-72.5	0
+351	-72.5	0
+352	-72.5	0
+353	-72.5	0
+354	-72.5	0
+355	-72.5	0
+356	-72.5	0
+357	-72.5	0
+358	-72.5	0
+359	-72.5	0
+360	-72.5	0
+0	-72	0
+1	-72	0
+2	-72	0
+3	-72	0
+4	-72	0
+5	-72	0
+6	-72	0
+7	-72	0
+8	-72	0
+9	-72	0
+10	-72	0
+11	-72	0
+12	-72	0
+13	-72	0
+14	-72	0
+15	-72	0
+16	-72	0
+17	-72	0
+18	-72	0
+19	-72	0
+20	-72	0
+21	-72	0
+22	-72	0
+23	-72	0
+24	-72	0
+25	-72	0
+26	-72	0
+27	-72	0
+28	-72	0
+29	-72	0
+30	-72	0
+31	-72	0
+32	-72	0
+33	-72	0
+34	-72	0
+35	-72	0
+36	-72	0
+37	-72	0
+38	-72	0
+39	-72	0
+40	-72	0
+41	-72	0
+42	-72	0
+43	-72	0
+44	-72	0
+45	-72	0
+46	-72	0
+47	-72	0
+48	-72	0
+49	-72	0
+50	-72	0
+51	-72	0
+52	-72	0
+53	-72	0
+54	-72	0
+55	-72	0
+56	-72	0
+57	-72	0
+58	-72	0
+59	-72	0
+60	-72	0
+61	-72	0
+62	-72	0
+63	-72	0
+64	-72	0
+65	-72	0
+66	-72	0
+67	-72	0
+68	-72	0
+69	-72	0
+70	-72	0
+71	-72	0
+72	-72	0
+73	-72	0
+74	-72	0
+75	-72	0
+76	-72	0
+77	-72	0
+78	-72	0
+79	-72	0
+80	-72	0
+81	-72	0
+82	-72	0
+83	-72	0
+84	-72	0
+85	-72	0
+86	-72	0
+87	-72	0
+88	-72	0
+89	-72	0
+90	-72	0
+91	-72	0
+92	-72	0
+93	-72	0
+94	-72	0
+95	-72	0
+96	-72	0
+97	-72	0
+98	-72	0
+99	-72	0
+100	-72	0
+101	-72	0
+102	-72	0
+103	-72	0
+104	-72	0
+105	-72	0
+106	-72	0
+107	-72	0
+108	-72	0
+109	-72	0
+110	-72	0
+111	-72	0
+112	-72	0
+113	-72	0
+114	-72	0
+115	-72	0
+116	-72	0
+117	-72	0
+118	-72	0
+119	-72	0
+120	-72	0
+121	-72	0
+122	-72	0
+123	-72	0
+124	-72	0
+125	-72	0
+126	-72	0
+127	-72	0
+128	-72	0
+129	-72	0
+130	-72	0
+131	-72	0
+132	-72	0
+133	-72	0
+134	-72	0
+135	-72	0
+136	-72	0
+137	-72	0
+138	-72	0
+139	-72	0
+140	-72	0
+141	-72	0
+142	-72	0
+143	-72	0
+144	-72	0
+145	-72	0
+146	-72	0
+147	-72	0
+148	-72	0
+149	-72	0
+150	-72	0
+151	-72	0
+152	-72	0
+153	-72	0
+154	-72	0
+155	-72	0
+156	-72	0
+157	-72	0
+158	-72	0
+159	-72	0
+160	-72	0
+161	-72	0
+162	-72	0
+163	-72	0
+164	-72	0
+165	-72	0
+166	-72	0
+167	-72	0
+168	-72	0
+169	-72	0
+170	-72	0
+171	-72	0
+172	-72	0
+173	-72	0
+174	-72	0
+175	-72	0
+176	-72	0
+177	-72	0
+178	-72	0
+179	-72	0
+180	-72	0
+181	-72	0
+182	-72	0
+183	-72	0
+184	-72	0
+185	-72	0
+186	-72	0
+187	-72	0
+188	-72	0
+189	-72	0
+190	-72	0
+191	-72	0
+192	-72	0
+193	-72	0
+194	-72	0
+195	-72	0
+196	-72	0
+197	-72	0
+198	-72	0
+199	-72	0
+200	-72	0
+201	-72	0
+202	-72	0
+203	-72	0
+204	-72	0
+205	-72	0
+206	-72	0
+207	-72	0
+208	-72	0
+209	-72	0
+210	-72	0
+211	-72	0
+212	-72	0
+213	-72	0
+214	-72	0
+215	-72	0
+216	-72	0
+217	-72	0
+218	-72	0
+219	-72	0
+220	-72	0
+221	-72	0
+222	-72	0
+223	-72	0
+224	-72	0
+225	-72	0
+226	-72	0
+227	-72	0
+228	-72	0
+229	-72	0
+230	-72	0
+231	-72	0
+232	-72	0
+233	-72	0
+234	-72	0
+235	-72	0
+236	-72	0
+237	-72	0
+238	-72	0
+239	-72	0
+240	-72	0
+241	-72	0
+242	-72	0
+243	-72	0
+244	-72	0
+245	-72	0
+246	-72	0
+247	-72	0
+248	-72	0
+249	-72	0
+250	-72	0
+251	-72	0
+252	-72	0
+253	-72	0
+254	-72	0
+255	-72	0
+256	-72	0
+257	-72	0
+258	-72	0
+259	-72	0
+260	-72	0
+261	-72	0
+262	-72	0
+263	-72	0
+264	-72	0
+265	-72	0
+266	-72	0
+267	-72	0
+268	-72	0
+269	-72	0
+270	-72	0
+271	-72	0
+272	-72	0
+273	-72	0
+274	-72	0
+275	-72	0
+276	-72	0
+277	-72	0
+278	-72	0
+279	-72	0
+280	-72	0
+281	-72	0
+282	-72	0
+283	-72	0
+284	-72	0
+285	-72	0
+286	-72	0
+287	-72	0
+288	-72	0
+289	-72	0
+290	-72	0
+291	-72	0
+292	-72	0
+293	-72	0
+294	-72	0
+295	-72	0
+296	-72	0
+297	-72	0
+298	-72	0
+299	-72	0
+300	-72	0
+301	-72	0
+302	-72	0
+303	-72	0
+304	-72	0
+305	-72	0
+306	-72	0
+307	-72	0
+308	-72	0
+309	-72	0
+310	-72	0
+311	-72	0
+312	-72	0
+313	-72	0
+314	-72	0
+315	-72	0
+316	-72	0
+317	-72	0
+318	-72	0
+319	-72	0
+320	-72	0
+321	-72	0
+322	-72	0
+323	-72	0
+324	-72	0
+325	-72	0
+326	-72	0
+327	-72	0
+328	-72	0
+329	-72	0
+330	-72	0
+331	-72	0
+332	-72	0
+333	-72	0
+334	-72	0
+335	-72	0
+336	-72	0
+337	-72	0
+338	-72	0
+339	-72	0
+340	-72	0
+341	-72	0
+342	-72	0
+343	-72	0
+344	-72	0
+345	-72	0
+346	-72	0
+347	-72	0
+348	-72	0
+349	-72	0
+350	-72	0
+351	-72	0
+352	-72	0
+353	-72	0
+354	-72	0
+355	-72	0
+356	-72	0
+357	-72	0
+358	-72	0
+359	-72	0
+360	-72	0
+0	-71.5	0
+1	-71.5	0
+2	-71.5	0
+3	-71.5	0
+4	-71.5	0
+5	-71.5	0
+6	-71.5	0
+7	-71.5	0
+8	-71.5	0
+9	-71.5	0
+10	-71.5	0
+11	-71.5	0
+12	-71.5	0
+13	-71.5	0
+14	-71.5	0
+15	-71.5	0
+16	-71.5	0
+17	-71.5	0
+18	-71.5	0
+19	-71.5	0
+20	-71.5	0
+21	-71.5	0
+22	-71.5	0
+23	-71.5	0
+24	-71.5	0
+25	-71.5	0
+26	-71.5	0
+27	-71.5	0
+28	-71.5	0
+29	-71.5	0
+30	-71.5	0
+31	-71.5	0
+32	-71.5	0
+33	-71.5	0
+34	-71.5	0
+35	-71.5	0
+36	-71.5	0
+37	-71.5	0
+38	-71.5	0
+39	-71.5	0
+40	-71.5	0
+41	-71.5	0
+42	-71.5	0
+43	-71.5	0
+44	-71.5	0
+45	-71.5	0
+46	-71.5	0
+47	-71.5	0
+48	-71.5	0
+49	-71.5	0
+50	-71.5	0
+51	-71.5	0
+52	-71.5	0
+53	-71.5	0
+54	-71.5	0
+55	-71.5	0
+56	-71.5	0
+57	-71.5	0
+58	-71.5	0
+59	-71.5	0
+60	-71.5	0
+61	-71.5	0
+62	-71.5	0
+63	-71.5	0
+64	-71.5	0
+65	-71.5	0
+66	-71.5	0
+67	-71.5	0
+68	-71.5	0
+69	-71.5	0
+70	-71.5	0
+71	-71.5	0
+72	-71.5	0
+73	-71.5	0
+74	-71.5	0
+75	-71.5	0
+76	-71.5	0
+77	-71.5	0
+78	-71.5	0
+79	-71.5	0
+80	-71.5	0
+81	-71.5	0
+82	-71.5	0
+83	-71.5	0
+84	-71.5	0
+85	-71.5	0
+86	-71.5	0
+87	-71.5	0
+88	-71.5	0
+89	-71.5	0
+90	-71.5	0
+91	-71.5	0
+92	-71.5	0
+93	-71.5	0
+94	-71.5	0
+95	-71.5	0
+96	-71.5	0
+97	-71.5	0
+98	-71.5	0
+99	-71.5	0
+100	-71.5	0
+101	-71.5	0
+102	-71.5	0
+103	-71.5	0
+104	-71.5	0
+105	-71.5	0
+106	-71.5	0
+107	-71.5	0
+108	-71.5	0
+109	-71.5	0
+110	-71.5	0
+111	-71.5	0
+112	-71.5	0
+113	-71.5	0
+114	-71.5	0
+115	-71.5	0
+116	-71.5	0
+117	-71.5	0
+118	-71.5	0
+119	-71.5	0
+120	-71.5	0
+121	-71.5	0
+122	-71.5	0
+123	-71.5	0
+124	-71.5	0
+125	-71.5	0
+126	-71.5	0
+127	-71.5	0
+128	-71.5	0
+129	-71.5	0
+130	-71.5	0
+131	-71.5	0
+132	-71.5	0
+133	-71.5	0
+134	-71.5	0
+135	-71.5	0
+136	-71.5	0
+137	-71.5	0
+138	-71.5	0
+139	-71.5	0
+140	-71.5	0
+141	-71.5	0
+142	-71.5	0
+143	-71.5	0
+144	-71.5	0
+145	-71.5	0
+146	-71.5	0
+147	-71.5	0
+148	-71.5	0
+149	-71.5	0
+150	-71.5	0
+151	-71.5	0
+152	-71.5	0
+153	-71.5	0
+154	-71.5	0
+155	-71.5	0
+156	-71.5	0
+157	-71.5	0
+158	-71.5	0
+159	-71.5	0
+160	-71.5	0
+161	-71.5	0
+162	-71.5	0
+163	-71.5	0
+164	-71.5	0
+165	-71.5	0
+166	-71.5	0
+167	-71.5	0
+168	-71.5	0
+169	-71.5	0
+170	-71.5	0
+171	-71.5	0
+172	-71.5	0
+173	-71.5	0
+174	-71.5	0
+175	-71.5	0
+176	-71.5	0
+177	-71.5	0
+178	-71.5	0
+179	-71.5	0
+180	-71.5	0
+181	-71.5	0
+182	-71.5	0
+183	-71.5	0
+184	-71.5	0
+185	-71.5	0
+186	-71.5	0
+187	-71.5	0
+188	-71.5	0
+189	-71.5	0
+190	-71.5	0
+191	-71.5	0
+192	-71.5	0
+193	-71.5	0
+194	-71.5	0
+195	-71.5	0
+196	-71.5	0
+197	-71.5	0
+198	-71.5	0
+199	-71.5	0
+200	-71.5	0
+201	-71.5	0
+202	-71.5	0
+203	-71.5	0
+204	-71.5	0
+205	-71.5	0
+206	-71.5	0
+207	-71.5	0
+208	-71.5	0
+209	-71.5	0
+210	-71.5	0
+211	-71.5	0
+212	-71.5	0
+213	-71.5	0
+214	-71.5	0
+215	-71.5	0
+216	-71.5	0
+217	-71.5	0
+218	-71.5	0
+219	-71.5	0
+220	-71.5	0
+221	-71.5	0
+222	-71.5	0
+223	-71.5	0
+224	-71.5	0
+225	-71.5	0
+226	-71.5	0
+227	-71.5	0
+228	-71.5	0
+229	-71.5	0
+230	-71.5	0
+231	-71.5	0
+232	-71.5	0
+233	-71.5	0
+234	-71.5	0
+235	-71.5	0
+236	-71.5	0
+237	-71.5	0
+238	-71.5	0
+239	-71.5	0
+240	-71.5	0
+241	-71.5	0
+242	-71.5	0
+243	-71.5	0
+244	-71.5	0
+245	-71.5	0
+246	-71.5	0
+247	-71.5	0
+248	-71.5	0
+249	-71.5	0
+250	-71.5	0
+251	-71.5	0
+252	-71.5	0
+253	-71.5	0
+254	-71.5	0
+255	-71.5	0
+256	-71.5	0
+257	-71.5	0
+258	-71.5	0
+259	-71.5	0
+260	-71.5	0
+261	-71.5	0
+262	-71.5	0
+263	-71.5	0
+264	-71.5	0
+265	-71.5	0
+266	-71.5	0
+267	-71.5	0
+268	-71.5	0
+269	-71.5	0
+270	-71.5	0
+271	-71.5	0
+272	-71.5	0
+273	-71.5	0
+274	-71.5	0
+275	-71.5	0
+276	-71.5	0
+277	-71.5	0
+278	-71.5	0
+279	-71.5	0
+280	-71.5	0
+281	-71.5	0
+282	-71.5	0
+283	-71.5	0
+284	-71.5	0
+285	-71.5	0
+286	-71.5	0
+287	-71.5	0
+288	-71.5	0
+289	-71.5	0
+290	-71.5	0
+291	-71.5	0
+292	-71.5	0
+293	-71.5	0
+294	-71.5	0
+295	-71.5	0
+296	-71.5	0
+297	-71.5	0
+298	-71.5	0
+299	-71.5	0
+300	-71.5	0
+301	-71.5	0
+302	-71.5	0
+303	-71.5	0
+304	-71.5	0
+305	-71.5	0
+306	-71.5	0
+307	-71.5	0
+308	-71.5	0
+309	-71.5	0
+310	-71.5	0
+311	-71.5	0
+312	-71.5	0
+313	-71.5	0
+314	-71.5	0
+315	-71.5	0
+316	-71.5	0
+317	-71.5	0
+318	-71.5	0
+319	-71.5	0
+320	-71.5	0
+321	-71.5	0
+322	-71.5	0
+323	-71.5	0
+324	-71.5	0
+325	-71.5	0
+326	-71.5	0
+327	-71.5	0
+328	-71.5	0
+329	-71.5	0
+330	-71.5	0
+331	-71.5	0
+332	-71.5	0
+333	-71.5	0
+334	-71.5	0
+335	-71.5	0
+336	-71.5	0
+337	-71.5	0
+338	-71.5	0
+339	-71.5	0
+340	-71.5	0
+341	-71.5	0
+342	-71.5	0
+343	-71.5	0
+344	-71.5	0
+345	-71.5	0
+346	-71.5	0
+347	-71.5	0
+348	-71.5	0
+349	-71.5	0
+350	-71.5	0
+351	-71.5	0
+352	-71.5	0
+353	-71.5	0
+354	-71.5	0
+355	-71.5	0
+356	-71.5	0
+357	-71.5	0
+358	-71.5	0
+359	-71.5	0
+360	-71.5	0
+0	-71	0
+1	-71	0
+2	-71	0
+3	-71	0
+4	-71	0
+5	-71	0
+6	-71	0
+7	-71	0
+8	-71	0
+9	-71	0
+10	-71	0
+11	-71	0
+12	-71	0
+13	-71	0
+14	-71	0
+15	-71	0
+16	-71	0
+17	-71	0
+18	-71	0
+19	-71	0
+20	-71	0
+21	-71	0
+22	-71	0
+23	-71	0
+24	-71	0
+25	-71	0
+26	-71	0
+27	-71	0
+28	-71	0
+29	-71	0
+30	-71	0
+31	-71	0
+32	-71	0
+33	-71	0
+34	-71	0
+35	-71	0
+36	-71	0
+37	-71	0
+38	-71	0
+39	-71	0
+40	-71	0
+41	-71	0
+42	-71	0
+43	-71	0
+44	-71	0
+45	-71	0
+46	-71	0
+47	-71	0
+48	-71	0
+49	-71	0
+50	-71	0
+51	-71	0
+52	-71	0
+53	-71	0
+54	-71	0
+55	-71	0
+56	-71	0
+57	-71	0
+58	-71	0
+59	-71	0
+60	-71	0
+61	-71	0
+62	-71	0
+63	-71	0
+64	-71	0
+65	-71	0
+66	-71	0
+67	-71	0
+68	-71	0
+69	-71	0
+70	-71	0
+71	-71	0
+72	-71	0
+73	-71	0
+74	-71	0
+75	-71	0
+76	-71	0
+77	-71	0
+78	-71	0
+79	-71	0
+80	-71	0
+81	-71	0
+82	-71	0
+83	-71	0
+84	-71	0
+85	-71	0
+86	-71	0
+87	-71	0
+88	-71	0
+89	-71	0
+90	-71	0
+91	-71	0
+92	-71	0
+93	-71	0
+94	-71	0
+95	-71	0
+96	-71	0
+97	-71	0
+98	-71	0
+99	-71	0
+100	-71	0
+101	-71	0
+102	-71	0
+103	-71	0
+104	-71	0
+105	-71	0
+106	-71	0
+107	-71	0
+108	-71	0
+109	-71	0
+110	-71	0
+111	-71	0
+112	-71	0
+113	-71	0
+114	-71	0
+115	-71	0
+116	-71	0
+117	-71	0
+118	-71	0
+119	-71	0
+120	-71	0
+121	-71	0
+122	-71	0
+123	-71	0
+124	-71	0
+125	-71	0
+126	-71	0
+127	-71	0
+128	-71	0
+129	-71	0
+130	-71	0
+131	-71	0
+132	-71	0
+133	-71	0
+134	-71	0
+135	-71	0
+136	-71	0
+137	-71	0
+138	-71	0
+139	-71	0
+140	-71	0
+141	-71	0
+142	-71	0
+143	-71	0
+144	-71	0
+145	-71	0
+146	-71	0
+147	-71	0
+148	-71	0
+149	-71	0
+150	-71	0
+151	-71	0
+152	-71	0
+153	-71	0
+154	-71	0
+155	-71	0
+156	-71	0
+157	-71	0
+158	-71	0
+159	-71	0
+160	-71	0
+161	-71	0
+162	-71	0
+163	-71	0
+164	-71	0
+165	-71	0
+166	-71	0
+167	-71	0
+168	-71	0
+169	-71	0
+170	-71	0
+171	-71	0
+172	-71	0
+173	-71	0
+174	-71	0
+175	-71	0
+176	-71	0
+177	-71	0
+178	-71	0
+179	-71	0
+180	-71	0
+181	-71	0
+182	-71	0
+183	-71	0
+184	-71	0
+185	-71	0
+186	-71	0
+187	-71	0
+188	-71	0
+189	-71	0
+190	-71	0
+191	-71	0
+192	-71	0
+193	-71	0
+194	-71	0
+195	-71	0
+196	-71	0
+197	-71	0
+198	-71	0
+199	-71	0
+200	-71	0
+201	-71	0
+202	-71	0
+203	-71	0
+204	-71	0
+205	-71	0
+206	-71	0
+207	-71	0
+208	-71	0
+209	-71	0
+210	-71	0
+211	-71	0
+212	-71	0
+213	-71	0
+214	-71	0
+215	-71	0
+216	-71	0
+217	-71	0
+218	-71	0
+219	-71	0
+220	-71	0
+221	-71	0
+222	-71	0
+223	-71	0
+224	-71	0
+225	-71	0
+226	-71	0
+227	-71	0
+228	-71	0
+229	-71	0
+230	-71	0
+231	-71	0
+232	-71	0
+233	-71	0
+234	-71	0
+235	-71	0
+236	-71	0
+237	-71	0
+238	-71	0
+239	-71	0
+240	-71	0
+241	-71	0
+242	-71	0
+243	-71	0
+244	-71	0
+245	-71	0
+246	-71	0
+247	-71	0
+248	-71	0
+249	-71	0
+250	-71	0
+251	-71	0
+252	-71	0
+253	-71	0
+254	-71	0
+255	-71	0
+256	-71	0
+257	-71	0
+258	-71	0
+259	-71	0
+260	-71	0
+261	-71	0
+262	-71	0
+263	-71	0
+264	-71	0
+265	-71	0
+266	-71	0
+267	-71	0
+268	-71	0
+269	-71	0
+270	-71	0
+271	-71	0
+272	-71	0
+273	-71	0
+274	-71	0
+275	-71	0
+276	-71	0
+277	-71	0
+278	-71	0
+279	-71	0
+280	-71	0
+281	-71	0
+282	-71	0
+283	-71	0
+284	-71	0
+285	-71	0
+286	-71	0
+287	-71	0
+288	-71	0
+289	-71	0
+290	-71	0
+291	-71	0
+292	-71	0
+293	-71	0
+294	-71	0
+295	-71	0
+296	-71	0
+297	-71	0
+298	-71	0
+299	-71	0
+300	-71	0
+301	-71	0
+302	-71	0
+303	-71	0
+304	-71	0
+305	-71	0
+306	-71	0
+307	-71	0
+308	-71	0
+309	-71	0
+310	-71	0
+311	-71	0
+312	-71	0
+313	-71	0
+314	-71	0
+315	-71	0
+316	-71	0
+317	-71	0
+318	-71	0
+319	-71	0
+320	-71	0
+321	-71	0
+322	-71	0
+323	-71	0
+324	-71	0
+325	-71	0
+326	-71	0
+327	-71	0
+328	-71	0
+329	-71	0
+330	-71	0
+331	-71	0
+332	-71	0
+333	-71	0
+334	-71	0
+335	-71	0
+336	-71	0
+337	-71	0
+338	-71	0
+339	-71	0
+340	-71	0
+341	-71	0
+342	-71	0
+343	-71	0
+344	-71	0
+345	-71	0
+346	-71	0
+347	-71	0
+348	-71	0
+349	-71	0
+350	-71	0
+351	-71	0
+352	-71	0
+353	-71	0
+354	-71	0
+355	-71	0
+356	-71	0
+357	-71	0
+358	-71	0
+359	-71	0
+360	-71	0
+0	-70.5	0
+1	-70.5	0
+2	-70.5	0
+3	-70.5	0
+4	-70.5	0
+5	-70.5	0
+6	-70.5	0
+7	-70.5	0
+8	-70.5	0
+9	-70.5	0
+10	-70.5	0
+11	-70.5	0
+12	-70.5	0
+13	-70.5	0
+14	-70.5	0
+15	-70.5	0
+16	-70.5	0
+17	-70.5	0
+18	-70.5	0
+19	-70.5	0
+20	-70.5	0
+21	-70.5	0
+22	-70.5	0
+23	-70.5	0
+24	-70.5	0
+25	-70.5	0
+26	-70.5	0
+27	-70.5	0
+28	-70.5	0
+29	-70.5	0
+30	-70.5	0
+31	-70.5	0
+32	-70.5	0
+33	-70.5	0
+34	-70.5	0
+35	-70.5	0
+36	-70.5	0
+37	-70.5	0
+38	-70.5	0
+39	-70.5	0
+40	-70.5	0
+41	-70.5	0
+42	-70.5	0
+43	-70.5	0
+44	-70.5	0
+45	-70.5	0
+46	-70.5	0
+47	-70.5	0
+48	-70.5	0
+49	-70.5	0
+50	-70.5	0
+51	-70.5	0
+52	-70.5	0
+53	-70.5	0
+54	-70.5	0
+55	-70.5	0
+56	-70.5	0
+57	-70.5	0
+58	-70.5	0
+59	-70.5	0
+60	-70.5	0
+61	-70.5	0
+62	-70.5	0
+63	-70.5	0
+64	-70.5	0
+65	-70.5	0
+66	-70.5	0
+67	-70.5	0
+68	-70.5	0
+69	-70.5	0
+70	-70.5	0
+71	-70.5	0
+72	-70.5	0
+73	-70.5	0
+74	-70.5	0
+75	-70.5	0
+76	-70.5	0
+77	-70.5	0
+78	-70.5	0
+79	-70.5	0
+80	-70.5	0
+81	-70.5	0
+82	-70.5	0
+83	-70.5	0
+84	-70.5	0
+85	-70.5	0
+86	-70.5	0
+87	-70.5	0
+88	-70.5	0
+89	-70.5	0
+90	-70.5	0
+91	-70.5	0
+92	-70.5	0
+93	-70.5	0
+94	-70.5	0
+95	-70.5	0
+96	-70.5	0
+97	-70.5	0
+98	-70.5	0
+99	-70.5	0
+100	-70.5	0
+101	-70.5	0
+102	-70.5	0
+103	-70.5	0
+104	-70.5	0
+105	-70.5	0
+106	-70.5	0
+107	-70.5	0
+108	-70.5	0
+109	-70.5	0
+110	-70.5	0
+111	-70.5	0
+112	-70.5	0
+113	-70.5	0
+114	-70.5	0
+115	-70.5	0
+116	-70.5	0
+117	-70.5	0
+118	-70.5	0
+119	-70.5	0
+120	-70.5	0
+121	-70.5	0
+122	-70.5	0
+123	-70.5	0
+124	-70.5	0
+125	-70.5	0
+126	-70.5	0
+127	-70.5	0
+128	-70.5	0
+129	-70.5	0
+130	-70.5	0
+131	-70.5	0
+132	-70.5	0
+133	-70.5	0
+134	-70.5	0
+135	-70.5	0
+136	-70.5	0
+137	-70.5	0
+138	-70.5	0
+139	-70.5	0
+140	-70.5	0
+141	-70.5	0
+142	-70.5	0
+143	-70.5	0
+144	-70.5	0
+145	-70.5	0
+146	-70.5	0
+147	-70.5	0
+148	-70.5	0
+149	-70.5	0
+150	-70.5	0
+151	-70.5	0
+152	-70.5	0
+153	-70.5	0
+154	-70.5	0
+155	-70.5	0
+156	-70.5	0
+157	-70.5	0
+158	-70.5	0
+159	-70.5	0
+160	-70.5	0
+161	-70.5	0
+162	-70.5	0
+163	-70.5	0
+164	-70.5	0
+165	-70.5	0
+166	-70.5	0
+167	-70.5	0
+168	-70.5	0
+169	-70.5	0
+170	-70.5	0
+171	-70.5	0
+172	-70.5	0
+173	-70.5	0
+174	-70.5	0
+175	-70.5	0
+176	-70.5	0
+177	-70.5	0
+178	-70.5	0
+179	-70.5	0
+180	-70.5	0
+181	-70.5	0
+182	-70.5	0
+183	-70.5	0
+184	-70.5	0
+185	-70.5	0
+186	-70.5	0
+187	-70.5	0
+188	-70.5	0
+189	-70.5	0
+190	-70.5	0
+191	-70.5	0
+192	-70.5	0
+193	-70.5	0
+194	-70.5	0
+195	-70.5	0
+196	-70.5	0
+197	-70.5	0
+198	-70.5	0
+199	-70.5	0
+200	-70.5	0
+201	-70.5	0
+202	-70.5	0
+203	-70.5	0
+204	-70.5	0
+205	-70.5	0
+206	-70.5	0
+207	-70.5	0
+208	-70.5	0
+209	-70.5	0
+210	-70.5	0
+211	-70.5	0
+212	-70.5	0
+213	-70.5	0
+214	-70.5	0
+215	-70.5	0
+216	-70.5	0
+217	-70.5	0
+218	-70.5	0
+219	-70.5	0
+220	-70.5	0
+221	-70.5	0
+222	-70.5	0
+223	-70.5	0
+224	-70.5	0
+225	-70.5	0
+226	-70.5	0
+227	-70.5	0
+228	-70.5	0
+229	-70.5	0
+230	-70.5	0
+231	-70.5	0
+232	-70.5	0
+233	-70.5	0
+234	-70.5	0
+235	-70.5	0
+236	-70.5	0
+237	-70.5	0
+238	-70.5	0
+239	-70.5	0
+240	-70.5	0
+241	-70.5	0
+242	-70.5	0
+243	-70.5	0
+244	-70.5	0
+245	-70.5	0
+246	-70.5	0
+247	-70.5	0
+248	-70.5	0
+249	-70.5	0
+250	-70.5	0
+251	-70.5	0
+252	-70.5	0
+253	-70.5	0
+254	-70.5	0
+255	-70.5	0
+256	-70.5	0
+257	-70.5	0
+258	-70.5	0
+259	-70.5	0
+260	-70.5	0
+261	-70.5	0
+262	-70.5	0
+263	-70.5	0
+264	-70.5	0
+265	-70.5	0
+266	-70.5	0
+267	-70.5	0
+268	-70.5	0
+269	-70.5	0
+270	-70.5	0
+271	-70.5	0
+272	-70.5	0
+273	-70.5	0
+274	-70.5	0
+275	-70.5	0
+276	-70.5	0
+277	-70.5	0
+278	-70.5	0
+279	-70.5	0
+280	-70.5	0
+281	-70.5	0
+282	-70.5	0
+283	-70.5	0
+284	-70.5	0
+285	-70.5	0
+286	-70.5	0
+287	-70.5	0
+288	-70.5	0
+289	-70.5	0
+290	-70.5	0
+291	-70.5	0
+292	-70.5	0
+293	-70.5	0
+294	-70.5	0
+295	-70.5	0
+296	-70.5	0
+297	-70.5	0
+298	-70.5	0
+299	-70.5	0
+300	-70.5	0
+301	-70.5	0
+302	-70.5	0
+303	-70.5	0
+304	-70.5	0
+305	-70.5	0
+306	-70.5	0
+307	-70.5	0
+308	-70.5	0
+309	-70.5	0
+310	-70.5	0
+311	-70.5	0
+312	-70.5	0
+313	-70.5	0
+314	-70.5	0
+315	-70.5	0
+316	-70.5	0
+317	-70.5	0
+318	-70.5	0
+319	-70.5	0
+320	-70.5	0
+321	-70.5	0
+322	-70.5	0
+323	-70.5	0
+324	-70.5	0
+325	-70.5	0
+326	-70.5	0
+327	-70.5	0
+328	-70.5	0
+329	-70.5	0
+330	-70.5	0
+331	-70.5	0
+332	-70.5	0
+333	-70.5	0
+334	-70.5	0
+335	-70.5	0
+336	-70.5	0
+337	-70.5	0
+338	-70.5	0
+339	-70.5	0
+340	-70.5	0
+341	-70.5	0
+342	-70.5	0
+343	-70.5	0
+344	-70.5	0
+345	-70.5	0
+346	-70.5	0
+347	-70.5	0
+348	-70.5	0
+349	-70.5	0
+350	-70.5	0
+351	-70.5	0
+352	-70.5	0
+353	-70.5	0
+354	-70.5	0
+355	-70.5	0
+356	-70.5	0
+357	-70.5	0
+358	-70.5	0
+359	-70.5	0
+360	-70.5	0
+0	-70	0
+1	-70	0
+2	-70	0
+3	-70	0
+4	-70	0
+5	-70	0
+6	-70	0
+7	-70	0
+8	-70	0
+9	-70	0
+10	-70	0
+11	-70	0
+12	-70	0
+13	-70	0
+14	-70	0
+15	-70	0
+16	-70	0
+17	-70	0
+18	-70	0
+19	-70	0
+20	-70	0
+21	-70	0
+22	-70	0
+23	-70	0
+24	-70	0
+25	-70	0
+26	-70	0
+27	-70	0
+28	-70	0
+29	-70	0
+30	-70	0
+31	-70	0
+32	-70	0
+33	-70	0
+34	-70	0
+35	-70	0
+36	-70	0
+37	-70	0
+38	-70	0
+39	-70	0
+40	-70	0
+41	-70	0
+42	-70	0
+43	-70	0
+44	-70	0
+45	-70	0
+46	-70	0
+47	-70	0
+48	-70	0
+49	-70	0
+50	-70	0
+51	-70	0
+52	-70	0
+53	-70	0
+54	-70	0
+55	-70	0
+56	-70	0
+57	-70	0
+58	-70	0
+59	-70	0
+60	-70	0
+61	-70	0
+62	-70	0
+63	-70	0
+64	-70	0
+65	-70	0
+66	-70	0
+67	-70	0
+68	-70	0
+69	-70	0
+70	-70	0
+71	-70	0
+72	-70	0
+73	-70	0
+74	-70	0
+75	-70	0
+76	-70	0
+77	-70	0
+78	-70	0
+79	-70	0
+80	-70	0
+81	-70	0
+82	-70	0
+83	-70	0
+84	-70	0
+85	-70	0
+86	-70	0
+87	-70	0
+88	-70	0
+89	-70	0
+90	-70	0
+91	-70	0
+92	-70	0
+93	-70	0
+94	-70	0
+95	-70	0
+96	-70	0
+97	-70	0
+98	-70	0
+99	-70	0
+100	-70	0
+101	-70	0
+102	-70	0
+103	-70	0
+104	-70	0
+105	-70	0
+106	-70	0
+107	-70	0
+108	-70	0
+109	-70	0
+110	-70	0
+111	-70	0
+112	-70	0
+113	-70	0
+114	-70	0
+115	-70	0
+116	-70	0
+117	-70	0
+118	-70	0
+119	-70	0
+120	-70	0
+121	-70	0
+122	-70	0
+123	-70	0
+124	-70	0
+125	-70	0
+126	-70	0
+127	-70	0
+128	-70	0
+129	-70	0
+130	-70	0
+131	-70	0
+132	-70	0
+133	-70	0
+134	-70	0
+135	-70	0
+136	-70	0
+137	-70	0
+138	-70	0
+139	-70	0
+140	-70	0
+141	-70	0
+142	-70	0
+143	-70	0
+144	-70	0
+145	-70	0
+146	-70	0
+147	-70	0
+148	-70	0
+149	-70	0
+150	-70	0
+151	-70	0
+152	-70	0
+153	-70	0
+154	-70	0
+155	-70	0
+156	-70	0
+157	-70	0
+158	-70	0
+159	-70	0
+160	-70	0
+161	-70	0
+162	-70	0
+163	-70	0
+164	-70	0
+165	-70	0
+166	-70	0
+167	-70	0
+168	-70	0
+169	-70	0
+170	-70	0
+171	-70	0
+172	-70	0
+173	-70	0
+174	-70	0
+175	-70	0
+176	-70	0
+177	-70	0
+178	-70	0
+179	-70	0
+180	-70	0
+181	-70	0
+182	-70	0
+183	-70	0
+184	-70	0
+185	-70	0
+186	-70	0
+187	-70	0
+188	-70	0
+189	-70	0
+190	-70	0
+191	-70	0
+192	-70	0
+193	-70	0
+194	-70	0
+195	-70	0
+196	-70	0
+197	-70	0
+198	-70	0
+199	-70	0
+200	-70	0
+201	-70	0
+202	-70	0
+203	-70	0
+204	-70	0
+205	-70	0
+206	-70	0
+207	-70	0
+208	-70	0
+209	-70	0
+210	-70	0
+211	-70	0
+212	-70	0
+213	-70	0
+214	-70	0
+215	-70	0
+216	-70	0
+217	-70	0
+218	-70	0
+219	-70	0
+220	-70	0
+221	-70	0
+222	-70	0
+223	-70	0
+224	-70	0
+225	-70	0
+226	-70	0
+227	-70	0
+228	-70	0
+229	-70	0
+230	-70	0
+231	-70	0
+232	-70	0
+233	-70	0
+234	-70	0
+235	-70	0
+236	-70	0
+237	-70	0
+238	-70	0
+239	-70	0
+240	-70	0
+241	-70	0
+242	-70	0
+243	-70	0
+244	-70	0
+245	-70	0
+246	-70	0
+247	-70	0
+248	-70	0
+249	-70	0
+250	-70	0
+251	-70	0
+252	-70	0
+253	-70	0
+254	-70	0
+255	-70	0
+256	-70	0
+257	-70	0
+258	-70	0
+259	-70	0
+260	-70	0
+261	-70	0
+262	-70	0
+263	-70	0
+264	-70	0
+265	-70	0
+266	-70	0
+267	-70	0
+268	-70	0
+269	-70	0
+270	-70	0
+271	-70	0
+272	-70	0
+273	-70	0
+274	-70	0
+275	-70	0
+276	-70	0
+277	-70	0
+278	-70	0
+279	-70	0
+280	-70	0
+281	-70	0
+282	-70	0
+283	-70	0
+284	-70	0
+285	-70	0
+286	-70	0
+287	-70	0
+288	-70	0
+289	-70	0
+290	-70	0
+291	-70	0
+292	-70	0
+293	-70	0
+294	-70	0
+295	-70	0
+296	-70	0
+297	-70	0
+298	-70	0
+299	-70	0
+300	-70	0
+301	-70	0
+302	-70	0
+303	-70	0
+304	-70	0
+305	-70	0
+306	-70	0
+307	-70	0
+308	-70	0
+309	-70	0
+310	-70	0
+311	-70	0
+312	-70	0
+313	-70	0
+314	-70	0
+315	-70	0
+316	-70	0
+317	-70	0
+318	-70	0
+319	-70	0
+320	-70	0
+321	-70	0
+322	-70	0
+323	-70	0
+324	-70	0
+325	-70	0
+326	-70	0
+327	-70	0
+328	-70	0
+329	-70	0
+330	-70	0
+331	-70	0
+332	-70	0
+333	-70	0
+334	-70	0
+335	-70	0
+336	-70	0
+337	-70	0
+338	-70	0
+339	-70	0
+340	-70	0
+341	-70	0
+342	-70	0
+343	-70	0
+344	-70	0
+345	-70	0
+346	-70	0
+347	-70	0
+348	-70	0
+349	-70	0
+350	-70	0
+351	-70	0
+352	-70	0
+353	-70	0
+354	-70	0
+355	-70	0
+356	-70	0
+357	-70	0
+358	-70	0
+359	-70	0
+360	-70	0
+0	-69.5	0
+1	-69.5	0
+2	-69.5	0
+3	-69.5	0
+4	-69.5	0
+5	-69.5	0
+6	-69.5	0
+7	-69.5	0
+8	-69.5	0
+9	-69.5	0
+10	-69.5	0
+11	-69.5	0
+12	-69.5	0
+13	-69.5	0
+14	-69.5	0
+15	-69.5	0
+16	-69.5	0
+17	-69.5	0
+18	-69.5	0
+19	-69.5	0
+20	-69.5	0
+21	-69.5	0
+22	-69.5	0
+23	-69.5	0
+24	-69.5	0
+25	-69.5	0
+26	-69.5	0
+27	-69.5	0
+28	-69.5	0
+29	-69.5	0
+30	-69.5	0
+31	-69.5	0
+32	-69.5	0
+33	-69.5	0
+34	-69.5	0
+35	-69.5	0
+36	-69.5	0
+37	-69.5	0
+38	-69.5	0
+39	-69.5	0
+40	-69.5	0
+41	-69.5	0
+42	-69.5	0
+43	-69.5	0
+44	-69.5	0
+45	-69.5	0
+46	-69.5	0
+47	-69.5	0
+48	-69.5	0
+49	-69.5	0
+50	-69.5	0
+51	-69.5	0
+52	-69.5	0
+53	-69.5	0
+54	-69.5	0
+55	-69.5	0
+56	-69.5	0
+57	-69.5	0
+58	-69.5	0
+59	-69.5	0
+60	-69.5	0
+61	-69.5	0
+62	-69.5	0
+63	-69.5	0
+64	-69.5	0
+65	-69.5	0
+66	-69.5	0
+67	-69.5	0
+68	-69.5	0
+69	-69.5	0
+70	-69.5	0
+71	-69.5	0
+72	-69.5	0
+73	-69.5	0
+74	-69.5	0
+75	-69.5	0
+76	-69.5	0
+77	-69.5	0
+78	-69.5	0
+79	-69.5	0
+80	-69.5	0
+81	-69.5	0
+82	-69.5	0
+83	-69.5	0
+84	-69.5	0
+85	-69.5	0
+86	-69.5	0
+87	-69.5	0
+88	-69.5	0
+89	-69.5	0
+90	-69.5	0
+91	-69.5	0
+92	-69.5	0
+93	-69.5	0
+94	-69.5	0
+95	-69.5	0
+96	-69.5	0
+97	-69.5	0
+98	-69.5	0
+99	-69.5	0
+100	-69.5	0
+101	-69.5	0
+102	-69.5	0
+103	-69.5	0
+104	-69.5	0
+105	-69.5	0
+106	-69.5	0
+107	-69.5	0
+108	-69.5	0
+109	-69.5	0
+110	-69.5	0
+111	-69.5	0
+112	-69.5	0
+113	-69.5	0
+114	-69.5	0
+115	-69.5	0
+116	-69.5	0
+117	-69.5	0
+118	-69.5	0
+119	-69.5	0
+120	-69.5	0
+121	-69.5	0
+122	-69.5	0
+123	-69.5	0
+124	-69.5	0
+125	-69.5	0
+126	-69.5	0
+127	-69.5	0
+128	-69.5	0
+129	-69.5	0
+130	-69.5	0
+131	-69.5	0
+132	-69.5	0
+133	-69.5	0
+134	-69.5	0
+135	-69.5	0
+136	-69.5	0
+137	-69.5	0
+138	-69.5	0
+139	-69.5	0
+140	-69.5	0
+141	-69.5	0
+142	-69.5	0
+143	-69.5	0
+144	-69.5	0
+145	-69.5	0
+146	-69.5	0
+147	-69.5	0
+148	-69.5	0
+149	-69.5	0
+150	-69.5	0
+151	-69.5	0
+152	-69.5	0
+153	-69.5	0
+154	-69.5	0
+155	-69.5	0
+156	-69.5	0
+157	-69.5	0
+158	-69.5	0
+159	-69.5	0
+160	-69.5	0
+161	-69.5	0
+162	-69.5	0
+163	-69.5	0
+164	-69.5	0
+165	-69.5	0
+166	-69.5	0
+167	-69.5	0
+168	-69.5	0
+169	-69.5	0
+170	-69.5	0
+171	-69.5	0
+172	-69.5	0
+173	-69.5	0
+174	-69.5	0
+175	-69.5	0
+176	-69.5	0
+177	-69.5	0
+178	-69.5	0
+179	-69.5	0
+180	-69.5	0
+181	-69.5	0
+182	-69.5	0
+183	-69.5	0
+184	-69.5	0
+185	-69.5	0
+186	-69.5	0
+187	-69.5	0
+188	-69.5	0
+189	-69.5	0
+190	-69.5	0
+191	-69.5	0
+192	-69.5	0
+193	-69.5	0
+194	-69.5	0
+195	-69.5	0
+196	-69.5	0
+197	-69.5	0
+198	-69.5	0
+199	-69.5	0
+200	-69.5	0
+201	-69.5	0
+202	-69.5	0
+203	-69.5	0
+204	-69.5	0
+205	-69.5	0
+206	-69.5	0
+207	-69.5	0
+208	-69.5	0
+209	-69.5	0
+210	-69.5	0
+211	-69.5	0
+212	-69.5	0
+213	-69.5	0
+214	-69.5	0
+215	-69.5	0
+216	-69.5	0
+217	-69.5	0
+218	-69.5	0
+219	-69.5	0
+220	-69.5	0
+221	-69.5	0
+222	-69.5	0
+223	-69.5	0
+224	-69.5	0
+225	-69.5	0
+226	-69.5	0
+227	-69.5	0
+228	-69.5	0
+229	-69.5	0
+230	-69.5	0
+231	-69.5	0
+232	-69.5	0
+233	-69.5	0
+234	-69.5	0
+235	-69.5	0
+236	-69.5	0
+237	-69.5	0
+238	-69.5	0
+239	-69.5	0
+240	-69.5	0
+241	-69.5	0
+242	-69.5	0
+243	-69.5	0
+244	-69.5	0
+245	-69.5	0
+246	-69.5	0
+247	-69.5	0
+248	-69.5	0
+249	-69.5	0
+250	-69.5	0
+251	-69.5	0
+252	-69.5	0
+253	-69.5	0
+254	-69.5	0
+255	-69.5	0
+256	-69.5	0
+257	-69.5	0
+258	-69.5	0
+259	-69.5	0
+260	-69.5	0
+261	-69.5	0
+262	-69.5	0
+263	-69.5	0
+264	-69.5	0
+265	-69.5	0
+266	-69.5	0
+267	-69.5	0
+268	-69.5	0
+269	-69.5	0
+270	-69.5	0
+271	-69.5	0
+272	-69.5	0
+273	-69.5	0
+274	-69.5	0
+275	-69.5	0
+276	-69.5	0
+277	-69.5	0
+278	-69.5	0
+279	-69.5	0
+280	-69.5	0
+281	-69.5	0
+282	-69.5	0
+283	-69.5	0
+284	-69.5	0
+285	-69.5	0
+286	-69.5	0
+287	-69.5	0
+288	-69.5	0
+289	-69.5	0
+290	-69.5	0
+291	-69.5	0
+292	-69.5	0
+293	-69.5	0
+294	-69.5	0
+295	-69.5	0
+296	-69.5	0
+297	-69.5	0
+298	-69.5	0
+299	-69.5	0
+300	-69.5	0
+301	-69.5	0
+302	-69.5	0
+303	-69.5	0
+304	-69.5	0
+305	-69.5	0
+306	-69.5	0
+307	-69.5	0
+308	-69.5	0
+309	-69.5	0
+310	-69.5	0
+311	-69.5	0
+312	-69.5	0
+313	-69.5	0
+314	-69.5	0
+315	-69.5	0
+316	-69.5	0
+317	-69.5	0
+318	-69.5	0
+319	-69.5	0
+320	-69.5	0
+321	-69.5	0
+322	-69.5	0
+323	-69.5	0
+324	-69.5	0
+325	-69.5	0
+326	-69.5	0
+327	-69.5	0
+328	-69.5	0
+329	-69.5	0
+330	-69.5	0
+331	-69.5	0
+332	-69.5	0
+333	-69.5	0
+334	-69.5	0
+335	-69.5	0
+336	-69.5	0
+337	-69.5	0
+338	-69.5	0
+339	-69.5	0
+340	-69.5	0
+341	-69.5	0
+342	-69.5	0
+343	-69.5	0
+344	-69.5	0
+345	-69.5	0
+346	-69.5	0
+347	-69.5	0
+348	-69.5	0
+349	-69.5	0
+350	-69.5	0
+351	-69.5	0
+352	-69.5	0
+353	-69.5	0
+354	-69.5	0
+355	-69.5	0
+356	-69.5	0
+357	-69.5	0
+358	-69.5	0
+359	-69.5	0
+360	-69.5	0
+0	-69	0
+1	-69	0
+2	-69	0
+3	-69	0
+4	-69	0
+5	-69	0
+6	-69	0
+7	-69	0
+8	-69	0
+9	-69	0
+10	-69	0
+11	-69	0
+12	-69	0
+13	-69	0
+14	-69	0
+15	-69	0
+16	-69	0
+17	-69	0
+18	-69	0
+19	-69	0
+20	-69	0
+21	-69	0
+22	-69	0
+23	-69	0
+24	-69	0
+25	-69	0
+26	-69	0
+27	-69	0
+28	-69	0
+29	-69	0
+30	-69	0
+31	-69	0
+32	-69	0
+33	-69	0
+34	-69	0
+35	-69	0
+36	-69	0
+37	-69	0
+38	-69	0
+39	-69	0
+40	-69	0
+41	-69	0
+42	-69	0
+43	-69	0
+44	-69	0
+45	-69	0
+46	-69	0
+47	-69	0
+48	-69	0
+49	-69	0
+50	-69	0
+51	-69	0
+52	-69	0
+53	-69	0
+54	-69	0
+55	-69	0
+56	-69	0
+57	-69	0
+58	-69	0
+59	-69	0
+60	-69	0
+61	-69	0
+62	-69	0
+63	-69	0
+64	-69	0
+65	-69	0
+66	-69	0
+67	-69	0
+68	-69	0
+69	-69	0
+70	-69	0
+71	-69	0
+72	-69	0
+73	-69	0
+74	-69	0
+75	-69	0
+76	-69	0
+77	-69	0
+78	-69	0
+79	-69	0
+80	-69	0
+81	-69	0
+82	-69	0
+83	-69	0
+84	-69	0
+85	-69	0
+86	-69	0
+87	-69	0
+88	-69	0
+89	-69	0
+90	-69	0
+91	-69	0
+92	-69	0
+93	-69	0
+94	-69	0
+95	-69	0
+96	-69	0
+97	-69	0
+98	-69	0
+99	-69	0
+100	-69	0
+101	-69	0
+102	-69	0
+103	-69	0
+104	-69	0
+105	-69	0
+106	-69	0
+107	-69	0
+108	-69	0
+109	-69	0
+110	-69	0
+111	-69	0
+112	-69	0
+113	-69	0
+114	-69	0
+115	-69	0
+116	-69	0
+117	-69	0
+118	-69	0
+119	-69	0
+120	-69	0
+121	-69	0
+122	-69	0
+123	-69	0
+124	-69	0
+125	-69	0
+126	-69	0
+127	-69	0
+128	-69	0
+129	-69	0
+130	-69	0
+131	-69	0
+132	-69	0
+133	-69	0
+134	-69	0
+135	-69	0
+136	-69	0
+137	-69	0
+138	-69	0
+139	-69	0
+140	-69	0
+141	-69	0
+142	-69	0
+143	-69	0
+144	-69	0
+145	-69	0
+146	-69	0
+147	-69	0
+148	-69	0
+149	-69	0
+150	-69	0
+151	-69	0
+152	-69	0
+153	-69	0
+154	-69	0
+155	-69	0
+156	-69	0
+157	-69	0
+158	-69	0
+159	-69	0
+160	-69	0
+161	-69	0
+162	-69	0
+163	-69	0
+164	-69	0
+165	-69	0
+166	-69	0
+167	-69	0
+168	-69	0
+169	-69	0
+170	-69	0
+171	-69	0
+172	-69	0
+173	-69	0
+174	-69	0
+175	-69	0
+176	-69	0
+177	-69	0
+178	-69	0
+179	-69	0
+180	-69	0
+181	-69	0
+182	-69	0
+183	-69	0
+184	-69	0
+185	-69	0
+186	-69	0
+187	-69	0
+188	-69	0
+189	-69	0
+190	-69	0
+191	-69	0
+192	-69	0
+193	-69	0
+194	-69	0
+195	-69	0
+196	-69	0
+197	-69	0
+198	-69	0
+199	-69	0
+200	-69	0
+201	-69	0
+202	-69	0
+203	-69	0
+204	-69	0
+205	-69	0
+206	-69	0
+207	-69	0
+208	-69	0
+209	-69	0
+210	-69	0
+211	-69	0
+212	-69	0
+213	-69	0
+214	-69	0
+215	-69	0
+216	-69	0
+217	-69	0
+218	-69	0
+219	-69	0
+220	-69	0
+221	-69	0
+222	-69	0
+223	-69	0
+224	-69	0
+225	-69	0
+226	-69	0
+227	-69	0
+228	-69	0
+229	-69	0
+230	-69	0
+231	-69	0
+232	-69	0
+233	-69	0
+234	-69	0
+235	-69	0
+236	-69	0
+237	-69	0
+238	-69	0
+239	-69	0
+240	-69	0
+241	-69	0
+242	-69	0
+243	-69	0
+244	-69	0
+245	-69	0
+246	-69	0
+247	-69	0
+248	-69	0
+249	-69	0
+250	-69	0
+251	-69	0
+252	-69	0
+253	-69	0
+254	-69	0
+255	-69	0
+256	-69	0
+257	-69	0
+258	-69	0
+259	-69	0
+260	-69	0
+261	-69	0
+262	-69	0
+263	-69	0
+264	-69	0
+265	-69	0
+266	-69	0
+267	-69	0
+268	-69	0
+269	-69	0
+270	-69	0
+271	-69	0
+272	-69	0
+273	-69	0
+274	-69	0
+275	-69	0
+276	-69	0
+277	-69	0
+278	-69	0
+279	-69	0
+280	-69	0
+281	-69	0
+282	-69	0
+283	-69	0
+284	-69	0
+285	-69	0
+286	-69	0
+287	-69	0
+288	-69	0
+289	-69	0
+290	-69	0
+291	-69	0
+292	-69	0
+293	-69	0
+294	-69	0
+295	-69	0
+296	-69	0
+297	-69	0
+298	-69	0
+299	-69	0
+300	-69	0
+301	-69	0
+302	-69	0
+303	-69	0
+304	-69	0
+305	-69	0
+306	-69	0
+307	-69	0
+308	-69	0
+309	-69	0
+310	-69	0
+311	-69	0
+312	-69	0
+313	-69	0
+314	-69	0
+315	-69	0
+316	-69	0
+317	-69	0
+318	-69	0
+319	-69	0
+320	-69	0
+321	-69	0
+322	-69	0
+323	-69	0
+324	-69	0
+325	-69	0
+326	-69	0
+327	-69	0
+328	-69	0
+329	-69	0
+330	-69	0
+331	-69	0
+332	-69	0
+333	-69	0
+334	-69	0
+335	-69	0
+336	-69	0
+337	-69	0
+338	-69	0
+339	-69	0
+340	-69	0
+341	-69	0
+342	-69	0
+343	-69	0
+344	-69	0
+345	-69	0
+346	-69	0
+347	-69	0
+348	-69	0
+349	-69	0
+350	-69	0
+351	-69	0
+352	-69	0
+353	-69	0
+354	-69	0
+355	-69	0
+356	-69	0
+357	-69	0
+358	-69	0
+359	-69	0
+360	-69	0
+0	-68.5	0
+1	-68.5	0
+2	-68.5	0
+3	-68.5	0
+4	-68.5	0
+5	-68.5	0
+6	-68.5	0
+7	-68.5	0
+8	-68.5	0
+9	-68.5	0
+10	-68.5	0
+11	-68.5	0
+12	-68.5	0
+13	-68.5	0
+14	-68.5	0
+15	-68.5	0
+16	-68.5	0
+17	-68.5	0
+18	-68.5	0
+19	-68.5	0
+20	-68.5	0
+21	-68.5	0
+22	-68.5	0
+23	-68.5	0
+24	-68.5	0
+25	-68.5	0
+26	-68.5	0
+27	-68.5	0
+28	-68.5	0
+29	-68.5	0
+30	-68.5	0
+31	-68.5	0
+32	-68.5	0
+33	-68.5	0
+34	-68.5	0
+35	-68.5	0
+36	-68.5	0
+37	-68.5	0
+38	-68.5	0
+39	-68.5	0
+40	-68.5	0
+41	-68.5	0
+42	-68.5	0
+43	-68.5	0
+44	-68.5	0
+45	-68.5	0
+46	-68.5	0
+47	-68.5	0
+48	-68.5	0
+49	-68.5	0
+50	-68.5	0
+51	-68.5	0
+52	-68.5	0
+53	-68.5	0
+54	-68.5	0
+55	-68.5	0
+56	-68.5	0
+57	-68.5	0
+58	-68.5	0
+59	-68.5	0
+60	-68.5	0
+61	-68.5	0
+62	-68.5	0
+63	-68.5	0
+64	-68.5	0
+65	-68.5	0
+66	-68.5	0
+67	-68.5	0
+68	-68.5	0
+69	-68.5	0
+70	-68.5	0
+71	-68.5	0
+72	-68.5	0
+73	-68.5	0
+74	-68.5	0
+75	-68.5	0
+76	-68.5	0
+77	-68.5	0
+78	-68.5	0
+79	-68.5	0
+80	-68.5	0
+81	-68.5	0
+82	-68.5	0
+83	-68.5	0
+84	-68.5	0
+85	-68.5	0
+86	-68.5	0
+87	-68.5	0
+88	-68.5	0
+89	-68.5	0
+90	-68.5	0
+91	-68.5	0
+92	-68.5	0
+93	-68.5	0
+94	-68.5	0
+95	-68.5	0
+96	-68.5	0
+97	-68.5	0
+98	-68.5	0
+99	-68.5	0
+100	-68.5	0
+101	-68.5	0
+102	-68.5	0
+103	-68.5	0
+104	-68.5	0
+105	-68.5	0
+106	-68.5	0
+107	-68.5	0
+108	-68.5	0
+109	-68.5	0
+110	-68.5	0
+111	-68.5	0
+112	-68.5	0
+113	-68.5	0
+114	-68.5	0
+115	-68.5	0
+116	-68.5	0
+117	-68.5	0
+118	-68.5	0
+119	-68.5	0
+120	-68.5	0
+121	-68.5	0
+122	-68.5	0
+123	-68.5	0
+124	-68.5	0
+125	-68.5	0
+126	-68.5	0
+127	-68.5	0
+128	-68.5	0
+129	-68.5	0
+130	-68.5	0
+131	-68.5	0
+132	-68.5	0
+133	-68.5	0
+134	-68.5	0
+135	-68.5	0
+136	-68.5	0
+137	-68.5	0
+138	-68.5	0
+139	-68.5	0
+140	-68.5	0
+141	-68.5	0
+142	-68.5	0
+143	-68.5	0
+144	-68.5	0
+145	-68.5	0
+146	-68.5	0
+147	-68.5	0
+148	-68.5	0
+149	-68.5	0
+150	-68.5	0
+151	-68.5	0
+152	-68.5	0
+153	-68.5	0
+154	-68.5	0
+155	-68.5	0
+156	-68.5	0
+157	-68.5	0
+158	-68.5	0
+159	-68.5	0
+160	-68.5	0
+161	-68.5	0
+162	-68.5	0
+163	-68.5	0
+164	-68.5	0
+165	-68.5	0
+166	-68.5	0
+167	-68.5	0
+168	-68.5	0
+169	-68.5	0
+170	-68.5	0
+171	-68.5	0
+172	-68.5	0
+173	-68.5	0
+174	-68.5	0
+175	-68.5	0
+176	-68.5	0
+177	-68.5	0
+178	-68.5	0
+179	-68.5	0
+180	-68.5	0
+181	-68.5	0
+182	-68.5	0
+183	-68.5	0
+184	-68.5	0
+185	-68.5	0
+186	-68.5	0
+187	-68.5	0
+188	-68.5	0
+189	-68.5	0
+190	-68.5	0
+191	-68.5	0
+192	-68.5	0
+193	-68.5	0
+194	-68.5	0
+195	-68.5	0
+196	-68.5	0
+197	-68.5	0
+198	-68.5	0
+199	-68.5	0
+200	-68.5	0
+201	-68.5	0
+202	-68.5	0
+203	-68.5	0
+204	-68.5	0
+205	-68.5	0
+206	-68.5	0
+207	-68.5	0
+208	-68.5	0
+209	-68.5	0
+210	-68.5	0
+211	-68.5	0
+212	-68.5	0
+213	-68.5	0
+214	-68.5	0
+215	-68.5	0
+216	-68.5	0
+217	-68.5	0
+218	-68.5	0
+219	-68.5	0
+220	-68.5	0
+221	-68.5	0
+222	-68.5	0
+223	-68.5	0
+224	-68.5	0
+225	-68.5	0
+226	-68.5	0
+227	-68.5	0
+228	-68.5	0
+229	-68.5	0
+230	-68.5	0
+231	-68.5	0
+232	-68.5	0
+233	-68.5	0
+234	-68.5	0
+235	-68.5	0
+236	-68.5	0
+237	-68.5	0
+238	-68.5	0
+239	-68.5	0
+240	-68.5	0
+241	-68.5	0
+242	-68.5	0
+243	-68.5	0
+244	-68.5	0
+245	-68.5	0
+246	-68.5	0
+247	-68.5	0
+248	-68.5	0
+249	-68.5	0
+250	-68.5	0
+251	-68.5	0
+252	-68.5	0
+253	-68.5	0
+254	-68.5	0
+255	-68.5	0
+256	-68.5	0
+257	-68.5	0
+258	-68.5	0
+259	-68.5	0
+260	-68.5	0
+261	-68.5	0
+262	-68.5	0
+263	-68.5	0
+264	-68.5	0
+265	-68.5	0
+266	-68.5	0
+267	-68.5	0
+268	-68.5	0
+269	-68.5	0
+270	-68.5	0
+271	-68.5	0
+272	-68.5	0
+273	-68.5	0
+274	-68.5	0
+275	-68.5	0
+276	-68.5	0
+277	-68.5	0
+278	-68.5	0
+279	-68.5	0
+280	-68.5	0
+281	-68.5	0
+282	-68.5	0
+283	-68.5	0
+284	-68.5	0
+285	-68.5	0
+286	-68.5	0
+287	-68.5	0
+288	-68.5	0
+289	-68.5	0
+290	-68.5	0
+291	-68.5	0
+292	-68.5	0
+293	-68.5	0
+294	-68.5	0
+295	-68.5	0
+296	-68.5	0
+297	-68.5	0
+298	-68.5	0
+299	-68.5	0
+300	-68.5	0
+301	-68.5	0
+302	-68.5	0
+303	-68.5	0
+304	-68.5	0
+305	-68.5	0
+306	-68.5	0
+307	-68.5	0
+308	-68.5	0
+309	-68.5	0
+310	-68.5	0
+311	-68.5	0
+312	-68.5	0
+313	-68.5	0
+314	-68.5	0
+315	-68.5	0
+316	-68.5	0
+317	-68.5	0
+318	-68.5	0
+319	-68.5	0
+320	-68.5	0
+321	-68.5	0
+322	-68.5	0
+323	-68.5	0
+324	-68.5	0
+325	-68.5	0
+326	-68.5	0
+327	-68.5	0
+328	-68.5	0
+329	-68.5	0
+330	-68.5	0
+331	-68.5	0
+332	-68.5	0
+333	-68.5	0
+334	-68.5	0
+335	-68.5	0
+336	-68.5	0
+337	-68.5	0
+338	-68.5	0
+339	-68.5	0
+340	-68.5	0
+341	-68.5	0
+342	-68.5	0
+343	-68.5	0
+344	-68.5	0
+345	-68.5	0
+346	-68.5	0
+347	-68.5	0
+348	-68.5	0
+349	-68.5	0
+350	-68.5	0
+351	-68.5	0
+352	-68.5	0
+353	-68.5	0
+354	-68.5	0
+355	-68.5	0
+356	-68.5	0
+357	-68.5	0
+358	-68.5	0
+359	-68.5	0
+360	-68.5	0
+0	-68	0
+1	-68	0
+2	-68	0
+3	-68	0
+4	-68	0
+5	-68	0
+6	-68	0
+7	-68	0
+8	-68	0
+9	-68	0
+10	-68	0
+11	-68	0
+12	-68	0
+13	-68	0
+14	-68	0
+15	-68	0
+16	-68	0
+17	-68	0
+18	-68	0
+19	-68	0
+20	-68	0
+21	-68	0
+22	-68	0
+23	-68	0
+24	-68	0
+25	-68	0
+26	-68	0
+27	-68	0
+28	-68	0
+29	-68	0
+30	-68	0
+31	-68	0
+32	-68	0
+33	-68	0
+34	-68	0
+35	-68	0
+36	-68	0
+37	-68	0
+38	-68	0
+39	-68	0
+40	-68	0
+41	-68	0
+42	-68	0
+43	-68	0
+44	-68	0
+45	-68	0
+46	-68	0
+47	-68	0
+48	-68	0
+49	-68	0
+50	-68	0
+51	-68	0
+52	-68	0
+53	-68	0
+54	-68	0
+55	-68	0
+56	-68	0
+57	-68	0
+58	-68	0
+59	-68	0
+60	-68	0
+61	-68	0
+62	-68	0
+63	-68	0
+64	-68	0
+65	-68	0
+66	-68	0
+67	-68	0
+68	-68	0
+69	-68	0
+70	-68	0
+71	-68	0
+72	-68	0
+73	-68	0
+74	-68	0
+75	-68	0
+76	-68	0
+77	-68	0
+78	-68	0
+79	-68	0
+80	-68	0
+81	-68	0
+82	-68	0
+83	-68	0
+84	-68	0
+85	-68	0
+86	-68	0
+87	-68	0
+88	-68	0
+89	-68	0
+90	-68	0
+91	-68	0
+92	-68	0
+93	-68	0
+94	-68	0
+95	-68	0
+96	-68	0
+97	-68	0
+98	-68	0
+99	-68	0
+100	-68	0
+101	-68	0
+102	-68	0
+103	-68	0
+104	-68	0
+105	-68	0
+106	-68	0
+107	-68	0
+108	-68	0
+109	-68	0
+110	-68	0
+111	-68	0
+112	-68	0
+113	-68	0
+114	-68	0
+115	-68	0
+116	-68	0
+117	-68	0
+118	-68	0
+119	-68	0
+120	-68	0
+121	-68	0
+122	-68	0
+123	-68	0
+124	-68	0
+125	-68	0
+126	-68	0
+127	-68	0
+128	-68	0
+129	-68	0
+130	-68	0
+131	-68	0
+132	-68	0
+133	-68	0
+134	-68	0
+135	-68	0
+136	-68	0
+137	-68	0
+138	-68	0
+139	-68	0
+140	-68	0
+141	-68	0
+142	-68	0
+143	-68	0
+144	-68	0
+145	-68	0
+146	-68	0
+147	-68	0
+148	-68	0
+149	-68	0
+150	-68	0
+151	-68	0
+152	-68	0
+153	-68	0
+154	-68	0
+155	-68	0
+156	-68	0
+157	-68	0
+158	-68	0
+159	-68	0
+160	-68	0
+161	-68	0
+162	-68	0
+163	-68	0
+164	-68	0
+165	-68	0
+166	-68	0
+167	-68	0
+168	-68	0
+169	-68	0
+170	-68	0
+171	-68	0
+172	-68	0
+173	-68	0
+174	-68	0
+175	-68	0
+176	-68	0
+177	-68	0
+178	-68	0
+179	-68	0
+180	-68	0
+181	-68	0
+182	-68	0
+183	-68	0
+184	-68	0
+185	-68	0
+186	-68	0
+187	-68	0
+188	-68	0
+189	-68	0
+190	-68	0
+191	-68	0
+192	-68	0
+193	-68	0
+194	-68	0
+195	-68	0
+196	-68	0
+197	-68	0
+198	-68	0
+199	-68	0
+200	-68	0
+201	-68	0
+202	-68	0
+203	-68	0
+204	-68	0
+205	-68	0
+206	-68	0
+207	-68	0
+208	-68	0
+209	-68	0
+210	-68	0
+211	-68	0
+212	-68	0
+213	-68	0
+214	-68	0
+215	-68	0
+216	-68	0
+217	-68	0
+218	-68	0
+219	-68	0
+220	-68	0
+221	-68	0
+222	-68	0
+223	-68	0
+224	-68	0
+225	-68	0
+226	-68	0
+227	-68	0
+228	-68	0
+229	-68	0
+230	-68	0
+231	-68	0
+232	-68	0
+233	-68	0
+234	-68	0
+235	-68	0
+236	-68	0
+237	-68	0
+238	-68	0
+239	-68	0
+240	-68	0
+241	-68	0
+242	-68	0
+243	-68	0
+244	-68	0
+245	-68	0
+246	-68	0
+247	-68	0
+248	-68	0
+249	-68	0
+250	-68	0
+251	-68	0
+252	-68	0
+253	-68	0
+254	-68	0
+255	-68	0
+256	-68	0
+257	-68	0
+258	-68	0
+259	-68	0
+260	-68	0
+261	-68	0
+262	-68	0
+263	-68	0
+264	-68	0
+265	-68	0
+266	-68	0
+267	-68	0
+268	-68	0
+269	-68	0
+270	-68	0
+271	-68	0
+272	-68	0
+273	-68	0
+274	-68	0
+275	-68	0
+276	-68	0
+277	-68	0
+278	-68	0
+279	-68	0
+280	-68	0
+281	-68	0
+282	-68	0
+283	-68	0
+284	-68	0
+285	-68	0
+286	-68	0
+287	-68	0
+288	-68	0
+289	-68	0
+290	-68	0
+291	-68	0
+292	-68	0
+293	-68	0
+294	-68	0
+295	-68	0
+296	-68	0
+297	-68	0
+298	-68	0
+299	-68	0
+300	-68	0
+301	-68	0
+302	-68	0
+303	-68	0
+304	-68	0
+305	-68	0
+306	-68	0
+307	-68	0
+308	-68	0
+309	-68	0
+310	-68	0
+311	-68	0
+312	-68	0
+313	-68	0
+314	-68	0
+315	-68	0
+316	-68	0
+317	-68	0
+318	-68	0
+319	-68	0
+320	-68	0
+321	-68	0
+322	-68	0
+323	-68	0
+324	-68	0
+325	-68	0
+326	-68	0
+327	-68	0
+328	-68	0
+329	-68	0
+330	-68	0
+331	-68	0
+332	-68	0
+333	-68	0
+334	-68	0
+335	-68	0
+336	-68	0
+337	-68	0
+338	-68	0
+339	-68	0
+340	-68	0
+341	-68	0
+342	-68	0
+343	-68	0
+344	-68	0
+345	-68	0
+346	-68	0
+347	-68	0
+348	-68	0
+349	-68	0
+350	-68	0
+351	-68	0
+352	-68	0
+353	-68	0
+354	-68	0
+355	-68	0
+356	-68	0
+357	-68	0
+358	-68	0
+359	-68	0
+360	-68	0
+0	-67.5	0
+1	-67.5	0
+2	-67.5	0
+3	-67.5	0
+4	-67.5	0
+5	-67.5	0
+6	-67.5	0
+7	-67.5	0
+8	-67.5	0
+9	-67.5	0
+10	-67.5	0
+11	-67.5	0
+12	-67.5	0
+13	-67.5	0
+14	-67.5	0
+15	-67.5	0
+16	-67.5	0
+17	-67.5	0
+18	-67.5	0
+19	-67.5	0
+20	-67.5	0
+21	-67.5	0
+22	-67.5	0
+23	-67.5	0
+24	-67.5	0
+25	-67.5	0
+26	-67.5	0
+27	-67.5	0
+28	-67.5	0
+29	-67.5	0
+30	-67.5	0
+31	-67.5	0
+32	-67.5	0
+33	-67.5	0
+34	-67.5	0
+35	-67.5	0
+36	-67.5	0
+37	-67.5	0
+38	-67.5	0
+39	-67.5	0
+40	-67.5	0
+41	-67.5	0
+42	-67.5	0
+43	-67.5	0
+44	-67.5	0
+45	-67.5	0
+46	-67.5	0
+47	-67.5	0
+48	-67.5	0
+49	-67.5	0
+50	-67.5	0
+51	-67.5	0
+52	-67.5	0
+53	-67.5	0
+54	-67.5	0
+55	-67.5	0
+56	-67.5	0
+57	-67.5	0
+58	-67.5	0
+59	-67.5	0
+60	-67.5	0
+61	-67.5	0
+62	-67.5	0
+63	-67.5	0
+64	-67.5	0
+65	-67.5	0
+66	-67.5	0
+67	-67.5	0
+68	-67.5	0
+69	-67.5	0
+70	-67.5	0
+71	-67.5	0
+72	-67.5	0
+73	-67.5	0
+74	-67.5	0
+75	-67.5	0
+76	-67.5	0
+77	-67.5	0
+78	-67.5	0
+79	-67.5	0
+80	-67.5	0
+81	-67.5	0
+82	-67.5	0
+83	-67.5	0
+84	-67.5	0
+85	-67.5	0
+86	-67.5	0
+87	-67.5	0
+88	-67.5	0
+89	-67.5	0
+90	-67.5	0
+91	-67.5	0
+92	-67.5	0
+93	-67.5	0
+94	-67.5	0
+95	-67.5	0
+96	-67.5	0
+97	-67.5	0
+98	-67.5	0
+99	-67.5	0
+100	-67.5	0
+101	-67.5	0
+102	-67.5	0
+103	-67.5	0
+104	-67.5	0
+105	-67.5	0
+106	-67.5	0
+107	-67.5	0
+108	-67.5	0
+109	-67.5	0
+110	-67.5	0
+111	-67.5	0
+112	-67.5	0
+113	-67.5	0
+114	-67.5	0
+115	-67.5	0
+116	-67.5	0
+117	-67.5	0
+118	-67.5	0
+119	-67.5	0
+120	-67.5	0
+121	-67.5	0
+122	-67.5	0
+123	-67.5	0
+124	-67.5	0
+125	-67.5	0
+126	-67.5	0
+127	-67.5	0
+128	-67.5	0
+129	-67.5	0
+130	-67.5	0
+131	-67.5	0
+132	-67.5	0
+133	-67.5	0
+134	-67.5	0
+135	-67.5	0
+136	-67.5	0
+137	-67.5	0
+138	-67.5	0
+139	-67.5	0
+140	-67.5	0
+141	-67.5	0
+142	-67.5	0
+143	-67.5	0
+144	-67.5	0
+145	-67.5	0
+146	-67.5	0
+147	-67.5	0
+148	-67.5	0
+149	-67.5	0
+150	-67.5	0
+151	-67.5	0
+152	-67.5	0
+153	-67.5	0
+154	-67.5	0
+155	-67.5	0
+156	-67.5	0
+157	-67.5	0
+158	-67.5	0
+159	-67.5	0
+160	-67.5	0
+161	-67.5	0
+162	-67.5	0
+163	-67.5	0
+164	-67.5	0
+165	-67.5	0
+166	-67.5	0
+167	-67.5	0
+168	-67.5	0
+169	-67.5	0
+170	-67.5	0
+171	-67.5	0
+172	-67.5	0
+173	-67.5	0
+174	-67.5	0
+175	-67.5	0
+176	-67.5	0
+177	-67.5	0
+178	-67.5	0
+179	-67.5	0
+180	-67.5	0
+181	-67.5	0
+182	-67.5	0
+183	-67.5	0
+184	-67.5	0
+185	-67.5	0
+186	-67.5	0
+187	-67.5	0
+188	-67.5	0
+189	-67.5	0
+190	-67.5	0
+191	-67.5	0
+192	-67.5	0
+193	-67.5	0
+194	-67.5	0
+195	-67.5	0
+196	-67.5	0
+197	-67.5	0
+198	-67.5	0
+199	-67.5	0
+200	-67.5	0
+201	-67.5	0
+202	-67.5	0
+203	-67.5	0
+204	-67.5	0
+205	-67.5	0
+206	-67.5	0
+207	-67.5	0
+208	-67.5	0
+209	-67.5	0
+210	-67.5	0
+211	-67.5	0
+212	-67.5	0
+213	-67.5	0
+214	-67.5	0
+215	-67.5	0
+216	-67.5	0
+217	-67.5	0
+218	-67.5	0
+219	-67.5	0
+220	-67.5	0
+221	-67.5	0
+222	-67.5	0
+223	-67.5	0
+224	-67.5	0
+225	-67.5	0
+226	-67.5	0
+227	-67.5	0
+228	-67.5	0
+229	-67.5	0
+230	-67.5	0
+231	-67.5	0
+232	-67.5	0
+233	-67.5	0
+234	-67.5	0
+235	-67.5	0
+236	-67.5	0
+237	-67.5	0
+238	-67.5	0
+239	-67.5	0
+240	-67.5	0
+241	-67.5	0
+242	-67.5	0
+243	-67.5	0
+244	-67.5	0
+245	-67.5	0
+246	-67.5	0
+247	-67.5	0
+248	-67.5	0
+249	-67.5	0
+250	-67.5	0
+251	-67.5	0
+252	-67.5	0
+253	-67.5	0
+254	-67.5	0
+255	-67.5	0
+256	-67.5	0
+257	-67.5	0
+258	-67.5	0
+259	-67.5	0
+260	-67.5	0
+261	-67.5	0
+262	-67.5	0
+263	-67.5	0
+264	-67.5	0
+265	-67.5	0
+266	-67.5	0
+267	-67.5	0
+268	-67.5	0
+269	-67.5	0
+270	-67.5	0
+271	-67.5	0
+272	-67.5	0
+273	-67.5	0
+274	-67.5	0
+275	-67.5	0
+276	-67.5	0
+277	-67.5	0
+278	-67.5	0
+279	-67.5	0
+280	-67.5	0
+281	-67.5	0
+282	-67.5	0
+283	-67.5	0
+284	-67.5	0
+285	-67.5	0
+286	-67.5	0
+287	-67.5	0
+288	-67.5	0
+289	-67.5	0
+290	-67.5	0
+291	-67.5	0
+292	-67.5	0
+293	-67.5	0
+294	-67.5	0
+295	-67.5	0
+296	-67.5	0
+297	-67.5	0
+298	-67.5	0
+299	-67.5	0
+300	-67.5	0
+301	-67.5	0
+302	-67.5	0
+303	-67.5	0
+304	-67.5	0
+305	-67.5	0
+306	-67.5	0
+307	-67.5	0
+308	-67.5	0
+309	-67.5	0
+310	-67.5	0
+311	-67.5	0
+312	-67.5	0
+313	-67.5	0
+314	-67.5	0
+315	-67.5	0
+316	-67.5	0
+317	-67.5	0
+318	-67.5	0
+319	-67.5	0
+320	-67.5	0
+321	-67.5	0
+322	-67.5	0
+323	-67.5	0
+324	-67.5	0
+325	-67.5	0
+326	-67.5	0
+327	-67.5	0
+328	-67.5	0
+329	-67.5	0
+330	-67.5	0
+331	-67.5	0
+332	-67.5	0
+333	-67.5	0
+334	-67.5	0
+335	-67.5	0
+336	-67.5	0
+337	-67.5	0
+338	-67.5	0
+339	-67.5	0
+340	-67.5	0
+341	-67.5	0
+342	-67.5	0
+343	-67.5	0
+344	-67.5	0
+345	-67.5	0
+346	-67.5	0
+347	-67.5	0
+348	-67.5	0
+349	-67.5	0
+350	-67.5	0
+351	-67.5	0
+352	-67.5	0
+353	-67.5	0
+354	-67.5	0
+355	-67.5	0
+356	-67.5	0
+357	-67.5	0
+358	-67.5	0
+359	-67.5	0
+360	-67.5	0
+0	-67	0
+1	-67	0
+2	-67	0
+3	-67	0
+4	-67	0
+5	-67	0
+6	-67	0
+7	-67	0
+8	-67	0
+9	-67	0
+10	-67	0
+11	-67	0
+12	-67	0
+13	-67	0
+14	-67	0
+15	-67	0
+16	-67	0
+17	-67	0
+18	-67	0
+19	-67	0
+20	-67	0
+21	-67	0
+22	-67	0
+23	-67	0
+24	-67	0
+25	-67	0
+26	-67	0
+27	-67	0
+28	-67	0
+29	-67	0
+30	-67	0
+31	-67	0
+32	-67	0
+33	-67	0
+34	-67	0
+35	-67	0
+36	-67	0
+37	-67	0
+38	-67	0
+39	-67	0
+40	-67	0
+41	-67	0
+42	-67	0
+43	-67	0
+44	-67	0
+45	-67	0
+46	-67	0
+47	-67	0
+48	-67	0
+49	-67	0
+50	-67	0
+51	-67	0
+52	-67	0
+53	-67	0
+54	-67	0
+55	-67	0
+56	-67	0
+57	-67	0
+58	-67	0
+59	-67	0
+60	-67	0
+61	-67	0
+62	-67	0
+63	-67	0
+64	-67	0
+65	-67	0
+66	-67	0
+67	-67	0
+68	-67	0
+69	-67	0
+70	-67	0
+71	-67	0
+72	-67	0
+73	-67	0
+74	-67	0
+75	-67	0
+76	-67	0
+77	-67	0
+78	-67	0
+79	-67	0
+80	-67	0
+81	-67	0
+82	-67	0
+83	-67	0
+84	-67	0
+85	-67	0
+86	-67	0
+87	-67	0
+88	-67	0
+89	-67	0
+90	-67	0
+91	-67	0
+92	-67	0
+93	-67	0
+94	-67	0
+95	-67	0
+96	-67	0
+97	-67	0
+98	-67	0
+99	-67	0
+100	-67	0
+101	-67	0
+102	-67	0
+103	-67	0
+104	-67	0
+105	-67	0
+106	-67	0
+107	-67	0
+108	-67	0
+109	-67	0
+110	-67	0
+111	-67	0
+112	-67	0
+113	-67	0
+114	-67	0
+115	-67	0
+116	-67	0
+117	-67	0
+118	-67	0
+119	-67	0
+120	-67	0
+121	-67	0
+122	-67	0
+123	-67	0
+124	-67	0
+125	-67	0
+126	-67	0
+127	-67	0
+128	-67	0
+129	-67	0
+130	-67	0
+131	-67	0
+132	-67	0
+133	-67	0
+134	-67	0
+135	-67	0
+136	-67	0
+137	-67	0
+138	-67	0
+139	-67	0
+140	-67	0
+141	-67	0
+142	-67	0
+143	-67	0
+144	-67	0
+145	-67	0
+146	-67	0
+147	-67	0
+148	-67	0
+149	-67	0
+150	-67	0
+151	-67	0
+152	-67	0
+153	-67	0
+154	-67	0
+155	-67	0
+156	-67	0
+157	-67	0
+158	-67	0
+159	-67	0
+160	-67	0
+161	-67	0
+162	-67	0
+163	-67	0
+164	-67	0
+165	-67	0
+166	-67	0
+167	-67	0
+168	-67	0
+169	-67	0
+170	-67	0
+171	-67	0
+172	-67	0
+173	-67	0
+174	-67	0
+175	-67	0
+176	-67	0
+177	-67	0
+178	-67	0
+179	-67	0
+180	-67	0
+181	-67	0
+182	-67	0
+183	-67	0
+184	-67	0
+185	-67	0
+186	-67	0
+187	-67	0
+188	-67	0
+189	-67	0
+190	-67	0
+191	-67	0
+192	-67	0
+193	-67	0
+194	-67	0
+195	-67	0
+196	-67	0
+197	-67	0
+198	-67	0
+199	-67	0
+200	-67	0
+201	-67	0
+202	-67	0
+203	-67	0
+204	-67	0
+205	-67	0
+206	-67	0
+207	-67	0
+208	-67	0
+209	-67	0
+210	-67	0
+211	-67	0
+212	-67	0
+213	-67	0
+214	-67	0
+215	-67	0
+216	-67	0
+217	-67	0
+218	-67	0
+219	-67	0
+220	-67	0
+221	-67	0
+222	-67	0
+223	-67	0
+224	-67	0
+225	-67	0
+226	-67	0
+227	-67	0
+228	-67	0
+229	-67	0
+230	-67	0
+231	-67	0
+232	-67	0
+233	-67	0
+234	-67	0
+235	-67	0
+236	-67	0
+237	-67	0
+238	-67	0
+239	-67	0
+240	-67	0
+241	-67	0
+242	-67	0
+243	-67	0
+244	-67	0
+245	-67	0
+246	-67	0
+247	-67	0
+248	-67	0
+249	-67	0
+250	-67	0
+251	-67	0
+252	-67	0
+253	-67	0
+254	-67	0
+255	-67	0
+256	-67	0
+257	-67	0
+258	-67	0
+259	-67	0
+260	-67	0
+261	-67	0
+262	-67	0
+263	-67	0
+264	-67	0
+265	-67	0
+266	-67	0
+267	-67	0
+268	-67	0
+269	-67	0
+270	-67	0
+271	-67	0
+272	-67	0
+273	-67	0
+274	-67	0
+275	-67	0
+276	-67	0
+277	-67	0
+278	-67	0
+279	-67	0
+280	-67	0
+281	-67	0
+282	-67	0
+283	-67	0
+284	-67	0
+285	-67	0
+286	-67	0
+287	-67	0
+288	-67	0
+289	-67	0
+290	-67	0
+291	-67	0
+292	-67	0
+293	-67	0
+294	-67	0
+295	-67	0
+296	-67	0
+297	-67	0
+298	-67	0
+299	-67	0
+300	-67	0
+301	-67	0
+302	-67	0
+303	-67	0
+304	-67	0
+305	-67	0
+306	-67	0
+307	-67	0
+308	-67	0
+309	-67	0
+310	-67	0
+311	-67	0
+312	-67	0
+313	-67	0
+314	-67	0
+315	-67	0
+316	-67	0
+317	-67	0
+318	-67	0
+319	-67	0
+320	-67	0
+321	-67	0
+322	-67	0
+323	-67	0
+324	-67	0
+325	-67	0
+326	-67	0
+327	-67	0
+328	-67	0
+329	-67	0
+330	-67	0
+331	-67	0
+332	-67	0
+333	-67	0
+334	-67	0
+335	-67	0
+336	-67	0
+337	-67	0
+338	-67	0
+339	-67	0
+340	-67	0
+341	-67	0
+342	-67	0
+343	-67	0
+344	-67	0
+345	-67	0
+346	-67	0
+347	-67	0
+348	-67	0
+349	-67	0
+350	-67	0
+351	-67	0
+352	-67	0
+353	-67	0
+354	-67	0
+355	-67	0
+356	-67	0
+357	-67	0
+358	-67	0
+359	-67	0
+360	-67	0
+0	-66.5	0
+1	-66.5	0
+2	-66.5	0
+3	-66.5	0
+4	-66.5	0
+5	-66.5	0
+6	-66.5	0
+7	-66.5	0
+8	-66.5	0
+9	-66.5	0
+10	-66.5	0
+11	-66.5	0
+12	-66.5	0
+13	-66.5	0
+14	-66.5	0
+15	-66.5	0
+16	-66.5	0
+17	-66.5	0
+18	-66.5	0
+19	-66.5	0
+20	-66.5	0
+21	-66.5	0
+22	-66.5	0
+23	-66.5	0
+24	-66.5	0
+25	-66.5	0
+26	-66.5	0
+27	-66.5	0
+28	-66.5	0
+29	-66.5	0
+30	-66.5	0
+31	-66.5	0
+32	-66.5	0
+33	-66.5	0
+34	-66.5	0
+35	-66.5	0
+36	-66.5	0
+37	-66.5	0
+38	-66.5	0
+39	-66.5	0
+40	-66.5	0
+41	-66.5	0
+42	-66.5	0
+43	-66.5	0
+44	-66.5	0
+45	-66.5	0
+46	-66.5	0
+47	-66.5	0
+48	-66.5	0
+49	-66.5	0
+50	-66.5	0
+51	-66.5	0
+52	-66.5	0
+53	-66.5	0
+54	-66.5	0
+55	-66.5	0
+56	-66.5	0
+57	-66.5	0
+58	-66.5	0
+59	-66.5	0
+60	-66.5	0
+61	-66.5	0
+62	-66.5	0
+63	-66.5	0
+64	-66.5	0
+65	-66.5	0
+66	-66.5	0
+67	-66.5	0
+68	-66.5	0
+69	-66.5	0
+70	-66.5	0
+71	-66.5	0
+72	-66.5	0
+73	-66.5	0
+74	-66.5	0
+75	-66.5	0
+76	-66.5	0
+77	-66.5	0
+78	-66.5	0
+79	-66.5	0
+80	-66.5	0
+81	-66.5	0
+82	-66.5	0
+83	-66.5	0
+84	-66.5	0
+85	-66.5	0
+86	-66.5	0
+87	-66.5	0
+88	-66.5	0
+89	-66.5	0
+90	-66.5	0
+91	-66.5	0
+92	-66.5	0
+93	-66.5	0
+94	-66.5	0
+95	-66.5	0
+96	-66.5	0
+97	-66.5	0
+98	-66.5	0
+99	-66.5	0
+100	-66.5	0
+101	-66.5	0
+102	-66.5	0
+103	-66.5	0
+104	-66.5	0
+105	-66.5	0
+106	-66.5	0
+107	-66.5	0
+108	-66.5	0
+109	-66.5	0
+110	-66.5	0
+111	-66.5	0
+112	-66.5	0
+113	-66.5	0
+114	-66.5	0
+115	-66.5	0
+116	-66.5	0
+117	-66.5	0
+118	-66.5	0
+119	-66.5	0
+120	-66.5	0
+121	-66.5	0
+122	-66.5	0
+123	-66.5	0
+124	-66.5	0
+125	-66.5	0
+126	-66.5	0
+127	-66.5	0
+128	-66.5	0
+129	-66.5	0
+130	-66.5	0
+131	-66.5	0
+132	-66.5	0
+133	-66.5	0
+134	-66.5	0
+135	-66.5	0
+136	-66.5	0
+137	-66.5	0
+138	-66.5	0
+139	-66.5	0
+140	-66.5	0
+141	-66.5	0
+142	-66.5	0
+143	-66.5	0
+144	-66.5	0
+145	-66.5	0
+146	-66.5	0
+147	-66.5	0
+148	-66.5	0
+149	-66.5	0
+150	-66.5	0
+151	-66.5	0
+152	-66.5	0
+153	-66.5	0
+154	-66.5	0
+155	-66.5	0
+156	-66.5	0
+157	-66.5	0
+158	-66.5	0
+159	-66.5	0
+160	-66.5	0
+161	-66.5	0
+162	-66.5	0
+163	-66.5	0
+164	-66.5	0
+165	-66.5	0
+166	-66.5	0
+167	-66.5	0
+168	-66.5	0
+169	-66.5	0
+170	-66.5	0
+171	-66.5	0
+172	-66.5	0
+173	-66.5	0
+174	-66.5	0
+175	-66.5	0
+176	-66.5	0
+177	-66.5	0
+178	-66.5	0
+179	-66.5	0
+180	-66.5	0
+181	-66.5	0
+182	-66.5	0
+183	-66.5	0
+184	-66.5	0
+185	-66.5	0
+186	-66.5	0
+187	-66.5	0
+188	-66.5	0
+189	-66.5	0
+190	-66.5	0
+191	-66.5	0
+192	-66.5	0
+193	-66.5	0
+194	-66.5	0
+195	-66.5	0
+196	-66.5	0
+197	-66.5	0
+198	-66.5	0
+199	-66.5	0
+200	-66.5	0
+201	-66.5	0
+202	-66.5	0
+203	-66.5	0
+204	-66.5	0
+205	-66.5	0
+206	-66.5	0
+207	-66.5	0
+208	-66.5	0
+209	-66.5	0
+210	-66.5	0
+211	-66.5	0
+212	-66.5	0
+213	-66.5	0
+214	-66.5	0
+215	-66.5	0
+216	-66.5	0
+217	-66.5	0
+218	-66.5	0
+219	-66.5	0
+220	-66.5	0
+221	-66.5	0
+222	-66.5	0
+223	-66.5	0
+224	-66.5	0
+225	-66.5	0
+226	-66.5	0
+227	-66.5	0
+228	-66.5	0
+229	-66.5	0
+230	-66.5	0
+231	-66.5	0
+232	-66.5	0
+233	-66.5	0
+234	-66.5	0
+235	-66.5	0
+236	-66.5	0
+237	-66.5	0
+238	-66.5	0
+239	-66.5	0
+240	-66.5	0
+241	-66.5	0
+242	-66.5	0
+243	-66.5	0
+244	-66.5	0
+245	-66.5	0
+246	-66.5	0
+247	-66.5	0
+248	-66.5	0
+249	-66.5	0
+250	-66.5	0
+251	-66.5	0
+252	-66.5	0
+253	-66.5	0
+254	-66.5	0
+255	-66.5	0
+256	-66.5	0
+257	-66.5	0
+258	-66.5	0
+259	-66.5	0
+260	-66.5	0
+261	-66.5	0
+262	-66.5	0
+263	-66.5	0
+264	-66.5	0
+265	-66.5	0
+266	-66.5	0
+267	-66.5	0
+268	-66.5	0
+269	-66.5	0
+270	-66.5	0
+271	-66.5	0
+272	-66.5	0
+273	-66.5	0
+274	-66.5	0
+275	-66.5	0
+276	-66.5	0
+277	-66.5	0
+278	-66.5	0
+279	-66.5	0
+280	-66.5	0
+281	-66.5	0
+282	-66.5	0
+283	-66.5	0
+284	-66.5	0
+285	-66.5	0
+286	-66.5	0
+287	-66.5	0
+288	-66.5	0
+289	-66.5	0
+290	-66.5	0
+291	-66.5	0
+292	-66.5	0
+293	-66.5	0
+294	-66.5	0
+295	-66.5	0
+296	-66.5	0
+297	-66.5	0
+298	-66.5	0
+299	-66.5	0
+300	-66.5	0
+301	-66.5	0
+302	-66.5	0
+303	-66.5	0
+304	-66.5	0
+305	-66.5	0
+306	-66.5	0
+307	-66.5	0
+308	-66.5	0
+309	-66.5	0
+310	-66.5	0
+311	-66.5	0
+312	-66.5	0
+313	-66.5	0
+314	-66.5	0
+315	-66.5	0
+316	-66.5	0
+317	-66.5	0
+318	-66.5	0
+319	-66.5	0
+320	-66.5	0
+321	-66.5	0
+322	-66.5	0
+323	-66.5	0
+324	-66.5	0
+325	-66.5	0
+326	-66.5	0
+327	-66.5	0
+328	-66.5	0
+329	-66.5	0
+330	-66.5	0
+331	-66.5	0
+332	-66.5	0
+333	-66.5	0
+334	-66.5	0
+335	-66.5	0
+336	-66.5	0
+337	-66.5	0
+338	-66.5	0
+339	-66.5	0
+340	-66.5	0
+341	-66.5	0
+342	-66.5	0
+343	-66.5	0
+344	-66.5	0
+345	-66.5	0
+346	-66.5	0
+347	-66.5	0
+348	-66.5	0
+349	-66.5	0
+350	-66.5	0
+351	-66.5	0
+352	-66.5	0
+353	-66.5	0
+354	-66.5	0
+355	-66.5	0
+356	-66.5	0
+357	-66.5	0
+358	-66.5	0
+359	-66.5	0
+360	-66.5	0
+0	-66	0
+1	-66	0
+2	-66	0
+3	-66	0
+4	-66	0
+5	-66	0
+6	-66	0
+7	-66	0
+8	-66	0
+9	-66	0
+10	-66	0
+11	-66	0
+12	-66	0
+13	-66	0
+14	-66	0
+15	-66	0
+16	-66	0
+17	-66	0
+18	-66	0
+19	-66	0
+20	-66	0
+21	-66	0
+22	-66	0
+23	-66	0
+24	-66	0
+25	-66	0
+26	-66	0
+27	-66	0
+28	-66	0
+29	-66	0
+30	-66	0
+31	-66	0
+32	-66	0
+33	-66	0
+34	-66	0
+35	-66	0
+36	-66	0
+37	-66	0
+38	-66	0
+39	-66	0
+40	-66	0
+41	-66	0
+42	-66	0
+43	-66	0
+44	-66	0
+45	-66	0
+46	-66	0
+47	-66	0
+48	-66	0
+49	-66	0
+50	-66	0
+51	-66	0
+52	-66	0
+53	-66	0
+54	-66	0
+55	-66	0
+56	-66	0
+57	-66	0
+58	-66	0
+59	-66	0
+60	-66	0
+61	-66	0
+62	-66	0
+63	-66	0
+64	-66	0
+65	-66	0
+66	-66	0
+67	-66	0
+68	-66	0
+69	-66	0
+70	-66	0
+71	-66	0
+72	-66	0
+73	-66	0
+74	-66	0
+75	-66	0
+76	-66	0
+77	-66	0
+78	-66	0
+79	-66	0
+80	-66	0
+81	-66	0
+82	-66	0
+83	-66	0
+84	-66	0
+85	-66	0
+86	-66	0
+87	-66	0
+88	-66	0
+89	-66	0
+90	-66	0
+91	-66	0
+92	-66	0
+93	-66	0
+94	-66	0
+95	-66	0
+96	-66	0
+97	-66	0
+98	-66	0
+99	-66	0
+100	-66	0
+101	-66	0
+102	-66	0
+103	-66	0
+104	-66	0
+105	-66	0
+106	-66	0
+107	-66	0
+108	-66	0
+109	-66	0
+110	-66	0
+111	-66	0
+112	-66	0
+113	-66	0
+114	-66	0
+115	-66	0
+116	-66	0
+117	-66	0
+118	-66	0
+119	-66	0
+120	-66	0
+121	-66	0
+122	-66	0
+123	-66	0
+124	-66	0
+125	-66	0
+126	-66	0
+127	-66	0
+128	-66	0
+129	-66	0
+130	-66	0
+131	-66	0
+132	-66	0
+133	-66	0
+134	-66	0
+135	-66	0
+136	-66	0
+137	-66	0
+138	-66	0
+139	-66	0
+140	-66	0
+141	-66	0
+142	-66	0
+143	-66	0
+144	-66	0
+145	-66	0
+146	-66	0
+147	-66	0
+148	-66	0
+149	-66	0
+150	-66	0
+151	-66	0
+152	-66	0
+153	-66	0
+154	-66	0
+155	-66	0
+156	-66	0
+157	-66	0
+158	-66	0
+159	-66	0
+160	-66	0
+161	-66	0
+162	-66	0
+163	-66	0
+164	-66	0
+165	-66	0
+166	-66	0
+167	-66	0
+168	-66	0
+169	-66	0
+170	-66	0
+171	-66	0
+172	-66	0
+173	-66	0
+174	-66	0
+175	-66	0
+176	-66	0
+177	-66	0
+178	-66	0
+179	-66	0
+180	-66	0
+181	-66	0
+182	-66	0
+183	-66	0
+184	-66	0
+185	-66	0
+186	-66	0
+187	-66	0
+188	-66	0
+189	-66	0
+190	-66	0
+191	-66	0
+192	-66	0
+193	-66	0
+194	-66	0
+195	-66	0
+196	-66	0
+197	-66	0
+198	-66	0
+199	-66	0
+200	-66	0
+201	-66	0
+202	-66	0
+203	-66	0
+204	-66	0
+205	-66	0
+206	-66	0
+207	-66	0
+208	-66	0
+209	-66	0
+210	-66	0
+211	-66	0
+212	-66	0
+213	-66	0
+214	-66	0
+215	-66	0
+216	-66	0
+217	-66	0
+218	-66	0
+219	-66	0
+220	-66	0
+221	-66	0
+222	-66	0
+223	-66	0
+224	-66	0
+225	-66	0
+226	-66	0
+227	-66	0
+228	-66	0
+229	-66	0
+230	-66	0
+231	-66	0
+232	-66	0
+233	-66	0
+234	-66	0
+235	-66	0
+236	-66	0
+237	-66	0
+238	-66	0
+239	-66	0
+240	-66	0
+241	-66	0
+242	-66	0
+243	-66	0
+244	-66	0
+245	-66	0
+246	-66	0
+247	-66	0
+248	-66	0
+249	-66	0
+250	-66	0
+251	-66	0
+252	-66	0
+253	-66	0
+254	-66	0
+255	-66	0
+256	-66	0
+257	-66	0
+258	-66	0
+259	-66	0
+260	-66	0
+261	-66	0
+262	-66	0
+263	-66	0
+264	-66	0
+265	-66	0
+266	-66	0
+267	-66	0
+268	-66	0
+269	-66	0
+270	-66	0
+271	-66	0
+272	-66	0
+273	-66	0
+274	-66	0
+275	-66	0
+276	-66	0
+277	-66	0
+278	-66	0
+279	-66	0
+280	-66	0
+281	-66	0
+282	-66	0
+283	-66	0
+284	-66	0
+285	-66	0
+286	-66	0
+287	-66	0
+288	-66	0
+289	-66	0
+290	-66	0
+291	-66	0
+292	-66	0
+293	-66	0
+294	-66	0
+295	-66	0
+296	-66	0
+297	-66	0
+298	-66	0
+299	-66	0
+300	-66	0
+301	-66	0
+302	-66	0
+303	-66	0
+304	-66	0
+305	-66	0
+306	-66	0
+307	-66	0
+308	-66	0
+309	-66	0
+310	-66	0
+311	-66	0
+312	-66	0
+313	-66	0
+314	-66	0
+315	-66	0
+316	-66	0
+317	-66	0
+318	-66	0
+319	-66	0
+320	-66	0
+321	-66	0
+322	-66	0
+323	-66	0
+324	-66	0
+325	-66	0
+326	-66	0
+327	-66	0
+328	-66	0
+329	-66	0
+330	-66	0
+331	-66	0
+332	-66	0
+333	-66	0
+334	-66	0
+335	-66	0
+336	-66	0
+337	-66	0
+338	-66	0
+339	-66	0
+340	-66	0
+341	-66	0
+342	-66	0
+343	-66	0
+344	-66	0
+345	-66	0
+346	-66	0
+347	-66	0
+348	-66	0
+349	-66	0
+350	-66	0
+351	-66	0
+352	-66	0
+353	-66	0
+354	-66	0
+355	-66	0
+356	-66	0
+357	-66	0
+358	-66	0
+359	-66	0
+360	-66	0
+0	-65.5	0
+1	-65.5	0
+2	-65.5	0
+3	-65.5	0
+4	-65.5	0
+5	-65.5	0
+6	-65.5	0
+7	-65.5	0
+8	-65.5	0
+9	-65.5	0
+10	-65.5	0
+11	-65.5	0
+12	-65.5	0
+13	-65.5	0
+14	-65.5	0
+15	-65.5	0
+16	-65.5	0
+17	-65.5	0
+18	-65.5	0
+19	-65.5	0
+20	-65.5	0
+21	-65.5	0
+22	-65.5	0
+23	-65.5	0
+24	-65.5	0
+25	-65.5	0
+26	-65.5	0
+27	-65.5	0
+28	-65.5	0
+29	-65.5	0
+30	-65.5	0
+31	-65.5	0
+32	-65.5	0
+33	-65.5	0
+34	-65.5	0
+35	-65.5	0
+36	-65.5	0
+37	-65.5	0
+38	-65.5	0
+39	-65.5	0
+40	-65.5	0
+41	-65.5	0
+42	-65.5	0
+43	-65.5	0
+44	-65.5	0
+45	-65.5	0
+46	-65.5	0
+47	-65.5	0
+48	-65.5	0
+49	-65.5	0
+50	-65.5	0
+51	-65.5	0
+52	-65.5	0
+53	-65.5	0
+54	-65.5	0
+55	-65.5	0
+56	-65.5	0
+57	-65.5	0
+58	-65.5	0
+59	-65.5	0
+60	-65.5	0
+61	-65.5	0
+62	-65.5	0
+63	-65.5	0
+64	-65.5	0
+65	-65.5	0
+66	-65.5	0
+67	-65.5	0
+68	-65.5	0
+69	-65.5	0
+70	-65.5	0
+71	-65.5	0
+72	-65.5	0
+73	-65.5	0
+74	-65.5	0
+75	-65.5	0
+76	-65.5	0
+77	-65.5	0
+78	-65.5	0
+79	-65.5	0
+80	-65.5	0
+81	-65.5	0
+82	-65.5	0
+83	-65.5	0
+84	-65.5	0
+85	-65.5	0
+86	-65.5	0
+87	-65.5	0
+88	-65.5	0
+89	-65.5	0
+90	-65.5	0
+91	-65.5	0
+92	-65.5	0
+93	-65.5	0
+94	-65.5	0
+95	-65.5	0
+96	-65.5	0
+97	-65.5	0
+98	-65.5	0
+99	-65.5	0
+100	-65.5	0
+101	-65.5	0
+102	-65.5	0
+103	-65.5	0
+104	-65.5	0
+105	-65.5	0
+106	-65.5	0
+107	-65.5	0
+108	-65.5	0
+109	-65.5	0
+110	-65.5	0
+111	-65.5	0
+112	-65.5	0
+113	-65.5	0
+114	-65.5	0
+115	-65.5	0
+116	-65.5	0
+117	-65.5	0
+118	-65.5	0
+119	-65.5	0
+120	-65.5	0
+121	-65.5	0
+122	-65.5	0
+123	-65.5	0
+124	-65.5	0
+125	-65.5	0
+126	-65.5	0
+127	-65.5	0
+128	-65.5	0
+129	-65.5	0
+130	-65.5	0
+131	-65.5	0
+132	-65.5	0
+133	-65.5	0
+134	-65.5	0
+135	-65.5	0
+136	-65.5	0
+137	-65.5	0
+138	-65.5	0
+139	-65.5	0
+140	-65.5	0
+141	-65.5	0
+142	-65.5	0
+143	-65.5	0
+144	-65.5	0
+145	-65.5	0
+146	-65.5	0
+147	-65.5	0
+148	-65.5	0
+149	-65.5	0
+150	-65.5	0
+151	-65.5	0
+152	-65.5	0
+153	-65.5	0
+154	-65.5	0
+155	-65.5	0
+156	-65.5	0
+157	-65.5	0
+158	-65.5	0
+159	-65.5	0
+160	-65.5	0
+161	-65.5	0
+162	-65.5	0
+163	-65.5	0
+164	-65.5	0
+165	-65.5	0
+166	-65.5	0
+167	-65.5	0
+168	-65.5	0
+169	-65.5	0
+170	-65.5	0
+171	-65.5	0
+172	-65.5	0
+173	-65.5	0
+174	-65.5	0
+175	-65.5	0
+176	-65.5	0
+177	-65.5	0
+178	-65.5	0
+179	-65.5	0
+180	-65.5	0
+181	-65.5	0
+182	-65.5	0
+183	-65.5	0
+184	-65.5	0
+185	-65.5	0
+186	-65.5	0
+187	-65.5	0
+188	-65.5	0
+189	-65.5	0
+190	-65.5	0
+191	-65.5	0
+192	-65.5	0
+193	-65.5	0
+194	-65.5	0
+195	-65.5	0
+196	-65.5	0
+197	-65.5	0
+198	-65.5	0
+199	-65.5	0
+200	-65.5	0
+201	-65.5	0
+202	-65.5	0
+203	-65.5	0
+204	-65.5	0
+205	-65.5	0
+206	-65.5	0
+207	-65.5	0
+208	-65.5	0
+209	-65.5	0
+210	-65.5	0
+211	-65.5	0
+212	-65.5	0
+213	-65.5	0
+214	-65.5	0
+215	-65.5	0
+216	-65.5	0
+217	-65.5	0
+218	-65.5	0
+219	-65.5	0
+220	-65.5	0
+221	-65.5	0
+222	-65.5	0
+223	-65.5	0
+224	-65.5	0
+225	-65.5	0
+226	-65.5	0
+227	-65.5	0
+228	-65.5	0
+229	-65.5	0
+230	-65.5	0
+231	-65.5	0
+232	-65.5	0
+233	-65.5	0
+234	-65.5	0
+235	-65.5	0
+236	-65.5	0
+237	-65.5	0
+238	-65.5	0
+239	-65.5	0
+240	-65.5	0
+241	-65.5	0
+242	-65.5	0
+243	-65.5	0
+244	-65.5	0
+245	-65.5	0
+246	-65.5	0
+247	-65.5	0
+248	-65.5	0
+249	-65.5	0
+250	-65.5	0
+251	-65.5	0
+252	-65.5	0
+253	-65.5	0
+254	-65.5	0
+255	-65.5	0
+256	-65.5	0
+257	-65.5	0
+258	-65.5	0
+259	-65.5	0
+260	-65.5	0
+261	-65.5	0
+262	-65.5	0
+263	-65.5	0
+264	-65.5	0
+265	-65.5	0
+266	-65.5	0
+267	-65.5	0
+268	-65.5	0
+269	-65.5	0
+270	-65.5	0
+271	-65.5	0
+272	-65.5	0
+273	-65.5	0
+274	-65.5	0
+275	-65.5	0
+276	-65.5	0
+277	-65.5	0
+278	-65.5	0
+279	-65.5	0
+280	-65.5	0
+281	-65.5	0
+282	-65.5	0
+283	-65.5	0
+284	-65.5	0
+285	-65.5	0
+286	-65.5	0
+287	-65.5	0
+288	-65.5	0
+289	-65.5	0
+290	-65.5	0
+291	-65.5	0
+292	-65.5	0
+293	-65.5	0
+294	-65.5	0
+295	-65.5	0
+296	-65.5	0
+297	-65.5	0
+298	-65.5	0
+299	-65.5	0
+300	-65.5	0
+301	-65.5	0
+302	-65.5	0
+303	-65.5	0
+304	-65.5	0
+305	-65.5	0
+306	-65.5	0
+307	-65.5	0
+308	-65.5	0
+309	-65.5	0
+310	-65.5	0
+311	-65.5	0
+312	-65.5	0
+313	-65.5	0
+314	-65.5	0
+315	-65.5	0
+316	-65.5	0
+317	-65.5	0
+318	-65.5	0
+319	-65.5	0
+320	-65.5	0
+321	-65.5	0
+322	-65.5	0
+323	-65.5	0
+324	-65.5	0
+325	-65.5	0
+326	-65.5	0
+327	-65.5	0
+328	-65.5	0
+329	-65.5	0
+330	-65.5	0
+331	-65.5	0
+332	-65.5	0
+333	-65.5	0
+334	-65.5	0
+335	-65.5	0
+336	-65.5	0
+337	-65.5	0
+338	-65.5	0
+339	-65.5	0
+340	-65.5	0
+341	-65.5	0
+342	-65.5	0
+343	-65.5	0
+344	-65.5	0
+345	-65.5	0
+346	-65.5	0
+347	-65.5	0
+348	-65.5	0
+349	-65.5	0
+350	-65.5	0
+351	-65.5	0
+352	-65.5	0
+353	-65.5	0
+354	-65.5	0
+355	-65.5	0
+356	-65.5	0
+357	-65.5	0
+358	-65.5	0
+359	-65.5	0
+360	-65.5	0
+0	-65	0
+1	-65	0
+2	-65	0
+3	-65	0
+4	-65	0
+5	-65	0
+6	-65	0
+7	-65	0
+8	-65	0
+9	-65	0
+10	-65	0
+11	-65	0
+12	-65	0
+13	-65	0
+14	-65	0
+15	-65	0
+16	-65	0
+17	-65	0
+18	-65	0
+19	-65	0
+20	-65	0
+21	-65	0
+22	-65	0
+23	-65	0
+24	-65	0
+25	-65	0
+26	-65	0
+27	-65	0
+28	-65	0
+29	-65	0
+30	-65	0
+31	-65	0
+32	-65	0
+33	-65	0
+34	-65	0
+35	-65	0
+36	-65	0
+37	-65	0
+38	-65	0
+39	-65	0
+40	-65	0
+41	-65	0
+42	-65	0
+43	-65	0
+44	-65	0
+45	-65	0
+46	-65	0
+47	-65	0
+48	-65	0
+49	-65	0
+50	-65	0
+51	-65	0
+52	-65	0
+53	-65	0
+54	-65	0
+55	-65	0
+56	-65	0
+57	-65	0
+58	-65	0
+59	-65	0
+60	-65	0
+61	-65	0
+62	-65	0
+63	-65	0
+64	-65	0
+65	-65	0
+66	-65	0
+67	-65	0
+68	-65	0
+69	-65	0
+70	-65	0
+71	-65	0
+72	-65	0
+73	-65	0
+74	-65	0
+75	-65	0
+76	-65	0
+77	-65	0
+78	-65	0
+79	-65	0
+80	-65	0
+81	-65	0
+82	-65	0
+83	-65	0
+84	-65	0
+85	-65	0
+86	-65	0
+87	-65	0
+88	-65	0
+89	-65	0
+90	-65	0
+91	-65	0
+92	-65	0
+93	-65	0
+94	-65	0
+95	-65	0
+96	-65	0
+97	-65	0
+98	-65	0
+99	-65	0
+100	-65	0
+101	-65	0
+102	-65	0
+103	-65	0
+104	-65	0
+105	-65	0
+106	-65	0
+107	-65	0
+108	-65	0
+109	-65	0
+110	-65	0
+111	-65	0
+112	-65	0
+113	-65	0
+114	-65	0
+115	-65	0
+116	-65	0
+117	-65	0
+118	-65	0
+119	-65	0
+120	-65	0
+121	-65	0
+122	-65	0
+123	-65	0
+124	-65	0
+125	-65	0
+126	-65	0
+127	-65	0
+128	-65	0
+129	-65	0
+130	-65	0
+131	-65	0
+132	-65	0
+133	-65	0
+134	-65	0
+135	-65	0
+136	-65	0
+137	-65	0
+138	-65	0
+139	-65	0
+140	-65	0
+141	-65	0
+142	-65	0
+143	-65	0
+144	-65	0
+145	-65	0
+146	-65	0
+147	-65	0
+148	-65	0
+149	-65	0
+150	-65	0
+151	-65	0
+152	-65	0
+153	-65	0
+154	-65	0
+155	-65	0
+156	-65	0
+157	-65	0
+158	-65	0
+159	-65	0
+160	-65	0
+161	-65	0
+162	-65	0
+163	-65	0
+164	-65	0
+165	-65	0
+166	-65	0
+167	-65	0
+168	-65	0
+169	-65	0
+170	-65	0
+171	-65	0
+172	-65	0
+173	-65	0
+174	-65	0
+175	-65	0
+176	-65	0
+177	-65	0
+178	-65	0
+179	-65	0
+180	-65	0
+181	-65	0
+182	-65	0
+183	-65	0
+184	-65	0
+185	-65	0
+186	-65	0
+187	-65	0
+188	-65	0
+189	-65	0
+190	-65	0
+191	-65	0
+192	-65	0
+193	-65	0
+194	-65	0
+195	-65	0
+196	-65	0
+197	-65	0
+198	-65	0
+199	-65	0
+200	-65	0
+201	-65	0
+202	-65	0
+203	-65	0
+204	-65	0
+205	-65	0
+206	-65	0
+207	-65	0
+208	-65	0
+209	-65	0
+210	-65	0
+211	-65	0
+212	-65	0
+213	-65	0
+214	-65	0
+215	-65	0
+216	-65	0
+217	-65	0
+218	-65	0
+219	-65	0
+220	-65	0
+221	-65	0
+222	-65	0
+223	-65	0
+224	-65	0
+225	-65	0
+226	-65	0
+227	-65	0
+228	-65	0
+229	-65	0
+230	-65	0
+231	-65	0
+232	-65	0
+233	-65	0
+234	-65	0
+235	-65	0
+236	-65	0
+237	-65	0
+238	-65	0
+239	-65	0
+240	-65	0
+241	-65	0
+242	-65	0
+243	-65	0
+244	-65	0
+245	-65	0
+246	-65	0
+247	-65	0
+248	-65	0
+249	-65	0
+250	-65	0
+251	-65	0
+252	-65	0
+253	-65	0
+254	-65	0
+255	-65	0
+256	-65	0
+257	-65	0
+258	-65	0
+259	-65	0
+260	-65	0
+261	-65	0
+262	-65	0
+263	-65	0
+264	-65	0
+265	-65	0
+266	-65	0
+267	-65	0
+268	-65	0
+269	-65	0
+270	-65	0
+271	-65	0
+272	-65	0
+273	-65	0
+274	-65	0
+275	-65	0
+276	-65	0
+277	-65	0
+278	-65	0
+279	-65	0
+280	-65	0
+281	-65	0
+282	-65	0
+283	-65	0
+284	-65	0
+285	-65	0
+286	-65	0
+287	-65	0
+288	-65	0
+289	-65	0
+290	-65	0
+291	-65	0
+292	-65	0
+293	-65	0
+294	-65	0
+295	-65	0
+296	-65	0
+297	-65	0
+298	-65	0
+299	-65	0
+300	-65	0
+301	-65	0
+302	-65	0
+303	-65	0
+304	-65	0
+305	-65	0
+306	-65	0
+307	-65	0
+308	-65	0
+309	-65	0
+310	-65	0
+311	-65	0
+312	-65	0
+313	-65	0
+314	-65	0
+315	-65	0
+316	-65	0
+317	-65	0
+318	-65	0
+319	-65	0
+320	-65	0
+321	-65	0
+322	-65	0
+323	-65	0
+324	-65	0
+325	-65	0
+326	-65	0
+327	-65	0
+328	-65	0
+329	-65	0
+330	-65	0
+331	-65	0
+332	-65	0
+333	-65	0
+334	-65	0
+335	-65	0
+336	-65	0
+337	-65	0
+338	-65	0
+339	-65	0
+340	-65	0
+341	-65	0
+342	-65	0
+343	-65	0
+344	-65	0
+345	-65	0
+346	-65	0
+347	-65	0
+348	-65	0
+349	-65	0
+350	-65	0
+351	-65	0
+352	-65	0
+353	-65	0
+354	-65	0
+355	-65	0
+356	-65	0
+357	-65	0
+358	-65	0
+359	-65	0
+360	-65	0
+0	-64.5	0
+1	-64.5	0
+2	-64.5	0
+3	-64.5	0
+4	-64.5	0
+5	-64.5	0
+6	-64.5	0
+7	-64.5	0
+8	-64.5	0
+9	-64.5	0
+10	-64.5	0
+11	-64.5	0
+12	-64.5	0
+13	-64.5	0
+14	-64.5	0
+15	-64.5	0
+16	-64.5	0
+17	-64.5	0
+18	-64.5	0
+19	-64.5	0
+20	-64.5	0
+21	-64.5	0
+22	-64.5	0
+23	-64.5	0
+24	-64.5	0
+25	-64.5	0
+26	-64.5	0
+27	-64.5	0
+28	-64.5	0
+29	-64.5	0
+30	-64.5	0
+31	-64.5	0
+32	-64.5	0
+33	-64.5	0
+34	-64.5	0
+35	-64.5	0
+36	-64.5	0
+37	-64.5	0
+38	-64.5	0
+39	-64.5	0
+40	-64.5	0
+41	-64.5	0
+42	-64.5	0
+43	-64.5	0
+44	-64.5	0
+45	-64.5	0
+46	-64.5	0
+47	-64.5	0
+48	-64.5	0
+49	-64.5	0
+50	-64.5	0
+51	-64.5	0
+52	-64.5	0
+53	-64.5	0
+54	-64.5	0
+55	-64.5	0
+56	-64.5	0
+57	-64.5	0
+58	-64.5	0
+59	-64.5	0
+60	-64.5	0
+61	-64.5	0
+62	-64.5	0
+63	-64.5	0
+64	-64.5	0
+65	-64.5	0
+66	-64.5	0
+67	-64.5	0
+68	-64.5	0
+69	-64.5	0
+70	-64.5	0
+71	-64.5	0
+72	-64.5	0
+73	-64.5	0
+74	-64.5	0
+75	-64.5	0
+76	-64.5	0
+77	-64.5	0
+78	-64.5	0
+79	-64.5	0
+80	-64.5	0
+81	-64.5	0
+82	-64.5	0
+83	-64.5	0
+84	-64.5	0
+85	-64.5	0
+86	-64.5	0
+87	-64.5	0
+88	-64.5	0
+89	-64.5	0
+90	-64.5	0
+91	-64.5	0
+92	-64.5	0
+93	-64.5	0
+94	-64.5	0
+95	-64.5	0
+96	-64.5	0
+97	-64.5	0
+98	-64.5	0
+99	-64.5	0
+100	-64.5	0
+101	-64.5	0
+102	-64.5	0
+103	-64.5	0
+104	-64.5	0
+105	-64.5	0
+106	-64.5	0
+107	-64.5	0
+108	-64.5	0
+109	-64.5	0
+110	-64.5	0
+111	-64.5	0
+112	-64.5	0
+113	-64.5	0
+114	-64.5	0
+115	-64.5	0
+116	-64.5	0
+117	-64.5	0
+118	-64.5	0
+119	-64.5	0
+120	-64.5	0
+121	-64.5	0
+122	-64.5	0
+123	-64.5	0
+124	-64.5	0
+125	-64.5	0
+126	-64.5	0
+127	-64.5	0
+128	-64.5	0
+129	-64.5	0
+130	-64.5	0
+131	-64.5	0
+132	-64.5	0
+133	-64.5	0
+134	-64.5	0
+135	-64.5	0
+136	-64.5	0
+137	-64.5	0
+138	-64.5	0
+139	-64.5	0
+140	-64.5	0
+141	-64.5	0
+142	-64.5	0
+143	-64.5	0
+144	-64.5	0
+145	-64.5	0
+146	-64.5	0
+147	-64.5	0
+148	-64.5	0
+149	-64.5	0
+150	-64.5	0
+151	-64.5	0
+152	-64.5	0
+153	-64.5	0
+154	-64.5	0
+155	-64.5	0
+156	-64.5	0
+157	-64.5	0
+158	-64.5	0
+159	-64.5	0
+160	-64.5	0
+161	-64.5	0
+162	-64.5	0
+163	-64.5	0
+164	-64.5	0
+165	-64.5	0
+166	-64.5	0
+167	-64.5	0
+168	-64.5	0
+169	-64.5	0
+170	-64.5	0
+171	-64.5	0
+172	-64.5	0
+173	-64.5	0
+174	-64.5	0
+175	-64.5	0
+176	-64.5	0
+177	-64.5	0
+178	-64.5	0
+179	-64.5	0
+180	-64.5	0
+181	-64.5	0
+182	-64.5	0
+183	-64.5	0
+184	-64.5	0
+185	-64.5	0
+186	-64.5	0
+187	-64.5	0
+188	-64.5	0
+189	-64.5	0
+190	-64.5	0
+191	-64.5	0
+192	-64.5	0
+193	-64.5	0
+194	-64.5	0
+195	-64.5	0
+196	-64.5	0
+197	-64.5	0
+198	-64.5	0
+199	-64.5	0
+200	-64.5	0
+201	-64.5	0
+202	-64.5	0
+203	-64.5	0
+204	-64.5	0
+205	-64.5	0
+206	-64.5	0
+207	-64.5	0
+208	-64.5	0
+209	-64.5	0
+210	-64.5	0
+211	-64.5	0
+212	-64.5	0
+213	-64.5	0
+214	-64.5	0
+215	-64.5	0
+216	-64.5	0
+217	-64.5	0
+218	-64.5	0
+219	-64.5	0
+220	-64.5	0
+221	-64.5	0
+222	-64.5	0
+223	-64.5	0
+224	-64.5	0
+225	-64.5	0
+226	-64.5	0
+227	-64.5	0
+228	-64.5	0
+229	-64.5	0
+230	-64.5	0
+231	-64.5	0
+232	-64.5	0
+233	-64.5	0
+234	-64.5	0
+235	-64.5	0
+236	-64.5	0
+237	-64.5	0
+238	-64.5	0
+239	-64.5	0
+240	-64.5	0
+241	-64.5	0
+242	-64.5	0
+243	-64.5	0
+244	-64.5	0
+245	-64.5	0
+246	-64.5	0
+247	-64.5	0
+248	-64.5	0
+249	-64.5	0
+250	-64.5	0
+251	-64.5	0
+252	-64.5	0
+253	-64.5	0
+254	-64.5	0
+255	-64.5	0
+256	-64.5	0
+257	-64.5	0
+258	-64.5	0
+259	-64.5	0
+260	-64.5	0
+261	-64.5	0
+262	-64.5	0
+263	-64.5	0
+264	-64.5	0
+265	-64.5	0
+266	-64.5	0
+267	-64.5	0
+268	-64.5	0
+269	-64.5	0
+270	-64.5	0
+271	-64.5	0
+272	-64.5	0
+273	-64.5	0
+274	-64.5	0
+275	-64.5	0
+276	-64.5	0
+277	-64.5	0
+278	-64.5	0
+279	-64.5	0
+280	-64.5	0
+281	-64.5	0
+282	-64.5	0
+283	-64.5	0
+284	-64.5	0
+285	-64.5	0
+286	-64.5	0
+287	-64.5	0
+288	-64.5	0
+289	-64.5	0
+290	-64.5	0
+291	-64.5	0
+292	-64.5	0
+293	-64.5	0
+294	-64.5	0
+295	-64.5	0
+296	-64.5	0
+297	-64.5	0
+298	-64.5	0
+299	-64.5	0
+300	-64.5	0
+301	-64.5	0
+302	-64.5	0
+303	-64.5	0
+304	-64.5	0
+305	-64.5	0
+306	-64.5	0
+307	-64.5	0
+308	-64.5	0
+309	-64.5	0
+310	-64.5	0
+311	-64.5	0
+312	-64.5	0
+313	-64.5	0
+314	-64.5	0
+315	-64.5	0
+316	-64.5	0
+317	-64.5	0
+318	-64.5	0
+319	-64.5	0
+320	-64.5	0
+321	-64.5	0
+322	-64.5	0
+323	-64.5	0
+324	-64.5	0
+325	-64.5	0
+326	-64.5	0
+327	-64.5	0
+328	-64.5	0
+329	-64.5	0
+330	-64.5	0
+331	-64.5	0
+332	-64.5	0
+333	-64.5	0
+334	-64.5	0
+335	-64.5	0
+336	-64.5	0
+337	-64.5	0
+338	-64.5	0
+339	-64.5	0
+340	-64.5	0
+341	-64.5	0
+342	-64.5	0
+343	-64.5	0
+344	-64.5	0
+345	-64.5	0
+346	-64.5	0
+347	-64.5	0
+348	-64.5	0
+349	-64.5	0
+350	-64.5	0
+351	-64.5	0
+352	-64.5	0
+353	-64.5	0
+354	-64.5	0
+355	-64.5	0
+356	-64.5	0
+357	-64.5	0
+358	-64.5	0
+359	-64.5	0
+360	-64.5	0
+0	-64	0
+1	-64	0
+2	-64	0
+3	-64	0
+4	-64	0
+5	-64	0
+6	-64	0
+7	-64	0
+8	-64	0
+9	-64	0
+10	-64	0
+11	-64	0
+12	-64	0
+13	-64	0
+14	-64	0
+15	-64	0
+16	-64	0
+17	-64	0
+18	-64	0
+19	-64	0
+20	-64	0
+21	-64	0
+22	-64	0
+23	-64	0
+24	-64	0
+25	-64	0
+26	-64	0
+27	-64	0
+28	-64	0
+29	-64	0
+30	-64	0
+31	-64	0
+32	-64	0
+33	-64	0
+34	-64	0
+35	-64	0
+36	-64	0
+37	-64	0
+38	-64	0
+39	-64	0
+40	-64	0
+41	-64	0
+42	-64	0
+43	-64	0
+44	-64	0
+45	-64	0
+46	-64	0
+47	-64	0
+48	-64	0
+49	-64	0
+50	-64	0
+51	-64	0
+52	-64	0
+53	-64	0
+54	-64	0
+55	-64	0
+56	-64	0
+57	-64	0
+58	-64	0
+59	-64	0
+60	-64	0
+61	-64	0
+62	-64	0
+63	-64	0
+64	-64	0
+65	-64	0
+66	-64	0
+67	-64	0
+68	-64	0
+69	-64	0
+70	-64	0
+71	-64	0
+72	-64	0
+73	-64	0
+74	-64	0
+75	-64	0
+76	-64	0
+77	-64	0
+78	-64	0
+79	-64	0
+80	-64	0
+81	-64	0
+82	-64	0
+83	-64	0
+84	-64	0
+85	-64	0
+86	-64	0
+87	-64	0
+88	-64	0
+89	-64	0
+90	-64	0
+91	-64	0
+92	-64	0
+93	-64	0
+94	-64	0
+95	-64	0
+96	-64	0
+97	-64	0
+98	-64	0
+99	-64	0
+100	-64	0
+101	-64	0
+102	-64	0
+103	-64	0
+104	-64	0
+105	-64	0
+106	-64	0
+107	-64	0
+108	-64	0
+109	-64	0
+110	-64	0
+111	-64	0
+112	-64	0
+113	-64	0
+114	-64	0
+115	-64	0
+116	-64	0
+117	-64	0
+118	-64	0
+119	-64	0
+120	-64	0
+121	-64	0
+122	-64	0
+123	-64	0
+124	-64	0
+125	-64	0
+126	-64	0
+127	-64	0
+128	-64	0
+129	-64	0
+130	-64	0
+131	-64	0
+132	-64	0
+133	-64	0
+134	-64	0
+135	-64	0
+136	-64	0
+137	-64	0
+138	-64	0
+139	-64	0
+140	-64	0
+141	-64	0
+142	-64	0
+143	-64	0
+144	-64	0
+145	-64	0
+146	-64	0
+147	-64	0
+148	-64	0
+149	-64	0
+150	-64	0
+151	-64	0
+152	-64	0
+153	-64	0
+154	-64	0
+155	-64	0
+156	-64	0
+157	-64	0
+158	-64	0
+159	-64	0
+160	-64	0
+161	-64	0
+162	-64	0
+163	-64	0
+164	-64	0
+165	-64	0
+166	-64	0
+167	-64	0
+168	-64	0
+169	-64	0
+170	-64	0
+171	-64	0
+172	-64	0
+173	-64	0
+174	-64	0
+175	-64	0
+176	-64	0
+177	-64	0
+178	-64	0
+179	-64	0
+180	-64	0
+181	-64	0
+182	-64	0
+183	-64	0
+184	-64	0
+185	-64	0
+186	-64	0
+187	-64	0
+188	-64	0
+189	-64	0
+190	-64	0
+191	-64	0
+192	-64	0
+193	-64	0
+194	-64	0
+195	-64	0
+196	-64	0
+197	-64	0
+198	-64	0
+199	-64	0
+200	-64	0
+201	-64	0
+202	-64	0
+203	-64	0
+204	-64	0
+205	-64	0
+206	-64	0
+207	-64	0
+208	-64	0
+209	-64	0
+210	-64	0
+211	-64	0
+212	-64	0
+213	-64	0
+214	-64	0
+215	-64	0
+216	-64	0
+217	-64	0
+218	-64	0
+219	-64	0
+220	-64	0
+221	-64	0
+222	-64	0
+223	-64	0
+224	-64	0
+225	-64	0
+226	-64	0
+227	-64	0
+228	-64	0
+229	-64	0
+230	-64	0
+231	-64	0
+232	-64	0
+233	-64	0
+234	-64	0
+235	-64	0
+236	-64	0
+237	-64	0
+238	-64	0
+239	-64	0
+240	-64	0
+241	-64	0
+242	-64	0
+243	-64	0
+244	-64	0
+245	-64	0
+246	-64	0
+247	-64	0
+248	-64	0
+249	-64	0
+250	-64	0
+251	-64	0
+252	-64	0
+253	-64	0
+254	-64	0
+255	-64	0
+256	-64	0
+257	-64	0
+258	-64	0
+259	-64	0
+260	-64	0
+261	-64	0
+262	-64	0
+263	-64	0
+264	-64	0
+265	-64	0
+266	-64	0
+267	-64	0
+268	-64	0
+269	-64	0
+270	-64	0
+271	-64	0
+272	-64	0
+273	-64	0
+274	-64	0
+275	-64	0
+276	-64	0
+277	-64	0
+278	-64	0
+279	-64	0
+280	-64	0
+281	-64	0
+282	-64	0
+283	-64	0
+284	-64	0
+285	-64	0
+286	-64	0
+287	-64	0
+288	-64	0
+289	-64	0
+290	-64	0
+291	-64	0
+292	-64	0
+293	-64	0
+294	-64	0
+295	-64	0
+296	-64	0
+297	-64	0
+298	-64	0
+299	-64	0
+300	-64	0
+301	-64	0
+302	-64	0
+303	-64	0
+304	-64	0
+305	-64	0
+306	-64	0
+307	-64	0
+308	-64	0
+309	-64	0
+310	-64	0
+311	-64	0
+312	-64	0
+313	-64	0
+314	-64	0
+315	-64	0
+316	-64	0
+317	-64	0
+318	-64	0
+319	-64	0
+320	-64	0
+321	-64	0
+322	-64	0
+323	-64	0
+324	-64	0
+325	-64	0
+326	-64	0
+327	-64	0
+328	-64	0
+329	-64	0
+330	-64	0
+331	-64	0
+332	-64	0
+333	-64	0
+334	-64	0
+335	-64	0
+336	-64	0
+337	-64	0
+338	-64	0
+339	-64	0
+340	-64	0
+341	-64	0
+342	-64	0
+343	-64	0
+344	-64	0
+345	-64	0
+346	-64	0
+347	-64	0
+348	-64	0
+349	-64	0
+350	-64	0
+351	-64	0
+352	-64	0
+353	-64	0
+354	-64	0
+355	-64	0
+356	-64	0
+357	-64	0
+358	-64	0
+359	-64	0
+360	-64	0
+0	-63.5	0
+1	-63.5	0
+2	-63.5	0
+3	-63.5	0
+4	-63.5	0
+5	-63.5	0
+6	-63.5	0
+7	-63.5	0
+8	-63.5	0
+9	-63.5	0
+10	-63.5	0
+11	-63.5	0
+12	-63.5	0
+13	-63.5	0
+14	-63.5	0
+15	-63.5	0
+16	-63.5	0
+17	-63.5	0
+18	-63.5	0
+19	-63.5	0
+20	-63.5	0
+21	-63.5	0
+22	-63.5	0
+23	-63.5	0
+24	-63.5	0
+25	-63.5	0
+26	-63.5	0
+27	-63.5	0
+28	-63.5	0
+29	-63.5	0
+30	-63.5	0
+31	-63.5	0
+32	-63.5	0
+33	-63.5	0
+34	-63.5	0
+35	-63.5	0
+36	-63.5	0
+37	-63.5	0
+38	-63.5	0
+39	-63.5	0
+40	-63.5	0
+41	-63.5	0
+42	-63.5	0
+43	-63.5	0
+44	-63.5	0
+45	-63.5	0
+46	-63.5	0
+47	-63.5	0
+48	-63.5	0
+49	-63.5	0
+50	-63.5	0
+51	-63.5	0
+52	-63.5	0
+53	-63.5	0
+54	-63.5	0
+55	-63.5	0
+56	-63.5	0
+57	-63.5	0
+58	-63.5	0
+59	-63.5	0
+60	-63.5	0
+61	-63.5	0
+62	-63.5	0
+63	-63.5	0
+64	-63.5	0
+65	-63.5	0
+66	-63.5	0
+67	-63.5	0
+68	-63.5	0
+69	-63.5	0
+70	-63.5	0
+71	-63.5	0
+72	-63.5	0
+73	-63.5	0
+74	-63.5	0
+75	-63.5	0
+76	-63.5	0
+77	-63.5	0
+78	-63.5	0
+79	-63.5	0
+80	-63.5	0
+81	-63.5	0
+82	-63.5	0
+83	-63.5	0
+84	-63.5	0
+85	-63.5	0
+86	-63.5	0
+87	-63.5	0
+88	-63.5	0
+89	-63.5	0
+90	-63.5	0
+91	-63.5	0
+92	-63.5	0
+93	-63.5	0
+94	-63.5	0
+95	-63.5	0
+96	-63.5	0
+97	-63.5	0
+98	-63.5	0
+99	-63.5	0
+100	-63.5	0
+101	-63.5	0
+102	-63.5	0
+103	-63.5	0
+104	-63.5	0
+105	-63.5	0
+106	-63.5	0
+107	-63.5	0
+108	-63.5	0
+109	-63.5	0
+110	-63.5	0
+111	-63.5	0
+112	-63.5	0
+113	-63.5	0
+114	-63.5	0
+115	-63.5	0
+116	-63.5	0
+117	-63.5	0
+118	-63.5	0
+119	-63.5	0
+120	-63.5	0
+121	-63.5	0
+122	-63.5	0
+123	-63.5	0
+124	-63.5	0
+125	-63.5	0
+126	-63.5	0
+127	-63.5	0
+128	-63.5	0
+129	-63.5	0
+130	-63.5	0
+131	-63.5	0
+132	-63.5	0
+133	-63.5	0
+134	-63.5	0
+135	-63.5	0
+136	-63.5	0
+137	-63.5	0
+138	-63.5	0
+139	-63.5	0
+140	-63.5	0
+141	-63.5	0
+142	-63.5	0
+143	-63.5	0
+144	-63.5	0
+145	-63.5	0
+146	-63.5	0
+147	-63.5	0
+148	-63.5	0
+149	-63.5	0
+150	-63.5	0
+151	-63.5	0
+152	-63.5	0
+153	-63.5	0
+154	-63.5	0
+155	-63.5	0
+156	-63.5	0
+157	-63.5	0
+158	-63.5	0
+159	-63.5	0
+160	-63.5	0
+161	-63.5	0
+162	-63.5	0
+163	-63.5	0
+164	-63.5	0
+165	-63.5	0
+166	-63.5	0
+167	-63.5	0
+168	-63.5	0
+169	-63.5	0
+170	-63.5	0
+171	-63.5	0
+172	-63.5	0
+173	-63.5	0
+174	-63.5	0
+175	-63.5	0
+176	-63.5	0
+177	-63.5	0
+178	-63.5	0
+179	-63.5	0
+180	-63.5	0
+181	-63.5	0
+182	-63.5	0
+183	-63.5	0
+184	-63.5	0
+185	-63.5	0
+186	-63.5	0
+187	-63.5	0
+188	-63.5	0
+189	-63.5	0
+190	-63.5	0
+191	-63.5	0
+192	-63.5	0
+193	-63.5	0
+194	-63.5	0
+195	-63.5	0
+196	-63.5	0
+197	-63.5	0
+198	-63.5	0
+199	-63.5	0
+200	-63.5	0
+201	-63.5	0
+202	-63.5	0
+203	-63.5	0
+204	-63.5	0
+205	-63.5	0
+206	-63.5	0
+207	-63.5	0
+208	-63.5	0
+209	-63.5	0
+210	-63.5	0
+211	-63.5	0
+212	-63.5	0
+213	-63.5	0
+214	-63.5	0
+215	-63.5	0
+216	-63.5	0
+217	-63.5	0
+218	-63.5	0
+219	-63.5	0
+220	-63.5	0
+221	-63.5	0
+222	-63.5	0
+223	-63.5	0
+224	-63.5	0
+225	-63.5	0
+226	-63.5	0
+227	-63.5	0
+228	-63.5	0
+229	-63.5	0
+230	-63.5	0
+231	-63.5	0
+232	-63.5	0
+233	-63.5	0
+234	-63.5	0
+235	-63.5	0
+236	-63.5	0
+237	-63.5	0
+238	-63.5	0
+239	-63.5	0
+240	-63.5	0
+241	-63.5	0
+242	-63.5	0
+243	-63.5	0
+244	-63.5	0
+245	-63.5	0
+246	-63.5	0
+247	-63.5	0
+248	-63.5	0
+249	-63.5	0
+250	-63.5	0
+251	-63.5	0
+252	-63.5	0
+253	-63.5	0
+254	-63.5	0
+255	-63.5	0
+256	-63.5	0
+257	-63.5	0
+258	-63.5	0
+259	-63.5	0
+260	-63.5	0
+261	-63.5	0
+262	-63.5	0
+263	-63.5	0
+264	-63.5	0
+265	-63.5	0
+266	-63.5	0
+267	-63.5	0
+268	-63.5	0
+269	-63.5	0
+270	-63.5	0
+271	-63.5	0
+272	-63.5	0
+273	-63.5	0
+274	-63.5	0
+275	-63.5	0
+276	-63.5	0
+277	-63.5	0
+278	-63.5	0
+279	-63.5	0
+280	-63.5	0
+281	-63.5	0
+282	-63.5	0
+283	-63.5	0
+284	-63.5	0
+285	-63.5	0
+286	-63.5	0
+287	-63.5	0
+288	-63.5	0
+289	-63.5	0
+290	-63.5	0
+291	-63.5	0
+292	-63.5	0
+293	-63.5	0
+294	-63.5	0
+295	-63.5	0
+296	-63.5	0
+297	-63.5	0
+298	-63.5	0
+299	-63.5	0
+300	-63.5	0
+301	-63.5	0
+302	-63.5	0
+303	-63.5	0
+304	-63.5	0
+305	-63.5	0
+306	-63.5	0
+307	-63.5	0
+308	-63.5	0
+309	-63.5	0
+310	-63.5	0
+311	-63.5	0
+312	-63.5	0
+313	-63.5	0
+314	-63.5	0
+315	-63.5	0
+316	-63.5	0
+317	-63.5	0
+318	-63.5	0
+319	-63.5	0
+320	-63.5	0
+321	-63.5	0
+322	-63.5	0
+323	-63.5	0
+324	-63.5	0
+325	-63.5	0
+326	-63.5	0
+327	-63.5	0
+328	-63.5	0
+329	-63.5	0
+330	-63.5	0
+331	-63.5	0
+332	-63.5	0
+333	-63.5	0
+334	-63.5	0
+335	-63.5	0
+336	-63.5	0
+337	-63.5	0
+338	-63.5	0
+339	-63.5	0
+340	-63.5	0
+341	-63.5	0
+342	-63.5	0
+343	-63.5	0
+344	-63.5	0
+345	-63.5	0
+346	-63.5	0
+347	-63.5	0
+348	-63.5	0
+349	-63.5	0
+350	-63.5	0
+351	-63.5	0
+352	-63.5	0
+353	-63.5	0
+354	-63.5	0
+355	-63.5	0
+356	-63.5	0
+357	-63.5	0
+358	-63.5	0
+359	-63.5	0
+360	-63.5	0
+0	-63	0
+1	-63	0
+2	-63	0
+3	-63	0
+4	-63	0
+5	-63	0
+6	-63	0
+7	-63	0
+8	-63	0
+9	-63	0
+10	-63	0
+11	-63	0
+12	-63	0
+13	-63	0
+14	-63	0
+15	-63	0
+16	-63	0
+17	-63	0
+18	-63	0
+19	-63	0
+20	-63	0
+21	-63	0
+22	-63	0
+23	-63	0
+24	-63	0
+25	-63	0
+26	-63	0
+27	-63	0
+28	-63	0
+29	-63	0
+30	-63	0
+31	-63	0
+32	-63	0
+33	-63	0
+34	-63	0
+35	-63	0
+36	-63	0
+37	-63	0
+38	-63	0
+39	-63	0
+40	-63	0
+41	-63	0
+42	-63	0
+43	-63	0
+44	-63	0
+45	-63	0
+46	-63	0
+47	-63	0
+48	-63	0
+49	-63	0
+50	-63	0
+51	-63	0
+52	-63	0
+53	-63	0
+54	-63	0
+55	-63	0
+56	-63	0
+57	-63	0
+58	-63	0
+59	-63	0
+60	-63	0
+61	-63	0
+62	-63	0
+63	-63	0
+64	-63	0
+65	-63	0
+66	-63	0
+67	-63	0
+68	-63	0
+69	-63	0
+70	-63	0
+71	-63	0
+72	-63	0
+73	-63	0
+74	-63	0
+75	-63	0
+76	-63	0
+77	-63	0
+78	-63	0
+79	-63	0
+80	-63	0
+81	-63	0
+82	-63	0
+83	-63	0
+84	-63	0
+85	-63	0
+86	-63	0
+87	-63	0
+88	-63	0
+89	-63	0
+90	-63	0
+91	-63	0
+92	-63	0
+93	-63	0
+94	-63	0
+95	-63	0
+96	-63	0
+97	-63	0
+98	-63	0
+99	-63	0
+100	-63	0
+101	-63	0
+102	-63	0
+103	-63	0
+104	-63	0
+105	-63	0
+106	-63	0
+107	-63	0
+108	-63	0
+109	-63	0
+110	-63	0
+111	-63	0
+112	-63	0
+113	-63	0
+114	-63	0
+115	-63	0
+116	-63	0
+117	-63	0
+118	-63	0
+119	-63	0
+120	-63	0
+121	-63	0
+122	-63	0
+123	-63	0
+124	-63	0
+125	-63	0
+126	-63	0
+127	-63	0
+128	-63	0
+129	-63	0
+130	-63	0
+131	-63	0
+132	-63	0
+133	-63	0
+134	-63	0
+135	-63	0
+136	-63	0
+137	-63	0
+138	-63	0
+139	-63	0
+140	-63	0
+141	-63	0
+142	-63	0
+143	-63	0
+144	-63	0
+145	-63	0
+146	-63	0
+147	-63	0
+148	-63	0
+149	-63	0
+150	-63	0
+151	-63	0
+152	-63	0
+153	-63	0
+154	-63	0
+155	-63	0
+156	-63	0
+157	-63	0
+158	-63	0
+159	-63	0
+160	-63	0
+161	-63	0
+162	-63	0
+163	-63	0
+164	-63	0
+165	-63	0
+166	-63	0
+167	-63	0
+168	-63	0
+169	-63	0
+170	-63	0
+171	-63	0
+172	-63	0
+173	-63	0
+174	-63	0
+175	-63	0
+176	-63	0
+177	-63	0
+178	-63	0
+179	-63	0
+180	-63	0
+181	-63	0
+182	-63	0
+183	-63	0
+184	-63	0
+185	-63	0
+186	-63	0
+187	-63	0
+188	-63	0
+189	-63	0
+190	-63	0
+191	-63	0
+192	-63	0
+193	-63	0
+194	-63	0
+195	-63	0
+196	-63	0
+197	-63	0
+198	-63	0
+199	-63	0
+200	-63	0
+201	-63	0
+202	-63	0
+203	-63	0
+204	-63	0
+205	-63	0
+206	-63	0
+207	-63	0
+208	-63	0
+209	-63	0
+210	-63	0
+211	-63	0
+212	-63	0
+213	-63	0
+214	-63	0
+215	-63	0
+216	-63	0
+217	-63	0
+218	-63	0
+219	-63	0
+220	-63	0
+221	-63	0
+222	-63	0
+223	-63	0
+224	-63	0
+225	-63	0
+226	-63	0
+227	-63	0
+228	-63	0
+229	-63	0
+230	-63	0
+231	-63	0
+232	-63	0
+233	-63	0
+234	-63	0
+235	-63	0
+236	-63	0
+237	-63	0
+238	-63	0
+239	-63	0
+240	-63	0
+241	-63	0
+242	-63	0
+243	-63	0
+244	-63	0
+245	-63	0
+246	-63	0
+247	-63	0
+248	-63	0
+249	-63	0
+250	-63	0
+251	-63	0
+252	-63	0
+253	-63	0
+254	-63	0
+255	-63	0
+256	-63	0
+257	-63	0
+258	-63	0
+259	-63	0
+260	-63	0
+261	-63	0
+262	-63	0
+263	-63	0
+264	-63	0
+265	-63	0
+266	-63	0
+267	-63	0
+268	-63	0
+269	-63	0
+270	-63	0
+271	-63	0
+272	-63	0
+273	-63	0
+274	-63	0
+275	-63	0
+276	-63	0
+277	-63	0
+278	-63	0
+279	-63	0
+280	-63	0
+281	-63	0
+282	-63	0
+283	-63	0
+284	-63	0
+285	-63	0
+286	-63	0
+287	-63	0
+288	-63	0
+289	-63	0
+290	-63	0
+291	-63	0
+292	-63	0
+293	-63	0
+294	-63	0
+295	-63	0
+296	-63	0
+297	-63	0
+298	-63	0
+299	-63	0
+300	-63	0
+301	-63	0
+302	-63	0
+303	-63	0
+304	-63	0
+305	-63	0
+306	-63	0
+307	-63	0
+308	-63	0
+309	-63	0
+310	-63	0
+311	-63	0
+312	-63	0
+313	-63	0
+314	-63	0
+315	-63	0
+316	-63	0
+317	-63	0
+318	-63	0
+319	-63	0
+320	-63	0
+321	-63	0
+322	-63	0
+323	-63	0
+324	-63	0
+325	-63	0
+326	-63	0
+327	-63	0
+328	-63	0
+329	-63	0
+330	-63	0
+331	-63	0
+332	-63	0
+333	-63	0
+334	-63	0
+335	-63	0
+336	-63	0
+337	-63	0
+338	-63	0
+339	-63	0
+340	-63	0
+341	-63	0
+342	-63	0
+343	-63	0
+344	-63	0
+345	-63	0
+346	-63	0
+347	-63	0
+348	-63	0
+349	-63	0
+350	-63	0
+351	-63	0
+352	-63	0
+353	-63	0
+354	-63	0
+355	-63	0
+356	-63	0
+357	-63	0
+358	-63	0
+359	-63	0
+360	-63	0
+0	-62.5	0
+1	-62.5	0
+2	-62.5	0
+3	-62.5	0
+4	-62.5	0
+5	-62.5	0
+6	-62.5	0
+7	-62.5	0
+8	-62.5	0
+9	-62.5	0
+10	-62.5	0
+11	-62.5	0
+12	-62.5	0
+13	-62.5	0
+14	-62.5	0
+15	-62.5	0
+16	-62.5	0
+17	-62.5	0
+18	-62.5	0
+19	-62.5	0
+20	-62.5	0
+21	-62.5	0
+22	-62.5	0
+23	-62.5	0
+24	-62.5	0
+25	-62.5	0
+26	-62.5	0
+27	-62.5	0
+28	-62.5	0
+29	-62.5	0
+30	-62.5	0
+31	-62.5	0
+32	-62.5	0
+33	-62.5	0
+34	-62.5	0
+35	-62.5	0
+36	-62.5	0
+37	-62.5	0
+38	-62.5	0
+39	-62.5	0
+40	-62.5	0
+41	-62.5	0
+42	-62.5	0
+43	-62.5	0
+44	-62.5	0
+45	-62.5	0
+46	-62.5	0
+47	-62.5	0
+48	-62.5	0
+49	-62.5	0
+50	-62.5	0
+51	-62.5	0
+52	-62.5	0
+53	-62.5	0
+54	-62.5	0
+55	-62.5	0
+56	-62.5	0
+57	-62.5	0
+58	-62.5	0
+59	-62.5	0
+60	-62.5	0
+61	-62.5	0
+62	-62.5	0
+63	-62.5	0
+64	-62.5	0
+65	-62.5	0
+66	-62.5	0
+67	-62.5	0
+68	-62.5	0
+69	-62.5	0
+70	-62.5	0
+71	-62.5	0
+72	-62.5	0
+73	-62.5	0
+74	-62.5	0
+75	-62.5	0
+76	-62.5	0
+77	-62.5	0
+78	-62.5	0
+79	-62.5	0
+80	-62.5	0
+81	-62.5	0
+82	-62.5	0
+83	-62.5	0
+84	-62.5	0
+85	-62.5	0
+86	-62.5	0
+87	-62.5	0
+88	-62.5	0
+89	-62.5	0
+90	-62.5	0
+91	-62.5	0
+92	-62.5	0
+93	-62.5	0
+94	-62.5	0
+95	-62.5	0
+96	-62.5	0
+97	-62.5	0
+98	-62.5	0
+99	-62.5	0
+100	-62.5	0
+101	-62.5	0
+102	-62.5	0
+103	-62.5	0
+104	-62.5	0
+105	-62.5	0
+106	-62.5	0
+107	-62.5	0
+108	-62.5	0
+109	-62.5	0
+110	-62.5	0
+111	-62.5	0
+112	-62.5	0
+113	-62.5	0
+114	-62.5	0
+115	-62.5	0
+116	-62.5	0
+117	-62.5	0
+118	-62.5	0
+119	-62.5	0
+120	-62.5	0
+121	-62.5	0
+122	-62.5	0
+123	-62.5	0
+124	-62.5	0
+125	-62.5	0
+126	-62.5	0
+127	-62.5	0
+128	-62.5	0
+129	-62.5	0
+130	-62.5	0
+131	-62.5	0
+132	-62.5	0
+133	-62.5	0
+134	-62.5	0
+135	-62.5	0
+136	-62.5	0
+137	-62.5	0
+138	-62.5	0
+139	-62.5	0
+140	-62.5	0
+141	-62.5	0
+142	-62.5	0
+143	-62.5	0
+144	-62.5	0
+145	-62.5	0
+146	-62.5	0
+147	-62.5	0
+148	-62.5	0
+149	-62.5	0
+150	-62.5	0
+151	-62.5	0
+152	-62.5	0
+153	-62.5	0
+154	-62.5	0
+155	-62.5	0
+156	-62.5	0
+157	-62.5	0
+158	-62.5	0
+159	-62.5	0
+160	-62.5	0
+161	-62.5	0
+162	-62.5	0
+163	-62.5	0
+164	-62.5	0
+165	-62.5	0
+166	-62.5	0
+167	-62.5	0
+168	-62.5	0
+169	-62.5	0
+170	-62.5	0
+171	-62.5	0
+172	-62.5	0
+173	-62.5	0
+174	-62.5	0
+175	-62.5	0
+176	-62.5	0
+177	-62.5	0
+178	-62.5	0
+179	-62.5	0
+180	-62.5	0
+181	-62.5	0
+182	-62.5	0
+183	-62.5	0
+184	-62.5	0
+185	-62.5	0
+186	-62.5	0
+187	-62.5	0
+188	-62.5	0
+189	-62.5	0
+190	-62.5	0
+191	-62.5	0
+192	-62.5	0
+193	-62.5	0
+194	-62.5	0
+195	-62.5	0
+196	-62.5	0
+197	-62.5	0
+198	-62.5	0
+199	-62.5	0
+200	-62.5	0
+201	-62.5	0
+202	-62.5	0
+203	-62.5	0
+204	-62.5	0
+205	-62.5	0
+206	-62.5	0
+207	-62.5	0
+208	-62.5	0
+209	-62.5	0
+210	-62.5	0
+211	-62.5	0
+212	-62.5	0
+213	-62.5	0
+214	-62.5	0
+215	-62.5	0
+216	-62.5	0
+217	-62.5	0
+218	-62.5	0
+219	-62.5	0
+220	-62.5	0
+221	-62.5	0
+222	-62.5	0
+223	-62.5	0
+224	-62.5	0
+225	-62.5	0
+226	-62.5	0
+227	-62.5	0
+228	-62.5	0
+229	-62.5	0
+230	-62.5	0
+231	-62.5	0
+232	-62.5	0
+233	-62.5	0
+234	-62.5	0
+235	-62.5	0
+236	-62.5	0
+237	-62.5	0
+238	-62.5	0
+239	-62.5	0
+240	-62.5	0
+241	-62.5	0
+242	-62.5	0
+243	-62.5	0
+244	-62.5	0
+245	-62.5	0
+246	-62.5	0
+247	-62.5	0
+248	-62.5	0
+249	-62.5	0
+250	-62.5	0
+251	-62.5	0
+252	-62.5	0
+253	-62.5	0
+254	-62.5	0
+255	-62.5	0
+256	-62.5	0
+257	-62.5	0
+258	-62.5	0
+259	-62.5	0
+260	-62.5	0
+261	-62.5	0
+262	-62.5	0
+263	-62.5	0
+264	-62.5	0
+265	-62.5	0
+266	-62.5	0
+267	-62.5	0
+268	-62.5	0
+269	-62.5	0
+270	-62.5	0
+271	-62.5	0
+272	-62.5	0
+273	-62.5	0
+274	-62.5	0
+275	-62.5	0
+276	-62.5	0
+277	-62.5	0
+278	-62.5	0
+279	-62.5	0
+280	-62.5	0
+281	-62.5	0
+282	-62.5	0
+283	-62.5	0
+284	-62.5	0
+285	-62.5	0
+286	-62.5	0
+287	-62.5	0
+288	-62.5	0
+289	-62.5	0
+290	-62.5	0
+291	-62.5	0
+292	-62.5	0
+293	-62.5	0
+294	-62.5	0
+295	-62.5	0
+296	-62.5	0
+297	-62.5	0
+298	-62.5	0
+299	-62.5	0
+300	-62.5	0
+301	-62.5	0
+302	-62.5	0
+303	-62.5	0
+304	-62.5	0
+305	-62.5	0
+306	-62.5	0
+307	-62.5	0
+308	-62.5	0
+309	-62.5	0
+310	-62.5	0
+311	-62.5	0
+312	-62.5	0
+313	-62.5	0
+314	-62.5	0
+315	-62.5	0
+316	-62.5	0
+317	-62.5	0
+318	-62.5	0
+319	-62.5	0
+320	-62.5	0
+321	-62.5	0
+322	-62.5	0
+323	-62.5	0
+324	-62.5	0
+325	-62.5	0
+326	-62.5	0
+327	-62.5	0
+328	-62.5	0
+329	-62.5	0
+330	-62.5	0
+331	-62.5	0
+332	-62.5	0
+333	-62.5	0
+334	-62.5	0
+335	-62.5	0
+336	-62.5	0
+337	-62.5	0
+338	-62.5	0
+339	-62.5	0
+340	-62.5	0
+341	-62.5	0
+342	-62.5	0
+343	-62.5	0
+344	-62.5	0
+345	-62.5	0
+346	-62.5	0
+347	-62.5	0
+348	-62.5	0
+349	-62.5	0
+350	-62.5	0
+351	-62.5	0
+352	-62.5	0
+353	-62.5	0
+354	-62.5	0
+355	-62.5	0
+356	-62.5	0
+357	-62.5	0
+358	-62.5	0
+359	-62.5	0
+360	-62.5	0
+0	-62	0
+1	-62	0
+2	-62	0
+3	-62	0
+4	-62	0
+5	-62	0
+6	-62	0
+7	-62	0
+8	-62	0
+9	-62	0
+10	-62	0
+11	-62	0
+12	-62	0
+13	-62	0
+14	-62	0
+15	-62	0
+16	-62	0
+17	-62	0
+18	-62	0
+19	-62	0
+20	-62	0
+21	-62	0
+22	-62	0
+23	-62	0
+24	-62	0
+25	-62	0
+26	-62	0
+27	-62	0
+28	-62	0
+29	-62	0
+30	-62	0
+31	-62	0
+32	-62	0
+33	-62	0
+34	-62	0
+35	-62	0
+36	-62	0
+37	-62	0
+38	-62	0
+39	-62	0
+40	-62	0
+41	-62	0
+42	-62	0
+43	-62	0
+44	-62	0
+45	-62	0
+46	-62	0
+47	-62	0
+48	-62	0
+49	-62	0
+50	-62	0
+51	-62	0
+52	-62	0
+53	-62	0
+54	-62	0
+55	-62	0
+56	-62	0
+57	-62	0
+58	-62	0
+59	-62	0
+60	-62	0
+61	-62	0
+62	-62	0
+63	-62	0
+64	-62	0
+65	-62	0
+66	-62	0
+67	-62	0
+68	-62	0
+69	-62	0
+70	-62	0
+71	-62	0
+72	-62	0
+73	-62	0
+74	-62	0
+75	-62	0
+76	-62	0
+77	-62	0
+78	-62	0
+79	-62	0
+80	-62	0
+81	-62	0
+82	-62	0
+83	-62	0
+84	-62	0
+85	-62	0
+86	-62	0
+87	-62	0
+88	-62	0
+89	-62	0
+90	-62	0
+91	-62	0
+92	-62	0
+93	-62	0
+94	-62	0
+95	-62	0
+96	-62	0
+97	-62	0
+98	-62	0
+99	-62	0
+100	-62	0
+101	-62	0
+102	-62	0
+103	-62	0
+104	-62	0
+105	-62	0
+106	-62	0
+107	-62	0
+108	-62	0
+109	-62	0
+110	-62	0
+111	-62	0
+112	-62	0
+113	-62	0
+114	-62	0
+115	-62	0
+116	-62	0
+117	-62	0
+118	-62	0
+119	-62	0
+120	-62	0
+121	-62	0
+122	-62	0
+123	-62	0
+124	-62	0
+125	-62	0
+126	-62	0
+127	-62	0
+128	-62	0
+129	-62	0
+130	-62	0
+131	-62	0
+132	-62	0
+133	-62	0
+134	-62	0
+135	-62	0
+136	-62	0
+137	-62	0
+138	-62	0
+139	-62	0
+140	-62	0
+141	-62	0
+142	-62	0
+143	-62	0
+144	-62	0
+145	-62	0
+146	-62	0
+147	-62	0
+148	-62	0
+149	-62	0
+150	-62	0
+151	-62	0
+152	-62	0
+153	-62	0
+154	-62	0
+155	-62	0
+156	-62	0
+157	-62	0
+158	-62	0
+159	-62	0
+160	-62	0
+161	-62	0
+162	-62	0
+163	-62	0
+164	-62	0
+165	-62	0
+166	-62	0
+167	-62	0
+168	-62	0
+169	-62	0
+170	-62	0
+171	-62	0
+172	-62	0
+173	-62	0
+174	-62	0
+175	-62	0
+176	-62	0
+177	-62	0
+178	-62	0
+179	-62	0
+180	-62	0
+181	-62	0
+182	-62	0
+183	-62	0
+184	-62	0
+185	-62	0
+186	-62	0
+187	-62	0
+188	-62	0
+189	-62	0
+190	-62	0
+191	-62	0
+192	-62	0
+193	-62	0
+194	-62	0
+195	-62	0
+196	-62	0
+197	-62	0
+198	-62	0
+199	-62	0
+200	-62	0
+201	-62	0
+202	-62	0
+203	-62	0
+204	-62	0
+205	-62	0
+206	-62	0
+207	-62	0
+208	-62	0
+209	-62	0
+210	-62	0
+211	-62	0
+212	-62	0
+213	-62	0
+214	-62	0
+215	-62	0
+216	-62	0
+217	-62	0
+218	-62	0
+219	-62	0
+220	-62	0
+221	-62	0
+222	-62	0
+223	-62	0
+224	-62	0
+225	-62	0
+226	-62	0
+227	-62	0
+228	-62	0
+229	-62	0
+230	-62	0
+231	-62	0
+232	-62	0
+233	-62	0
+234	-62	0
+235	-62	0
+236	-62	0
+237	-62	0
+238	-62	0
+239	-62	0
+240	-62	0
+241	-62	0
+242	-62	0
+243	-62	0
+244	-62	0
+245	-62	0
+246	-62	0
+247	-62	0
+248	-62	0
+249	-62	0
+250	-62	0
+251	-62	0
+252	-62	0
+253	-62	0
+254	-62	0
+255	-62	0
+256	-62	0
+257	-62	0
+258	-62	0
+259	-62	0
+260	-62	0
+261	-62	0
+262	-62	0
+263	-62	0
+264	-62	0
+265	-62	0
+266	-62	0
+267	-62	0
+268	-62	0
+269	-62	0
+270	-62	0
+271	-62	0
+272	-62	0
+273	-62	0
+274	-62	0
+275	-62	0
+276	-62	0
+277	-62	0
+278	-62	0
+279	-62	0
+280	-62	0
+281	-62	0
+282	-62	0
+283	-62	0
+284	-62	0
+285	-62	0
+286	-62	0
+287	-62	0
+288	-62	0
+289	-62	0
+290	-62	0
+291	-62	0
+292	-62	0
+293	-62	0
+294	-62	0
+295	-62	0
+296	-62	0
+297	-62	0
+298	-62	0
+299	-62	0
+300	-62	0
+301	-62	0
+302	-62	0
+303	-62	0
+304	-62	0
+305	-62	0
+306	-62	0
+307	-62	0
+308	-62	0
+309	-62	0
+310	-62	0
+311	-62	0
+312	-62	0
+313	-62	0
+314	-62	0
+315	-62	0
+316	-62	0
+317	-62	0
+318	-62	0
+319	-62	0
+320	-62	0
+321	-62	0
+322	-62	0
+323	-62	0
+324	-62	0
+325	-62	0
+326	-62	0
+327	-62	0
+328	-62	0
+329	-62	0
+330	-62	0
+331	-62	0
+332	-62	0
+333	-62	0
+334	-62	0
+335	-62	0
+336	-62	0
+337	-62	0
+338	-62	0
+339	-62	0
+340	-62	0
+341	-62	0
+342	-62	0
+343	-62	0
+344	-62	0
+345	-62	0
+346	-62	0
+347	-62	0
+348	-62	0
+349	-62	0
+350	-62	0
+351	-62	0
+352	-62	0
+353	-62	0
+354	-62	0
+355	-62	0
+356	-62	0
+357	-62	0
+358	-62	0
+359	-62	0
+360	-62	0
+0	-61.5	0
+1	-61.5	0
+2	-61.5	0
+3	-61.5	0
+4	-61.5	0
+5	-61.5	0
+6	-61.5	0
+7	-61.5	0
+8	-61.5	0
+9	-61.5	0
+10	-61.5	0
+11	-61.5	0
+12	-61.5	0
+13	-61.5	0
+14	-61.5	0
+15	-61.5	0
+16	-61.5	0
+17	-61.5	0
+18	-61.5	0
+19	-61.5	0
+20	-61.5	0
+21	-61.5	0
+22	-61.5	0
+23	-61.5	0
+24	-61.5	0
+25	-61.5	0
+26	-61.5	0
+27	-61.5	0
+28	-61.5	0
+29	-61.5	0
+30	-61.5	0
+31	-61.5	0
+32	-61.5	0
+33	-61.5	0
+34	-61.5	0
+35	-61.5	0
+36	-61.5	0
+37	-61.5	0
+38	-61.5	0
+39	-61.5	0
+40	-61.5	0
+41	-61.5	0
+42	-61.5	0
+43	-61.5	0
+44	-61.5	0
+45	-61.5	0
+46	-61.5	0
+47	-61.5	0
+48	-61.5	0
+49	-61.5	0
+50	-61.5	0
+51	-61.5	0
+52	-61.5	0
+53	-61.5	0
+54	-61.5	0
+55	-61.5	0
+56	-61.5	0
+57	-61.5	0
+58	-61.5	0
+59	-61.5	0
+60	-61.5	0
+61	-61.5	0
+62	-61.5	0
+63	-61.5	0
+64	-61.5	0
+65	-61.5	0
+66	-61.5	0
+67	-61.5	0
+68	-61.5	0
+69	-61.5	0
+70	-61.5	0
+71	-61.5	0
+72	-61.5	0
+73	-61.5	0
+74	-61.5	0
+75	-61.5	0
+76	-61.5	0
+77	-61.5	0
+78	-61.5	0
+79	-61.5	0
+80	-61.5	0
+81	-61.5	0
+82	-61.5	0
+83	-61.5	0
+84	-61.5	0
+85	-61.5	0
+86	-61.5	0
+87	-61.5	0
+88	-61.5	0
+89	-61.5	0
+90	-61.5	0
+91	-61.5	0
+92	-61.5	0
+93	-61.5	0
+94	-61.5	0
+95	-61.5	0
+96	-61.5	0
+97	-61.5	0
+98	-61.5	0
+99	-61.5	0
+100	-61.5	0
+101	-61.5	0
+102	-61.5	0
+103	-61.5	0
+104	-61.5	0
+105	-61.5	0
+106	-61.5	0
+107	-61.5	0
+108	-61.5	0
+109	-61.5	0
+110	-61.5	0
+111	-61.5	0
+112	-61.5	0
+113	-61.5	0
+114	-61.5	0
+115	-61.5	0
+116	-61.5	0
+117	-61.5	0
+118	-61.5	0
+119	-61.5	0
+120	-61.5	0
+121	-61.5	0
+122	-61.5	0
+123	-61.5	0
+124	-61.5	0
+125	-61.5	0
+126	-61.5	0
+127	-61.5	0
+128	-61.5	0
+129	-61.5	0
+130	-61.5	0
+131	-61.5	0
+132	-61.5	0
+133	-61.5	0
+134	-61.5	0
+135	-61.5	0
+136	-61.5	0
+137	-61.5	0
+138	-61.5	0
+139	-61.5	0
+140	-61.5	0
+141	-61.5	0
+142	-61.5	0
+143	-61.5	0
+144	-61.5	0
+145	-61.5	0
+146	-61.5	0
+147	-61.5	0
+148	-61.5	0
+149	-61.5	0
+150	-61.5	0
+151	-61.5	0
+152	-61.5	0
+153	-61.5	0
+154	-61.5	0
+155	-61.5	0
+156	-61.5	0
+157	-61.5	0
+158	-61.5	0
+159	-61.5	0
+160	-61.5	0
+161	-61.5	0
+162	-61.5	0
+163	-61.5	0
+164	-61.5	0
+165	-61.5	0
+166	-61.5	0
+167	-61.5	0
+168	-61.5	0
+169	-61.5	0
+170	-61.5	0
+171	-61.5	0
+172	-61.5	0
+173	-61.5	0
+174	-61.5	0
+175	-61.5	0
+176	-61.5	0
+177	-61.5	0
+178	-61.5	0
+179	-61.5	0
+180	-61.5	0
+181	-61.5	0
+182	-61.5	0
+183	-61.5	0
+184	-61.5	0
+185	-61.5	0
+186	-61.5	0
+187	-61.5	0
+188	-61.5	0
+189	-61.5	0
+190	-61.5	0
+191	-61.5	0
+192	-61.5	0
+193	-61.5	0
+194	-61.5	0
+195	-61.5	0
+196	-61.5	0
+197	-61.5	0
+198	-61.5	0
+199	-61.5	0
+200	-61.5	0
+201	-61.5	0
+202	-61.5	0
+203	-61.5	0
+204	-61.5	0
+205	-61.5	0
+206	-61.5	0
+207	-61.5	0
+208	-61.5	0
+209	-61.5	0
+210	-61.5	0
+211	-61.5	0
+212	-61.5	0
+213	-61.5	0
+214	-61.5	0
+215	-61.5	0
+216	-61.5	0
+217	-61.5	0
+218	-61.5	0
+219	-61.5	0
+220	-61.5	0
+221	-61.5	0
+222	-61.5	0
+223	-61.5	0
+224	-61.5	0
+225	-61.5	0
+226	-61.5	0
+227	-61.5	0
+228	-61.5	0
+229	-61.5	0
+230	-61.5	0
+231	-61.5	0
+232	-61.5	0
+233	-61.5	0
+234	-61.5	0
+235	-61.5	0
+236	-61.5	0
+237	-61.5	0
+238	-61.5	0
+239	-61.5	0
+240	-61.5	0
+241	-61.5	0
+242	-61.5	0
+243	-61.5	0
+244	-61.5	0
+245	-61.5	0
+246	-61.5	0
+247	-61.5	0
+248	-61.5	0
+249	-61.5	0
+250	-61.5	0
+251	-61.5	0
+252	-61.5	0
+253	-61.5	0
+254	-61.5	0
+255	-61.5	0
+256	-61.5	0
+257	-61.5	0
+258	-61.5	0
+259	-61.5	0
+260	-61.5	0
+261	-61.5	0
+262	-61.5	0
+263	-61.5	0
+264	-61.5	0
+265	-61.5	0
+266	-61.5	0
+267	-61.5	0
+268	-61.5	0
+269	-61.5	0
+270	-61.5	0
+271	-61.5	0
+272	-61.5	0
+273	-61.5	0
+274	-61.5	0
+275	-61.5	0
+276	-61.5	0
+277	-61.5	0
+278	-61.5	0
+279	-61.5	0
+280	-61.5	0
+281	-61.5	0
+282	-61.5	0
+283	-61.5	0
+284	-61.5	0
+285	-61.5	0
+286	-61.5	0
+287	-61.5	0
+288	-61.5	0
+289	-61.5	0
+290	-61.5	0
+291	-61.5	0
+292	-61.5	0
+293	-61.5	0
+294	-61.5	0
+295	-61.5	0
+296	-61.5	0
+297	-61.5	0
+298	-61.5	0
+299	-61.5	0
+300	-61.5	0
+301	-61.5	0
+302	-61.5	0
+303	-61.5	0
+304	-61.5	0
+305	-61.5	0
+306	-61.5	0
+307	-61.5	0
+308	-61.5	0
+309	-61.5	0
+310	-61.5	0
+311	-61.5	0
+312	-61.5	0
+313	-61.5	0
+314	-61.5	0
+315	-61.5	0
+316	-61.5	0
+317	-61.5	0
+318	-61.5	0
+319	-61.5	0
+320	-61.5	0
+321	-61.5	0
+322	-61.5	0
+323	-61.5	0
+324	-61.5	0
+325	-61.5	0
+326	-61.5	0
+327	-61.5	0
+328	-61.5	0
+329	-61.5	0
+330	-61.5	0
+331	-61.5	0
+332	-61.5	0
+333	-61.5	0
+334	-61.5	0
+335	-61.5	0
+336	-61.5	0
+337	-61.5	0
+338	-61.5	0
+339	-61.5	0
+340	-61.5	0
+341	-61.5	0
+342	-61.5	0
+343	-61.5	0
+344	-61.5	0
+345	-61.5	0
+346	-61.5	0
+347	-61.5	0
+348	-61.5	0
+349	-61.5	0
+350	-61.5	0
+351	-61.5	0
+352	-61.5	0
+353	-61.5	0
+354	-61.5	0
+355	-61.5	0
+356	-61.5	0
+357	-61.5	0
+358	-61.5	0
+359	-61.5	0
+360	-61.5	0
+0	-61	0
+1	-61	0
+2	-61	0
+3	-61	0
+4	-61	0
+5	-61	0
+6	-61	0
+7	-61	0
+8	-61	0
+9	-61	0
+10	-61	0
+11	-61	0
+12	-61	0
+13	-61	0
+14	-61	0
+15	-61	0
+16	-61	0
+17	-61	0
+18	-61	0
+19	-61	0
+20	-61	0
+21	-61	0
+22	-61	0
+23	-61	0
+24	-61	0
+25	-61	0
+26	-61	0
+27	-61	0
+28	-61	0
+29	-61	0
+30	-61	0
+31	-61	0
+32	-61	0
+33	-61	0
+34	-61	0
+35	-61	0
+36	-61	0
+37	-61	0
+38	-61	0
+39	-61	0
+40	-61	0
+41	-61	0
+42	-61	0
+43	-61	0
+44	-61	0
+45	-61	0
+46	-61	0
+47	-61	0
+48	-61	0
+49	-61	0
+50	-61	0
+51	-61	0
+52	-61	0
+53	-61	0
+54	-61	0
+55	-61	0
+56	-61	0
+57	-61	0
+58	-61	0
+59	-61	0
+60	-61	0
+61	-61	0
+62	-61	0
+63	-61	0
+64	-61	0
+65	-61	0
+66	-61	0
+67	-61	0
+68	-61	0
+69	-61	0
+70	-61	0
+71	-61	0
+72	-61	0
+73	-61	0
+74	-61	0
+75	-61	0
+76	-61	0
+77	-61	0
+78	-61	0
+79	-61	0
+80	-61	0
+81	-61	0
+82	-61	0
+83	-61	0
+84	-61	0
+85	-61	0
+86	-61	0
+87	-61	0
+88	-61	0
+89	-61	0
+90	-61	0
+91	-61	0
+92	-61	0
+93	-61	0
+94	-61	0
+95	-61	0
+96	-61	0
+97	-61	0
+98	-61	0
+99	-61	0
+100	-61	0
+101	-61	0
+102	-61	0
+103	-61	0
+104	-61	0
+105	-61	0
+106	-61	0
+107	-61	0
+108	-61	0
+109	-61	0
+110	-61	0
+111	-61	0
+112	-61	0
+113	-61	0
+114	-61	0
+115	-61	0
+116	-61	0
+117	-61	0
+118	-61	0
+119	-61	0
+120	-61	0
+121	-61	0
+122	-61	0
+123	-61	0
+124	-61	0
+125	-61	0
+126	-61	0
+127	-61	0
+128	-61	0
+129	-61	0
+130	-61	0
+131	-61	0
+132	-61	0
+133	-61	0
+134	-61	0
+135	-61	0
+136	-61	0
+137	-61	0
+138	-61	0
+139	-61	0
+140	-61	0
+141	-61	0
+142	-61	0
+143	-61	0
+144	-61	0
+145	-61	0
+146	-61	0
+147	-61	0
+148	-61	0
+149	-61	0
+150	-61	0
+151	-61	0
+152	-61	0
+153	-61	0
+154	-61	0
+155	-61	0
+156	-61	0
+157	-61	0
+158	-61	0
+159	-61	0
+160	-61	0
+161	-61	0
+162	-61	0
+163	-61	0
+164	-61	0
+165	-61	0
+166	-61	0
+167	-61	0
+168	-61	0
+169	-61	0
+170	-61	0
+171	-61	0
+172	-61	0
+173	-61	0
+174	-61	0
+175	-61	0
+176	-61	0
+177	-61	0
+178	-61	0
+179	-61	0
+180	-61	0
+181	-61	0
+182	-61	0
+183	-61	0
+184	-61	0
+185	-61	0
+186	-61	0
+187	-61	0
+188	-61	0
+189	-61	0
+190	-61	0
+191	-61	0
+192	-61	0
+193	-61	0
+194	-61	0
+195	-61	0
+196	-61	0
+197	-61	0
+198	-61	0
+199	-61	0
+200	-61	0
+201	-61	0
+202	-61	0
+203	-61	0
+204	-61	0
+205	-61	0
+206	-61	0
+207	-61	0
+208	-61	0
+209	-61	0
+210	-61	0
+211	-61	0
+212	-61	0
+213	-61	0
+214	-61	0
+215	-61	0
+216	-61	0
+217	-61	0
+218	-61	0
+219	-61	0
+220	-61	0
+221	-61	0
+222	-61	0
+223	-61	0
+224	-61	0
+225	-61	0
+226	-61	0
+227	-61	0
+228	-61	0
+229	-61	0
+230	-61	0
+231	-61	0
+232	-61	0
+233	-61	0
+234	-61	0
+235	-61	0
+236	-61	0
+237	-61	0
+238	-61	0
+239	-61	0
+240	-61	0
+241	-61	0
+242	-61	0
+243	-61	0
+244	-61	0
+245	-61	0
+246	-61	0
+247	-61	0
+248	-61	0
+249	-61	0
+250	-61	0
+251	-61	0
+252	-61	0
+253	-61	0
+254	-61	0
+255	-61	0
+256	-61	0
+257	-61	0
+258	-61	0
+259	-61	0
+260	-61	0
+261	-61	0
+262	-61	0
+263	-61	0
+264	-61	0
+265	-61	0
+266	-61	0
+267	-61	0
+268	-61	0
+269	-61	0
+270	-61	0
+271	-61	0
+272	-61	0
+273	-61	0
+274	-61	0
+275	-61	0
+276	-61	0
+277	-61	0
+278	-61	0
+279	-61	0
+280	-61	0
+281	-61	0
+282	-61	0
+283	-61	0
+284	-61	0
+285	-61	0
+286	-61	0
+287	-61	0
+288	-61	0
+289	-61	0
+290	-61	0
+291	-61	0
+292	-61	0
+293	-61	0
+294	-61	0
+295	-61	0
+296	-61	0
+297	-61	0
+298	-61	0
+299	-61	0
+300	-61	0
+301	-61	0
+302	-61	0
+303	-61	0
+304	-61	0
+305	-61	0
+306	-61	0
+307	-61	0
+308	-61	0
+309	-61	0
+310	-61	0
+311	-61	0
+312	-61	0
+313	-61	0
+314	-61	0
+315	-61	0
+316	-61	0
+317	-61	0
+318	-61	0
+319	-61	0
+320	-61	0
+321	-61	0
+322	-61	0
+323	-61	0
+324	-61	0
+325	-61	0
+326	-61	0
+327	-61	0
+328	-61	0
+329	-61	0
+330	-61	0
+331	-61	0
+332	-61	0
+333	-61	0
+334	-61	0
+335	-61	0
+336	-61	0
+337	-61	0
+338	-61	0
+339	-61	0
+340	-61	0
+341	-61	0
+342	-61	0
+343	-61	0
+344	-61	0
+345	-61	0
+346	-61	0
+347	-61	0
+348	-61	0
+349	-61	0
+350	-61	0
+351	-61	0
+352	-61	0
+353	-61	0
+354	-61	0
+355	-61	0
+356	-61	0
+357	-61	0
+358	-61	0
+359	-61	0
+360	-61	0
+0	-60.5	0
+1	-60.5	0
+2	-60.5	0
+3	-60.5	0
+4	-60.5	0
+5	-60.5	0
+6	-60.5	0
+7	-60.5	0
+8	-60.5	0
+9	-60.5	0
+10	-60.5	0
+11	-60.5	0
+12	-60.5	0
+13	-60.5	0
+14	-60.5	0
+15	-60.5	0
+16	-60.5	0
+17	-60.5	0
+18	-60.5	0
+19	-60.5	0
+20	-60.5	0
+21	-60.5	0
+22	-60.5	0
+23	-60.5	0
+24	-60.5	0
+25	-60.5	0
+26	-60.5	0
+27	-60.5	0
+28	-60.5	0
+29	-60.5	0
+30	-60.5	0
+31	-60.5	0
+32	-60.5	0
+33	-60.5	0
+34	-60.5	0
+35	-60.5	0
+36	-60.5	0
+37	-60.5	0
+38	-60.5	0
+39	-60.5	0
+40	-60.5	0
+41	-60.5	0
+42	-60.5	0
+43	-60.5	0
+44	-60.5	0
+45	-60.5	0
+46	-60.5	0
+47	-60.5	0
+48	-60.5	0
+49	-60.5	0
+50	-60.5	0
+51	-60.5	0
+52	-60.5	0
+53	-60.5	0
+54	-60.5	0
+55	-60.5	0
+56	-60.5	0
+57	-60.5	0
+58	-60.5	0
+59	-60.5	0
+60	-60.5	0
+61	-60.5	0
+62	-60.5	0
+63	-60.5	0
+64	-60.5	0
+65	-60.5	0
+66	-60.5	0
+67	-60.5	0
+68	-60.5	0
+69	-60.5	0
+70	-60.5	0
+71	-60.5	0
+72	-60.5	0
+73	-60.5	0
+74	-60.5	0
+75	-60.5	0
+76	-60.5	0
+77	-60.5	0
+78	-60.5	0
+79	-60.5	0
+80	-60.5	0
+81	-60.5	0
+82	-60.5	0
+83	-60.5	0
+84	-60.5	0
+85	-60.5	0
+86	-60.5	0
+87	-60.5	0
+88	-60.5	0
+89	-60.5	0
+90	-60.5	0
+91	-60.5	0
+92	-60.5	0
+93	-60.5	0
+94	-60.5	0
+95	-60.5	0
+96	-60.5	0
+97	-60.5	0
+98	-60.5	0
+99	-60.5	0
+100	-60.5	0
+101	-60.5	0
+102	-60.5	0
+103	-60.5	0
+104	-60.5	0
+105	-60.5	0
+106	-60.5	0
+107	-60.5	0
+108	-60.5	0
+109	-60.5	0
+110	-60.5	0
+111	-60.5	0
+112	-60.5	0
+113	-60.5	0
+114	-60.5	0
+115	-60.5	0
+116	-60.5	0
+117	-60.5	0
+118	-60.5	0
+119	-60.5	0
+120	-60.5	0
+121	-60.5	0
+122	-60.5	0
+123	-60.5	0
+124	-60.5	0
+125	-60.5	0
+126	-60.5	0
+127	-60.5	0
+128	-60.5	0
+129	-60.5	0
+130	-60.5	0
+131	-60.5	0
+132	-60.5	0
+133	-60.5	0
+134	-60.5	0
+135	-60.5	0
+136	-60.5	0
+137	-60.5	0
+138	-60.5	0
+139	-60.5	0
+140	-60.5	0
+141	-60.5	0
+142	-60.5	0
+143	-60.5	0
+144	-60.5	0
+145	-60.5	0
+146	-60.5	0
+147	-60.5	0
+148	-60.5	0
+149	-60.5	0
+150	-60.5	0
+151	-60.5	0
+152	-60.5	0
+153	-60.5	0
+154	-60.5	0
+155	-60.5	0
+156	-60.5	0
+157	-60.5	0
+158	-60.5	0
+159	-60.5	0
+160	-60.5	0
+161	-60.5	0
+162	-60.5	0
+163	-60.5	0
+164	-60.5	0
+165	-60.5	0
+166	-60.5	0
+167	-60.5	0
+168	-60.5	0
+169	-60.5	0
+170	-60.5	0
+171	-60.5	0
+172	-60.5	0
+173	-60.5	0
+174	-60.5	0
+175	-60.5	0
+176	-60.5	0
+177	-60.5	0
+178	-60.5	0
+179	-60.5	0
+180	-60.5	0
+181	-60.5	0
+182	-60.5	0
+183	-60.5	0
+184	-60.5	0
+185	-60.5	0
+186	-60.5	0
+187	-60.5	0
+188	-60.5	0
+189	-60.5	0
+190	-60.5	0
+191	-60.5	0
+192	-60.5	0
+193	-60.5	0
+194	-60.5	0
+195	-60.5	0
+196	-60.5	0
+197	-60.5	0
+198	-60.5	0
+199	-60.5	0
+200	-60.5	0
+201	-60.5	0
+202	-60.5	0
+203	-60.5	0
+204	-60.5	0
+205	-60.5	0
+206	-60.5	0
+207	-60.5	0
+208	-60.5	0
+209	-60.5	0
+210	-60.5	0
+211	-60.5	0
+212	-60.5	0
+213	-60.5	0
+214	-60.5	0
+215	-60.5	0
+216	-60.5	0
+217	-60.5	0
+218	-60.5	0
+219	-60.5	0
+220	-60.5	0
+221	-60.5	0
+222	-60.5	0
+223	-60.5	0
+224	-60.5	0
+225	-60.5	0
+226	-60.5	0
+227	-60.5	0
+228	-60.5	0
+229	-60.5	0
+230	-60.5	0
+231	-60.5	0
+232	-60.5	0
+233	-60.5	0
+234	-60.5	0
+235	-60.5	0
+236	-60.5	0
+237	-60.5	0
+238	-60.5	0
+239	-60.5	0
+240	-60.5	0
+241	-60.5	0
+242	-60.5	0
+243	-60.5	0
+244	-60.5	0
+245	-60.5	0
+246	-60.5	0
+247	-60.5	0
+248	-60.5	0
+249	-60.5	0
+250	-60.5	0
+251	-60.5	0
+252	-60.5	0
+253	-60.5	0
+254	-60.5	0
+255	-60.5	0
+256	-60.5	0
+257	-60.5	0
+258	-60.5	0
+259	-60.5	0
+260	-60.5	0
+261	-60.5	0
+262	-60.5	0
+263	-60.5	0
+264	-60.5	0
+265	-60.5	0
+266	-60.5	0
+267	-60.5	0
+268	-60.5	0
+269	-60.5	0
+270	-60.5	0
+271	-60.5	0
+272	-60.5	0
+273	-60.5	0
+274	-60.5	0
+275	-60.5	0
+276	-60.5	0
+277	-60.5	0
+278	-60.5	0
+279	-60.5	0
+280	-60.5	0
+281	-60.5	0
+282	-60.5	0
+283	-60.5	0
+284	-60.5	0
+285	-60.5	0
+286	-60.5	0
+287	-60.5	0
+288	-60.5	0
+289	-60.5	0
+290	-60.5	0
+291	-60.5	0
+292	-60.5	0
+293	-60.5	0
+294	-60.5	0
+295	-60.5	0
+296	-60.5	0
+297	-60.5	0
+298	-60.5	0
+299	-60.5	0
+300	-60.5	0
+301	-60.5	0
+302	-60.5	0
+303	-60.5	0
+304	-60.5	0
+305	-60.5	0
+306	-60.5	0
+307	-60.5	0
+308	-60.5	0
+309	-60.5	0
+310	-60.5	0
+311	-60.5	0
+312	-60.5	0
+313	-60.5	0
+314	-60.5	0
+315	-60.5	0
+316	-60.5	0
+317	-60.5	0
+318	-60.5	0
+319	-60.5	0
+320	-60.5	0
+321	-60.5	0
+322	-60.5	0
+323	-60.5	0
+324	-60.5	0
+325	-60.5	0
+326	-60.5	0
+327	-60.5	0
+328	-60.5	0
+329	-60.5	0
+330	-60.5	0
+331	-60.5	0
+332	-60.5	0
+333	-60.5	0
+334	-60.5	0
+335	-60.5	0
+336	-60.5	0
+337	-60.5	0
+338	-60.5	0
+339	-60.5	0
+340	-60.5	0
+341	-60.5	0
+342	-60.5	0
+343	-60.5	0
+344	-60.5	0
+345	-60.5	0
+346	-60.5	0
+347	-60.5	0
+348	-60.5	0
+349	-60.5	0
+350	-60.5	0
+351	-60.5	0
+352	-60.5	0
+353	-60.5	0
+354	-60.5	0
+355	-60.5	0
+356	-60.5	0
+357	-60.5	0
+358	-60.5	0
+359	-60.5	0
+360	-60.5	0
+0	-60	0
+1	-60	0
+2	-60	0
+3	-60	0
+4	-60	0
+5	-60	0
+6	-60	0
+7	-60	0
+8	-60	0
+9	-60	0
+10	-60	0
+11	-60	0
+12	-60	0
+13	-60	0
+14	-60	0
+15	-60	0
+16	-60	0
+17	-60	0
+18	-60	0
+19	-60	0
+20	-60	0
+21	-60	0
+22	-60	0
+23	-60	0
+24	-60	0
+25	-60	0
+26	-60	0
+27	-60	0
+28	-60	0
+29	-60	0
+30	-60	0
+31	-60	0
+32	-60	0
+33	-60	0
+34	-60	0
+35	-60	0
+36	-60	0
+37	-60	0
+38	-60	0
+39	-60	0
+40	-60	0
+41	-60	0
+42	-60	0
+43	-60	0
+44	-60	0
+45	-60	0
+46	-60	0
+47	-60	0
+48	-60	0
+49	-60	0
+50	-60	0
+51	-60	0
+52	-60	0
+53	-60	0
+54	-60	0
+55	-60	0
+56	-60	0
+57	-60	0
+58	-60	0
+59	-60	0
+60	-60	0
+61	-60	0
+62	-60	0
+63	-60	0
+64	-60	0
+65	-60	0
+66	-60	0
+67	-60	0
+68	-60	0
+69	-60	0
+70	-60	0
+71	-60	0
+72	-60	0
+73	-60	0
+74	-60	0
+75	-60	0
+76	-60	0
+77	-60	0
+78	-60	0
+79	-60	0
+80	-60	0
+81	-60	0
+82	-60	0
+83	-60	0
+84	-60	0
+85	-60	0
+86	-60	0
+87	-60	0
+88	-60	0
+89	-60	0
+90	-60	0
+91	-60	0
+92	-60	0
+93	-60	0
+94	-60	0
+95	-60	0
+96	-60	0
+97	-60	0
+98	-60	0
+99	-60	0
+100	-60	0
+101	-60	0
+102	-60	0
+103	-60	0
+104	-60	0
+105	-60	0
+106	-60	0
+107	-60	0
+108	-60	0
+109	-60	0
+110	-60	0
+111	-60	0
+112	-60	0
+113	-60	0
+114	-60	0
+115	-60	0
+116	-60	0
+117	-60	0
+118	-60	0
+119	-60	0
+120	-60	0
+121	-60	0
+122	-60	0
+123	-60	0
+124	-60	0
+125	-60	0
+126	-60	0
+127	-60	0
+128	-60	0
+129	-60	0
+130	-60	0
+131	-60	0
+132	-60	0
+133	-60	0
+134	-60	0
+135	-60	0
+136	-60	0
+137	-60	0
+138	-60	0
+139	-60	0
+140	-60	0
+141	-60	0
+142	-60	0
+143	-60	0
+144	-60	0
+145	-60	0
+146	-60	0
+147	-60	0
+148	-60	0
+149	-60	0
+150	-60	0
+151	-60	0
+152	-60	0
+153	-60	0
+154	-60	0
+155	-60	0
+156	-60	0
+157	-60	0
+158	-60	0
+159	-60	0
+160	-60	0
+161	-60	0
+162	-60	0
+163	-60	0
+164	-60	0
+165	-60	0
+166	-60	0
+167	-60	0
+168	-60	0
+169	-60	0
+170	-60	0
+171	-60	0
+172	-60	0
+173	-60	0
+174	-60	0
+175	-60	0
+176	-60	0
+177	-60	0
+178	-60	0
+179	-60	0
+180	-60	0
+181	-60	0
+182	-60	0
+183	-60	0
+184	-60	0
+185	-60	0
+186	-60	0
+187	-60	0
+188	-60	0
+189	-60	0
+190	-60	0
+191	-60	0
+192	-60	0
+193	-60	0
+194	-60	0
+195	-60	0
+196	-60	0
+197	-60	0
+198	-60	0
+199	-60	0
+200	-60	0
+201	-60	0
+202	-60	0
+203	-60	0
+204	-60	0
+205	-60	0
+206	-60	0
+207	-60	0
+208	-60	0
+209	-60	0
+210	-60	0
+211	-60	0
+212	-60	0
+213	-60	0
+214	-60	0
+215	-60	0
+216	-60	0
+217	-60	0
+218	-60	0
+219	-60	0
+220	-60	0
+221	-60	0
+222	-60	0
+223	-60	0
+224	-60	0
+225	-60	0
+226	-60	0
+227	-60	0
+228	-60	0
+229	-60	0
+230	-60	0
+231	-60	0
+232	-60	0
+233	-60	0
+234	-60	0
+235	-60	0
+236	-60	0
+237	-60	0
+238	-60	0
+239	-60	0
+240	-60	0
+241	-60	0
+242	-60	0
+243	-60	0
+244	-60	0
+245	-60	0
+246	-60	0
+247	-60	0
+248	-60	0
+249	-60	0
+250	-60	0
+251	-60	0
+252	-60	0
+253	-60	0
+254	-60	0
+255	-60	0
+256	-60	0
+257	-60	0
+258	-60	0
+259	-60	0
+260	-60	0
+261	-60	0
+262	-60	0
+263	-60	0
+264	-60	0
+265	-60	0
+266	-60	0
+267	-60	0
+268	-60	0
+269	-60	0
+270	-60	0
+271	-60	0
+272	-60	0
+273	-60	0
+274	-60	0
+275	-60	0
+276	-60	0
+277	-60	0
+278	-60	0
+279	-60	0
+280	-60	0
+281	-60	0
+282	-60	0
+283	-60	0
+284	-60	0
+285	-60	0
+286	-60	0
+287	-60	0
+288	-60	0
+289	-60	0
+290	-60	0
+291	-60	0
+292	-60	0
+293	-60	0
+294	-60	0
+295	-60	0
+296	-60	0
+297	-60	0
+298	-60	0
+299	-60	0
+300	-60	0
+301	-60	0
+302	-60	0
+303	-60	0
+304	-60	0
+305	-60	0
+306	-60	0
+307	-60	0
+308	-60	0
+309	-60	0
+310	-60	0
+311	-60	0
+312	-60	0
+313	-60	0
+314	-60	0
+315	-60	0
+316	-60	0
+317	-60	0
+318	-60	0
+319	-60	0
+320	-60	0
+321	-60	0
+322	-60	0
+323	-60	0
+324	-60	0
+325	-60	0
+326	-60	0
+327	-60	0
+328	-60	0
+329	-60	0
+330	-60	0
+331	-60	0
+332	-60	0
+333	-60	0
+334	-60	0
+335	-60	0
+336	-60	0
+337	-60	0
+338	-60	0
+339	-60	0
+340	-60	0
+341	-60	0
+342	-60	0
+343	-60	0
+344	-60	0
+345	-60	0
+346	-60	0
+347	-60	0
+348	-60	0
+349	-60	0
+350	-60	0
+351	-60	0
+352	-60	0
+353	-60	0
+354	-60	0
+355	-60	0
+356	-60	0
+357	-60	0
+358	-60	0
+359	-60	0
+360	-60	0
+0	-59.5	0
+1	-59.5	0
+2	-59.5	0
+3	-59.5	0
+4	-59.5	0
+5	-59.5	0
+6	-59.5	0
+7	-59.5	0
+8	-59.5	0
+9	-59.5	0
+10	-59.5	0
+11	-59.5	0
+12	-59.5	0
+13	-59.5	0
+14	-59.5	0
+15	-59.5	0
+16	-59.5	0
+17	-59.5	0
+18	-59.5	0
+19	-59.5	0
+20	-59.5	0
+21	-59.5	0
+22	-59.5	0
+23	-59.5	0
+24	-59.5	0
+25	-59.5	0
+26	-59.5	0
+27	-59.5	0
+28	-59.5	0
+29	-59.5	0
+30	-59.5	0
+31	-59.5	0
+32	-59.5	0
+33	-59.5	0
+34	-59.5	0
+35	-59.5	0
+36	-59.5	0
+37	-59.5	0
+38	-59.5	0
+39	-59.5	0
+40	-59.5	0
+41	-59.5	0
+42	-59.5	0
+43	-59.5	0
+44	-59.5	0
+45	-59.5	0
+46	-59.5	0
+47	-59.5	0
+48	-59.5	0
+49	-59.5	0
+50	-59.5	0
+51	-59.5	0
+52	-59.5	0
+53	-59.5	0
+54	-59.5	0
+55	-59.5	0
+56	-59.5	0
+57	-59.5	0
+58	-59.5	0
+59	-59.5	0
+60	-59.5	0
+61	-59.5	0
+62	-59.5	0
+63	-59.5	0
+64	-59.5	0
+65	-59.5	0
+66	-59.5	0
+67	-59.5	0
+68	-59.5	0
+69	-59.5	0
+70	-59.5	0
+71	-59.5	0
+72	-59.5	0
+73	-59.5	0
+74	-59.5	0
+75	-59.5	0
+76	-59.5	0
+77	-59.5	0
+78	-59.5	0
+79	-59.5	0
+80	-59.5	0
+81	-59.5	0
+82	-59.5	0
+83	-59.5	0
+84	-59.5	0
+85	-59.5	0
+86	-59.5	0
+87	-59.5	0
+88	-59.5	0
+89	-59.5	0
+90	-59.5	0
+91	-59.5	0
+92	-59.5	0
+93	-59.5	0
+94	-59.5	0
+95	-59.5	0
+96	-59.5	0
+97	-59.5	0
+98	-59.5	0
+99	-59.5	0
+100	-59.5	0
+101	-59.5	0
+102	-59.5	0
+103	-59.5	0
+104	-59.5	0
+105	-59.5	0
+106	-59.5	0
+107	-59.5	0
+108	-59.5	0
+109	-59.5	0
+110	-59.5	0
+111	-59.5	0
+112	-59.5	0
+113	-59.5	0
+114	-59.5	0
+115	-59.5	0
+116	-59.5	0
+117	-59.5	0
+118	-59.5	0
+119	-59.5	0
+120	-59.5	0
+121	-59.5	0
+122	-59.5	0
+123	-59.5	0
+124	-59.5	0
+125	-59.5	0
+126	-59.5	0
+127	-59.5	0
+128	-59.5	0
+129	-59.5	0
+130	-59.5	0
+131	-59.5	0
+132	-59.5	0
+133	-59.5	0
+134	-59.5	0
+135	-59.5	0
+136	-59.5	0
+137	-59.5	0
+138	-59.5	0
+139	-59.5	0
+140	-59.5	0
+141	-59.5	0
+142	-59.5	0
+143	-59.5	0
+144	-59.5	0
+145	-59.5	0
+146	-59.5	0
+147	-59.5	0
+148	-59.5	0
+149	-59.5	0
+150	-59.5	0
+151	-59.5	0
+152	-59.5	0
+153	-59.5	0
+154	-59.5	0
+155	-59.5	0
+156	-59.5	0
+157	-59.5	0
+158	-59.5	0
+159	-59.5	0
+160	-59.5	0
+161	-59.5	0
+162	-59.5	0
+163	-59.5	0
+164	-59.5	0
+165	-59.5	0
+166	-59.5	0
+167	-59.5	0
+168	-59.5	0
+169	-59.5	0
+170	-59.5	0
+171	-59.5	0
+172	-59.5	0
+173	-59.5	0
+174	-59.5	0
+175	-59.5	0
+176	-59.5	0
+177	-59.5	0
+178	-59.5	0
+179	-59.5	0
+180	-59.5	0
+181	-59.5	0
+182	-59.5	0
+183	-59.5	0
+184	-59.5	0
+185	-59.5	0
+186	-59.5	0
+187	-59.5	0
+188	-59.5	0
+189	-59.5	0
+190	-59.5	0
+191	-59.5	0
+192	-59.5	0
+193	-59.5	0
+194	-59.5	0
+195	-59.5	0
+196	-59.5	0
+197	-59.5	0
+198	-59.5	0
+199	-59.5	0
+200	-59.5	0
+201	-59.5	0
+202	-59.5	0
+203	-59.5	0
+204	-59.5	0
+205	-59.5	0
+206	-59.5	0
+207	-59.5	0
+208	-59.5	0
+209	-59.5	0
+210	-59.5	0
+211	-59.5	0
+212	-59.5	0
+213	-59.5	0
+214	-59.5	0
+215	-59.5	0
+216	-59.5	0
+217	-59.5	0
+218	-59.5	0
+219	-59.5	0
+220	-59.5	0
+221	-59.5	0
+222	-59.5	0
+223	-59.5	0
+224	-59.5	0
+225	-59.5	0
+226	-59.5	0
+227	-59.5	0
+228	-59.5	0
+229	-59.5	0
+230	-59.5	0
+231	-59.5	0
+232	-59.5	0
+233	-59.5	0
+234	-59.5	0
+235	-59.5	0
+236	-59.5	0
+237	-59.5	0
+238	-59.5	0
+239	-59.5	0
+240	-59.5	0
+241	-59.5	0
+242	-59.5	0
+243	-59.5	0
+244	-59.5	0
+245	-59.5	0
+246	-59.5	0
+247	-59.5	0
+248	-59.5	0
+249	-59.5	0
+250	-59.5	0
+251	-59.5	0
+252	-59.5	0
+253	-59.5	0
+254	-59.5	0
+255	-59.5	0
+256	-59.5	0
+257	-59.5	0
+258	-59.5	0
+259	-59.5	0
+260	-59.5	0
+261	-59.5	0
+262	-59.5	0
+263	-59.5	0
+264	-59.5	0
+265	-59.5	0
+266	-59.5	0
+267	-59.5	0
+268	-59.5	0
+269	-59.5	0
+270	-59.5	0
+271	-59.5	0
+272	-59.5	0
+273	-59.5	0
+274	-59.5	0
+275	-59.5	0
+276	-59.5	0
+277	-59.5	0
+278	-59.5	0
+279	-59.5	0
+280	-59.5	0
+281	-59.5	0
+282	-59.5	0
+283	-59.5	0
+284	-59.5	0
+285	-59.5	0
+286	-59.5	0
+287	-59.5	0
+288	-59.5	0
+289	-59.5	0
+290	-59.5	0
+291	-59.5	0
+292	-59.5	0
+293	-59.5	0
+294	-59.5	0
+295	-59.5	0
+296	-59.5	0
+297	-59.5	0
+298	-59.5	0
+299	-59.5	0
+300	-59.5	0
+301	-59.5	0
+302	-59.5	0
+303	-59.5	0
+304	-59.5	0
+305	-59.5	0
+306	-59.5	0
+307	-59.5	0
+308	-59.5	0
+309	-59.5	0
+310	-59.5	0
+311	-59.5	0
+312	-59.5	0
+313	-59.5	0
+314	-59.5	0
+315	-59.5	0
+316	-59.5	0
+317	-59.5	0
+318	-59.5	0
+319	-59.5	0
+320	-59.5	0
+321	-59.5	0
+322	-59.5	0
+323	-59.5	0
+324	-59.5	0
+325	-59.5	0
+326	-59.5	0
+327	-59.5	0
+328	-59.5	0
+329	-59.5	0
+330	-59.5	0
+331	-59.5	0
+332	-59.5	0
+333	-59.5	0
+334	-59.5	0
+335	-59.5	0
+336	-59.5	0
+337	-59.5	0
+338	-59.5	0
+339	-59.5	0
+340	-59.5	0
+341	-59.5	0
+342	-59.5	0
+343	-59.5	0
+344	-59.5	0
+345	-59.5	0
+346	-59.5	0
+347	-59.5	0
+348	-59.5	0
+349	-59.5	0
+350	-59.5	0
+351	-59.5	0
+352	-59.5	0
+353	-59.5	0
+354	-59.5	0
+355	-59.5	0
+356	-59.5	0
+357	-59.5	0
+358	-59.5	0
+359	-59.5	0
+360	-59.5	0
+0	-59	0
+1	-59	0
+2	-59	0
+3	-59	0
+4	-59	0
+5	-59	0
+6	-59	0
+7	-59	0
+8	-59	0
+9	-59	0
+10	-59	0
+11	-59	0
+12	-59	0
+13	-59	0
+14	-59	0
+15	-59	0
+16	-59	0
+17	-59	0
+18	-59	0
+19	-59	0
+20	-59	0
+21	-59	0
+22	-59	0
+23	-59	0
+24	-59	0
+25	-59	0
+26	-59	0
+27	-59	0
+28	-59	0
+29	-59	0
+30	-59	0
+31	-59	0
+32	-59	0
+33	-59	0
+34	-59	0
+35	-59	0
+36	-59	0
+37	-59	0
+38	-59	0
+39	-59	0
+40	-59	0
+41	-59	0
+42	-59	0
+43	-59	0
+44	-59	0
+45	-59	0
+46	-59	0
+47	-59	0
+48	-59	0
+49	-59	0
+50	-59	0
+51	-59	0
+52	-59	0
+53	-59	0
+54	-59	0
+55	-59	0
+56	-59	0
+57	-59	0
+58	-59	0
+59	-59	0
+60	-59	0
+61	-59	0
+62	-59	0
+63	-59	0
+64	-59	0
+65	-59	0
+66	-59	0
+67	-59	0
+68	-59	0
+69	-59	0
+70	-59	0
+71	-59	0
+72	-59	0
+73	-59	0
+74	-59	0
+75	-59	0
+76	-59	0
+77	-59	0
+78	-59	0
+79	-59	0
+80	-59	0
+81	-59	0
+82	-59	0
+83	-59	0
+84	-59	0
+85	-59	0
+86	-59	0
+87	-59	0
+88	-59	0
+89	-59	0
+90	-59	0
+91	-59	0
+92	-59	0
+93	-59	0
+94	-59	0
+95	-59	0
+96	-59	0
+97	-59	0
+98	-59	0
+99	-59	0
+100	-59	0
+101	-59	0
+102	-59	0
+103	-59	0
+104	-59	0
+105	-59	0
+106	-59	0
+107	-59	0
+108	-59	0
+109	-59	0
+110	-59	0
+111	-59	0
+112	-59	0
+113	-59	0
+114	-59	0
+115	-59	0
+116	-59	0
+117	-59	0
+118	-59	0
+119	-59	0
+120	-59	0
+121	-59	0
+122	-59	0
+123	-59	0
+124	-59	0
+125	-59	0
+126	-59	0
+127	-59	0
+128	-59	0
+129	-59	0
+130	-59	0
+131	-59	0
+132	-59	0
+133	-59	0
+134	-59	0
+135	-59	0
+136	-59	0
+137	-59	0
+138	-59	0
+139	-59	0
+140	-59	0
+141	-59	0
+142	-59	0
+143	-59	0
+144	-59	0
+145	-59	0
+146	-59	0
+147	-59	0
+148	-59	0
+149	-59	0
+150	-59	0
+151	-59	0
+152	-59	0
+153	-59	0
+154	-59	0
+155	-59	0
+156	-59	0
+157	-59	0
+158	-59	0
+159	-59	0
+160	-59	0
+161	-59	0
+162	-59	0
+163	-59	0
+164	-59	0
+165	-59	0
+166	-59	0
+167	-59	0
+168	-59	0
+169	-59	0
+170	-59	0
+171	-59	0
+172	-59	0
+173	-59	0
+174	-59	0
+175	-59	0
+176	-59	0
+177	-59	0
+178	-59	0
+179	-59	0
+180	-59	0
+181	-59	0
+182	-59	0
+183	-59	0
+184	-59	0
+185	-59	0
+186	-59	0
+187	-59	0
+188	-59	0
+189	-59	0
+190	-59	0
+191	-59	0
+192	-59	0
+193	-59	0
+194	-59	0
+195	-59	0
+196	-59	0
+197	-59	0
+198	-59	0
+199	-59	0
+200	-59	0
+201	-59	0
+202	-59	0
+203	-59	0
+204	-59	0
+205	-59	0
+206	-59	0
+207	-59	0
+208	-59	0
+209	-59	0
+210	-59	0
+211	-59	0
+212	-59	0
+213	-59	0
+214	-59	0
+215	-59	0
+216	-59	0
+217	-59	0
+218	-59	0
+219	-59	0
+220	-59	0
+221	-59	0
+222	-59	0
+223	-59	0
+224	-59	0
+225	-59	0
+226	-59	0
+227	-59	0
+228	-59	0
+229	-59	0
+230	-59	0
+231	-59	0
+232	-59	0
+233	-59	0
+234	-59	0
+235	-59	0
+236	-59	0
+237	-59	0
+238	-59	0
+239	-59	0
+240	-59	0
+241	-59	0
+242	-59	0
+243	-59	0
+244	-59	0
+245	-59	0
+246	-59	0
+247	-59	0
+248	-59	0
+249	-59	0
+250	-59	0
+251	-59	0
+252	-59	0
+253	-59	0
+254	-59	0
+255	-59	0
+256	-59	0
+257	-59	0
+258	-59	0
+259	-59	0
+260	-59	0
+261	-59	0
+262	-59	0
+263	-59	0
+264	-59	0
+265	-59	0
+266	-59	0
+267	-59	0
+268	-59	0
+269	-59	0
+270	-59	0
+271	-59	0
+272	-59	0
+273	-59	0
+274	-59	0
+275	-59	0
+276	-59	0
+277	-59	0
+278	-59	0
+279	-59	0
+280	-59	0
+281	-59	0
+282	-59	0
+283	-59	0
+284	-59	0
+285	-59	0
+286	-59	0
+287	-59	0
+288	-59	0
+289	-59	0
+290	-59	0
+291	-59	0
+292	-59	0
+293	-59	0
+294	-59	0
+295	-59	0
+296	-59	0
+297	-59	0
+298	-59	0
+299	-59	0
+300	-59	0
+301	-59	0
+302	-59	0
+303	-59	0
+304	-59	0
+305	-59	0
+306	-59	0
+307	-59	0
+308	-59	0
+309	-59	0
+310	-59	0
+311	-59	0
+312	-59	0
+313	-59	0
+314	-59	0
+315	-59	0
+316	-59	0
+317	-59	0
+318	-59	0
+319	-59	0
+320	-59	0
+321	-59	0
+322	-59	0
+323	-59	0
+324	-59	0
+325	-59	0
+326	-59	0
+327	-59	0
+328	-59	0
+329	-59	0
+330	-59	0
+331	-59	0
+332	-59	0
+333	-59	0
+334	-59	0
+335	-59	0
+336	-59	0
+337	-59	0
+338	-59	0
+339	-59	0
+340	-59	0
+341	-59	0
+342	-59	0
+343	-59	0
+344	-59	0
+345	-59	0
+346	-59	0
+347	-59	0
+348	-59	0
+349	-59	0
+350	-59	0
+351	-59	0
+352	-59	0
+353	-59	0
+354	-59	0
+355	-59	0
+356	-59	0
+357	-59	0
+358	-59	0
+359	-59	0
+360	-59	0
+0	-58.5	0
+1	-58.5	0
+2	-58.5	0
+3	-58.5	0
+4	-58.5	0
+5	-58.5	0
+6	-58.5	0
+7	-58.5	0
+8	-58.5	0
+9	-58.5	0
+10	-58.5	0
+11	-58.5	0
+12	-58.5	0
+13	-58.5	0
+14	-58.5	0
+15	-58.5	0
+16	-58.5	0
+17	-58.5	0
+18	-58.5	0
+19	-58.5	0
+20	-58.5	0
+21	-58.5	0
+22	-58.5	0
+23	-58.5	0
+24	-58.5	0
+25	-58.5	0
+26	-58.5	0
+27	-58.5	0
+28	-58.5	0
+29	-58.5	0
+30	-58.5	0
+31	-58.5	0
+32	-58.5	0
+33	-58.5	0
+34	-58.5	0
+35	-58.5	0
+36	-58.5	0
+37	-58.5	0
+38	-58.5	0
+39	-58.5	0
+40	-58.5	0
+41	-58.5	0
+42	-58.5	0
+43	-58.5	0
+44	-58.5	0
+45	-58.5	0
+46	-58.5	0
+47	-58.5	0
+48	-58.5	0
+49	-58.5	0
+50	-58.5	0
+51	-58.5	0
+52	-58.5	0
+53	-58.5	0
+54	-58.5	0
+55	-58.5	0
+56	-58.5	0
+57	-58.5	0
+58	-58.5	0
+59	-58.5	0
+60	-58.5	0
+61	-58.5	0
+62	-58.5	0
+63	-58.5	0
+64	-58.5	0
+65	-58.5	0
+66	-58.5	0
+67	-58.5	0
+68	-58.5	0
+69	-58.5	0
+70	-58.5	0
+71	-58.5	0
+72	-58.5	0
+73	-58.5	0
+74	-58.5	0
+75	-58.5	0
+76	-58.5	0
+77	-58.5	0
+78	-58.5	0
+79	-58.5	0
+80	-58.5	0
+81	-58.5	0
+82	-58.5	0
+83	-58.5	0
+84	-58.5	0
+85	-58.5	0
+86	-58.5	0
+87	-58.5	0
+88	-58.5	0
+89	-58.5	0
+90	-58.5	0
+91	-58.5	0
+92	-58.5	0
+93	-58.5	0
+94	-58.5	0
+95	-58.5	0
+96	-58.5	0
+97	-58.5	0
+98	-58.5	0
+99	-58.5	0
+100	-58.5	0
+101	-58.5	0
+102	-58.5	0
+103	-58.5	0
+104	-58.5	0
+105	-58.5	0
+106	-58.5	0
+107	-58.5	0
+108	-58.5	0
+109	-58.5	0
+110	-58.5	0
+111	-58.5	0
+112	-58.5	0
+113	-58.5	0
+114	-58.5	0
+115	-58.5	0
+116	-58.5	0
+117	-58.5	0
+118	-58.5	0
+119	-58.5	0
+120	-58.5	0
+121	-58.5	0
+122	-58.5	0
+123	-58.5	0
+124	-58.5	0
+125	-58.5	0
+126	-58.5	0
+127	-58.5	0
+128	-58.5	0
+129	-58.5	0
+130	-58.5	0
+131	-58.5	0
+132	-58.5	0
+133	-58.5	0
+134	-58.5	0
+135	-58.5	0
+136	-58.5	0
+137	-58.5	0
+138	-58.5	0
+139	-58.5	0
+140	-58.5	0
+141	-58.5	0
+142	-58.5	0
+143	-58.5	0
+144	-58.5	0
+145	-58.5	0
+146	-58.5	0
+147	-58.5	0
+148	-58.5	0
+149	-58.5	0
+150	-58.5	0
+151	-58.5	0
+152	-58.5	0
+153	-58.5	0
+154	-58.5	0
+155	-58.5	0
+156	-58.5	0
+157	-58.5	0
+158	-58.5	0
+159	-58.5	0
+160	-58.5	0
+161	-58.5	0
+162	-58.5	0
+163	-58.5	0
+164	-58.5	0
+165	-58.5	0
+166	-58.5	0
+167	-58.5	0
+168	-58.5	0
+169	-58.5	0
+170	-58.5	0
+171	-58.5	0
+172	-58.5	0
+173	-58.5	0
+174	-58.5	0
+175	-58.5	0
+176	-58.5	0
+177	-58.5	0
+178	-58.5	0
+179	-58.5	0
+180	-58.5	0
+181	-58.5	0
+182	-58.5	0
+183	-58.5	0
+184	-58.5	0
+185	-58.5	0
+186	-58.5	0
+187	-58.5	0
+188	-58.5	0
+189	-58.5	0
+190	-58.5	0
+191	-58.5	0
+192	-58.5	0
+193	-58.5	0
+194	-58.5	0
+195	-58.5	0
+196	-58.5	0
+197	-58.5	0
+198	-58.5	0
+199	-58.5	0
+200	-58.5	0
+201	-58.5	0
+202	-58.5	0
+203	-58.5	0
+204	-58.5	0
+205	-58.5	0
+206	-58.5	0
+207	-58.5	0
+208	-58.5	0
+209	-58.5	0
+210	-58.5	0
+211	-58.5	0
+212	-58.5	0
+213	-58.5	0
+214	-58.5	0
+215	-58.5	0
+216	-58.5	0
+217	-58.5	0
+218	-58.5	0
+219	-58.5	0
+220	-58.5	0
+221	-58.5	0
+222	-58.5	0
+223	-58.5	0
+224	-58.5	0
+225	-58.5	0
+226	-58.5	0
+227	-58.5	0
+228	-58.5	0
+229	-58.5	0
+230	-58.5	0
+231	-58.5	0
+232	-58.5	0
+233	-58.5	0
+234	-58.5	0
+235	-58.5	0
+236	-58.5	0
+237	-58.5	0
+238	-58.5	0
+239	-58.5	0
+240	-58.5	0
+241	-58.5	0
+242	-58.5	0
+243	-58.5	0
+244	-58.5	0
+245	-58.5	0
+246	-58.5	0
+247	-58.5	0
+248	-58.5	0
+249	-58.5	0
+250	-58.5	0
+251	-58.5	0
+252	-58.5	0
+253	-58.5	0
+254	-58.5	0
+255	-58.5	0
+256	-58.5	0
+257	-58.5	0
+258	-58.5	0
+259	-58.5	0
+260	-58.5	0
+261	-58.5	0
+262	-58.5	0
+263	-58.5	0
+264	-58.5	0
+265	-58.5	0
+266	-58.5	0
+267	-58.5	0
+268	-58.5	0
+269	-58.5	0
+270	-58.5	0
+271	-58.5	0
+272	-58.5	0
+273	-58.5	0
+274	-58.5	0
+275	-58.5	0
+276	-58.5	0
+277	-58.5	0
+278	-58.5	0
+279	-58.5	0
+280	-58.5	0
+281	-58.5	0
+282	-58.5	0
+283	-58.5	0
+284	-58.5	0
+285	-58.5	0
+286	-58.5	0
+287	-58.5	0
+288	-58.5	0
+289	-58.5	0
+290	-58.5	0
+291	-58.5	0
+292	-58.5	0
+293	-58.5	0
+294	-58.5	0
+295	-58.5	0
+296	-58.5	0
+297	-58.5	0
+298	-58.5	0
+299	-58.5	0
+300	-58.5	0
+301	-58.5	0
+302	-58.5	0
+303	-58.5	0
+304	-58.5	0
+305	-58.5	0
+306	-58.5	0
+307	-58.5	0
+308	-58.5	0
+309	-58.5	0
+310	-58.5	0
+311	-58.5	0
+312	-58.5	0
+313	-58.5	0
+314	-58.5	0
+315	-58.5	0
+316	-58.5	0
+317	-58.5	0
+318	-58.5	0
+319	-58.5	0
+320	-58.5	0
+321	-58.5	0
+322	-58.5	0
+323	-58.5	0
+324	-58.5	0
+325	-58.5	0
+326	-58.5	0
+327	-58.5	0
+328	-58.5	0
+329	-58.5	0
+330	-58.5	0
+331	-58.5	0
+332	-58.5	0
+333	-58.5	0
+334	-58.5	0
+335	-58.5	0
+336	-58.5	0
+337	-58.5	0
+338	-58.5	0
+339	-58.5	0
+340	-58.5	0
+341	-58.5	0
+342	-58.5	0
+343	-58.5	0
+344	-58.5	0
+345	-58.5	0
+346	-58.5	0
+347	-58.5	0
+348	-58.5	0
+349	-58.5	0
+350	-58.5	0
+351	-58.5	0
+352	-58.5	0
+353	-58.5	0
+354	-58.5	0
+355	-58.5	0
+356	-58.5	0
+357	-58.5	0
+358	-58.5	0
+359	-58.5	0
+360	-58.5	0
+0	-58	0
+1	-58	0
+2	-58	0
+3	-58	0
+4	-58	0
+5	-58	0
+6	-58	0
+7	-58	0
+8	-58	0
+9	-58	0
+10	-58	0
+11	-58	0
+12	-58	0
+13	-58	0
+14	-58	0
+15	-58	0
+16	-58	0
+17	-58	0
+18	-58	0
+19	-58	0
+20	-58	0
+21	-58	0
+22	-58	0
+23	-58	0
+24	-58	0
+25	-58	0
+26	-58	0
+27	-58	0
+28	-58	0
+29	-58	0
+30	-58	0
+31	-58	0
+32	-58	0
+33	-58	0
+34	-58	0
+35	-58	0
+36	-58	0
+37	-58	0
+38	-58	0
+39	-58	0
+40	-58	0
+41	-58	0
+42	-58	0
+43	-58	0
+44	-58	0
+45	-58	0
+46	-58	0
+47	-58	0
+48	-58	0
+49	-58	0
+50	-58	0
+51	-58	0
+52	-58	0
+53	-58	0
+54	-58	0
+55	-58	0
+56	-58	0
+57	-58	0
+58	-58	0
+59	-58	0
+60	-58	0
+61	-58	0
+62	-58	0
+63	-58	0
+64	-58	0
+65	-58	0
+66	-58	0
+67	-58	0
+68	-58	0
+69	-58	0
+70	-58	0
+71	-58	0
+72	-58	0
+73	-58	0
+74	-58	0
+75	-58	0
+76	-58	0
+77	-58	0
+78	-58	0
+79	-58	0
+80	-58	0
+81	-58	0
+82	-58	0
+83	-58	0
+84	-58	0
+85	-58	0
+86	-58	0
+87	-58	0
+88	-58	0
+89	-58	0
+90	-58	0
+91	-58	0
+92	-58	0
+93	-58	0
+94	-58	0
+95	-58	0
+96	-58	0
+97	-58	0
+98	-58	0
+99	-58	0
+100	-58	0
+101	-58	0
+102	-58	0
+103	-58	0
+104	-58	0
+105	-58	0
+106	-58	0
+107	-58	0
+108	-58	0
+109	-58	0
+110	-58	0
+111	-58	0
+112	-58	0
+113	-58	0
+114	-58	0
+115	-58	0
+116	-58	0
+117	-58	0
+118	-58	0
+119	-58	0
+120	-58	0
+121	-58	0
+122	-58	0
+123	-58	0
+124	-58	0
+125	-58	0
+126	-58	0
+127	-58	0
+128	-58	0
+129	-58	0
+130	-58	0
+131	-58	0
+132	-58	0
+133	-58	0
+134	-58	0
+135	-58	0
+136	-58	0
+137	-58	0
+138	-58	0
+139	-58	0
+140	-58	0
+141	-58	0
+142	-58	0
+143	-58	0
+144	-58	0
+145	-58	0
+146	-58	0
+147	-58	0
+148	-58	0
+149	-58	0
+150	-58	0
+151	-58	0
+152	-58	0
+153	-58	0
+154	-58	0
+155	-58	0
+156	-58	0
+157	-58	0
+158	-58	0
+159	-58	0
+160	-58	0
+161	-58	0
+162	-58	0
+163	-58	0
+164	-58	0
+165	-58	0
+166	-58	0
+167	-58	0
+168	-58	0
+169	-58	0
+170	-58	0
+171	-58	0
+172	-58	0
+173	-58	0
+174	-58	0
+175	-58	0
+176	-58	0
+177	-58	0
+178	-58	0
+179	-58	0
+180	-58	0
+181	-58	0
+182	-58	0
+183	-58	0
+184	-58	0
+185	-58	0
+186	-58	0
+187	-58	0
+188	-58	0
+189	-58	0
+190	-58	0
+191	-58	0
+192	-58	0
+193	-58	0
+194	-58	0
+195	-58	0
+196	-58	0
+197	-58	0
+198	-58	0
+199	-58	0
+200	-58	0
+201	-58	0
+202	-58	0
+203	-58	0
+204	-58	0
+205	-58	0
+206	-58	0
+207	-58	0
+208	-58	0
+209	-58	0
+210	-58	0
+211	-58	0
+212	-58	0
+213	-58	0
+214	-58	0
+215	-58	0
+216	-58	0
+217	-58	0
+218	-58	0
+219	-58	0
+220	-58	0
+221	-58	0
+222	-58	0
+223	-58	0
+224	-58	0
+225	-58	0
+226	-58	0
+227	-58	0
+228	-58	0
+229	-58	0
+230	-58	0
+231	-58	0
+232	-58	0
+233	-58	0
+234	-58	0
+235	-58	0
+236	-58	0
+237	-58	0
+238	-58	0
+239	-58	0
+240	-58	0
+241	-58	0
+242	-58	0
+243	-58	0
+244	-58	0
+245	-58	0
+246	-58	0
+247	-58	0
+248	-58	0
+249	-58	0
+250	-58	0
+251	-58	0
+252	-58	0
+253	-58	0
+254	-58	0
+255	-58	0
+256	-58	0
+257	-58	0
+258	-58	0
+259	-58	0
+260	-58	0
+261	-58	0
+262	-58	0
+263	-58	0
+264	-58	0
+265	-58	0
+266	-58	0
+267	-58	0
+268	-58	0
+269	-58	0
+270	-58	0
+271	-58	0
+272	-58	0
+273	-58	0
+274	-58	0
+275	-58	0
+276	-58	0
+277	-58	0
+278	-58	0
+279	-58	0
+280	-58	0
+281	-58	0
+282	-58	0
+283	-58	0
+284	-58	0
+285	-58	0
+286	-58	0
+287	-58	0
+288	-58	0
+289	-58	0
+290	-58	0
+291	-58	0
+292	-58	0
+293	-58	0
+294	-58	0
+295	-58	0
+296	-58	0
+297	-58	0
+298	-58	0
+299	-58	0
+300	-58	0
+301	-58	0
+302	-58	0
+303	-58	0
+304	-58	0
+305	-58	0
+306	-58	0
+307	-58	0
+308	-58	0
+309	-58	0
+310	-58	0
+311	-58	0
+312	-58	0
+313	-58	0
+314	-58	0
+315	-58	0
+316	-58	0
+317	-58	0
+318	-58	0
+319	-58	0
+320	-58	0
+321	-58	0
+322	-58	0
+323	-58	0
+324	-58	0
+325	-58	0
+326	-58	0
+327	-58	0
+328	-58	0
+329	-58	0
+330	-58	0
+331	-58	0
+332	-58	0
+333	-58	0
+334	-58	0
+335	-58	0
+336	-58	0
+337	-58	0
+338	-58	0
+339	-58	0
+340	-58	0
+341	-58	0
+342	-58	0
+343	-58	0
+344	-58	0
+345	-58	0
+346	-58	0
+347	-58	0
+348	-58	0
+349	-58	0
+350	-58	0
+351	-58	0
+352	-58	0
+353	-58	0
+354	-58	0
+355	-58	0
+356	-58	0
+357	-58	0
+358	-58	0
+359	-58	0
+360	-58	0
+0	-57.5	0
+1	-57.5	0
+2	-57.5	0
+3	-57.5	0
+4	-57.5	0
+5	-57.5	0
+6	-57.5	0
+7	-57.5	0
+8	-57.5	0
+9	-57.5	0
+10	-57.5	0
+11	-57.5	0
+12	-57.5	0
+13	-57.5	0
+14	-57.5	0
+15	-57.5	0
+16	-57.5	0
+17	-57.5	0
+18	-57.5	0
+19	-57.5	0
+20	-57.5	0
+21	-57.5	0
+22	-57.5	0
+23	-57.5	0
+24	-57.5	0
+25	-57.5	0
+26	-57.5	0
+27	-57.5	0
+28	-57.5	0
+29	-57.5	0
+30	-57.5	0
+31	-57.5	0
+32	-57.5	0
+33	-57.5	0
+34	-57.5	0
+35	-57.5	0
+36	-57.5	0
+37	-57.5	0
+38	-57.5	0
+39	-57.5	0
+40	-57.5	0
+41	-57.5	0
+42	-57.5	0
+43	-57.5	0
+44	-57.5	0
+45	-57.5	0
+46	-57.5	0
+47	-57.5	0
+48	-57.5	0
+49	-57.5	0
+50	-57.5	0
+51	-57.5	0
+52	-57.5	0
+53	-57.5	0
+54	-57.5	0
+55	-57.5	0
+56	-57.5	0
+57	-57.5	0
+58	-57.5	0
+59	-57.5	0
+60	-57.5	0
+61	-57.5	0
+62	-57.5	0
+63	-57.5	0
+64	-57.5	0
+65	-57.5	0
+66	-57.5	0
+67	-57.5	0
+68	-57.5	0
+69	-57.5	0
+70	-57.5	0
+71	-57.5	0
+72	-57.5	0
+73	-57.5	0
+74	-57.5	0
+75	-57.5	0
+76	-57.5	0
+77	-57.5	0
+78	-57.5	0
+79	-57.5	0
+80	-57.5	0
+81	-57.5	0
+82	-57.5	0
+83	-57.5	0
+84	-57.5	0
+85	-57.5	0
+86	-57.5	0
+87	-57.5	0
+88	-57.5	0
+89	-57.5	0
+90	-57.5	0
+91	-57.5	0
+92	-57.5	0
+93	-57.5	0
+94	-57.5	0
+95	-57.5	0
+96	-57.5	0
+97	-57.5	0
+98	-57.5	0
+99	-57.5	0
+100	-57.5	0
+101	-57.5	0
+102	-57.5	0
+103	-57.5	0
+104	-57.5	0
+105	-57.5	0
+106	-57.5	0
+107	-57.5	0
+108	-57.5	0
+109	-57.5	0
+110	-57.5	0
+111	-57.5	0
+112	-57.5	0
+113	-57.5	0
+114	-57.5	0
+115	-57.5	0
+116	-57.5	0
+117	-57.5	0
+118	-57.5	0
+119	-57.5	0
+120	-57.5	0
+121	-57.5	0
+122	-57.5	0
+123	-57.5	0
+124	-57.5	0
+125	-57.5	0
+126	-57.5	0
+127	-57.5	0
+128	-57.5	0
+129	-57.5	0
+130	-57.5	0
+131	-57.5	0
+132	-57.5	0
+133	-57.5	0
+134	-57.5	0
+135	-57.5	0
+136	-57.5	0
+137	-57.5	0
+138	-57.5	0
+139	-57.5	0
+140	-57.5	0
+141	-57.5	0
+142	-57.5	0
+143	-57.5	0
+144	-57.5	0
+145	-57.5	0
+146	-57.5	0
+147	-57.5	0
+148	-57.5	0
+149	-57.5	0
+150	-57.5	0
+151	-57.5	0
+152	-57.5	0
+153	-57.5	0
+154	-57.5	0
+155	-57.5	0
+156	-57.5	0
+157	-57.5	0
+158	-57.5	0
+159	-57.5	0
+160	-57.5	0
+161	-57.5	0
+162	-57.5	0
+163	-57.5	0
+164	-57.5	0
+165	-57.5	0
+166	-57.5	0
+167	-57.5	0
+168	-57.5	0
+169	-57.5	0
+170	-57.5	0
+171	-57.5	0
+172	-57.5	0
+173	-57.5	0
+174	-57.5	0
+175	-57.5	0
+176	-57.5	0
+177	-57.5	0
+178	-57.5	0
+179	-57.5	0
+180	-57.5	0
+181	-57.5	0
+182	-57.5	0
+183	-57.5	0
+184	-57.5	0
+185	-57.5	0
+186	-57.5	0
+187	-57.5	0
+188	-57.5	0
+189	-57.5	0
+190	-57.5	0
+191	-57.5	0
+192	-57.5	0
+193	-57.5	0
+194	-57.5	0
+195	-57.5	0
+196	-57.5	0
+197	-57.5	0
+198	-57.5	0
+199	-57.5	0
+200	-57.5	0
+201	-57.5	0
+202	-57.5	0
+203	-57.5	0
+204	-57.5	0
+205	-57.5	0
+206	-57.5	0
+207	-57.5	0
+208	-57.5	0
+209	-57.5	0
+210	-57.5	0
+211	-57.5	0
+212	-57.5	0
+213	-57.5	0
+214	-57.5	0
+215	-57.5	0
+216	-57.5	0
+217	-57.5	0
+218	-57.5	0
+219	-57.5	0
+220	-57.5	0
+221	-57.5	0
+222	-57.5	0
+223	-57.5	0
+224	-57.5	0
+225	-57.5	0
+226	-57.5	0
+227	-57.5	0
+228	-57.5	0
+229	-57.5	0
+230	-57.5	0
+231	-57.5	0
+232	-57.5	0
+233	-57.5	0
+234	-57.5	0
+235	-57.5	0
+236	-57.5	0
+237	-57.5	0
+238	-57.5	0
+239	-57.5	0
+240	-57.5	0
+241	-57.5	0
+242	-57.5	0
+243	-57.5	0
+244	-57.5	0
+245	-57.5	0
+246	-57.5	0
+247	-57.5	0
+248	-57.5	0
+249	-57.5	0
+250	-57.5	0
+251	-57.5	0
+252	-57.5	0
+253	-57.5	0
+254	-57.5	0
+255	-57.5	0
+256	-57.5	0
+257	-57.5	0
+258	-57.5	0
+259	-57.5	0
+260	-57.5	0
+261	-57.5	0
+262	-57.5	0
+263	-57.5	0
+264	-57.5	0
+265	-57.5	0
+266	-57.5	0
+267	-57.5	0
+268	-57.5	0
+269	-57.5	0
+270	-57.5	0
+271	-57.5	0
+272	-57.5	0
+273	-57.5	0
+274	-57.5	0
+275	-57.5	0
+276	-57.5	0
+277	-57.5	0
+278	-57.5	0
+279	-57.5	0
+280	-57.5	0
+281	-57.5	0
+282	-57.5	0
+283	-57.5	0
+284	-57.5	0
+285	-57.5	0
+286	-57.5	0
+287	-57.5	0
+288	-57.5	0
+289	-57.5	0
+290	-57.5	0
+291	-57.5	0
+292	-57.5	0
+293	-57.5	0
+294	-57.5	0
+295	-57.5	0
+296	-57.5	0
+297	-57.5	0
+298	-57.5	0
+299	-57.5	0
+300	-57.5	0
+301	-57.5	0
+302	-57.5	0
+303	-57.5	0
+304	-57.5	0
+305	-57.5	0
+306	-57.5	0
+307	-57.5	0
+308	-57.5	0
+309	-57.5	0
+310	-57.5	0
+311	-57.5	0
+312	-57.5	0
+313	-57.5	0
+314	-57.5	0
+315	-57.5	0
+316	-57.5	0
+317	-57.5	0
+318	-57.5	0
+319	-57.5	0
+320	-57.5	0
+321	-57.5	0
+322	-57.5	0
+323	-57.5	0
+324	-57.5	0
+325	-57.5	0
+326	-57.5	0
+327	-57.5	0
+328	-57.5	0
+329	-57.5	0
+330	-57.5	0
+331	-57.5	0
+332	-57.5	0
+333	-57.5	0
+334	-57.5	0
+335	-57.5	0
+336	-57.5	0
+337	-57.5	0
+338	-57.5	0
+339	-57.5	0
+340	-57.5	0
+341	-57.5	0
+342	-57.5	0
+343	-57.5	0
+344	-57.5	0
+345	-57.5	0
+346	-57.5	0
+347	-57.5	0
+348	-57.5	0
+349	-57.5	0
+350	-57.5	0
+351	-57.5	0
+352	-57.5	0
+353	-57.5	0
+354	-57.5	0
+355	-57.5	0
+356	-57.5	0
+357	-57.5	0
+358	-57.5	0
+359	-57.5	0
+360	-57.5	0
+0	-57	0
+1	-57	0
+2	-57	0
+3	-57	0
+4	-57	0
+5	-57	0
+6	-57	0
+7	-57	0
+8	-57	0
+9	-57	0
+10	-57	0
+11	-57	0
+12	-57	0
+13	-57	0
+14	-57	0
+15	-57	0
+16	-57	0
+17	-57	0
+18	-57	0
+19	-57	0
+20	-57	0
+21	-57	0
+22	-57	0
+23	-57	0
+24	-57	0
+25	-57	0
+26	-57	0
+27	-57	0
+28	-57	0
+29	-57	0
+30	-57	0
+31	-57	0
+32	-57	0
+33	-57	0
+34	-57	0
+35	-57	0
+36	-57	0
+37	-57	0
+38	-57	0
+39	-57	0
+40	-57	0
+41	-57	0
+42	-57	0
+43	-57	0
+44	-57	0
+45	-57	0
+46	-57	0
+47	-57	0
+48	-57	0
+49	-57	0
+50	-57	0
+51	-57	0
+52	-57	0
+53	-57	0
+54	-57	0
+55	-57	0
+56	-57	0
+57	-57	0
+58	-57	0
+59	-57	0
+60	-57	0
+61	-57	0
+62	-57	0
+63	-57	0
+64	-57	0
+65	-57	0
+66	-57	0
+67	-57	0
+68	-57	0
+69	-57	0
+70	-57	0
+71	-57	0
+72	-57	0
+73	-57	0
+74	-57	0
+75	-57	0
+76	-57	0
+77	-57	0
+78	-57	0
+79	-57	0
+80	-57	0
+81	-57	0
+82	-57	0
+83	-57	0
+84	-57	0
+85	-57	0
+86	-57	0
+87	-57	0
+88	-57	0
+89	-57	0
+90	-57	0
+91	-57	0
+92	-57	0
+93	-57	0
+94	-57	0
+95	-57	0
+96	-57	0
+97	-57	0
+98	-57	0
+99	-57	0
+100	-57	0
+101	-57	0
+102	-57	0
+103	-57	0
+104	-57	0
+105	-57	0
+106	-57	0
+107	-57	0
+108	-57	0
+109	-57	0
+110	-57	0
+111	-57	0
+112	-57	0
+113	-57	0
+114	-57	0
+115	-57	0
+116	-57	0
+117	-57	0
+118	-57	0
+119	-57	0
+120	-57	0
+121	-57	0
+122	-57	0
+123	-57	0
+124	-57	0
+125	-57	0
+126	-57	0
+127	-57	0
+128	-57	0
+129	-57	0
+130	-57	0
+131	-57	0
+132	-57	0
+133	-57	0
+134	-57	0
+135	-57	0
+136	-57	0
+137	-57	0
+138	-57	0
+139	-57	0
+140	-57	0
+141	-57	0
+142	-57	0
+143	-57	0
+144	-57	0
+145	-57	0
+146	-57	0
+147	-57	0
+148	-57	0
+149	-57	0
+150	-57	0
+151	-57	0
+152	-57	0
+153	-57	0
+154	-57	0
+155	-57	0
+156	-57	0
+157	-57	0
+158	-57	0
+159	-57	0
+160	-57	0
+161	-57	0
+162	-57	0
+163	-57	0
+164	-57	0
+165	-57	0
+166	-57	0
+167	-57	0
+168	-57	0
+169	-57	0
+170	-57	0
+171	-57	0
+172	-57	0
+173	-57	0
+174	-57	0
+175	-57	0
+176	-57	0
+177	-57	0
+178	-57	0
+179	-57	0
+180	-57	0
+181	-57	0
+182	-57	0
+183	-57	0
+184	-57	0
+185	-57	0
+186	-57	0
+187	-57	0
+188	-57	0
+189	-57	0
+190	-57	0
+191	-57	0
+192	-57	0
+193	-57	0
+194	-57	0
+195	-57	0
+196	-57	0
+197	-57	0
+198	-57	0
+199	-57	0
+200	-57	0
+201	-57	0
+202	-57	0
+203	-57	0
+204	-57	0
+205	-57	0
+206	-57	0
+207	-57	0
+208	-57	0
+209	-57	0
+210	-57	0
+211	-57	0
+212	-57	0
+213	-57	0
+214	-57	0
+215	-57	0
+216	-57	0
+217	-57	0
+218	-57	0
+219	-57	0
+220	-57	0
+221	-57	0
+222	-57	0
+223	-57	0
+224	-57	0
+225	-57	0
+226	-57	0
+227	-57	0
+228	-57	0
+229	-57	0
+230	-57	0
+231	-57	0
+232	-57	0
+233	-57	0
+234	-57	0
+235	-57	0
+236	-57	0
+237	-57	0
+238	-57	0
+239	-57	0
+240	-57	0
+241	-57	0
+242	-57	0
+243	-57	0
+244	-57	0
+245	-57	0
+246	-57	0
+247	-57	0
+248	-57	0
+249	-57	0
+250	-57	0
+251	-57	0
+252	-57	0
+253	-57	0
+254	-57	0
+255	-57	0
+256	-57	0
+257	-57	0
+258	-57	0
+259	-57	0
+260	-57	0
+261	-57	0
+262	-57	0
+263	-57	0
+264	-57	0
+265	-57	0
+266	-57	0
+267	-57	0
+268	-57	0
+269	-57	0
+270	-57	0
+271	-57	0
+272	-57	0
+273	-57	0
+274	-57	0
+275	-57	0
+276	-57	0
+277	-57	0
+278	-57	0
+279	-57	0
+280	-57	0
+281	-57	0
+282	-57	0
+283	-57	0
+284	-57	0
+285	-57	0
+286	-57	0
+287	-57	0
+288	-57	0
+289	-57	0
+290	-57	0
+291	-57	0
+292	-57	0
+293	-57	0
+294	-57	0
+295	-57	0
+296	-57	0
+297	-57	0
+298	-57	0
+299	-57	0
+300	-57	0
+301	-57	0
+302	-57	0
+303	-57	0
+304	-57	0
+305	-57	0
+306	-57	0
+307	-57	0
+308	-57	0
+309	-57	0
+310	-57	0
+311	-57	0
+312	-57	0
+313	-57	0
+314	-57	0
+315	-57	0
+316	-57	0
+317	-57	0
+318	-57	0
+319	-57	0
+320	-57	0
+321	-57	0
+322	-57	0
+323	-57	0
+324	-57	0
+325	-57	0
+326	-57	0
+327	-57	0
+328	-57	0
+329	-57	0
+330	-57	0
+331	-57	0
+332	-57	0
+333	-57	0
+334	-57	0
+335	-57	0
+336	-57	0
+337	-57	0
+338	-57	0
+339	-57	0
+340	-57	0
+341	-57	0
+342	-57	0
+343	-57	0
+344	-57	0
+345	-57	0
+346	-57	0
+347	-57	0
+348	-57	0
+349	-57	0
+350	-57	0
+351	-57	0
+352	-57	0
+353	-57	0
+354	-57	0
+355	-57	0
+356	-57	0
+357	-57	0
+358	-57	0
+359	-57	0
+360	-57	0
+0	-56.5	0
+1	-56.5	0
+2	-56.5	0
+3	-56.5	0
+4	-56.5	0
+5	-56.5	0
+6	-56.5	0
+7	-56.5	0
+8	-56.5	0
+9	-56.5	0
+10	-56.5	0
+11	-56.5	0
+12	-56.5	0
+13	-56.5	0
+14	-56.5	0
+15	-56.5	0
+16	-56.5	0
+17	-56.5	0
+18	-56.5	0
+19	-56.5	0
+20	-56.5	0
+21	-56.5	0
+22	-56.5	0
+23	-56.5	0
+24	-56.5	0
+25	-56.5	0
+26	-56.5	0
+27	-56.5	0
+28	-56.5	0
+29	-56.5	0
+30	-56.5	0
+31	-56.5	0
+32	-56.5	0
+33	-56.5	0
+34	-56.5	0
+35	-56.5	0
+36	-56.5	0
+37	-56.5	0
+38	-56.5	0
+39	-56.5	0
+40	-56.5	0
+41	-56.5	0
+42	-56.5	0
+43	-56.5	0
+44	-56.5	0
+45	-56.5	0
+46	-56.5	0
+47	-56.5	0
+48	-56.5	0
+49	-56.5	0
+50	-56.5	0
+51	-56.5	0
+52	-56.5	0
+53	-56.5	0
+54	-56.5	0
+55	-56.5	0
+56	-56.5	0
+57	-56.5	0
+58	-56.5	0
+59	-56.5	0
+60	-56.5	0
+61	-56.5	0
+62	-56.5	0
+63	-56.5	0
+64	-56.5	0
+65	-56.5	0
+66	-56.5	0
+67	-56.5	0
+68	-56.5	0
+69	-56.5	0
+70	-56.5	0
+71	-56.5	0
+72	-56.5	0
+73	-56.5	0
+74	-56.5	0
+75	-56.5	0
+76	-56.5	0
+77	-56.5	0
+78	-56.5	0
+79	-56.5	0
+80	-56.5	0
+81	-56.5	0
+82	-56.5	0
+83	-56.5	0
+84	-56.5	0
+85	-56.5	0
+86	-56.5	0
+87	-56.5	0
+88	-56.5	0
+89	-56.5	0
+90	-56.5	0
+91	-56.5	0
+92	-56.5	0
+93	-56.5	0
+94	-56.5	0
+95	-56.5	0
+96	-56.5	0
+97	-56.5	0
+98	-56.5	0
+99	-56.5	0
+100	-56.5	0
+101	-56.5	0
+102	-56.5	0
+103	-56.5	0
+104	-56.5	0
+105	-56.5	0
+106	-56.5	0
+107	-56.5	0
+108	-56.5	0
+109	-56.5	0
+110	-56.5	0
+111	-56.5	0
+112	-56.5	0
+113	-56.5	0
+114	-56.5	0
+115	-56.5	0
+116	-56.5	0
+117	-56.5	0
+118	-56.5	0
+119	-56.5	0
+120	-56.5	0
+121	-56.5	0
+122	-56.5	0
+123	-56.5	0
+124	-56.5	0
+125	-56.5	0
+126	-56.5	0
+127	-56.5	0
+128	-56.5	0
+129	-56.5	0
+130	-56.5	0
+131	-56.5	0
+132	-56.5	0
+133	-56.5	0
+134	-56.5	0
+135	-56.5	0
+136	-56.5	0
+137	-56.5	0
+138	-56.5	0
+139	-56.5	0
+140	-56.5	0
+141	-56.5	0
+142	-56.5	0
+143	-56.5	0
+144	-56.5	0
+145	-56.5	0
+146	-56.5	0
+147	-56.5	0
+148	-56.5	0
+149	-56.5	0
+150	-56.5	0
+151	-56.5	0
+152	-56.5	0
+153	-56.5	0
+154	-56.5	0
+155	-56.5	0
+156	-56.5	0
+157	-56.5	0
+158	-56.5	0
+159	-56.5	0
+160	-56.5	0
+161	-56.5	0
+162	-56.5	0
+163	-56.5	0
+164	-56.5	0
+165	-56.5	0
+166	-56.5	0
+167	-56.5	0
+168	-56.5	0
+169	-56.5	0
+170	-56.5	0
+171	-56.5	0
+172	-56.5	0
+173	-56.5	0
+174	-56.5	0
+175	-56.5	0
+176	-56.5	0
+177	-56.5	0
+178	-56.5	0
+179	-56.5	0
+180	-56.5	0
+181	-56.5	0
+182	-56.5	0
+183	-56.5	0
+184	-56.5	0
+185	-56.5	0
+186	-56.5	0
+187	-56.5	0
+188	-56.5	0
+189	-56.5	0
+190	-56.5	0
+191	-56.5	0
+192	-56.5	0
+193	-56.5	0
+194	-56.5	0
+195	-56.5	0
+196	-56.5	0
+197	-56.5	0
+198	-56.5	0
+199	-56.5	0
+200	-56.5	0
+201	-56.5	0
+202	-56.5	0
+203	-56.5	0
+204	-56.5	0
+205	-56.5	0
+206	-56.5	0
+207	-56.5	0
+208	-56.5	0
+209	-56.5	0
+210	-56.5	0
+211	-56.5	0
+212	-56.5	0
+213	-56.5	0
+214	-56.5	0
+215	-56.5	0
+216	-56.5	0
+217	-56.5	0
+218	-56.5	0
+219	-56.5	0
+220	-56.5	0
+221	-56.5	0
+222	-56.5	0
+223	-56.5	0
+224	-56.5	0
+225	-56.5	0
+226	-56.5	0
+227	-56.5	0
+228	-56.5	0
+229	-56.5	0
+230	-56.5	0
+231	-56.5	0
+232	-56.5	0
+233	-56.5	0
+234	-56.5	0
+235	-56.5	0
+236	-56.5	0
+237	-56.5	0
+238	-56.5	0
+239	-56.5	0
+240	-56.5	0
+241	-56.5	0
+242	-56.5	0
+243	-56.5	0
+244	-56.5	0
+245	-56.5	0
+246	-56.5	0
+247	-56.5	0
+248	-56.5	0
+249	-56.5	0
+250	-56.5	0
+251	-56.5	0
+252	-56.5	0
+253	-56.5	0
+254	-56.5	0
+255	-56.5	0
+256	-56.5	0
+257	-56.5	0
+258	-56.5	0
+259	-56.5	0
+260	-56.5	0
+261	-56.5	0
+262	-56.5	0
+263	-56.5	0
+264	-56.5	0
+265	-56.5	0
+266	-56.5	0
+267	-56.5	0
+268	-56.5	0
+269	-56.5	0
+270	-56.5	0
+271	-56.5	0
+272	-56.5	0
+273	-56.5	0
+274	-56.5	0
+275	-56.5	0
+276	-56.5	0
+277	-56.5	0
+278	-56.5	0
+279	-56.5	0
+280	-56.5	0
+281	-56.5	0
+282	-56.5	0
+283	-56.5	0
+284	-56.5	0
+285	-56.5	0
+286	-56.5	0
+287	-56.5	0
+288	-56.5	0
+289	-56.5	0
+290	-56.5	0
+291	-56.5	0
+292	-56.5	0
+293	-56.5	0
+294	-56.5	0
+295	-56.5	0
+296	-56.5	0
+297	-56.5	0
+298	-56.5	0
+299	-56.5	0
+300	-56.5	0
+301	-56.5	0
+302	-56.5	0
+303	-56.5	0
+304	-56.5	0
+305	-56.5	0
+306	-56.5	0
+307	-56.5	0
+308	-56.5	0
+309	-56.5	0
+310	-56.5	0
+311	-56.5	0
+312	-56.5	0
+313	-56.5	0
+314	-56.5	0
+315	-56.5	0
+316	-56.5	0
+317	-56.5	0
+318	-56.5	0
+319	-56.5	0
+320	-56.5	0
+321	-56.5	0
+322	-56.5	0
+323	-56.5	0
+324	-56.5	0
+325	-56.5	0
+326	-56.5	0
+327	-56.5	0
+328	-56.5	0
+329	-56.5	0
+330	-56.5	0
+331	-56.5	0
+332	-56.5	0
+333	-56.5	0
+334	-56.5	0
+335	-56.5	0
+336	-56.5	0
+337	-56.5	0
+338	-56.5	0
+339	-56.5	0
+340	-56.5	0
+341	-56.5	0
+342	-56.5	0
+343	-56.5	0
+344	-56.5	0
+345	-56.5	0
+346	-56.5	0
+347	-56.5	0
+348	-56.5	0
+349	-56.5	0
+350	-56.5	0
+351	-56.5	0
+352	-56.5	0
+353	-56.5	0
+354	-56.5	0
+355	-56.5	0
+356	-56.5	0
+357	-56.5	0
+358	-56.5	0
+359	-56.5	0
+360	-56.5	0
+0	-56	0
+1	-56	0
+2	-56	0
+3	-56	0
+4	-56	0
+5	-56	0
+6	-56	0
+7	-56	0
+8	-56	0
+9	-56	0
+10	-56	0
+11	-56	0
+12	-56	0
+13	-56	0
+14	-56	0
+15	-56	0
+16	-56	0
+17	-56	0
+18	-56	0
+19	-56	0
+20	-56	0
+21	-56	0
+22	-56	0
+23	-56	0
+24	-56	0
+25	-56	0
+26	-56	0
+27	-56	0
+28	-56	0
+29	-56	0
+30	-56	0
+31	-56	0
+32	-56	0
+33	-56	0
+34	-56	0
+35	-56	0
+36	-56	0
+37	-56	0
+38	-56	0
+39	-56	0
+40	-56	0
+41	-56	0
+42	-56	0
+43	-56	0
+44	-56	0
+45	-56	0
+46	-56	0
+47	-56	0
+48	-56	0
+49	-56	0
+50	-56	0
+51	-56	0
+52	-56	0
+53	-56	0
+54	-56	0
+55	-56	0
+56	-56	0
+57	-56	0
+58	-56	0
+59	-56	0
+60	-56	0
+61	-56	0
+62	-56	0
+63	-56	0
+64	-56	0
+65	-56	0
+66	-56	0
+67	-56	0
+68	-56	0
+69	-56	0
+70	-56	0
+71	-56	0
+72	-56	0
+73	-56	0
+74	-56	0
+75	-56	0
+76	-56	0
+77	-56	0
+78	-56	0
+79	-56	0
+80	-56	0
+81	-56	0
+82	-56	0
+83	-56	0
+84	-56	0
+85	-56	0
+86	-56	0
+87	-56	0
+88	-56	0
+89	-56	0
+90	-56	0
+91	-56	0
+92	-56	0
+93	-56	0
+94	-56	0
+95	-56	0
+96	-56	0
+97	-56	0
+98	-56	0
+99	-56	0
+100	-56	0
+101	-56	0
+102	-56	0
+103	-56	0
+104	-56	0
+105	-56	0
+106	-56	0
+107	-56	0
+108	-56	0
+109	-56	0
+110	-56	0
+111	-56	0
+112	-56	0
+113	-56	0
+114	-56	0
+115	-56	0
+116	-56	0
+117	-56	0
+118	-56	0
+119	-56	0
+120	-56	0
+121	-56	0
+122	-56	0
+123	-56	0
+124	-56	0
+125	-56	0
+126	-56	0
+127	-56	0
+128	-56	0
+129	-56	0
+130	-56	0
+131	-56	0
+132	-56	0
+133	-56	0
+134	-56	0
+135	-56	0
+136	-56	0
+137	-56	0
+138	-56	0
+139	-56	0
+140	-56	0
+141	-56	0
+142	-56	0
+143	-56	0
+144	-56	0
+145	-56	0
+146	-56	0
+147	-56	0
+148	-56	0
+149	-56	0
+150	-56	0
+151	-56	0
+152	-56	0
+153	-56	0
+154	-56	0
+155	-56	0
+156	-56	0
+157	-56	0
+158	-56	0
+159	-56	0
+160	-56	0
+161	-56	0
+162	-56	0
+163	-56	0
+164	-56	0
+165	-56	0
+166	-56	0
+167	-56	0
+168	-56	0
+169	-56	0
+170	-56	0
+171	-56	0
+172	-56	0
+173	-56	0
+174	-56	0
+175	-56	0
+176	-56	0
+177	-56	0
+178	-56	0
+179	-56	0
+180	-56	0
+181	-56	0
+182	-56	0
+183	-56	0
+184	-56	0
+185	-56	0
+186	-56	0
+187	-56	0
+188	-56	0
+189	-56	0
+190	-56	0
+191	-56	0
+192	-56	0
+193	-56	0
+194	-56	0
+195	-56	0
+196	-56	0
+197	-56	0
+198	-56	0
+199	-56	0
+200	-56	0
+201	-56	0
+202	-56	0
+203	-56	0
+204	-56	0
+205	-56	0
+206	-56	0
+207	-56	0
+208	-56	0
+209	-56	0
+210	-56	0
+211	-56	0
+212	-56	0
+213	-56	0
+214	-56	0
+215	-56	0
+216	-56	0
+217	-56	0
+218	-56	0
+219	-56	0
+220	-56	0
+221	-56	0
+222	-56	0
+223	-56	0
+224	-56	0
+225	-56	0
+226	-56	0
+227	-56	0
+228	-56	0
+229	-56	0
+230	-56	0
+231	-56	0
+232	-56	0
+233	-56	0
+234	-56	0
+235	-56	0
+236	-56	0
+237	-56	0
+238	-56	0
+239	-56	0
+240	-56	0
+241	-56	0
+242	-56	0
+243	-56	0
+244	-56	0
+245	-56	0
+246	-56	0
+247	-56	0
+248	-56	0
+249	-56	0
+250	-56	0
+251	-56	0
+252	-56	0
+253	-56	0
+254	-56	0
+255	-56	0
+256	-56	0
+257	-56	0
+258	-56	0
+259	-56	0
+260	-56	0
+261	-56	0
+262	-56	0
+263	-56	0
+264	-56	0
+265	-56	0
+266	-56	0
+267	-56	0
+268	-56	0
+269	-56	0
+270	-56	0
+271	-56	0
+272	-56	0
+273	-56	0
+274	-56	0
+275	-56	0
+276	-56	0
+277	-56	0
+278	-56	0
+279	-56	0
+280	-56	0
+281	-56	0
+282	-56	0
+283	-56	0
+284	-56	0
+285	-56	0
+286	-56	0
+287	-56	0
+288	-56	0
+289	-56	0
+290	-56	0
+291	-56	0
+292	-56	0
+293	-56	0
+294	-56	0
+295	-56	0
+296	-56	0
+297	-56	0
+298	-56	0
+299	-56	0
+300	-56	0
+301	-56	0
+302	-56	0
+303	-56	0
+304	-56	0
+305	-56	0
+306	-56	0
+307	-56	0
+308	-56	0
+309	-56	0
+310	-56	0
+311	-56	0
+312	-56	0
+313	-56	0
+314	-56	0
+315	-56	0
+316	-56	0
+317	-56	0
+318	-56	0
+319	-56	0
+320	-56	0
+321	-56	0
+322	-56	0
+323	-56	0
+324	-56	0
+325	-56	0
+326	-56	0
+327	-56	0
+328	-56	0
+329	-56	0
+330	-56	0
+331	-56	0
+332	-56	0
+333	-56	0
+334	-56	0
+335	-56	0
+336	-56	0
+337	-56	0
+338	-56	0
+339	-56	0
+340	-56	0
+341	-56	0
+342	-56	0
+343	-56	0
+344	-56	0
+345	-56	0
+346	-56	0
+347	-56	0
+348	-56	0
+349	-56	0
+350	-56	0
+351	-56	0
+352	-56	0
+353	-56	0
+354	-56	0
+355	-56	0
+356	-56	0
+357	-56	0
+358	-56	0
+359	-56	0
+360	-56	0
+0	-55.5	0
+1	-55.5	0
+2	-55.5	0
+3	-55.5	0
+4	-55.5	0
+5	-55.5	0
+6	-55.5	0
+7	-55.5	0
+8	-55.5	0
+9	-55.5	0
+10	-55.5	0
+11	-55.5	0
+12	-55.5	0
+13	-55.5	0
+14	-55.5	0
+15	-55.5	0
+16	-55.5	0
+17	-55.5	0
+18	-55.5	0
+19	-55.5	0
+20	-55.5	0
+21	-55.5	0
+22	-55.5	0
+23	-55.5	0
+24	-55.5	0
+25	-55.5	0
+26	-55.5	0
+27	-55.5	0
+28	-55.5	0
+29	-55.5	0
+30	-55.5	0
+31	-55.5	0
+32	-55.5	0
+33	-55.5	0
+34	-55.5	0
+35	-55.5	0
+36	-55.5	0
+37	-55.5	0
+38	-55.5	0
+39	-55.5	0
+40	-55.5	0
+41	-55.5	0
+42	-55.5	0
+43	-55.5	0
+44	-55.5	0
+45	-55.5	0
+46	-55.5	0
+47	-55.5	0
+48	-55.5	0
+49	-55.5	0
+50	-55.5	0
+51	-55.5	0
+52	-55.5	0
+53	-55.5	0
+54	-55.5	0
+55	-55.5	0
+56	-55.5	0
+57	-55.5	0
+58	-55.5	0
+59	-55.5	0
+60	-55.5	0
+61	-55.5	0
+62	-55.5	0
+63	-55.5	0
+64	-55.5	0
+65	-55.5	0
+66	-55.5	0
+67	-55.5	0
+68	-55.5	0
+69	-55.5	0
+70	-55.5	0
+71	-55.5	0
+72	-55.5	0
+73	-55.5	0
+74	-55.5	0
+75	-55.5	0
+76	-55.5	0
+77	-55.5	0
+78	-55.5	0
+79	-55.5	0
+80	-55.5	0
+81	-55.5	0
+82	-55.5	0
+83	-55.5	0
+84	-55.5	0
+85	-55.5	0
+86	-55.5	0
+87	-55.5	0
+88	-55.5	0
+89	-55.5	0
+90	-55.5	0
+91	-55.5	0
+92	-55.5	0
+93	-55.5	0
+94	-55.5	0
+95	-55.5	0
+96	-55.5	0
+97	-55.5	0
+98	-55.5	0
+99	-55.5	0
+100	-55.5	0
+101	-55.5	0
+102	-55.5	0
+103	-55.5	0
+104	-55.5	0
+105	-55.5	0
+106	-55.5	0
+107	-55.5	0
+108	-55.5	0
+109	-55.5	0
+110	-55.5	0
+111	-55.5	0
+112	-55.5	0
+113	-55.5	0
+114	-55.5	0
+115	-55.5	0
+116	-55.5	0
+117	-55.5	0
+118	-55.5	0
+119	-55.5	0
+120	-55.5	0
+121	-55.5	0
+122	-55.5	0
+123	-55.5	0
+124	-55.5	0
+125	-55.5	0
+126	-55.5	0
+127	-55.5	0
+128	-55.5	0
+129	-55.5	0
+130	-55.5	0
+131	-55.5	0
+132	-55.5	0
+133	-55.5	0
+134	-55.5	0
+135	-55.5	0
+136	-55.5	0
+137	-55.5	0
+138	-55.5	0
+139	-55.5	0
+140	-55.5	0
+141	-55.5	0
+142	-55.5	0
+143	-55.5	0
+144	-55.5	0
+145	-55.5	0
+146	-55.5	0
+147	-55.5	0
+148	-55.5	0
+149	-55.5	0
+150	-55.5	0
+151	-55.5	0
+152	-55.5	0
+153	-55.5	0
+154	-55.5	0
+155	-55.5	0
+156	-55.5	0
+157	-55.5	0
+158	-55.5	0
+159	-55.5	0
+160	-55.5	0
+161	-55.5	0
+162	-55.5	0
+163	-55.5	0
+164	-55.5	0
+165	-55.5	0
+166	-55.5	0
+167	-55.5	0
+168	-55.5	0
+169	-55.5	0
+170	-55.5	0
+171	-55.5	0
+172	-55.5	0
+173	-55.5	0
+174	-55.5	0
+175	-55.5	0
+176	-55.5	0
+177	-55.5	0
+178	-55.5	0
+179	-55.5	0
+180	-55.5	0
+181	-55.5	0
+182	-55.5	0
+183	-55.5	0
+184	-55.5	0
+185	-55.5	0
+186	-55.5	0
+187	-55.5	0
+188	-55.5	0
+189	-55.5	0
+190	-55.5	0
+191	-55.5	0
+192	-55.5	0
+193	-55.5	0
+194	-55.5	0
+195	-55.5	0
+196	-55.5	0
+197	-55.5	0
+198	-55.5	0
+199	-55.5	0
+200	-55.5	0
+201	-55.5	0
+202	-55.5	0
+203	-55.5	0
+204	-55.5	0
+205	-55.5	0
+206	-55.5	0
+207	-55.5	0
+208	-55.5	0
+209	-55.5	0
+210	-55.5	0
+211	-55.5	0
+212	-55.5	0
+213	-55.5	0
+214	-55.5	0
+215	-55.5	0
+216	-55.5	0
+217	-55.5	0
+218	-55.5	0
+219	-55.5	0
+220	-55.5	0
+221	-55.5	0
+222	-55.5	0
+223	-55.5	0
+224	-55.5	0
+225	-55.5	0
+226	-55.5	0
+227	-55.5	0
+228	-55.5	0
+229	-55.5	0
+230	-55.5	0
+231	-55.5	0
+232	-55.5	0
+233	-55.5	0
+234	-55.5	0
+235	-55.5	0
+236	-55.5	0
+237	-55.5	0
+238	-55.5	0
+239	-55.5	0
+240	-55.5	0
+241	-55.5	0
+242	-55.5	0
+243	-55.5	0
+244	-55.5	0
+245	-55.5	0
+246	-55.5	0
+247	-55.5	0
+248	-55.5	0
+249	-55.5	0
+250	-55.5	0
+251	-55.5	0
+252	-55.5	0
+253	-55.5	0
+254	-55.5	0
+255	-55.5	0
+256	-55.5	0
+257	-55.5	0
+258	-55.5	0
+259	-55.5	0
+260	-55.5	0
+261	-55.5	0
+262	-55.5	0
+263	-55.5	0
+264	-55.5	0
+265	-55.5	0
+266	-55.5	0
+267	-55.5	0
+268	-55.5	0
+269	-55.5	0
+270	-55.5	0
+271	-55.5	0
+272	-55.5	0
+273	-55.5	0
+274	-55.5	0
+275	-55.5	0
+276	-55.5	0
+277	-55.5	0
+278	-55.5	0
+279	-55.5	0
+280	-55.5	0
+281	-55.5	0
+282	-55.5	0
+283	-55.5	0
+284	-55.5	0
+285	-55.5	0
+286	-55.5	0
+287	-55.5	0
+288	-55.5	0
+289	-55.5	0
+290	-55.5	0
+291	-55.5	-0.10248
+292	-55.5	0
+293	-55.5	0
+294	-55.5	-0.052902
+295	-55.5	0
+296	-55.5	0
+297	-55.5	0
+298	-55.5	0
+299	-55.5	0
+300	-55.5	0
+301	-55.5	0
+302	-55.5	0
+303	-55.5	0
+304	-55.5	0
+305	-55.5	0
+306	-55.5	0
+307	-55.5	0
+308	-55.5	0
+309	-55.5	0
+310	-55.5	0
+311	-55.5	0
+312	-55.5	0
+313	-55.5	0
+314	-55.5	0
+315	-55.5	0
+316	-55.5	0
+317	-55.5	0
+318	-55.5	0
+319	-55.5	0
+320	-55.5	0
+321	-55.5	0
+322	-55.5	0
+323	-55.5	0
+324	-55.5	0
+325	-55.5	0
+326	-55.5	0
+327	-55.5	0
+328	-55.5	0
+329	-55.5	0
+330	-55.5	0
+331	-55.5	0
+332	-55.5	0
+333	-55.5	0
+334	-55.5	0
+335	-55.5	0
+336	-55.5	0
+337	-55.5	0
+338	-55.5	0
+339	-55.5	0
+340	-55.5	0
+341	-55.5	0
+342	-55.5	0
+343	-55.5	0
+344	-55.5	0
+345	-55.5	0
+346	-55.5	0
+347	-55.5	0
+348	-55.5	0
+349	-55.5	0
+350	-55.5	0
+351	-55.5	0
+352	-55.5	0
+353	-55.5	0
+354	-55.5	0
+355	-55.5	0
+356	-55.5	0
+357	-55.5	0
+358	-55.5	0
+359	-55.5	0
+360	-55.5	0
+0	-55	0
+1	-55	0
+2	-55	0
+3	-55	0
+4	-55	0
+5	-55	0
+6	-55	0
+7	-55	0
+8	-55	0
+9	-55	0
+10	-55	0
+11	-55	0
+12	-55	0
+13	-55	0
+14	-55	0
+15	-55	0
+16	-55	0
+17	-55	0
+18	-55	0
+19	-55	0
+20	-55	0
+21	-55	0
+22	-55	0
+23	-55	0
+24	-55	0
+25	-55	0
+26	-55	0
+27	-55	0
+28	-55	0
+29	-55	0
+30	-55	0
+31	-55	0
+32	-55	0
+33	-55	0
+34	-55	0
+35	-55	0
+36	-55	0
+37	-55	0
+38	-55	0
+39	-55	0
+40	-55	0
+41	-55	0
+42	-55	0
+43	-55	0
+44	-55	0
+45	-55	0
+46	-55	0
+47	-55	0
+48	-55	0
+49	-55	0
+50	-55	0
+51	-55	0
+52	-55	0
+53	-55	0
+54	-55	0
+55	-55	0
+56	-55	0
+57	-55	0
+58	-55	0
+59	-55	0
+60	-55	0
+61	-55	0
+62	-55	0
+63	-55	0
+64	-55	0
+65	-55	0
+66	-55	0
+67	-55	0
+68	-55	0
+69	-55	0
+70	-55	0
+71	-55	0
+72	-55	0
+73	-55	0
+74	-55	0
+75	-55	0
+76	-55	0
+77	-55	0
+78	-55	0
+79	-55	0
+80	-55	0
+81	-55	0
+82	-55	0
+83	-55	0
+84	-55	0
+85	-55	0
+86	-55	0
+87	-55	0
+88	-55	0
+89	-55	0
+90	-55	0
+91	-55	0
+92	-55	0
+93	-55	0
+94	-55	0
+95	-55	0
+96	-55	0
+97	-55	0
+98	-55	0
+99	-55	0
+100	-55	0
+101	-55	0
+102	-55	0
+103	-55	0
+104	-55	0
+105	-55	0
+106	-55	0
+107	-55	0
+108	-55	0
+109	-55	0
+110	-55	0
+111	-55	0
+112	-55	0
+113	-55	0
+114	-55	0
+115	-55	0
+116	-55	0
+117	-55	0
+118	-55	0
+119	-55	0
+120	-55	0
+121	-55	0
+122	-55	0
+123	-55	0
+124	-55	0
+125	-55	0
+126	-55	0
+127	-55	0
+128	-55	0
+129	-55	0
+130	-55	0
+131	-55	0
+132	-55	0
+133	-55	0
+134	-55	0
+135	-55	0
+136	-55	0
+137	-55	0
+138	-55	0
+139	-55	0
+140	-55	0
+141	-55	0
+142	-55	0
+143	-55	0
+144	-55	0
+145	-55	0
+146	-55	0
+147	-55	0
+148	-55	0
+149	-55	0
+150	-55	0
+151	-55	0
+152	-55	0
+153	-55	0
+154	-55	0
+155	-55	0
+156	-55	0
+157	-55	0
+158	-55	0
+159	-55	0
+160	-55	0
+161	-55	0
+162	-55	0
+163	-55	0
+164	-55	0
+165	-55	0
+166	-55	0
+167	-55	0
+168	-55	0
+169	-55	0
+170	-55	0
+171	-55	0
+172	-55	0
+173	-55	0
+174	-55	0
+175	-55	0
+176	-55	0
+177	-55	0
+178	-55	0
+179	-55	0
+180	-55	0
+181	-55	0
+182	-55	0
+183	-55	0
+184	-55	0
+185	-55	0
+186	-55	0
+187	-55	0
+188	-55	0
+189	-55	0
+190	-55	0
+191	-55	0
+192	-55	0
+193	-55	0
+194	-55	0
+195	-55	0
+196	-55	0
+197	-55	0
+198	-55	0
+199	-55	0
+200	-55	0
+201	-55	0
+202	-55	0
+203	-55	0
+204	-55	0
+205	-55	0
+206	-55	0
+207	-55	0
+208	-55	0
+209	-55	0
+210	-55	0
+211	-55	0
+212	-55	0
+213	-55	0
+214	-55	0
+215	-55	0
+216	-55	0
+217	-55	0
+218	-55	0
+219	-55	0
+220	-55	0
+221	-55	0
+222	-55	0
+223	-55	0
+224	-55	0
+225	-55	0
+226	-55	0
+227	-55	0
+228	-55	0
+229	-55	0
+230	-55	0
+231	-55	0
+232	-55	0
+233	-55	0
+234	-55	0
+235	-55	0
+236	-55	0
+237	-55	0
+238	-55	0
+239	-55	0
+240	-55	0
+241	-55	0
+242	-55	0
+243	-55	0
+244	-55	0
+245	-55	0
+246	-55	0
+247	-55	0
+248	-55	0
+249	-55	0
+250	-55	0
+251	-55	0
+252	-55	0
+253	-55	0
+254	-55	0
+255	-55	0
+256	-55	0
+257	-55	0
+258	-55	0
+259	-55	0
+260	-55	0
+261	-55	0
+262	-55	0
+263	-55	0
+264	-55	0
+265	-55	0
+266	-55	0
+267	-55	0
+268	-55	0
+269	-55	0
+270	-55	0
+271	-55	0
+272	-55	0
+273	-55	0
+274	-55	0
+275	-55	0
+276	-55	0
+277	-55	0
+278	-55	0
+279	-55	0
+280	-55	0
+281	-55	0
+282	-55	0
+283	-55	0
+284	-55	0
+285	-55	0
+286	-55	0
+287	-55	0
+288	-55	-0.021424
+289	-55	0
+290	-55	0
+291	-55	-0.063429
+292	-55	-0.50448
+293	-55	-0.61637
+294	-55	-0.26915
+295	-55	0
+296	-55	0
+297	-55	0
+298	-55	0
+299	-55	0
+300	-55	0
+301	-55	0
+302	-55	0
+303	-55	0
+304	-55	0
+305	-55	0
+306	-55	0
+307	-55	0
+308	-55	0
+309	-55	0
+310	-55	0
+311	-55	0
+312	-55	0
+313	-55	0
+314	-55	0
+315	-55	0
+316	-55	0
+317	-55	0
+318	-55	0
+319	-55	0
+320	-55	0
+321	-55	0
+322	-55	0
+323	-55	0
+324	-55	0
+325	-55	0
+326	-55	0
+327	-55	0
+328	-55	0
+329	-55	0
+330	-55	0
+331	-55	0
+332	-55	0
+333	-55	0
+334	-55	0
+335	-55	0
+336	-55	0
+337	-55	0
+338	-55	0
+339	-55	0
+340	-55	0
+341	-55	0
+342	-55	0
+343	-55	0
+344	-55	0
+345	-55	0
+346	-55	0
+347	-55	0
+348	-55	0
+349	-55	0
+350	-55	0
+351	-55	0
+352	-55	0
+353	-55	0
+354	-55	0
+355	-55	0
+356	-55	0
+357	-55	0
+358	-55	0
+359	-55	0
+360	-55	0
+0	-54.5	0
+1	-54.5	0
+2	-54.5	0
+3	-54.5	0
+4	-54.5	0
+5	-54.5	0
+6	-54.5	0
+7	-54.5	0
+8	-54.5	0
+9	-54.5	0
+10	-54.5	0
+11	-54.5	0
+12	-54.5	0
+13	-54.5	0
+14	-54.5	0
+15	-54.5	0
+16	-54.5	0
+17	-54.5	0
+18	-54.5	0
+19	-54.5	0
+20	-54.5	0
+21	-54.5	0
+22	-54.5	0
+23	-54.5	0
+24	-54.5	0
+25	-54.5	0
+26	-54.5	0
+27	-54.5	0
+28	-54.5	0
+29	-54.5	0
+30	-54.5	0
+31	-54.5	0
+32	-54.5	0
+33	-54.5	0
+34	-54.5	0
+35	-54.5	0
+36	-54.5	0
+37	-54.5	0
+38	-54.5	0
+39	-54.5	0
+40	-54.5	0
+41	-54.5	0
+42	-54.5	0
+43	-54.5	0
+44	-54.5	0
+45	-54.5	0
+46	-54.5	0
+47	-54.5	0
+48	-54.5	0
+49	-54.5	0
+50	-54.5	0
+51	-54.5	0
+52	-54.5	0
+53	-54.5	0
+54	-54.5	0
+55	-54.5	0
+56	-54.5	0
+57	-54.5	0
+58	-54.5	0
+59	-54.5	0
+60	-54.5	0
+61	-54.5	0
+62	-54.5	0
+63	-54.5	0
+64	-54.5	0
+65	-54.5	0
+66	-54.5	0
+67	-54.5	0
+68	-54.5	0
+69	-54.5	0
+70	-54.5	0
+71	-54.5	0
+72	-54.5	0
+73	-54.5	0
+74	-54.5	0
+75	-54.5	0
+76	-54.5	0
+77	-54.5	0
+78	-54.5	0
+79	-54.5	0
+80	-54.5	0
+81	-54.5	0
+82	-54.5	0
+83	-54.5	0
+84	-54.5	0
+85	-54.5	0
+86	-54.5	0
+87	-54.5	0
+88	-54.5	0
+89	-54.5	0
+90	-54.5	0
+91	-54.5	0
+92	-54.5	0
+93	-54.5	0
+94	-54.5	0
+95	-54.5	0
+96	-54.5	0
+97	-54.5	0
+98	-54.5	0
+99	-54.5	0
+100	-54.5	0
+101	-54.5	0
+102	-54.5	0
+103	-54.5	0
+104	-54.5	0
+105	-54.5	0
+106	-54.5	0
+107	-54.5	0
+108	-54.5	0
+109	-54.5	0
+110	-54.5	0
+111	-54.5	0
+112	-54.5	0
+113	-54.5	0
+114	-54.5	0
+115	-54.5	0
+116	-54.5	0
+117	-54.5	0
+118	-54.5	0
+119	-54.5	0
+120	-54.5	0
+121	-54.5	0
+122	-54.5	0
+123	-54.5	0
+124	-54.5	0
+125	-54.5	0
+126	-54.5	0
+127	-54.5	0
+128	-54.5	0
+129	-54.5	0
+130	-54.5	0
+131	-54.5	0
+132	-54.5	0
+133	-54.5	0
+134	-54.5	0
+135	-54.5	0
+136	-54.5	0
+137	-54.5	0
+138	-54.5	0
+139	-54.5	0
+140	-54.5	0
+141	-54.5	0
+142	-54.5	0
+143	-54.5	0
+144	-54.5	0
+145	-54.5	0
+146	-54.5	0
+147	-54.5	0
+148	-54.5	0
+149	-54.5	0
+150	-54.5	0
+151	-54.5	0
+152	-54.5	0
+153	-54.5	0
+154	-54.5	0
+155	-54.5	0
+156	-54.5	0
+157	-54.5	0
+158	-54.5	0
+159	-54.5	0
+160	-54.5	0
+161	-54.5	0
+162	-54.5	0
+163	-54.5	0
+164	-54.5	0
+165	-54.5	0
+166	-54.5	0
+167	-54.5	0
+168	-54.5	0
+169	-54.5	0
+170	-54.5	0
+171	-54.5	0
+172	-54.5	0
+173	-54.5	0
+174	-54.5	0
+175	-54.5	0
+176	-54.5	0
+177	-54.5	0
+178	-54.5	0
+179	-54.5	0
+180	-54.5	0
+181	-54.5	0
+182	-54.5	0
+183	-54.5	0
+184	-54.5	0
+185	-54.5	0
+186	-54.5	0
+187	-54.5	0
+188	-54.5	0
+189	-54.5	0
+190	-54.5	0
+191	-54.5	0
+192	-54.5	0
+193	-54.5	0
+194	-54.5	0
+195	-54.5	0
+196	-54.5	0
+197	-54.5	0
+198	-54.5	0
+199	-54.5	0
+200	-54.5	0
+201	-54.5	0
+202	-54.5	0
+203	-54.5	0
+204	-54.5	0
+205	-54.5	0
+206	-54.5	0
+207	-54.5	0
+208	-54.5	0
+209	-54.5	0
+210	-54.5	0
+211	-54.5	0
+212	-54.5	0
+213	-54.5	0
+214	-54.5	0
+215	-54.5	0
+216	-54.5	0
+217	-54.5	0
+218	-54.5	0
+219	-54.5	0
+220	-54.5	0
+221	-54.5	0
+222	-54.5	0
+223	-54.5	0
+224	-54.5	0
+225	-54.5	0
+226	-54.5	0
+227	-54.5	0
+228	-54.5	0
+229	-54.5	0
+230	-54.5	0
+231	-54.5	0
+232	-54.5	0
+233	-54.5	0
+234	-54.5	0
+235	-54.5	0
+236	-54.5	0
+237	-54.5	0
+238	-54.5	0
+239	-54.5	0
+240	-54.5	0
+241	-54.5	0
+242	-54.5	0
+243	-54.5	0
+244	-54.5	0
+245	-54.5	0
+246	-54.5	0
+247	-54.5	0
+248	-54.5	0
+249	-54.5	0
+250	-54.5	0
+251	-54.5	0
+252	-54.5	0
+253	-54.5	0
+254	-54.5	0
+255	-54.5	0
+256	-54.5	0
+257	-54.5	0
+258	-54.5	0
+259	-54.5	0
+260	-54.5	0
+261	-54.5	0
+262	-54.5	0
+263	-54.5	0
+264	-54.5	0
+265	-54.5	0
+266	-54.5	0
+267	-54.5	0
+268	-54.5	0
+269	-54.5	0
+270	-54.5	0
+271	-54.5	0
+272	-54.5	0
+273	-54.5	0
+274	-54.5	0
+275	-54.5	0
+276	-54.5	0
+277	-54.5	0
+278	-54.5	0
+279	-54.5	0
+280	-54.5	0
+281	-54.5	0
+282	-54.5	0
+283	-54.5	0
+284	-54.5	0
+285	-54.5	0
+286	-54.5	0
+287	-54.5	0
+288	-54.5	-0.098018
+289	-54.5	0
+290	-54.5	-0.2825
+291	-54.5	0
+292	-54.5	-0.89225
+293	-54.5	-1.0302
+294	-54.5	-0.2991
+295	-54.5	0
+296	-54.5	0
+297	-54.5	0
+298	-54.5	0
+299	-54.5	0
+300	-54.5	0
+301	-54.5	0
+302	-54.5	0
+303	-54.5	0
+304	-54.5	0
+305	-54.5	0
+306	-54.5	0
+307	-54.5	0
+308	-54.5	0
+309	-54.5	0
+310	-54.5	0
+311	-54.5	0
+312	-54.5	0
+313	-54.5	0
+314	-54.5	0
+315	-54.5	0
+316	-54.5	0
+317	-54.5	0
+318	-54.5	0
+319	-54.5	0
+320	-54.5	0
+321	-54.5	0
+322	-54.5	0
+323	-54.5	0
+324	-54.5	0
+325	-54.5	0
+326	-54.5	0
+327	-54.5	0
+328	-54.5	0
+329	-54.5	0
+330	-54.5	0
+331	-54.5	0
+332	-54.5	0
+333	-54.5	0
+334	-54.5	0
+335	-54.5	0
+336	-54.5	0
+337	-54.5	0
+338	-54.5	0
+339	-54.5	0
+340	-54.5	0
+341	-54.5	0
+342	-54.5	0
+343	-54.5	0
+344	-54.5	0
+345	-54.5	0
+346	-54.5	0
+347	-54.5	0
+348	-54.5	0
+349	-54.5	0
+350	-54.5	0
+351	-54.5	0
+352	-54.5	0
+353	-54.5	0
+354	-54.5	0
+355	-54.5	0
+356	-54.5	0
+357	-54.5	0
+358	-54.5	0
+359	-54.5	0
+360	-54.5	0
+0	-54	0
+1	-54	0
+2	-54	0
+3	-54	0
+4	-54	0
+5	-54	0
+6	-54	0
+7	-54	0
+8	-54	0
+9	-54	0
+10	-54	0
+11	-54	0
+12	-54	0
+13	-54	0
+14	-54	0
+15	-54	0
+16	-54	0
+17	-54	0
+18	-54	0
+19	-54	0
+20	-54	0
+21	-54	0
+22	-54	0
+23	-54	0
+24	-54	0
+25	-54	0
+26	-54	0
+27	-54	0
+28	-54	0
+29	-54	0
+30	-54	0
+31	-54	0
+32	-54	0
+33	-54	0
+34	-54	0
+35	-54	0
+36	-54	0
+37	-54	0
+38	-54	0
+39	-54	0
+40	-54	0
+41	-54	0
+42	-54	0
+43	-54	0
+44	-54	0
+45	-54	0
+46	-54	0
+47	-54	0
+48	-54	0
+49	-54	0
+50	-54	0
+51	-54	0
+52	-54	0
+53	-54	0
+54	-54	0
+55	-54	0
+56	-54	0
+57	-54	0
+58	-54	0
+59	-54	0
+60	-54	0
+61	-54	0
+62	-54	0
+63	-54	0
+64	-54	0
+65	-54	0
+66	-54	0
+67	-54	0
+68	-54	0
+69	-54	0
+70	-54	0
+71	-54	0
+72	-54	0
+73	-54	0
+74	-54	0
+75	-54	0
+76	-54	0
+77	-54	0
+78	-54	0
+79	-54	0
+80	-54	0
+81	-54	0
+82	-54	0
+83	-54	0
+84	-54	0
+85	-54	0
+86	-54	0
+87	-54	0
+88	-54	0
+89	-54	0
+90	-54	0
+91	-54	0
+92	-54	0
+93	-54	0
+94	-54	0
+95	-54	0
+96	-54	0
+97	-54	0
+98	-54	0
+99	-54	0
+100	-54	0
+101	-54	0
+102	-54	0
+103	-54	0
+104	-54	0
+105	-54	0
+106	-54	0
+107	-54	0
+108	-54	0
+109	-54	0
+110	-54	0
+111	-54	0
+112	-54	0
+113	-54	0
+114	-54	0
+115	-54	0
+116	-54	0
+117	-54	0
+118	-54	0
+119	-54	0
+120	-54	0
+121	-54	0
+122	-54	0
+123	-54	0
+124	-54	0
+125	-54	0
+126	-54	0
+127	-54	0
+128	-54	0
+129	-54	0
+130	-54	0
+131	-54	0
+132	-54	0
+133	-54	0
+134	-54	0
+135	-54	0
+136	-54	0
+137	-54	0
+138	-54	0
+139	-54	0
+140	-54	0
+141	-54	0
+142	-54	0
+143	-54	0
+144	-54	0
+145	-54	0
+146	-54	0
+147	-54	0
+148	-54	0
+149	-54	0
+150	-54	0
+151	-54	0
+152	-54	0
+153	-54	0
+154	-54	0
+155	-54	0
+156	-54	0
+157	-54	0
+158	-54	0
+159	-54	0
+160	-54	0
+161	-54	0
+162	-54	0
+163	-54	0
+164	-54	0
+165	-54	0
+166	-54	0
+167	-54	0
+168	-54	0
+169	-54	0
+170	-54	0
+171	-54	0
+172	-54	0
+173	-54	0
+174	-54	0
+175	-54	0
+176	-54	0
+177	-54	0
+178	-54	0
+179	-54	0
+180	-54	0
+181	-54	0
+182	-54	0
+183	-54	0
+184	-54	0
+185	-54	0
+186	-54	0
+187	-54	0
+188	-54	0
+189	-54	0
+190	-54	0
+191	-54	0
+192	-54	0
+193	-54	0
+194	-54	0
+195	-54	0
+196	-54	0
+197	-54	0
+198	-54	0
+199	-54	0
+200	-54	0
+201	-54	0
+202	-54	0
+203	-54	0
+204	-54	0
+205	-54	0
+206	-54	0
+207	-54	0
+208	-54	0
+209	-54	0
+210	-54	0
+211	-54	0
+212	-54	0
+213	-54	0
+214	-54	0
+215	-54	0
+216	-54	0
+217	-54	0
+218	-54	0
+219	-54	0
+220	-54	0
+221	-54	0
+222	-54	0
+223	-54	0
+224	-54	0
+225	-54	0
+226	-54	0
+227	-54	0
+228	-54	0
+229	-54	0
+230	-54	0
+231	-54	0
+232	-54	0
+233	-54	0
+234	-54	0
+235	-54	0
+236	-54	0
+237	-54	0
+238	-54	0
+239	-54	0
+240	-54	0
+241	-54	0
+242	-54	0
+243	-54	0
+244	-54	0
+245	-54	0
+246	-54	0
+247	-54	0
+248	-54	0
+249	-54	0
+250	-54	0
+251	-54	0
+252	-54	0
+253	-54	0
+254	-54	0
+255	-54	0
+256	-54	0
+257	-54	0
+258	-54	0
+259	-54	0
+260	-54	0
+261	-54	0
+262	-54	0
+263	-54	0
+264	-54	0
+265	-54	0
+266	-54	0
+267	-54	0
+268	-54	0
+269	-54	0
+270	-54	0
+271	-54	0
+272	-54	0
+273	-54	0
+274	-54	0
+275	-54	0
+276	-54	0
+277	-54	0
+278	-54	0
+279	-54	0
+280	-54	0
+281	-54	0
+282	-54	0
+283	-54	0
+284	-54	0
+285	-54	0
+286	-54	0
+287	-54	0
+288	-54	-0.038218
+289	-54	0
+290	-54	-0.34325
+291	-54	0
+292	-54	-0.77201
+293	-54	-0.64475
+294	-54	-0.15996
+295	-54	0
+296	-54	0
+297	-54	0
+298	-54	0
+299	-54	0
+300	-54	0
+301	-54	0
+302	-54	0
+303	-54	0
+304	-54	0
+305	-54	0
+306	-54	0
+307	-54	0
+308	-54	0
+309	-54	0
+310	-54	0
+311	-54	0
+312	-54	0
+313	-54	0
+314	-54	0
+315	-54	0
+316	-54	0
+317	-54	0
+318	-54	0
+319	-54	0
+320	-54	0
+321	-54	0
+322	-54	0
+323	-54	0
+324	-54	0
+325	-54	0
+326	-54	0
+327	-54	0
+328	-54	0
+329	-54	0
+330	-54	0
+331	-54	0
+332	-54	0
+333	-54	0
+334	-54	0
+335	-54	0
+336	-54	0
+337	-54	0
+338	-54	0
+339	-54	0
+340	-54	0
+341	-54	0
+342	-54	0
+343	-54	0
+344	-54	0
+345	-54	0
+346	-54	0
+347	-54	0
+348	-54	0
+349	-54	0
+350	-54	0
+351	-54	0
+352	-54	0
+353	-54	0
+354	-54	0
+355	-54	0
+356	-54	0
+357	-54	0
+358	-54	0
+359	-54	0
+360	-54	0
+0	-53.5	0
+1	-53.5	0
+2	-53.5	0
+3	-53.5	0
+4	-53.5	0
+5	-53.5	0
+6	-53.5	0
+7	-53.5	0
+8	-53.5	0
+9	-53.5	0
+10	-53.5	0
+11	-53.5	0
+12	-53.5	0
+13	-53.5	0
+14	-53.5	0
+15	-53.5	0
+16	-53.5	0
+17	-53.5	0
+18	-53.5	0
+19	-53.5	0
+20	-53.5	0
+21	-53.5	0
+22	-53.5	0
+23	-53.5	0
+24	-53.5	0
+25	-53.5	0
+26	-53.5	0
+27	-53.5	0
+28	-53.5	0
+29	-53.5	0
+30	-53.5	0
+31	-53.5	0
+32	-53.5	0
+33	-53.5	0
+34	-53.5	0
+35	-53.5	0
+36	-53.5	0
+37	-53.5	0
+38	-53.5	0
+39	-53.5	0
+40	-53.5	0
+41	-53.5	0
+42	-53.5	0
+43	-53.5	0
+44	-53.5	0
+45	-53.5	0
+46	-53.5	0
+47	-53.5	0
+48	-53.5	0
+49	-53.5	0
+50	-53.5	0
+51	-53.5	0
+52	-53.5	0
+53	-53.5	0
+54	-53.5	0
+55	-53.5	0
+56	-53.5	0
+57	-53.5	0
+58	-53.5	0
+59	-53.5	0
+60	-53.5	0
+61	-53.5	0
+62	-53.5	0
+63	-53.5	0
+64	-53.5	0
+65	-53.5	0
+66	-53.5	0
+67	-53.5	0
+68	-53.5	0
+69	-53.5	0
+70	-53.5	0
+71	-53.5	0
+72	-53.5	0
+73	-53.5	0
+74	-53.5	0
+75	-53.5	0
+76	-53.5	0
+77	-53.5	0
+78	-53.5	0
+79	-53.5	0
+80	-53.5	0
+81	-53.5	0
+82	-53.5	0
+83	-53.5	0
+84	-53.5	0
+85	-53.5	0
+86	-53.5	0
+87	-53.5	0
+88	-53.5	0
+89	-53.5	0
+90	-53.5	0
+91	-53.5	0
+92	-53.5	0
+93	-53.5	0
+94	-53.5	0
+95	-53.5	0
+96	-53.5	0
+97	-53.5	0
+98	-53.5	0
+99	-53.5	0
+100	-53.5	0
+101	-53.5	0
+102	-53.5	0
+103	-53.5	0
+104	-53.5	0
+105	-53.5	0
+106	-53.5	0
+107	-53.5	0
+108	-53.5	0
+109	-53.5	0
+110	-53.5	0
+111	-53.5	0
+112	-53.5	0
+113	-53.5	0
+114	-53.5	0
+115	-53.5	0
+116	-53.5	0
+117	-53.5	0
+118	-53.5	0
+119	-53.5	0
+120	-53.5	0
+121	-53.5	0
+122	-53.5	0
+123	-53.5	0
+124	-53.5	0
+125	-53.5	0
+126	-53.5	0
+127	-53.5	0
+128	-53.5	0
+129	-53.5	0
+130	-53.5	0
+131	-53.5	0
+132	-53.5	0
+133	-53.5	0
+134	-53.5	0
+135	-53.5	0
+136	-53.5	0
+137	-53.5	0
+138	-53.5	0
+139	-53.5	0
+140	-53.5	0
+141	-53.5	0
+142	-53.5	0
+143	-53.5	0
+144	-53.5	0
+145	-53.5	0
+146	-53.5	0
+147	-53.5	0
+148	-53.5	0
+149	-53.5	0
+150	-53.5	0
+151	-53.5	0
+152	-53.5	0
+153	-53.5	0
+154	-53.5	0
+155	-53.5	0
+156	-53.5	0
+157	-53.5	0
+158	-53.5	0
+159	-53.5	0
+160	-53.5	0
+161	-53.5	0
+162	-53.5	0
+163	-53.5	0
+164	-53.5	0
+165	-53.5	0
+166	-53.5	0
+167	-53.5	0
+168	-53.5	0
+169	-53.5	0
+170	-53.5	0
+171	-53.5	0
+172	-53.5	0
+173	-53.5	0
+174	-53.5	0
+175	-53.5	0
+176	-53.5	0
+177	-53.5	0
+178	-53.5	0
+179	-53.5	0
+180	-53.5	0
+181	-53.5	0
+182	-53.5	0
+183	-53.5	0
+184	-53.5	0
+185	-53.5	0
+186	-53.5	0
+187	-53.5	0
+188	-53.5	0
+189	-53.5	0
+190	-53.5	0
+191	-53.5	0
+192	-53.5	0
+193	-53.5	0
+194	-53.5	0
+195	-53.5	0
+196	-53.5	0
+197	-53.5	0
+198	-53.5	0
+199	-53.5	0
+200	-53.5	0
+201	-53.5	0
+202	-53.5	0
+203	-53.5	0
+204	-53.5	0
+205	-53.5	0
+206	-53.5	0
+207	-53.5	0
+208	-53.5	0
+209	-53.5	0
+210	-53.5	0
+211	-53.5	0
+212	-53.5	0
+213	-53.5	0
+214	-53.5	0
+215	-53.5	0
+216	-53.5	0
+217	-53.5	0
+218	-53.5	0
+219	-53.5	0
+220	-53.5	0
+221	-53.5	0
+222	-53.5	0
+223	-53.5	0
+224	-53.5	0
+225	-53.5	0
+226	-53.5	0
+227	-53.5	0
+228	-53.5	0
+229	-53.5	0
+230	-53.5	0
+231	-53.5	0
+232	-53.5	0
+233	-53.5	0
+234	-53.5	0
+235	-53.5	0
+236	-53.5	0
+237	-53.5	0
+238	-53.5	0
+239	-53.5	0
+240	-53.5	0
+241	-53.5	0
+242	-53.5	0
+243	-53.5	0
+244	-53.5	0
+245	-53.5	0
+246	-53.5	0
+247	-53.5	0
+248	-53.5	0
+249	-53.5	0
+250	-53.5	0
+251	-53.5	0
+252	-53.5	0
+253	-53.5	0
+254	-53.5	0
+255	-53.5	0
+256	-53.5	0
+257	-53.5	0
+258	-53.5	0
+259	-53.5	0
+260	-53.5	0
+261	-53.5	0
+262	-53.5	0
+263	-53.5	0
+264	-53.5	0
+265	-53.5	0
+266	-53.5	0
+267	-53.5	0
+268	-53.5	0
+269	-53.5	0
+270	-53.5	0
+271	-53.5	0
+272	-53.5	0
+273	-53.5	0
+274	-53.5	0
+275	-53.5	0
+276	-53.5	0
+277	-53.5	0
+278	-53.5	0
+279	-53.5	0
+280	-53.5	0
+281	-53.5	0
+282	-53.5	0
+283	-53.5	0
+284	-53.5	0
+285	-53.5	0
+286	-53.5	0
+287	-53.5	-0.040187
+288	-53.5	-1.3679
+289	-53.5	-1.6962
+290	-53.5	-0.24278
+291	-53.5	-1.2789
+292	-53.5	-0.067387
+293	-53.5	-0.025513
+294	-53.5	0
+295	-53.5	0
+296	-53.5	0
+297	-53.5	0
+298	-53.5	0
+299	-53.5	0
+300	-53.5	0
+301	-53.5	0
+302	-53.5	0
+303	-53.5	0
+304	-53.5	0
+305	-53.5	0
+306	-53.5	0
+307	-53.5	0
+308	-53.5	0
+309	-53.5	0
+310	-53.5	0
+311	-53.5	0
+312	-53.5	0
+313	-53.5	0
+314	-53.5	0
+315	-53.5	0
+316	-53.5	0
+317	-53.5	0
+318	-53.5	0
+319	-53.5	0
+320	-53.5	0
+321	-53.5	0
+322	-53.5	0
+323	-53.5	0
+324	-53.5	0
+325	-53.5	0
+326	-53.5	0
+327	-53.5	0
+328	-53.5	0
+329	-53.5	0
+330	-53.5	0
+331	-53.5	0
+332	-53.5	0
+333	-53.5	0
+334	-53.5	0
+335	-53.5	0
+336	-53.5	0
+337	-53.5	0
+338	-53.5	0
+339	-53.5	0
+340	-53.5	0
+341	-53.5	0
+342	-53.5	0
+343	-53.5	0
+344	-53.5	0
+345	-53.5	0
+346	-53.5	0
+347	-53.5	0
+348	-53.5	0
+349	-53.5	0
+350	-53.5	0
+351	-53.5	0
+352	-53.5	0
+353	-53.5	0
+354	-53.5	0
+355	-53.5	0
+356	-53.5	0
+357	-53.5	0
+358	-53.5	0
+359	-53.5	0
+360	-53.5	0
+0	-53	0
+1	-53	0
+2	-53	0
+3	-53	0
+4	-53	0
+5	-53	0
+6	-53	0
+7	-53	0
+8	-53	0
+9	-53	0
+10	-53	0
+11	-53	0
+12	-53	0
+13	-53	0
+14	-53	0
+15	-53	0
+16	-53	0
+17	-53	0
+18	-53	0
+19	-53	0
+20	-53	0
+21	-53	0
+22	-53	0
+23	-53	0
+24	-53	0
+25	-53	0
+26	-53	0
+27	-53	0
+28	-53	0
+29	-53	0
+30	-53	0
+31	-53	0
+32	-53	0
+33	-53	0
+34	-53	0
+35	-53	0
+36	-53	0
+37	-53	0
+38	-53	0
+39	-53	0
+40	-53	0
+41	-53	0
+42	-53	0
+43	-53	0
+44	-53	0
+45	-53	0
+46	-53	0
+47	-53	0
+48	-53	0
+49	-53	0
+50	-53	0
+51	-53	0
+52	-53	0
+53	-53	0
+54	-53	0
+55	-53	0
+56	-53	0
+57	-53	0
+58	-53	0
+59	-53	0
+60	-53	0
+61	-53	0
+62	-53	0
+63	-53	0
+64	-53	0
+65	-53	0
+66	-53	0
+67	-53	0
+68	-53	0
+69	-53	0
+70	-53	0
+71	-53	0
+72	-53	0
+73	-53	0
+74	-53	0
+75	-53	0
+76	-53	0
+77	-53	0
+78	-53	0
+79	-53	0
+80	-53	0
+81	-53	0
+82	-53	0
+83	-53	0
+84	-53	0
+85	-53	0
+86	-53	0
+87	-53	0
+88	-53	0
+89	-53	0
+90	-53	0
+91	-53	0
+92	-53	0
+93	-53	0
+94	-53	0
+95	-53	0
+96	-53	0
+97	-53	0
+98	-53	0
+99	-53	0
+100	-53	0
+101	-53	0
+102	-53	0
+103	-53	0
+104	-53	0
+105	-53	0
+106	-53	0
+107	-53	0
+108	-53	0
+109	-53	0
+110	-53	0
+111	-53	0
+112	-53	0
+113	-53	0
+114	-53	0
+115	-53	0
+116	-53	0
+117	-53	0
+118	-53	0
+119	-53	0
+120	-53	0
+121	-53	0
+122	-53	0
+123	-53	0
+124	-53	0
+125	-53	0
+126	-53	0
+127	-53	0
+128	-53	0
+129	-53	0
+130	-53	0
+131	-53	0
+132	-53	0
+133	-53	0
+134	-53	0
+135	-53	0
+136	-53	0
+137	-53	0
+138	-53	0
+139	-53	0
+140	-53	0
+141	-53	0
+142	-53	0
+143	-53	0
+144	-53	0
+145	-53	0
+146	-53	0
+147	-53	0
+148	-53	0
+149	-53	0
+150	-53	0
+151	-53	0
+152	-53	0
+153	-53	0
+154	-53	0
+155	-53	0
+156	-53	0
+157	-53	0
+158	-53	0
+159	-53	0
+160	-53	0
+161	-53	0
+162	-53	0
+163	-53	0
+164	-53	0
+165	-53	0
+166	-53	0
+167	-53	0
+168	-53	0
+169	-53	0
+170	-53	0
+171	-53	0
+172	-53	0
+173	-53	0
+174	-53	0
+175	-53	0
+176	-53	0
+177	-53	0
+178	-53	0
+179	-53	0
+180	-53	0
+181	-53	0
+182	-53	0
+183	-53	0
+184	-53	0
+185	-53	0
+186	-53	0
+187	-53	0
+188	-53	0
+189	-53	0
+190	-53	0
+191	-53	0
+192	-53	0
+193	-53	0
+194	-53	0
+195	-53	0
+196	-53	0
+197	-53	0
+198	-53	0
+199	-53	0
+200	-53	0
+201	-53	0
+202	-53	0
+203	-53	0
+204	-53	0
+205	-53	0
+206	-53	0
+207	-53	0
+208	-53	0
+209	-53	0
+210	-53	0
+211	-53	0
+212	-53	0
+213	-53	0
+214	-53	0
+215	-53	0
+216	-53	0
+217	-53	0
+218	-53	0
+219	-53	0
+220	-53	0
+221	-53	0
+222	-53	0
+223	-53	0
+224	-53	0
+225	-53	0
+226	-53	0
+227	-53	0
+228	-53	0
+229	-53	0
+230	-53	0
+231	-53	0
+232	-53	0
+233	-53	0
+234	-53	0
+235	-53	0
+236	-53	0
+237	-53	0
+238	-53	0
+239	-53	0
+240	-53	0
+241	-53	0
+242	-53	0
+243	-53	0
+244	-53	0
+245	-53	0
+246	-53	0
+247	-53	0
+248	-53	0
+249	-53	0
+250	-53	0
+251	-53	0
+252	-53	0
+253	-53	0
+254	-53	0
+255	-53	0
+256	-53	0
+257	-53	0
+258	-53	0
+259	-53	0
+260	-53	0
+261	-53	0
+262	-53	0
+263	-53	0
+264	-53	0
+265	-53	0
+266	-53	0
+267	-53	0
+268	-53	0
+269	-53	0
+270	-53	0
+271	-53	0
+272	-53	0
+273	-53	0
+274	-53	0
+275	-53	0
+276	-53	0
+277	-53	0
+278	-53	0
+279	-53	0
+280	-53	0
+281	-53	0
+282	-53	0
+283	-53	0
+284	-53	0
+285	-53	0
+286	-53	-0.26301
+287	-53	-0.18031
+288	-53	-1.9604
+289	-53	-4.0523
+290	-53	-2.6895
+291	-53	-0.74184
+292	-53	-0.21788
+293	-53	0
+294	-53	0
+295	-53	0
+296	-53	0
+297	-53	0
+298	-53	0
+299	-53	0
+300	-53	0
+301	-53	0
+302	-53	0
+303	-53	0
+304	-53	0
+305	-53	0
+306	-53	0
+307	-53	0
+308	-53	0
+309	-53	0
+310	-53	0
+311	-53	0
+312	-53	0
+313	-53	0
+314	-53	0
+315	-53	0
+316	-53	0
+317	-53	0
+318	-53	0
+319	-53	0
+320	-53	0
+321	-53	0
+322	-53	0
+323	-53	0
+324	-53	0
+325	-53	0
+326	-53	0
+327	-53	0
+328	-53	0
+329	-53	0
+330	-53	0
+331	-53	0
+332	-53	0
+333	-53	0
+334	-53	0
+335	-53	0
+336	-53	0
+337	-53	0
+338	-53	0
+339	-53	0
+340	-53	0
+341	-53	0
+342	-53	0
+343	-53	0
+344	-53	0
+345	-53	0
+346	-53	0
+347	-53	0
+348	-53	0
+349	-53	0
+350	-53	0
+351	-53	0
+352	-53	0
+353	-53	0
+354	-53	0
+355	-53	0
+356	-53	0
+357	-53	0
+358	-53	0
+359	-53	0
+360	-53	0
+0	-52.5	0
+1	-52.5	0
+2	-52.5	0
+3	-52.5	0
+4	-52.5	0
+5	-52.5	0
+6	-52.5	0
+7	-52.5	0
+8	-52.5	0
+9	-52.5	0
+10	-52.5	0
+11	-52.5	0
+12	-52.5	0
+13	-52.5	0
+14	-52.5	0
+15	-52.5	0
+16	-52.5	0
+17	-52.5	0
+18	-52.5	0
+19	-52.5	0
+20	-52.5	0
+21	-52.5	0
+22	-52.5	0
+23	-52.5	0
+24	-52.5	0
+25	-52.5	0
+26	-52.5	0
+27	-52.5	0
+28	-52.5	0
+29	-52.5	0
+30	-52.5	0
+31	-52.5	0
+32	-52.5	0
+33	-52.5	0
+34	-52.5	0
+35	-52.5	0
+36	-52.5	0
+37	-52.5	0
+38	-52.5	0
+39	-52.5	0
+40	-52.5	0
+41	-52.5	0
+42	-52.5	0
+43	-52.5	0
+44	-52.5	0
+45	-52.5	0
+46	-52.5	0
+47	-52.5	0
+48	-52.5	0
+49	-52.5	0
+50	-52.5	0
+51	-52.5	0
+52	-52.5	0
+53	-52.5	0
+54	-52.5	0
+55	-52.5	0
+56	-52.5	0
+57	-52.5	0
+58	-52.5	0
+59	-52.5	0
+60	-52.5	0
+61	-52.5	0
+62	-52.5	0
+63	-52.5	0
+64	-52.5	0
+65	-52.5	0
+66	-52.5	0
+67	-52.5	0
+68	-52.5	0
+69	-52.5	0
+70	-52.5	0
+71	-52.5	0
+72	-52.5	0
+73	-52.5	0
+74	-52.5	0
+75	-52.5	0
+76	-52.5	0
+77	-52.5	0
+78	-52.5	0
+79	-52.5	0
+80	-52.5	0
+81	-52.5	0
+82	-52.5	0
+83	-52.5	0
+84	-52.5	0
+85	-52.5	0
+86	-52.5	0
+87	-52.5	0
+88	-52.5	0
+89	-52.5	0
+90	-52.5	0
+91	-52.5	0
+92	-52.5	0
+93	-52.5	0
+94	-52.5	0
+95	-52.5	0
+96	-52.5	0
+97	-52.5	0
+98	-52.5	0
+99	-52.5	0
+100	-52.5	0
+101	-52.5	0
+102	-52.5	0
+103	-52.5	0
+104	-52.5	0
+105	-52.5	0
+106	-52.5	0
+107	-52.5	0
+108	-52.5	0
+109	-52.5	0
+110	-52.5	0
+111	-52.5	0
+112	-52.5	0
+113	-52.5	0
+114	-52.5	0
+115	-52.5	0
+116	-52.5	0
+117	-52.5	0
+118	-52.5	0
+119	-52.5	0
+120	-52.5	0
+121	-52.5	0
+122	-52.5	0
+123	-52.5	0
+124	-52.5	0
+125	-52.5	0
+126	-52.5	0
+127	-52.5	0
+128	-52.5	0
+129	-52.5	0
+130	-52.5	0
+131	-52.5	0
+132	-52.5	0
+133	-52.5	0
+134	-52.5	0
+135	-52.5	0
+136	-52.5	0
+137	-52.5	0
+138	-52.5	0
+139	-52.5	0
+140	-52.5	0
+141	-52.5	0
+142	-52.5	0
+143	-52.5	0
+144	-52.5	0
+145	-52.5	0
+146	-52.5	0
+147	-52.5	0
+148	-52.5	0
+149	-52.5	0
+150	-52.5	0
+151	-52.5	0
+152	-52.5	0
+153	-52.5	0
+154	-52.5	0
+155	-52.5	0
+156	-52.5	0
+157	-52.5	0
+158	-52.5	0
+159	-52.5	0
+160	-52.5	0
+161	-52.5	0
+162	-52.5	0
+163	-52.5	0
+164	-52.5	0
+165	-52.5	0
+166	-52.5	0
+167	-52.5	0
+168	-52.5	0
+169	-52.5	0
+170	-52.5	0
+171	-52.5	0
+172	-52.5	0
+173	-52.5	0
+174	-52.5	0
+175	-52.5	0
+176	-52.5	0
+177	-52.5	0
+178	-52.5	0
+179	-52.5	0
+180	-52.5	0
+181	-52.5	0
+182	-52.5	0
+183	-52.5	0
+184	-52.5	0
+185	-52.5	0
+186	-52.5	0
+187	-52.5	0
+188	-52.5	0
+189	-52.5	0
+190	-52.5	0
+191	-52.5	0
+192	-52.5	0
+193	-52.5	0
+194	-52.5	0
+195	-52.5	0
+196	-52.5	0
+197	-52.5	0
+198	-52.5	0
+199	-52.5	0
+200	-52.5	0
+201	-52.5	0
+202	-52.5	0
+203	-52.5	0
+204	-52.5	0
+205	-52.5	0
+206	-52.5	0
+207	-52.5	0
+208	-52.5	0
+209	-52.5	0
+210	-52.5	0
+211	-52.5	0
+212	-52.5	0
+213	-52.5	0
+214	-52.5	0
+215	-52.5	0
+216	-52.5	0
+217	-52.5	0
+218	-52.5	0
+219	-52.5	0
+220	-52.5	0
+221	-52.5	0
+222	-52.5	0
+223	-52.5	0
+224	-52.5	0
+225	-52.5	0
+226	-52.5	0
+227	-52.5	0
+228	-52.5	0
+229	-52.5	0
+230	-52.5	0
+231	-52.5	0
+232	-52.5	0
+233	-52.5	0
+234	-52.5	0
+235	-52.5	0
+236	-52.5	0
+237	-52.5	0
+238	-52.5	0
+239	-52.5	0
+240	-52.5	0
+241	-52.5	0
+242	-52.5	0
+243	-52.5	0
+244	-52.5	0
+245	-52.5	0
+246	-52.5	0
+247	-52.5	0
+248	-52.5	0
+249	-52.5	0
+250	-52.5	0
+251	-52.5	0
+252	-52.5	0
+253	-52.5	0
+254	-52.5	0
+255	-52.5	0
+256	-52.5	0
+257	-52.5	0
+258	-52.5	0
+259	-52.5	0
+260	-52.5	0
+261	-52.5	0
+262	-52.5	0
+263	-52.5	0
+264	-52.5	0
+265	-52.5	0
+266	-52.5	0
+267	-52.5	0
+268	-52.5	0
+269	-52.5	0
+270	-52.5	0
+271	-52.5	0
+272	-52.5	0
+273	-52.5	0
+274	-52.5	0
+275	-52.5	0
+276	-52.5	0
+277	-52.5	0
+278	-52.5	0
+279	-52.5	0
+280	-52.5	0
+281	-52.5	0
+282	-52.5	0
+283	-52.5	0
+284	-52.5	0
+285	-52.5	-0.14749
+286	-52.5	-0.96197
+287	-52.5	-0.1917
+288	-52.5	-2.889
+289	-52.5	-4.7163
+290	-52.5	-2.8893
+291	-52.5	-0.0020559
+292	-52.5	-0.23412
+293	-52.5	0
+294	-52.5	0
+295	-52.5	0
+296	-52.5	0
+297	-52.5	0
+298	-52.5	0
+299	-52.5	0
+300	-52.5	0
+301	-52.5	0
+302	-52.5	0
+303	-52.5	0
+304	-52.5	0
+305	-52.5	0
+306	-52.5	0
+307	-52.5	0
+308	-52.5	0
+309	-52.5	0
+310	-52.5	0
+311	-52.5	0
+312	-52.5	0
+313	-52.5	0
+314	-52.5	0
+315	-52.5	0
+316	-52.5	0
+317	-52.5	0
+318	-52.5	0
+319	-52.5	0
+320	-52.5	0
+321	-52.5	0
+322	-52.5	0
+323	-52.5	0
+324	-52.5	0
+325	-52.5	0
+326	-52.5	0
+327	-52.5	0
+328	-52.5	0
+329	-52.5	0
+330	-52.5	0
+331	-52.5	0
+332	-52.5	0
+333	-52.5	0
+334	-52.5	0
+335	-52.5	0
+336	-52.5	0
+337	-52.5	0
+338	-52.5	0
+339	-52.5	0
+340	-52.5	0
+341	-52.5	0
+342	-52.5	0
+343	-52.5	0
+344	-52.5	0
+345	-52.5	0
+346	-52.5	0
+347	-52.5	0
+348	-52.5	0
+349	-52.5	0
+350	-52.5	0
+351	-52.5	0
+352	-52.5	0
+353	-52.5	0
+354	-52.5	0
+355	-52.5	0
+356	-52.5	0
+357	-52.5	0
+358	-52.5	0
+359	-52.5	0
+360	-52.5	0
+0	-52	0
+1	-52	0
+2	-52	0
+3	-52	0
+4	-52	0
+5	-52	0
+6	-52	0
+7	-52	0
+8	-52	0
+9	-52	0
+10	-52	0
+11	-52	0
+12	-52	0
+13	-52	0
+14	-52	0
+15	-52	0
+16	-52	0
+17	-52	0
+18	-52	0
+19	-52	0
+20	-52	0
+21	-52	0
+22	-52	0
+23	-52	0
+24	-52	0
+25	-52	0
+26	-52	0
+27	-52	0
+28	-52	0
+29	-52	0
+30	-52	0
+31	-52	0
+32	-52	0
+33	-52	0
+34	-52	0
+35	-52	0
+36	-52	0
+37	-52	0
+38	-52	0
+39	-52	0
+40	-52	0
+41	-52	0
+42	-52	0
+43	-52	0
+44	-52	0
+45	-52	0
+46	-52	0
+47	-52	0
+48	-52	0
+49	-52	0
+50	-52	0
+51	-52	0
+52	-52	0
+53	-52	0
+54	-52	0
+55	-52	0
+56	-52	0
+57	-52	0
+58	-52	0
+59	-52	0
+60	-52	0
+61	-52	0
+62	-52	0
+63	-52	0
+64	-52	0
+65	-52	0
+66	-52	0
+67	-52	0
+68	-52	0
+69	-52	0
+70	-52	0
+71	-52	0
+72	-52	0
+73	-52	0
+74	-52	0
+75	-52	0
+76	-52	0
+77	-52	0
+78	-52	0
+79	-52	0
+80	-52	0
+81	-52	0
+82	-52	0
+83	-52	0
+84	-52	0
+85	-52	0
+86	-52	0
+87	-52	0
+88	-52	0
+89	-52	0
+90	-52	0
+91	-52	0
+92	-52	0
+93	-52	0
+94	-52	0
+95	-52	0
+96	-52	0
+97	-52	0
+98	-52	0
+99	-52	0
+100	-52	0
+101	-52	0
+102	-52	0
+103	-52	0
+104	-52	0
+105	-52	0
+106	-52	0
+107	-52	0
+108	-52	0
+109	-52	0
+110	-52	0
+111	-52	0
+112	-52	0
+113	-52	0
+114	-52	0
+115	-52	0
+116	-52	0
+117	-52	0
+118	-52	0
+119	-52	0
+120	-52	0
+121	-52	0
+122	-52	0
+123	-52	0
+124	-52	0
+125	-52	0
+126	-52	0
+127	-52	0
+128	-52	0
+129	-52	0
+130	-52	0
+131	-52	0
+132	-52	0
+133	-52	0
+134	-52	0
+135	-52	0
+136	-52	0
+137	-52	0
+138	-52	0
+139	-52	0
+140	-52	0
+141	-52	0
+142	-52	0
+143	-52	0
+144	-52	0
+145	-52	0
+146	-52	0
+147	-52	0
+148	-52	0
+149	-52	0
+150	-52	0
+151	-52	0
+152	-52	0
+153	-52	0
+154	-52	0
+155	-52	0
+156	-52	0
+157	-52	0
+158	-52	0
+159	-52	0
+160	-52	0
+161	-52	0
+162	-52	0
+163	-52	0
+164	-52	0
+165	-52	0
+166	-52	0
+167	-52	0
+168	-52	0
+169	-52	0
+170	-52	0
+171	-52	0
+172	-52	0
+173	-52	0
+174	-52	0
+175	-52	0
+176	-52	0
+177	-52	0
+178	-52	0
+179	-52	0
+180	-52	0
+181	-52	0
+182	-52	0
+183	-52	0
+184	-52	0
+185	-52	0
+186	-52	0
+187	-52	0
+188	-52	0
+189	-52	0
+190	-52	0
+191	-52	0
+192	-52	0
+193	-52	0
+194	-52	0
+195	-52	0
+196	-52	0
+197	-52	0
+198	-52	0
+199	-52	0
+200	-52	0
+201	-52	0
+202	-52	0
+203	-52	0
+204	-52	0
+205	-52	0
+206	-52	0
+207	-52	0
+208	-52	0
+209	-52	0
+210	-52	0
+211	-52	0
+212	-52	0
+213	-52	0
+214	-52	0
+215	-52	0
+216	-52	0
+217	-52	0
+218	-52	0
+219	-52	0
+220	-52	0
+221	-52	0
+222	-52	0
+223	-52	0
+224	-52	0
+225	-52	0
+226	-52	0
+227	-52	0
+228	-52	0
+229	-52	0
+230	-52	0
+231	-52	0
+232	-52	0
+233	-52	0
+234	-52	0
+235	-52	0
+236	-52	0
+237	-52	0
+238	-52	0
+239	-52	0
+240	-52	0
+241	-52	0
+242	-52	0
+243	-52	0
+244	-52	0
+245	-52	0
+246	-52	0
+247	-52	0
+248	-52	0
+249	-52	0
+250	-52	0
+251	-52	0
+252	-52	0
+253	-52	0
+254	-52	0
+255	-52	0
+256	-52	0
+257	-52	0
+258	-52	0
+259	-52	0
+260	-52	0
+261	-52	0
+262	-52	0
+263	-52	0
+264	-52	0
+265	-52	0
+266	-52	0
+267	-52	0
+268	-52	0
+269	-52	0
+270	-52	0
+271	-52	0
+272	-52	0
+273	-52	0
+274	-52	0
+275	-52	0
+276	-52	0
+277	-52	0
+278	-52	0
+279	-52	0
+280	-52	0
+281	-52	0
+282	-52	0
+283	-52	0
+284	-52	0
+285	-52	-0.23504
+286	-52	-0.35464
+287	-52	-0.9328
+288	-52	-3.6358
+289	-52	-5.0902
+290	-52	-3.1379
+291	-52	-0.29284
+292	-52	-0.04512
+293	-52	0
+294	-52	0
+295	-52	0
+296	-52	0
+297	-52	0
+298	-52	0
+299	-52	0
+300	-52	0.00522
+301	-52	0.0023048
+302	-52	0.00119
+303	-52	0
+304	-52	0
+305	-52	0
+306	-52	0
+307	-52	0
+308	-52	0
+309	-52	0
+310	-52	0
+311	-52	0
+312	-52	0
+313	-52	0
+314	-52	0
+315	-52	0
+316	-52	0
+317	-52	0
+318	-52	0
+319	-52	0
+320	-52	0
+321	-52	0
+322	-52	0
+323	-52	0
+324	-52	0
+325	-52	0
+326	-52	0
+327	-52	0
+328	-52	0
+329	-52	0
+330	-52	0
+331	-52	0
+332	-52	0
+333	-52	0
+334	-52	0
+335	-52	0
+336	-52	0
+337	-52	0
+338	-52	0
+339	-52	0
+340	-52	0
+341	-52	0
+342	-52	0
+343	-52	0
+344	-52	0
+345	-52	0
+346	-52	0
+347	-52	0
+348	-52	0
+349	-52	0
+350	-52	0
+351	-52	0
+352	-52	0
+353	-52	0
+354	-52	0
+355	-52	0
+356	-52	0
+357	-52	0
+358	-52	0
+359	-52	0
+360	-52	0
+0	-51.5	0
+1	-51.5	0
+2	-51.5	0
+3	-51.5	0
+4	-51.5	0
+5	-51.5	0
+6	-51.5	0
+7	-51.5	0
+8	-51.5	0
+9	-51.5	0
+10	-51.5	0
+11	-51.5	0
+12	-51.5	0
+13	-51.5	0
+14	-51.5	0
+15	-51.5	0
+16	-51.5	0
+17	-51.5	0
+18	-51.5	0
+19	-51.5	0
+20	-51.5	0
+21	-51.5	0
+22	-51.5	0
+23	-51.5	0
+24	-51.5	0
+25	-51.5	0
+26	-51.5	0
+27	-51.5	0
+28	-51.5	0
+29	-51.5	0
+30	-51.5	0
+31	-51.5	0
+32	-51.5	0
+33	-51.5	0
+34	-51.5	0
+35	-51.5	0
+36	-51.5	0
+37	-51.5	0
+38	-51.5	0
+39	-51.5	0
+40	-51.5	0
+41	-51.5	0
+42	-51.5	0
+43	-51.5	0
+44	-51.5	0
+45	-51.5	0
+46	-51.5	0
+47	-51.5	0
+48	-51.5	0
+49	-51.5	0
+50	-51.5	0
+51	-51.5	0
+52	-51.5	0
+53	-51.5	0
+54	-51.5	0
+55	-51.5	0
+56	-51.5	0
+57	-51.5	0
+58	-51.5	0
+59	-51.5	0
+60	-51.5	0
+61	-51.5	0
+62	-51.5	0
+63	-51.5	0
+64	-51.5	0
+65	-51.5	0
+66	-51.5	0
+67	-51.5	0
+68	-51.5	0
+69	-51.5	0
+70	-51.5	0
+71	-51.5	0
+72	-51.5	0
+73	-51.5	0
+74	-51.5	0
+75	-51.5	0
+76	-51.5	0
+77	-51.5	0
+78	-51.5	0
+79	-51.5	0
+80	-51.5	0
+81	-51.5	0
+82	-51.5	0
+83	-51.5	0
+84	-51.5	0
+85	-51.5	0
+86	-51.5	0
+87	-51.5	0
+88	-51.5	0
+89	-51.5	0
+90	-51.5	0
+91	-51.5	0
+92	-51.5	0
+93	-51.5	0
+94	-51.5	0
+95	-51.5	0
+96	-51.5	0
+97	-51.5	0
+98	-51.5	0
+99	-51.5	0
+100	-51.5	0
+101	-51.5	0
+102	-51.5	0
+103	-51.5	0
+104	-51.5	0
+105	-51.5	0
+106	-51.5	0
+107	-51.5	0
+108	-51.5	0
+109	-51.5	0
+110	-51.5	0
+111	-51.5	0
+112	-51.5	0
+113	-51.5	0
+114	-51.5	0
+115	-51.5	0
+116	-51.5	0
+117	-51.5	0
+118	-51.5	0
+119	-51.5	0
+120	-51.5	0
+121	-51.5	0
+122	-51.5	0
+123	-51.5	0
+124	-51.5	0
+125	-51.5	0
+126	-51.5	0
+127	-51.5	0
+128	-51.5	0
+129	-51.5	0
+130	-51.5	0
+131	-51.5	0
+132	-51.5	0
+133	-51.5	0
+134	-51.5	0
+135	-51.5	0
+136	-51.5	0
+137	-51.5	0
+138	-51.5	0
+139	-51.5	0
+140	-51.5	0
+141	-51.5	0
+142	-51.5	0
+143	-51.5	0
+144	-51.5	0
+145	-51.5	0
+146	-51.5	0
+147	-51.5	0
+148	-51.5	0
+149	-51.5	0
+150	-51.5	0
+151	-51.5	0
+152	-51.5	0
+153	-51.5	0
+154	-51.5	0
+155	-51.5	0
+156	-51.5	0
+157	-51.5	0
+158	-51.5	0
+159	-51.5	0
+160	-51.5	0
+161	-51.5	0
+162	-51.5	0
+163	-51.5	0
+164	-51.5	0
+165	-51.5	0
+166	-51.5	0
+167	-51.5	0
+168	-51.5	0
+169	-51.5	0
+170	-51.5	0
+171	-51.5	0
+172	-51.5	0
+173	-51.5	0
+174	-51.5	0
+175	-51.5	0
+176	-51.5	0
+177	-51.5	0
+178	-51.5	0
+179	-51.5	0
+180	-51.5	0
+181	-51.5	0
+182	-51.5	0
+183	-51.5	0
+184	-51.5	0
+185	-51.5	0
+186	-51.5	0
+187	-51.5	0
+188	-51.5	0
+189	-51.5	0
+190	-51.5	0
+191	-51.5	0
+192	-51.5	0
+193	-51.5	0
+194	-51.5	0
+195	-51.5	0
+196	-51.5	0
+197	-51.5	0
+198	-51.5	0
+199	-51.5	0
+200	-51.5	0
+201	-51.5	0
+202	-51.5	0
+203	-51.5	0
+204	-51.5	0
+205	-51.5	0
+206	-51.5	0
+207	-51.5	0
+208	-51.5	0
+209	-51.5	0
+210	-51.5	0
+211	-51.5	0
+212	-51.5	0
+213	-51.5	0
+214	-51.5	0
+215	-51.5	0
+216	-51.5	0
+217	-51.5	0
+218	-51.5	0
+219	-51.5	0
+220	-51.5	0
+221	-51.5	0
+222	-51.5	0
+223	-51.5	0
+224	-51.5	0
+225	-51.5	0
+226	-51.5	0
+227	-51.5	0
+228	-51.5	0
+229	-51.5	0
+230	-51.5	0
+231	-51.5	0
+232	-51.5	0
+233	-51.5	0
+234	-51.5	0
+235	-51.5	0
+236	-51.5	0
+237	-51.5	0
+238	-51.5	0
+239	-51.5	0
+240	-51.5	0
+241	-51.5	0
+242	-51.5	0
+243	-51.5	0
+244	-51.5	0
+245	-51.5	0
+246	-51.5	0
+247	-51.5	0
+248	-51.5	0
+249	-51.5	0
+250	-51.5	0
+251	-51.5	0
+252	-51.5	0
+253	-51.5	0
+254	-51.5	0
+255	-51.5	0
+256	-51.5	0
+257	-51.5	0
+258	-51.5	0
+259	-51.5	0
+260	-51.5	0
+261	-51.5	0
+262	-51.5	0
+263	-51.5	0
+264	-51.5	0
+265	-51.5	0
+266	-51.5	0
+267	-51.5	0
+268	-51.5	0
+269	-51.5	0
+270	-51.5	0
+271	-51.5	0
+272	-51.5	0
+273	-51.5	0
+274	-51.5	0
+275	-51.5	0
+276	-51.5	0
+277	-51.5	0
+278	-51.5	0
+279	-51.5	0
+280	-51.5	0
+281	-51.5	0
+282	-51.5	0
+283	-51.5	0
+284	-51.5	0
+285	-51.5	0
+286	-51.5	0
+287	-51.5	-1.1453
+288	-51.5	-5.461
+289	-51.5	-5.2573
+290	-51.5	-3.0097
+291	-51.5	-0.40866
+292	-51.5	0
+293	-51.5	0
+294	-51.5	0
+295	-51.5	0
+296	-51.5	0
+297	-51.5	0
+298	-51.5	0
+299	-51.5	0
+300	-51.5	0.0033677
+301	-51.5	0.0031425
+302	-51.5	0.0055297
+303	-51.5	0
+304	-51.5	0
+305	-51.5	0
+306	-51.5	0
+307	-51.5	0
+308	-51.5	0
+309	-51.5	0
+310	-51.5	0
+311	-51.5	0
+312	-51.5	0
+313	-51.5	0
+314	-51.5	0
+315	-51.5	0
+316	-51.5	0
+317	-51.5	0
+318	-51.5	0
+319	-51.5	0
+320	-51.5	0
+321	-51.5	0
+322	-51.5	0
+323	-51.5	0
+324	-51.5	0
+325	-51.5	0
+326	-51.5	0
+327	-51.5	0
+328	-51.5	0
+329	-51.5	0
+330	-51.5	0
+331	-51.5	0
+332	-51.5	0
+333	-51.5	0
+334	-51.5	0
+335	-51.5	0
+336	-51.5	0
+337	-51.5	0
+338	-51.5	0
+339	-51.5	0
+340	-51.5	0
+341	-51.5	0
+342	-51.5	0
+343	-51.5	0
+344	-51.5	0
+345	-51.5	0
+346	-51.5	0
+347	-51.5	0
+348	-51.5	0
+349	-51.5	0
+350	-51.5	0
+351	-51.5	0
+352	-51.5	0
+353	-51.5	0
+354	-51.5	0
+355	-51.5	0
+356	-51.5	0
+357	-51.5	0
+358	-51.5	0
+359	-51.5	0
+360	-51.5	0
+0	-51	0
+1	-51	0
+2	-51	0
+3	-51	0
+4	-51	0
+5	-51	0
+6	-51	0
+7	-51	0
+8	-51	0
+9	-51	0
+10	-51	0
+11	-51	0
+12	-51	0
+13	-51	0
+14	-51	0
+15	-51	0
+16	-51	0
+17	-51	0
+18	-51	0
+19	-51	0
+20	-51	0
+21	-51	0
+22	-51	0
+23	-51	0
+24	-51	0
+25	-51	0
+26	-51	0
+27	-51	0
+28	-51	0
+29	-51	0
+30	-51	0
+31	-51	0
+32	-51	0
+33	-51	0
+34	-51	0
+35	-51	0
+36	-51	0
+37	-51	0
+38	-51	0
+39	-51	0
+40	-51	0
+41	-51	0
+42	-51	0
+43	-51	0
+44	-51	0
+45	-51	0
+46	-51	0
+47	-51	0
+48	-51	0
+49	-51	0
+50	-51	0
+51	-51	0
+52	-51	0
+53	-51	0
+54	-51	0
+55	-51	0
+56	-51	0
+57	-51	0
+58	-51	0
+59	-51	0
+60	-51	0
+61	-51	0
+62	-51	0
+63	-51	0
+64	-51	0
+65	-51	0
+66	-51	0
+67	-51	0
+68	-51	0
+69	-51	0
+70	-51	0
+71	-51	0
+72	-51	0
+73	-51	0
+74	-51	0
+75	-51	0
+76	-51	0
+77	-51	0
+78	-51	0
+79	-51	0
+80	-51	0
+81	-51	0
+82	-51	0
+83	-51	0
+84	-51	0
+85	-51	0
+86	-51	0
+87	-51	0
+88	-51	0
+89	-51	0
+90	-51	0
+91	-51	0
+92	-51	0
+93	-51	0
+94	-51	0
+95	-51	0
+96	-51	0
+97	-51	0
+98	-51	0
+99	-51	0
+100	-51	0
+101	-51	0
+102	-51	0
+103	-51	0
+104	-51	0
+105	-51	0
+106	-51	0
+107	-51	0
+108	-51	0
+109	-51	0
+110	-51	0
+111	-51	0
+112	-51	0
+113	-51	0
+114	-51	0
+115	-51	0
+116	-51	0
+117	-51	0
+118	-51	0
+119	-51	0
+120	-51	0
+121	-51	0
+122	-51	0
+123	-51	0
+124	-51	0
+125	-51	0
+126	-51	0
+127	-51	0
+128	-51	0
+129	-51	0
+130	-51	0
+131	-51	0
+132	-51	0
+133	-51	0
+134	-51	0
+135	-51	0
+136	-51	0
+137	-51	0
+138	-51	0
+139	-51	0
+140	-51	0
+141	-51	0
+142	-51	0
+143	-51	0
+144	-51	0
+145	-51	0
+146	-51	0
+147	-51	0
+148	-51	0
+149	-51	0
+150	-51	0
+151	-51	0
+152	-51	0
+153	-51	0
+154	-51	0
+155	-51	0
+156	-51	0
+157	-51	0
+158	-51	0
+159	-51	0
+160	-51	0
+161	-51	0
+162	-51	0
+163	-51	0
+164	-51	0
+165	-51	0
+166	-51	0
+167	-51	0
+168	-51	0
+169	-51	0
+170	-51	0
+171	-51	0
+172	-51	0
+173	-51	0
+174	-51	0
+175	-51	0
+176	-51	0
+177	-51	0
+178	-51	0
+179	-51	0
+180	-51	0
+181	-51	0
+182	-51	0
+183	-51	0
+184	-51	0
+185	-51	0
+186	-51	0
+187	-51	0
+188	-51	0
+189	-51	0
+190	-51	0
+191	-51	0
+192	-51	0
+193	-51	0
+194	-51	0
+195	-51	0
+196	-51	0
+197	-51	0
+198	-51	0
+199	-51	0
+200	-51	0
+201	-51	0
+202	-51	0
+203	-51	0
+204	-51	0
+205	-51	0
+206	-51	0
+207	-51	0
+208	-51	0
+209	-51	0
+210	-51	0
+211	-51	0
+212	-51	0
+213	-51	0
+214	-51	0
+215	-51	0
+216	-51	0
+217	-51	0
+218	-51	0
+219	-51	0
+220	-51	0
+221	-51	0
+222	-51	0
+223	-51	0
+224	-51	0
+225	-51	0
+226	-51	0
+227	-51	0
+228	-51	0
+229	-51	0
+230	-51	0
+231	-51	0
+232	-51	0
+233	-51	0
+234	-51	0
+235	-51	0
+236	-51	0
+237	-51	0
+238	-51	0
+239	-51	0
+240	-51	0
+241	-51	0
+242	-51	0
+243	-51	0
+244	-51	0
+245	-51	0
+246	-51	0
+247	-51	0
+248	-51	0
+249	-51	0
+250	-51	0
+251	-51	0
+252	-51	0
+253	-51	0
+254	-51	0
+255	-51	0
+256	-51	0
+257	-51	0
+258	-51	0
+259	-51	0
+260	-51	0
+261	-51	0
+262	-51	0
+263	-51	0
+264	-51	0
+265	-51	0
+266	-51	0
+267	-51	0
+268	-51	0
+269	-51	0
+270	-51	0
+271	-51	0
+272	-51	0
+273	-51	0
+274	-51	0
+275	-51	0
+276	-51	0
+277	-51	0
+278	-51	0
+279	-51	0
+280	-51	0
+281	-51	0
+282	-51	0
+283	-51	0
+284	-51	0
+285	-51	0
+286	-51	0
+287	-51	0
+288	-51	-3.5619
+289	-51	-5.4882
+290	-51	-3.1056
+291	-51	0
+292	-51	0
+293	-51	0
+294	-51	0
+295	-51	0
+296	-51	0
+297	-51	0
+298	-51	0
+299	-51	0
+300	-51	0
+301	-51	0.00020084
+302	-51	0.0034546
+303	-51	0
+304	-51	0
+305	-51	0
+306	-51	0
+307	-51	0
+308	-51	0
+309	-51	0
+310	-51	0
+311	-51	0
+312	-51	0
+313	-51	0
+314	-51	0
+315	-51	0
+316	-51	0
+317	-51	0
+318	-51	0
+319	-51	0
+320	-51	0
+321	-51	0
+322	-51	0
+323	-51	0
+324	-51	0
+325	-51	0
+326	-51	0
+327	-51	0
+328	-51	0
+329	-51	0
+330	-51	0
+331	-51	0
+332	-51	0
+333	-51	0
+334	-51	0
+335	-51	0
+336	-51	0
+337	-51	0
+338	-51	0
+339	-51	0
+340	-51	0
+341	-51	0
+342	-51	0
+343	-51	0
+344	-51	0
+345	-51	0
+346	-51	0
+347	-51	0
+348	-51	0
+349	-51	0
+350	-51	0
+351	-51	0
+352	-51	0
+353	-51	0
+354	-51	0
+355	-51	0
+356	-51	0
+357	-51	0
+358	-51	0
+359	-51	0
+360	-51	0
+0	-50.5	0
+1	-50.5	0
+2	-50.5	0
+3	-50.5	0
+4	-50.5	0
+5	-50.5	0
+6	-50.5	0
+7	-50.5	0
+8	-50.5	0
+9	-50.5	0
+10	-50.5	0
+11	-50.5	0
+12	-50.5	0
+13	-50.5	0
+14	-50.5	0
+15	-50.5	0
+16	-50.5	0
+17	-50.5	0
+18	-50.5	0
+19	-50.5	0
+20	-50.5	0
+21	-50.5	0
+22	-50.5	0
+23	-50.5	0
+24	-50.5	0
+25	-50.5	0
+26	-50.5	0
+27	-50.5	0
+28	-50.5	0
+29	-50.5	0
+30	-50.5	0
+31	-50.5	0
+32	-50.5	0
+33	-50.5	0
+34	-50.5	0
+35	-50.5	0
+36	-50.5	0
+37	-50.5	0
+38	-50.5	0
+39	-50.5	0
+40	-50.5	0
+41	-50.5	0
+42	-50.5	0
+43	-50.5	0
+44	-50.5	0
+45	-50.5	0
+46	-50.5	0
+47	-50.5	0
+48	-50.5	0
+49	-50.5	0
+50	-50.5	0
+51	-50.5	0
+52	-50.5	0
+53	-50.5	0
+54	-50.5	0
+55	-50.5	0
+56	-50.5	0
+57	-50.5	0
+58	-50.5	0
+59	-50.5	0
+60	-50.5	0
+61	-50.5	0
+62	-50.5	0
+63	-50.5	0
+64	-50.5	0
+65	-50.5	0
+66	-50.5	0
+67	-50.5	0
+68	-50.5	0
+69	-50.5	0
+70	-50.5	0
+71	-50.5	0
+72	-50.5	0
+73	-50.5	0
+74	-50.5	0
+75	-50.5	0
+76	-50.5	0
+77	-50.5	0
+78	-50.5	0
+79	-50.5	0
+80	-50.5	0
+81	-50.5	0
+82	-50.5	0
+83	-50.5	0
+84	-50.5	0
+85	-50.5	0
+86	-50.5	0
+87	-50.5	0
+88	-50.5	0
+89	-50.5	0
+90	-50.5	0
+91	-50.5	0
+92	-50.5	0
+93	-50.5	0
+94	-50.5	0
+95	-50.5	0
+96	-50.5	0
+97	-50.5	0
+98	-50.5	0
+99	-50.5	0
+100	-50.5	0
+101	-50.5	0
+102	-50.5	0
+103	-50.5	0
+104	-50.5	0
+105	-50.5	0
+106	-50.5	0
+107	-50.5	0
+108	-50.5	0
+109	-50.5	0
+110	-50.5	0
+111	-50.5	0
+112	-50.5	0
+113	-50.5	0
+114	-50.5	0
+115	-50.5	0
+116	-50.5	0
+117	-50.5	0
+118	-50.5	0
+119	-50.5	0
+120	-50.5	0
+121	-50.5	0
+122	-50.5	0
+123	-50.5	0
+124	-50.5	0
+125	-50.5	0
+126	-50.5	0
+127	-50.5	0
+128	-50.5	0
+129	-50.5	0
+130	-50.5	0
+131	-50.5	0
+132	-50.5	0
+133	-50.5	0
+134	-50.5	0
+135	-50.5	0
+136	-50.5	0
+137	-50.5	0
+138	-50.5	0
+139	-50.5	0
+140	-50.5	0
+141	-50.5	0
+142	-50.5	0
+143	-50.5	0
+144	-50.5	0
+145	-50.5	0
+146	-50.5	0
+147	-50.5	0
+148	-50.5	0
+149	-50.5	0
+150	-50.5	0
+151	-50.5	0
+152	-50.5	0
+153	-50.5	0
+154	-50.5	0
+155	-50.5	0
+156	-50.5	0
+157	-50.5	0
+158	-50.5	0
+159	-50.5	0
+160	-50.5	0
+161	-50.5	0
+162	-50.5	0
+163	-50.5	0
+164	-50.5	0
+165	-50.5	0
+166	-50.5	0
+167	-50.5	0
+168	-50.5	0
+169	-50.5	0
+170	-50.5	0
+171	-50.5	0
+172	-50.5	0
+173	-50.5	0
+174	-50.5	0
+175	-50.5	0
+176	-50.5	0
+177	-50.5	0
+178	-50.5	0
+179	-50.5	0
+180	-50.5	0
+181	-50.5	0
+182	-50.5	0
+183	-50.5	0
+184	-50.5	0
+185	-50.5	0
+186	-50.5	0
+187	-50.5	0
+188	-50.5	0
+189	-50.5	0
+190	-50.5	0
+191	-50.5	0
+192	-50.5	0
+193	-50.5	0
+194	-50.5	0
+195	-50.5	0
+196	-50.5	0
+197	-50.5	0
+198	-50.5	0
+199	-50.5	0
+200	-50.5	0
+201	-50.5	0
+202	-50.5	0
+203	-50.5	0
+204	-50.5	0
+205	-50.5	0
+206	-50.5	0
+207	-50.5	0
+208	-50.5	0
+209	-50.5	0
+210	-50.5	0
+211	-50.5	0
+212	-50.5	0
+213	-50.5	0
+214	-50.5	0
+215	-50.5	0
+216	-50.5	0
+217	-50.5	0
+218	-50.5	0
+219	-50.5	0
+220	-50.5	0
+221	-50.5	0
+222	-50.5	0
+223	-50.5	0
+224	-50.5	0
+225	-50.5	0
+226	-50.5	0
+227	-50.5	0
+228	-50.5	0
+229	-50.5	0
+230	-50.5	0
+231	-50.5	0
+232	-50.5	0
+233	-50.5	0
+234	-50.5	0
+235	-50.5	0
+236	-50.5	0
+237	-50.5	0
+238	-50.5	0
+239	-50.5	0
+240	-50.5	0
+241	-50.5	0
+242	-50.5	0
+243	-50.5	0
+244	-50.5	0
+245	-50.5	0
+246	-50.5	0
+247	-50.5	0
+248	-50.5	0
+249	-50.5	0
+250	-50.5	0
+251	-50.5	0
+252	-50.5	0
+253	-50.5	0
+254	-50.5	0
+255	-50.5	0
+256	-50.5	0
+257	-50.5	0
+258	-50.5	0
+259	-50.5	0
+260	-50.5	0
+261	-50.5	0
+262	-50.5	0
+263	-50.5	0
+264	-50.5	0
+265	-50.5	0
+266	-50.5	0
+267	-50.5	0
+268	-50.5	0
+269	-50.5	0
+270	-50.5	0
+271	-50.5	0
+272	-50.5	0
+273	-50.5	0
+274	-50.5	0
+275	-50.5	0
+276	-50.5	0
+277	-50.5	0
+278	-50.5	0
+279	-50.5	0
+280	-50.5	0
+281	-50.5	0
+282	-50.5	0
+283	-50.5	0
+284	-50.5	0
+285	-50.5	0
+286	-50.5	0
+287	-50.5	0
+288	-50.5	-1.0508
+289	-50.5	-5.6788
+290	-50.5	-3.4247
+291	-50.5	-0.63833
+292	-50.5	-0.13452
+293	-50.5	0
+294	-50.5	0
+295	-50.5	0
+296	-50.5	0
+297	-50.5	0
+298	-50.5	0
+299	-50.5	0
+300	-50.5	0
+301	-50.5	0
+302	-50.5	0
+303	-50.5	0
+304	-50.5	0
+305	-50.5	0
+306	-50.5	0
+307	-50.5	0
+308	-50.5	0
+309	-50.5	0
+310	-50.5	0
+311	-50.5	0
+312	-50.5	0
+313	-50.5	0
+314	-50.5	0
+315	-50.5	0
+316	-50.5	0
+317	-50.5	0
+318	-50.5	0
+319	-50.5	0
+320	-50.5	0
+321	-50.5	0
+322	-50.5	0
+323	-50.5	0
+324	-50.5	0
+325	-50.5	0
+326	-50.5	0
+327	-50.5	0
+328	-50.5	0
+329	-50.5	0
+330	-50.5	0
+331	-50.5	0
+332	-50.5	0
+333	-50.5	0
+334	-50.5	0
+335	-50.5	0
+336	-50.5	0
+337	-50.5	0
+338	-50.5	0
+339	-50.5	0
+340	-50.5	0
+341	-50.5	0
+342	-50.5	0
+343	-50.5	0
+344	-50.5	0
+345	-50.5	0
+346	-50.5	0
+347	-50.5	0
+348	-50.5	0
+349	-50.5	0
+350	-50.5	0
+351	-50.5	0
+352	-50.5	0
+353	-50.5	0
+354	-50.5	0
+355	-50.5	0
+356	-50.5	0
+357	-50.5	0
+358	-50.5	0
+359	-50.5	0
+360	-50.5	0
+0	-50	0
+1	-50	0
+2	-50	0
+3	-50	0
+4	-50	0
+5	-50	0
+6	-50	0
+7	-50	0
+8	-50	0
+9	-50	0
+10	-50	0
+11	-50	0
+12	-50	0
+13	-50	0
+14	-50	0
+15	-50	0
+16	-50	0
+17	-50	0
+18	-50	0
+19	-50	0
+20	-50	0
+21	-50	0
+22	-50	0
+23	-50	0
+24	-50	0
+25	-50	0
+26	-50	0
+27	-50	0
+28	-50	0
+29	-50	0
+30	-50	0
+31	-50	0
+32	-50	0
+33	-50	0
+34	-50	0
+35	-50	0
+36	-50	0
+37	-50	0
+38	-50	0
+39	-50	0
+40	-50	0
+41	-50	0
+42	-50	0
+43	-50	0
+44	-50	0
+45	-50	0
+46	-50	0
+47	-50	0
+48	-50	0
+49	-50	0
+50	-50	0
+51	-50	0
+52	-50	0
+53	-50	0
+54	-50	0
+55	-50	0
+56	-50	0
+57	-50	0
+58	-50	0
+59	-50	0
+60	-50	0
+61	-50	0
+62	-50	0
+63	-50	0
+64	-50	0
+65	-50	0
+66	-50	0
+67	-50	0
+68	-50	0
+69	-50	0
+70	-50	0
+71	-50	0
+72	-50	0
+73	-50	0
+74	-50	0
+75	-50	0
+76	-50	0
+77	-50	0
+78	-50	0
+79	-50	0
+80	-50	0
+81	-50	0
+82	-50	0
+83	-50	0
+84	-50	0
+85	-50	0
+86	-50	0
+87	-50	0
+88	-50	0
+89	-50	0
+90	-50	0
+91	-50	0
+92	-50	0
+93	-50	0
+94	-50	0
+95	-50	0
+96	-50	0
+97	-50	0
+98	-50	0
+99	-50	0
+100	-50	0
+101	-50	0
+102	-50	0
+103	-50	0
+104	-50	0
+105	-50	0
+106	-50	0
+107	-50	0
+108	-50	0
+109	-50	0
+110	-50	0
+111	-50	0
+112	-50	0
+113	-50	0
+114	-50	0
+115	-50	0
+116	-50	0
+117	-50	0
+118	-50	0
+119	-50	0
+120	-50	0
+121	-50	0
+122	-50	0
+123	-50	0
+124	-50	0
+125	-50	0
+126	-50	0
+127	-50	0
+128	-50	0
+129	-50	0
+130	-50	0
+131	-50	0
+132	-50	0
+133	-50	0
+134	-50	0
+135	-50	0
+136	-50	0
+137	-50	0
+138	-50	0
+139	-50	0
+140	-50	0
+141	-50	0
+142	-50	0
+143	-50	0
+144	-50	0
+145	-50	0
+146	-50	0
+147	-50	0
+148	-50	0
+149	-50	0
+150	-50	0
+151	-50	0
+152	-50	0
+153	-50	0
+154	-50	0
+155	-50	0
+156	-50	0
+157	-50	0
+158	-50	0
+159	-50	0
+160	-50	0
+161	-50	0
+162	-50	0
+163	-50	0
+164	-50	0
+165	-50	0
+166	-50	0
+167	-50	0
+168	-50	0
+169	-50	0
+170	-50	0
+171	-50	0
+172	-50	0
+173	-50	0
+174	-50	0
+175	-50	0
+176	-50	0
+177	-50	0
+178	-50	0
+179	-50	0
+180	-50	0
+181	-50	0
+182	-50	0
+183	-50	0
+184	-50	0
+185	-50	0
+186	-50	0
+187	-50	0
+188	-50	0
+189	-50	0
+190	-50	0
+191	-50	0
+192	-50	0
+193	-50	0
+194	-50	0
+195	-50	0
+196	-50	0
+197	-50	0
+198	-50	0
+199	-50	0
+200	-50	0
+201	-50	0
+202	-50	0
+203	-50	0
+204	-50	0
+205	-50	0
+206	-50	0
+207	-50	0
+208	-50	0
+209	-50	0
+210	-50	0
+211	-50	0
+212	-50	0
+213	-50	0
+214	-50	0
+215	-50	0
+216	-50	0
+217	-50	0
+218	-50	0
+219	-50	0
+220	-50	0
+221	-50	0
+222	-50	0
+223	-50	0
+224	-50	0
+225	-50	0
+226	-50	0
+227	-50	0
+228	-50	0
+229	-50	0
+230	-50	0
+231	-50	0
+232	-50	0
+233	-50	0
+234	-50	0
+235	-50	0
+236	-50	0
+237	-50	0
+238	-50	0
+239	-50	0
+240	-50	0
+241	-50	0
+242	-50	0
+243	-50	0
+244	-50	0
+245	-50	0
+246	-50	0
+247	-50	0
+248	-50	0
+249	-50	0
+250	-50	0
+251	-50	0
+252	-50	0
+253	-50	0
+254	-50	0
+255	-50	0
+256	-50	0
+257	-50	0
+258	-50	0
+259	-50	0
+260	-50	0
+261	-50	0
+262	-50	0
+263	-50	0
+264	-50	0
+265	-50	0
+266	-50	0
+267	-50	0
+268	-50	0
+269	-50	0
+270	-50	0
+271	-50	0
+272	-50	0
+273	-50	0
+274	-50	0
+275	-50	0
+276	-50	0
+277	-50	0
+278	-50	0
+279	-50	0
+280	-50	0
+281	-50	0
+282	-50	0
+283	-50	0
+284	-50	0
+285	-50	0
+286	-50	0
+287	-50	0
+288	-50	-6.4602
+289	-50	-5.7536
+290	-50	-3.7962
+291	-50	-2.0377
+292	-50	-0.40075
+293	-50	0
+294	-50	0
+295	-50	0
+296	-50	0
+297	-50	0
+298	-50	0
+299	-50	0
+300	-50	0
+301	-50	0
+302	-50	0
+303	-50	0
+304	-50	0
+305	-50	0
+306	-50	0
+307	-50	0
+308	-50	0
+309	-50	0
+310	-50	0
+311	-50	0
+312	-50	0
+313	-50	0
+314	-50	0
+315	-50	0
+316	-50	0
+317	-50	0
+318	-50	0
+319	-50	0
+320	-50	0
+321	-50	0
+322	-50	0
+323	-50	0
+324	-50	0
+325	-50	0
+326	-50	0
+327	-50	0
+328	-50	0
+329	-50	0
+330	-50	0
+331	-50	0
+332	-50	0
+333	-50	0
+334	-50	0
+335	-50	0
+336	-50	0
+337	-50	0
+338	-50	0
+339	-50	0
+340	-50	0
+341	-50	0
+342	-50	0
+343	-50	0
+344	-50	0
+345	-50	0
+346	-50	0
+347	-50	0
+348	-50	0
+349	-50	0
+350	-50	0
+351	-50	0
+352	-50	0
+353	-50	0
+354	-50	0
+355	-50	0
+356	-50	0
+357	-50	0
+358	-50	0
+359	-50	0
+360	-50	0
+0	-49.5	0
+1	-49.5	0
+2	-49.5	0
+3	-49.5	0
+4	-49.5	0
+5	-49.5	0
+6	-49.5	0
+7	-49.5	0
+8	-49.5	0
+9	-49.5	0
+10	-49.5	0
+11	-49.5	0
+12	-49.5	0
+13	-49.5	0
+14	-49.5	0
+15	-49.5	0
+16	-49.5	0
+17	-49.5	0
+18	-49.5	0
+19	-49.5	0
+20	-49.5	0
+21	-49.5	0
+22	-49.5	0
+23	-49.5	0
+24	-49.5	0
+25	-49.5	0
+26	-49.5	0
+27	-49.5	0
+28	-49.5	0
+29	-49.5	0
+30	-49.5	0
+31	-49.5	0
+32	-49.5	0
+33	-49.5	0
+34	-49.5	0
+35	-49.5	0
+36	-49.5	0
+37	-49.5	0
+38	-49.5	0
+39	-49.5	0
+40	-49.5	0
+41	-49.5	0
+42	-49.5	0
+43	-49.5	0
+44	-49.5	0
+45	-49.5	0
+46	-49.5	0
+47	-49.5	0
+48	-49.5	0
+49	-49.5	0
+50	-49.5	0
+51	-49.5	0
+52	-49.5	0
+53	-49.5	0
+54	-49.5	0
+55	-49.5	0
+56	-49.5	0
+57	-49.5	0
+58	-49.5	0
+59	-49.5	0
+60	-49.5	0
+61	-49.5	0
+62	-49.5	0
+63	-49.5	0
+64	-49.5	0
+65	-49.5	0
+66	-49.5	0
+67	-49.5	0
+68	-49.5	0
+69	-49.5	0
+70	-49.5	0
+71	-49.5	0
+72	-49.5	0
+73	-49.5	0
+74	-49.5	0
+75	-49.5	0
+76	-49.5	0
+77	-49.5	0
+78	-49.5	0
+79	-49.5	0
+80	-49.5	0
+81	-49.5	0
+82	-49.5	0
+83	-49.5	0
+84	-49.5	0
+85	-49.5	0
+86	-49.5	0
+87	-49.5	0
+88	-49.5	0
+89	-49.5	0
+90	-49.5	0
+91	-49.5	0
+92	-49.5	0
+93	-49.5	0
+94	-49.5	0
+95	-49.5	0
+96	-49.5	0
+97	-49.5	0
+98	-49.5	0
+99	-49.5	0
+100	-49.5	0
+101	-49.5	0
+102	-49.5	0
+103	-49.5	0
+104	-49.5	0
+105	-49.5	0
+106	-49.5	0
+107	-49.5	0
+108	-49.5	0
+109	-49.5	0
+110	-49.5	0
+111	-49.5	0
+112	-49.5	0
+113	-49.5	0
+114	-49.5	0
+115	-49.5	0
+116	-49.5	0
+117	-49.5	0
+118	-49.5	0
+119	-49.5	0
+120	-49.5	0
+121	-49.5	0
+122	-49.5	0
+123	-49.5	0
+124	-49.5	0
+125	-49.5	0
+126	-49.5	0
+127	-49.5	0
+128	-49.5	0
+129	-49.5	0
+130	-49.5	0
+131	-49.5	0
+132	-49.5	0
+133	-49.5	0
+134	-49.5	0
+135	-49.5	0
+136	-49.5	0
+137	-49.5	0
+138	-49.5	0
+139	-49.5	0
+140	-49.5	0
+141	-49.5	0
+142	-49.5	0
+143	-49.5	0
+144	-49.5	0
+145	-49.5	0
+146	-49.5	0
+147	-49.5	0
+148	-49.5	0
+149	-49.5	0
+150	-49.5	0
+151	-49.5	0
+152	-49.5	0
+153	-49.5	0
+154	-49.5	0
+155	-49.5	0
+156	-49.5	0
+157	-49.5	0
+158	-49.5	0
+159	-49.5	0
+160	-49.5	0
+161	-49.5	0
+162	-49.5	0
+163	-49.5	0
+164	-49.5	0
+165	-49.5	0
+166	-49.5	0
+167	-49.5	0
+168	-49.5	0
+169	-49.5	0
+170	-49.5	0
+171	-49.5	0
+172	-49.5	0
+173	-49.5	0
+174	-49.5	0
+175	-49.5	0
+176	-49.5	0
+177	-49.5	0
+178	-49.5	0
+179	-49.5	0
+180	-49.5	0
+181	-49.5	0
+182	-49.5	0
+183	-49.5	0
+184	-49.5	0
+185	-49.5	0
+186	-49.5	0
+187	-49.5	0
+188	-49.5	0
+189	-49.5	0
+190	-49.5	0
+191	-49.5	0
+192	-49.5	0
+193	-49.5	0
+194	-49.5	0
+195	-49.5	0
+196	-49.5	0
+197	-49.5	0
+198	-49.5	0
+199	-49.5	0
+200	-49.5	0
+201	-49.5	0
+202	-49.5	0
+203	-49.5	0
+204	-49.5	0
+205	-49.5	0
+206	-49.5	0
+207	-49.5	0
+208	-49.5	0
+209	-49.5	0
+210	-49.5	0
+211	-49.5	0
+212	-49.5	0
+213	-49.5	0
+214	-49.5	0
+215	-49.5	0
+216	-49.5	0
+217	-49.5	0
+218	-49.5	0
+219	-49.5	0
+220	-49.5	0
+221	-49.5	0
+222	-49.5	0
+223	-49.5	0
+224	-49.5	0
+225	-49.5	0
+226	-49.5	0
+227	-49.5	0
+228	-49.5	0
+229	-49.5	0
+230	-49.5	0
+231	-49.5	0
+232	-49.5	0
+233	-49.5	0
+234	-49.5	0
+235	-49.5	0
+236	-49.5	0
+237	-49.5	0
+238	-49.5	0
+239	-49.5	0
+240	-49.5	0
+241	-49.5	0
+242	-49.5	0
+243	-49.5	0
+244	-49.5	0
+245	-49.5	0
+246	-49.5	0
+247	-49.5	0
+248	-49.5	0
+249	-49.5	0
+250	-49.5	0
+251	-49.5	0
+252	-49.5	0
+253	-49.5	0
+254	-49.5	0
+255	-49.5	0
+256	-49.5	0
+257	-49.5	0
+258	-49.5	0
+259	-49.5	0
+260	-49.5	0
+261	-49.5	0
+262	-49.5	0
+263	-49.5	0
+264	-49.5	0
+265	-49.5	0
+266	-49.5	0
+267	-49.5	0
+268	-49.5	0
+269	-49.5	0
+270	-49.5	0
+271	-49.5	0
+272	-49.5	0
+273	-49.5	0
+274	-49.5	0
+275	-49.5	0
+276	-49.5	0
+277	-49.5	0
+278	-49.5	0
+279	-49.5	0
+280	-49.5	0
+281	-49.5	0
+282	-49.5	0
+283	-49.5	0
+284	-49.5	0
+285	-49.5	0
+286	-49.5	0
+287	-49.5	0
+288	-49.5	-6.6937
+289	-49.5	-5.3443
+290	-49.5	-4.0922
+291	-49.5	-2.7478
+292	-49.5	-0.99293
+293	-49.5	0
+294	-49.5	0
+295	-49.5	0
+296	-49.5	0
+297	-49.5	0
+298	-49.5	0
+299	-49.5	0
+300	-49.5	0
+301	-49.5	0
+302	-49.5	0
+303	-49.5	0
+304	-49.5	0
+305	-49.5	0
+306	-49.5	0
+307	-49.5	0
+308	-49.5	0
+309	-49.5	0
+310	-49.5	0
+311	-49.5	0
+312	-49.5	0
+313	-49.5	0
+314	-49.5	0
+315	-49.5	0
+316	-49.5	0
+317	-49.5	0
+318	-49.5	0
+319	-49.5	0
+320	-49.5	0
+321	-49.5	0
+322	-49.5	0
+323	-49.5	0
+324	-49.5	0
+325	-49.5	0
+326	-49.5	0
+327	-49.5	0
+328	-49.5	0
+329	-49.5	0
+330	-49.5	0
+331	-49.5	0
+332	-49.5	0
+333	-49.5	0
+334	-49.5	0
+335	-49.5	0
+336	-49.5	0
+337	-49.5	0
+338	-49.5	0
+339	-49.5	0
+340	-49.5	0
+341	-49.5	0
+342	-49.5	0
+343	-49.5	0
+344	-49.5	0
+345	-49.5	0
+346	-49.5	0
+347	-49.5	0
+348	-49.5	0
+349	-49.5	0
+350	-49.5	0
+351	-49.5	0
+352	-49.5	0
+353	-49.5	0
+354	-49.5	0
+355	-49.5	0
+356	-49.5	0
+357	-49.5	0
+358	-49.5	0
+359	-49.5	0
+360	-49.5	0
+0	-49	0
+1	-49	0
+2	-49	0
+3	-49	0
+4	-49	0
+5	-49	0
+6	-49	0
+7	-49	0
+8	-49	0
+9	-49	0
+10	-49	0
+11	-49	0
+12	-49	0
+13	-49	0
+14	-49	0
+15	-49	0
+16	-49	0
+17	-49	0
+18	-49	0
+19	-49	0
+20	-49	0
+21	-49	0
+22	-49	0
+23	-49	0
+24	-49	0
+25	-49	0
+26	-49	0
+27	-49	0
+28	-49	0
+29	-49	0
+30	-49	0
+31	-49	0
+32	-49	0
+33	-49	0
+34	-49	0
+35	-49	0
+36	-49	0
+37	-49	0
+38	-49	0
+39	-49	0
+40	-49	0
+41	-49	0
+42	-49	0
+43	-49	0
+44	-49	0
+45	-49	0
+46	-49	0
+47	-49	0
+48	-49	0
+49	-49	0
+50	-49	0
+51	-49	0
+52	-49	0
+53	-49	0
+54	-49	0
+55	-49	0
+56	-49	0
+57	-49	0
+58	-49	0
+59	-49	0
+60	-49	0
+61	-49	0
+62	-49	0
+63	-49	0
+64	-49	0
+65	-49	0
+66	-49	0
+67	-49	0
+68	-49	0
+69	-49	0
+70	-49	0
+71	-49	0
+72	-49	0
+73	-49	0
+74	-49	0
+75	-49	0
+76	-49	0
+77	-49	0
+78	-49	0
+79	-49	0
+80	-49	0
+81	-49	0
+82	-49	0
+83	-49	0
+84	-49	0
+85	-49	0
+86	-49	0
+87	-49	0
+88	-49	0
+89	-49	0
+90	-49	0
+91	-49	0
+92	-49	0
+93	-49	0
+94	-49	0
+95	-49	0
+96	-49	0
+97	-49	0
+98	-49	0
+99	-49	0
+100	-49	0
+101	-49	0
+102	-49	0
+103	-49	0
+104	-49	0
+105	-49	0
+106	-49	0
+107	-49	0
+108	-49	0
+109	-49	0
+110	-49	0
+111	-49	0
+112	-49	0
+113	-49	0
+114	-49	0
+115	-49	0
+116	-49	0
+117	-49	0
+118	-49	0
+119	-49	0
+120	-49	0
+121	-49	0
+122	-49	0
+123	-49	0
+124	-49	0
+125	-49	0
+126	-49	0
+127	-49	0
+128	-49	0
+129	-49	0
+130	-49	0
+131	-49	0
+132	-49	0
+133	-49	0
+134	-49	0
+135	-49	0
+136	-49	0
+137	-49	0
+138	-49	0
+139	-49	0
+140	-49	0
+141	-49	0
+142	-49	0
+143	-49	0
+144	-49	0
+145	-49	0
+146	-49	0
+147	-49	0
+148	-49	0
+149	-49	0
+150	-49	0
+151	-49	0
+152	-49	0
+153	-49	0
+154	-49	0
+155	-49	0
+156	-49	0
+157	-49	0
+158	-49	0
+159	-49	0
+160	-49	0
+161	-49	0
+162	-49	0
+163	-49	0
+164	-49	0
+165	-49	0
+166	-49	0
+167	-49	0
+168	-49	0
+169	-49	0
+170	-49	0
+171	-49	0
+172	-49	0
+173	-49	0
+174	-49	0
+175	-49	0
+176	-49	0
+177	-49	0
+178	-49	0
+179	-49	0
+180	-49	0
+181	-49	0
+182	-49	0
+183	-49	0
+184	-49	0
+185	-49	0
+186	-49	0
+187	-49	0
+188	-49	0
+189	-49	0
+190	-49	0
+191	-49	0
+192	-49	0
+193	-49	0
+194	-49	0
+195	-49	0
+196	-49	0
+197	-49	0
+198	-49	0
+199	-49	0
+200	-49	0
+201	-49	0
+202	-49	0
+203	-49	0
+204	-49	0
+205	-49	0
+206	-49	0
+207	-49	0
+208	-49	0
+209	-49	0
+210	-49	0
+211	-49	0
+212	-49	0
+213	-49	0
+214	-49	0
+215	-49	0
+216	-49	0
+217	-49	0
+218	-49	0
+219	-49	0
+220	-49	0
+221	-49	0
+222	-49	0
+223	-49	0
+224	-49	0
+225	-49	0
+226	-49	0
+227	-49	0
+228	-49	0
+229	-49	0
+230	-49	0
+231	-49	0
+232	-49	0
+233	-49	0
+234	-49	0
+235	-49	0
+236	-49	0
+237	-49	0
+238	-49	0
+239	-49	0
+240	-49	0
+241	-49	0
+242	-49	0
+243	-49	0
+244	-49	0
+245	-49	0
+246	-49	0
+247	-49	0
+248	-49	0
+249	-49	0
+250	-49	0
+251	-49	0
+252	-49	0
+253	-49	0
+254	-49	0
+255	-49	0
+256	-49	0
+257	-49	0
+258	-49	0
+259	-49	0
+260	-49	0
+261	-49	0
+262	-49	0
+263	-49	0
+264	-49	0
+265	-49	0
+266	-49	0
+267	-49	0
+268	-49	0
+269	-49	0
+270	-49	0
+271	-49	0
+272	-49	0
+273	-49	0
+274	-49	0
+275	-49	0
+276	-49	0
+277	-49	0
+278	-49	0
+279	-49	0
+280	-49	0
+281	-49	0
+282	-49	0
+283	-49	0
+284	-49	0
+285	-49	-1.8602
+286	-49	0
+287	-49	0
+288	-49	-7.0222
+289	-49	-5.6837
+290	-49	-4.2654
+291	-49	-3.0736
+292	-49	-1.7142
+293	-49	-0.15307
+294	-49	0
+295	-49	0
+296	-49	0
+297	-49	0
+298	-49	0
+299	-49	0
+300	-49	0
+301	-49	0
+302	-49	0
+303	-49	0
+304	-49	0
+305	-49	0
+306	-49	0
+307	-49	0
+308	-49	0
+309	-49	0
+310	-49	0
+311	-49	0
+312	-49	0
+313	-49	0
+314	-49	0
+315	-49	0
+316	-49	0
+317	-49	0
+318	-49	0
+319	-49	0
+320	-49	0
+321	-49	0
+322	-49	0
+323	-49	0
+324	-49	0
+325	-49	0
+326	-49	0
+327	-49	0
+328	-49	0
+329	-49	0
+330	-49	0
+331	-49	0
+332	-49	0
+333	-49	0
+334	-49	0
+335	-49	0
+336	-49	0
+337	-49	0
+338	-49	0
+339	-49	0
+340	-49	0
+341	-49	0
+342	-49	0
+343	-49	0
+344	-49	0
+345	-49	0
+346	-49	0
+347	-49	0
+348	-49	0
+349	-49	0
+350	-49	0
+351	-49	0
+352	-49	0
+353	-49	0
+354	-49	0
+355	-49	0
+356	-49	0
+357	-49	0
+358	-49	0
+359	-49	0
+360	-49	0
+0	-48.5	0
+1	-48.5	0
+2	-48.5	0
+3	-48.5	0
+4	-48.5	0
+5	-48.5	0
+6	-48.5	0
+7	-48.5	0
+8	-48.5	0
+9	-48.5	0
+10	-48.5	0
+11	-48.5	0
+12	-48.5	0
+13	-48.5	0
+14	-48.5	0
+15	-48.5	0
+16	-48.5	0
+17	-48.5	0
+18	-48.5	0
+19	-48.5	0
+20	-48.5	0
+21	-48.5	0
+22	-48.5	0
+23	-48.5	0
+24	-48.5	0
+25	-48.5	0
+26	-48.5	0
+27	-48.5	0
+28	-48.5	0
+29	-48.5	0
+30	-48.5	0
+31	-48.5	0
+32	-48.5	0
+33	-48.5	0
+34	-48.5	0
+35	-48.5	0
+36	-48.5	0
+37	-48.5	0
+38	-48.5	0
+39	-48.5	0
+40	-48.5	0
+41	-48.5	0
+42	-48.5	0
+43	-48.5	0
+44	-48.5	0
+45	-48.5	0
+46	-48.5	0
+47	-48.5	0
+48	-48.5	0
+49	-48.5	0
+50	-48.5	0
+51	-48.5	0
+52	-48.5	0
+53	-48.5	0
+54	-48.5	0
+55	-48.5	0
+56	-48.5	0
+57	-48.5	0
+58	-48.5	0
+59	-48.5	0
+60	-48.5	0
+61	-48.5	0
+62	-48.5	0
+63	-48.5	0
+64	-48.5	0
+65	-48.5	0
+66	-48.5	0
+67	-48.5	0
+68	-48.5	0
+69	-48.5	0
+70	-48.5	0
+71	-48.5	0
+72	-48.5	0
+73	-48.5	0
+74	-48.5	0
+75	-48.5	0
+76	-48.5	0
+77	-48.5	0
+78	-48.5	0
+79	-48.5	0
+80	-48.5	0
+81	-48.5	0
+82	-48.5	0
+83	-48.5	0
+84	-48.5	0
+85	-48.5	0
+86	-48.5	0
+87	-48.5	0
+88	-48.5	0
+89	-48.5	0
+90	-48.5	0
+91	-48.5	0
+92	-48.5	0
+93	-48.5	0
+94	-48.5	0
+95	-48.5	0
+96	-48.5	0
+97	-48.5	0
+98	-48.5	0
+99	-48.5	0
+100	-48.5	0
+101	-48.5	0
+102	-48.5	0
+103	-48.5	0
+104	-48.5	0
+105	-48.5	0
+106	-48.5	0
+107	-48.5	0
+108	-48.5	0
+109	-48.5	0
+110	-48.5	0
+111	-48.5	0
+112	-48.5	0
+113	-48.5	0
+114	-48.5	0
+115	-48.5	0
+116	-48.5	0
+117	-48.5	0
+118	-48.5	0
+119	-48.5	0
+120	-48.5	0
+121	-48.5	0
+122	-48.5	0
+123	-48.5	0
+124	-48.5	0
+125	-48.5	0
+126	-48.5	0
+127	-48.5	0
+128	-48.5	0
+129	-48.5	0
+130	-48.5	0
+131	-48.5	0
+132	-48.5	0
+133	-48.5	0
+134	-48.5	0
+135	-48.5	0
+136	-48.5	0
+137	-48.5	0
+138	-48.5	0
+139	-48.5	0
+140	-48.5	0
+141	-48.5	0
+142	-48.5	0
+143	-48.5	0
+144	-48.5	0
+145	-48.5	0
+146	-48.5	0
+147	-48.5	0
+148	-48.5	0
+149	-48.5	0
+150	-48.5	0
+151	-48.5	0
+152	-48.5	0
+153	-48.5	0
+154	-48.5	0
+155	-48.5	0
+156	-48.5	0
+157	-48.5	0
+158	-48.5	0
+159	-48.5	0
+160	-48.5	0
+161	-48.5	0
+162	-48.5	0
+163	-48.5	0
+164	-48.5	0
+165	-48.5	0
+166	-48.5	0
+167	-48.5	0
+168	-48.5	0
+169	-48.5	0
+170	-48.5	0
+171	-48.5	0
+172	-48.5	0
+173	-48.5	0
+174	-48.5	0
+175	-48.5	0
+176	-48.5	0
+177	-48.5	0
+178	-48.5	0
+179	-48.5	0
+180	-48.5	0
+181	-48.5	0
+182	-48.5	0
+183	-48.5	0
+184	-48.5	0
+185	-48.5	0
+186	-48.5	0
+187	-48.5	0
+188	-48.5	0
+189	-48.5	0
+190	-48.5	0
+191	-48.5	0
+192	-48.5	0
+193	-48.5	0
+194	-48.5	0
+195	-48.5	0
+196	-48.5	0
+197	-48.5	0
+198	-48.5	0
+199	-48.5	0
+200	-48.5	0
+201	-48.5	0
+202	-48.5	0
+203	-48.5	0
+204	-48.5	0
+205	-48.5	0
+206	-48.5	0
+207	-48.5	0
+208	-48.5	0
+209	-48.5	0
+210	-48.5	0
+211	-48.5	0
+212	-48.5	0
+213	-48.5	0
+214	-48.5	0
+215	-48.5	0
+216	-48.5	0
+217	-48.5	0
+218	-48.5	0
+219	-48.5	0
+220	-48.5	0
+221	-48.5	0
+222	-48.5	0
+223	-48.5	0
+224	-48.5	0
+225	-48.5	0
+226	-48.5	0
+227	-48.5	0
+228	-48.5	0
+229	-48.5	0
+230	-48.5	0
+231	-48.5	0
+232	-48.5	0
+233	-48.5	0
+234	-48.5	0
+235	-48.5	0
+236	-48.5	0
+237	-48.5	0
+238	-48.5	0
+239	-48.5	0
+240	-48.5	0
+241	-48.5	0
+242	-48.5	0
+243	-48.5	0
+244	-48.5	0
+245	-48.5	0
+246	-48.5	0
+247	-48.5	0
+248	-48.5	0
+249	-48.5	0
+250	-48.5	0
+251	-48.5	0
+252	-48.5	0
+253	-48.5	0
+254	-48.5	0
+255	-48.5	0
+256	-48.5	0
+257	-48.5	0
+258	-48.5	0
+259	-48.5	0
+260	-48.5	0
+261	-48.5	0
+262	-48.5	0
+263	-48.5	0
+264	-48.5	0
+265	-48.5	0
+266	-48.5	0
+267	-48.5	0
+268	-48.5	0
+269	-48.5	0
+270	-48.5	0
+271	-48.5	0
+272	-48.5	0
+273	-48.5	0
+274	-48.5	0
+275	-48.5	0
+276	-48.5	0
+277	-48.5	0
+278	-48.5	0
+279	-48.5	0
+280	-48.5	0
+281	-48.5	0
+282	-48.5	0
+283	-48.5	0
+284	-48.5	0
+285	-48.5	-3.7726
+286	-48.5	0
+287	-48.5	0
+288	-48.5	-6.0939
+289	-48.5	-6.2133
+290	-48.5	-4.6312
+291	-48.5	-3.3225
+292	-48.5	-2.0345
+293	-48.5	-0.5571
+294	-48.5	-0.030909
+295	-48.5	0
+296	-48.5	0
+297	-48.5	0
+298	-48.5	0
+299	-48.5	0
+300	-48.5	0
+301	-48.5	0
+302	-48.5	0
+303	-48.5	0
+304	-48.5	0
+305	-48.5	0
+306	-48.5	0
+307	-48.5	0
+308	-48.5	0
+309	-48.5	0
+310	-48.5	0
+311	-48.5	0
+312	-48.5	0
+313	-48.5	0
+314	-48.5	0
+315	-48.5	0
+316	-48.5	0
+317	-48.5	0
+318	-48.5	0
+319	-48.5	0
+320	-48.5	0
+321	-48.5	0
+322	-48.5	0
+323	-48.5	0
+324	-48.5	0
+325	-48.5	0
+326	-48.5	0
+327	-48.5	0
+328	-48.5	0
+329	-48.5	0
+330	-48.5	0
+331	-48.5	0
+332	-48.5	0
+333	-48.5	0
+334	-48.5	0
+335	-48.5	0
+336	-48.5	0
+337	-48.5	0
+338	-48.5	0
+339	-48.5	0
+340	-48.5	0
+341	-48.5	0
+342	-48.5	0
+343	-48.5	0
+344	-48.5	0
+345	-48.5	0
+346	-48.5	0
+347	-48.5	0
+348	-48.5	0
+349	-48.5	0
+350	-48.5	0
+351	-48.5	0
+352	-48.5	0
+353	-48.5	0
+354	-48.5	0
+355	-48.5	0
+356	-48.5	0
+357	-48.5	0
+358	-48.5	0
+359	-48.5	0
+360	-48.5	0
+0	-48	0
+1	-48	0
+2	-48	0
+3	-48	0
+4	-48	0
+5	-48	0
+6	-48	0
+7	-48	0
+8	-48	0
+9	-48	0
+10	-48	0
+11	-48	0
+12	-48	0
+13	-48	0
+14	-48	0
+15	-48	0
+16	-48	0
+17	-48	0
+18	-48	0
+19	-48	0
+20	-48	0
+21	-48	0
+22	-48	0
+23	-48	0
+24	-48	0
+25	-48	0
+26	-48	0
+27	-48	0
+28	-48	0
+29	-48	0
+30	-48	0
+31	-48	0
+32	-48	0
+33	-48	0
+34	-48	0
+35	-48	0
+36	-48	0
+37	-48	0
+38	-48	0
+39	-48	0
+40	-48	0
+41	-48	0
+42	-48	0
+43	-48	0
+44	-48	0
+45	-48	0
+46	-48	0
+47	-48	0
+48	-48	0
+49	-48	0
+50	-48	0
+51	-48	0
+52	-48	0
+53	-48	0
+54	-48	0
+55	-48	0
+56	-48	0
+57	-48	0
+58	-48	0
+59	-48	0
+60	-48	0
+61	-48	0
+62	-48	0
+63	-48	0
+64	-48	0
+65	-48	0
+66	-48	0
+67	-48	0
+68	-48	0
+69	-48	0
+70	-48	0
+71	-48	0
+72	-48	0
+73	-48	0
+74	-48	0
+75	-48	0
+76	-48	0
+77	-48	0
+78	-48	0
+79	-48	0
+80	-48	0
+81	-48	0
+82	-48	0
+83	-48	0
+84	-48	0
+85	-48	0
+86	-48	0
+87	-48	0
+88	-48	0
+89	-48	0
+90	-48	0
+91	-48	0
+92	-48	0
+93	-48	0
+94	-48	0
+95	-48	0
+96	-48	0
+97	-48	0
+98	-48	0
+99	-48	0
+100	-48	0
+101	-48	0
+102	-48	0
+103	-48	0
+104	-48	0
+105	-48	0
+106	-48	0
+107	-48	0
+108	-48	0
+109	-48	0
+110	-48	0
+111	-48	0
+112	-48	0
+113	-48	0
+114	-48	0
+115	-48	0
+116	-48	0
+117	-48	0
+118	-48	0
+119	-48	0
+120	-48	0
+121	-48	0
+122	-48	0
+123	-48	0
+124	-48	0
+125	-48	0
+126	-48	0
+127	-48	0
+128	-48	0
+129	-48	0
+130	-48	0
+131	-48	0
+132	-48	0
+133	-48	0
+134	-48	0
+135	-48	0
+136	-48	0
+137	-48	0
+138	-48	0
+139	-48	0
+140	-48	0
+141	-48	0
+142	-48	0
+143	-48	0
+144	-48	0
+145	-48	0
+146	-48	0
+147	-48	0
+148	-48	0
+149	-48	0
+150	-48	0
+151	-48	0
+152	-48	0
+153	-48	0
+154	-48	0
+155	-48	0
+156	-48	0
+157	-48	0
+158	-48	0
+159	-48	0
+160	-48	0
+161	-48	0
+162	-48	0
+163	-48	0
+164	-48	0
+165	-48	0
+166	-48	0
+167	-48	0
+168	-48	0
+169	-48	0
+170	-48	0
+171	-48	0
+172	-48	0
+173	-48	0
+174	-48	0
+175	-48	0
+176	-48	0
+177	-48	0
+178	-48	0
+179	-48	0
+180	-48	0
+181	-48	0
+182	-48	0
+183	-48	0
+184	-48	0
+185	-48	0
+186	-48	0
+187	-48	0
+188	-48	0
+189	-48	0
+190	-48	0
+191	-48	0
+192	-48	0
+193	-48	0
+194	-48	0
+195	-48	0
+196	-48	0
+197	-48	0
+198	-48	0
+199	-48	0
+200	-48	0
+201	-48	0
+202	-48	0
+203	-48	0
+204	-48	0
+205	-48	0
+206	-48	0
+207	-48	0
+208	-48	0
+209	-48	0
+210	-48	0
+211	-48	0
+212	-48	0
+213	-48	0
+214	-48	0
+215	-48	0
+216	-48	0
+217	-48	0
+218	-48	0
+219	-48	0
+220	-48	0
+221	-48	0
+222	-48	0
+223	-48	0
+224	-48	0
+225	-48	0
+226	-48	0
+227	-48	0
+228	-48	0
+229	-48	0
+230	-48	0
+231	-48	0
+232	-48	0
+233	-48	0
+234	-48	0
+235	-48	0
+236	-48	0
+237	-48	0
+238	-48	0
+239	-48	0
+240	-48	0
+241	-48	0
+242	-48	0
+243	-48	0
+244	-48	0
+245	-48	0
+246	-48	0
+247	-48	0
+248	-48	0
+249	-48	0
+250	-48	0
+251	-48	0
+252	-48	0
+253	-48	0
+254	-48	0
+255	-48	0
+256	-48	0
+257	-48	0
+258	-48	0
+259	-48	0
+260	-48	0
+261	-48	0
+262	-48	0
+263	-48	0
+264	-48	0
+265	-48	0
+266	-48	0
+267	-48	0
+268	-48	0
+269	-48	0
+270	-48	0
+271	-48	0
+272	-48	0
+273	-48	0
+274	-48	0
+275	-48	0
+276	-48	0
+277	-48	0
+278	-48	0
+279	-48	0
+280	-48	0
+281	-48	0
+282	-48	0
+283	-48	0
+284	-48	0
+285	-48	-4.5088
+286	-48	-4.9759
+287	-48	0
+288	-48	-0.44085
+289	-48	-6.7708
+290	-48	-4.9189
+291	-48	-3.4979
+292	-48	-2.1279
+293	-48	-0.95078
+294	-48	-0.14109
+295	-48	0
+296	-48	0
+297	-48	0
+298	-48	0
+299	-48	0
+300	-48	0
+301	-48	0
+302	-48	0
+303	-48	0
+304	-48	0
+305	-48	0
+306	-48	0
+307	-48	0
+308	-48	0
+309	-48	0
+310	-48	0
+311	-48	0
+312	-48	0
+313	-48	0
+314	-48	0
+315	-48	0
+316	-48	0
+317	-48	0
+318	-48	0
+319	-48	0
+320	-48	0
+321	-48	0
+322	-48	0
+323	-48	0
+324	-48	0
+325	-48	0
+326	-48	0
+327	-48	0
+328	-48	0
+329	-48	0
+330	-48	0
+331	-48	0
+332	-48	0
+333	-48	0
+334	-48	0
+335	-48	0
+336	-48	0
+337	-48	0
+338	-48	0
+339	-48	0
+340	-48	0
+341	-48	0
+342	-48	0
+343	-48	0
+344	-48	0
+345	-48	0
+346	-48	0
+347	-48	0
+348	-48	0
+349	-48	0
+350	-48	0
+351	-48	0
+352	-48	0
+353	-48	0
+354	-48	0
+355	-48	0
+356	-48	0
+357	-48	0
+358	-48	0
+359	-48	0
+360	-48	0
+0	-47.5	0
+1	-47.5	0
+2	-47.5	0
+3	-47.5	0
+4	-47.5	0
+5	-47.5	0
+6	-47.5	0
+7	-47.5	0
+8	-47.5	0
+9	-47.5	0
+10	-47.5	0
+11	-47.5	0
+12	-47.5	0
+13	-47.5	0
+14	-47.5	0
+15	-47.5	0
+16	-47.5	0
+17	-47.5	0
+18	-47.5	0
+19	-47.5	0
+20	-47.5	0
+21	-47.5	0
+22	-47.5	0
+23	-47.5	0
+24	-47.5	0
+25	-47.5	0
+26	-47.5	0
+27	-47.5	0
+28	-47.5	0
+29	-47.5	0
+30	-47.5	0
+31	-47.5	0
+32	-47.5	0
+33	-47.5	0
+34	-47.5	0
+35	-47.5	0
+36	-47.5	0
+37	-47.5	0
+38	-47.5	0
+39	-47.5	0
+40	-47.5	0
+41	-47.5	0
+42	-47.5	0
+43	-47.5	0
+44	-47.5	0
+45	-47.5	0
+46	-47.5	0
+47	-47.5	0
+48	-47.5	0
+49	-47.5	0
+50	-47.5	0
+51	-47.5	0
+52	-47.5	0
+53	-47.5	0
+54	-47.5	0
+55	-47.5	0
+56	-47.5	0
+57	-47.5	0
+58	-47.5	0
+59	-47.5	0
+60	-47.5	0
+61	-47.5	0
+62	-47.5	0
+63	-47.5	0
+64	-47.5	0
+65	-47.5	0
+66	-47.5	0
+67	-47.5	0
+68	-47.5	0
+69	-47.5	0
+70	-47.5	0
+71	-47.5	0
+72	-47.5	0
+73	-47.5	0
+74	-47.5	0
+75	-47.5	0
+76	-47.5	0
+77	-47.5	0
+78	-47.5	0
+79	-47.5	0
+80	-47.5	0
+81	-47.5	0
+82	-47.5	0
+83	-47.5	0
+84	-47.5	0
+85	-47.5	0
+86	-47.5	0
+87	-47.5	0
+88	-47.5	0
+89	-47.5	0
+90	-47.5	0
+91	-47.5	0
+92	-47.5	0
+93	-47.5	0
+94	-47.5	0
+95	-47.5	0
+96	-47.5	0
+97	-47.5	0
+98	-47.5	0
+99	-47.5	0
+100	-47.5	0
+101	-47.5	0
+102	-47.5	0
+103	-47.5	0
+104	-47.5	0
+105	-47.5	0
+106	-47.5	0
+107	-47.5	0
+108	-47.5	0
+109	-47.5	0
+110	-47.5	0
+111	-47.5	0
+112	-47.5	0
+113	-47.5	0
+114	-47.5	0
+115	-47.5	0
+116	-47.5	0
+117	-47.5	0
+118	-47.5	0
+119	-47.5	0
+120	-47.5	0
+121	-47.5	0
+122	-47.5	0
+123	-47.5	0
+124	-47.5	0
+125	-47.5	0
+126	-47.5	0
+127	-47.5	0
+128	-47.5	0
+129	-47.5	0
+130	-47.5	0
+131	-47.5	0
+132	-47.5	0
+133	-47.5	0
+134	-47.5	0
+135	-47.5	0
+136	-47.5	0
+137	-47.5	0
+138	-47.5	0
+139	-47.5	0
+140	-47.5	0
+141	-47.5	0
+142	-47.5	0
+143	-47.5	0
+144	-47.5	0
+145	-47.5	0
+146	-47.5	0
+147	-47.5	0
+148	-47.5	0
+149	-47.5	0
+150	-47.5	0
+151	-47.5	0
+152	-47.5	0
+153	-47.5	0
+154	-47.5	0
+155	-47.5	0
+156	-47.5	0
+157	-47.5	0
+158	-47.5	0
+159	-47.5	0
+160	-47.5	0
+161	-47.5	0
+162	-47.5	0
+163	-47.5	0
+164	-47.5	0
+165	-47.5	0
+166	-47.5	0
+167	-47.5	0
+168	-47.5	0
+169	-47.5	0
+170	-47.5	0
+171	-47.5	0
+172	-47.5	0
+173	-47.5	0
+174	-47.5	0
+175	-47.5	0
+176	-47.5	0
+177	-47.5	0
+178	-47.5	0
+179	-47.5	0
+180	-47.5	0
+181	-47.5	0
+182	-47.5	0
+183	-47.5	0
+184	-47.5	0
+185	-47.5	0
+186	-47.5	0
+187	-47.5	0
+188	-47.5	0
+189	-47.5	0
+190	-47.5	0
+191	-47.5	0
+192	-47.5	0
+193	-47.5	0
+194	-47.5	0
+195	-47.5	0
+196	-47.5	0
+197	-47.5	0
+198	-47.5	0
+199	-47.5	0
+200	-47.5	0
+201	-47.5	0
+202	-47.5	0
+203	-47.5	0
+204	-47.5	0
+205	-47.5	0
+206	-47.5	0
+207	-47.5	0
+208	-47.5	0
+209	-47.5	0
+210	-47.5	0
+211	-47.5	0
+212	-47.5	0
+213	-47.5	0
+214	-47.5	0
+215	-47.5	0
+216	-47.5	0
+217	-47.5	0
+218	-47.5	0
+219	-47.5	0
+220	-47.5	0
+221	-47.5	0
+222	-47.5	0
+223	-47.5	0
+224	-47.5	0
+225	-47.5	0
+226	-47.5	0
+227	-47.5	0
+228	-47.5	0
+229	-47.5	0
+230	-47.5	0
+231	-47.5	0
+232	-47.5	0
+233	-47.5	0
+234	-47.5	0
+235	-47.5	0
+236	-47.5	0
+237	-47.5	0
+238	-47.5	0
+239	-47.5	0
+240	-47.5	0
+241	-47.5	0
+242	-47.5	0
+243	-47.5	0
+244	-47.5	0
+245	-47.5	0
+246	-47.5	0
+247	-47.5	0
+248	-47.5	0
+249	-47.5	0
+250	-47.5	0
+251	-47.5	0
+252	-47.5	0
+253	-47.5	0
+254	-47.5	0
+255	-47.5	0
+256	-47.5	0
+257	-47.5	0
+258	-47.5	0
+259	-47.5	0
+260	-47.5	0
+261	-47.5	0
+262	-47.5	0
+263	-47.5	0
+264	-47.5	0
+265	-47.5	0
+266	-47.5	0
+267	-47.5	0
+268	-47.5	0
+269	-47.5	0
+270	-47.5	0
+271	-47.5	0
+272	-47.5	0
+273	-47.5	0
+274	-47.5	0
+275	-47.5	0
+276	-47.5	0
+277	-47.5	0
+278	-47.5	0
+279	-47.5	0
+280	-47.5	0
+281	-47.5	0
+282	-47.5	0
+283	-47.5	0
+284	-47.5	0
+285	-47.5	-1.5461
+286	-47.5	-5.0164
+287	-47.5	0
+288	-47.5	-5.7758
+289	-47.5	-7.1176
+290	-47.5	-5.0429
+291	-47.5	-3.4686
+292	-47.5	-2.1001
+293	-47.5	-0.83069
+294	-47.5	-0.18494
+295	-47.5	0
+296	-47.5	0
+297	-47.5	0
+298	-47.5	0
+299	-47.5	0
+300	-47.5	0
+301	-47.5	0
+302	-47.5	0
+303	-47.5	0
+304	-47.5	0
+305	-47.5	0
+306	-47.5	0
+307	-47.5	0
+308	-47.5	0
+309	-47.5	0
+310	-47.5	0
+311	-47.5	0
+312	-47.5	0
+313	-47.5	0
+314	-47.5	0
+315	-47.5	0
+316	-47.5	0
+317	-47.5	0
+318	-47.5	0
+319	-47.5	0
+320	-47.5	0
+321	-47.5	0
+322	-47.5	0
+323	-47.5	0
+324	-47.5	0
+325	-47.5	0
+326	-47.5	0
+327	-47.5	0
+328	-47.5	0
+329	-47.5	0
+330	-47.5	0
+331	-47.5	0
+332	-47.5	0
+333	-47.5	0
+334	-47.5	0
+335	-47.5	0
+336	-47.5	0
+337	-47.5	0
+338	-47.5	0
+339	-47.5	0
+340	-47.5	0
+341	-47.5	0
+342	-47.5	0
+343	-47.5	0
+344	-47.5	0
+345	-47.5	0
+346	-47.5	0
+347	-47.5	0
+348	-47.5	0
+349	-47.5	0
+350	-47.5	0
+351	-47.5	0
+352	-47.5	0
+353	-47.5	0
+354	-47.5	0
+355	-47.5	0
+356	-47.5	0
+357	-47.5	0
+358	-47.5	0
+359	-47.5	0
+360	-47.5	0
+0	-47	0
+1	-47	0
+2	-47	0
+3	-47	0
+4	-47	0
+5	-47	0
+6	-47	0
+7	-47	0
+8	-47	0
+9	-47	0
+10	-47	0
+11	-47	0
+12	-47	0
+13	-47	0
+14	-47	0
+15	-47	0
+16	-47	0
+17	-47	0
+18	-47	0
+19	-47	0
+20	-47	0
+21	-47	0
+22	-47	0
+23	-47	0
+24	-47	0
+25	-47	0
+26	-47	0
+27	-47	0
+28	-47	0
+29	-47	0
+30	-47	0
+31	-47	0
+32	-47	0
+33	-47	0
+34	-47	0
+35	-47	0
+36	-47	0
+37	-47	0
+38	-47	0
+39	-47	0
+40	-47	0
+41	-47	0
+42	-47	0
+43	-47	0
+44	-47	0
+45	-47	0
+46	-47	0
+47	-47	0
+48	-47	0
+49	-47	0
+50	-47	0
+51	-47	0
+52	-47	0
+53	-47	0
+54	-47	0
+55	-47	0
+56	-47	0
+57	-47	0
+58	-47	0
+59	-47	0
+60	-47	0
+61	-47	0
+62	-47	0
+63	-47	0
+64	-47	0
+65	-47	0
+66	-47	0
+67	-47	0
+68	-47	0
+69	-47	0
+70	-47	0
+71	-47	0
+72	-47	0
+73	-47	0
+74	-47	0
+75	-47	0
+76	-47	0
+77	-47	0
+78	-47	0
+79	-47	0
+80	-47	0
+81	-47	0
+82	-47	0
+83	-47	0
+84	-47	0
+85	-47	0
+86	-47	0
+87	-47	0
+88	-47	0
+89	-47	0
+90	-47	0
+91	-47	0
+92	-47	0
+93	-47	0
+94	-47	0
+95	-47	0
+96	-47	0
+97	-47	0
+98	-47	0
+99	-47	0
+100	-47	0
+101	-47	0
+102	-47	0
+103	-47	0
+104	-47	0
+105	-47	0
+106	-47	0
+107	-47	0
+108	-47	0
+109	-47	0
+110	-47	0
+111	-47	0
+112	-47	0
+113	-47	0
+114	-47	0
+115	-47	0
+116	-47	0
+117	-47	0
+118	-47	0
+119	-47	0
+120	-47	0
+121	-47	0
+122	-47	0
+123	-47	0
+124	-47	0
+125	-47	0
+126	-47	0
+127	-47	0
+128	-47	0
+129	-47	0
+130	-47	0
+131	-47	0
+132	-47	0
+133	-47	0
+134	-47	0
+135	-47	0
+136	-47	0
+137	-47	0
+138	-47	0
+139	-47	0
+140	-47	0
+141	-47	0
+142	-47	0
+143	-47	0
+144	-47	0
+145	-47	0
+146	-47	0
+147	-47	0
+148	-47	0
+149	-47	0
+150	-47	0
+151	-47	0
+152	-47	0
+153	-47	0
+154	-47	0
+155	-47	0
+156	-47	0
+157	-47	0
+158	-47	0
+159	-47	0
+160	-47	0
+161	-47	0
+162	-47	0
+163	-47	0
+164	-47	0
+165	-47	0
+166	-47	0
+167	-47	0
+168	-47	0
+169	-47	-0.056208
+170	-47	0
+171	-47	0
+172	-47	0
+173	-47	0
+174	-47	0
+175	-47	0
+176	-47	0
+177	-47	0
+178	-47	0
+179	-47	0
+180	-47	0
+181	-47	0
+182	-47	0
+183	-47	0
+184	-47	0
+185	-47	0
+186	-47	0
+187	-47	0
+188	-47	0
+189	-47	0
+190	-47	0
+191	-47	0
+192	-47	0
+193	-47	0
+194	-47	0
+195	-47	0
+196	-47	0
+197	-47	0
+198	-47	0
+199	-47	0
+200	-47	0
+201	-47	0
+202	-47	0
+203	-47	0
+204	-47	0
+205	-47	0
+206	-47	0
+207	-47	0
+208	-47	0
+209	-47	0
+210	-47	0
+211	-47	0
+212	-47	0
+213	-47	0
+214	-47	0
+215	-47	0
+216	-47	0
+217	-47	0
+218	-47	0
+219	-47	0
+220	-47	0
+221	-47	0
+222	-47	0
+223	-47	0
+224	-47	0
+225	-47	0
+226	-47	0
+227	-47	0
+228	-47	0
+229	-47	0
+230	-47	0
+231	-47	0
+232	-47	0
+233	-47	0
+234	-47	0
+235	-47	0
+236	-47	0
+237	-47	0
+238	-47	0
+239	-47	0
+240	-47	0
+241	-47	0
+242	-47	0
+243	-47	0
+244	-47	0
+245	-47	0
+246	-47	0
+247	-47	0
+248	-47	0
+249	-47	0
+250	-47	0
+251	-47	0
+252	-47	0
+253	-47	0
+254	-47	0
+255	-47	0
+256	-47	0
+257	-47	0
+258	-47	0
+259	-47	0
+260	-47	0
+261	-47	0
+262	-47	0
+263	-47	0
+264	-47	0
+265	-47	0
+266	-47	0
+267	-47	0
+268	-47	0
+269	-47	0
+270	-47	0
+271	-47	0
+272	-47	0
+273	-47	0
+274	-47	0
+275	-47	0
+276	-47	0
+277	-47	0
+278	-47	0
+279	-47	0
+280	-47	0
+281	-47	0
+282	-47	0
+283	-47	0
+284	-47	0
+285	-47	-0.49778
+286	-47	-0.36063
+287	-47	0
+288	-47	-4.1822
+289	-47	-6.4845
+290	-47	-4.6862
+291	-47	-3.3482
+292	-47	-2.0946
+293	-47	-0.56467
+294	-47	-0.0019821
+295	-47	0
+296	-47	0
+297	-47	0
+298	-47	0
+299	-47	0
+300	-47	0
+301	-47	0
+302	-47	0
+303	-47	0
+304	-47	0
+305	-47	0
+306	-47	0
+307	-47	0
+308	-47	0
+309	-47	0
+310	-47	0
+311	-47	0
+312	-47	0
+313	-47	0
+314	-47	0
+315	-47	0
+316	-47	0
+317	-47	0
+318	-47	0
+319	-47	0
+320	-47	0
+321	-47	0
+322	-47	0
+323	-47	0
+324	-47	0
+325	-47	0
+326	-47	0
+327	-47	0
+328	-47	0
+329	-47	0
+330	-47	0
+331	-47	0
+332	-47	0
+333	-47	0
+334	-47	0
+335	-47	0
+336	-47	0
+337	-47	0
+338	-47	0
+339	-47	0
+340	-47	0
+341	-47	0
+342	-47	0
+343	-47	0
+344	-47	0
+345	-47	0
+346	-47	0
+347	-47	0
+348	-47	0
+349	-47	0
+350	-47	0
+351	-47	0
+352	-47	0
+353	-47	0
+354	-47	0
+355	-47	0
+356	-47	0
+357	-47	0
+358	-47	0
+359	-47	0
+360	-47	0
+0	-46.5	0
+1	-46.5	0
+2	-46.5	0
+3	-46.5	0
+4	-46.5	0
+5	-46.5	0
+6	-46.5	0
+7	-46.5	0
+8	-46.5	0
+9	-46.5	0
+10	-46.5	0
+11	-46.5	0
+12	-46.5	0
+13	-46.5	0
+14	-46.5	0
+15	-46.5	0
+16	-46.5	0
+17	-46.5	0
+18	-46.5	0
+19	-46.5	0
+20	-46.5	0
+21	-46.5	0
+22	-46.5	0
+23	-46.5	0
+24	-46.5	0
+25	-46.5	0
+26	-46.5	0
+27	-46.5	0
+28	-46.5	0
+29	-46.5	0
+30	-46.5	0
+31	-46.5	0
+32	-46.5	0
+33	-46.5	0
+34	-46.5	0
+35	-46.5	0
+36	-46.5	0
+37	-46.5	0
+38	-46.5	0
+39	-46.5	0
+40	-46.5	0
+41	-46.5	0
+42	-46.5	0
+43	-46.5	0
+44	-46.5	0
+45	-46.5	0
+46	-46.5	0
+47	-46.5	0
+48	-46.5	0
+49	-46.5	0
+50	-46.5	0
+51	-46.5	0
+52	-46.5	0
+53	-46.5	0
+54	-46.5	0
+55	-46.5	0
+56	-46.5	0
+57	-46.5	0
+58	-46.5	0
+59	-46.5	0
+60	-46.5	0
+61	-46.5	0
+62	-46.5	0
+63	-46.5	0
+64	-46.5	0
+65	-46.5	0
+66	-46.5	0
+67	-46.5	0
+68	-46.5	0
+69	-46.5	0
+70	-46.5	0
+71	-46.5	0
+72	-46.5	0
+73	-46.5	0
+74	-46.5	0
+75	-46.5	0
+76	-46.5	0
+77	-46.5	0
+78	-46.5	0
+79	-46.5	0
+80	-46.5	0
+81	-46.5	0
+82	-46.5	0
+83	-46.5	0
+84	-46.5	0
+85	-46.5	0
+86	-46.5	0
+87	-46.5	0
+88	-46.5	0
+89	-46.5	0
+90	-46.5	0
+91	-46.5	0
+92	-46.5	0
+93	-46.5	0
+94	-46.5	0
+95	-46.5	0
+96	-46.5	0
+97	-46.5	0
+98	-46.5	0
+99	-46.5	0
+100	-46.5	0
+101	-46.5	0
+102	-46.5	0
+103	-46.5	0
+104	-46.5	0
+105	-46.5	0
+106	-46.5	0
+107	-46.5	0
+108	-46.5	0
+109	-46.5	0
+110	-46.5	0
+111	-46.5	0
+112	-46.5	0
+113	-46.5	0
+114	-46.5	0
+115	-46.5	0
+116	-46.5	0
+117	-46.5	0
+118	-46.5	0
+119	-46.5	0
+120	-46.5	0
+121	-46.5	0
+122	-46.5	0
+123	-46.5	0
+124	-46.5	0
+125	-46.5	0
+126	-46.5	0
+127	-46.5	0
+128	-46.5	0
+129	-46.5	0
+130	-46.5	0
+131	-46.5	0
+132	-46.5	0
+133	-46.5	0
+134	-46.5	0
+135	-46.5	0
+136	-46.5	0
+137	-46.5	0
+138	-46.5	0
+139	-46.5	0
+140	-46.5	0
+141	-46.5	0
+142	-46.5	0
+143	-46.5	0
+144	-46.5	0
+145	-46.5	0
+146	-46.5	0
+147	-46.5	0
+148	-46.5	0
+149	-46.5	0
+150	-46.5	0
+151	-46.5	0
+152	-46.5	0
+153	-46.5	0
+154	-46.5	0
+155	-46.5	0
+156	-46.5	0
+157	-46.5	0
+158	-46.5	0
+159	-46.5	0
+160	-46.5	0
+161	-46.5	0
+162	-46.5	0
+163	-46.5	0
+164	-46.5	0
+165	-46.5	0
+166	-46.5	0
+167	-46.5	-0.25165
+168	-46.5	-0.3197
+169	-46.5	-0.26248
+170	-46.5	-0.088923
+171	-46.5	0
+172	-46.5	0
+173	-46.5	0
+174	-46.5	0
+175	-46.5	0
+176	-46.5	0
+177	-46.5	0
+178	-46.5	0
+179	-46.5	0
+180	-46.5	0
+181	-46.5	0
+182	-46.5	0
+183	-46.5	0
+184	-46.5	0
+185	-46.5	0
+186	-46.5	0
+187	-46.5	0
+188	-46.5	0
+189	-46.5	0
+190	-46.5	0
+191	-46.5	0
+192	-46.5	0
+193	-46.5	0
+194	-46.5	0
+195	-46.5	0
+196	-46.5	0
+197	-46.5	0
+198	-46.5	0
+199	-46.5	0
+200	-46.5	0
+201	-46.5	0
+202	-46.5	0
+203	-46.5	0
+204	-46.5	0
+205	-46.5	0
+206	-46.5	0
+207	-46.5	0
+208	-46.5	0
+209	-46.5	0
+210	-46.5	0
+211	-46.5	0
+212	-46.5	0
+213	-46.5	0
+214	-46.5	0
+215	-46.5	0
+216	-46.5	0
+217	-46.5	0
+218	-46.5	0
+219	-46.5	0
+220	-46.5	0
+221	-46.5	0
+222	-46.5	0
+223	-46.5	0
+224	-46.5	0
+225	-46.5	0
+226	-46.5	0
+227	-46.5	0
+228	-46.5	0
+229	-46.5	0
+230	-46.5	0
+231	-46.5	0
+232	-46.5	0
+233	-46.5	0
+234	-46.5	0
+235	-46.5	0
+236	-46.5	0
+237	-46.5	0
+238	-46.5	0
+239	-46.5	0
+240	-46.5	0
+241	-46.5	0
+242	-46.5	0
+243	-46.5	0
+244	-46.5	0
+245	-46.5	0
+246	-46.5	0
+247	-46.5	0
+248	-46.5	0
+249	-46.5	0
+250	-46.5	0
+251	-46.5	0
+252	-46.5	0
+253	-46.5	0
+254	-46.5	0
+255	-46.5	0
+256	-46.5	0
+257	-46.5	0
+258	-46.5	0
+259	-46.5	0
+260	-46.5	0
+261	-46.5	0
+262	-46.5	0
+263	-46.5	0
+264	-46.5	0
+265	-46.5	0
+266	-46.5	0
+267	-46.5	0
+268	-46.5	0
+269	-46.5	0
+270	-46.5	0
+271	-46.5	0
+272	-46.5	0
+273	-46.5	0
+274	-46.5	0
+275	-46.5	0
+276	-46.5	0
+277	-46.5	0
+278	-46.5	0
+279	-46.5	0
+280	-46.5	0
+281	-46.5	0
+282	-46.5	0
+283	-46.5	0
+284	-46.5	0
+285	-46.5	-1.3946
+286	-46.5	-2.654
+287	-46.5	0
+288	-46.5	-0.25447
+289	-46.5	-5.8509
+290	-46.5	-4.2217
+291	-46.5	-3.0184
+292	-46.5	-2.0087
+293	-46.5	-0.37531
+294	-46.5	0
+295	-46.5	0
+296	-46.5	0
+297	-46.5	0
+298	-46.5	0
+299	-46.5	0
+300	-46.5	0
+301	-46.5	0
+302	-46.5	0
+303	-46.5	0
+304	-46.5	0
+305	-46.5	0
+306	-46.5	0
+307	-46.5	0
+308	-46.5	0
+309	-46.5	0
+310	-46.5	0
+311	-46.5	0
+312	-46.5	0
+313	-46.5	0
+314	-46.5	0
+315	-46.5	0
+316	-46.5	0
+317	-46.5	0
+318	-46.5	0
+319	-46.5	0
+320	-46.5	0
+321	-46.5	0
+322	-46.5	0
+323	-46.5	0
+324	-46.5	0
+325	-46.5	0
+326	-46.5	0
+327	-46.5	0
+328	-46.5	0
+329	-46.5	0
+330	-46.5	0
+331	-46.5	0
+332	-46.5	0
+333	-46.5	0
+334	-46.5	0
+335	-46.5	0
+336	-46.5	0
+337	-46.5	0
+338	-46.5	0
+339	-46.5	0
+340	-46.5	0
+341	-46.5	0
+342	-46.5	0
+343	-46.5	0
+344	-46.5	0
+345	-46.5	0
+346	-46.5	0
+347	-46.5	0
+348	-46.5	0
+349	-46.5	0
+350	-46.5	0
+351	-46.5	0
+352	-46.5	0
+353	-46.5	0
+354	-46.5	0
+355	-46.5	0
+356	-46.5	0
+357	-46.5	0
+358	-46.5	0
+359	-46.5	0
+360	-46.5	0
+0	-46	0
+1	-46	0
+2	-46	0
+3	-46	0
+4	-46	0
+5	-46	0
+6	-46	0
+7	-46	0
+8	-46	0
+9	-46	0
+10	-46	0
+11	-46	0
+12	-46	0
+13	-46	0
+14	-46	0
+15	-46	0
+16	-46	0
+17	-46	0
+18	-46	0
+19	-46	0
+20	-46	0
+21	-46	0
+22	-46	0
+23	-46	0
+24	-46	0
+25	-46	0
+26	-46	0
+27	-46	0
+28	-46	0
+29	-46	0
+30	-46	0
+31	-46	0
+32	-46	0
+33	-46	0
+34	-46	0
+35	-46	0
+36	-46	0
+37	-46	0
+38	-46	0
+39	-46	0
+40	-46	0
+41	-46	0
+42	-46	0
+43	-46	0
+44	-46	0
+45	-46	0
+46	-46	0
+47	-46	0
+48	-46	0
+49	-46	0
+50	-46	0
+51	-46	0
+52	-46	0
+53	-46	0
+54	-46	0
+55	-46	0
+56	-46	0
+57	-46	0
+58	-46	0
+59	-46	0
+60	-46	0
+61	-46	0
+62	-46	0
+63	-46	0
+64	-46	0
+65	-46	0
+66	-46	0
+67	-46	0
+68	-46	0
+69	-46	0
+70	-46	0
+71	-46	0
+72	-46	0
+73	-46	0
+74	-46	0
+75	-46	0
+76	-46	0
+77	-46	0
+78	-46	0
+79	-46	0
+80	-46	0
+81	-46	0
+82	-46	0
+83	-46	0
+84	-46	0
+85	-46	0
+86	-46	0
+87	-46	0
+88	-46	0
+89	-46	0
+90	-46	0
+91	-46	0
+92	-46	0
+93	-46	0
+94	-46	0
+95	-46	0
+96	-46	0
+97	-46	0
+98	-46	0
+99	-46	0
+100	-46	0
+101	-46	0
+102	-46	0
+103	-46	0
+104	-46	0
+105	-46	0
+106	-46	0
+107	-46	0
+108	-46	0
+109	-46	0
+110	-46	0
+111	-46	0
+112	-46	0
+113	-46	0
+114	-46	0
+115	-46	0
+116	-46	0
+117	-46	0
+118	-46	0
+119	-46	0
+120	-46	0
+121	-46	0
+122	-46	0
+123	-46	0
+124	-46	0
+125	-46	0
+126	-46	0
+127	-46	0
+128	-46	0
+129	-46	0
+130	-46	0
+131	-46	0
+132	-46	0
+133	-46	0
+134	-46	0
+135	-46	0
+136	-46	0
+137	-46	0
+138	-46	0
+139	-46	0
+140	-46	0
+141	-46	0
+142	-46	0
+143	-46	0
+144	-46	0
+145	-46	0
+146	-46	0
+147	-46	0
+148	-46	0
+149	-46	0
+150	-46	0
+151	-46	0
+152	-46	0
+153	-46	0
+154	-46	0
+155	-46	0
+156	-46	0
+157	-46	0
+158	-46	0
+159	-46	0
+160	-46	0
+161	-46	0
+162	-46	0
+163	-46	0
+164	-46	0
+165	-46	0
+166	-46	0
+167	-46	-0.55511
+168	-46	-0.72615
+169	-46	-0.54815
+170	-46	-0.25678
+171	-46	-0.0010684
+172	-46	0
+173	-46	0
+174	-46	0
+175	-46	0
+176	-46	0
+177	-46	0
+178	-46	0
+179	-46	0
+180	-46	0
+181	-46	0
+182	-46	0
+183	-46	0
+184	-46	0
+185	-46	0
+186	-46	0
+187	-46	0
+188	-46	0
+189	-46	0
+190	-46	0
+191	-46	0
+192	-46	0
+193	-46	0
+194	-46	0
+195	-46	0
+196	-46	0
+197	-46	0
+198	-46	0
+199	-46	0
+200	-46	0
+201	-46	0
+202	-46	0
+203	-46	0
+204	-46	0
+205	-46	0
+206	-46	0
+207	-46	0
+208	-46	0
+209	-46	0
+210	-46	0
+211	-46	0
+212	-46	0
+213	-46	0
+214	-46	0
+215	-46	0
+216	-46	0
+217	-46	0
+218	-46	0
+219	-46	0
+220	-46	0
+221	-46	0
+222	-46	0
+223	-46	0
+224	-46	0
+225	-46	0
+226	-46	0
+227	-46	0
+228	-46	0
+229	-46	0
+230	-46	0
+231	-46	0
+232	-46	0
+233	-46	0
+234	-46	0
+235	-46	0
+236	-46	0
+237	-46	0
+238	-46	0
+239	-46	0
+240	-46	0
+241	-46	0
+242	-46	0
+243	-46	0
+244	-46	0
+245	-46	0
+246	-46	0
+247	-46	0
+248	-46	0
+249	-46	0
+250	-46	0
+251	-46	0
+252	-46	0
+253	-46	0
+254	-46	0
+255	-46	0
+256	-46	0
+257	-46	0
+258	-46	0
+259	-46	0
+260	-46	0
+261	-46	0
+262	-46	0
+263	-46	0
+264	-46	0
+265	-46	0
+266	-46	0
+267	-46	0
+268	-46	0
+269	-46	0
+270	-46	0
+271	-46	0
+272	-46	0
+273	-46	0
+274	-46	0
+275	-46	0
+276	-46	0
+277	-46	0
+278	-46	0
+279	-46	0
+280	-46	0
+281	-46	0
+282	-46	0
+283	-46	0
+284	-46	0
+285	-46	-0.10353
+286	-46	-2.2488
+287	-46	0
+288	-46	-3.3736
+289	-46	-5.5885
+290	-46	-3.9135
+291	-46	-2.8922
+292	-46	-1.9492
+293	-46	0
+294	-46	0
+295	-46	0
+296	-46	0
+297	-46	0
+298	-46	0
+299	-46	0
+300	-46	0
+301	-46	0
+302	-46	0
+303	-46	0
+304	-46	0
+305	-46	0
+306	-46	0
+307	-46	0
+308	-46	0
+309	-46	0
+310	-46	0
+311	-46	0
+312	-46	0
+313	-46	0
+314	-46	0
+315	-46	0
+316	-46	0
+317	-46	0
+318	-46	0
+319	-46	0
+320	-46	0
+321	-46	0
+322	-46	0
+323	-46	0
+324	-46	0
+325	-46	0
+326	-46	0
+327	-46	0
+328	-46	0
+329	-46	0
+330	-46	0
+331	-46	0
+332	-46	0
+333	-46	0
+334	-46	0
+335	-46	0
+336	-46	0
+337	-46	0
+338	-46	0
+339	-46	0
+340	-46	0
+341	-46	0
+342	-46	0
+343	-46	0
+344	-46	0
+345	-46	0
+346	-46	0
+347	-46	0
+348	-46	0
+349	-46	0
+350	-46	0
+351	-46	0
+352	-46	0
+353	-46	0
+354	-46	0
+355	-46	0
+356	-46	0
+357	-46	0
+358	-46	0
+359	-46	0
+360	-46	0
+0	-45.5	0
+1	-45.5	0
+2	-45.5	0
+3	-45.5	0
+4	-45.5	0
+5	-45.5	0
+6	-45.5	0
+7	-45.5	0
+8	-45.5	0
+9	-45.5	0
+10	-45.5	0
+11	-45.5	0
+12	-45.5	0
+13	-45.5	0
+14	-45.5	0
+15	-45.5	0
+16	-45.5	0
+17	-45.5	0
+18	-45.5	0
+19	-45.5	0
+20	-45.5	0
+21	-45.5	0
+22	-45.5	0
+23	-45.5	0
+24	-45.5	0
+25	-45.5	0
+26	-45.5	0
+27	-45.5	0
+28	-45.5	0
+29	-45.5	0
+30	-45.5	0
+31	-45.5	0
+32	-45.5	0
+33	-45.5	0
+34	-45.5	0
+35	-45.5	0
+36	-45.5	0
+37	-45.5	0
+38	-45.5	0
+39	-45.5	0
+40	-45.5	0
+41	-45.5	0
+42	-45.5	0
+43	-45.5	0
+44	-45.5	0
+45	-45.5	0
+46	-45.5	0
+47	-45.5	0
+48	-45.5	0
+49	-45.5	0
+50	-45.5	0
+51	-45.5	0
+52	-45.5	0
+53	-45.5	0
+54	-45.5	0
+55	-45.5	0
+56	-45.5	0
+57	-45.5	0
+58	-45.5	0
+59	-45.5	0
+60	-45.5	0
+61	-45.5	0
+62	-45.5	0
+63	-45.5	0
+64	-45.5	0
+65	-45.5	0
+66	-45.5	0
+67	-45.5	0
+68	-45.5	0
+69	-45.5	0
+70	-45.5	0
+71	-45.5	0
+72	-45.5	0
+73	-45.5	0
+74	-45.5	0
+75	-45.5	0
+76	-45.5	0
+77	-45.5	0
+78	-45.5	0
+79	-45.5	0
+80	-45.5	0
+81	-45.5	0
+82	-45.5	0
+83	-45.5	0
+84	-45.5	0
+85	-45.5	0
+86	-45.5	0
+87	-45.5	0
+88	-45.5	0
+89	-45.5	0
+90	-45.5	0
+91	-45.5	0
+92	-45.5	0
+93	-45.5	0
+94	-45.5	0
+95	-45.5	0
+96	-45.5	0
+97	-45.5	0
+98	-45.5	0
+99	-45.5	0
+100	-45.5	0
+101	-45.5	0
+102	-45.5	0
+103	-45.5	0
+104	-45.5	0
+105	-45.5	0
+106	-45.5	0
+107	-45.5	0
+108	-45.5	0
+109	-45.5	0
+110	-45.5	0
+111	-45.5	0
+112	-45.5	0
+113	-45.5	0
+114	-45.5	0
+115	-45.5	0
+116	-45.5	0
+117	-45.5	0
+118	-45.5	0
+119	-45.5	0
+120	-45.5	0
+121	-45.5	0
+122	-45.5	0
+123	-45.5	0
+124	-45.5	0
+125	-45.5	0
+126	-45.5	0
+127	-45.5	0
+128	-45.5	0
+129	-45.5	0
+130	-45.5	0
+131	-45.5	0
+132	-45.5	0
+133	-45.5	0
+134	-45.5	0
+135	-45.5	0
+136	-45.5	0
+137	-45.5	0
+138	-45.5	0
+139	-45.5	0
+140	-45.5	0
+141	-45.5	0
+142	-45.5	0
+143	-45.5	0
+144	-45.5	0
+145	-45.5	0
+146	-45.5	0
+147	-45.5	0
+148	-45.5	0
+149	-45.5	0
+150	-45.5	0
+151	-45.5	0
+152	-45.5	0
+153	-45.5	0
+154	-45.5	0
+155	-45.5	0
+156	-45.5	0
+157	-45.5	0
+158	-45.5	0
+159	-45.5	0
+160	-45.5	0
+161	-45.5	0
+162	-45.5	0
+163	-45.5	0
+164	-45.5	0
+165	-45.5	0
+166	-45.5	0
+167	-45.5	-0.60842
+168	-45.5	-1.3139
+169	-45.5	-0.96843
+170	-45.5	-0.49974
+171	-45.5	-0.12309
+172	-45.5	0
+173	-45.5	0
+174	-45.5	0
+175	-45.5	0
+176	-45.5	0
+177	-45.5	0
+178	-45.5	0
+179	-45.5	0
+180	-45.5	0
+181	-45.5	0
+182	-45.5	0
+183	-45.5	0
+184	-45.5	0
+185	-45.5	0
+186	-45.5	0
+187	-45.5	0
+188	-45.5	0
+189	-45.5	0
+190	-45.5	0
+191	-45.5	0
+192	-45.5	0
+193	-45.5	0
+194	-45.5	0
+195	-45.5	0
+196	-45.5	0
+197	-45.5	0
+198	-45.5	0
+199	-45.5	0
+200	-45.5	0
+201	-45.5	0
+202	-45.5	0
+203	-45.5	0
+204	-45.5	0
+205	-45.5	0
+206	-45.5	0
+207	-45.5	0
+208	-45.5	0
+209	-45.5	0
+210	-45.5	0
+211	-45.5	0
+212	-45.5	0
+213	-45.5	0
+214	-45.5	0
+215	-45.5	0
+216	-45.5	0
+217	-45.5	0
+218	-45.5	0
+219	-45.5	0
+220	-45.5	0
+221	-45.5	0
+222	-45.5	0
+223	-45.5	0
+224	-45.5	0
+225	-45.5	0
+226	-45.5	0
+227	-45.5	0
+228	-45.5	0
+229	-45.5	0
+230	-45.5	0
+231	-45.5	0
+232	-45.5	0
+233	-45.5	0
+234	-45.5	0
+235	-45.5	0
+236	-45.5	0
+237	-45.5	0
+238	-45.5	0
+239	-45.5	0
+240	-45.5	0
+241	-45.5	0
+242	-45.5	0
+243	-45.5	0
+244	-45.5	0
+245	-45.5	0
+246	-45.5	0
+247	-45.5	0
+248	-45.5	0
+249	-45.5	0
+250	-45.5	0
+251	-45.5	0
+252	-45.5	0
+253	-45.5	0
+254	-45.5	0
+255	-45.5	0
+256	-45.5	0
+257	-45.5	0
+258	-45.5	0
+259	-45.5	0
+260	-45.5	0
+261	-45.5	0
+262	-45.5	0
+263	-45.5	0
+264	-45.5	0
+265	-45.5	0
+266	-45.5	0
+267	-45.5	0
+268	-45.5	0
+269	-45.5	0
+270	-45.5	0
+271	-45.5	0
+272	-45.5	0
+273	-45.5	0
+274	-45.5	0
+275	-45.5	0
+276	-45.5	0
+277	-45.5	0
+278	-45.5	0
+279	-45.5	0
+280	-45.5	0
+281	-45.5	0
+282	-45.5	0
+283	-45.5	0
+284	-45.5	0
+285	-45.5	0
+286	-45.5	0
+287	-45.5	-0.98572
+288	-45.5	-5.1883
+289	-45.5	-5.1781
+290	-45.5	-3.6693
+291	-45.5	-2.6338
+292	-45.5	-1.9129
+293	-45.5	-0.24402
+294	-45.5	0
+295	-45.5	0
+296	-45.5	0
+297	-45.5	0
+298	-45.5	0
+299	-45.5	0
+300	-45.5	0
+301	-45.5	0
+302	-45.5	0
+303	-45.5	0
+304	-45.5	0
+305	-45.5	0
+306	-45.5	0
+307	-45.5	0
+308	-45.5	0
+309	-45.5	0
+310	-45.5	0
+311	-45.5	0
+312	-45.5	0
+313	-45.5	0
+314	-45.5	0
+315	-45.5	0
+316	-45.5	0
+317	-45.5	0
+318	-45.5	0
+319	-45.5	0
+320	-45.5	0
+321	-45.5	0
+322	-45.5	0
+323	-45.5	0
+324	-45.5	0
+325	-45.5	0
+326	-45.5	0
+327	-45.5	0
+328	-45.5	0
+329	-45.5	0
+330	-45.5	0
+331	-45.5	0
+332	-45.5	0
+333	-45.5	0
+334	-45.5	0
+335	-45.5	0
+336	-45.5	0
+337	-45.5	0
+338	-45.5	0
+339	-45.5	0
+340	-45.5	0
+341	-45.5	0
+342	-45.5	0
+343	-45.5	0
+344	-45.5	0
+345	-45.5	0
+346	-45.5	0
+347	-45.5	0
+348	-45.5	0
+349	-45.5	0
+350	-45.5	0
+351	-45.5	0
+352	-45.5	0
+353	-45.5	0
+354	-45.5	0
+355	-45.5	0
+356	-45.5	0
+357	-45.5	0
+358	-45.5	0
+359	-45.5	0
+360	-45.5	0
+0	-45	0
+1	-45	0
+2	-45	0
+3	-45	0
+4	-45	0
+5	-45	0
+6	-45	0
+7	-45	0
+8	-45	0
+9	-45	0
+10	-45	0
+11	-45	0
+12	-45	0
+13	-45	0
+14	-45	0
+15	-45	0
+16	-45	0
+17	-45	0
+18	-45	0
+19	-45	0
+20	-45	0
+21	-45	0
+22	-45	0
+23	-45	0
+24	-45	0
+25	-45	0
+26	-45	0
+27	-45	0
+28	-45	0
+29	-45	0
+30	-45	0
+31	-45	0
+32	-45	0
+33	-45	0
+34	-45	0
+35	-45	0
+36	-45	0
+37	-45	0
+38	-45	0
+39	-45	0
+40	-45	0
+41	-45	0
+42	-45	0
+43	-45	0
+44	-45	0
+45	-45	0
+46	-45	0
+47	-45	0
+48	-45	0
+49	-45	0
+50	-45	0
+51	-45	0
+52	-45	0
+53	-45	0
+54	-45	0
+55	-45	0
+56	-45	0
+57	-45	0
+58	-45	0
+59	-45	0
+60	-45	0
+61	-45	0
+62	-45	0
+63	-45	0
+64	-45	0
+65	-45	0
+66	-45	0
+67	-45	0
+68	-45	0
+69	-45	0
+70	-45	0
+71	-45	0
+72	-45	0
+73	-45	0
+74	-45	0
+75	-45	0
+76	-45	0
+77	-45	0
+78	-45	0
+79	-45	0
+80	-45	0
+81	-45	0
+82	-45	0
+83	-45	0
+84	-45	0
+85	-45	0
+86	-45	0
+87	-45	0
+88	-45	0
+89	-45	0
+90	-45	0
+91	-45	0
+92	-45	0
+93	-45	0
+94	-45	0
+95	-45	0
+96	-45	0
+97	-45	0
+98	-45	0
+99	-45	0
+100	-45	0
+101	-45	0
+102	-45	0
+103	-45	0
+104	-45	0
+105	-45	0
+106	-45	0
+107	-45	0
+108	-45	0
+109	-45	0
+110	-45	0
+111	-45	0
+112	-45	0
+113	-45	0
+114	-45	0
+115	-45	0
+116	-45	0
+117	-45	0
+118	-45	0
+119	-45	0
+120	-45	0
+121	-45	0
+122	-45	0
+123	-45	0
+124	-45	0
+125	-45	0
+126	-45	0
+127	-45	0
+128	-45	0
+129	-45	0
+130	-45	0
+131	-45	0
+132	-45	0
+133	-45	0
+134	-45	0
+135	-45	0
+136	-45	0
+137	-45	0
+138	-45	0
+139	-45	0
+140	-45	0
+141	-45	0
+142	-45	0
+143	-45	0
+144	-45	0
+145	-45	0
+146	-45	0
+147	-45	0
+148	-45	0
+149	-45	0
+150	-45	0
+151	-45	0
+152	-45	0
+153	-45	0
+154	-45	0
+155	-45	0
+156	-45	0
+157	-45	0
+158	-45	0
+159	-45	0
+160	-45	0
+161	-45	0
+162	-45	0
+163	-45	0
+164	-45	0
+165	-45	0
+166	-45	0
+167	-45	-0.092118
+168	-45	-0.35039
+169	-45	-1.3661
+170	-45	-0.93662
+171	-45	-0.33991
+172	-45	0
+173	-45	0
+174	-45	0
+175	-45	0
+176	-45	0
+177	-45	0
+178	-45	0
+179	-45	0
+180	-45	0
+181	-45	0
+182	-45	0
+183	-45	0
+184	-45	0
+185	-45	0
+186	-45	0
+187	-45	0
+188	-45	0
+189	-45	0
+190	-45	0
+191	-45	0
+192	-45	0
+193	-45	0
+194	-45	0
+195	-45	0
+196	-45	0
+197	-45	0
+198	-45	0
+199	-45	0
+200	-45	0
+201	-45	0
+202	-45	0
+203	-45	0
+204	-45	0
+205	-45	0
+206	-45	0
+207	-45	0
+208	-45	0
+209	-45	0
+210	-45	0
+211	-45	0
+212	-45	0
+213	-45	0
+214	-45	0
+215	-45	0
+216	-45	0
+217	-45	0
+218	-45	0
+219	-45	0
+220	-45	0
+221	-45	0
+222	-45	0
+223	-45	0
+224	-45	0
+225	-45	0
+226	-45	0
+227	-45	0
+228	-45	0
+229	-45	0
+230	-45	0
+231	-45	0
+232	-45	0
+233	-45	0
+234	-45	0
+235	-45	0
+236	-45	0
+237	-45	0
+238	-45	0
+239	-45	0
+240	-45	0
+241	-45	0
+242	-45	0
+243	-45	0
+244	-45	0
+245	-45	0
+246	-45	0
+247	-45	0
+248	-45	0
+249	-45	0
+250	-45	0
+251	-45	0
+252	-45	0
+253	-45	0
+254	-45	0
+255	-45	0
+256	-45	0
+257	-45	0
+258	-45	0
+259	-45	0
+260	-45	0
+261	-45	0
+262	-45	0
+263	-45	0
+264	-45	0
+265	-45	0
+266	-45	0
+267	-45	0
+268	-45	0
+269	-45	0
+270	-45	0
+271	-45	0
+272	-45	0
+273	-45	0
+274	-45	0
+275	-45	0
+276	-45	0
+277	-45	0
+278	-45	0
+279	-45	0
+280	-45	0
+281	-45	0
+282	-45	0
+283	-45	0
+284	-45	0
+285	-45	0
+286	-45	-0.20225
+287	-45	-2.3798
+288	-45	-2.6088
+289	-45	-4.6777
+290	-45	-3.3501
+291	-45	-2.3572
+292	-45	-1.7443
+293	-45	-0.719
+294	-45	-0.17092
+295	-45	0
+296	-45	0
+297	-45	0
+298	-45	0
+299	-45	0
+300	-45	0
+301	-45	0
+302	-45	0
+303	-45	0
+304	-45	0
+305	-45	0
+306	-45	0
+307	-45	0
+308	-45	0
+309	-45	0
+310	-45	0
+311	-45	0
+312	-45	0
+313	-45	0
+314	-45	0
+315	-45	0
+316	-45	0
+317	-45	0
+318	-45	0
+319	-45	0
+320	-45	0
+321	-45	0
+322	-45	0
+323	-45	0
+324	-45	0
+325	-45	0
+326	-45	0
+327	-45	0
+328	-45	0
+329	-45	0
+330	-45	0
+331	-45	0
+332	-45	0
+333	-45	0
+334	-45	0
+335	-45	0
+336	-45	0
+337	-45	0
+338	-45	0
+339	-45	0
+340	-45	0
+341	-45	0
+342	-45	0
+343	-45	0
+344	-45	0
+345	-45	0
+346	-45	0
+347	-45	0
+348	-45	0
+349	-45	0
+350	-45	0
+351	-45	0
+352	-45	0
+353	-45	0
+354	-45	0
+355	-45	0
+356	-45	0
+357	-45	0
+358	-45	0
+359	-45	0
+360	-45	0
+0	-44.5	0
+1	-44.5	0
+2	-44.5	0
+3	-44.5	0
+4	-44.5	0
+5	-44.5	0
+6	-44.5	0
+7	-44.5	0
+8	-44.5	0
+9	-44.5	0
+10	-44.5	0
+11	-44.5	0
+12	-44.5	0
+13	-44.5	0
+14	-44.5	0
+15	-44.5	0
+16	-44.5	0
+17	-44.5	0
+18	-44.5	0
+19	-44.5	0
+20	-44.5	0
+21	-44.5	0
+22	-44.5	0
+23	-44.5	0
+24	-44.5	0
+25	-44.5	0
+26	-44.5	0
+27	-44.5	0
+28	-44.5	0
+29	-44.5	0
+30	-44.5	0
+31	-44.5	0
+32	-44.5	0
+33	-44.5	0
+34	-44.5	0
+35	-44.5	0
+36	-44.5	0
+37	-44.5	0
+38	-44.5	0
+39	-44.5	0
+40	-44.5	0
+41	-44.5	0
+42	-44.5	0
+43	-44.5	0
+44	-44.5	0
+45	-44.5	0
+46	-44.5	0
+47	-44.5	0
+48	-44.5	0
+49	-44.5	0
+50	-44.5	0
+51	-44.5	0
+52	-44.5	0
+53	-44.5	0
+54	-44.5	0
+55	-44.5	0
+56	-44.5	0
+57	-44.5	0
+58	-44.5	0
+59	-44.5	0
+60	-44.5	0
+61	-44.5	0
+62	-44.5	0
+63	-44.5	0
+64	-44.5	0
+65	-44.5	0
+66	-44.5	0
+67	-44.5	0
+68	-44.5	0
+69	-44.5	0
+70	-44.5	0
+71	-44.5	0
+72	-44.5	0
+73	-44.5	0
+74	-44.5	0
+75	-44.5	0
+76	-44.5	0
+77	-44.5	0
+78	-44.5	0
+79	-44.5	0
+80	-44.5	0
+81	-44.5	0
+82	-44.5	0
+83	-44.5	0
+84	-44.5	0
+85	-44.5	0
+86	-44.5	0
+87	-44.5	0
+88	-44.5	0
+89	-44.5	0
+90	-44.5	0
+91	-44.5	0
+92	-44.5	0
+93	-44.5	0
+94	-44.5	0
+95	-44.5	0
+96	-44.5	0
+97	-44.5	0
+98	-44.5	0
+99	-44.5	0
+100	-44.5	0
+101	-44.5	0
+102	-44.5	0
+103	-44.5	0
+104	-44.5	0
+105	-44.5	0
+106	-44.5	0
+107	-44.5	0
+108	-44.5	0
+109	-44.5	0
+110	-44.5	0
+111	-44.5	0
+112	-44.5	0
+113	-44.5	0
+114	-44.5	0
+115	-44.5	0
+116	-44.5	0
+117	-44.5	0
+118	-44.5	0
+119	-44.5	0
+120	-44.5	0
+121	-44.5	0
+122	-44.5	0
+123	-44.5	0
+124	-44.5	0
+125	-44.5	0
+126	-44.5	0
+127	-44.5	0
+128	-44.5	0
+129	-44.5	0
+130	-44.5	0
+131	-44.5	0
+132	-44.5	0
+133	-44.5	0
+134	-44.5	0
+135	-44.5	0
+136	-44.5	0
+137	-44.5	0
+138	-44.5	0
+139	-44.5	0
+140	-44.5	0
+141	-44.5	0
+142	-44.5	0
+143	-44.5	0
+144	-44.5	0
+145	-44.5	0
+146	-44.5	0
+147	-44.5	0
+148	-44.5	0
+149	-44.5	0
+150	-44.5	0
+151	-44.5	0
+152	-44.5	0
+153	-44.5	0
+154	-44.5	0
+155	-44.5	0
+156	-44.5	0
+157	-44.5	0
+158	-44.5	0
+159	-44.5	0
+160	-44.5	0
+161	-44.5	0
+162	-44.5	0
+163	-44.5	0
+164	-44.5	0
+165	-44.5	0
+166	-44.5	0
+167	-44.5	0
+168	-44.5	0
+169	-44.5	-0.6272
+170	-44.5	-1.4655
+171	-44.5	-0.62853
+172	-44.5	-0.0087307
+173	-44.5	0
+174	-44.5	0
+175	-44.5	0
+176	-44.5	0
+177	-44.5	0
+178	-44.5	0
+179	-44.5	0
+180	-44.5	0
+181	-44.5	0
+182	-44.5	0
+183	-44.5	0
+184	-44.5	0
+185	-44.5	0
+186	-44.5	0
+187	-44.5	0
+188	-44.5	0
+189	-44.5	0
+190	-44.5	0
+191	-44.5	0
+192	-44.5	0
+193	-44.5	0
+194	-44.5	0
+195	-44.5	0
+196	-44.5	0
+197	-44.5	0
+198	-44.5	0
+199	-44.5	0
+200	-44.5	0
+201	-44.5	0
+202	-44.5	0
+203	-44.5	0
+204	-44.5	0
+205	-44.5	0
+206	-44.5	0
+207	-44.5	0
+208	-44.5	0
+209	-44.5	0
+210	-44.5	0
+211	-44.5	0
+212	-44.5	0
+213	-44.5	0
+214	-44.5	0
+215	-44.5	0
+216	-44.5	0
+217	-44.5	0
+218	-44.5	0
+219	-44.5	0
+220	-44.5	0
+221	-44.5	0
+222	-44.5	0
+223	-44.5	0
+224	-44.5	0
+225	-44.5	0
+226	-44.5	0
+227	-44.5	0
+228	-44.5	0
+229	-44.5	0
+230	-44.5	0
+231	-44.5	0
+232	-44.5	0
+233	-44.5	0
+234	-44.5	0
+235	-44.5	0
+236	-44.5	0
+237	-44.5	0
+238	-44.5	0
+239	-44.5	0
+240	-44.5	0
+241	-44.5	0
+242	-44.5	0
+243	-44.5	0
+244	-44.5	0
+245	-44.5	0
+246	-44.5	0
+247	-44.5	0
+248	-44.5	0
+249	-44.5	0
+250	-44.5	0
+251	-44.5	0
+252	-44.5	0
+253	-44.5	0
+254	-44.5	0
+255	-44.5	0
+256	-44.5	0
+257	-44.5	0
+258	-44.5	0
+259	-44.5	0
+260	-44.5	0
+261	-44.5	0
+262	-44.5	0
+263	-44.5	0
+264	-44.5	0
+265	-44.5	0
+266	-44.5	0
+267	-44.5	0
+268	-44.5	0
+269	-44.5	0
+270	-44.5	0
+271	-44.5	0
+272	-44.5	0
+273	-44.5	0
+274	-44.5	0
+275	-44.5	0
+276	-44.5	0
+277	-44.5	0
+278	-44.5	0
+279	-44.5	0
+280	-44.5	0
+281	-44.5	0
+282	-44.5	0
+283	-44.5	0
+284	-44.5	0
+285	-44.5	0
+286	-44.5	-0.13027
+287	-44.5	-1.783
+288	-44.5	-0.23533
+289	-44.5	-3.9377
+290	-44.5	-3.0349
+291	-44.5	-2.1932
+292	-44.5	-1.5013
+293	-44.5	-0.90957
+294	-44.5	-0.3433
+295	-44.5	0
+296	-44.5	0
+297	-44.5	0
+298	-44.5	0
+299	-44.5	0
+300	-44.5	0
+301	-44.5	0
+302	-44.5	0
+303	-44.5	0
+304	-44.5	0
+305	-44.5	0
+306	-44.5	0
+307	-44.5	0
+308	-44.5	0
+309	-44.5	0
+310	-44.5	0
+311	-44.5	0
+312	-44.5	0
+313	-44.5	0
+314	-44.5	0
+315	-44.5	0
+316	-44.5	0
+317	-44.5	0
+318	-44.5	0
+319	-44.5	0
+320	-44.5	0
+321	-44.5	0
+322	-44.5	0
+323	-44.5	0
+324	-44.5	0
+325	-44.5	0
+326	-44.5	0
+327	-44.5	0
+328	-44.5	0
+329	-44.5	0
+330	-44.5	0
+331	-44.5	0
+332	-44.5	0
+333	-44.5	0
+334	-44.5	0
+335	-44.5	0
+336	-44.5	0
+337	-44.5	0
+338	-44.5	0
+339	-44.5	0
+340	-44.5	0
+341	-44.5	0
+342	-44.5	0
+343	-44.5	0
+344	-44.5	0
+345	-44.5	0
+346	-44.5	0
+347	-44.5	0
+348	-44.5	0
+349	-44.5	0
+350	-44.5	0
+351	-44.5	0
+352	-44.5	0
+353	-44.5	0
+354	-44.5	0
+355	-44.5	0
+356	-44.5	0
+357	-44.5	0
+358	-44.5	0
+359	-44.5	0
+360	-44.5	0
+0	-44	0
+1	-44	0
+2	-44	0
+3	-44	0
+4	-44	0
+5	-44	0
+6	-44	0
+7	-44	0
+8	-44	0
+9	-44	0
+10	-44	0
+11	-44	0
+12	-44	0
+13	-44	0
+14	-44	0
+15	-44	0
+16	-44	0
+17	-44	0
+18	-44	0
+19	-44	0
+20	-44	0
+21	-44	0
+22	-44	0
+23	-44	0
+24	-44	0
+25	-44	0
+26	-44	0
+27	-44	0
+28	-44	0
+29	-44	0
+30	-44	0
+31	-44	0
+32	-44	0
+33	-44	0
+34	-44	0
+35	-44	0
+36	-44	0
+37	-44	0
+38	-44	0
+39	-44	0
+40	-44	0
+41	-44	0
+42	-44	0
+43	-44	0
+44	-44	0
+45	-44	0
+46	-44	0
+47	-44	0
+48	-44	0
+49	-44	0
+50	-44	0
+51	-44	0
+52	-44	0
+53	-44	0
+54	-44	0
+55	-44	0
+56	-44	0
+57	-44	0
+58	-44	0
+59	-44	0
+60	-44	0
+61	-44	0
+62	-44	0
+63	-44	0
+64	-44	0
+65	-44	0
+66	-44	0
+67	-44	0
+68	-44	0
+69	-44	0
+70	-44	0
+71	-44	0
+72	-44	0
+73	-44	0
+74	-44	0
+75	-44	0
+76	-44	0
+77	-44	0
+78	-44	0
+79	-44	0
+80	-44	0
+81	-44	0
+82	-44	0
+83	-44	0
+84	-44	0
+85	-44	0
+86	-44	0
+87	-44	0
+88	-44	0
+89	-44	0
+90	-44	0
+91	-44	0
+92	-44	0
+93	-44	0
+94	-44	0
+95	-44	0
+96	-44	0
+97	-44	0
+98	-44	0
+99	-44	0
+100	-44	0
+101	-44	0
+102	-44	0
+103	-44	0
+104	-44	0
+105	-44	0
+106	-44	0
+107	-44	0
+108	-44	0
+109	-44	0
+110	-44	0
+111	-44	0
+112	-44	0
+113	-44	0
+114	-44	0
+115	-44	0
+116	-44	0
+117	-44	0
+118	-44	0
+119	-44	0
+120	-44	0
+121	-44	0
+122	-44	0
+123	-44	0
+124	-44	0
+125	-44	0
+126	-44	0
+127	-44	0
+128	-44	0
+129	-44	0
+130	-44	0
+131	-44	0
+132	-44	0
+133	-44	0
+134	-44	0
+135	-44	0
+136	-44	0
+137	-44	0
+138	-44	0
+139	-44	0
+140	-44	0
+141	-44	0
+142	-44	0
+143	-44	0
+144	-44	0
+145	-44	0
+146	-44	0
+147	-44	0
+148	-44	-0.019864
+149	-44	0
+150	-44	0
+151	-44	0
+152	-44	0
+153	-44	0
+154	-44	0
+155	-44	0
+156	-44	0
+157	-44	0
+158	-44	0
+159	-44	0
+160	-44	0
+161	-44	0
+162	-44	0
+163	-44	0
+164	-44	0
+165	-44	0
+166	-44	0
+167	-44	0
+168	-44	0
+169	-44	-0.23944
+170	-44	-0.084021
+171	-44	-0.93996
+172	-44	-0.39803
+173	-44	0
+174	-44	0
+175	-44	0
+176	-44	0
+177	-44	0
+178	-44	0
+179	-44	0
+180	-44	0
+181	-44	0
+182	-44	0
+183	-44	0
+184	-44	0
+185	-44	0
+186	-44	0
+187	-44	0
+188	-44	0
+189	-44	0
+190	-44	0
+191	-44	0
+192	-44	0
+193	-44	0
+194	-44	0
+195	-44	0
+196	-44	0
+197	-44	0
+198	-44	0
+199	-44	0
+200	-44	0
+201	-44	0
+202	-44	0
+203	-44	0
+204	-44	0
+205	-44	0
+206	-44	0
+207	-44	0
+208	-44	0
+209	-44	0
+210	-44	0
+211	-44	0
+212	-44	0
+213	-44	0
+214	-44	0
+215	-44	0
+216	-44	0
+217	-44	0
+218	-44	0
+219	-44	0
+220	-44	0
+221	-44	0
+222	-44	0
+223	-44	0
+224	-44	0
+225	-44	0
+226	-44	0
+227	-44	0
+228	-44	0
+229	-44	0
+230	-44	0
+231	-44	0
+232	-44	0
+233	-44	0
+234	-44	0
+235	-44	0
+236	-44	0
+237	-44	0
+238	-44	0
+239	-44	0
+240	-44	0
+241	-44	0
+242	-44	0
+243	-44	0
+244	-44	0
+245	-44	0
+246	-44	0
+247	-44	0
+248	-44	0
+249	-44	0
+250	-44	0
+251	-44	0
+252	-44	0
+253	-44	0
+254	-44	0
+255	-44	0
+256	-44	0
+257	-44	0
+258	-44	0
+259	-44	0
+260	-44	0
+261	-44	0
+262	-44	0
+263	-44	0
+264	-44	0
+265	-44	0
+266	-44	0
+267	-44	0
+268	-44	0
+269	-44	0
+270	-44	0
+271	-44	0
+272	-44	0
+273	-44	0
+274	-44	0
+275	-44	0
+276	-44	0
+277	-44	0
+278	-44	0
+279	-44	0
+280	-44	0
+281	-44	0
+282	-44	0
+283	-44	0
+284	-44	0
+285	-44	0
+286	-44	0
+287	-44	-1.1355
+288	-44	0
+289	-44	-3.2388
+290	-44	-2.5731
+291	-44	-1.9536
+292	-44	-1.2202
+293	-44	-0.80128
+294	-44	-0.38621
+295	-44	0
+296	-44	0
+297	-44	0
+298	-44	0
+299	-44	0
+300	-44	0
+301	-44	0
+302	-44	0
+303	-44	0
+304	-44	0
+305	-44	0
+306	-44	0
+307	-44	0
+308	-44	0
+309	-44	0
+310	-44	0
+311	-44	0
+312	-44	0
+313	-44	0
+314	-44	0
+315	-44	0
+316	-44	0
+317	-44	0
+318	-44	0
+319	-44	0
+320	-44	0
+321	-44	0
+322	-44	0
+323	-44	0
+324	-44	0
+325	-44	0
+326	-44	0
+327	-44	0
+328	-44	0
+329	-44	0
+330	-44	0
+331	-44	0
+332	-44	0
+333	-44	0
+334	-44	0
+335	-44	0
+336	-44	0
+337	-44	0
+338	-44	0
+339	-44	0
+340	-44	0
+341	-44	0
+342	-44	0
+343	-44	0
+344	-44	0
+345	-44	0
+346	-44	0
+347	-44	0
+348	-44	0
+349	-44	0
+350	-44	0
+351	-44	0
+352	-44	0
+353	-44	0
+354	-44	0
+355	-44	0
+356	-44	0
+357	-44	0
+358	-44	0
+359	-44	0
+360	-44	0
+0	-43.5	0
+1	-43.5	0
+2	-43.5	0
+3	-43.5	0
+4	-43.5	0
+5	-43.5	0
+6	-43.5	0
+7	-43.5	0
+8	-43.5	0
+9	-43.5	0
+10	-43.5	0
+11	-43.5	0
+12	-43.5	0
+13	-43.5	0
+14	-43.5	0
+15	-43.5	0
+16	-43.5	0
+17	-43.5	0
+18	-43.5	0
+19	-43.5	0
+20	-43.5	0
+21	-43.5	0
+22	-43.5	0
+23	-43.5	0
+24	-43.5	0
+25	-43.5	0
+26	-43.5	0
+27	-43.5	0
+28	-43.5	0
+29	-43.5	0
+30	-43.5	0
+31	-43.5	0
+32	-43.5	0
+33	-43.5	0
+34	-43.5	0
+35	-43.5	0
+36	-43.5	0
+37	-43.5	0
+38	-43.5	0
+39	-43.5	0
+40	-43.5	0
+41	-43.5	0
+42	-43.5	0
+43	-43.5	0
+44	-43.5	0
+45	-43.5	0
+46	-43.5	0
+47	-43.5	0
+48	-43.5	0
+49	-43.5	0
+50	-43.5	0
+51	-43.5	0
+52	-43.5	0
+53	-43.5	0
+54	-43.5	0
+55	-43.5	0
+56	-43.5	0
+57	-43.5	0
+58	-43.5	0
+59	-43.5	0
+60	-43.5	0
+61	-43.5	0
+62	-43.5	0
+63	-43.5	0
+64	-43.5	0
+65	-43.5	0
+66	-43.5	0
+67	-43.5	0
+68	-43.5	0
+69	-43.5	0
+70	-43.5	0
+71	-43.5	0
+72	-43.5	0
+73	-43.5	0
+74	-43.5	0
+75	-43.5	0
+76	-43.5	0
+77	-43.5	0
+78	-43.5	0
+79	-43.5	0
+80	-43.5	0
+81	-43.5	0
+82	-43.5	0
+83	-43.5	0
+84	-43.5	0
+85	-43.5	0
+86	-43.5	0
+87	-43.5	0
+88	-43.5	0
+89	-43.5	0
+90	-43.5	0
+91	-43.5	0
+92	-43.5	0
+93	-43.5	0
+94	-43.5	0
+95	-43.5	0
+96	-43.5	0
+97	-43.5	0
+98	-43.5	0
+99	-43.5	0
+100	-43.5	0
+101	-43.5	0
+102	-43.5	0
+103	-43.5	0
+104	-43.5	0
+105	-43.5	0
+106	-43.5	0
+107	-43.5	0
+108	-43.5	0
+109	-43.5	0
+110	-43.5	0
+111	-43.5	0
+112	-43.5	0
+113	-43.5	0
+114	-43.5	0
+115	-43.5	0
+116	-43.5	0
+117	-43.5	0
+118	-43.5	0
+119	-43.5	0
+120	-43.5	0
+121	-43.5	0
+122	-43.5	0
+123	-43.5	0
+124	-43.5	0
+125	-43.5	0
+126	-43.5	0
+127	-43.5	0
+128	-43.5	0
+129	-43.5	0
+130	-43.5	0
+131	-43.5	0
+132	-43.5	0
+133	-43.5	0
+134	-43.5	0
+135	-43.5	0
+136	-43.5	0
+137	-43.5	0
+138	-43.5	0
+139	-43.5	0
+140	-43.5	0
+141	-43.5	0
+142	-43.5	0
+143	-43.5	0
+144	-43.5	0
+145	-43.5	0
+146	-43.5	0
+147	-43.5	-0.18931
+148	-43.5	-0.069899
+149	-43.5	0
+150	-43.5	0
+151	-43.5	0
+152	-43.5	0
+153	-43.5	0
+154	-43.5	0
+155	-43.5	0
+156	-43.5	0
+157	-43.5	0
+158	-43.5	0
+159	-43.5	0
+160	-43.5	0
+161	-43.5	0
+162	-43.5	0
+163	-43.5	0
+164	-43.5	0
+165	-43.5	0
+166	-43.5	0
+167	-43.5	0
+168	-43.5	0
+169	-43.5	0
+170	-43.5	0
+171	-43.5	-0.56271
+172	-43.5	-0.63769
+173	-43.5	0
+174	-43.5	0
+175	-43.5	0
+176	-43.5	0
+177	-43.5	0
+178	-43.5	0
+179	-43.5	0
+180	-43.5	0
+181	-43.5	0
+182	-43.5	0
+183	-43.5	0
+184	-43.5	0
+185	-43.5	0
+186	-43.5	0
+187	-43.5	0
+188	-43.5	0
+189	-43.5	0
+190	-43.5	0
+191	-43.5	0
+192	-43.5	0
+193	-43.5	0
+194	-43.5	0
+195	-43.5	0
+196	-43.5	0
+197	-43.5	0
+198	-43.5	0
+199	-43.5	0
+200	-43.5	0
+201	-43.5	0
+202	-43.5	0
+203	-43.5	0
+204	-43.5	0
+205	-43.5	0
+206	-43.5	0
+207	-43.5	0
+208	-43.5	0
+209	-43.5	0
+210	-43.5	0
+211	-43.5	0
+212	-43.5	0
+213	-43.5	0
+214	-43.5	0
+215	-43.5	0
+216	-43.5	0
+217	-43.5	0
+218	-43.5	0
+219	-43.5	0
+220	-43.5	0
+221	-43.5	0
+222	-43.5	0
+223	-43.5	0
+224	-43.5	0
+225	-43.5	0
+226	-43.5	0
+227	-43.5	0
+228	-43.5	0
+229	-43.5	0
+230	-43.5	0
+231	-43.5	0
+232	-43.5	0
+233	-43.5	0
+234	-43.5	0
+235	-43.5	0
+236	-43.5	0
+237	-43.5	0
+238	-43.5	0
+239	-43.5	0
+240	-43.5	0
+241	-43.5	0
+242	-43.5	0
+243	-43.5	0
+244	-43.5	0
+245	-43.5	0
+246	-43.5	0
+247	-43.5	0
+248	-43.5	0
+249	-43.5	0
+250	-43.5	0
+251	-43.5	0
+252	-43.5	0
+253	-43.5	0
+254	-43.5	0
+255	-43.5	0
+256	-43.5	0
+257	-43.5	0
+258	-43.5	0
+259	-43.5	0
+260	-43.5	0
+261	-43.5	0
+262	-43.5	0
+263	-43.5	0
+264	-43.5	0
+265	-43.5	0
+266	-43.5	0
+267	-43.5	0
+268	-43.5	0
+269	-43.5	0
+270	-43.5	0
+271	-43.5	0
+272	-43.5	0
+273	-43.5	0
+274	-43.5	0
+275	-43.5	0
+276	-43.5	0
+277	-43.5	0
+278	-43.5	0
+279	-43.5	0
+280	-43.5	0
+281	-43.5	0
+282	-43.5	0
+283	-43.5	0
+284	-43.5	0
+285	-43.5	0
+286	-43.5	-0.14041
+287	-43.5	-0.30436
+288	-43.5	0
+289	-43.5	-2.5703
+290	-43.5	-2.1747
+291	-43.5	-1.6427
+292	-43.5	-1.0764
+293	-43.5	-0.61838
+294	-43.5	-0.32048
+295	-43.5	-0.0199
+296	-43.5	0
+297	-43.5	0
+298	-43.5	0
+299	-43.5	0
+300	-43.5	0
+301	-43.5	0
+302	-43.5	0
+303	-43.5	0
+304	-43.5	0
+305	-43.5	0
+306	-43.5	0
+307	-43.5	0
+308	-43.5	0
+309	-43.5	0
+310	-43.5	0
+311	-43.5	0
+312	-43.5	0
+313	-43.5	0
+314	-43.5	0
+315	-43.5	0
+316	-43.5	0
+317	-43.5	0
+318	-43.5	0
+319	-43.5	0
+320	-43.5	0
+321	-43.5	0
+322	-43.5	0
+323	-43.5	0
+324	-43.5	0
+325	-43.5	0
+326	-43.5	0
+327	-43.5	0
+328	-43.5	0
+329	-43.5	0
+330	-43.5	0
+331	-43.5	0
+332	-43.5	0
+333	-43.5	0
+334	-43.5	0
+335	-43.5	0
+336	-43.5	0
+337	-43.5	0
+338	-43.5	0
+339	-43.5	0
+340	-43.5	0
+341	-43.5	0
+342	-43.5	0
+343	-43.5	0
+344	-43.5	0
+345	-43.5	0
+346	-43.5	0
+347	-43.5	0
+348	-43.5	0
+349	-43.5	0
+350	-43.5	0
+351	-43.5	0
+352	-43.5	0
+353	-43.5	0
+354	-43.5	0
+355	-43.5	0
+356	-43.5	0
+357	-43.5	0
+358	-43.5	0
+359	-43.5	0
+360	-43.5	0
+0	-43	0
+1	-43	0
+2	-43	0
+3	-43	0
+4	-43	0
+5	-43	0
+6	-43	0
+7	-43	0
+8	-43	0
+9	-43	0
+10	-43	0
+11	-43	0
+12	-43	0
+13	-43	0
+14	-43	0
+15	-43	0
+16	-43	0
+17	-43	0
+18	-43	0
+19	-43	0
+20	-43	0
+21	-43	0
+22	-43	0
+23	-43	0
+24	-43	0
+25	-43	0
+26	-43	0
+27	-43	0
+28	-43	0
+29	-43	0
+30	-43	0
+31	-43	0
+32	-43	0
+33	-43	0
+34	-43	0
+35	-43	0
+36	-43	0
+37	-43	0
+38	-43	0
+39	-43	0
+40	-43	0
+41	-43	0
+42	-43	0
+43	-43	0
+44	-43	0
+45	-43	0
+46	-43	0
+47	-43	0
+48	-43	0
+49	-43	0
+50	-43	0
+51	-43	0
+52	-43	0
+53	-43	0
+54	-43	0
+55	-43	0
+56	-43	0
+57	-43	0
+58	-43	0
+59	-43	0
+60	-43	0
+61	-43	0
+62	-43	0
+63	-43	0
+64	-43	0
+65	-43	0
+66	-43	0
+67	-43	0
+68	-43	0
+69	-43	0
+70	-43	0
+71	-43	0
+72	-43	0
+73	-43	0
+74	-43	0
+75	-43	0
+76	-43	0
+77	-43	0
+78	-43	0
+79	-43	0
+80	-43	0
+81	-43	0
+82	-43	0
+83	-43	0
+84	-43	0
+85	-43	0
+86	-43	0
+87	-43	0
+88	-43	0
+89	-43	0
+90	-43	0
+91	-43	0
+92	-43	0
+93	-43	0
+94	-43	0
+95	-43	0
+96	-43	0
+97	-43	0
+98	-43	0
+99	-43	0
+100	-43	0
+101	-43	0
+102	-43	0
+103	-43	0
+104	-43	0
+105	-43	0
+106	-43	0
+107	-43	0
+108	-43	0
+109	-43	0
+110	-43	0
+111	-43	0
+112	-43	0
+113	-43	0
+114	-43	0
+115	-43	0
+116	-43	0
+117	-43	0
+118	-43	0
+119	-43	0
+120	-43	0
+121	-43	0
+122	-43	0
+123	-43	0
+124	-43	0
+125	-43	0
+126	-43	0
+127	-43	0
+128	-43	0
+129	-43	0
+130	-43	0
+131	-43	0
+132	-43	0
+133	-43	0
+134	-43	0
+135	-43	0
+136	-43	0
+137	-43	0
+138	-43	0
+139	-43	0
+140	-43	0
+141	-43	0
+142	-43	0
+143	-43	0
+144	-43	0
+145	-43	0
+146	-43	-0.54385
+147	-43	-0.43071
+148	-43	-0.067469
+149	-43	0
+150	-43	0
+151	-43	0
+152	-43	0
+153	-43	0
+154	-43	0
+155	-43	0
+156	-43	0
+157	-43	0
+158	-43	0
+159	-43	0
+160	-43	0
+161	-43	0
+162	-43	0
+163	-43	0
+164	-43	0
+165	-43	0
+166	-43	0
+167	-43	0
+168	-43	0
+169	-43	0
+170	-43	0
+171	-43	-0.079927
+172	-43	-0.63785
+173	-43	-0.24335
+174	-43	0
+175	-43	0
+176	-43	0
+177	-43	0
+178	-43	0
+179	-43	0
+180	-43	0
+181	-43	0
+182	-43	0
+183	-43	0
+184	-43	0
+185	-43	0
+186	-43	0
+187	-43	0
+188	-43	0
+189	-43	0
+190	-43	0
+191	-43	0
+192	-43	0
+193	-43	0
+194	-43	0
+195	-43	0
+196	-43	0
+197	-43	0
+198	-43	0
+199	-43	0
+200	-43	0
+201	-43	0
+202	-43	0
+203	-43	0
+204	-43	0
+205	-43	0
+206	-43	0
+207	-43	0
+208	-43	0
+209	-43	0
+210	-43	0
+211	-43	0
+212	-43	0
+213	-43	0
+214	-43	0
+215	-43	0
+216	-43	0
+217	-43	0
+218	-43	0
+219	-43	0
+220	-43	0
+221	-43	0
+222	-43	0
+223	-43	0
+224	-43	0
+225	-43	0
+226	-43	0
+227	-43	0
+228	-43	0
+229	-43	0
+230	-43	0
+231	-43	0
+232	-43	0
+233	-43	0
+234	-43	0
+235	-43	0
+236	-43	0
+237	-43	0
+238	-43	0
+239	-43	0
+240	-43	0
+241	-43	0
+242	-43	0
+243	-43	0
+244	-43	0
+245	-43	0
+246	-43	0
+247	-43	0
+248	-43	0
+249	-43	0
+250	-43	0
+251	-43	0
+252	-43	0
+253	-43	0
+254	-43	0
+255	-43	0
+256	-43	0
+257	-43	0
+258	-43	0
+259	-43	0
+260	-43	0
+261	-43	0
+262	-43	0
+263	-43	0
+264	-43	0
+265	-43	0
+266	-43	0
+267	-43	0
+268	-43	0
+269	-43	0
+270	-43	0
+271	-43	0
+272	-43	0
+273	-43	0
+274	-43	0
+275	-43	0
+276	-43	0
+277	-43	0
+278	-43	0
+279	-43	0
+280	-43	0
+281	-43	0
+282	-43	0
+283	-43	0
+284	-43	0
+285	-43	0
+286	-43	-0.21382
+287	-43	0
+288	-43	0
+289	-43	-2.2377
+290	-43	-1.8574
+291	-43	-1.406
+292	-43	-0.9959
+293	-43	-0.57438
+294	-43	-0.30688
+295	-43	-0.087828
+296	-43	-0.017092
+297	-43	0
+298	-43	0
+299	-43	0
+300	-43	0
+301	-43	0
+302	-43	0
+303	-43	0
+304	-43	0
+305	-43	0
+306	-43	0
+307	-43	0
+308	-43	0
+309	-43	0
+310	-43	0
+311	-43	0
+312	-43	0
+313	-43	0
+314	-43	0
+315	-43	0
+316	-43	0
+317	-43	0
+318	-43	0
+319	-43	0
+320	-43	0
+321	-43	0
+322	-43	0
+323	-43	0
+324	-43	0
+325	-43	0
+326	-43	0
+327	-43	0
+328	-43	0
+329	-43	0
+330	-43	0
+331	-43	0
+332	-43	0
+333	-43	0
+334	-43	0
+335	-43	0
+336	-43	0
+337	-43	0
+338	-43	0
+339	-43	0
+340	-43	0
+341	-43	0
+342	-43	0
+343	-43	0
+344	-43	0
+345	-43	0
+346	-43	0
+347	-43	0
+348	-43	0
+349	-43	0
+350	-43	0
+351	-43	0
+352	-43	0
+353	-43	0
+354	-43	0
+355	-43	0
+356	-43	0
+357	-43	0
+358	-43	0
+359	-43	0
+360	-43	0
+0	-42.5	0
+1	-42.5	0
+2	-42.5	0
+3	-42.5	0
+4	-42.5	0
+5	-42.5	0
+6	-42.5	0
+7	-42.5	0
+8	-42.5	0
+9	-42.5	0
+10	-42.5	0
+11	-42.5	0
+12	-42.5	0
+13	-42.5	0
+14	-42.5	0
+15	-42.5	0
+16	-42.5	0
+17	-42.5	0
+18	-42.5	0
+19	-42.5	0
+20	-42.5	0
+21	-42.5	0
+22	-42.5	0
+23	-42.5	0
+24	-42.5	0
+25	-42.5	0
+26	-42.5	0
+27	-42.5	0
+28	-42.5	0
+29	-42.5	0
+30	-42.5	0
+31	-42.5	0
+32	-42.5	0
+33	-42.5	0
+34	-42.5	0
+35	-42.5	0
+36	-42.5	0
+37	-42.5	0
+38	-42.5	0
+39	-42.5	0
+40	-42.5	0
+41	-42.5	0
+42	-42.5	0
+43	-42.5	0
+44	-42.5	0
+45	-42.5	0
+46	-42.5	0
+47	-42.5	0
+48	-42.5	0
+49	-42.5	0
+50	-42.5	0
+51	-42.5	0
+52	-42.5	0
+53	-42.5	0
+54	-42.5	0
+55	-42.5	0
+56	-42.5	0
+57	-42.5	0
+58	-42.5	0
+59	-42.5	0
+60	-42.5	0
+61	-42.5	0
+62	-42.5	0
+63	-42.5	0
+64	-42.5	0
+65	-42.5	0
+66	-42.5	0
+67	-42.5	0
+68	-42.5	0
+69	-42.5	0
+70	-42.5	0
+71	-42.5	0
+72	-42.5	0
+73	-42.5	0
+74	-42.5	0
+75	-42.5	0
+76	-42.5	0
+77	-42.5	0
+78	-42.5	0
+79	-42.5	0
+80	-42.5	0
+81	-42.5	0
+82	-42.5	0
+83	-42.5	0
+84	-42.5	0
+85	-42.5	0
+86	-42.5	0
+87	-42.5	0
+88	-42.5	0
+89	-42.5	0
+90	-42.5	0
+91	-42.5	0
+92	-42.5	0
+93	-42.5	0
+94	-42.5	0
+95	-42.5	0
+96	-42.5	0
+97	-42.5	0
+98	-42.5	0
+99	-42.5	0
+100	-42.5	0
+101	-42.5	0
+102	-42.5	0
+103	-42.5	0
+104	-42.5	0
+105	-42.5	0
+106	-42.5	0
+107	-42.5	0
+108	-42.5	0
+109	-42.5	0
+110	-42.5	0
+111	-42.5	0
+112	-42.5	0
+113	-42.5	0
+114	-42.5	0
+115	-42.5	0
+116	-42.5	0
+117	-42.5	0
+118	-42.5	0
+119	-42.5	0
+120	-42.5	0
+121	-42.5	0
+122	-42.5	0
+123	-42.5	0
+124	-42.5	0
+125	-42.5	0
+126	-42.5	0
+127	-42.5	0
+128	-42.5	0
+129	-42.5	0
+130	-42.5	0
+131	-42.5	0
+132	-42.5	0
+133	-42.5	0
+134	-42.5	0
+135	-42.5	0
+136	-42.5	0
+137	-42.5	0
+138	-42.5	0
+139	-42.5	0
+140	-42.5	0
+141	-42.5	0
+142	-42.5	0
+143	-42.5	0
+144	-42.5	0
+145	-42.5	0
+146	-42.5	-0.6281
+147	-42.5	-0.58323
+148	-42.5	-0.083038
+149	-42.5	0
+150	-42.5	0
+151	-42.5	0
+152	-42.5	0
+153	-42.5	0
+154	-42.5	0
+155	-42.5	0
+156	-42.5	0
+157	-42.5	0
+158	-42.5	0
+159	-42.5	0
+160	-42.5	0
+161	-42.5	0
+162	-42.5	0
+163	-42.5	0
+164	-42.5	0
+165	-42.5	0
+166	-42.5	0
+167	-42.5	0
+168	-42.5	0
+169	-42.5	0
+170	-42.5	0
+171	-42.5	0
+172	-42.5	-0.5353
+173	-42.5	-0.62501
+174	-42.5	-0.069363
+175	-42.5	0
+176	-42.5	0
+177	-42.5	0
+178	-42.5	0
+179	-42.5	0
+180	-42.5	0
+181	-42.5	0
+182	-42.5	0
+183	-42.5	0
+184	-42.5	0
+185	-42.5	0
+186	-42.5	0
+187	-42.5	0
+188	-42.5	0
+189	-42.5	0
+190	-42.5	0
+191	-42.5	0
+192	-42.5	0
+193	-42.5	0
+194	-42.5	0
+195	-42.5	0
+196	-42.5	0
+197	-42.5	0
+198	-42.5	0
+199	-42.5	0
+200	-42.5	0
+201	-42.5	0
+202	-42.5	0
+203	-42.5	0
+204	-42.5	0
+205	-42.5	0
+206	-42.5	0
+207	-42.5	0
+208	-42.5	0
+209	-42.5	0
+210	-42.5	0
+211	-42.5	0
+212	-42.5	0
+213	-42.5	0
+214	-42.5	0
+215	-42.5	0
+216	-42.5	0
+217	-42.5	0
+218	-42.5	0
+219	-42.5	0
+220	-42.5	0
+221	-42.5	0
+222	-42.5	0
+223	-42.5	0
+224	-42.5	0
+225	-42.5	0
+226	-42.5	0
+227	-42.5	0
+228	-42.5	0
+229	-42.5	0
+230	-42.5	0
+231	-42.5	0
+232	-42.5	0
+233	-42.5	0
+234	-42.5	0
+235	-42.5	0
+236	-42.5	0
+237	-42.5	0
+238	-42.5	0
+239	-42.5	0
+240	-42.5	0
+241	-42.5	0
+242	-42.5	0
+243	-42.5	0
+244	-42.5	0
+245	-42.5	0
+246	-42.5	0
+247	-42.5	0
+248	-42.5	0
+249	-42.5	0
+250	-42.5	0
+251	-42.5	0
+252	-42.5	0
+253	-42.5	0
+254	-42.5	0
+255	-42.5	0
+256	-42.5	0
+257	-42.5	0
+258	-42.5	0
+259	-42.5	0
+260	-42.5	0
+261	-42.5	0
+262	-42.5	0
+263	-42.5	0
+264	-42.5	0
+265	-42.5	0
+266	-42.5	0
+267	-42.5	0
+268	-42.5	0
+269	-42.5	0
+270	-42.5	0
+271	-42.5	0
+272	-42.5	0
+273	-42.5	0
+274	-42.5	0
+275	-42.5	0
+276	-42.5	0
+277	-42.5	0
+278	-42.5	0
+279	-42.5	0
+280	-42.5	0
+281	-42.5	0
+282	-42.5	0
+283	-42.5	0
+284	-42.5	0
+285	-42.5	0
+286	-42.5	-0.18582
+287	-42.5	0
+288	-42.5	0
+289	-42.5	-1.8979
+290	-42.5	-1.6529
+291	-42.5	-1.296
+292	-42.5	-0.93716
+293	-42.5	-0.53191
+294	-42.5	-0.31311
+295	-42.5	-0.14665
+296	-42.5	-0.0652
+297	-42.5	0
+298	-42.5	0
+299	-42.5	0
+300	-42.5	0
+301	-42.5	0
+302	-42.5	0
+303	-42.5	0
+304	-42.5	0
+305	-42.5	0
+306	-42.5	0
+307	-42.5	0
+308	-42.5	0
+309	-42.5	0
+310	-42.5	0
+311	-42.5	0
+312	-42.5	0
+313	-42.5	0
+314	-42.5	0
+315	-42.5	0
+316	-42.5	0
+317	-42.5	0
+318	-42.5	0
+319	-42.5	0
+320	-42.5	0
+321	-42.5	0
+322	-42.5	0
+323	-42.5	0
+324	-42.5	0
+325	-42.5	0
+326	-42.5	0
+327	-42.5	0
+328	-42.5	0
+329	-42.5	0
+330	-42.5	0
+331	-42.5	0
+332	-42.5	0
+333	-42.5	0
+334	-42.5	0
+335	-42.5	0
+336	-42.5	0
+337	-42.5	0
+338	-42.5	0
+339	-42.5	0
+340	-42.5	0
+341	-42.5	0
+342	-42.5	0
+343	-42.5	0
+344	-42.5	0
+345	-42.5	0
+346	-42.5	0
+347	-42.5	0
+348	-42.5	0
+349	-42.5	0
+350	-42.5	0
+351	-42.5	0
+352	-42.5	0
+353	-42.5	0
+354	-42.5	0
+355	-42.5	0
+356	-42.5	0
+357	-42.5	0
+358	-42.5	0
+359	-42.5	0
+360	-42.5	0
+0	-42	0
+1	-42	0
+2	-42	0
+3	-42	0
+4	-42	0
+5	-42	0
+6	-42	0
+7	-42	0
+8	-42	0
+9	-42	0
+10	-42	0
+11	-42	0
+12	-42	0
+13	-42	0
+14	-42	0
+15	-42	0
+16	-42	0
+17	-42	0
+18	-42	0
+19	-42	0
+20	-42	0
+21	-42	0
+22	-42	0
+23	-42	0
+24	-42	0
+25	-42	0
+26	-42	0
+27	-42	0
+28	-42	0
+29	-42	0
+30	-42	0
+31	-42	0
+32	-42	0
+33	-42	0
+34	-42	0
+35	-42	0
+36	-42	0
+37	-42	0
+38	-42	0
+39	-42	0
+40	-42	0
+41	-42	0
+42	-42	0
+43	-42	0
+44	-42	0
+45	-42	0
+46	-42	0
+47	-42	0
+48	-42	0
+49	-42	0
+50	-42	0
+51	-42	0
+52	-42	0
+53	-42	0
+54	-42	0
+55	-42	0
+56	-42	0
+57	-42	0
+58	-42	0
+59	-42	0
+60	-42	0
+61	-42	0
+62	-42	0
+63	-42	0
+64	-42	0
+65	-42	0
+66	-42	0
+67	-42	0
+68	-42	0
+69	-42	0
+70	-42	0
+71	-42	0
+72	-42	0
+73	-42	0
+74	-42	0
+75	-42	0
+76	-42	0
+77	-42	0
+78	-42	0
+79	-42	0
+80	-42	0
+81	-42	0
+82	-42	0
+83	-42	0
+84	-42	0
+85	-42	0
+86	-42	0
+87	-42	0
+88	-42	0
+89	-42	0
+90	-42	0
+91	-42	0
+92	-42	0
+93	-42	0
+94	-42	0
+95	-42	0
+96	-42	0
+97	-42	0
+98	-42	0
+99	-42	0
+100	-42	0
+101	-42	0
+102	-42	0
+103	-42	0
+104	-42	0
+105	-42	0
+106	-42	0
+107	-42	0
+108	-42	0
+109	-42	0
+110	-42	0
+111	-42	0
+112	-42	0
+113	-42	0
+114	-42	0
+115	-42	0
+116	-42	0
+117	-42	0
+118	-42	0
+119	-42	0
+120	-42	0
+121	-42	0
+122	-42	0
+123	-42	0
+124	-42	0
+125	-42	0
+126	-42	0
+127	-42	0
+128	-42	0
+129	-42	0
+130	-42	0
+131	-42	0
+132	-42	0
+133	-42	0
+134	-42	0
+135	-42	0
+136	-42	0
+137	-42	0
+138	-42	0
+139	-42	0
+140	-42	0
+141	-42	0
+142	-42	0
+143	-42	0
+144	-42	0
+145	-42	-0.10437
+146	-42	-0.61169
+147	-42	-0.66244
+148	-42	-0.25012
+149	-42	0
+150	-42	0
+151	-42	0
+152	-42	0
+153	-42	0
+154	-42	0
+155	-42	0
+156	-42	0
+157	-42	0
+158	-42	0
+159	-42	0
+160	-42	0
+161	-42	0
+162	-42	0
+163	-42	0
+164	-42	0
+165	-42	0
+166	-42	0
+167	-42	0
+168	-42	0
+169	-42	0
+170	-42	0
+171	-42	0
+172	-42	-0.39401
+173	-42	-0.6797
+174	-42	-0.36112
+175	-42	0
+176	-42	0
+177	-42	0
+178	-42	0
+179	-42	0
+180	-42	0
+181	-42	0
+182	-42	0
+183	-42	0
+184	-42	0
+185	-42	0
+186	-42	0
+187	-42	0
+188	-42	0
+189	-42	0
+190	-42	0
+191	-42	0
+192	-42	0
+193	-42	0
+194	-42	0
+195	-42	0
+196	-42	0
+197	-42	0
+198	-42	0
+199	-42	0
+200	-42	0
+201	-42	0
+202	-42	0
+203	-42	0
+204	-42	0
+205	-42	0
+206	-42	0
+207	-42	0
+208	-42	0
+209	-42	0
+210	-42	0
+211	-42	0
+212	-42	0
+213	-42	0
+214	-42	0
+215	-42	0
+216	-42	0
+217	-42	0
+218	-42	0
+219	-42	0
+220	-42	0
+221	-42	0
+222	-42	0
+223	-42	0
+224	-42	0
+225	-42	0
+226	-42	0
+227	-42	0
+228	-42	0
+229	-42	0
+230	-42	0
+231	-42	0
+232	-42	0
+233	-42	0
+234	-42	0
+235	-42	0
+236	-42	0
+237	-42	0
+238	-42	0
+239	-42	0
+240	-42	0
+241	-42	0
+242	-42	0
+243	-42	0
+244	-42	0
+245	-42	0
+246	-42	0
+247	-42	0
+248	-42	0
+249	-42	0
+250	-42	0
+251	-42	0
+252	-42	0
+253	-42	0
+254	-42	0
+255	-42	0
+256	-42	0
+257	-42	0
+258	-42	0
+259	-42	0
+260	-42	0
+261	-42	0
+262	-42	0
+263	-42	0
+264	-42	0
+265	-42	0
+266	-42	0
+267	-42	0
+268	-42	0
+269	-42	0
+270	-42	0
+271	-42	0
+272	-42	0
+273	-42	0
+274	-42	0
+275	-42	0
+276	-42	0
+277	-42	0
+278	-42	0
+279	-42	0
+280	-42	0
+281	-42	0
+282	-42	0
+283	-42	0
+284	-42	0
+285	-42	0
+286	-42	-0.088492
+287	-42	0
+288	-42	0
+289	-42	-1.7533
+290	-42	-1.4345
+291	-42	-1.1733
+292	-42	-0.95219
+293	-42	-0.53441
+294	-42	-0.35062
+295	-42	-0.21877
+296	-42	-0.06835
+297	-42	0
+298	-42	0
+299	-42	0
+300	-42	0
+301	-42	0
+302	-42	0
+303	-42	0
+304	-42	0
+305	-42	0
+306	-42	0
+307	-42	0
+308	-42	0
+309	-42	0
+310	-42	0
+311	-42	0
+312	-42	0
+313	-42	0
+314	-42	0
+315	-42	0
+316	-42	0
+317	-42	0
+318	-42	0
+319	-42	0
+320	-42	0
+321	-42	0
+322	-42	0
+323	-42	0
+324	-42	0
+325	-42	0
+326	-42	0
+327	-42	0
+328	-42	0
+329	-42	0
+330	-42	0
+331	-42	0
+332	-42	0
+333	-42	0
+334	-42	0
+335	-42	0
+336	-42	0
+337	-42	0
+338	-42	0
+339	-42	0
+340	-42	0
+341	-42	0
+342	-42	0
+343	-42	0
+344	-42	0
+345	-42	0
+346	-42	0
+347	-42	0
+348	-42	0
+349	-42	0
+350	-42	0
+351	-42	0
+352	-42	0
+353	-42	0
+354	-42	0
+355	-42	0
+356	-42	0
+357	-42	0
+358	-42	0
+359	-42	0
+360	-42	0
+0	-41.5	0
+1	-41.5	0
+2	-41.5	0
+3	-41.5	0
+4	-41.5	0
+5	-41.5	0
+6	-41.5	0
+7	-41.5	0
+8	-41.5	0
+9	-41.5	0
+10	-41.5	0
+11	-41.5	0
+12	-41.5	0
+13	-41.5	0
+14	-41.5	0
+15	-41.5	0
+16	-41.5	0
+17	-41.5	0
+18	-41.5	0
+19	-41.5	0
+20	-41.5	0
+21	-41.5	0
+22	-41.5	0
+23	-41.5	0
+24	-41.5	0
+25	-41.5	0
+26	-41.5	0
+27	-41.5	0
+28	-41.5	0
+29	-41.5	0
+30	-41.5	0
+31	-41.5	0
+32	-41.5	0
+33	-41.5	0
+34	-41.5	0
+35	-41.5	0
+36	-41.5	0
+37	-41.5	0
+38	-41.5	0
+39	-41.5	0
+40	-41.5	0
+41	-41.5	0
+42	-41.5	0
+43	-41.5	0
+44	-41.5	0
+45	-41.5	0
+46	-41.5	0
+47	-41.5	0
+48	-41.5	0
+49	-41.5	0
+50	-41.5	0
+51	-41.5	0
+52	-41.5	0
+53	-41.5	0
+54	-41.5	0
+55	-41.5	0
+56	-41.5	0
+57	-41.5	0
+58	-41.5	0
+59	-41.5	0
+60	-41.5	0
+61	-41.5	0
+62	-41.5	0
+63	-41.5	0
+64	-41.5	0
+65	-41.5	0
+66	-41.5	0
+67	-41.5	0
+68	-41.5	0
+69	-41.5	0
+70	-41.5	0
+71	-41.5	0
+72	-41.5	0
+73	-41.5	0
+74	-41.5	0
+75	-41.5	0
+76	-41.5	0
+77	-41.5	0
+78	-41.5	0
+79	-41.5	0
+80	-41.5	0
+81	-41.5	0
+82	-41.5	0
+83	-41.5	0
+84	-41.5	0
+85	-41.5	0
+86	-41.5	0
+87	-41.5	0
+88	-41.5	0
+89	-41.5	0
+90	-41.5	0
+91	-41.5	0
+92	-41.5	0
+93	-41.5	0
+94	-41.5	0
+95	-41.5	0
+96	-41.5	0
+97	-41.5	0
+98	-41.5	0
+99	-41.5	0
+100	-41.5	0
+101	-41.5	0
+102	-41.5	0
+103	-41.5	0
+104	-41.5	0
+105	-41.5	0
+106	-41.5	0
+107	-41.5	0
+108	-41.5	0
+109	-41.5	0
+110	-41.5	0
+111	-41.5	0
+112	-41.5	0
+113	-41.5	0
+114	-41.5	0
+115	-41.5	0
+116	-41.5	0
+117	-41.5	0
+118	-41.5	0
+119	-41.5	0
+120	-41.5	0
+121	-41.5	0
+122	-41.5	0
+123	-41.5	0
+124	-41.5	0
+125	-41.5	0
+126	-41.5	0
+127	-41.5	0
+128	-41.5	0
+129	-41.5	0
+130	-41.5	0
+131	-41.5	0
+132	-41.5	0
+133	-41.5	0
+134	-41.5	0
+135	-41.5	0
+136	-41.5	0
+137	-41.5	0
+138	-41.5	0
+139	-41.5	0
+140	-41.5	0
+141	-41.5	0
+142	-41.5	0
+143	-41.5	0
+144	-41.5	0
+145	-41.5	-0.12913
+146	-41.5	-0.43956
+147	-41.5	-0.46932
+148	-41.5	-0.20631
+149	-41.5	0
+150	-41.5	0
+151	-41.5	0
+152	-41.5	0
+153	-41.5	0
+154	-41.5	0
+155	-41.5	0
+156	-41.5	0
+157	-41.5	0
+158	-41.5	0
+159	-41.5	0
+160	-41.5	0
+161	-41.5	0
+162	-41.5	0
+163	-41.5	0
+164	-41.5	0
+165	-41.5	0
+166	-41.5	0
+167	-41.5	0
+168	-41.5	0
+169	-41.5	0
+170	-41.5	0
+171	-41.5	0
+172	-41.5	-0.29136
+173	-41.5	-0.48931
+174	-41.5	-0.28278
+175	-41.5	-0.068621
+176	-41.5	0
+177	-41.5	0
+178	-41.5	0
+179	-41.5	0
+180	-41.5	0
+181	-41.5	0
+182	-41.5	0
+183	-41.5	0
+184	-41.5	0
+185	-41.5	0
+186	-41.5	0
+187	-41.5	0
+188	-41.5	0
+189	-41.5	0
+190	-41.5	0
+191	-41.5	0
+192	-41.5	0
+193	-41.5	0
+194	-41.5	0
+195	-41.5	0
+196	-41.5	0
+197	-41.5	0
+198	-41.5	0
+199	-41.5	0
+200	-41.5	0
+201	-41.5	0
+202	-41.5	0
+203	-41.5	0
+204	-41.5	0
+205	-41.5	0
+206	-41.5	0
+207	-41.5	0
+208	-41.5	0
+209	-41.5	0
+210	-41.5	0
+211	-41.5	0
+212	-41.5	0
+213	-41.5	0
+214	-41.5	0
+215	-41.5	0
+216	-41.5	0
+217	-41.5	0
+218	-41.5	0
+219	-41.5	0
+220	-41.5	0
+221	-41.5	0
+222	-41.5	0
+223	-41.5	0
+224	-41.5	0
+225	-41.5	0
+226	-41.5	0
+227	-41.5	0
+228	-41.5	0
+229	-41.5	0
+230	-41.5	0
+231	-41.5	0
+232	-41.5	0
+233	-41.5	0
+234	-41.5	0
+235	-41.5	0
+236	-41.5	0
+237	-41.5	0
+238	-41.5	0
+239	-41.5	0
+240	-41.5	0
+241	-41.5	0
+242	-41.5	0
+243	-41.5	0
+244	-41.5	0
+245	-41.5	0
+246	-41.5	0
+247	-41.5	0
+248	-41.5	0
+249	-41.5	0
+250	-41.5	0
+251	-41.5	0
+252	-41.5	0
+253	-41.5	0
+254	-41.5	0
+255	-41.5	0
+256	-41.5	0
+257	-41.5	0
+258	-41.5	0
+259	-41.5	0
+260	-41.5	0
+261	-41.5	0
+262	-41.5	0
+263	-41.5	0
+264	-41.5	0
+265	-41.5	0
+266	-41.5	0
+267	-41.5	0
+268	-41.5	0
+269	-41.5	0
+270	-41.5	0
+271	-41.5	0
+272	-41.5	0
+273	-41.5	0
+274	-41.5	0
+275	-41.5	0
+276	-41.5	0
+277	-41.5	0
+278	-41.5	0
+279	-41.5	0
+280	-41.5	0
+281	-41.5	0
+282	-41.5	0
+283	-41.5	0
+284	-41.5	0
+285	-41.5	0
+286	-41.5	-0.0264
+287	-41.5	-0.022407
+288	-41.5	-0.0081872
+289	-41.5	-1.6846
+290	-41.5	-1.4587
+291	-41.5	-1.1516
+292	-41.5	-0.95137
+293	-41.5	-0.59864
+294	-41.5	-0.46747
+295	-41.5	-0.12847
+296	-41.5	-0.022987
+297	-41.5	-0.015366
+298	-41.5	0
+299	-41.5	0
+300	-41.5	0
+301	-41.5	0
+302	-41.5	0
+303	-41.5	0
+304	-41.5	0
+305	-41.5	0
+306	-41.5	0
+307	-41.5	0
+308	-41.5	0
+309	-41.5	0
+310	-41.5	0
+311	-41.5	0
+312	-41.5	0
+313	-41.5	0
+314	-41.5	0
+315	-41.5	0
+316	-41.5	0
+317	-41.5	0
+318	-41.5	0
+319	-41.5	0
+320	-41.5	0
+321	-41.5	0
+322	-41.5	0
+323	-41.5	0
+324	-41.5	0
+325	-41.5	0
+326	-41.5	0
+327	-41.5	0
+328	-41.5	0
+329	-41.5	0
+330	-41.5	0
+331	-41.5	0
+332	-41.5	0
+333	-41.5	0
+334	-41.5	0
+335	-41.5	0
+336	-41.5	0
+337	-41.5	0
+338	-41.5	0
+339	-41.5	0
+340	-41.5	0
+341	-41.5	0
+342	-41.5	0
+343	-41.5	0
+344	-41.5	0
+345	-41.5	0
+346	-41.5	0
+347	-41.5	0
+348	-41.5	0
+349	-41.5	0
+350	-41.5	0
+351	-41.5	0
+352	-41.5	0
+353	-41.5	0
+354	-41.5	0
+355	-41.5	0
+356	-41.5	0
+357	-41.5	0
+358	-41.5	0
+359	-41.5	0
+360	-41.5	0
+0	-41	0
+1	-41	0
+2	-41	0
+3	-41	0
+4	-41	0
+5	-41	0
+6	-41	0
+7	-41	0
+8	-41	0
+9	-41	0
+10	-41	0
+11	-41	0
+12	-41	0
+13	-41	0
+14	-41	0
+15	-41	0
+16	-41	0
+17	-41	0
+18	-41	0
+19	-41	0
+20	-41	0
+21	-41	0
+22	-41	0
+23	-41	0
+24	-41	0
+25	-41	0
+26	-41	0
+27	-41	0
+28	-41	0
+29	-41	0
+30	-41	0
+31	-41	0
+32	-41	0
+33	-41	0
+34	-41	0
+35	-41	0
+36	-41	0
+37	-41	0
+38	-41	0
+39	-41	0
+40	-41	0
+41	-41	0
+42	-41	0
+43	-41	0
+44	-41	0
+45	-41	0
+46	-41	0
+47	-41	0
+48	-41	0
+49	-41	0
+50	-41	0
+51	-41	0
+52	-41	0
+53	-41	0
+54	-41	0
+55	-41	0
+56	-41	0
+57	-41	0
+58	-41	0
+59	-41	0
+60	-41	0
+61	-41	0
+62	-41	0
+63	-41	0
+64	-41	0
+65	-41	0
+66	-41	0
+67	-41	0
+68	-41	0
+69	-41	0
+70	-41	0
+71	-41	0
+72	-41	0
+73	-41	0
+74	-41	0
+75	-41	0
+76	-41	0
+77	-41	0
+78	-41	0
+79	-41	0
+80	-41	0
+81	-41	0
+82	-41	0
+83	-41	0
+84	-41	0
+85	-41	0
+86	-41	0
+87	-41	0
+88	-41	0
+89	-41	0
+90	-41	0
+91	-41	0
+92	-41	0
+93	-41	0
+94	-41	0
+95	-41	0
+96	-41	0
+97	-41	0
+98	-41	0
+99	-41	0
+100	-41	0
+101	-41	0
+102	-41	0
+103	-41	0
+104	-41	0
+105	-41	0
+106	-41	0
+107	-41	0
+108	-41	0
+109	-41	0
+110	-41	0
+111	-41	0
+112	-41	0
+113	-41	0
+114	-41	0
+115	-41	0
+116	-41	0
+117	-41	0
+118	-41	0
+119	-41	0
+120	-41	0
+121	-41	0
+122	-41	0
+123	-41	0
+124	-41	0
+125	-41	0
+126	-41	0
+127	-41	0
+128	-41	0
+129	-41	0
+130	-41	0
+131	-41	0
+132	-41	0
+133	-41	0
+134	-41	0
+135	-41	0
+136	-41	0
+137	-41	0
+138	-41	0
+139	-41	0
+140	-41	0
+141	-41	0
+142	-41	0
+143	-41	0
+144	-41	0
+145	-41	-0.10696
+146	-41	-0.041751
+147	-41	-0.12482
+148	-41	-0.11125
+149	-41	0
+150	-41	0
+151	-41	0
+152	-41	0
+153	-41	0
+154	-41	0
+155	-41	0
+156	-41	0
+157	-41	0
+158	-41	0
+159	-41	0
+160	-41	0
+161	-41	0
+162	-41	0
+163	-41	0
+164	-41	0
+165	-41	0
+166	-41	0
+167	-41	0
+168	-41	0
+169	-41	0
+170	-41	0
+171	-41	0
+172	-41	-0.1426
+173	-41	-0.26899
+174	-41	-0.15398
+175	-41	-0.13298
+176	-41	-0.50548
+177	-41	0
+178	-41	0
+179	-41	0
+180	-41	0
+181	-41	0
+182	-41	0
+183	-41	0
+184	-41	0
+185	-41	0
+186	-41	0
+187	-41	0
+188	-41	0
+189	-41	0
+190	-41	0
+191	-41	0
+192	-41	0
+193	-41	0
+194	-41	0
+195	-41	0
+196	-41	0
+197	-41	0
+198	-41	0
+199	-41	0
+200	-41	0
+201	-41	0
+202	-41	0
+203	-41	0
+204	-41	0
+205	-41	0
+206	-41	0
+207	-41	0
+208	-41	0
+209	-41	0
+210	-41	0
+211	-41	0
+212	-41	0
+213	-41	0
+214	-41	0
+215	-41	0
+216	-41	0
+217	-41	0
+218	-41	0
+219	-41	0
+220	-41	0
+221	-41	0
+222	-41	0
+223	-41	0
+224	-41	0
+225	-41	0
+226	-41	0
+227	-41	0
+228	-41	0
+229	-41	0
+230	-41	0
+231	-41	0
+232	-41	0
+233	-41	0
+234	-41	0
+235	-41	0
+236	-41	0
+237	-41	0
+238	-41	0
+239	-41	0
+240	-41	0
+241	-41	0
+242	-41	0
+243	-41	0
+244	-41	0
+245	-41	0
+246	-41	0
+247	-41	0
+248	-41	0
+249	-41	0
+250	-41	0
+251	-41	0
+252	-41	0
+253	-41	0
+254	-41	0
+255	-41	0
+256	-41	0
+257	-41	0
+258	-41	0
+259	-41	0
+260	-41	0
+261	-41	0
+262	-41	0
+263	-41	0
+264	-41	0
+265	-41	0
+266	-41	0
+267	-41	0
+268	-41	0
+269	-41	0
+270	-41	0
+271	-41	0
+272	-41	0
+273	-41	0
+274	-41	0
+275	-41	0
+276	-41	0
+277	-41	0
+278	-41	0
+279	-41	0
+280	-41	0
+281	-41	0
+282	-41	0
+283	-41	0
+284	-41	0
+285	-41	0
+286	-41	-0.058691
+287	-41	-0.27291
+288	-41	-0.38253
+289	-41	-1.8413
+290	-41	-1.5599
+291	-41	-1.1764
+292	-41	-0.97859
+293	-41	-0.71617
+294	-41	-0.61246
+295	-41	-0.29311
+296	-41	-0.18074
+297	-41	-0.54838
+298	-41	0
+299	-41	0
+300	-41	0
+301	-41	0
+302	-41	0
+303	-41	0
+304	-41	0
+305	-41	0
+306	-41	0
+307	-41	0
+308	-41	0
+309	-41	0
+310	-41	0
+311	-41	0
+312	-41	0
+313	-41	0
+314	-41	0
+315	-41	0
+316	-41	0
+317	-41	0
+318	-41	0
+319	-41	0
+320	-41	0
+321	-41	0
+322	-41	0
+323	-41	0
+324	-41	0
+325	-41	0
+326	-41	0
+327	-41	0
+328	-41	0
+329	-41	0
+330	-41	0
+331	-41	0
+332	-41	0
+333	-41	0
+334	-41	0
+335	-41	0
+336	-41	0
+337	-41	0
+338	-41	0
+339	-41	0
+340	-41	0
+341	-41	0
+342	-41	0
+343	-41	0
+344	-41	0
+345	-41	0
+346	-41	0
+347	-41	0
+348	-41	0
+349	-41	0
+350	-41	0
+351	-41	0
+352	-41	0
+353	-41	0
+354	-41	0
+355	-41	0
+356	-41	0
+357	-41	0
+358	-41	0
+359	-41	0
+360	-41	0
+0	-40.5	0
+1	-40.5	0
+2	-40.5	0
+3	-40.5	0
+4	-40.5	0
+5	-40.5	0
+6	-40.5	0
+7	-40.5	0
+8	-40.5	0
+9	-40.5	0
+10	-40.5	0
+11	-40.5	0
+12	-40.5	0
+13	-40.5	0
+14	-40.5	0
+15	-40.5	0
+16	-40.5	0
+17	-40.5	0
+18	-40.5	0
+19	-40.5	0
+20	-40.5	0
+21	-40.5	0
+22	-40.5	0
+23	-40.5	0
+24	-40.5	0
+25	-40.5	0
+26	-40.5	0
+27	-40.5	0
+28	-40.5	0
+29	-40.5	0
+30	-40.5	0
+31	-40.5	0
+32	-40.5	0
+33	-40.5	0
+34	-40.5	0
+35	-40.5	0
+36	-40.5	0
+37	-40.5	0
+38	-40.5	0
+39	-40.5	0
+40	-40.5	0
+41	-40.5	0
+42	-40.5	0
+43	-40.5	0
+44	-40.5	0
+45	-40.5	0
+46	-40.5	0
+47	-40.5	0
+48	-40.5	0
+49	-40.5	0
+50	-40.5	0
+51	-40.5	0
+52	-40.5	0
+53	-40.5	0
+54	-40.5	0
+55	-40.5	0
+56	-40.5	0
+57	-40.5	0
+58	-40.5	0
+59	-40.5	0
+60	-40.5	0
+61	-40.5	0
+62	-40.5	0
+63	-40.5	0
+64	-40.5	0
+65	-40.5	0
+66	-40.5	0
+67	-40.5	0
+68	-40.5	0
+69	-40.5	0
+70	-40.5	0
+71	-40.5	0
+72	-40.5	0
+73	-40.5	0
+74	-40.5	0
+75	-40.5	0
+76	-40.5	0
+77	-40.5	0
+78	-40.5	0
+79	-40.5	0
+80	-40.5	0
+81	-40.5	0
+82	-40.5	0
+83	-40.5	0
+84	-40.5	0
+85	-40.5	0
+86	-40.5	0
+87	-40.5	0
+88	-40.5	0
+89	-40.5	0
+90	-40.5	0
+91	-40.5	0
+92	-40.5	0
+93	-40.5	0
+94	-40.5	0
+95	-40.5	0
+96	-40.5	0
+97	-40.5	0
+98	-40.5	0
+99	-40.5	0
+100	-40.5	0
+101	-40.5	0
+102	-40.5	0
+103	-40.5	0
+104	-40.5	0
+105	-40.5	0
+106	-40.5	0
+107	-40.5	0
+108	-40.5	0
+109	-40.5	0
+110	-40.5	0
+111	-40.5	0
+112	-40.5	0
+113	-40.5	0
+114	-40.5	0
+115	-40.5	0
+116	-40.5	0
+117	-40.5	0
+118	-40.5	0
+119	-40.5	0
+120	-40.5	0
+121	-40.5	0
+122	-40.5	0
+123	-40.5	0
+124	-40.5	0
+125	-40.5	0
+126	-40.5	0
+127	-40.5	0
+128	-40.5	0
+129	-40.5	0
+130	-40.5	0
+131	-40.5	0
+132	-40.5	0
+133	-40.5	0
+134	-40.5	0
+135	-40.5	0
+136	-40.5	0
+137	-40.5	0
+138	-40.5	0
+139	-40.5	0
+140	-40.5	0
+141	-40.5	0
+142	-40.5	0
+143	-40.5	0
+144	-40.5	0
+145	-40.5	-0.044237
+146	-40.5	0
+147	-40.5	0
+148	-40.5	0.0039619
+149	-40.5	0
+150	-40.5	0
+151	-40.5	0
+152	-40.5	0
+153	-40.5	0
+154	-40.5	0
+155	-40.5	0
+156	-40.5	0
+157	-40.5	0
+158	-40.5	0
+159	-40.5	0
+160	-40.5	0
+161	-40.5	0
+162	-40.5	0
+163	-40.5	0
+164	-40.5	0
+165	-40.5	0
+166	-40.5	0
+167	-40.5	0
+168	-40.5	0
+169	-40.5	0
+170	-40.5	0
+171	-40.5	0
+172	-40.5	-0.0091464
+173	-40.5	-0.10547
+174	-40.5	-0.033608
+175	-40.5	-0.023785
+176	-40.5	-1.141
+177	-40.5	0
+178	-40.5	0
+179	-40.5	0
+180	-40.5	0
+181	-40.5	0
+182	-40.5	0
+183	-40.5	0
+184	-40.5	0
+185	-40.5	0
+186	-40.5	0
+187	-40.5	0
+188	-40.5	0
+189	-40.5	0
+190	-40.5	0
+191	-40.5	0
+192	-40.5	0
+193	-40.5	0
+194	-40.5	0
+195	-40.5	0
+196	-40.5	0
+197	-40.5	0
+198	-40.5	0
+199	-40.5	0
+200	-40.5	0
+201	-40.5	0
+202	-40.5	0
+203	-40.5	0
+204	-40.5	0
+205	-40.5	0
+206	-40.5	0
+207	-40.5	0
+208	-40.5	0
+209	-40.5	0
+210	-40.5	0
+211	-40.5	0
+212	-40.5	0
+213	-40.5	0
+214	-40.5	0
+215	-40.5	0
+216	-40.5	0
+217	-40.5	0
+218	-40.5	0
+219	-40.5	0
+220	-40.5	0
+221	-40.5	0
+222	-40.5	0
+223	-40.5	0
+224	-40.5	0
+225	-40.5	0
+226	-40.5	0
+227	-40.5	0
+228	-40.5	0
+229	-40.5	0
+230	-40.5	0
+231	-40.5	0
+232	-40.5	0
+233	-40.5	0
+234	-40.5	0
+235	-40.5	0
+236	-40.5	0
+237	-40.5	0
+238	-40.5	0
+239	-40.5	0
+240	-40.5	0
+241	-40.5	0
+242	-40.5	0
+243	-40.5	0
+244	-40.5	0
+245	-40.5	0
+246	-40.5	0
+247	-40.5	0
+248	-40.5	0
+249	-40.5	0
+250	-40.5	0
+251	-40.5	0
+252	-40.5	0
+253	-40.5	0
+254	-40.5	0
+255	-40.5	0
+256	-40.5	0
+257	-40.5	0
+258	-40.5	0
+259	-40.5	0
+260	-40.5	0
+261	-40.5	0
+262	-40.5	0
+263	-40.5	0
+264	-40.5	0
+265	-40.5	0
+266	-40.5	0
+267	-40.5	0
+268	-40.5	0
+269	-40.5	0
+270	-40.5	0
+271	-40.5	0
+272	-40.5	0
+273	-40.5	0
+274	-40.5	0
+275	-40.5	0
+276	-40.5	0
+277	-40.5	0
+278	-40.5	0
+279	-40.5	0
+280	-40.5	0
+281	-40.5	0
+282	-40.5	0
+283	-40.5	0
+284	-40.5	0
+285	-40.5	0
+286	-40.5	0
+287	-40.5	-0.43573
+288	-40.5	-0.9964
+289	-40.5	-1.9244
+290	-40.5	-1.6808
+291	-40.5	-1.2513
+292	-40.5	-1.1849
+293	-40.5	-0.93093
+294	-40.5	-0.76233
+295	-40.5	-0.84409
+296	-40.5	-0.93483
+297	-40.5	-1.0814
+298	-40.5	0
+299	-40.5	0
+300	-40.5	0
+301	-40.5	0
+302	-40.5	0
+303	-40.5	0
+304	-40.5	0
+305	-40.5	0
+306	-40.5	0
+307	-40.5	0
+308	-40.5	0
+309	-40.5	0
+310	-40.5	0
+311	-40.5	0
+312	-40.5	0
+313	-40.5	0
+314	-40.5	0
+315	-40.5	0
+316	-40.5	0
+317	-40.5	0
+318	-40.5	0
+319	-40.5	0
+320	-40.5	0
+321	-40.5	0
+322	-40.5	0
+323	-40.5	0
+324	-40.5	0
+325	-40.5	0
+326	-40.5	0
+327	-40.5	0
+328	-40.5	0
+329	-40.5	0
+330	-40.5	0
+331	-40.5	0
+332	-40.5	0
+333	-40.5	0
+334	-40.5	0
+335	-40.5	0
+336	-40.5	0
+337	-40.5	0
+338	-40.5	0
+339	-40.5	0
+340	-40.5	0
+341	-40.5	0
+342	-40.5	0
+343	-40.5	0
+344	-40.5	0
+345	-40.5	0
+346	-40.5	0
+347	-40.5	0
+348	-40.5	0
+349	-40.5	0
+350	-40.5	0
+351	-40.5	0
+352	-40.5	0
+353	-40.5	0
+354	-40.5	0
+355	-40.5	0
+356	-40.5	0
+357	-40.5	0
+358	-40.5	0
+359	-40.5	0
+360	-40.5	0
+0	-40	0
+1	-40	0
+2	-40	0
+3	-40	0
+4	-40	0
+5	-40	0
+6	-40	0
+7	-40	0
+8	-40	0
+9	-40	0
+10	-40	0
+11	-40	0
+12	-40	0
+13	-40	0
+14	-40	0
+15	-40	0
+16	-40	0
+17	-40	0
+18	-40	0
+19	-40	0
+20	-40	0
+21	-40	0
+22	-40	0
+23	-40	0
+24	-40	0
+25	-40	0
+26	-40	0
+27	-40	0
+28	-40	0
+29	-40	0
+30	-40	0
+31	-40	0
+32	-40	0
+33	-40	0
+34	-40	0
+35	-40	0
+36	-40	0
+37	-40	0
+38	-40	0
+39	-40	0
+40	-40	0
+41	-40	0
+42	-40	0
+43	-40	0
+44	-40	0
+45	-40	0
+46	-40	0
+47	-40	0
+48	-40	0
+49	-40	0
+50	-40	0
+51	-40	0
+52	-40	0
+53	-40	0
+54	-40	0
+55	-40	0
+56	-40	0
+57	-40	0
+58	-40	0
+59	-40	0
+60	-40	0
+61	-40	0
+62	-40	0
+63	-40	0
+64	-40	0
+65	-40	0
+66	-40	0
+67	-40	0
+68	-40	0
+69	-40	0
+70	-40	0
+71	-40	0
+72	-40	0
+73	-40	0
+74	-40	0
+75	-40	0
+76	-40	0
+77	-40	0
+78	-40	0
+79	-40	0
+80	-40	0
+81	-40	0
+82	-40	0
+83	-40	0
+84	-40	0
+85	-40	0
+86	-40	0
+87	-40	0
+88	-40	0
+89	-40	0
+90	-40	0
+91	-40	0
+92	-40	0
+93	-40	0
+94	-40	0
+95	-40	0
+96	-40	0
+97	-40	0
+98	-40	0
+99	-40	0
+100	-40	0
+101	-40	0
+102	-40	0
+103	-40	0
+104	-40	0
+105	-40	0
+106	-40	0
+107	-40	0
+108	-40	0
+109	-40	0
+110	-40	0
+111	-40	0
+112	-40	0
+113	-40	0
+114	-40	0
+115	-40	0
+116	-40	0
+117	-40	0
+118	-40	0
+119	-40	0
+120	-40	0
+121	-40	0
+122	-40	0
+123	-40	0
+124	-40	0
+125	-40	0
+126	-40	0
+127	-40	0
+128	-40	0
+129	-40	0
+130	-40	0
+131	-40	0
+132	-40	0
+133	-40	0
+134	-40	0
+135	-40	0
+136	-40	0
+137	-40	0
+138	-40	0
+139	-40	0
+140	-40	0
+141	-40	0
+142	-40	0
+143	-40	0
+144	-40	0
+145	-40	0
+146	-40	0
+147	-40	0
+148	-40	0.013922
+149	-40	0
+150	-40	0
+151	-40	0
+152	-40	0
+153	-40	0
+154	-40	0
+155	-40	0
+156	-40	0
+157	-40	0
+158	-40	0
+159	-40	0
+160	-40	0
+161	-40	0
+162	-40	0
+163	-40	0
+164	-40	0
+165	-40	0
+166	-40	0
+167	-40	0
+168	-40	0
+169	-40	0
+170	-40	0
+171	-40	0
+172	-40	0
+173	-40	0
+174	-40	-0.10784
+175	-40	-0.48063
+176	-40	-1.3734
+177	-40	-0.41112
+178	-40	0
+179	-40	0
+180	-40	0
+181	-40	0
+182	-40	0
+183	-40	0
+184	-40	0
+185	-40	0
+186	-40	0
+187	-40	0
+188	-40	0
+189	-40	0
+190	-40	0
+191	-40	0
+192	-40	0
+193	-40	0
+194	-40	0
+195	-40	0
+196	-40	0
+197	-40	0
+198	-40	0
+199	-40	0
+200	-40	0
+201	-40	0
+202	-40	0
+203	-40	0
+204	-40	0
+205	-40	0
+206	-40	0
+207	-40	0
+208	-40	0
+209	-40	0
+210	-40	0
+211	-40	0
+212	-40	0
+213	-40	0
+214	-40	0
+215	-40	0
+216	-40	0
+217	-40	0
+218	-40	0
+219	-40	0
+220	-40	0
+221	-40	0
+222	-40	0
+223	-40	0
+224	-40	0
+225	-40	0
+226	-40	0
+227	-40	0
+228	-40	0
+229	-40	0
+230	-40	0
+231	-40	0
+232	-40	0
+233	-40	0
+234	-40	0
+235	-40	0
+236	-40	0
+237	-40	0
+238	-40	0
+239	-40	0
+240	-40	0
+241	-40	0
+242	-40	0
+243	-40	0
+244	-40	0
+245	-40	0
+246	-40	0
+247	-40	0
+248	-40	0
+249	-40	0
+250	-40	0
+251	-40	0
+252	-40	0
+253	-40	0
+254	-40	0
+255	-40	0
+256	-40	0
+257	-40	0
+258	-40	0
+259	-40	0
+260	-40	0
+261	-40	0
+262	-40	0
+263	-40	0
+264	-40	0
+265	-40	0
+266	-40	0
+267	-40	0
+268	-40	0
+269	-40	0
+270	-40	0
+271	-40	0
+272	-40	0
+273	-40	0
+274	-40	0
+275	-40	0
+276	-40	0
+277	-40	0
+278	-40	0
+279	-40	0
+280	-40	0
+281	-40	0
+282	-40	0
+283	-40	0
+284	-40	0
+285	-40	0
+286	-40	0
+287	-40	-0.53793
+288	-40	-0.66276
+289	-40	-2.2461
+290	-40	-1.9114
+291	-40	-1.4282
+292	-40	-1.3911
+293	-40	-1.1528
+294	-40	-1.0213
+295	-40	-1.1491
+296	-40	-1.3766
+297	-40	-1.544
+298	-40	-0.050853
+299	-40	0
+300	-40	0
+301	-40	0
+302	-40	0
+303	-40	0
+304	-40	0
+305	-40	0
+306	-40	0
+307	-40	0
+308	-40	0
+309	-40	0
+310	-40	0
+311	-40	0
+312	-40	0
+313	-40	0
+314	-40	0
+315	-40	0
+316	-40	0
+317	-40	0
+318	-40	0
+319	-40	0
+320	-40	0
+321	-40	0
+322	-40	0
+323	-40	0
+324	-40	0
+325	-40	0
+326	-40	0
+327	-40	0
+328	-40	0
+329	-40	0
+330	-40	0
+331	-40	0
+332	-40	0
+333	-40	0
+334	-40	0
+335	-40	0
+336	-40	0
+337	-40	0
+338	-40	0
+339	-40	0
+340	-40	0
+341	-40	0
+342	-40	0
+343	-40	0
+344	-40	0
+345	-40	0
+346	-40	0
+347	-40	0
+348	-40	0
+349	-40	0
+350	-40	0
+351	-40	0
+352	-40	0
+353	-40	0
+354	-40	0
+355	-40	0
+356	-40	0
+357	-40	0
+358	-40	0
+359	-40	0
+360	-40	0
+0	-39.5	0
+1	-39.5	0
+2	-39.5	0
+3	-39.5	0
+4	-39.5	0
+5	-39.5	0
+6	-39.5	0
+7	-39.5	0
+8	-39.5	0
+9	-39.5	0
+10	-39.5	0
+11	-39.5	0
+12	-39.5	0
+13	-39.5	0
+14	-39.5	0
+15	-39.5	0
+16	-39.5	0
+17	-39.5	0
+18	-39.5	0
+19	-39.5	0
+20	-39.5	0
+21	-39.5	0
+22	-39.5	0
+23	-39.5	0
+24	-39.5	0
+25	-39.5	0
+26	-39.5	0
+27	-39.5	0
+28	-39.5	0
+29	-39.5	0
+30	-39.5	0
+31	-39.5	0
+32	-39.5	0
+33	-39.5	0
+34	-39.5	0
+35	-39.5	0
+36	-39.5	0
+37	-39.5	0
+38	-39.5	0
+39	-39.5	0
+40	-39.5	0
+41	-39.5	0
+42	-39.5	0
+43	-39.5	0
+44	-39.5	0
+45	-39.5	0
+46	-39.5	0
+47	-39.5	0
+48	-39.5	0
+49	-39.5	0
+50	-39.5	0
+51	-39.5	0
+52	-39.5	0
+53	-39.5	0
+54	-39.5	0
+55	-39.5	0
+56	-39.5	0
+57	-39.5	0
+58	-39.5	0
+59	-39.5	0
+60	-39.5	0
+61	-39.5	0
+62	-39.5	0
+63	-39.5	0
+64	-39.5	0
+65	-39.5	0
+66	-39.5	0
+67	-39.5	0
+68	-39.5	0
+69	-39.5	0
+70	-39.5	0
+71	-39.5	0
+72	-39.5	0
+73	-39.5	0
+74	-39.5	0
+75	-39.5	0
+76	-39.5	0
+77	-39.5	0
+78	-39.5	0
+79	-39.5	0
+80	-39.5	0
+81	-39.5	0
+82	-39.5	0
+83	-39.5	0
+84	-39.5	0
+85	-39.5	0
+86	-39.5	0
+87	-39.5	0
+88	-39.5	0
+89	-39.5	0
+90	-39.5	0
+91	-39.5	0
+92	-39.5	0
+93	-39.5	0
+94	-39.5	0
+95	-39.5	0
+96	-39.5	0
+97	-39.5	0
+98	-39.5	0
+99	-39.5	0
+100	-39.5	0
+101	-39.5	0
+102	-39.5	0
+103	-39.5	0
+104	-39.5	0
+105	-39.5	0
+106	-39.5	0
+107	-39.5	0
+108	-39.5	0
+109	-39.5	0
+110	-39.5	0
+111	-39.5	0
+112	-39.5	0
+113	-39.5	0
+114	-39.5	0
+115	-39.5	0
+116	-39.5	0
+117	-39.5	0
+118	-39.5	0
+119	-39.5	0
+120	-39.5	0
+121	-39.5	0
+122	-39.5	0
+123	-39.5	0
+124	-39.5	0
+125	-39.5	0
+126	-39.5	0
+127	-39.5	0
+128	-39.5	0
+129	-39.5	0
+130	-39.5	0
+131	-39.5	0
+132	-39.5	0
+133	-39.5	0
+134	-39.5	0
+135	-39.5	0
+136	-39.5	0
+137	-39.5	0
+138	-39.5	0
+139	-39.5	0
+140	-39.5	0
+141	-39.5	0
+142	-39.5	0
+143	-39.5	0
+144	-39.5	0
+145	-39.5	0
+146	-39.5	0
+147	-39.5	0
+148	-39.5	0.013655
+149	-39.5	0
+150	-39.5	0
+151	-39.5	0
+152	-39.5	0
+153	-39.5	0
+154	-39.5	0
+155	-39.5	0
+156	-39.5	0
+157	-39.5	0
+158	-39.5	0
+159	-39.5	0
+160	-39.5	0
+161	-39.5	0
+162	-39.5	0
+163	-39.5	0
+164	-39.5	0
+165	-39.5	0
+166	-39.5	0
+167	-39.5	0
+168	-39.5	0
+169	-39.5	0
+170	-39.5	0
+171	-39.5	0
+172	-39.5	0
+173	-39.5	0
+174	-39.5	-0.20386
+175	-39.5	-1.1574
+176	-39.5	-1.4389
+177	-39.5	-0.23209
+178	-39.5	0
+179	-39.5	0
+180	-39.5	0
+181	-39.5	0
+182	-39.5	0
+183	-39.5	0
+184	-39.5	0
+185	-39.5	0
+186	-39.5	0
+187	-39.5	0
+188	-39.5	0
+189	-39.5	0
+190	-39.5	0
+191	-39.5	0
+192	-39.5	0
+193	-39.5	0
+194	-39.5	0
+195	-39.5	0
+196	-39.5	0
+197	-39.5	0
+198	-39.5	0
+199	-39.5	0
+200	-39.5	0
+201	-39.5	0
+202	-39.5	0
+203	-39.5	0
+204	-39.5	0
+205	-39.5	0
+206	-39.5	0
+207	-39.5	0
+208	-39.5	0
+209	-39.5	0
+210	-39.5	0
+211	-39.5	0
+212	-39.5	0
+213	-39.5	0
+214	-39.5	0
+215	-39.5	0
+216	-39.5	0
+217	-39.5	0
+218	-39.5	0
+219	-39.5	0
+220	-39.5	0
+221	-39.5	0
+222	-39.5	0
+223	-39.5	0
+224	-39.5	0
+225	-39.5	0
+226	-39.5	0
+227	-39.5	0
+228	-39.5	0
+229	-39.5	0
+230	-39.5	0
+231	-39.5	0
+232	-39.5	0
+233	-39.5	0
+234	-39.5	0
+235	-39.5	0
+236	-39.5	0
+237	-39.5	0
+238	-39.5	0
+239	-39.5	0
+240	-39.5	0
+241	-39.5	0
+242	-39.5	0
+243	-39.5	0
+244	-39.5	0
+245	-39.5	0
+246	-39.5	0
+247	-39.5	0
+248	-39.5	0
+249	-39.5	0
+250	-39.5	0
+251	-39.5	0
+252	-39.5	0
+253	-39.5	0
+254	-39.5	0
+255	-39.5	0
+256	-39.5	0
+257	-39.5	0
+258	-39.5	0
+259	-39.5	0
+260	-39.5	0
+261	-39.5	0
+262	-39.5	0
+263	-39.5	0
+264	-39.5	0
+265	-39.5	0
+266	-39.5	0
+267	-39.5	0
+268	-39.5	0
+269	-39.5	0
+270	-39.5	0
+271	-39.5	0
+272	-39.5	0
+273	-39.5	0
+274	-39.5	0
+275	-39.5	0
+276	-39.5	0
+277	-39.5	0
+278	-39.5	0
+279	-39.5	0
+280	-39.5	0
+281	-39.5	0
+282	-39.5	0
+283	-39.5	0
+284	-39.5	0
+285	-39.5	0
+286	-39.5	0
+287	-39.5	-0.68678
+288	-39.5	-0.10593
+289	-39.5	-2.706
+290	-39.5	-2.141
+291	-39.5	-1.5942
+292	-39.5	-1.5974
+293	-39.5	-1.3658
+294	-39.5	-1.2872
+295	-39.5	-1.4186
+296	-39.5	-1.6831
+297	-39.5	-1.9688
+298	-39.5	-0.22452
+299	-39.5	0
+300	-39.5	0
+301	-39.5	0
+302	-39.5	0
+303	-39.5	0
+304	-39.5	0
+305	-39.5	0
+306	-39.5	0
+307	-39.5	0
+308	-39.5	0
+309	-39.5	0
+310	-39.5	0
+311	-39.5	0
+312	-39.5	0
+313	-39.5	0
+314	-39.5	0
+315	-39.5	0
+316	-39.5	0
+317	-39.5	0
+318	-39.5	0
+319	-39.5	0
+320	-39.5	0
+321	-39.5	0
+322	-39.5	0
+323	-39.5	0
+324	-39.5	0
+325	-39.5	0
+326	-39.5	0
+327	-39.5	0
+328	-39.5	0
+329	-39.5	0
+330	-39.5	0
+331	-39.5	0
+332	-39.5	0
+333	-39.5	0
+334	-39.5	0
+335	-39.5	0
+336	-39.5	0
+337	-39.5	0
+338	-39.5	0
+339	-39.5	0
+340	-39.5	0
+341	-39.5	0
+342	-39.5	0
+343	-39.5	0
+344	-39.5	0
+345	-39.5	0
+346	-39.5	0
+347	-39.5	0
+348	-39.5	0
+349	-39.5	0
+350	-39.5	0
+351	-39.5	0
+352	-39.5	0
+353	-39.5	0
+354	-39.5	0
+355	-39.5	0
+356	-39.5	0
+357	-39.5	0
+358	-39.5	0
+359	-39.5	0
+360	-39.5	0
+0	-39	0
+1	-39	0
+2	-39	0
+3	-39	0
+4	-39	0
+5	-39	0
+6	-39	0
+7	-39	0
+8	-39	0
+9	-39	0
+10	-39	0
+11	-39	0
+12	-39	0
+13	-39	0
+14	-39	0
+15	-39	0
+16	-39	0
+17	-39	0
+18	-39	0
+19	-39	0
+20	-39	0
+21	-39	0
+22	-39	0
+23	-39	0
+24	-39	0
+25	-39	0
+26	-39	0
+27	-39	0
+28	-39	0
+29	-39	0
+30	-39	0
+31	-39	0
+32	-39	0
+33	-39	0
+34	-39	0
+35	-39	0
+36	-39	0
+37	-39	0
+38	-39	0
+39	-39	0
+40	-39	0
+41	-39	0
+42	-39	0
+43	-39	0
+44	-39	0
+45	-39	0
+46	-39	0
+47	-39	0
+48	-39	0
+49	-39	0
+50	-39	0
+51	-39	0
+52	-39	0
+53	-39	0
+54	-39	0
+55	-39	0
+56	-39	0
+57	-39	0
+58	-39	0
+59	-39	0
+60	-39	0
+61	-39	0
+62	-39	0
+63	-39	0
+64	-39	0
+65	-39	0
+66	-39	0
+67	-39	0
+68	-39	0
+69	-39	0
+70	-39	0
+71	-39	0
+72	-39	0
+73	-39	0
+74	-39	0
+75	-39	0
+76	-39	0
+77	-39	0
+78	-39	0
+79	-39	0
+80	-39	0
+81	-39	0
+82	-39	0
+83	-39	0
+84	-39	0
+85	-39	0
+86	-39	0
+87	-39	0
+88	-39	0
+89	-39	0
+90	-39	0
+91	-39	0
+92	-39	0
+93	-39	0
+94	-39	0
+95	-39	0
+96	-39	0
+97	-39	0
+98	-39	0
+99	-39	0
+100	-39	0
+101	-39	0
+102	-39	0
+103	-39	0
+104	-39	0
+105	-39	0
+106	-39	0
+107	-39	0
+108	-39	0
+109	-39	0
+110	-39	0
+111	-39	0
+112	-39	0
+113	-39	0
+114	-39	0
+115	-39	0
+116	-39	0
+117	-39	0
+118	-39	0
+119	-39	0
+120	-39	0
+121	-39	0
+122	-39	0
+123	-39	0
+124	-39	0
+125	-39	0
+126	-39	0
+127	-39	0
+128	-39	0
+129	-39	0
+130	-39	0
+131	-39	0
+132	-39	0
+133	-39	0
+134	-39	0
+135	-39	0
+136	-39	0
+137	-39	0
+138	-39	0
+139	-39	0
+140	-39	0
+141	-39	0
+142	-39	0
+143	-39	-0.062129
+144	-39	-0.036211
+145	-39	0
+146	-39	0
+147	-39	0
+148	-39	0
+149	-39	0
+150	-39	0
+151	-39	0
+152	-39	0
+153	-39	0
+154	-39	0
+155	-39	0
+156	-39	0
+157	-39	0
+158	-39	0
+159	-39	0
+160	-39	0
+161	-39	0
+162	-39	0
+163	-39	0
+164	-39	0
+165	-39	0
+166	-39	0
+167	-39	0
+168	-39	0
+169	-39	0
+170	-39	0
+171	-39	0
+172	-39	0
+173	-39	0
+174	-39	-0.18329
+175	-39	-1.0802
+176	-39	-1.4302
+177	-39	-0.62882
+178	-39	0
+179	-39	0
+180	-39	0
+181	-39	0
+182	-39	0
+183	-39	0
+184	-39	0
+185	-39	0
+186	-39	0
+187	-39	0
+188	-39	0
+189	-39	0
+190	-39	0
+191	-39	0
+192	-39	0
+193	-39	0
+194	-39	0
+195	-39	0
+196	-39	0
+197	-39	0
+198	-39	0
+199	-39	0
+200	-39	0
+201	-39	0
+202	-39	0
+203	-39	0
+204	-39	0
+205	-39	0
+206	-39	0
+207	-39	0
+208	-39	0
+209	-39	0
+210	-39	0
+211	-39	0
+212	-39	0
+213	-39	0
+214	-39	0
+215	-39	0
+216	-39	0
+217	-39	0
+218	-39	0
+219	-39	0
+220	-39	0
+221	-39	0
+222	-39	0
+223	-39	0
+224	-39	0
+225	-39	0
+226	-39	0
+227	-39	0
+228	-39	0
+229	-39	0
+230	-39	0
+231	-39	0
+232	-39	0
+233	-39	0
+234	-39	0
+235	-39	0
+236	-39	0
+237	-39	0
+238	-39	0
+239	-39	0
+240	-39	0
+241	-39	0
+242	-39	0
+243	-39	0
+244	-39	0
+245	-39	0
+246	-39	0
+247	-39	0
+248	-39	0
+249	-39	0
+250	-39	0
+251	-39	0
+252	-39	0
+253	-39	0
+254	-39	0
+255	-39	0
+256	-39	0
+257	-39	0
+258	-39	0
+259	-39	0
+260	-39	0
+261	-39	0
+262	-39	0
+263	-39	0
+264	-39	0
+265	-39	0
+266	-39	0
+267	-39	0
+268	-39	0
+269	-39	0
+270	-39	0
+271	-39	0
+272	-39	0
+273	-39	0
+274	-39	0
+275	-39	0
+276	-39	0
+277	-39	0
+278	-39	0
+279	-39	0
+280	-39	0
+281	-39	0
+282	-39	0
+283	-39	0
+284	-39	0
+285	-39	0
+286	-39	0
+287	-39	-0.74547
+288	-39	-2.6859
+289	-39	-3.13
+290	-39	-2.3471
+291	-39	-1.3891
+292	-39	-1.8697
+293	-39	-1.8045
+294	-39	-1.5866
+295	-39	-1.7217
+296	-39	-1.9772
+297	-39	-2.2483
+298	-39	-1.4037
+299	-39	-0.18487
+300	-39	-0.1348
+301	-39	-0.33257
+302	-39	0
+303	-39	0
+304	-39	0
+305	-39	0
+306	-39	0
+307	-39	0
+308	-39	0
+309	-39	0
+310	-39	0
+311	-39	0
+312	-39	0
+313	-39	0
+314	-39	0
+315	-39	0
+316	-39	0
+317	-39	0
+318	-39	0
+319	-39	0
+320	-39	0
+321	-39	0
+322	-39	0
+323	-39	0
+324	-39	0
+325	-39	0
+326	-39	0
+327	-39	0
+328	-39	0
+329	-39	0
+330	-39	0
+331	-39	0
+332	-39	0
+333	-39	0
+334	-39	0
+335	-39	0
+336	-39	0
+337	-39	0
+338	-39	0
+339	-39	0
+340	-39	0
+341	-39	0
+342	-39	0
+343	-39	0
+344	-39	0
+345	-39	0
+346	-39	0
+347	-39	0
+348	-39	0
+349	-39	0
+350	-39	0
+351	-39	0
+352	-39	0
+353	-39	0
+354	-39	0
+355	-39	0
+356	-39	0
+357	-39	0
+358	-39	0
+359	-39	0
+360	-39	0
+0	-38.5	0
+1	-38.5	0
+2	-38.5	0
+3	-38.5	0
+4	-38.5	0
+5	-38.5	0
+6	-38.5	0
+7	-38.5	0
+8	-38.5	0
+9	-38.5	0
+10	-38.5	0
+11	-38.5	0
+12	-38.5	0
+13	-38.5	0
+14	-38.5	0
+15	-38.5	0
+16	-38.5	0
+17	-38.5	0
+18	-38.5	0
+19	-38.5	0
+20	-38.5	0
+21	-38.5	0
+22	-38.5	0
+23	-38.5	0
+24	-38.5	0
+25	-38.5	0
+26	-38.5	0
+27	-38.5	0
+28	-38.5	0
+29	-38.5	0
+30	-38.5	0
+31	-38.5	0
+32	-38.5	0
+33	-38.5	0
+34	-38.5	0
+35	-38.5	0
+36	-38.5	0
+37	-38.5	0
+38	-38.5	0
+39	-38.5	0
+40	-38.5	0
+41	-38.5	0
+42	-38.5	0
+43	-38.5	0
+44	-38.5	0
+45	-38.5	0
+46	-38.5	0
+47	-38.5	0
+48	-38.5	0
+49	-38.5	0
+50	-38.5	0
+51	-38.5	0
+52	-38.5	0
+53	-38.5	0
+54	-38.5	0
+55	-38.5	0
+56	-38.5	0
+57	-38.5	0
+58	-38.5	0
+59	-38.5	0
+60	-38.5	0
+61	-38.5	0
+62	-38.5	0
+63	-38.5	0
+64	-38.5	0
+65	-38.5	0
+66	-38.5	0
+67	-38.5	0
+68	-38.5	0
+69	-38.5	0
+70	-38.5	0
+71	-38.5	0
+72	-38.5	0
+73	-38.5	0
+74	-38.5	0
+75	-38.5	0
+76	-38.5	0
+77	-38.5	0
+78	-38.5	0
+79	-38.5	0
+80	-38.5	0
+81	-38.5	0
+82	-38.5	0
+83	-38.5	0
+84	-38.5	0
+85	-38.5	0
+86	-38.5	0
+87	-38.5	0
+88	-38.5	0
+89	-38.5	0
+90	-38.5	0
+91	-38.5	0
+92	-38.5	0
+93	-38.5	0
+94	-38.5	0
+95	-38.5	0
+96	-38.5	0
+97	-38.5	0
+98	-38.5	0
+99	-38.5	0
+100	-38.5	0
+101	-38.5	0
+102	-38.5	0
+103	-38.5	0
+104	-38.5	0
+105	-38.5	0
+106	-38.5	0
+107	-38.5	0
+108	-38.5	0
+109	-38.5	0
+110	-38.5	0
+111	-38.5	0
+112	-38.5	0
+113	-38.5	0
+114	-38.5	0
+115	-38.5	0
+116	-38.5	0
+117	-38.5	0
+118	-38.5	0
+119	-38.5	0
+120	-38.5	0
+121	-38.5	0
+122	-38.5	0
+123	-38.5	0
+124	-38.5	0
+125	-38.5	0
+126	-38.5	0
+127	-38.5	0
+128	-38.5	0
+129	-38.5	0
+130	-38.5	0
+131	-38.5	0
+132	-38.5	0
+133	-38.5	0
+134	-38.5	0
+135	-38.5	0
+136	-38.5	0
+137	-38.5	0
+138	-38.5	0
+139	-38.5	0
+140	-38.5	0
+141	-38.5	-0.02627
+142	-38.5	-0.010448
+143	-38.5	-0.19567
+144	-38.5	-0.13471
+145	-38.5	0.0058291
+146	-38.5	0.14653
+147	-38.5	0.15914
+148	-38.5	0.0043788
+149	-38.5	0
+150	-38.5	0
+151	-38.5	0
+152	-38.5	0
+153	-38.5	0
+154	-38.5	0
+155	-38.5	0
+156	-38.5	0
+157	-38.5	0
+158	-38.5	0
+159	-38.5	0
+160	-38.5	0
+161	-38.5	0
+162	-38.5	0
+163	-38.5	0
+164	-38.5	0
+165	-38.5	0
+166	-38.5	0
+167	-38.5	0
+168	-38.5	0
+169	-38.5	0
+170	-38.5	0
+171	-38.5	0
+172	-38.5	0
+173	-38.5	0
+174	-38.5	-0.10293
+175	-38.5	-0.85684
+176	-38.5	-1.148
+177	-38.5	-1.1156
+178	-38.5	-0.23791
+179	-38.5	0
+180	-38.5	0
+181	-38.5	0
+182	-38.5	0
+183	-38.5	0
+184	-38.5	0
+185	-38.5	0
+186	-38.5	0
+187	-38.5	0
+188	-38.5	0
+189	-38.5	0
+190	-38.5	0
+191	-38.5	0
+192	-38.5	0
+193	-38.5	0
+194	-38.5	0
+195	-38.5	0
+196	-38.5	0
+197	-38.5	0
+198	-38.5	0
+199	-38.5	0
+200	-38.5	0
+201	-38.5	0
+202	-38.5	0
+203	-38.5	0
+204	-38.5	0
+205	-38.5	0
+206	-38.5	0
+207	-38.5	0
+208	-38.5	0
+209	-38.5	0
+210	-38.5	0
+211	-38.5	0
+212	-38.5	0
+213	-38.5	0
+214	-38.5	0
+215	-38.5	0
+216	-38.5	0
+217	-38.5	0
+218	-38.5	0
+219	-38.5	0
+220	-38.5	0
+221	-38.5	0
+222	-38.5	0
+223	-38.5	0
+224	-38.5	0
+225	-38.5	0
+226	-38.5	0
+227	-38.5	0
+228	-38.5	0
+229	-38.5	0
+230	-38.5	0
+231	-38.5	0
+232	-38.5	0
+233	-38.5	0
+234	-38.5	0
+235	-38.5	0
+236	-38.5	0
+237	-38.5	0
+238	-38.5	0
+239	-38.5	0
+240	-38.5	0
+241	-38.5	0
+242	-38.5	0
+243	-38.5	0
+244	-38.5	0
+245	-38.5	0
+246	-38.5	0
+247	-38.5	0
+248	-38.5	0
+249	-38.5	0
+250	-38.5	0
+251	-38.5	0
+252	-38.5	0
+253	-38.5	0
+254	-38.5	0
+255	-38.5	0
+256	-38.5	0
+257	-38.5	0
+258	-38.5	0
+259	-38.5	0
+260	-38.5	0
+261	-38.5	0
+262	-38.5	0
+263	-38.5	0
+264	-38.5	0
+265	-38.5	0
+266	-38.5	0
+267	-38.5	0
+268	-38.5	0
+269	-38.5	0
+270	-38.5	0
+271	-38.5	0
+272	-38.5	0
+273	-38.5	0
+274	-38.5	0
+275	-38.5	0
+276	-38.5	0
+277	-38.5	0
+278	-38.5	0
+279	-38.5	0
+280	-38.5	0
+281	-38.5	0
+282	-38.5	0
+283	-38.5	0
+284	-38.5	0
+285	-38.5	0
+286	-38.5	0
+287	-38.5	-0.95291
+288	-38.5	-2.7026
+289	-38.5	-3.5902
+290	-38.5	-2.4566
+291	-38.5	-1.358
+292	-38.5	-2.3051
+293	-38.5	-2.2313
+294	-38.5	-1.959
+295	-38.5	-2.0225
+296	-38.5	-2.2349
+297	-38.5	-2.3849
+298	-38.5	-2.0298
+299	-38.5	-0.92764
+300	-38.5	-0.47185
+301	-38.5	-0.7613
+302	-38.5	-0.065983
+303	-38.5	0
+304	-38.5	0
+305	-38.5	0
+306	-38.5	0
+307	-38.5	0
+308	-38.5	0
+309	-38.5	0
+310	-38.5	0
+311	-38.5	0
+312	-38.5	0
+313	-38.5	0
+314	-38.5	0
+315	-38.5	0
+316	-38.5	0
+317	-38.5	0
+318	-38.5	0
+319	-38.5	0
+320	-38.5	0
+321	-38.5	0
+322	-38.5	0
+323	-38.5	0
+324	-38.5	0
+325	-38.5	0
+326	-38.5	0
+327	-38.5	0
+328	-38.5	0
+329	-38.5	0
+330	-38.5	0
+331	-38.5	0
+332	-38.5	0
+333	-38.5	0
+334	-38.5	0
+335	-38.5	0
+336	-38.5	0
+337	-38.5	0
+338	-38.5	0
+339	-38.5	0
+340	-38.5	0
+341	-38.5	0
+342	-38.5	0
+343	-38.5	0
+344	-38.5	0
+345	-38.5	0
+346	-38.5	0
+347	-38.5	0
+348	-38.5	0
+349	-38.5	0
+350	-38.5	0
+351	-38.5	0
+352	-38.5	0
+353	-38.5	0
+354	-38.5	0
+355	-38.5	0
+356	-38.5	0
+357	-38.5	0
+358	-38.5	0
+359	-38.5	0
+360	-38.5	0
+0	-38	0
+1	-38	0
+2	-38	0
+3	-38	0
+4	-38	0
+5	-38	0
+6	-38	0
+7	-38	0
+8	-38	0
+9	-38	0
+10	-38	0
+11	-38	0
+12	-38	0
+13	-38	0
+14	-38	0
+15	-38	0
+16	-38	0
+17	-38	0
+18	-38	0
+19	-38	0
+20	-38	0
+21	-38	0
+22	-38	0
+23	-38	0
+24	-38	0
+25	-38	0
+26	-38	0
+27	-38	0
+28	-38	0
+29	-38	0
+30	-38	0
+31	-38	0
+32	-38	0
+33	-38	0
+34	-38	0
+35	-38	0
+36	-38	0
+37	-38	0
+38	-38	0
+39	-38	0
+40	-38	0
+41	-38	0
+42	-38	0
+43	-38	0
+44	-38	0
+45	-38	0
+46	-38	0
+47	-38	0
+48	-38	0
+49	-38	0
+50	-38	0
+51	-38	0
+52	-38	0
+53	-38	0
+54	-38	0
+55	-38	0
+56	-38	0
+57	-38	0
+58	-38	0
+59	-38	0
+60	-38	0
+61	-38	0
+62	-38	0
+63	-38	0
+64	-38	0
+65	-38	0
+66	-38	0
+67	-38	0
+68	-38	0
+69	-38	0
+70	-38	0
+71	-38	0
+72	-38	0
+73	-38	0
+74	-38	0
+75	-38	0
+76	-38	0
+77	-38	0
+78	-38	0
+79	-38	0
+80	-38	0
+81	-38	0
+82	-38	0
+83	-38	0
+84	-38	0
+85	-38	0
+86	-38	0
+87	-38	0
+88	-38	0
+89	-38	0
+90	-38	0
+91	-38	0
+92	-38	0
+93	-38	0
+94	-38	0
+95	-38	0
+96	-38	0
+97	-38	0
+98	-38	0
+99	-38	0
+100	-38	0
+101	-38	0
+102	-38	0
+103	-38	0
+104	-38	0
+105	-38	0
+106	-38	0
+107	-38	0
+108	-38	0
+109	-38	0
+110	-38	0
+111	-38	0
+112	-38	0
+113	-38	0
+114	-38	0
+115	-38	0
+116	-38	0
+117	-38	0
+118	-38	0
+119	-38	0
+120	-38	0
+121	-38	0
+122	-38	0
+123	-38	0
+124	-38	0
+125	-38	0
+126	-38	0
+127	-38	0
+128	-38	0
+129	-38	0
+130	-38	0
+131	-38	0
+132	-38	0
+133	-38	0
+134	-38	0
+135	-38	0
+136	-38	0
+137	-38	0
+138	-38	0
+139	-38	0
+140	-38	-0.0017719
+141	-38	-0.061977
+142	-38	-0.20427
+143	-38	-0.20696
+144	-38	-0.14041
+145	-38	0.10557
+146	-38	0.35247
+147	-38	0.37497
+148	-38	0.18416
+149	-38	0.12265
+150	-38	0
+151	-38	0
+152	-38	0
+153	-38	0
+154	-38	0
+155	-38	0
+156	-38	0
+157	-38	0
+158	-38	0
+159	-38	0
+160	-38	0
+161	-38	0
+162	-38	0
+163	-38	0
+164	-38	0
+165	-38	0
+166	-38	0
+167	-38	0
+168	-38	0
+169	-38	0
+170	-38	0
+171	-38	0
+172	-38	0
+173	-38	0
+174	-38	0
+175	-38	-0.5614
+176	-38	-0.85307
+177	-38	-0.43527
+178	-38	-0.33532
+179	-38	0
+180	-38	0
+181	-38	0
+182	-38	0
+183	-38	0
+184	-38	0
+185	-38	0
+186	-38	0
+187	-38	0
+188	-38	0
+189	-38	0
+190	-38	0
+191	-38	0
+192	-38	0
+193	-38	0
+194	-38	0
+195	-38	0
+196	-38	0
+197	-38	0
+198	-38	0
+199	-38	0
+200	-38	0
+201	-38	0
+202	-38	0
+203	-38	0
+204	-38	0
+205	-38	0
+206	-38	0
+207	-38	0
+208	-38	0
+209	-38	0
+210	-38	0
+211	-38	0
+212	-38	0
+213	-38	0
+214	-38	0
+215	-38	0
+216	-38	0
+217	-38	0
+218	-38	0
+219	-38	0
+220	-38	0
+221	-38	0
+222	-38	0
+223	-38	0
+224	-38	0
+225	-38	0
+226	-38	0
+227	-38	0
+228	-38	0
+229	-38	0
+230	-38	0
+231	-38	0
+232	-38	0
+233	-38	0
+234	-38	0
+235	-38	0
+236	-38	0
+237	-38	0
+238	-38	0
+239	-38	0
+240	-38	0
+241	-38	0
+242	-38	0
+243	-38	0
+244	-38	0
+245	-38	0
+246	-38	0
+247	-38	0
+248	-38	0
+249	-38	0
+250	-38	0
+251	-38	0
+252	-38	0
+253	-38	0
+254	-38	0
+255	-38	0
+256	-38	0
+257	-38	0
+258	-38	0
+259	-38	0
+260	-38	0
+261	-38	0
+262	-38	0
+263	-38	0
+264	-38	0
+265	-38	0
+266	-38	0
+267	-38	0
+268	-38	0
+269	-38	0
+270	-38	0
+271	-38	0
+272	-38	0
+273	-38	0
+274	-38	0
+275	-38	0
+276	-38	0
+277	-38	0
+278	-38	0
+279	-38	0
+280	-38	0
+281	-38	0
+282	-38	0
+283	-38	0
+284	-38	0
+285	-38	0
+286	-38	0
+287	-38	-1.2391
+288	-38	-3.4845
+289	-38	-2.5576
+290	-38	-2.4038
+291	-38	-1.327
+292	-38	-2.5251
+293	-38	-2.648
+294	-38	-2.3315
+295	-38	-2.2971
+296	-38	-2.4926
+297	-38	-2.5436
+298	-38	-2.2302
+299	-38	-1.4533
+300	-38	-0.87725
+301	-38	-0.81311
+302	-38	-0.46852
+303	-38	0
+304	-38	0
+305	-38	0
+306	-38	0
+307	-38	0
+308	-38	0
+309	-38	0
+310	-38	0
+311	-38	0
+312	-38	0
+313	-38	0
+314	-38	0
+315	-38	0
+316	-38	0
+317	-38	0
+318	-38	0
+319	-38	0
+320	-38	0
+321	-38	0
+322	-38	0
+323	-38	0
+324	-38	0
+325	-38	0
+326	-38	0
+327	-38	0
+328	-38	0
+329	-38	0
+330	-38	0
+331	-38	0
+332	-38	0
+333	-38	0
+334	-38	0
+335	-38	0
+336	-38	0
+337	-38	0
+338	-38	0
+339	-38	0
+340	-38	0
+341	-38	0
+342	-38	0
+343	-38	0
+344	-38	0
+345	-38	0
+346	-38	0
+347	-38	0
+348	-38	0
+349	-38	0
+350	-38	0
+351	-38	0
+352	-38	0
+353	-38	0
+354	-38	0
+355	-38	0
+356	-38	0
+357	-38	0
+358	-38	0
+359	-38	0
+360	-38	0
+0	-37.5	0
+1	-37.5	0
+2	-37.5	0
+3	-37.5	0
+4	-37.5	0
+5	-37.5	0
+6	-37.5	0
+7	-37.5	0
+8	-37.5	0
+9	-37.5	0
+10	-37.5	0
+11	-37.5	0
+12	-37.5	0
+13	-37.5	0
+14	-37.5	0
+15	-37.5	0
+16	-37.5	0
+17	-37.5	0
+18	-37.5	0
+19	-37.5	0
+20	-37.5	0
+21	-37.5	0
+22	-37.5	0
+23	-37.5	0
+24	-37.5	0
+25	-37.5	0
+26	-37.5	0
+27	-37.5	0
+28	-37.5	0
+29	-37.5	0
+30	-37.5	0
+31	-37.5	0
+32	-37.5	0
+33	-37.5	0
+34	-37.5	0
+35	-37.5	0
+36	-37.5	0
+37	-37.5	0
+38	-37.5	0
+39	-37.5	0
+40	-37.5	0
+41	-37.5	0
+42	-37.5	0
+43	-37.5	0
+44	-37.5	0
+45	-37.5	0
+46	-37.5	0
+47	-37.5	0
+48	-37.5	0
+49	-37.5	0
+50	-37.5	0
+51	-37.5	0
+52	-37.5	0
+53	-37.5	0
+54	-37.5	0
+55	-37.5	0
+56	-37.5	0
+57	-37.5	0
+58	-37.5	0
+59	-37.5	0
+60	-37.5	0
+61	-37.5	0
+62	-37.5	0
+63	-37.5	0
+64	-37.5	0
+65	-37.5	0
+66	-37.5	0
+67	-37.5	0
+68	-37.5	0
+69	-37.5	0
+70	-37.5	0
+71	-37.5	0
+72	-37.5	0
+73	-37.5	0
+74	-37.5	0
+75	-37.5	0
+76	-37.5	0
+77	-37.5	0
+78	-37.5	0
+79	-37.5	0
+80	-37.5	0
+81	-37.5	0
+82	-37.5	0
+83	-37.5	0
+84	-37.5	0
+85	-37.5	0
+86	-37.5	0
+87	-37.5	0
+88	-37.5	0
+89	-37.5	0
+90	-37.5	0
+91	-37.5	0
+92	-37.5	0
+93	-37.5	0
+94	-37.5	0
+95	-37.5	0
+96	-37.5	0
+97	-37.5	0
+98	-37.5	0
+99	-37.5	0
+100	-37.5	0
+101	-37.5	0
+102	-37.5	0
+103	-37.5	0
+104	-37.5	0
+105	-37.5	0
+106	-37.5	0
+107	-37.5	0
+108	-37.5	0
+109	-37.5	0
+110	-37.5	0
+111	-37.5	0
+112	-37.5	0
+113	-37.5	0
+114	-37.5	0
+115	-37.5	0
+116	-37.5	0
+117	-37.5	0
+118	-37.5	0
+119	-37.5	0
+120	-37.5	0
+121	-37.5	0
+122	-37.5	0
+123	-37.5	0
+124	-37.5	0
+125	-37.5	0
+126	-37.5	0
+127	-37.5	0
+128	-37.5	0
+129	-37.5	0
+130	-37.5	0
+131	-37.5	0
+132	-37.5	0
+133	-37.5	0
+134	-37.5	0
+135	-37.5	0
+136	-37.5	0
+137	-37.5	0
+138	-37.5	0
+139	-37.5	0
+140	-37.5	-0.051353
+141	-37.5	-0.16431
+142	-37.5	-0.17407
+143	-37.5	-0.16213
+144	-37.5	-0.046589
+145	-37.5	0.26896
+146	-37.5	0.61775
+147	-37.5	0.71214
+148	-37.5	0.41096
+149	-37.5	0.35743
+150	-37.5	0.17876
+151	-37.5	0
+152	-37.5	0
+153	-37.5	0
+154	-37.5	0
+155	-37.5	0
+156	-37.5	0
+157	-37.5	0
+158	-37.5	0
+159	-37.5	0
+160	-37.5	0
+161	-37.5	0
+162	-37.5	0
+163	-37.5	0
+164	-37.5	0
+165	-37.5	0
+166	-37.5	0
+167	-37.5	0
+168	-37.5	0
+169	-37.5	0
+170	-37.5	0
+171	-37.5	0
+172	-37.5	0
+173	-37.5	0
+174	-37.5	-0.0081552
+175	-37.5	-0.2136
+176	-37.5	-0.44824
+177	-37.5	0
+178	-37.5	-0.21747
+179	-37.5	0
+180	-37.5	0
+181	-37.5	0
+182	-37.5	0
+183	-37.5	0
+184	-37.5	0
+185	-37.5	0
+186	-37.5	0
+187	-37.5	0
+188	-37.5	0
+189	-37.5	0
+190	-37.5	0
+191	-37.5	0
+192	-37.5	0
+193	-37.5	0
+194	-37.5	0
+195	-37.5	0
+196	-37.5	0
+197	-37.5	0
+198	-37.5	0
+199	-37.5	0
+200	-37.5	0
+201	-37.5	0
+202	-37.5	0
+203	-37.5	0
+204	-37.5	0
+205	-37.5	0
+206	-37.5	0
+207	-37.5	0
+208	-37.5	0
+209	-37.5	0
+210	-37.5	0
+211	-37.5	0
+212	-37.5	0
+213	-37.5	0
+214	-37.5	0
+215	-37.5	0
+216	-37.5	0
+217	-37.5	0
+218	-37.5	0
+219	-37.5	0
+220	-37.5	0
+221	-37.5	0
+222	-37.5	0
+223	-37.5	0
+224	-37.5	0
+225	-37.5	0
+226	-37.5	0
+227	-37.5	0
+228	-37.5	0
+229	-37.5	0
+230	-37.5	0
+231	-37.5	0
+232	-37.5	0
+233	-37.5	0
+234	-37.5	0
+235	-37.5	0
+236	-37.5	0
+237	-37.5	0
+238	-37.5	0
+239	-37.5	0
+240	-37.5	0
+241	-37.5	0
+242	-37.5	0
+243	-37.5	0
+244	-37.5	0
+245	-37.5	0
+246	-37.5	0
+247	-37.5	0
+248	-37.5	0
+249	-37.5	0
+250	-37.5	0
+251	-37.5	0
+252	-37.5	0
+253	-37.5	0
+254	-37.5	0
+255	-37.5	0
+256	-37.5	0
+257	-37.5	0
+258	-37.5	0
+259	-37.5	0
+260	-37.5	0
+261	-37.5	0
+262	-37.5	0
+263	-37.5	0
+264	-37.5	0
+265	-37.5	0
+266	-37.5	0
+267	-37.5	0
+268	-37.5	0
+269	-37.5	0
+270	-37.5	0
+271	-37.5	0
+272	-37.5	0
+273	-37.5	0
+274	-37.5	0
+275	-37.5	0
+276	-37.5	0
+277	-37.5	0
+278	-37.5	0
+279	-37.5	0
+280	-37.5	0
+281	-37.5	0
+282	-37.5	0
+283	-37.5	0
+284	-37.5	0
+285	-37.5	0
+286	-37.5	0
+287	-37.5	-1.5179
+288	-37.5	-4.0151
+289	-37.5	-4.5013
+290	-37.5	-2.3863
+291	-37.5	-1.2962
+292	-37.5	-2.7766
+293	-37.5	-3.0647
+294	-37.5	-2.6855
+295	-37.5	-2.5404
+296	-37.5	-2.7342
+297	-37.5	-2.7099
+298	-37.5	-2.3657
+299	-37.5	-1.4973
+300	-37.5	-1.0927
+301	-37.5	-0.81328
+302	-37.5	-0.61843
+303	-37.5	-0.10363
+304	-37.5	0
+305	-37.5	0
+306	-37.5	0
+307	-37.5	0
+308	-37.5	0
+309	-37.5	0
+310	-37.5	0
+311	-37.5	0
+312	-37.5	0
+313	-37.5	0
+314	-37.5	0
+315	-37.5	0
+316	-37.5	0
+317	-37.5	0
+318	-37.5	0
+319	-37.5	0
+320	-37.5	0
+321	-37.5	0
+322	-37.5	0
+323	-37.5	0
+324	-37.5	0
+325	-37.5	0
+326	-37.5	0
+327	-37.5	0
+328	-37.5	0
+329	-37.5	0
+330	-37.5	0
+331	-37.5	0
+332	-37.5	0
+333	-37.5	0
+334	-37.5	0
+335	-37.5	0
+336	-37.5	0
+337	-37.5	0
+338	-37.5	0
+339	-37.5	0
+340	-37.5	0
+341	-37.5	0
+342	-37.5	0
+343	-37.5	0
+344	-37.5	0
+345	-37.5	0
+346	-37.5	0
+347	-37.5	0
+348	-37.5	0
+349	-37.5	0
+350	-37.5	0
+351	-37.5	0
+352	-37.5	0
+353	-37.5	0
+354	-37.5	0
+355	-37.5	0
+356	-37.5	0
+357	-37.5	0
+358	-37.5	0
+359	-37.5	0
+360	-37.5	0
+0	-37	0
+1	-37	0
+2	-37	0
+3	-37	0
+4	-37	0
+5	-37	0
+6	-37	0
+7	-37	0
+8	-37	0
+9	-37	0
+10	-37	0
+11	-37	0
+12	-37	0
+13	-37	0
+14	-37	0
+15	-37	0
+16	-37	0
+17	-37	0
+18	-37	0
+19	-37	0
+20	-37	0
+21	-37	0
+22	-37	0
+23	-37	0
+24	-37	0
+25	-37	0
+26	-37	0
+27	-37	0
+28	-37	0
+29	-37	0
+30	-37	0
+31	-37	0
+32	-37	0
+33	-37	0
+34	-37	0
+35	-37	0
+36	-37	0
+37	-37	0
+38	-37	0
+39	-37	0
+40	-37	0
+41	-37	0
+42	-37	0
+43	-37	0
+44	-37	0
+45	-37	0
+46	-37	0
+47	-37	0
+48	-37	0
+49	-37	0
+50	-37	0
+51	-37	0
+52	-37	0
+53	-37	0
+54	-37	0
+55	-37	0
+56	-37	0
+57	-37	0
+58	-37	0
+59	-37	0
+60	-37	0
+61	-37	0
+62	-37	0
+63	-37	0
+64	-37	0
+65	-37	0
+66	-37	0
+67	-37	0
+68	-37	0
+69	-37	0
+70	-37	0
+71	-37	0
+72	-37	0
+73	-37	0
+74	-37	0
+75	-37	0
+76	-37	0
+77	-37	0
+78	-37	0
+79	-37	0
+80	-37	0
+81	-37	0
+82	-37	0
+83	-37	0
+84	-37	0
+85	-37	0
+86	-37	0
+87	-37	0
+88	-37	0
+89	-37	0
+90	-37	0
+91	-37	0
+92	-37	0
+93	-37	0
+94	-37	0
+95	-37	0
+96	-37	0
+97	-37	0
+98	-37	0
+99	-37	0
+100	-37	0
+101	-37	0
+102	-37	0
+103	-37	0
+104	-37	0
+105	-37	0
+106	-37	0
+107	-37	0
+108	-37	0
+109	-37	0
+110	-37	0
+111	-37	0
+112	-37	0
+113	-37	0
+114	-37	0
+115	-37	0
+116	-37	0
+117	-37	0
+118	-37	0
+119	-37	0
+120	-37	0
+121	-37	0
+122	-37	0
+123	-37	0
+124	-37	0
+125	-37	0
+126	-37	0
+127	-37	0
+128	-37	0
+129	-37	0
+130	-37	0
+131	-37	0
+132	-37	0
+133	-37	0
+134	-37	0
+135	-37	0
+136	-37	0
+137	-37	0
+138	-37	0
+139	-37	0
+140	-37	-0.034887
+141	-37	-0.059236
+142	-37	-0.045588
+143	-37	-0.057737
+144	-37	0.077059
+145	-37	0.31856
+146	-37	0.68295
+147	-37	1.0019
+148	-37	0.76695
+149	-37	0.63577
+150	-37	0.19879
+151	-37	0
+152	-37	0
+153	-37	0
+154	-37	0
+155	-37	0
+156	-37	0
+157	-37	0
+158	-37	0
+159	-37	0
+160	-37	0
+161	-37	0
+162	-37	0
+163	-37	0
+164	-37	0
+165	-37	0
+166	-37	0
+167	-37	0
+168	-37	0
+169	-37	0
+170	-37	0
+171	-37	0
+172	-37	0
+173	-37	0
+174	-37	-0.051574
+175	-37	-0.027924
+176	-37	-0.22602
+177	-37	0
+178	-37	0
+179	-37	0
+180	-37	0
+181	-37	0
+182	-37	0
+183	-37	0
+184	-37	0
+185	-37	0
+186	-37	0
+187	-37	0
+188	-37	0
+189	-37	0
+190	-37	0
+191	-37	0
+192	-37	0
+193	-37	0
+194	-37	0
+195	-37	0
+196	-37	0
+197	-37	0
+198	-37	0
+199	-37	0
+200	-37	0
+201	-37	0
+202	-37	0
+203	-37	0
+204	-37	0
+205	-37	0
+206	-37	0
+207	-37	0
+208	-37	0
+209	-37	0
+210	-37	0
+211	-37	0
+212	-37	0
+213	-37	0
+214	-37	0
+215	-37	0
+216	-37	0
+217	-37	0
+218	-37	0
+219	-37	0
+220	-37	0
+221	-37	0
+222	-37	0
+223	-37	0
+224	-37	0
+225	-37	0
+226	-37	0
+227	-37	0
+228	-37	0
+229	-37	0
+230	-37	0
+231	-37	0
+232	-37	0
+233	-37	0
+234	-37	0
+235	-37	0
+236	-37	0
+237	-37	0
+238	-37	0
+239	-37	0
+240	-37	0
+241	-37	0
+242	-37	0
+243	-37	0
+244	-37	0
+245	-37	0
+246	-37	0
+247	-37	0
+248	-37	0
+249	-37	0
+250	-37	0
+251	-37	0
+252	-37	0
+253	-37	0
+254	-37	0
+255	-37	0
+256	-37	0
+257	-37	0
+258	-37	0
+259	-37	0
+260	-37	0
+261	-37	0
+262	-37	0
+263	-37	0
+264	-37	0
+265	-37	0
+266	-37	0
+267	-37	0
+268	-37	0
+269	-37	0
+270	-37	0
+271	-37	0
+272	-37	0
+273	-37	0
+274	-37	0
+275	-37	0
+276	-37	0
+277	-37	0
+278	-37	0
+279	-37	0
+280	-37	0
+281	-37	0
+282	-37	0
+283	-37	0
+284	-37	0
+285	-37	0
+286	-37	0
+287	-37	-1.7234
+288	-37	-4.1634
+289	-37	-4.0711
+290	-37	-1.4294
+291	-37	-1.2654
+292	-37	-3.216
+293	-37	-3.4081
+294	-37	-2.8315
+295	-37	-2.7446
+296	-37	-2.809
+297	-37	-2.8669
+298	-37	-2.4014
+299	-37	-1.5434
+300	-37	-1.1291
+301	-37	-0.82288
+302	-37	-0.70834
+303	-37	-0.22171
+304	-37	0
+305	-37	0
+306	-37	0
+307	-37	0
+308	-37	0
+309	-37	0
+310	-37	0
+311	-37	0
+312	-37	0
+313	-37	0
+314	-37	0
+315	-37	0
+316	-37	0
+317	-37	0
+318	-37	0
+319	-37	0
+320	-37	0
+321	-37	0
+322	-37	0
+323	-37	0
+324	-37	0
+325	-37	0
+326	-37	0
+327	-37	0
+328	-37	0
+329	-37	0
+330	-37	0
+331	-37	0
+332	-37	0
+333	-37	0
+334	-37	0
+335	-37	0
+336	-37	0
+337	-37	0
+338	-37	0
+339	-37	0
+340	-37	0
+341	-37	0
+342	-37	0
+343	-37	0
+344	-37	0
+345	-37	0
+346	-37	0
+347	-37	0
+348	-37	0
+349	-37	0
+350	-37	0
+351	-37	0
+352	-37	0
+353	-37	0
+354	-37	0
+355	-37	0
+356	-37	0
+357	-37	0
+358	-37	0
+359	-37	0
+360	-37	0
+0	-36.5	0
+1	-36.5	0
+2	-36.5	0
+3	-36.5	0
+4	-36.5	0
+5	-36.5	0
+6	-36.5	0
+7	-36.5	0
+8	-36.5	0
+9	-36.5	0
+10	-36.5	0
+11	-36.5	0
+12	-36.5	0
+13	-36.5	0
+14	-36.5	0
+15	-36.5	0
+16	-36.5	0
+17	-36.5	0
+18	-36.5	0
+19	-36.5	0
+20	-36.5	0
+21	-36.5	0
+22	-36.5	0
+23	-36.5	0
+24	-36.5	0
+25	-36.5	0
+26	-36.5	0
+27	-36.5	0
+28	-36.5	0
+29	-36.5	0
+30	-36.5	0
+31	-36.5	0
+32	-36.5	0
+33	-36.5	0
+34	-36.5	0
+35	-36.5	0
+36	-36.5	0
+37	-36.5	0
+38	-36.5	0
+39	-36.5	0
+40	-36.5	0
+41	-36.5	0
+42	-36.5	0
+43	-36.5	0
+44	-36.5	0
+45	-36.5	0
+46	-36.5	0
+47	-36.5	0
+48	-36.5	0
+49	-36.5	0
+50	-36.5	0
+51	-36.5	0
+52	-36.5	0
+53	-36.5	0
+54	-36.5	0
+55	-36.5	0
+56	-36.5	0
+57	-36.5	0
+58	-36.5	0
+59	-36.5	0
+60	-36.5	0
+61	-36.5	0
+62	-36.5	0
+63	-36.5	0
+64	-36.5	0
+65	-36.5	0
+66	-36.5	0
+67	-36.5	0
+68	-36.5	0
+69	-36.5	0
+70	-36.5	0
+71	-36.5	0
+72	-36.5	0
+73	-36.5	0
+74	-36.5	0
+75	-36.5	0
+76	-36.5	0
+77	-36.5	0
+78	-36.5	0
+79	-36.5	0
+80	-36.5	0
+81	-36.5	0
+82	-36.5	0
+83	-36.5	0
+84	-36.5	0
+85	-36.5	0
+86	-36.5	0
+87	-36.5	0
+88	-36.5	0
+89	-36.5	0
+90	-36.5	0
+91	-36.5	0
+92	-36.5	0
+93	-36.5	0
+94	-36.5	0
+95	-36.5	0
+96	-36.5	0
+97	-36.5	0
+98	-36.5	0
+99	-36.5	0
+100	-36.5	0
+101	-36.5	0
+102	-36.5	0
+103	-36.5	0
+104	-36.5	0
+105	-36.5	0
+106	-36.5	0
+107	-36.5	0
+108	-36.5	0
+109	-36.5	0
+110	-36.5	0
+111	-36.5	0
+112	-36.5	0
+113	-36.5	0
+114	-36.5	0
+115	-36.5	0
+116	-36.5	0
+117	-36.5	0
+118	-36.5	0
+119	-36.5	0
+120	-36.5	0
+121	-36.5	0
+122	-36.5	0
+123	-36.5	0
+124	-36.5	0
+125	-36.5	0
+126	-36.5	0
+127	-36.5	0
+128	-36.5	0
+129	-36.5	0
+130	-36.5	0
+131	-36.5	0
+132	-36.5	0
+133	-36.5	0
+134	-36.5	0
+135	-36.5	0
+136	-36.5	0
+137	-36.5	0
+138	-36.5	0
+139	-36.5	0
+140	-36.5	-0.00063977
+141	-36.5	0.017449
+142	-36.5	0.015409
+143	-36.5	0.064155
+144	-36.5	0.12065
+145	-36.5	0.34075
+146	-36.5	0.71055
+147	-36.5	1.1036
+148	-36.5	1.2634
+149	-36.5	0.9656
+150	-36.5	0.19016
+151	-36.5	0
+152	-36.5	0
+153	-36.5	0
+154	-36.5	0
+155	-36.5	0
+156	-36.5	0
+157	-36.5	0
+158	-36.5	0
+159	-36.5	0
+160	-36.5	0
+161	-36.5	0
+162	-36.5	0
+163	-36.5	0
+164	-36.5	0
+165	-36.5	0
+166	-36.5	0
+167	-36.5	0
+168	-36.5	0
+169	-36.5	0
+170	-36.5	0
+171	-36.5	0
+172	-36.5	0
+173	-36.5	0
+174	-36.5	-0.042537
+175	-36.5	-0.0034464
+176	-36.5	-0.069347
+177	-36.5	0
+178	-36.5	0
+179	-36.5	0
+180	-36.5	0
+181	-36.5	0
+182	-36.5	0
+183	-36.5	0
+184	-36.5	0
+185	-36.5	0
+186	-36.5	0
+187	-36.5	0
+188	-36.5	0
+189	-36.5	0
+190	-36.5	0
+191	-36.5	0
+192	-36.5	0
+193	-36.5	0
+194	-36.5	0
+195	-36.5	0
+196	-36.5	0
+197	-36.5	0
+198	-36.5	0
+199	-36.5	0
+200	-36.5	0
+201	-36.5	0
+202	-36.5	0
+203	-36.5	0
+204	-36.5	0
+205	-36.5	0
+206	-36.5	0
+207	-36.5	0
+208	-36.5	0
+209	-36.5	0
+210	-36.5	0
+211	-36.5	0
+212	-36.5	0
+213	-36.5	0
+214	-36.5	0
+215	-36.5	0
+216	-36.5	0
+217	-36.5	0
+218	-36.5	0
+219	-36.5	0
+220	-36.5	0
+221	-36.5	0
+222	-36.5	0
+223	-36.5	0
+224	-36.5	0
+225	-36.5	0
+226	-36.5	0
+227	-36.5	0
+228	-36.5	0
+229	-36.5	0
+230	-36.5	0
+231	-36.5	0
+232	-36.5	0
+233	-36.5	0
+234	-36.5	0
+235	-36.5	0
+236	-36.5	0
+237	-36.5	0
+238	-36.5	0
+239	-36.5	0
+240	-36.5	0
+241	-36.5	0
+242	-36.5	0
+243	-36.5	0
+244	-36.5	0
+245	-36.5	0
+246	-36.5	0
+247	-36.5	0
+248	-36.5	0
+249	-36.5	0
+250	-36.5	0
+251	-36.5	0
+252	-36.5	0
+253	-36.5	0
+254	-36.5	0
+255	-36.5	0
+256	-36.5	0
+257	-36.5	0
+258	-36.5	0
+259	-36.5	0
+260	-36.5	0
+261	-36.5	0
+262	-36.5	0
+263	-36.5	0
+264	-36.5	0
+265	-36.5	0
+266	-36.5	0
+267	-36.5	0
+268	-36.5	0
+269	-36.5	0
+270	-36.5	0
+271	-36.5	0
+272	-36.5	0
+273	-36.5	0
+274	-36.5	0
+275	-36.5	0
+276	-36.5	0
+277	-36.5	0
+278	-36.5	0
+279	-36.5	0
+280	-36.5	0
+281	-36.5	0
+282	-36.5	0
+283	-36.5	0
+284	-36.5	0
+285	-36.5	0
+286	-36.5	0
+287	-36.5	-1.3378
+288	-36.5	-4.2303
+289	-36.5	-3.6667
+290	-36.5	-1.3445
+291	-36.5	-1.3906
+292	-36.5	-3.4577
+293	-36.5	-3.6623
+294	-36.5	-2.9085
+295	-36.5	-2.857
+296	-36.5	-2.8556
+297	-36.5	-2.9271
+298	-36.5	-2.4182
+299	-36.5	-1.6028
+300	-36.5	-1.1491
+301	-36.5	-0.81045
+302	-36.5	-0.69013
+303	-36.5	-0.089095
+304	-36.5	0
+305	-36.5	0
+306	-36.5	0
+307	-36.5	0
+308	-36.5	0
+309	-36.5	0
+310	-36.5	0
+311	-36.5	0
+312	-36.5	0
+313	-36.5	0
+314	-36.5	0
+315	-36.5	0
+316	-36.5	0
+317	-36.5	0
+318	-36.5	0
+319	-36.5	0
+320	-36.5	0
+321	-36.5	0
+322	-36.5	0
+323	-36.5	0
+324	-36.5	0
+325	-36.5	0
+326	-36.5	0
+327	-36.5	0
+328	-36.5	0
+329	-36.5	0
+330	-36.5	0
+331	-36.5	0
+332	-36.5	0
+333	-36.5	0
+334	-36.5	0
+335	-36.5	0
+336	-36.5	0
+337	-36.5	0
+338	-36.5	0
+339	-36.5	0
+340	-36.5	0
+341	-36.5	0
+342	-36.5	0
+343	-36.5	0
+344	-36.5	0
+345	-36.5	0
+346	-36.5	0
+347	-36.5	0
+348	-36.5	0
+349	-36.5	0
+350	-36.5	0
+351	-36.5	0
+352	-36.5	0
+353	-36.5	0
+354	-36.5	0
+355	-36.5	0
+356	-36.5	0
+357	-36.5	0
+358	-36.5	0
+359	-36.5	0
+360	-36.5	0
+0	-36	0
+1	-36	0
+2	-36	0
+3	-36	0
+4	-36	0
+5	-36	0
+6	-36	0
+7	-36	0
+8	-36	0
+9	-36	0
+10	-36	0
+11	-36	0
+12	-36	0
+13	-36	0
+14	-36	0
+15	-36	0
+16	-36	0
+17	-36	0
+18	-36	0
+19	-36	0
+20	-36	0
+21	-36	0
+22	-36	0
+23	-36	0
+24	-36	0
+25	-36	0
+26	-36	0
+27	-36	0
+28	-36	0
+29	-36	0
+30	-36	0
+31	-36	0
+32	-36	0
+33	-36	0
+34	-36	0
+35	-36	0
+36	-36	0
+37	-36	0
+38	-36	0
+39	-36	0
+40	-36	0
+41	-36	0
+42	-36	0
+43	-36	0
+44	-36	0
+45	-36	0
+46	-36	0
+47	-36	0
+48	-36	0
+49	-36	0
+50	-36	0
+51	-36	0
+52	-36	0
+53	-36	0
+54	-36	0
+55	-36	0
+56	-36	0
+57	-36	0
+58	-36	0
+59	-36	0
+60	-36	0
+61	-36	0
+62	-36	0
+63	-36	0
+64	-36	0
+65	-36	0
+66	-36	0
+67	-36	0
+68	-36	0
+69	-36	0
+70	-36	0
+71	-36	0
+72	-36	0
+73	-36	0
+74	-36	0
+75	-36	0
+76	-36	0
+77	-36	0
+78	-36	0
+79	-36	0
+80	-36	0
+81	-36	0
+82	-36	0
+83	-36	0
+84	-36	0
+85	-36	0
+86	-36	0
+87	-36	0
+88	-36	0
+89	-36	0
+90	-36	0
+91	-36	0
+92	-36	0
+93	-36	0
+94	-36	0
+95	-36	0
+96	-36	0
+97	-36	0
+98	-36	0
+99	-36	0
+100	-36	0
+101	-36	0
+102	-36	0
+103	-36	0
+104	-36	0
+105	-36	0
+106	-36	0
+107	-36	0
+108	-36	0
+109	-36	0
+110	-36	0
+111	-36	0
+112	-36	0
+113	-36	0
+114	-36	0
+115	-36	0
+116	-36	0
+117	-36	0
+118	-36	0
+119	-36	0
+120	-36	0
+121	-36	0
+122	-36	0
+123	-36	0
+124	-36	0
+125	-36	0
+126	-36	0
+127	-36	0
+128	-36	0
+129	-36	0
+130	-36	0
+131	-36	0
+132	-36	0
+133	-36	0
+134	-36	0
+135	-36	0
+136	-36	0
+137	-36	0
+138	-36	-0.0014842
+139	-36	0
+140	-36	0.048138
+141	-36	0.067791
+142	-36	0.071708
+143	-36	0.083168
+144	-36	0.1206
+145	-36	0.31604
+146	-36	0.62319
+147	-36	1.1221
+148	-36	1.4869
+149	-36	1.2793
+150	-36	0.75036
+151	-36	0
+152	-36	0
+153	-36	0
+154	-36	0
+155	-36	0
+156	-36	0
+157	-36	0
+158	-36	0
+159	-36	0
+160	-36	0
+161	-36	0
+162	-36	0
+163	-36	0
+164	-36	0
+165	-36	0
+166	-36	0
+167	-36	0
+168	-36	0
+169	-36	0
+170	-36	0
+171	-36	0
+172	-36	0
+173	-36	0
+174	-36	-0.010117
+175	-36	0
+176	-36	-0.045024
+177	-36	0
+178	-36	0
+179	-36	0
+180	-36	0
+181	-36	0
+182	-36	0
+183	-36	0
+184	-36	0
+185	-36	0
+186	-36	0
+187	-36	0
+188	-36	0
+189	-36	0
+190	-36	0
+191	-36	0
+192	-36	0
+193	-36	0
+194	-36	0
+195	-36	0
+196	-36	0
+197	-36	0
+198	-36	0
+199	-36	0
+200	-36	0
+201	-36	0
+202	-36	0
+203	-36	0
+204	-36	0
+205	-36	0
+206	-36	0
+207	-36	0
+208	-36	0
+209	-36	0
+210	-36	0
+211	-36	0
+212	-36	0
+213	-36	0
+214	-36	0
+215	-36	0
+216	-36	0
+217	-36	0
+218	-36	0
+219	-36	0
+220	-36	0
+221	-36	0
+222	-36	0
+223	-36	0
+224	-36	0
+225	-36	0
+226	-36	0
+227	-36	0
+228	-36	0
+229	-36	0
+230	-36	0
+231	-36	0
+232	-36	0
+233	-36	0
+234	-36	0
+235	-36	0
+236	-36	0
+237	-36	0
+238	-36	0
+239	-36	0
+240	-36	0
+241	-36	0
+242	-36	0
+243	-36	0
+244	-36	0
+245	-36	0
+246	-36	0
+247	-36	0
+248	-36	0
+249	-36	0
+250	-36	0
+251	-36	0
+252	-36	0
+253	-36	0
+254	-36	0
+255	-36	0
+256	-36	0
+257	-36	0
+258	-36	0
+259	-36	0
+260	-36	0
+261	-36	0
+262	-36	0
+263	-36	0
+264	-36	0
+265	-36	0
+266	-36	0
+267	-36	0
+268	-36	0
+269	-36	0
+270	-36	0
+271	-36	0
+272	-36	0
+273	-36	0
+274	-36	0
+275	-36	0
+276	-36	0
+277	-36	0
+278	-36	0
+279	-36	0
+280	-36	0
+281	-36	0
+282	-36	0
+283	-36	0
+284	-36	0
+285	-36	0
+286	-36	0
+287	-36	-0.64327
+288	-36	-3.5016
+289	-36	-2.0967
+290	-36	-1.3307
+291	-36	-1.7523
+292	-36	-3.4669
+293	-36	-3.9165
+294	-36	-2.9946
+295	-36	-2.8667
+296	-36	-2.9021
+297	-36	-2.8634
+298	-36	-2.3747
+299	-36	-1.5776
+300	-36	-1.169
+301	-36	-0.89837
+302	-36	-0.714
+303	-36	-0.097481
+304	-36	0
+305	-36	0
+306	-36	0
+307	-36	0
+308	-36	0
+309	-36	0
+310	-36	0
+311	-36	0
+312	-36	0
+313	-36	0
+314	-36	0
+315	-36	0
+316	-36	0
+317	-36	0
+318	-36	0
+319	-36	0
+320	-36	0
+321	-36	0
+322	-36	0
+323	-36	0
+324	-36	0
+325	-36	0
+326	-36	0
+327	-36	0
+328	-36	0
+329	-36	0
+330	-36	0
+331	-36	0
+332	-36	0
+333	-36	0
+334	-36	0
+335	-36	0
+336	-36	0
+337	-36	0
+338	-36	0
+339	-36	0
+340	-36	0
+341	-36	0
+342	-36	0
+343	-36	0
+344	-36	0
+345	-36	0
+346	-36	0
+347	-36	0
+348	-36	0
+349	-36	0
+350	-36	0
+351	-36	0
+352	-36	0
+353	-36	0
+354	-36	0
+355	-36	0
+356	-36	0
+357	-36	0
+358	-36	0
+359	-36	0
+360	-36	0
+0	-35.5	0
+1	-35.5	0
+2	-35.5	0
+3	-35.5	0
+4	-35.5	0
+5	-35.5	0
+6	-35.5	0
+7	-35.5	0
+8	-35.5	0
+9	-35.5	0
+10	-35.5	0
+11	-35.5	0
+12	-35.5	0
+13	-35.5	0
+14	-35.5	0
+15	-35.5	0
+16	-35.5	0
+17	-35.5	0
+18	-35.5	0
+19	-35.5	0
+20	-35.5	0.28587
+21	-35.5	0
+22	-35.5	0
+23	-35.5	0
+24	-35.5	0
+25	-35.5	0
+26	-35.5	0
+27	-35.5	0
+28	-35.5	0
+29	-35.5	0
+30	-35.5	0
+31	-35.5	0
+32	-35.5	0
+33	-35.5	0
+34	-35.5	0
+35	-35.5	0
+36	-35.5	0
+37	-35.5	0
+38	-35.5	0
+39	-35.5	0
+40	-35.5	0
+41	-35.5	0
+42	-35.5	0
+43	-35.5	0
+44	-35.5	0
+45	-35.5	0
+46	-35.5	0
+47	-35.5	0
+48	-35.5	0
+49	-35.5	0
+50	-35.5	0
+51	-35.5	0
+52	-35.5	0
+53	-35.5	0
+54	-35.5	0
+55	-35.5	0
+56	-35.5	0
+57	-35.5	0
+58	-35.5	0
+59	-35.5	0
+60	-35.5	0
+61	-35.5	0
+62	-35.5	0
+63	-35.5	0
+64	-35.5	0
+65	-35.5	0
+66	-35.5	0
+67	-35.5	0
+68	-35.5	0
+69	-35.5	0
+70	-35.5	0
+71	-35.5	0
+72	-35.5	0
+73	-35.5	0
+74	-35.5	0
+75	-35.5	0
+76	-35.5	0
+77	-35.5	0
+78	-35.5	0
+79	-35.5	0
+80	-35.5	0
+81	-35.5	0
+82	-35.5	0
+83	-35.5	0
+84	-35.5	0
+85	-35.5	0
+86	-35.5	0
+87	-35.5	0
+88	-35.5	0
+89	-35.5	0
+90	-35.5	0
+91	-35.5	0
+92	-35.5	0
+93	-35.5	0
+94	-35.5	0
+95	-35.5	0
+96	-35.5	0
+97	-35.5	0
+98	-35.5	0
+99	-35.5	0
+100	-35.5	0
+101	-35.5	0
+102	-35.5	0
+103	-35.5	0
+104	-35.5	0
+105	-35.5	0
+106	-35.5	0
+107	-35.5	0
+108	-35.5	0
+109	-35.5	0
+110	-35.5	0
+111	-35.5	0
+112	-35.5	0
+113	-35.5	0
+114	-35.5	0
+115	-35.5	0
+116	-35.5	0
+117	-35.5	0
+118	-35.5	0
+119	-35.5	0
+120	-35.5	0
+121	-35.5	0
+122	-35.5	0
+123	-35.5	0
+124	-35.5	0
+125	-35.5	0
+126	-35.5	0
+127	-35.5	0
+128	-35.5	0
+129	-35.5	0
+130	-35.5	0
+131	-35.5	0
+132	-35.5	0
+133	-35.5	0
+134	-35.5	0
+135	-35.5	0
+136	-35.5	0
+137	-35.5	0
+138	-35.5	-0.0013192
+139	-35.5	0.050499
+140	-35.5	0.12368
+141	-35.5	0.10387
+142	-35.5	0.1023
+143	-35.5	0.094244
+144	-35.5	0.13945
+145	-35.5	0.26006
+146	-35.5	0.49213
+147	-35.5	0.97232
+148	-35.5	1.4654
+149	-35.5	1.4703
+150	-35.5	0.9926
+151	-35.5	0
+152	-35.5	0
+153	-35.5	0
+154	-35.5	0
+155	-35.5	0
+156	-35.5	0
+157	-35.5	0
+158	-35.5	0
+159	-35.5	0
+160	-35.5	0
+161	-35.5	0
+162	-35.5	0
+163	-35.5	0
+164	-35.5	0
+165	-35.5	0
+166	-35.5	0
+167	-35.5	0
+168	-35.5	0
+169	-35.5	0
+170	-35.5	0
+171	-35.5	0
+172	-35.5	0
+173	-35.5	0
+174	-35.5	0
+175	-35.5	0
+176	-35.5	-0.012319
+177	-35.5	0
+178	-35.5	0
+179	-35.5	0
+180	-35.5	0
+181	-35.5	0
+182	-35.5	0
+183	-35.5	0
+184	-35.5	0
+185	-35.5	0
+186	-35.5	0
+187	-35.5	0
+188	-35.5	0
+189	-35.5	0
+190	-35.5	0
+191	-35.5	0
+192	-35.5	0
+193	-35.5	0
+194	-35.5	0
+195	-35.5	0
+196	-35.5	0
+197	-35.5	0
+198	-35.5	0
+199	-35.5	0
+200	-35.5	0
+201	-35.5	0
+202	-35.5	0
+203	-35.5	0
+204	-35.5	0
+205	-35.5	0
+206	-35.5	0
+207	-35.5	0
+208	-35.5	0
+209	-35.5	0
+210	-35.5	0
+211	-35.5	0
+212	-35.5	0
+213	-35.5	0
+214	-35.5	0
+215	-35.5	0
+216	-35.5	0
+217	-35.5	0
+218	-35.5	0
+219	-35.5	0
+220	-35.5	0
+221	-35.5	0
+222	-35.5	0
+223	-35.5	0
+224	-35.5	0
+225	-35.5	0
+226	-35.5	0
+227	-35.5	0
+228	-35.5	0
+229	-35.5	0
+230	-35.5	0
+231	-35.5	0
+232	-35.5	0
+233	-35.5	0
+234	-35.5	0
+235	-35.5	0
+236	-35.5	0
+237	-35.5	0
+238	-35.5	0
+239	-35.5	0
+240	-35.5	0
+241	-35.5	0
+242	-35.5	0
+243	-35.5	0
+244	-35.5	0
+245	-35.5	0
+246	-35.5	0
+247	-35.5	0
+248	-35.5	0
+249	-35.5	0
+250	-35.5	0
+251	-35.5	0
+252	-35.5	0
+253	-35.5	0
+254	-35.5	0
+255	-35.5	0
+256	-35.5	0
+257	-35.5	0
+258	-35.5	0
+259	-35.5	0
+260	-35.5	0
+261	-35.5	0
+262	-35.5	0
+263	-35.5	0
+264	-35.5	0
+265	-35.5	0
+266	-35.5	0
+267	-35.5	0
+268	-35.5	0
+269	-35.5	0
+270	-35.5	0
+271	-35.5	0
+272	-35.5	0
+273	-35.5	0
+274	-35.5	0
+275	-35.5	0
+276	-35.5	0
+277	-35.5	0
+278	-35.5	0
+279	-35.5	0
+280	-35.5	0
+281	-35.5	0
+282	-35.5	0
+283	-35.5	0
+284	-35.5	0
+285	-35.5	0
+286	-35.5	0
+287	-35.5	-0.0091941
+288	-35.5	-2.1741
+289	-35.5	-0.65366
+290	-35.5	-1.324
+291	-35.5	-1.8997
+292	-35.5	-3.418
+293	-35.5	-4.0265
+294	-35.5	-2.8827
+295	-35.5	-2.6158
+296	-35.5	-2.5125
+297	-35.5	-2.5867
+298	-35.5	-2.3044
+299	-35.5	-1.5546
+300	-35.5	-1.2122
+301	-35.5	-1.0256
+302	-35.5	-0.61041
+303	-35.5	-0.02426
+304	-35.5	0
+305	-35.5	-0.00020804
+306	-35.5	0
+307	-35.5	0
+308	-35.5	0
+309	-35.5	0
+310	-35.5	0
+311	-35.5	0
+312	-35.5	0
+313	-35.5	0
+314	-35.5	0
+315	-35.5	0
+316	-35.5	0
+317	-35.5	0
+318	-35.5	0
+319	-35.5	0
+320	-35.5	0
+321	-35.5	0
+322	-35.5	0
+323	-35.5	0
+324	-35.5	0
+325	-35.5	0
+326	-35.5	0
+327	-35.5	0
+328	-35.5	0
+329	-35.5	0
+330	-35.5	0
+331	-35.5	0
+332	-35.5	0
+333	-35.5	0
+334	-35.5	0
+335	-35.5	0
+336	-35.5	0
+337	-35.5	0
+338	-35.5	0
+339	-35.5	0
+340	-35.5	0
+341	-35.5	0
+342	-35.5	0
+343	-35.5	0
+344	-35.5	0
+345	-35.5	0
+346	-35.5	0
+347	-35.5	0
+348	-35.5	0
+349	-35.5	0
+350	-35.5	0
+351	-35.5	0
+352	-35.5	0
+353	-35.5	0
+354	-35.5	0
+355	-35.5	0
+356	-35.5	0
+357	-35.5	0
+358	-35.5	0
+359	-35.5	0
+360	-35.5	0
+0	-35	0
+1	-35	0
+2	-35	0
+3	-35	0
+4	-35	0
+5	-35	0
+6	-35	0
+7	-35	0
+8	-35	0
+9	-35	0
+10	-35	0
+11	-35	0
+12	-35	0
+13	-35	0
+14	-35	0
+15	-35	0
+16	-35	0
+17	-35	0
+18	-35	0
+19	-35	0
+20	-35	1.5702
+21	-35	0
+22	-35	0
+23	-35	0
+24	-35	0
+25	-35	0
+26	-35	0
+27	-35	0
+28	-35	0
+29	-35	0
+30	-35	0
+31	-35	0
+32	-35	0
+33	-35	0
+34	-35	0
+35	-35	0
+36	-35	0
+37	-35	0
+38	-35	0
+39	-35	0
+40	-35	0
+41	-35	0
+42	-35	0
+43	-35	0
+44	-35	0
+45	-35	0
+46	-35	0
+47	-35	0
+48	-35	0
+49	-35	0
+50	-35	0
+51	-35	0
+52	-35	0
+53	-35	0
+54	-35	0
+55	-35	0
+56	-35	0
+57	-35	0
+58	-35	0
+59	-35	0
+60	-35	0
+61	-35	0
+62	-35	0
+63	-35	0
+64	-35	0
+65	-35	0
+66	-35	0
+67	-35	0
+68	-35	0
+69	-35	0
+70	-35	0
+71	-35	0
+72	-35	0
+73	-35	0
+74	-35	0
+75	-35	0
+76	-35	0
+77	-35	0
+78	-35	0
+79	-35	0
+80	-35	0
+81	-35	0
+82	-35	0
+83	-35	0
+84	-35	0
+85	-35	0
+86	-35	0
+87	-35	0
+88	-35	0
+89	-35	0
+90	-35	0
+91	-35	0
+92	-35	0
+93	-35	0
+94	-35	0
+95	-35	0
+96	-35	0
+97	-35	0
+98	-35	0
+99	-35	0
+100	-35	0
+101	-35	0
+102	-35	0
+103	-35	0
+104	-35	0
+105	-35	0
+106	-35	0
+107	-35	0
+108	-35	0
+109	-35	0
+110	-35	0
+111	-35	0
+112	-35	0
+113	-35	0
+114	-35	0
+115	-35	0
+116	-35	-0.20617
+117	-35	-0.28537
+118	-35	-0.22483
+119	-35	0
+120	-35	0
+121	-35	0
+122	-35	0
+123	-35	0
+124	-35	0
+125	-35	0
+126	-35	0
+127	-35	0
+128	-35	0
+129	-35	0
+130	-35	0
+131	-35	0
+132	-35	0
+133	-35	0
+134	-35	0
+135	-35	0
+136	-35	-0.072582
+137	-35	0.0030121
+138	-35	0.0008362
+139	-35	0.10237
+140	-35	0.19409
+141	-35	0.16895
+142	-35	0.12979
+143	-35	0.085154
+144	-35	0.12447
+145	-35	0.20409
+146	-35	0.35647
+147	-35	0.76163
+148	-35	1.2959
+149	-35	1.4024
+150	-35	0.98191
+151	-35	0
+152	-35	0
+153	-35	0
+154	-35	0
+155	-35	0
+156	-35	0
+157	-35	0
+158	-35	0
+159	-35	0
+160	-35	0
+161	-35	0
+162	-35	0
+163	-35	0
+164	-35	0
+165	-35	0
+166	-35	0
+167	-35	0
+168	-35	0
+169	-35	0
+170	-35	0
+171	-35	0
+172	-35	0
+173	-35	0
+174	-35	0
+175	-35	0
+176	-35	0
+177	-35	0
+178	-35	0
+179	-35	0
+180	-35	0
+181	-35	0
+182	-35	0
+183	-35	0
+184	-35	0
+185	-35	0
+186	-35	0
+187	-35	0
+188	-35	0
+189	-35	0
+190	-35	0
+191	-35	0
+192	-35	0
+193	-35	0
+194	-35	0
+195	-35	0
+196	-35	0
+197	-35	0
+198	-35	0
+199	-35	0
+200	-35	0
+201	-35	0
+202	-35	0
+203	-35	0
+204	-35	0
+205	-35	0
+206	-35	0
+207	-35	0
+208	-35	0
+209	-35	0
+210	-35	0
+211	-35	0
+212	-35	0
+213	-35	0
+214	-35	0
+215	-35	0
+216	-35	0
+217	-35	0
+218	-35	0
+219	-35	0
+220	-35	0
+221	-35	0
+222	-35	0
+223	-35	0
+224	-35	0
+225	-35	0
+226	-35	0
+227	-35	0
+228	-35	0
+229	-35	0
+230	-35	0
+231	-35	0
+232	-35	0
+233	-35	0
+234	-35	0
+235	-35	0
+236	-35	0
+237	-35	0
+238	-35	0
+239	-35	0
+240	-35	0
+241	-35	0
+242	-35	0
+243	-35	0
+244	-35	0
+245	-35	0
+246	-35	0
+247	-35	0
+248	-35	0
+249	-35	0
+250	-35	0
+251	-35	0
+252	-35	0
+253	-35	0
+254	-35	0
+255	-35	0
+256	-35	0
+257	-35	0
+258	-35	0
+259	-35	0
+260	-35	0
+261	-35	0
+262	-35	0
+263	-35	0
+264	-35	0
+265	-35	0
+266	-35	0
+267	-35	0
+268	-35	0
+269	-35	0
+270	-35	0
+271	-35	0
+272	-35	0
+273	-35	0
+274	-35	0
+275	-35	0
+276	-35	0
+277	-35	0
+278	-35	0
+279	-35	0
+280	-35	0
+281	-35	0
+282	-35	0
+283	-35	0
+284	-35	0
+285	-35	0
+286	-35	0
+287	-35	0
+288	-35	-1.678
+289	-35	-2.0727
+290	-35	-0.12239
+291	-35	-1.9327
+292	-35	-3.3691
+293	-35	-3.6785
+294	-35	-2.7476
+295	-35	-2.0097
+296	-35	-1.9457
+297	-35	-2.2727
+298	-35	-2.2342
+299	-35	-1.5396
+300	-35	-1.2765
+301	-35	-1.1551
+302	-35	-0.27329
+303	-35	-0.0030213
+304	-35	-0.19297
+305	-35	-0.33143
+306	-35	0
+307	-35	0
+308	-35	0
+309	-35	0
+310	-35	0
+311	-35	0
+312	-35	0
+313	-35	0
+314	-35	0
+315	-35	0
+316	-35	0
+317	-35	0
+318	-35	0
+319	-35	0
+320	-35	0
+321	-35	0
+322	-35	0
+323	-35	0
+324	-35	0
+325	-35	0
+326	-35	0
+327	-35	0
+328	-35	0
+329	-35	0
+330	-35	0
+331	-35	0
+332	-35	0
+333	-35	0
+334	-35	0
+335	-35	0
+336	-35	0
+337	-35	0
+338	-35	0
+339	-35	0
+340	-35	0
+341	-35	0
+342	-35	0
+343	-35	0
+344	-35	0
+345	-35	0
+346	-35	0
+347	-35	0
+348	-35	0
+349	-35	0
+350	-35	0
+351	-35	0
+352	-35	0
+353	-35	0
+354	-35	0
+355	-35	0
+356	-35	0
+357	-35	0
+358	-35	0
+359	-35	0
+360	-35	0
+0	-34.5	0
+1	-34.5	0
+2	-34.5	0
+3	-34.5	0
+4	-34.5	0
+5	-34.5	0
+6	-34.5	0
+7	-34.5	0
+8	-34.5	0
+9	-34.5	0
+10	-34.5	0
+11	-34.5	0
+12	-34.5	0
+13	-34.5	0
+14	-34.5	0
+15	-34.5	0
+16	-34.5	0
+17	-34.5	0
+18	-34.5	0
+19	-34.5	0
+20	-34.5	2.4581
+21	-34.5	0.76811
+22	-34.5	0
+23	-34.5	0.12017
+24	-34.5	0
+25	-34.5	0
+26	-34.5	0.0019223
+27	-34.5	0
+28	-34.5	0
+29	-34.5	0
+30	-34.5	0
+31	-34.5	0
+32	-34.5	0
+33	-34.5	0
+34	-34.5	0
+35	-34.5	0
+36	-34.5	0
+37	-34.5	0
+38	-34.5	0
+39	-34.5	0
+40	-34.5	0
+41	-34.5	0
+42	-34.5	0
+43	-34.5	0
+44	-34.5	0
+45	-34.5	0
+46	-34.5	0
+47	-34.5	0
+48	-34.5	0
+49	-34.5	0
+50	-34.5	0
+51	-34.5	0
+52	-34.5	0
+53	-34.5	0
+54	-34.5	0
+55	-34.5	0
+56	-34.5	0
+57	-34.5	0
+58	-34.5	0
+59	-34.5	0
+60	-34.5	0
+61	-34.5	0
+62	-34.5	0
+63	-34.5	0
+64	-34.5	0
+65	-34.5	0
+66	-34.5	0
+67	-34.5	0
+68	-34.5	0
+69	-34.5	0
+70	-34.5	0
+71	-34.5	0
+72	-34.5	0
+73	-34.5	0
+74	-34.5	0
+75	-34.5	0
+76	-34.5	0
+77	-34.5	0
+78	-34.5	0
+79	-34.5	0
+80	-34.5	0
+81	-34.5	0
+82	-34.5	0
+83	-34.5	0
+84	-34.5	0
+85	-34.5	0
+86	-34.5	0
+87	-34.5	0
+88	-34.5	0
+89	-34.5	0
+90	-34.5	0
+91	-34.5	0
+92	-34.5	0
+93	-34.5	0
+94	-34.5	0
+95	-34.5	0
+96	-34.5	0
+97	-34.5	0
+98	-34.5	0
+99	-34.5	0
+100	-34.5	0
+101	-34.5	0
+102	-34.5	0
+103	-34.5	0
+104	-34.5	0
+105	-34.5	0
+106	-34.5	0
+107	-34.5	0
+108	-34.5	0
+109	-34.5	0
+110	-34.5	0
+111	-34.5	0
+112	-34.5	0
+113	-34.5	0
+114	-34.5	0
+115	-34.5	-0.049419
+116	-34.5	-0.59149
+117	-34.5	-1.0529
+118	-34.5	-0.88831
+119	-34.5	-0.39175
+120	-34.5	-0.02962
+121	-34.5	0
+122	-34.5	0
+123	-34.5	0
+124	-34.5	0
+125	-34.5	0
+126	-34.5	0
+127	-34.5	0
+128	-34.5	0
+129	-34.5	0
+130	-34.5	0
+131	-34.5	0
+132	-34.5	0
+133	-34.5	0
+134	-34.5	0
+135	-34.5	0
+136	-34.5	-0.10706
+137	-34.5	0.0023486
+138	-34.5	0.039032
+139	-34.5	0.17037
+140	-34.5	0.2462
+141	-34.5	0.18889
+142	-34.5	0.16659
+143	-34.5	0.092913
+144	-34.5	0.10684
+145	-34.5	0.17582
+146	-34.5	0.23866
+147	-34.5	0.54913
+148	-34.5	1.0894
+149	-34.5	1.2114
+150	-34.5	0.8114
+151	-34.5	0.14067
+152	-34.5	0
+153	-34.5	0
+154	-34.5	0
+155	-34.5	0
+156	-34.5	0
+157	-34.5	0
+158	-34.5	0
+159	-34.5	0
+160	-34.5	0
+161	-34.5	0
+162	-34.5	0
+163	-34.5	0
+164	-34.5	0
+165	-34.5	0
+166	-34.5	0
+167	-34.5	0
+168	-34.5	0
+169	-34.5	0
+170	-34.5	0
+171	-34.5	0
+172	-34.5	0
+173	-34.5	0
+174	-34.5	0
+175	-34.5	0
+176	-34.5	0
+177	-34.5	0
+178	-34.5	0
+179	-34.5	0
+180	-34.5	0
+181	-34.5	0
+182	-34.5	0
+183	-34.5	0
+184	-34.5	0
+185	-34.5	0
+186	-34.5	0
+187	-34.5	0
+188	-34.5	0
+189	-34.5	0
+190	-34.5	0
+191	-34.5	0
+192	-34.5	0
+193	-34.5	0
+194	-34.5	0
+195	-34.5	0
+196	-34.5	0
+197	-34.5	0
+198	-34.5	0
+199	-34.5	0
+200	-34.5	0
+201	-34.5	0
+202	-34.5	0
+203	-34.5	0
+204	-34.5	0
+205	-34.5	0
+206	-34.5	0
+207	-34.5	0
+208	-34.5	0
+209	-34.5	0
+210	-34.5	0
+211	-34.5	0
+212	-34.5	0
+213	-34.5	0
+214	-34.5	0
+215	-34.5	0
+216	-34.5	0
+217	-34.5	0
+218	-34.5	0
+219	-34.5	0
+220	-34.5	0
+221	-34.5	0
+222	-34.5	0
+223	-34.5	0
+224	-34.5	0
+225	-34.5	0
+226	-34.5	0
+227	-34.5	0
+228	-34.5	0
+229	-34.5	0
+230	-34.5	0
+231	-34.5	0
+232	-34.5	0
+233	-34.5	0
+234	-34.5	0
+235	-34.5	0
+236	-34.5	0
+237	-34.5	0
+238	-34.5	0
+239	-34.5	0
+240	-34.5	0
+241	-34.5	0
+242	-34.5	0
+243	-34.5	0
+244	-34.5	0
+245	-34.5	0
+246	-34.5	0
+247	-34.5	0
+248	-34.5	0
+249	-34.5	0
+250	-34.5	0
+251	-34.5	0
+252	-34.5	0
+253	-34.5	0
+254	-34.5	0
+255	-34.5	0
+256	-34.5	0
+257	-34.5	0
+258	-34.5	0
+259	-34.5	0
+260	-34.5	0
+261	-34.5	0
+262	-34.5	0
+263	-34.5	0
+264	-34.5	0
+265	-34.5	0
+266	-34.5	0
+267	-34.5	0
+268	-34.5	0
+269	-34.5	0
+270	-34.5	0
+271	-34.5	0
+272	-34.5	0
+273	-34.5	0
+274	-34.5	0
+275	-34.5	0
+276	-34.5	0
+277	-34.5	0
+278	-34.5	0
+279	-34.5	0
+280	-34.5	0
+281	-34.5	0
+282	-34.5	0
+283	-34.5	0
+284	-34.5	0
+285	-34.5	0
+286	-34.5	0
+287	-34.5	0
+288	-34.5	-1.4148
+289	-34.5	-2.8415
+290	-34.5	-0.024024
+291	-34.5	-2.1271
+292	-34.5	-3.3993
+293	-34.5	-3.6424
+294	-34.5	-2.6124
+295	-34.5	-1.8048
+296	-34.5	-1.4858
+297	-34.5	-1.9534
+298	-34.5	-2.0851
+299	-34.5	-1.5333
+300	-34.5	-1.5442
+301	-34.5	-2.0918
+302	-34.5	-0.11553
+303	-34.5	-0.78294
+304	-34.5	-0.75965
+305	-34.5	-0.54647
+306	-34.5	-0.27173
+307	-34.5	0
+308	-34.5	0
+309	-34.5	0
+310	-34.5	0
+311	-34.5	0
+312	-34.5	0
+313	-34.5	0
+314	-34.5	0
+315	-34.5	0
+316	-34.5	0
+317	-34.5	0
+318	-34.5	0
+319	-34.5	0
+320	-34.5	0
+321	-34.5	0
+322	-34.5	0
+323	-34.5	0
+324	-34.5	0
+325	-34.5	0
+326	-34.5	0
+327	-34.5	0
+328	-34.5	0
+329	-34.5	0
+330	-34.5	0
+331	-34.5	0
+332	-34.5	0
+333	-34.5	0
+334	-34.5	0
+335	-34.5	0
+336	-34.5	0
+337	-34.5	0
+338	-34.5	0
+339	-34.5	0
+340	-34.5	0
+341	-34.5	0
+342	-34.5	0
+343	-34.5	0
+344	-34.5	0
+345	-34.5	0
+346	-34.5	0
+347	-34.5	0
+348	-34.5	0
+349	-34.5	0
+350	-34.5	0
+351	-34.5	0
+352	-34.5	0
+353	-34.5	0
+354	-34.5	0
+355	-34.5	0
+356	-34.5	0
+357	-34.5	0
+358	-34.5	0
+359	-34.5	0
+360	-34.5	0
+0	-34	0
+1	-34	0
+2	-34	0
+3	-34	0
+4	-34	0
+5	-34	0
+6	-34	0
+7	-34	0
+8	-34	0
+9	-34	0
+10	-34	0
+11	-34	0
+12	-34	0
+13	-34	0
+14	-34	0
+15	-34	0
+16	-34	0
+17	-34	0
+18	-34	0
+19	-34	1.269
+20	-34	2.0294
+21	-34	1.717
+22	-34	0.37989
+23	-34	0.44404
+24	-34	0.3716
+25	-34	0.33259
+26	-34	0.0062269
+27	-34	0.16856
+28	-34	0
+29	-34	0
+30	-34	0
+31	-34	0
+32	-34	0
+33	-34	0
+34	-34	0
+35	-34	0
+36	-34	0
+37	-34	0
+38	-34	0
+39	-34	0
+40	-34	0
+41	-34	0
+42	-34	0
+43	-34	0
+44	-34	0
+45	-34	0
+46	-34	0
+47	-34	0
+48	-34	0
+49	-34	0
+50	-34	0
+51	-34	0
+52	-34	0
+53	-34	0
+54	-34	0
+55	-34	0
+56	-34	0
+57	-34	0
+58	-34	0
+59	-34	0
+60	-34	0
+61	-34	0
+62	-34	0
+63	-34	0
+64	-34	0
+65	-34	0
+66	-34	0
+67	-34	0
+68	-34	0
+69	-34	0
+70	-34	0
+71	-34	0
+72	-34	0
+73	-34	0
+74	-34	0
+75	-34	0
+76	-34	0
+77	-34	0
+78	-34	0
+79	-34	0
+80	-34	0
+81	-34	0
+82	-34	0
+83	-34	0
+84	-34	0
+85	-34	0
+86	-34	0
+87	-34	0
+88	-34	0
+89	-34	0
+90	-34	0
+91	-34	0
+92	-34	0
+93	-34	0
+94	-34	0
+95	-34	0
+96	-34	0
+97	-34	0
+98	-34	0
+99	-34	0
+100	-34	0
+101	-34	0
+102	-34	0
+103	-34	0
+104	-34	0
+105	-34	0
+106	-34	0
+107	-34	0
+108	-34	0
+109	-34	0
+110	-34	0
+111	-34	0
+112	-34	0
+113	-34	0
+114	-34	0
+115	-34	-0.13264
+116	-34	-0.69238
+117	-34	-1.1748
+118	-34	-1.0951
+119	-34	-0.60686
+120	-34	-0.23898
+121	-34	-0.061291
+122	-34	-0.022459
+123	-34	-0.066966
+124	-34	-0.018876
+125	-34	0
+126	-34	0
+127	-34	0
+128	-34	0
+129	-34	0
+130	-34	0
+131	-34	0
+132	-34	0
+133	-34	0
+134	-34	0
+135	-34	-0.059299
+136	-34	-0.12584
+137	-34	-0.0052764
+138	-34	0.093704
+139	-34	0.23054
+140	-34	0.27747
+141	-34	0.20866
+142	-34	0.18672
+143	-34	0.12988
+144	-34	0.090981
+145	-34	0.19044
+146	-34	0.2469
+147	-34	0.4554
+148	-34	0.8974
+149	-34	0.98047
+150	-34	0.73412
+151	-34	0.26498
+152	-34	0
+153	-34	0
+154	-34	0
+155	-34	0
+156	-34	0
+157	-34	0
+158	-34	0
+159	-34	0
+160	-34	0
+161	-34	0
+162	-34	0
+163	-34	0
+164	-34	0
+165	-34	0
+166	-34	0
+167	-34	0
+168	-34	0
+169	-34	0
+170	-34	0
+171	-34	0
+172	-34	0
+173	-34	0
+174	-34	0
+175	-34	0
+176	-34	0
+177	-34	0
+178	-34	0
+179	-34	0
+180	-34	0
+181	-34	0
+182	-34	0
+183	-34	0
+184	-34	0
+185	-34	0
+186	-34	0
+187	-34	0
+188	-34	0
+189	-34	0
+190	-34	0
+191	-34	0
+192	-34	0
+193	-34	0
+194	-34	0
+195	-34	0
+196	-34	0
+197	-34	0
+198	-34	0
+199	-34	0
+200	-34	0
+201	-34	0
+202	-34	0
+203	-34	0
+204	-34	0
+205	-34	0
+206	-34	0
+207	-34	0
+208	-34	0
+209	-34	0
+210	-34	0
+211	-34	0
+212	-34	0
+213	-34	0
+214	-34	0
+215	-34	0
+216	-34	0
+217	-34	0
+218	-34	0
+219	-34	0
+220	-34	0
+221	-34	0
+222	-34	0
+223	-34	0
+224	-34	0
+225	-34	0
+226	-34	0
+227	-34	0
+228	-34	0
+229	-34	0
+230	-34	0
+231	-34	0
+232	-34	0
+233	-34	0
+234	-34	0
+235	-34	0
+236	-34	0
+237	-34	0
+238	-34	0
+239	-34	0
+240	-34	0
+241	-34	0
+242	-34	0
+243	-34	0
+244	-34	0
+245	-34	0
+246	-34	0
+247	-34	0
+248	-34	0
+249	-34	0
+250	-34	0
+251	-34	0
+252	-34	0
+253	-34	0
+254	-34	0
+255	-34	0
+256	-34	0
+257	-34	0
+258	-34	0
+259	-34	0
+260	-34	0
+261	-34	0
+262	-34	0
+263	-34	0
+264	-34	0
+265	-34	0
+266	-34	0
+267	-34	0
+268	-34	0
+269	-34	0
+270	-34	0
+271	-34	0
+272	-34	0
+273	-34	0
+274	-34	0
+275	-34	0
+276	-34	0
+277	-34	0
+278	-34	0
+279	-34	0
+280	-34	0
+281	-34	0
+282	-34	0
+283	-34	0
+284	-34	0
+285	-34	0
+286	-34	0
+287	-34	0
+288	-34	-0.32468
+289	-34	-2.4791
+290	-34	0
+291	-34	-2.3562
+292	-34	-3.3827
+293	-34	-3.6062
+294	-34	-2.4773
+295	-34	-1.666
+296	-34	-1.1371
+297	-34	-1.6047
+298	-34	-1.7711
+299	-34	-2.059
+300	-34	-2.2803
+301	-34	-3.031
+302	-34	-1.253
+303	-34	-1.0785
+304	-34	-0.79487
+305	-34	-0.64564
+306	-34	-0.43799
+307	-34	0
+308	-34	0
+309	-34	0
+310	-34	0
+311	-34	0
+312	-34	0
+313	-34	0
+314	-34	0
+315	-34	0
+316	-34	0
+317	-34	0
+318	-34	0
+319	-34	0
+320	-34	0
+321	-34	0
+322	-34	0
+323	-34	0
+324	-34	0
+325	-34	0
+326	-34	0
+327	-34	0
+328	-34	0
+329	-34	0
+330	-34	0
+331	-34	0
+332	-34	0
+333	-34	0
+334	-34	0
+335	-34	0
+336	-34	0
+337	-34	0
+338	-34	0
+339	-34	0
+340	-34	0
+341	-34	0
+342	-34	0
+343	-34	0
+344	-34	0
+345	-34	0
+346	-34	0
+347	-34	0
+348	-34	0
+349	-34	0
+350	-34	0
+351	-34	0
+352	-34	0
+353	-34	0
+354	-34	0
+355	-34	0
+356	-34	0
+357	-34	0
+358	-34	0
+359	-34	0
+360	-34	0
+0	-33.5	0
+1	-33.5	0
+2	-33.5	0
+3	-33.5	0
+4	-33.5	0
+5	-33.5	0
+6	-33.5	0
+7	-33.5	0
+8	-33.5	0
+9	-33.5	0
+10	-33.5	0
+11	-33.5	0
+12	-33.5	0
+13	-33.5	0
+14	-33.5	0
+15	-33.5	0
+16	-33.5	0
+17	-33.5	0
+18	-33.5	0
+19	-33.5	1.7325
+20	-33.5	1.733
+21	-33.5	1.1583
+22	-33.5	0.85851
+23	-33.5	0.87666
+24	-33.5	0.50698
+25	-33.5	0.67123
+26	-33.5	0.63618
+27	-33.5	0.57752
+28	-33.5	0.35998
+29	-33.5	0
+30	-33.5	0
+31	-33.5	0
+32	-33.5	0
+33	-33.5	0
+34	-33.5	0
+35	-33.5	0
+36	-33.5	0
+37	-33.5	0
+38	-33.5	0
+39	-33.5	0
+40	-33.5	0
+41	-33.5	0
+42	-33.5	0
+43	-33.5	0
+44	-33.5	0
+45	-33.5	0
+46	-33.5	0
+47	-33.5	0
+48	-33.5	0
+49	-33.5	0
+50	-33.5	0
+51	-33.5	0
+52	-33.5	0
+53	-33.5	0
+54	-33.5	0
+55	-33.5	0
+56	-33.5	0
+57	-33.5	0
+58	-33.5	0
+59	-33.5	0
+60	-33.5	0
+61	-33.5	0
+62	-33.5	0
+63	-33.5	0
+64	-33.5	0
+65	-33.5	0
+66	-33.5	0
+67	-33.5	0
+68	-33.5	0
+69	-33.5	0
+70	-33.5	0
+71	-33.5	0
+72	-33.5	0
+73	-33.5	0
+74	-33.5	0
+75	-33.5	0
+76	-33.5	0
+77	-33.5	0
+78	-33.5	0
+79	-33.5	0
+80	-33.5	0
+81	-33.5	0
+82	-33.5	0
+83	-33.5	0
+84	-33.5	0
+85	-33.5	0
+86	-33.5	0
+87	-33.5	0
+88	-33.5	0
+89	-33.5	0
+90	-33.5	0
+91	-33.5	0
+92	-33.5	0
+93	-33.5	0
+94	-33.5	0
+95	-33.5	0
+96	-33.5	0
+97	-33.5	0
+98	-33.5	0
+99	-33.5	0
+100	-33.5	0
+101	-33.5	0
+102	-33.5	0
+103	-33.5	0
+104	-33.5	0
+105	-33.5	0
+106	-33.5	0
+107	-33.5	0
+108	-33.5	0
+109	-33.5	0
+110	-33.5	0
+111	-33.5	0
+112	-33.5	0
+113	-33.5	0
+114	-33.5	0
+115	-33.5	0
+116	-33.5	-0.67858
+117	-33.5	-1.2229
+118	-33.5	-1.0817
+119	-33.5	-0.64425
+120	-33.5	-0.35839
+121	-33.5	-0.20871
+122	-33.5	-0.17834
+123	-33.5	-0.37742
+124	-33.5	-0.23083
+125	-33.5	-0.017946
+126	-33.5	0
+127	-33.5	0
+128	-33.5	0
+129	-33.5	0
+130	-33.5	0
+131	-33.5	0
+132	-33.5	0
+133	-33.5	0
+134	-33.5	0
+135	-33.5	-0.14536
+136	-33.5	-0.13324
+137	-33.5	-0.03244
+138	-33.5	0.12639
+139	-33.5	0.28056
+140	-33.5	0.30341
+141	-33.5	0.22919
+142	-33.5	0.19438
+143	-33.5	0.12829
+144	-33.5	0.082415
+145	-33.5	0.19576
+146	-33.5	0.25664
+147	-33.5	0.35812
+148	-33.5	0.70537
+149	-33.5	0.69409
+150	-33.5	0.70307
+151	-33.5	0.51215
+152	-33.5	0
+153	-33.5	0
+154	-33.5	0
+155	-33.5	0
+156	-33.5	0
+157	-33.5	0
+158	-33.5	0
+159	-33.5	0
+160	-33.5	0
+161	-33.5	0
+162	-33.5	0
+163	-33.5	0
+164	-33.5	0
+165	-33.5	0
+166	-33.5	0
+167	-33.5	0
+168	-33.5	0
+169	-33.5	0
+170	-33.5	0
+171	-33.5	0
+172	-33.5	0
+173	-33.5	0
+174	-33.5	0
+175	-33.5	0
+176	-33.5	0
+177	-33.5	0
+178	-33.5	0
+179	-33.5	0
+180	-33.5	0
+181	-33.5	0
+182	-33.5	0
+183	-33.5	0
+184	-33.5	0
+185	-33.5	0
+186	-33.5	0
+187	-33.5	0
+188	-33.5	0
+189	-33.5	0
+190	-33.5	0
+191	-33.5	0
+192	-33.5	0
+193	-33.5	0
+194	-33.5	0
+195	-33.5	0
+196	-33.5	0
+197	-33.5	0
+198	-33.5	0
+199	-33.5	0
+200	-33.5	0
+201	-33.5	0
+202	-33.5	0
+203	-33.5	0
+204	-33.5	0
+205	-33.5	0
+206	-33.5	0
+207	-33.5	0
+208	-33.5	0
+209	-33.5	0
+210	-33.5	0
+211	-33.5	0
+212	-33.5	0
+213	-33.5	0
+214	-33.5	0
+215	-33.5	0
+216	-33.5	0
+217	-33.5	0
+218	-33.5	0
+219	-33.5	0
+220	-33.5	0
+221	-33.5	0
+222	-33.5	0
+223	-33.5	0
+224	-33.5	0
+225	-33.5	0
+226	-33.5	0
+227	-33.5	0
+228	-33.5	0
+229	-33.5	0
+230	-33.5	0
+231	-33.5	0
+232	-33.5	0
+233	-33.5	0
+234	-33.5	0
+235	-33.5	0
+236	-33.5	0
+237	-33.5	0
+238	-33.5	0
+239	-33.5	0
+240	-33.5	0
+241	-33.5	0
+242	-33.5	0
+243	-33.5	0
+244	-33.5	0
+245	-33.5	0
+246	-33.5	0
+247	-33.5	0
+248	-33.5	0
+249	-33.5	0
+250	-33.5	0
+251	-33.5	0
+252	-33.5	0
+253	-33.5	0
+254	-33.5	0
+255	-33.5	0
+256	-33.5	0
+257	-33.5	0
+258	-33.5	0
+259	-33.5	0
+260	-33.5	0
+261	-33.5	0
+262	-33.5	0
+263	-33.5	0
+264	-33.5	0
+265	-33.5	0
+266	-33.5	0
+267	-33.5	0
+268	-33.5	0
+269	-33.5	0
+270	-33.5	0
+271	-33.5	0
+272	-33.5	0
+273	-33.5	0
+274	-33.5	0
+275	-33.5	0
+276	-33.5	0
+277	-33.5	0
+278	-33.5	0
+279	-33.5	0
+280	-33.5	0
+281	-33.5	0
+282	-33.5	0
+283	-33.5	0
+284	-33.5	0
+285	-33.5	0
+286	-33.5	0
+287	-33.5	0
+288	-33.5	0
+289	-33.5	-2.0684
+290	-33.5	0
+291	-33.5	-2.1747
+292	-33.5	-3.1888
+293	-33.5	-3.1381
+294	-33.5	-2.3421
+295	-33.5	-1.6697
+296	-33.5	-1.1804
+297	-33.5	-1.2561
+298	-33.5	-1.6997
+299	-33.5	-2.6115
+300	-33.5	-3.3736
+301	-33.5	-2.3917
+302	-33.5	-2.238
+303	-33.5	-0.92558
+304	-33.5	-0.80455
+305	-33.5	-0.69612
+306	-33.5	-0.54758
+307	-33.5	-0.13433
+308	-33.5	0
+309	-33.5	0
+310	-33.5	0
+311	-33.5	0
+312	-33.5	0
+313	-33.5	0
+314	-33.5	0
+315	-33.5	0
+316	-33.5	0
+317	-33.5	0
+318	-33.5	0
+319	-33.5	0
+320	-33.5	0
+321	-33.5	0
+322	-33.5	0
+323	-33.5	0
+324	-33.5	0
+325	-33.5	0
+326	-33.5	0
+327	-33.5	0
+328	-33.5	0
+329	-33.5	0
+330	-33.5	0
+331	-33.5	0
+332	-33.5	0
+333	-33.5	0
+334	-33.5	0
+335	-33.5	0
+336	-33.5	0
+337	-33.5	0
+338	-33.5	0
+339	-33.5	0
+340	-33.5	0
+341	-33.5	0
+342	-33.5	0
+343	-33.5	0
+344	-33.5	0
+345	-33.5	0
+346	-33.5	0
+347	-33.5	0
+348	-33.5	0
+349	-33.5	0
+350	-33.5	0
+351	-33.5	0
+352	-33.5	0
+353	-33.5	0
+354	-33.5	0
+355	-33.5	0
+356	-33.5	0
+357	-33.5	0
+358	-33.5	0
+359	-33.5	0
+360	-33.5	0
+0	-33	0
+1	-33	0
+2	-33	0
+3	-33	0
+4	-33	0
+5	-33	0
+6	-33	0
+7	-33	0
+8	-33	0
+9	-33	0
+10	-33	0
+11	-33	0
+12	-33	0
+13	-33	0
+14	-33	0
+15	-33	0
+16	-33	0
+17	-33	0
+18	-33	0.57589
+19	-33	2.0399
+20	-33	1.3565
+21	-33	0.72854
+22	-33	0.4876
+23	-33	0.39309
+24	-33	0.2322
+25	-33	0.43973
+26	-33	0.84436
+27	-33	2.326
+28	-33	0.77661
+29	-33	0
+30	-33	0
+31	-33	0
+32	-33	0
+33	-33	0
+34	-33	0
+35	-33	0
+36	-33	0
+37	-33	0
+38	-33	0
+39	-33	0
+40	-33	0
+41	-33	0
+42	-33	0
+43	-33	0
+44	-33	0
+45	-33	0
+46	-33	0
+47	-33	0
+48	-33	0
+49	-33	0
+50	-33	0
+51	-33	0
+52	-33	0
+53	-33	0
+54	-33	0
+55	-33	0
+56	-33	0
+57	-33	0
+58	-33	0
+59	-33	0
+60	-33	0
+61	-33	0
+62	-33	0
+63	-33	0
+64	-33	0
+65	-33	0
+66	-33	0
+67	-33	0
+68	-33	0
+69	-33	0
+70	-33	0
+71	-33	0
+72	-33	0
+73	-33	0
+74	-33	0
+75	-33	0
+76	-33	0
+77	-33	0
+78	-33	0
+79	-33	0
+80	-33	0
+81	-33	0
+82	-33	0
+83	-33	0
+84	-33	0
+85	-33	0
+86	-33	0
+87	-33	0
+88	-33	0
+89	-33	0
+90	-33	0
+91	-33	0
+92	-33	0
+93	-33	0
+94	-33	0
+95	-33	0
+96	-33	0
+97	-33	0
+98	-33	0
+99	-33	0
+100	-33	0
+101	-33	0
+102	-33	0
+103	-33	0
+104	-33	0
+105	-33	0
+106	-33	0
+107	-33	0
+108	-33	0
+109	-33	0
+110	-33	0
+111	-33	0
+112	-33	0
+113	-33	0
+114	-33	0
+115	-33	0
+116	-33	-0.70591
+117	-33	-1.1914
+118	-33	-0.93345
+119	-33	-0.6329
+120	-33	-0.40711
+121	-33	-0.28717
+122	-33	-0.23127
+123	-33	-0.36758
+124	-33	-0.39584
+125	-33	-0.26699
+126	-33	0
+127	-33	0
+128	-33	0
+129	-33	0
+130	-33	0
+131	-33	0
+132	-33	0
+133	-33	-0.001622
+134	-33	-0.049791
+135	-33	-0.14693
+136	-33	-0.13808
+137	-33	-0.037292
+138	-33	0.15233
+139	-33	0.33059
+140	-33	0.31178
+141	-33	0.245
+142	-33	0.18362
+143	-33	0.12008
+144	-33	0.084724
+145	-33	0.19431
+146	-33	0.26639
+147	-33	0.3417
+148	-33	0.50831
+149	-33	0.66784
+150	-33	0.78995
+151	-33	1.0131
+152	-33	0.23824
+153	-33	0
+154	-33	0
+155	-33	0
+156	-33	0
+157	-33	0
+158	-33	0
+159	-33	0
+160	-33	0
+161	-33	0
+162	-33	0
+163	-33	0
+164	-33	0
+165	-33	0
+166	-33	0
+167	-33	0
+168	-33	0
+169	-33	0
+170	-33	0
+171	-33	0
+172	-33	0
+173	-33	0
+174	-33	0
+175	-33	0
+176	-33	0
+177	-33	0
+178	-33	0
+179	-33	0
+180	-33	0
+181	-33	0
+182	-33	0
+183	-33	0
+184	-33	0
+185	-33	0
+186	-33	0
+187	-33	0
+188	-33	0
+189	-33	0
+190	-33	0
+191	-33	0
+192	-33	0
+193	-33	0
+194	-33	0
+195	-33	0
+196	-33	0
+197	-33	0
+198	-33	0
+199	-33	0
+200	-33	0
+201	-33	0
+202	-33	0
+203	-33	0
+204	-33	0
+205	-33	0
+206	-33	0
+207	-33	0
+208	-33	0
+209	-33	0
+210	-33	0
+211	-33	0
+212	-33	0
+213	-33	0
+214	-33	0
+215	-33	0
+216	-33	0
+217	-33	0
+218	-33	0
+219	-33	0
+220	-33	0
+221	-33	0
+222	-33	0
+223	-33	0
+224	-33	0
+225	-33	0
+226	-33	0
+227	-33	0
+228	-33	0
+229	-33	0
+230	-33	0
+231	-33	0
+232	-33	0
+233	-33	0
+234	-33	0
+235	-33	0
+236	-33	0
+237	-33	0
+238	-33	0
+239	-33	0
+240	-33	0
+241	-33	0
+242	-33	0
+243	-33	0
+244	-33	0
+245	-33	0
+246	-33	0
+247	-33	0
+248	-33	0
+249	-33	0
+250	-33	0
+251	-33	0
+252	-33	0
+253	-33	0
+254	-33	0
+255	-33	0
+256	-33	0
+257	-33	0
+258	-33	0
+259	-33	0
+260	-33	0
+261	-33	0
+262	-33	0
+263	-33	0
+264	-33	0
+265	-33	0
+266	-33	0
+267	-33	0
+268	-33	0
+269	-33	0
+270	-33	0
+271	-33	0
+272	-33	0
+273	-33	0
+274	-33	0
+275	-33	0
+276	-33	0
+277	-33	0
+278	-33	0
+279	-33	0
+280	-33	0
+281	-33	0
+282	-33	0
+283	-33	0
+284	-33	0
+285	-33	0
+286	-33	0
+287	-33	0
+288	-33	0
+289	-33	-1.333
+290	-33	-0.016309
+291	-33	-1.6993
+292	-33	-2.4047
+293	-33	-2.471
+294	-33	-1.9302
+295	-33	-1.8245
+296	-33	-1.3287
+297	-33	-1.2721
+298	-33	-1.279
+299	-33	-1.8854
+300	-33	-2.2679
+301	-33	-1.6746
+302	-33	-1.7938
+303	-33	-0.78991
+304	-33	-0.74786
+305	-33	-0.69574
+306	-33	-0.52594
+307	-33	-0.11478
+308	-33	0
+309	-33	0
+310	-33	0
+311	-33	0
+312	-33	0
+313	-33	0
+314	-33	0
+315	-33	0
+316	-33	0
+317	-33	0
+318	-33	0
+319	-33	0
+320	-33	0
+321	-33	0
+322	-33	0
+323	-33	0
+324	-33	0
+325	-33	0
+326	-33	0
+327	-33	0
+328	-33	0
+329	-33	0
+330	-33	0
+331	-33	0
+332	-33	0
+333	-33	0
+334	-33	0
+335	-33	0
+336	-33	0
+337	-33	0
+338	-33	0
+339	-33	0
+340	-33	0
+341	-33	0
+342	-33	0
+343	-33	0
+344	-33	0
+345	-33	0
+346	-33	0
+347	-33	0
+348	-33	0
+349	-33	0
+350	-33	0
+351	-33	0
+352	-33	0
+353	-33	0
+354	-33	0
+355	-33	0
+356	-33	0
+357	-33	0
+358	-33	0
+359	-33	0
+360	-33	0
+0	-32.5	0
+1	-32.5	0
+2	-32.5	0
+3	-32.5	0
+4	-32.5	0
+5	-32.5	0
+6	-32.5	0
+7	-32.5	0
+8	-32.5	0
+9	-32.5	0
+10	-32.5	0
+11	-32.5	0
+12	-32.5	0
+13	-32.5	0
+14	-32.5	0
+15	-32.5	0
+16	-32.5	0
+17	-32.5	0
+18	-32.5	0.33033
+19	-32.5	1.7265
+20	-32.5	1.0528
+21	-32.5	0.31722
+22	-32.5	0.27935
+23	-32.5	-0.014645
+24	-32.5	0.10822
+25	-32.5	0.30097
+26	-32.5	0.68855
+27	-32.5	2.1077
+28	-32.5	2.1228
+29	-32.5	0.079231
+30	-32.5	0
+31	-32.5	0
+32	-32.5	0
+33	-32.5	0
+34	-32.5	0
+35	-32.5	0
+36	-32.5	0
+37	-32.5	0
+38	-32.5	0
+39	-32.5	0
+40	-32.5	0
+41	-32.5	0
+42	-32.5	0
+43	-32.5	0
+44	-32.5	0
+45	-32.5	0
+46	-32.5	0
+47	-32.5	0
+48	-32.5	0
+49	-32.5	0
+50	-32.5	0
+51	-32.5	0
+52	-32.5	0
+53	-32.5	0
+54	-32.5	0
+55	-32.5	0
+56	-32.5	0
+57	-32.5	0
+58	-32.5	0
+59	-32.5	0
+60	-32.5	0
+61	-32.5	0
+62	-32.5	0
+63	-32.5	0
+64	-32.5	0
+65	-32.5	0
+66	-32.5	0
+67	-32.5	0
+68	-32.5	0
+69	-32.5	0
+70	-32.5	0
+71	-32.5	0
+72	-32.5	0
+73	-32.5	0
+74	-32.5	0
+75	-32.5	0
+76	-32.5	0
+77	-32.5	0
+78	-32.5	0
+79	-32.5	0
+80	-32.5	0
+81	-32.5	0
+82	-32.5	0
+83	-32.5	0
+84	-32.5	0
+85	-32.5	0
+86	-32.5	0
+87	-32.5	0
+88	-32.5	0
+89	-32.5	0
+90	-32.5	0
+91	-32.5	0
+92	-32.5	0
+93	-32.5	0
+94	-32.5	0
+95	-32.5	0
+96	-32.5	0
+97	-32.5	0
+98	-32.5	0
+99	-32.5	0
+100	-32.5	0
+101	-32.5	0
+102	-32.5	0
+103	-32.5	0
+104	-32.5	0
+105	-32.5	0
+106	-32.5	0
+107	-32.5	0
+108	-32.5	0
+109	-32.5	0
+110	-32.5	0
+111	-32.5	0
+112	-32.5	0
+113	-32.5	0
+114	-32.5	0
+115	-32.5	0
+116	-32.5	-0.64298
+117	-32.5	-1.0481
+118	-32.5	-0.80344
+119	-32.5	-0.60266
+120	-32.5	-0.42092
+121	-32.5	-0.2945
+122	-32.5	-0.22387
+123	-32.5	-0.30223
+124	-32.5	-0.44356
+125	-32.5	-0.47485
+126	-32.5	0
+127	-32.5	0
+128	-32.5	-0.002113
+129	-32.5	0
+130	-32.5	0
+131	-32.5	0
+132	-32.5	0.0020547
+133	-32.5	-0.003581
+134	-32.5	-0.096134
+135	-32.5	-0.18291
+136	-32.5	-0.16971
+137	-32.5	-0.049807
+138	-32.5	0.13889
+139	-32.5	0.31433
+140	-32.5	0.27975
+141	-32.5	0.23566
+142	-32.5	0.17337
+143	-32.5	0.1153
+144	-32.5	0.09062
+145	-32.5	0.19491
+146	-32.5	0.35486
+147	-32.5	0.52487
+148	-32.5	0.56885
+149	-32.5	0.77149
+150	-32.5	1.0523
+151	-32.5	1.5306
+152	-32.5	0.7447
+153	-32.5	0
+154	-32.5	0
+155	-32.5	0
+156	-32.5	0
+157	-32.5	0
+158	-32.5	0
+159	-32.5	0
+160	-32.5	0
+161	-32.5	0
+162	-32.5	0
+163	-32.5	0
+164	-32.5	0
+165	-32.5	0
+166	-32.5	0
+167	-32.5	0
+168	-32.5	0
+169	-32.5	0
+170	-32.5	0
+171	-32.5	0
+172	-32.5	0
+173	-32.5	0
+174	-32.5	0
+175	-32.5	0
+176	-32.5	0
+177	-32.5	0
+178	-32.5	0
+179	-32.5	0
+180	-32.5	0
+181	-32.5	0
+182	-32.5	0
+183	-32.5	0
+184	-32.5	0
+185	-32.5	0
+186	-32.5	0
+187	-32.5	0
+188	-32.5	0
+189	-32.5	0
+190	-32.5	0
+191	-32.5	0
+192	-32.5	0
+193	-32.5	0
+194	-32.5	0
+195	-32.5	0
+196	-32.5	0
+197	-32.5	0
+198	-32.5	0
+199	-32.5	0
+200	-32.5	0
+201	-32.5	0
+202	-32.5	0
+203	-32.5	0
+204	-32.5	0
+205	-32.5	0
+206	-32.5	0
+207	-32.5	0
+208	-32.5	0
+209	-32.5	0
+210	-32.5	0
+211	-32.5	0
+212	-32.5	0
+213	-32.5	0
+214	-32.5	0
+215	-32.5	0
+216	-32.5	0
+217	-32.5	0
+218	-32.5	0
+219	-32.5	0
+220	-32.5	0
+221	-32.5	0
+222	-32.5	0
+223	-32.5	0
+224	-32.5	0
+225	-32.5	0
+226	-32.5	0
+227	-32.5	0
+228	-32.5	0
+229	-32.5	0
+230	-32.5	0
+231	-32.5	0
+232	-32.5	0
+233	-32.5	0
+234	-32.5	0
+235	-32.5	0
+236	-32.5	0
+237	-32.5	0
+238	-32.5	0
+239	-32.5	0
+240	-32.5	0
+241	-32.5	0
+242	-32.5	0
+243	-32.5	0
+244	-32.5	0
+245	-32.5	0
+246	-32.5	0
+247	-32.5	0
+248	-32.5	0
+249	-32.5	0
+250	-32.5	0
+251	-32.5	0
+252	-32.5	0
+253	-32.5	0
+254	-32.5	0
+255	-32.5	0
+256	-32.5	0
+257	-32.5	0
+258	-32.5	0
+259	-32.5	0
+260	-32.5	0
+261	-32.5	0
+262	-32.5	0
+263	-32.5	0
+264	-32.5	0
+265	-32.5	0
+266	-32.5	0
+267	-32.5	0
+268	-32.5	0
+269	-32.5	0
+270	-32.5	0
+271	-32.5	0
+272	-32.5	0
+273	-32.5	0
+274	-32.5	0
+275	-32.5	0
+276	-32.5	0
+277	-32.5	0
+278	-32.5	0
+279	-32.5	0
+280	-32.5	0
+281	-32.5	0
+282	-32.5	0
+283	-32.5	0
+284	-32.5	0
+285	-32.5	0
+286	-32.5	0
+287	-32.5	0
+288	-32.5	0
+289	-32.5	-0.60029
+290	-32.5	-0.016461
+291	-32.5	-1.0271
+292	-32.5	-1.5034
+293	-32.5	-1.7524
+294	-32.5	-1.481
+295	-32.5	-1.872
+296	-32.5	-1.4835
+297	-32.5	-1.3271
+298	-32.5	-1.7263
+299	-32.5	-1.4153
+300	-32.5	-1.1425
+301	-32.5	-0.87801
+302	-32.5	-1.4194
+303	-32.5	-0.74978
+304	-32.5	-0.67941
+305	-32.5	-0.62944
+306	-32.5	-0.56725
+307	-32.5	-0.29357
+308	-32.5	-0.01318
+309	-32.5	0
+310	-32.5	0
+311	-32.5	0
+312	-32.5	0
+313	-32.5	0
+314	-32.5	0
+315	-32.5	0
+316	-32.5	0
+317	-32.5	0
+318	-32.5	0
+319	-32.5	0
+320	-32.5	0
+321	-32.5	0
+322	-32.5	0
+323	-32.5	0
+324	-32.5	0
+325	-32.5	0
+326	-32.5	0
+327	-32.5	0
+328	-32.5	0
+329	-32.5	0
+330	-32.5	0
+331	-32.5	0
+332	-32.5	0
+333	-32.5	0
+334	-32.5	0
+335	-32.5	0
+336	-32.5	0
+337	-32.5	0
+338	-32.5	0
+339	-32.5	0
+340	-32.5	0
+341	-32.5	0
+342	-32.5	0
+343	-32.5	0
+344	-32.5	0
+345	-32.5	0
+346	-32.5	0
+347	-32.5	0
+348	-32.5	0
+349	-32.5	0
+350	-32.5	0
+351	-32.5	0
+352	-32.5	0
+353	-32.5	0
+354	-32.5	0
+355	-32.5	0
+356	-32.5	0
+357	-32.5	0
+358	-32.5	0
+359	-32.5	0
+360	-32.5	0
+0	-32	0
+1	-32	0
+2	-32	0
+3	-32	0
+4	-32	0
+5	-32	0
+6	-32	0
+7	-32	0
+8	-32	0
+9	-32	0
+10	-32	0
+11	-32	0
+12	-32	0
+13	-32	0
+14	-32	0
+15	-32	0
+16	-32	0
+17	-32	0
+18	-32	0.14632
+19	-32	1.358
+20	-32	0.79552
+21	-32	0.33432
+22	-32	0.27998
+23	-32	0.17375
+24	-32	0.1389
+25	-32	0.23616
+26	-32	0.65816
+27	-32	1.582
+28	-32	2.732
+29	-32	1.0106
+30	-32	0.11365
+31	-32	0
+32	-32	0
+33	-32	0
+34	-32	0
+35	-32	0
+36	-32	0
+37	-32	0
+38	-32	0
+39	-32	0
+40	-32	0
+41	-32	0
+42	-32	0
+43	-32	0
+44	-32	0
+45	-32	0
+46	-32	0
+47	-32	0
+48	-32	0
+49	-32	0
+50	-32	0
+51	-32	0
+52	-32	0
+53	-32	0
+54	-32	0
+55	-32	0
+56	-32	0
+57	-32	0
+58	-32	0
+59	-32	0
+60	-32	0
+61	-32	0
+62	-32	0
+63	-32	0
+64	-32	0
+65	-32	0
+66	-32	0
+67	-32	0
+68	-32	0
+69	-32	0
+70	-32	0
+71	-32	0
+72	-32	0
+73	-32	0
+74	-32	0
+75	-32	0
+76	-32	0
+77	-32	0
+78	-32	0
+79	-32	0
+80	-32	0
+81	-32	0
+82	-32	0
+83	-32	0
+84	-32	0
+85	-32	0
+86	-32	0
+87	-32	0
+88	-32	0
+89	-32	0
+90	-32	0
+91	-32	0
+92	-32	0
+93	-32	0
+94	-32	0
+95	-32	0
+96	-32	0
+97	-32	0
+98	-32	0
+99	-32	0
+100	-32	0
+101	-32	0
+102	-32	0
+103	-32	0
+104	-32	0
+105	-32	0
+106	-32	0
+107	-32	0
+108	-32	0
+109	-32	0
+110	-32	0
+111	-32	0
+112	-32	0
+113	-32	0
+114	-32	0
+115	-32	0
+116	-32	-0.56798
+117	-32	-0.96144
+118	-32	-0.75995
+119	-32	-0.55829
+120	-32	-0.39216
+121	-32	-0.26839
+122	-32	-0.21099
+123	-32	-0.25573
+124	-32	-0.37559
+125	-32	-0.44622
+126	-32	-0.19012
+127	-32	-0.062845
+128	-32	-0.035363
+129	-32	0.0010354
+130	-32	0.11367
+131	-32	0
+132	-32	0.013248
+133	-32	-0.024556
+134	-32	-0.14019
+135	-32	-0.21957
+136	-32	-0.19841
+137	-32	-0.055645
+138	-32	0.1183
+139	-32	0.28011
+140	-32	0.26111
+141	-32	0.22633
+142	-32	0.16622
+143	-32	0.11857
+144	-32	0.10452
+145	-32	0.20634
+146	-32	0.50404
+147	-32	0.70804
+148	-32	0.7278
+149	-32	0.78103
+150	-32	1.3098
+151	-32	2.0247
+152	-32	1.2435
+153	-32	0.15113
+154	-32	0
+155	-32	0
+156	-32	0
+157	-32	0
+158	-32	0
+159	-32	0
+160	-32	0
+161	-32	0
+162	-32	0
+163	-32	0
+164	-32	0
+165	-32	0
+166	-32	0
+167	-32	0
+168	-32	0
+169	-32	0
+170	-32	0
+171	-32	0
+172	-32	0
+173	-32	0
+174	-32	0
+175	-32	0
+176	-32	0
+177	-32	0
+178	-32	0
+179	-32	0
+180	-32	0
+181	-32	0
+182	-32	0
+183	-32	0
+184	-32	0
+185	-32	0
+186	-32	0
+187	-32	0
+188	-32	0
+189	-32	0
+190	-32	0
+191	-32	0
+192	-32	0
+193	-32	0
+194	-32	0
+195	-32	0
+196	-32	0
+197	-32	0
+198	-32	0
+199	-32	0
+200	-32	0
+201	-32	0
+202	-32	0
+203	-32	0
+204	-32	0
+205	-32	0
+206	-32	0
+207	-32	0
+208	-32	0
+209	-32	0
+210	-32	0
+211	-32	0
+212	-32	0
+213	-32	0
+214	-32	0
+215	-32	0
+216	-32	0
+217	-32	0
+218	-32	0
+219	-32	0
+220	-32	0
+221	-32	0
+222	-32	0
+223	-32	0
+224	-32	0
+225	-32	0
+226	-32	0
+227	-32	0
+228	-32	0
+229	-32	0
+230	-32	0
+231	-32	0
+232	-32	0
+233	-32	0
+234	-32	0
+235	-32	0
+236	-32	0
+237	-32	0
+238	-32	0
+239	-32	0
+240	-32	0
+241	-32	0
+242	-32	0
+243	-32	0
+244	-32	0
+245	-32	0
+246	-32	0
+247	-32	0
+248	-32	0
+249	-32	0
+250	-32	0
+251	-32	0
+252	-32	0
+253	-32	0
+254	-32	0
+255	-32	0
+256	-32	0
+257	-32	0
+258	-32	0
+259	-32	0
+260	-32	0
+261	-32	0
+262	-32	0
+263	-32	0
+264	-32	0
+265	-32	0
+266	-32	0
+267	-32	0
+268	-32	0
+269	-32	0
+270	-32	0
+271	-32	0
+272	-32	0
+273	-32	0
+274	-32	0
+275	-32	0
+276	-32	0
+277	-32	0
+278	-32	0
+279	-32	0
+280	-32	0
+281	-32	0
+282	-32	0
+283	-32	0
+284	-32	0
+285	-32	0
+286	-32	0
+287	-32	0
+288	-32	0
+289	-32	-0.59439
+290	-32	0
+291	-32	-0.4099
+292	-32	-0.60209
+293	-32	-0.85483
+294	-32	-1.0818
+295	-32	-1.599
+296	-32	-1.6382
+297	-32	-1.3949
+298	-32	-1.8246
+299	-32	-2.0212
+300	-32	-1.5768
+301	-32	-1.1228
+302	-32	-0.95945
+303	-32	-0.69124
+304	-32	-0.60479
+305	-32	-0.51063
+306	-32	-0.4766
+307	-32	-0.33049
+308	-32	-0.061325
+309	-32	0
+310	-32	0
+311	-32	0
+312	-32	0
+313	-32	0
+314	-32	0
+315	-32	0
+316	-32	0
+317	-32	0
+318	-32	0
+319	-32	0
+320	-32	0
+321	-32	0
+322	-32	0
+323	-32	0
+324	-32	0
+325	-32	0
+326	-32	0
+327	-32	0
+328	-32	0
+329	-32	0
+330	-32	0
+331	-32	0
+332	-32	0
+333	-32	0
+334	-32	0
+335	-32	0
+336	-32	0
+337	-32	0
+338	-32	0
+339	-32	0
+340	-32	0
+341	-32	0
+342	-32	0
+343	-32	0
+344	-32	0
+345	-32	0
+346	-32	0
+347	-32	0
+348	-32	0
+349	-32	0
+350	-32	0
+351	-32	0
+352	-32	0
+353	-32	0
+354	-32	0
+355	-32	0
+356	-32	0
+357	-32	0
+358	-32	0
+359	-32	0
+360	-32	0
+0	-31.5	0
+1	-31.5	0
+2	-31.5	0
+3	-31.5	0
+4	-31.5	0
+5	-31.5	0
+6	-31.5	0
+7	-31.5	0
+8	-31.5	0
+9	-31.5	0
+10	-31.5	0
+11	-31.5	0
+12	-31.5	0
+13	-31.5	0
+14	-31.5	0
+15	-31.5	0
+16	-31.5	0
+17	-31.5	0
+18	-31.5	0.25189
+19	-31.5	0.76702
+20	-31.5	0.54755
+21	-31.5	0.38887
+22	-31.5	0.32009
+23	-31.5	0.18124
+24	-31.5	0.17694
+25	-31.5	0.2626
+26	-31.5	0.53333
+27	-31.5	0.99326
+28	-31.5	1.3951
+29	-31.5	1.5272
+30	-31.5	0.72689
+31	-31.5	0
+32	-31.5	0
+33	-31.5	0
+34	-31.5	0
+35	-31.5	0
+36	-31.5	0
+37	-31.5	0
+38	-31.5	0
+39	-31.5	0
+40	-31.5	0
+41	-31.5	0
+42	-31.5	0
+43	-31.5	0
+44	-31.5	0
+45	-31.5	0
+46	-31.5	0
+47	-31.5	0
+48	-31.5	0
+49	-31.5	0
+50	-31.5	0
+51	-31.5	0
+52	-31.5	0
+53	-31.5	0
+54	-31.5	0
+55	-31.5	0
+56	-31.5	0
+57	-31.5	0
+58	-31.5	0
+59	-31.5	0
+60	-31.5	0
+61	-31.5	0
+62	-31.5	0
+63	-31.5	0
+64	-31.5	0
+65	-31.5	0
+66	-31.5	0
+67	-31.5	0
+68	-31.5	0
+69	-31.5	0
+70	-31.5	0
+71	-31.5	0
+72	-31.5	0
+73	-31.5	0
+74	-31.5	0
+75	-31.5	0
+76	-31.5	0
+77	-31.5	0
+78	-31.5	0
+79	-31.5	0
+80	-31.5	0
+81	-31.5	0
+82	-31.5	0
+83	-31.5	0
+84	-31.5	0
+85	-31.5	0
+86	-31.5	0
+87	-31.5	0
+88	-31.5	0
+89	-31.5	0
+90	-31.5	0
+91	-31.5	0
+92	-31.5	0
+93	-31.5	0
+94	-31.5	0
+95	-31.5	0
+96	-31.5	0
+97	-31.5	0
+98	-31.5	0
+99	-31.5	0
+100	-31.5	0
+101	-31.5	0
+102	-31.5	0
+103	-31.5	0
+104	-31.5	0
+105	-31.5	0
+106	-31.5	0
+107	-31.5	0
+108	-31.5	0
+109	-31.5	0
+110	-31.5	0
+111	-31.5	0
+112	-31.5	0
+113	-31.5	0
+114	-31.5	0
+115	-31.5	0
+116	-31.5	-0.52845
+117	-31.5	-0.88672
+118	-31.5	-0.73008
+119	-31.5	-0.52139
+120	-31.5	-0.37519
+121	-31.5	-0.24228
+122	-31.5	-0.21814
+123	-31.5	-0.26884
+124	-31.5	-0.36499
+125	-31.5	-0.40179
+126	-31.5	-0.28783
+127	-31.5	-0.13988
+128	-31.5	-0.048002
+129	-31.5	0.077863
+130	-31.5	0.31767
+131	-31.5	0.064773
+132	-31.5	0.051313
+133	-31.5	-0.085572
+134	-31.5	-0.21499
+135	-31.5	-0.26944
+136	-31.5	-0.20832
+137	-31.5	-0.071446
+138	-31.5	0.11444
+139	-31.5	0.24165
+140	-31.5	0.24247
+141	-31.5	0.217
+142	-31.5	0.15908
+143	-31.5	0.11478
+144	-31.5	0.12729
+145	-31.5	0.21778
+146	-31.5	0.56051
+147	-31.5	0.86527
+148	-31.5	0.83102
+149	-31.5	0.77809
+150	-31.5	1.4104
+151	-31.5	2.1476
+152	-31.5	1.7062
+153	-31.5	0.26906
+154	-31.5	0
+155	-31.5	0
+156	-31.5	0
+157	-31.5	0
+158	-31.5	0
+159	-31.5	0
+160	-31.5	0
+161	-31.5	0
+162	-31.5	0
+163	-31.5	0
+164	-31.5	0
+165	-31.5	0
+166	-31.5	0
+167	-31.5	0
+168	-31.5	0
+169	-31.5	0
+170	-31.5	0
+171	-31.5	0
+172	-31.5	0
+173	-31.5	0
+174	-31.5	0
+175	-31.5	0
+176	-31.5	0
+177	-31.5	0
+178	-31.5	0
+179	-31.5	0
+180	-31.5	0
+181	-31.5	0
+182	-31.5	0
+183	-31.5	0
+184	-31.5	0
+185	-31.5	0
+186	-31.5	0
+187	-31.5	0
+188	-31.5	0
+189	-31.5	0
+190	-31.5	0
+191	-31.5	0
+192	-31.5	0
+193	-31.5	0
+194	-31.5	0
+195	-31.5	0
+196	-31.5	0
+197	-31.5	0
+198	-31.5	0
+199	-31.5	0
+200	-31.5	0
+201	-31.5	0
+202	-31.5	0
+203	-31.5	0
+204	-31.5	0
+205	-31.5	0
+206	-31.5	0
+207	-31.5	0
+208	-31.5	0
+209	-31.5	0
+210	-31.5	0
+211	-31.5	0
+212	-31.5	0
+213	-31.5	0
+214	-31.5	0
+215	-31.5	0
+216	-31.5	0
+217	-31.5	0
+218	-31.5	0
+219	-31.5	0
+220	-31.5	0
+221	-31.5	0
+222	-31.5	0
+223	-31.5	0
+224	-31.5	0
+225	-31.5	0
+226	-31.5	0
+227	-31.5	0
+228	-31.5	0
+229	-31.5	0
+230	-31.5	0
+231	-31.5	0
+232	-31.5	0
+233	-31.5	0
+234	-31.5	0
+235	-31.5	0
+236	-31.5	0
+237	-31.5	0
+238	-31.5	0
+239	-31.5	0
+240	-31.5	0
+241	-31.5	0
+242	-31.5	0
+243	-31.5	0
+244	-31.5	0
+245	-31.5	0
+246	-31.5	0
+247	-31.5	0
+248	-31.5	0
+249	-31.5	0
+250	-31.5	0
+251	-31.5	0
+252	-31.5	0
+253	-31.5	0
+254	-31.5	0
+255	-31.5	0
+256	-31.5	0
+257	-31.5	0
+258	-31.5	0
+259	-31.5	0
+260	-31.5	0
+261	-31.5	0
+262	-31.5	0
+263	-31.5	0
+264	-31.5	0
+265	-31.5	0
+266	-31.5	0
+267	-31.5	0
+268	-31.5	0
+269	-31.5	0
+270	-31.5	0
+271	-31.5	0
+272	-31.5	0
+273	-31.5	0
+274	-31.5	0
+275	-31.5	0
+276	-31.5	0
+277	-31.5	0
+278	-31.5	0
+279	-31.5	0
+280	-31.5	0
+281	-31.5	0
+282	-31.5	0
+283	-31.5	0
+284	-31.5	0
+285	-31.5	0
+286	-31.5	0
+287	-31.5	0
+288	-31.5	0
+289	-31.5	-0.76369
+290	-31.5	-0.083628
+291	-31.5	-0.27942
+292	-31.5	-0.51485
+293	-31.5	-0.35578
+294	-31.5	-0.83816
+295	-31.5	-1.326
+296	-31.5	-1.4571
+297	-31.5	-1.4932
+298	-31.5	-1.9229
+299	-31.5	-2.3525
+300	-31.5	-2.2188
+301	-31.5	-1.3779
+302	-31.5	-0.8853
+303	-31.5	-0.62814
+304	-31.5	-0.51265
+305	-31.5	-0.39156
+306	-31.5	-0.35977
+307	-31.5	-0.30959
+308	-31.5	-0.16114
+309	-31.5	0
+310	-31.5	0
+311	-31.5	0
+312	-31.5	0
+313	-31.5	0
+314	-31.5	0
+315	-31.5	0
+316	-31.5	0
+317	-31.5	0
+318	-31.5	0
+319	-31.5	0
+320	-31.5	0
+321	-31.5	0
+322	-31.5	0
+323	-31.5	0
+324	-31.5	0
+325	-31.5	0
+326	-31.5	0
+327	-31.5	0
+328	-31.5	0
+329	-31.5	0
+330	-31.5	0
+331	-31.5	0
+332	-31.5	0
+333	-31.5	0
+334	-31.5	0
+335	-31.5	0
+336	-31.5	0
+337	-31.5	0
+338	-31.5	0
+339	-31.5	0
+340	-31.5	0
+341	-31.5	0
+342	-31.5	0
+343	-31.5	0
+344	-31.5	0
+345	-31.5	0
+346	-31.5	0
+347	-31.5	0
+348	-31.5	0
+349	-31.5	0
+350	-31.5	0
+351	-31.5	0
+352	-31.5	0
+353	-31.5	0
+354	-31.5	0
+355	-31.5	0
+356	-31.5	0
+357	-31.5	0
+358	-31.5	0
+359	-31.5	0
+360	-31.5	0
+0	-31	0
+1	-31	0
+2	-31	0
+3	-31	0
+4	-31	0
+5	-31	0
+6	-31	0
+7	-31	0
+8	-31	0
+9	-31	0
+10	-31	0
+11	-31	0
+12	-31	0
+13	-31	0
+14	-31	0
+15	-31	0
+16	-31	0
+17	-31	0
+18	-31	0.27335
+19	-31	0.45031
+20	-31	0.35262
+21	-31	0.33198
+22	-31	0.2035
+23	-31	0.16338
+24	-31	0.22268
+25	-31	0.28903
+26	-31	0.43209
+27	-31	0.52512
+28	-31	0.24943
+29	-31	1.2085
+30	-31	1.0193
+31	-31	0
+32	-31	0
+33	-31	0
+34	-31	0
+35	-31	0
+36	-31	0
+37	-31	0
+38	-31	0
+39	-31	0
+40	-31	0
+41	-31	0
+42	-31	0
+43	-31	0
+44	-31	0
+45	-31	0
+46	-31	0
+47	-31	0
+48	-31	0
+49	-31	0
+50	-31	0
+51	-31	0
+52	-31	0
+53	-31	0
+54	-31	0
+55	-31	0
+56	-31	0
+57	-31	0
+58	-31	0
+59	-31	0
+60	-31	0
+61	-31	0
+62	-31	0
+63	-31	0
+64	-31	0
+65	-31	0
+66	-31	0
+67	-31	0
+68	-31	0
+69	-31	0
+70	-31	0
+71	-31	0
+72	-31	0
+73	-31	0
+74	-31	0
+75	-31	0
+76	-31	0
+77	-31	0
+78	-31	0
+79	-31	0
+80	-31	0
+81	-31	0
+82	-31	0
+83	-31	0
+84	-31	0
+85	-31	0
+86	-31	0
+87	-31	0
+88	-31	0
+89	-31	0
+90	-31	0
+91	-31	0
+92	-31	0
+93	-31	0
+94	-31	0
+95	-31	0
+96	-31	0
+97	-31	0
+98	-31	0
+99	-31	0
+100	-31	0
+101	-31	0
+102	-31	0
+103	-31	0
+104	-31	0
+105	-31	0
+106	-31	0
+107	-31	0
+108	-31	0
+109	-31	0
+110	-31	0
+111	-31	0
+112	-31	0
+113	-31	0
+114	-31	0
+115	-31	-0.089548
+116	-31	-0.46662
+117	-31	-0.7459
+118	-31	-0.62815
+119	-31	-0.46982
+120	-31	-0.36288
+121	-31	-0.24352
+122	-31	-0.25143
+123	-31	-0.29222
+124	-31	-0.36063
+125	-31	-0.37728
+126	-31	-0.29523
+127	-31	-0.14251
+128	-31	-0.038759
+129	-31	0.12968
+130	-31	0.26947
+131	-31	0.1835
+132	-31	0.044384
+133	-31	-0.11483
+134	-31	-0.25339
+135	-31	-0.31193
+136	-31	-0.21823
+137	-31	-0.079273
+138	-31	0.11057
+139	-31	0.20319
+140	-31	0.22383
+141	-31	0.208
+142	-31	0.15416
+143	-31	0.116
+144	-31	0.15005
+145	-31	0.22921
+146	-31	0.61698
+147	-31	0.87892
+148	-31	0.9179
+149	-31	0.8699
+150	-31	1.511
+151	-31	1.9549
+152	-31	1.5602
+153	-31	0.50156
+154	-31	0
+155	-31	0
+156	-31	0
+157	-31	0
+158	-31	0
+159	-31	0
+160	-31	0
+161	-31	0
+162	-31	0
+163	-31	0
+164	-31	0
+165	-31	0
+166	-31	0
+167	-31	0
+168	-31	0
+169	-31	0
+170	-31	0
+171	-31	0
+172	-31	0
+173	-31	0
+174	-31	0
+175	-31	0
+176	-31	0
+177	-31	0
+178	-31	0
+179	-31	0
+180	-31	0
+181	-31	0
+182	-31	0
+183	-31	0
+184	-31	0
+185	-31	0
+186	-31	0
+187	-31	0
+188	-31	0
+189	-31	0
+190	-31	0
+191	-31	0
+192	-31	0
+193	-31	0
+194	-31	0
+195	-31	0
+196	-31	0
+197	-31	0
+198	-31	0
+199	-31	0
+200	-31	0
+201	-31	0
+202	-31	0
+203	-31	0
+204	-31	0
+205	-31	0
+206	-31	0
+207	-31	0
+208	-31	0
+209	-31	0
+210	-31	0
+211	-31	0
+212	-31	0
+213	-31	0
+214	-31	0
+215	-31	0
+216	-31	0
+217	-31	0
+218	-31	0
+219	-31	0
+220	-31	0
+221	-31	0
+222	-31	0
+223	-31	0
+224	-31	0
+225	-31	0
+226	-31	0
+227	-31	0
+228	-31	0
+229	-31	0
+230	-31	0
+231	-31	0
+232	-31	0
+233	-31	0
+234	-31	0
+235	-31	0
+236	-31	0
+237	-31	0
+238	-31	0
+239	-31	0
+240	-31	0
+241	-31	0
+242	-31	0
+243	-31	0
+244	-31	0
+245	-31	0
+246	-31	0
+247	-31	0
+248	-31	0
+249	-31	0
+250	-31	0
+251	-31	0
+252	-31	0
+253	-31	0
+254	-31	0
+255	-31	0
+256	-31	0
+257	-31	0
+258	-31	0
+259	-31	0
+260	-31	0
+261	-31	0
+262	-31	0
+263	-31	0
+264	-31	0
+265	-31	0
+266	-31	0
+267	-31	0
+268	-31	0
+269	-31	0
+270	-31	0
+271	-31	0
+272	-31	0
+273	-31	0
+274	-31	0
+275	-31	0
+276	-31	0
+277	-31	0
+278	-31	0
+279	-31	0
+280	-31	0
+281	-31	0
+282	-31	0
+283	-31	0
+284	-31	0
+285	-31	0
+286	-31	0
+287	-31	0
+288	-31	0
+289	-31	-0.57649
+290	-31	-0.38683
+291	-31	-0.19526
+292	-31	-0.48862
+293	-31	-0.50729
+294	-31	-0.80057
+295	-31	-1.053
+296	-31	-1.1887
+297	-31	-1.415
+298	-31	-1.8176
+299	-31	-2.2813
+300	-31	-2.4185
+301	-31	-1.6331
+302	-31	-0.88676
+303	-31	-0.57363
+304	-31	-0.41331
+305	-31	-0.26689
+306	-31	-0.23992
+307	-31	-0.20978
+308	-31	-0.17809
+309	-31	0
+310	-31	0
+311	-31	0
+312	-31	0
+313	-31	0
+314	-31	0
+315	-31	0
+316	-31	0
+317	-31	0
+318	-31	0
+319	-31	0
+320	-31	0
+321	-31	0
+322	-31	0
+323	-31	0
+324	-31	0
+325	-31	0
+326	-31	0
+327	-31	0
+328	-31	0
+329	-31	0
+330	-31	0
+331	-31	0
+332	-31	0
+333	-31	0
+334	-31	0
+335	-31	0
+336	-31	0
+337	-31	0
+338	-31	0
+339	-31	0
+340	-31	0
+341	-31	0
+342	-31	0
+343	-31	0
+344	-31	0
+345	-31	0
+346	-31	0
+347	-31	0
+348	-31	0
+349	-31	0
+350	-31	0
+351	-31	0
+352	-31	0
+353	-31	0
+354	-31	0
+355	-31	0
+356	-31	0
+357	-31	0
+358	-31	0
+359	-31	0
+360	-31	0
+0	-30.5	0
+1	-30.5	0
+2	-30.5	0
+3	-30.5	0
+4	-30.5	0
+5	-30.5	0
+6	-30.5	0
+7	-30.5	0
+8	-30.5	0
+9	-30.5	0
+10	-30.5	0
+11	-30.5	0
+12	-30.5	0
+13	-30.5	0
+14	-30.5	0
+15	-30.5	0
+16	-30.5	0
+17	-30.5	0
+18	-30.5	0.19514
+19	-30.5	0.24774
+20	-30.5	0.19425
+21	-30.5	0.2607
+22	-30.5	0.11964
+23	-30.5	0.14553
+24	-30.5	0.2478
+25	-30.5	0.29036
+26	-30.5	0.35019
+27	-30.5	0.39966
+28	-30.5	0.42668
+29	-30.5	0.968
+30	-30.5	0.9572
+31	-30.5	0.084747
+32	-30.5	0
+33	-30.5	0
+34	-30.5	0
+35	-30.5	0
+36	-30.5	0
+37	-30.5	0
+38	-30.5	0
+39	-30.5	0
+40	-30.5	0
+41	-30.5	0
+42	-30.5	0
+43	-30.5	0
+44	-30.5	0
+45	-30.5	0
+46	-30.5	0
+47	-30.5	0
+48	-30.5	0
+49	-30.5	0
+50	-30.5	0
+51	-30.5	0
+52	-30.5	0
+53	-30.5	0
+54	-30.5	0
+55	-30.5	0
+56	-30.5	0
+57	-30.5	0
+58	-30.5	0
+59	-30.5	0
+60	-30.5	0
+61	-30.5	0
+62	-30.5	0
+63	-30.5	0
+64	-30.5	0
+65	-30.5	0
+66	-30.5	0
+67	-30.5	0
+68	-30.5	0
+69	-30.5	0
+70	-30.5	0
+71	-30.5	0
+72	-30.5	0
+73	-30.5	0
+74	-30.5	0
+75	-30.5	0
+76	-30.5	0
+77	-30.5	0
+78	-30.5	0
+79	-30.5	0
+80	-30.5	0
+81	-30.5	0
+82	-30.5	0
+83	-30.5	0
+84	-30.5	0
+85	-30.5	0
+86	-30.5	0
+87	-30.5	0
+88	-30.5	0
+89	-30.5	0
+90	-30.5	0
+91	-30.5	0
+92	-30.5	0
+93	-30.5	0
+94	-30.5	0
+95	-30.5	0
+96	-30.5	0
+97	-30.5	0
+98	-30.5	0
+99	-30.5	0
+100	-30.5	0
+101	-30.5	0
+102	-30.5	0
+103	-30.5	0
+104	-30.5	0
+105	-30.5	0
+106	-30.5	0
+107	-30.5	0
+108	-30.5	0
+109	-30.5	0
+110	-30.5	0
+111	-30.5	0
+112	-30.5	0
+113	-30.5	0
+114	-30.5	0
+115	-30.5	-0.086459
+116	-30.5	-0.38547
+117	-30.5	-0.59851
+118	-30.5	-0.49589
+119	-30.5	-0.41899
+120	-30.5	-0.35058
+121	-30.5	-0.24715
+122	-30.5	-0.27422
+123	-30.5	-0.36092
+124	-30.5	-0.4396
+125	-30.5	-0.43886
+126	-30.5	-0.3061
+127	-30.5	-0.1365
+128	-30.5	-0.029994
+129	-30.5	0.085919
+130	-30.5	0.18383
+131	-30.5	0.13353
+132	-30.5	0.0052251
+133	-30.5	-0.1065
+134	-30.5	-0.24754
+135	-30.5	-0.32806
+136	-30.5	-0.25232
+137	-30.5	-0.086672
+138	-30.5	0.098584
+139	-30.5	0.18534
+140	-30.5	0.20519
+141	-30.5	0.20086
+142	-30.5	0.15045
+143	-30.5	0.13806
+144	-30.5	0.17282
+145	-30.5	0.24065
+146	-30.5	0.65143
+147	-30.5	0.89751
+148	-30.5	1.0048
+149	-30.5	1.0165
+150	-30.5	1.3804
+151	-30.5	1.5397
+152	-30.5	1.3944
+153	-30.5	0.82296
+154	-30.5	0
+155	-30.5	0
+156	-30.5	0
+157	-30.5	0
+158	-30.5	0
+159	-30.5	0
+160	-30.5	0
+161	-30.5	0
+162	-30.5	0
+163	-30.5	0
+164	-30.5	0
+165	-30.5	0
+166	-30.5	0
+167	-30.5	0
+168	-30.5	0
+169	-30.5	0
+170	-30.5	0
+171	-30.5	0
+172	-30.5	0
+173	-30.5	0
+174	-30.5	0
+175	-30.5	0
+176	-30.5	0
+177	-30.5	0
+178	-30.5	0
+179	-30.5	0
+180	-30.5	0
+181	-30.5	0
+182	-30.5	0
+183	-30.5	0
+184	-30.5	0
+185	-30.5	0
+186	-30.5	0
+187	-30.5	0
+188	-30.5	0
+189	-30.5	0
+190	-30.5	0
+191	-30.5	0
+192	-30.5	0
+193	-30.5	0
+194	-30.5	0
+195	-30.5	0
+196	-30.5	0
+197	-30.5	0
+198	-30.5	0
+199	-30.5	0
+200	-30.5	0
+201	-30.5	0
+202	-30.5	0
+203	-30.5	0
+204	-30.5	0
+205	-30.5	0
+206	-30.5	0
+207	-30.5	0
+208	-30.5	0
+209	-30.5	0
+210	-30.5	0
+211	-30.5	0
+212	-30.5	0
+213	-30.5	0
+214	-30.5	0
+215	-30.5	0
+216	-30.5	0
+217	-30.5	0
+218	-30.5	0
+219	-30.5	0
+220	-30.5	0
+221	-30.5	0
+222	-30.5	0
+223	-30.5	0
+224	-30.5	0
+225	-30.5	0
+226	-30.5	0
+227	-30.5	0
+228	-30.5	0
+229	-30.5	0
+230	-30.5	0
+231	-30.5	0
+232	-30.5	0
+233	-30.5	0
+234	-30.5	0
+235	-30.5	0
+236	-30.5	0
+237	-30.5	0
+238	-30.5	0
+239	-30.5	0
+240	-30.5	0
+241	-30.5	0
+242	-30.5	0
+243	-30.5	0
+244	-30.5	0
+245	-30.5	0
+246	-30.5	0
+247	-30.5	0
+248	-30.5	0
+249	-30.5	0
+250	-30.5	0
+251	-30.5	0
+252	-30.5	0
+253	-30.5	0
+254	-30.5	0
+255	-30.5	0
+256	-30.5	0
+257	-30.5	0
+258	-30.5	0
+259	-30.5	0
+260	-30.5	0
+261	-30.5	0
+262	-30.5	0
+263	-30.5	0
+264	-30.5	0
+265	-30.5	0
+266	-30.5	0
+267	-30.5	0
+268	-30.5	0
+269	-30.5	0
+270	-30.5	0
+271	-30.5	0
+272	-30.5	0
+273	-30.5	0
+274	-30.5	0
+275	-30.5	0
+276	-30.5	0
+277	-30.5	0
+278	-30.5	0
+279	-30.5	0
+280	-30.5	0
+281	-30.5	0
+282	-30.5	0
+283	-30.5	0
+284	-30.5	0
+285	-30.5	0
+286	-30.5	0
+287	-30.5	0
+288	-30.5	0
+289	-30.5	-0.36353
+290	-30.5	-0.27301
+291	-30.5	-0.15227
+292	-30.5	-0.41503
+293	-30.5	-0.48838
+294	-30.5	-0.74443
+295	-30.5	-0.8743
+296	-30.5	-1.0737
+297	-30.5	-1.2801
+298	-30.5	-1.5065
+299	-30.5	-1.7318
+300	-30.5	-1.7041
+301	-30.5	-1.8476
+302	-30.5	-0.88822
+303	-30.5	-0.51911
+304	-30.5	-0.31356
+305	-30.5	-0.15204
+306	-30.5	-0.12558
+307	-30.5	-0.13636
+308	-30.5	-0.15833
+309	-30.5	-0.0022587
+310	-30.5	0
+311	-30.5	0
+312	-30.5	0
+313	-30.5	0
+314	-30.5	0
+315	-30.5	0
+316	-30.5	0
+317	-30.5	0
+318	-30.5	0
+319	-30.5	0
+320	-30.5	0
+321	-30.5	0
+322	-30.5	0
+323	-30.5	0
+324	-30.5	0
+325	-30.5	0
+326	-30.5	0
+327	-30.5	0
+328	-30.5	0
+329	-30.5	0
+330	-30.5	0
+331	-30.5	0
+332	-30.5	0
+333	-30.5	0
+334	-30.5	0
+335	-30.5	0
+336	-30.5	0
+337	-30.5	0
+338	-30.5	0
+339	-30.5	0
+340	-30.5	0
+341	-30.5	0
+342	-30.5	0
+343	-30.5	0
+344	-30.5	0
+345	-30.5	0
+346	-30.5	0
+347	-30.5	0
+348	-30.5	0
+349	-30.5	0
+350	-30.5	0
+351	-30.5	0
+352	-30.5	0
+353	-30.5	0
+354	-30.5	0
+355	-30.5	0
+356	-30.5	0
+357	-30.5	0
+358	-30.5	0
+359	-30.5	0
+360	-30.5	0
+0	-30	0
+1	-30	0
+2	-30	0
+3	-30	0
+4	-30	0
+5	-30	0
+6	-30	0
+7	-30	0
+8	-30	0
+9	-30	0
+10	-30	0
+11	-30	0
+12	-30	0
+13	-30	0
+14	-30	0
+15	-30	0
+16	-30	0
+17	-30	0
+18	-30	0.2143
+19	-30	0.19568
+20	-30	0.17039
+21	-30	0.20591
+22	-30	0.15815
+23	-30	0.15151
+24	-30	0.25515
+25	-30	0.23922
+26	-30	0.27636
+27	-30	0.26362
+28	-30	0.48316
+29	-30	0.79233
+30	-30	0.87766
+31	-30	0.22875
+32	-30	0
+33	-30	0
+34	-30	0
+35	-30	0
+36	-30	0
+37	-30	0
+38	-30	0
+39	-30	0
+40	-30	0
+41	-30	0
+42	-30	0
+43	-30	0
+44	-30	0
+45	-30	0
+46	-30	0
+47	-30	0
+48	-30	0
+49	-30	0
+50	-30	0
+51	-30	0
+52	-30	0
+53	-30	0
+54	-30	0
+55	-30	0
+56	-30	0
+57	-30	0
+58	-30	0
+59	-30	0
+60	-30	0
+61	-30	0
+62	-30	0
+63	-30	0
+64	-30	0
+65	-30	0
+66	-30	0
+67	-30	0
+68	-30	0
+69	-30	0
+70	-30	0
+71	-30	0
+72	-30	0
+73	-30	0
+74	-30	0
+75	-30	0
+76	-30	0
+77	-30	0
+78	-30	0
+79	-30	0
+80	-30	0
+81	-30	0
+82	-30	0
+83	-30	0
+84	-30	0
+85	-30	0
+86	-30	0
+87	-30	0
+88	-30	0
+89	-30	0
+90	-30	0
+91	-30	0
+92	-30	0
+93	-30	0
+94	-30	0
+95	-30	0
+96	-30	0
+97	-30	0
+98	-30	0
+99	-30	0
+100	-30	0
+101	-30	0
+102	-30	0
+103	-30	0
+104	-30	0
+105	-30	0
+106	-30	0
+107	-30	0
+108	-30	0
+109	-30	0
+110	-30	0
+111	-30	0
+112	-30	0
+113	-30	0
+114	-30	0
+115	-30	-0.095396
+116	-30	-0.33251
+117	-30	-0.45633
+118	-30	-0.38364
+119	-30	-0.36355
+120	-30	-0.33827
+121	-30	-0.24018
+122	-30	-0.28017
+123	-30	-0.42962
+124	-30	-0.52342
+125	-30	-0.50044
+126	-30	-0.30468
+127	-30	-0.12166
+128	-30	-0.023007
+129	-30	0.067073
+130	-30	0.13375
+131	-30	0.077338
+132	-30	-0.013454
+133	-30	-0.11915
+134	-30	-0.27112
+135	-30	-0.33697
+136	-30	-0.29274
+137	-30	-0.096131
+138	-30	0.086149
+139	-30	0.18934
+140	-30	0.20443
+141	-30	0.19478
+142	-30	0.14311
+143	-30	0.15334
+144	-30	0.19489
+145	-30	0.25309
+146	-30	0.66455
+147	-30	0.98677
+148	-30	1.0917
+149	-30	1.1894
+150	-30	1.1909
+151	-30	1.2308
+152	-30	1.2296
+153	-30	0.79695
+154	-30	0
+155	-30	0
+156	-30	0
+157	-30	0
+158	-30	0
+159	-30	0
+160	-30	0
+161	-30	0
+162	-30	0
+163	-30	0
+164	-30	0
+165	-30	0
+166	-30	0
+167	-30	0
+168	-30	0
+169	-30	0
+170	-30	0
+171	-30	0
+172	-30	0
+173	-30	0
+174	-30	0
+175	-30	0
+176	-30	0
+177	-30	0
+178	-30	0
+179	-30	0
+180	-30	0
+181	-30	0
+182	-30	0
+183	-30	0
+184	-30	0
+185	-30	0
+186	-30	0
+187	-30	0
+188	-30	0
+189	-30	0
+190	-30	0
+191	-30	0
+192	-30	0
+193	-30	0
+194	-30	0
+195	-30	0
+196	-30	0
+197	-30	0
+198	-30	0
+199	-30	0
+200	-30	0
+201	-30	0
+202	-30	0
+203	-30	0
+204	-30	0
+205	-30	0
+206	-30	0
+207	-30	0
+208	-30	0
+209	-30	0
+210	-30	0
+211	-30	0
+212	-30	0
+213	-30	0
+214	-30	0
+215	-30	0
+216	-30	0
+217	-30	0
+218	-30	0
+219	-30	0
+220	-30	0
+221	-30	0
+222	-30	0
+223	-30	0
+224	-30	0
+225	-30	0
+226	-30	0
+227	-30	0
+228	-30	0
+229	-30	0
+230	-30	0
+231	-30	0
+232	-30	0
+233	-30	0
+234	-30	0
+235	-30	0
+236	-30	0
+237	-30	0
+238	-30	0
+239	-30	0
+240	-30	0
+241	-30	0
+242	-30	0
+243	-30	0
+244	-30	0
+245	-30	0
+246	-30	0
+247	-30	0
+248	-30	0
+249	-30	0
+250	-30	0
+251	-30	0
+252	-30	0
+253	-30	0
+254	-30	0
+255	-30	0
+256	-30	0
+257	-30	0
+258	-30	0
+259	-30	0
+260	-30	0
+261	-30	0
+262	-30	0
+263	-30	0
+264	-30	0
+265	-30	0
+266	-30	0
+267	-30	0
+268	-30	0
+269	-30	0
+270	-30	0
+271	-30	0
+272	-30	0
+273	-30	0
+274	-30	0
+275	-30	0
+276	-30	0
+277	-30	0
+278	-30	0
+279	-30	0
+280	-30	0
+281	-30	0
+282	-30	0
+283	-30	0
+284	-30	0
+285	-30	0
+286	-30	0
+287	-30	0
+288	-30	0
+289	-30	-0.18839
+290	-30	-0.18799
+291	-30	-0.10388
+292	-30	-0.25747
+293	-30	-0.40914
+294	-30	-0.68789
+295	-30	-0.8594
+296	-30	-1.0588
+297	-30	-1.2582
+298	-30	-1.4739
+299	-30	-1.512
+300	-30	-1.5971
+301	-30	-1.9479
+302	-30	-0.88613
+303	-30	-0.5067
+304	-30	-0.23421
+305	-30	-0.06365
+306	-30	-0.0088759
+307	-30	-0.013588
+308	-30	-0.115
+309	-30	-0.07317
+310	-30	-0.0027502
+311	-30	0
+312	-30	0
+313	-30	0
+314	-30	0
+315	-30	0
+316	-30	0
+317	-30	0
+318	-30	0
+319	-30	0
+320	-30	0
+321	-30	0
+322	-30	0
+323	-30	0
+324	-30	0
+325	-30	0
+326	-30	0
+327	-30	0
+328	-30	0
+329	-30	0
+330	-30	0
+331	-30	0
+332	-30	0
+333	-30	0
+334	-30	0
+335	-30	0
+336	-30	0
+337	-30	0
+338	-30	0
+339	-30	0
+340	-30	0
+341	-30	0
+342	-30	0
+343	-30	0
+344	-30	0
+345	-30	0
+346	-30	0
+347	-30	0
+348	-30	0
+349	-30	0
+350	-30	0
+351	-30	0
+352	-30	0
+353	-30	0
+354	-30	0
+355	-30	0
+356	-30	0
+357	-30	0
+358	-30	0
+359	-30	0
+360	-30	0
+0	-29.5	0
+1	-29.5	0
+2	-29.5	0
+3	-29.5	0
+4	-29.5	0
+5	-29.5	0
+6	-29.5	0
+7	-29.5	0
+8	-29.5	0
+9	-29.5	0
+10	-29.5	0
+11	-29.5	0
+12	-29.5	0
+13	-29.5	0
+14	-29.5	0
+15	-29.5	0
+16	-29.5	0
+17	-29.5	0.07083
+18	-29.5	0.16634
+19	-29.5	0.14919
+20	-29.5	0.17181
+21	-29.5	0.21935
+22	-29.5	0.19666
+23	-29.5	0.19556
+24	-29.5	0.2625
+25	-29.5	0.21773
+26	-29.5	0.19879
+27	-29.5	0.18485
+28	-29.5	0.3712
+29	-29.5	0.6647
+30	-29.5	0.74791
+31	-29.5	0.32446
+32	-29.5	0
+33	-29.5	0
+34	-29.5	0
+35	-29.5	0
+36	-29.5	0
+37	-29.5	0
+38	-29.5	0
+39	-29.5	0
+40	-29.5	0
+41	-29.5	0
+42	-29.5	0
+43	-29.5	0
+44	-29.5	0
+45	-29.5	0
+46	-29.5	0
+47	-29.5	0
+48	-29.5	0
+49	-29.5	0
+50	-29.5	0
+51	-29.5	0
+52	-29.5	0
+53	-29.5	0
+54	-29.5	0
+55	-29.5	0
+56	-29.5	0
+57	-29.5	0
+58	-29.5	0
+59	-29.5	0
+60	-29.5	0
+61	-29.5	0
+62	-29.5	0
+63	-29.5	0
+64	-29.5	0
+65	-29.5	0
+66	-29.5	0
+67	-29.5	0
+68	-29.5	0
+69	-29.5	0
+70	-29.5	0
+71	-29.5	0
+72	-29.5	0
+73	-29.5	0
+74	-29.5	0
+75	-29.5	0
+76	-29.5	0
+77	-29.5	0
+78	-29.5	0
+79	-29.5	0
+80	-29.5	0
+81	-29.5	0
+82	-29.5	0
+83	-29.5	0
+84	-29.5	0
+85	-29.5	0
+86	-29.5	0
+87	-29.5	0
+88	-29.5	0
+89	-29.5	0
+90	-29.5	0
+91	-29.5	0
+92	-29.5	0
+93	-29.5	0
+94	-29.5	0
+95	-29.5	0
+96	-29.5	0
+97	-29.5	0
+98	-29.5	0
+99	-29.5	0
+100	-29.5	0
+101	-29.5	0
+102	-29.5	0
+103	-29.5	0
+104	-29.5	0
+105	-29.5	0
+106	-29.5	0
+107	-29.5	0
+108	-29.5	0
+109	-29.5	0
+110	-29.5	0
+111	-29.5	0
+112	-29.5	0
+113	-29.5	0
+114	-29.5	0
+115	-29.5	-0.034846
+116	-29.5	-0.30855
+117	-29.5	-0.32415
+118	-29.5	-0.26924
+119	-29.5	-0.27235
+120	-29.5	-0.3018
+121	-29.5	-0.24043
+122	-29.5	-0.28993
+123	-29.5	-0.4785
+124	-29.5	-0.53621
+125	-29.5	-0.52469
+126	-29.5	-0.29881
+127	-29.5	-0.11289
+128	-29.5	-0.033466
+129	-29.5	0.035383
+130	-29.5	0.084497
+131	-29.5	0.039781
+132	-29.5	-0.031125
+133	-29.5	-0.16441
+134	-29.5	-0.31661
+135	-29.5	-0.38307
+136	-29.5	-0.30121
+137	-29.5	-0.10559
+138	-29.5	0.089625
+139	-29.5	0.19334
+140	-29.5	0.21496
+141	-29.5	0.18694
+142	-29.5	0.13527
+143	-29.5	0.16861
+144	-29.5	0.21017
+145	-29.5	0.29839
+146	-29.5	0.7032
+147	-29.5	1.1323
+148	-29.5	1.1905
+149	-29.5	1.2553
+150	-29.5	1.1498
+151	-29.5	1.0125
+152	-29.5	0.94862
+153	-29.5	0.81872
+154	-29.5	0
+155	-29.5	0
+156	-29.5	0
+157	-29.5	0
+158	-29.5	0
+159	-29.5	0
+160	-29.5	0
+161	-29.5	0
+162	-29.5	0
+163	-29.5	0
+164	-29.5	0
+165	-29.5	0
+166	-29.5	0
+167	-29.5	0
+168	-29.5	0
+169	-29.5	0
+170	-29.5	0
+171	-29.5	0
+172	-29.5	0
+173	-29.5	0
+174	-29.5	0
+175	-29.5	0
+176	-29.5	0
+177	-29.5	0
+178	-29.5	0
+179	-29.5	0
+180	-29.5	0
+181	-29.5	0
+182	-29.5	0
+183	-29.5	0
+184	-29.5	0
+185	-29.5	0
+186	-29.5	0
+187	-29.5	0
+188	-29.5	0
+189	-29.5	0
+190	-29.5	0
+191	-29.5	0
+192	-29.5	0
+193	-29.5	0
+194	-29.5	0
+195	-29.5	0
+196	-29.5	0
+197	-29.5	0
+198	-29.5	0
+199	-29.5	0
+200	-29.5	0
+201	-29.5	0
+202	-29.5	0
+203	-29.5	0
+204	-29.5	0
+205	-29.5	0
+206	-29.5	0
+207	-29.5	0
+208	-29.5	0
+209	-29.5	0
+210	-29.5	0
+211	-29.5	0
+212	-29.5	0
+213	-29.5	0
+214	-29.5	0
+215	-29.5	0
+216	-29.5	0
+217	-29.5	0
+218	-29.5	0
+219	-29.5	0
+220	-29.5	0
+221	-29.5	0
+222	-29.5	0
+223	-29.5	0
+224	-29.5	0
+225	-29.5	0
+226	-29.5	0
+227	-29.5	0
+228	-29.5	0
+229	-29.5	0
+230	-29.5	0
+231	-29.5	0
+232	-29.5	0
+233	-29.5	0
+234	-29.5	0
+235	-29.5	0
+236	-29.5	0
+237	-29.5	0
+238	-29.5	0
+239	-29.5	0
+240	-29.5	0
+241	-29.5	0
+242	-29.5	0
+243	-29.5	0
+244	-29.5	0
+245	-29.5	0
+246	-29.5	0
+247	-29.5	0
+248	-29.5	0
+249	-29.5	0
+250	-29.5	0
+251	-29.5	0
+252	-29.5	0
+253	-29.5	0
+254	-29.5	0
+255	-29.5	0
+256	-29.5	0
+257	-29.5	0
+258	-29.5	0
+259	-29.5	0
+260	-29.5	0
+261	-29.5	0
+262	-29.5	0
+263	-29.5	0
+264	-29.5	0
+265	-29.5	0
+266	-29.5	0
+267	-29.5	0
+268	-29.5	0
+269	-29.5	0
+270	-29.5	0
+271	-29.5	0
+272	-29.5	0
+273	-29.5	0
+274	-29.5	0
+275	-29.5	0
+276	-29.5	0
+277	-29.5	0
+278	-29.5	0
+279	-29.5	0
+280	-29.5	0
+281	-29.5	0
+282	-29.5	0
+283	-29.5	0
+284	-29.5	0
+285	-29.5	0
+286	-29.5	0
+287	-29.5	0
+288	-29.5	0
+289	-29.5	-0.069556
+290	-29.5	-0.032523
+291	-29.5	-0.069271
+292	-29.5	-0.19126
+293	-29.5	-0.33036
+294	-29.5	-0.63134
+295	-29.5	-0.8445
+296	-29.5	-1.1135
+297	-29.5	-1.4057
+298	-29.5	-1.3538
+299	-29.5	-1.405
+300	-29.5	-1.549
+301	-29.5	-2.0482
+302	-29.5	-0.87558
+303	-29.5	-0.49616
+304	-29.5	-0.16003
+305	-29.5	0.015201
+306	-29.5	0.11201
+307	-29.5	0.10659
+308	-29.5	-0.041349
+309	-29.5	-0.15228
+310	-29.5	-0.019156
+311	-29.5	0
+312	-29.5	0
+313	-29.5	0
+314	-29.5	0
+315	-29.5	0
+316	-29.5	0
+317	-29.5	0
+318	-29.5	0
+319	-29.5	0
+320	-29.5	0
+321	-29.5	0
+322	-29.5	0
+323	-29.5	0
+324	-29.5	0
+325	-29.5	0
+326	-29.5	0
+327	-29.5	0
+328	-29.5	0
+329	-29.5	0
+330	-29.5	0
+331	-29.5	0
+332	-29.5	0
+333	-29.5	0
+334	-29.5	0
+335	-29.5	0
+336	-29.5	0
+337	-29.5	0
+338	-29.5	0
+339	-29.5	0
+340	-29.5	0
+341	-29.5	0
+342	-29.5	0
+343	-29.5	0
+344	-29.5	0
+345	-29.5	0
+346	-29.5	0
+347	-29.5	0
+348	-29.5	0
+349	-29.5	0
+350	-29.5	0
+351	-29.5	0
+352	-29.5	0
+353	-29.5	0
+354	-29.5	0
+355	-29.5	0
+356	-29.5	0
+357	-29.5	0
+358	-29.5	0
+359	-29.5	0
+360	-29.5	0
+0	-29	0
+1	-29	0
+2	-29	0
+3	-29	0
+4	-29	0
+5	-29	0
+6	-29	0
+7	-29	0
+8	-29	0
+9	-29	0
+10	-29	0
+11	-29	0
+12	-29	0
+13	-29	0
+14	-29	0
+15	-29	0
+16	-29	0
+17	-29	0.069994
+18	-29	0.14045
+19	-29	0.14937
+20	-29	0.16787
+21	-29	0.22727
+22	-29	0.23012
+23	-29	0.2568
+24	-29	0.26986
+25	-29	0.19624
+26	-29	0.18651
+27	-29	0.12426
+28	-29	0.28452
+29	-29	0.59582
+30	-29	0.63151
+31	-29	0.29579
+32	-29	0.03234
+33	-29	0
+34	-29	0
+35	-29	0
+36	-29	0
+37	-29	0
+38	-29	0
+39	-29	0
+40	-29	0
+41	-29	0
+42	-29	0
+43	-29	0
+44	-29	0
+45	-29	0
+46	-29	0
+47	-29	0
+48	-29	0
+49	-29	0
+50	-29	0
+51	-29	0
+52	-29	0
+53	-29	0
+54	-29	0
+55	-29	0
+56	-29	0
+57	-29	0
+58	-29	0
+59	-29	0
+60	-29	0
+61	-29	0
+62	-29	0
+63	-29	0
+64	-29	0
+65	-29	0
+66	-29	0
+67	-29	0
+68	-29	0
+69	-29	0
+70	-29	0
+71	-29	0
+72	-29	0
+73	-29	0
+74	-29	0
+75	-29	0
+76	-29	0
+77	-29	0
+78	-29	0
+79	-29	0
+80	-29	0
+81	-29	0
+82	-29	0
+83	-29	0
+84	-29	0
+85	-29	0
+86	-29	0
+87	-29	0
+88	-29	0
+89	-29	0
+90	-29	0
+91	-29	0
+92	-29	0
+93	-29	0
+94	-29	0
+95	-29	0
+96	-29	0
+97	-29	0
+98	-29	0
+99	-29	0
+100	-29	0
+101	-29	0
+102	-29	0
+103	-29	0
+104	-29	0
+105	-29	0
+106	-29	0
+107	-29	0
+108	-29	0
+109	-29	0
+110	-29	0
+111	-29	0
+112	-29	0
+113	-29	0
+114	-29	0
+115	-29	-0.073131
+116	-29	-0.22832
+117	-29	-0.22758
+118	-29	-0.17819
+119	-29	-0.22068
+120	-29	-0.26737
+121	-29	-0.24067
+122	-29	-0.2997
+123	-29	-0.46529
+124	-29	-0.53911
+125	-29	-0.50307
+126	-29	-0.30543
+127	-29	-0.16901
+128	-29	-0.081241
+129	-29	-0.0051125
+130	-29	0.03152
+131	-29	0.0050111
+132	-29	-0.048528
+133	-29	-0.20783
+134	-29	-0.3621
+135	-29	-0.37732
+136	-29	-0.27405
+137	-29	-0.10493
+138	-29	0.091935
+139	-29	0.19734
+140	-29	0.22549
+141	-29	0.17911
+142	-29	0.14791
+143	-29	0.18389
+144	-29	0.22545
+145	-29	0.34015
+146	-29	0.83203
+147	-29	1.2777
+148	-29	1.336
+149	-29	1.2763
+150	-29	1.1106
+151	-29	0.95455
+152	-29	1.2902
+153	-29	1.0119
+154	-29	0
+155	-29	0
+156	-29	0
+157	-29	0
+158	-29	0
+159	-29	0
+160	-29	0
+161	-29	0
+162	-29	0
+163	-29	0
+164	-29	0
+165	-29	0
+166	-29	0
+167	-29	0
+168	-29	0
+169	-29	0
+170	-29	0
+171	-29	0
+172	-29	0
+173	-29	0
+174	-29	0
+175	-29	0
+176	-29	0
+177	-29	0
+178	-29	0
+179	-29	0
+180	-29	0
+181	-29	0
+182	-29	0
+183	-29	0
+184	-29	0
+185	-29	0
+186	-29	0
+187	-29	0
+188	-29	0
+189	-29	0
+190	-29	0
+191	-29	0
+192	-29	0
+193	-29	0
+194	-29	0
+195	-29	0
+196	-29	0
+197	-29	0
+198	-29	0
+199	-29	0
+200	-29	0
+201	-29	0
+202	-29	0
+203	-29	0
+204	-29	0
+205	-29	0
+206	-29	0
+207	-29	0
+208	-29	0
+209	-29	0
+210	-29	0
+211	-29	0
+212	-29	0
+213	-29	0
+214	-29	0
+215	-29	0
+216	-29	0
+217	-29	0
+218	-29	0
+219	-29	0
+220	-29	0
+221	-29	0
+222	-29	0
+223	-29	0
+224	-29	0
+225	-29	0
+226	-29	0
+227	-29	0
+228	-29	0
+229	-29	0
+230	-29	0
+231	-29	0
+232	-29	0
+233	-29	0
+234	-29	0
+235	-29	0
+236	-29	0
+237	-29	0
+238	-29	0
+239	-29	0
+240	-29	0
+241	-29	0
+242	-29	0
+243	-29	0
+244	-29	0
+245	-29	0
+246	-29	0
+247	-29	0
+248	-29	0
+249	-29	0
+250	-29	0
+251	-29	0
+252	-29	0
+253	-29	0
+254	-29	0
+255	-29	0
+256	-29	0
+257	-29	0
+258	-29	0
+259	-29	0
+260	-29	0
+261	-29	0
+262	-29	0
+263	-29	0
+264	-29	0
+265	-29	0
+266	-29	0
+267	-29	0
+268	-29	0
+269	-29	0
+270	-29	0
+271	-29	0
+272	-29	0
+273	-29	0
+274	-29	0
+275	-29	0
+276	-29	0
+277	-29	0
+278	-29	0
+279	-29	0
+280	-29	0
+281	-29	0
+282	-29	0
+283	-29	0
+284	-29	0
+285	-29	0
+286	-29	0
+287	-29	0
+288	-29	0
+289	-29	-0.017282
+290	-29	-0.0041063
+291	-29	-0.045978
+292	-29	-0.14184
+293	-29	-0.3346
+294	-29	-0.61059
+295	-29	-0.97494
+296	-29	-1.2671
+297	-29	-1.3658
+298	-29	-1.253
+299	-29	-1.2979
+300	-29	-1.7676
+301	-29	-2.1485
+302	-29	-0.82847
+303	-29	-0.44897
+304	-29	-0.085842
+305	-29	0.094052
+306	-29	0.2097
+307	-29	0.22382
+308	-29	0.070596
+309	-29	-0.13153
+310	-29	-0.10307
+311	-29	-0.00061808
+312	-29	0
+313	-29	0
+314	-29	0
+315	-29	0
+316	-29	0
+317	-29	0
+318	-29	0
+319	-29	0
+320	-29	0
+321	-29	0
+322	-29	0
+323	-29	0
+324	-29	0
+325	-29	0
+326	-29	0
+327	-29	0
+328	-29	0
+329	-29	0
+330	-29	0
+331	-29	0
+332	-29	0
+333	-29	0
+334	-29	0
+335	-29	0
+336	-29	0
+337	-29	0
+338	-29	0
+339	-29	0
+340	-29	0
+341	-29	0
+342	-29	0
+343	-29	0
+344	-29	0
+345	-29	0
+346	-29	0
+347	-29	0
+348	-29	0
+349	-29	0
+350	-29	0
+351	-29	0
+352	-29	0
+353	-29	0
+354	-29	0
+355	-29	0
+356	-29	0
+357	-29	0
+358	-29	0
+359	-29	0
+360	-29	0
+0	-28.5	0
+1	-28.5	0
+2	-28.5	0
+3	-28.5	0
+4	-28.5	0
+5	-28.5	0
+6	-28.5	0
+7	-28.5	0
+8	-28.5	0
+9	-28.5	0
+10	-28.5	0
+11	-28.5	0
+12	-28.5	0
+13	-28.5	0
+14	-28.5	0
+15	-28.5	0
+16	-28.5	0
+17	-28.5	0.06469
+18	-28.5	0.11562
+19	-28.5	0.1473
+20	-28.5	0.17153
+21	-28.5	0.21711
+22	-28.5	0.26357
+23	-28.5	0.31803
+24	-28.5	0.24332
+25	-28.5	0.17584
+26	-28.5	0.17422
+27	-28.5	0.080926
+28	-28.5	0.23169
+29	-28.5	0.51596
+30	-28.5	0.54165
+31	-28.5	0.2432
+32	-28.5	0.098111
+33	-28.5	0
+34	-28.5	0
+35	-28.5	0
+36	-28.5	0
+37	-28.5	0
+38	-28.5	0
+39	-28.5	0
+40	-28.5	0
+41	-28.5	0
+42	-28.5	0
+43	-28.5	0
+44	-28.5	0
+45	-28.5	0
+46	-28.5	0
+47	-28.5	0
+48	-28.5	0
+49	-28.5	0
+50	-28.5	0
+51	-28.5	0
+52	-28.5	0
+53	-28.5	0
+54	-28.5	0
+55	-28.5	0
+56	-28.5	0
+57	-28.5	0
+58	-28.5	0
+59	-28.5	0
+60	-28.5	0
+61	-28.5	0
+62	-28.5	0
+63	-28.5	0
+64	-28.5	0
+65	-28.5	0
+66	-28.5	0
+67	-28.5	0
+68	-28.5	0
+69	-28.5	0
+70	-28.5	0
+71	-28.5	0
+72	-28.5	0
+73	-28.5	0
+74	-28.5	0
+75	-28.5	0
+76	-28.5	0
+77	-28.5	0
+78	-28.5	0
+79	-28.5	0
+80	-28.5	0
+81	-28.5	0
+82	-28.5	0
+83	-28.5	0
+84	-28.5	0
+85	-28.5	0
+86	-28.5	0
+87	-28.5	0
+88	-28.5	0
+89	-28.5	0
+90	-28.5	0
+91	-28.5	0
+92	-28.5	0
+93	-28.5	0
+94	-28.5	0
+95	-28.5	0
+96	-28.5	0
+97	-28.5	0
+98	-28.5	0
+99	-28.5	0
+100	-28.5	0
+101	-28.5	0
+102	-28.5	0
+103	-28.5	0
+104	-28.5	0
+105	-28.5	0
+106	-28.5	0
+107	-28.5	0
+108	-28.5	0
+109	-28.5	0
+110	-28.5	0
+111	-28.5	0
+112	-28.5	0
+113	-28.5	0
+114	-28.5	0
+115	-28.5	-0.066899
+116	-28.5	-0.15461
+117	-28.5	-0.17696
+118	-28.5	-0.13789
+119	-28.5	-0.19151
+120	-28.5	-0.23071
+121	-28.5	-0.24421
+122	-28.5	-0.30946
+123	-28.5	-0.45209
+124	-28.5	-0.54105
+125	-28.5	-0.48145
+126	-28.5	-0.36044
+127	-28.5	-0.23128
+128	-28.5	-0.15981
+129	-28.5	-0.093081
+130	-28.5	-0.057006
+131	-28.5	-0.031316
+132	-28.5	-0.076942
+133	-28.5	-0.26064
+134	-28.5	-0.40155
+135	-28.5	-0.34223
+136	-28.5	-0.24186
+137	-28.5	-0.077987
+138	-28.5	0.094245
+139	-28.5	0.20134
+140	-28.5	0.23602
+141	-28.5	0.1738
+142	-28.5	0.16362
+143	-28.5	0.19924
+144	-28.5	0.24072
+145	-28.5	0.38191
+146	-28.5	0.99777
+147	-28.5	1.4232
+148	-28.5	1.4975
+149	-28.5	1.2604
+150	-28.5	1.0713
+151	-28.5	1.04
+152	-28.5	1.5248
+153	-28.5	1.3864
+154	-28.5	0
+155	-28.5	0
+156	-28.5	0
+157	-28.5	0
+158	-28.5	0
+159	-28.5	0
+160	-28.5	0
+161	-28.5	0
+162	-28.5	0
+163	-28.5	0
+164	-28.5	0
+165	-28.5	0
+166	-28.5	0
+167	-28.5	0
+168	-28.5	0
+169	-28.5	0
+170	-28.5	0
+171	-28.5	0
+172	-28.5	0
+173	-28.5	0
+174	-28.5	0
+175	-28.5	0
+176	-28.5	0
+177	-28.5	0
+178	-28.5	0
+179	-28.5	0
+180	-28.5	0
+181	-28.5	0
+182	-28.5	0
+183	-28.5	0
+184	-28.5	0
+185	-28.5	0
+186	-28.5	0
+187	-28.5	0
+188	-28.5	0
+189	-28.5	0
+190	-28.5	0
+191	-28.5	0
+192	-28.5	0
+193	-28.5	0
+194	-28.5	0
+195	-28.5	0
+196	-28.5	0
+197	-28.5	0
+198	-28.5	0
+199	-28.5	0
+200	-28.5	0
+201	-28.5	0
+202	-28.5	0
+203	-28.5	0
+204	-28.5	0
+205	-28.5	0
+206	-28.5	0
+207	-28.5	0
+208	-28.5	0
+209	-28.5	0
+210	-28.5	0
+211	-28.5	0
+212	-28.5	0
+213	-28.5	0
+214	-28.5	0
+215	-28.5	0
+216	-28.5	0
+217	-28.5	0
+218	-28.5	0
+219	-28.5	0
+220	-28.5	0
+221	-28.5	0
+222	-28.5	0
+223	-28.5	0
+224	-28.5	0
+225	-28.5	0
+226	-28.5	0
+227	-28.5	0
+228	-28.5	0
+229	-28.5	0
+230	-28.5	0
+231	-28.5	0
+232	-28.5	0
+233	-28.5	0
+234	-28.5	0
+235	-28.5	0
+236	-28.5	0
+237	-28.5	0
+238	-28.5	0
+239	-28.5	0
+240	-28.5	0
+241	-28.5	0
+242	-28.5	0
+243	-28.5	0
+244	-28.5	0
+245	-28.5	0
+246	-28.5	0
+247	-28.5	0
+248	-28.5	0
+249	-28.5	0
+250	-28.5	0
+251	-28.5	0
+252	-28.5	0
+253	-28.5	0
+254	-28.5	0
+255	-28.5	0
+256	-28.5	0
+257	-28.5	0
+258	-28.5	0
+259	-28.5	0
+260	-28.5	0
+261	-28.5	0
+262	-28.5	0
+263	-28.5	0
+264	-28.5	0
+265	-28.5	0
+266	-28.5	0
+267	-28.5	0
+268	-28.5	0
+269	-28.5	0
+270	-28.5	0
+271	-28.5	0
+272	-28.5	0
+273	-28.5	0
+274	-28.5	0
+275	-28.5	0
+276	-28.5	0
+277	-28.5	0
+278	-28.5	0
+279	-28.5	0
+280	-28.5	0
+281	-28.5	0
+282	-28.5	0
+283	-28.5	0
+284	-28.5	0
+285	-28.5	0
+286	-28.5	0
+287	-28.5	0
+288	-28.5	0
+289	-28.5	-0.0032046
+290	-28.5	-4.4204e-05
+291	-28.5	-0.0067727
+292	-28.5	-0.12827
+293	-28.5	-0.33746
+294	-28.5	-0.73803
+295	-28.5	-1.1286
+296	-28.5	-1.3876
+297	-28.5	-1.2359
+298	-28.5	-1.1522
+299	-28.5	-1.2222
+300	-28.5	-1.9862
+301	-28.5	-2.2487
+302	-28.5	-0.77428
+303	-28.5	-0.39479
+304	-28.5	-0.023642
+305	-28.5	0.22364
+306	-28.5	0.34175
+307	-28.5	0.32382
+308	-28.5	0.16069
+309	-28.5	-0.042372
+310	-28.5	-0.099389
+311	-28.5	-0.026521
+312	-28.5	0
+313	-28.5	0
+314	-28.5	0
+315	-28.5	0
+316	-28.5	0
+317	-28.5	0
+318	-28.5	0
+319	-28.5	0
+320	-28.5	0
+321	-28.5	0
+322	-28.5	0
+323	-28.5	0
+324	-28.5	0
+325	-28.5	0
+326	-28.5	0
+327	-28.5	0
+328	-28.5	0
+329	-28.5	0
+330	-28.5	0
+331	-28.5	0
+332	-28.5	0
+333	-28.5	0
+334	-28.5	0
+335	-28.5	0
+336	-28.5	0
+337	-28.5	0
+338	-28.5	0
+339	-28.5	0
+340	-28.5	0
+341	-28.5	0
+342	-28.5	0
+343	-28.5	0
+344	-28.5	0
+345	-28.5	0
+346	-28.5	0
+347	-28.5	0
+348	-28.5	0
+349	-28.5	0
+350	-28.5	0
+351	-28.5	0
+352	-28.5	0
+353	-28.5	0
+354	-28.5	0
+355	-28.5	0
+356	-28.5	0
+357	-28.5	0
+358	-28.5	0
+359	-28.5	0
+360	-28.5	0
+0	-28	0
+1	-28	0
+2	-28	0
+3	-28	0
+4	-28	0
+5	-28	0
+6	-28	0
+7	-28	0
+8	-28	0
+9	-28	0
+10	-28	0
+11	-28	0
+12	-28	0
+13	-28	0
+14	-28	0
+15	-28	0.022764
+16	-28	0.051949
+17	-28	0.071581
+18	-28	0.099748
+19	-28	0.14811
+20	-28	0.16625
+21	-28	0.20376
+22	-28	0.25487
+23	-28	0.23054
+24	-28	0.18104
+25	-28	0.1861
+26	-28	0.16194
+27	-28	0.10576
+28	-28	0.314
+29	-28	0.48271
+30	-28	0.5328
+31	-28	0.20617
+32	-28	0.066649
+33	-28	0
+34	-28	0
+35	-28	0
+36	-28	0
+37	-28	0
+38	-28	0
+39	-28	0
+40	-28	0
+41	-28	0
+42	-28	0
+43	-28	0
+44	-28	0
+45	-28	0
+46	-28	0
+47	-28	0
+48	-28	0
+49	-28	0
+50	-28	0
+51	-28	0
+52	-28	0
+53	-28	0
+54	-28	0
+55	-28	0
+56	-28	0
+57	-28	0
+58	-28	0
+59	-28	0
+60	-28	0
+61	-28	0
+62	-28	0
+63	-28	0
+64	-28	0
+65	-28	0
+66	-28	0
+67	-28	0
+68	-28	0
+69	-28	0
+70	-28	0
+71	-28	0
+72	-28	0
+73	-28	0
+74	-28	0
+75	-28	0
+76	-28	0
+77	-28	0
+78	-28	0
+79	-28	0
+80	-28	0
+81	-28	0
+82	-28	0
+83	-28	0
+84	-28	0
+85	-28	0
+86	-28	0
+87	-28	0
+88	-28	0
+89	-28	0
+90	-28	0
+91	-28	0
+92	-28	0
+93	-28	0
+94	-28	0
+95	-28	0
+96	-28	0
+97	-28	0
+98	-28	0
+99	-28	0
+100	-28	0
+101	-28	0
+102	-28	0
+103	-28	0
+104	-28	0
+105	-28	0
+106	-28	0
+107	-28	0
+108	-28	0
+109	-28	0
+110	-28	0
+111	-28	0
+112	-28	0
+113	-28	0
+114	-28	-0.018512
+115	-28	-0.068596
+116	-28	-0.10382
+117	-28	-0.13619
+118	-28	-0.12371
+119	-28	-0.15744
+120	-28	-0.19405
+121	-28	-0.29263
+122	-28	-0.35771
+123	-28	-0.43888
+124	-28	-0.54299
+125	-28	-0.45983
+126	-28	-0.39009
+127	-28	-0.29354
+128	-28	-0.22995
+129	-28	-0.18149
+130	-28	-0.13806
+131	-28	-0.065222
+132	-28	-0.12295
+133	-28	-0.32443
+134	-28	-0.41197
+135	-28	-0.30714
+136	-28	-0.20967
+137	-28	-0.049195
+138	-28	0.096555
+139	-28	0.20534
+140	-28	0.24324
+141	-28	0.16862
+142	-28	0.17934
+143	-28	0.21496
+144	-28	0.27885
+145	-28	0.44097
+146	-28	1.1635
+147	-28	1.5687
+148	-28	1.6639
+149	-28	1.3013
+150	-28	1.0327
+151	-28	1.1042
+152	-28	1.5044
+153	-28	1.1392
+154	-28	0
+155	-28	0
+156	-28	0
+157	-28	0
+158	-28	0
+159	-28	0
+160	-28	0
+161	-28	0
+162	-28	0
+163	-28	0
+164	-28	0
+165	-28	0
+166	-28	0
+167	-28	0
+168	-28	0
+169	-28	0
+170	-28	0
+171	-28	0
+172	-28	0
+173	-28	0
+174	-28	0
+175	-28	0
+176	-28	0
+177	-28	0
+178	-28	0
+179	-28	0
+180	-28	0
+181	-28	0
+182	-28	0
+183	-28	0
+184	-28	0
+185	-28	0
+186	-28	0
+187	-28	0
+188	-28	0
+189	-28	0
+190	-28	0
+191	-28	0
+192	-28	0
+193	-28	0
+194	-28	0
+195	-28	0
+196	-28	0
+197	-28	0
+198	-28	0
+199	-28	0
+200	-28	0
+201	-28	0
+202	-28	0
+203	-28	0
+204	-28	0
+205	-28	0
+206	-28	0
+207	-28	0
+208	-28	0
+209	-28	0
+210	-28	0
+211	-28	0
+212	-28	0
+213	-28	0
+214	-28	0
+215	-28	0
+216	-28	0
+217	-28	0
+218	-28	0
+219	-28	0
+220	-28	0
+221	-28	0
+222	-28	0
+223	-28	0
+224	-28	0
+225	-28	0
+226	-28	0
+227	-28	0
+228	-28	0
+229	-28	0
+230	-28	0
+231	-28	0
+232	-28	0
+233	-28	0
+234	-28	0
+235	-28	0
+236	-28	0
+237	-28	0
+238	-28	0
+239	-28	0
+240	-28	0
+241	-28	0
+242	-28	0
+243	-28	0
+244	-28	0
+245	-28	0
+246	-28	0
+247	-28	0
+248	-28	0
+249	-28	0
+250	-28	0
+251	-28	0
+252	-28	0
+253	-28	0
+254	-28	0
+255	-28	0
+256	-28	0
+257	-28	0
+258	-28	0
+259	-28	0
+260	-28	0
+261	-28	0
+262	-28	0
+263	-28	0
+264	-28	0
+265	-28	0
+266	-28	0
+267	-28	0
+268	-28	0
+269	-28	0
+270	-28	0
+271	-28	0
+272	-28	0
+273	-28	0
+274	-28	0
+275	-28	0
+276	-28	0
+277	-28	0
+278	-28	0
+279	-28	0
+280	-28	0
+281	-28	0
+282	-28	0
+283	-28	0
+284	-28	0
+285	-28	0
+286	-28	0
+287	-28	0
+288	-28	0
+289	-28	0.00012767
+290	-28	0.0008071
+291	-28	0.0065842
+292	-28	-0.085451
+293	-28	-0.39979
+294	-28	-0.86548
+295	-28	-1.2822
+296	-28	-1.2577
+297	-28	-1.106
+298	-28	-1.0515
+299	-28	-1.4206
+300	-28	-2.2049
+301	-28	-2.3294
+302	-28	-0.7201
+303	-28	-0.34177
+304	-28	0.0318
+305	-28	0.43885
+306	-28	0.52739
+307	-28	0.40688
+308	-28	0.24015
+309	-28	0.039825
+310	-28	-0.089167
+311	-28	-0.035705
+312	-28	0
+313	-28	0
+314	-28	0
+315	-28	0
+316	-28	0
+317	-28	0
+318	-28	0
+319	-28	0
+320	-28	0
+321	-28	0
+322	-28	0
+323	-28	0
+324	-28	0
+325	-28	0
+326	-28	0
+327	-28	0
+328	-28	0
+329	-28	0
+330	-28	0
+331	-28	0
+332	-28	0
+333	-28	0
+334	-28	0
+335	-28	0
+336	-28	0
+337	-28	0
+338	-28	0
+339	-28	0
+340	-28	0
+341	-28	0
+342	-28	0
+343	-28	0
+344	-28	0
+345	-28	0
+346	-28	0
+347	-28	0
+348	-28	0
+349	-28	0
+350	-28	0
+351	-28	0
+352	-28	0
+353	-28	0
+354	-28	0
+355	-28	0
+356	-28	0
+357	-28	0
+358	-28	0
+359	-28	0
+360	-28	0
+0	-27.5	0
+1	-27.5	0
+2	-27.5	0
+3	-27.5	0
+4	-27.5	0
+5	-27.5	0
+6	-27.5	0
+7	-27.5	0
+8	-27.5	0
+9	-27.5	0
+10	-27.5	0
+11	-27.5	0
+12	-27.5	0
+13	-27.5	0
+14	-27.5	0
+15	-27.5	0.037594
+16	-27.5	0.081547
+17	-27.5	0.084364
+18	-27.5	0.094191
+19	-27.5	0.14133
+20	-27.5	0.16187
+21	-27.5	0.19042
+22	-27.5	0.23646
+23	-27.5	0.19397
+24	-27.5	0.18824
+25	-27.5	0.19191
+26	-27.5	0.18158
+27	-27.5	0.19803
+28	-27.5	0.41099
+29	-27.5	0.55068
+30	-27.5	0.49232
+31	-27.5	0.21457
+32	-27.5	0.025233
+33	-27.5	0
+34	-27.5	0
+35	-27.5	0
+36	-27.5	0
+37	-27.5	0
+38	-27.5	0
+39	-27.5	0
+40	-27.5	0
+41	-27.5	0
+42	-27.5	0
+43	-27.5	0
+44	-27.5	0
+45	-27.5	0
+46	-27.5	0
+47	-27.5	0
+48	-27.5	0
+49	-27.5	0
+50	-27.5	0
+51	-27.5	0
+52	-27.5	0
+53	-27.5	0
+54	-27.5	0
+55	-27.5	0
+56	-27.5	0
+57	-27.5	0
+58	-27.5	0
+59	-27.5	0
+60	-27.5	0
+61	-27.5	0
+62	-27.5	0
+63	-27.5	0
+64	-27.5	0
+65	-27.5	0
+66	-27.5	0
+67	-27.5	0
+68	-27.5	0
+69	-27.5	0
+70	-27.5	0
+71	-27.5	0
+72	-27.5	0
+73	-27.5	0
+74	-27.5	0
+75	-27.5	0
+76	-27.5	0
+77	-27.5	0
+78	-27.5	0
+79	-27.5	0
+80	-27.5	0
+81	-27.5	0
+82	-27.5	0
+83	-27.5	0
+84	-27.5	0
+85	-27.5	0
+86	-27.5	0
+87	-27.5	0
+88	-27.5	0
+89	-27.5	0
+90	-27.5	0
+91	-27.5	0
+92	-27.5	0
+93	-27.5	0
+94	-27.5	0
+95	-27.5	0
+96	-27.5	0
+97	-27.5	0
+98	-27.5	0
+99	-27.5	0
+100	-27.5	0
+101	-27.5	0
+102	-27.5	0
+103	-27.5	0
+104	-27.5	0
+105	-27.5	0
+106	-27.5	0
+107	-27.5	0
+108	-27.5	0
+109	-27.5	0
+110	-27.5	0
+111	-27.5	0
+112	-27.5	0
+113	-27.5	0
+114	-27.5	-0.017693
+115	-27.5	-0.062221
+116	-27.5	-0.074874
+117	-27.5	-0.093228
+118	-27.5	-0.13863
+119	-27.5	-0.14188
+120	-27.5	-0.21692
+121	-27.5	-0.36374
+122	-27.5	-0.42787
+123	-27.5	-0.46257
+124	-27.5	-0.52525
+125	-27.5	-0.50775
+126	-27.5	-0.44844
+127	-27.5	-0.3558
+128	-27.5	-0.32355
+129	-27.5	-0.27098
+130	-27.5	-0.20786
+131	-27.5	-0.17707
+132	-27.5	-0.19721
+133	-27.5	-0.38822
+134	-27.5	-0.42239
+135	-27.5	-0.27205
+136	-27.5	-0.17749
+137	-27.5	-0.017009
+138	-27.5	0.10007
+139	-27.5	0.20802
+140	-27.5	0.23806
+141	-27.5	0.21607
+142	-27.5	0.21369
+143	-27.5	0.23067
+144	-27.5	0.32317
+145	-27.5	0.50917
+146	-27.5	1.3293
+147	-27.5	1.7194
+148	-27.5	1.8302
+149	-27.5	1.4817
+150	-27.5	1.1822
+151	-27.5	1.164
+152	-27.5	1.299
+153	-27.5	0.84845
+154	-27.5	0
+155	-27.5	0
+156	-27.5	0
+157	-27.5	0
+158	-27.5	0
+159	-27.5	0
+160	-27.5	0
+161	-27.5	0
+162	-27.5	0
+163	-27.5	0
+164	-27.5	0
+165	-27.5	0
+166	-27.5	0
+167	-27.5	0
+168	-27.5	0
+169	-27.5	0
+170	-27.5	0
+171	-27.5	0
+172	-27.5	0
+173	-27.5	0
+174	-27.5	0
+175	-27.5	0
+176	-27.5	0
+177	-27.5	0
+178	-27.5	0
+179	-27.5	0
+180	-27.5	0
+181	-27.5	0
+182	-27.5	0
+183	-27.5	0
+184	-27.5	0
+185	-27.5	0
+186	-27.5	0
+187	-27.5	0
+188	-27.5	0
+189	-27.5	0
+190	-27.5	0
+191	-27.5	0
+192	-27.5	0
+193	-27.5	0
+194	-27.5	0
+195	-27.5	0
+196	-27.5	0
+197	-27.5	0
+198	-27.5	0
+199	-27.5	0
+200	-27.5	0
+201	-27.5	0
+202	-27.5	0
+203	-27.5	0
+204	-27.5	0
+205	-27.5	0
+206	-27.5	0
+207	-27.5	0
+208	-27.5	0
+209	-27.5	0
+210	-27.5	0
+211	-27.5	0
+212	-27.5	0
+213	-27.5	0
+214	-27.5	0
+215	-27.5	0
+216	-27.5	0
+217	-27.5	0
+218	-27.5	0
+219	-27.5	0
+220	-27.5	0
+221	-27.5	0
+222	-27.5	0
+223	-27.5	0
+224	-27.5	0
+225	-27.5	0
+226	-27.5	0
+227	-27.5	0
+228	-27.5	0
+229	-27.5	0
+230	-27.5	0
+231	-27.5	0
+232	-27.5	0
+233	-27.5	0
+234	-27.5	0
+235	-27.5	0
+236	-27.5	0
+237	-27.5	0
+238	-27.5	0
+239	-27.5	0
+240	-27.5	0
+241	-27.5	0
+242	-27.5	0
+243	-27.5	0
+244	-27.5	0
+245	-27.5	0
+246	-27.5	0
+247	-27.5	0
+248	-27.5	0
+249	-27.5	0
+250	-27.5	0
+251	-27.5	0
+252	-27.5	0
+253	-27.5	0
+254	-27.5	0
+255	-27.5	0
+256	-27.5	0
+257	-27.5	0
+258	-27.5	0
+259	-27.5	0
+260	-27.5	0
+261	-27.5	0
+262	-27.5	0
+263	-27.5	0
+264	-27.5	0
+265	-27.5	0
+266	-27.5	0
+267	-27.5	0
+268	-27.5	0
+269	-27.5	0
+270	-27.5	0
+271	-27.5	0
+272	-27.5	0
+273	-27.5	0
+274	-27.5	0
+275	-27.5	0
+276	-27.5	0
+277	-27.5	0
+278	-27.5	0
+279	-27.5	0
+280	-27.5	0
+281	-27.5	0
+282	-27.5	0
+283	-27.5	0
+284	-27.5	0
+285	-27.5	0
+286	-27.5	0
+287	-27.5	0
+288	-27.5	0
+289	-27.5	-0.00050829
+290	-27.5	-0.00076958
+291	-27.5	0.013434
+292	-27.5	-0.042082
+293	-27.5	-0.35642
+294	-27.5	-0.88391
+295	-27.5	-1.2765
+296	-27.5	-1.1278
+297	-27.5	-0.97614
+298	-27.5	-0.91495
+299	-27.5	-1.3074
+300	-27.5	-2.1859
+301	-27.5	-2.3875
+302	-27.5	-0.74391
+303	-27.5	-0.28904
+304	-27.5	0.25354
+305	-27.5	0.62679
+306	-27.5	0.71302
+307	-27.5	0.48995
+308	-27.5	0.31961
+309	-27.5	0.076642
+310	-27.5	-0.056497
+311	-27.5	-0.033237
+312	-27.5	0
+313	-27.5	0
+314	-27.5	0
+315	-27.5	0
+316	-27.5	0
+317	-27.5	0
+318	-27.5	0
+319	-27.5	0
+320	-27.5	0
+321	-27.5	0
+322	-27.5	0
+323	-27.5	0
+324	-27.5	0
+325	-27.5	0
+326	-27.5	0
+327	-27.5	0
+328	-27.5	0
+329	-27.5	0
+330	-27.5	0
+331	-27.5	0
+332	-27.5	0
+333	-27.5	0
+334	-27.5	0
+335	-27.5	0
+336	-27.5	0
+337	-27.5	0
+338	-27.5	0
+339	-27.5	0
+340	-27.5	0
+341	-27.5	0
+342	-27.5	0
+343	-27.5	0
+344	-27.5	0
+345	-27.5	0
+346	-27.5	0
+347	-27.5	0
+348	-27.5	0
+349	-27.5	0
+350	-27.5	0
+351	-27.5	0
+352	-27.5	0
+353	-27.5	0
+354	-27.5	0
+355	-27.5	0
+356	-27.5	0
+357	-27.5	0
+358	-27.5	0
+359	-27.5	0
+360	-27.5	0
+0	-27	0
+1	-27	0
+2	-27	0
+3	-27	0
+4	-27	0
+5	-27	0
+6	-27	0
+7	-27	0
+8	-27	0
+9	-27	0
+10	-27	0
+11	-27	0
+12	-27	0
+13	-27	0
+14	-27	0
+15	-27	0.020884
+16	-27	0.092606
+17	-27	0.10288
+18	-27	0.12345
+19	-27	0.14349
+20	-27	0.16829
+21	-27	0.17632
+22	-27	0.20691
+23	-27	0.20118
+24	-27	0.19545
+25	-27	0.19771
+26	-27	0.21993
+27	-27	0.29861
+28	-27	0.50798
+29	-27	0.50588
+30	-27	0.44843
+31	-27	0.20135
+32	-27	-0.020384
+33	-27	-0.011031
+34	-27	0
+35	-27	0
+36	-27	0
+37	-27	0
+38	-27	0
+39	-27	0
+40	-27	0
+41	-27	0
+42	-27	0
+43	-27	0
+44	-27	0
+45	-27	0
+46	-27	0
+47	-27	0
+48	-27	0
+49	-27	0
+50	-27	0
+51	-27	0
+52	-27	0
+53	-27	0
+54	-27	0
+55	-27	0
+56	-27	0
+57	-27	0
+58	-27	0
+59	-27	0
+60	-27	0
+61	-27	0
+62	-27	0
+63	-27	0
+64	-27	0
+65	-27	0
+66	-27	0
+67	-27	0
+68	-27	0
+69	-27	0
+70	-27	0
+71	-27	0
+72	-27	0
+73	-27	0
+74	-27	0
+75	-27	0
+76	-27	0
+77	-27	0
+78	-27	0
+79	-27	0
+80	-27	0
+81	-27	0
+82	-27	0
+83	-27	0
+84	-27	0
+85	-27	0
+86	-27	0
+87	-27	0
+88	-27	0
+89	-27	0
+90	-27	0
+91	-27	0
+92	-27	0
+93	-27	0
+94	-27	0
+95	-27	0
+96	-27	0
+97	-27	0
+98	-27	0
+99	-27	0
+100	-27	0
+101	-27	0
+102	-27	0
+103	-27	0
+104	-27	0
+105	-27	0
+106	-27	0
+107	-27	0
+108	-27	0
+109	-27	0
+110	-27	0
+111	-27	0
+112	-27	0
+113	-27	-0.020003
+114	-27	-0.014145
+115	-27	-0.055117
+116	-27	-0.08451
+117	-27	-0.077131
+118	-27	-0.19698
+119	-27	-0.19791
+120	-27	-0.32816
+121	-27	-0.43485
+122	-27	-0.47961
+123	-27	-0.50146
+124	-27	-0.6143
+125	-27	-0.61717
+126	-27	-0.55554
+127	-27	-0.44911
+128	-27	-0.47066
+129	-27	-0.42288
+130	-27	-0.32834
+131	-27	-0.3136
+132	-27	-0.25764
+133	-27	-0.45201
+134	-27	-0.46069
+135	-27	-0.27697
+136	-27	-0.1453
+137	-27	0.0029526
+138	-27	0.12029
+139	-27	0.21597
+140	-27	0.26948
+141	-27	0.27852
+142	-27	0.27587
+143	-27	0.27558
+144	-27	0.35997
+145	-27	0.59052
+146	-27	1.3651
+147	-27	1.8841
+148	-27	1.9495
+149	-27	1.6528
+150	-27	1.3512
+151	-27	1.2275
+152	-27	1.248
+153	-27	0.80522
+154	-27	0
+155	-27	0
+156	-27	0
+157	-27	0
+158	-27	0
+159	-27	0
+160	-27	0
+161	-27	0
+162	-27	0
+163	-27	0
+164	-27	0
+165	-27	0
+166	-27	0
+167	-27	0
+168	-27	0
+169	-27	0
+170	-27	0
+171	-27	0
+172	-27	0
+173	-27	0
+174	-27	0
+175	-27	0
+176	-27	0
+177	-27	0
+178	-27	0
+179	-27	0
+180	-27	0
+181	-27	0
+182	-27	0
+183	-27	0
+184	-27	0
+185	-27	0
+186	-27	0
+187	-27	0
+188	-27	0
+189	-27	0
+190	-27	0
+191	-27	0
+192	-27	0
+193	-27	0
+194	-27	0
+195	-27	0
+196	-27	0
+197	-27	0
+198	-27	0
+199	-27	0
+200	-27	0
+201	-27	0
+202	-27	0
+203	-27	0
+204	-27	0
+205	-27	0
+206	-27	0
+207	-27	0
+208	-27	0
+209	-27	0
+210	-27	0
+211	-27	0
+212	-27	0
+213	-27	0
+214	-27	0
+215	-27	0
+216	-27	0
+217	-27	0
+218	-27	0
+219	-27	0
+220	-27	0
+221	-27	0
+222	-27	0
+223	-27	0
+224	-27	0
+225	-27	0
+226	-27	0
+227	-27	0
+228	-27	0
+229	-27	0
+230	-27	0
+231	-27	0
+232	-27	0
+233	-27	0
+234	-27	0
+235	-27	0
+236	-27	0
+237	-27	0
+238	-27	0
+239	-27	0
+240	-27	0
+241	-27	0
+242	-27	0
+243	-27	0
+244	-27	0
+245	-27	0
+246	-27	0
+247	-27	0
+248	-27	0
+249	-27	0
+250	-27	0
+251	-27	0
+252	-27	0
+253	-27	0
+254	-27	0
+255	-27	0
+256	-27	0
+257	-27	0
+258	-27	0
+259	-27	0
+260	-27	0
+261	-27	0
+262	-27	0
+263	-27	0
+264	-27	0
+265	-27	0
+266	-27	0
+267	-27	0
+268	-27	0
+269	-27	0
+270	-27	0
+271	-27	0
+272	-27	0
+273	-27	0
+274	-27	0
+275	-27	0
+276	-27	0
+277	-27	0
+278	-27	0
+279	-27	0
+280	-27	0
+281	-27	0
+282	-27	0
+283	-27	0
+284	-27	0
+285	-27	0
+286	-27	0
+287	-27	0
+288	-27	0
+289	-27	-3.0633e-05
+290	-27	0.010387
+291	-27	0.029552
+292	-27	0.0052141
+293	-27	-0.32287
+294	-27	-0.80129
+295	-27	-1.1246
+296	-27	-0.9908
+297	-27	-0.85445
+298	-27	-0.70807
+299	-27	-1.1942
+300	-27	-2.0727
+301	-27	-2.2133
+302	-27	-0.802
+303	-27	-0.23631
+304	-27	0.47529
+305	-27	0.80253
+306	-27	0.89866
+307	-27	0.53541
+308	-27	0.37156
+309	-27	0.11346
+310	-27	-0.022516
+311	-27	-0.025766
+312	-27	0
+313	-27	0
+314	-27	0
+315	-27	0
+316	-27	0
+317	-27	0
+318	-27	0
+319	-27	0
+320	-27	0
+321	-27	0
+322	-27	0
+323	-27	0
+324	-27	0
+325	-27	0
+326	-27	0
+327	-27	0
+328	-27	0
+329	-27	0
+330	-27	0
+331	-27	0
+332	-27	0
+333	-27	0
+334	-27	0
+335	-27	0
+336	-27	0
+337	-27	0
+338	-27	0
+339	-27	0
+340	-27	0
+341	-27	0
+342	-27	0
+343	-27	0
+344	-27	0
+345	-27	0
+346	-27	0
+347	-27	0
+348	-27	0
+349	-27	0
+350	-27	0
+351	-27	0
+352	-27	0
+353	-27	0
+354	-27	0
+355	-27	0
+356	-27	0
+357	-27	0
+358	-27	0
+359	-27	0
+360	-27	0
+0	-26.5	0
+1	-26.5	0
+2	-26.5	0
+3	-26.5	0
+4	-26.5	0
+5	-26.5	0
+6	-26.5	0
+7	-26.5	0
+8	-26.5	0
+9	-26.5	0
+10	-26.5	0
+11	-26.5	0
+12	-26.5	0
+13	-26.5	0
+14	-26.5	0
+15	-26.5	0.014296
+16	-26.5	0.10173
+17	-26.5	0.13043
+18	-26.5	0.1638
+19	-26.5	0.15393
+20	-26.5	0.176
+21	-26.5	0.16863
+22	-26.5	0.24824
+23	-26.5	0.20838
+24	-26.5	0.20266
+25	-26.5	0.20352
+26	-26.5	0.25996
+27	-26.5	0.39919
+28	-26.5	0.60497
+29	-26.5	0.50103
+30	-26.5	0.39633
+31	-26.5	0.13852
+32	-26.5	-0.065588
+33	-26.5	-0.063314
+34	-26.5	0
+35	-26.5	0
+36	-26.5	0
+37	-26.5	0
+38	-26.5	0
+39	-26.5	0
+40	-26.5	0
+41	-26.5	0
+42	-26.5	0
+43	-26.5	0
+44	-26.5	0
+45	-26.5	0
+46	-26.5	0
+47	-26.5	0
+48	-26.5	0
+49	-26.5	0
+50	-26.5	0
+51	-26.5	0
+52	-26.5	0
+53	-26.5	0
+54	-26.5	0
+55	-26.5	0
+56	-26.5	0
+57	-26.5	0
+58	-26.5	0
+59	-26.5	0
+60	-26.5	0
+61	-26.5	0
+62	-26.5	0
+63	-26.5	0
+64	-26.5	0
+65	-26.5	0
+66	-26.5	0
+67	-26.5	0
+68	-26.5	0
+69	-26.5	0
+70	-26.5	0
+71	-26.5	0
+72	-26.5	0
+73	-26.5	0
+74	-26.5	0
+75	-26.5	0
+76	-26.5	0
+77	-26.5	0
+78	-26.5	0
+79	-26.5	0
+80	-26.5	0
+81	-26.5	0
+82	-26.5	0
+83	-26.5	0
+84	-26.5	0
+85	-26.5	0
+86	-26.5	0
+87	-26.5	0
+88	-26.5	0
+89	-26.5	0
+90	-26.5	0
+91	-26.5	0
+92	-26.5	0
+93	-26.5	0
+94	-26.5	0
+95	-26.5	0
+96	-26.5	0
+97	-26.5	0
+98	-26.5	0
+99	-26.5	0
+100	-26.5	0
+101	-26.5	0
+102	-26.5	0
+103	-26.5	0
+104	-26.5	0
+105	-26.5	0
+106	-26.5	0
+107	-26.5	0
+108	-26.5	0
+109	-26.5	0
+110	-26.5	0
+111	-26.5	0
+112	-26.5	0
+113	-26.5	-0.047191
+114	-26.5	-0.053004
+115	-26.5	-0.055931
+116	-26.5	-0.095448
+117	-26.5	-0.10191
+118	-26.5	-0.25533
+119	-26.5	-0.27163
+120	-26.5	-0.41873
+121	-26.5	-0.50596
+122	-26.5	-0.53134
+123	-26.5	-0.55361
+124	-26.5	-0.68236
+125	-26.5	-0.72658
+126	-26.5	-0.66111
+127	-26.5	-0.56464
+128	-26.5	-0.61776
+129	-26.5	-0.57479
+130	-26.5	-0.45316
+131	-26.5	-0.39461
+132	-26.5	-0.31808
+133	-26.5	-0.49869
+134	-26.5	-0.43141
+135	-26.5	-0.30202
+136	-26.5	-0.1145
+137	-26.5	0.019557
+138	-26.5	0.14051
+139	-26.5	0.23619
+140	-26.5	0.3375
+141	-26.5	0.34097
+142	-26.5	0.33804
+143	-26.5	0.32192
+144	-26.5	0.39677
+145	-26.5	0.67188
+146	-26.5	1.3262
+147	-26.5	1.7094
+148	-26.5	1.7884
+149	-26.5	1.7163
+150	-26.5	1.4392
+151	-26.5	1.3557
+152	-26.5	1.3922
+153	-26.5	0.68869
+154	-26.5	0
+155	-26.5	0
+156	-26.5	0
+157	-26.5	0
+158	-26.5	0
+159	-26.5	0
+160	-26.5	0
+161	-26.5	0
+162	-26.5	0
+163	-26.5	0
+164	-26.5	0
+165	-26.5	0
+166	-26.5	0
+167	-26.5	0
+168	-26.5	0
+169	-26.5	0
+170	-26.5	0
+171	-26.5	0
+172	-26.5	0
+173	-26.5	0
+174	-26.5	0
+175	-26.5	0
+176	-26.5	0
+177	-26.5	0
+178	-26.5	0
+179	-26.5	0
+180	-26.5	0
+181	-26.5	0
+182	-26.5	0
+183	-26.5	0
+184	-26.5	0
+185	-26.5	0
+186	-26.5	0
+187	-26.5	0
+188	-26.5	0
+189	-26.5	0
+190	-26.5	0
+191	-26.5	0
+192	-26.5	0
+193	-26.5	0
+194	-26.5	0
+195	-26.5	0
+196	-26.5	0
+197	-26.5	0
+198	-26.5	0
+199	-26.5	0
+200	-26.5	0
+201	-26.5	0
+202	-26.5	0
+203	-26.5	0
+204	-26.5	0
+205	-26.5	0
+206	-26.5	0
+207	-26.5	0
+208	-26.5	0
+209	-26.5	0
+210	-26.5	0
+211	-26.5	0
+212	-26.5	0
+213	-26.5	0
+214	-26.5	0
+215	-26.5	0
+216	-26.5	0
+217	-26.5	0
+218	-26.5	0
+219	-26.5	0
+220	-26.5	0
+221	-26.5	0
+222	-26.5	0
+223	-26.5	0
+224	-26.5	0
+225	-26.5	0
+226	-26.5	0
+227	-26.5	0
+228	-26.5	0
+229	-26.5	0
+230	-26.5	0
+231	-26.5	0
+232	-26.5	0
+233	-26.5	0
+234	-26.5	0
+235	-26.5	0
+236	-26.5	0
+237	-26.5	0
+238	-26.5	0
+239	-26.5	0
+240	-26.5	0
+241	-26.5	0
+242	-26.5	0
+243	-26.5	0
+244	-26.5	0
+245	-26.5	0
+246	-26.5	0
+247	-26.5	0
+248	-26.5	0
+249	-26.5	0
+250	-26.5	0
+251	-26.5	0
+252	-26.5	0
+253	-26.5	0
+254	-26.5	0
+255	-26.5	0
+256	-26.5	0
+257	-26.5	0
+258	-26.5	0
+259	-26.5	0
+260	-26.5	0
+261	-26.5	0
+262	-26.5	0
+263	-26.5	0
+264	-26.5	0
+265	-26.5	0
+266	-26.5	0
+267	-26.5	0
+268	-26.5	0
+269	-26.5	0
+270	-26.5	0
+271	-26.5	0
+272	-26.5	0
+273	-26.5	0
+274	-26.5	0
+275	-26.5	0
+276	-26.5	0
+277	-26.5	0
+278	-26.5	0
+279	-26.5	0
+280	-26.5	0
+281	-26.5	0
+282	-26.5	0
+283	-26.5	0
+284	-26.5	0
+285	-26.5	0
+286	-26.5	0
+287	-26.5	0
+288	-26.5	0
+289	-26.5	0
+290	-26.5	0.022175
+291	-26.5	0.045757
+292	-26.5	0.018081
+293	-26.5	-0.28748
+294	-26.5	-0.61761
+295	-26.5	-0.97271
+296	-26.5	-0.83892
+297	-26.5	-0.66674
+298	-26.5	-0.56346
+299	-26.5	-1.081
+300	-26.5	-1.9503
+301	-26.5	-1.8639
+302	-26.5	-0.84741
+303	-26.5	-0.016973
+304	-26.5	0.65382
+305	-26.5	0.9077
+306	-26.5	1.0843
+307	-26.5	0.55398
+308	-26.5	0.40321
+309	-26.5	0.1606
+310	-26.5	-0.00018505
+311	-26.5	-0.021235
+312	-26.5	0
+313	-26.5	0
+314	-26.5	0
+315	-26.5	0
+316	-26.5	0
+317	-26.5	0
+318	-26.5	0
+319	-26.5	0
+320	-26.5	0
+321	-26.5	0
+322	-26.5	0
+323	-26.5	0
+324	-26.5	0
+325	-26.5	0
+326	-26.5	0
+327	-26.5	0
+328	-26.5	0
+329	-26.5	0
+330	-26.5	0
+331	-26.5	0
+332	-26.5	0
+333	-26.5	0
+334	-26.5	0
+335	-26.5	0
+336	-26.5	0
+337	-26.5	0
+338	-26.5	0
+339	-26.5	0
+340	-26.5	0
+341	-26.5	0
+342	-26.5	0
+343	-26.5	0
+344	-26.5	0
+345	-26.5	0
+346	-26.5	0
+347	-26.5	0
+348	-26.5	0
+349	-26.5	0
+350	-26.5	0
+351	-26.5	0
+352	-26.5	0
+353	-26.5	0
+354	-26.5	0
+355	-26.5	0
+356	-26.5	0
+357	-26.5	0
+358	-26.5	0
+359	-26.5	0
+360	-26.5	0
+0	-26	0
+1	-26	0
+2	-26	0
+3	-26	0
+4	-26	0
+5	-26	0
+6	-26	0
+7	-26	0
+8	-26	0
+9	-26	0
+10	-26	0
+11	-26	0
+12	-26	0
+13	-26	0
+14	-26	0
+15	-26	0.026885
+16	-26	0.12819
+17	-26	0.16826
+18	-26	0.20415
+19	-26	0.17812
+20	-26	0.1837
+21	-26	0.17453
+22	-26	0.2378
+23	-26	0.23128
+24	-26	0.20986
+25	-26	0.20932
+26	-26	0.26257
+27	-26	0.36786
+28	-26	0.57426
+29	-26	0.50306
+30	-26	0.32853
+31	-26	0.075746
+32	-26	-0.11972
+33	-26	-0.054171
+34	-26	0
+35	-26	0
+36	-26	0
+37	-26	0
+38	-26	0
+39	-26	0
+40	-26	0
+41	-26	0
+42	-26	0
+43	-26	0
+44	-26	0
+45	-26	0
+46	-26	0
+47	-26	0
+48	-26	0
+49	-26	0
+50	-26	0
+51	-26	0
+52	-26	0
+53	-26	0
+54	-26	0
+55	-26	0
+56	-26	0
+57	-26	0
+58	-26	0
+59	-26	0
+60	-26	0
+61	-26	0
+62	-26	0
+63	-26	0
+64	-26	0
+65	-26	0
+66	-26	0
+67	-26	0
+68	-26	0
+69	-26	0
+70	-26	0
+71	-26	0
+72	-26	0
+73	-26	0
+74	-26	0
+75	-26	0
+76	-26	0
+77	-26	0
+78	-26	0
+79	-26	0
+80	-26	0
+81	-26	0
+82	-26	0
+83	-26	0
+84	-26	0
+85	-26	0
+86	-26	0
+87	-26	0
+88	-26	0
+89	-26	0
+90	-26	0
+91	-26	0
+92	-26	0
+93	-26	0
+94	-26	0
+95	-26	0
+96	-26	0
+97	-26	0
+98	-26	0
+99	-26	0
+100	-26	0
+101	-26	0
+102	-26	0
+103	-26	0
+104	-26	0
+105	-26	0
+106	-26	0
+107	-26	0
+108	-26	0
+109	-26	0
+110	-26	0
+111	-26	0
+112	-26	0
+113	-26	-0.011285
+114	-26	-0.023788
+115	-26	-0.070517
+116	-26	-0.10639
+117	-26	-0.13296
+118	-26	-0.31368
+119	-26	-0.38405
+120	-26	-0.49046
+121	-26	-0.57708
+122	-26	-0.58308
+123	-26	-0.60667
+124	-26	-0.7243
+125	-26	-0.83599
+126	-26	-0.76668
+127	-26	-0.68017
+128	-26	-0.76486
+129	-26	-0.72669
+130	-26	-0.57798
+131	-26	-0.45922
+132	-26	-0.37851
+133	-26	-0.44233
+134	-26	-0.38707
+135	-26	-0.31978
+136	-26	-0.10583
+137	-26	0.03616
+138	-26	0.16073
+139	-26	0.25641
+140	-26	0.40553
+141	-26	0.40342
+142	-26	0.40022
+143	-26	0.36236
+144	-26	0.43357
+145	-26	0.75323
+146	-26	1.2872
+147	-26	1.5347
+148	-26	1.6193
+149	-26	1.7212
+150	-26	1.4981
+151	-26	1.4985
+152	-26	1.591
+153	-26	0.71275
+154	-26	0
+155	-26	0
+156	-26	0
+157	-26	0
+158	-26	0
+159	-26	0
+160	-26	0
+161	-26	0
+162	-26	0
+163	-26	0
+164	-26	0
+165	-26	0
+166	-26	0
+167	-26	0
+168	-26	0
+169	-26	0
+170	-26	0
+171	-26	0
+172	-26	0
+173	-26	0
+174	-26	0
+175	-26	0
+176	-26	0
+177	-26	0
+178	-26	0
+179	-26	0
+180	-26	0
+181	-26	0
+182	-26	0
+183	-26	0
+184	-26	0
+185	-26	0
+186	-26	0
+187	-26	0
+188	-26	0
+189	-26	0
+190	-26	0
+191	-26	0
+192	-26	0
+193	-26	0
+194	-26	0
+195	-26	0
+196	-26	0
+197	-26	0
+198	-26	0
+199	-26	0
+200	-26	0
+201	-26	0
+202	-26	0
+203	-26	0
+204	-26	0
+205	-26	0
+206	-26	0
+207	-26	0
+208	-26	0
+209	-26	0
+210	-26	0
+211	-26	0
+212	-26	0
+213	-26	0
+214	-26	0
+215	-26	0
+216	-26	0
+217	-26	0
+218	-26	0
+219	-26	0
+220	-26	0
+221	-26	0
+222	-26	0
+223	-26	0
+224	-26	0
+225	-26	0
+226	-26	0
+227	-26	0
+228	-26	0
+229	-26	0
+230	-26	0
+231	-26	0
+232	-26	0
+233	-26	0
+234	-26	0
+235	-26	0
+236	-26	0
+237	-26	0
+238	-26	0
+239	-26	0
+240	-26	0
+241	-26	0
+242	-26	0
+243	-26	0
+244	-26	0
+245	-26	0
+246	-26	0
+247	-26	0
+248	-26	0
+249	-26	0
+250	-26	0
+251	-26	0
+252	-26	0
+253	-26	0
+254	-26	0
+255	-26	0
+256	-26	0
+257	-26	0
+258	-26	0
+259	-26	0
+260	-26	0
+261	-26	0
+262	-26	0
+263	-26	0
+264	-26	0
+265	-26	0
+266	-26	0
+267	-26	0
+268	-26	0
+269	-26	0
+270	-26	0
+271	-26	0
+272	-26	0
+273	-26	0
+274	-26	0
+275	-26	0
+276	-26	0
+277	-26	0
+278	-26	0
+279	-26	0
+280	-26	0
+281	-26	0
+282	-26	0
+283	-26	0
+284	-26	0
+285	-26	0
+286	-26	0
+287	-26	0
+288	-26	0
+289	-26	0
+290	-26	0.032125
+291	-26	0.049527
+292	-26	0.025919
+293	-26	-0.14355
+294	-26	-0.44929
+295	-26	-0.82083
+296	-26	-0.68703
+297	-26	-0.45956
+298	-26	-0.41885
+299	-26	-0.9678
+300	-26	-1.6358
+301	-26	-1.5145
+302	-26	-0.6572
+303	-26	0.15145
+304	-26	0.63922
+305	-26	0.89316
+306	-26	1.0682
+307	-26	0.57571
+308	-26	0.43487
+309	-26	0.20862
+310	-26	0.017718
+311	-26	-0.016397
+312	-26	0
+313	-26	0
+314	-26	0
+315	-26	0
+316	-26	0
+317	-26	0
+318	-26	0
+319	-26	0
+320	-26	0
+321	-26	0
+322	-26	0
+323	-26	0
+324	-26	0
+325	-26	0
+326	-26	0
+327	-26	0
+328	-26	0
+329	-26	0
+330	-26	0
+331	-26	0
+332	-26	0
+333	-26	0
+334	-26	0
+335	-26	0
+336	-26	0
+337	-26	0
+338	-26	0
+339	-26	0
+340	-26	0
+341	-26	0
+342	-26	0
+343	-26	0
+344	-26	0
+345	-26	0
+346	-26	0
+347	-26	0
+348	-26	0
+349	-26	0
+350	-26	0
+351	-26	0
+352	-26	0
+353	-26	0
+354	-26	0
+355	-26	0
+356	-26	0
+357	-26	0
+358	-26	0
+359	-26	0
+360	-26	0
+0	-25.5	0
+1	-25.5	0
+2	-25.5	0
+3	-25.5	0
+4	-25.5	0
+5	-25.5	0
+6	-25.5	0
+7	-25.5	0
+8	-25.5	0
+9	-25.5	0
+10	-25.5	0
+11	-25.5	0
+12	-25.5	0
+13	-25.5	0
+14	-25.5	0
+15	-25.5	0.041689
+16	-25.5	0.16928
+17	-25.5	0.27671
+18	-25.5	0.26804
+19	-25.5	0.22339
+20	-25.5	0.19141
+21	-25.5	0.18044
+22	-25.5	0.22735
+23	-25.5	0.29162
+24	-25.5	0.21707
+25	-25.5	0.21513
+26	-25.5	0.24297
+27	-25.5	0.34316
+28	-25.5	0.46278
+29	-25.5	0.54137
+30	-25.5	0.28828
+31	-25.5	0.012969
+32	-25.5	-0.19031
+33	-25.5	-0.035114
+34	-25.5	0
+35	-25.5	0
+36	-25.5	0
+37	-25.5	0
+38	-25.5	0
+39	-25.5	0
+40	-25.5	0
+41	-25.5	0
+42	-25.5	0
+43	-25.5	0
+44	-25.5	0
+45	-25.5	0.059165
+46	-25.5	0.052272
+47	-25.5	0
+48	-25.5	0
+49	-25.5	0
+50	-25.5	0
+51	-25.5	0
+52	-25.5	0
+53	-25.5	0
+54	-25.5	0
+55	-25.5	0
+56	-25.5	0
+57	-25.5	0
+58	-25.5	0
+59	-25.5	0
+60	-25.5	0
+61	-25.5	0
+62	-25.5	0
+63	-25.5	0
+64	-25.5	0
+65	-25.5	0
+66	-25.5	0
+67	-25.5	0
+68	-25.5	0
+69	-25.5	0
+70	-25.5	0
+71	-25.5	0
+72	-25.5	0
+73	-25.5	0
+74	-25.5	0
+75	-25.5	0
+76	-25.5	0
+77	-25.5	0
+78	-25.5	0
+79	-25.5	0
+80	-25.5	0
+81	-25.5	0
+82	-25.5	0
+83	-25.5	0
+84	-25.5	0
+85	-25.5	0
+86	-25.5	0
+87	-25.5	0
+88	-25.5	0
+89	-25.5	0
+90	-25.5	0
+91	-25.5	0
+92	-25.5	0
+93	-25.5	0
+94	-25.5	0
+95	-25.5	0
+96	-25.5	0
+97	-25.5	0
+98	-25.5	0
+99	-25.5	0
+100	-25.5	0
+101	-25.5	0
+102	-25.5	0
+103	-25.5	0
+104	-25.5	0
+105	-25.5	0
+106	-25.5	0
+107	-25.5	0
+108	-25.5	0
+109	-25.5	0
+110	-25.5	0
+111	-25.5	0
+112	-25.5	0
+113	-25.5	0
+114	-25.5	-0.054527
+115	-25.5	-0.086503
+116	-25.5	-0.1202
+117	-25.5	-0.18314
+118	-25.5	-0.36713
+119	-25.5	-0.47978
+120	-25.5	-0.56142
+121	-25.5	-0.63919
+122	-25.5	-0.63482
+123	-25.5	-0.65973
+124	-25.5	-0.76624
+125	-25.5	-0.9454
+126	-25.5	-0.87225
+127	-25.5	-0.79499
+128	-25.5	-0.89469
+129	-25.5	-0.86719
+130	-25.5	-0.63083
+131	-25.5	-0.51477
+132	-25.5	-0.43895
+133	-25.5	-0.36531
+134	-25.5	-0.33562
+135	-25.5	-0.27544
+136	-25.5	-0.12324
+137	-25.5	0.052764
+138	-25.5	0.18095
+139	-25.5	0.30154
+140	-25.5	0.47355
+141	-25.5	0.46587
+142	-25.5	0.4624
+143	-25.5	0.4028
+144	-25.5	0.44867
+145	-25.5	0.80133
+146	-25.5	1.1097
+147	-25.5	1.3283
+148	-25.5	1.4502
+149	-25.5	1.4962
+150	-25.5	1.3777
+151	-25.5	1.6673
+152	-25.5	1.6988
+153	-25.5	0.8845
+154	-25.5	0
+155	-25.5	0
+156	-25.5	0
+157	-25.5	0
+158	-25.5	0
+159	-25.5	0
+160	-25.5	0
+161	-25.5	0
+162	-25.5	0
+163	-25.5	0
+164	-25.5	0
+165	-25.5	0
+166	-25.5	0
+167	-25.5	0
+168	-25.5	0
+169	-25.5	0
+170	-25.5	0
+171	-25.5	0
+172	-25.5	0
+173	-25.5	0
+174	-25.5	0
+175	-25.5	0
+176	-25.5	0
+177	-25.5	0
+178	-25.5	0
+179	-25.5	0
+180	-25.5	0
+181	-25.5	0
+182	-25.5	0
+183	-25.5	0
+184	-25.5	0
+185	-25.5	0
+186	-25.5	0
+187	-25.5	0
+188	-25.5	0
+189	-25.5	0
+190	-25.5	0
+191	-25.5	0
+192	-25.5	0
+193	-25.5	0
+194	-25.5	0
+195	-25.5	0
+196	-25.5	0
+197	-25.5	0
+198	-25.5	0
+199	-25.5	0
+200	-25.5	0
+201	-25.5	0
+202	-25.5	0
+203	-25.5	0
+204	-25.5	0
+205	-25.5	0
+206	-25.5	0
+207	-25.5	0
+208	-25.5	0
+209	-25.5	0
+210	-25.5	0
+211	-25.5	0
+212	-25.5	0
+213	-25.5	0
+214	-25.5	0
+215	-25.5	0
+216	-25.5	0
+217	-25.5	0
+218	-25.5	0
+219	-25.5	0
+220	-25.5	0
+221	-25.5	0
+222	-25.5	0
+223	-25.5	0
+224	-25.5	0
+225	-25.5	0
+226	-25.5	0
+227	-25.5	0
+228	-25.5	0
+229	-25.5	0
+230	-25.5	0
+231	-25.5	0
+232	-25.5	0
+233	-25.5	0
+234	-25.5	0
+235	-25.5	0
+236	-25.5	0
+237	-25.5	0
+238	-25.5	0
+239	-25.5	0
+240	-25.5	0
+241	-25.5	0
+242	-25.5	0
+243	-25.5	0
+244	-25.5	0
+245	-25.5	0
+246	-25.5	0
+247	-25.5	0
+248	-25.5	0
+249	-25.5	0
+250	-25.5	0
+251	-25.5	0
+252	-25.5	0
+253	-25.5	0
+254	-25.5	0
+255	-25.5	0
+256	-25.5	0
+257	-25.5	0
+258	-25.5	0
+259	-25.5	0
+260	-25.5	0
+261	-25.5	0
+262	-25.5	0
+263	-25.5	0
+264	-25.5	0
+265	-25.5	0
+266	-25.5	0
+267	-25.5	0
+268	-25.5	0
+269	-25.5	0
+270	-25.5	0
+271	-25.5	0
+272	-25.5	0
+273	-25.5	0
+274	-25.5	0
+275	-25.5	0
+276	-25.5	0
+277	-25.5	0
+278	-25.5	0
+279	-25.5	0
+280	-25.5	0
+281	-25.5	0
+282	-25.5	0
+283	-25.5	0
+284	-25.5	0
+285	-25.5	0
+286	-25.5	0
+287	-25.5	0
+288	-25.5	0
+289	-25.5	0
+290	-25.5	0.040858
+291	-25.5	0.04699
+292	-25.5	0.021836
+293	-25.5	-0.078844
+294	-25.5	-0.28098
+295	-25.5	-0.66894
+296	-25.5	-0.53515
+297	-25.5	-0.25238
+298	-25.5	-0.27425
+299	-25.5	-0.8546
+300	-25.5	-1.3213
+301	-25.5	-1.1651
+302	-25.5	-0.46699
+303	-25.5	0.3192
+304	-25.5	0.62462
+305	-25.5	0.87861
+306	-25.5	0.93491
+307	-25.5	0.59745
+308	-25.5	0.46652
+309	-25.5	0.25138
+310	-25.5	0.036615
+311	-25.5	-0.011151
+312	-25.5	-0.0017916
+313	-25.5	0
+314	-25.5	0
+315	-25.5	0
+316	-25.5	0
+317	-25.5	0
+318	-25.5	0
+319	-25.5	0
+320	-25.5	0
+321	-25.5	0
+322	-25.5	0
+323	-25.5	0
+324	-25.5	0
+325	-25.5	0
+326	-25.5	0
+327	-25.5	0
+328	-25.5	0
+329	-25.5	0
+330	-25.5	0
+331	-25.5	0
+332	-25.5	0
+333	-25.5	0
+334	-25.5	0
+335	-25.5	0
+336	-25.5	0
+337	-25.5	0
+338	-25.5	0
+339	-25.5	0
+340	-25.5	0
+341	-25.5	0
+342	-25.5	0
+343	-25.5	0
+344	-25.5	0
+345	-25.5	0
+346	-25.5	0
+347	-25.5	0
+348	-25.5	0
+349	-25.5	0
+350	-25.5	0
+351	-25.5	0
+352	-25.5	0
+353	-25.5	0
+354	-25.5	0
+355	-25.5	0
+356	-25.5	0
+357	-25.5	0
+358	-25.5	0
+359	-25.5	0
+360	-25.5	0
+0	-25	0
+1	-25	0
+2	-25	0
+3	-25	0
+4	-25	0
+5	-25	0
+6	-25	0
+7	-25	0
+8	-25	0
+9	-25	0
+10	-25	0
+11	-25	0
+12	-25	0
+13	-25	0
+14	-25	0
+15	-25	0.094982
+16	-25	0.27565
+17	-25	0.39515
+18	-25	0.34521
+19	-25	0.26891
+20	-25	0.21667
+21	-25	0.25813
+22	-25	0.30036
+23	-25	0.35197
+24	-25	0.26426
+25	-25	0.22093
+26	-25	0.22337
+27	-25	0.32356
+28	-25	0.44318
+29	-25	0.48892
+30	-25	0.20779
+31	-25	-0.046249
+32	-25	-0.23723
+33	-25	-0.379
+34	-25	-0.39319
+35	-25	0
+36	-25	0
+37	-25	0
+38	-25	0
+39	-25	0
+40	-25	0
+41	-25	0
+42	-25	0
+43	-25	0
+44	-25	0.11625
+45	-25	0.29042
+46	-25	0.16888
+47	-25	-0.023477
+48	-25	0
+49	-25	0
+50	-25	0
+51	-25	0
+52	-25	0
+53	-25	0
+54	-25	0
+55	-25	0
+56	-25	0
+57	-25	0
+58	-25	0
+59	-25	0
+60	-25	0
+61	-25	0
+62	-25	0
+63	-25	0
+64	-25	0
+65	-25	0
+66	-25	0
+67	-25	0
+68	-25	0
+69	-25	0
+70	-25	0
+71	-25	0
+72	-25	0
+73	-25	0
+74	-25	0
+75	-25	0
+76	-25	0
+77	-25	0
+78	-25	0
+79	-25	0
+80	-25	0
+81	-25	0
+82	-25	0
+83	-25	0
+84	-25	0
+85	-25	0
+86	-25	0
+87	-25	0
+88	-25	0
+89	-25	0
+90	-25	0
+91	-25	0
+92	-25	0
+93	-25	0
+94	-25	0
+95	-25	0
+96	-25	0
+97	-25	0
+98	-25	0
+99	-25	0
+100	-25	0
+101	-25	0
+102	-25	0
+103	-25	0
+104	-25	0
+105	-25	0
+106	-25	0
+107	-25	0
+108	-25	0
+109	-25	0
+110	-25	0
+111	-25	0
+112	-25	0
+113	-25	-0.064917
+114	-25	-0.13398
+115	-25	-0.10596
+116	-25	-0.14949
+117	-25	-0.23461
+118	-25	-0.46071
+119	-25	-0.5681
+120	-25	-0.63106
+121	-25	-0.69093
+122	-25	-0.68655
+123	-25	-0.69311
+124	-25	-0.82227
+125	-25	-1.0139
+126	-25	-0.96353
+127	-25	-0.90856
+128	-25	-1.0092
+129	-25	-0.96251
+130	-25	-0.6378
+131	-25	-0.50432
+132	-25	-0.35373
+133	-25	-0.28828
+134	-25	-0.27908
+135	-25	-0.22499
+136	-25	-0.14241
+137	-25	0.059393
+138	-25	0.20117
+139	-25	0.35471
+140	-25	0.53665
+141	-25	0.52832
+142	-25	0.52458
+143	-25	0.44324
+144	-25	0.44449
+145	-25	0.75385
+146	-25	0.98122
+147	-25	1.1148
+148	-25	1.2812
+149	-25	1.2265
+150	-25	1.3359
+151	-25	1.7865
+152	-25	1.5633
+153	-25	0.1511
+154	-25	0
+155	-25	0
+156	-25	0
+157	-25	0
+158	-25	0
+159	-25	0
+160	-25	0
+161	-25	0
+162	-25	0
+163	-25	0
+164	-25	0
+165	-25	0
+166	-25	0
+167	-25	0
+168	-25	0
+169	-25	0
+170	-25	0
+171	-25	0
+172	-25	0
+173	-25	0
+174	-25	0
+175	-25	0
+176	-25	0
+177	-25	0
+178	-25	0
+179	-25	0
+180	-25	0
+181	-25	0
+182	-25	0
+183	-25	0
+184	-25	0
+185	-25	0
+186	-25	0
+187	-25	0
+188	-25	0
+189	-25	0
+190	-25	0
+191	-25	0
+192	-25	0
+193	-25	0
+194	-25	0
+195	-25	0
+196	-25	0
+197	-25	0
+198	-25	0
+199	-25	0
+200	-25	0
+201	-25	0
+202	-25	0
+203	-25	0
+204	-25	0
+205	-25	0
+206	-25	0
+207	-25	0
+208	-25	0
+209	-25	0
+210	-25	0
+211	-25	0
+212	-25	0
+213	-25	0
+214	-25	0
+215	-25	0
+216	-25	0
+217	-25	0
+218	-25	0
+219	-25	0
+220	-25	0
+221	-25	0
+222	-25	0
+223	-25	0
+224	-25	0
+225	-25	0
+226	-25	0
+227	-25	0
+228	-25	0
+229	-25	0
+230	-25	0
+231	-25	0
+232	-25	0
+233	-25	0
+234	-25	0
+235	-25	0
+236	-25	0
+237	-25	0
+238	-25	0
+239	-25	0
+240	-25	0
+241	-25	0
+242	-25	0
+243	-25	0
+244	-25	0
+245	-25	0
+246	-25	0
+247	-25	0
+248	-25	0
+249	-25	0
+250	-25	0
+251	-25	0
+252	-25	0
+253	-25	0
+254	-25	0
+255	-25	0
+256	-25	0
+257	-25	0
+258	-25	0
+259	-25	0
+260	-25	0
+261	-25	0
+262	-25	0
+263	-25	0
+264	-25	0
+265	-25	0
+266	-25	0
+267	-25	0
+268	-25	0
+269	-25	0
+270	-25	0
+271	-25	0
+272	-25	0
+273	-25	0
+274	-25	0
+275	-25	0
+276	-25	0
+277	-25	0
+278	-25	0
+279	-25	0
+280	-25	0
+281	-25	0
+282	-25	0
+283	-25	0
+284	-25	0
+285	-25	0
+286	-25	0
+287	-25	0
+288	-25	0
+289	-25	0
+290	-25	0.050549
+291	-25	0.044072
+292	-25	0.016367
+293	-25	-0.017638
+294	-25	-0.13889
+295	-25	-0.51706
+296	-25	-0.33261
+297	-25	-0.055605
+298	-25	-0.12964
+299	-25	-0.7414
+300	-25	-1.0068
+301	-25	-0.81567
+302	-25	-0.27679
+303	-25	0.34997
+304	-25	0.61002
+305	-25	0.86407
+306	-25	0.80165
+307	-25	0.71848
+308	-25	0.48851
+309	-25	0.27572
+310	-25	0.05683
+311	-25	0.0004228
+312	-25	-0.011862
+313	-25	0.00047003
+314	-25	0
+315	-25	0
+316	-25	0
+317	-25	0
+318	-25	0
+319	-25	0
+320	-25	0
+321	-25	0
+322	-25	0
+323	-25	0
+324	-25	0
+325	-25	0
+326	-25	0
+327	-25	0
+328	-25	0
+329	-25	0
+330	-25	0
+331	-25	0
+332	-25	0
+333	-25	0
+334	-25	0
+335	-25	0
+336	-25	0
+337	-25	0
+338	-25	0
+339	-25	0
+340	-25	0
+341	-25	0
+342	-25	0
+343	-25	0
+344	-25	0
+345	-25	0
+346	-25	0
+347	-25	0
+348	-25	0
+349	-25	0
+350	-25	0
+351	-25	0
+352	-25	0
+353	-25	0
+354	-25	0
+355	-25	0
+356	-25	0
+357	-25	0
+358	-25	0
+359	-25	0
+360	-25	0
+0	-24.5	0
+1	-24.5	0
+2	-24.5	0
+3	-24.5	0
+4	-24.5	0
+5	-24.5	0
+6	-24.5	0
+7	-24.5	0
+8	-24.5	0
+9	-24.5	0
+10	-24.5	0
+11	-24.5	0
+12	-24.5	0
+13	-24.5	0
+14	-24.5	0
+15	-24.5	0.1588
+16	-24.5	0.39769
+17	-24.5	0.5595
+18	-24.5	0.43982
+19	-24.5	0.31453
+20	-24.5	0.27039
+21	-24.5	0.2889
+22	-24.5	0.36154
+23	-24.5	0.41231
+24	-24.5	0.32033
+25	-24.5	0.22307
+26	-24.5	0.20377
+27	-24.5	0.30396
+28	-24.5	0.42358
+29	-24.5	0.38668
+30	-24.5	0.12751
+31	-24.5	-0.099445
+32	-24.5	-0.33211
+33	-24.5	-0.72656
+34	-24.5	-0.91989
+35	-24.5	-0.35352
+36	-24.5	0
+37	-24.5	0
+38	-24.5	0
+39	-24.5	0
+40	-24.5	0
+41	-24.5	0
+42	-24.5	0
+43	-24.5	0
+44	-24.5	0.15678
+45	-24.5	0.22967
+46	-24.5	0.0055243
+47	-24.5	-0.13001
+48	-24.5	0
+49	-24.5	0
+50	-24.5	0
+51	-24.5	0
+52	-24.5	0
+53	-24.5	0
+54	-24.5	0
+55	-24.5	0
+56	-24.5	0
+57	-24.5	0
+58	-24.5	0
+59	-24.5	0
+60	-24.5	0
+61	-24.5	0
+62	-24.5	0
+63	-24.5	0
+64	-24.5	0
+65	-24.5	0
+66	-24.5	0
+67	-24.5	0
+68	-24.5	0
+69	-24.5	0
+70	-24.5	0
+71	-24.5	0
+72	-24.5	0
+73	-24.5	0
+74	-24.5	0
+75	-24.5	0
+76	-24.5	0
+77	-24.5	0
+78	-24.5	0
+79	-24.5	0
+80	-24.5	0
+81	-24.5	0
+82	-24.5	0
+83	-24.5	0
+84	-24.5	0
+85	-24.5	0
+86	-24.5	0
+87	-24.5	0
+88	-24.5	0
+89	-24.5	0
+90	-24.5	0
+91	-24.5	0
+92	-24.5	0
+93	-24.5	0
+94	-24.5	0
+95	-24.5	0
+96	-24.5	0
+97	-24.5	0
+98	-24.5	0
+99	-24.5	0
+100	-24.5	0
+101	-24.5	0
+102	-24.5	0
+103	-24.5	0
+104	-24.5	0
+105	-24.5	0
+106	-24.5	0
+107	-24.5	0
+108	-24.5	0
+109	-24.5	0
+110	-24.5	0
+111	-24.5	0
+112	-24.5	0
+113	-24.5	-0.01147
+114	-24.5	-0.18028
+115	-24.5	-0.1301
+116	-24.5	-0.1797
+117	-24.5	-0.28608
+118	-24.5	-0.54512
+119	-24.5	-0.65642
+120	-24.5	-0.70071
+121	-24.5	-0.6861
+122	-24.5	-0.70826
+123	-24.5	-0.70442
+124	-24.5	-0.88124
+125	-24.5	-1.0518
+126	-24.5	-1.0388
+127	-24.5	-1.0221
+128	-24.5	-1.1228
+129	-24.5	-1.0196
+130	-24.5	-0.64476
+131	-24.5	-0.49386
+132	-24.5	-0.25928
+133	-24.5	-0.21126
+134	-24.5	-0.21419
+135	-24.5	-0.16845
+136	-24.5	-0.11436
+137	-24.5	0.041991
+138	-24.5	0.22003
+139	-24.5	0.40116
+140	-24.5	0.57368
+141	-24.5	0.59077
+142	-24.5	0.56542
+143	-24.5	0.48368
+144	-24.5	0.44031
+145	-24.5	0.70637
+146	-24.5	0.84867
+147	-24.5	0.98006
+148	-24.5	1.0812
+149	-24.5	1.106
+150	-24.5	1.435
+151	-24.5	1.8202
+152	-24.5	0.88105
+153	-24.5	0.036848
+154	-24.5	0
+155	-24.5	0
+156	-24.5	0
+157	-24.5	0
+158	-24.5	0
+159	-24.5	0
+160	-24.5	0
+161	-24.5	0
+162	-24.5	0
+163	-24.5	0
+164	-24.5	0
+165	-24.5	0
+166	-24.5	0
+167	-24.5	0
+168	-24.5	0
+169	-24.5	0
+170	-24.5	0
+171	-24.5	0
+172	-24.5	0
+173	-24.5	0
+174	-24.5	0
+175	-24.5	0
+176	-24.5	0
+177	-24.5	0
+178	-24.5	0
+179	-24.5	0
+180	-24.5	0
+181	-24.5	0
+182	-24.5	0
+183	-24.5	0
+184	-24.5	0
+185	-24.5	0
+186	-24.5	0
+187	-24.5	0
+188	-24.5	0
+189	-24.5	0
+190	-24.5	0
+191	-24.5	0
+192	-24.5	0
+193	-24.5	0
+194	-24.5	0
+195	-24.5	0
+196	-24.5	0
+197	-24.5	0
+198	-24.5	0
+199	-24.5	0
+200	-24.5	0
+201	-24.5	0
+202	-24.5	0
+203	-24.5	0
+204	-24.5	0
+205	-24.5	0
+206	-24.5	0
+207	-24.5	0
+208	-24.5	0
+209	-24.5	0
+210	-24.5	0
+211	-24.5	0
+212	-24.5	0
+213	-24.5	0
+214	-24.5	0
+215	-24.5	0
+216	-24.5	0
+217	-24.5	0
+218	-24.5	0
+219	-24.5	0
+220	-24.5	0
+221	-24.5	0
+222	-24.5	0
+223	-24.5	0
+224	-24.5	0
+225	-24.5	0
+226	-24.5	0
+227	-24.5	0
+228	-24.5	0
+229	-24.5	0
+230	-24.5	0
+231	-24.5	0
+232	-24.5	0
+233	-24.5	0
+234	-24.5	0
+235	-24.5	0
+236	-24.5	0
+237	-24.5	0
+238	-24.5	0
+239	-24.5	0
+240	-24.5	0
+241	-24.5	0
+242	-24.5	0
+243	-24.5	0
+244	-24.5	0
+245	-24.5	0
+246	-24.5	0
+247	-24.5	0
+248	-24.5	0
+249	-24.5	0
+250	-24.5	0
+251	-24.5	0
+252	-24.5	0
+253	-24.5	0
+254	-24.5	0
+255	-24.5	0
+256	-24.5	0
+257	-24.5	0
+258	-24.5	0
+259	-24.5	0
+260	-24.5	0
+261	-24.5	0
+262	-24.5	0
+263	-24.5	0
+264	-24.5	0
+265	-24.5	0
+266	-24.5	0
+267	-24.5	0
+268	-24.5	0
+269	-24.5	0
+270	-24.5	0
+271	-24.5	0
+272	-24.5	0
+273	-24.5	0
+274	-24.5	0
+275	-24.5	0
+276	-24.5	0
+277	-24.5	0
+278	-24.5	0
+279	-24.5	0
+280	-24.5	0
+281	-24.5	0
+282	-24.5	0
+283	-24.5	0
+284	-24.5	0
+285	-24.5	0
+286	-24.5	0
+287	-24.5	0
+288	-24.5	0
+289	-24.5	0
+290	-24.5	0.049133
+291	-24.5	0.046759
+292	-24.5	0.016805
+293	-24.5	-0.010262
+294	-24.5	-0.10378
+295	-24.5	-0.35688
+296	-24.5	-0.12563
+297	-24.5	0.088969
+298	-24.5	0.014969
+299	-24.5	-0.51316
+300	-24.5	-0.69234
+301	-24.5	-0.46626
+302	-24.5	-0.049305
+303	-24.5	0.33537
+304	-24.5	0.59542
+305	-24.5	0.84953
+306	-24.5	0.66838
+307	-24.5	1.5387
+308	-24.5	0.97192
+309	-24.5	0.26746
+310	-24.5	0.077576
+311	-24.5	-0.016737
+312	-24.5	-0.021529
+313	-24.5	0.051927
+314	-24.5	0.049563
+315	-24.5	0
+316	-24.5	0
+317	-24.5	0
+318	-24.5	0
+319	-24.5	0
+320	-24.5	0
+321	-24.5	0
+322	-24.5	0
+323	-24.5	0
+324	-24.5	0
+325	-24.5	0
+326	-24.5	0
+327	-24.5	0
+328	-24.5	0
+329	-24.5	0
+330	-24.5	0
+331	-24.5	0
+332	-24.5	0
+333	-24.5	0
+334	-24.5	0
+335	-24.5	0
+336	-24.5	0
+337	-24.5	0
+338	-24.5	0
+339	-24.5	0
+340	-24.5	0
+341	-24.5	0
+342	-24.5	0
+343	-24.5	0
+344	-24.5	0
+345	-24.5	0
+346	-24.5	0
+347	-24.5	0
+348	-24.5	0
+349	-24.5	0
+350	-24.5	0
+351	-24.5	0
+352	-24.5	0
+353	-24.5	0
+354	-24.5	0
+355	-24.5	0
+356	-24.5	0
+357	-24.5	0
+358	-24.5	0
+359	-24.5	0
+360	-24.5	0
+0	-24	0
+1	-24	0
+2	-24	0
+3	-24	0
+4	-24	0
+5	-24	0
+6	-24	0
+7	-24	0
+8	-24	0
+9	-24	0
+10	-24	0
+11	-24	0
+12	-24	0
+13	-24	0
+14	-24	0
+15	-24	0.27641
+16	-24	0.56419
+17	-24	0.80404
+18	-24	0.59619
+19	-24	0.4072
+20	-24	0.32444
+21	-24	0.30831
+22	-24	0.38095
+23	-24	0.4019
+24	-24	0.32447
+25	-24	0.22721
+26	-24	0.18417
+27	-24	0.28436
+28	-24	0.33018
+29	-24	0.2809
+30	-24	0.07155
+31	-24	-0.14525
+32	-24	-0.42316
+33	-24	-0.84591
+34	-24	-1.182
+35	-24	-0.67186
+36	-24	0
+37	-24	0
+38	-24	0
+39	-24	0
+40	-24	0
+41	-24	0
+42	-24	0
+43	-24	0
+44	-24	0.13948
+45	-24	0.070911
+46	-24	-0.21044
+47	-24	-0.30252
+48	-24	0
+49	-24	0
+50	-24	0
+51	-24	0
+52	-24	0
+53	-24	0
+54	-24	0
+55	-24	0
+56	-24	0
+57	-24	0
+58	-24	0
+59	-24	0
+60	-24	0
+61	-24	0
+62	-24	0
+63	-24	0
+64	-24	0
+65	-24	0
+66	-24	0
+67	-24	0
+68	-24	0
+69	-24	0
+70	-24	0
+71	-24	0
+72	-24	0
+73	-24	0
+74	-24	0
+75	-24	0
+76	-24	0
+77	-24	0
+78	-24	0
+79	-24	0
+80	-24	0
+81	-24	0
+82	-24	0
+83	-24	0
+84	-24	0
+85	-24	0
+86	-24	0
+87	-24	0
+88	-24	0
+89	-24	0
+90	-24	0
+91	-24	0
+92	-24	0
+93	-24	0
+94	-24	0
+95	-24	0
+96	-24	0
+97	-24	0
+98	-24	0
+99	-24	0
+100	-24	0
+101	-24	0
+102	-24	0
+103	-24	0
+104	-24	0
+105	-24	0
+106	-24	0
+107	-24	0
+108	-24	0
+109	-24	0
+110	-24	0
+111	-24	0
+112	-24	0
+113	-24	0
+114	-24	-0.19232
+115	-24	-0.15533
+116	-24	-0.21148
+117	-24	-0.33954
+118	-24	-0.59624
+119	-24	-0.74042
+120	-24	-0.77035
+121	-24	-0.67698
+122	-24	-0.65089
+123	-24	-0.74979
+124	-24	-0.9309
+125	-24	-1.0851
+126	-24	-1.1231
+127	-24	-1.1386
+128	-24	-1.2342
+129	-24	-1.0753
+130	-24	-0.65173
+131	-24	-0.48341
+132	-24	-0.1747
+133	-24	-0.13423
+134	-24	-0.13717
+135	-24	-0.1119
+136	-24	-0.045605
+137	-24	0.098905
+138	-24	0.24105
+139	-24	0.3996
+140	-24	0.62128
+141	-24	0.62575
+142	-24	0.59375
+143	-24	0.49488
+144	-24	0.43614
+145	-24	0.6351
+146	-24	0.71613
+147	-24	0.91391
+148	-24	1.1206
+149	-24	1.1381
+150	-24	1.5729
+151	-24	0.9596
+152	-24	0.75875
+153	-24	0
+154	-24	0
+155	-24	0
+156	-24	0
+157	-24	0
+158	-24	0
+159	-24	0
+160	-24	0
+161	-24	0
+162	-24	0
+163	-24	0
+164	-24	0
+165	-24	0
+166	-24	0
+167	-24	0
+168	-24	0
+169	-24	0
+170	-24	0
+171	-24	0
+172	-24	0
+173	-24	0
+174	-24	0
+175	-24	0
+176	-24	0
+177	-24	0
+178	-24	0
+179	-24	0
+180	-24	0
+181	-24	0
+182	-24	0
+183	-24	0
+184	-24	0
+185	-24	0
+186	-24	0
+187	-24	0
+188	-24	0
+189	-24	0
+190	-24	0
+191	-24	0
+192	-24	0
+193	-24	0
+194	-24	0
+195	-24	0
+196	-24	0
+197	-24	0
+198	-24	0
+199	-24	0
+200	-24	0
+201	-24	0
+202	-24	0
+203	-24	0
+204	-24	0
+205	-24	0
+206	-24	0
+207	-24	0
+208	-24	0
+209	-24	0
+210	-24	0
+211	-24	0
+212	-24	0
+213	-24	0
+214	-24	0
+215	-24	0
+216	-24	0
+217	-24	0
+218	-24	0
+219	-24	0
+220	-24	0
+221	-24	0
+222	-24	0
+223	-24	0
+224	-24	0
+225	-24	0
+226	-24	0
+227	-24	0
+228	-24	0
+229	-24	0
+230	-24	0
+231	-24	0
+232	-24	0
+233	-24	0
+234	-24	0
+235	-24	0
+236	-24	0
+237	-24	0
+238	-24	0
+239	-24	0
+240	-24	0
+241	-24	0
+242	-24	0
+243	-24	0
+244	-24	0
+245	-24	0
+246	-24	0
+247	-24	0
+248	-24	0
+249	-24	0
+250	-24	0
+251	-24	0
+252	-24	0
+253	-24	0
+254	-24	0
+255	-24	0
+256	-24	0
+257	-24	0
+258	-24	0
+259	-24	0
+260	-24	0
+261	-24	0
+262	-24	0
+263	-24	0
+264	-24	0
+265	-24	0
+266	-24	0
+267	-24	0
+268	-24	0
+269	-24	0
+270	-24	0
+271	-24	0
+272	-24	0
+273	-24	0
+274	-24	0
+275	-24	0
+276	-24	0
+277	-24	0
+278	-24	0
+279	-24	0
+280	-24	0
+281	-24	0
+282	-24	0
+283	-24	0
+284	-24	0
+285	-24	0
+286	-24	0
+287	-24	0
+288	-24	0
+289	-24	0
+290	-24	0.032694
+291	-24	0.04102
+292	-24	0.018132
+293	-24	0.0027835
+294	-24	-0.098572
+295	-24	-0.19639
+296	-24	0.037722
+297	-24	0.2335
+298	-24	0.15958
+299	-24	-0.19866
+300	-24	-0.37784
+301	-24	-0.11685
+302	-24	0.10725
+303	-24	0.32077
+304	-24	0.58082
+305	-24	0.79387
+306	-24	1.7614
+307	-24	2.3307
+308	-24	1.2073
+309	-24	0.25919
+310	-24	0.091713
+311	-24	-0.04542
+312	-24	-0.060499
+313	-24	0.092435
+314	-24	0.079445
+315	-24	0.012818
+316	-24	0
+317	-24	0
+318	-24	0
+319	-24	0
+320	-24	0
+321	-24	0
+322	-24	0
+323	-24	0
+324	-24	0
+325	-24	0
+326	-24	0
+327	-24	0
+328	-24	0
+329	-24	0
+330	-24	0
+331	-24	0
+332	-24	0
+333	-24	0
+334	-24	0
+335	-24	0
+336	-24	0
+337	-24	0
+338	-24	0
+339	-24	0
+340	-24	0
+341	-24	0
+342	-24	0
+343	-24	0
+344	-24	0
+345	-24	0
+346	-24	0
+347	-24	0
+348	-24	0
+349	-24	0
+350	-24	0
+351	-24	0
+352	-24	0
+353	-24	0
+354	-24	0
+355	-24	0
+356	-24	0
+357	-24	0
+358	-24	0
+359	-24	0
+360	-24	0
+0	-23.5	0
+1	-23.5	0
+2	-23.5	0
+3	-23.5	0
+4	-23.5	0
+5	-23.5	0
+6	-23.5	0
+7	-23.5	0
+8	-23.5	0
+9	-23.5	0
+10	-23.5	0
+11	-23.5	0
+12	-23.5	0
+13	-23.5	0
+14	-23.5	0
+15	-23.5	0.45537
+16	-23.5	0.75841
+17	-23.5	1.0593
+18	-23.5	0.77489
+19	-23.5	0.48131
+20	-23.5	0.37778
+21	-23.5	0.34026
+22	-23.5	0.40037
+23	-23.5	0.38015
+24	-23.5	0.3121
+25	-23.5	0.23135
+26	-23.5	0.16457
+27	-23.5	0.26476
+28	-23.5	0.22439
+29	-23.5	0.20925
+30	-23.5	0.021426
+31	-23.5	-0.18567
+32	-23.5	-0.45948
+33	-23.5	-0.97704
+34	-23.5	-1.3294
+35	-23.5	-0.81409
+36	-23.5	-0.010004
+37	-23.5	0
+38	-23.5	0
+39	-23.5	0
+40	-23.5	0
+41	-23.5	0
+42	-23.5	0
+43	-23.5	0
+44	-23.5	0.043008
+45	-23.5	-0.067951
+46	-23.5	-0.4193
+47	-23.5	-0.47656
+48	-23.5	0
+49	-23.5	0
+50	-23.5	0
+51	-23.5	0
+52	-23.5	0
+53	-23.5	0
+54	-23.5	0
+55	-23.5	0
+56	-23.5	0
+57	-23.5	0
+58	-23.5	0
+59	-23.5	0
+60	-23.5	0
+61	-23.5	0
+62	-23.5	0
+63	-23.5	0
+64	-23.5	0
+65	-23.5	0
+66	-23.5	0
+67	-23.5	0
+68	-23.5	0
+69	-23.5	0
+70	-23.5	0
+71	-23.5	0
+72	-23.5	0
+73	-23.5	0
+74	-23.5	0
+75	-23.5	0
+76	-23.5	0
+77	-23.5	0
+78	-23.5	0
+79	-23.5	0
+80	-23.5	0
+81	-23.5	0
+82	-23.5	0
+83	-23.5	0
+84	-23.5	0
+85	-23.5	0
+86	-23.5	0
+87	-23.5	0
+88	-23.5	0
+89	-23.5	0
+90	-23.5	0
+91	-23.5	0
+92	-23.5	0
+93	-23.5	0
+94	-23.5	0
+95	-23.5	0
+96	-23.5	0
+97	-23.5	0
+98	-23.5	0
+99	-23.5	0
+100	-23.5	0
+101	-23.5	0
+102	-23.5	0
+103	-23.5	0
+104	-23.5	0
+105	-23.5	0
+106	-23.5	0
+107	-23.5	0
+108	-23.5	0
+109	-23.5	0
+110	-23.5	0
+111	-23.5	0
+112	-23.5	0
+113	-23.5	-0.020601
+114	-23.5	-0.18728
+115	-23.5	-0.18815
+116	-23.5	-0.24298
+117	-23.5	-0.3685
+118	-23.5	-0.63742
+119	-23.5	-0.8091
+120	-23.5	-0.77827
+121	-23.5	-0.66786
+122	-23.5	-0.63807
+123	-23.5	-0.80876
+124	-23.5	-0.917
+125	-23.5	-1.1284
+126	-23.5	-1.2415
+127	-23.5	-1.257
+128	-23.5	-1.2867
+129	-23.5	-1.0822
+130	-23.5	-0.65869
+131	-23.5	-0.44402
+132	-23.5	-0.095059
+133	-23.5	-0.057209
+134	-23.5	-0.060144
+135	-23.5	-0.055362
+136	-23.5	0.035334
+137	-23.5	0.16199
+138	-23.5	0.24214
+139	-23.5	0.4139
+140	-23.5	0.66888
+141	-23.5	0.6457
+142	-23.5	0.59357
+143	-23.5	0.4947
+144	-23.5	0.4324
+145	-23.5	0.50283
+146	-23.5	0.61877
+147	-23.5	0.88415
+148	-23.5	0.93472
+149	-23.5	1.3988
+150	-23.5	1.7565
+151	-23.5	0.081703
+152	-23.5	0.40007
+153	-23.5	0
+154	-23.5	0
+155	-23.5	0
+156	-23.5	0
+157	-23.5	0
+158	-23.5	0
+159	-23.5	0
+160	-23.5	0
+161	-23.5	0
+162	-23.5	0
+163	-23.5	0
+164	-23.5	0
+165	-23.5	0
+166	-23.5	0
+167	-23.5	0
+168	-23.5	0
+169	-23.5	0
+170	-23.5	0
+171	-23.5	0
+172	-23.5	0
+173	-23.5	0
+174	-23.5	0
+175	-23.5	0
+176	-23.5	0
+177	-23.5	0
+178	-23.5	0
+179	-23.5	0
+180	-23.5	0
+181	-23.5	0
+182	-23.5	0
+183	-23.5	0
+184	-23.5	0
+185	-23.5	0
+186	-23.5	0
+187	-23.5	0
+188	-23.5	0
+189	-23.5	0
+190	-23.5	0
+191	-23.5	0
+192	-23.5	0
+193	-23.5	0
+194	-23.5	0
+195	-23.5	0
+196	-23.5	0
+197	-23.5	0
+198	-23.5	0
+199	-23.5	0
+200	-23.5	0
+201	-23.5	0
+202	-23.5	0
+203	-23.5	0
+204	-23.5	0
+205	-23.5	0
+206	-23.5	0
+207	-23.5	0
+208	-23.5	0
+209	-23.5	0
+210	-23.5	0
+211	-23.5	0
+212	-23.5	0
+213	-23.5	0
+214	-23.5	0
+215	-23.5	0
+216	-23.5	0
+217	-23.5	0
+218	-23.5	0
+219	-23.5	0
+220	-23.5	0
+221	-23.5	0
+222	-23.5	0
+223	-23.5	0
+224	-23.5	0
+225	-23.5	0
+226	-23.5	0
+227	-23.5	0
+228	-23.5	0
+229	-23.5	0
+230	-23.5	0
+231	-23.5	0
+232	-23.5	0
+233	-23.5	0
+234	-23.5	0
+235	-23.5	0
+236	-23.5	0
+237	-23.5	0
+238	-23.5	0
+239	-23.5	0
+240	-23.5	0
+241	-23.5	0
+242	-23.5	0
+243	-23.5	0
+244	-23.5	0
+245	-23.5	0
+246	-23.5	0
+247	-23.5	0
+248	-23.5	0
+249	-23.5	0
+250	-23.5	0
+251	-23.5	0
+252	-23.5	0
+253	-23.5	0
+254	-23.5	0
+255	-23.5	0
+256	-23.5	0
+257	-23.5	0
+258	-23.5	0
+259	-23.5	0
+260	-23.5	0
+261	-23.5	0
+262	-23.5	0
+263	-23.5	0
+264	-23.5	0
+265	-23.5	0
+266	-23.5	0
+267	-23.5	0
+268	-23.5	0
+269	-23.5	0
+270	-23.5	0
+271	-23.5	0
+272	-23.5	0
+273	-23.5	0
+274	-23.5	0
+275	-23.5	0
+276	-23.5	0
+277	-23.5	0
+278	-23.5	0
+279	-23.5	0
+280	-23.5	0
+281	-23.5	0
+282	-23.5	0
+283	-23.5	0
+284	-23.5	0
+285	-23.5	0
+286	-23.5	0
+287	-23.5	0
+288	-23.5	0
+289	-23.5	0
+290	-23.5	0.038555
+291	-23.5	0.031452
+292	-23.5	0.0076595
+293	-23.5	0.0028348
+294	-23.5	-0.066287
+295	-23.5	-0.15373
+296	-23.5	0.19384
+297	-23.5	0.37802
+298	-23.5	0.30416
+299	-23.5	0.11584
+300	-23.5	-0.063342
+301	-23.5	0.13658
+302	-23.5	0.13419
+303	-23.5	0.31938
+304	-23.5	0.56622
+305	-23.5	0.6606
+306	-23.5	2.94
+307	-23.5	2.5661
+308	-23.5	1.4371
+309	-23.5	0.45596
+310	-23.5	0.070336
+311	-23.5	-0.10225
+312	-23.5	-0.097668
+313	-23.5	0.00055397
+314	-23.5	0.08644
+315	-23.5	0.0020902
+316	-23.5	-0.00013028
+317	-23.5	0
+318	-23.5	0
+319	-23.5	0
+320	-23.5	0
+321	-23.5	0
+322	-23.5	0
+323	-23.5	0
+324	-23.5	0
+325	-23.5	0
+326	-23.5	0
+327	-23.5	0
+328	-23.5	0
+329	-23.5	0
+330	-23.5	0
+331	-23.5	0
+332	-23.5	0
+333	-23.5	0
+334	-23.5	0
+335	-23.5	0
+336	-23.5	0
+337	-23.5	0
+338	-23.5	0
+339	-23.5	0
+340	-23.5	0
+341	-23.5	0
+342	-23.5	0
+343	-23.5	0
+344	-23.5	0
+345	-23.5	0
+346	-23.5	0
+347	-23.5	0
+348	-23.5	0
+349	-23.5	0
+350	-23.5	0
+351	-23.5	0
+352	-23.5	0
+353	-23.5	0
+354	-23.5	0
+355	-23.5	0
+356	-23.5	0
+357	-23.5	0
+358	-23.5	0
+359	-23.5	0
+360	-23.5	0
+0	-23	0
+1	-23	0
+2	-23	0
+3	-23	0
+4	-23	0
+5	-23	0
+6	-23	0
+7	-23	0
+8	-23	0
+9	-23	0
+10	-23	0
+11	-23	0
+12	-23	0
+13	-23	0
+14	-23	0
+15	-23	0.7161
+16	-23	0.92367
+17	-23	1.2511
+18	-23	0.88519
+19	-23	0.5283
+20	-23	0.4282
+21	-23	0.39431
+22	-23	0.41979
+23	-23	0.3584
+24	-23	0.29035
+25	-23	0.2223
+26	-23	0.14497
+27	-23	0.16788
+28	-23	0.18059
+29	-23	0.11611
+30	-23	-0.032857
+31	-23	-0.21724
+32	-23	-0.55146
+33	-23	-1.1115
+34	-23	-1.4283
+35	-23	-0.91945
+36	-23	-0.049267
+37	-23	0
+38	-23	0
+39	-23	0
+40	-23	0
+41	-23	0
+42	-23	0
+43	-23	0
+44	-23	0.022603
+45	-23	-0.1826
+46	-23	-0.56095
+47	-23	-0.61466
+48	-23	-0.1019
+49	-23	0
+50	-23	0
+51	-23	0
+52	-23	0
+53	-23	0
+54	-23	0
+55	-23	0
+56	-23	0
+57	-23	0
+58	-23	0
+59	-23	0
+60	-23	0
+61	-23	0
+62	-23	0
+63	-23	0
+64	-23	0
+65	-23	0
+66	-23	0
+67	-23	0
+68	-23	0
+69	-23	0
+70	-23	0
+71	-23	0
+72	-23	0
+73	-23	0
+74	-23	0
+75	-23	0
+76	-23	0
+77	-23	0
+78	-23	0
+79	-23	0
+80	-23	0
+81	-23	0
+82	-23	0
+83	-23	0
+84	-23	0
+85	-23	0
+86	-23	0
+87	-23	0
+88	-23	0
+89	-23	0
+90	-23	0
+91	-23	0
+92	-23	0
+93	-23	0
+94	-23	0
+95	-23	0
+96	-23	0
+97	-23	0
+98	-23	0
+99	-23	0
+100	-23	0
+101	-23	0
+102	-23	0
+103	-23	0
+104	-23	0
+105	-23	0
+106	-23	0
+107	-23	0
+108	-23	0
+109	-23	0
+110	-23	0
+111	-23	0
+112	-23	0
+113	-23	-0.020851
+114	-23	-0.091625
+115	-23	-0.2253
+116	-23	-0.27861
+117	-23	-0.41826
+118	-23	-0.67856
+119	-23	-0.8682
+120	-23	-0.77899
+121	-23	-0.60466
+122	-23	-0.62525
+123	-23	-0.7961
+124	-23	-0.92004
+125	-23	-1.174
+126	-23	-1.3369
+127	-23	-1.3754
+128	-23	-1.3406
+129	-23	-1.0812
+130	-23	-0.66566
+131	-23	-0.36258
+132	-23	-0.14054
+133	-23	0.037266
+134	-23	0.025097
+135	-23	0.013946
+136	-23	0.082935
+137	-23	0.16308
+138	-23	0.24323
+139	-23	0.46584
+140	-23	0.71648
+141	-23	0.66566
+142	-23	0.59415
+143	-23	0.49452
+144	-23	0.42905
+145	-23	0.563
+146	-23	0.70516
+147	-23	0.8339
+148	-23	1.4395
+149	-23	2.4502
+150	-23	2.2296
+151	-23	1.1831
+152	-23	0
+153	-23	0
+154	-23	0
+155	-23	0
+156	-23	0
+157	-23	0
+158	-23	0
+159	-23	0
+160	-23	0
+161	-23	0
+162	-23	0
+163	-23	0
+164	-23	0
+165	-23	0
+166	-23	0
+167	-23	0
+168	-23	0
+169	-23	0
+170	-23	0
+171	-23	0
+172	-23	0
+173	-23	0
+174	-23	0
+175	-23	0
+176	-23	0
+177	-23	0
+178	-23	0
+179	-23	0
+180	-23	0
+181	-23	0
+182	-23	0
+183	-23	0
+184	-23	0
+185	-23	0
+186	-23	0
+187	-23	0
+188	-23	0
+189	-23	0
+190	-23	0
+191	-23	0
+192	-23	0
+193	-23	0
+194	-23	0
+195	-23	0
+196	-23	0
+197	-23	0
+198	-23	0
+199	-23	0
+200	-23	0
+201	-23	0
+202	-23	0
+203	-23	0
+204	-23	0
+205	-23	0
+206	-23	0
+207	-23	0
+208	-23	0
+209	-23	0
+210	-23	0
+211	-23	0
+212	-23	0
+213	-23	0
+214	-23	0
+215	-23	0
+216	-23	0
+217	-23	0
+218	-23	0
+219	-23	0
+220	-23	0
+221	-23	0
+222	-23	0
+223	-23	0
+224	-23	0
+225	-23	0
+226	-23	0
+227	-23	0
+228	-23	0
+229	-23	0
+230	-23	0
+231	-23	0
+232	-23	0
+233	-23	0
+234	-23	0
+235	-23	0
+236	-23	0
+237	-23	0
+238	-23	0
+239	-23	0
+240	-23	0
+241	-23	0
+242	-23	0
+243	-23	0
+244	-23	0
+245	-23	0
+246	-23	0
+247	-23	0
+248	-23	0
+249	-23	0
+250	-23	0
+251	-23	0
+252	-23	0
+253	-23	0
+254	-23	0
+255	-23	0
+256	-23	0
+257	-23	0
+258	-23	0
+259	-23	0
+260	-23	0
+261	-23	0
+262	-23	0
+263	-23	0
+264	-23	0
+265	-23	0
+266	-23	0
+267	-23	0
+268	-23	0
+269	-23	0
+270	-23	0
+271	-23	0
+272	-23	0
+273	-23	0
+274	-23	0
+275	-23	0
+276	-23	0
+277	-23	0
+278	-23	0
+279	-23	0
+280	-23	0
+281	-23	0
+282	-23	0
+283	-23	0
+284	-23	0
+285	-23	0
+286	-23	0
+287	-23	0
+288	-23	0
+289	-23	0
+290	-23	0.017685
+291	-23	0.018499
+292	-23	0.0006859
+293	-23	0.00013036
+294	-23	-0.02477
+295	-23	-0.10899
+296	-23	0.34996
+297	-23	0.52255
+298	-23	0.40852
+299	-23	0.25773
+300	-23	0.17567
+301	-23	0.14384
+302	-23	0.16263
+303	-23	0.32848
+304	-23	0.55796
+305	-23	1.4493
+306	-23	2.1951
+307	-23	2.8015
+308	-23	1.6546
+309	-23	0.9331
+310	-23	0.069511
+311	-23	-0.14426
+312	-23	-0.1561
+313	-23	-0.10549
+314	-23	-0.0019843
+315	-23	0.076893
+316	-23	0.0074024
+317	-23	-0.042964
+318	-23	0
+319	-23	0
+320	-23	0
+321	-23	0
+322	-23	0
+323	-23	0
+324	-23	0
+325	-23	0
+326	-23	0
+327	-23	0
+328	-23	0
+329	-23	0
+330	-23	0
+331	-23	0
+332	-23	0
+333	-23	0
+334	-23	0
+335	-23	0
+336	-23	0
+337	-23	0
+338	-23	0
+339	-23	0
+340	-23	0
+341	-23	0
+342	-23	0
+343	-23	0
+344	-23	0
+345	-23	0
+346	-23	0
+347	-23	0
+348	-23	0
+349	-23	0
+350	-23	0
+351	-23	0
+352	-23	0
+353	-23	0
+354	-23	0
+355	-23	0
+356	-23	0
+357	-23	0
+358	-23	0
+359	-23	0
+360	-23	0
+0	-22.5	0
+1	-22.5	0
+2	-22.5	0
+3	-22.5	0
+4	-22.5	0
+5	-22.5	0
+6	-22.5	0
+7	-22.5	0
+8	-22.5	0
+9	-22.5	0
+10	-22.5	0
+11	-22.5	0
+12	-22.5	0
+13	-22.5	0
+14	-22.5	0
+15	-22.5	0.97104
+16	-22.5	1.1038
+17	-22.5	1.3008
+18	-22.5	1.0226
+19	-22.5	0.56477
+20	-22.5	0.50127
+21	-22.5	0.4534
+22	-22.5	0.4047
+23	-22.5	0.34017
+24	-22.5	0.27678
+25	-22.5	0.21339
+26	-22.5	0.15
+27	-22.5	0.14222
+28	-22.5	0.16297
+29	-22.5	0.093643
+30	-22.5	-0.011195
+31	-22.5	-0.22596
+32	-22.5	-0.64146
+33	-22.5	-1.2481
+34	-22.5	-1.5106
+35	-22.5	-0.9881
+36	-22.5	0
+37	-22.5	0
+38	-22.5	0
+39	-22.5	0
+40	-22.5	0
+41	-22.5	0
+42	-22.5	0
+43	-22.5	0.0080448
+44	-22.5	0.045347
+45	-22.5	-0.21957
+46	-22.5	-0.67124
+47	-22.5	-0.71055
+48	-22.5	-0.26171
+49	-22.5	0
+50	-22.5	0
+51	-22.5	0
+52	-22.5	0
+53	-22.5	0
+54	-22.5	0
+55	-22.5	0
+56	-22.5	0
+57	-22.5	0
+58	-22.5	0
+59	-22.5	0
+60	-22.5	0
+61	-22.5	0
+62	-22.5	0
+63	-22.5	0
+64	-22.5	0
+65	-22.5	0
+66	-22.5	0
+67	-22.5	0
+68	-22.5	0
+69	-22.5	0
+70	-22.5	0
+71	-22.5	0
+72	-22.5	0
+73	-22.5	0
+74	-22.5	0
+75	-22.5	0
+76	-22.5	0
+77	-22.5	0
+78	-22.5	0
+79	-22.5	0
+80	-22.5	0
+81	-22.5	0
+82	-22.5	0
+83	-22.5	0
+84	-22.5	0
+85	-22.5	0
+86	-22.5	0
+87	-22.5	0
+88	-22.5	0
+89	-22.5	0
+90	-22.5	0
+91	-22.5	0
+92	-22.5	0
+93	-22.5	0
+94	-22.5	0
+95	-22.5	0
+96	-22.5	0
+97	-22.5	0
+98	-22.5	0
+99	-22.5	0
+100	-22.5	0
+101	-22.5	0
+102	-22.5	0
+103	-22.5	0
+104	-22.5	0
+105	-22.5	0
+106	-22.5	0
+107	-22.5	0
+108	-22.5	0
+109	-22.5	0
+110	-22.5	0
+111	-22.5	0
+112	-22.5	0
+113	-22.5	0
+114	-22.5	-0.12193
+115	-22.5	-0.25663
+116	-22.5	-0.33341
+117	-22.5	-0.46999
+118	-22.5	-0.71615
+119	-22.5	-0.9176
+120	-22.5	-0.79327
+121	-22.5	-0.60327
+122	-22.5	-0.76711
+123	-22.5	-0.8062
+124	-22.5	-0.97551
+125	-22.5	-1.2315
+126	-22.5	-1.3247
+127	-22.5	-1.4422
+128	-22.5	-1.4027
+129	-22.5	-1.0744
+130	-22.5	-0.66516
+131	-22.5	-0.36986
+132	-22.5	-0.18549
+133	-22.5	0.018642
+134	-22.5	0.12916
+135	-22.5	0.14806
+136	-22.5	0.079141
+137	-22.5	0.16301
+138	-22.5	0.24432
+139	-22.5	0.51778
+140	-22.5	0.76408
+141	-22.5	0.70611
+142	-22.5	0.60477
+143	-22.5	0.49633
+144	-22.5	0.4257
+145	-22.5	0.60645
+146	-22.5	0.84048
+147	-22.5	1.0251
+148	-22.5	1.9068
+149	-22.5	3.1414
+150	-22.5	1.5994
+151	-22.5	0.29104
+152	-22.5	0
+153	-22.5	0
+154	-22.5	0
+155	-22.5	0
+156	-22.5	0
+157	-22.5	0
+158	-22.5	0
+159	-22.5	0
+160	-22.5	0
+161	-22.5	0
+162	-22.5	0
+163	-22.5	0
+164	-22.5	0
+165	-22.5	0
+166	-22.5	0
+167	-22.5	0
+168	-22.5	0
+169	-22.5	0
+170	-22.5	0
+171	-22.5	0
+172	-22.5	0
+173	-22.5	0
+174	-22.5	0
+175	-22.5	0
+176	-22.5	0
+177	-22.5	0
+178	-22.5	0
+179	-22.5	0
+180	-22.5	0
+181	-22.5	0
+182	-22.5	0
+183	-22.5	0
+184	-22.5	0
+185	-22.5	0
+186	-22.5	0
+187	-22.5	0
+188	-22.5	0
+189	-22.5	0
+190	-22.5	0
+191	-22.5	0
+192	-22.5	0
+193	-22.5	0
+194	-22.5	0
+195	-22.5	0
+196	-22.5	0
+197	-22.5	0
+198	-22.5	0
+199	-22.5	0
+200	-22.5	0
+201	-22.5	0
+202	-22.5	0
+203	-22.5	0
+204	-22.5	0
+205	-22.5	0
+206	-22.5	0
+207	-22.5	0
+208	-22.5	0
+209	-22.5	0
+210	-22.5	0
+211	-22.5	0
+212	-22.5	0
+213	-22.5	0
+214	-22.5	0
+215	-22.5	0
+216	-22.5	0
+217	-22.5	0
+218	-22.5	0
+219	-22.5	0
+220	-22.5	0
+221	-22.5	0
+222	-22.5	0
+223	-22.5	0
+224	-22.5	0
+225	-22.5	0
+226	-22.5	0
+227	-22.5	0
+228	-22.5	0
+229	-22.5	0
+230	-22.5	0
+231	-22.5	0
+232	-22.5	0
+233	-22.5	0
+234	-22.5	0
+235	-22.5	0
+236	-22.5	0
+237	-22.5	0
+238	-22.5	0
+239	-22.5	0
+240	-22.5	0
+241	-22.5	0
+242	-22.5	0
+243	-22.5	0
+244	-22.5	0
+245	-22.5	0
+246	-22.5	0
+247	-22.5	0
+248	-22.5	0
+249	-22.5	0
+250	-22.5	0
+251	-22.5	0
+252	-22.5	0
+253	-22.5	0
+254	-22.5	0
+255	-22.5	0
+256	-22.5	0
+257	-22.5	0
+258	-22.5	0
+259	-22.5	0
+260	-22.5	0
+261	-22.5	0
+262	-22.5	0
+263	-22.5	0
+264	-22.5	0
+265	-22.5	0
+266	-22.5	0
+267	-22.5	0
+268	-22.5	0
+269	-22.5	0
+270	-22.5	0
+271	-22.5	0
+272	-22.5	0
+273	-22.5	0
+274	-22.5	0
+275	-22.5	0
+276	-22.5	0
+277	-22.5	0
+278	-22.5	0
+279	-22.5	0
+280	-22.5	0
+281	-22.5	0
+282	-22.5	0
+283	-22.5	0
+284	-22.5	0
+285	-22.5	0
+286	-22.5	0
+287	-22.5	0
+288	-22.5	0
+289	-22.5	0
+290	-22.5	0.0039889
+291	-22.5	0.0073151
+292	-22.5	-8.1411e-05
+293	-22.5	-0.013332
+294	-22.5	-0.034356
+295	-22.5	-0.064256
+296	-22.5	0.46559
+297	-22.5	0.66707
+298	-22.5	0.44673
+299	-22.5	0.26702
+300	-22.5	0.18496
+301	-22.5	0.15111
+302	-22.5	0.19107
+303	-22.5	0.33758
+304	-22.5	0.56706
+305	-22.5	0.9514
+306	-22.5	1.3916
+307	-22.5	1.8317
+308	-22.5	1.8889
+309	-22.5	0.76281
+310	-22.5	0.097239
+311	-22.5	-0.19887
+312	-22.5	-0.27512
+313	-22.5	-0.22974
+314	-22.5	-0.11728
+315	-22.5	-0.063896
+316	-22.5	-0.12041
+317	-22.5	-0.19028
+318	-22.5	-0.083921
+319	-22.5	0
+320	-22.5	0
+321	-22.5	0
+322	-22.5	0
+323	-22.5	0
+324	-22.5	0
+325	-22.5	0
+326	-22.5	0
+327	-22.5	0
+328	-22.5	0
+329	-22.5	0
+330	-22.5	0
+331	-22.5	0
+332	-22.5	0
+333	-22.5	0
+334	-22.5	0
+335	-22.5	0
+336	-22.5	0
+337	-22.5	0
+338	-22.5	0
+339	-22.5	0
+340	-22.5	0
+341	-22.5	0
+342	-22.5	0
+343	-22.5	0
+344	-22.5	0
+345	-22.5	0
+346	-22.5	0
+347	-22.5	0
+348	-22.5	0
+349	-22.5	0
+350	-22.5	0
+351	-22.5	0
+352	-22.5	0
+353	-22.5	0
+354	-22.5	0
+355	-22.5	0
+356	-22.5	0
+357	-22.5	0
+358	-22.5	0
+359	-22.5	0
+360	-22.5	0
+0	-22	0
+1	-22	0
+2	-22	0
+3	-22	0
+4	-22	0
+5	-22	0
+6	-22	0
+7	-22	0
+8	-22	0
+9	-22	0
+10	-22	0
+11	-22	0
+12	-22	0
+13	-22	0
+14	-22	0.0068816
+15	-22	1.1197
+16	-22	1.2154
+17	-22	1.3141
+18	-22	1.1678
+19	-22	0.60124
+20	-22	0.63288
+21	-22	0.58501
+22	-22	0.67343
+23	-22	0.40137
+24	-22	0.33798
+25	-22	0.27459
+26	-22	0.20835
+27	-22	0.14369
+28	-22	0.14921
+29	-22	0.11531
+30	-22	-0.0074311
+31	-22	-0.23468
+32	-22	-0.72487
+33	-22	-1.3533
+34	-22	-1.5571
+35	-22	-1.0022
+36	-22	0
+37	-22	0
+38	-22	0
+39	-22	0
+40	-22	0
+41	-22	0
+42	-22	0
+43	-22	0.011781
+44	-22	0.011036
+45	-22	-0.25683
+46	-22	-0.66526
+47	-22	-0.79548
+48	-22	-0.39723
+49	-22	0
+50	-22	0
+51	-22	0
+52	-22	0
+53	-22	0
+54	-22	0
+55	-22	0
+56	-22	0
+57	-22	0
+58	-22	0
+59	-22	0
+60	-22	0
+61	-22	0
+62	-22	0
+63	-22	0
+64	-22	0
+65	-22	0
+66	-22	0
+67	-22	0
+68	-22	0
+69	-22	0
+70	-22	0
+71	-22	0
+72	-22	0
+73	-22	0
+74	-22	0
+75	-22	0
+76	-22	0
+77	-22	0
+78	-22	0
+79	-22	0
+80	-22	0
+81	-22	0
+82	-22	0
+83	-22	0
+84	-22	0
+85	-22	0
+86	-22	0
+87	-22	0
+88	-22	0
+89	-22	0
+90	-22	0
+91	-22	0
+92	-22	0
+93	-22	0
+94	-22	0
+95	-22	0
+96	-22	0
+97	-22	0
+98	-22	0
+99	-22	0
+100	-22	0
+101	-22	0
+102	-22	0
+103	-22	0
+104	-22	0
+105	-22	0
+106	-22	0
+107	-22	0
+108	-22	0
+109	-22	0
+110	-22	0
+111	-22	0
+112	-22	0
+113	-22	0
+114	-22	0
+115	-22	-0.23488
+116	-22	-0.35365
+117	-22	-0.49696
+118	-22	-0.71485
+119	-22	-0.90318
+120	-22	-0.89419
+121	-22	-0.71795
+122	-22	-0.85294
+123	-22	-0.93742
+124	-22	-1.1802
+125	-22	-1.2138
+126	-22	-1.3125
+127	-22	-1.4509
+128	-22	-1.4441
+129	-22	-1.0676
+130	-22	-0.65678
+131	-22	-0.18097
+132	-22	-0.0058904
+133	-22	0.17848
+134	-22	0.29501
+135	-22	0.2486
+136	-22	0.11309
+137	-22	0.15509
+138	-22	0.27113
+139	-22	0.56972
+140	-22	0.81168
+141	-22	0.73001
+142	-22	0.6154
+143	-22	0.49891
+144	-22	0.42623
+145	-22	0.6222
+146	-22	0.95584
+147	-22	1.2865
+148	-22	2.4309
+149	-22	2.962
+150	-22	0.22198
+151	-22	0
+152	-22	0
+153	-22	0
+154	-22	0
+155	-22	0
+156	-22	0
+157	-22	0
+158	-22	0
+159	-22	0
+160	-22	0
+161	-22	0
+162	-22	0
+163	-22	0
+164	-22	0
+165	-22	0
+166	-22	0
+167	-22	0
+168	-22	0
+169	-22	0
+170	-22	0
+171	-22	0
+172	-22	0
+173	-22	0
+174	-22	0
+175	-22	0
+176	-22	0
+177	-22	0
+178	-22	0
+179	-22	0
+180	-22	0
+181	-22	0
+182	-22	0
+183	-22	0
+184	-22	0
+185	-22	0
+186	-22	0
+187	-22	0
+188	-22	0
+189	-22	0
+190	-22	0
+191	-22	0
+192	-22	0
+193	-22	0
+194	-22	0
+195	-22	0
+196	-22	0
+197	-22	0
+198	-22	0
+199	-22	0
+200	-22	0
+201	-22	0
+202	-22	0
+203	-22	0
+204	-22	0
+205	-22	0
+206	-22	0
+207	-22	0
+208	-22	0
+209	-22	0
+210	-22	0
+211	-22	0
+212	-22	0
+213	-22	0
+214	-22	0
+215	-22	0
+216	-22	0
+217	-22	0
+218	-22	0
+219	-22	0
+220	-22	0
+221	-22	0
+222	-22	0
+223	-22	0
+224	-22	0
+225	-22	0
+226	-22	0
+227	-22	0
+228	-22	0
+229	-22	0
+230	-22	0
+231	-22	0
+232	-22	0
+233	-22	0
+234	-22	0
+235	-22	0
+236	-22	0
+237	-22	0
+238	-22	0
+239	-22	0
+240	-22	0
+241	-22	0
+242	-22	0
+243	-22	0
+244	-22	0
+245	-22	0
+246	-22	0
+247	-22	0
+248	-22	0
+249	-22	0
+250	-22	0
+251	-22	0
+252	-22	0
+253	-22	0
+254	-22	0
+255	-22	0
+256	-22	0
+257	-22	0
+258	-22	0
+259	-22	0
+260	-22	0
+261	-22	0
+262	-22	0
+263	-22	0
+264	-22	0
+265	-22	0
+266	-22	0
+267	-22	0
+268	-22	0
+269	-22	0
+270	-22	0
+271	-22	0
+272	-22	0
+273	-22	0
+274	-22	0
+275	-22	0
+276	-22	0
+277	-22	0
+278	-22	0
+279	-22	0
+280	-22	0
+281	-22	0
+282	-22	0
+283	-22	0
+284	-22	0
+285	-22	0
+286	-22	0
+287	-22	0
+288	-22	0
+289	-22	0
+290	-22	-0.00040834
+291	-22	0.0025937
+292	-22	-0.002133
+293	-22	-0.037045
+294	-22	-0.10889
+295	-22	-0.046033
+296	-22	0.50212
+297	-22	0.78444
+298	-22	0.48494
+299	-22	0.27631
+300	-22	0.19622
+301	-22	0.15838
+302	-22	0.2195
+303	-22	0.34668
+304	-22	0.57616
+305	-22	0.99708
+306	-22	1.4372
+307	-22	1.813
+308	-22	1.6934
+309	-22	0.59252
+310	-22	0.10468
+311	-22	-0.23564
+312	-22	-0.3887
+313	-22	-0.36976
+314	-22	-0.24445
+315	-22	-0.21832
+316	-22	-0.27705
+317	-22	-0.35811
+318	-22	-0.25513
+319	-22	-0.045398
+320	-22	0
+321	-22	0
+322	-22	0
+323	-22	0
+324	-22	0
+325	-22	0
+326	-22	0
+327	-22	0
+328	-22	0
+329	-22	0
+330	-22	0
+331	-22	0
+332	-22	0
+333	-22	0
+334	-22	0
+335	-22	0
+336	-22	0
+337	-22	0
+338	-22	0
+339	-22	0
+340	-22	0
+341	-22	0
+342	-22	0
+343	-22	0
+344	-22	0
+345	-22	0
+346	-22	0
+347	-22	0
+348	-22	0
+349	-22	0
+350	-22	0
+351	-22	0
+352	-22	0
+353	-22	0
+354	-22	0
+355	-22	0
+356	-22	0
+357	-22	0
+358	-22	0
+359	-22	0
+360	-22	0
+0	-21.5	0
+1	-21.5	0
+2	-21.5	0
+3	-21.5	0
+4	-21.5	0
+5	-21.5	0
+6	-21.5	0
+7	-21.5	0
+8	-21.5	0
+9	-21.5	0
+10	-21.5	0
+11	-21.5	0
+12	-21.5	0
+13	-21.5	0
+14	-21.5	0.4137
+15	-21.5	1.2348
+16	-21.5	1.3678
+17	-21.5	1.5027
+18	-21.5	1.2135
+19	-21.5	0.73585
+20	-21.5	0.76449
+21	-21.5	0.7377
+22	-21.5	0.92994
+23	-21.5	0.57803
+24	-21.5	0.39918
+25	-21.5	0.33579
+26	-21.5	0.26514
+27	-21.5	0.18451
+28	-21.5	0.14533
+29	-21.5	0.13697
+30	-21.5	-0.017048
+31	-21.5	-0.2434
+32	-21.5	-0.82062
+33	-21.5	-1.4417
+34	-21.5	-1.5382
+35	-21.5	-0.76867
+36	-21.5	0
+37	-21.5	0
+38	-21.5	0
+39	-21.5	0
+40	-21.5	0
+41	-21.5	0
+42	-21.5	0
+43	-21.5	0
+44	-21.5	-0.014429
+45	-21.5	-0.28114
+46	-21.5	-0.63142
+47	-21.5	-0.81251
+48	-21.5	-0.4181
+49	-21.5	0
+50	-21.5	0
+51	-21.5	0
+52	-21.5	0
+53	-21.5	0
+54	-21.5	0
+55	-21.5	0
+56	-21.5	0
+57	-21.5	0
+58	-21.5	0
+59	-21.5	0
+60	-21.5	0
+61	-21.5	0
+62	-21.5	0
+63	-21.5	0
+64	-21.5	0
+65	-21.5	0
+66	-21.5	0
+67	-21.5	0
+68	-21.5	0
+69	-21.5	0
+70	-21.5	0
+71	-21.5	0
+72	-21.5	0
+73	-21.5	0
+74	-21.5	0
+75	-21.5	0
+76	-21.5	0
+77	-21.5	0
+78	-21.5	0
+79	-21.5	0
+80	-21.5	0
+81	-21.5	0
+82	-21.5	0
+83	-21.5	0
+84	-21.5	0
+85	-21.5	0
+86	-21.5	0
+87	-21.5	0
+88	-21.5	0
+89	-21.5	0
+90	-21.5	0
+91	-21.5	0
+92	-21.5	0
+93	-21.5	0
+94	-21.5	0
+95	-21.5	0
+96	-21.5	0
+97	-21.5	0
+98	-21.5	0
+99	-21.5	0
+100	-21.5	0
+101	-21.5	0
+102	-21.5	0
+103	-21.5	0
+104	-21.5	0
+105	-21.5	0
+106	-21.5	0
+107	-21.5	0
+108	-21.5	0
+109	-21.5	0
+110	-21.5	0
+111	-21.5	0
+112	-21.5	0
+113	-21.5	0
+114	-21.5	0
+115	-21.5	-0.081582
+116	-21.5	-0.33043
+117	-21.5	-0.40357
+118	-21.5	-0.70808
+119	-21.5	-0.91595
+120	-21.5	-1.0204
+121	-21.5	-0.91349
+122	-21.5	-1.0343
+123	-21.5	-1.19
+124	-21.5	-1.2613
+125	-21.5	-1.1961
+126	-21.5	-1.3046
+127	-21.5	-1.4781
+128	-21.5	-1.4361
+129	-21.5	-1.0608
+130	-21.5	-0.57943
+131	-21.5	0.037957
+132	-21.5	0.17371
+133	-21.5	0.35808
+134	-21.5	0.46087
+135	-21.5	0.34915
+136	-21.5	0.21363
+137	-21.5	0.17737
+138	-21.5	0.34413
+139	-21.5	0.63309
+140	-21.5	0.83403
+141	-21.5	0.70147
+142	-21.5	0.59957
+143	-21.5	0.49934
+144	-21.5	0.43312
+145	-21.5	0.65842
+146	-21.5	1.0732
+147	-21.5	1.4825
+148	-21.5	2.6918
+149	-21.5	2.7821
+150	-21.5	0
+151	-21.5	0
+152	-21.5	0
+153	-21.5	0
+154	-21.5	0
+155	-21.5	0
+156	-21.5	0
+157	-21.5	0
+158	-21.5	0
+159	-21.5	0
+160	-21.5	0
+161	-21.5	0
+162	-21.5	0
+163	-21.5	0
+164	-21.5	0
+165	-21.5	0
+166	-21.5	0
+167	-21.5	0
+168	-21.5	0
+169	-21.5	0
+170	-21.5	0
+171	-21.5	0
+172	-21.5	0
+173	-21.5	0
+174	-21.5	0
+175	-21.5	0
+176	-21.5	0
+177	-21.5	0
+178	-21.5	0
+179	-21.5	0
+180	-21.5	0
+181	-21.5	0
+182	-21.5	0
+183	-21.5	0
+184	-21.5	0
+185	-21.5	0
+186	-21.5	0
+187	-21.5	0
+188	-21.5	0
+189	-21.5	0
+190	-21.5	0
+191	-21.5	0
+192	-21.5	0
+193	-21.5	0
+194	-21.5	0
+195	-21.5	0
+196	-21.5	0
+197	-21.5	0
+198	-21.5	0
+199	-21.5	0
+200	-21.5	0
+201	-21.5	0
+202	-21.5	0
+203	-21.5	0
+204	-21.5	0
+205	-21.5	0
+206	-21.5	0
+207	-21.5	0
+208	-21.5	0
+209	-21.5	0
+210	-21.5	0
+211	-21.5	0
+212	-21.5	0
+213	-21.5	0
+214	-21.5	0
+215	-21.5	0
+216	-21.5	0
+217	-21.5	0
+218	-21.5	0
+219	-21.5	0
+220	-21.5	0
+221	-21.5	0
+222	-21.5	0
+223	-21.5	0
+224	-21.5	0
+225	-21.5	0
+226	-21.5	0
+227	-21.5	0
+228	-21.5	0
+229	-21.5	0
+230	-21.5	0
+231	-21.5	0
+232	-21.5	0
+233	-21.5	0
+234	-21.5	0
+235	-21.5	0
+236	-21.5	0
+237	-21.5	0
+238	-21.5	0
+239	-21.5	0
+240	-21.5	0
+241	-21.5	0
+242	-21.5	0
+243	-21.5	0
+244	-21.5	0
+245	-21.5	0
+246	-21.5	0
+247	-21.5	0
+248	-21.5	0
+249	-21.5	0
+250	-21.5	0
+251	-21.5	0
+252	-21.5	0
+253	-21.5	0
+254	-21.5	0
+255	-21.5	0
+256	-21.5	0
+257	-21.5	0
+258	-21.5	0
+259	-21.5	0
+260	-21.5	0
+261	-21.5	0
+262	-21.5	0
+263	-21.5	0
+264	-21.5	0
+265	-21.5	0
+266	-21.5	0
+267	-21.5	0
+268	-21.5	0
+269	-21.5	0
+270	-21.5	0
+271	-21.5	0
+272	-21.5	0
+273	-21.5	0
+274	-21.5	0
+275	-21.5	0
+276	-21.5	0
+277	-21.5	0
+278	-21.5	0
+279	-21.5	0
+280	-21.5	0
+281	-21.5	0
+282	-21.5	0
+283	-21.5	0
+284	-21.5	0
+285	-21.5	0
+286	-21.5	0
+287	-21.5	0
+288	-21.5	0
+289	-21.5	0
+290	-21.5	-0.0023166
+291	-21.5	0.00083051
+292	-21.5	-0.012406
+293	-21.5	-0.067133
+294	-21.5	-0.15332
+295	-21.5	-0.01585
+296	-21.5	0.39291
+297	-21.5	0.82265
+298	-21.5	0.52314
+299	-21.5	0.28559
+300	-21.5	0.20854
+301	-21.5	0.16564
+302	-21.5	0.24794
+303	-21.5	0.37476
+304	-21.5	0.6026
+305	-21.5	1.0428
+306	-21.5	1.413
+307	-21.5	1.655
+308	-21.5	1.348
+309	-21.5	0.60735
+310	-21.5	-0.014477
+311	-21.5	-0.3559
+312	-21.5	-0.49805
+313	-21.5	-0.50594
+314	-21.5	-0.29091
+315	-21.5	-0.35457
+316	-21.5	-0.44426
+317	-21.5	-0.50077
+318	-21.5	-0.46502
+319	-21.5	-0.15653
+320	-21.5	0
+321	-21.5	0
+322	-21.5	0
+323	-21.5	0
+324	-21.5	0
+325	-21.5	0
+326	-21.5	0
+327	-21.5	0
+328	-21.5	0
+329	-21.5	0
+330	-21.5	0
+331	-21.5	0
+332	-21.5	0
+333	-21.5	0
+334	-21.5	0
+335	-21.5	0
+336	-21.5	0
+337	-21.5	0
+338	-21.5	0
+339	-21.5	0
+340	-21.5	0
+341	-21.5	0
+342	-21.5	0
+343	-21.5	0
+344	-21.5	0
+345	-21.5	0
+346	-21.5	0
+347	-21.5	0
+348	-21.5	0
+349	-21.5	0
+350	-21.5	0
+351	-21.5	0
+352	-21.5	0
+353	-21.5	0
+354	-21.5	0
+355	-21.5	0
+356	-21.5	0
+357	-21.5	0
+358	-21.5	0
+359	-21.5	0
+360	-21.5	0
+0	-21	0
+1	-21	0
+2	-21	0
+3	-21	0
+4	-21	0
+5	-21	0
+6	-21	0
+7	-21	0
+8	-21	0
+9	-21	0
+10	-21	0
+11	-21	0
+12	-21	0
+13	-21	0
+14	-21	0.77297
+15	-21	1.3598
+16	-21	1.6192
+17	-21	1.7284
+18	-21	1.2539
+19	-21	0.87983
+20	-21	0.89609
+21	-21	0.98432
+22	-21	1.1708
+23	-21	0.96246
+24	-21	0.48264
+25	-21	0.39699
+26	-21	0.32193
+27	-21	0.241
+28	-21	0.18615
+29	-21	0.14696
+30	-21	-0.026666
+31	-21	-0.28349
+32	-21	-0.75352
+33	-21	-1.3291
+34	-21	-1.4041
+35	-21	-0.50461
+36	-21	0
+37	-21	0
+38	-21	0
+39	-21	0
+40	-21	0
+41	-21	0
+42	-21	0
+43	-21	0
+44	-21	0.0072809
+45	-21	-0.28975
+46	-21	-0.59758
+47	-21	-0.76089
+48	-21	-0.556
+49	-21	0
+50	-21	0
+51	-21	0
+52	-21	0
+53	-21	0
+54	-21	0
+55	-21	0
+56	-21	0
+57	-21	0
+58	-21	0
+59	-21	0
+60	-21	0
+61	-21	0
+62	-21	0
+63	-21	0
+64	-21	0
+65	-21	0
+66	-21	0
+67	-21	0
+68	-21	0
+69	-21	0
+70	-21	0
+71	-21	0
+72	-21	0
+73	-21	0
+74	-21	0
+75	-21	0
+76	-21	0
+77	-21	0
+78	-21	0
+79	-21	0
+80	-21	0
+81	-21	0
+82	-21	0
+83	-21	0
+84	-21	0
+85	-21	0
+86	-21	0
+87	-21	0
+88	-21	0
+89	-21	0
+90	-21	0
+91	-21	0
+92	-21	0
+93	-21	0
+94	-21	0
+95	-21	0
+96	-21	0
+97	-21	0
+98	-21	0
+99	-21	0
+100	-21	0
+101	-21	0
+102	-21	0
+103	-21	0
+104	-21	0
+105	-21	0
+106	-21	0
+107	-21	0
+108	-21	0
+109	-21	0
+110	-21	0
+111	-21	0
+112	-21	0
+113	-21	0
+114	-21	0
+115	-21	0
+116	-21	-0.22511
+117	-21	-0.26845
+118	-21	-0.65342
+119	-21	-0.93463
+120	-21	-1.1473
+121	-21	-1.1334
+122	-21	-1.2169
+123	-21	-1.3175
+124	-21	-1.2789
+125	-21	-1.1874
+126	-21	-1.3099
+127	-21	-1.5054
+128	-21	-1.4282
+129	-21	-1.0539
+130	-21	-0.50208
+131	-21	0.18691
+132	-21	0.38346
+133	-21	0.53768
+134	-21	0.5852
+135	-21	0.44969
+136	-21	0.28363
+137	-21	0.25037
+138	-21	0.41936
+139	-21	0.69914
+140	-21	0.80757
+141	-21	0.67293
+142	-21	0.57021
+143	-21	0.49286
+144	-21	0.4555
+145	-21	0.72472
+146	-21	1.2133
+147	-21	1.4739
+148	-21	2.5498
+149	-21	1.6389
+150	-21	0
+151	-21	0
+152	-21	0
+153	-21	0
+154	-21	0
+155	-21	0
+156	-21	0
+157	-21	0
+158	-21	0
+159	-21	0
+160	-21	0
+161	-21	0
+162	-21	0
+163	-21	0
+164	-21	0
+165	-21	0
+166	-21	0
+167	-21	0
+168	-21	0
+169	-21	0
+170	-21	0
+171	-21	0
+172	-21	0
+173	-21	0
+174	-21	0
+175	-21	0
+176	-21	0
+177	-21	0
+178	-21	0
+179	-21	0
+180	-21	0
+181	-21	0
+182	-21	0
+183	-21	0
+184	-21	0
+185	-21	0
+186	-21	0
+187	-21	0
+188	-21	0
+189	-21	0
+190	-21	0
+191	-21	0
+192	-21	0
+193	-21	0
+194	-21	0
+195	-21	0
+196	-21	0
+197	-21	0
+198	-21	0
+199	-21	0
+200	-21	0
+201	-21	0
+202	-21	0
+203	-21	0
+204	-21	0
+205	-21	0
+206	-21	0
+207	-21	0
+208	-21	0
+209	-21	0
+210	-21	0
+211	-21	0
+212	-21	0
+213	-21	0
+214	-21	0
+215	-21	0
+216	-21	0
+217	-21	0
+218	-21	0
+219	-21	0
+220	-21	0
+221	-21	0
+222	-21	0
+223	-21	0
+224	-21	0
+225	-21	0
+226	-21	0
+227	-21	0
+228	-21	0
+229	-21	0
+230	-21	0
+231	-21	0
+232	-21	0
+233	-21	0
+234	-21	0
+235	-21	0
+236	-21	0
+237	-21	0
+238	-21	0
+239	-21	0
+240	-21	0
+241	-21	0
+242	-21	0
+243	-21	0
+244	-21	0
+245	-21	0
+246	-21	0
+247	-21	0
+248	-21	0
+249	-21	0
+250	-21	0
+251	-21	0
+252	-21	0
+253	-21	0
+254	-21	0
+255	-21	0
+256	-21	0
+257	-21	0
+258	-21	0
+259	-21	0
+260	-21	0
+261	-21	0
+262	-21	0
+263	-21	0
+264	-21	0
+265	-21	0
+266	-21	0
+267	-21	0
+268	-21	0
+269	-21	0
+270	-21	0
+271	-21	0
+272	-21	0
+273	-21	0
+274	-21	0
+275	-21	0
+276	-21	0
+277	-21	0
+278	-21	0
+279	-21	0
+280	-21	0
+281	-21	0
+282	-21	0
+283	-21	0
+284	-21	0
+285	-21	0
+286	-21	0
+287	-21	0
+288	-21	0
+289	-21	0
+290	-21	-0.00093741
+291	-21	-0.0016498
+292	-21	-0.024156
+293	-21	-0.079014
+294	-21	-0.16623
+295	-21	0.014333
+296	-21	0.33168
+297	-21	0.7905
+298	-21	0.56135
+299	-21	0.29488
+300	-21	0.22087
+301	-21	0.17291
+302	-21	0.27638
+303	-21	0.4032
+304	-21	0.64828
+305	-21	1.0129
+306	-21	1.255
+307	-21	1.4504
+308	-21	1.0026
+309	-21	0.48044
+310	-21	-0.17394
+311	-21	-0.47616
+312	-21	-0.61632
+313	-21	-0.61559
+314	-21	-0.34148
+315	-21	-0.53279
+316	-21	-0.60228
+317	-21	-0.64946
+318	-21	-0.6374
+319	-21	-0.3104
+320	-21	0
+321	-21	0
+322	-21	0
+323	-21	0
+324	-21	0
+325	-21	0
+326	-21	0
+327	-21	0
+328	-21	0
+329	-21	0
+330	-21	0
+331	-21	0
+332	-21	0
+333	-21	0
+334	-21	0
+335	-21	0
+336	-21	0
+337	-21	0
+338	-21	0
+339	-21	0
+340	-21	0
+341	-21	0
+342	-21	0
+343	-21	0
+344	-21	0
+345	-21	0
+346	-21	0
+347	-21	0
+348	-21	0
+349	-21	0
+350	-21	0
+351	-21	0
+352	-21	0
+353	-21	0
+354	-21	0
+355	-21	0
+356	-21	0
+357	-21	0
+358	-21	0
+359	-21	0
+360	-21	0
+0	-20.5	0
+1	-20.5	0
+2	-20.5	0
+3	-20.5	0
+4	-20.5	0
+5	-20.5	0
+6	-20.5	0
+7	-20.5	0
+8	-20.5	0
+9	-20.5	0
+10	-20.5	0
+11	-20.5	0
+12	-20.5	0
+13	-20.5	0
+14	-20.5	0.90889
+15	-20.5	1.5697
+16	-20.5	2.1027
+17	-20.5	1.9552
+18	-20.5	1.346
+19	-20.5	1.0237
+20	-20.5	1.0277
+21	-20.5	1.2309
+22	-20.5	1.4117
+23	-20.5	1.3469
+24	-20.5	0.86706
+25	-20.5	0.45819
+26	-20.5	0.37872
+27	-20.5	0.29779
+28	-20.5	0.22697
+29	-20.5	0.18775
+30	-20.5	0.029772
+31	-20.5	-0.18201
+32	-20.5	-0.68179
+33	-20.5	-1.1617
+34	-20.5	-1.2354
+35	-20.5	-0.4371
+36	-20.5	0
+37	-20.5	0
+38	-20.5	0
+39	-20.5	0
+40	-20.5	0
+41	-20.5	0
+42	-20.5	0
+43	-20.5	0
+44	-20.5	0.0049453
+45	-20.5	-0.2663
+46	-20.5	-0.55588
+47	-20.5	-0.69836
+48	-20.5	-0.62511
+49	-20.5	0
+50	-20.5	0
+51	-20.5	0
+52	-20.5	0
+53	-20.5	0
+54	-20.5	0
+55	-20.5	0
+56	-20.5	0
+57	-20.5	0
+58	-20.5	0
+59	-20.5	0
+60	-20.5	0
+61	-20.5	0
+62	-20.5	0
+63	-20.5	0
+64	-20.5	0
+65	-20.5	0
+66	-20.5	0
+67	-20.5	0
+68	-20.5	0
+69	-20.5	0
+70	-20.5	0
+71	-20.5	0
+72	-20.5	0
+73	-20.5	0
+74	-20.5	0
+75	-20.5	0
+76	-20.5	0
+77	-20.5	0
+78	-20.5	0
+79	-20.5	0
+80	-20.5	0
+81	-20.5	0
+82	-20.5	0
+83	-20.5	0
+84	-20.5	0
+85	-20.5	0
+86	-20.5	0
+87	-20.5	0
+88	-20.5	0
+89	-20.5	0
+90	-20.5	0
+91	-20.5	0
+92	-20.5	0
+93	-20.5	0
+94	-20.5	0
+95	-20.5	0
+96	-20.5	0
+97	-20.5	0
+98	-20.5	0
+99	-20.5	0
+100	-20.5	0
+101	-20.5	0
+102	-20.5	0
+103	-20.5	0
+104	-20.5	0
+105	-20.5	0
+106	-20.5	0
+107	-20.5	0
+108	-20.5	0
+109	-20.5	0
+110	-20.5	0
+111	-20.5	0
+112	-20.5	0
+113	-20.5	0
+114	-20.5	0
+115	-20.5	0
+116	-20.5	-0.039607
+117	-20.5	0
+118	-20.5	-0.43605
+119	-20.5	-0.81943
+120	-20.5	-1.2268
+121	-20.5	-1.3282
+122	-20.5	-1.2821
+123	-20.5	-1.3535
+124	-20.5	-1.2671
+125	-20.5	-1.1514
+126	-20.5	-1.314
+127	-20.5	-1.4321
+128	-20.5	-1.3387
+129	-20.5	-1.0434
+130	-20.5	-0.3469
+131	-20.5	0.26779
+132	-20.5	0.60239
+133	-20.5	0.72896
+134	-20.5	0.6695
+135	-20.5	0.50158
+136	-20.5	0.33366
+137	-20.5	0.3332
+138	-20.5	0.49647
+139	-20.5	0.76519
+140	-20.5	0.83544
+141	-20.5	0.64439
+142	-20.5	0.53751
+143	-20.5	0.47604
+144	-20.5	0.47787
+145	-20.5	0.79646
+146	-20.5	1.3452
+147	-20.5	1.2763
+148	-20.5	1.9785
+149	-20.5	1.3324
+150	-20.5	0
+151	-20.5	0
+152	-20.5	0
+153	-20.5	0
+154	-20.5	0
+155	-20.5	0
+156	-20.5	0
+157	-20.5	0
+158	-20.5	0
+159	-20.5	0
+160	-20.5	0
+161	-20.5	0
+162	-20.5	0
+163	-20.5	0
+164	-20.5	0
+165	-20.5	0
+166	-20.5	0
+167	-20.5	0
+168	-20.5	0
+169	-20.5	0
+170	-20.5	0
+171	-20.5	0
+172	-20.5	0
+173	-20.5	0
+174	-20.5	0
+175	-20.5	0
+176	-20.5	0
+177	-20.5	0
+178	-20.5	0
+179	-20.5	0
+180	-20.5	0
+181	-20.5	0
+182	-20.5	0
+183	-20.5	0
+184	-20.5	0
+185	-20.5	0
+186	-20.5	0
+187	-20.5	0
+188	-20.5	0
+189	-20.5	0
+190	-20.5	0
+191	-20.5	0
+192	-20.5	0
+193	-20.5	0
+194	-20.5	0
+195	-20.5	0
+196	-20.5	0
+197	-20.5	0
+198	-20.5	0
+199	-20.5	0
+200	-20.5	0
+201	-20.5	0
+202	-20.5	0
+203	-20.5	0
+204	-20.5	0
+205	-20.5	0
+206	-20.5	0
+207	-20.5	0
+208	-20.5	0
+209	-20.5	0
+210	-20.5	0
+211	-20.5	0
+212	-20.5	0
+213	-20.5	0
+214	-20.5	0
+215	-20.5	0
+216	-20.5	0
+217	-20.5	0
+218	-20.5	0
+219	-20.5	0
+220	-20.5	0
+221	-20.5	0
+222	-20.5	0
+223	-20.5	0
+224	-20.5	0
+225	-20.5	0
+226	-20.5	0
+227	-20.5	0
+228	-20.5	0
+229	-20.5	0
+230	-20.5	0
+231	-20.5	0
+232	-20.5	0
+233	-20.5	0
+234	-20.5	0
+235	-20.5	0
+236	-20.5	0
+237	-20.5	0
+238	-20.5	0
+239	-20.5	0
+240	-20.5	0
+241	-20.5	0
+242	-20.5	0
+243	-20.5	0
+244	-20.5	0
+245	-20.5	0
+246	-20.5	0
+247	-20.5	0
+248	-20.5	0
+249	-20.5	0
+250	-20.5	0
+251	-20.5	0
+252	-20.5	0
+253	-20.5	0
+254	-20.5	0
+255	-20.5	0
+256	-20.5	0
+257	-20.5	0
+258	-20.5	0
+259	-20.5	0
+260	-20.5	0
+261	-20.5	0
+262	-20.5	0
+263	-20.5	0
+264	-20.5	0
+265	-20.5	0
+266	-20.5	0
+267	-20.5	0
+268	-20.5	0
+269	-20.5	0
+270	-20.5	0
+271	-20.5	0
+272	-20.5	0
+273	-20.5	0
+274	-20.5	0
+275	-20.5	0
+276	-20.5	0
+277	-20.5	0
+278	-20.5	0
+279	-20.5	0
+280	-20.5	0
+281	-20.5	0
+282	-20.5	0
+283	-20.5	0
+284	-20.5	0
+285	-20.5	0
+286	-20.5	0
+287	-20.5	0
+288	-20.5	0
+289	-20.5	0
+290	-20.5	-3.0898e-05
+291	-20.5	-0.0054604
+292	-20.5	-0.064093
+293	-20.5	-0.11161
+294	-20.5	-0.17914
+295	-20.5	0.044516
+296	-20.5	0.34989
+297	-20.5	0.74658
+298	-20.5	0.59955
+299	-20.5	0.30417
+300	-20.5	0.2332
+301	-20.5	0.18176
+302	-20.5	0.30457
+303	-20.5	0.43164
+304	-20.5	0.61292
+305	-20.5	0.85498
+306	-20.5	1.097
+307	-20.5	1.105
+308	-20.5	0.71777
+309	-20.5	0.26799
+310	-20.5	-0.24226
+311	-20.5	-0.58578
+312	-20.5	-0.73327
+313	-20.5	-0.73618
+314	-20.5	-0.3974
+315	-20.5	-0.70038
+316	-20.5	-0.74443
+317	-20.5	-0.7959
+318	-20.5	-0.75066
+319	-20.5	-0.46379
+320	-20.5	0
+321	-20.5	0
+322	-20.5	0
+323	-20.5	0
+324	-20.5	0
+325	-20.5	0
+326	-20.5	0
+327	-20.5	0
+328	-20.5	0
+329	-20.5	0
+330	-20.5	0
+331	-20.5	0
+332	-20.5	0
+333	-20.5	0
+334	-20.5	0
+335	-20.5	0
+336	-20.5	0
+337	-20.5	0
+338	-20.5	0
+339	-20.5	0
+340	-20.5	0
+341	-20.5	0
+342	-20.5	0
+343	-20.5	0
+344	-20.5	0
+345	-20.5	0
+346	-20.5	0
+347	-20.5	0
+348	-20.5	0
+349	-20.5	0
+350	-20.5	0
+351	-20.5	0
+352	-20.5	0
+353	-20.5	0
+354	-20.5	0
+355	-20.5	0
+356	-20.5	0
+357	-20.5	0
+358	-20.5	0
+359	-20.5	0
+360	-20.5	0
+0	-20	0
+1	-20	0
+2	-20	0
+3	-20	0
+4	-20	0
+5	-20	0
+6	-20	0
+7	-20	0
+8	-20	0
+9	-20	0
+10	-20	0
+11	-20	0
+12	-20	0
+13	-20	0.29726
+14	-20	1.1542
+15	-20	1.9436
+16	-20	2.474
+17	-20	2.7213
+18	-20	1.8722
+19	-20	1.1596
+20	-20	1.2499
+21	-20	1.4776
+22	-20	1.6526
+23	-20	1.6164
+24	-20	1.1429
+25	-20	0.73433
+26	-20	0.46342
+27	-20	0.35458
+28	-20	0.27365
+29	-20	0.22626
+30	-20	0.10153
+31	-20	-0.096886
+32	-20	-0.54267
+33	-20	-0.97482
+34	-20	-1.0464
+35	-20	-0.12542
+36	-20	0
+37	-20	0
+38	-20	0
+39	-20	0
+40	-20	0
+41	-20	0
+42	-20	0
+43	-20	0
+44	-20	0
+45	-20	-0.20475
+46	-20	-0.47368
+47	-20	-0.63855
+48	-20	-0.63063
+49	-20	-0.11197
+50	-20	0
+51	-20	0
+52	-20	0
+53	-20	0
+54	-20	0
+55	-20	0
+56	-20	0
+57	-20	0
+58	-20	0
+59	-20	0
+60	-20	0
+61	-20	0
+62	-20	0
+63	-20	0
+64	-20	0
+65	-20	0
+66	-20	0
+67	-20	0
+68	-20	0
+69	-20	0
+70	-20	0
+71	-20	0
+72	-20	0
+73	-20	0
+74	-20	0
+75	-20	0
+76	-20	0
+77	-20	0
+78	-20	0
+79	-20	0
+80	-20	0
+81	-20	0
+82	-20	0
+83	-20	0
+84	-20	0
+85	-20	0
+86	-20	0
+87	-20	0
+88	-20	0
+89	-20	0
+90	-20	0
+91	-20	0
+92	-20	0
+93	-20	0
+94	-20	0
+95	-20	0
+96	-20	0
+97	-20	0
+98	-20	0
+99	-20	0
+100	-20	0
+101	-20	0
+102	-20	0
+103	-20	0
+104	-20	0
+105	-20	0
+106	-20	0
+107	-20	0
+108	-20	0
+109	-20	0
+110	-20	0
+111	-20	0
+112	-20	0
+113	-20	0
+114	-20	0
+115	-20	0
+116	-20	0
+117	-20	0
+118	-20	-0.12495
+119	-20	-0.12989
+120	-20	-0.65518
+121	-20	-1.0982
+122	-20	-1.2916
+123	-20	-1.331
+124	-20	-1.1609
+125	-20	-1.1361
+126	-20	-1.2618
+127	-20	-1.3041
+128	-20	-1.2029
+129	-20	-0.85446
+130	-20	-0.17143
+131	-20	0.41274
+132	-20	0.81714
+133	-20	0.84276
+134	-20	0.70641
+135	-20	0.55161
+136	-20	0.40116
+137	-20	0.42113
+138	-20	0.57357
+139	-20	0.81753
+140	-20	0.85935
+141	-20	0.61653
+142	-20	0.50482
+143	-20	0.50932
+144	-20	0.52187
+145	-20	0.90251
+146	-20	1.4399
+147	-20	0.97083
+148	-20	0.46686
+149	-20	0.3758
+150	-20	0
+151	-20	0
+152	-20	0
+153	-20	0
+154	-20	0
+155	-20	0
+156	-20	0
+157	-20	0
+158	-20	0
+159	-20	0
+160	-20	0
+161	-20	0
+162	-20	0
+163	-20	0
+164	-20	0
+165	-20	0
+166	-20	0
+167	-20	0
+168	-20	0
+169	-20	0
+170	-20	0
+171	-20	0
+172	-20	0
+173	-20	0
+174	-20	0
+175	-20	0
+176	-20	0
+177	-20	0
+178	-20	0
+179	-20	0
+180	-20	0
+181	-20	0
+182	-20	0
+183	-20	0
+184	-20	0
+185	-20	0
+186	-20	0
+187	-20	0
+188	-20	0
+189	-20	0
+190	-20	0
+191	-20	0
+192	-20	0
+193	-20	0
+194	-20	0
+195	-20	0
+196	-20	0
+197	-20	0
+198	-20	0
+199	-20	0
+200	-20	0
+201	-20	0
+202	-20	0
+203	-20	0
+204	-20	0
+205	-20	0
+206	-20	0
+207	-20	0
+208	-20	0
+209	-20	0
+210	-20	0
+211	-20	0
+212	-20	0
+213	-20	0
+214	-20	0
+215	-20	0
+216	-20	0
+217	-20	0
+218	-20	0
+219	-20	0
+220	-20	0
+221	-20	0
+222	-20	0
+223	-20	0
+224	-20	0
+225	-20	0
+226	-20	0
+227	-20	0
+228	-20	0
+229	-20	0
+230	-20	0
+231	-20	0
+232	-20	0
+233	-20	0
+234	-20	0
+235	-20	0
+236	-20	0
+237	-20	0
+238	-20	0
+239	-20	0
+240	-20	0
+241	-20	0
+242	-20	0
+243	-20	0
+244	-20	0
+245	-20	0
+246	-20	0
+247	-20	0
+248	-20	0
+249	-20	0
+250	-20	0
+251	-20	0
+252	-20	0
+253	-20	0
+254	-20	0
+255	-20	0
+256	-20	0
+257	-20	0
+258	-20	0
+259	-20	0
+260	-20	0
+261	-20	0
+262	-20	0
+263	-20	0
+264	-20	0
+265	-20	0
+266	-20	0
+267	-20	0
+268	-20	0
+269	-20	0
+270	-20	0
+271	-20	0
+272	-20	0
+273	-20	0
+274	-20	0
+275	-20	0
+276	-20	0
+277	-20	0
+278	-20	0
+279	-20	0
+280	-20	0
+281	-20	0
+282	-20	0
+283	-20	0
+284	-20	0
+285	-20	0
+286	-20	0
+287	-20	0
+288	-20	0
+289	-20	0
+290	-20	0.00011803
+291	-20	-0.019029
+292	-20	-0.095132
+293	-20	-0.1551
+294	-20	-0.19205
+295	-20	0.074698
+296	-20	0.36811
+297	-20	0.70266
+298	-20	0.56529
+299	-20	0.33825
+300	-20	0.24553
+301	-20	0.20837
+302	-20	0.32636
+303	-20	0.45345
+304	-20	0.46829
+305	-20	0.69703
+306	-20	0.93909
+307	-20	0.7596
+308	-20	0.55324
+309	-20	0.055532
+310	-20	-0.302
+311	-20	-0.63949
+312	-20	-0.825
+313	-20	-0.82449
+314	-20	-0.80931
+315	-20	-0.80689
+316	-20	-0.85457
+317	-20	-0.93157
+318	-20	-0.92012
+319	-20	-0.63323
+320	-20	-0.089159
+321	-20	0
+322	-20	0
+323	-20	0
+324	-20	0
+325	-20	0
+326	-20	0
+327	-20	0
+328	-20	0
+329	-20	0
+330	-20	0
+331	-20	0
+332	-20	0
+333	-20	0
+334	-20	0
+335	-20	0
+336	-20	0
+337	-20	0
+338	-20	0
+339	-20	0
+340	-20	0
+341	-20	0
+342	-20	0
+343	-20	0
+344	-20	0
+345	-20	0
+346	-20	0
+347	-20	0
+348	-20	0
+349	-20	0
+350	-20	0
+351	-20	0
+352	-20	0
+353	-20	0
+354	-20	0
+355	-20	0
+356	-20	0
+357	-20	0
+358	-20	0
+359	-20	0
+360	-20	0
+0	-19.5	0
+1	-19.5	0
+2	-19.5	0
+3	-19.5	0
+4	-19.5	0
+5	-19.5	0
+6	-19.5	0
+7	-19.5	0
+8	-19.5	0
+9	-19.5	0
+10	-19.5	0
+11	-19.5	0
+12	-19.5	0
+13	-19.5	0.65245
+14	-19.5	1.3868
+15	-19.5	2.3971
+16	-19.5	3.274
+17	-19.5	3.4696
+18	-19.5	2.3984
+19	-19.5	1.5156
+20	-19.5	1.4965
+21	-19.5	1.7242
+22	-19.5	1.9447
+23	-19.5	1.8652
+24	-19.5	1.3917
+25	-19.5	1.0746
+26	-19.5	0.65381
+27	-19.5	0.49859
+28	-19.5	0.34337
+29	-19.5	0.26476
+30	-19.5	0.17329
+31	-19.5	-0.020782
+32	-19.5	-0.36317
+33	-19.5	-0.76725
+34	-19.5	-0.86715
+35	-19.5	-0.53298
+36	-19.5	0
+37	-19.5	0
+38	-19.5	0
+39	-19.5	0
+40	-19.5	0
+41	-19.5	0
+42	-19.5	0
+43	-19.5	0
+44	-19.5	0
+45	-19.5	-0.10735
+46	-19.5	-0.44393
+47	-19.5	-0.61403
+48	-19.5	-0.58341
+49	-19.5	-0.30358
+50	-19.5	0
+51	-19.5	0
+52	-19.5	0
+53	-19.5	0
+54	-19.5	0
+55	-19.5	0
+56	-19.5	0
+57	-19.5	0
+58	-19.5	0
+59	-19.5	0
+60	-19.5	0
+61	-19.5	0
+62	-19.5	0
+63	-19.5	0
+64	-19.5	0
+65	-19.5	0
+66	-19.5	0
+67	-19.5	0
+68	-19.5	0
+69	-19.5	0
+70	-19.5	0
+71	-19.5	0
+72	-19.5	0
+73	-19.5	0
+74	-19.5	0
+75	-19.5	0
+76	-19.5	0
+77	-19.5	0
+78	-19.5	0
+79	-19.5	0
+80	-19.5	0
+81	-19.5	0
+82	-19.5	0
+83	-19.5	0
+84	-19.5	0
+85	-19.5	0
+86	-19.5	0
+87	-19.5	0
+88	-19.5	0
+89	-19.5	0
+90	-19.5	0
+91	-19.5	0
+92	-19.5	0
+93	-19.5	0
+94	-19.5	0
+95	-19.5	0
+96	-19.5	0
+97	-19.5	0
+98	-19.5	0
+99	-19.5	0
+100	-19.5	0
+101	-19.5	0
+102	-19.5	0
+103	-19.5	0
+104	-19.5	0
+105	-19.5	0
+106	-19.5	0
+107	-19.5	0
+108	-19.5	0
+109	-19.5	0
+110	-19.5	0
+111	-19.5	0
+112	-19.5	0
+113	-19.5	0
+114	-19.5	0
+115	-19.5	0
+116	-19.5	0
+117	-19.5	0
+118	-19.5	0
+119	-19.5	0
+120	-19.5	-0.19218
+121	-19.5	-0.50286
+122	-19.5	-1.2731
+123	-19.5	-1.2006
+124	-19.5	-1.0407
+125	-19.5	-1.1075
+126	-19.5	-1.1371
+127	-19.5	-1.1597
+128	-19.5	-1.0671
+129	-19.5	-0.62205
+130	-19.5	-0.00037367
+131	-19.5	0.5838
+132	-19.5	0.88087
+133	-19.5	0.9065
+134	-19.5	0.75765
+135	-19.5	0.58371
+136	-19.5	0.53643
+137	-19.5	0.51891
+138	-19.5	0.65422
+139	-19.5	0.79686
+140	-19.5	0.72513
+141	-19.5	0.58995
+142	-19.5	0.49951
+143	-19.5	0.55192
+144	-19.5	0.62281
+145	-19.5	0.87703
+146	-19.5	1.3227
+147	-19.5	0.87317
+148	-19.5	0
+149	-19.5	0
+150	-19.5	0
+151	-19.5	0
+152	-19.5	0
+153	-19.5	0
+154	-19.5	0
+155	-19.5	0
+156	-19.5	0
+157	-19.5	0
+158	-19.5	0
+159	-19.5	0
+160	-19.5	0
+161	-19.5	0
+162	-19.5	0
+163	-19.5	0
+164	-19.5	0
+165	-19.5	0
+166	-19.5	0
+167	-19.5	0
+168	-19.5	0
+169	-19.5	0
+170	-19.5	0
+171	-19.5	0
+172	-19.5	0
+173	-19.5	0
+174	-19.5	0
+175	-19.5	0
+176	-19.5	0
+177	-19.5	0
+178	-19.5	0
+179	-19.5	0
+180	-19.5	0
+181	-19.5	0
+182	-19.5	0
+183	-19.5	0
+184	-19.5	0
+185	-19.5	0
+186	-19.5	0
+187	-19.5	0
+188	-19.5	0
+189	-19.5	0
+190	-19.5	0
+191	-19.5	0
+192	-19.5	0
+193	-19.5	0
+194	-19.5	0
+195	-19.5	0
+196	-19.5	0
+197	-19.5	0
+198	-19.5	0
+199	-19.5	0
+200	-19.5	0
+201	-19.5	0
+202	-19.5	0
+203	-19.5	0
+204	-19.5	0
+205	-19.5	0
+206	-19.5	0
+207	-19.5	0
+208	-19.5	0
+209	-19.5	0
+210	-19.5	0
+211	-19.5	0
+212	-19.5	0
+213	-19.5	0
+214	-19.5	0
+215	-19.5	0
+216	-19.5	0
+217	-19.5	0
+218	-19.5	0
+219	-19.5	0
+220	-19.5	0
+221	-19.5	0
+222	-19.5	0
+223	-19.5	0
+224	-19.5	0
+225	-19.5	0
+226	-19.5	0
+227	-19.5	0
+228	-19.5	0
+229	-19.5	0
+230	-19.5	0
+231	-19.5	0
+232	-19.5	0
+233	-19.5	0
+234	-19.5	0
+235	-19.5	0
+236	-19.5	0
+237	-19.5	0
+238	-19.5	0
+239	-19.5	0
+240	-19.5	0
+241	-19.5	0
+242	-19.5	0
+243	-19.5	0
+244	-19.5	0
+245	-19.5	0
+246	-19.5	0
+247	-19.5	0
+248	-19.5	0
+249	-19.5	0
+250	-19.5	0
+251	-19.5	0
+252	-19.5	0
+253	-19.5	0
+254	-19.5	0
+255	-19.5	0
+256	-19.5	0
+257	-19.5	0
+258	-19.5	0
+259	-19.5	0
+260	-19.5	0
+261	-19.5	0
+262	-19.5	0
+263	-19.5	0
+264	-19.5	0
+265	-19.5	0
+266	-19.5	0
+267	-19.5	0
+268	-19.5	0
+269	-19.5	0
+270	-19.5	0
+271	-19.5	0
+272	-19.5	0
+273	-19.5	0
+274	-19.5	0
+275	-19.5	0
+276	-19.5	0
+277	-19.5	0
+278	-19.5	0
+279	-19.5	0
+280	-19.5	0
+281	-19.5	0
+282	-19.5	0
+283	-19.5	0
+284	-19.5	0
+285	-19.5	0
+286	-19.5	0
+287	-19.5	0
+288	-19.5	0
+289	-19.5	0
+290	-19.5	-0.010588
+291	-19.5	-0.036277
+292	-19.5	-0.12889
+293	-19.5	-0.16496
+294	-19.5	-0.20496
+295	-19.5	0.082422
+296	-19.5	0.38632
+297	-19.5	0.7691
+298	-19.5	0.5479
+299	-19.5	0.37646
+300	-19.5	0.26246
+301	-19.5	0.23498
+302	-19.5	0.34816
+303	-19.5	0.47524
+304	-19.5	0.43948
+305	-19.5	0.53908
+306	-19.5	0.78114
+307	-19.5	0.51177
+308	-19.5	0.38871
+309	-19.5	-0.018217
+310	-19.5	-0.35253
+311	-19.5	-0.68439
+312	-19.5	-0.91672
+313	-19.5	-0.88608
+314	-19.5	-0.83742
+315	-19.5	-0.88469
+316	-19.5	-0.95748
+317	-19.5	-1.0053
+318	-19.5	-1.0456
+319	-19.5	-0.76673
+320	-19.5	-0.27867
+321	-19.5	0
+322	-19.5	0
+323	-19.5	0
+324	-19.5	0
+325	-19.5	0
+326	-19.5	0
+327	-19.5	0
+328	-19.5	0
+329	-19.5	0
+330	-19.5	0
+331	-19.5	0
+332	-19.5	0
+333	-19.5	0
+334	-19.5	0
+335	-19.5	0
+336	-19.5	0
+337	-19.5	0
+338	-19.5	0
+339	-19.5	0
+340	-19.5	0
+341	-19.5	0
+342	-19.5	0
+343	-19.5	0
+344	-19.5	0
+345	-19.5	0
+346	-19.5	0
+347	-19.5	0
+348	-19.5	0
+349	-19.5	0
+350	-19.5	0
+351	-19.5	0
+352	-19.5	0
+353	-19.5	0
+354	-19.5	0
+355	-19.5	0
+356	-19.5	0
+357	-19.5	0
+358	-19.5	0
+359	-19.5	0
+360	-19.5	0
+0	-19	0
+1	-19	0
+2	-19	0
+3	-19	0
+4	-19	0
+5	-19	0
+6	-19	0
+7	-19	0
+8	-19	0
+9	-19	0
+10	-19	0
+11	-19	0
+12	-19	0
+13	-19	1.0815
+14	-19	1.6671
+15	-19	2.7223
+16	-19	3.9935
+17	-19	4.2179
+18	-19	2.9246
+19	-19	1.7
+20	-19	1.5742
+21	-19	1.9708
+22	-19	2.3478
+23	-19	2.114
+24	-19	1.7025
+25	-19	1.4149
+26	-19	0.99122
+27	-19	0.68898
+28	-19	0.54389
+29	-19	0.45418
+30	-19	0.24505
+31	-19	0.056693
+32	-19	-0.26177
+33	-19	-0.55732
+34	-19	-0.70068
+35	-19	-0.61925
+36	-19	-0.2134
+37	-19	0
+38	-19	0
+39	-19	0
+40	-19	0
+41	-19	0
+42	-19	0
+43	-19	0
+44	-19	0
+45	-19	0.0088186
+46	-19	-0.33291
+47	-19	-0.60057
+48	-19	-0.53466
+49	-19	-0.35799
+50	-19	0
+51	-19	0
+52	-19	0
+53	-19	0
+54	-19	0
+55	-19	0
+56	-19	0
+57	-19	0
+58	-19	0
+59	-19	0
+60	-19	0
+61	-19	0
+62	-19	0
+63	-19	0
+64	-19	0
+65	-19	0
+66	-19	0
+67	-19	0
+68	-19	0
+69	-19	0
+70	-19	0
+71	-19	0
+72	-19	0
+73	-19	0
+74	-19	0
+75	-19	0
+76	-19	0
+77	-19	0
+78	-19	0
+79	-19	0
+80	-19	0
+81	-19	0
+82	-19	0
+83	-19	0
+84	-19	0
+85	-19	0
+86	-19	0
+87	-19	0
+88	-19	0
+89	-19	0
+90	-19	0
+91	-19	0
+92	-19	0
+93	-19	0
+94	-19	0
+95	-19	0
+96	-19	0
+97	-19	0
+98	-19	0
+99	-19	0
+100	-19	0
+101	-19	0
+102	-19	0
+103	-19	0
+104	-19	0
+105	-19	0
+106	-19	0
+107	-19	0
+108	-19	0
+109	-19	0
+110	-19	0
+111	-19	0
+112	-19	0
+113	-19	0
+114	-19	0
+115	-19	0
+116	-19	0
+117	-19	0
+118	-19	0
+119	-19	0
+120	-19	0
+121	-19	0
+122	-19	-1.0459
+123	-19	-1.0526
+124	-19	-0.93771
+125	-19	-1.013
+126	-19	-1.0384
+127	-19	-1.0041
+128	-19	-0.89721
+129	-19	-0.43568
+130	-19	0.17068
+131	-19	0.69214
+132	-19	0.93384
+133	-19	0.97023
+134	-19	0.92187
+135	-19	0.75724
+136	-19	0.73254
+137	-19	0.67613
+138	-19	0.77193
+139	-19	0.73294
+140	-19	0.62677
+141	-19	0.63854
+142	-19	0.54044
+143	-19	0.56131
+144	-19	0.74025
+145	-19	0.8896
+146	-19	0.98277
+147	-19	0.32508
+148	-19	0
+149	-19	0
+150	-19	0
+151	-19	0
+152	-19	0
+153	-19	0
+154	-19	0
+155	-19	0
+156	-19	0
+157	-19	0
+158	-19	0
+159	-19	0
+160	-19	0
+161	-19	0
+162	-19	0
+163	-19	0
+164	-19	0
+165	-19	0
+166	-19	0
+167	-19	0
+168	-19	0
+169	-19	0
+170	-19	0
+171	-19	0
+172	-19	0
+173	-19	0
+174	-19	0
+175	-19	0
+176	-19	0
+177	-19	0
+178	-19	0
+179	-19	0
+180	-19	0
+181	-19	0
+182	-19	0
+183	-19	0
+184	-19	0
+185	-19	0
+186	-19	0
+187	-19	0
+188	-19	0
+189	-19	0
+190	-19	0
+191	-19	0
+192	-19	0
+193	-19	0
+194	-19	0
+195	-19	0
+196	-19	0
+197	-19	0
+198	-19	0
+199	-19	0
+200	-19	0
+201	-19	0
+202	-19	0
+203	-19	0
+204	-19	0
+205	-19	0
+206	-19	0
+207	-19	0
+208	-19	0
+209	-19	0
+210	-19	0
+211	-19	0
+212	-19	0
+213	-19	0
+214	-19	0
+215	-19	0
+216	-19	0
+217	-19	0
+218	-19	0
+219	-19	0
+220	-19	0
+221	-19	0
+222	-19	0
+223	-19	0
+224	-19	0
+225	-19	0
+226	-19	0
+227	-19	0
+228	-19	0
+229	-19	0
+230	-19	0
+231	-19	0
+232	-19	0
+233	-19	0
+234	-19	0
+235	-19	0
+236	-19	0
+237	-19	0
+238	-19	0
+239	-19	0
+240	-19	0
+241	-19	0
+242	-19	0
+243	-19	0
+244	-19	0
+245	-19	0
+246	-19	0
+247	-19	0
+248	-19	0
+249	-19	0
+250	-19	0
+251	-19	0
+252	-19	0
+253	-19	0
+254	-19	0
+255	-19	0
+256	-19	0
+257	-19	0
+258	-19	0
+259	-19	0
+260	-19	0
+261	-19	0
+262	-19	0
+263	-19	0
+264	-19	0
+265	-19	0
+266	-19	0
+267	-19	0
+268	-19	0
+269	-19	0
+270	-19	0
+271	-19	0
+272	-19	0
+273	-19	0
+274	-19	0
+275	-19	0
+276	-19	0
+277	-19	0
+278	-19	0
+279	-19	0
+280	-19	0
+281	-19	0
+282	-19	0
+283	-19	0
+284	-19	0
+285	-19	0
+286	-19	0
+287	-19	0
+288	-19	0
+289	-19	0
+290	-19	-0.049071
+291	-19	-0.066493
+292	-19	-0.097859
+293	-19	-0.14224
+294	-19	-0.16174
+295	-19	0.08006
+296	-19	0.54138
+297	-19	0.83558
+298	-19	0.61439
+299	-19	0.39319
+300	-19	0.28907
+301	-19	0.26159
+302	-19	0.36995
+303	-19	0.49704
+304	-19	0.41067
+305	-19	0.39287
+306	-19	0.51657
+307	-19	0.34724
+308	-19	0.23349
+309	-19	-0.065557
+310	-19	-0.39713
+311	-19	-0.7387
+312	-19	-0.98834
+313	-19	-0.88598
+314	-19	-0.90527
+315	-19	-0.9682
+316	-19	-1.0516
+317	-19	-1.0492
+318	-19	-1.1203
+319	-19	-0.87916
+320	-19	-0.36959
+321	-19	0
+322	-19	0
+323	-19	0
+324	-19	0
+325	-19	0
+326	-19	0
+327	-19	0
+328	-19	0
+329	-19	0
+330	-19	0
+331	-19	0
+332	-19	0
+333	-19	0
+334	-19	0
+335	-19	0
+336	-19	0
+337	-19	0
+338	-19	0
+339	-19	0
+340	-19	0
+341	-19	0
+342	-19	0
+343	-19	0
+344	-19	0
+345	-19	0
+346	-19	0
+347	-19	0
+348	-19	0
+349	-19	0
+350	-19	0
+351	-19	0
+352	-19	0
+353	-19	0
+354	-19	0
+355	-19	0
+356	-19	0
+357	-19	0
+358	-19	0
+359	-19	0
+360	-19	0
+0	-18.5	0
+1	-18.5	0
+2	-18.5	0
+3	-18.5	0
+4	-18.5	0
+5	-18.5	0
+6	-18.5	0
+7	-18.5	0
+8	-18.5	0
+9	-18.5	0
+10	-18.5	0
+11	-18.5	0
+12	-18.5	0
+13	-18.5	1.4608
+14	-18.5	2.2306
+15	-18.5	2.9925
+16	-18.5	4.2893
+17	-18.5	4.8086
+18	-18.5	3.4508
+19	-18.5	1.7261
+20	-18.5	1.4925
+21	-18.5	1.8918
+22	-18.5	2.7508
+23	-18.5	2.3628
+24	-18.5	2.0428
+25	-18.5	1.7551
+26	-18.5	1.3888
+27	-18.5	0.89963
+28	-18.5	0.7628
+29	-18.5	0.92486
+30	-18.5	0.41551
+31	-18.5	0.13117
+32	-18.5	-0.17426
+33	-18.5	-0.36401
+34	-18.5	-0.66677
+35	-18.5	-0.61701
+36	-18.5	-0.49045
+37	-18.5	0
+38	-18.5	0
+39	-18.5	0
+40	-18.5	0
+41	-18.5	0
+42	-18.5	0
+43	-18.5	0
+44	-18.5	0.091848
+45	-18.5	0.11295
+46	-18.5	-0.19937
+47	-18.5	-0.51827
+48	-18.5	-0.57357
+49	-18.5	-0.36613
+50	-18.5	0
+51	-18.5	0
+52	-18.5	0
+53	-18.5	0
+54	-18.5	0
+55	-18.5	0
+56	-18.5	0
+57	-18.5	0
+58	-18.5	0
+59	-18.5	0
+60	-18.5	0
+61	-18.5	0
+62	-18.5	0
+63	-18.5	0
+64	-18.5	0
+65	-18.5	0
+66	-18.5	0
+67	-18.5	0
+68	-18.5	0
+69	-18.5	0
+70	-18.5	0
+71	-18.5	0
+72	-18.5	0
+73	-18.5	0
+74	-18.5	0
+75	-18.5	0
+76	-18.5	0
+77	-18.5	0
+78	-18.5	0
+79	-18.5	0
+80	-18.5	0
+81	-18.5	0
+82	-18.5	0
+83	-18.5	0
+84	-18.5	0
+85	-18.5	0
+86	-18.5	0
+87	-18.5	0
+88	-18.5	0
+89	-18.5	0
+90	-18.5	0
+91	-18.5	0
+92	-18.5	0
+93	-18.5	0
+94	-18.5	0
+95	-18.5	0
+96	-18.5	0
+97	-18.5	0
+98	-18.5	0
+99	-18.5	0
+100	-18.5	0
+101	-18.5	0
+102	-18.5	0
+103	-18.5	0
+104	-18.5	0
+105	-18.5	0
+106	-18.5	0
+107	-18.5	0
+108	-18.5	0
+109	-18.5	0
+110	-18.5	0
+111	-18.5	0
+112	-18.5	0
+113	-18.5	0
+114	-18.5	0
+115	-18.5	0
+116	-18.5	0
+117	-18.5	0
+118	-18.5	0
+119	-18.5	0
+120	-18.5	0
+121	-18.5	0
+122	-18.5	-0.46721
+123	-18.5	-0.97663
+124	-18.5	-0.75997
+125	-18.5	-0.89981
+126	-18.5	-0.90081
+127	-18.5	-0.80183
+128	-18.5	-0.66864
+129	-18.5	-0.22356
+130	-18.5	0.30555
+131	-18.5	0.74459
+132	-18.5	0.96398
+133	-18.5	1.0438
+134	-18.5	1.0861
+135	-18.5	1.1388
+136	-18.5	0.92865
+137	-18.5	0.84148
+138	-18.5	0.88776
+139	-18.5	0.71824
+140	-18.5	0.52841
+141	-18.5	0.68714
+142	-18.5	0.59756
+143	-18.5	1.0528
+144	-18.5	1.0239
+145	-18.5	0.93729
+146	-18.5	0.61337
+147	-18.5	0
+148	-18.5	0
+149	-18.5	0
+150	-18.5	0
+151	-18.5	0
+152	-18.5	0
+153	-18.5	0
+154	-18.5	0
+155	-18.5	0
+156	-18.5	0
+157	-18.5	0
+158	-18.5	0
+159	-18.5	0
+160	-18.5	0
+161	-18.5	0
+162	-18.5	0
+163	-18.5	0
+164	-18.5	0
+165	-18.5	0
+166	-18.5	0
+167	-18.5	0
+168	-18.5	0
+169	-18.5	0
+170	-18.5	0
+171	-18.5	0
+172	-18.5	0
+173	-18.5	0
+174	-18.5	0
+175	-18.5	0
+176	-18.5	0
+177	-18.5	0
+178	-18.5	0
+179	-18.5	0
+180	-18.5	0
+181	-18.5	0
+182	-18.5	0
+183	-18.5	0
+184	-18.5	0
+185	-18.5	0
+186	-18.5	0
+187	-18.5	0
+188	-18.5	0
+189	-18.5	0
+190	-18.5	0
+191	-18.5	0
+192	-18.5	0
+193	-18.5	0
+194	-18.5	0
+195	-18.5	0
+196	-18.5	0
+197	-18.5	0
+198	-18.5	0
+199	-18.5	0
+200	-18.5	0
+201	-18.5	0
+202	-18.5	0
+203	-18.5	0
+204	-18.5	0
+205	-18.5	0
+206	-18.5	0
+207	-18.5	0
+208	-18.5	0
+209	-18.5	0
+210	-18.5	0
+211	-18.5	0
+212	-18.5	0
+213	-18.5	0
+214	-18.5	0
+215	-18.5	0
+216	-18.5	0
+217	-18.5	0
+218	-18.5	0
+219	-18.5	0
+220	-18.5	0
+221	-18.5	0
+222	-18.5	0
+223	-18.5	0
+224	-18.5	0
+225	-18.5	0
+226	-18.5	0
+227	-18.5	0
+228	-18.5	0
+229	-18.5	0
+230	-18.5	0
+231	-18.5	0
+232	-18.5	0
+233	-18.5	0
+234	-18.5	0
+235	-18.5	0
+236	-18.5	0
+237	-18.5	0
+238	-18.5	0
+239	-18.5	0
+240	-18.5	0
+241	-18.5	0
+242	-18.5	0
+243	-18.5	0
+244	-18.5	0
+245	-18.5	0
+246	-18.5	0
+247	-18.5	0
+248	-18.5	0
+249	-18.5	0
+250	-18.5	0
+251	-18.5	0
+252	-18.5	0
+253	-18.5	0
+254	-18.5	0
+255	-18.5	0
+256	-18.5	0
+257	-18.5	0
+258	-18.5	0
+259	-18.5	0
+260	-18.5	0
+261	-18.5	0
+262	-18.5	0
+263	-18.5	0
+264	-18.5	0
+265	-18.5	0
+266	-18.5	0
+267	-18.5	0
+268	-18.5	0
+269	-18.5	0
+270	-18.5	0
+271	-18.5	0
+272	-18.5	0
+273	-18.5	0
+274	-18.5	0
+275	-18.5	0
+276	-18.5	0
+277	-18.5	0
+278	-18.5	0
+279	-18.5	0
+280	-18.5	0
+281	-18.5	0
+282	-18.5	0
+283	-18.5	0
+284	-18.5	0
+285	-18.5	0
+286	-18.5	0
+287	-18.5	0
+288	-18.5	0
+289	-18.5	0
+290	-18.5	-0.096909
+291	-18.5	-0.1068
+292	-18.5	-0.091248
+293	-18.5	-0.1182
+294	-18.5	-0.10157
+295	-18.5	0.14022
+296	-18.5	0.74368
+297	-18.5	0.90207
+298	-18.5	0.68087
+299	-18.5	0.45554
+300	-18.5	0.31568
+301	-18.5	0.2882
+302	-18.5	0.39175
+303	-18.5	0.47825
+304	-18.5	0.3852
+305	-18.5	0.36405
+306	-18.5	0.32632
+307	-18.5	0.26237
+308	-18.5	0.12828
+309	-18.5	-0.11016
+310	-18.5	-0.44174
+311	-18.5	-0.793
+312	-18.5	-0.9521
+313	-18.5	-0.87033
+314	-18.5	-0.97311
+315	-18.5	-1.0618
+316	-18.5	-1.0866
+317	-18.5	-1.1049
+318	-18.5	-1.199
+319	-18.5	-0.94355
+320	-18.5	-0.41582
+321	-18.5	0
+322	-18.5	0
+323	-18.5	0
+324	-18.5	0
+325	-18.5	0
+326	-18.5	0
+327	-18.5	0
+328	-18.5	0
+329	-18.5	0
+330	-18.5	0
+331	-18.5	0
+332	-18.5	0
+333	-18.5	0
+334	-18.5	0
+335	-18.5	0
+336	-18.5	0
+337	-18.5	0
+338	-18.5	0
+339	-18.5	0
+340	-18.5	0
+341	-18.5	0
+342	-18.5	0
+343	-18.5	0
+344	-18.5	0
+345	-18.5	0
+346	-18.5	0
+347	-18.5	0
+348	-18.5	0
+349	-18.5	0
+350	-18.5	0
+351	-18.5	0
+352	-18.5	0
+353	-18.5	0
+354	-18.5	0
+355	-18.5	0
+356	-18.5	0
+357	-18.5	0
+358	-18.5	0
+359	-18.5	0
+360	-18.5	0
+0	-18	0
+1	-18	0
+2	-18	0
+3	-18	0
+4	-18	0
+5	-18	0
+6	-18	0
+7	-18	0
+8	-18	0
+9	-18	0
+10	-18	0
+11	-18	0
+12	-18	0.54438
+13	-18	1.8925
+14	-18	2.7288
+15	-18	3.1936
+16	-18	4.2091
+17	-18	4.7862
+18	-18	3.5168
+19	-18	1.7866
+20	-18	1.4108
+21	-18	2.0913
+22	-18	3.0851
+23	-18	2.6706
+24	-18	2.383
+25	-18	2.0954
+26	-18	1.7865
+27	-18	1.1246
+28	-18	0.98171
+29	-18	1.2435
+30	-18	0.88619
+31	-18	0.19585
+32	-18	-0.086752
+33	-18	-0.21777
+34	-18	-0.61987
+35	-18	-0.88539
+36	-18	-0.53718
+37	-18	-0.34833
+38	-18	0
+39	-18	0
+40	-18	0
+41	-18	0
+42	-18	0
+43	-18	0
+44	-18	0.17024
+45	-18	0.21611
+46	-18	-0.067528
+47	-18	-0.39497
+48	-18	-0.61067
+49	-18	-0.38194
+50	-18	0
+51	-18	0
+52	-18	0
+53	-18	0
+54	-18	0
+55	-18	0
+56	-18	0
+57	-18	0
+58	-18	0
+59	-18	0
+60	-18	0
+61	-18	0
+62	-18	0
+63	-18	0
+64	-18	0
+65	-18	0
+66	-18	0
+67	-18	0
+68	-18	0
+69	-18	0
+70	-18	0
+71	-18	0
+72	-18	0
+73	-18	0
+74	-18	0
+75	-18	0
+76	-18	0
+77	-18	0
+78	-18	0
+79	-18	0
+80	-18	0
+81	-18	0
+82	-18	0
+83	-18	0
+84	-18	0
+85	-18	0
+86	-18	0
+87	-18	0
+88	-18	0
+89	-18	0
+90	-18	0
+91	-18	0
+92	-18	0
+93	-18	0
+94	-18	0
+95	-18	0
+96	-18	0
+97	-18	0
+98	-18	0
+99	-18	0
+100	-18	0
+101	-18	0
+102	-18	0
+103	-18	0
+104	-18	0
+105	-18	0
+106	-18	0
+107	-18	0
+108	-18	0
+109	-18	0
+110	-18	0
+111	-18	0
+112	-18	0
+113	-18	0
+114	-18	0
+115	-18	0
+116	-18	0
+117	-18	0
+118	-18	0
+119	-18	0
+120	-18	0
+121	-18	0
+122	-18	-0.085219
+123	-18	-0.83302
+124	-18	-0.54081
+125	-18	-0.58345
+126	-18	-0.62713
+127	-18	-0.58158
+128	-18	-0.43782
+129	-18	0.0089025
+130	-18	0.40816
+131	-18	0.78999
+132	-18	1.0026
+133	-18	1.1216
+134	-18	1.3186
+135	-18	1.4493
+136	-18	1.1759
+137	-18	1.091
+138	-18	0.96784
+139	-18	0.86263
+140	-18	0.39033
+141	-18	0.73588
+142	-18	0.95793
+143	-18	1.5485
+144	-18	1.4841
+145	-18	1.0834
+146	-18	0.45037
+147	-18	0
+148	-18	0
+149	-18	0
+150	-18	0
+151	-18	0
+152	-18	0
+153	-18	0
+154	-18	0
+155	-18	0
+156	-18	0
+157	-18	0
+158	-18	0
+159	-18	0
+160	-18	0
+161	-18	0
+162	-18	0
+163	-18	0
+164	-18	0
+165	-18	0
+166	-18	0
+167	-18	0
+168	-18	0
+169	-18	0
+170	-18	0
+171	-18	0
+172	-18	0
+173	-18	0
+174	-18	0
+175	-18	0
+176	-18	0
+177	-18	-0.00036835
+178	-18	-0.0111
+179	-18	0
+180	-18	0
+181	-18	0
+182	-18	0
+183	-18	0
+184	-18	0
+185	-18	0
+186	-18	0
+187	-18	0
+188	-18	0
+189	-18	0
+190	-18	0
+191	-18	0
+192	-18	0
+193	-18	0
+194	-18	0
+195	-18	0
+196	-18	0
+197	-18	0
+198	-18	0
+199	-18	0
+200	-18	0
+201	-18	0
+202	-18	0
+203	-18	0
+204	-18	0
+205	-18	0
+206	-18	0
+207	-18	0
+208	-18	0
+209	-18	0
+210	-18	0
+211	-18	0
+212	-18	0
+213	-18	0
+214	-18	0
+215	-18	0
+216	-18	0
+217	-18	0
+218	-18	0
+219	-18	0
+220	-18	0
+221	-18	0
+222	-18	0
+223	-18	0
+224	-18	0
+225	-18	0
+226	-18	0
+227	-18	0
+228	-18	0
+229	-18	0
+230	-18	0
+231	-18	0
+232	-18	0
+233	-18	0
+234	-18	0
+235	-18	0
+236	-18	0
+237	-18	0
+238	-18	0
+239	-18	0
+240	-18	0
+241	-18	0
+242	-18	0
+243	-18	0
+244	-18	0
+245	-18	0
+246	-18	0
+247	-18	0
+248	-18	0
+249	-18	0
+250	-18	0
+251	-18	0
+252	-18	0
+253	-18	0
+254	-18	0
+255	-18	0
+256	-18	0
+257	-18	0
+258	-18	0
+259	-18	0
+260	-18	0
+261	-18	0
+262	-18	0
+263	-18	0
+264	-18	0
+265	-18	0
+266	-18	0
+267	-18	0
+268	-18	0
+269	-18	0
+270	-18	0
+271	-18	0
+272	-18	0
+273	-18	0
+274	-18	0
+275	-18	0
+276	-18	0
+277	-18	0
+278	-18	0
+279	-18	0
+280	-18	0
+281	-18	0
+282	-18	0
+283	-18	0
+284	-18	0
+285	-18	0
+286	-18	0
+287	-18	0
+288	-18	0
+289	-18	-0.036952
+290	-18	-0.078574
+291	-18	-0.12847
+292	-18	-0.057077
+293	-18	-0.11606
+294	-18	-0.041411
+295	-18	0.30175
+296	-18	0.85427
+297	-18	0.96855
+298	-18	0.74735
+299	-18	0.5103
+300	-18	0.34229
+301	-18	0.31481
+302	-18	0.41354
+303	-18	0.45848
+304	-18	0.36543
+305	-18	0.33524
+306	-18	0.29124
+307	-18	0.22729
+308	-18	0.012041
+309	-18	-0.22263
+310	-18	-0.48635
+311	-18	-0.78964
+312	-18	-0.84211
+313	-18	-0.77385
+314	-18	-1.0046
+315	-18	-1.126
+316	-18	-1.073
+317	-18	-1.1124
+318	-18	-1.2865
+319	-18	-1.1113
+320	-18	-0.59178
+321	-18	-0.039619
+322	-18	0
+323	-18	0
+324	-18	0
+325	-18	0
+326	-18	0
+327	-18	0
+328	-18	0
+329	-18	0
+330	-18	0
+331	-18	0
+332	-18	0
+333	-18	0
+334	-18	0
+335	-18	0
+336	-18	0
+337	-18	0
+338	-18	0
+339	-18	0
+340	-18	0
+341	-18	0
+342	-18	0
+343	-18	0
+344	-18	0
+345	-18	0
+346	-18	0
+347	-18	0
+348	-18	0
+349	-18	0
+350	-18	0
+351	-18	0
+352	-18	0
+353	-18	0
+354	-18	0
+355	-18	0
+356	-18	0
+357	-18	0
+358	-18	0
+359	-18	0
+360	-18	0
+0	-17.5	0
+1	-17.5	0
+2	-17.5	0
+3	-17.5	0
+4	-17.5	0
+5	-17.5	0
+6	-17.5	0
+7	-17.5	0
+8	-17.5	0
+9	-17.5	0
+10	-17.5	0
+11	-17.5	0.10073
+12	-17.5	0.70904
+13	-17.5	2.0548
+14	-17.5	3.1666
+15	-17.5	3.534
+16	-17.5	3.9947
+17	-17.5	4.7638
+18	-17.5	3.3909
+19	-17.5	1.847
+20	-17.5	1.3292
+21	-17.5	2.4125
+22	-17.5	3.3339
+23	-17.5	3.0109
+24	-17.5	2.7233
+25	-17.5	2.4356
+26	-17.5	2.148
+27	-17.5	1.5148
+28	-17.5	1.2006
+29	-17.5	1.4997
+30	-17.5	1.3196
+31	-17.5	0.26053
+32	-17.5	0.00075695
+33	-17.5	-0.20105
+34	-17.5	-0.63354
+35	-17.5	-1.1358
+36	-17.5	-0.69027
+37	-17.5	-0.50681
+38	-17.5	-0.069943
+39	-17.5	0
+40	-17.5	0
+41	-17.5	0
+42	-17.5	0
+43	-17.5	0
+44	-17.5	0.12212
+45	-17.5	0.33573
+46	-17.5	0.086044
+47	-17.5	-0.27231
+48	-17.5	-0.55411
+49	-17.5	-0.38441
+50	-17.5	0
+51	-17.5	0
+52	-17.5	0
+53	-17.5	0
+54	-17.5	0
+55	-17.5	0
+56	-17.5	0
+57	-17.5	0
+58	-17.5	0
+59	-17.5	0
+60	-17.5	0
+61	-17.5	0
+62	-17.5	0
+63	-17.5	0
+64	-17.5	0
+65	-17.5	0
+66	-17.5	0
+67	-17.5	0
+68	-17.5	0
+69	-17.5	0
+70	-17.5	0
+71	-17.5	0
+72	-17.5	0
+73	-17.5	0
+74	-17.5	0
+75	-17.5	0
+76	-17.5	0
+77	-17.5	0
+78	-17.5	0
+79	-17.5	0
+80	-17.5	0
+81	-17.5	0
+82	-17.5	0
+83	-17.5	0
+84	-17.5	0
+85	-17.5	0
+86	-17.5	0
+87	-17.5	0
+88	-17.5	0
+89	-17.5	0
+90	-17.5	0
+91	-17.5	0
+92	-17.5	0
+93	-17.5	0
+94	-17.5	0
+95	-17.5	0
+96	-17.5	0
+97	-17.5	0
+98	-17.5	0
+99	-17.5	0
+100	-17.5	0
+101	-17.5	0
+102	-17.5	0
+103	-17.5	0
+104	-17.5	0
+105	-17.5	0
+106	-17.5	0
+107	-17.5	0
+108	-17.5	0
+109	-17.5	0
+110	-17.5	0
+111	-17.5	0
+112	-17.5	0
+113	-17.5	0
+114	-17.5	0
+115	-17.5	0
+116	-17.5	0
+117	-17.5	0
+118	-17.5	0
+119	-17.5	0
+120	-17.5	0
+121	-17.5	0
+122	-17.5	-0.21038
+123	-17.5	-0.55354
+124	-17.5	-0.29959
+125	-17.5	-0.23207
+126	-17.5	-0.32613
+127	-17.5	-0.32708
+128	-17.5	-0.25325
+129	-17.5	0.13163
+130	-17.5	0.51579
+131	-17.5	0.8646
+132	-17.5	1.101
+133	-17.5	1.2274
+134	-17.5	1.4418
+135	-17.5	1.7417
+136	-17.5	1.4769
+137	-17.5	1.406
+138	-17.5	1.1715
+139	-17.5	1.007
+140	-17.5	0.16342
+141	-17.5	0.72579
+142	-17.5	1.422
+143	-17.5	1.9824
+144	-17.5	2.0197
+145	-17.5	1.4153
+146	-17.5	0.17798
+147	-17.5	0
+148	-17.5	0
+149	-17.5	0
+150	-17.5	0
+151	-17.5	0
+152	-17.5	0
+153	-17.5	0
+154	-17.5	0
+155	-17.5	0
+156	-17.5	0
+157	-17.5	0
+158	-17.5	0
+159	-17.5	0
+160	-17.5	0
+161	-17.5	0
+162	-17.5	0
+163	-17.5	0
+164	-17.5	0
+165	-17.5	0
+166	-17.5	0
+167	-17.5	0
+168	-17.5	0
+169	-17.5	0
+170	-17.5	0
+171	-17.5	0
+172	-17.5	0
+173	-17.5	0
+174	-17.5	0
+175	-17.5	0
+176	-17.5	0
+177	-17.5	0
+178	-17.5	-0.0095075
+179	-17.5	0
+180	-17.5	0
+181	-17.5	0
+182	-17.5	0
+183	-17.5	0
+184	-17.5	0
+185	-17.5	0
+186	-17.5	0
+187	-17.5	0
+188	-17.5	0
+189	-17.5	0
+190	-17.5	0
+191	-17.5	0
+192	-17.5	0
+193	-17.5	0
+194	-17.5	0
+195	-17.5	0
+196	-17.5	0
+197	-17.5	0
+198	-17.5	0
+199	-17.5	0
+200	-17.5	0
+201	-17.5	0
+202	-17.5	0
+203	-17.5	0
+204	-17.5	0
+205	-17.5	0
+206	-17.5	0
+207	-17.5	0
+208	-17.5	0
+209	-17.5	0
+210	-17.5	0
+211	-17.5	0
+212	-17.5	0
+213	-17.5	0
+214	-17.5	0
+215	-17.5	0
+216	-17.5	0
+217	-17.5	0
+218	-17.5	0
+219	-17.5	0
+220	-17.5	0
+221	-17.5	0
+222	-17.5	0
+223	-17.5	0
+224	-17.5	0
+225	-17.5	0
+226	-17.5	0
+227	-17.5	0
+228	-17.5	0
+229	-17.5	0
+230	-17.5	0
+231	-17.5	0
+232	-17.5	0
+233	-17.5	0
+234	-17.5	0
+235	-17.5	0
+236	-17.5	0
+237	-17.5	0
+238	-17.5	0
+239	-17.5	0
+240	-17.5	0
+241	-17.5	0
+242	-17.5	0
+243	-17.5	0
+244	-17.5	0
+245	-17.5	0
+246	-17.5	0
+247	-17.5	0
+248	-17.5	0
+249	-17.5	0
+250	-17.5	0
+251	-17.5	0
+252	-17.5	0
+253	-17.5	0
+254	-17.5	0
+255	-17.5	0
+256	-17.5	0
+257	-17.5	0
+258	-17.5	0
+259	-17.5	0
+260	-17.5	0
+261	-17.5	0
+262	-17.5	0
+263	-17.5	0
+264	-17.5	0
+265	-17.5	0
+266	-17.5	0
+267	-17.5	0
+268	-17.5	0
+269	-17.5	0
+270	-17.5	0
+271	-17.5	0
+272	-17.5	0
+273	-17.5	0
+274	-17.5	0
+275	-17.5	0
+276	-17.5	0
+277	-17.5	0
+278	-17.5	0
+279	-17.5	0
+280	-17.5	0
+281	-17.5	0
+282	-17.5	0
+283	-17.5	0
+284	-17.5	0
+285	-17.5	0
+286	-17.5	0
+287	-17.5	0
+288	-17.5	0
+289	-17.5	-0.086901
+290	-17.5	-0.13183
+291	-17.5	-0.14294
+292	-17.5	-0.022905
+293	-17.5	-0.11258
+294	-17.5	0.018751
+295	-17.5	0.50306
+296	-17.5	0.92589
+297	-17.5	1.035
+298	-17.5	0.81384
+299	-17.5	0.56506
+300	-17.5	0.38214
+301	-17.5	0.34142
+302	-17.5	0.43534
+303	-17.5	0.43872
+304	-17.5	0.34567
+305	-17.5	0.30643
+306	-17.5	0.25616
+307	-17.5	0.13047
+308	-17.5	-0.1042
+309	-17.5	-0.33887
+310	-17.5	-0.56933
+311	-17.5	-0.69407
+312	-17.5	-0.73213
+313	-17.5	-0.71707
+314	-17.5	-0.93381
+315	-17.5	-1.1431
+316	-17.5	-1.0874
+317	-17.5	-1.1479
+318	-17.5	-1.3701
+319	-17.5	-1.2902
+320	-17.5	-0.77967
+321	-17.5	-0.1105
+322	-17.5	0
+323	-17.5	0
+324	-17.5	0
+325	-17.5	0
+326	-17.5	0
+327	-17.5	0
+328	-17.5	0
+329	-17.5	0
+330	-17.5	0
+331	-17.5	0
+332	-17.5	0
+333	-17.5	0
+334	-17.5	0
+335	-17.5	0
+336	-17.5	0
+337	-17.5	0
+338	-17.5	0
+339	-17.5	0
+340	-17.5	0
+341	-17.5	0
+342	-17.5	0
+343	-17.5	0
+344	-17.5	0
+345	-17.5	0
+346	-17.5	0
+347	-17.5	0
+348	-17.5	0
+349	-17.5	0
+350	-17.5	0
+351	-17.5	0
+352	-17.5	0
+353	-17.5	0
+354	-17.5	0
+355	-17.5	0
+356	-17.5	0
+357	-17.5	0
+358	-17.5	0
+359	-17.5	0
+360	-17.5	0
+0	-17	0
+1	-17	0
+2	-17	0
+3	-17	0
+4	-17	0
+5	-17	0
+6	-17	0
+7	-17	0
+8	-17	0
+9	-17	0
+10	-17	0
+11	-17	0
+12	-17	0.55296
+13	-17	1.7755
+14	-17	3.0771
+15	-17	3.7236
+16	-17	4.0474
+17	-17	4.6585
+18	-17	3.2651
+19	-17	1.9075
+20	-17	1.2475
+21	-17	2.7337
+22	-17	3.6388
+23	-17	3.3512
+24	-17	3.0635
+25	-17	2.7759
+26	-17	2.4883
+27	-17	1.905
+28	-17	1.4195
+29	-17	1.7559
+30	-17	1.6882
+31	-17	0.26024
+32	-17	0.028701
+33	-17	-0.23456
+34	-17	-0.91817
+35	-17	-0.9427
+36	-17	-0.65816
+37	-17	-0.52069
+38	-17	-0.53062
+39	-17	-0.086247
+40	-17	0
+41	-17	0
+42	-17	0
+43	-17	0
+44	-17	0
+45	-17	0.43179
+46	-17	0.25015
+47	-17	-0.17847
+48	-17	-0.5174
+49	-17	-0.57485
+50	-17	0
+51	-17	0
+52	-17	0
+53	-17	0
+54	-17	0
+55	-17	0
+56	-17	0
+57	-17	0
+58	-17	0
+59	-17	0
+60	-17	0
+61	-17	0
+62	-17	0
+63	-17	0
+64	-17	0
+65	-17	0
+66	-17	0
+67	-17	0
+68	-17	0
+69	-17	0
+70	-17	0
+71	-17	0
+72	-17	0
+73	-17	0
+74	-17	0
+75	-17	0
+76	-17	0
+77	-17	0
+78	-17	0
+79	-17	0
+80	-17	0
+81	-17	0
+82	-17	0
+83	-17	0
+84	-17	0
+85	-17	0
+86	-17	0
+87	-17	0
+88	-17	0
+89	-17	0
+90	-17	0
+91	-17	0
+92	-17	0
+93	-17	0
+94	-17	0
+95	-17	0
+96	-17	0
+97	-17	0
+98	-17	0
+99	-17	0
+100	-17	0
+101	-17	0
+102	-17	0
+103	-17	0
+104	-17	0
+105	-17	0
+106	-17	0
+107	-17	0
+108	-17	0
+109	-17	0
+110	-17	0
+111	-17	0
+112	-17	0
+113	-17	0
+114	-17	0
+115	-17	0
+116	-17	0
+117	-17	0
+118	-17	0
+119	-17	0
+120	-17	0
+121	-17	0
+122	-17	0
+123	-17	-0.17618
+124	-17	-0.050591
+125	-17	0.099638
+126	-17	-0.10632
+127	-17	-0.1297
+128	-17	-0.040566
+129	-17	0.2503
+130	-17	0.59975
+131	-17	0.94358
+132	-17	1.1993
+133	-17	1.3804
+134	-17	1.5632
+135	-17	1.8451
+136	-17	1.6964
+137	-17	1.3039
+138	-17	0.53135
+139	-17	0.64026
+140	-17	0
+141	-17	0.39462
+142	-17	1.8153
+143	-17	2.3588
+144	-17	2.3194
+145	-17	1.4443
+146	-17	0
+147	-17	0
+148	-17	0
+149	-17	0
+150	-17	0
+151	-17	0
+152	-17	0
+153	-17	0
+154	-17	0
+155	-17	0
+156	-17	0
+157	-17	0
+158	-17	0
+159	-17	0
+160	-17	0
+161	-17	0
+162	-17	0
+163	-17	0
+164	-17	0
+165	-17	0
+166	-17	0
+167	-17	0
+168	-17	0
+169	-17	0
+170	-17	0
+171	-17	0
+172	-17	0
+173	-17	0
+174	-17	0
+175	-17	0
+176	-17	0
+177	-17	0
+178	-17	0
+179	-17	-0.00064526
+180	-17	-0.01791
+181	-17	0
+182	-17	0
+183	-17	0
+184	-17	0
+185	-17	0
+186	-17	0
+187	-17	0
+188	-17	0
+189	-17	0
+190	-17	0
+191	-17	0
+192	-17	0
+193	-17	0
+194	-17	0
+195	-17	0
+196	-17	0
+197	-17	0
+198	-17	0
+199	-17	0
+200	-17	0
+201	-17	0
+202	-17	0
+203	-17	0
+204	-17	0
+205	-17	0
+206	-17	0
+207	-17	0
+208	-17	0
+209	-17	0
+210	-17	0
+211	-17	0
+212	-17	0
+213	-17	0
+214	-17	0
+215	-17	0
+216	-17	0
+217	-17	0
+218	-17	0
+219	-17	0
+220	-17	0
+221	-17	0
+222	-17	0
+223	-17	0
+224	-17	0
+225	-17	0
+226	-17	0
+227	-17	0
+228	-17	0
+229	-17	0
+230	-17	0
+231	-17	0
+232	-17	0
+233	-17	0
+234	-17	0
+235	-17	0
+236	-17	0
+237	-17	0
+238	-17	0
+239	-17	0
+240	-17	0
+241	-17	0
+242	-17	0
+243	-17	0
+244	-17	0
+245	-17	0
+246	-17	0
+247	-17	0
+248	-17	0
+249	-17	0
+250	-17	0
+251	-17	0
+252	-17	0
+253	-17	0
+254	-17	0
+255	-17	0
+256	-17	0
+257	-17	0
+258	-17	0
+259	-17	0
+260	-17	0
+261	-17	0
+262	-17	0
+263	-17	0
+264	-17	0
+265	-17	0
+266	-17	0
+267	-17	0
+268	-17	0
+269	-17	0
+270	-17	0
+271	-17	0
+272	-17	0
+273	-17	0
+274	-17	0
+275	-17	0
+276	-17	0
+277	-17	0
+278	-17	0
+279	-17	0
+280	-17	0
+281	-17	0
+282	-17	0
+283	-17	0
+284	-17	0
+285	-17	0
+286	-17	0
+287	-17	0
+288	-17	0.0030416
+289	-17	0.034032
+290	-17	-0.059742
+291	-17	-0.22288
+292	-17	-0.043229
+293	-17	-0.08591
+294	-17	0.08188
+295	-17	0.62881
+296	-17	0.99751
+297	-17	1.1015
+298	-17	0.86974
+299	-17	0.61982
+300	-17	0.44032
+301	-17	0.36803
+302	-17	0.45714
+303	-17	0.41896
+304	-17	0.32591
+305	-17	0.27762
+306	-17	0.22108
+307	-17	0.014236
+308	-17	-0.22044
+309	-17	-0.39056
+310	-17	-0.44652
+311	-17	-0.5985
+312	-17	-0.62214
+313	-17	-0.6603
+314	-17	-0.863
+315	-17	-1.1602
+316	-17	-1.102
+317	-17	-1.1459
+318	-17	-1.268
+319	-17	-1.2955
+320	-17	-0.8895
+321	-17	-0.21131
+322	-17	0
+323	-17	0
+324	-17	0
+325	-17	0
+326	-17	0
+327	-17	0
+328	-17	0
+329	-17	0
+330	-17	0
+331	-17	0
+332	-17	0
+333	-17	0
+334	-17	0
+335	-17	0
+336	-17	0
+337	-17	0
+338	-17	0
+339	-17	0
+340	-17	0
+341	-17	0
+342	-17	0
+343	-17	0
+344	-17	0
+345	-17	0
+346	-17	0
+347	-17	0
+348	-17	0
+349	-17	0
+350	-17	0
+351	-17	0
+352	-17	0
+353	-17	0
+354	-17	0
+355	-17	0
+356	-17	0
+357	-17	0
+358	-17	0
+359	-17	0
+360	-17	0
+0	-16.5	0
+1	-16.5	0
+2	-16.5	0
+3	-16.5	0
+4	-16.5	0
+5	-16.5	0
+6	-16.5	0
+7	-16.5	0
+8	-16.5	0
+9	-16.5	0
+10	-16.5	0
+11	-16.5	0.082421
+12	-16.5	0.68463
+13	-16.5	1.585
+14	-16.5	2.724
+15	-16.5	3.5621
+16	-16.5	4.1015
+17	-16.5	4.3276
+18	-16.5	2.9166
+19	-16.5	1.8466
+20	-16.5	1.2114
+21	-16.5	2.7189
+22	-16.5	3.5529
+23	-16.5	3.3272
+24	-16.5	3.0699
+25	-16.5	2.8126
+26	-16.5	2.5552
+27	-16.5	2.2952
+28	-16.5	1.6384
+29	-16.5	2.0121
+30	-16.5	2.096
+31	-16.5	0.59813
+32	-16.5	0.011601
+33	-16.5	-0.26806
+34	-16.5	-1.1322
+35	-16.5	-0.95073
+36	-16.5	-0.66539
+37	-16.5	-0.52963
+38	-16.5	-0.57932
+39	-16.5	-0.37962
+40	-16.5	-0.057834
+41	-16.5	0
+42	-16.5	0
+43	-16.5	0
+44	-16.5	0
+45	-16.5	0.54009
+46	-16.5	0.37644
+47	-16.5	-0.024829
+48	-16.5	-0.45058
+49	-16.5	-0.61823
+50	-16.5	-0.071667
+51	-16.5	0
+52	-16.5	0
+53	-16.5	0
+54	-16.5	0
+55	-16.5	0
+56	-16.5	0
+57	-16.5	0
+58	-16.5	0
+59	-16.5	0
+60	-16.5	0
+61	-16.5	0
+62	-16.5	0
+63	-16.5	0
+64	-16.5	0
+65	-16.5	0
+66	-16.5	0
+67	-16.5	0
+68	-16.5	0
+69	-16.5	0
+70	-16.5	0
+71	-16.5	0
+72	-16.5	0
+73	-16.5	0
+74	-16.5	0
+75	-16.5	0
+76	-16.5	0
+77	-16.5	0
+78	-16.5	0
+79	-16.5	0
+80	-16.5	0
+81	-16.5	0
+82	-16.5	0
+83	-16.5	0
+84	-16.5	0
+85	-16.5	0
+86	-16.5	0
+87	-16.5	0
+88	-16.5	0
+89	-16.5	0
+90	-16.5	0
+91	-16.5	0
+92	-16.5	0
+93	-16.5	0
+94	-16.5	0
+95	-16.5	0
+96	-16.5	0
+97	-16.5	0
+98	-16.5	0
+99	-16.5	0
+100	-16.5	0
+101	-16.5	0
+102	-16.5	0
+103	-16.5	0
+104	-16.5	0
+105	-16.5	0
+106	-16.5	0
+107	-16.5	0
+108	-16.5	0
+109	-16.5	0
+110	-16.5	0
+111	-16.5	0
+112	-16.5	0
+113	-16.5	0
+114	-16.5	0
+115	-16.5	0
+116	-16.5	0
+117	-16.5	0
+118	-16.5	0
+119	-16.5	0
+120	-16.5	0
+121	-16.5	0
+122	-16.5	0
+123	-16.5	0
+124	-16.5	0.095906
+125	-16.5	0.2871
+126	-16.5	0.19651
+127	-16.5	0.056859
+128	-16.5	0.15988
+129	-16.5	0.39528
+130	-16.5	0.7203
+131	-16.5	1.0654
+132	-16.5	1.3316
+133	-16.5	1.5048
+134	-16.5	1.6847
+135	-16.5	1.9121
+136	-16.5	1.6205
+137	-16.5	1.1451
+138	-16.5	0.3652
+139	-16.5	0.20186
+140	-16.5	0
+141	-16.5	0
+142	-16.5	2.0999
+143	-16.5	2.621
+144	-16.5	2.5346
+145	-16.5	1.3758
+146	-16.5	0
+147	-16.5	0
+148	-16.5	0
+149	-16.5	0
+150	-16.5	0
+151	-16.5	0
+152	-16.5	0
+153	-16.5	0
+154	-16.5	0
+155	-16.5	0
+156	-16.5	0
+157	-16.5	0
+158	-16.5	0
+159	-16.5	0
+160	-16.5	0
+161	-16.5	0
+162	-16.5	0
+163	-16.5	0
+164	-16.5	0
+165	-16.5	0
+166	-16.5	0
+167	-16.5	0
+168	-16.5	0
+169	-16.5	0
+170	-16.5	0
+171	-16.5	0
+172	-16.5	0
+173	-16.5	0
+174	-16.5	0
+175	-16.5	0
+176	-16.5	0
+177	-16.5	0
+178	-16.5	0
+179	-16.5	-0.0029292
+180	-16.5	-0.038106
+181	-16.5	0
+182	-16.5	0
+183	-16.5	0
+184	-16.5	0
+185	-16.5	0
+186	-16.5	0
+187	-16.5	0
+188	-16.5	0
+189	-16.5	0
+190	-16.5	0
+191	-16.5	0
+192	-16.5	0
+193	-16.5	0
+194	-16.5	0
+195	-16.5	0
+196	-16.5	0
+197	-16.5	0
+198	-16.5	0
+199	-16.5	0
+200	-16.5	0
+201	-16.5	0
+202	-16.5	0
+203	-16.5	0
+204	-16.5	0
+205	-16.5	0
+206	-16.5	0
+207	-16.5	0
+208	-16.5	0
+209	-16.5	0
+210	-16.5	0
+211	-16.5	0
+212	-16.5	0
+213	-16.5	0
+214	-16.5	0
+215	-16.5	0
+216	-16.5	0
+217	-16.5	0
+218	-16.5	0
+219	-16.5	0
+220	-16.5	0
+221	-16.5	0
+222	-16.5	0
+223	-16.5	0
+224	-16.5	0
+225	-16.5	0
+226	-16.5	0
+227	-16.5	0
+228	-16.5	0
+229	-16.5	0
+230	-16.5	0
+231	-16.5	0
+232	-16.5	0
+233	-16.5	0
+234	-16.5	0
+235	-16.5	0
+236	-16.5	0
+237	-16.5	0
+238	-16.5	0
+239	-16.5	0
+240	-16.5	0
+241	-16.5	0
+242	-16.5	0
+243	-16.5	0
+244	-16.5	0
+245	-16.5	0
+246	-16.5	0
+247	-16.5	0
+248	-16.5	0
+249	-16.5	0
+250	-16.5	0
+251	-16.5	0
+252	-16.5	0
+253	-16.5	0
+254	-16.5	0
+255	-16.5	0
+256	-16.5	0
+257	-16.5	0
+258	-16.5	0
+259	-16.5	0
+260	-16.5	0
+261	-16.5	0
+262	-16.5	0
+263	-16.5	0
+264	-16.5	0
+265	-16.5	0
+266	-16.5	0
+267	-16.5	0
+268	-16.5	0
+269	-16.5	0
+270	-16.5	0
+271	-16.5	0
+272	-16.5	0
+273	-16.5	0
+274	-16.5	0
+275	-16.5	0
+276	-16.5	0
+277	-16.5	0
+278	-16.5	0
+279	-16.5	0
+280	-16.5	0
+281	-16.5	0
+282	-16.5	0
+283	-16.5	0
+284	-16.5	0
+285	-16.5	0
+286	-16.5	0
+287	-16.5	0.059887
+288	-16.5	0.0028984
+289	-16.5	0.095873
+290	-16.5	0
+291	-16.5	-0.1561
+292	-16.5	-0.099615
+293	-16.5	-0.057279
+294	-16.5	0.2642
+295	-16.5	0.67985
+296	-16.5	1.0569
+297	-16.5	1.168
+298	-16.5	0.9245
+299	-16.5	0.68084
+300	-16.5	0.4985
+301	-16.5	0.39464
+302	-16.5	0.47893
+303	-16.5	0.3992
+304	-16.5	0.30615
+305	-16.5	0.2488
+306	-16.5	0.13267
+307	-16.5	-0.102
+308	-16.5	-0.21178
+309	-16.5	-0.25824
+310	-16.5	-0.335
+311	-16.5	-0.50293
+312	-16.5	-0.51216
+313	-16.5	-0.60352
+314	-16.5	-0.7922
+315	-16.5	-1.1773
+316	-16.5	-1.1166
+317	-16.5	-1.1323
+318	-16.5	-1.2223
+319	-16.5	-1.2599
+320	-16.5	-0.93218
+321	-16.5	-0.21789
+322	-16.5	0
+323	-16.5	0
+324	-16.5	0
+325	-16.5	0
+326	-16.5	0
+327	-16.5	0
+328	-16.5	0
+329	-16.5	0
+330	-16.5	0
+331	-16.5	0
+332	-16.5	0
+333	-16.5	0
+334	-16.5	0
+335	-16.5	0
+336	-16.5	0
+337	-16.5	0
+338	-16.5	0
+339	-16.5	0
+340	-16.5	0
+341	-16.5	0
+342	-16.5	0
+343	-16.5	0
+344	-16.5	0
+345	-16.5	0
+346	-16.5	0
+347	-16.5	0
+348	-16.5	0
+349	-16.5	0
+350	-16.5	0
+351	-16.5	0
+352	-16.5	0
+353	-16.5	0
+354	-16.5	0
+355	-16.5	0
+356	-16.5	0
+357	-16.5	0
+358	-16.5	0
+359	-16.5	0
+360	-16.5	0
+0	-16	0
+1	-16	0
+2	-16	0
+3	-16	0
+4	-16	0
+5	-16	0
+6	-16	0
+7	-16	0
+8	-16	0
+9	-16	0
+10	-16	0
+11	-16	0
+12	-16	0.74626
+13	-16	1.8643
+14	-16	2.5913
+15	-16	3.0946
+16	-16	4.0351
+17	-16	4.2962
+18	-16	2.4768
+19	-16	1.5896
+20	-16	1.2596
+21	-16	1.8981
+22	-16	2.8703
+23	-16	3.0717
+24	-16	2.8463
+25	-16	2.589
+26	-16	2.4692
+27	-16	2.3296
+28	-16	1.939
+29	-16	2.239
+30	-16	2.4467
+31	-16	1.1677
+32	-16	0.0009347
+33	-16	-0.30054
+34	-16	-0.88595
+35	-16	-0.79897
+36	-16	-0.63035
+37	-16	-0.54818
+38	-16	-0.64829
+39	-16	-0.45176
+40	-16	-0.074786
+41	-16	0
+42	-16	0
+43	-16	0
+44	-16	0.058786
+45	-16	0.25815
+46	-16	0.35436
+47	-16	0.13979
+48	-16	-0.35557
+49	-16	-0.69785
+50	-16	-0.37063
+51	-16	0
+52	-16	0
+53	-16	0
+54	-16	0
+55	-16	0
+56	-16	0
+57	-16	0
+58	-16	0
+59	-16	0
+60	-16	0
+61	-16	0
+62	-16	0
+63	-16	0
+64	-16	0
+65	-16	0
+66	-16	0
+67	-16	0
+68	-16	0
+69	-16	0
+70	-16	0
+71	-16	0
+72	-16	0
+73	-16	0
+74	-16	0
+75	-16	0
+76	-16	0
+77	-16	0
+78	-16	0
+79	-16	0
+80	-16	0
+81	-16	0
+82	-16	0
+83	-16	0
+84	-16	0
+85	-16	0
+86	-16	0
+87	-16	0
+88	-16	0
+89	-16	0
+90	-16	0
+91	-16	0
+92	-16	0
+93	-16	0
+94	-16	0
+95	-16	0
+96	-16	0
+97	-16	0
+98	-16	0
+99	-16	0
+100	-16	0
+101	-16	0
+102	-16	0
+103	-16	0
+104	-16	0
+105	-16	0
+106	-16	0
+107	-16	0
+108	-16	0
+109	-16	0
+110	-16	0
+111	-16	0
+112	-16	0
+113	-16	0
+114	-16	0
+115	-16	0
+116	-16	0
+117	-16	0
+118	-16	0
+119	-16	0
+120	-16	0
+121	-16	0
+122	-16	0
+123	-16	0.0023315
+124	-16	0
+125	-16	0.39142
+126	-16	0.39526
+127	-16	0.32475
+128	-16	0.27182
+129	-16	0.5512
+130	-16	0.88363
+131	-16	1.2218
+132	-16	1.4837
+133	-16	1.5835
+134	-16	1.7928
+135	-16	1.7564
+136	-16	1.2742
+137	-16	0.68111
+138	-16	0.027662
+139	-16	0
+140	-16	0
+141	-16	0
+142	-16	1.5615
+143	-16	2.6382
+144	-16	2.745
+145	-16	1.4114
+146	-16	0
+147	-16	0
+148	-16	0
+149	-16	0
+150	-16	0
+151	-16	0
+152	-16	0
+153	-16	0
+154	-16	0
+155	-16	0
+156	-16	0
+157	-16	0
+158	-16	0
+159	-16	0
+160	-16	0
+161	-16	0
+162	-16	0
+163	-16	0
+164	-16	0
+165	-16	0
+166	-16	0
+167	-16	0
+168	-16	0
+169	-16	0
+170	-16	0
+171	-16	0
+172	-16	0
+173	-16	0
+174	-16	0
+175	-16	0
+176	-16	0
+177	-16	0
+178	-16	0
+179	-16	-0.0014965
+180	-16	-0.032565
+181	-16	0
+182	-16	0
+183	-16	0
+184	-16	0
+185	-16	0
+186	-16	0
+187	-16	0
+188	-16	0
+189	-16	0
+190	-16	0
+191	-16	0
+192	-16	0
+193	-16	0
+194	-16	0
+195	-16	0
+196	-16	0
+197	-16	0
+198	-16	0
+199	-16	0
+200	-16	0
+201	-16	0
+202	-16	0
+203	-16	0
+204	-16	0
+205	-16	0
+206	-16	0
+207	-16	0
+208	-16	0
+209	-16	0
+210	-16	0
+211	-16	0
+212	-16	0
+213	-16	0
+214	-16	0
+215	-16	0
+216	-16	0
+217	-16	0
+218	-16	0
+219	-16	0
+220	-16	0
+221	-16	0
+222	-16	0
+223	-16	0
+224	-16	0
+225	-16	0
+226	-16	0
+227	-16	0
+228	-16	0
+229	-16	0
+230	-16	0
+231	-16	0
+232	-16	0
+233	-16	0
+234	-16	0
+235	-16	0
+236	-16	0
+237	-16	0
+238	-16	0
+239	-16	0
+240	-16	0
+241	-16	0
+242	-16	0
+243	-16	0
+244	-16	0
+245	-16	0
+246	-16	0
+247	-16	0
+248	-16	0
+249	-16	0
+250	-16	0
+251	-16	0
+252	-16	0
+253	-16	0
+254	-16	0
+255	-16	0
+256	-16	0
+257	-16	0
+258	-16	0
+259	-16	0
+260	-16	0
+261	-16	0
+262	-16	0
+263	-16	0
+264	-16	0
+265	-16	0
+266	-16	0
+267	-16	0
+268	-16	0
+269	-16	0
+270	-16	0
+271	-16	0
+272	-16	0
+273	-16	0
+274	-16	0
+275	-16	0
+276	-16	0
+277	-16	0
+278	-16	0
+279	-16	0
+280	-16	0
+281	-16	0
+282	-16	0
+283	-16	0
+284	-16	0
+285	-16	0.0020699
+286	-16	0.094618
+287	-16	0.19921
+288	-16	-0.0014845
+289	-16	0.022644
+290	-16	0.044467
+291	-16	-0.019598
+292	-16	-0.14282
+293	-16	0.15113
+294	-16	0.47947
+295	-16	0.73088
+296	-16	1.1126
+297	-16	1.234
+298	-16	1.0056
+299	-16	0.77719
+300	-16	0.55669
+301	-16	0.42125
+302	-16	0.47249
+303	-16	0.37944
+304	-16	0.28639
+305	-16	0.21488
+306	-16	0.016431
+307	-16	-0.03301
+308	-16	-0.079469
+309	-16	-0.12593
+310	-16	-0.22349
+311	-16	-0.40736
+312	-16	-0.45195
+313	-16	-0.54674
+314	-16	-0.72139
+315	-16	-1.0811
+316	-16	-1.124
+317	-16	-1.1127
+318	-16	-1.1661
+319	-16	-1.245
+320	-16	-0.97133
+321	-16	-0.15095
+322	-16	0
+323	-16	0
+324	-16	0
+325	-16	0
+326	-16	0
+327	-16	0
+328	-16	0
+329	-16	0
+330	-16	0
+331	-16	0
+332	-16	0
+333	-16	0
+334	-16	0
+335	-16	0
+336	-16	0
+337	-16	0
+338	-16	0
+339	-16	0
+340	-16	0
+341	-16	0
+342	-16	0
+343	-16	0
+344	-16	0
+345	-16	0
+346	-16	0
+347	-16	0
+348	-16	0
+349	-16	0
+350	-16	0
+351	-16	0
+352	-16	0
+353	-16	0
+354	-16	0
+355	-16	0
+356	-16	0
+357	-16	0
+358	-16	0
+359	-16	0
+360	-16	0
+0	-15.5	0
+1	-15.5	0
+2	-15.5	0
+3	-15.5	0
+4	-15.5	0
+5	-15.5	0
+6	-15.5	0
+7	-15.5	0
+8	-15.5	0
+9	-15.5	0
+10	-15.5	0
+11	-15.5	0
+12	-15.5	0.21664
+13	-15.5	2.2639
+14	-15.5	2.9485
+15	-15.5	2.7644
+16	-15.5	3.9138
+17	-15.5	3.697
+18	-15.5	2.1558
+19	-15.5	1.5761
+20	-15.5	1.7849
+21	-15.5	1.9347
+22	-15.5	2.0845
+23	-15.5	2.7379
+24	-15.5	2.5904
+25	-15.5	2.3654
+26	-15.5	2.4596
+27	-15.5	2.3911
+28	-15.5	1.993
+29	-15.5	1.7485
+30	-15.5	1.8564
+31	-15.5	1.7373
+32	-15.5	-0.040241
+33	-15.5	-0.2869
+34	-15.5	-0.64363
+35	-15.5	-0.58285
+36	-15.5	-0.52204
+37	-15.5	-0.5948
+38	-15.5	-0.70873
+39	-15.5	-0.5172
+40	-15.5	-0.14041
+41	-15.5	0
+42	-15.5	0
+43	-15.5	0
+44	-15.5	0
+45	-15.5	0
+46	-15.5	0.013668
+47	-15.5	0.26341
+48	-15.5	-0.3773
+49	-15.5	-0.79931
+50	-15.5	-0.55187
+51	-15.5	0
+52	-15.5	0
+53	-15.5	0
+54	-15.5	0
+55	-15.5	0
+56	-15.5	0
+57	-15.5	0
+58	-15.5	0
+59	-15.5	0
+60	-15.5	0
+61	-15.5	0
+62	-15.5	0
+63	-15.5	0
+64	-15.5	0
+65	-15.5	0
+66	-15.5	0
+67	-15.5	0
+68	-15.5	0
+69	-15.5	0
+70	-15.5	0
+71	-15.5	0
+72	-15.5	0
+73	-15.5	0
+74	-15.5	0
+75	-15.5	0
+76	-15.5	0
+77	-15.5	0
+78	-15.5	0
+79	-15.5	0
+80	-15.5	0
+81	-15.5	0
+82	-15.5	0
+83	-15.5	0
+84	-15.5	0
+85	-15.5	0
+86	-15.5	0
+87	-15.5	0
+88	-15.5	0
+89	-15.5	0
+90	-15.5	0
+91	-15.5	0
+92	-15.5	0
+93	-15.5	0
+94	-15.5	0
+95	-15.5	0
+96	-15.5	0
+97	-15.5	0
+98	-15.5	0
+99	-15.5	0
+100	-15.5	0
+101	-15.5	0
+102	-15.5	0
+103	-15.5	0
+104	-15.5	0
+105	-15.5	0
+106	-15.5	0
+107	-15.5	0
+108	-15.5	0
+109	-15.5	0
+110	-15.5	0
+111	-15.5	0
+112	-15.5	0
+113	-15.5	0
+114	-15.5	0
+115	-15.5	0
+116	-15.5	0
+117	-15.5	0
+118	-15.5	0
+119	-15.5	0
+120	-15.5	0
+121	-15.5	0
+122	-15.5	0
+123	-15.5	0
+124	-15.5	0
+125	-15.5	0.46296
+126	-15.5	0.53107
+127	-15.5	0.43922
+128	-15.5	0.35967
+129	-15.5	0.66139
+130	-15.5	0.95673
+131	-15.5	1.3849
+132	-15.5	1.5858
+133	-15.5	1.657
+134	-15.5	1.7791
+135	-15.5	1.5836
+136	-15.5	0.91624
+137	-15.5	0
+138	-15.5	0
+139	-15.5	0
+140	-15.5	0
+141	-15.5	0
+142	-15.5	1.1418
+143	-15.5	2.6496
+144	-15.5	2.6976
+145	-15.5	1.2723
+146	-15.5	0
+147	-15.5	0
+148	-15.5	0
+149	-15.5	0
+150	-15.5	0
+151	-15.5	0
+152	-15.5	0
+153	-15.5	0
+154	-15.5	0
+155	-15.5	0
+156	-15.5	0
+157	-15.5	0
+158	-15.5	0
+159	-15.5	0
+160	-15.5	0
+161	-15.5	0
+162	-15.5	0
+163	-15.5	0
+164	-15.5	0
+165	-15.5	0
+166	-15.5	0
+167	-15.5	0
+168	-15.5	0
+169	-15.5	0
+170	-15.5	0
+171	-15.5	0
+172	-15.5	0
+173	-15.5	0
+174	-15.5	0
+175	-15.5	0
+176	-15.5	0
+177	-15.5	0
+178	-15.5	0
+179	-15.5	0
+180	-15.5	-0.013613
+181	-15.5	0
+182	-15.5	0
+183	-15.5	0
+184	-15.5	0
+185	-15.5	0
+186	-15.5	0
+187	-15.5	0
+188	-15.5	0
+189	-15.5	0
+190	-15.5	0
+191	-15.5	0
+192	-15.5	0
+193	-15.5	0
+194	-15.5	0
+195	-15.5	0
+196	-15.5	0
+197	-15.5	0
+198	-15.5	0
+199	-15.5	0
+200	-15.5	0
+201	-15.5	0
+202	-15.5	0
+203	-15.5	0
+204	-15.5	0
+205	-15.5	0
+206	-15.5	0
+207	-15.5	0
+208	-15.5	0
+209	-15.5	0
+210	-15.5	0
+211	-15.5	0
+212	-15.5	0
+213	-15.5	0
+214	-15.5	0
+215	-15.5	0
+216	-15.5	0
+217	-15.5	0
+218	-15.5	0
+219	-15.5	0
+220	-15.5	0
+221	-15.5	0
+222	-15.5	0
+223	-15.5	0
+224	-15.5	0
+225	-15.5	0
+226	-15.5	0
+227	-15.5	0
+228	-15.5	0
+229	-15.5	0
+230	-15.5	0
+231	-15.5	0
+232	-15.5	0
+233	-15.5	0
+234	-15.5	0
+235	-15.5	0
+236	-15.5	0
+237	-15.5	0
+238	-15.5	0
+239	-15.5	0
+240	-15.5	0
+241	-15.5	0
+242	-15.5	0
+243	-15.5	0
+244	-15.5	0
+245	-15.5	0
+246	-15.5	0
+247	-15.5	0
+248	-15.5	0
+249	-15.5	0
+250	-15.5	0
+251	-15.5	0
+252	-15.5	0
+253	-15.5	0
+254	-15.5	0
+255	-15.5	0
+256	-15.5	0
+257	-15.5	0
+258	-15.5	0
+259	-15.5	0
+260	-15.5	0
+261	-15.5	0
+262	-15.5	0
+263	-15.5	0
+264	-15.5	0
+265	-15.5	0
+266	-15.5	0
+267	-15.5	0
+268	-15.5	0
+269	-15.5	0
+270	-15.5	0
+271	-15.5	0
+272	-15.5	0
+273	-15.5	0
+274	-15.5	0
+275	-15.5	0
+276	-15.5	0
+277	-15.5	0
+278	-15.5	0
+279	-15.5	0
+280	-15.5	0
+281	-15.5	0
+282	-15.5	0
+283	-15.5	0
+284	-15.5	0
+285	-15.5	0.10299
+286	-15.5	0.32676
+287	-15.5	0.27732
+288	-15.5	-0.013278
+289	-15.5	-0.054227
+290	-15.5	-0.048871
+291	-15.5	-0.020199
+292	-15.5	-0.1324
+293	-15.5	0.21396
+294	-15.5	0.69474
+295	-15.5	0.78192
+296	-15.5	1.1683
+297	-15.5	1.1946
+298	-15.5	1.0494
+299	-15.5	0.87355
+300	-15.5	0.64517
+301	-15.5	0.4513
+302	-15.5	0.45272
+303	-15.5	0.35967
+304	-15.5	0.26662
+305	-15.5	0.19222
+306	-15.5	0.14576
+307	-15.5	0.099304
+308	-15.5	0.052846
+309	-15.5	-0.0072044
+310	-15.5	-0.11197
+311	-15.5	-0.30461
+312	-15.5	-0.39518
+313	-15.5	-0.48997
+314	-15.5	-0.65058
+315	-15.5	-0.88298
+316	-15.5	-0.9292
+317	-15.5	-1.0425
+318	-15.5	-1.1023
+319	-15.5	-1.21
+320	-15.5	-0.94165
+321	-15.5	-0.087058
+322	-15.5	0
+323	-15.5	0
+324	-15.5	0
+325	-15.5	0
+326	-15.5	0
+327	-15.5	0
+328	-15.5	0
+329	-15.5	0
+330	-15.5	0
+331	-15.5	0
+332	-15.5	0
+333	-15.5	0
+334	-15.5	0
+335	-15.5	0
+336	-15.5	0
+337	-15.5	0
+338	-15.5	0
+339	-15.5	0
+340	-15.5	0
+341	-15.5	0
+342	-15.5	0
+343	-15.5	0
+344	-15.5	0
+345	-15.5	0
+346	-15.5	0
+347	-15.5	0
+348	-15.5	0
+349	-15.5	0
+350	-15.5	0
+351	-15.5	0
+352	-15.5	0
+353	-15.5	0
+354	-15.5	0
+355	-15.5	0
+356	-15.5	0
+357	-15.5	0
+358	-15.5	0
+359	-15.5	0
+360	-15.5	0
+0	-15	0
+1	-15	0
+2	-15	0
+3	-15	0
+4	-15	0
+5	-15	0
+6	-15	0
+7	-15	0
+8	-15	0
+9	-15	0
+10	-15	0
+11	-15	0
+12	-15	0
+13	-15	2.3224
+14	-15	3.2099
+15	-15	3.0285
+16	-15	3.7926
+17	-15	3.0558
+18	-15	1.8988
+19	-15	2.1191
+20	-15	2.3103
+21	-15	2.4601
+22	-15	2.5283
+23	-15	2.4927
+24	-15	2.3842
+25	-15	2.2506
+26	-15	2.45
+27	-15	2.4714
+28	-15	1.9642
+29	-15	1.5516
+30	-15	1.3659
+31	-15	1.7641
+32	-15	0.004585
+33	-15	-0.24289
+34	-15	-0.41353
+35	-15	-0.42904
+36	-15	-0.52088
+37	-15	-0.64934
+38	-15	-0.7473
+39	-15	-0.56644
+40	-15	-0.16719
+41	-15	0.0085373
+42	-15	0
+43	-15	0
+44	-15	0
+45	-15	0
+46	-15	0
+47	-15	0.083453
+48	-15	-0.17566
+49	-15	-0.7913
+50	-15	-0.62087
+51	-15	0
+52	-15	0
+53	-15	0
+54	-15	0
+55	-15	0
+56	-15	0
+57	-15	0
+58	-15	0
+59	-15	0
+60	-15	0
+61	-15	0
+62	-15	0
+63	-15	0
+64	-15	0
+65	-15	0
+66	-15	0
+67	-15	0
+68	-15	0
+69	-15	0
+70	-15	0
+71	-15	0
+72	-15	0
+73	-15	0
+74	-15	0
+75	-15	0
+76	-15	0
+77	-15	0
+78	-15	0
+79	-15	0
+80	-15	0
+81	-15	0
+82	-15	0
+83	-15	0
+84	-15	0
+85	-15	0
+86	-15	0
+87	-15	0
+88	-15	0
+89	-15	0
+90	-15	0
+91	-15	0
+92	-15	0
+93	-15	0
+94	-15	0
+95	-15	0
+96	-15	0
+97	-15	0
+98	-15	0
+99	-15	0
+100	-15	0
+101	-15	0
+102	-15	0
+103	-15	0
+104	-15	0
+105	-15	0
+106	-15	0
+107	-15	0
+108	-15	0
+109	-15	0
+110	-15	0
+111	-15	0
+112	-15	0
+113	-15	0
+114	-15	0
+115	-15	0
+116	-15	0
+117	-15	0
+118	-15	0
+119	-15	0
+120	-15	0
+121	-15	0
+122	-15	0
+123	-15	0
+124	-15	0
+125	-15	0.32416
+126	-15	0.61109
+127	-15	0.52217
+128	-15	0.42954
+129	-15	0.51535
+130	-15	0.95652
+131	-15	1.4404
+132	-15	1.6617
+133	-15	1.7364
+134	-15	1.8281
+135	-15	1.5523
+136	-15	0.48252
+137	-15	0
+138	-15	0
+139	-15	0
+140	-15	0
+141	-15	0
+142	-15	0.99217
+143	-15	2.4023
+144	-15	2.4477
+145	-15	1.2798
+146	-15	0
+147	-15	0
+148	-15	0
+149	-15	0
+150	-15	0
+151	-15	0
+152	-15	0
+153	-15	0
+154	-15	0
+155	-15	0
+156	-15	0
+157	-15	0
+158	-15	0
+159	-15	0
+160	-15	0
+161	-15	0
+162	-15	0
+163	-15	0
+164	-15	0
+165	-15	0
+166	-15	0
+167	-15	0
+168	-15	0
+169	-15	0
+170	-15	0
+171	-15	0
+172	-15	0
+173	-15	0
+174	-15	0
+175	-15	0
+176	-15	0
+177	-15	0
+178	-15	0
+179	-15	0
+180	-15	0
+181	-15	0
+182	-15	0
+183	-15	0
+184	-15	0
+185	-15	0
+186	-15	0
+187	-15	0
+188	-15	0
+189	-15	0
+190	-15	0
+191	-15	0
+192	-15	0
+193	-15	0
+194	-15	0
+195	-15	0
+196	-15	0
+197	-15	0
+198	-15	0
+199	-15	0
+200	-15	0
+201	-15	0
+202	-15	0
+203	-15	0
+204	-15	0
+205	-15	0
+206	-15	0
+207	-15	0
+208	-15	0
+209	-15	0
+210	-15	0
+211	-15	0
+212	-15	0
+213	-15	0
+214	-15	0
+215	-15	0
+216	-15	0
+217	-15	0
+218	-15	0
+219	-15	0
+220	-15	0
+221	-15	0
+222	-15	0
+223	-15	0
+224	-15	0
+225	-15	0
+226	-15	0
+227	-15	0
+228	-15	0
+229	-15	0
+230	-15	0
+231	-15	0
+232	-15	0
+233	-15	0
+234	-15	0
+235	-15	0
+236	-15	0
+237	-15	0
+238	-15	0
+239	-15	0
+240	-15	0
+241	-15	0
+242	-15	0
+243	-15	0
+244	-15	0
+245	-15	0
+246	-15	0
+247	-15	0
+248	-15	0
+249	-15	0
+250	-15	0
+251	-15	0
+252	-15	0
+253	-15	0
+254	-15	0
+255	-15	0
+256	-15	0
+257	-15	0
+258	-15	0
+259	-15	0
+260	-15	0
+261	-15	0
+262	-15	0
+263	-15	0
+264	-15	0
+265	-15	0
+266	-15	0
+267	-15	0
+268	-15	0
+269	-15	0
+270	-15	0
+271	-15	0
+272	-15	0
+273	-15	0
+274	-15	0
+275	-15	0
+276	-15	0
+277	-15	0
+278	-15	0
+279	-15	0
+280	-15	0
+281	-15	0
+282	-15	0
+283	-15	0
+284	-15	0.0057914
+285	-15	0.14382
+286	-15	0.24693
+287	-15	0.21716
+288	-15	-0.097985
+289	-15	-0.21075
+290	-15	-0.011172
+291	-15	-0.062826
+292	-15	-0.064715
+293	-15	0.3745
+294	-15	0.71658
+295	-15	0.98486
+296	-15	1.2044
+297	-15	1.1444
+298	-15	0.99913
+299	-15	0.85389
+300	-15	0.70866
+301	-15	0.51314
+302	-15	0.43296
+303	-15	0.36244
+304	-15	0.32124
+305	-15	0.31331
+306	-15	0.27808
+307	-15	0.23162
+308	-15	0.18516
+309	-15	0.10431
+310	-15	-0.00046054
+311	-15	-0.19708
+312	-15	-0.33641
+313	-15	-0.43319
+314	-15	-0.59105
+315	-15	-0.71607
+316	-15	-0.9341
+317	-15	-0.97393
+318	-15	-1.0509
+319	-15	-1.1666
+320	-15	-0.93198
+321	-15	-0.18661
+322	-15	0
+323	-15	0
+324	-15	0
+325	-15	0
+326	-15	0
+327	-15	0
+328	-15	0
+329	-15	0
+330	-15	0
+331	-15	0
+332	-15	0
+333	-15	0
+334	-15	0
+335	-15	0
+336	-15	0
+337	-15	0
+338	-15	0
+339	-15	0
+340	-15	0
+341	-15	0
+342	-15	0
+343	-15	0
+344	-15	0
+345	-15	0
+346	-15	0
+347	-15	0
+348	-15	0
+349	-15	0
+350	-15	0
+351	-15	0
+352	-15	0
+353	-15	0
+354	-15	0
+355	-15	0
+356	-15	0
+357	-15	0
+358	-15	0
+359	-15	0
+360	-15	0
+0	-14.5	0
+1	-14.5	0
+2	-14.5	0
+3	-14.5	0
+4	-14.5	0
+5	-14.5	0
+6	-14.5	0
+7	-14.5	0
+8	-14.5	0
+9	-14.5	0
+10	-14.5	0
+11	-14.5	0
+12	-14.5	0
+13	-14.5	2.3805
+14	-14.5	3.7477
+15	-14.5	3.3268
+16	-14.5	3.2365
+17	-14.5	2.3988
+18	-14.5	2.0167
+19	-14.5	2.3949
+20	-14.5	2.4791
+21	-14.5	2.442
+22	-14.5	2.4048
+23	-14.5	2.373
+24	-14.5	2.3506
+25	-14.5	2.2099
+26	-14.5	2.4404
+27	-14.5	2.5518
+28	-14.5	1.9394
+29	-14.5	1.5893
+30	-14.5	1.0001
+31	-14.5	1.2424
+32	-14.5	0.035548
+33	-14.5	-0.22705
+34	-14.5	-0.42325
+35	-14.5	-0.44862
+36	-14.5	-0.5855
+37	-14.5	-0.72964
+38	-14.5	-0.77188
+39	-14.5	-0.59665
+40	-14.5	-0.19436
+41	-14.5	0
+42	-14.5	0
+43	-14.5	0
+44	-14.5	0
+45	-14.5	0
+46	-14.5	0
+47	-14.5	0
+48	-14.5	-0.0015256
+49	-14.5	-0.70469
+50	-14.5	-0.69197
+51	-14.5	0
+52	-14.5	0
+53	-14.5	0
+54	-14.5	0
+55	-14.5	0
+56	-14.5	0
+57	-14.5	0
+58	-14.5	0
+59	-14.5	0
+60	-14.5	0
+61	-14.5	0
+62	-14.5	0
+63	-14.5	0
+64	-14.5	0
+65	-14.5	0
+66	-14.5	0
+67	-14.5	0
+68	-14.5	0
+69	-14.5	0
+70	-14.5	0
+71	-14.5	0
+72	-14.5	0
+73	-14.5	0
+74	-14.5	0
+75	-14.5	0
+76	-14.5	0
+77	-14.5	0
+78	-14.5	0
+79	-14.5	0
+80	-14.5	0
+81	-14.5	0
+82	-14.5	0
+83	-14.5	0
+84	-14.5	0
+85	-14.5	0
+86	-14.5	0
+87	-14.5	0
+88	-14.5	0
+89	-14.5	0
+90	-14.5	0
+91	-14.5	0
+92	-14.5	0
+93	-14.5	0
+94	-14.5	0
+95	-14.5	0
+96	-14.5	0
+97	-14.5	0
+98	-14.5	0
+99	-14.5	0
+100	-14.5	0
+101	-14.5	0
+102	-14.5	0
+103	-14.5	0
+104	-14.5	0
+105	-14.5	0
+106	-14.5	0
+107	-14.5	0
+108	-14.5	0
+109	-14.5	0
+110	-14.5	0
+111	-14.5	0
+112	-14.5	0
+113	-14.5	0
+114	-14.5	0
+115	-14.5	0
+116	-14.5	0
+117	-14.5	0
+118	-14.5	0
+119	-14.5	0
+120	-14.5	0
+121	-14.5	0
+122	-14.5	0
+123	-14.5	0
+124	-14.5	0
+125	-14.5	0.18231
+126	-14.5	0.48176
+127	-14.5	0.50326
+128	-14.5	0.32874
+129	-14.5	0
+130	-14.5	0.92732
+131	-14.5	1.3656
+132	-14.5	1.6364
+133	-14.5	1.7139
+134	-14.5	1.846
+135	-14.5	1.584
+136	-14.5	0.052521
+137	-14.5	0
+138	-14.5	0
+139	-14.5	0
+140	-14.5	0
+141	-14.5	0
+142	-14.5	0.90271
+143	-14.5	2.2227
+144	-14.5	0.47437
+145	-14.5	0.69281
+146	-14.5	0
+147	-14.5	0
+148	-14.5	0
+149	-14.5	0
+150	-14.5	0
+151	-14.5	0
+152	-14.5	0
+153	-14.5	0
+154	-14.5	0
+155	-14.5	0
+156	-14.5	0
+157	-14.5	0
+158	-14.5	0
+159	-14.5	0
+160	-14.5	0
+161	-14.5	0
+162	-14.5	0
+163	-14.5	0
+164	-14.5	0
+165	-14.5	0
+166	-14.5	0
+167	-14.5	0
+168	-14.5	0
+169	-14.5	0
+170	-14.5	0
+171	-14.5	0
+172	-14.5	0
+173	-14.5	0
+174	-14.5	0
+175	-14.5	0
+176	-14.5	0
+177	-14.5	0
+178	-14.5	0
+179	-14.5	0
+180	-14.5	0
+181	-14.5	0
+182	-14.5	0
+183	-14.5	0
+184	-14.5	0
+185	-14.5	0
+186	-14.5	0
+187	-14.5	0
+188	-14.5	0
+189	-14.5	0
+190	-14.5	0
+191	-14.5	0
+192	-14.5	0
+193	-14.5	0
+194	-14.5	0
+195	-14.5	0
+196	-14.5	0
+197	-14.5	0
+198	-14.5	0
+199	-14.5	0
+200	-14.5	0
+201	-14.5	0
+202	-14.5	0
+203	-14.5	0
+204	-14.5	0
+205	-14.5	0
+206	-14.5	0
+207	-14.5	0
+208	-14.5	0
+209	-14.5	0
+210	-14.5	0
+211	-14.5	0
+212	-14.5	0
+213	-14.5	0
+214	-14.5	0
+215	-14.5	0
+216	-14.5	0
+217	-14.5	0
+218	-14.5	0
+219	-14.5	0
+220	-14.5	0
+221	-14.5	0
+222	-14.5	0
+223	-14.5	0
+224	-14.5	0
+225	-14.5	0
+226	-14.5	0
+227	-14.5	0
+228	-14.5	0
+229	-14.5	0
+230	-14.5	0
+231	-14.5	0
+232	-14.5	0
+233	-14.5	0
+234	-14.5	0
+235	-14.5	0
+236	-14.5	0
+237	-14.5	0
+238	-14.5	0
+239	-14.5	0
+240	-14.5	0
+241	-14.5	0
+242	-14.5	0
+243	-14.5	0
+244	-14.5	0
+245	-14.5	0
+246	-14.5	0
+247	-14.5	0
+248	-14.5	0
+249	-14.5	0
+250	-14.5	0
+251	-14.5	0
+252	-14.5	0
+253	-14.5	0
+254	-14.5	0
+255	-14.5	0
+256	-14.5	0
+257	-14.5	0
+258	-14.5	0
+259	-14.5	0
+260	-14.5	0
+261	-14.5	0
+262	-14.5	0
+263	-14.5	0
+264	-14.5	0
+265	-14.5	0
+266	-14.5	0
+267	-14.5	0
+268	-14.5	0
+269	-14.5	0
+270	-14.5	0
+271	-14.5	0
+272	-14.5	0
+273	-14.5	0
+274	-14.5	0
+275	-14.5	0
+276	-14.5	0
+277	-14.5	0
+278	-14.5	0
+279	-14.5	0
+280	-14.5	0
+281	-14.5	0
+282	-14.5	0
+283	-14.5	0
+284	-14.5	0.06479
+285	-14.5	0.19057
+286	-14.5	0.23528
+287	-14.5	0.1378
+288	-14.5	-0.10366
+289	-14.5	-0.21264
+290	-14.5	-0.27635
+291	-14.5	-0.26495
+292	-14.5	0.042602
+293	-14.5	0.4363
+294	-14.5	0.69963
+295	-14.5	0.99019
+296	-14.5	1.1824
+297	-14.5	1.0941
+298	-14.5	0.94887
+299	-14.5	0.80363
+300	-14.5	0.65839
+301	-14.5	0.51454
+302	-14.5	0.49234
+303	-14.5	0.45113
+304	-14.5	0.41987
+305	-14.5	0.42348
+306	-14.5	0.41039
+307	-14.5	0.36393
+308	-14.5	0.31747
+309	-14.5	0.21582
+310	-14.5	0.11105
+311	-14.5	-0.075397
+312	-14.5	-0.20678
+313	-14.5	-0.33816
+314	-14.5	-0.50293
+315	-14.5	-0.72097
+316	-14.5	-0.91194
+317	-14.5	-0.90571
+318	-14.5	-1.0942
+319	-14.5	-1.1676
+320	-14.5	-0.92861
+321	-14.5	-0.28717
+322	-14.5	0
+323	-14.5	0
+324	-14.5	0
+325	-14.5	0
+326	-14.5	0
+327	-14.5	0
+328	-14.5	0
+329	-14.5	0
+330	-14.5	0
+331	-14.5	0
+332	-14.5	0
+333	-14.5	0
+334	-14.5	0
+335	-14.5	0
+336	-14.5	0
+337	-14.5	0
+338	-14.5	0
+339	-14.5	0
+340	-14.5	0
+341	-14.5	0
+342	-14.5	0
+343	-14.5	0
+344	-14.5	0
+345	-14.5	0
+346	-14.5	0
+347	-14.5	0
+348	-14.5	0
+349	-14.5	0
+350	-14.5	0
+351	-14.5	0
+352	-14.5	0
+353	-14.5	0
+354	-14.5	0
+355	-14.5	0
+356	-14.5	0
+357	-14.5	0
+358	-14.5	0
+359	-14.5	0
+360	-14.5	0
+0	-14	0
+1	-14	0
+2	-14	0
+3	-14	0
+4	-14	0
+5	-14	0
+6	-14	0
+7	-14	0
+8	-14	0
+9	-14	0
+10	-14	0
+11	-14	0
+12	-14	0
+13	-14	1.9316
+14	-14	3.3723
+15	-14	3.6328
+16	-14	2.5299
+17	-14	1.9097
+18	-14	1.8829
+19	-14	2.2365
+20	-14	2.3494
+21	-14	2.3186
+22	-14	2.2814
+23	-14	2.2533
+24	-14	2.231
+25	-14	2.1821
+26	-14	2.3352
+27	-14	2.5973
+28	-14	2.0089
+29	-14	1.5798
+30	-14	1.0295
+31	-14	0.6155
+32	-14	0.053323
+33	-14	-0.23801
+34	-14	-0.46713
+35	-14	-0.0092891
+36	-14	-0.72894
+37	-14	-0.86739
+38	-14	-0.85146
+39	-14	-0.60031
+40	-14	-0.20202
+41	-14	0
+42	-14	0
+43	-14	0
+44	-14	0
+45	-14	0
+46	-14	0
+47	-14	0
+48	-14	0.049873
+49	-14	-0.63708
+50	-14	-0.59301
+51	-14	0
+52	-14	0
+53	-14	0
+54	-14	0
+55	-14	0
+56	-14	0
+57	-14	0
+58	-14	0
+59	-14	0
+60	-14	0
+61	-14	0
+62	-14	0
+63	-14	0
+64	-14	0
+65	-14	0
+66	-14	0
+67	-14	0
+68	-14	0
+69	-14	0
+70	-14	0
+71	-14	0
+72	-14	0
+73	-14	0
+74	-14	0
+75	-14	0
+76	-14	0
+77	-14	0
+78	-14	0
+79	-14	0
+80	-14	0
+81	-14	0
+82	-14	0
+83	-14	0
+84	-14	0
+85	-14	0
+86	-14	0
+87	-14	0
+88	-14	0
+89	-14	0
+90	-14	0
+91	-14	0
+92	-14	0
+93	-14	0
+94	-14	0
+95	-14	0
+96	-14	0
+97	-14	0
+98	-14	0
+99	-14	0
+100	-14	0
+101	-14	0
+102	-14	0
+103	-14	0
+104	-14	0
+105	-14	0
+106	-14	0
+107	-14	0
+108	-14	0
+109	-14	0
+110	-14	0
+111	-14	0
+112	-14	0
+113	-14	0
+114	-14	0
+115	-14	0
+116	-14	0
+117	-14	0
+118	-14	0
+119	-14	0
+120	-14	0
+121	-14	0
+122	-14	0
+123	-14	0
+124	-14	0
+125	-14	0
+126	-14	0
+127	-14	0.32595
+128	-14	0.056511
+129	-14	0
+130	-14	0.87601
+131	-14	1.2745
+132	-14	1.465
+133	-14	1.6217
+134	-14	1.7451
+135	-14	1.5444
+136	-14	0.30649
+137	-14	0
+138	-14	0
+139	-14	0
+140	-14	0
+141	-14	0
+142	-14	0.92229
+143	-14	2.2458
+144	-14	0.42382
+145	-14	0
+146	-14	0
+147	-14	0
+148	-14	0
+149	-14	0
+150	-14	0
+151	-14	0
+152	-14	0
+153	-14	0
+154	-14	0
+155	-14	0
+156	-14	0
+157	-14	0
+158	-14	0
+159	-14	0
+160	-14	0
+161	-14	0
+162	-14	0
+163	-14	0
+164	-14	0
+165	-14	0
+166	-14	0
+167	-14	0
+168	-14	0
+169	-14	0
+170	-14	0
+171	-14	0
+172	-14	0
+173	-14	0
+174	-14	0
+175	-14	0
+176	-14	0
+177	-14	0
+178	-14	0
+179	-14	0
+180	-14	0
+181	-14	0
+182	-14	0
+183	-14	0
+184	-14	0
+185	-14	0
+186	-14	0
+187	-14	0
+188	-14	0
+189	-14	0
+190	-14	0
+191	-14	0
+192	-14	0
+193	-14	0
+194	-14	0
+195	-14	0
+196	-14	0
+197	-14	0
+198	-14	0
+199	-14	0
+200	-14	0
+201	-14	0
+202	-14	0
+203	-14	0
+204	-14	0
+205	-14	0
+206	-14	0
+207	-14	0
+208	-14	0
+209	-14	0
+210	-14	0
+211	-14	0
+212	-14	0
+213	-14	0
+214	-14	0
+215	-14	0
+216	-14	0
+217	-14	0
+218	-14	0
+219	-14	0
+220	-14	0
+221	-14	0
+222	-14	0
+223	-14	0
+224	-14	0
+225	-14	0
+226	-14	0
+227	-14	0
+228	-14	0
+229	-14	0
+230	-14	0
+231	-14	0
+232	-14	0
+233	-14	0
+234	-14	0
+235	-14	0
+236	-14	0
+237	-14	0
+238	-14	0
+239	-14	0
+240	-14	0
+241	-14	0
+242	-14	0
+243	-14	0
+244	-14	0
+245	-14	0
+246	-14	0
+247	-14	0
+248	-14	0
+249	-14	0
+250	-14	0
+251	-14	0
+252	-14	0
+253	-14	0
+254	-14	0
+255	-14	0
+256	-14	0
+257	-14	0
+258	-14	0
+259	-14	0
+260	-14	0
+261	-14	0
+262	-14	0
+263	-14	0
+264	-14	0
+265	-14	0
+266	-14	0
+267	-14	0
+268	-14	0
+269	-14	0
+270	-14	0
+271	-14	0
+272	-14	0
+273	-14	0
+274	-14	0
+275	-14	0
+276	-14	0
+277	-14	0
+278	-14	0
+279	-14	0
+280	-14	0
+281	-14	0
+282	-14	0
+283	-14	0
+284	-14	0.078399
+285	-14	0.20715
+286	-14	0.22049
+287	-14	0.083915
+288	-14	-0.18367
+289	-14	-0.04929
+290	-14	-0.31219
+291	-14	-0.26902
+292	-14	0.15601
+293	-14	0.41935
+294	-14	0.68268
+295	-14	0.95497
+296	-14	1.1604
+297	-14	1.0438
+298	-14	0.8986
+299	-14	0.75337
+300	-14	0.61198
+301	-14	0.55266
+302	-14	0.58103
+303	-14	0.53983
+304	-14	0.53004
+305	-14	0.53365
+306	-14	0.53727
+307	-14	0.49625
+308	-14	0.43211
+309	-14	0.32734
+310	-14	0.22055
+311	-14	0.054231
+312	-14	-0.077152
+313	-14	-0.27376
+314	-14	-0.50603
+315	-14	-0.72587
+316	-14	-0.84373
+317	-14	-1.1663
+318	-14	-1.1669
+319	-14	-1.1859
+320	-14	-0.90303
+321	-14	-0.2591
+322	-14	0
+323	-14	0
+324	-14	0
+325	-14	0
+326	-14	0
+327	-14	0
+328	-14	0
+329	-14	0
+330	-14	0
+331	-14	0
+332	-14	0
+333	-14	0
+334	-14	0
+335	-14	0
+336	-14	0
+337	-14	0
+338	-14	0
+339	-14	0
+340	-14	0
+341	-14	0
+342	-14	0
+343	-14	0
+344	-14	0
+345	-14	0
+346	-14	0
+347	-14	0
+348	-14	0
+349	-14	0
+350	-14	0
+351	-14	0
+352	-14	0
+353	-14	0
+354	-14	0
+355	-14	0
+356	-14	0
+357	-14	0
+358	-14	0
+359	-14	0
+360	-14	0
+0	-13.5	0
+1	-13.5	0
+2	-13.5	0
+3	-13.5	0
+4	-13.5	0
+5	-13.5	0
+6	-13.5	0
+7	-13.5	0
+8	-13.5	0
+9	-13.5	0
+10	-13.5	0
+11	-13.5	0
+12	-13.5	0
+13	-13.5	1.1879
+14	-13.5	2.5689
+15	-13.5	2.6603
+16	-13.5	1.8609
+17	-13.5	1.7424
+18	-13.5	1.749
+19	-13.5	2.0517
+20	-13.5	2.2085
+21	-13.5	2.1951
+22	-13.5	2.158
+23	-13.5	2.1337
+24	-13.5	2.1113
+25	-13.5	2.0889
+26	-13.5	2.1801
+27	-13.5	2.5749
+28	-13.5	2.052
+29	-13.5	1.6015
+30	-13.5	1.0447
+31	-13.5	0.4775
+32	-13.5	0.011312
+33	-13.5	-0.30194
+34	-13.5	-0.4681
+35	-13.5	-0.46673
+36	-13.5	-0.86387
+37	-13.5	-1.0207
+38	-13.5	-0.94847
+39	-13.5	-0.61879
+40	-13.5	-0.19896
+41	-13.5	0
+42	-13.5	0
+43	-13.5	0
+44	-13.5	0
+45	-13.5	0
+46	-13.5	0
+47	-13.5	0
+48	-13.5	0
+49	-13.5	-0.46707
+50	-13.5	-0.37367
+51	-13.5	0
+52	-13.5	0
+53	-13.5	0
+54	-13.5	0
+55	-13.5	0
+56	-13.5	0
+57	-13.5	0
+58	-13.5	0
+59	-13.5	0
+60	-13.5	0
+61	-13.5	0
+62	-13.5	0
+63	-13.5	0
+64	-13.5	0
+65	-13.5	0
+66	-13.5	0
+67	-13.5	0
+68	-13.5	0
+69	-13.5	0
+70	-13.5	0
+71	-13.5	0
+72	-13.5	0
+73	-13.5	0
+74	-13.5	0
+75	-13.5	0
+76	-13.5	0
+77	-13.5	0
+78	-13.5	0
+79	-13.5	0
+80	-13.5	0
+81	-13.5	0
+82	-13.5	0
+83	-13.5	0
+84	-13.5	0
+85	-13.5	0
+86	-13.5	0
+87	-13.5	0
+88	-13.5	0
+89	-13.5	0
+90	-13.5	0
+91	-13.5	0
+92	-13.5	0
+93	-13.5	0
+94	-13.5	0
+95	-13.5	0
+96	-13.5	0
+97	-13.5	0
+98	-13.5	0
+99	-13.5	0
+100	-13.5	0
+101	-13.5	0
+102	-13.5	0
+103	-13.5	0
+104	-13.5	0
+105	-13.5	0
+106	-13.5	0
+107	-13.5	0
+108	-13.5	0
+109	-13.5	0
+110	-13.5	0
+111	-13.5	0
+112	-13.5	0
+113	-13.5	0
+114	-13.5	0
+115	-13.5	0
+116	-13.5	0
+117	-13.5	0
+118	-13.5	0
+119	-13.5	0
+120	-13.5	0
+121	-13.5	0
+122	-13.5	0
+123	-13.5	0
+124	-13.5	0
+125	-13.5	0
+126	-13.5	0
+127	-13.5	0
+128	-13.5	0
+129	-13.5	0
+130	-13.5	0.45903
+131	-13.5	1.1391
+132	-13.5	1.3028
+133	-13.5	1.45
+134	-13.5	1.598
+135	-13.5	1.472
+136	-13.5	0.1012
+137	-13.5	0
+138	-13.5	0
+139	-13.5	0
+140	-13.5	0
+141	-13.5	0.045303
+142	-13.5	0.94895
+143	-13.5	2.1783
+144	-13.5	0
+145	-13.5	0
+146	-13.5	0
+147	-13.5	0
+148	-13.5	0
+149	-13.5	0
+150	-13.5	0
+151	-13.5	0
+152	-13.5	0
+153	-13.5	0
+154	-13.5	0
+155	-13.5	0
+156	-13.5	0
+157	-13.5	0
+158	-13.5	0
+159	-13.5	0
+160	-13.5	0
+161	-13.5	0
+162	-13.5	0
+163	-13.5	0
+164	-13.5	0
+165	-13.5	0
+166	-13.5	0
+167	-13.5	0
+168	-13.5	0
+169	-13.5	0
+170	-13.5	0
+171	-13.5	0
+172	-13.5	0
+173	-13.5	0
+174	-13.5	0
+175	-13.5	0
+176	-13.5	0
+177	-13.5	0
+178	-13.5	0
+179	-13.5	0
+180	-13.5	0
+181	-13.5	0
+182	-13.5	0
+183	-13.5	0
+184	-13.5	0
+185	-13.5	0
+186	-13.5	0
+187	-13.5	0
+188	-13.5	0
+189	-13.5	0
+190	-13.5	0
+191	-13.5	0
+192	-13.5	0
+193	-13.5	0
+194	-13.5	0
+195	-13.5	0
+196	-13.5	0
+197	-13.5	0
+198	-13.5	0
+199	-13.5	0
+200	-13.5	0
+201	-13.5	0
+202	-13.5	0
+203	-13.5	0
+204	-13.5	0
+205	-13.5	0
+206	-13.5	0
+207	-13.5	0
+208	-13.5	0
+209	-13.5	0
+210	-13.5	0
+211	-13.5	0
+212	-13.5	0
+213	-13.5	0
+214	-13.5	0
+215	-13.5	0
+216	-13.5	0
+217	-13.5	0
+218	-13.5	0
+219	-13.5	0
+220	-13.5	0
+221	-13.5	0
+222	-13.5	0
+223	-13.5	0
+224	-13.5	0
+225	-13.5	0
+226	-13.5	0
+227	-13.5	0
+228	-13.5	0
+229	-13.5	0
+230	-13.5	0
+231	-13.5	0
+232	-13.5	0
+233	-13.5	0
+234	-13.5	0
+235	-13.5	0
+236	-13.5	0
+237	-13.5	0
+238	-13.5	0
+239	-13.5	0
+240	-13.5	0
+241	-13.5	0
+242	-13.5	0
+243	-13.5	0
+244	-13.5	0
+245	-13.5	0
+246	-13.5	0
+247	-13.5	0
+248	-13.5	0
+249	-13.5	0
+250	-13.5	0
+251	-13.5	0
+252	-13.5	0
+253	-13.5	0
+254	-13.5	0
+255	-13.5	0
+256	-13.5	0
+257	-13.5	0
+258	-13.5	0
+259	-13.5	0
+260	-13.5	0
+261	-13.5	0
+262	-13.5	0
+263	-13.5	0
+264	-13.5	0
+265	-13.5	0
+266	-13.5	0
+267	-13.5	0
+268	-13.5	0
+269	-13.5	0
+270	-13.5	0
+271	-13.5	0
+272	-13.5	0
+273	-13.5	0
+274	-13.5	0
+275	-13.5	0
+276	-13.5	0
+277	-13.5	0
+278	-13.5	0
+279	-13.5	0
+280	-13.5	0
+281	-13.5	0
+282	-13.5	0
+283	-13.5	0
+284	-13.5	0.086638
+285	-13.5	0.21119
+286	-13.5	0.22034
+287	-13.5	0.068448
+288	-13.5	-0.095387
+289	-13.5	-0.18338
+290	-13.5	-0.34285
+291	-13.5	-0.13702
+292	-13.5	0.26975
+293	-13.5	0.46551
+294	-13.5	0.66573
+295	-13.5	0.92907
+296	-13.5	1.1384
+297	-13.5	0.99358
+298	-13.5	0.84839
+299	-13.5	0.70942
+300	-13.5	0.57045
+301	-13.5	0.66781
+302	-13.5	0.66973
+303	-13.5	0.6366
+304	-13.5	0.64021
+305	-13.5	0.64382
+306	-13.5	0.64744
+307	-13.5	0.62856
+308	-13.5	0.54362
+309	-13.5	0.43885
+310	-13.5	0.32807
+311	-13.5	0.18386
+312	-13.5	-0.042293
+313	-13.5	-0.27456
+314	-13.5	-0.50684
+315	-13.5	-0.73077
+316	-13.5	-0.92946
+317	-13.5	-1.5089
+318	-13.5	-1.1749
+319	-13.5	-1.2041
+320	-13.5	-0.82266
+321	-13.5	-0.2693
+322	-13.5	0
+323	-13.5	0
+324	-13.5	0
+325	-13.5	0
+326	-13.5	0
+327	-13.5	0
+328	-13.5	0
+329	-13.5	0
+330	-13.5	0
+331	-13.5	0
+332	-13.5	0
+333	-13.5	0
+334	-13.5	0
+335	-13.5	0
+336	-13.5	0
+337	-13.5	0
+338	-13.5	0
+339	-13.5	0
+340	-13.5	0
+341	-13.5	0
+342	-13.5	0
+343	-13.5	0
+344	-13.5	0
+345	-13.5	0
+346	-13.5	0
+347	-13.5	0
+348	-13.5	0
+349	-13.5	0
+350	-13.5	0
+351	-13.5	0
+352	-13.5	0
+353	-13.5	0
+354	-13.5	0
+355	-13.5	0
+356	-13.5	0
+357	-13.5	0
+358	-13.5	0
+359	-13.5	0
+360	-13.5	0
+0	-13	0
+1	-13	0
+2	-13	0
+3	-13	0
+4	-13	0
+5	-13	0
+6	-13	0
+7	-13	0
+8	-13	0
+9	-13	0
+10	-13	0
+11	-13	0
+12	-13	0
+13	-13	0.77673
+14	-13	1.7054
+15	-13	1.6755
+16	-13	1.4127
+17	-13	1.5821
+18	-13	1.6151
+19	-13	1.867
+20	-13	2.0475
+21	-13	2.0545
+22	-13	2.0364
+23	-13	2.0108
+24	-13	1.9808
+25	-13	1.9508
+26	-13	1.9763
+27	-13	2.3627
+28	-13	2.0951
+29	-13	1.6224
+30	-13	1.0416
+31	-13	0.45845
+32	-13	-0.049515
+33	-13	-0.38304
+34	-13	-0.2318
+35	-13	-0.63032
+36	-13	-0.98393
+37	-13	-1.1322
+38	-13	-0.96754
+39	-13	-0.65763
+40	-13	-0.18744
+41	-13	0
+42	-13	0
+43	-13	0
+44	-13	0
+45	-13	0
+46	-13	0
+47	-13	0
+48	-13	0
+49	-13	-0.15975
+50	-13	-0.065017
+51	-13	0
+52	-13	0
+53	-13	0
+54	-13	0
+55	-13	0
+56	-13	0
+57	-13	0
+58	-13	0
+59	-13	0
+60	-13	0
+61	-13	0
+62	-13	0
+63	-13	0
+64	-13	0
+65	-13	0
+66	-13	0
+67	-13	0
+68	-13	0
+69	-13	0
+70	-13	0
+71	-13	0
+72	-13	0
+73	-13	0
+74	-13	0
+75	-13	0
+76	-13	0
+77	-13	0
+78	-13	0
+79	-13	0
+80	-13	0
+81	-13	0
+82	-13	0
+83	-13	0
+84	-13	0
+85	-13	0
+86	-13	0
+87	-13	0
+88	-13	0
+89	-13	0
+90	-13	0
+91	-13	0
+92	-13	0
+93	-13	0
+94	-13	0
+95	-13	0
+96	-13	0
+97	-13	0
+98	-13	0
+99	-13	0
+100	-13	0
+101	-13	0
+102	-13	0
+103	-13	0
+104	-13	0
+105	-13	0
+106	-13	0
+107	-13	0
+108	-13	0
+109	-13	0
+110	-13	0
+111	-13	0
+112	-13	0
+113	-13	0
+114	-13	0
+115	-13	0
+116	-13	0
+117	-13	0
+118	-13	0
+119	-13	0
+120	-13	0
+121	-13	0
+122	-13	0
+123	-13	0
+124	-13	0
+125	-13	0
+126	-13	0
+127	-13	0
+128	-13	0
+129	-13	0
+130	-13	0
+131	-13	1.0049
+132	-13	1.1195
+133	-13	1.2512
+134	-13	1.4157
+135	-13	1.4915
+136	-13	0.99455
+137	-13	0
+138	-13	0
+139	-13	0
+140	-13	0
+141	-13	0
+142	-13	0.93975
+143	-13	1.9252
+144	-13	0
+145	-13	0
+146	-13	0
+147	-13	0
+148	-13	0
+149	-13	0
+150	-13	0
+151	-13	0
+152	-13	0
+153	-13	0
+154	-13	0
+155	-13	0
+156	-13	0
+157	-13	0
+158	-13	0
+159	-13	0
+160	-13	0
+161	-13	0
+162	-13	0
+163	-13	0
+164	-13	0
+165	-13	0
+166	-13	0
+167	-13	0
+168	-13	0
+169	-13	0
+170	-13	0
+171	-13	0
+172	-13	0
+173	-13	0
+174	-13	0
+175	-13	0
+176	-13	0
+177	-13	0
+178	-13	0
+179	-13	0
+180	-13	0
+181	-13	0
+182	-13	0
+183	-13	0
+184	-13	0
+185	-13	0
+186	-13	0
+187	-13	0
+188	-13	0
+189	-13	0
+190	-13	0
+191	-13	0
+192	-13	0
+193	-13	0
+194	-13	0
+195	-13	0
+196	-13	0
+197	-13	0
+198	-13	0
+199	-13	0
+200	-13	0
+201	-13	0
+202	-13	0
+203	-13	0
+204	-13	0
+205	-13	0
+206	-13	0
+207	-13	0
+208	-13	0
+209	-13	0
+210	-13	0
+211	-13	0
+212	-13	0
+213	-13	0
+214	-13	0
+215	-13	0
+216	-13	0
+217	-13	0
+218	-13	0
+219	-13	0
+220	-13	0
+221	-13	0
+222	-13	0
+223	-13	0
+224	-13	0
+225	-13	0
+226	-13	0
+227	-13	0
+228	-13	0
+229	-13	0
+230	-13	0
+231	-13	0
+232	-13	0
+233	-13	0
+234	-13	0
+235	-13	0
+236	-13	0
+237	-13	0
+238	-13	0
+239	-13	0
+240	-13	0
+241	-13	0
+242	-13	0
+243	-13	0
+244	-13	0
+245	-13	0
+246	-13	0
+247	-13	0
+248	-13	0
+249	-13	0
+250	-13	0
+251	-13	0
+252	-13	0
+253	-13	0
+254	-13	0
+255	-13	0
+256	-13	0
+257	-13	0
+258	-13	0
+259	-13	0
+260	-13	0
+261	-13	0
+262	-13	0
+263	-13	0
+264	-13	0
+265	-13	0
+266	-13	0
+267	-13	0
+268	-13	0
+269	-13	0
+270	-13	0
+271	-13	0
+272	-13	0
+273	-13	0
+274	-13	0
+275	-13	0
+276	-13	0
+277	-13	0
+278	-13	0
+279	-13	0
+280	-13	0
+281	-13	0
+282	-13	0
+283	-13	0
+284	-13	0.111
+285	-13	0.25578
+286	-13	0.25708
+287	-13	0.034599
+288	-13	-0.060754
+289	-13	-0.34747
+290	-13	-0.37821
+291	-13	-0.0050181
+292	-13	0.37951
+293	-13	0.66569
+294	-13	0.77754
+295	-13	0.91212
+296	-13	1.0886
+297	-13	0.94583
+298	-13	0.80686
+299	-13	0.66789
+300	-13	0.54674
+301	-13	0.78297
+302	-13	0.75842
+303	-13	0.74677
+304	-13	0.75038
+305	-13	0.75399
+306	-13	0.75761
+307	-13	0.75804
+308	-13	0.64863
+309	-13	0.53923
+310	-13	0.41965
+311	-13	0.18903
+312	-13	-0.043096
+313	-13	-0.27537
+314	-13	-0.50764
+315	-13	-0.71353
+316	-13	-1.3334
+317	-13	-1.6101
+318	-13	-1.1534
+319	-13	-1.1261
+320	-13	-0.68047
+321	-13	-0.1928
+322	-13	0
+323	-13	0
+324	-13	0
+325	-13	0
+326	-13	0
+327	-13	0
+328	-13	0
+329	-13	0
+330	-13	0
+331	-13	0
+332	-13	0
+333	-13	0
+334	-13	0
+335	-13	0
+336	-13	0
+337	-13	0
+338	-13	0
+339	-13	0
+340	-13	0
+341	-13	0
+342	-13	0
+343	-13	0
+344	-13	0
+345	-13	0
+346	-13	0
+347	-13	0
+348	-13	0
+349	-13	0
+350	-13	0
+351	-13	0
+352	-13	0
+353	-13	0
+354	-13	0
+355	-13	0
+356	-13	0
+357	-13	0
+358	-13	0
+359	-13	0
+360	-13	0
+0	-12.5	0
+1	-12.5	0
+2	-12.5	0
+3	-12.5	0
+4	-12.5	0
+5	-12.5	0
+6	-12.5	0
+7	-12.5	0
+8	-12.5	0
+9	-12.5	0
+10	-12.5	0
+11	-12.5	0
+12	-12.5	0
+13	-12.5	0.17647
+14	-12.5	1.1453
+15	-12.5	1.0536
+16	-12.5	1.0535
+17	-12.5	1.32
+18	-12.5	1.4586
+19	-12.5	1.6119
+20	-12.5	1.6775
+21	-12.5	1.7191
+22	-12.5	1.7351
+23	-12.5	1.8334
+24	-12.5	1.8264
+25	-12.5	1.7964
+26	-12.5	1.8177
+27	-12.5	2.1351
+28	-12.5	2.0839
+29	-12.5	1.5665
+30	-12.5	0.99204
+31	-12.5	0.41449
+32	-12.5	-0.11137
+33	-12.5	-0.44717
+34	-12.5	-0.2411
+35	-12.5	-0.78069
+36	-12.5	-1.0867
+37	-12.5	-1.2184
+38	-12.5	-1.1287
+39	-12.5	-0.67021
+40	-12.5	-0.16857
+41	-12.5	0
+42	-12.5	0
+43	-12.5	0
+44	-12.5	0
+45	-12.5	0
+46	-12.5	0
+47	-12.5	0
+48	-12.5	0
+49	-12.5	-0.014452
+50	-12.5	0
+51	-12.5	0
+52	-12.5	0
+53	-12.5	0
+54	-12.5	0
+55	-12.5	0
+56	-12.5	0
+57	-12.5	0
+58	-12.5	0
+59	-12.5	0
+60	-12.5	0
+61	-12.5	0
+62	-12.5	0
+63	-12.5	0
+64	-12.5	0
+65	-12.5	0
+66	-12.5	0
+67	-12.5	0
+68	-12.5	0
+69	-12.5	0
+70	-12.5	0
+71	-12.5	0
+72	-12.5	0
+73	-12.5	0
+74	-12.5	0
+75	-12.5	0
+76	-12.5	0
+77	-12.5	0
+78	-12.5	0
+79	-12.5	0
+80	-12.5	0
+81	-12.5	0
+82	-12.5	0
+83	-12.5	0
+84	-12.5	0
+85	-12.5	0
+86	-12.5	0
+87	-12.5	0
+88	-12.5	0
+89	-12.5	0
+90	-12.5	0
+91	-12.5	0
+92	-12.5	0
+93	-12.5	0
+94	-12.5	0
+95	-12.5	0
+96	-12.5	0
+97	-12.5	0
+98	-12.5	0
+99	-12.5	0
+100	-12.5	0
+101	-12.5	0
+102	-12.5	0
+103	-12.5	0
+104	-12.5	0
+105	-12.5	0
+106	-12.5	0
+107	-12.5	0
+108	-12.5	0
+109	-12.5	0
+110	-12.5	0
+111	-12.5	0
+112	-12.5	0
+113	-12.5	0
+114	-12.5	0
+115	-12.5	0
+116	-12.5	0
+117	-12.5	0
+118	-12.5	0
+119	-12.5	0
+120	-12.5	0
+121	-12.5	0
+122	-12.5	0
+123	-12.5	0
+124	-12.5	0
+125	-12.5	0
+126	-12.5	0
+127	-12.5	0
+128	-12.5	0
+129	-12.5	0
+130	-12.5	0
+131	-12.5	0.46066
+132	-12.5	0.89616
+133	-12.5	0.93043
+134	-12.5	1.1112
+135	-12.5	1.3115
+136	-12.5	0.26993
+137	-12.5	0
+138	-12.5	0
+139	-12.5	0
+140	-12.5	0
+141	-12.5	0
+142	-12.5	0.91833
+143	-12.5	1.6391
+144	-12.5	0
+145	-12.5	0
+146	-12.5	0
+147	-12.5	0
+148	-12.5	0
+149	-12.5	0
+150	-12.5	0
+151	-12.5	0
+152	-12.5	0
+153	-12.5	0
+154	-12.5	0
+155	-12.5	0
+156	-12.5	0
+157	-12.5	0
+158	-12.5	0
+159	-12.5	0
+160	-12.5	0
+161	-12.5	0
+162	-12.5	0
+163	-12.5	0
+164	-12.5	0
+165	-12.5	0
+166	-12.5	0
+167	-12.5	0
+168	-12.5	0
+169	-12.5	0
+170	-12.5	0
+171	-12.5	0
+172	-12.5	0
+173	-12.5	0
+174	-12.5	0
+175	-12.5	0
+176	-12.5	0
+177	-12.5	0
+178	-12.5	0
+179	-12.5	0
+180	-12.5	0
+181	-12.5	0
+182	-12.5	0
+183	-12.5	0
+184	-12.5	0
+185	-12.5	0
+186	-12.5	0
+187	-12.5	0
+188	-12.5	0
+189	-12.5	0
+190	-12.5	0
+191	-12.5	0
+192	-12.5	0
+193	-12.5	0
+194	-12.5	0
+195	-12.5	0
+196	-12.5	0
+197	-12.5	0
+198	-12.5	0
+199	-12.5	0
+200	-12.5	0
+201	-12.5	0
+202	-12.5	0
+203	-12.5	0
+204	-12.5	0
+205	-12.5	0
+206	-12.5	0
+207	-12.5	0
+208	-12.5	0
+209	-12.5	0
+210	-12.5	0
+211	-12.5	0
+212	-12.5	0
+213	-12.5	0
+214	-12.5	0
+215	-12.5	0
+216	-12.5	0
+217	-12.5	0
+218	-12.5	0
+219	-12.5	0
+220	-12.5	0
+221	-12.5	0
+222	-12.5	0
+223	-12.5	0
+224	-12.5	0
+225	-12.5	0
+226	-12.5	0
+227	-12.5	0
+228	-12.5	0
+229	-12.5	0
+230	-12.5	0
+231	-12.5	0
+232	-12.5	0
+233	-12.5	0
+234	-12.5	0
+235	-12.5	0
+236	-12.5	0
+237	-12.5	0
+238	-12.5	0
+239	-12.5	0
+240	-12.5	0
+241	-12.5	0
+242	-12.5	0
+243	-12.5	0
+244	-12.5	0
+245	-12.5	0
+246	-12.5	0
+247	-12.5	0
+248	-12.5	0
+249	-12.5	0
+250	-12.5	0
+251	-12.5	0
+252	-12.5	0
+253	-12.5	0
+254	-12.5	0
+255	-12.5	0
+256	-12.5	0
+257	-12.5	0
+258	-12.5	0
+259	-12.5	0
+260	-12.5	0
+261	-12.5	0
+262	-12.5	0
+263	-12.5	0
+264	-12.5	0
+265	-12.5	0
+266	-12.5	0
+267	-12.5	0
+268	-12.5	0
+269	-12.5	0
+270	-12.5	0
+271	-12.5	0
+272	-12.5	0
+273	-12.5	0
+274	-12.5	0
+275	-12.5	0
+276	-12.5	0
+277	-12.5	0
+278	-12.5	0
+279	-12.5	0
+280	-12.5	0
+281	-12.5	0
+282	-12.5	0
+283	-12.5	0
+284	-12.5	0.11217
+285	-12.5	0.30492
+286	-12.5	0.31236
+287	-12.5	0.10126
+288	-12.5	-0.11032
+289	-12.5	-0.18969
+290	-12.5	-0.18813
+291	-12.5	0.082949
+292	-12.5	0.49114
+293	-12.5	0.86532
+294	-12.5	0.97772
+295	-12.5	1.0896
+296	-12.5	1.0433
+297	-12.5	0.9043
+298	-12.5	0.76533
+299	-12.5	0.62635
+300	-12.5	0.6619
+301	-12.5	0.88832
+302	-12.5	0.85332
+303	-12.5	0.85694
+304	-12.5	0.86055
+305	-12.5	0.86416
+306	-12.5	0.80659
+307	-12.5	0.72199
+308	-12.5	0.61259
+309	-12.5	0.50318
+310	-12.5	0.3826
+311	-12.5	0.16936
+312	-12.5	-0.061264
+313	-12.5	-0.29188
+314	-12.5	-0.5225
+315	-12.5	-0.83221
+316	-12.5	-1.5183
+317	-12.5	-1.485
+318	-12.5	-1.1247
+319	-12.5	-0.95376
+320	-12.5	-0.50841
+321	-12.5	-0.34566
+322	-12.5	-0.088964
+323	-12.5	0
+324	-12.5	0
+325	-12.5	0
+326	-12.5	0
+327	-12.5	0
+328	-12.5	0
+329	-12.5	0
+330	-12.5	0
+331	-12.5	0
+332	-12.5	0
+333	-12.5	0
+334	-12.5	0
+335	-12.5	0
+336	-12.5	0
+337	-12.5	0
+338	-12.5	0
+339	-12.5	0
+340	-12.5	0
+341	-12.5	0
+342	-12.5	0
+343	-12.5	0
+344	-12.5	0
+345	-12.5	0
+346	-12.5	0
+347	-12.5	0
+348	-12.5	0
+349	-12.5	0
+350	-12.5	0
+351	-12.5	0
+352	-12.5	0
+353	-12.5	0
+354	-12.5	0
+355	-12.5	0
+356	-12.5	0
+357	-12.5	0
+358	-12.5	0
+359	-12.5	0
+360	-12.5	0
+0	-12	0
+1	-12	0
+2	-12	0
+3	-12	0
+4	-12	0
+5	-12	0
+6	-12	0
+7	-12	0
+8	-12	0
+9	-12	0
+10	-12	0
+11	-12	0
+12	-12	0
+13	-12	0
+14	-12	0.4555
+15	-12	0.64452
+16	-12	0.69944
+17	-12	0.97254
+18	-12	1.19
+19	-12	1.258
+20	-12	1.3067
+21	-12	1.3554
+22	-12	1.3906
+23	-12	1.5405
+24	-12	1.6036
+25	-12	1.6186
+26	-12	1.6739
+27	-12	1.9075
+28	-12	1.9432
+29	-12	1.1537
+30	-12	0.64751
+31	-12	0.36421
+32	-12	-0.18585
+33	-12	-0.4981
+34	-12	-0.48434
+35	-12	-0.62114
+36	-12	-1.1675
+37	-12	-1.4569
+38	-12	-1.2505
+39	-12	-0.73969
+40	-12	-0.20018
+41	-12	-0.00074679
+42	-12	0
+43	-12	0
+44	-12	0
+45	-12	0
+46	-12	0
+47	-12	0
+48	-12	0
+49	-12	0.00013
+50	-12	0
+51	-12	0
+52	-12	0
+53	-12	0
+54	-12	0
+55	-12	0
+56	-12	0
+57	-12	0
+58	-12	0
+59	-12	0
+60	-12	0
+61	-12	0
+62	-12	0
+63	-12	0
+64	-12	0
+65	-12	0
+66	-12	0
+67	-12	0
+68	-12	0
+69	-12	0
+70	-12	0
+71	-12	0
+72	-12	0
+73	-12	0
+74	-12	0
+75	-12	0
+76	-12	0
+77	-12	0
+78	-12	0
+79	-12	0
+80	-12	0
+81	-12	0
+82	-12	0
+83	-12	0
+84	-12	0
+85	-12	0
+86	-12	0
+87	-12	0
+88	-12	0
+89	-12	0
+90	-12	0
+91	-12	0
+92	-12	0
+93	-12	0
+94	-12	0
+95	-12	0
+96	-12	0
+97	-12	0
+98	-12	0
+99	-12	0
+100	-12	0
+101	-12	0
+102	-12	0
+103	-12	0
+104	-12	0
+105	-12	0
+106	-12	0
+107	-12	0
+108	-12	0
+109	-12	0
+110	-12	0
+111	-12	0
+112	-12	0
+113	-12	0
+114	-12	0
+115	-12	0
+116	-12	0
+117	-12	0
+118	-12	0
+119	-12	0
+120	-12	0
+121	-12	0
+122	-12	0
+123	-12	0.014393
+124	-12	0.017077
+125	-12	0
+126	-12	0
+127	-12	0
+128	-12	0
+129	-12	0
+130	-12	0
+131	-12	0
+132	-12	0
+133	-12	0.54115
+134	-12	0.6861
+135	-12	0
+136	-12	0.25391
+137	-12	0
+138	-12	0
+139	-12	0
+140	-12	0
+141	-12	0
+142	-12	0.72682
+143	-12	1.0161
+144	-12	0
+145	-12	0
+146	-12	0
+147	-12	0
+148	-12	0
+149	-12	0
+150	-12	0
+151	-12	0
+152	-12	0
+153	-12	0
+154	-12	0
+155	-12	0
+156	-12	0
+157	-12	0
+158	-12	0
+159	-12	0
+160	-12	0
+161	-12	0
+162	-12	0
+163	-12	0
+164	-12	0
+165	-12	0
+166	-12	0
+167	-12	0
+168	-12	0
+169	-12	0
+170	-12	0
+171	-12	0
+172	-12	0
+173	-12	0
+174	-12	0
+175	-12	0
+176	-12	0
+177	-12	0
+178	-12	0
+179	-12	0
+180	-12	0
+181	-12	0
+182	-12	0
+183	-12	0
+184	-12	0
+185	-12	0
+186	-12	0
+187	-12	0
+188	-12	0
+189	-12	0
+190	-12	0
+191	-12	0
+192	-12	0
+193	-12	0
+194	-12	0
+195	-12	0
+196	-12	0
+197	-12	0
+198	-12	0
+199	-12	0
+200	-12	0
+201	-12	0
+202	-12	0
+203	-12	0
+204	-12	0
+205	-12	0
+206	-12	0
+207	-12	0
+208	-12	0
+209	-12	0
+210	-12	0
+211	-12	0
+212	-12	0
+213	-12	0
+214	-12	0
+215	-12	0
+216	-12	0
+217	-12	0
+218	-12	0
+219	-12	0
+220	-12	0
+221	-12	0
+222	-12	0
+223	-12	0
+224	-12	0
+225	-12	0
+226	-12	0
+227	-12	0
+228	-12	0
+229	-12	0
+230	-12	0
+231	-12	0
+232	-12	0
+233	-12	0
+234	-12	0
+235	-12	0
+236	-12	0
+237	-12	0
+238	-12	0
+239	-12	0
+240	-12	0
+241	-12	0
+242	-12	0
+243	-12	0
+244	-12	0
+245	-12	0
+246	-12	0
+247	-12	0
+248	-12	0
+249	-12	0
+250	-12	0
+251	-12	0
+252	-12	0
+253	-12	0
+254	-12	0
+255	-12	0
+256	-12	0
+257	-12	0
+258	-12	0
+259	-12	0
+260	-12	0
+261	-12	0
+262	-12	0
+263	-12	0
+264	-12	0
+265	-12	0
+266	-12	0
+267	-12	0
+268	-12	0
+269	-12	0
+270	-12	0
+271	-12	0
+272	-12	0
+273	-12	0
+274	-12	0
+275	-12	0
+276	-12	0
+277	-12	0
+278	-12	0
+279	-12	0
+280	-12	0
+281	-12	0
+282	-12	0
+283	-12	0.025243
+284	-12	0.01951
+285	-12	0.38855
+286	-12	0.37719
+287	-12	0.17439
+288	-12	-0.090171
+289	-12	-0.075589
+290	-12	-0.017753
+291	-12	0.1388
+292	-12	0.55976
+293	-12	0.97925
+294	-12	1.1779
+295	-12	1.1654
+296	-12	1.0099
+297	-12	0.86276
+298	-12	0.72379
+299	-12	0.58482
+300	-12	0.77705
+301	-12	0.97701
+302	-12	0.96349
+303	-12	0.96711
+304	-12	0.91869
+305	-12	0.85435
+306	-12	0.79001
+307	-12	0.68594
+308	-12	0.57654
+309	-12	0.46182
+310	-12	0.33772
+311	-12	0.14968
+312	-12	-0.080937
+313	-12	-0.31156
+314	-12	-0.49904
+315	-12	-0.83107
+316	-12	-1.3549
+317	-12	-1.3598
+318	-12	-1.0784
+319	-12	-0.76015
+320	-12	-0.43358
+321	-12	-0.28811
+322	-12	-0.12492
+323	-12	0
+324	-12	0
+325	-12	0
+326	-12	0
+327	-12	0
+328	-12	0
+329	-12	0
+330	-12	0
+331	-12	0
+332	-12	0
+333	-12	0
+334	-12	0
+335	-12	0
+336	-12	0
+337	-12	0
+338	-12	0
+339	-12	0
+340	-12	0
+341	-12	0
+342	-12	0
+343	-12	0
+344	-12	0
+345	-12	0
+346	-12	0
+347	-12	0
+348	-12	0
+349	-12	0
+350	-12	0
+351	-12	0
+352	-12	0
+353	-12	0
+354	-12	0
+355	-12	0
+356	-12	0
+357	-12	0
+358	-12	0
+359	-12	0
+360	-12	0
+0	-11.5	0
+1	-11.5	0
+2	-11.5	0
+3	-11.5	0
+4	-11.5	0
+5	-11.5	0
+6	-11.5	0
+7	-11.5	0
+8	-11.5	0
+9	-11.5	0
+10	-11.5	0
+11	-11.5	0
+12	-11.5	0
+13	-11.5	0
+14	-11.5	0.2031
+15	-11.5	0.30165
+16	-11.5	0.42159
+17	-11.5	0.6754
+18	-11.5	0.92432
+19	-11.5	0.99391
+20	-11.5	1.0178
+21	-11.5	1.0175
+22	-11.5	1.0332
+23	-11.5	1.146
+24	-11.5	1.3549
+25	-11.5	1.4145
+26	-11.5	1.529
+27	-11.5	1.7075
+28	-11.5	1.7433
+29	-11.5	1.1506
+30	-11.5	0.82297
+31	-11.5	0.31393
+32	-11.5	-0.22449
+33	-11.5	-0.551
+34	-11.5	-0.75166
+35	-11.5	-0.2993
+36	-11.5	-1.222
+37	-11.5	-1.4903
+38	-11.5	-1.3361
+39	-11.5	-0.83874
+40	-11.5	-0.2353
+41	-11.5	0
+42	-11.5	0
+43	-11.5	0
+44	-11.5	0
+45	-11.5	0
+46	-11.5	0
+47	-11.5	0
+48	-11.5	0
+49	-11.5	7.6848e-07
+50	-11.5	0
+51	-11.5	0
+52	-11.5	0
+53	-11.5	0
+54	-11.5	0
+55	-11.5	0
+56	-11.5	0
+57	-11.5	0
+58	-11.5	0
+59	-11.5	0
+60	-11.5	0
+61	-11.5	0
+62	-11.5	0
+63	-11.5	0
+64	-11.5	0
+65	-11.5	0
+66	-11.5	0
+67	-11.5	0
+68	-11.5	0
+69	-11.5	0
+70	-11.5	0
+71	-11.5	0
+72	-11.5	0
+73	-11.5	0
+74	-11.5	0
+75	-11.5	0
+76	-11.5	0
+77	-11.5	0
+78	-11.5	0
+79	-11.5	0
+80	-11.5	0
+81	-11.5	0
+82	-11.5	0
+83	-11.5	0
+84	-11.5	0
+85	-11.5	0
+86	-11.5	0
+87	-11.5	0
+88	-11.5	0
+89	-11.5	0
+90	-11.5	0
+91	-11.5	0
+92	-11.5	0
+93	-11.5	0
+94	-11.5	0
+95	-11.5	0
+96	-11.5	0
+97	-11.5	0
+98	-11.5	0
+99	-11.5	0
+100	-11.5	0
+101	-11.5	0
+102	-11.5	0
+103	-11.5	0
+104	-11.5	0
+105	-11.5	0
+106	-11.5	0
+107	-11.5	0
+108	-11.5	0
+109	-11.5	0
+110	-11.5	0
+111	-11.5	0
+112	-11.5	0
+113	-11.5	0
+114	-11.5	0
+115	-11.5	0
+116	-11.5	0
+117	-11.5	0
+118	-11.5	0
+119	-11.5	0
+120	-11.5	0
+121	-11.5	0
+122	-11.5	0
+123	-11.5	0.030148
+124	-11.5	0.039875
+125	-11.5	0
+126	-11.5	0
+127	-11.5	0
+128	-11.5	0
+129	-11.5	0
+130	-11.5	0
+131	-11.5	0.092971
+132	-11.5	0
+133	-11.5	0
+134	-11.5	0.086679
+135	-11.5	0
+136	-11.5	0
+137	-11.5	0
+138	-11.5	0
+139	-11.5	0
+140	-11.5	0
+141	-11.5	0
+142	-11.5	0.64304
+143	-11.5	0.25863
+144	-11.5	0
+145	-11.5	0
+146	-11.5	0
+147	-11.5	0
+148	-11.5	0
+149	-11.5	0
+150	-11.5	0
+151	-11.5	0
+152	-11.5	0
+153	-11.5	0
+154	-11.5	0
+155	-11.5	0
+156	-11.5	0
+157	-11.5	0
+158	-11.5	0
+159	-11.5	0
+160	-11.5	0
+161	-11.5	0
+162	-11.5	0
+163	-11.5	0
+164	-11.5	0
+165	-11.5	0
+166	-11.5	0
+167	-11.5	0
+168	-11.5	0
+169	-11.5	0
+170	-11.5	0
+171	-11.5	0
+172	-11.5	0
+173	-11.5	0
+174	-11.5	0
+175	-11.5	0
+176	-11.5	0
+177	-11.5	0
+178	-11.5	0
+179	-11.5	0
+180	-11.5	0
+181	-11.5	0
+182	-11.5	0
+183	-11.5	0
+184	-11.5	0
+185	-11.5	0
+186	-11.5	0
+187	-11.5	0
+188	-11.5	0
+189	-11.5	0
+190	-11.5	0
+191	-11.5	0
+192	-11.5	0
+193	-11.5	0
+194	-11.5	0
+195	-11.5	0
+196	-11.5	0
+197	-11.5	0
+198	-11.5	0
+199	-11.5	0
+200	-11.5	0
+201	-11.5	0
+202	-11.5	0
+203	-11.5	0
+204	-11.5	0
+205	-11.5	0
+206	-11.5	0
+207	-11.5	0
+208	-11.5	0
+209	-11.5	0
+210	-11.5	0
+211	-11.5	0
+212	-11.5	0
+213	-11.5	0
+214	-11.5	0
+215	-11.5	0
+216	-11.5	0
+217	-11.5	0
+218	-11.5	0
+219	-11.5	0
+220	-11.5	0
+221	-11.5	0
+222	-11.5	0
+223	-11.5	0
+224	-11.5	0
+225	-11.5	0
+226	-11.5	0
+227	-11.5	0
+228	-11.5	0
+229	-11.5	0
+230	-11.5	0
+231	-11.5	0
+232	-11.5	0
+233	-11.5	0
+234	-11.5	0
+235	-11.5	0
+236	-11.5	0
+237	-11.5	0
+238	-11.5	0
+239	-11.5	0
+240	-11.5	0
+241	-11.5	0
+242	-11.5	0
+243	-11.5	0
+244	-11.5	0
+245	-11.5	0
+246	-11.5	0
+247	-11.5	0
+248	-11.5	0
+249	-11.5	0
+250	-11.5	0
+251	-11.5	0
+252	-11.5	0
+253	-11.5	0
+254	-11.5	0
+255	-11.5	0
+256	-11.5	0
+257	-11.5	0
+258	-11.5	0
+259	-11.5	0
+260	-11.5	0
+261	-11.5	0
+262	-11.5	0
+263	-11.5	0
+264	-11.5	0
+265	-11.5	0
+266	-11.5	0
+267	-11.5	0
+268	-11.5	0
+269	-11.5	0
+270	-11.5	0
+271	-11.5	0
+272	-11.5	0
+273	-11.5	0
+274	-11.5	0
+275	-11.5	0
+276	-11.5	0
+277	-11.5	0
+278	-11.5	0
+279	-11.5	0
+280	-11.5	0
+281	-11.5	0
+282	-11.5	0
+283	-11.5	0.048268
+284	-11.5	0.20882
+285	-11.5	0.50925
+286	-11.5	0.52539
+287	-11.5	0.25213
+288	-11.5	-0.055737
+289	-11.5	-0.017279
+290	-11.5	0.027435
+291	-11.5	0.208
+292	-11.5	0.63071
+293	-11.5	1.0534
+294	-11.5	1.2885
+295	-11.5	1.1329
+296	-11.5	0.97738
+297	-11.5	0.82183
+298	-11.5	0.68226
+299	-11.5	0.65598
+300	-11.5	0.89221
+301	-11.5	1.0701
+302	-11.5	1.0308
+303	-11.5	0.96645
+304	-11.5	0.90211
+305	-11.5	0.83777
+306	-11.5	0.75634
+307	-11.5	0.6499
+308	-11.5	0.54049
+309	-11.5	0.41695
+310	-11.5	0.29285
+311	-11.5	0.13001
+312	-11.5	-0.10061
+313	-11.5	-0.31828
+314	-11.5	-0.44243
+315	-11.5	-0.82994
+316	-11.5	-1.0404
+317	-11.5	-1.2346
+318	-11.5	-0.88274
+319	-11.5	-0.56501
+320	-11.5	-0.41215
+321	-11.5	-0.29997
+322	-11.5	-0.25529
+323	-11.5	0
+324	-11.5	0
+325	-11.5	0
+326	-11.5	0
+327	-11.5	0
+328	-11.5	0
+329	-11.5	0
+330	-11.5	0
+331	-11.5	0
+332	-11.5	0
+333	-11.5	0
+334	-11.5	0
+335	-11.5	0
+336	-11.5	0
+337	-11.5	0
+338	-11.5	0
+339	-11.5	0
+340	-11.5	0
+341	-11.5	0
+342	-11.5	0
+343	-11.5	0
+344	-11.5	0
+345	-11.5	0
+346	-11.5	0
+347	-11.5	0
+348	-11.5	0
+349	-11.5	0
+350	-11.5	0
+351	-11.5	0
+352	-11.5	0
+353	-11.5	0
+354	-11.5	0
+355	-11.5	0
+356	-11.5	0
+357	-11.5	0
+358	-11.5	0
+359	-11.5	0
+360	-11.5	0
+0	-11	0
+1	-11	0
+2	-11	0
+3	-11	0
+4	-11	0
+5	-11	0
+6	-11	0
+7	-11	0
+8	-11	0
+9	-11	0
+10	-11	0
+11	-11	0
+12	-11	0
+13	-11	0
+14	-11	-0.012577
+15	-11	0.070063
+16	-11	0.19174
+17	-11	0.40127
+18	-11	0.61966
+19	-11	0.7439
+20	-11	0.79527
+21	-11	0.79998
+22	-11	0.79971
+23	-11	0.8724
+24	-11	1.0611
+25	-11	1.2487
+26	-11	1.3763
+27	-11	1.547
+28	-11	1.4985
+29	-11	1.2643
+30	-11	0.86848
+31	-11	0.26335
+32	-11	-0.21659
+33	-11	-0.55582
+34	-11	-0.39566
+35	-11	-0.43594
+36	-11	-1.2253
+37	-11	-1.493
+38	-11	-1.3308
+39	-11	-0.82883
+40	-11	-0.25589
+41	-11	0
+42	-11	0
+43	-11	0
+44	-11	0
+45	-11	0
+46	-11	0
+47	-11	0
+48	-11	0
+49	-11	0
+50	-11	0
+51	-11	0
+52	-11	0
+53	-11	0
+54	-11	0
+55	-11	0
+56	-11	0
+57	-11	0
+58	-11	0
+59	-11	0
+60	-11	0
+61	-11	0
+62	-11	0
+63	-11	0
+64	-11	0
+65	-11	0
+66	-11	0
+67	-11	0
+68	-11	0
+69	-11	0
+70	-11	0
+71	-11	0
+72	-11	0
+73	-11	0
+74	-11	0
+75	-11	0
+76	-11	0
+77	-11	0
+78	-11	0
+79	-11	0
+80	-11	0
+81	-11	0
+82	-11	0
+83	-11	0
+84	-11	0
+85	-11	0
+86	-11	0
+87	-11	0
+88	-11	0
+89	-11	0
+90	-11	0
+91	-11	0
+92	-11	0
+93	-11	0
+94	-11	0
+95	-11	0
+96	-11	0
+97	-11	0
+98	-11	0
+99	-11	0
+100	-11	0
+101	-11	0
+102	-11	0
+103	-11	0
+104	-11	0
+105	-11	0
+106	-11	0
+107	-11	0
+108	-11	0
+109	-11	0
+110	-11	0
+111	-11	0
+112	-11	0
+113	-11	0
+114	-11	0
+115	-11	0
+116	-11	0
+117	-11	0
+118	-11	0
+119	-11	0
+120	-11	0
+121	-11	0
+122	-11	0
+123	-11	0.045902
+124	-11	0.046795
+125	-11	0.017013
+126	-11	0
+127	-11	0
+128	-11	0
+129	-11	0
+130	-11	0
+131	-11	0.011957
+132	-11	0
+133	-11	0
+134	-11	0
+135	-11	0
+136	-11	0
+137	-11	0
+138	-11	0
+139	-11	0
+140	-11	0
+141	-11	0
+142	-11	0
+143	-11	0
+144	-11	0
+145	-11	0
+146	-11	0
+147	-11	0
+148	-11	0
+149	-11	0
+150	-11	-0.0059075
+151	-11	0
+152	-11	0
+153	-11	0
+154	-11	0
+155	-11	0
+156	-11	0
+157	-11	0
+158	-11	0
+159	-11	0
+160	-11	0
+161	-11	0
+162	-11	0
+163	-11	0
+164	-11	0
+165	-11	0
+166	-11	0
+167	-11	0
+168	-11	0
+169	-11	0
+170	-11	0
+171	-11	0
+172	-11	0
+173	-11	0
+174	-11	0
+175	-11	0
+176	-11	0
+177	-11	0
+178	-11	0
+179	-11	0
+180	-11	0
+181	-11	0
+182	-11	0
+183	-11	0
+184	-11	0
+185	-11	0
+186	-11	0
+187	-11	0
+188	-11	0
+189	-11	0
+190	-11	0
+191	-11	0
+192	-11	0
+193	-11	0
+194	-11	0
+195	-11	0
+196	-11	0
+197	-11	0
+198	-11	0
+199	-11	0
+200	-11	0
+201	-11	0
+202	-11	0
+203	-11	0
+204	-11	0
+205	-11	0
+206	-11	0
+207	-11	0
+208	-11	0
+209	-11	0
+210	-11	0
+211	-11	0
+212	-11	0
+213	-11	0
+214	-11	0
+215	-11	0
+216	-11	0
+217	-11	0
+218	-11	0
+219	-11	0
+220	-11	0
+221	-11	0
+222	-11	0
+223	-11	0
+224	-11	0
+225	-11	0
+226	-11	0
+227	-11	0
+228	-11	0
+229	-11	0
+230	-11	0
+231	-11	0
+232	-11	0
+233	-11	0
+234	-11	0
+235	-11	0
+236	-11	0
+237	-11	0
+238	-11	0
+239	-11	0
+240	-11	0
+241	-11	0
+242	-11	0
+243	-11	0
+244	-11	0
+245	-11	0
+246	-11	0
+247	-11	0
+248	-11	0
+249	-11	0
+250	-11	0
+251	-11	0
+252	-11	0
+253	-11	0
+254	-11	0
+255	-11	0
+256	-11	0
+257	-11	0
+258	-11	0
+259	-11	0
+260	-11	0
+261	-11	0
+262	-11	0
+263	-11	0
+264	-11	0
+265	-11	0
+266	-11	0
+267	-11	0
+268	-11	0
+269	-11	0
+270	-11	0
+271	-11	0
+272	-11	0
+273	-11	0
+274	-11	0
+275	-11	0
+276	-11	0
+277	-11	0
+278	-11	0
+279	-11	0
+280	-11	0
+281	-11	0
+282	-11	0.00070243
+283	-11	0.076151
+284	-11	0.2036
+285	-11	0.54707
+286	-11	0.58126
+287	-11	0.3563
+288	-11	0.034484
+289	-11	-0.020579
+290	-11	0.024135
+291	-11	0.28034
+292	-11	0.70306
+293	-11	1.0804
+294	-11	1.2683
+295	-11	1.1071
+296	-11	0.94593
+297	-11	0.78935
+298	-11	0.64073
+299	-11	0.77114
+300	-11	0.93898
+301	-11	1.0567
+302	-11	1.0142
+303	-11	0.94987
+304	-11	0.88553
+305	-11	0.82118
+306	-11	0.72096
+307	-11	0.61385
+308	-11	0.49617
+309	-11	0.37207
+310	-11	0.24798
+311	-11	0.11034
+312	-11	-0.12028
+313	-11	-0.26166
+314	-11	-0.38582
+315	-11	-0.54248
+316	-11	-0.73925
+317	-11	-0.93602
+318	-11	-0.74668
+319	-11	-0.5269
+320	-11	-0.42352
+321	-11	-0.35233
+322	-11	-0.38936
+323	-11	-0.12502
+324	-11	0
+325	-11	0
+326	-11	0
+327	-11	0
+328	-11	0
+329	-11	0
+330	-11	0
+331	-11	0
+332	-11	0
+333	-11	0
+334	-11	0
+335	-11	0
+336	-11	0
+337	-11	0
+338	-11	0
+339	-11	0
+340	-11	0
+341	-11	0
+342	-11	0
+343	-11	0
+344	-11	0
+345	-11	0
+346	-11	0
+347	-11	0
+348	-11	0
+349	-11	0
+350	-11	0
+351	-11	0
+352	-11	0
+353	-11	0
+354	-11	0
+355	-11	0
+356	-11	0
+357	-11	0
+358	-11	0
+359	-11	0
+360	-11	0
+0	-10.5	0
+1	-10.5	0
+2	-10.5	0
+3	-10.5	0
+4	-10.5	0
+5	-10.5	0
+6	-10.5	0
+7	-10.5	0
+8	-10.5	0
+9	-10.5	0
+10	-10.5	0
+11	-10.5	0
+12	-10.5	0
+13	-10.5	0
+14	-10.5	-0.09097
+15	-10.5	-0.17701
+16	-10.5	-0.059224
+17	-10.5	0.18079
+18	-10.5	0.3487
+19	-10.5	0.50946
+20	-10.5	0.54525
+21	-10.5	0.58242
+22	-10.5	0.58215
+23	-10.5	0.68505
+24	-10.5	0.832
+25	-10.5	1.0207
+26	-10.5	1.2009
+27	-10.5	1.3671
+28	-10.5	1.3225
+29	-10.5	1.1296
+30	-10.5	0.77036
+31	-10.5	0.2161
+32	-10.5	-0.21174
+33	-10.5	-0.53191
+34	-10.5	-0.3817
+35	-10.5	-0.59302
+36	-10.5	-1.3154
+37	-10.5	-1.395
+38	-10.5	-1.1445
+39	-10.5	-0.71371
+40	-10.5	-0.22248
+41	-10.5	0
+42	-10.5	0
+43	-10.5	0
+44	-10.5	0
+45	-10.5	0
+46	-10.5	0
+47	-10.5	0
+48	-10.5	0
+49	-10.5	0
+50	-10.5	0
+51	-10.5	0
+52	-10.5	0
+53	-10.5	0
+54	-10.5	0
+55	-10.5	0
+56	-10.5	0
+57	-10.5	0
+58	-10.5	0
+59	-10.5	0
+60	-10.5	0
+61	-10.5	0
+62	-10.5	0
+63	-10.5	0
+64	-10.5	0
+65	-10.5	0
+66	-10.5	0
+67	-10.5	0
+68	-10.5	0
+69	-10.5	0
+70	-10.5	0
+71	-10.5	0
+72	-10.5	0
+73	-10.5	0
+74	-10.5	0
+75	-10.5	0
+76	-10.5	0
+77	-10.5	0
+78	-10.5	0
+79	-10.5	0
+80	-10.5	0
+81	-10.5	0
+82	-10.5	0
+83	-10.5	0
+84	-10.5	0
+85	-10.5	0
+86	-10.5	0
+87	-10.5	0
+88	-10.5	0
+89	-10.5	0
+90	-10.5	0
+91	-10.5	0
+92	-10.5	0
+93	-10.5	0
+94	-10.5	0
+95	-10.5	0
+96	-10.5	0
+97	-10.5	0
+98	-10.5	0
+99	-10.5	0
+100	-10.5	0
+101	-10.5	0
+102	-10.5	0
+103	-10.5	0
+104	-10.5	0
+105	-10.5	0
+106	-10.5	0
+107	-10.5	0
+108	-10.5	0
+109	-10.5	0
+110	-10.5	0
+111	-10.5	0
+112	-10.5	0
+113	-10.5	0
+114	-10.5	0
+115	-10.5	0
+116	-10.5	0
+117	-10.5	0
+118	-10.5	0
+119	-10.5	0.016623
+120	-10.5	0.0099736
+121	-10.5	0
+122	-10.5	0
+123	-10.5	0.077899
+124	-10.5	0.1997
+125	-10.5	0.45714
+126	-10.5	0
+127	-10.5	0
+128	-10.5	0
+129	-10.5	0
+130	-10.5	0
+131	-10.5	0
+132	-10.5	0
+133	-10.5	0
+134	-10.5	0
+135	-10.5	0
+136	-10.5	0
+137	-10.5	0
+138	-10.5	0
+139	-10.5	0
+140	-10.5	0
+141	-10.5	0
+142	-10.5	0
+143	-10.5	0
+144	-10.5	0
+145	-10.5	0
+146	-10.5	0
+147	-10.5	0
+148	-10.5	0
+149	-10.5	0
+150	-10.5	-0.01579
+151	-10.5	0
+152	-10.5	0
+153	-10.5	0
+154	-10.5	0
+155	-10.5	0
+156	-10.5	0
+157	-10.5	0
+158	-10.5	0
+159	-10.5	0
+160	-10.5	0
+161	-10.5	0
+162	-10.5	0
+163	-10.5	0
+164	-10.5	0
+165	-10.5	0
+166	-10.5	0
+167	-10.5	0
+168	-10.5	0
+169	-10.5	0
+170	-10.5	0
+171	-10.5	0
+172	-10.5	0
+173	-10.5	0
+174	-10.5	0
+175	-10.5	0
+176	-10.5	0
+177	-10.5	0
+178	-10.5	0
+179	-10.5	0
+180	-10.5	0
+181	-10.5	0
+182	-10.5	0
+183	-10.5	0
+184	-10.5	0
+185	-10.5	0
+186	-10.5	0
+187	-10.5	0
+188	-10.5	0
+189	-10.5	0
+190	-10.5	0
+191	-10.5	0
+192	-10.5	0
+193	-10.5	0
+194	-10.5	0
+195	-10.5	0
+196	-10.5	0
+197	-10.5	0
+198	-10.5	0
+199	-10.5	0
+200	-10.5	0
+201	-10.5	0
+202	-10.5	0
+203	-10.5	0
+204	-10.5	0
+205	-10.5	0
+206	-10.5	0
+207	-10.5	0
+208	-10.5	0
+209	-10.5	0
+210	-10.5	0
+211	-10.5	0
+212	-10.5	0
+213	-10.5	0
+214	-10.5	0
+215	-10.5	0
+216	-10.5	0
+217	-10.5	0
+218	-10.5	0
+219	-10.5	0
+220	-10.5	0
+221	-10.5	0
+222	-10.5	0
+223	-10.5	0
+224	-10.5	0
+225	-10.5	0
+226	-10.5	0
+227	-10.5	0
+228	-10.5	0
+229	-10.5	0
+230	-10.5	0
+231	-10.5	0
+232	-10.5	0
+233	-10.5	0
+234	-10.5	0
+235	-10.5	0
+236	-10.5	0
+237	-10.5	0
+238	-10.5	0
+239	-10.5	0
+240	-10.5	0
+241	-10.5	0
+242	-10.5	0
+243	-10.5	0
+244	-10.5	0
+245	-10.5	0
+246	-10.5	0
+247	-10.5	0
+248	-10.5	0
+249	-10.5	0
+250	-10.5	0
+251	-10.5	0
+252	-10.5	0
+253	-10.5	0
+254	-10.5	0
+255	-10.5	0
+256	-10.5	0
+257	-10.5	0
+258	-10.5	0
+259	-10.5	0
+260	-10.5	0
+261	-10.5	0
+262	-10.5	0
+263	-10.5	0
+264	-10.5	0
+265	-10.5	0
+266	-10.5	0
+267	-10.5	0
+268	-10.5	0
+269	-10.5	0
+270	-10.5	0
+271	-10.5	0
+272	-10.5	0
+273	-10.5	0
+274	-10.5	0
+275	-10.5	0
+276	-10.5	0
+277	-10.5	0
+278	-10.5	0
+279	-10.5	0
+280	-10.5	0
+281	-10.5	0
+282	-10.5	0.0093078
+283	-10.5	0.046461
+284	-10.5	0.3338
+285	-10.5	0.56038
+286	-10.5	0.65139
+287	-10.5	0.45298
+288	-10.5	0.12863
+289	-10.5	0.0050043
+290	-10.5	0.020834
+291	-10.5	0.35269
+292	-10.5	0.71055
+293	-10.5	1.0571
+294	-10.5	1.2497
+295	-10.5	1.0886
+296	-10.5	0.92737
+297	-10.5	0.76618
+298	-10.5	0.63119
+299	-10.5	0.70093
+300	-10.5	0.81868
+301	-10.5	0.93643
+302	-10.5	0.99763
+303	-10.5	0.93329
+304	-10.5	0.86894
+305	-10.5	0.78994
+306	-10.5	0.68558
+307	-10.5	0.57539
+308	-10.5	0.4513
+309	-10.5	0.3272
+310	-10.5	0.20311
+311	-10.5	0.079019
+312	-10.5	-0.080913
+313	-10.5	-0.20637
+314	-10.5	-0.32791
+315	-10.5	-0.41879
+316	-10.5	-0.58778
+317	-10.5	-0.65784
+318	-10.5	-0.5662
+319	-10.5	-0.55884
+320	-10.5	-0.47535
+321	-10.5	-0.40769
+322	-10.5	-0.53597
+323	-10.5	-0.34169
+324	-10.5	-0.038284
+325	-10.5	0
+326	-10.5	0
+327	-10.5	0
+328	-10.5	0
+329	-10.5	0
+330	-10.5	0
+331	-10.5	0
+332	-10.5	0
+333	-10.5	0
+334	-10.5	0
+335	-10.5	0
+336	-10.5	0
+337	-10.5	0
+338	-10.5	0
+339	-10.5	0
+340	-10.5	0
+341	-10.5	0
+342	-10.5	0
+343	-10.5	0
+344	-10.5	0
+345	-10.5	0
+346	-10.5	0
+347	-10.5	0
+348	-10.5	0
+349	-10.5	0
+350	-10.5	0
+351	-10.5	0
+352	-10.5	0
+353	-10.5	0
+354	-10.5	0
+355	-10.5	0
+356	-10.5	0
+357	-10.5	0
+358	-10.5	0
+359	-10.5	0
+360	-10.5	0
+0	-10	0
+1	-10	0
+2	-10	0
+3	-10	0
+4	-10	0
+5	-10	0
+6	-10	0
+7	-10	0
+8	-10	0
+9	-10	0
+10	-10	0
+11	-10	0
+12	-10	0
+13	-10	0
+14	-10	-0.12837
+15	-10	-0.39805
+16	-10	-0.23736
+17	-10	0.067411
+18	-10	0.18256
+19	-10	0.29597
+20	-10	0.34091
+21	-10	0.34661
+22	-10	0.36459
+23	-10	0.4977
+24	-10	0.64465
+25	-10	0.8166
+26	-10	1.043
+27	-10	1.117
+28	-10	1.1747
+29	-10	1.0185
+30	-10	0.67647
+31	-10	0.22694
+32	-10	-0.20449
+33	-10	-0.49332
+34	-10	-0.48274
+35	-10	-0.59912
+36	-10	-1.4055
+37	-10	-1.3848
+38	-10	-1.0428
+39	-10	-0.60902
+40	-10	-0.10945
+41	-10	0
+42	-10	0
+43	-10	0
+44	-10	0
+45	-10	0
+46	-10	0
+47	-10	0
+48	-10	0
+49	-10	0
+50	-10	0
+51	-10	0
+52	-10	0
+53	-10	0
+54	-10	0
+55	-10	0
+56	-10	0
+57	-10	0
+58	-10	0
+59	-10	0
+60	-10	0
+61	-10	0
+62	-10	0
+63	-10	0
+64	-10	0
+65	-10	0
+66	-10	0
+67	-10	0
+68	-10	0
+69	-10	0
+70	-10	0
+71	-10	0
+72	-10	0
+73	-10	0
+74	-10	0
+75	-10	0
+76	-10	0
+77	-10	0
+78	-10	0
+79	-10	0
+80	-10	0
+81	-10	0
+82	-10	0
+83	-10	0
+84	-10	0
+85	-10	0
+86	-10	0
+87	-10	0
+88	-10	0
+89	-10	0
+90	-10	0
+91	-10	0
+92	-10	0
+93	-10	0
+94	-10	0
+95	-10	0
+96	-10	0
+97	-10	0
+98	-10	0
+99	-10	0
+100	-10	0
+101	-10	0
+102	-10	0
+103	-10	0
+104	-10	0
+105	-10	0
+106	-10	0
+107	-10	0
+108	-10	0
+109	-10	0
+110	-10	0
+111	-10	0
+112	-10	0
+113	-10	0
+114	-10	0
+115	-10	0
+116	-10	0
+117	-10	0
+118	-10	0
+119	-10	0.065086
+120	-10	0.072116
+121	-10	0.015131
+122	-10	0
+123	-10	0
+124	-10	0.66381
+125	-10	0.84449
+126	-10	0
+127	-10	0
+128	-10	0
+129	-10	0
+130	-10	0
+131	-10	0
+132	-10	0
+133	-10	0
+134	-10	0
+135	-10	0
+136	-10	0
+137	-10	0
+138	-10	0
+139	-10	0
+140	-10	0
+141	-10	0
+142	-10	0
+143	-10	0
+144	-10	0
+145	-10	0
+146	-10	0
+147	-10	0
+148	-10	0.58507
+149	-10	0.53238
+150	-10	0
+151	-10	0
+152	-10	0
+153	-10	0
+154	-10	0
+155	-10	0
+156	-10	0
+157	-10	0
+158	-10	0
+159	-10	0
+160	-10	0
+161	-10	0
+162	-10	0
+163	-10	0
+164	-10	0
+165	-10	0
+166	-10	0
+167	-10	0
+168	-10	0
+169	-10	0
+170	-10	0
+171	-10	0
+172	-10	0
+173	-10	0
+174	-10	0
+175	-10	0
+176	-10	0
+177	-10	0
+178	-10	0
+179	-10	0
+180	-10	0
+181	-10	0
+182	-10	0
+183	-10	0
+184	-10	0
+185	-10	0
+186	-10	0
+187	-10	0
+188	-10	0
+189	-10	0
+190	-10	0
+191	-10	0
+192	-10	0
+193	-10	0
+194	-10	0
+195	-10	0
+196	-10	0
+197	-10	0
+198	-10	0
+199	-10	0
+200	-10	0
+201	-10	0
+202	-10	0
+203	-10	0
+204	-10	0
+205	-10	0
+206	-10	0
+207	-10	0
+208	-10	0
+209	-10	0
+210	-10	0
+211	-10	0
+212	-10	0
+213	-10	0
+214	-10	0
+215	-10	0
+216	-10	0
+217	-10	0
+218	-10	0
+219	-10	0
+220	-10	0
+221	-10	0
+222	-10	0
+223	-10	0
+224	-10	0
+225	-10	0
+226	-10	0
+227	-10	0
+228	-10	0
+229	-10	0
+230	-10	0
+231	-10	0
+232	-10	0
+233	-10	0
+234	-10	0
+235	-10	0
+236	-10	0
+237	-10	0
+238	-10	0
+239	-10	0
+240	-10	0
+241	-10	0
+242	-10	0
+243	-10	0
+244	-10	0
+245	-10	0
+246	-10	0
+247	-10	0
+248	-10	0
+249	-10	0
+250	-10	0
+251	-10	0
+252	-10	0
+253	-10	0
+254	-10	0
+255	-10	0
+256	-10	0
+257	-10	0
+258	-10	0
+259	-10	0
+260	-10	0
+261	-10	0
+262	-10	0
+263	-10	0
+264	-10	0
+265	-10	0
+266	-10	0
+267	-10	0
+268	-10	0
+269	-10	0
+270	-10	0
+271	-10	0
+272	-10	0
+273	-10	0
+274	-10	0
+275	-10	0
+276	-10	0
+277	-10	0
+278	-10	0
+279	-10	0
+280	-10	0
+281	-10	0
+282	-10	0.0042523
+283	-10	0.047743
+284	-10	0.42006
+285	-10	0.69619
+286	-10	0.77243
+287	-10	0.52899
+288	-10	0.20319
+289	-10	0.071818
+290	-10	0.041511
+291	-10	0.34075
+292	-10	0.68725
+293	-10	1.0338
+294	-10	1.2312
+295	-10	1.07
+296	-10	0.90881
+297	-10	0.77921
+298	-10	0.70265
+299	-10	0.69208
+300	-10	0.71385
+301	-10	0.81613
+302	-10	0.93389
+303	-10	0.9167
+304	-10	0.85236
+305	-10	0.75456
+306	-10	0.65021
+307	-10	0.53345
+308	-10	0.42625
+309	-10	0.31904
+310	-10	0.21184
+311	-10	0.10651
+312	-10	-0.023779
+313	-10	-0.15271
+314	-10	-0.25658
+315	-10	-0.34746
+316	-10	-0.43834
+317	-10	-0.47844
+318	-10	-0.5166
+319	-10	-0.54686
+320	-10	-0.52719
+321	-10	-0.55947
+322	-10	-0.60819
+323	-10	-0.45126
+324	-10	-0.020637
+325	-10	0
+326	-10	0
+327	-10	0
+328	-10	0
+329	-10	0
+330	-10	0
+331	-10	0
+332	-10	0
+333	-10	0
+334	-10	0
+335	-10	0
+336	-10	0
+337	-10	0
+338	-10	0
+339	-10	0
+340	-10	0
+341	-10	0
+342	-10	0
+343	-10	0
+344	-10	0
+345	-10	0
+346	-10	0
+347	-10	0
+348	-10	0
+349	-10	0
+350	-10	0
+351	-10	0
+352	-10	0
+353	-10	0
+354	-10	0
+355	-10	0
+356	-10	0
+357	-10	0
+358	-10	0
+359	-10	0
+360	-10	0
+0	-9.5	0
+1	-9.5	0
+2	-9.5	0
+3	-9.5	0
+4	-9.5	0
+5	-9.5	0
+6	-9.5	0
+7	-9.5	0
+8	-9.5	0
+9	-9.5	0
+10	-9.5	0
+11	-9.5	0
+12	-9.5	0
+13	-9.5	-0.034944
+14	-9.5	-0.15518
+15	-9.5	-0.49392
+16	-9.5	-0.4374
+17	-9.5	-0.062693
+18	-9.5	0.065201
+19	-9.5	0.042198
+20	-9.5	0.19174
+21	-9.5	0.17236
+22	-9.5	0.16568
+23	-9.5	0.31224
+24	-9.5	0.46052
+25	-9.5	0.65168
+26	-9.5	0.94331
+27	-9.5	1.0467
+28	-9.5	1.0939
+29	-9.5	0.92709
+30	-9.5	0.67028
+31	-9.5	0.23662
+32	-9.5	-0.17625
+33	-9.5	-0.44918
+34	-9.5	-0.65215
+35	-9.5	-0.57726
+36	-9.5	-1.4774
+37	-9.5	-1.3463
+38	-9.5	-0.99615
+39	-9.5	-0.52549
+40	-9.5	-0.10194
+41	-9.5	0
+42	-9.5	0
+43	-9.5	0
+44	-9.5	0
+45	-9.5	0
+46	-9.5	0
+47	-9.5	0
+48	-9.5	0
+49	-9.5	0
+50	-9.5	0
+51	-9.5	0
+52	-9.5	0
+53	-9.5	0
+54	-9.5	0
+55	-9.5	0
+56	-9.5	0
+57	-9.5	0
+58	-9.5	0
+59	-9.5	0
+60	-9.5	0
+61	-9.5	0
+62	-9.5	0
+63	-9.5	0
+64	-9.5	0
+65	-9.5	0
+66	-9.5	0
+67	-9.5	0
+68	-9.5	0
+69	-9.5	0
+70	-9.5	0
+71	-9.5	0
+72	-9.5	0
+73	-9.5	0
+74	-9.5	0
+75	-9.5	0
+76	-9.5	0
+77	-9.5	0
+78	-9.5	0
+79	-9.5	0
+80	-9.5	0
+81	-9.5	0
+82	-9.5	0
+83	-9.5	0
+84	-9.5	0
+85	-9.5	0
+86	-9.5	0
+87	-9.5	0
+88	-9.5	0
+89	-9.5	0
+90	-9.5	0
+91	-9.5	0
+92	-9.5	0
+93	-9.5	0
+94	-9.5	0
+95	-9.5	0
+96	-9.5	0
+97	-9.5	0
+98	-9.5	0
+99	-9.5	0
+100	-9.5	0
+101	-9.5	0
+102	-9.5	0
+103	-9.5	0
+104	-9.5	0
+105	-9.5	0
+106	-9.5	0
+107	-9.5	0
+108	-9.5	0
+109	-9.5	0
+110	-9.5	0
+111	-9.5	0
+112	-9.5	0
+113	-9.5	0
+114	-9.5	0
+115	-9.5	0
+116	-9.5	0
+117	-9.5	0
+118	-9.5	0
+119	-9.5	0.0014225
+120	-9.5	0.022164
+121	-9.5	0.0012171
+122	-9.5	0
+123	-9.5	0
+124	-9.5	0.6129
+125	-9.5	0.77952
+126	-9.5	0
+127	-9.5	0
+128	-9.5	0
+129	-9.5	0
+130	-9.5	0
+131	-9.5	0
+132	-9.5	0
+133	-9.5	0
+134	-9.5	0
+135	-9.5	0
+136	-9.5	0
+137	-9.5	0
+138	-9.5	0
+139	-9.5	0
+140	-9.5	0
+141	-9.5	0
+142	-9.5	0
+143	-9.5	0
+144	-9.5	0
+145	-9.5	0
+146	-9.5	0
+147	-9.5	0.099651
+148	-9.5	0.78577
+149	-9.5	0.77179
+150	-9.5	0
+151	-9.5	0.062158
+152	-9.5	0
+153	-9.5	0
+154	-9.5	0
+155	-9.5	0
+156	-9.5	0
+157	-9.5	0
+158	-9.5	0
+159	-9.5	0
+160	-9.5	0
+161	-9.5	0
+162	-9.5	0
+163	-9.5	0
+164	-9.5	0
+165	-9.5	0
+166	-9.5	0
+167	-9.5	0
+168	-9.5	0
+169	-9.5	0
+170	-9.5	0
+171	-9.5	0
+172	-9.5	0
+173	-9.5	0
+174	-9.5	0
+175	-9.5	0
+176	-9.5	0
+177	-9.5	0
+178	-9.5	0
+179	-9.5	0
+180	-9.5	0
+181	-9.5	0
+182	-9.5	0
+183	-9.5	0
+184	-9.5	0
+185	-9.5	0
+186	-9.5	0
+187	-9.5	0
+188	-9.5	0
+189	-9.5	0
+190	-9.5	0
+191	-9.5	0
+192	-9.5	0
+193	-9.5	0
+194	-9.5	0
+195	-9.5	0
+196	-9.5	0
+197	-9.5	0
+198	-9.5	0
+199	-9.5	0
+200	-9.5	0
+201	-9.5	0
+202	-9.5	0
+203	-9.5	0
+204	-9.5	0
+205	-9.5	0
+206	-9.5	0
+207	-9.5	0
+208	-9.5	0
+209	-9.5	0
+210	-9.5	0
+211	-9.5	0
+212	-9.5	0
+213	-9.5	0
+214	-9.5	0
+215	-9.5	0
+216	-9.5	0
+217	-9.5	0
+218	-9.5	0
+219	-9.5	0
+220	-9.5	0
+221	-9.5	0
+222	-9.5	0
+223	-9.5	0
+224	-9.5	0
+225	-9.5	0
+226	-9.5	0
+227	-9.5	0
+228	-9.5	0
+229	-9.5	0
+230	-9.5	0
+231	-9.5	0
+232	-9.5	0
+233	-9.5	0
+234	-9.5	0
+235	-9.5	0
+236	-9.5	0
+237	-9.5	0
+238	-9.5	0
+239	-9.5	0
+240	-9.5	0
+241	-9.5	0
+242	-9.5	0
+243	-9.5	0
+244	-9.5	0
+245	-9.5	0
+246	-9.5	0
+247	-9.5	0
+248	-9.5	0
+249	-9.5	0
+250	-9.5	0
+251	-9.5	0
+252	-9.5	0
+253	-9.5	0
+254	-9.5	0
+255	-9.5	0
+256	-9.5	0
+257	-9.5	0
+258	-9.5	0
+259	-9.5	0
+260	-9.5	0
+261	-9.5	0
+262	-9.5	0
+263	-9.5	0
+264	-9.5	0
+265	-9.5	0
+266	-9.5	0
+267	-9.5	0
+268	-9.5	0
+269	-9.5	0
+270	-9.5	0
+271	-9.5	0
+272	-9.5	0
+273	-9.5	0
+274	-9.5	0
+275	-9.5	0
+276	-9.5	0
+277	-9.5	0
+278	-9.5	0
+279	-9.5	0
+280	-9.5	0
+281	-9.5	0
+282	-9.5	-0.032965
+283	-9.5	0.21411
+284	-9.5	0.50744
+285	-9.5	0.79085
+286	-9.5	0.85789
+287	-9.5	0.53402
+288	-9.5	0.26207
+289	-9.5	0.21952
+290	-9.5	0.1562
+291	-9.5	0.31805
+292	-9.5	0.66395
+293	-9.5	1.0104
+294	-9.5	1.2126
+295	-9.5	1.0514
+296	-9.5	0.92573
+297	-9.5	0.85494
+298	-9.5	0.77411
+299	-9.5	0.73632
+300	-9.5	0.75808
+301	-9.5	0.77985
+302	-9.5	0.81359
+303	-9.5	0.90012
+304	-9.5	0.82354
+305	-9.5	0.73288
+306	-9.5	0.6738
+307	-9.5	0.60247
+308	-9.5	0.49527
+309	-9.5	0.38806
+310	-9.5	0.28086
+311	-9.5	0.17389
+312	-9.5	0.042564
+313	-9.5	-0.064621
+314	-9.5	-0.14828
+315	-9.5	-0.23507
+316	-9.5	-0.35366
+317	-9.5	-0.41544
+318	-9.5	-0.46056
+319	-9.5	-0.5061
+320	-9.5	-0.58775
+321	-9.5	-0.69003
+322	-9.5	-0.83648
+323	-9.5	-0.46459
+324	-9.5	-0.1354
+325	-9.5	0
+326	-9.5	0
+327	-9.5	0
+328	-9.5	0
+329	-9.5	0
+330	-9.5	0
+331	-9.5	0
+332	-9.5	0
+333	-9.5	0
+334	-9.5	0
+335	-9.5	0
+336	-9.5	0
+337	-9.5	0
+338	-9.5	0
+339	-9.5	0
+340	-9.5	0
+341	-9.5	0
+342	-9.5	0
+343	-9.5	0
+344	-9.5	0
+345	-9.5	0
+346	-9.5	0
+347	-9.5	0
+348	-9.5	0
+349	-9.5	0
+350	-9.5	0
+351	-9.5	0
+352	-9.5	0
+353	-9.5	0
+354	-9.5	0
+355	-9.5	0
+356	-9.5	0
+357	-9.5	0
+358	-9.5	0
+359	-9.5	0
+360	-9.5	0
+0	-9	0
+1	-9	0
+2	-9	0
+3	-9	0
+4	-9	0
+5	-9	0
+6	-9	0
+7	-9	0
+8	-9	0
+9	-9	0
+10	-9	0
+11	-9	0
+12	-9	0
+13	-9	0
+14	-9	-0.19318
+15	-9	-0.45959
+16	-9	-0.49609
+17	-9	-0.20282
+18	-9	-0.052156
+19	-9	-0.064971
+20	-9	0.0057995
+21	-9	0.029761
+22	-9	0.06593
+23	-9	0.14388
+24	-9	0.28229
+25	-9	0.51448
+26	-9	0.83727
+27	-9	0.98954
+28	-9	1.0605
+29	-9	0.65561
+30	-9	0.66309
+31	-9	0.24548
+32	-9	-0.12761
+33	-9	-0.39591
+34	-9	-0.67603
+35	-9	-0.7999
+36	-9	-1.3192
+37	-9	-1.3627
+38	-9	-1.0757
+39	-9	-0.5367
+40	-9	-0.072948
+41	-9	0
+42	-9	0
+43	-9	0
+44	-9	0
+45	-9	0
+46	-9	0
+47	-9	0
+48	-9	0
+49	-9	0
+50	-9	0
+51	-9	0
+52	-9	0
+53	-9	0
+54	-9	0
+55	-9	0
+56	-9	0
+57	-9	0
+58	-9	0
+59	-9	0
+60	-9	0
+61	-9	0
+62	-9	0
+63	-9	0
+64	-9	0
+65	-9	0
+66	-9	0
+67	-9	0
+68	-9	0
+69	-9	0
+70	-9	0
+71	-9	0
+72	-9	0
+73	-9	0
+74	-9	0
+75	-9	0
+76	-9	0
+77	-9	0
+78	-9	0
+79	-9	0
+80	-9	0
+81	-9	0
+82	-9	0
+83	-9	0
+84	-9	0
+85	-9	0
+86	-9	0
+87	-9	0
+88	-9	0
+89	-9	0
+90	-9	0
+91	-9	0
+92	-9	0
+93	-9	0
+94	-9	0
+95	-9	0
+96	-9	0
+97	-9	0
+98	-9	0
+99	-9	0
+100	-9	0
+101	-9	0
+102	-9	0
+103	-9	0
+104	-9	0
+105	-9	0
+106	-9	0
+107	-9	0
+108	-9	0
+109	-9	0
+110	-9	0
+111	-9	0
+112	-9	0
+113	-9	0
+114	-9	0
+115	-9	0
+116	-9	0
+117	-9	0.50432
+118	-9	0.23096
+119	-9	0
+120	-9	0.18669
+121	-9	0.075615
+122	-9	0.10457
+123	-9	0
+124	-9	0
+125	-9	0.78394
+126	-9	0
+127	-9	0
+128	-9	0
+129	-9	0
+130	-9	0
+131	-9	0
+132	-9	0
+133	-9	0
+134	-9	0
+135	-9	0
+136	-9	0
+137	-9	0
+138	-9	0
+139	-9	0
+140	-9	0
+141	-9	0.041969
+142	-9	0.56671
+143	-9	0
+144	-9	0
+145	-9	0
+146	-9	0
+147	-9	0.37722
+148	-9	0.82802
+149	-9	0.16654
+150	-9	0
+151	-9	0
+152	-9	0
+153	-9	0
+154	-9	0
+155	-9	0
+156	-9	0
+157	-9	0
+158	-9	0
+159	-9	0
+160	-9	0
+161	-9	0
+162	-9	0
+163	-9	0
+164	-9	0
+165	-9	0
+166	-9	0
+167	-9	0
+168	-9	0
+169	-9	0
+170	-9	0
+171	-9	0
+172	-9	0
+173	-9	0
+174	-9	0
+175	-9	0
+176	-9	0
+177	-9	0
+178	-9	0
+179	-9	0
+180	-9	0
+181	-9	0
+182	-9	0
+183	-9	0
+184	-9	0
+185	-9	0
+186	-9	0
+187	-9	0
+188	-9	0
+189	-9	0
+190	-9	0
+191	-9	0
+192	-9	0
+193	-9	0
+194	-9	0
+195	-9	0
+196	-9	0
+197	-9	0
+198	-9	0
+199	-9	0
+200	-9	0
+201	-9	0
+202	-9	0
+203	-9	0
+204	-9	0
+205	-9	0
+206	-9	0
+207	-9	0
+208	-9	0
+209	-9	0
+210	-9	0
+211	-9	0
+212	-9	0
+213	-9	0
+214	-9	0
+215	-9	0
+216	-9	0
+217	-9	0
+218	-9	0
+219	-9	0
+220	-9	0
+221	-9	0
+222	-9	0
+223	-9	0
+224	-9	0
+225	-9	0
+226	-9	0
+227	-9	0
+228	-9	0
+229	-9	0
+230	-9	0
+231	-9	0
+232	-9	0
+233	-9	0
+234	-9	0
+235	-9	0
+236	-9	0
+237	-9	0
+238	-9	0
+239	-9	0
+240	-9	0
+241	-9	0
+242	-9	0
+243	-9	0
+244	-9	0
+245	-9	0
+246	-9	0
+247	-9	0
+248	-9	0
+249	-9	0
+250	-9	0
+251	-9	0
+252	-9	0
+253	-9	0
+254	-9	0
+255	-9	0
+256	-9	0
+257	-9	0
+258	-9	0
+259	-9	0
+260	-9	0
+261	-9	0
+262	-9	0
+263	-9	0
+264	-9	0
+265	-9	0
+266	-9	0
+267	-9	0
+268	-9	0
+269	-9	0
+270	-9	0
+271	-9	0
+272	-9	0
+273	-9	0
+274	-9	0
+275	-9	0
+276	-9	0
+277	-9	0
+278	-9	0
+279	-9	0
+280	-9	0
+281	-9	0
+282	-9	-0.074176
+283	-9	0.18339
+284	-9	0.5196
+285	-9	0.82228
+286	-9	0.96534
+287	-9	0.57973
+288	-9	0.39725
+289	-9	0.33823
+290	-9	0.27089
+291	-9	0.29629
+292	-9	0.64156
+293	-9	0.98715
+294	-9	1.1941
+295	-9	1.0722
+296	-9	1.0015
+297	-9	0.93066
+298	-9	0.84557
+299	-9	0.78055
+300	-9	0.80231
+301	-9	0.82408
+302	-9	0.84585
+303	-9	0.86762
+304	-9	0.82999
+305	-9	0.7686
+306	-9	0.71496
+307	-9	0.66828
+308	-9	0.56429
+309	-9	0.45708
+310	-9	0.35424
+311	-9	0.24023
+312	-9	0.13034
+313	-9	0.053172
+314	-9	-0.029144
+315	-9	-0.11593
+316	-9	-0.27294
+317	-9	-0.34481
+318	-9	-0.39772
+319	-9	-0.50376
+320	-9	-0.68063
+321	-9	-0.74096
+322	-9	-0.62937
+323	-9	-0.44217
+324	-9	-0.15175
+325	-9	-0.0041784
+326	-9	0
+327	-9	0
+328	-9	0
+329	-9	0
+330	-9	0
+331	-9	0
+332	-9	0
+333	-9	0
+334	-9	0
+335	-9	0
+336	-9	0
+337	-9	0
+338	-9	0
+339	-9	0
+340	-9	0
+341	-9	0
+342	-9	0
+343	-9	0
+344	-9	0
+345	-9	0
+346	-9	0
+347	-9	0
+348	-9	0
+349	-9	0
+350	-9	0
+351	-9	0
+352	-9	0
+353	-9	0
+354	-9	0
+355	-9	0
+356	-9	0
+357	-9	0
+358	-9	0
+359	-9	0
+360	-9	0
+0	-8.5	0
+1	-8.5	0
+2	-8.5	0
+3	-8.5	0
+4	-8.5	0
+5	-8.5	0
+6	-8.5	0
+7	-8.5	0
+8	-8.5	0
+9	-8.5	0
+10	-8.5	0
+11	-8.5	0
+12	-8.5	0
+13	-8.5	-0.025316
+14	-8.5	-0.19902
+15	-8.5	-0.33225
+16	-8.5	-0.37488
+17	-8.5	-0.33909
+18	-8.5	-0.1647
+19	-8.5	-0.12631
+20	-8.5	-0.043519
+21	-8.5	-0.057002
+22	-8.5	-0.026519
+23	-8.5	0.0043827
+24	-8.5	0.1735
+25	-8.5	0.38556
+26	-8.5	0.73101
+27	-8.5	0.94035
+28	-8.5	1.0738
+29	-8.5	0.44469
+30	-8.5	0.67474
+31	-8.5	0.23958
+32	-8.5	-0.064782
+33	-8.5	-0.34265
+34	-8.5	-0.61413
+35	-8.5	-0.85736
+36	-8.5	-1.1615
+37	-8.5	-1.5073
+38	-8.5	-1.1555
+39	-8.5	-0.5499
+40	-8.5	-0.065711
+41	-8.5	0
+42	-8.5	0
+43	-8.5	0
+44	-8.5	0
+45	-8.5	0
+46	-8.5	0
+47	-8.5	0
+48	-8.5	0
+49	-8.5	0
+50	-8.5	0
+51	-8.5	0
+52	-8.5	0
+53	-8.5	0
+54	-8.5	0
+55	-8.5	0
+56	-8.5	0
+57	-8.5	0
+58	-8.5	0
+59	-8.5	0
+60	-8.5	0
+61	-8.5	0
+62	-8.5	0
+63	-8.5	0
+64	-8.5	0
+65	-8.5	0
+66	-8.5	0
+67	-8.5	0
+68	-8.5	0
+69	-8.5	0
+70	-8.5	0
+71	-8.5	0
+72	-8.5	0
+73	-8.5	0
+74	-8.5	0
+75	-8.5	0
+76	-8.5	0
+77	-8.5	0
+78	-8.5	0
+79	-8.5	0
+80	-8.5	0
+81	-8.5	0
+82	-8.5	0
+83	-8.5	0
+84	-8.5	0
+85	-8.5	0
+86	-8.5	0
+87	-8.5	0
+88	-8.5	0
+89	-8.5	0
+90	-8.5	0
+91	-8.5	0
+92	-8.5	0
+93	-8.5	0
+94	-8.5	0
+95	-8.5	0
+96	-8.5	0
+97	-8.5	0
+98	-8.5	0
+99	-8.5	0
+100	-8.5	0
+101	-8.5	0
+102	-8.5	0
+103	-8.5	0
+104	-8.5	0
+105	-8.5	0
+106	-8.5	0
+107	-8.5	0
+108	-8.5	0
+109	-8.5	0
+110	-8.5	0
+111	-8.5	0
+112	-8.5	0
+113	-8.5	-0.17897
+114	-8.5	-0.019983
+115	-8.5	-0.0056408
+116	-8.5	0.011838
+117	-8.5	0.36999
+118	-8.5	0.7686
+119	-8.5	0.21982
+120	-8.5	0.10462
+121	-8.5	0.48512
+122	-8.5	0.048212
+123	-8.5	0
+124	-8.5	0.40589
+125	-8.5	0
+126	-8.5	0
+127	-8.5	0
+128	-8.5	0
+129	-8.5	0
+130	-8.5	0
+131	-8.5	0
+132	-8.5	0
+133	-8.5	0
+134	-8.5	0
+135	-8.5	0
+136	-8.5	0
+137	-8.5	0
+138	-8.5	0.089713
+139	-8.5	0.0085488
+140	-8.5	0
+141	-8.5	0.20742
+142	-8.5	0.8941
+143	-8.5	0
+144	-8.5	0
+145	-8.5	0
+146	-8.5	0
+147	-8.5	0.74304
+148	-8.5	0.70817
+149	-8.5	0
+150	-8.5	0
+151	-8.5	0
+152	-8.5	0
+153	-8.5	0
+154	-8.5	0
+155	-8.5	0
+156	-8.5	0
+157	-8.5	0
+158	-8.5	0
+159	-8.5	0
+160	-8.5	0
+161	-8.5	0
+162	-8.5	0
+163	-8.5	0
+164	-8.5	0
+165	-8.5	0
+166	-8.5	0
+167	-8.5	0
+168	-8.5	0
+169	-8.5	0
+170	-8.5	0
+171	-8.5	0
+172	-8.5	0
+173	-8.5	0
+174	-8.5	0
+175	-8.5	0
+176	-8.5	0
+177	-8.5	0
+178	-8.5	0
+179	-8.5	0
+180	-8.5	0
+181	-8.5	0
+182	-8.5	0
+183	-8.5	0
+184	-8.5	0
+185	-8.5	0
+186	-8.5	0
+187	-8.5	0
+188	-8.5	0
+189	-8.5	0
+190	-8.5	0
+191	-8.5	0
+192	-8.5	0
+193	-8.5	0
+194	-8.5	0
+195	-8.5	0
+196	-8.5	0
+197	-8.5	0
+198	-8.5	0
+199	-8.5	0
+200	-8.5	0
+201	-8.5	0
+202	-8.5	0
+203	-8.5	0
+204	-8.5	0
+205	-8.5	0
+206	-8.5	0
+207	-8.5	0
+208	-8.5	0
+209	-8.5	0
+210	-8.5	0
+211	-8.5	0
+212	-8.5	0
+213	-8.5	0
+214	-8.5	0
+215	-8.5	0
+216	-8.5	0
+217	-8.5	0
+218	-8.5	0
+219	-8.5	0
+220	-8.5	0
+221	-8.5	0
+222	-8.5	0
+223	-8.5	0
+224	-8.5	0
+225	-8.5	0
+226	-8.5	0
+227	-8.5	0
+228	-8.5	0
+229	-8.5	0
+230	-8.5	0
+231	-8.5	0
+232	-8.5	0
+233	-8.5	0
+234	-8.5	0
+235	-8.5	0
+236	-8.5	0
+237	-8.5	0
+238	-8.5	0
+239	-8.5	0
+240	-8.5	0
+241	-8.5	0
+242	-8.5	0
+243	-8.5	0
+244	-8.5	0
+245	-8.5	0
+246	-8.5	0
+247	-8.5	0
+248	-8.5	0
+249	-8.5	0
+250	-8.5	0
+251	-8.5	0
+252	-8.5	0
+253	-8.5	0
+254	-8.5	0
+255	-8.5	0
+256	-8.5	0
+257	-8.5	0
+258	-8.5	0
+259	-8.5	0
+260	-8.5	0
+261	-8.5	0
+262	-8.5	0
+263	-8.5	0
+264	-8.5	0
+265	-8.5	0
+266	-8.5	0
+267	-8.5	0
+268	-8.5	0
+269	-8.5	0
+270	-8.5	0
+271	-8.5	0
+272	-8.5	0
+273	-8.5	0
+274	-8.5	0
+275	-8.5	0
+276	-8.5	0
+277	-8.5	0
+278	-8.5	0
+279	-8.5	0
+280	-8.5	0
+281	-8.5	-0.001755
+282	-8.5	-0.085801
+283	-8.5	0.11667
+284	-8.5	0.39133
+285	-8.5	0.86578
+286	-8.5	1.0112
+287	-8.5	0.65612
+288	-8.5	0.51994
+289	-8.5	0.45292
+290	-8.5	0.38558
+291	-8.5	0.31824
+292	-8.5	0.6198
+293	-8.5	0.96506
+294	-8.5	1.2169
+295	-8.5	1.148
+296	-8.5	1.0772
+297	-8.5	1.0041
+298	-8.5	0.91703
+299	-8.5	0.82997
+300	-8.5	0.84655
+301	-8.5	0.86831
+302	-8.5	0.89008
+303	-8.5	0.91185
+304	-8.5	0.8657
+305	-8.5	0.80431
+306	-8.5	0.75611
+307	-8.5	0.70944
+308	-8.5	0.63331
+309	-8.5	0.52759
+310	-8.5	0.42862
+311	-8.5	0.3253
+312	-8.5	0.24813
+313	-8.5	0.17096
+314	-8.5	0.089993
+315	-8.5	-0.024149
+316	-8.5	-0.19223
+317	-8.5	-0.28817
+318	-8.5	-0.37351
+319	-8.5	-0.4953
+320	-8.5	-0.68437
+321	-8.5	-0.82992
+322	-8.5	-0.65517
+323	-8.5	-0.39563
+324	-8.5	-0.15415
+325	-8.5	0.021555
+326	-8.5	0
+327	-8.5	0
+328	-8.5	0
+329	-8.5	0
+330	-8.5	0
+331	-8.5	0
+332	-8.5	0
+333	-8.5	0
+334	-8.5	0
+335	-8.5	0
+336	-8.5	0
+337	-8.5	0
+338	-8.5	0
+339	-8.5	0
+340	-8.5	0
+341	-8.5	0
+342	-8.5	0
+343	-8.5	0
+344	-8.5	0
+345	-8.5	0
+346	-8.5	0
+347	-8.5	0
+348	-8.5	0
+349	-8.5	0
+350	-8.5	0
+351	-8.5	0
+352	-8.5	0
+353	-8.5	0
+354	-8.5	0
+355	-8.5	0
+356	-8.5	0
+357	-8.5	0
+358	-8.5	0
+359	-8.5	0
+360	-8.5	0
+0	-8	0
+1	-8	0
+2	-8	0
+3	-8	0
+4	-8	0
+5	-8	0
+6	-8	0
+7	-8	0
+8	-8	0
+9	-8	0
+10	-8	0
+11	-8	0
+12	-8	0
+13	-8	-0.0097607
+14	-8	-0.11315
+15	-8	-0.2195
+16	-8	-0.28138
+17	-8	-0.21116
+18	-8	-0.13999
+19	-8	-0.056262
+20	-8	-0.032799
+21	-8	-0.07219
+22	-8	-0.093495
+23	-8	-0.063012
+24	-8	0.10054
+25	-8	0.31558
+26	-8	0.6786
+27	-8	0.97876
+28	-8	1.1147
+29	-8	1.0008
+30	-8	0.67078
+31	-8	0.1587
+32	-8	-0.0048695
+33	-8	-0.28802
+34	-8	-0.52553
+35	-8	-0.74177
+36	-8	-1.0085
+37	-8	-1.3948
+38	-8	-1.2338
+39	-8	-0.49099
+40	-8	0
+41	-8	0
+42	-8	0
+43	-8	0
+44	-8	0
+45	-8	0
+46	-8	0
+47	-8	0
+48	-8	0
+49	-8	0
+50	-8	0
+51	-8	0
+52	-8	0
+53	-8	0
+54	-8	0
+55	-8	0
+56	-8	0
+57	-8	0
+58	-8	0
+59	-8	0
+60	-8	0
+61	-8	0
+62	-8	0
+63	-8	0
+64	-8	0
+65	-8	0
+66	-8	0
+67	-8	0
+68	-8	0
+69	-8	0
+70	-8	0
+71	-8	0
+72	-8	0
+73	-8	0
+74	-8	0
+75	-8	0
+76	-8	0
+77	-8	0
+78	-8	0
+79	-8	0
+80	-8	0
+81	-8	0
+82	-8	0
+83	-8	0
+84	-8	0
+85	-8	0
+86	-8	0
+87	-8	0
+88	-8	0
+89	-8	0
+90	-8	0
+91	-8	0
+92	-8	0
+93	-8	0
+94	-8	0
+95	-8	0
+96	-8	0
+97	-8	0
+98	-8	0
+99	-8	0
+100	-8	0
+101	-8	0
+102	-8	0
+103	-8	0
+104	-8	0
+105	-8	0
+106	-8	-0.056757
+107	-8	-0.18872
+108	-8	0
+109	-8	0
+110	-8	-0.13129
+111	-8	-0.23864
+112	-8	-0.38632
+113	-8	-0.36508
+114	-8	-0.073505
+115	-8	-0.0023674
+116	-8	0
+117	-8	0
+118	-8	0.087164
+119	-8	0.30948
+120	-8	0
+121	-8	0.045201
+122	-8	0
+123	-8	0
+124	-8	0
+125	-8	0.1394
+126	-8	0.32604
+127	-8	0
+128	-8	0
+129	-8	0
+130	-8	0
+131	-8	0
+132	-8	0
+133	-8	0
+134	-8	0
+135	-8	0
+136	-8	0
+137	-8	0
+138	-8	0.18637
+139	-8	0.14791
+140	-8	0.06136
+141	-8	0.23482
+142	-8	0.90199
+143	-8	1.038
+144	-8	0.25966
+145	-8	0
+146	-8	0.56009
+147	-8	0.68558
+148	-8	0.2786
+149	-8	0
+150	-8	0
+151	-8	0
+152	-8	0
+153	-8	0
+154	-8	0
+155	-8	0
+156	-8	0
+157	-8	0
+158	-8	0
+159	-8	0
+160	-8	0
+161	-8	0
+162	-8	0
+163	-8	0
+164	-8	0
+165	-8	0
+166	-8	0
+167	-8	0
+168	-8	0
+169	-8	0
+170	-8	0
+171	-8	0
+172	-8	0
+173	-8	0
+174	-8	0
+175	-8	0
+176	-8	0
+177	-8	0
+178	-8	0
+179	-8	0
+180	-8	0
+181	-8	0
+182	-8	0
+183	-8	0
+184	-8	0
+185	-8	0
+186	-8	0
+187	-8	0
+188	-8	0
+189	-8	0
+190	-8	0
+191	-8	0
+192	-8	0
+193	-8	0
+194	-8	0
+195	-8	0
+196	-8	0
+197	-8	0
+198	-8	0
+199	-8	0
+200	-8	0
+201	-8	0
+202	-8	0
+203	-8	0
+204	-8	0
+205	-8	0
+206	-8	0
+207	-8	0
+208	-8	0
+209	-8	0
+210	-8	0
+211	-8	0
+212	-8	0
+213	-8	0
+214	-8	0
+215	-8	0
+216	-8	0
+217	-8	0
+218	-8	0
+219	-8	0
+220	-8	0
+221	-8	0
+222	-8	0
+223	-8	0
+224	-8	0
+225	-8	0
+226	-8	0
+227	-8	0
+228	-8	0
+229	-8	0
+230	-8	0
+231	-8	0
+232	-8	0
+233	-8	0
+234	-8	0
+235	-8	0
+236	-8	0
+237	-8	0
+238	-8	0
+239	-8	0
+240	-8	0
+241	-8	0
+242	-8	0
+243	-8	0
+244	-8	0
+245	-8	0
+246	-8	0
+247	-8	0
+248	-8	0
+249	-8	0
+250	-8	0
+251	-8	0
+252	-8	0
+253	-8	0
+254	-8	0
+255	-8	0
+256	-8	0
+257	-8	0
+258	-8	0
+259	-8	0
+260	-8	0
+261	-8	0
+262	-8	0
+263	-8	0
+264	-8	0
+265	-8	0
+266	-8	0
+267	-8	0
+268	-8	0
+269	-8	0
+270	-8	0
+271	-8	0
+272	-8	0
+273	-8	0
+274	-8	0
+275	-8	0
+276	-8	0
+277	-8	0
+278	-8	0
+279	-8	0
+280	-8	0
+281	-8	-0.0093542
+282	-8	-0.047435
+283	-8	0.04369
+284	-8	0.44373
+285	-8	0.92748
+286	-8	1.0675
+287	-8	0.74818
+288	-8	0.63495
+289	-8	0.56761
+290	-8	0.50027
+291	-8	0.43293
+292	-8	0.60673
+293	-8	1.0152
+294	-8	1.2408
+295	-8	1.2022
+296	-8	1.1529
+297	-8	1.0755
+298	-8	0.98849
+299	-8	0.90143
+300	-8	0.89078
+301	-8	0.91255
+302	-8	0.93431
+303	-8	0.94765
+304	-8	0.90142
+305	-8	0.84394
+306	-8	0.79726
+307	-8	0.75059
+308	-8	0.70233
+309	-8	0.60491
+310	-8	0.55328
+311	-8	0.52929
+312	-8	0.36592
+313	-8	0.28876
+314	-8	0.20913
+315	-8	0.056564
+316	-8	-0.12845
+317	-8	-0.24053
+318	-8	-0.32609
+319	-8	-0.42065
+320	-8	-0.61411
+321	-8	-0.72997
+322	-8	-0.67865
+323	-8	-0.33273
+324	-8	-0.14639
+325	-8	0.031197
+326	-8	0
+327	-8	0
+328	-8	0
+329	-8	0
+330	-8	0
+331	-8	0
+332	-8	0
+333	-8	0
+334	-8	0
+335	-8	0
+336	-8	0
+337	-8	0
+338	-8	0
+339	-8	0
+340	-8	0
+341	-8	0
+342	-8	0
+343	-8	0
+344	-8	0
+345	-8	0
+346	-8	0
+347	-8	0
+348	-8	0
+349	-8	0
+350	-8	0
+351	-8	0
+352	-8	0
+353	-8	0
+354	-8	0
+355	-8	0
+356	-8	0
+357	-8	0
+358	-8	0
+359	-8	0
+360	-8	0
+0	-7.5	0
+1	-7.5	0
+2	-7.5	0
+3	-7.5	0
+4	-7.5	0
+5	-7.5	0
+6	-7.5	0
+7	-7.5	0
+8	-7.5	0
+9	-7.5	0
+10	-7.5	0
+11	-7.5	0
+12	-7.5	0
+13	-7.5	0.048389
+14	-7.5	-0.012215
+15	-7.5	-0.11598
+16	-7.5	-0.17177
+17	-7.5	-0.13996
+18	-7.5	-0.069006
+19	-7.5	-0.016195
+20	-7.5	-0.02825
+21	-7.5	-0.068207
+22	-7.5	-0.1237
+23	-7.5	-0.12999
+24	-7.5	0.028811
+25	-7.5	0.25873
+26	-7.5	0.60577
+27	-7.5	0.97594
+28	-7.5	1.1532
+29	-7.5	1.0514
+30	-7.5	0.44356
+31	-7.5	0.3859
+32	-7.5	0.09843
+33	-7.5	-0.21858
+34	-7.5	-0.41282
+35	-7.5	-0.58331
+36	-7.5	-0.91723
+37	-7.5	-1.2777
+38	-7.5	-1.3523
+39	-7.5	-0.48478
+40	-7.5	0
+41	-7.5	0
+42	-7.5	0
+43	-7.5	0
+44	-7.5	0
+45	-7.5	0
+46	-7.5	0
+47	-7.5	0
+48	-7.5	0
+49	-7.5	0
+50	-7.5	0
+51	-7.5	0
+52	-7.5	0
+53	-7.5	0
+54	-7.5	0
+55	-7.5	0
+56	-7.5	0
+57	-7.5	0
+58	-7.5	0
+59	-7.5	0
+60	-7.5	0
+61	-7.5	0
+62	-7.5	0
+63	-7.5	0
+64	-7.5	0
+65	-7.5	0
+66	-7.5	0
+67	-7.5	0
+68	-7.5	0
+69	-7.5	0
+70	-7.5	0
+71	-7.5	0
+72	-7.5	0
+73	-7.5	0
+74	-7.5	0
+75	-7.5	0
+76	-7.5	0
+77	-7.5	0
+78	-7.5	0
+79	-7.5	0
+80	-7.5	0
+81	-7.5	0
+82	-7.5	0
+83	-7.5	0
+84	-7.5	0
+85	-7.5	0
+86	-7.5	0
+87	-7.5	0
+88	-7.5	0
+89	-7.5	0
+90	-7.5	0
+91	-7.5	0
+92	-7.5	0
+93	-7.5	0
+94	-7.5	0
+95	-7.5	0
+96	-7.5	0
+97	-7.5	0
+98	-7.5	0
+99	-7.5	0
+100	-7.5	0
+101	-7.5	0
+102	-7.5	0
+103	-7.5	0
+104	-7.5	0
+105	-7.5	-0.12749
+106	-7.5	-0.016112
+107	-7.5	-0.58247
+108	-7.5	-0.34429
+109	-7.5	-0.17659
+110	-7.5	-0.25496
+111	-7.5	-0.38701
+112	-7.5	-0.64351
+113	-7.5	-0.2153
+114	-7.5	0
+115	-7.5	0
+116	-7.5	0
+117	-7.5	0
+118	-7.5	0
+119	-7.5	0.11038
+120	-7.5	0
+121	-7.5	0
+122	-7.5	0
+123	-7.5	0
+124	-7.5	0
+125	-7.5	0.039451
+126	-7.5	0.34352
+127	-7.5	0
+128	-7.5	0
+129	-7.5	0
+130	-7.5	0
+131	-7.5	0
+132	-7.5	0
+133	-7.5	0
+134	-7.5	0
+135	-7.5	0
+136	-7.5	0
+137	-7.5	0
+138	-7.5	0.15031
+139	-7.5	0.26923
+140	-7.5	0.12014
+141	-7.5	0.23345
+142	-7.5	0.84711
+143	-7.5	1.2209
+144	-7.5	1.077
+145	-7.5	0.59182
+146	-7.5	0.82804
+147	-7.5	0.39676
+148	-7.5	0
+149	-7.5	0
+150	-7.5	0
+151	-7.5	0
+152	-7.5	0
+153	-7.5	0
+154	-7.5	0
+155	-7.5	0
+156	-7.5	0
+157	-7.5	0
+158	-7.5	0
+159	-7.5	0
+160	-7.5	0
+161	-7.5	0
+162	-7.5	0
+163	-7.5	0
+164	-7.5	0
+165	-7.5	0
+166	-7.5	0
+167	-7.5	0
+168	-7.5	0
+169	-7.5	0
+170	-7.5	0
+171	-7.5	0
+172	-7.5	0
+173	-7.5	0
+174	-7.5	0
+175	-7.5	0
+176	-7.5	0
+177	-7.5	0
+178	-7.5	0
+179	-7.5	0
+180	-7.5	0
+181	-7.5	0
+182	-7.5	0
+183	-7.5	0
+184	-7.5	0
+185	-7.5	0
+186	-7.5	0
+187	-7.5	0
+188	-7.5	0
+189	-7.5	0
+190	-7.5	0
+191	-7.5	0
+192	-7.5	0
+193	-7.5	0
+194	-7.5	0
+195	-7.5	0
+196	-7.5	0
+197	-7.5	0
+198	-7.5	0
+199	-7.5	0
+200	-7.5	0
+201	-7.5	0
+202	-7.5	0
+203	-7.5	0
+204	-7.5	0
+205	-7.5	0
+206	-7.5	0
+207	-7.5	0
+208	-7.5	0
+209	-7.5	0
+210	-7.5	0
+211	-7.5	0
+212	-7.5	0
+213	-7.5	0
+214	-7.5	0
+215	-7.5	0
+216	-7.5	0
+217	-7.5	0
+218	-7.5	0
+219	-7.5	0
+220	-7.5	0
+221	-7.5	0
+222	-7.5	0
+223	-7.5	0
+224	-7.5	0
+225	-7.5	0
+226	-7.5	0
+227	-7.5	0
+228	-7.5	0
+229	-7.5	0
+230	-7.5	0
+231	-7.5	0
+232	-7.5	0
+233	-7.5	0
+234	-7.5	0
+235	-7.5	0
+236	-7.5	0
+237	-7.5	0
+238	-7.5	0
+239	-7.5	0
+240	-7.5	0
+241	-7.5	0
+242	-7.5	0
+243	-7.5	0
+244	-7.5	0
+245	-7.5	0
+246	-7.5	0
+247	-7.5	0
+248	-7.5	0
+249	-7.5	0
+250	-7.5	0
+251	-7.5	0
+252	-7.5	0
+253	-7.5	0
+254	-7.5	0
+255	-7.5	0
+256	-7.5	0
+257	-7.5	0
+258	-7.5	0
+259	-7.5	0
+260	-7.5	0
+261	-7.5	0
+262	-7.5	0
+263	-7.5	0
+264	-7.5	0
+265	-7.5	0
+266	-7.5	0
+267	-7.5	0
+268	-7.5	0
+269	-7.5	0
+270	-7.5	0
+271	-7.5	0
+272	-7.5	0
+273	-7.5	0
+274	-7.5	0
+275	-7.5	0
+276	-7.5	0
+277	-7.5	0
+278	-7.5	0
+279	-7.5	0
+280	-7.5	0
+281	-7.5	-0.01698
+282	-7.5	-0.022048
+283	-7.5	0.039918
+284	-7.5	0.40463
+285	-7.5	0.97932
+286	-7.5	0.96137
+287	-7.5	0.73122
+288	-7.5	0.63028
+289	-7.5	0.55813
+290	-7.5	0.48598
+291	-7.5	0.41528
+292	-7.5	0.68328
+293	-7.5	0.99429
+294	-7.5	1.2356
+295	-7.5	1.2261
+296	-7.5	1.1874
+297	-7.5	1.147
+298	-7.5	1.0599
+299	-7.5	0.97289
+300	-7.5	0.93501
+301	-7.5	0.95678
+302	-7.5	0.97855
+303	-7.5	0.98334
+304	-7.5	0.93713
+305	-7.5	0.88509
+306	-7.5	0.83842
+307	-7.5	0.79135
+308	-7.5	0.7956
+309	-7.5	0.70444
+310	-7.5	0.90444
+311	-7.5	1.0768
+312	-7.5	0.85927
+313	-7.5	0.64172
+314	-7.5	0.29827
+315	-7.5	0.10692
+316	-7.5	-0.048122
+317	-7.5	-0.17321
+318	-7.5	-0.27663
+319	-7.5	-0.36587
+320	-7.5	-0.52676
+321	-7.5	-0.65582
+322	-7.5	-0.625
+323	-7.5	-0.37534
+324	-7.5	-0.1214
+325	-7.5	0.058033
+326	-7.5	0
+327	-7.5	0
+328	-7.5	0
+329	-7.5	0
+330	-7.5	0
+331	-7.5	0
+332	-7.5	0
+333	-7.5	0
+334	-7.5	0
+335	-7.5	0
+336	-7.5	0
+337	-7.5	0
+338	-7.5	0
+339	-7.5	0
+340	-7.5	0
+341	-7.5	0
+342	-7.5	0
+343	-7.5	0
+344	-7.5	0
+345	-7.5	0
+346	-7.5	0
+347	-7.5	0
+348	-7.5	0
+349	-7.5	0
+350	-7.5	0
+351	-7.5	0
+352	-7.5	0
+353	-7.5	0
+354	-7.5	0
+355	-7.5	0
+356	-7.5	0
+357	-7.5	0
+358	-7.5	0
+359	-7.5	0
+360	-7.5	0
+0	-7	0
+1	-7	0
+2	-7	0
+3	-7	0
+4	-7	0
+5	-7	0
+6	-7	0
+7	-7	0
+8	-7	0
+9	-7	0
+10	-7	0
+11	-7	0
+12	-7	0
+13	-7	0.085337
+14	-7	0.075271
+15	-7	-0.029897
+16	-7	-0.058436
+17	-7	-0.042848
+18	-7	0.00040837
+19	-7	-0.011646
+20	-7	-0.023701
+21	-7	-0.064223
+22	-7	-0.11972
+23	-7	-0.17521
+24	-7	-0.030999
+25	-7	0.21414
+26	-7	0.56581
+27	-7	0.93575
+28	-7	1.2011
+29	-7	1.0228
+30	-7	0.088226
+31	-7	0.50351
+32	-7	0.20449
+33	-7	-0.081596
+34	-7	-0.28136
+35	-7	-0.4273
+36	-7	-0.70711
+37	-7	-1.0574
+38	-7	-1.324
+39	-7	-0.57495
+40	-7	0
+41	-7	0
+42	-7	0
+43	-7	0
+44	-7	0
+45	-7	0
+46	-7	0
+47	-7	0
+48	-7	0
+49	-7	0
+50	-7	0
+51	-7	0
+52	-7	0
+53	-7	0
+54	-7	0
+55	-7	0
+56	-7	0
+57	-7	0
+58	-7	0
+59	-7	0
+60	-7	0
+61	-7	0
+62	-7	0
+63	-7	0
+64	-7	0
+65	-7	0
+66	-7	0
+67	-7	0
+68	-7	0
+69	-7	0
+70	-7	0
+71	-7	0
+72	-7	0
+73	-7	0
+74	-7	0
+75	-7	0
+76	-7	0
+77	-7	0
+78	-7	0
+79	-7	0
+80	-7	0
+81	-7	0
+82	-7	0
+83	-7	0
+84	-7	0
+85	-7	0
+86	-7	0
+87	-7	0
+88	-7	0
+89	-7	0
+90	-7	0
+91	-7	0
+92	-7	0
+93	-7	0
+94	-7	0
+95	-7	0
+96	-7	0
+97	-7	0
+98	-7	0
+99	-7	0
+100	-7	0
+101	-7	0
+102	-7	0
+103	-7	0
+104	-7	0
+105	-7	-0.079594
+106	-7	-0.16188
+107	-7	-0.86899
+108	-7	-0.70966
+109	-7	-0.26631
+110	-7	-0.26823
+111	-7	-0.32881
+112	-7	-0.29605
+113	-7	-0.49346
+114	-7	-0.081208
+115	-7	0
+116	-7	0
+117	-7	0
+118	-7	0
+119	-7	0
+120	-7	0
+121	-7	0
+122	-7	0
+123	-7	0
+124	-7	0
+125	-7	0
+126	-7	0.20036
+127	-7	0.0019972
+128	-7	0
+129	-7	0
+130	-7	0
+131	-7	0
+132	-7	0
+133	-7	0
+134	-7	0
+135	-7	0
+136	-7	0
+137	-7	0
+138	-7	0.015848
+139	-7	0.2558
+140	-7	0.12298
+141	-7	0.15474
+142	-7	0.65634
+143	-7	1.0131
+144	-7	0.9773
+145	-7	1.1218
+146	-7	0.89885
+147	-7	0.35777
+148	-7	0
+149	-7	0
+150	-7	0
+151	-7	0
+152	-7	0
+153	-7	0
+154	-7	0
+155	-7	0
+156	-7	0
+157	-7	0
+158	-7	0
+159	-7	0
+160	-7	0
+161	-7	0
+162	-7	0
+163	-7	0
+164	-7	0
+165	-7	0
+166	-7	0
+167	-7	0
+168	-7	0
+169	-7	0
+170	-7	0
+171	-7	0
+172	-7	0
+173	-7	0
+174	-7	0
+175	-7	0
+176	-7	0
+177	-7	0
+178	-7	0
+179	-7	0
+180	-7	0
+181	-7	0
+182	-7	0
+183	-7	0
+184	-7	0
+185	-7	0
+186	-7	0
+187	-7	0
+188	-7	0
+189	-7	0
+190	-7	0
+191	-7	0
+192	-7	0
+193	-7	0
+194	-7	0
+195	-7	0
+196	-7	0
+197	-7	0
+198	-7	0
+199	-7	0
+200	-7	0
+201	-7	0
+202	-7	0
+203	-7	0
+204	-7	0
+205	-7	0
+206	-7	0
+207	-7	0
+208	-7	0
+209	-7	0
+210	-7	0
+211	-7	0
+212	-7	0
+213	-7	0
+214	-7	0
+215	-7	0
+216	-7	0
+217	-7	0
+218	-7	0
+219	-7	0
+220	-7	0
+221	-7	0
+222	-7	0
+223	-7	0
+224	-7	0
+225	-7	0
+226	-7	0
+227	-7	0
+228	-7	0
+229	-7	0
+230	-7	0
+231	-7	0
+232	-7	0
+233	-7	0
+234	-7	0
+235	-7	0
+236	-7	0
+237	-7	0
+238	-7	0
+239	-7	0
+240	-7	0
+241	-7	0
+242	-7	0
+243	-7	0
+244	-7	0
+245	-7	0
+246	-7	0
+247	-7	0
+248	-7	0
+249	-7	0
+250	-7	0
+251	-7	0
+252	-7	0
+253	-7	0
+254	-7	0
+255	-7	0
+256	-7	0
+257	-7	0
+258	-7	0
+259	-7	0
+260	-7	0
+261	-7	0
+262	-7	0
+263	-7	0
+264	-7	0
+265	-7	0
+266	-7	0
+267	-7	0
+268	-7	0
+269	-7	0
+270	-7	0
+271	-7	0
+272	-7	0
+273	-7	0
+274	-7	0
+275	-7	0
+276	-7	0
+277	-7	0
+278	-7	0
+279	-7	0
+280	-7	-0.0014991
+281	-7	-0.018584
+282	-7	-0.028071
+283	-7	0.071406
+284	-7	0.32613
+285	-7	1.0304
+286	-7	0.86106
+287	-7	0.69134
+288	-7	0.56896
+289	-7	0.49681
+290	-7	0.42638
+291	-7	0.35899
+292	-7	0.7297
+293	-7	0.97098
+294	-7	1.2123
+295	-7	1.25
+296	-7	1.2114
+297	-7	1.2241
+298	-7	1.1314
+299	-7	1.0444
+300	-7	0.97925
+301	-7	1.001
+302	-7	1.0228
+303	-7	1.019
+304	-7	0.97292
+305	-7	0.92624
+306	-7	0.85757
+307	-7	0.73558
+308	-7	0.89512
+309	-7	0.83436
+310	-7	1.2556
+311	-7	1.6244
+312	-7	1.4068
+313	-7	0.89119
+314	-7	0.37159
+315	-7	0.16528
+316	-7	-0.010826
+317	-7	-0.15096
+318	-7	-0.25046
+319	-7	-0.31966
+320	-7	-0.47549
+321	-7	-0.63216
+322	-7	-0.56414
+323	-7	-0.35062
+324	-7	-0.10657
+325	-7	0.035588
+326	-7	0
+327	-7	0
+328	-7	0
+329	-7	0
+330	-7	0
+331	-7	0
+332	-7	0
+333	-7	0
+334	-7	0
+335	-7	0
+336	-7	0
+337	-7	0
+338	-7	0
+339	-7	0
+340	-7	0
+341	-7	0
+342	-7	0
+343	-7	0
+344	-7	0
+345	-7	0
+346	-7	0
+347	-7	0
+348	-7	0
+349	-7	0
+350	-7	0
+351	-7	0
+352	-7	0
+353	-7	0
+354	-7	0
+355	-7	0
+356	-7	0
+357	-7	0
+358	-7	0
+359	-7	0
+360	-7	0
+0	-6.5	0
+1	-6.5	0
+2	-6.5	0
+3	-6.5	0
+4	-6.5	0
+5	-6.5	0
+6	-6.5	0
+7	-6.5	0
+8	-6.5	0
+9	-6.5	0
+10	-6.5	0
+11	-6.5	0
+12	-6.5	0
+13	-6.5	0.13663
+14	-6.5	0.15715
+15	-6.5	0.058348
+16	-6.5	0.04443
+17	-6.5	0.050783
+18	-6.5	0.038719
+19	-6.5	0.0051407
+20	-6.5	-0.019151
+21	-6.5	-0.06024
+22	-6.5	-0.15257
+23	-6.5	-0.23677
+24	-6.5	-0.075373
+25	-6.5	0.1764
+26	-6.5	0.54579
+27	-6.5	0.94395
+28	-6.5	1.2206
+29	-6.5	1.0174
+30	-6.5	0.59787
+31	-6.5	0.56621
+32	-6.5	0.30608
+33	-6.5	0.057143
+34	-6.5	-0.14766
+35	-6.5	-0.29441
+36	-6.5	-0.51988
+37	-6.5	-0.84872
+38	-6.5	-1.0556
+39	-6.5	-0.50032
+40	-6.5	0
+41	-6.5	0
+42	-6.5	0
+43	-6.5	0
+44	-6.5	0
+45	-6.5	0
+46	-6.5	0
+47	-6.5	0
+48	-6.5	0
+49	-6.5	0
+50	-6.5	0
+51	-6.5	0
+52	-6.5	0
+53	-6.5	0
+54	-6.5	0
+55	-6.5	0
+56	-6.5	0
+57	-6.5	0
+58	-6.5	0
+59	-6.5	0
+60	-6.5	0
+61	-6.5	0
+62	-6.5	0
+63	-6.5	0
+64	-6.5	0
+65	-6.5	0
+66	-6.5	0
+67	-6.5	0
+68	-6.5	0
+69	-6.5	0
+70	-6.5	0
+71	-6.5	0
+72	-6.5	0
+73	-6.5	0
+74	-6.5	0
+75	-6.5	0
+76	-6.5	0
+77	-6.5	0
+78	-6.5	0
+79	-6.5	0
+80	-6.5	0
+81	-6.5	0
+82	-6.5	0
+83	-6.5	0
+84	-6.5	0
+85	-6.5	0
+86	-6.5	0
+87	-6.5	0
+88	-6.5	0
+89	-6.5	0
+90	-6.5	0
+91	-6.5	0
+92	-6.5	0
+93	-6.5	0
+94	-6.5	0
+95	-6.5	0
+96	-6.5	0
+97	-6.5	0
+98	-6.5	0
+99	-6.5	0
+100	-6.5	0
+101	-6.5	0
+102	-6.5	0
+103	-6.5	0
+104	-6.5	0
+105	-6.5	-0.031556
+106	-6.5	-0.38403
+107	-6.5	-0.97414
+108	-6.5	-0.62361
+109	-6.5	0
+110	-6.5	-0.016942
+111	-6.5	-0.12128
+112	-6.5	0
+113	-6.5	-0.10361
+114	-6.5	-0.032393
+115	-6.5	0
+116	-6.5	0
+117	-6.5	0
+118	-6.5	0
+119	-6.5	0
+120	-6.5	0
+121	-6.5	0
+122	-6.5	0
+123	-6.5	0
+124	-6.5	0
+125	-6.5	0
+126	-6.5	0.057203
+127	-6.5	0
+128	-6.5	0
+129	-6.5	0
+130	-6.5	0
+131	-6.5	0
+132	-6.5	0
+133	-6.5	0
+134	-6.5	0
+135	-6.5	0
+136	-6.5	0
+137	-6.5	0
+138	-6.5	0
+139	-6.5	0.17792
+140	-6.5	0.094915
+141	-6.5	0.12272
+142	-6.5	0.4898
+143	-6.5	0.77525
+144	-6.5	0.86548
+145	-6.5	1.0958
+146	-6.5	0.93553
+147	-6.5	0.50524
+148	-6.5	0
+149	-6.5	0
+150	-6.5	0.34142
+151	-6.5	0
+152	-6.5	0
+153	-6.5	0
+154	-6.5	0
+155	-6.5	0
+156	-6.5	0
+157	-6.5	0
+158	-6.5	0
+159	-6.5	0
+160	-6.5	0
+161	-6.5	0
+162	-6.5	0
+163	-6.5	0
+164	-6.5	0
+165	-6.5	0
+166	-6.5	0
+167	-6.5	0
+168	-6.5	0
+169	-6.5	0
+170	-6.5	0
+171	-6.5	0
+172	-6.5	0
+173	-6.5	0
+174	-6.5	0
+175	-6.5	0
+176	-6.5	0
+177	-6.5	0
+178	-6.5	0
+179	-6.5	0
+180	-6.5	0
+181	-6.5	0
+182	-6.5	0
+183	-6.5	0
+184	-6.5	0
+185	-6.5	0
+186	-6.5	0
+187	-6.5	0
+188	-6.5	0
+189	-6.5	0
+190	-6.5	0
+191	-6.5	0
+192	-6.5	0
+193	-6.5	0
+194	-6.5	0
+195	-6.5	0
+196	-6.5	0
+197	-6.5	0
+198	-6.5	0
+199	-6.5	0
+200	-6.5	0
+201	-6.5	0
+202	-6.5	0
+203	-6.5	0
+204	-6.5	0
+205	-6.5	0
+206	-6.5	0
+207	-6.5	0
+208	-6.5	0
+209	-6.5	0
+210	-6.5	0
+211	-6.5	0
+212	-6.5	0
+213	-6.5	0
+214	-6.5	0
+215	-6.5	0
+216	-6.5	0
+217	-6.5	0
+218	-6.5	0
+219	-6.5	0
+220	-6.5	0
+221	-6.5	0
+222	-6.5	0
+223	-6.5	0
+224	-6.5	0
+225	-6.5	0
+226	-6.5	0
+227	-6.5	0
+228	-6.5	0
+229	-6.5	0
+230	-6.5	0
+231	-6.5	0
+232	-6.5	0
+233	-6.5	0
+234	-6.5	0
+235	-6.5	0
+236	-6.5	0
+237	-6.5	0
+238	-6.5	0
+239	-6.5	0
+240	-6.5	0
+241	-6.5	0
+242	-6.5	0
+243	-6.5	0
+244	-6.5	0
+245	-6.5	0
+246	-6.5	0
+247	-6.5	0
+248	-6.5	0
+249	-6.5	0
+250	-6.5	0
+251	-6.5	0
+252	-6.5	0
+253	-6.5	0
+254	-6.5	0
+255	-6.5	0
+256	-6.5	0
+257	-6.5	0
+258	-6.5	0
+259	-6.5	0
+260	-6.5	0
+261	-6.5	0
+262	-6.5	0
+263	-6.5	0
+264	-6.5	0
+265	-6.5	0
+266	-6.5	0
+267	-6.5	0
+268	-6.5	0
+269	-6.5	0
+270	-6.5	0
+271	-6.5	0
+272	-6.5	0
+273	-6.5	0
+274	-6.5	0
+275	-6.5	0
+276	-6.5	0
+277	-6.5	0
+278	-6.5	0
+279	-6.5	0
+280	-6.5	-0.0028508
+281	-6.5	-0.025209
+282	-6.5	-0.046759
+283	-6.5	0.058973
+284	-6.5	0.42788
+285	-6.5	1.0311
+286	-6.5	0.84662
+287	-6.5	0.65146
+288	-6.5	0.50764
+289	-6.5	0.43749
+290	-6.5	0.37009
+291	-6.5	0.4279
+292	-6.5	0.70639
+293	-6.5	0.94767
+294	-6.5	1.1889
+295	-6.5	1.274
+296	-6.5	1.2353
+297	-6.5	1.3014
+298	-6.5	1.2056
+299	-6.5	1.1158
+300	-6.5	1.0288
+301	-6.5	1.0452
+302	-6.5	1.0662
+303	-6.5	1.0547
+304	-6.5	1.0141
+305	-6.5	0.9238
+306	-6.5	0.80181
+307	-6.5	0.67982
+308	-6.5	0.99465
+309	-6.5	1.1855
+310	-6.5	1.6068
+311	-6.5	2.028
+312	-6.5	1.6551
+313	-6.5	0.73904
+314	-6.5	0.4335
+315	-6.5	0.20327
+316	-6.5	0.034312
+317	-6.5	-0.12283
+318	-6.5	-0.23003
+319	-6.5	-0.28005
+320	-6.5	-0.43461
+321	-6.5	-0.56658
+322	-6.5	-0.5342
+323	-6.5	-0.33756
+324	-6.5	-0.087391
+325	-6.5	0.074332
+326	-6.5	0
+327	-6.5	0
+328	-6.5	0
+329	-6.5	0
+330	-6.5	0
+331	-6.5	0
+332	-6.5	0
+333	-6.5	0
+334	-6.5	0
+335	-6.5	0
+336	-6.5	0
+337	-6.5	0
+338	-6.5	0
+339	-6.5	0
+340	-6.5	0
+341	-6.5	0
+342	-6.5	0
+343	-6.5	0
+344	-6.5	0
+345	-6.5	0
+346	-6.5	0
+347	-6.5	0
+348	-6.5	0
+349	-6.5	0
+350	-6.5	0
+351	-6.5	0
+352	-6.5	0
+353	-6.5	0
+354	-6.5	0
+355	-6.5	0
+356	-6.5	0
+357	-6.5	0
+358	-6.5	0
+359	-6.5	0
+360	-6.5	0
+0	-6	0
+1	-6	0
+2	-6	0
+3	-6	0
+4	-6	0
+5	-6	0
+6	-6	0
+7	-6	0
+8	-6	0
+9	-6	0
+10	-6	0
+11	-6	0
+12	-6	0
+13	-6	0.29078
+14	-6	0.37263
+15	-6	0.14957
+16	-6	0.13595
+17	-6	0.10113
+18	-6	0.093163
+19	-6	0.070052
+20	-6	-0.0011271
+21	-6	-0.14361
+22	-6	-0.24516
+23	-6	-0.29592
+24	-6	-0.10837
+25	-6	0.13972
+26	-6	0.51889
+27	-6	0.95969
+28	-6	1.1494
+29	-6	0.9909
+30	-6	0.47458
+31	-6	0.59163
+32	-6	0.37561
+33	-6	0.15013
+34	-6	-0.045054
+35	-6	-0.18754
+36	-6	-0.36982
+37	-6	-0.75056
+38	-6	-1.2662
+39	-6	-0.5213
+40	-6	0
+41	-6	0
+42	-6	0
+43	-6	0
+44	-6	0
+45	-6	0
+46	-6	0
+47	-6	0
+48	-6	0
+49	-6	0
+50	-6	0
+51	-6	0
+52	-6	0
+53	-6	0
+54	-6	0
+55	-6	0
+56	-6	0
+57	-6	0
+58	-6	0
+59	-6	0
+60	-6	0
+61	-6	0
+62	-6	0
+63	-6	0
+64	-6	0
+65	-6	0
+66	-6	0
+67	-6	0
+68	-6	0
+69	-6	0
+70	-6	0
+71	-6	0
+72	-6	0
+73	-6	0
+74	-6	0
+75	-6	0
+76	-6	0
+77	-6	0
+78	-6	0
+79	-6	0
+80	-6	0
+81	-6	0
+82	-6	0
+83	-6	0
+84	-6	0
+85	-6	0
+86	-6	0
+87	-6	0
+88	-6	0
+89	-6	0
+90	-6	0
+91	-6	0
+92	-6	0
+93	-6	0
+94	-6	0
+95	-6	0
+96	-6	0
+97	-6	0
+98	-6	0
+99	-6	0
+100	-6	0
+101	-6	0
+102	-6	0
+103	-6	0
+104	-6	-0.012595
+105	-6	-0.2166
+106	-6	-0.60015
+107	-6	-0.59222
+108	-6	0
+109	-6	0
+110	-6	0
+111	-6	0
+112	-6	0
+113	-6	0
+114	-6	0
+115	-6	0
+116	-6	0
+117	-6	0
+118	-6	0
+119	-6	0
+120	-6	0
+121	-6	0
+122	-6	0
+123	-6	0.075173
+124	-6	0
+125	-6	0
+126	-6	0
+127	-6	0
+128	-6	0
+129	-6	0
+130	-6	0
+131	-6	0
+132	-6	0
+133	-6	0
+134	-6	0
+135	-6	0
+136	-6	0
+137	-6	0
+138	-6	0.051469
+139	-6	0.1149
+140	-6	0.041963
+141	-6	0.072707
+142	-6	0.2868
+143	-6	0.54779
+144	-6	0.85603
+145	-6	1.1268
+146	-6	0.79363
+147	-6	0.28194
+148	-6	0
+149	-6	0.14129
+150	-6	0.84463
+151	-6	0.91777
+152	-6	0
+153	-6	0
+154	-6	0
+155	-6	0
+156	-6	0
+157	-6	0
+158	-6	0
+159	-6	0
+160	-6	0
+161	-6	0
+162	-6	0
+163	-6	0
+164	-6	0
+165	-6	0
+166	-6	0
+167	-6	0
+168	-6	0
+169	-6	0
+170	-6	0
+171	-6	0
+172	-6	0
+173	-6	0
+174	-6	0
+175	-6	0
+176	-6	0
+177	-6	0
+178	-6	0
+179	-6	0
+180	-6	0
+181	-6	0
+182	-6	0
+183	-6	0
+184	-6	0
+185	-6	0
+186	-6	0
+187	-6	0
+188	-6	0
+189	-6	0
+190	-6	0
+191	-6	0
+192	-6	0
+193	-6	0
+194	-6	0
+195	-6	0
+196	-6	0
+197	-6	0
+198	-6	0
+199	-6	0
+200	-6	0
+201	-6	0
+202	-6	0
+203	-6	0
+204	-6	0
+205	-6	0
+206	-6	0
+207	-6	0
+208	-6	0
+209	-6	0
+210	-6	0
+211	-6	0
+212	-6	0
+213	-6	0
+214	-6	0
+215	-6	0
+216	-6	0
+217	-6	0
+218	-6	0
+219	-6	0
+220	-6	0
+221	-6	0
+222	-6	0
+223	-6	0
+224	-6	0
+225	-6	0
+226	-6	0
+227	-6	0
+228	-6	0
+229	-6	0
+230	-6	0
+231	-6	0
+232	-6	0
+233	-6	0
+234	-6	0
+235	-6	0
+236	-6	0
+237	-6	0
+238	-6	0
+239	-6	0
+240	-6	0
+241	-6	0
+242	-6	0
+243	-6	0
+244	-6	0
+245	-6	0
+246	-6	0
+247	-6	0
+248	-6	0
+249	-6	0
+250	-6	0
+251	-6	0
+252	-6	0
+253	-6	0
+254	-6	0
+255	-6	0
+256	-6	0
+257	-6	0
+258	-6	0
+259	-6	0
+260	-6	0
+261	-6	0
+262	-6	0
+263	-6	0
+264	-6	0
+265	-6	0
+266	-6	0
+267	-6	0
+268	-6	0
+269	-6	0
+270	-6	0
+271	-6	0
+272	-6	0
+273	-6	0
+274	-6	0
+275	-6	0
+276	-6	0
+277	-6	0
+278	-6	0
+279	-6	0.00038528
+280	-6	-0.0009962
+281	-6	-0.036744
+282	-6	-0.056753
+283	-6	0.033379
+284	-6	0.4506
+285	-6	1.0135
+286	-6	0.90385
+287	-6	0.6864
+288	-6	0.48739
+289	-6	0.38119
+290	-6	0.3138
+291	-6	0.4418
+292	-6	0.68308
+293	-6	0.92435
+294	-6	1.1656
+295	-6	1.2979
+296	-6	1.2592
+297	-6	1.3358
+298	-6	1.2845
+299	-6	1.1873
+300	-6	1.1002
+301	-6	1.0895
+302	-6	1.1019
+303	-6	1.0904
+304	-6	0.99002
+305	-6	0.86803
+306	-6	0.74605
+307	-6	0.78372
+308	-6	1.1154
+309	-6	1.5367
+310	-6	1.7821
+311	-6	2.0505
+312	-6	1.4083
+313	-6	0.68911
+314	-6	0.47149
+315	-6	0.24407
+316	-6	0.080842
+317	-6	-0.093482
+318	-6	-0.1817
+319	-6	-0.2676
+320	-6	-0.38008
+321	-6	-0.49945
+322	-6	-0.44622
+323	-6	-0.30166
+324	-6	-0.054749
+325	-6	0.041396
+326	-6	0
+327	-6	0
+328	-6	0
+329	-6	0
+330	-6	0
+331	-6	0
+332	-6	0
+333	-6	0
+334	-6	0
+335	-6	0
+336	-6	0
+337	-6	0
+338	-6	0
+339	-6	0
+340	-6	0
+341	-6	0
+342	-6	0
+343	-6	0
+344	-6	0
+345	-6	0
+346	-6	0
+347	-6	0
+348	-6	0
+349	-6	0
+350	-6	0
+351	-6	0
+352	-6	0
+353	-6	0
+354	-6	0
+355	-6	0
+356	-6	0
+357	-6	0
+358	-6	0
+359	-6	0
+360	-6	0
+0	-5.5	0
+1	-5.5	0
+2	-5.5	0
+3	-5.5	0
+4	-5.5	0
+5	-5.5	0
+6	-5.5	0
+7	-5.5	0
+8	-5.5	0
+9	-5.5	0
+10	-5.5	0
+11	-5.5	0
+12	-5.5	0.024547
+13	-5.5	0.41017
+14	-5.5	0.52444
+15	-5.5	0.27667
+16	-5.5	0.17397
+17	-5.5	0.14801
+18	-5.5	0.13964
+19	-5.5	0.10502
+20	-5.5	-0.037204
+21	-5.5	-0.17943
+22	-5.5	-0.32079
+23	-5.5	-0.35507
+24	-5.5	-0.14376
+25	-5.5	0.10451
+26	-5.5	0.4991
+27	-5.5	1.0139
+28	-5.5	1.236
+29	-5.5	0.59633
+30	-5.5	0.76284
+31	-5.5	0.63204
+32	-5.5	0.42324
+33	-5.5	0.23303
+34	-5.5	0.057517
+35	-5.5	-0.10609
+36	-5.5	-0.32305
+37	-5.5	-0.63821
+38	-5.5	-0.98599
+39	-5.5	-0.55886
+40	-5.5	-0.013531
+41	-5.5	0
+42	-5.5	0
+43	-5.5	0
+44	-5.5	0
+45	-5.5	0
+46	-5.5	0
+47	-5.5	0
+48	-5.5	0
+49	-5.5	0
+50	-5.5	0
+51	-5.5	0
+52	-5.5	0
+53	-5.5	0
+54	-5.5	0
+55	-5.5	0
+56	-5.5	0
+57	-5.5	0
+58	-5.5	0
+59	-5.5	0
+60	-5.5	0
+61	-5.5	0
+62	-5.5	0
+63	-5.5	0
+64	-5.5	0
+65	-5.5	0
+66	-5.5	0
+67	-5.5	0
+68	-5.5	0
+69	-5.5	0
+70	-5.5	0
+71	-5.5	0
+72	-5.5	0
+73	-5.5	0
+74	-5.5	0
+75	-5.5	0
+76	-5.5	0
+77	-5.5	0
+78	-5.5	0
+79	-5.5	0
+80	-5.5	0
+81	-5.5	0
+82	-5.5	0
+83	-5.5	0
+84	-5.5	0
+85	-5.5	0
+86	-5.5	0
+87	-5.5	0
+88	-5.5	0
+89	-5.5	0
+90	-5.5	0
+91	-5.5	0
+92	-5.5	0
+93	-5.5	0
+94	-5.5	0
+95	-5.5	0
+96	-5.5	0
+97	-5.5	0
+98	-5.5	0
+99	-5.5	0
+100	-5.5	0
+101	-5.5	0
+102	-5.5	0
+103	-5.5	0
+104	-5.5	-0.14989
+105	-5.5	-0.59676
+106	-5.5	-0.057207
+107	-5.5	-0.059304
+108	-5.5	0
+109	-5.5	0
+110	-5.5	0
+111	-5.5	0
+112	-5.5	0
+113	-5.5	0
+114	-5.5	0
+115	-5.5	0
+116	-5.5	0
+117	-5.5	0
+118	-5.5	0
+119	-5.5	0
+120	-5.5	0.016293
+121	-5.5	0
+122	-5.5	0
+123	-5.5	0.18534
+124	-5.5	0
+125	-5.5	0
+126	-5.5	0
+127	-5.5	0
+128	-5.5	0
+129	-5.5	0
+130	-5.5	0
+131	-5.5	0
+132	-5.5	0
+133	-5.5	0
+134	-5.5	0
+135	-5.5	0
+136	-5.5	0
+137	-5.5	0
+138	-5.5	0.042937
+139	-5.5	0.074419
+140	-5.5	-0.01191
+141	-5.5	0.024746
+142	-5.5	0.26607
+143	-5.5	0.50176
+144	-5.5	0.84328
+145	-5.5	1.0627
+146	-5.5	0.40743
+147	-5.5	0
+148	-5.5	0
+149	-5.5	0.39055
+150	-5.5	0.47195
+151	-5.5	0.074404
+152	-5.5	0
+153	-5.5	0
+154	-5.5	0
+155	-5.5	0
+156	-5.5	0
+157	-5.5	0
+158	-5.5	0
+159	-5.5	0
+160	-5.5	0
+161	-5.5	0
+162	-5.5	0
+163	-5.5	0
+164	-5.5	0
+165	-5.5	0
+166	-5.5	0
+167	-5.5	0
+168	-5.5	0
+169	-5.5	0
+170	-5.5	0
+171	-5.5	0
+172	-5.5	0
+173	-5.5	0
+174	-5.5	0
+175	-5.5	0
+176	-5.5	0
+177	-5.5	0
+178	-5.5	0
+179	-5.5	0
+180	-5.5	0
+181	-5.5	0
+182	-5.5	0
+183	-5.5	0
+184	-5.5	0
+185	-5.5	0
+186	-5.5	0
+187	-5.5	0
+188	-5.5	0
+189	-5.5	0
+190	-5.5	0
+191	-5.5	0
+192	-5.5	0
+193	-5.5	0
+194	-5.5	0
+195	-5.5	0
+196	-5.5	0
+197	-5.5	0
+198	-5.5	0
+199	-5.5	0
+200	-5.5	0
+201	-5.5	0
+202	-5.5	0
+203	-5.5	0
+204	-5.5	0
+205	-5.5	0
+206	-5.5	0
+207	-5.5	0
+208	-5.5	0
+209	-5.5	0
+210	-5.5	0
+211	-5.5	0
+212	-5.5	0
+213	-5.5	0
+214	-5.5	0
+215	-5.5	0
+216	-5.5	0
+217	-5.5	0
+218	-5.5	0
+219	-5.5	0
+220	-5.5	0
+221	-5.5	0
+222	-5.5	0
+223	-5.5	0
+224	-5.5	0
+225	-5.5	0
+226	-5.5	0
+227	-5.5	0
+228	-5.5	0
+229	-5.5	0
+230	-5.5	0
+231	-5.5	0
+232	-5.5	0
+233	-5.5	0
+234	-5.5	0
+235	-5.5	0
+236	-5.5	0
+237	-5.5	0
+238	-5.5	0
+239	-5.5	0
+240	-5.5	0
+241	-5.5	0
+242	-5.5	0
+243	-5.5	0
+244	-5.5	0
+245	-5.5	0
+246	-5.5	0
+247	-5.5	0
+248	-5.5	0
+249	-5.5	0
+250	-5.5	0
+251	-5.5	0
+252	-5.5	0
+253	-5.5	0
+254	-5.5	0
+255	-5.5	0
+256	-5.5	0
+257	-5.5	0
+258	-5.5	0
+259	-5.5	0
+260	-5.5	0
+261	-5.5	0
+262	-5.5	0
+263	-5.5	0
+264	-5.5	0
+265	-5.5	0
+266	-5.5	0
+267	-5.5	0
+268	-5.5	0
+269	-5.5	0
+270	-5.5	0
+271	-5.5	0
+272	-5.5	0
+273	-5.5	0
+274	-5.5	0
+275	-5.5	0
+276	-5.5	0
+277	-5.5	0
+278	-5.5	0
+279	-5.5	0.00094324
+280	-5.5	-0.00042888
+281	-5.5	-0.070246
+282	-5.5	-0.099207
+283	-5.5	0.044169
+284	-5.5	0.41568
+285	-5.5	0.99541
+286	-5.5	1.0239
+287	-5.5	0.9237
+288	-5.5	0.64616
+289	-5.5	0.42949
+290	-5.5	0.3225
+291	-5.5	0.41849
+292	-5.5	0.65976
+293	-5.5	0.90104
+294	-5.5	1.1423
+295	-5.5	1.3218
+296	-5.5	1.2832
+297	-5.5	1.3702
+298	-5.5	1.3634
+299	-5.5	1.266
+300	-5.5	1.1717
+301	-5.5	1.1337
+302	-5.5	1.1376
+303	-5.5	1.2393
+304	-5.5	1.2014
+305	-5.5	0.81227
+306	-5.5	0.69028
+307	-5.5	0.92118
+308	-5.5	1.1239
+309	-5.5	1.3252
+310	-5.5	1.5562
+311	-5.5	1.9963
+312	-5.5	1.1733
+313	-5.5	0.69395
+314	-5.5	0.50948
+315	-5.5	0.292
+316	-5.5	0.10328
+317	-5.5	-0.067494
+318	-5.5	-0.15461
+319	-5.5	-0.22832
+320	-5.5	-0.34849
+321	-5.5	-0.45373
+322	-5.5	-0.37363
+323	-5.5	-0.25178
+324	-5.5	-0.024176
+325	-5.5	0.011136
+326	-5.5	0
+327	-5.5	0
+328	-5.5	0
+329	-5.5	0
+330	-5.5	0
+331	-5.5	0
+332	-5.5	0
+333	-5.5	0
+334	-5.5	0
+335	-5.5	0
+336	-5.5	0
+337	-5.5	0
+338	-5.5	0
+339	-5.5	0
+340	-5.5	0
+341	-5.5	0
+342	-5.5	0
+343	-5.5	0
+344	-5.5	0
+345	-5.5	0
+346	-5.5	0
+347	-5.5	0
+348	-5.5	0
+349	-5.5	0
+350	-5.5	0
+351	-5.5	0
+352	-5.5	0
+353	-5.5	0
+354	-5.5	0
+355	-5.5	0
+356	-5.5	0
+357	-5.5	0
+358	-5.5	0
+359	-5.5	0
+360	-5.5	0
+0	-5	0
+1	-5	0
+2	-5	0
+3	-5	0
+4	-5	0
+5	-5	0
+6	-5	0
+7	-5	0
+8	-5	0
+9	-5	0
+10	-5	0
+11	-5	0
+12	-5	0.074602
+13	-5	0.34131
+14	-5	0.56153
+15	-5	0.3881
+16	-5	0.24206
+17	-5	0.17355
+18	-5	0.16411
+19	-5	0.053912
+20	-5	-0.068578
+21	-5	-0.2108
+22	-5	-0.35289
+23	-5	-0.41422
+24	-5	-0.18176
+25	-5	0.0693
+26	-5	0.52056
+27	-5	1.0637
+28	-5	1.2431
+29	-5	0.97517
+30	-5	0.82015
+31	-5	0.6885
+32	-5	0.44913
+33	-5	0.25966
+34	-5	0.13447
+35	-5	-0.065084
+36	-5	-0.23428
+37	-5	-0.52506
+38	-5	-0.85745
+39	-5	-0.53511
+40	-5	-0.064424
+41	-5	0
+42	-5	0
+43	-5	0
+44	-5	0
+45	-5	0
+46	-5	0
+47	-5	0
+48	-5	0
+49	-5	0
+50	-5	0
+51	-5	0
+52	-5	0
+53	-5	0
+54	-5	0
+55	-5	0
+56	-5	0
+57	-5	0
+58	-5	0
+59	-5	0
+60	-5	0
+61	-5	0
+62	-5	0
+63	-5	0
+64	-5	0
+65	-5	0
+66	-5	0
+67	-5	0
+68	-5	0
+69	-5	0
+70	-5	0
+71	-5	0
+72	-5	0
+73	-5	0
+74	-5	0
+75	-5	0
+76	-5	0
+77	-5	0
+78	-5	0
+79	-5	0
+80	-5	0
+81	-5	0
+82	-5	0
+83	-5	0
+84	-5	0
+85	-5	0
+86	-5	0
+87	-5	0
+88	-5	0
+89	-5	0
+90	-5	0
+91	-5	0
+92	-5	0
+93	-5	0
+94	-5	0
+95	-5	0
+96	-5	0
+97	-5	0
+98	-5	0
+99	-5	0
+100	-5	0
+101	-5	0
+102	-5	0
+103	-5	-0.052807
+104	-5	-0.65595
+105	-5	-1.1655
+106	-5	0
+107	-5	0
+108	-5	0
+109	-5	0
+110	-5	0
+111	-5	0
+112	-5	0
+113	-5	0
+114	-5	0
+115	-5	0
+116	-5	0
+117	-5	0
+118	-5	0
+119	-5	0.012835
+120	-5	0.10945
+121	-5	0
+122	-5	0.40787
+123	-5	0.15825
+124	-5	0
+125	-5	0
+126	-5	0
+127	-5	0
+128	-5	0
+129	-5	0
+130	-5	0
+131	-5	0
+132	-5	0
+133	-5	0
+134	-5	0
+135	-5	0
+136	-5	0
+137	-5	0.011487
+138	-5	0.1101
+139	-5	0.029538
+140	-5	-0.055516
+141	-5	-0.024694
+142	-5	0.28226
+143	-5	0.59051
+144	-5	0.77441
+145	-5	0.94901
+146	-5	0.036385
+147	-5	0
+148	-5	0
+149	-5	0
+150	-5	0.175
+151	-5	0
+152	-5	0
+153	-5	0
+154	-5	0
+155	-5	0
+156	-5	0
+157	-5	0
+158	-5	0
+159	-5	0
+160	-5	0
+161	-5	0
+162	-5	0
+163	-5	0
+164	-5	0
+165	-5	0
+166	-5	0
+167	-5	0
+168	-5	0
+169	-5	0
+170	-5	0
+171	-5	0
+172	-5	0
+173	-5	0
+174	-5	0
+175	-5	0
+176	-5	0
+177	-5	0
+178	-5	0
+179	-5	0
+180	-5	0
+181	-5	0
+182	-5	0
+183	-5	0
+184	-5	0
+185	-5	0
+186	-5	0
+187	-5	0
+188	-5	0
+189	-5	0
+190	-5	0
+191	-5	0
+192	-5	0
+193	-5	0
+194	-5	0
+195	-5	0
+196	-5	0
+197	-5	0
+198	-5	0
+199	-5	0
+200	-5	0
+201	-5	0
+202	-5	0
+203	-5	0
+204	-5	0
+205	-5	0
+206	-5	0
+207	-5	0
+208	-5	0
+209	-5	0
+210	-5	0
+211	-5	0
+212	-5	0
+213	-5	0
+214	-5	0
+215	-5	0
+216	-5	0
+217	-5	0
+218	-5	0
+219	-5	0
+220	-5	0
+221	-5	0
+222	-5	0
+223	-5	0
+224	-5	0
+225	-5	0
+226	-5	0
+227	-5	0
+228	-5	0
+229	-5	0
+230	-5	0
+231	-5	0
+232	-5	0
+233	-5	0
+234	-5	0
+235	-5	0
+236	-5	0
+237	-5	0
+238	-5	0
+239	-5	0
+240	-5	0
+241	-5	0
+242	-5	0
+243	-5	0
+244	-5	0
+245	-5	0
+246	-5	0
+247	-5	0
+248	-5	0
+249	-5	0
+250	-5	0
+251	-5	0
+252	-5	0
+253	-5	0
+254	-5	0
+255	-5	0
+256	-5	0
+257	-5	0
+258	-5	0
+259	-5	0
+260	-5	0
+261	-5	0
+262	-5	0
+263	-5	0
+264	-5	0
+265	-5	0
+266	-5	0
+267	-5	0
+268	-5	0
+269	-5	0
+270	-5	0
+271	-5	0
+272	-5	0
+273	-5	0
+274	-5	0
+275	-5	0
+276	-5	0
+277	-5	0
+278	-5	0
+279	-5	-0.00025584
+280	-5	-0.0001516
+281	-5	-0.082668
+282	-5	-0.13749
+283	-5	0.11
+284	-5	0.39489
+285	-5	0.96672
+286	-5	1.2687
+287	-5	1.1547
+288	-5	0.80494
+289	-5	0.48452
+290	-5	0.37753
+291	-5	0.44784
+292	-5	0.63645
+293	-5	0.87773
+294	-5	1.119
+295	-5	1.3458
+296	-5	1.3071
+297	-5	1.4046
+298	-5	1.3885
+299	-5	1.3449
+300	-5	1.2475
+301	-5	1.1779
+302	-5	1.2452
+303	-5	1.4692
+304	-5	1.7425
+305	-5	1.0318
+306	-5	0.63452
+307	-5	0.99491
+308	-5	1.1465
+309	-5	1.0993
+310	-5	1.4078
+311	-5	1.6924
+312	-5	1.1865
+313	-5	0.70709
+314	-5	0.54599
+315	-5	0.33195
+316	-5	0.12915
+317	-5	-0.034078
+318	-5	-0.13219
+319	-5	-0.21644
+320	-5	-0.34319
+321	-5	-0.44456
+322	-5	-0.32733
+323	-5	-0.061711
+324	-5	0.0051309
+325	-5	0
+326	-5	0
+327	-5	0
+328	-5	0
+329	-5	0
+330	-5	0
+331	-5	0
+332	-5	0
+333	-5	0
+334	-5	0
+335	-5	0
+336	-5	0
+337	-5	0
+338	-5	0
+339	-5	0
+340	-5	0
+341	-5	0
+342	-5	0
+343	-5	0
+344	-5	0
+345	-5	0
+346	-5	0
+347	-5	0
+348	-5	0
+349	-5	0
+350	-5	0
+351	-5	0
+352	-5	0
+353	-5	0
+354	-5	0
+355	-5	0
+356	-5	0
+357	-5	0
+358	-5	0
+359	-5	0
+360	-5	0
+0	-4.5	0
+1	-4.5	0
+2	-4.5	0
+3	-4.5	0
+4	-4.5	0
+5	-4.5	0
+6	-4.5	0
+7	-4.5	0
+8	-4.5	0
+9	-4.5	0
+10	-4.5	0
+11	-4.5	0.0026455
+12	-4.5	0.083453
+13	-4.5	0.24233
+14	-4.5	0.39963
+15	-4.5	0.44476
+16	-4.5	0.33067
+17	-4.5	0.22508
+18	-4.5	0.18857
+19	-4.5	0.013333
+20	-4.5	-0.099952
+21	-4.5	-0.24217
+22	-4.5	-0.3844
+23	-4.5	-0.45394
+24	-4.5	-0.21977
+25	-4.5	0.066701
+26	-4.5	0.54203
+27	-4.5	1.2264
+28	-4.5	1.2991
+29	-4.5	0.8402
+30	-4.5	0.85776
+31	-4.5	0.7423
+32	-4.5	0.48143
+33	-4.5	0.28788
+34	-4.5	0.19499
+35	-4.5	-0.0015859
+36	-4.5	-0.17534
+37	-4.5	-0.4139
+38	-4.5	-0.74939
+39	-4.5	-0.39471
+40	-4.5	-0.12136
+41	-4.5	0
+42	-4.5	0
+43	-4.5	0
+44	-4.5	0
+45	-4.5	0
+46	-4.5	0
+47	-4.5	0
+48	-4.5	0
+49	-4.5	0
+50	-4.5	0
+51	-4.5	0
+52	-4.5	0
+53	-4.5	0
+54	-4.5	0
+55	-4.5	0
+56	-4.5	0
+57	-4.5	0
+58	-4.5	0
+59	-4.5	0
+60	-4.5	0
+61	-4.5	0
+62	-4.5	0
+63	-4.5	0
+64	-4.5	0
+65	-4.5	0
+66	-4.5	0
+67	-4.5	0
+68	-4.5	0
+69	-4.5	0
+70	-4.5	0
+71	-4.5	0
+72	-4.5	0
+73	-4.5	0
+74	-4.5	0
+75	-4.5	0
+76	-4.5	0
+77	-4.5	0
+78	-4.5	0
+79	-4.5	0
+80	-4.5	0
+81	-4.5	0
+82	-4.5	0
+83	-4.5	0
+84	-4.5	0
+85	-4.5	0
+86	-4.5	0
+87	-4.5	0
+88	-4.5	0
+89	-4.5	0
+90	-4.5	0
+91	-4.5	0
+92	-4.5	0
+93	-4.5	0
+94	-4.5	0
+95	-4.5	0
+96	-4.5	0
+97	-4.5	0
+98	-4.5	0
+99	-4.5	0
+100	-4.5	0
+101	-4.5	0
+102	-4.5	0
+103	-4.5	-0.25696
+104	-4.5	-1.2017
+105	-4.5	-1.7079
+106	-4.5	-0.21263
+107	-4.5	0
+108	-4.5	0
+109	-4.5	0
+110	-4.5	0
+111	-4.5	0
+112	-4.5	0
+113	-4.5	0
+114	-4.5	0
+115	-4.5	0
+116	-4.5	0
+117	-4.5	0
+118	-4.5	0
+119	-4.5	0
+120	-4.5	0.2126
+121	-4.5	0
+122	-4.5	0.60539
+123	-4.5	0.036972
+124	-4.5	0
+125	-4.5	0
+126	-4.5	0
+127	-4.5	0
+128	-4.5	0
+129	-4.5	0
+130	-4.5	0
+131	-4.5	0
+132	-4.5	0
+133	-4.5	0
+134	-4.5	0.036478
+135	-4.5	0
+136	-4.5	0.14924
+137	-4.5	0.16336
+138	-4.5	0.11248
+139	-4.5	0.0081423
+140	-4.5	-0.10025
+141	-4.5	-0.07031
+142	-4.5	0.29354
+143	-4.5	0.7703
+144	-4.5	0.86919
+145	-4.5	0.86046
+146	-4.5	0
+147	-4.5	0
+148	-4.5	0
+149	-4.5	0
+150	-4.5	0
+151	-4.5	0
+152	-4.5	0
+153	-4.5	0
+154	-4.5	0
+155	-4.5	0
+156	-4.5	0
+157	-4.5	0
+158	-4.5	0
+159	-4.5	0
+160	-4.5	0
+161	-4.5	0
+162	-4.5	0
+163	-4.5	0
+164	-4.5	0
+165	-4.5	0
+166	-4.5	0
+167	-4.5	0
+168	-4.5	0
+169	-4.5	0
+170	-4.5	0
+171	-4.5	0
+172	-4.5	0
+173	-4.5	0
+174	-4.5	0
+175	-4.5	0
+176	-4.5	0
+177	-4.5	0
+178	-4.5	0
+179	-4.5	0
+180	-4.5	0
+181	-4.5	0
+182	-4.5	0
+183	-4.5	0
+184	-4.5	0
+185	-4.5	0
+186	-4.5	0
+187	-4.5	0
+188	-4.5	0
+189	-4.5	0
+190	-4.5	0
+191	-4.5	0
+192	-4.5	0
+193	-4.5	0
+194	-4.5	0
+195	-4.5	0
+196	-4.5	0
+197	-4.5	0
+198	-4.5	0
+199	-4.5	0
+200	-4.5	0
+201	-4.5	0
+202	-4.5	0
+203	-4.5	0
+204	-4.5	0
+205	-4.5	0
+206	-4.5	0
+207	-4.5	0
+208	-4.5	0
+209	-4.5	0
+210	-4.5	0
+211	-4.5	0
+212	-4.5	0
+213	-4.5	0
+214	-4.5	0
+215	-4.5	0
+216	-4.5	0
+217	-4.5	0
+218	-4.5	0
+219	-4.5	0
+220	-4.5	0
+221	-4.5	0
+222	-4.5	0
+223	-4.5	0
+224	-4.5	0
+225	-4.5	0
+226	-4.5	0
+227	-4.5	0
+228	-4.5	0
+229	-4.5	0
+230	-4.5	0
+231	-4.5	0
+232	-4.5	0
+233	-4.5	0
+234	-4.5	0
+235	-4.5	0
+236	-4.5	0
+237	-4.5	0
+238	-4.5	0
+239	-4.5	0
+240	-4.5	0
+241	-4.5	0
+242	-4.5	0
+243	-4.5	0
+244	-4.5	0
+245	-4.5	0
+246	-4.5	0
+247	-4.5	0
+248	-4.5	0
+249	-4.5	0
+250	-4.5	0
+251	-4.5	0
+252	-4.5	0
+253	-4.5	0
+254	-4.5	0
+255	-4.5	0
+256	-4.5	0
+257	-4.5	0
+258	-4.5	0
+259	-4.5	0
+260	-4.5	0
+261	-4.5	0
+262	-4.5	0
+263	-4.5	0
+264	-4.5	0
+265	-4.5	0
+266	-4.5	0
+267	-4.5	0
+268	-4.5	0
+269	-4.5	0
+270	-4.5	0
+271	-4.5	0
+272	-4.5	0
+273	-4.5	0
+274	-4.5	0
+275	-4.5	0
+276	-4.5	0
+277	-4.5	0
+278	-4.5	0
+279	-4.5	0.0014202
+280	-4.5	-0.012103
+281	-4.5	-0.085122
+282	-4.5	-0.10276
+283	-4.5	0.077656
+284	-4.5	0.43342
+285	-4.5	0.89565
+286	-4.5	1.1801
+287	-4.5	1.2817
+288	-4.5	0.96371
+289	-4.5	0.61397
+290	-4.5	0.43256
+291	-4.5	0.49898
+292	-4.5	0.65541
+293	-4.5	0.85441
+294	-4.5	1.0957
+295	-4.5	1.337
+296	-4.5	1.3311
+297	-4.5	1.439
+298	-4.5	1.3011
+299	-4.5	1.266
+300	-4.5	1.2309
+301	-4.5	1.2262
+302	-4.5	1.4329
+303	-4.5	1.7288
+304	-4.5	2.2747
+305	-4.5	1.573
+306	-4.5	0.70869
+307	-4.5	1.0514
+308	-4.5	1.169
+309	-4.5	0.97444
+310	-4.5	1.3156
+311	-4.5	1.5738
+312	-4.5	1.1996
+313	-4.5	0.72022
+314	-4.5	0.56645
+315	-4.5	0.33895
+316	-4.5	0.14447
+317	-4.5	-0.0073292
+318	-4.5	-0.099096
+319	-4.5	-0.17578
+320	-4.5	-0.30926
+321	-4.5	-0.43188
+322	-4.5	-0.26755
+323	-4.5	0
+324	-4.5	0
+325	-4.5	0
+326	-4.5	0
+327	-4.5	0
+328	-4.5	0
+329	-4.5	0
+330	-4.5	0
+331	-4.5	0
+332	-4.5	0
+333	-4.5	0
+334	-4.5	0
+335	-4.5	0
+336	-4.5	0
+337	-4.5	0
+338	-4.5	0
+339	-4.5	0
+340	-4.5	0
+341	-4.5	0
+342	-4.5	0
+343	-4.5	0
+344	-4.5	0
+345	-4.5	0
+346	-4.5	0
+347	-4.5	0
+348	-4.5	0
+349	-4.5	0
+350	-4.5	0
+351	-4.5	0
+352	-4.5	0
+353	-4.5	0
+354	-4.5	0
+355	-4.5	0
+356	-4.5	0
+357	-4.5	0
+358	-4.5	0
+359	-4.5	0
+360	-4.5	0
+0	-4	0
+1	-4	0
+2	-4	0
+3	-4	0
+4	-4	0
+5	-4	0
+6	-4	0
+7	-4	0
+8	-4	0
+9	-4	0
+10	-4	0
+11	-4	-0.00089842
+12	-4	0.025391
+13	-4	0.13286
+14	-4	0.23709
+15	-4	0.34612
+16	-4	0.3328
+17	-4	0.25695
+18	-4	0.19455
+19	-4	-0.027246
+20	-4	-0.15297
+21	-4	-0.27355
+22	-4	-0.41577
+23	-4	-0.4927
+24	-4	-0.2603
+25	-4	0.061325
+26	-4	0.61143
+27	-4	1.2013
+28	-4	1.2815
+29	-4	0.98191
+30	-4	0.78388
+31	-4	0.76422
+32	-4	0.59962
+33	-4	0.34823
+34	-4	0.25644
+35	-4	0.056584
+36	-4	-0.093332
+37	-4	-0.24946
+38	-4	-0.47667
+39	-4	-0.41666
+40	-4	-0.081512
+41	-4	0
+42	-4	0
+43	-4	0
+44	-4	0
+45	-4	0
+46	-4	0
+47	-4	0
+48	-4	0
+49	-4	0
+50	-4	0
+51	-4	0
+52	-4	0
+53	-4	0
+54	-4	0
+55	-4	0
+56	-4	0
+57	-4	0
+58	-4	0
+59	-4	0
+60	-4	0
+61	-4	0
+62	-4	0
+63	-4	0
+64	-4	0
+65	-4	0
+66	-4	0
+67	-4	0
+68	-4	0
+69	-4	0
+70	-4	0
+71	-4	0
+72	-4	0
+73	-4	0
+74	-4	0
+75	-4	0
+76	-4	0
+77	-4	0
+78	-4	0
+79	-4	0
+80	-4	0
+81	-4	0
+82	-4	0
+83	-4	0
+84	-4	0
+85	-4	0
+86	-4	0
+87	-4	0
+88	-4	0
+89	-4	0
+90	-4	0
+91	-4	0
+92	-4	0
+93	-4	0
+94	-4	0
+95	-4	0
+96	-4	0
+97	-4	0
+98	-4	0
+99	-4	0
+100	-4	0.01094
+101	-4	0
+102	-4	-0.071829
+103	-4	-0.51837
+104	-4	-1.7037
+105	-4	-2.0855
+106	-4	-0.73026
+107	-4	0
+108	-4	0
+109	-4	0
+110	-4	0
+111	-4	0
+112	-4	-0.017418
+113	-4	0
+114	-4	0
+115	-4	-0.1821
+116	-4	0
+117	-4	0
+118	-4	0
+119	-4	0
+120	-4	0.4283
+121	-4	0
+122	-4	0.38313
+123	-4	0
+124	-4	0
+125	-4	0
+126	-4	0
+127	-4	0
+128	-4	-0.016633
+129	-4	0
+130	-4	0
+131	-4	0
+132	-4	0
+133	-4	0.049987
+134	-4	0.16638
+135	-4	0.15977
+136	-4	0.21889
+137	-4	0.17487
+138	-4	0.095416
+139	-4	-0.01752
+140	-4	-0.18556
+141	-4	-0.12443
+142	-4	0.25702
+143	-4	0.68274
+144	-4	0.56041
+145	-4	0.43266
+146	-4	0
+147	-4	0
+148	-4	0
+149	-4	0
+150	-4	0
+151	-4	0
+152	-4	0
+153	-4	0
+154	-4	0
+155	-4	0
+156	-4	0
+157	-4	0
+158	-4	0
+159	-4	0
+160	-4	0
+161	-4	0
+162	-4	0
+163	-4	0
+164	-4	0
+165	-4	0
+166	-4	0
+167	-4	0
+168	-4	0
+169	-4	0
+170	-4	0
+171	-4	0
+172	-4	0
+173	-4	0
+174	-4	0
+175	-4	0
+176	-4	0
+177	-4	0
+178	-4	0
+179	-4	0
+180	-4	0
+181	-4	0
+182	-4	0
+183	-4	0
+184	-4	0
+185	-4	0
+186	-4	0
+187	-4	0
+188	-4	0
+189	-4	0
+190	-4	0
+191	-4	0
+192	-4	0
+193	-4	0
+194	-4	0
+195	-4	0
+196	-4	0
+197	-4	0
+198	-4	0
+199	-4	0
+200	-4	0
+201	-4	0
+202	-4	0
+203	-4	0
+204	-4	0
+205	-4	0
+206	-4	0
+207	-4	0
+208	-4	0
+209	-4	0
+210	-4	0
+211	-4	0
+212	-4	0
+213	-4	0
+214	-4	0
+215	-4	0
+216	-4	0
+217	-4	0
+218	-4	0
+219	-4	0
+220	-4	0
+221	-4	0
+222	-4	0
+223	-4	0
+224	-4	0
+225	-4	0
+226	-4	0
+227	-4	0
+228	-4	0
+229	-4	0
+230	-4	0
+231	-4	0
+232	-4	0
+233	-4	0
+234	-4	0
+235	-4	0
+236	-4	0
+237	-4	0
+238	-4	0
+239	-4	0
+240	-4	0
+241	-4	0
+242	-4	0
+243	-4	0
+244	-4	0
+245	-4	0
+246	-4	0
+247	-4	0
+248	-4	0
+249	-4	0
+250	-4	0
+251	-4	0
+252	-4	0
+253	-4	0
+254	-4	0
+255	-4	0
+256	-4	0
+257	-4	0
+258	-4	0
+259	-4	0
+260	-4	0
+261	-4	0
+262	-4	0
+263	-4	0
+264	-4	0
+265	-4	0
+266	-4	0
+267	-4	0
+268	-4	0
+269	-4	0
+270	-4	0
+271	-4	0
+272	-4	0
+273	-4	0
+274	-4	0
+275	-4	0
+276	-4	0
+277	-4	0
+278	-4	0
+279	-4	0.0011533
+280	-4	-0.031756
+281	-4	-0.077575
+282	-4	-0.093978
+283	-4	0.12926
+284	-4	0.41463
+285	-4	0.80703
+286	-4	1.022
+287	-4	1.0631
+288	-4	1.0332
+289	-4	0.77275
+290	-4	0.48759
+291	-4	0.54009
+292	-4	0.7084
+293	-4	0.86299
+294	-4	1.0724
+295	-4	1.3137
+296	-4	1.3649
+297	-4	1.395
+298	-4	1.2474
+299	-4	1.1786
+300	-4	1.1435
+301	-4	1.2866
+302	-4	1.6206
+303	-4	1.9883
+304	-4	2.5343
+305	-4	2.1141
+306	-4	0.76516
+307	-4	1.0733
+308	-4	1.1915
+309	-4	0.98135
+310	-4	1.0357
+311	-4	1.3367
+312	-4	1.066
+313	-4	0.70354
+314	-4	0.55137
+315	-4	0.35268
+316	-4	0.11823
+317	-4	0.021149
+318	-4	-0.052723
+319	-4	-0.10969
+320	-4	-0.27289
+321	-4	-0.33526
+322	-4	-0.0017526
+323	-4	0
+324	-4	0
+325	-4	0
+326	-4	0
+327	-4	0
+328	-4	0
+329	-4	0
+330	-4	0
+331	-4	0
+332	-4	0
+333	-4	0
+334	-4	0
+335	-4	0
+336	-4	0
+337	-4	0
+338	-4	0
+339	-4	0
+340	-4	0
+341	-4	0
+342	-4	0
+343	-4	0
+344	-4	0
+345	-4	0
+346	-4	0
+347	-4	0
+348	-4	0
+349	-4	0
+350	-4	0
+351	-4	0
+352	-4	0
+353	-4	0
+354	-4	0
+355	-4	0
+356	-4	0
+357	-4	0
+358	-4	0
+359	-4	0
+360	-4	0
+0	-3.5	0
+1	-3.5	0
+2	-3.5	0
+3	-3.5	0
+4	-3.5	0
+5	-3.5	0
+6	-3.5	0
+7	-3.5	0
+8	-3.5	0
+9	-3.5	0
+10	-3.5	0
+11	-3.5	-0.037444
+12	-3.5	-0.038598
+13	-3.5	0.025585
+14	-3.5	0.13275
+15	-3.5	0.26168
+16	-3.5	0.27309
+17	-3.5	0.17571
+18	-3.5	0.12661
+19	-3.5	-0.067826
+20	-3.5	-0.20715
+21	-3.5	-0.30492
+22	-3.5	-0.44715
+23	-3.5	-0.52038
+24	-3.5	-0.30406
+25	-3.5	0.04544
+26	-3.5	0.5921
+27	-3.5	1.0387
+28	-3.5	1.1504
+29	-3.5	0.95253
+30	-3.5	0.97119
+31	-3.5	0.82408
+32	-3.5	0.66061
+33	-3.5	0.45266
+34	-3.5	0.31691
+35	-3.5	0.13024
+36	-3.5	-0.042547
+37	-3.5	-0.20687
+38	-3.5	-0.33664
+39	-3.5	-0.42321
+40	-3.5	-0.11107
+41	-3.5	0
+42	-3.5	0
+43	-3.5	0
+44	-3.5	0
+45	-3.5	0
+46	-3.5	0
+47	-3.5	0
+48	-3.5	0
+49	-3.5	0
+50	-3.5	0
+51	-3.5	0
+52	-3.5	0
+53	-3.5	0
+54	-3.5	0
+55	-3.5	0
+56	-3.5	0
+57	-3.5	0
+58	-3.5	0
+59	-3.5	0
+60	-3.5	0
+61	-3.5	0
+62	-3.5	0
+63	-3.5	0
+64	-3.5	0
+65	-3.5	0
+66	-3.5	0
+67	-3.5	0
+68	-3.5	0
+69	-3.5	0
+70	-3.5	0
+71	-3.5	0
+72	-3.5	0
+73	-3.5	0
+74	-3.5	0
+75	-3.5	0
+76	-3.5	0
+77	-3.5	0
+78	-3.5	0
+79	-3.5	0
+80	-3.5	0
+81	-3.5	0
+82	-3.5	0
+83	-3.5	0
+84	-3.5	0
+85	-3.5	0
+86	-3.5	0
+87	-3.5	0
+88	-3.5	0
+89	-3.5	0
+90	-3.5	0
+91	-3.5	0
+92	-3.5	0
+93	-3.5	0
+94	-3.5	0
+95	-3.5	0
+96	-3.5	0
+97	-3.5	0
+98	-3.5	0
+99	-3.5	0
+100	-3.5	0.042236
+101	-3.5	0
+102	-3.5	-0.14186
+103	-3.5	-1.0718
+104	-3.5	-2.2832
+105	-3.5	-2.3934
+106	-3.5	-1.2816
+107	-3.5	0
+108	-3.5	0
+109	-3.5	0
+110	-3.5	0
+111	-3.5	0
+112	-3.5	-0.20605
+113	-3.5	0
+114	-3.5	-0.33667
+115	-3.5	-0.60517
+116	-3.5	-0.33351
+117	-3.5	0
+118	-3.5	0
+119	-3.5	0.097549
+120	-3.5	0.24798
+121	-3.5	0.54618
+122	-3.5	0.51654
+123	-3.5	0
+124	-3.5	0
+125	-3.5	0
+126	-3.5	0
+127	-3.5	0.089489
+128	-3.5	-0.02984
+129	-3.5	0
+130	-3.5	0
+131	-3.5	0
+132	-3.5	0
+133	-3.5	0.11875
+134	-3.5	0.25292
+135	-3.5	0.27796
+136	-3.5	0.35798
+137	-3.5	0.30305
+138	-3.5	0.10228
+139	-3.5	-0.041831
+140	-3.5	-0.22299
+141	-3.5	-0.15893
+142	-3.5	0.27105
+143	-3.5	0.30634
+144	-3.5	0
+145	-3.5	0
+146	-3.5	0
+147	-3.5	0
+148	-3.5	0
+149	-3.5	0
+150	-3.5	0
+151	-3.5	0
+152	-3.5	0
+153	-3.5	0
+154	-3.5	0
+155	-3.5	0
+156	-3.5	0
+157	-3.5	0
+158	-3.5	0
+159	-3.5	0
+160	-3.5	0
+161	-3.5	0
+162	-3.5	0
+163	-3.5	0
+164	-3.5	0
+165	-3.5	0
+166	-3.5	0
+167	-3.5	0
+168	-3.5	0
+169	-3.5	0
+170	-3.5	0
+171	-3.5	0
+172	-3.5	0
+173	-3.5	0
+174	-3.5	0
+175	-3.5	0
+176	-3.5	0
+177	-3.5	0
+178	-3.5	0
+179	-3.5	0
+180	-3.5	0
+181	-3.5	0
+182	-3.5	0
+183	-3.5	0
+184	-3.5	0
+185	-3.5	0
+186	-3.5	0
+187	-3.5	0
+188	-3.5	0
+189	-3.5	0
+190	-3.5	0
+191	-3.5	0
+192	-3.5	0
+193	-3.5	0
+194	-3.5	0
+195	-3.5	0
+196	-3.5	0
+197	-3.5	0
+198	-3.5	0
+199	-3.5	0
+200	-3.5	0
+201	-3.5	0
+202	-3.5	0
+203	-3.5	0
+204	-3.5	0
+205	-3.5	0
+206	-3.5	0
+207	-3.5	0
+208	-3.5	0
+209	-3.5	0
+210	-3.5	0
+211	-3.5	0
+212	-3.5	0
+213	-3.5	0
+214	-3.5	0
+215	-3.5	0
+216	-3.5	0
+217	-3.5	0
+218	-3.5	0
+219	-3.5	0
+220	-3.5	0
+221	-3.5	0
+222	-3.5	0
+223	-3.5	0
+224	-3.5	0
+225	-3.5	0
+226	-3.5	0
+227	-3.5	0
+228	-3.5	0
+229	-3.5	0
+230	-3.5	0
+231	-3.5	0
+232	-3.5	0
+233	-3.5	0
+234	-3.5	0
+235	-3.5	0
+236	-3.5	0
+237	-3.5	0
+238	-3.5	0
+239	-3.5	0
+240	-3.5	0
+241	-3.5	0
+242	-3.5	0
+243	-3.5	0
+244	-3.5	0
+245	-3.5	0
+246	-3.5	0
+247	-3.5	0
+248	-3.5	0
+249	-3.5	0
+250	-3.5	0
+251	-3.5	0
+252	-3.5	0
+253	-3.5	0
+254	-3.5	0
+255	-3.5	0
+256	-3.5	0
+257	-3.5	0
+258	-3.5	0
+259	-3.5	0
+260	-3.5	0
+261	-3.5	0
+262	-3.5	0
+263	-3.5	0
+264	-3.5	0
+265	-3.5	0
+266	-3.5	0
+267	-3.5	0
+268	-3.5	0
+269	-3.5	0
+270	-3.5	0
+271	-3.5	0
+272	-3.5	0
+273	-3.5	0
+274	-3.5	0
+275	-3.5	0
+276	-3.5	0
+277	-3.5	0
+278	-3.5	0
+279	-3.5	0
+280	-3.5	-0.026538
+281	-3.5	-0.12525
+282	-3.5	-0.15784
+283	-3.5	0.14179
+284	-3.5	0.39583
+285	-3.5	0.71217
+286	-3.5	0.80477
+287	-3.5	0.84457
+288	-3.5	0.81466
+289	-3.5	0.78476
+290	-3.5	0.58178
+291	-3.5	0.5812
+292	-3.5	0.76139
+293	-3.5	0.91598
+294	-3.5	1.0706
+295	-3.5	1.2903
+296	-3.5	1.3993
+297	-3.5	1.3437
+298	-3.5	1.1961
+299	-3.5	1.0912
+300	-3.5	1.0561
+301	-3.5	1.3471
+302	-3.5	1.8083
+303	-3.5	2.2479
+304	-3.5	2.7938
+305	-3.5	2.6553
+306	-3.5	1.0612
+307	-3.5	1.0952
+308	-3.5	1.2141
+309	-3.5	0.95994
+310	-3.5	0.92206
+311	-3.5	1.2232
+312	-3.5	0.73672
+313	-3.5	0.66652
+314	-3.5	0.52495
+315	-3.5	0.33623
+316	-3.5	0.14381
+317	-3.5	0.01966
+318	-3.5	0.01021
+319	-3.5	-0.048151
+320	-3.5	-0.19964
+321	-3.5	-0.22476
+322	-3.5	0
+323	-3.5	0
+324	-3.5	0
+325	-3.5	0
+326	-3.5	0
+327	-3.5	0
+328	-3.5	0
+329	-3.5	0
+330	-3.5	0
+331	-3.5	0
+332	-3.5	0
+333	-3.5	0
+334	-3.5	0
+335	-3.5	0
+336	-3.5	0
+337	-3.5	0
+338	-3.5	0
+339	-3.5	0
+340	-3.5	0
+341	-3.5	0
+342	-3.5	0
+343	-3.5	0
+344	-3.5	0
+345	-3.5	0
+346	-3.5	0
+347	-3.5	0
+348	-3.5	0
+349	-3.5	0
+350	-3.5	0
+351	-3.5	0
+352	-3.5	0
+353	-3.5	0
+354	-3.5	0
+355	-3.5	0
+356	-3.5	0
+357	-3.5	0
+358	-3.5	0
+359	-3.5	0
+360	-3.5	0
+0	-3	0
+1	-3	0
+2	-3	0
+3	-3	0
+4	-3	0
+5	-3	0
+6	-3	0
+7	-3	0
+8	-3	0
+9	-3	0
+10	-3	-0.0093235
+11	-3	-0.11922
+12	-3	-0.11367
+13	-3	-0.048433
+14	-3	0.060486
+15	-3	0.1779
+16	-3	0.19139
+17	-3	0.11064
+18	-3	0.044147
+19	-3	-0.1084
+20	-3	-0.26133
+21	-3	-0.35757
+22	-3	-0.47852
+23	-3	-0.52437
+24	-3	-0.34782
+25	-3	0.029555
+26	-3	0.56241
+27	-3	0.87622
+28	-3	0.95322
+29	-3	0.94733
+30	-3	1.1146
+31	-3	0.96312
+32	-3	0.89434
+33	-3	0.66242
+34	-3	0.3928
+35	-3	0.19465
+36	-3	-0.018928
+37	-3	-0.20848
+38	-3	-0.45973
+39	-3	-0.46029
+40	-3	-0.1869
+41	-3	0
+42	-3	0
+43	-3	0
+44	-3	0
+45	-3	0
+46	-3	0
+47	-3	0
+48	-3	0
+49	-3	0
+50	-3	0
+51	-3	0
+52	-3	0
+53	-3	0
+54	-3	0
+55	-3	0
+56	-3	0
+57	-3	0
+58	-3	0
+59	-3	0
+60	-3	0
+61	-3	0
+62	-3	0
+63	-3	0
+64	-3	0
+65	-3	0
+66	-3	0
+67	-3	0
+68	-3	0
+69	-3	0
+70	-3	0
+71	-3	0
+72	-3	0
+73	-3	0
+74	-3	0
+75	-3	0
+76	-3	0
+77	-3	0
+78	-3	0
+79	-3	0
+80	-3	0
+81	-3	0
+82	-3	0
+83	-3	0
+84	-3	0
+85	-3	0
+86	-3	0
+87	-3	0
+88	-3	0
+89	-3	0
+90	-3	0
+91	-3	0
+92	-3	0
+93	-3	0
+94	-3	0
+95	-3	0
+96	-3	0
+97	-3	0
+98	-3	0
+99	-3	0
+100	-3	0.040201
+101	-3	0
+102	-3	-0.48941
+103	-3	-1.5697
+104	-3	-2.7419
+105	-3	-2.6354
+106	-3	-0.089799
+107	-3	0
+108	-3	-0.002318
+109	-3	0
+110	-3	0
+111	-3	-0.2063
+112	-3	-0.49308
+113	-3	-0.6678
+114	-3	-0.73102
+115	-3	-0.64327
+116	-3	-0.33664
+117	-3	0
+118	-3	0
+119	-3	0.13907
+120	-3	0.74908
+121	-3	0.22274
+122	-3	0.5539
+123	-3	0
+124	-3	0
+125	-3	0
+126	-3	0.039327
+127	-3	0.022254
+128	-3	-0.019903
+129	-3	-0.054197
+130	-3	-0.0056533
+131	-3	0
+132	-3	0.018073
+133	-3	0.19706
+134	-3	0.36133
+135	-3	0.29225
+136	-3	0.23787
+137	-3	0.79317
+138	-3	0.25189
+139	-3	-0.047132
+140	-3	-0.18086
+141	-3	-0.061451
+142	-3	0.012583
+143	-3	0
+144	-3	0
+145	-3	0
+146	-3	0
+147	-3	0
+148	-3	0
+149	-3	0
+150	-3	0
+151	-3	0
+152	-3	0
+153	-3	0
+154	-3	0
+155	-3	0
+156	-3	0
+157	-3	0
+158	-3	0
+159	-3	0
+160	-3	0
+161	-3	0
+162	-3	0
+163	-3	0
+164	-3	0
+165	-3	0
+166	-3	0
+167	-3	0
+168	-3	0
+169	-3	0
+170	-3	0
+171	-3	0
+172	-3	0
+173	-3	0
+174	-3	0
+175	-3	0
+176	-3	0
+177	-3	0
+178	-3	0
+179	-3	0
+180	-3	0
+181	-3	0
+182	-3	0
+183	-3	0
+184	-3	0
+185	-3	0
+186	-3	0
+187	-3	0
+188	-3	0
+189	-3	0
+190	-3	0
+191	-3	0
+192	-3	0
+193	-3	0
+194	-3	0
+195	-3	0
+196	-3	0
+197	-3	0
+198	-3	0
+199	-3	0
+200	-3	0
+201	-3	0
+202	-3	0
+203	-3	0
+204	-3	0
+205	-3	0
+206	-3	0
+207	-3	0
+208	-3	0
+209	-3	0
+210	-3	0
+211	-3	0
+212	-3	0
+213	-3	0
+214	-3	0
+215	-3	0
+216	-3	0
+217	-3	0
+218	-3	0
+219	-3	0
+220	-3	0
+221	-3	0
+222	-3	0
+223	-3	0
+224	-3	0
+225	-3	0
+226	-3	0
+227	-3	0
+228	-3	0
+229	-3	0
+230	-3	0
+231	-3	0
+232	-3	0
+233	-3	0
+234	-3	0
+235	-3	0
+236	-3	0
+237	-3	0
+238	-3	0
+239	-3	0
+240	-3	0
+241	-3	0
+242	-3	0
+243	-3	0
+244	-3	0
+245	-3	0
+246	-3	0
+247	-3	0
+248	-3	0
+249	-3	0
+250	-3	0
+251	-3	0
+252	-3	0
+253	-3	0
+254	-3	0
+255	-3	0
+256	-3	0
+257	-3	0
+258	-3	0
+259	-3	0
+260	-3	0
+261	-3	0
+262	-3	0
+263	-3	0
+264	-3	0
+265	-3	0
+266	-3	0
+267	-3	0
+268	-3	0
+269	-3	0
+270	-3	0
+271	-3	0
+272	-3	0
+273	-3	0
+274	-3	0
+275	-3	0
+276	-3	0
+277	-3	0
+278	-3	0
+279	-3	0
+280	-3	0
+281	-3	-0.21491
+282	-3	-0.20073
+283	-3	0.068482
+284	-3	0.3456
+285	-3	0.49492
+286	-3	0.58752
+287	-3	0.626
+288	-3	0.5961
+289	-3	0.56619
+290	-3	0.53629
+291	-3	0.62232
+292	-3	0.81438
+293	-3	0.96897
+294	-3	1.1236
+295	-3	1.2781
+296	-3	1.4297
+297	-3	1.2925
+298	-3	1.1449
+299	-3	1.0038
+300	-3	0.96868
+301	-3	1.4075
+302	-3	1.9961
+303	-3	2.5075
+304	-3	3.0534
+305	-3	3.1964
+306	-3	1.3804
+307	-3	1.1171
+308	-3	1.2366
+309	-3	0.9467
+310	-3	0.92657
+311	-3	0.98363
+312	-3	0.71051
+313	-3	0.59998
+314	-3	0.45523
+315	-3	0.25263
+316	-3	0.12668
+317	-3	0.021007
+318	-3	0.025839
+319	-3	0.023171
+320	-3	-0.10818
+321	-3	0
+322	-3	0
+323	-3	0
+324	-3	0
+325	-3	0
+326	-3	0
+327	-3	0
+328	-3	0
+329	-3	0
+330	-3	0
+331	-3	0
+332	-3	0
+333	-3	0
+334	-3	0
+335	-3	0
+336	-3	0
+337	-3	0
+338	-3	0
+339	-3	0
+340	-3	0
+341	-3	0
+342	-3	0
+343	-3	0
+344	-3	0
+345	-3	0
+346	-3	0
+347	-3	0
+348	-3	0
+349	-3	0
+350	-3	0
+351	-3	0
+352	-3	0
+353	-3	0
+354	-3	0
+355	-3	0
+356	-3	0
+357	-3	0
+358	-3	0
+359	-3	0
+360	-3	0
+0	-2.5	0
+1	-2.5	0
+2	-2.5	0
+3	-2.5	0
+4	-2.5	0
+5	-2.5	0
+6	-2.5	0
+7	-2.5	0
+8	-2.5	0
+9	-2.5	0
+10	-2.5	-0.079124
+11	-2.5	-0.20647
+12	-2.5	-0.19793
+13	-2.5	-0.12251
+14	-2.5	-0.025983
+15	-2.5	0.079067
+16	-2.5	0.10569
+17	-2.5	0.037886
+18	-2.5	-0.038318
+19	-2.5	-0.14898
+20	-2.5	-0.31552
+21	-2.5	-0.41175
+22	-2.5	-0.50989
+23	-2.5	-0.52835
+24	-2.5	-0.39158
+25	-2.5	0.01367
+26	-2.5	0.55127
+27	-2.5	0.81412
+28	-2.5	0.82605
+29	-2.5	0.9444
+30	-2.5	1.2508
+31	-2.5	1.1182
+32	-2.5	0.46265
+33	-2.5	0.80751
+34	-2.5	0.36572
+35	-2.5	0.33498
+36	-2.5	0.080203
+37	-2.5	-0.27684
+38	-2.5	-0.52645
+39	-2.5	-0.59297
+40	-2.5	-0.20973
+41	-2.5	0.0039698
+42	-2.5	0
+43	-2.5	0
+44	-2.5	0
+45	-2.5	0
+46	-2.5	0
+47	-2.5	0
+48	-2.5	0
+49	-2.5	0
+50	-2.5	0
+51	-2.5	0
+52	-2.5	0
+53	-2.5	0
+54	-2.5	0
+55	-2.5	0
+56	-2.5	0
+57	-2.5	0
+58	-2.5	0
+59	-2.5	0
+60	-2.5	0
+61	-2.5	0
+62	-2.5	0
+63	-2.5	0
+64	-2.5	0
+65	-2.5	0
+66	-2.5	0
+67	-2.5	0
+68	-2.5	0
+69	-2.5	0
+70	-2.5	0
+71	-2.5	0
+72	-2.5	0
+73	-2.5	0
+74	-2.5	0
+75	-2.5	0
+76	-2.5	0
+77	-2.5	0
+78	-2.5	0
+79	-2.5	0
+80	-2.5	0
+81	-2.5	0
+82	-2.5	0
+83	-2.5	0
+84	-2.5	0
+85	-2.5	0
+86	-2.5	0
+87	-2.5	0
+88	-2.5	0
+89	-2.5	0
+90	-2.5	0
+91	-2.5	0
+92	-2.5	0
+93	-2.5	0
+94	-2.5	0
+95	-2.5	0
+96	-2.5	0
+97	-2.5	0
+98	-2.5	0
+99	-2.5	0
+100	-2.5	0.029797
+101	-2.5	0
+102	-2.5	-0.82565
+103	-2.5	-2.1485
+104	-2.5	-3.0673
+105	-2.5	-2.7108
+106	-2.5	-1.0767
+107	-2.5	-0.10182
+108	-2.5	-0.0018144
+109	-2.5	0
+110	-2.5	-0.22101
+111	-2.5	-0.59609
+112	-2.5	-0.8843
+113	-2.5	-0.70955
+114	-2.5	-0.98198
+115	-2.5	-0.62119
+116	-2.5	-0.34472
+117	-2.5	0
+118	-2.5	0
+119	-2.5	0.0869
+120	-2.5	0.82409
+121	-2.5	1.631
+122	-2.5	0.42029
+123	-2.5	0
+124	-2.5	0
+125	-2.5	0
+126	-2.5	0.053326
+127	-2.5	0
+128	-2.5	0.021484
+129	-2.5	0
+130	-2.5	0
+131	-2.5	0
+132	-2.5	0.089596
+133	-2.5	0.26599
+134	-2.5	0.44556
+135	-2.5	0.06591
+136	-2.5	0.55546
+137	-2.5	0.89114
+138	-2.5	0.6201
+139	-2.5	-0.051527
+140	-2.5	-0.07979
+141	-2.5	-0.00070775
+142	-2.5	0
+143	-2.5	0
+144	-2.5	0
+145	-2.5	0
+146	-2.5	0
+147	-2.5	0
+148	-2.5	0
+149	-2.5	0
+150	-2.5	0
+151	-2.5	0
+152	-2.5	0
+153	-2.5	0
+154	-2.5	0
+155	-2.5	0
+156	-2.5	0
+157	-2.5	0
+158	-2.5	0
+159	-2.5	0
+160	-2.5	0
+161	-2.5	0
+162	-2.5	0
+163	-2.5	0
+164	-2.5	0
+165	-2.5	0
+166	-2.5	0
+167	-2.5	0
+168	-2.5	0
+169	-2.5	0
+170	-2.5	0
+171	-2.5	0
+172	-2.5	0
+173	-2.5	0
+174	-2.5	0
+175	-2.5	0
+176	-2.5	0
+177	-2.5	0
+178	-2.5	0
+179	-2.5	0
+180	-2.5	0
+181	-2.5	0
+182	-2.5	0
+183	-2.5	0
+184	-2.5	0
+185	-2.5	0
+186	-2.5	0
+187	-2.5	0
+188	-2.5	0
+189	-2.5	0
+190	-2.5	0
+191	-2.5	0
+192	-2.5	0
+193	-2.5	0
+194	-2.5	0
+195	-2.5	0
+196	-2.5	0
+197	-2.5	0
+198	-2.5	0
+199	-2.5	0
+200	-2.5	0
+201	-2.5	0
+202	-2.5	0
+203	-2.5	0
+204	-2.5	0
+205	-2.5	0
+206	-2.5	0
+207	-2.5	0
+208	-2.5	0
+209	-2.5	0
+210	-2.5	0
+211	-2.5	0
+212	-2.5	0
+213	-2.5	0
+214	-2.5	0
+215	-2.5	0
+216	-2.5	0
+217	-2.5	0
+218	-2.5	0
+219	-2.5	0
+220	-2.5	0
+221	-2.5	0
+222	-2.5	0
+223	-2.5	0
+224	-2.5	0
+225	-2.5	0
+226	-2.5	0
+227	-2.5	0
+228	-2.5	0
+229	-2.5	0
+230	-2.5	0
+231	-2.5	0
+232	-2.5	0
+233	-2.5	0
+234	-2.5	0
+235	-2.5	0
+236	-2.5	0
+237	-2.5	0
+238	-2.5	0
+239	-2.5	0
+240	-2.5	0
+241	-2.5	0
+242	-2.5	0
+243	-2.5	0
+244	-2.5	0
+245	-2.5	0
+246	-2.5	0
+247	-2.5	0
+248	-2.5	0
+249	-2.5	0
+250	-2.5	0
+251	-2.5	0
+252	-2.5	0
+253	-2.5	0
+254	-2.5	0
+255	-2.5	0
+256	-2.5	0
+257	-2.5	0
+258	-2.5	0
+259	-2.5	0
+260	-2.5	0
+261	-2.5	0
+262	-2.5	0
+263	-2.5	0
+264	-2.5	0
+265	-2.5	0
+266	-2.5	0
+267	-2.5	0
+268	-2.5	0
+269	-2.5	0
+270	-2.5	0
+271	-2.5	0
+272	-2.5	0
+273	-2.5	0
+274	-2.5	0
+275	-2.5	0
+276	-2.5	0
+277	-2.5	0
+278	-2.5	0
+279	-2.5	-0.0012004
+280	-2.5	-0.14292
+281	-2.5	-0.30693
+282	-2.5	-0.22075
+283	-2.5	-0.0089272
+284	-2.5	0.25131
+285	-2.5	0.35799
+286	-2.5	0.40678
+287	-2.5	0.42865
+288	-2.5	0.42606
+289	-2.5	0.42348
+290	-2.5	0.43348
+291	-2.5	0.58202
+292	-2.5	0.85796
+293	-2.5	1.022
+294	-2.5	1.1766
+295	-2.5	1.3311
+296	-2.5	1.3784
+297	-2.5	1.2412
+298	-2.5	1.0936
+299	-2.5	0.9335
+300	-2.5	0.88128
+301	-2.5	1.4679
+302	-2.5	2.2211
+303	-2.5	2.7671
+304	-2.5	3.313
+305	-2.5	3.7375
+306	-2.5	1.6447
+307	-2.5	1.7755
+308	-2.5	1.2284
+309	-2.5	0.89585
+310	-2.5	0.38978
+311	-2.5	0.52045
+312	-2.5	0.64248
+313	-2.5	0.52463
+314	-2.5	0.39466
+315	-2.5	0.19353
+316	-2.5	0.042448
+317	-2.5	0.028262
+318	-2.5	0
+319	-2.5	0
+320	-2.5	-0.0042374
+321	-2.5	0
+322	-2.5	0
+323	-2.5	0
+324	-2.5	0
+325	-2.5	0
+326	-2.5	0
+327	-2.5	0
+328	-2.5	0
+329	-2.5	0
+330	-2.5	0
+331	-2.5	0
+332	-2.5	0
+333	-2.5	0
+334	-2.5	0
+335	-2.5	0
+336	-2.5	0
+337	-2.5	0
+338	-2.5	0
+339	-2.5	0
+340	-2.5	0
+341	-2.5	0
+342	-2.5	0
+343	-2.5	0
+344	-2.5	0
+345	-2.5	0
+346	-2.5	0
+347	-2.5	0
+348	-2.5	0
+349	-2.5	0
+350	-2.5	0
+351	-2.5	0
+352	-2.5	0
+353	-2.5	0
+354	-2.5	0
+355	-2.5	0
+356	-2.5	0
+357	-2.5	0
+358	-2.5	0
+359	-2.5	0
+360	-2.5	0
+0	-2	0
+1	-2	0
+2	-2	0
+3	-2	0
+4	-2	0
+5	-2	0
+6	-2	0
+7	-2	0
+8	-2	0
+9	-2	0
+10	-2	-0.13406
+11	-2	-0.31045
+12	-2	-0.30185
+13	-2	-0.21064
+14	-2	-0.103
+15	-2	-0.019764
+16	-2	0.019989
+17	-2	-0.047814
+18	-2	-0.12079
+19	-2	-0.22583
+20	-2	-0.3697
+21	-2	-0.46593
+22	-2	-0.55344
+23	-2	-0.53234
+24	-2	-0.43534
+25	-2	-0.0047472
+26	-2	0.53484
+27	-2	0.68525
+28	-2	0.68759
+29	-2	0.94158
+30	-2	1.3114
+31	-2	1.2082
+32	-2	0
+33	-2	0.3881
+34	-2	0.2961
+35	-2	0.53541
+36	-2	0.19813
+37	-2	-0.20322
+38	-2	-0.55654
+39	-2	-0.63453
+40	-2	-0.24815
+41	-2	-0.0053752
+42	-2	0.00049959
+43	-2	0
+44	-2	0
+45	-2	0
+46	-2	0
+47	-2	0
+48	-2	0
+49	-2	0
+50	-2	0
+51	-2	0
+52	-2	0
+53	-2	0
+54	-2	0
+55	-2	0
+56	-2	0
+57	-2	0
+58	-2	0
+59	-2	0
+60	-2	0
+61	-2	0
+62	-2	0
+63	-2	0
+64	-2	0
+65	-2	0
+66	-2	0
+67	-2	0
+68	-2	0
+69	-2	0
+70	-2	0
+71	-2	0
+72	-2	0
+73	-2	0
+74	-2	0
+75	-2	0
+76	-2	0
+77	-2	0
+78	-2	0
+79	-2	0
+80	-2	0
+81	-2	0
+82	-2	0
+83	-2	0
+84	-2	0
+85	-2	0
+86	-2	0
+87	-2	0
+88	-2	0
+89	-2	0
+90	-2	0
+91	-2	0
+92	-2	0
+93	-2	0
+94	-2	0
+95	-2	0
+96	-2	0
+97	-2	0
+98	-2	0
+99	-2	0.36795
+100	-2	0
+101	-2	-0.16958
+102	-2	-1.1948
+103	-2	-2.4627
+104	-2	-2.8115
+105	-2	-1.6151
+106	-2	-0.56926
+107	-2	0
+108	-2	0
+109	-2	-0.077572
+110	-2	-0.55417
+111	-2	-0.91438
+112	-2	-0.78825
+113	-2	-0.68112
+114	-2	-0.65135
+115	-2	-0.47204
+116	-2	-0.29868
+117	-2	-0.021111
+118	-2	0
+119	-2	0
+120	-2	0.58992
+121	-2	1.3243
+122	-2	0.19804
+123	-2	0
+124	-2	0
+125	-2	0
+126	-2	0.17957
+127	-2	0
+128	-2	0.2623
+129	-2	0
+130	-2	0
+131	-2	0
+132	-2	0.35048
+133	-2	0.49224
+134	-2	0
+135	-2	0
+136	-2	0.28419
+137	-2	0
+138	-2	0.4761
+139	-2	-0.0001779
+140	-2	0
+141	-2	0
+142	-2	0
+143	-2	0
+144	-2	0
+145	-2	0
+146	-2	0
+147	-2	0
+148	-2	0
+149	-2	0
+150	-2	0
+151	-2	0
+152	-2	0
+153	-2	0
+154	-2	0
+155	-2	0
+156	-2	0
+157	-2	0
+158	-2	0
+159	-2	0
+160	-2	0
+161	-2	0
+162	-2	0
+163	-2	0
+164	-2	0
+165	-2	0
+166	-2	0
+167	-2	0
+168	-2	0
+169	-2	0
+170	-2	0
+171	-2	0
+172	-2	0
+173	-2	0
+174	-2	0
+175	-2	0
+176	-2	0
+177	-2	0
+178	-2	0
+179	-2	0
+180	-2	0
+181	-2	0
+182	-2	0
+183	-2	0
+184	-2	0
+185	-2	0
+186	-2	0
+187	-2	0
+188	-2	0
+189	-2	0
+190	-2	0
+191	-2	0
+192	-2	0
+193	-2	0
+194	-2	0
+195	-2	0
+196	-2	0
+197	-2	0
+198	-2	0
+199	-2	0
+200	-2	0
+201	-2	0
+202	-2	0
+203	-2	0
+204	-2	0
+205	-2	0
+206	-2	0
+207	-2	0
+208	-2	0
+209	-2	0
+210	-2	0
+211	-2	0
+212	-2	0
+213	-2	0
+214	-2	0
+215	-2	0
+216	-2	0
+217	-2	0
+218	-2	0
+219	-2	0
+220	-2	0
+221	-2	0
+222	-2	0
+223	-2	0
+224	-2	0
+225	-2	0
+226	-2	0
+227	-2	0
+228	-2	0
+229	-2	0
+230	-2	0
+231	-2	0
+232	-2	0
+233	-2	0
+234	-2	0
+235	-2	0
+236	-2	0
+237	-2	0
+238	-2	0
+239	-2	0
+240	-2	0
+241	-2	0
+242	-2	0
+243	-2	0
+244	-2	0
+245	-2	0
+246	-2	0
+247	-2	0
+248	-2	0
+249	-2	0
+250	-2	0
+251	-2	0
+252	-2	0
+253	-2	0
+254	-2	0
+255	-2	0
+256	-2	0
+257	-2	0
+258	-2	0
+259	-2	0
+260	-2	0
+261	-2	0
+262	-2	0
+263	-2	0
+264	-2	0
+265	-2	0
+266	-2	0
+267	-2	0
+268	-2	0
+269	-2	0
+270	-2	0
+271	-2	0
+272	-2	0
+273	-2	0
+274	-2	0
+275	-2	0
+276	-2	0
+277	-2	0
+278	-2	0
+279	-2	-0.01643
+280	-2	-0.2334
+281	-2	-0.33423
+282	-2	-0.28865
+283	-2	-0.058374
+284	-2	0.13861
+285	-2	0.29699
+286	-2	0.32137
+287	-2	0.32075
+288	-2	0.31858
+289	-2	0.316
+290	-2	0.37121
+291	-2	0.47017
+292	-2	0.85053
+293	-2	1.075
+294	-2	1.1818
+295	-2	1.2294
+296	-2	1.2744
+297	-2	1.1899
+298	-2	1.0423
+299	-2	0.88223
+300	-2	0.79388
+301	-2	1.5283
+302	-2	2.4807
+303	-2	3.0266
+304	-2	3.5725
+305	-2	4.1185
+306	-2	1.874
+307	-2	3.1614
+308	-2	1.6489
+309	-2	0.85254
+310	-2	0.79532
+311	-2	0.14947
+312	-2	0.43484
+313	-2	0.48042
+314	-2	0.33289
+315	-2	0.10909
+316	-2	0
+317	-2	0
+318	-2	0
+319	-2	0
+320	-2	0
+321	-2	0
+322	-2	0
+323	-2	0
+324	-2	0
+325	-2	0
+326	-2	0
+327	-2	0
+328	-2	0
+329	-2	0
+330	-2	0
+331	-2	0
+332	-2	0
+333	-2	0
+334	-2	0
+335	-2	0
+336	-2	0
+337	-2	0
+338	-2	0
+339	-2	0
+340	-2	0
+341	-2	0
+342	-2	0
+343	-2	0
+344	-2	0
+345	-2	0
+346	-2	0
+347	-2	0
+348	-2	0
+349	-2	0
+350	-2	0
+351	-2	0
+352	-2	0
+353	-2	0
+354	-2	0
+355	-2	0
+356	-2	0
+357	-2	0
+358	-2	0
+359	-2	0
+360	-2	0
+0	-1.5	0
+1	-1.5	0
+2	-1.5	0
+3	-1.5	0
+4	-1.5	0
+5	-1.5	0
+6	-1.5	0
+7	-1.5	0
+8	-1.5	0
+9	-1.5	0
+10	-1.5	-0.21372
+11	-1.5	-0.39525
+12	-1.5	-0.41178
+13	-1.5	-0.33663
+14	-1.5	-0.19834
+15	-1.5	-0.10571
+16	-1.5	-0.06571
+17	-1.5	-0.13459
+18	-1.5	-0.20628
+19	-1.5	-0.30831
+20	-1.5	-0.42388
+21	-1.5	-0.50111
+22	-1.5	-0.56613
+23	-1.5	-0.55202
+24	-1.5	-0.47909
+25	-1.5	-0.024943
+26	-1.5	0.51159
+27	-1.5	0.54467
+28	-1.5	0.54751
+29	-1.5	0.80464
+30	-1.5	1.3468
+31	-1.5	1.2506
+32	-1.5	0
+33	-1.5	0
+34	-1.5	0.5711
+35	-1.5	0.77741
+36	-1.5	0.35843
+37	-1.5	-0.37554
+38	-1.5	-0.65269
+39	-1.5	-0.66666
+40	-1.5	-0.27291
+41	-1.5	-0.03172
+42	-1.5	-0.00068116
+43	-1.5	0
+44	-1.5	0
+45	-1.5	0
+46	-1.5	0
+47	-1.5	0
+48	-1.5	0
+49	-1.5	0
+50	-1.5	0
+51	-1.5	0
+52	-1.5	0
+53	-1.5	0
+54	-1.5	0
+55	-1.5	0
+56	-1.5	0
+57	-1.5	0
+58	-1.5	0
+59	-1.5	0
+60	-1.5	0
+61	-1.5	0
+62	-1.5	0
+63	-1.5	0
+64	-1.5	0
+65	-1.5	0
+66	-1.5	0
+67	-1.5	0
+68	-1.5	0
+69	-1.5	0
+70	-1.5	0
+71	-1.5	0
+72	-1.5	0
+73	-1.5	0
+74	-1.5	0
+75	-1.5	0
+76	-1.5	0
+77	-1.5	0
+78	-1.5	0
+79	-1.5	0
+80	-1.5	0
+81	-1.5	0
+82	-1.5	0
+83	-1.5	0
+84	-1.5	0
+85	-1.5	0
+86	-1.5	0
+87	-1.5	0
+88	-1.5	0
+89	-1.5	0
+90	-1.5	0
+91	-1.5	0
+92	-1.5	0
+93	-1.5	0
+94	-1.5	0
+95	-1.5	0
+96	-1.5	0
+97	-1.5	0
+98	-1.5	0
+99	-1.5	0.65605
+100	-1.5	0
+101	-1.5	-0.40856
+102	-1.5	-1.5239
+103	-1.5	-2.7725
+104	-1.5	-2.5744
+105	-1.5	0
+106	-1.5	0
+107	-1.5	0
+108	-1.5	0
+109	-1.5	-0.099052
+110	-1.5	-0.34419
+111	-1.5	-0.85654
+112	-1.5	-0.67092
+113	-1.5	-0.38735
+114	-1.5	-0.26244
+115	-1.5	-0.18497
+116	-1.5	-0.19431
+117	-1.5	-0.021941
+118	-1.5	0
+119	-1.5	0.065235
+120	-1.5	0.41206
+121	-1.5	0.73331
+122	-1.5	0.016426
+123	-1.5	0
+124	-1.5	0
+125	-1.5	0
+126	-1.5	0.15753
+127	-1.5	0
+128	-1.5	0.30809
+129	-1.5	0
+130	-1.5	0.057003
+131	-1.5	0.10634
+132	-1.5	0.62517
+133	-1.5	1.1088
+134	-1.5	0.35071
+135	-1.5	0.04477
+136	-1.5	0.014193
+137	-1.5	0
+138	-1.5	0.099095
+139	-1.5	0
+140	-1.5	0
+141	-1.5	0
+142	-1.5	0
+143	-1.5	0
+144	-1.5	0
+145	-1.5	0
+146	-1.5	0
+147	-1.5	0
+148	-1.5	0
+149	-1.5	0
+150	-1.5	0
+151	-1.5	0
+152	-1.5	0
+153	-1.5	0
+154	-1.5	0
+155	-1.5	0
+156	-1.5	0
+157	-1.5	0
+158	-1.5	0
+159	-1.5	0
+160	-1.5	0
+161	-1.5	0
+162	-1.5	0
+163	-1.5	0
+164	-1.5	0
+165	-1.5	0
+166	-1.5	0
+167	-1.5	0
+168	-1.5	0
+169	-1.5	0
+170	-1.5	0
+171	-1.5	0
+172	-1.5	0
+173	-1.5	0
+174	-1.5	0
+175	-1.5	0
+176	-1.5	0
+177	-1.5	0
+178	-1.5	0
+179	-1.5	0
+180	-1.5	0
+181	-1.5	0
+182	-1.5	0
+183	-1.5	0
+184	-1.5	0
+185	-1.5	0
+186	-1.5	0
+187	-1.5	0
+188	-1.5	0
+189	-1.5	0
+190	-1.5	0
+191	-1.5	0
+192	-1.5	0
+193	-1.5	0
+194	-1.5	0
+195	-1.5	0
+196	-1.5	0
+197	-1.5	0
+198	-1.5	0
+199	-1.5	0
+200	-1.5	0
+201	-1.5	0
+202	-1.5	0
+203	-1.5	0
+204	-1.5	0
+205	-1.5	0
+206	-1.5	0
+207	-1.5	0
+208	-1.5	0
+209	-1.5	0
+210	-1.5	0
+211	-1.5	0
+212	-1.5	0
+213	-1.5	0
+214	-1.5	0
+215	-1.5	0
+216	-1.5	0
+217	-1.5	0
+218	-1.5	0
+219	-1.5	0
+220	-1.5	0
+221	-1.5	0
+222	-1.5	0
+223	-1.5	0
+224	-1.5	0
+225	-1.5	0
+226	-1.5	0
+227	-1.5	0
+228	-1.5	0
+229	-1.5	0
+230	-1.5	0
+231	-1.5	0
+232	-1.5	0
+233	-1.5	0
+234	-1.5	0
+235	-1.5	0
+236	-1.5	0
+237	-1.5	0
+238	-1.5	0
+239	-1.5	0
+240	-1.5	0
+241	-1.5	0
+242	-1.5	0
+243	-1.5	0
+244	-1.5	0
+245	-1.5	0
+246	-1.5	0
+247	-1.5	0
+248	-1.5	0
+249	-1.5	0
+250	-1.5	0
+251	-1.5	0
+252	-1.5	0
+253	-1.5	0
+254	-1.5	0
+255	-1.5	0
+256	-1.5	0
+257	-1.5	0
+258	-1.5	0
+259	-1.5	0
+260	-1.5	0
+261	-1.5	0
+262	-1.5	0
+263	-1.5	0
+264	-1.5	0
+265	-1.5	0
+266	-1.5	0
+267	-1.5	0
+268	-1.5	0
+269	-1.5	0
+270	-1.5	0
+271	-1.5	0
+272	-1.5	0
+273	-1.5	0
+274	-1.5	0
+275	-1.5	0
+276	-1.5	0
+277	-1.5	0
+278	-1.5	0
+279	-1.5	-0.016937
+280	-1.5	-0.30647
+281	-1.5	-0.40463
+282	-1.5	-0.33551
+283	-1.5	-0.13318
+284	-1.5	0.070416
+285	-1.5	0.19285
+286	-1.5	0.20533
+287	-1.5	0.21207
+288	-1.5	0.21111
+289	-1.5	0.24797
+290	-1.5	0.30894
+291	-1.5	0.3699
+292	-1.5	0.73869
+293	-1.5	1.0147
+294	-1.5	1.0553
+295	-1.5	1.1029
+296	-1.5	1.1504
+297	-1.5	1.1387
+298	-1.5	0.99106
+299	-1.5	0.83096
+300	-1.5	0.70647
+301	-1.5	1.5753
+302	-1.5	1.9549
+303	-1.5	1.9248
+304	-1.5	2.7729
+305	-1.5	3.5607
+306	-1.5	2.1033
+307	-1.5	3.1933
+308	-1.5	2.9025
+309	-1.5	0.78364
+310	-1.5	0.65687
+311	-1.5	0.0053607
+312	-1.5	0.19981
+313	-1.5	0.39308
+314	-1.5	0.23752
+315	-1.5	0.0411
+316	-1.5	0
+317	-1.5	0
+318	-1.5	0
+319	-1.5	0
+320	-1.5	0
+321	-1.5	0
+322	-1.5	0
+323	-1.5	0
+324	-1.5	0
+325	-1.5	0
+326	-1.5	0
+327	-1.5	0
+328	-1.5	0
+329	-1.5	0
+330	-1.5	0
+331	-1.5	0
+332	-1.5	0
+333	-1.5	0
+334	-1.5	0
+335	-1.5	0
+336	-1.5	0
+337	-1.5	0
+338	-1.5	0
+339	-1.5	0
+340	-1.5	0
+341	-1.5	0
+342	-1.5	0
+343	-1.5	0
+344	-1.5	0
+345	-1.5	0
+346	-1.5	0
+347	-1.5	0
+348	-1.5	0
+349	-1.5	0
+350	-1.5	0
+351	-1.5	0
+352	-1.5	0
+353	-1.5	0
+354	-1.5	0
+355	-1.5	0
+356	-1.5	0
+357	-1.5	0
+358	-1.5	0
+359	-1.5	0
+360	-1.5	0
+0	-1	0
+1	-1	0
+2	-1	0
+3	-1	0
+4	-1	0
+5	-1	0
+6	-1	0
+7	-1	0
+8	-1	0
+9	-1	-0.033637
+10	-1	-0.29146
+11	-1	-0.50088
+12	-1	-0.61627
+13	-1	-0.46052
+14	-1	-0.31537
+15	-1	-0.16374
+16	-1	-0.15169
+17	-1	-0.22338
+18	-1	-0.29506
+19	-1	-0.39081
+20	-1	-0.4657
+21	-1	-0.51381
+22	-1	-0.57882
+23	-1	-0.59416
+24	-1	-0.49755
+25	-1	-0.060549
+26	-1	0.45175
+27	-1	0.40408
+28	-1	0.40744
+29	-1	0.77287
+30	-1	1.4122
+31	-1	1.3851
+32	-1	0.098739
+33	-1	0
+34	-1	0.094992
+35	-1	0.5802
+36	-1	0.42236
+37	-1	-0.42766
+38	-1	-0.75163
+39	-1	-0.66428
+40	-1	-0.30955
+41	-1	-0.032194
+42	-1	-0.0008393
+43	-1	0
+44	-1	0
+45	-1	0
+46	-1	0
+47	-1	0
+48	-1	0
+49	-1	0
+50	-1	0
+51	-1	0
+52	-1	0
+53	-1	0
+54	-1	0
+55	-1	0
+56	-1	0
+57	-1	0
+58	-1	0
+59	-1	0
+60	-1	0
+61	-1	0
+62	-1	0
+63	-1	0
+64	-1	0
+65	-1	0
+66	-1	0
+67	-1	0
+68	-1	0
+69	-1	0
+70	-1	0
+71	-1	0
+72	-1	0
+73	-1	0
+74	-1	0
+75	-1	0
+76	-1	0
+77	-1	0
+78	-1	0
+79	-1	0
+80	-1	0
+81	-1	0
+82	-1	0
+83	-1	0
+84	-1	0
+85	-1	0
+86	-1	0
+87	-1	0
+88	-1	0
+89	-1	0
+90	-1	0
+91	-1	0
+92	-1	0
+93	-1	0
+94	-1	0
+95	-1	0
+96	-1	0
+97	-1	0
+98	-1	0
+99	-1	0.30296
+100	-1	0
+101	-1	-0.71955
+102	-1	-1.9746
+103	-1	-2.3645
+104	-1	-1.8129
+105	-1	0
+106	-1	0
+107	-1	0
+108	-1	0
+109	-1	0
+110	-1	-1.0975
+111	-1	-0.82239
+112	-1	-0.54355
+113	-1	-0.1852
+114	-1	0.0036003
+115	-1	0.045221
+116	-1	-0.070892
+117	-1	-0.027664
+118	-1	0
+119	-1	0
+120	-1	0.16936
+121	-1	0
+122	-1	0.076587
+123	-1	-0.0013216
+124	-1	0
+125	-1	0
+126	-1	0.028211
+127	-1	0
+128	-1	0.02085
+129	-1	0
+130	-1	0.055106
+131	-1	0.11727
+132	-1	0.69862
+133	-1	0.62485
+134	-1	0.29147
+135	-1	0.029849
+136	-1	0.0097891
+137	-1	0
+138	-1	0
+139	-1	0
+140	-1	0
+141	-1	0
+142	-1	0
+143	-1	0
+144	-1	0
+145	-1	0
+146	-1	0
+147	-1	0
+148	-1	0
+149	-1	0
+150	-1	0
+151	-1	0
+152	-1	0
+153	-1	0
+154	-1	0
+155	-1	0
+156	-1	0
+157	-1	0
+158	-1	0
+159	-1	0
+160	-1	0
+161	-1	0
+162	-1	0
+163	-1	0
+164	-1	0
+165	-1	0
+166	-1	0
+167	-1	0
+168	-1	0
+169	-1	0
+170	-1	0
+171	-1	0
+172	-1	0
+173	-1	0
+174	-1	0
+175	-1	0
+176	-1	0
+177	-1	0
+178	-1	0
+179	-1	0
+180	-1	0
+181	-1	0
+182	-1	0
+183	-1	0
+184	-1	0
+185	-1	0
+186	-1	0
+187	-1	0
+188	-1	0
+189	-1	0
+190	-1	0
+191	-1	0
+192	-1	0
+193	-1	0
+194	-1	0
+195	-1	0
+196	-1	0
+197	-1	0
+198	-1	0
+199	-1	0
+200	-1	0
+201	-1	0
+202	-1	0
+203	-1	0
+204	-1	0
+205	-1	0
+206	-1	0
+207	-1	0
+208	-1	0
+209	-1	0
+210	-1	0
+211	-1	0
+212	-1	0
+213	-1	0
+214	-1	0
+215	-1	0
+216	-1	0
+217	-1	0
+218	-1	0
+219	-1	0
+220	-1	0
+221	-1	0
+222	-1	0
+223	-1	0
+224	-1	0
+225	-1	0
+226	-1	0
+227	-1	0
+228	-1	0
+229	-1	0
+230	-1	0
+231	-1	0
+232	-1	0
+233	-1	0
+234	-1	0
+235	-1	0
+236	-1	0
+237	-1	0
+238	-1	0
+239	-1	0
+240	-1	0
+241	-1	0
+242	-1	0
+243	-1	0
+244	-1	0
+245	-1	0
+246	-1	0
+247	-1	0
+248	-1	0
+249	-1	0
+250	-1	0
+251	-1	0
+252	-1	0
+253	-1	0
+254	-1	0
+255	-1	0
+256	-1	0
+257	-1	0
+258	-1	0
+259	-1	0
+260	-1	0
+261	-1	0
+262	-1	0
+263	-1	0
+264	-1	0
+265	-1	0
+266	-1	0
+267	-1	0
+268	-1	0
+269	-1	0
+270	-1	0
+271	-1	0
+272	-1	0
+273	-1	0
+274	-1	0
+275	-1	0
+276	-1	0
+277	-1	0
+278	-1	0
+279	-1	0
+280	-1	-0.30519
+281	-1	-0.35704
+282	-1	-0.36447
+283	-1	-0.21584
+284	-1	-0.02433
+285	-1	0.068118
+286	-1	0.075295
+287	-1	0.092004
+288	-1	0.13304
+289	-1	0.1857
+290	-1	0.24666
+291	-1	0.30762
+292	-1	0.62684
+293	-1	0.92676
+294	-1	0.9288
+295	-1	0.97635
+296	-1	1.0239
+297	-1	1.0302
+298	-1	0.93979
+299	-1	0.77969
+300	-1	0.6196
+301	-1	1.4639
+302	-1	1.6466
+303	-1	1.4851
+304	-1	1.3819
+305	-1	1.7424
+306	-1	2.3066
+307	-1	3.038
+308	-1	3.6767
+309	-1	0.71012
+310	-1	0.44032
+311	-1	0.33414
+312	-1	0.18204
+313	-1	0.17771
+314	-1	0.10268
+315	-1	0
+316	-1	0
+317	-1	0
+318	-1	0
+319	-1	0
+320	-1	0
+321	-1	0
+322	-1	0
+323	-1	0
+324	-1	0
+325	-1	0
+326	-1	0
+327	-1	0
+328	-1	0
+329	-1	0
+330	-1	0
+331	-1	0
+332	-1	0
+333	-1	0
+334	-1	0
+335	-1	0
+336	-1	0
+337	-1	0
+338	-1	0
+339	-1	0
+340	-1	0
+341	-1	0
+342	-1	0
+343	-1	0
+344	-1	0
+345	-1	0
+346	-1	0
+347	-1	0
+348	-1	0
+349	-1	0
+350	-1	0
+351	-1	0
+352	-1	0
+353	-1	0
+354	-1	0
+355	-1	0
+356	-1	0
+357	-1	0
+358	-1	0
+359	-1	0
+360	-1	0
+0	-0.5	0
+1	-0.5	0
+2	-0.5	0
+3	-0.5	0
+4	-0.5	0
+5	-0.5	0
+6	-0.5	0.057254
+7	-0.5	0.013341
+8	-0.5	0
+9	-0.5	-0.024759
+10	-0.5	-0.34969
+11	-0.5	-0.65256
+12	-0.5	-0.72979
+13	-0.5	-0.57411
+14	-0.5	-0.38865
+15	-0.5	-0.20743
+16	-0.5	-0.22465
+17	-0.5	-0.31216
+18	-0.5	-0.38385
+19	-0.5	-0.47331
+20	-0.5	-0.53512
+21	-0.5	-0.5265
+22	-0.5	-0.59152
+23	-0.5	-0.6363
+24	-0.5	-0.53969
+25	-0.5	-0.11871
+26	-0.5	0.39191
+27	-0.5	0.74798
+28	-0.5	0.62295
+29	-0.5	1.036
+30	-0.5	1.4914
+31	-0.5	1.3886
+32	-0.5	0.55421
+33	-0.5	0
+34	-0.5	0.10703
+35	-0.5	0.25635
+36	-0.5	0.26076
+37	-0.5	-0.12809
+38	-0.5	-0.71172
+39	-0.5	-0.60169
+40	-0.5	-0.23959
+41	-0.5	-0.066602
+42	-0.5	0.013064
+43	-0.5	0.0057193
+44	-0.5	0
+45	-0.5	0
+46	-0.5	0
+47	-0.5	0
+48	-0.5	0
+49	-0.5	0
+50	-0.5	0
+51	-0.5	0
+52	-0.5	0
+53	-0.5	0
+54	-0.5	0
+55	-0.5	0
+56	-0.5	0
+57	-0.5	0
+58	-0.5	0
+59	-0.5	0
+60	-0.5	0
+61	-0.5	0
+62	-0.5	0
+63	-0.5	0
+64	-0.5	0
+65	-0.5	0
+66	-0.5	0
+67	-0.5	0
+68	-0.5	0
+69	-0.5	0
+70	-0.5	0
+71	-0.5	0
+72	-0.5	0
+73	-0.5	0
+74	-0.5	0
+75	-0.5	0
+76	-0.5	0
+77	-0.5	0
+78	-0.5	0
+79	-0.5	0
+80	-0.5	0
+81	-0.5	0
+82	-0.5	0
+83	-0.5	0
+84	-0.5	0
+85	-0.5	0
+86	-0.5	0
+87	-0.5	0
+88	-0.5	0
+89	-0.5	0
+90	-0.5	0
+91	-0.5	0
+92	-0.5	0
+93	-0.5	0
+94	-0.5	0
+95	-0.5	0
+96	-0.5	0
+97	-0.5	0
+98	-0.5	0
+99	-0.5	0
+100	-0.5	-0.047352
+101	-0.5	-1.1398
+102	-0.5	-2.4843
+103	-0.5	-2.1205
+104	-0.5	-0.56788
+105	-0.5	0
+106	-0.5	0
+107	-0.5	0
+108	-0.5	0
+109	-0.5	-0.054334
+110	-0.5	-1.4366
+111	-0.5	-0.88491
+112	-0.5	-0.4338
+113	-0.5	-0.0045575
+114	-0.5	0.26731
+115	-0.5	0.27629
+116	-0.5	0.13803
+117	-0.5	0.031847
+118	-0.5	0
+119	-0.5	0
+120	-0.5	0.035581
+121	-0.5	0.043735
+122	-0.5	0.010758
+123	-0.5	-0.0042793
+124	-0.5	0
+125	-0.5	0
+126	-0.5	0
+127	-0.5	0
+128	-0.5	0.037092
+129	-0.5	0
+130	-0.5	0
+131	-0.5	0
+132	-0.5	0.45909
+133	-0.5	0.066608
+134	-0.5	0
+135	-0.5	0
+136	-0.5	0
+137	-0.5	0
+138	-0.5	0
+139	-0.5	0
+140	-0.5	0
+141	-0.5	0
+142	-0.5	0
+143	-0.5	0
+144	-0.5	0
+145	-0.5	0
+146	-0.5	0
+147	-0.5	0
+148	-0.5	0
+149	-0.5	0
+150	-0.5	0
+151	-0.5	0
+152	-0.5	0
+153	-0.5	0
+154	-0.5	0
+155	-0.5	0
+156	-0.5	0
+157	-0.5	0
+158	-0.5	0
+159	-0.5	0
+160	-0.5	0
+161	-0.5	0
+162	-0.5	0
+163	-0.5	0
+164	-0.5	0
+165	-0.5	0
+166	-0.5	0
+167	-0.5	0
+168	-0.5	0
+169	-0.5	0
+170	-0.5	0
+171	-0.5	0
+172	-0.5	0
+173	-0.5	0
+174	-0.5	0
+175	-0.5	0
+176	-0.5	0
+177	-0.5	0
+178	-0.5	0
+179	-0.5	0
+180	-0.5	0
+181	-0.5	0
+182	-0.5	0
+183	-0.5	0
+184	-0.5	0
+185	-0.5	0
+186	-0.5	0
+187	-0.5	0
+188	-0.5	0
+189	-0.5	0
+190	-0.5	0
+191	-0.5	0
+192	-0.5	0
+193	-0.5	0
+194	-0.5	0
+195	-0.5	0
+196	-0.5	0
+197	-0.5	0
+198	-0.5	0
+199	-0.5	0
+200	-0.5	0
+201	-0.5	0
+202	-0.5	0
+203	-0.5	0
+204	-0.5	0
+205	-0.5	0
+206	-0.5	0
+207	-0.5	0
+208	-0.5	0
+209	-0.5	0
+210	-0.5	0
+211	-0.5	0
+212	-0.5	0
+213	-0.5	0
+214	-0.5	0
+215	-0.5	0
+216	-0.5	0
+217	-0.5	0
+218	-0.5	0
+219	-0.5	0
+220	-0.5	0
+221	-0.5	0
+222	-0.5	0
+223	-0.5	0
+224	-0.5	0
+225	-0.5	0
+226	-0.5	0
+227	-0.5	0
+228	-0.5	0
+229	-0.5	0
+230	-0.5	0
+231	-0.5	0
+232	-0.5	0
+233	-0.5	0
+234	-0.5	0
+235	-0.5	0
+236	-0.5	0
+237	-0.5	0
+238	-0.5	0
+239	-0.5	0
+240	-0.5	0
+241	-0.5	0
+242	-0.5	0
+243	-0.5	0
+244	-0.5	0
+245	-0.5	0
+246	-0.5	0
+247	-0.5	0
+248	-0.5	0
+249	-0.5	0
+250	-0.5	0
+251	-0.5	0
+252	-0.5	0
+253	-0.5	0
+254	-0.5	0
+255	-0.5	0
+256	-0.5	0
+257	-0.5	0
+258	-0.5	0
+259	-0.5	0
+260	-0.5	0
+261	-0.5	0
+262	-0.5	0
+263	-0.5	0
+264	-0.5	0
+265	-0.5	0
+266	-0.5	0
+267	-0.5	0
+268	-0.5	0
+269	-0.5	0
+270	-0.5	0
+271	-0.5	0
+272	-0.5	0
+273	-0.5	0
+274	-0.5	0
+275	-0.5	0
+276	-0.5	0
+277	-0.5	0
+278	-0.5	0
+279	-0.5	0
+280	-0.5	-0.28222
+281	-0.5	-0.30837
+282	-0.5	-0.37323
+283	-0.5	-0.29839
+284	-0.5	-0.15366
+285	-0.5	-0.040942
+286	-0.5	9.8407e-05
+287	-0.5	0.041139
+288	-0.5	0.082179
+289	-0.5	0.13139
+290	-0.5	0.18439
+291	-0.5	0.24535
+292	-0.5	0.515
+293	-0.5	0.79318
+294	-0.5	0.87083
+295	-0.5	0.84984
+296	-0.5	0.8974
+297	-0.5	0.91326
+298	-0.5	0.99571
+299	-0.5	0.83561
+300	-0.5	0.67552
+301	-0.5	1.3525
+302	-0.5	1.3383
+303	-0.5	1.2899
+304	-0.5	1.3079
+305	-0.5	1.215
+306	-0.5	1.122
+307	-0.5	2.7174
+308	-0.5	2.601
+309	-0.5	0.472
+310	-0.5	0.22973
+311	-0.5	0.10261
+312	-0.5	0
+313	-0.5	0
+314	-0.5	0
+315	-0.5	0
+316	-0.5	0
+317	-0.5	0
+318	-0.5	0
+319	-0.5	0
+320	-0.5	0
+321	-0.5	0
+322	-0.5	0
+323	-0.5	0
+324	-0.5	0
+325	-0.5	0
+326	-0.5	0
+327	-0.5	0
+328	-0.5	0
+329	-0.5	0
+330	-0.5	0
+331	-0.5	0
+332	-0.5	0
+333	-0.5	0
+334	-0.5	0
+335	-0.5	0
+336	-0.5	0
+337	-0.5	0
+338	-0.5	0
+339	-0.5	0
+340	-0.5	0
+341	-0.5	0
+342	-0.5	0
+343	-0.5	0
+344	-0.5	0
+345	-0.5	0
+346	-0.5	0
+347	-0.5	0
+348	-0.5	0
+349	-0.5	0
+350	-0.5	0
+351	-0.5	0
+352	-0.5	0
+353	-0.5	0
+354	-0.5	0
+355	-0.5	0
+356	-0.5	0
+357	-0.5	0
+358	-0.5	0
+359	-0.5	0
+360	-0.5	0
+0	0	0
+1	0	0
+2	0	0
+3	0	0
+4	0	0
+5	0	0
+6	0	0.049419
+7	0	0.14366
+8	0	0
+9	0	-0.0046554
+10	0	-0.28215
+11	0	-0.60053
+12	0	-0.75448
+13	0	-0.67895
+14	0	-0.45939
+15	0	-0.26487
+16	0	-0.28222
+17	0	-0.39838
+18	0	-0.47263
+19	0	-0.55581
+20	0	-0.60455
+21	0	-0.58174
+22	0	-0.60421
+23	0	-0.66923
+24	0	-0.58183
+25	0	-0.15568
+26	0	0.33545
+27	0	0.84438
+28	0	0.89928
+29	0	1.2992
+30	0	1.29
+31	0	0.99838
+32	0	0.57509
+33	0	0.04745
+34	0	0
+35	0	0.45073
+36	0	0.37988
+37	0	0.034293
+38	0	-0.56795
+39	0	-0.53694
+40	0	-0.20964
+41	0	-0.088035
+42	0	0.0080168
+43	0	0.037269
+44	0	0
+45	0	0
+46	0	0
+47	0	0
+48	0	0
+49	0	0
+50	0	0
+51	0	0
+52	0	0
+53	0	0
+54	0	0
+55	0	0
+56	0	0
+57	0	0
+58	0	0
+59	0	0
+60	0	0
+61	0	0
+62	0	0
+63	0	0
+64	0	0
+65	0	0
+66	0	0
+67	0	0
+68	0	0
+69	0	0
+70	0	0
+71	0	0
+72	0	0
+73	0	0
+74	0	0
+75	0	0
+76	0	0
+77	0	0
+78	0	0
+79	0	0
+80	0	0
+81	0	0
+82	0	0
+83	0	0
+84	0	0
+85	0	0
+86	0	0
+87	0	0
+88	0	0
+89	0	0
+90	0	0
+91	0	0
+92	0	0
+93	0	0
+94	0	0
+95	0	0
+96	0	0
+97	0	0
+98	0	0
+99	0	0
+100	0	0.0759
+101	0	-1.4921
+102	0	-2.7538
+103	0	-1.9529
+104	0	0
+105	0	0
+106	0	0
+107	0	0
+108	0	0
+109	0	-0.61856
+110	0	-1.1691
+111	0	-0.9873
+112	0	-0.25058
+113	0	0.18123
+114	0	0.45351
+115	0	0.4586
+116	0	0.35035
+117	0	0.15045
+118	0	0.028027
+119	0	0
+120	0	0.05578
+121	0	0
+122	0	0
+123	0	0.0097167
+124	0	0.032542
+125	0	0
+126	0	0
+127	0	0
+128	0	-0.065461
+129	0	-0.013403
+130	0	0
+131	0	0
+132	0	0
+133	0	0
+134	0	0
+135	0	0
+136	0	0
+137	0	0
+138	0	0
+139	0	0
+140	0	0
+141	0	0
+142	0	0
+143	0	0
+144	0	0
+145	0	0
+146	0	0
+147	0	0
+148	0	0
+149	0	0
+150	0	0
+151	0	0
+152	0	0
+153	0	0
+154	0	0
+155	0	0
+156	0	0
+157	0	0
+158	0	0
+159	0	0
+160	0	0
+161	0	0
+162	0	0
+163	0	0
+164	0	0
+165	0	0
+166	0	0
+167	0	0
+168	0	0
+169	0	0
+170	0	0
+171	0	0
+172	0	0
+173	0	0
+174	0	0
+175	0	0
+176	0	0
+177	0	0
+178	0	0
+179	0	0
+180	0	0
+181	0	0
+182	0	0
+183	0	0
+184	0	0
+185	0	0
+186	0	0
+187	0	0
+188	0	0
+189	0	0
+190	0	0
+191	0	0
+192	0	0
+193	0	0
+194	0	0
+195	0	0
+196	0	0
+197	0	0
+198	0	0
+199	0	0
+200	0	0
+201	0	0
+202	0	0
+203	0	0
+204	0	0
+205	0	0
+206	0	0
+207	0	0
+208	0	0
+209	0	0
+210	0	0
+211	0	0
+212	0	0
+213	0	0
+214	0	0
+215	0	0
+216	0	0
+217	0	0
+218	0	0
+219	0	0
+220	0	0
+221	0	0
+222	0	0
+223	0	0
+224	0	0
+225	0	0
+226	0	0
+227	0	0
+228	0	0
+229	0	0
+230	0	0
+231	0	0
+232	0	0
+233	0	0
+234	0	0
+235	0	0
+236	0	0
+237	0	0
+238	0	0
+239	0	0
+240	0	0
+241	0	0
+242	0	0
+243	0	0
+244	0	0
+245	0	0
+246	0	0
+247	0	0
+248	0	0
+249	0	0
+250	0	0
+251	0	0
+252	0	0
+253	0	0
+254	0	0
+255	0	0
+256	0	0
+257	0	0
+258	0	0
+259	0	0
+260	0	0
+261	0	0
+262	0	0
+263	0	0
+264	0	0
+265	0	0
+266	0	0
+267	0	0
+268	0	0
+269	0	0
+270	0	0
+271	0	0
+272	0	0
+273	0	0
+274	0	0
+275	0	0
+276	0	0
+277	0	0
+278	0	0
+279	0	0
+280	0	-0.29794
+281	0	-0.38449
+282	0	-0.42011
+283	0	-0.41627
+284	0	-0.27461
+285	0	-0.12294
+286	0	-0.05471
+287	0	-0.0097262
+288	0	0.031314
+289	0	0.089539
+290	0	0.12392
+291	0	0.18308
+292	0	0.40315
+293	0	0.65959
+294	0	0.83071
+295	0	0.76713
+296	0	0.77089
+297	0	0.79636
+298	0	1.0058
+299	0	0.91487
+300	0	0.75813
+301	0	1.1915
+302	0	1.0877
+303	0	1.383
+304	0	1.2338
+305	0	1.1409
+306	0	0.98243
+307	0	1.9742
+308	0	1.6272
+309	0	0.3705
+310	0	0.11564
+311	0	0.032854
+312	0	0
+313	0	0
+314	0	0
+315	0	0
+316	0	0
+317	0	0
+318	0	0
+319	0	0
+320	0	0
+321	0	0
+322	0	0
+323	0	0
+324	0	0
+325	0	0
+326	0	0
+327	0	0
+328	0	0
+329	0	0
+330	0	0
+331	0	0
+332	0	0
+333	0	0
+334	0	0
+335	0	0
+336	0	0
+337	0	0
+338	0	0
+339	0	0
+340	0	0
+341	0	0
+342	0	0
+343	0	0
+344	0	0
+345	0	0
+346	0	0
+347	0	0
+348	0	0
+349	0	0
+350	0	0
+351	0	0
+352	0	0
+353	0	0
+354	0	0
+355	0	0
+356	0	0
+357	0	0
+358	0	0
+359	0	0
+360	0	0
+0	0.5	0
+1	0.5	0
+2	0.5	0
+3	0.5	0
+4	0.5	0
+5	0.5	0
+6	0.5	0.041585
+7	0.5	0.11899
+8	0.5	0
+9	0.5	0
+10	0.5	-0.16772
+11	0.5	-0.54007
+12	0.5	-0.72141
+13	0.5	-0.77543
+14	0.5	-0.47653
+15	0.5	-0.33815
+16	0.5	-0.33979
+17	0.5	-0.45595
+18	0.5	-0.56142
+19	0.5	-0.63832
+20	0.5	-0.67398
+21	0.5	-0.65117
+22	0.5	-0.62836
+23	0.5	-0.68192
+24	0.5	-0.59407
+25	0.5	-0.16514
+26	0.5	0.29141
+27	0.5	0.78961
+28	0.5	1.1646
+29	0.5	1.2555
+30	0.5	1.0539
+31	0.5	0.57617
+32	0.5	0.22549
+33	0.5	0.22653
+34	0.5	0.53452
+35	0.5	0.812
+36	0.5	0.64427
+37	0.5	0.19667
+38	0.5	-0.44488
+39	0.5	-0.4722
+40	0.5	-0.20516
+41	0.5	-0.084771
+42	0.5	0.030253
+43	0.5	0.053242
+44	0.5	0
+45	0.5	0
+46	0.5	0
+47	0.5	0
+48	0.5	0
+49	0.5	0
+50	0.5	0
+51	0.5	0
+52	0.5	0
+53	0.5	0
+54	0.5	0
+55	0.5	0
+56	0.5	0
+57	0.5	0
+58	0.5	0
+59	0.5	0
+60	0.5	0
+61	0.5	0
+62	0.5	0
+63	0.5	0
+64	0.5	0
+65	0.5	0
+66	0.5	0
+67	0.5	0
+68	0.5	0
+69	0.5	0
+70	0.5	0
+71	0.5	0
+72	0.5	0
+73	0.5	0
+74	0.5	0
+75	0.5	0
+76	0.5	0
+77	0.5	0
+78	0.5	0
+79	0.5	0
+80	0.5	0
+81	0.5	0
+82	0.5	0
+83	0.5	0
+84	0.5	0
+85	0.5	0
+86	0.5	0
+87	0.5	0
+88	0.5	0
+89	0.5	0
+90	0.5	0
+91	0.5	0
+92	0.5	0
+93	0.5	0
+94	0.5	0
+95	0.5	0
+96	0.5	0
+97	0.5	0
+98	0.5	0.10219
+99	0.5	0
+100	0.5	-0.1434
+101	0.5	-1.826
+102	0.5	-2.8531
+103	0.5	-1.7034
+104	0.5	0
+105	0.5	0
+106	0.5	0
+107	0.5	0
+108	0.5	0
+109	0.5	-0.48264
+110	0.5	-1.0292
+111	0.5	-0.9443
+112	0.5	-0.051144
+113	0.5	0.354
+114	0.5	0.59845
+115	0.5	0.61411
+116	0.5	0.56256
+117	0.5	0.20024
+118	0.5	0.015601
+119	0.5	0
+120	0.5	0.07607
+121	0.5	0.26721
+122	0.5	0.047
+123	0.5	0.03259
+124	0.5	0.059566
+125	0.5	0.021119
+126	0.5	0
+127	0.5	0
+128	0.5	-0.074852
+129	0.5	-0.11191
+130	0.5	0
+131	0.5	0
+132	0.5	0
+133	0.5	0
+134	0.5	0
+135	0.5	0
+136	0.5	0
+137	0.5	0
+138	0.5	0
+139	0.5	0
+140	0.5	0
+141	0.5	0
+142	0.5	0
+143	0.5	0
+144	0.5	0
+145	0.5	0
+146	0.5	0
+147	0.5	0
+148	0.5	0
+149	0.5	0
+150	0.5	0
+151	0.5	0
+152	0.5	0
+153	0.5	0
+154	0.5	0
+155	0.5	0
+156	0.5	0
+157	0.5	0
+158	0.5	0
+159	0.5	0
+160	0.5	0
+161	0.5	0
+162	0.5	0
+163	0.5	0
+164	0.5	0
+165	0.5	0
+166	0.5	0
+167	0.5	0
+168	0.5	0
+169	0.5	0
+170	0.5	0
+171	0.5	0
+172	0.5	0
+173	0.5	0
+174	0.5	0
+175	0.5	0
+176	0.5	0
+177	0.5	0
+178	0.5	0
+179	0.5	0
+180	0.5	0
+181	0.5	0
+182	0.5	0
+183	0.5	0
+184	0.5	0
+185	0.5	0
+186	0.5	0
+187	0.5	0
+188	0.5	0
+189	0.5	0
+190	0.5	0
+191	0.5	0
+192	0.5	0
+193	0.5	0
+194	0.5	0
+195	0.5	0
+196	0.5	0
+197	0.5	0
+198	0.5	0
+199	0.5	0
+200	0.5	0
+201	0.5	0
+202	0.5	0
+203	0.5	0
+204	0.5	0
+205	0.5	0
+206	0.5	0
+207	0.5	0
+208	0.5	0
+209	0.5	0
+210	0.5	0
+211	0.5	0
+212	0.5	0
+213	0.5	0
+214	0.5	0
+215	0.5	0
+216	0.5	0
+217	0.5	0
+218	0.5	0
+219	0.5	0
+220	0.5	0
+221	0.5	0
+222	0.5	0
+223	0.5	0
+224	0.5	0
+225	0.5	0
+226	0.5	0
+227	0.5	0
+228	0.5	0
+229	0.5	0
+230	0.5	0
+231	0.5	0
+232	0.5	0
+233	0.5	0
+234	0.5	0
+235	0.5	0
+236	0.5	0
+237	0.5	0
+238	0.5	0
+239	0.5	0
+240	0.5	0
+241	0.5	0
+242	0.5	0
+243	0.5	0
+244	0.5	0
+245	0.5	0
+246	0.5	0
+247	0.5	0
+248	0.5	0
+249	0.5	0
+250	0.5	0
+251	0.5	0
+252	0.5	0
+253	0.5	0
+254	0.5	0
+255	0.5	0
+256	0.5	0
+257	0.5	0
+258	0.5	0
+259	0.5	0
+260	0.5	0
+261	0.5	0
+262	0.5	0
+263	0.5	0
+264	0.5	0
+265	0.5	0
+266	0.5	0
+267	0.5	0
+268	0.5	0
+269	0.5	0
+270	0.5	0
+271	0.5	0
+272	0.5	0
+273	0.5	0
+274	0.5	0
+275	0.5	0
+276	0.5	0
+277	0.5	0
+278	0.5	0
+279	0.5	0
+280	0.5	-0.24878
+281	0.5	-0.37929
+282	0.5	-0.46522
+283	0.5	-0.44884
+284	0.5	-0.35238
+285	0.5	-0.20707
+286	0.5	-0.13884
+287	0.5	-0.070602
+288	0.5	-0.019551
+289	0.5	0.047689
+290	0.5	0.08207
+291	0.5	0.1208
+292	0.5	0.2913
+293	0.5	0.52601
+294	0.5	0.75243
+295	0.5	0.727
+296	0.5	0.66342
+297	0.5	0.67947
+298	0.5	0.98661
+299	0.5	0.99413
+300	0.5	0.84236
+301	0.5	0.88554
+302	0.5	1.1846
+303	0.5	1.3109
+304	0.5	1.1598
+305	0.5	1.016
+306	0.5	0.81446
+307	0.5	0.63737
+308	0.5	0.48713
+309	0.5	0.27621
+310	0.5	0.027438
+311	0.5	0
+312	0.5	0
+313	0.5	0
+314	0.5	0
+315	0.5	0
+316	0.5	0
+317	0.5	0
+318	0.5	0
+319	0.5	0
+320	0.5	0
+321	0.5	0
+322	0.5	0
+323	0.5	0
+324	0.5	0
+325	0.5	0
+326	0.5	0
+327	0.5	0
+328	0.5	0
+329	0.5	0
+330	0.5	0
+331	0.5	0
+332	0.5	0
+333	0.5	0
+334	0.5	0
+335	0.5	0
+336	0.5	0
+337	0.5	0
+338	0.5	0
+339	0.5	0
+340	0.5	0
+341	0.5	0
+342	0.5	0
+343	0.5	0
+344	0.5	0
+345	0.5	0
+346	0.5	0
+347	0.5	0
+348	0.5	0
+349	0.5	0
+350	0.5	0
+351	0.5	0
+352	0.5	0
+353	0.5	0
+354	0.5	0
+355	0.5	0
+356	0.5	0
+357	0.5	0
+358	0.5	0
+359	0.5	0
+360	0.5	0
+0	1	0
+1	1	0
+2	1	0
+3	1	0
+4	1	0
+5	1	0
+6	1	0.017212
+7	1	0
+8	1	0
+9	1	0
+10	1	-0.10828
+11	1	-0.38688
+12	1	-0.62044
+13	1	-0.65172
+14	1	-0.49366
+15	1	-0.37539
+16	1	-0.39736
+17	1	-0.51352
+18	1	-0.62968
+19	1	-0.72188
+20	1	-0.7434
+21	1	-0.7206
+22	1	-0.69779
+23	1	-0.69461
+24	1	-0.60353
+25	1	-0.17459
+26	1	0.25434
+27	1	0.74557
+28	1	1.0702
+29	1	1.1592
+30	1	0.83684
+31	1	0.41275
+32	1	0.35427
+33	1	0.60606
+34	1	0.81926
+35	1	0.9281
+36	1	0.56511
+37	1	0.28451
+38	1	-0.34922
+39	1	-0.40746
+40	1	-0.20507
+41	1	-0.069288
+42	1	0.056586
+43	1	0.061101
+44	1	0.010684
+45	1	0
+46	1	0
+47	1	0
+48	1	0
+49	1	0
+50	1	0
+51	1	0
+52	1	0
+53	1	0
+54	1	0
+55	1	0
+56	1	0
+57	1	0
+58	1	0
+59	1	0
+60	1	0
+61	1	0
+62	1	0
+63	1	0
+64	1	0
+65	1	0
+66	1	0
+67	1	0
+68	1	0
+69	1	0
+70	1	0
+71	1	0
+72	1	0
+73	1	0
+74	1	0
+75	1	0
+76	1	0
+77	1	0
+78	1	0
+79	1	0
+80	1	0
+81	1	0
+82	1	0
+83	1	0
+84	1	0
+85	1	0
+86	1	0
+87	1	0
+88	1	0
+89	1	0
+90	1	0
+91	1	0
+92	1	0
+93	1	0
+94	1	0
+95	1	0
+96	1	0
+97	1	0
+98	1	0.28101
+99	1	0.72665
+100	1	-0.36799
+101	1	-2.3062
+102	1	-0.79758
+103	1	-0.92469
+104	1	0
+105	1	0
+106	1	0
+107	1	0
+108	1	0
+109	1	-0.5804
+110	1	-0.92114
+111	1	-0.69576
+112	1	0.016015
+113	1	0.47641
+114	1	0.7326
+115	1	0.70289
+116	1	0.59366
+117	1	0.38091
+118	1	0.10906
+119	1	0
+120	1	0.037913
+121	1	0.076955
+122	1	0.09969
+123	1	0.068704
+124	1	0.044493
+125	1	0.036528
+126	1	0
+127	1	-0.040809
+128	1	-0.038068
+129	1	0
+130	1	0
+131	1	0
+132	1	0
+133	1	0
+134	1	0
+135	1	0
+136	1	0
+137	1	0
+138	1	0
+139	1	0
+140	1	0
+141	1	0
+142	1	0
+143	1	0
+144	1	0
+145	1	0
+146	1	0
+147	1	0
+148	1	0
+149	1	0
+150	1	0
+151	1	0
+152	1	0
+153	1	0
+154	1	0
+155	1	0
+156	1	0
+157	1	0
+158	1	0
+159	1	0
+160	1	0
+161	1	0
+162	1	0
+163	1	0
+164	1	0
+165	1	0
+166	1	0
+167	1	0
+168	1	0
+169	1	0
+170	1	0
+171	1	0
+172	1	0
+173	1	0
+174	1	0
+175	1	0
+176	1	0
+177	1	0
+178	1	0
+179	1	0
+180	1	0
+181	1	0
+182	1	0
+183	1	0
+184	1	0
+185	1	0
+186	1	0
+187	1	0
+188	1	0
+189	1	0
+190	1	0
+191	1	0
+192	1	0
+193	1	0
+194	1	0
+195	1	0
+196	1	0
+197	1	0
+198	1	0
+199	1	0
+200	1	0
+201	1	0
+202	1	0
+203	1	0
+204	1	0
+205	1	0
+206	1	0
+207	1	0
+208	1	0
+209	1	0
+210	1	0
+211	1	0
+212	1	0
+213	1	0
+214	1	0
+215	1	0
+216	1	0
+217	1	0
+218	1	0
+219	1	0
+220	1	0
+221	1	0
+222	1	0
+223	1	0
+224	1	0
+225	1	0
+226	1	0
+227	1	0
+228	1	0
+229	1	0
+230	1	0
+231	1	0
+232	1	0
+233	1	0
+234	1	0
+235	1	0
+236	1	0
+237	1	0
+238	1	0
+239	1	0
+240	1	0
+241	1	0
+242	1	0
+243	1	0
+244	1	0
+245	1	0
+246	1	0
+247	1	0
+248	1	0
+249	1	0
+250	1	0
+251	1	0
+252	1	0
+253	1	0
+254	1	0
+255	1	0
+256	1	0
+257	1	0
+258	1	0
+259	1	0
+260	1	0
+261	1	0
+262	1	0
+263	1	0
+264	1	0
+265	1	0
+266	1	0
+267	1	0
+268	1	0
+269	1	0
+270	1	0
+271	1	0
+272	1	0
+273	1	0
+274	1	0
+275	1	0
+276	1	0
+277	1	0
+278	1	0
+279	1	0
+280	1	-0.081139
+281	1	-0.20042
+282	1	-0.29882
+283	1	-0.30613
+284	1	-0.30332
+285	1	-0.32708
+286	1	-0.301
+287	1	-0.22182
+288	1	-0.072891
+289	1	-0.0021131
+290	1	0.04022
+291	1	0.074601
+292	1	0.166
+293	1	0.39242
+294	1	0.61885
+295	1	0.68688
+296	1	0.6233
+297	1	0.57974
+298	1	0.92485
+299	1	1.0457
+300	1	0.9266
+301	1	0.99882
+302	1	1.2815
+303	1	1.2387
+304	1	1.1509
+305	1	1.0158
+306	1	0.89315
+307	1	0.68299
+308	1	0.429
+309	1	0.2499
+310	1	0.043127
+311	1	0
+312	1	0
+313	1	0
+314	1	0
+315	1	0
+316	1	0
+317	1	0
+318	1	0
+319	1	0
+320	1	0
+321	1	0
+322	1	0
+323	1	0
+324	1	0
+325	1	0
+326	1	0
+327	1	0
+328	1	0
+329	1	0
+330	1	0
+331	1	0
+332	1	0
+333	1	0
+334	1	0
+335	1	0
+336	1	0
+337	1	0
+338	1	0
+339	1	0
+340	1	0
+341	1	0
+342	1	0
+343	1	0
+344	1	0
+345	1	0
+346	1	0
+347	1	0
+348	1	0
+349	1	0
+350	1	0
+351	1	0
+352	1	0
+353	1	0
+354	1	0
+355	1	0
+356	1	0
+357	1	0
+358	1	0
+359	1	0
+360	1	0
+0	1.5	0
+1	1.5	0
+2	1.5	0
+3	1.5	0
+4	1.5	0
+5	1.5	0
+6	1.5	0
+7	1.5	0
+8	1.5	0
+9	1.5	0
+10	1.5	-0.11972
+11	1.5	-0.34608
+12	1.5	-0.5067
+13	1.5	-0.52787
+14	1.5	-0.48675
+15	1.5	-0.31132
+16	1.5	-0.34314
+17	1.5	-0.49814
+18	1.5	-0.65314
+19	1.5	-0.80341
+20	1.5	-0.81283
+21	1.5	-0.79002
+22	1.5	-0.76722
+23	1.5	-0.74441
+24	1.5	-0.61298
+25	1.5	-0.18405
+26	1.5	0.24488
+27	1.5	0.70154
+28	1.5	0.95097
+29	1.5	1.079
+30	1.5	0.85766
+31	1.5	0.35522
+32	1.5	0.24379
+33	1.5	0.15354
+34	1.5	1.1855
+35	1.5	0.9041
+36	1.5	0.50799
+37	1.5	0.2995
+38	1.5	-0.18756
+39	1.5	-0.2679
+40	1.5	-0.20808
+41	1.5	-0.054486
+42	1.5	0.075682
+43	1.5	0.065508
+44	1.5	0.029548
+45	1.5	0.00082806
+46	1.5	0
+47	1.5	0
+48	1.5	0
+49	1.5	0
+50	1.5	0
+51	1.5	0
+52	1.5	0
+53	1.5	0
+54	1.5	0
+55	1.5	0
+56	1.5	0
+57	1.5	0
+58	1.5	0
+59	1.5	0
+60	1.5	0
+61	1.5	0
+62	1.5	0
+63	1.5	0
+64	1.5	0
+65	1.5	0
+66	1.5	0
+67	1.5	0
+68	1.5	0
+69	1.5	0
+70	1.5	0
+71	1.5	0
+72	1.5	0
+73	1.5	0
+74	1.5	0
+75	1.5	0
+76	1.5	0
+77	1.5	0
+78	1.5	0
+79	1.5	0
+80	1.5	0
+81	1.5	0
+82	1.5	0
+83	1.5	0
+84	1.5	0
+85	1.5	0
+86	1.5	0
+87	1.5	0
+88	1.5	0
+89	1.5	0
+90	1.5	0
+91	1.5	0
+92	1.5	0
+93	1.5	0
+94	1.5	0
+95	1.5	0
+96	1.5	0
+97	1.5	0
+98	1.5	0
+99	1.5	0.73021
+100	1.5	-0.72008
+101	1.5	-2.5206
+102	1.5	-0.31666
+103	1.5	-0.0034445
+104	1.5	-0.82535
+105	1.5	0
+106	1.5	0
+107	1.5	0
+108	1.5	0
+109	1.5	-0.055195
+110	1.5	-0.91489
+111	1.5	-0.38603
+112	1.5	0.11914
+113	1.5	0.5817
+114	1.5	0.85244
+115	1.5	0.76516
+116	1.5	0.60912
+117	1.5	0.52836
+118	1.5	0.21563
+119	1.5	0.0062504
+120	1.5	0
+121	1.5	0.01911
+122	1.5	0.010895
+123	1.5	0.022211
+124	1.5	0.025651
+125	1.5	0.0023078
+126	1.5	0
+127	1.5	0
+128	1.5	-0.099852
+129	1.5	0
+130	1.5	0
+131	1.5	0
+132	1.5	0
+133	1.5	0
+134	1.5	0
+135	1.5	0
+136	1.5	0
+137	1.5	0
+138	1.5	0
+139	1.5	0
+140	1.5	0
+141	1.5	0
+142	1.5	0
+143	1.5	0
+144	1.5	0
+145	1.5	0
+146	1.5	0
+147	1.5	0
+148	1.5	0
+149	1.5	0
+150	1.5	0
+151	1.5	0
+152	1.5	0
+153	1.5	0
+154	1.5	0
+155	1.5	0
+156	1.5	0
+157	1.5	0
+158	1.5	0
+159	1.5	0
+160	1.5	0
+161	1.5	0
+162	1.5	0
+163	1.5	0
+164	1.5	0
+165	1.5	0
+166	1.5	0
+167	1.5	0
+168	1.5	0
+169	1.5	0
+170	1.5	0
+171	1.5	0
+172	1.5	0
+173	1.5	0
+174	1.5	0
+175	1.5	0
+176	1.5	0
+177	1.5	0
+178	1.5	0
+179	1.5	0
+180	1.5	0
+181	1.5	0
+182	1.5	0
+183	1.5	0
+184	1.5	0
+185	1.5	0
+186	1.5	0
+187	1.5	0
+188	1.5	0
+189	1.5	0
+190	1.5	0
+191	1.5	0
+192	1.5	0
+193	1.5	0
+194	1.5	0
+195	1.5	0
+196	1.5	0
+197	1.5	0
+198	1.5	0
+199	1.5	0
+200	1.5	0
+201	1.5	0
+202	1.5	0
+203	1.5	0
+204	1.5	0
+205	1.5	0
+206	1.5	0
+207	1.5	0
+208	1.5	0
+209	1.5	0
+210	1.5	0
+211	1.5	0
+212	1.5	0
+213	1.5	0
+214	1.5	0
+215	1.5	0
+216	1.5	0
+217	1.5	0
+218	1.5	0
+219	1.5	0
+220	1.5	0
+221	1.5	0
+222	1.5	0
+223	1.5	0
+224	1.5	0
+225	1.5	0
+226	1.5	0
+227	1.5	0
+228	1.5	0
+229	1.5	0
+230	1.5	0
+231	1.5	0
+232	1.5	0
+233	1.5	0
+234	1.5	0
+235	1.5	0
+236	1.5	0
+237	1.5	0
+238	1.5	0
+239	1.5	0
+240	1.5	0
+241	1.5	0
+242	1.5	0
+243	1.5	0
+244	1.5	0
+245	1.5	0
+246	1.5	0
+247	1.5	0
+248	1.5	0
+249	1.5	0
+250	1.5	0
+251	1.5	0
+252	1.5	0
+253	1.5	0
+254	1.5	0
+255	1.5	0
+256	1.5	0
+257	1.5	0
+258	1.5	0
+259	1.5	0
+260	1.5	0
+261	1.5	0
+262	1.5	0
+263	1.5	0
+264	1.5	0
+265	1.5	0
+266	1.5	0
+267	1.5	0
+268	1.5	0
+269	1.5	0
+270	1.5	0
+271	1.5	0
+272	1.5	0
+273	1.5	0
+274	1.5	0
+275	1.5	0
+276	1.5	0
+277	1.5	0
+278	1.5	0
+279	1.5	0
+280	1.5	0
+281	1.5	0.0021736
+282	1.5	-0.12256
+283	1.5	-0.16334
+284	1.5	-0.28331
+285	1.5	-0.43383
+286	1.5	-0.47763
+287	1.5	-0.43029
+288	1.5	-0.12615
+289	1.5	-0.052966
+290	1.5	-0.0016297
+291	1.5	0.033867
+292	1.5	0.088378
+293	1.5	0.25884
+294	1.5	0.48526
+295	1.5	0.64675
+296	1.5	0.58317
+297	1.5	0.63628
+298	1.5	0.8631
+299	1.5	1.0282
+300	1.5	1.0108
+301	1.5	1.1753
+302	1.5	1.3244
+303	1.5	1.3351
+304	1.5	1.293
+305	1.5	1.2273
+306	1.5	1.0212
+307	1.5	0.75856
+308	1.5	0.40546
+309	1.5	0.21092
+310	1.5	0.089572
+311	1.5	0
+312	1.5	0
+313	1.5	0
+314	1.5	0
+315	1.5	0
+316	1.5	0
+317	1.5	0
+318	1.5	0
+319	1.5	0
+320	1.5	0
+321	1.5	0
+322	1.5	0
+323	1.5	0
+324	1.5	0
+325	1.5	0
+326	1.5	0
+327	1.5	0
+328	1.5	0
+329	1.5	0
+330	1.5	0
+331	1.5	0
+332	1.5	0
+333	1.5	0
+334	1.5	0
+335	1.5	0
+336	1.5	0
+337	1.5	0
+338	1.5	0
+339	1.5	0
+340	1.5	0
+341	1.5	0
+342	1.5	0
+343	1.5	0
+344	1.5	0
+345	1.5	0
+346	1.5	0
+347	1.5	0
+348	1.5	0
+349	1.5	0
+350	1.5	0
+351	1.5	0
+352	1.5	0
+353	1.5	0
+354	1.5	0
+355	1.5	0
+356	1.5	0
+357	1.5	0
+358	1.5	0
+359	1.5	0
+360	1.5	0
+0	2	0
+1	2	0
+2	2	0
+3	2	0
+4	2	0
+5	2	0
+6	2	0
+7	2	0
+8	2	0
+9	2	0
+10	2	-0.13917
+11	2	-0.29644
+12	2	-0.39417
+13	2	-0.40193
+14	2	-0.30578
+15	2	-0.30575
+16	2	-0.32579
+17	2	-0.42907
+18	2	-0.58407
+19	2	-0.78445
+20	2	-0.93304
+21	2	-0.90643
+22	2	-0.87982
+23	2	-0.85321
+24	2	-0.60505
+25	2	-0.1866
+26	2	0.23779
+27	2	0.66436
+28	2	0.87504
+29	2	1.0338
+30	2	0.88652
+31	2	0.33845
+32	2	0.20795
+33	2	0.60729
+34	2	0.74461
+35	2	0.50709
+36	2	0.35162
+37	2	0.30095
+38	2	-0.0259
+39	2	-0.15688
+40	2	-0.15542
+41	2	-0.033336
+42	2	0.08912
+43	2	0.075085
+44	2	0.029692
+45	2	0.0006444
+46	2	-0.00054687
+47	2	0
+48	2	0
+49	2	0
+50	2	0
+51	2	0
+52	2	0
+53	2	0
+54	2	0
+55	2	0
+56	2	0
+57	2	0
+58	2	0
+59	2	0
+60	2	0
+61	2	0
+62	2	0
+63	2	0
+64	2	0
+65	2	0
+66	2	0
+67	2	0
+68	2	0
+69	2	0
+70	2	0
+71	2	0
+72	2	0
+73	2	0
+74	2	0
+75	2	0
+76	2	0
+77	2	0
+78	2	0
+79	2	0
+80	2	0
+81	2	0
+82	2	0
+83	2	0
+84	2	0
+85	2	0
+86	2	0
+87	2	0
+88	2	0
+89	2	0
+90	2	0
+91	2	0
+92	2	0
+93	2	0
+94	2	0
+95	2	0
+96	2	0
+97	2	0
+98	2	0.060666
+99	2	0.43208
+100	2	-0.80701
+101	2	-0.97772
+102	2	0
+103	2	-1.336
+104	2	-0.94354
+105	2	0
+106	2	0
+107	2	0
+108	2	0
+109	2	0
+110	2	-0.32748
+111	2	0
+112	2	0.23777
+113	2	0.77063
+114	2	0.97228
+115	2	0.82344
+116	2	0.77183
+117	2	0.79865
+118	2	0.3085
+119	2	0
+120	2	0
+121	2	0
+122	2	0
+123	2	0
+124	2	0.0058891
+125	2	0
+126	2	0
+127	2	0
+128	2	0
+129	2	0
+130	2	0
+131	2	0
+132	2	0
+133	2	0
+134	2	0
+135	2	0
+136	2	0
+137	2	0
+138	2	0
+139	2	0
+140	2	0
+141	2	0
+142	2	0
+143	2	0
+144	2	0
+145	2	0
+146	2	0
+147	2	0
+148	2	0
+149	2	0
+150	2	0
+151	2	0
+152	2	0
+153	2	0
+154	2	0
+155	2	0
+156	2	0
+157	2	0
+158	2	0
+159	2	0
+160	2	0
+161	2	0
+162	2	0
+163	2	0
+164	2	0
+165	2	0
+166	2	0
+167	2	0
+168	2	0
+169	2	0
+170	2	0
+171	2	0
+172	2	0
+173	2	0
+174	2	0
+175	2	0
+176	2	0
+177	2	0
+178	2	0
+179	2	0
+180	2	0
+181	2	0
+182	2	0
+183	2	0
+184	2	0
+185	2	0
+186	2	0
+187	2	0
+188	2	0
+189	2	0
+190	2	0
+191	2	0
+192	2	0
+193	2	0
+194	2	0
+195	2	0
+196	2	0
+197	2	0
+198	2	0
+199	2	0
+200	2	0
+201	2	0
+202	2	0
+203	2	0
+204	2	0
+205	2	0
+206	2	0
+207	2	0
+208	2	0
+209	2	0
+210	2	0
+211	2	0
+212	2	0
+213	2	0
+214	2	0
+215	2	0
+216	2	0
+217	2	0
+218	2	0
+219	2	0
+220	2	0
+221	2	0
+222	2	0
+223	2	0
+224	2	0
+225	2	0
+226	2	0
+227	2	0
+228	2	0
+229	2	0
+230	2	0
+231	2	0
+232	2	0
+233	2	0
+234	2	0
+235	2	0
+236	2	0
+237	2	0
+238	2	0
+239	2	0
+240	2	0
+241	2	0
+242	2	0
+243	2	0
+244	2	0
+245	2	0
+246	2	0
+247	2	0
+248	2	0
+249	2	0
+250	2	0
+251	2	0
+252	2	0
+253	2	0
+254	2	0
+255	2	0
+256	2	0
+257	2	0
+258	2	0
+259	2	0
+260	2	0
+261	2	0
+262	2	0
+263	2	0
+264	2	0
+265	2	0
+266	2	0
+267	2	0
+268	2	0
+269	2	0
+270	2	0
+271	2	0
+272	2	0
+273	2	0
+274	2	0
+275	2	0
+276	2	0
+277	2	0
+278	2	0
+279	2	0
+280	2	0
+281	2	0
+282	2	-0.046213
+283	2	-0.16235
+284	2	-0.26187
+285	2	-0.43881
+286	2	-0.58627
+287	2	-0.51251
+288	2	-0.17942
+289	2	-0.10623
+290	2	-0.034795
+291	2	0.018733
+292	2	0.070485
+293	2	0.17742
+294	2	0.35168
+295	2	0.5781
+296	2	0.54305
+297	2	0.70224
+298	2	0.8633
+299	2	1.0108
+300	2	1.0854
+301	2	1.2301
+302	2	1.3431
+303	2	1.3973
+304	2	1.3279
+305	2	1.2904
+306	2	1.1158
+307	2	0.83365
+308	2	0.44302
+309	2	0.18113
+310	2	0
+311	2	0
+312	2	0
+313	2	0
+314	2	0
+315	2	0
+316	2	0
+317	2	0
+318	2	0
+319	2	0
+320	2	0
+321	2	0
+322	2	0
+323	2	0
+324	2	0
+325	2	0
+326	2	0
+327	2	0
+328	2	0
+329	2	0
+330	2	0
+331	2	0
+332	2	0
+333	2	0
+334	2	0
+335	2	0
+336	2	0
+337	2	0
+338	2	0
+339	2	0
+340	2	0
+341	2	0
+342	2	0
+343	2	0
+344	2	0
+345	2	0
+346	2	0
+347	2	0
+348	2	0
+349	2	0
+350	2	0
+351	2	0
+352	2	0
+353	2	0
+354	2	0
+355	2	0
+356	2	0
+357	2	0
+358	2	0
+359	2	0
+360	2	0
+0	2.5	0
+1	2.5	0
+2	2.5	0
+3	2.5	0
+4	2.5	0
+5	2.5	0
+6	2.5	0
+7	2.5	0
+8	2.5	0
+9	2.5	0
+10	2.5	-0.061248
+11	2.5	-0.34535
+12	2.5	-0.40407
+13	2.5	-0.31089
+14	2.5	-0.27572
+15	2.5	-0.29847
+16	2.5	-0.32021
+17	2.5	-0.36344
+18	2.5	-0.57225
+19	2.5	-0.78106
+20	2.5	-0.98987
+21	2.5	-1.0363
+22	2.5	-1.0096
+23	2.5	-0.81343
+24	2.5	-0.51586
+25	2.5	-0.17485
+26	2.5	0.24954
+27	2.5	0.59559
+28	2.5	0.8319
+29	2.5	0.98538
+30	2.5	0.85908
+31	2.5	0.3278
+32	2.5	0.21837
+33	2.5	0.3834
+34	2.5	0.28643
+35	2.5	0.37859
+36	2.5	0.24128
+37	2.5	0.25074
+38	2.5	0.11553
+39	2.5	-0.045857
+40	2.5	-0.081881
+41	2.5	0.018834
+42	2.5	0.097145
+43	2.5	0.10825
+44	2.5	0.033007
+45	2.5	-0.010229
+46	2.5	-0.0003301
+47	2.5	0
+48	2.5	0
+49	2.5	0
+50	2.5	0
+51	2.5	0
+52	2.5	0
+53	2.5	0
+54	2.5	0
+55	2.5	0
+56	2.5	0
+57	2.5	0
+58	2.5	0
+59	2.5	0
+60	2.5	0
+61	2.5	0
+62	2.5	0
+63	2.5	0
+64	2.5	0
+65	2.5	0
+66	2.5	0
+67	2.5	0
+68	2.5	0
+69	2.5	0
+70	2.5	0
+71	2.5	0
+72	2.5	0
+73	2.5	0
+74	2.5	0
+75	2.5	0
+76	2.5	0
+77	2.5	0
+78	2.5	0
+79	2.5	0
+80	2.5	0
+81	2.5	0
+82	2.5	0
+83	2.5	0
+84	2.5	0
+85	2.5	0
+86	2.5	0
+87	2.5	0
+88	2.5	0
+89	2.5	0
+90	2.5	0
+91	2.5	0
+92	2.5	0
+93	2.5	0
+94	2.5	0
+95	2.5	0
+96	2.5	0
+97	2.5	0
+98	2.5	0.67075
+99	2.5	0.28317
+100	2.5	-0.26643
+101	2.5	0
+102	2.5	-1.4299
+103	2.5	-2.3067
+104	2.5	-0.0092479
+105	2.5	0
+106	2.5	0
+107	2.5	0
+108	2.5	0
+109	2.5	0
+110	2.5	0
+111	2.5	0.011351
+112	2.5	0.27197
+113	2.5	0.96201
+114	2.5	1.1076
+115	2.5	0.90697
+116	2.5	0.88972
+117	2.5	1.0563
+118	2.5	0.074848
+119	2.5	0
+120	2.5	0
+121	2.5	0
+122	2.5	0
+123	2.5	0
+124	2.5	0
+125	2.5	0
+126	2.5	0
+127	2.5	0
+128	2.5	0
+129	2.5	0.014736
+130	2.5	0
+131	2.5	0
+132	2.5	0
+133	2.5	0
+134	2.5	0
+135	2.5	0
+136	2.5	0
+137	2.5	0
+138	2.5	0
+139	2.5	0
+140	2.5	0
+141	2.5	0
+142	2.5	0
+143	2.5	0
+144	2.5	0
+145	2.5	0
+146	2.5	0
+147	2.5	0
+148	2.5	0
+149	2.5	0
+150	2.5	0
+151	2.5	0
+152	2.5	0
+153	2.5	0
+154	2.5	0
+155	2.5	0
+156	2.5	0
+157	2.5	0
+158	2.5	0
+159	2.5	0
+160	2.5	0
+161	2.5	0
+162	2.5	0
+163	2.5	0
+164	2.5	0
+165	2.5	0
+166	2.5	0
+167	2.5	0
+168	2.5	0
+169	2.5	0
+170	2.5	0
+171	2.5	0
+172	2.5	0
+173	2.5	0
+174	2.5	0
+175	2.5	0
+176	2.5	0
+177	2.5	0
+178	2.5	0
+179	2.5	0
+180	2.5	0
+181	2.5	0
+182	2.5	0
+183	2.5	0
+184	2.5	0
+185	2.5	0
+186	2.5	0
+187	2.5	0
+188	2.5	0
+189	2.5	0
+190	2.5	0
+191	2.5	0
+192	2.5	0
+193	2.5	0
+194	2.5	0
+195	2.5	0
+196	2.5	0
+197	2.5	0
+198	2.5	0
+199	2.5	0
+200	2.5	0
+201	2.5	0
+202	2.5	0
+203	2.5	0
+204	2.5	0
+205	2.5	0
+206	2.5	0
+207	2.5	0
+208	2.5	0
+209	2.5	0
+210	2.5	0
+211	2.5	0
+212	2.5	0
+213	2.5	0
+214	2.5	0
+215	2.5	0
+216	2.5	0
+217	2.5	0
+218	2.5	0
+219	2.5	0
+220	2.5	0
+221	2.5	0
+222	2.5	0
+223	2.5	0
+224	2.5	0
+225	2.5	0
+226	2.5	0
+227	2.5	0
+228	2.5	0
+229	2.5	0
+230	2.5	0
+231	2.5	0
+232	2.5	0
+233	2.5	0
+234	2.5	0
+235	2.5	0
+236	2.5	0
+237	2.5	0
+238	2.5	0
+239	2.5	0
+240	2.5	0
+241	2.5	0
+242	2.5	0
+243	2.5	0
+244	2.5	0
+245	2.5	0
+246	2.5	0
+247	2.5	0
+248	2.5	0
+249	2.5	0
+250	2.5	0
+251	2.5	0
+252	2.5	0
+253	2.5	0
+254	2.5	0
+255	2.5	0
+256	2.5	0
+257	2.5	0
+258	2.5	0
+259	2.5	0
+260	2.5	0
+261	2.5	0
+262	2.5	0
+263	2.5	0
+264	2.5	0
+265	2.5	0
+266	2.5	0
+267	2.5	0
+268	2.5	0
+269	2.5	0
+270	2.5	0
+271	2.5	0
+272	2.5	0
+273	2.5	0
+274	2.5	0
+275	2.5	0
+276	2.5	0
+277	2.5	0
+278	2.5	0
+279	2.5	0
+280	2.5	0
+281	2.5	0
+282	2.5	-0.040802
+283	2.5	-0.14312
+284	2.5	-0.32557
+285	2.5	-0.61124
+286	2.5	-0.62385
+287	2.5	-0.50757
+288	2.5	-0.23268
+289	2.5	-0.15974
+290	2.5	-0.049929
+291	2.5	0.0035988
+292	2.5	0.054841
+293	2.5	0.13169
+294	2.5	0.28509
+295	2.5	0.45921
+296	2.5	0.60713
+297	2.5	0.75848
+298	2.5	0.90983
+299	2.5	0.96795
+300	2.5	0.9876
+301	2.5	1.2261
+302	2.5	1.3267
+303	2.5	1.345
+304	2.5	1.291
+305	2.5	1.359
+306	2.5	1.2096
+307	2.5	0.87409
+308	2.5	0.40058
+309	2.5	0.11525
+310	2.5	0
+311	2.5	0
+312	2.5	0
+313	2.5	0
+314	2.5	0
+315	2.5	0
+316	2.5	0
+317	2.5	0
+318	2.5	0
+319	2.5	0
+320	2.5	0
+321	2.5	0
+322	2.5	0
+323	2.5	0
+324	2.5	0
+325	2.5	0
+326	2.5	0
+327	2.5	0
+328	2.5	0
+329	2.5	0
+330	2.5	0
+331	2.5	0
+332	2.5	0
+333	2.5	0
+334	2.5	0
+335	2.5	0
+336	2.5	0
+337	2.5	0
+338	2.5	0
+339	2.5	0
+340	2.5	0
+341	2.5	0
+342	2.5	0
+343	2.5	0
+344	2.5	0
+345	2.5	0
+346	2.5	0
+347	2.5	0
+348	2.5	0
+349	2.5	0
+350	2.5	0
+351	2.5	0
+352	2.5	0
+353	2.5	0
+354	2.5	0
+355	2.5	0
+356	2.5	0
+357	2.5	0
+358	2.5	0
+359	2.5	0
+360	2.5	0
+0	3	0
+1	3	0
+2	3	0
+3	3	0
+4	3	0
+5	3	0
+6	3	0
+7	3	0
+8	3	0
+9	3	0
+10	3	-0.14904
+11	3	-0.32593
+12	3	-0.34526
+13	3	-0.24321
+14	3	-0.1862
+15	3	-0.22315
+16	3	-0.24591
+17	3	-0.3297
+18	3	-0.55158
+19	3	-0.77068
+20	3	-0.98649
+21	3	-1.1661
+22	3	-1.0218
+23	3	-0.72425
+24	3	-0.42668
+25	3	-0.12911
+26	3	0.20489
+27	3	0.48889
+28	3	0.7729
+29	3	0.93695
+30	3	0.61537
+31	3	0.34854
+32	3	0.1479
+33	3	0.2045
+34	3	0.21929
+35	3	0.19962
+36	3	0.21415
+37	3	0.22613
+38	3	0.17475
+39	3	0.039163
+40	3	0.0024451
+41	3	0.069169
+42	3	0.15517
+43	3	0.12384
+44	3	0.037006
+45	3	-0.018629
+46	3	-0.0019248
+47	3	0.0011654
+48	3	0
+49	3	0
+50	3	0
+51	3	0
+52	3	0
+53	3	0
+54	3	0
+55	3	0
+56	3	0
+57	3	0
+58	3	0
+59	3	0
+60	3	0
+61	3	0
+62	3	0
+63	3	0
+64	3	0
+65	3	0
+66	3	0
+67	3	0
+68	3	0
+69	3	0
+70	3	0
+71	3	0
+72	3	0
+73	3	0
+74	3	0
+75	3	0
+76	3	0
+77	3	0
+78	3	0
+79	3	0
+80	3	0
+81	3	0
+82	3	0
+83	3	0
+84	3	0
+85	3	0
+86	3	0
+87	3	0
+88	3	0
+89	3	0
+90	3	0
+91	3	0
+92	3	0
+93	3	0
+94	3	0
+95	3	0
+96	3	0
+97	3	0
+98	3	0.92625
+99	3	-0.13293
+100	3	-0.4295
+101	3	-0.39059
+102	3	-2.6004
+103	3	-2.2087
+104	3	0
+105	3	0
+106	3	0
+107	3	0
+108	3	0
+109	3	0
+110	3	0
+111	3	0
+112	3	0.06255
+113	3	0.75396
+114	3	1.2056
+115	3	1.0533
+116	3	0.96748
+117	3	0.99605
+118	3	0
+119	3	0
+120	3	0
+121	3	0
+122	3	0
+123	3	0
+124	3	0
+125	3	0
+126	3	0
+127	3	0
+128	3	0
+129	3	0.026401
+130	3	0
+131	3	0
+132	3	0
+133	3	0
+134	3	0
+135	3	0
+136	3	0
+137	3	0
+138	3	0
+139	3	0
+140	3	0
+141	3	0
+142	3	0
+143	3	0
+144	3	0
+145	3	0
+146	3	0
+147	3	0
+148	3	0
+149	3	0
+150	3	0
+151	3	0
+152	3	0
+153	3	0
+154	3	0
+155	3	0
+156	3	0
+157	3	0
+158	3	0
+159	3	0
+160	3	0
+161	3	0
+162	3	0
+163	3	0
+164	3	0
+165	3	0
+166	3	0
+167	3	0
+168	3	0
+169	3	0
+170	3	0
+171	3	0
+172	3	0
+173	3	0
+174	3	0
+175	3	0
+176	3	0
+177	3	0
+178	3	0
+179	3	0
+180	3	0
+181	3	0
+182	3	0
+183	3	0
+184	3	0
+185	3	0
+186	3	0
+187	3	0
+188	3	0
+189	3	0
+190	3	0
+191	3	0
+192	3	0
+193	3	0
+194	3	0
+195	3	0
+196	3	0
+197	3	0
+198	3	0
+199	3	0
+200	3	0
+201	3	0
+202	3	0
+203	3	0
+204	3	0
+205	3	0
+206	3	0
+207	3	0
+208	3	0
+209	3	0
+210	3	0
+211	3	0
+212	3	0
+213	3	0
+214	3	0
+215	3	0
+216	3	0
+217	3	0
+218	3	0
+219	3	0
+220	3	0
+221	3	0
+222	3	0
+223	3	0
+224	3	0
+225	3	0
+226	3	0
+227	3	0
+228	3	0
+229	3	0
+230	3	0
+231	3	0
+232	3	0
+233	3	0
+234	3	0
+235	3	0
+236	3	0
+237	3	0
+238	3	0
+239	3	0
+240	3	0
+241	3	0
+242	3	0
+243	3	0
+244	3	0
+245	3	0
+246	3	0
+247	3	0
+248	3	0
+249	3	0
+250	3	0
+251	3	0
+252	3	0
+253	3	0
+254	3	0
+255	3	0
+256	3	0
+257	3	0
+258	3	0
+259	3	0
+260	3	0
+261	3	0
+262	3	0
+263	3	0
+264	3	0
+265	3	0
+266	3	0
+267	3	0
+268	3	0
+269	3	0
+270	3	0
+271	3	0
+272	3	0
+273	3	0
+274	3	0
+275	3	0
+276	3	0
+277	3	0
+278	3	0
+279	3	0
+280	3	0
+281	3	0
+282	3	-0.012688
+283	3	-0.10063
+284	3	-0.33681
+285	3	-0.72827
+286	3	-0.58292
+287	3	-0.46663
+288	3	-0.28594
+289	3	-0.21472
+290	3	-0.060959
+291	3	-0.011535
+292	3	0.039197
+293	3	0.11214
+294	3	0.25054
+295	3	0.43346
+296	3	0.65629
+297	3	0.78883
+298	3	0.94018
+299	3	0.99164
+300	3	0.94693
+301	3	1.0804
+302	3	1.2147
+303	3	1.2633
+304	3	1.3273
+305	3	1.4276
+306	3	1.3172
+307	3	0.92393
+308	3	0.37382
+309	3	0.11133
+310	3	0
+311	3	0
+312	3	0
+313	3	0
+314	3	0
+315	3	0
+316	3	0
+317	3	0
+318	3	0
+319	3	0
+320	3	0
+321	3	0
+322	3	0
+323	3	0
+324	3	0
+325	3	0
+326	3	0
+327	3	0
+328	3	0
+329	3	0
+330	3	0
+331	3	0
+332	3	0
+333	3	0
+334	3	0
+335	3	0
+336	3	0
+337	3	0
+338	3	0
+339	3	0
+340	3	0
+341	3	0
+342	3	0
+343	3	0
+344	3	0
+345	3	0
+346	3	0
+347	3	0
+348	3	0
+349	3	0
+350	3	0
+351	3	0
+352	3	0
+353	3	0
+354	3	0
+355	3	0
+356	3	0
+357	3	0
+358	3	0
+359	3	0
+360	3	0
+0	3.5	0
+1	3.5	0
+2	3.5	0
+3	3.5	0
+4	3.5	0
+5	3.5	0
+6	3.5	0
+7	3.5	0
+8	3.5	0
+9	3.5	0
+10	3.5	-0.081435
+11	3.5	-0.31401
+12	3.5	-0.27888
+13	3.5	-0.14633
+14	3.5	-0.053595
+15	3.5	-0.14784
+16	3.5	-0.17059
+17	3.5	-0.29192
+18	3.5	-0.51788
+19	3.5	-0.73698
+20	3.5	-0.95608
+21	3.5	-1.1752
+22	3.5	-0.99793
+23	3.5	-0.70802
+24	3.5	-0.4181
+25	3.5	-0.12819
+26	3.5	0.1503
+27	3.5	0.41988
+28	3.5	0.68946
+29	3.5	0.71248
+30	3.5	0.47511
+31	3.5	0.25547
+32	3.5	0.10642
+33	3.5	0.1366
+34	3.5	0.15384
+35	3.5	0.22214
+36	3.5	0.235
+37	3.5	0.23789
+38	3.5	0.23398
+39	3.5	0.098977
+40	3.5	0.061531
+41	3.5	0.14087
+42	3.5	0.1829
+43	3.5	0.12601
+44	3.5	0.059116
+45	3.5	-0.040411
+46	3.5	-0.016374
+47	3.5	0.019035
+48	3.5	0
+49	3.5	0
+50	3.5	0
+51	3.5	0
+52	3.5	0
+53	3.5	0
+54	3.5	0
+55	3.5	0
+56	3.5	0
+57	3.5	0
+58	3.5	0
+59	3.5	0
+60	3.5	0
+61	3.5	0
+62	3.5	0
+63	3.5	0
+64	3.5	0
+65	3.5	0
+66	3.5	0
+67	3.5	0
+68	3.5	0
+69	3.5	0
+70	3.5	0
+71	3.5	0
+72	3.5	0
+73	3.5	0
+74	3.5	0
+75	3.5	0
+76	3.5	0
+77	3.5	0
+78	3.5	0
+79	3.5	0
+80	3.5	0
+81	3.5	0
+82	3.5	0
+83	3.5	0
+84	3.5	0
+85	3.5	0
+86	3.5	0
+87	3.5	0
+88	3.5	0
+89	3.5	0
+90	3.5	0
+91	3.5	0
+92	3.5	0
+93	3.5	0
+94	3.5	0
+95	3.5	0
+96	3.5	0
+97	3.5	0.20368
+98	3.5	0.57123
+99	3.5	-0.073809
+100	3.5	0
+101	3.5	-1.66
+102	3.5	-3.0067
+103	3.5	-2.2965
+104	3.5	0
+105	3.5	0
+106	3.5	0
+107	3.5	0
+108	3.5	0
+109	3.5	0
+110	3.5	0
+111	3.5	0
+112	3.5	0
+113	3.5	0.18001
+114	3.5	1.1887
+115	3.5	1.1859
+116	3.5	1.0788
+117	3.5	0.73199
+118	3.5	0.17782
+119	3.5	0
+120	3.5	0
+121	3.5	0
+122	3.5	0
+123	3.5	0
+124	3.5	0
+125	3.5	0
+126	3.5	-0.0095498
+127	3.5	-0.0082196
+128	3.5	0
+129	3.5	0
+130	3.5	0
+131	3.5	0
+132	3.5	0
+133	3.5	0
+134	3.5	0
+135	3.5	0
+136	3.5	0
+137	3.5	0
+138	3.5	0
+139	3.5	0
+140	3.5	0
+141	3.5	0
+142	3.5	0
+143	3.5	0
+144	3.5	0
+145	3.5	0
+146	3.5	0
+147	3.5	0
+148	3.5	0
+149	3.5	0
+150	3.5	0
+151	3.5	0
+152	3.5	0
+153	3.5	0
+154	3.5	0
+155	3.5	0
+156	3.5	0
+157	3.5	0
+158	3.5	0
+159	3.5	0
+160	3.5	0
+161	3.5	0
+162	3.5	0
+163	3.5	0
+164	3.5	0
+165	3.5	0
+166	3.5	0
+167	3.5	0
+168	3.5	0
+169	3.5	0
+170	3.5	0
+171	3.5	0
+172	3.5	0
+173	3.5	0
+174	3.5	0
+175	3.5	0
+176	3.5	0
+177	3.5	0
+178	3.5	0
+179	3.5	0
+180	3.5	0
+181	3.5	0
+182	3.5	0
+183	3.5	0
+184	3.5	0
+185	3.5	0
+186	3.5	0
+187	3.5	0
+188	3.5	0
+189	3.5	0
+190	3.5	0
+191	3.5	0
+192	3.5	0
+193	3.5	0
+194	3.5	0
+195	3.5	0
+196	3.5	0
+197	3.5	0
+198	3.5	0
+199	3.5	0
+200	3.5	0
+201	3.5	0
+202	3.5	0
+203	3.5	0
+204	3.5	0
+205	3.5	0
+206	3.5	0
+207	3.5	0
+208	3.5	0
+209	3.5	0
+210	3.5	0
+211	3.5	0
+212	3.5	0
+213	3.5	0
+214	3.5	0
+215	3.5	0
+216	3.5	0
+217	3.5	0
+218	3.5	0
+219	3.5	0
+220	3.5	0
+221	3.5	0
+222	3.5	0
+223	3.5	0
+224	3.5	0
+225	3.5	0
+226	3.5	0
+227	3.5	0
+228	3.5	0
+229	3.5	0
+230	3.5	0
+231	3.5	0
+232	3.5	0
+233	3.5	0
+234	3.5	0
+235	3.5	0
+236	3.5	0
+237	3.5	0
+238	3.5	0
+239	3.5	0
+240	3.5	0
+241	3.5	0
+242	3.5	0
+243	3.5	0
+244	3.5	0
+245	3.5	0
+246	3.5	0
+247	3.5	0
+248	3.5	0
+249	3.5	0
+250	3.5	0
+251	3.5	0
+252	3.5	0
+253	3.5	0
+254	3.5	0
+255	3.5	0
+256	3.5	0
+257	3.5	0
+258	3.5	0
+259	3.5	0
+260	3.5	0
+261	3.5	0
+262	3.5	0
+263	3.5	0
+264	3.5	0
+265	3.5	0
+266	3.5	0
+267	3.5	0
+268	3.5	0
+269	3.5	0
+270	3.5	0
+271	3.5	0
+272	3.5	0
+273	3.5	0
+274	3.5	0
+275	3.5	0
+276	3.5	0
+277	3.5	0
+278	3.5	0
+279	3.5	0
+280	3.5	0
+281	3.5	0
+282	3.5	0
+283	3.5	-0.027409
+284	3.5	-0.31685
+285	3.5	-0.73695
+286	3.5	-0.60937
+287	3.5	-0.454
+288	3.5	-0.33734
+289	3.5	-0.26969
+290	3.5	-0.07117
+291	3.5	-0.02667
+292	3.5	0.023554
+293	3.5	0.092585
+294	3.5	0.24629
+295	3.5	0.41946
+296	3.5	0.62932
+297	3.5	0.84324
+298	3.5	0.97052
+299	3.5	1.0153
+300	3.5	1.0276
+301	3.5	1.0769
+302	3.5	1.0206
+303	3.5	1.082
+304	3.5	1.3596
+305	3.5	1.5135
+306	3.5	1.3309
+307	3.5	0.89522
+308	3.5	0.35271
+309	3.5	0.075884
+310	3.5	0
+311	3.5	0
+312	3.5	0
+313	3.5	0
+314	3.5	0
+315	3.5	0
+316	3.5	0
+317	3.5	0
+318	3.5	0
+319	3.5	0
+320	3.5	0
+321	3.5	0
+322	3.5	0
+323	3.5	0
+324	3.5	0
+325	3.5	0
+326	3.5	0
+327	3.5	0
+328	3.5	0
+329	3.5	0
+330	3.5	0
+331	3.5	0
+332	3.5	0
+333	3.5	0
+334	3.5	0
+335	3.5	0
+336	3.5	0
+337	3.5	0
+338	3.5	0
+339	3.5	0
+340	3.5	0
+341	3.5	0
+342	3.5	0
+343	3.5	0
+344	3.5	0
+345	3.5	0
+346	3.5	0
+347	3.5	0
+348	3.5	0
+349	3.5	0
+350	3.5	0
+351	3.5	0
+352	3.5	0
+353	3.5	0
+354	3.5	0
+355	3.5	0
+356	3.5	0
+357	3.5	0
+358	3.5	0
+359	3.5	0
+360	3.5	0
+0	4	0
+1	4	0
+2	4	0
+3	4	0
+4	4	0
+5	4	0
+6	4	0
+7	4	0.061221
+8	4	0
+9	4	0.0007927
+10	4	-0.12419
+11	4	-0.24866
+12	4	-0.21363
+13	4	-0.062241
+14	4	0.079014
+15	4	-0.035778
+16	4	-0.095276
+17	4	-0.25415
+18	4	-0.48207
+19	4	-0.70328
+20	4	-0.92238
+21	4	-1.1198
+22	4	-0.96539
+23	4	-0.73706
+24	4	-0.44715
+25	4	-0.15723
+26	4	0.1221
+27	4	0.39168
+28	4	0.62528
+29	4	0.60764
+30	4	0.37028
+31	4	0.16085
+32	4	0.070106
+33	4	0.094818
+34	4	0.14305
+35	4	0.24367
+36	4	0.26279
+37	4	0.24966
+38	4	0.25862
+39	4	0.15879
+40	4	0.08265
+41	4	0.12225
+42	4	0.19288
+43	4	0.13066
+44	4	0.070603
+45	4	-0.03582
+46	4	-0.02538
+47	4	0.026714
+48	4	0
+49	4	0
+50	4	0
+51	4	0
+52	4	0
+53	4	0
+54	4	0
+55	4	0
+56	4	0
+57	4	0
+58	4	0
+59	4	0
+60	4	0
+61	4	0
+62	4	0
+63	4	0
+64	4	0
+65	4	0
+66	4	0
+67	4	0
+68	4	0
+69	4	0
+70	4	0
+71	4	0
+72	4	0
+73	4	0
+74	4	0
+75	4	0
+76	4	0
+77	4	0
+78	4	0
+79	4	0
+80	4	0
+81	4	0
+82	4	0
+83	4	0
+84	4	0
+85	4	0
+86	4	0
+87	4	0
+88	4	0
+89	4	0
+90	4	0
+91	4	0
+92	4	0
+93	4	0
+94	4	0
+95	4	0
+96	4	0.25696
+97	4	0.95792
+98	4	0.060798
+99	4	-0.021875
+100	4	0
+101	4	-1.9602
+102	4	-3.5031
+103	4	-2.3291
+104	4	0
+105	4	0
+106	4	0
+107	4	0
+108	4	0
+109	4	0
+110	4	0
+111	4	0
+112	4	0
+113	4	0
+114	4	0.81347
+115	4	1.1971
+116	4	1.0943
+117	4	0.91367
+118	4	0.19772
+119	4	0
+120	4	0
+121	4	0
+122	4	0
+123	4	0
+124	4	0
+125	4	0
+126	4	0
+127	4	-0.030999
+128	4	0
+129	4	0
+130	4	0
+131	4	0
+132	4	0
+133	4	0
+134	4	0
+135	4	0
+136	4	0
+137	4	0
+138	4	0
+139	4	0
+140	4	0
+141	4	0
+142	4	0
+143	4	0
+144	4	0
+145	4	0
+146	4	0
+147	4	0
+148	4	0
+149	4	0
+150	4	0
+151	4	0
+152	4	0
+153	4	0
+154	4	0
+155	4	0
+156	4	0
+157	4	0
+158	4	0
+159	4	0
+160	4	0
+161	4	0
+162	4	0
+163	4	0
+164	4	0
+165	4	0
+166	4	0
+167	4	0
+168	4	0
+169	4	0
+170	4	0
+171	4	0
+172	4	0
+173	4	0
+174	4	0
+175	4	0
+176	4	0
+177	4	0
+178	4	0
+179	4	0
+180	4	0
+181	4	0
+182	4	0
+183	4	0
+184	4	0
+185	4	0
+186	4	0
+187	4	0
+188	4	0
+189	4	0
+190	4	0
+191	4	0
+192	4	0
+193	4	0
+194	4	0
+195	4	0
+196	4	0
+197	4	0
+198	4	0
+199	4	0
+200	4	0
+201	4	0
+202	4	0
+203	4	0
+204	4	0
+205	4	0
+206	4	0
+207	4	0
+208	4	0
+209	4	0
+210	4	0
+211	4	0
+212	4	0
+213	4	0
+214	4	0
+215	4	0
+216	4	0
+217	4	0
+218	4	0
+219	4	0
+220	4	0
+221	4	0
+222	4	0
+223	4	0
+224	4	0
+225	4	0
+226	4	0
+227	4	0
+228	4	0
+229	4	0
+230	4	0
+231	4	0
+232	4	0
+233	4	0
+234	4	0
+235	4	0
+236	4	0
+237	4	0
+238	4	0
+239	4	0
+240	4	0
+241	4	0
+242	4	0
+243	4	0
+244	4	0
+245	4	0
+246	4	0
+247	4	0
+248	4	0
+249	4	0
+250	4	0
+251	4	0
+252	4	0
+253	4	0
+254	4	0
+255	4	0
+256	4	0
+257	4	0
+258	4	0
+259	4	0
+260	4	0
+261	4	0
+262	4	0
+263	4	0
+264	4	0
+265	4	0
+266	4	0
+267	4	0
+268	4	0
+269	4	0
+270	4	0
+271	4	0
+272	4	0
+273	4	0
+274	4	0
+275	4	0
+276	4	0
+277	4	0
+278	4	0
+279	4	0
+280	4	0
+281	4	0
+282	4	0
+283	4	0.022928
+284	4	-0.20171
+285	4	-0.63044
+286	4	-0.68593
+287	4	-0.47948
+288	4	-0.28455
+289	4	-0.23603
+290	4	-0.081381
+291	4	-0.041804
+292	4	0.0079098
+293	4	0.073719
+294	4	0.24334
+295	4	0.41296
+296	4	0.58838
+297	4	0.92329
+298	4	1.0302
+299	4	1.112
+300	4	1.1787
+301	4	1.2517
+302	4	1.1541
+303	4	0.94137
+304	4	1.2733
+305	4	1.4448
+306	4	1.2171
+307	4	0.81209
+308	4	0.31199
+309	4	0
+310	4	0
+311	4	0
+312	4	0
+313	4	0
+314	4	0
+315	4	0
+316	4	0
+317	4	0
+318	4	0
+319	4	0
+320	4	0
+321	4	0
+322	4	0
+323	4	0
+324	4	0
+325	4	0
+326	4	0
+327	4	0
+328	4	0
+329	4	0
+330	4	0
+331	4	0
+332	4	0
+333	4	0
+334	4	0
+335	4	0
+336	4	0
+337	4	0
+338	4	0
+339	4	0
+340	4	0
+341	4	0
+342	4	0
+343	4	0
+344	4	0
+345	4	0
+346	4	0
+347	4	0
+348	4	0
+349	4	0
+350	4	0
+351	4	0
+352	4	0
+353	4	0
+354	4	0
+355	4	0
+356	4	0
+357	4	0
+358	4	0
+359	4	0
+360	4	0
+0	4.5	0
+1	4.5	0
+2	4.5	0
+3	4.5	0
+4	4.5	0
+5	4.5	0
+6	4.5	0.47151
+7	4.5	0.36863
+8	4.5	0.12352
+9	4.5	0.0088172
+10	4.5	-0.083023
+11	4.5	-0.16558
+12	4.5	-0.11254
+13	4.5	0.032512
+14	4.5	0.17751
+15	4.5	0.09683
+16	4.5	-0.017961
+17	4.5	-0.21637
+18	4.5	-0.44429
+19	4.5	-0.66958
+20	4.5	-0.88868
+21	4.5	-1.0318
+22	4.5	-0.87734
+23	4.5	-0.7229
+24	4.5	-0.47619
+25	4.5	-0.18628
+26	4.5	0.093902
+27	4.5	0.36348
+28	4.5	0.47177
+29	4.5	0.50281
+30	4.5	0.2748
+31	4.5	0.091808
+32	4.5	0.06999
+33	4.5	0.093068
+34	4.5	0.16249
+35	4.5	0.27055
+36	4.5	0.29092
+37	4.5	0.26142
+38	4.5	0.2709
+39	4.5	0.24294
+40	4.5	0.15784
+41	4.5	0.097046
+42	4.5	0.18278
+43	4.5	0.12408
+44	4.5	0.063091
+45	4.5	-0.031733
+46	4.5	-0.027927
+47	4.5	0.024027
+48	4.5	0.030143
+49	4.5	0
+50	4.5	0
+51	4.5	0
+52	4.5	0
+53	4.5	0
+54	4.5	0
+55	4.5	0
+56	4.5	0
+57	4.5	0
+58	4.5	0
+59	4.5	0
+60	4.5	0
+61	4.5	0
+62	4.5	0
+63	4.5	0
+64	4.5	0
+65	4.5	0
+66	4.5	0
+67	4.5	0
+68	4.5	0
+69	4.5	0
+70	4.5	0
+71	4.5	0
+72	4.5	0
+73	4.5	0
+74	4.5	0
+75	4.5	0
+76	4.5	0
+77	4.5	0
+78	4.5	0
+79	4.5	0
+80	4.5	0
+81	4.5	0
+82	4.5	0
+83	4.5	0
+84	4.5	0
+85	4.5	0
+86	4.5	0
+87	4.5	0
+88	4.5	0
+89	4.5	0
+90	4.5	0
+91	4.5	0
+92	4.5	0
+93	4.5	0
+94	4.5	0
+95	4.5	0.03852
+96	4.5	0.94693
+97	4.5	0.45714
+98	4.5	-0.25306
+99	4.5	0
+100	4.5	-0.61289
+101	4.5	-2.5665
+102	4.5	-3.925
+103	4.5	-2.5914
+104	4.5	0
+105	4.5	0
+106	4.5	0
+107	4.5	0
+108	4.5	0
+109	4.5	0
+110	4.5	0
+111	4.5	0
+112	4.5	0
+113	4.5	0
+114	4.5	0.75151
+115	4.5	0.87388
+116	4.5	1.0048
+117	4.5	0.85095
+118	4.5	0.51425
+119	4.5	0
+120	4.5	0
+121	4.5	0
+122	4.5	0
+123	4.5	0
+124	4.5	0
+125	4.5	0
+126	4.5	0
+127	4.5	0
+128	4.5	0
+129	4.5	0
+130	4.5	0
+131	4.5	0
+132	4.5	0
+133	4.5	0
+134	4.5	0
+135	4.5	0
+136	4.5	0
+137	4.5	0
+138	4.5	0
+139	4.5	0
+140	4.5	0
+141	4.5	0
+142	4.5	0
+143	4.5	0
+144	4.5	0
+145	4.5	0
+146	4.5	0
+147	4.5	0
+148	4.5	0
+149	4.5	0
+150	4.5	0
+151	4.5	0
+152	4.5	0
+153	4.5	0
+154	4.5	0
+155	4.5	0
+156	4.5	0
+157	4.5	0
+158	4.5	0
+159	4.5	0
+160	4.5	0
+161	4.5	0
+162	4.5	0
+163	4.5	0
+164	4.5	0
+165	4.5	0
+166	4.5	0
+167	4.5	0
+168	4.5	0
+169	4.5	0
+170	4.5	0
+171	4.5	0
+172	4.5	0
+173	4.5	0
+174	4.5	0
+175	4.5	0
+176	4.5	0
+177	4.5	0
+178	4.5	0
+179	4.5	0
+180	4.5	0
+181	4.5	0
+182	4.5	0
+183	4.5	0
+184	4.5	0
+185	4.5	0
+186	4.5	0
+187	4.5	0
+188	4.5	0
+189	4.5	0
+190	4.5	0
+191	4.5	0
+192	4.5	0
+193	4.5	0
+194	4.5	0
+195	4.5	0
+196	4.5	0
+197	4.5	0
+198	4.5	0
+199	4.5	0
+200	4.5	0
+201	4.5	0
+202	4.5	0
+203	4.5	0
+204	4.5	0
+205	4.5	0
+206	4.5	0
+207	4.5	0
+208	4.5	0
+209	4.5	0
+210	4.5	0
+211	4.5	0
+212	4.5	0
+213	4.5	0
+214	4.5	0
+215	4.5	0
+216	4.5	0
+217	4.5	0
+218	4.5	0
+219	4.5	0
+220	4.5	0
+221	4.5	0
+222	4.5	0
+223	4.5	0
+224	4.5	0
+225	4.5	0
+226	4.5	0
+227	4.5	0
+228	4.5	0
+229	4.5	0
+230	4.5	0
+231	4.5	0
+232	4.5	0
+233	4.5	0
+234	4.5	0
+235	4.5	0
+236	4.5	0
+237	4.5	0
+238	4.5	0
+239	4.5	0
+240	4.5	0
+241	4.5	0
+242	4.5	0
+243	4.5	0
+244	4.5	0
+245	4.5	0
+246	4.5	0
+247	4.5	0
+248	4.5	0
+249	4.5	0
+250	4.5	0
+251	4.5	0
+252	4.5	0
+253	4.5	0
+254	4.5	0
+255	4.5	0
+256	4.5	0
+257	4.5	0
+258	4.5	0
+259	4.5	0
+260	4.5	0
+261	4.5	0
+262	4.5	0
+263	4.5	0
+264	4.5	0
+265	4.5	0
+266	4.5	0
+267	4.5	0
+268	4.5	0
+269	4.5	0
+270	4.5	0
+271	4.5	0
+272	4.5	0
+273	4.5	0
+274	4.5	0
+275	4.5	0
+276	4.5	0
+277	4.5	0
+278	4.5	0
+279	4.5	0
+280	4.5	0
+281	4.5	0
+282	4.5	0
+283	4.5	0.033286
+284	4.5	-0.082291
+285	4.5	-0.47518
+286	4.5	-0.62007
+287	4.5	-0.43104
+288	4.5	-0.23175
+289	4.5	-0.2011
+290	4.5	-0.091592
+291	4.5	-0.056938
+292	4.5	-0.007734
+293	4.5	0.070766
+294	4.5	0.24039
+295	4.5	0.41001
+296	4.5	0.58265
+297	4.5	0.88996
+298	4.5	1.0141
+299	4.5	0.87413
+300	4.5	1.0418
+301	4.5	1.3938
+302	4.5	1.1426
+303	4.5	0.76445
+304	4.5	1.1929
+305	4.5	1.083
+306	4.5	1.0814
+307	4.5	0.64613
+308	4.5	0.15406
+309	4.5	0
+310	4.5	0
+311	4.5	0
+312	4.5	0
+313	4.5	0
+314	4.5	0
+315	4.5	0
+316	4.5	0
+317	4.5	0
+318	4.5	0
+319	4.5	0
+320	4.5	0
+321	4.5	0
+322	4.5	0
+323	4.5	0
+324	4.5	0
+325	4.5	0
+326	4.5	0
+327	4.5	0
+328	4.5	0
+329	4.5	0
+330	4.5	0
+331	4.5	0
+332	4.5	0
+333	4.5	0
+334	4.5	0
+335	4.5	0
+336	4.5	0
+337	4.5	0
+338	4.5	0
+339	4.5	0
+340	4.5	0
+341	4.5	0
+342	4.5	0
+343	4.5	0
+344	4.5	0
+345	4.5	0
+346	4.5	0
+347	4.5	0
+348	4.5	0
+349	4.5	0
+350	4.5	0
+351	4.5	0.033057
+352	4.5	0.069237
+353	4.5	0.17658
+354	4.5	0
+355	4.5	0
+356	4.5	0
+357	4.5	0
+358	4.5	0.16115
+359	4.5	0
+360	4.5	0
+0	5	0
+1	5	0
+2	5	0
+3	5	0
+4	5	0
+5	5	0
+6	5	1.4022
+7	5	1.0836
+8	5	0.3082
+9	5	0.14885
+10	5	-0.01795
+11	5	-0.091106
+12	5	-0.010095
+13	5	0.13017
+14	5	0.27045
+15	5	0.15491
+16	5	0.035525
+17	5	-0.17522
+18	5	-0.40652
+19	5	-0.63444
+20	5	-0.85498
+21	5	-0.94372
+22	5	-0.78929
+23	5	-0.63486
+24	5	-0.48042
+25	5	-0.21532
+26	5	0.065702
+27	5	0.25842
+28	5	0.31825
+29	5	0.37809
+30	5	0.20332
+31	5	0.054976
+32	5	0.066844
+33	5	0.086092
+34	5	0.14931
+35	5	0.2516
+36	5	0.31718
+37	5	0.50997
+38	5	0.34677
+39	5	0.33683
+40	5	0.24149
+41	5	0.12828
+42	5	0.15135
+43	5	0.10332
+44	5	0.055544
+45	5	-0.017609
+46	5	-0.030587
+47	5	0.020898
+48	5	0.031274
+49	5	0
+50	5	0
+51	5	0
+52	5	0
+53	5	0
+54	5	0
+55	5	0
+56	5	0
+57	5	0
+58	5	0
+59	5	0
+60	5	0
+61	5	0
+62	5	0
+63	5	0
+64	5	0
+65	5	0
+66	5	0
+67	5	0
+68	5	0
+69	5	0
+70	5	0
+71	5	0
+72	5	0
+73	5	0
+74	5	0
+75	5	0
+76	5	0
+77	5	0
+78	5	0
+79	5	0
+80	5	0
+81	5	0
+82	5	0
+83	5	0
+84	5	0
+85	5	0
+86	5	0
+87	5	0
+88	5	0
+89	5	0
+90	5	0
+91	5	0
+92	5	0
+93	5	0
+94	5	0
+95	5	0.056561
+96	5	0.45613
+97	5	0.014709
+98	5	-0.092739
+99	5	0
+100	5	0
+101	5	-3.393
+102	5	-4.5183
+103	5	-2.7972
+104	5	0
+105	5	0
+106	5	0
+107	5	0
+108	5	0
+109	5	0
+110	5	0
+111	5	0
+112	5	0
+113	5	0
+114	5	0.30534
+115	5	0.3413
+116	5	0.69834
+117	5	0.76381
+118	5	0.58303
+119	5	0.031709
+120	5	0
+121	5	0
+122	5	0
+123	5	0
+124	5	0
+125	5	0
+126	5	0
+127	5	0
+128	5	0
+129	5	0
+130	5	0
+131	5	0
+132	5	0
+133	5	0
+134	5	0
+135	5	0
+136	5	0
+137	5	0
+138	5	0
+139	5	0
+140	5	0
+141	5	0
+142	5	0
+143	5	0
+144	5	0
+145	5	0
+146	5	0
+147	5	0
+148	5	0
+149	5	0
+150	5	0
+151	5	0
+152	5	0
+153	5	0
+154	5	0
+155	5	0
+156	5	0
+157	5	0
+158	5	0
+159	5	0
+160	5	0
+161	5	0
+162	5	0
+163	5	0
+164	5	0
+165	5	0
+166	5	0
+167	5	0
+168	5	0
+169	5	0
+170	5	0
+171	5	0
+172	5	0
+173	5	0
+174	5	0
+175	5	0
+176	5	0
+177	5	0
+178	5	0
+179	5	0
+180	5	0
+181	5	0
+182	5	0
+183	5	0
+184	5	0
+185	5	0
+186	5	0
+187	5	0
+188	5	0
+189	5	0
+190	5	0
+191	5	0
+192	5	0
+193	5	0
+194	5	0
+195	5	0
+196	5	0
+197	5	0
+198	5	0
+199	5	0
+200	5	0
+201	5	0
+202	5	0
+203	5	0
+204	5	0
+205	5	0
+206	5	0
+207	5	0
+208	5	0
+209	5	0
+210	5	0
+211	5	0
+212	5	0
+213	5	0
+214	5	0
+215	5	0
+216	5	0
+217	5	0
+218	5	0
+219	5	0
+220	5	0
+221	5	0
+222	5	0
+223	5	0
+224	5	0
+225	5	0
+226	5	0
+227	5	0
+228	5	0
+229	5	0
+230	5	0
+231	5	0
+232	5	0
+233	5	0
+234	5	0
+235	5	0
+236	5	0
+237	5	0
+238	5	0
+239	5	0
+240	5	0
+241	5	0
+242	5	0
+243	5	0
+244	5	0
+245	5	0
+246	5	0
+247	5	0
+248	5	0
+249	5	0
+250	5	0
+251	5	0
+252	5	0
+253	5	0
+254	5	0
+255	5	0
+256	5	0
+257	5	0
+258	5	0
+259	5	0
+260	5	0
+261	5	0
+262	5	0
+263	5	0
+264	5	0
+265	5	0
+266	5	0
+267	5	0
+268	5	0
+269	5	0
+270	5	0
+271	5	0
+272	5	0
+273	5	0
+274	5	0
+275	5	0
+276	5	0
+277	5	0
+278	5	0
+279	5	0
+280	5	0
+281	5	0
+282	5	0.0016198
+283	5	0.059392
+284	5	-0.013138
+285	5	-0.31675
+286	5	-0.40079
+287	5	-0.3514
+288	5	-0.18708
+289	5	-0.16562
+290	5	-0.093455
+291	5	-0.069127
+292	5	-0.023378
+293	5	0.073569
+294	5	0.24717
+295	5	0.42078
+296	5	0.6733
+297	5	0.97957
+298	5	1.0781
+299	5	0.91215
+300	5	0.99068
+301	5	1.4325
+302	5	1.0278
+303	5	0.64527
+304	5	1.0376
+305	5	0.67967
+306	5	0.91332
+307	5	0.38149
+308	5	0
+309	5	0
+310	5	0
+311	5	0
+312	5	0
+313	5	0
+314	5	0
+315	5	0
+316	5	0
+317	5	0
+318	5	0
+319	5	0
+320	5	0
+321	5	0
+322	5	0
+323	5	0
+324	5	0
+325	5	0
+326	5	0
+327	5	0
+328	5	0
+329	5	0
+330	5	0
+331	5	0
+332	5	0
+333	5	0
+334	5	0
+335	5	0
+336	5	0
+337	5	0
+338	5	0
+339	5	0
+340	5	0
+341	5	0
+342	5	0
+343	5	0
+344	5	0
+345	5	0
+346	5	0
+347	5	0
+348	5	0
+349	5	0
+350	5	0
+351	5	0.13467
+352	5	0.28394
+353	5	0.71184
+354	5	0.54335
+355	5	0.096549
+356	5	0
+357	5	0.67193
+358	5	0.43561
+359	5	0.071925
+360	5	0
+0	5.5	0
+1	5.5	0.13243
+2	5.5	0
+3	5.5	0
+4	5.5	0
+5	5.5	0.052968
+6	5.5	2.0346
+7	5.5	1.6155
+8	5.5	0.61451
+9	5.5	0.25277
+10	5.5	0.057813
+11	5.5	0.04354
+12	5.5	0.092352
+13	5.5	0.2302
+14	5.5	0.30376
+15	5.5	0.18948
+16	5.5	0.072841
+17	5.5	-0.11436
+18	5.5	-0.36047
+19	5.5	-0.59666
+20	5.5	-0.82128
+21	5.5	-0.85568
+22	5.5	-0.70124
+23	5.5	-0.54681
+24	5.5	-0.39237
+25	5.5	-0.23794
+26	5.5	0.037501
+27	5.5	0.10491
+28	5.5	0.18423
+29	5.5	0.28186
+30	5.5	0.1547
+31	5.5	0.039968
+32	5.5	0.051774
+33	5.5	0.063278
+34	5.5	0.13042
+35	5.5	0.23041
+36	5.5	0.61662
+37	5.5	0.77059
+38	5.5	0.45372
+39	5.5	0.43071
+40	5.5	0.32515
+41	5.5	0.20061
+42	5.5	0.1154
+43	5.5	0.087538
+44	5.5	0.055576
+45	5.5	-0.014103
+46	5.5	-0.027948
+47	5.5	0.018474
+48	5.5	0.05091
+49	5.5	0
+50	5.5	0
+51	5.5	0
+52	5.5	0
+53	5.5	0
+54	5.5	0
+55	5.5	0
+56	5.5	0
+57	5.5	0
+58	5.5	0
+59	5.5	0
+60	5.5	0
+61	5.5	0
+62	5.5	0
+63	5.5	0
+64	5.5	0
+65	5.5	0
+66	5.5	0
+67	5.5	0
+68	5.5	0
+69	5.5	0
+70	5.5	0
+71	5.5	0
+72	5.5	0
+73	5.5	0
+74	5.5	0
+75	5.5	0
+76	5.5	0
+77	5.5	0
+78	5.5	0
+79	5.5	0
+80	5.5	0
+81	5.5	0
+82	5.5	0
+83	5.5	0
+84	5.5	0
+85	5.5	0
+86	5.5	0
+87	5.5	0
+88	5.5	0
+89	5.5	0
+90	5.5	0
+91	5.5	0
+92	5.5	0
+93	5.5	0
+94	5.5	0
+95	5.5	0.043194
+96	5.5	0.021404
+97	5.5	-0.003066
+98	5.5	-0.12505
+99	5.5	0
+100	5.5	0
+101	5.5	-4.2678
+102	5.5	-4.8739
+103	5.5	-2.3086
+104	5.5	0
+105	5.5	0
+106	5.5	0
+107	5.5	0
+108	5.5	0
+109	5.5	0
+110	5.5	0
+111	5.5	0
+112	5.5	0
+113	5.5	0
+114	5.5	0
+115	5.5	0.077331
+116	5.5	0.3309
+117	5.5	0.62492
+118	5.5	0.35618
+119	5.5	0.056654
+120	5.5	0
+121	5.5	0
+122	5.5	0
+123	5.5	0
+124	5.5	0
+125	5.5	0
+126	5.5	0
+127	5.5	0
+128	5.5	0
+129	5.5	0
+130	5.5	0
+131	5.5	0
+132	5.5	0
+133	5.5	0
+134	5.5	0
+135	5.5	0
+136	5.5	0
+137	5.5	0
+138	5.5	0
+139	5.5	0
+140	5.5	0
+141	5.5	0
+142	5.5	0
+143	5.5	0
+144	5.5	0
+145	5.5	0
+146	5.5	0
+147	5.5	0
+148	5.5	0
+149	5.5	0
+150	5.5	0
+151	5.5	0
+152	5.5	0
+153	5.5	0
+154	5.5	0
+155	5.5	0
+156	5.5	0
+157	5.5	0
+158	5.5	0
+159	5.5	0
+160	5.5	0
+161	5.5	0
+162	5.5	0
+163	5.5	0
+164	5.5	0
+165	5.5	0
+166	5.5	0
+167	5.5	0
+168	5.5	0
+169	5.5	0
+170	5.5	0
+171	5.5	0
+172	5.5	0
+173	5.5	0
+174	5.5	0
+175	5.5	0
+176	5.5	0
+177	5.5	0
+178	5.5	0
+179	5.5	0
+180	5.5	0
+181	5.5	0
+182	5.5	0
+183	5.5	0
+184	5.5	0
+185	5.5	0
+186	5.5	0
+187	5.5	0
+188	5.5	0
+189	5.5	0
+190	5.5	0
+191	5.5	0
+192	5.5	0
+193	5.5	0
+194	5.5	0
+195	5.5	0
+196	5.5	0
+197	5.5	0
+198	5.5	0
+199	5.5	0
+200	5.5	0
+201	5.5	0
+202	5.5	0
+203	5.5	0
+204	5.5	0
+205	5.5	0
+206	5.5	0
+207	5.5	0
+208	5.5	0
+209	5.5	0
+210	5.5	0
+211	5.5	0
+212	5.5	0
+213	5.5	0
+214	5.5	0
+215	5.5	0
+216	5.5	0
+217	5.5	0
+218	5.5	0
+219	5.5	0
+220	5.5	0
+221	5.5	0
+222	5.5	0
+223	5.5	0
+224	5.5	0
+225	5.5	0
+226	5.5	0
+227	5.5	0
+228	5.5	0
+229	5.5	0
+230	5.5	0
+231	5.5	0
+232	5.5	0
+233	5.5	0
+234	5.5	0
+235	5.5	0
+236	5.5	0
+237	5.5	0
+238	5.5	0
+239	5.5	0
+240	5.5	0
+241	5.5	0
+242	5.5	0
+243	5.5	0
+244	5.5	0
+245	5.5	0
+246	5.5	0
+247	5.5	0
+248	5.5	0
+249	5.5	0
+250	5.5	0
+251	5.5	0
+252	5.5	0
+253	5.5	0
+254	5.5	0
+255	5.5	0
+256	5.5	0
+257	5.5	0
+258	5.5	0
+259	5.5	0
+260	5.5	0
+261	5.5	0
+262	5.5	0
+263	5.5	0
+264	5.5	0
+265	5.5	0
+266	5.5	0
+267	5.5	0
+268	5.5	0
+269	5.5	0
+270	5.5	0
+271	5.5	0
+272	5.5	0
+273	5.5	0
+274	5.5	0
+275	5.5	0
+276	5.5	0
+277	5.5	0
+278	5.5	0
+279	5.5	0
+280	5.5	0
+281	5.5	0
+282	5.5	0
+283	5.5	0.07805
+284	5.5	0.042929
+285	5.5	-0.235
+286	5.5	-0.35411
+287	5.5	-0.25545
+288	5.5	-0.15371
+289	5.5	-0.13013
+290	5.5	-0.083744
+291	5.5	-0.048103
+292	5.5	0.02455
+293	5.5	0.10155
+294	5.5	0.2589
+295	5.5	0.47731
+296	5.5	0.76711
+297	5.5	1.0449
+298	5.5	1.1704
+299	5.5	0.90052
+300	5.5	1.001
+301	5.5	1.3505
+302	5.5	0.95518
+303	5.5	0.56924
+304	5.5	0.84604
+305	5.5	0.98904
+306	5.5	0.53159
+307	5.5	0.026387
+308	5.5	0
+309	5.5	0
+310	5.5	0
+311	5.5	0
+312	5.5	0
+313	5.5	0
+314	5.5	0
+315	5.5	0
+316	5.5	0
+317	5.5	0
+318	5.5	0
+319	5.5	0
+320	5.5	0
+321	5.5	0
+322	5.5	0
+323	5.5	0
+324	5.5	0
+325	5.5	0
+326	5.5	0
+327	5.5	0
+328	5.5	0
+329	5.5	0
+330	5.5	0
+331	5.5	0
+332	5.5	0
+333	5.5	0
+334	5.5	0
+335	5.5	0
+336	5.5	0
+337	5.5	0
+338	5.5	0
+339	5.5	0
+340	5.5	0
+341	5.5	0
+342	5.5	0
+343	5.5	0
+344	5.5	0
+345	5.5	0
+346	5.5	0
+347	5.5	0
+348	5.5	0
+349	5.5	0
+350	5.5	0.030614
+351	5.5	0.1986
+352	5.5	0.38638
+353	5.5	0.8636
+354	5.5	1.2145
+355	5.5	1.3533
+356	5.5	0.82446
+357	5.5	1.1391
+358	5.5	1.0298
+359	5.5	1.1667
+360	5.5	0
+0	6	1.6777
+1	6	1.1284
+2	6	0
+3	6	0.34914
+4	6	0
+5	6	0.41484
+6	6	1.4434
+7	6	1.9389
+8	6	0.65286
+9	6	0.35749
+10	6	0.14073
+11	6	0.12436
+12	6	0.21117
+13	6	0.33217
+14	6	0.33708
+15	6	0.2228
+16	6	0.10852
+17	6	-0.053489
+18	6	-0.2996
+19	6	-0.54571
+20	6	-0.78681
+21	6	-0.76763
+22	6	-0.61319
+23	6	-0.45876
+24	6	-0.31601
+25	6	-0.18096
+26	6	-0.040323
+27	6	0.075115
+28	6	0.18815
+29	6	0.18663
+30	6	0.081197
+31	6	0.02102
+32	6	0.022749
+33	6	0.040465
+34	6	0.14074
+35	6	0.37189
+36	6	1.0503
+37	6	1.0312
+38	6	0.56067
+39	6	0.53529
+40	6	0.4088
+41	6	0.27294
+42	6	0.12608
+43	6	0.071755
+44	6	0.048767
+45	6	-0.011878
+46	6	-0.023844
+47	6	0.017265
+48	6	0.074384
+49	6	0.067062
+50	6	0
+51	6	0
+52	6	0
+53	6	0
+54	6	0
+55	6	0
+56	6	0
+57	6	0
+58	6	0
+59	6	0
+60	6	0
+61	6	0
+62	6	0
+63	6	0
+64	6	0
+65	6	0
+66	6	0
+67	6	0
+68	6	0
+69	6	0
+70	6	0
+71	6	0
+72	6	0
+73	6	0
+74	6	0
+75	6	0
+76	6	0
+77	6	0
+78	6	0
+79	6	0
+80	6	0
+81	6	-0.12023
+82	6	0
+83	6	0
+84	6	0
+85	6	0
+86	6	0
+87	6	0
+88	6	0
+89	6	0
+90	6	0
+91	6	0
+92	6	0
+93	6	0
+94	6	0
+95	6	0
+96	6	0
+97	6	0
+98	6	0
+99	6	0
+100	6	0
+101	6	-5.1381
+102	6	-3.6828
+103	6	-0.16517
+104	6	0
+105	6	0
+106	6	0
+107	6	0
+108	6	0
+109	6	0
+110	6	0
+111	6	0
+112	6	0
+113	6	0
+114	6	0
+115	6	0
+116	6	0.028189
+117	6	0.34916
+118	6	0.014416
+119	6	0
+120	6	0
+121	6	0
+122	6	0
+123	6	0
+124	6	0
+125	6	0.096996
+126	6	0
+127	6	0
+128	6	0
+129	6	0
+130	6	0
+131	6	0
+132	6	0
+133	6	0
+134	6	0
+135	6	0
+136	6	0
+137	6	0
+138	6	0
+139	6	0
+140	6	0
+141	6	0
+142	6	0
+143	6	0
+144	6	0
+145	6	0
+146	6	0
+147	6	0
+148	6	0
+149	6	0
+150	6	0
+151	6	0
+152	6	0
+153	6	0
+154	6	0
+155	6	0
+156	6	0
+157	6	0
+158	6	0
+159	6	0
+160	6	0
+161	6	0
+162	6	0
+163	6	0
+164	6	0
+165	6	0
+166	6	0
+167	6	0
+168	6	0
+169	6	0
+170	6	0
+171	6	0
+172	6	0
+173	6	0
+174	6	0
+175	6	0
+176	6	0
+177	6	0
+178	6	0
+179	6	0
+180	6	0
+181	6	0
+182	6	0
+183	6	0
+184	6	0
+185	6	0
+186	6	0
+187	6	0
+188	6	0
+189	6	0
+190	6	0
+191	6	0
+192	6	0
+193	6	0
+194	6	0
+195	6	0
+196	6	0
+197	6	0
+198	6	0
+199	6	0
+200	6	0
+201	6	0
+202	6	0
+203	6	0
+204	6	0
+205	6	0
+206	6	0
+207	6	0
+208	6	0
+209	6	0
+210	6	0
+211	6	0
+212	6	0
+213	6	0
+214	6	0
+215	6	0
+216	6	0
+217	6	0
+218	6	0
+219	6	0
+220	6	0
+221	6	0
+222	6	0
+223	6	0
+224	6	0
+225	6	0
+226	6	0
+227	6	0
+228	6	0
+229	6	0
+230	6	0
+231	6	0
+232	6	0
+233	6	0
+234	6	0
+235	6	0
+236	6	0
+237	6	0
+238	6	0
+239	6	0
+240	6	0
+241	6	0
+242	6	0
+243	6	0
+244	6	0
+245	6	0
+246	6	0
+247	6	0
+248	6	0
+249	6	0
+250	6	0
+251	6	0
+252	6	0
+253	6	0
+254	6	0
+255	6	0
+256	6	0
+257	6	0
+258	6	0
+259	6	0
+260	6	0
+261	6	0
+262	6	0
+263	6	0
+264	6	0
+265	6	0
+266	6	0
+267	6	0
+268	6	0
+269	6	0
+270	6	0
+271	6	0
+272	6	0
+273	6	0
+274	6	0
+275	6	0
+276	6	0
+277	6	0
+278	6	0
+279	6	0
+280	6	0
+281	6	0
+282	6	0
+283	6	0.11386
+284	6	0.089099
+285	6	-0.15275
+286	6	-0.29026
+287	6	-0.20309
+288	6	-0.12034
+289	6	-0.094646
+290	6	-0.041537
+291	6	0.006839
+292	6	0.075605
+293	6	0.15183
+294	6	0.28131
+295	6	0.55143
+296	6	0.83039
+297	6	1.1103
+298	6	1.1878
+299	6	0.88923
+300	6	0.95526
+301	6	1.1015
+302	6	0.70503
+303	6	0.096662
+304	6	0.04921
+305	6	0.40589
+306	6	0
+307	6	0
+308	6	0
+309	6	0
+310	6	0
+311	6	0
+312	6	0
+313	6	0
+314	6	0
+315	6	0
+316	6	0
+317	6	0
+318	6	0
+319	6	0
+320	6	0
+321	6	0
+322	6	0
+323	6	0
+324	6	0
+325	6	0
+326	6	0
+327	6	0
+328	6	0
+329	6	0
+330	6	0
+331	6	0
+332	6	0
+333	6	0
+334	6	0
+335	6	0
+336	6	0
+337	6	0
+338	6	0
+339	6	0
+340	6	0
+341	6	0
+342	6	0
+343	6	0
+344	6	0
+345	6	0
+346	6	0
+347	6	0
+348	6	0
+349	6	0
+350	6	0.11077
+351	6	0.16794
+352	6	0.44038
+353	6	0.92617
+354	6	1.3323
+355	6	1.4362
+356	6	1.3868
+357	6	1.315
+358	6	1.2084
+359	6	1.2879
+360	6	1.6777
+0	6.5	1.7664
+1	6.5	1.8382
+2	6.5	1.35
+3	6.5	0.86508
+4	6.5	0
+5	6.5	0.83537
+6	6.5	1.2129
+7	6.5	1.3202
+8	6.5	0.76445
+9	6.5	0.45549
+10	6.5	0.218
+11	6.5	0.20517
+12	6.5	0.27019
+13	6.5	0.39803
+14	6.5	0.4229
+15	6.5	0.30011
+16	6.5	0.17732
+17	6.5	-0.048168
+18	6.5	-0.31318
+19	6.5	-0.56385
+20	6.5	-0.77231
+21	6.5	-0.76698
+22	6.5	-0.63193
+23	6.5	-0.49688
+24	6.5	-0.36184
+25	6.5	-0.21377
+26	6.5	-0.068431
+27	6.5	0.066224
+28	6.5	0.19207
+29	6.5	0.13442
+30	6.5	0.074244
+31	6.5	0.014068
+32	6.5	-0.018049
+33	6.5	0.01112
+34	6.5	0.30162
+35	6.5	0.64711
+36	6.5	1.3832
+37	6.5	1.2918
+38	6.5	0.68855
+39	6.5	0.61825
+40	6.5	0.40706
+41	6.5	0.27397
+42	6.5	0.14194
+43	6.5	0.062748
+44	6.5	0.03837
+45	6.5	-0.0096486
+46	6.5	-0.016479
+47	6.5	0.021808
+48	6.5	0.088334
+49	6.5	0.034467
+50	6.5	0
+51	6.5	0
+52	6.5	0
+53	6.5	0
+54	6.5	0
+55	6.5	0
+56	6.5	0
+57	6.5	0
+58	6.5	0
+59	6.5	0
+60	6.5	0
+61	6.5	0
+62	6.5	0
+63	6.5	0
+64	6.5	0
+65	6.5	0
+66	6.5	0
+67	6.5	0
+68	6.5	0
+69	6.5	0
+70	6.5	0
+71	6.5	0
+72	6.5	0
+73	6.5	0
+74	6.5	0
+75	6.5	0
+76	6.5	0
+77	6.5	0
+78	6.5	0
+79	6.5	0
+80	6.5	-0.025192
+81	6.5	-0.18499
+82	6.5	0
+83	6.5	0
+84	6.5	0
+85	6.5	0
+86	6.5	0
+87	6.5	0
+88	6.5	0
+89	6.5	0
+90	6.5	0
+91	6.5	0
+92	6.5	0
+93	6.5	0
+94	6.5	0
+95	6.5	0
+96	6.5	0
+97	6.5	0
+98	6.5	0
+99	6.5	0
+100	6.5	-1.9934
+101	6.5	-5.6046
+102	6.5	-2.9875
+103	6.5	0
+104	6.5	0
+105	6.5	0
+106	6.5	0
+107	6.5	0
+108	6.5	0
+109	6.5	0
+110	6.5	0
+111	6.5	0
+112	6.5	0
+113	6.5	0
+114	6.5	0
+115	6.5	0
+116	6.5	0
+117	6.5	0.15616
+118	6.5	0.13248
+119	6.5	0
+120	6.5	0
+121	6.5	0
+122	6.5	0
+123	6.5	0
+124	6.5	0.17166
+125	6.5	0.23368
+126	6.5	-0.0018285
+127	6.5	0
+128	6.5	0
+129	6.5	0
+130	6.5	0
+131	6.5	0
+132	6.5	0
+133	6.5	0
+134	6.5	0
+135	6.5	0
+136	6.5	0
+137	6.5	0
+138	6.5	0
+139	6.5	0
+140	6.5	0
+141	6.5	0
+142	6.5	0
+143	6.5	0
+144	6.5	0
+145	6.5	0
+146	6.5	0
+147	6.5	0
+148	6.5	0
+149	6.5	0
+150	6.5	0
+151	6.5	0
+152	6.5	0
+153	6.5	0
+154	6.5	0
+155	6.5	0
+156	6.5	0
+157	6.5	0
+158	6.5	0
+159	6.5	0
+160	6.5	0
+161	6.5	0
+162	6.5	0
+163	6.5	0
+164	6.5	0
+165	6.5	0
+166	6.5	0
+167	6.5	0
+168	6.5	0
+169	6.5	0
+170	6.5	0
+171	6.5	0
+172	6.5	0
+173	6.5	0
+174	6.5	0
+175	6.5	0
+176	6.5	0
+177	6.5	0
+178	6.5	0
+179	6.5	0
+180	6.5	0
+181	6.5	0
+182	6.5	0
+183	6.5	0
+184	6.5	0
+185	6.5	0
+186	6.5	0
+187	6.5	0
+188	6.5	0
+189	6.5	0
+190	6.5	0
+191	6.5	0
+192	6.5	0
+193	6.5	0
+194	6.5	0
+195	6.5	0
+196	6.5	0
+197	6.5	0
+198	6.5	0
+199	6.5	0
+200	6.5	0
+201	6.5	0
+202	6.5	0
+203	6.5	0
+204	6.5	0
+205	6.5	0
+206	6.5	0
+207	6.5	0
+208	6.5	0
+209	6.5	0
+210	6.5	0
+211	6.5	0
+212	6.5	0
+213	6.5	0
+214	6.5	0
+215	6.5	0
+216	6.5	0
+217	6.5	0
+218	6.5	0
+219	6.5	0
+220	6.5	0
+221	6.5	0
+222	6.5	0
+223	6.5	0
+224	6.5	0
+225	6.5	0
+226	6.5	0
+227	6.5	0
+228	6.5	0
+229	6.5	0
+230	6.5	0
+231	6.5	0
+232	6.5	0
+233	6.5	0
+234	6.5	0
+235	6.5	0
+236	6.5	0
+237	6.5	0
+238	6.5	0
+239	6.5	0
+240	6.5	0
+241	6.5	0
+242	6.5	0
+243	6.5	0
+244	6.5	0
+245	6.5	0
+246	6.5	0
+247	6.5	0
+248	6.5	0
+249	6.5	0
+250	6.5	0
+251	6.5	0
+252	6.5	0
+253	6.5	0
+254	6.5	0
+255	6.5	0
+256	6.5	0
+257	6.5	0
+258	6.5	0
+259	6.5	0
+260	6.5	0
+261	6.5	0
+262	6.5	0
+263	6.5	0
+264	6.5	0
+265	6.5	0
+266	6.5	0
+267	6.5	0
+268	6.5	0
+269	6.5	0
+270	6.5	0
+271	6.5	0
+272	6.5	0
+273	6.5	0
+274	6.5	0
+275	6.5	0
+276	6.5	0
+277	6.5	0
+278	6.5	0
+279	6.5	0
+280	6.5	0
+281	6.5	0
+282	6.5	0
+283	6.5	0.16594
+284	6.5	0.13206
+285	6.5	-0.081323
+286	6.5	-0.20442
+287	6.5	-0.2024
+288	6.5	-0.1104
+289	6.5	-0.053058
+290	6.5	0.024667
+291	6.5	0.058057
+292	6.5	0.12547
+293	6.5	0.20211
+294	6.5	0.33746
+295	6.5	0.62048
+296	6.5	0.91791
+297	6.5	1.1533
+298	6.5	1.1441
+299	6.5	0.86871
+300	6.5	0.80839
+301	6.5	0.81689
+302	6.5	0.35308
+303	6.5	0
+304	6.5	0
+305	6.5	0
+306	6.5	0
+307	6.5	0
+308	6.5	0
+309	6.5	0
+310	6.5	0
+311	6.5	0
+312	6.5	0
+313	6.5	0
+314	6.5	0
+315	6.5	0
+316	6.5	0
+317	6.5	0
+318	6.5	0
+319	6.5	0
+320	6.5	0
+321	6.5	0
+322	6.5	0
+323	6.5	0
+324	6.5	0
+325	6.5	0
+326	6.5	0
+327	6.5	0
+328	6.5	0
+329	6.5	0
+330	6.5	0
+331	6.5	0
+332	6.5	0
+333	6.5	0
+334	6.5	0
+335	6.5	0
+336	6.5	0
+337	6.5	0
+338	6.5	0
+339	6.5	0
+340	6.5	0
+341	6.5	0
+342	6.5	0
+343	6.5	0
+344	6.5	0
+345	6.5	0
+346	6.5	0
+347	6.5	0
+348	6.5	0
+349	6.5	0.1403
+350	6.5	0.123
+351	6.5	0.1422
+352	6.5	0.49125
+353	6.5	0.96914
+354	6.5	1.3735
+355	6.5	1.4332
+356	6.5	1.3849
+357	6.5	1.2839
+358	6.5	1.2584
+359	6.5	1.3435
+360	6.5	1.7664
+0	7	1.7912
+1	7	2.2774
+2	7	1.9817
+3	7	1.4064
+4	7	0.61726
+5	7	0.94428
+6	7	1.0692
+7	7	1.0671
+8	7	0.94265
+9	7	0.58039
+10	7	0.30679
+11	7	0.26232
+12	7	0.3323
+13	7	0.45765
+14	7	0.53523
+15	7	0.3986
+16	7	0.27581
+17	7	-0.03411
+18	7	-0.40647
+19	7	-0.60336
+20	7	-0.71412
+21	7	-0.81281
+22	7	-0.67776
+23	7	-0.54271
+24	7	-0.40454
+25	7	-0.23174
+26	7	-0.096539
+27	7	0.038116
+28	7	0.16516
+29	7	0.10848
+30	7	0.050032
+31	7	-0.0084127
+32	7	-0.045788
+33	7	0.06472
+34	7	0.42118
+35	7	0.93867
+36	7	1.5331
+37	7	1.5525
+38	7	0.9933
+39	7	0.66919
+40	7	0.41557
+41	7	0.25279
+42	7	0.14917
+43	7	0.054572
+44	7	0.027974
+45	7	-0.0062339
+46	7	-0.013702
+47	7	0.029715
+48	7	0.094291
+49	7	0.094964
+50	7	0
+51	7	0
+52	7	0
+53	7	0
+54	7	0
+55	7	0
+56	7	0
+57	7	0
+58	7	0
+59	7	0
+60	7	0
+61	7	0
+62	7	0
+63	7	0
+64	7	0
+65	7	0
+66	7	0
+67	7	0
+68	7	0
+69	7	0
+70	7	0
+71	7	0
+72	7	0
+73	7	0
+74	7	0
+75	7	0
+76	7	0
+77	7	0
+78	7	0
+79	7	0
+80	7	-0.017628
+81	7	-0.13521
+82	7	0
+83	7	0
+84	7	0
+85	7	0
+86	7	0
+87	7	0
+88	7	0
+89	7	0
+90	7	0
+91	7	0
+92	7	0
+93	7	0
+94	7	0
+95	7	0
+96	7	0
+97	7	0
+98	7	0
+99	7	0
+100	7	-3.8987
+101	7	-0.47225
+102	7	0
+103	7	0
+104	7	0
+105	7	0
+106	7	0
+107	7	0
+108	7	0
+109	7	0
+110	7	0
+111	7	0
+112	7	0
+113	7	0
+114	7	0
+115	7	0
+116	7	0.0020679
+117	7	0.0045349
+118	7	0
+119	7	0
+120	7	0
+121	7	0
+122	7	0
+123	7	0.0025783
+124	7	0.18809
+125	7	0.42557
+126	7	-0.015522
+127	7	0
+128	7	0
+129	7	0
+130	7	0
+131	7	0
+132	7	0
+133	7	0
+134	7	0
+135	7	0
+136	7	0
+137	7	0
+138	7	0
+139	7	0
+140	7	0
+141	7	0
+142	7	0
+143	7	0
+144	7	0
+145	7	0
+146	7	0
+147	7	0
+148	7	0
+149	7	0
+150	7	0
+151	7	0
+152	7	0
+153	7	0
+154	7	0
+155	7	0
+156	7	0
+157	7	0
+158	7	0
+159	7	0
+160	7	0
+161	7	0
+162	7	0
+163	7	0
+164	7	0
+165	7	0
+166	7	0
+167	7	0
+168	7	0
+169	7	0
+170	7	0
+171	7	0
+172	7	0
+173	7	0
+174	7	0
+175	7	0
+176	7	0
+177	7	0
+178	7	0
+179	7	0
+180	7	0
+181	7	0
+182	7	0
+183	7	0
+184	7	0
+185	7	0
+186	7	0
+187	7	0
+188	7	0
+189	7	0
+190	7	0
+191	7	0
+192	7	0
+193	7	0
+194	7	0
+195	7	0
+196	7	0
+197	7	0
+198	7	0
+199	7	0
+200	7	0
+201	7	0
+202	7	0
+203	7	0
+204	7	0
+205	7	0
+206	7	0
+207	7	0
+208	7	0
+209	7	0
+210	7	0
+211	7	0
+212	7	0
+213	7	0
+214	7	0
+215	7	0
+216	7	0
+217	7	0
+218	7	0
+219	7	0
+220	7	0
+221	7	0
+222	7	0
+223	7	0
+224	7	0
+225	7	0
+226	7	0
+227	7	0
+228	7	0
+229	7	0
+230	7	0
+231	7	0
+232	7	0
+233	7	0
+234	7	0
+235	7	0
+236	7	0
+237	7	0
+238	7	0
+239	7	0
+240	7	0
+241	7	0
+242	7	0
+243	7	0
+244	7	0
+245	7	0
+246	7	0
+247	7	0
+248	7	0
+249	7	0
+250	7	0
+251	7	0
+252	7	0
+253	7	0
+254	7	0
+255	7	0
+256	7	0
+257	7	0
+258	7	0
+259	7	0
+260	7	0
+261	7	0
+262	7	0
+263	7	0
+264	7	0
+265	7	0
+266	7	0
+267	7	0
+268	7	0
+269	7	0
+270	7	0
+271	7	0
+272	7	0
+273	7	0
+274	7	0
+275	7	0
+276	7	0
+277	7	0
+278	7	0
+279	7	-0.066618
+280	7	0
+281	7	0
+282	7	0.0073685
+283	7	0.24765
+284	7	0.17868
+285	7	-0.031354
+286	7	-0.16721
+287	7	-0.2062
+288	7	-0.084417
+289	7	0.0004989
+290	7	0.089473
+291	7	0.11647
+292	7	0.16657
+293	7	0.25239
+294	7	0.40177
+295	7	0.90118
+296	7	1.2119
+297	7	1.3375
+298	7	1.1035
+299	7	0.8064
+300	7	0.5511
+301	7	0.47201
+302	7	0.029806
+303	7	0
+304	7	0
+305	7	0
+306	7	0
+307	7	0
+308	7	0
+309	7	0
+310	7	0
+311	7	0
+312	7	0
+313	7	0
+314	7	0
+315	7	0
+316	7	0
+317	7	0
+318	7	0
+319	7	0
+320	7	0
+321	7	0
+322	7	0
+323	7	0
+324	7	0
+325	7	0
+326	7	0
+327	7	0
+328	7	0
+329	7	0
+330	7	0
+331	7	0
+332	7	0
+333	7	0
+334	7	0
+335	7	0
+336	7	0
+337	7	0
+338	7	0
+339	7	0
+340	7	0
+341	7	0
+342	7	0
+343	7	0
+344	7	0
+345	7	0
+346	7	0
+347	7	0
+348	7	0.010829
+349	7	0.35667
+350	7	0.072234
+351	7	0.12717
+352	7	0.46212
+353	7	0.91331
+354	7	0.63121
+355	7	1.0038
+356	7	1.3422
+357	7	1.1934
+358	7	1.2382
+359	7	1.297
+360	7	1.7912
+0	7.5	1.8359
+1	7.5	2.3889
+2	7.5	2.0101
+3	7.5	1.5524
+4	7.5	1.1093
+5	7.5	1.0581
+6	7.5	1.1588
+7	7.5	1.1176
+8	7.5	1.1079
+9	7.5	0.70955
+10	7.5	0.43084
+11	7.5	0.39553
+12	7.5	0.43374
+13	7.5	0.5398
+14	7.5	0.64143
+15	7.5	0.49949
+16	7.5	0.29198
+17	7.5	-0.027964
+18	7.5	-0.4069
+19	7.5	-0.53682
+20	7.5	-0.65593
+21	7.5	-0.76669
+22	7.5	-0.72358
+23	7.5	-0.58854
+24	7.5	-0.42251
+25	7.5	-0.2593
+26	7.5	-0.12007
+27	7.5	0.038385
+28	7.5	0.12719
+29	7.5	0.072994
+30	7.5	0.014549
+31	7.5	-0.041029
+32	7.5	-0.064904
+33	7.5	0.1533
+34	7.5	0.388
+35	7.5	0.80959
+36	7.5	1.4565
+37	7.5	1.7811
+38	7.5	1.286
+39	7.5	0.72013
+40	7.5	0.45491
+41	7.5	0.2316
+42	7.5	0.11043
+43	7.5	0.046336
+44	7.5	0.022405
+45	7.5	-0.0070916
+46	7.5	-0.020578
+47	7.5	0.031986
+48	7.5	0.10227
+49	7.5	0.19684
+50	7.5	0
+51	7.5	0
+52	7.5	0
+53	7.5	0
+54	7.5	0
+55	7.5	0
+56	7.5	0
+57	7.5	0
+58	7.5	0
+59	7.5	0
+60	7.5	0
+61	7.5	0
+62	7.5	0
+63	7.5	0
+64	7.5	0
+65	7.5	0
+66	7.5	0
+67	7.5	0
+68	7.5	0
+69	7.5	0
+70	7.5	0
+71	7.5	0
+72	7.5	0
+73	7.5	0
+74	7.5	0
+75	7.5	0
+76	7.5	0
+77	7.5	0
+78	7.5	0
+79	7.5	0
+80	7.5	0.034933
+81	7.5	-0.075576
+82	7.5	-0.23524
+83	7.5	0
+84	7.5	0
+85	7.5	0
+86	7.5	0
+87	7.5	0
+88	7.5	0
+89	7.5	0
+90	7.5	0
+91	7.5	0
+92	7.5	0
+93	7.5	0
+94	7.5	0
+95	7.5	0
+96	7.5	0
+97	7.5	0
+98	7.5	0
+99	7.5	-0.19323
+100	7.5	-4.6588
+101	7.5	0
+102	7.5	0
+103	7.5	0
+104	7.5	0
+105	7.5	0
+106	7.5	0
+107	7.5	0
+108	7.5	0
+109	7.5	0
+110	7.5	0
+111	7.5	0
+112	7.5	0
+113	7.5	0
+114	7.5	0
+115	7.5	0
+116	7.5	0
+117	7.5	0.016782
+118	7.5	0
+119	7.5	0
+120	7.5	0
+121	7.5	0
+122	7.5	0.01184
+123	7.5	0.01475
+124	7.5	0.0028694
+125	7.5	0.54162
+126	7.5	0.10047
+127	7.5	0
+128	7.5	0
+129	7.5	0
+130	7.5	0
+131	7.5	0
+132	7.5	0
+133	7.5	0
+134	7.5	0
+135	7.5	0
+136	7.5	0
+137	7.5	0
+138	7.5	0
+139	7.5	0
+140	7.5	0
+141	7.5	0
+142	7.5	0
+143	7.5	0
+144	7.5	0
+145	7.5	0
+146	7.5	0
+147	7.5	0
+148	7.5	0
+149	7.5	0
+150	7.5	0
+151	7.5	0
+152	7.5	0
+153	7.5	0
+154	7.5	0
+155	7.5	0
+156	7.5	0
+157	7.5	0
+158	7.5	0
+159	7.5	0
+160	7.5	0
+161	7.5	0
+162	7.5	0
+163	7.5	0
+164	7.5	0
+165	7.5	0
+166	7.5	0
+167	7.5	0
+168	7.5	0
+169	7.5	0
+170	7.5	0
+171	7.5	0
+172	7.5	0
+173	7.5	0
+174	7.5	0
+175	7.5	0
+176	7.5	0
+177	7.5	0
+178	7.5	0
+179	7.5	0
+180	7.5	0
+181	7.5	0
+182	7.5	0
+183	7.5	0
+184	7.5	0
+185	7.5	0
+186	7.5	0
+187	7.5	0
+188	7.5	0
+189	7.5	0
+190	7.5	0
+191	7.5	0
+192	7.5	0
+193	7.5	0
+194	7.5	0
+195	7.5	0
+196	7.5	0
+197	7.5	0
+198	7.5	0
+199	7.5	0
+200	7.5	0
+201	7.5	0
+202	7.5	0
+203	7.5	0
+204	7.5	0
+205	7.5	0
+206	7.5	0
+207	7.5	0
+208	7.5	0
+209	7.5	0
+210	7.5	0
+211	7.5	0
+212	7.5	0
+213	7.5	0
+214	7.5	0
+215	7.5	0
+216	7.5	0
+217	7.5	0
+218	7.5	0
+219	7.5	0
+220	7.5	0
+221	7.5	0
+222	7.5	0
+223	7.5	0
+224	7.5	0
+225	7.5	0
+226	7.5	0
+227	7.5	0
+228	7.5	0
+229	7.5	0
+230	7.5	0
+231	7.5	0
+232	7.5	0
+233	7.5	0
+234	7.5	0
+235	7.5	0
+236	7.5	0
+237	7.5	0
+238	7.5	0
+239	7.5	0
+240	7.5	0
+241	7.5	0
+242	7.5	0
+243	7.5	0
+244	7.5	0
+245	7.5	0
+246	7.5	0
+247	7.5	0
+248	7.5	0
+249	7.5	0
+250	7.5	0
+251	7.5	0
+252	7.5	0
+253	7.5	0
+254	7.5	0
+255	7.5	0
+256	7.5	0
+257	7.5	0
+258	7.5	0
+259	7.5	0
+260	7.5	0
+261	7.5	0
+262	7.5	0
+263	7.5	0
+264	7.5	0
+265	7.5	0
+266	7.5	0
+267	7.5	0
+268	7.5	0
+269	7.5	0
+270	7.5	0
+271	7.5	0
+272	7.5	0
+273	7.5	0
+274	7.5	0
+275	7.5	0
+276	7.5	0
+277	7.5	0
+278	7.5	0
+279	7.5	-0.00059818
+280	7.5	0
+281	7.5	0
+282	7.5	0.21085
+283	7.5	0.39767
+284	7.5	0.2816
+285	7.5	0.028168
+286	7.5	-0.12242
+287	7.5	-0.14598
+288	7.5	-0.034527
+289	7.5	0.084047
+290	7.5	0.19335
+291	7.5	0.18143
+292	7.5	0.14726
+293	7.5	0.27831
+294	7.5	0.52465
+295	7.5	1.1589
+296	7.5	1.6963
+297	7.5	1.8405
+298	7.5	1.0421
+299	7.5	0.80726
+300	7.5	0.43028
+301	7.5	0.1545
+302	7.5	0
+303	7.5	0
+304	7.5	0
+305	7.5	0
+306	7.5	0
+307	7.5	0
+308	7.5	0
+309	7.5	0
+310	7.5	0
+311	7.5	0
+312	7.5	0
+313	7.5	0
+314	7.5	0
+315	7.5	0
+316	7.5	0
+317	7.5	0
+318	7.5	0
+319	7.5	0
+320	7.5	0
+321	7.5	0
+322	7.5	0
+323	7.5	0
+324	7.5	0
+325	7.5	0
+326	7.5	0
+327	7.5	0
+328	7.5	0
+329	7.5	0
+330	7.5	0
+331	7.5	0
+332	7.5	0
+333	7.5	0
+334	7.5	0
+335	7.5	0
+336	7.5	0
+337	7.5	0
+338	7.5	0
+339	7.5	0
+340	7.5	0
+341	7.5	0
+342	7.5	0
+343	7.5	0
+344	7.5	0
+345	7.5	0
+346	7.5	0
+347	7.5	0
+348	7.5	0.35498
+349	7.5	0.34923
+350	7.5	0.03803
+351	7.5	0.12537
+352	7.5	0.43979
+353	7.5	0.83239
+354	7.5	0.49523
+355	7.5	1.1668
+356	7.5	1.2516
+357	7.5	1.1677
+358	7.5	1.1807
+359	7.5	1.2837
+360	7.5	1.8359
+0	8	1.8078
+1	8	2.43
+2	8	1.9325
+3	8	1.6092
+4	8	1.2096
+5	8	1.2143
+6	8	1.397
+7	8	1.3345
+8	8	1.2296
+9	8	0.84365
+10	8	0.54709
+11	8	0.5381
+12	8	0.54888
+13	8	0.64008
+14	8	0.62831
+15	8	0.52729
+16	8	0.29606
+17	8	-0.023878
+18	8	-0.361
+19	8	-0.42657
+20	8	-0.56678
+21	8	-0.70699
+22	8	-0.76941
+23	8	-0.61327
+24	8	-0.44048
+25	8	-0.27645
+26	8	-0.11799
+27	8	0.040466
+28	8	0.089213
+29	8	0.037511
+30	8	-0.020933
+31	8	-0.05991
+32	8	-0.08402
+33	8	0.12465
+34	8	0.22066
+35	8	0.63794
+36	8	1.2592
+37	8	1.61
+38	8	1.4605
+39	8	0.77107
+40	8	0.49425
+41	8	0.23831
+42	8	0.071685
+43	8	0.038812
+44	8	0.019975
+45	8	-0.010032
+46	8	-0.026361
+47	8	0.016114
+48	8	0.11314
+49	8	0.25155
+50	8	0.20886
+51	8	0
+52	8	0
+53	8	0
+54	8	0
+55	8	0
+56	8	0
+57	8	0
+58	8	0
+59	8	0
+60	8	0
+61	8	0
+62	8	0
+63	8	0
+64	8	0
+65	8	0
+66	8	0
+67	8	0
+68	8	0
+69	8	0
+70	8	0
+71	8	0
+72	8	0
+73	8	0
+74	8	0
+75	8	0
+76	8	0
+77	8	0
+78	8	0
+79	8	0
+80	8	0.04513
+81	8	-0.031059
+82	8	0
+83	8	0
+84	8	0
+85	8	0
+86	8	0
+87	8	0
+88	8	0
+89	8	0
+90	8	0
+91	8	0
+92	8	0
+93	8	0
+94	8	0
+95	8	0
+96	8	0
+97	8	0
+98	8	0
+99	8	-4.8354
+100	8	-4.7572
+101	8	0
+102	8	0
+103	8	0
+104	8	0
+105	8	0
+106	8	0
+107	8	0
+108	8	0
+109	8	0
+110	8	0
+111	8	0
+112	8	0
+113	8	0
+114	8	0
+115	8	0
+116	8	0
+117	8	0.02797
+118	8	0
+119	8	0
+120	8	0
+121	8	0
+122	8	0.010242
+123	8	0.23575
+124	8	0.54513
+125	8	0.59494
+126	8	0.14738
+127	8	0
+128	8	0
+129	8	0
+130	8	0
+131	8	0
+132	8	0
+133	8	0
+134	8	0
+135	8	0
+136	8	0
+137	8	0
+138	8	0
+139	8	0
+140	8	0
+141	8	0
+142	8	0
+143	8	0
+144	8	0
+145	8	0
+146	8	0
+147	8	0
+148	8	0
+149	8	0
+150	8	0
+151	8	0
+152	8	0
+153	8	0
+154	8	0
+155	8	0
+156	8	0
+157	8	0
+158	8	0
+159	8	0
+160	8	0
+161	8	0
+162	8	0
+163	8	0
+164	8	0
+165	8	0
+166	8	0
+167	8	0
+168	8	0
+169	8	0
+170	8	0
+171	8	0
+172	8	0
+173	8	0
+174	8	0
+175	8	0
+176	8	0
+177	8	0
+178	8	0
+179	8	0
+180	8	0
+181	8	0
+182	8	0
+183	8	0
+184	8	0
+185	8	0
+186	8	0
+187	8	0
+188	8	0
+189	8	0
+190	8	0
+191	8	0
+192	8	0
+193	8	0
+194	8	0
+195	8	0
+196	8	0
+197	8	0
+198	8	0
+199	8	0
+200	8	0
+201	8	0
+202	8	0
+203	8	0
+204	8	0
+205	8	0
+206	8	0
+207	8	0
+208	8	0
+209	8	0
+210	8	0
+211	8	0
+212	8	0
+213	8	0
+214	8	0
+215	8	0
+216	8	0
+217	8	0
+218	8	0
+219	8	0
+220	8	0
+221	8	0
+222	8	0
+223	8	0
+224	8	0
+225	8	0
+226	8	0
+227	8	0
+228	8	0
+229	8	0
+230	8	0
+231	8	0
+232	8	0
+233	8	0
+234	8	0
+235	8	0
+236	8	0
+237	8	0
+238	8	0
+239	8	0
+240	8	0
+241	8	0
+242	8	0
+243	8	0
+244	8	0
+245	8	0
+246	8	0
+247	8	0
+248	8	0
+249	8	0
+250	8	0
+251	8	0
+252	8	0
+253	8	0
+254	8	0
+255	8	0
+256	8	0
+257	8	0
+258	8	0
+259	8	0
+260	8	0
+261	8	0
+262	8	0
+263	8	0
+264	8	0
+265	8	0
+266	8	0
+267	8	0
+268	8	0
+269	8	0
+270	8	0
+271	8	0
+272	8	0
+273	8	0
+274	8	0
+275	8	0
+276	8	0
+277	8	0
+278	8	0
+279	8	0
+280	8	0
+281	8	0
+282	8	0.30004
+283	8	0.49412
+284	8	0.3862
+285	8	0.13382
+286	8	-0.068364
+287	8	-0.077793
+288	8	0.01624
+289	8	0.17254
+290	8	0.29276
+291	8	0.24638
+292	8	0.17873
+293	8	0.27452
+294	8	0.68849
+295	8	1.2615
+296	8	2.0609
+297	8	2.8494
+298	8	2.2025
+299	8	0.73828
+300	8	0.27688
+301	8	0.049235
+302	8	0
+303	8	0
+304	8	0
+305	8	0
+306	8	0
+307	8	0
+308	8	0
+309	8	0
+310	8	0
+311	8	0
+312	8	0
+313	8	0
+314	8	0
+315	8	0
+316	8	0
+317	8	0
+318	8	0
+319	8	0
+320	8	0
+321	8	0
+322	8	0
+323	8	0
+324	8	0
+325	8	0
+326	8	0
+327	8	0
+328	8	0
+329	8	0
+330	8	0
+331	8	0
+332	8	0
+333	8	0
+334	8	0
+335	8	0
+336	8	0
+337	8	0
+338	8	0
+339	8	0
+340	8	0
+341	8	0
+342	8	0
+343	8	0
+344	8	0
+345	8	0
+346	8	0
+347	8	0.35018
+348	8	0.5832
+349	8	0.25479
+350	8	0.037771
+351	8	0.13755
+352	8	0.47692
+353	8	0.8069
+354	8	1.0564
+355	8	1.1719
+356	8	1.1556
+357	8	1.1397
+358	8	1.1571
+359	8	1.2589
+360	8	1.8078
+0	8.5	1.6604
+1	8.5	1.912
+2	8.5	1.8261
+3	8.5	1.5205
+4	8.5	1.2525
+5	8.5	1.3971
+6	8.5	1.5368
+7	8.5	1.5542
+8	8.5	1.3512
+9	8.5	0.88142
+10	8.5	0.65677
+11	8.5	0.61945
+12	8.5	0.57377
+13	8.5	0.716
+14	8.5	0.61519
+15	8.5	0.51275
+16	8.5	0.27787
+17	8.5	-0.019792
+18	8.5	-0.28611
+19	8.5	-0.33756
+20	8.5	-0.45652
+21	8.5	-0.59673
+22	8.5	-0.74027
+23	8.5	-0.54895
+24	8.5	-0.35
+25	8.5	-0.27437
+26	8.5	-0.11591
+27	8.5	0.042546
+28	8.5	0.05124
+29	8.5	0.002029
+30	8.5	-0.045674
+31	8.5	-0.07879
+32	8.5	-0.10412
+33	8.5	-0.024501
+34	8.5	0.035054
+35	8.5	0.4311
+36	8.5	1.0357
+37	8.5	1.3197
+38	8.5	1.4378
+39	8.5	0.87498
+40	8.5	0.53389
+41	8.5	0.2569
+42	8.5	0.07217
+43	8.5	0.03252
+44	8.5	0.013466
+45	8.5	-0.010615
+46	8.5	-0.024013
+47	8.5	0.028018
+48	8.5	0.2216
+49	8.5	0.41199
+50	8.5	0.33896
+51	8.5	0
+52	8.5	0
+53	8.5	0
+54	8.5	0
+55	8.5	0
+56	8.5	0
+57	8.5	0
+58	8.5	0
+59	8.5	0
+60	8.5	0
+61	8.5	0
+62	8.5	0
+63	8.5	0
+64	8.5	0
+65	8.5	0
+66	8.5	0
+67	8.5	0
+68	8.5	0
+69	8.5	0
+70	8.5	0
+71	8.5	0
+72	8.5	0
+73	8.5	0
+74	8.5	0
+75	8.5	0
+76	8.5	0
+77	8.5	-0.791
+78	8.5	-0.68601
+79	8.5	0
+80	8.5	0.019118
+81	8.5	0.0039849
+82	8.5	0
+83	8.5	0
+84	8.5	0
+85	8.5	0
+86	8.5	0
+87	8.5	0
+88	8.5	0
+89	8.5	0
+90	8.5	0
+91	8.5	0
+92	8.5	0
+93	8.5	0
+94	8.5	0
+95	8.5	0
+96	8.5	0
+97	8.5	0
+98	8.5	-1.5408
+99	8.5	-7.84
+100	8.5	-2.6568
+101	8.5	0
+102	8.5	0
+103	8.5	0
+104	8.5	0
+105	8.5	-0.52952
+106	8.5	0
+107	8.5	0
+108	8.5	0
+109	8.5	0
+110	8.5	0
+111	8.5	0
+112	8.5	0
+113	8.5	0
+114	8.5	0
+115	8.5	0
+116	8.5	0
+117	8.5	0.015837
+118	8.5	0
+119	8.5	0
+120	8.5	0
+121	8.5	0
+122	8.5	0
+123	8.5	0.063427
+124	8.5	0.043008
+125	8.5	0.55978
+126	8.5	0.14745
+127	8.5	0
+128	8.5	0
+129	8.5	0
+130	8.5	0
+131	8.5	0
+132	8.5	0
+133	8.5	0
+134	8.5	0
+135	8.5	0
+136	8.5	0
+137	8.5	0
+138	8.5	0
+139	8.5	0
+140	8.5	0
+141	8.5	0
+142	8.5	0
+143	8.5	0
+144	8.5	0
+145	8.5	0
+146	8.5	0
+147	8.5	0
+148	8.5	0
+149	8.5	0
+150	8.5	0
+151	8.5	0
+152	8.5	0
+153	8.5	0
+154	8.5	0
+155	8.5	0
+156	8.5	0
+157	8.5	0
+158	8.5	0
+159	8.5	0
+160	8.5	0
+161	8.5	0
+162	8.5	0
+163	8.5	0
+164	8.5	0
+165	8.5	0
+166	8.5	0
+167	8.5	0
+168	8.5	0
+169	8.5	0
+170	8.5	0
+171	8.5	0
+172	8.5	0
+173	8.5	0
+174	8.5	0
+175	8.5	0
+176	8.5	0
+177	8.5	0
+178	8.5	0
+179	8.5	0
+180	8.5	0
+181	8.5	0
+182	8.5	0
+183	8.5	0
+184	8.5	0
+185	8.5	0
+186	8.5	0
+187	8.5	0
+188	8.5	0
+189	8.5	0
+190	8.5	0
+191	8.5	0
+192	8.5	0
+193	8.5	0
+194	8.5	0
+195	8.5	0
+196	8.5	0
+197	8.5	0
+198	8.5	0
+199	8.5	0
+200	8.5	0
+201	8.5	0
+202	8.5	0
+203	8.5	0
+204	8.5	0
+205	8.5	0
+206	8.5	0
+207	8.5	0
+208	8.5	0
+209	8.5	0
+210	8.5	0
+211	8.5	0
+212	8.5	0
+213	8.5	0
+214	8.5	0
+215	8.5	0
+216	8.5	0
+217	8.5	0
+218	8.5	0
+219	8.5	0
+220	8.5	0
+221	8.5	0
+222	8.5	0
+223	8.5	0
+224	8.5	0
+225	8.5	0
+226	8.5	0
+227	8.5	0
+228	8.5	0
+229	8.5	0
+230	8.5	0
+231	8.5	0
+232	8.5	0
+233	8.5	0
+234	8.5	0
+235	8.5	0
+236	8.5	0
+237	8.5	0
+238	8.5	0
+239	8.5	0
+240	8.5	0
+241	8.5	0
+242	8.5	0
+243	8.5	0
+244	8.5	0
+245	8.5	0
+246	8.5	0
+247	8.5	0
+248	8.5	0
+249	8.5	0
+250	8.5	0
+251	8.5	0
+252	8.5	0
+253	8.5	0
+254	8.5	0
+255	8.5	0
+256	8.5	0
+257	8.5	0
+258	8.5	0
+259	8.5	0
+260	8.5	0
+261	8.5	0
+262	8.5	0
+263	8.5	0
+264	8.5	0
+265	8.5	0
+266	8.5	0
+267	8.5	0
+268	8.5	0
+269	8.5	0
+270	8.5	0
+271	8.5	0
+272	8.5	0
+273	8.5	0
+274	8.5	0
+275	8.5	0
+276	8.5	0.017332
+277	8.5	0.26206
+278	8.5	0
+279	8.5	-0.11507
+280	8.5	-0.14875
+281	8.5	0.028737
+282	8.5	0.37292
+283	8.5	0
+284	8.5	0.46532
+285	8.5	0.23065
+286	8.5	0.038671
+287	8.5	-0.011332
+288	8.5	0.02565
+289	8.5	0.26299
+290	8.5	0.41606
+291	8.5	0.36241
+292	8.5	0.23798
+293	8.5	0.26098
+294	8.5	0.53481
+295	8.5	1.1323
+296	8.5	1.759
+297	8.5	3.2682
+298	8.5	2.91
+299	8.5	0.73985
+300	8.5	0.0416
+301	8.5	0
+302	8.5	0
+303	8.5	0
+304	8.5	0
+305	8.5	0
+306	8.5	0
+307	8.5	0
+308	8.5	0
+309	8.5	0
+310	8.5	0
+311	8.5	0
+312	8.5	0
+313	8.5	0
+314	8.5	0
+315	8.5	0
+316	8.5	0
+317	8.5	0
+318	8.5	0
+319	8.5	0
+320	8.5	0
+321	8.5	0
+322	8.5	0
+323	8.5	0
+324	8.5	0
+325	8.5	0
+326	8.5	0
+327	8.5	0
+328	8.5	0
+329	8.5	0
+330	8.5	0
+331	8.5	0
+332	8.5	0
+333	8.5	0
+334	8.5	0
+335	8.5	0
+336	8.5	0
+337	8.5	0
+338	8.5	0
+339	8.5	0
+340	8.5	0
+341	8.5	0
+342	8.5	0
+343	8.5	0
+344	8.5	0
+345	8.5	0
+346	8.5	0
+347	8.5	0.49354
+348	8.5	0.74527
+349	8.5	0.23051
+350	8.5	0.06755
+351	8.5	0.12282
+352	8.5	0.44419
+353	8.5	0.75584
+354	8.5	1.0055
+355	8.5	1.0615
+356	8.5	1.1046
+357	8.5	1.1522
+358	8.5	1.2076
+359	8.5	1.2979
+360	8.5	1.6604
+0	9	1.5438
+1	9	1.7495
+2	9	1.662
+3	9	1.3824
+4	9	1.3114
+5	9	1.5222
+6	9	1.6485
+7	9	1.5811
+8	9	1.2536
+9	9	0.90833
+10	9	0.6537
+11	9	0.63501
+12	9	0.5502
+13	9	0.67402
+14	9	0.60207
+15	9	0.48448
+16	9	0.25447
+17	9	-0.033824
+18	9	-0.21122
+19	9	-0.26267
+20	9	-0.34626
+21	9	-0.48647
+22	9	-0.63791
+23	9	-0.43897
+24	9	-0.26389
+25	9	-0.22958
+26	9	-0.11383
+27	9	0.044627
+28	9	0.013267
+29	9	-0.031437
+30	9	-0.053561
+31	9	-0.069277
+32	9	-0.099719
+33	9	-0.1352
+34	9	0.11539
+35	9	0.498
+36	9	0.91079
+37	9	1.1693
+38	9	1.1903
+39	9	0.99247
+40	9	0.57937
+41	9	0.27461
+42	9	0.087059
+43	9	0.036943
+44	9	0.027407
+45	9	-0.015948
+46	9	-0.027539
+47	9	0.036658
+48	9	0.31951
+49	9	0.62904
+50	9	0.46103
+51	9	0.064165
+52	9	0
+53	9	0
+54	9	0
+55	9	0
+56	9	0
+57	9	0
+58	9	0
+59	9	0
+60	9	0
+61	9	0
+62	9	0
+63	9	0
+64	9	0
+65	9	0
+66	9	0
+67	9	0
+68	9	0
+69	9	0
+70	9	0
+71	9	0
+72	9	0
+73	9	0
+74	9	0
+75	9	0
+76	9	0
+77	9	-1.4757
+78	9	-0.89191
+79	9	0
+80	9	0.019944
+81	9	0.012414
+82	9	0
+83	9	0
+84	9	0
+85	9	0
+86	9	0
+87	9	0
+88	9	0
+89	9	0
+90	9	0
+91	9	0
+92	9	0
+93	9	0
+94	9	0
+95	9	0
+96	9	0
+97	9	0
+98	9	-0.43202
+99	9	-5.3686
+100	9	-1.486
+101	9	0
+102	9	0
+103	9	0
+104	9	-0.14206
+105	9	-1.3586
+106	9	-0.80138
+107	9	0
+108	9	0
+109	9	0
+110	9	0
+111	9	0
+112	9	0
+113	9	0
+114	9	0
+115	9	0
+116	9	0
+117	9	0.003587
+118	9	0
+119	9	0
+120	9	0
+121	9	0
+122	9	0
+123	9	0.002844
+124	9	0.045378
+125	9	0.09857
+126	9	0.12818
+127	9	0
+128	9	0
+129	9	0
+130	9	0
+131	9	0
+132	9	0
+133	9	0
+134	9	0
+135	9	0
+136	9	0
+137	9	0
+138	9	0
+139	9	0
+140	9	0
+141	9	0
+142	9	0
+143	9	0
+144	9	0
+145	9	0
+146	9	0
+147	9	0
+148	9	0
+149	9	0
+150	9	0
+151	9	0
+152	9	0
+153	9	0
+154	9	0
+155	9	0
+156	9	0
+157	9	0
+158	9	0
+159	9	0
+160	9	0
+161	9	0
+162	9	0
+163	9	0
+164	9	0
+165	9	0
+166	9	0
+167	9	0
+168	9	0
+169	9	0
+170	9	0
+171	9	0
+172	9	0
+173	9	0
+174	9	0
+175	9	0
+176	9	0
+177	9	0
+178	9	0
+179	9	0
+180	9	0
+181	9	0
+182	9	0
+183	9	0
+184	9	0
+185	9	0
+186	9	0
+187	9	0
+188	9	0
+189	9	0
+190	9	0
+191	9	0
+192	9	0
+193	9	0
+194	9	0
+195	9	0
+196	9	0
+197	9	0
+198	9	0
+199	9	0
+200	9	0
+201	9	0
+202	9	0
+203	9	0
+204	9	0
+205	9	0
+206	9	0
+207	9	0
+208	9	0
+209	9	0
+210	9	0
+211	9	0
+212	9	0
+213	9	0
+214	9	0
+215	9	0
+216	9	0
+217	9	0
+218	9	0
+219	9	0
+220	9	0
+221	9	0
+222	9	0
+223	9	0
+224	9	0
+225	9	0
+226	9	0
+227	9	0
+228	9	0
+229	9	0
+230	9	0
+231	9	0
+232	9	0
+233	9	0
+234	9	0
+235	9	0
+236	9	0
+237	9	0
+238	9	0
+239	9	0
+240	9	0
+241	9	0
+242	9	0
+243	9	0
+244	9	0
+245	9	0
+246	9	0
+247	9	0
+248	9	0
+249	9	0
+250	9	0
+251	9	0
+252	9	0
+253	9	0
+254	9	0
+255	9	0
+256	9	0
+257	9	0
+258	9	0
+259	9	0
+260	9	0
+261	9	0
+262	9	0
+263	9	0
+264	9	0
+265	9	0
+266	9	0
+267	9	0
+268	9	0
+269	9	0
+270	9	0
+271	9	0
+272	9	0
+273	9	0
+274	9	0
+275	9	0
+276	9	0.036815
+277	9	0.14819
+278	9	0
+279	9	-0.068265
+280	9	-0.10404
+281	9	0.10033
+282	9	0.26027
+283	9	0
+284	9	0.24348
+285	9	0.33933
+286	9	0.1064
+287	9	0.058772
+288	9	0.04431
+289	9	0.30744
+290	9	0.52884
+291	9	0.47724
+292	9	0.28545
+293	9	0.23177
+294	9	0.40547
+295	9	0.72366
+296	9	1.3194
+297	9	2.9745
+298	9	2.7597
+299	9	0.69755
+300	9	0
+301	9	0
+302	9	0
+303	9	0
+304	9	0
+305	9	0
+306	9	0
+307	9	0
+308	9	0
+309	9	0
+310	9	0
+311	9	0
+312	9	0
+313	9	0
+314	9	0
+315	9	0
+316	9	0
+317	9	0
+318	9	0
+319	9	0
+320	9	0
+321	9	0
+322	9	0
+323	9	0
+324	9	0
+325	9	0
+326	9	0
+327	9	0
+328	9	0
+329	9	0
+330	9	0
+331	9	0
+332	9	0
+333	9	0
+334	9	0
+335	9	0
+336	9	0
+337	9	0
+338	9	0
+339	9	0
+340	9	0
+341	9	0
+342	9	0
+343	9	0
+344	9	0
+345	9	0
+346	9	0
+347	9	0.55708
+348	9	0.75613
+349	9	0.24279
+350	9	0.029084
+351	9	0.1374
+352	9	0.41959
+353	9	0.70477
+354	9	0.95679
+355	9	1.0163
+356	9	1.0823
+357	9	1.1583
+358	9	1.2639
+359	9	1.3524
+360	9	1.5438
+0	9.5	1.4541
+1	9.5	1.7576
+2	9.5	1.5605
+3	9.5	1.3039
+4	9.5	1.2627
+5	9.5	1.5774
+6	9.5	1.7361
+7	9.5	1.5907
+8	9.5	1.2361
+9	9.5	0.91888
+10	9.5	0.66293
+11	9.5	0.61741
+12	9.5	0.54335
+13	9.5	0.59843
+14	9.5	0.58896
+15	9.5	0.4475
+16	9.5	0.24297
+17	9.5	-0.037122
+18	9.5	-0.19079
+19	9.5	-0.18778
+20	9.5	-0.23924
+21	9.5	-0.37621
+22	9.5	-0.52793
+23	9.5	-0.32899
+24	9.5	-0.20582
+25	9.5	-0.17151
+26	9.5	-0.11175
+27	9.5	0.015055
+28	9.5	-0.024706
+29	9.5	-0.016001
+30	9.5	-0.040054
+31	9.5	-0.059834
+32	9.5	-0.087213
+33	9.5	-0.10553
+34	9.5	0.10014
+35	9.5	0.48829
+36	9.5	0.87262
+37	9.5	0.98999
+38	9.5	1.1083
+39	9.5	1.0304
+40	9.5	0.61558
+41	9.5	0.28785
+42	9.5	0.074699
+43	9.5	0.018679
+44	9.5	0.014268
+45	9.5	-0.018575
+46	9.5	-0.031696
+47	9.5	0.089121
+48	9.5	0.51417
+49	9.5	0.87687
+50	9.5	0.65606
+51	9.5	0.031086
+52	9.5	0
+53	9.5	0
+54	9.5	0
+55	9.5	0
+56	9.5	0
+57	9.5	0
+58	9.5	0
+59	9.5	0
+60	9.5	0
+61	9.5	0
+62	9.5	0
+63	9.5	0
+64	9.5	0
+65	9.5	0
+66	9.5	0
+67	9.5	0
+68	9.5	0
+69	9.5	0
+70	9.5	0
+71	9.5	0
+72	9.5	0
+73	9.5	0
+74	9.5	0
+75	9.5	0
+76	9.5	0
+77	9.5	-1.544
+78	9.5	-1.6438
+79	9.5	-0.12369
+80	9.5	0.016503
+81	9.5	0
+82	9.5	0
+83	9.5	0
+84	9.5	0
+85	9.5	0
+86	9.5	0
+87	9.5	0
+88	9.5	0
+89	9.5	0
+90	9.5	0
+91	9.5	0
+92	9.5	0
+93	9.5	0
+94	9.5	0
+95	9.5	0
+96	9.5	0
+97	9.5	0
+98	9.5	0
+99	9.5	-6.9968
+100	9.5	0
+101	9.5	0
+102	9.5	0
+103	9.5	0
+104	9.5	0
+105	9.5	-2.0805
+106	9.5	-1.6065
+107	9.5	-0.64836
+108	9.5	0
+109	9.5	0
+110	9.5	0
+111	9.5	0
+112	9.5	0
+113	9.5	0
+114	9.5	0
+115	9.5	0
+116	9.5	0
+117	9.5	0
+118	9.5	0
+119	9.5	0
+120	9.5	0
+121	9.5	0
+122	9.5	0
+123	9.5	-0.0043946
+124	9.5	0.023041
+125	9.5	0.002345
+126	9.5	0
+127	9.5	0
+128	9.5	0
+129	9.5	0
+130	9.5	0
+131	9.5	0
+132	9.5	0
+133	9.5	0
+134	9.5	0
+135	9.5	0
+136	9.5	0
+137	9.5	0
+138	9.5	0
+139	9.5	0
+140	9.5	0
+141	9.5	0
+142	9.5	0
+143	9.5	0
+144	9.5	0
+145	9.5	0
+146	9.5	0
+147	9.5	0
+148	9.5	0
+149	9.5	0
+150	9.5	0
+151	9.5	0
+152	9.5	0
+153	9.5	0
+154	9.5	0
+155	9.5	0
+156	9.5	0
+157	9.5	0
+158	9.5	0
+159	9.5	0
+160	9.5	0
+161	9.5	0
+162	9.5	0
+163	9.5	0
+164	9.5	0
+165	9.5	0
+166	9.5	0
+167	9.5	0
+168	9.5	0
+169	9.5	0
+170	9.5	0
+171	9.5	0
+172	9.5	0
+173	9.5	0
+174	9.5	0
+175	9.5	0
+176	9.5	0
+177	9.5	0
+178	9.5	0
+179	9.5	0
+180	9.5	0
+181	9.5	0
+182	9.5	0
+183	9.5	0
+184	9.5	0
+185	9.5	0
+186	9.5	0
+187	9.5	0
+188	9.5	0
+189	9.5	0
+190	9.5	0
+191	9.5	0
+192	9.5	0
+193	9.5	0
+194	9.5	0
+195	9.5	0
+196	9.5	0
+197	9.5	0
+198	9.5	0
+199	9.5	0
+200	9.5	0
+201	9.5	0
+202	9.5	0
+203	9.5	0
+204	9.5	0
+205	9.5	0
+206	9.5	0
+207	9.5	0
+208	9.5	0
+209	9.5	0
+210	9.5	0
+211	9.5	0
+212	9.5	0
+213	9.5	0
+214	9.5	0
+215	9.5	0
+216	9.5	0
+217	9.5	0
+218	9.5	0
+219	9.5	0
+220	9.5	0
+221	9.5	0
+222	9.5	0
+223	9.5	0
+224	9.5	0
+225	9.5	0
+226	9.5	0
+227	9.5	0
+228	9.5	0
+229	9.5	0
+230	9.5	0
+231	9.5	0
+232	9.5	0
+233	9.5	0
+234	9.5	0
+235	9.5	0
+236	9.5	0
+237	9.5	0
+238	9.5	0
+239	9.5	0
+240	9.5	0
+241	9.5	0
+242	9.5	0
+243	9.5	0
+244	9.5	0
+245	9.5	0
+246	9.5	0
+247	9.5	0
+248	9.5	0
+249	9.5	0
+250	9.5	0
+251	9.5	0
+252	9.5	0
+253	9.5	0
+254	9.5	0
+255	9.5	0
+256	9.5	0
+257	9.5	0
+258	9.5	0
+259	9.5	0
+260	9.5	0
+261	9.5	0
+262	9.5	0
+263	9.5	0
+264	9.5	0
+265	9.5	0
+266	9.5	0
+267	9.5	0
+268	9.5	0
+269	9.5	0
+270	9.5	0
+271	9.5	0
+272	9.5	0
+273	9.5	0
+274	9.5	0
+275	9.5	0.43215
+276	9.5	0.57207
+277	9.5	0.12628
+278	9.5	0.00054804
+279	9.5	0
+280	9.5	0
+281	9.5	0.063438
+282	9.5	0
+283	9.5	0
+284	9.5	0.0065233
+285	9.5	0.37507
+286	9.5	0.18749
+287	9.5	0.08402
+288	9.5	0.064035
+289	9.5	0.19716
+290	9.5	0.59164
+291	9.5	0.59545
+292	9.5	0.32347
+293	9.5	0.21794
+294	9.5	0.24258
+295	9.5	0.40388
+296	9.5	0.74256
+297	9.5	1.926
+298	9.5	1.8878
+299	9.5	0.28086
+300	9.5	0
+301	9.5	0
+302	9.5	0
+303	9.5	0
+304	9.5	0
+305	9.5	0
+306	9.5	0
+307	9.5	0
+308	9.5	0
+309	9.5	0
+310	9.5	0
+311	9.5	0
+312	9.5	0
+313	9.5	0
+314	9.5	0
+315	9.5	0
+316	9.5	0
+317	9.5	0
+318	9.5	0
+319	9.5	0
+320	9.5	0
+321	9.5	0
+322	9.5	0
+323	9.5	0
+324	9.5	0
+325	9.5	0
+326	9.5	0
+327	9.5	0
+328	9.5	0
+329	9.5	0
+330	9.5	0
+331	9.5	0
+332	9.5	0
+333	9.5	0
+334	9.5	0
+335	9.5	0
+336	9.5	0
+337	9.5	0
+338	9.5	0
+339	9.5	0
+340	9.5	0
+341	9.5	0
+342	9.5	0
+343	9.5	0
+344	9.5	0
+345	9.5	0
+346	9.5	0
+347	9.5	0.70238
+348	9.5	0.78736
+349	9.5	0.29101
+350	9.5	0.040417
+351	9.5	0.19171
+352	9.5	0.42134
+353	9.5	0.7131
+354	9.5	0.89111
+355	9.5	1.0061
+356	9.5	1.1204
+357	9.5	1.2224
+358	9.5	1.3202
+359	9.5	1.4068
+360	9.5	1.4541
+0	10	1.4214
+1	10	1.7413
+2	10	1.4885
+3	10	1.2326
+4	10	1.1989
+5	10	1.4956
+6	10	1.671
+7	10	1.5737
+8	10	1.2103
+9	10	0.93425
+10	10	0.67216
+11	10	0.59375
+12	10	0.53651
+13	10	0.55437
+14	10	0.56497
+15	10	0.43352
+16	10	0.22733
+17	10	-0.046185
+18	10	-0.23835
+19	10	-0.17064
+20	10	-0.16435
+21	10	-0.26595
+22	10	-0.41795
+23	10	-0.21901
+24	10	-0.14775
+25	10	-0.11344
+26	10	-0.079124
+27	10	-0.022918
+28	10	-0.0047075
+29	10	0.0013793
+30	10	-0.004932
+31	10	-0.032613
+32	10	-0.051009
+33	10	-0.069021
+34	10	0.077901
+35	10	0.47421
+36	10	0.83794
+37	10	0.94888
+38	10	1.0716
+39	10	1.0039
+40	10	0.60557
+41	10	0.26402
+42	10	0.080295
+43	10	0.023115
+44	10	0.01638
+45	10	-0.012991
+46	10	-0.036351
+47	10	0.090208
+48	10	0.80292
+49	10	1.2113
+50	10	0.85847
+51	10	0.20495
+52	10	0
+53	10	0
+54	10	0
+55	10	0
+56	10	0
+57	10	0
+58	10	0
+59	10	0
+60	10	0
+61	10	0
+62	10	0
+63	10	0
+64	10	0
+65	10	0
+66	10	0
+67	10	0
+68	10	0
+69	10	0
+70	10	0
+71	10	0
+72	10	0
+73	10	0
+74	10	0
+75	10	0
+76	10	-0.17696
+77	10	-1.7185
+78	10	-1.7065
+79	10	-0.59346
+80	10	0
+81	10	0
+82	10	0
+83	10	0
+84	10	0
+85	10	0
+86	10	0
+87	10	0
+88	10	0
+89	10	0
+90	10	0
+91	10	0
+92	10	0
+93	10	0
+94	10	0
+95	10	0
+96	10	0
+97	10	0
+98	10	0
+99	10	-2.6948
+100	10	0
+101	10	0
+102	10	0
+103	10	0
+104	10	-0.9099
+105	10	-1.6143
+106	10	-2.2881
+107	10	-1.1414
+108	10	0
+109	10	0
+110	10	0
+111	10	0
+112	10	0
+113	10	0
+114	10	0
+115	10	0
+116	10	0
+117	10	0
+118	10	0
+119	10	0
+120	10	0
+121	10	0
+122	10	0
+123	10	0.019786
+124	10	0.10234
+125	10	0.024771
+126	10	0
+127	10	0
+128	10	0
+129	10	0
+130	10	0
+131	10	0
+132	10	0
+133	10	0
+134	10	0
+135	10	0
+136	10	0
+137	10	0
+138	10	0
+139	10	0
+140	10	0
+141	10	0
+142	10	0
+143	10	0
+144	10	0
+145	10	0
+146	10	0
+147	10	0
+148	10	0
+149	10	0
+150	10	0
+151	10	0
+152	10	0
+153	10	0
+154	10	0
+155	10	0
+156	10	0
+157	10	0
+158	10	0
+159	10	0
+160	10	0
+161	10	0
+162	10	0
+163	10	0
+164	10	0
+165	10	0
+166	10	0
+167	10	0
+168	10	0
+169	10	0
+170	10	0
+171	10	0
+172	10	0
+173	10	0
+174	10	0
+175	10	0
+176	10	0
+177	10	0
+178	10	0
+179	10	0
+180	10	0
+181	10	0
+182	10	0
+183	10	0
+184	10	0
+185	10	0
+186	10	0
+187	10	0
+188	10	0
+189	10	0
+190	10	0
+191	10	0
+192	10	0
+193	10	0
+194	10	0
+195	10	0
+196	10	0
+197	10	0
+198	10	0
+199	10	0
+200	10	0
+201	10	0
+202	10	0
+203	10	0
+204	10	0
+205	10	0
+206	10	0
+207	10	0
+208	10	0
+209	10	0
+210	10	0
+211	10	0
+212	10	0
+213	10	0
+214	10	0
+215	10	0
+216	10	0
+217	10	0
+218	10	0
+219	10	0
+220	10	0
+221	10	0
+222	10	0
+223	10	0
+224	10	0
+225	10	0
+226	10	0
+227	10	0
+228	10	0
+229	10	0
+230	10	0
+231	10	0
+232	10	0
+233	10	0
+234	10	0
+235	10	0
+236	10	0
+237	10	0
+238	10	0
+239	10	0
+240	10	0
+241	10	0
+242	10	0
+243	10	0
+244	10	0
+245	10	0
+246	10	0
+247	10	0
+248	10	0
+249	10	0
+250	10	0
+251	10	0
+252	10	0
+253	10	0
+254	10	0
+255	10	0
+256	10	0
+257	10	0
+258	10	0
+259	10	0
+260	10	0
+261	10	0
+262	10	0
+263	10	0
+264	10	0
+265	10	0
+266	10	0
+267	10	0
+268	10	0
+269	10	0
+270	10	0
+271	10	0
+272	10	0
+273	10	0
+274	10	0.26385
+275	10	0.43482
+276	10	0.67305
+277	10	0.1344
+278	10	0.0056619
+279	10	0
+280	10	0
+281	10	0
+282	10	0
+283	10	0
+284	10	0.18293
+285	10	0.38711
+286	10	0.27043
+287	10	0.12106
+288	10	0.0392
+289	10	0.19465
+290	10	0.60188
+291	10	0.64692
+292	10	0.33965
+293	10	0.2355
+294	10	0.22508
+295	10	0.15111
+296	10	0.36041
+297	10	0.8035
+298	10	0.57588
+299	10	0.039692
+300	10	0
+301	10	0
+302	10	0
+303	10	0
+304	10	0
+305	10	0
+306	10	0
+307	10	0
+308	10	0
+309	10	0
+310	10	0
+311	10	0
+312	10	0
+313	10	0
+314	10	0
+315	10	0
+316	10	0
+317	10	0
+318	10	0
+319	10	0
+320	10	0
+321	10	0
+322	10	0
+323	10	0
+324	10	0
+325	10	0
+326	10	0
+327	10	0
+328	10	0
+329	10	0
+330	10	0
+331	10	0
+332	10	0
+333	10	0
+334	10	0
+335	10	0
+336	10	0
+337	10	0
+338	10	0
+339	10	0
+340	10	0
+341	10	0
+342	10	0
+343	10	0
+344	10	0
+345	10	0
+346	10	0.5001
+347	10	1.1396
+348	10	0.83988
+349	10	0.3426
+350	10	0.096798
+351	10	0.22955
+352	10	0.44687
+353	10	0.72861
+354	10	0.88102
+355	10	1.0073
+356	10	1.1214
+357	10	1.2351
+358	10	1.2981
+359	10	1.484
+360	10	1.4214
+0	10.5	1.5461
+1	10.5	1.6522
+2	10.5	1.5133
+3	10.5	1.1324
+4	10.5	1.1221
+5	10.5	1.4064
+6	10.5	1.479
+7	10.5	1.4711
+8	10.5	1.1939
+9	10.5	0.94153
+10	10.5	0.68139
+11	10.5	0.58624
+12	10.5	0.50377
+13	10.5	0.508
+14	10.5	0.53059
+15	10.5	0.41097
+16	10.5	0.21168
+17	10.5	-0.057983
+18	10.5	-0.21339
+19	10.5	-0.18058
+20	10.5	-0.15049
+21	10.5	-0.15906
+22	10.5	-0.30797
+23	10.5	-0.12399
+24	10.5	-0.089681
+25	10.5	-0.055367
+26	10.5	-0.021054
+27	10.5	-0.0049137
+28	10.5	0.016207
+29	10.5	0.01876
+30	10.5	0.021313
+31	10.5	0.0035909
+32	10.5	-0.014805
+33	10.5	-0.032511
+34	10.5	0.14546
+35	10.5	0.52089
+36	10.5	0.921
+37	10.5	0.97335
+38	10.5	1.0482
+39	10.5	0.94843
+40	10.5	0.55833
+41	10.5	0.21186
+42	10.5	0.052739
+43	10.5	0.016579
+44	10.5	0.014333
+45	10.5	-0.0058456
+46	10.5	-0.031132
+47	10.5	0.10806
+48	10.5	0.75772
+49	10.5	1.1708
+50	10.5	0.99347
+51	10.5	0.24994
+52	10.5	0
+53	10.5	0
+54	10.5	0
+55	10.5	0
+56	10.5	0
+57	10.5	0
+58	10.5	0
+59	10.5	0
+60	10.5	0
+61	10.5	0
+62	10.5	0
+63	10.5	0
+64	10.5	0
+65	10.5	0
+66	10.5	0
+67	10.5	0
+68	10.5	0
+69	10.5	0
+70	10.5	0
+71	10.5	0
+72	10.5	0
+73	10.5	0
+74	10.5	0
+75	10.5	0
+76	10.5	-0.59063
+77	10.5	-1.8392
+78	10.5	-1.7861
+79	10.5	-0.612
+80	10.5	0.0069547
+81	10.5	0
+82	10.5	0
+83	10.5	0
+84	10.5	0
+85	10.5	0
+86	10.5	0
+87	10.5	0
+88	10.5	0
+89	10.5	0
+90	10.5	0
+91	10.5	0
+92	10.5	0
+93	10.5	0
+94	10.5	0
+95	10.5	0
+96	10.5	0
+97	10.5	0
+98	10.5	0
+99	10.5	-1.2799
+100	10.5	0
+101	10.5	0
+102	10.5	0
+103	10.5	0
+104	10.5	-1.2474
+105	10.5	-2.5248
+106	10.5	-2.335
+107	10.5	-0.89997
+108	10.5	-0.32934
+109	10.5	0
+110	10.5	0
+111	10.5	0
+112	10.5	0
+113	10.5	0
+114	10.5	0
+115	10.5	0
+116	10.5	0
+117	10.5	0
+118	10.5	0
+119	10.5	0
+120	10.5	0
+121	10.5	0
+122	10.5	-0.19423
+123	10.5	-0.15087
+124	10.5	0
+125	10.5	0.07181
+126	10.5	0
+127	10.5	0
+128	10.5	0
+129	10.5	0
+130	10.5	0
+131	10.5	0
+132	10.5	0
+133	10.5	0
+134	10.5	0
+135	10.5	0
+136	10.5	0
+137	10.5	0
+138	10.5	0
+139	10.5	0
+140	10.5	0
+141	10.5	0
+142	10.5	0
+143	10.5	0
+144	10.5	0
+145	10.5	0
+146	10.5	0
+147	10.5	0
+148	10.5	0
+149	10.5	0
+150	10.5	0
+151	10.5	0
+152	10.5	0
+153	10.5	0
+154	10.5	0
+155	10.5	0
+156	10.5	0
+157	10.5	0
+158	10.5	0
+159	10.5	0
+160	10.5	0
+161	10.5	0
+162	10.5	0
+163	10.5	0
+164	10.5	0
+165	10.5	0
+166	10.5	0
+167	10.5	0
+168	10.5	0
+169	10.5	0
+170	10.5	0
+171	10.5	0
+172	10.5	0
+173	10.5	0
+174	10.5	0
+175	10.5	0
+176	10.5	0
+177	10.5	0
+178	10.5	0
+179	10.5	0
+180	10.5	0
+181	10.5	0
+182	10.5	0
+183	10.5	0
+184	10.5	0
+185	10.5	0
+186	10.5	0
+187	10.5	0
+188	10.5	0
+189	10.5	0
+190	10.5	0
+191	10.5	0
+192	10.5	0
+193	10.5	0
+194	10.5	0
+195	10.5	0
+196	10.5	0
+197	10.5	0
+198	10.5	0
+199	10.5	0
+200	10.5	0
+201	10.5	0
+202	10.5	0
+203	10.5	0
+204	10.5	0
+205	10.5	0
+206	10.5	0
+207	10.5	0
+208	10.5	0
+209	10.5	0
+210	10.5	0
+211	10.5	0
+212	10.5	0
+213	10.5	0
+214	10.5	0
+215	10.5	0
+216	10.5	0
+217	10.5	0
+218	10.5	0
+219	10.5	0
+220	10.5	0
+221	10.5	0
+222	10.5	0
+223	10.5	0
+224	10.5	0
+225	10.5	0
+226	10.5	0
+227	10.5	0
+228	10.5	0
+229	10.5	0
+230	10.5	0
+231	10.5	0
+232	10.5	0
+233	10.5	0
+234	10.5	0
+235	10.5	0
+236	10.5	0
+237	10.5	0
+238	10.5	0
+239	10.5	0
+240	10.5	0
+241	10.5	0
+242	10.5	0
+243	10.5	0
+244	10.5	0
+245	10.5	0
+246	10.5	0
+247	10.5	0
+248	10.5	0
+249	10.5	0
+250	10.5	0
+251	10.5	0
+252	10.5	0
+253	10.5	0
+254	10.5	0
+255	10.5	0
+256	10.5	0
+257	10.5	0
+258	10.5	0
+259	10.5	0
+260	10.5	0
+261	10.5	0
+262	10.5	0
+263	10.5	0
+264	10.5	0
+265	10.5	0
+266	10.5	0
+267	10.5	0
+268	10.5	0
+269	10.5	0
+270	10.5	0
+271	10.5	0
+272	10.5	0
+273	10.5	0
+274	10.5	0.27827
+275	10.5	0.85795
+276	10.5	0.66843
+277	10.5	0
+278	10.5	0
+279	10.5	0
+280	10.5	0
+281	10.5	0
+282	10.5	0
+283	10.5	0
+284	10.5	0.0026506
+285	10.5	0.30616
+286	10.5	0.27948
+287	10.5	0.18471
+288	10.5	0.064617
+289	10.5	0.16901
+290	10.5	0.55314
+291	10.5	0.66065
+292	10.5	0.34695
+293	10.5	0.12032
+294	10.5	0.13968
+295	10.5	0
+296	10.5	0.21092
+297	10.5	0.22751
+298	10.5	0.06034
+299	10.5	0.082938
+300	10.5	0
+301	10.5	0
+302	10.5	0
+303	10.5	0
+304	10.5	0
+305	10.5	0
+306	10.5	0
+307	10.5	0
+308	10.5	0
+309	10.5	0
+310	10.5	0
+311	10.5	0
+312	10.5	0
+313	10.5	0
+314	10.5	0
+315	10.5	0
+316	10.5	0
+317	10.5	0
+318	10.5	0
+319	10.5	0
+320	10.5	0
+321	10.5	0
+322	10.5	0
+323	10.5	0
+324	10.5	0
+325	10.5	0
+326	10.5	0
+327	10.5	0
+328	10.5	0
+329	10.5	0
+330	10.5	0
+331	10.5	0
+332	10.5	0
+333	10.5	0
+334	10.5	0
+335	10.5	0
+336	10.5	0
+337	10.5	0
+338	10.5	0
+339	10.5	0
+340	10.5	0
+341	10.5	0
+342	10.5	0
+343	10.5	0
+344	10.5	0.10838
+345	10.5	0.29002
+346	10.5	1.0738
+347	10.5	1.4542
+348	10.5	0.98729
+349	10.5	0.34378
+350	10.5	0.16509
+351	10.5	0.26847
+352	10.5	0.50341
+353	10.5	0.75405
+354	10.5	0.90576
+355	10.5	1.0086
+356	10.5	1.116
+357	10.5	1.1652
+358	10.5	1.2289
+359	10.5	1.5462
+360	10.5	1.5461
+0	11	1.6343
+1	11	1.563
+2	11	1.567
+3	11	1.4423
+4	11	1.3105
+5	11	1.3583
+6	11	1.3411
+7	11	1.3089
+8	11	1.14
+9	11	0.8863
+10	11	0.70681
+11	11	0.59849
+12	11	0.50951
+13	11	0.49675
+14	11	0.48231
+15	11	0.37526
+16	11	0.21491
+17	11	-0.02128
+18	11	-0.11133
+19	11	-0.16118
+20	11	-0.11646
+21	11	-0.081764
+22	11	-0.19799
+23	11	-0.065924
+24	11	-0.031611
+25	11	-0.0032465
+26	11	-8.3329e-05
+27	11	0.019448
+28	11	0.033587
+29	11	0.03614
+30	11	0.038693
+31	11	0.041246
+32	11	0.021687
+33	11	0.0039985
+34	11	0.21132
+35	11	0.56788
+36	11	1.0298
+37	11	1.0109
+38	11	1.0219
+39	11	0.84915
+40	11	0.45514
+41	11	0.15879
+42	11	0.025846
+43	11	0.0032232
+44	11	0.00048489
+45	11	0
+46	11	-0.0090382
+47	11	0.00037461
+48	11	0.65041
+49	11	1.0545
+50	11	0.79421
+51	11	0.25249
+52	11	0
+53	11	0
+54	11	0
+55	11	0
+56	11	0
+57	11	0
+58	11	0
+59	11	0
+60	11	0
+61	11	0
+62	11	0
+63	11	0
+64	11	0
+65	11	0
+66	11	0
+67	11	0
+68	11	0
+69	11	0
+70	11	0
+71	11	0
+72	11	0
+73	11	0
+74	11	0
+75	11	0
+76	11	-0.81871
+77	11	-1.9693
+78	11	-1.9664
+79	11	-0.6778
+80	11	0.071475
+81	11	0
+82	11	0
+83	11	0
+84	11	0
+85	11	0
+86	11	0
+87	11	0
+88	11	0
+89	11	0
+90	11	0
+91	11	0
+92	11	0
+93	11	0
+94	11	0
+95	11	0
+96	11	0
+97	11	0
+98	11	0
+99	11	-1.7491
+100	11	0
+101	11	0
+102	11	0
+103	11	-0.222
+104	11	-2.1383
+105	11	-2.3832
+106	11	-2.2184
+107	11	-1.8377
+108	11	-0.6903
+109	11	-0.082218
+110	11	0
+111	11	0
+112	11	0
+113	11	0
+114	11	0
+115	11	0
+116	11	0
+117	11	0
+118	11	0
+119	11	0
+120	11	0
+121	11	0
+122	11	-0.21511
+123	11	-0.22407
+124	11	0
+125	11	0.034859
+126	11	0
+127	11	0
+128	11	0
+129	11	0
+130	11	0
+131	11	0
+132	11	0
+133	11	0
+134	11	0
+135	11	0
+136	11	0
+137	11	0
+138	11	0
+139	11	0
+140	11	0
+141	11	0
+142	11	0
+143	11	0
+144	11	0
+145	11	0
+146	11	0
+147	11	0
+148	11	0
+149	11	0
+150	11	0
+151	11	0
+152	11	0
+153	11	0
+154	11	0
+155	11	0
+156	11	0
+157	11	0
+158	11	0
+159	11	0
+160	11	0
+161	11	0
+162	11	0
+163	11	0
+164	11	0
+165	11	0
+166	11	0
+167	11	0
+168	11	0
+169	11	0
+170	11	0
+171	11	0
+172	11	0
+173	11	0
+174	11	0
+175	11	0
+176	11	0
+177	11	0
+178	11	0
+179	11	0
+180	11	0
+181	11	0
+182	11	0
+183	11	0
+184	11	0
+185	11	0
+186	11	0
+187	11	0
+188	11	0
+189	11	0
+190	11	0
+191	11	0
+192	11	0
+193	11	0
+194	11	0
+195	11	0
+196	11	0
+197	11	0
+198	11	0
+199	11	0
+200	11	0
+201	11	0
+202	11	0
+203	11	0
+204	11	0
+205	11	0
+206	11	0
+207	11	0
+208	11	0
+209	11	0
+210	11	0
+211	11	0
+212	11	0
+213	11	0
+214	11	0
+215	11	0
+216	11	0
+217	11	0
+218	11	0
+219	11	0
+220	11	0
+221	11	0
+222	11	0
+223	11	0
+224	11	0
+225	11	0
+226	11	0
+227	11	0
+228	11	0
+229	11	0
+230	11	0
+231	11	0
+232	11	0
+233	11	0
+234	11	0
+235	11	0
+236	11	0
+237	11	0
+238	11	0
+239	11	0
+240	11	0
+241	11	0
+242	11	0
+243	11	0
+244	11	0
+245	11	0
+246	11	0
+247	11	0
+248	11	0
+249	11	0
+250	11	0
+251	11	0
+252	11	0
+253	11	0
+254	11	0
+255	11	0
+256	11	0
+257	11	0
+258	11	0
+259	11	0
+260	11	0
+261	11	0
+262	11	0
+263	11	0
+264	11	0
+265	11	0
+266	11	0
+267	11	0
+268	11	0
+269	11	0
+270	11	0
+271	11	0
+272	11	0
+273	11	0
+274	11	0.47232
+275	11	0.90226
+276	11	0.52382
+277	11	0
+278	11	0
+279	11	0
+280	11	0
+281	11	0
+282	11	0
+283	11	0
+284	11	0
+285	11	0.054206
+286	11	0.23016
+287	11	0.17646
+288	11	0.041626
+289	11	0.11896
+290	11	0.3023
+291	11	0.50118
+292	11	0.16223
+293	11	0
+294	11	0
+295	11	0
+296	11	0.11601
+297	11	0.070397
+298	11	0
+299	11	0.024794
+300	11	0
+301	11	0
+302	11	0
+303	11	0
+304	11	0
+305	11	0
+306	11	0
+307	11	0
+308	11	0
+309	11	0
+310	11	0
+311	11	0
+312	11	0
+313	11	0
+314	11	0
+315	11	0
+316	11	0
+317	11	0
+318	11	0
+319	11	0
+320	11	0
+321	11	0
+322	11	0
+323	11	0
+324	11	0
+325	11	0
+326	11	0
+327	11	0
+328	11	0
+329	11	0
+330	11	0
+331	11	0
+332	11	0
+333	11	0
+334	11	0
+335	11	0
+336	11	0
+337	11	0
+338	11	0
+339	11	0
+340	11	0
+341	11	0
+342	11	0
+343	11	0
+344	11	0.29006
+345	11	0.52936
+346	11	1.3221
+347	11	1.6321
+348	11	1.0418
+349	11	0.42584
+350	11	0.3078
+351	11	0.40178
+352	11	0.58372
+353	11	0.79489
+354	11	0.958
+355	11	0.99896
+356	11	1.0441
+357	11	1.0932
+358	11	1.2564
+359	11	1.5682
+360	11	1.6343
+0	11.5	1.5652
+1	11.5	1.5123
+2	11.5	1.5114
+3	11.5	1.4569
+4	11.5	1.3245
+5	11.5	1.3373
+6	11.5	1.2095
+7	11.5	1.1841
+8	11.5	1.0275
+9	11.5	0.83107
+10	11.5	0.7635
+11	11.5	0.63498
+12	11.5	0.53488
+13	11.5	0.49482
+14	11.5	0.43257
+15	11.5	0.30707
+16	11.5	0.1944
+17	11.5	0.061739
+18	11.5	-0.0049013
+19	11.5	-0.069715
+20	11.5	-0.060754
+21	11.5	-0.030492
+22	11.5	-0.088009
+23	11.5	-0.007854
+24	11.5	0.013619
+25	11.5	0.016478
+26	11.5	0.02391
+27	11.5	0.04381
+28	11.5	0.050968
+29	11.5	0.053521
+30	11.5	0.056074
+31	11.5	0.055768
+32	11.5	0.063526
+33	11.5	0.078599
+34	11.5	0.17833
+35	11.5	0.56072
+36	11.5	1.088
+37	11.5	0.97053
+38	11.5	0.9839
+39	11.5	0.74457
+40	11.5	0.34443
+41	11.5	0.098401
+42	11.5	0.010783
+43	11.5	-0.00072465
+44	11.5	0
+45	11.5	0
+46	11.5	0
+47	11.5	0
+48	11.5	0.0063205
+49	11.5	0.35738
+50	11.5	0.33635
+51	11.5	0.15009
+52	11.5	0
+53	11.5	0
+54	11.5	0
+55	11.5	0
+56	11.5	0
+57	11.5	0
+58	11.5	0
+59	11.5	0
+60	11.5	0
+61	11.5	0
+62	11.5	0
+63	11.5	0
+64	11.5	0
+65	11.5	0
+66	11.5	0
+67	11.5	0
+68	11.5	0
+69	11.5	0
+70	11.5	0
+71	11.5	0
+72	11.5	0
+73	11.5	0
+74	11.5	0
+75	11.5	0
+76	11.5	-0.79576
+77	11.5	-2.1176
+78	11.5	-1.8296
+79	11.5	-0.51178
+80	11.5	0.11187
+81	11.5	0
+82	11.5	0
+83	11.5	0
+84	11.5	0
+85	11.5	0
+86	11.5	0
+87	11.5	0
+88	11.5	0
+89	11.5	0
+90	11.5	0
+91	11.5	0
+92	11.5	0
+93	11.5	0
+94	11.5	0
+95	11.5	0
+96	11.5	0
+97	11.5	0
+98	11.5	0
+99	11.5	-1.5311
+100	11.5	0
+101	11.5	0
+102	11.5	0
+103	11.5	-1.172
+104	11.5	-2.3443
+105	11.5	-2.276
+106	11.5	-2.058
+107	11.5	-1.874
+108	11.5	-1.6823
+109	11.5	-0.66385
+110	11.5	0
+111	11.5	0
+112	11.5	0
+113	11.5	0
+114	11.5	0
+115	11.5	0
+116	11.5	0
+117	11.5	0
+118	11.5	0
+119	11.5	0
+120	11.5	0
+121	11.5	0
+122	11.5	-0.26091
+123	11.5	-0.05747
+124	11.5	0
+125	11.5	0.001824
+126	11.5	0
+127	11.5	0
+128	11.5	0
+129	11.5	0
+130	11.5	0
+131	11.5	0
+132	11.5	0
+133	11.5	0
+134	11.5	0
+135	11.5	0
+136	11.5	0
+137	11.5	0
+138	11.5	0
+139	11.5	0
+140	11.5	0
+141	11.5	0
+142	11.5	0
+143	11.5	0
+144	11.5	0
+145	11.5	0
+146	11.5	0
+147	11.5	0
+148	11.5	0
+149	11.5	0
+150	11.5	0
+151	11.5	0
+152	11.5	0
+153	11.5	0
+154	11.5	0
+155	11.5	0
+156	11.5	0
+157	11.5	0
+158	11.5	0
+159	11.5	0
+160	11.5	0
+161	11.5	0
+162	11.5	0
+163	11.5	0
+164	11.5	0
+165	11.5	0
+166	11.5	0
+167	11.5	0
+168	11.5	0
+169	11.5	0
+170	11.5	0
+171	11.5	0
+172	11.5	0
+173	11.5	0
+174	11.5	0
+175	11.5	0
+176	11.5	0
+177	11.5	0
+178	11.5	0
+179	11.5	0
+180	11.5	0
+181	11.5	0
+182	11.5	0
+183	11.5	0
+184	11.5	0
+185	11.5	0
+186	11.5	0
+187	11.5	0
+188	11.5	0
+189	11.5	0
+190	11.5	0
+191	11.5	0
+192	11.5	0
+193	11.5	0
+194	11.5	0
+195	11.5	0
+196	11.5	0
+197	11.5	0
+198	11.5	0
+199	11.5	0
+200	11.5	0
+201	11.5	0
+202	11.5	0
+203	11.5	0
+204	11.5	0
+205	11.5	0
+206	11.5	0
+207	11.5	0
+208	11.5	0
+209	11.5	0
+210	11.5	0
+211	11.5	0
+212	11.5	0
+213	11.5	0
+214	11.5	0
+215	11.5	0
+216	11.5	0
+217	11.5	0
+218	11.5	0
+219	11.5	0
+220	11.5	0
+221	11.5	0
+222	11.5	0
+223	11.5	0
+224	11.5	0
+225	11.5	0
+226	11.5	0
+227	11.5	0
+228	11.5	0
+229	11.5	0
+230	11.5	0
+231	11.5	0
+232	11.5	0
+233	11.5	0
+234	11.5	0
+235	11.5	0
+236	11.5	0
+237	11.5	0
+238	11.5	0
+239	11.5	0
+240	11.5	0
+241	11.5	0
+242	11.5	0
+243	11.5	0
+244	11.5	0
+245	11.5	0
+246	11.5	0
+247	11.5	0
+248	11.5	0
+249	11.5	0
+250	11.5	0
+251	11.5	0
+252	11.5	0
+253	11.5	0
+254	11.5	0
+255	11.5	0
+256	11.5	0
+257	11.5	0
+258	11.5	0
+259	11.5	0
+260	11.5	0
+261	11.5	0
+262	11.5	0
+263	11.5	0
+264	11.5	0
+265	11.5	0
+266	11.5	0
+267	11.5	0
+268	11.5	0
+269	11.5	0
+270	11.5	0
+271	11.5	0
+272	11.5	0
+273	11.5	0
+274	11.5	0.24765
+275	11.5	0.77039
+276	11.5	0.41806
+277	11.5	0
+278	11.5	0
+279	11.5	0
+280	11.5	0
+281	11.5	0
+282	11.5	0
+283	11.5	0
+284	11.5	0
+285	11.5	0
+286	11.5	0.10606
+287	11.5	0.10724
+288	11.5	0.025865
+289	11.5	0.030114
+290	11.5	0.034047
+291	11.5	0.078459
+292	11.5	0.15532
+293	11.5	0
+294	11.5	0
+295	11.5	0
+296	11.5	0.027777
+297	11.5	0
+298	11.5	0
+299	11.5	0
+300	11.5	0
+301	11.5	0
+302	11.5	0
+303	11.5	0
+304	11.5	0
+305	11.5	0
+306	11.5	0
+307	11.5	0
+308	11.5	0
+309	11.5	0
+310	11.5	0
+311	11.5	0
+312	11.5	0
+313	11.5	0
+314	11.5	0
+315	11.5	0
+316	11.5	0
+317	11.5	0
+318	11.5	0
+319	11.5	0
+320	11.5	0
+321	11.5	0
+322	11.5	0
+323	11.5	0
+324	11.5	0
+325	11.5	0
+326	11.5	0
+327	11.5	0
+328	11.5	0
+329	11.5	0
+330	11.5	0
+331	11.5	0
+332	11.5	0
+333	11.5	0
+334	11.5	0
+335	11.5	0
+336	11.5	0
+337	11.5	0
+338	11.5	0
+339	11.5	0
+340	11.5	0
+341	11.5	0
+342	11.5	0
+343	11.5	0
+344	11.5	0.20389
+345	11.5	0.63793
+346	11.5	1.5507
+347	11.5	1.7476
+348	11.5	1.1094
+349	11.5	0.56414
+350	11.5	0.45977
+351	11.5	0.49931
+352	11.5	0.88362
+353	11.5	1.0292
+354	11.5	0.93355
+355	11.5	0.95485
+356	11.5	0.97981
+357	11.5	1.0479
+358	11.5	1.2689
+359	11.5	1.5189
+360	11.5	1.5652
+0	12	1.4606
+1	12	1.4193
+2	12	1.4075
+3	12	1.4122
+4	12	1.2213
+5	12	1.2072
+6	12	1.0775
+7	12	1.0594
+8	12	0.95849
+9	12	0.77585
+10	12	0.81626
+11	12	0.71819
+12	12	0.5362
+13	12	0.4465
+14	12	0.35699
+15	12	0.24573
+16	12	0.14932
+17	12	0.11498
+18	12	0.10171
+19	12	0.023276
+20	12	-0.0050486
+21	12	0.020779
+22	12	0.015903
+23	12	0.030485
+24	12	0.033343
+25	12	0.036202
+26	12	0.047903
+27	12	0.065796
+28	12	0.068348
+29	12	0.070901
+30	12	0.066686
+31	12	0.082554
+32	12	0.10814
+33	12	0.16268
+34	12	0.17497
+35	12	0.49687
+36	12	1.04
+37	12	0.3674
+38	12	1.0778
+39	12	0.6695
+40	12	0.30513
+41	12	0.077274
+42	12	0.0010973
+43	12	0.0017072
+44	12	0
+45	12	0
+46	12	0
+47	12	0
+48	12	0
+49	12	0
+50	12	0
+51	12	0
+52	12	0
+53	12	0
+54	12	0
+55	12	0
+56	12	0
+57	12	0
+58	12	0
+59	12	0
+60	12	0
+61	12	0
+62	12	0
+63	12	0
+64	12	0
+65	12	0
+66	12	0
+67	12	0
+68	12	0
+69	12	0
+70	12	0
+71	12	0
+72	12	0
+73	12	0
+74	12	0
+75	12	-0.01208
+76	12	-0.73484
+77	12	-1.9594
+78	12	-1.6276
+79	12	-0.26173
+80	12	0.16646
+81	12	0
+82	12	0
+83	12	0
+84	12	0
+85	12	0
+86	12	0
+87	12	0
+88	12	0
+89	12	0
+90	12	0
+91	12	0
+92	12	0
+93	12	1.1624
+94	12	0
+95	12	0
+96	12	0
+97	12	0
+98	12	0
+99	12	-1.5606
+100	12	-0.64529
+101	12	0
+102	12	0
+103	12	-2.5762
+104	12	-2.3163
+105	12	-2.0774
+106	12	-2.1672
+107	12	-2.021
+108	12	-1.5193
+109	12	-0.42037
+110	12	0
+111	12	0
+112	12	0
+113	12	0
+114	12	0
+115	12	0
+116	12	0
+117	12	0
+118	12	0
+119	12	0
+120	12	0
+121	12	0
+122	12	-0.058421
+123	12	-0.015304
+124	12	0
+125	12	0.0080246
+126	12	0
+127	12	0
+128	12	0
+129	12	0
+130	12	0
+131	12	0
+132	12	0
+133	12	0
+134	12	0
+135	12	0
+136	12	0
+137	12	0
+138	12	0
+139	12	0
+140	12	0
+141	12	0
+142	12	0
+143	12	0
+144	12	0
+145	12	0
+146	12	0
+147	12	0
+148	12	0
+149	12	0
+150	12	0
+151	12	0
+152	12	0
+153	12	0
+154	12	0
+155	12	0
+156	12	0
+157	12	0
+158	12	0
+159	12	0
+160	12	0
+161	12	0
+162	12	0
+163	12	0
+164	12	0
+165	12	0
+166	12	0
+167	12	0
+168	12	0
+169	12	0
+170	12	0
+171	12	0
+172	12	0
+173	12	0
+174	12	0
+175	12	0
+176	12	0
+177	12	0
+178	12	0
+179	12	0
+180	12	0
+181	12	0
+182	12	0
+183	12	0
+184	12	0
+185	12	0
+186	12	0
+187	12	0
+188	12	0
+189	12	0
+190	12	0
+191	12	0
+192	12	0
+193	12	0
+194	12	0
+195	12	0
+196	12	0
+197	12	0
+198	12	0
+199	12	0
+200	12	0
+201	12	0
+202	12	0
+203	12	0
+204	12	0
+205	12	0
+206	12	0
+207	12	0
+208	12	0
+209	12	0
+210	12	0
+211	12	0
+212	12	0
+213	12	0
+214	12	0
+215	12	0
+216	12	0
+217	12	0
+218	12	0
+219	12	0
+220	12	0
+221	12	0
+222	12	0
+223	12	0
+224	12	0
+225	12	0
+226	12	0
+227	12	0
+228	12	0
+229	12	0
+230	12	0
+231	12	0
+232	12	0
+233	12	0
+234	12	0
+235	12	0
+236	12	0
+237	12	0
+238	12	0
+239	12	0
+240	12	0
+241	12	0
+242	12	0
+243	12	0
+244	12	0
+245	12	0
+246	12	0
+247	12	0
+248	12	0
+249	12	0
+250	12	0
+251	12	0
+252	12	0
+253	12	0
+254	12	0
+255	12	0
+256	12	0
+257	12	0
+258	12	0
+259	12	0
+260	12	0
+261	12	0
+262	12	0
+263	12	0
+264	12	0
+265	12	0
+266	12	0
+267	12	0
+268	12	0
+269	12	0
+270	12	0
+271	12	0
+272	12	0
+273	12	0.064019
+274	12	0.79487
+275	12	0.62955
+276	12	0.36544
+277	12	0
+278	12	0
+279	12	0
+280	12	0
+281	12	0
+282	12	0
+283	12	0
+284	12	0
+285	12	0
+286	12	0
+287	12	0.042108
+288	12	0.052126
+289	12	0
+290	12	0.018506
+291	12	0
+292	12	0
+293	12	0
+294	12	0
+295	12	0
+296	12	0
+297	12	0
+298	12	0
+299	12	0
+300	12	0
+301	12	0
+302	12	0
+303	12	0
+304	12	0
+305	12	0
+306	12	0
+307	12	0
+308	12	0
+309	12	0
+310	12	0
+311	12	0
+312	12	0
+313	12	0
+314	12	0
+315	12	0
+316	12	0
+317	12	0
+318	12	0
+319	12	0
+320	12	0
+321	12	0
+322	12	0
+323	12	0
+324	12	0
+325	12	0
+326	12	0
+327	12	0
+328	12	0
+329	12	0
+330	12	0
+331	12	0
+332	12	0
+333	12	0
+334	12	0
+335	12	0
+336	12	0
+337	12	0
+338	12	0
+339	12	0
+340	12	0
+341	12	0
+342	12	0
+343	12	0
+344	12	0.14083
+345	12	1.1626
+346	12	1.6979
+347	12	1.7819
+348	12	1.1449
+349	12	0.57047
+350	12	0.53293
+351	12	0.59683
+352	12	1.1695
+353	12	1.2538
+354	12	0.93148
+355	12	0.89115
+356	12	0.91837
+357	12	1.0978
+358	12	1.3012
+359	12	1.4742
+360	12	1.4606
+0	12.5	1.4502
+1	12.5	1.2109
+2	12.5	1.245
+3	12.5	1.2089
+4	12.5	1.1149
+5	12.5	1.0008
+6	12.5	0.88198
+7	12.5	0.913
+8	12.5	0.78874
+9	12.5	0.75033
+10	12.5	0.69004
+11	12.5	0.72072
+12	12.5	0.5227
+13	12.5	0.36749
+14	12.5	0.24899
+15	12.5	0.18737
+16	12.5	0.17058
+17	12.5	0.148
+18	12.5	0.16111
+19	12.5	0.11627
+20	12.5	0.050657
+21	12.5	0.072051
+22	12.5	0.038665
+23	12.5	0.050209
+24	12.5	0.053067
+25	12.5	0.05807
+26	12.5	0.071895
+27	12.5	0.083176
+28	12.5	0.082118
+29	12.5	0.077605
+30	12.5	0.073091
+31	12.5	0.12544
+32	12.5	0.19142
+33	12.5	0.24677
+34	12.5	0.17512
+35	12.5	0.36801
+36	12.5	0.97174
+37	12.5	1.0828
+38	12.5	1.3434
+39	12.5	0.7355
+40	12.5	0.28824
+41	12.5	0.092592
+42	12.5	0.008087
+43	12.5	0.0042241
+44	12.5	-0.00035648
+45	12.5	0
+46	12.5	0
+47	12.5	0
+48	12.5	0
+49	12.5	0
+50	12.5	0
+51	12.5	0
+52	12.5	0
+53	12.5	0
+54	12.5	0
+55	12.5	0
+56	12.5	0
+57	12.5	0
+58	12.5	0
+59	12.5	0
+60	12.5	0
+61	12.5	0
+62	12.5	0
+63	12.5	0
+64	12.5	0
+65	12.5	0
+66	12.5	0
+67	12.5	0
+68	12.5	0
+69	12.5	0
+70	12.5	0
+71	12.5	0
+72	12.5	0
+73	12.5	0
+74	12.5	0
+75	12.5	-0.093901
+76	12.5	-0.70075
+77	12.5	-1.6107
+78	12.5	-1.2384
+79	12.5	-0.026663
+80	12.5	0.31273
+81	12.5	0
+82	12.5	0
+83	12.5	0
+84	12.5	0
+85	12.5	0
+86	12.5	0
+87	12.5	0
+88	12.5	0
+89	12.5	0
+90	12.5	0
+91	12.5	0
+92	12.5	0
+93	12.5	0.55206
+94	12.5	0
+95	12.5	0
+96	12.5	0
+97	12.5	0
+98	12.5	0
+99	12.5	-1.4908
+100	12.5	-1.057
+101	12.5	0
+102	12.5	-2.2208
+103	12.5	-2.8604
+104	12.5	-2.2164
+105	12.5	-1.9586
+106	12.5	-1.9627
+107	12.5	-1.9486
+108	12.5	-1.2153
+109	12.5	-0.58409
+110	12.5	0
+111	12.5	0
+112	12.5	0
+113	12.5	0
+114	12.5	0
+115	12.5	0
+116	12.5	0
+117	12.5	0
+118	12.5	0
+119	12.5	0
+120	12.5	0
+121	12.5	-0.0085671
+122	12.5	0
+123	12.5	-0.064494
+124	12.5	-0.0056044
+125	12.5	0.015281
+126	12.5	0
+127	12.5	0
+128	12.5	0
+129	12.5	0
+130	12.5	0
+131	12.5	0
+132	12.5	0
+133	12.5	0
+134	12.5	0
+135	12.5	0
+136	12.5	0
+137	12.5	0
+138	12.5	0
+139	12.5	0
+140	12.5	0
+141	12.5	0
+142	12.5	0
+143	12.5	0
+144	12.5	0
+145	12.5	0
+146	12.5	0
+147	12.5	0
+148	12.5	0
+149	12.5	0
+150	12.5	0
+151	12.5	0
+152	12.5	0
+153	12.5	0
+154	12.5	0
+155	12.5	0
+156	12.5	0
+157	12.5	0
+158	12.5	0
+159	12.5	0
+160	12.5	0
+161	12.5	0
+162	12.5	0
+163	12.5	0
+164	12.5	0
+165	12.5	0
+166	12.5	0
+167	12.5	0
+168	12.5	0
+169	12.5	0
+170	12.5	0
+171	12.5	0
+172	12.5	0
+173	12.5	0
+174	12.5	0
+175	12.5	0
+176	12.5	0
+177	12.5	0
+178	12.5	0
+179	12.5	0
+180	12.5	0
+181	12.5	0
+182	12.5	0
+183	12.5	0
+184	12.5	0
+185	12.5	0
+186	12.5	0
+187	12.5	0
+188	12.5	0
+189	12.5	0
+190	12.5	0
+191	12.5	0
+192	12.5	0
+193	12.5	0
+194	12.5	0
+195	12.5	0
+196	12.5	0
+197	12.5	0
+198	12.5	0
+199	12.5	0
+200	12.5	0
+201	12.5	0
+202	12.5	0
+203	12.5	0
+204	12.5	0
+205	12.5	0
+206	12.5	0
+207	12.5	0
+208	12.5	0
+209	12.5	0
+210	12.5	0
+211	12.5	0
+212	12.5	0
+213	12.5	0
+214	12.5	0
+215	12.5	0
+216	12.5	0
+217	12.5	0
+218	12.5	0
+219	12.5	0
+220	12.5	0
+221	12.5	0
+222	12.5	0
+223	12.5	0
+224	12.5	0
+225	12.5	0
+226	12.5	0
+227	12.5	0
+228	12.5	0
+229	12.5	0
+230	12.5	0
+231	12.5	0
+232	12.5	0
+233	12.5	0
+234	12.5	0
+235	12.5	0
+236	12.5	0
+237	12.5	0
+238	12.5	0
+239	12.5	0
+240	12.5	0
+241	12.5	0
+242	12.5	0
+243	12.5	0
+244	12.5	0
+245	12.5	0
+246	12.5	0
+247	12.5	0
+248	12.5	0
+249	12.5	0
+250	12.5	0
+251	12.5	0
+252	12.5	0
+253	12.5	0
+254	12.5	0
+255	12.5	0
+256	12.5	0
+257	12.5	0
+258	12.5	0
+259	12.5	0
+260	12.5	0
+261	12.5	0
+262	12.5	0
+263	12.5	0
+264	12.5	0
+265	12.5	0
+266	12.5	0
+267	12.5	0
+268	12.5	0
+269	12.5	0
+270	12.5	0
+271	12.5	0
+272	12.5	0
+273	12.5	0.44753
+274	12.5	0.88385
+275	12.5	0.97825
+276	12.5	0.32653
+277	12.5	0
+278	12.5	0
+279	12.5	0
+280	12.5	0
+281	12.5	0
+282	12.5	0
+283	12.5	0
+284	12.5	0
+285	12.5	0
+286	12.5	0
+287	12.5	0
+288	12.5	0.00035433
+289	12.5	0
+290	12.5	0.00056145
+291	12.5	0
+292	12.5	0
+293	12.5	0
+294	12.5	0
+295	12.5	0
+296	12.5	0
+297	12.5	0
+298	12.5	0
+299	12.5	0
+300	12.5	0
+301	12.5	0
+302	12.5	0
+303	12.5	0
+304	12.5	0
+305	12.5	0
+306	12.5	0
+307	12.5	0
+308	12.5	0
+309	12.5	0
+310	12.5	0
+311	12.5	0
+312	12.5	0
+313	12.5	0
+314	12.5	0
+315	12.5	0
+316	12.5	0
+317	12.5	0
+318	12.5	0
+319	12.5	0
+320	12.5	0
+321	12.5	0
+322	12.5	0
+323	12.5	0
+324	12.5	0
+325	12.5	0
+326	12.5	0
+327	12.5	0
+328	12.5	0
+329	12.5	0
+330	12.5	0
+331	12.5	0
+332	12.5	0
+333	12.5	0
+334	12.5	0
+335	12.5	0
+336	12.5	0
+337	12.5	0
+338	12.5	0
+339	12.5	0
+340	12.5	0
+341	12.5	0
+342	12.5	0
+343	12.5	0
+344	12.5	0.98559
+345	12.5	1.3909
+346	12.5	1.7499
+347	12.5	1.7076
+348	12.5	1.1245
+349	12.5	0.60603
+350	12.5	0.5177
+351	12.5	0.52018
+352	12.5	1.1389
+353	12.5	1.3257
+354	12.5	1.0034
+355	12.5	0.82152
+356	12.5	0.84874
+357	12.5	1.0431
+358	12.5	1.2652
+359	12.5	1.4812
+360	12.5	1.4502
+0	13	1.1987
+1	13	1.0025
+2	13	1.083
+3	13	0.99138
+4	13	0.87816
+5	13	0.76946
+6	13	0.68472
+7	13	0.68879
+8	13	0.60032
+9	13	0.60331
+10	13	0.56142
+11	13	0.58734
+12	13	0.49313
+13	13	0.2805
+14	13	0.05002
+15	13	0.13006
+16	13	0.12236
+17	13	0.13612
+18	13	0.19988
+19	13	0.20926
+20	13	0.1335
+21	13	0.10781
+22	13	0.037704
+23	13	0.06658
+24	13	0.072792
+25	13	0.082063
+26	13	0.093129
+27	13	0.093037
+28	13	0.088523
+29	13	0.08401
+30	13	0.081461
+31	13	0.16869
+32	13	0.24717
+33	13	0.32284
+34	13	0.32494
+35	13	0.28004
+36	13	0.93397
+37	13	1.4121
+38	13	1.5872
+39	13	0.82614
+40	13	0.27539
+41	13	0.093276
+42	13	0.025155
+43	13	4.7816e-05
+44	13	0.0001946
+45	13	0.007238
+46	13	0
+47	13	0
+48	13	0
+49	13	0
+50	13	0
+51	13	0
+52	13	0
+53	13	0
+54	13	0
+55	13	0
+56	13	0
+57	13	0
+58	13	0
+59	13	0
+60	13	0
+61	13	0
+62	13	0
+63	13	0
+64	13	0
+65	13	0
+66	13	0
+67	13	0
+68	13	0
+69	13	0
+70	13	0
+71	13	0
+72	13	0
+73	13	0
+74	13	-0.00020081
+75	13	-0.097409
+76	13	-0.62317
+77	13	-1.1827
+78	13	-0.82594
+79	13	0.11328
+80	13	0.36957
+81	13	0
+82	13	0
+83	13	0
+84	13	0
+85	13	0
+86	13	0
+87	13	0
+88	13	0
+89	13	0
+90	13	0
+91	13	0
+92	13	0
+93	13	0
+94	13	0
+95	13	0
+96	13	0
+97	13	0
+98	13	-0.5212
+99	13	-2.5983
+100	13	-1.8842
+101	13	-0.91905
+102	13	-2.6891
+103	13	-2.67
+104	13	-1.9651
+105	13	-1.6126
+106	13	-1.7048
+107	13	-1.6303
+108	13	-0.86689
+109	13	-0.45422
+110	13	0
+111	13	0
+112	13	0
+113	13	0
+114	13	0
+115	13	0
+116	13	0
+117	13	0
+118	13	0
+119	13	0
+120	13	0
+121	13	-0.022862
+122	13	-0.015587
+123	13	-0.30419
+124	13	-0.032244
+125	13	0
+126	13	0
+127	13	0
+128	13	0
+129	13	0
+130	13	0
+131	13	0
+132	13	0
+133	13	0
+134	13	0
+135	13	0
+136	13	0
+137	13	0
+138	13	0
+139	13	0
+140	13	0
+141	13	0
+142	13	0
+143	13	0
+144	13	0
+145	13	0
+146	13	0
+147	13	0
+148	13	0
+149	13	0
+150	13	0
+151	13	0
+152	13	0
+153	13	0
+154	13	0
+155	13	0
+156	13	0
+157	13	0
+158	13	0
+159	13	0
+160	13	0
+161	13	0
+162	13	0
+163	13	0
+164	13	0
+165	13	0
+166	13	0
+167	13	0
+168	13	0
+169	13	0
+170	13	0
+171	13	0
+172	13	0
+173	13	0
+174	13	0
+175	13	0
+176	13	0
+177	13	0
+178	13	0
+179	13	0
+180	13	0
+181	13	0
+182	13	0
+183	13	0
+184	13	0
+185	13	0
+186	13	0
+187	13	0
+188	13	0
+189	13	0
+190	13	0
+191	13	0
+192	13	0
+193	13	0
+194	13	0
+195	13	0
+196	13	0
+197	13	0
+198	13	0
+199	13	0
+200	13	0
+201	13	0
+202	13	0
+203	13	0
+204	13	0
+205	13	0
+206	13	0
+207	13	0
+208	13	0
+209	13	0
+210	13	0
+211	13	0
+212	13	0
+213	13	0
+214	13	0
+215	13	0
+216	13	0
+217	13	0
+218	13	0
+219	13	0
+220	13	0
+221	13	0
+222	13	0
+223	13	0
+224	13	0
+225	13	0
+226	13	0
+227	13	0
+228	13	0
+229	13	0
+230	13	0
+231	13	0
+232	13	0
+233	13	0
+234	13	0
+235	13	0
+236	13	0
+237	13	0
+238	13	0
+239	13	0
+240	13	0
+241	13	0
+242	13	0
+243	13	0
+244	13	0
+245	13	0
+246	13	0
+247	13	0
+248	13	0
+249	13	0
+250	13	0
+251	13	0
+252	13	0
+253	13	0
+254	13	0
+255	13	0
+256	13	0
+257	13	0
+258	13	0
+259	13	0
+260	13	0
+261	13	0
+262	13	0
+263	13	0
+264	13	0
+265	13	0
+266	13	0
+267	13	0
+268	13	0
+269	13	0
+270	13	0
+271	13	0.01346
+272	13	0.37762
+273	13	0.93509
+274	13	0.20186
+275	13	0.99854
+276	13	0.34423
+277	13	0
+278	13	0
+279	13	0
+280	13	0
+281	13	0
+282	13	0
+283	13	0
+284	13	0
+285	13	0
+286	13	0
+287	13	0
+288	13	0
+289	13	0
+290	13	0
+291	13	0
+292	13	0
+293	13	0
+294	13	0
+295	13	0
+296	13	0
+297	13	0
+298	13	0
+299	13	0
+300	13	0
+301	13	0
+302	13	0
+303	13	0
+304	13	0
+305	13	0
+306	13	0
+307	13	0
+308	13	0
+309	13	0
+310	13	0
+311	13	0
+312	13	0
+313	13	0
+314	13	0
+315	13	0
+316	13	0
+317	13	0
+318	13	0
+319	13	0
+320	13	0
+321	13	0
+322	13	0
+323	13	0
+324	13	0
+325	13	0
+326	13	0
+327	13	0
+328	13	0
+329	13	0
+330	13	0
+331	13	0
+332	13	0
+333	13	0
+334	13	0
+335	13	0
+336	13	0
+337	13	0
+338	13	0
+339	13	0
+340	13	0
+341	13	0
+342	13	0
+343	13	0.21445
+344	13	0.65856
+345	13	1.4745
+346	13	1.7428
+347	13	1.5808
+348	13	1.1732
+349	13	0.60594
+350	13	0.52911
+351	13	0.53624
+352	13	0.91926
+353	13	1.2703
+354	13	1.0753
+355	13	0.75297
+356	13	0.77911
+357	13	0.97889
+358	13	1.2011
+359	13	1.3274
+360	13	1.1987
+0	13.5	0.9288
+1	13.5	0.88497
+2	13.5	0.98383
+3	13.5	0.80642
+4	13.5	0.72304
+5	13.5	0.59798
+6	13.5	0.56226
+7	13.5	0.44694
+8	13.5	0.41191
+9	13.5	0.42158
+10	13.5	0.43279
+11	13.5	0.43795
+12	13.5	0.38594
+13	13.5	0.21919
+14	13.5	0.048659
+15	13.5	0.084233
+16	13.5	0.086963
+17	13.5	0.12607
+18	13.5	0.18204
+19	13.5	0.23421
+20	13.5	0.17791
+21	13.5	0.091654
+22	13.5	0.040476
+23	13.5	0.060029
+24	13.5	0.092516
+25	13.5	0.085492
+26	13.5	0.081852
+27	13.5	0.092953
+28	13.5	0.094928
+29	13.5	0.090415
+30	13.5	0.12435
+31	13.5	0.21273
+32	13.5	0.31623
+33	13.5	0.47443
+34	13.5	0.47475
+35	13.5	0.33986
+36	13.5	0.67124
+37	13.5	1.4354
+38	13.5	1.8077
+39	13.5	0.98996
+40	13.5	0.32977
+41	13.5	0.020148
+42	13.5	0.014672
+43	13.5	0
+44	13.5	0.0073995
+45	13.5	0.031327
+46	13.5	0.0047314
+47	13.5	-0.054584
+48	13.5	0
+49	13.5	0
+50	13.5	0
+51	13.5	0
+52	13.5	0
+53	13.5	0
+54	13.5	0
+55	13.5	0
+56	13.5	0
+57	13.5	0
+58	13.5	0
+59	13.5	0
+60	13.5	0
+61	13.5	0
+62	13.5	0
+63	13.5	0
+64	13.5	0
+65	13.5	0
+66	13.5	0
+67	13.5	0
+68	13.5	0
+69	13.5	0
+70	13.5	0
+71	13.5	0
+72	13.5	0
+73	13.5	0
+74	13.5	0
+75	13.5	-0.091123
+76	13.5	-0.57281
+77	13.5	-0.89959
+78	13.5	-0.49773
+79	13.5	0.21984
+80	13.5	0.3779
+81	13.5	0
+82	13.5	0
+83	13.5	0
+84	13.5	0
+85	13.5	0
+86	13.5	0
+87	13.5	0
+88	13.5	0
+89	13.5	0
+90	13.5	0
+91	13.5	0
+92	13.5	0
+93	13.5	0
+94	13.5	0
+95	13.5	0
+96	13.5	0
+97	13.5	0
+98	13.5	0
+99	13.5	-3.9017
+100	13.5	-2.8213
+101	13.5	-1.2262
+102	13.5	-2.7304
+103	13.5	-2.2696
+104	13.5	-1.6717
+105	13.5	-1.3327
+106	13.5	-1.2473
+107	13.5	-1.1871
+108	13.5	-0.60559
+109	13.5	-0.24993
+110	13.5	0
+111	13.5	0
+112	13.5	0
+113	13.5	0
+114	13.5	0
+115	13.5	0
+116	13.5	0
+117	13.5	0
+118	13.5	0
+119	13.5	0
+120	13.5	0
+121	13.5	-0.0085458
+122	13.5	-0.091806
+123	13.5	-0.21385
+124	13.5	-0.00022532
+125	13.5	0
+126	13.5	0
+127	13.5	0
+128	13.5	0
+129	13.5	0
+130	13.5	0
+131	13.5	0
+132	13.5	0
+133	13.5	0
+134	13.5	0
+135	13.5	0
+136	13.5	0
+137	13.5	0
+138	13.5	0
+139	13.5	0
+140	13.5	0
+141	13.5	0
+142	13.5	0
+143	13.5	0
+144	13.5	0
+145	13.5	0
+146	13.5	0
+147	13.5	0
+148	13.5	0
+149	13.5	0
+150	13.5	0
+151	13.5	0
+152	13.5	0
+153	13.5	0
+154	13.5	0
+155	13.5	0
+156	13.5	0
+157	13.5	0
+158	13.5	0
+159	13.5	0
+160	13.5	0
+161	13.5	0
+162	13.5	0
+163	13.5	0
+164	13.5	0
+165	13.5	0
+166	13.5	0
+167	13.5	0
+168	13.5	0
+169	13.5	0
+170	13.5	0
+171	13.5	0
+172	13.5	0
+173	13.5	0
+174	13.5	0
+175	13.5	0
+176	13.5	0
+177	13.5	0
+178	13.5	0
+179	13.5	0
+180	13.5	0
+181	13.5	0
+182	13.5	0
+183	13.5	0
+184	13.5	0
+185	13.5	0
+186	13.5	0
+187	13.5	0
+188	13.5	0
+189	13.5	0
+190	13.5	0
+191	13.5	0
+192	13.5	0
+193	13.5	0
+194	13.5	0
+195	13.5	0
+196	13.5	0
+197	13.5	0
+198	13.5	0
+199	13.5	0
+200	13.5	0
+201	13.5	0
+202	13.5	0
+203	13.5	0
+204	13.5	0
+205	13.5	0
+206	13.5	0
+207	13.5	0
+208	13.5	0
+209	13.5	0
+210	13.5	0
+211	13.5	0
+212	13.5	0
+213	13.5	0
+214	13.5	0
+215	13.5	0
+216	13.5	0
+217	13.5	0
+218	13.5	0
+219	13.5	0
+220	13.5	0
+221	13.5	0
+222	13.5	0
+223	13.5	0
+224	13.5	0
+225	13.5	0
+226	13.5	0
+227	13.5	0
+228	13.5	0
+229	13.5	0
+230	13.5	0
+231	13.5	0
+232	13.5	0
+233	13.5	0
+234	13.5	0
+235	13.5	0
+236	13.5	0
+237	13.5	0
+238	13.5	0
+239	13.5	0
+240	13.5	0
+241	13.5	0
+242	13.5	0
+243	13.5	0
+244	13.5	0
+245	13.5	0
+246	13.5	0
+247	13.5	0
+248	13.5	0
+249	13.5	0
+250	13.5	0
+251	13.5	0
+252	13.5	0
+253	13.5	0
+254	13.5	0
+255	13.5	0
+256	13.5	0
+257	13.5	0
+258	13.5	0
+259	13.5	0
+260	13.5	0
+261	13.5	0
+262	13.5	0
+263	13.5	0
+264	13.5	0
+265	13.5	0
+266	13.5	0
+267	13.5	0
+268	13.5	0
+269	13.5	0
+270	13.5	0.50196
+271	13.5	0.56882
+272	13.5	0.89088
+273	13.5	1.383
+274	13.5	1.6346
+275	13.5	1.104
+276	13.5	0.31342
+277	13.5	0.0030116
+278	13.5	0
+279	13.5	0
+280	13.5	0
+281	13.5	0
+282	13.5	0
+283	13.5	0
+284	13.5	0
+285	13.5	0
+286	13.5	0
+287	13.5	0
+288	13.5	0
+289	13.5	0
+290	13.5	0
+291	13.5	0
+292	13.5	0
+293	13.5	0
+294	13.5	0
+295	13.5	0
+296	13.5	0
+297	13.5	0
+298	13.5	0
+299	13.5	0
+300	13.5	0
+301	13.5	0
+302	13.5	0
+303	13.5	0
+304	13.5	0
+305	13.5	0
+306	13.5	0
+307	13.5	0
+308	13.5	0
+309	13.5	0
+310	13.5	0
+311	13.5	0
+312	13.5	0
+313	13.5	0
+314	13.5	0
+315	13.5	0
+316	13.5	0
+317	13.5	0
+318	13.5	0
+319	13.5	0
+320	13.5	0
+321	13.5	0
+322	13.5	0
+323	13.5	0
+324	13.5	0
+325	13.5	0
+326	13.5	0
+327	13.5	0
+328	13.5	0
+329	13.5	0
+330	13.5	0
+331	13.5	0
+332	13.5	0
+333	13.5	0
+334	13.5	0
+335	13.5	0
+336	13.5	0
+337	13.5	0
+338	13.5	0
+339	13.5	0
+340	13.5	0
+341	13.5	0
+342	13.5	0
+343	13.5	0
+344	13.5	0.58659
+345	13.5	1.4225
+346	13.5	1.6088
+347	13.5	1.4234
+348	13.5	1.095
+349	13.5	0.56752
+350	13.5	0.49801
+351	13.5	0.5523
+352	13.5	0.69967
+353	13.5	1.1147
+354	13.5	1.0271
+355	13.5	0.82486
+356	13.5	0.70948
+357	13.5	0.91471
+358	13.5	1.0464
+359	13.5	1.0574
+360	13.5	0.9288
+0	14	0.90154
+1	14	0.834
+2	14	1.0091
+3	14	0.80717
+4	14	0.60616
+5	14	0.54036
+6	14	0.50099
+7	14	0.38186
+8	14	0.27936
+9	14	0.28455
+10	14	0.30417
+11	14	0.28123
+12	14	0.25694
+13	14	0.17722
+14	14	0.084516
+15	14	0.059725
+16	14	0.065217
+17	14	0.10464
+18	14	0.16713
+19	14	0.19835
+20	14	0.14658
+21	14	0.075497
+22	14	0.043249
+23	14	0.053478
+24	14	0.077856
+25	14	0.069321
+26	14	0.072912
+27	14	0.081834
+28	14	0.10098
+29	14	0.09682
+30	14	0.16819
+31	14	0.26335
+32	14	0.47029
+33	14	0.61602
+34	14	0.59023
+35	14	0.29671
+36	14	0.44308
+37	14	1.2979
+38	14	1.4362
+39	14	0.92073
+40	14	0.31035
+41	14	0.080919
+42	14	0
+43	14	0
+44	14	0.0070325
+45	14	0.031229
+46	14	0.0024329
+47	14	-0.18904
+48	14	-0.15624
+49	14	0
+50	14	0
+51	14	0
+52	14	0
+53	14	0
+54	14	0
+55	14	0
+56	14	0
+57	14	0
+58	14	0
+59	14	0
+60	14	0
+61	14	0
+62	14	0
+63	14	0
+64	14	0
+65	14	0
+66	14	0
+67	14	0
+68	14	0
+69	14	0
+70	14	0
+71	14	0
+72	14	0
+73	14	0
+74	14	0
+75	14	-0.076436
+76	14	-0.54424
+77	14	-0.60979
+78	14	-0.14473
+79	14	0.28806
+80	14	0.3839
+81	14	0
+82	14	0
+83	14	0
+84	14	0
+85	14	0
+86	14	0
+87	14	0
+88	14	0
+89	14	0
+90	14	0
+91	14	0
+92	14	0
+93	14	0
+94	14	0
+95	14	0
+96	14	0
+97	14	0
+98	14	-1.0315
+99	14	-3.7754
+100	14	-2.7816
+101	14	-2.6396
+102	14	-2.5721
+103	14	-2.0372
+104	14	-1.4866
+105	14	-1.1273
+106	14	-1.0946
+107	14	-0.8924
+108	14	-0.52778
+109	14	-0.18893
+110	14	0
+111	14	0
+112	14	0
+113	14	0
+114	14	0
+115	14	0
+116	14	0
+117	14	0
+118	14	0
+119	14	0
+120	14	0
+121	14	-0.41257
+122	14	-0.026322
+123	14	0
+124	14	0
+125	14	0
+126	14	0
+127	14	0
+128	14	0
+129	14	0
+130	14	0
+131	14	0
+132	14	0
+133	14	0
+134	14	0
+135	14	0
+136	14	0
+137	14	0
+138	14	0
+139	14	0
+140	14	0
+141	14	0
+142	14	0
+143	14	0
+144	14	0
+145	14	0
+146	14	0
+147	14	0
+148	14	0
+149	14	0
+150	14	0
+151	14	0
+152	14	0
+153	14	0
+154	14	0
+155	14	0
+156	14	0
+157	14	0
+158	14	0
+159	14	0
+160	14	0
+161	14	0
+162	14	0
+163	14	0
+164	14	0
+165	14	0
+166	14	0
+167	14	0
+168	14	0
+169	14	0
+170	14	0
+171	14	0
+172	14	0
+173	14	0
+174	14	0
+175	14	0
+176	14	0
+177	14	0
+178	14	0
+179	14	0
+180	14	0
+181	14	0
+182	14	0
+183	14	0
+184	14	0
+185	14	0
+186	14	0
+187	14	0
+188	14	0
+189	14	0
+190	14	0
+191	14	0
+192	14	0
+193	14	0
+194	14	0
+195	14	0
+196	14	0
+197	14	0
+198	14	0
+199	14	0
+200	14	0
+201	14	0
+202	14	0
+203	14	0
+204	14	0
+205	14	0
+206	14	0
+207	14	0
+208	14	0
+209	14	0
+210	14	0
+211	14	0
+212	14	0
+213	14	0
+214	14	0
+215	14	0
+216	14	0
+217	14	0
+218	14	0
+219	14	0
+220	14	0
+221	14	0
+222	14	0
+223	14	0
+224	14	0
+225	14	0
+226	14	0
+227	14	0
+228	14	0
+229	14	0
+230	14	0
+231	14	0
+232	14	0
+233	14	0
+234	14	0
+235	14	0
+236	14	0
+237	14	0
+238	14	0
+239	14	0
+240	14	0
+241	14	0
+242	14	0
+243	14	0
+244	14	0
+245	14	0
+246	14	0
+247	14	0
+248	14	0
+249	14	0
+250	14	0
+251	14	0
+252	14	0
+253	14	0
+254	14	0
+255	14	0
+256	14	0
+257	14	0
+258	14	0
+259	14	0
+260	14	0
+261	14	0
+262	14	0
+263	14	0
+264	14	0
+265	14	0
+266	14	0
+267	14	0
+268	14	0
+269	14	1.7156
+270	14	1.1589
+271	14	0.91579
+272	14	0.99966
+273	14	1.3157
+274	14	1.5609
+275	14	1.1155
+276	14	0.28422
+277	14	0.0057321
+278	14	0
+279	14	0
+280	14	0
+281	14	0
+282	14	0
+283	14	0
+284	14	0
+285	14	0
+286	14	0
+287	14	0
+288	14	0
+289	14	0
+290	14	0
+291	14	0
+292	14	0
+293	14	0
+294	14	0
+295	14	0
+296	14	0
+297	14	0
+298	14	0
+299	14	0.010326
+300	14	0
+301	14	0
+302	14	0
+303	14	0
+304	14	0
+305	14	0
+306	14	0
+307	14	0
+308	14	0
+309	14	0
+310	14	0
+311	14	0
+312	14	0
+313	14	0
+314	14	0
+315	14	0
+316	14	0
+317	14	0
+318	14	0
+319	14	0
+320	14	0
+321	14	0
+322	14	0
+323	14	0
+324	14	0
+325	14	0
+326	14	0
+327	14	0
+328	14	0
+329	14	0
+330	14	0
+331	14	0
+332	14	0
+333	14	0
+334	14	0
+335	14	0
+336	14	0
+337	14	0
+338	14	0
+339	14	0
+340	14	0
+341	14	0
+342	14	0
+343	14	0
+344	14	0.95523
+345	14	1.2705
+346	14	1.257
+347	14	1.0889
+348	14	0.88384
+349	14	0.60638
+350	14	0.44297
+351	14	0.51602
+352	14	0.57549
+353	14	0.87226
+354	14	0.87682
+355	14	0.78384
+356	14	0.63985
+357	14	0.76545
+358	14	0.77648
+359	14	0.78751
+360	14	0.90154
+0	14.5	0.88604
+1	14.5	0.78302
+2	14.5	0.98461
+3	14.5	0.84523
+4	14.5	0.62375
+5	14.5	0.49907
+6	14.5	0.43527
+7	14.5	0.31678
+8	14.5	0.22764
+9	14.5	0.2638
+10	14.5	0.20896
+11	14.5	0.2045
+12	14.5	0.17458
+13	14.5	0.13009
+14	14.5	0.06232
+15	14.5	0.035403
+16	14.5	0.046298
+17	14.5	0.080721
+18	14.5	0.14674
+19	14.5	0.16118
+20	14.5	0.11737
+21	14.5	0.060683
+22	14.5	0.046021
+23	14.5	0.046927
+24	14.5	0.060532
+25	14.5	0.060381
+26	14.5	0.063972
+27	14.5	0.070714
+28	14.5	0.08986
+29	14.5	0.11445
+30	14.5	0.15614
+31	14.5	0.21337
+32	14.5	0.62436
+33	14.5	0.75761
+34	14.5	0.52666
+35	14.5	0.24514
+36	14.5	0.28664
+37	14.5	0.82509
+38	14.5	1.0614
+39	14.5	0.67195
+40	14.5	0.22113
+41	14.5	0.039874
+42	14.5	0
+43	14.5	-0.0021981
+44	14.5	-0.0014506
+45	14.5	0.014087
+46	14.5	-0.0062859
+47	14.5	-0.24943
+48	14.5	-0.35749
+49	14.5	-0.066899
+50	14.5	0
+51	14.5	0
+52	14.5	0
+53	14.5	0
+54	14.5	0
+55	14.5	0
+56	14.5	0
+57	14.5	0
+58	14.5	0
+59	14.5	0
+60	14.5	0
+61	14.5	0
+62	14.5	0
+63	14.5	0
+64	14.5	0
+65	14.5	0
+66	14.5	0
+67	14.5	0
+68	14.5	0
+69	14.5	0
+70	14.5	0
+71	14.5	0
+72	14.5	0
+73	14.5	0
+74	14.5	0
+75	14.5	-0.011146
+76	14.5	-0.39647
+77	14.5	-0.39738
+78	14.5	0.072453
+79	14.5	0.37734
+80	14.5	0.38232
+81	14.5	0
+82	14.5	0
+83	14.5	0
+84	14.5	0
+85	14.5	0
+86	14.5	0
+87	14.5	0
+88	14.5	0
+89	14.5	0
+90	14.5	0
+91	14.5	0
+92	14.5	0
+93	14.5	0
+94	14.5	0
+95	14.5	0
+96	14.5	0
+97	14.5	0
+98	14.5	-2.3227
+99	14.5	-3.2361
+100	14.5	-2.615
+101	14.5	-2.4976
+102	14.5	-2.2758
+103	14.5	-1.79
+104	14.5	-1.3001
+105	14.5	-1.1147
+106	14.5	-0.95621
+107	14.5	-0.85255
+108	14.5	-0.59813
+109	14.5	-0.13387
+110	14.5	0
+111	14.5	0
+112	14.5	0
+113	14.5	0
+114	14.5	0
+115	14.5	0
+116	14.5	0
+117	14.5	0
+118	14.5	0
+119	14.5	0
+120	14.5	-0.087415
+121	14.5	-1.089
+122	14.5	0
+123	14.5	0
+124	14.5	0
+125	14.5	0
+126	14.5	0
+127	14.5	0
+128	14.5	0
+129	14.5	0
+130	14.5	0
+131	14.5	0
+132	14.5	0
+133	14.5	0
+134	14.5	0
+135	14.5	0
+136	14.5	0
+137	14.5	0
+138	14.5	0
+139	14.5	0
+140	14.5	0
+141	14.5	0
+142	14.5	0
+143	14.5	0
+144	14.5	0
+145	14.5	0
+146	14.5	0
+147	14.5	0
+148	14.5	0
+149	14.5	0
+150	14.5	0
+151	14.5	0
+152	14.5	0
+153	14.5	0
+154	14.5	0
+155	14.5	0
+156	14.5	0
+157	14.5	0
+158	14.5	0
+159	14.5	0
+160	14.5	0
+161	14.5	0
+162	14.5	0
+163	14.5	0
+164	14.5	0
+165	14.5	0
+166	14.5	0
+167	14.5	0
+168	14.5	0
+169	14.5	0
+170	14.5	0
+171	14.5	0
+172	14.5	0
+173	14.5	0
+174	14.5	0
+175	14.5	0
+176	14.5	0
+177	14.5	0
+178	14.5	0
+179	14.5	0
+180	14.5	0
+181	14.5	0
+182	14.5	0
+183	14.5	0
+184	14.5	0
+185	14.5	0
+186	14.5	0
+187	14.5	0
+188	14.5	0
+189	14.5	0
+190	14.5	0
+191	14.5	0
+192	14.5	0
+193	14.5	0
+194	14.5	0
+195	14.5	0
+196	14.5	0
+197	14.5	0
+198	14.5	0
+199	14.5	0
+200	14.5	0
+201	14.5	0
+202	14.5	0
+203	14.5	0
+204	14.5	0
+205	14.5	0
+206	14.5	0
+207	14.5	0
+208	14.5	0
+209	14.5	0
+210	14.5	0
+211	14.5	0
+212	14.5	0
+213	14.5	0
+214	14.5	0
+215	14.5	0
+216	14.5	0
+217	14.5	0
+218	14.5	0
+219	14.5	0
+220	14.5	0
+221	14.5	0
+222	14.5	0
+223	14.5	0
+224	14.5	0
+225	14.5	0
+226	14.5	0
+227	14.5	0
+228	14.5	0
+229	14.5	0
+230	14.5	0
+231	14.5	0
+232	14.5	0
+233	14.5	0
+234	14.5	0
+235	14.5	0
+236	14.5	0
+237	14.5	0
+238	14.5	0
+239	14.5	0
+240	14.5	0
+241	14.5	0
+242	14.5	0
+243	14.5	0
+244	14.5	0
+245	14.5	0
+246	14.5	0
+247	14.5	0
+248	14.5	0
+249	14.5	0
+250	14.5	0
+251	14.5	0
+252	14.5	0
+253	14.5	0
+254	14.5	0
+255	14.5	0
+256	14.5	0
+257	14.5	0
+258	14.5	0
+259	14.5	0
+260	14.5	0
+261	14.5	0
+262	14.5	0
+263	14.5	0
+264	14.5	0
+265	14.5	0
+266	14.5	0
+267	14.5	0
+268	14.5	1.0218
+269	14.5	3.3713
+270	14.5	2.0795
+271	14.5	1.179
+272	14.5	0.91947
+273	14.5	1.1537
+274	14.5	1.4141
+275	14.5	0.91903
+276	14.5	0.2799
+277	14.5	0.0011074
+278	14.5	0
+279	14.5	0
+280	14.5	0
+281	14.5	0
+282	14.5	0
+283	14.5	0
+284	14.5	0
+285	14.5	0
+286	14.5	0
+287	14.5	0
+288	14.5	0
+289	14.5	0
+290	14.5	0
+291	14.5	0
+292	14.5	0
+293	14.5	0
+294	14.5	0
+295	14.5	0
+296	14.5	0
+297	14.5	0
+298	14.5	0
+299	14.5	0.081
+300	14.5	0
+301	14.5	0
+302	14.5	0
+303	14.5	0
+304	14.5	0
+305	14.5	0
+306	14.5	0
+307	14.5	0
+308	14.5	0
+309	14.5	0
+310	14.5	0
+311	14.5	0
+312	14.5	0
+313	14.5	0
+314	14.5	0
+315	14.5	0
+316	14.5	0
+317	14.5	0
+318	14.5	0
+319	14.5	0
+320	14.5	0
+321	14.5	0
+322	14.5	0
+323	14.5	0
+324	14.5	0
+325	14.5	0
+326	14.5	0
+327	14.5	0
+328	14.5	0
+329	14.5	0
+330	14.5	0
+331	14.5	0
+332	14.5	0
+333	14.5	0
+334	14.5	0
+335	14.5	0
+336	14.5	0
+337	14.5	0
+338	14.5	0
+339	14.5	0
+340	14.5	0
+341	14.5	0
+342	14.5	0
+343	14.5	0.0094476
+344	14.5	0.72121
+345	14.5	1.0043
+346	14.5	0.97985
+347	14.5	0.90202
+348	14.5	0.67266
+349	14.5	0.471
+350	14.5	0.41094
+351	14.5	0.46098
+352	14.5	0.53271
+353	14.5	0.62978
+354	14.5	0.72658
+355	14.5	0.6336
+356	14.5	0.57369
+357	14.5	0.54665
+358	14.5	0.57324
+359	14.5	0.66582
+360	14.5	0.88604
+0	15	0.79286
+1	15	0.63873
+2	15	0.78287
+3	15	0.88329
+4	15	0.55434
+5	15	0.46329
+6	15	0.3623
+7	15	0.26619
+8	15	0.17592
+9	15	0.22387
+10	15	0.18492
+11	15	0.12909
+12	15	0.099443
+13	15	0.090746
+14	15	0.036429
+15	15	0.020458
+16	15	0.037182
+17	15	0.075321
+18	15	0.13944
+19	15	0.12419
+20	15	0.090647
+21	15	0.06217
+22	15	0.048793
+23	15	0.040376
+24	15	0.047851
+25	15	0.051442
+26	15	0.055033
+27	15	0.059595
+28	15	0.07874
+29	15	0.089293
+30	15	0.13098
+31	15	0.19645
+32	15	0.59612
+33	15	0.77291
+34	15	0.43817
+35	15	0.20895
+36	15	0.1753
+37	15	0.52219
+38	15	0.87093
+39	15	0.55392
+40	15	0.14855
+41	15	0
+42	15	0
+43	15	-0.010102
+44	15	-0.055111
+45	15	-0.052559
+46	15	-0.013575
+47	15	-0.25592
+48	15	-0.60421
+49	15	-0.39049
+50	15	-0.27966
+51	15	-0.043847
+52	15	0
+53	15	0
+54	15	0
+55	15	0
+56	15	0
+57	15	0
+58	15	0
+59	15	0
+60	15	0
+61	15	0
+62	15	0
+63	15	0
+64	15	0
+65	15	0
+66	15	0
+67	15	0
+68	15	0
+69	15	0
+70	15	0
+71	15	0
+72	15	0
+73	15	0
+74	15	0.048816
+75	15	0.031123
+76	15	-0.20221
+77	15	-0.22359
+78	15	0.25458
+79	15	0.51671
+80	15	0.35691
+81	15	0
+82	15	0
+83	15	0
+84	15	0
+85	15	0
+86	15	0
+87	15	0
+88	15	0
+89	15	0
+90	15	0
+91	15	0
+92	15	0
+93	15	0
+94	15	0
+95	15	0
+96	15	0
+97	15	0
+98	15	-2.2484
+99	15	-2.816
+100	15	-2.3572
+101	15	-2.0882
+102	15	-1.9396
+103	15	-1.5741
+104	15	-1.255
+105	15	-1.0766
+106	15	-0.88163
+107	15	-0.81052
+108	15	-0.58505
+109	15	-0.16101
+110	15	0
+111	15	0
+112	15	0
+113	15	0
+114	15	0
+115	15	0
+116	15	0
+117	15	0
+118	15	0
+119	15	0
+120	15	-0.47657
+121	15	-1.5343
+122	15	0
+123	15	0
+124	15	0
+125	15	0
+126	15	0
+127	15	0
+128	15	0
+129	15	0
+130	15	0
+131	15	0
+132	15	0
+133	15	0
+134	15	0
+135	15	0
+136	15	0
+137	15	0
+138	15	0
+139	15	0
+140	15	0
+141	15	0
+142	15	0
+143	15	0
+144	15	0
+145	15	0
+146	15	0
+147	15	0
+148	15	0
+149	15	0
+150	15	0
+151	15	0
+152	15	0
+153	15	0
+154	15	0
+155	15	0
+156	15	0
+157	15	0
+158	15	0
+159	15	0
+160	15	0
+161	15	0
+162	15	0
+163	15	0
+164	15	0
+165	15	0
+166	15	0
+167	15	0
+168	15	0
+169	15	0
+170	15	0
+171	15	0
+172	15	0
+173	15	0
+174	15	0
+175	15	0
+176	15	0
+177	15	0
+178	15	0
+179	15	0
+180	15	0
+181	15	0
+182	15	0
+183	15	0
+184	15	0
+185	15	0
+186	15	0
+187	15	0
+188	15	0
+189	15	0
+190	15	0
+191	15	0
+192	15	0
+193	15	0
+194	15	0
+195	15	0
+196	15	0
+197	15	0
+198	15	0
+199	15	0
+200	15	0
+201	15	0
+202	15	0
+203	15	0
+204	15	0
+205	15	0
+206	15	0
+207	15	0
+208	15	0
+209	15	0
+210	15	0
+211	15	0
+212	15	0
+213	15	0
+214	15	0
+215	15	0
+216	15	0
+217	15	0
+218	15	0
+219	15	0
+220	15	0
+221	15	0
+222	15	0
+223	15	0
+224	15	0
+225	15	0
+226	15	0
+227	15	0
+228	15	0
+229	15	0
+230	15	0
+231	15	0
+232	15	0
+233	15	0
+234	15	0
+235	15	0
+236	15	0
+237	15	0
+238	15	0
+239	15	0
+240	15	0
+241	15	0
+242	15	0
+243	15	0
+244	15	0
+245	15	0
+246	15	0
+247	15	0
+248	15	0
+249	15	0
+250	15	0
+251	15	0
+252	15	0
+253	15	0
+254	15	0
+255	15	0
+256	15	0
+257	15	0
+258	15	0
+259	15	0
+260	15	0
+261	15	0
+262	15	0
+263	15	0
+264	15	0
+265	15	0
+266	15	0
+267	15	0.29057
+268	15	2.3904
+269	15	3.1747
+270	15	2.2964
+271	15	1.5489
+272	15	1.0332
+273	15	0.98122
+274	15	1.1043
+275	15	0.7281
+276	15	0.17275
+277	15	0.00044054
+278	15	0
+279	15	0
+280	15	0
+281	15	0
+282	15	0
+283	15	0
+284	15	0
+285	15	0
+286	15	0
+287	15	0
+288	15	0
+289	15	0
+290	15	0
+291	15	0
+292	15	0
+293	15	0
+294	15	0
+295	15	0
+296	15	0
+297	15	0
+298	15	0.049006
+299	15	0.11799
+300	15	0
+301	15	0
+302	15	0
+303	15	0
+304	15	0
+305	15	0
+306	15	0
+307	15	0
+308	15	0
+309	15	0
+310	15	0
+311	15	0
+312	15	0
+313	15	0
+314	15	0
+315	15	0
+316	15	0
+317	15	0
+318	15	0
+319	15	0
+320	15	0
+321	15	0
+322	15	0
+323	15	0
+324	15	0
+325	15	0
+326	15	0
+327	15	0
+328	15	0
+329	15	0
+330	15	0
+331	15	0
+332	15	0
+333	15	0
+334	15	0
+335	15	0
+336	15	0
+337	15	0
+338	15	0
+339	15	0
+340	15	0
+341	15	0
+342	15	0
+343	15	0.08102
+344	15	0.58119
+345	15	0.91589
+346	15	1.0648
+347	15	0.81797
+348	15	0.52817
+349	15	0.42532
+350	15	0.37016
+351	15	0.40435
+352	15	0.47347
+353	15	0.50546
+354	15	0.57634
+355	15	0.51286
+356	15	0.50898
+357	15	0.43309
+358	15	0.38728
+359	15	0.58432
+360	15	0.79286
+0	15.5	0.58653
+1	15.5	0.52898
+2	15.5	0.55174
+3	15.5	0.6499
+4	15.5	0.38839
+5	15.5	0.40482
+6	15.5	0.28598
+7	15.5	0.20262
+8	15.5	0.1242
+9	15.5	0.1831
+10	15.5	0.16301
+11	15.5	0.10498
+12	15.5	0.075586
+13	15.5	0.046025
+14	15.5	0.020761
+15	15.5	0.0059395
+16	15.5	0.029303
+17	15.5	0.069383
+18	15.5	0.10417
+19	15.5	0.0886
+20	15.5	0.076372
+21	15.5	0.056348
+22	15.5	0.045025
+23	15.5	0.036024
+24	15.5	0.038911
+25	15.5	0.042502
+26	15.5	0.046093
+27	15.5	0.049684
+28	15.5	0.067621
+29	15.5	0.064132
+30	15.5	0.10735
+31	15.5	0.17953
+32	15.5	0.53783
+33	15.5	0.77505
+34	15.5	0.36011
+35	15.5	0.12696
+36	15.5	0.12962
+37	15.5	0.37083
+38	15.5	0.62077
+39	15.5	0.45316
+40	15.5	0
+41	15.5	0
+42	15.5	0
+43	15.5	-0.011607
+44	15.5	-0.066794
+45	15.5	-0.12639
+46	15.5	-0.018505
+47	15.5	-0.18417
+48	15.5	-0.53974
+49	15.5	-0.76959
+50	15.5	-0.60327
+51	15.5	-0.37492
+52	15.5	-0.022181
+53	15.5	0
+54	15.5	0
+55	15.5	0
+56	15.5	0
+57	15.5	0
+58	15.5	0
+59	15.5	0
+60	15.5	0
+61	15.5	0
+62	15.5	0
+63	15.5	0
+64	15.5	0
+65	15.5	0
+66	15.5	0
+67	15.5	0
+68	15.5	0
+69	15.5	0
+70	15.5	0
+71	15.5	0
+72	15.5	0
+73	15.5	0
+74	15.5	0.12237
+75	15.5	0.087855
+76	15.5	-0.084087
+77	15.5	-0.017272
+78	15.5	0.42272
+79	15.5	0.65609
+80	15.5	0.55313
+81	15.5	0.18199
+82	15.5	0
+83	15.5	0
+84	15.5	0
+85	15.5	0
+86	15.5	0
+87	15.5	0
+88	15.5	0
+89	15.5	0
+90	15.5	0
+91	15.5	0
+92	15.5	0
+93	15.5	0
+94	15.5	0.00052093
+95	15.5	-0.017436
+96	15.5	0
+97	15.5	0
+98	15.5	-1.6437
+99	15.5	-2.649
+100	15.5	-2.2662
+101	15.5	-1.8527
+102	15.5	-1.6126
+103	15.5	-1.3582
+104	15.5	-1.216
+105	15.5	-1.0384
+106	15.5	-0.84673
+107	15.5	-0.80928
+108	15.5	-0.55488
+109	15.5	0
+110	15.5	0
+111	15.5	0
+112	15.5	0
+113	15.5	0
+114	15.5	0
+115	15.5	0
+116	15.5	0
+117	15.5	0
+118	15.5	0
+119	15.5	0
+120	15.5	-0.81386
+121	15.5	-1.9285
+122	15.5	-0.49452
+123	15.5	0
+124	15.5	0
+125	15.5	0
+126	15.5	0
+127	15.5	0
+128	15.5	0
+129	15.5	0
+130	15.5	0
+131	15.5	0
+132	15.5	0
+133	15.5	0
+134	15.5	0
+135	15.5	0
+136	15.5	0
+137	15.5	0
+138	15.5	0
+139	15.5	0
+140	15.5	0
+141	15.5	0
+142	15.5	0
+143	15.5	0
+144	15.5	0
+145	15.5	0
+146	15.5	0
+147	15.5	0
+148	15.5	0
+149	15.5	0
+150	15.5	0
+151	15.5	0
+152	15.5	0
+153	15.5	0
+154	15.5	0
+155	15.5	0
+156	15.5	0
+157	15.5	0
+158	15.5	0
+159	15.5	0
+160	15.5	0
+161	15.5	0
+162	15.5	0
+163	15.5	0
+164	15.5	0
+165	15.5	0
+166	15.5	0
+167	15.5	0
+168	15.5	0
+169	15.5	0
+170	15.5	0
+171	15.5	0
+172	15.5	0
+173	15.5	0
+174	15.5	0
+175	15.5	0
+176	15.5	0
+177	15.5	0
+178	15.5	0
+179	15.5	0
+180	15.5	0
+181	15.5	0
+182	15.5	0
+183	15.5	0
+184	15.5	0
+185	15.5	0
+186	15.5	0
+187	15.5	0
+188	15.5	0
+189	15.5	0
+190	15.5	0
+191	15.5	0
+192	15.5	0
+193	15.5	0
+194	15.5	0
+195	15.5	0
+196	15.5	0
+197	15.5	0
+198	15.5	0
+199	15.5	0
+200	15.5	0
+201	15.5	0
+202	15.5	0
+203	15.5	0
+204	15.5	0
+205	15.5	0
+206	15.5	0
+207	15.5	0
+208	15.5	0
+209	15.5	0
+210	15.5	0
+211	15.5	0
+212	15.5	0
+213	15.5	0
+214	15.5	0
+215	15.5	0
+216	15.5	0
+217	15.5	0
+218	15.5	0
+219	15.5	0
+220	15.5	0
+221	15.5	0
+222	15.5	0
+223	15.5	0
+224	15.5	0
+225	15.5	0
+226	15.5	0
+227	15.5	0
+228	15.5	0
+229	15.5	0
+230	15.5	0
+231	15.5	0
+232	15.5	0
+233	15.5	0
+234	15.5	0
+235	15.5	0
+236	15.5	0
+237	15.5	0
+238	15.5	0
+239	15.5	0
+240	15.5	0
+241	15.5	0
+242	15.5	0
+243	15.5	0
+244	15.5	0
+245	15.5	0
+246	15.5	0
+247	15.5	0
+248	15.5	0
+249	15.5	0
+250	15.5	0
+251	15.5	0
+252	15.5	0
+253	15.5	0
+254	15.5	0
+255	15.5	0
+256	15.5	0
+257	15.5	0
+258	15.5	0
+259	15.5	0
+260	15.5	0
+261	15.5	0
+262	15.5	0
+263	15.5	0
+264	15.5	0.0065672
+265	15.5	0
+266	15.5	0
+267	15.5	1.3863
+268	15.5	2.5158
+269	15.5	2.6052
+270	15.5	1.9691
+271	15.5	1.6524
+272	15.5	1.3086
+273	15.5	0.8827
+274	15.5	0.75042
+275	15.5	0.50644
+276	15.5	0.1245
+277	15.5	0.00027078
+278	15.5	0
+279	15.5	0
+280	15.5	0
+281	15.5	0
+282	15.5	0
+283	15.5	0
+284	15.5	0
+285	15.5	0
+286	15.5	0
+287	15.5	0
+288	15.5	0
+289	15.5	0
+290	15.5	0
+291	15.5	0
+292	15.5	0
+293	15.5	0
+294	15.5	0
+295	15.5	0
+296	15.5	0
+297	15.5	0
+298	15.5	0.1228
+299	15.5	0.1365
+300	15.5	0
+301	15.5	0
+302	15.5	0
+303	15.5	0
+304	15.5	0
+305	15.5	0
+306	15.5	0
+307	15.5	0
+308	15.5	0
+309	15.5	0
+310	15.5	0
+311	15.5	0
+312	15.5	0
+313	15.5	0
+314	15.5	0
+315	15.5	0
+316	15.5	0
+317	15.5	0
+318	15.5	0
+319	15.5	0
+320	15.5	0
+321	15.5	0
+322	15.5	0
+323	15.5	0
+324	15.5	0
+325	15.5	0
+326	15.5	0
+327	15.5	0
+328	15.5	0
+329	15.5	0
+330	15.5	0
+331	15.5	0
+332	15.5	0
+333	15.5	0
+334	15.5	0
+335	15.5	0
+336	15.5	0
+337	15.5	0
+338	15.5	0
+339	15.5	0
+340	15.5	0
+341	15.5	0
+342	15.5	0
+343	15.5	0
+344	15.5	0.52503
+345	15.5	0.81611
+346	15.5	1.0389
+347	15.5	0.73391
+348	15.5	0.45421
+349	15.5	0.37964
+350	15.5	0.31245
+351	15.5	0.34511
+352	15.5	0.41424
+353	15.5	0.45382
+354	15.5	0.45395
+355	15.5	0.44815
+356	15.5	0.44426
+357	15.5	0.3802
+358	15.5	0.29358
+359	15.5	0.49115
+360	15.5	0.58653
+0	16	0.3829
+1	16	0.45353
+2	16	0.30837
+3	16	0.41491
+4	16	0.24538
+5	16	0.32634
+6	16	0.20966
+7	16	0.13282
+8	16	0.081047
+9	16	0.15286
+10	16	0.15072
+11	16	0.09342
+12	16	0.081854
+13	16	0.038624
+14	16	0.0085917
+15	16	0.00067878
+16	16	0.020964
+17	16	0.062923
+18	16	0.09092
+19	16	0.11437
+20	16	0.070582
+21	16	0.051126
+22	16	0.036881
+23	16	0.02788
+24	16	0.029971
+25	16	0.033562
+26	16	0.037153
+27	16	0.040744
+28	16	0.056501
+29	16	0.044056
+30	16	0.09043
+31	16	0.16261
+32	16	0.47955
+33	16	0.73952
+34	16	0.2999
+35	16	0.068791
+36	16	0.081468
+37	16	0.13799
+38	16	0.29099
+39	16	0.18982
+40	16	0
+41	16	0
+42	16	0
+43	16	-0.004462
+44	16	-0.038284
+45	16	-0.084473
+46	16	-0.027288
+47	16	-0.11616
+48	16	-0.46999
+49	16	-0.61131
+50	16	-0.78996
+51	16	-0.38159
+52	16	-0.084733
+53	16	0
+54	16	0
+55	16	0
+56	16	0
+57	16	0
+58	16	0
+59	16	0
+60	16	0
+61	16	0
+62	16	0
+63	16	0
+64	16	0
+65	16	0
+66	16	0
+67	16	0
+68	16	0
+69	16	0
+70	16	0
+71	16	0
+72	16	0
+73	16	0
+74	16	0.24305
+75	16	0.14619
+76	16	0.011586
+77	16	0.21135
+78	16	0.58605
+79	16	0.79645
+80	16	0.99407
+81	16	0.73473
+82	16	0
+83	16	0
+84	16	0
+85	16	0
+86	16	0
+87	16	0
+88	16	0
+89	16	0
+90	16	0
+91	16	0
+92	16	0
+93	16	0
+94	16	0.013608
+95	16	-0.14282
+96	16	-0.10926
+97	16	0
+98	16	-1.4087
+99	16	-2.4772
+100	16	-2.1729
+101	16	-1.7932
+102	16	-1.4231
+103	16	-1.1563
+104	16	-1.0427
+105	16	-0.93288
+106	16	-0.75539
+107	16	-0.72669
+108	16	-0.35617
+109	16	0
+110	16	0
+111	16	0
+112	16	0
+113	16	0
+114	16	0
+115	16	0
+116	16	0
+117	16	0
+118	16	0
+119	16	0
+120	16	-0.85037
+121	16	-1.6152
+122	16	-0.64966
+123	16	0
+124	16	0
+125	16	0
+126	16	0
+127	16	0
+128	16	0
+129	16	0
+130	16	0
+131	16	0
+132	16	0
+133	16	0
+134	16	0
+135	16	0
+136	16	0
+137	16	0
+138	16	0
+139	16	0
+140	16	0
+141	16	0
+142	16	0
+143	16	0
+144	16	0
+145	16	0
+146	16	0
+147	16	0
+148	16	0
+149	16	0
+150	16	0
+151	16	0
+152	16	0
+153	16	0
+154	16	0
+155	16	0
+156	16	0
+157	16	0
+158	16	0
+159	16	0
+160	16	0
+161	16	0
+162	16	0
+163	16	0
+164	16	0
+165	16	0
+166	16	0
+167	16	0
+168	16	0
+169	16	0
+170	16	0
+171	16	0
+172	16	0
+173	16	0
+174	16	0
+175	16	0
+176	16	0
+177	16	0
+178	16	0
+179	16	0
+180	16	0
+181	16	0
+182	16	0
+183	16	0
+184	16	0
+185	16	0
+186	16	0
+187	16	0
+188	16	0
+189	16	0
+190	16	0
+191	16	0
+192	16	0
+193	16	0
+194	16	0
+195	16	0
+196	16	0
+197	16	0
+198	16	0
+199	16	0
+200	16	0
+201	16	0
+202	16	0
+203	16	0
+204	16	0
+205	16	0
+206	16	0
+207	16	0
+208	16	0
+209	16	0
+210	16	0
+211	16	0
+212	16	0
+213	16	0
+214	16	0
+215	16	0
+216	16	0
+217	16	0
+218	16	0
+219	16	0
+220	16	0
+221	16	0
+222	16	0
+223	16	0
+224	16	0
+225	16	0
+226	16	0
+227	16	0
+228	16	0
+229	16	0
+230	16	0
+231	16	0
+232	16	0
+233	16	0
+234	16	0
+235	16	0
+236	16	0
+237	16	0
+238	16	0
+239	16	0
+240	16	0
+241	16	0
+242	16	0
+243	16	0
+244	16	0
+245	16	0
+246	16	0
+247	16	0
+248	16	0
+249	16	0
+250	16	0
+251	16	0
+252	16	0
+253	16	0
+254	16	0
+255	16	0
+256	16	0
+257	16	0
+258	16	0
+259	16	0
+260	16	0
+261	16	0
+262	16	-0.0016448
+263	16	-0.021294
+264	16	0.026932
+265	16	0.028602
+266	16	0.075305
+267	16	0.28985
+268	16	1.7747
+269	16	1.6883
+270	16	1.3934
+271	16	0.6819
+272	16	0.38713
+273	16	0.30179
+274	16	0.14196
+275	16	0.15464
+276	16	0
+277	16	0
+278	16	0
+279	16	0
+280	16	0
+281	16	0
+282	16	0
+283	16	0
+284	16	0
+285	16	0
+286	16	0
+287	16	0
+288	16	0
+289	16	0
+290	16	0
+291	16	0
+292	16	0
+293	16	0
+294	16	0
+295	16	0
+296	16	0
+297	16	0
+298	16	0.16159
+299	16	0.15502
+300	16	0
+301	16	0
+302	16	0
+303	16	0
+304	16	0
+305	16	0
+306	16	0
+307	16	0
+308	16	0
+309	16	0
+310	16	0
+311	16	0
+312	16	0
+313	16	0
+314	16	0
+315	16	0
+316	16	0
+317	16	0
+318	16	0
+319	16	0
+320	16	0
+321	16	0
+322	16	0
+323	16	0
+324	16	0
+325	16	0
+326	16	0
+327	16	0
+328	16	0
+329	16	0
+330	16	0
+331	16	0
+332	16	0
+333	16	0
+334	16	0
+335	16	0
+336	16	0
+337	16	0
+338	16	0
+339	16	0
+340	16	0
+341	16	0
+342	16	0
+343	16	0
+344	16	0.44513
+345	16	0.70718
+346	16	0.84753
+347	16	0.66952
+348	16	0.38395
+349	16	0.32038
+350	16	0.25474
+351	16	0.29614
+352	16	0.355
+353	16	0.40218
+354	16	0.39404
+355	16	0.38344
+356	16	0.37955
+357	16	0.32731
+358	16	0.2469
+359	16	0.39797
+360	16	0.3829
+0	16.5	0.30744
+1	16.5	0.37808
+2	16.5	0.30056
+3	16.5	0.31464
+4	16.5	0.12279
+5	16.5	0.23111
+6	16.5	0.13334
+7	16.5	0.063028
+8	16.5	0.057094
+9	16.5	0.12937
+10	16.5	0.1397
+11	16.5	0.082078
+12	16.5	0.074998
+13	16.5	0.047016
+14	16.5	0.00024587
+15	16.5	-0.0038894
+16	16.5	0.01354
+17	16.5	0.054633
+18	16.5	0.098466
+19	16.5	0.1296
+20	16.5	0.064792
+21	16.5	0.045903
+22	16.5	0.029476
+23	16.5	0.019736
+24	16.5	0.021478
+25	16.5	0.024622
+26	16.5	0.028213
+27	16.5	0.031804
+28	16.5	0.045382
+29	16.5	0.026496
+30	16.5	0.073512
+31	16.5	0.14569
+32	16.5	0.4185
+33	16.5	0.88142
+34	16.5	0.27433
+35	16.5	0.22746
+36	16.5	0.069734
+37	16.5	0.082836
+38	16.5	0.11843
+39	16.5	0.087573
+40	16.5	0
+41	16.5	0
+42	16.5	0
+43	16.5	-0.001366
+44	16.5	-0.0077171
+45	16.5	-0.0085163
+46	16.5	-0.0047844
+47	16.5	-0.051823
+48	16.5	-0.30515
+49	16.5	-0.37616
+50	16.5	-0.50494
+51	16.5	-0.29038
+52	16.5	-0.077367
+53	16.5	0.00034787
+54	16.5	0
+55	16.5	0
+56	16.5	0
+57	16.5	0
+58	16.5	0
+59	16.5	0
+60	16.5	0
+61	16.5	0
+62	16.5	0
+63	16.5	0
+64	16.5	0
+65	16.5	0
+66	16.5	0
+67	16.5	0
+68	16.5	0
+69	16.5	0
+70	16.5	0
+71	16.5	0
+72	16.5	0
+73	16.5	0.045049
+74	16.5	0.31498
+75	16.5	0.19854
+76	16.5	0.1141
+77	16.5	0.34353
+78	16.5	0.73861
+79	16.5	0.94213
+80	16.5	1.4079
+81	16.5	1.1848
+82	16.5	0
+83	16.5	0
+84	16.5	0
+85	16.5	0
+86	16.5	0
+87	16.5	0
+88	16.5	0
+89	16.5	0
+90	16.5	0
+91	16.5	0
+92	16.5	0
+93	16.5	0
+94	16.5	0.0030128
+95	16.5	-0.057273
+96	16.5	-0.26592
+97	16.5	0
+98	16.5	-2.164
+99	16.5	-2.2402
+100	16.5	-2.0459
+101	16.5	-1.7368
+102	16.5	-1.2959
+103	16.5	-0.96535
+104	16.5	-0.87059
+105	16.5	-0.79402
+106	16.5	-0.6089
+107	16.5	-0.46225
+108	16.5	-0.12489
+109	16.5	0
+110	16.5	0
+111	16.5	0
+112	16.5	0
+113	16.5	0
+114	16.5	0
+115	16.5	0
+116	16.5	0
+117	16.5	0
+118	16.5	0
+119	16.5	0
+120	16.5	-0.449
+121	16.5	-1.3197
+122	16.5	-0.4802
+123	16.5	0
+124	16.5	0
+125	16.5	0
+126	16.5	0
+127	16.5	0
+128	16.5	0
+129	16.5	0
+130	16.5	0
+131	16.5	0
+132	16.5	0
+133	16.5	0
+134	16.5	0
+135	16.5	0
+136	16.5	0
+137	16.5	0
+138	16.5	0
+139	16.5	0
+140	16.5	0
+141	16.5	0
+142	16.5	0
+143	16.5	0
+144	16.5	0
+145	16.5	0
+146	16.5	0
+147	16.5	0
+148	16.5	0
+149	16.5	0
+150	16.5	0
+151	16.5	0
+152	16.5	0
+153	16.5	0
+154	16.5	0
+155	16.5	0
+156	16.5	0
+157	16.5	0
+158	16.5	0
+159	16.5	0
+160	16.5	0
+161	16.5	0
+162	16.5	0
+163	16.5	0
+164	16.5	0
+165	16.5	0
+166	16.5	0
+167	16.5	0
+168	16.5	0
+169	16.5	0
+170	16.5	0
+171	16.5	0
+172	16.5	0
+173	16.5	0
+174	16.5	0
+175	16.5	0
+176	16.5	0
+177	16.5	0
+178	16.5	0
+179	16.5	0
+180	16.5	0
+181	16.5	0
+182	16.5	0
+183	16.5	0
+184	16.5	0
+185	16.5	0
+186	16.5	0
+187	16.5	0
+188	16.5	0
+189	16.5	0
+190	16.5	0
+191	16.5	0
+192	16.5	0
+193	16.5	0
+194	16.5	0
+195	16.5	0
+196	16.5	0
+197	16.5	0
+198	16.5	0
+199	16.5	0
+200	16.5	0
+201	16.5	0
+202	16.5	0
+203	16.5	0
+204	16.5	0
+205	16.5	0
+206	16.5	0
+207	16.5	0
+208	16.5	0
+209	16.5	0
+210	16.5	0
+211	16.5	0
+212	16.5	0
+213	16.5	0
+214	16.5	0
+215	16.5	0
+216	16.5	0
+217	16.5	0
+218	16.5	0
+219	16.5	0
+220	16.5	0
+221	16.5	0
+222	16.5	0
+223	16.5	0
+224	16.5	0
+225	16.5	0
+226	16.5	0
+227	16.5	0
+228	16.5	0
+229	16.5	0
+230	16.5	0
+231	16.5	0
+232	16.5	0
+233	16.5	0
+234	16.5	0
+235	16.5	0
+236	16.5	0
+237	16.5	0
+238	16.5	0
+239	16.5	0
+240	16.5	0
+241	16.5	0
+242	16.5	0
+243	16.5	0
+244	16.5	0
+245	16.5	0
+246	16.5	0
+247	16.5	0
+248	16.5	0
+249	16.5	0
+250	16.5	0
+251	16.5	0
+252	16.5	0
+253	16.5	0
+254	16.5	0
+255	16.5	0
+256	16.5	0
+257	16.5	0
+258	16.5	0
+259	16.5	0
+260	16.5	-0.047694
+261	16.5	-0.0075394
+262	16.5	-0.039381
+263	16.5	-0.023344
+264	16.5	0.1202
+265	16.5	0.18704
+266	16.5	0.4388
+267	16.5	1.0772
+268	16.5	1.4189
+269	16.5	1.0315
+270	16.5	0.97208
+271	16.5	-0.081024
+272	16.5	0
+273	16.5	0
+274	16.5	0
+275	16.5	0
+276	16.5	0
+277	16.5	0
+278	16.5	0
+279	16.5	0
+280	16.5	0
+281	16.5	0
+282	16.5	0
+283	16.5	0
+284	16.5	0
+285	16.5	0
+286	16.5	0
+287	16.5	0
+288	16.5	0
+289	16.5	0
+290	16.5	0
+291	16.5	0
+292	16.5	0
+293	16.5	0
+294	16.5	0
+295	16.5	0
+296	16.5	0
+297	16.5	0
+298	16.5	0.19022
+299	16.5	0.16402
+300	16.5	0
+301	16.5	0
+302	16.5	0
+303	16.5	0
+304	16.5	0
+305	16.5	0
+306	16.5	0
+307	16.5	0
+308	16.5	0
+309	16.5	0
+310	16.5	0
+311	16.5	0
+312	16.5	0
+313	16.5	0
+314	16.5	0
+315	16.5	0
+316	16.5	0
+317	16.5	0
+318	16.5	0
+319	16.5	0
+320	16.5	0
+321	16.5	0
+322	16.5	0
+323	16.5	0
+324	16.5	0
+325	16.5	0
+326	16.5	0
+327	16.5	0
+328	16.5	0
+329	16.5	0
+330	16.5	0
+331	16.5	0
+332	16.5	0
+333	16.5	0
+334	16.5	0
+335	16.5	0
+336	16.5	0
+337	16.5	0
+338	16.5	0
+339	16.5	0
+340	16.5	0
+341	16.5	0
+342	16.5	0
+343	16.5	0
+344	16.5	0.34507
+345	16.5	0.57808
+346	16.5	0.63232
+347	16.5	0.55824
+348	16.5	0.30721
+349	16.5	0.24103
+350	16.5	0.20686
+351	16.5	0.25037
+352	16.5	0.29576
+353	16.5	0.35053
+354	16.5	0.33413
+355	16.5	0.3193
+356	16.5	0.31484
+357	16.5	0.27442
+358	16.5	0.20022
+359	16.5	0.3048
+360	16.5	0.30744
+0	17	0.23199
+1	17	0.30262
+2	17	0.28414
+3	17	0.2262
+4	17	0.068641
+5	17	0.11217
+6	17	0.061675
+7	17	0.016316
+8	17	0.03314
+9	17	0.10589
+10	17	0.12539
+11	17	0.071905
+12	17	0.068075
+13	17	0.034893
+14	17	-0.0042115
+15	17	-0.0079876
+16	17	0.0061152
+17	17	0.045604
+18	17	0.091623
+19	17	0.11979
+20	17	0.059002
+21	17	0.040681
+22	17	0.024253
+23	17	0.011833
+24	17	0.013018
+25	17	0.016041
+26	17	0.019273
+27	17	0.022864
+28	17	0.034263
+29	17	0.0089349
+30	17	0.054842
+31	17	0.12878
+32	17	0.35316
+33	17	0.85117
+34	17	0.57897
+35	17	0.36139
+36	17	0.024493
+37	17	0.033094
+38	17	0.039638
+39	17	0.024824
+40	17	0
+41	17	0
+42	17	-3.7704e-05
+43	17	-0.01146
+44	17	-0.0010576
+45	17	0.025572
+46	17	0.033374
+47	17	0.0019913
+48	17	-0.18443
+49	17	-0.29663
+50	17	-0.32576
+51	17	-0.2262
+52	17	-0.083064
+53	17	0.0052486
+54	17	-0.0015785
+55	17	-0.003895
+56	17	0
+57	17	0
+58	17	0
+59	17	0
+60	17	0
+61	17	0
+62	17	0
+63	17	0
+64	17	0
+65	17	0
+66	17	0
+67	17	0
+68	17	0
+69	17	0
+70	17	0
+71	17	0
+72	17	0
+73	17	0.13342
+74	17	0.36745
+75	17	0.25357
+76	17	0.20297
+77	17	0.35084
+78	17	0.75352
+79	17	0.93382
+80	17	1.0882
+81	17	1.1627
+82	17	0.036633
+83	17	-0.018589
+84	17	0
+85	17	0
+86	17	0
+87	17	0
+88	17	0
+89	17	0
+90	17	0
+91	17	0
+92	17	0
+93	17	0
+94	17	0
+95	17	-0.026862
+96	17	-0.2216
+97	17	-1.148
+98	17	-2.1504
+99	17	-1.9863
+100	17	-1.7292
+101	17	-1.4974
+102	17	-1.1615
+103	17	-0.78684
+104	17	-0.6708
+105	17	-0.5857
+106	17	-0.4696
+107	17	-0.14375
+108	17	0
+109	17	0
+110	17	0
+111	17	0
+112	17	0
+113	17	0
+114	17	0
+115	17	0
+116	17	0
+117	17	0
+118	17	0
+119	17	0
+120	17	0
+121	17	-0.99927
+122	17	-0.38678
+123	17	0
+124	17	0
+125	17	0
+126	17	0
+127	17	0
+128	17	0
+129	17	0
+130	17	0
+131	17	0
+132	17	0
+133	17	0
+134	17	0
+135	17	0
+136	17	0
+137	17	0
+138	17	0
+139	17	0
+140	17	0
+141	17	0
+142	17	0
+143	17	0
+144	17	0
+145	17	0
+146	17	0
+147	17	0
+148	17	0
+149	17	0
+150	17	0
+151	17	0
+152	17	0
+153	17	0
+154	17	0
+155	17	0
+156	17	0
+157	17	0
+158	17	0
+159	17	0
+160	17	0
+161	17	0
+162	17	0
+163	17	0
+164	17	0
+165	17	0
+166	17	0
+167	17	0
+168	17	0
+169	17	0
+170	17	0
+171	17	0
+172	17	0
+173	17	0
+174	17	0
+175	17	0
+176	17	0
+177	17	0
+178	17	0
+179	17	0
+180	17	0
+181	17	0
+182	17	0
+183	17	0
+184	17	0
+185	17	0
+186	17	0
+187	17	0
+188	17	0
+189	17	0
+190	17	0
+191	17	0
+192	17	0
+193	17	0
+194	17	0
+195	17	0
+196	17	0
+197	17	0
+198	17	0
+199	17	0
+200	17	0
+201	17	0
+202	17	0
+203	17	0
+204	17	0
+205	17	0
+206	17	0
+207	17	0
+208	17	0
+209	17	0
+210	17	0
+211	17	0
+212	17	0
+213	17	0
+214	17	0
+215	17	0
+216	17	0
+217	17	0
+218	17	0
+219	17	0
+220	17	0
+221	17	0
+222	17	0
+223	17	0
+224	17	0
+225	17	0
+226	17	0
+227	17	0
+228	17	0
+229	17	0
+230	17	0
+231	17	0
+232	17	0
+233	17	0
+234	17	0
+235	17	0
+236	17	0
+237	17	0
+238	17	0
+239	17	0
+240	17	0
+241	17	0
+242	17	0
+243	17	0
+244	17	0
+245	17	0
+246	17	0
+247	17	0
+248	17	0
+249	17	0
+250	17	0
+251	17	0
+252	17	0
+253	17	0
+254	17	0
+255	17	0
+256	17	0
+257	17	0
+258	17	0
+259	17	-0.06554
+260	17	-0.10564
+261	17	-0.11154
+262	17	-0.079413
+263	17	0.047516
+264	17	0.33957
+265	17	0.79771
+266	17	1.2994
+267	17	1.7061
+268	17	1.3999
+269	17	0.66136
+270	17	0.57308
+271	17	0.51823
+272	17	0.062378
+273	17	0
+274	17	0
+275	17	0
+276	17	0
+277	17	0
+278	17	0
+279	17	0
+280	17	0
+281	17	0
+282	17	0
+283	17	-0.0019283
+284	17	0
+285	17	0
+286	17	0
+287	17	0
+288	17	0
+289	17	0
+290	17	0
+291	17	0
+292	17	0
+293	17	0
+294	17	0
+295	17	0
+296	17	0
+297	17	0
+298	17	0.14996
+299	17	0.15661
+300	17	0
+301	17	0
+302	17	0
+303	17	0
+304	17	0
+305	17	0
+306	17	0
+307	17	0
+308	17	0
+309	17	0
+310	17	0
+311	17	0
+312	17	0
+313	17	0
+314	17	0
+315	17	0
+316	17	0
+317	17	0
+318	17	0
+319	17	0
+320	17	0
+321	17	0
+322	17	0
+323	17	0
+324	17	0
+325	17	0
+326	17	0
+327	17	0
+328	17	0
+329	17	0
+330	17	0
+331	17	0
+332	17	0
+333	17	0
+334	17	0
+335	17	0
+336	17	0
+337	17	0
+338	17	0
+339	17	0
+340	17	0
+341	17	0
+342	17	0
+343	17	0
+344	17	0.19
+345	17	0.30474
+346	17	0.38596
+347	17	0.40003
+348	17	0.20197
+349	17	0.19387
+350	17	0.16626
+351	17	0.2046
+352	17	0.24817
+353	17	0.29889
+354	17	0.27422
+355	17	0.25842
+356	17	0.25013
+357	17	0.22152
+358	17	0.15355
+359	17	0.16136
+360	17	0.23199
+0	17.5	0.194
+1	17.5	0.24197
+2	17.5	0.22464
+3	17.5	0.13775
+4	17.5	0.052245
+5	17.5	0.011291
+6	17.5	-0.0022748
+7	17.5	-0.019088
+8	17.5	0.009536
+9	17.5	0.082412
+10	17.5	0.098485
+11	17.5	0.064324
+12	17.5	0.061337
+13	17.5	0.02396
+14	17.5	-0.0084849
+15	17.5	-0.013393
+16	17.5	-0.0025941
+17	17.5	0.037639
+18	17.5	0.081239
+19	17.5	0.10567
+20	17.5	0.053212
+21	17.5	0.035458
+22	17.5	0.019031
+23	17.5	0.0039414
+24	17.5	0.0049999
+25	17.5	0.0075807
+26	17.5	0.010604
+27	17.5	0.013924
+28	17.5	0.023143
+29	17.5	-0.099677
+30	17.5	-0.062635
+31	17.5	0.051362
+32	17.5	0.3132
+33	17.5	0.82092
+34	17.5	0.88361
+35	17.5	0.38037
+36	17.5	0.0056664
+37	17.5	0.013676
+38	17.5	0.026122
+39	17.5	0.0086905
+40	17.5	0
+41	17.5	0
+42	17.5	-0.0028634
+43	17.5	-0.019938
+44	17.5	-0.011866
+45	17.5	0.033176
+46	17.5	0.070574
+47	17.5	0.071011
+48	17.5	-0.096546
+49	17.5	-0.27859
+50	17.5	-0.27326
+51	17.5	-0.19632
+52	17.5	-0.086918
+53	17.5	-0.012381
+54	17.5	0.00055177
+55	17.5	-0.010265
+56	17.5	0
+57	17.5	0
+58	17.5	0
+59	17.5	0
+60	17.5	0
+61	17.5	0
+62	17.5	0
+63	17.5	0
+64	17.5	0
+65	17.5	0
+66	17.5	0
+67	17.5	0
+68	17.5	0
+69	17.5	0
+70	17.5	0
+71	17.5	0
+72	17.5	0
+73	17.5	0.17277
+74	17.5	0.41009
+75	17.5	0.33512
+76	17.5	0.30923
+77	17.5	0.48151
+78	17.5	0.72866
+79	17.5	0.84384
+80	17.5	0.94843
+81	17.5	0.92661
+82	17.5	0.13018
+83	17.5	-0.094243
+84	17.5	0
+85	17.5	0
+86	17.5	0
+87	17.5	0
+88	17.5	0
+89	17.5	0
+90	17.5	0
+91	17.5	0
+92	17.5	0
+93	17.5	0
+94	17.5	0
+95	17.5	-0.020105
+96	17.5	-0.20274
+97	17.5	-1.2209
+98	17.5	-1.9428
+99	17.5	-1.7544
+100	17.5	-1.4874
+101	17.5	-1.2347
+102	17.5	-0.98037
+103	17.5	-0.69459
+104	17.5	-0.47617
+105	17.5	-0.38321
+106	17.5	-0.29742
+107	17.5	-0.003019
+108	17.5	0
+109	17.5	0
+110	17.5	0
+111	17.5	0
+112	17.5	0
+113	17.5	0
+114	17.5	0
+115	17.5	0
+116	17.5	0
+117	17.5	0
+118	17.5	0
+119	17.5	0
+120	17.5	0
+121	17.5	-0.59595
+122	17.5	-0.31627
+123	17.5	0
+124	17.5	0
+125	17.5	0
+126	17.5	0
+127	17.5	0
+128	17.5	0
+129	17.5	0
+130	17.5	0
+131	17.5	0
+132	17.5	0
+133	17.5	0
+134	17.5	0
+135	17.5	0
+136	17.5	0
+137	17.5	0
+138	17.5	0
+139	17.5	0
+140	17.5	0
+141	17.5	0
+142	17.5	0
+143	17.5	0
+144	17.5	0
+145	17.5	0
+146	17.5	0
+147	17.5	0
+148	17.5	0
+149	17.5	0
+150	17.5	0
+151	17.5	0
+152	17.5	0
+153	17.5	0
+154	17.5	0
+155	17.5	0
+156	17.5	0
+157	17.5	0
+158	17.5	0
+159	17.5	0
+160	17.5	0
+161	17.5	0
+162	17.5	0
+163	17.5	0
+164	17.5	0
+165	17.5	0
+166	17.5	0
+167	17.5	0
+168	17.5	0
+169	17.5	0
+170	17.5	0
+171	17.5	0
+172	17.5	0
+173	17.5	0
+174	17.5	0
+175	17.5	0
+176	17.5	0
+177	17.5	0
+178	17.5	0
+179	17.5	0
+180	17.5	0
+181	17.5	0
+182	17.5	0
+183	17.5	0
+184	17.5	0
+185	17.5	0
+186	17.5	0
+187	17.5	0
+188	17.5	0
+189	17.5	0
+190	17.5	0
+191	17.5	0
+192	17.5	0
+193	17.5	0
+194	17.5	0
+195	17.5	0
+196	17.5	0
+197	17.5	0
+198	17.5	0
+199	17.5	0
+200	17.5	0
+201	17.5	0
+202	17.5	0
+203	17.5	0
+204	17.5	0
+205	17.5	0
+206	17.5	0
+207	17.5	0
+208	17.5	0
+209	17.5	0
+210	17.5	0
+211	17.5	0
+212	17.5	0
+213	17.5	0
+214	17.5	0
+215	17.5	0
+216	17.5	0
+217	17.5	0
+218	17.5	0
+219	17.5	0
+220	17.5	0
+221	17.5	0
+222	17.5	0
+223	17.5	0
+224	17.5	0
+225	17.5	0
+226	17.5	0
+227	17.5	0
+228	17.5	0
+229	17.5	0
+230	17.5	0
+231	17.5	0
+232	17.5	0
+233	17.5	0
+234	17.5	0
+235	17.5	0
+236	17.5	0
+237	17.5	0
+238	17.5	0
+239	17.5	0
+240	17.5	0
+241	17.5	0
+242	17.5	0
+243	17.5	0
+244	17.5	0
+245	17.5	0
+246	17.5	0
+247	17.5	0
+248	17.5	0
+249	17.5	0
+250	17.5	0
+251	17.5	0
+252	17.5	0
+253	17.5	0
+254	17.5	0
+255	17.5	0
+256	17.5	0
+257	17.5	0
+258	17.5	0
+259	17.5	-0.13243
+260	17.5	-0.21976
+261	17.5	-0.22675
+262	17.5	-0.12674
+263	17.5	0.042957
+264	17.5	0.57399
+265	17.5	1.3157
+266	17.5	1.8378
+267	17.5	2.4185
+268	17.5	1.7716
+269	17.5	0.77209
+270	17.5	0.56039
+271	17.5	0.79332
+272	17.5	0.031054
+273	17.5	0
+274	17.5	0
+275	17.5	0
+276	17.5	0
+277	17.5	0
+278	17.5	0
+279	17.5	0
+280	17.5	0
+281	17.5	0
+282	17.5	0
+283	17.5	-0.0047744
+284	17.5	0
+285	17.5	0
+286	17.5	0.023195
+287	17.5	0
+288	17.5	0.39031
+289	17.5	0
+290	17.5	0
+291	17.5	0
+292	17.5	0
+293	17.5	0
+294	17.5	0
+295	17.5	0
+296	17.5	0
+297	17.5	0
+298	17.5	0.072059
+299	17.5	0.089611
+300	17.5	0
+301	17.5	0
+302	17.5	0
+303	17.5	0
+304	17.5	0
+305	17.5	0
+306	17.5	0
+307	17.5	0
+308	17.5	0
+309	17.5	0
+310	17.5	0
+311	17.5	0
+312	17.5	0
+313	17.5	0
+314	17.5	0
+315	17.5	0
+316	17.5	0
+317	17.5	0
+318	17.5	0
+319	17.5	0
+320	17.5	0
+321	17.5	0
+322	17.5	0
+323	17.5	0
+324	17.5	0
+325	17.5	0
+326	17.5	0
+327	17.5	0
+328	17.5	0
+329	17.5	0
+330	17.5	0
+331	17.5	0
+332	17.5	0
+333	17.5	0
+334	17.5	0
+335	17.5	0
+336	17.5	0
+337	17.5	0
+338	17.5	0
+339	17.5	0
+340	17.5	0
+341	17.5	0
+342	17.5	0
+343	17.5	0
+344	17.5	0.11748
+345	17.5	0.14904
+346	17.5	0.19446
+347	17.5	0.13942
+348	17.5	0.16951
+349	17.5	0.16354
+350	17.5	0.138
+351	17.5	0.15883
+352	17.5	0.2024
+353	17.5	0.24641
+354	17.5	0.21431
+355	17.5	0.19755
+356	17.5	0.18542
+357	17.5	0.16863
+358	17.5	0.10687
+359	17.5	0.13385
+360	17.5	0.194
+0	18	0.17887
+1	18	0.19188
+2	18	0.16514
+3	18	0.049309
+4	18	0.035849
+5	18	-0.0048965
+6	18	-0.029793
+7	18	-0.042995
+8	18	-0.013945
+9	18	0.05824
+10	18	0.070178
+11	18	0.059527
+12	18	0.05411
+13	18	0.013994
+14	18	-0.012579
+15	18	-0.019277
+16	18	-0.0069188
+17	18	0.030797
+18	18	0.066646
+19	18	0.09155
+20	18	0.051296
+21	18	0.030528
+22	18	0.014847
+23	18	0.0024441
+24	18	-0.0028919
+25	18	-0.00087942
+26	18	0.0021437
+27	18	0.0051667
+28	18	0.0090925
+29	18	-0.22664
+30	18	-0.18011
+31	18	-0.066115
+32	18	0.33745
+33	18	0.79067
+34	18	1.1883
+35	18	0.324
+36	18	0.0028494
+37	18	0.0056517
+38	18	0.01214
+39	18	0.0043822
+40	18	0
+41	18	0
+42	18	0.002056
+43	18	-0.00080398
+44	18	-0.0037084
+45	18	0.03625
+46	18	0.079023
+47	18	0.092396
+48	18	-0.011193
+49	18	-0.22409
+50	18	-0.22486
+51	18	-0.16346
+52	18	-0.076602
+53	18	-0.016571
+54	18	0.0008108
+55	18	-0.0055824
+56	18	-0.0039445
+57	18	0
+58	18	0
+59	18	0
+60	18	0
+61	18	0
+62	18	0
+63	18	0
+64	18	0
+65	18	0
+66	18	0
+67	18	0
+68	18	0
+69	18	0
+70	18	0
+71	18	0
+72	18	0
+73	18	0.20644
+74	18	0.48143
+75	18	0.43761
+76	18	0.37165
+77	18	0.52316
+78	18	0.74482
+79	18	0.79852
+80	18	0.8626
+81	18	0.66984
+82	18	0.19236
+83	18	-0.17637
+84	18	-0.042812
+85	18	0
+86	18	0
+87	18	0
+88	18	0
+89	18	0
+90	18	0
+91	18	0
+92	18	0
+93	18	0
+94	18	0
+95	18	-0.017853
+96	18	-0.19749
+97	18	-0.97539
+98	18	-1.6449
+99	18	-1.4666
+100	18	-1.2412
+101	18	-1.0747
+102	18	-0.86902
+103	18	-0.60209
+104	18	-0.35023
+105	18	-0.19435
+106	18	-0.15508
+107	18	0
+108	18	0
+109	18	0
+110	18	-0.028352
+111	18	0
+112	18	0
+113	18	0
+114	18	0
+115	18	0
+116	18	0
+117	18	0
+118	18	0
+119	18	0
+120	18	0
+121	18	-0.18251
+122	18	-0.16379
+123	18	0
+124	18	0
+125	18	0
+126	18	0
+127	18	0
+128	18	0
+129	18	0
+130	18	0
+131	18	0
+132	18	0
+133	18	0
+134	18	0
+135	18	0
+136	18	0
+137	18	0
+138	18	0
+139	18	0
+140	18	0
+141	18	0
+142	18	0
+143	18	0
+144	18	0
+145	18	0
+146	18	0
+147	18	0
+148	18	0
+149	18	0
+150	18	0
+151	18	0
+152	18	0
+153	18	0
+154	18	0
+155	18	0
+156	18	0
+157	18	0
+158	18	0
+159	18	0
+160	18	0
+161	18	0
+162	18	0
+163	18	0
+164	18	0
+165	18	0
+166	18	0
+167	18	0
+168	18	0
+169	18	0
+170	18	0
+171	18	0
+172	18	0
+173	18	0
+174	18	0
+175	18	0
+176	18	0
+177	18	0
+178	18	0
+179	18	0
+180	18	0
+181	18	0
+182	18	0
+183	18	0
+184	18	0
+185	18	0
+186	18	0
+187	18	0
+188	18	0
+189	18	0
+190	18	0
+191	18	0
+192	18	0
+193	18	0
+194	18	0
+195	18	0
+196	18	0
+197	18	0
+198	18	0
+199	18	0
+200	18	0
+201	18	0
+202	18	0
+203	18	0
+204	18	0
+205	18	0
+206	18	0
+207	18	0
+208	18	0
+209	18	0
+210	18	0
+211	18	0
+212	18	0
+213	18	0
+214	18	0
+215	18	0
+216	18	0
+217	18	0
+218	18	0
+219	18	0
+220	18	0
+221	18	0
+222	18	0
+223	18	0
+224	18	0
+225	18	0
+226	18	0
+227	18	0
+228	18	0
+229	18	0
+230	18	0
+231	18	0
+232	18	0
+233	18	0
+234	18	0
+235	18	0
+236	18	0
+237	18	0
+238	18	0
+239	18	0
+240	18	0
+241	18	0
+242	18	0
+243	18	0
+244	18	0
+245	18	0
+246	18	0
+247	18	0
+248	18	0
+249	18	0
+250	18	0
+251	18	0
+252	18	0
+253	18	0
+254	18	0
+255	18	0
+256	18	0
+257	18	0.13033
+258	18	-0.013473
+259	18	-0.14393
+260	18	-0.21076
+261	18	-0.17196
+262	18	-0.096025
+263	18	0.048453
+264	18	0.48914
+265	18	0.72127
+266	18	1.1516
+267	18	2.424
+268	18	1.804
+269	18	0.95761
+270	18	0.52303
+271	18	0.68378
+272	18	0.077184
+273	18	0
+274	18	0
+275	18	0
+276	18	0
+277	18	0
+278	18	0
+279	18	0
+280	18	0
+281	18	0
+282	18	0
+283	18	-0.0073507
+284	18	-0.0020809
+285	18	0
+286	18	0.33919
+287	18	1.4592
+288	18	0.64406
+289	18	0.39323
+290	18	0
+291	18	0.078385
+292	18	0
+293	18	-0.019179
+294	18	-0.024566
+295	18	0
+296	18	0
+297	18	0
+298	18	0
+299	18	0.011706
+300	18	0
+301	18	0
+302	18	0
+303	18	0
+304	18	0
+305	18	0
+306	18	0
+307	18	0
+308	18	0
+309	18	0
+310	18	0
+311	18	0
+312	18	0
+313	18	0
+314	18	0
+315	18	0
+316	18	0
+317	18	0
+318	18	0
+319	18	0
+320	18	0
+321	18	0
+322	18	0
+323	18	0
+324	18	0
+325	18	0
+326	18	0
+327	18	0
+328	18	0
+329	18	0
+330	18	0
+331	18	0
+332	18	0
+333	18	0
+334	18	0
+335	18	0
+336	18	0
+337	18	0
+338	18	0
+339	18	0
+340	18	0
+341	18	0
+342	18	0
+343	18	0
+344	18	0.065184
+345	18	0.10122
+346	18	0.098485
+347	18	0.097326
+348	18	0.14063
+349	18	0.13321
+350	18	0.10973
+351	18	0.11444
+352	18	0.1592
+353	18	0.20396
+354	18	0.1544
+355	18	0.13667
+356	18	0.12436
+357	18	0.11574
+358	18	0.068164
+359	18	0.11872
+360	18	0.17887
+0	18.5	0.16373
+1	18.5	0.14179
+2	18.5	0.10565
+3	18.5	0.032251
+4	18.5	0.019453
+5	18.5	-0.02105
+6	18.5	-0.034251
+7	18.5	-0.031274
+8	18.5	-0.023192
+9	18.5	0.029933
+10	18.5	0.041872
+11	18.5	0.0523
+12	18.5	0.046883
+13	18.5	0.0075736
+14	18.5	-0.015888
+15	18.5	-0.02516
+16	18.5	-0.010735
+17	18.5	0.019114
+18	18.5	0.052053
+19	18.5	0.077432
+20	18.5	0.03842
+21	18.5	0.027372
+22	18.5	0.011691
+23	18.5	0.002183
+24	18.5	-0.0045684
+25	18.5	-0.0093396
+26	18.5	-0.0063165
+27	18.5	-0.0019727
+28	18.5	-0.078219
+29	18.5	-0.3536
+30	18.5	-0.29759
+31	18.5	-0.14686
+32	18.5	0.47305
+33	18.5	0.7346
+34	18.5	1.2405
+35	18.5	0.23827
+36	18.5	0.0019163
+37	18.5	0.0017774
+38	18.5	0.0047104
+39	18.5	0
+40	18.5	0
+41	18.5	0.00013564
+42	18.5	0.010621
+43	18.5	0.01256
+44	18.5	0.014167
+45	18.5	0.046987
+46	18.5	0.08256
+47	18.5	0.11331
+48	18.5	0.029766
+49	18.5	-0.14904
+50	18.5	-0.17918
+51	18.5	-0.13576
+52	18.5	-0.064975
+53	18.5	-0.01554
+54	18.5	-0.0017017
+55	18.5	-0.00064622
+56	18.5	-0.0029743
+57	18.5	0
+58	18.5	0
+59	18.5	0
+60	18.5	0
+61	18.5	0
+62	18.5	0
+63	18.5	0
+64	18.5	0
+65	18.5	0
+66	18.5	0
+67	18.5	0
+68	18.5	0
+69	18.5	0
+70	18.5	0
+71	18.5	0
+72	18.5	0
+73	18.5	0.18181
+74	18.5	0.57142
+75	18.5	0.52844
+76	18.5	0.43213
+77	18.5	0.55155
+78	18.5	0.71571
+79	18.5	0.76589
+80	18.5	0.69086
+81	18.5	0.45584
+82	18.5	0.13252
+83	18.5	-0.28451
+84	18.5	-0.27094
+85	18.5	0
+86	18.5	0
+87	18.5	0
+88	18.5	0
+89	18.5	0
+90	18.5	0
+91	18.5	0
+92	18.5	0
+93	18.5	0
+94	18.5	0.012965
+95	18.5	-0.011573
+96	18.5	-0.15236
+97	18.5	-0.7433
+98	18.5	-1.3177
+99	18.5	-1.1776
+100	18.5	-1.0398
+101	18.5	-0.8972
+102	18.5	-0.75473
+103	18.5	-0.51126
+104	18.5	-0.20239
+105	18.5	-0.04151
+106	18.5	-0.051045
+107	18.5	0
+108	18.5	0
+109	18.5	-0.10724
+110	18.5	-0.22154
+111	18.5	0
+112	18.5	0
+113	18.5	0
+114	18.5	0
+115	18.5	0
+116	18.5	0
+117	18.5	0
+118	18.5	0
+119	18.5	0
+120	18.5	0
+121	18.5	0
+122	18.5	0
+123	18.5	0
+124	18.5	0
+125	18.5	0
+126	18.5	0
+127	18.5	0
+128	18.5	0
+129	18.5	0
+130	18.5	0
+131	18.5	0
+132	18.5	0
+133	18.5	0
+134	18.5	0
+135	18.5	0
+136	18.5	0
+137	18.5	0
+138	18.5	0
+139	18.5	0
+140	18.5	0
+141	18.5	0
+142	18.5	0
+143	18.5	0
+144	18.5	0
+145	18.5	0
+146	18.5	0
+147	18.5	0
+148	18.5	0
+149	18.5	0
+150	18.5	0
+151	18.5	0
+152	18.5	0
+153	18.5	0
+154	18.5	0
+155	18.5	0
+156	18.5	0
+157	18.5	0
+158	18.5	0
+159	18.5	0
+160	18.5	0
+161	18.5	0
+162	18.5	0
+163	18.5	0
+164	18.5	0
+165	18.5	0
+166	18.5	0
+167	18.5	0
+168	18.5	0
+169	18.5	0
+170	18.5	0
+171	18.5	0
+172	18.5	0
+173	18.5	0
+174	18.5	0
+175	18.5	0
+176	18.5	0
+177	18.5	0
+178	18.5	0
+179	18.5	0
+180	18.5	0
+181	18.5	0
+182	18.5	0
+183	18.5	0
+184	18.5	0
+185	18.5	0
+186	18.5	0
+187	18.5	0
+188	18.5	0
+189	18.5	0
+190	18.5	0
+191	18.5	0
+192	18.5	0
+193	18.5	0
+194	18.5	0
+195	18.5	0
+196	18.5	0
+197	18.5	0
+198	18.5	0
+199	18.5	0
+200	18.5	0
+201	18.5	0
+202	18.5	0
+203	18.5	0
+204	18.5	0
+205	18.5	0
+206	18.5	0
+207	18.5	0
+208	18.5	0
+209	18.5	0
+210	18.5	0
+211	18.5	0
+212	18.5	0
+213	18.5	0
+214	18.5	0
+215	18.5	0
+216	18.5	0
+217	18.5	0
+218	18.5	0
+219	18.5	0
+220	18.5	0
+221	18.5	0
+222	18.5	0
+223	18.5	0
+224	18.5	0
+225	18.5	0
+226	18.5	0
+227	18.5	0
+228	18.5	0
+229	18.5	0
+230	18.5	0
+231	18.5	0
+232	18.5	0
+233	18.5	0
+234	18.5	0
+235	18.5	0
+236	18.5	0
+237	18.5	0
+238	18.5	0
+239	18.5	0
+240	18.5	0
+241	18.5	0
+242	18.5	0
+243	18.5	0
+244	18.5	0
+245	18.5	0
+246	18.5	0
+247	18.5	0
+248	18.5	0
+249	18.5	0
+250	18.5	0
+251	18.5	0
+252	18.5	0
+253	18.5	0
+254	18.5	0
+255	18.5	0
+256	18.5	0
+257	18.5	0.36275
+258	18.5	-0.08013
+259	18.5	-0.16354
+260	18.5	-0.11486
+261	18.5	-0.072093
+262	18.5	-0.033451
+263	18.5	0.060353
+264	18.5	0.28484
+265	18.5	0.10549
+266	18.5	0
+267	18.5	1.8042
+268	18.5	0.64517
+269	18.5	1.1503
+270	18.5	0.51722
+271	18.5	0.44926
+272	18.5	0.23058
+273	18.5	0
+274	18.5	0
+275	18.5	0
+276	18.5	0
+277	18.5	0
+278	18.5	0
+279	18.5	0
+280	18.5	0
+281	18.5	0
+282	18.5	-0.05565
+283	18.5	-0.0030507
+284	18.5	-0.0017122
+285	18.5	0
+286	18.5	0.27309
+287	18.5	0
+288	18.5	1.8756
+289	18.5	1.8279
+290	18.5	0.95177
+291	18.5	0.17817
+292	18.5	0
+293	18.5	0
+294	18.5	-0.052392
+295	18.5	-7.192e-05
+296	18.5	0
+297	18.5	0
+298	18.5	0
+299	18.5	0
+300	18.5	0
+301	18.5	0
+302	18.5	0
+303	18.5	0
+304	18.5	0
+305	18.5	0
+306	18.5	0
+307	18.5	0
+308	18.5	0
+309	18.5	0
+310	18.5	0
+311	18.5	0
+312	18.5	0
+313	18.5	0
+314	18.5	0
+315	18.5	0
+316	18.5	0
+317	18.5	0
+318	18.5	0
+319	18.5	0
+320	18.5	0
+321	18.5	0
+322	18.5	0
+323	18.5	0
+324	18.5	0
+325	18.5	0
+326	18.5	0
+327	18.5	0
+328	18.5	0
+329	18.5	0
+330	18.5	0
+331	18.5	0
+332	18.5	0
+333	18.5	0
+334	18.5	0
+335	18.5	0
+336	18.5	0
+337	18.5	0
+338	18.5	0
+339	18.5	0
+340	18.5	0
+341	18.5	0
+342	18.5	0
+343	18.5	0
+344	18.5	0.014136
+345	18.5	0.073904
+346	18.5	0.081873
+347	18.5	0.088067
+348	18.5	0.10326
+349	18.5	0.10141
+350	18.5	0.081761
+351	18.5	0.079686
+352	18.5	0.1175
+353	18.5	0.16227
+354	18.5	0.094495
+355	18.5	0.075798
+356	18.5	0.063481
+357	18.5	0.052107
+358	18.5	0.052831
+359	18.5	0.10358
+360	18.5	0.16373
+0	19	0.13979
+1	19	0.091694
+2	19	0.046147
+3	19	0.015855
+4	19	0.0030575
+5	19	-0.025508
+6	19	-0.026183
+7	19	-0.018101
+8	19	-0.010019
+9	19	0.0033777
+10	19	0.035517
+11	19	0.043429
+12	19	0.039657
+13	19	0.00413
+14	19	-0.018959
+15	19	-0.030624
+16	19	-0.014551
+17	19	0.0069807
+18	19	0.037646
+19	19	0.063314
+20	19	0.033911
+21	19	0.024216
+22	19	0.0085347
+23	19	0.0019991
+24	19	-0.0019938
+25	19	-0.012
+26	19	-0.0022306
+27	19	0.0058375
+28	19	-0.11068
+29	19	-0.48057
+30	19	-0.41507
+31	19	-0.2202
+32	19	0.5571
+33	19	0.45457
+34	19	0.83116
+35	19	0.13465
+36	19	0.000936
+37	19	0.00055649
+38	19	0.00083162
+39	19	0
+40	19	0
+41	19	0.0020105
+42	19	0.014864
+43	19	0.019371
+44	19	0.02973
+45	19	0.049558
+46	19	0.086127
+47	19	0.12914
+48	19	0.070725
+49	19	-0.042871
+50	19	-0.1486
+51	19	-0.10952
+52	19	-0.045237
+53	19	-0.015538
+54	19	-0.0042561
+55	19	-0.00094277
+56	19	-0.0016941
+57	19	1.6755e-05
+58	19	0
+59	19	0
+60	19	0
+61	19	0
+62	19	0
+63	19	0
+64	19	0
+65	19	0
+66	19	0
+67	19	0
+68	19	0
+69	19	0
+70	19	0
+71	19	0
+72	19	0
+73	19	0.2169
+74	19	0.64475
+75	19	0.62891
+76	19	0.53899
+77	19	0.63402
+78	19	0.70384
+79	19	0.73351
+80	19	0.61624
+81	19	0.34558
+82	19	0.028278
+83	19	-0.32942
+84	19	-0.39795
+85	19	0
+86	19	0
+87	19	0
+88	19	0
+89	19	0
+90	19	0
+91	19	0
+92	19	0
+93	19	0
+94	19	0.02986
+95	19	-0.0060092
+96	19	-0.11268
+97	19	-0.51007
+98	19	-0.96694
+99	19	-0.93603
+100	19	-0.84298
+101	19	-0.72661
+102	19	-0.60678
+103	19	-0.33089
+104	19	-0.064541
+105	19	0.075143
+106	19	0
+107	19	0
+108	19	0
+109	19	-0.2233
+110	19	-0.3044
+111	19	0
+112	19	0
+113	19	0
+114	19	0
+115	19	0
+116	19	0
+117	19	0
+118	19	0
+119	19	0
+120	19	0
+121	19	0
+122	19	0
+123	19	0
+124	19	0
+125	19	0
+126	19	0
+127	19	0
+128	19	0
+129	19	0
+130	19	0
+131	19	0
+132	19	0
+133	19	0
+134	19	0
+135	19	0
+136	19	0
+137	19	0
+138	19	0
+139	19	0
+140	19	0
+141	19	0
+142	19	0
+143	19	0
+144	19	0
+145	19	0
+146	19	0
+147	19	0
+148	19	0
+149	19	0
+150	19	0
+151	19	0
+152	19	0
+153	19	0
+154	19	0
+155	19	0
+156	19	0
+157	19	0
+158	19	0
+159	19	0
+160	19	0
+161	19	0
+162	19	0
+163	19	0
+164	19	0
+165	19	0
+166	19	0
+167	19	0
+168	19	0
+169	19	0
+170	19	0
+171	19	0
+172	19	0
+173	19	0
+174	19	0
+175	19	0
+176	19	0
+177	19	0
+178	19	0
+179	19	0
+180	19	0
+181	19	0
+182	19	0
+183	19	0
+184	19	0
+185	19	0
+186	19	0
+187	19	0
+188	19	0
+189	19	0
+190	19	0
+191	19	0
+192	19	0
+193	19	0
+194	19	0
+195	19	0
+196	19	0
+197	19	0
+198	19	0
+199	19	0
+200	19	0
+201	19	0
+202	19	0
+203	19	0
+204	19	0
+205	19	0
+206	19	0
+207	19	0
+208	19	0
+209	19	0
+210	19	0
+211	19	0
+212	19	0
+213	19	0
+214	19	0
+215	19	0
+216	19	0
+217	19	0
+218	19	0
+219	19	0
+220	19	0
+221	19	0
+222	19	0
+223	19	0
+224	19	0
+225	19	0
+226	19	0
+227	19	0
+228	19	0
+229	19	0
+230	19	0
+231	19	0
+232	19	0
+233	19	0
+234	19	0
+235	19	0
+236	19	0
+237	19	0
+238	19	0
+239	19	0
+240	19	0
+241	19	0
+242	19	0
+243	19	0
+244	19	0
+245	19	0
+246	19	0
+247	19	0
+248	19	0
+249	19	0
+250	19	0
+251	19	0
+252	19	0
+253	19	0
+254	19	0
+255	19	0
+256	19	1.0035
+257	19	0.33732
+258	19	-0.1696
+259	19	-0.30903
+260	19	-0.23137
+261	19	-0.11534
+262	19	-0.068574
+263	19	0.071108
+264	19	0.10502
+265	19	0.037537
+266	19	0
+267	19	0.0013989
+268	19	0
+269	19	0.80339
+270	19	0.38719
+271	19	0.29318
+272	19	0.12801
+273	19	0
+274	19	0
+275	19	0
+276	19	0
+277	19	0
+278	19	0
+279	19	0
+280	19	0
+281	19	0
+282	19	-0.035116
+283	19	0
+284	19	0
+285	19	0
+286	19	0.00087336
+287	19	0
+288	19	3.7501
+289	19	2.2139
+290	19	1.4099
+291	19	0.21729
+292	19	0
+293	19	0
+294	19	-0.004027
+295	19	0
+296	19	0
+297	19	0
+298	19	0
+299	19	0
+300	19	0
+301	19	0
+302	19	0
+303	19	0
+304	19	0
+305	19	0
+306	19	0
+307	19	0
+308	19	0
+309	19	0
+310	19	0
+311	19	0
+312	19	0
+313	19	0
+314	19	0
+315	19	0
+316	19	0
+317	19	0
+318	19	0
+319	19	0
+320	19	0
+321	19	0
+322	19	0
+323	19	0
+324	19	0
+325	19	0
+326	19	0
+327	19	0
+328	19	0
+329	19	0
+330	19	0
+331	19	0
+332	19	0
+333	19	0
+334	19	0
+335	19	0
+336	19	0
+337	19	0
+338	19	0
+339	19	0
+340	19	0
+341	19	0
+342	19	0
+343	19	0
+344	19	0.029701
+345	19	0.055199
+346	19	0.066905
+347	19	0.086689
+348	19	0.077354
+349	19	0.064049
+350	19	0.064859
+351	19	0.063692
+352	19	0.075809
+353	19	0.12057
+354	19	0.045373
+355	19	0.014923
+356	19	0.0079615
+357	19	0.0082047
+358	19	0.037498
+359	19	0.088443
+360	19	0.13979
+0	19.5	0.089699
+1	19.5	0.041602
+2	19.5	0.015528
+3	19.5	0.00064166
+4	19.5	-0.013338
+5	19.5	-0.021091
+6	19.5	-0.016966
+7	19.5	-0.015775
+8	19.5	-0.014584
+9	19.5	0.00076704
+10	19.5	0.032125
+11	19.5	0.032834
+12	19.5	0.03243
+13	19.5	-0.00067147
+14	19.5	-0.021891
+15	19.5	-0.033695
+16	19.5	-0.023925
+17	19.5	-0.0034419
+18	19.5	0.027224
+19	19.5	0.04968
+20	19.5	0.029401
+21	19.5	0.021059
+22	19.5	0.0053784
+23	19.5	0.001819
+24	19.5	0.00058084
+25	19.5	-0.0090022
+26	19.5	0.0055796
+27	19.5	0.013648
+28	19.5	-0.13332
+29	19.5	-0.60753
+30	19.5	-0.51055
+31	19.5	-0.29354
+32	19.5	0.56629
+33	19.5	0.27286
+34	19.5	0.42181
+35	19.5	0.094066
+36	19.5	0.00032063
+37	19.5	8.155e-05
+38	19.5	0
+39	19.5	0
+40	19.5	7.4601e-05
+41	19.5	0.0041353
+42	19.5	0.016299
+43	19.5	0.021686
+44	19.5	0.031255
+45	19.5	0.053613
+46	19.5	0.095459
+47	19.5	0.14791
+48	19.5	0.13808
+49	19.5	0.06117
+50	19.5	-0.012204
+51	19.5	-0.086095
+52	19.5	-0.038515
+53	19.5	-0.018464
+54	19.5	-0.006793
+55	19.5	-0.0019666
+56	19.5	-0.0014488
+57	19.5	-0.0024408
+58	19.5	0
+59	19.5	0
+60	19.5	0
+61	19.5	0
+62	19.5	0
+63	19.5	0
+64	19.5	0
+65	19.5	0
+66	19.5	0
+67	19.5	0
+68	19.5	0
+69	19.5	0
+70	19.5	0
+71	19.5	0
+72	19.5	0
+73	19.5	0.25199
+74	19.5	0.69285
+75	19.5	0.75337
+76	19.5	0.68744
+77	19.5	0.67758
+78	19.5	0.7362
+79	19.5	0.72418
+80	19.5	0.54337
+81	19.5	0.2664
+82	19.5	-0.051687
+83	19.5	-0.36962
+84	19.5	-0.5064
+85	19.5	-0.23369
+86	19.5	0
+87	19.5	0
+88	19.5	0
+89	19.5	0
+90	19.5	0
+91	19.5	0
+92	19.5	0
+93	19.5	0
+94	19.5	0.077171
+95	19.5	0.0092779
+96	19.5	-0.081316
+97	19.5	-0.39354
+98	19.5	-0.74564
+99	19.5	-0.72788
+100	19.5	-0.74336
+101	19.5	-0.61553
+102	19.5	-0.42409
+103	19.5	-0.16595
+104	19.5	0.070268
+105	19.5	0.19286
+106	19.5	0.079981
+107	19.5	0
+108	19.5	0
+109	19.5	-0.17204
+110	19.5	-0.19581
+111	19.5	-0.03295
+112	19.5	0
+113	19.5	0
+114	19.5	0
+115	19.5	0
+116	19.5	0
+117	19.5	0
+118	19.5	0
+119	19.5	0
+120	19.5	0
+121	19.5	0
+122	19.5	0
+123	19.5	0
+124	19.5	0
+125	19.5	0
+126	19.5	0
+127	19.5	0
+128	19.5	0
+129	19.5	0
+130	19.5	0
+131	19.5	0
+132	19.5	0
+133	19.5	0
+134	19.5	0
+135	19.5	0
+136	19.5	0
+137	19.5	0
+138	19.5	0
+139	19.5	0
+140	19.5	0
+141	19.5	0
+142	19.5	0
+143	19.5	0
+144	19.5	0
+145	19.5	0
+146	19.5	0
+147	19.5	0
+148	19.5	0
+149	19.5	0
+150	19.5	0
+151	19.5	0
+152	19.5	0
+153	19.5	0
+154	19.5	0
+155	19.5	0
+156	19.5	0
+157	19.5	0
+158	19.5	0
+159	19.5	0
+160	19.5	0
+161	19.5	0
+162	19.5	0
+163	19.5	0
+164	19.5	0
+165	19.5	0
+166	19.5	0
+167	19.5	0
+168	19.5	0
+169	19.5	0
+170	19.5	0
+171	19.5	0
+172	19.5	0
+173	19.5	0
+174	19.5	0
+175	19.5	0
+176	19.5	0
+177	19.5	0
+178	19.5	0
+179	19.5	0
+180	19.5	0
+181	19.5	0
+182	19.5	0
+183	19.5	0
+184	19.5	0
+185	19.5	0
+186	19.5	0
+187	19.5	0
+188	19.5	0
+189	19.5	0
+190	19.5	0
+191	19.5	0
+192	19.5	0
+193	19.5	0
+194	19.5	0
+195	19.5	0
+196	19.5	0
+197	19.5	0
+198	19.5	0
+199	19.5	0
+200	19.5	0
+201	19.5	0
+202	19.5	0
+203	19.5	0
+204	19.5	0
+205	19.5	0
+206	19.5	0
+207	19.5	0
+208	19.5	0
+209	19.5	0
+210	19.5	0
+211	19.5	0
+212	19.5	0
+213	19.5	0
+214	19.5	0
+215	19.5	0
+216	19.5	0
+217	19.5	0
+218	19.5	0
+219	19.5	0
+220	19.5	0
+221	19.5	0
+222	19.5	0
+223	19.5	0
+224	19.5	0
+225	19.5	0
+226	19.5	0
+227	19.5	0
+228	19.5	0
+229	19.5	0
+230	19.5	0
+231	19.5	0
+232	19.5	0
+233	19.5	0
+234	19.5	0
+235	19.5	0
+236	19.5	0
+237	19.5	0
+238	19.5	0
+239	19.5	0
+240	19.5	0
+241	19.5	0
+242	19.5	0
+243	19.5	0
+244	19.5	0
+245	19.5	0
+246	19.5	0
+247	19.5	0
+248	19.5	0
+249	19.5	0
+250	19.5	0
+251	19.5	0
+252	19.5	0
+253	19.5	0
+254	19.5	0
+255	19.5	0.24426
+256	19.5	1.163
+257	19.5	0.33207
+258	19.5	-0.21611
+259	19.5	-0.44283
+260	19.5	-0.34022
+261	19.5	-0.1696
+262	19.5	-0.070078
+263	19.5	0.11697
+264	19.5	0
+265	19.5	0
+266	19.5	0
+267	19.5	0
+268	19.5	0
+269	19.5	0
+270	19.5	0.25787
+271	19.5	0.16113
+272	19.5	0.10489
+273	19.5	0
+274	19.5	0
+275	19.5	0
+276	19.5	0
+277	19.5	0
+278	19.5	0
+279	19.5	0
+280	19.5	0
+281	19.5	0
+282	19.5	-0.0081022
+283	19.5	0
+284	19.5	0
+285	19.5	0
+286	19.5	0
+287	19.5	0.12779
+288	19.5	1.9964
+289	19.5	1.2428
+290	19.5	0.79494
+291	19.5	0.076348
+292	19.5	0
+293	19.5	0
+294	19.5	0
+295	19.5	0
+296	19.5	0
+297	19.5	0
+298	19.5	0
+299	19.5	0
+300	19.5	0
+301	19.5	0
+302	19.5	0
+303	19.5	0
+304	19.5	0
+305	19.5	0
+306	19.5	0
+307	19.5	0
+308	19.5	0
+309	19.5	0
+310	19.5	0
+311	19.5	0
+312	19.5	0
+313	19.5	0
+314	19.5	0
+315	19.5	0
+316	19.5	0
+317	19.5	0
+318	19.5	0
+319	19.5	0
+320	19.5	0
+321	19.5	0
+322	19.5	0
+323	19.5	0
+324	19.5	0
+325	19.5	0
+326	19.5	0
+327	19.5	0
+328	19.5	0
+329	19.5	0
+330	19.5	0
+331	19.5	0
+332	19.5	0
+333	19.5	0
+334	19.5	0
+335	19.5	0
+336	19.5	0
+337	19.5	0
+338	19.5	0
+339	19.5	0
+340	19.5	0
+341	19.5	0
+342	19.5	0
+343	19.5	0
+344	19.5	0.024354
+345	19.5	0.043584
+346	19.5	0.053794
+347	19.5	0.0661
+348	19.5	0.063756
+349	19.5	0.048914
+350	19.5	0.047958
+351	19.5	0.047698
+352	19.5	0.034114
+353	19.5	0.078877
+354	19.5	0.0037158
+355	19.5	0.013663
+356	19.5	0.013906
+357	19.5	0.01415
+358	19.5	0.022164
+359	19.5	0.073306
+360	19.5	0.089699
+0	20	0.039606
+1	20	0.010818
+2	20	0.0045187
+3	20	-0.010367
+4	20	-0.024194
+5	20	-0.030159
+6	20	-0.028968
+7	20	-0.027777
+8	20	-0.022716
+9	20	-0.0018436
+10	20	0.02153
+11	20	0.022238
+12	20	0.02556
+13	20	-0.0074607
+14	20	-0.024514
+15	20	-0.036531
+16	20	-0.035239
+17	20	-0.013864
+18	20	0.016801
+19	20	0.036231
+20	20	0.024891
+21	20	0.017903
+22	20	0.0044699
+23	20	0.0016388
+24	20	0.0014646
+25	20	-0.0060045
+26	20	0.01339
+27	20	0.021458
+28	20	-0.15595
+29	20	-0.73449
+30	20	-0.58389
+31	20	-0.36688
+32	20	0.57581
+33	20	0.33953
+34	20	0.015461
+35	20	0.0017022
+36	20	2.5911e-05
+37	20	-0.00019279
+38	20	0
+39	20	0
+40	20	0.0012521
+41	20	0.0067638
+42	20	0.015007
+43	20	0.024074
+44	20	0.031697
+45	20	0.056502
+46	20	0.099641
+47	20	0.16669
+48	20	0.19132
+49	20	0.12546
+50	20	0.0098265
+51	20	-0.063092
+52	20	-0.031973
+53	20	-0.018067
+54	20	-0.0092958
+55	20	-0.0050071
+56	20	-0.0060045
+57	20	-0.0082056
+58	20	0
+59	20	0
+60	20	0
+61	20	0
+62	20	0
+63	20	0
+64	20	0
+65	20	0
+66	20	0
+67	20	0
+68	20	0
+69	20	0
+70	20	0
+71	20	0
+72	20	0
+73	20	0.27379
+74	20	0.79329
+75	20	0.8169
+76	20	0.82139
+77	20	0.81135
+78	20	0.74632
+79	20	0.61203
+80	20	0.4948
+81	20	0.20303
+82	20	-0.13543
+83	20	-0.43271
+84	20	-0.61273
+85	20	-0.50934
+86	20	-0.15119
+87	20	0
+88	20	0
+89	20	0
+90	20	0
+91	20	0
+92	20	0
+93	20	0
+94	20	0.10904
+95	20	0.022317
+96	20	-0.049953
+97	20	-0.39419
+98	20	-0.60195
+99	20	-0.63647
+100	20	-0.65761
+101	20	-0.50553
+102	20	-0.29439
+103	20	-0.073694
+104	20	0.20749
+105	20	0.30075
+106	20	0.1985
+107	20	0
+108	20	0
+109	20	-0.052385
+110	20	-0.029447
+111	20	-0.075976
+112	20	0
+113	20	0
+114	20	0
+115	20	0
+116	20	0
+117	20	0
+118	20	0
+119	20	0
+120	20	0
+121	20	0
+122	20	0
+123	20	0
+124	20	0
+125	20	0
+126	20	0
+127	20	0
+128	20	0
+129	20	0
+130	20	0
+131	20	0
+132	20	0
+133	20	0
+134	20	0
+135	20	0
+136	20	0
+137	20	0
+138	20	0
+139	20	0
+140	20	0
+141	20	0
+142	20	0
+143	20	0
+144	20	0
+145	20	0
+146	20	0
+147	20	0
+148	20	0
+149	20	0
+150	20	0
+151	20	0
+152	20	0
+153	20	0
+154	20	0
+155	20	0
+156	20	0
+157	20	0
+158	20	0
+159	20	0
+160	20	0
+161	20	0
+162	20	0
+163	20	0
+164	20	0
+165	20	0
+166	20	0
+167	20	0
+168	20	0
+169	20	0
+170	20	0
+171	20	0
+172	20	0
+173	20	0
+174	20	0
+175	20	0
+176	20	0
+177	20	0
+178	20	0
+179	20	0
+180	20	0
+181	20	0
+182	20	0
+183	20	0
+184	20	0
+185	20	0
+186	20	0
+187	20	0
+188	20	0
+189	20	0
+190	20	0
+191	20	0
+192	20	0
+193	20	0
+194	20	0
+195	20	0
+196	20	0
+197	20	0
+198	20	0
+199	20	0
+200	20	0
+201	20	0
+202	20	0
+203	20	0
+204	20	0
+205	20	0
+206	20	0
+207	20	0
+208	20	0
+209	20	0
+210	20	0
+211	20	0
+212	20	0
+213	20	0
+214	20	0
+215	20	0
+216	20	0
+217	20	0
+218	20	0
+219	20	0
+220	20	0
+221	20	0
+222	20	0
+223	20	0
+224	20	0
+225	20	0
+226	20	0
+227	20	0
+228	20	0
+229	20	0
+230	20	0
+231	20	0
+232	20	0
+233	20	0
+234	20	0
+235	20	0
+236	20	0
+237	20	0
+238	20	0
+239	20	0
+240	20	0
+241	20	0
+242	20	0
+243	20	0
+244	20	0
+245	20	0
+246	20	0
+247	20	0
+248	20	0
+249	20	0
+250	20	0
+251	20	0
+252	20	0
+253	20	0
+254	20	0
+255	20	1.1649
+256	20	1.0546
+257	20	0.15731
+258	20	-0.25638
+259	20	-0.52635
+260	20	-0.37559
+261	20	-0.19481
+262	20	-0.076738
+263	20	0.092426
+264	20	0
+265	20	0
+266	20	0
+267	20	0
+268	20	0
+269	20	0
+270	20	0.15701
+271	20	0.11818
+272	20	0.10138
+273	20	0.043491
+274	20	0
+275	20	0
+276	20	0
+277	20	0
+278	20	0
+279	20	0
+280	20	0
+281	20	0
+282	20	0
+283	20	0.04284
+284	20	0.029723
+285	20	0.12623
+286	20	0.075629
+287	20	0.38761
+288	20	0.18032
+289	20	0.23358
+290	20	0.27989
+291	20	0
+292	20	0
+293	20	0
+294	20	0
+295	20	0
+296	20	0
+297	20	0
+298	20	0
+299	20	0
+300	20	0
+301	20	0
+302	20	0
+303	20	0
+304	20	0
+305	20	0
+306	20	0
+307	20	0
+308	20	0
+309	20	0
+310	20	0
+311	20	0
+312	20	0
+313	20	0
+314	20	0
+315	20	0
+316	20	0
+317	20	0
+318	20	0
+319	20	0
+320	20	0
+321	20	0
+322	20	0
+323	20	0
+324	20	0
+325	20	0
+326	20	0
+327	20	0
+328	20	0
+329	20	0
+330	20	0
+331	20	0
+332	20	0
+333	20	0
+334	20	0
+335	20	0
+336	20	0
+337	20	0
+338	20	0
+339	20	0
+340	20	0
+341	20	0
+342	20	0
+343	20	0
+344	20	0.015846
+345	20	0.020253
+346	20	0.038188
+347	20	0.045511
+348	20	0.050158
+349	20	0.039047
+350	20	0.031056
+351	20	0.031704
+352	20	0.0052764
+353	20	0.037181
+354	20	-0.021865
+355	20	0.019608
+356	20	0.019851
+357	20	0.020094
+358	20	0.0068308
+359	20	0.058169
+360	20	0.039606
+0	20.5	0.0045935
+1	20.5	0.0031628
+2	20.5	-0.0064902
+3	20.5	-0.020241
+4	20.5	-0.032377
+5	20.5	-0.042161
+6	20.5	-0.04097
+7	20.5	-0.039779
+8	20.5	-0.024358
+9	20.5	-0.0036137
+10	20.5	0.010935
+11	20.5	0.017009
+12	20.5	0.016634
+13	20.5	-0.011255
+14	20.5	-0.027137
+15	20.5	-0.039378
+16	20.5	-0.046553
+17	20.5	-0.024287
+18	20.5	0.0023952
+19	20.5	0.022781
+20	20.5	0.020381
+21	20.5	0.014747
+22	20.5	0.0042897
+23	20.5	0.0014586
+24	20.5	0.0012035
+25	20.5	-0.0030068
+26	20.5	0.017543
+27	20.5	0.029268
+28	20.5	-0.17859
+29	20.5	-0.78623
+30	20.5	-0.65723
+31	20.5	-0.43217
+32	20.5	0.54725
+33	20.5	0.38728
+34	20.5	0.013325
+35	20.5	-0.00087863
+36	20.5	-0.00045426
+37	20.5	-0.0021031
+38	20.5	0
+39	20.5	0
+40	20.5	0.00036328
+41	20.5	0.0097512
+42	20.5	0.017685
+43	20.5	0.021529
+44	20.5	0.032086
+45	20.5	0.058563
+46	20.5	0.10382
+47	20.5	0.18546
+48	20.5	0.22461
+49	20.5	0.15656
+50	20.5	0.031857
+51	20.5	-0.040179
+52	20.5	-0.028523
+53	20.5	-0.017676
+54	20.5	-0.011454
+55	20.5	-0.0095894
+56	20.5	-0.011251
+57	20.5	-0.015636
+58	20.5	-0.0023104
+59	20.5	-0.00013398
+60	20.5	0
+61	20.5	0
+62	20.5	0
+63	20.5	0
+64	20.5	0
+65	20.5	0
+66	20.5	0
+67	20.5	0
+68	20.5	0
+69	20.5	0
+70	20.5	0
+71	20.5	0.1054
+72	20.5	0
+73	20.5	0.35824
+74	20.5	0.76005
+75	20.5	0.92237
+76	20.5	0.93376
+77	20.5	0.89924
+78	20.5	0.68552
+79	20.5	0.55293
+80	20.5	0.38366
+81	20.5	0.1087
+82	20.5	-0.22158
+83	20.5	-0.52332
+84	20.5	-0.70806
+85	20.5	-0.67686
+86	20.5	-0.46637
+87	20.5	-0.13123
+88	20.5	0
+89	20.5	0
+90	20.5	0
+91	20.5	0
+92	20.5	0
+93	20.5	0.098248
+94	20.5	0.10325
+95	20.5	-0.017512
+96	20.5	-0.037266
+97	20.5	-0.28307
+98	20.5	-0.45826
+99	20.5	-0.54653
+100	20.5	-0.56608
+101	20.5	-0.49585
+102	20.5	-0.24973
+103	20.5	-0.010409
+104	20.5	0.30446
+105	20.5	0.36748
+106	20.5	0.28973
+107	20.5	0
+108	20.5	0
+109	20.5	0
+110	20.5	-0.046124
+111	20.5	0
+112	20.5	0
+113	20.5	0
+114	20.5	0
+115	20.5	0
+116	20.5	0
+117	20.5	0
+118	20.5	0
+119	20.5	0
+120	20.5	0
+121	20.5	0
+122	20.5	0
+123	20.5	0
+124	20.5	0
+125	20.5	0
+126	20.5	0
+127	20.5	0
+128	20.5	0
+129	20.5	0
+130	20.5	0
+131	20.5	0
+132	20.5	0
+133	20.5	0
+134	20.5	0
+135	20.5	0
+136	20.5	0
+137	20.5	0
+138	20.5	0
+139	20.5	0
+140	20.5	0
+141	20.5	0
+142	20.5	0
+143	20.5	0
+144	20.5	0
+145	20.5	0
+146	20.5	0
+147	20.5	0
+148	20.5	0
+149	20.5	0
+150	20.5	0
+151	20.5	0
+152	20.5	0
+153	20.5	0
+154	20.5	0
+155	20.5	0
+156	20.5	0
+157	20.5	0
+158	20.5	0
+159	20.5	0
+160	20.5	0
+161	20.5	0
+162	20.5	0
+163	20.5	0
+164	20.5	0
+165	20.5	0
+166	20.5	0
+167	20.5	0
+168	20.5	0
+169	20.5	0
+170	20.5	0
+171	20.5	0
+172	20.5	0
+173	20.5	0
+174	20.5	0
+175	20.5	0
+176	20.5	0
+177	20.5	0
+178	20.5	0
+179	20.5	0
+180	20.5	0
+181	20.5	0
+182	20.5	0
+183	20.5	0
+184	20.5	0
+185	20.5	0
+186	20.5	0
+187	20.5	0
+188	20.5	0
+189	20.5	0
+190	20.5	0
+191	20.5	0
+192	20.5	0
+193	20.5	0
+194	20.5	0
+195	20.5	0
+196	20.5	0
+197	20.5	0
+198	20.5	0
+199	20.5	0
+200	20.5	0
+201	20.5	0
+202	20.5	0
+203	20.5	0
+204	20.5	0
+205	20.5	0
+206	20.5	0
+207	20.5	0
+208	20.5	0
+209	20.5	0
+210	20.5	0
+211	20.5	0
+212	20.5	0
+213	20.5	0
+214	20.5	0
+215	20.5	0
+216	20.5	0
+217	20.5	0
+218	20.5	0
+219	20.5	0
+220	20.5	0
+221	20.5	0
+222	20.5	0
+223	20.5	0
+224	20.5	0
+225	20.5	0
+226	20.5	0
+227	20.5	0
+228	20.5	0
+229	20.5	0
+230	20.5	0
+231	20.5	0
+232	20.5	0
+233	20.5	0
+234	20.5	0
+235	20.5	0
+236	20.5	0
+237	20.5	0
+238	20.5	0
+239	20.5	0
+240	20.5	0
+241	20.5	0
+242	20.5	0
+243	20.5	0
+244	20.5	0
+245	20.5	0
+246	20.5	0
+247	20.5	0
+248	20.5	0
+249	20.5	0
+250	20.5	0
+251	20.5	0
+252	20.5	0
+253	20.5	0
+254	20.5	0
+255	20.5	1.3003
+256	20.5	0.91732
+257	20.5	0.074086
+258	20.5	-0.3369
+259	20.5	-0.34467
+260	20.5	-0.30844
+261	20.5	-0.18416
+262	20.5	-0.075665
+263	20.5	0.0060228
+264	20.5	0
+265	20.5	0
+266	20.5	0
+267	20.5	0
+268	20.5	0
+269	20.5	0
+270	20.5	0.10968
+271	20.5	0.10032
+272	20.5	0.093887
+273	20.5	0.079138
+274	20.5	0
+275	20.5	0
+276	20.5	0
+277	20.5	0
+278	20.5	0
+279	20.5	0
+280	20.5	0
+281	20.5	0
+282	20.5	0.04411
+283	20.5	0.15487
+284	20.5	-0.036722
+285	20.5	0.20871
+286	20.5	0.10849
+287	20.5	0.18016
+288	20.5	0
+289	20.5	0
+290	20.5	0
+291	20.5	0
+292	20.5	0
+293	20.5	0
+294	20.5	0
+295	20.5	0
+296	20.5	0
+297	20.5	0
+298	20.5	0
+299	20.5	0
+300	20.5	0
+301	20.5	0
+302	20.5	0
+303	20.5	0
+304	20.5	0
+305	20.5	0
+306	20.5	0
+307	20.5	0
+308	20.5	0
+309	20.5	0
+310	20.5	0
+311	20.5	0
+312	20.5	0
+313	20.5	0
+314	20.5	0
+315	20.5	0
+316	20.5	0
+317	20.5	0
+318	20.5	0
+319	20.5	0
+320	20.5	0
+321	20.5	0
+322	20.5	0
+323	20.5	0
+324	20.5	0
+325	20.5	0
+326	20.5	0
+327	20.5	0
+328	20.5	0
+329	20.5	0
+330	20.5	0
+331	20.5	0
+332	20.5	0
+333	20.5	0
+334	20.5	0
+335	20.5	0
+336	20.5	0
+337	20.5	0
+338	20.5	0
+339	20.5	0
+340	20.5	0
+341	20.5	0
+342	20.5	0
+343	20.5	0
+344	20.5	0.0088839
+345	20.5	0.0035928
+346	20.5	0.01539
+347	20.5	0.028123
+348	20.5	0.03656
+349	20.5	0.030238
+350	20.5	0.018843
+351	20.5	0.01571
+352	20.5	-0.010718
+353	20.5	-0.0045139
+354	20.5	-0.040546
+355	20.5	0.012485
+356	20.5	0.025796
+357	20.5	0.026039
+358	20.5	0.0038503
+359	20.5	0.03761
+360	20.5	0.0045935
+0	21	-0.0030615
+1	21	-0.0044922
+2	21	-0.016288
+3	21	-0.028424
+4	21	-0.041225
+5	21	-0.054163
+6	21	-0.052972
+7	21	-0.046745
+8	21	-0.026001
+9	21	-0.0052562
+10	21	0.0061056
+11	21	0.015549
+12	21	0.0091145
+13	21	-0.01505
+14	21	-0.02976
+15	21	-0.042372
+16	21	-0.057867
+17	21	-0.035059
+18	21	-0.012452
+19	21	0.0093313
+20	21	0.015871
+21	21	0.011591
+22	21	0.0041095
+23	21	0.0012785
+24	21	0.0009424
+25	21	-9.0762e-06
+26	21	0.020541
+27	21	0.037078
+28	21	-0.20122
+29	21	-0.69294
+30	21	-0.78125
+31	21	-0.43461
+32	21	0.29049
+33	21	0.29058
+34	21	0.0020027
+35	21	-0.0015706
+36	21	-0.0012213
+37	21	-0.0075367
+38	21	0
+39	21	0
+40	21	-0.0019188
+41	21	0.0089975
+42	21	0.016162
+43	21	0.02194
+44	21	0.032735
+45	21	0.060779
+46	21	0.081483
+47	21	0.18914
+48	21	0.25791
+49	21	0.18308
+50	21	0.053888
+51	21	-0.014822
+52	21	-0.025074
+53	21	-0.017126
+54	21	-0.013804
+55	21	-0.014154
+56	21	-0.017793
+57	21	-0.023103
+58	21	-0.011737
+59	21	-0.0021752
+60	21	0
+61	21	0
+62	21	0
+63	21	0
+64	21	0
+65	21	0
+66	21	0
+67	21	0
+68	21	0
+69	21	0
+70	21	0.14307
+71	21	0.27693
+72	21	0.15549
+73	21	0.43742
+74	21	0.83155
+75	21	0.94602
+76	21	1.0461
+77	21	0.81548
+78	21	0.62467
+79	21	0.44165
+80	21	0.25863
+81	21	0.014367
+82	21	-0.29133
+83	21	-0.60552
+84	21	-0.83358
+85	21	-0.83164
+86	21	-0.70306
+87	21	-0.15314
+88	21	0
+89	21	0
+90	21	-0.027952
+91	21	0
+92	21	0
+93	21	0.0083082
+94	21	0.029548
+95	21	-0.025603
+96	21	-0.044457
+97	21	-0.14219
+98	21	-0.32922
+99	21	-0.4566
+100	21	-0.47455
+101	21	-0.48354
+102	21	-0.24338
+103	21	0.0069928
+104	21	0.27257
+105	21	0.4082
+106	21	0.3659
+107	21	0.1299
+108	21	0
+109	21	0.01365
+110	21	-0.025201
+111	21	0
+112	21	0
+113	21	0
+114	21	0
+115	21	0
+116	21	0
+117	21	0
+118	21	0
+119	21	0
+120	21	0
+121	21	0
+122	21	0
+123	21	0
+124	21	0
+125	21	0
+126	21	0
+127	21	0
+128	21	0
+129	21	0
+130	21	0
+131	21	0
+132	21	0
+133	21	0
+134	21	0
+135	21	0
+136	21	0
+137	21	0
+138	21	0
+139	21	0
+140	21	0
+141	21	0
+142	21	0
+143	21	0
+144	21	0
+145	21	0
+146	21	0
+147	21	0
+148	21	0
+149	21	0
+150	21	0
+151	21	0
+152	21	0
+153	21	0
+154	21	0
+155	21	0
+156	21	0
+157	21	0
+158	21	0
+159	21	0
+160	21	0
+161	21	0
+162	21	0
+163	21	0
+164	21	0
+165	21	0
+166	21	0
+167	21	0
+168	21	0
+169	21	0
+170	21	0
+171	21	0
+172	21	0
+173	21	0
+174	21	0
+175	21	0
+176	21	0
+177	21	0
+178	21	0
+179	21	0
+180	21	0
+181	21	0
+182	21	0
+183	21	0
+184	21	0
+185	21	0
+186	21	0
+187	21	0
+188	21	0
+189	21	0
+190	21	0
+191	21	0
+192	21	0
+193	21	0
+194	21	0
+195	21	0
+196	21	0
+197	21	0
+198	21	0
+199	21	0
+200	21	0
+201	21	0
+202	21	0.14931
+203	21	0
+204	21	0
+205	21	0
+206	21	0
+207	21	0
+208	21	0
+209	21	0
+210	21	0
+211	21	0
+212	21	0
+213	21	0
+214	21	0
+215	21	0
+216	21	0
+217	21	0
+218	21	0
+219	21	0
+220	21	0
+221	21	0
+222	21	0
+223	21	0
+224	21	0
+225	21	0
+226	21	0
+227	21	0
+228	21	0
+229	21	0
+230	21	0
+231	21	0
+232	21	0
+233	21	0
+234	21	0
+235	21	0
+236	21	0
+237	21	0
+238	21	0
+239	21	0
+240	21	0
+241	21	0
+242	21	0
+243	21	0
+244	21	0
+245	21	0
+246	21	0
+247	21	0
+248	21	0
+249	21	0
+250	21	0
+251	21	0
+252	21	0
+253	21	0
+254	21	0
+255	21	1.092
+256	21	0.73939
+257	21	-0.081965
+258	21	-0.40083
+259	21	-0.32187
+260	21	-0.25537
+261	21	-0.17497
+262	21	-0.051265
+263	21	0.01222
+264	21	0
+265	21	0
+266	21	0
+267	21	0
+268	21	0
+269	21	0
+270	21	0.051753
+271	21	0.078409
+272	21	0.092339
+273	21	0.033965
+274	21	0
+275	21	0
+276	21	0
+277	21	0
+278	21	0
+279	21	0
+280	21	0
+281	21	0
+282	21	0.17438
+283	21	0.10206
+284	21	-0.02425
+285	21	0.061024
+286	21	0
+287	21	0.12472
+288	21	0
+289	21	0
+290	21	0
+291	21	0
+292	21	0
+293	21	0
+294	21	0
+295	21	0
+296	21	0
+297	21	0
+298	21	0
+299	21	0
+300	21	0
+301	21	0
+302	21	0
+303	21	0
+304	21	0
+305	21	0
+306	21	0
+307	21	0
+308	21	0
+309	21	0
+310	21	0
+311	21	0
+312	21	0
+313	21	0
+314	21	0
+315	21	0
+316	21	0
+317	21	0
+318	21	0
+319	21	0
+320	21	0
+321	21	0
+322	21	0
+323	21	0
+324	21	0
+325	21	0
+326	21	0
+327	21	0
+328	21	0
+329	21	0
+330	21	0
+331	21	0
+332	21	0
+333	21	0
+334	21	0
+335	21	0
+336	21	0
+337	21	0
+338	21	0
+339	21	0
+340	21	0
+341	21	0
+342	21	0
+343	21	0.00069381
+344	21	-0.00072381
+345	21	-0.013188
+346	21	-0.007407
+347	21	0.012428
+348	21	0.022962
+349	21	0.023057
+350	21	0.010691
+351	21	-0.00028421
+352	21	-0.026712
+353	21	-0.046209
+354	21	-0.059227
+355	21	-0.0033334
+356	21	0.031741
+357	21	0.031242
+358	21	0.0085367
+359	21	-0.0016308
+360	21	-0.0030615
+0	21.5	-0.0078053
+1	21.5	-0.010098
+2	21.5	-0.024471
+3	21.5	-0.036606
+4	21.5	-0.050247
+5	21.5	-0.066165
+6	21.5	-0.064974
+7	21.5	-0.048388
+8	21.5	-0.027967
+9	21.5	-0.012705
+10	21.5	-0.00053369
+11	21.5	0.011637
+12	21.5	0.0053199
+13	21.5	-0.018845
+14	21.5	-0.032383
+15	21.5	-0.045367
+16	21.5	-0.06206
+17	21.5	-0.049906
+18	21.5	-0.023306
+19	21.5	0.0029435
+20	21.5	0.011361
+21	21.5	0.0084345
+22	21.5	0.0039293
+23	21.5	0.0010983
+24	21.5	0.0006813
+25	21.5	0.0029886
+26	21.5	0.023538
+27	21.5	0.044088
+28	21.5	-0.22386
+29	21.5	-0.60903
+30	21.5	-0.90579
+31	21.5	-0.45871
+32	21.5	0.033726
+33	21.5	-0.014282
+34	21.5	-0.0011563
+35	21.5	-0.0021219
+36	21.5	-0.0020694
+37	21.5	-0.013385
+38	21.5	0
+39	21.5	-0.00021822
+40	21.5	-0.0048936
+41	21.5	0.0064403
+42	21.5	0.011664
+43	21.5	0.019424
+44	21.5	0.022468
+45	21.5	0.06207
+46	21.5	0.034126
+47	21.5	0.17819
+48	21.5	0.28261
+49	21.5	0.17023
+50	21.5	0.070341
+51	21.5	-0.019091
+52	21.5	-0.022419
+53	21.5	-0.016733
+54	21.5	-0.012796
+55	21.5	-0.016672
+56	21.5	-0.024489
+57	21.5	-0.033488
+58	21.5	-0.02112
+59	21.5	-0.0016921
+60	21.5	0
+61	21.5	0
+62	21.5	0
+63	21.5	0
+64	21.5	0
+65	21.5	0
+66	21.5	0
+67	21.5	0
+68	21.5	0
+69	21.5	0.10563
+70	21.5	0.31242
+71	21.5	0.4728
+72	21.5	0.39064
+73	21.5	0.40922
+74	21.5	0.93848
+75	21.5	1.0263
+76	21.5	0.98621
+77	21.5	0.69282
+78	21.5	0.54603
+79	21.5	0.3493
+80	21.5	0.15258
+81	21.5	-0.076241
+82	21.5	-0.37572
+83	21.5	-0.67099
+84	21.5	-0.93125
+85	21.5	-0.92873
+86	21.5	-0.81266
+87	21.5	-0.39797
+88	21.5	-0.027576
+89	21.5	-0.16395
+90	21.5	-0.17797
+91	21.5	0
+92	21.5	-0.077108
+93	21.5	-0.15794
+94	21.5	-0.068939
+95	21.5	-0.041843
+96	21.5	-0.045132
+97	21.5	-0.10021
+98	21.5	-0.28223
+99	21.5	-0.48479
+100	21.5	-0.44439
+101	21.5	-0.47124
+102	21.5	-0.23704
+103	21.5	0.016531
+104	21.5	0.23854
+105	21.5	0.38455
+106	21.5	0.42649
+107	21.5	0.40163
+108	21.5	0.050228
+109	21.5	0.021389
+110	21.5	0.024212
+111	21.5	0.039229
+112	21.5	0.072647
+113	21.5	0.044878
+114	21.5	0
+115	21.5	0
+116	21.5	0
+117	21.5	0
+118	21.5	0
+119	21.5	0
+120	21.5	0
+121	21.5	0
+122	21.5	0
+123	21.5	0
+124	21.5	0
+125	21.5	0
+126	21.5	0
+127	21.5	0
+128	21.5	0
+129	21.5	0
+130	21.5	0
+131	21.5	0
+132	21.5	0
+133	21.5	0
+134	21.5	0
+135	21.5	0
+136	21.5	0
+137	21.5	0
+138	21.5	0
+139	21.5	0
+140	21.5	0
+141	21.5	0
+142	21.5	0
+143	21.5	0
+144	21.5	0
+145	21.5	0
+146	21.5	0
+147	21.5	0
+148	21.5	0
+149	21.5	0
+150	21.5	0
+151	21.5	0
+152	21.5	0
+153	21.5	0
+154	21.5	0
+155	21.5	0
+156	21.5	0
+157	21.5	0
+158	21.5	0
+159	21.5	0
+160	21.5	0
+161	21.5	0
+162	21.5	0
+163	21.5	0
+164	21.5	0
+165	21.5	0
+166	21.5	0
+167	21.5	0
+168	21.5	0
+169	21.5	0
+170	21.5	0
+171	21.5	0
+172	21.5	0
+173	21.5	0
+174	21.5	0
+175	21.5	0
+176	21.5	0
+177	21.5	0
+178	21.5	0
+179	21.5	0
+180	21.5	0
+181	21.5	0
+182	21.5	0
+183	21.5	0
+184	21.5	0
+185	21.5	0
+186	21.5	0
+187	21.5	0
+188	21.5	0
+189	21.5	0
+190	21.5	0
+191	21.5	0
+192	21.5	0
+193	21.5	0
+194	21.5	0
+195	21.5	0
+196	21.5	0
+197	21.5	0
+198	21.5	0
+199	21.5	0
+200	21.5	0
+201	21.5	0
+202	21.5	0.2334
+203	21.5	0
+204	21.5	0
+205	21.5	0
+206	21.5	0
+207	21.5	0
+208	21.5	0
+209	21.5	0
+210	21.5	0
+211	21.5	0
+212	21.5	0
+213	21.5	0
+214	21.5	0
+215	21.5	0
+216	21.5	0
+217	21.5	0
+218	21.5	0
+219	21.5	0
+220	21.5	0
+221	21.5	0
+222	21.5	0
+223	21.5	0
+224	21.5	0
+225	21.5	0
+226	21.5	0
+227	21.5	0
+228	21.5	0
+229	21.5	0
+230	21.5	0
+231	21.5	0
+232	21.5	0
+233	21.5	0
+234	21.5	0
+235	21.5	0
+236	21.5	0
+237	21.5	0
+238	21.5	0
+239	21.5	0
+240	21.5	0
+241	21.5	0
+242	21.5	0
+243	21.5	0
+244	21.5	0
+245	21.5	0
+246	21.5	0
+247	21.5	0
+248	21.5	0
+249	21.5	0
+250	21.5	0
+251	21.5	0
+252	21.5	0
+253	21.5	0
+254	21.5	0
+255	21.5	0.69297
+256	21.5	0.54158
+257	21.5	-0.17451
+258	21.5	-0.40863
+259	21.5	-0.32349
+260	21.5	-0.22312
+261	21.5	-0.13737
+262	21.5	0.00013102
+263	21.5	0
+264	21.5	0
+265	21.5	0
+266	21.5	0
+267	21.5	0
+268	21.5	0
+269	21.5	0
+270	21.5	0.0032103
+271	21.5	0.016338
+272	21.5	0.064318
+273	21.5	0.019695
+274	21.5	0
+275	21.5	0
+276	21.5	-0.040988
+277	21.5	0
+278	21.5	0
+279	21.5	0
+280	21.5	0.024456
+281	21.5	0.052191
+282	21.5	0.20029
+283	21.5	0.026287
+284	21.5	0
+285	21.5	0
+286	21.5	0
+287	21.5	0.24311
+288	21.5	0
+289	21.5	0
+290	21.5	0
+291	21.5	0
+292	21.5	0
+293	21.5	0
+294	21.5	0
+295	21.5	0
+296	21.5	0
+297	21.5	0
+298	21.5	0
+299	21.5	0
+300	21.5	0
+301	21.5	0
+302	21.5	0
+303	21.5	0
+304	21.5	0
+305	21.5	0
+306	21.5	0
+307	21.5	0
+308	21.5	0
+309	21.5	0
+310	21.5	0
+311	21.5	0
+312	21.5	0
+313	21.5	0
+314	21.5	0
+315	21.5	0
+316	21.5	0
+317	21.5	0
+318	21.5	0
+319	21.5	0
+320	21.5	0
+321	21.5	0
+322	21.5	0
+323	21.5	0
+324	21.5	0
+325	21.5	0
+326	21.5	0
+327	21.5	0
+328	21.5	0
+329	21.5	0
+330	21.5	0
+331	21.5	0
+332	21.5	0
+333	21.5	0
+334	21.5	0
+335	21.5	0
+336	21.5	0
+337	21.5	0
+338	21.5	0
+339	21.5	0
+340	21.5	0
+341	21.5	0
+342	21.5	0
+343	21.5	0.00093408
+344	21.5	-0.0034929
+345	21.5	-0.019259
+346	21.5	-0.023937
+347	21.5	-0.0039107
+348	21.5	0.01466
+349	21.5	0.018214
+350	21.5	0.0082577
+351	21.5	-0.016278
+352	21.5	-0.048376
+353	21.5	-0.082889
+354	21.5	-0.077908
+355	21.5	-0.019152
+356	21.5	0.037686
+357	21.5	0.035929
+358	21.5	0.013223
+359	21.5	-0.0057645
+360	21.5	-0.0078053
+0	22	-0.010468
+1	22	-0.01334
+2	22	-0.032653
+3	22	-0.044789
+4	22	-0.059269
+5	22	-0.076177
+6	22	-0.070775
+7	22	-0.052703
+8	22	-0.036921
+9	22	-0.023019
+10	22	-0.010849
+11	22	0.011714
+12	22	0.0015253
+13	22	-0.022639
+14	22	-0.03532
+15	22	-0.048362
+16	22	-0.065007
+17	22	-0.046918
+18	22	-0.020019
+19	22	0.004847
+20	22	0.0068515
+21	22	0.0065802
+22	22	0.0037492
+23	22	0.00091813
+24	22	0.00042021
+25	22	0.0036769
+26	22	0.02471
+27	22	0.046846
+28	22	-0.12106
+29	22	-0.52512
+30	22	-1.0303
+31	22	-0.4828
+32	22	-0.22304
+33	22	-0.34707
+34	22	-0.010437
+35	22	-0.0029478
+36	22	-0.0019761
+37	22	-0.010495
+38	22	0
+39	22	-0.0011357
+40	22	-0.0031342
+41	22	0.0046054
+42	22	0.0059519
+43	22	0.014481
+44	22	0.0074658
+45	22	0.03926
+46	22	-0.013231
+47	22	0.16724
+48	22	0.23981
+49	22	0.15739
+50	22	0.061326
+51	22	-0.021328
+52	22	-0.023601
+53	22	-0.019501
+54	22	-0.015925
+55	22	-0.019381
+56	22	-0.024636
+57	22	-0.040513
+58	22	-0.028023
+59	22	-0.0028305
+60	22	4.5234e-05
+61	22	0
+62	22	0
+63	22	0
+64	22	0
+65	22	0
+66	22	0
+67	22	0
+68	22	0
+69	22	0.19979
+70	22	0.34525
+71	22	0.62454
+72	22	0.48545
+73	22	0.50145
+74	22	0.99993
+75	22	1.1066
+76	22	0.83477
+77	22	0.46173
+78	22	0.51017
+79	22	0.31345
+80	22	0.11672
+81	22	-0.22738
+82	22	-0.48513
+83	22	-0.71118
+84	22	-0.92893
+85	22	-0.96043
+86	22	-0.95708
+87	22	-0.87948
+88	22	-0.50802
+89	22	-0.51746
+90	22	-0.42583
+91	22	-0.01297
+92	22	-0.2894
+93	22	-0.36074
+94	22	-0.19827
+95	22	-0.10317
+96	22	-0.059636
+97	22	-0.089745
+98	22	-0.31213
+99	22	-0.50864
+100	22	-0.49781
+101	22	-0.45894
+102	22	-0.22903
+103	22	-0.048119
+104	22	0.15704
+105	22	0.34987
+106	22	0.46401
+107	22	0.50961
+108	22	0.38985
+109	22	0.15256
+110	22	0.12656
+111	22	0.11536
+112	22	0.20335
+113	22	0.2162
+114	22	0
+115	22	0
+116	22	0
+117	22	0
+118	22	0
+119	22	0
+120	22	0
+121	22	0
+122	22	0
+123	22	0
+124	22	0
+125	22	0
+126	22	0
+127	22	0
+128	22	0
+129	22	0
+130	22	0
+131	22	0
+132	22	0
+133	22	0
+134	22	0
+135	22	0
+136	22	0
+137	22	0
+138	22	0
+139	22	0
+140	22	0
+141	22	0
+142	22	0
+143	22	0
+144	22	0
+145	22	0
+146	22	0
+147	22	0
+148	22	0
+149	22	0
+150	22	0
+151	22	0
+152	22	0
+153	22	0
+154	22	0
+155	22	0
+156	22	0
+157	22	0
+158	22	0
+159	22	0
+160	22	0
+161	22	0
+162	22	0
+163	22	0
+164	22	0
+165	22	0
+166	22	0
+167	22	0
+168	22	0
+169	22	0
+170	22	0
+171	22	0
+172	22	0
+173	22	0
+174	22	0
+175	22	0
+176	22	0
+177	22	0
+178	22	0
+179	22	0
+180	22	0
+181	22	0
+182	22	0
+183	22	0
+184	22	0
+185	22	0
+186	22	0
+187	22	0
+188	22	0
+189	22	0
+190	22	0
+191	22	0
+192	22	0
+193	22	0
+194	22	0
+195	22	0
+196	22	0
+197	22	0
+198	22	0
+199	22	0
+200	22	0
+201	22	0
+202	22	0.063354
+203	22	0
+204	22	0
+205	22	0
+206	22	0
+207	22	0
+208	22	0
+209	22	0
+210	22	0
+211	22	0
+212	22	0
+213	22	0
+214	22	0
+215	22	0
+216	22	0
+217	22	0
+218	22	0
+219	22	0
+220	22	0
+221	22	0
+222	22	0
+223	22	0
+224	22	0
+225	22	0
+226	22	0
+227	22	0
+228	22	0
+229	22	0
+230	22	0
+231	22	0
+232	22	0
+233	22	0
+234	22	0
+235	22	0
+236	22	0
+237	22	0
+238	22	0
+239	22	0
+240	22	0
+241	22	0
+242	22	0
+243	22	0
+244	22	0
+245	22	0
+246	22	0
+247	22	0
+248	22	0
+249	22	0
+250	22	0
+251	22	0
+252	22	0
+253	22	0
+254	22	0
+255	22	0.29131
+256	22	0.37673
+257	22	-0.22628
+258	22	-0.4188
+259	22	-0.31771
+260	22	-0.23144
+261	22	-0.10007
+262	22	-0.0074256
+263	22	0
+264	22	0
+265	22	0
+266	22	0
+267	22	0
+268	22	0
+269	22	0
+270	22	0
+271	22	0
+272	22	0
+273	22	0
+274	22	0
+275	22	0
+276	22	-0.14566
+277	22	0
+278	22	0
+279	22	0.183
+280	22	0.19874
+281	22	0.12972
+282	22	0.10045
+283	22	0
+284	22	0
+285	22	0
+286	22	0
+287	22	0.083723
+288	22	0
+289	22	0
+290	22	0
+291	22	0
+292	22	0
+293	22	0
+294	22	0
+295	22	0
+296	22	0
+297	22	0
+298	22	0
+299	22	0
+300	22	0
+301	22	0
+302	22	0
+303	22	0
+304	22	0
+305	22	0
+306	22	0
+307	22	0
+308	22	0
+309	22	0
+310	22	0
+311	22	0
+312	22	0
+313	22	0
+314	22	0
+315	22	0
+316	22	0
+317	22	0
+318	22	0
+319	22	0
+320	22	0
+321	22	0
+322	22	0
+323	22	0
+324	22	0
+325	22	0
+326	22	0
+327	22	0
+328	22	0
+329	22	0
+330	22	0
+331	22	0
+332	22	0
+333	22	0
+334	22	0
+335	22	0
+336	22	0
+337	22	0
+338	22	0
+339	22	0
+340	22	0
+341	22	0
+342	22	0
+343	22	-1.3565e-05
+344	22	-0.0052796
+345	22	-0.02463
+346	22	-0.030469
+347	22	-0.01791
+348	22	0.0085003
+349	22	0.015036
+350	22	0.0058247
+351	22	-0.043131
+352	22	-0.08589
+353	22	-0.11711
+354	22	-0.096589
+355	22	-0.03497
+356	22	0.037262
+357	22	0.040615
+358	22	0.014014
+359	22	-0.0084277
+360	22	-0.010468
+0	22.5	-0.013132
+1	22.5	-0.016582
+2	22.5	-0.04032
+3	22.5	-0.052972
+4	22.5	-0.068292
+5	22.5	-0.085199
+6	22.5	-0.07744
+7	22.5	-0.061658
+8	22.5	-0.045876
+9	22.5	-0.032896
+10	22.5	-0.0086768
+11	22.5	0.010413
+12	22.5	-0.0045242
+13	22.5	-0.025611
+14	22.5	-0.038315
+15	22.5	-0.051356
+16	22.5	-0.060926
+17	22.5	-0.043631
+18	22.5	-0.016732
+19	22.5	0.0067504
+20	22.5	0.0079745
+21	22.5	0.0064001
+22	22.5	0.003569
+23	22.5	0.00073796
+24	22.5	0.00027131
+25	22.5	0.0053958
+26	22.5	0.024126
+27	22.5	0.046263
+28	22.5	-0.0093313
+29	22.5	-0.44121
+30	22.5	-1.0733
+31	22.5	-0.5069
+32	22.5	-0.64222
+33	22.5	-0.56009
+34	22.5	-0.041703
+35	22.5	-0.0042248
+36	22.5	-0.00072829
+37	22.5	-0.00032537
+38	22.5	0
+39	22.5	-0.0014626
+40	22.5	0.0041695
+41	22.5	0.0029767
+42	22.5	0.00044731
+43	22.5	0.0085609
+44	22.5	-0.0075368
+45	22.5	0.016451
+46	22.5	-0.056692
+47	22.5	0.15629
+48	22.5	0.21191
+49	22.5	0.14455
+50	22.5	0.041715
+51	22.5	-0.024057
+52	22.5	-0.026481
+53	22.5	-0.021589
+54	22.5	-0.020303
+55	22.5	-0.024784
+56	22.5	-0.029099
+57	22.5	-0.045006
+58	22.5	-0.03487
+59	22.5	-0.0097686
+60	22.5	-1.0741e-06
+61	22.5	0
+62	22.5	0
+63	22.5	0
+64	22.5	0
+65	22.5	0
+66	22.5	0
+67	22.5	0
+68	22.5	0
+69	22.5	0.11309
+70	22.5	0.47413
+71	22.5	0.59526
+72	22.5	0.4145
+73	22.5	0.46049
+74	22.5	0.71818
+75	22.5	0.97408
+76	22.5	0.53328
+77	22.5	0.3542
+78	22.5	0.44735
+79	22.5	0.27759
+80	22.5	-0.038958
+81	22.5	-0.37344
+82	22.5	-0.58658
+83	22.5	-0.75998
+84	22.5	-0.91063
+85	22.5	-0.9614
+86	22.5	-1.001
+87	22.5	-1.0757
+88	22.5	-0.96627
+89	22.5	-0.95154
+90	22.5	-0.8505
+91	22.5	-0.20537
+92	22.5	-0.12081
+93	22.5	-0.53509
+94	22.5	-0.28306
+95	22.5	-0.13147
+96	22.5	-0.087274
+97	22.5	-0.10468
+98	22.5	-0.31903
+99	22.5	-0.50898
+100	22.5	-0.55124
+101	22.5	-0.45669
+102	22.5	-0.29792
+103	22.5	-0.13182
+104	22.5	0.071216
+105	22.5	0.26623
+106	22.5	0.40491
+107	22.5	0.56451
+108	22.5	0.52325
+109	22.5	0.36772
+110	22.5	0.27718
+111	22.5	0.21074
+112	22.5	0.32963
+113	22.5	0.44739
+114	22.5	0.089296
+115	22.5	0.033656
+116	22.5	0
+117	22.5	0
+118	22.5	0
+119	22.5	0
+120	22.5	0
+121	22.5	-0.057923
+122	22.5	0
+123	22.5	0
+124	22.5	0
+125	22.5	0
+126	22.5	0
+127	22.5	0
+128	22.5	0
+129	22.5	0
+130	22.5	0
+131	22.5	0
+132	22.5	0
+133	22.5	0
+134	22.5	0
+135	22.5	0
+136	22.5	0
+137	22.5	0
+138	22.5	0
+139	22.5	0
+140	22.5	0
+141	22.5	0
+142	22.5	0
+143	22.5	0
+144	22.5	0
+145	22.5	0
+146	22.5	0
+147	22.5	0
+148	22.5	0
+149	22.5	0
+150	22.5	0
+151	22.5	0
+152	22.5	0
+153	22.5	0
+154	22.5	0
+155	22.5	0
+156	22.5	0
+157	22.5	0
+158	22.5	0
+159	22.5	0
+160	22.5	0
+161	22.5	0
+162	22.5	0
+163	22.5	0
+164	22.5	0
+165	22.5	0
+166	22.5	0
+167	22.5	0
+168	22.5	0
+169	22.5	0
+170	22.5	0
+171	22.5	0
+172	22.5	0
+173	22.5	0
+174	22.5	0
+175	22.5	0
+176	22.5	0
+177	22.5	0
+178	22.5	0
+179	22.5	0
+180	22.5	0
+181	22.5	0
+182	22.5	0
+183	22.5	0
+184	22.5	0
+185	22.5	0
+186	22.5	0
+187	22.5	0
+188	22.5	0
+189	22.5	0
+190	22.5	0
+191	22.5	0
+192	22.5	0
+193	22.5	0
+194	22.5	0
+195	22.5	0
+196	22.5	0
+197	22.5	0
+198	22.5	0
+199	22.5	0
+200	22.5	0
+201	22.5	0
+202	22.5	0
+203	22.5	0
+204	22.5	0
+205	22.5	0
+206	22.5	0
+207	22.5	0
+208	22.5	0
+209	22.5	0
+210	22.5	0
+211	22.5	0
+212	22.5	0
+213	22.5	0
+214	22.5	0
+215	22.5	0
+216	22.5	0
+217	22.5	0
+218	22.5	0
+219	22.5	0
+220	22.5	0
+221	22.5	0
+222	22.5	0
+223	22.5	0
+224	22.5	0
+225	22.5	0
+226	22.5	0
+227	22.5	0
+228	22.5	0
+229	22.5	0
+230	22.5	0
+231	22.5	0
+232	22.5	0
+233	22.5	0
+234	22.5	0
+235	22.5	0
+236	22.5	0
+237	22.5	0
+238	22.5	0
+239	22.5	0
+240	22.5	0
+241	22.5	0
+242	22.5	0
+243	22.5	0
+244	22.5	0
+245	22.5	0
+246	22.5	0
+247	22.5	0
+248	22.5	0
+249	22.5	0
+250	22.5	0
+251	22.5	-0.0018439
+252	22.5	0
+253	22.5	0
+254	22.5	0.060579
+255	22.5	0.36186
+256	22.5	0.2223
+257	22.5	-0.26178
+258	22.5	-0.42896
+259	22.5	-0.30404
+260	22.5	-0.21816
+261	22.5	-0.087283
+262	22.5	0.00022185
+263	22.5	0
+264	22.5	0
+265	22.5	0
+266	22.5	0
+267	22.5	0
+268	22.5	0
+269	22.5	0
+270	22.5	0
+271	22.5	0
+272	22.5	0
+273	22.5	0
+274	22.5	0
+275	22.5	0
+276	22.5	0
+277	22.5	0
+278	22.5	0
+279	22.5	0.39737
+280	22.5	0.2761
+281	22.5	0.05126
+282	22.5	0.063742
+283	22.5	0
+284	22.5	0
+285	22.5	0
+286	22.5	0
+287	22.5	0
+288	22.5	0
+289	22.5	0
+290	22.5	0
+291	22.5	0
+292	22.5	0
+293	22.5	0
+294	22.5	0
+295	22.5	0
+296	22.5	0
+297	22.5	0
+298	22.5	0
+299	22.5	0
+300	22.5	0
+301	22.5	0
+302	22.5	0
+303	22.5	0
+304	22.5	0
+305	22.5	0
+306	22.5	0
+307	22.5	0
+308	22.5	0
+309	22.5	0
+310	22.5	0
+311	22.5	0
+312	22.5	0
+313	22.5	0
+314	22.5	0
+315	22.5	0
+316	22.5	0
+317	22.5	0
+318	22.5	0
+319	22.5	0
+320	22.5	0
+321	22.5	0
+322	22.5	0
+323	22.5	0
+324	22.5	0
+325	22.5	0
+326	22.5	0
+327	22.5	0
+328	22.5	0
+329	22.5	0
+330	22.5	0
+331	22.5	0
+332	22.5	0
+333	22.5	0
+334	22.5	0
+335	22.5	0
+336	22.5	0
+337	22.5	0
+338	22.5	0
+339	22.5	0
+340	22.5	0
+341	22.5	0
+342	22.5	0
+343	22.5	0
+344	22.5	-0.0080588
+345	22.5	-0.027976
+346	22.5	-0.038529
+347	22.5	-0.024806
+348	22.5	0.0018489
+349	22.5	0.011858
+350	22.5	0.0024363
+351	22.5	-0.05709
+352	22.5	-0.1234
+353	22.5	-0.15132
+354	22.5	-0.11527
+355	22.5	-0.050789
+356	22.5	0.021444
+357	22.5	0.045302
+358	22.5	0.011884
+359	22.5	-0.011091
+360	22.5	-0.013132
+0	23	-0.015795
+1	23	-0.019823
+2	23	-0.041094
+3	23	-0.061155
+4	23	-0.077314
+5	23	-0.086615
+6	23	-0.077072
+7	23	-0.067345
+8	23	-0.053286
+9	23	-0.029067
+10	23	-0.0048484
+11	23	0.0032573
+12	23	-0.01168
+13	23	-0.028268
+14	23	-0.041309
+15	23	-0.054351
+16	23	-0.054063
+17	23	-0.039772
+18	23	-0.013445
+19	23	0.0086539
+20	23	0.011537
+21	23	0.0072136
+22	23	0.0041759
+23	23	0.0011382
+24	23	0.0002117
+25	23	0.0071147
+26	23	0.023543
+27	23	0.04568
+28	23	0.058988
+29	23	-0.3573
+30	23	-0.98939
+31	23	-1.0888
+32	23	-1.3682
+33	23	-1.0274
+34	23	-0.10691
+35	23	-0.0054378
+36	23	0
+37	23	0
+38	23	0
+39	23	-0.00070168
+40	23	0.00076256
+41	23	-0.0025961
+42	23	-0.0040646
+43	23	-0.014125
+44	23	-0.022539
+45	23	-0.081653
+46	23	-0.093594
+47	23	0.010952
+48	23	0.081987
+49	23	0.073121
+50	23	-0.0063886
+51	23	-0.03365
+52	23	-0.030412
+53	23	-0.023652
+54	23	-0.024017
+55	23	-0.030418
+56	23	-0.040144
+57	23	-0.056422
+58	23	-0.057292
+59	23	-0.0032774
+60	23	-7.9136e-05
+61	23	0
+62	23	0
+63	23	0
+64	23	0
+65	23	0
+66	23	0
+67	23	0
+68	23	0
+69	23	0.09635
+70	23	0.48846
+71	23	0.53385
+72	23	0.34625
+73	23	0.21782
+74	23	0.43643
+75	23	0.62988
+76	23	0.23179
+77	23	0.24667
+78	23	0.33982
+79	23	0.18447
+80	23	-0.20526
+81	23	-0.46961
+82	23	-0.651
+83	23	-0.82656
+84	23	-0.89725
+85	23	-0.93869
+86	23	-1.0898
+87	23	-1.26
+88	23	-1.3301
+89	23	-1.331
+90	23	-1.2961
+91	23	-0.45106
+92	23	-0.21764
+93	23	-0.67947
+94	23	-0.41022
+95	23	-0.15619
+96	23	-0.11491
+97	23	-0.13374
+98	23	-0.31937
+99	23	-0.50933
+100	23	-0.60466
+101	23	-0.5005
+102	23	-0.32953
+103	23	-0.18233
+104	23	-0.014764
+105	23	0.18235
+106	23	0.40181
+107	23	0.63883
+108	23	0.675
+109	23	0.52442
+110	23	0.3848
+111	23	0.33282
+112	23	0.40932
+113	23	0.52731
+114	23	0.48319
+115	23	0.43013
+116	23	0.15432
+117	23	0
+118	23	0
+119	23	0
+120	23	0
+121	23	-0.082232
+122	23	0
+123	23	0
+124	23	0
+125	23	0
+126	23	0
+127	23	0
+128	23	0
+129	23	0
+130	23	0
+131	23	0
+132	23	0
+133	23	0
+134	23	0
+135	23	0
+136	23	0
+137	23	0
+138	23	0
+139	23	0
+140	23	0
+141	23	0
+142	23	0
+143	23	0
+144	23	0
+145	23	0
+146	23	0
+147	23	0
+148	23	0
+149	23	0
+150	23	0
+151	23	0
+152	23	0
+153	23	0
+154	23	0
+155	23	0
+156	23	0
+157	23	0
+158	23	0
+159	23	0
+160	23	0
+161	23	0
+162	23	0
+163	23	0
+164	23	0
+165	23	0
+166	23	0
+167	23	0
+168	23	0
+169	23	0
+170	23	0
+171	23	0
+172	23	0
+173	23	0
+174	23	0
+175	23	0
+176	23	0
+177	23	0
+178	23	0
+179	23	0
+180	23	0
+181	23	0
+182	23	0
+183	23	0
+184	23	0
+185	23	0
+186	23	0
+187	23	0
+188	23	0
+189	23	0
+190	23	0
+191	23	0
+192	23	0
+193	23	0
+194	23	0
+195	23	0
+196	23	0
+197	23	0
+198	23	0
+199	23	0
+200	23	0
+201	23	0
+202	23	0
+203	23	0
+204	23	0
+205	23	0
+206	23	0
+207	23	0
+208	23	0
+209	23	0
+210	23	0
+211	23	0
+212	23	0
+213	23	0
+214	23	0
+215	23	0
+216	23	0
+217	23	0
+218	23	0
+219	23	0
+220	23	0
+221	23	0
+222	23	0
+223	23	0
+224	23	0
+225	23	0
+226	23	0
+227	23	0
+228	23	0
+229	23	0
+230	23	0
+231	23	0
+232	23	0
+233	23	0
+234	23	0
+235	23	0
+236	23	0
+237	23	0
+238	23	0
+239	23	0
+240	23	0
+241	23	0
+242	23	0
+243	23	0
+244	23	0
+245	23	0
+246	23	0
+247	23	0
+248	23	0
+249	23	0
+250	23	-0.0032549
+251	23	-0.0070182
+252	23	0
+253	23	0
+254	23	0.11151
+255	23	0.19498
+256	23	0.018498
+257	23	-0.23928
+258	23	-0.41244
+259	23	-0.30002
+260	23	-0.20751
+261	23	-0.086883
+262	23	-0.0010819
+263	23	0
+264	23	0
+265	23	0
+266	23	0
+267	23	0
+268	23	0
+269	23	0
+270	23	0
+271	23	0
+272	23	0
+273	23	0
+274	23	0
+275	23	0
+276	23	0
+277	23	0
+278	23	0
+279	23	0.38501
+280	23	0.071413
+281	23	0
+282	23	0.0065988
+283	23	0
+284	23	0
+285	23	0
+286	23	0
+287	23	0
+288	23	0
+289	23	0
+290	23	0
+291	23	0
+292	23	0
+293	23	0
+294	23	0
+295	23	0
+296	23	0
+297	23	0
+298	23	0
+299	23	0
+300	23	0
+301	23	0
+302	23	0
+303	23	0
+304	23	0
+305	23	0
+306	23	0
+307	23	0
+308	23	0
+309	23	0
+310	23	0
+311	23	0
+312	23	0
+313	23	0
+314	23	0
+315	23	0
+316	23	0
+317	23	0
+318	23	0
+319	23	0
+320	23	0
+321	23	0
+322	23	0
+323	23	0
+324	23	0
+325	23	0
+326	23	0
+327	23	0
+328	23	0
+329	23	0
+330	23	0
+331	23	0
+332	23	0
+333	23	0
+334	23	0
+335	23	0
+336	23	0
+337	23	0
+338	23	0
+339	23	0
+340	23	0
+341	23	0
+342	23	0
+343	23	0
+344	23	-0.0059826
+345	23	-0.028865
+346	23	-0.046436
+347	23	-0.031943
+348	23	-0.0049302
+349	23	0.0086798
+350	23	-0.0021131
+351	23	-0.071049
+352	23	-0.16092
+353	23	-0.18554
+354	23	-0.13763
+355	23	-0.064229
+356	23	0.0056253
+357	23	0.047205
+358	23	0.0097544
+359	23	-0.013754
+360	23	-0.015795
+0	23.5	-0.018458
+1	23.5	-0.023065
+2	23.5	-0.041867
+3	23.5	-0.069429
+4	23.5	-0.079005
+5	23.5	-0.085758
+6	23.5	-0.074205
+7	23.5	-0.064479
+8	23.5	-0.049458
+9	23.5	-0.025239
+10	23.5	-0.0010201
+11	23.5	-0.0038989
+12	23.5	-0.018836
+13	23.5	-0.031838
+14	23.5	-0.044786
+15	23.5	-0.057734
+16	23.5	-0.0472
+17	23.5	-0.03284
+18	23.5	-0.010158
+19	23.5	0.010557
+20	23.5	0.0151
+21	23.5	0.0086608
+22	23.5	0.0056231
+23	23.5	0.0022576
+24	23.5	0.00015208
+25	23.5	0.0088336
+26	23.5	0.02296
+27	23.5	0.045097
+28	23.5	0.055606
+29	23.5	-0.26934
+30	23.5	-0.89049
+31	23.5	-1.7787
+32	23.5	-2.1364
+33	23.5	-1.5508
+34	23.5	-0.22058
+35	23.5	-0.0038051
+36	23.5	0
+37	23.5	0
+38	23.5	0
+39	23.5	-0.0024925
+40	23.5	-0.0039895
+41	23.5	-0.0080063
+42	23.5	-0.013226
+43	23.5	-0.037633
+44	23.5	-0.10181
+45	23.5	-0.21731
+46	23.5	-0.23551
+47	23.5	-0.27793
+48	23.5	-0.2175
+49	23.5	-0.080297
+50	23.5	-0.053625
+51	23.5	-0.050303
+52	23.5	-0.026445
+53	23.5	-0.024346
+54	23.5	-0.027778
+55	23.5	-0.041346
+56	23.5	-0.062744
+57	23.5	-0.073499
+58	23.5	-0.083429
+59	23.5	-0.0034052
+60	23.5	0
+61	23.5	0
+62	23.5	0
+63	23.5	0
+64	23.5	0
+65	23.5	0
+66	23.5	0
+67	23.5	0
+68	23.5	0.021983
+69	23.5	0.33233
+70	23.5	0.46195
+71	23.5	0.42556
+72	23.5	0.23549
+73	23.5	0.063711
+74	23.5	0.15468
+75	23.5	0.28568
+76	23.5	0.045984
+77	23.5	0.13913
+78	23.5	0.1675
+79	23.5	-0.12972
+80	23.5	-0.43549
+81	23.5	-0.54329
+82	23.5	-0.71541
+83	23.5	-0.89315
+84	23.5	-1.0425
+85	23.5	-1.1019
+86	23.5	-1.2538
+87	23.5	-1.6801
+88	23.5	-1.7489
+89	23.5	-1.66
+90	23.5	-1.7716
+91	23.5	-0.72679
+92	23.5	-0.93693
+93	23.5	-0.82023
+94	23.5	-0.5541
+95	23.5	-0.21961
+96	23.5	-0.14255
+97	23.5	-0.163
+98	23.5	-0.31971
+99	23.5	-0.50967
+100	23.5	-0.65808
+101	23.5	-0.53569
+102	23.5	-0.36114
+103	23.5	-0.22135
+104	23.5	-0.083775
+105	23.5	0.1755
+106	23.5	0.40152
+107	23.5	0.61041
+108	23.5	0.76172
+109	23.5	0.6168
+110	23.5	0.47938
+111	23.5	0.31348
+112	23.5	0.34363
+113	23.5	0.51928
+114	23.5	0.51387
+115	23.5	0.55261
+116	23.5	0.4598
+117	23.5	0.076566
+118	23.5	0.0037979
+119	23.5	0
+120	23.5	0
+121	23.5	-0.10138
+122	23.5	0
+123	23.5	0
+124	23.5	0
+125	23.5	0
+126	23.5	0
+127	23.5	0
+128	23.5	0
+129	23.5	0
+130	23.5	0
+131	23.5	0
+132	23.5	0
+133	23.5	0
+134	23.5	0
+135	23.5	0
+136	23.5	0
+137	23.5	0
+138	23.5	0
+139	23.5	0
+140	23.5	0
+141	23.5	0
+142	23.5	0
+143	23.5	0
+144	23.5	0
+145	23.5	0
+146	23.5	0
+147	23.5	0
+148	23.5	0
+149	23.5	0
+150	23.5	0
+151	23.5	0
+152	23.5	0
+153	23.5	0
+154	23.5	0
+155	23.5	0
+156	23.5	0
+157	23.5	0
+158	23.5	0
+159	23.5	0
+160	23.5	0
+161	23.5	0
+162	23.5	0
+163	23.5	0
+164	23.5	0
+165	23.5	0
+166	23.5	0
+167	23.5	0
+168	23.5	0
+169	23.5	0
+170	23.5	0
+171	23.5	0
+172	23.5	0
+173	23.5	0
+174	23.5	0
+175	23.5	0
+176	23.5	0
+177	23.5	0
+178	23.5	0
+179	23.5	0
+180	23.5	0
+181	23.5	0
+182	23.5	0
+183	23.5	0
+184	23.5	0
+185	23.5	0
+186	23.5	0
+187	23.5	0
+188	23.5	0
+189	23.5	0
+190	23.5	0
+191	23.5	0
+192	23.5	0
+193	23.5	0
+194	23.5	0
+195	23.5	0
+196	23.5	0
+197	23.5	0
+198	23.5	0
+199	23.5	0
+200	23.5	0
+201	23.5	0
+202	23.5	0
+203	23.5	0
+204	23.5	0
+205	23.5	0
+206	23.5	0
+207	23.5	0
+208	23.5	0
+209	23.5	0
+210	23.5	0
+211	23.5	0
+212	23.5	0
+213	23.5	0
+214	23.5	0
+215	23.5	0
+216	23.5	0
+217	23.5	0
+218	23.5	0
+219	23.5	0
+220	23.5	0
+221	23.5	0
+222	23.5	0
+223	23.5	0
+224	23.5	0
+225	23.5	0
+226	23.5	0
+227	23.5	0
+228	23.5	0
+229	23.5	0
+230	23.5	0
+231	23.5	0
+232	23.5	0
+233	23.5	0
+234	23.5	0
+235	23.5	0
+236	23.5	0
+237	23.5	0
+238	23.5	0
+239	23.5	0
+240	23.5	0
+241	23.5	0
+242	23.5	0
+243	23.5	0
+244	23.5	0
+245	23.5	0
+246	23.5	0
+247	23.5	0
+248	23.5	0.024709
+249	23.5	0.0042956
+250	23.5	-0.0050944
+251	23.5	-0.0042198
+252	23.5	0
+253	23.5	0.00021893
+254	23.5	0.034034
+255	23.5	0.083326
+256	23.5	-0.04633
+257	23.5	-0.19767
+258	23.5	-0.38095
+259	23.5	-0.28836
+260	23.5	-0.19478
+261	23.5	-0.086483
+262	23.5	-0.0020834
+263	23.5	0
+264	23.5	0
+265	23.5	0
+266	23.5	0
+267	23.5	0
+268	23.5	0
+269	23.5	0
+270	23.5	0
+271	23.5	0
+272	23.5	0
+273	23.5	0
+274	23.5	0
+275	23.5	0
+276	23.5	0
+277	23.5	0
+278	23.5	0
+279	23.5	0.17567
+280	23.5	0
+281	23.5	0
+282	23.5	0
+283	23.5	0
+284	23.5	0
+285	23.5	0.033796
+286	23.5	0
+287	23.5	0
+288	23.5	0
+289	23.5	0
+290	23.5	0
+291	23.5	0
+292	23.5	0
+293	23.5	0
+294	23.5	0
+295	23.5	0
+296	23.5	0
+297	23.5	0
+298	23.5	0
+299	23.5	0
+300	23.5	0
+301	23.5	0
+302	23.5	0
+303	23.5	0
+304	23.5	0
+305	23.5	0
+306	23.5	0
+307	23.5	0
+308	23.5	0
+309	23.5	0
+310	23.5	0
+311	23.5	0
+312	23.5	0
+313	23.5	0
+314	23.5	0
+315	23.5	0
+316	23.5	0
+317	23.5	0
+318	23.5	0
+319	23.5	0
+320	23.5	0
+321	23.5	0
+322	23.5	0
+323	23.5	0
+324	23.5	0
+325	23.5	0
+326	23.5	0
+327	23.5	0
+328	23.5	0
+329	23.5	0
+330	23.5	0
+331	23.5	0
+332	23.5	0
+333	23.5	0
+334	23.5	0
+335	23.5	0
+336	23.5	0
+337	23.5	0
+338	23.5	0
+339	23.5	0
+340	23.5	0
+341	23.5	0
+342	23.5	0
+343	23.5	0
+344	23.5	-0.0011832
+345	23.5	-0.026708
+346	23.5	-0.048232
+347	23.5	-0.038701
+348	23.5	-0.011659
+349	23.5	0.0055018
+350	23.5	-0.0050639
+351	23.5	-0.085009
+352	23.5	-0.18957
+353	23.5	-0.21976
+354	23.5	-0.13406
+355	23.5	-0.062408
+356	23.5	0.0068904
+357	23.5	0.045076
+358	23.5	0.0076245
+359	23.5	-0.016417
+360	23.5	-0.018458
+0	24	-0.021481
+1	24	-0.026307
+2	24	-0.042641
+3	24	-0.071271
+4	24	-0.079768
+5	24	-0.083307
+6	24	-0.071339
+7	24	-0.061612
+8	24	-0.045209
+9	24	-0.021411
+10	24	0.0028083
+11	24	-0.011055
+12	24	-0.024209
+13	24	-0.036005
+14	24	-0.048954
+15	24	-0.048616
+16	24	-0.040337
+17	24	-0.025908
+18	24	-0.0068716
+19	24	0.012461
+20	24	0.018663
+21	24	0.010337
+22	24	0.0070703
+23	24	0.0028357
+24	24	9.2465e-05
+25	24	0.010553
+26	24	0.022377
+27	24	0.044514
+28	24	0.052225
+29	24	-0.14641
+30	24	-0.76756
+31	24	-0.98938
+32	24	-2.7202
+33	24	-1.7035
+34	24	-0.26959
+35	24	-0.0026444
+36	24	0
+37	24	0
+38	24	-0.00011574
+39	24	-0.0028856
+40	24	-0.0077189
+41	24	-0.013244
+42	24	-0.016256
+43	24	-0.06153
+44	24	-0.17348
+45	24	-0.31852
+46	24	-0.40355
+47	24	-0.50932
+48	24	-0.51105
+49	24	-0.24261
+50	24	-0.10483
+51	24	-0.055114
+52	24	-0.020157
+53	24	-0.010091
+54	24	-0.019445
+55	24	-0.05205
+56	24	-0.082923
+57	24	-0.055854
+58	24	-0.03731
+59	24	-0.010985
+60	24	0
+61	24	0
+62	24	0
+63	24	0
+64	24	0
+65	24	0
+66	24	0
+67	24	0
+68	24	0.11162
+69	24	0.34007
+70	24	0.41779
+71	24	0.31164
+72	24	0.10837
+73	24	-0.0904
+74	24	-0.12707
+75	24	-0.058521
+76	24	-0.10335
+77	24	-0.11166
+78	24	-0.15644
+79	24	-0.49715
+80	24	-0.62376
+81	24	-0.74471
+82	24	-0.83845
+83	24	-0.95973
+84	24	-1.2687
+85	24	-1.3093
+86	24	-1.4362
+87	24	-1.9895
+88	24	-2.1676
+89	24	-2.0561
+90	24	-2.0702
+91	24	-1.5344
+92	24	-1.0747
+93	24	-0.90177
+94	24	-0.69947
+95	24	-0.40081
+96	24	-0.21134
+97	24	-0.48647
+98	24	-0.63076
+99	24	-0.51001
+100	24	-0.69997
+101	24	-0.57087
+102	24	-0.39275
+103	24	-0.26037
+104	24	-0.085403
+105	24	0.17348
+106	24	0.42573
+107	24	0.63389
+108	24	0.79214
+109	24	0.69207
+110	24	0.53222
+111	24	0.32305
+112	24	0.27407
+113	24	0.35986
+114	24	0.46903
+115	24	0.62292
+116	24	0.57747
+117	24	0.31279
+118	24	0.055189
+119	24	0
+120	24	-0.015356
+121	24	-0.11347
+122	24	-0.018828
+123	24	0
+124	24	0
+125	24	0
+126	24	0
+127	24	0
+128	24	0
+129	24	0
+130	24	0
+131	24	0
+132	24	0
+133	24	0
+134	24	0
+135	24	0
+136	24	0
+137	24	0
+138	24	0
+139	24	0
+140	24	0
+141	24	0
+142	24	0
+143	24	0
+144	24	0
+145	24	0
+146	24	0
+147	24	0
+148	24	0
+149	24	0
+150	24	0
+151	24	0
+152	24	0
+153	24	0
+154	24	0
+155	24	0
+156	24	0
+157	24	0
+158	24	0
+159	24	0
+160	24	0
+161	24	0
+162	24	0
+163	24	0
+164	24	0
+165	24	0
+166	24	0
+167	24	0
+168	24	0
+169	24	0
+170	24	0
+171	24	0
+172	24	0
+173	24	0
+174	24	0
+175	24	0
+176	24	0
+177	24	0
+178	24	0
+179	24	0
+180	24	0
+181	24	0
+182	24	0
+183	24	0
+184	24	0
+185	24	0
+186	24	0
+187	24	0
+188	24	0
+189	24	0
+190	24	0
+191	24	0
+192	24	0
+193	24	0
+194	24	0
+195	24	0
+196	24	0
+197	24	0
+198	24	0
+199	24	0
+200	24	0
+201	24	0
+202	24	0
+203	24	0
+204	24	0
+205	24	0
+206	24	0
+207	24	0
+208	24	0
+209	24	0
+210	24	0
+211	24	0
+212	24	0
+213	24	0
+214	24	0
+215	24	0
+216	24	0
+217	24	0
+218	24	0
+219	24	0
+220	24	0
+221	24	0
+222	24	0
+223	24	0
+224	24	0
+225	24	0
+226	24	0
+227	24	0
+228	24	0
+229	24	0
+230	24	0
+231	24	0
+232	24	0
+233	24	0
+234	24	0
+235	24	0
+236	24	0
+237	24	0
+238	24	0
+239	24	0
+240	24	0
+241	24	0
+242	24	0
+243	24	0
+244	24	0
+245	24	0
+246	24	0
+247	24	0
+248	24	0.038721
+249	24	0.040919
+250	24	-0.0055843
+251	24	0
+252	24	0
+253	24	0.00069061
+254	24	0.019208
+255	24	0.028394
+256	24	-0.046802
+257	24	-0.18616
+258	24	-0.34946
+259	24	-0.31966
+260	24	-0.22043
+261	24	-0.12233
+262	24	-0.010075
+263	24	0
+264	24	0
+265	24	0
+266	24	0
+267	24	0
+268	24	0
+269	24	0
+270	24	0
+271	24	0
+272	24	0
+273	24	0
+274	24	0
+275	24	0
+276	24	0
+277	24	0
+278	24	0
+279	24	0
+280	24	0
+281	24	0
+282	24	0
+283	24	0
+284	24	0
+285	24	0.07236
+286	24	0
+287	24	0
+288	24	0
+289	24	0
+290	24	0
+291	24	0
+292	24	0
+293	24	0
+294	24	0
+295	24	0
+296	24	0
+297	24	0
+298	24	0
+299	24	0
+300	24	0
+301	24	0
+302	24	0
+303	24	0
+304	24	0
+305	24	0
+306	24	0
+307	24	0
+308	24	0
+309	24	0
+310	24	0
+311	24	0
+312	24	0
+313	24	0
+314	24	0
+315	24	0
+316	24	0
+317	24	0
+318	24	0
+319	24	0
+320	24	0
+321	24	0
+322	24	0
+323	24	0
+324	24	0
+325	24	0
+326	24	0
+327	24	0
+328	24	0
+329	24	0
+330	24	0
+331	24	0
+332	24	0
+333	24	0
+334	24	0
+335	24	0
+336	24	0
+337	24	0
+338	24	0
+339	24	0
+340	24	0
+341	24	0
+342	24	0
+343	24	0
+344	24	0
+345	24	-0.025606
+346	24	-0.0448
+347	24	-0.039745
+348	24	-0.016999
+349	24	0.0058336
+350	24	-0.004454
+351	24	-0.053782
+352	24	-0.20353
+353	24	-0.25397
+354	24	-0.13049
+355	24	-0.056508
+356	24	0.0087116
+357	24	0.050831
+358	24	0.0054945
+359	24	-0.01908
+360	24	-0.021481
+0	24.5	-0.024723
+1	24.5	-0.029549
+2	24.5	-0.043414
+3	24.5	-0.07081
+4	24.5	-0.080532
+5	24.5	-0.080855
+6	24.5	-0.068472
+7	24.5	-0.058746
+8	24.5	-0.04092
+9	24.5	-0.017582
+10	24.5	-0.0032736
+11	24.5	-0.017293
+12	24.5	-0.027937
+13	24.5	-0.040173
+14	24.5	-0.042761
+15	24.5	-0.036712
+16	24.5	-0.033115
+17	24.5	-0.018976
+18	24.5	-0.0035848
+19	24.5	0.014364
+20	24.5	0.022226
+21	24.5	0.012858
+22	24.5	0.0085175
+23	24.5	0.0034137
+24	24.5	0.0011399
+25	24.5	0.012271
+26	24.5	0.023403
+27	24.5	0.043267
+28	24.5	0.048843
+29	24.5	-0.023468
+30	24.5	-0.64462
+31	24.5	-0.76973
+32	24.5	-2.2572
+33	24.5	-1.7705
+34	24.5	-0.25213
+35	24.5	-0.001241
+36	24.5	0
+37	24.5	0.00062121
+38	24.5	0.0021392
+39	24.5	-0.0019738
+40	24.5	-0.0092223
+41	24.5	-0.018422
+42	24.5	-0.012959
+43	24.5	-0.10299
+44	24.5	-0.24514
+45	24.5	-0.38786
+46	24.5	-0.53185
+47	24.5	-0.67468
+48	24.5	-0.76333
+49	24.5	-0.6217
+50	24.5	-0.18887
+51	24.5	-0.078706
+52	24.5	-0.00859
+53	24.5	0
+54	24.5	0
+55	24.5	-0.061116
+56	24.5	-0.10744
+57	24.5	-0.0080846
+58	24.5	0
+59	24.5	0
+60	24.5	0
+61	24.5	-0.0065555
+62	24.5	0
+63	24.5	0
+64	24.5	0
+65	24.5	0
+66	24.5	0
+67	24.5	0.076679
+68	24.5	0.12221
+69	24.5	0.33577
+70	24.5	0.36796
+71	24.5	0.19771
+72	24.5	0.003215
+73	24.5	-0.22746
+74	24.5	-0.40582
+75	24.5	-0.24689
+76	24.5	-0.33141
+77	24.5	-0.39913
+78	24.5	-0.55881
+79	24.5	-0.68542
+80	24.5	-0.81202
+81	24.5	-0.93863
+82	24.5	-1.0388
+83	24.5	-1.1307
+84	24.5	-1.4948
+85	24.5	-1.5306
+86	24.5	-1.7103
+87	24.5	-2.2411
+88	24.5	-2.4191
+89	24.5	-2.1649
+90	24.5	-2.3409
+91	24.5	-1.6272
+92	24.5	-1.0752
+93	24.5	-0.98955
+94	24.5	-0.85082
+95	24.5	-0.5982
+96	24.5	-0.33287
+97	24.5	-0.7205
+98	24.5	-1.1072
+99	24.5	-1.0267
+100	24.5	-0.83603
+101	24.5	-0.60605
+102	24.5	-0.42436
+103	24.5	-0.29793
+104	24.5	-0.08703
+105	24.5	0.17146
+106	24.5	0.4314
+107	24.5	0.66339
+108	24.5	0.81536
+109	24.5	0.71433
+110	24.5	0.54342
+111	24.5	0.30549
+112	24.5	0.24734
+113	24.5	0.21899
+114	24.5	0.40688
+115	24.5	0.60278
+116	24.5	0.59756
+117	24.5	0.38277
+118	24.5	0.10763
+119	24.5	0
+120	24.5	-0.0078879
+121	24.5	-0.094395
+122	24.5	-0.0075831
+123	24.5	0
+124	24.5	0
+125	24.5	0
+126	24.5	0
+127	24.5	0
+128	24.5	0
+129	24.5	0
+130	24.5	0
+131	24.5	0
+132	24.5	0
+133	24.5	0
+134	24.5	0
+135	24.5	0
+136	24.5	0
+137	24.5	0
+138	24.5	0
+139	24.5	0
+140	24.5	0
+141	24.5	0
+142	24.5	0
+143	24.5	0
+144	24.5	0
+145	24.5	0
+146	24.5	0
+147	24.5	0
+148	24.5	0
+149	24.5	0
+150	24.5	0
+151	24.5	0
+152	24.5	0
+153	24.5	0
+154	24.5	0
+155	24.5	0
+156	24.5	0
+157	24.5	0
+158	24.5	0
+159	24.5	0
+160	24.5	0
+161	24.5	0
+162	24.5	0
+163	24.5	0
+164	24.5	0
+165	24.5	0
+166	24.5	0
+167	24.5	0
+168	24.5	0
+169	24.5	0
+170	24.5	0
+171	24.5	0
+172	24.5	0
+173	24.5	0
+174	24.5	0
+175	24.5	0
+176	24.5	0
+177	24.5	0
+178	24.5	0
+179	24.5	0
+180	24.5	0
+181	24.5	0
+182	24.5	0
+183	24.5	0
+184	24.5	0
+185	24.5	0
+186	24.5	0
+187	24.5	0
+188	24.5	0
+189	24.5	0
+190	24.5	0
+191	24.5	0
+192	24.5	0
+193	24.5	0
+194	24.5	0
+195	24.5	0
+196	24.5	0
+197	24.5	0
+198	24.5	0
+199	24.5	0
+200	24.5	0
+201	24.5	0
+202	24.5	0
+203	24.5	0
+204	24.5	0
+205	24.5	0
+206	24.5	0
+207	24.5	0
+208	24.5	0
+209	24.5	0
+210	24.5	0
+211	24.5	0
+212	24.5	0
+213	24.5	0
+214	24.5	0
+215	24.5	0
+216	24.5	0
+217	24.5	0
+218	24.5	0
+219	24.5	0
+220	24.5	0
+221	24.5	0
+222	24.5	0
+223	24.5	0
+224	24.5	0
+225	24.5	0
+226	24.5	0
+227	24.5	0
+228	24.5	0
+229	24.5	0
+230	24.5	0
+231	24.5	0
+232	24.5	0
+233	24.5	0
+234	24.5	0
+235	24.5	0
+236	24.5	0
+237	24.5	0
+238	24.5	0
+239	24.5	0
+240	24.5	0
+241	24.5	0
+242	24.5	0
+243	24.5	0
+244	24.5	0
+245	24.5	0
+246	24.5	0
+247	24.5	0
+248	24.5	0.052733
+249	24.5	0.06083
+250	24.5	0
+251	24.5	0
+252	24.5	0.0021552
+253	24.5	-0.0028369
+254	24.5	-0.00021392
+255	24.5	-0.002101
+256	24.5	-0.077814
+257	24.5	-0.19271
+258	24.5	-0.33541
+259	24.5	-0.35993
+260	24.5	-0.27933
+261	24.5	-0.18467
+262	24.5	-0.1323
+263	24.5	0
+264	24.5	0
+265	24.5	0
+266	24.5	0
+267	24.5	0
+268	24.5	0
+269	24.5	0
+270	24.5	0
+271	24.5	0
+272	24.5	0
+273	24.5	0
+274	24.5	0
+275	24.5	0
+276	24.5	0
+277	24.5	0
+278	24.5	0
+279	24.5	0
+280	24.5	0
+281	24.5	0
+282	24.5	0
+283	24.5	0
+284	24.5	0
+285	24.5	0.063558
+286	24.5	0
+287	24.5	0
+288	24.5	0
+289	24.5	0
+290	24.5	0
+291	24.5	0
+292	24.5	0
+293	24.5	0
+294	24.5	0
+295	24.5	0
+296	24.5	0
+297	24.5	0
+298	24.5	0
+299	24.5	0
+300	24.5	0
+301	24.5	0
+302	24.5	0
+303	24.5	0
+304	24.5	0
+305	24.5	0
+306	24.5	0
+307	24.5	0
+308	24.5	0
+309	24.5	0
+310	24.5	0
+311	24.5	0
+312	24.5	0
+313	24.5	0
+314	24.5	0
+315	24.5	0
+316	24.5	0
+317	24.5	0
+318	24.5	0
+319	24.5	0
+320	24.5	0
+321	24.5	0
+322	24.5	0
+323	24.5	0
+324	24.5	0
+325	24.5	0
+326	24.5	0
+327	24.5	0
+328	24.5	0
+329	24.5	0
+330	24.5	0
+331	24.5	0
+332	24.5	0
+333	24.5	0
+334	24.5	0
+335	24.5	0
+336	24.5	0
+337	24.5	0
+338	24.5	0
+339	24.5	0
+340	24.5	0
+341	24.5	0
+342	24.5	0
+343	24.5	0
+344	24.5	0
+345	24.5	-0.02301
+346	24.5	-0.043039
+347	24.5	-0.043296
+348	24.5	-0.022236
+349	24.5	0.0044742
+350	24.5	-0.0038442
+351	24.5	-0.043184
+352	24.5	-0.16142
+353	24.5	-0.25972
+354	24.5	-0.12692
+355	24.5	-0.047904
+356	24.5	0.010533
+357	24.5	0.057712
+358	24.5	0.0033646
+359	24.5	-0.021744
+360	24.5	-0.024723
+0	25	-0.027965
+1	25	-0.032791
+2	25	-0.044187
+3	25	-0.070349
+4	25	-0.081295
+5	25	-0.078403
+6	25	-0.065606
+7	25	-0.055879
+8	25	-0.036631
+9	25	-0.013754
+10	25	-0.010376
+11	25	-0.02102
+12	25	-0.031664
+13	25	-0.036906
+14	25	-0.0324
+15	25	-0.024736
+16	25	-0.020917
+17	25	-0.012044
+18	25	0.00081401
+19	25	0.016268
+20	25	0.02111
+21	25	0.015379
+22	25	0.0099647
+23	25	0.0039918
+24	25	0.0028588
+25	25	0.01399
+26	25	0.025122
+27	25	0.040676
+28	25	0.044692
+29	25	0.02975
+30	25	-0.43338
+31	25	-0.6169
+32	25	-1.9383
+33	25	-1.9156
+34	25	-0.26329
+35	25	-0.00014897
+36	25	0
+37	25	0.001482
+38	25	0.005254
+39	25	0.0014038
+40	25	-0.0076399
+41	25	-0.015083
+42	25	-0.0096629
+43	25	-0.093682
+44	25	-0.26498
+45	25	-0.45721
+46	25	-0.58799
+47	25	-0.75667
+48	25	-0.71516
+49	25	-0.59702
+50	25	-0.24366
+51	25	-0.088389
+52	25	0
+53	25	0
+54	25	0
+55	25	-0.03242
+56	25	-0.1099
+57	25	0
+58	25	0
+59	25	-0.058509
+60	25	0
+61	25	-0.012354
+62	25	0.013316
+63	25	0
+64	25	0
+65	25	0.010479
+66	25	0
+67	25	0.13767
+68	25	0.057776
+69	25	0.31923
+70	25	0.31253
+71	25	0.11261
+72	25	-0.05553
+73	25	-0.28434
+74	25	-0.59041
+75	25	-0.31866
+76	25	-0.45901
+77	25	-0.59935
+78	25	-0.80444
+79	25	-0.94612
+80	25	-1.0878
+81	25	-1.2164
+82	25	-1.2266
+83	25	-1.3256
+84	25	-1.721
+85	25	-1.7635
+86	25	-1.8923
+87	25	-2.4931
+88	25	-2.6168
+89	25	-2.2666
+90	25	-2.615
+91	25	-1.7993
+92	25	-1.1859
+93	25	-1.0011
+94	25	-0.99011
+95	25	-0.78754
+96	25	-0.56505
+97	25	-0.65766
+98	25	-1.1597
+99	25	-1.2258
+100	25	-0.89398
+101	25	-0.64124
+102	25	-0.45597
+103	25	-0.30034
+104	25	-0.088967
+105	25	0.16945
+106	25	0.4435
+107	25	0.6938
+108	25	0.78853
+109	25	0.73956
+110	25	0.55461
+111	25	0.28949
+112	25	0.22864
+113	25	0.17826
+114	25	0.36001
+115	25	0.58051
+116	25	0.59765
+117	25	0.44273
+118	25	0.17876
+119	25	0.025403
+120	25	0
+121	25	-0.022778
+122	25	0
+123	25	0
+124	25	0
+125	25	0
+126	25	0
+127	25	0
+128	25	0
+129	25	0
+130	25	0
+131	25	0
+132	25	0
+133	25	0
+134	25	0
+135	25	0
+136	25	0
+137	25	0
+138	25	0
+139	25	0
+140	25	0
+141	25	0
+142	25	0
+143	25	0
+144	25	0
+145	25	0
+146	25	0
+147	25	0
+148	25	0
+149	25	0
+150	25	0
+151	25	0
+152	25	0
+153	25	0
+154	25	0
+155	25	0
+156	25	0
+157	25	0
+158	25	0
+159	25	0
+160	25	0
+161	25	0
+162	25	0
+163	25	0
+164	25	0
+165	25	0
+166	25	0
+167	25	0
+168	25	0
+169	25	0
+170	25	0
+171	25	0
+172	25	0
+173	25	0
+174	25	0
+175	25	0
+176	25	0
+177	25	0
+178	25	0
+179	25	0
+180	25	0
+181	25	0
+182	25	0
+183	25	0
+184	25	0
+185	25	0
+186	25	0
+187	25	0
+188	25	0
+189	25	0
+190	25	0
+191	25	0
+192	25	0
+193	25	0
+194	25	0
+195	25	0
+196	25	0
+197	25	0
+198	25	0
+199	25	0
+200	25	0
+201	25	0
+202	25	0
+203	25	0
+204	25	0
+205	25	0
+206	25	0
+207	25	0
+208	25	0
+209	25	0
+210	25	0
+211	25	0
+212	25	0
+213	25	0
+214	25	0
+215	25	0
+216	25	0
+217	25	0
+218	25	0
+219	25	0
+220	25	0
+221	25	0
+222	25	0
+223	25	0
+224	25	0
+225	25	0
+226	25	0
+227	25	0
+228	25	0
+229	25	0
+230	25	0
+231	25	0
+232	25	0
+233	25	0
+234	25	0
+235	25	0
+236	25	0
+237	25	0
+238	25	0
+239	25	0
+240	25	0
+241	25	0
+242	25	0
+243	25	0
+244	25	0
+245	25	0
+246	25	0
+247	25	0
+248	25	0.026206
+249	25	0.051681
+250	25	0
+251	25	0.00067913
+252	25	0.0051527
+253	25	-0.01685
+254	25	-0.017847
+255	25	-0.014585
+256	25	-0.084982
+257	25	-0.18075
+258	25	-0.31563
+259	25	-0.40913
+260	25	-0.37455
+261	25	-0.2788
+262	25	-0.24873
+263	25	0
+264	25	0
+265	25	0
+266	25	0
+267	25	0
+268	25	0
+269	25	0
+270	25	0
+271	25	0
+272	25	0
+273	25	0
+274	25	0
+275	25	0
+276	25	0
+277	25	0
+278	25	0
+279	25	0.2698
+280	25	0
+281	25	0
+282	25	0
+283	25	0
+284	25	0.012894
+285	25	0.036481
+286	25	0
+287	25	0
+288	25	0
+289	25	0
+290	25	0
+291	25	0
+292	25	0
+293	25	0
+294	25	0
+295	25	0
+296	25	0
+297	25	0
+298	25	0
+299	25	0
+300	25	0
+301	25	0
+302	25	0
+303	25	0
+304	25	0
+305	25	0
+306	25	0
+307	25	0
+308	25	0
+309	25	0
+310	25	0
+311	25	0
+312	25	0
+313	25	0
+314	25	0
+315	25	0
+316	25	0
+317	25	0
+318	25	0
+319	25	0
+320	25	0
+321	25	0
+322	25	0
+323	25	0
+324	25	0
+325	25	0
+326	25	0
+327	25	0
+328	25	0
+329	25	0
+330	25	0
+331	25	0
+332	25	0
+333	25	0
+334	25	0
+335	25	0
+336	25	0
+337	25	0
+338	25	0
+339	25	0
+340	25	0
+341	25	0
+342	25	0
+343	25	0
+344	25	0
+345	25	0
+346	25	-0.042578
+347	25	-0.046616
+348	25	-0.020943
+349	25	0.0042067
+350	25	-0.0034454
+351	25	-0.037842
+352	25	-0.073709
+353	25	-0.21757
+354	25	-0.12335
+355	25	-0.039301
+356	25	0.017655
+357	25	0.064594
+358	25	0.0012346
+359	25	-0.024407
+360	25	-0.027965
+0	25.5	-0.031207
+1	25.5	-0.036032
+2	25.5	-0.044961
+3	25.5	-0.069888
+4	25.5	-0.082059
+5	25.5	-0.075952
+6	25.5	-0.062739
+7	25.5	-0.053013
+8	25.5	-0.032343
+9	25.5	-0.0096474
+10	25.5	-0.014129
+11	25.5	-0.024807
+12	25.5	-0.037421
+13	25.5	-0.026545
+14	25.5	-0.022039
+15	25.5	-0.01276
+16	25.5	-0.0087192
+17	25.5	-0.0071739
+18	25.5	0.0072526
+19	25.5	0.018009
+20	25.5	0.016809
+21	25.5	0.017008
+22	25.5	0.011028
+23	25.5	0.0044897
+24	25.5	0.00025557
+25	25.5	0.014307
+26	25.5	0.026841
+27	25.5	0.038086
+28	25.5	0.033184
+29	25.5	0.021364
+30	25.5	-0.22082
+31	25.5	-0.59965
+32	25.5	-1.69
+33	25.5	-1.9144
+34	25.5	-0.27797
+35	25.5	1.1025e-05
+36	25.5	0
+37	25.5	0.0061067
+38	25.5	0.012179
+39	25.5	0.0082359
+40	25.5	-0.0032091
+41	25.5	-0.010196
+42	25.5	-0.0063665
+43	25.5	-0.089608
+44	25.5	-0.29021
+45	25.5	-0.52834
+46	25.5	-0.64413
+47	25.5	-0.76042
+48	25.5	-0.70067
+49	25.5	-0.53501
+50	25.5	-0.21497
+51	25.5	-0.095273
+52	25.5	0
+53	25.5	0
+54	25.5	0
+55	25.5	0
+56	25.5	-0.10058
+57	25.5	-0.019294
+58	25.5	-0.17801
+59	25.5	-0.32376
+60	25.5	-0.076193
+61	25.5	-0.081243
+62	25.5	0.011706
+63	25.5	0.066041
+64	25.5	0.09866
+65	25.5	0.12075
+66	25.5	0.092849
+67	25.5	0.21624
+68	25.5	0.1858
+69	25.5	0.26692
+70	25.5	0.27382
+71	25.5	0.069805
+72	25.5	-0.087966
+73	25.5	-0.34122
+74	25.5	-0.5643
+75	25.5	-0.44626
+76	25.5	-0.59452
+77	25.5	-0.83514
+78	25.5	-1.1655
+79	25.5	-1.3072
+80	25.5	-1.4489
+81	25.5	-1.4721
+82	25.5	-1.4144
+83	25.5	-1.5205
+84	25.5	-1.9572
+85	25.5	-1.8952
+86	25.5	-2.0507
+87	25.5	-2.7451
+88	25.5	-2.8046
+89	25.5	-2.3857
+90	25.5	-2.4931
+91	25.5	-1.9525
+92	25.5	-1.2511
+93	25.5	-1.1542
+94	25.5	-1.2338
+95	25.5	-1.0848
+96	25.5	-0.79722
+97	25.5	-0.59481
+98	25.5	-1.1051
+99	25.5	-1.2837
+100	25.5	-0.90467
+101	25.5	-0.61465
+102	25.5	-0.48757
+103	25.5	-0.2585
+104	25.5	0.0092443
+105	25.5	0.18416
+106	25.5	0.47588
+107	25.5	0.72493
+108	25.5	0.81495
+109	25.5	0.76094
+110	25.5	0.57548
+111	25.5	0.34077
+112	25.5	0.20994
+113	25.5	0.13204
+114	25.5	0.30469
+115	25.5	0.54703
+116	25.5	0.58157
+117	25.5	0.45161
+118	25.5	0.24072
+119	25.5	0.058983
+120	25.5	0
+121	25.5	0
+122	25.5	0
+123	25.5	0
+124	25.5	0
+125	25.5	0
+126	25.5	0
+127	25.5	0
+128	25.5	0
+129	25.5	0
+130	25.5	0
+131	25.5	0
+132	25.5	0
+133	25.5	0
+134	25.5	0
+135	25.5	0
+136	25.5	0
+137	25.5	0
+138	25.5	0
+139	25.5	0
+140	25.5	0
+141	25.5	0
+142	25.5	0
+143	25.5	0
+144	25.5	0
+145	25.5	0
+146	25.5	0
+147	25.5	0
+148	25.5	0
+149	25.5	0
+150	25.5	0
+151	25.5	0
+152	25.5	0
+153	25.5	0
+154	25.5	0
+155	25.5	0
+156	25.5	0
+157	25.5	0
+158	25.5	0
+159	25.5	0
+160	25.5	0
+161	25.5	0
+162	25.5	0
+163	25.5	0
+164	25.5	0
+165	25.5	0
+166	25.5	0
+167	25.5	0
+168	25.5	0
+169	25.5	0
+170	25.5	0
+171	25.5	0
+172	25.5	0
+173	25.5	0
+174	25.5	0
+175	25.5	0
+176	25.5	0
+177	25.5	0
+178	25.5	0
+179	25.5	0
+180	25.5	0
+181	25.5	0
+182	25.5	0
+183	25.5	0
+184	25.5	0
+185	25.5	0
+186	25.5	0
+187	25.5	0
+188	25.5	0
+189	25.5	0
+190	25.5	0
+191	25.5	0
+192	25.5	0
+193	25.5	0
+194	25.5	0
+195	25.5	0
+196	25.5	0
+197	25.5	0
+198	25.5	0
+199	25.5	0
+200	25.5	0
+201	25.5	0
+202	25.5	0
+203	25.5	0
+204	25.5	0
+205	25.5	0
+206	25.5	0
+207	25.5	0
+208	25.5	0
+209	25.5	0
+210	25.5	0
+211	25.5	0
+212	25.5	0
+213	25.5	0
+214	25.5	0
+215	25.5	0
+216	25.5	0
+217	25.5	0
+218	25.5	0
+219	25.5	0
+220	25.5	0
+221	25.5	0
+222	25.5	0
+223	25.5	0
+224	25.5	0
+225	25.5	0
+226	25.5	0
+227	25.5	0
+228	25.5	0
+229	25.5	0
+230	25.5	0
+231	25.5	0
+232	25.5	0
+233	25.5	0
+234	25.5	0
+235	25.5	0
+236	25.5	0
+237	25.5	0
+238	25.5	0
+239	25.5	0
+240	25.5	0
+241	25.5	0
+242	25.5	0
+243	25.5	0
+244	25.5	0
+245	25.5	0
+246	25.5	0
+247	25.5	0
+248	25.5	0.041599
+249	25.5	0.020547
+250	25.5	0
+251	25.5	0.0022328
+252	25.5	0.0067193
+253	25.5	-0.039724
+254	25.5	-0.037788
+255	25.5	-0.029085
+256	25.5	-0.069434
+257	25.5	-0.16159
+258	25.5	-0.29702
+259	25.5	-0.47694
+260	25.5	-0.49661
+261	25.5	-0.43676
+262	25.5	-0.47222
+263	25.5	0
+264	25.5	0
+265	25.5	0
+266	25.5	0
+267	25.5	0
+268	25.5	0
+269	25.5	0
+270	25.5	0
+271	25.5	0
+272	25.5	0
+273	25.5	0
+274	25.5	0
+275	25.5	0
+276	25.5	0
+277	25.5	0
+278	25.5	0.19705
+279	25.5	0.52703
+280	25.5	0
+281	25.5	0
+282	25.5	0
+283	25.5	0
+284	25.5	0.010161
+285	25.5	0.0094051
+286	25.5	0
+287	25.5	0
+288	25.5	0
+289	25.5	0
+290	25.5	0
+291	25.5	0
+292	25.5	0
+293	25.5	0
+294	25.5	0
+295	25.5	0
+296	25.5	0
+297	25.5	0
+298	25.5	0
+299	25.5	0
+300	25.5	0
+301	25.5	0
+302	25.5	0
+303	25.5	0
+304	25.5	0
+305	25.5	0
+306	25.5	0
+307	25.5	0
+308	25.5	0
+309	25.5	0
+310	25.5	0
+311	25.5	0
+312	25.5	0
+313	25.5	0
+314	25.5	0
+315	25.5	0
+316	25.5	0
+317	25.5	0
+318	25.5	0
+319	25.5	0
+320	25.5	0
+321	25.5	0
+322	25.5	0
+323	25.5	0
+324	25.5	0
+325	25.5	0
+326	25.5	0
+327	25.5	0
+328	25.5	0
+329	25.5	0
+330	25.5	0
+331	25.5	0
+332	25.5	0
+333	25.5	0
+334	25.5	0
+335	25.5	0
+336	25.5	0
+337	25.5	0
+338	25.5	0
+339	25.5	0
+340	25.5	0
+341	25.5	0
+342	25.5	0
+343	25.5	0
+344	25.5	0
+345	25.5	-0.0049362
+346	25.5	-0.035843
+347	25.5	-0.0403
+348	25.5	-0.014457
+349	25.5	0.0035507
+350	25.5	-0.0041273
+351	25.5	-0.03024
+352	25.5	-0.064243
+353	25.5	-0.14357
+354	25.5	-0.11978
+355	25.5	-0.030697
+356	25.5	0.026258
+357	25.5	0.071475
+358	25.5	0.00041248
+359	25.5	-0.02707
+360	25.5	-0.031207
+0	26	-0.034448
+1	26	-0.039274
+2	26	-0.045444
+3	26	-0.069427
+4	26	-0.082822
+5	26	-0.0735
+6	26	-0.060015
+7	26	-0.050146
+8	26	-0.028054
+9	26	-0.0074427
+10	26	-0.018179
+11	26	-0.028858
+12	26	-0.051835
+13	26	-0.016184
+14	26	-0.011678
+15	26	-0.00078375
+16	26	0.0017252
+17	26	-0.0049036
+18	26	0.009523
+19	26	0.019665
+20	26	0.012507
+21	26	0.012706
+22	26	0.011397
+23	26	0.0045628
+24	26	-0.0022716
+25	26	0.0056528
+26	26	0.019331
+27	26	0.025376
+28	26	0.020997
+29	26	0.014317
+30	26	-0.14859
+31	26	-0.4456
+32	26	-1.6818
+33	26	-0.9838
+34	26	-0.24664
+35	26	0
+36	26	0
+37	26	0.012882
+38	26	0.023344
+39	26	0.017173
+40	26	0.00088023
+41	26	0.0050001
+42	26	0.011741
+43	26	-0.10462
+44	26	-0.25989
+45	26	-0.60967
+46	26	-0.70028
+47	26	-0.7387
+48	26	-0.61704
+49	26	-0.42515
+50	26	-0.11699
+51	26	-0.0037137
+52	26	0
+53	26	0
+54	26	0
+55	26	0
+56	26	-0.14003
+57	26	-0.0065043
+58	26	-0.37091
+59	26	-0.43033
+60	26	-0.28934
+61	26	-0.17183
+62	26	-0.010435
+63	26	0.047493
+64	26	0.096289
+65	26	0.13383
+66	26	0.1688
+67	26	0.39375
+68	26	0.38706
+69	26	0.26124
+70	26	0.14776
+71	26	0.048519
+72	26	-0.1204
+73	26	-0.34625
+74	26	-0.49631
+75	26	-0.59002
+76	26	-0.77628
+77	26	-1.1398
+78	26	-1.5266
+79	26	-1.6683
+80	26	-1.7265
+81	26	-1.7278
+82	26	-1.6538
+83	26	-1.7154
+84	26	-2.2237
+85	26	-1.931
+86	26	-2.1454
+87	26	-2.359
+88	26	-2.4844
+89	26	-2.1857
+90	26	-2.3713
+91	26	-2.0493
+92	26	-1.3901
+93	26	-1.3573
+94	26	-1.5206
+95	26	-1.435
+96	26	-1.0294
+97	26	-0.77665
+98	26	-1.273
+99	26	-1.3417
+100	26	-0.90887
+101	26	-0.58518
+102	26	-0.46358
+103	26	-0.15561
+104	26	0.1086
+105	26	0.28381
+106	26	0.50826
+107	26	0.74064
+108	26	0.84137
+109	26	0.78232
+110	26	0.61392
+111	26	0.39765
+112	26	0.18898
+113	26	0.17772
+114	26	0.26016
+115	26	0.5015
+116	26	0.56735
+117	26	0.46183
+118	26	0.27837
+119	26	0.10036
+120	26	0
+121	26	0
+122	26	0
+123	26	0
+124	26	0
+125	26	0
+126	26	0
+127	26	0
+128	26	0
+129	26	0
+130	26	0
+131	26	0
+132	26	0
+133	26	0
+134	26	0
+135	26	0
+136	26	0
+137	26	0
+138	26	0
+139	26	0
+140	26	0
+141	26	0
+142	26	0
+143	26	0
+144	26	0
+145	26	0
+146	26	0
+147	26	0
+148	26	0
+149	26	0
+150	26	0
+151	26	0
+152	26	0
+153	26	0
+154	26	0
+155	26	0
+156	26	0
+157	26	0
+158	26	0
+159	26	0
+160	26	0
+161	26	0
+162	26	0
+163	26	0
+164	26	0
+165	26	0
+166	26	0
+167	26	0
+168	26	0
+169	26	0
+170	26	0
+171	26	0
+172	26	0
+173	26	0
+174	26	0
+175	26	0
+176	26	0
+177	26	0
+178	26	0
+179	26	0
+180	26	0
+181	26	0
+182	26	0
+183	26	0
+184	26	0
+185	26	0
+186	26	0
+187	26	0
+188	26	0
+189	26	0
+190	26	0
+191	26	0
+192	26	0
+193	26	0
+194	26	0
+195	26	0
+196	26	0
+197	26	0
+198	26	0
+199	26	0
+200	26	0
+201	26	0
+202	26	0
+203	26	0
+204	26	0
+205	26	0
+206	26	0
+207	26	0
+208	26	0
+209	26	0
+210	26	0
+211	26	0
+212	26	0
+213	26	0
+214	26	0
+215	26	0
+216	26	0
+217	26	0
+218	26	0
+219	26	0
+220	26	0
+221	26	0
+222	26	0
+223	26	0
+224	26	0
+225	26	0
+226	26	0
+227	26	0
+228	26	0
+229	26	0
+230	26	0
+231	26	0
+232	26	0
+233	26	0
+234	26	0
+235	26	0
+236	26	0
+237	26	0
+238	26	0
+239	26	0
+240	26	0
+241	26	0
+242	26	0
+243	26	0
+244	26	0
+245	26	0
+246	26	0
+247	26	0
+248	26	0.07929
+249	26	0.041388
+250	26	0
+251	26	0.011885
+252	26	-0.0058125
+253	26	-0.063874
+254	26	-0.051943
+255	26	-0.043639
+256	26	-0.05448
+257	26	-0.14785
+258	26	-0.27841
+259	26	-0.44376
+260	26	-0.57237
+261	26	-0.60432
+262	26	-0.80413
+263	26	-0.1356
+264	26	0
+265	26	0
+266	26	0
+267	26	0
+268	26	0
+269	26	0
+270	26	0
+271	26	0
+272	26	0
+273	26	0
+274	26	0
+275	26	0
+276	26	0
+277	26	0
+278	26	0.034302
+279	26	0.86388
+280	26	0.35216
+281	26	0
+282	26	0
+283	26	0
+284	26	0
+285	26	0
+286	26	0
+287	26	0
+288	26	0
+289	26	0
+290	26	0
+291	26	0
+292	26	0
+293	26	0
+294	26	0
+295	26	0
+296	26	0
+297	26	0
+298	26	0
+299	26	0
+300	26	0
+301	26	0
+302	26	0
+303	26	0
+304	26	0
+305	26	0
+306	26	0
+307	26	0
+308	26	0
+309	26	0
+310	26	0
+311	26	0
+312	26	0
+313	26	0
+314	26	0
+315	26	0
+316	26	0
+317	26	0
+318	26	0
+319	26	0
+320	26	0
+321	26	0
+322	26	0
+323	26	0
+324	26	0
+325	26	0
+326	26	0
+327	26	0
+328	26	0
+329	26	0
+330	26	0
+331	26	0
+332	26	0
+333	26	0
+334	26	0
+335	26	0
+336	26	0
+337	26	0
+338	26	0
+339	26	0
+340	26	0
+341	26	0
+342	26	0
+343	26	0
+344	26	0
+345	26	-0.0065559
+346	26	-0.024623
+347	26	-0.024651
+348	26	-0.0079848
+349	26	0.0058352
+350	26	-0.0082129
+351	26	-0.022638
+352	26	-0.05711
+353	26	-0.089217
+354	26	-0.10893
+355	26	-0.022093
+356	26	0.030919
+357	26	0.064665
+358	26	0.007294
+359	26	-0.029733
+360	26	-0.034448
+0	26.5	-0.03761
+1	26.5	-0.041718
+2	26.5	-0.049469
+3	26.5	-0.068966
+4	26.5	-0.083586
+5	26.5	-0.071048
+6	26.5	-0.057563
+7	26.5	-0.04646
+8	26.5	-0.023765
+9	26.5	-0.0085492
+10	26.5	-0.02223
+11	26.5	-0.032908
+12	26.5	-0.064789
+13	26.5	-0.0076122
+14	26.5	-1.3921e-05
+15	26.5	0.011192
+16	26.5	0.0061699
+17	26.5	-0.0018417
+18	26.5	0.011793
+19	26.5	0.019088
+20	26.5	0.0082056
+21	26.5	0.0083473
+22	26.5	0.011223
+23	26.5	0.0046359
+24	26.5	-0.0021985
+25	26.5	4.7639e-05
+26	26.5	0.0047028
+27	26.5	0.010797
+28	26.5	0.0088045
+29	26.5	0.0076393
+30	26.5	-0.062294
+31	26.5	-0.4843
+32	26.5	-0.85079
+33	26.5	-0.63478
+34	26.5	-0.17792
+35	26.5	0
+36	26.5	0
+37	26.5	0.019898
+38	26.5	0.033595
+39	26.5	0.028542
+40	26.5	0.0041505
+41	26.5	0.024173
+42	26.5	0.042594
+43	26.5	-0.099969
+44	26.5	-0.27489
+45	26.5	-0.58866
+46	26.5	-0.72093
+47	26.5	-0.7039
+48	26.5	-0.53462
+49	26.5	-0.30791
+50	26.5	-0.10444
+51	26.5	0
+52	26.5	0
+53	26.5	0
+54	26.5	-0.039761
+55	26.5	-0.22811
+56	26.5	-0.27813
+57	26.5	-0.22319
+58	26.5	-0.49847
+59	26.5	-0.49338
+60	26.5	-0.35959
+61	26.5	-0.19672
+62	26.5	-0.037985
+63	26.5	0.025283
+64	26.5	0.070334
+65	26.5	0.12156
+66	26.5	0.18812
+67	26.5	0.45139
+68	26.5	0.467
+69	26.5	0.36217
+70	26.5	0.18411
+71	26.5	0.031455
+72	26.5	-0.1352
+73	26.5	-0.32829
+74	26.5	-0.58552
+75	26.5	-0.77178
+76	26.5	-0.95804
+77	26.5	-1.4445
+78	26.5	-1.8877
+79	26.5	-1.9809
+80	26.5	-1.9822
+81	26.5	-2.0164
+82	26.5	-1.9106
+83	26.5	-1.9103
+84	26.5	-2.2607
+85	26.5	-1.9667
+86	26.5	-1.9355
+87	26.5	-1.9518
+88	26.5	-2.1642
+89	26.5	-2.0059
+90	26.5	-2.2161
+91	26.5	-2.083
+92	26.5	-1.5291
+93	26.5	-1.5847
+94	26.5	-1.8002
+95	26.5	-1.7746
+96	26.5	-0.90857
+97	26.5	-0.75138
+98	26.5	-1.4408
+99	26.5	-1.3996
+100	26.5	-0.91306
+101	26.5	-0.59663
+102	26.5	-0.40981
+103	26.5	-0.052717
+104	26.5	0.20796
+105	26.5	0.38659
+106	26.5	0.54073
+107	26.5	0.74593
+108	26.5	0.8773
+109	26.5	0.80371
+110	26.5	0.65235
+111	26.5	0.44072
+112	26.5	0.21138
+113	26.5	0.2196
+114	26.5	0.2344
+115	26.5	0.4389
+116	26.5	0.54751
+117	26.5	0.46697
+118	26.5	0.32102
+119	26.5	0.15419
+120	26.5	0.034613
+121	26.5	0
+122	26.5	0
+123	26.5	0
+124	26.5	0
+125	26.5	0
+126	26.5	0
+127	26.5	0
+128	26.5	0
+129	26.5	0
+130	26.5	0
+131	26.5	0
+132	26.5	0
+133	26.5	0
+134	26.5	0
+135	26.5	0
+136	26.5	0
+137	26.5	0
+138	26.5	0
+139	26.5	0
+140	26.5	0
+141	26.5	0
+142	26.5	0
+143	26.5	0
+144	26.5	0
+145	26.5	0
+146	26.5	0
+147	26.5	0
+148	26.5	0
+149	26.5	0
+150	26.5	0
+151	26.5	0
+152	26.5	0
+153	26.5	0
+154	26.5	0
+155	26.5	0
+156	26.5	0
+157	26.5	0
+158	26.5	0
+159	26.5	0
+160	26.5	0
+161	26.5	0
+162	26.5	0
+163	26.5	0
+164	26.5	0
+165	26.5	0
+166	26.5	0
+167	26.5	0
+168	26.5	0
+169	26.5	0
+170	26.5	0
+171	26.5	0
+172	26.5	0
+173	26.5	0
+174	26.5	0
+175	26.5	0
+176	26.5	0
+177	26.5	0
+178	26.5	0
+179	26.5	0
+180	26.5	0
+181	26.5	0
+182	26.5	0
+183	26.5	0
+184	26.5	0
+185	26.5	0
+186	26.5	0
+187	26.5	0
+188	26.5	0
+189	26.5	0
+190	26.5	0
+191	26.5	0
+192	26.5	0
+193	26.5	0
+194	26.5	0
+195	26.5	0
+196	26.5	0
+197	26.5	0
+198	26.5	0
+199	26.5	0
+200	26.5	0
+201	26.5	0
+202	26.5	0
+203	26.5	0
+204	26.5	0
+205	26.5	0
+206	26.5	0
+207	26.5	0
+208	26.5	0
+209	26.5	0
+210	26.5	0
+211	26.5	0
+212	26.5	0
+213	26.5	0
+214	26.5	0
+215	26.5	0
+216	26.5	0
+217	26.5	0
+218	26.5	0
+219	26.5	0
+220	26.5	0
+221	26.5	0
+222	26.5	0
+223	26.5	0
+224	26.5	0
+225	26.5	0
+226	26.5	0
+227	26.5	0
+228	26.5	0
+229	26.5	0
+230	26.5	0
+231	26.5	0
+232	26.5	0
+233	26.5	0
+234	26.5	0
+235	26.5	0
+236	26.5	0
+237	26.5	0
+238	26.5	0
+239	26.5	0
+240	26.5	0
+241	26.5	0
+242	26.5	0
+243	26.5	0
+244	26.5	0
+245	26.5	0
+246	26.5	0
+247	26.5	0.034631
+248	26.5	0.10195
+249	26.5	0
+250	26.5	0
+251	26.5	0.023919
+252	26.5	-0.031267
+253	26.5	-0.11586
+254	26.5	-0.072685
+255	26.5	-0.050342
+256	26.5	-0.060563
+257	26.5	-0.1472
+258	26.5	-0.2771
+259	26.5	-0.41057
+260	26.5	-0.62061
+261	26.5	-0.79764
+262	26.5	-1.1328
+263	26.5	-0.37623
+264	26.5	0
+265	26.5	0
+266	26.5	0
+267	26.5	0
+268	26.5	0
+269	26.5	0
+270	26.5	0
+271	26.5	0
+272	26.5	0
+273	26.5	0
+274	26.5	0
+275	26.5	0
+276	26.5	0
+277	26.5	0
+278	26.5	0.34448
+279	26.5	1.2218
+280	26.5	0.64761
+281	26.5	0
+282	26.5	0
+283	26.5	0
+284	26.5	0
+285	26.5	0
+286	26.5	0
+287	26.5	0
+288	26.5	0
+289	26.5	0
+290	26.5	0
+291	26.5	0
+292	26.5	0
+293	26.5	0
+294	26.5	0
+295	26.5	0
+296	26.5	0
+297	26.5	0
+298	26.5	0
+299	26.5	0
+300	26.5	0
+301	26.5	0
+302	26.5	0
+303	26.5	0
+304	26.5	0
+305	26.5	0
+306	26.5	0
+307	26.5	0
+308	26.5	0
+309	26.5	0
+310	26.5	0
+311	26.5	0
+312	26.5	0
+313	26.5	0
+314	26.5	0
+315	26.5	0
+316	26.5	0
+317	26.5	0
+318	26.5	0
+319	26.5	0
+320	26.5	0
+321	26.5	0
+322	26.5	0
+323	26.5	0
+324	26.5	0
+325	26.5	0
+326	26.5	0
+327	26.5	0
+328	26.5	0
+329	26.5	0
+330	26.5	0
+331	26.5	0
+332	26.5	0
+333	26.5	0
+334	26.5	0
+335	26.5	0
+336	26.5	0
+337	26.5	0
+338	26.5	0
+339	26.5	0
+340	26.5	0
+341	26.5	0
+342	26.5	0
+343	26.5	0
+344	26.5	0
+345	26.5	0
+346	26.5	-0.0097055
+347	26.5	-0.0085529
+348	26.5	-0.0041532
+349	26.5	0.0071789
+350	26.5	-0.0067762
+351	26.5	-0.02401
+352	26.5	-0.049978
+353	26.5	-0.075805
+354	26.5	-0.052782
+355	26.5	-0.016493
+356	26.5	0.017253
+357	26.5	0.051
+358	26.5	0.010406
+359	26.5	-0.032864
+360	26.5	-0.03761
+0	27	-0.039297
+1	27	-0.043405
+2	27	-0.053467
+3	27	-0.068505
+4	27	-0.082082
+5	27	-0.068597
+6	27	-0.055111
+7	27	-0.042171
+8	27	-0.021172
+9	27	-0.011574
+10	27	-0.026281
+11	27	-0.036959
+12	27	-0.077743
+13	27	-0.02284
+14	27	0.010363
+15	27	0.004452
+16	27	0.010615
+17	27	0.0021762
+18	27	0.013868
+19	27	0.01452
+20	27	0.0039041
+21	27	0.001173
+22	27	0.0048626
+23	27	0.0088767
+24	27	-0.0021254
+25	27	-0.0053104
+26	27	-0.0099253
+27	27	-0.0044026
+28	27	-0.0033881
+29	27	-0.0020696
+30	27	-0.063879
+31	27	-0.42247
+32	27	-0.46341
+33	27	-0.27514
+34	27	-0.067812
+35	27	0
+36	27	0.003274
+37	27	0.026457
+38	27	0.044925
+39	27	0.039701
+40	27	0.0045265
+41	27	0.00010412
+42	27	0.061803
+43	27	-0.069953
+44	27	-0.27706
+45	27	-0.51877
+46	27	-0.64546
+47	27	-0.68014
+48	27	-0.46727
+49	27	-0.23049
+50	27	-0.022904
+51	27	0
+52	27	0
+53	27	0
+54	27	-0.41449
+55	27	-0.47729
+56	27	-0.40785
+57	27	-0.45299
+58	27	-0.55417
+59	27	-0.46971
+60	27	-0.33658
+61	27	-0.22216
+62	27	-0.059927
+63	27	0.0056696
+64	27	0.043486
+65	27	0.11133
+66	27	0.21806
+67	27	0.38505
+68	27	0.084524
+69	27	0.36773
+70	27	0.23973
+71	27	0.087071
+72	27	-0.13385
+73	27	-0.32536
+74	27	-0.64239
+75	27	-0.95354
+76	27	-1.253
+77	27	-1.7492
+78	27	-2.2558
+79	27	-2.3487
+80	27	-2.4329
+81	27	-2.5113
+82	27	-2.2795
+83	27	-2.0332
+84	27	-2.0184
+85	27	-1.9683
+86	27	-1.4332
+87	27	-1.5445
+88	27	-1.844
+89	27	-1.4721
+90	27	-2.0313
+91	27	-1.477
+92	27	-1.7071
+93	27	-1.8165
+94	27	-2.0205
+95	27	-2.0963
+96	27	-1.0475
+97	27	-0.49784
+98	27	-1.6067
+99	27	-1.4576
+100	27	-0.91725
+101	27	-0.60809
+102	27	-0.35604
+103	27	0.050174
+104	27	0.30732
+105	27	0.48937
+106	27	0.64871
+107	27	0.846
+108	27	0.94373
+109	27	0.86536
+110	27	0.69079
+111	27	0.48379
+112	27	0.24013
+113	27	0.20119
+114	27	0.2191
+115	27	0.36654
+116	27	0.51324
+117	27	0.48222
+118	27	0.35428
+119	27	0.18791
+120	27	0.065664
+121	27	0
+122	27	0
+123	27	0
+124	27	0
+125	27	0
+126	27	0
+127	27	0
+128	27	0
+129	27	0
+130	27	0.00095258
+131	27	0
+132	27	0
+133	27	0
+134	27	0
+135	27	0
+136	27	0
+137	27	0
+138	27	0
+139	27	0
+140	27	0
+141	27	0
+142	27	0
+143	27	0
+144	27	0
+145	27	0
+146	27	0
+147	27	0
+148	27	0
+149	27	0
+150	27	0
+151	27	0
+152	27	0
+153	27	0
+154	27	0
+155	27	0
+156	27	0
+157	27	0
+158	27	0
+159	27	0
+160	27	0
+161	27	0
+162	27	0
+163	27	0
+164	27	0
+165	27	0
+166	27	0
+167	27	0
+168	27	0
+169	27	0
+170	27	0
+171	27	0
+172	27	0
+173	27	0
+174	27	0
+175	27	0
+176	27	0
+177	27	0
+178	27	0
+179	27	0
+180	27	0
+181	27	0
+182	27	0
+183	27	0
+184	27	0
+185	27	0
+186	27	0
+187	27	0
+188	27	0
+189	27	0
+190	27	0
+191	27	0
+192	27	0
+193	27	0
+194	27	0
+195	27	0
+196	27	0
+197	27	0
+198	27	0
+199	27	0
+200	27	0
+201	27	0
+202	27	0
+203	27	0
+204	27	0
+205	27	0
+206	27	0
+207	27	0
+208	27	0
+209	27	0
+210	27	0
+211	27	0
+212	27	0
+213	27	0
+214	27	0
+215	27	0
+216	27	0
+217	27	0
+218	27	0
+219	27	0
+220	27	0
+221	27	0
+222	27	0
+223	27	0
+224	27	0
+225	27	0
+226	27	0
+227	27	0
+228	27	0
+229	27	0
+230	27	0
+231	27	0
+232	27	0
+233	27	0
+234	27	0
+235	27	0
+236	27	0
+237	27	0
+238	27	0
+239	27	0
+240	27	0
+241	27	0
+242	27	0
+243	27	0
+244	27	0
+245	27	0
+246	27	0.0021664
+247	27	0.077282
+248	27	0.11529
+249	27	0
+250	27	0.0091538
+251	27	0.033438
+252	27	-0.051673
+253	27	-0.14768
+254	27	-0.090956
+255	27	-0.056349
+256	27	-0.059176
+257	27	-0.14725
+258	27	-0.24986
+259	27	-0.38232
+260	27	-0.61315
+261	27	-0.89489
+262	27	-1.2733
+263	27	-0.17546
+264	27	0
+265	27	0
+266	27	0
+267	27	0
+268	27	0
+269	27	0
+270	27	0
+271	27	0
+272	27	0
+273	27	0
+274	27	0
+275	27	0
+276	27	0
+277	27	0
+278	27	0.93065
+279	27	1.2761
+280	27	0.64502
+281	27	0
+282	27	0
+283	27	0
+284	27	0
+285	27	0
+286	27	0
+287	27	0
+288	27	0
+289	27	0
+290	27	0
+291	27	0
+292	27	0
+293	27	0
+294	27	0
+295	27	0
+296	27	0
+297	27	0
+298	27	0
+299	27	0
+300	27	0
+301	27	0
+302	27	0
+303	27	0
+304	27	0
+305	27	0
+306	27	0
+307	27	0
+308	27	0
+309	27	0
+310	27	0
+311	27	0
+312	27	0
+313	27	0
+314	27	0
+315	27	0
+316	27	0
+317	27	0
+318	27	0
+319	27	0
+320	27	0
+321	27	0
+322	27	0
+323	27	0
+324	27	0
+325	27	0
+326	27	0
+327	27	0
+328	27	0
+329	27	0
+330	27	0
+331	27	0
+332	27	0
+333	27	0
+334	27	0
+335	27	0
+336	27	0
+337	27	0
+338	27	0
+339	27	0
+340	27	0
+341	27	0
+342	27	0
+343	27	0
+344	27	0
+345	27	0
+346	27	0
+347	27	-0.0017524
+348	27	0.0023795
+349	27	0.0087118
+350	27	-0.0051351
+351	27	-0.026471
+352	27	-0.042559
+353	27	-0.06007
+354	27	-0.03665
+355	27	-0.026568
+356	27	0.0035874
+357	27	0.037334
+358	27	0.010042
+359	27	-0.035189
+360	27	-0.039297
+0	27.5	-0.040984
+1	27.5	-0.045091
+2	27.5	-0.057465
+3	27.5	-0.071623
+4	27.5	-0.07963
+5	27.5	-0.066145
+6	27.5	-0.05266
+7	27.5	-0.037883
+8	27.5	-0.020328
+9	27.5	-0.014599
+10	27.5	-0.030332
+11	27.5	-0.04101
+12	27.5	-0.090697
+13	27.5	-0.038068
+14	27.5	-0.037587
+15	27.5	-0.043498
+16	27.5	0.0060298
+17	27.5	0.0061942
+18	27.5	0.015483
+19	27.5	0.00097323
+20	27.5	-0.0019578
+21	27.5	-0.0090052
+22	27.5	-0.0020921
+23	27.5	0.0095081
+24	27.5	0.0020338
+25	27.5	-0.010668
+26	27.5	-0.024553
+27	27.5	-0.018439
+28	27.5	-0.015581
+29	27.5	-0.020162
+30	27.5	-0.065464
+31	27.5	-0.26527
+32	27.5	-0.35544
+33	27.5	-0.045623
+34	27.5	0.00016042
+35	27.5	0.00047031
+36	27.5	0.0068918
+37	27.5	0.028638
+38	27.5	0.052747
+39	27.5	0.042867
+40	27.5	0.0050032
+41	27.5	-0.053081
+42	27.5	0.017515
+43	27.5	-0.03032
+44	27.5	-0.25061
+45	27.5	-0.43671
+46	27.5	-0.57369
+47	27.5	-0.60385
+48	27.5	-0.41337
+49	27.5	-0.16939
+50	27.5	0
+51	27.5	0
+52	27.5	0
+53	27.5	-0.67598
+54	27.5	-0.88773
+55	27.5	-0.68691
+56	27.5	-0.53793
+57	27.5	-0.51649
+58	27.5	-0.56494
+59	27.5	-0.41381
+60	27.5	-0.30981
+61	27.5	-0.18108
+62	27.5	-0.073891
+63	27.5	-0.0044854
+64	27.5	0.017309
+65	27.5	0.08523
+66	27.5	0.19203
+67	27.5	0.33507
+68	27.5	0.046265
+69	27.5	0.16325
+70	27.5	0.29534
+71	27.5	0.1032
+72	27.5	-0.13185
+73	27.5	-0.31959
+74	27.5	-0.68797
+75	27.5	-1.1353
+76	27.5	-1.5577
+77	27.5	-2.2672
+78	27.5	-2.6922
+79	27.5	-2.6273
+80	27.5	-2.8161
+81	27.5	-2.9211
+82	27.5	-2.7129
+83	27.5	-1.9315
+84	27.5	-1.788
+85	27.5	-1.6728
+86	27.5	-0.77482
+87	27.5	-1.0339
+88	27.5	-1.4161
+89	27.5	-1.1349
+90	27.5	-0.76329
+91	27.5	-0.70836
+92	27.5	-1.7011
+93	27.5	-1.7034
+94	27.5	-1.8452
+95	27.5	-2.359
+96	27.5	-1.1875
+97	27.5	-0.2443
+98	27.5	-1.6292
+99	27.5	-1.5156
+100	27.5	-0.92144
+101	27.5	-0.61954
+102	27.5	-0.30227
+103	27.5	0.15307
+104	27.5	0.40668
+105	27.5	0.59215
+106	27.5	0.75669
+107	27.5	0.93555
+108	27.5	1.0102
+109	27.5	0.86452
+110	27.5	0.71346
+111	27.5	0.52034
+112	27.5	0.25434
+113	27.5	0.18279
+114	27.5	0.18227
+115	27.5	0.31109
+116	27.5	0.47661
+117	27.5	0.49253
+118	27.5	0.3811
+119	27.5	0.22629
+120	27.5	0.10095
+121	27.5	0.034224
+122	27.5	0
+123	27.5	0
+124	27.5	0
+125	27.5	0
+126	27.5	0
+127	27.5	0
+128	27.5	0
+129	27.5	0.026821
+130	27.5	0.018498
+131	27.5	0
+132	27.5	0
+133	27.5	0
+134	27.5	0
+135	27.5	0
+136	27.5	0
+137	27.5	0
+138	27.5	0
+139	27.5	0
+140	27.5	0
+141	27.5	0
+142	27.5	0
+143	27.5	0
+144	27.5	0
+145	27.5	0
+146	27.5	0
+147	27.5	0
+148	27.5	0
+149	27.5	0
+150	27.5	0
+151	27.5	0
+152	27.5	0
+153	27.5	0
+154	27.5	0
+155	27.5	0
+156	27.5	0
+157	27.5	0
+158	27.5	0
+159	27.5	0
+160	27.5	0
+161	27.5	0
+162	27.5	0
+163	27.5	0
+164	27.5	0
+165	27.5	0
+166	27.5	0
+167	27.5	0
+168	27.5	0
+169	27.5	0
+170	27.5	0
+171	27.5	0
+172	27.5	0
+173	27.5	0
+174	27.5	0
+175	27.5	0
+176	27.5	0
+177	27.5	0
+178	27.5	0
+179	27.5	0
+180	27.5	0
+181	27.5	0
+182	27.5	0
+183	27.5	0
+184	27.5	0
+185	27.5	0
+186	27.5	0
+187	27.5	0
+188	27.5	0
+189	27.5	0
+190	27.5	0
+191	27.5	0
+192	27.5	0
+193	27.5	0
+194	27.5	0
+195	27.5	0
+196	27.5	0
+197	27.5	0
+198	27.5	0
+199	27.5	0
+200	27.5	0
+201	27.5	0
+202	27.5	0
+203	27.5	0
+204	27.5	0
+205	27.5	0
+206	27.5	0
+207	27.5	0
+208	27.5	0
+209	27.5	0
+210	27.5	0
+211	27.5	0
+212	27.5	0
+213	27.5	0
+214	27.5	0
+215	27.5	0
+216	27.5	0
+217	27.5	0
+218	27.5	0
+219	27.5	0
+220	27.5	0
+221	27.5	0
+222	27.5	0
+223	27.5	0
+224	27.5	0
+225	27.5	0
+226	27.5	0
+227	27.5	0
+228	27.5	0
+229	27.5	0
+230	27.5	0
+231	27.5	0
+232	27.5	0
+233	27.5	0
+234	27.5	0
+235	27.5	0
+236	27.5	0
+237	27.5	0
+238	27.5	0
+239	27.5	0
+240	27.5	0
+241	27.5	0
+242	27.5	0
+243	27.5	0
+244	27.5	0
+245	27.5	-2.7904e-05
+246	27.5	0.0024528
+247	27.5	0.052989
+248	27.5	0
+249	27.5	0.065306
+250	27.5	0.097306
+251	27.5	0.026534
+252	27.5	-0.076731
+253	27.5	-0.16132
+254	27.5	-0.10536
+255	27.5	-0.062382
+256	27.5	-0.057789
+257	27.5	-0.14732
+258	27.5	-0.22035
+259	27.5	-0.38812
+260	27.5	-0.63805
+261	27.5	-0.9922
+262	27.5	-1.4307
+263	27.5	-0.63563
+264	27.5	0
+265	27.5	0
+266	27.5	0
+267	27.5	0
+268	27.5	0
+269	27.5	0
+270	27.5	0
+271	27.5	0
+272	27.5	0
+273	27.5	0
+274	27.5	0
+275	27.5	0
+276	27.5	0
+277	27.5	0
+278	27.5	1.1349
+279	27.5	1.2825
+280	27.5	0.31453
+281	27.5	0
+282	27.5	0
+283	27.5	0
+284	27.5	0
+285	27.5	0
+286	27.5	0
+287	27.5	0
+288	27.5	0
+289	27.5	0
+290	27.5	0
+291	27.5	0
+292	27.5	0
+293	27.5	0
+294	27.5	0
+295	27.5	0
+296	27.5	0
+297	27.5	0
+298	27.5	0
+299	27.5	0
+300	27.5	0
+301	27.5	0
+302	27.5	0
+303	27.5	0
+304	27.5	0
+305	27.5	0
+306	27.5	0
+307	27.5	0
+308	27.5	0
+309	27.5	0
+310	27.5	0
+311	27.5	0
+312	27.5	0
+313	27.5	0
+314	27.5	0
+315	27.5	0
+316	27.5	0
+317	27.5	0
+318	27.5	0
+319	27.5	0
+320	27.5	0
+321	27.5	0
+322	27.5	0
+323	27.5	0
+324	27.5	0
+325	27.5	0
+326	27.5	0
+327	27.5	0
+328	27.5	0
+329	27.5	0
+330	27.5	0
+331	27.5	0
+332	27.5	0
+333	27.5	0
+334	27.5	0
+335	27.5	0
+336	27.5	0
+337	27.5	0
+338	27.5	0
+339	27.5	0
+340	27.5	0
+341	27.5	0
+342	27.5	0
+343	27.5	0
+344	27.5	-0.0028373
+345	27.5	0
+346	27.5	0
+347	27.5	0.0058325
+348	27.5	0.00063708
+349	27.5	0.012026
+350	27.5	-0.0045469
+351	27.5	-0.027754
+352	27.5	-0.037267
+353	27.5	-0.044336
+354	27.5	-0.020518
+355	27.5	-0.0031365
+356	27.5	-0.010078
+357	27.5	0.023668
+358	27.5	0.0096786
+359	27.5	-0.032759
+360	27.5	-0.040984
+0	28	-0.04267
+1	28	-0.046778
+2	28	-0.061463
+3	28	-0.077605
+4	28	-0.077469
+5	28	-0.063693
+6	28	-0.050208
+7	28	-0.034902
+8	28	-0.020255
+9	28	-0.019146
+10	28	-0.033498
+11	28	-0.047422
+12	28	-0.10365
+13	28	-0.062036
+14	28	-0.085537
+15	28	-0.091448
+16	28	-0.023277
+17	28	0.0036307
+18	28	0.00044841
+19	28	-0.014454
+20	28	-0.030853
+21	28	-0.023652
+22	28	-0.0090469
+23	28	0.0060821
+24	28	0.0071305
+25	28	-0.0084769
+26	28	-0.027578
+27	28	-0.031154
+28	28	-0.03084
+29	28	-0.04139
+30	28	-0.15945
+31	28	-0.10608
+32	28	-0.16245
+33	28	0.0035765
+34	28	0.0097914
+35	28	0.0068415
+36	28	0.0059097
+37	28	0.028246
+38	28	0.054796
+39	28	0.049001
+40	28	-0.021437
+41	28	-0.089777
+42	28	-0.11876
+43	28	-0.15586
+44	28	-0.20862
+45	28	-0.38711
+46	28	-0.49916
+47	28	-0.52313
+48	28	-0.36479
+49	28	-0.079317
+50	28	0
+51	28	0
+52	28	-1.1175
+53	28	-1.413
+54	28	-1.1702
+55	28	-0.82436
+56	28	-0.61769
+57	28	-0.53043
+58	28	-0.51691
+59	28	-0.38302
+60	28	-0.28339
+61	28	-0.18014
+62	28	-0.078001
+63	28	-0.015738
+64	28	-0.0044467
+65	28	0.053647
+66	28	0.14912
+67	28	0.28349
+68	28	0.086888
+69	28	0.21461
+70	28	0.33925
+71	28	0.067753
+72	28	-0.12609
+73	28	-0.31382
+74	28	-0.73356
+75	28	-1.3662
+76	28	-2.226
+77	28	-3.0862
+78	28	-3.1287
+79	28	-3.0575
+80	28	-3.11
+81	28	-3.3447
+82	28	-3.1563
+83	28	-1.8524
+84	28	-1.5575
+85	28	-1.1453
+86	28	-0.19777
+87	28	-0.26132
+88	28	-0.84739
+89	28	-0.79761
+90	28	-0.18711
+91	28	0
+92	28	-1.2621
+93	28	-1.3447
+94	28	-1.6106
+95	28	-2.1179
+96	28	-1.3274
+97	28	-0.28131
+98	28	-1.0596
+99	28	-1.5449
+100	28	-0.92563
+101	28	-0.61107
+102	28	-0.2279
+103	28	0.2201
+104	28	0.50705
+105	28	0.69493
+106	28	0.87732
+107	28	1.0133
+108	28	1.0766
+109	28	0.85973
+110	28	0.66998
+111	28	0.4843
+112	28	0.20907
+113	28	0.1663
+114	28	0.14539
+115	28	0.26902
+116	28	0.43378
+117	28	0.43359
+118	28	0.39405
+119	28	0.22555
+120	28	0.1343
+121	28	0.060984
+122	28	0
+123	28	0
+124	28	0
+125	28	0
+126	28	0
+127	28	0
+128	28	0
+129	28	0.14058
+130	28	0.036043
+131	28	0
+132	28	0
+133	28	0
+134	28	0
+135	28	0
+136	28	0
+137	28	0
+138	28	0
+139	28	0
+140	28	0
+141	28	0
+142	28	0
+143	28	0
+144	28	0
+145	28	0
+146	28	0
+147	28	0
+148	28	0
+149	28	0
+150	28	0
+151	28	0
+152	28	0
+153	28	0
+154	28	0
+155	28	0
+156	28	0
+157	28	0
+158	28	0
+159	28	0
+160	28	0
+161	28	0
+162	28	0
+163	28	0
+164	28	0
+165	28	0
+166	28	0
+167	28	0
+168	28	0
+169	28	0
+170	28	0
+171	28	0
+172	28	0
+173	28	0
+174	28	0
+175	28	0
+176	28	0
+177	28	0
+178	28	0
+179	28	0
+180	28	0
+181	28	0
+182	28	0
+183	28	0
+184	28	0
+185	28	0
+186	28	0
+187	28	0
+188	28	0
+189	28	0
+190	28	0
+191	28	0
+192	28	0
+193	28	0
+194	28	0
+195	28	0
+196	28	0
+197	28	0
+198	28	0
+199	28	0
+200	28	0
+201	28	0
+202	28	0
+203	28	0
+204	28	0
+205	28	0
+206	28	0
+207	28	0
+208	28	0
+209	28	0
+210	28	0
+211	28	0
+212	28	0
+213	28	0
+214	28	0
+215	28	0
+216	28	0
+217	28	0
+218	28	0
+219	28	0
+220	28	0
+221	28	0
+222	28	0
+223	28	0
+224	28	0
+225	28	0
+226	28	0
+227	28	0
+228	28	0
+229	28	0
+230	28	0
+231	28	0
+232	28	0
+233	28	0
+234	28	0
+235	28	0
+236	28	0
+237	28	0
+238	28	0
+239	28	0
+240	28	0
+241	28	0
+242	28	0
+243	28	0
+244	28	0
+245	28	-2.0016e-05
+246	28	0.0013457
+247	28	0.019064
+248	28	0
+249	28	0.14617
+250	28	0.096039
+251	28	-0.013036
+252	28	-0.10432
+253	28	-0.16934
+254	28	-0.11959
+255	28	-0.093575
+256	28	-0.093775
+257	28	-0.14739
+258	28	-0.19084
+259	28	-0.39392
+260	28	-0.70711
+261	28	-1.1879
+262	28	-1.7525
+263	28	-0.54992
+264	28	0
+265	28	0
+266	28	0
+267	28	0
+268	28	0
+269	28	0
+270	28	0
+271	28	0
+272	28	0
+273	28	0
+274	28	0
+275	28	0
+276	28	0
+277	28	0.10391
+278	28	1.2339
+279	28	1.2372
+280	28	0
+281	28	0
+282	28	0
+283	28	0
+284	28	0
+285	28	0
+286	28	0
+287	28	0
+288	28	0
+289	28	0
+290	28	0
+291	28	0
+292	28	0
+293	28	0
+294	28	0
+295	28	0
+296	28	0
+297	28	0
+298	28	0
+299	28	0
+300	28	0
+301	28	0
+302	28	0
+303	28	0
+304	28	0
+305	28	0
+306	28	0
+307	28	0
+308	28	0
+309	28	0
+310	28	0
+311	28	0
+312	28	0
+313	28	0
+314	28	0
+315	28	0
+316	28	0
+317	28	0
+318	28	0
+319	28	0
+320	28	0
+321	28	0
+322	28	0
+323	28	0
+324	28	0
+325	28	0
+326	28	0
+327	28	0
+328	28	0
+329	28	0
+330	28	0
+331	28	0
+332	28	0
+333	28	0
+334	28	0
+335	28	0
+336	28	0
+337	28	0
+338	28	0
+339	28	0
+340	28	0
+341	28	0
+342	28	0
+343	28	0
+344	28	-0.0168
+345	28	0
+346	28	0
+347	28	0.0020154
+348	28	-0.0020168
+349	28	0.014602
+350	28	-0.00095399
+351	28	-0.029327
+352	28	-0.038663
+353	28	-0.028601
+354	28	-0.0043862
+355	28	0.011665
+356	28	0.0018693
+357	28	0.010002
+358	28	0.009315
+359	28	-0.026629
+360	28	-0.04267
+0	28.5	-0.044357
+1	28.5	-0.048465
+2	28.5	-0.065461
+3	28.5	-0.083588
+4	28.5	-0.080442
+5	28.5	-0.065597
+6	28.5	-0.050752
+7	28.5	-0.035944
+8	28.5	-0.022158
+9	28.5	-0.030597
+10	28.5	-0.036524
+11	28.5	-0.060376
+12	28.5	-0.11661
+13	28.5	-0.096517
+14	28.5	-0.1259
+15	28.5	-0.12765
+16	28.5	-0.052583
+17	28.5	-0.013456
+18	28.5	-0.019015
+19	28.5	-0.029663
+20	28.5	-0.069614
+21	28.5	-0.038298
+22	28.5	-0.011411
+23	28.5	0.002656
+24	28.5	0.011409
+25	28.5	-0.005565
+26	28.5	-0.025097
+27	28.5	-0.043868
+28	28.5	-0.04586
+29	28.5	-0.050273
+30	28.5	-0.34486
+31	28.5	-0.11414
+32	28.5	0.00056041
+33	28.5	0.00043818
+34	28.5	0.016563
+35	28.5	0.020934
+36	28.5	0.015207
+37	28.5	0.020849
+38	28.5	0.042974
+39	28.5	0.033506
+40	28.5	-0.071049
+41	28.5	-0.1357
+42	28.5	-0.17586
+43	28.5	-0.22277
+44	28.5	-0.31131
+45	28.5	-0.35156
+46	28.5	-0.42701
+47	28.5	-0.48564
+48	28.5	-0.35974
+49	28.5	0
+50	28.5	0
+51	28.5	0
+52	28.5	-1.7459
+53	28.5	-2.1581
+54	28.5	-1.4437
+55	28.5	-0.91414
+56	28.5	-0.70659
+57	28.5	-0.55752
+58	28.5	-0.46328
+59	28.5	-0.35511
+60	28.5	-0.27074
+61	28.5	-0.18657
+62	28.5	-0.087816
+63	28.5	-0.033717
+64	28.5	-0.026202
+65	28.5	0.025372
+66	28.5	0.11036
+67	28.5	0.21311
+68	28.5	0.13825
+69	28.5	0.26597
+70	28.5	0.25669
+71	28.5	-0.0064458
+72	28.5	-0.14945
+73	28.5	-0.30805
+74	28.5	-0.77914
+75	28.5	-2.3331
+76	28.5	-3.0973
+77	28.5	-3.6301
+78	28.5	-3.5141
+79	28.5	-3.3974
+80	28.5	-3.4477
+81	28.5	-3.6628
+82	28.5	-3.0127
+83	28.5	-1.5369
+84	28.5	-0.94487
+85	28.5	-0.35185
+86	28.5	0
+87	28.5	-0.3343
+88	28.5	-0.44449
+89	28.5	-0.558
+90	28.5	-0.33447
+91	28.5	-0.16186
+92	28.5	-0.85156
+93	28.5	-0.94173
+94	28.5	-1.2514
+95	28.5	-1.8638
+96	28.5	-0.82163
+97	28.5	0
+98	28.5	-0.50933
+99	28.5	-0.92934
+100	28.5	-0.83036
+101	28.5	-0.50783
+102	28.5	-0.13162
+103	28.5	0.28708
+104	28.5	0.60983
+105	28.5	0.78723
+106	28.5	0.96101
+107	28.5	1.091
+108	28.5	1.143
+109	28.5	0.85495
+110	28.5	0.62651
+111	28.5	0.39967
+112	28.5	0.1638
+113	28.5	0.14995
+114	28.5	0.10828
+115	28.5	0.22695
+116	28.5	0.38296
+117	28.5	0.40542
+118	28.5	0.39391
+119	28.5	0.22425
+120	28.5	0.13346
+121	28.5	0.084899
+122	28.5	0
+123	28.5	0
+124	28.5	0
+125	28.5	0
+126	28.5	0
+127	28.5	0
+128	28.5	0.060963
+129	28.5	0.21807
+130	28.5	0.053588
+131	28.5	0
+132	28.5	0
+133	28.5	0
+134	28.5	0
+135	28.5	0
+136	28.5	0
+137	28.5	0
+138	28.5	0
+139	28.5	0
+140	28.5	0
+141	28.5	0
+142	28.5	0
+143	28.5	0
+144	28.5	0
+145	28.5	0
+146	28.5	0
+147	28.5	0
+148	28.5	0
+149	28.5	0
+150	28.5	0
+151	28.5	0
+152	28.5	0
+153	28.5	0
+154	28.5	0
+155	28.5	0
+156	28.5	0
+157	28.5	0
+158	28.5	0
+159	28.5	0
+160	28.5	0
+161	28.5	0
+162	28.5	0
+163	28.5	0
+164	28.5	0
+165	28.5	0
+166	28.5	0
+167	28.5	0
+168	28.5	0
+169	28.5	0
+170	28.5	0
+171	28.5	0
+172	28.5	0
+173	28.5	0
+174	28.5	0
+175	28.5	0
+176	28.5	0
+177	28.5	0
+178	28.5	0
+179	28.5	0
+180	28.5	0
+181	28.5	0
+182	28.5	0
+183	28.5	0
+184	28.5	0
+185	28.5	0
+186	28.5	0
+187	28.5	0
+188	28.5	0
+189	28.5	0
+190	28.5	0
+191	28.5	0
+192	28.5	0
+193	28.5	0
+194	28.5	0
+195	28.5	0
+196	28.5	0
+197	28.5	0
+198	28.5	0
+199	28.5	0
+200	28.5	0
+201	28.5	0
+202	28.5	0
+203	28.5	0
+204	28.5	0
+205	28.5	0
+206	28.5	0
+207	28.5	0
+208	28.5	0
+209	28.5	0
+210	28.5	0
+211	28.5	0
+212	28.5	0
+213	28.5	0
+214	28.5	0
+215	28.5	0
+216	28.5	0
+217	28.5	0
+218	28.5	0
+219	28.5	0
+220	28.5	0
+221	28.5	0
+222	28.5	0
+223	28.5	0
+224	28.5	0
+225	28.5	0
+226	28.5	0
+227	28.5	0
+228	28.5	0
+229	28.5	0
+230	28.5	0
+231	28.5	0
+232	28.5	0
+233	28.5	0
+234	28.5	0
+235	28.5	0
+236	28.5	0
+237	28.5	0
+238	28.5	0
+239	28.5	0
+240	28.5	0
+241	28.5	0
+242	28.5	0
+243	28.5	0
+244	28.5	0
+245	28.5	0
+246	28.5	0.0070961
+247	28.5	0.0041033
+248	28.5	0
+249	28.5	0.14532
+250	28.5	0.07692
+251	28.5	-0.04623
+252	28.5	-0.14772
+253	28.5	-0.16409
+254	28.5	-0.14025
+255	28.5	-0.13226
+256	28.5	-0.1346
+257	28.5	-0.14084
+258	28.5	-0.1941
+259	28.5	-0.39972
+260	28.5	-0.77617
+261	28.5	-1.3667
+262	28.5	-2.0876
+263	28.5	-1.6425
+264	28.5	-1.0129
+265	28.5	0
+266	28.5	0
+267	28.5	0
+268	28.5	0
+269	28.5	0
+270	28.5	0
+271	28.5	0
+272	28.5	0
+273	28.5	0
+274	28.5	0
+275	28.5	0
+276	28.5	0
+277	28.5	0.12576
+278	28.5	1.0719
+279	28.5	0.94453
+280	28.5	0
+281	28.5	0
+282	28.5	0
+283	28.5	0
+284	28.5	0
+285	28.5	0
+286	28.5	0
+287	28.5	0
+288	28.5	0
+289	28.5	0
+290	28.5	0
+291	28.5	0
+292	28.5	0
+293	28.5	0
+294	28.5	0
+295	28.5	0
+296	28.5	0
+297	28.5	0
+298	28.5	0
+299	28.5	0
+300	28.5	0
+301	28.5	0
+302	28.5	0
+303	28.5	0
+304	28.5	0
+305	28.5	0
+306	28.5	0
+307	28.5	0
+308	28.5	0
+309	28.5	0
+310	28.5	0
+311	28.5	0
+312	28.5	0
+313	28.5	0
+314	28.5	0
+315	28.5	0
+316	28.5	0
+317	28.5	0
+318	28.5	0
+319	28.5	0
+320	28.5	0
+321	28.5	0
+322	28.5	0
+323	28.5	0
+324	28.5	0
+325	28.5	0
+326	28.5	0
+327	28.5	0
+328	28.5	0
+329	28.5	0
+330	28.5	0
+331	28.5	0
+332	28.5	0
+333	28.5	0
+334	28.5	0
+335	28.5	0
+336	28.5	0
+337	28.5	0
+338	28.5	0
+339	28.5	0
+340	28.5	0
+341	28.5	0
+342	28.5	0
+343	28.5	0
+344	28.5	-0.016471
+345	28.5	0
+346	28.5	0
+347	28.5	0
+348	28.5	-0.0002928
+349	28.5	0.010733
+350	28.5	0.00035236
+351	28.5	-0.037085
+352	28.5	-0.045077
+353	28.5	-0.01663
+354	28.5	0.0061845
+355	28.5	0.026466
+356	28.5	0.025684
+357	28.5	0.0064921
+358	28.5	0.0089514
+359	28.5	-0.020499
+360	28.5	-0.044357
+0	29	-0.044521
+1	29	-0.050151
+2	29	-0.069459
+3	29	-0.089571
+4	29	-0.082729
+5	29	-0.06857
+6	29	-0.053725
+7	29	-0.037847
+8	29	-0.027713
+9	29	-0.040642
+10	29	-0.046257
+11	29	-0.075597
+12	29	-0.13471
+13	29	-0.17134
+14	29	-0.16847
+15	29	-0.15848
+16	29	-0.068004
+17	29	-0.030542
+18	29	-0.044882
+19	29	-0.077793
+20	29	-0.10475
+21	29	-0.052945
+22	29	-0.010998
+23	29	0.0076991
+24	29	0.024584
+25	29	-0.0026424
+26	29	-0.023702
+27	29	-0.047719
+28	29	-0.052402
+29	29	-0.078667
+30	29	-0.51857
+31	29	-0.42879
+32	29	-0.1312
+33	29	-0.00020429
+34	29	0.014904
+35	29	0.021807
+36	29	0.028196
+37	29	0.034811
+38	29	0.028472
+39	29	0.0052277
+40	29	-0.098219
+41	29	-0.18671
+42	29	-0.22926
+43	29	-0.32086
+44	29	-0.414
+45	29	-0.44353
+46	29	-0.43384
+47	29	-0.45528
+48	29	-0.31085
+49	29	0
+50	29	0
+51	29	-1.09
+52	29	-2.4664
+53	29	-2.958
+54	29	-1.6088
+55	29	-1.0056
+56	29	-0.78552
+57	29	-0.59906
+58	29	-0.39602
+59	29	-0.34491
+60	29	-0.27689
+61	29	-0.19427
+62	29	-0.10891
+63	29	-0.067217
+64	29	-0.047957
+65	29	0.001451
+66	29	0.078533
+67	29	0.17914
+68	29	0.18961
+69	29	0.26562
+70	29	0.1693
+71	29	-0.036444
+72	29	-0.17724
+73	29	-0.30704
+74	29	-1.2539
+75	29	-3.0759
+76	29	-4.287
+77	29	-4.1715
+78	29	-3.854
+79	29	-3.7374
+80	29	-3.7775
+81	29	-3.7813
+82	29	-2.1626
+83	29	-0.67358
+84	29	-0.31236
+85	29	-0.28543
+86	29	-0.41794
+87	29	-0.20921
+88	29	-0.2217
+89	29	-0.34274
+90	29	-0.22211
+91	29	-0.32094
+92	29	-0.56445
+93	29	0
+94	29	-0.72176
+95	29	-1.11
+96	29	-0.36844
+97	29	0
+98	29	-0.056427
+99	29	-0.31021
+100	29	-0.64851
+101	29	-0.40724
+102	29	-0.033195
+103	29	0.37237
+104	29	0.65371
+105	29	0.80856
+106	29	0.98216
+107	29	1.1687
+108	29	1.2094
+109	29	0.85016
+110	29	0.58303
+111	29	0.34218
+112	29	0.11853
+113	29	0.1141
+114	29	0.071178
+115	29	0.1931
+116	29	0.26947
+117	29	0.30571
+118	29	0.40507
+119	29	0.21383
+120	29	0.15229
+121	29	0.09805
+122	29	0.0066546
+123	29	0
+124	29	0
+125	29	0
+126	29	0
+127	29	0
+128	29	0.091982
+129	29	0.18595
+130	29	0.071133
+131	29	0
+132	29	0
+133	29	0
+134	29	0
+135	29	0
+136	29	0
+137	29	0
+138	29	0
+139	29	0
+140	29	0
+141	29	0
+142	29	0
+143	29	0
+144	29	0
+145	29	0
+146	29	0
+147	29	0
+148	29	0
+149	29	0
+150	29	0
+151	29	0
+152	29	0
+153	29	0
+154	29	0
+155	29	0
+156	29	0
+157	29	0
+158	29	0
+159	29	0
+160	29	0
+161	29	0
+162	29	0
+163	29	0
+164	29	0
+165	29	0
+166	29	0
+167	29	0
+168	29	0
+169	29	0
+170	29	0
+171	29	0
+172	29	0
+173	29	0
+174	29	0
+175	29	0
+176	29	0
+177	29	0
+178	29	0
+179	29	0
+180	29	0
+181	29	0
+182	29	0
+183	29	0
+184	29	0
+185	29	0
+186	29	0
+187	29	0
+188	29	0
+189	29	0
+190	29	0
+191	29	0
+192	29	0
+193	29	0
+194	29	0
+195	29	0
+196	29	0
+197	29	0
+198	29	0
+199	29	0
+200	29	0
+201	29	0
+202	29	0
+203	29	0
+204	29	0
+205	29	0
+206	29	0
+207	29	0
+208	29	0
+209	29	0
+210	29	0
+211	29	0
+212	29	0
+213	29	0
+214	29	0
+215	29	0
+216	29	0
+217	29	0
+218	29	0
+219	29	0
+220	29	0
+221	29	0
+222	29	0
+223	29	0
+224	29	0
+225	29	0
+226	29	0
+227	29	0
+228	29	0
+229	29	0
+230	29	0
+231	29	0
+232	29	0
+233	29	0
+234	29	0
+235	29	0
+236	29	0
+237	29	0
+238	29	0
+239	29	0
+240	29	0
+241	29	0
+242	29	0
+243	29	0
+244	29	0
+245	29	0.00060659
+246	29	0.018782
+247	29	0.0052666
+248	29	0.031961
+249	29	0.0962
+250	29	0.041368
+251	29	-0.068913
+252	29	-0.16578
+253	29	-0.15884
+254	29	-0.16385
+255	29	-0.17076
+256	29	-0.17328
+257	29	-0.16171
+258	29	-0.23343
+259	29	-0.43065
+260	29	-0.84523
+261	29	-1.5106
+262	29	-2.3677
+263	29	-2.7419
+264	29	-2.0077
+265	29	-0.48591
+266	29	0
+267	29	0
+268	29	-0.014555
+269	29	-0.0061175
+270	29	0
+271	29	0
+272	29	0
+273	29	0
+274	29	0
+275	29	0
+276	29	0
+277	29	0.062081
+278	29	0.84143
+279	29	0.69374
+280	29	0
+281	29	0
+282	29	0
+283	29	0
+284	29	0
+285	29	0
+286	29	0
+287	29	0
+288	29	0
+289	29	0
+290	29	0
+291	29	0
+292	29	0
+293	29	0
+294	29	0
+295	29	0
+296	29	0
+297	29	0
+298	29	0
+299	29	0
+300	29	0
+301	29	0
+302	29	0
+303	29	0
+304	29	0
+305	29	0
+306	29	0
+307	29	0
+308	29	0
+309	29	0
+310	29	0
+311	29	0
+312	29	0
+313	29	0
+314	29	0
+315	29	0
+316	29	0
+317	29	0
+318	29	0
+319	29	0
+320	29	0
+321	29	0
+322	29	0
+323	29	0
+324	29	0
+325	29	0
+326	29	0
+327	29	0
+328	29	0
+329	29	0
+330	29	0
+331	29	0
+332	29	0
+333	29	0
+334	29	0
+335	29	0
+336	29	0
+337	29	0
+338	29	0
+339	29	0
+340	29	0
+341	29	0
+342	29	0
+343	29	0
+344	29	0
+345	29	0
+346	29	0
+347	29	0
+348	29	0
+349	29	0
+350	29	0.0021321
+351	29	-0.042803
+352	29	-0.043971
+353	29	-0.0092568
+354	29	0.013347
+355	29	0.040235
+356	29	0.049498
+357	29	0.030307
+358	29	0.011146
+359	29	-0.014485
+360	29	-0.044521
+0	29.5	-0.038391
+1	29.5	-0.051838
+2	29.5	-0.073456
+3	29.5	-0.093774
+4	29.5	-0.08442
+5	29.5	-0.071543
+6	29.5	-0.056354
+7	29.5	-0.03975
+8	29.5	-0.035239
+9	29.5	-0.049031
+10	29.5	-0.057708
+11	29.5	-0.13983
+12	29.5	-0.19894
+13	29.5	-0.25949
+14	29.5	-0.26383
+15	29.5	-0.19968
+16	29.5	-0.085445
+17	29.5	-0.050183
+18	29.5	-0.083162
+19	29.5	-0.10639
+20	29.5	-0.13936
+21	29.5	-0.081997
+22	29.5	-0.011083
+23	29.5	0.017615
+24	29.5	0.037371
+25	29.5	0.0050911
+26	29.5	-0.016653
+27	29.5	-0.039803
+28	29.5	-0.058719
+29	29.5	-0.05953
+30	29.5	-0.53232
+31	29.5	-0.74701
+32	29.5	-0.31022
+33	29.5	-0.0020247
+34	29.5	0.0025494
+35	29.5	0.01607
+36	29.5	0.01407
+37	29.5	0.016854
+38	29.5	0.0006545
+39	29.5	-0.022214
+40	29.5	-0.12539
+41	29.5	-0.22856
+42	29.5	-0.31231
+43	29.5	-0.39997
+44	29.5	-0.46056
+45	29.5	-0.49428
+46	29.5	-0.47542
+47	29.5	-0.60808
+48	29.5	-0.45844
+49	29.5	-0.093967
+50	29.5	0
+51	29.5	-2.0523
+52	29.5	-3.2058
+53	29.5	-3.448
+54	29.5	-1.6527
+55	29.5	-0.88494
+56	29.5	-0.7008
+57	29.5	-0.52201
+58	29.5	-0.31671
+59	29.5	-0.34508
+60	29.5	-0.28303
+61	29.5	-0.20415
+62	29.5	-0.14954
+63	29.5	-0.11984
+64	29.5	-0.07041
+65	29.5	-0.022469
+66	29.5	0.057602
+67	29.5	0.16552
+68	29.5	0.24097
+69	29.5	0.20345
+70	29.5	0.090075
+71	29.5	-0.066441
+72	29.5	-0.20503
+73	29.5	-0.33483
+74	29.5	-1.9968
+75	29.5	-3.8188
+76	29.5	-5.4767
+77	29.5	-5.4501
+78	29.5	-4.194
+79	29.5	-4.2259
+80	29.5	-3.2041
+81	29.5	-2.7477
+82	29.5	-0.23159
+83	29.5	0
+84	29.5	-0.39249
+85	29.5	-0.31376
+86	29.5	-0.25782
+87	29.5	0
+88	29.5	-0.26201
+89	29.5	-0.28353
+90	29.5	-0.31456
+91	29.5	-0.47967
+92	29.5	-0.64924
+93	29.5	0
+94	29.5	-0.60099
+95	29.5	-0.17458
+96	29.5	0
+97	29.5	-0.10564
+98	29.5	-0.75649
+99	29.5	-0.1401
+100	29.5	-0.46667
+101	29.5	-0.30886
+102	29.5	0.065233
+103	29.5	0.45766
+104	29.5	0.68393
+105	29.5	0.81345
+106	29.5	0.98675
+107	29.5	1.2464
+108	29.5	1.22
+109	29.5	0.84537
+110	29.5	0.53956
+111	29.5	0.29691
+112	29.5	0.073256
+113	29.5	0.072012
+114	29.5	0.051267
+115	29.5	0.16199
+116	29.5	0.13093
+117	29.5	0.20613
+118	29.5	0.39513
+119	29.5	0.18102
+120	29.5	0.17031
+121	29.5	0.10452
+122	29.5	0.025242
+123	29.5	0
+124	29.5	0
+125	29.5	0
+126	29.5	0
+127	29.5	0
+128	29.5	0.088279
+129	29.5	0.14454
+130	29.5	0.058855
+131	29.5	-0.0027352
+132	29.5	0
+133	29.5	0
+134	29.5	0
+135	29.5	0
+136	29.5	0
+137	29.5	0
+138	29.5	0
+139	29.5	0
+140	29.5	0
+141	29.5	0
+142	29.5	0
+143	29.5	0
+144	29.5	0
+145	29.5	0
+146	29.5	0
+147	29.5	0
+148	29.5	0
+149	29.5	0
+150	29.5	0
+151	29.5	0
+152	29.5	0
+153	29.5	0
+154	29.5	0
+155	29.5	0
+156	29.5	0
+157	29.5	0
+158	29.5	0
+159	29.5	0
+160	29.5	0
+161	29.5	0
+162	29.5	0
+163	29.5	0
+164	29.5	0
+165	29.5	0
+166	29.5	0
+167	29.5	0
+168	29.5	0
+169	29.5	0
+170	29.5	0
+171	29.5	0
+172	29.5	0
+173	29.5	0
+174	29.5	0
+175	29.5	0
+176	29.5	0
+177	29.5	0
+178	29.5	0
+179	29.5	0
+180	29.5	0
+181	29.5	0
+182	29.5	0
+183	29.5	0
+184	29.5	0
+185	29.5	0
+186	29.5	0
+187	29.5	0
+188	29.5	0
+189	29.5	0
+190	29.5	0
+191	29.5	0
+192	29.5	0
+193	29.5	0
+194	29.5	0
+195	29.5	0
+196	29.5	0
+197	29.5	0
+198	29.5	0
+199	29.5	0
+200	29.5	0
+201	29.5	0
+202	29.5	0
+203	29.5	0
+204	29.5	0
+205	29.5	0
+206	29.5	0
+207	29.5	0
+208	29.5	0
+209	29.5	0
+210	29.5	0
+211	29.5	0
+212	29.5	0
+213	29.5	0
+214	29.5	0
+215	29.5	0
+216	29.5	0
+217	29.5	0
+218	29.5	0
+219	29.5	0
+220	29.5	0
+221	29.5	0
+222	29.5	0
+223	29.5	0
+224	29.5	0
+225	29.5	0
+226	29.5	0
+227	29.5	0
+228	29.5	0
+229	29.5	0
+230	29.5	0
+231	29.5	0
+232	29.5	0
+233	29.5	0
+234	29.5	0
+235	29.5	0
+236	29.5	0
+237	29.5	0
+238	29.5	0
+239	29.5	0
+240	29.5	0
+241	29.5	0
+242	29.5	0
+243	29.5	0
+244	29.5	0
+245	29.5	0.0057583
+246	29.5	0.0095775
+247	29.5	0.0012395
+248	29.5	0.029797
+249	29.5	0.05978
+250	29.5	0.013561
+251	29.5	-0.087088
+252	29.5	-0.16245
+253	29.5	-0.161
+254	29.5	-0.19645
+255	29.5	-0.20844
+256	29.5	-0.21197
+257	29.5	-0.18257
+258	29.5	-0.28265
+259	29.5	-0.47895
+260	29.5	-0.93592
+261	29.5	-1.5107
+262	29.5	-2.5895
+263	29.5	-3.254
+264	29.5	-2.3126
+265	29.5	-0.92654
+266	29.5	0
+267	29.5	0
+268	29.5	-0.13822
+269	29.5	0.00097491
+270	29.5	0.01358
+271	29.5	0
+272	29.5	0
+273	29.5	0
+274	29.5	0
+275	29.5	-0.06515
+276	29.5	-0.00019683
+277	29.5	0.067012
+278	29.5	0.58451
+279	29.5	0.4114
+280	29.5	0
+281	29.5	0
+282	29.5	0
+283	29.5	0
+284	29.5	0
+285	29.5	0
+286	29.5	0
+287	29.5	0
+288	29.5	0
+289	29.5	0
+290	29.5	0
+291	29.5	0
+292	29.5	0
+293	29.5	0
+294	29.5	0
+295	29.5	0
+296	29.5	0
+297	29.5	0
+298	29.5	0
+299	29.5	0
+300	29.5	0
+301	29.5	0
+302	29.5	0
+303	29.5	0
+304	29.5	0
+305	29.5	0
+306	29.5	0
+307	29.5	0
+308	29.5	0
+309	29.5	0
+310	29.5	0
+311	29.5	0
+312	29.5	0
+313	29.5	0
+314	29.5	0
+315	29.5	0
+316	29.5	0
+317	29.5	0
+318	29.5	0
+319	29.5	0
+320	29.5	0
+321	29.5	0
+322	29.5	0
+323	29.5	0
+324	29.5	0
+325	29.5	0
+326	29.5	0
+327	29.5	0
+328	29.5	0
+329	29.5	0
+330	29.5	0
+331	29.5	0
+332	29.5	0
+333	29.5	0
+334	29.5	0
+335	29.5	0
+336	29.5	0
+337	29.5	0
+338	29.5	0
+339	29.5	0
+340	29.5	0
+341	29.5	0
+342	29.5	0
+343	29.5	0
+344	29.5	0
+345	29.5	0
+346	29.5	0
+347	29.5	0
+348	29.5	0
+349	29.5	0
+350	29.5	-0.0014953
+351	29.5	-0.038974
+352	29.5	-0.038787
+353	29.5	-0.0018836
+354	29.5	0.020509
+355	29.5	0.045451
+356	29.5	0.072035
+357	29.5	0.055756
+358	29.5	0.030375
+359	29.5	-0.0086648
+360	29.5	-0.038391
+0	30	-0.032261
+1	30	-0.053524
+2	30	-0.077454
+3	30	-0.095155
+4	30	-0.086112
+5	30	-0.074517
+6	30	-0.058584
+7	30	-0.041653
+8	30	-0.042765
+9	30	-0.05742
+10	30	-0.069159
+11	30	-0.17169
+12	30	-0.26756
+13	30	-0.34935
+14	30	-0.36208
+15	30	-0.27564
+16	30	-0.11033
+17	30	-0.042634
+18	30	-0.060172
+19	30	-0.12258
+20	30	-0.1617
+21	30	-0.1067
+22	30	-0.011167
+23	30	0.031086
+24	30	0.047585
+25	30	0.015744
+26	30	-0.0088943
+27	30	-0.031887
+28	30	-0.057052
+29	30	-0.040787
+30	30	-0.50625
+31	30	-0.7866
+32	30	-0.33264
+33	30	-0.0085189
+34	30	-0.028333
+35	30	-0.04
+36	30	-0.021108
+37	30	-0.019509
+38	30	-0.016601
+39	30	-0.034387
+40	30	-0.12922
+41	30	-0.21585
+42	30	-0.32098
+43	30	-0.41068
+44	30	-0.45304
+45	30	-0.49433
+46	30	-0.50744
+47	30	-0.82513
+48	30	-0.92653
+49	30	-0.093243
+50	30	-0.28359
+51	30	-3.1956
+52	30	-2.964
+53	30	-2.6534
+54	30	-1.3935
+55	30	-0.75479
+56	30	-0.6059
+57	30	-0.43529
+58	30	-0.25833
+59	30	-0.30191
+60	30	-0.29139
+61	30	-0.24239
+62	30	-0.20216
+63	30	-0.14152
+64	30	-0.090501
+65	30	-0.049877
+66	30	0.043984
+67	30	0.1519
+68	30	0.18142
+69	30	0.13178
+70	30	0.060077
+71	30	-0.096439
+72	30	-0.23283
+73	30	-0.36967
+74	30	-1.5748
+75	30	-4.5616
+76	30	-6.3836
+77	30	-6.8799
+78	30	-5.2179
+79	30	-4.4766
+80	30	-1.1838
+81	30	-0.036637
+82	30	0
+83	30	-0.58681
+84	30	-0.75511
+85	30	0
+86	30	0
+87	30	-0.091796
+88	30	-0.20798
+89	30	-0.24982
+90	30	-0.31755
+91	30	-0.38169
+92	30	-0.98549
+93	30	0
+94	30	-0.10061
+95	30	0
+96	30	-0.46156
+97	30	-0.87984
+98	30	-1.149
+99	30	-0.021227
+100	30	-0.30644
+101	30	-0.21049
+102	30	0.16366
+103	30	0.54295
+104	30	0.68882
+105	30	0.81834
+106	30	0.99134
+107	30	1.2922
+108	30	1.2152
+109	30	0.84058
+110	30	0.47529
+111	30	0.25164
+112	30	0.027986
+113	30	0.029921
+114	30	0.032636
+115	30	0.063118
+116	30	-0.0076191
+117	30	0.1379
+118	30	0.31758
+119	30	0.14418
+120	30	0.10727
+121	30	0.058962
+122	30	0
+123	30	0
+124	30	0
+125	30	0
+126	30	0
+127	30	0
+128	30	0.06324
+129	30	0.10312
+130	30	0.034688
+131	30	-0.03114
+132	30	0
+133	30	0
+134	30	0
+135	30	0
+136	30	0
+137	30	0
+138	30	0
+139	30	0
+140	30	0
+141	30	0
+142	30	0
+143	30	0
+144	30	0
+145	30	0
+146	30	0
+147	30	0
+148	30	0
+149	30	0
+150	30	0
+151	30	0
+152	30	0
+153	30	0
+154	30	0
+155	30	0
+156	30	0
+157	30	0
+158	30	0
+159	30	0
+160	30	0
+161	30	0
+162	30	0
+163	30	0
+164	30	0
+165	30	0
+166	30	0
+167	30	0
+168	30	0
+169	30	0
+170	30	0
+171	30	0
+172	30	0
+173	30	0
+174	30	0
+175	30	0
+176	30	0
+177	30	0
+178	30	0
+179	30	0
+180	30	0
+181	30	0
+182	30	0
+183	30	0
+184	30	0
+185	30	0
+186	30	0
+187	30	0
+188	30	0
+189	30	0
+190	30	0
+191	30	0
+192	30	0
+193	30	0
+194	30	0
+195	30	0
+196	30	0
+197	30	0
+198	30	0
+199	30	0
+200	30	0
+201	30	0
+202	30	0
+203	30	0
+204	30	0
+205	30	0
+206	30	0
+207	30	0
+208	30	0
+209	30	0
+210	30	0
+211	30	0
+212	30	0
+213	30	0
+214	30	0
+215	30	0
+216	30	0
+217	30	0
+218	30	0
+219	30	0
+220	30	0
+221	30	0
+222	30	0
+223	30	0
+224	30	0
+225	30	0
+226	30	0
+227	30	0
+228	30	0
+229	30	0
+230	30	0
+231	30	0
+232	30	0
+233	30	0
+234	30	0
+235	30	0
+236	30	0
+237	30	0
+238	30	0
+239	30	0
+240	30	0
+241	30	0
+242	30	0
+243	30	0
+244	30	0
+245	30	-0.0017254
+246	30	0.0055751
+247	30	0.0026392
+248	30	0.018912
+249	30	0.027737
+250	30	-0.0011035
+251	30	-0.09764
+252	30	-0.16434
+253	30	-0.17717
+254	30	-0.22087
+255	30	-0.24612
+256	30	-0.24526
+257	30	-0.20359
+258	30	-0.33188
+259	30	-0.52639
+260	30	-0.96426
+261	30	-1.5424
+262	30	-2.5666
+263	30	-2.9826
+264	30	-2.3667
+265	30	-1.2548
+266	30	-0.42263
+267	30	-0.23954
+268	30	-0.64527
+269	30	-0.21025
+270	30	0.016552
+271	30	0.011054
+272	30	-0.01492
+273	30	0
+274	30	0
+275	30	-0.21194
+276	30	-0.065848
+277	30	0.084344
+278	30	0.41412
+279	30	0.077442
+280	30	0
+281	30	0
+282	30	0
+283	30	0
+284	30	0
+285	30	0
+286	30	0
+287	30	0
+288	30	0
+289	30	0
+290	30	0
+291	30	0
+292	30	0
+293	30	0
+294	30	0
+295	30	0
+296	30	0
+297	30	0
+298	30	0
+299	30	0
+300	30	0
+301	30	0
+302	30	0
+303	30	0
+304	30	0
+305	30	0
+306	30	0
+307	30	0
+308	30	0
+309	30	0
+310	30	0
+311	30	0
+312	30	0
+313	30	0
+314	30	0
+315	30	0
+316	30	0
+317	30	0
+318	30	0
+319	30	0
+320	30	0
+321	30	0
+322	30	0
+323	30	0
+324	30	0
+325	30	0
+326	30	0
+327	30	0
+328	30	0
+329	30	0
+330	30	0
+331	30	0
+332	30	0
+333	30	0
+334	30	0
+335	30	0
+336	30	0
+337	30	0
+338	30	0
+339	30	0
+340	30	0
+341	30	0
+342	30	0
+343	30	0
+344	30	0
+345	30	0
+346	30	0
+347	30	0
+348	30	0
+349	30	0
+350	30	-0.0011774
+351	30	-0.029548
+352	30	-0.037091
+353	30	0.0037906
+354	30	0.066424
+355	30	0.122
+356	30	0.11814
+357	30	0.08961
+358	30	0.0521
+359	30	-0.002845
+360	30	-0.032261
+0	30.5	-0.024638
+1	30.5	-0.055211
+2	30.5	-0.074841
+3	30.5	-0.08741
+4	30.5	-0.087212
+5	30.5	-0.07749
+6	30.5	-0.060815
+7	30.5	-0.046696
+8	30.5	-0.050292
+9	30.5	-0.065809
+10	30.5	-0.08659
+11	30.5	-0.20078
+12	30.5	-0.34061
+13	30.5	-0.45431
+14	30.5	-0.43931
+15	30.5	-0.34981
+16	30.5	-0.15573
+17	30.5	-0.032246
+18	30.5	-0.037211
+19	30.5	-0.019034
+20	30.5	-0.11838
+21	30.5	-0.12456
+22	30.5	-0.00069373
+23	30.5	0.056041
+24	30.5	0.047802
+25	30.5	0.0073641
+26	30.5	-0.0044728
+27	30.5	-0.022337
+28	30.5	-0.043873
+29	30.5	-0.035444
+30	30.5	-0.42857
+31	30.5	-0.71566
+32	30.5	-0.2895
+33	30.5	-0.01178
+34	30.5	-0.067436
+35	30.5	-0.16735
+36	30.5	-0.1556
+37	30.5	-0.064301
+38	30.5	-0.042357
+39	30.5	-0.0632
+40	30.5	-0.094687
+41	30.5	-0.18062
+42	30.5	-0.30742
+43	30.5	-0.40749
+44	30.5	-0.44901
+45	30.5	-0.49053
+46	30.5	-0.68813
+47	30.5	-0.99339
+48	30.5	-1.3216
+49	30.5	-1.6006
+50	30.5	-2.8124
+51	30.5	-4.0543
+52	30.5	-3.1136
+53	30.5	-2.1398
+54	30.5	-1.1433
+55	30.5	-0.62465
+56	30.5	-0.51937
+57	30.5	-0.38192
+58	30.5	-0.23254
+59	30.5	-0.23718
+60	30.5	-0.30116
+61	30.5	-0.28063
+62	30.5	-0.22925
+63	30.5	-0.1477
+64	30.5	-0.11059
+65	30.5	-0.077549
+66	30.5	0.022131
+67	30.5	0.10659
+68	30.5	0.092549
+69	30.5	0.082831
+70	30.5	0.016834
+71	30.5	-0.12644
+72	30.5	-0.26126
+73	30.5	-0.40492
+74	30.5	-1.683
+75	30.5	-3.2481
+76	30.5	-7.1265
+77	30.5	-8.3097
+78	30.5	-6.9031
+79	30.5	-1.6501
+80	30.5	0
+81	30.5	-2.5723
+82	30.5	-1.07
+83	30.5	-0.68169
+84	30.5	-0.0039697
+85	30.5	-0.12509
+86	30.5	-0.022697
+87	30.5	-0.095
+88	30.5	-0.0049238
+89	30.5	-0.0062039
+90	30.5	-0.13889
+91	30.5	-0.51732
+92	30.5	-1.1551
+93	30.5	-0.69771
+94	30.5	0
+95	30.5	0
+96	30.5	-0.51455
+97	30.5	-1.687
+98	30.5	-1.0471
+99	30.5	-0.35279
+100	30.5	-0.13343
+101	30.5	-0.10994
+102	30.5	0.21207
+103	30.5	0.55717
+104	30.5	0.69371
+105	30.5	0.82323
+106	30.5	0.99594
+107	30.5	1.2968
+108	30.5	1.1478
+109	30.5	0.7431
+110	30.5	0.34413
+111	30.5	0.20637
+112	30.5	-0.014883
+113	30.5	-0.012169
+114	30.5	-0.0094547
+115	30.5	-0.075427
+116	30.5	-0.1406
+117	30.5	0.069659
+118	30.5	0.11442
+119	30.5	0.17285
+120	30.5	0.05354
+121	30.5	0.032272
+122	30.5	0
+123	30.5	0
+124	30.5	0
+125	30.5	0
+126	30.5	0
+127	30.5	0
+128	30.5	0.038201
+129	30.5	0.061712
+130	30.5	0.010521
+131	30.5	-0.059545
+132	30.5	0
+133	30.5	0
+134	30.5	0
+135	30.5	0
+136	30.5	0
+137	30.5	0
+138	30.5	0
+139	30.5	0
+140	30.5	0
+141	30.5	0
+142	30.5	0
+143	30.5	0
+144	30.5	0
+145	30.5	0
+146	30.5	0
+147	30.5	0
+148	30.5	0
+149	30.5	0
+150	30.5	0
+151	30.5	0
+152	30.5	0
+153	30.5	0
+154	30.5	0
+155	30.5	0
+156	30.5	0
+157	30.5	0
+158	30.5	0
+159	30.5	0
+160	30.5	0
+161	30.5	0
+162	30.5	0
+163	30.5	0
+164	30.5	0
+165	30.5	0
+166	30.5	0
+167	30.5	0
+168	30.5	0
+169	30.5	0
+170	30.5	0
+171	30.5	0
+172	30.5	0
+173	30.5	0
+174	30.5	0
+175	30.5	0
+176	30.5	0
+177	30.5	0
+178	30.5	0
+179	30.5	0
+180	30.5	0
+181	30.5	0
+182	30.5	0
+183	30.5	0
+184	30.5	0
+185	30.5	0
+186	30.5	0
+187	30.5	0
+188	30.5	0
+189	30.5	0
+190	30.5	0
+191	30.5	0
+192	30.5	0
+193	30.5	0
+194	30.5	0
+195	30.5	0
+196	30.5	0
+197	30.5	0
+198	30.5	0
+199	30.5	0
+200	30.5	0
+201	30.5	0
+202	30.5	0
+203	30.5	0
+204	30.5	0
+205	30.5	0
+206	30.5	0
+207	30.5	0
+208	30.5	0
+209	30.5	0
+210	30.5	0
+211	30.5	0
+212	30.5	0
+213	30.5	0
+214	30.5	0
+215	30.5	0
+216	30.5	0
+217	30.5	0
+218	30.5	0
+219	30.5	0
+220	30.5	0
+221	30.5	0
+222	30.5	0
+223	30.5	0
+224	30.5	0
+225	30.5	0
+226	30.5	0
+227	30.5	0
+228	30.5	0
+229	30.5	0
+230	30.5	0
+231	30.5	0
+232	30.5	0
+233	30.5	0
+234	30.5	0
+235	30.5	0
+236	30.5	0
+237	30.5	0
+238	30.5	0
+239	30.5	0
+240	30.5	0
+241	30.5	0
+242	30.5	0
+243	30.5	0
+244	30.5	-0.0090912
+245	30.5	-0.014053
+246	30.5	0
+247	30.5	0.0096828
+248	30.5	0.014985
+249	30.5	0.011837
+250	30.5	-0.01831
+251	30.5	-0.094198
+252	30.5	-0.16622
+253	30.5	-0.17202
+254	30.5	-0.22328
+255	30.5	-0.28379
+256	30.5	-0.26635
+257	30.5	-0.32251
+258	30.5	-0.39849
+259	30.5	-0.57342
+260	30.5	-0.9926
+261	30.5	-1.4302
+262	30.5	-2.2728
+263	30.5	-2.604
+264	30.5	-2.3299
+265	30.5	-1.5396
+266	30.5	-0.82596
+267	30.5	-0.47761
+268	30.5	-0.89507
+269	30.5	-0.60403
+270	30.5	-0.025873
+271	30.5	0.023635
+272	30.5	-0.064042
+273	30.5	-0.10491
+274	30.5	-0.26495
+275	30.5	-0.46618
+276	30.5	-0.20878
+277	30.5	0.050509
+278	30.5	0.27928
+279	30.5	0
+280	30.5	0
+281	30.5	0
+282	30.5	0
+283	30.5	0
+284	30.5	0
+285	30.5	0
+286	30.5	0
+287	30.5	0
+288	30.5	0
+289	30.5	0
+290	30.5	0
+291	30.5	0
+292	30.5	0
+293	30.5	0
+294	30.5	0
+295	30.5	0
+296	30.5	0
+297	30.5	0
+298	30.5	0
+299	30.5	0
+300	30.5	0
+301	30.5	0
+302	30.5	0
+303	30.5	0
+304	30.5	0
+305	30.5	0
+306	30.5	0
+307	30.5	0
+308	30.5	0
+309	30.5	0
+310	30.5	0
+311	30.5	0
+312	30.5	0
+313	30.5	0
+314	30.5	0
+315	30.5	0
+316	30.5	0
+317	30.5	0
+318	30.5	0
+319	30.5	0
+320	30.5	0
+321	30.5	0
+322	30.5	0
+323	30.5	0
+324	30.5	0
+325	30.5	0
+326	30.5	0
+327	30.5	0
+328	30.5	0
+329	30.5	0
+330	30.5	0
+331	30.5	0
+332	30.5	0
+333	30.5	0
+334	30.5	0
+335	30.5	0
+336	30.5	0
+337	30.5	0
+338	30.5	0
+339	30.5	0
+340	30.5	0
+341	30.5	0
+342	30.5	0
+343	30.5	0
+344	30.5	0
+345	30.5	0
+346	30.5	0
+347	30.5	0
+348	30.5	0
+349	30.5	0
+350	30.5	0.017205
+351	30.5	-0.0017255
+352	30.5	-0.0052017
+353	30.5	0.035161
+354	30.5	0.17543
+355	30.5	0.1994
+356	30.5	0.15504
+357	30.5	0.12112
+358	30.5	0.073674
+359	30.5	0.01673
+360	30.5	-0.024638
+0	31	-0.0044762
+1	31	-0.050861
+2	31	-0.067287
+3	31	-0.079273
+4	31	-0.079467
+5	31	-0.079269
+6	31	-0.05929
+7	31	-0.062441
+8	31	-0.057818
+9	31	-0.074198
+10	31	-0.10953
+11	31	-0.23233
+12	31	-0.43662
+13	31	-0.56868
+14	31	-0.48717
+15	31	-0.39286
+16	31	-0.13834
+17	31	-0.025456
+18	31	-0.015462
+19	31	0
+20	31	-0.10385
+21	31	-0.12577
+22	31	0.040749
+23	31	0.080997
+24	31	0.048515
+25	31	-0.010172
+26	31	-0.0014835
+27	31	-0.01227
+28	31	-0.011642
+29	31	-0.024288
+30	31	-0.19887
+31	31	-0.40002
+32	31	-0.10964
+33	31	0.0047391
+34	31	-0.051474
+35	31	-0.39674
+36	31	-0.38724
+37	31	-0.18026
+38	31	-0.099916
+39	31	-0.10597
+40	31	-0.13799
+41	31	-0.20521
+42	31	-0.33312
+43	31	-0.39948
+44	31	-0.44302
+45	31	-0.61224
+46	31	-0.9041
+47	31	-1.1228
+48	31	-1.631
+49	31	-2.2569
+50	31	-3.6132
+51	31	-4.7705
+52	31	-3.2879
+53	31	-1.7514
+54	31	-0.91145
+55	31	-0.4945
+56	31	-0.41913
+57	31	-0.34446
+58	31	-0.22289
+59	31	-0.25429
+60	31	-0.32673
+61	31	-0.29921
+62	31	-0.23543
+63	31	-0.15387
+64	31	-0.13068
+65	31	-0.10963
+66	31	-0.025603
+67	31	0.053315
+68	31	0.037039
+69	31	0.05502
+70	31	-0.040444
+71	31	-0.15643
+72	31	-0.29651
+73	31	-0.44016
+74	31	-1.7913
+75	31	-3.3564
+76	31	-5.5532
+77	31	-9.6913
+78	31	-8.7034
+79	31	0
+80	31	-1.84
+81	31	-0.014308
+82	31	-1.5678
+83	31	0
+84	31	-0.031873
+85	31	-0.12428
+86	31	0.015743
+87	31	0.052348
+88	31	-0.00076266
+89	31	-0.094751
+90	31	-0.062601
+91	31	-0.57142
+92	31	-1.1461
+93	31	-1.2117
+94	31	-0.66368
+95	31	-0.13541
+96	31	-0.55605
+97	31	-1.5429
+98	31	-0.91802
+99	31	-0.59165
+100	31	-0.021342
+101	31	-0.0086461
+102	31	0.23926
+103	31	0.54664
+104	31	0.70268
+105	31	0.82812
+106	31	1.0005
+107	31	1.2299
+108	31	1.0357
+109	31	0.63099
+110	31	0.22626
+111	31	0.10868
+112	31	-0.056973
+113	31	-0.073582
+114	31	-0.21032
+115	31	-0.17246
+116	31	-0.27134
+117	31	-0.0038145
+118	31	-0.088729
+119	31	0.18042
+120	31	0.053979
+121	31	0.025763
+122	31	0.0033651
+123	31	0
+124	31	0
+125	31	0
+126	31	0
+127	31	0
+128	31	0.0069633
+129	31	0.0203
+130	31	-0.051662
+131	31	-0.08795
+132	31	0
+133	31	0
+134	31	0
+135	31	0
+136	31	0
+137	31	0
+138	31	0
+139	31	0
+140	31	0
+141	31	0
+142	31	0
+143	31	0
+144	31	0
+145	31	0
+146	31	0
+147	31	0
+148	31	0
+149	31	0
+150	31	0
+151	31	0
+152	31	0
+153	31	0
+154	31	0
+155	31	0
+156	31	0
+157	31	0
+158	31	0
+159	31	0
+160	31	0
+161	31	0
+162	31	0
+163	31	0
+164	31	0
+165	31	0
+166	31	0
+167	31	0
+168	31	0
+169	31	0
+170	31	0
+171	31	0
+172	31	0
+173	31	0
+174	31	0
+175	31	0
+176	31	0
+177	31	0
+178	31	0
+179	31	0
+180	31	0
+181	31	0
+182	31	0
+183	31	0
+184	31	0
+185	31	0
+186	31	0
+187	31	0
+188	31	0
+189	31	0
+190	31	0
+191	31	0
+192	31	0
+193	31	0
+194	31	0
+195	31	0
+196	31	0
+197	31	0
+198	31	0
+199	31	0
+200	31	0
+201	31	0
+202	31	0
+203	31	0
+204	31	0
+205	31	0
+206	31	0
+207	31	0
+208	31	0
+209	31	0
+210	31	0
+211	31	0
+212	31	0
+213	31	0
+214	31	0
+215	31	0
+216	31	0
+217	31	0
+218	31	0
+219	31	0
+220	31	0
+221	31	0
+222	31	0
+223	31	0
+224	31	0
+225	31	0
+226	31	0
+227	31	0
+228	31	0
+229	31	0
+230	31	0
+231	31	0
+232	31	0
+233	31	0
+234	31	0
+235	31	0
+236	31	0
+237	31	0
+238	31	0
+239	31	0
+240	31	0
+241	31	0
+242	31	0
+243	31	0
+244	31	-0.15964
+245	31	-0.057956
+246	31	0
+247	31	0.005093
+248	31	0.0085551
+249	31	0.0061072
+250	31	-0.02265
+251	31	-0.091979
+252	31	-0.15476
+253	31	-0.17189
+254	31	-0.22569
+255	31	-0.28805
+256	31	-0.40605
+257	31	-0.47819
+258	31	-0.52957
+259	31	-0.6217
+260	31	-1.0209
+261	31	-1.3197
+262	31	-1.7942
+263	31	-2.3012
+264	31	-2.1822
+265	31	-1.7165
+266	31	-1.0344
+267	31	-0.71764
+268	31	-1.1008
+269	31	-0.73207
+270	31	-0.18454
+271	31	-0.030386
+272	31	-0.10775
+273	31	-0.263
+274	31	-0.43327
+275	31	-0.54889
+276	31	-0.30833
+277	31	0.0078305
+278	31	0.19178
+279	31	0
+280	31	0
+281	31	0
+282	31	0
+283	31	0
+284	31	0
+285	31	0
+286	31	0
+287	31	0
+288	31	0
+289	31	0
+290	31	0
+291	31	0
+292	31	0
+293	31	0
+294	31	0
+295	31	0
+296	31	0
+297	31	0
+298	31	0
+299	31	0
+300	31	0
+301	31	0
+302	31	0
+303	31	0
+304	31	0
+305	31	0
+306	31	0
+307	31	0
+308	31	0
+309	31	0
+310	31	0
+311	31	0
+312	31	0
+313	31	0
+314	31	0
+315	31	0
+316	31	0
+317	31	0
+318	31	0
+319	31	0
+320	31	0
+321	31	0
+322	31	0
+323	31	0
+324	31	0
+325	31	0
+326	31	0
+327	31	0
+328	31	0
+329	31	0
+330	31	0
+331	31	0
+332	31	0
+333	31	0
+334	31	0
+335	31	0
+336	31	0
+337	31	0
+338	31	0
+339	31	0
+340	31	0
+341	31	0
+342	31	0
+343	31	0
+344	31	0
+345	31	0
+346	31	0
+347	31	0
+348	31	0
+349	31	0
+350	31	0.060852
+351	31	0.050748
+352	31	0.046017
+353	31	0.11302
+354	31	0.28443
+355	31	0.27679
+356	31	0.18789
+357	31	0.14269
+358	31	0.095248
+359	31	0.042981
+360	31	-0.0044762
+0	31.5	0.015685
+1	31.5	-0.049194
+2	31.5	-0.059733
+3	31.5	-0.07029
+4	31.5	-0.071722
+5	31.5	-0.075519
+6	31.5	-0.060833
+7	31.5	-0.075884
+8	31.5	-0.065596
+9	31.5	-0.080009
+10	31.5	-0.12026
+11	31.5	-0.25815
+12	31.5	-0.54121
+13	31.5	-0.66806
+14	31.5	-0.69844
+15	31.5	-0.44444
+16	31.5	-0.10065
+17	31.5	-0.012409
+18	31.5	0
+19	31.5	0
+20	31.5	-0.054872
+21	31.5	-0.075513
+22	31.5	0.083453
+23	31.5	0.10026
+24	31.5	0.057057
+25	31.5	-0.057177
+26	31.5	-0.00058852
+27	31.5	0
+28	31.5	0
+29	31.5	-0.0079983
+30	31.5	0
+31	31.5	-0.14232
+32	31.5	0
+33	31.5	0
+34	31.5	-0.029723
+35	31.5	-0.54727
+36	31.5	-0.75422
+37	31.5	-0.34039
+38	31.5	-0.1795
+39	31.5	-0.14324
+40	31.5	-0.16996
+41	31.5	-0.23145
+42	31.5	-0.32443
+43	31.5	-0.39079
+44	31.5	-0.50314
+45	31.5	-0.79567
+46	31.5	-1.2767
+47	31.5	-1.2291
+48	31.5	-1.8104
+49	31.5	-2.7164
+50	31.5	-4.0909
+51	31.5	-4.5201
+52	31.5	-3.0096
+53	31.5	-1.3178
+54	31.5	-0.67957
+55	31.5	-0.40698
+56	31.5	-0.33628
+57	31.5	-0.30701
+58	31.5	-0.21325
+59	31.5	-0.27289
+60	31.5	-0.32867
+61	31.5	-0.32906
+62	31.5	-0.25425
+63	31.5	-0.16004
+64	31.5	-0.21001
+65	31.5	-0.14817
+66	31.5	-0.069008
+67	31.5	-0.0087543
+68	31.5	0.0092272
+69	31.5	-0.00052817
+70	31.5	-0.097721
+71	31.5	-0.18866
+72	31.5	-0.33502
+73	31.5	-0.63798
+74	31.5	-1.8575
+75	31.5	-3.4446
+76	31.5	-5.0297
+77	31.5	-6.4814
+78	31.5	-7.6712
+79	31.5	0
+80	31.5	-2.11
+81	31.5	0
+82	31.5	-0.88868
+83	31.5	-0.089321
+84	31.5	0.0092291
+85	31.5	-0.0043014
+86	31.5	0.12925
+87	31.5	0.096156
+88	31.5	0.10201
+89	31.5	-0.037985
+90	31.5	0.032854
+91	31.5	-0.080275
+92	31.5	-0.94912
+93	31.5	-1.2432
+94	31.5	-1.3466
+95	31.5	0
+96	31.5	-0.82731
+97	31.5	-1.2437
+98	31.5	-0.78898
+99	31.5	-0.4938
+100	31.5	-0.19754
+101	31.5	0.070274
+102	31.5	0.30291
+103	31.5	0.54694
+104	31.5	0.72953
+105	31.5	0.83301
+106	31.5	1.0051
+107	31.5	1.0653
+108	31.5	0.89024
+109	31.5	0.51889
+110	31.5	0.11415
+111	31.5	-0.023491
+112	31.5	-0.14899
+113	31.5	-0.28608
+114	31.5	-0.42282
+115	31.5	-0.31296
+116	31.5	-0.35165
+117	31.5	-0.16349
+118	31.5	-0.23929
+119	31.5	-0.071669
+120	31.5	0.097049
+121	31.5	0.015464
+122	31.5	0.0054108
+123	31.5	0
+124	31.5	0
+125	31.5	0
+126	31.5	0
+127	31.5	0
+128	31.5	0
+129	31.5	0
+130	31.5	-0.1432
+131	31.5	-0.12465
+132	31.5	0
+133	31.5	0
+134	31.5	0
+135	31.5	0
+136	31.5	0
+137	31.5	0
+138	31.5	0
+139	31.5	0
+140	31.5	0
+141	31.5	0
+142	31.5	0
+143	31.5	0
+144	31.5	0
+145	31.5	0
+146	31.5	0
+147	31.5	0
+148	31.5	0
+149	31.5	0
+150	31.5	0
+151	31.5	0
+152	31.5	0
+153	31.5	0
+154	31.5	0
+155	31.5	0
+156	31.5	0
+157	31.5	0
+158	31.5	0
+159	31.5	0
+160	31.5	0
+161	31.5	0
+162	31.5	0
+163	31.5	0
+164	31.5	0
+165	31.5	0
+166	31.5	0
+167	31.5	0
+168	31.5	0
+169	31.5	0
+170	31.5	0
+171	31.5	0
+172	31.5	0
+173	31.5	0
+174	31.5	0
+175	31.5	0
+176	31.5	0
+177	31.5	0
+178	31.5	0
+179	31.5	0
+180	31.5	0
+181	31.5	0
+182	31.5	0
+183	31.5	0
+184	31.5	0
+185	31.5	0
+186	31.5	0
+187	31.5	0
+188	31.5	0
+189	31.5	0
+190	31.5	0
+191	31.5	0
+192	31.5	0
+193	31.5	0
+194	31.5	0
+195	31.5	0
+196	31.5	0
+197	31.5	0
+198	31.5	0
+199	31.5	0
+200	31.5	0
+201	31.5	0
+202	31.5	0
+203	31.5	0
+204	31.5	0
+205	31.5	0
+206	31.5	0
+207	31.5	0
+208	31.5	0
+209	31.5	0
+210	31.5	0
+211	31.5	0
+212	31.5	0
+213	31.5	0
+214	31.5	0
+215	31.5	0
+216	31.5	0
+217	31.5	0
+218	31.5	0
+219	31.5	0
+220	31.5	0
+221	31.5	0
+222	31.5	0
+223	31.5	0
+224	31.5	0
+225	31.5	0
+226	31.5	0
+227	31.5	0
+228	31.5	0
+229	31.5	0
+230	31.5	0
+231	31.5	0
+232	31.5	0
+233	31.5	0
+234	31.5	0
+235	31.5	0
+236	31.5	0
+237	31.5	0
+238	31.5	0
+239	31.5	0
+240	31.5	0
+241	31.5	0
+242	31.5	0
+243	31.5	0
+244	31.5	-0.30035
+245	31.5	-0.12719
+246	31.5	-0.026085
+247	31.5	-0.010501
+248	31.5	0.0018492
+249	31.5	-0.0024454
+250	31.5	-0.027987
+251	31.5	-0.08976
+252	31.5	-0.13472
+253	31.5	-0.17243
+254	31.5	-0.2281
+255	31.5	-0.40808
+256	31.5	-0.55788
+257	31.5	-0.6299
+258	31.5	-0.60346
+259	31.5	-0.68839
+260	31.5	-0.95192
+261	31.5	-1.2462
+262	31.5	-1.5346
+263	31.5	-1.9884
+264	31.5	-1.9073
+265	31.5	-1.6847
+266	31.5	-1.1801
+267	31.5	-0.80182
+268	31.5	-1.1609
+269	31.5	-0.85236
+270	31.5	-0.2565
+271	31.5	-0.08059
+272	31.5	-0.14603
+273	31.5	-0.26502
+274	31.5	-0.48063
+275	31.5	-0.62842
+276	31.5	-0.34052
+277	31.5	-0.041885
+278	31.5	0.13063
+279	31.5	0.04075
+280	31.5	0
+281	31.5	0
+282	31.5	0
+283	31.5	0
+284	31.5	0
+285	31.5	0
+286	31.5	0
+287	31.5	0
+288	31.5	0
+289	31.5	0
+290	31.5	0
+291	31.5	0
+292	31.5	0
+293	31.5	0
+294	31.5	0
+295	31.5	0
+296	31.5	0
+297	31.5	0
+298	31.5	0
+299	31.5	0
+300	31.5	0
+301	31.5	0
+302	31.5	0
+303	31.5	0
+304	31.5	0
+305	31.5	0
+306	31.5	0
+307	31.5	0
+308	31.5	0
+309	31.5	0
+310	31.5	0
+311	31.5	0
+312	31.5	0
+313	31.5	0
+314	31.5	0
+315	31.5	0
+316	31.5	0
+317	31.5	0
+318	31.5	0
+319	31.5	0
+320	31.5	0
+321	31.5	0
+322	31.5	0
+323	31.5	0
+324	31.5	0
+325	31.5	0
+326	31.5	0
+327	31.5	0
+328	31.5	0
+329	31.5	0
+330	31.5	0
+331	31.5	0
+332	31.5	0
+333	31.5	0
+334	31.5	0
+335	31.5	0
+336	31.5	0
+337	31.5	0
+338	31.5	0
+339	31.5	0
+340	31.5	0
+341	31.5	0
+342	31.5	0
+343	31.5	0
+344	31.5	0
+345	31.5	0
+346	31.5	0
+347	31.5	0
+348	31.5	0
+349	31.5	0
+350	31.5	0.066674
+351	31.5	0.10473
+352	31.5	0.13841
+353	31.5	0.24594
+354	31.5	0.39343
+355	31.5	0.35419
+356	31.5	0.22684
+357	31.5	0.20526
+358	31.5	0.13224
+359	31.5	0.065438
+360	31.5	0.015685
+0	32	0.035847
+1	32	-0.045202
+2	32	-0.052067
+3	32	-0.061306
+4	32	-0.063976
+5	32	-0.072112
+6	32	-0.074508
+7	32	-0.089326
+8	32	-0.075284
+9	32	-0.085482
+10	32	-0.11502
+11	32	-0.25643
+12	32	-0.61778
+13	32	-1.0922
+14	32	-1.0089
+15	32	-0.6576
+16	32	-0.031443
+17	32	0
+18	32	0
+19	32	0
+20	32	-0.003523
+21	32	-0.027778
+22	32	0.083659
+23	32	0.071768
+24	32	0.037493
+25	32	-0.01821
+26	32	0
+27	32	0
+28	32	0
+29	32	0
+30	32	0
+31	32	-0.033906
+32	32	0
+33	32	0
+34	32	-0.031786
+35	32	-0.65626
+36	32	-1.0145
+37	32	-0.59346
+38	32	-0.27364
+39	32	-0.25041
+40	32	-0.22726
+41	32	-0.24938
+42	32	-0.32247
+43	32	-0.40795
+44	32	-0.68695
+45	32	-1.0256
+46	32	-1.6556
+47	32	-1.6341
+48	32	-2.0459
+49	32	-3.2169
+50	32	-3.9236
+51	32	-2.9623
+52	32	-2.0859
+53	32	-1.174
+54	32	-0.44769
+55	32	-0.31563
+56	32	-0.25893
+57	32	-0.26955
+58	32	-0.21745
+59	32	-0.29513
+60	32	-0.33127
+61	32	-0.35891
+62	32	-0.2748
+63	32	-0.18719
+64	32	-0.33518
+65	32	-0.18672
+66	32	-0.10755
+67	32	-0.036566
+68	32	-0.018584
+69	32	-0.057806
+70	32	-0.155
+71	32	-0.22992
+72	32	-0.3755
+73	32	-0.88166
+74	32	-1.922
+75	32	-3.4952
+76	32	-4.9024
+77	32	-3.1035
+78	32	0
+79	32	-1.286
+80	32	-0.65254
+81	32	-0.37916
+82	32	-0.30449
+83	32	-0.077596
+84	32	0.058812
+85	32	0.30263
+86	32	0.26797
+87	32	0.28048
+88	32	0.23208
+89	32	0.12024
+90	32	0.042183
+91	32	0.013646
+92	32	-0.55713
+93	32	-0.87614
+94	32	-0.77555
+95	32	0
+96	32	-1.1371
+97	32	-0.98674
+98	32	-0.64792
+99	32	-0.39595
+100	32	-0.12179
+101	32	0.15202
+102	32	0.36656
+103	32	0.60421
+104	32	0.69997
+105	32	0.85275
+106	32	0.99159
+107	32	0.90074
+108	32	0.73963
+109	32	0.40678
+110	32	0.0020463
+111	32	-0.15566
+112	32	-0.35954
+113	32	-0.49858
+114	32	-0.63532
+115	32	-0.51999
+116	32	-0.43385
+117	32	-0.33005
+118	32	-0.22254
+119	32	-0.27726
+120	32	-0.074839
+121	32	-0.060258
+122	32	0.0020173
+123	32	0
+124	32	0
+125	32	0
+126	32	0
+127	32	0
+128	32	0
+129	32	0
+130	32	-0.23474
+131	32	-0.32413
+132	32	-0.02614
+133	32	0
+134	32	0
+135	32	0
+136	32	0
+137	32	0
+138	32	0
+139	32	0
+140	32	0
+141	32	0
+142	32	0
+143	32	0
+144	32	0
+145	32	0
+146	32	0
+147	32	0
+148	32	0
+149	32	0
+150	32	0
+151	32	0
+152	32	0
+153	32	0
+154	32	0
+155	32	0
+156	32	0
+157	32	0
+158	32	0
+159	32	0
+160	32	0
+161	32	0
+162	32	0
+163	32	0
+164	32	0
+165	32	0
+166	32	0
+167	32	0
+168	32	0
+169	32	0
+170	32	0
+171	32	0
+172	32	0
+173	32	0
+174	32	0
+175	32	0
+176	32	0
+177	32	0
+178	32	0
+179	32	0
+180	32	0
+181	32	0
+182	32	0
+183	32	0
+184	32	0
+185	32	0
+186	32	0
+187	32	0
+188	32	0
+189	32	0
+190	32	0
+191	32	0
+192	32	0
+193	32	0
+194	32	0
+195	32	0
+196	32	0
+197	32	0
+198	32	0
+199	32	0
+200	32	0
+201	32	0
+202	32	0
+203	32	0
+204	32	0
+205	32	0
+206	32	0
+207	32	0
+208	32	0
+209	32	0
+210	32	0
+211	32	0
+212	32	0
+213	32	0
+214	32	0
+215	32	0
+216	32	0
+217	32	0
+218	32	0
+219	32	0
+220	32	0
+221	32	0
+222	32	0
+223	32	0
+224	32	0
+225	32	0
+226	32	0
+227	32	0
+228	32	0
+229	32	0
+230	32	0
+231	32	0
+232	32	0
+233	32	0
+234	32	0
+235	32	0
+236	32	0
+237	32	0
+238	32	0
+239	32	0
+240	32	0
+241	32	0
+242	32	0
+243	32	-0.055493
+244	32	-0.36547
+245	32	-0.15958
+246	32	-0.055384
+247	32	-0.030237
+248	32	-0.0071566
+249	32	-0.012367
+250	32	-0.035314
+251	32	-0.07512
+252	32	-0.12447
+253	32	-0.17296
+254	32	-0.23052
+255	32	-0.59354
+256	32	-0.71355
+257	32	-0.70374
+258	32	-0.67798
+259	32	-0.75508
+260	32	-0.92171
+261	32	-1.1586
+262	32	-1.3915
+263	32	-1.6571
+264	32	-1.7752
+265	32	-1.6545
+266	32	-1.2349
+267	32	-0.8253
+268	32	-1.2435
+269	32	-1.0386
+270	32	-0.38475
+271	32	-0.12244
+272	32	-0.17259
+273	32	-0.27485
+274	32	-0.47907
+275	32	-0.58136
+276	32	-0.38069
+277	32	-0.10049
+278	32	0.07127
+279	32	0.037109
+280	32	0.020245
+281	32	0
+282	32	0
+283	32	0
+284	32	0
+285	32	0
+286	32	0
+287	32	0
+288	32	0
+289	32	0
+290	32	0
+291	32	0
+292	32	0
+293	32	0
+294	32	0
+295	32	0
+296	32	0
+297	32	0
+298	32	0
+299	32	0
+300	32	0
+301	32	0
+302	32	0
+303	32	0
+304	32	0
+305	32	0
+306	32	0
+307	32	0
+308	32	0
+309	32	0
+310	32	0
+311	32	0
+312	32	0
+313	32	0
+314	32	0
+315	32	0
+316	32	0
+317	32	0
+318	32	0
+319	32	0
+320	32	0
+321	32	0
+322	32	0
+323	32	0
+324	32	0
+325	32	0
+326	32	0
+327	32	0
+328	32	0
+329	32	0
+330	32	0
+331	32	0
+332	32	0
+333	32	0
+334	32	0
+335	32	0
+336	32	0
+337	32	0
+338	32	0
+339	32	0
+340	32	0
+341	32	0
+342	32	0
+343	32	0
+344	32	0
+345	32	0
+346	32	0
+347	32	0
+348	32	0
+349	32	0
+350	32	0.027872
+351	32	0.13697
+352	32	0.34523
+353	32	0.57028
+354	32	0.63698
+355	32	0.42254
+356	32	0.30012
+357	32	0.30423
+358	32	0.16585
+359	32	0.087895
+360	32	0.035847
+0	32.5	0.047146
+1	32.5	-0.04121
+2	32.5	-0.049092
+3	32.5	-0.052322
+4	32.5	-0.057512
+5	32.5	-0.070669
+6	32.5	-0.088183
+7	32.5	-0.10277
+8	32.5	-0.094031
+9	32.5	-0.09251
+10	32.5	-0.12208
+11	32.5	-0.2185
+12	32.5	-0.50535
+13	32.5	-0.94578
+14	32.5	-1.3706
+15	32.5	-0.38993
+16	32.5	0
+17	32.5	0
+18	32.5	0
+19	32.5	0
+20	32.5	0
+21	32.5	0.00068422
+22	32.5	0.031838
+23	32.5	0.031459
+24	32.5	0
+25	32.5	0
+26	32.5	0
+27	32.5	0
+28	32.5	0
+29	32.5	0
+30	32.5	0
+31	32.5	0
+32	32.5	0
+33	32.5	0
+34	32.5	0
+35	32.5	-0.72124
+36	32.5	-1.228
+37	32.5	-0.74846
+38	32.5	-0.38345
+39	32.5	-0.36666
+40	32.5	-0.35625
+41	32.5	-0.35121
+42	32.5	-0.39749
+43	32.5	-0.65082
+44	32.5	-0.95613
+45	32.5	-1.2728
+46	32.5	-1.917
+47	32.5	-2.182
+48	32.5	-3.0714
+49	32.5	-3.6549
+50	32.5	-4.5409
+51	32.5	-2.9538
+52	32.5	-1.6479
+53	32.5	-0.6647
+54	32.5	-0.27375
+55	32.5	-0.22428
+56	32.5	-0.16948
+57	32.5	-0.23209
+58	32.5	-0.24228
+59	32.5	-0.31996
+60	32.5	-0.36111
+61	32.5	-0.38876
+62	32.5	-0.29535
+63	32.5	-0.32508
+64	32.5	-0.3747
+65	32.5	-0.22526
+66	32.5	-0.1461
+67	32.5	-0.050827
+68	32.5	-0.046395
+69	32.5	-0.11508
+70	32.5	-0.14084
+71	32.5	-0.27039
+72	32.5	-0.61439
+73	32.5	-1.1253
+74	32.5	-2.0364
+75	32.5	-3.1842
+76	32.5	-3.006
+77	32.5	-0.88058
+78	32.5	0
+79	32.5	-1.2786
+80	32.5	-0.22319
+81	32.5	-0.058625
+82	32.5	-0.074727
+83	32.5	0.0055684
+84	32.5	0.12538
+85	32.5	0.62038
+86	32.5	0.71424
+87	32.5	0.67614
+88	32.5	0.29135
+89	32.5	0.35886
+90	32.5	0.21674
+91	32.5	0.033483
+92	32.5	-0.25706
+93	32.5	-0.41316
+94	32.5	-0.30802
+95	32.5	-0.23431
+96	32.5	-1.0054
+97	32.5	-0.71743
+98	32.5	-0.44439
+99	32.5	-0.2718
+100	32.5	0.0014321
+101	32.5	0.25079
+102	32.5	0.42123
+103	32.5	0.56811
+104	32.5	0.55782
+105	32.5	0.71006
+106	32.5	0.82701
+107	32.5	0.73615
+108	32.5	0.58902
+109	32.5	0.28999
+110	32.5	-0.11006
+111	32.5	-0.28784
+112	32.5	-0.56953
+113	32.5	-0.71108
+114	32.5	-0.84782
+115	32.5	-0.72703
+116	32.5	-0.51275
+117	32.5	-0.4966
+118	32.5	-0.34899
+119	32.5	-0.15575
+120	32.5	-0.27827
+121	32.5	-0.11659
+122	32.5	0
+123	32.5	0
+124	32.5	0
+125	32.5	0
+126	32.5	0
+127	32.5	0
+128	32.5	0
+129	32.5	0
+130	32.5	-0.25789
+131	32.5	-0.52752
+132	32.5	-0.091975
+133	32.5	-0.0090528
+134	32.5	0
+135	32.5	0
+136	32.5	0
+137	32.5	0
+138	32.5	0
+139	32.5	0
+140	32.5	0
+141	32.5	0
+142	32.5	0
+143	32.5	0
+144	32.5	0
+145	32.5	0
+146	32.5	0
+147	32.5	0
+148	32.5	0
+149	32.5	0
+150	32.5	0
+151	32.5	0
+152	32.5	0
+153	32.5	0
+154	32.5	0
+155	32.5	0
+156	32.5	0
+157	32.5	0
+158	32.5	0
+159	32.5	0
+160	32.5	0
+161	32.5	0
+162	32.5	0
+163	32.5	0
+164	32.5	0
+165	32.5	0
+166	32.5	0
+167	32.5	0
+168	32.5	0
+169	32.5	0
+170	32.5	0
+171	32.5	0
+172	32.5	0
+173	32.5	0
+174	32.5	0
+175	32.5	0
+176	32.5	0
+177	32.5	0
+178	32.5	0
+179	32.5	0
+180	32.5	0
+181	32.5	0
+182	32.5	0
+183	32.5	0
+184	32.5	0
+185	32.5	0
+186	32.5	0
+187	32.5	0
+188	32.5	0
+189	32.5	0
+190	32.5	0
+191	32.5	0
+192	32.5	0
+193	32.5	0
+194	32.5	0
+195	32.5	0
+196	32.5	0
+197	32.5	0
+198	32.5	0
+199	32.5	0
+200	32.5	0
+201	32.5	0
+202	32.5	0
+203	32.5	0
+204	32.5	0
+205	32.5	0
+206	32.5	0
+207	32.5	0
+208	32.5	0
+209	32.5	0
+210	32.5	0
+211	32.5	0
+212	32.5	0
+213	32.5	0
+214	32.5	0
+215	32.5	0
+216	32.5	0
+217	32.5	0
+218	32.5	0
+219	32.5	0
+220	32.5	0
+221	32.5	0
+222	32.5	0
+223	32.5	0
+224	32.5	0
+225	32.5	0
+226	32.5	0
+227	32.5	0
+228	32.5	0
+229	32.5	0
+230	32.5	0
+231	32.5	0
+232	32.5	0
+233	32.5	0
+234	32.5	0
+235	32.5	0
+236	32.5	0
+237	32.5	0
+238	32.5	0
+239	32.5	0
+240	32.5	0
+241	32.5	0
+242	32.5	0
+243	32.5	-0.47105
+244	32.5	-0.45563
+245	32.5	-0.18574
+246	32.5	-0.075219
+247	32.5	-0.063063
+248	32.5	-0.026318
+249	32.5	-0.022288
+250	32.5	-0.043509
+251	32.5	-0.084581
+252	32.5	-0.11386
+253	32.5	-0.1735
+254	32.5	-0.37688
+255	32.5	-0.77899
+256	32.5	-0.80407
+257	32.5	-0.77757
+258	32.5	-0.7525
+259	32.5	-0.82177
+260	32.5	-0.89149
+261	32.5	-1.071
+262	32.5	-1.2483
+263	32.5	-1.473
+264	32.5	-1.6494
+265	32.5	-1.6008
+266	32.5	-1.2351
+267	32.5	-0.79105
+268	32.5	-1.3234
+269	32.5	-1.2213
+270	32.5	-0.41144
+271	32.5	-0.17242
+272	32.5	-0.18919
+273	32.5	-0.25964
+274	32.5	-0.46747
+275	32.5	-0.51949
+276	32.5	-0.39449
+277	32.5	-0.13473
+278	32.5	0.013078
+279	32.5	0.019833
+280	32.5	0.03376
+281	32.5	0
+282	32.5	0
+283	32.5	0
+284	32.5	0
+285	32.5	0
+286	32.5	0
+287	32.5	0
+288	32.5	0
+289	32.5	0
+290	32.5	0
+291	32.5	0
+292	32.5	0
+293	32.5	0
+294	32.5	0
+295	32.5	0
+296	32.5	0
+297	32.5	0
+298	32.5	0
+299	32.5	0
+300	32.5	0
+301	32.5	0
+302	32.5	0
+303	32.5	0
+304	32.5	0
+305	32.5	0
+306	32.5	0
+307	32.5	0
+308	32.5	0
+309	32.5	0
+310	32.5	0
+311	32.5	0
+312	32.5	0
+313	32.5	0
+314	32.5	0
+315	32.5	0
+316	32.5	0
+317	32.5	0
+318	32.5	0
+319	32.5	0
+320	32.5	0
+321	32.5	0
+322	32.5	0
+323	32.5	0
+324	32.5	0
+325	32.5	0
+326	32.5	0
+327	32.5	0
+328	32.5	0
+329	32.5	0
+330	32.5	0
+331	32.5	0
+332	32.5	0
+333	32.5	0
+334	32.5	0
+335	32.5	0
+336	32.5	0
+337	32.5	0
+338	32.5	0
+339	32.5	0
+340	32.5	0
+341	32.5	0
+342	32.5	0
+343	32.5	0
+344	32.5	0
+345	32.5	0
+346	32.5	0
+347	32.5	0
+348	32.5	0
+349	32.5	0
+350	32.5	0
+351	32.5	0.29508
+352	32.5	0.63837
+353	32.5	0.82895
+354	32.5	1.0055
+355	32.5	0.7797
+356	32.5	0.5592
+357	32.5	0.40039
+358	32.5	0.19842
+359	32.5	0.11035
+360	32.5	0.047146
+0	33	0.04604
+1	33	-0.038651
+2	33	-0.066725
+3	33	-0.056931
+4	33	-0.058921
+5	33	-0.076945
+6	33	-0.10186
+7	33	-0.11621
+8	33	-0.11256
+9	33	-0.1086
+10	33	-0.12243
+11	33	-0.15768
+12	33	-0.25632
+13	33	-0.55995
+14	33	0
+15	33	0
+16	33	0
+17	33	0
+18	33	0
+19	33	0
+20	33	0
+21	33	0
+22	33	0.0040146
+23	33	0
+24	33	0
+25	33	0
+26	33	0
+27	33	0
+28	33	0
+29	33	0
+30	33	0
+31	33	0
+32	33	0
+33	33	0
+34	33	0
+35	33	-0.43492
+36	33	-1.2195
+37	33	-0.89392
+38	33	-0.41898
+39	33	-0.37054
+40	33	-0.46288
+41	33	-0.4866
+42	33	-0.50955
+43	33	-0.89645
+44	33	-1.2253
+45	33	-1.5305
+46	33	-2.1785
+47	33	-2.948
+48	33	-4.0969
+49	33	-3.4205
+50	33	-3.9965
+51	33	-2.241
+52	33	-1.3021
+53	33	-0.45751
+54	33	-0.28349
+55	33	-0.13293
+56	33	-0.18082
+57	33	-0.2039
+58	33	-0.26712
+59	33	-0.35163
+60	33	-0.39096
+61	33	-0.41769
+62	33	-0.31994
+63	33	-0.46298
+64	33	-0.41422
+65	33	-0.26381
+66	33	-0.17405
+67	33	-0.064292
+68	33	-0.075168
+69	33	-0.11985
+70	33	-0.12517
+71	33	-0.34712
+72	33	-0.85806
+73	33	-1.369
+74	33	-2.1507
+75	33	-2.958
+76	33	-2.1594
+77	33	0
+78	33	0
+79	33	-1.1668
+80	33	-0.2402
+81	33	-0.04623
+82	33	-0.033026
+83	33	0.051343
+84	33	0.27262
+85	33	0.87559
+86	33	1.141
+87	33	1.0445
+88	33	0.95972
+89	33	0.833
+90	33	0.48783
+91	33	0.020962
+92	33	0.00015369
+93	33	0.0037979
+94	33	-0.37937
+95	33	-0.46362
+96	33	-0.59393
+97	33	-0.40721
+98	33	-0.25391
+99	33	-0.086938
+100	33	0.12888
+101	33	0.34956
+102	33	0.38513
+103	33	0.53202
+104	33	0.5078
+105	33	0.5396
+106	33	0.66369
+107	33	0.57157
+108	33	0.43841
+109	33	0.13937
+110	33	-0.22217
+111	33	-0.42001
+112	33	-0.77546
+113	33	-0.92215
+114	33	-1.0603
+115	33	-0.93407
+116	33	-0.82103
+117	33	-0.74275
+118	33	-0.51222
+119	33	-0.0035473
+120	33	-0.35738
+121	33	-0.095343
+122	33	0
+123	33	0
+124	33	0
+125	33	0
+126	33	0
+127	33	0
+128	33	0
+129	33	0
+130	33	-0.21284
+131	33	-0.49385
+132	33	-0.013102
+133	33	-0.03843
+134	33	0.03691
+135	33	0
+136	33	0
+137	33	0
+138	33	0
+139	33	0
+140	33	0
+141	33	0
+142	33	0
+143	33	0
+144	33	0
+145	33	0
+146	33	0
+147	33	0
+148	33	0
+149	33	0
+150	33	0
+151	33	0
+152	33	0
+153	33	0
+154	33	0
+155	33	0
+156	33	0
+157	33	0
+158	33	0
+159	33	0
+160	33	0
+161	33	0
+162	33	0
+163	33	0
+164	33	0
+165	33	0
+166	33	0
+167	33	0
+168	33	0
+169	33	0
+170	33	0
+171	33	0
+172	33	0
+173	33	0
+174	33	0
+175	33	0
+176	33	0
+177	33	0
+178	33	0
+179	33	0
+180	33	0
+181	33	0
+182	33	0
+183	33	0
+184	33	0
+185	33	0
+186	33	0
+187	33	0
+188	33	0
+189	33	0
+190	33	0
+191	33	0
+192	33	0
+193	33	0
+194	33	0
+195	33	0
+196	33	0
+197	33	0
+198	33	0
+199	33	0
+200	33	0
+201	33	0
+202	33	0
+203	33	0
+204	33	0
+205	33	0
+206	33	0
+207	33	0
+208	33	0
+209	33	0
+210	33	0
+211	33	0
+212	33	0
+213	33	0
+214	33	0
+215	33	0
+216	33	0
+217	33	0
+218	33	0
+219	33	0
+220	33	0
+221	33	0
+222	33	0
+223	33	0
+224	33	0
+225	33	0
+226	33	0
+227	33	0
+228	33	0
+229	33	0
+230	33	0
+231	33	0
+232	33	0
+233	33	0
+234	33	0
+235	33	0
+236	33	0
+237	33	0
+238	33	0
+239	33	0
+240	33	0
+241	33	0
+242	33	0
+243	33	-1.0384
+244	33	-0.64149
+245	33	-0.29267
+246	33	-0.12941
+247	33	-0.095087
+248	33	-0.046939
+249	33	-0.032163
+250	33	-0.049855
+251	33	-0.07261
+252	33	-0.10325
+253	33	-0.17189
+254	33	-0.4872
+255	33	-0.82339
+256	33	-0.8779
+257	33	-0.8514
+258	33	-0.82702
+259	33	-0.88846
+260	33	-0.85272
+261	33	-0.9834
+262	33	-1.1229
+263	33	-1.3491
+264	33	-1.5204
+265	33	-1.4414
+266	33	-1.1795
+267	33	-0.86982
+268	33	-1.1252
+269	33	-1.0196
+270	33	-0.2595
+271	33	-0.15173
+272	33	-0.19244
+273	33	-0.24444
+274	33	-0.4516
+275	33	-0.46614
+276	33	-0.34605
+277	33	-0.13643
+278	33	-0.017891
+279	33	0.049357
+280	33	0.041323
+281	33	0
+282	33	0
+283	33	0
+284	33	0
+285	33	0
+286	33	0
+287	33	0
+288	33	0
+289	33	0
+290	33	0
+291	33	0
+292	33	0
+293	33	0
+294	33	0
+295	33	0
+296	33	0
+297	33	0
+298	33	0
+299	33	0
+300	33	0
+301	33	0
+302	33	0
+303	33	0
+304	33	0
+305	33	0
+306	33	0
+307	33	0
+308	33	0
+309	33	0
+310	33	0
+311	33	0
+312	33	0
+313	33	0
+314	33	0
+315	33	0
+316	33	0
+317	33	0
+318	33	0
+319	33	0
+320	33	0
+321	33	0
+322	33	0
+323	33	0
+324	33	0
+325	33	0
+326	33	0
+327	33	0
+328	33	0
+329	33	0
+330	33	0
+331	33	0
+332	33	0
+333	33	0
+334	33	0
+335	33	0
+336	33	0
+337	33	0
+338	33	0
+339	33	0
+340	33	0
+341	33	0
+342	33	0
+343	33	-0.067251
+344	33	0
+345	33	0
+346	33	0
+347	33	0
+348	33	0
+349	33	0
+350	33	0
+351	33	0.036091
+352	33	1.0558
+353	33	1.3972
+354	33	1.3924
+355	33	1.2407
+356	33	0.9003
+357	33	0.40682
+358	33	0.24798
+359	33	0.12847
+360	33	0.04604
+0	33.5	0.040678
+1	33.5	-0.048863
+2	33.5	-0.084357
+3	33.5	-0.074563
+4	33.5	-0.066227
+5	33.5	-0.083222
+6	33.5	-0.10056
+7	33.5	-0.13475
+8	33.5	-0.13083
+9	33.5	-0.12366
+10	33.5	-0.11727
+11	33.5	-0.051223
+12	33.5	0
+13	33.5	-0.011438
+14	33.5	0
+15	33.5	0
+16	33.5	0
+17	33.5	0
+18	33.5	0
+19	33.5	0
+20	33.5	0
+21	33.5	0
+22	33.5	0
+23	33.5	0
+24	33.5	0
+25	33.5	0
+26	33.5	0
+27	33.5	0
+28	33.5	0
+29	33.5	0
+30	33.5	0
+31	33.5	0
+32	33.5	0
+33	33.5	0
+34	33.5	0
+35	33.5	0
+36	33.5	-1.2755
+37	33.5	-0.96642
+38	33.5	-0.38151
+39	33.5	-0.42364
+40	33.5	-0.53631
+41	33.5	-0.61189
+42	33.5	-0.65242
+43	33.5	-1.1421
+44	33.5	-1.4808
+45	33.5	-1.7937
+46	33.5	-2.4282
+47	33.5	-3.2177
+48	33.5	-5.1152
+49	33.5	-3.0407
+50	33.5	-3.3534
+51	33.5	-1.5956
+52	33.5	-0.95624
+53	33.5	-0.41112
+54	33.5	-0.29322
+55	33.5	-0.16125
+56	33.5	-0.1974
+57	33.5	-0.18593
+58	33.5	-0.30632
+59	33.5	-0.38849
+60	33.5	-0.41703
+61	33.5	-0.43823
+62	33.5	-0.45783
+63	33.5	-0.60138
+64	33.5	-0.45375
+65	33.5	-0.30235
+66	33.5	-0.19322
+67	33.5	-0.077758
+68	33.5	-0.10034
+69	33.5	-0.10417
+70	33.5	-0.1325
+71	33.5	-0.39719
+72	33.5	-0.85762
+73	33.5	-1.5075
+74	33.5	-2.1715
+75	33.5	-2.9371
+76	33.5	-1.3959
+77	33.5	0
+78	33.5	0
+79	33.5	-0.80664
+80	33.5	-0.085943
+81	33.5	-0.069182
+82	33.5	-0.023168
+83	33.5	0.097835
+84	33.5	0.38682
+85	33.5	1.0958
+86	33.5	0.89797
+87	33.5	1.4184
+88	33.5	1.5039
+89	33.5	1.4529
+90	33.5	0.71086
+91	33.5	0.040143
+92	33.5	0.037229
+93	33.5	0.076537
+94	33.5	-0.11249
+95	33.5	-0.13424
+96	33.5	-0.17961
+97	33.5	-0.096986
+98	33.5	-0.015573
+99	33.5	0.10698
+100	33.5	0.25673
+101	33.5	0.45296
+102	33.5	0.36831
+103	33.5	0.49592
+104	33.5	0.45778
+105	33.5	0.36914
+106	33.5	0.50052
+107	33.5	0.40698
+108	33.5	0.2878
+109	33.5	-0.011237
+110	33.5	-0.33427
+111	33.5	-0.55708
+112	33.5	-0.95493
+113	33.5	-1.1327
+114	33.5	-1.2728
+115	33.5	-1.1631
+116	33.5	-1.1254
+117	33.5	-1.0145
+118	33.5	-0.59637
+119	33.5	-0.17121
+120	33.5	-0.24752
+121	33.5	0
+122	33.5	0
+123	33.5	0
+124	33.5	0
+125	33.5	0
+126	33.5	0
+127	33.5	0
+128	33.5	0
+129	33.5	0
+130	33.5	-0.1526
+131	33.5	-0.3236
+132	33.5	-0.096355
+133	33.5	-0.085942
+134	33.5	0.09964
+135	33.5	0
+136	33.5	0.1044
+137	33.5	0
+138	33.5	0
+139	33.5	0
+140	33.5	0
+141	33.5	0
+142	33.5	0
+143	33.5	0
+144	33.5	0
+145	33.5	0
+146	33.5	0
+147	33.5	0
+148	33.5	0
+149	33.5	0
+150	33.5	0
+151	33.5	0
+152	33.5	0
+153	33.5	0
+154	33.5	0
+155	33.5	0
+156	33.5	0
+157	33.5	0
+158	33.5	0
+159	33.5	0
+160	33.5	0
+161	33.5	0
+162	33.5	0
+163	33.5	0
+164	33.5	0
+165	33.5	0
+166	33.5	0
+167	33.5	0
+168	33.5	0
+169	33.5	0
+170	33.5	0
+171	33.5	0
+172	33.5	0
+173	33.5	0
+174	33.5	0
+175	33.5	0
+176	33.5	0
+177	33.5	0
+178	33.5	0
+179	33.5	0
+180	33.5	0
+181	33.5	0
+182	33.5	0
+183	33.5	0
+184	33.5	0
+185	33.5	0
+186	33.5	0
+187	33.5	0
+188	33.5	0
+189	33.5	0
+190	33.5	0
+191	33.5	0
+192	33.5	0
+193	33.5	0
+194	33.5	0
+195	33.5	0
+196	33.5	0
+197	33.5	0
+198	33.5	0
+199	33.5	0
+200	33.5	0
+201	33.5	0
+202	33.5	0
+203	33.5	0
+204	33.5	0
+205	33.5	0
+206	33.5	0
+207	33.5	0
+208	33.5	0
+209	33.5	0
+210	33.5	0
+211	33.5	0
+212	33.5	0
+213	33.5	0
+214	33.5	0
+215	33.5	0
+216	33.5	0
+217	33.5	0
+218	33.5	0
+219	33.5	0
+220	33.5	0
+221	33.5	0
+222	33.5	0
+223	33.5	0
+224	33.5	0
+225	33.5	0
+226	33.5	0
+227	33.5	0
+228	33.5	0
+229	33.5	0
+230	33.5	0
+231	33.5	0
+232	33.5	0
+233	33.5	0
+234	33.5	0
+235	33.5	0
+236	33.5	0
+237	33.5	0
+238	33.5	0
+239	33.5	0
+240	33.5	0
+241	33.5	0
+242	33.5	0
+243	33.5	-1.7279
+244	33.5	-0.99119
+245	33.5	-0.41804
+246	33.5	-0.20641
+247	33.5	-0.11321
+248	33.5	-0.06645
+249	33.5	-0.043449
+250	33.5	-0.042623
+251	33.5	-0.060639
+252	33.5	-0.092643
+253	33.5	-0.16164
+254	33.5	-0.41367
+255	33.5	-0.7507
+256	33.5	-0.95173
+257	33.5	-0.92548
+258	33.5	-0.90154
+259	33.5	-0.95515
+260	33.5	-0.84126
+261	33.5	-0.95679
+262	33.5	-1.0723
+263	33.5	-1.2253
+264	33.5	-1.3444
+265	33.5	-1.2821
+266	33.5	-1.1153
+267	33.5	-0.94859
+268	33.5	-0.927
+269	33.5	-0.81787
+270	33.5	-0.21252
+271	33.5	-0.13103
+272	33.5	-0.19569
+273	33.5	-0.24483
+274	33.5	-0.38514
+275	33.5	-0.39381
+276	33.5	-0.2976
+277	33.5	-0.13814
+278	33.5	-0.0344
+279	33.5	0.055822
+280	33.5	0.024415
+281	33.5	-0.0059943
+282	33.5	0
+283	33.5	0
+284	33.5	0
+285	33.5	0
+286	33.5	0
+287	33.5	0
+288	33.5	0
+289	33.5	0
+290	33.5	0
+291	33.5	0
+292	33.5	0
+293	33.5	0
+294	33.5	0
+295	33.5	0
+296	33.5	0
+297	33.5	0
+298	33.5	0
+299	33.5	0
+300	33.5	0
+301	33.5	0
+302	33.5	0
+303	33.5	0
+304	33.5	0
+305	33.5	0
+306	33.5	0
+307	33.5	0
+308	33.5	0
+309	33.5	0
+310	33.5	0
+311	33.5	0
+312	33.5	0
+313	33.5	0
+314	33.5	0
+315	33.5	0
+316	33.5	0
+317	33.5	0
+318	33.5	0
+319	33.5	0
+320	33.5	0
+321	33.5	0
+322	33.5	0
+323	33.5	0
+324	33.5	0
+325	33.5	0
+326	33.5	0
+327	33.5	0
+328	33.5	0
+329	33.5	0
+330	33.5	0
+331	33.5	0
+332	33.5	0
+333	33.5	0
+334	33.5	0
+335	33.5	0
+336	33.5	0
+337	33.5	0
+338	33.5	0
+339	33.5	0
+340	33.5	0
+341	33.5	0
+342	33.5	0
+343	33.5	-0.014242
+344	33.5	0
+345	33.5	0
+346	33.5	0
+347	33.5	0
+348	33.5	0
+349	33.5	0
+350	33.5	0
+351	33.5	0
+352	33.5	1.2794
+353	33.5	1.8281
+354	33.5	1.9211
+355	33.5	1.7607
+356	33.5	1.2386
+357	33.5	0.67818
+358	33.5	0.33348
+359	33.5	0.1425
+360	33.5	0.040678
+0	34	0.031687
+1	34	-0.050562
+2	34	-0.099512
+3	34	-0.093545
+4	34	-0.073457
+5	34	-0.089498
+6	34	-0.098596
+7	34	-0.15816
+8	34	-0.15323
+9	34	-0.12958
+10	34	-0.10609
+11	34	0
+12	34	0
+13	34	0
+14	34	0
+15	34	0
+16	34	0
+17	34	0
+18	34	0
+19	34	0
+20	34	0
+21	34	0
+22	34	0
+23	34	0
+24	34	0
+25	34	0
+26	34	0
+27	34	0
+28	34	0
+29	34	0
+30	34	0
+31	34	0
+32	34	0
+33	34	0
+34	34	0
+35	34	0
+36	34	-1.2328
+37	34	-1.1049
+38	34	-0.5664
+39	34	-0.4554
+40	34	-0.61674
+41	34	-0.7159
+42	34	-0.79529
+43	34	-1.2261
+44	34	-1.7264
+45	34	-2.057
+46	34	-2.6663
+47	34	-3.4061
+48	34	-4.7047
+49	34	-2.7799
+50	34	-2.6378
+51	34	-1.4783
+52	34	-0.6104
+53	34	-0.40443
+54	34	-0.30296
+55	34	-0.1982
+56	34	-0.20822
+57	34	-0.16797
+58	34	-0.34731
+59	34	-0.40789
+60	34	-0.42875
+61	34	-0.45878
+62	34	-0.59117
+63	34	-0.64687
+64	34	-0.49327
+65	34	-0.3409
+66	34	-0.21239
+67	34	-0.091223
+68	34	-0.10353
+69	34	-0.099286
+70	34	-0.22506
+71	34	-0.4891
+72	34	-0.67223
+73	34	-1.1674
+74	34	-1.7115
+75	34	-1.8708
+76	34	0
+77	34	0
+78	34	0
+79	34	-0.18451
+80	34	-0.1211
+81	34	-0.010667
+82	34	0.0073833
+83	34	0.11205
+84	34	0.54762
+85	34	1.1522
+86	34	0.16676
+87	34	1.7878
+88	34	2.0745
+89	34	0.9803
+90	34	0.90782
+91	34	0.22235
+92	34	0.10281
+93	34	0.15066
+94	34	0.14494
+95	34	0.071707
+96	34	-0.016238
+97	34	0.13268
+98	34	0.057883
+99	34	0.22745
+100	34	0.39782
+101	34	0.55886
+102	34	0.3903
+103	34	0.45983
+104	34	0.40776
+105	34	0.30116
+106	34	0.33735
+107	34	0.24281
+108	34	0.13719
+109	34	-0.16185
+110	34	-0.46088
+111	34	-0.76302
+112	34	-1.0693
+113	34	-1.2886
+114	34	-1.4848
+115	34	-1.5712
+116	34	-1.4242
+117	34	-1.2402
+118	34	-0.89413
+119	34	-0.46906
+120	34	-0.25022
+121	34	0
+122	34	0
+123	34	0
+124	34	0
+125	34	0
+126	34	0
+127	34	0
+128	34	0
+129	34	0
+130	34	0
+131	34	-0.35797
+132	34	-0.27056
+133	34	-0.17387
+134	34	0.10697
+135	34	0.18969
+136	34	0.25599
+137	34	0
+138	34	0
+139	34	0
+140	34	0
+141	34	0
+142	34	0
+143	34	0
+144	34	0
+145	34	0
+146	34	0
+147	34	0
+148	34	0
+149	34	0
+150	34	0
+151	34	0
+152	34	0
+153	34	0
+154	34	0
+155	34	0
+156	34	0
+157	34	0
+158	34	0
+159	34	0
+160	34	0
+161	34	0
+162	34	0
+163	34	0
+164	34	0
+165	34	0
+166	34	0
+167	34	0
+168	34	0
+169	34	0
+170	34	0
+171	34	0
+172	34	0
+173	34	0
+174	34	0
+175	34	0
+176	34	0
+177	34	0
+178	34	0
+179	34	0
+180	34	0
+181	34	0
+182	34	0
+183	34	0
+184	34	0
+185	34	0
+186	34	0
+187	34	0
+188	34	0
+189	34	0
+190	34	0
+191	34	0
+192	34	0
+193	34	0
+194	34	0
+195	34	0
+196	34	0
+197	34	0
+198	34	0
+199	34	0
+200	34	0
+201	34	0
+202	34	0
+203	34	0
+204	34	0
+205	34	0
+206	34	0
+207	34	0
+208	34	0
+209	34	0
+210	34	0
+211	34	0
+212	34	0
+213	34	0
+214	34	0
+215	34	0
+216	34	0
+217	34	0
+218	34	0
+219	34	0
+220	34	0
+221	34	0
+222	34	0
+223	34	0
+224	34	0
+225	34	0
+226	34	0
+227	34	0
+228	34	0
+229	34	0
+230	34	0
+231	34	0
+232	34	0
+233	34	0
+234	34	0
+235	34	0
+236	34	0
+237	34	0
+238	34	0
+239	34	0
+240	34	-0.082606
+241	34	-0.74571
+242	34	-1.8128
+243	34	-2.3311
+244	34	-1.1733
+245	34	-0.54367
+246	34	-0.27716
+247	34	-0.14377
+248	34	-0.085961
+249	34	-0.058496
+250	34	-0.042504
+251	34	-0.051576
+252	34	-0.082033
+253	34	-0.15382
+254	34	-0.33726
+255	34	-0.67674
+256	34	-1.0142
+257	34	-1
+258	34	-0.97606
+259	34	-0.97631
+260	34	-0.82979
+261	34	-0.94533
+262	34	-1.0095
+263	34	-1.1015
+264	34	-1.1684
+265	34	-1.1227
+266	34	-0.96854
+267	34	-0.88884
+268	34	-0.79517
+269	34	-0.61616
+270	34	-0.19932
+271	34	-0.11034
+272	34	-0.17232
+273	34	-0.22948
+274	34	-0.29525
+275	34	-0.32074
+276	34	-0.24944
+277	34	-0.13985
+278	34	-0.017098
+279	34	0.025433
+280	34	-0.02787
+281	34	-0.013103
+282	34	0.026327
+283	34	0
+284	34	0
+285	34	0
+286	34	0
+287	34	0
+288	34	0
+289	34	0
+290	34	0
+291	34	0
+292	34	0
+293	34	0
+294	34	0
+295	34	0
+296	34	0
+297	34	0
+298	34	0
+299	34	0
+300	34	0
+301	34	0
+302	34	0
+303	34	0
+304	34	0
+305	34	0
+306	34	0
+307	34	0
+308	34	0
+309	34	0
+310	34	0
+311	34	0
+312	34	0
+313	34	0
+314	34	0
+315	34	0
+316	34	0
+317	34	0
+318	34	0
+319	34	0
+320	34	0
+321	34	0
+322	34	0
+323	34	0
+324	34	0
+325	34	0
+326	34	0
+327	34	0
+328	34	0
+329	34	0
+330	34	0
+331	34	0
+332	34	0
+333	34	0
+334	34	0
+335	34	0
+336	34	0
+337	34	0
+338	34	0
+339	34	0
+340	34	0
+341	34	0
+342	34	0
+343	34	0
+344	34	0
+345	34	0
+346	34	0
+347	34	0
+348	34	0
+349	34	0
+350	34	0
+351	34	0
+352	34	0.4015
+353	34	1.0139
+354	34	2.5201
+355	34	2.1926
+356	34	1.4752
+357	34	0.8442
+358	34	0.38593
+359	34	0.18146
+360	34	0.031687
+0	34.5	0.016121
+1	34.5	-0.054975
+2	34.5	-0.11411
+3	34.5	-0.11274
+4	34.5	-0.095195
+5	34.5	-0.095775
+6	34.5	-0.11176
+7	34.5	-0.18229
+8	34.5	-0.1767
+9	34.5	-0.093753
+10	34.5	-0.056509
+11	34.5	0
+12	34.5	0
+13	34.5	0
+14	34.5	0
+15	34.5	0
+16	34.5	0
+17	34.5	0
+18	34.5	0
+19	34.5	0
+20	34.5	0
+21	34.5	0
+22	34.5	0
+23	34.5	0
+24	34.5	0
+25	34.5	0
+26	34.5	0
+27	34.5	0
+28	34.5	0
+29	34.5	0
+30	34.5	0
+31	34.5	0
+32	34.5	0
+33	34.5	-0.02488
+34	34.5	-0.012785
+35	34.5	0
+36	34.5	-0.67356
+37	34.5	-1.2828
+38	34.5	-0.81803
+39	34.5	-0.63059
+40	34.5	-0.70314
+41	34.5	-0.79762
+42	34.5	-0.93816
+43	34.5	-1.3041
+44	34.5	-1.8715
+45	34.5	-2.322
+46	34.5	-2.9044
+47	34.5	-3.6251
+48	34.5	-4.0623
+49	34.5	-2.5192
+50	34.5	-1.9222
+51	34.5	-1.734
+52	34.5	-0.77012
+53	34.5	-0.55566
+54	34.5	-0.32383
+55	34.5	-0.28019
+56	34.5	-0.21213
+57	34.5	-0.1686
+58	34.5	-0.38829
+59	34.5	-0.42728
+60	34.5	-0.44047
+61	34.5	-0.46875
+62	34.5	-0.53834
+63	34.5	-0.56657
+64	34.5	-0.5328
+65	34.5	-0.37944
+66	34.5	-0.23156
+67	34.5	-0.10469
+68	34.5	-0.10671
+69	34.5	-0.097109
+70	34.5	-0.34147
+71	34.5	-0.58101
+72	34.5	-0.71742
+73	34.5	-0.77398
+74	34.5	-1.0032
+75	34.5	-0.032897
+76	34.5	0
+77	34.5	0
+78	34.5	0
+79	34.5	0
+80	34.5	-0.08966
+81	34.5	0
+82	34.5	0.014165
+83	34.5	0.13035
+84	34.5	0.55312
+85	34.5	1.2527
+86	34.5	0.8009
+87	34.5	2.0893
+88	34.5	2.3487
+89	34.5	1.5291
+90	34.5	0.49872
+91	34.5	0.48046
+92	34.5	0.20004
+93	34.5	0.15754
+94	34.5	0.21758
+95	34.5	0.23951
+96	34.5	0.11451
+97	34.5	0.18852
+98	34.5	0.13134
+99	34.5	0.29211
+100	34.5	0.50303
+101	34.5	0.58297
+102	34.5	0.41229
+103	34.5	0.42373
+104	34.5	0.35774
+105	34.5	0.25114
+106	34.5	0.17418
+107	34.5	0.079636
+108	34.5	-0.013423
+109	34.5	-0.31246
+110	34.5	-0.61149
+111	34.5	-0.90365
+112	34.5	-1.1837
+113	34.5	-1.4136
+114	34.5	-1.6166
+115	34.5	-2.013
+116	34.5	-1.695
+117	34.5	-1.5651
+118	34.5	-1.144
+119	34.5	-0.63272
+120	34.5	-0.084472
+121	34.5	0
+122	34.5	0
+123	34.5	0
+124	34.5	0
+125	34.5	0
+126	34.5	0
+127	34.5	-0.090395
+128	34.5	-0.050562
+129	34.5	0
+130	34.5	0
+131	34.5	-0.12729
+132	34.5	-0.28325
+133	34.5	-0.24001
+134	34.5	0.046916
+135	34.5	0.13505
+136	34.5	0.31363
+137	34.5	0.071822
+138	34.5	0
+139	34.5	0
+140	34.5	0.073373
+141	34.5	0
+142	34.5	0
+143	34.5	0
+144	34.5	0
+145	34.5	0
+146	34.5	0
+147	34.5	0
+148	34.5	0
+149	34.5	0
+150	34.5	0
+151	34.5	0
+152	34.5	0
+153	34.5	0
+154	34.5	0
+155	34.5	0
+156	34.5	0
+157	34.5	0
+158	34.5	0
+159	34.5	0
+160	34.5	0
+161	34.5	0
+162	34.5	0
+163	34.5	0
+164	34.5	0
+165	34.5	0
+166	34.5	0
+167	34.5	0
+168	34.5	0
+169	34.5	0
+170	34.5	0
+171	34.5	0
+172	34.5	0
+173	34.5	0
+174	34.5	0
+175	34.5	0
+176	34.5	0
+177	34.5	0
+178	34.5	0
+179	34.5	0
+180	34.5	0
+181	34.5	0
+182	34.5	0
+183	34.5	0
+184	34.5	0
+185	34.5	0
+186	34.5	0
+187	34.5	0
+188	34.5	0
+189	34.5	0
+190	34.5	0
+191	34.5	0
+192	34.5	0
+193	34.5	0
+194	34.5	0
+195	34.5	0
+196	34.5	0
+197	34.5	0
+198	34.5	0
+199	34.5	0
+200	34.5	0
+201	34.5	0
+202	34.5	0
+203	34.5	0
+204	34.5	0
+205	34.5	0
+206	34.5	0
+207	34.5	0
+208	34.5	0
+209	34.5	0
+210	34.5	0
+211	34.5	0
+212	34.5	0
+213	34.5	0
+214	34.5	0
+215	34.5	0
+216	34.5	0
+217	34.5	0
+218	34.5	0
+219	34.5	0
+220	34.5	0
+221	34.5	0
+222	34.5	0
+223	34.5	0
+224	34.5	0
+225	34.5	0
+226	34.5	0
+227	34.5	0
+228	34.5	0
+229	34.5	0
+230	34.5	0
+231	34.5	0
+232	34.5	0
+233	34.5	0
+234	34.5	0
+235	34.5	0
+236	34.5	0
+237	34.5	0
+238	34.5	0
+239	34.5	0
+240	34.5	-1.0646
+241	34.5	-2.0017
+242	34.5	-2.2882
+243	34.5	-1.8788
+244	34.5	-1.0803
+245	34.5	-0.57197
+246	34.5	-0.34254
+247	34.5	-0.17747
+248	34.5	-0.10401
+249	34.5	-0.051265
+250	34.5	-0.02536
+251	34.5	-0.032735
+252	34.5	-0.071505
+253	34.5	-0.14601
+254	34.5	-0.26085
+255	34.5	-0.60033
+256	34.5	-0.93981
+257	34.5	-1.0573
+258	34.5	-1.0263
+259	34.5	-0.97031
+260	34.5	-0.81833
+261	34.5	-0.93386
+262	34.5	-0.94006
+263	34.5	-0.98478
+264	34.5	-0.99235
+265	34.5	-0.95625
+266	34.5	-0.83823
+267	34.5	-0.75859
+268	34.5	-0.63292
+269	34.5	-0.41445
+270	34.5	-0.18612
+271	34.5	-0.08964
+272	34.5	-0.10819
+273	34.5	-0.16534
+274	34.5	-0.22171
+275	34.5	-0.24079
+276	34.5	-0.20754
+277	34.5	-0.10438
+278	34.5	-0.022231
+279	34.5	-0.033204
+280	34.5	-0.069073
+281	34.5	-0.052593
+282	34.5	0.004901
+283	34.5	0.041947
+284	34.5	0
+285	34.5	0
+286	34.5	0
+287	34.5	0
+288	34.5	0
+289	34.5	0
+290	34.5	0
+291	34.5	0
+292	34.5	0
+293	34.5	0
+294	34.5	0
+295	34.5	0
+296	34.5	0
+297	34.5	0
+298	34.5	0
+299	34.5	0
+300	34.5	0
+301	34.5	0
+302	34.5	0
+303	34.5	0
+304	34.5	0
+305	34.5	0
+306	34.5	0
+307	34.5	0
+308	34.5	0
+309	34.5	0
+310	34.5	0
+311	34.5	0
+312	34.5	0
+313	34.5	0
+314	34.5	0
+315	34.5	0
+316	34.5	0
+317	34.5	0
+318	34.5	0
+319	34.5	0
+320	34.5	0
+321	34.5	0
+322	34.5	0
+323	34.5	0
+324	34.5	0
+325	34.5	0
+326	34.5	0
+327	34.5	0
+328	34.5	0
+329	34.5	0
+330	34.5	0
+331	34.5	0
+332	34.5	0
+333	34.5	0
+334	34.5	0
+335	34.5	0
+336	34.5	0
+337	34.5	0
+338	34.5	0
+339	34.5	0
+340	34.5	0
+341	34.5	0
+342	34.5	0
+343	34.5	0
+344	34.5	0
+345	34.5	0
+346	34.5	0
+347	34.5	0
+348	34.5	0
+349	34.5	0
+350	34.5	0
+351	34.5	0
+352	34.5	0
+353	34.5	0
+354	34.5	2.6773
+355	34.5	2.4
+356	34.5	1.7446
+357	34.5	0.96383
+358	34.5	0.34616
+359	34.5	0.17763
+360	34.5	0.016121
+0	35	0.02121
+1	35	-0.0702
+2	35	-0.13692
+3	35	-0.12817
+4	35	-0.12497
+5	35	-0.12538
+6	35	-0.14717
+7	35	-0.20863
+8	35	-0.17201
+9	35	-0.057926
+10	35	-0.00063348
+11	35	-0.0030837
+12	35	0
+13	35	0
+14	35	0
+15	35	0
+16	35	0
+17	35	0
+18	35	0
+19	35	0
+20	35	0
+21	35	0
+22	35	0
+23	35	0
+24	35	0.083158
+25	35	0
+26	35	0
+27	35	0
+28	35	0
+29	35	0
+30	35	0
+31	35	0
+32	35	0
+33	35	-0.020211
+34	35	-0.018764
+35	35	0
+36	35	-0.63524
+37	35	-1.3763
+38	35	-1.0993
+39	35	-0.86376
+40	35	-0.78981
+41	35	-1.0292
+42	35	-1.2964
+43	35	-1.382
+44	35	-1.9494
+45	35	-2.4557
+46	35	-3.1425
+47	35	-3.8441
+48	35	-3.5612
+49	35	-2.5762
+50	35	-1.8576
+51	35	-1.8832
+52	35	-1.1257
+53	35	-0.98505
+54	35	-0.74075
+55	35	-0.53223
+56	35	-0.28231
+57	35	-0.29125
+58	35	-0.42928
+59	35	-0.44668
+60	35	-0.45219
+61	35	-0.41593
+62	35	-0.48552
+63	35	-0.48627
+64	35	-0.49014
+65	35	-0.40245
+66	35	-0.25074
+67	35	-0.11333
+68	35	-0.10283
+69	35	-0.092337
+70	35	-0.45202
+71	35	-0.68174
+72	35	-0.82368
+73	35	-0.40961
+74	35	-0.17997
+75	35	-0.63517
+76	35	0
+77	35	0
+78	35	0
+79	35	-0.25826
+80	35	-0.13939
+81	35	0
+82	35	0.020884
+83	35	0.26744
+84	35	0.61879
+85	35	1.4586
+86	35	1.5293
+87	35	2.2333
+88	35	2.5633
+89	35	2.436
+90	35	0.44655
+91	35	0.73363
+92	35	0.27115
+93	35	0.10307
+94	35	0.15615
+95	35	0.23728
+96	35	0.25389
+97	35	0.19709
+98	35	0.2048
+99	35	0.34389
+100	35	0.60135
+101	35	0.60496
+102	35	0.43428
+103	35	0.38764
+104	35	0.30771
+105	35	0.20112
+106	35	0.11565
+107	35	-0.068556
+108	35	-0.17763
+109	35	-0.46307
+110	35	-0.66058
+111	35	-1.019
+112	35	-1.2981
+113	35	-1.5387
+114	35	-2.0389
+115	35	-2.2707
+116	35	-1.9657
+117	35	-2.0438
+118	35	-1.3625
+119	35	-0.70253
+120	35	-0.072551
+121	35	0
+122	35	0
+123	35	0
+124	35	0
+125	35	0
+126	35	-0.021515
+127	35	-0.3406
+128	35	-0.39302
+129	35	-0.25052
+130	35	0
+131	35	0
+132	35	-0.11023
+133	35	-0.18579
+134	35	0.025008
+135	35	0.041861
+136	35	0.24707
+137	35	0.35256
+138	35	0.1838
+139	35	0.27753
+140	35	0.22592
+141	35	0
+142	35	0
+143	35	0
+144	35	0
+145	35	0
+146	35	0
+147	35	0
+148	35	0
+149	35	0
+150	35	0
+151	35	0
+152	35	0
+153	35	0
+154	35	0
+155	35	0
+156	35	0
+157	35	0
+158	35	0
+159	35	0
+160	35	0
+161	35	0
+162	35	0
+163	35	0
+164	35	0
+165	35	0
+166	35	0
+167	35	0
+168	35	0
+169	35	0
+170	35	0
+171	35	0
+172	35	0
+173	35	0
+174	35	0
+175	35	0
+176	35	0
+177	35	0
+178	35	0
+179	35	0
+180	35	0
+181	35	0
+182	35	0
+183	35	0
+184	35	0
+185	35	0
+186	35	0
+187	35	0
+188	35	0
+189	35	0
+190	35	0
+191	35	0
+192	35	0
+193	35	0
+194	35	0
+195	35	0
+196	35	0
+197	35	0
+198	35	0
+199	35	0
+200	35	0
+201	35	0
+202	35	0
+203	35	0
+204	35	0
+205	35	0
+206	35	0
+207	35	0
+208	35	0
+209	35	0
+210	35	0
+211	35	0
+212	35	0
+213	35	0
+214	35	0
+215	35	0
+216	35	0
+217	35	0
+218	35	0
+219	35	0
+220	35	0
+221	35	0
+222	35	0
+223	35	0
+224	35	0
+225	35	0
+226	35	0
+227	35	0
+228	35	0
+229	35	0
+230	35	0
+231	35	0
+232	35	0
+233	35	0
+234	35	0
+235	35	0
+236	35	0
+237	35	0
+238	35	0
+239	35	0
+240	35	-1.5345
+241	35	-2.4081
+242	35	-1.7903
+243	35	-1.4947
+244	35	-0.9711
+245	35	-0.55896
+246	35	-0.37624
+247	35	-0.21117
+248	35	-0.070758
+249	35	-0.024919
+250	35	-0.00077693
+251	35	-0.0047574
+252	35	-0.060287
+253	35	-0.13819
+254	35	-0.24582
+255	35	-0.52392
+256	35	-0.8634
+257	35	-1.0095
+258	35	-0.97845
+259	35	-0.94297
+260	35	-0.80686
+261	35	-0.90824
+262	35	-0.87063
+263	35	-0.89889
+264	35	-0.84752
+265	35	-0.80541
+266	35	-0.70793
+267	35	-0.62835
+268	35	-0.47068
+269	35	-0.24475
+270	35	-0.14476
+271	35	-0.054298
+272	35	-0.044049
+273	35	-0.10438
+274	35	-0.16136
+275	35	-0.17729
+276	35	-0.15467
+277	35	-0.065826
+278	35	-0.02603
+279	35	-0.066456
+280	35	-0.098994
+281	35	-0.090061
+282	35	-0.024687
+283	35	0.066499
+284	35	0
+285	35	0
+286	35	0
+287	35	0
+288	35	0
+289	35	0
+290	35	0
+291	35	0
+292	35	0
+293	35	0
+294	35	0
+295	35	0
+296	35	0
+297	35	0
+298	35	0
+299	35	0
+300	35	0
+301	35	0
+302	35	0
+303	35	0
+304	35	0
+305	35	0
+306	35	0
+307	35	0
+308	35	0
+309	35	0
+310	35	0
+311	35	0
+312	35	0
+313	35	0
+314	35	0
+315	35	0
+316	35	0
+317	35	0
+318	35	0
+319	35	0
+320	35	0
+321	35	0
+322	35	0
+323	35	0
+324	35	0
+325	35	0
+326	35	0
+327	35	0
+328	35	0
+329	35	0
+330	35	0
+331	35	0
+332	35	0
+333	35	0
+334	35	0
+335	35	0
+336	35	0
+337	35	0
+338	35	0
+339	35	0
+340	35	0
+341	35	0
+342	35	0
+343	35	0
+344	35	0
+345	35	0
+346	35	0
+347	35	0
+348	35	0
+349	35	0
+350	35	0
+351	35	0
+352	35	0
+353	35	0
+354	35	2.0559
+355	35	1.9348
+356	35	1.0979
+357	35	0.45266
+358	35	0.26815
+359	35	0.13768
+360	35	0.02121
+0	35.5	0.029815
+1	35.5	-0.074738
+2	35.5	-0.14269
+3	35.5	-0.14165
+4	35.5	-0.15474
+5	35.5	-0.15971
+6	35.5	-0.18258
+7	35.5	-0.13034
+8	35.5	-0.055007
+9	35.5	0.092714
+10	35.5	0.19371
+11	35.5	0.066699
+12	35.5	0
+13	35.5	0
+14	35.5	0
+15	35.5	0
+16	35.5	0
+17	35.5	0
+18	35.5	0
+19	35.5	0
+20	35.5	0
+21	35.5	0
+22	35.5	0
+23	35.5	0
+24	35.5	0.13788
+25	35.5	0
+26	35.5	0
+27	35.5	0
+28	35.5	0
+29	35.5	0
+30	35.5	0
+31	35.5	0
+32	35.5	0
+33	35.5	-0.0052077
+34	35.5	-0.0071294
+35	35.5	0
+36	35.5	-0.49366
+37	35.5	-1.3839
+38	35.5	-1.3648
+39	35.5	-1.0973
+40	35.5	-1.0124
+41	35.5	-1.4161
+42	35.5	-1.7452
+43	35.5	-1.486
+44	35.5	-1.5282
+45	35.5	-1.6892
+46	35.5	-3.3806
+47	35.5	-4.0631
+48	35.5	-3.5636
+49	35.5	-2.8904
+50	35.5	-2.5041
+51	35.5	-3.074
+52	35.5	-2.3332
+53	35.5	-1.4517
+54	35.5	-1.1577
+55	35.5	-0.83596
+56	35.5	-0.4598
+57	35.5	-0.40317
+58	35.5	-0.47026
+59	35.5	-0.46607
+60	35.5	-0.4639
+61	35.5	-0.3631
+62	35.5	-0.42006
+63	35.5	-0.40597
+64	35.5	-0.40984
+65	35.5	-0.3312
+66	35.5	-0.15246
+67	35.5	-0.11307
+68	35.5	-0.098061
+69	35.5	-0.18945
+70	35.5	-0.5614
+71	35.5	-0.77792
+72	35.5	-0.49059
+73	35.5	0
+74	35.5	-0.53623
+75	35.5	0
+76	35.5	0
+77	35.5	0
+78	35.5	0
+79	35.5	0
+80	35.5	-0.044364
+81	35.5	0
+82	35.5	0
+83	35.5	0.3934
+84	35.5	0.708
+85	35.5	1.6646
+86	35.5	2.2576
+87	35.5	2.2175
+88	35.5	2.7716
+89	35.5	2.7125
+90	35.5	0.18432
+91	35.5	1.1494
+92	35.5	0.45774
+93	35.5	0.048604
+94	35.5	0.083805
+95	35.5	0.14634
+96	35.5	0.32266
+97	35.5	0.20567
+98	35.5	0.27825
+99	35.5	0.39568
+100	35.5	0.63867
+101	35.5	0.60624
+102	35.5	0.45627
+103	35.5	0.35154
+104	35.5	0.25769
+105	35.5	0.17304
+106	35.5	0.090349
+107	35.5	-0.032641
+108	35.5	-0.24736
+109	35.5	-0.45455
+110	35.5	-0.64952
+111	35.5	-1.0939
+112	35.5	-1.4125
+113	35.5	-1.6637
+114	35.5	-2.4953
+115	35.5	-2.5284
+116	35.5	-2.4249
+117	35.5	-2.3654
+118	35.5	-1.6014
+119	35.5	-0.98869
+120	35.5	-0.24513
+121	35.5	0
+122	35.5	0
+123	35.5	0
+124	35.5	0
+125	35.5	0
+126	35.5	0
+127	35.5	-0.39619
+128	35.5	-0.59113
+129	35.5	-0.55422
+130	35.5	-0.0074862
+131	35.5	0
+132	35.5	-0.02412
+133	35.5	-0.051333
+134	35.5	-0.0055816
+135	35.5	-0.047963
+136	35.5	4.5076e-05
+137	35.5	0.081765
+138	35.5	0.20441
+139	35.5	0.16355
+140	35.5	0.1946
+141	35.5	0
+142	35.5	0
+143	35.5	0
+144	35.5	0
+145	35.5	0
+146	35.5	0
+147	35.5	0
+148	35.5	0
+149	35.5	0
+150	35.5	0
+151	35.5	0
+152	35.5	0
+153	35.5	0
+154	35.5	0
+155	35.5	0
+156	35.5	0
+157	35.5	0
+158	35.5	0
+159	35.5	0
+160	35.5	0
+161	35.5	0
+162	35.5	0
+163	35.5	0
+164	35.5	0
+165	35.5	0
+166	35.5	0
+167	35.5	0
+168	35.5	0
+169	35.5	0
+170	35.5	0
+171	35.5	0
+172	35.5	0
+173	35.5	0
+174	35.5	0
+175	35.5	0
+176	35.5	0
+177	35.5	0
+178	35.5	0
+179	35.5	0
+180	35.5	0
+181	35.5	0
+182	35.5	0
+183	35.5	0
+184	35.5	0
+185	35.5	0
+186	35.5	0
+187	35.5	0
+188	35.5	0
+189	35.5	0
+190	35.5	0
+191	35.5	0
+192	35.5	0
+193	35.5	0
+194	35.5	0
+195	35.5	0
+196	35.5	0
+197	35.5	0
+198	35.5	0
+199	35.5	0
+200	35.5	0
+201	35.5	0
+202	35.5	0
+203	35.5	0
+204	35.5	0
+205	35.5	0
+206	35.5	0
+207	35.5	0
+208	35.5	0
+209	35.5	0
+210	35.5	0
+211	35.5	0
+212	35.5	0
+213	35.5	0
+214	35.5	0
+215	35.5	0
+216	35.5	0
+217	35.5	0
+218	35.5	0
+219	35.5	0
+220	35.5	0
+221	35.5	0
+222	35.5	0
+223	35.5	0
+224	35.5	0
+225	35.5	0
+226	35.5	0
+227	35.5	0
+228	35.5	0
+229	35.5	0
+230	35.5	0
+231	35.5	0
+232	35.5	0
+233	35.5	0
+234	35.5	0
+235	35.5	0
+236	35.5	0
+237	35.5	0
+238	35.5	0
+239	35.5	-0.35341
+240	35.5	-1.6916
+241	35.5	-2.1783
+242	35.5	-1.3085
+243	35.5	-1.1635
+244	35.5	-0.86272
+245	35.5	-0.51281
+246	35.5	-0.36671
+247	35.5	-0.22447
+248	35.5	-0.037501
+249	35.5	0.0014263
+250	35.5	0.023806
+251	35.5	0.023221
+252	35.5	-0.043372
+253	35.5	-0.13037
+254	35.5	-0.238
+255	35.5	-0.44752
+256	35.5	-0.76614
+257	35.5	-0.92788
+258	35.5	-0.93063
+259	35.5	-0.89612
+260	35.5	-0.7954
+261	35.5	-0.83881
+262	35.5	-0.8012
+263	35.5	-0.77313
+264	35.5	-0.72073
+265	35.5	-0.67161
+266	35.5	-0.57763
+267	35.5	-0.46828
+268	35.5	-0.30844
+269	35.5	-0.16094
+270	35.5	-0.035455
+271	35.5	0.045463
+272	35.5	0.020087
+273	35.5	-0.044508
+274	35.5	-0.10101
+275	35.5	-0.11442
+276	35.5	-0.10179
+277	35.5	-0.027271
+278	35.5	-0.034241
+279	35.5	-0.091321
+280	35.5	-0.12297
+281	35.5	-0.13476
+282	35.5	-0.063839
+283	35.5	0.046103
+284	35.5	0
+285	35.5	0
+286	35.5	0
+287	35.5	0
+288	35.5	0
+289	35.5	0
+290	35.5	0
+291	35.5	0
+292	35.5	0
+293	35.5	0
+294	35.5	0
+295	35.5	0
+296	35.5	0
+297	35.5	0
+298	35.5	0
+299	35.5	0
+300	35.5	0
+301	35.5	0
+302	35.5	0
+303	35.5	0
+304	35.5	0
+305	35.5	0
+306	35.5	0
+307	35.5	0
+308	35.5	0
+309	35.5	0
+310	35.5	0
+311	35.5	0
+312	35.5	0
+313	35.5	0
+314	35.5	0
+315	35.5	0
+316	35.5	0
+317	35.5	0
+318	35.5	0
+319	35.5	0
+320	35.5	0
+321	35.5	0
+322	35.5	0
+323	35.5	0
+324	35.5	0
+325	35.5	0
+326	35.5	0
+327	35.5	0
+328	35.5	0
+329	35.5	0
+330	35.5	0
+331	35.5	0
+332	35.5	0
+333	35.5	0
+334	35.5	0
+335	35.5	0
+336	35.5	0
+337	35.5	0
+338	35.5	0
+339	35.5	0
+340	35.5	0
+341	35.5	0
+342	35.5	0
+343	35.5	0
+344	35.5	0
+345	35.5	0
+346	35.5	0
+347	35.5	0
+348	35.5	0
+349	35.5	0
+350	35.5	0
+351	35.5	0
+352	35.5	0
+353	35.5	0
+354	35.5	0.97754
+355	35.5	1.1277
+356	35.5	0
+357	35.5	0.13033
+358	35.5	0.11492
+359	35.5	0.011524
+360	35.5	0.029815
+0	36	0.0057745
+1	36	-0.066425
+2	36	-0.11678
+3	36	-0.14471
+4	36	-0.16782
+5	36	-0.16968
+6	36	-0.1944
+7	36	-0.040938
+8	36	0.078821
+9	36	0.40853
+10	36	0.49511
+11	36	0.054876
+12	36	0
+13	36	0
+14	36	0
+15	36	0
+16	36	0
+17	36	0
+18	36	0
+19	36	0
+20	36	0
+21	36	0
+22	36	0
+23	36	0
+24	36	0.051344
+25	36	0
+26	36	0
+27	36	0
+28	36	0
+29	36	0
+30	36	0
+31	36	-0.038703
+32	36	0
+33	36	-0.13322
+34	36	0
+35	36	0
+36	36	-0.32897
+37	36	-1.3375
+38	36	-1.4795
+39	36	-1.3328
+40	36	-1.2692
+41	36	-1.6122
+42	36	-2.1321
+43	36	-1.9658
+44	36	-1.0382
+45	36	-1.1976
+46	36	-3.4078
+47	36	-3.9347
+48	36	-3.5659
+49	36	-3.2047
+50	36	-3.8513
+51	36	-5.2315
+52	36	-3.7796
+53	36	-2.3532
+54	36	-1.4882
+55	36	-1.1802
+56	36	-0.63809
+57	36	-0.51508
+58	36	-0.50784
+59	36	-0.43345
+60	36	-0.41961
+61	36	-0.31028
+62	36	-0.3391
+63	36	-0.32567
+64	36	-0.32954
+65	36	-0.21129
+66	36	-0.077855
+67	36	-0.10734
+68	36	-0.093289
+69	36	-0.29882
+70	36	-0.37858
+71	36	-0.19985
+72	36	-0.1041
+73	36	0
+74	36	-0.87945
+75	36	0
+76	36	0
+77	36	0
+78	36	0
+79	36	0
+80	36	-9.0413e-06
+81	36	0.005453
+82	36	0.028576
+83	36	0.44341
+84	36	0.87806
+85	36	1.7982
+86	36	2.6892
+87	36	1.4501
+88	36	2.7996
+89	36	2.7892
+90	36	1.2232
+91	36	0.35976
+92	36	0.47704
+93	36	0.00038822
+94	36	0.038551
+95	36	0.082944
+96	36	0.25729
+97	36	0.21425
+98	36	0.30285
+99	36	0.44746
+100	36	0.54385
+101	36	0.47582
+102	36	0.39857
+103	36	0.31427
+104	36	0.23008
+105	36	0.14776
+106	36	0.065051
+107	36	-0.020011
+108	36	-0.21144
+109	36	-0.44349
+110	36	-0.63846
+111	36	-1.0891
+112	36	-1.5269
+113	36	-1.7888
+114	36	-2.7418
+115	36	-2.786
+116	36	-3.1784
+117	36	-2.7801
+118	36	-1.7942
+119	36	-1.2031
+120	36	-0.46722
+121	36	0
+122	36	0
+123	36	0
+124	36	0
+125	36	0
+126	36	0
+127	36	-0.33715
+128	36	-0.59374
+129	36	-0.56824
+130	36	0
+131	36	0
+132	36	0
+133	36	-0.052499
+134	36	-0.0059857
+135	36	0.0005282
+136	36	0.0060587
+137	36	-0.45693
+138	36	-0.84107
+139	36	-0.34125
+140	36	0.15546
+141	36	0
+142	36	0
+143	36	0
+144	36	0
+145	36	0
+146	36	0
+147	36	0
+148	36	0
+149	36	0
+150	36	0
+151	36	0
+152	36	0
+153	36	0
+154	36	0
+155	36	0
+156	36	0
+157	36	0
+158	36	0
+159	36	0
+160	36	0
+161	36	0
+162	36	0
+163	36	0
+164	36	0
+165	36	0
+166	36	0
+167	36	0
+168	36	0
+169	36	0
+170	36	0
+171	36	0
+172	36	0
+173	36	0
+174	36	0
+175	36	0
+176	36	0
+177	36	0
+178	36	0
+179	36	0
+180	36	0
+181	36	0
+182	36	0
+183	36	0
+184	36	0
+185	36	0
+186	36	0
+187	36	0
+188	36	0
+189	36	0
+190	36	0
+191	36	0
+192	36	0
+193	36	0
+194	36	0
+195	36	0
+196	36	0
+197	36	0
+198	36	0
+199	36	0
+200	36	0
+201	36	0
+202	36	0
+203	36	0
+204	36	0
+205	36	0
+206	36	0
+207	36	0
+208	36	0
+209	36	0
+210	36	0
+211	36	0
+212	36	0
+213	36	0
+214	36	0
+215	36	0
+216	36	0
+217	36	0
+218	36	0
+219	36	0
+220	36	0
+221	36	0
+222	36	0
+223	36	0
+224	36	0
+225	36	0
+226	36	0
+227	36	0
+228	36	0
+229	36	0
+230	36	0
+231	36	0
+232	36	0
+233	36	0
+234	36	0
+235	36	0
+236	36	0
+237	36	0
+238	36	0
+239	36	-0.9974
+240	36	-2.0188
+241	36	-2.0058
+242	36	-1.2281
+243	36	-0.8658
+244	36	-0.75776
+245	36	-0.48011
+246	36	-0.33592
+247	36	-0.17869
+248	36	-0.0042955
+249	36	0.027772
+250	36	0.048388
+251	36	0.051199
+252	36	-0.026458
+253	36	-0.12255
+254	36	-0.23018
+255	36	-0.37111
+256	36	-0.65214
+257	36	-0.81596
+258	36	-0.88282
+259	36	-0.84927
+260	36	-0.78393
+261	36	-0.76937
+262	36	-0.73176
+263	36	-0.64737
+264	36	-0.59395
+265	36	-0.5378
+266	36	-0.44732
+267	36	-0.30604
+268	36	-0.14619
+269	36	-0.077124
+270	36	0.073848
+271	36	0.14503
+272	36	0.083462
+273	36	0.015366
+274	36	-0.038427
+275	36	-0.058381
+276	36	-0.048916
+277	36	-0.0023975
+278	36	-0.046171
+279	36	-0.10954
+280	36	-0.14701
+281	36	-0.20117
+282	36	-0.1317
+283	36	0.051533
+284	36	0.04461
+285	36	0
+286	36	0
+287	36	0
+288	36	0
+289	36	0
+290	36	0
+291	36	0
+292	36	0
+293	36	0
+294	36	0
+295	36	0
+296	36	0
+297	36	0
+298	36	0
+299	36	0
+300	36	0
+301	36	0
+302	36	0
+303	36	0
+304	36	0
+305	36	0
+306	36	0
+307	36	0
+308	36	0
+309	36	0
+310	36	0
+311	36	0
+312	36	0
+313	36	0
+314	36	0
+315	36	0
+316	36	0
+317	36	0
+318	36	0
+319	36	0
+320	36	0
+321	36	0
+322	36	0
+323	36	0
+324	36	0
+325	36	0
+326	36	0
+327	36	0
+328	36	0
+329	36	0
+330	36	0
+331	36	0
+332	36	0
+333	36	0
+334	36	0
+335	36	0
+336	36	0
+337	36	0
+338	36	0
+339	36	0
+340	36	0
+341	36	0
+342	36	0
+343	36	0
+344	36	0
+345	36	0
+346	36	0
+347	36	0
+348	36	0
+349	36	0
+350	36	0
+351	36	0
+352	36	0
+353	36	0
+354	36	0.005498
+355	36	0.28115
+356	36	0
+357	36	0
+358	36	0
+359	36	0
+360	36	0.0057745
+0	36.5	0
+1	36.5	-0.033207
+2	36.5	-0.052093
+3	36.5	-0.10415
+4	36.5	-0.11985
+5	36.5	-0.16176
+6	36.5	-0.11017
+7	36.5	-0.015268
+8	36.5	-0.0085916
+9	36.5	0.80812
+10	36.5	0.56661
+11	36.5	0
+12	36.5	0
+13	36.5	0
+14	36.5	0.037295
+15	36.5	0
+16	36.5	0
+17	36.5	0
+18	36.5	0
+19	36.5	0
+20	36.5	0
+21	36.5	0
+22	36.5	0
+23	36.5	0
+24	36.5	0
+25	36.5	0
+26	36.5	0
+27	36.5	0
+28	36.5	0
+29	36.5	0
+30	36.5	-0.57288
+31	36.5	-0.13775
+32	36.5	-0.16611
+33	36.5	-0.22825
+34	36.5	-0.058413
+35	36.5	-0.084609
+36	36.5	-0.2914
+37	36.5	-1.2092
+38	36.5	-1.5908
+39	36.5	-1.5139
+40	36.5	-1.477
+41	36.5	-1.6905
+42	36.5	-2.489
+43	36.5	-2.4457
+44	36.5	-1.1972
+45	36.5	-0.7076
+46	36.5	-2.7434
+47	36.5	-3.642
+48	36.5	-3.5575
+49	36.5	-3.4309
+50	36.5	-4.9079
+51	36.5	-3.7236
+52	36.5	-4.9338
+53	36.5	-2.5507
+54	36.5	-0.7598
+55	36.5	-1.7946
+56	36.5	-0.97181
+57	36.5	-0.65176
+58	36.5	-0.53764
+59	36.5	-0.36893
+60	36.5	-0.34149
+61	36.5	-0.25745
+62	36.5	-0.25815
+63	36.5	-0.24536
+64	36.5	-0.22497
+65	36.5	-0.091379
+66	36.5	-0.065343
+67	36.5	-0.10094
+68	36.5	-0.088517
+69	36.5	-0.26684
+70	36.5	-0.23137
+71	36.5	-0.45124
+72	36.5	0
+73	36.5	0
+74	36.5	0
+75	36.5	0
+76	36.5	0
+77	36.5	0
+78	36.5	0
+79	36.5	-0.012107
+80	36.5	-0.00047083
+81	36.5	0.01347
+82	36.5	0.075649
+83	36.5	0.35209
+84	36.5	0.7195
+85	36.5	1.5887
+86	36.5	2.584
+87	36.5	1.1392
+88	36.5	1.4826
+89	36.5	2.5671
+90	36.5	1.3838
+91	36.5	0.27469
+92	36.5	0.44247
+93	36.5	0.017812
+94	36.5	0.01882
+95	36.5	0.048966
+96	36.5	0.17988
+97	36.5	0.19685
+98	36.5	0.286
+99	36.5	0.35683
+100	36.5	0.41639
+101	36.5	0.34619
+102	36.5	0.26812
+103	36.5	0.2363
+104	36.5	0.20481
+105	36.5	0.12249
+106	36.5	0.039753
+107	36.5	-0.045309
+108	36.5	-0.17553
+109	36.5	-0.40933
+110	36.5	-0.6274
+111	36.5	-1.0842
+112	36.5	-1.5499
+113	36.5	-1.9132
+114	36.5	-2.5524
+115	36.5	-2.5669
+116	36.5	-3.0817
+117	36.5	-2.9583
+118	36.5	-1.9182
+119	36.5	-1.3115
+120	36.5	-0.67203
+121	36.5	-0.12945
+122	36.5	0
+123	36.5	0
+124	36.5	0
+125	36.5	0
+126	36.5	0
+127	36.5	-0.26027
+128	36.5	-0.5068
+129	36.5	-0.5156
+130	36.5	0
+131	36.5	0
+132	36.5	0
+133	36.5	0
+134	36.5	0
+135	36.5	0
+136	36.5	0
+137	36.5	-0.18646
+138	36.5	-2.5
+139	36.5	-1.2918
+140	36.5	-0.2357
+141	36.5	0
+142	36.5	0
+143	36.5	0
+144	36.5	0
+145	36.5	0
+146	36.5	0
+147	36.5	0
+148	36.5	0
+149	36.5	0
+150	36.5	0
+151	36.5	0
+152	36.5	0
+153	36.5	0
+154	36.5	0
+155	36.5	0
+156	36.5	0
+157	36.5	0
+158	36.5	0
+159	36.5	0
+160	36.5	0
+161	36.5	0
+162	36.5	0
+163	36.5	0
+164	36.5	0
+165	36.5	0
+166	36.5	0
+167	36.5	0
+168	36.5	0
+169	36.5	0
+170	36.5	0
+171	36.5	0
+172	36.5	0
+173	36.5	0
+174	36.5	0
+175	36.5	0
+176	36.5	0
+177	36.5	0
+178	36.5	0
+179	36.5	0
+180	36.5	0
+181	36.5	0
+182	36.5	0
+183	36.5	0
+184	36.5	0
+185	36.5	0
+186	36.5	0
+187	36.5	0
+188	36.5	0
+189	36.5	0
+190	36.5	0
+191	36.5	0
+192	36.5	0
+193	36.5	0
+194	36.5	0
+195	36.5	0
+196	36.5	0
+197	36.5	0
+198	36.5	0
+199	36.5	0
+200	36.5	0
+201	36.5	0
+202	36.5	0
+203	36.5	0
+204	36.5	0
+205	36.5	0
+206	36.5	0
+207	36.5	0
+208	36.5	0
+209	36.5	0
+210	36.5	0
+211	36.5	0
+212	36.5	0
+213	36.5	0
+214	36.5	0
+215	36.5	0
+216	36.5	0
+217	36.5	0
+218	36.5	0
+219	36.5	0
+220	36.5	0
+221	36.5	0
+222	36.5	0
+223	36.5	0
+224	36.5	0
+225	36.5	0
+226	36.5	0
+227	36.5	0
+228	36.5	0
+229	36.5	0
+230	36.5	0
+231	36.5	0
+232	36.5	0
+233	36.5	0
+234	36.5	0
+235	36.5	0
+236	36.5	0
+237	36.5	0
+238	36.5	0
+239	36.5	-0.90086
+240	36.5	-2.2405
+241	36.5	-2.0089
+242	36.5	-1.1841
+243	36.5	-0.65023
+244	36.5	-0.5801
+245	36.5	-0.4474
+246	36.5	-0.29884
+247	36.5	-0.13167
+248	36.5	0.028661
+249	36.5	0.054117
+250	36.5	0.074166
+251	36.5	0.079177
+252	36.5	-0.0095442
+253	36.5	-0.1093
+254	36.5	-0.22236
+255	36.5	-0.32999
+256	36.5	-0.53814
+257	36.5	-0.70405
+258	36.5	-0.835
+259	36.5	-0.80242
+260	36.5	-0.7134
+261	36.5	-0.66928
+262	36.5	-0.62341
+263	36.5	-0.5216
+264	36.5	-0.46708
+265	36.5	-0.404
+266	36.5	-0.32371
+267	36.5	-0.18522
+268	36.5	-0.032667
+269	36.5	0.0066916
+270	36.5	0.174
+271	36.5	0.2446
+272	36.5	0.1407
+273	36.5	0.07524
+274	36.5	0.026568
+275	36.5	-0.015631
+276	36.5	0.00059959
+277	36.5	0.0056834
+278	36.5	-0.040608
+279	36.5	-0.10546
+280	36.5	-0.17834
+281	36.5	-0.22291
+282	36.5	-0.19957
+283	36.5	0.059961
+284	36.5	0.057047
+285	36.5	0
+286	36.5	0
+287	36.5	0
+288	36.5	0
+289	36.5	0
+290	36.5	0
+291	36.5	0
+292	36.5	0
+293	36.5	0
+294	36.5	0
+295	36.5	0
+296	36.5	0
+297	36.5	0
+298	36.5	0
+299	36.5	0
+300	36.5	0
+301	36.5	0
+302	36.5	0
+303	36.5	0
+304	36.5	0
+305	36.5	0
+306	36.5	0
+307	36.5	0
+308	36.5	0
+309	36.5	0
+310	36.5	0
+311	36.5	0
+312	36.5	0
+313	36.5	0
+314	36.5	0
+315	36.5	0
+316	36.5	0
+317	36.5	0
+318	36.5	0
+319	36.5	0
+320	36.5	0
+321	36.5	0
+322	36.5	0
+323	36.5	0
+324	36.5	0
+325	36.5	0
+326	36.5	0
+327	36.5	0
+328	36.5	0
+329	36.5	0
+330	36.5	0
+331	36.5	0
+332	36.5	0
+333	36.5	0
+334	36.5	0
+335	36.5	0
+336	36.5	0
+337	36.5	0
+338	36.5	0
+339	36.5	0
+340	36.5	0
+341	36.5	0
+342	36.5	0
+343	36.5	0
+344	36.5	0
+345	36.5	0
+346	36.5	0
+347	36.5	0
+348	36.5	0
+349	36.5	0
+350	36.5	0
+351	36.5	0
+352	36.5	0
+353	36.5	0
+354	36.5	0.7242
+355	36.5	0.4551
+356	36.5	0.020461
+357	36.5	0.1177
+358	36.5	0
+359	36.5	0
+360	36.5	0
+0	37	0
+1	37	0
+2	37	0
+3	37	-0.025678
+4	37	-0.052773
+5	37	-0.06098
+6	37	0.0053707
+7	37	-0.040254
+8	37	0.10431
+9	37	0.52912
+10	37	0.54416
+11	37	0
+12	37	0
+13	37	0
+14	37	0.16369
+15	37	0.087378
+16	37	0
+17	37	0
+18	37	0
+19	37	0
+20	37	0
+21	37	0
+22	37	0.049982
+23	37	0.061194
+24	37	0
+25	37	0.0046306
+26	37	0.00027315
+27	37	0
+28	37	-0.25235
+29	37	-0.2597
+30	37	-0.74914
+31	37	-0.41828
+32	37	-0.35481
+33	37	-0.22329
+34	37	-0.12381
+35	37	-0.22639
+36	37	-0.31548
+37	37	-0.954
+38	37	-1.4437
+39	37	-1.4921
+40	37	-1.6208
+41	37	-1.9225
+42	37	-2.5674
+43	37	-2.9255
+44	37	-1.8146
+45	37	-0.28357
+46	37	-2.0225
+47	37	-3.1193
+48	37	-3.5982
+49	37	-3.333
+50	37	-3.101
+51	37	0
+52	37	-3.0135
+53	37	-0.83238
+54	37	-0.93243
+55	37	-2.0812
+56	37	-1.3779
+57	37	-0.99621
+58	37	-0.56744
+59	37	-0.30442
+60	37	-0.26337
+61	37	-0.19452
+62	37	-0.17719
+63	37	-0.16506
+64	37	-0.10913
+65	37	-0.040098
+66	37	-0.05283
+67	37	-0.094531
+68	37	-0.12917
+69	37	-0.27289
+70	37	-0.49816
+71	37	-0.64105
+72	37	0
+73	37	0
+74	37	0
+75	37	0
+76	37	0
+77	37	-0.017723
+78	37	-0.032203
+79	37	-0.015542
+80	37	-0.0008365
+81	37	0.011935
+82	37	0.045702
+83	37	0.18433
+84	37	0.47961
+85	37	1.3791
+86	37	2.3538
+87	37	2.2117
+88	37	2.298
+89	37	1.7806
+90	37	1.1431
+91	37	0.50293
+92	37	0.31007
+93	37	0.035697
+94	37	0.00968
+95	37	0.014989
+96	37	0.10247
+97	37	0.14406
+98	37	0.23289
+99	37	0.26202
+100	37	0.28698
+101	37	0.21656
+102	37	0.13767
+103	37	0.15273
+104	37	0.17953
+105	37	0.097211
+106	37	0.014454
+107	37	-0.070607
+108	37	-0.15567
+109	37	-0.37237
+110	37	-0.61123
+111	37	-1.0563
+112	37	-1.4428
+113	37	-1.8184
+114	37	-2.2839
+115	37	-2.2503
+116	37	-2.7714
+117	37	-3.0419
+118	37	-1.8767
+119	37	-1.2614
+120	37	-0.56924
+121	37	-0.24833
+122	37	0
+123	37	0
+124	37	0
+125	37	0
+126	37	0
+127	37	-0.17986
+128	37	-0.39879
+129	37	-0.43125
+130	37	0
+131	37	0
+132	37	0
+133	37	0
+134	37	0
+135	37	0
+136	37	0
+137	37	-0.089322
+138	37	-4.0997
+139	37	-2.673
+140	37	-0.91733
+141	37	0
+142	37	0
+143	37	0
+144	37	0
+145	37	0
+146	37	0
+147	37	0
+148	37	0
+149	37	0
+150	37	0
+151	37	0
+152	37	0
+153	37	0
+154	37	0
+155	37	0
+156	37	0
+157	37	0
+158	37	0
+159	37	0
+160	37	0
+161	37	0
+162	37	0
+163	37	0
+164	37	0
+165	37	0
+166	37	0
+167	37	0
+168	37	0
+169	37	0
+170	37	0
+171	37	0
+172	37	0
+173	37	0
+174	37	0
+175	37	0
+176	37	0
+177	37	0
+178	37	0
+179	37	0
+180	37	0
+181	37	0
+182	37	0
+183	37	0
+184	37	0
+185	37	0
+186	37	0
+187	37	0
+188	37	0
+189	37	0
+190	37	0
+191	37	0
+192	37	0
+193	37	0
+194	37	0
+195	37	0
+196	37	0
+197	37	0
+198	37	0
+199	37	0
+200	37	0
+201	37	0
+202	37	0
+203	37	0
+204	37	0
+205	37	0
+206	37	0
+207	37	0
+208	37	0
+209	37	0
+210	37	0
+211	37	0
+212	37	0
+213	37	0
+214	37	0
+215	37	0
+216	37	0
+217	37	0
+218	37	0
+219	37	0
+220	37	0
+221	37	0
+222	37	0
+223	37	0
+224	37	0
+225	37	0
+226	37	0
+227	37	0
+228	37	0
+229	37	0
+230	37	0
+231	37	0
+232	37	0
+233	37	0
+234	37	0
+235	37	0
+236	37	0
+237	37	0
+238	37	-0.26416
+239	37	-0.384
+240	37	-2.2561
+241	37	-1.9971
+242	37	-1.1355
+243	37	-0.55642
+244	37	-0.5074
+245	37	-0.41659
+246	37	-0.25077
+247	37	-0.086038
+248	37	0.064654
+249	37	0.080463
+250	37	0.10051
+251	37	0.10715
+252	37	0.014614
+253	37	-0.046011
+254	37	-0.16502
+255	37	-0.28403
+256	37	-0.42414
+257	37	-0.59213
+258	37	-0.72772
+259	37	-0.75557
+260	37	-0.6083
+261	37	-0.5519
+262	37	-0.4924
+263	37	-0.39584
+264	37	-0.33328
+265	37	-0.27019
+266	37	-0.22545
+267	37	-0.094553
+268	37	0.035842
+269	37	0.090507
+270	37	0.25696
+271	37	0.34417
+272	37	0.19332
+273	37	0.12935
+274	37	0.082327
+275	37	0.038589
+276	37	0.040908
+277	37	0.021923
+278	37	-0.034793
+279	37	-0.10139
+280	37	-0.17201
+281	37	-0.21128
+282	37	-0.1962
+283	37	0.013916
+284	37	0.016155
+285	37	0
+286	37	0
+287	37	0
+288	37	0
+289	37	0
+290	37	0
+291	37	0
+292	37	0
+293	37	0
+294	37	0
+295	37	0
+296	37	0
+297	37	0
+298	37	0
+299	37	0
+300	37	0
+301	37	0
+302	37	0
+303	37	0
+304	37	0
+305	37	0
+306	37	0
+307	37	0
+308	37	0
+309	37	0
+310	37	0
+311	37	0
+312	37	0
+313	37	0
+314	37	0
+315	37	0
+316	37	0
+317	37	0
+318	37	0
+319	37	0
+320	37	0
+321	37	0
+322	37	0
+323	37	0
+324	37	0
+325	37	0
+326	37	0
+327	37	0
+328	37	0
+329	37	0
+330	37	0
+331	37	0
+332	37	0
+333	37	0
+334	37	0
+335	37	0
+336	37	0
+337	37	0
+338	37	0
+339	37	0
+340	37	0
+341	37	0
+342	37	0
+343	37	0
+344	37	0
+345	37	0
+346	37	0
+347	37	0
+348	37	0
+349	37	0
+350	37	0
+351	37	0
+352	37	0.41883
+353	37	0.30207
+354	37	1.0566
+355	37	0.93681
+356	37	0.26841
+357	37	0.21384
+358	37	0.061793
+359	37	0.010184
+360	37	0
+0	37.5	0
+1	37.5	0
+2	37.5	0
+3	37.5	0
+4	37.5	-0.012246
+5	37.5	0
+6	37.5	0
+7	37.5	0
+8	37.5	0.041369
+9	37.5	0.090848
+10	37.5	0.1521
+11	37.5	0
+12	37.5	0
+13	37.5	0
+14	37.5	0.23164
+15	37.5	0.21113
+16	37.5	0.12595
+17	37.5	0
+18	37.5	0
+19	37.5	0
+20	37.5	0
+21	37.5	0
+22	37.5	0.4805
+23	37.5	0.18496
+24	37.5	0.018139
+25	37.5	0.011334
+26	37.5	0.000621
+27	37.5	-0.0029733
+28	37.5	-0.52066
+29	37.5	-0.60852
+30	37.5	-0.79472
+31	37.5	-0.60522
+32	37.5	-0.2602
+33	37.5	-0.1537
+34	37.5	-0.033248
+35	37.5	-0.16367
+36	37.5	-0.36073
+37	37.5	-0.76878
+38	37.5	-1.2177
+39	37.5	-1.4486
+40	37.5	-1.6936
+41	37.5	-2.0844
+42	37.5	-2.6457
+43	37.5	-2.8854
+44	37.5	-2.432
+45	37.5	-0.87394
+46	37.5	-1.3016
+47	37.5	-2.557
+48	37.5	-3.5019
+49	37.5	-2.2849
+50	37.5	-1.2206
+51	37.5	0
+52	37.5	0
+53	37.5	0
+54	37.5	-1.5235
+55	37.5	-1.96
+56	37.5	-1.7697
+57	37.5	-1.2096
+58	37.5	-0.59724
+59	37.5	-0.2399
+60	37.5	-0.18526
+61	37.5	-0.11822
+62	37.5	-0.096237
+63	37.5	-0.084763
+64	37.5	-0.017508
+65	37.5	-0.027558
+66	37.5	-0.040317
+67	37.5	-0.088125
+68	37.5	-0.20154
+69	37.5	-0.3334
+70	37.5	-0.49523
+71	37.5	-0.19982
+72	37.5	-0.45561
+73	37.5	0
+74	37.5	-0.23784
+75	37.5	0
+76	37.5	-0.16543
+77	37.5	-0.13937
+78	37.5	-0.046588
+79	37.5	-0.018031
+80	37.5	-0.0014964
+81	37.5	0.0038532
+82	37.5	0.020334
+83	37.5	0.18283
+84	37.5	0.23973
+85	37.5	1.0922
+86	37.5	1.6561
+87	37.5	2.2411
+88	37.5	0
+89	37.5	0.97458
+90	37.5	0.59742
+91	37.5	0.4955
+92	37.5	0.18785
+93	37.5	0.050166
+94	37.5	0.0071769
+95	37.5	0.0029564
+96	37.5	0.025054
+97	37.5	0.088708
+98	37.5	0.16571
+99	37.5	0.17652
+100	37.5	0.15756
+101	37.5	0.086925
+102	37.5	0.0077673
+103	37.5	0.069155
+104	37.5	0.14301
+105	37.5	0.071936
+106	37.5	-0.010844
+107	37.5	-0.095905
+108	37.5	-0.17496
+109	37.5	-0.35427
+110	37.5	-0.58948
+111	37.5	-1.0118
+112	37.5	-1.446
+113	37.5	-1.7226
+114	37.5	-2.0153
+115	37.5	-1.8939
+116	37.5	-2.4597
+117	37.5	-2.9081
+118	37.5	-1.857
+119	37.5	-0.98109
+120	37.5	-0.088613
+121	37.5	-0.2946
+122	37.5	0
+123	37.5	0
+124	37.5	0
+125	37.5	0
+126	37.5	0.0020963
+127	37.5	-0.099394
+128	37.5	-0.22699
+129	37.5	-0.26091
+130	37.5	0
+131	37.5	0
+132	37.5	0
+133	37.5	0
+134	37.5	0
+135	37.5	0
+136	37.5	0
+137	37.5	-0.19006
+138	37.5	-0.91986
+139	37.5	-3.8101
+140	37.5	-1.9651
+141	37.5	-0.070239
+142	37.5	0
+143	37.5	0
+144	37.5	0
+145	37.5	0
+146	37.5	0
+147	37.5	0
+148	37.5	0
+149	37.5	0
+150	37.5	0
+151	37.5	0
+152	37.5	0
+153	37.5	0
+154	37.5	0
+155	37.5	0
+156	37.5	0
+157	37.5	0
+158	37.5	0
+159	37.5	0
+160	37.5	0
+161	37.5	0
+162	37.5	0
+163	37.5	0
+164	37.5	0
+165	37.5	0
+166	37.5	0
+167	37.5	0
+168	37.5	0
+169	37.5	0
+170	37.5	0
+171	37.5	0
+172	37.5	0
+173	37.5	0
+174	37.5	0
+175	37.5	0
+176	37.5	0
+177	37.5	0
+178	37.5	0
+179	37.5	0
+180	37.5	0
+181	37.5	0
+182	37.5	0
+183	37.5	0
+184	37.5	0
+185	37.5	0
+186	37.5	0
+187	37.5	0
+188	37.5	0
+189	37.5	0
+190	37.5	0
+191	37.5	0
+192	37.5	0
+193	37.5	0
+194	37.5	0
+195	37.5	0
+196	37.5	0
+197	37.5	0
+198	37.5	0
+199	37.5	0
+200	37.5	0
+201	37.5	0
+202	37.5	0
+203	37.5	0
+204	37.5	0
+205	37.5	0
+206	37.5	0
+207	37.5	0
+208	37.5	0
+209	37.5	0
+210	37.5	0
+211	37.5	0
+212	37.5	0
+213	37.5	0
+214	37.5	0
+215	37.5	0
+216	37.5	0
+217	37.5	0
+218	37.5	0
+219	37.5	0
+220	37.5	0
+221	37.5	0
+222	37.5	0
+223	37.5	0
+224	37.5	0
+225	37.5	0
+226	37.5	0
+227	37.5	0
+228	37.5	0
+229	37.5	0
+230	37.5	0
+231	37.5	0
+232	37.5	0
+233	37.5	0
+234	37.5	0
+235	37.5	0
+236	37.5	0
+237	37.5	0
+238	37.5	-0.74999
+239	37.5	-0.94898
+240	37.5	-2.2853
+241	37.5	-1.8198
+242	37.5	-0.91355
+243	37.5	-0.4546
+244	37.5	-0.43469
+245	37.5	-0.35841
+246	37.5	-0.20271
+247	37.5	-0.040404
+248	37.5	0.11344
+249	37.5	0.12963
+250	37.5	0.12686
+251	37.5	0.12501
+252	37.5	0.057907
+253	37.5	0.01728
+254	37.5	-0.10173
+255	37.5	-0.21926
+256	37.5	-0.31015
+257	37.5	-0.48021
+258	37.5	-0.6158
+259	37.5	-0.70834
+260	37.5	-0.5032
+261	37.5	-0.43452
+262	37.5	-0.36139
+263	37.5	-0.26863
+264	37.5	-0.19947
+265	37.5	-0.13638
+266	37.5	-0.12719
+267	37.5	-0.0038827
+268	37.5	0.10435
+269	37.5	0.17387
+270	37.5	0.33958
+271	37.5	0.40974
+272	37.5	0.24594
+273	37.5	0.1941
+274	37.5	0.13809
+275	37.5	0.09281
+276	37.5	0.081217
+277	37.5	0.038163
+278	37.5	-0.028332
+279	37.5	-0.097313
+280	37.5	-0.16081
+281	37.5	-0.19965
+282	37.5	-0.16736
+283	37.5	-0.020827
+284	37.5	0
+285	37.5	0
+286	37.5	0
+287	37.5	0
+288	37.5	0
+289	37.5	0
+290	37.5	0
+291	37.5	0
+292	37.5	0
+293	37.5	0
+294	37.5	0
+295	37.5	0
+296	37.5	0
+297	37.5	0
+298	37.5	0
+299	37.5	0
+300	37.5	0
+301	37.5	0
+302	37.5	0
+303	37.5	0
+304	37.5	0
+305	37.5	0
+306	37.5	0
+307	37.5	0
+308	37.5	0
+309	37.5	0
+310	37.5	0
+311	37.5	0
+312	37.5	0
+313	37.5	0
+314	37.5	0
+315	37.5	0
+316	37.5	0
+317	37.5	0
+318	37.5	0
+319	37.5	0
+320	37.5	0
+321	37.5	0
+322	37.5	0
+323	37.5	0
+324	37.5	0
+325	37.5	0
+326	37.5	0
+327	37.5	0
+328	37.5	0
+329	37.5	0
+330	37.5	0
+331	37.5	0
+332	37.5	0
+333	37.5	0
+334	37.5	0
+335	37.5	0
+336	37.5	0
+337	37.5	0
+338	37.5	0
+339	37.5	0
+340	37.5	0
+341	37.5	0
+342	37.5	0
+343	37.5	0
+344	37.5	0
+345	37.5	0
+346	37.5	0
+347	37.5	0
+348	37.5	0
+349	37.5	0
+350	37.5	0
+351	37.5	0
+352	37.5	0.85041
+353	37.5	0.92724
+354	37.5	1.1757
+355	37.5	1.0015
+356	37.5	0.53823
+357	37.5	0.26486
+358	37.5	0.099152
+359	37.5	0.06157
+360	37.5	0
+0	38	7.984e-05
+1	38	0
+2	38	0
+3	38	0
+4	38	0
+5	38	0
+6	38	0
+7	38	0
+8	38	0
+9	38	0
+10	38	0
+11	38	0
+12	38	0
+13	38	0
+14	38	0.12256
+15	38	0.098961
+16	38	0.28803
+17	38	0
+18	38	0
+19	38	0
+20	38	0
+21	38	0
+22	38	0.33971
+23	38	0.29849
+24	38	0.069364
+25	38	0.0062861
+26	38	0.0034211
+27	38	-0.032149
+28	38	-0.45581
+29	38	-0.59917
+30	38	-0.65841
+31	38	-0.41937
+32	38	-0.11066
+33	38	-0.073955
+34	38	0.050322
+35	38	-0.0095723
+36	38	-0.22403
+37	38	-0.61348
+38	38	-0.99978
+39	38	-1.3138
+40	38	-1.6175
+41	38	-2.0495
+42	38	-2.4582
+43	38	-2.5821
+44	38	-2.4692
+45	38	-1.2362
+46	38	-0.92712
+47	38	-2.1139
+48	38	-3.1758
+49	38	-0.23983
+50	38	0
+51	38	0
+52	38	0
+53	38	0
+54	38	-1.8385
+55	38	-1.8817
+56	38	-1.5579
+57	38	-1.0504
+58	38	-0.62704
+59	38	-0.19102
+60	38	-0.12185
+61	38	-0.098927
+62	38	-0.042377
+63	38	-0.0017033
+64	38	0.0024415
+65	38	-0.014885
+66	38	-0.027789
+67	38	-0.082347
+68	38	-0.27295
+69	38	-0.38257
+70	38	-0.40415
+71	38	0
+72	38	-0.18325
+73	38	0
+74	38	-0.47189
+75	38	-0.056458
+76	38	-0.13555
+77	38	-0.087013
+78	38	-0.031913
+79	38	-0.025658
+80	38	-0.0078195
+81	38	-0.0083351
+82	38	0.0057823
+83	38	0.12125
+84	38	0.12428
+85	38	0.47629
+86	38	0.81772
+87	38	1.1862
+88	38	0.71119
+89	38	0.42812
+90	38	0.28185
+91	38	0.16855
+92	38	0.09369
+93	38	0.037053
+94	38	0.010025
+95	38	-0.0046902
+96	38	0.0019521
+97	38	0.044414
+98	38	0.095932
+99	38	0.097921
+100	38	0.034433
+101	38	-0.022709
+102	38	-0.065601
+103	38	-0.014419
+104	38	0.070306
+105	38	0.046661
+106	38	-0.036142
+107	38	-0.1212
+108	38	-0.15689
+109	38	-0.34809
+110	38	-0.5833
+111	38	-0.98367
+112	38	-1.4491
+113	38	-1.6267
+114	38	-1.7492
+115	38	-1.6086
+116	38	-2.1128
+117	38	-2.4979
+118	38	-1.3389
+119	38	-0.43047
+120	38	0
+121	38	-0.20154
+122	38	0
+123	38	0
+124	38	0
+125	38	-0.005321
+126	38	0.0017601
+127	38	-0.016734
+128	38	-0.083256
+129	38	-0.055452
+130	38	0
+131	38	0
+132	38	0
+133	38	0
+134	38	0
+135	38	0
+136	38	0
+137	38	-0.042137
+138	38	0
+139	38	-1.3564
+140	38	-3.4036
+141	38	-0.15037
+142	38	0
+143	38	0
+144	38	0
+145	38	0
+146	38	0
+147	38	0
+148	38	0
+149	38	0
+150	38	0
+151	38	0
+152	38	0
+153	38	0
+154	38	0
+155	38	0
+156	38	0
+157	38	0
+158	38	0
+159	38	0
+160	38	0
+161	38	0
+162	38	0
+163	38	0
+164	38	0
+165	38	0
+166	38	0
+167	38	0
+168	38	0
+169	38	0
+170	38	0
+171	38	0
+172	38	0
+173	38	0
+174	38	0
+175	38	0
+176	38	0
+177	38	0
+178	38	0
+179	38	0
+180	38	0
+181	38	0
+182	38	0
+183	38	0
+184	38	0
+185	38	0
+186	38	0
+187	38	0
+188	38	0
+189	38	0
+190	38	0
+191	38	0
+192	38	0
+193	38	0
+194	38	0
+195	38	0
+196	38	0
+197	38	0
+198	38	0
+199	38	0
+200	38	0
+201	38	0
+202	38	0
+203	38	0
+204	38	0
+205	38	0
+206	38	0
+207	38	0
+208	38	0
+209	38	0
+210	38	0
+211	38	0
+212	38	0
+213	38	0
+214	38	0
+215	38	0
+216	38	0
+217	38	0
+218	38	0
+219	38	0
+220	38	0
+221	38	0
+222	38	0
+223	38	0
+224	38	0
+225	38	0
+226	38	0
+227	38	0
+228	38	0
+229	38	0
+230	38	0
+231	38	0
+232	38	0
+233	38	0
+234	38	0
+235	38	0
+236	38	0
+237	38	-0.0043294
+238	38	-0.81504
+239	38	-1.7968
+240	38	-2.0979
+241	38	-1.6264
+242	38	-0.71096
+243	38	-0.35952
+244	38	-0.36198
+245	38	-0.28763
+246	38	-0.13564
+247	38	0.00017075
+248	38	0.16223
+249	38	0.19955
+250	38	0.19189
+251	38	0.16161
+252	38	0.10166
+253	38	0.080571
+254	38	-0.038439
+255	38	-0.15368
+256	38	-0.2415
+257	38	-0.3683
+258	38	-0.50389
+259	38	-0.63346
+260	38	-0.3981
+261	38	-0.31713
+262	38	-0.23038
+263	38	-0.13779
+264	38	-0.072762
+265	38	-0.011687
+266	38	-0.028938
+267	38	0.086788
+268	38	0.17286
+269	38	0.24062
+270	38	0.34515
+271	38	0.43317
+272	38	0.29856
+273	38	0.26634
+274	38	0.19787
+275	38	0.14703
+276	38	0.12153
+277	38	0.049858
+278	38	-0.021871
+279	38	-0.08844
+280	38	-0.14564
+281	38	-0.18214
+282	38	-0.13862
+283	38	0.013607
+284	38	0
+285	38	0
+286	38	0
+287	38	0
+288	38	0
+289	38	0
+290	38	0
+291	38	0
+292	38	0
+293	38	0
+294	38	0
+295	38	0
+296	38	0
+297	38	0
+298	38	0
+299	38	0
+300	38	0
+301	38	0
+302	38	0
+303	38	0
+304	38	0
+305	38	0
+306	38	0
+307	38	0
+308	38	0
+309	38	0
+310	38	0
+311	38	0
+312	38	0
+313	38	0
+314	38	0
+315	38	0
+316	38	0
+317	38	0
+318	38	0
+319	38	0
+320	38	0
+321	38	0
+322	38	0
+323	38	0
+324	38	0
+325	38	0
+326	38	0
+327	38	0
+328	38	0
+329	38	0
+330	38	0
+331	38	0
+332	38	0
+333	38	0
+334	38	0
+335	38	0
+336	38	0
+337	38	0
+338	38	0
+339	38	0
+340	38	0
+341	38	0
+342	38	0
+343	38	0
+344	38	0
+345	38	0
+346	38	0
+347	38	0
+348	38	0
+349	38	0
+350	38	0
+351	38	0.0024757
+352	38	0.93582
+353	38	1.1218
+354	38	1.1878
+355	38	0.88877
+356	38	0.56733
+357	38	0.3003
+358	38	0.13117
+359	38	0.066562
+360	38	7.984e-05
+0	38.5	0.015258
+1	38.5	0
+2	38.5	0
+3	38.5	0
+4	38.5	0
+5	38.5	0
+6	38.5	0
+7	38.5	0
+8	38.5	0
+9	38.5	0
+10	38.5	0
+11	38.5	0
+12	38.5	0
+13	38.5	0
+14	38.5	0
+15	38.5	0.032598
+16	38.5	0.44638
+17	38.5	0
+18	38.5	0
+19	38.5	0
+20	38.5	0
+21	38.5	0.040754
+22	38.5	0.13344
+23	38.5	0.34471
+24	38.5	0.070426
+25	38.5	0
+26	38.5	0.013418
+27	38.5	-0.092624
+28	38.5	-0.33491
+29	38.5	-0.49489
+30	38.5	-0.49138
+31	38.5	-0.23536
+32	38.5	-0.026982
+33	38.5	0.042531
+34	38.5	0.10833
+35	38.5	0.11534
+36	38.5	-0.091705
+37	38.5	-0.4061
+38	38.5	-0.79329
+39	38.5	-1.1332
+40	38.5	-1.5414
+41	38.5	-1.9151
+42	38.5	-2.2457
+43	38.5	-2.2226
+44	38.5	-1.9324
+45	38.5	-1.5984
+46	38.5	-0.89674
+47	38.5	-1.8477
+48	38.5	-3.0587
+49	38.5	-0.65907
+50	38.5	0
+51	38.5	0
+52	38.5	0
+53	38.5	0
+54	38.5	-0.97827
+55	38.5	-1.4288
+56	38.5	-1.3435
+57	38.5	-0.90497
+58	38.5	-0.53149
+59	38.5	-0.16965
+60	38.5	-0.086209
+61	38.5	-0.078193
+62	38.5	-0.02308
+63	38.5	0.018958
+64	38.5	0.015191
+65	38.5	-0.0022126
+66	38.5	-0.023772
+67	38.5	-0.056303
+68	38.5	-0.31306
+69	38.5	-0.19394
+70	38.5	-0.26996
+71	38.5	0
+72	38.5	0
+73	38.5	0
+74	38.5	-0.058058
+75	38.5	0
+76	38.5	-0.14355
+77	38.5	-0.041733
+78	38.5	-0.037789
+79	38.5	-0.033286
+80	38.5	-0.014912
+81	38.5	-0.020439
+82	38.5	-0.0072704
+83	38.5	0.045007
+84	38.5	0.053289
+85	38.5	0.19479
+86	38.5	0.22245
+87	38.5	0.08828
+88	38.5	0.5694
+89	38.5	0.27364
+90	38.5	0.12991
+91	38.5	0.12825
+92	38.5	0.064571
+93	38.5	0.011931
+94	38.5	0.012873
+95	38.5	-0.0028504
+96	38.5	-7.255e-05
+97	38.5	0.017786
+98	38.5	0.013999
+99	38.5	0.038552
+100	38.5	-0.035048
+101	38.5	-0.044179
+102	38.5	-0.087071
+103	38.5	-0.097278
+104	38.5	-0.0023997
+105	38.5	0.021386
+106	38.5	-0.06144
+107	38.5	-0.1454
+108	38.5	-0.15988
+109	38.5	-0.3455
+110	38.5	-0.57712
+111	38.5	-1.0046
+112	38.5	-1.4522
+113	38.5	-1.464
+114	38.5	-1.4853
+115	38.5	-1.2707
+116	38.5	-1.7128
+117	38.5	-2.0344
+118	38.5	-0.41071
+119	38.5	-0.020793
+120	38.5	0
+121	38.5	-0.070092
+122	38.5	0
+123	38.5	0
+124	38.5	0
+125	38.5	0.033025
+126	38.5	0.054902
+127	38.5	0.068772
+128	38.5	0.025799
+129	38.5	0
+130	38.5	0
+131	38.5	0
+132	38.5	0
+133	38.5	0
+134	38.5	0
+135	38.5	0
+136	38.5	0
+137	38.5	0
+138	38.5	0
+139	38.5	-0.19725
+140	38.5	-3.6561
+141	38.5	-1.0552
+142	38.5	0
+143	38.5	0
+144	38.5	0
+145	38.5	0
+146	38.5	0
+147	38.5	0
+148	38.5	0
+149	38.5	0
+150	38.5	0
+151	38.5	0
+152	38.5	0
+153	38.5	0
+154	38.5	0
+155	38.5	0
+156	38.5	0
+157	38.5	0
+158	38.5	0
+159	38.5	0
+160	38.5	0
+161	38.5	0
+162	38.5	0
+163	38.5	0
+164	38.5	0
+165	38.5	0
+166	38.5	0
+167	38.5	0
+168	38.5	0
+169	38.5	0
+170	38.5	0
+171	38.5	0
+172	38.5	0
+173	38.5	0
+174	38.5	0
+175	38.5	0
+176	38.5	0
+177	38.5	0
+178	38.5	0
+179	38.5	0
+180	38.5	0
+181	38.5	0
+182	38.5	0
+183	38.5	0
+184	38.5	0
+185	38.5	0
+186	38.5	0
+187	38.5	0
+188	38.5	0
+189	38.5	0
+190	38.5	0
+191	38.5	0
+192	38.5	0
+193	38.5	0
+194	38.5	0
+195	38.5	0
+196	38.5	0
+197	38.5	0
+198	38.5	0
+199	38.5	0
+200	38.5	0
+201	38.5	0
+202	38.5	0
+203	38.5	0
+204	38.5	0
+205	38.5	0
+206	38.5	0
+207	38.5	0
+208	38.5	0
+209	38.5	0
+210	38.5	0
+211	38.5	0
+212	38.5	0
+213	38.5	0
+214	38.5	0
+215	38.5	0
+216	38.5	0
+217	38.5	0
+218	38.5	0
+219	38.5	0
+220	38.5	0
+221	38.5	0
+222	38.5	0
+223	38.5	0
+224	38.5	0
+225	38.5	0
+226	38.5	0
+227	38.5	0
+228	38.5	0
+229	38.5	0
+230	38.5	0
+231	38.5	0
+232	38.5	0
+233	38.5	0
+234	38.5	0
+235	38.5	0
+236	38.5	0
+237	38.5	-0.36596
+238	38.5	-1.1446
+239	38.5	-1.6895
+240	38.5	-1.9413
+241	38.5	-1.4182
+242	38.5	-0.51805
+243	38.5	-0.32525
+244	38.5	-0.31176
+245	38.5	-0.21684
+246	38.5	-0.08522
+247	38.5	0.043752
+248	38.5	0.21101
+249	38.5	0.26947
+250	38.5	0.26181
+251	38.5	0.2049
+252	38.5	0.15742
+253	38.5	0.14386
+254	38.5	0.024852
+255	38.5	-0.088089
+256	38.5	-0.17493
+257	38.5	-0.23827
+258	38.5	-0.36229
+259	38.5	-0.4694
+260	38.5	-0.293
+261	38.5	-0.18857
+262	38.5	-0.099372
+263	38.5	-0.013837
+264	38.5	0.050062
+265	38.5	0.068149
+266	38.5	0.069318
+267	38.5	0.15708
+268	38.5	0.24137
+269	38.5	0.30657
+270	38.5	0.35071
+271	38.5	0.42976
+272	38.5	0.35549
+273	38.5	0.30419
+274	38.5	0.26765
+275	38.5	0.20125
+276	38.5	0.15631
+277	38.5	0.093025
+278	38.5	0.0078097
+279	38.5	-0.061901
+280	38.5	-0.12248
+281	38.5	-0.14632
+282	38.5	-0.094869
+283	38.5	0.025762
+284	38.5	0.19999
+285	38.5	0
+286	38.5	0
+287	38.5	0
+288	38.5	0
+289	38.5	0
+290	38.5	0
+291	38.5	0
+292	38.5	0
+293	38.5	0
+294	38.5	0
+295	38.5	0
+296	38.5	0
+297	38.5	0
+298	38.5	0
+299	38.5	0
+300	38.5	0
+301	38.5	0
+302	38.5	0
+303	38.5	0
+304	38.5	0
+305	38.5	0
+306	38.5	0
+307	38.5	0
+308	38.5	0
+309	38.5	0
+310	38.5	0
+311	38.5	0
+312	38.5	0
+313	38.5	0
+314	38.5	0
+315	38.5	0
+316	38.5	0
+317	38.5	0
+318	38.5	0
+319	38.5	0
+320	38.5	0
+321	38.5	0
+322	38.5	0
+323	38.5	0
+324	38.5	0
+325	38.5	0
+326	38.5	0
+327	38.5	0
+328	38.5	0
+329	38.5	0
+330	38.5	0
+331	38.5	0
+332	38.5	0
+333	38.5	0
+334	38.5	0
+335	38.5	0
+336	38.5	0
+337	38.5	0
+338	38.5	0
+339	38.5	0
+340	38.5	0
+341	38.5	0
+342	38.5	0
+343	38.5	0
+344	38.5	0
+345	38.5	0
+346	38.5	0
+347	38.5	0
+348	38.5	0
+349	38.5	0
+350	38.5	0.057322
+351	38.5	0.02717
+352	38.5	0.84826
+353	38.5	1.012
+354	38.5	1.0044
+355	38.5	0.75183
+356	38.5	0.53784
+357	38.5	0.28218
+358	38.5	0.11722
+359	38.5	0.039873
+360	38.5	0.015258
+0	39	0.013453
+1	39	0
+2	39	0
+3	39	0
+4	39	0
+5	39	0
+6	39	0
+7	39	0
+8	39	0
+9	39	1.0455
+10	39	0
+11	39	0
+12	39	0
+13	39	0
+14	39	0
+15	39	0
+16	39	0.44662
+17	39	0.21522
+18	39	0
+19	39	0
+20	39	0
+21	39	0.23656
+22	39	0.49721
+23	39	0.27567
+24	39	0.034542
+25	39	0
+26	39	0.0027325
+27	39	0.0067341
+28	39	-0.22183
+29	39	-0.35229
+30	39	-0.29585
+31	39	-0.10441
+32	39	0.032829
+33	39	0.15754
+34	39	0.18066
+35	39	0.22237
+36	39	0.097291
+37	39	-0.18573
+38	39	-0.53984
+39	39	-0.9519
+40	39	-1.3187
+41	39	-1.7462
+42	39	-1.9902
+43	39	-1.715
+44	39	-1.4209
+45	39	-1.5271
+46	39	-1.0502
+47	39	-1.6673
+48	39	-2.5951
+49	39	-1.8133
+50	39	0
+51	39	0
+52	39	0
+53	39	0
+54	39	-0.96929
+55	39	-1.0417
+56	39	-1.1057
+57	39	-0.76778
+58	39	-0.39816
+59	39	-0.10402
+60	39	-0.060763
+61	39	-0.051935
+62	39	-0.0037835
+63	39	0.03962
+64	39	0.027941
+65	39	0.01046
+66	39	-0.020329
+67	39	-0.018507
+68	39	-0.39453
+69	39	-0.0010916
+70	39	-0.11032
+71	39	0
+72	39	0
+73	39	0
+74	39	0
+75	39	-0.050873
+76	39	-0.10688
+77	39	-0.053298
+78	39	-0.051993
+79	39	-0.040856
+80	39	-0.035368
+81	39	-0.032543
+82	39	-0.031066
+83	39	-0.023793
+84	39	0.02057
+85	39	0.096363
+86	39	0.095083
+87	39	0.070505
+88	39	0.26897
+89	39	0.11614
+90	39	0.070844
+91	39	0.082032
+92	39	0.030089
+93	39	-0.01319
+94	39	0.0048981
+95	39	-0.00092806
+96	39	0.0018507
+97	39	0.0021992
+98	39	0
+99	39	-0.0052805
+100	39	-0.068145
+101	39	-0.065649
+102	39	-0.10602
+103	39	-0.11191
+104	39	-0.075105
+105	39	-0.03156
+106	39	-0.086738
+107	39	-0.12733
+108	39	-0.15408
+109	39	-0.35414
+110	39	-0.59541
+111	39	-1.0369
+112	39	-1.4791
+113	39	-1.3852
+114	39	-1.2249
+115	39	-1.0814
+116	39	-1.3889
+117	39	-1.5619
+118	39	-0.16494
+119	39	-0.14682
+120	39	0
+121	39	0
+122	39	0
+123	39	-0.0049764
+124	39	0
+125	39	0.022744
+126	39	0.13265
+127	39	0.14359
+128	39	0.031561
+129	39	0
+130	39	0
+131	39	0
+132	39	0
+133	39	0
+134	39	0
+135	39	0
+136	39	0
+137	39	0
+138	39	0
+139	39	0
+140	39	-3.8313
+141	39	-2.2212
+142	39	-0.010962
+143	39	0
+144	39	0
+145	39	0
+146	39	0
+147	39	0
+148	39	0
+149	39	0
+150	39	0
+151	39	0
+152	39	0
+153	39	0
+154	39	0
+155	39	0
+156	39	0
+157	39	0
+158	39	0
+159	39	0
+160	39	0
+161	39	0
+162	39	0
+163	39	0
+164	39	0
+165	39	0
+166	39	0
+167	39	0
+168	39	0
+169	39	0
+170	39	0
+171	39	0
+172	39	0
+173	39	0
+174	39	0
+175	39	0
+176	39	0
+177	39	0
+178	39	0
+179	39	0
+180	39	0
+181	39	0
+182	39	0
+183	39	0
+184	39	0
+185	39	0
+186	39	0
+187	39	0
+188	39	0
+189	39	0
+190	39	0
+191	39	0
+192	39	0
+193	39	0
+194	39	0
+195	39	0
+196	39	0
+197	39	0
+198	39	0
+199	39	0
+200	39	0
+201	39	0
+202	39	0
+203	39	0
+204	39	0
+205	39	0
+206	39	0
+207	39	0
+208	39	0
+209	39	0
+210	39	0
+211	39	0
+212	39	0
+213	39	0
+214	39	0
+215	39	0
+216	39	0
+217	39	0
+218	39	0
+219	39	0
+220	39	0
+221	39	0
+222	39	0
+223	39	0
+224	39	0
+225	39	0
+226	39	0
+227	39	0
+228	39	0
+229	39	0
+230	39	0
+231	39	0
+232	39	0
+233	39	0
+234	39	0
+235	39	0
+236	39	0
+237	39	-0.45264
+238	39	-1.0955
+239	39	-1.5438
+240	39	-1.6502
+241	39	-1.1313
+242	39	-0.50025
+243	39	-0.30689
+244	39	-0.26571
+245	39	-0.15526
+246	39	-0.047445
+247	39	0.092539
+248	39	0.2598
+249	39	0.33939
+250	39	0.33173
+251	39	0.25139
+252	39	0.21318
+253	39	0.20715
+254	39	0.088144
+255	39	-0.022501
+256	39	-0.10837
+257	39	-0.11189
+258	39	-0.21514
+259	39	-0.29968
+260	39	-0.18098
+261	39	-0.057559
+262	39	0.031638
+263	39	0.10891
+264	39	0.17289
+265	39	0.14799
+266	39	0.15535
+267	39	0.22559
+268	39	0.30988
+269	39	0.37253
+270	39	0.35628
+271	39	0.42634
+272	39	0.36742
+273	39	0.3175
+274	39	0.29467
+275	39	0.25115
+276	39	0.20854
+277	39	0.13552
+278	39	0.051461
+279	39	-0.035511
+280	39	-0.099258
+281	39	-0.10219
+282	39	-0.016761
+283	39	0.028936
+284	39	0.4176
+285	39	0.20683
+286	39	0
+287	39	0
+288	39	0
+289	39	0
+290	39	0
+291	39	0
+292	39	0
+293	39	0
+294	39	0
+295	39	0
+296	39	0
+297	39	0
+298	39	0
+299	39	0
+300	39	0
+301	39	0
+302	39	0
+303	39	0
+304	39	0
+305	39	0
+306	39	0
+307	39	0
+308	39	0
+309	39	0
+310	39	0
+311	39	0
+312	39	0
+313	39	0
+314	39	0
+315	39	0
+316	39	0
+317	39	0
+318	39	0
+319	39	0
+320	39	0
+321	39	0
+322	39	0
+323	39	0
+324	39	0
+325	39	0
+326	39	0
+327	39	0
+328	39	0
+329	39	0
+330	39	0
+331	39	0
+332	39	0
+333	39	0
+334	39	0
+335	39	0
+336	39	0
+337	39	0
+338	39	0
+339	39	0
+340	39	0
+341	39	0
+342	39	0
+343	39	0
+344	39	0
+345	39	0
+346	39	0
+347	39	0
+348	39	0
+349	39	0
+350	39	0.091645
+351	39	0.1352
+352	39	0.7478
+353	39	0.87938
+354	39	0.81515
+355	39	0.66001
+356	39	0.47215
+357	39	0.23703
+358	39	0.091992
+359	39	0.022592
+360	39	0.013453
+0	39.5	-0.0024071
+1	39.5	0
+2	39.5	-0.00013545
+3	39.5	0
+4	39.5	0
+5	39.5	0
+6	39.5	0
+7	39.5	0
+8	39.5	0
+9	39.5	2.1601
+10	39.5	0
+11	39.5	0
+12	39.5	0
+13	39.5	0
+14	39.5	0
+15	39.5	0.028657
+16	39.5	0.70379
+17	39.5	0.335
+18	39.5	0
+19	39.5	0
+20	39.5	0.036334
+21	39.5	0.50861
+22	39.5	0.43634
+23	39.5	0.10398
+24	39.5	0
+25	39.5	0
+26	39.5	0.014841
+27	39.5	0.024623
+28	39.5	-0.10967
+29	39.5	-0.18626
+30	39.5	-0.1239
+31	39.5	0.032892
+32	39.5	0.19122
+33	39.5	0.26604
+34	39.5	0.34452
+35	39.5	0.33022
+36	39.5	0.28134
+37	39.5	0.043347
+38	39.5	-0.25584
+39	39.5	-0.62808
+40	39.5	-0.99521
+41	39.5	-1.5183
+42	39.5	-1.5799
+43	39.5	-1.2638
+44	39.5	-1.1886
+45	39.5	-1.0224
+46	39.5	-1.1536
+47	39.5	-1.683
+48	39.5	-2.2626
+49	39.5	-2.1341
+50	39.5	0
+51	39.5	0
+52	39.5	0
+53	39.5	0
+54	39.5	-0.84232
+55	39.5	-0.7018
+56	39.5	-0.82491
+57	39.5	-0.43057
+58	39.5	-0.26482
+59	39.5	-0.069989
+60	39.5	-0.035317
+61	39.5	-0.025676
+62	39.5	0.015513
+63	39.5	0.060282
+64	39.5	0.040691
+65	39.5	0.023133
+66	39.5	-0.018988
+67	39.5	-0.026395
+68	39.5	-0.436
+69	39.5	-0.27908
+70	39.5	-0.16126
+71	39.5	-0.29138
+72	39.5	0
+73	39.5	0
+74	39.5	-0.18292
+75	39.5	-0.20802
+76	39.5	-0.11687
+77	39.5	-0.069982
+78	39.5	-0.067891
+79	39.5	-0.07507
+80	39.5	-0.070457
+81	39.5	-0.051267
+82	39.5	-0.064164
+83	39.5	-0.057381
+84	39.5	-0.076503
+85	39.5	-0.018296
+86	39.5	-0.020034
+87	39.5	0.023783
+88	39.5	-0.10375
+89	39.5	-0.010759
+90	39.5	0.036212
+91	39.5	0.053518
+92	39.5	-0.028994
+93	39.5	-0.038312
+94	39.5	-0.1598
+95	39.5	-0.012076
+96	39.5	0.0019162
+97	39.5	-0.00036774
+98	39.5	-0.0026585
+99	39.5	-0.023528
+100	39.5	-0.067248
+101	39.5	-0.090268
+102	39.5	-0.12066
+103	39.5	-0.12113
+104	39.5	-0.1125
+105	39.5	-0.10427
+106	39.5	-0.11204
+107	39.5	-0.11613
+108	39.5	-0.12724
+109	39.5	-0.34304
+110	39.5	-0.63008
+111	39.5	-1.077
+112	39.5	-1.5178
+113	39.5	-1.3565
+114	39.5	-1.051
+115	39.5	-0.96247
+116	39.5	-1.038
+117	39.5	-1.1414
+118	39.5	-0.71143
+119	39.5	-0.49062
+120	39.5	0
+121	39.5	0
+122	39.5	-0.029587
+123	39.5	-0.030947
+124	39.5	0
+125	39.5	0.073157
+126	39.5	0.21097
+127	39.5	0.22399
+128	39.5	0.031179
+129	39.5	0
+130	39.5	0
+131	39.5	0
+132	39.5	0
+133	39.5	0
+134	39.5	0
+135	39.5	0
+136	39.5	0
+137	39.5	0
+138	39.5	0
+139	39.5	0
+140	39.5	-1.4617
+141	39.5	-3.2645
+142	39.5	-0.16543
+143	39.5	0
+144	39.5	0
+145	39.5	0
+146	39.5	0
+147	39.5	0
+148	39.5	0
+149	39.5	0
+150	39.5	0
+151	39.5	0
+152	39.5	0
+153	39.5	0
+154	39.5	0
+155	39.5	0
+156	39.5	0
+157	39.5	0
+158	39.5	0
+159	39.5	0
+160	39.5	0
+161	39.5	0
+162	39.5	0
+163	39.5	0
+164	39.5	0
+165	39.5	0
+166	39.5	0
+167	39.5	0
+168	39.5	0
+169	39.5	0
+170	39.5	0
+171	39.5	0
+172	39.5	0
+173	39.5	0
+174	39.5	0
+175	39.5	0
+176	39.5	0
+177	39.5	0
+178	39.5	0
+179	39.5	0
+180	39.5	0
+181	39.5	0
+182	39.5	0
+183	39.5	0
+184	39.5	0
+185	39.5	0
+186	39.5	0
+187	39.5	0
+188	39.5	0
+189	39.5	0
+190	39.5	0
+191	39.5	0
+192	39.5	0
+193	39.5	0
+194	39.5	0
+195	39.5	0
+196	39.5	0
+197	39.5	0
+198	39.5	0
+199	39.5	0
+200	39.5	0
+201	39.5	0
+202	39.5	0
+203	39.5	0
+204	39.5	0
+205	39.5	0
+206	39.5	0
+207	39.5	0
+208	39.5	0
+209	39.5	0
+210	39.5	0
+211	39.5	0
+212	39.5	0
+213	39.5	0
+214	39.5	0
+215	39.5	0
+216	39.5	0
+217	39.5	0
+218	39.5	0
+219	39.5	0
+220	39.5	0
+221	39.5	0
+222	39.5	0
+223	39.5	0
+224	39.5	0
+225	39.5	0
+226	39.5	0
+227	39.5	0
+228	39.5	0
+229	39.5	0
+230	39.5	0
+231	39.5	0
+232	39.5	0
+233	39.5	0
+234	39.5	0
+235	39.5	0
+236	39.5	0.020052
+237	39.5	-0.3973
+238	39.5	-0.96558
+239	39.5	-1.3145
+240	39.5	-1.3366
+241	39.5	-0.84451
+242	39.5	-0.43878
+243	39.5	-0.31064
+244	39.5	-0.21966
+245	39.5	-0.10982
+246	39.5	-0.0018
+247	39.5	0.14132
+248	39.5	0.30858
+249	39.5	0.40932
+250	39.5	0.3866
+251	39.5	0.29864
+252	39.5	0.26895
+253	39.5	0.27045
+254	39.5	0.15335
+255	39.5	0.043088
+256	39.5	-0.036072
+257	39.5	-0.022787
+258	39.5	-0.067983
+259	39.5	-0.12995
+260	39.5	-0.02467
+261	39.5	0.10187
+262	39.5	0.19756
+263	39.5	0.23166
+264	39.5	0.29102
+265	39.5	0.22782
+266	39.5	0.23292
+267	39.5	0.28243
+268	39.5	0.36472
+269	39.5	0.43848
+270	39.5	0.41412
+271	39.5	0.41925
+272	39.5	0.35725
+273	39.5	0.33371
+274	39.5	0.31838
+275	39.5	0.29606
+276	39.5	0.27493
+277	39.5	0.17801
+278	39.5	0.094549
+279	39.5	0.0093308
+280	39.5	-0.047268
+281	39.5	-0.058049
+282	39.5	0.060709
+283	39.5	0.13802
+284	39.5	0.53219
+285	39.5	0.55091
+286	39.5	0
+287	39.5	0
+288	39.5	0
+289	39.5	0
+290	39.5	0
+291	39.5	0
+292	39.5	0
+293	39.5	0
+294	39.5	0
+295	39.5	0
+296	39.5	0
+297	39.5	0
+298	39.5	0
+299	39.5	0
+300	39.5	0
+301	39.5	0
+302	39.5	0
+303	39.5	0
+304	39.5	0
+305	39.5	0
+306	39.5	0
+307	39.5	0
+308	39.5	0
+309	39.5	0
+310	39.5	0
+311	39.5	0
+312	39.5	0
+313	39.5	0
+314	39.5	0
+315	39.5	0
+316	39.5	0
+317	39.5	0
+318	39.5	0
+319	39.5	0
+320	39.5	0
+321	39.5	0
+322	39.5	0
+323	39.5	0
+324	39.5	0
+325	39.5	0
+326	39.5	0
+327	39.5	0
+328	39.5	0
+329	39.5	0
+330	39.5	0
+331	39.5	0
+332	39.5	0
+333	39.5	0
+334	39.5	0
+335	39.5	0
+336	39.5	0
+337	39.5	0
+338	39.5	0
+339	39.5	0
+340	39.5	0
+341	39.5	0
+342	39.5	0
+343	39.5	0
+344	39.5	0
+345	39.5	0
+346	39.5	0
+347	39.5	0
+348	39.5	0
+349	39.5	0
+350	39.5	0
+351	39.5	0.24514
+352	39.5	0.63577
+353	39.5	0.72193
+354	39.5	0.67697
+355	39.5	0.56573
+356	39.5	0.38501
+357	39.5	0.19086
+358	39.5	0.063925
+359	39.5	0.0088402
+360	39.5	-0.0024071
+0	40	-0.016857
+1	40	0
+2	40	0
+3	40	0
+4	40	0
+5	40	0
+6	40	0
+7	40	0
+8	40	0
+9	40	2.3161
+10	40	0
+11	40	0
+12	40	0
+13	40	0
+14	40	0.13498
+15	40	0.31773
+16	40	0.76893
+17	40	0
+18	40	-0.0066289
+19	40	0
+20	40	0.36186
+21	40	0.4994
+22	40	0.39257
+23	40	0.057656
+24	40	0
+25	40	0
+26	40	0.01435
+27	40	0.058712
+28	40	-0.052297
+29	40	-0.02412
+30	40	0.043109
+31	40	0.1677
+32	40	0.3477
+33	40	0.50396
+34	40	0.53115
+35	40	0.45935
+36	40	0.4194
+37	40	0.26818
+38	40	0.028906
+39	40	-0.30542
+40	40	-0.67561
+41	40	-1.0633
+42	40	-1.1696
+43	40	-1.3465
+44	40	-1.1403
+45	40	-0.82973
+46	40	-1.1805
+47	40	-1.8299
+48	40	-2.2506
+49	40	-2.0249
+50	40	-0.4056
+51	40	0
+52	40	0
+53	40	-1.4173
+54	40	-0.7213
+55	40	-0.63174
+56	40	-0.5302
+57	40	-0.39018
+58	40	-0.14079
+59	40	-0.06855
+60	40	-0.0098717
+61	40	0.00058222
+62	40	0.033739
+63	40	0.051387
+64	40	0.05344
+65	40	0.029349
+66	40	-0.024259
+67	40	-0.094012
+68	40	-0.44862
+69	40	-0.48037
+70	40	-0.70278
+71	40	-0.78487
+72	40	-0.14945
+73	40	-0.2397
+74	40	-0.46613
+75	40	-0.084428
+76	40	-0.18037
+77	40	-0.08672
+78	40	-0.078647
+79	40	-0.096395
+80	40	-0.10555
+81	40	-0.087384
+82	40	-0.097263
+83	40	-0.090968
+84	40	-0.1775
+85	40	-0.14566
+86	40	-0.11781
+87	40	-0.051206
+88	40	-0.14076
+89	40	0.004087
+90	40	0.020853
+91	40	0.038159
+92	40	-0.35146
+93	40	-0.32892
+94	40	-0.2684
+95	40	-0.092866
+96	40	-0.0003752
+97	40	-0.0040644
+98	40	-0.0078876
+99	40	-0.030336
+100	40	-0.055898
+101	40	-0.11109
+102	40	-0.13149
+103	40	-0.11495
+104	40	-0.1049
+105	40	-0.10446
+106	40	-0.10455
+107	40	-0.10796
+108	40	-0.12249
+109	40	-0.31332
+110	40	-0.6724
+111	40	-1.1171
+112	40	-1.5471
+113	40	-1.3075
+114	40	-0.90003
+115	40	-0.78918
+116	40	-0.86767
+117	40	-0.92387
+118	40	-0.72516
+119	40	-0.50499
+120	40	-0.10911
+121	40	0
+122	40	-0.078145
+123	40	-0.070037
+124	40	0.033524
+125	40	0.12357
+126	40	0.25312
+127	40	0.24168
+128	40	0.062459
+129	40	0.0080761
+130	40	0
+131	40	0
+132	40	0
+133	40	0
+134	40	0
+135	40	0
+136	40	0
+137	40	0
+138	40	0
+139	40	0
+140	40	-2.9051
+141	40	-4.0521
+142	40	-0.17028
+143	40	0
+144	40	0
+145	40	0
+146	40	0
+147	40	0
+148	40	0
+149	40	0
+150	40	0
+151	40	0
+152	40	0
+153	40	0
+154	40	0
+155	40	0
+156	40	0
+157	40	0
+158	40	0
+159	40	0
+160	40	0
+161	40	0
+162	40	0
+163	40	0
+164	40	0
+165	40	0
+166	40	0
+167	40	0
+168	40	0
+169	40	0
+170	40	0
+171	40	0
+172	40	0
+173	40	0
+174	40	0
+175	40	0
+176	40	0
+177	40	0
+178	40	0
+179	40	0
+180	40	0
+181	40	0
+182	40	0
+183	40	0
+184	40	0
+185	40	0
+186	40	0
+187	40	0
+188	40	0
+189	40	0
+190	40	0
+191	40	0
+192	40	0
+193	40	0
+194	40	0
+195	40	0
+196	40	0
+197	40	0
+198	40	0
+199	40	0
+200	40	0
+201	40	0
+202	40	0
+203	40	0
+204	40	0
+205	40	0
+206	40	0
+207	40	0
+208	40	0
+209	40	0
+210	40	0
+211	40	0
+212	40	0
+213	40	0
+214	40	0
+215	40	0
+216	40	0
+217	40	0
+218	40	0
+219	40	0
+220	40	0
+221	40	0
+222	40	0
+223	40	0
+224	40	0
+225	40	0
+226	40	0
+227	40	0
+228	40	0
+229	40	0
+230	40	0
+231	40	0
+232	40	0
+233	40	0
+234	40	0
+235	40	0
+236	40	0.16401
+237	40	-0.23004
+238	40	-0.76295
+239	40	-1.0664
+240	40	-1.0691
+241	40	-0.55767
+242	40	-0.37128
+243	40	-0.28225
+244	40	-0.17275
+245	40	-0.061968
+246	40	0.039443
+247	40	0.15388
+248	40	0.35737
+249	40	0.47924
+250	40	0.43386
+251	40	0.34475
+252	40	0.32471
+253	40	0.33042
+254	40	0.21894
+255	40	0.10868
+256	40	0.044616
+257	40	0.066318
+258	40	0.079169
+259	40	0.039772
+260	40	0.13164
+261	40	0.28647
+262	40	0.37946
+263	40	0.35581
+264	40	0.37085
+265	40	0.30766
+266	40	0.28778
+267	40	0.33504
+268	40	0.41774
+269	40	0.50502
+270	40	0.48221
+271	40	0.44177
+272	40	0.37548
+273	40	0.3513
+274	40	0.34515
+275	40	0.34098
+276	40	0.3254
+277	40	0.2205
+278	40	0.13507
+279	40	0.085863
+280	40	0.029809
+281	40	-0.0018062
+282	40	0.14123
+283	40	0.26081
+284	40	0.68393
+285	40	0.83085
+286	40	0.06349
+287	40	0
+288	40	0
+289	40	0
+290	40	0
+291	40	0
+292	40	0
+293	40	0
+294	40	0
+295	40	0
+296	40	0
+297	40	0
+298	40	0
+299	40	0
+300	40	0
+301	40	0
+302	40	0
+303	40	0
+304	40	0
+305	40	0
+306	40	0
+307	40	0
+308	40	0
+309	40	0
+310	40	0
+311	40	0
+312	40	0
+313	40	0
+314	40	0
+315	40	0
+316	40	0
+317	40	0
+318	40	0
+319	40	0
+320	40	0
+321	40	0
+322	40	0
+323	40	0
+324	40	0
+325	40	0
+326	40	0
+327	40	0
+328	40	0
+329	40	0
+330	40	0
+331	40	0
+332	40	0
+333	40	0
+334	40	0
+335	40	0
+336	40	0
+337	40	0
+338	40	0
+339	40	0
+340	40	0
+341	40	0
+342	40	0
+343	40	0
+344	40	0
+345	40	0
+346	40	0
+347	40	0
+348	40	0
+349	40	0
+350	40	0
+351	40	0.16602
+352	40	0.54581
+353	40	0.57357
+354	40	0.59196
+355	40	0.49158
+356	40	0.33399
+357	40	0.14468
+358	40	0.042344
+359	40	-0.0074059
+360	40	-0.016857
+0	40.5	-0.063923
+1	40.5	0
+2	40.5	0
+3	40.5	0
+4	40.5	0
+5	40.5	0
+6	40.5	0
+7	40.5	0
+8	40.5	0
+9	40.5	2.2133
+10	40.5	0.11775
+11	40.5	0
+12	40.5	0
+13	40.5	0.025708
+14	40.5	0.18024
+15	40.5	0.47489
+16	40.5	0.72861
+17	40.5	0.22251
+18	40.5	-0.0097555
+19	40.5	0
+20	40.5	0.5131
+21	40.5	0.47114
+22	40.5	0.34613
+23	40.5	0.14475
+24	40.5	0.0095733
+25	40.5	0
+26	40.5	0
+27	40.5	0.10511
+28	40.5	0
+29	40.5	-0.011381
+30	40.5	0.1297
+31	40.5	0.28553
+32	40.5	0.51631
+33	40.5	0.75172
+34	40.5	0.73234
+35	40.5	0.64151
+36	40.5	0.5677
+37	40.5	0.39572
+38	40.5	0.27339
+39	40.5	0.00401
+40	40.5	-0.26885
+41	40.5	-0.60726
+42	40.5	-1.1084
+43	40.5	-1.3407
+44	40.5	-1.0921
+45	40.5	-0.87001
+46	40.5	-1.2032
+47	40.5	-1.9591
+48	40.5	-2.4321
+49	40.5	-1.96
+50	40.5	-0.45613
+51	40.5	0
+52	40.5	0
+53	40.5	-1.0874
+54	40.5	-0.69617
+55	40.5	-0.67885
+56	40.5	-0.60444
+57	40.5	-0.42857
+58	40.5	-0.16292
+59	40.5	-0.093605
+60	40.5	-0.038691
+61	40.5	0.0060888
+62	40.5	0.026777
+63	40.5	0.020661
+64	40.5	0.03682
+65	40.5	0.0085381
+66	40.5	-0.052059
+67	40.5	-0.16163
+68	40.5	-0.40971
+69	40.5	-0.66544
+70	40.5	-0.94236
+71	40.5	-0.94776
+72	40.5	-0.5938
+73	40.5	-0.70878
+74	40.5	-0.65165
+75	40.5	-0.2945
+76	40.5	-0.19388
+77	40.5	-0.054151
+78	40.5	-0.068995
+79	40.5	-0.10663
+80	40.5	-0.14064
+81	40.5	-0.1227
+82	40.5	-0.13036
+83	40.5	-0.15238
+84	40.5	-0.25027
+85	40.5	-0.2435
+86	40.5	-0.2123
+87	40.5	-0.1381
+88	40.5	-0.11974
+89	40.5	0.017763
+90	40.5	0.010604
+91	40.5	0.0228
+92	40.5	-0.4843
+93	40.5	-0.6466
+94	40.5	-0.377
+95	40.5	-0.17065
+96	40.5	-0.01698
+97	40.5	-0.016003
+98	40.5	-0.0071865
+99	40.5	-0.023678
+100	40.5	-0.044413
+101	40.5	-0.096766
+102	40.5	-0.12531
+103	40.5	-0.10878
+104	40.5	-0.097297
+105	40.5	-0.096863
+106	40.5	-0.09638
+107	40.5	-0.10023
+108	40.5	-0.11775
+109	40.5	-0.28361
+110	40.5	-0.59617
+111	40.5	-1.1572
+112	40.5	-1.5002
+113	40.5	-1.2101
+114	40.5	-0.80823
+115	40.5	-0.68823
+116	40.5	-0.73431
+117	40.5	-0.76909
+118	40.5	-0.56619
+119	40.5	-0.37203
+120	40.5	-0.23388
+121	40.5	-0.044993
+122	40.5	-0.10383
+123	40.5	-0.078339
+124	40.5	0.026905
+125	40.5	0.13876
+126	40.5	0.24567
+127	40.5	0.23888
+128	40.5	0.12745
+129	40.5	0.023246
+130	40.5	0
+131	40.5	0
+132	40.5	0
+133	40.5	0
+134	40.5	0
+135	40.5	0
+136	40.5	0
+137	40.5	0
+138	40.5	0
+139	40.5	0
+140	40.5	-2.8181
+141	40.5	-3.7487
+142	40.5	-0.065786
+143	40.5	0
+144	40.5	0
+145	40.5	0
+146	40.5	0
+147	40.5	0
+148	40.5	0
+149	40.5	0
+150	40.5	0
+151	40.5	0
+152	40.5	0
+153	40.5	0
+154	40.5	0
+155	40.5	0
+156	40.5	0
+157	40.5	0
+158	40.5	0
+159	40.5	0
+160	40.5	0
+161	40.5	0
+162	40.5	0
+163	40.5	0
+164	40.5	0
+165	40.5	0
+166	40.5	0
+167	40.5	0
+168	40.5	0
+169	40.5	0
+170	40.5	0
+171	40.5	0
+172	40.5	0
+173	40.5	0
+174	40.5	0
+175	40.5	0
+176	40.5	0
+177	40.5	0
+178	40.5	0
+179	40.5	0
+180	40.5	0
+181	40.5	0
+182	40.5	0
+183	40.5	0
+184	40.5	0
+185	40.5	0
+186	40.5	0
+187	40.5	0
+188	40.5	0
+189	40.5	0
+190	40.5	0
+191	40.5	0
+192	40.5	0
+193	40.5	0
+194	40.5	0
+195	40.5	0
+196	40.5	0
+197	40.5	0
+198	40.5	0
+199	40.5	0
+200	40.5	0
+201	40.5	0
+202	40.5	0
+203	40.5	0
+204	40.5	0
+205	40.5	0
+206	40.5	0
+207	40.5	0
+208	40.5	0
+209	40.5	0
+210	40.5	0
+211	40.5	0
+212	40.5	0
+213	40.5	0
+214	40.5	0
+215	40.5	0
+216	40.5	0
+217	40.5	0
+218	40.5	0
+219	40.5	0
+220	40.5	0
+221	40.5	0
+222	40.5	0
+223	40.5	0
+224	40.5	0
+225	40.5	0
+226	40.5	0
+227	40.5	0
+228	40.5	0
+229	40.5	0
+230	40.5	0
+231	40.5	0
+232	40.5	0
+233	40.5	0
+234	40.5	0
+235	40.5	0
+236	40.5	0.2512
+237	40.5	0.0093999
+238	40.5	-0.53467
+239	40.5	-0.78635
+240	40.5	-0.84358
+241	40.5	-0.44914
+242	40.5	-0.28271
+243	40.5	-0.20064
+244	40.5	-0.12507
+245	40.5	-0.014116
+246	40.5	0.075881
+247	40.5	0.16409
+248	40.5	0.3879
+249	40.5	0.54916
+250	40.5	0.48029
+251	40.5	0.38401
+252	40.5	0.32607
+253	40.5	0.38618
+254	40.5	0.28453
+255	40.5	0.17476
+256	40.5	0.12304
+257	40.5	0.15245
+258	40.5	0.22325
+259	40.5	0.2095
+260	40.5	0.2963
+261	40.5	0.47107
+262	40.5	0.55804
+263	40.5	0.53702
+264	40.5	0.44567
+265	40.5	0.38394
+266	40.5	0.33599
+267	40.5	0.37965
+268	40.5	0.47076
+269	40.5	0.572
+270	40.5	0.54671
+271	40.5	0.51621
+272	40.5	0.42864
+273	40.5	0.38035
+274	40.5	0.3803
+275	40.5	0.37814
+276	40.5	0.35629
+277	40.5	0.23367
+278	40.5	0.18054
+279	40.5	0.15681
+280	40.5	0.10756
+281	40.5	0.10263
+282	40.5	0.24667
+283	40.5	0.43306
+284	40.5	0.71635
+285	40.5	0.89157
+286	40.5	0.41783
+287	40.5	0.41791
+288	40.5	0
+289	40.5	0
+290	40.5	0
+291	40.5	0
+292	40.5	0
+293	40.5	0
+294	40.5	0
+295	40.5	0
+296	40.5	0
+297	40.5	0
+298	40.5	0
+299	40.5	0
+300	40.5	0
+301	40.5	0
+302	40.5	0
+303	40.5	0
+304	40.5	0
+305	40.5	0
+306	40.5	0
+307	40.5	0
+308	40.5	0
+309	40.5	0
+310	40.5	0
+311	40.5	0
+312	40.5	0
+313	40.5	0
+314	40.5	0
+315	40.5	0
+316	40.5	0
+317	40.5	0
+318	40.5	0
+319	40.5	0
+320	40.5	0
+321	40.5	0
+322	40.5	0
+323	40.5	0
+324	40.5	0
+325	40.5	0
+326	40.5	0
+327	40.5	0
+328	40.5	0
+329	40.5	0
+330	40.5	0
+331	40.5	0
+332	40.5	0
+333	40.5	0
+334	40.5	0
+335	40.5	0
+336	40.5	0
+337	40.5	0
+338	40.5	0
+339	40.5	0
+340	40.5	0
+341	40.5	0
+342	40.5	0
+343	40.5	0
+344	40.5	0
+345	40.5	0
+346	40.5	0
+347	40.5	0
+348	40.5	0
+349	40.5	0
+350	40.5	0
+351	40.5	0.032438
+352	40.5	0.4736
+353	40.5	0.54433
+354	40.5	0.52209
+355	40.5	0.4453
+356	40.5	0.30198
+357	40.5	0.11973
+358	40.5	0.018987
+359	40.5	-0.028102
+360	40.5	-0.063923
+0	41	-0.074991
+1	41	-0.049561
+2	41	-0.029882
+3	41	0
+4	41	0
+5	41	0
+6	41	0
+7	41	0
+8	41	0
+9	41	0.809
+10	41	0
+11	41	0
+12	41	0
+13	41	0.31825
+14	41	0.40203
+15	41	0.55525
+16	41	0.52903
+17	41	0.29846
+18	41	-0.00098169
+19	41	0
+20	41	0.48272
+21	41	0.3834
+22	41	0.30647
+23	41	0.19335
+24	41	0.13026
+25	41	0.083787
+26	41	0.067283
+27	41	0.162
+28	41	0.039461
+29	41	0
+30	41	0.080741
+31	41	0.19931
+32	41	0.66711
+33	41	0.91782
+34	41	0.94257
+35	41	0.81129
+36	41	0.57909
+37	41	0.24169
+38	41	0.086268
+39	41	0.031165
+40	41	-0.079406
+41	41	-0.21328
+42	41	-0.82707
+43	41	-1.2722
+44	41	-1.1109
+45	41	-0.92397
+46	41	-1.2539
+47	41	-2.396
+48	41	-2.4886
+49	41	-1.9417
+50	41	0
+51	41	0
+52	41	0
+53	41	-0.0075673
+54	41	-0.39423
+55	41	-0.83609
+56	41	-0.83228
+57	41	-0.48097
+58	41	-0.18505
+59	41	-0.12542
+60	41	-0.10422
+61	41	-0.074177
+62	41	-0.016405
+63	41	-0.010158
+64	41	0.0066307
+65	41	-0.03283
+66	41	-0.074769
+67	41	-0.20382
+68	41	-0.43813
+69	41	-0.67908
+70	41	-1.034
+71	41	-1.0952
+72	41	-0.77314
+73	41	-0.75819
+74	41	-0.75341
+75	41	-0.584
+76	41	-0.12047
+77	41	-0.043947
+78	41	-0.04588
+79	41	-0.12299
+80	41	-0.17755
+81	41	-0.088185
+82	41	-0.17765
+83	41	-0.21565
+84	41	-0.29789
+85	41	-0.34128
+86	41	-0.29919
+87	41	-0.22499
+88	41	-0.10606
+89	41	0.03144
+90	41	0.010737
+91	41	0.0074415
+92	41	-0.49587
+93	41	-0.73339
+94	41	-0.46323
+95	41	-0.22308
+96	41	-0.035752
+97	41	-0.027005
+98	41	-0.001237
+99	41	-0.01702
+100	41	-0.033322
+101	41	-0.084948
+102	41	-0.11815
+103	41	-0.1026
+104	41	-0.089695
+105	41	-0.089261
+106	41	-0.088649
+107	41	-0.09548
+108	41	-0.113
+109	41	-0.2539
+110	41	-0.5571
+111	41	-1.0528
+112	41	-1.2865
+113	41	-1.138
+114	41	-0.79016
+115	41	-0.65554
+116	41	-0.73136
+117	41	-0.65089
+118	41	-0.47747
+119	41	-0.29287
+120	41	-0.20879
+121	41	-0.11158
+122	41	-0.12061
+123	41	-0.091197
+124	41	0.021232
+125	41	0.14672
+126	41	0.23359
+127	41	0.21991
+128	41	0.14526
+129	41	0.053705
+130	41	-3.0368e-05
+131	41	0
+132	41	0
+133	41	0
+134	41	0
+135	41	0
+136	41	0
+137	41	0
+138	41	0
+139	41	0
+140	41	-0.47106
+141	41	-2.2057
+142	41	0
+143	41	0
+144	41	0
+145	41	0
+146	41	0
+147	41	0
+148	41	0
+149	41	0
+150	41	0
+151	41	0
+152	41	0
+153	41	0
+154	41	0
+155	41	0
+156	41	0
+157	41	0
+158	41	0
+159	41	0
+160	41	0
+161	41	0
+162	41	0
+163	41	0
+164	41	0
+165	41	0
+166	41	0
+167	41	0
+168	41	0
+169	41	0
+170	41	0
+171	41	0
+172	41	0
+173	41	0
+174	41	0
+175	41	0
+176	41	0
+177	41	0
+178	41	0
+179	41	0
+180	41	0
+181	41	0
+182	41	0
+183	41	0
+184	41	0
+185	41	0
+186	41	0
+187	41	0
+188	41	0
+189	41	0
+190	41	0
+191	41	0
+192	41	0
+193	41	0
+194	41	0
+195	41	0
+196	41	0
+197	41	0
+198	41	0
+199	41	0
+200	41	0
+201	41	0
+202	41	0
+203	41	0
+204	41	0
+205	41	0
+206	41	0
+207	41	0
+208	41	0
+209	41	0
+210	41	0
+211	41	0
+212	41	0
+213	41	0
+214	41	0
+215	41	0
+216	41	0
+217	41	0
+218	41	0
+219	41	0
+220	41	0
+221	41	0
+222	41	0
+223	41	0
+224	41	0
+225	41	0
+226	41	0
+227	41	0
+228	41	0
+229	41	0
+230	41	0
+231	41	0
+232	41	0
+233	41	0
+234	41	0
+235	41	0
+236	41	0.30576
+237	41	0.3004
+238	41	-0.22136
+239	41	-0.4673
+240	41	-0.54409
+241	41	-0.30678
+242	41	-0.19413
+243	41	-0.11243
+244	41	-0.057096
+245	41	0.033736
+246	41	0.11793
+247	41	0.23052
+248	41	0.41918
+249	41	0.61583
+250	41	0.51989
+251	41	0.40987
+252	41	0.30843
+253	41	0.39703
+254	41	0.31997
+255	41	0.24533
+256	41	0.19954
+257	41	0.23279
+258	41	0.30927
+259	41	0.40511
+260	41	0.48772
+261	41	0.65567
+262	41	0.73661
+263	41	0.6961
+264	41	0.48872
+265	41	0.42699
+266	41	0.3842
+267	41	0.42427
+268	41	0.52379
+269	41	0.62959
+270	41	0.61838
+271	41	0.58431
+272	41	0.48039
+273	41	0.4126
+274	41	0.41308
+275	41	0.42129
+276	41	0.38718
+277	41	0.14397
+278	41	0.1809
+279	41	0.19771
+280	41	0.17046
+281	41	0.20706
+282	41	0.35541
+283	41	0.54918
+284	41	0.75043
+285	41	0.9414
+286	41	0.93339
+287	41	0.69075
+288	41	0.039009
+289	41	0
+290	41	0
+291	41	0
+292	41	0
+293	41	0
+294	41	0
+295	41	0
+296	41	0
+297	41	0
+298	41	0
+299	41	0
+300	41	0
+301	41	0
+302	41	0
+303	41	0
+304	41	0
+305	41	0
+306	41	0
+307	41	0
+308	41	0
+309	41	0
+310	41	0
+311	41	0
+312	41	0
+313	41	0
+314	41	0
+315	41	0
+316	41	0
+317	41	0
+318	41	0
+319	41	0
+320	41	0
+321	41	0
+322	41	0
+323	41	0
+324	41	0
+325	41	0
+326	41	0
+327	41	0
+328	41	0
+329	41	0
+330	41	0
+331	41	0
+332	41	0
+333	41	0
+334	41	0
+335	41	0
+336	41	0
+337	41	0
+338	41	0
+339	41	0
+340	41	0
+341	41	0
+342	41	0
+343	41	0
+344	41	0
+345	41	0
+346	41	0
+347	41	0
+348	41	0
+349	41	0
+350	41	0
+351	41	0.11199
+352	41	0.44219
+353	41	0.51402
+354	41	0.48601
+355	41	0.4034
+356	41	0.26997
+357	41	0.1025
+358	41	-0.0043706
+359	41	-0.049909
+360	41	-0.074991
+0	41.5	-0.07946
+1	41.5	-0.1174
+2	41.5	-0.062399
+3	41.5	-0.0050312
+4	41.5	0
+5	41.5	0
+6	41.5	0
+7	41.5	0
+8	41.5	0
+9	41.5	0.10445
+10	41.5	0
+11	41.5	0
+12	41.5	0
+13	41.5	0.39211
+14	41.5	0.70269
+15	41.5	0.54064
+16	41.5	0.036392
+17	41.5	0.079398
+18	41.5	0
+19	41.5	0
+20	41.5	0.43137
+21	41.5	0.40381
+22	41.5	0.28528
+23	41.5	0.19871
+24	41.5	0.16021
+25	41.5	0.15628
+26	41.5	0.19143
+27	41.5	0.21369
+28	41.5	0.14753
+29	41.5	0
+30	41.5	0
+31	41.5	0
+32	41.5	0.6276
+33	41.5	1.0335
+34	41.5	0.865
+35	41.5	0.83769
+36	41.5	0.5689
+37	41.5	0.16495
+38	41.5	0
+39	41.5	0
+40	41.5	0
+41	41.5	-0.014675
+42	41.5	-0.48563
+43	41.5	-1.1094
+44	41.5	-1.1336
+45	41.5	-1.0545
+46	41.5	-1.3156
+47	41.5	-2.5295
+48	41.5	-2.5928
+49	41.5	-0.74579
+50	41.5	0
+51	41.5	0
+52	41.5	0
+53	41.5	-0.14046
+54	41.5	-0.28131
+55	41.5	-0.98197
+56	41.5	-1.0424
+57	41.5	-0.57777
+58	41.5	-0.29131
+59	41.5	-0.19519
+60	41.5	-0.18601
+61	41.5	-0.13598
+62	41.5	-0.063957
+63	41.5	-0.040977
+64	41.5	-0.029832
+65	41.5	-0.048951
+66	41.5	-0.097479
+67	41.5	-0.23918
+68	41.5	-0.46655
+69	41.5	-0.6964
+70	41.5	-1.1052
+71	41.5	-1.2292
+72	41.5	-0.95006
+73	41.5	-0.74094
+74	41.5	-0.83753
+75	41.5	-0.74867
+76	41.5	-0.58403
+77	41.5	0
+78	41.5	-0.011555
+79	41.5	-0.046258
+80	41.5	-0.12037
+81	41.5	-0.031273
+82	41.5	-0.29884
+83	41.5	-0.32954
+84	41.5	-0.19824
+85	41.5	-0.32964
+86	41.5	-0.37229
+87	41.5	-0.27668
+88	41.5	-0.092385
+89	41.5	0.044537
+90	41.5	0.010869
+91	41.5	-0.0079174
+92	41.5	-0.50745
+93	41.5	-0.60641
+94	41.5	-0.33625
+95	41.5	-0.30991
+96	41.5	-0.073157
+97	41.5	-0.038007
+98	41.5	-0.004395
+99	41.5	-0.012284
+100	41.5	-0.026663
+101	41.5	-0.07949
+102	41.5	-0.10971
+103	41.5	-0.096424
+104	41.5	-0.082094
+105	41.5	-0.081659
+106	41.5	-0.080996
+107	41.5	-0.090731
+108	41.5	-0.10825
+109	41.5	-0.22485
+110	41.5	-0.5457
+111	41.5	-0.80407
+112	41.5	-1.0264
+113	41.5	-0.96527
+114	41.5	-0.80757
+115	41.5	-0.65848
+116	41.5	-0.70778
+117	41.5	-0.65703
+118	41.5	-0.39014
+119	41.5	-0.24821
+120	41.5	-0.18847
+121	41.5	-0.16818
+122	41.5	-0.13783
+123	41.5	-0.10405
+124	41.5	0.019575
+125	41.5	0.15778
+126	41.5	0.24381
+127	41.5	0.20701
+128	41.5	0.17045
+129	41.5	0.078147
+130	41.5	-8.319e-05
+131	41.5	0
+132	41.5	0
+133	41.5	0
+134	41.5	0
+135	41.5	0
+136	41.5	0
+137	41.5	0
+138	41.5	0
+139	41.5	0
+140	41.5	-0.19715
+141	41.5	-0.32881
+142	41.5	0
+143	41.5	0.012705
+144	41.5	0
+145	41.5	0
+146	41.5	0
+147	41.5	0
+148	41.5	0
+149	41.5	0
+150	41.5	0
+151	41.5	0
+152	41.5	0
+153	41.5	0
+154	41.5	0
+155	41.5	0
+156	41.5	0
+157	41.5	0
+158	41.5	0
+159	41.5	0
+160	41.5	0
+161	41.5	0
+162	41.5	0
+163	41.5	0
+164	41.5	0
+165	41.5	0
+166	41.5	0
+167	41.5	0
+168	41.5	0
+169	41.5	0
+170	41.5	0
+171	41.5	0
+172	41.5	0
+173	41.5	0
+174	41.5	0
+175	41.5	0
+176	41.5	0
+177	41.5	0
+178	41.5	0
+179	41.5	0
+180	41.5	0
+181	41.5	0
+182	41.5	0
+183	41.5	0
+184	41.5	0
+185	41.5	0
+186	41.5	0
+187	41.5	0
+188	41.5	0
+189	41.5	0
+190	41.5	0
+191	41.5	0
+192	41.5	0
+193	41.5	0
+194	41.5	0
+195	41.5	0
+196	41.5	0
+197	41.5	0
+198	41.5	0
+199	41.5	0
+200	41.5	0
+201	41.5	0
+202	41.5	0
+203	41.5	0
+204	41.5	0
+205	41.5	0
+206	41.5	0
+207	41.5	0
+208	41.5	0
+209	41.5	0
+210	41.5	0
+211	41.5	0
+212	41.5	0
+213	41.5	0
+214	41.5	0
+215	41.5	0
+216	41.5	0
+217	41.5	0
+218	41.5	0
+219	41.5	0
+220	41.5	0
+221	41.5	0
+222	41.5	0
+223	41.5	0
+224	41.5	0
+225	41.5	0
+226	41.5	0
+227	41.5	0
+228	41.5	0
+229	41.5	0
+230	41.5	0
+231	41.5	0
+232	41.5	0
+233	41.5	0
+234	41.5	0
+235	41.5	0
+236	41.5	0.3755
+237	41.5	0.49489
+238	41.5	0.10618
+239	41.5	-0.16245
+240	41.5	-0.2475
+241	41.5	-0.16442
+242	41.5	-0.10556
+243	41.5	-0.029172
+244	41.5	0.022355
+245	41.5	0.090081
+246	41.5	0.21142
+247	41.5	0.31703
+248	41.5	0.47815
+249	41.5	0.65561
+250	41.5	0.55949
+251	41.5	0.43573
+252	41.5	0.29079
+253	41.5	0.37239
+254	41.5	0.31247
+255	41.5	0.29881
+256	41.5	0.29403
+257	41.5	0.31833
+258	41.5	0.38961
+259	41.5	0.64051
+260	41.5	0.71204
+261	41.5	0.84027
+262	41.5	0.91519
+263	41.5	0.80497
+264	41.5	0.54564
+265	41.5	0.47003
+266	41.5	0.43841
+267	41.5	0.47965
+268	41.5	0.57196
+269	41.5	0.64851
+270	41.5	0.68203
+271	41.5	0.63985
+272	41.5	0.50671
+273	41.5	0.21835
+274	41.5	0.42875
+275	41.5	0.47871
+276	41.5	0.44534
+277	41.5	0.13879
+278	41.5	0.17759
+279	41.5	0.2181
+280	41.5	0.22726
+281	41.5	0.30531
+282	41.5	0.44005
+283	41.5	0.61144
+284	41.5	0.78894
+285	41.5	0.9992
+286	41.5	1.2592
+287	41.5	1.12
+288	41.5	0.48202
+289	41.5	0.2841
+290	41.5	0
+291	41.5	0
+292	41.5	0
+293	41.5	0
+294	41.5	0
+295	41.5	0
+296	41.5	0
+297	41.5	0
+298	41.5	0
+299	41.5	0
+300	41.5	0
+301	41.5	0
+302	41.5	0
+303	41.5	0
+304	41.5	0
+305	41.5	0
+306	41.5	0
+307	41.5	0
+308	41.5	0
+309	41.5	0
+310	41.5	0
+311	41.5	0
+312	41.5	0
+313	41.5	0
+314	41.5	0
+315	41.5	0
+316	41.5	0
+317	41.5	0
+318	41.5	0
+319	41.5	0
+320	41.5	0
+321	41.5	0
+322	41.5	0
+323	41.5	0
+324	41.5	0
+325	41.5	0
+326	41.5	0
+327	41.5	0
+328	41.5	0
+329	41.5	0
+330	41.5	0
+331	41.5	0
+332	41.5	0
+333	41.5	0
+334	41.5	0
+335	41.5	0
+336	41.5	0
+337	41.5	0
+338	41.5	0
+339	41.5	0
+340	41.5	0
+341	41.5	0
+342	41.5	0
+343	41.5	0
+344	41.5	0
+345	41.5	0
+346	41.5	0
+347	41.5	0
+348	41.5	0
+349	41.5	0
+350	41.5	0
+351	41.5	0.064307
+352	41.5	0.44726
+353	41.5	0.52468
+354	41.5	0.48152
+355	41.5	0.36958
+356	41.5	0.23451
+357	41.5	0.10244
+358	41.5	-0.01102
+359	41.5	-0.072303
+360	41.5	-0.07946
+0	42	-0.079054
+1	42	-0.1564
+2	42	-0.10747
+3	42	-0.012621
+4	42	0
+5	42	0
+6	42	0
+7	42	0
+8	42	0
+9	42	0.36363
+10	42	0
+11	42	0
+12	42	0.062865
+13	42	0.57128
+14	42	0.59892
+15	42	0.42293
+16	42	0
+17	42	0
+18	42	0.010475
+19	42	0
+20	42	0.39282
+21	42	0.3392
+22	42	0.24555
+23	42	0.17876
+24	42	0.14664
+25	42	0.16837
+26	42	0.19354
+27	42	0.2585
+28	42	0.12933
+29	42	0
+30	42	0
+31	42	0
+32	42	0.3267
+33	42	0.24232
+34	42	0.5467
+35	42	0.55286
+36	42	0.17554
+37	42	0.035675
+38	42	0
+39	42	0
+40	42	0
+41	42	0
+42	42	-0.25583
+43	42	-0.94594
+44	42	-1.1733
+45	42	-1.0974
+46	42	-1.3243
+47	42	-2.4158
+48	42	-2.318
+49	42	0
+50	42	0
+51	42	0
+52	42	0
+53	42	-0.20347
+54	42	-0.57211
+55	42	-1.0746
+56	42	-1.1317
+57	42	-0.74274
+58	42	-0.39768
+59	42	-0.30818
+60	42	-0.30439
+61	42	-0.19143
+62	42	-0.12158
+63	42	-0.071796
+64	42	-0.068302
+65	42	-0.065072
+66	42	-0.12019
+67	42	-0.27608
+68	42	-0.49497
+69	42	-0.72493
+70	42	-0.99989
+71	42	-0.90247
+72	42	-0.058062
+73	42	-0.35818
+74	42	-0.49896
+75	42	-0.55704
+76	42	-0.61147
+77	42	-0.16684
+78	42	0
+79	42	-0.23638
+80	42	-0.024293
+81	42	0
+82	42	-0.28023
+83	42	-0.48202
+84	42	-0.098583
+85	42	-0.22903
+86	42	-0.4181
+87	42	-0.36164
+88	42	-0.46639
+89	42	0.044669
+90	42	0.011002
+91	42	-0.022666
+92	42	-0.38597
+93	42	-0.47943
+94	42	-0.24088
+95	42	-0.38494
+96	42	-0.14098
+97	42	-0.034803
+98	42	-0.0013187
+99	42	-0.016579
+100	42	-0.030761
+101	42	-0.074032
+102	42	-0.10128
+103	42	-0.090127
+104	42	-0.074492
+105	42	-0.074014
+106	42	-0.073342
+107	42	-0.083931
+108	42	-0.1035
+109	42	-0.21345
+110	42	-0.47434
+111	42	-0.5822
+112	42	-0.77102
+113	42	-0.85382
+114	42	-0.77173
+115	42	-0.63568
+116	42	-0.66463
+117	42	-0.7021
+118	42	-0.41776
+119	42	-0.20886
+120	42	-0.16356
+121	42	-0.15727
+122	42	-0.11771
+123	42	-0.095539
+124	42	0.017919
+125	42	0.16965
+126	42	0.27832
+127	42	0.24591
+128	42	0.19696
+129	42	0.10994
+130	42	-0.012594
+131	42	-0.0053306
+132	42	0
+133	42	0
+134	42	0
+135	42	0
+136	42	0
+137	42	0
+138	42	0
+139	42	0
+140	42	-0.18633
+141	42	0
+142	42	0
+143	42	1.0593
+144	42	0
+145	42	0
+146	42	0
+147	42	0
+148	42	0
+149	42	0
+150	42	0
+151	42	0
+152	42	0
+153	42	0
+154	42	0
+155	42	0
+156	42	0
+157	42	0
+158	42	0
+159	42	0
+160	42	0
+161	42	0
+162	42	0
+163	42	0
+164	42	0
+165	42	0
+166	42	0
+167	42	0
+168	42	0
+169	42	0
+170	42	0
+171	42	0
+172	42	0
+173	42	0
+174	42	0
+175	42	0
+176	42	0
+177	42	0
+178	42	0
+179	42	0
+180	42	0
+181	42	0
+182	42	0
+183	42	0
+184	42	0
+185	42	0
+186	42	0
+187	42	0
+188	42	0
+189	42	0
+190	42	0
+191	42	0
+192	42	0
+193	42	0
+194	42	0
+195	42	0
+196	42	0
+197	42	0
+198	42	0
+199	42	0
+200	42	0
+201	42	0
+202	42	0
+203	42	0
+204	42	0
+205	42	0
+206	42	0
+207	42	0
+208	42	0
+209	42	0
+210	42	0
+211	42	0
+212	42	0
+213	42	0
+214	42	0
+215	42	0
+216	42	0
+217	42	0
+218	42	0
+219	42	0
+220	42	0
+221	42	0
+222	42	0
+223	42	0
+224	42	0
+225	42	0
+226	42	0
+227	42	0
+228	42	0
+229	42	0
+230	42	0
+231	42	0
+232	42	0
+233	42	0
+234	42	0
+235	42	0
+236	42	0.44896
+237	42	0.74454
+238	42	0.42455
+239	42	0.10014
+240	42	-0.046866
+241	42	-0.03461
+242	42	-0.016986
+243	42	0.050397
+244	42	0.10181
+245	42	0.18357
+246	42	0.30492
+247	42	0.40355
+248	42	0.53712
+249	42	0.69539
+250	42	0.59909
+251	42	0.4616
+252	42	0.30483
+253	42	0.34755
+254	42	0.30497
+255	42	0.35228
+256	42	0.38852
+257	42	0.41314
+258	42	0.58119
+259	42	0.8758
+260	42	0.94035
+261	42	0.96625
+262	42	1.0247
+263	42	0.91384
+264	42	0.65471
+265	42	0.51617
+266	42	0.43143
+267	42	0.49795
+268	42	0.55566
+269	42	0.65527
+270	42	0.69248
+271	42	0.69135
+272	42	0.32188
+273	42	0
+274	42	0.40495
+275	42	0.52753
+276	42	0.50834
+277	42	0.30672
+278	42	0.2038
+279	42	0.11016
+280	42	0.16192
+281	42	0.40038
+282	42	0.5019
+283	42	0.67201
+284	42	0.83689
+285	42	1.0587
+286	42	1.3428
+287	42	1.269
+288	42	0.92503
+289	42	0.48108
+290	42	0
+291	42	0
+292	42	0
+293	42	0
+294	42	0
+295	42	0
+296	42	0
+297	42	0
+298	42	0
+299	42	0
+300	42	0
+301	42	0
+302	42	0
+303	42	0
+304	42	0
+305	42	0
+306	42	0
+307	42	0
+308	42	0
+309	42	0
+310	42	0
+311	42	0
+312	42	0
+313	42	0
+314	42	0
+315	42	0
+316	42	0
+317	42	0
+318	42	0
+319	42	0
+320	42	0
+321	42	0
+322	42	0
+323	42	0
+324	42	0
+325	42	0
+326	42	0
+327	42	0
+328	42	0
+329	42	0
+330	42	0
+331	42	0
+332	42	0
+333	42	0
+334	42	0
+335	42	0
+336	42	0
+337	42	0
+338	42	0
+339	42	0
+340	42	0
+341	42	0
+342	42	0
+343	42	0
+344	42	0
+345	42	0
+346	42	0
+347	42	0
+348	42	0
+349	42	0
+350	42	0
+351	42	0.006114
+352	42	0.4479
+353	42	0.5354
+354	42	0.49115
+355	42	0.37686
+356	42	0.23284
+357	42	0.10238
+358	42	-0.011968
+359	42	-0.078496
+360	42	-0.079054
+0	42.5	-0.07355
+1	42.5	-0.17625
+2	42.5	-0.15396
+3	42.5	-0.052488
+4	42.5	0
+5	42.5	0
+6	42.5	0
+7	42.5	0
+8	42.5	0
+9	42.5	0.026362
+10	42.5	0
+11	42.5	0.17344
+12	42.5	0.54296
+13	42.5	0.61996
+14	42.5	0.4756
+15	42.5	0.077001
+16	42.5	0
+17	42.5	0.0055041
+18	42.5	0.035808
+19	42.5	0.27532
+20	42.5	0.36597
+21	42.5	0.27721
+22	42.5	0.1946
+23	42.5	0.15507
+24	42.5	0.1282
+25	42.5	0.13848
+26	42.5	0.16493
+27	42.5	0.23841
+28	42.5	0
+29	42.5	0
+30	42.5	0
+31	42.5	0
+32	42.5	0
+33	42.5	0
+34	42.5	0.20178
+35	42.5	0
+36	42.5	0
+37	42.5	0
+38	42.5	0
+39	42.5	0
+40	42.5	0
+41	42.5	0.032794
+42	42.5	-0.18712
+43	42.5	-0.52622
+44	42.5	-0.65487
+45	42.5	-1.1442
+46	42.5	-1.3238
+47	42.5	-2.1953
+48	42.5	-0.39885
+49	42.5	0
+50	42.5	0
+51	42.5	0
+52	42.5	-0.086393
+53	42.5	-0.39273
+54	42.5	-0.83476
+55	42.5	-1.1357
+56	42.5	-1.2026
+57	42.5	-0.87954
+58	42.5	-0.4926
+59	42.5	-0.4627
+60	42.5	-0.49282
+61	42.5	-0.34238
+62	42.5	-0.17576
+63	42.5	-0.11791
+64	42.5	-0.10754
+65	42.5	-0.10864
+66	42.5	-0.16292
+67	42.5	-0.30763
+68	42.5	-0.5306
+69	42.5	-0.75346
+70	42.5	-0.87667
+71	42.5	-0.45532
+72	42.5	-0.50842
+73	42.5	-0.67669
+74	42.5	-0.15822
+75	42.5	-0.38852
+76	42.5	-0.42603
+77	42.5	-0.17233
+78	42.5	-0.45936
+79	42.5	-0.66672
+80	42.5	-0.21831
+81	42.5	0
+82	42.5	-0.076394
+83	42.5	-0.15775
+84	42.5	-0.031255
+85	42.5	-0.037383
+86	42.5	-0.46392
+87	42.5	-0.67811
+88	42.5	-0.95094
+89	42.5	0.03521
+90	42.5	-0.023259
+91	42.5	-0.081729
+92	42.5	-0.26116
+93	42.5	-0.35246
+94	42.5	-0.28536
+95	42.5	-0.42942
+96	42.5	-0.19736
+97	42.5	-0.024544
+98	42.5	-0.0051942
+99	42.5	-0.020875
+100	42.5	-0.035056
+101	42.5	-0.068574
+102	42.5	-0.092844
+103	42.5	-0.081691
+104	42.5	-0.067534
+105	42.5	-0.06636
+106	42.5	-0.039206
+107	42.5	-0.047145
+108	42.5	-0.076962
+109	42.5	-0.14396
+110	42.5	-0.35182
+111	42.5	-0.45642
+112	42.5	-0.55508
+113	42.5	-0.64167
+114	42.5	-0.63787
+115	42.5	-0.60142
+116	42.5	-0.60835
+117	42.5	-0.59571
+118	42.5	-0.41599
+119	42.5	-0.18197
+120	42.5	-0.14426
+121	42.5	-0.12556
+122	42.5	-0.096673
+123	42.5	-0.078164
+124	42.5	0.018798
+125	42.5	0.16985
+126	42.5	0.31022
+127	42.5	0.29737
+128	42.5	0.19764
+129	42.5	0.12678
+130	42.5	0.017896
+131	42.5	0.0079899
+132	42.5	0.011612
+133	42.5	0.020514
+134	42.5	0.026202
+135	42.5	0
+136	42.5	0
+137	42.5	0
+138	42.5	0
+139	42.5	0
+140	42.5	-0.01531
+141	42.5	0.18659
+142	42.5	1.0623
+143	42.5	2.4309
+144	42.5	0.46047
+145	42.5	0.35789
+146	42.5	0
+147	42.5	0
+148	42.5	0
+149	42.5	0
+150	42.5	0
+151	42.5	0
+152	42.5	0
+153	42.5	0
+154	42.5	0
+155	42.5	0
+156	42.5	0
+157	42.5	0
+158	42.5	0
+159	42.5	0
+160	42.5	0
+161	42.5	0
+162	42.5	0
+163	42.5	0
+164	42.5	0
+165	42.5	0
+166	42.5	0
+167	42.5	0
+168	42.5	0
+169	42.5	0
+170	42.5	0
+171	42.5	0
+172	42.5	0
+173	42.5	0
+174	42.5	0
+175	42.5	0
+176	42.5	0
+177	42.5	0
+178	42.5	0
+179	42.5	0
+180	42.5	0
+181	42.5	0
+182	42.5	0
+183	42.5	0
+184	42.5	0
+185	42.5	0
+186	42.5	0
+187	42.5	0
+188	42.5	0
+189	42.5	0
+190	42.5	0
+191	42.5	0
+192	42.5	0
+193	42.5	0
+194	42.5	0
+195	42.5	0
+196	42.5	0
+197	42.5	0
+198	42.5	0
+199	42.5	0
+200	42.5	0
+201	42.5	0
+202	42.5	0
+203	42.5	0
+204	42.5	0
+205	42.5	0
+206	42.5	0
+207	42.5	0
+208	42.5	0
+209	42.5	0
+210	42.5	0
+211	42.5	0
+212	42.5	0
+213	42.5	0
+214	42.5	0
+215	42.5	0
+216	42.5	0
+217	42.5	0
+218	42.5	0
+219	42.5	0
+220	42.5	0
+221	42.5	0
+222	42.5	0
+223	42.5	0
+224	42.5	0
+225	42.5	0
+226	42.5	0
+227	42.5	0
+228	42.5	0
+229	42.5	0
+230	42.5	0
+231	42.5	0
+232	42.5	0
+233	42.5	0
+234	42.5	0
+235	42.5	0
+236	42.5	0.71451
+237	42.5	0.99755
+238	42.5	0.7691
+239	42.5	0.36272
+240	42.5	0.15262
+241	42.5	0.061448
+242	42.5	0.071588
+243	42.5	0.12996
+244	42.5	0.18132
+245	42.5	0.27824
+246	42.5	0.39841
+247	42.5	0.49006
+248	42.5	0.59609
+249	42.5	0.73517
+250	42.5	0.63869
+251	42.5	0.48746
+252	42.5	0.3307
+253	42.5	0.32271
+254	42.5	0.29747
+255	42.5	0.40576
+256	42.5	0.48302
+257	42.5	0.50796
+258	42.5	0.66528
+259	42.5	1.0174
+260	42.5	1.1578
+261	42.5	1.079
+262	42.5	1.1189
+263	42.5	1.022
+264	42.5	0.76206
+265	42.5	0.52833
+266	42.5	0.42238
+267	42.5	0.45268
+268	42.5	0.5226
+269	42.5	0.61448
+270	42.5	0.68455
+271	42.5	0.67867
+272	42.5	0.37799
+273	42.5	0
+274	42.5	0.27316
+275	42.5	0.55793
+276	42.5	0.57219
+277	42.5	0.40503
+278	42.5	0.18856
+279	42.5	0.087565
+280	42.5	0.12264
+281	42.5	0.45541
+282	42.5	0.53481
+283	42.5	0.69208
+284	42.5	0.93443
+285	42.5	1.1347
+286	42.5	1.4195
+287	42.5	1.3308
+288	42.5	1.0251
+289	42.5	0.62512
+290	42.5	0
+291	42.5	0
+292	42.5	0
+293	42.5	0
+294	42.5	0
+295	42.5	0
+296	42.5	0
+297	42.5	0
+298	42.5	0
+299	42.5	0
+300	42.5	0
+301	42.5	0
+302	42.5	0
+303	42.5	0
+304	42.5	0
+305	42.5	0
+306	42.5	0
+307	42.5	0
+308	42.5	0
+309	42.5	0
+310	42.5	0
+311	42.5	0
+312	42.5	0
+313	42.5	0
+314	42.5	0
+315	42.5	0
+316	42.5	0
+317	42.5	0
+318	42.5	0
+319	42.5	0
+320	42.5	0
+321	42.5	0
+322	42.5	0
+323	42.5	0
+324	42.5	0
+325	42.5	0
+326	42.5	0
+327	42.5	0
+328	42.5	0
+329	42.5	0
+330	42.5	0
+331	42.5	0
+332	42.5	0
+333	42.5	0
+334	42.5	0
+335	42.5	0
+336	42.5	0
+337	42.5	0
+338	42.5	0
+339	42.5	0
+340	42.5	0
+341	42.5	0
+342	42.5	0
+343	42.5	0
+344	42.5	0
+345	42.5	0
+346	42.5	0
+347	42.5	0
+348	42.5	0
+349	42.5	0
+350	42.5	0
+351	42.5	0.053707
+352	42.5	0.43301
+353	42.5	0.53988
+354	42.5	0.47467
+355	42.5	0.38683
+356	42.5	0.23082
+357	42.5	0.092165
+358	42.5	0.0017977
+359	42.5	-0.075061
+360	42.5	-0.07355
+0	43	-0.092783
+1	43	-0.19377
+2	43	-0.18642
+3	43	-0.092939
+4	43	0
+5	43	0
+6	43	0.030906
+7	43	0.046476
+8	43	0
+9	43	0
+10	43	0
+11	43	0.47002
+12	43	0.66598
+13	43	0.49798
+14	43	0.22681
+15	43	0
+16	43	0
+17	43	0.15018
+18	43	0.1698
+19	43	0.34549
+20	43	0.32288
+21	43	0.22677
+22	43	0.14489
+23	43	0.1261
+24	43	0.10651
+25	43	0.10824
+26	43	0.10533
+27	43	0.22268
+28	43	0
+29	43	0
+30	43	0
+31	43	0
+32	43	0
+33	43	0
+34	43	0
+35	43	0
+36	43	0
+37	43	0
+38	43	0
+39	43	0
+40	43	0
+41	43	0.12234
+42	43	-0.0075195
+43	43	-0.069902
+44	43	-0.2832
+45	43	-1.1194
+46	43	-1.2094
+47	43	-1.5388
+48	43	0
+49	43	0
+50	43	0
+51	43	0
+52	43	-0.37181
+53	43	-0.73303
+54	43	-0.95009
+55	43	-1.1776
+56	43	-1.2742
+57	43	-0.93574
+58	43	-0.62857
+59	43	-0.67695
+60	43	-0.68242
+61	43	-0.36333
+62	43	-0.22937
+63	43	-0.1598
+64	43	-0.14677
+65	43	-0.15744
+66	43	-0.23759
+67	43	-0.33614
+68	43	-0.54625
+69	43	-0.74581
+70	43	-0.76679
+71	43	-0.64897
+72	43	-0.7878
+73	43	-0.6352
+74	43	-0.3935
+75	43	-0.40677
+76	43	-0.91715
+77	43	0
+78	43	-0.45715
+79	43	-0.68558
+80	43	-0.5889
+81	43	-0.26228
+82	43	-0.57216
+83	43	-0.3839
+84	43	-0.22999
+85	43	0
+86	43	-0.50973
+87	43	-0.99457
+88	43	-1.4355
+89	43	-0.28061
+90	43	-0.18031
+91	43	-0.23878
+92	43	-0.13635
+93	43	-0.22548
+94	43	-0.32983
+95	43	-0.47389
+96	43	-0.22816
+97	43	-0.014284
+98	43	-0.0090697
+99	43	-0.02517
+100	43	-0.040311
+101	43	-0.074922
+102	43	-0.084409
+103	43	-0.073256
+104	43	-0.061357
+105	43	-0.047051
+106	43	-0.0059984
+107	43	-0.010359
+108	43	-0.040176
+109	43	-0.050336
+110	43	-0.22859
+111	43	-0.33063
+112	43	-0.37291
+113	43	-0.43006
+114	43	-0.48004
+115	43	-0.48271
+116	43	-0.47622
+117	43	-0.48978
+118	43	-0.37982
+119	43	-0.16123
+120	43	-0.11231
+121	43	-0.092978
+122	43	-0.07564
+123	43	-0.060789
+124	43	0.018678
+125	43	0.16739
+126	43	0.33058
+127	43	0.35551
+128	43	0.17223
+129	43	0.1234
+130	43	0.070496
+131	43	0.022226
+132	43	0.04066
+133	43	0.10028
+134	43	0.098521
+135	43	0.014947
+136	43	0
+137	43	0
+138	43	0
+139	43	0
+140	43	0
+141	43	0.31635
+142	43	3.4943
+143	43	4.7212
+144	43	1.3193
+145	43	0.78799
+146	43	0
+147	43	0
+148	43	0
+149	43	0
+150	43	0
+151	43	0
+152	43	0
+153	43	0
+154	43	0
+155	43	0
+156	43	0
+157	43	0
+158	43	0
+159	43	0
+160	43	0
+161	43	0
+162	43	0
+163	43	0
+164	43	0
+165	43	0
+166	43	0
+167	43	0
+168	43	0
+169	43	0
+170	43	0
+171	43	0
+172	43	0
+173	43	0
+174	43	0
+175	43	0
+176	43	0
+177	43	0
+178	43	0
+179	43	0
+180	43	0
+181	43	0
+182	43	0
+183	43	0
+184	43	0
+185	43	0
+186	43	0
+187	43	0
+188	43	0
+189	43	0
+190	43	0
+191	43	0
+192	43	0
+193	43	0
+194	43	0
+195	43	0
+196	43	0
+197	43	0
+198	43	0
+199	43	0
+200	43	0
+201	43	0
+202	43	0
+203	43	0
+204	43	0
+205	43	0
+206	43	0
+207	43	0
+208	43	0
+209	43	0
+210	43	0
+211	43	0
+212	43	0
+213	43	0
+214	43	0
+215	43	0
+216	43	0
+217	43	0
+218	43	0
+219	43	0
+220	43	0
+221	43	0
+222	43	0
+223	43	0
+224	43	0
+225	43	0
+226	43	0
+227	43	0
+228	43	0
+229	43	0
+230	43	0
+231	43	0
+232	43	0
+233	43	0
+234	43	0
+235	43	0
+236	43	0.86472
+237	43	1.2427
+238	43	1.0371
+239	43	0.6218
+240	43	0.33828
+241	43	0.22907
+242	43	0.16407
+243	43	0.21977
+244	43	0.27294
+245	43	0.37302
+246	43	0.4919
+247	43	0.57658
+248	43	0.65507
+249	43	0.77495
+250	43	0.67982
+251	43	0.63454
+252	43	0.5081
+253	43	0.34348
+254	43	0.34317
+255	43	0.49646
+256	43	0.49484
+257	43	0.52543
+258	43	0.70508
+259	43	1.0545
+260	43	1.1617
+261	43	1.1918
+262	43	1.2122
+263	43	1.0893
+264	43	0.6959
+265	43	0.49234
+266	43	0.41333
+267	43	0.40768
+268	43	0.49421
+269	43	0.56411
+270	43	0.65805
+271	43	0.66901
+272	43	0.25877
+273	43	0
+274	43	0.20167
+275	43	0.60208
+276	43	0.48144
+277	43	0.42654
+278	43	0.28498
+279	43	0.3198
+280	43	0.42489
+281	43	0.45392
+282	43	0.51924
+283	43	0.46571
+284	43	1.032
+285	43	1.2239
+286	43	1.4497
+287	43	1.355
+288	43	1.0845
+289	43	0.7523
+290	43	0
+291	43	0
+292	43	0
+293	43	0
+294	43	0
+295	43	0
+296	43	0
+297	43	0
+298	43	0
+299	43	0
+300	43	0
+301	43	0
+302	43	0
+303	43	0
+304	43	0
+305	43	0
+306	43	0
+307	43	0
+308	43	0
+309	43	0
+310	43	0
+311	43	0
+312	43	0
+313	43	0
+314	43	0
+315	43	0
+316	43	0
+317	43	0
+318	43	0
+319	43	0
+320	43	0
+321	43	0
+322	43	0
+323	43	0
+324	43	0
+325	43	0
+326	43	0
+327	43	0
+328	43	0
+329	43	0
+330	43	0
+331	43	0
+332	43	0
+333	43	0
+334	43	0
+335	43	0
+336	43	0
+337	43	0
+338	43	0
+339	43	0
+340	43	0
+341	43	0
+342	43	0
+343	43	0
+344	43	0
+345	43	0
+346	43	0
+347	43	0
+348	43	0
+349	43	0
+350	43	0
+351	43	0.10456
+352	43	0.3772
+353	43	0.54435
+354	43	0.449
+355	43	0.32134
+356	43	0.16833
+357	43	0.074254
+358	43	0.018014
+359	43	-0.06071
+360	43	-0.092783
+0	43.5	-0.080589
+1	43.5	-0.20887
+2	43.5	-0.21087
+3	43.5	-0.11756
+4	43.5	-0.023845
+5	43.5	-0.0052917
+6	43.5	0.082716
+7	43.5	0.083289
+8	43.5	0
+9	43.5	0
+10	43.5	0
+11	43.5	0.52572
+12	43.5	0.62588
+13	43.5	0.32497
+14	43.5	0
+15	43.5	0
+16	43.5	0.079621
+17	43.5	0.26883
+18	43.5	0.31937
+19	43.5	0.32727
+20	43.5	0.27853
+21	43.5	0.18737
+22	43.5	0.095134
+23	43.5	0.059193
+24	43.5	0.044284
+25	43.5	0.01595
+26	43.5	0.037548
+27	43.5	0.18257
+28	43.5	0.15912
+29	43.5	0
+30	43.5	0
+31	43.5	0
+32	43.5	0
+33	43.5	0
+34	43.5	0
+35	43.5	0
+36	43.5	0
+37	43.5	0
+38	43.5	0
+39	43.5	0
+40	43.5	0.054173
+41	43.5	0.047313
+42	43.5	-0.099775
+43	43.5	-0.36661
+44	43.5	-0.82985
+45	43.5	-1.0535
+46	43.5	-1.152
+47	43.5	-0.90509
+48	43.5	0
+49	43.5	0
+50	43.5	0
+51	43.5	-0.15565
+52	43.5	-0.6816
+53	43.5	-0.9169
+54	43.5	-1.0692
+55	43.5	-1.2161
+56	43.5	-1.3288
+57	43.5	-1.021
+58	43.5	-1.0759
+59	43.5	-0.51559
+60	43.5	-0.32742
+61	43.5	-0.077325
+62	43.5	-0.39985
+63	43.5	-0.35023
+64	43.5	-0.18808
+65	43.5	-0.2018
+66	43.5	-0.31227
+67	43.5	-0.36466
+68	43.5	-0.5566
+69	43.5	-0.67448
+70	43.5	-0.65743
+71	43.5	-0.35608
+72	43.5	-0.5912
+73	43.5	-0.499
+74	43.5	-0.47935
+75	43.5	-0.57896
+76	43.5	-0.72205
+77	43.5	-0.34155
+78	43.5	-0.70725
+79	43.5	-0.81336
+80	43.5	-0.55962
+81	43.5	-0.57762
+82	43.5	-0.76985
+83	43.5	-0.64246
+84	43.5	-0.67007
+85	43.5	-0.093548
+86	43.5	-0.52701
+87	43.5	-1.311
+88	43.5	-1.9201
+89	43.5	-0.74146
+90	43.5	-0.33736
+91	43.5	-0.39583
+92	43.5	-0.47195
+93	43.5	-0.23025
+94	43.5	-0.35584
+95	43.5	-0.46832
+96	43.5	-0.25895
+97	43.5	-0.0040248
+98	43.5	-0.012945
+99	43.5	-0.029466
+100	43.5	-0.048405
+101	43.5	-0.079996
+102	43.5	-0.072504
+103	43.5	-0.062345
+104	43.5	-0.052186
+105	43.5	-0.0083239
+106	43.5	0.023819
+107	43.5	0.022913
+108	43.5	-0.0033902
+109	43.5	-0.0069293
+110	43.5	-0.10536
+111	43.5	-0.20657
+112	43.5	-0.29881
+113	43.5	-0.35558
+114	43.5	-0.3766
+115	43.5	-0.364
+116	43.5	-0.34712
+117	43.5	-0.38561
+118	43.5	-0.27399
+119	43.5	-0.12362
+120	43.5	-0.075262
+121	43.5	-0.0587
+122	43.5	-0.048208
+123	43.5	-0.0344
+124	43.5	0.053568
+125	43.5	0.16493
+126	43.5	0.35253
+127	43.5	0.3909
+128	43.5	0.16526
+129	43.5	0.1165
+130	43.5	0.1069
+131	43.5	0.067001
+132	43.5	0.11583
+133	43.5	0.23405
+134	43.5	0.2105
+135	43.5	0.1541
+136	43.5	0
+137	43.5	0
+138	43.5	0
+139	43.5	0
+140	43.5	0
+141	43.5	0.028915
+142	43.5	4.8645
+143	43.5	7.4483
+144	43.5	3.3091
+145	43.5	0.77248
+146	43.5	0
+147	43.5	0
+148	43.5	0
+149	43.5	0
+150	43.5	0
+151	43.5	0
+152	43.5	0
+153	43.5	0
+154	43.5	0
+155	43.5	0
+156	43.5	0
+157	43.5	0
+158	43.5	0
+159	43.5	0
+160	43.5	0
+161	43.5	0
+162	43.5	0
+163	43.5	0
+164	43.5	0
+165	43.5	0
+166	43.5	0
+167	43.5	0
+168	43.5	0
+169	43.5	0
+170	43.5	0
+171	43.5	0
+172	43.5	0
+173	43.5	0
+174	43.5	0
+175	43.5	0
+176	43.5	0
+177	43.5	0
+178	43.5	0
+179	43.5	0
+180	43.5	0
+181	43.5	0
+182	43.5	0
+183	43.5	0
+184	43.5	0
+185	43.5	0
+186	43.5	0
+187	43.5	0
+188	43.5	0
+189	43.5	0
+190	43.5	0
+191	43.5	0
+192	43.5	0
+193	43.5	0
+194	43.5	0
+195	43.5	0
+196	43.5	0
+197	43.5	0
+198	43.5	0
+199	43.5	0
+200	43.5	0
+201	43.5	0
+202	43.5	0
+203	43.5	0
+204	43.5	0
+205	43.5	0
+206	43.5	0
+207	43.5	0
+208	43.5	0
+209	43.5	0
+210	43.5	0
+211	43.5	0
+212	43.5	0
+213	43.5	0
+214	43.5	0
+215	43.5	0
+216	43.5	0
+217	43.5	0
+218	43.5	0
+219	43.5	0
+220	43.5	0
+221	43.5	0
+222	43.5	0
+223	43.5	0
+224	43.5	0
+225	43.5	0
+226	43.5	0
+227	43.5	0
+228	43.5	0
+229	43.5	0
+230	43.5	0
+231	43.5	0
+232	43.5	0
+233	43.5	0
+234	43.5	0
+235	43.5	0
+236	43.5	0.68703
+237	43.5	1.4499
+238	43.5	1.3099
+239	43.5	0.80515
+240	43.5	0.48758
+241	43.5	0.39701
+242	43.5	0.29586
+243	43.5	0.35211
+244	43.5	0.3455
+245	43.5	0.46779
+246	43.5	0.5854
+247	43.5	0.66309
+248	43.5	0.74038
+249	43.5	0.81474
+250	43.5	0.72205
+251	43.5	0.82
+252	43.5	0.69356
+253	43.5	0.50316
+254	43.5	0.43592
+255	43.5	0.59288
+256	43.5	0.63784
+257	43.5	0.52312
+258	43.5	0.69665
+259	43.5	1.0211
+260	43.5	1.1602
+261	43.5	1.1325
+262	43.5	1.2709
+263	43.5	1.0582
+264	43.5	0.63643
+265	43.5	0.43673
+266	43.5	0.33222
+267	43.5	0.32008
+268	43.5	0.37888
+269	43.5	0.49457
+270	43.5	0.59593
+271	43.5	0.61858
+272	43.5	0.24806
+273	43.5	0
+274	43.5	0.2666
+275	43.5	0.60128
+276	43.5	0.19271
+277	43.5	0.30789
+278	43.5	0.22923
+279	43.5	0.36773
+280	43.5	0.52078
+281	43.5	0.18056
+282	43.5	0.50101
+283	43.5	0.61703
+284	43.5	1.1559
+285	43.5	1.3596
+286	43.5	1.4261
+287	43.5	1.3523
+288	43.5	1.1275
+289	43.5	0.95282
+290	43.5	0.077038
+291	43.5	0
+292	43.5	0
+293	43.5	0
+294	43.5	0.015244
+295	43.5	0
+296	43.5	0
+297	43.5	0
+298	43.5	0
+299	43.5	0
+300	43.5	0
+301	43.5	0
+302	43.5	0
+303	43.5	0
+304	43.5	0
+305	43.5	0
+306	43.5	0
+307	43.5	0
+308	43.5	0
+309	43.5	0
+310	43.5	0
+311	43.5	0
+312	43.5	0
+313	43.5	0
+314	43.5	0
+315	43.5	0
+316	43.5	0
+317	43.5	0
+318	43.5	0
+319	43.5	0
+320	43.5	0
+321	43.5	0
+322	43.5	0
+323	43.5	0
+324	43.5	0
+325	43.5	0
+326	43.5	0
+327	43.5	0
+328	43.5	0
+329	43.5	0
+330	43.5	0
+331	43.5	0
+332	43.5	0
+333	43.5	0
+334	43.5	0
+335	43.5	0
+336	43.5	0
+337	43.5	0
+338	43.5	0
+339	43.5	0
+340	43.5	0
+341	43.5	0
+342	43.5	0
+343	43.5	0
+344	43.5	0
+345	43.5	0
+346	43.5	0
+347	43.5	0
+348	43.5	0
+349	43.5	0
+350	43.5	0
+351	43.5	0.0012427
+352	43.5	0.28428
+353	43.5	0.33167
+354	43.5	0.33916
+355	43.5	0.22038
+356	43.5	0.034393
+357	43.5	0.041247
+358	43.5	0.011875
+359	43.5	-0.044837
+360	43.5	-0.080589
+0	44	-0.072317
+1	44	-0.21191
+2	44	-0.21261
+3	44	-0.1386
+4	44	-0.066176
+5	44	-0.00097913
+6	44	0.087138
+7	44	0.1173
+8	44	0.048009
+9	44	0.038392
+10	44	0.08256
+11	44	0.4361
+12	44	0.38672
+13	44	0.14513
+14	44	0
+15	44	0.068268
+16	44	0.22885
+17	44	0.32891
+18	44	0.33922
+19	44	0.30295
+20	44	0.24256
+21	44	0.1551
+22	44	0.043188
+23	44	-0.013548
+24	44	-0.040495
+25	44	-0.060442
+26	44	-0.029751
+27	44	0.071451
+28	44	0.10301
+29	44	0
+30	44	0
+31	44	0
+32	44	0
+33	44	0
+34	44	0.03518
+35	44	0
+36	44	0
+37	44	0
+38	44	-0.0003514
+39	44	-0.0091327
+40	44	0.040586
+41	44	-0.2256
+42	44	-0.42981
+43	44	-0.74059
+44	44	-0.95865
+45	44	-0.96249
+46	44	-1.1988
+47	44	-0.81931
+48	44	0
+49	44	0
+50	44	0
+51	44	-0.34302
+52	44	-0.85219
+53	44	-1.0348
+54	44	-1.1962
+55	44	-1.3533
+56	44	-1.3603
+57	44	-1.2524
+58	44	-1.129
+59	44	-0.067663
+60	44	0
+61	44	-5.6308e-05
+62	44	-0.65348
+63	44	-0.54008
+64	44	-0.35789
+65	44	-0.30702
+66	44	-0.35408
+67	44	-0.39317
+68	44	-0.56682
+69	44	-0.58276
+70	44	-0.43536
+71	44	-0.26896
+72	44	-0.45743
+73	44	-0.38091
+74	44	-0.3217
+75	44	-0.32401
+76	44	-0.39793
+77	44	-0.50273
+78	44	-0.73519
+79	44	-0.67619
+80	44	-0.29139
+81	44	-0.79555
+82	44	-0.72884
+83	44	-0.60893
+84	44	0
+85	44	-0.32229
+86	44	-0.54502
+87	44	-1.6275
+88	44	-2.3989
+89	44	-1.2023
+90	44	-0.4944
+91	44	-0.58863
+92	44	-0.88922
+93	44	-0.18537
+94	44	-0.29785
+95	44	-0.37773
+96	44	-0.2371
+97	44	-6.7548e-05
+98	44	-0.016821
+99	44	-0.033574
+100	44	-0.056499
+101	44	-0.066526
+102	44	-0.057424
+103	44	-0.047265
+104	44	-0.037106
+105	44	0.030403
+106	44	0.053636
+107	44	0.05273
+108	44	0.033396
+109	44	0.031333
+110	44	-0.033703
+111	44	-0.12824
+112	44	-0.23338
+113	44	-0.26901
+114	44	-0.28158
+115	44	-0.25778
+116	44	-0.24164
+117	44	-0.26859
+118	44	-0.16524
+119	44	-0.086002
+120	44	-0.039958
+121	44	-0.018265
+122	44	0.0011057
+123	44	0.026654
+124	44	0.088458
+125	44	0.16247
+126	44	0.35984
+127	44	0.40584
+128	44	0.19991
+129	44	0.1221
+130	44	0.10716
+131	44	0.13526
+132	44	0.18565
+133	44	0.34073
+134	44	0.34916
+135	44	0.27439
+136	44	0
+137	44	0
+138	44	0
+139	44	0
+140	44	0
+141	44	0
+142	44	4.7911
+143	44	5.6455
+144	44	2.2764
+145	44	0.59513
+146	44	0
+147	44	0
+148	44	0
+149	44	0
+150	44	0
+151	44	0
+152	44	0
+153	44	0
+154	44	0
+155	44	0
+156	44	0
+157	44	0
+158	44	0
+159	44	0
+160	44	0
+161	44	0
+162	44	0
+163	44	0
+164	44	0
+165	44	0
+166	44	0
+167	44	0
+168	44	0
+169	44	0
+170	44	0
+171	44	0
+172	44	0
+173	44	0
+174	44	0
+175	44	0
+176	44	0
+177	44	0
+178	44	0
+179	44	0
+180	44	0
+181	44	0
+182	44	0
+183	44	0
+184	44	0
+185	44	0
+186	44	0
+187	44	0
+188	44	0
+189	44	0
+190	44	0
+191	44	0
+192	44	0
+193	44	0
+194	44	0
+195	44	0
+196	44	0
+197	44	0
+198	44	0
+199	44	0
+200	44	0
+201	44	0
+202	44	0
+203	44	0
+204	44	0
+205	44	0
+206	44	0
+207	44	0
+208	44	0
+209	44	0
+210	44	0
+211	44	0
+212	44	0
+213	44	0
+214	44	0
+215	44	0
+216	44	0
+217	44	0
+218	44	0
+219	44	0
+220	44	0
+221	44	0
+222	44	0
+223	44	0
+224	44	0
+225	44	0
+226	44	0
+227	44	0
+228	44	0
+229	44	0
+230	44	0
+231	44	0
+232	44	0
+233	44	0
+234	44	0
+235	44	0
+236	44	0.80646
+237	44	1.6143
+238	44	1.5407
+239	44	1.0492
+240	44	0.66061
+241	44	0.56496
+242	44	0.42123
+243	44	0.48246
+244	44	0.41805
+245	44	0.54601
+246	44	0.67231
+247	44	0.74961
+248	44	0.8269
+249	44	0.85546
+250	44	0.76427
+251	44	0.94213
+252	44	0.87901
+253	44	0.693
+254	44	0.57335
+255	44	0.68931
+256	44	0.7601
+257	44	0.7046
+258	44	0.68185
+259	44	0.93923
+260	44	1.0488
+261	44	1.0094
+262	44	1.1012
+263	44	0.96744
+264	44	0.59629
+265	44	0.28047
+266	44	0.1717
+267	44	0.19246
+268	44	0.23772
+269	44	0.3595
+270	44	0.48151
+271	44	0.51942
+272	44	0.25598
+273	44	0
+274	44	0.22018
+275	44	0.57218
+276	44	0.19892
+277	44	0.36306
+278	44	0.083803
+279	44	0.41306
+280	44	0.59865
+281	44	0.35013
+282	44	0.69628
+283	44	0.73667
+284	44	1.2716
+285	44	1.564
+286	44	1.0303
+287	44	1.3815
+288	44	1.2656
+289	44	1.1025
+290	44	0.7071
+291	44	0.21278
+292	44	0
+293	44	0
+294	44	0.17294
+295	44	0
+296	44	0
+297	44	0
+298	44	0
+299	44	0
+300	44	0
+301	44	0
+302	44	0
+303	44	0
+304	44	0
+305	44	0
+306	44	0
+307	44	0
+308	44	0
+309	44	0
+310	44	0
+311	44	0
+312	44	0
+313	44	0
+314	44	0
+315	44	0
+316	44	0
+317	44	0
+318	44	0
+319	44	0
+320	44	0
+321	44	0
+322	44	0
+323	44	0
+324	44	0
+325	44	0
+326	44	0
+327	44	0
+328	44	0
+329	44	0
+330	44	0
+331	44	0
+332	44	0
+333	44	0
+334	44	0
+335	44	0
+336	44	0
+337	44	0
+338	44	0
+339	44	0
+340	44	0
+341	44	0
+342	44	0
+343	44	0
+344	44	0
+345	44	0
+346	44	0
+347	44	0
+348	44	0
+349	44	0
+350	44	0
+351	44	0
+352	44	0.040323
+353	44	0
+354	44	0.016988
+355	44	0.05381
+356	44	0
+357	44	0
+358	44	0.0037092
+359	44	-0.025109
+360	44	-0.072317
+0	44.5	-0.096985
+1	44.5	-0.21845
+2	44.5	-0.22027
+3	44.5	-0.15904
+4	44.5	-0.099499
+5	44.5	-0.027455
+6	44.5	0.066801
+7	44.5	0.10385
+8	44.5	0.12846
+9	44.5	0.19779
+10	44.5	0.3031
+11	44.5	0.33528
+12	44.5	0.29034
+13	44.5	0.071652
+14	44.5	0
+15	44.5	0.23909
+16	44.5	0.36727
+17	44.5	0.38072
+18	44.5	0.32754
+19	44.5	0.27336
+20	44.5	0.20796
+21	44.5	0.12147
+22	44.5	0.0037955
+23	44.5	-0.076245
+24	44.5	-0.10436
+25	44.5	-0.14483
+26	44.5	-0.15658
+27	44.5	-0.067482
+28	44.5	0.050424
+29	44.5	0
+30	44.5	0
+31	44.5	0
+32	44.5	0
+33	44.5	0
+34	44.5	0.078004
+35	44.5	0
+36	44.5	0.0005209
+37	44.5	-0.00011518
+38	44.5	-0.026494
+39	44.5	-0.043017
+40	44.5	-0.21207
+41	44.5	-0.4552
+42	44.5	-0.72544
+43	44.5	-0.93933
+44	44.5	-0.84897
+45	44.5	-0.96437
+46	44.5	-1.2151
+47	44.5	-0.44018
+48	44.5	0
+49	44.5	0
+50	44.5	0
+51	44.5	-0.25874
+52	44.5	-0.83052
+53	44.5	-1.0038
+54	44.5	-1.2987
+55	44.5	-1.5204
+56	44.5	-1.5572
+57	44.5	-1.612
+58	44.5	-1.392
+59	44.5	-0.34278
+60	44.5	0
+61	44.5	0
+62	44.5	-0.99338
+63	44.5	-0.66195
+64	44.5	-0.52959
+65	44.5	-0.41099
+66	44.5	-0.36818
+67	44.5	-0.42169
+68	44.5	-0.55796
+69	44.5	-0.51877
+70	44.5	-0.49567
+71	44.5	-0.43718
+72	44.5	-0.39153
+73	44.5	-0.2966
+74	44.5	-0.21576
+75	44.5	-0.16339
+76	44.5	-0.18224
+77	44.5	-0.2447
+78	44.5	-0.49861
+79	44.5	-0.52352
+80	44.5	-0.025462
+81	44.5	-0.8416
+82	44.5	-0.81515
+83	44.5	-0.64538
+84	44.5	-0.12871
+85	44.5	-0.50807
+86	44.5	-0.56804
+87	44.5	-1.6355
+88	44.5	-2.4278
+89	44.5	-1.6632
+90	44.5	-0.73954
+91	44.5	-0.78595
+92	44.5	-1.3065
+93	44.5	-0.12739
+94	44.5	-0.23987
+95	44.5	-0.2655
+96	44.5	-0.12115
+97	44.5	-0.003943
+98	44.5	-0.020696
+99	44.5	-0.037449
+100	44.5	-0.051571
+101	44.5	-0.053056
+102	44.5	-0.043171
+103	44.5	-0.032185
+104	44.5	-0.022026
+105	44.5	0.06913
+106	44.5	0.083453
+107	44.5	0.082547
+108	44.5	0.07281
+109	44.5	0.050614
+110	44.5	0.0043031
+111	44.5	-0.090232
+112	44.5	-0.16795
+113	44.5	-0.18244
+114	44.5	-0.18517
+115	44.5	-0.21082
+116	44.5	-0.19473
+117	44.5	-0.15507
+118	44.5	-0.098698
+119	44.5	-0.055743
+120	44.5	-0.0069324
+121	44.5	0.02928
+122	44.5	0.050419
+123	44.5	0.087709
+124	44.5	0.12335
+125	44.5	0.16001
+126	44.5	0.35848
+127	44.5	0.38254
+128	44.5	0.23457
+129	44.5	0.13018
+130	44.5	0.10741
+131	44.5	0.1768
+132	44.5	0.10959
+133	44.5	0.45375
+134	44.5	0.46821
+135	44.5	0.31652
+136	44.5	0.0969
+137	44.5	0.035949
+138	44.5	0
+139	44.5	0
+140	44.5	0
+141	44.5	0
+142	44.5	4.2437
+143	44.5	2.1373
+144	44.5	0
+145	44.5	0.054558
+146	44.5	0
+147	44.5	0
+148	44.5	0
+149	44.5	0
+150	44.5	0
+151	44.5	0
+152	44.5	0
+153	44.5	0
+154	44.5	0
+155	44.5	0
+156	44.5	0
+157	44.5	0
+158	44.5	0
+159	44.5	0
+160	44.5	0
+161	44.5	0
+162	44.5	0
+163	44.5	0
+164	44.5	0
+165	44.5	0
+166	44.5	0
+167	44.5	0
+168	44.5	0
+169	44.5	0
+170	44.5	0
+171	44.5	0
+172	44.5	0
+173	44.5	0
+174	44.5	0
+175	44.5	0
+176	44.5	0
+177	44.5	0
+178	44.5	0
+179	44.5	0
+180	44.5	0
+181	44.5	0
+182	44.5	0
+183	44.5	0
+184	44.5	0
+185	44.5	0
+186	44.5	0
+187	44.5	0
+188	44.5	0
+189	44.5	0
+190	44.5	0
+191	44.5	0
+192	44.5	0
+193	44.5	0
+194	44.5	0
+195	44.5	0
+196	44.5	0
+197	44.5	0
+198	44.5	0
+199	44.5	0
+200	44.5	0
+201	44.5	0
+202	44.5	0
+203	44.5	0
+204	44.5	0
+205	44.5	0
+206	44.5	0
+207	44.5	0
+208	44.5	0
+209	44.5	0
+210	44.5	0
+211	44.5	0
+212	44.5	0
+213	44.5	0
+214	44.5	0
+215	44.5	0
+216	44.5	0
+217	44.5	0
+218	44.5	0
+219	44.5	0
+220	44.5	0
+221	44.5	0
+222	44.5	0
+223	44.5	0
+224	44.5	0
+225	44.5	0
+226	44.5	0
+227	44.5	0
+228	44.5	0
+229	44.5	0
+230	44.5	0
+231	44.5	0
+232	44.5	0
+233	44.5	0
+234	44.5	0
+235	44.5	0
+236	44.5	0.91621
+237	44.5	1.7587
+238	44.5	1.7994
+239	44.5	0.91346
+240	44.5	0.79256
+241	44.5	0.61796
+242	44.5	0.55357
+243	44.5	0.55502
+244	44.5	0.49061
+245	44.5	0.61936
+246	44.5	0.74588
+247	44.5	0.82226
+248	44.5	0.89865
+249	44.5	0.89769
+250	44.5	0.8065
+251	44.5	0.97789
+252	44.5	1.0645
+253	44.5	0.88284
+254	44.5	0.68096
+255	44.5	0.79834
+256	44.5	0.8402
+257	44.5	0.89276
+258	44.5	0.71041
+259	44.5	0.85532
+260	44.5	0.96055
+261	44.5	0.9315
+262	44.5	0.93155
+263	44.5	0.80878
+264	44.5	0.43071
+265	44.5	0.10665
+266	44.5	0.0048702
+267	44.5	0.0058474
+268	44.5	0.044969
+269	44.5	0.15882
+270	44.5	0.31699
+271	44.5	0.38724
+272	44.5	0.21902
+273	44.5	0
+274	44.5	0.10557
+275	44.5	0.51955
+276	44.5	0.42722
+277	44.5	0.18643
+278	44.5	0
+279	44.5	0.17465
+280	44.5	0.64692
+281	44.5	0.80556
+282	44.5	0.87842
+283	44.5	1.0472
+284	44.5	1.3786
+285	44.5	1.7608
+286	44.5	1.012
+287	44.5	1.2265
+288	44.5	1.4383
+289	44.5	1.2657
+290	44.5	0.88641
+291	44.5	0.50269
+292	44.5	0.19381
+293	44.5	0.053312
+294	44.5	0.24819
+295	44.5	0.40667
+296	44.5	0.11558
+297	44.5	0
+298	44.5	0
+299	44.5	0
+300	44.5	0
+301	44.5	0
+302	44.5	0
+303	44.5	0
+304	44.5	0
+305	44.5	0
+306	44.5	0
+307	44.5	0
+308	44.5	0
+309	44.5	0
+310	44.5	0
+311	44.5	0
+312	44.5	0
+313	44.5	0
+314	44.5	0
+315	44.5	0
+316	44.5	0
+317	44.5	0
+318	44.5	0
+319	44.5	0
+320	44.5	0
+321	44.5	0
+322	44.5	0
+323	44.5	0
+324	44.5	0
+325	44.5	0
+326	44.5	0
+327	44.5	0
+328	44.5	0
+329	44.5	0
+330	44.5	0
+331	44.5	0
+332	44.5	0
+333	44.5	0
+334	44.5	0
+335	44.5	0
+336	44.5	0
+337	44.5	0
+338	44.5	0
+339	44.5	0
+340	44.5	0
+341	44.5	0
+342	44.5	0
+343	44.5	0
+344	44.5	0
+345	44.5	0
+346	44.5	0
+347	44.5	0
+348	44.5	0
+349	44.5	0
+350	44.5	0
+351	44.5	0
+352	44.5	0
+353	44.5	0
+354	44.5	0
+355	44.5	0
+356	44.5	0
+357	44.5	0
+358	44.5	0
+359	44.5	-0.011658
+360	44.5	-0.096985
+0	45	-0.11043
+1	45	-0.23756
+2	45	-0.22645
+3	45	-0.16656
+4	45	-0.11076
+5	45	-0.0448
+6	45	0.0049918
+7	45	0.067565
+8	45	0.12216
+9	45	0.16862
+10	45	0.21986
+11	45	0.24334
+12	45	0.2262
+13	45	0.064316
+14	45	0.014263
+15	45	0.21746
+16	45	0.36896
+17	45	0.40558
+18	45	0.34454
+19	45	0.24765
+20	45	0.17225
+21	45	0.080398
+22	45	-0.030672
+23	45	-0.11184
+24	45	-0.17611
+25	45	-0.22921
+26	45	-0.29084
+27	45	-0.17103
+28	45	-0.029975
+29	45	0.015286
+30	45	0.0011372
+31	45	0
+32	45	0
+33	45	0
+34	45	0.11375
+35	45	0.014126
+36	45	0.0014152
+37	45	-0.00041658
+38	45	-0.093836
+39	45	-0.295
+40	45	-0.46473
+41	45	-0.62521
+42	45	-0.91057
+43	45	-1.0258
+44	45	-0.94669
+45	45	-1.092
+46	45	-1.2248
+47	45	-0.68982
+48	45	0
+49	45	0
+50	45	0
+51	45	-0.18524
+52	45	-0.50568
+53	45	-0.77585
+54	45	-1.1555
+55	45	-1.5951
+56	45	-1.7927
+57	45	-1.8423
+58	45	-2.4492
+59	45	-1.4429
+60	45	0
+61	45	0
+62	45	-0.77702
+63	45	-0.7864
+64	45	-0.53609
+65	45	-0.41406
+66	45	-0.33934
+67	45	-0.42231
+68	45	-0.49446
+69	45	-0.45479
+70	45	-0.47026
+71	45	-0.39076
+72	45	-0.32417
+73	45	-0.23248
+74	45	-0.13463
+75	45	-0.08865
+76	45	-0.07482
+77	45	-0.11123
+78	45	-0.28309
+79	45	-0.5091
+80	45	-0.22843
+81	45	-0.5593
+82	45	-1.0271
+83	45	-0.6799
+84	45	-0.35405
+85	45	-0.70218
+86	45	-0.51671
+87	45	-1.6018
+88	45	-1.9189
+89	45	-2.124
+90	45	-1.2004
+91	45	-0.98326
+92	45	-1.4901
+93	45	-0.34499
+94	45	-0.18188
+95	45	-0.15326
+96	45	-0.0051985
+97	45	-0.026217
+98	45	-0.039418
+99	45	-0.052619
+100	45	-0.038101
+101	45	-0.039587
+102	45	-0.029581
+103	45	-0.017104
+104	45	-0.0016706
+105	45	0.10435
+106	45	0.11327
+107	45	0.11086
+108	45	0.10248
+109	45	0.069526
+110	45	0.030016
+111	45	-0.052226
+112	45	-0.11575
+113	45	-0.10732
+114	45	-0.099653
+115	45	-0.16387
+116	45	-0.14805
+117	45	-0.11894
+118	45	-0.063356
+119	45	-0.036321
+120	45	0.01249
+121	45	0.095695
+122	45	0.10025
+123	45	0.14785
+124	45	0.1711
+125	45	0.16282
+126	45	0.33273
+127	45	0.3655
+128	45	0.26798
+129	45	0.17641
+130	45	0.13007
+131	45	0.20943
+132	45	0.036351
+133	45	0.594
+134	45	0.66704
+135	45	0.38108
+136	45	0.21055
+137	45	0.05575
+138	45	0
+139	45	0
+140	45	0
+141	45	0
+142	45	2.502
+143	45	0
+144	45	0
+145	45	0
+146	45	0
+147	45	0
+148	45	0
+149	45	0
+150	45	0
+151	45	0
+152	45	0
+153	45	0
+154	45	0
+155	45	0
+156	45	0
+157	45	0
+158	45	0
+159	45	0
+160	45	0
+161	45	0
+162	45	0
+163	45	0
+164	45	0
+165	45	0
+166	45	0
+167	45	0
+168	45	0
+169	45	0
+170	45	0
+171	45	0
+172	45	0
+173	45	0
+174	45	0
+175	45	0
+176	45	0
+177	45	0
+178	45	0
+179	45	0
+180	45	0
+181	45	0
+182	45	0
+183	45	0
+184	45	0
+185	45	0
+186	45	0
+187	45	0
+188	45	0
+189	45	0
+190	45	0
+191	45	0
+192	45	0
+193	45	0
+194	45	0
+195	45	0
+196	45	0
+197	45	0
+198	45	0
+199	45	0
+200	45	0
+201	45	0
+202	45	0
+203	45	0
+204	45	0
+205	45	0
+206	45	0
+207	45	0
+208	45	0
+209	45	0
+210	45	0
+211	45	0
+212	45	0
+213	45	0
+214	45	0
+215	45	0
+216	45	0
+217	45	0
+218	45	0
+219	45	0
+220	45	0
+221	45	0
+222	45	0
+223	45	0
+224	45	0
+225	45	0
+226	45	0
+227	45	0
+228	45	0
+229	45	0
+230	45	0
+231	45	0
+232	45	0
+233	45	0
+234	45	0
+235	45	0
+236	45	0.72282
+237	45	1.9863
+238	45	2.1618
+239	45	0.62425
+240	45	0.91008
+241	45	0.66737
+242	45	0.68591
+243	45	0.62758
+244	45	0.56317
+245	45	0.68329
+246	45	0.7945
+247	45	0.87088
+248	45	0.94727
+249	45	0.89272
+250	45	0.84873
+251	45	1.0137
+252	45	1.2063
+253	45	1.0727
+254	45	0.70192
+255	45	0.82491
+256	45	0.90242
+257	45	0.94264
+258	45	0.77041
+259	45	0.76648
+260	45	0.84909
+261	45	0.83813
+262	45	0.76831
+263	45	0.62886
+264	45	0.243
+265	45	-0.099258
+266	45	-0.29979
+267	45	-0.20593
+268	45	-0.17525
+269	45	-0.014708
+270	45	0.12786
+271	45	0.25722
+272	45	0.16139
+273	45	0
+274	45	0
+275	45	0.41701
+276	45	0.38112
+277	45	0.015269
+278	45	0
+279	45	0
+280	45	0.59968
+281	45	0.66307
+282	45	1.08
+283	45	1.2774
+284	45	1.6233
+285	45	1.8673
+286	45	1.3783
+287	45	1.2816
+288	45	1.6049
+289	45	1.439
+290	45	1.0629
+291	45	0.74438
+292	45	0.49197
+293	45	0.33985
+294	45	0.11925
+295	45	0.7233
+296	45	0.68224
+297	45	0.50452
+298	45	0.15244
+299	45	0
+300	45	0
+301	45	0
+302	45	0
+303	45	0
+304	45	0
+305	45	0
+306	45	0
+307	45	0
+308	45	0
+309	45	0
+310	45	0
+311	45	0
+312	45	0
+313	45	0
+314	45	0
+315	45	0
+316	45	0
+317	45	0
+318	45	0
+319	45	0
+320	45	0
+321	45	0
+322	45	0
+323	45	0
+324	45	0
+325	45	0
+326	45	0
+327	45	0
+328	45	0
+329	45	0
+330	45	0
+331	45	0
+332	45	0
+333	45	0
+334	45	0
+335	45	0
+336	45	0
+337	45	0
+338	45	0
+339	45	0
+340	45	0
+341	45	0
+342	45	0
+343	45	0
+344	45	0
+345	45	0
+346	45	0
+347	45	0
+348	45	0
+349	45	0
+350	45	0
+351	45	0
+352	45	0
+353	45	0
+354	45	0
+355	45	0
+356	45	0
+357	45	0
+358	45	0
+359	45	-0.0051312
+360	45	-0.11043
+0	45.5	-0.09339
+1	45.5	-0.244
+2	45.5	-0.23267
+3	45.5	-0.17278
+4	45.5	-0.12217
+5	45.5	-0.060031
+6	45.5	-0.0096261
+7	45.5	0.0063193
+8	45.5	0.074011
+9	45.5	0.11356
+10	45.5	0.095194
+11	45.5	0.14906
+12	45.5	0.10661
+13	45.5	0.11103
+14	45.5	0.14675
+15	45.5	0.20933
+16	45.5	0.34692
+17	45.5	0.41943
+18	45.5	0.33853
+19	45.5	0.24015
+20	45.5	0.15683
+21	45.5	0.040688
+22	45.5	-0.06514
+23	45.5	-0.15612
+24	45.5	-0.24786
+25	45.5	-0.3136
+26	45.5	-0.37989
+27	45.5	-0.2554
+28	45.5	-0.12651
+29	45.5	-0.092551
+30	45.5	-0.036268
+31	45.5	0
+32	45.5	0
+33	45.5	0.016462
+34	45.5	0.084386
+35	45.5	0.031263
+36	45.5	0.002219
+37	45.5	-0.00014329
+38	45.5	-0.23426
+39	45.5	-0.56712
+40	45.5	-0.73236
+41	45.5	-0.79523
+42	45.5	-1.0685
+43	45.5	-1.1122
+44	45.5	-1.0614
+45	45.5	-1.1608
+46	45.5	-1.2217
+47	45.5	-1.5745
+48	45.5	-0.2574
+49	45.5	0
+50	45.5	0
+51	45.5	-0.065409
+52	45.5	-0.19654
+53	45.5	-0.37771
+54	45.5	-0.80709
+55	45.5	-1.5351
+56	45.5	-1.8534
+57	45.5	-2.2133
+58	45.5	-2.5572
+59	45.5	-0.7678
+60	45.5	0
+61	45.5	-0.16347
+62	45.5	-0.76812
+63	45.5	-0.62817
+64	45.5	-0.45459
+65	45.5	-0.3643
+66	45.5	-0.32004
+67	45.5	-0.39003
+68	45.5	-0.44161
+69	45.5	-0.40462
+70	45.5	-0.42981
+71	45.5	-0.33867
+72	45.5	-0.26294
+73	45.5	-0.16637
+74	45.5	-0.045895
+75	45.5	-0.025841
+76	45.5	-0.009105
+77	45.5	-0.034394
+78	45.5	-0.15027
+79	45.5	-0.29675
+80	45.5	-0.39261
+81	45.5	-0.49856
+82	45.5	-1.176
+83	45.5	-0.82997
+84	45.5	-0.60126
+85	45.5	-0.91215
+86	45.5	-0.46539
+87	45.5	-1.4613
+88	45.5	-1.4972
+89	45.5	-2.2489
+90	45.5	-1.537
+91	45.5	-1.0078
+92	45.5	-1.0462
+93	45.5	-0.5422
+94	45.5	-0.073342
+95	45.5	-0.041022
+96	45.5	0.007572
+97	45.5	-0.048794
+98	45.5	-0.061995
+99	45.5	-0.055631
+100	45.5	-0.024632
+101	45.5	-0.026117
+102	45.5	-0.015991
+103	45.5	-0.002024
+104	45.5	0.02106
+105	45.5	0.11285
+106	45.5	0.12991
+107	45.5	0.12704
+108	45.5	0.11894
+109	45.5	0.08795
+110	45.5	0.04844
+111	45.5	-0.01422
+112	45.5	-0.092336
+113	45.5	-0.080012
+114	45.5	-0.086337
+115	45.5	-0.11691
+116	45.5	-0.10137
+117	45.5	-0.082806
+118	45.5	-0.036894
+119	45.5	-0.016899
+120	45.5	0.034732
+121	45.5	0.24575
+122	45.5	0.1598
+123	45.5	0.2054
+124	45.5	0.23179
+125	45.5	0.20508
+126	45.5	0.30682
+127	45.5	0.3434
+128	45.5	0.25077
+129	45.5	0.23955
+130	45.5	0.20624
+131	45.5	0.24173
+132	45.5	0.098107
+133	45.5	0.71451
+134	45.5	0.88282
+135	45.5	0.53704
+136	45.5	0.24406
+137	45.5	0.099641
+138	45.5	0.011221
+139	45.5	0
+140	45.5	0
+141	45.5	0
+142	45.5	0.77622
+143	45.5	0
+144	45.5	0
+145	45.5	0
+146	45.5	0
+147	45.5	0
+148	45.5	0
+149	45.5	0
+150	45.5	0
+151	45.5	0
+152	45.5	0
+153	45.5	0
+154	45.5	0
+155	45.5	0
+156	45.5	0
+157	45.5	0
+158	45.5	0
+159	45.5	0
+160	45.5	0
+161	45.5	0
+162	45.5	0
+163	45.5	0
+164	45.5	0
+165	45.5	0
+166	45.5	0
+167	45.5	0
+168	45.5	0
+169	45.5	0
+170	45.5	0
+171	45.5	0
+172	45.5	0
+173	45.5	0
+174	45.5	0
+175	45.5	0
+176	45.5	0
+177	45.5	0
+178	45.5	0
+179	45.5	0
+180	45.5	0
+181	45.5	0
+182	45.5	0
+183	45.5	0
+184	45.5	0
+185	45.5	0
+186	45.5	0
+187	45.5	0
+188	45.5	0
+189	45.5	0
+190	45.5	0
+191	45.5	0
+192	45.5	0
+193	45.5	0
+194	45.5	0
+195	45.5	0
+196	45.5	0
+197	45.5	0
+198	45.5	0
+199	45.5	0
+200	45.5	0
+201	45.5	0
+202	45.5	0
+203	45.5	0
+204	45.5	0
+205	45.5	0
+206	45.5	0
+207	45.5	0
+208	45.5	0
+209	45.5	0
+210	45.5	0
+211	45.5	0
+212	45.5	0
+213	45.5	0
+214	45.5	0
+215	45.5	0
+216	45.5	0
+217	45.5	0
+218	45.5	0
+219	45.5	0
+220	45.5	0
+221	45.5	0
+222	45.5	0
+223	45.5	0
+224	45.5	0
+225	45.5	0
+226	45.5	0
+227	45.5	0
+228	45.5	0
+229	45.5	0
+230	45.5	0
+231	45.5	0
+232	45.5	0
+233	45.5	0
+234	45.5	0
+235	45.5	0
+236	45.5	0.035262
+237	45.5	2.2561
+238	45.5	2.3868
+239	45.5	0.95734
+240	45.5	1.0218
+241	45.5	0.73362
+242	45.5	0.68531
+243	45.5	0.6764
+244	45.5	0.63573
+245	45.5	0.68782
+246	45.5	0.83236
+247	45.5	0.9195
+248	45.5	0.99588
+249	45.5	0.85486
+250	45.5	0.89096
+251	45.5	1.0494
+252	45.5	1.242
+253	45.5	1.0719
+254	45.5	0.72419
+255	45.5	0.84325
+256	45.5	0.94924
+257	45.5	0.8657
+258	45.5	0.72266
+259	45.5	0.67752
+260	45.5	0.76498
+261	45.5	0.76753
+262	45.5	0.62718
+263	45.5	0.41075
+264	45.5	0.042299
+265	45.5	-0.37158
+266	45.5	-0.60362
+267	45.5	-0.49996
+268	45.5	-0.40111
+269	45.5	-0.19738
+270	45.5	0.019935
+271	45.5	0.14115
+272	45.5	0.19243
+273	45.5	0.041761
+274	45.5	0
+275	45.5	0.50158
+276	45.5	0.25888
+277	45.5	0
+278	45.5	0
+279	45.5	0
+280	45.5	0.69729
+281	45.5	0.99056
+282	45.5	1.2044
+283	45.5	1.3741
+284	45.5	1.7067
+285	45.5	1.9816
+286	45.5	1.6733
+287	45.5	1.839
+288	45.5	1.8522
+289	45.5	1.6248
+290	45.5	1.2409
+291	45.5	0.94681
+292	45.5	0.42924
+293	45.5	0.66947
+294	45.5	0.71066
+295	45.5	0.96792
+296	45.5	0.41842
+297	45.5	1.2438
+298	45.5	1.1994
+299	45.5	0
+300	45.5	0
+301	45.5	0
+302	45.5	0
+303	45.5	0
+304	45.5	0
+305	45.5	0
+306	45.5	0
+307	45.5	0
+308	45.5	0
+309	45.5	0
+310	45.5	0
+311	45.5	0
+312	45.5	0
+313	45.5	0
+314	45.5	0
+315	45.5	0
+316	45.5	0
+317	45.5	0
+318	45.5	0
+319	45.5	0
+320	45.5	0
+321	45.5	0
+322	45.5	0
+323	45.5	0
+324	45.5	0
+325	45.5	0
+326	45.5	0
+327	45.5	0
+328	45.5	0
+329	45.5	0
+330	45.5	0
+331	45.5	0
+332	45.5	0
+333	45.5	0
+334	45.5	0
+335	45.5	0
+336	45.5	0
+337	45.5	0
+338	45.5	0
+339	45.5	0
+340	45.5	0
+341	45.5	0
+342	45.5	0
+343	45.5	0
+344	45.5	0
+345	45.5	0
+346	45.5	0
+347	45.5	0
+348	45.5	0
+349	45.5	0
+350	45.5	0
+351	45.5	0
+352	45.5	0
+353	45.5	0
+354	45.5	0
+355	45.5	0
+356	45.5	0
+357	45.5	0
+358	45.5	0
+359	45.5	-0.010866
+360	45.5	-0.09339
+0	46	-0.09908
+1	46	-0.24876
+2	46	-0.24221
+3	46	-0.18614
+4	46	-0.13397
+5	46	-0.081674
+6	46	-0.027492
+7	46	-0.0055646
+8	46	0.033558
+9	46	0.062559
+10	46	-0.0017477
+11	46	0.064369
+12	46	0.044261
+13	46	0.10429
+14	46	0.17013
+15	46	0.21854
+16	46	0.32825
+17	46	0.40105
+18	46	0.33443
+19	46	0.24054
+20	46	0.1697
+21	46	0.056465
+22	46	-0.099318
+23	46	-0.16979
+24	46	-0.25166
+25	46	-0.3532
+26	46	-0.42314
+27	46	-0.34058
+28	46	-0.23454
+29	46	-0.21476
+30	46	-0.090851
+31	46	0
+32	46	-0.020065
+33	46	-0.01283
+34	46	-0.05678
+35	46	-0.1032
+36	46	0.0027334
+37	46	-0.0046122
+38	46	-0.26479
+39	46	-0.8487
+40	46	-0.97658
+41	46	-0.97307
+42	46	-1.1475
+43	46	-1.1807
+44	46	-1.1421
+45	46	-1.1061
+46	46	-1.2418
+47	46	-1.5353
+48	46	-1.3233
+49	46	-0.24477
+50	46	0
+51	46	-0.011897
+52	46	0
+53	46	-0.16377
+54	46	-0.90077
+55	46	-1.4217
+56	46	-1.8425
+57	46	-1.967
+58	46	-2.2782
+59	46	-0.18347
+60	46	0
+61	46	-0.35838
+62	46	-0.46313
+63	46	-0.49149
+64	46	-0.38654
+65	46	-0.33116
+66	46	-0.3039
+67	46	-0.35566
+68	46	-0.38876
+69	46	-0.36271
+70	46	-0.37585
+71	46	-0.26986
+72	46	-0.18789
+73	46	-0.088595
+74	46	-0.003551
+75	46	0.019548
+76	46	0.027279
+77	46	0.036646
+78	46	-0.034218
+79	46	-0.10088
+80	46	-0.42577
+81	46	-0.66976
+82	46	-0.81607
+83	46	-0.57726
+84	46	-0.66911
+85	46	-0.85604
+86	46	-0.41406
+87	46	-1.0643
+88	46	-1.0755
+89	46	-1.4872
+90	46	-1.0637
+91	46	-0.55621
+92	46	-0.60289
+93	46	-0.26768
+94	46	-0.015488
+95	46	0.017398
+96	46	0.0066133
+97	46	-0.067151
+98	46	-0.084573
+99	46	-0.051294
+100	46	-0.016193
+101	46	-0.012647
+102	46	-0.0024012
+103	46	0.012264
+104	46	0.04379
+105	46	0.11186
+106	46	0.14426
+107	46	0.14322
+108	46	0.13391
+109	46	0.10637
+110	46	0.066864
+111	46	0.023401
+112	46	-0.06503
+113	46	-0.055676
+114	46	-0.07616
+115	46	-0.069953
+116	46	-0.05469
+117	46	-0.039513
+118	46	-0.017143
+119	46	0.002523
+120	46	0.10786
+121	46	0.3958
+122	46	0.26517
+123	46	0.26296
+124	46	0.29247
+125	46	0.24455
+126	46	0.26068
+127	46	0.29488
+128	46	0.23689
+129	46	0.30269
+130	46	0.28608
+131	46	0.28265
+132	46	0.25905
+133	46	0.8162
+134	46	1.0674
+135	46	0.7128
+136	46	0.28265
+137	46	0.1436
+138	46	0.036383
+139	46	0
+140	46	0
+141	46	0
+142	46	0.4759
+143	46	0.37616
+144	46	0
+145	46	0
+146	46	0
+147	46	0
+148	46	0
+149	46	0
+150	46	0
+151	46	0
+152	46	0
+153	46	0
+154	46	0
+155	46	0
+156	46	0
+157	46	0
+158	46	0
+159	46	0
+160	46	0
+161	46	0
+162	46	0
+163	46	0
+164	46	0
+165	46	0
+166	46	0
+167	46	0
+168	46	0
+169	46	0
+170	46	0
+171	46	0
+172	46	0
+173	46	0
+174	46	0
+175	46	0
+176	46	0
+177	46	0
+178	46	0
+179	46	0
+180	46	0
+181	46	0
+182	46	0
+183	46	0
+184	46	0
+185	46	0
+186	46	0
+187	46	0
+188	46	0
+189	46	0
+190	46	0
+191	46	0
+192	46	0
+193	46	0
+194	46	0
+195	46	0
+196	46	0
+197	46	0
+198	46	0
+199	46	0
+200	46	0
+201	46	0
+202	46	0
+203	46	0
+204	46	0
+205	46	0
+206	46	0
+207	46	0
+208	46	0
+209	46	0
+210	46	0
+211	46	0
+212	46	0
+213	46	0
+214	46	0
+215	46	0
+216	46	0
+217	46	0
+218	46	0
+219	46	0
+220	46	0
+221	46	0
+222	46	0
+223	46	0
+224	46	0
+225	46	0
+226	46	0
+227	46	0
+228	46	0
+229	46	0
+230	46	0
+231	46	0
+232	46	0
+233	46	0
+234	46	0
+235	46	0
+236	46	0
+237	46	2.0591
+238	46	2.4159
+239	46	1.4332
+240	46	1.0642
+241	46	0.75335
+242	46	0.65884
+243	46	0.61976
+244	46	0.62658
+245	46	0.69234
+246	46	0.86495
+247	46	0.96812
+248	46	0.98966
+249	46	0.817
+250	46	0.87166
+251	46	0.98675
+252	46	1.1469
+253	46	1.0225
+254	46	0.74647
+255	46	0.86159
+256	46	0.92698
+257	46	0.78979
+258	46	0.71845
+259	46	0.62772
+260	46	0.71698
+261	46	0.68667
+262	46	0.44649
+263	46	0.19385
+264	46	-0.20766
+265	46	-0.67251
+266	46	-0.89982
+267	46	-0.82497
+268	46	-0.65716
+269	46	-0.41067
+270	46	-0.064321
+271	46	0.037818
+272	46	0.11691
+273	46	0.19464
+274	46	0.026374
+275	46	0.57724
+276	46	0.058335
+277	46	0.35543
+278	46	0.1383
+279	46	0.38428
+280	46	0.79984
+281	46	1.0869
+282	46	1.2778
+283	46	1.4563
+284	46	1.7856
+285	46	2.0768
+286	46	1.9605
+287	46	2.2256
+288	46	1.6193
+289	46	1.8219
+290	46	1.4131
+291	46	1.1544
+292	46	0.80263
+293	46	0.92189
+294	46	1.0766
+295	46	1.1402
+296	46	0.54952
+297	46	0.80517
+298	46	0
+299	46	0.082166
+300	46	0
+301	46	0
+302	46	0
+303	46	0
+304	46	0
+305	46	0
+306	46	0
+307	46	0
+308	46	0
+309	46	0
+310	46	0
+311	46	0
+312	46	0
+313	46	0
+314	46	0
+315	46	0
+316	46	0
+317	46	0
+318	46	0
+319	46	0
+320	46	0
+321	46	0
+322	46	0
+323	46	0
+324	46	0
+325	46	0
+326	46	0
+327	46	0
+328	46	0
+329	46	0
+330	46	0
+331	46	0
+332	46	0
+333	46	0
+334	46	0
+335	46	0
+336	46	0
+337	46	0
+338	46	0
+339	46	0
+340	46	0
+341	46	0
+342	46	0
+343	46	0
+344	46	0
+345	46	0
+346	46	0
+347	46	0
+348	46	0
+349	46	0
+350	46	0
+351	46	0
+352	46	0
+353	46	0
+354	46	0
+355	46	0
+356	46	0
+357	46	0
+358	46	-0.0071038
+359	46	-0.038631
+360	46	-0.09908
+0	46.5	-0.11382
+1	46.5	-0.2737
+2	46.5	-0.25527
+3	46.5	-0.20024
+4	46.5	-0.1433
+5	46.5	-0.098528
+6	46.5	-0.061033
+7	46.5	-0.0228
+8	46.5	-0.003631
+9	46.5	-0.012614
+10	46.5	-0.0081867
+11	46.5	0.0049531
+12	46.5	0.036593
+13	46.5	0.087012
+14	46.5	0.11234
+15	46.5	0.19856
+16	46.5	0.31815
+17	46.5	0.38268
+18	46.5	0.32094
+19	46.5	0.24903
+20	46.5	0.18257
+21	46.5	0.063544
+22	46.5	-0.081792
+23	46.5	-0.16035
+24	46.5	-0.24316
+25	46.5	-0.32314
+26	46.5	-0.46639
+27	46.5	-0.38053
+28	46.5	-0.34479
+29	46.5	-0.3103
+30	46.5	-0.19454
+31	46.5	-0.099766
+32	46.5	-0.095262
+33	46.5	-0.15193
+34	46.5	-0.25268
+35	46.5	-0.26465
+36	46.5	-0.13945
+37	46.5	-0.28317
+38	46.5	-0.19129
+39	46.5	-1.011
+40	46.5	-1.1718
+41	46.5	-1.164
+42	46.5	-1.2264
+43	46.5	-1.2427
+44	46.5	-1.2211
+45	46.5	-1.0949
+46	46.5	-1.1696
+47	46.5	-1.3532
+48	46.5	-1.7569
+49	46.5	-1.9338
+50	46.5	-0.96212
+51	46.5	0
+52	46.5	0
+53	46.5	-0.11801
+54	46.5	-1.1525
+55	46.5	-1.285
+56	46.5	-1.7995
+57	46.5	-1.767
+58	46.5	-1.6606
+59	46.5	-1.176
+60	46.5	0
+61	46.5	-0.46832
+62	46.5	-0.53475
+63	46.5	-0.39616
+64	46.5	-0.32712
+65	46.5	-0.30305
+66	46.5	-0.28804
+67	46.5	-0.30157
+68	46.5	-0.33591
+69	46.5	-0.31668
+70	46.5	-0.32189
+71	46.5	-0.20681
+72	46.5	-0.106
+73	46.5	-0.015834
+74	46.5	0.021743
+75	46.5	0.059126
+76	46.5	0.010079
+77	46.5	0.11908
+78	46.5	0.065736
+79	46.5	-0.021767
+80	46.5	-0.17445
+81	46.5	-0.36414
+82	46.5	-0.39261
+83	46.5	-0.34334
+84	46.5	-0.52942
+85	46.5	-0.65648
+86	46.5	-0.37367
+87	46.5	-0.66726
+88	46.5	-0.65375
+89	46.5	-0.7256
+90	46.5	-0.59504
+91	46.5	-0.16149
+92	46.5	-0.15963
+93	46.5	-0.017971
+94	46.5	0.002717
+95	46.5	0.02842
+96	46.5	9.3541e-05
+97	46.5	-0.08072
+98	46.5	-0.10462
+99	46.5	-0.046956
+100	46.5	-0.0099875
+101	46.5	0.00082253
+102	46.5	0.011189
+103	46.5	0.025854
+104	46.5	0.059733
+105	46.5	0.11088
+106	46.5	0.14342
+107	46.5	0.1594
+108	46.5	0.14888
+109	46.5	0.12358
+110	46.5	0.082597
+111	46.5	0.038027
+112	46.5	-0.037723
+113	46.5	-0.044912
+114	46.5	-0.065982
+115	46.5	-0.049476
+116	46.5	-0.038152
+117	46.5	-0.026717
+118	46.5	0.0026069
+119	46.5	0.021945
+120	46.5	0.18099
+121	46.5	0.47992
+122	46.5	0.41104
+123	46.5	0.32051
+124	46.5	0.35316
+125	46.5	0.28403
+126	46.5	0.21215
+127	46.5	0.24838
+128	46.5	0.30003
+129	46.5	0.36583
+130	46.5	0.36593
+131	46.5	0.31923
+132	46.5	0.41998
+133	46.5	0.89649
+134	46.5	1.2421
+135	46.5	0.89465
+136	46.5	0.33225
+137	46.5	0.1841
+138	46.5	0.10568
+139	46.5	0
+140	46.5	0
+141	46.5	0
+142	46.5	1.1306
+143	46.5	1.3761
+144	46.5	0.12525
+145	46.5	0
+146	46.5	0
+147	46.5	0
+148	46.5	0
+149	46.5	0
+150	46.5	0
+151	46.5	0
+152	46.5	0
+153	46.5	0
+154	46.5	0
+155	46.5	0
+156	46.5	0
+157	46.5	0
+158	46.5	0
+159	46.5	0
+160	46.5	0
+161	46.5	0
+162	46.5	0
+163	46.5	0
+164	46.5	0
+165	46.5	0
+166	46.5	0
+167	46.5	0
+168	46.5	0
+169	46.5	0
+170	46.5	0
+171	46.5	0
+172	46.5	0
+173	46.5	0
+174	46.5	0
+175	46.5	0
+176	46.5	0
+177	46.5	0
+178	46.5	0
+179	46.5	0
+180	46.5	0
+181	46.5	0
+182	46.5	0
+183	46.5	0
+184	46.5	0
+185	46.5	0
+186	46.5	0
+187	46.5	0
+188	46.5	0
+189	46.5	0
+190	46.5	0
+191	46.5	0
+192	46.5	0
+193	46.5	0
+194	46.5	0
+195	46.5	0
+196	46.5	0
+197	46.5	0
+198	46.5	0
+199	46.5	0
+200	46.5	0
+201	46.5	0
+202	46.5	0
+203	46.5	0
+204	46.5	0
+205	46.5	0
+206	46.5	0
+207	46.5	0
+208	46.5	0
+209	46.5	0
+210	46.5	0
+211	46.5	0
+212	46.5	0
+213	46.5	0
+214	46.5	0
+215	46.5	0
+216	46.5	0
+217	46.5	0
+218	46.5	0
+219	46.5	0
+220	46.5	0
+221	46.5	0
+222	46.5	0
+223	46.5	0
+224	46.5	0
+225	46.5	0
+226	46.5	0
+227	46.5	0
+228	46.5	0
+229	46.5	0
+230	46.5	0
+231	46.5	0
+232	46.5	0
+233	46.5	0
+234	46.5	0
+235	46.5	0
+236	46.5	0.96841
+237	46.5	1.4579
+238	46.5	2.2916
+239	46.5	1.909
+240	46.5	1.2056
+241	46.5	0.76706
+242	46.5	0.63424
+243	46.5	0.56312
+244	46.5	0.61485
+245	46.5	0.71633
+246	46.5	0.89754
+247	46.5	1.0167
+248	46.5	0.97781
+249	46.5	0.78168
+250	46.5	0.81898
+251	46.5	0.88915
+252	46.5	1.0493
+253	46.5	0.85771
+254	46.5	0.76076
+255	46.5	0.87406
+256	46.5	0.90473
+257	46.5	0.71878
+258	46.5	0.73304
+259	46.5	0.58579
+260	46.5	0.63504
+261	46.5	0.58975
+262	46.5	0.26364
+263	46.5	-0.00011424
+264	46.5	-0.45322
+265	46.5	-0.96396
+266	46.5	-1.1823
+267	46.5	-1.1156
+268	46.5	-0.83046
+269	46.5	-0.38048
+270	46.5	-0.043693
+271	46.5	0.0092326
+272	46.5	0.079168
+273	46.5	0.12643
+274	46.5	0.259
+275	46.5	0.14208
+276	46.5	0.50104
+277	46.5	0.77087
+278	46.5	0.5999
+279	46.5	0.87524
+280	46.5	0.9411
+281	46.5	1.1255
+282	46.5	1.3183
+283	46.5	1.4668
+284	46.5	1.7799
+285	46.5	2.1115
+286	46.5	2.3131
+287	46.5	2.3292
+288	46.5	2.1859
+289	46.5	2.0194
+290	46.5	1.5695
+291	46.5	1.3725
+292	46.5	1.2843
+293	46.5	1.1885
+294	46.5	1.2793
+295	46.5	1.1448
+296	46.5	0.28134
+297	46.5	0.39881
+298	46.5	0
+299	46.5	0.18349
+300	46.5	0
+301	46.5	0
+302	46.5	0
+303	46.5	0
+304	46.5	0
+305	46.5	0
+306	46.5	0
+307	46.5	6.4086e-06
+308	46.5	0
+309	46.5	0
+310	46.5	0
+311	46.5	0
+312	46.5	0
+313	46.5	0
+314	46.5	0
+315	46.5	0
+316	46.5	0
+317	46.5	0
+318	46.5	0
+319	46.5	0
+320	46.5	0
+321	46.5	0
+322	46.5	0
+323	46.5	0
+324	46.5	0
+325	46.5	0
+326	46.5	0
+327	46.5	0
+328	46.5	0
+329	46.5	0
+330	46.5	0
+331	46.5	0
+332	46.5	0
+333	46.5	0
+334	46.5	0
+335	46.5	0
+336	46.5	0
+337	46.5	0
+338	46.5	0
+339	46.5	0
+340	46.5	0
+341	46.5	0
+342	46.5	0
+343	46.5	0
+344	46.5	0
+345	46.5	0
+346	46.5	0
+347	46.5	0
+348	46.5	0
+349	46.5	0
+350	46.5	0
+351	46.5	0
+352	46.5	0
+353	46.5	0
+354	46.5	0
+355	46.5	0
+356	46.5	0
+357	46.5	0
+358	46.5	-0.01838
+359	46.5	-0.089722
+360	46.5	-0.11382
+0	47	-0.18191
+1	47	-0.30618
+2	47	-0.29249
+3	47	-0.21435
+4	47	-0.15264
+5	47	-0.10183
+6	47	-0.069384
+7	47	-0.040433
+8	47	-0.031782
+9	47	-0.020536
+10	47	-0.0097651
+11	47	-0.0056107
+12	47	0.0024561
+13	47	0.070752
+14	47	0.12455
+15	47	0.18001
+16	47	0.30806
+17	47	0.36594
+18	47	0.30833
+19	47	0.25751
+20	47	0.19545
+21	47	0.070623
+22	47	-0.059673
+23	47	-0.1509
+24	47	-0.23465
+25	47	-0.29308
+26	47	-0.4588
+27	47	-0.38043
+28	47	-0.36177
+29	47	-0.36678
+30	47	-0.32209
+31	47	-0.22494
+32	47	-0.20668
+33	47	-0.31214
+34	47	-0.44664
+35	47	-0.15843
+36	47	-0.47416
+37	47	-0.59134
+38	47	-0.33196
+39	47	-1.1656
+40	47	-1.2888
+41	47	-1.303
+42	47	-1.3054
+43	47	-1.3048
+44	47	-1.2899
+45	47	-1.1748
+46	47	-1.1222
+47	47	-1.1439
+48	47	-1.2821
+49	47	-1.7085
+50	47	-1.4849
+51	47	-0.41791
+52	47	-0.39844
+53	47	-0.48992
+54	47	-1.2431
+55	47	-1.1802
+56	47	-1.64
+57	47	-1.6619
+58	47	-1.4626
+59	47	-1.1237
+60	47	-0.28198
+61	47	-0.60734
+62	47	-0.48381
+63	47	-0.30959
+64	47	-0.28147
+65	47	-0.27955
+66	47	-0.27411
+67	47	-0.28068
+68	47	-0.29111
+69	47	-0.29186
+70	47	-0.27603
+71	47	-0.19464
+72	47	-0.091554
+73	47	0.012472
+74	47	0.092992
+75	47	0.10484
+76	47	0.070727
+77	47	0.2141
+78	47	0.16521
+79	47	0.072372
+80	47	0.010045
+81	47	-0.14146
+82	47	-0.21192
+83	47	-0.20202
+84	47	-0.37883
+85	47	-0.45692
+86	47	-0.28227
+87	47	-0.38552
+88	47	-0.44497
+89	47	-0.41822
+90	47	-0.20644
+91	47	-0.091148
+92	47	-0.049312
+93	47	0.0093423
+94	47	0.028301
+95	47	0.031977
+96	47	-0.018149
+97	47	-0.094288
+98	47	-0.10028
+99	47	-0.036346
+100	47	0.0088064
+101	47	0.014255
+102	47	0.024778
+103	47	0.046353
+104	47	0.060249
+105	47	0.10989
+106	47	0.14258
+107	47	0.17255
+108	47	0.17157
+109	47	0.15454
+110	47	0.098133
+111	47	0.05119
+112	47	-0.011184
+113	47	-0.034149
+114	47	-0.055804
+115	47	-0.04416
+116	47	-0.032836
+117	47	-0.021153
+118	47	0.017152
+119	47	0.041367
+120	47	0.25413
+121	47	0.55306
+122	47	0.55691
+123	47	0.38445
+124	47	0.41384
+125	47	0.3235
+126	47	0.30397
+127	47	0.34988
+128	47	0.37584
+129	47	0.42897
+130	47	0.42415
+131	47	0.36226
+132	47	0.58092
+133	47	0.97572
+134	47	1.3308
+135	47	1.0765
+136	47	0.53792
+137	47	0.23222
+138	47	0.16825
+139	47	0.03886
+140	47	0
+141	47	0
+142	47	1.4385
+143	47	1.8932
+144	47	0.047053
+145	47	0
+146	47	0
+147	47	0
+148	47	0
+149	47	0
+150	47	0
+151	47	0
+152	47	0
+153	47	0
+154	47	0
+155	47	0
+156	47	0
+157	47	0
+158	47	0
+159	47	0
+160	47	0
+161	47	0
+162	47	0
+163	47	0
+164	47	0
+165	47	0
+166	47	0
+167	47	0
+168	47	0
+169	47	0
+170	47	0
+171	47	0
+172	47	0
+173	47	0
+174	47	0
+175	47	0
+176	47	0
+177	47	0
+178	47	0
+179	47	0
+180	47	0
+181	47	0
+182	47	0
+183	47	0
+184	47	0
+185	47	0
+186	47	0
+187	47	0
+188	47	0
+189	47	0
+190	47	0
+191	47	0
+192	47	0
+193	47	0
+194	47	0
+195	47	0
+196	47	0
+197	47	0
+198	47	0
+199	47	0
+200	47	0
+201	47	0
+202	47	0
+203	47	0
+204	47	0
+205	47	0
+206	47	0
+207	47	0
+208	47	0
+209	47	0
+210	47	0
+211	47	0
+212	47	0
+213	47	0
+214	47	0
+215	47	0
+216	47	0
+217	47	0
+218	47	0
+219	47	0
+220	47	0
+221	47	0
+222	47	0
+223	47	0
+224	47	0
+225	47	0
+226	47	0
+227	47	0
+228	47	0
+229	47	0
+230	47	0
+231	47	0
+232	47	0
+233	47	0
+234	47	0
+235	47	0
+236	47	1.6046
+237	47	0.445
+238	47	2.0293
+239	47	2.1531
+240	47	1.31
+241	47	0.78076
+242	47	0.60963
+243	47	0.50649
+244	47	0.60312
+245	47	0.74892
+246	47	0.93013
+247	47	1.0654
+248	47	0.96596
+249	47	0.76984
+250	47	0.7663
+251	47	0.79155
+252	47	0.95171
+253	47	0.69295
+254	47	0.75927
+255	47	0.88507
+256	47	0.90853
+257	47	0.7957
+258	47	0.77393
+259	47	0.61203
+260	47	0.53633
+261	47	0.42966
+262	47	0.095535
+263	47	-0.19484
+264	47	-0.672
+265	47	-1.2672
+266	47	-1.4601
+267	47	-1.3054
+268	47	-0.94232
+269	47	-0.06234
+270	47	-0.028382
+271	47	0.0060467
+272	47	0.038247
+273	47	0.072071
+274	47	0.1219
+275	47	0.12913
+276	47	0.82858
+277	47	0.88558
+278	47	0.89999
+279	47	0.94313
+280	47	1.0429
+281	47	1.1207
+282	47	1.3323
+283	47	1.3947
+284	47	1.7486
+285	47	2.1081
+286	47	2.3399
+287	47	2.3987
+288	47	2.1753
+289	47	2.0228
+290	47	1.7238
+291	47	1.5552
+292	47	1.4498
+293	47	1.428
+294	47	1.3174
+295	47	1.0857
+296	47	0
+297	47	0.17309
+298	47	0
+299	47	0.043979
+300	47	0
+301	47	0
+302	47	0.080349
+303	47	0
+304	47	0
+305	47	0.54127
+306	47	0.077749
+307	47	0.1242
+308	47	0
+309	47	0
+310	47	0
+311	47	0
+312	47	0
+313	47	0
+314	47	0
+315	47	0
+316	47	0
+317	47	0
+318	47	0
+319	47	0
+320	47	0
+321	47	0
+322	47	0
+323	47	0
+324	47	0
+325	47	0
+326	47	0
+327	47	0
+328	47	0
+329	47	0
+330	47	0
+331	47	0
+332	47	0
+333	47	0
+334	47	0
+335	47	0
+336	47	0
+337	47	0
+338	47	0
+339	47	0
+340	47	0
+341	47	0
+342	47	0
+343	47	0
+344	47	0
+345	47	0
+346	47	0
+347	47	0
+348	47	0
+349	47	0
+350	47	0
+351	47	0
+352	47	0
+353	47	0
+354	47	0
+355	47	0
+356	47	0
+357	47	0
+358	47	-0.031338
+359	47	-0.13134
+360	47	-0.18191
+0	47.5	-0.13957
+1	47.5	-0.32919
+2	47.5	-0.31785
+3	47.5	-0.22602
+4	47.5	-0.16054
+5	47.5	-0.10178
+6	47.5	-0.071278
+7	47.5	-0.046175
+8	47.5	-0.027189
+9	47.5	-0.018792
+10	47.5	-0.010965
+11	47.5	-0.0079331
+12	47.5	0.011417
+13	47.5	0.081307
+14	47.5	0.14802
+15	47.5	0.18836
+16	47.5	0.29453
+17	47.5	0.3755
+18	47.5	0.32849
+19	47.5	0.27851
+20	47.5	0.20402
+21	47.5	0.077703
+22	47.5	-0.035988
+23	47.5	-0.14059
+24	47.5	-0.22521
+25	47.5	-0.26302
+26	47.5	-0.38285
+27	47.5	-0.38033
+28	47.5	-0.37875
+29	47.5	-0.37859
+30	47.5	-0.39661
+31	47.5	-0.36534
+32	47.5	-0.38965
+33	47.5	-0.45162
+34	47.5	-0.31403
+35	47.5	-0.021275
+36	47.5	-0.76373
+37	47.5	-0.95889
+38	47.5	-0.88079
+39	47.5	-1.3392
+40	47.5	-1.3939
+41	47.5	-1.4078
+42	47.5	-1.3157
+43	47.5	-1.317
+44	47.5	-1.3424
+45	47.5	-1.2581
+46	47.5	-1.224
+47	47.5	-1.2607
+48	47.5	-0.84735
+49	47.5	-0.96112
+50	47.5	-1.5668
+51	47.5	-1.441
+52	47.5	-1.1984
+53	47.5	-1.0164
+54	47.5	-1.1122
+55	47.5	-1.2318
+56	47.5	-1.4786
+57	47.5	-1.5366
+58	47.5	-1.332
+59	47.5	-1.0913
+60	47.5	-0.58577
+61	47.5	-0.6526
+62	47.5	-0.45183
+63	47.5	-0.3032
+64	47.5	-0.28266
+65	47.5	-0.28082
+66	47.5	-0.26522
+67	47.5	-0.28068
+68	47.5	-0.2704
+69	47.5	-0.26649
+70	47.5	-0.24228
+71	47.5	-0.17973
+72	47.5	-0.067442
+73	47.5	0.036027
+74	47.5	0.13354
+75	47.5	0.17418
+76	47.5	0.19146
+77	47.5	0.25402
+78	47.5	0.21876
+79	47.5	0.1755
+80	47.5	0.084223
+81	47.5	-0.070651
+82	47.5	-0.14063
+83	47.5	-0.11615
+84	47.5	-0.17926
+85	47.5	-0.25736
+86	47.5	-0.2235
+87	47.5	-0.3174
+88	47.5	-0.36102
+89	47.5	-0.32629
+90	47.5	-0.1671
+91	47.5	-0.053924
+92	47.5	-0.037992
+93	47.5	0.018607
+94	47.5	0.039786
+95	47.5	0.02236
+96	47.5	-0.061579
+97	47.5	-0.11067
+98	47.5	-0.087231
+99	47.5	-0.0228
+100	47.5	0.038853
+101	47.5	0.033981
+102	47.5	0.064081
+103	47.5	0.097103
+104	47.5	0.1078
+105	47.5	0.10891
+106	47.5	0.14173
+107	47.5	0.17631
+108	47.5	0.20529
+109	47.5	0.18551
+110	47.5	0.11367
+111	47.5	0.064353
+112	47.5	-0.0078337
+113	47.5	-0.029349
+114	47.5	-0.048394
+115	47.5	-0.038844
+116	47.5	-0.027464
+117	47.5	-0.01559
+118	47.5	0.019431
+119	47.5	0.060789
+120	47.5	0.32726
+121	47.5	0.61855
+122	47.5	0.70277
+123	47.5	0.53031
+124	47.5	0.47453
+125	47.5	0.40235
+126	47.5	0.40547
+127	47.5	0.45023
+128	47.5	0.46479
+129	47.5	0.49531
+130	47.5	0.49568
+131	47.5	0.49913
+132	47.5	0.73541
+133	47.5	1.0429
+134	47.5	1.304
+135	47.5	1.1828
+136	47.5	0.7988
+137	47.5	0.32584
+138	47.5	0.22462
+139	47.5	0.1034
+140	47.5	0
+141	47.5	0
+142	47.5	1.2426
+143	47.5	0.58897
+144	47.5	0
+145	47.5	0
+146	47.5	0
+147	47.5	0
+148	47.5	0
+149	47.5	0
+150	47.5	0
+151	47.5	0
+152	47.5	0
+153	47.5	0
+154	47.5	0
+155	47.5	0
+156	47.5	0
+157	47.5	0
+158	47.5	0
+159	47.5	0
+160	47.5	0
+161	47.5	0
+162	47.5	0
+163	47.5	0
+164	47.5	0
+165	47.5	0
+166	47.5	0
+167	47.5	0
+168	47.5	0
+169	47.5	0
+170	47.5	0
+171	47.5	0
+172	47.5	0
+173	47.5	0
+174	47.5	0
+175	47.5	0
+176	47.5	0
+177	47.5	0
+178	47.5	0
+179	47.5	0
+180	47.5	0
+181	47.5	0
+182	47.5	0
+183	47.5	0
+184	47.5	0
+185	47.5	0
+186	47.5	0
+187	47.5	0
+188	47.5	0
+189	47.5	0
+190	47.5	0
+191	47.5	0
+192	47.5	0
+193	47.5	0
+194	47.5	0
+195	47.5	0
+196	47.5	0
+197	47.5	0
+198	47.5	0
+199	47.5	0
+200	47.5	0
+201	47.5	0
+202	47.5	0
+203	47.5	0
+204	47.5	0
+205	47.5	0
+206	47.5	0
+207	47.5	0
+208	47.5	0
+209	47.5	0
+210	47.5	0
+211	47.5	0
+212	47.5	0
+213	47.5	0
+214	47.5	0
+215	47.5	0
+216	47.5	0
+217	47.5	0
+218	47.5	0
+219	47.5	0
+220	47.5	0
+221	47.5	0
+222	47.5	0
+223	47.5	0
+224	47.5	0
+225	47.5	0
+226	47.5	0
+227	47.5	0
+228	47.5	0
+229	47.5	0
+230	47.5	0
+231	47.5	0
+232	47.5	0
+233	47.5	0
+234	47.5	0
+235	47.5	0
+236	47.5	1.6797
+237	47.5	1.5348
+238	47.5	1.8518
+239	47.5	2.0545
+240	47.5	1.3865
+241	47.5	0.81735
+242	47.5	0.58502
+243	47.5	0.45526
+244	47.5	0.63071
+245	47.5	0.73896
+246	47.5	0.96272
+247	47.5	1.114
+248	47.5	0.95411
+249	47.5	0.75799
+250	47.5	0.71362
+251	47.5	0.71051
+252	47.5	0.83593
+253	47.5	0.67961
+254	47.5	0.76355
+255	47.5	0.89608
+256	47.5	0.98198
+257	47.5	0.93758
+258	47.5	0.95904
+259	47.5	0.72669
+260	47.5	0.44964
+261	47.5	0.25035
+262	47.5	-0.072572
+263	47.5	-0.40797
+264	47.5	-0.94059
+265	47.5	-1.5613
+266	47.5	-1.6675
+267	47.5	-1.4485
+268	47.5	-1.0441
+269	47.5	-0.2717
+270	47.5	0
+271	47.5	0
+272	47.5	0.011477
+273	47.5	0
+274	47.5	0.045251
+275	47.5	0.2691
+276	47.5	0.84366
+277	47.5	0.93647
+278	47.5	0.94612
+279	47.5	0.99941
+280	47.5	0.74184
+281	47.5	0.84549
+282	47.5	1.3543
+283	47.5	1.3749
+284	47.5	1.7505
+285	47.5	2.1005
+286	47.5	2.3983
+287	47.5	2.4448
+288	47.5	2.2606
+289	47.5	2.0554
+290	47.5	1.8194
+291	47.5	1.6978
+292	47.5	1.6782
+293	47.5	1.6079
+294	47.5	1.076
+295	47.5	0.93768
+296	47.5	0
+297	47.5	0
+298	47.5	0
+299	47.5	0
+300	47.5	0
+301	47.5	0
+302	47.5	0.44205
+303	47.5	0.065095
+304	47.5	0.65114
+305	47.5	0.90771
+306	47.5	0.45711
+307	47.5	0.44761
+308	47.5	0
+309	47.5	0
+310	47.5	0
+311	47.5	0
+312	47.5	0
+313	47.5	0
+314	47.5	0
+315	47.5	0
+316	47.5	0
+317	47.5	0
+318	47.5	0
+319	47.5	0
+320	47.5	0
+321	47.5	0
+322	47.5	0
+323	47.5	0
+324	47.5	0
+325	47.5	0
+326	47.5	0
+327	47.5	0
+328	47.5	0
+329	47.5	0
+330	47.5	0
+331	47.5	0
+332	47.5	0
+333	47.5	0
+334	47.5	0
+335	47.5	0
+336	47.5	0
+337	47.5	0
+338	47.5	0
+339	47.5	0
+340	47.5	0
+341	47.5	0
+342	47.5	0
+343	47.5	0
+344	47.5	0
+345	47.5	0
+346	47.5	0
+347	47.5	0
+348	47.5	0
+349	47.5	0
+350	47.5	0
+351	47.5	0
+352	47.5	0
+353	47.5	0
+354	47.5	0
+355	47.5	0
+356	47.5	0
+357	47.5	0
+358	47.5	-0.065673
+359	47.5	-0.16921
+360	47.5	-0.13957
+0	48	-0.14553
+1	48	-0.32896
+2	48	-0.32176
+3	48	-0.2341
+4	48	-0.15252
+5	48	-0.10172
+6	48	-0.073171
+7	48	-0.044724
+8	48	-0.022596
+9	48	-0.017119
+10	48	-0.0075413
+11	48	0.0045915
+12	48	0.038335
+13	48	0.1248
+14	48	0.19033
+15	48	0.24595
+16	48	0.33689
+17	48	0.38384
+18	48	0.3695
+19	48	0.31148
+20	48	0.22339
+21	48	0.10812
+22	48	0.0080075
+23	48	-0.11636
+24	48	-0.19515
+25	48	-0.22624
+26	48	-0.3099
+27	48	-0.38023
+28	48	-0.37993
+29	48	-0.37607
+30	48	-0.41583
+31	48	-0.46049
+32	48	-0.60462
+33	48	-0.44798
+34	48	-0.47099
+35	48	-0.37954
+36	48	-1.1041
+37	48	-1.389
+38	48	-1.4169
+39	48	-1.4546
+40	48	-1.3988
+41	48	-1.3647
+42	48	-1.2682
+43	48	-1.2726
+44	48	-1.3499
+45	48	-1.2617
+46	48	-1.3394
+47	48	-1.2891
+48	48	-0.92261
+49	48	-0.90195
+50	48	-1.2255
+51	48	-1.0034
+52	48	-0.92488
+53	48	-0.91607
+54	48	-1.0457
+55	48	-1.1869
+56	48	-1.3173
+57	48	-1.3675
+58	48	-1.2908
+59	48	-1.0785
+60	48	-0.84879
+61	48	-0.62573
+62	48	-0.42618
+63	48	-0.30328
+64	48	-0.28375
+65	48	-0.277
+66	48	-0.26514
+67	48	-0.28068
+68	48	-0.25616
+69	48	-0.2406
+70	48	-0.20959
+71	48	-0.16142
+72	48	-0.041824
+73	48	0.047215
+74	48	0.16298
+75	48	0.24262
+76	48	0.23189
+77	48	0.22917
+78	48	0.2305
+79	48	0.21516
+80	48	0.11855
+81	48	0.0096668
+82	48	-0.059546
+83	48	-0.042297
+84	48	-0.081149
+85	48	-0.13761
+86	48	-0.16642
+87	48	-0.24928
+88	48	-0.26673
+89	48	-0.24031
+90	48	-0.064363
+91	48	-0.028858
+92	48	-0.027936
+93	48	0.011205
+94	48	0.037769
+95	48	-0.021643
+96	48	-0.10501
+97	48	-0.12791
+98	48	-0.073685
+99	48	-0.009254
+100	48	0.057594
+101	48	0.064185
+102	48	0.11483
+103	48	0.14785
+104	48	0.15542
+105	48	0.1359
+106	48	0.17111
+107	48	0.21777
+108	48	0.24877
+109	48	0.21647
+110	48	0.14151
+111	48	0.077131
+112	48	0.0035631
+113	48	-0.031691
+114	48	-0.046031
+115	48	-0.033529
+116	48	-0.021901
+117	48	-0.010026
+118	48	0.021711
+119	48	0.083678
+120	48	0.36163
+121	48	0.6423
+122	48	0.68055
+123	48	0.618
+124	48	0.53474
+125	48	0.50194
+126	48	0.50697
+127	48	0.54211
+128	48	0.55667
+129	48	0.58361
+130	48	0.63255
+131	48	0.636
+132	48	0.88223
+133	48	1.0626
+134	48	1.2772
+135	48	1.421
+136	48	1.0588
+137	48	0.42461
+138	48	0.28991
+139	48	0.20269
+140	48	0.09582
+141	48	0
+142	48	0.26988
+143	48	0
+144	48	0
+145	48	0
+146	48	0
+147	48	0
+148	48	0
+149	48	0
+150	48	0
+151	48	0
+152	48	0
+153	48	0
+154	48	0
+155	48	0
+156	48	0
+157	48	0
+158	48	0
+159	48	0
+160	48	0
+161	48	0
+162	48	0
+163	48	0
+164	48	0
+165	48	0
+166	48	0
+167	48	0
+168	48	0
+169	48	0
+170	48	0
+171	48	0
+172	48	0
+173	48	0
+174	48	0
+175	48	0
+176	48	0
+177	48	0
+178	48	0
+179	48	0
+180	48	0
+181	48	0
+182	48	0
+183	48	0
+184	48	0
+185	48	0
+186	48	0
+187	48	0
+188	48	0
+189	48	0
+190	48	0
+191	48	0
+192	48	0
+193	48	0
+194	48	0
+195	48	0
+196	48	0
+197	48	0
+198	48	0
+199	48	0
+200	48	0
+201	48	0
+202	48	0
+203	48	0
+204	48	0
+205	48	0
+206	48	0
+207	48	0
+208	48	0
+209	48	0
+210	48	0
+211	48	0
+212	48	0
+213	48	0
+214	48	0
+215	48	0
+216	48	0
+217	48	0
+218	48	0
+219	48	0
+220	48	0
+221	48	0
+222	48	0
+223	48	0
+224	48	0
+225	48	0
+226	48	0
+227	48	0
+228	48	0
+229	48	0
+230	48	0
+231	48	0
+232	48	0
+233	48	0
+234	48	0
+235	48	0
+236	48	0.8911
+237	48	1.6722
+238	48	1.8189
+239	48	1.8827
+240	48	1.465
+241	48	0.81166
+242	48	0.59922
+243	48	0.50298
+244	48	0.75421
+245	48	0.80969
+246	48	0.94085
+247	48	1.1384
+248	48	0.93169
+249	48	0.72328
+250	48	0.67255
+251	48	0.65783
+252	48	0.67117
+253	48	0.6887
+254	48	0.72947
+255	48	0.8858
+256	48	1.0539
+257	48	1.0795
+258	48	1.1413
+259	48	0.66961
+260	48	0.36707
+261	48	0.062519
+262	48	-0.33063
+263	48	-0.6246
+264	48	-1.1917
+265	48	-1.7045
+266	48	-1.8607
+267	48	-1.5117
+268	48	-1.1339
+269	48	-0.6564
+270	48	-0.092802
+271	48	0
+272	48	0
+273	48	0
+274	48	0.23788
+275	48	0.62907
+276	48	0.86601
+277	48	0.9541
+278	48	0.98669
+279	48	1.0509
+280	48	0.5035
+281	48	0.71372
+282	48	1.405
+283	48	1.4056
+284	48	1.7845
+285	48	0.96245
+286	48	2.3262
+287	48	2.4985
+288	48	1.7959
+289	48	2.118
+290	48	1.248
+291	48	1.0438
+292	48	1.8835
+293	48	1.8951
+294	48	0.80283
+295	48	1.108
+296	48	0
+297	48	0
+298	48	0
+299	48	0
+300	48	0
+301	48	0
+302	48	1.3271
+303	48	1.3235
+304	48	1.2923
+305	48	1.5086
+306	48	0.49839
+307	48	0.04671
+308	48	0
+309	48	0
+310	48	0
+311	48	0
+312	48	0
+313	48	0
+314	48	0
+315	48	0
+316	48	0
+317	48	0
+318	48	0
+319	48	0
+320	48	0
+321	48	0
+322	48	0
+323	48	0
+324	48	0
+325	48	0
+326	48	0
+327	48	0
+328	48	0
+329	48	0
+330	48	0
+331	48	0
+332	48	0
+333	48	0
+334	48	0
+335	48	0
+336	48	0
+337	48	0
+338	48	0
+339	48	0
+340	48	0
+341	48	0
+342	48	0
+343	48	0
+344	48	0
+345	48	0
+346	48	0
+347	48	0
+348	48	0
+349	48	0
+350	48	0
+351	48	0
+352	48	0
+353	48	0
+354	48	0
+355	48	0
+356	48	0
+357	48	0.0071134
+358	48	-0.095509
+359	48	-0.20322
+360	48	-0.14553
+0	48.5	-0.13107
+1	48.5	-0.31472
+2	48.5	-0.30358
+3	48.5	-0.22191
+4	48.5	-0.1435
+5	48.5	-0.086979
+6	48.5	-0.060196
+7	48.5	-0.04081
+8	48.5	-0.018064
+9	48.5	-0.013055
+10	48.5	0.0018524
+11	48.5	0.017116
+12	48.5	0.068471
+13	48.5	0.16937
+14	48.5	0.24982
+15	48.5	0.30354
+16	48.5	0.37656
+17	48.5	0.40386
+18	48.5	0.41052
+19	48.5	0.34445
+20	48.5	0.24667
+21	48.5	0.13903
+22	48.5	0.042589
+23	48.5	-0.064775
+24	48.5	-0.15283
+25	48.5	-0.1814
+26	48.5	-0.27167
+27	48.5	-0.33542
+28	48.5	-0.35465
+29	48.5	-0.38276
+30	48.5	-0.44104
+31	48.5	-0.54047
+32	48.5	-0.69957
+33	48.5	-0.23474
+34	48.5	-0.78946
+35	48.5	-0.90189
+36	48.5	-1.2805
+37	48.5	-1.4042
+38	48.5	-1.4612
+39	48.5	-1.537
+40	48.5	-1.4218
+41	48.5	-1.3115
+42	48.5	-1.2259
+43	48.5	-1.2283
+44	48.5	-1.293
+45	48.5	-1.2272
+46	48.5	-1.4495
+47	48.5	-1.3869
+48	48.5	-1.1017
+49	48.5	-0.83225
+50	48.5	-1.0521
+51	48.5	-0.95388
+52	48.5	-0.79297
+53	48.5	-0.8348
+54	48.5	-0.96174
+55	48.5	-1.142
+56	48.5	-1.2483
+57	48.5	-1.304
+58	48.5	-1.2425
+59	48.5	-1.0685
+60	48.5	-0.84766
+61	48.5	-0.62569
+62	48.5	-0.43375
+63	48.5	-0.32513
+64	48.5	-0.29534
+65	48.5	-0.27384
+66	48.5	-0.27247
+67	48.5	-0.27369
+68	48.5	-0.26679
+69	48.5	-0.24326
+70	48.5	-0.21811
+71	48.5	-0.14595
+72	48.5	-0.056186
+73	48.5	0.053129
+74	48.5	0.1705
+75	48.5	0.25056
+76	48.5	0.23035
+77	48.5	0.21052
+78	48.5	0.21135
+79	48.5	0.19925
+80	48.5	0.12177
+81	48.5	0.1
+82	48.5	0.0312
+83	48.5	-0.0093311
+84	48.5	-0.039138
+85	48.5	-0.084106
+86	48.5	-0.10934
+87	48.5	-0.17037
+88	48.5	-0.14491
+89	48.5	-0.13279
+90	48.5	-0.070942
+91	48.5	-0.025387
+92	48.5	-0.011839
+93	48.5	0.0070691
+94	48.5	0.0065611
+95	48.5	-0.053292
+96	48.5	-0.13968
+97	48.5	-0.14405
+98	48.5	-0.070261
+99	48.5	0.0042918
+100	48.5	0.071426
+101	48.5	0.095428
+102	48.5	0.14632
+103	48.5	0.1986
+104	48.5	0.20304
+105	48.5	0.18649
+106	48.5	0.21258
+107	48.5	0.27223
+108	48.5	0.31555
+109	48.5	0.24632
+110	48.5	0.17119
+111	48.5	0.087062
+112	48.5	0.015289
+113	48.5	-0.034032
+114	48.5	-0.043668
+115	48.5	-0.028212
+116	48.5	-0.016337
+117	48.5	-0.004462
+118	48.5	0.02399
+119	48.5	0.11196
+120	48.5	0.38537
+121	48.5	0.65171
+122	48.5	0.65696
+123	48.5	0.59441
+124	48.5	0.54341
+125	48.5	0.60153
+126	48.5	0.60847
+127	48.5	0.63399
+128	48.5	0.64855
+129	48.5	0.6719
+130	48.5	0.76943
+131	48.5	0.77287
+132	48.5	1.0291
+133	48.5	0.88127
+134	48.5	1.3104
+135	48.5	1.6592
+136	48.5	1.3026
+137	48.5	0.60506
+138	48.5	0.38115
+139	48.5	0.31372
+140	48.5	0.26376
+141	48.5	0
+142	48.5	0.42959
+143	48.5	0
+144	48.5	0
+145	48.5	0
+146	48.5	0
+147	48.5	0
+148	48.5	0
+149	48.5	0
+150	48.5	0
+151	48.5	0
+152	48.5	0
+153	48.5	0
+154	48.5	0
+155	48.5	0
+156	48.5	0
+157	48.5	0
+158	48.5	0
+159	48.5	0
+160	48.5	0
+161	48.5	0
+162	48.5	0
+163	48.5	0
+164	48.5	0
+165	48.5	0
+166	48.5	0
+167	48.5	0
+168	48.5	0
+169	48.5	0
+170	48.5	0
+171	48.5	0
+172	48.5	0
+173	48.5	0
+174	48.5	0
+175	48.5	0
+176	48.5	0
+177	48.5	0
+178	48.5	0
+179	48.5	0
+180	48.5	0
+181	48.5	0
+182	48.5	0
+183	48.5	0
+184	48.5	0
+185	48.5	0
+186	48.5	0
+187	48.5	0
+188	48.5	0
+189	48.5	0
+190	48.5	0
+191	48.5	0
+192	48.5	0
+193	48.5	0
+194	48.5	0
+195	48.5	0
+196	48.5	0
+197	48.5	0
+198	48.5	0
+199	48.5	0
+200	48.5	0
+201	48.5	0
+202	48.5	0
+203	48.5	0
+204	48.5	0
+205	48.5	0
+206	48.5	0
+207	48.5	0
+208	48.5	0
+209	48.5	0
+210	48.5	0
+211	48.5	0
+212	48.5	0
+213	48.5	0
+214	48.5	0
+215	48.5	0
+216	48.5	0
+217	48.5	0
+218	48.5	0
+219	48.5	0
+220	48.5	0
+221	48.5	0
+222	48.5	0
+223	48.5	0
+224	48.5	0
+225	48.5	0
+226	48.5	0
+227	48.5	0
+228	48.5	0
+229	48.5	0
+230	48.5	0
+231	48.5	0
+232	48.5	0
+233	48.5	0
+234	48.5	0
+235	48.5	0.13978
+236	48.5	0.28564
+237	48.5	0.4074
+238	48.5	1.6541
+239	48.5	1.5923
+240	48.5	1.4248
+241	48.5	0.82494
+242	48.5	0.64151
+243	48.5	0.6181
+244	48.5	0.88906
+245	48.5	0.91249
+246	48.5	0.88881
+247	48.5	1.0922
+248	48.5	0.89336
+249	48.5	0.68915
+250	48.5	0.65586
+251	48.5	0.62303
+252	48.5	0.65351
+253	48.5	0.83692
+254	48.5	0.64117
+255	48.5	0.79749
+256	48.5	1.1145
+257	48.5	1.2213
+258	48.5	1.1985
+259	48.5	0.58929
+260	48.5	0.27684
+261	48.5	-0.13189
+262	48.5	-0.60111
+263	48.5	-0.86234
+264	48.5	-1.518
+265	48.5	-1.797
+266	48.5	-1.7411
+267	48.5	-1.4938
+268	48.5	-1.1345
+269	48.5	-0.71824
+270	48.5	-0.34904
+271	48.5	-0.040615
+272	48.5	0.035102
+273	48.5	0
+274	48.5	0.345
+275	48.5	0.67917
+276	48.5	0.91523
+277	48.5	0.96758
+278	48.5	0.99758
+279	48.5	1.0588
+280	48.5	0.39337
+281	48.5	0.65248
+282	48.5	1.4391
+283	48.5	1.4363
+284	48.5	1.8184
+285	48.5	0.32909
+286	48.5	2.1337
+287	48.5	2.5596
+288	48.5	0.71492
+289	48.5	2.1838
+290	48.5	1.9428
+291	48.5	1.0609
+292	48.5	1.8385
+293	48.5	1.9245
+294	48.5	0.47276
+295	48.5	1.1792
+296	48.5	0
+297	48.5	0
+298	48.5	0.17671
+299	48.5	0
+300	48.5	0
+301	48.5	0
+302	48.5	1.583
+303	48.5	2.2063
+304	48.5	1.8217
+305	48.5	1.3589
+306	48.5	0.56117
+307	48.5	0
+308	48.5	0
+309	48.5	0
+310	48.5	0
+311	48.5	0
+312	48.5	0
+313	48.5	0
+314	48.5	0
+315	48.5	0
+316	48.5	0
+317	48.5	0
+318	48.5	0
+319	48.5	0
+320	48.5	0
+321	48.5	0
+322	48.5	0
+323	48.5	0
+324	48.5	0
+325	48.5	0
+326	48.5	0
+327	48.5	0
+328	48.5	0
+329	48.5	0
+330	48.5	0
+331	48.5	0
+332	48.5	0
+333	48.5	0
+334	48.5	0
+335	48.5	0
+336	48.5	0
+337	48.5	0
+338	48.5	0
+339	48.5	0
+340	48.5	0
+341	48.5	0
+342	48.5	0
+343	48.5	0
+344	48.5	0
+345	48.5	0
+346	48.5	0
+347	48.5	0
+348	48.5	0
+349	48.5	0
+350	48.5	0
+351	48.5	0
+352	48.5	0
+353	48.5	0
+354	48.5	0
+355	48.5	0.013302
+356	48.5	0.012266
+357	48.5	0.011739
+358	48.5	-0.090658
+359	48.5	-0.20377
+360	48.5	-0.13107
+0	49	-0.10834
+1	49	-0.26633
+2	49	-0.28188
+3	49	-0.18018
+4	49	-0.1147
+5	49	-0.065424
+6	49	-0.039371
+7	49	-0.021592
+8	49	-0.0089107
+9	49	0.0044904
+10	49	0.016054
+11	49	0.029664
+12	49	0.096359
+13	49	0.19725
+14	49	0.29894
+15	49	0.36113
+16	49	0.41621
+17	49	0.44488
+18	49	0.45154
+19	49	0.36162
+20	49	0.26444
+21	49	0.16994
+22	49	0.07717
+23	49	-0.013193
+24	49	-0.10539
+25	49	-0.13656
+26	49	-0.23345
+27	49	-0.27302
+28	49	-0.31024
+29	49	-0.3585
+30	49	-0.41561
+31	49	-0.58069
+32	49	-0.73339
+33	49	-0.096967
+34	49	-0.92469
+35	49	-1.1881
+36	49	-1.3144
+37	49	-1.4138
+38	49	-1.5054
+39	49	-1.548
+40	49	-1.4271
+41	49	-1.2583
+42	49	-1.1909
+43	49	-1.184
+44	49	-1.2082
+45	49	-1.3162
+46	49	-1.5386
+47	49	-1.479
+48	49	-1.2201
+49	49	-0.99374
+50	49	-1.2047
+51	49	-1.0272
+52	49	-0.84902
+53	49	-0.86019
+54	49	-0.93498
+55	49	-1.0902
+56	49	-1.1971
+57	49	-1.2461
+58	49	-1.1981
+59	49	-1.0669
+60	49	-0.84653
+61	49	-0.62533
+62	49	-0.43634
+63	49	-0.34697
+64	49	-0.31065
+65	49	-0.27739
+66	49	-0.27819
+67	49	-0.28794
+68	49	-0.28453
+69	49	-0.25949
+70	49	-0.22981
+71	49	-0.17385
+72	49	-0.082512
+73	49	0.025914
+74	49	0.14256
+75	49	0.22636
+76	49	0.22848
+77	49	0.1944
+78	49	0.18599
+79	49	0.16932
+80	49	0.12498
+81	49	0.10665
+82	49	0.049939
+83	49	0.023635
+84	49	-0.0016568
+85	49	-0.021798
+86	49	-0.072778
+87	49	-0.10674
+88	49	-0.048506
+89	49	-0.068946
+90	49	-0.043089
+91	49	-0.0059798
+92	49	-0.02118
+93	49	0.0027634
+94	49	-0.045391
+95	49	-0.097047
+96	49	-0.14954
+97	49	-0.14443
+98	49	-0.072165
+99	49	0.017867
+100	49	0.085257
+101	49	0.12667
+102	49	0.16778
+103	49	0.24935
+104	49	0.25066
+105	49	0.23924
+106	49	0.25404
+107	49	0.33064
+108	49	0.37754
+109	49	0.27379
+110	49	0.19866
+111	49	0.099368
+112	49	0.027016
+113	49	-0.034736
+114	49	-0.041305
+115	49	-0.034518
+116	49	-0.015345
+117	49	0.0011017
+118	49	0.032972
+119	49	0.14024
+120	49	0.40912
+121	49	0.62235
+122	49	0.63337
+123	49	0.57082
+124	49	0.53165
+125	49	0.70111
+126	49	0.70997
+127	49	0.72587
+128	49	0.74042
+129	49	0.76494
+130	49	0.90467
+131	49	0.91613
+132	49	1.0529
+133	49	0.69992
+134	49	1.3822
+135	49	1.7236
+136	49	1.5259
+137	49	0.87333
+138	49	0.51332
+139	49	0.37976
+140	49	0.30561
+141	49	0
+142	49	0.59904
+143	49	0.86729
+144	49	0
+145	49	0
+146	49	0
+147	49	0
+148	49	0
+149	49	0
+150	49	0
+151	49	0
+152	49	0
+153	49	0
+154	49	0
+155	49	0
+156	49	0
+157	49	0
+158	49	0
+159	49	0
+160	49	0
+161	49	0
+162	49	0
+163	49	0
+164	49	0
+165	49	0
+166	49	0
+167	49	0
+168	49	0
+169	49	0
+170	49	0
+171	49	0
+172	49	0
+173	49	0
+174	49	0
+175	49	0
+176	49	0
+177	49	0
+178	49	0
+179	49	0
+180	49	0
+181	49	0
+182	49	0
+183	49	0
+184	49	0
+185	49	0
+186	49	0
+187	49	0
+188	49	0
+189	49	0
+190	49	0
+191	49	0
+192	49	0
+193	49	0
+194	49	0
+195	49	0
+196	49	0
+197	49	0
+198	49	0
+199	49	0
+200	49	0
+201	49	0
+202	49	0
+203	49	0
+204	49	0
+205	49	0
+206	49	0
+207	49	0
+208	49	0
+209	49	0
+210	49	0
+211	49	0
+212	49	0
+213	49	0
+214	49	0
+215	49	0
+216	49	0
+217	49	0
+218	49	0
+219	49	0
+220	49	0
+221	49	0
+222	49	0
+223	49	0
+224	49	0
+225	49	0
+226	49	0
+227	49	0
+228	49	0
+229	49	0
+230	49	0
+231	49	0
+232	49	0
+233	49	0
+234	49	0.063122
+235	49	0.31205
+236	49	0.60642
+237	49	0.16104
+238	49	0.5735
+239	49	1.3208
+240	49	1.2864
+241	49	0.83823
+242	49	0.6838
+243	49	0.71534
+244	49	1.0239
+245	49	1.0153
+246	49	0.84788
+247	49	1.032
+248	49	0.85504
+249	49	0.67261
+250	49	0.63918
+251	49	0.60634
+252	49	0.80173
+253	49	0.7928
+254	49	0.55286
+255	49	0.7516
+256	49	1.0929
+257	49	1.0967
+258	49	1.0157
+259	49	0.50316
+260	49	0.18014
+261	49	-0.3263
+262	49	-0.87159
+263	49	-1.1339
+264	49	-1.9135
+265	49	-1.7807
+266	49	-1.5098
+267	49	-1.3035
+268	49	-1.0076
+269	49	-0.68688
+270	49	-0.31925
+271	49	-0.097958
+272	49	0.08004
+273	49	0.12192
+274	49	0.47787
+275	49	0.72771
+276	49	0.93328
+277	49	0.97634
+278	49	0.95658
+279	49	1.0189
+280	49	0.51717
+281	49	0.76938
+282	49	1.3214
+283	49	1.4789
+284	49	1.8524
+285	49	1.2379
+286	49	2.5718
+287	49	2.5888
+288	49	1.0191
+289	49	2.199
+290	49	2.0289
+291	49	1.4436
+292	49	0.16441
+293	49	1.2969
+294	49	0.65051
+295	49	0.58089
+296	49	0
+297	49	0
+298	49	0.39373
+299	49	0
+300	49	0
+301	49	0
+302	49	0.89961
+303	49	2.0862
+304	49	1.7834
+305	49	1.1037
+306	49	0.31243
+307	49	0
+308	49	0
+309	49	0
+310	49	0
+311	49	0
+312	49	0
+313	49	0
+314	49	0
+315	49	0
+316	49	0
+317	49	0
+318	49	0
+319	49	0
+320	49	0
+321	49	0
+322	49	0
+323	49	0
+324	49	0
+325	49	0
+326	49	0
+327	49	0
+328	49	0
+329	49	0
+330	49	0
+331	49	0
+332	49	0
+333	49	0
+334	49	0
+335	49	0
+336	49	0
+337	49	0
+338	49	0
+339	49	0
+340	49	0
+341	49	0
+342	49	0
+343	49	0
+344	49	0
+345	49	0
+346	49	0
+347	49	0
+348	49	0
+349	49	0
+350	49	0
+351	49	0
+352	49	0
+353	49	0
+354	49	0
+355	49	0.025598
+356	49	0.013474
+357	49	0.018035
+358	49	-0.0044938
+359	49	-0.086958
+360	49	-0.10834
+0	49.5	-0.052716
+1	49.5	-0.18141
+2	49.5	-0.22638
+3	49.5	-0.13809
+4	49.5	-0.085828
+5	49.5	-0.044513
+6	49.5	-0.01972
+7	49.5	-0.0023753
+8	49.5	0.010972
+9	49.5	0.022951
+10	49.5	0.034508
+11	49.5	0.053705
+12	49.5	0.12053
+13	49.5	0.21935
+14	49.5	0.31764
+15	49.5	0.40765
+16	49.5	0.44647
+17	49.5	0.45897
+18	49.5	0.4894
+19	49.5	0.36973
+20	49.5	0.28221
+21	49.5	0.20086
+22	49.5	0.11175
+23	49.5	0.034715
+24	49.5	-0.046597
+25	49.5	-0.091716
+26	49.5	-0.17151
+27	49.5	-0.20114
+28	49.5	-0.24317
+29	49.5	-0.2916
+30	49.5	-0.36461
+31	49.5	-0.57441
+32	49.5	-0.72181
+33	49.5	-0.20269
+34	49.5	-0.67757
+35	49.5	-1.1481
+36	49.5	-1.2951
+37	49.5	-1.3812
+38	49.5	-1.5094
+39	49.5	-1.525
+40	49.5	-1.3933
+41	49.5	-1.2085
+42	49.5	-1.1558
+43	49.5	-1.1397
+44	49.5	-1.166
+45	49.5	-1.2983
+46	49.5	-1.5734
+47	49.5	-1.4319
+48	49.5	-1.246
+49	49.5	-1.0507
+50	49.5	-1.1294
+51	49.5	-1.0393
+52	49.5	-0.90926
+53	49.5	-0.86682
+54	49.5	-0.93926
+55	49.5	-1.0896
+56	49.5	-1.1459
+57	49.5	-1.1789
+58	49.5	-1.1464
+59	49.5	-1.0401
+60	49.5	-0.8454
+61	49.5	-0.62498
+62	49.5	-0.4356
+63	49.5	-0.36882
+64	49.5	-0.31304
+65	49.5	-0.29808
+66	49.5	-0.2913
+67	49.5	-0.32815
+68	49.5	-0.32677
+69	49.5	-0.28357
+70	49.5	-0.25968
+71	49.5	-0.2109
+72	49.5	-0.11246
+73	49.5	-0.0042158
+74	49.5	0.10528
+75	49.5	0.18389
+76	49.5	0.19522
+77	49.5	0.17005
+78	49.5	0.15634
+79	49.5	0.13856
+80	49.5	0.11864
+81	49.5	0.099382
+82	49.5	0.065209
+83	49.5	0.050834
+84	49.5	0.029944
+85	49.5	0.0087346
+86	49.5	-0.041534
+87	49.5	-0.064771
+88	49.5	-0.0080899
+89	49.5	-0.051777
+90	49.5	-0.049177
+91	49.5	-0.020453
+92	49.5	-0.033247
+93	49.5	-0.031518
+94	49.5	-0.092888
+95	49.5	-0.16004
+96	49.5	-0.16208
+97	49.5	-0.1448
+98	49.5	-0.047889
+99	49.5	0.032523
+100	49.5	0.12607
+101	49.5	0.17508
+102	49.5	0.18924
+103	49.5	0.28763
+104	49.5	0.30826
+105	49.5	0.24528
+106	49.5	0.29359
+107	49.5	0.36193
+108	49.5	0.40962
+109	49.5	0.30125
+110	49.5	0.21917
+111	49.5	0.11614
+112	49.5	0.035535
+113	49.5	-0.023009
+114	49.5	-0.054641
+115	49.5	-0.047192
+116	49.5	-0.02802
+117	49.5	-0.008847
+118	49.5	0.064743
+119	49.5	0.16851
+120	49.5	0.43287
+121	49.5	0.59299
+122	49.5	0.60978
+123	49.5	0.54723
+124	49.5	0.5199
+125	49.5	0.74862
+126	49.5	0.80318
+127	49.5	0.81774
+128	49.5	0.8323
+129	49.5	0.86408
+130	49.5	1.0038
+131	49.5	1.063
+132	49.5	0.98158
+133	49.5	0.55167
+134	49.5	1.0915
+135	49.5	1.4329
+136	49.5	1.4829
+137	49.5	0.88274
+138	49.5	0.59283
+139	49.5	0.46656
+140	49.5	0.32424
+141	49.5	0
+142	49.5	0.1915
+143	49.5	2.5641
+144	49.5	0.95321
+145	49.5	0
+146	49.5	0
+147	49.5	0
+148	49.5	0
+149	49.5	0
+150	49.5	0
+151	49.5	0
+152	49.5	0
+153	49.5	0
+154	49.5	0
+155	49.5	0
+156	49.5	0
+157	49.5	0
+158	49.5	0
+159	49.5	0
+160	49.5	0
+161	49.5	0
+162	49.5	0
+163	49.5	0
+164	49.5	0
+165	49.5	0
+166	49.5	0
+167	49.5	0
+168	49.5	0
+169	49.5	0
+170	49.5	0
+171	49.5	0
+172	49.5	0
+173	49.5	0
+174	49.5	0
+175	49.5	0
+176	49.5	0
+177	49.5	0
+178	49.5	0
+179	49.5	0
+180	49.5	0
+181	49.5	0
+182	49.5	0
+183	49.5	0
+184	49.5	0
+185	49.5	0
+186	49.5	0
+187	49.5	0
+188	49.5	0
+189	49.5	0
+190	49.5	0
+191	49.5	0
+192	49.5	0
+193	49.5	0
+194	49.5	0
+195	49.5	0
+196	49.5	0
+197	49.5	0
+198	49.5	0
+199	49.5	0
+200	49.5	0
+201	49.5	0
+202	49.5	0
+203	49.5	0
+204	49.5	0
+205	49.5	0
+206	49.5	0
+207	49.5	0
+208	49.5	0
+209	49.5	0
+210	49.5	0
+211	49.5	0
+212	49.5	0
+213	49.5	0
+214	49.5	0
+215	49.5	0
+216	49.5	0
+217	49.5	0
+218	49.5	0
+219	49.5	0
+220	49.5	0
+221	49.5	0
+222	49.5	0
+223	49.5	0
+224	49.5	0
+225	49.5	0
+226	49.5	0
+227	49.5	0
+228	49.5	0
+229	49.5	0
+230	49.5	0
+231	49.5	0
+232	49.5	0
+233	49.5	0
+234	49.5	0.18999
+235	49.5	0.36873
+236	49.5	0.48705
+237	49.5	0.79498
+238	49.5	1.0109
+239	49.5	0.99644
+240	49.5	0.94239
+241	49.5	0.74542
+242	49.5	0.72158
+243	49.5	0.68807
+244	49.5	1.0707
+245	49.5	1.0894
+246	49.5	0.90463
+247	49.5	0.97183
+248	49.5	0.81672
+249	49.5	0.65607
+250	49.5	0.62249
+251	49.5	0.58966
+252	49.5	0.94995
+253	49.5	0.74644
+254	49.5	0.46456
+255	49.5	0.71754
+256	49.5	1.0645
+257	49.5	0.96554
+258	49.5	0.83287
+259	49.5	0.39104
+260	49.5	0.071538
+261	49.5	-0.50499
+262	49.5	-1.0497
+263	49.5	-1.2888
+264	49.5	-2.1313
+265	49.5	-1.6592
+266	49.5	-1.2973
+267	49.5	-1.0481
+268	49.5	-0.86332
+269	49.5	-0.63461
+270	49.5	-0.3324
+271	49.5	-0.089734
+272	49.5	0.15299
+273	49.5	0.28534
+274	49.5	0.6044
+275	49.5	0.76692
+276	49.5	0.85338
+277	49.5	0.89541
+278	49.5	0.89926
+279	49.5	0.96767
+280	49.5	0.73053
+281	49.5	0.91539
+282	49.5	1.2084
+283	49.5	1.4743
+284	49.5	1.814
+285	49.5	2.1466
+286	49.5	2.5677
+287	49.5	2.5778
+288	49.5	1.9586
+289	49.5	1.4541
+290	49.5	2.1208
+291	49.5	1.9769
+292	49.5	0.88463
+293	49.5	0.84267
+294	49.5	0.48595
+295	49.5	0.10734
+296	49.5	0
+297	49.5	0.082248
+298	49.5	0.051069
+299	49.5	0
+300	49.5	0
+301	49.5	0
+302	49.5	0.79667
+303	49.5	1.727
+304	49.5	1.0678
+305	49.5	0.33154
+306	49.5	0.20494
+307	49.5	0
+308	49.5	0
+309	49.5	0
+310	49.5	0
+311	49.5	0
+312	49.5	0
+313	49.5	0
+314	49.5	0
+315	49.5	0
+316	49.5	0
+317	49.5	0
+318	49.5	0
+319	49.5	0
+320	49.5	0
+321	49.5	0
+322	49.5	0
+323	49.5	0
+324	49.5	0
+325	49.5	0
+326	49.5	0
+327	49.5	0
+328	49.5	0
+329	49.5	0
+330	49.5	0
+331	49.5	0
+332	49.5	0
+333	49.5	0
+334	49.5	0
+335	49.5	0
+336	49.5	0
+337	49.5	0
+338	49.5	0
+339	49.5	0
+340	49.5	0
+341	49.5	0
+342	49.5	0
+343	49.5	0
+344	49.5	0
+345	49.5	0
+346	49.5	0
+347	49.5	0
+348	49.5	0
+349	49.5	0
+350	49.5	0
+351	49.5	0
+352	49.5	0
+353	49.5	0
+354	49.5	0.0083412
+355	49.5	0
+356	49.5	0.0052513
+357	49.5	0
+358	49.5	1.415e-05
+359	49.5	-0.02858
+360	49.5	-0.052716
+0	50	-0.020422
+1	50	-0.11064
+2	50	-0.16574
+3	50	-0.09297
+4	50	-0.045016
+5	50	-0.023602
+6	50	-0.00035218
+7	50	0.016935
+8	50	0.030234
+9	50	0.041412
+10	50	0.052962
+11	50	0.082751
+12	50	0.14471
+13	50	0.24016
+14	50	0.33635
+15	50	0.44651
+16	50	0.45284
+17	50	0.46605
+18	50	0.48164
+19	50	0.36413
+20	50	0.30254
+21	50	0.23177
+22	50	0.14633
+23	50	0.066817
+24	50	0.012192
+25	50	-0.046874
+26	50	-0.10028
+27	50	-0.13052
+28	50	-0.17674
+29	50	-0.22471
+30	50	-0.31165
+31	50	-0.52321
+32	50	-0.69609
+33	50	-0.38422
+34	50	-0.57697
+35	50	-1.1081
+36	50	-1.2499
+37	50	-1.3317
+38	50	-1.4305
+39	50	-1.4942
+40	50	-1.3629
+41	50	-1.201
+42	50	-1.1381
+43	50	-1.1041
+44	50	-1.1605
+45	50	-1.2417
+46	50	-1.5168
+47	50	-1.3849
+48	50	-1.2444
+49	50	-1.1078
+50	50	-1.0752
+51	50	-0.98295
+52	50	-0.8917
+53	50	-0.87747
+54	50	-0.95413
+55	50	-1.089
+56	50	-1.0951
+57	50	-1.1117
+58	50	-1.0792
+59	50	-0.99607
+60	50	-0.84427
+61	50	-0.62462
+62	50	-0.48068
+63	50	-0.39169
+64	50	-0.34587
+65	50	-0.35036
+66	50	-0.35924
+67	50	-0.3917
+68	50	-0.37013
+69	50	-0.32146
+70	50	-0.26758
+71	50	-0.24101
+72	50	-0.14482
+73	50	-0.038709
+74	50	0.06462
+75	50	0.14026
+76	50	0.15251
+77	50	0.14219
+78	50	0.13265
+79	50	0.10997
+80	50	0.10963
+81	50	0.092112
+82	50	0.079116
+83	50	0.037487
+84	50	0.031142
+85	50	0.018035
+86	50	-0.0027851
+87	50	-0.032994
+88	50	-0.012241
+89	50	-0.036859
+90	50	-0.034355
+91	50	-0.03215
+92	50	-0.050005
+93	50	-0.022057
+94	50	-0.10615
+95	50	-0.18981
+96	50	-0.20561
+97	50	-0.097724
+98	50	0.0061996
+99	50	0.093552
+100	50	0.17696
+101	50	0.23622
+102	50	0.22734
+103	50	0.32717
+104	50	0.38769
+105	50	0.27992
+106	50	0.2675
+107	50	0.31839
+108	50	0.38945
+109	50	0.33308
+110	50	0.23563
+111	50	0.12913
+112	50	0.030288
+113	50	-0.027757
+114	50	-0.078455
+115	50	-0.059888
+116	50	-0.040694
+117	50	-0.003903
+118	50	0.096513
+119	50	0.19679
+120	50	0.45662
+121	50	0.56363
+122	50	0.58619
+123	50	0.52364
+124	50	0.50814
+125	50	0.69606
+126	50	0.83951
+127	50	0.81122
+128	50	0.78293
+129	50	0.79464
+130	50	1.103
+131	50	1.2098
+132	50	0.91027
+133	50	0.48036
+134	50	0.79596
+135	50	1.1178
+136	50	1.1448
+137	50	0.76812
+138	50	0.5143
+139	50	0.55492
+140	50	0.32861
+141	50	0
+142	50	0.53606
+143	50	3.0908
+144	50	1.2415
+145	50	0
+146	50	0
+147	50	0
+148	50	0
+149	50	0
+150	50	0
+151	50	0
+152	50	0
+153	50	0
+154	50	0
+155	50	0
+156	50	0
+157	50	0
+158	50	0
+159	50	0
+160	50	0
+161	50	0
+162	50	0
+163	50	0
+164	50	0
+165	50	0
+166	50	0
+167	50	0
+168	50	0
+169	50	0
+170	50	0
+171	50	0
+172	50	0
+173	50	0
+174	50	0
+175	50	0
+176	50	0
+177	50	0
+178	50	0
+179	50	0
+180	50	0
+181	50	0
+182	50	0
+183	50	0
+184	50	0
+185	50	0
+186	50	0
+187	50	0
+188	50	0
+189	50	0
+190	50	0
+191	50	0
+192	50	0
+193	50	0
+194	50	0
+195	50	0
+196	50	0
+197	50	0
+198	50	0
+199	50	0
+200	50	0
+201	50	0
+202	50	0
+203	50	0
+204	50	0
+205	50	0
+206	50	0
+207	50	0
+208	50	0
+209	50	0
+210	50	0
+211	50	0
+212	50	0
+213	50	0
+214	50	0
+215	50	0
+216	50	0
+217	50	0
+218	50	0
+219	50	0
+220	50	0
+221	50	0
+222	50	0
+223	50	0
+224	50	0
+225	50	0
+226	50	0
+227	50	0
+228	50	0
+229	50	0
+230	50	0
+231	50	0
+232	50	0.026331
+233	50	0.11257
+234	50	0.21942
+235	50	0.027926
+236	50	0.51576
+237	50	0.35731
+238	50	0.47501
+239	50	0.65313
+240	50	0.5984
+241	50	0.51615
+242	50	0.63034
+243	50	0.6608
+244	50	0.88072
+245	50	0.99951
+246	50	0.84694
+247	50	0.91164
+248	50	0.7784
+249	50	0.63953
+250	50	0.60592
+251	50	0.62691
+252	50	1.0661
+253	50	0.70008
+254	50	0.37625
+255	50	0.68349
+256	50	1.0589
+257	50	0.94217
+258	50	0.66045
+259	50	0.26969
+260	50	-0.082995
+261	50	-0.40428
+262	50	-0.96556
+263	50	-1.4721
+264	50	-1.7724
+265	50	-1.4939
+266	50	-1.088
+267	50	-0.72714
+268	50	-0.50808
+269	50	-0.56518
+270	50	-0.31323
+271	50	-0.070006
+272	50	0.18966
+273	50	0.41515
+274	50	0.59283
+275	50	0.73217
+276	50	0.77348
+277	50	0.80075
+278	50	0.80606
+279	50	0.87888
+280	50	0.91813
+281	50	0.93379
+282	50	1.097
+283	50	1.1979
+284	50	1.7066
+285	50	2.2098
+286	50	2.5277
+287	50	2.4597
+288	50	2.452
+289	50	2.0073
+290	50	2.0527
+291	50	2.0715
+292	50	1.7406
+293	50	1.1119
+294	50	0.0088459
+295	50	0.39261
+296	50	0
+297	50	0.28113
+298	50	0.42379
+299	50	0.32184
+300	50	0.13496
+301	50	0
+302	50	0.30872
+303	50	1.322
+304	50	0.30315
+305	50	0
+306	50	0.040696
+307	50	0
+308	50	0
+309	50	0
+310	50	0
+311	50	0
+312	50	0
+313	50	0
+314	50	0
+315	50	0
+316	50	0
+317	50	0
+318	50	0
+319	50	0
+320	50	0
+321	50	0
+322	50	0
+323	50	0
+324	50	0
+325	50	0
+326	50	0
+327	50	0
+328	50	0
+329	50	0
+330	50	0
+331	50	0
+332	50	0
+333	50	0
+334	50	0
+335	50	0
+336	50	0
+337	50	0
+338	50	0
+339	50	0
+340	50	0
+341	50	0
+342	50	0
+343	50	0
+344	50	0
+345	50	0
+346	50	0
+347	50	0
+348	50	0
+349	50	0
+350	50	0
+351	50	0
+352	50	0
+353	50	0
+354	50	0.01889
+355	50	0
+356	50	0.036583
+357	50	0
+358	50	8.3207e-06
+359	50	0
+360	50	-0.020422
+0	50.5	0.0151
+1	50.5	-0.02086
+2	50.5	-0.06603
+3	50.5	-0.035572
+4	50.5	-0.015638
+5	50.5	1.1651e-05
+6	50.5	0.019015
+7	50.5	0.038235
+8	50.5	0.053014
+9	50.5	0.059873
+10	50.5	0.078832
+11	50.5	0.11414
+12	50.5	0.16888
+13	50.5	0.25859
+14	50.5	0.35505
+15	50.5	0.48245
+16	50.5	0.45921
+17	50.5	0.47313
+18	50.5	0.45688
+19	50.5	0.38617
+20	50.5	0.3234
+21	50.5	0.2521
+22	50.5	0.17628
+23	50.5	0.098556
+24	50.5	0.04584
+25	50.5	-0.0016737
+26	50.5	-0.033563
+27	50.5	-0.066583
+28	50.5	-0.11142
+29	50.5	-0.16236
+30	50.5	-0.25409
+31	50.5	-0.43697
+32	50.5	-0.61274
+33	50.5	-0.56575
+34	50.5	-0.79045
+35	50.5	-1.0681
+36	50.5	-1.2046
+37	50.5	-1.2823
+38	50.5	-1.3516
+39	50.5	-1.4275
+40	50.5	-1.3506
+41	50.5	-1.1936
+42	50.5	-1.1307
+43	50.5	-1.1007
+44	50.5	-1.1505
+45	50.5	-1.1851
+46	50.5	-1.4395
+47	50.5	-1.3329
+48	50.5	-1.2369
+49	50.5	-1.1481
+50	50.5	-1.0244
+51	50.5	-0.92655
+52	50.5	-0.87511
+53	50.5	-0.89234
+54	50.5	-0.96899
+55	50.5	-1.0788
+56	50.5	-1.0849
+57	50.5	-1.0924
+58	50.5	-1.0833
+59	50.5	-0.97704
+60	50.5	-0.84119
+61	50.5	-0.66262
+62	50.5	-0.53138
+63	50.5	-0.43807
+64	50.5	-0.38008
+65	50.5	-0.40012
+66	50.5	-0.41471
+67	50.5	-0.45503
+68	50.5	-0.4202
+69	50.5	-0.36944
+70	50.5	-0.042948
+71	50.5	-0.27754
+72	50.5	-0.17606
+73	50.5	-0.072719
+74	50.5	0.023748
+75	50.5	0.087923
+76	50.5	0.10182
+77	50.5	0.11576
+78	50.5	0.10896
+79	50.5	0.085099
+80	50.5	0.078808
+81	50.5	0.066404
+82	50.5	0.050023
+83	50.5	0.029537
+84	50.5	0.032341
+85	50.5	0.015643
+86	50.5	0.01771
+87	50.5	0.0058975
+88	50.5	0.0007877
+89	50.5	-0.025863
+90	50.5	-0.032823
+91	50.5	-0.039877
+92	50.5	-0.062832
+93	50.5	-0.017549
+94	50.5	-0.10552
+95	50.5	-0.17826
+96	50.5	-0.2316
+97	50.5	-0.045449
+98	50.5	0.060288
+99	50.5	0.15973
+100	50.5	0.22784
+101	50.5	0.29199
+102	50.5	0.27221
+103	50.5	0.37488
+104	50.5	0.43173
+105	50.5	0.32019
+106	50.5	0.22375
+107	50.5	0.26699
+108	50.5	0.34121
+109	50.5	0.33751
+110	50.5	0.23926
+111	50.5	0.14038
+112	50.5	0.02504
+113	50.5	-0.042649
+114	50.5	-0.092766
+115	50.5	-0.07262
+116	50.5	-0.053369
+117	50.5	0.028588
+118	50.5	0.12707
+119	50.5	0.22507
+120	50.5	0.48036
+121	50.5	0.53427
+122	50.5	0.5626
+123	50.5	0.50061
+124	50.5	0.49638
+125	50.5	0.6435
+126	50.5	0.77508
+127	50.5	0.74679
+128	50.5	0.7185
+129	50.5	0.74614
+130	50.5	1.0512
+131	50.5	1.2696
+132	50.5	0.87143
+133	50.5	0.47427
+134	50.5	0.49569
+135	50.5	0.78272
+136	50.5	0.80237
+137	50.5	0.70539
+138	50.5	0.47865
+139	50.5	0.60325
+140	50.5	0.40618
+141	50.5	0
+142	50.5	1.2324
+143	50.5	2.6679
+144	50.5	0.97722
+145	50.5	0
+146	50.5	0
+147	50.5	0
+148	50.5	0
+149	50.5	0
+150	50.5	0
+151	50.5	0
+152	50.5	0
+153	50.5	0
+154	50.5	0
+155	50.5	0
+156	50.5	0
+157	50.5	0
+158	50.5	0
+159	50.5	0
+160	50.5	0
+161	50.5	0
+162	50.5	0
+163	50.5	0
+164	50.5	0
+165	50.5	0
+166	50.5	0
+167	50.5	0
+168	50.5	0
+169	50.5	0
+170	50.5	0
+171	50.5	0
+172	50.5	0
+173	50.5	0
+174	50.5	0
+175	50.5	0
+176	50.5	0
+177	50.5	0
+178	50.5	0
+179	50.5	0
+180	50.5	0
+181	50.5	0
+182	50.5	0
+183	50.5	0
+184	50.5	0
+185	50.5	0
+186	50.5	0
+187	50.5	0
+188	50.5	0
+189	50.5	0
+190	50.5	0
+191	50.5	0
+192	50.5	0
+193	50.5	0
+194	50.5	0
+195	50.5	0
+196	50.5	0
+197	50.5	0
+198	50.5	0
+199	50.5	0
+200	50.5	0
+201	50.5	0
+202	50.5	0
+203	50.5	0
+204	50.5	0
+205	50.5	0
+206	50.5	0
+207	50.5	0
+208	50.5	0
+209	50.5	0
+210	50.5	0
+211	50.5	0
+212	50.5	0
+213	50.5	0
+214	50.5	0
+215	50.5	0
+216	50.5	0
+217	50.5	0
+218	50.5	0
+219	50.5	0
+220	50.5	0
+221	50.5	0
+222	50.5	0
+223	50.5	0
+224	50.5	0
+225	50.5	0
+226	50.5	0
+227	50.5	0
+228	50.5	0
+229	50.5	0
+230	50.5	0
+231	50.5	0
+232	50.5	0.098926
+233	50.5	0.16369
+234	50.5	0.045441
+235	50.5	0.024957
+236	50.5	0.053236
+237	50.5	-0.0098559
+238	50.5	0.15315
+239	50.5	0.42638
+240	50.5	0.32768
+241	50.5	0.34817
+242	50.5	0.37281
+243	50.5	0.62372
+244	50.5	0.54392
+245	50.5	0.86006
+246	50.5	0.84019
+247	50.5	0.8666
+248	50.5	0.72779
+249	50.5	0.62298
+250	50.5	0.58938
+251	50.5	0.74436
+252	50.5	1.0948
+253	50.5	0.7524
+254	50.5	0.31355
+255	50.5	0.73022
+256	50.5	1.1101
+257	50.5	1.0328
+258	50.5	0.58918
+259	50.5	0.17757
+260	50.5	-0.23393
+261	50.5	-0.27915
+262	50.5	-0.96875
+263	50.5	-1.4091
+264	50.5	-1.2847
+265	50.5	-1.2761
+266	50.5	-0.93994
+267	50.5	-0.65613
+268	50.5	-0.60847
+269	50.5	-0.48823
+270	50.5	-0.28446
+271	50.5	-0.035254
+272	50.5	0.21493
+273	50.5	0.40959
+274	50.5	0.57019
+275	50.5	0.67252
+276	50.5	0.69358
+277	50.5	0.69264
+278	50.5	0.6751
+279	50.5	0.73978
+280	50.5	0.67044
+281	50.5	0.81845
+282	50.5	0.9809
+283	50.5	0.89405
+284	50.5	1.6062
+285	50.5	2.1048
+286	50.5	2.4424
+287	50.5	2.3251
+288	50.5	2.3654
+289	50.5	2.268
+290	50.5	2.2244
+291	50.5	2.0948
+292	50.5	1.2417
+293	50.5	1.6633
+294	50.5	0.97799
+295	50.5	0.92617
+296	50.5	0.67988
+297	50.5	0.58975
+298	50.5	0.73367
+299	50.5	0.77072
+300	50.5	0.5234
+301	50.5	0.095997
+302	50.5	0.22935
+303	50.5	0.6432
+304	50.5	0
+305	50.5	0
+306	50.5	0
+307	50.5	0
+308	50.5	0
+309	50.5	0
+310	50.5	0
+311	50.5	0
+312	50.5	0
+313	50.5	0
+314	50.5	0
+315	50.5	0
+316	50.5	0
+317	50.5	0
+318	50.5	0
+319	50.5	0
+320	50.5	0
+321	50.5	0
+322	50.5	0
+323	50.5	0
+324	50.5	0
+325	50.5	0
+326	50.5	0
+327	50.5	0
+328	50.5	0
+329	50.5	0
+330	50.5	0
+331	50.5	0
+332	50.5	0
+333	50.5	0
+334	50.5	0
+335	50.5	0
+336	50.5	0
+337	50.5	0
+338	50.5	0
+339	50.5	0
+340	50.5	0
+341	50.5	0
+342	50.5	0
+343	50.5	0
+344	50.5	0
+345	50.5	0
+346	50.5	0
+347	50.5	0
+348	50.5	0
+349	50.5	0
+350	50.5	0
+351	50.5	0
+352	50.5	0
+353	50.5	0
+354	50.5	0.0097975
+355	50.5	0.01314
+356	50.5	0.10008
+357	50.5	0.097377
+358	50.5	0.031521
+359	50.5	0.011995
+360	50.5	0.0151
+0	51	0.044202
+1	51	0
+2	51	-0.0062299
+3	51	0.00022057
+4	51	0.011633
+5	51	0.027635
+6	51	0.046004
+7	51	0.064815
+8	51	0.078443
+9	51	0.084221
+10	51	0.11303
+11	51	0.14943
+12	51	0.19648
+13	51	0.27703
+14	51	0.37937
+15	51	0.4993
+16	51	0.46769
+17	51	0.46306
+18	51	0.4586
+19	51	0.40727
+20	51	0.34426
+21	51	0.26475
+22	51	0.20548
+23	51	0.13111
+24	51	0.077444
+25	51	0.043732
+26	51	0.029889
+27	51	-0.0030315
+28	51	-0.047482
+29	51	-0.089277
+30	51	-0.19652
+31	51	-0.35073
+32	51	-0.52495
+33	51	-0.65362
+34	51	-0.8214
+35	51	-0.99177
+36	51	-1.1593
+37	51	-1.2329
+38	51	-1.2979
+39	51	-1.3512
+40	51	-1.3383
+41	51	-1.1862
+42	51	-1.1312
+43	51	-1.1029
+44	51	-1.1405
+45	51	-1.1739
+46	51	-1.3096
+47	51	-1.2381
+48	51	-1.1428
+49	51	-1.0965
+50	51	-0.98414
+51	51	-0.89021
+52	51	-0.86383
+53	51	-0.92307
+54	51	-0.98386
+55	51	-1.0686
+56	51	-1.1564
+57	51	-1.1202
+58	51	-1.1111
+59	51	-0.98826
+60	51	-0.84505
+61	51	-0.70566
+62	51	-0.58208
+63	51	-0.48123
+64	51	-0.41928
+65	51	-0.43958
+66	51	-0.4627
+67	51	-0.50031
+68	51	-0.47388
+69	51	-0.41382
+70	51	-0.31589
+71	51	-0.31629
+72	51	-0.20494
+73	51	-0.10283
+74	51	-0.01484
+75	51	0.048502
+76	51	0.063188
+77	51	0.089331
+78	51	0.082834
+79	51	0.061839
+80	51	0.042291
+81	51	0.022513
+82	51	0.018117
+83	51	0.02133
+84	51	0.025158
+85	51	0.010808
+86	51	0.023704
+87	51	0.028756
+88	51	0.0078387
+89	51	-0.012482
+90	51	-0.032092
+91	51	-0.046084
+92	51	-0.069011
+93	51	-0.06469
+94	51	-0.089196
+95	51	-0.13122
+96	51	-0.14566
+97	51	0.0067514
+98	51	0.11383
+99	51	0.20644
+100	51	0.27727
+101	51	0.31963
+102	51	0.3169
+103	51	0.404
+104	51	0.27265
+105	51	0.32001
+106	51	0.23864
+107	51	0.24142
+108	51	0.29305
+109	51	0.31354
+110	51	0.23619
+111	51	0.14297
+112	51	0.02173
+113	51	-0.054007
+114	51	-0.099146
+115	51	-0.085351
+116	51	-0.034404
+117	51	0.059465
+118	51	0.15488
+119	51	0.25335
+120	51	0.45359
+121	51	0.50491
+122	51	0.53901
+123	51	0.48885
+124	51	0.48463
+125	51	0.59094
+126	51	0.69748
+127	51	0.68237
+128	51	0.65408
+129	51	0.70109
+130	51	0.98165
+131	51	1.1811
+132	51	0.87473
+133	51	0.51313
+134	51	0.44375
+135	51	0.44944
+136	51	0.54548
+137	51	0.59234
+138	51	0.57209
+139	51	0.73612
+140	51	0.69302
+141	51	0
+142	51	0.50645
+143	51	2.167
+144	51	1.0787
+145	51	0
+146	51	0
+147	51	0
+148	51	0
+149	51	0
+150	51	0
+151	51	0
+152	51	0
+153	51	0
+154	51	0
+155	51	0
+156	51	0
+157	51	0
+158	51	0
+159	51	0
+160	51	0
+161	51	0
+162	51	0
+163	51	0
+164	51	0
+165	51	0
+166	51	0
+167	51	0
+168	51	0
+169	51	0
+170	51	0
+171	51	0
+172	51	0
+173	51	0
+174	51	0
+175	51	0
+176	51	0
+177	51	0
+178	51	0
+179	51	0
+180	51	0
+181	51	0
+182	51	0
+183	51	0
+184	51	0
+185	51	0
+186	51	0
+187	51	0
+188	51	0
+189	51	0
+190	51	0
+191	51	0
+192	51	0
+193	51	0
+194	51	0
+195	51	0
+196	51	0
+197	51	0
+198	51	0
+199	51	0
+200	51	0
+201	51	0
+202	51	0
+203	51	0
+204	51	0
+205	51	0
+206	51	0
+207	51	0
+208	51	0
+209	51	0
+210	51	0
+211	51	0
+212	51	0
+213	51	0
+214	51	0
+215	51	0
+216	51	0
+217	51	0
+218	51	0
+219	51	0
+220	51	0
+221	51	0
+222	51	0
+223	51	0
+224	51	0
+225	51	0
+226	51	0
+227	51	0
+228	51	0
+229	51	0
+230	51	0
+231	51	0
+232	51	0
+233	51	-0.013532
+234	51	0.0087935
+235	51	0
+236	51	-0.020093
+237	51	-0.059242
+238	51	0.064726
+239	51	0.27687
+240	51	0.30004
+241	51	0.32583
+242	51	0.15763
+243	51	0.55703
+244	51	0.13227
+245	51	0.8439
+246	51	0.94578
+247	51	0.89605
+248	51	0.69858
+249	51	0.62364
+250	51	0.59926
+251	51	0.8189
+252	51	1.1225
+253	51	0.87751
+254	51	0.5413
+255	51	0.99892
+256	51	1.2156
+257	51	1.0116
+258	51	0.53287
+259	51	0.090464
+260	51	-0.37796
+261	51	-0.13914
+262	51	-0.93171
+263	51	-1.1862
+264	51	-1.0352
+265	51	-1.1714
+266	51	-0.87356
+267	51	-0.6456
+268	51	-0.51646
+269	51	-0.41334
+270	51	-0.2429
+271	51	0.0012334
+272	51	0.23284
+273	51	0.41526
+274	51	0.53381
+275	51	0.50528
+276	51	0.64209
+277	51	0.60573
+278	51	0.54119
+279	51	0.506
+280	51	0.39423
+281	51	0.68215
+282	51	0.63254
+283	51	0.59016
+284	51	1.5166
+285	51	1.9998
+286	51	2.3055
+287	51	2.1989
+288	51	2.2446
+289	51	2.251
+290	51	2.1587
+291	51	2.0901
+292	51	0.64252
+293	51	1.8618
+294	51	1.5713
+295	51	1.1942
+296	51	0.86768
+297	51	0.71788
+298	51	0.65684
+299	51	0.74069
+300	51	0.68459
+301	51	0.50127
+302	51	0.30353
+303	51	0.033632
+304	51	0.24521
+305	51	0
+306	51	0
+307	51	0
+308	51	0
+309	51	0
+310	51	0
+311	51	0
+312	51	0
+313	51	0
+314	51	0
+315	51	0
+316	51	0
+317	51	0
+318	51	0
+319	51	0
+320	51	0
+321	51	0
+322	51	0
+323	51	0
+324	51	0
+325	51	0
+326	51	0
+327	51	0
+328	51	0
+329	51	0
+330	51	0
+331	51	0
+332	51	0
+333	51	0
+334	51	0
+335	51	0
+336	51	0
+337	51	0
+338	51	0
+339	51	0
+340	51	0
+341	51	0
+342	51	0
+343	51	0
+344	51	0
+345	51	0
+346	51	0
+347	51	0
+348	51	0
+349	51	0
+350	51	0
+351	51	-0.0086348
+352	51	0
+353	51	0
+354	51	0
+355	51	0
+356	51	0.049017
+357	51	0.18151
+358	51	0.13044
+359	51	0.11115
+360	51	0.044202
+0	51.5	0.090577
+1	51.5	0.0024204
+2	51.5	0
+3	51.5	6.7727e-05
+4	51.5	0.013587
+5	51.5	0.0554
+6	51.5	0.080546
+7	51.5	0.091326
+8	51.5	0.10382
+9	51.5	0.11098
+10	51.5	0.14734
+11	51.5	0.18491
+12	51.5	0.22848
+13	51.5	0.31622
+14	51.5	0.41512
+15	51.5	0.51443
+16	51.5	0.49615
+17	51.5	0.47545
+18	51.5	0.4839
+19	51.5	0.42785
+20	51.5	0.36512
+21	51.5	0.27888
+22	51.5	0.23467
+23	51.5	0.16366
+24	51.5	0.10905
+25	51.5	0.09069
+26	51.5	0.087866
+27	51.5	0.060421
+28	51.5	0.017061
+29	51.5	-0.018659
+30	51.5	-0.13895
+31	51.5	-0.27469
+32	51.5	-0.43287
+33	51.5	-0.57152
+34	51.5	-0.73448
+35	51.5	-0.90448
+36	51.5	-1.1096
+37	51.5	-1.1796
+38	51.5	-1.225
+39	51.5	-1.2698
+40	51.5	-1.2844
+41	51.5	-1.1788
+42	51.5	-1.1387
+43	51.5	-1.1057
+44	51.5	-1.1305
+45	51.5	-1.164
+46	51.5	-1.1941
+47	51.5	-1.144
+48	51.5	-1.0488
+49	51.5	-1.0448
+50	51.5	-0.95137
+51	51.5	-0.88557
+52	51.5	-0.86746
+53	51.5	-1.006
+54	51.5	-1.0474
+55	51.5	-1.1048
+56	51.5	-1.1911
+57	51.5	-1.148
+58	51.5	-1.1389
+59	51.5	-0.99947
+60	51.5	-0.86843
+61	51.5	-0.74869
+62	51.5	-0.62978
+63	51.5	-0.5244
+64	51.5	-0.4661
+65	51.5	-0.47511
+66	51.5	-0.51028
+67	51.5	-0.54199
+68	51.5	-0.52564
+69	51.5	-0.47085
+70	51.5	-0.4226
+71	51.5	-0.35496
+72	51.5	-0.23382
+73	51.5	-0.13136
+74	51.5	-0.049582
+75	51.5	0.010096
+76	51.5	0.032955
+77	51.5	0.059319
+78	51.5	0.056222
+79	51.5	0.038579
+80	51.5	0.008973
+81	51.5	-0.021335
+82	51.5	-0.013789
+83	51.5	0.012369
+84	51.5	0.012286
+85	51.5	0.020186
+86	51.5	0.036503
+87	51.5	0.048745
+88	51.5	0.046357
+89	51.5	0.015874
+90	51.5	-0.011529
+91	51.5	-0.02838
+92	51.5	-0.05432
+93	51.5	-0.066884
+94	51.5	-0.069846
+95	51.5	-0.074892
+96	51.5	-0.039043
+97	51.5	0.062616
+98	51.5	0.16786
+99	51.5	0.24576
+100	51.5	0.28631
+101	51.5	0.3463
+102	51.5	0.3526
+103	51.5	0.33684
+104	51.5	0.075921
+105	51.5	0.33958
+106	51.5	0.18077
+107	51.5	0.21438
+108	51.5	0.25987
+109	51.5	0.28457
+110	51.5	0.22234
+111	51.5	0.1213
+112	51.5	0.023776
+113	51.5	-0.042336
+114	51.5	-0.091314
+115	51.5	-0.089216
+116	51.5	-0.017911
+117	51.5	0.06742
+118	51.5	0.16687
+119	51.5	0.28163
+120	51.5	0.42423
+121	51.5	0.47555
+122	51.5	0.51541
+123	51.5	0.4771
+124	51.5	0.47287
+125	51.5	0.53838
+126	51.5	0.60588
+127	51.5	0.61794
+128	51.5	0.58965
+129	51.5	0.65605
+130	51.5	0.91214
+131	51.5	1.0312
+132	51.5	0.87804
+133	51.5	0.55198
+134	51.5	0.47468
+135	51.5	0.51063
+136	51.5	0.48734
+137	51.5	0.44869
+138	51.5	0.656
+139	51.5	0.89464
+140	51.5	0.89553
+141	51.5	0
+142	51.5	1.0949
+143	51.5	2.1784
+144	51.5	0.33131
+145	51.5	0
+146	51.5	0
+147	51.5	0
+148	51.5	0
+149	51.5	0
+150	51.5	0
+151	51.5	0
+152	51.5	0
+153	51.5	0
+154	51.5	0
+155	51.5	0
+156	51.5	0
+157	51.5	0.93197
+158	51.5	0.047875
+159	51.5	0
+160	51.5	0
+161	51.5	0
+162	51.5	0
+163	51.5	0
+164	51.5	0
+165	51.5	0
+166	51.5	0
+167	51.5	0
+168	51.5	0
+169	51.5	0
+170	51.5	0
+171	51.5	0
+172	51.5	0
+173	51.5	0
+174	51.5	0
+175	51.5	0
+176	51.5	0
+177	51.5	0
+178	51.5	0
+179	51.5	0
+180	51.5	0
+181	51.5	0
+182	51.5	0
+183	51.5	0
+184	51.5	0
+185	51.5	0
+186	51.5	0
+187	51.5	0
+188	51.5	0
+189	51.5	0
+190	51.5	0
+191	51.5	0
+192	51.5	0
+193	51.5	0
+194	51.5	0
+195	51.5	0
+196	51.5	0
+197	51.5	0
+198	51.5	0
+199	51.5	0
+200	51.5	0
+201	51.5	0
+202	51.5	0
+203	51.5	0
+204	51.5	0
+205	51.5	0
+206	51.5	0
+207	51.5	0
+208	51.5	0
+209	51.5	0
+210	51.5	0
+211	51.5	0
+212	51.5	0
+213	51.5	0
+214	51.5	0
+215	51.5	0
+216	51.5	0
+217	51.5	0
+218	51.5	0
+219	51.5	0
+220	51.5	0
+221	51.5	0
+222	51.5	0
+223	51.5	0
+224	51.5	0
+225	51.5	0
+226	51.5	0
+227	51.5	0
+228	51.5	0
+229	51.5	0
+230	51.5	0
+231	51.5	0
+232	51.5	-0.0082773
+233	51.5	-0.019083
+234	51.5	0
+235	51.5	-0.10002
+236	51.5	-0.16287
+237	51.5	-0.086068
+238	51.5	0.087985
+239	51.5	0.18923
+240	51.5	0.21736
+241	51.5	0.30348
+242	51.5	0
+243	51.5	0.15345
+244	51.5	0.28517
+245	51.5	1.0078
+246	51.5	1.076
+247	51.5	0.93451
+248	51.5	0.71206
+249	51.5	0.6944
+250	51.5	0.67002
+251	51.5	0.89996
+252	51.5	1.1502
+253	51.5	1.0026
+254	51.5	0.78654
+255	51.5	1.2735
+256	51.5	1.3952
+257	51.5	1.073
+258	51.5	0.51012
+259	51.5	0.029047
+260	51.5	-0.057191
+261	51.5	-0.18898
+262	51.5	-0.75745
+263	51.5	-0.9306
+264	51.5	-0.82227
+265	51.5	-1.0456
+266	51.5	-0.78655
+267	51.5	-0.62034
+268	51.5	-0.46127
+269	51.5	-0.36696
+270	51.5	-0.1945
+271	51.5	0.038944
+272	51.5	0.23899
+273	51.5	0.41487
+274	51.5	0.36513
+275	51.5	0.33998
+276	51.5	0.59892
+277	51.5	0.54908
+278	51.5	0.41548
+279	51.5	0.23216
+280	51.5	0.1959
+281	51.5	0.51189
+282	51.5	0.50638
+283	51.5	0.70775
+284	51.5	1.4322
+285	51.5	1.8611
+286	51.5	2.0892
+287	51.5	2.0356
+288	51.5	2.1176
+289	51.5	2.1195
+290	51.5	2.0959
+291	51.5	1.9968
+292	51.5	0.27985
+293	51.5	1.8232
+294	51.5	1.5285
+295	51.5	1.0429
+296	51.5	0.81596
+297	51.5	0.65853
+298	51.5	0.62154
+299	51.5	0.69081
+300	51.5	0.74261
+301	51.5	0.74967
+302	51.5	0.75001
+303	51.5	0.1319
+304	51.5	0.017425
+305	51.5	0.092061
+306	51.5	0
+307	51.5	0
+308	51.5	0
+309	51.5	0
+310	51.5	0
+311	51.5	0
+312	51.5	0
+313	51.5	0
+314	51.5	0
+315	51.5	0
+316	51.5	0
+317	51.5	0
+318	51.5	0
+319	51.5	0
+320	51.5	0
+321	51.5	0
+322	51.5	0
+323	51.5	0
+324	51.5	0
+325	51.5	0
+326	51.5	0
+327	51.5	0
+328	51.5	0
+329	51.5	0
+330	51.5	0
+331	51.5	0
+332	51.5	0
+333	51.5	0
+334	51.5	0
+335	51.5	0
+336	51.5	0
+337	51.5	0
+338	51.5	0
+339	51.5	0
+340	51.5	0
+341	51.5	0
+342	51.5	0
+343	51.5	0
+344	51.5	0
+345	51.5	0
+346	51.5	0
+347	51.5	0
+348	51.5	0
+349	51.5	0
+350	51.5	-1.5653e-05
+351	51.5	-0.063054
+352	51.5	0
+353	51.5	0
+354	51.5	0
+355	51.5	0
+356	51.5	0.02996
+357	51.5	0.15122
+358	51.5	0.26292
+359	51.5	0.25099
+360	51.5	0.090577
+0	52	0.13247
+1	52	0.10106
+2	52	0
+3	52	0
+4	52	0.0076422
+5	52	0.060625
+6	52	0.11396
+7	52	0.1253
+8	52	0.12852
+9	52	0.13898
+10	52	0.17467
+11	52	0.22039
+12	52	0.26159
+13	52	0.35545
+14	52	0.45664
+15	52	0.52957
+16	52	0.52123
+17	52	0.51852
+18	52	0.51098
+19	52	0.45096
+20	52	0.38221
+21	52	0.30863
+22	52	0.26387
+23	52	0.19622
+24	52	0.1507
+25	52	0.13803
+26	52	0.13495
+27	52	0.12387
+28	52	0.085061
+29	52	0.056122
+30	52	-0.066845
+31	52	-0.2095
+32	52	-0.34744
+33	52	-0.48942
+34	52	-0.64771
+35	52	-0.81718
+36	52	-1.0079
+37	52	-1.0667
+38	52	-1.1121
+39	52	-1.1615
+40	52	-1.1996
+41	52	-1.1745
+42	52	-1.1081
+43	52	-1.0234
+44	52	-1.0594
+45	52	-1.1107
+46	52	-1.1034
+47	52	-1.05
+48	52	-0.98896
+49	52	-0.99309
+50	52	-0.91993
+51	52	-0.88921
+52	52	-0.8711
+53	52	-1.0358
+54	52	-1.1399
+55	52	-1.2022
+56	52	-1.2258
+57	52	-1.1758
+58	52	-1.158
+59	52	-1.0107
+60	52	-0.89181
+61	52	-0.78346
+62	52	-0.67294
+63	52	-0.56636
+64	52	-0.5139
+65	52	-0.51065
+66	52	-0.55549
+67	52	-0.58037
+68	52	-0.57589
+69	52	-0.54163
+70	52	-0.48006
+71	52	-0.37798
+72	52	-0.24918
+73	52	-0.15125
+74	52	-0.078219
+75	52	-0.026418
+76	52	0.014879
+77	52	0.032592
+78	52	0.033503
+79	52	0.013856
+80	52	-0.016752
+81	52	-0.051873
+82	52	-0.030977
+83	52	0.001562
+84	52	0.011162
+85	52	0.029674
+86	52	0.068182
+87	52	0.091184
+88	52	0.11077
+89	52	0.074824
+90	52	0.029888
+91	52	-0.0012748
+92	52	-0.02069
+93	52	-0.024289
+94	52	-0.027991
+95	52	-0.015626
+96	52	0.044987
+97	52	0.12115
+98	52	0.22837
+99	52	0.28509
+100	52	0.30064
+101	52	0.39661
+102	52	0.41894
+103	52	0.38373
+104	52	0.26833
+105	52	0.41471
+106	52	0.086778
+107	52	0.18446
+108	52	0.23567
+109	52	0.25428
+110	52	0.18746
+111	52	0.099624
+112	52	0.028731
+113	52	-0.030666
+114	52	-0.073777
+115	52	-0.072371
+116	52	-0.009956
+117	52	0.075376
+118	52	0.17886
+119	52	0.30924
+120	52	0.39487
+121	52	0.44619
+122	52	0.49182
+123	52	0.46534
+124	52	0.46111
+125	52	0.45358
+126	52	0.51427
+127	52	0.55352
+128	52	0.52785
+129	52	0.611
+130	52	0.84264
+131	52	0.88295
+132	52	0.85702
+133	52	0.59084
+134	52	0.50561
+135	52	0.49643
+136	52	0.42919
+137	52	0.53864
+138	52	0.72795
+139	52	0.97241
+140	52	1.0069
+141	52	0.57726
+142	52	1.9731
+143	52	2.2474
+144	52	0
+145	52	0
+146	52	0
+147	52	0
+148	52	0
+149	52	0
+150	52	0
+151	52	0
+152	52	0
+153	52	0
+154	52	0
+155	52	0
+156	52	0
+157	52	1.3012
+158	52	0.41316
+159	52	0
+160	52	0
+161	52	0
+162	52	0
+163	52	0
+164	52	0
+165	52	0
+166	52	0
+167	52	0
+168	52	0
+169	52	0
+170	52	0
+171	52	0
+172	52	0
+173	52	0
+174	52	0
+175	52	0
+176	52	0
+177	52	0
+178	52	0
+179	52	0
+180	52	0
+181	52	0
+182	52	0
+183	52	0
+184	52	0
+185	52	0
+186	52	0
+187	52	0
+188	52	0
+189	52	0
+190	52	0
+191	52	0
+192	52	0
+193	52	0
+194	52	0
+195	52	0
+196	52	0
+197	52	0
+198	52	0
+199	52	0
+200	52	0
+201	52	0
+202	52	0
+203	52	0
+204	52	0
+205	52	0
+206	52	0
+207	52	0
+208	52	0
+209	52	0
+210	52	0
+211	52	0
+212	52	0
+213	52	0
+214	52	0
+215	52	0
+216	52	0
+217	52	0
+218	52	0
+219	52	0
+220	52	0
+221	52	0
+222	52	0
+223	52	0
+224	52	0
+225	52	0
+226	52	0
+227	52	0
+228	52	0
+229	52	0
+230	52	0
+231	52	0
+232	52	-0.19389
+233	52	0
+234	52	-0.13923
+235	52	-0.46584
+236	52	-0.32446
+237	52	-0.075462
+238	52	0.081635
+239	52	0.17711
+240	52	0.1669
+241	52	0.22108
+242	52	0.11752
+243	52	0.081268
+244	52	0.5471
+245	52	1.0771
+246	52	1.2062
+247	52	0.97296
+248	52	0.72695
+249	52	0.69644
+250	52	0.74078
+251	52	0.99056
+252	52	1.2272
+253	52	1.1213
+254	52	0.99445
+255	52	1.5296
+256	52	1.4798
+257	52	1.1366
+258	52	0.50657
+259	52	-0.069979
+260	52	-0.045686
+261	52	-0.6249
+262	52	-0.4849
+263	52	-0.7632
+264	52	-0.75868
+265	52	-0.91754
+266	52	-0.72422
+267	52	-0.56519
+268	52	-0.42083
+269	52	-0.31489
+270	52	-0.15396
+271	52	0.04942
+272	52	0.24513
+273	52	0.4116
+274	52	0.33264
+275	52	0.17468
+276	52	0.54403
+277	52	0.49243
+278	52	0.29672
+279	52	0.075534
+280	52	0.089836
+281	52	0.31506
+282	52	0.74935
+283	52	1.0157
+284	52	1.4397
+285	52	1.7036
+286	52	1.8728
+287	52	1.9091
+288	52	1.9906
+289	52	1.9804
+290	52	2.0289
+291	52	1.7539
+292	52	0.72038
+293	52	1.755
+294	52	1.4784
+295	52	0.79898
+296	52	0.62247
+297	52	0.62249
+298	52	0.6004
+299	52	0.64326
+300	52	0.72295
+301	52	0.81701
+302	52	1.0068
+303	52	0.73173
+304	52	0.48165
+305	52	0.041727
+306	52	0
+307	52	0
+308	52	0
+309	52	0
+310	52	0
+311	52	0
+312	52	0
+313	52	0
+314	52	0
+315	52	0
+316	52	0
+317	52	0
+318	52	0
+319	52	0
+320	52	0
+321	52	0
+322	52	0
+323	52	0
+324	52	0
+325	52	0
+326	52	0
+327	52	0
+328	52	0
+329	52	0
+330	52	0
+331	52	0
+332	52	0
+333	52	0
+334	52	0
+335	52	0
+336	52	0
+337	52	0
+338	52	0
+339	52	0
+340	52	0
+341	52	0
+342	52	0
+343	52	0
+344	52	0
+345	52	0
+346	52	0
+347	52	0
+348	52	0
+349	52	0
+350	52	-0.034869
+351	52	-0.2024
+352	52	-0.16378
+353	52	-0.11069
+354	52	0
+355	52	0
+356	52	0.068951
+357	52	0.23553
+358	52	0.34361
+359	52	0.34115
+360	52	0.13247
+0	52.5	0.15402
+1	52.5	0.16963
+2	52.5	0
+3	52.5	0
+4	52.5	0
+5	52.5	0.043172
+6	52.5	0.098905
+7	52.5	0.15941
+8	52.5	0.16278
+9	52.5	0.16957
+10	52.5	0.21925
+11	52.5	0.26341
+12	52.5	0.31087
+13	52.5	0.38992
+14	52.5	0.46706
+15	52.5	0.5433
+16	52.5	0.53948
+17	52.5	0.56198
+18	52.5	0.53891
+19	52.5	0.48077
+20	52.5	0.40491
+21	52.5	0.33931
+22	52.5	0.28862
+23	52.5	0.22343
+24	52.5	0.18404
+25	52.5	0.185
+26	52.5	0.18254
+27	52.5	0.1798
+28	52.5	0.1633
+29	52.5	0.1291
+30	52.5	0.022889
+31	52.5	-0.11976
+32	52.5	-0.26204
+33	52.5	-0.40732
+34	52.5	-0.56561
+35	52.5	-0.73021
+36	52.5	-0.88756
+37	52.5	-0.95379
+38	52.5	-1
+39	52.5	-1.0499
+40	52.5	-1.0914
+41	52.5	-1.1106
+42	52.5	-1.0231
+43	52.5	-0.95683
+44	52.5	-0.98385
+45	52.5	-1.0352
+46	52.5	-1.0153
+47	52.5	-0.9559
+48	52.5	-0.93727
+49	52.5	-0.9414
+50	52.5	-0.90168
+51	52.5	-0.89285
+52	52.5	-0.88488
+53	52.5	-1.0657
+54	52.5	-1.2324
+55	52.5	-1.2995
+56	52.5	-1.2605
+57	52.5	-1.2035
+58	52.5	-1.1692
+59	52.5	-1.0267
+60	52.5	-0.91518
+61	52.5	-0.80649
+62	52.5	-0.69916
+63	52.5	-0.59052
+64	52.5	-0.54589
+65	52.5	-0.54612
+66	52.5	-0.60074
+67	52.5	-0.61876
+68	52.5	-0.61799
+69	52.5	-0.58544
+70	52.5	-0.54169
+71	52.5	-0.4064
+72	52.5	-0.25928
+73	52.5	-0.16295
+74	52.5	-0.09676
+75	52.5	-0.040015
+76	52.5	-0.001801
+77	52.5	0.017551
+78	52.5	0.024823
+79	52.5	0.008114
+80	52.5	-0.042477
+81	52.5	-0.064856
+82	52.5	-0.040605
+83	52.5	-0.0093273
+84	52.5	0.014139
+85	52.5	0.043813
+86	52.5	0.10263
+87	52.5	0.14948
+88	52.5	0.16988
+89	52.5	0.13377
+90	52.5	0.08367
+91	52.5	0.045259
+92	52.5	0.028202
+93	52.5	0.026998
+94	52.5	0.039163
+95	52.5	0.065564
+96	52.5	0.11794
+97	52.5	0.17974
+98	52.5	0.27104
+99	52.5	0.3217
+100	52.5	0.34126
+101	52.5	0.45582
+102	52.5	0.55667
+103	52.5	0.48365
+104	52.5	0.581
+105	52.5	0.48737
+106	52.5	0.14174
+107	52.5	0.080747
+108	52.5	0.21009
+109	52.5	0.21937
+110	52.5	0.17184
+111	52.5	0.085151
+112	52.5	0.029129
+113	52.5	-0.013332
+114	52.5	-0.056344
+115	52.5	-0.052431
+116	52.5	0.0036716
+117	52.5	0.083331
+118	52.5	0.19085
+119	52.5	0.31308
+120	52.5	0.36821
+121	52.5	0.41683
+122	52.5	0.46815
+123	52.5	0.45358
+124	52.5	0.44206
+125	52.5	0.42435
+126	52.5	0.42267
+127	52.5	0.48769
+128	52.5	0.48281
+129	52.5	0.56595
+130	52.5	0.71328
+131	52.5	0.792
+132	52.5	0.74528
+133	52.5	0.62969
+134	52.5	0.56307
+135	52.5	0.56961
+136	52.5	0.40656
+137	52.5	0.55674
+138	52.5	0.77692
+139	52.5	0.9593
+140	52.5	1.0069
+141	52.5	0.71727
+142	52.5	1.7965
+143	52.5	2.0923
+144	52.5	0
+145	52.5	0
+146	52.5	0
+147	52.5	0
+148	52.5	0
+149	52.5	0
+150	52.5	0
+151	52.5	0
+152	52.5	0
+153	52.5	0
+154	52.5	0
+155	52.5	0
+156	52.5	0
+157	52.5	1.3014
+158	52.5	0.67272
+159	52.5	0
+160	52.5	0
+161	52.5	0
+162	52.5	0
+163	52.5	0
+164	52.5	0
+165	52.5	0
+166	52.5	0
+167	52.5	0
+168	52.5	0
+169	52.5	0
+170	52.5	0
+171	52.5	0
+172	52.5	0
+173	52.5	0
+174	52.5	0
+175	52.5	0
+176	52.5	0
+177	52.5	0
+178	52.5	0
+179	52.5	0
+180	52.5	0
+181	52.5	0
+182	52.5	0
+183	52.5	0
+184	52.5	0
+185	52.5	0
+186	52.5	0
+187	52.5	0
+188	52.5	0
+189	52.5	0
+190	52.5	0
+191	52.5	0
+192	52.5	0
+193	52.5	0
+194	52.5	0
+195	52.5	0
+196	52.5	0
+197	52.5	0
+198	52.5	0
+199	52.5	0
+200	52.5	0
+201	52.5	0
+202	52.5	0
+203	52.5	0
+204	52.5	0
+205	52.5	0
+206	52.5	0
+207	52.5	0
+208	52.5	0
+209	52.5	0
+210	52.5	0
+211	52.5	0
+212	52.5	0
+213	52.5	0
+214	52.5	0
+215	52.5	0
+216	52.5	0
+217	52.5	0
+218	52.5	0
+219	52.5	0
+220	52.5	0
+221	52.5	0
+222	52.5	0
+223	52.5	0
+224	52.5	0
+225	52.5	0
+226	52.5	0
+227	52.5	0
+228	52.5	0.015261
+229	52.5	0
+230	52.5	0
+231	52.5	-0.15528
+232	52.5	-0.28778
+233	52.5	0
+234	52.5	-0.26334
+235	52.5	-0.44234
+236	52.5	-0.29831
+237	52.5	-0.081365
+238	52.5	0.074179
+239	52.5	0.15163
+240	52.5	0.10151
+241	52.5	0.091182
+242	52.5	0.40911
+243	52.5	0.40361
+244	52.5	0.58888
+245	52.5	0.94682
+246	52.5	1.2892
+247	52.5	0.96595
+248	52.5	0.70198
+249	52.5	0.67753
+250	52.5	0.81154
+251	52.5	1.0828
+252	52.5	1.4334
+253	52.5	1.3703
+254	52.5	1.1986
+255	52.5	1.5736
+256	52.5	1.2855
+257	52.5	1.0458
+258	52.5	0.39766
+259	52.5	-0.18252
+260	52.5	-0.012039
+261	52.5	-0.5326
+262	52.5	0
+263	52.5	-0.34896
+264	52.5	-0.67495
+265	52.5	-0.79213
+266	52.5	-0.66189
+267	52.5	-0.52051
+268	52.5	-0.38039
+269	52.5	-0.27387
+270	52.5	-0.18105
+271	52.5	0.026679
+272	52.5	0.24097
+273	52.5	0.3766
+274	52.5	0.4795
+275	52.5	0.093618
+276	52.5	0.47621
+277	52.5	0.42115
+278	52.5	0.2052
+279	52.5	0
+280	52.5	0
+281	52.5	0
+282	52.5	0.68323
+283	52.5	1.1133
+284	52.5	1.3828
+285	52.5	1.5924
+286	52.5	1.7238
+287	52.5	1.7826
+288	52.5	1.7886
+289	52.5	1.7959
+290	52.5	1.9095
+291	52.5	1.9979
+292	52.5	1.2857
+293	52.5	1.4202
+294	52.5	1.423
+295	52.5	0.55666
+296	52.5	0.38482
+297	52.5	0.60759
+298	52.5	0.58677
+299	52.5	0.6207
+300	52.5	0.68401
+301	52.5	0.83346
+302	52.5	1.1341
+303	52.5	1.1692
+304	52.5	0.81326
+305	52.5	0
+306	52.5	0
+307	52.5	0
+308	52.5	0
+309	52.5	0
+310	52.5	0
+311	52.5	0
+312	52.5	0
+313	52.5	0
+314	52.5	0
+315	52.5	0
+316	52.5	0
+317	52.5	0
+318	52.5	0
+319	52.5	0
+320	52.5	0
+321	52.5	0
+322	52.5	0
+323	52.5	0
+324	52.5	0
+325	52.5	0
+326	52.5	0
+327	52.5	0
+328	52.5	0
+329	52.5	0
+330	52.5	0
+331	52.5	0
+332	52.5	0
+333	52.5	0
+334	52.5	0
+335	52.5	0
+336	52.5	0
+337	52.5	0
+338	52.5	0
+339	52.5	0
+340	52.5	0
+341	52.5	0
+342	52.5	0
+343	52.5	0
+344	52.5	0
+345	52.5	0
+346	52.5	0
+347	52.5	0
+348	52.5	0
+349	52.5	0
+350	52.5	-0.036566
+351	52.5	-0.3008
+352	52.5	-0.39848
+353	52.5	-0.24485
+354	52.5	0
+355	52.5	0
+356	52.5	0.026213
+357	52.5	0.22079
+358	52.5	0.39699
+359	52.5	0.39975
+360	52.5	0.15402
+0	53	0.10469
+1	53	0.10595
+2	53	0
+3	53	0
+4	53	0
+5	53	0.027478
+6	53	0.077069
+7	53	0.18155
+8	53	0.20166
+9	53	0.20599
+10	53	0.26627
+11	53	0.31853
+12	53	0.35846
+13	53	0.39809
+14	53	0.47738
+15	53	0.55221
+16	53	0.56552
+17	53	0.58814
+18	53	0.58355
+19	53	0.51058
+20	53	0.43001
+21	53	0.36998
+22	53	0.31209
+23	53	0.25127
+24	53	0.22322
+25	53	0.23147
+26	53	0.23021
+27	53	0.26058
+28	53	0.24344
+29	53	0.20111
+30	53	0.11262
+31	53	-0.03003
+32	53	-0.17535
+33	53	-0.32522
+34	53	-0.48351
+35	53	-0.64328
+36	53	-0.76726
+37	53	-0.84086
+38	53	-0.88843
+39	53	-0.93835
+40	53	-0.98329
+41	53	-1.0135
+42	53	-0.93813
+43	53	-0.89024
+44	53	-0.91237
+45	53	-0.95963
+46	53	-0.93378
+47	53	-0.88145
+48	53	-0.88558
+49	53	-0.89034
+50	53	-0.90341
+51	53	-0.89586
+52	53	-0.9147
+53	53	-1.0955
+54	53	-1.2763
+55	53	-1.3691
+56	53	-1.2952
+57	53	-1.2313
+58	53	-1.1804
+59	53	-1.0501
+60	53	-0.93856
+61	53	-0.82956
+62	53	-0.72332
+63	53	-0.61468
+64	53	-0.57469
+65	53	-0.58113
+66	53	-0.6452
+67	53	-0.65656
+68	53	-0.6517
+69	53	-0.61965
+70	53	-0.559
+71	53	-0.42178
+72	53	-0.27273
+73	53	-0.1807
+74	53	-0.11526
+75	53	-0.053612
+76	53	-0.018481
+77	53	0.0028357
+78	53	0.016142
+79	53	-0.0032054
+80	53	-0.037134
+81	53	-0.059482
+82	53	-0.043736
+83	53	0.0081108
+84	53	0.028226
+85	53	0.091222
+86	53	0.14487
+87	53	0.22332
+88	53	0.24897
+89	53	0.21617
+90	53	0.16768
+91	53	0.1069
+92	53	0.082589
+93	53	0.093217
+94	53	0.11313
+95	53	0.14661
+96	53	0.17747
+97	53	0.24185
+98	53	0.31536
+99	53	0.38021
+100	53	0.47565
+101	53	0.57048
+102	53	0.72343
+103	53	0.62814
+104	53	0.59606
+105	53	0.49483
+106	53	0.2575
+107	53	0.018232
+108	53	0.022585
+109	53	0.17692
+110	53	0.15983
+111	53	0.080831
+112	53	0.026384
+113	53	0.0027174
+114	53	-0.040703
+115	53	-0.032491
+116	53	0.023621
+117	53	0.091287
+118	53	0.20284
+119	53	0.29235
+120	53	0.35015
+121	53	0.39625
+122	53	0.44068
+123	53	0.43047
+124	53	0.4182
+125	53	0.39638
+126	53	0.39145
+127	53	0.39609
+128	53	0.43776
+129	53	0.52091
+130	53	0.59414
+131	53	0.67883
+132	53	0.72522
+133	53	0.65876
+134	53	0.618
+135	53	0.63776
+136	53	0.48878
+137	53	0.54925
+138	53	0.71277
+139	53	0.91133
+140	53	0.98602
+141	53	0.65232
+142	53	1.1943
+143	53	2.0594
+144	53	0
+145	53	0
+146	53	0
+147	53	0
+148	53	0
+149	53	0
+150	53	0
+151	53	0
+152	53	0
+153	53	0
+154	53	0
+155	53	0
+156	53	0.38683
+157	53	1.3631
+158	53	0.93763
+159	53	0.028804
+160	53	0
+161	53	0
+162	53	0
+163	53	0
+164	53	0
+165	53	0
+166	53	0
+167	53	0
+168	53	0
+169	53	0
+170	53	0
+171	53	0
+172	53	0
+173	53	0
+174	53	0
+175	53	0
+176	53	0
+177	53	0
+178	53	0
+179	53	0
+180	53	0
+181	53	0
+182	53	0
+183	53	0
+184	53	0
+185	53	0
+186	53	0
+187	53	0
+188	53	0
+189	53	0
+190	53	0
+191	53	0
+192	53	0
+193	53	0
+194	53	0
+195	53	0
+196	53	0
+197	53	0
+198	53	0
+199	53	0
+200	53	0
+201	53	0
+202	53	0
+203	53	0
+204	53	0
+205	53	0
+206	53	0
+207	53	0
+208	53	0
+209	53	0
+210	53	0
+211	53	0
+212	53	0
+213	53	0
+214	53	0
+215	53	0
+216	53	0
+217	53	0
+218	53	0
+219	53	0
+220	53	0
+221	53	0
+222	53	0
+223	53	0
+224	53	0
+225	53	0
+226	53	0
+227	53	0
+228	53	0.11855
+229	53	0
+230	53	0
+231	53	-0.35915
+232	53	0
+233	53	-0.096411
+234	53	-0.6219
+235	53	-0.42768
+236	53	-0.25726
+237	53	-0.065829
+238	53	0.081862
+239	53	0.18075
+240	53	0
+241	53	0.059773
+242	53	0.52191
+243	53	0.61651
+244	53	0.57244
+245	53	0.81583
+246	53	1.1108
+247	53	0.88818
+248	53	0.59038
+249	53	0.63729
+250	53	0.80233
+251	53	1.1429
+252	53	1.6744
+253	53	1.5605
+254	53	1.3032
+255	53	1.3505
+256	53	1.0911
+257	53	0.8051
+258	53	0.26518
+259	53	-0.17429
+260	53	0
+261	53	-0.2592
+262	53	0
+263	53	-0.41982
+264	53	-0.64938
+265	53	-0.66308
+266	53	-0.55132
+267	53	-0.49922
+268	53	-0.37137
+269	53	-0.25906
+270	53	-0.19521
+271	53	-0.00092878
+272	53	0.23479
+273	53	0.33457
+274	53	0.43601
+275	53	0.37384
+276	53	0.40098
+277	53	0.32215
+278	53	0.11048
+279	53	0.029117
+280	53	0
+281	53	0.016748
+282	53	0.60568
+283	53	1.0854
+284	53	1.2897
+285	53	1.495
+286	53	1.6543
+287	53	1.6915
+288	53	1.574
+289	53	1.6113
+290	53	1.7901
+291	53	1.8868
+292	53	1.8117
+293	53	1.5726
+294	53	1.3678
+295	53	0.71561
+296	53	0.30663
+297	53	0.61657
+298	53	0.60336
+299	53	0.63186
+300	53	0.77294
+301	53	0.93155
+302	53	1.1767
+303	53	1.1759
+304	53	0.84082
+305	53	0
+306	53	0
+307	53	0
+308	53	0
+309	53	0
+310	53	0
+311	53	0
+312	53	0
+313	53	0
+314	53	0
+315	53	0
+316	53	0
+317	53	0
+318	53	0
+319	53	0
+320	53	0
+321	53	0
+322	53	0
+323	53	0
+324	53	0
+325	53	0
+326	53	0
+327	53	0
+328	53	0
+329	53	0
+330	53	0
+331	53	0
+332	53	0
+333	53	0
+334	53	0
+335	53	0
+336	53	0
+337	53	0
+338	53	0
+339	53	0
+340	53	0
+341	53	0
+342	53	0
+343	53	0
+344	53	0
+345	53	0
+346	53	0
+347	53	0
+348	53	0
+349	53	0
+350	53	-0.0027152
+351	53	-0.37671
+352	53	-0.51049
+353	53	-0.36987
+354	53	-0.028065
+355	53	0
+356	53	0.0024695
+357	53	0.16113
+358	53	0.38741
+359	53	0.43664
+360	53	0.10469
+0	53.5	0.080013
+1	53.5	0
+2	53.5	0
+3	53.5	0
+4	53.5	0
+5	53.5	0.011477
+6	53.5	0.026174
+7	53.5	0.09302
+8	53.5	0.21077
+9	53.5	0.24241
+10	53.5	0.31134
+11	53.5	0.30029
+12	53.5	0.39655
+13	53.5	0.38078
+14	53.5	0.45254
+15	53.5	0.53081
+16	53.5	0.50531
+17	53.5	0.56195
+18	53.5	0.57865
+19	53.5	0.49959
+20	53.5	0.41226
+21	53.5	0.39239
+22	53.5	0.34717
+23	53.5	0.29439
+24	53.5	0.26533
+25	53.5	0.27793
+26	53.5	0.29419
+27	53.5	0.33671
+28	53.5	0.32358
+29	53.5	0.27312
+30	53.5	0.19315
+31	53.5	0.059637
+32	53.5	-0.086033
+33	53.5	-0.22954
+34	53.5	-0.38479
+35	53.5	-0.53832
+36	53.5	-0.64696
+37	53.5	-0.72794
+38	53.5	-0.77686
+39	53.5	-0.82678
+40	53.5	-0.87514
+41	53.5	-0.90248
+42	53.5	-0.85314
+43	53.5	-0.82365
+44	53.5	-0.84578
+45	53.5	-0.88408
+46	53.5	-0.85231
+47	53.5	-0.82449
+48	53.5	-0.83889
+49	53.5	-0.84399
+50	53.5	-0.86439
+51	53.5	-0.89759
+52	53.5	-0.94452
+53	53.5	-1.1253
+54	53.5	-1.3061
+55	53.5	-1.4038
+56	53.5	-1.3299
+57	53.5	-1.2591
+58	53.5	-1.1916
+59	53.5	-1.0734
+60	53.5	-0.96194
+61	53.5	-0.85279
+62	53.5	-0.74722
+63	53.5	-0.63884
+64	53.5	-0.60349
+65	53.5	-0.61614
+66	53.5	-0.66831
+67	53.5	-0.66847
+68	53.5	-0.66337
+69	53.5	-0.64186
+70	53.5	-0.5651
+71	53.5	-0.43457
+72	53.5	-0.29101
+73	53.5	-0.19846
+74	53.5	-0.12886
+75	53.5	-0.071179
+76	53.5	-0.035161
+77	53.5	4.8529e-05
+78	53.5	0.007462
+79	53.5	-0.0099831
+80	53.5	-0.029619
+81	53.5	-0.049888
+82	53.5	-0.011613
+83	53.5	0.034378
+84	53.5	0.072654
+85	53.5	0.14229
+86	53.5	0.2161
+87	53.5	0.30264
+88	53.5	0.35774
+89	53.5	0.30106
+90	53.5	0.24201
+91	53.5	0.17585
+92	53.5	0.15516
+93	53.5	0.16641
+94	53.5	0.19196
+95	53.5	0.22561
+96	53.5	0.23069
+97	53.5	0.30479
+98	53.5	0.37877
+99	53.5	0.57743
+100	53.5	0.67364
+101	53.5	0.73398
+102	53.5	0.86133
+103	53.5	0.73293
+104	53.5	0.60725
+105	53.5	0.50144
+106	53.5	0.30426
+107	53.5	0.11047
+108	53.5	0
+109	53.5	0.12158
+110	53.5	0.12933
+111	53.5	0.078236
+112	53.5	0.024116
+113	53.5	0.0095099
+114	53.5	-0.020179
+115	53.5	-0.0061149
+116	53.5	0.043571
+117	53.5	0.10206
+118	53.5	0.19228
+119	53.5	0.27162
+120	53.5	0.33209
+121	53.5	0.37819
+122	53.5	0.41366
+123	53.5	0.4066
+124	53.5	0.39232
+125	53.5	0.36875
+126	53.5	0.36223
+127	53.5	0.35855
+128	53.5	0.38945
+129	53.5	0.46995
+130	53.5	0.50916
+131	53.5	0.56566
+132	53.5	0.64725
+133	53.5	0.68769
+134	53.5	0.66868
+135	53.5	0.68345
+136	53.5	0.48143
+137	53.5	0.42337
+138	53.5	0.62792
+139	53.5	0.78117
+140	53.5	0.84921
+141	53.5	0.47276
+142	53.5	0.35796
+143	53.5	0.98565
+144	53.5	0
+145	53.5	0
+146	53.5	0
+147	53.5	0
+148	53.5	0
+149	53.5	0
+150	53.5	0
+151	53.5	0
+152	53.5	0
+153	53.5	0
+154	53.5	0
+155	53.5	0
+156	53.5	0.7692
+157	53.5	1.49
+158	53.5	1.2376
+159	53.5	0.38407
+160	53.5	0.059954
+161	53.5	0
+162	53.5	0
+163	53.5	0
+164	53.5	0
+165	53.5	0
+166	53.5	0
+167	53.5	0
+168	53.5	0
+169	53.5	0
+170	53.5	0
+171	53.5	0
+172	53.5	0
+173	53.5	0
+174	53.5	0
+175	53.5	0
+176	53.5	0
+177	53.5	0
+178	53.5	0
+179	53.5	0
+180	53.5	0
+181	53.5	0
+182	53.5	0
+183	53.5	0
+184	53.5	0
+185	53.5	0
+186	53.5	0
+187	53.5	0
+188	53.5	0
+189	53.5	0
+190	53.5	0
+191	53.5	0
+192	53.5	0
+193	53.5	0
+194	53.5	0
+195	53.5	0
+196	53.5	0
+197	53.5	0
+198	53.5	0
+199	53.5	0
+200	53.5	0
+201	53.5	0
+202	53.5	0
+203	53.5	0
+204	53.5	0
+205	53.5	0
+206	53.5	0
+207	53.5	0
+208	53.5	0
+209	53.5	0
+210	53.5	0
+211	53.5	0
+212	53.5	0
+213	53.5	0
+214	53.5	0
+215	53.5	0
+216	53.5	0
+217	53.5	0
+218	53.5	0
+219	53.5	0
+220	53.5	0
+221	53.5	0
+222	53.5	0
+223	53.5	0
+224	53.5	0
+225	53.5	0
+226	53.5	0
+227	53.5	0.015969
+228	53.5	-0.013992
+229	53.5	0
+230	53.5	-0.12649
+231	53.5	-0.36913
+232	53.5	0
+233	53.5	-0.37662
+234	53.5	-0.62922
+235	53.5	-0.43489
+236	53.5	-0.22008
+237	53.5	-0.0398
+238	53.5	0.11222
+239	53.5	0.16107
+240	53.5	0.084543
+241	53.5	0.24876
+242	53.5	0.4832
+243	53.5	0.53451
+244	53.5	0.56932
+245	53.5	0.68518
+246	53.5	0.8874
+247	53.5	0.72922
+248	53.5	0.48719
+249	53.5	0.52375
+250	53.5	0.72834
+251	53.5	1.1524
+252	53.5	1.3701
+253	53.5	1.4828
+254	53.5	1.2559
+255	53.5	0.88881
+256	53.5	0.70125
+257	53.5	0.42797
+258	53.5	-0.022666
+259	53.5	-0.22528
+260	53.5	-0.045154
+261	53.5	-0.012858
+262	53.5	0
+263	53.5	-0.48415
+264	53.5	-0.63288
+265	53.5	-0.60884
+266	53.5	-0.49522
+267	53.5	-0.49165
+268	53.5	-0.39555
+269	53.5	-0.24424
+270	53.5	-0.17703
+271	53.5	-0.028536
+272	53.5	0.16876
+273	53.5	0.29332
+274	53.5	0.28378
+275	53.5	0.26586
+276	53.5	0.30585
+277	53.5	0.23307
+278	53.5	0.031202
+279	53.5	0.014425
+280	53.5	0
+281	53.5	0.1698
+282	53.5	0.60259
+283	53.5	1.0511
+284	53.5	1.2537
+285	53.5	1.4167
+286	53.5	1.5962
+287	53.5	1.5654
+288	53.5	1.3594
+289	53.5	1.4268
+290	53.5	1.6352
+291	53.5	1.7614
+292	53.5	1.6979
+293	53.5	1.5082
+294	53.5	1.3194
+295	53.5	0.87456
+296	53.5	0.57219
+297	53.5	0.64988
+298	53.5	0.62183
+299	53.5	0.64808
+300	53.5	0.84466
+301	53.5	0.49751
+302	53.5	0.99507
+303	53.5	0.83338
+304	53.5	0.27001
+305	53.5	0
+306	53.5	0
+307	53.5	0
+308	53.5	0
+309	53.5	0
+310	53.5	0
+311	53.5	0
+312	53.5	0
+313	53.5	0
+314	53.5	0
+315	53.5	0
+316	53.5	0
+317	53.5	0
+318	53.5	0
+319	53.5	0
+320	53.5	0
+321	53.5	0
+322	53.5	0
+323	53.5	0
+324	53.5	0
+325	53.5	0
+326	53.5	0
+327	53.5	0
+328	53.5	0
+329	53.5	0
+330	53.5	0
+331	53.5	0
+332	53.5	0
+333	53.5	0
+334	53.5	0
+335	53.5	0
+336	53.5	0
+337	53.5	0
+338	53.5	0
+339	53.5	0
+340	53.5	0
+341	53.5	0
+342	53.5	0
+343	53.5	0
+344	53.5	0
+345	53.5	0
+346	53.5	0
+347	53.5	0
+348	53.5	0
+349	53.5	0
+350	53.5	0
+351	53.5	-0.39793
+352	53.5	-0.55453
+353	53.5	-0.46652
+354	53.5	-0.095046
+355	53.5	0
+356	53.5	-0.0024637
+357	53.5	0.10975
+358	53.5	0.33939
+359	53.5	0.43754
+360	53.5	0.080013
+0	54	0
+1	54	0
+2	54	0
+3	54	0
+4	54	0
+5	54	0
+6	54	0
+7	54	0
+8	54	0.092806
+9	54	0.23772
+10	54	0.29247
+11	54	0.2735
+12	54	0.21771
+13	54	0.19746
+14	54	0.22321
+15	54	0.11517
+16	54	0.30361
+17	54	0.44399
+18	54	0.54984
+19	54	0.40635
+20	54	0.38815
+21	54	0.41162
+22	54	0.38566
+23	54	0.34355
+24	54	0.32768
+25	54	0.33287
+26	54	0.36144
+27	54	0.39075
+28	54	0.40185
+29	54	0.34513
+30	54	0.26516
+31	54	0.14895
+32	54	0.021143
+33	54	-0.11659
+34	54	-0.27184
+35	54	-0.42141
+36	54	-0.52918
+37	54	-0.61537
+38	54	-0.66529
+39	54	-0.71712
+40	54	-0.76933
+41	54	-0.79145
+42	54	-0.76814
+43	54	-0.75706
+44	54	-0.7792
+45	54	-0.80854
+46	54	-0.75386
+47	54	-0.68843
+48	54	-0.79253
+49	54	-0.79763
+50	54	-0.81527
+51	54	-0.88332
+52	54	-0.97434
+53	54	-1.1094
+54	54	-1.221
+55	54	-1.3272
+56	54	-1.3646
+57	54	-1.2906
+58	54	-1.2083
+59	54	-1.0968
+60	54	-0.98531
+61	54	-0.87602
+62	54	-0.77046
+63	54	-0.66299
+64	54	-0.63229
+65	54	-0.65115
+66	54	-0.67983
+67	54	-0.68039
+68	54	-0.67503
+69	54	-0.65091
+70	54	-0.57119
+71	54	-0.44521
+72	54	-0.3093
+73	54	-0.2005
+74	54	-0.1309
+75	54	-0.078706
+76	54	-0.033007
+77	54	0.00051585
+78	54	0.012852
+79	54	0.0072203
+80	54	-0.016684
+81	54	-0.020486
+82	54	0.021189
+83	54	0.06625
+84	54	0.11132
+85	54	0.1857
+86	54	0.2831
+87	54	0.38197
+88	54	0.46651
+89	54	0.38037
+90	54	0.3136
+91	54	0.24722
+92	54	0.22837
+93	54	0.2396
+94	54	0.27079
+95	54	0.3046
+96	54	0.29464
+97	54	0.37158
+98	54	0.44853
+99	54	0.72941
+100	54	0.87263
+101	54	0.89747
+102	54	0.92714
+103	54	0.81162
+104	54	0.65764
+105	54	0.49999
+106	54	0.33485
+107	54	0.24564
+108	54	0.066056
+109	54	0.049487
+110	54	0.11555
+111	54	0.072813
+112	54	0.029145
+113	54	0.013977
+114	54	0.0082634
+115	54	0.0082048
+116	54	0.050904
+117	54	0.11344
+118	54	0.17155
+119	54	0.25089
+120	54	0.31404
+121	54	0.36014
+122	54	0.38664
+123	54	0.38274
+124	54	0.36469
+125	54	0.34112
+126	54	0.333
+127	54	0.32932
+128	54	0.33799
+129	54	0.41115
+130	54	0.45098
+131	54	0.4721
+132	54	0.58613
+133	54	0.67425
+134	54	0.69818
+135	54	0.69424
+136	54	0.39839
+137	54	0.14233
+138	54	0.17251
+139	54	0.24915
+140	54	0.49822
+141	54	0.19025
+142	54	0
+143	54	0
+144	54	0
+145	54	0
+146	54	0
+147	54	0
+148	54	0
+149	54	0
+150	54	0
+151	54	0
+152	54	0
+153	54	0
+154	54	0
+155	54	0
+156	54	0.58088
+157	54	1.553
+158	54	1.4444
+159	54	0.68745
+160	54	0.1414
+161	54	9.9359e-05
+162	54	0
+163	54	0
+164	54	0
+165	54	0
+166	54	0
+167	54	0
+168	54	0
+169	54	0
+170	54	0
+171	54	0
+172	54	0
+173	54	0
+174	54	0
+175	54	0
+176	54	0
+177	54	0
+178	54	0
+179	54	0
+180	54	0
+181	54	0
+182	54	0
+183	54	0
+184	54	0
+185	54	0
+186	54	0
+187	54	0
+188	54	0
+189	54	0
+190	54	0
+191	54	0
+192	54	0
+193	54	0
+194	54	0
+195	54	0
+196	54	0
+197	54	0
+198	54	0
+199	54	0
+200	54	0
+201	54	0
+202	54	0
+203	54	0
+204	54	0
+205	54	0
+206	54	0
+207	54	0
+208	54	0
+209	54	0
+210	54	0
+211	54	0
+212	54	0
+213	54	0
+214	54	0
+215	54	0
+216	54	0
+217	54	0
+218	54	0
+219	54	0
+220	54	0
+221	54	0
+222	54	0
+223	54	0
+224	54	0
+225	54	0
+226	54	0
+227	54	-0.027926
+228	54	-0.060277
+229	54	-0.089895
+230	54	-0.20739
+231	54	-0.059464
+232	54	0
+233	54	-1.0925
+234	54	-0.63745
+235	54	-0.41957
+236	54	-0.19579
+237	54	-0.013772
+238	54	0.14838
+239	54	0.048844
+240	54	0.098017
+241	54	0.40767
+242	54	0.44449
+243	54	0.49945
+244	54	0.55048
+245	54	0.66225
+246	54	0.664
+247	54	0.54658
+248	54	0.41114
+249	54	0.41077
+250	54	0.58121
+251	54	0.88293
+252	54	1.0386
+253	54	0.96365
+254	54	0.65151
+255	54	0.42828
+256	54	0.37382
+257	54	0.086329
+258	54	-0.34702
+259	54	-0.57368
+260	54	-0.44293
+261	54	-0.30032
+262	54	-0.15098
+263	54	-0.60418
+264	54	-0.65105
+265	54	-0.54681
+266	54	-0.45291
+267	54	-0.47931
+268	54	-0.41973
+269	54	-0.26629
+270	54	-0.21193
+271	54	-0.08569
+272	54	0.041544
+273	54	0.15375
+274	54	0.048791
+275	54	0.13741
+276	54	0.06023
+277	54	0.12988
+278	54	0
+279	54	0
+280	54	0
+281	54	0.22182
+282	54	0.57898
+283	54	0.9631
+284	54	1.2112
+285	54	1.3506
+286	54	1.5129
+287	54	1.3749
+288	54	1.2224
+289	54	1.2423
+290	54	1.4755
+291	54	1.6063
+292	54	1.584
+293	54	1.4292
+294	54	1.2719
+295	54	1.0335
+296	54	0.82157
+297	54	0.68403
+298	54	0.6403
+299	54	0.69926
+300	54	0.95538
+301	54	0.60403
+302	54	0.60783
+303	54	0.5476
+304	54	0
+305	54	0
+306	54	0
+307	54	0
+308	54	0
+309	54	0
+310	54	0
+311	54	0
+312	54	0
+313	54	0
+314	54	0
+315	54	0
+316	54	0
+317	54	0
+318	54	0
+319	54	0
+320	54	0
+321	54	0
+322	54	0
+323	54	0
+324	54	0
+325	54	0
+326	54	0
+327	54	0
+328	54	0
+329	54	0
+330	54	0
+331	54	0
+332	54	0
+333	54	0
+334	54	0
+335	54	0
+336	54	0
+337	54	0
+338	54	0
+339	54	0
+340	54	0
+341	54	0
+342	54	0
+343	54	0
+344	54	0
+345	54	0
+346	54	0
+347	54	0
+348	54	0
+349	54	0
+350	54	0
+351	54	-0.30013
+352	54	-0.18378
+353	54	-0.43209
+354	54	-0.16036
+355	54	0
+356	54	0
+357	54	0.059967
+358	54	0.28035
+359	54	0.35056
+360	54	0
+0	54.5	0
+1	54.5	0
+2	54.5	0
+3	54.5	0
+4	54.5	0
+5	54.5	0
+6	54.5	0
+7	54.5	0
+8	54.5	0.011368
+9	54.5	0.24232
+10	54.5	0.19901
+11	54.5	0.18425
+12	54.5	0.10644
+13	54.5	0.078465
+14	54.5	0
+15	54.5	0
+16	54.5	0.075756
+17	54.5	0.11872
+18	54.5	0.40774
+19	54.5	0.10829
+20	54.5	0.19867
+21	54.5	0.42026
+22	54.5	0.44476
+23	54.5	0.41201
+24	54.5	0.39705
+25	54.5	0.40112
+26	54.5	0.42259
+27	54.5	0.44479
+28	54.5	0.45818
+29	54.5	0.43503
+30	54.5	0.34538
+31	54.5	0.24719
+32	54.5	0.12689
+33	54.5	-0.0060182
+34	54.5	-0.15888
+35	54.5	-0.30449
+36	54.5	-0.41637
+37	54.5	-0.50823
+38	54.5	-0.5617
+39	54.5	-0.61518
+40	54.5	-0.66521
+41	54.5	-0.68427
+42	54.5	-0.68315
+43	54.5	-0.69048
+44	54.5	-0.71261
+45	54.5	-0.73474
+46	54.5	-0.61901
+47	54.5	-0.55237
+48	54.5	-0.71931
+49	54.5	-0.75128
+50	54.5	-0.76615
+51	54.5	-0.83421
+52	54.5	-0.89121
+53	54.5	-1.0029
+54	54.5	-1.1145
+55	54.5	-1.2237
+56	54.5	-1.3078
+57	54.5	-1.3253
+58	54.5	-1.2317
+59	54.5	-1.1155
+60	54.5	-0.94835
+61	54.5	-0.86285
+62	54.5	-0.79369
+63	54.5	-0.68715
+64	54.5	-0.66714
+65	54.5	-0.68616
+66	54.5	-0.69119
+67	54.5	-0.69215
+68	54.5	-0.6867
+69	54.5	-0.65996
+70	54.5	-0.57534
+71	54.5	-0.45197
+72	54.5	-0.32555
+73	54.5	-0.20877
+74	54.5	-0.13294
+75	54.5	-0.079908
+76	54.5	-0.028606
+77	54.5	0.00098318
+78	54.5	0.024684
+79	54.5	0.023342
+80	54.5	-0.0020442
+81	54.5	0.01353
+82	54.5	0.030553
+83	54.5	0.049078
+84	54.5	0.15165
+85	54.5	0.22806
+86	54.5	0.33413
+87	54.5	0.45587
+88	54.5	0.5628
+89	54.5	0.44442
+90	54.5	0.37695
+91	54.5	0.3262
+92	54.5	0.30513
+93	54.5	0.3149
+94	54.5	0.34961
+95	54.5	0.38001
+96	54.5	0.39205
+97	54.5	0.46811
+98	54.5	0.5637
+99	54.5	0.81925
+100	54.5	1.0553
+101	54.5	1.0242
+102	54.5	0.97509
+103	54.5	0.88661
+104	54.5	0.73844
+105	54.5	0.55702
+106	54.5	0.40386
+107	54.5	0.27094
+108	54.5	0.17629
+109	54.5	0.041684
+110	54.5	0.063369
+111	54.5	0.079412
+112	54.5	0.042153
+113	54.5	0.021829
+114	54.5	0.022583
+115	54.5	0.022524
+116	54.5	0.06681
+117	54.5	0.12071
+118	54.5	0.15705
+119	54.5	0.23016
+120	54.5	0.29598
+121	54.5	0.34124
+122	54.5	0.35962
+123	54.5	0.35888
+124	54.5	0.33705
+125	54.5	0.31348
+126	54.5	0.30378
+127	54.5	0.2889
+128	54.5	0.28654
+129	54.5	0.34978
+130	54.5	0.3928
+131	54.5	0.41688
+132	54.5	0.52957
+133	54.5	0.63365
+134	54.5	0.70802
+135	54.5	0.67269
+136	54.5	0.11424
+137	54.5	0
+138	54.5	0
+139	54.5	0
+140	54.5	0.056628
+141	54.5	0
+142	54.5	0
+143	54.5	0
+144	54.5	0
+145	54.5	0
+146	54.5	0
+147	54.5	0
+148	54.5	0
+149	54.5	0
+150	54.5	0
+151	54.5	0
+152	54.5	0
+153	54.5	0
+154	54.5	0
+155	54.5	0
+156	54.5	0.80889
+157	54.5	1.5732
+158	54.5	1.5754
+159	54.5	0.90688
+160	54.5	0.50334
+161	54.5	0.23174
+162	54.5	0.0093184
+163	54.5	0
+164	54.5	0
+165	54.5	0
+166	54.5	0
+167	54.5	0
+168	54.5	0
+169	54.5	0
+170	54.5	0
+171	54.5	0
+172	54.5	0
+173	54.5	0
+174	54.5	0
+175	54.5	0
+176	54.5	0
+177	54.5	0
+178	54.5	0
+179	54.5	0
+180	54.5	0
+181	54.5	0
+182	54.5	0
+183	54.5	0
+184	54.5	0
+185	54.5	0
+186	54.5	0
+187	54.5	0
+188	54.5	0
+189	54.5	0
+190	54.5	0
+191	54.5	0
+192	54.5	0
+193	54.5	0
+194	54.5	0
+195	54.5	0
+196	54.5	0
+197	54.5	0
+198	54.5	0
+199	54.5	0
+200	54.5	0
+201	54.5	0
+202	54.5	0
+203	54.5	0
+204	54.5	0
+205	54.5	0
+206	54.5	0
+207	54.5	0
+208	54.5	0
+209	54.5	0
+210	54.5	0
+211	54.5	0
+212	54.5	0
+213	54.5	0
+214	54.5	0
+215	54.5	0
+216	54.5	0
+217	54.5	0
+218	54.5	0
+219	54.5	0
+220	54.5	0
+221	54.5	0
+222	54.5	0
+223	54.5	0
+224	54.5	0
+225	54.5	0
+226	54.5	0
+227	54.5	-0.026333
+228	54.5	-0.0028739
+229	54.5	-0.083513
+230	54.5	-0.34606
+231	54.5	0
+232	54.5	0
+233	54.5	-1.2016
+234	54.5	-0.67186
+235	54.5	-0.39236
+236	54.5	-0.14057
+237	54.5	0.031441
+238	54.5	0.1972
+239	54.5	0.12678
+240	54.5	0.23431
+241	54.5	0.53262
+242	54.5	0.47369
+243	54.5	0.57624
+244	54.5	0.52292
+245	54.5	0.63469
+246	54.5	0.57448
+247	54.5	0.49169
+248	54.5	0.36222
+249	54.5	0.33915
+250	54.5	0.35204
+251	54.5	0.3477
+252	54.5	0.63756
+253	54.5	0.25825
+254	54.5	0.19897
+255	54.5	0.22833
+256	54.5	0.087714
+257	54.5	-0.18442
+258	54.5	-0.58002
+259	54.5	-0.69083
+260	54.5	-0.73189
+261	54.5	-0.65818
+262	54.5	-0.057617
+263	54.5	-0.75932
+264	54.5	-0.69168
+265	54.5	-0.63151
+266	54.5	-0.55374
+267	54.5	-0.46698
+268	54.5	-0.41095
+269	54.5	-0.41395
+270	54.5	-0.42124
+271	54.5	-0.27369
+272	54.5	-0.085673
+273	54.5	0.0019473
+274	54.5	-0.045719
+275	54.5	0.050241
+276	54.5	0.011999
+277	54.5	0.052389
+278	54.5	0
+279	54.5	0
+280	54.5	0
+281	54.5	0.20099
+282	54.5	0.47217
+283	54.5	0.85428
+284	54.5	1.1896
+285	54.5	1.3589
+286	54.5	1.4671
+287	54.5	0.56756
+288	54.5	1.2118
+289	54.5	1.1736
+290	54.5	1.4002
+291	54.5	1.482
+292	54.5	1.4701
+293	54.5	1.3491
+294	54.5	1.2306
+295	54.5	1.0116
+296	54.5	0.81227
+297	54.5	0.72156
+298	54.5	0.67673
+299	54.5	0.77135
+300	54.5	0.90425
+301	54.5	1.0592
+302	54.5	0
+303	54.5	0.12293
+304	54.5	0
+305	54.5	0
+306	54.5	0
+307	54.5	0
+308	54.5	0
+309	54.5	0
+310	54.5	0
+311	54.5	0
+312	54.5	0
+313	54.5	0
+314	54.5	0
+315	54.5	0
+316	54.5	0
+317	54.5	0
+318	54.5	0
+319	54.5	0
+320	54.5	0
+321	54.5	0
+322	54.5	0
+323	54.5	0
+324	54.5	0
+325	54.5	0
+326	54.5	0
+327	54.5	0
+328	54.5	0
+329	54.5	0
+330	54.5	0
+331	54.5	0
+332	54.5	0
+333	54.5	0
+334	54.5	0
+335	54.5	0
+336	54.5	0
+337	54.5	0
+338	54.5	0
+339	54.5	0
+340	54.5	0
+341	54.5	0
+342	54.5	0
+343	54.5	0
+344	54.5	0
+345	54.5	0
+346	54.5	0
+347	54.5	0
+348	54.5	0
+349	54.5	0
+350	54.5	0
+351	54.5	-0.14201
+352	54.5	-0.21251
+353	54.5	-0.32709
+354	54.5	-0.16632
+355	54.5	0
+356	54.5	0
+357	54.5	0.011902
+358	54.5	0.19699
+359	54.5	0.13403
+360	54.5	0
+0	55	0
+1	55	0
+2	55	0
+3	55	0
+4	55	0
+5	55	0
+6	55	0
+7	55	0
+8	55	0
+9	55	0.30955
+10	55	0.15866
+11	55	0.047069
+12	55	0.0084101
+13	55	0.039416
+14	55	0
+15	55	0.017783
+16	55	0
+17	55	0
+18	55	0.17303
+19	55	0
+20	55	0.0069329
+21	55	0.43785
+22	55	0.52407
+23	55	0.49573
+24	55	0.46969
+25	55	0.47869
+26	55	0.48233
+27	55	0.49883
+28	55	0.52685
+29	55	0.55602
+30	55	0.46637
+31	55	0.35589
+32	55	0.23263
+33	55	0.09999
+34	55	-0.045933
+35	55	-0.18757
+36	55	-0.30356
+37	55	-0.40058
+38	55	-0.45975
+39	55	-0.51323
+40	55	-0.5611
+41	55	-0.5844
+42	55	-0.60021
+43	55	-0.62102
+44	55	-0.64166
+45	55	-0.66231
+46	55	-0.48417
+47	55	-0.41632
+48	55	-0.58326
+49	55	-0.70493
+50	55	-0.71704
+51	55	-0.77887
+52	55	-0.81205
+53	55	-0.89638
+54	55	-1.008
+55	55	-1.1197
+56	55	-1.2043
+57	55	-1.2885
+58	55	-1.1845
+59	55	-1.0174
+60	55	-0.85025
+61	55	-0.80327
+62	55	-0.77587
+63	55	-0.71131
+64	55	-0.70031
+65	55	-0.68126
+66	55	-0.68905
+67	55	-0.70107
+68	55	-0.6973
+69	55	-0.64484
+70	55	-0.55923
+71	55	-0.44079
+72	55	-0.34092
+73	55	-0.22458
+74	55	-0.13498
+75	55	-0.080943
+76	55	-0.013384
+77	55	0.020398
+78	55	0.04341
+79	55	0.041686
+80	55	0.036721
+81	55	0.054973
+82	55	0.076803
+83	55	0.13742
+84	55	0.19657
+85	55	0.27404
+86	55	0.3825
+87	55	0.50393
+88	55	0.57315
+89	55	0.50848
+90	55	0.44031
+91	55	0.40647
+92	55	0.38343
+93	55	0.39373
+94	55	0.42844
+95	55	0.45541
+96	55	0.49597
+97	55	0.56464
+98	55	0.67894
+99	55	0.86541
+100	55	1.0877
+101	55	1.0415
+102	55	0.99963
+103	55	0.91936
+104	55	0.82811
+105	55	0.66055
+106	55	0.4757
+107	55	0.33319
+108	55	0.27532
+109	55	0.13886
+110	55	0.11389
+111	55	0.08601
+112	55	0.05516
+113	55	0.030715
+114	55	0.034589
+115	55	0.036844
+116	55	0.083362
+117	55	0.13096
+118	55	0.166
+119	55	0.20943
+120	55	0.27792
+121	55	0.31422
+122	55	0.3326
+123	55	0.33299
+124	55	0.30942
+125	55	0.28585
+126	55	0.27455
+127	55	0.244
+128	55	0.23244
+129	55	0.2884
+130	55	0.33462
+131	55	0.36585
+132	55	0.47301
+133	55	0.58254
+134	55	0.66796
+135	55	0.64598
+136	55	0.14802
+137	55	0
+138	55	0
+139	55	0
+140	55	0
+141	55	0
+142	55	0
+143	55	0
+144	55	0
+145	55	0
+146	55	0
+147	55	0
+148	55	0
+149	55	0
+150	55	0
+151	55	0
+152	55	0
+153	55	0
+154	55	0
+155	55	0
+156	55	0.74487
+157	55	1.4787
+158	55	1.6269
+159	55	1.0769
+160	55	0.74568
+161	55	0.45436
+162	55	0
+163	55	0
+164	55	0
+165	55	0
+166	55	0
+167	55	0
+168	55	0
+169	55	0
+170	55	0
+171	55	0
+172	55	0
+173	55	0
+174	55	0
+175	55	0
+176	55	0
+177	55	0
+178	55	0
+179	55	0
+180	55	0
+181	55	0
+182	55	0
+183	55	0
+184	55	0
+185	55	0
+186	55	0
+187	55	0
+188	55	0
+189	55	0
+190	55	0
+191	55	0
+192	55	0
+193	55	0
+194	55	0
+195	55	0
+196	55	0
+197	55	0
+198	55	0.00030308
+199	55	0
+200	55	0
+201	55	0
+202	55	0
+203	55	0
+204	55	0
+205	55	0
+206	55	0
+207	55	0
+208	55	0
+209	55	0
+210	55	0
+211	55	0
+212	55	0
+213	55	0
+214	55	0
+215	55	0
+216	55	0
+217	55	0
+218	55	0
+219	55	0
+220	55	0
+221	55	0
+222	55	0
+223	55	0
+224	55	0
+225	55	0
+226	55	0
+227	55	-0.00050177
+228	55	0
+229	55	-0.75226
+230	55	-0.86522
+231	55	-0.88007
+232	55	-0.46996
+233	55	-1.2895
+234	55	-0.73924
+235	55	-0.3651
+236	55	-0.10356
+237	55	0.090847
+238	55	0.24863
+239	55	0.34368
+240	55	0.40557
+241	55	0.56515
+242	55	0.58551
+243	55	0.65254
+244	55	0.55185
+245	55	0.60714
+246	55	0.51733
+247	55	0.43143
+248	55	0.31552
+249	55	0.23859
+250	55	0.15219
+251	55	0.14522
+252	55	0.23047
+253	55	-0.036246
+254	55	0.0033935
+255	55	0.016712
+256	55	-0.17228
+257	55	-0.39287
+258	55	-0.78817
+259	55	-0.85232
+260	55	-0.91937
+261	55	-0.89193
+262	55	-0.40104
+263	55	-0.88731
+264	55	-0.81589
+265	55	-0.73417
+266	55	-0.65892
+267	55	-0.52859
+268	55	-0.47242
+269	55	-0.5616
+270	55	-0.62542
+271	55	-0.47652
+272	55	-0.27199
+273	55	-0.20181
+274	55	-0.14214
+275	55	-0.0086477
+276	55	-0.017778
+277	55	0.0048422
+278	55	0
+279	55	0
+280	55	0
+281	55	0.085618
+282	55	0.23442
+283	55	0.66689
+284	55	1.1236
+285	55	1.3338
+286	55	1.4514
+287	55	0.20583
+288	55	1.111
+289	55	1.1854
+290	55	1.3327
+291	55	1.3961
+292	55	1.3713
+293	55	1.2672
+294	55	1.1614
+295	55	0.97299
+296	55	0.8498
+297	55	0.76296
+298	55	0.69732
+299	55	0.78176
+300	55	0.75261
+301	55	0.54827
+302	55	0
+303	55	0
+304	55	0
+305	55	0
+306	55	0
+307	55	0
+308	55	0
+309	55	0
+310	55	0
+311	55	0
+312	55	0
+313	55	0
+314	55	0
+315	55	0
+316	55	0
+317	55	0
+318	55	0
+319	55	0
+320	55	0
+321	55	0
+322	55	0
+323	55	0
+324	55	0
+325	55	0
+326	55	0
+327	55	0
+328	55	0
+329	55	0
+330	55	0
+331	55	0
+332	55	0
+333	55	0
+334	55	0
+335	55	0
+336	55	0
+337	55	0
+338	55	0
+339	55	0
+340	55	0
+341	55	0
+342	55	0
+343	55	0
+344	55	0
+345	55	0
+346	55	0
+347	55	0
+348	55	0
+349	55	0
+350	55	0
+351	55	0
+352	55	-0.16385
+353	55	-0.13954
+354	55	-0.079104
+355	55	-0.13355
+356	55	-0.15872
+357	55	-0.058809
+358	55	0.10595
+359	55	0
+360	55	0
+0	55.5	0
+1	55.5	0
+2	55.5	0
+3	55.5	0
+4	55.5	0
+5	55.5	0
+6	55.5	0
+7	55.5	0
+8	55.5	0
+9	55.5	0.37208
+10	55.5	0.21294
+11	55.5	0
+12	55.5	0.00056003
+13	55.5	0.13577
+14	55.5	0.25882
+15	55.5	0.24377
+16	55.5	0.042348
+17	55.5	0
+18	55.5	0
+19	55.5	0
+20	55.5	0
+21	55.5	0.39447
+22	55.5	0.55151
+23	55.5	0.58508
+24	55.5	0.57388
+25	55.5	0.56142
+26	55.5	0.5587
+27	55.5	0.56879
+28	55.5	0.60368
+29	55.5	0.66668
+30	55.5	0.58737
+31	55.5	0.46558
+32	55.5	0.33836
+33	55.5	0.206
+34	55.5	0.067019
+35	55.5	-0.070656
+36	55.5	-0.18943
+37	55.5	-0.28648
+38	55.5	-0.35781
+39	55.5	-0.41027
+40	55.5	-0.45698
+41	55.5	-0.48453
+42	55.5	-0.5225
+43	55.5	-0.54471
+44	55.5	-0.56535
+45	55.5	-0.58599
+46	55.5	-0.34932
+47	55.5	-0.28026
+48	55.5	-0.4472
+49	55.5	-0.61414
+50	55.5	-0.66792
+51	55.5	-0.70894
+52	55.5	-0.74213
+53	55.5	-0.79354
+54	55.5	-0.90156
+55	55.5	-1.0132
+56	55.5	-1.1009
+57	55.5	-1.1791
+58	55.5	-1.0864
+59	55.5	-0.91927
+60	55.5	-0.7612
+61	55.5	-0.74202
+62	55.5	-0.7164
+63	55.5	-0.68889
+64	55.5	-0.68626
+65	55.5	-0.66721
+66	55.5	-0.68482
+67	55.5	-0.69981
+68	55.5	-0.68073
+69	55.5	-0.6249
+70	55.5	-0.54312
+71	55.5	-0.42468
+72	55.5	-0.3563
+73	55.5	-0.2404
+74	55.5	-0.13702
+75	55.5	-0.080752
+76	55.5	0.010189
+77	55.5	0.040911
+78	55.5	0.06449
+79	55.5	0.068805
+80	55.5	0.074577
+81	55.5	0.093291
+82	55.5	0.13309
+83	55.5	0.17587
+84	55.5	0.2415
+85	55.5	0.31203
+86	55.5	0.4175
+87	55.5	0.54105
+88	55.5	0.58569
+89	55.5	0.57253
+90	55.5	0.51564
+91	55.5	0.48675
+92	55.5	0.46341
+93	55.5	0.44601
+94	55.5	0.48223
+95	55.5	0.52673
+96	55.5	0.5999
+97	55.5	0.66117
+98	55.5	0.79417
+99	55.5	0.95424
+100	55.5	1.1023
+101	55.5	1.0643
+102	55.5	1.0242
+103	55.5	0.96349
+104	55.5	0.91621
+105	55.5	0.74862
+106	55.5	0.55885
+107	55.5	0.41027
+108	55.5	0.31787
+109	55.5	0.21283
+110	55.5	0.16442
+111	55.5	0.1075
+112	55.5	0.06925
+113	55.5	0.045469
+114	55.5	0.045167
+115	55.5	0.052322
+116	55.5	0.099915
+117	55.5	0.14905
+118	55.5	0.17634
+119	55.5	0.19678
+120	55.5	0.25987
+121	55.5	0.28719
+122	55.5	0.30558
+123	55.5	0.30535
+124	55.5	0.28178
+125	55.5	0.25822
+126	55.5	0.24533
+127	55.5	0.1991
+128	55.5	0.19166
+129	55.5	0.22702
+130	55.5	0.27644
+131	55.5	0.32666
+132	55.5	0.42956
+133	55.5	0.51528
+134	55.5	0.61322
+135	55.5	0.65699
+136	55.5	0.41539
+137	55.5	0.056607
+138	55.5	0
+139	55.5	0
+140	55.5	0
+141	55.5	0
+142	55.5	0
+143	55.5	0
+144	55.5	0
+145	55.5	0
+146	55.5	0
+147	55.5	0
+148	55.5	0
+149	55.5	0
+150	55.5	0
+151	55.5	0
+152	55.5	0
+153	55.5	0
+154	55.5	0
+155	55.5	0
+156	55.5	0.60809
+157	55.5	1.359
+158	55.5	1.6004
+159	55.5	1.1882
+160	55.5	0.68309
+161	55.5	0.71346
+162	55.5	0
+163	55.5	0.017369
+164	55.5	0
+165	55.5	0
+166	55.5	0
+167	55.5	0
+168	55.5	0
+169	55.5	0
+170	55.5	0
+171	55.5	0
+172	55.5	0
+173	55.5	0
+174	55.5	0
+175	55.5	0
+176	55.5	0
+177	55.5	0
+178	55.5	0
+179	55.5	0
+180	55.5	0
+181	55.5	0
+182	55.5	0
+183	55.5	0
+184	55.5	0
+185	55.5	0
+186	55.5	0
+187	55.5	0
+188	55.5	0
+189	55.5	0
+190	55.5	0
+191	55.5	0
+192	55.5	0
+193	55.5	0
+194	55.5	0
+195	55.5	0
+196	55.5	0
+197	55.5	0
+198	55.5	0.0038112
+199	55.5	0.0034967
+200	55.5	0
+201	55.5	0
+202	55.5	0
+203	55.5	0
+204	55.5	0
+205	55.5	0
+206	55.5	0
+207	55.5	0
+208	55.5	0
+209	55.5	0
+210	55.5	0
+211	55.5	0
+212	55.5	0
+213	55.5	0
+214	55.5	0
+215	55.5	0
+216	55.5	0
+217	55.5	0
+218	55.5	0
+219	55.5	0
+220	55.5	0
+221	55.5	0
+222	55.5	0
+223	55.5	0
+224	55.5	0
+225	55.5	0
+226	55.5	-0.060901
+227	55.5	-0.25724
+228	55.5	0
+229	55.5	-2.2396
+230	55.5	-0.80978
+231	55.5	-1.9037
+232	55.5	-1.5023
+233	55.5	-0.87663
+234	55.5	-0.73839
+235	55.5	-0.32376
+236	55.5	-0.066546
+237	55.5	0.14928
+238	55.5	0.30738
+239	55.5	0.45268
+240	55.5	0.57683
+241	55.5	0.69083
+242	55.5	0.69734
+243	55.5	0.69832
+244	55.5	0.59762
+245	55.5	0.57958
+246	55.5	0.46255
+247	55.5	0.33469
+248	55.5	0.24917
+249	55.5	0.10946
+250	55.5	0.001902
+251	55.5	-0.020782
+252	55.5	-0.070393
+253	55.5	-0.093618
+254	55.5	-0.17806
+255	55.5	-0.24357
+256	55.5	-0.38855
+257	55.5	-0.53526
+258	55.5	-0.86133
+259	55.5	-1.0346
+260	55.5	-0.72519
+261	55.5	-1.0882
+262	55.5	-0.90546
+263	55.5	-1.0302
+264	55.5	-0.98349
+265	55.5	-0.83717
+266	55.5	-0.76411
+267	55.5	-0.63009
+268	55.5	-0.58475
+269	55.5	-0.68625
+270	55.5	-0.77486
+271	55.5	-0.58877
+272	55.5	-0.46184
+273	55.5	-0.19315
+274	55.5	-0.11532
+275	55.5	-0.0050975
+276	55.5	-0.0046506
+277	55.5	-0.0042028
+278	55.5	-0.00068495
+279	55.5	0
+280	55.5	0
+281	55.5	0.0031775
+282	55.5	0.012639
+283	55.5	0.29226
+284	55.5	0.98856
+285	55.5	1.277
+286	55.5	1.3379
+287	55.5	0.45968
+288	55.5	1.2168
+289	55.5	1.1971
+290	55.5	1.2652
+291	55.5	1.3132
+292	55.5	1.2731
+293	55.5	1.1853
+294	55.5	1.08
+295	55.5	0.93892
+296	55.5	0.86338
+297	55.5	0.81693
+298	55.5	0.75963
+299	55.5	0.64012
+300	55.5	0.25717
+301	55.5	0.20694
+302	55.5	0
+303	55.5	0
+304	55.5	0
+305	55.5	0
+306	55.5	0
+307	55.5	0
+308	55.5	0
+309	55.5	0
+310	55.5	0
+311	55.5	0
+312	55.5	0
+313	55.5	0
+314	55.5	0
+315	55.5	0
+316	55.5	0
+317	55.5	0
+318	55.5	0
+319	55.5	0
+320	55.5	0
+321	55.5	0
+322	55.5	0
+323	55.5	0
+324	55.5	0
+325	55.5	0
+326	55.5	0
+327	55.5	0
+328	55.5	0
+329	55.5	0
+330	55.5	0
+331	55.5	0
+332	55.5	0
+333	55.5	0
+334	55.5	0
+335	55.5	0
+336	55.5	0
+337	55.5	0
+338	55.5	0
+339	55.5	0
+340	55.5	0
+341	55.5	0
+342	55.5	0
+343	55.5	0
+344	55.5	0
+345	55.5	0
+346	55.5	0
+347	55.5	0
+348	55.5	0
+349	55.5	0
+350	55.5	0
+351	55.5	0
+352	55.5	0
+353	55.5	-0.046821
+354	55.5	-0.032399
+355	55.5	-0.31112
+356	55.5	-0.3485
+357	55.5	-0.12952
+358	55.5	0.025554
+359	55.5	0
+360	55.5	0
+0	56	0
+1	56	0
+2	56	0
+3	56	0
+4	56	0
+5	56	0
+6	56	0
+7	56	0
+8	56	0.17776
+9	56	0.4164
+10	56	0.26721
+11	56	0
+12	56	0.045872
+13	56	0.41078
+14	56	0.58562
+15	56	0.22946
+16	56	0.22816
+17	56	0
+18	56	0
+19	56	0
+20	56	0
+21	56	0.3155
+22	56	0.53926
+23	56	0.60267
+24	56	0.60735
+25	56	0.61902
+26	56	0.63564
+27	56	0.63847
+28	56	0.6805
+29	56	0.74343
+30	56	0.70192
+31	56	0.58821
+32	56	0.4441
+33	56	0.31201
+34	56	0.17713
+35	56	0.046261
+36	56	-0.081978
+37	56	-0.17238
+38	56	-0.25586
+39	56	-0.30616
+40	56	-0.35287
+41	56	-0.38466
+42	56	-0.44479
+43	56	-0.46819
+44	56	-0.48904
+45	56	-0.50968
+46	56	-0.24854
+47	56	-0.14421
+48	56	-0.31114
+49	56	-0.47808
+50	56	-0.6188
+51	56	-0.63902
+52	56	-0.67221
+53	56	-0.72362
+54	56	-0.79507
+55	56	-0.90673
+56	56	-0.99737
+57	56	-1.0622
+58	56	-0.98828
+59	56	-0.82117
+60	56	-0.69996
+61	56	-0.68077
+62	56	-0.65692
+63	56	-0.62942
+64	56	-0.67221
+65	56	-0.66124
+66	56	-0.6806
+67	56	-0.69855
+68	56	-0.67139
+69	56	-0.60495
+70	56	-0.52701
+71	56	-0.42406
+72	56	-0.36678
+73	56	-0.25621
+74	56	-0.14214
+75	56	-0.074571
+76	56	0.027228
+77	56	0.0608
+78	56	0.086094
+79	56	0.098441
+80	56	0.10866
+81	56	0.12907
+82	56	0.16683
+83	56	0.21079
+84	56	0.27267
+85	56	0.34803
+86	56	0.45229
+87	56	0.5503
+88	56	0.60744
+89	56	0.61185
+90	56	0.59592
+91	56	0.56703
+92	56	0.51922
+93	56	0.4794
+94	56	0.51562
+95	56	0.56597
+96	56	0.69078
+97	56	0.75769
+98	56	0.90941
+99	56	1.0695
+100	56	1.1238
+101	56	1.0871
+102	56	1.0487
+103	56	1.0214
+104	56	0.96375
+105	56	0.7958
+106	56	0.64199
+107	56	0.48735
+108	56	0.35137
+109	56	0.27832
+110	56	0.21494
+111	56	0.12406
+112	56	0.086913
+113	56	0.063132
+114	56	0.066809
+115	56	0.069014
+116	56	0.11933
+117	56	0.16411
+118	56	0.19385
+119	56	0.20848
+120	56	0.24179
+121	56	0.27201
+122	56	0.31627
+123	56	0.30721
+124	56	0.26409
+125	56	0.23058
+126	56	0.207
+127	56	0.18218
+128	56	0.18718
+129	56	0.21522
+130	56	0.23778
+131	56	0.28747
+132	56	0.38071
+133	56	0.45728
+134	56	0.55143
+135	56	0.60997
+136	56	0.56699
+137	56	0.3394
+138	56	0
+139	56	0
+140	56	0
+141	56	0
+142	56	0
+143	56	0
+144	56	0
+145	56	0
+146	56	0
+147	56	0
+148	56	0
+149	56	0
+150	56	0
+151	56	0
+152	56	0
+153	56	0
+154	56	0
+155	56	0
+156	56	0.53249
+157	56	1.1906
+158	56	1.5085
+159	56	1.3443
+160	56	0.53379
+161	56	0.77688
+162	56	0.2887
+163	56	0.067327
+164	56	0
+165	56	0
+166	56	0
+167	56	0
+168	56	0
+169	56	0
+170	56	0
+171	56	0
+172	56	0
+173	56	0
+174	56	0
+175	56	0
+176	56	0
+177	56	0
+178	56	0
+179	56	0
+180	56	0
+181	56	0
+182	56	0
+183	56	0
+184	56	0
+185	56	0
+186	56	0
+187	56	0
+188	56	0
+189	56	0
+190	56	0
+191	56	0
+192	56	0
+193	56	0
+194	56	0
+195	56	0
+196	56	0
+197	56	0
+198	56	0.0054382
+199	56	0.00628
+200	56	0.00029918
+201	56	0
+202	56	0
+203	56	0
+204	56	0
+205	56	0
+206	56	0
+207	56	0
+208	56	0
+209	56	0
+210	56	0
+211	56	0
+212	56	0
+213	56	0
+214	56	0
+215	56	0
+216	56	0
+217	56	0
+218	56	0
+219	56	0
+220	56	0
+221	56	0
+222	56	0
+223	56	0
+224	56	0
+225	56	0
+226	56	-0.18482
+227	56	-1.2724
+228	56	-0.71399
+229	56	-1.4714
+230	56	-0.011221
+231	56	-1.4282
+232	56	-1.4205
+233	56	-0.096751
+234	56	-0.7088
+235	56	-0.28166
+236	56	-0.026121
+237	56	0.19407
+238	56	0.36524
+239	56	0.50051
+240	56	0.5713
+241	56	0.68136
+242	56	0.76514
+243	56	0.74409
+244	56	0.6434
+245	56	0.54796
+246	56	0.37283
+247	56	0.20623
+248	56	0.11373
+249	56	-0.023167
+250	56	-0.096155
+251	56	-0.11193
+252	56	-0.17559
+253	56	-0.30443
+254	56	-0.37939
+255	56	-0.48671
+256	56	-0.60614
+257	56	-0.65794
+258	56	-0.89317
+259	56	-1.2559
+260	56	-0.3716
+261	56	-1.255
+262	56	-1.2168
+263	56	-1.1792
+264	56	-1.1448
+265	56	-1.0739
+266	56	-1.0104
+267	56	-0.74611
+268	56	-0.70283
+269	56	-0.72962
+270	56	-0.78491
+271	56	-0.65135
+272	56	-0.46587
+273	56	-0.014506
+274	56	-0.072196
+275	56	0
+276	56	0
+277	56	0
+278	56	0
+279	56	0
+280	56	0
+281	56	0.011239
+282	56	0
+283	56	0.026657
+284	56	0.84775
+285	56	1.2061
+286	56	1.0894
+287	56	0.88581
+288	56	1.2392
+289	56	1.2088
+290	56	1.2193
+291	56	1.2393
+292	56	1.1778
+293	56	1.0946
+294	56	0.99862
+295	56	0.91882
+296	56	0.8681
+297	56	0.84964
+298	56	0.75229
+299	56	0.39684
+300	56	0
+301	56	0
+302	56	0
+303	56	0
+304	56	0
+305	56	0
+306	56	0
+307	56	0
+308	56	0
+309	56	0
+310	56	0
+311	56	0
+312	56	0
+313	56	0
+314	56	0
+315	56	0
+316	56	0
+317	56	0
+318	56	0
+319	56	0
+320	56	0
+321	56	0
+322	56	0
+323	56	0
+324	56	0
+325	56	0
+326	56	0
+327	56	0
+328	56	0
+329	56	0
+330	56	0
+331	56	0
+332	56	0
+333	56	0
+334	56	0
+335	56	0
+336	56	0
+337	56	0
+338	56	0
+339	56	0
+340	56	0
+341	56	0
+342	56	0
+343	56	0
+344	56	0
+345	56	0
+346	56	0
+347	56	0
+348	56	0
+349	56	0
+350	56	0
+351	56	0
+352	56	0
+353	56	0
+354	56	-0.083526
+355	56	-0.60318
+356	56	-0.49377
+357	56	-0.17809
+358	56	0.005927
+359	56	0
+360	56	0
+0	56.5	0
+1	56.5	0
+2	56.5	0
+3	56.5	0
+4	56.5	0
+5	56.5	0
+6	56.5	0
+7	56.5	0
+8	56.5	0.16443
+9	56.5	0.33676
+10	56.5	0.20012
+11	56.5	0.010321
+12	56.5	0
+13	56.5	0.41443
+14	56.5	0.84771
+15	56.5	0.13891
+16	56.5	0.3535
+17	56.5	0
+18	56.5	0
+19	56.5	0
+20	56.5	0
+21	56.5	0.22958
+22	56.5	0.51125
+23	56.5	0.59172
+24	56.5	0.55581
+25	56.5	0.65339
+26	56.5	0.70251
+27	56.5	0.70888
+28	56.5	0.75133
+29	56.5	0.83995
+30	56.5	0.83245
+31	56.5	0.73416
+32	56.5	0.57545
+33	56.5	0.4196
+34	56.5	0.28454
+35	56.5	0.14289
+36	56.5	0.010111
+37	56.5	-0.081113
+38	56.5	-0.15202
+39	56.5	-0.20204
+40	56.5	-0.25229
+41	56.5	-0.30601
+42	56.5	-0.36708
+43	56.5	-0.39049
+44	56.5	-0.41272
+45	56.5	-0.41992
+46	56.5	-0.15481
+47	56.5	-0.03763
+48	56.5	-0.21467
+49	56.5	-0.39172
+50	56.5	-0.55106
+51	56.5	-0.56909
+52	56.5	-0.60229
+53	56.5	-0.6537
+54	56.5	-0.70511
+55	56.5	-0.80024
+56	56.5	-0.89389
+57	56.5	-0.94534
+58	56.5	-0.89018
+59	56.5	-0.72306
+60	56.5	-0.63871
+61	56.5	-0.61953
+62	56.5	-0.59745
+63	56.5	-0.57154
+64	56.5	-0.65816
+65	56.5	-0.65702
+66	56.5	-0.67637
+67	56.5	-0.69573
+68	56.5	-0.66214
+69	56.5	-0.58501
+70	56.5	-0.5109
+71	56.5	-0.4256
+72	56.5	-0.35485
+73	56.5	-0.26169
+74	56.5	-0.15796
+75	56.5	-0.053881
+76	56.5	0.040698
+77	56.5	0.074271
+78	56.5	0.11051
+79	56.5	0.12563
+80	56.5	0.13703
+81	56.5	0.15495
+82	56.5	0.18868
+83	56.5	0.23916
+84	56.5	0.30071
+85	56.5	0.37198
+86	56.5	0.46283
+87	56.5	0.5406
+88	56.5	0.62919
+89	56.5	0.60527
+90	56.5	0.62016
+91	56.5	0.61434
+92	56.5	0.5661
+93	56.5	0.51278
+94	56.5	0.549
+95	56.5	0.60566
+96	56.5	0.71097
+97	56.5	0.84665
+98	56.5	0.94949
+99	56.5	1.0523
+100	56.5	1.1011
+101	56.5	1.0926
+102	56.5	1.0732
+103	56.5	0.99972
+104	56.5	0.94333
+105	56.5	0.79302
+106	56.5	0.64924
+107	56.5	0.52006
+108	56.5	0.37235
+109	56.5	0.28653
+110	56.5	0.2459
+111	56.5	0.14829
+112	56.5	0.10458
+113	56.5	0.081457
+114	56.5	0.089455
+115	56.5	0.09028
+116	56.5	0.13994
+117	56.5	0.17723
+118	56.5	0.21087
+119	56.5	0.22599
+120	56.5	0.24353
+121	56.5	0.28779
+122	56.5	0.33204
+123	56.5	0.30807
+124	56.5	0.26771
+125	56.5	0.22459
+126	56.5	0.18846
+127	56.5	0.1729
+128	56.5	0.18271
+129	56.5	0.21074
+130	56.5	0.22058
+131	56.5	0.24828
+132	56.5	0.32519
+133	56.5	0.4046
+134	56.5	0.48781
+135	56.5	0.58998
+136	56.5	0.69695
+137	56.5	0.54602
+138	56.5	0.20028
+139	56.5	0
+140	56.5	0
+141	56.5	0
+142	56.5	0
+143	56.5	0
+144	56.5	0
+145	56.5	0
+146	56.5	0
+147	56.5	0
+148	56.5	0
+149	56.5	0
+150	56.5	0
+151	56.5	0
+152	56.5	0
+153	56.5	0
+154	56.5	0
+155	56.5	0
+156	56.5	0.30493
+157	56.5	0.98795
+158	56.5	1.3927
+159	56.5	1.4194
+160	56.5	0.5362
+161	56.5	1.1991
+162	56.5	0.76864
+163	56.5	0.097828
+164	56.5	0
+165	56.5	0
+166	56.5	0
+167	56.5	0
+168	56.5	0
+169	56.5	0
+170	56.5	0
+171	56.5	0
+172	56.5	0
+173	56.5	0
+174	56.5	0
+175	56.5	0
+176	56.5	0
+177	56.5	0
+178	56.5	0
+179	56.5	0
+180	56.5	0
+181	56.5	0
+182	56.5	0
+183	56.5	0
+184	56.5	0
+185	56.5	0
+186	56.5	0
+187	56.5	0
+188	56.5	0
+189	56.5	0
+190	56.5	0
+191	56.5	0
+192	56.5	0
+193	56.5	0
+194	56.5	0
+195	56.5	0
+196	56.5	0
+197	56.5	0
+198	56.5	0.0011786
+199	56.5	0.0054524
+200	56.5	0.0013708
+201	56.5	-0.0034687
+202	56.5	-0.045502
+203	56.5	0
+204	56.5	0
+205	56.5	0
+206	56.5	0
+207	56.5	0
+208	56.5	0
+209	56.5	0
+210	56.5	0
+211	56.5	0
+212	56.5	0
+213	56.5	0
+214	56.5	0
+215	56.5	0
+216	56.5	0
+217	56.5	0
+218	56.5	0
+219	56.5	0
+220	56.5	0
+221	56.5	0
+222	56.5	0
+223	56.5	0
+224	56.5	0
+225	56.5	-0.2813
+226	56.5	-0.54243
+227	56.5	-2.465
+228	56.5	0
+229	56.5	0
+230	56.5	0
+231	56.5	-0.73438
+232	56.5	-2.0729
+233	56.5	-0.90725
+234	56.5	-0.63701
+235	56.5	-0.23051
+236	56.5	0.016231
+237	56.5	0.21882
+238	56.5	0.38633
+239	56.5	0.53568
+240	56.5	0.58305
+241	56.5	0.6719
+242	56.5	0.75676
+243	56.5	0.75695
+244	56.5	0.64488
+245	56.5	0.47629
+246	56.5	0.28311
+247	56.5	0.11661
+248	56.5	-0.022472
+249	56.5	-0.16462
+250	56.5	-0.21521
+251	56.5	-0.22159
+252	56.5	-0.23079
+253	56.5	-0.49411
+254	56.5	-0.57576
+255	56.5	-0.70045
+256	56.5	-0.78405
+257	56.5	-0.66881
+258	56.5	-0.92668
+259	56.5	-1.3523
+260	56.5	-0.44075
+261	56.5	-1.398
+262	56.5	-1.3581
+263	56.5	-1.3353
+264	56.5	-1.32
+265	56.5	-1.3787
+266	56.5	-1.261
+267	56.5	-0.76492
+268	56.5	-0.48946
+269	56.5	-0.67308
+270	56.5	-0.73628
+271	56.5	-0.3784
+272	56.5	-0.1491
+273	56.5	0
+274	56.5	-0.023003
+275	56.5	0
+276	56.5	0
+277	56.5	0
+278	56.5	0
+279	56.5	0
+280	56.5	0
+281	56.5	0.0038381
+282	56.5	0
+283	56.5	0.062757
+284	56.5	0.80881
+285	56.5	1.0066
+286	56.5	1.1479
+287	56.5	1.3303
+288	56.5	1.2649
+289	56.5	1.2195
+290	56.5	1.2303
+291	56.5	1.2382
+292	56.5	1.0735
+293	56.5	1.0368
+294	56.5	0.93674
+295	56.5	0.881
+296	56.5	0.86908
+297	56.5	0.82347
+298	56.5	0.59295
+299	56.5	0
+300	56.5	0
+301	56.5	0
+302	56.5	0
+303	56.5	0
+304	56.5	0
+305	56.5	0
+306	56.5	0
+307	56.5	0
+308	56.5	0
+309	56.5	0
+310	56.5	0
+311	56.5	0
+312	56.5	0
+313	56.5	0
+314	56.5	0
+315	56.5	0
+316	56.5	0
+317	56.5	0
+318	56.5	0
+319	56.5	0
+320	56.5	0
+321	56.5	0
+322	56.5	0
+323	56.5	0
+324	56.5	0
+325	56.5	0
+326	56.5	0
+327	56.5	0
+328	56.5	0
+329	56.5	0
+330	56.5	0
+331	56.5	0
+332	56.5	0
+333	56.5	0
+334	56.5	0
+335	56.5	0
+336	56.5	0
+337	56.5	0
+338	56.5	0
+339	56.5	0
+340	56.5	0
+341	56.5	0
+342	56.5	0
+343	56.5	0
+344	56.5	0
+345	56.5	0
+346	56.5	0
+347	56.5	0
+348	56.5	0
+349	56.5	0
+350	56.5	0
+351	56.5	0
+352	56.5	0
+353	56.5	0
+354	56.5	-0.31384
+355	56.5	-0.85216
+356	56.5	-0.64112
+357	56.5	-0.2552
+358	56.5	-0.036818
+359	56.5	0
+360	56.5	0
+0	57	0
+1	57	0
+2	57	0
+3	57	0
+4	57	0
+5	57	0
+6	57	0
+7	57	0.048049
+8	57	0.12329
+9	57	0.21289
+10	57	0.10466
+11	57	0.019652
+12	57	0
+13	57	0.78145
+14	57	1.0111
+15	57	0.51565
+16	57	0.53166
+17	57	0
+18	57	-7.6618e-05
+19	57	0
+20	57	0
+21	57	0.1452
+22	57	0.41424
+23	57	0.30666
+24	57	0.17723
+25	57	0.65296
+26	57	0.79158
+27	57	0.76771
+28	57	0.85603
+29	57	0.96031
+30	57	0.97989
+31	57	0.87929
+32	57	0.7111
+33	57	0.52897
+34	57	0.39182
+35	57	0.23387
+36	57	0.10533
+37	57	0.0025205
+38	57	-0.078353
+39	57	-0.13851
+40	57	-0.19342
+41	57	-0.23929
+42	57	-0.28938
+43	57	-0.31278
+44	57	-0.33618
+45	57	-0.32619
+46	57	-0.083554
+47	57	-0.01254
+48	57	-0.16261
+49	57	-0.33965
+50	57	-0.47638
+51	57	-0.49916
+52	57	-0.53238
+53	57	-0.58378
+54	57	-0.63519
+55	57	-0.69376
+56	57	-0.78767
+57	57	-0.82846
+58	57	-0.79208
+59	57	-0.62496
+60	57	-0.57746
+61	57	-0.55828
+62	57	-0.53797
+63	57	-0.52194
+64	57	-0.62454
+65	57	-0.65279
+66	57	-0.66707
+67	57	-0.67641
+68	57	-0.65289
+69	57	-0.57301
+70	57	-0.49479
+71	57	-0.41958
+72	57	-0.32111
+73	57	-0.23955
+74	57	-0.13661
+75	57	-0.036228
+76	57	0.054169
+77	57	0.088014
+78	57	0.12519
+79	57	0.1527
+80	57	0.16365
+81	57	0.17517
+82	57	0.2101
+83	57	0.26068
+84	57	0.32095
+85	57	0.3795
+86	57	0.46087
+87	57	0.52112
+88	57	0.60751
+89	57	0.59392
+90	57	0.62178
+91	57	0.6279
+92	57	0.61297
+93	57	0.54617
+94	57	0.58239
+95	57	0.64534
+96	57	0.73116
+97	57	0.84887
+98	57	0.92399
+99	57	1.0268
+100	57	1.0733
+101	57	1.0648
+102	57	1.036
+103	57	0.94803
+104	57	0.90636
+105	57	0.79024
+106	57	0.64646
+107	57	0.53724
+108	57	0.40176
+109	57	0.30942
+110	57	0.25264
+111	57	0.17251
+112	57	0.12224
+113	57	0.10246
+114	57	0.11045
+115	57	0.11533
+116	57	0.1567
+117	57	0.19034
+118	57	0.22398
+119	57	0.24349
+120	57	0.26091
+121	57	0.30356
+122	57	0.33738
+123	57	0.30777
+124	57	0.27133
+125	57	0.22821
+126	57	0.18268
+127	57	0.16362
+128	57	0.17823
+129	57	0.19597
+130	57	0.20442
+131	57	0.23039
+132	57	0.29334
+133	57	0.36101
+134	57	0.43726
+135	57	0.56212
+136	57	0.66692
+137	57	0.68696
+138	57	0.46146
+139	57	0.23
+140	57	0
+141	57	0
+142	57	0
+143	57	0
+144	57	0
+145	57	0
+146	57	0
+147	57	0
+148	57	0
+149	57	0
+150	57	0
+151	57	0
+152	57	0
+153	57	0
+154	57	0
+155	57	0
+156	57	0
+157	57	0.75476
+158	57	1.198
+159	57	1.4491
+160	57	1.1237
+161	57	1.4509
+162	57	1.0505
+163	57	0.046129
+164	57	0
+165	57	0
+166	57	0
+167	57	0
+168	57	0
+169	57	0
+170	57	0
+171	57	0
+172	57	0
+173	57	0
+174	57	0
+175	57	0
+176	57	0
+177	57	0
+178	57	0
+179	57	0
+180	57	0
+181	57	0
+182	57	0
+183	57	0
+184	57	0
+185	57	0
+186	57	0
+187	57	0
+188	57	0
+189	57	0
+190	57	0
+191	57	0
+192	57	0
+193	57	0
+194	57	0
+195	57	0
+196	57	0
+197	57	0
+198	57	0
+199	57	4.8677e-05
+200	57	2.8012e-05
+201	57	0
+202	57	-0.48057
+203	57	-0.52975
+204	57	0
+205	57	0
+206	57	-0.004393
+207	57	0
+208	57	0
+209	57	0
+210	57	0
+211	57	0
+212	57	0
+213	57	0
+214	57	0
+215	57	0
+216	57	0
+217	57	0
+218	57	0
+219	57	0
+220	57	0
+221	57	0
+222	57	0
+223	57	0
+224	57	-0.51256
+225	57	-0.9012
+226	57	-0.03644
+227	57	-2.5909
+228	57	0
+229	57	0
+230	57	0
+231	57	-2.7472
+232	57	-1.8148
+233	57	-1.0648
+234	57	-0.54385
+235	57	-0.16949
+236	57	0.048346
+237	57	0.22153
+238	57	0.38641
+239	57	0.57085
+240	57	0.6155
+241	57	0.66243
+242	57	0.74838
+243	57	0.74344
+244	57	0.63138
+245	57	0.40672
+246	57	0.18839
+247	57	0.016144
+248	57	-0.15802
+249	57	-0.29497
+250	57	-0.35299
+251	57	-0.40199
+252	57	-0.56627
+253	57	-0.47378
+254	57	-0.76305
+255	57	-0.89867
+256	57	-0.92809
+257	57	-0.62304
+258	57	-0.93648
+259	57	-1.438
+260	57	-0.88471
+261	57	-1.5128
+262	57	-1.502
+263	57	-1.5477
+264	57	-1.5845
+265	57	-1.6772
+266	57	-1.5115
+267	57	-0.89245
+268	57	-0.14409
+269	57	-0.49463
+270	57	-0.35647
+271	57	0
+272	57	0
+273	57	0
+274	57	0
+275	57	0
+276	57	0
+277	57	0
+278	57	0
+279	57	0
+280	57	0
+281	57	0
+282	57	0.00080848
+283	57	0
+284	57	0.8362
+285	57	1.2255
+286	57	1.4337
+287	57	1.3668
+288	57	1.2926
+289	57	1.232
+290	57	1.2348
+291	57	1.1569
+292	57	0.96922
+293	57	0.95851
+294	57	0.87884
+295	57	0.84248
+296	57	0.8262
+297	57	0.76501
+298	57	0.47111
+299	57	0
+300	57	0
+301	57	0
+302	57	0
+303	57	0
+304	57	0
+305	57	0
+306	57	0
+307	57	0
+308	57	0
+309	57	0
+310	57	0
+311	57	0
+312	57	0
+313	57	0
+314	57	0
+315	57	0
+316	57	0
+317	57	0
+318	57	0
+319	57	0
+320	57	0
+321	57	0
+322	57	0
+323	57	0
+324	57	0
+325	57	0
+326	57	0
+327	57	0
+328	57	0
+329	57	0
+330	57	0
+331	57	0
+332	57	0
+333	57	0
+334	57	0
+335	57	0
+336	57	0
+337	57	0
+338	57	0
+339	57	0
+340	57	0
+341	57	0
+342	57	0
+343	57	0
+344	57	0
+345	57	0
+346	57	0
+347	57	0
+348	57	0
+349	57	0
+350	57	0
+351	57	0
+352	57	0
+353	57	-0.0026311
+354	57	-0.089516
+355	57	-0.7286
+356	57	-0.80159
+357	57	-0.37205
+358	57	-0.085576
+359	57	0
+360	57	0
+0	57.5	0
+1	57.5	0
+2	57.5	0
+3	57.5	0
+4	57.5	0
+5	57.5	0
+6	57.5	0
+7	57.5	0.34075
+8	57.5	0
+9	57.5	0.14203
+10	57.5	0.051826
+11	57.5	0
+12	57.5	0.23429
+13	57.5	0.80355
+14	57.5	1.0004
+15	57.5	0.9051
+16	57.5	0.66071
+17	57.5	0.011218
+18	57.5	-0.0019545
+19	57.5	0
+20	57.5	0
+21	57.5	0.055788
+22	57.5	0.29157
+23	57.5	0
+24	57.5	0
+25	57.5	0.69188
+26	57.5	0.85744
+27	57.5	0.7527
+28	57.5	0.88466
+29	57.5	1.0454
+30	57.5	1.1159
+31	57.5	1.0244
+32	57.5	0.56747
+33	57.5	0.64629
+34	57.5	0.4973
+35	57.5	0.33178
+36	57.5	0.20054
+37	57.5	0.093597
+38	57.5	-0.030772
+39	57.5	-0.08692
+40	57.5	-0.13455
+41	57.5	-0.17948
+42	57.5	-0.21167
+43	57.5	-0.23507
+44	57.5	-0.25848
+45	57.5	-0.23245
+46	57.5	-0.063631
+47	57.5	-0.023871
+48	57.5	-0.11054
+49	57.5	-0.28759
+50	57.5	-0.40169
+51	57.5	-0.4284
+52	57.5	-0.46246
+53	57.5	-0.51387
+54	57.5	-0.56528
+55	57.5	-0.61668
+56	57.5	-0.67079
+57	57.5	-0.71158
+58	57.5	-0.69398
+59	57.5	-0.5354
+60	57.5	-0.51622
+61	57.5	-0.49703
+62	57.5	-0.47785
+63	57.5	-0.47234
+64	57.5	-0.5694
+65	57.5	-0.59394
+66	57.5	-0.60328
+67	57.5	-0.61295
+68	57.5	-0.60242
+69	57.5	-0.54827
+70	57.5	-0.4843
+71	57.5	-0.37657
+72	57.5	-0.289
+73	57.5	-0.21741
+74	57.5	-0.11446
+75	57.5	-0.017046
+76	57.5	0.067639
+77	57.5	0.10289
+78	57.5	0.13986
+79	57.5	0.1708
+80	57.5	0.18175
+81	57.5	0.19751
+82	57.5	0.23151
+83	57.5	0.27625
+84	57.5	0.33024
+85	57.5	0.38674
+86	57.5	0.44854
+87	57.5	0.50878
+88	57.5	0.57808
+89	57.5	0.5876
+90	57.5	0.61726
+91	57.5	0.64147
+92	57.5	0.64575
+93	57.5	0.57956
+94	57.5	0.61662
+95	57.5	0.68503
+96	57.5	0.75345
+97	57.5	0.85631
+98	57.5	0.8985
+99	57.5	1.0013
+100	57.5	1.0455
+101	57.5	1.0371
+102	57.5	0.98129
+103	57.5	0.91105
+104	57.5	0.86939
+105	57.5	0.78746
+106	57.5	0.64369
+107	57.5	0.54383
+108	57.5	0.43117
+109	57.5	0.33883
+110	57.5	0.25742
+111	57.5	0.19674
+112	57.5	0.14123
+113	57.5	0.12345
+114	57.5	0.13145
+115	57.5	0.13945
+116	57.5	0.16982
+117	57.5	0.20345
+118	57.5	0.23709
+119	57.5	0.261
+120	57.5	0.27982
+121	57.5	0.31934
+122	57.5	0.33708
+123	57.5	0.30746
+124	57.5	0.27494
+125	57.5	0.23183
+126	57.5	0.18594
+127	57.5	0.15434
+128	57.5	0.17141
+129	57.5	0.17987
+130	57.5	0.18832
+131	57.5	0.21169
+132	57.5	0.25735
+133	57.5	0.31743
+134	57.5	0.39329
+135	57.5	0.51857
+136	57.5	0.6369
+137	57.5	0.7041
+138	57.5	0.63754
+139	57.5	0.51586
+140	57.5	0.29071
+141	57.5	0
+142	57.5	0
+143	57.5	0
+144	57.5	0
+145	57.5	0
+146	57.5	0
+147	57.5	0
+148	57.5	0
+149	57.5	0
+150	57.5	0
+151	57.5	0
+152	57.5	0
+153	57.5	0
+154	57.5	0
+155	57.5	0
+156	57.5	0
+157	57.5	0.41803
+158	57.5	0.95626
+159	57.5	1.3065
+160	57.5	1.5456
+161	57.5	1.2259
+162	57.5	1.1522
+163	57.5	0
+164	57.5	0
+165	57.5	0
+166	57.5	0
+167	57.5	0
+168	57.5	0
+169	57.5	0
+170	57.5	0
+171	57.5	0
+172	57.5	0
+173	57.5	0
+174	57.5	0
+175	57.5	0
+176	57.5	0
+177	57.5	0
+178	57.5	0
+179	57.5	0
+180	57.5	0
+181	57.5	0
+182	57.5	0
+183	57.5	0
+184	57.5	0
+185	57.5	0
+186	57.5	0
+187	57.5	0
+188	57.5	0
+189	57.5	0
+190	57.5	0
+191	57.5	0
+192	57.5	0
+193	57.5	0
+194	57.5	0
+195	57.5	0
+196	57.5	0
+197	57.5	0
+198	57.5	0
+199	57.5	0
+200	57.5	0
+201	57.5	0
+202	57.5	-0.36659
+203	57.5	-1.3776
+204	57.5	0
+205	57.5	0
+206	57.5	-0.1321
+207	57.5	-0.079078
+208	57.5	0
+209	57.5	0
+210	57.5	0
+211	57.5	0
+212	57.5	0
+213	57.5	0
+214	57.5	0
+215	57.5	0
+216	57.5	0
+217	57.5	0
+218	57.5	0
+219	57.5	0
+220	57.5	0
+221	57.5	0
+222	57.5	0
+223	57.5	0
+224	57.5	-1.7525
+225	57.5	-1.1529
+226	57.5	-1.462
+227	57.5	0
+228	57.5	0
+229	57.5	0
+230	57.5	-1.1733
+231	57.5	-2.5341
+232	57.5	-1.5366
+233	57.5	-0.8187
+234	57.5	-0.42108
+235	57.5	-0.10129
+236	57.5	0.080849
+237	57.5	0.24724
+238	57.5	0.41589
+239	57.5	0.6057
+240	57.5	0.64795
+241	57.5	0.6754
+242	57.5	0.71595
+243	57.5	0.71729
+244	57.5	0.61787
+245	57.5	0.33714
+246	57.5	0.084762
+247	57.5	-0.11162
+248	57.5	-0.28559
+249	57.5	-0.45254
+250	57.5	-0.52463
+251	57.5	-0.61406
+252	57.5	-0.8018
+253	57.5	-0.64441
+254	57.5	-0.94138
+255	57.5	-1.0825
+256	57.5	-1.106
+257	57.5	-0.80781
+258	57.5	-0.88973
+259	57.5	-1.5485
+260	57.5	-1.6523
+261	57.5	-1.6183
+262	57.5	-1.6353
+263	57.5	-1.7937
+264	57.5	-1.9048
+265	57.5	-1.9583
+266	57.5	-1.6556
+267	57.5	-0.83
+268	57.5	0
+269	57.5	-0.20486
+270	57.5	0
+271	57.5	0
+272	57.5	0
+273	57.5	0
+274	57.5	0
+275	57.5	0
+276	57.5	0
+277	57.5	0
+278	57.5	0
+279	57.5	0
+280	57.5	0
+281	57.5	0.00090127
+282	57.5	0.0012728
+283	57.5	0.040529
+284	57.5	0.93702
+285	57.5	1.2933
+286	57.5	1.4626
+287	57.5	1.3734
+288	57.5	1.3204
+289	57.5	1.26
+290	57.5	1.2193
+291	57.5	1.0231
+292	57.5	0.81693
+293	57.5	0.72919
+294	57.5	0.79899
+295	57.5	0.79805
+296	57.5	0.73204
+297	57.5	0.62924
+298	57.5	0.39719
+299	57.5	0
+300	57.5	0
+301	57.5	0
+302	57.5	0
+303	57.5	0
+304	57.5	0
+305	57.5	0
+306	57.5	0
+307	57.5	0
+308	57.5	0
+309	57.5	0
+310	57.5	0
+311	57.5	0
+312	57.5	0
+313	57.5	0
+314	57.5	0
+315	57.5	0
+316	57.5	0
+317	57.5	0
+318	57.5	0
+319	57.5	0
+320	57.5	0
+321	57.5	0
+322	57.5	0
+323	57.5	0
+324	57.5	0
+325	57.5	0
+326	57.5	0
+327	57.5	0
+328	57.5	0
+329	57.5	0
+330	57.5	0
+331	57.5	0
+332	57.5	0
+333	57.5	0
+334	57.5	0
+335	57.5	0
+336	57.5	0
+337	57.5	0
+338	57.5	0
+339	57.5	0
+340	57.5	0
+341	57.5	0
+342	57.5	0
+343	57.5	0
+344	57.5	0
+345	57.5	0
+346	57.5	0
+347	57.5	0
+348	57.5	0
+349	57.5	0
+350	57.5	0
+351	57.5	0
+352	57.5	0
+353	57.5	-0.054792
+354	57.5	-0.39627
+355	57.5	-0.6492
+356	57.5	-0.89286
+357	57.5	-0.32319
+358	57.5	-0.12702
+359	57.5	0
+360	57.5	0
+0	58	0
+1	58	0
+2	58	0
+3	58	0
+4	58	0
+5	58	0
+6	58	0.089492
+7	58	0.62188
+8	58	0.13241
+9	58	0.037381
+10	58	0
+11	58	0
+12	58	0.25368
+13	58	0.71539
+14	58	0.88666
+15	58	0.93857
+16	58	0.70287
+17	58	0.1194
+18	58	-0.0010203
+19	58	0
+20	58	0
+21	58	0
+22	58	0.11932
+23	58	0.063845
+24	58	0.25921
+25	58	0.70815
+26	58	0.88357
+27	58	0.71418
+28	58	0.87205
+29	58	1.0927
+30	58	1.1906
+31	58	1.1145
+32	58	0.32119
+33	58	0.76717
+34	58	0.55576
+35	58	0.41265
+36	58	0.29027
+37	58	0.17062
+38	58	0.016808
+39	58	-0.049261
+40	58	-0.075677
+41	58	-0.11967
+42	58	-0.16089
+43	58	-0.18107
+44	58	-0.20062
+45	58	-0.2016
+46	58	-0.043709
+47	58	-0.035201
+48	58	-0.058478
+49	58	-0.23552
+50	58	-0.327
+51	58	-0.35371
+52	58	-0.39317
+53	58	-0.4478
+54	58	-0.50243
+55	58	-0.55705
+56	58	-0.56948
+57	58	-0.5947
+58	58	-0.59588
+59	58	-0.47415
+60	58	-0.45497
+61	58	-0.43579
+62	58	-0.41661
+63	58	-0.42273
+64	58	-0.5017
+65	58	-0.53015
+66	58	-0.53949
+67	58	-0.55238
+68	58	-0.55106
+69	58	-0.49692
+70	58	-0.44088
+71	58	-0.33355
+72	58	-0.25688
+73	58	-0.18817
+74	58	-0.092322
+75	58	0.0046275
+76	58	0.081571
+77	58	0.11776
+78	58	0.15371
+79	58	0.1837
+80	58	0.20029
+81	58	0.21268
+82	58	0.24425
+83	58	0.28099
+84	58	0.33953
+85	58	0.38841
+86	58	0.43546
+87	58	0.49559
+88	58	0.54932
+89	58	0.58308
+90	58	0.61275
+91	58	0.64241
+92	58	0.65932
+93	58	0.62004
+94	58	0.6563
+95	58	0.72472
+96	58	0.79314
+97	58	0.86376
+98	58	0.8907
+99	58	0.97585
+100	58	1.0177
+101	58	0.99124
+102	58	0.92654
+103	58	0.87408
+104	58	0.83241
+105	58	0.78468
+106	58	0.64395
+107	58	0.5484
+108	58	0.45278
+109	58	0.3581
+110	58	0.27327
+111	58	0.22096
+112	58	0.16545
+113	58	0.14445
+114	58	0.15245
+115	58	0.16059
+116	58	0.18503
+117	58	0.21801
+118	58	0.251
+119	58	0.2799
+120	58	0.29872
+121	58	0.33512
+122	58	0.33677
+123	58	0.30716
+124	58	0.27755
+125	58	0.23544
+126	58	0.18919
+127	58	0.14506
+128	58	0.15531
+129	58	0.16376
+130	58	0.17221
+131	58	0.19286
+132	58	0.23096
+133	58	0.28019
+134	58	0.36061
+135	58	0.47274
+136	58	0.58958
+137	58	0.66925
+138	58	0.66974
+139	58	0.66315
+140	58	0.47208
+141	58	0
+142	58	0
+143	58	0
+144	58	0
+145	58	0
+146	58	0
+147	58	0
+148	58	0
+149	58	0
+150	58	0
+151	58	0
+152	58	0
+153	58	0
+154	58	0
+155	58	0
+156	58	0
+157	58	0
+158	58	0.10832
+159	58	0.9685
+160	58	1.388
+161	58	0.837
+162	58	1.1227
+163	58	0
+164	58	0
+165	58	0
+166	58	0
+167	58	0
+168	58	0
+169	58	0
+170	58	0
+171	58	0
+172	58	0
+173	58	0
+174	58	0
+175	58	0
+176	58	0
+177	58	0
+178	58	0
+179	58	0
+180	58	0
+181	58	0
+182	58	0
+183	58	0
+184	58	0
+185	58	0
+186	58	0
+187	58	0
+188	58	0
+189	58	0
+190	58	0
+191	58	0
+192	58	0
+193	58	0
+194	58	0
+195	58	0
+196	58	0
+197	58	0
+198	58	0
+199	58	0
+200	58	0
+201	58	0
+202	58	-0.1076
+203	58	-1.8805
+204	58	-1.3003
+205	58	0
+206	58	0
+207	58	-0.072278
+208	58	0
+209	58	0
+210	58	0
+211	58	0
+212	58	0
+213	58	0
+214	58	0
+215	58	0
+216	58	0
+217	58	0
+218	58	0
+219	58	0
+220	58	0
+221	58	0
+222	58	0
+223	58	0
+224	58	-4.0602
+225	58	-0.30529
+226	58	-2.2706
+227	58	0
+228	58	-0.76436
+229	58	-1.7669
+230	58	-3.2628
+231	58	-2.2211
+232	58	-1.2582
+233	58	-0.63671
+234	58	-0.30731
+235	58	-0.03222
+236	58	0.10377
+237	58	0.29415
+238	58	0.4645
+239	58	0.63341
+240	58	0.67108
+241	58	0.69333
+242	58	0.66214
+243	58	0.68228
+244	58	0.57241
+245	58	0.26757
+246	58	-0.023779
+247	58	-0.23938
+248	58	-0.41315
+249	58	-0.63966
+250	58	-0.71781
+251	58	-0.82738
+252	58	-0.99708
+253	58	-0.39418
+254	58	-1.1465
+255	58	-1.264
+256	58	-1.3158
+257	58	-1.0219
+258	58	-1.2105
+259	58	-1.7089
+260	58	-1.7912
+261	58	-1.7672
+262	58	-1.9012
+263	58	-2.0838
+264	58	-2.233
+265	58	-2.2128
+266	58	-1.7043
+267	58	-0.72782
+268	58	0
+269	58	0
+270	58	0
+271	58	0
+272	58	0
+273	58	0
+274	58	0
+275	58	0
+276	58	0
+277	58	0
+278	58	0
+279	58	0
+280	58	0
+281	58	8.7843e-06
+282	58	0.00073072
+283	58	0.27098
+284	58	1.0732
+285	58	1.3477
+286	58	1.4534
+287	58	1.349
+288	58	1.2639
+289	58	1.2071
+290	58	1.1348
+291	58	0.88103
+292	58	0.56817
+293	58	0.50951
+294	58	0.66575
+295	58	0.71647
+296	58	0.63626
+297	58	0.4283
+298	58	0.17916
+299	58	0
+300	58	0
+301	58	0
+302	58	0
+303	58	0
+304	58	0
+305	58	0
+306	58	0
+307	58	0
+308	58	0
+309	58	0
+310	58	0
+311	58	0
+312	58	0
+313	58	0
+314	58	0
+315	58	0
+316	58	0
+317	58	0
+318	58	0
+319	58	0
+320	58	0
+321	58	0
+322	58	0
+323	58	0
+324	58	0
+325	58	0
+326	58	0
+327	58	0
+328	58	0
+329	58	0
+330	58	0
+331	58	0
+332	58	0
+333	58	0
+334	58	0
+335	58	0
+336	58	0
+337	58	0
+338	58	0
+339	58	0
+340	58	0
+341	58	0
+342	58	0
+343	58	0
+344	58	0
+345	58	0
+346	58	0
+347	58	0
+348	58	0
+349	58	0
+350	58	0
+351	58	0
+352	58	0
+353	58	-0.098295
+354	58	-0.50542
+355	58	-0.7584
+356	58	-0.67706
+357	58	-0.14609
+358	58	-0.048277
+359	58	0
+360	58	0
+0	58.5	0
+1	58.5	0
+2	58.5	0
+3	58.5	0
+4	58.5	0
+5	58.5	0
+6	58.5	0.83109
+7	58.5	1.2803
+8	58.5	0.79341
+9	58.5	0.2369
+10	58.5	0
+11	58.5	0.007756
+12	58.5	0.36903
+13	58.5	0.48207
+14	58.5	0.62624
+15	58.5	0.85826
+16	58.5	0.73857
+17	58.5	0.03759
+18	58.5	0
+19	58.5	0
+20	58.5	0
+21	58.5	0
+22	58.5	0
+23	58.5	0.10123
+24	58.5	0.26858
+25	58.5	0.6957
+26	58.5	0.89731
+27	58.5	0.59572
+28	58.5	0.63982
+29	58.5	1.1454
+30	58.5	1.2342
+31	58.5	1.1756
+32	58.5	0.61101
+33	58.5	0.85432
+34	58.5	0.60827
+35	58.5	0.46638
+36	58.5	0.34559
+37	58.5	0.22629
+38	58.5	0.071083
+39	58.5	-0.011509
+40	58.5	-0.03266
+41	58.5	-0.071937
+42	58.5	-0.11187
+43	58.5	-0.13286
+44	58.5	-0.15241
+45	58.5	-0.1488
+46	58.5	-0.054242
+47	58.5	-0.046532
+48	58.5	-0.038821
+49	58.5	-0.18346
+50	58.5	-0.25231
+51	58.5	-0.28699
+52	58.5	-0.3376
+53	58.5	-0.39222
+54	58.5	-0.44685
+55	58.5	-0.50148
+56	58.5	-0.51238
+57	58.5	-0.47782
+58	58.5	-0.49778
+59	58.5	-0.41291
+60	58.5	-0.39373
+61	58.5	-0.37454
+62	58.5	-0.35536
+63	58.5	-0.37033
+64	58.5	-0.43399
+65	58.5	-0.46636
+66	58.5	-0.4757
+67	58.5	-0.49181
+68	58.5	-0.49971
+69	58.5	-0.44556
+70	58.5	-0.38831
+71	58.5	-0.29348
+72	58.5	-0.22477
+73	58.5	-0.15605
+74	58.5	-0.070181
+75	58.5	0.026301
+76	58.5	0.085196
+77	58.5	0.11991
+78	58.5	0.15074
+79	58.5	0.19139
+80	58.5	0.21855
+81	58.5	0.21928
+82	58.5	0.25242
+83	58.5	0.27963
+84	58.5	0.34131
+85	58.5	0.37975
+86	58.5	0.42222
+87	58.5	0.48236
+88	58.5	0.53448
+89	58.5	0.57708
+90	58.5	0.59831
+91	58.5	0.61954
+92	58.5	0.6627
+93	58.5	0.66692
+94	58.5	0.69599
+95	58.5	0.76441
+96	58.5	0.83157
+97	58.5	0.87121
+98	58.5	0.89815
+99	58.5	0.95036
+100	58.5	0.98988
+101	58.5	0.93649
+102	58.5	0.88588
+103	58.5	0.84204
+104	58.5	0.79544
+105	58.5	0.75378
+106	58.5	0.64852
+107	58.5	0.55104
+108	58.5	0.45458
+109	58.5	0.3599
+110	58.5	0.28433
+111	58.5	0.24759
+112	58.5	0.18976
+113	58.5	0.16545
+114	58.5	0.17348
+115	58.5	0.18318
+116	58.5	0.20165
+117	58.5	0.23464
+118	58.5	0.26762
+119	58.5	0.29683
+120	58.5	0.31762
+121	58.5	0.35089
+122	58.5	0.33647
+123	58.5	0.30685
+124	58.5	0.27724
+125	58.5	0.23906
+126	58.5	0.19245
+127	58.5	0.15043
+128	58.5	0.15047
+129	58.5	0.15387
+130	58.5	0.15726
+131	58.5	0.18306
+132	58.5	0.21735
+133	58.5	0.26658
+134	58.5	0.32509
+135	58.5	0.43324
+136	58.5	0.54068
+137	58.5	0.6257
+138	58.5	0.68126
+139	58.5	0.77808
+140	58.5	0.52243
+141	58.5	0.2479
+142	58.5	0.068599
+143	58.5	0
+144	58.5	0
+145	58.5	0
+146	58.5	0
+147	58.5	0
+148	58.5	0
+149	58.5	0
+150	58.5	0
+151	58.5	0.13473
+152	58.5	0.034808
+153	58.5	0
+154	58.5	0
+155	58.5	0
+156	58.5	0
+157	58.5	0
+158	58.5	0
+159	58.5	0.35434
+160	58.5	1.0853
+161	58.5	1.0376
+162	58.5	0.55595
+163	58.5	0
+164	58.5	0
+165	58.5	0
+166	58.5	0
+167	58.5	0
+168	58.5	0
+169	58.5	0
+170	58.5	0
+171	58.5	0
+172	58.5	0
+173	58.5	0
+174	58.5	0
+175	58.5	0
+176	58.5	0
+177	58.5	0
+178	58.5	0
+179	58.5	0
+180	58.5	0
+181	58.5	0
+182	58.5	0
+183	58.5	0
+184	58.5	0
+185	58.5	0
+186	58.5	0
+187	58.5	0
+188	58.5	0
+189	58.5	0
+190	58.5	0
+191	58.5	0
+192	58.5	0
+193	58.5	0
+194	58.5	0
+195	58.5	0
+196	58.5	0
+197	58.5	0
+198	58.5	0
+199	58.5	0
+200	58.5	0
+201	58.5	-0.0026337
+202	58.5	-0.25751
+203	58.5	-1.5683
+204	58.5	-2.1122
+205	58.5	-0.33369
+206	58.5	0
+207	58.5	0
+208	58.5	0
+209	58.5	0
+210	58.5	0
+211	58.5	0
+212	58.5	0
+213	58.5	0
+214	58.5	0
+215	58.5	0
+216	58.5	0
+217	58.5	0
+218	58.5	0
+219	58.5	0
+220	58.5	0
+221	58.5	0
+222	58.5	0
+223	58.5	0
+224	58.5	-3.9001
+225	58.5	0
+226	58.5	-0.018976
+227	58.5	-2.3093
+228	58.5	-4.2427
+229	58.5	-3.9046
+230	58.5	-2.9524
+231	58.5	-1.8969
+232	58.5	-1.0005
+233	58.5	-0.48571
+234	58.5	-0.22557
+235	58.5	0.030951
+236	58.5	0.13179
+237	58.5	0.33126
+238	58.5	0.51312
+239	58.5	0.63264
+240	58.5	0.67532
+241	58.5	0.69758
+242	58.5	0.57265
+243	58.5	0.60965
+244	58.5	0.49623
+245	58.5	0.16195
+246	58.5	-0.17152
+247	58.5	-0.35428
+248	58.5	-0.58009
+249	58.5	-0.81472
+250	58.5	-0.91509
+251	58.5	-0.78733
+252	58.5	-1.1876
+253	58.5	-1.1264
+254	58.5	-1.3672
+255	58.5	-1.4544
+256	58.5	-1.508
+257	58.5	-1.3841
+258	58.5	-1.4884
+259	58.5	-1.8997
+260	58.5	-1.9625
+261	58.5	-1.2648
+262	58.5	-2.1343
+263	58.5	-2.3948
+264	58.5	-2.3668
+265	58.5	-2.2841
+266	58.5	-1.3798
+267	58.5	-0.59098
+268	58.5	0
+269	58.5	0
+270	58.5	0
+271	58.5	0
+272	58.5	0
+273	58.5	0
+274	58.5	0
+275	58.5	0
+276	58.5	0
+277	58.5	0
+278	58.5	0
+279	58.5	0
+280	58.5	0
+281	58.5	0.0665
+282	58.5	0.2023
+283	58.5	0.79532
+284	58.5	1.2455
+285	58.5	1.3372
+286	58.5	1.3756
+287	58.5	1.2835
+288	58.5	1.1908
+289	58.5	1.1236
+290	58.5	0.96769
+291	58.5	0.7632
+292	58.5	0.36065
+293	58.5	0.26214
+294	58.5	0.40005
+295	58.5	0.58883
+296	58.5	0.50063
+297	58.5	0.29859
+298	58.5	0.046282
+299	58.5	0
+300	58.5	0
+301	58.5	0
+302	58.5	0
+303	58.5	0
+304	58.5	0
+305	58.5	0
+306	58.5	0
+307	58.5	0
+308	58.5	0
+309	58.5	0
+310	58.5	0
+311	58.5	0
+312	58.5	0
+313	58.5	0
+314	58.5	0
+315	58.5	0
+316	58.5	0
+317	58.5	0
+318	58.5	0
+319	58.5	0
+320	58.5	0
+321	58.5	0
+322	58.5	0
+323	58.5	0
+324	58.5	0
+325	58.5	0
+326	58.5	0
+327	58.5	0
+328	58.5	0
+329	58.5	0
+330	58.5	0
+331	58.5	0
+332	58.5	0
+333	58.5	0
+334	58.5	0
+335	58.5	0
+336	58.5	0
+337	58.5	0
+338	58.5	0
+339	58.5	0
+340	58.5	0
+341	58.5	0
+342	58.5	0
+343	58.5	0
+344	58.5	0
+345	58.5	0
+346	58.5	0
+347	58.5	0
+348	58.5	0
+349	58.5	0
+350	58.5	0
+351	58.5	0
+352	58.5	0
+353	58.5	-0.070934
+354	58.5	-0.26612
+355	58.5	-0.31434
+356	58.5	-0.48395
+357	58.5	0
+358	58.5	0
+359	58.5	0
+360	58.5	0
+0	59	0
+1	59	0
+2	59	0
+3	59	0
+4	59	0
+5	59	0
+6	59	0.71514
+7	59	1.736
+8	59	1.2001
+9	59	0.43867
+10	59	0.10265
+11	59	0.14259
+12	59	0.36396
+13	59	0.18942
+14	59	0.62539
+15	59	0.75522
+16	59	0.61836
+17	59	0.23942
+18	59	0.066476
+19	59	0
+20	59	0
+21	59	0
+22	59	0
+23	59	0.021705
+24	59	0.24132
+25	59	0.47038
+26	59	0.73239
+27	59	0.54796
+28	59	0.54604
+29	59	1.1543
+30	59	1.2616
+31	59	1.1759
+32	59	1.0353
+33	59	0.88099
+34	59	0.66601
+35	59	0.52346
+36	59	0.40091
+37	59	0.28208
+38	59	0.13277
+39	59	0.032688
+40	59	0.011397
+41	59	-0.030777
+42	59	-0.062851
+43	59	-0.084645
+44	59	-0.10094
+45	59	-0.089658
+46	59	-0.065572
+47	59	-0.057862
+48	59	-0.050152
+49	59	-0.13139
+50	59	-0.17948
+51	59	-0.23758
+52	59	-0.28307
+53	59	-0.33665
+54	59	-0.39127
+55	59	-0.4459
+56	59	-0.45159
+57	59	-0.41234
+58	59	-0.39967
+59	59	-0.35166
+60	59	-0.33248
+61	59	-0.31403
+62	59	-0.30104
+63	59	-0.30262
+64	59	-0.36629
+65	59	-0.40257
+66	59	-0.4128
+67	59	-0.43124
+68	59	-0.44835
+69	59	-0.39421
+70	59	-0.33574
+71	59	-0.26137
+72	59	-0.19266
+73	59	-0.12394
+74	59	-0.048039
+75	59	0.036416
+76	59	0.084571
+77	59	0.11928
+78	59	0.14663
+79	59	0.18461
+80	59	0.22307
+81	59	0.22589
+82	59	0.25745
+83	59	0.28444
+84	59	0.33263
+85	59	0.37107
+86	59	0.40898
+87	59	0.46778
+88	59	0.51921
+89	59	0.5471
+90	59	0.57425
+91	59	0.59547
+92	59	0.63462
+93	59	0.69429
+94	59	0.73568
+95	59	0.7625
+96	59	0.78864
+97	59	0.82054
+98	59	0.88981
+99	59	0.93254
+100	59	0.94644
+101	59	0.9
+102	59	0.85817
+103	59	0.81647
+104	59	0.76948
+105	59	0.7218
+106	59	0.65129
+107	59	0.55333
+108	59	0.45637
+109	59	0.3617
+110	59	0.29539
+111	59	0.27381
+112	59	0.21737
+113	59	0.18649
+114	59	0.19451
+115	59	0.20577
+116	59	0.21887
+117	59	0.25126
+118	59	0.28425
+119	59	0.31238
+120	59	0.33653
+121	59	0.36577
+122	59	0.33616
+123	59	0.30655
+124	59	0.27694
+125	59	0.24267
+126	59	0.1957
+127	59	0.16498
+128	59	0.16174
+129	59	0.16514
+130	59	0.16698
+131	59	0.17566
+132	59	0.20585
+133	59	0.25446
+134	59	0.31028
+135	59	0.39415
+136	59	0.48979
+137	59	0.5787
+138	59	0.63855
+139	59	0.74523
+140	59	0.73935
+141	59	0.73636
+142	59	0.45286
+143	59	0.16698
+144	59	0.17821
+145	59	0
+146	59	0.29238
+147	59	0.44612
+148	59	0.021742
+149	59	0
+150	59	0
+151	59	0.35543
+152	59	0.57237
+153	59	0.35378
+154	59	0.047098
+155	59	0.031475
+156	59	0
+157	59	0
+158	59	0
+159	59	0
+160	59	0.3754
+161	59	1.0193
+162	59	0.92831
+163	59	0.20971
+164	59	0
+165	59	0
+166	59	0
+167	59	0
+168	59	0
+169	59	0
+170	59	0
+171	59	0
+172	59	0
+173	59	0
+174	59	0
+175	59	0
+176	59	0
+177	59	0
+178	59	0
+179	59	0
+180	59	0
+181	59	0
+182	59	0
+183	59	0
+184	59	0
+185	59	0
+186	59	0
+187	59	0
+188	59	0
+189	59	0
+190	59	0
+191	59	0
+192	59	0
+193	59	0
+194	59	0
+195	59	0
+196	59	0
+197	59	0
+198	59	0.049557
+199	59	0.10274
+200	59	-0.039404
+201	59	-0.075421
+202	59	-0.64273
+203	59	-0.67398
+204	59	-3.0507
+205	59	-2.382
+206	59	-0.12664
+207	59	0
+208	59	0
+209	59	0
+210	59	0
+211	59	0
+212	59	0
+213	59	0
+214	59	0
+215	59	0
+216	59	0
+217	59	0
+218	59	0
+219	59	0
+220	59	0
+221	59	-2.649
+222	59	0
+223	59	0
+224	59	-1.1373
+225	59	0
+226	59	0
+227	59	-4.6718
+228	59	-4.1169
+229	59	-3.3649
+230	59	-2.5784
+231	59	-1.5411
+232	59	-0.77151
+233	59	-0.39948
+234	59	-0.1577
+235	59	0.056726
+236	59	0.17091
+237	59	0.35033
+238	59	0.5333
+239	59	0.62576
+240	59	0.67957
+241	59	0.70182
+242	59	0.54952
+243	59	0.45693
+244	59	0.35591
+245	59	0.020437
+246	59	-0.31848
+247	59	-0.51031
+248	59	-0.77966
+249	59	-0.95037
+250	59	-0.35849
+251	59	-0.2729
+252	59	-1.3698
+253	59	-1.5268
+254	59	-1.5718
+255	59	-1.6462
+256	59	-0.79219
+257	59	-1.6902
+258	59	-1.792
+259	59	-2.0623
+260	59	-2.1161
+261	59	-2.1802
+262	59	-2.3725
+263	59	-2.6893
+264	59	-2.3155
+265	59	-1.7308
+266	59	-0.51364
+267	59	-0.40894
+268	59	0
+269	59	0
+270	59	0
+271	59	0
+272	59	0
+273	59	0
+274	59	0
+275	59	0
+276	59	0
+277	59	0
+278	59	0
+279	59	0
+280	59	0
+281	59	0.11884
+282	59	0.74038
+283	59	1.1944
+284	59	1.3439
+285	59	1.3406
+286	59	1.2979
+287	59	1.2044
+288	59	1.0705
+289	59	0.90965
+290	59	0.66415
+291	59	0.40917
+292	59	0.19287
+293	59	0
+294	59	0.12644
+295	59	0.38382
+296	59	0.34292
+297	59	0.07908
+298	59	0
+299	59	0
+300	59	0
+301	59	0
+302	59	0
+303	59	0
+304	59	0
+305	59	0
+306	59	0
+307	59	0
+308	59	0
+309	59	0
+310	59	0
+311	59	0
+312	59	0
+313	59	0
+314	59	0
+315	59	0
+316	59	0
+317	59	0
+318	59	0
+319	59	0
+320	59	0
+321	59	0
+322	59	0
+323	59	0
+324	59	0
+325	59	0
+326	59	0
+327	59	0
+328	59	0
+329	59	0
+330	59	0
+331	59	0
+332	59	0
+333	59	0
+334	59	0
+335	59	0
+336	59	0
+337	59	0
+338	59	0
+339	59	0
+340	59	0
+341	59	0
+342	59	0
+343	59	0
+344	59	0
+345	59	0
+346	59	0
+347	59	0
+348	59	0
+349	59	0
+350	59	0
+351	59	0
+352	59	0
+353	59	0
+354	59	-0.010342
+355	59	0
+356	59	-0.22117
+357	59	0
+358	59	0
+359	59	0
+360	59	0
+0	59.5	0
+1	59.5	0
+2	59.5	0
+3	59.5	0
+4	59.5	0
+5	59.5	0
+6	59.5	1.2117
+7	59.5	2.0533
+8	59.5	1.4927
+9	59.5	0.63182
+10	59.5	0.30586
+11	59.5	0.27348
+12	59.5	0.32655
+13	59.5	0.31548
+14	59.5	0.51596
+15	59.5	0.62211
+16	59.5	0.62515
+17	59.5	0.48302
+18	59.5	0.21584
+19	59.5	0
+20	59.5	0
+21	59.5	0
+22	59.5	0
+23	59.5	0
+24	59.5	0.16441
+25	59.5	0.092454
+26	59.5	0.20836
+27	59.5	0.34216
+28	59.5	0.079074
+29	59.5	1.1468
+30	59.5	1.263
+31	59.5	1.0964
+32	59.5	0.89369
+33	59.5	0.84682
+34	59.5	0.71632
+35	59.5	0.57234
+36	59.5	0.43424
+37	59.5	0.3166
+38	59.5	0.19896
+39	59.5	0.090963
+40	59.5	0.054332
+41	59.5	0.010003
+42	59.5	-0.013833
+43	59.5	-0.036372
+44	59.5	-0.041794
+45	59.5	-0.039212
+46	59.5	-0.039035
+47	59.5	-0.04776
+48	59.5	-0.058527
+49	59.5	-0.076227
+50	59.5	-0.13007
+51	59.5	-0.18817
+52	59.5	-0.23199
+53	59.5	-0.28107
+54	59.5	-0.33569
+55	59.5	-0.38736
+56	59.5	-0.38693
+57	59.5	-0.35525
+58	59.5	-0.31623
+59	59.5	-0.3079
+60	59.5	-0.29492
+61	59.5	-0.28193
+62	59.5	-0.26895
+63	59.5	-0.26358
+64	59.5	-0.29858
+65	59.5	-0.33877
+66	59.5	-0.35223
+67	59.5	-0.37067
+68	59.5	-0.3891
+69	59.5	-0.34259
+70	59.5	-0.28317
+71	59.5	-0.23473
+72	59.5	-0.1642
+73	59.5	-0.093661
+74	59.5	-0.023126
+75	59.5	0.037502
+76	59.5	0.083945
+77	59.5	0.11559
+78	59.5	0.14252
+79	59.5	0.17782
+80	59.5	0.21509
+81	59.5	0.23249
+82	59.5	0.26226
+83	59.5	0.28925
+84	59.5	0.32355
+85	59.5	0.36199
+86	59.5	0.40022
+87	59.5	0.45294
+88	59.5	0.47611
+89	59.5	0.50877
+90	59.5	0.55018
+91	59.5	0.57141
+92	59.5	0.60654
+93	59.5	0.66621
+94	59.5	0.69342
+95	59.5	0.71956
+96	59.5	0.7439
+97	59.5	0.7643
+98	59.5	0.83357
+99	59.5	0.90284
+100	59.5	0.91413
+101	59.5	0.87228
+102	59.5	0.83048
+103	59.5	0.78878
+104	59.5	0.7446
+105	59.5	0.69692
+106	59.5	0.65358
+107	59.5	0.55562
+108	59.5	0.45817
+109	59.5	0.36349
+110	59.5	0.30644
+111	59.5	0.28487
+112	59.5	0.24498
+113	59.5	0.20752
+114	59.5	0.21555
+115	59.5	0.22837
+116	59.5	0.24146
+117	59.5	0.26789
+118	59.5	0.30087
+119	59.5	0.32792
+120	59.5	0.35235
+121	59.5	0.36547
+122	59.5	0.33586
+123	59.5	0.30624
+124	59.5	0.27663
+125	59.5	0.24629
+126	59.5	0.20972
+127	59.5	0.17954
+128	59.5	0.17301
+129	59.5	0.1764
+130	59.5	0.17504
+131	59.5	0.17464
+132	59.5	0.19891
+133	59.5	0.24087
+134	59.5	0.29234
+135	59.5	0.37385
+136	59.5	0.43808
+137	59.5	0.5233
+138	59.5	0.57678
+139	59.5	0.67973
+140	59.5	0.7678
+141	59.5	0.78456
+142	59.5	0.70803
+143	59.5	0.60599
+144	59.5	0.57098
+145	59.5	0.2764
+146	59.5	0.59017
+147	59.5	0.87548
+148	59.5	0.65277
+149	59.5	0.099705
+150	59.5	0.10304
+151	59.5	0.6482
+152	59.5	1.0425
+153	59.5	1.1081
+154	59.5	0.61495
+155	59.5	0.15058
+156	59.5	0
+157	59.5	0
+158	59.5	0
+159	59.5	0
+160	59.5	0.12428
+161	59.5	0.56617
+162	59.5	0.80965
+163	59.5	0.42862
+164	59.5	0.089068
+165	59.5	0
+166	59.5	0
+167	59.5	0.012423
+168	59.5	0
+169	59.5	0
+170	59.5	0
+171	59.5	0
+172	59.5	0
+173	59.5	0
+174	59.5	0
+175	59.5	0
+176	59.5	0
+177	59.5	0
+178	59.5	0
+179	59.5	0
+180	59.5	0
+181	59.5	0
+182	59.5	0
+183	59.5	0
+184	59.5	0
+185	59.5	0
+186	59.5	0
+187	59.5	0
+188	59.5	0
+189	59.5	0
+190	59.5	0
+191	59.5	0
+192	59.5	0
+193	59.5	0.11795
+194	59.5	0
+195	59.5	0
+196	59.5	0
+197	59.5	0.10281
+198	59.5	0.15637
+199	59.5	0.22346
+200	59.5	-0.0094533
+201	59.5	-0.32293
+202	59.5	-0.96755
+203	59.5	-1.6403
+204	59.5	-3.0851
+205	59.5	-0.048446
+206	59.5	-1.3678
+207	59.5	0
+208	59.5	0
+209	59.5	0
+210	59.5	0
+211	59.5	0
+212	59.5	0
+213	59.5	0
+214	59.5	0
+215	59.5	0
+216	59.5	0
+217	59.5	0
+218	59.5	0
+219	59.5	0
+220	59.5	0
+221	59.5	-1.4212
+222	59.5	0
+223	59.5	0
+224	59.5	0
+225	59.5	0
+226	59.5	-1.4245
+227	59.5	-3.549
+228	59.5	-3.1323
+229	59.5	-2.7797
+230	59.5	-2.1533
+231	59.5	-1.1331
+232	59.5	-0.56839
+233	59.5	-0.31965
+234	59.5	-0.10988
+235	59.5	0.0825
+236	59.5	0.21004
+237	59.5	0.36464
+238	59.5	0.54483
+239	59.5	0.61888
+240	59.5	0.68381
+241	59.5	0.70042
+242	59.5	0.5264
+243	59.5	0.35237
+244	59.5	0.21558
+245	59.5	-0.12273
+246	59.5	-0.46165
+247	59.5	-0.67802
+248	59.5	-0.95879
+249	59.5	-1.0854
+250	59.5	-0.39762
+251	59.5	-0.31107
+252	59.5	-1.4772
+253	59.5	-1.6806
+254	59.5	-1.0565
+255	59.5	-1.6464
+256	59.5	-0.090992
+257	59.5	-2.0216
+258	59.5	-2.1232
+259	59.5	-2.2452
+260	59.5	-1.2522
+261	59.5	-1.7658
+262	59.5	-2.6299
+263	59.5	-2.9133
+264	59.5	-2.5463
+265	59.5	-1.0506
+266	59.5	0
+267	59.5	0
+268	59.5	0
+269	59.5	0
+270	59.5	0
+271	59.5	0
+272	59.5	0
+273	59.5	0
+274	59.5	0
+275	59.5	0
+276	59.5	0
+277	59.5	0
+278	59.5	0
+279	59.5	0
+280	59.5	0
+281	59.5	0.056179
+282	59.5	0.60037
+283	59.5	1.3822
+284	59.5	1.3408
+285	59.5	1.3002
+286	59.5	1.197
+287	59.5	1.1165
+288	59.5	0.90006
+289	59.5	0.71272
+290	59.5	0.4319
+291	59.5	0.04744
+292	59.5	0
+293	59.5	0
+294	59.5	0
+295	59.5	0.18384
+296	59.5	0.16211
+297	59.5	0
+298	59.5	0
+299	59.5	0
+300	59.5	0
+301	59.5	0
+302	59.5	0
+303	59.5	0
+304	59.5	0
+305	59.5	0
+306	59.5	0
+307	59.5	0
+308	59.5	0
+309	59.5	0
+310	59.5	0
+311	59.5	0
+312	59.5	0
+313	59.5	0
+314	59.5	0
+315	59.5	0
+316	59.5	0
+317	59.5	0
+318	59.5	0
+319	59.5	0
+320	59.5	0
+321	59.5	0
+322	59.5	0
+323	59.5	0
+324	59.5	0
+325	59.5	0
+326	59.5	0
+327	59.5	0
+328	59.5	0
+329	59.5	0
+330	59.5	0
+331	59.5	0
+332	59.5	0
+333	59.5	0
+334	59.5	0
+335	59.5	0
+336	59.5	0
+337	59.5	0
+338	59.5	0
+339	59.5	0
+340	59.5	0
+341	59.5	0
+342	59.5	0
+343	59.5	0
+344	59.5	0
+345	59.5	0
+346	59.5	0
+347	59.5	0
+348	59.5	0
+349	59.5	0
+350	59.5	0
+351	59.5	0
+352	59.5	0
+353	59.5	0
+354	59.5	0
+355	59.5	0
+356	59.5	0
+357	59.5	0
+358	59.5	0
+359	59.5	0
+360	59.5	0
+0	60	0
+1	60	0
+2	60	0
+3	60	0
+4	60	0
+5	60	0.079808
+6	60	0.45274
+7	60	2.0755
+8	60	1.5974
+9	60	0.7471
+10	60	0.39114
+11	60	0.23012
+12	60	0.25668
+13	60	0.39874
+14	60	0.49252
+15	60	0.54609
+16	60	0.54653
+17	60	0.41576
+18	60	0.21903
+19	60	0
+20	60	0
+21	60	0
+22	60	0
+23	60	0.20038
+24	60	0.23134
+25	60	0.29438
+26	60	0.45491
+27	60	0.010556
+28	60	0
+29	60	0.94257
+30	60	1.186
+31	60	0.74865
+32	60	0.5699
+33	60	0.70791
+34	60	0.76242
+35	60	0.58599
+36	60	0.43024
+37	60	0.32456
+38	60	0.24284
+39	60	0.15733
+40	60	0.085852
+41	60	0.027416
+42	60	0.015326
+43	60	0.0043633
+44	60	0.0024144
+45	60	-0.0013223
+46	60	-0.00070478
+47	60	0.0016254
+48	60	-0.0091409
+49	60	-0.024826
+50	60	-0.080662
+51	60	-0.13876
+52	60	-0.18091
+53	60	-0.22549
+54	60	-0.28012
+55	60	-0.32271
+56	60	-0.32228
+57	60	-0.29816
+58	60	-0.27589
+59	60	-0.27581
+60	60	-0.26282
+61	60	-0.24984
+62	60	-0.23897
+63	60	-0.23479
+64	60	-0.23088
+65	60	-0.27498
+66	60	-0.29166
+67	60	-0.3101
+68	60	-0.32853
+69	60	-0.29001
+70	60	-0.24562
+71	60	-0.21046
+72	60	-0.14498
+73	60	-0.074443
+74	60	-0.0069521
+75	60	0.038587
+76	60	0.08332
+77	60	0.11148
+78	60	0.1384
+79	60	0.17104
+80	60	0.20711
+81	60	0.23792
+82	60	0.25667
+83	60	0.27542
+84	60	0.2934
+85	60	0.34225
+86	60	0.39109
+87	60	0.41952
+88	60	0.433
+89	60	0.47043
+90	60	0.51486
+91	60	0.54734
+92	60	0.57846
+93	60	0.62891
+94	60	0.65049
+95	60	0.67663
+96	60	0.69838
+97	60	0.71603
+98	60	0.77732
+99	60	0.84659
+100	60	0.8864
+101	60	0.84455
+102	60	0.80279
+103	60	0.76108
+104	60	0.71938
+105	60	0.67204
+106	60	0.63009
+107	60	0.5579
+108	60	0.45997
+109	60	0.36529
+110	60	0.3175
+111	60	0.29592
+112	60	0.27259
+113	60	0.22856
+114	60	0.23787
+115	60	0.25096
+116	60	0.26405
+117	60	0.28451
+118	60	0.3175
+119	60	0.34347
+120	60	0.3679
+121	60	0.3513
+122	60	0.32263
+123	60	0.29395
+124	60	0.26528
+125	60	0.24509
+126	60	0.22428
+127	60	0.19409
+128	60	0.18428
+129	60	0.18683
+130	60	0.18309
+131	60	0.17936
+132	60	0.19789
+133	60	0.22194
+134	60	0.27341
+135	60	0.35355
+136	60	0.39798
+137	60	0.45781
+138	60	0.51688
+139	60	0.62082
+140	60	0.7068
+141	60	0.76676
+142	60	0.77201
+143	60	0.73493
+144	60	0.75817
+145	60	0.75459
+146	60	0.85247
+147	60	0.95524
+148	60	1.0152
+149	60	0.70088
+150	60	0.64017
+151	60	0.85428
+152	60	1.2147
+153	60	1.4104
+154	60	0.9774
+155	60	0
+156	60	0
+157	60	0
+158	60	0
+159	60	0
+160	60	0.0023623
+161	60	0.19795
+162	60	0.4553
+163	60	0.67669
+164	60	0.34033
+165	60	0.018042
+166	60	0.22542
+167	60	0.46934
+168	60	0
+169	60	0
+170	60	0.15392
+171	60	0.18672
+172	60	0
+173	60	0
+174	60	0
+175	60	0
+176	60	0
+177	60	0
+178	60	0
+179	60	0
+180	60	0
+181	60	0
+182	60	0
+183	60	0
+184	60	0
+185	60	0
+186	60	0
+187	60	0
+188	60	0
+189	60	0
+190	60	0
+191	60	0
+192	60	0
+193	60	0.41338
+194	60	0
+195	60	0.39556
+196	60	0
+197	60	0.40303
+198	60	0.36141
+199	60	0.22524
+200	60	-0.071813
+201	60	-0.43244
+202	60	-1.0468
+203	60	-2.0347
+204	60	-3.0522
+205	60	-1.9809
+206	60	-0.99462
+207	60	0
+208	60	0
+209	60	-1.5506
+210	60	0
+211	60	0
+212	60	-0.066134
+213	60	0
+214	60	0
+215	60	0
+216	60	0
+217	60	0
+218	60	0
+219	60	0
+220	60	0
+221	60	0
+222	60	0
+223	60	-2.9719
+224	60	-1.5827
+225	60	-1.3232
+226	60	-3.5139
+227	60	-2.6998
+228	60	-2.3199
+229	60	-2.0557
+230	60	-1.5921
+231	60	-0.84752
+232	60	-0.48193
+233	60	-0.24635
+234	60	-0.061096
+235	60	0.10827
+236	60	0.24916
+237	60	0.40313
+238	60	0.54318
+239	60	0.612
+240	60	0.68082
+241	60	0.67729
+242	60	0.50327
+243	60	0.32924
+244	60	0.073014
+245	60	-0.26591
+246	60	-0.60483
+247	60	-0.87662
+248	60	-1.0622
+249	60	-1.2005
+250	60	-1.0231
+251	60	-1.1269
+252	60	-1.5622
+253	60	-1.7633
+254	60	-0.44245
+255	60	-1.9191
+256	60	-1.0328
+257	60	-2.1556
+258	60	-2.362
+259	60	-2.4201
+260	60	-0.93237
+261	60	-0.78107
+262	60	-2.7281
+263	60	-3.0245
+264	60	-2.6318
+265	60	-0.79109
+266	60	0
+267	60	0
+268	60	0
+269	60	0
+270	60	0
+271	60	0
+272	60	0
+273	60	0
+274	60	0
+275	60	0
+276	60	0
+277	60	0
+278	60	0
+279	60	0
+280	60	0
+281	60	0
+282	60	0.22539
+283	60	1.3854
+284	60	1.285
+285	60	1.1571
+286	60	1.0456
+287	60	0.97163
+288	60	0.71422
+289	60	0.5056
+290	60	0.22005
+291	60	0
+292	60	0
+293	60	0
+294	60	0
+295	60	0.062358
+296	60	0.012768
+297	60	0
+298	60	0
+299	60	0
+300	60	0
+301	60	0
+302	60	0
+303	60	0
+304	60	0
+305	60	0
+306	60	0
+307	60	0
+308	60	0
+309	60	0
+310	60	0
+311	60	0
+312	60	0
+313	60	0
+314	60	0
+315	60	0
+316	60	0
+317	60	0
+318	60	0
+319	60	0
+320	60	0
+321	60	0
+322	60	0
+323	60	0
+324	60	0
+325	60	0
+326	60	0
+327	60	0
+328	60	0
+329	60	0
+330	60	0
+331	60	0
+332	60	0
+333	60	0
+334	60	0
+335	60	0
+336	60	0
+337	60	0
+338	60	0
+339	60	0
+340	60	0
+341	60	0
+342	60	0
+343	60	0
+344	60	0
+345	60	0
+346	60	0
+347	60	0
+348	60	0
+349	60	0
+350	60	0
+351	60	0
+352	60	0
+353	60	0
+354	60	0
+355	60	0
+356	60	0
+357	60	0
+358	60	0
+359	60	0
+360	60	0
+0	60.5	0
+1	60.5	0
+2	60.5	0
+3	60.5	0
+4	60.5	0
+5	60.5	0.34728
+6	60.5	0.22411
+7	60.5	1.8584
+8	60.5	1.5892
+9	60.5	0.81155
+10	60.5	0.48477
+11	60.5	0.38835
+12	60.5	0.27046
+13	60.5	0.42645
+14	60.5	0.46315
+15	60.5	0.47669
+16	60.5	0.47356
+17	60.5	0.24877
+18	60.5	0.016461
+19	60.5	0
+20	60.5	0
+21	60.5	0
+22	60.5	0.094875
+23	60.5	0.45095
+24	60.5	0.56213
+25	60.5	0.8148
+26	60.5	0.84963
+27	60.5	0.3265
+28	60.5	0.37014
+29	60.5	0.78374
+30	60.5	1.0558
+31	60.5	0.37095
+32	60.5	0.24458
+33	60.5	0.1848
+34	60.5	0.73535
+35	60.5	0.57605
+36	60.5	0.41839
+37	60.5	0.35211
+38	60.5	0.26662
+39	60.5	0.17574
+40	60.5	0.089812
+41	60.5	0.045132
+42	60.5	0.032207
+43	60.5	0.032823
+44	60.5	0.040304
+45	60.5	0.036568
+46	60.5	0.037626
+47	60.5	0.041746
+48	60.5	0.040245
+49	60.5	0.020784
+50	60.5	-0.031253
+51	60.5	-0.089351
+52	60.5	-0.12983
+53	60.5	-0.16991
+54	60.5	-0.22454
+55	60.5	-0.25806
+56	60.5	-0.25762
+57	60.5	-0.24106
+58	60.5	-0.23555
+59	60.5	-0.24372
+60	60.5	-0.23073
+61	60.5	-0.21774
+62	60.5	-0.21015
+63	60.5	-0.206
+64	60.5	-0.20151
+65	60.5	-0.21265
+66	60.5	-0.23109
+67	60.5	-0.24952
+68	60.5	-0.26796
+69	60.5	-0.2459
+70	60.5	-0.21157
+71	60.5	-0.17627
+72	60.5	-0.12576
+73	60.5	-0.055226
+74	60.5	0.005746
+75	60.5	0.039672
+76	60.5	0.080437
+77	60.5	0.10736
+78	60.5	0.13429
+79	60.5	0.16426
+80	60.5	0.19912
+81	60.5	0.2068
+82	60.5	0.22232
+83	60.5	0.24107
+84	60.5	0.25768
+85	60.5	0.29708
+86	60.5	0.34592
+87	60.5	0.37642
+88	60.5	0.3899
+89	60.5	0.4321
+90	60.5	0.47653
+91	60.5	0.52096
+92	60.5	0.55039
+93	60.5	0.58676
+94	60.5	0.60755
+95	60.5	0.63369
+96	60.5	0.65285
+97	60.5	0.67051
+98	60.5	0.72108
+99	60.5	0.79035
+100	60.5	0.8443
+101	60.5	0.81682
+102	60.5	0.77509
+103	60.5	0.73339
+104	60.5	0.69169
+105	60.5	0.64716
+106	60.5	0.60595
+107	60.5	0.56019
+108	60.5	0.46222
+109	60.5	0.36709
+110	60.5	0.32856
+111	60.5	0.30698
+112	60.5	0.2854
+113	60.5	0.2496
+114	60.5	0.26046
+115	60.5	0.27355
+116	60.5	0.28664
+117	60.5	0.30113
+118	60.5	0.33412
+119	60.5	0.35901
+120	60.5	0.35915
+121	60.5	0.33162
+122	60.5	0.30294
+123	60.5	0.27426
+124	60.5	0.24559
+125	60.5	0.24845
+126	60.5	0.23668
+127	60.5	0.20865
+128	60.5	0.19555
+129	60.5	0.19489
+130	60.5	0.19115
+131	60.5	0.18741
+132	60.5	0.19608
+133	60.5	0.21275
+134	60.5	0.25449
+135	60.5	0.33324
+136	60.5	0.35787
+137	60.5	0.38717
+138	60.5	0.46747
+139	60.5	0.55737
+140	60.5	0.64201
+141	60.5	0.71169
+142	60.5	0.70329
+143	60.5	0.74046
+144	60.5	0.7814
+145	60.5	0.87174
+146	60.5	0.8398
+147	60.5	0.93529
+148	60.5	1.0643
+149	60.5	0.95411
+150	60.5	0.90495
+151	60.5	1.0237
+152	60.5	1.215
+153	60.5	1.4391
+154	60.5	1.2074
+155	60.5	0.31885
+156	60.5	0.029286
+157	60.5	0
+158	60.5	0
+159	60.5	0
+160	60.5	0.075641
+161	60.5	0.026761
+162	60.5	0.022071
+163	60.5	0.45107
+164	60.5	0.43495
+165	60.5	0.28721
+166	60.5	0.62467
+167	60.5	0.8801
+168	60.5	0.42683
+169	60.5	0.40061
+170	60.5	0.656
+171	60.5	0.41619
+172	60.5	0.10359
+173	60.5	0
+174	60.5	0
+175	60.5	0
+176	60.5	0
+177	60.5	0
+178	60.5	0
+179	60.5	0
+180	60.5	0
+181	60.5	0
+182	60.5	0
+183	60.5	0
+184	60.5	0
+185	60.5	0
+186	60.5	0
+187	60.5	0
+188	60.5	0
+189	60.5	0
+190	60.5	0
+191	60.5	0
+192	60.5	0
+193	60.5	0.28508
+194	60.5	0.077862
+195	60.5	0.90141
+196	60.5	0.13536
+197	60.5	0.56299
+198	60.5	0.26896
+199	60.5	0.22827
+200	60.5	-0.10938
+201	60.5	-0.52739
+202	60.5	-1.1796
+203	60.5	-1.9387
+204	60.5	-2.876
+205	60.5	-3.5231
+206	60.5	-1.3761
+207	60.5	0
+208	60.5	-1.0672
+209	60.5	-3.0651
+210	60.5	-2.2251
+211	60.5	-3.1163
+212	60.5	-4.4561
+213	60.5	0
+214	60.5	0
+215	60.5	0
+216	60.5	0
+217	60.5	0
+218	60.5	0
+219	60.5	0
+220	60.5	0
+221	60.5	0
+222	60.5	0
+223	60.5	-2.9168
+224	60.5	-5.9653
+225	60.5	-2.9734
+226	60.5	-2.514
+227	60.5	-1.9764
+228	60.5	-1.7531
+229	60.5	-1.5952
+230	60.5	-1.1279
+231	60.5	-0.57433
+232	60.5	-0.39228
+233	60.5	-0.17989
+234	60.5	-0.0079795
+235	60.5	0.13431
+236	60.5	0.28808
+237	60.5	0.43224
+238	60.5	0.51889
+239	60.5	0.60512
+240	60.5	0.67394
+241	60.5	0.65416
+242	60.5	0.47059
+243	60.5	0.2424
+244	60.5	0.017369
+245	60.5	-0.35065
+246	60.5	-0.71868
+247	60.5	-0.97747
+248	60.5	-1.1499
+249	60.5	-1.2965
+250	60.5	-1.3999
+251	60.5	-1.4094
+252	60.5	-1.6208
+253	60.5	-1.8184
+254	60.5	-1.0606
+255	60.5	-2.0076
+256	60.5	-1.7167
+257	60.5	-2.2312
+258	60.5	-2.4856
+259	60.5	-2.569
+260	60.5	-1.6253
+261	60.5	-1.157
+262	60.5	-2.7592
+263	60.5	-2.8927
+264	60.5	-2.5832
+265	60.5	-1.3032
+266	60.5	0
+267	60.5	0
+268	60.5	0
+269	60.5	0
+270	60.5	0
+271	60.5	0
+272	60.5	0
+273	60.5	0
+274	60.5	0
+275	60.5	0
+276	60.5	0
+277	60.5	0
+278	60.5	0
+279	60.5	0
+280	60.5	0
+281	60.5	0
+282	60.5	0
+283	60.5	1.227
+284	60.5	1.0936
+285	60.5	1.0141
+286	60.5	0.89968
+287	60.5	0.72672
+288	60.5	0.46167
+289	60.5	0.29718
+290	60.5	0.10346
+291	60.5	0
+292	60.5	0
+293	60.5	0
+294	60.5	0
+295	60.5	0
+296	60.5	0
+297	60.5	0
+298	60.5	0
+299	60.5	0
+300	60.5	0
+301	60.5	0
+302	60.5	0
+303	60.5	0
+304	60.5	0
+305	60.5	0
+306	60.5	0
+307	60.5	0
+308	60.5	0
+309	60.5	0
+310	60.5	0
+311	60.5	0
+312	60.5	0
+313	60.5	0
+314	60.5	0
+315	60.5	0
+316	60.5	0
+317	60.5	0
+318	60.5	0
+319	60.5	0
+320	60.5	0
+321	60.5	0
+322	60.5	0
+323	60.5	0
+324	60.5	0
+325	60.5	0
+326	60.5	0
+327	60.5	0
+328	60.5	0
+329	60.5	0
+330	60.5	0
+331	60.5	0
+332	60.5	0
+333	60.5	0
+334	60.5	0
+335	60.5	0
+336	60.5	0
+337	60.5	0
+338	60.5	0
+339	60.5	0
+340	60.5	0
+341	60.5	0
+342	60.5	0
+343	60.5	0
+344	60.5	0
+345	60.5	0
+346	60.5	0
+347	60.5	0
+348	60.5	0
+349	60.5	0
+350	60.5	0
+351	60.5	0
+352	60.5	0
+353	60.5	0
+354	60.5	0
+355	60.5	0
+356	60.5	0
+357	60.5	0
+358	60.5	0
+359	60.5	0
+360	60.5	0
+0	61	0
+1	61	0
+2	61	0
+3	61	0
+4	61	0
+5	61	0.41485
+6	61	0.14019
+7	61	1.0754
+8	61	1.2197
+9	61	0.94024
+10	61	0.59485
+11	61	0.48899
+12	61	0.47908
+13	61	0.48308
+14	61	0.48856
+15	61	0.45214
+16	61	0.41863
+17	61	0.20725
+18	61	0
+19	61	0
+20	61	0
+21	61	0
+22	61	0.17986
+23	61	0.49216
+24	61	0.55862
+25	61	0.74724
+26	61	0.8449
+27	61	0.70839
+28	61	0.72925
+29	61	1.0153
+30	61	0.91858
+31	61	0.042768
+32	61	0.094337
+33	61	0.3538
+34	61	0.6657
+35	61	0.50167
+36	61	0.38596
+37	61	0.32493
+38	61	0.25338
+39	61	0.17946
+40	61	0.097051
+41	61	0.062849
+42	61	0.049585
+43	61	0.06517
+44	61	0.074017
+45	61	0.074457
+46	61	0.075956
+47	61	0.080076
+48	61	0.084196
+49	61	0.066393
+50	61	0.018157
+51	61	-0.039265
+52	61	-0.078745
+53	61	-0.11822
+54	61	-0.16896
+55	61	-0.1934
+56	61	-0.19297
+57	61	-0.18397
+58	61	-0.19521
+59	61	-0.21162
+60	61	-0.19864
+61	61	-0.18565
+62	61	-0.18134
+63	61	-0.1772
+64	61	-0.17272
+65	61	-0.17829
+66	61	-0.19625
+67	61	-0.2142
+68	61	-0.23216
+69	61	-0.21185
+70	61	-0.17752
+71	61	-0.14209
+72	61	-0.10647
+73	61	-0.036008
+74	61	0.018444
+75	61	0.048692
+76	61	0.076325
+77	61	0.10325
+78	61	0.13018
+79	61	0.15747
+80	61	0.17499
+81	61	0.17635
+82	61	0.18796
+83	61	0.20672
+84	61	0.22252
+85	61	0.2519
+86	61	0.30075
+87	61	0.33066
+88	61	0.34934
+89	61	0.39377
+90	61	0.4382
+91	61	0.48263
+92	61	0.52231
+93	61	0.54461
+94	61	0.56462
+95	61	0.58967
+96	61	0.60732
+97	61	0.62498
+98	61	0.66483
+99	61	0.73208
+100	61	0.78556
+101	61	0.78911
+102	61	0.7474
+103	61	0.7057
+104	61	0.66399
+105	61	0.62228
+106	61	0.5818
+107	61	0.54147
+108	61	0.46451
+109	61	0.36889
+110	61	0.33961
+111	61	0.31804
+112	61	0.29646
+113	61	0.27063
+114	61	0.28305
+115	61	0.29615
+116	61	0.30924
+117	61	0.32233
+118	61	0.35013
+119	61	0.36649
+120	61	0.33949
+121	61	0.31193
+122	61	0.28325
+123	61	0.25457
+124	61	0.24041
+125	61	0.25182
+126	61	0.24543
+127	61	0.22254
+128	61	0.20668
+129	61	0.20294
+130	61	0.19921
+131	61	0.1908
+132	61	0.19036
+133	61	0.20995
+134	61	0.23556
+135	61	0.30111
+136	61	0.31777
+137	61	0.33442
+138	61	0.4073
+139	61	0.49393
+140	61	0.57755
+141	61	0.63223
+142	61	0.61554
+143	61	0.66711
+144	61	0.73293
+145	61	0.78902
+146	61	0.78145
+147	61	0.85594
+148	61	0.93583
+149	61	0.83716
+150	61	0.88809
+151	61	0.97672
+152	61	1.1129
+153	61	1.283
+154	61	1.1778
+155	61	0.88322
+156	61	0.43318
+157	61	0
+158	61	0
+159	61	0
+160	61	0.13802
+161	61	0.3406
+162	61	0.10367
+163	61	0.19529
+164	61	0.6399
+165	61	0.60078
+166	61	0.88229
+167	61	0.91718
+168	61	0.83229
+169	61	0.72058
+170	61	1.0635
+171	61	1.1091
+172	61	0.45401
+173	61	0.50724
+174	61	0
+175	61	0
+176	61	0
+177	61	0
+178	61	0
+179	61	0
+180	61	0
+181	61	0
+182	61	0
+183	61	0
+184	61	0
+185	61	0
+186	61	0
+187	61	0
+188	61	0
+189	61	0
+190	61	0
+191	61	0
+192	61	0
+193	61	0
+194	61	0.060519
+195	61	1.2524
+196	61	0.60568
+197	61	0.41637
+198	61	0.12168
+199	61	0.12302
+200	61	-0.15425
+201	61	-0.57191
+202	61	-1.0863
+203	61	-1.8196
+204	61	-2.449
+205	61	-3.0402
+206	61	-2.2287
+207	61	0
+208	61	-1.1008
+209	61	-3.3041
+210	61	-6.1822
+211	61	-2.4292
+212	61	0
+213	61	0
+214	61	0
+215	61	0
+216	61	-4.3933
+217	61	-3.5144
+218	61	0
+219	61	0
+220	61	-0.10084
+221	61	0
+222	61	-0.15727
+223	61	-4.1609
+224	61	-4.5457
+225	61	-2.9261
+226	61	-1.9187
+227	61	-1.5045
+228	61	-1.385
+229	61	-1.1427
+230	61	-0.82794
+231	61	-0.43949
+232	61	-0.29564
+233	61	-0.11343
+234	61	0.045543
+235	61	0.1572
+236	61	0.30136
+237	61	0.44553
+238	61	0.47367
+239	61	0.56094
+240	61	0.64821
+241	61	0.59038
+242	61	0.36218
+243	61	0.15443
+244	61	-0.037185
+245	61	-0.40521
+246	61	-0.72168
+247	61	-1.0759
+248	61	-1.2376
+249	61	-1.3925
+250	61	-1.4387
+251	61	-1.5099
+252	61	-1.6501
+253	61	-1.8369
+254	61	-1.9842
+255	61	-2.0157
+256	61	-2.175
+257	61	-2.3461
+258	61	-2.5715
+259	61	-2.6068
+260	61	-2.4396
+261	61	-1.8402
+262	61	-2.5736
+263	61	-2.7043
+264	61	-2.3489
+265	61	-1.5493
+266	61	-0.11047
+267	61	0
+268	61	0
+269	61	0
+270	61	0
+271	61	0
+272	61	0
+273	61	0
+274	61	0
+275	61	0
+276	61	0
+277	61	0
+278	61	0
+279	61	0
+280	61	0
+281	61	0
+282	61	0.028513
+283	61	0.95975
+284	61	0.85347
+285	61	0.70647
+286	61	0.59691
+287	61	0.4608
+288	61	0.23395
+289	61	0.14947
+290	61	0.026875
+291	61	0
+292	61	0
+293	61	0
+294	61	0
+295	61	0
+296	61	0
+297	61	0
+298	61	0
+299	61	0
+300	61	0
+301	61	0
+302	61	0
+303	61	0
+304	61	0
+305	61	0
+306	61	0
+307	61	0
+308	61	0
+309	61	0
+310	61	0
+311	61	0
+312	61	0
+313	61	0
+314	61	0
+315	61	0
+316	61	0
+317	61	0
+318	61	0
+319	61	0
+320	61	0
+321	61	0
+322	61	0
+323	61	0
+324	61	0
+325	61	0
+326	61	0
+327	61	0
+328	61	0
+329	61	0
+330	61	0
+331	61	0
+332	61	0
+333	61	0
+334	61	0
+335	61	0
+336	61	0
+337	61	0
+338	61	0
+339	61	0
+340	61	0
+341	61	0
+342	61	0
+343	61	0
+344	61	0
+345	61	0
+346	61	0
+347	61	0
+348	61	0
+349	61	0
+350	61	0
+351	61	0
+352	61	0
+353	61	0
+354	61	0
+355	61	0
+356	61	0
+357	61	0
+358	61	0
+359	61	0
+360	61	0
+0	61.5	0
+1	61.5	0
+2	61.5	0
+3	61.5	0
+4	61.5	0
+5	61.5	0.3119
+6	61.5	0.25931
+7	61.5	0.4028
+8	61.5	0.90362
+9	61.5	0.74246
+10	61.5	0.72303
+11	61.5	0.60187
+12	61.5	0.58054
+13	61.5	0.54778
+14	61.5	0.49972
+15	61.5	0.43522
+16	61.5	0.36406
+17	61.5	0.18689
+18	61.5	2.2624e-05
+19	61.5	0
+20	61.5	0
+21	61.5	0.017822
+22	61.5	0.23674
+23	61.5	0.39367
+24	61.5	0.49287
+25	61.5	0.63147
+26	61.5	0.80891
+27	61.5	0.23348
+28	61.5	0.8789
+29	61.5	0.54691
+30	61.5	0.87633
+31	61.5	0.21877
+32	61.5	0.44336
+33	61.5	0.72951
+34	61.5	0.60297
+35	61.5	0.19411
+36	61.5	0.14913
+37	61.5	0.30339
+38	61.5	0.23269
+39	61.5	0.16947
+40	61.5	0.089762
+41	61.5	0.076066
+42	61.5	0.071015
+43	61.5	0.072116
+44	61.5	0.096632
+45	61.5	0.11235
+46	61.5	0.11429
+47	61.5	0.11653
+48	61.5	0.11213
+49	61.5	0.10325
+50	61.5	0.065073
+51	61.5	0.011816
+52	61.5	-0.027664
+53	61.5	-0.067144
+54	61.5	-0.11339
+55	61.5	-0.12875
+56	61.5	-0.12831
+57	61.5	-0.14518
+58	61.5	-0.15488
+59	61.5	-0.1731
+60	61.5	-0.16654
+61	61.5	-0.15661
+62	61.5	-0.15252
+63	61.5	-0.14841
+64	61.5	-0.14495
+65	61.5	-0.15532
+66	61.5	-0.17328
+67	61.5	-0.19123
+68	61.5	-0.19765
+69	61.5	-0.17699
+70	61.5	-0.14347
+71	61.5	-0.1079
+72	61.5	-0.072285
+73	61.5	-0.01679
+74	61.5	0.031142
+75	61.5	0.053615
+76	61.5	0.069917
+77	61.5	0.09715
+78	61.5	0.12438
+79	61.5	0.1437
+80	61.5	0.14643
+81	61.5	0.14589
+82	61.5	0.15361
+83	61.5	0.17236
+84	61.5	0.18737
+85	61.5	0.20673
+86	61.5	0.25558
+87	61.5	0.28314
+88	61.5	0.311
+89	61.5	0.35352
+90	61.5	0.3951
+91	61.5	0.43669
+92	61.5	0.47826
+93	61.5	0.50245
+94	61.5	0.52168
+95	61.5	0.54414
+96	61.5	0.5618
+97	61.5	0.57946
+98	61.5	0.60859
+99	61.5	0.67334
+100	61.5	0.72682
+101	61.5	0.75791
+102	61.5	0.71475
+103	61.5	0.67159
+104	61.5	0.62843
+105	61.5	0.58842
+106	61.5	0.55611
+107	61.5	0.51733
+108	61.5	0.46679
+109	61.5	0.37225
+110	61.5	0.35067
+111	61.5	0.32909
+112	61.5	0.30652
+113	61.5	0.26262
+114	61.5	0.28375
+115	61.5	0.31257
+116	61.5	0.33183
+117	61.5	0.34492
+118	61.5	0.36567
+119	61.5	0.34683
+120	61.5	0.31983
+121	61.5	0.29224
+122	61.5	0.26356
+123	61.5	0.23488
+124	61.5	0.24378
+125	61.5	0.25518
+126	61.5	0.25418
+127	61.5	0.23129
+128	61.5	0.20307
+129	61.5	0.19125
+130	61.5	0.17944
+131	61.5	0.16762
+132	61.5	0.17277
+133	61.5	0.19874
+134	61.5	0.22383
+135	61.5	0.26101
+136	61.5	0.28173
+137	61.5	0.30887
+138	61.5	0.3592
+139	61.5	0.43048
+140	61.5	0.51293
+141	61.5	0.56611
+142	61.5	0.53988
+143	61.5	0.53441
+144	61.5	0.59663
+145	61.5	0.63849
+146	61.5	0.68689
+147	61.5	0.7482
+148	61.5	0.78682
+149	61.5	0.81039
+150	61.5	0.83435
+151	61.5	0.85758
+152	61.5	0.98286
+153	61.5	1.1077
+154	61.5	1.1075
+155	61.5	0.98163
+156	61.5	0.71982
+157	61.5	0.16608
+158	61.5	0.082269
+159	61.5	0.087911
+160	61.5	0.33011
+161	61.5	0.60667
+162	61.5	0.20385
+163	61.5	0.34141
+164	61.5	0.54846
+165	61.5	0.73586
+166	61.5	0.8658
+167	61.5	0.92472
+168	61.5	0.91899
+169	61.5	0.93094
+170	61.5	1.2327
+171	61.5	1.3494
+172	61.5	0.87738
+173	61.5	0.86958
+174	61.5	0
+175	61.5	0
+176	61.5	0
+177	61.5	0
+178	61.5	0
+179	61.5	0
+180	61.5	0
+181	61.5	0
+182	61.5	0
+183	61.5	0
+184	61.5	0
+185	61.5	0
+186	61.5	0
+187	61.5	0
+188	61.5	0
+189	61.5	0
+190	61.5	0
+191	61.5	0
+192	61.5	0
+193	61.5	0
+194	61.5	0.014229
+195	61.5	1.2243
+196	61.5	1.2095
+197	61.5	0.54888
+198	61.5	0.19954
+199	61.5	0.051119
+200	61.5	-0.20776
+201	61.5	-0.61097
+202	61.5	-1.0238
+203	61.5	-1.6849
+204	61.5	-2.0098
+205	61.5	-2.5465
+206	61.5	-0.92486
+207	61.5	0
+208	61.5	-0.66347
+209	61.5	-3.5636
+210	61.5	-5.9813
+211	61.5	-4.7736
+212	61.5	0
+213	61.5	0
+214	61.5	-1.1412
+215	61.5	-12.374
+216	61.5	-11.82
+217	61.5	-8.6075
+218	61.5	0
+219	61.5	-2.6205
+220	61.5	-3.3925
+221	61.5	-0.80248
+222	61.5	-1.3805
+223	61.5	-3.0043
+224	61.5	-3.6659
+225	61.5	-2.366
+226	61.5	-1.5518
+227	61.5	-1.2517
+228	61.5	-1.005
+229	61.5	-0.75333
+230	61.5	-0.50531
+231	61.5	-0.34692
+232	61.5	-0.19899
+233	61.5	-0.046978
+234	61.5	0.077854
+235	61.5	0.17361
+236	61.5	0.31465
+237	61.5	0.44307
+238	61.5	0.44583
+239	61.5	0.51571
+240	61.5	0.60298
+241	61.5	0.48197
+242	61.5	0.25377
+243	61.5	0.068952
+244	61.5	-0.11143
+245	61.5	-0.45976
+246	61.5	-0.6757
+247	61.5	-1.0964
+248	61.5	-1.3249
+249	61.5	-1.4814
+250	61.5	-1.5131
+251	61.5	-1.541
+252	61.5	-1.6822
+253	61.5	-1.8626
+254	61.5	-1.9789
+255	61.5	-2.05
+256	61.5	-2.1973
+257	61.5	-2.4235
+258	61.5	-2.1012
+259	61.5	-2.6059
+260	61.5	-2.3891
+261	61.5	-2.2759
+262	61.5	-2.3065
+263	61.5	-2.4396
+264	61.5	-2.2035
+265	61.5	-1.5849
+266	61.5	-0.41123
+267	61.5	0
+268	61.5	-0.0041175
+269	61.5	0
+270	61.5	0
+271	61.5	0
+272	61.5	0
+273	61.5	0
+274	61.5	0
+275	61.5	0
+276	61.5	0
+277	61.5	0.00074297
+278	61.5	0
+279	61.5	0
+280	61.5	0.0089644
+281	61.5	0
+282	61.5	0.38086
+283	61.5	0.632
+284	61.5	0.51325
+285	61.5	0.37693
+286	61.5	0.22929
+287	61.5	0.11517
+288	61.5	0.085706
+289	61.5	0.003491
+290	61.5	0
+291	61.5	0
+292	61.5	0
+293	61.5	0
+294	61.5	0
+295	61.5	-0.0042219
+296	61.5	-0.0064085
+297	61.5	0
+298	61.5	0
+299	61.5	0
+300	61.5	0
+301	61.5	0
+302	61.5	0
+303	61.5	0
+304	61.5	0
+305	61.5	0
+306	61.5	0
+307	61.5	0
+308	61.5	0
+309	61.5	0
+310	61.5	0
+311	61.5	0
+312	61.5	0
+313	61.5	0
+314	61.5	0
+315	61.5	0
+316	61.5	0
+317	61.5	0
+318	61.5	0
+319	61.5	0
+320	61.5	0
+321	61.5	0
+322	61.5	0
+323	61.5	0
+324	61.5	0
+325	61.5	0
+326	61.5	0
+327	61.5	0
+328	61.5	0
+329	61.5	0
+330	61.5	0
+331	61.5	0
+332	61.5	0
+333	61.5	0
+334	61.5	0
+335	61.5	0
+336	61.5	0
+337	61.5	0
+338	61.5	0
+339	61.5	0
+340	61.5	0
+341	61.5	0
+342	61.5	0
+343	61.5	0
+344	61.5	0
+345	61.5	0
+346	61.5	0
+347	61.5	0
+348	61.5	0
+349	61.5	0
+350	61.5	0
+351	61.5	0
+352	61.5	0
+353	61.5	0
+354	61.5	0
+355	61.5	0
+356	61.5	0
+357	61.5	0
+358	61.5	0
+359	61.5	0
+360	61.5	0
+0	62	0
+1	62	0
+2	62	0
+3	62	0
+4	62	0
+5	62	0.10576
+6	62	0.59997
+7	62	0.62056
+8	62	0.26834
+9	62	0.61
+10	62	0.94049
+11	62	0.77589
+12	62	0.74154
+13	62	0.64248
+14	62	0.49561
+15	62	0.41901
+16	62	0.35477
+17	62	0.2095
+18	62	0.051864
+19	62	0
+20	62	0
+21	62	0.050773
+22	62	0.19331
+23	62	0.27278
+24	62	0.37401
+25	62	0.51182
+26	62	0.67166
+27	62	0.67388
+28	62	0.89034
+29	62	0.36978
+30	62	0.83225
+31	62	0.68961
+32	62	0.52474
+33	62	0.68572
+34	62	0.55383
+35	62	0.22004
+36	62	0.19015
+37	62	0.2933
+38	62	0.19588
+39	62	0.1434
+40	62	0.091629
+41	62	0.079221
+42	62	0.071367
+43	62	0.079533
+44	62	0.10349
+45	62	0.12899
+46	62	0.13543
+47	62	0.13103
+48	62	0.12663
+49	62	0.11617
+50	62	0.10274
+51	62	0.062896
+52	62	0.023416
+53	62	-0.016064
+54	62	-0.057808
+55	62	-0.066632
+56	62	-0.10092
+57	62	-0.13104
+58	62	-0.12724
+59	62	-0.13277
+60	62	-0.13445
+61	62	-0.12779
+62	62	-0.12371
+63	62	-0.11962
+64	62	-0.1225
+65	62	-0.13235
+66	62	-0.15031
+67	62	-0.16746
+68	62	-0.16192
+69	62	-0.14067
+70	62	-0.10934
+71	62	-0.07372
+72	62	-0.038102
+73	62	0.0024277
+74	62	0.039472
+75	62	0.053184
+76	62	0.063311
+77	62	0.090545
+78	62	0.11778
+79	62	0.11845
+80	62	0.11768
+81	62	0.11544
+82	62	0.11926
+83	62	0.13746
+84	62	0.15221
+85	62	0.16696
+86	62	0.21041
+87	62	0.23562
+88	62	0.26149
+89	62	0.29572
+90	62	0.33731
+91	62	0.37889
+92	62	0.42043
+93	62	0.4603
+94	62	0.47875
+95	62	0.49862
+96	62	0.51627
+97	62	0.53393
+98	62	0.55235
+99	62	0.6146
+100	62	0.67274
+101	62	0.71919
+102	62	0.67733
+103	62	0.63417
+104	62	0.59101
+105	62	0.5545
+106	62	0.52349
+107	62	0.48986
+108	62	0.45285
+109	62	0.38331
+110	62	0.36173
+111	62	0.32251
+112	62	0.27483
+113	62	0.23797
+114	62	0.24902
+115	62	0.27783
+116	62	0.30664
+117	62	0.33546
+118	62	0.35419
+119	62	0.32717
+120	62	0.30017
+121	62	0.27255
+122	62	0.24387
+123	62	0.23573
+124	62	0.24714
+125	62	0.25855
+126	62	0.26293
+127	62	0.24004
+128	62	0.18086
+129	62	0.16808
+130	62	0.15626
+131	62	0.14531
+132	62	0.1576
+133	62	0.17792
+134	62	0.20713
+135	62	0.23643
+136	62	0.26357
+137	62	0.29071
+138	62	0.34337
+139	62	0.39962
+140	62	0.45852
+141	62	0.50888
+142	62	0.48332
+143	62	0.44045
+144	62	0.45926
+145	62	0.51432
+146	62	0.56801
+147	62	0.62464
+148	62	0.66772
+149	62	0.71575
+150	62	0.7461
+151	62	0.77349
+152	62	0.86589
+153	62	0.92529
+154	62	0.94317
+155	62	0.9195
+156	62	0.84919
+157	62	0.4958
+158	62	0.38159
+159	62	0.37941
+160	62	0.53037
+161	62	0.64913
+162	62	0.48071
+163	62	0.38996
+164	62	0.46646
+165	62	0.6766
+166	62	0.8161
+167	62	0.79591
+168	62	0.84107
+169	62	0.90589
+170	62	1.1308
+171	62	1.2855
+172	62	0.90041
+173	62	1.3647
+174	62	0.77972
+175	62	0.24241
+176	62	0
+177	62	0
+178	62	0.062099
+179	62	0.043195
+180	62	0
+181	62	0
+182	62	0
+183	62	0
+184	62	0
+185	62	0
+186	62	0
+187	62	0
+188	62	0
+189	62	0
+190	62	0
+191	62	0
+192	62	0
+193	62	0
+194	62	0
+195	62	0.7507
+196	62	0.97577
+197	62	0.68592
+198	62	0.30497
+199	62	0.04206
+200	62	-0.23181
+201	62	-0.60179
+202	62	-1.0202
+203	62	-1.4402
+204	62	-1.791
+205	62	-2.2037
+206	62	-0.27243
+207	62	-0.95067
+208	62	-2.4555
+209	62	-2.9325
+210	62	-5.0398
+211	62	-2.179
+212	62	-6.0813
+213	62	-2.8945
+214	62	-8.6679
+215	62	-8.1497
+216	62	0
+217	62	0
+218	62	0
+219	62	-5.7982
+220	62	-5.6214
+221	62	-3.7104
+222	62	-2.6038
+223	62	-3.074
+224	62	-2.7861
+225	62	-1.8059
+226	62	-1.2857
+227	62	-1.0019
+228	62	-0.82325
+229	62	-0.62568
+230	62	-0.37766
+231	62	-0.25537
+232	62	-0.11782
+233	62	0.031644
+234	62	0.09575
+235	62	0.19151
+236	62	0.32793
+237	62	0.41616
+238	62	0.41892
+239	62	0.47048
+240	62	0.55223
+241	62	0.36904
+242	62	0.16386
+243	62	-0.016523
+244	62	-0.1969
+245	62	-0.51432
+246	62	-0.62972
+247	62	-1.0196
+248	62	-1.4116
+249	62	-1.5493
+250	62	-1.5867
+251	62	-1.5787
+252	62	-1.7164
+253	62	-1.8674
+254	62	-1.987
+255	62	-2.0565
+256	62	-2.1933
+257	62	-2.0072
+258	62	-0.38517
+259	62	-2.4867
+260	62	-2.2856
+261	62	-2.1992
+262	62	-2.1814
+263	62	-2.1417
+264	62	-1.8871
+265	62	-1.4015
+266	62	-0.55875
+267	62	-0.048943
+268	62	-0.033732
+269	62	0
+270	62	0
+271	62	0
+272	62	0
+273	62	0
+274	62	0
+275	62	0
+276	62	0
+277	62	0.016507
+278	62	0
+279	62	0
+280	62	0.052683
+281	62	0.002584
+282	62	0.22287
+283	62	0.27907
+284	62	0.16694
+285	62	0.084806
+286	62	-0.019058
+287	62	-0.05861
+288	62	0.029649
+289	62	0
+290	62	0
+291	62	-0.092031
+292	62	-0.20115
+293	62	-0.26538
+294	62	0
+295	62	-0.018496
+296	62	-0.010905
+297	62	0
+298	62	0
+299	62	0
+300	62	0
+301	62	0
+302	62	0
+303	62	0
+304	62	0
+305	62	0
+306	62	0
+307	62	0
+308	62	0
+309	62	0
+310	62	0
+311	62	0
+312	62	0
+313	62	0
+314	62	0
+315	62	0
+316	62	0
+317	62	0
+318	62	0
+319	62	0
+320	62	0
+321	62	0
+322	62	0
+323	62	0
+324	62	0
+325	62	0
+326	62	0
+327	62	0
+328	62	0
+329	62	0
+330	62	0
+331	62	0
+332	62	0
+333	62	0
+334	62	0
+335	62	0
+336	62	0
+337	62	0
+338	62	0
+339	62	0
+340	62	0
+341	62	0
+342	62	0
+343	62	0
+344	62	0
+345	62	0
+346	62	0
+347	62	0
+348	62	0
+349	62	0
+350	62	0
+351	62	0
+352	62	0
+353	62	0
+354	62	0
+355	62	0
+356	62	0
+357	62	0
+358	62	0
+359	62	0
+360	62	0
+0	62.5	0
+1	62.5	0
+2	62.5	0
+3	62.5	0
+4	62.5	0
+5	62.5	0.017304
+6	62.5	0.4474
+7	62.5	1.3279
+8	62.5	0.79386
+9	62.5	1.309
+10	62.5	1.189
+11	62.5	1.0186
+12	62.5	0.91299
+13	62.5	0.75239
+14	62.5	0.52637
+15	62.5	0.42382
+16	62.5	0.35206
+17	62.5	0.24003
+18	62.5	0.10661
+19	62.5	0
+20	62.5	0
+21	62.5	0.060088
+22	62.5	0.11403
+23	62.5	0.16609
+24	62.5	0.2573
+25	62.5	0.36971
+26	62.5	0.50839
+27	62.5	0.64349
+28	62.5	0.61591
+29	62.5	0.82099
+30	62.5	0.79258
+31	62.5	0.76351
+32	62.5	0.58966
+33	62.5	0.60096
+34	62.5	0.46798
+35	62.5	0.30719
+36	62.5	0.34404
+37	62.5	0.27469
+38	62.5	0.17106
+39	62.5	0.11764
+40	62.5	0.090627
+41	62.5	0.078418
+42	62.5	0.071719
+43	62.5	0.086949
+44	62.5	0.11073
+45	62.5	0.13614
+46	62.5	0.14993
+47	62.5	0.14553
+48	62.5	0.1393
+49	62.5	0.12908
+50	62.5	0.11565
+51	62.5	0.092963
+52	62.5	0.054476
+53	62.5	0.015988
+54	62.5	-0.021151
+55	62.5	-0.055236
+56	62.5	-0.089526
+57	62.5	-0.1169
+58	62.5	-0.125
+59	62.5	-0.10899
+60	62.5	-0.10306
+61	62.5	-0.098976
+62	62.5	-0.094893
+63	62.5	-0.093638
+64	62.5	-0.10006
+65	62.5	-0.10939
+66	62.5	-0.12734
+67	62.5	-0.13173
+68	62.5	-0.12619
+69	62.5	-0.10435
+70	62.5	-0.078909
+71	62.5	-0.043309
+72	62.5	-0.0072773
+73	62.5	0.028754
+74	62.5	0.040495
+75	62.5	0.052483
+76	62.5	0.06011
+77	62.5	0.083939
+78	62.5	0.10507
+79	62.5	0.093203
+80	62.5	0.087222
+81	62.5	0.084986
+82	62.5	0.084902
+83	62.5	0.1023
+84	62.5	0.11705
+85	62.5	0.1318
+86	62.5	0.16472
+87	62.5	0.18939
+88	62.5	0.21615
+89	62.5	0.24147
+90	62.5	0.27951
+91	62.5	0.3211
+92	62.5	0.3626
+93	62.5	0.40298
+94	62.5	0.43544
+95	62.5	0.45309
+96	62.5	0.47075
+97	62.5	0.48841
+98	62.5	0.50606
+99	62.5	0.55852
+100	62.5	0.62381
+101	62.5	0.6633
+102	62.5	0.63991
+103	62.5	0.59675
+104	62.5	0.55359
+105	62.5	0.52057
+106	62.5	0.49068
+107	62.5	0.45725
+108	62.5	0.42361
+109	62.5	0.38619
+110	62.5	0.3385
+111	62.5	0.29082
+112	62.5	0.24313
+113	62.5	0.21333
+114	62.5	0.21428
+115	62.5	0.24309
+116	62.5	0.27191
+117	62.5	0.30072
+118	62.5	0.33562
+119	62.5	0.30751
+120	62.5	0.2805
+121	62.5	0.25286
+122	62.5	0.22769
+123	62.5	0.2391
+124	62.5	0.2505
+125	62.5	0.26191
+126	62.5	0.27167
+127	62.5	0.23508
+128	62.5	0.17204
+129	62.5	0.1449
+130	62.5	0.13309
+131	62.5	0.13014
+132	62.5	0.14244
+133	62.5	0.1571
+134	62.5	0.18631
+135	62.5	0.21819
+136	62.5	0.24542
+137	62.5	0.27256
+138	62.5	0.32753
+139	62.5	0.38402
+140	62.5	0.42018
+141	62.5	0.45165
+142	62.5	0.42732
+143	62.5	0.39147
+144	62.5	0.41306
+145	62.5	0.46707
+146	62.5	0.45701
+147	62.5	0.49981
+148	62.5	0.55738
+149	62.5	0.6056
+150	62.5	0.65785
+151	62.5	0.70376
+152	62.5	0.77781
+153	62.5	0.8161
+154	62.5	0.83543
+155	62.5	0.83281
+156	62.5	0.79533
+157	62.5	0.76504
+158	62.5	0.59798
+159	62.5	0.58363
+160	62.5	0.67186
+161	62.5	0.68536
+162	62.5	0.60508
+163	62.5	0.42125
+164	62.5	0.4927
+165	62.5	0.64839
+166	62.5	0.72156
+167	62.5	0.7214
+168	62.5	0.7637
+169	62.5	0.81846
+170	62.5	0.9849
+171	62.5	1.1068
+172	62.5	1.235
+173	62.5	1.3002
+174	62.5	1.0926
+175	62.5	1.1226
+176	62.5	0.49701
+177	62.5	0.46135
+178	62.5	0.22064
+179	62.5	0.39696
+180	62.5	0
+181	62.5	0
+182	62.5	0
+183	62.5	0
+184	62.5	0
+185	62.5	0
+186	62.5	0
+187	62.5	0
+188	62.5	0
+189	62.5	0
+190	62.5	0
+191	62.5	0
+192	62.5	0
+193	62.5	0
+194	62.5	0
+195	62.5	0.3498
+196	62.5	0.52674
+197	62.5	0.58733
+198	62.5	0.28302
+199	62.5	0.023599
+200	62.5	-0.24442
+201	62.5	-0.58581
+202	62.5	-0.9918
+203	62.5	-1.2914
+204	62.5	-1.5723
+205	62.5	-1.8609
+206	62.5	-1.3438
+207	62.5	-1.3875
+208	62.5	-0.54342
+209	62.5	-1.1491
+210	62.5	-3.8139
+211	62.5	-5.8495
+212	62.5	-5.0755
+213	62.5	-8.0556
+214	62.5	-6.9043
+215	62.5	-2.1836
+216	62.5	-0.32912
+217	62.5	-0.76743
+218	62.5	-0.24318
+219	62.5	-4.1453
+220	62.5	-4.3842
+221	62.5	-3.6505
+222	62.5	-2.6736
+223	62.5	-2.4228
+224	62.5	-2.0672
+225	62.5	-1.3331
+226	62.5	-1.0377
+227	62.5	-0.75309
+228	62.5	-0.63431
+229	62.5	-0.49803
+230	62.5	-0.27468
+231	62.5	-0.15413
+232	62.5	-0.033585
+233	62.5	0.10317
+234	62.5	0.11365
+235	62.5	0.2094
+236	62.5	0.34121
+237	62.5	0.38925
+238	62.5	0.39201
+239	62.5	0.42526
+240	62.5	0.43328
+241	62.5	0.25009
+242	62.5	0.094865
+243	62.5	-0.102
+244	62.5	-0.28238
+245	62.5	-0.47072
+246	62.5	-0.61159
+247	62.5	-0.99491
+248	62.5	-1.442
+249	62.5	-1.6057
+250	62.5	-1.6093
+251	62.5	-1.6289
+252	62.5	-1.7369
+253	62.5	-1.885
+254	62.5	-1.8501
+255	62.5	-2.0058
+256	62.5	-2.1882
+257	62.5	-2.2081
+258	62.5	-0.86449
+259	62.5	-2.3704
+260	62.5	-2.1917
+261	62.5	-2.0497
+262	62.5	-1.9596
+263	62.5	-1.8296
+264	62.5	-1.5209
+265	62.5	-1.1834
+266	62.5	-0.59384
+267	62.5	-0.31369
+268	62.5	-0.068417
+269	62.5	0
+270	62.5	0
+271	62.5	0
+272	62.5	0
+273	62.5	0
+274	62.5	0
+275	62.5	0
+276	62.5	0
+277	62.5	0.012196
+278	62.5	0
+279	62.5	0
+280	62.5	0.036924
+281	62.5	0
+282	62.5	0.0495
+283	62.5	0.088784
+284	62.5	0.016909
+285	62.5	-0.0077587
+286	62.5	-0.016716
+287	62.5	-0.053921
+288	62.5	0
+289	62.5	-0.12972
+290	62.5	0
+291	62.5	-0.43924
+292	62.5	-1.1823
+293	62.5	-1.0943
+294	62.5	0
+295	62.5	-0.022964
+296	62.5	-0.0096615
+297	62.5	0
+298	62.5	0
+299	62.5	0
+300	62.5	0
+301	62.5	0
+302	62.5	0
+303	62.5	0
+304	62.5	0
+305	62.5	0
+306	62.5	0
+307	62.5	0
+308	62.5	0
+309	62.5	0
+310	62.5	0
+311	62.5	0
+312	62.5	0
+313	62.5	0
+314	62.5	0
+315	62.5	0
+316	62.5	0
+317	62.5	0
+318	62.5	0
+319	62.5	0
+320	62.5	0
+321	62.5	0
+322	62.5	0
+323	62.5	0
+324	62.5	0
+325	62.5	0
+326	62.5	0
+327	62.5	0
+328	62.5	0
+329	62.5	0
+330	62.5	0
+331	62.5	0
+332	62.5	0
+333	62.5	0
+334	62.5	0
+335	62.5	0
+336	62.5	0
+337	62.5	0
+338	62.5	0
+339	62.5	0
+340	62.5	0
+341	62.5	0
+342	62.5	0
+343	62.5	0
+344	62.5	0
+345	62.5	0
+346	62.5	0
+347	62.5	0
+348	62.5	0
+349	62.5	0
+350	62.5	0
+351	62.5	0
+352	62.5	0
+353	62.5	0
+354	62.5	0
+355	62.5	0
+356	62.5	0
+357	62.5	0
+358	62.5	0
+359	62.5	0
+360	62.5	0
+0	63	0
+1	63	0
+2	63	0
+3	63	0
+4	63	0
+5	63	0
+6	63	0.10258
+7	63	0.32216
+8	63	0.9769
+9	63	1.0295
+10	63	0.92959
+11	63	1.2753
+12	63	1.2206
+13	63	1.0186
+14	63	0.69473
+15	63	0.50142
+16	63	0.37783
+17	63	0.26547
+18	63	0.15153
+19	63	0.05272
+20	63	0.0065176
+21	63	0.030093
+22	63	0.038868
+23	63	0.067946
+24	63	0.146
+25	63	0.23933
+26	63	0.33738
+27	63	0.4261
+28	63	0.058628
+29	63	0.63136
+30	63	0.69125
+31	63	0.39052
+32	63	0.61156
+33	63	0.41995
+34	63	0.36727
+35	63	0.061402
+36	63	0.28845
+37	63	0.22707
+38	63	0.14478
+39	63	0.10999
+40	63	0.085028
+41	63	0.074105
+42	63	0.070502
+43	63	0.09546
+44	63	0.11942
+45	63	0.14333
+46	63	0.16291
+47	63	0.16003
+48	63	0.15189
+49	63	0.14199
+50	63	0.12788
+51	63	0.10033
+52	63	0.061844
+53	63	0.023356
+54	63	-0.0099656
+55	63	-0.04384
+56	63	-0.076255
+57	63	-0.10276
+58	63	-0.12276
+59	63	-0.10675
+60	63	-0.092946
+61	63	-0.092229
+62	63	-0.091513
+63	63	-0.083462
+64	63	-0.077611
+65	63	-0.086437
+66	63	-0.10154
+67	63	-0.096001
+68	63	-0.09046
+69	63	-0.068338
+70	63	-0.049456
+71	63	-0.018971
+72	63	0.01706
+73	63	0.038324
+74	63	0.041518
+75	63	0.051782
+76	63	0.059409
+77	63	0.077334
+78	63	0.079818
+79	63	0.070244
+80	63	0.058691
+81	63	0.054533
+82	63	0.052297
+83	63	0.067146
+84	63	0.081894
+85	63	0.096641
+86	63	0.1172
+87	63	0.14394
+88	63	0.17081
+89	63	0.19613
+90	63	0.22171
+91	63	0.2633
+92	63	0.30477
+93	63	0.34515
+94	63	0.39002
+95	63	0.41
+96	63	0.42747
+97	63	0.44494
+98	63	0.46241
+99	63	0.5096
+100	63	0.5743
+101	63	0.60742
+102	63	0.60249
+103	63	0.55933
+104	63	0.51654
+105	63	0.48665
+106	63	0.45675
+107	63	0.42463
+108	63	0.391
+109	63	0.35449
+110	63	0.30681
+111	63	0.25912
+112	63	0.21143
+113	63	0.18868
+114	63	0.17954
+115	63	0.20836
+116	63	0.23717
+117	63	0.26598
+118	63	0.30313
+119	63	0.29306
+120	63	0.26084
+121	63	0.23317
+122	63	0.23105
+123	63	0.24246
+124	63	0.25387
+125	63	0.26527
+126	63	0.27668
+127	63	0.22626
+128	63	0.16321
+129	63	0.12173
+130	63	0.10991
+131	63	0.11497
+132	63	0.12727
+133	63	0.13957
+134	63	0.16581
+135	63	0.19808
+136	63	0.22726
+137	63	0.25545
+138	63	0.3117
+139	63	0.36852
+140	63	0.41203
+141	63	0.41131
+142	63	0.38986
+143	63	0.37322
+144	63	0.3859
+145	63	0.41607
+146	63	0.4157
+147	63	0.45879
+148	63	0.51803
+149	63	0.55313
+150	63	0.58298
+151	63	0.65743
+152	63	0.7231
+153	63	0.77071
+154	63	0.79002
+155	63	0.77196
+156	63	0.74056
+157	63	0.72247
+158	63	0.70279
+159	63	0.67944
+160	63	0.67882
+161	63	0.69526
+162	63	0.54462
+163	63	0.47899
+164	63	0.52632
+165	63	0.66332
+166	63	0.65876
+167	63	0.66033
+168	63	0.68666
+169	63	0.73546
+170	63	0.8126
+171	63	0.8866
+172	63	1.0238
+173	63	1.1284
+174	63	1.1959
+175	63	1.3187
+176	63	1.3744
+177	63	1.2261
+178	63	0.41397
+179	63	0.49277
+180	63	0
+181	63	0
+182	63	0
+183	63	0
+184	63	0
+185	63	0
+186	63	0
+187	63	0
+188	63	0
+189	63	0
+190	63	0
+191	63	0.22777
+192	63	0
+193	63	0
+194	63	0
+195	63	0.0064835
+196	63	0.27112
+197	63	0.41002
+198	63	0.21566
+199	63	-0.0071011
+200	63	-0.2354
+201	63	-0.56983
+202	63	-0.9111
+203	63	-1.1076
+204	63	-1.3422
+205	63	-1.596
+206	63	-1.846
+207	63	-1.7204
+208	63	-0.20357
+209	63	-0.19516
+210	63	-1.6588
+211	63	-4.4266
+212	63	-6.0507
+213	63	-6.2838
+214	63	-5.5877
+215	63	-1.2985
+216	63	-3.7974
+217	63	-2.6497
+218	63	-2.4216
+219	63	-2.2066
+220	63	-3.0773
+221	63	-2.4944
+222	63	-1.8013
+223	63	-1.7676
+224	63	-1.4689
+225	63	-1.0575
+226	63	-0.77061
+227	63	-0.57065
+228	63	-0.466
+229	63	-0.36341
+230	63	-0.17344
+231	63	-0.052889
+232	63	0.067658
+233	63	0.17246
+234	63	0.17725
+235	63	0.2273
+236	63	0.35449
+237	63	0.36234
+238	63	0.3651
+239	63	0.38003
+240	63	0.31432
+241	63	0.22141
+242	63	0.1116
+243	63	-0.078193
+244	63	-0.28004
+245	63	-0.47028
+246	63	-0.66509
+247	63	-1.0637
+248	63	-1.4736
+249	63	-1.5702
+250	63	-1.5677
+251	63	-1.5871
+252	63	-1.6955
+253	63	-1.8237
+254	63	-1.6767
+255	63	-1.8709
+256	63	-2.0734
+257	63	-2.1903
+258	63	-1.9103
+259	63	-2.1756
+260	63	-1.9902
+261	63	-1.7642
+262	63	-1.7053
+263	63	-1.5604
+264	63	-1.271
+265	63	-0.99891
+266	63	-0.72791
+267	63	-0.46678
+268	63	-0.13513
+269	63	-0.0082817
+270	63	0
+271	63	0
+272	63	0
+273	63	0
+274	63	0.012683
+275	63	0.028629
+276	63	0
+277	63	0
+278	63	0
+279	63	0
+280	63	0
+281	63	0
+282	63	-0.0015291
+283	63	0
+284	63	0
+285	63	0
+286	63	0
+287	63	-0.0019275
+288	63	0
+289	63	-0.46154
+290	63	-0.43758
+291	63	-0.4399
+292	63	-0.56031
+293	63	-0.044043
+294	63	-0.54226
+295	63	-0.18847
+296	63	0
+297	63	0
+298	63	0
+299	63	0
+300	63	0
+301	63	0
+302	63	0
+303	63	0
+304	63	0
+305	63	0
+306	63	0
+307	63	0
+308	63	0
+309	63	0
+310	63	0
+311	63	0
+312	63	0
+313	63	0
+314	63	0
+315	63	0
+316	63	0
+317	63	0
+318	63	0
+319	63	0
+320	63	0
+321	63	0
+322	63	0
+323	63	0
+324	63	0
+325	63	0
+326	63	0
+327	63	0
+328	63	0
+329	63	0
+330	63	0
+331	63	0
+332	63	0
+333	63	0
+334	63	0
+335	63	0
+336	63	0
+337	63	0
+338	63	0
+339	63	-0.071982
+340	63	-0.11751
+341	63	0
+342	63	0
+343	63	0
+344	63	0
+345	63	0
+346	63	0
+347	63	0
+348	63	0
+349	63	0
+350	63	0
+351	63	0
+352	63	0
+353	63	0
+354	63	0
+355	63	0
+356	63	0
+357	63	0
+358	63	0
+359	63	0
+360	63	0
+0	63.5	0
+1	63.5	0
+2	63.5	0
+3	63.5	0
+4	63.5	0
+5	63.5	0
+6	63.5	0
+7	63.5	0
+8	63.5	0.093516
+9	63.5	0.44484
+10	63.5	0.16098
+11	63.5	1.4761
+12	63.5	1.5074
+13	63.5	1.2853
+14	63.5	0.89279
+15	63.5	0.5999
+16	63.5	0.41402
+17	63.5	0.27884
+18	63.5	0.18563
+19	63.5	0.12222
+20	63.5	0.025116
+21	63.5	0.0070731
+22	63.5	-4.6216e-05
+23	63.5	-0.01352
+24	63.5	0.040851
+25	63.5	0.12373
+26	63.5	0.17616
+27	63.5	0.25807
+28	63.5	0.16941
+29	63.5	0.37297
+30	63.5	0.51027
+31	63.5	0.028484
+32	63.5	0.47382
+33	63.5	0.3666
+34	63.5	0.2277
+35	63.5	0.16643
+36	63.5	0.1946
+37	63.5	0.14503
+38	63.5	0.11119
+39	63.5	0.093268
+40	63.5	0.080765
+41	63.5	0.070035
+42	63.5	0.074815
+43	63.5	0.10569
+44	63.5	0.12908
+45	63.5	0.15068
+46	63.5	0.16978
+47	63.5	0.1741
+48	63.5	0.16448
+49	63.5	0.15485
+50	63.5	0.13868
+51	63.5	0.1077
+52	63.5	0.069212
+53	63.5	0.030795
+54	63.5	0.0012195
+55	63.5	-0.032444
+56	63.5	-0.062114
+57	63.5	-0.088615
+58	63.5	-0.11512
+59	63.5	-0.10419
+60	63.5	-0.090798
+61	63.5	-0.089039
+62	63.5	-0.088323
+63	63.5	-0.07341
+64	63.5	-0.063707
+65	63.5	-0.06399
+66	63.5	-0.065813
+67	63.5	-0.060272
+68	63.5	-0.05473
+69	63.5	-0.039061
+70	63.5	-0.020003
+71	63.5	0.0053661
+72	63.5	0.041398
+73	63.5	0.046095
+74	63.5	0.045675
+75	63.5	0.051276
+76	63.5	0.058708
+77	63.5	0.066434
+78	63.5	0.061775
+79	63.5	0.057583
+80	63.5	0.036205
+81	63.5	0.028324
+82	63.5	0.022823
+83	63.5	0.032512
+84	63.5	0.047872
+85	63.5	0.063231
+86	63.5	0.075013
+87	63.5	0.098504
+88	63.5	0.12547
+89	63.5	0.15079
+90	63.5	0.17611
+91	63.5	0.2055
+92	63.5	0.24694
+93	63.5	0.28981
+94	63.5	0.3383
+95	63.5	0.36859
+96	63.5	0.38606
+97	63.5	0.40353
+98	63.5	0.42328
+99	63.5	0.46067
+100	63.5	0.51842
+101	63.5	0.55154
+102	63.5	0.56507
+103	63.5	0.52191
+104	63.5	0.48262
+105	63.5	0.45272
+106	63.5	0.42283
+107	63.5	0.39202
+108	63.5	0.35839
+109	63.5	0.32097
+110	63.5	0.27511
+111	63.5	0.22742
+112	63.5	0.18023
+113	63.5	0.16403
+114	63.5	0.14783
+115	63.5	0.17362
+116	63.5	0.20243
+117	63.5	0.23125
+118	63.5	0.27064
+119	63.5	0.28073
+120	63.5	0.24426
+121	63.5	0.22301
+122	63.5	0.23442
+123	63.5	0.23823
+124	63.5	0.24058
+125	63.5	0.24293
+126	63.5	0.24422
+127	63.5	0.21401
+128	63.5	0.15438
+129	63.5	0.098552
+130	63.5	0.087512
+131	63.5	0.099809
+132	63.5	0.11211
+133	63.5	0.1244
+134	63.5	0.1457
+135	63.5	0.17796
+136	63.5	0.20911
+137	63.5	0.23962
+138	63.5	0.29603
+139	63.5	0.35302
+140	63.5	0.40387
+141	63.5	0.40459
+142	63.5	0.38759
+143	63.5	0.37136
+144	63.5	0.38091
+145	63.5	0.37455
+146	63.5	0.38669
+147	63.5	0.42102
+148	63.5	0.47869
+149	63.5	0.51395
+150	63.5	0.54797
+151	63.5	0.61118
+152	63.5	0.6684
+153	63.5	0.72531
+154	63.5	0.74462
+155	63.5	0.71577
+156	63.5	0.68944
+157	63.5	0.67272
+158	63.5	0.65892
+159	63.5	0.65117
+160	63.5	0.65127
+161	63.5	0.64932
+162	63.5	0.5895
+163	63.5	0.53672
+164	63.5	0.56048
+165	63.5	0.60101
+166	63.5	0.60185
+167	63.5	0.59925
+168	63.5	0.60962
+169	63.5	0.66439
+170	63.5	0.69181
+171	63.5	0.73335
+172	63.5	0.8916
+173	63.5	1.0084
+174	63.5	1.0708
+175	63.5	1.2104
+176	63.5	1.3272
+177	63.5	1.3049
+178	63.5	0.89
+179	63.5	0.42355
+180	63.5	0
+181	63.5	0
+182	63.5	0
+183	63.5	0
+184	63.5	0
+185	63.5	0
+186	63.5	0
+187	63.5	0.0041347
+188	63.5	0
+189	63.5	0
+190	63.5	0.10186
+191	63.5	0.19607
+192	63.5	0
+193	63.5	0
+194	63.5	0
+195	63.5	0
+196	63.5	0
+197	63.5	0.18462
+198	63.5	0.11213
+199	63.5	-0.032323
+200	63.5	-0.20016
+201	63.5	-0.54035
+202	63.5	-0.73182
+203	63.5	-0.87452
+204	63.5	-1.0776
+205	63.5	-1.3326
+206	63.5	-1.569
+207	63.5	-1.6883
+208	63.5	-0.49325
+209	63.5	-0.62104
+210	63.5	-1.1011
+211	63.5	-3.6779
+212	63.5	-4.6945
+213	63.5	-2.0026
+214	63.5	-1.3941
+215	63.5	-1.5477
+216	63.5	-3.8488
+217	63.5	-3.5518
+218	63.5	-3.0493
+219	63.5	-1.6424
+220	63.5	-1.7467
+221	63.5	-1.3548
+222	63.5	-1.2292
+223	63.5	-1.1123
+224	63.5	-0.93226
+225	63.5	-0.78813
+226	63.5	-0.50128
+227	63.5	-0.4273
+228	63.5	-0.33992
+229	63.5	-0.19975
+230	63.5	-0.080668
+231	63.5	0.02801
+232	63.5	0.13669
+233	63.5	0.17674
+234	63.5	0.22741
+235	63.5	0.25133
+236	63.5	0.33266
+237	63.5	0.33542
+238	63.5	0.33819
+239	63.5	0.34095
+240	63.5	0.27245
+241	63.5	0.19506
+242	63.5	0.083963
+243	63.5	-0.049408
+244	63.5	-0.25125
+245	63.5	-0.45845
+246	63.5	-0.73802
+247	63.5	-1.1367
+248	63.5	-1.5373
+249	63.5	-1.5303
+250	63.5	-1.526
+251	63.5	-1.5446
+252	63.5	-1.5746
+253	63.5	-1.602
+254	63.5	-1.4711
+255	63.5	-1.5839
+256	63.5	-1.8333
+257	63.5	-2.033
+258	63.5	-2.1471
+259	63.5	-1.9675
+260	63.5	-1.7251
+261	63.5	-1.5047
+262	63.5	-1.451
+263	63.5	-1.2731
+264	63.5	-1.0575
+265	63.5	-0.79432
+266	63.5	-0.55764
+267	63.5	-0.34613
+268	63.5	-0.163
+269	63.5	-0.080857
+270	63.5	-0.015884
+271	63.5	0.0040461
+272	63.5	0
+273	63.5	0
+274	63.5	0.043442
+275	63.5	0.1024
+276	63.5	0.0042368
+277	63.5	0.05933
+278	63.5	0.010042
+279	63.5	0
+280	63.5	0
+281	63.5	0
+282	63.5	-0.048392
+283	63.5	-0.0069282
+284	63.5	0
+285	63.5	0
+286	63.5	0
+287	63.5	0
+288	63.5	0
+289	63.5	-0.93174
+290	63.5	-1.0339
+291	63.5	-0.7
+292	63.5	-0.34663
+293	63.5	-0.71918
+294	63.5	-0.86799
+295	63.5	-0.043889
+296	63.5	0
+297	63.5	0
+298	63.5	0
+299	63.5	0
+300	63.5	0
+301	63.5	0
+302	63.5	0
+303	63.5	0
+304	63.5	0
+305	63.5	0
+306	63.5	0
+307	63.5	0
+308	63.5	0
+309	63.5	0
+310	63.5	0
+311	63.5	0
+312	63.5	0
+313	63.5	0
+314	63.5	0
+315	63.5	0
+316	63.5	0
+317	63.5	0
+318	63.5	0
+319	63.5	0
+320	63.5	0
+321	63.5	0
+322	63.5	0
+323	63.5	0
+324	63.5	0
+325	63.5	0
+326	63.5	0
+327	63.5	0
+328	63.5	0
+329	63.5	0
+330	63.5	0
+331	63.5	0
+332	63.5	0
+333	63.5	0
+334	63.5	0
+335	63.5	0
+336	63.5	0
+337	63.5	0
+338	63.5	0
+339	63.5	-0.39046
+340	63.5	-0.24712
+341	63.5	-0.25612
+342	63.5	-0.55907
+343	63.5	0
+344	63.5	0
+345	63.5	0
+346	63.5	0
+347	63.5	0
+348	63.5	0
+349	63.5	0
+350	63.5	0
+351	63.5	0
+352	63.5	0
+353	63.5	0
+354	63.5	0
+355	63.5	0
+356	63.5	0
+357	63.5	0
+358	63.5	0
+359	63.5	0
+360	63.5	0
+0	64	0
+1	64	0
+2	64	0
+3	64	0
+4	64	0
+5	64	0
+6	64	0
+7	64	0
+8	64	0
+9	64	0
+10	64	0
+11	64	1.3067
+12	64	1.7946
+13	64	1.7715
+14	64	1.2994
+15	64	0.76504
+16	64	0.44465
+17	64	0.29218
+18	64	0.17058
+19	64	0.12835
+20	64	0.030696
+21	64	0.00065505
+22	64	-0.00040189
+23	64	-0.00091433
+24	64	-0.032497
+25	64	-0.012267
+26	64	0.054399
+27	64	0.11468
+28	64	0.19467
+29	64	0.081752
+30	64	0.33312
+31	64	0.09552
+32	64	0.38304
+33	64	0.36141
+34	64	0.26604
+35	64	0.17802
+36	64	0.090041
+37	64	0.039191
+38	64	0.015268
+39	64	0.075028
+40	64	0.07068
+41	64	0.075054
+42	64	0.089639
+43	64	0.11552
+44	64	0.1396
+45	64	0.16479
+46	64	0.17847
+47	64	0.18626
+48	64	0.17635
+49	64	0.1657
+50	64	0.14948
+51	64	0.11507
+52	64	0.076581
+53	64	0.041981
+54	64	0.012376
+55	64	-0.021706
+56	64	-0.048584
+57	64	-0.074922
+58	64	-0.10126
+59	64	-0.10067
+60	64	-0.088947
+61	64	-0.085849
+62	64	-0.08213
+63	64	-0.063359
+64	64	-0.050688
+65	64	-0.04688
+66	64	-0.037934
+67	64	-0.033742
+68	64	-0.02955
+69	64	-0.0097852
+70	64	0.0094496
+71	64	0.030404
+72	64	0.059399
+73	64	0.054179
+74	64	0.05247
+75	64	0.05647
+76	64	0.063514
+77	64	0.063753
+78	64	0.049114
+79	64	0.043203
+80	64	0.017666
+81	64	0.0034572
+82	64	-0.0036546
+83	64	0.00094448
+84	64	0.016304
+85	64	0.031664
+86	64	0.03972
+87	64	0.05589
+88	64	0.080047
+89	64	0.10545
+90	64	0.13077
+91	64	0.15609
+92	64	0.18912
+93	64	0.23929
+94	64	0.28657
+95	64	0.32719
+96	64	0.34466
+97	64	0.36213
+98	64	0.38506
+99	64	0.41175
+100	64	0.46253
+101	64	0.49565
+102	64	0.52765
+103	64	0.48449
+104	64	0.44869
+105	64	0.4188
+106	64	0.3889
+107	64	0.35901
+108	64	0.32577
+109	64	0.28717
+110	64	0.24341
+111	64	0.19573
+112	64	0.15559
+113	64	0.13938
+114	64	0.12318
+115	64	0.13888
+116	64	0.1677
+117	64	0.19844
+118	64	0.23814
+119	64	0.2684
+120	64	0.23193
+121	64	0.19251
+122	64	0.19486
+123	64	0.19721
+124	64	0.19956
+125	64	0.20191
+126	64	0.19797
+127	64	0.17458
+128	64	0.1364
+129	64	0.082511
+130	64	0.072347
+131	64	0.084644
+132	64	0.091688
+133	64	0.092584
+134	64	0.12286
+135	64	0.15785
+136	64	0.19012
+137	64	0.22378
+138	64	0.28053
+139	64	0.33752
+140	64	0.39451
+141	64	0.39359
+142	64	0.38531
+143	64	0.36951
+144	64	0.37905
+145	64	0.34818
+146	64	0.3585
+147	64	0.39283
+148	64	0.43934
+149	64	0.47489
+150	64	0.51305
+151	64	0.55689
+152	64	0.61369
+153	64	0.67091
+154	64	0.69645
+155	64	0.64514
+156	64	0.66615
+157	64	0.64628
+158	64	0.62746
+159	64	0.61789
+160	64	0.61395
+161	64	0.59733
+162	64	0.58628
+163	64	0.56413
+164	64	0.5465
+165	64	0.54406
+166	64	0.55511
+167	64	0.55396
+168	64	0.5651
+169	64	0.64079
+170	64	0.63015
+171	64	0.66041
+172	64	0.77371
+173	64	0.87001
+174	64	0.95005
+175	64	1.0664
+176	64	1.1504
+177	64	1.18
+178	64	0.9472
+179	64	0.34245
+180	64	0
+181	64	0
+182	64	0
+183	64	0
+184	64	0
+185	64	0
+186	64	0
+187	64	0.025375
+188	64	0
+189	64	0
+190	64	0.030968
+191	64	0
+192	64	0
+193	64	0
+194	64	0
+195	64	-0.0037461
+196	64	0
+197	64	0.063051
+198	64	0.020623
+199	64	-0.039349
+200	64	-0.1643
+201	64	-0.4215
+202	64	-0.5306
+203	64	-0.6414
+204	64	-0.81298
+205	64	-1.0568
+206	64	-1.2755
+207	64	-1.3824
+208	64	-0.84435
+209	64	-1.0469
+210	64	-1.8973
+211	64	-2.7965
+212	64	-3.6093
+213	64	-0.24728
+214	64	-0.37611
+215	64	-1.9595
+216	64	-3.078
+217	64	-2.9072
+218	64	-2.3886
+219	64	-1.6193
+220	64	-1.2078
+221	64	-1.1271
+222	64	-1.0063
+223	64	-0.8454
+224	64	-0.673
+225	64	-0.5188
+226	64	-0.34055
+227	64	-0.28394
+228	64	-0.21384
+229	64	-0.087455
+230	64	-0.02033
+231	64	0.088348
+232	64	0.17931
+233	64	0.18366
+234	64	0.22218
+235	64	0.27897
+236	64	0.29492
+237	64	0.29089
+238	64	0.28687
+239	64	0.28284
+240	64	0.2461
+241	64	0.16871
+242	64	0.05633
+243	64	-0.063131
+244	64	-0.22247
+245	64	-0.42711
+246	64	-0.63794
+247	64	-1.0132
+248	64	-1.3604
+249	64	-1.502
+250	64	-1.4843
+251	64	-1.5021
+252	64	-1.4933
+253	64	-1.374
+254	64	-1.2655
+255	64	-1.3605
+256	64	-1.5411
+257	64	-1.7504
+258	64	-1.8423
+259	64	-1.6955
+260	64	-1.4725
+261	64	-1.2586
+262	64	-1.175
+263	64	-0.98525
+264	64	-0.77764
+265	64	-0.56392
+266	64	-0.36569
+267	64	-0.18062
+268	64	-0.083787
+269	64	-0.022859
+270	64	0.023886
+271	64	0.051103
+272	64	0.014734
+273	64	0
+274	64	0.074379
+275	64	0.21549
+276	64	0.18906
+277	64	0.14198
+278	64	0.032056
+279	64	0
+280	64	0
+281	64	0
+282	64	-0.1393
+283	64	-0.11609
+284	64	0
+285	64	0
+286	64	-0.020387
+287	64	-0.39888
+288	64	-0.76065
+289	64	-1.4263
+290	64	-1.4947
+291	64	-1.2102
+292	64	-1.0016
+293	64	-1.4962
+294	64	-0.083345
+295	64	0
+296	64	0
+297	64	0
+298	64	0
+299	64	0
+300	64	0
+301	64	0
+302	64	0
+303	64	0
+304	64	0
+305	64	0
+306	64	0
+307	64	0
+308	64	0
+309	64	0
+310	64	0
+311	64	0
+312	64	0
+313	64	0
+314	64	0
+315	64	0
+316	64	0
+317	64	0
+318	64	0
+319	64	0
+320	64	0
+321	64	0
+322	64	0
+323	64	0
+324	64	0
+325	64	0
+326	64	0
+327	64	0
+328	64	0
+329	64	0
+330	64	0
+331	64	0
+332	64	0
+333	64	0
+334	64	0
+335	64	0
+336	64	0
+337	64	0
+338	64	0
+339	64	-1.1075
+340	64	-0.14666
+341	64	-2.0333
+342	64	-0.98033
+343	64	-0.14666
+344	64	0
+345	64	0
+346	64	0
+347	64	0
+348	64	0
+349	64	0
+350	64	0
+351	64	0
+352	64	0
+353	64	0
+354	64	0
+355	64	0
+356	64	0
+357	64	0
+358	64	0
+359	64	0
+360	64	0
+0	64.5	0
+1	64.5	0
+2	64.5	0
+3	64.5	0
+4	64.5	0
+5	64.5	0
+6	64.5	0
+7	64.5	0
+8	64.5	0
+9	64.5	0
+10	64.5	0
+11	64.5	1.2053
+12	64.5	1.8002
+13	64.5	2.1795
+14	64.5	1.643
+15	64.5	0.953
+16	64.5	0.5374
+17	64.5	0.32657
+18	64.5	0.1662
+19	64.5	0.11265
+20	64.5	0.039982
+21	64.5	-0.0019564
+22	64.5	-0.0004969
+23	64.5	0
+24	64.5	-0.029961
+25	64.5	-0.0085789
+26	64.5	-0.056249
+27	64.5	-0.0082037
+28	64.5	0.057302
+29	64.5	0.013206
+30	64.5	0.15848
+31	64.5	0.18023
+32	64.5	0.30514
+33	64.5	0.26755
+34	64.5	0.19562
+35	64.5	0.10218
+36	64.5	0.037548
+37	64.5	0
+38	64.5	0.004755
+39	64.5	0.059762
+40	64.5	0.04539
+41	64.5	0.088163
+42	64.5	0.1168
+43	64.5	0.13738
+44	64.5	0.15736
+45	64.5	0.17786
+46	64.5	0.18893
+47	64.5	0.19743
+48	64.5	0.18764
+49	64.5	0.17585
+50	64.5	0.15998
+51	64.5	0.12243
+52	64.5	0.083949
+53	64.5	0.053166
+54	64.5	0.023523
+55	64.5	-0.014149
+56	64.5	-0.036231
+57	64.5	-0.06257
+58	64.5	-0.088895
+59	64.5	-0.097141
+60	64.5	-0.087097
+61	64.5	-0.082659
+62	64.5	-0.07163
+63	64.5	-0.053307
+64	64.5	-0.039295
+65	64.5	-0.031115
+66	64.5	-0.014499
+67	64.5	-0.010307
+68	64.5	-0.0026181
+69	64.5	0.017965
+70	64.5	0.038903
+71	64.5	0.059857
+72	64.5	0.06895
+73	64.5	0.064033
+74	64.5	0.059544
+75	64.5	0.061664
+76	64.5	0.068606
+77	64.5	0.070595
+78	64.5	0.036453
+79	64.5	0.024664
+80	64.5	-0.00087387
+81	64.5	-0.021409
+82	64.5	-0.0319
+83	64.5	-0.03057
+84	64.5	-0.015263
+85	64.5	9.7255e-05
+86	64.5	0.0046728
+87	64.5	0.017837
+88	64.5	0.036767
+89	64.5	0.064151
+90	64.5	0.091003
+91	64.5	0.11785
+92	64.5	0.1432
+93	64.5	0.18876
+94	64.5	0.23484
+95	64.5	0.27902
+96	64.5	0.30325
+97	64.5	0.3219
+98	64.5	0.34685
+99	64.5	0.37179
+100	64.5	0.40665
+101	64.5	0.43977
+102	64.5	0.47289
+103	64.5	0.44707
+104	64.5	0.41477
+105	64.5	0.38487
+106	64.5	0.35498
+107	64.5	0.32508
+108	64.5	0.2921
+109	64.5	0.25337
+110	64.5	0.21172
+111	64.5	0.16403
+112	64.5	0.13094
+113	64.5	0.11473
+114	64.5	0.09853
+115	64.5	0.10414
+116	64.5	0.13296
+117	64.5	0.16595
+118	64.5	0.20565
+119	64.5	0.24535
+120	64.5	0.2196
+121	64.5	0.17857
+122	64.5	0.15384
+123	64.5	0.15619
+124	64.5	0.15854
+125	64.5	0.16089
+126	64.5	0.15171
+127	64.5	0.13103
+128	64.5	0.096964
+129	64.5	0.058786
+130	64.5	0.044179
+131	64.5	0.045075
+132	64.5	0.045971
+133	64.5	0.046867
+134	64.5	0.097247
+135	64.5	0.13336
+136	64.5	0.16947
+137	64.5	0.20805
+138	64.5	0.26544
+139	64.5	0.32439
+140	64.5	0.37799
+141	64.5	0.38183
+142	64.5	0.3792
+143	64.5	0.36765
+144	64.5	0.35485
+145	64.5	0.3213
+146	64.5	0.33661
+147	64.5	0.36464
+148	64.5	0.39999
+149	64.5	0.44039
+150	64.5	0.48747
+151	64.5	0.51306
+152	64.5	0.56749
+153	64.5	0.62191
+154	64.5	0.6197
+155	64.5	0.55926
+156	64.5	0.63004
+157	64.5	0.63256
+158	64.5	0.61376
+159	64.5	0.59682
+160	64.5	0.55548
+161	64.5	0.54199
+162	64.5	0.53858
+163	64.5	0.51643
+164	64.5	0.49273
+165	64.5	0.48903
+166	64.5	0.5047
+167	64.5	0.51028
+168	64.5	0.54279
+169	64.5	0.58781
+170	64.5	0.57717
+171	64.5	0.58919
+172	64.5	0.67985
+173	64.5	0.75062
+174	64.5	0.82172
+175	64.5	0.91919
+176	64.5	0.97333
+177	64.5	0.99014
+178	64.5	0.73421
+179	64.5	0.0066022
+180	64.5	0
+181	64.5	0
+182	64.5	0
+183	64.5	0
+184	64.5	0
+185	64.5	0.0023995
+186	64.5	0.046556
+187	64.5	0.012745
+188	64.5	0
+189	64.5	0
+190	64.5	0
+191	64.5	0
+192	64.5	0
+193	64.5	0
+194	64.5	-0.0090944
+195	64.5	0.025562
+196	64.5	0.13155
+197	64.5	0.071129
+198	64.5	0.066012
+199	64.5	0.023824
+200	64.5	-0.14274
+201	64.5	-0.30248
+202	64.5	-0.44945
+203	64.5	-0.47167
+204	64.5	-0.54697
+205	64.5	-0.8328
+206	64.5	-1.0681
+207	64.5	-1.0999
+208	64.5	-1.1835
+209	64.5	-1.4372
+210	64.5	-1.7118
+211	64.5	-2.0881
+212	64.5	-2.3205
+213	64.5	-0.75804
+214	64.5	-0.90442
+215	64.5	-1.2194
+216	64.5	-2.327
+217	64.5	-2.2626
+218	64.5	-1.7279
+219	64.5	-1.1462
+220	64.5	-0.98
+221	64.5	-0.89333
+222	64.5	-0.78166
+223	64.5	-0.62254
+224	64.5	-0.44437
+225	64.5	-0.25381
+226	64.5	-0.1972
+227	64.5	-0.14059
+228	64.5	-0.083982
+229	64.5	-0.015651
+230	64.5	0.040008
+231	64.5	0.14869
+232	64.5	0.18623
+233	64.5	0.19057
+234	64.5	0.21696
+235	64.5	0.26363
+236	64.5	0.22832
+237	64.5	0.22492
+238	64.5	0.22089
+239	64.5	0.21686
+240	64.5	0.22786
+241	64.5	0.14236
+242	64.5	0.028696
+243	64.5	-0.090765
+244	64.5	-0.20554
+245	64.5	-0.34553
+246	64.5	-0.44267
+247	64.5	-0.7772
+248	64.5	-1.0697
+249	64.5	-1.1839
+250	64.5	-1.3333
+251	64.5	-1.2957
+252	64.5	-1.2503
+253	64.5	-1.1449
+254	64.5	-1.0598
+255	64.5	-1.154
+256	64.5	-1.2507
+257	64.5	-1.4555
+258	64.5	-1.4968
+259	64.5	-1.3859
+260	64.5	-1.226
+261	64.5	-1.0214
+262	64.5	-0.88561
+263	64.5	-0.69722
+264	64.5	-0.50634
+265	64.5	-0.35158
+266	64.5	-0.16319
+267	64.5	-0.010956
+268	64.5	0.077799
+269	64.5	0.15407
+270	64.5	0.19823
+271	64.5	0.2146
+272	64.5	0.19728
+273	64.5	0.029473
+274	64.5	0.065788
+275	64.5	0.24451
+276	64.5	0.19555
+277	64.5	0.1315
+278	64.5	0.017343
+279	64.5	0
+280	64.5	0
+281	64.5	0
+282	64.5	-0.22539
+283	64.5	-0.58758
+284	64.5	-0.12681
+285	64.5	-0.0076425
+286	64.5	-0.12566
+287	64.5	-0.81041
+288	64.5	-1.5008
+289	64.5	-0.57105
+290	64.5	-1.8275
+291	64.5	-1.8602
+292	64.5	-1.7268
+293	64.5	-1.7053
+294	64.5	-0.0055136
+295	64.5	-0.00099978
+296	64.5	0
+297	64.5	0
+298	64.5	0
+299	64.5	0
+300	64.5	0
+301	64.5	0
+302	64.5	0
+303	64.5	0
+304	64.5	0
+305	64.5	0
+306	64.5	0
+307	64.5	0
+308	64.5	0
+309	64.5	0
+310	64.5	0
+311	64.5	0
+312	64.5	0
+313	64.5	0
+314	64.5	0
+315	64.5	0
+316	64.5	0
+317	64.5	0
+318	64.5	0
+319	64.5	0
+320	64.5	0
+321	64.5	0
+322	64.5	0
+323	64.5	0
+324	64.5	0
+325	64.5	0
+326	64.5	0
+327	64.5	0
+328	64.5	0
+329	64.5	0
+330	64.5	0
+331	64.5	0
+332	64.5	0
+333	64.5	0
+334	64.5	0
+335	64.5	0
+336	64.5	0
+337	64.5	0
+338	64.5	-0.80467
+339	64.5	-2.1231
+340	64.5	-0.38299
+341	64.5	-0.89548
+342	64.5	-0.15707
+343	64.5	-0.043563
+344	64.5	0
+345	64.5	0
+346	64.5	0
+347	64.5	0
+348	64.5	0
+349	64.5	0
+350	64.5	0
+351	64.5	0
+352	64.5	0
+353	64.5	0
+354	64.5	0
+355	64.5	0
+356	64.5	0
+357	64.5	0
+358	64.5	0
+359	64.5	0
+360	64.5	0
+0	65	0
+1	65	0
+2	65	0
+3	65	0
+4	65	0
+5	65	0
+6	65	0
+7	65	0
+8	65	0
+9	65	0
+10	65	0
+11	65	0.2424
+12	65	1.4182
+13	65	2.3095
+14	65	1.9247
+15	65	1.2315
+16	65	0.5811
+17	65	0.33032
+18	65	0.17045
+19	65	0.090747
+20	65	0.031716
+21	65	-0.0061575
+22	65	0
+23	65	0
+24	65	0
+25	65	-0.020106
+26	65	-0.10911
+27	65	-0.081783
+28	65	-0.060987
+29	65	-0.010542
+30	65	0.049812
+31	65	0.12461
+32	65	0.19311
+33	65	0.16252
+34	65	0.13843
+35	65	0.053075
+36	65	0
+37	65	0
+38	65	0
+39	65	0.032272
+40	65	0.037183
+41	65	0.10127
+42	65	0.14289
+43	65	0.15722
+44	65	0.17903
+45	65	0.19093
+46	65	0.19925
+47	65	0.20946
+48	65	0.19897
+49	65	0.18542
+50	65	0.16098
+51	65	0.12284
+52	65	0.089008
+53	65	0.057031
+54	65	0.029249
+55	65	-0.0065913
+56	65	-0.029044
+57	65	-0.050217
+58	65	-0.07286
+59	65	-0.088766
+60	65	-0.085246
+61	65	-0.079469
+62	65	-0.06113
+63	65	-0.043255
+64	65	-0.028372
+65	65	-0.01535
+66	65	-0.00052129
+67	65	0.013127
+68	65	0.024806
+69	65	0.045191
+70	65	0.053528
+71	65	0.073887
+72	65	0.085544
+73	65	0.077377
+74	65	0.066482
+75	65	0.067253
+76	65	0.072873
+77	65	0.061496
+78	65	0.033686
+79	65	0.0060621
+80	65	-0.01952
+81	65	-0.045649
+82	65	-0.059465
+83	65	-0.057309
+84	65	-0.04683
+85	65	-0.034644
+86	65	-0.030374
+87	65	-0.020216
+88	65	0.0017724
+89	65	0.032134
+90	65	0.060421
+91	65	0.087274
+92	65	0.11155
+93	65	0.13824
+94	65	0.18312
+95	65	0.2273
+96	65	0.26185
+97	65	0.28368
+98	65	0.30988
+99	65	0.3418
+100	65	0.35574
+101	65	0.38389
+102	65	0.41701
+103	65	0.41074
+104	65	0.38085
+105	65	0.35095
+106	65	0.32105
+107	65	0.29111
+108	65	0.25837
+109	65	0.21957
+110	65	0.18002
+111	65	0.13233
+112	65	0.10629
+113	65	0.090087
+114	65	0.073882
+115	65	0.069407
+116	65	0.09822
+117	65	0.13346
+118	65	0.17316
+119	65	0.21286
+120	65	0.20727
+121	65	0.16508
+122	65	0.12246
+123	65	0.11518
+124	65	0.11752
+125	65	0.11987
+126	65	0.10546
+127	65	0.084771
+128	65	0.057531
+129	65	0.019352
+130	65	-0.0015384
+131	65	-0.00064238
+132	65	0.00025369
+133	65	0.018952
+134	65	0.071634
+135	65	0.10775
+136	65	0.14386
+137	65	0.19652
+138	65	0.25546
+139	65	0.31441
+140	65	0.35827
+141	65	0.36421
+142	65	0.36567
+143	65	0.36152
+144	65	0.32436
+145	65	0.31635
+146	65	0.34761
+147	65	0.36952
+148	65	0.39108
+149	65	0.41802
+150	65	0.45709
+151	65	0.47593
+152	65	0.52366
+153	65	0.57808
+154	65	0.53131
+155	65	0.50398
+156	65	0.57476
+157	65	0.61884
+158	65	0.60007
+159	65	0.55741
+160	65	0.49438
+161	65	0.48936
+162	65	0.48616
+163	65	0.46873
+164	65	0.44427
+165	65	0.43863
+166	65	0.45429
+167	65	0.46659
+168	65	0.51418
+169	65	0.5423
+170	65	0.52948
+171	65	0.5221
+172	65	0.59745
+173	65	0.64414
+174	65	0.71022
+175	65	0.76931
+176	65	0.82142
+177	65	0.84019
+178	65	0.49096
+179	65	0.1802
+180	65	0.058824
+181	65	0
+182	65	0
+183	65	0
+184	65	0.029028
+185	65	0.082224
+186	65	0.098717
+187	65	0.053062
+188	65	0.020788
+189	65	0
+190	65	0
+191	65	0
+192	65	0
+193	65	0.0090612
+194	65	0
+195	65	0.19143
+196	65	0.26785
+197	65	0.2676
+198	65	0.19937
+199	65	0.14298
+200	65	-0.073018
+201	65	-0.25295
+202	65	-0.39825
+203	65	-0.48793
+204	65	-0.45043
+205	65	-0.69902
+206	65	-0.89419
+207	65	-0.94037
+208	65	-0.97957
+209	65	-1.2975
+210	65	-1.4332
+211	65	-1.7846
+212	65	-1.9986
+213	65	-1.5413
+214	65	-1.4327
+215	65	-1.6778
+216	65	-1.5865
+217	65	-1.618
+218	65	-1.0672
+219	65	-0.7062
+220	65	-0.75224
+221	65	-0.65756
+222	65	-0.5459
+223	65	-0.39968
+224	65	-0.21574
+225	65	-0.12715
+226	65	-0.070685
+227	65	-0.014218
+228	65	0.031589
+229	65	0.056154
+230	65	0.10035
+231	65	0.1888
+232	65	0.19314
+233	65	0.19749
+234	65	0.21173
+235	65	0.19999
+236	65	0.16119
+237	65	0.15875
+238	65	0.15491
+239	65	0.153
+240	65	0.1837
+241	65	0.12985
+242	65	0.12961
+243	65	0.025325
+244	65	-0.092418
+245	65	-0.26395
+246	65	-0.35616
+247	65	-0.54119
+248	65	-0.77896
+249	65	-0.87797
+250	65	-1.0108
+251	65	-1.0604
+252	65	-1.0025
+253	65	-0.91669
+254	65	-0.8497
+255	65	-0.94363
+256	65	-1.0133
+257	65	-1.1772
+258	65	-1.187
+259	65	-1.0858
+260	65	-0.91531
+261	65	-0.75004
+262	65	-0.56901
+263	65	-0.44286
+264	65	-0.26017
+265	65	-0.12175
+266	65	0.057573
+267	65	0.19215
+268	65	0.29828
+269	65	0.41082
+270	65	0.46551
+271	65	0.63103
+272	65	0.6156
+273	65	0.024899
+274	65	0.044947
+275	65	0.12623
+276	65	0.17011
+277	65	0.098902
+278	65	0
+279	65	0
+280	65	0
+281	65	0
+282	65	-0.086927
+283	65	-0.4017
+284	65	-0.38682
+285	65	-0.015771
+286	65	-0.69227
+287	65	-1.243
+288	65	-2.0182
+289	65	-0.76211
+290	65	-2.2932
+291	65	-2.3812
+292	65	-2.3748
+293	65	-1.0954
+294	65	-0.024948
+295	65	-0.64698
+296	65	-0.49461
+297	65	0
+298	65	0
+299	65	0
+300	65	0
+301	65	0
+302	65	0
+303	65	0
+304	65	0
+305	65	0
+306	65	0
+307	65	0
+308	65	0
+309	65	0
+310	65	0
+311	65	0
+312	65	0
+313	65	0
+314	65	0
+315	65	0
+316	65	0
+317	65	0
+318	65	0
+319	65	0
+320	65	0
+321	65	0
+322	65	0
+323	65	0
+324	65	0
+325	65	0
+326	65	0
+327	65	0
+328	65	0
+329	65	0
+330	65	0
+331	65	0
+332	65	0
+333	65	0
+334	65	0
+335	65	0
+336	65	0
+337	65	-0.11492
+338	65	-0.97498
+339	65	-1.3172
+340	65	-0.049427
+341	65	-0.021965
+342	65	-0.81084
+343	65	-1.2943
+344	65	-1.2067
+345	65	-0.75143
+346	65	-0.20388
+347	65	0
+348	65	0
+349	65	0
+350	65	0
+351	65	0
+352	65	0
+353	65	0
+354	65	0
+355	65	0
+356	65	0
+357	65	0
+358	65	0
+359	65	0
+360	65	0
+0	65.5	0
+1	65.5	0
+2	65.5	0
+3	65.5	0
+4	65.5	0
+5	65.5	0
+6	65.5	0
+7	65.5	0
+8	65.5	0
+9	65.5	0
+10	65.5	0
+11	65.5	0
+12	65.5	0.54794
+13	65.5	1.7774
+14	65.5	2.1334
+15	65.5	1.5308
+16	65.5	0.72725
+17	65.5	0.43434
+18	65.5	0.19829
+19	65.5	0.094748
+20	65.5	0.021427
+21	65.5	-0.026879
+22	65.5	-0.039403
+23	65.5	-0.016203
+24	65.5	-0.034512
+25	65.5	-0.11059
+26	65.5	-0.15326
+27	65.5	-0.1602
+28	65.5	-0.11582
+29	65.5	-0.06216
+30	65.5	-0.00092919
+31	65.5	0.045984
+32	65.5	0.098718
+33	65.5	0.10148
+34	65.5	0.08807
+35	65.5	0.035777
+36	65.5	0
+37	65.5	0.0002384
+38	65.5	0
+39	65.5	0.033743
+40	65.5	0.067885
+41	65.5	0.094146
+42	65.5	0.12579
+43	65.5	0.15915
+44	65.5	0.19486
+45	65.5	0.20473
+46	65.5	0.2096
+47	65.5	0.22332
+48	65.5	0.21404
+49	65.5	0.1938
+50	65.5	0.16167
+51	65.5	0.11995
+52	65.5	0.084708
+53	65.5	0.05254
+54	65.5	0.031157
+55	65.5	-0.00028466
+56	65.5	-0.021999
+57	65.5	-0.03877
+58	65.5	-0.061443
+59	65.5	-0.077854
+60	65.5	-0.072682
+61	65.5	-0.068121
+62	65.5	-0.04831
+63	65.5	-0.028134
+64	65.5	-0.010476
+65	65.5	0.0012713
+66	65.5	0.013044
+67	65.5	0.034285
+68	65.5	0.048831
+69	65.5	0.065744
+70	65.5	0.072655
+71	65.5	0.086194
+72	65.5	0.079763
+73	65.5	0.079925
+74	65.5	0.073037
+75	65.5	0.073361
+76	65.5	0.068141
+77	65.5	0.05095
+78	65.5	0.023134
+79	65.5	-0.012911
+80	65.5	-0.038493
+81	65.5	-0.065832
+82	65.5	-0.086204
+83	65.5	-0.084049
+84	65.5	-0.078397
+85	65.5	-0.069691
+86	65.5	-0.065421
+87	65.5	-0.057696
+88	65.5	-0.033204
+89	65.5	-0.0043118
+90	65.5	0.028657
+91	65.5	0.056692
+92	65.5	0.079902
+93	65.5	0.10851
+94	65.5	0.14521
+95	65.5	0.18319
+96	65.5	0.22075
+97	65.5	0.25302
+98	65.5	0.28499
+99	65.5	0.31643
+100	65.5	0.32207
+101	65.5	0.33904
+102	65.5	0.3664
+103	65.5	0.37678
+104	65.5	0.34683
+105	65.5	0.31687
+106	65.5	0.28692
+107	65.5	0.25798
+108	65.5	0.22764
+109	65.5	0.18577
+110	65.5	0.14704
+111	65.5	0.10064
+112	65.5	0.081644
+113	65.5	0.065439
+114	65.5	0.049234
+115	65.5	0.034669
+116	65.5	0.063483
+117	65.5	0.10096
+118	65.5	0.14066
+119	65.5	0.18037
+120	65.5	0.19421
+121	65.5	0.15158
+122	65.5	0.10896
+123	65.5	0.074156
+124	65.5	0.076506
+125	65.5	0.078856
+126	65.5	0.059201
+127	65.5	0.038515
+128	65.5	0.017829
+129	65.5	-0.017299
+130	65.5	-0.043632
+131	65.5	-0.04636
+132	65.5	-0.045463
+133	65.5	-0.0084971
+134	65.5	0.04602
+135	65.5	0.082133
+136	65.5	0.12984
+137	65.5	0.20341
+138	65.5	0.24548
+139	65.5	0.30443
+140	65.5	0.33855
+141	65.5	0.34658
+142	65.5	0.34804
+143	65.5	0.32742
+144	65.5	0.28967
+145	65.5	0.3248
+146	65.5	0.35861
+147	65.5	0.38053
+148	65.5	0.38401
+149	65.5	0.39566
+150	65.5	0.4235
+151	65.5	0.44235
+152	65.5	0.47982
+153	65.5	0.50586
+154	65.5	0.44292
+155	65.5	0.4487
+156	65.5	0.51948
+157	65.5	0.59026
+158	65.5	0.58637
+159	65.5	0.5075
+160	65.5	0.44482
+161	65.5	0.43673
+162	65.5	0.43353
+163	65.5	0.42075
+164	65.5	0.40541
+165	65.5	0.40701
+166	65.5	0.41693
+167	65.5	0.42689
+168	65.5	0.45915
+169	65.5	0.48603
+170	65.5	0.48759
+171	65.5	0.4844
+172	65.5	0.51504
+173	65.5	0.54121
+174	65.5	0.59897
+175	65.5	0.63598
+176	65.5	0.67233
+177	65.5	0.69055
+178	65.5	0.64808
+179	65.5	0.45196
+180	65.5	0.10606
+181	65.5	0
+182	65.5	0.045952
+183	65.5	0.029406
+184	65.5	0.067951
+185	65.5	0.085315
+186	65.5	0.1081
+187	65.5	0.13524
+188	65.5	0.037232
+189	65.5	0.028216
+190	65.5	0.0028061
+191	65.5	0
+192	65.5	0
+193	65.5	0.1069
+194	65.5	0.46654
+195	65.5	0.35481
+196	65.5	0.46913
+197	65.5	0.36834
+198	65.5	0.32212
+199	65.5	0.25735
+200	65.5	0.0053282
+201	65.5	-0.19235
+202	65.5	-0.34705
+203	65.5	-0.43275
+204	65.5	-0.4681
+205	65.5	-0.56524
+206	65.5	-0.71677
+207	65.5	-0.78082
+208	65.5	-0.86504
+209	65.5	-1.0947
+210	65.5	-1.1639
+211	65.5	-1.481
+212	65.5	-1.5717
+213	65.5	-1.4332
+214	65.5	-1.3702
+215	65.5	-1.3469
+216	65.5	-1.2591
+217	65.5	-1.1033
+218	65.5	-0.78896
+219	65.5	-0.54655
+220	65.5	-0.49766
+221	65.5	-0.4218
+222	65.5	-0.31014
+223	65.5	-0.17376
+224	65.5	-0.023542
+225	65.5	-0.0056256
+226	65.5	0.042351
+227	65.5	0.098818
+228	65.5	0.10679
+229	65.5	0.12482
+230	65.5	0.16217
+231	65.5	0.19571
+232	65.5	0.20006
+233	65.5	0.20595
+234	65.5	0.21847
+235	65.5	0.13636
+236	65.5	0.094055
+237	65.5	0.091613
+238	65.5	0.088935
+239	65.5	0.089149
+240	65.5	0.11985
+241	65.5	0.14257
+242	65.5	0.18355
+243	65.5	0.1519
+244	65.5	0.0089055
+245	65.5	-0.155
+246	65.5	-0.26005
+247	65.5	-0.3507
+248	65.5	-0.49741
+249	65.5	-0.62552
+250	65.5	-0.70359
+251	65.5	-0.81883
+252	65.5	-0.7546
+253	65.5	-0.66074
+254	65.5	-0.6592
+255	65.5	-0.7159
+256	65.5	-0.77592
+257	65.5	-0.94823
+258	65.5	-0.93802
+259	65.5	-0.77487
+260	65.5	-0.54748
+261	65.5	-0.35801
+262	65.5	-0.23109
+263	65.5	-0.22266
+264	65.5	-0.018915
+265	65.5	0.11976
+266	65.5	0.27834
+267	65.5	0.43088
+268	65.5	0.52961
+269	65.5	0.65631
+270	65.5	0.33509
+271	65.5	0.64713
+272	65.5	0.84637
+273	65.5	0.14491
+274	65.5	0.10012
+275	65.5	0.055327
+276	65.5	0.076762
+277	65.5	0.030688
+278	65.5	0
+279	65.5	0
+280	65.5	0
+281	65.5	0
+282	65.5	0
+283	65.5	-0.098544
+284	65.5	-0.21613
+285	65.5	0
+286	65.5	-1.2316
+287	65.5	-2.0626
+288	65.5	-2.4478
+289	65.5	-1.9955
+290	65.5	-2.745
+291	65.5	-2.8008
+292	65.5	-2.7877
+293	65.5	-0.10349
+294	65.5	-0.38615
+295	65.5	-0.76808
+296	65.5	-0.2733
+297	65.5	0
+298	65.5	0
+299	65.5	0
+300	65.5	0
+301	65.5	0
+302	65.5	0
+303	65.5	0
+304	65.5	0
+305	65.5	0
+306	65.5	0
+307	65.5	0
+308	65.5	0
+309	65.5	0
+310	65.5	0
+311	65.5	0
+312	65.5	0
+313	65.5	0
+314	65.5	0
+315	65.5	0
+316	65.5	0
+317	65.5	0
+318	65.5	0
+319	65.5	0
+320	65.5	0
+321	65.5	0
+322	65.5	0
+323	65.5	0
+324	65.5	0
+325	65.5	0
+326	65.5	0
+327	65.5	0
+328	65.5	0
+329	65.5	0
+330	65.5	0
+331	65.5	0
+332	65.5	0
+333	65.5	0
+334	65.5	0
+335	65.5	0
+336	65.5	0
+337	65.5	-0.43017
+338	65.5	-0.68332
+339	65.5	-0.34436
+340	65.5	-1.5812
+341	65.5	0
+342	65.5	-2.1426
+343	65.5	-2.2375
+344	65.5	-2.034
+345	65.5	-1.7802
+346	65.5	-0.28209
+347	65.5	0
+348	65.5	0
+349	65.5	0
+350	65.5	0
+351	65.5	0
+352	65.5	0
+353	65.5	0
+354	65.5	0
+355	65.5	0
+356	65.5	0
+357	65.5	0
+358	65.5	0
+359	65.5	0
+360	65.5	0
+0	66	0
+1	66	0
+2	66	0
+3	66	0
+4	66	0
+5	66	0
+6	66	0
+7	66	0
+8	66	0
+9	66	0
+10	66	0
+11	66	0
+12	66	0
+13	66	1.2093
+14	66	1.0209
+15	66	1.7092
+16	66	0.91535
+17	66	0.53729
+18	66	0.24786
+19	66	0.10253
+20	66	0.01177
+21	66	-0.027413
+22	66	-0.081164
+23	66	-0.048765
+24	66	-0.082053
+25	66	-0.19824
+26	66	-0.19148
+27	66	-0.12762
+28	66	-0.075703
+29	66	-0.064019
+30	66	-0.049167
+31	66	-0.012259
+32	66	0.041275
+33	66	0.092894
+34	66	0.10296
+35	66	0.034964
+36	66	0.035613
+37	66	0.07489
+38	66	0.070717
+39	66	0.10979
+40	66	0.1152
+41	66	0.013928
+42	66	0.078588
+43	66	0.10505
+44	66	0.14443
+45	66	0.21569
+46	66	0.22043
+47	66	0.23718
+48	66	0.23228
+49	66	0.20135
+50	66	0.15495
+51	66	0.11257
+52	66	0.080925
+53	66	0.052654
+54	66	0.033065
+55	66	0.00088478
+56	66	-0.031926
+57	66	-0.04669
+58	66	-0.061159
+59	66	-0.065099
+60	66	-0.05949
+61	66	-0.050578
+62	66	-0.033553
+63	66	-0.011514
+64	66	0.0079643
+65	66	0.018324
+66	66	0.028538
+67	66	0.043475
+68	66	0.058067
+69	66	0.078336
+70	66	0.092918
+71	66	0.091367
+72	66	0.066297
+73	66	0.082148
+74	66	0.079504
+75	66	0.078539
+76	66	0.063986
+77	66	0.046323
+78	66	0.010592
+79	66	-0.027864
+80	66	-0.057466
+81	66	-0.085999
+82	66	-0.10817
+83	66	-0.10827
+84	66	-0.10826
+85	66	-0.099604
+86	66	-0.090074
+87	66	-0.064736
+88	66	-0.06714
+89	66	-0.040758
+90	66	-0.0077896
+91	66	0.025179
+92	66	0.057379
+93	66	0.089324
+94	66	0.12441
+95	66	0.16239
+96	66	0.18829
+97	66	0.22813
+98	66	0.2601
+99	66	0.29105
+100	66	0.29616
+101	66	0.29497
+102	66	0.32233
+103	66	0.34264
+104	66	0.31269
+105	66	0.28274
+106	66	0.25279
+107	66	0.22753
+108	66	0.19691
+109	66	0.15458
+110	66	0.11324
+111	66	0.073201
+112	66	0.056996
+113	66	0.040791
+114	66	0.024586
+115	66	0.0083818
+116	66	0.028769
+117	66	0.068471
+118	66	0.10817
+119	66	0.14683
+120	66	0.15953
+121	66	0.13809
+122	66	0.095469
+123	66	0.052848
+124	66	0.035487
+125	66	0.033631
+126	66	0.012945
+127	66	-0.0077414
+128	66	-0.028428
+129	66	-0.053479
+130	66	-0.079812
+131	66	-0.092077
+132	66	-0.091004
+133	66	-0.035947
+134	66	0.01911
+135	66	0.05652
+136	66	0.14508
+137	66	0.21127
+138	66	0.2355
+139	66	0.29445
+140	66	0.31883
+141	66	0.32896
+142	66	0.33027
+143	66	0.29273
+144	66	0.29599
+145	66	0.33324
+146	66	0.36962
+147	66	0.39153
+148	66	0.37693
+149	66	0.37108
+150	66	0.38992
+151	66	0.40876
+152	66	0.43599
+153	66	0.41747
+154	66	0.38439
+155	66	0.38885
+156	66	0.46131
+157	66	0.53378
+158	66	0.54025
+159	66	0.44489
+160	66	0.41197
+161	66	0.40167
+162	66	0.39136
+163	66	0.38664
+164	66	0.38413
+165	66	0.38369
+166	66	0.39353
+167	66	0.40398
+168	66	0.40412
+169	66	0.42825
+170	66	0.44571
+171	66	0.45143
+172	66	0.45712
+173	66	0.46664
+174	66	0.50331
+175	66	0.54561
+176	66	0.55744
+177	66	0.57659
+178	66	0.5577
+179	66	0.45029
+180	66	0.19097
+181	66	0.047758
+182	66	0.11329
+183	66	0.082562
+184	66	0.04568
+185	66	0.052181
+186	66	0.076284
+187	66	0.10144
+188	66	0.09694
+189	66	0.043347
+190	66	0
+191	66	0
+192	66	0
+193	66	0.069212
+194	66	0.28176
+195	66	0.33998
+196	66	0.29857
+197	66	0.13524
+198	66	0.18395
+199	66	0.19303
+200	66	0.1157
+201	66	-0.088551
+202	66	-0.23508
+203	66	-0.31336
+204	66	-0.36811
+205	66	-0.4103
+206	66	-0.53934
+207	66	-0.6221
+208	66	-0.75051
+209	66	-0.8253
+210	66	-0.89447
+211	66	-1.1491
+212	66	-1.1447
+213	66	-1.0601
+214	66	-1.0394
+215	66	-1.0161
+216	66	-0.91283
+217	66	-0.77927
+218	66	-0.52326
+219	66	-0.38635
+220	66	-0.33122
+221	66	-0.22387
+222	66	-0.10298
+223	66	0.023508
+224	66	0.15275
+225	66	0.12697
+226	66	0.15539
+227	66	0.20503
+228	66	0.18199
+229	66	0.19206
+230	66	0.21959
+231	66	0.22491
+232	66	0.23407
+233	66	0.24323
+234	66	0.27053
+235	66	0.12829
+236	66	0.026922
+237	66	0.02448
+238	66	0.022038
+239	66	0.025302
+240	66	0.12951
+241	66	0.26531
+242	66	0.26316
+243	66	0.26098
+244	66	0.15913
+245	66	0.028562
+246	66	-0.05493
+247	66	-0.16345
+248	66	-0.28629
+249	66	-0.39034
+250	66	-0.45782
+251	66	-0.53686
+252	66	-0.44554
+253	66	-0.4021
+254	66	-0.46632
+255	66	-0.47476
+256	66	-0.49132
+257	66	-0.515
+258	66	-0.62721
+259	66	-0.46392
+260	66	-0.22934
+261	66	0.030582
+262	66	0.10683
+263	66	-0.0021917
+264	66	0.29719
+265	66	0.40631
+266	66	0.5684
+267	66	0.70881
+268	66	0.7893
+269	66	0.80533
+270	66	0.88592
+271	66	0.86811
+272	66	0.93241
+273	66	0.71718
+274	66	0.19558
+275	66	0.060248
+276	66	0.064458
+277	66	0.030503
+278	66	0
+279	66	0
+280	66	0
+281	66	0
+282	66	0
+283	66	0
+284	66	0
+285	66	0
+286	66	-1.1122
+287	66	-2.6391
+288	66	-2.8711
+289	66	-3.069
+290	66	-3.1662
+291	66	-3.2049
+292	66	-1.7981
+293	66	0
+294	66	-1.36
+295	66	-1.0673
+296	66	0
+297	66	0
+298	66	0
+299	66	0
+300	66	0
+301	66	0
+302	66	0
+303	66	0
+304	66	0
+305	66	0
+306	66	0
+307	66	0
+308	66	0
+309	66	0
+310	66	0
+311	66	0
+312	66	0
+313	66	0
+314	66	0
+315	66	0
+316	66	0
+317	66	0
+318	66	0
+319	66	0
+320	66	0
+321	66	0
+322	66	0
+323	66	0
+324	66	0
+325	66	0
+326	66	0
+327	66	0
+328	66	0
+329	66	0
+330	66	0
+331	66	0
+332	66	0
+333	66	0
+334	66	0
+335	66	0
+336	66	0
+337	66	-0.51883
+338	66	-1.4427
+339	66	-0.31519
+340	66	-0.012293
+341	66	-1.3188
+342	66	-0.91947
+343	66	-1.1528
+344	66	-1.0619
+345	66	-0.86702
+346	66	-0.089766
+347	66	0
+348	66	0
+349	66	0
+350	66	0
+351	66	0
+352	66	0
+353	66	0
+354	66	0
+355	66	0
+356	66	0
+357	66	0
+358	66	0
+359	66	0
+360	66	0
+0	66.5	0
+1	66.5	0
+2	66.5	0
+3	66.5	0
+4	66.5	0
+5	66.5	0
+6	66.5	0
+7	66.5	0
+8	66.5	0
+9	66.5	0
+10	66.5	0
+11	66.5	0
+12	66.5	0
+13	66.5	0.72239
+14	66.5	0
+15	66.5	0.64885
+16	66.5	1.2435
+17	66.5	0.5804
+18	66.5	0.26945
+19	66.5	0.13476
+20	66.5	0.035895
+21	66.5	-0.011504
+22	66.5	-0.064367
+23	66.5	-0.10215
+24	66.5	-0.14142
+25	66.5	-0.25079
+26	66.5	-0.22002
+27	66.5	-0.10656
+28	66.5	-0.030641
+29	66.5	-0.056188
+30	66.5	-0.034501
+31	66.5	0.011491
+32	66.5	0.054596
+33	66.5	0.096085
+34	66.5	0.11785
+35	66.5	0.080048
+36	66.5	0.098499
+37	66.5	0.13853
+38	66.5	0.15953
+39	66.5	0.16481
+40	66.5	0.16008
+41	66.5	0.016897
+42	66.5	0.024049
+43	66.5	0.028902
+44	66.5	0.081752
+45	66.5	0.1816
+46	66.5	0.22103
+47	66.5	0.11776
+48	66.5	0.16473
+49	66.5	0.17908
+50	66.5	0.13618
+51	66.5	0.093804
+52	66.5	0.070234
+53	66.5	0.035787
+54	66.5	0.011672
+55	66.5	0.0003995
+56	66.5	-0.039188
+57	66.5	-0.057972
+58	66.5	-0.058886
+59	66.5	-0.052344
+60	66.5	-0.05054
+61	66.5	-0.029786
+62	66.5	-0.016713
+63	66.5	0.006619
+64	66.5	0.027052
+65	66.5	0.02996
+66	66.5	0.046605
+67	66.5	0.053537
+68	66.5	0.07352
+69	66.5	0.093082
+70	66.5	0.11166
+71	66.5	0.091172
+72	66.5	0.04171
+73	66.5	0.045441
+74	66.5	0.073547
+75	66.5	0.080223
+76	66.5	0.063374
+77	66.5	0.039693
+78	66.5	0.00031043
+79	66.5	-0.039388
+80	66.5	-0.077245
+81	66.5	-0.1055
+82	66.5	-0.12639
+83	66.5	-0.12674
+84	66.5	-0.12598
+85	66.5	-0.11782
+86	66.5	-0.093294
+87	66.5	-0.050486
+88	66.5	-0.089134
+89	66.5	-0.064116
+90	66.5	-0.027978
+91	66.5	0.0092432
+92	66.5	0.038797
+93	66.5	0.07014
+94	66.5	0.10361
+95	66.5	0.13042
+96	66.5	0.15782
+97	66.5	0.20323
+98	66.5	0.23482
+99	66.5	0.26568
+100	66.5	0.27025
+101	66.5	0.26726
+102	66.5	0.27826
+103	66.5	0.29851
+104	66.5	0.27856
+105	66.5	0.24861
+106	66.5	0.22059
+107	66.5	0.19708
+108	66.5	0.16618
+109	66.5	0.12385
+110	66.5	0.081515
+111	66.5	0.048553
+112	66.5	0.032348
+113	66.5	0.016143
+114	66.5	-6.121e-05
+115	66.5	-0.016266
+116	66.5	-0.0037236
+117	66.5	0.035978
+118	66.5	0.069178
+119	66.5	0.10137
+120	66.5	0.078966
+121	66.5	0.082274
+122	66.5	0.060067
+123	66.5	0.03786
+124	66.5	-0.0032674
+125	66.5	-0.012625
+126	66.5	-0.033311
+127	66.5	-0.05579
+128	66.5	-0.078577
+129	66.5	-0.089748
+130	66.5	-0.11599
+131	66.5	-0.13779
+132	66.5	-0.11845
+133	66.5	-0.063396
+134	66.5	-0.0083391
+135	66.5	0.046037
+136	66.5	0.1489
+137	66.5	0.20223
+138	66.5	0.23927
+139	66.5	0.28447
+140	66.5	0.29911
+141	66.5	0.31133
+142	66.5	0.29555
+143	66.5	0.26517
+144	66.5	0.30444
+145	66.5	0.34169
+146	66.5	0.37894
+147	66.5	0.38841
+148	66.5	0.36521
+149	66.5	0.3357
+150	66.5	0.34719
+151	66.5	0.36984
+152	66.5	0.39249
+153	66.5	0.36975
+154	66.5	0.34866
+155	66.5	0.33858
+156	66.5	0.40053
+157	66.5	0.473
+158	66.5	0.4758
+159	66.5	0.40095
+160	66.5	0.38032
+161	66.5	0.36881
+162	66.5	0.35915
+163	66.5	0.36148
+164	66.5	0.36346
+165	66.5	0.36302
+166	66.5	0.37013
+167	66.5	0.38107
+168	66.5	0.3741
+169	66.5	0.38509
+170	66.5	0.40189
+171	66.5	0.44182
+172	66.5	0.44384
+173	66.5	0.41962
+174	66.5	0.43223
+175	66.5	0.46582
+176	66.5	0.46815
+177	66.5	0.48039
+178	66.5	0.44599
+179	66.5	0.373
+180	66.5	0.24572
+181	66.5	0.10121
+182	66.5	0.10696
+183	66.5	0.043001
+184	66.5	0.014476
+185	66.5	0.019061
+186	66.5	0.040819
+187	66.5	0.059377
+188	66.5	0.050284
+189	66.5	0.012586
+190	66.5	0
+191	66.5	0
+192	66.5	0
+193	66.5	0
+194	66.5	0
+195	66.5	0.14968
+196	66.5	0.14268
+197	66.5	0.063278
+198	66.5	0.11923
+199	66.5	0.16377
+200	66.5	0.20527
+201	66.5	0.020808
+202	66.5	-0.12971
+203	66.5	-0.18879
+204	66.5	-0.24369
+205	66.5	-0.31614
+206	66.5	-0.40858
+207	66.5	-0.52257
+208	66.5	-0.66758
+209	66.5	-0.685
+210	66.5	-0.62509
+211	66.5	-0.72212
+212	66.5	-0.71772
+213	66.5	-0.72954
+214	66.5	-0.70805
+215	66.5	-0.67717
+216	66.5	-0.56656
+217	66.5	-0.45522
+218	66.5	-0.25766
+219	66.5	-0.21936
+220	66.5	-0.15089
+221	66.5	-0.051985
+222	66.5	0.068904
+223	66.5	0.20092
+224	66.5	0.28535
+225	66.5	0.25957
+226	66.5	0.26842
+227	66.5	0.28023
+228	66.5	0.25719
+229	66.5	0.2593
+230	66.5	0.26232
+231	66.5	0.26423
+232	66.5	0.27135
+233	66.5	0.28051
+234	66.5	0.32259
+235	66.5	0.24041
+236	66.5	0.18049
+237	66.5	0.19146
+238	66.5	0.20242
+239	66.5	0.15206
+240	66.5	0.2343
+241	66.5	0.37121
+242	66.5	0.42096
+243	66.5	0.40182
+244	66.5	0.33065
+245	66.5	0.21525
+246	66.5	0.14372
+247	66.5	0.042006
+248	66.5	-0.055054
+249	66.5	-0.15517
+250	66.5	-0.22432
+251	66.5	-0.29498
+252	66.5	-0.13502
+253	66.5	-0.16544
+254	66.5	-0.24968
+255	66.5	-0.22395
+256	66.5	-0.19252
+257	66.5	-0.070634
+258	66.5	-0.12621
+259	66.5	-0.10911
+260	66.5	0.13689
+261	66.5	0.40043
+262	66.5	0.55313
+263	66.5	0.50313
+264	66.5	0.63333
+265	66.5	0.73092
+266	66.5	0.87312
+267	66.5	0.98673
+268	66.5	0.92778
+269	66.5	0.94117
+270	66.5	1.0296
+271	66.5	0.99687
+272	66.5	0.85498
+273	66.5	0.66534
+274	66.5	0.26988
+275	66.5	0.10099
+276	66.5	0.15745
+277	66.5	0.01772
+278	66.5	-0.023449
+279	66.5	0
+280	66.5	0
+281	66.5	0
+282	66.5	0
+283	66.5	0
+284	66.5	0
+285	66.5	0
+286	66.5	-0.99222
+287	66.5	-2.5805
+288	66.5	-3.2967
+289	66.5	-3.4963
+290	66.5	-3.614
+291	66.5	-3.5772
+292	66.5	-1.6211
+293	66.5	-2.8919
+294	66.5	-0.50317
+295	66.5	-0.0034472
+296	66.5	0
+297	66.5	0
+298	66.5	0
+299	66.5	0
+300	66.5	0
+301	66.5	0
+302	66.5	0
+303	66.5	0
+304	66.5	0
+305	66.5	0
+306	66.5	0
+307	66.5	0
+308	66.5	0
+309	66.5	0
+310	66.5	0
+311	66.5	0
+312	66.5	0
+313	66.5	0
+314	66.5	0
+315	66.5	0
+316	66.5	0
+317	66.5	0
+318	66.5	0
+319	66.5	0
+320	66.5	0
+321	66.5	0
+322	66.5	0
+323	66.5	0
+324	66.5	0
+325	66.5	0
+326	66.5	0
+327	66.5	0
+328	66.5	0
+329	66.5	0
+330	66.5	0
+331	66.5	0
+332	66.5	0
+333	66.5	0
+334	66.5	0
+335	66.5	0
+336	66.5	0
+337	66.5	-0.14183
+338	66.5	-0.32244
+339	66.5	0
+340	66.5	0
+341	66.5	-0.57361
+342	66.5	-0.11597
+343	66.5	-0.38315
+344	66.5	-0.37667
+345	66.5	-0.43181
+346	66.5	0
+347	66.5	0
+348	66.5	0
+349	66.5	0
+350	66.5	0
+351	66.5	0
+352	66.5	0
+353	66.5	0
+354	66.5	0
+355	66.5	0
+356	66.5	0
+357	66.5	0
+358	66.5	0
+359	66.5	0
+360	66.5	0
+0	67	0
+1	67	0
+2	67	0
+3	67	0
+4	67	0
+5	67	0
+6	67	0
+7	67	0
+8	67	0
+9	67	0
+10	67	0
+11	67	0
+12	67	0
+13	67	0.23016
+14	67	0.2719
+15	67	0.31722
+16	67	0.32374
+17	67	0.20494
+18	67	0.022024
+19	67	0.22154
+20	67	0.082498
+21	67	0.014235
+22	67	-0.036723
+23	67	-0.093606
+24	67	-0.16484
+25	67	-0.21089
+26	67	-0.19421
+27	67	-0.1105
+28	67	-0.0076219
+29	67	-0.038507
+30	67	-0.019953
+31	67	0.032534
+32	67	0.084092
+33	67	0.13414
+34	67	0.14396
+35	67	0.13733
+36	67	0.15738
+37	67	0.2006
+38	67	0.222
+39	67	0.22402
+40	67	0.20286
+41	67	0.053166
+42	67	0
+43	67	0
+44	67	0.060288
+45	67	0.10434
+46	67	0.055396
+47	67	0
+48	67	0.11148
+49	67	0.16058
+50	67	0.11768
+51	67	0.076279
+52	67	0.055065
+53	67	0.0076282
+54	67	-0.024985
+55	67	-0.013667
+56	67	-0.044288
+57	67	-0.069381
+58	67	-0.071137
+59	67	-0.064854
+60	67	-0.046846
+61	67	-0.0093086
+62	67	0.0030467
+63	67	0.024791
+64	67	0.041408
+65	67	0.046258
+66	67	0.084374
+67	67	0.081668
+68	67	0.093349
+69	67	0.11338
+70	67	0.1281
+71	67	0.1098
+72	67	0.059092
+73	67	0.010994
+74	67	0.061173
+75	67	0.075031
+76	67	0.061188
+77	67	0.032976
+78	67	-0.0030843
+79	67	-0.042783
+80	67	-0.099149
+81	67	-0.12501
+82	67	-0.14461
+83	67	-0.14495
+84	67	-0.14313
+85	67	-0.13604
+86	67	-0.066063
+87	67	-0.036235
+88	67	-0.11029
+89	67	-0.078825
+90	67	-0.042927
+91	67	-0.0062231
+92	67	0.026065
+93	67	0.057003
+94	67	0.086771
+95	67	0.11481
+96	67	0.14502
+97	67	0.17678
+98	67	0.20945
+99	67	0.24031
+100	67	0.24434
+101	67	0.24135
+102	67	0.23895
+103	67	0.25248
+104	67	0.24443
+105	67	0.21448
+106	67	0.19015
+107	67	0.16663
+108	67	0.13546
+109	67	0.093121
+110	67	0.050879
+111	67	0.019605
+112	67	0.0044718
+113	67	-0.010985
+114	67	-0.026443
+115	67	-0.0419
+116	67	-0.040668
+117	67	-0.0084756
+118	67	0.023717
+119	67	0.032043
+120	67	-0.0015965
+121	67	0.025262
+122	67	0.0030547
+123	67	-0.019153
+124	67	-0.04136
+125	67	-0.062035
+126	67	-0.084822
+127	67	-0.10761
+128	67	-0.1304
+129	67	-0.13248
+130	67	-0.15231
+131	67	-0.17851
+132	67	-0.1459
+133	67	-0.090846
+134	67	-0.035789
+135	67	0.032051
+136	67	0.10367
+137	67	0.11491
+138	67	0.19135
+139	67	0.26493
+140	67	0.27939
+141	67	0.29371
+142	67	0.2755
+143	67	0.25982
+144	67	0.29609
+145	67	0.33984
+146	67	0.3836
+147	67	0.36953
+148	67	0.33823
+149	67	0.30907
+150	67	0.29579
+151	67	0.31844
+152	67	0.33901
+153	67	0.33005
+154	67	0.3146
+155	67	0.30452
+156	67	0.33975
+157	67	0.3913
+158	67	0.40346
+159	67	0.36967
+160	67	0.34904
+161	67	0.33596
+162	67	0.33022
+163	67	0.33391
+164	67	0.34206
+165	67	0.3423
+166	67	0.34712
+167	67	0.35795
+168	67	0.35284
+169	67	0.36322
+170	67	0.38047
+171	67	0.42918
+172	67	0.42717
+173	67	0.39338
+174	67	0.37257
+175	67	0.38604
+176	67	0.37887
+177	67	0.39071
+178	67	0.35435
+179	67	0.32173
+180	67	0.25424
+181	67	0.15453
+182	67	0.065021
+183	67	-0.0088523
+184	67	-0.016004
+185	67	-0.0056029
+186	67	0.00095362
+187	67	0.017132
+188	67	0.0090599
+189	67	0
+190	67	0
+191	67	0
+192	67	0
+193	67	0
+194	67	0
+195	67	0.012599
+196	67	0.016509
+197	67	0.16462
+198	67	0.31019
+199	67	0.32151
+200	67	0.28515
+201	67	0.11419
+202	67	-0.036428
+203	67	-0.10361
+204	67	-0.16661
+205	67	-0.23711
+206	67	-0.33296
+207	67	-0.44774
+208	67	-0.541
+209	67	-0.54345
+210	67	-0.52907
+211	67	-0.45975
+212	67	-0.51668
+213	67	-0.54347
+214	67	-0.40495
+215	67	-0.33089
+216	67	-0.22029
+217	67	-0.11181
+218	67	-0.082715
+219	67	-0.052364
+220	67	0.02944
+221	67	0.12735
+222	67	0.24078
+223	67	0.37722
+224	67	0.42381
+225	67	0.39217
+226	67	0.37847
+227	67	0.3558
+228	67	0.33437
+229	67	0.31065
+230	67	0.30504
+231	67	0.3069
+232	67	0.30893
+233	67	0.31779
+234	67	0.37465
+235	67	0.37525
+236	67	0.46154
+237	67	0.4928
+238	67	0.4869
+239	67	0.41543
+240	67	0.34017
+241	67	0.47711
+242	67	0.5723
+243	67	0.5182
+244	67	0.42363
+245	67	0.36631
+246	67	0.31555
+247	67	0.2772
+248	67	0.17665
+249	67	0.068683
+250	67	-0.079762
+251	67	-0.13926
+252	67	-0.0010004
+253	67	0.069207
+254	67	-0.0063373
+255	67	0.025042
+256	67	0.06126
+257	67	0.13277
+258	67	0.2305
+259	67	0.32194
+260	67	0.50303
+261	67	0.75737
+262	67	0.95851
+263	67	0.9895
+264	67	0.94346
+265	67	0.96853
+266	67	1.0923
+267	67	1.2769
+268	67	1.178
+269	67	1.0749
+270	67	1.1049
+271	67	0.98945
+272	67	0.73176
+273	67	0.49543
+274	67	0.40581
+275	67	0.20407
+276	67	0.086912
+277	67	-0.24977
+278	67	-0.17191
+279	67	0
+280	67	0
+281	67	0
+282	67	0
+283	67	-1.1711
+284	67	0
+285	67	0
+286	67	-0.37614
+287	67	-1.1393
+288	67	-2.756
+289	67	-3.8774
+290	67	-3.8952
+291	67	-3.9348
+292	67	-1.3615
+293	67	-1.4169
+294	67	0
+295	67	0
+296	67	-0.31732
+297	67	0
+298	67	0
+299	67	0
+300	67	0
+301	67	0
+302	67	0
+303	67	0
+304	67	0
+305	67	0
+306	67	0
+307	67	0
+308	67	0
+309	67	0
+310	67	0
+311	67	0
+312	67	0
+313	67	0
+314	67	0
+315	67	0
+316	67	0
+317	67	0
+318	67	0
+319	67	0
+320	67	0
+321	67	0
+322	67	0
+323	67	0
+324	67	0
+325	67	0
+326	67	0
+327	67	0
+328	67	0
+329	67	0
+330	67	0
+331	67	0
+332	67	0
+333	67	0
+334	67	0
+335	67	0
+336	67	0
+337	67	0
+338	67	0
+339	67	0
+340	67	0
+341	67	0
+342	67	0
+343	67	0
+344	67	-0.091442
+345	67	-0.069536
+346	67	0
+347	67	0
+348	67	0
+349	67	0
+350	67	0
+351	67	0
+352	67	0
+353	67	0
+354	67	0
+355	67	0
+356	67	0
+357	67	0
+358	67	0
+359	67	0
+360	67	0
+0	67.5	0
+1	67.5	0
+2	67.5	0
+3	67.5	0
+4	67.5	0
+5	67.5	0
+6	67.5	0
+7	67.5	0
+8	67.5	0
+9	67.5	0
+10	67.5	0
+11	67.5	0
+12	67.5	0
+13	67.5	0
+14	67.5	0.27439
+15	67.5	0.62789
+16	67.5	0.635
+17	67.5	0.26788
+18	67.5	0.43399
+19	67.5	0.31307
+20	67.5	0.13069
+21	67.5	0.060889
+22	67.5	-0.0040773
+23	67.5	-0.062527
+24	67.5	-0.13018
+25	67.5	-0.17099
+26	67.5	-0.16079
+27	67.5	-0.081444
+28	67.5	-0.037673
+29	67.5	-0.016481
+30	67.5	0.025355
+31	67.5	0.076501
+32	67.5	0.13598
+33	67.5	0.18226
+34	67.5	0.19411
+35	67.5	0.19966
+36	67.5	0.21766
+37	67.5	0.25309
+38	67.5	0.25187
+39	67.5	0.22444
+40	67.5	0.19223
+41	67.5	0.060318
+42	67.5	0
+43	67.5	0
+44	67.5	0.024535
+45	67.5	0.058199
+46	67.5	0.019806
+47	67.5	0
+48	67.5	0.05114
+49	67.5	0.058349
+50	67.5	0.083832
+51	67.5	0.049816
+52	67.5	0.012618
+53	67.5	-0.031276
+54	67.5	-0.061812
+55	67.5	-0.050122
+56	67.5	-0.072521
+57	67.5	-0.085113
+58	67.5	-0.082957
+59	67.5	-0.08086
+60	67.5	-0.061385
+61	67.5	-0.017793
+62	67.5	0.022698
+63	67.5	0.048841
+64	67.5	0.047691
+65	67.5	0.048252
+66	67.5	0.10449
+67	67.5	0.11836
+68	67.5	0.12582
+69	67.5	0.14422
+70	67.5	0.15204
+71	67.5	0.14401
+72	67.5	0.099582
+73	67.5	0.025044
+74	67.5	0.043827
+75	67.5	0.068488
+76	67.5	0.054484
+77	67.5	0.02871
+78	67.5	-0.0067392
+79	67.5	-0.058489
+80	67.5	-0.11161
+81	67.5	-0.14165
+82	67.5	-0.16073
+83	67.5	-0.15721
+84	67.5	-0.15367
+85	67.5	-0.14757
+86	67.5	-0.069607
+87	67.5	-0.1098
+88	67.5	-0.12806
+89	67.5	-0.095823
+90	67.5	-0.058875
+91	67.5	-0.019862
+92	67.5	0.015457
+93	67.5	0.047943
+94	67.5	0.078904
+95	67.5	0.1029
+96	67.5	0.13229
+97	67.5	0.16305
+98	67.5	0.1903
+99	67.5	0.21807
+100	67.5	0.22352
+101	67.5	0.22382
+102	67.5	0.21457
+103	67.5	0.20775
+104	67.5	0.2103
+105	67.5	0.18321
+106	67.5	0.1597
+107	67.5	0.13619
+108	67.5	0.10473
+109	67.5	0.062432
+110	67.5	0.020695
+111	67.5	-0.010794
+112	67.5	-0.024701
+113	67.5	-0.040158
+114	67.5	-0.055615
+115	67.5	-0.071072
+116	67.5	-0.086129
+117	67.5	-0.053937
+118	67.5	-0.021744
+119	67.5	-0.04451
+120	67.5	-0.081844
+121	67.5	-0.052734
+122	67.5	-0.053958
+123	67.5	-0.076165
+124	67.5	-0.10079
+125	67.5	-0.12688
+126	67.5	-0.13664
+127	67.5	-0.15943
+128	67.5	-0.18221
+129	67.5	-0.18063
+130	67.5	-0.18868
+131	67.5	-0.21575
+132	67.5	-0.21719
+133	67.5	-0.16502
+134	67.5	-0.10289
+135	67.5	-0.01318
+136	67.5	0.056966
+137	67.5	0.056045
+138	67.5	0.09519
+139	67.5	0.23651
+140	67.5	0.25177
+141	67.5	0.27653
+142	67.5	0.26952
+143	67.5	0.25448
+144	67.5	0.28633
+145	67.5	0.33008
+146	67.5	0.3368
+147	67.5	0.34255
+148	67.5	0.31125
+149	67.5	0.28243
+150	67.5	0.26
+151	67.5	0.26704
+152	67.5	0.28528
+153	67.5	0.29063
+154	67.5	0.28054
+155	67.5	0.27045
+156	67.5	0.27898
+157	67.5	0.30208
+158	67.5	0.31521
+159	67.5	0.32184
+160	67.5	0.31776
+161	67.5	0.30532
+162	67.5	0.29604
+163	67.5	0.30798
+164	67.5	0.31909
+165	67.5	0.31972
+166	67.5	0.32168
+167	67.5	0.33074
+168	67.5	0.33092
+169	67.5	0.34164
+170	67.5	0.36609
+171	67.5	0.41395
+172	67.5	0.39513
+173	67.5	0.3618
+174	67.5	0.3348
+175	67.5	0.31656
+176	67.5	0.30678
+177	67.5	0.30758
+178	67.5	0.26836
+179	67.5	0.24169
+180	67.5	0.19882
+181	67.5	0.1167
+182	67.5	0.037579
+183	67.5	-0.066682
+184	67.5	-0.03676
+185	67.5	-0.009967
+186	67.5	0
+187	67.5	1.6436e-05
+188	67.5	0
+189	67.5	0
+190	67.5	0
+191	67.5	0
+192	67.5	0
+193	67.5	0
+194	67.5	0
+195	67.5	0
+196	67.5	0.26679
+197	67.5	0.43118
+198	67.5	0.49181
+199	67.5	0.45045
+200	67.5	0.35822
+201	67.5	0.20927
+202	67.5	0.072943
+203	67.5	-0.019244
+204	67.5	-0.096288
+205	67.5	-0.15444
+206	67.5	-0.2227
+207	67.5	-0.35985
+208	67.5	-0.40012
+209	67.5	-0.40063
+210	67.5	-0.44698
+211	67.5	-0.28303
+212	67.5	-0.31971
+213	67.5	-0.3441
+214	67.5	-0.25416
+215	67.5	-0.12401
+216	67.5	-0.050447
+217	67.5	0.022188
+218	67.5	0.077405
+219	67.5	0.12432
+220	67.5	0.20977
+221	67.5	0.30752
+222	67.5	0.41323
+223	67.5	0.52533
+224	67.5	0.56394
+225	67.5	0.55058
+226	67.5	0.48436
+227	67.5	0.43812
+228	67.5	0.41669
+229	67.5	0.39236
+230	67.5	0.36479
+231	67.5	0.35561
+232	67.5	0.35529
+233	67.5	0.3788
+234	67.5	0.47321
+235	67.5	0.57334
+236	67.5	0.72825
+237	67.5	0.78614
+238	67.5	0.76171
+239	67.5	0.66949
+240	67.5	0.51625
+241	67.5	0.60418
+242	67.5	0.6609
+243	67.5	0.60726
+244	67.5	0.5158
+245	67.5	0.32339
+246	67.5	0.37218
+247	67.5	0.19792
+248	67.5	0.36324
+249	67.5	0.15596
+250	67.5	0.086151
+251	67.5	0.01646
+252	67.5	0.0087449
+253	67.5	0.15626
+254	67.5	0.18794
+255	67.5	0.20623
+256	67.5	0.27039
+257	67.5	0.27615
+258	67.5	0.42708
+259	67.5	0.73743
+260	67.5	0.24551
+261	67.5	0.79529
+262	67.5	1.2969
+263	67.5	1.4179
+264	67.5	1.3258
+265	67.5	1.1296
+266	67.5	1.252
+267	67.5	1.5335
+268	67.5	1.5416
+269	67.5	1.3328
+270	67.5	1.1134
+271	67.5	0.96204
+272	67.5	0.64245
+273	67.5	0.16409
+274	67.5	0.44123
+275	67.5	0.20411
+276	67.5	-0.32469
+277	67.5	-0.61466
+278	67.5	-0.59109
+279	67.5	0
+280	67.5	0
+281	67.5	0
+282	67.5	-0.47702
+283	67.5	-2.4885
+284	67.5	-0.87001
+285	67.5	0
+286	67.5	-0.85774
+287	67.5	0
+288	67.5	-2.415
+289	67.5	-4.1131
+290	67.5	-4.1952
+291	67.5	-4.2922
+292	67.5	-1.2611
+293	67.5	0
+294	67.5	0
+295	67.5	0
+296	67.5	-2.2735
+297	67.5	0
+298	67.5	0
+299	67.5	0
+300	67.5	0
+301	67.5	0
+302	67.5	0
+303	67.5	0
+304	67.5	0
+305	67.5	0
+306	67.5	0
+307	67.5	0
+308	67.5	0
+309	67.5	0
+310	67.5	0
+311	67.5	0
+312	67.5	0
+313	67.5	0
+314	67.5	0
+315	67.5	0
+316	67.5	0
+317	67.5	0
+318	67.5	0
+319	67.5	0
+320	67.5	0
+321	67.5	0
+322	67.5	0
+323	67.5	0
+324	67.5	0
+325	67.5	0
+326	67.5	0
+327	67.5	0
+328	67.5	0
+329	67.5	0
+330	67.5	0
+331	67.5	0
+332	67.5	0
+333	67.5	0
+334	67.5	0
+335	67.5	0
+336	67.5	0
+337	67.5	0
+338	67.5	0
+339	67.5	0
+340	67.5	0
+341	67.5	0
+342	67.5	0
+343	67.5	0
+344	67.5	0
+345	67.5	0
+346	67.5	0
+347	67.5	0
+348	67.5	0
+349	67.5	0
+350	67.5	0
+351	67.5	0
+352	67.5	0
+353	67.5	0
+354	67.5	0
+355	67.5	0
+356	67.5	0
+357	67.5	0
+358	67.5	0
+359	67.5	0
+360	67.5	0
+0	68	0
+1	68	0
+2	68	0
+3	68	0
+4	68	0
+5	68	0
+6	68	0
+7	68	0
+8	68	0
+9	68	0
+10	68	0
+11	68	0
+12	68	0
+13	68	0
+14	68	0
+15	68	0
+16	68	1.0616
+17	68	1.0523
+18	68	0.68901
+19	68	0.43587
+20	68	0.20551
+21	68	0.1267
+22	68	0.044606
+23	68	-0.017524
+24	68	-0.098971
+25	68	-0.14443
+26	68	-0.11823
+27	68	-0.071455
+28	68	-0.0018203
+29	68	0.039097
+30	68	0.089296
+31	68	0.14386
+32	68	0.19885
+33	68	0.21592
+34	68	0.23652
+35	68	0.24925
+36	68	0.26691
+37	68	0.25673
+38	68	0.2019
+39	68	0.16506
+40	68	0.12504
+41	68	0
+42	68	0
+43	68	0
+44	68	0.010419
+45	68	0.025565
+46	68	0.015937
+47	68	0
+48	68	0
+49	68	0
+50	68	0.023804
+51	68	0.006909
+52	68	-0.028514
+53	68	-0.076268
+54	68	-0.080336
+55	68	-0.086576
+56	68	-0.093702
+57	68	-0.10387
+58	68	-0.10037
+59	68	-0.084157
+60	68	-0.079657
+61	68	-0.039972
+62	68	0.012845
+63	68	0.047394
+64	68	0.050644
+65	68	0.050752
+66	68	0.11061
+67	68	0.14131
+68	68	0.12159
+69	68	0.11751
+70	68	0.16997
+71	68	0.16754
+72	68	0.13442
+73	68	0.055257
+74	68	0.043033
+75	68	0.063061
+76	68	0.060144
+77	68	0.028208
+78	68	-0.0094073
+79	68	-0.060799
+80	68	-0.10794
+81	68	-0.14033
+82	68	-0.1707
+83	68	-0.16795
+84	68	-0.1642
+85	68	-0.1513
+86	68	-0.11004
+87	68	-0.14864
+88	68	-0.14737
+89	68	-0.1153
+90	68	-0.075574
+91	68	-0.037461
+92	68	0.0058627
+93	68	0.034988
+94	68	0.064769
+95	68	0.09262
+96	68	0.12071
+97	68	0.14879
+98	68	0.17584
+99	68	0.20132
+100	68	0.20811
+101	68	0.19976
+102	68	0.19034
+103	68	0.18351
+104	68	0.17628
+105	68	0.15276
+106	68	0.12925
+107	68	0.10574
+108	68	0.073998
+109	68	0.032106
+110	68	-0.0075014
+111	68	-0.041193
+112	68	-0.054424
+113	68	-0.069331
+114	68	-0.084788
+115	68	-0.10025
+116	68	-0.11624
+117	68	-0.099398
+118	68	-0.083731
+119	68	-0.12106
+120	68	-0.1584
+121	68	-0.1333
+122	68	-0.11097
+123	68	-0.13318
+124	68	-0.16765
+125	68	-0.19655
+126	68	-0.19917
+127	68	-0.21125
+128	68	-0.23138
+129	68	-0.22878
+130	68	-0.22617
+131	68	-0.26057
+132	68	-0.29683
+133	68	-0.24466
+134	68	-0.15163
+135	68	-0.048034
+136	68	-0.0018946
+137	68	-0.0028153
+138	68	0.0075314
+139	68	0.18677
+140	68	0.22335
+141	68	0.26092
+142	68	0.26407
+143	68	0.24913
+144	68	0.27657
+145	68	0.29863
+146	68	0.27942
+147	68	0.28809
+148	68	0.28427
+149	68	0.2558
+150	68	0.23337
+151	68	0.21564
+152	68	0.23156
+153	68	0.22692
+154	68	0.21193
+155	68	0.20837
+156	68	0.20216
+157	68	0.2109
+158	68	0.22887
+159	68	0.24031
+160	68	0.24088
+161	68	0.23347
+162	68	0.24232
+163	68	0.26429
+164	68	0.29436
+165	68	0.28914
+166	68	0.2906
+167	68	0.30227
+168	68	0.29963
+169	68	0.31086
+170	68	0.31956
+171	68	0.34614
+172	68	0.35684
+173	68	0.33048
+174	68	0.29575
+175	68	0.26433
+176	68	0.24433
+177	68	0.22365
+178	68	0.18139
+179	68	0.17075
+180	68	0.12618
+181	68	0.029781
+182	68	-0.0012907
+183	68	-0.029806
+184	68	-0.0075251
+185	68	0
+186	68	0
+187	68	0
+188	68	0
+189	68	0
+190	68	0
+191	68	0
+192	68	0
+193	68	0
+194	68	0.028723
+195	68	0.099581
+196	68	0.40899
+197	68	0.61971
+198	68	0.59646
+199	68	0.53074
+200	68	0.41734
+201	68	0.29003
+202	68	0.19335
+203	68	0.090683
+204	68	-0.0068112
+205	68	-0.055056
+206	68	-0.11305
+207	68	-0.21191
+208	68	-0.22445
+209	68	-0.26288
+210	68	-0.28843
+211	68	-0.20264
+212	68	-0.11913
+213	68	-0.14474
+214	68	-0.075444
+215	68	0.0083464
+216	68	0.084485
+217	68	0.15418
+218	68	0.20942
+219	68	0.26104
+220	68	0.36333
+221	68	0.39366
+222	68	0.4734
+223	68	0.6687
+224	68	0.69412
+225	68	0.70006
+226	68	0.60792
+227	68	0.52922
+228	68	0.49901
+229	68	0.47376
+230	68	0.45238
+231	68	0.44953
+232	68	0.44935
+233	68	0.53628
+234	68	0.62771
+235	68	0.72232
+236	68	0.86996
+237	68	1.0022
+238	68	0.97745
+239	68	0.88321
+240	68	0.76333
+241	68	0.73029
+242	68	0.73509
+243	68	0.74376
+244	68	0.51312
+245	68	0.097314
+246	68	0.022963
+247	68	0.032392
+248	68	0.12739
+249	68	0.077679
+250	68	0.032287
+251	68	0.037202
+252	68	0.0042116
+253	68	0.17624
+254	68	0.2771
+255	68	0.25889
+256	68	0.12253
+257	68	0.15838
+258	68	0.10552
+259	68	0.097402
+260	68	0
+261	68	0.31217
+262	68	0.63387
+263	68	1.366
+264	68	1.0285
+265	68	0.49111
+266	68	1.2669
+267	68	1.7481
+268	68	1.493
+269	68	1.2823
+270	68	1.0886
+271	68	0.89831
+272	68	0.49449
+273	68	0
+274	68	0.065645
+275	68	-0.409
+276	68	-0.79147
+277	68	-0.73349
+278	68	-0.72213
+279	68	0
+280	68	0
+281	68	0
+282	68	-0.43081
+283	68	-1.3778
+284	68	-1.2988
+285	68	0
+286	68	-1.8643
+287	68	-1.3958
+288	68	-4.3691
+289	68	-4.3164
+290	68	-4.4544
+291	68	-4.2158
+292	68	-2.1644
+293	68	0
+294	68	0
+295	68	0
+296	68	-1.3319
+297	68	0
+298	68	0
+299	68	0
+300	68	0
+301	68	0
+302	68	0
+303	68	0
+304	68	0
+305	68	0
+306	68	0
+307	68	0
+308	68	0
+309	68	0
+310	68	0
+311	68	0
+312	68	0
+313	68	0
+314	68	0
+315	68	0
+316	68	0
+317	68	0
+318	68	0
+319	68	0
+320	68	0
+321	68	0
+322	68	0
+323	68	0
+324	68	0
+325	68	0
+326	68	0
+327	68	0
+328	68	0
+329	68	0
+330	68	0
+331	68	0
+332	68	0
+333	68	0
+334	68	0
+335	68	0
+336	68	0
+337	68	0
+338	68	0
+339	68	0
+340	68	0
+341	68	0
+342	68	0
+343	68	0
+344	68	0
+345	68	0
+346	68	0
+347	68	0
+348	68	0
+349	68	0
+350	68	0
+351	68	0
+352	68	0
+353	68	0
+354	68	0
+355	68	0
+356	68	0
+357	68	0
+358	68	0
+359	68	0
+360	68	0
+0	68.5	0
+1	68.5	0
+2	68.5	0
+3	68.5	0
+4	68.5	0
+5	68.5	0
+6	68.5	0
+7	68.5	0
+8	68.5	0
+9	68.5	0
+10	68.5	0
+11	68.5	0
+12	68.5	0
+13	68.5	0
+14	68.5	0
+15	68.5	0
+16	68.5	0
+17	68.5	0
+18	68.5	0.057694
+19	68.5	0.30408
+20	68.5	0.33654
+21	68.5	0.17175
+22	68.5	0.094757
+23	68.5	0.035807
+24	68.5	-0.069385
+25	68.5	-0.11358
+26	68.5	-0.092975
+27	68.5	-0.061762
+28	68.5	0.012664
+29	68.5	0.10515
+30	68.5	0.15295
+31	68.5	0.20384
+32	68.5	0.20807
+33	68.5	0.22637
+34	68.5	0.22549
+35	68.5	0.27342
+36	68.5	0.30558
+37	68.5	0.22709
+38	68.5	0.10364
+39	68.5	0.052664
+40	68.5	0.022936
+41	68.5	0
+42	68.5	0
+43	68.5	0
+44	68.5	0.0070351
+45	68.5	0.0032385
+46	68.5	0.0044864
+47	68.5	0
+48	68.5	0
+49	68.5	-0.0059762
+50	68.5	-0.0087956
+51	68.5	0.0022289
+52	68.5	-0.016625
+53	68.5	-0.12793
+54	68.5	-0.041013
+55	68.5	-0.020133
+56	68.5	-0.052663
+57	68.5	-0.04928
+58	68.5	-0.13439
+59	68.5	-0.078018
+60	68.5	-0.044013
+61	68.5	-0.063948
+62	68.5	-0.020315
+63	68.5	0.0074129
+64	68.5	0.042891
+65	68.5	0.037907
+66	68.5	0.087497
+67	68.5	0.121
+68	68.5	0.055377
+69	68.5	0.11387
+70	68.5	0.17166
+71	68.5	0.19203
+72	68.5	0.17051
+73	68.5	0.065647
+74	68.5	0.0446
+75	68.5	0.040846
+76	68.5	0.069108
+77	68.5	0.030043
+78	68.5	-0.012268
+79	68.5	-0.061188
+80	68.5	-0.10427
+81	68.5	-0.139
+82	68.5	-0.166
+83	68.5	-0.16357
+84	68.5	-0.16364
+85	68.5	-0.15942
+86	68.5	-0.13525
+87	68.5	-0.1435
+88	68.5	-0.16293
+89	68.5	-0.13332
+90	68.5	-0.096168
+91	68.5	-0.05769
+92	68.5	-0.0061413
+93	68.5	0.018227
+94	68.5	0.050134
+95	68.5	0.077039
+96	68.5	0.10912
+97	68.5	0.13454
+98	68.5	0.16083
+99	68.5	0.18433
+100	68.5	0.18495
+101	68.5	0.17536
+102	68.5	0.1661
+103	68.5	0.15846
+104	68.5	0.14689
+105	68.5	0.12705
+106	68.5	0.10274
+107	68.5	0.078421
+108	68.5	0.043659
+109	68.5	0.0017802
+110	68.5	-0.035697
+111	68.5	-0.071215
+112	68.5	-0.084823
+113	68.5	-0.098503
+114	68.5	-0.11396
+115	68.5	-0.12946
+116	68.5	-0.14555
+117	68.5	-0.14486
+118	68.5	-0.16028
+119	68.5	-0.19762
+120	68.5	-0.23495
+121	68.5	-0.21386
+122	68.5	-0.18443
+123	68.5	-0.19019
+124	68.5	-0.2328
+125	68.5	-0.27196
+126	68.5	-0.27654
+127	68.5	-0.27147
+128	68.5	-0.27953
+129	68.5	-0.27692
+130	68.5	-0.28287
+131	68.5	-0.3054
+132	68.5	-0.35472
+133	68.5	-0.3243
+134	68.5	-0.20036
+135	68.5	-0.082243
+136	68.5	-0.021619
+137	68.5	-0.017541
+138	68.5	0.019343
+139	68.5	0.1351
+140	68.5	0.20711
+141	68.5	0.24023
+142	68.5	0.26042
+143	68.5	0.24378
+144	68.5	0.26045
+145	68.5	0.24125
+146	68.5	0.24061
+147	68.5	0.23337
+148	68.5	0.24811
+149	68.5	0.22917
+150	68.5	0.20673
+151	68.5	0.1843
+152	68.5	0.16836
+153	68.5	0.1613
+154	68.5	0.13669
+155	68.5	0.12915
+156	68.5	0.11893
+157	68.5	0.12304
+158	68.5	0.14253
+159	68.5	0.15495
+160	68.5	0.15945
+161	68.5	0.17392
+162	68.5	0.19774
+163	68.5	0.21969
+164	68.5	0.23706
+165	68.5	0.23475
+166	68.5	0.22798
+167	68.5	0.27214
+168	68.5	0.26476
+169	68.5	0.26164
+170	68.5	0.25186
+171	68.5	0.26752
+172	68.5	0.29984
+173	68.5	0.2847
+174	68.5	0.23944
+175	68.5	0.20777
+176	68.5	0.18188
+177	68.5	0.13496
+178	68.5	0.097064
+179	68.5	0.097723
+180	68.5	0.056655
+181	68.5	0.0047472
+182	68.5	-0.016718
+183	68.5	0
+184	68.5	0
+185	68.5	0
+186	68.5	0
+187	68.5	0
+188	68.5	0
+189	68.5	0
+190	68.5	0
+191	68.5	0
+192	68.5	0
+193	68.5	0.02537
+194	68.5	0.13361
+195	68.5	0.30207
+196	68.5	0.62577
+197	68.5	0.73056
+198	68.5	0.69531
+199	68.5	0.60124
+200	68.5	0.46148
+201	68.5	0.39196
+202	68.5	0.30573
+203	68.5	0.19761
+204	68.5	0.099103
+205	68.5	0.055101
+206	68.5	-0.0062662
+207	68.5	-0.045384
+208	68.5	-0.086008
+209	68.5	-0.11874
+210	68.5	-0.12227
+211	68.5	-0.055951
+212	68.5	0.052309
+213	68.5	0.045705
+214	68.5	0.10565
+215	68.5	0.036009
+216	68.5	0.2198
+217	68.5	0.29224
+218	68.5	0.35956
+219	68.5	0.40706
+220	68.5	0.44515
+221	68.5	0.38667
+222	68.5	0.50246
+223	68.5	0.57558
+224	68.5	0.62839
+225	68.5	0.58649
+226	68.5	0.70499
+227	68.5	0.65234
+228	68.5	0.58133
+229	68.5	0.512
+230	68.5	0.52781
+231	68.5	0.54236
+232	68.5	0.58291
+233	68.5	0.64805
+234	68.5	0.75106
+235	68.5	0.83217
+236	68.5	0.83085
+237	68.5	1.0386
+238	68.5	1.1448
+239	68.5	0.98642
+240	68.5	0.71161
+241	68.5	0.7202
+242	68.5	0.5772
+243	68.5	0.78923
+244	68.5	0.68921
+245	68.5	0.28477
+246	68.5	0.023901
+247	68.5	0.16703
+248	68.5	0.126
+249	68.5	0.056261
+250	68.5	0.099883
+251	68.5	0.015124
+252	68.5	0.027558
+253	68.5	0.045024
+254	68.5	0.060274
+255	68.5	0.12239
+256	68.5	0.081029
+257	68.5	-0.00057801
+258	68.5	-0.0006226
+259	68.5	0
+260	68.5	0
+261	68.5	0
+262	68.5	0.0091714
+263	68.5	1.0387
+264	68.5	0.64602
+265	68.5	0.10457
+266	68.5	0.91138
+267	68.5	1.5339
+268	68.5	1.4257
+269	68.5	0.94413
+270	68.5	0.69612
+271	68.5	0.48263
+272	68.5	0.23673
+273	68.5	0
+274	68.5	0
+275	68.5	-0.508
+276	68.5	-1.2541
+277	68.5	-0.83551
+278	68.5	-0.11673
+279	68.5	-0.17683
+280	68.5	0
+281	68.5	0
+282	68.5	0
+283	68.5	-0.13478
+284	68.5	0
+285	68.5	0
+286	68.5	-2.7008
+287	68.5	-3.7161
+288	68.5	-4.5357
+289	68.5	-4.5552
+290	68.5	-1.2936
+291	68.5	-1.91
+292	68.5	-1.8833
+293	68.5	0
+294	68.5	0
+295	68.5	0
+296	68.5	0
+297	68.5	0
+298	68.5	0
+299	68.5	0
+300	68.5	0
+301	68.5	0
+302	68.5	0
+303	68.5	0
+304	68.5	0
+305	68.5	0
+306	68.5	0
+307	68.5	0
+308	68.5	0
+309	68.5	0
+310	68.5	0
+311	68.5	0
+312	68.5	0
+313	68.5	0
+314	68.5	0
+315	68.5	0
+316	68.5	0
+317	68.5	0
+318	68.5	0
+319	68.5	0
+320	68.5	0
+321	68.5	0
+322	68.5	0
+323	68.5	0
+324	68.5	0
+325	68.5	0
+326	68.5	0
+327	68.5	0
+328	68.5	0
+329	68.5	0
+330	68.5	0
+331	68.5	0
+332	68.5	0
+333	68.5	0
+334	68.5	0
+335	68.5	0
+336	68.5	0
+337	68.5	0
+338	68.5	0
+339	68.5	0
+340	68.5	0
+341	68.5	0
+342	68.5	0
+343	68.5	0
+344	68.5	0
+345	68.5	0
+346	68.5	0
+347	68.5	0
+348	68.5	0
+349	68.5	0
+350	68.5	0
+351	68.5	0
+352	68.5	0
+353	68.5	0
+354	68.5	0
+355	68.5	0
+356	68.5	0
+357	68.5	0
+358	68.5	0
+359	68.5	0
+360	68.5	0
+0	69	0
+1	69	0
+2	69	0
+3	69	0
+4	69	0
+5	69	0
+6	69	0
+7	69	0
+8	69	0
+9	69	0
+10	69	0
+11	69	0
+12	69	0
+13	69	0
+14	69	0
+15	69	0
+16	69	0
+17	69	0.2256
+18	69	0.85925
+19	69	0.61175
+20	69	0.37927
+21	69	0.17252
+22	69	0.13813
+23	69	0.070817
+24	69	-0.038291
+25	69	-0.081317
+26	69	-0.091989
+27	69	-0.062223
+28	69	0.070312
+29	69	0.1619
+30	69	0.20029
+31	69	0.21107
+32	69	0.19544
+33	69	0.15263
+34	69	0.13615
+35	69	0.15713
+36	69	0.062307
+37	69	0.1676
+38	69	0.00010472
+39	69	0
+40	69	0
+41	69	0
+42	69	0
+43	69	0
+44	69	0
+45	69	0
+46	69	0
+47	69	0
+48	69	-0.0026767
+49	69	-0.010128
+50	69	-0.0093447
+51	69	0
+52	69	-0.0093685
+53	69	-0.070556
+54	69	-0.008643
+55	69	0
+56	69	0
+57	69	0
+58	69	-0.070997
+59	69	-0.038192
+60	69	-0.01648
+61	69	-0.086704
+62	69	-0.079282
+63	69	-0.087612
+64	69	0.014696
+65	69	0.014914
+66	69	0.026552
+67	69	0
+68	69	0
+69	69	0.12952
+70	69	0.1823
+71	69	0.2218
+72	69	0.090822
+73	69	0.0080565
+74	69	0.062029
+75	69	0.030167
+76	69	0.086452
+77	69	0.04921
+78	69	0.0051623
+79	69	-0.062274
+80	69	-0.1006
+81	69	-0.13405
+82	69	-0.15526
+83	69	-0.15465
+84	69	-0.16195
+85	69	-0.17744
+86	69	-0.16843
+87	69	-0.13557
+88	69	-0.17076
+89	69	-0.14256
+90	69	-0.10864
+91	69	-0.073875
+92	69	-0.03865
+93	69	-0.0012195
+94	69	0.032628
+95	69	0.060369
+96	69	0.089242
+97	69	0.11691
+98	69	0.14065
+99	69	0.16123
+100	69	0.15736
+101	69	0.14932
+102	69	0.14021
+103	69	0.12867
+104	69	0.11708
+105	69	0.10238
+106	69	0.078066
+107	69	0.05375
+108	69	0.013415
+109	69	-0.028376
+110	69	-0.063894
+111	69	-0.099411
+112	69	-0.11522
+113	69	-0.12845
+114	69	-0.14313
+115	69	-0.15877
+116	69	-0.17486
+117	69	-0.19218
+118	69	-0.23684
+119	69	-0.27417
+120	69	-0.31151
+121	69	-0.29442
+122	69	-0.265
+123	69	-0.25114
+124	69	-0.2887
+125	69	-0.32778
+126	69	-0.3696
+127	69	-0.37151
+128	69	-0.35891
+129	69	-0.36596
+130	69	-0.34554
+131	69	-0.35153
+132	69	-0.40261
+133	69	-0.37607
+134	69	-0.24691
+135	69	-0.12101
+136	69	-0.052579
+137	69	-0.031354
+138	69	0.033635
+139	69	0.13255
+140	69	0.17697
+141	69	0.20998
+142	69	0.25703
+143	69	0.24425
+144	69	0.23033
+145	69	0.23002
+146	69	0.21964
+147	69	0.20071
+148	69	0.2037
+149	69	0.19407
+150	69	0.16613
+151	69	0.13818
+152	69	0.10899
+153	69	0.095688
+154	69	0.071079
+155	69	0.049929
+156	69	0.038993
+157	69	0.042673
+158	69	0.059147
+159	69	0.073571
+160	69	0.081808
+161	69	0.091288
+162	69	0.12547
+163	69	0.1517
+164	69	0.17367
+165	69	0.17804
+166	69	0.16267
+167	69	0.19262
+168	69	0.20649
+169	69	0.14664
+170	69	0.12903
+171	69	0.075241
+172	69	0.21226
+173	69	0.23019
+174	69	0.18084
+175	69	0.1458
+176	69	0.097562
+177	69	0.046018
+178	69	0.022212
+179	69	0.033356
+180	69	0.012194
+181	69	0.0022973
+182	69	0
+183	69	0
+184	69	0
+185	69	0
+186	69	0
+187	69	0
+188	69	0
+189	69	0
+190	69	0
+191	69	0
+192	69	0
+193	69	0.00010788
+194	69	0.074004
+195	69	0.19036
+196	69	0.23817
+197	69	0.41955
+198	69	0.73434
+199	69	0.61386
+200	69	0.54019
+201	69	0.48458
+202	69	0.3873
+203	69	0.30009
+204	69	0.2049
+205	69	0.15511
+206	69	0.1003
+207	69	0.067243
+208	69	0.036524
+209	69	0.017743
+210	69	0.033486
+211	69	0.094949
+212	69	0.16677
+213	69	0.21107
+214	69	0.28349
+215	69	0.052101
+216	69	0.25757
+217	69	0.44188
+218	69	0.48613
+219	69	0.50117
+220	69	0.47481
+221	69	0.37437
+222	69	0.44622
+223	69	0.24814
+224	69	0.30042
+225	69	0.47317
+226	69	0.36777
+227	69	0.35637
+228	69	0.49416
+229	69	0.3334
+230	69	0.48194
+231	69	0.59539
+232	69	0.67726
+233	69	0.74945
+234	69	0.66177
+235	69	0.58392
+236	69	0.68638
+237	69	0.96717
+238	69	1.2118
+239	69	0.96663
+240	69	0.58092
+241	69	0.4429
+242	69	0.38267
+243	69	0.45984
+244	69	0.57078
+245	69	0.02776
+246	69	0.20052
+247	69	0.5175
+248	69	0.39877
+249	69	0.30794
+250	69	0.27952
+251	69	0.2302
+252	69	0.19941
+253	69	0.29382
+254	69	0.31387
+255	69	0.074978
+256	69	0.13684
+257	69	-0.00078382
+258	69	-0.00093598
+259	69	0
+260	69	0
+261	69	0.14584
+262	69	0.27407
+263	69	0.91856
+264	69	0.20039
+265	69	0
+266	69	0.61897
+267	69	1.3579
+268	69	0.91297
+269	69	0.44472
+270	69	0.22934
+271	69	0.13433
+272	69	0.10434
+273	69	0
+274	69	0
+275	69	-0.52856
+276	69	-1.4649
+277	69	-1.2814
+278	69	-0.74338
+279	69	-0.21999
+280	69	0
+281	69	-0.10727
+282	69	-0.22706
+283	69	0
+284	69	0
+285	69	-1.5978
+286	69	-3.2942
+287	69	-4.8355
+288	69	-2.734
+289	69	-4.1885
+290	69	0
+291	69	-0.25635
+292	69	-1.9473
+293	69	0
+294	69	0
+295	69	0
+296	69	0
+297	69	0
+298	69	0
+299	69	0
+300	69	0
+301	69	0
+302	69	0
+303	69	0
+304	69	0
+305	69	0
+306	69	0
+307	69	0
+308	69	0
+309	69	0
+310	69	0
+311	69	0
+312	69	0
+313	69	0
+314	69	0
+315	69	0
+316	69	0
+317	69	0
+318	69	0
+319	69	0
+320	69	0
+321	69	0
+322	69	0
+323	69	0
+324	69	0
+325	69	0
+326	69	0
+327	69	0
+328	69	0
+329	69	0
+330	69	0
+331	69	0
+332	69	0
+333	69	0
+334	69	0
+335	69	0
+336	69	0
+337	69	0
+338	69	0
+339	69	0
+340	69	0
+341	69	0
+342	69	0
+343	69	0
+344	69	0
+345	69	0
+346	69	0
+347	69	0
+348	69	0
+349	69	0
+350	69	0
+351	69	0
+352	69	0
+353	69	0
+354	69	0
+355	69	0
+356	69	0
+357	69	0
+358	69	0
+359	69	0
+360	69	0
+0	69.5	0
+1	69.5	0
+2	69.5	0
+3	69.5	0
+4	69.5	0
+5	69.5	0
+6	69.5	0
+7	69.5	0
+8	69.5	0
+9	69.5	0
+10	69.5	0
+11	69.5	0
+12	69.5	0
+13	69.5	0
+14	69.5	0
+15	69.5	0
+16	69.5	0
+17	69.5	0.013567
+18	69.5	0
+19	69.5	0.22284
+20	69.5	0.1539
+21	69.5	0.15764
+22	69.5	0.13116
+23	69.5	0.080778
+24	69.5	-0.0031517
+25	69.5	-0.063758
+26	69.5	-0.083544
+27	69.5	-0.094116
+28	69.5	0.060435
+29	69.5	0.16307
+30	69.5	0.1118
+31	69.5	0.17597
+32	69.5	0.15223
+33	69.5	0.022299
+34	69.5	0
+35	69.5	0.035345
+36	69.5	0
+37	69.5	0
+38	69.5	0
+39	69.5	0
+40	69.5	0
+41	69.5	0
+42	69.5	0
+43	69.5	0
+44	69.5	0
+45	69.5	0
+46	69.5	0
+47	69.5	0
+48	69.5	-0.00073561
+49	69.5	-0.0031825
+50	69.5	0
+51	69.5	0
+52	69.5	0
+53	69.5	0
+54	69.5	0
+55	69.5	0
+56	69.5	0
+57	69.5	0
+58	69.5	0
+59	69.5	0
+60	69.5	-0.027896
+61	69.5	-0.08966
+62	69.5	-0.075632
+63	69.5	-0.10181
+64	69.5	-0.020034
+65	69.5	0
+66	69.5	0
+67	69.5	0.014981
+68	69.5	0.064741
+69	69.5	0.16227
+70	69.5	0.19588
+71	69.5	0.11833
+72	69.5	0.19149
+73	69.5	0
+74	69.5	0.058854
+75	69.5	0.070983
+76	69.5	0.11122
+77	69.5	0.074476
+78	69.5	0.025611
+79	69.5	-0.036333
+80	69.5	-0.081505
+81	69.5	-0.11469
+82	69.5	-0.14322
+83	69.5	-0.15278
+84	69.5	-0.16027
+85	69.5	-0.18069
+86	69.5	-0.18679
+87	69.5	-0.1406
+88	69.5	-0.11361
+89	69.5	-0.15757
+90	69.5	-0.12445
+91	69.5	-0.086398
+92	69.5	-0.054139
+93	69.5	-0.020795
+94	69.5	0.013385
+95	69.5	0.040408
+96	69.5	0.067942
+97	69.5	0.094433
+98	69.5	0.11742
+99	69.5	0.1337
+100	69.5	0.12793
+101	69.5	0.12149
+102	69.5	0.11092
+103	69.5	0.098879
+104	69.5	0.087266
+105	69.5	0.075564
+106	69.5	0.053395
+107	69.5	0.02596
+108	69.5	-0.016637
+109	69.5	-0.056572
+110	69.5	-0.09209
+111	69.5	-0.12761
+112	69.5	-0.14562
+113	69.5	-0.15885
+114	69.5	-0.17231
+115	69.5	-0.18808
+116	69.5	-0.20661
+117	69.5	-0.22562
+118	69.5	-0.26208
+119	69.5	-0.31486
+120	69.5	-0.36764
+121	69.5	-0.34893
+122	69.5	-0.30743
+123	69.5	-0.31575
+124	69.5	-0.34537
+125	69.5	-0.3836
+126	69.5	-0.42542
+127	69.5	-0.46724
+128	69.5	-0.45704
+129	69.5	-0.45611
+130	69.5	-0.38872
+131	69.5	-0.37913
+132	69.5	-0.45898
+133	69.5	-0.40866
+134	69.5	-0.2815
+135	69.5	-0.1676
+136	69.5	-0.086297
+137	69.5	-0.022426
+138	69.5	0.046005
+139	69.5	0.10539
+140	69.5	0.14672
+141	69.5	0.1836
+142	69.5	0.2308
+143	69.5	0.24891
+144	69.5	0.21942
+145	69.5	0.21911
+146	69.5	0.19817
+147	69.5	0.17825
+148	69.5	0.16703
+149	69.5	0.15163
+150	69.5	0.11943
+151	69.5	0.09089
+152	69.5	0.056588
+153	69.5	0.034282
+154	69.5	0.0091787
+155	69.5	-0.019877
+156	69.5	-0.036093
+157	69.5	-0.03048
+158	69.5	-0.016141
+159	69.5	0.0095593
+160	69.5	0.035926
+161	69.5	0.029741
+162	69.5	0.061822
+163	69.5	0.0766
+164	69.5	0.10312
+165	69.5	0.11394
+166	69.5	0.060766
+167	69.5	0.10426
+168	69.5	0.054287
+169	69.5	0
+170	69.5	0
+171	69.5	0
+172	69.5	0.13084
+173	69.5	0.12877
+174	69.5	0.10523
+175	69.5	0.088428
+176	69.5	0.021222
+177	69.5	0.019013
+178	69.5	0.015865
+179	69.5	0.00049737
+180	69.5	0
+181	69.5	0
+182	69.5	0
+183	69.5	0
+184	69.5	0
+185	69.5	0
+186	69.5	0
+187	69.5	0
+188	69.5	0
+189	69.5	0
+190	69.5	0
+191	69.5	0
+192	69.5	0
+193	69.5	0
+194	69.5	0.014395
+195	69.5	0
+196	69.5	0
+197	69.5	0.40773
+198	69.5	0.48464
+199	69.5	0.56679
+200	69.5	0.55747
+201	69.5	0.53864
+202	69.5	0.466
+203	69.5	0.38725
+204	69.5	0.31069
+205	69.5	0.25122
+206	69.5	0.20687
+207	69.5	0.17104
+208	69.5	0.12798
+209	69.5	0.062949
+210	69.5	0.12036
+211	69.5	0.1634
+212	69.5	0.2118
+213	69.5	0.35483
+214	69.5	0.39488
+215	69.5	0.30535
+216	69.5	0.23546
+217	69.5	0.50737
+218	69.5	0.40506
+219	69.5	0.5453
+220	69.5	0.49076
+221	69.5	0.15531
+222	69.5	0.19011
+223	69.5	0.03194
+224	69.5	0.14356
+225	69.5	0.21629
+226	69.5	0.02604
+227	69.5	0.035025
+228	69.5	0.32685
+229	69.5	0.12669
+230	69.5	0.33253
+231	69.5	0.43352
+232	69.5	0.41904
+233	69.5	0.69921
+234	69.5	0.33088
+235	69.5	0.32812
+236	69.5	0.26861
+237	69.5	0.72544
+238	69.5	1.03
+239	69.5	0.75275
+240	69.5	0.21795
+241	69.5	0.035579
+242	69.5	0.004935
+243	69.5	0.0061641
+244	69.5	0.81318
+245	69.5	0.85787
+246	69.5	0.96893
+247	69.5	0.90656
+248	69.5	0.76008
+249	69.5	0.60008
+250	69.5	0.51725
+251	69.5	0.498
+252	69.5	0.38153
+253	69.5	0.51521
+254	69.5	0.6233
+255	69.5	0.5515
+256	69.5	0.29539
+257	69.5	-0.00038063
+258	69.5	-0.00092392
+259	69.5	-0.00016007
+260	69.5	0
+261	69.5	0.25948
+262	69.5	0.78811
+263	69.5	0.84279
+264	69.5	0.1328
+265	69.5	0.0038242
+266	69.5	0.052553
+267	69.5	0.85654
+268	69.5	0.50275
+269	69.5	0.15933
+270	69.5	0.053763
+271	69.5	0.00073057
+272	69.5	0
+273	69.5	0
+274	69.5	0
+275	69.5	-0.90558
+276	69.5	-1.2953
+277	69.5	-2.5328
+278	69.5	-0.47877
+279	69.5	-0.12996
+280	69.5	-0.29675
+281	69.5	-0.23619
+282	69.5	-0.17885
+283	69.5	-0.75631
+284	69.5	-2.113
+285	69.5	-4.0369
+286	69.5	-2.3936
+287	69.5	-1.6988
+288	69.5	-0.90499
+289	69.5	-3.2302
+290	69.5	0
+291	69.5	0
+292	69.5	-0.58251
+293	69.5	0
+294	69.5	0
+295	69.5	0
+296	69.5	0
+297	69.5	0
+298	69.5	0
+299	69.5	0
+300	69.5	0
+301	69.5	0
+302	69.5	0
+303	69.5	0
+304	69.5	0
+305	69.5	0
+306	69.5	0
+307	69.5	0
+308	69.5	0
+309	69.5	0
+310	69.5	0
+311	69.5	0
+312	69.5	0
+313	69.5	0
+314	69.5	0
+315	69.5	0
+316	69.5	0
+317	69.5	0
+318	69.5	0
+319	69.5	0
+320	69.5	0
+321	69.5	0
+322	69.5	0
+323	69.5	0
+324	69.5	0
+325	69.5	0
+326	69.5	0
+327	69.5	0
+328	69.5	0
+329	69.5	0
+330	69.5	0
+331	69.5	0
+332	69.5	0
+333	69.5	0
+334	69.5	0
+335	69.5	0
+336	69.5	0
+337	69.5	0
+338	69.5	0
+339	69.5	0
+340	69.5	0
+341	69.5	0
+342	69.5	0
+343	69.5	0
+344	69.5	0
+345	69.5	0
+346	69.5	0
+347	69.5	0
+348	69.5	0
+349	69.5	0
+350	69.5	0
+351	69.5	0
+352	69.5	0
+353	69.5	0
+354	69.5	0
+355	69.5	0
+356	69.5	0
+357	69.5	0
+358	69.5	0
+359	69.5	0
+360	69.5	0
+0	70	0
+1	70	0
+2	70	0
+3	70	0
+4	70	0
+5	70	0
+6	70	0
+7	70	0
+8	70	0
+9	70	0
+10	70	0
+11	70	0
+12	70	0
+13	70	0
+14	70	0
+15	70	0
+16	70	0
+17	70	0
+18	70	0
+19	70	0
+20	70	0
+21	70	0.007963
+22	70	0.024106
+23	70	0.062949
+24	70	0.024276
+25	70	-0.04012
+26	70	-0.1029
+27	70	-0.098482
+28	70	0.030247
+29	70	0.066037
+30	70	0.018871
+31	70	0.1025
+32	70	0.088567
+33	70	0
+34	70	0
+35	70	0
+36	70	0
+37	70	0
+38	70	0
+39	70	0
+40	70	0
+41	70	0
+42	70	0
+43	70	0
+44	70	0
+45	70	0
+46	70	0
+47	70	0
+48	70	0
+49	70	0
+50	70	0
+51	70	0
+52	70	0
+53	70	0
+54	70	0
+55	70	0
+56	70	0
+57	70	0
+58	70	0
+59	70	0
+60	70	-0.018794
+61	70	-0.052263
+62	70	-0.010024
+63	70	0
+64	70	0
+65	70	0
+66	70	0
+67	70	0.020429
+68	70	0.097457
+69	70	0.18252
+70	70	0.19516
+71	70	0.097646
+72	70	0.18345
+73	70	0.067374
+74	70	0.054146
+75	70	0.10259
+76	70	0.13244
+77	70	0.095615
+78	70	0.044812
+79	70	-0.0074128
+80	70	-0.061805
+81	70	-0.095645
+82	70	-0.12623
+83	70	-0.14159
+84	70	-0.15284
+85	70	-0.17976
+86	70	-0.19443
+87	70	-0.18762
+88	70	-0.07659
+89	70	-0.16998
+90	70	-0.1378
+91	70	-0.10997
+92	70	-0.075252
+93	70	-0.040895
+94	70	-0.0078306
+95	70	0.020736
+96	70	0.04507
+97	70	0.070811
+98	70	0.093738
+99	70	0.10427
+100	70	0.098499
+101	70	0.092742
+102	70	0.08183
+103	70	0.069089
+104	70	0.057454
+105	70	0.045752
+106	70	0.028723
+107	70	-0.0040915
+108	70	-0.0445
+109	70	-0.087603
+110	70	-0.12227
+111	70	-0.15592
+112	70	-0.17602
+113	70	-0.18798
+114	70	-0.19969
+115	70	-0.22121
+116	70	-0.2413
+117	70	-0.25949
+118	70	-0.28485
+119	70	-0.33263
+120	70	-0.38561
+121	70	-0.38052
+122	70	-0.37164
+123	70	-0.38063
+124	70	-0.41361
+125	70	-0.40661
+126	70	-0.44031
+127	70	-0.46101
+128	70	-0.49813
+129	70	-0.52282
+130	70	-0.43191
+131	70	-0.40673
+132	70	-0.46136
+133	70	-0.4275
+134	70	-0.31608
+135	70	-0.21418
+136	70	-0.12337
+137	70	-0.046088
+138	70	0.02005
+139	70	0.066544
+140	70	0.11272
+141	70	0.15737
+142	70	0.20345
+143	70	0.23957
+144	70	0.21247
+145	70	0.20253
+146	70	0.17671
+147	70	0.15579
+148	70	0.14073
+149	70	0.11065
+150	70	0.074221
+151	70	0.042684
+152	70	0.0092215
+153	70	-0.024123
+154	70	-0.050719
+155	70	-0.087145
+156	70	-0.097064
+157	70	-0.090599
+158	70	-0.0913
+159	70	-0.064705
+160	70	0.00012611
+161	70	0.014809
+162	70	0.031976
+163	70	0.026807
+164	70	0.023841
+165	70	0.017485
+166	70	0
+167	70	0.022331
+168	70	0.056831
+169	70	0
+170	70	0
+171	70	0
+172	70	0.044567
+173	70	0.060133
+174	70	0.040407
+175	70	0.024564
+176	70	0.0044143
+177	70	0
+178	70	0
+179	70	0
+180	70	0
+181	70	0
+182	70	-3.4655e-06
+183	70	0
+184	70	0
+185	70	0
+186	70	0
+187	70	0
+188	70	0
+189	70	0
+190	70	0
+191	70	0
+192	70	0
+193	70	0
+194	70	0
+195	70	0
+196	70	0
+197	70	0
+198	70	0.17253
+199	70	0.394
+200	70	0.55525
+201	70	0.57814
+202	70	0.49801
+203	70	0.41732
+204	70	0.39044
+205	70	0.33369
+206	70	0.29885
+207	70	0.23447
+208	70	0.1427
+209	70	0.094929
+210	70	0.12756
+211	70	0.17377
+212	70	0.22284
+213	70	0.17369
+214	70	0.1073
+215	70	0.26529
+216	70	0.33952
+217	70	0.34736
+218	70	0.068019
+219	70	0.28029
+220	70	0.21358
+221	70	0
+222	70	0
+223	70	0
+224	70	0
+225	70	0.00065665
+226	70	0.002168
+227	70	0
+228	70	0.014414
+229	70	0
+230	70	0.2819
+231	70	0.17317
+232	70	0.26402
+233	70	0.41137
+234	70	0.036065
+235	70	0.15087
+236	70	0
+237	70	0.34473
+238	70	0.58813
+239	70	0.18459
+240	70	0.062616
+241	70	0
+242	70	0.13375
+243	70	0.2346
+244	70	0.43217
+245	70	0.55387
+246	70	1.2996
+247	70	1.1801
+248	70	1.0349
+249	70	0.81871
+250	70	0.74571
+251	70	0.75411
+252	70	0.67121
+253	70	0.73634
+254	70	0.79881
+255	70	0.66739
+256	70	0.40609
+257	70	0.043626
+258	70	0.010269
+259	70	0
+260	70	0
+261	70	0.10135
+262	70	0
+263	70	0.20778
+264	70	0.18498
+265	70	0.18068
+266	70	0.23729
+267	70	0.59383
+268	70	0.15426
+269	70	0.019505
+270	70	0
+271	70	0
+272	70	0
+273	70	-0.023928
+274	70	-0.77874
+275	70	-1.2922
+276	70	-1.3255
+277	70	-4.0585
+278	70	-2.4853
+279	70	-1.2436
+280	70	-1.6313
+281	70	-0.14014
+282	70	-1.143
+283	70	-2.854
+284	70	-4.5533
+285	70	-4.9765
+286	70	0
+287	70	0
+288	70	0
+289	70	-0.7011
+290	70	0
+291	70	0
+292	70	0
+293	70	0
+294	70	0
+295	70	0
+296	70	0
+297	70	0
+298	70	0
+299	70	0
+300	70	0
+301	70	0
+302	70	0
+303	70	0
+304	70	0
+305	70	0
+306	70	0
+307	70	0
+308	70	0
+309	70	0
+310	70	0
+311	70	0
+312	70	0
+313	70	0
+314	70	0
+315	70	0
+316	70	0
+317	70	0
+318	70	0
+319	70	0
+320	70	0
+321	70	0
+322	70	0
+323	70	0
+324	70	0
+325	70	0
+326	70	0
+327	70	0
+328	70	0
+329	70	0
+330	70	0
+331	70	0
+332	70	0
+333	70	0
+334	70	0
+335	70	0
+336	70	0
+337	70	0
+338	70	0
+339	70	0
+340	70	0
+341	70	0
+342	70	0
+343	70	0
+344	70	0
+345	70	0
+346	70	0
+347	70	0
+348	70	0
+349	70	0
+350	70	0
+351	70	0
+352	70	0
+353	70	0
+354	70	0
+355	70	0
+356	70	0
+357	70	0
+358	70	0
+359	70	0
+360	70	0
+0	70.5	0
+1	70.5	0
+2	70.5	0
+3	70.5	0
+4	70.5	0
+5	70.5	0
+6	70.5	0
+7	70.5	0
+8	70.5	0
+9	70.5	0
+10	70.5	0
+11	70.5	0
+12	70.5	0
+13	70.5	0
+14	70.5	0
+15	70.5	0
+16	70.5	0
+17	70.5	0
+18	70.5	0
+19	70.5	0
+20	70.5	0
+21	70.5	0
+22	70.5	0
+23	70.5	0
+24	70.5	0.007452
+25	70.5	-0.018182
+26	70.5	-0.06037
+27	70.5	-0.04759
+28	70.5	0.0021785
+29	70.5	-0.032054
+30	70.5	0.046801
+31	70.5	0.017178
+32	70.5	0
+33	70.5	0
+34	70.5	0
+35	70.5	0
+36	70.5	0
+37	70.5	0
+38	70.5	0
+39	70.5	0
+40	70.5	0
+41	70.5	0
+42	70.5	0
+43	70.5	0
+44	70.5	0
+45	70.5	0
+46	70.5	0
+47	70.5	0
+48	70.5	0
+49	70.5	0
+50	70.5	0
+51	70.5	0
+52	70.5	0
+53	70.5	-0.63862
+54	70.5	-0.35237
+55	70.5	-0.31069
+56	70.5	-0.0073188
+57	70.5	0
+58	70.5	0
+59	70.5	0
+60	70.5	0
+61	70.5	-0.0013155
+62	70.5	0
+63	70.5	0
+64	70.5	0
+65	70.5	0
+66	70.5	0
+67	70.5	0.0034271
+68	70.5	0.055566
+69	70.5	0.19471
+70	70.5	0.18669
+71	70.5	0.20224
+72	70.5	0.18187
+73	70.5	0.050395
+74	70.5	0.038766
+75	70.5	0.094882
+76	70.5	0.13716
+77	70.5	0.10859
+78	70.5	0.039127
+79	70.5	0.013105
+80	70.5	-0.040112
+81	70.5	-0.075963
+82	70.5	-0.10242
+83	70.5	-0.12497
+84	70.5	-0.14378
+85	70.5	-0.17845
+86	70.5	-0.19631
+87	70.5	-0.19526
+88	70.5	-0.14469
+89	70.5	-0.16492
+90	70.5	-0.1411
+91	70.5	-0.11963
+92	70.5	-0.095423
+93	70.5	-0.059784
+94	70.5	-0.028024
+95	70.5	-0.00093803
+96	70.5	0.020492
+97	70.5	0.046017
+98	70.5	0.069111
+99	70.5	0.076979
+100	70.5	0.0721
+101	70.5	0.067221
+102	70.5	0.05461
+103	70.5	0.039299
+104	70.5	0.027642
+105	70.5	0.01594
+106	70.5	0.0040519
+107	70.5	-0.031116
+108	70.5	-0.067079
+109	70.5	-0.11256
+110	70.5	-0.15628
+111	70.5	-0.18842
+112	70.5	-0.19127
+113	70.5	-0.20298
+114	70.5	-0.22359
+115	70.5	-0.25469
+116	70.5	-0.27549
+117	70.5	-0.29336
+118	70.5	-0.31752
+119	70.5	-0.35041
+120	70.5	-0.40388
+121	70.5	-0.43705
+122	70.5	-0.43584
+123	70.5	-0.44551
+124	70.5	-0.4794
+125	70.5	-0.45527
+126	70.5	-0.43805
+127	70.5	-0.42056
+128	70.5	-0.42111
+129	70.5	-0.43744
+130	70.5	-0.26189
+131	70.5	-0.33427
+132	70.5	-0.41529
+133	70.5	-0.40085
+134	70.5	-0.29443
+135	70.5	-0.24418
+136	70.5	-0.15257
+137	70.5	-0.073027
+138	70.5	-0.0059039
+139	70.5	0.031166
+140	70.5	0.068565
+141	70.5	0.11843
+142	70.5	0.16301
+143	70.5	0.18538
+144	70.5	0.18933
+145	70.5	0.17907
+146	70.5	0.15378
+147	70.5	0.12377
+148	70.5	0.090432
+149	70.5	0.074154
+150	70.5	0.036251
+151	70.5	0.0048167
+152	70.5	-0.00098092
+153	70.5	-0.034202
+154	70.5	-0.061883
+155	70.5	-0.081618
+156	70.5	-0.14181
+157	70.5	-0.12186
+158	70.5	-0.10499
+159	70.5	-0.067663
+160	70.5	0
+161	70.5	0.00094664
+162	70.5	0.0021302
+163	70.5	0
+164	70.5	0
+165	70.5	0
+166	70.5	0
+167	70.5	0
+168	70.5	0
+169	70.5	0
+170	70.5	0
+171	70.5	0
+172	70.5	0.0099183
+173	70.5	0.011785
+174	70.5	0
+175	70.5	0
+176	70.5	0
+177	70.5	0
+178	70.5	0
+179	70.5	0
+180	70.5	0
+181	70.5	-8.4208e-05
+182	70.5	-0.00012918
+183	70.5	0
+184	70.5	0
+185	70.5	0
+186	70.5	0
+187	70.5	0
+188	70.5	0
+189	70.5	0
+190	70.5	0
+191	70.5	0
+192	70.5	0
+193	70.5	0
+194	70.5	0
+195	70.5	0
+196	70.5	0
+197	70.5	0
+198	70.5	0.022664
+199	70.5	0.068563
+200	70.5	0.35441
+201	70.5	0.33126
+202	70.5	0.49916
+203	70.5	0.45033
+204	70.5	0.35536
+205	70.5	0.33462
+206	70.5	0.30598
+207	70.5	0.20442
+208	70.5	0.064152
+209	70.5	0.0094048
+210	70.5	0.036623
+211	70.5	0.07468
+212	70.5	0.032151
+213	70.5	0.038134
+214	70.5	0
+215	70.5	0
+216	70.5	0.010153
+217	70.5	0.012762
+218	70.5	0.00092775
+219	70.5	0
+220	70.5	0
+221	70.5	0
+222	70.5	0
+223	70.5	0
+224	70.5	0
+225	70.5	0
+226	70.5	0
+227	70.5	0
+228	70.5	0
+229	70.5	0
+230	70.5	0
+231	70.5	0
+232	70.5	0.17571
+233	70.5	0.19773
+234	70.5	0
+235	70.5	0.013461
+236	70.5	0
+237	70.5	0.055016
+238	70.5	0.0068165
+239	70.5	0
+240	70.5	0
+241	70.5	0
+242	70.5	0.043098
+243	70.5	0.092897
+244	70.5	0.27251
+245	70.5	0.31249
+246	70.5	1.3487
+247	70.5	1.2115
+248	70.5	1.1832
+249	70.5	1.0524
+250	70.5	0.96249
+251	70.5	0.86616
+252	70.5	0.86382
+253	70.5	0.87873
+254	70.5	0.76049
+255	70.5	0.56062
+256	70.5	0.51262
+257	70.5	0.15133
+258	70.5	0.023037
+259	70.5	0
+260	70.5	0
+261	70.5	0
+262	70.5	0
+263	70.5	-6.8228e-06
+264	70.5	0.10006
+265	70.5	0.17244
+266	70.5	0.34498
+267	70.5	0.23413
+268	70.5	0.045922
+269	70.5	0
+270	70.5	0
+271	70.5	-0.10891
+272	70.5	-0.36037
+273	70.5	-0.74793
+274	70.5	-1.6245
+275	70.5	-2.794
+276	70.5	-3.5867
+277	70.5	-5.1363
+278	70.5	-4.501
+279	70.5	-2.7356
+280	70.5	-2.597
+281	70.5	-0.65101
+282	70.5	-3.5649
+283	70.5	-4.2733
+284	70.5	-4.8229
+285	70.5	-3.2499
+286	70.5	-1.9772
+287	70.5	0
+288	70.5	0
+289	70.5	0
+290	70.5	0
+291	70.5	0
+292	70.5	0
+293	70.5	0
+294	70.5	0
+295	70.5	0
+296	70.5	0
+297	70.5	0
+298	70.5	0
+299	70.5	0
+300	70.5	0
+301	70.5	0
+302	70.5	0
+303	70.5	0
+304	70.5	0
+305	70.5	0
+306	70.5	0
+307	70.5	0
+308	70.5	0
+309	70.5	0
+310	70.5	0
+311	70.5	0
+312	70.5	0
+313	70.5	0
+314	70.5	0
+315	70.5	0
+316	70.5	0
+317	70.5	0
+318	70.5	0
+319	70.5	0
+320	70.5	0
+321	70.5	0
+322	70.5	0
+323	70.5	0
+324	70.5	0
+325	70.5	0
+326	70.5	0
+327	70.5	0
+328	70.5	0
+329	70.5	0
+330	70.5	0
+331	70.5	0
+332	70.5	0
+333	70.5	0
+334	70.5	0
+335	70.5	0
+336	70.5	0
+337	70.5	0
+338	70.5	0
+339	70.5	0
+340	70.5	0
+341	70.5	0
+342	70.5	0
+343	70.5	0
+344	70.5	0
+345	70.5	0
+346	70.5	0
+347	70.5	0
+348	70.5	0
+349	70.5	0
+350	70.5	0
+351	70.5	0
+352	70.5	0
+353	70.5	0
+354	70.5	0
+355	70.5	0
+356	70.5	0
+357	70.5	0
+358	70.5	0
+359	70.5	0
+360	70.5	0
+0	71	0
+1	71	0
+2	71	0
+3	71	0
+4	71	0
+5	71	0
+6	71	0
+7	71	0
+8	71	0
+9	71	0
+10	71	0
+11	71	0
+12	71	0
+13	71	0
+14	71	0
+15	71	0
+16	71	0
+17	71	0
+18	71	0
+19	71	0
+20	71	0
+21	71	0
+22	71	0
+23	71	0
+24	71	0
+25	71	-0.004303
+26	71	0
+27	71	0
+28	71	0.00050761
+29	71	-0.0058483
+30	71	0.016822
+31	71	0
+32	71	0
+33	71	0
+34	71	0
+35	71	0
+36	71	0
+37	71	0
+38	71	0
+39	71	0
+40	71	0
+41	71	0
+42	71	0
+43	71	0
+44	71	0
+45	71	0
+46	71	0
+47	71	0
+48	71	0
+49	71	0
+50	71	0
+51	71	0
+52	71	0
+53	71	-1.3628
+54	71	-1.6569
+55	71	-1.0088
+56	71	-0.033327
+57	71	0
+58	71	0
+59	71	0
+60	71	0
+61	71	0
+62	71	0
+63	71	0
+64	71	0
+65	71	0
+66	71	-0.0001515
+67	71	-0.0011848
+68	71	-0.0056706
+69	71	0.085547
+70	71	0.18096
+71	71	0.18409
+72	71	0.12458
+73	71	0.0015619
+74	71	0.033213
+75	71	0.047957
+76	71	0.052743
+77	71	0.11884
+78	71	0.018075
+79	71	0.007995
+80	71	-0.01274
+81	71	-0.05406
+82	71	-0.062942
+83	71	-0.090413
+84	71	-0.13892
+85	71	-0.17475
+86	71	-0.18497
+87	71	-0.18985
+88	71	-0.17832
+89	71	-0.16817
+90	71	-0.14571
+91	71	-0.13164
+92	71	-0.11148
+93	71	-0.077894
+94	71	-0.047844
+95	71	-0.02282
+96	71	-0.0014959
+97	71	0.021223
+98	71	0.033952
+99	71	0.032698
+100	71	0.046579
+101	71	0.0417
+102	71	0.029403
+103	71	0.011413
+104	71	-0.00012972
+105	71	-0.011488
+106	71	-0.023041
+107	71	-0.053696
+108	71	-0.089659
+109	71	-0.13752
+110	71	-0.18571
+111	71	-0.20712
+112	71	-0.20628
+113	71	-0.2212
+114	71	-0.25083
+115	71	-0.2821
+116	71	-0.31
+117	71	-0.32723
+118	71	-0.35018
+119	71	-0.37753
+120	71	-0.42642
+121	71	-0.46822
+122	71	-0.47684
+123	71	-0.51163
+124	71	-0.56267
+125	71	-0.51653
+126	71	-0.41686
+127	71	-0.22021
+128	71	-0.28608
+129	71	-0.4068
+130	71	-0.10617
+131	71	-0.11742
+132	71	-0.39757
+133	71	-0.31909
+134	71	-0.20651
+135	71	-0.23893
+136	71	-0.15159
+137	71	-0.068311
+138	71	-0.025023
+139	71	0.0035948
+140	71	0.030998
+141	71	0.077221
+142	71	0.12258
+143	71	0.13159
+144	71	0.12464
+145	71	0.11481
+146	71	0.089519
+147	71	0.063463
+148	71	0.043794
+149	71	0.027684
+150	71	9.1592e-05
+151	71	-0.01288
+152	71	-0.0044247
+153	71	-0.0040241
+154	71	0
+155	71	-0.0072672
+156	71	-0.08752
+157	71	-0.10266
+158	71	-0.06862
+159	71	-0.021752
+160	71	0
+161	71	0
+162	71	0
+163	71	0
+164	71	0
+165	71	0
+166	71	0
+167	71	0
+168	71	0
+169	71	0
+170	71	0
+171	71	0
+172	71	0
+173	71	0
+174	71	0
+175	71	0
+176	71	0
+177	71	0
+178	71	0
+179	71	0
+180	71	-9.1161e-05
+181	71	-0.00026922
+182	71	-0.0002549
+183	71	0
+184	71	0
+185	71	0
+186	71	0
+187	71	0
+188	71	0
+189	71	0
+190	71	0
+191	71	0
+192	71	0
+193	71	0
+194	71	0
+195	71	0
+196	71	0
+197	71	0
+198	71	0
+199	71	0
+200	71	0.059299
+201	71	0.10802
+202	71	0.26621
+203	71	0.17754
+204	71	0.15465
+205	71	0.14874
+206	71	0.22176
+207	71	0.12757
+208	71	0
+209	71	0
+210	71	0
+211	71	0
+212	71	0
+213	71	0
+214	71	0
+215	71	0
+216	71	0
+217	71	0
+218	71	0
+219	71	0
+220	71	0
+221	71	0
+222	71	0
+223	71	0
+224	71	0
+225	71	0
+226	71	0
+227	71	0
+228	71	0
+229	71	0
+230	71	0
+231	71	0
+232	71	0
+233	71	0
+234	71	0
+235	71	0
+236	71	0
+237	71	0.4216
+238	71	0.19494
+239	71	0
+240	71	0
+241	71	0
+242	71	0.012983
+243	71	0.51226
+244	71	0.87017
+245	71	1.2358
+246	71	1.2446
+247	71	1.1186
+248	71	0.95721
+249	71	0.87078
+250	71	0.84366
+251	71	0.83742
+252	71	0.85973
+253	71	0.86197
+254	71	0.69429
+255	71	0.38432
+256	71	0.06267
+257	71	0.099089
+258	71	0.015572
+259	71	0
+260	71	0
+261	71	0
+262	71	0
+263	71	-1.0399e-05
+264	71	-0.020752
+265	71	0.029092
+266	71	0.11238
+267	71	0.037737
+268	71	0.025961
+269	71	0
+270	71	-0.21576
+271	71	-0.57005
+272	71	-0.43933
+273	71	-1.2055
+274	71	-2.1647
+275	71	-2.3551
+276	71	-4.1525
+277	71	-4.892
+278	71	-5.5632
+279	71	-3.6489
+280	71	-3.5001
+281	71	-2.8267
+282	71	-4.3421
+283	71	-2.8039
+284	71	-5.0364
+285	71	-2.8541
+286	71	0
+287	71	0
+288	71	0
+289	71	0
+290	71	0
+291	71	0
+292	71	0
+293	71	0
+294	71	0
+295	71	0
+296	71	0
+297	71	0
+298	71	0
+299	71	0
+300	71	0
+301	71	0
+302	71	0
+303	71	0
+304	71	0
+305	71	0
+306	71	0
+307	71	0
+308	71	0
+309	71	0
+310	71	0
+311	71	0
+312	71	0
+313	71	0
+314	71	0
+315	71	0
+316	71	0
+317	71	0
+318	71	0
+319	71	0
+320	71	0
+321	71	0
+322	71	0
+323	71	0
+324	71	0
+325	71	0
+326	71	0
+327	71	0
+328	71	0
+329	71	0
+330	71	0
+331	71	0
+332	71	0
+333	71	0
+334	71	0
+335	71	0
+336	71	0
+337	71	0
+338	71	0
+339	71	0
+340	71	0
+341	71	0
+342	71	0
+343	71	0
+344	71	0
+345	71	0
+346	71	0
+347	71	0
+348	71	0
+349	71	0
+350	71	0
+351	71	0
+352	71	0
+353	71	0
+354	71	0
+355	71	0
+356	71	0
+357	71	0
+358	71	0
+359	71	0
+360	71	0
+0	71.5	0
+1	71.5	0
+2	71.5	0
+3	71.5	0
+4	71.5	0
+5	71.5	0
+6	71.5	0
+7	71.5	0
+8	71.5	0
+9	71.5	0
+10	71.5	0
+11	71.5	0
+12	71.5	0
+13	71.5	0
+14	71.5	0
+15	71.5	0
+16	71.5	0
+17	71.5	0
+18	71.5	0
+19	71.5	0
+20	71.5	0
+21	71.5	0
+22	71.5	0
+23	71.5	0
+24	71.5	0
+25	71.5	0
+26	71.5	0
+27	71.5	0
+28	71.5	0
+29	71.5	0
+30	71.5	0
+31	71.5	0
+32	71.5	0
+33	71.5	0
+34	71.5	0
+35	71.5	0
+36	71.5	0
+37	71.5	0
+38	71.5	0
+39	71.5	0
+40	71.5	0
+41	71.5	0
+42	71.5	0
+43	71.5	0
+44	71.5	0
+45	71.5	0
+46	71.5	0
+47	71.5	0
+48	71.5	0
+49	71.5	0
+50	71.5	0
+51	71.5	0
+52	71.5	-0.31143
+53	71.5	-3.5025
+54	71.5	-3.5288
+55	71.5	-2.7505
+56	71.5	-0.74055
+57	71.5	0
+58	71.5	0
+59	71.5	0
+60	71.5	0
+61	71.5	0
+62	71.5	0
+63	71.5	0
+64	71.5	0
+65	71.5	0
+66	71.5	0
+67	71.5	-0.00013655
+68	71.5	-0.015641
+69	71.5	0.023727
+70	71.5	0.10441
+71	71.5	0.13923
+72	71.5	0.080575
+73	71.5	0.0063155
+74	71.5	0.021404
+75	71.5	0.033956
+76	71.5	0.0055792
+77	71.5	0.070807
+78	71.5	0.052763
+79	71.5	0.017622
+80	71.5	0.0039451
+81	71.5	-0.021587
+82	71.5	-0.027251
+83	71.5	-0.060023
+84	71.5	-0.13133
+85	71.5	-0.16896
+86	71.5	-0.17797
+87	71.5	-0.18405
+88	71.5	-0.17968
+89	71.5	-0.17304
+90	71.5	-0.1619
+91	71.5	-0.15076
+92	71.5	-0.12763
+93	71.5	-0.098245
+94	71.5	-0.069411
+95	71.5	-0.051285
+96	71.5	-0.029412
+97	71.5	-0.011585
+98	71.5	-0.0020586
+99	71.5	-0.013405
+100	71.5	0.0024498
+101	71.5	0.016178
+102	71.5	0.003721
+103	71.5	-0.016725
+104	71.5	-0.02558
+105	71.5	-0.036938
+106	71.5	-0.049147
+107	71.5	-0.077787
+108	71.5	-0.11201
+109	71.5	-0.1518
+110	71.5	-0.19159
+111	71.5	-0.22031
+112	71.5	-0.22128
+113	71.5	-0.24844
+114	71.5	-0.27623
+115	71.5	-0.31828
+116	71.5	-0.34608
+117	71.5	-0.36408
+118	71.5	-0.32895
+119	71.5	-0.34832
+120	71.5	-0.42314
+121	71.5	-0.4957
+122	71.5	-0.51081
+123	71.5	-0.54449
+124	71.5	-0.64856
+125	71.5	-0.60496
+126	71.5	-0.34125
+127	71.5	0.11331
+128	71.5	-0.088737
+129	71.5	-0.23162
+130	71.5	-0.068559
+131	71.5	0
+132	71.5	-0.20524
+133	71.5	-0.21122
+134	71.5	-0.055785
+135	71.5	-0.17668
+136	71.5	-0.088753
+137	71.5	-0.016971
+138	71.5	-0.0010675
+139	71.5	-0.0058001
+140	71.5	0.017722
+141	71.5	0.03937
+142	71.5	0.082048
+143	71.5	0.078092
+144	71.5	0.061017
+145	71.5	0.046886
+146	71.5	0.027918
+147	71.5	0.024783
+148	71.5	-0.0014925
+149	71.5	-0.018208
+150	71.5	-0.022355
+151	71.5	-0.0067572
+152	71.5	0
+153	71.5	0
+154	71.5	0
+155	71.5	0
+156	71.5	-0.017025
+157	71.5	-0.032492
+158	71.5	-0.019403
+159	71.5	0
+160	71.5	0
+161	71.5	0
+162	71.5	0
+163	71.5	0
+164	71.5	0
+165	71.5	0
+166	71.5	0
+167	71.5	0
+168	71.5	0
+169	71.5	0
+170	71.5	0
+171	71.5	0
+172	71.5	0
+173	71.5	0
+174	71.5	0
+175	71.5	0
+176	71.5	0
+177	71.5	0
+178	71.5	0
+179	71.5	0
+180	71.5	-0.00013417
+181	71.5	-0.00030163
+182	71.5	-0.00021081
+183	71.5	0
+184	71.5	0
+185	71.5	0
+186	71.5	0
+187	71.5	0
+188	71.5	0
+189	71.5	0
+190	71.5	0
+191	71.5	0
+192	71.5	0
+193	71.5	0
+194	71.5	0
+195	71.5	0
+196	71.5	0
+197	71.5	0
+198	71.5	0
+199	71.5	0
+200	71.5	0
+201	71.5	0
+202	71.5	0.10846
+203	71.5	0
+204	71.5	0
+205	71.5	0
+206	71.5	0.093653
+207	71.5	4.8385e-05
+208	71.5	0
+209	71.5	0
+210	71.5	0
+211	71.5	0
+212	71.5	0
+213	71.5	0
+214	71.5	0
+215	71.5	0
+216	71.5	0
+217	71.5	0
+218	71.5	0
+219	71.5	0
+220	71.5	0
+221	71.5	0
+222	71.5	0
+223	71.5	0
+224	71.5	0
+225	71.5	0
+226	71.5	0
+227	71.5	0
+228	71.5	0
+229	71.5	0
+230	71.5	0
+231	71.5	0
+232	71.5	0
+233	71.5	0
+234	71.5	0.041142
+235	71.5	0.15964
+236	71.5	0.042764
+237	71.5	0.48943
+238	71.5	0.64587
+239	71.5	0.21077
+240	71.5	0
+241	71.5	0.098449
+242	71.5	0.19042
+243	71.5	0.69816
+244	71.5	0.83366
+245	71.5	0.8206
+246	71.5	0.8752
+247	71.5	0.79086
+248	71.5	0.67469
+249	71.5	0.64799
+250	71.5	0.66028
+251	71.5	0.65593
+252	71.5	0.77092
+253	71.5	0.7091
+254	71.5	0.57574
+255	71.5	0.29286
+256	71.5	0
+257	71.5	0
+258	71.5	0
+259	71.5	0.0072424
+260	71.5	0
+261	71.5	0.055676
+262	71.5	-0.034408
+263	71.5	-0.012268
+264	71.5	-0.12671
+265	71.5	-0.22038
+266	71.5	-0.15447
+267	71.5	0
+268	71.5	0
+269	71.5	0
+270	71.5	-0.43681
+271	71.5	-1.1164
+272	71.5	-0.90633
+273	71.5	-1.5816
+274	71.5	-1.1132
+275	71.5	-0.87895
+276	71.5	-3.2288
+277	71.5	-3.4467
+278	71.5	-3.7275
+279	71.5	-3.4582
+280	71.5	-3.4697
+281	71.5	-0.39224
+282	71.5	-3.0732
+283	71.5	0
+284	71.5	-2.3994
+285	71.5	0
+286	71.5	0
+287	71.5	0
+288	71.5	0
+289	71.5	0
+290	71.5	0
+291	71.5	0
+292	71.5	0
+293	71.5	0
+294	71.5	0
+295	71.5	0
+296	71.5	0
+297	71.5	0
+298	71.5	0
+299	71.5	0
+300	71.5	0
+301	71.5	0
+302	71.5	0
+303	71.5	0
+304	71.5	0
+305	71.5	0
+306	71.5	0
+307	71.5	0
+308	71.5	0
+309	71.5	0
+310	71.5	0
+311	71.5	0
+312	71.5	0
+313	71.5	0
+314	71.5	0
+315	71.5	0
+316	71.5	0
+317	71.5	0
+318	71.5	0
+319	71.5	0
+320	71.5	0
+321	71.5	0
+322	71.5	0
+323	71.5	0
+324	71.5	0
+325	71.5	0
+326	71.5	0
+327	71.5	0
+328	71.5	0
+329	71.5	0
+330	71.5	0
+331	71.5	0
+332	71.5	0
+333	71.5	0
+334	71.5	0
+335	71.5	0
+336	71.5	0
+337	71.5	0
+338	71.5	0
+339	71.5	0
+340	71.5	0
+341	71.5	0
+342	71.5	0
+343	71.5	0
+344	71.5	0
+345	71.5	0
+346	71.5	0
+347	71.5	0
+348	71.5	0
+349	71.5	0
+350	71.5	0
+351	71.5	0
+352	71.5	0
+353	71.5	0
+354	71.5	0
+355	71.5	0
+356	71.5	0
+357	71.5	0
+358	71.5	0
+359	71.5	0
+360	71.5	0
+0	72	0
+1	72	0
+2	72	0
+3	72	0
+4	72	0
+5	72	0
+6	72	0
+7	72	0
+8	72	0
+9	72	0
+10	72	0
+11	72	0
+12	72	0
+13	72	0
+14	72	0
+15	72	0
+16	72	0
+17	72	0
+18	72	0
+19	72	0
+20	72	0
+21	72	0
+22	72	0
+23	72	0
+24	72	0
+25	72	0
+26	72	0
+27	72	0
+28	72	0
+29	72	0
+30	72	0
+31	72	0
+32	72	0
+33	72	0
+34	72	0
+35	72	0
+36	72	0
+37	72	0
+38	72	0
+39	72	0
+40	72	0
+41	72	0
+42	72	0
+43	72	0
+44	72	0
+45	72	0
+46	72	0
+47	72	0
+48	72	0
+49	72	0
+50	72	0
+51	72	0
+52	72	-0.8461
+53	72	-4.9721
+54	72	-8.2866
+55	72	-5.6624
+56	72	-0.73234
+57	72	0
+58	72	0
+59	72	0
+60	72	0
+61	72	0
+62	72	0
+63	72	0
+64	72	0
+65	72	0
+66	72	0
+67	72	0
+68	72	0
+69	72	-0.026949
+70	72	-0.039985
+71	72	0.078525
+72	72	0.035744
+73	72	0.004871
+74	72	0.010503
+75	72	0.0076765
+76	72	0.01099
+77	72	0.032339
+78	72	0.047227
+79	72	0.030365
+80	72	0.00060319
+81	72	-0.0048024
+82	72	-0.00069189
+83	72	-0.067266
+84	72	-0.14184
+85	72	-0.16318
+86	72	-0.17508
+87	72	-0.18059
+88	72	-0.1843
+89	72	-0.19119
+90	72	-0.18037
+91	72	-0.16956
+92	72	-0.14893
+93	72	-0.11923
+94	72	-0.098791
+95	72	-0.081919
+96	72	-0.060046
+97	72	-0.043908
+98	72	-0.047873
+99	72	-0.053658
+100	72	-0.044163
+101	72	-0.027799
+102	72	-0.027482
+103	72	-0.043376
+104	72	-0.051029
+105	72	-0.062387
+106	72	-0.075253
+107	72	-0.10221
+108	72	-0.12972
+109	72	-0.14609
+110	72	-0.18588
+111	72	-0.21945
+112	72	-0.23128
+113	72	-0.25189
+114	72	-0.28985
+115	72	-0.34809
+116	72	-0.37871
+117	72	-0.39273
+118	72	-0.32235
+119	72	-0.32576
+120	72	-0.37361
+121	72	-0.42568
+122	72	-0.36949
+123	72	-0.52207
+124	72	-0.66535
+125	72	-0.61738
+126	72	-0.27338
+127	72	0.22617
+128	72	0.20027
+129	72	-0.0516
+130	72	-0.075705
+131	72	0
+132	72	-0.034265
+133	72	-0.039024
+134	72	-0.035176
+135	72	-0.079699
+136	72	0
+137	72	0
+138	72	0
+139	72	-1.0365e-05
+140	72	0.0094028
+141	72	0.025133
+142	72	0.035026
+143	72	0.026545
+144	72	0.0096056
+145	72	-0.002693
+146	72	0.014541
+147	72	0.0096619
+148	72	-0.0071294
+149	72	-0.0076434
+150	72	-0.010665
+151	72	-0.00418
+152	72	0
+153	72	0
+154	72	0
+155	72	0
+156	72	0
+157	72	0
+158	72	0
+159	72	0
+160	72	0
+161	72	0
+162	72	0
+163	72	0
+164	72	0
+165	72	0
+166	72	0
+167	72	0
+168	72	0
+169	72	0
+170	72	0
+171	72	0
+172	72	0
+173	72	0
+174	72	0
+175	72	0
+176	72	0
+177	72	0
+178	72	0
+179	72	0
+180	72	0
+181	72	-0.00012255
+182	72	-0.00016069
+183	72	0
+184	72	0
+185	72	0
+186	72	0
+187	72	0
+188	72	0
+189	72	0
+190	72	0
+191	72	0
+192	72	0
+193	72	0
+194	72	0
+195	72	0
+196	72	0
+197	72	0
+198	72	0
+199	72	0
+200	72	0
+201	72	0
+202	72	0
+203	72	0
+204	72	0
+205	72	0
+206	72	0
+207	72	0
+208	72	0
+209	72	0
+210	72	0
+211	72	0
+212	72	0
+213	72	0
+214	72	0
+215	72	0
+216	72	0
+217	72	0
+218	72	0
+219	72	0
+220	72	0
+221	72	0
+222	72	0
+223	72	0
+224	72	0
+225	72	0
+226	72	0
+227	72	0
+228	72	0
+229	72	0
+230	72	0
+231	72	0
+232	72	0
+233	72	0
+234	72	0
+235	72	0.26079
+236	72	0.43033
+237	72	0.56629
+238	72	0.82132
+239	72	0.4838
+240	72	0.23675
+241	72	0.20646
+242	72	0.47583
+243	72	0.74145
+244	72	0.74088
+245	72	0.74923
+246	72	0.73067
+247	72	0.63573
+248	72	0.34555
+249	72	0.47685
+250	72	0.62473
+251	72	0.39
+252	72	0.51606
+253	72	0.56208
+254	72	0.46902
+255	72	0.20547
+256	72	0
+257	72	0.00033772
+258	72	0
+259	72	0.10658
+260	72	-0.014768
+261	72	-0.021498
+262	72	-0.10523
+263	72	-0.16247
+264	72	-0.085813
+265	72	-0.42113
+266	72	-0.18807
+267	72	0
+268	72	0
+269	72	0
+270	72	-0.67991
+271	72	-1.6215
+272	72	-1.774
+273	72	-1.2382
+274	72	-0.70961
+275	72	-1.3563
+276	72	-2.7287
+277	72	-3.446
+278	72	-3.8488
+279	72	-2.2155
+280	72	-1.3185
+281	72	-2.6112
+282	72	-1.173
+283	72	0
+284	72	0
+285	72	0
+286	72	0
+287	72	0
+288	72	0
+289	72	0
+290	72	0
+291	72	0
+292	72	0
+293	72	0
+294	72	0
+295	72	0
+296	72	0
+297	72	0
+298	72	0
+299	72	0
+300	72	0
+301	72	0
+302	72	0
+303	72	0
+304	72	0
+305	72	0
+306	72	0
+307	72	0
+308	72	0
+309	72	0
+310	72	0
+311	72	0
+312	72	0
+313	72	0
+314	72	0
+315	72	0
+316	72	0
+317	72	0
+318	72	0
+319	72	0
+320	72	0
+321	72	0
+322	72	0
+323	72	0
+324	72	0
+325	72	0
+326	72	0
+327	72	0
+328	72	0
+329	72	0
+330	72	0
+331	72	0
+332	72	0
+333	72	0
+334	72	0
+335	72	0
+336	72	0
+337	72	0
+338	72	0
+339	72	0
+340	72	0
+341	72	0
+342	72	0
+343	72	0
+344	72	0
+345	72	0
+346	72	0
+347	72	0
+348	72	0
+349	72	0
+350	72	0
+351	72	0
+352	72	0
+353	72	0
+354	72	0
+355	72	0
+356	72	0
+357	72	0
+358	72	0
+359	72	0
+360	72	0
+0	72.5	0
+1	72.5	0
+2	72.5	0
+3	72.5	0
+4	72.5	0
+5	72.5	0
+6	72.5	0
+7	72.5	0
+8	72.5	0
+9	72.5	0
+10	72.5	0
+11	72.5	0
+12	72.5	0
+13	72.5	0
+14	72.5	0
+15	72.5	0
+16	72.5	0
+17	72.5	0
+18	72.5	0
+19	72.5	0
+20	72.5	0
+21	72.5	0
+22	72.5	0
+23	72.5	0
+24	72.5	0
+25	72.5	0
+26	72.5	0
+27	72.5	0
+28	72.5	0
+29	72.5	0
+30	72.5	0
+31	72.5	0
+32	72.5	0
+33	72.5	0
+34	72.5	0
+35	72.5	0
+36	72.5	0
+37	72.5	0
+38	72.5	0
+39	72.5	0
+40	72.5	0
+41	72.5	0
+42	72.5	0
+43	72.5	0
+44	72.5	0
+45	72.5	0
+46	72.5	0
+47	72.5	0
+48	72.5	0
+49	72.5	0
+50	72.5	0
+51	72.5	0
+52	72.5	-0.82285
+53	72.5	-4.6361
+54	72.5	-9.1831
+55	72.5	-8.3532
+56	72.5	-0.042666
+57	72.5	0.0063531
+58	72.5	0
+59	72.5	0
+60	72.5	0
+61	72.5	0
+62	72.5	0
+63	72.5	0
+64	72.5	0
+65	72.5	0
+66	72.5	0
+67	72.5	0
+68	72.5	0
+69	72.5	-0.013237
+70	72.5	-0.058293
+71	72.5	-0.039193
+72	72.5	0.0031504
+73	72.5	0.00075821
+74	72.5	0.0038266
+75	72.5	0.0033237
+76	72.5	9.6777e-07
+77	72.5	0.0035737
+78	72.5	0.0013068
+79	72.5	0.0012045
+80	72.5	-0.0022645
+81	72.5	-0.0015537
+82	72.5	-0.026743
+83	72.5	-0.085793
+84	72.5	-0.14989
+85	72.5	-0.15929
+86	72.5	-0.17219
+87	72.5	-0.18693
+88	72.5	-0.19812
+89	72.5	-0.20894
+90	72.5	-0.19813
+91	72.5	-0.19173
+92	72.5	-0.16989
+93	72.5	-0.14269
+94	72.5	-0.12817
+95	72.5	-0.11255
+96	72.5	-0.092888
+97	72.5	-0.076612
+98	72.5	-0.12069
+99	72.5	-0.093911
+100	72.5	-0.090776
+101	72.5	-0.091001
+102	72.5	-0.066718
+103	72.5	-0.070026
+104	72.5	-0.077438
+105	72.5	-0.088335
+106	72.5	-0.10136
+107	72.5	-0.11519
+108	72.5	-0.11209
+109	72.5	-0.14963
+110	72.5	-0.17892
+111	72.5	-0.21267
+112	72.5	-0.23141
+113	72.5	-0.25369
+114	72.5	-0.30381
+115	72.5	-0.35243
+116	72.5	-0.38071
+117	72.5	-0.40098
+118	72.5	-0.34012
+119	72.5	-0.22823
+120	72.5	-0.24114
+121	72.5	-0.23608
+122	72.5	-0.12936
+123	72.5	-0.20515
+124	72.5	-0.54276
+125	72.5	-0.61799
+126	72.5	-0.24366
+127	72.5	0.19199
+128	72.5	0.27452
+129	72.5	-0.018619
+130	72.5	0
+131	72.5	0
+132	72.5	0
+133	72.5	0
+134	72.5	0
+135	72.5	0
+136	72.5	0
+137	72.5	0
+138	72.5	0
+139	72.5	-0.002518
+140	72.5	-0.0023842
+141	72.5	0.0085181
+142	72.5	-0.035491
+143	72.5	-0.029262
+144	72.5	-0.041064
+145	72.5	-0.025035
+146	72.5	-0.012606
+147	72.5	-0.0021974
+148	72.5	-0.0087486
+149	72.5	-0.0053379
+150	72.5	0
+151	72.5	0
+152	72.5	0
+153	72.5	0
+154	72.5	0
+155	72.5	0
+156	72.5	0
+157	72.5	0
+158	72.5	0
+159	72.5	0
+160	72.5	0
+161	72.5	0
+162	72.5	0
+163	72.5	0
+164	72.5	0
+165	72.5	0
+166	72.5	0
+167	72.5	0
+168	72.5	0
+169	72.5	0
+170	72.5	0
+171	72.5	0
+172	72.5	0
+173	72.5	0
+174	72.5	0
+175	72.5	0
+176	72.5	0
+177	72.5	0
+178	72.5	0
+179	72.5	0
+180	72.5	0
+181	72.5	0
+182	72.5	-0.00011058
+183	72.5	0
+184	72.5	0
+185	72.5	0
+186	72.5	0
+187	72.5	0
+188	72.5	0
+189	72.5	0
+190	72.5	0
+191	72.5	0
+192	72.5	0
+193	72.5	0
+194	72.5	0
+195	72.5	0
+196	72.5	0
+197	72.5	0
+198	72.5	0
+199	72.5	0
+200	72.5	0
+201	72.5	0
+202	72.5	0
+203	72.5	0
+204	72.5	0
+205	72.5	0
+206	72.5	0
+207	72.5	0
+208	72.5	0
+209	72.5	0
+210	72.5	0
+211	72.5	0
+212	72.5	0
+213	72.5	0
+214	72.5	0
+215	72.5	0
+216	72.5	0
+217	72.5	0
+218	72.5	0
+219	72.5	0
+220	72.5	0
+221	72.5	0
+222	72.5	0
+223	72.5	0
+224	72.5	0
+225	72.5	0
+226	72.5	0
+227	72.5	0
+228	72.5	0
+229	72.5	0
+230	72.5	0
+231	72.5	0
+232	72.5	0
+233	72.5	0
+234	72.5	0
+235	72.5	0.13839
+236	72.5	0.71779
+237	72.5	0.80044
+238	72.5	0.82623
+239	72.5	0.76526
+240	72.5	0.70486
+241	72.5	0.52522
+242	72.5	0.18719
+243	72.5	0.47946
+244	72.5	0.63913
+245	72.5	0.70752
+246	72.5	0.66619
+247	72.5	0.46756
+248	72.5	0.24634
+249	72.5	0.29048
+250	72.5	0.4249
+251	72.5	0.29639
+252	72.5	0.1889
+253	72.5	0.43295
+254	72.5	0.34926
+255	72.5	0.092729
+256	72.5	0
+257	72.5	0.023329
+258	72.5	0.0091316
+259	72.5	0.092965
+260	72.5	-0.070588
+261	72.5	-0.21546
+262	72.5	-0.35998
+263	72.5	-0.22158
+264	72.5	-0.075359
+265	72.5	-0.54307
+266	72.5	-0.44155
+267	72.5	-0.21153
+268	72.5	-0.18727
+269	72.5	0
+270	72.5	-0.70355
+271	72.5	-1.8091
+272	72.5	-2.176
+273	72.5	-1.5364
+274	72.5	-0.19933
+275	72.5	-2.3194
+276	72.5	-3.1801
+277	72.5	-2.9378
+278	72.5	-2.9953
+279	72.5	-2.5014
+280	72.5	-0.44058
+281	72.5	-0.042666
+282	72.5	0
+283	72.5	0
+284	72.5	0
+285	72.5	0
+286	72.5	0
+287	72.5	0
+288	72.5	0
+289	72.5	0
+290	72.5	0
+291	72.5	0
+292	72.5	0
+293	72.5	0
+294	72.5	0
+295	72.5	0
+296	72.5	0
+297	72.5	0
+298	72.5	0
+299	72.5	0
+300	72.5	0
+301	72.5	0
+302	72.5	0
+303	72.5	0
+304	72.5	0
+305	72.5	0
+306	72.5	0
+307	72.5	0
+308	72.5	0
+309	72.5	0
+310	72.5	0
+311	72.5	0
+312	72.5	0
+313	72.5	0
+314	72.5	0
+315	72.5	0
+316	72.5	0
+317	72.5	0
+318	72.5	0
+319	72.5	0
+320	72.5	0
+321	72.5	0
+322	72.5	0
+323	72.5	0
+324	72.5	0
+325	72.5	0
+326	72.5	0
+327	72.5	0
+328	72.5	0
+329	72.5	0
+330	72.5	0
+331	72.5	0
+332	72.5	0
+333	72.5	0
+334	72.5	0
+335	72.5	0
+336	72.5	0
+337	72.5	0
+338	72.5	0
+339	72.5	0
+340	72.5	0
+341	72.5	0
+342	72.5	0
+343	72.5	0
+344	72.5	0
+345	72.5	0
+346	72.5	0
+347	72.5	0
+348	72.5	0
+349	72.5	0
+350	72.5	0
+351	72.5	0
+352	72.5	0
+353	72.5	0
+354	72.5	0
+355	72.5	0
+356	72.5	0
+357	72.5	0
+358	72.5	0
+359	72.5	0
+360	72.5	0
+0	73	0
+1	73	0
+2	73	0
+3	73	0
+4	73	0
+5	73	0
+6	73	0
+7	73	0
+8	73	0
+9	73	0
+10	73	0
+11	73	0
+12	73	0
+13	73	0
+14	73	0
+15	73	0
+16	73	0
+17	73	0
+18	73	0
+19	73	0
+20	73	0
+21	73	0
+22	73	0
+23	73	0
+24	73	0
+25	73	0
+26	73	0
+27	73	0
+28	73	0
+29	73	0
+30	73	0
+31	73	0
+32	73	0
+33	73	0
+34	73	0
+35	73	0
+36	73	0
+37	73	0
+38	73	0
+39	73	0
+40	73	0
+41	73	0
+42	73	0
+43	73	0
+44	73	0
+45	73	0
+46	73	0
+47	73	0
+48	73	0
+49	73	0
+50	73	0
+51	73	0
+52	73	-0.43443
+53	73	-4.1371
+54	73	-4.9514
+55	73	-4.071
+56	73	0.28437
+57	73	0.6324
+58	73	0
+59	73	0
+60	73	0
+61	73	0
+62	73	0
+63	73	0
+64	73	0
+65	73	0
+66	73	0
+67	73	0
+68	73	0
+69	73	0
+70	73	-0.054993
+71	73	-0.072851
+72	73	-0.024226
+73	73	0
+74	73	3.3391e-06
+75	73	8.7212e-06
+76	73	0
+77	73	0
+78	73	0
+79	73	0
+80	73	9.1292e-05
+81	73	-0.00489
+82	73	-0.052103
+83	73	-0.090956
+84	73	-0.14174
+85	73	-0.15498
+86	73	-0.17039
+87	73	-0.19962
+88	73	-0.21842
+89	73	-0.2267
+90	73	-0.22043
+91	73	-0.21602
+92	73	-0.19236
+93	73	-0.18332
+94	73	-0.1599
+95	73	-0.14303
+96	73	-0.13175
+97	73	-0.12746
+98	73	-0.18762
+99	73	-0.16086
+100	73	-0.14211
+101	73	-0.14675
+102	73	-0.11317
+103	73	-0.10215
+104	73	-0.10762
+105	73	-0.11186
+106	73	-0.13031
+107	73	-0.073376
+108	73	-0.050573
+109	73	-0.10952
+110	73	-0.16164
+111	73	-0.20705
+112	73	-0.20504
+113	73	-0.21549
+114	73	-0.24205
+115	73	-0.33116
+116	73	-0.36221
+117	73	-0.39441
+118	73	-0.28909
+119	73	-0.14869
+120	73	-0.08792
+121	73	0
+122	73	-0.014425
+123	73	0
+124	73	-0.2437
+125	73	-0.43481
+126	73	-0.20372
+127	73	0.17965
+128	73	0.1073
+129	73	-0.050311
+130	73	0
+131	73	0
+132	73	0
+133	73	0
+134	73	0
+135	73	0
+136	73	0
+137	73	0
+138	73	0
+139	73	-0.00088399
+140	73	-0.0010363
+141	73	-0.028044
+142	73	-0.10174
+143	73	-0.038627
+144	73	-0.016693
+145	73	-0.013487
+146	73	-0.0053448
+147	73	0
+148	73	-0.0029204
+149	73	-0.0016593
+150	73	0
+151	73	0
+152	73	0
+153	73	0
+154	73	0
+155	73	0
+156	73	0
+157	73	0
+158	73	0
+159	73	0
+160	73	0
+161	73	0
+162	73	0
+163	73	0
+164	73	0
+165	73	0
+166	73	0
+167	73	0
+168	73	0
+169	73	0
+170	73	0
+171	73	0
+172	73	0
+173	73	0
+174	73	0
+175	73	0
+176	73	0
+177	73	0
+178	73	0
+179	73	0
+180	73	0
+181	73	0
+182	73	0
+183	73	0
+184	73	0
+185	73	0
+186	73	0
+187	73	0
+188	73	0
+189	73	0
+190	73	0
+191	73	0
+192	73	0
+193	73	0
+194	73	0
+195	73	0
+196	73	0
+197	73	0
+198	73	0
+199	73	0
+200	73	0
+201	73	0
+202	73	0
+203	73	0
+204	73	0
+205	73	0
+206	73	0
+207	73	0
+208	73	0
+209	73	0
+210	73	0
+211	73	0
+212	73	0
+213	73	0
+214	73	0
+215	73	0
+216	73	0
+217	73	0
+218	73	0
+219	73	0
+220	73	0
+221	73	0
+222	73	0
+223	73	0
+224	73	0
+225	73	0
+226	73	0
+227	73	0
+228	73	0
+229	73	0
+230	73	0
+231	73	0
+232	73	0
+233	73	0
+234	73	0
+235	73	0.044863
+236	73	0.75759
+237	73	0.81265
+238	73	0.83114
+239	73	0.78924
+240	73	0.76398
+241	73	0.57856
+242	73	0.33315
+243	73	0.14181
+244	73	0.40358
+245	73	0.30158
+246	73	0.33086
+247	73	0.28899
+248	73	0.10907
+249	73	0.056825
+250	73	0.10244
+251	73	0.085394
+252	73	0.00080156
+253	73	0.17631
+254	73	0.10652
+255	73	0
+256	73	0
+257	73	0.028996
+258	73	0.03784
+259	73	-0.037602
+260	73	-0.094331
+261	73	-0.44776
+262	73	-0.42589
+263	73	-0.16419
+264	73	-0.25773
+265	73	-0.75896
+266	73	-1.1072
+267	73	-0.81459
+268	73	-0.94794
+269	73	-0.26345
+270	73	-0.46564
+271	73	-1.1052
+272	73	-2.4313
+273	73	-2.5248
+274	73	-0.18636
+275	73	-1.5458
+276	73	-2.7079
+277	73	-0.37228
+278	73	-0.16932
+279	73	-1.9657
+280	73	-1.6117
+281	73	0
+282	73	0
+283	73	0
+284	73	0
+285	73	0
+286	73	0
+287	73	0
+288	73	0
+289	73	0
+290	73	0
+291	73	0
+292	73	0
+293	73	0
+294	73	0
+295	73	0
+296	73	0
+297	73	0
+298	73	0
+299	73	0
+300	73	0
+301	73	0
+302	73	0
+303	73	0
+304	73	0
+305	73	0
+306	73	0
+307	73	0
+308	73	0
+309	73	0
+310	73	0
+311	73	0
+312	73	0
+313	73	0
+314	73	0
+315	73	0
+316	73	0
+317	73	0
+318	73	0
+319	73	0
+320	73	0
+321	73	0
+322	73	0
+323	73	0
+324	73	0
+325	73	0
+326	73	0
+327	73	0
+328	73	0
+329	73	0
+330	73	0
+331	73	0
+332	73	0
+333	73	0
+334	73	0
+335	73	0
+336	73	0
+337	73	0
+338	73	0
+339	73	0
+340	73	0
+341	73	0
+342	73	0
+343	73	0
+344	73	0
+345	73	0
+346	73	0
+347	73	0
+348	73	0
+349	73	0
+350	73	0
+351	73	0
+352	73	0
+353	73	0
+354	73	0
+355	73	0
+356	73	0
+357	73	0
+358	73	0
+359	73	0
+360	73	0
+0	73.5	0
+1	73.5	0
+2	73.5	0
+3	73.5	0
+4	73.5	0
+5	73.5	0
+6	73.5	0
+7	73.5	0
+8	73.5	0
+9	73.5	0
+10	73.5	0
+11	73.5	0
+12	73.5	0
+13	73.5	0
+14	73.5	0
+15	73.5	0
+16	73.5	0
+17	73.5	0
+18	73.5	0
+19	73.5	0
+20	73.5	0
+21	73.5	0
+22	73.5	0
+23	73.5	0
+24	73.5	0
+25	73.5	0
+26	73.5	0
+27	73.5	0
+28	73.5	0
+29	73.5	0
+30	73.5	0
+31	73.5	0
+32	73.5	0
+33	73.5	0
+34	73.5	0
+35	73.5	0
+36	73.5	0
+37	73.5	0
+38	73.5	0
+39	73.5	0
+40	73.5	0
+41	73.5	0
+42	73.5	0
+43	73.5	0
+44	73.5	0
+45	73.5	0
+46	73.5	0
+47	73.5	0
+48	73.5	0
+49	73.5	0
+50	73.5	0
+51	73.5	0
+52	73.5	-0.15026
+53	73.5	-2.1388
+54	73.5	-0.080742
+55	73.5	-0.17425
+56	73.5	-0.043302
+57	73.5	0.9675
+58	73.5	0.095235
+59	73.5	0
+60	73.5	0
+61	73.5	0
+62	73.5	0
+63	73.5	0
+64	73.5	0
+65	73.5	0
+66	73.5	0
+67	73.5	0
+68	73.5	0
+69	73.5	-0.0072554
+70	73.5	-0.030842
+71	73.5	-0.041393
+72	73.5	-0.00056822
+73	73.5	0
+74	73.5	1.9931e-06
+75	73.5	2.0847e-06
+76	73.5	0
+77	73.5	0
+78	73.5	0
+79	73.5	0
+80	73.5	0
+81	73.5	-0.015135
+82	73.5	-0.040282
+83	73.5	-0.067429
+84	73.5	-0.095146
+85	73.5	-0.13282
+86	73.5	-0.16418
+87	73.5	-0.2278
+88	73.5	-0.25235
+89	73.5	-0.26309
+90	73.5	-0.2567
+91	73.5	-0.25579
+92	73.5	-0.26098
+93	73.5	-0.24828
+94	73.5	-0.22331
+95	73.5	-0.2015
+96	73.5	-0.19413
+97	73.5	-0.18897
+98	73.5	-0.25332
+99	73.5	-0.23368
+100	73.5	-0.21109
+101	73.5	-0.19652
+102	73.5	-0.15433
+103	73.5	-0.13655
+104	73.5	-0.13059
+105	73.5	-0.14046
+106	73.5	-0.17106
+107	73.5	-0.12295
+108	73.5	-0.062808
+109	73.5	-0.14491
+110	73.5	-0.16451
+111	73.5	-0.16953
+112	73.5	-0.11654
+113	73.5	-0.15062
+114	73.5	-0.16195
+115	73.5	-0.23408
+116	73.5	-0.28782
+117	73.5	-0.29561
+118	73.5	-0.22586
+119	73.5	-0.032952
+120	73.5	0
+121	73.5	0
+122	73.5	0
+123	73.5	0
+124	73.5	0
+125	73.5	-0.21208
+126	73.5	-0.090106
+127	73.5	0.020667
+128	73.5	-0.014706
+129	73.5	-0.041047
+130	73.5	0
+131	73.5	0
+132	73.5	0
+133	73.5	0
+134	73.5	0
+135	73.5	0
+136	73.5	-0.013878
+137	73.5	0
+138	73.5	0
+139	73.5	0
+140	73.5	0
+141	73.5	0
+142	73.5	-0.1283
+143	73.5	-0.057678
+144	73.5	0
+145	73.5	0
+146	73.5	0
+147	73.5	0
+148	73.5	0
+149	73.5	-0.0077187
+150	73.5	-0.00089905
+151	73.5	0
+152	73.5	0
+153	73.5	0
+154	73.5	0
+155	73.5	0
+156	73.5	0
+157	73.5	0
+158	73.5	0
+159	73.5	0
+160	73.5	0
+161	73.5	0
+162	73.5	0
+163	73.5	0
+164	73.5	0
+165	73.5	0
+166	73.5	0
+167	73.5	0
+168	73.5	0
+169	73.5	0
+170	73.5	0
+171	73.5	0
+172	73.5	0
+173	73.5	0
+174	73.5	0
+175	73.5	0
+176	73.5	0
+177	73.5	0
+178	73.5	0
+179	73.5	0
+180	73.5	0
+181	73.5	0
+182	73.5	0
+183	73.5	0
+184	73.5	0
+185	73.5	0
+186	73.5	0
+187	73.5	0
+188	73.5	0
+189	73.5	0
+190	73.5	0
+191	73.5	0
+192	73.5	0
+193	73.5	0
+194	73.5	0
+195	73.5	0
+196	73.5	0
+197	73.5	0
+198	73.5	0
+199	73.5	0
+200	73.5	0
+201	73.5	0
+202	73.5	0
+203	73.5	0
+204	73.5	0
+205	73.5	0
+206	73.5	0
+207	73.5	0
+208	73.5	0
+209	73.5	0
+210	73.5	0
+211	73.5	0
+212	73.5	0
+213	73.5	0
+214	73.5	0
+215	73.5	0
+216	73.5	0
+217	73.5	0
+218	73.5	0
+219	73.5	0
+220	73.5	0
+221	73.5	0
+222	73.5	0
+223	73.5	0
+224	73.5	0
+225	73.5	0
+226	73.5	0
+227	73.5	0
+228	73.5	0
+229	73.5	0
+230	73.5	0
+231	73.5	0
+232	73.5	0
+233	73.5	0
+234	73.5	0
+235	73.5	0.069257
+236	73.5	0.43782
+237	73.5	0.56989
+238	73.5	0.70248
+239	73.5	0.71436
+240	73.5	0.64428
+241	73.5	0.70611
+242	73.5	0.66605
+243	73.5	0.67842
+244	73.5	0.28754
+245	73.5	0.036865
+246	73.5	0.11635
+247	73.5	0.018261
+248	73.5	0.0033267
+249	73.5	0
+250	73.5	0
+251	73.5	0
+252	73.5	0
+253	73.5	0
+254	73.5	0
+255	73.5	0
+256	73.5	0
+257	73.5	0.011395
+258	73.5	0.021324
+259	73.5	-0.19319
+260	73.5	-0.092246
+261	73.5	-0.7026
+262	73.5	-0.30718
+263	73.5	-0.12237
+264	73.5	-0.04113
+265	73.5	-0.71004
+266	73.5	-1.3002
+267	73.5	-1.1015
+268	73.5	-1.2363
+269	73.5	-0.33917
+270	73.5	0
+271	73.5	-0.22551
+272	73.5	-1.8303
+273	73.5	-3.0214
+274	73.5	-0.82961
+275	73.5	0
+276	73.5	-2.0885
+277	73.5	0
+278	73.5	0
+279	73.5	0
+280	73.5	-1.2228
+281	73.5	0
+282	73.5	0
+283	73.5	0
+284	73.5	0
+285	73.5	0
+286	73.5	0
+287	73.5	0
+288	73.5	0
+289	73.5	0
+290	73.5	0
+291	73.5	0
+292	73.5	0
+293	73.5	0
+294	73.5	0
+295	73.5	0
+296	73.5	0
+297	73.5	0
+298	73.5	0
+299	73.5	0
+300	73.5	0
+301	73.5	0
+302	73.5	0
+303	73.5	0
+304	73.5	0
+305	73.5	0
+306	73.5	0
+307	73.5	0
+308	73.5	0
+309	73.5	0
+310	73.5	0
+311	73.5	0
+312	73.5	0
+313	73.5	0
+314	73.5	0
+315	73.5	0
+316	73.5	0
+317	73.5	0
+318	73.5	0
+319	73.5	0
+320	73.5	0
+321	73.5	0
+322	73.5	0
+323	73.5	0
+324	73.5	0
+325	73.5	0
+326	73.5	0
+327	73.5	0
+328	73.5	0
+329	73.5	0
+330	73.5	0
+331	73.5	0
+332	73.5	0
+333	73.5	0
+334	73.5	0
+335	73.5	0
+336	73.5	0
+337	73.5	0
+338	73.5	0
+339	73.5	0
+340	73.5	0
+341	73.5	0
+342	73.5	0
+343	73.5	0
+344	73.5	0
+345	73.5	0
+346	73.5	0
+347	73.5	0
+348	73.5	0
+349	73.5	0
+350	73.5	0
+351	73.5	0
+352	73.5	0
+353	73.5	0
+354	73.5	0
+355	73.5	0
+356	73.5	0
+357	73.5	0
+358	73.5	0
+359	73.5	0
+360	73.5	0
+0	74	0
+1	74	0
+2	74	0
+3	74	0
+4	74	0
+5	74	0
+6	74	0
+7	74	0
+8	74	0
+9	74	0
+10	74	0
+11	74	0
+12	74	0
+13	74	0
+14	74	0
+15	74	0
+16	74	0
+17	74	0
+18	74	0
+19	74	0
+20	74	0
+21	74	0
+22	74	0
+23	74	0
+24	74	0
+25	74	0
+26	74	0
+27	74	0
+28	74	0
+29	74	0
+30	74	0
+31	74	0
+32	74	0
+33	74	0
+34	74	0
+35	74	0
+36	74	0
+37	74	0
+38	74	0
+39	74	0
+40	74	0
+41	74	0
+42	74	0
+43	74	0
+44	74	0
+45	74	0
+46	74	0
+47	74	0
+48	74	0
+49	74	0
+50	74	0
+51	74	0
+52	74	0
+53	74	-0.066949
+54	74	-0.16487
+55	74	-0.47928
+56	74	-0.079101
+57	74	0
+58	74	-0.0015698
+59	74	0
+60	74	0
+61	74	0
+62	74	0
+63	74	0
+64	74	0
+65	74	0
+66	74	0
+67	74	0
+68	74	0
+69	74	0
+70	74	0
+71	74	-0.0036856
+72	74	0
+73	74	0
+74	74	0
+75	74	0
+76	74	0
+77	74	0
+78	74	0
+79	74	0
+80	74	0
+81	74	0
+82	74	0
+83	74	0
+84	74	-0.018762
+85	74	-0.070831
+86	74	-0.098639
+87	74	-0.17081
+88	74	-0.26305
+89	74	-0.30642
+90	74	-0.31108
+91	74	-0.3375
+92	74	-0.32961
+93	74	-0.3139
+94	74	-0.28695
+95	74	-0.26771
+96	74	-0.256
+97	74	-0.25197
+98	74	-0.3186
+99	74	-0.31269
+100	74	-0.28223
+101	74	-0.2445
+102	74	-0.19851
+103	74	-0.1673
+104	74	-0.16742
+105	74	-0.19798
+106	74	-0.22513
+107	74	-0.0071702
+108	74	-0.15292
+109	74	-0.20498
+110	74	-0.19821
+111	74	-0.0040192
+112	74	-0.038327
+113	74	-0.071504
+114	74	0
+115	74	-0.0026147
+116	74	-0.084599
+117	74	-0.15177
+118	74	-0.12001
+119	74	0
+120	74	0
+121	74	0
+122	74	0
+123	74	0
+124	74	0
+125	74	0
+126	74	0
+127	74	0
+128	74	0
+129	74	0
+130	74	0
+131	74	0
+132	74	0
+133	74	0
+134	74	0
+135	74	-0.024811
+136	74	-0.092361
+137	74	0
+138	74	0
+139	74	0
+140	74	0
+141	74	0
+142	74	-0.0075708
+143	74	-0.0082092
+144	74	0
+145	74	0
+146	74	0
+147	74	0
+148	74	0
+149	74	-0.056226
+150	74	-0.029493
+151	74	0
+152	74	0
+153	74	0
+154	74	0
+155	74	0
+156	74	0
+157	74	0
+158	74	0
+159	74	0
+160	74	0
+161	74	0
+162	74	0
+163	74	0
+164	74	0
+165	74	0
+166	74	0
+167	74	0
+168	74	0
+169	74	0
+170	74	0
+171	74	0
+172	74	0
+173	74	0
+174	74	0
+175	74	0
+176	74	0
+177	74	0
+178	74	0
+179	74	0
+180	74	0
+181	74	0
+182	74	0
+183	74	0
+184	74	0
+185	74	0
+186	74	0
+187	74	0
+188	74	0
+189	74	0
+190	74	0
+191	74	0
+192	74	0
+193	74	0
+194	74	0
+195	74	0
+196	74	0
+197	74	0
+198	74	0
+199	74	0
+200	74	0
+201	74	0
+202	74	0
+203	74	0
+204	74	0
+205	74	0
+206	74	0
+207	74	0
+208	74	0
+209	74	0
+210	74	0
+211	74	0
+212	74	0
+213	74	0
+214	74	0
+215	74	0
+216	74	0
+217	74	0
+218	74	0
+219	74	0
+220	74	0
+221	74	0
+222	74	0
+223	74	0
+224	74	0
+225	74	0
+226	74	0
+227	74	0
+228	74	0
+229	74	0
+230	74	0
+231	74	0
+232	74	0
+233	74	0
+234	74	0
+235	74	0.034243
+236	74	0.22027
+237	74	0.40439
+238	74	0.50271
+239	74	0.43526
+240	74	0.39822
+241	74	0.36078
+242	74	0.35088
+243	74	0.38226
+244	74	0
+245	74	0.0041411
+246	74	0.015108
+247	74	0.15813
+248	74	0
+249	74	0
+250	74	0
+251	74	0
+252	74	0
+253	74	0
+254	74	0
+255	74	0
+256	74	0
+257	74	0
+258	74	0
+259	74	-0.049392
+260	74	-0.090161
+261	74	-0.2289
+262	74	-0.040889
+263	74	-0.061352
+264	74	0
+265	74	-0.5738
+266	74	-0.66847
+267	74	-1.0418
+268	74	-1.171
+269	74	-0.46478
+270	74	0
+271	74	0
+272	74	-1.1159
+273	74	-1.0444
+274	74	0
+275	74	0
+276	74	0
+277	74	0
+278	74	0
+279	74	0
+280	74	0
+281	74	0
+282	74	0
+283	74	0
+284	74	0
+285	74	0
+286	74	0
+287	74	0
+288	74	0
+289	74	0
+290	74	0
+291	74	0
+292	74	0
+293	74	0
+294	74	0
+295	74	0
+296	74	0
+297	74	0
+298	74	0
+299	74	0
+300	74	0
+301	74	0
+302	74	0
+303	74	0
+304	74	0
+305	74	0
+306	74	0
+307	74	0
+308	74	0
+309	74	0
+310	74	0
+311	74	0
+312	74	0
+313	74	0
+314	74	0
+315	74	0
+316	74	0
+317	74	0
+318	74	0
+319	74	0
+320	74	0
+321	74	0
+322	74	0
+323	74	0
+324	74	0
+325	74	0
+326	74	0
+327	74	0
+328	74	0
+329	74	0
+330	74	0
+331	74	0
+332	74	0
+333	74	0
+334	74	0
+335	74	0
+336	74	0
+337	74	0
+338	74	0
+339	74	0
+340	74	0
+341	74	0
+342	74	0
+343	74	0
+344	74	0
+345	74	0
+346	74	0
+347	74	0
+348	74	0
+349	74	0
+350	74	0
+351	74	0
+352	74	0
+353	74	0
+354	74	0
+355	74	0
+356	74	0
+357	74	0
+358	74	0
+359	74	0
+360	74	0
+0	74.5	0
+1	74.5	0
+2	74.5	0
+3	74.5	0
+4	74.5	0
+5	74.5	0
+6	74.5	0
+7	74.5	0
+8	74.5	0
+9	74.5	0
+10	74.5	0
+11	74.5	0
+12	74.5	0
+13	74.5	0
+14	74.5	0
+15	74.5	0
+16	74.5	0
+17	74.5	0
+18	74.5	0
+19	74.5	0
+20	74.5	0
+21	74.5	0
+22	74.5	0
+23	74.5	0
+24	74.5	0
+25	74.5	0
+26	74.5	0
+27	74.5	0
+28	74.5	0
+29	74.5	0
+30	74.5	0
+31	74.5	0
+32	74.5	0
+33	74.5	0
+34	74.5	0
+35	74.5	0
+36	74.5	0
+37	74.5	0
+38	74.5	0
+39	74.5	0
+40	74.5	0
+41	74.5	0
+42	74.5	0
+43	74.5	0
+44	74.5	0
+45	74.5	0
+46	74.5	0
+47	74.5	0
+48	74.5	0
+49	74.5	0
+50	74.5	0
+51	74.5	0
+52	74.5	0
+53	74.5	-0.04106
+54	74.5	-0.074876
+55	74.5	-0.083351
+56	74.5	0
+57	74.5	0
+58	74.5	-0.0059035
+59	74.5	0
+60	74.5	-0.004601
+61	74.5	-4.0585e-05
+62	74.5	0
+63	74.5	0
+64	74.5	0
+65	74.5	0
+66	74.5	0
+67	74.5	0
+68	74.5	0
+69	74.5	0
+70	74.5	0
+71	74.5	0
+72	74.5	0
+73	74.5	0
+74	74.5	0
+75	74.5	0
+76	74.5	0
+77	74.5	0
+78	74.5	0
+79	74.5	0
+80	74.5	0
+81	74.5	0
+82	74.5	0
+83	74.5	0
+84	74.5	0
+85	74.5	-0.0093073
+86	74.5	-0.032037
+87	74.5	-0.11775
+88	74.5	-0.22628
+89	74.5	-0.31122
+90	74.5	-0.38008
+91	74.5	-0.39945
+92	74.5	-0.39965
+93	74.5	-0.35954
+94	74.5	-0.32975
+95	74.5	-0.31922
+96	74.5	-0.31273
+97	74.5	-0.31595
+98	74.5	-0.37307
+99	74.5	-0.36473
+100	74.5	-0.33466
+101	74.5	-0.3045
+102	74.5	-0.26346
+103	74.5	-0.213
+104	74.5	-0.22822
+105	74.5	-0.25985
+106	74.5	-0.30614
+107	74.5	-0.1696
+108	74.5	-0.26537
+109	74.5	-0.26892
+110	74.5	-0.22512
+111	74.5	-0.11248
+112	74.5	-0.01419
+113	74.5	-0.024957
+114	74.5	0
+115	74.5	0
+116	74.5	0
+117	74.5	0
+118	74.5	-0.0087857
+119	74.5	0
+120	74.5	0
+121	74.5	0
+122	74.5	0
+123	74.5	0
+124	74.5	0
+125	74.5	0
+126	74.5	0
+127	74.5	0
+128	74.5	0
+129	74.5	0
+130	74.5	0
+131	74.5	0
+132	74.5	0
+133	74.5	0
+134	74.5	-0.012026
+135	74.5	-0.066239
+136	74.5	-0.087024
+137	74.5	-0.0079936
+138	74.5	-3.2672e-05
+139	74.5	-6.2774e-05
+140	74.5	0
+141	74.5	0
+142	74.5	0
+143	74.5	-9.1075e-05
+144	74.5	-8.8242e-05
+145	74.5	0
+146	74.5	0
+147	74.5	0
+148	74.5	-0.032864
+149	74.5	-0.10473
+150	74.5	-0.030991
+151	74.5	0
+152	74.5	0
+153	74.5	0
+154	74.5	0
+155	74.5	0
+156	74.5	0
+157	74.5	0
+158	74.5	0
+159	74.5	0
+160	74.5	0
+161	74.5	0
+162	74.5	0
+163	74.5	0
+164	74.5	0
+165	74.5	0
+166	74.5	0
+167	74.5	0
+168	74.5	0
+169	74.5	0
+170	74.5	0
+171	74.5	0
+172	74.5	0
+173	74.5	0
+174	74.5	0
+175	74.5	0
+176	74.5	0
+177	74.5	0
+178	74.5	0
+179	74.5	0
+180	74.5	0
+181	74.5	0
+182	74.5	0
+183	74.5	0
+184	74.5	0
+185	74.5	0
+186	74.5	0
+187	74.5	0
+188	74.5	0
+189	74.5	0
+190	74.5	0
+191	74.5	0
+192	74.5	0
+193	74.5	0
+194	74.5	0
+195	74.5	0
+196	74.5	0
+197	74.5	0
+198	74.5	0
+199	74.5	0
+200	74.5	0
+201	74.5	0
+202	74.5	0
+203	74.5	0
+204	74.5	0
+205	74.5	0
+206	74.5	0
+207	74.5	0
+208	74.5	0
+209	74.5	0
+210	74.5	0
+211	74.5	0
+212	74.5	0
+213	74.5	0
+214	74.5	0
+215	74.5	0
+216	74.5	0
+217	74.5	0
+218	74.5	0
+219	74.5	0
+220	74.5	0
+221	74.5	0
+222	74.5	0
+223	74.5	0
+224	74.5	0
+225	74.5	0
+226	74.5	0
+227	74.5	0
+228	74.5	0
+229	74.5	0
+230	74.5	0
+231	74.5	0
+232	74.5	0
+233	74.5	0
+234	74.5	0
+235	74.5	0
+236	74.5	0.052175
+237	74.5	0.18434
+238	74.5	0.2256
+239	74.5	0.091392
+240	74.5	0.20102
+241	74.5	0.14262
+242	74.5	0.12582
+243	74.5	0.022515
+244	74.5	0.20197
+245	74.5	0
+246	74.5	0.049177
+247	74.5	0.34855
+248	74.5	0
+249	74.5	0.018475
+250	74.5	0.049268
+251	74.5	0.00062149
+252	74.5	0
+253	74.5	0
+254	74.5	0
+255	74.5	0
+256	74.5	0
+257	74.5	0
+258	74.5	0
+259	74.5	0
+260	74.5	0
+261	74.5	-0.30467
+262	74.5	-0.078959
+263	74.5	0
+264	74.5	-0.25147
+265	74.5	-0.086629
+266	74.5	-0.15688
+267	74.5	-0.055136
+268	74.5	-0.091112
+269	74.5	-0.25576
+270	74.5	-0.44855
+271	74.5	0
+272	74.5	-0.20301
+273	74.5	0
+274	74.5	0
+275	74.5	0
+276	74.5	0
+277	74.5	0
+278	74.5	0
+279	74.5	0
+280	74.5	0
+281	74.5	0
+282	74.5	0
+283	74.5	0
+284	74.5	0
+285	74.5	0
+286	74.5	0
+287	74.5	0
+288	74.5	0
+289	74.5	0
+290	74.5	0
+291	74.5	0
+292	74.5	0
+293	74.5	0
+294	74.5	0
+295	74.5	0
+296	74.5	0
+297	74.5	0
+298	74.5	0
+299	74.5	0
+300	74.5	0
+301	74.5	0
+302	74.5	0
+303	74.5	0
+304	74.5	0
+305	74.5	0
+306	74.5	0
+307	74.5	0
+308	74.5	0
+309	74.5	0
+310	74.5	0
+311	74.5	0
+312	74.5	0
+313	74.5	0
+314	74.5	0
+315	74.5	0
+316	74.5	0
+317	74.5	0
+318	74.5	0
+319	74.5	0
+320	74.5	0
+321	74.5	0
+322	74.5	0
+323	74.5	0
+324	74.5	0
+325	74.5	0
+326	74.5	0
+327	74.5	0
+328	74.5	0
+329	74.5	0
+330	74.5	0
+331	74.5	0
+332	74.5	0
+333	74.5	0
+334	74.5	0
+335	74.5	0
+336	74.5	0
+337	74.5	0
+338	74.5	0
+339	74.5	0
+340	74.5	0
+341	74.5	0
+342	74.5	0
+343	74.5	0
+344	74.5	0
+345	74.5	0
+346	74.5	0
+347	74.5	0
+348	74.5	0
+349	74.5	0
+350	74.5	0
+351	74.5	0
+352	74.5	0
+353	74.5	0
+354	74.5	0
+355	74.5	0
+356	74.5	0
+357	74.5	0
+358	74.5	0
+359	74.5	0
+360	74.5	0
+0	75	0
+1	75	0
+2	75	0
+3	75	0
+4	75	0
+5	75	0
+6	75	0
+7	75	0
+8	75	0
+9	75	0
+10	75	0
+11	75	0
+12	75	0
+13	75	0
+14	75	0
+15	75	0
+16	75	0
+17	75	0
+18	75	0
+19	75	0
+20	75	0
+21	75	0
+22	75	0
+23	75	0
+24	75	0
+25	75	0
+26	75	0
+27	75	0
+28	75	0
+29	75	0
+30	75	0
+31	75	0
+32	75	0
+33	75	0
+34	75	0
+35	75	0
+36	75	0
+37	75	0
+38	75	0
+39	75	0
+40	75	0
+41	75	0
+42	75	0
+43	75	0
+44	75	0
+45	75	0
+46	75	0
+47	75	0
+48	75	0
+49	75	0
+50	75	0
+51	75	0
+52	75	0
+53	75	0
+54	75	0
+55	75	0
+56	75	0
+57	75	0
+58	75	-0.0026525
+59	75	0
+60	75	-0.0043102
+61	75	-0.00017515
+62	75	0
+63	75	0
+64	75	0
+65	75	0
+66	75	0
+67	75	0
+68	75	0
+69	75	0
+70	75	0
+71	75	0
+72	75	0
+73	75	0
+74	75	0
+75	75	0
+76	75	0
+77	75	0
+78	75	0
+79	75	0
+80	75	0
+81	75	0
+82	75	0
+83	75	0
+84	75	0
+85	75	0
+86	75	-0.0075113
+87	75	-0.028473
+88	75	-0.12431
+89	75	-0.26656
+90	75	-0.3866
+91	75	-0.45723
+92	75	-0.42825
+93	75	-0.34368
+94	75	-0.32549
+95	75	-0.31932
+96	75	-0.35019
+97	75	-0.37883
+98	75	-0.38172
+99	75	-0.38222
+100	75	-0.38709
+101	75	-0.35694
+102	75	-0.32671
+103	75	-0.28348
+104	75	-0.29158
+105	75	-0.33845
+106	75	-0.38885
+107	75	-0.42376
+108	75	-0.43232
+109	75	-0.39505
+110	75	-0.31323
+111	75	-0.19668
+112	75	-0.083107
+113	75	-0.015326
+114	75	0
+115	75	0
+116	75	0
+117	75	0
+118	75	0
+119	75	0
+120	75	0
+121	75	0
+122	75	0
+123	75	0
+124	75	0
+125	75	0
+126	75	0
+127	75	0
+128	75	0
+129	75	0
+130	75	0
+131	75	0
+132	75	0
+133	75	0
+134	75	0
+135	75	-0.015283
+136	75	-0.019949
+137	75	-4.5007e-05
+138	75	-0.00018818
+139	75	-0.00024826
+140	75	-0.00015922
+141	75	4.6191e-05
+142	75	3.4823e-05
+143	75	-0.00013811
+144	75	-0.0004874
+145	75	-0.00027559
+146	75	0
+147	75	0
+148	75	-0.040234
+149	75	-0.13046
+150	75	-0.012542
+151	75	0
+152	75	0
+153	75	0
+154	75	0
+155	75	0
+156	75	0
+157	75	0
+158	75	0
+159	75	0
+160	75	0
+161	75	0
+162	75	0
+163	75	0
+164	75	0
+165	75	0
+166	75	0
+167	75	0
+168	75	0
+169	75	0
+170	75	0
+171	75	0
+172	75	0
+173	75	0
+174	75	0
+175	75	0
+176	75	0
+177	75	0
+178	75	0
+179	75	0
+180	75	0
+181	75	0
+182	75	0
+183	75	0
+184	75	0
+185	75	0
+186	75	0
+187	75	0
+188	75	0
+189	75	0
+190	75	0
+191	75	0
+192	75	0
+193	75	0
+194	75	0
+195	75	0
+196	75	0
+197	75	0
+198	75	0
+199	75	0
+200	75	0
+201	75	0
+202	75	0
+203	75	0
+204	75	0
+205	75	0
+206	75	0
+207	75	0
+208	75	0
+209	75	0
+210	75	0
+211	75	0
+212	75	0
+213	75	0
+214	75	0
+215	75	0
+216	75	0
+217	75	0
+218	75	0
+219	75	0
+220	75	0
+221	75	0
+222	75	0
+223	75	0
+224	75	0
+225	75	0
+226	75	0
+227	75	0
+228	75	0
+229	75	0
+230	75	0
+231	75	0
+232	75	0
+233	75	0
+234	75	0
+235	75	0
+236	75	0
+237	75	0.099637
+238	75	0.12127
+239	75	0.031228
+240	75	0.0080068
+241	75	0.0056662
+242	75	0
+243	75	0.098809
+244	75	0.37762
+245	75	0.12642
+246	75	0.19615
+247	75	0.47493
+248	75	0
+249	75	0.15417
+250	75	0.19089
+251	75	0.099846
+252	75	0.017968
+253	75	0.013772
+254	75	-0.010773
+255	75	-0.15406
+256	75	-0.12157
+257	75	0
+258	75	0
+259	75	-0.18032
+260	75	-0.3172
+261	75	-0.68599
+262	75	-0.45936
+263	75	-0.060504
+264	75	-0.66175
+265	75	-1.2737
+266	75	-0.59237
+267	75	-0.039043
+268	75	-1.222
+269	75	-1.6655
+270	75	-1.6489
+271	75	-1.7414
+272	75	-1.6006
+273	75	-0.74037
+274	75	0
+275	75	0
+276	75	0
+277	75	0
+278	75	0
+279	75	0
+280	75	0
+281	75	0
+282	75	0
+283	75	0
+284	75	0
+285	75	0
+286	75	0
+287	75	0
+288	75	0
+289	75	0
+290	75	0
+291	75	0
+292	75	0
+293	75	0
+294	75	0
+295	75	0
+296	75	0
+297	75	0
+298	75	0
+299	75	0
+300	75	0
+301	75	0
+302	75	0
+303	75	0
+304	75	0
+305	75	0
+306	75	0
+307	75	0
+308	75	0
+309	75	0
+310	75	0
+311	75	0
+312	75	0
+313	75	0
+314	75	0
+315	75	0
+316	75	0
+317	75	0
+318	75	0
+319	75	0
+320	75	0
+321	75	0
+322	75	0
+323	75	0
+324	75	0
+325	75	0
+326	75	0
+327	75	0
+328	75	0
+329	75	0
+330	75	0
+331	75	0
+332	75	0
+333	75	0
+334	75	0
+335	75	0
+336	75	0
+337	75	0
+338	75	0
+339	75	0
+340	75	0
+341	75	0
+342	75	0
+343	75	0
+344	75	0
+345	75	0
+346	75	0
+347	75	0
+348	75	0
+349	75	0
+350	75	0
+351	75	0
+352	75	0
+353	75	0
+354	75	0
+355	75	0
+356	75	0
+357	75	0
+358	75	0
+359	75	0
+360	75	0
+0	75.5	0
+1	75.5	0
+2	75.5	0
+3	75.5	0
+4	75.5	0
+5	75.5	0
+6	75.5	0
+7	75.5	0
+8	75.5	0
+9	75.5	0
+10	75.5	0
+11	75.5	0
+12	75.5	0
+13	75.5	0
+14	75.5	0
+15	75.5	0
+16	75.5	0
+17	75.5	0
+18	75.5	0
+19	75.5	0
+20	75.5	0
+21	75.5	0
+22	75.5	0
+23	75.5	0
+24	75.5	0
+25	75.5	0
+26	75.5	0
+27	75.5	0
+28	75.5	0
+29	75.5	0
+30	75.5	0
+31	75.5	0
+32	75.5	0
+33	75.5	0
+34	75.5	0
+35	75.5	0
+36	75.5	0
+37	75.5	0
+38	75.5	0
+39	75.5	0
+40	75.5	0
+41	75.5	0
+42	75.5	0
+43	75.5	0
+44	75.5	0
+45	75.5	0
+46	75.5	0
+47	75.5	0
+48	75.5	0
+49	75.5	0
+50	75.5	0
+51	75.5	0
+52	75.5	0
+53	75.5	0
+54	75.5	0
+55	75.5	0
+56	75.5	0
+57	75.5	0
+58	75.5	0
+59	75.5	0
+60	75.5	0
+61	75.5	0
+62	75.5	0
+63	75.5	0
+64	75.5	0
+65	75.5	0
+66	75.5	0
+67	75.5	0
+68	75.5	0
+69	75.5	0
+70	75.5	0
+71	75.5	0
+72	75.5	0
+73	75.5	0
+74	75.5	0
+75	75.5	0
+76	75.5	0
+77	75.5	0
+78	75.5	0
+79	75.5	0
+80	75.5	0
+81	75.5	0
+82	75.5	0
+83	75.5	0
+84	75.5	0
+85	75.5	0
+86	75.5	0
+87	75.5	0
+88	75.5	-0.017024
+89	75.5	-0.14042
+90	75.5	-0.15841
+91	75.5	-0.33749
+92	75.5	-0.38501
+93	75.5	-0.31642
+94	75.5	-0.26496
+95	75.5	-0.18436
+96	75.5	-0.29674
+97	75.5	-0.31513
+98	75.5	-0.29099
+99	75.5	-0.29192
+100	75.5	-0.31562
+101	75.5	-0.36558
+102	75.5	-0.31654
+103	75.5	-0.35596
+104	75.5	-0.37621
+105	75.5	-0.42548
+106	75.5	-0.44166
+107	75.5	-0.47273
+108	75.5	-0.50052
+109	75.5	-0.4297
+110	75.5	-0.34267
+111	75.5	-0.26781
+112	75.5	-0.14087
+113	75.5	-0.034072
+114	75.5	-0.0073344
+115	75.5	0
+116	75.5	0
+117	75.5	0
+118	75.5	0
+119	75.5	0
+120	75.5	0
+121	75.5	0
+122	75.5	0
+123	75.5	0
+124	75.5	0
+125	75.5	0
+126	75.5	0
+127	75.5	0
+128	75.5	0
+129	75.5	0
+130	75.5	0
+131	75.5	0
+132	75.5	0
+133	75.5	0
+134	75.5	0
+135	75.5	0
+136	75.5	0
+137	75.5	1.8265e-05
+138	75.5	-0.0002288
+139	75.5	-0.00024147
+140	75.5	-0.00021778
+141	75.5	8.7115e-05
+142	75.5	0.00016161
+143	75.5	-0.00010027
+144	75.5	-0.000477
+145	75.5	-8.2469e-05
+146	75.5	0
+147	75.5	0
+148	75.5	0
+149	75.5	-0.05267
+150	75.5	0
+151	75.5	0
+152	75.5	0
+153	75.5	0
+154	75.5	0
+155	75.5	0
+156	75.5	0
+157	75.5	0
+158	75.5	0
+159	75.5	0
+160	75.5	0
+161	75.5	0
+162	75.5	0
+163	75.5	0
+164	75.5	0
+165	75.5	0
+166	75.5	0
+167	75.5	0
+168	75.5	0
+169	75.5	0
+170	75.5	0
+171	75.5	0
+172	75.5	0
+173	75.5	0
+174	75.5	0
+175	75.5	0
+176	75.5	0
+177	75.5	0
+178	75.5	0
+179	75.5	0
+180	75.5	0
+181	75.5	0
+182	75.5	0
+183	75.5	0
+184	75.5	0
+185	75.5	0
+186	75.5	0
+187	75.5	0
+188	75.5	0
+189	75.5	0
+190	75.5	0
+191	75.5	0
+192	75.5	0
+193	75.5	0
+194	75.5	0
+195	75.5	0
+196	75.5	0
+197	75.5	0
+198	75.5	0
+199	75.5	0
+200	75.5	0
+201	75.5	0
+202	75.5	0
+203	75.5	0
+204	75.5	0
+205	75.5	0
+206	75.5	0
+207	75.5	0
+208	75.5	0
+209	75.5	0
+210	75.5	0
+211	75.5	0
+212	75.5	0
+213	75.5	0
+214	75.5	0
+215	75.5	0
+216	75.5	0
+217	75.5	0
+218	75.5	0
+219	75.5	0
+220	75.5	0
+221	75.5	0
+222	75.5	0
+223	75.5	0
+224	75.5	0
+225	75.5	0
+226	75.5	0
+227	75.5	0
+228	75.5	0
+229	75.5	0
+230	75.5	0
+231	75.5	0
+232	75.5	0
+233	75.5	0
+234	75.5	0
+235	75.5	0
+236	75.5	0
+237	75.5	0
+238	75.5	0
+239	75.5	0.23801
+240	75.5	0.10532
+241	75.5	0
+242	75.5	0
+243	75.5	0.026741
+244	75.5	0.281
+245	75.5	0.11095
+246	75.5	0.26224
+247	75.5	0.41009
+248	75.5	0.11055
+249	75.5	0.05879
+250	75.5	0.23656
+251	75.5	0.14299
+252	75.5	0.0673
+253	75.5	-0.025226
+254	75.5	-0.04481
+255	75.5	-0.18055
+256	75.5	-0.25293
+257	75.5	-0.03867
+258	75.5	-0.14587
+259	75.5	-0.15574
+260	75.5	-0.87461
+261	75.5	-1.3226
+262	75.5	-0.46551
+263	75.5	-0.10636
+264	75.5	-0.79219
+265	75.5	-2.0967
+266	75.5	-1.1307
+267	75.5	-0.32038
+268	75.5	-1.8221
+269	75.5	-2.9651
+270	75.5	-2.7402
+271	75.5	-1.3111
+272	75.5	-0.64343
+273	75.5	-0.2608
+274	75.5	0
+275	75.5	0
+276	75.5	0
+277	75.5	0
+278	75.5	0
+279	75.5	0
+280	75.5	0
+281	75.5	0
+282	75.5	0
+283	75.5	0
+284	75.5	0
+285	75.5	0
+286	75.5	0
+287	75.5	0
+288	75.5	0
+289	75.5	0
+290	75.5	0
+291	75.5	0
+292	75.5	0
+293	75.5	0
+294	75.5	0
+295	75.5	0
+296	75.5	0
+297	75.5	0
+298	75.5	0
+299	75.5	0
+300	75.5	0
+301	75.5	0
+302	75.5	0
+303	75.5	0
+304	75.5	0
+305	75.5	0
+306	75.5	0
+307	75.5	0
+308	75.5	0
+309	75.5	0
+310	75.5	0
+311	75.5	0
+312	75.5	0
+313	75.5	0
+314	75.5	0
+315	75.5	0
+316	75.5	0
+317	75.5	0
+318	75.5	0
+319	75.5	0
+320	75.5	0
+321	75.5	0
+322	75.5	0
+323	75.5	0
+324	75.5	0
+325	75.5	0
+326	75.5	0
+327	75.5	0
+328	75.5	0
+329	75.5	0
+330	75.5	0
+331	75.5	0
+332	75.5	0
+333	75.5	0
+334	75.5	0
+335	75.5	0
+336	75.5	0
+337	75.5	0
+338	75.5	0
+339	75.5	0
+340	75.5	0
+341	75.5	0
+342	75.5	0
+343	75.5	0
+344	75.5	0
+345	75.5	0
+346	75.5	0
+347	75.5	0
+348	75.5	0
+349	75.5	0
+350	75.5	0
+351	75.5	0
+352	75.5	0
+353	75.5	0
+354	75.5	0
+355	75.5	0
+356	75.5	0
+357	75.5	0
+358	75.5	0
+359	75.5	0
+360	75.5	0
+0	76	0
+1	76	0
+2	76	0
+3	76	0
+4	76	0
+5	76	0
+6	76	0
+7	76	0
+8	76	0
+9	76	0
+10	76	0
+11	76	0
+12	76	0
+13	76	0
+14	76	0
+15	76	0
+16	76	0
+17	76	0
+18	76	0
+19	76	0
+20	76	0
+21	76	0
+22	76	0
+23	76	0
+24	76	0
+25	76	0
+26	76	0
+27	76	0
+28	76	0
+29	76	0
+30	76	0
+31	76	0
+32	76	0
+33	76	0
+34	76	0
+35	76	0
+36	76	0
+37	76	0
+38	76	0
+39	76	0
+40	76	0
+41	76	0
+42	76	0
+43	76	0
+44	76	0
+45	76	0
+46	76	0
+47	76	0
+48	76	0
+49	76	0
+50	76	0
+51	76	0
+52	76	0
+53	76	0
+54	76	0
+55	76	0
+56	76	0
+57	76	0
+58	76	0
+59	76	0
+60	76	0
+61	76	0
+62	76	0
+63	76	0
+64	76	0
+65	76	0
+66	76	0
+67	76	0
+68	76	0
+69	76	0
+70	76	0
+71	76	0
+72	76	0
+73	76	0
+74	76	0
+75	76	0
+76	76	0
+77	76	0
+78	76	0
+79	76	0
+80	76	0
+81	76	0
+82	76	0
+83	76	0
+84	76	0
+85	76	0
+86	76	0
+87	76	0
+88	76	0
+89	76	0
+90	76	0
+91	76	-0.12742
+92	76	-0.16725
+93	76	-0.10794
+94	76	-0.065156
+95	76	-0.049403
+96	76	-0.15434
+97	76	-0.23353
+98	76	-0.12992
+99	76	-0.17289
+100	76	-0.20348
+101	76	-0.2819
+102	76	-0.32023
+103	76	-0.38707
+104	76	-0.48054
+105	76	-0.49235
+106	76	-0.45833
+107	76	-0.40899
+108	76	-0.42341
+109	76	-0.4019
+110	76	-0.2981
+111	76	-0.30387
+112	76	-0.1848
+113	76	-0.031729
+114	76	-0.013792
+115	76	0
+116	76	0
+117	76	0
+118	76	0
+119	76	0
+120	76	0
+121	76	0
+122	76	0
+123	76	0
+124	76	0
+125	76	0
+126	76	0
+127	76	0
+128	76	0
+129	76	0
+130	76	0
+131	76	0
+132	76	0
+133	76	0
+134	76	0
+135	76	0
+136	76	0
+137	76	2.1169e-05
+138	76	7.8548e-05
+139	76	-6.949e-06
+140	76	-3.42e-05
+141	76	0.00026329
+142	76	0.00023217
+143	76	8.1021e-06
+144	76	-0.00033004
+145	76	0
+146	76	0
+147	76	0
+148	76	0
+149	76	0
+150	76	0
+151	76	0
+152	76	0
+153	76	0
+154	76	0
+155	76	0
+156	76	0
+157	76	0
+158	76	0
+159	76	0
+160	76	0
+161	76	0
+162	76	0
+163	76	0
+164	76	0
+165	76	0
+166	76	0
+167	76	0
+168	76	0
+169	76	0
+170	76	0
+171	76	0
+172	76	0
+173	76	0
+174	76	0
+175	76	0
+176	76	0
+177	76	0
+178	76	0
+179	76	0
+180	76	0
+181	76	0
+182	76	0
+183	76	0
+184	76	0
+185	76	0
+186	76	0
+187	76	0
+188	76	0
+189	76	0
+190	76	0
+191	76	0
+192	76	0
+193	76	0
+194	76	0
+195	76	0
+196	76	0
+197	76	0
+198	76	0
+199	76	0
+200	76	0
+201	76	0
+202	76	0
+203	76	0
+204	76	0
+205	76	0
+206	76	0
+207	76	0
+208	76	0
+209	76	0
+210	76	0
+211	76	0
+212	76	0
+213	76	0
+214	76	0
+215	76	0
+216	76	0
+217	76	0
+218	76	0
+219	76	0
+220	76	0
+221	76	0
+222	76	0
+223	76	0
+224	76	0
+225	76	0
+226	76	0
+227	76	0
+228	76	0
+229	76	0
+230	76	0
+231	76	0
+232	76	0
+233	76	0
+234	76	0
+235	76	0
+236	76	0
+237	76	0
+238	76	0
+239	76	0.44479
+240	76	0.23071
+241	76	0
+242	76	0.095685
+243	76	0.14817
+244	76	0.11202
+245	76	0
+246	76	0.13802
+247	76	0.25898
+248	76	0.15066
+249	76	0
+250	76	0.10618
+251	76	0.1313
+252	76	0.066214
+253	76	-0.038472
+254	76	-0.02551
+255	76	-0.092237
+256	76	-0.099376
+257	76	-0.51981
+258	76	-0.34287
+259	76	0
+260	76	-0.58707
+261	76	-1.1829
+262	76	-0.23536
+263	76	-0.082641
+264	76	-1.2077
+265	76	-2.5715
+266	76	-1.2553
+267	76	0
+268	76	-0.89597
+269	76	-1.8722
+270	76	-0.87852
+271	76	0
+272	76	0
+273	76	0
+274	76	0
+275	76	0
+276	76	0
+277	76	0
+278	76	0
+279	76	0
+280	76	0
+281	76	0
+282	76	0
+283	76	0
+284	76	0
+285	76	0
+286	76	0
+287	76	0
+288	76	0
+289	76	0
+290	76	0
+291	76	0
+292	76	0
+293	76	0
+294	76	0
+295	76	0
+296	76	0
+297	76	0
+298	76	0
+299	76	0
+300	76	0
+301	76	0
+302	76	0
+303	76	0
+304	76	0
+305	76	0
+306	76	0
+307	76	0
+308	76	0
+309	76	0
+310	76	0
+311	76	0
+312	76	0
+313	76	0
+314	76	0
+315	76	0
+316	76	0
+317	76	0
+318	76	0
+319	76	0
+320	76	0
+321	76	0
+322	76	0
+323	76	0
+324	76	0
+325	76	0
+326	76	0
+327	76	0
+328	76	0
+329	76	0
+330	76	0
+331	76	0
+332	76	0
+333	76	0
+334	76	0
+335	76	0
+336	76	0
+337	76	0
+338	76	0
+339	76	0
+340	76	0
+341	76	0
+342	76	0
+343	76	0
+344	76	0
+345	76	0
+346	76	0
+347	76	0
+348	76	0
+349	76	0
+350	76	0
+351	76	0
+352	76	0
+353	76	0
+354	76	0
+355	76	0
+356	76	0
+357	76	0
+358	76	0
+359	76	0
+360	76	0
+0	76.5	0
+1	76.5	0
+2	76.5	0
+3	76.5	0
+4	76.5	0
+5	76.5	0
+6	76.5	0
+7	76.5	0
+8	76.5	0
+9	76.5	0
+10	76.5	0
+11	76.5	0
+12	76.5	0
+13	76.5	0
+14	76.5	0
+15	76.5	0
+16	76.5	0
+17	76.5	0
+18	76.5	0
+19	76.5	0
+20	76.5	0
+21	76.5	0
+22	76.5	0
+23	76.5	0
+24	76.5	0
+25	76.5	0
+26	76.5	0
+27	76.5	0
+28	76.5	0
+29	76.5	0
+30	76.5	0
+31	76.5	0
+32	76.5	0
+33	76.5	0
+34	76.5	0
+35	76.5	0
+36	76.5	0
+37	76.5	0
+38	76.5	0
+39	76.5	0
+40	76.5	0
+41	76.5	0
+42	76.5	0
+43	76.5	0
+44	76.5	0
+45	76.5	0
+46	76.5	0
+47	76.5	0
+48	76.5	0
+49	76.5	0
+50	76.5	0
+51	76.5	0
+52	76.5	0
+53	76.5	0
+54	76.5	0
+55	76.5	0
+56	76.5	0
+57	76.5	0
+58	76.5	0
+59	76.5	0
+60	76.5	0
+61	76.5	0
+62	76.5	0
+63	76.5	0
+64	76.5	0
+65	76.5	0
+66	76.5	0
+67	76.5	0
+68	76.5	0
+69	76.5	0
+70	76.5	0
+71	76.5	0
+72	76.5	0
+73	76.5	0
+74	76.5	0
+75	76.5	0
+76	76.5	0
+77	76.5	0
+78	76.5	0
+79	76.5	0
+80	76.5	0
+81	76.5	0
+82	76.5	0
+83	76.5	0
+84	76.5	0
+85	76.5	0
+86	76.5	0
+87	76.5	0
+88	76.5	0
+89	76.5	0
+90	76.5	0
+91	76.5	0
+92	76.5	0
+93	76.5	0
+94	76.5	0
+95	76.5	0
+96	76.5	-0.0022385
+97	76.5	-0.15429
+98	76.5	-0.005456
+99	76.5	-0.026419
+100	76.5	-0.077903
+101	76.5	-0.10932
+102	76.5	-0.27312
+103	76.5	-0.32201
+104	76.5	-0.49027
+105	76.5	-0.51951
+106	76.5	-0.42175
+107	76.5	-0.28012
+108	76.5	-0.29338
+109	76.5	-0.21553
+110	76.5	-0.12562
+111	76.5	-0.25713
+112	76.5	-0.15196
+113	76.5	-0.015952
+114	76.5	0
+115	76.5	0
+116	76.5	0
+117	76.5	0
+118	76.5	0
+119	76.5	0
+120	76.5	0
+121	76.5	0
+122	76.5	0
+123	76.5	0
+124	76.5	0
+125	76.5	0
+126	76.5	0
+127	76.5	0
+128	76.5	0
+129	76.5	0
+130	76.5	0
+131	76.5	0
+132	76.5	0
+133	76.5	0
+134	76.5	0
+135	76.5	0
+136	76.5	0
+137	76.5	1.5875e-05
+138	76.5	3.9938e-05
+139	76.5	1.5722e-05
+140	76.5	4.934e-07
+141	76.5	0.00014895
+142	76.5	0.00010998
+143	76.5	0
+144	76.5	0
+145	76.5	0
+146	76.5	0
+147	76.5	0
+148	76.5	0
+149	76.5	0
+150	76.5	0
+151	76.5	0
+152	76.5	0
+153	76.5	0
+154	76.5	0
+155	76.5	0
+156	76.5	0
+157	76.5	0
+158	76.5	0
+159	76.5	0
+160	76.5	0
+161	76.5	0
+162	76.5	0
+163	76.5	0
+164	76.5	0
+165	76.5	0
+166	76.5	0
+167	76.5	0
+168	76.5	0
+169	76.5	0
+170	76.5	0
+171	76.5	0
+172	76.5	0
+173	76.5	0
+174	76.5	0
+175	76.5	0
+176	76.5	0
+177	76.5	0
+178	76.5	0
+179	76.5	0
+180	76.5	0
+181	76.5	0
+182	76.5	0
+183	76.5	0
+184	76.5	0
+185	76.5	0
+186	76.5	0
+187	76.5	0
+188	76.5	0
+189	76.5	0
+190	76.5	0
+191	76.5	0
+192	76.5	0
+193	76.5	0
+194	76.5	0
+195	76.5	0
+196	76.5	0
+197	76.5	0
+198	76.5	0
+199	76.5	0
+200	76.5	0
+201	76.5	0
+202	76.5	0
+203	76.5	0
+204	76.5	0
+205	76.5	0
+206	76.5	0
+207	76.5	0
+208	76.5	0
+209	76.5	0
+210	76.5	0
+211	76.5	0
+212	76.5	0
+213	76.5	0
+214	76.5	0
+215	76.5	0
+216	76.5	0
+217	76.5	0
+218	76.5	0
+219	76.5	0
+220	76.5	0
+221	76.5	0
+222	76.5	0
+223	76.5	0
+224	76.5	0
+225	76.5	0
+226	76.5	0
+227	76.5	0
+228	76.5	0
+229	76.5	0
+230	76.5	0
+231	76.5	0
+232	76.5	0
+233	76.5	0
+234	76.5	0
+235	76.5	0
+236	76.5	0
+237	76.5	0
+238	76.5	0
+239	76.5	0.28093
+240	76.5	0.27131
+241	76.5	0.063326
+242	76.5	0.42672
+243	76.5	0.35727
+244	76.5	0.080895
+245	76.5	0
+246	76.5	0
+247	76.5	0
+248	76.5	0
+249	76.5	0
+250	76.5	0.12377
+251	76.5	0.087817
+252	76.5	0.046482
+253	76.5	-0.01232
+254	76.5	0
+255	76.5	0
+256	76.5	0
+257	76.5	-0.3889
+258	76.5	-0.20166
+259	76.5	0
+260	76.5	-0.40612
+261	76.5	-0.4827
+262	76.5	0
+263	76.5	0
+264	76.5	-1.5147
+265	76.5	-3.0799
+266	76.5	-0.92226
+267	76.5	0
+268	76.5	0
+269	76.5	-0.80872
+270	76.5	-0.43097
+271	76.5	0
+272	76.5	0
+273	76.5	0
+274	76.5	0
+275	76.5	0
+276	76.5	0
+277	76.5	0
+278	76.5	-0.61006
+279	76.5	0
+280	76.5	0
+281	76.5	0
+282	76.5	0
+283	76.5	0
+284	76.5	0
+285	76.5	0
+286	76.5	0
+287	76.5	0
+288	76.5	0
+289	76.5	0
+290	76.5	0
+291	76.5	0
+292	76.5	0
+293	76.5	0
+294	76.5	0
+295	76.5	0
+296	76.5	0
+297	76.5	0
+298	76.5	0
+299	76.5	0
+300	76.5	0
+301	76.5	0
+302	76.5	0
+303	76.5	0
+304	76.5	0
+305	76.5	0
+306	76.5	0
+307	76.5	0
+308	76.5	0
+309	76.5	0
+310	76.5	0
+311	76.5	0
+312	76.5	0
+313	76.5	0
+314	76.5	0
+315	76.5	0
+316	76.5	0
+317	76.5	0
+318	76.5	0
+319	76.5	0
+320	76.5	0
+321	76.5	0
+322	76.5	0
+323	76.5	0
+324	76.5	0
+325	76.5	0
+326	76.5	0
+327	76.5	0
+328	76.5	0
+329	76.5	0
+330	76.5	0
+331	76.5	0
+332	76.5	0
+333	76.5	0
+334	76.5	0
+335	76.5	0
+336	76.5	0
+337	76.5	0
+338	76.5	0
+339	76.5	0
+340	76.5	0
+341	76.5	0
+342	76.5	0
+343	76.5	0
+344	76.5	0
+345	76.5	0
+346	76.5	0
+347	76.5	0
+348	76.5	0
+349	76.5	0
+350	76.5	0
+351	76.5	0
+352	76.5	0
+353	76.5	0
+354	76.5	0
+355	76.5	0
+356	76.5	0
+357	76.5	0
+358	76.5	0
+359	76.5	0
+360	76.5	0
+0	77	0
+1	77	0
+2	77	0
+3	77	0
+4	77	0
+5	77	0
+6	77	0
+7	77	0
+8	77	0
+9	77	0
+10	77	0
+11	77	0
+12	77	0
+13	77	0
+14	77	0
+15	77	0
+16	77	0
+17	77	0
+18	77	0
+19	77	0
+20	77	0
+21	77	0
+22	77	0
+23	77	0
+24	77	0
+25	77	0
+26	77	0
+27	77	0
+28	77	0
+29	77	0
+30	77	0
+31	77	0
+32	77	0
+33	77	0
+34	77	0
+35	77	0
+36	77	0
+37	77	0
+38	77	0
+39	77	0
+40	77	0
+41	77	0
+42	77	0
+43	77	0
+44	77	0
+45	77	0
+46	77	0
+47	77	0
+48	77	0
+49	77	0
+50	77	0
+51	77	0
+52	77	0
+53	77	0
+54	77	0
+55	77	0
+56	77	0
+57	77	0
+58	77	0
+59	77	0
+60	77	0
+61	77	0
+62	77	0
+63	77	0
+64	77	0
+65	77	0
+66	77	0
+67	77	0
+68	77	0
+69	77	0
+70	77	0
+71	77	0
+72	77	0
+73	77	0
+74	77	0
+75	77	0
+76	77	0
+77	77	0
+78	77	0
+79	77	0
+80	77	0
+81	77	0
+82	77	0
+83	77	0
+84	77	0
+85	77	0
+86	77	0
+87	77	0
+88	77	0
+89	77	0
+90	77	0
+91	77	0
+92	77	0
+93	77	0
+94	77	0
+95	77	0
+96	77	-0.14141
+97	77	-0.11604
+98	77	0
+99	77	0
+100	77	0
+101	77	-0.010789
+102	77	-0.11389
+103	77	-0.19332
+104	77	-0.36854
+105	77	-0.35999
+106	77	-0.1482
+107	77	-0.14051
+108	77	-0.15293
+109	77	-0.078208
+110	77	-0.014642
+111	77	-0.15079
+112	77	-0.14476
+113	77	-0.00017606
+114	77	0
+115	77	0
+116	77	0
+117	77	0
+118	77	0
+119	77	0
+120	77	0
+121	77	0
+122	77	0
+123	77	0
+124	77	0
+125	77	0
+126	77	0
+127	77	0
+128	77	0
+129	77	0
+130	77	0
+131	77	0
+132	77	0
+133	77	0
+134	77	0
+135	77	0
+136	77	0
+137	77	0
+138	77	0
+139	77	0
+140	77	0
+141	77	2.808e-06
+142	77	1.7604e-05
+143	77	0
+144	77	0
+145	77	0
+146	77	0
+147	77	0
+148	77	0
+149	77	0
+150	77	0
+151	77	0
+152	77	0
+153	77	0
+154	77	0
+155	77	0
+156	77	0
+157	77	0
+158	77	0
+159	77	0
+160	77	0
+161	77	0
+162	77	0
+163	77	0
+164	77	0
+165	77	0
+166	77	0
+167	77	0
+168	77	0
+169	77	0
+170	77	0
+171	77	0
+172	77	0
+173	77	0
+174	77	0
+175	77	0
+176	77	0
+177	77	0
+178	77	0
+179	77	0
+180	77	0
+181	77	0
+182	77	0
+183	77	0
+184	77	0
+185	77	0
+186	77	0
+187	77	0
+188	77	0
+189	77	0
+190	77	0
+191	77	0
+192	77	0
+193	77	0
+194	77	0
+195	77	0
+196	77	0
+197	77	0
+198	77	0
+199	77	0
+200	77	0
+201	77	0
+202	77	0
+203	77	0
+204	77	0
+205	77	0
+206	77	0
+207	77	0
+208	77	0
+209	77	0
+210	77	0
+211	77	0
+212	77	0
+213	77	0
+214	77	0
+215	77	0
+216	77	0
+217	77	0
+218	77	0
+219	77	0
+220	77	0
+221	77	0
+222	77	0
+223	77	0
+224	77	0
+225	77	0
+226	77	0
+227	77	0
+228	77	0
+229	77	0
+230	77	0
+231	77	0
+232	77	0
+233	77	0
+234	77	0
+235	77	0
+236	77	0
+237	77	0
+238	77	0
+239	77	0.082377
+240	77	0.072755
+241	77	0.063132
+242	77	0.27255
+243	77	0.32325
+244	77	0.046557
+245	77	0
+246	77	0
+247	77	0
+248	77	0
+249	77	0
+250	77	0.06849
+251	77	0.052696
+252	77	0.010757
+253	77	0
+254	77	0
+255	77	0
+256	77	0
+257	77	0
+258	77	-0.0089598
+259	77	0
+260	77	0
+261	77	0
+262	77	0
+263	77	0
+264	77	-1.0438
+265	77	-3.2151
+266	77	-0.53554
+267	77	0
+268	77	0
+269	77	-1.7964
+270	77	-1.4522
+271	77	0
+272	77	0
+273	77	-1.0066
+274	77	0
+275	77	0
+276	77	0
+277	77	0
+278	77	-3.27
+279	77	0
+280	77	0
+281	77	0
+282	77	0
+283	77	0
+284	77	0
+285	77	0
+286	77	0
+287	77	0
+288	77	0
+289	77	0
+290	77	0
+291	77	0
+292	77	0
+293	77	0
+294	77	0
+295	77	0
+296	77	0
+297	77	0
+298	77	0
+299	77	0
+300	77	0
+301	77	0
+302	77	0
+303	77	0
+304	77	0
+305	77	0
+306	77	0
+307	77	0
+308	77	0
+309	77	0
+310	77	0
+311	77	0
+312	77	0
+313	77	0
+314	77	0
+315	77	0
+316	77	0
+317	77	0
+318	77	0
+319	77	0
+320	77	0
+321	77	0
+322	77	0
+323	77	0
+324	77	0
+325	77	0
+326	77	0
+327	77	0
+328	77	0
+329	77	0
+330	77	0
+331	77	0
+332	77	0
+333	77	0
+334	77	0
+335	77	0
+336	77	0
+337	77	0
+338	77	0
+339	77	0
+340	77	0
+341	77	-0.85941
+342	77	-0.39214
+343	77	0
+344	77	0
+345	77	0
+346	77	0
+347	77	0
+348	77	0
+349	77	0
+350	77	0
+351	77	0
+352	77	0
+353	77	0
+354	77	0
+355	77	0
+356	77	0
+357	77	0
+358	77	0
+359	77	0
+360	77	0
+0	77.5	0
+1	77.5	0
+2	77.5	0
+3	77.5	0
+4	77.5	0
+5	77.5	0
+6	77.5	0
+7	77.5	0
+8	77.5	0
+9	77.5	0
+10	77.5	0
+11	77.5	0
+12	77.5	0
+13	77.5	0
+14	77.5	0
+15	77.5	0
+16	77.5	0
+17	77.5	0
+18	77.5	0
+19	77.5	0
+20	77.5	0
+21	77.5	0
+22	77.5	0
+23	77.5	0
+24	77.5	0
+25	77.5	0
+26	77.5	0
+27	77.5	0
+28	77.5	0
+29	77.5	0
+30	77.5	0
+31	77.5	0
+32	77.5	0
+33	77.5	0
+34	77.5	0
+35	77.5	0
+36	77.5	0
+37	77.5	0
+38	77.5	0
+39	77.5	0
+40	77.5	0
+41	77.5	0
+42	77.5	0
+43	77.5	0
+44	77.5	0
+45	77.5	0
+46	77.5	0
+47	77.5	0
+48	77.5	0
+49	77.5	0
+50	77.5	0
+51	77.5	0
+52	77.5	0
+53	77.5	0
+54	77.5	0
+55	77.5	0
+56	77.5	0
+57	77.5	0
+58	77.5	0
+59	77.5	0
+60	77.5	0
+61	77.5	0
+62	77.5	0
+63	77.5	0
+64	77.5	0
+65	77.5	0
+66	77.5	0
+67	77.5	0
+68	77.5	0
+69	77.5	0
+70	77.5	0
+71	77.5	0
+72	77.5	0
+73	77.5	0
+74	77.5	0
+75	77.5	0
+76	77.5	0
+77	77.5	0
+78	77.5	0
+79	77.5	0
+80	77.5	0
+81	77.5	0
+82	77.5	0
+83	77.5	0
+84	77.5	0
+85	77.5	0
+86	77.5	0
+87	77.5	0
+88	77.5	0
+89	77.5	0
+90	77.5	0
+91	77.5	0
+92	77.5	0
+93	77.5	0
+94	77.5	0
+95	77.5	0
+96	77.5	-0.026097
+97	77.5	-0.005795
+98	77.5	0
+99	77.5	0
+100	77.5	0
+101	77.5	-0.0014054
+102	77.5	-0.022576
+103	77.5	-0.065951
+104	77.5	-0.2125
+105	77.5	-0.18245
+106	77.5	0
+107	77.5	0
+108	77.5	-0.0066858
+109	77.5	0
+110	77.5	0
+111	77.5	-0.05628
+112	77.5	-0.074234
+113	77.5	0
+114	77.5	0
+115	77.5	0
+116	77.5	0
+117	77.5	0
+118	77.5	0
+119	77.5	0
+120	77.5	0
+121	77.5	0
+122	77.5	0
+123	77.5	0
+124	77.5	0
+125	77.5	0
+126	77.5	0
+127	77.5	0
+128	77.5	0
+129	77.5	0
+130	77.5	0
+131	77.5	0
+132	77.5	0
+133	77.5	0
+134	77.5	0
+135	77.5	0
+136	77.5	0
+137	77.5	0
+138	77.5	0
+139	77.5	0
+140	77.5	0
+141	77.5	0
+142	77.5	0
+143	77.5	0
+144	77.5	0
+145	77.5	0
+146	77.5	0
+147	77.5	0
+148	77.5	0
+149	77.5	0
+150	77.5	0
+151	77.5	0
+152	77.5	0
+153	77.5	0
+154	77.5	0
+155	77.5	0
+156	77.5	0
+157	77.5	0
+158	77.5	0
+159	77.5	0
+160	77.5	0
+161	77.5	0
+162	77.5	0
+163	77.5	0
+164	77.5	0
+165	77.5	0
+166	77.5	0
+167	77.5	0
+168	77.5	0
+169	77.5	0
+170	77.5	0
+171	77.5	0
+172	77.5	0
+173	77.5	0
+174	77.5	0
+175	77.5	0
+176	77.5	0
+177	77.5	0
+178	77.5	0
+179	77.5	0
+180	77.5	0
+181	77.5	0
+182	77.5	0
+183	77.5	0
+184	77.5	0
+185	77.5	0
+186	77.5	0
+187	77.5	0
+188	77.5	0
+189	77.5	0
+190	77.5	0
+191	77.5	0
+192	77.5	0
+193	77.5	0
+194	77.5	0
+195	77.5	0
+196	77.5	0
+197	77.5	0
+198	77.5	0
+199	77.5	0
+200	77.5	0
+201	77.5	0
+202	77.5	0
+203	77.5	0
+204	77.5	0
+205	77.5	0
+206	77.5	0
+207	77.5	0
+208	77.5	0
+209	77.5	0
+210	77.5	0
+211	77.5	0
+212	77.5	0
+213	77.5	0
+214	77.5	0
+215	77.5	0
+216	77.5	0
+217	77.5	0
+218	77.5	0
+219	77.5	0
+220	77.5	0
+221	77.5	0
+222	77.5	0
+223	77.5	0
+224	77.5	0
+225	77.5	0
+226	77.5	0
+227	77.5	0
+228	77.5	0
+229	77.5	0
+230	77.5	0
+231	77.5	0
+232	77.5	0
+233	77.5	0
+234	77.5	0
+235	77.5	0
+236	77.5	0
+237	77.5	0
+238	77.5	0
+239	77.5	0
+240	77.5	0
+241	77.5	0
+242	77.5	0.07984
+243	77.5	0.18232
+244	77.5	0.012219
+245	77.5	0
+246	77.5	0
+247	77.5	0
+248	77.5	0
+249	77.5	0
+250	77.5	0.010483
+251	77.5	0.0045971
+252	77.5	0
+253	77.5	0
+254	77.5	0
+255	77.5	0
+256	77.5	0
+257	77.5	0
+258	77.5	0
+259	77.5	0
+260	77.5	0
+261	77.5	0
+262	77.5	0
+263	77.5	-0.67128
+264	77.5	-0.33492
+265	77.5	-1.8986
+266	77.5	-1.797
+267	77.5	-0.21025
+268	77.5	0
+269	77.5	-2.3941
+270	77.5	-1.7239
+271	77.5	-0.10798
+272	77.5	-0.040325
+273	77.5	-1.8119
+274	77.5	-0.022413
+275	77.5	-0.27074
+276	77.5	-0.92154
+277	77.5	-0.48949
+278	77.5	-2.9981
+279	77.5	0
+280	77.5	0
+281	77.5	0
+282	77.5	0
+283	77.5	0
+284	77.5	0
+285	77.5	0
+286	77.5	0
+287	77.5	0
+288	77.5	0
+289	77.5	0
+290	77.5	0
+291	77.5	0
+292	77.5	0
+293	77.5	0
+294	77.5	0
+295	77.5	0
+296	77.5	0
+297	77.5	0
+298	77.5	0
+299	77.5	0
+300	77.5	0
+301	77.5	0
+302	77.5	0
+303	77.5	0
+304	77.5	0
+305	77.5	0
+306	77.5	0
+307	77.5	0
+308	77.5	0
+309	77.5	0
+310	77.5	0
+311	77.5	0
+312	77.5	0
+313	77.5	0
+314	77.5	0
+315	77.5	0
+316	77.5	0
+317	77.5	0
+318	77.5	0
+319	77.5	0
+320	77.5	0
+321	77.5	0
+322	77.5	0
+323	77.5	0
+324	77.5	0
+325	77.5	0
+326	77.5	0
+327	77.5	0
+328	77.5	0
+329	77.5	0
+330	77.5	0
+331	77.5	0
+332	77.5	0
+333	77.5	0
+334	77.5	0
+335	77.5	0
+336	77.5	0
+337	77.5	0
+338	77.5	0
+339	77.5	0
+340	77.5	0
+341	77.5	-1.5064
+342	77.5	-2.5147
+343	77.5	0
+344	77.5	0
+345	77.5	0
+346	77.5	0
+347	77.5	0
+348	77.5	0
+349	77.5	0
+350	77.5	0
+351	77.5	0
+352	77.5	0
+353	77.5	0
+354	77.5	0
+355	77.5	0
+356	77.5	0
+357	77.5	0
+358	77.5	0
+359	77.5	0
+360	77.5	0
+0	78	0
+1	78	0
+2	78	0
+3	78	0
+4	78	0
+5	78	0
+6	78	0
+7	78	0
+8	78	0
+9	78	0
+10	78	0
+11	78	0
+12	78	0
+13	78	0
+14	78	0
+15	78	0
+16	78	0
+17	78	0
+18	78	0
+19	78	0
+20	78	0
+21	78	0
+22	78	0
+23	78	0
+24	78	0
+25	78	0
+26	78	0
+27	78	0
+28	78	0
+29	78	0
+30	78	0
+31	78	0
+32	78	0
+33	78	0
+34	78	0
+35	78	0
+36	78	0
+37	78	0
+38	78	0
+39	78	0
+40	78	0
+41	78	0
+42	78	0
+43	78	0
+44	78	0
+45	78	0
+46	78	0
+47	78	0
+48	78	0
+49	78	0
+50	78	0
+51	78	0
+52	78	0
+53	78	0
+54	78	0
+55	78	0
+56	78	0
+57	78	0
+58	78	0
+59	78	0
+60	78	0
+61	78	0
+62	78	0
+63	78	0
+64	78	0
+65	78	0
+66	78	0
+67	78	0
+68	78	0
+69	78	0
+70	78	0
+71	78	0
+72	78	0
+73	78	0
+74	78	0
+75	78	0
+76	78	0
+77	78	0
+78	78	0
+79	78	0
+80	78	0
+81	78	0
+82	78	0
+83	78	0
+84	78	0
+85	78	0
+86	78	0
+87	78	0
+88	78	0
+89	78	0
+90	78	0
+91	78	0
+92	78	0
+93	78	0
+94	78	0
+95	78	0
+96	78	0
+97	78	0
+98	78	0
+99	78	0
+100	78	0
+101	78	0
+102	78	0
+103	78	0
+104	78	-0.071708
+105	78	-0.029302
+106	78	0
+107	78	0
+108	78	0
+109	78	0
+110	78	0
+111	78	0
+112	78	-0.0037074
+113	78	0
+114	78	0
+115	78	0
+116	78	0
+117	78	0
+118	78	0
+119	78	0
+120	78	0
+121	78	0
+122	78	0
+123	78	0
+124	78	0
+125	78	0
+126	78	0
+127	78	0
+128	78	0
+129	78	0
+130	78	0
+131	78	0
+132	78	0
+133	78	0
+134	78	0
+135	78	0
+136	78	0
+137	78	0
+138	78	0
+139	78	0
+140	78	0
+141	78	0
+142	78	0
+143	78	0
+144	78	0
+145	78	0
+146	78	0
+147	78	0
+148	78	0
+149	78	0
+150	78	0
+151	78	0
+152	78	0
+153	78	0
+154	78	0
+155	78	0
+156	78	0
+157	78	0
+158	78	0
+159	78	0
+160	78	0
+161	78	0
+162	78	0
+163	78	0
+164	78	0
+165	78	0
+166	78	0
+167	78	0
+168	78	0
+169	78	0
+170	78	0
+171	78	0
+172	78	0
+173	78	0
+174	78	0
+175	78	0
+176	78	0
+177	78	0
+178	78	0
+179	78	0
+180	78	0
+181	78	0
+182	78	0
+183	78	0
+184	78	0
+185	78	0
+186	78	0
+187	78	0
+188	78	0
+189	78	0
+190	78	0
+191	78	0
+192	78	0
+193	78	0
+194	78	0
+195	78	0
+196	78	0
+197	78	0
+198	78	0
+199	78	0
+200	78	0
+201	78	0
+202	78	0
+203	78	0
+204	78	0
+205	78	0
+206	78	0
+207	78	0
+208	78	0
+209	78	0
+210	78	0
+211	78	0
+212	78	0
+213	78	0
+214	78	0
+215	78	0
+216	78	0
+217	78	0
+218	78	0
+219	78	0
+220	78	0
+221	78	0
+222	78	0
+223	78	0
+224	78	0
+225	78	0
+226	78	0
+227	78	0
+228	78	0
+229	78	0
+230	78	0
+231	78	0
+232	78	0
+233	78	0
+234	78	0
+235	78	0
+236	78	0
+237	78	0
+238	78	0
+239	78	0
+240	78	0
+241	78	0
+242	78	0
+243	78	0.032974
+244	78	0
+245	78	0
+246	78	0
+247	78	0
+248	78	0
+249	78	0
+250	78	0
+251	78	0
+252	78	0
+253	78	0
+254	78	0
+255	78	0
+256	78	0
+257	78	0
+258	78	-0.069628
+259	78	-0.37028
+260	78	-0.12885
+261	78	0
+262	78	0
+263	78	-1.8005
+264	78	-0.16775
+265	78	-1.2849
+266	78	-1.5059
+267	78	-0.32111
+268	78	0
+269	78	-1.306
+270	78	-1.2739
+271	78	-0.41751
+272	78	-2.1877
+273	78	-3.0644
+274	78	-0.96824
+275	78	-1.3472
+276	78	-3.7833
+277	78	-4.3987
+278	78	-1.76
+279	78	0
+280	78	0
+281	78	0
+282	78	0
+283	78	0
+284	78	0
+285	78	0
+286	78	0
+287	78	0
+288	78	0
+289	78	0
+290	78	0
+291	78	0
+292	78	0
+293	78	0
+294	78	0
+295	78	0
+296	78	0
+297	78	0
+298	78	0
+299	78	0
+300	78	0
+301	78	0
+302	78	0
+303	78	0
+304	78	0
+305	78	0
+306	78	0
+307	78	0
+308	78	0
+309	78	0
+310	78	0
+311	78	0
+312	78	0
+313	78	0
+314	78	0
+315	78	0
+316	78	0
+317	78	0
+318	78	0
+319	78	0
+320	78	0
+321	78	0
+322	78	0
+323	78	0
+324	78	0
+325	78	0
+326	78	0
+327	78	0
+328	78	0
+329	78	0
+330	78	0
+331	78	0
+332	78	0
+333	78	0
+334	78	0
+335	78	0
+336	78	0
+337	78	0
+338	78	0
+339	78	0
+340	78	0
+341	78	-0.89125
+342	78	-2.8265
+343	78	-0.31124
+344	78	0
+345	78	0
+346	78	0
+347	78	0
+348	78	0
+349	78	0
+350	78	0
+351	78	0
+352	78	0
+353	78	0
+354	78	0
+355	78	0
+356	78	0
+357	78	0
+358	78	0
+359	78	0
+360	78	0
+0	78.5	0
+1	78.5	0
+2	78.5	0
+3	78.5	0
+4	78.5	0
+5	78.5	0
+6	78.5	0
+7	78.5	0
+8	78.5	0
+9	78.5	0
+10	78.5	0
+11	78.5	0
+12	78.5	0
+13	78.5	0
+14	78.5	0
+15	78.5	0
+16	78.5	0
+17	78.5	0
+18	78.5	0
+19	78.5	0
+20	78.5	0
+21	78.5	0
+22	78.5	0
+23	78.5	0
+24	78.5	0
+25	78.5	0
+26	78.5	0
+27	78.5	0
+28	78.5	0
+29	78.5	0
+30	78.5	0
+31	78.5	0
+32	78.5	0
+33	78.5	0
+34	78.5	0
+35	78.5	0
+36	78.5	0
+37	78.5	0
+38	78.5	0
+39	78.5	0
+40	78.5	0
+41	78.5	0
+42	78.5	0
+43	78.5	0
+44	78.5	0
+45	78.5	0
+46	78.5	0
+47	78.5	0
+48	78.5	0
+49	78.5	0
+50	78.5	0
+51	78.5	0
+52	78.5	0
+53	78.5	0
+54	78.5	0
+55	78.5	0
+56	78.5	0
+57	78.5	0
+58	78.5	0
+59	78.5	0
+60	78.5	0
+61	78.5	0
+62	78.5	0
+63	78.5	0
+64	78.5	0
+65	78.5	0
+66	78.5	0
+67	78.5	0
+68	78.5	0
+69	78.5	0
+70	78.5	0
+71	78.5	0
+72	78.5	0
+73	78.5	0
+74	78.5	0
+75	78.5	0
+76	78.5	0
+77	78.5	0
+78	78.5	0
+79	78.5	0
+80	78.5	0
+81	78.5	0
+82	78.5	0
+83	78.5	0
+84	78.5	0
+85	78.5	0
+86	78.5	0
+87	78.5	0
+88	78.5	0
+89	78.5	0
+90	78.5	0
+91	78.5	0
+92	78.5	0
+93	78.5	0
+94	78.5	0
+95	78.5	0
+96	78.5	0
+97	78.5	0
+98	78.5	0
+99	78.5	0
+100	78.5	0
+101	78.5	0
+102	78.5	0
+103	78.5	0
+104	78.5	0
+105	78.5	0
+106	78.5	0
+107	78.5	0
+108	78.5	0
+109	78.5	0
+110	78.5	0
+111	78.5	0
+112	78.5	0
+113	78.5	0
+114	78.5	0
+115	78.5	0
+116	78.5	0
+117	78.5	0
+118	78.5	0
+119	78.5	0
+120	78.5	0
+121	78.5	0
+122	78.5	0
+123	78.5	0
+124	78.5	0
+125	78.5	0
+126	78.5	0
+127	78.5	0
+128	78.5	0
+129	78.5	0
+130	78.5	0
+131	78.5	0
+132	78.5	0
+133	78.5	0
+134	78.5	0
+135	78.5	0
+136	78.5	0
+137	78.5	0
+138	78.5	0
+139	78.5	0
+140	78.5	0
+141	78.5	0
+142	78.5	0
+143	78.5	0
+144	78.5	0
+145	78.5	0
+146	78.5	0
+147	78.5	0
+148	78.5	0
+149	78.5	0
+150	78.5	0
+151	78.5	0
+152	78.5	0
+153	78.5	0
+154	78.5	0
+155	78.5	0
+156	78.5	0
+157	78.5	0
+158	78.5	0
+159	78.5	0
+160	78.5	0
+161	78.5	0
+162	78.5	0
+163	78.5	0
+164	78.5	0
+165	78.5	0
+166	78.5	0
+167	78.5	0
+168	78.5	0
+169	78.5	0
+170	78.5	0
+171	78.5	0
+172	78.5	0
+173	78.5	0
+174	78.5	0
+175	78.5	0
+176	78.5	0
+177	78.5	0
+178	78.5	0
+179	78.5	0
+180	78.5	0
+181	78.5	0
+182	78.5	0
+183	78.5	0
+184	78.5	0
+185	78.5	0
+186	78.5	0
+187	78.5	0
+188	78.5	0
+189	78.5	0
+190	78.5	0
+191	78.5	0
+192	78.5	0
+193	78.5	0
+194	78.5	0
+195	78.5	0
+196	78.5	0
+197	78.5	0
+198	78.5	0
+199	78.5	0
+200	78.5	0
+201	78.5	0
+202	78.5	0
+203	78.5	0
+204	78.5	0
+205	78.5	0
+206	78.5	0
+207	78.5	0
+208	78.5	0
+209	78.5	0
+210	78.5	0
+211	78.5	0
+212	78.5	0
+213	78.5	0
+214	78.5	0
+215	78.5	0
+216	78.5	0
+217	78.5	0
+218	78.5	0
+219	78.5	0
+220	78.5	0
+221	78.5	0
+222	78.5	0
+223	78.5	0
+224	78.5	0
+225	78.5	0
+226	78.5	0
+227	78.5	0
+228	78.5	0
+229	78.5	0
+230	78.5	0
+231	78.5	0
+232	78.5	0
+233	78.5	0
+234	78.5	0
+235	78.5	0
+236	78.5	0
+237	78.5	0
+238	78.5	0
+239	78.5	0
+240	78.5	0
+241	78.5	0
+242	78.5	0
+243	78.5	0
+244	78.5	0
+245	78.5	0
+246	78.5	0
+247	78.5	0
+248	78.5	0
+249	78.5	0
+250	78.5	0
+251	78.5	0
+252	78.5	0
+253	78.5	0
+254	78.5	0
+255	78.5	0
+256	78.5	0
+257	78.5	0
+258	78.5	-0.16587
+259	78.5	-0.86936
+260	78.5	-0.48189
+261	78.5	0
+262	78.5	0
+263	78.5	-0.96328
+264	78.5	-0.29173
+265	78.5	-0.89633
+266	78.5	-0.32683
+267	78.5	0
+268	78.5	-0.67228
+269	78.5	-0.20233
+270	78.5	-0.22852
+271	78.5	-0.18611
+272	78.5	-0.14137
+273	78.5	-5.0234
+274	78.5	-4.8445
+275	78.5	-6.4763
+276	78.5	-6.066
+277	78.5	-7.0388
+278	78.5	-5.3026
+279	78.5	-0.14664
+280	78.5	0
+281	78.5	0
+282	78.5	0
+283	78.5	0
+284	78.5	-0.0046725
+285	78.5	-0.15718
+286	78.5	0
+287	78.5	0
+288	78.5	0
+289	78.5	0
+290	78.5	0
+291	78.5	0
+292	78.5	0
+293	78.5	0
+294	78.5	0
+295	78.5	0
+296	78.5	0
+297	78.5	0
+298	78.5	0
+299	78.5	0
+300	78.5	0
+301	78.5	0
+302	78.5	0
+303	78.5	0
+304	78.5	0
+305	78.5	0
+306	78.5	0
+307	78.5	0
+308	78.5	0
+309	78.5	0
+310	78.5	0
+311	78.5	0
+312	78.5	0
+313	78.5	0
+314	78.5	0
+315	78.5	0
+316	78.5	0
+317	78.5	0
+318	78.5	0
+319	78.5	0
+320	78.5	0
+321	78.5	0
+322	78.5	0
+323	78.5	0
+324	78.5	0
+325	78.5	0
+326	78.5	0
+327	78.5	0
+328	78.5	0
+329	78.5	0
+330	78.5	0
+331	78.5	0
+332	78.5	0
+333	78.5	0
+334	78.5	0
+335	78.5	0
+336	78.5	0
+337	78.5	0
+338	78.5	0
+339	78.5	0
+340	78.5	0
+341	78.5	0
+342	78.5	-0.27463
+343	78.5	0
+344	78.5	0
+345	78.5	0
+346	78.5	0
+347	78.5	0
+348	78.5	0
+349	78.5	0
+350	78.5	0
+351	78.5	0
+352	78.5	0
+353	78.5	0
+354	78.5	0
+355	78.5	0
+356	78.5	0
+357	78.5	0
+358	78.5	0
+359	78.5	0
+360	78.5	0
+0	79	0
+1	79	0
+2	79	0
+3	79	0
+4	79	0
+5	79	0
+6	79	0
+7	79	0
+8	79	0
+9	79	0
+10	79	0
+11	79	0
+12	79	0
+13	79	0
+14	79	-0.011922
+15	79	0
+16	79	0
+17	79	0
+18	79	0
+19	79	0
+20	79	0
+21	79	0
+22	79	0
+23	79	0
+24	79	0
+25	79	0
+26	79	0
+27	79	0
+28	79	0
+29	79	0
+30	79	0
+31	79	0
+32	79	0
+33	79	0
+34	79	0
+35	79	0
+36	79	0
+37	79	0
+38	79	0
+39	79	0
+40	79	0
+41	79	0
+42	79	0
+43	79	0
+44	79	0
+45	79	0
+46	79	0
+47	79	0
+48	79	0
+49	79	0
+50	79	0
+51	79	0
+52	79	0
+53	79	0
+54	79	0
+55	79	0
+56	79	0
+57	79	0
+58	79	0
+59	79	0
+60	79	0
+61	79	0
+62	79	0
+63	79	0
+64	79	0
+65	79	0
+66	79	0
+67	79	0
+68	79	0
+69	79	0
+70	79	0
+71	79	0
+72	79	0
+73	79	0
+74	79	0
+75	79	0
+76	79	0
+77	79	0
+78	79	0
+79	79	0
+80	79	0
+81	79	0
+82	79	0
+83	79	0
+84	79	0
+85	79	0
+86	79	0
+87	79	0
+88	79	0
+89	79	0
+90	79	0
+91	79	0
+92	79	0
+93	79	-0.001443
+94	79	-0.0019248
+95	79	0
+96	79	0
+97	79	0
+98	79	0
+99	79	0
+100	79	0
+101	79	0
+102	79	0
+103	79	0
+104	79	0
+105	79	0
+106	79	0
+107	79	0
+108	79	0
+109	79	0
+110	79	0
+111	79	0
+112	79	0
+113	79	0
+114	79	0
+115	79	0
+116	79	0
+117	79	0
+118	79	0
+119	79	0
+120	79	0
+121	79	0
+122	79	0
+123	79	0
+124	79	0
+125	79	0
+126	79	0
+127	79	0
+128	79	0
+129	79	0
+130	79	0
+131	79	0
+132	79	0
+133	79	0
+134	79	0
+135	79	0
+136	79	0
+137	79	0
+138	79	0
+139	79	0
+140	79	0
+141	79	0
+142	79	0
+143	79	0
+144	79	0
+145	79	0
+146	79	0
+147	79	0
+148	79	0
+149	79	0
+150	79	0
+151	79	0
+152	79	0
+153	79	0
+154	79	0
+155	79	0
+156	79	0
+157	79	0
+158	79	0
+159	79	0
+160	79	0
+161	79	0
+162	79	0
+163	79	0
+164	79	0
+165	79	0
+166	79	0
+167	79	0
+168	79	0
+169	79	0
+170	79	0
+171	79	0
+172	79	0
+173	79	0
+174	79	0
+175	79	0
+176	79	0
+177	79	0
+178	79	0
+179	79	0
+180	79	0
+181	79	0
+182	79	0
+183	79	0
+184	79	0
+185	79	0
+186	79	0
+187	79	0
+188	79	0
+189	79	0
+190	79	0
+191	79	0
+192	79	0
+193	79	0
+194	79	0
+195	79	0
+196	79	0
+197	79	0
+198	79	0
+199	79	0
+200	79	0
+201	79	0
+202	79	0
+203	79	0
+204	79	0
+205	79	0
+206	79	0
+207	79	0
+208	79	0
+209	79	0
+210	79	0
+211	79	0
+212	79	0
+213	79	0
+214	79	0
+215	79	0
+216	79	0
+217	79	0
+218	79	0
+219	79	0
+220	79	0
+221	79	0
+222	79	0
+223	79	0
+224	79	0
+225	79	0
+226	79	0
+227	79	0
+228	79	0
+229	79	0
+230	79	0
+231	79	0
+232	79	0
+233	79	0
+234	79	0
+235	79	0
+236	79	0
+237	79	0
+238	79	0
+239	79	0
+240	79	0
+241	79	0
+242	79	0
+243	79	0
+244	79	0
+245	79	0
+246	79	0
+247	79	0
+248	79	0
+249	79	0
+250	79	0
+251	79	0
+252	79	0
+253	79	0
+254	79	0
+255	79	0
+256	79	0
+257	79	0
+258	79	-0.26211
+259	79	-0.92591
+260	79	-0.67523
+261	79	0
+262	79	0
+263	79	0
+264	79	0
+265	79	-0.1335
+266	79	-0.34613
+267	79	-2.9855
+268	79	-4.1528
+269	79	-0.3968
+270	79	0
+271	79	0
+272	79	-0.60151
+273	79	-4.5864
+274	79	-4.7519
+275	79	-5.721
+276	79	-7.6282
+277	79	-3.8474
+278	79	-6.1601
+279	79	-1.1216
+280	79	0
+281	79	0
+282	79	0
+283	79	-0.79892
+284	79	-1.7246
+285	79	0
+286	79	0
+287	79	0
+288	79	0
+289	79	0
+290	79	0
+291	79	0
+292	79	0
+293	79	0
+294	79	0
+295	79	0
+296	79	0
+297	79	0
+298	79	0
+299	79	0
+300	79	0
+301	79	0
+302	79	0
+303	79	0
+304	79	0
+305	79	0
+306	79	0
+307	79	0
+308	79	0
+309	79	0
+310	79	0
+311	79	0
+312	79	0
+313	79	0
+314	79	0
+315	79	0
+316	79	0
+317	79	0
+318	79	0
+319	79	0
+320	79	0
+321	79	0
+322	79	0
+323	79	0
+324	79	0
+325	79	0
+326	79	0
+327	79	0
+328	79	0
+329	79	0
+330	79	0
+331	79	0
+332	79	0
+333	79	0
+334	79	0
+335	79	0
+336	79	0
+337	79	0
+338	79	0
+339	79	0
+340	79	0
+341	79	0
+342	79	0
+343	79	0
+344	79	0
+345	79	0
+346	79	0
+347	79	0
+348	79	0
+349	79	0
+350	79	0
+351	79	0
+352	79	0
+353	79	0
+354	79	0
+355	79	0
+356	79	0
+357	79	0
+358	79	0
+359	79	0
+360	79	0
+0	79.5	0
+1	79.5	0
+2	79.5	0
+3	79.5	0
+4	79.5	0
+5	79.5	0
+6	79.5	0
+7	79.5	0
+8	79.5	0
+9	79.5	0
+10	79.5	0
+11	79.5	0
+12	79.5	0
+13	79.5	-0.078681
+14	79.5	-0.15422
+15	79.5	0
+16	79.5	0
+17	79.5	0
+18	79.5	0
+19	79.5	0
+20	79.5	0
+21	79.5	0
+22	79.5	0
+23	79.5	0
+24	79.5	0
+25	79.5	0
+26	79.5	0
+27	79.5	0
+28	79.5	0
+29	79.5	0
+30	79.5	0
+31	79.5	0
+32	79.5	0
+33	79.5	0
+34	79.5	0
+35	79.5	0
+36	79.5	0
+37	79.5	0
+38	79.5	0
+39	79.5	0
+40	79.5	0
+41	79.5	0
+42	79.5	0
+43	79.5	0
+44	79.5	0
+45	79.5	0
+46	79.5	0
+47	79.5	0
+48	79.5	0
+49	79.5	0
+50	79.5	0
+51	79.5	0
+52	79.5	0
+53	79.5	0
+54	79.5	0
+55	79.5	0
+56	79.5	0
+57	79.5	0
+58	79.5	0
+59	79.5	0
+60	79.5	0
+61	79.5	0
+62	79.5	0
+63	79.5	0
+64	79.5	0
+65	79.5	0
+66	79.5	0
+67	79.5	0
+68	79.5	0
+69	79.5	0
+70	79.5	0
+71	79.5	0
+72	79.5	0
+73	79.5	0
+74	79.5	0
+75	79.5	0
+76	79.5	0
+77	79.5	0
+78	79.5	0
+79	79.5	0
+80	79.5	0
+81	79.5	0
+82	79.5	0
+83	79.5	0
+84	79.5	0
+85	79.5	0
+86	79.5	0
+87	79.5	0
+88	79.5	0
+89	79.5	0
+90	79.5	0
+91	79.5	0
+92	79.5	0
+93	79.5	0
+94	79.5	-0.0075061
+95	79.5	-0.00085633
+96	79.5	0
+97	79.5	0
+98	79.5	0
+99	79.5	0
+100	79.5	0
+101	79.5	0
+102	79.5	0
+103	79.5	0
+104	79.5	0
+105	79.5	0
+106	79.5	0
+107	79.5	0
+108	79.5	0
+109	79.5	0
+110	79.5	0
+111	79.5	0
+112	79.5	0
+113	79.5	0
+114	79.5	0
+115	79.5	0
+116	79.5	0
+117	79.5	0
+118	79.5	0
+119	79.5	0
+120	79.5	0
+121	79.5	0
+122	79.5	0
+123	79.5	0
+124	79.5	0
+125	79.5	0
+126	79.5	0
+127	79.5	0
+128	79.5	0
+129	79.5	0
+130	79.5	0
+131	79.5	0
+132	79.5	0
+133	79.5	0
+134	79.5	0
+135	79.5	0
+136	79.5	0
+137	79.5	0
+138	79.5	0
+139	79.5	0
+140	79.5	0
+141	79.5	0
+142	79.5	0
+143	79.5	0
+144	79.5	0
+145	79.5	0
+146	79.5	0
+147	79.5	0
+148	79.5	0
+149	79.5	0
+150	79.5	0
+151	79.5	0
+152	79.5	0
+153	79.5	0
+154	79.5	0
+155	79.5	0
+156	79.5	0
+157	79.5	0
+158	79.5	0
+159	79.5	0
+160	79.5	0
+161	79.5	0
+162	79.5	0
+163	79.5	0
+164	79.5	0
+165	79.5	0
+166	79.5	0
+167	79.5	0
+168	79.5	0
+169	79.5	0
+170	79.5	0
+171	79.5	0
+172	79.5	0
+173	79.5	0
+174	79.5	0
+175	79.5	0
+176	79.5	0
+177	79.5	0
+178	79.5	0
+179	79.5	0
+180	79.5	0
+181	79.5	0
+182	79.5	0
+183	79.5	0
+184	79.5	0
+185	79.5	0
+186	79.5	0
+187	79.5	0
+188	79.5	0
+189	79.5	0
+190	79.5	0
+191	79.5	0
+192	79.5	0
+193	79.5	0
+194	79.5	0
+195	79.5	0
+196	79.5	0
+197	79.5	0
+198	79.5	0
+199	79.5	0
+200	79.5	0
+201	79.5	0
+202	79.5	0
+203	79.5	0
+204	79.5	0
+205	79.5	0
+206	79.5	0
+207	79.5	0
+208	79.5	0
+209	79.5	0
+210	79.5	0
+211	79.5	0
+212	79.5	0
+213	79.5	0
+214	79.5	0
+215	79.5	0
+216	79.5	0
+217	79.5	0
+218	79.5	0
+219	79.5	0
+220	79.5	0
+221	79.5	0
+222	79.5	0
+223	79.5	0
+224	79.5	0
+225	79.5	0
+226	79.5	0
+227	79.5	0
+228	79.5	0
+229	79.5	0
+230	79.5	0
+231	79.5	0
+232	79.5	0
+233	79.5	0
+234	79.5	0
+235	79.5	0
+236	79.5	0
+237	79.5	0
+238	79.5	0
+239	79.5	0
+240	79.5	0
+241	79.5	0
+242	79.5	0
+243	79.5	0
+244	79.5	0
+245	79.5	0
+246	79.5	0
+247	79.5	0
+248	79.5	0
+249	79.5	0
+250	79.5	0
+251	79.5	0
+252	79.5	0
+253	79.5	0
+254	79.5	0
+255	79.5	0
+256	79.5	0
+257	79.5	0
+258	79.5	-0.35836
+259	79.5	-0.6589
+260	79.5	-0.47928
+261	79.5	0
+262	79.5	0
+263	79.5	0
+264	79.5	0
+265	79.5	0
+266	79.5	-0.95623
+267	79.5	-1.2116
+268	79.5	-1.7324
+269	79.5	0
+270	79.5	0
+271	79.5	-0.84779
+272	79.5	-0.50887
+273	79.5	-0.88099
+274	79.5	-1.974
+275	79.5	-3.6112
+276	79.5	-7.1394
+277	79.5	-1.171
+278	79.5	-4.1717
+279	79.5	-0.22397
+280	79.5	0
+281	79.5	0
+282	79.5	0
+283	79.5	-0.17804
+284	79.5	-0.64849
+285	79.5	0
+286	79.5	0
+287	79.5	0
+288	79.5	0
+289	79.5	0
+290	79.5	0
+291	79.5	0
+292	79.5	0
+293	79.5	0
+294	79.5	0
+295	79.5	0
+296	79.5	0
+297	79.5	0
+298	79.5	0
+299	79.5	0
+300	79.5	0
+301	79.5	0
+302	79.5	0
+303	79.5	0
+304	79.5	0
+305	79.5	0
+306	79.5	0
+307	79.5	0
+308	79.5	0
+309	79.5	0
+310	79.5	0
+311	79.5	0
+312	79.5	0
+313	79.5	0
+314	79.5	0
+315	79.5	0
+316	79.5	0
+317	79.5	0
+318	79.5	0
+319	79.5	0
+320	79.5	0
+321	79.5	0
+322	79.5	0
+323	79.5	0
+324	79.5	0
+325	79.5	0
+326	79.5	0
+327	79.5	0
+328	79.5	0
+329	79.5	0
+330	79.5	0
+331	79.5	0
+332	79.5	0
+333	79.5	0
+334	79.5	0
+335	79.5	0
+336	79.5	0
+337	79.5	0
+338	79.5	0
+339	79.5	0
+340	79.5	0
+341	79.5	0
+342	79.5	0
+343	79.5	0
+344	79.5	0
+345	79.5	0
+346	79.5	0
+347	79.5	0
+348	79.5	0
+349	79.5	0
+350	79.5	0
+351	79.5	0
+352	79.5	0
+353	79.5	0
+354	79.5	0
+355	79.5	0
+356	79.5	0
+357	79.5	0
+358	79.5	0
+359	79.5	0
+360	79.5	0
+0	80	0
+1	80	0
+2	80	0
+3	80	0
+4	80	0
+5	80	0
+6	80	0
+7	80	0
+8	80	0
+9	80	0
+10	80	0
+11	80	0
+12	80	0
+13	80	-0.17604
+14	80	-0.2626
+15	80	0
+16	80	0
+17	80	0
+18	80	0
+19	80	0
+20	80	0
+21	80	0
+22	80	0
+23	80	0
+24	80	0
+25	80	0
+26	80	0
+27	80	0
+28	80	0
+29	80	0
+30	80	0
+31	80	0
+32	80	0
+33	80	0
+34	80	0
+35	80	0
+36	80	0
+37	80	0
+38	80	0
+39	80	0
+40	80	0
+41	80	0
+42	80	0
+43	80	0
+44	80	0
+45	80	0
+46	80	0
+47	80	0
+48	80	0
+49	80	0
+50	80	0
+51	80	0
+52	80	0
+53	80	0
+54	80	0
+55	80	0
+56	80	0
+57	80	0
+58	80	0
+59	80	0
+60	80	0
+61	80	0
+62	80	0
+63	80	0
+64	80	0
+65	80	0
+66	80	0
+67	80	0
+68	80	0
+69	80	0
+70	80	0
+71	80	0
+72	80	0
+73	80	0
+74	80	0
+75	80	0
+76	80	0
+77	80	0
+78	80	0
+79	80	0
+80	80	0
+81	80	0
+82	80	0
+83	80	0
+84	80	0
+85	80	0
+86	80	0
+87	80	0
+88	80	0
+89	80	0
+90	80	0
+91	80	0
+92	80	0
+93	80	0
+94	80	-0.0044563
+95	80	0
+96	80	0
+97	80	0
+98	80	-0.0036673
+99	80	0
+100	80	0
+101	80	0
+102	80	0
+103	80	0
+104	80	0
+105	80	0
+106	80	0
+107	80	0
+108	80	0
+109	80	0
+110	80	0
+111	80	0
+112	80	0
+113	80	0
+114	80	0
+115	80	0
+116	80	0
+117	80	0
+118	80	0
+119	80	0
+120	80	0
+121	80	0
+122	80	0
+123	80	0
+124	80	0
+125	80	0
+126	80	0
+127	80	0
+128	80	0
+129	80	0
+130	80	0
+131	80	0
+132	80	0
+133	80	0
+134	80	0
+135	80	0
+136	80	0
+137	80	0
+138	80	0
+139	80	0
+140	80	0
+141	80	0
+142	80	0
+143	80	0
+144	80	0
+145	80	0
+146	80	0
+147	80	0
+148	80	0
+149	80	0
+150	80	0
+151	80	0
+152	80	0
+153	80	0
+154	80	0
+155	80	0
+156	80	0
+157	80	0
+158	80	0
+159	80	0
+160	80	0
+161	80	0
+162	80	0
+163	80	0
+164	80	0
+165	80	0
+166	80	0
+167	80	0
+168	80	0
+169	80	0
+170	80	0
+171	80	0
+172	80	0
+173	80	0
+174	80	0
+175	80	0
+176	80	0
+177	80	0
+178	80	0
+179	80	0
+180	80	0
+181	80	0
+182	80	0
+183	80	0
+184	80	0
+185	80	0
+186	80	0
+187	80	0
+188	80	0
+189	80	0
+190	80	0
+191	80	0
+192	80	0
+193	80	0
+194	80	0
+195	80	0
+196	80	0
+197	80	0
+198	80	0
+199	80	0
+200	80	0
+201	80	0
+202	80	0
+203	80	0
+204	80	0
+205	80	0
+206	80	0
+207	80	0
+208	80	0
+209	80	0
+210	80	0
+211	80	0
+212	80	0
+213	80	0
+214	80	0
+215	80	0
+216	80	0
+217	80	0
+218	80	0
+219	80	0
+220	80	0
+221	80	0
+222	80	0
+223	80	0
+224	80	0
+225	80	0
+226	80	0
+227	80	0
+228	80	0
+229	80	0
+230	80	0
+231	80	0
+232	80	0
+233	80	0
+234	80	0
+235	80	0
+236	80	0
+237	80	0
+238	80	0
+239	80	0
+240	80	0
+241	80	0
+242	80	0
+243	80	0
+244	80	0
+245	80	0
+246	80	0
+247	80	0
+248	80	0
+249	80	0
+250	80	0
+251	80	0
+252	80	0
+253	80	0
+254	80	0
+255	80	0
+256	80	0
+257	80	0
+258	80	-0.14054
+259	80	-0.39188
+260	80	-0.20993
+261	80	0
+262	80	0
+263	80	0
+264	80	0
+265	80	0
+266	80	0
+267	80	-0.41299
+268	80	-0.86976
+269	80	0
+270	80	0
+271	80	-0.95102
+272	80	-3.2217
+273	80	-0.398
+274	80	-2.437
+275	80	-2.6342
+276	80	-3.0899
+277	80	-0.73151
+278	80	-2.2096
+279	80	0
+280	80	0
+281	80	0
+282	80	0
+283	80	0
+284	80	0
+285	80	0
+286	80	0
+287	80	0
+288	80	0
+289	80	0
+290	80	0
+291	80	0
+292	80	0
+293	80	0
+294	80	0
+295	80	0
+296	80	0
+297	80	0
+298	80	0
+299	80	0
+300	80	0
+301	80	0
+302	80	0
+303	80	0
+304	80	0
+305	80	0
+306	80	0
+307	80	0
+308	80	0
+309	80	0
+310	80	0
+311	80	0
+312	80	0
+313	80	0
+314	80	0
+315	80	0
+316	80	0
+317	80	0
+318	80	0
+319	80	0
+320	80	0
+321	80	0
+322	80	0
+323	80	0
+324	80	0
+325	80	0
+326	80	0
+327	80	0
+328	80	0
+329	80	0
+330	80	0
+331	80	0
+332	80	0
+333	80	0
+334	80	0
+335	80	0
+336	80	0
+337	80	0
+338	80	0
+339	80	0
+340	80	0
+341	80	0
+342	80	0
+343	80	0
+344	80	0
+345	80	0
+346	80	0
+347	80	0
+348	80	0
+349	80	0
+350	80	0
+351	80	0
+352	80	0
+353	80	0
+354	80	0
+355	80	0
+356	80	0
+357	80	0
+358	80	0
+359	80	0
+360	80	0
+0	80.5	0
+1	80.5	0
+2	80.5	0
+3	80.5	0
+4	80.5	0
+5	80.5	0
+6	80.5	0
+7	80.5	0
+8	80.5	0
+9	80.5	0
+10	80.5	0
+11	80.5	0
+12	80.5	-0.047175
+13	80.5	-0.19328
+14	80.5	-0.16686
+15	80.5	-0.068445
+16	80.5	0
+17	80.5	0
+18	80.5	0
+19	80.5	0
+20	80.5	0
+21	80.5	0
+22	80.5	0
+23	80.5	0
+24	80.5	0
+25	80.5	0
+26	80.5	0
+27	80.5	0
+28	80.5	0
+29	80.5	0
+30	80.5	0
+31	80.5	0
+32	80.5	0
+33	80.5	0
+34	80.5	0
+35	80.5	0
+36	80.5	0
+37	80.5	0
+38	80.5	0
+39	80.5	0
+40	80.5	0
+41	80.5	0
+42	80.5	0
+43	80.5	0
+44	80.5	0
+45	80.5	0
+46	80.5	0
+47	80.5	0
+48	80.5	0
+49	80.5	0
+50	80.5	0
+51	80.5	0
+52	80.5	0
+53	80.5	0
+54	80.5	0
+55	80.5	0
+56	80.5	0
+57	80.5	0
+58	80.5	0
+59	80.5	0
+60	80.5	0
+61	80.5	0
+62	80.5	0
+63	80.5	0
+64	80.5	0
+65	80.5	0
+66	80.5	0
+67	80.5	0
+68	80.5	0
+69	80.5	0
+70	80.5	0
+71	80.5	0
+72	80.5	0
+73	80.5	0
+74	80.5	0
+75	80.5	0
+76	80.5	0
+77	80.5	0
+78	80.5	0
+79	80.5	0
+80	80.5	0
+81	80.5	0
+82	80.5	0
+83	80.5	0
+84	80.5	0
+85	80.5	0
+86	80.5	0
+87	80.5	0
+88	80.5	0
+89	80.5	0
+90	80.5	0
+91	80.5	0
+92	80.5	0
+93	80.5	0
+94	80.5	0
+95	80.5	0
+96	80.5	0
+97	80.5	-0.016929
+98	80.5	-0.034379
+99	80.5	-0.01186
+100	80.5	0
+101	80.5	0
+102	80.5	0
+103	80.5	0
+104	80.5	0
+105	80.5	0
+106	80.5	0
+107	80.5	0
+108	80.5	0
+109	80.5	0
+110	80.5	0
+111	80.5	0
+112	80.5	0
+113	80.5	0
+114	80.5	0
+115	80.5	0
+116	80.5	0
+117	80.5	0
+118	80.5	0
+119	80.5	0
+120	80.5	0
+121	80.5	0
+122	80.5	0
+123	80.5	0
+124	80.5	0
+125	80.5	0
+126	80.5	0
+127	80.5	0
+128	80.5	0
+129	80.5	0
+130	80.5	0
+131	80.5	0
+132	80.5	0
+133	80.5	0
+134	80.5	0
+135	80.5	0
+136	80.5	0
+137	80.5	0
+138	80.5	0
+139	80.5	0
+140	80.5	0
+141	80.5	0
+142	80.5	0
+143	80.5	0
+144	80.5	0
+145	80.5	0
+146	80.5	0
+147	80.5	0
+148	80.5	0
+149	80.5	0
+150	80.5	0
+151	80.5	0
+152	80.5	0
+153	80.5	0
+154	80.5	0
+155	80.5	0
+156	80.5	0
+157	80.5	0
+158	80.5	0
+159	80.5	0
+160	80.5	0
+161	80.5	0
+162	80.5	0
+163	80.5	0
+164	80.5	0
+165	80.5	0
+166	80.5	0
+167	80.5	0
+168	80.5	0
+169	80.5	0
+170	80.5	0
+171	80.5	0
+172	80.5	0
+173	80.5	0
+174	80.5	0
+175	80.5	0
+176	80.5	0
+177	80.5	0
+178	80.5	0
+179	80.5	0
+180	80.5	0
+181	80.5	0
+182	80.5	0
+183	80.5	0
+184	80.5	0
+185	80.5	0
+186	80.5	0
+187	80.5	0
+188	80.5	0
+189	80.5	0
+190	80.5	0
+191	80.5	0
+192	80.5	0
+193	80.5	0
+194	80.5	0
+195	80.5	0
+196	80.5	0
+197	80.5	0
+198	80.5	0
+199	80.5	0
+200	80.5	0
+201	80.5	0
+202	80.5	0
+203	80.5	0
+204	80.5	0
+205	80.5	0
+206	80.5	0
+207	80.5	0
+208	80.5	0
+209	80.5	0
+210	80.5	0
+211	80.5	0
+212	80.5	0
+213	80.5	0
+214	80.5	0
+215	80.5	0
+216	80.5	0
+217	80.5	0
+218	80.5	0
+219	80.5	0
+220	80.5	0
+221	80.5	0
+222	80.5	0
+223	80.5	0
+224	80.5	0
+225	80.5	0
+226	80.5	0
+227	80.5	0
+228	80.5	0
+229	80.5	0
+230	80.5	0
+231	80.5	0
+232	80.5	0
+233	80.5	0
+234	80.5	0
+235	80.5	0
+236	80.5	0
+237	80.5	0
+238	80.5	0
+239	80.5	0
+240	80.5	0
+241	80.5	0
+242	80.5	0
+243	80.5	0
+244	80.5	0
+245	80.5	0
+246	80.5	0
+247	80.5	0
+248	80.5	0
+249	80.5	0
+250	80.5	0
+251	80.5	0
+252	80.5	0
+253	80.5	0
+254	80.5	0
+255	80.5	0
+256	80.5	0
+257	80.5	0
+258	80.5	0
+259	80.5	-0.12486
+260	80.5	0
+261	80.5	0
+262	80.5	0
+263	80.5	0
+264	80.5	0
+265	80.5	0
+266	80.5	0
+267	80.5	0
+268	80.5	-1.7076
+269	80.5	0
+270	80.5	0
+271	80.5	-0.37957
+272	80.5	-0.61394
+273	80.5	-0.80856
+274	80.5	-2.4304
+275	80.5	-1.083
+276	80.5	-1.2135
+277	80.5	-1.0131
+278	80.5	-1.4536
+279	80.5	-0.59198
+280	80.5	0
+281	80.5	0
+282	80.5	0
+283	80.5	0
+284	80.5	0
+285	80.5	0
+286	80.5	0
+287	80.5	0
+288	80.5	0
+289	80.5	0
+290	80.5	0
+291	80.5	0
+292	80.5	0
+293	80.5	0
+294	80.5	0
+295	80.5	0
+296	80.5	0
+297	80.5	0
+298	80.5	0
+299	80.5	0
+300	80.5	0
+301	80.5	0
+302	80.5	0
+303	80.5	0
+304	80.5	0
+305	80.5	0
+306	80.5	0
+307	80.5	0
+308	80.5	0
+309	80.5	0
+310	80.5	0
+311	80.5	0
+312	80.5	0
+313	80.5	0
+314	80.5	0
+315	80.5	0
+316	80.5	0
+317	80.5	0
+318	80.5	0
+319	80.5	0
+320	80.5	0
+321	80.5	0
+322	80.5	0
+323	80.5	0
+324	80.5	0
+325	80.5	0
+326	80.5	0
+327	80.5	0
+328	80.5	0
+329	80.5	0
+330	80.5	0
+331	80.5	0
+332	80.5	0
+333	80.5	0
+334	80.5	0
+335	80.5	0
+336	80.5	0
+337	80.5	0
+338	80.5	0
+339	80.5	0
+340	80.5	0
+341	80.5	0
+342	80.5	0
+343	80.5	0
+344	80.5	0
+345	80.5	0
+346	80.5	0
+347	80.5	0
+348	80.5	0
+349	80.5	0
+350	80.5	0
+351	80.5	0
+352	80.5	0
+353	80.5	0
+354	80.5	0
+355	80.5	0
+356	80.5	0
+357	80.5	0
+358	80.5	0
+359	80.5	0
+360	80.5	0
+0	81	0
+1	81	0
+2	81	0
+3	81	0
+4	81	0
+5	81	0
+6	81	0
+7	81	0
+8	81	0
+9	81	0
+10	81	0
+11	81	0
+12	81	-0.053686
+13	81	-0.15513
+14	81	-0.071107
+15	81	0
+16	81	0
+17	81	0
+18	81	0
+19	81	0
+20	81	0
+21	81	0
+22	81	0
+23	81	0
+24	81	0
+25	81	0
+26	81	0
+27	81	0
+28	81	0
+29	81	0
+30	81	0
+31	81	0
+32	81	0
+33	81	0
+34	81	0
+35	81	0
+36	81	0
+37	81	0
+38	81	0
+39	81	0
+40	81	0
+41	81	0
+42	81	0
+43	81	0
+44	81	0
+45	81	0
+46	81	0
+47	81	0
+48	81	0
+49	81	0
+50	81	0
+51	81	0
+52	81	0
+53	81	0
+54	81	0
+55	81	0
+56	81	0
+57	81	0
+58	81	0
+59	81	0
+60	81	0
+61	81	0
+62	81	0
+63	81	0
+64	81	0
+65	81	0
+66	81	0
+67	81	0
+68	81	0
+69	81	0
+70	81	0
+71	81	0
+72	81	0
+73	81	0
+74	81	0
+75	81	0
+76	81	0
+77	81	0
+78	81	0
+79	81	0
+80	81	0
+81	81	0
+82	81	0
+83	81	0
+84	81	0
+85	81	0
+86	81	0
+87	81	0
+88	81	0
+89	81	0
+90	81	0
+91	81	0
+92	81	0
+93	81	0
+94	81	0
+95	81	0
+96	81	0
+97	81	0
+98	81	-0.04409
+99	81	-0.02442
+100	81	0
+101	81	0
+102	81	0
+103	81	0
+104	81	0
+105	81	0
+106	81	0
+107	81	0
+108	81	0
+109	81	0
+110	81	0
+111	81	0
+112	81	0
+113	81	0
+114	81	0
+115	81	0
+116	81	0
+117	81	0
+118	81	0
+119	81	0
+120	81	0
+121	81	0
+122	81	0
+123	81	0
+124	81	0
+125	81	0
+126	81	0
+127	81	0
+128	81	0
+129	81	0
+130	81	0
+131	81	0
+132	81	0
+133	81	0
+134	81	0
+135	81	0
+136	81	0
+137	81	0
+138	81	0
+139	81	0
+140	81	0
+141	81	0
+142	81	0
+143	81	0
+144	81	0
+145	81	0
+146	81	0
+147	81	0
+148	81	0
+149	81	0
+150	81	0
+151	81	0
+152	81	0
+153	81	0
+154	81	0
+155	81	0
+156	81	0
+157	81	0
+158	81	0
+159	81	0
+160	81	0
+161	81	0
+162	81	0
+163	81	0
+164	81	0
+165	81	0
+166	81	0
+167	81	0
+168	81	0
+169	81	0
+170	81	0
+171	81	0
+172	81	0
+173	81	0
+174	81	0
+175	81	0
+176	81	0
+177	81	0
+178	81	0
+179	81	0
+180	81	0
+181	81	0
+182	81	0
+183	81	0
+184	81	0
+185	81	0
+186	81	0
+187	81	0
+188	81	0
+189	81	0
+190	81	0
+191	81	0
+192	81	0
+193	81	0
+194	81	0
+195	81	0
+196	81	0
+197	81	0
+198	81	0
+199	81	0
+200	81	0
+201	81	0
+202	81	0
+203	81	0
+204	81	0
+205	81	0
+206	81	0
+207	81	0
+208	81	0
+209	81	0
+210	81	0
+211	81	0
+212	81	0
+213	81	0
+214	81	0
+215	81	0
+216	81	0
+217	81	0
+218	81	0
+219	81	0
+220	81	0
+221	81	0
+222	81	0
+223	81	0
+224	81	0
+225	81	0
+226	81	0
+227	81	0
+228	81	0
+229	81	0
+230	81	0
+231	81	0
+232	81	0
+233	81	0
+234	81	0
+235	81	0
+236	81	0
+237	81	0
+238	81	0
+239	81	0
+240	81	0
+241	81	0
+242	81	0
+243	81	0
+244	81	0
+245	81	0
+246	81	0
+247	81	0
+248	81	0
+249	81	0
+250	81	0
+251	81	0
+252	81	0
+253	81	0
+254	81	0
+255	81	0
+256	81	0
+257	81	0
+258	81	0
+259	81	0
+260	81	0
+261	81	0
+262	81	0
+263	81	0
+264	81	0
+265	81	0
+266	81	0
+267	81	0
+268	81	-0.83347
+269	81	0
+270	81	0
+271	81	-2.5231
+272	81	0
+273	81	-0.43938
+274	81	-2.1737
+275	81	-1.14
+276	81	-0.55591
+277	81	-0.81909
+278	81	-0.43391
+279	81	-1.1478
+280	81	-0.29279
+281	81	-2.1964
+282	81	-1.4602
+283	81	0
+284	81	0
+285	81	0
+286	81	0
+287	81	0
+288	81	-1.8714
+289	81	0
+290	81	-0.9997
+291	81	-2.552
+292	81	-0.79158
+293	81	-2.7805
+294	81	-2.0598
+295	81	-2.394
+296	81	0
+297	81	0
+298	81	0
+299	81	0
+300	81	0
+301	81	0
+302	81	0
+303	81	0
+304	81	0
+305	81	0
+306	81	0
+307	81	0
+308	81	0
+309	81	0
+310	81	0
+311	81	0
+312	81	0
+313	81	0
+314	81	0
+315	81	0
+316	81	0
+317	81	0
+318	81	0
+319	81	0
+320	81	0
+321	81	0
+322	81	0
+323	81	0
+324	81	0
+325	81	0
+326	81	0
+327	81	0
+328	81	0
+329	81	0
+330	81	0
+331	81	0
+332	81	0
+333	81	0
+334	81	0
+335	81	0
+336	81	0
+337	81	0
+338	81	0
+339	81	0
+340	81	0
+341	81	0
+342	81	0
+343	81	0
+344	81	0
+345	81	0
+346	81	0
+347	81	0
+348	81	0
+349	81	0
+350	81	0
+351	81	0
+352	81	0
+353	81	0
+354	81	0
+355	81	0
+356	81	0
+357	81	0
+358	81	0
+359	81	0
+360	81	0
+0	81.5	0
+1	81.5	0
+2	81.5	0
+3	81.5	0
+4	81.5	0
+5	81.5	0
+6	81.5	0
+7	81.5	0
+8	81.5	0
+9	81.5	0
+10	81.5	0
+11	81.5	0
+12	81.5	-0.022902
+13	81.5	-0.059378
+14	81.5	0
+15	81.5	0
+16	81.5	0
+17	81.5	0
+18	81.5	0
+19	81.5	0
+20	81.5	0
+21	81.5	0
+22	81.5	0
+23	81.5	0
+24	81.5	0
+25	81.5	0
+26	81.5	0
+27	81.5	0
+28	81.5	0
+29	81.5	0
+30	81.5	0
+31	81.5	0
+32	81.5	0
+33	81.5	0
+34	81.5	0
+35	81.5	0
+36	81.5	0
+37	81.5	0
+38	81.5	0
+39	81.5	0
+40	81.5	0
+41	81.5	0
+42	81.5	0
+43	81.5	0
+44	81.5	0
+45	81.5	0
+46	81.5	0
+47	81.5	0
+48	81.5	0
+49	81.5	0
+50	81.5	0
+51	81.5	0
+52	81.5	0
+53	81.5	0
+54	81.5	0
+55	81.5	0
+56	81.5	0
+57	81.5	0
+58	81.5	0
+59	81.5	0
+60	81.5	0
+61	81.5	0
+62	81.5	0
+63	81.5	0
+64	81.5	0
+65	81.5	0
+66	81.5	0
+67	81.5	0
+68	81.5	0
+69	81.5	0
+70	81.5	0
+71	81.5	0
+72	81.5	0
+73	81.5	0
+74	81.5	0
+75	81.5	0
+76	81.5	0
+77	81.5	0
+78	81.5	0
+79	81.5	0
+80	81.5	0
+81	81.5	0
+82	81.5	0
+83	81.5	0
+84	81.5	0
+85	81.5	0
+86	81.5	0
+87	81.5	0
+88	81.5	0
+89	81.5	0
+90	81.5	0
+91	81.5	0
+92	81.5	0
+93	81.5	0
+94	81.5	0
+95	81.5	0
+96	81.5	0
+97	81.5	0
+98	81.5	-0.024198
+99	81.5	-0.022425
+100	81.5	-0.0037595
+101	81.5	0
+102	81.5	0
+103	81.5	0
+104	81.5	0
+105	81.5	0
+106	81.5	0
+107	81.5	0
+108	81.5	0
+109	81.5	0
+110	81.5	0
+111	81.5	0
+112	81.5	0
+113	81.5	0
+114	81.5	0
+115	81.5	0
+116	81.5	0
+117	81.5	0
+118	81.5	0
+119	81.5	0
+120	81.5	0
+121	81.5	0
+122	81.5	0
+123	81.5	0
+124	81.5	0
+125	81.5	0
+126	81.5	0
+127	81.5	0
+128	81.5	0
+129	81.5	0
+130	81.5	0
+131	81.5	0
+132	81.5	0
+133	81.5	0
+134	81.5	0
+135	81.5	0
+136	81.5	0
+137	81.5	0
+138	81.5	0
+139	81.5	0
+140	81.5	0
+141	81.5	0
+142	81.5	0
+143	81.5	0
+144	81.5	0
+145	81.5	0
+146	81.5	0
+147	81.5	0
+148	81.5	0
+149	81.5	0
+150	81.5	0
+151	81.5	0
+152	81.5	0
+153	81.5	0
+154	81.5	0
+155	81.5	0
+156	81.5	0
+157	81.5	0
+158	81.5	0
+159	81.5	0
+160	81.5	0
+161	81.5	0
+162	81.5	0
+163	81.5	0
+164	81.5	0
+165	81.5	0
+166	81.5	0
+167	81.5	0
+168	81.5	0
+169	81.5	0
+170	81.5	0
+171	81.5	0
+172	81.5	0
+173	81.5	0
+174	81.5	0
+175	81.5	0
+176	81.5	0
+177	81.5	0
+178	81.5	0
+179	81.5	0
+180	81.5	0
+181	81.5	0
+182	81.5	0
+183	81.5	0
+184	81.5	0
+185	81.5	0
+186	81.5	0
+187	81.5	0
+188	81.5	0
+189	81.5	0
+190	81.5	0
+191	81.5	0
+192	81.5	0
+193	81.5	0
+194	81.5	0
+195	81.5	0
+196	81.5	0
+197	81.5	0
+198	81.5	0
+199	81.5	0
+200	81.5	0
+201	81.5	0
+202	81.5	0
+203	81.5	0
+204	81.5	0
+205	81.5	0
+206	81.5	0
+207	81.5	0
+208	81.5	0
+209	81.5	0
+210	81.5	0
+211	81.5	0
+212	81.5	0
+213	81.5	0
+214	81.5	0
+215	81.5	0
+216	81.5	0
+217	81.5	0
+218	81.5	0
+219	81.5	0
+220	81.5	0
+221	81.5	0
+222	81.5	0
+223	81.5	0
+224	81.5	0
+225	81.5	0
+226	81.5	0
+227	81.5	0
+228	81.5	0
+229	81.5	0
+230	81.5	0
+231	81.5	0
+232	81.5	0
+233	81.5	0
+234	81.5	0
+235	81.5	0
+236	81.5	0
+237	81.5	0
+238	81.5	0
+239	81.5	0
+240	81.5	0
+241	81.5	0
+242	81.5	0
+243	81.5	0
+244	81.5	0
+245	81.5	0
+246	81.5	0
+247	81.5	0
+248	81.5	0
+249	81.5	0
+250	81.5	0
+251	81.5	0
+252	81.5	0
+253	81.5	0
+254	81.5	0
+255	81.5	0
+256	81.5	0
+257	81.5	0
+258	81.5	0
+259	81.5	0
+260	81.5	0
+261	81.5	0
+262	81.5	0
+263	81.5	0
+264	81.5	0
+265	81.5	0
+266	81.5	0
+267	81.5	0
+268	81.5	0
+269	81.5	0
+270	81.5	-1.1999
+271	81.5	-3.1817
+272	81.5	-1.0312
+273	81.5	-0.070193
+274	81.5	-1.8811
+275	81.5	-2.6105
+276	81.5	0
+277	81.5	-0.17703
+278	81.5	0
+279	81.5	0
+280	81.5	-0.32513
+281	81.5	-1.7128
+282	81.5	0
+283	81.5	0
+284	81.5	0
+285	81.5	0
+286	81.5	0
+287	81.5	0
+288	81.5	-2.7775
+289	81.5	-6.2669
+290	81.5	-1.4408
+291	81.5	-5.108
+292	81.5	-0.70035
+293	81.5	-6.9647
+294	81.5	-5.7943
+295	81.5	-4.0075
+296	81.5	-0.48016
+297	81.5	0
+298	81.5	0
+299	81.5	0
+300	81.5	0
+301	81.5	0
+302	81.5	0
+303	81.5	0
+304	81.5	0
+305	81.5	0
+306	81.5	0
+307	81.5	0
+308	81.5	0
+309	81.5	0
+310	81.5	0
+311	81.5	0
+312	81.5	0
+313	81.5	0
+314	81.5	0
+315	81.5	0
+316	81.5	0
+317	81.5	0
+318	81.5	0
+319	81.5	0
+320	81.5	0
+321	81.5	0
+322	81.5	0
+323	81.5	0
+324	81.5	0
+325	81.5	0
+326	81.5	0
+327	81.5	0
+328	81.5	0
+329	81.5	0
+330	81.5	0
+331	81.5	0
+332	81.5	0
+333	81.5	0
+334	81.5	0
+335	81.5	0
+336	81.5	0
+337	81.5	0
+338	81.5	0
+339	81.5	0
+340	81.5	0
+341	81.5	0
+342	81.5	0
+343	81.5	0
+344	81.5	0
+345	81.5	0
+346	81.5	0
+347	81.5	0
+348	81.5	0
+349	81.5	0
+350	81.5	0
+351	81.5	0
+352	81.5	0
+353	81.5	0
+354	81.5	0
+355	81.5	0
+356	81.5	0
+357	81.5	0
+358	81.5	0
+359	81.5	0
+360	81.5	0
+0	82	0
+1	82	0
+2	82	0
+3	82	0
+4	82	0
+5	82	0
+6	82	0
+7	82	0
+8	82	0
+9	82	0
+10	82	0
+11	82	0
+12	82	0
+13	82	0
+14	82	0
+15	82	0
+16	82	0
+17	82	0
+18	82	0
+19	82	0
+20	82	0
+21	82	0
+22	82	0
+23	82	0
+24	82	0
+25	82	0
+26	82	0
+27	82	0
+28	82	0
+29	82	0
+30	82	0
+31	82	0
+32	82	0
+33	82	0
+34	82	0
+35	82	0
+36	82	0
+37	82	0
+38	82	0
+39	82	0
+40	82	0
+41	82	0
+42	82	0
+43	82	0
+44	82	0
+45	82	0
+46	82	0
+47	82	0
+48	82	0
+49	82	0
+50	82	0
+51	82	0
+52	82	0
+53	82	0
+54	82	0
+55	82	0
+56	82	0
+57	82	0
+58	82	0
+59	82	0
+60	82	0
+61	82	0
+62	82	0
+63	82	0
+64	82	0
+65	82	0
+66	82	0
+67	82	0
+68	82	0
+69	82	0
+70	82	0
+71	82	0
+72	82	0
+73	82	0
+74	82	0
+75	82	0
+76	82	0
+77	82	0
+78	82	0
+79	82	0
+80	82	0
+81	82	0
+82	82	0
+83	82	0
+84	82	0
+85	82	0
+86	82	0
+87	82	0
+88	82	0
+89	82	0
+90	82	0
+91	82	0
+92	82	0
+93	82	0
+94	82	0
+95	82	0
+96	82	0
+97	82	0
+98	82	-0.0030633
+99	82	-0.014886
+100	82	-0.00075956
+101	82	0
+102	82	0
+103	82	0
+104	82	0
+105	82	0
+106	82	0
+107	82	0
+108	82	0
+109	82	0
+110	82	0
+111	82	0
+112	82	0
+113	82	0
+114	82	0
+115	82	0
+116	82	0
+117	82	0
+118	82	0
+119	82	0
+120	82	0
+121	82	0
+122	82	0
+123	82	0
+124	82	0
+125	82	0
+126	82	0
+127	82	0
+128	82	0
+129	82	0
+130	82	0
+131	82	0
+132	82	0
+133	82	0
+134	82	0
+135	82	0
+136	82	0
+137	82	0
+138	82	0
+139	82	0
+140	82	0
+141	82	0
+142	82	0
+143	82	0
+144	82	0
+145	82	0
+146	82	0
+147	82	0
+148	82	0
+149	82	0
+150	82	0
+151	82	0
+152	82	0
+153	82	0
+154	82	0
+155	82	0
+156	82	0
+157	82	0
+158	82	0
+159	82	0
+160	82	0
+161	82	0
+162	82	0
+163	82	0
+164	82	0
+165	82	0
+166	82	0
+167	82	0
+168	82	0
+169	82	0
+170	82	0
+171	82	0
+172	82	0
+173	82	0
+174	82	0
+175	82	0
+176	82	0
+177	82	0
+178	82	0
+179	82	0
+180	82	0
+181	82	0
+182	82	0
+183	82	0
+184	82	0
+185	82	0
+186	82	0
+187	82	0
+188	82	0
+189	82	0
+190	82	0
+191	82	0
+192	82	0
+193	82	0
+194	82	0
+195	82	0
+196	82	0
+197	82	0
+198	82	0
+199	82	0
+200	82	0
+201	82	0
+202	82	0
+203	82	0
+204	82	0
+205	82	0
+206	82	0
+207	82	0
+208	82	0
+209	82	0
+210	82	0
+211	82	0
+212	82	0
+213	82	0
+214	82	0
+215	82	0
+216	82	0
+217	82	0
+218	82	0
+219	82	0
+220	82	0
+221	82	0
+222	82	0
+223	82	0
+224	82	0
+225	82	0
+226	82	0
+227	82	0
+228	82	0
+229	82	0
+230	82	0
+231	82	0
+232	82	0
+233	82	0
+234	82	0
+235	82	0
+236	82	0
+237	82	0
+238	82	0
+239	82	0
+240	82	0
+241	82	0
+242	82	0
+243	82	0
+244	82	0
+245	82	0
+246	82	0
+247	82	0
+248	82	0
+249	82	0
+250	82	0
+251	82	0
+252	82	0
+253	82	0
+254	82	0
+255	82	0
+256	82	0
+257	82	0
+258	82	0
+259	82	0
+260	82	0
+261	82	0
+262	82	0
+263	82	0
+264	82	0
+265	82	0
+266	82	0
+267	82	0
+268	82	0
+269	82	0
+270	82	0
+271	82	0
+272	82	0
+273	82	0
+274	82	-1.3278
+275	82	-1.4791
+276	82	0
+277	82	0
+278	82	0
+279	82	0
+280	82	0
+281	82	0
+282	82	0
+283	82	0
+284	82	0
+285	82	0
+286	82	0
+287	82	0
+288	82	-0.37142
+289	82	-4.7257
+290	82	-1.3121
+291	82	-3.5904
+292	82	-0.65893
+293	82	-3.5656
+294	82	-1.4216
+295	82	-5.1965
+296	82	-2.4025
+297	82	0
+298	82	0
+299	82	0
+300	82	0
+301	82	0
+302	82	0
+303	82	0
+304	82	0
+305	82	0
+306	82	0
+307	82	0
+308	82	0
+309	82	0
+310	82	0
+311	82	0
+312	82	0
+313	82	0
+314	82	0
+315	82	0
+316	82	0
+317	82	0
+318	82	0
+319	82	0
+320	82	0
+321	82	0
+322	82	0
+323	82	0
+324	82	0
+325	82	0
+326	82	0
+327	82	0
+328	82	0
+329	82	0
+330	82	0
+331	82	0
+332	82	0
+333	82	0
+334	82	0
+335	82	0
+336	82	0
+337	82	0
+338	82	0
+339	82	0
+340	82	0
+341	82	0
+342	82	0
+343	82	0
+344	82	0
+345	82	0
+346	82	0
+347	82	0
+348	82	0
+349	82	0
+350	82	0
+351	82	0
+352	82	0
+353	82	0
+354	82	0
+355	82	0
+356	82	0
+357	82	0
+358	82	0
+359	82	0
+360	82	0
+0	82.5	0
+1	82.5	0
+2	82.5	0
+3	82.5	0
+4	82.5	0
+5	82.5	0
+6	82.5	0
+7	82.5	0
+8	82.5	0
+9	82.5	0
+10	82.5	0
+11	82.5	0
+12	82.5	0
+13	82.5	0
+14	82.5	0
+15	82.5	0
+16	82.5	0
+17	82.5	0
+18	82.5	0
+19	82.5	0
+20	82.5	0
+21	82.5	0
+22	82.5	0
+23	82.5	0
+24	82.5	0
+25	82.5	0
+26	82.5	0
+27	82.5	0
+28	82.5	0
+29	82.5	0
+30	82.5	0
+31	82.5	0
+32	82.5	0
+33	82.5	0
+34	82.5	0
+35	82.5	0
+36	82.5	0
+37	82.5	0
+38	82.5	0
+39	82.5	0
+40	82.5	0
+41	82.5	0
+42	82.5	0
+43	82.5	0
+44	82.5	0
+45	82.5	0
+46	82.5	0
+47	82.5	0
+48	82.5	0
+49	82.5	0
+50	82.5	0
+51	82.5	0
+52	82.5	0
+53	82.5	0
+54	82.5	0
+55	82.5	0
+56	82.5	0
+57	82.5	0
+58	82.5	0
+59	82.5	0
+60	82.5	0
+61	82.5	0
+62	82.5	0
+63	82.5	0
+64	82.5	0
+65	82.5	0
+66	82.5	0
+67	82.5	0
+68	82.5	0
+69	82.5	0
+70	82.5	0
+71	82.5	0
+72	82.5	0
+73	82.5	0
+74	82.5	0
+75	82.5	0
+76	82.5	0
+77	82.5	0
+78	82.5	0
+79	82.5	0
+80	82.5	0
+81	82.5	0
+82	82.5	0
+83	82.5	0
+84	82.5	0
+85	82.5	0
+86	82.5	0
+87	82.5	0
+88	82.5	0
+89	82.5	0
+90	82.5	0
+91	82.5	0
+92	82.5	0
+93	82.5	0
+94	82.5	0
+95	82.5	0
+96	82.5	0
+97	82.5	0
+98	82.5	0
+99	82.5	-0.0073475
+100	82.5	0
+101	82.5	0
+102	82.5	0
+103	82.5	0
+104	82.5	0
+105	82.5	0
+106	82.5	0
+107	82.5	0
+108	82.5	0
+109	82.5	0
+110	82.5	0
+111	82.5	0
+112	82.5	0
+113	82.5	0
+114	82.5	0
+115	82.5	0
+116	82.5	0
+117	82.5	0
+118	82.5	0
+119	82.5	0
+120	82.5	0
+121	82.5	0
+122	82.5	0
+123	82.5	0
+124	82.5	0
+125	82.5	0
+126	82.5	0
+127	82.5	0
+128	82.5	0
+129	82.5	0
+130	82.5	0
+131	82.5	0
+132	82.5	0
+133	82.5	0
+134	82.5	0
+135	82.5	0
+136	82.5	0
+137	82.5	0
+138	82.5	0
+139	82.5	0
+140	82.5	0
+141	82.5	0
+142	82.5	0
+143	82.5	0
+144	82.5	0
+145	82.5	0
+146	82.5	0
+147	82.5	0
+148	82.5	0
+149	82.5	0
+150	82.5	0
+151	82.5	0
+152	82.5	0
+153	82.5	0
+154	82.5	0
+155	82.5	0
+156	82.5	0
+157	82.5	0
+158	82.5	0
+159	82.5	0
+160	82.5	0
+161	82.5	0
+162	82.5	0
+163	82.5	0
+164	82.5	0
+165	82.5	0
+166	82.5	0
+167	82.5	0
+168	82.5	0
+169	82.5	0
+170	82.5	0
+171	82.5	0
+172	82.5	0
+173	82.5	0
+174	82.5	0
+175	82.5	0
+176	82.5	0
+177	82.5	0
+178	82.5	0
+179	82.5	0
+180	82.5	0
+181	82.5	0
+182	82.5	0
+183	82.5	0
+184	82.5	0
+185	82.5	0
+186	82.5	0
+187	82.5	0
+188	82.5	0
+189	82.5	0
+190	82.5	0
+191	82.5	0
+192	82.5	0
+193	82.5	0
+194	82.5	0
+195	82.5	0
+196	82.5	0
+197	82.5	0
+198	82.5	0
+199	82.5	0
+200	82.5	0
+201	82.5	0
+202	82.5	0
+203	82.5	0
+204	82.5	0
+205	82.5	0
+206	82.5	0
+207	82.5	0
+208	82.5	0
+209	82.5	0
+210	82.5	0
+211	82.5	0
+212	82.5	0
+213	82.5	0
+214	82.5	0
+215	82.5	0
+216	82.5	0
+217	82.5	0
+218	82.5	0
+219	82.5	0
+220	82.5	0
+221	82.5	0
+222	82.5	0
+223	82.5	0
+224	82.5	0
+225	82.5	0
+226	82.5	0
+227	82.5	0
+228	82.5	0
+229	82.5	0
+230	82.5	0
+231	82.5	0
+232	82.5	0
+233	82.5	0
+234	82.5	0
+235	82.5	0
+236	82.5	0
+237	82.5	0
+238	82.5	0
+239	82.5	0
+240	82.5	0
+241	82.5	0
+242	82.5	0
+243	82.5	0
+244	82.5	0
+245	82.5	0
+246	82.5	0
+247	82.5	0
+248	82.5	0
+249	82.5	0
+250	82.5	0
+251	82.5	0
+252	82.5	0
+253	82.5	0
+254	82.5	0
+255	82.5	0
+256	82.5	0
+257	82.5	0
+258	82.5	0
+259	82.5	0
+260	82.5	0
+261	82.5	0
+262	82.5	0
+263	82.5	0
+264	82.5	0
+265	82.5	0
+266	82.5	0
+267	82.5	0
+268	82.5	0
+269	82.5	0
+270	82.5	0
+271	82.5	0
+272	82.5	0
+273	82.5	0
+274	82.5	-0.45058
+275	82.5	-0.34768
+276	82.5	0
+277	82.5	0
+278	82.5	0
+279	82.5	0
+280	82.5	0
+281	82.5	0
+282	82.5	0
+283	82.5	0
+284	82.5	0
+285	82.5	0
+286	82.5	0
+287	82.5	0
+288	82.5	0
+289	82.5	-1.9921
+290	82.5	0
+291	82.5	0
+292	82.5	0
+293	82.5	-0.2447
+294	82.5	0
+295	82.5	-4.5768
+296	82.5	-2.9889
+297	82.5	0
+298	82.5	0
+299	82.5	0
+300	82.5	0
+301	82.5	0
+302	82.5	0
+303	82.5	0
+304	82.5	0
+305	82.5	0
+306	82.5	0
+307	82.5	0
+308	82.5	0
+309	82.5	0
+310	82.5	0
+311	82.5	0
+312	82.5	0
+313	82.5	0
+314	82.5	0
+315	82.5	0
+316	82.5	0
+317	82.5	0
+318	82.5	0
+319	82.5	0
+320	82.5	0
+321	82.5	0
+322	82.5	0
+323	82.5	0
+324	82.5	0
+325	82.5	0
+326	82.5	0
+327	82.5	0
+328	82.5	0
+329	82.5	0
+330	82.5	0
+331	82.5	0
+332	82.5	0
+333	82.5	0
+334	82.5	0
+335	82.5	0
+336	82.5	0
+337	82.5	0
+338	82.5	0
+339	82.5	0
+340	82.5	0
+341	82.5	0
+342	82.5	0
+343	82.5	0
+344	82.5	0
+345	82.5	0
+346	82.5	0
+347	82.5	0
+348	82.5	0
+349	82.5	0
+350	82.5	0
+351	82.5	0
+352	82.5	0
+353	82.5	0
+354	82.5	0
+355	82.5	0
+356	82.5	0
+357	82.5	0
+358	82.5	0
+359	82.5	0
+360	82.5	0
+0	83	0
+1	83	0
+2	83	0
+3	83	0
+4	83	0
+5	83	0
+6	83	0
+7	83	0
+8	83	0
+9	83	0
+10	83	0
+11	83	0
+12	83	0
+13	83	0
+14	83	0
+15	83	0
+16	83	0
+17	83	0
+18	83	0
+19	83	0
+20	83	0
+21	83	0
+22	83	0
+23	83	0
+24	83	0
+25	83	0
+26	83	0
+27	83	0
+28	83	0
+29	83	0
+30	83	0
+31	83	0
+32	83	0
+33	83	0
+34	83	0
+35	83	0
+36	83	0
+37	83	0
+38	83	0
+39	83	0
+40	83	0
+41	83	0
+42	83	0
+43	83	0
+44	83	0
+45	83	0
+46	83	0
+47	83	0
+48	83	0
+49	83	0
+50	83	0
+51	83	0
+52	83	0
+53	83	0
+54	83	0
+55	83	0
+56	83	0
+57	83	0
+58	83	0
+59	83	0
+60	83	0
+61	83	0
+62	83	0
+63	83	0
+64	83	0
+65	83	0
+66	83	0
+67	83	0
+68	83	0
+69	83	0
+70	83	0
+71	83	0
+72	83	0
+73	83	0
+74	83	0
+75	83	0
+76	83	0
+77	83	0
+78	83	0
+79	83	0
+80	83	0
+81	83	0
+82	83	0
+83	83	0
+84	83	0
+85	83	0
+86	83	0
+87	83	0
+88	83	0
+89	83	0
+90	83	0
+91	83	0
+92	83	0
+93	83	0
+94	83	0
+95	83	0
+96	83	0
+97	83	0
+98	83	0
+99	83	0
+100	83	0
+101	83	0
+102	83	0
+103	83	0
+104	83	0
+105	83	0
+106	83	0
+107	83	0
+108	83	0
+109	83	0
+110	83	0
+111	83	0
+112	83	0
+113	83	0
+114	83	0
+115	83	0
+116	83	0
+117	83	0
+118	83	0
+119	83	0
+120	83	0
+121	83	0
+122	83	0
+123	83	0
+124	83	0
+125	83	0
+126	83	0
+127	83	0
+128	83	0
+129	83	0
+130	83	0
+131	83	0
+132	83	0
+133	83	0
+134	83	0
+135	83	0
+136	83	0
+137	83	0
+138	83	0
+139	83	0
+140	83	0
+141	83	0
+142	83	0
+143	83	0
+144	83	0
+145	83	0
+146	83	0
+147	83	0
+148	83	0
+149	83	0
+150	83	0
+151	83	0
+152	83	0
+153	83	0
+154	83	0
+155	83	0
+156	83	0
+157	83	0
+158	83	0
+159	83	0
+160	83	0
+161	83	0
+162	83	0
+163	83	0
+164	83	0
+165	83	0
+166	83	0
+167	83	0
+168	83	0
+169	83	0
+170	83	0
+171	83	0
+172	83	0
+173	83	0
+174	83	0
+175	83	0
+176	83	0
+177	83	0
+178	83	0
+179	83	0
+180	83	0
+181	83	0
+182	83	0
+183	83	0
+184	83	0
+185	83	0
+186	83	0
+187	83	0
+188	83	0
+189	83	0
+190	83	0
+191	83	0
+192	83	0
+193	83	0
+194	83	0
+195	83	0
+196	83	0
+197	83	0
+198	83	0
+199	83	0
+200	83	0
+201	83	0
+202	83	0
+203	83	0
+204	83	0
+205	83	0
+206	83	0
+207	83	0
+208	83	0
+209	83	0
+210	83	0
+211	83	0
+212	83	0
+213	83	0
+214	83	0
+215	83	0
+216	83	0
+217	83	0
+218	83	0
+219	83	0
+220	83	0
+221	83	0
+222	83	0
+223	83	0
+224	83	0
+225	83	0
+226	83	0
+227	83	0
+228	83	0
+229	83	0
+230	83	0
+231	83	0
+232	83	0
+233	83	0
+234	83	0
+235	83	0
+236	83	0
+237	83	0
+238	83	0
+239	83	0
+240	83	0
+241	83	0
+242	83	0
+243	83	0
+244	83	0
+245	83	0
+246	83	0
+247	83	0
+248	83	0
+249	83	0
+250	83	0
+251	83	0
+252	83	0
+253	83	0
+254	83	0
+255	83	0
+256	83	0
+257	83	0
+258	83	0
+259	83	0
+260	83	0
+261	83	0
+262	83	0
+263	83	0
+264	83	0
+265	83	0
+266	83	0
+267	83	0
+268	83	0
+269	83	0
+270	83	0
+271	83	0
+272	83	0
+273	83	0
+274	83	0
+275	83	0
+276	83	0
+277	83	0
+278	83	0
+279	83	0
+280	83	0
+281	83	0
+282	83	0
+283	83	0
+284	83	0
+285	83	0
+286	83	0
+287	83	0
+288	83	0
+289	83	0
+290	83	0
+291	83	0
+292	83	0
+293	83	0
+294	83	0
+295	83	-1.9971
+296	83	-1.8707
+297	83	-0.34609
+298	83	0
+299	83	0
+300	83	0
+301	83	0
+302	83	0
+303	83	0
+304	83	0
+305	83	0
+306	83	0
+307	83	0
+308	83	0
+309	83	0
+310	83	0
+311	83	0
+312	83	0
+313	83	0
+314	83	0
+315	83	0
+316	83	0
+317	83	0
+318	83	0
+319	83	0
+320	83	0
+321	83	0
+322	83	0
+323	83	0
+324	83	0
+325	83	0
+326	83	0
+327	83	0
+328	83	0
+329	83	0
+330	83	0
+331	83	0
+332	83	0
+333	83	0
+334	83	0
+335	83	0
+336	83	0
+337	83	0
+338	83	0
+339	83	0
+340	83	0
+341	83	0
+342	83	0
+343	83	0
+344	83	0
+345	83	0
+346	83	0
+347	83	0
+348	83	0
+349	83	0
+350	83	0
+351	83	0
+352	83	0
+353	83	0
+354	83	0
+355	83	0
+356	83	0
+357	83	0
+358	83	0
+359	83	0
+360	83	0
+0	83.5	0
+1	83.5	0
+2	83.5	0
+3	83.5	0
+4	83.5	0
+5	83.5	0
+6	83.5	0
+7	83.5	0
+8	83.5	0
+9	83.5	0
+10	83.5	0
+11	83.5	0
+12	83.5	0
+13	83.5	0
+14	83.5	0
+15	83.5	0
+16	83.5	0
+17	83.5	0
+18	83.5	0
+19	83.5	0
+20	83.5	0
+21	83.5	0
+22	83.5	0
+23	83.5	0
+24	83.5	0
+25	83.5	0
+26	83.5	0
+27	83.5	0
+28	83.5	0
+29	83.5	0
+30	83.5	0
+31	83.5	0
+32	83.5	0
+33	83.5	0
+34	83.5	0
+35	83.5	0
+36	83.5	0
+37	83.5	0
+38	83.5	0
+39	83.5	0
+40	83.5	0
+41	83.5	0
+42	83.5	0
+43	83.5	0
+44	83.5	0
+45	83.5	0
+46	83.5	0
+47	83.5	0
+48	83.5	0
+49	83.5	0
+50	83.5	0
+51	83.5	0
+52	83.5	0
+53	83.5	0
+54	83.5	0
+55	83.5	0
+56	83.5	0
+57	83.5	0
+58	83.5	0
+59	83.5	0
+60	83.5	0
+61	83.5	0
+62	83.5	0
+63	83.5	0
+64	83.5	0
+65	83.5	0
+66	83.5	0
+67	83.5	0
+68	83.5	0
+69	83.5	0
+70	83.5	0
+71	83.5	0
+72	83.5	0
+73	83.5	0
+74	83.5	0
+75	83.5	0
+76	83.5	0
+77	83.5	0
+78	83.5	0
+79	83.5	0
+80	83.5	0
+81	83.5	0
+82	83.5	0
+83	83.5	0
+84	83.5	0
+85	83.5	0
+86	83.5	0
+87	83.5	0
+88	83.5	0
+89	83.5	0
+90	83.5	0
+91	83.5	0
+92	83.5	0
+93	83.5	0
+94	83.5	0
+95	83.5	0
+96	83.5	0
+97	83.5	0
+98	83.5	0
+99	83.5	0
+100	83.5	0
+101	83.5	0
+102	83.5	0
+103	83.5	0
+104	83.5	0
+105	83.5	0
+106	83.5	0
+107	83.5	0
+108	83.5	0
+109	83.5	0
+110	83.5	0
+111	83.5	0
+112	83.5	0
+113	83.5	0
+114	83.5	0
+115	83.5	0
+116	83.5	0
+117	83.5	0
+118	83.5	0
+119	83.5	0
+120	83.5	0
+121	83.5	0
+122	83.5	0
+123	83.5	0
+124	83.5	0
+125	83.5	0
+126	83.5	0
+127	83.5	0
+128	83.5	0
+129	83.5	0
+130	83.5	0
+131	83.5	0
+132	83.5	0
+133	83.5	0
+134	83.5	0
+135	83.5	0
+136	83.5	0
+137	83.5	0
+138	83.5	0
+139	83.5	0
+140	83.5	0
+141	83.5	0
+142	83.5	0
+143	83.5	0
+144	83.5	0
+145	83.5	0
+146	83.5	0
+147	83.5	0
+148	83.5	0
+149	83.5	0
+150	83.5	0
+151	83.5	0
+152	83.5	0
+153	83.5	0
+154	83.5	0
+155	83.5	0
+156	83.5	0
+157	83.5	0
+158	83.5	0
+159	83.5	0
+160	83.5	0
+161	83.5	0
+162	83.5	0
+163	83.5	0
+164	83.5	0
+165	83.5	0
+166	83.5	0
+167	83.5	0
+168	83.5	0
+169	83.5	0
+170	83.5	0
+171	83.5	0
+172	83.5	0
+173	83.5	0
+174	83.5	0
+175	83.5	0
+176	83.5	0
+177	83.5	0
+178	83.5	0
+179	83.5	0
+180	83.5	0
+181	83.5	0
+182	83.5	0
+183	83.5	0
+184	83.5	0
+185	83.5	0
+186	83.5	0
+187	83.5	0
+188	83.5	0
+189	83.5	0
+190	83.5	0
+191	83.5	0
+192	83.5	0
+193	83.5	0
+194	83.5	0
+195	83.5	0
+196	83.5	0
+197	83.5	0
+198	83.5	0
+199	83.5	0
+200	83.5	0
+201	83.5	0
+202	83.5	0
+203	83.5	0
+204	83.5	0
+205	83.5	0
+206	83.5	0
+207	83.5	0
+208	83.5	0
+209	83.5	0
+210	83.5	0
+211	83.5	0
+212	83.5	0
+213	83.5	0
+214	83.5	0
+215	83.5	0
+216	83.5	0
+217	83.5	0
+218	83.5	0
+219	83.5	0
+220	83.5	0
+221	83.5	0
+222	83.5	0
+223	83.5	0
+224	83.5	0
+225	83.5	0
+226	83.5	0
+227	83.5	0
+228	83.5	0
+229	83.5	0
+230	83.5	0
+231	83.5	0
+232	83.5	0
+233	83.5	0
+234	83.5	0
+235	83.5	0
+236	83.5	0
+237	83.5	0
+238	83.5	0
+239	83.5	0
+240	83.5	0
+241	83.5	0
+242	83.5	0
+243	83.5	0
+244	83.5	0
+245	83.5	0
+246	83.5	0
+247	83.5	0
+248	83.5	0
+249	83.5	0
+250	83.5	0
+251	83.5	0
+252	83.5	0
+253	83.5	0
+254	83.5	0
+255	83.5	0
+256	83.5	0
+257	83.5	0
+258	83.5	0
+259	83.5	0
+260	83.5	0
+261	83.5	0
+262	83.5	0
+263	83.5	0
+264	83.5	0
+265	83.5	0
+266	83.5	0
+267	83.5	0
+268	83.5	0
+269	83.5	0
+270	83.5	0
+271	83.5	0
+272	83.5	0
+273	83.5	0
+274	83.5	0
+275	83.5	0
+276	83.5	0
+277	83.5	0
+278	83.5	0
+279	83.5	0
+280	83.5	0
+281	83.5	0
+282	83.5	0
+283	83.5	0
+284	83.5	0
+285	83.5	0
+286	83.5	0
+287	83.5	0
+288	83.5	0
+289	83.5	0
+290	83.5	0
+291	83.5	0
+292	83.5	0
+293	83.5	0
+294	83.5	0
+295	83.5	0
+296	83.5	0
+297	83.5	0
+298	83.5	0
+299	83.5	0
+300	83.5	0
+301	83.5	0
+302	83.5	0
+303	83.5	0
+304	83.5	0
+305	83.5	0
+306	83.5	0
+307	83.5	0
+308	83.5	0
+309	83.5	0
+310	83.5	0
+311	83.5	0
+312	83.5	0
+313	83.5	0
+314	83.5	0
+315	83.5	0
+316	83.5	0
+317	83.5	0
+318	83.5	0
+319	83.5	0
+320	83.5	0
+321	83.5	0
+322	83.5	0
+323	83.5	0
+324	83.5	0
+325	83.5	0
+326	83.5	0
+327	83.5	0
+328	83.5	0
+329	83.5	0
+330	83.5	0
+331	83.5	0
+332	83.5	0
+333	83.5	0
+334	83.5	0
+335	83.5	0
+336	83.5	0
+337	83.5	0
+338	83.5	0
+339	83.5	0
+340	83.5	0
+341	83.5	0
+342	83.5	0
+343	83.5	0
+344	83.5	0
+345	83.5	0
+346	83.5	0
+347	83.5	0
+348	83.5	0
+349	83.5	0
+350	83.5	0
+351	83.5	0
+352	83.5	0
+353	83.5	0
+354	83.5	0
+355	83.5	0
+356	83.5	0
+357	83.5	0
+358	83.5	0
+359	83.5	0
+360	83.5	0
+0	84	0
+1	84	0
+2	84	0
+3	84	0
+4	84	0
+5	84	0
+6	84	0
+7	84	0
+8	84	0
+9	84	0
+10	84	0
+11	84	0
+12	84	0
+13	84	0
+14	84	0
+15	84	0
+16	84	0
+17	84	0
+18	84	0
+19	84	0
+20	84	0
+21	84	0
+22	84	0
+23	84	0
+24	84	0
+25	84	0
+26	84	0
+27	84	0
+28	84	0
+29	84	0
+30	84	0
+31	84	0
+32	84	0
+33	84	0
+34	84	0
+35	84	0
+36	84	0
+37	84	0
+38	84	0
+39	84	0
+40	84	0
+41	84	0
+42	84	0
+43	84	0
+44	84	0
+45	84	0
+46	84	0
+47	84	0
+48	84	0
+49	84	0
+50	84	0
+51	84	0
+52	84	0
+53	84	0
+54	84	0
+55	84	0
+56	84	0
+57	84	0
+58	84	0
+59	84	0
+60	84	0
+61	84	0
+62	84	0
+63	84	0
+64	84	0
+65	84	0
+66	84	0
+67	84	0
+68	84	0
+69	84	0
+70	84	0
+71	84	0
+72	84	0
+73	84	0
+74	84	0
+75	84	0
+76	84	0
+77	84	0
+78	84	0
+79	84	0
+80	84	0
+81	84	0
+82	84	0
+83	84	0
+84	84	0
+85	84	0
+86	84	0
+87	84	0
+88	84	0
+89	84	0
+90	84	0
+91	84	0
+92	84	0
+93	84	0
+94	84	0
+95	84	0
+96	84	0
+97	84	0
+98	84	0
+99	84	0
+100	84	0
+101	84	0
+102	84	0
+103	84	0
+104	84	0
+105	84	0
+106	84	0
+107	84	0
+108	84	0
+109	84	0
+110	84	0
+111	84	0
+112	84	0
+113	84	0
+114	84	0
+115	84	0
+116	84	0
+117	84	0
+118	84	0
+119	84	0
+120	84	0
+121	84	0
+122	84	0
+123	84	0
+124	84	0
+125	84	0
+126	84	0
+127	84	0
+128	84	0
+129	84	0
+130	84	0
+131	84	0
+132	84	0
+133	84	0
+134	84	0
+135	84	0
+136	84	0
+137	84	0
+138	84	0
+139	84	0
+140	84	0
+141	84	0
+142	84	0
+143	84	0
+144	84	0
+145	84	0
+146	84	0
+147	84	0
+148	84	0
+149	84	0
+150	84	0
+151	84	0
+152	84	0
+153	84	0
+154	84	0
+155	84	0
+156	84	0
+157	84	0
+158	84	0
+159	84	0
+160	84	0
+161	84	0
+162	84	0
+163	84	0
+164	84	0
+165	84	0
+166	84	0
+167	84	0
+168	84	0
+169	84	0
+170	84	0
+171	84	0
+172	84	0
+173	84	0
+174	84	0
+175	84	0
+176	84	0
+177	84	0
+178	84	0
+179	84	0
+180	84	0
+181	84	0
+182	84	0
+183	84	0
+184	84	0
+185	84	0
+186	84	0
+187	84	0
+188	84	0
+189	84	0
+190	84	0
+191	84	0
+192	84	0
+193	84	0
+194	84	0
+195	84	0
+196	84	0
+197	84	0
+198	84	0
+199	84	0
+200	84	0
+201	84	0
+202	84	0
+203	84	0
+204	84	0
+205	84	0
+206	84	0
+207	84	0
+208	84	0
+209	84	0
+210	84	0
+211	84	0
+212	84	0
+213	84	0
+214	84	0
+215	84	0
+216	84	0
+217	84	0
+218	84	0
+219	84	0
+220	84	0
+221	84	0
+222	84	0
+223	84	0
+224	84	0
+225	84	0
+226	84	0
+227	84	0
+228	84	0
+229	84	0
+230	84	0
+231	84	0
+232	84	0
+233	84	0
+234	84	0
+235	84	0
+236	84	0
+237	84	0
+238	84	0
+239	84	0
+240	84	0
+241	84	0
+242	84	0
+243	84	0
+244	84	0
+245	84	0
+246	84	0
+247	84	0
+248	84	0
+249	84	0
+250	84	0
+251	84	0
+252	84	0
+253	84	0
+254	84	0
+255	84	0
+256	84	0
+257	84	0
+258	84	0
+259	84	0
+260	84	0
+261	84	0
+262	84	0
+263	84	0
+264	84	0
+265	84	0
+266	84	0
+267	84	0
+268	84	0
+269	84	0
+270	84	0
+271	84	0
+272	84	0
+273	84	0
+274	84	0
+275	84	0
+276	84	0
+277	84	0
+278	84	0
+279	84	0
+280	84	0
+281	84	0
+282	84	0
+283	84	0
+284	84	0
+285	84	0
+286	84	0
+287	84	0
+288	84	0
+289	84	0
+290	84	0
+291	84	0
+292	84	0
+293	84	0
+294	84	0
+295	84	0
+296	84	0
+297	84	0
+298	84	0
+299	84	0
+300	84	0
+301	84	0
+302	84	0
+303	84	0
+304	84	0
+305	84	0
+306	84	0
+307	84	0
+308	84	0
+309	84	0
+310	84	0
+311	84	0
+312	84	0
+313	84	0
+314	84	0
+315	84	0
+316	84	0
+317	84	0
+318	84	0
+319	84	0
+320	84	0
+321	84	0
+322	84	0
+323	84	0
+324	84	0
+325	84	0
+326	84	0
+327	84	0
+328	84	0
+329	84	0
+330	84	0
+331	84	0
+332	84	0
+333	84	0
+334	84	0
+335	84	0
+336	84	0
+337	84	0
+338	84	0
+339	84	0
+340	84	0
+341	84	0
+342	84	0
+343	84	0
+344	84	0
+345	84	0
+346	84	0
+347	84	0
+348	84	0
+349	84	0
+350	84	0
+351	84	0
+352	84	0
+353	84	0
+354	84	0
+355	84	0
+356	84	0
+357	84	0
+358	84	0
+359	84	0
+360	84	0
+0	84.5	0
+1	84.5	0
+2	84.5	0
+3	84.5	0
+4	84.5	0
+5	84.5	0
+6	84.5	0
+7	84.5	0
+8	84.5	0
+9	84.5	0
+10	84.5	0
+11	84.5	0
+12	84.5	0
+13	84.5	0
+14	84.5	0
+15	84.5	0
+16	84.5	0
+17	84.5	0
+18	84.5	0
+19	84.5	0
+20	84.5	0
+21	84.5	0
+22	84.5	0
+23	84.5	0
+24	84.5	0
+25	84.5	0
+26	84.5	0
+27	84.5	0
+28	84.5	0
+29	84.5	0
+30	84.5	0
+31	84.5	0
+32	84.5	0
+33	84.5	0
+34	84.5	0
+35	84.5	0
+36	84.5	0
+37	84.5	0
+38	84.5	0
+39	84.5	0
+40	84.5	0
+41	84.5	0
+42	84.5	0
+43	84.5	0
+44	84.5	0
+45	84.5	0
+46	84.5	0
+47	84.5	0
+48	84.5	0
+49	84.5	0
+50	84.5	0
+51	84.5	0
+52	84.5	0
+53	84.5	0
+54	84.5	0
+55	84.5	0
+56	84.5	0
+57	84.5	0
+58	84.5	0
+59	84.5	0
+60	84.5	0
+61	84.5	0
+62	84.5	0
+63	84.5	0
+64	84.5	0
+65	84.5	0
+66	84.5	0
+67	84.5	0
+68	84.5	0
+69	84.5	0
+70	84.5	0
+71	84.5	0
+72	84.5	0
+73	84.5	0
+74	84.5	0
+75	84.5	0
+76	84.5	0
+77	84.5	0
+78	84.5	0
+79	84.5	0
+80	84.5	0
+81	84.5	0
+82	84.5	0
+83	84.5	0
+84	84.5	0
+85	84.5	0
+86	84.5	0
+87	84.5	0
+88	84.5	0
+89	84.5	0
+90	84.5	0
+91	84.5	0
+92	84.5	0
+93	84.5	0
+94	84.5	0
+95	84.5	0
+96	84.5	0
+97	84.5	0
+98	84.5	0
+99	84.5	0
+100	84.5	0
+101	84.5	0
+102	84.5	0
+103	84.5	0
+104	84.5	0
+105	84.5	0
+106	84.5	0
+107	84.5	0
+108	84.5	0
+109	84.5	0
+110	84.5	0
+111	84.5	0
+112	84.5	0
+113	84.5	0
+114	84.5	0
+115	84.5	0
+116	84.5	0
+117	84.5	0
+118	84.5	0
+119	84.5	0
+120	84.5	0
+121	84.5	0
+122	84.5	0
+123	84.5	0
+124	84.5	0
+125	84.5	0
+126	84.5	0
+127	84.5	0
+128	84.5	0
+129	84.5	0
+130	84.5	0
+131	84.5	0
+132	84.5	0
+133	84.5	0
+134	84.5	0
+135	84.5	0
+136	84.5	0
+137	84.5	0
+138	84.5	0
+139	84.5	0
+140	84.5	0
+141	84.5	0
+142	84.5	0
+143	84.5	0
+144	84.5	0
+145	84.5	0
+146	84.5	0
+147	84.5	0
+148	84.5	0
+149	84.5	0
+150	84.5	0
+151	84.5	0
+152	84.5	0
+153	84.5	0
+154	84.5	0
+155	84.5	0
+156	84.5	0
+157	84.5	0
+158	84.5	0
+159	84.5	0
+160	84.5	0
+161	84.5	0
+162	84.5	0
+163	84.5	0
+164	84.5	0
+165	84.5	0
+166	84.5	0
+167	84.5	0
+168	84.5	0
+169	84.5	0
+170	84.5	0
+171	84.5	0
+172	84.5	0
+173	84.5	0
+174	84.5	0
+175	84.5	0
+176	84.5	0
+177	84.5	0
+178	84.5	0
+179	84.5	0
+180	84.5	0
+181	84.5	0
+182	84.5	0
+183	84.5	0
+184	84.5	0
+185	84.5	0
+186	84.5	0
+187	84.5	0
+188	84.5	0
+189	84.5	0
+190	84.5	0
+191	84.5	0
+192	84.5	0
+193	84.5	0
+194	84.5	0
+195	84.5	0
+196	84.5	0
+197	84.5	0
+198	84.5	0
+199	84.5	0
+200	84.5	0
+201	84.5	0
+202	84.5	0
+203	84.5	0
+204	84.5	0
+205	84.5	0
+206	84.5	0
+207	84.5	0
+208	84.5	0
+209	84.5	0
+210	84.5	0
+211	84.5	0
+212	84.5	0
+213	84.5	0
+214	84.5	0
+215	84.5	0
+216	84.5	0
+217	84.5	0
+218	84.5	0
+219	84.5	0
+220	84.5	0
+221	84.5	0
+222	84.5	0
+223	84.5	0
+224	84.5	0
+225	84.5	0
+226	84.5	0
+227	84.5	0
+228	84.5	0
+229	84.5	0
+230	84.5	0
+231	84.5	0
+232	84.5	0
+233	84.5	0
+234	84.5	0
+235	84.5	0
+236	84.5	0
+237	84.5	0
+238	84.5	0
+239	84.5	0
+240	84.5	0
+241	84.5	0
+242	84.5	0
+243	84.5	0
+244	84.5	0
+245	84.5	0
+246	84.5	0
+247	84.5	0
+248	84.5	0
+249	84.5	0
+250	84.5	0
+251	84.5	0
+252	84.5	0
+253	84.5	0
+254	84.5	0
+255	84.5	0
+256	84.5	0
+257	84.5	0
+258	84.5	0
+259	84.5	0
+260	84.5	0
+261	84.5	0
+262	84.5	0
+263	84.5	0
+264	84.5	0
+265	84.5	0
+266	84.5	0
+267	84.5	0
+268	84.5	0
+269	84.5	0
+270	84.5	0
+271	84.5	0
+272	84.5	0
+273	84.5	0
+274	84.5	0
+275	84.5	0
+276	84.5	0
+277	84.5	0
+278	84.5	0
+279	84.5	0
+280	84.5	0
+281	84.5	0
+282	84.5	0
+283	84.5	0
+284	84.5	0
+285	84.5	0
+286	84.5	0
+287	84.5	0
+288	84.5	0
+289	84.5	0
+290	84.5	0
+291	84.5	0
+292	84.5	0
+293	84.5	0
+294	84.5	0
+295	84.5	0
+296	84.5	0
+297	84.5	0
+298	84.5	0
+299	84.5	0
+300	84.5	0
+301	84.5	0
+302	84.5	0
+303	84.5	0
+304	84.5	0
+305	84.5	0
+306	84.5	0
+307	84.5	0
+308	84.5	0
+309	84.5	0
+310	84.5	0
+311	84.5	0
+312	84.5	0
+313	84.5	0
+314	84.5	0
+315	84.5	0
+316	84.5	0
+317	84.5	0
+318	84.5	0
+319	84.5	0
+320	84.5	0
+321	84.5	0
+322	84.5	0
+323	84.5	0
+324	84.5	0
+325	84.5	0
+326	84.5	0
+327	84.5	0
+328	84.5	0
+329	84.5	0
+330	84.5	0
+331	84.5	0
+332	84.5	0
+333	84.5	0
+334	84.5	0
+335	84.5	0
+336	84.5	0
+337	84.5	0
+338	84.5	0
+339	84.5	0
+340	84.5	0
+341	84.5	0
+342	84.5	0
+343	84.5	0
+344	84.5	0
+345	84.5	0
+346	84.5	0
+347	84.5	0
+348	84.5	0
+349	84.5	0
+350	84.5	0
+351	84.5	0
+352	84.5	0
+353	84.5	0
+354	84.5	0
+355	84.5	0
+356	84.5	0
+357	84.5	0
+358	84.5	0
+359	84.5	0
+360	84.5	0
+0	85	0
+1	85	0
+2	85	0
+3	85	0
+4	85	0
+5	85	0
+6	85	0
+7	85	0
+8	85	0
+9	85	0
+10	85	0
+11	85	0
+12	85	0
+13	85	0
+14	85	0
+15	85	0
+16	85	0
+17	85	0
+18	85	0
+19	85	0
+20	85	0
+21	85	0
+22	85	0
+23	85	0
+24	85	0
+25	85	0
+26	85	0
+27	85	0
+28	85	0
+29	85	0
+30	85	0
+31	85	0
+32	85	0
+33	85	0
+34	85	0
+35	85	0
+36	85	0
+37	85	0
+38	85	0
+39	85	0
+40	85	0
+41	85	0
+42	85	0
+43	85	0
+44	85	0
+45	85	0
+46	85	0
+47	85	0
+48	85	0
+49	85	0
+50	85	0
+51	85	0
+52	85	0
+53	85	0
+54	85	0
+55	85	0
+56	85	0
+57	85	0
+58	85	0
+59	85	0
+60	85	0
+61	85	0
+62	85	0
+63	85	0
+64	85	0
+65	85	0
+66	85	0
+67	85	0
+68	85	0
+69	85	0
+70	85	0
+71	85	0
+72	85	0
+73	85	0
+74	85	0
+75	85	0
+76	85	0
+77	85	0
+78	85	0
+79	85	0
+80	85	0
+81	85	0
+82	85	0
+83	85	0
+84	85	0
+85	85	0
+86	85	0
+87	85	0
+88	85	0
+89	85	0
+90	85	0
+91	85	0
+92	85	0
+93	85	0
+94	85	0
+95	85	0
+96	85	0
+97	85	0
+98	85	0
+99	85	0
+100	85	0
+101	85	0
+102	85	0
+103	85	0
+104	85	0
+105	85	0
+106	85	0
+107	85	0
+108	85	0
+109	85	0
+110	85	0
+111	85	0
+112	85	0
+113	85	0
+114	85	0
+115	85	0
+116	85	0
+117	85	0
+118	85	0
+119	85	0
+120	85	0
+121	85	0
+122	85	0
+123	85	0
+124	85	0
+125	85	0
+126	85	0
+127	85	0
+128	85	0
+129	85	0
+130	85	0
+131	85	0
+132	85	0
+133	85	0
+134	85	0
+135	85	0
+136	85	0
+137	85	0
+138	85	0
+139	85	0
+140	85	0
+141	85	0
+142	85	0
+143	85	0
+144	85	0
+145	85	0
+146	85	0
+147	85	0
+148	85	0
+149	85	0
+150	85	0
+151	85	0
+152	85	0
+153	85	0
+154	85	0
+155	85	0
+156	85	0
+157	85	0
+158	85	0
+159	85	0
+160	85	0
+161	85	0
+162	85	0
+163	85	0
+164	85	0
+165	85	0
+166	85	0
+167	85	0
+168	85	0
+169	85	0
+170	85	0
+171	85	0
+172	85	0
+173	85	0
+174	85	0
+175	85	0
+176	85	0
+177	85	0
+178	85	0
+179	85	0
+180	85	0
+181	85	0
+182	85	0
+183	85	0
+184	85	0
+185	85	0
+186	85	0
+187	85	0
+188	85	0
+189	85	0
+190	85	0
+191	85	0
+192	85	0
+193	85	0
+194	85	0
+195	85	0
+196	85	0
+197	85	0
+198	85	0
+199	85	0
+200	85	0
+201	85	0
+202	85	0
+203	85	0
+204	85	0
+205	85	0
+206	85	0
+207	85	0
+208	85	0
+209	85	0
+210	85	0
+211	85	0
+212	85	0
+213	85	0
+214	85	0
+215	85	0
+216	85	0
+217	85	0
+218	85	0
+219	85	0
+220	85	0
+221	85	0
+222	85	0
+223	85	0
+224	85	0
+225	85	0
+226	85	0
+227	85	0
+228	85	0
+229	85	0
+230	85	0
+231	85	0
+232	85	0
+233	85	0
+234	85	0
+235	85	0
+236	85	0
+237	85	0
+238	85	0
+239	85	0
+240	85	0
+241	85	0
+242	85	0
+243	85	0
+244	85	0
+245	85	0
+246	85	0
+247	85	0
+248	85	0
+249	85	0
+250	85	0
+251	85	0
+252	85	0
+253	85	0
+254	85	0
+255	85	0
+256	85	0
+257	85	0
+258	85	0
+259	85	0
+260	85	0
+261	85	0
+262	85	0
+263	85	0
+264	85	0
+265	85	0
+266	85	0
+267	85	0
+268	85	0
+269	85	0
+270	85	0
+271	85	0
+272	85	0
+273	85	0
+274	85	0
+275	85	0
+276	85	0
+277	85	0
+278	85	0
+279	85	0
+280	85	0
+281	85	0
+282	85	0
+283	85	0
+284	85	0
+285	85	0
+286	85	0
+287	85	0
+288	85	0
+289	85	0
+290	85	0
+291	85	0
+292	85	0
+293	85	0
+294	85	0
+295	85	0
+296	85	0
+297	85	0
+298	85	0
+299	85	0
+300	85	0
+301	85	0
+302	85	0
+303	85	0
+304	85	0
+305	85	0
+306	85	0
+307	85	0
+308	85	0
+309	85	0
+310	85	0
+311	85	0
+312	85	0
+313	85	0
+314	85	0
+315	85	0
+316	85	0
+317	85	0
+318	85	0
+319	85	0
+320	85	0
+321	85	0
+322	85	0
+323	85	0
+324	85	0
+325	85	0
+326	85	0
+327	85	0
+328	85	0
+329	85	0
+330	85	0
+331	85	0
+332	85	0
+333	85	0
+334	85	0
+335	85	0
+336	85	0
+337	85	0
+338	85	0
+339	85	0
+340	85	0
+341	85	0
+342	85	0
+343	85	0
+344	85	0
+345	85	0
+346	85	0
+347	85	0
+348	85	0
+349	85	0
+350	85	0
+351	85	0
+352	85	0
+353	85	0
+354	85	0
+355	85	0
+356	85	0
+357	85	0
+358	85	0
+359	85	0
+360	85	0
+0	85.5	0
+1	85.5	0
+2	85.5	0
+3	85.5	0
+4	85.5	0
+5	85.5	0
+6	85.5	0
+7	85.5	0
+8	85.5	0
+9	85.5	0
+10	85.5	0
+11	85.5	0
+12	85.5	0
+13	85.5	0
+14	85.5	0
+15	85.5	0
+16	85.5	0
+17	85.5	0
+18	85.5	0
+19	85.5	0
+20	85.5	0
+21	85.5	0
+22	85.5	0
+23	85.5	0
+24	85.5	0
+25	85.5	0
+26	85.5	0
+27	85.5	0
+28	85.5	0
+29	85.5	0
+30	85.5	0
+31	85.5	0
+32	85.5	0
+33	85.5	0
+34	85.5	0
+35	85.5	0
+36	85.5	0
+37	85.5	0
+38	85.5	0
+39	85.5	0
+40	85.5	0
+41	85.5	0
+42	85.5	0
+43	85.5	0
+44	85.5	0
+45	85.5	0
+46	85.5	0
+47	85.5	0
+48	85.5	0
+49	85.5	0
+50	85.5	0
+51	85.5	0
+52	85.5	0
+53	85.5	0
+54	85.5	0
+55	85.5	0
+56	85.5	0
+57	85.5	0
+58	85.5	0
+59	85.5	0
+60	85.5	0
+61	85.5	0
+62	85.5	0
+63	85.5	0
+64	85.5	0
+65	85.5	0
+66	85.5	0
+67	85.5	0
+68	85.5	0
+69	85.5	0
+70	85.5	0
+71	85.5	0
+72	85.5	0
+73	85.5	0
+74	85.5	0
+75	85.5	0
+76	85.5	0
+77	85.5	0
+78	85.5	0
+79	85.5	0
+80	85.5	0
+81	85.5	0
+82	85.5	0
+83	85.5	0
+84	85.5	0
+85	85.5	0
+86	85.5	0
+87	85.5	0
+88	85.5	0
+89	85.5	0
+90	85.5	0
+91	85.5	0
+92	85.5	0
+93	85.5	0
+94	85.5	0
+95	85.5	0
+96	85.5	0
+97	85.5	0
+98	85.5	0
+99	85.5	0
+100	85.5	0
+101	85.5	0
+102	85.5	0
+103	85.5	0
+104	85.5	0
+105	85.5	0
+106	85.5	0
+107	85.5	0
+108	85.5	0
+109	85.5	0
+110	85.5	0
+111	85.5	0
+112	85.5	0
+113	85.5	0
+114	85.5	0
+115	85.5	0
+116	85.5	0
+117	85.5	0
+118	85.5	0
+119	85.5	0
+120	85.5	0
+121	85.5	0
+122	85.5	0
+123	85.5	0
+124	85.5	0
+125	85.5	0
+126	85.5	0
+127	85.5	0
+128	85.5	0
+129	85.5	0
+130	85.5	0
+131	85.5	0
+132	85.5	0
+133	85.5	0
+134	85.5	0
+135	85.5	0
+136	85.5	0
+137	85.5	0
+138	85.5	0
+139	85.5	0
+140	85.5	0
+141	85.5	0
+142	85.5	0
+143	85.5	0
+144	85.5	0
+145	85.5	0
+146	85.5	0
+147	85.5	0
+148	85.5	0
+149	85.5	0
+150	85.5	0
+151	85.5	0
+152	85.5	0
+153	85.5	0
+154	85.5	0
+155	85.5	0
+156	85.5	0
+157	85.5	0
+158	85.5	0
+159	85.5	0
+160	85.5	0
+161	85.5	0
+162	85.5	0
+163	85.5	0
+164	85.5	0
+165	85.5	0
+166	85.5	0
+167	85.5	0
+168	85.5	0
+169	85.5	0
+170	85.5	0
+171	85.5	0
+172	85.5	0
+173	85.5	0
+174	85.5	0
+175	85.5	0
+176	85.5	0
+177	85.5	0
+178	85.5	0
+179	85.5	0
+180	85.5	0
+181	85.5	0
+182	85.5	0
+183	85.5	0
+184	85.5	0
+185	85.5	0
+186	85.5	0
+187	85.5	0
+188	85.5	0
+189	85.5	0
+190	85.5	0
+191	85.5	0
+192	85.5	0
+193	85.5	0
+194	85.5	0
+195	85.5	0
+196	85.5	0
+197	85.5	0
+198	85.5	0
+199	85.5	0
+200	85.5	0
+201	85.5	0
+202	85.5	0
+203	85.5	0
+204	85.5	0
+205	85.5	0
+206	85.5	0
+207	85.5	0
+208	85.5	0
+209	85.5	0
+210	85.5	0
+211	85.5	0
+212	85.5	0
+213	85.5	0
+214	85.5	0
+215	85.5	0
+216	85.5	0
+217	85.5	0
+218	85.5	0
+219	85.5	0
+220	85.5	0
+221	85.5	0
+222	85.5	0
+223	85.5	0
+224	85.5	0
+225	85.5	0
+226	85.5	0
+227	85.5	0
+228	85.5	0
+229	85.5	0
+230	85.5	0
+231	85.5	0
+232	85.5	0
+233	85.5	0
+234	85.5	0
+235	85.5	0
+236	85.5	0
+237	85.5	0
+238	85.5	0
+239	85.5	0
+240	85.5	0
+241	85.5	0
+242	85.5	0
+243	85.5	0
+244	85.5	0
+245	85.5	0
+246	85.5	0
+247	85.5	0
+248	85.5	0
+249	85.5	0
+250	85.5	0
+251	85.5	0
+252	85.5	0
+253	85.5	0
+254	85.5	0
+255	85.5	0
+256	85.5	0
+257	85.5	0
+258	85.5	0
+259	85.5	0
+260	85.5	0
+261	85.5	0
+262	85.5	0
+263	85.5	0
+264	85.5	0
+265	85.5	0
+266	85.5	0
+267	85.5	0
+268	85.5	0
+269	85.5	0
+270	85.5	0
+271	85.5	0
+272	85.5	0
+273	85.5	0
+274	85.5	0
+275	85.5	0
+276	85.5	0
+277	85.5	0
+278	85.5	0
+279	85.5	0
+280	85.5	0
+281	85.5	0
+282	85.5	0
+283	85.5	0
+284	85.5	0
+285	85.5	0
+286	85.5	0
+287	85.5	0
+288	85.5	0
+289	85.5	0
+290	85.5	0
+291	85.5	0
+292	85.5	0
+293	85.5	0
+294	85.5	0
+295	85.5	0
+296	85.5	0
+297	85.5	0
+298	85.5	0
+299	85.5	0
+300	85.5	0
+301	85.5	0
+302	85.5	0
+303	85.5	0
+304	85.5	0
+305	85.5	0
+306	85.5	0
+307	85.5	0
+308	85.5	0
+309	85.5	0
+310	85.5	0
+311	85.5	0
+312	85.5	0
+313	85.5	0
+314	85.5	0
+315	85.5	0
+316	85.5	0
+317	85.5	0
+318	85.5	0
+319	85.5	0
+320	85.5	0
+321	85.5	0
+322	85.5	0
+323	85.5	0
+324	85.5	0
+325	85.5	0
+326	85.5	0
+327	85.5	0
+328	85.5	0
+329	85.5	0
+330	85.5	0
+331	85.5	0
+332	85.5	0
+333	85.5	0
+334	85.5	0
+335	85.5	0
+336	85.5	0
+337	85.5	0
+338	85.5	0
+339	85.5	0
+340	85.5	0
+341	85.5	0
+342	85.5	0
+343	85.5	0
+344	85.5	0
+345	85.5	0
+346	85.5	0
+347	85.5	0
+348	85.5	0
+349	85.5	0
+350	85.5	0
+351	85.5	0
+352	85.5	0
+353	85.5	0
+354	85.5	0
+355	85.5	0
+356	85.5	0
+357	85.5	0
+358	85.5	0
+359	85.5	0
+360	85.5	0
+0	86	0
+1	86	0
+2	86	0
+3	86	0
+4	86	0
+5	86	0
+6	86	0
+7	86	0
+8	86	0
+9	86	0
+10	86	0
+11	86	0
+12	86	0
+13	86	0
+14	86	0
+15	86	0
+16	86	0
+17	86	0
+18	86	0
+19	86	0
+20	86	0
+21	86	0
+22	86	0
+23	86	0
+24	86	0
+25	86	0
+26	86	0
+27	86	0
+28	86	0
+29	86	0
+30	86	0
+31	86	0
+32	86	0
+33	86	0
+34	86	0
+35	86	0
+36	86	0
+37	86	0
+38	86	0
+39	86	0
+40	86	0
+41	86	0
+42	86	0
+43	86	0
+44	86	0
+45	86	0
+46	86	0
+47	86	0
+48	86	0
+49	86	0
+50	86	0
+51	86	0
+52	86	0
+53	86	0
+54	86	0
+55	86	0
+56	86	0
+57	86	0
+58	86	0
+59	86	0
+60	86	0
+61	86	0
+62	86	0
+63	86	0
+64	86	0
+65	86	0
+66	86	0
+67	86	0
+68	86	0
+69	86	0
+70	86	0
+71	86	0
+72	86	0
+73	86	0
+74	86	0
+75	86	0
+76	86	0
+77	86	0
+78	86	0
+79	86	0
+80	86	0
+81	86	0
+82	86	0
+83	86	0
+84	86	0
+85	86	0
+86	86	0
+87	86	0
+88	86	0
+89	86	0
+90	86	0
+91	86	0
+92	86	0
+93	86	0
+94	86	0
+95	86	0
+96	86	0
+97	86	0
+98	86	0
+99	86	0
+100	86	0
+101	86	0
+102	86	0
+103	86	0
+104	86	0
+105	86	0
+106	86	0
+107	86	0
+108	86	0
+109	86	0
+110	86	0
+111	86	0
+112	86	0
+113	86	0
+114	86	0
+115	86	0
+116	86	0
+117	86	0
+118	86	0
+119	86	0
+120	86	0
+121	86	0
+122	86	0
+123	86	0
+124	86	0
+125	86	0
+126	86	0
+127	86	0
+128	86	0
+129	86	0
+130	86	0
+131	86	0
+132	86	0
+133	86	0
+134	86	0
+135	86	0
+136	86	0
+137	86	0
+138	86	0
+139	86	0
+140	86	0
+141	86	0
+142	86	0
+143	86	0
+144	86	0
+145	86	0
+146	86	0
+147	86	0
+148	86	0
+149	86	0
+150	86	0
+151	86	0
+152	86	0
+153	86	0
+154	86	0
+155	86	0
+156	86	0
+157	86	0
+158	86	0
+159	86	0
+160	86	0
+161	86	0
+162	86	0
+163	86	0
+164	86	0
+165	86	0
+166	86	0
+167	86	0
+168	86	0
+169	86	0
+170	86	0
+171	86	0
+172	86	0
+173	86	0
+174	86	0
+175	86	0
+176	86	0
+177	86	0
+178	86	0
+179	86	0
+180	86	0
+181	86	0
+182	86	0
+183	86	0
+184	86	0
+185	86	0
+186	86	0
+187	86	0
+188	86	0
+189	86	0
+190	86	0
+191	86	0
+192	86	0
+193	86	0
+194	86	0
+195	86	0
+196	86	0
+197	86	0
+198	86	0
+199	86	0
+200	86	0
+201	86	0
+202	86	0
+203	86	0
+204	86	0
+205	86	0
+206	86	0
+207	86	0
+208	86	0
+209	86	0
+210	86	0
+211	86	0
+212	86	0
+213	86	0
+214	86	0
+215	86	0
+216	86	0
+217	86	0
+218	86	0
+219	86	0
+220	86	0
+221	86	0
+222	86	0
+223	86	0
+224	86	0
+225	86	0
+226	86	0
+227	86	0
+228	86	0
+229	86	0
+230	86	0
+231	86	0
+232	86	0
+233	86	0
+234	86	0
+235	86	0
+236	86	0
+237	86	0
+238	86	0
+239	86	0
+240	86	0
+241	86	0
+242	86	0
+243	86	0
+244	86	0
+245	86	0
+246	86	0
+247	86	0
+248	86	0
+249	86	0
+250	86	0
+251	86	0
+252	86	0
+253	86	0
+254	86	0
+255	86	0
+256	86	0
+257	86	0
+258	86	0
+259	86	0
+260	86	0
+261	86	0
+262	86	0
+263	86	0
+264	86	0
+265	86	0
+266	86	0
+267	86	0
+268	86	0
+269	86	0
+270	86	0
+271	86	0
+272	86	0
+273	86	0
+274	86	0
+275	86	0
+276	86	0
+277	86	0
+278	86	0
+279	86	0
+280	86	0
+281	86	0
+282	86	0
+283	86	0
+284	86	0
+285	86	0
+286	86	0
+287	86	0
+288	86	0
+289	86	0
+290	86	0
+291	86	0
+292	86	0
+293	86	0
+294	86	0
+295	86	0
+296	86	0
+297	86	0
+298	86	0
+299	86	0
+300	86	0
+301	86	0
+302	86	0
+303	86	0
+304	86	0
+305	86	0
+306	86	0
+307	86	0
+308	86	0
+309	86	0
+310	86	0
+311	86	0
+312	86	0
+313	86	0
+314	86	0
+315	86	0
+316	86	0
+317	86	0
+318	86	0
+319	86	0
+320	86	0
+321	86	0
+322	86	0
+323	86	0
+324	86	0
+325	86	0
+326	86	0
+327	86	0
+328	86	0
+329	86	0
+330	86	0
+331	86	0
+332	86	0
+333	86	0
+334	86	0
+335	86	0
+336	86	0
+337	86	0
+338	86	0
+339	86	0
+340	86	0
+341	86	0
+342	86	0
+343	86	0
+344	86	0
+345	86	0
+346	86	0
+347	86	0
+348	86	0
+349	86	0
+350	86	0
+351	86	0
+352	86	0
+353	86	0
+354	86	0
+355	86	0
+356	86	0
+357	86	0
+358	86	0
+359	86	0
+360	86	0
+0	86.5	0
+1	86.5	0
+2	86.5	0
+3	86.5	0
+4	86.5	0
+5	86.5	0
+6	86.5	0
+7	86.5	0
+8	86.5	0
+9	86.5	0
+10	86.5	0
+11	86.5	0
+12	86.5	0
+13	86.5	0
+14	86.5	0
+15	86.5	0
+16	86.5	0
+17	86.5	0
+18	86.5	0
+19	86.5	0
+20	86.5	0
+21	86.5	0
+22	86.5	0
+23	86.5	0
+24	86.5	0
+25	86.5	0
+26	86.5	0
+27	86.5	0
+28	86.5	0
+29	86.5	0
+30	86.5	0
+31	86.5	0
+32	86.5	0
+33	86.5	0
+34	86.5	0
+35	86.5	0
+36	86.5	0
+37	86.5	0
+38	86.5	0
+39	86.5	0
+40	86.5	0
+41	86.5	0
+42	86.5	0
+43	86.5	0
+44	86.5	0
+45	86.5	0
+46	86.5	0
+47	86.5	0
+48	86.5	0
+49	86.5	0
+50	86.5	0
+51	86.5	0
+52	86.5	0
+53	86.5	0
+54	86.5	0
+55	86.5	0
+56	86.5	0
+57	86.5	0
+58	86.5	0
+59	86.5	0
+60	86.5	0
+61	86.5	0
+62	86.5	0
+63	86.5	0
+64	86.5	0
+65	86.5	0
+66	86.5	0
+67	86.5	0
+68	86.5	0
+69	86.5	0
+70	86.5	0
+71	86.5	0
+72	86.5	0
+73	86.5	0
+74	86.5	0
+75	86.5	0
+76	86.5	0
+77	86.5	0
+78	86.5	0
+79	86.5	0
+80	86.5	0
+81	86.5	0
+82	86.5	0
+83	86.5	0
+84	86.5	0
+85	86.5	0
+86	86.5	0
+87	86.5	0
+88	86.5	0
+89	86.5	0
+90	86.5	0
+91	86.5	0
+92	86.5	0
+93	86.5	0
+94	86.5	0
+95	86.5	0
+96	86.5	0
+97	86.5	0
+98	86.5	0
+99	86.5	0
+100	86.5	0
+101	86.5	0
+102	86.5	0
+103	86.5	0
+104	86.5	0
+105	86.5	0
+106	86.5	0
+107	86.5	0
+108	86.5	0
+109	86.5	0
+110	86.5	0
+111	86.5	0
+112	86.5	0
+113	86.5	0
+114	86.5	0
+115	86.5	0
+116	86.5	0
+117	86.5	0
+118	86.5	0
+119	86.5	0
+120	86.5	0
+121	86.5	0
+122	86.5	0
+123	86.5	0
+124	86.5	0
+125	86.5	0
+126	86.5	0
+127	86.5	0
+128	86.5	0
+129	86.5	0
+130	86.5	0
+131	86.5	0
+132	86.5	0
+133	86.5	0
+134	86.5	0
+135	86.5	0
+136	86.5	0
+137	86.5	0
+138	86.5	0
+139	86.5	0
+140	86.5	0
+141	86.5	0
+142	86.5	0
+143	86.5	0
+144	86.5	0
+145	86.5	0
+146	86.5	0
+147	86.5	0
+148	86.5	0
+149	86.5	0
+150	86.5	0
+151	86.5	0
+152	86.5	0
+153	86.5	0
+154	86.5	0
+155	86.5	0
+156	86.5	0
+157	86.5	0
+158	86.5	0
+159	86.5	0
+160	86.5	0
+161	86.5	0
+162	86.5	0
+163	86.5	0
+164	86.5	0
+165	86.5	0
+166	86.5	0
+167	86.5	0
+168	86.5	0
+169	86.5	0
+170	86.5	0
+171	86.5	0
+172	86.5	0
+173	86.5	0
+174	86.5	0
+175	86.5	0
+176	86.5	0
+177	86.5	0
+178	86.5	0
+179	86.5	0
+180	86.5	0
+181	86.5	0
+182	86.5	0
+183	86.5	0
+184	86.5	0
+185	86.5	0
+186	86.5	0
+187	86.5	0
+188	86.5	0
+189	86.5	0
+190	86.5	0
+191	86.5	0
+192	86.5	0
+193	86.5	0
+194	86.5	0
+195	86.5	0
+196	86.5	0
+197	86.5	0
+198	86.5	0
+199	86.5	0
+200	86.5	0
+201	86.5	0
+202	86.5	0
+203	86.5	0
+204	86.5	0
+205	86.5	0
+206	86.5	0
+207	86.5	0
+208	86.5	0
+209	86.5	0
+210	86.5	0
+211	86.5	0
+212	86.5	0
+213	86.5	0
+214	86.5	0
+215	86.5	0
+216	86.5	0
+217	86.5	0
+218	86.5	0
+219	86.5	0
+220	86.5	0
+221	86.5	0
+222	86.5	0
+223	86.5	0
+224	86.5	0
+225	86.5	0
+226	86.5	0
+227	86.5	0
+228	86.5	0
+229	86.5	0
+230	86.5	0
+231	86.5	0
+232	86.5	0
+233	86.5	0
+234	86.5	0
+235	86.5	0
+236	86.5	0
+237	86.5	0
+238	86.5	0
+239	86.5	0
+240	86.5	0
+241	86.5	0
+242	86.5	0
+243	86.5	0
+244	86.5	0
+245	86.5	0
+246	86.5	0
+247	86.5	0
+248	86.5	0
+249	86.5	0
+250	86.5	0
+251	86.5	0
+252	86.5	0
+253	86.5	0
+254	86.5	0
+255	86.5	0
+256	86.5	0
+257	86.5	0
+258	86.5	0
+259	86.5	0
+260	86.5	0
+261	86.5	0
+262	86.5	0
+263	86.5	0
+264	86.5	0
+265	86.5	0
+266	86.5	0
+267	86.5	0
+268	86.5	0
+269	86.5	0
+270	86.5	0
+271	86.5	0
+272	86.5	0
+273	86.5	0
+274	86.5	0
+275	86.5	0
+276	86.5	0
+277	86.5	0
+278	86.5	0
+279	86.5	0
+280	86.5	0
+281	86.5	0
+282	86.5	0
+283	86.5	0
+284	86.5	0
+285	86.5	0
+286	86.5	0
+287	86.5	0
+288	86.5	0
+289	86.5	0
+290	86.5	0
+291	86.5	0
+292	86.5	0
+293	86.5	0
+294	86.5	0
+295	86.5	0
+296	86.5	0
+297	86.5	0
+298	86.5	0
+299	86.5	0
+300	86.5	0
+301	86.5	0
+302	86.5	0
+303	86.5	0
+304	86.5	0
+305	86.5	0
+306	86.5	0
+307	86.5	0
+308	86.5	0
+309	86.5	0
+310	86.5	0
+311	86.5	0
+312	86.5	0
+313	86.5	0
+314	86.5	0
+315	86.5	0
+316	86.5	0
+317	86.5	0
+318	86.5	0
+319	86.5	0
+320	86.5	0
+321	86.5	0
+322	86.5	0
+323	86.5	0
+324	86.5	0
+325	86.5	0
+326	86.5	0
+327	86.5	0
+328	86.5	0
+329	86.5	0
+330	86.5	0
+331	86.5	0
+332	86.5	0
+333	86.5	0
+334	86.5	0
+335	86.5	0
+336	86.5	0
+337	86.5	0
+338	86.5	0
+339	86.5	0
+340	86.5	0
+341	86.5	0
+342	86.5	0
+343	86.5	0
+344	86.5	0
+345	86.5	0
+346	86.5	0
+347	86.5	0
+348	86.5	0
+349	86.5	0
+350	86.5	0
+351	86.5	0
+352	86.5	0
+353	86.5	0
+354	86.5	0
+355	86.5	0
+356	86.5	0
+357	86.5	0
+358	86.5	0
+359	86.5	0
+360	86.5	0
+0	87	0
+1	87	0
+2	87	0
+3	87	0
+4	87	0
+5	87	0
+6	87	0
+7	87	0
+8	87	0
+9	87	0
+10	87	0
+11	87	0
+12	87	0
+13	87	0
+14	87	0
+15	87	0
+16	87	0
+17	87	0
+18	87	0
+19	87	0
+20	87	0
+21	87	0
+22	87	0
+23	87	0
+24	87	0
+25	87	0
+26	87	0
+27	87	0
+28	87	0
+29	87	0
+30	87	0
+31	87	0
+32	87	0
+33	87	0
+34	87	0
+35	87	0
+36	87	0
+37	87	0
+38	87	0
+39	87	0
+40	87	0
+41	87	0
+42	87	0
+43	87	0
+44	87	0
+45	87	0
+46	87	0
+47	87	0
+48	87	0
+49	87	0
+50	87	0
+51	87	0
+52	87	0
+53	87	0
+54	87	0
+55	87	0
+56	87	0
+57	87	0
+58	87	0
+59	87	0
+60	87	0
+61	87	0
+62	87	0
+63	87	0
+64	87	0
+65	87	0
+66	87	0
+67	87	0
+68	87	0
+69	87	0
+70	87	0
+71	87	0
+72	87	0
+73	87	0
+74	87	0
+75	87	0
+76	87	0
+77	87	0
+78	87	0
+79	87	0
+80	87	0
+81	87	0
+82	87	0
+83	87	0
+84	87	0
+85	87	0
+86	87	0
+87	87	0
+88	87	0
+89	87	0
+90	87	0
+91	87	0
+92	87	0
+93	87	0
+94	87	0
+95	87	0
+96	87	0
+97	87	0
+98	87	0
+99	87	0
+100	87	0
+101	87	0
+102	87	0
+103	87	0
+104	87	0
+105	87	0
+106	87	0
+107	87	0
+108	87	0
+109	87	0
+110	87	0
+111	87	0
+112	87	0
+113	87	0
+114	87	0
+115	87	0
+116	87	0
+117	87	0
+118	87	0
+119	87	0
+120	87	0
+121	87	0
+122	87	0
+123	87	0
+124	87	0
+125	87	0
+126	87	0
+127	87	0
+128	87	0
+129	87	0
+130	87	0
+131	87	0
+132	87	0
+133	87	0
+134	87	0
+135	87	0
+136	87	0
+137	87	0
+138	87	0
+139	87	0
+140	87	0
+141	87	0
+142	87	0
+143	87	0
+144	87	0
+145	87	0
+146	87	0
+147	87	0
+148	87	0
+149	87	0
+150	87	0
+151	87	0
+152	87	0
+153	87	0
+154	87	0
+155	87	0
+156	87	0
+157	87	0
+158	87	0
+159	87	0
+160	87	0
+161	87	0
+162	87	0
+163	87	0
+164	87	0
+165	87	0
+166	87	0
+167	87	0
+168	87	0
+169	87	0
+170	87	0
+171	87	0
+172	87	0
+173	87	0
+174	87	0
+175	87	0
+176	87	0
+177	87	0
+178	87	0
+179	87	0
+180	87	0
+181	87	0
+182	87	0
+183	87	0
+184	87	0
+185	87	0
+186	87	0
+187	87	0
+188	87	0
+189	87	0
+190	87	0
+191	87	0
+192	87	0
+193	87	0
+194	87	0
+195	87	0
+196	87	0
+197	87	0
+198	87	0
+199	87	0
+200	87	0
+201	87	0
+202	87	0
+203	87	0
+204	87	0
+205	87	0
+206	87	0
+207	87	0
+208	87	0
+209	87	0
+210	87	0
+211	87	0
+212	87	0
+213	87	0
+214	87	0
+215	87	0
+216	87	0
+217	87	0
+218	87	0
+219	87	0
+220	87	0
+221	87	0
+222	87	0
+223	87	0
+224	87	0
+225	87	0
+226	87	0
+227	87	0
+228	87	0
+229	87	0
+230	87	0
+231	87	0
+232	87	0
+233	87	0
+234	87	0
+235	87	0
+236	87	0
+237	87	0
+238	87	0
+239	87	0
+240	87	0
+241	87	0
+242	87	0
+243	87	0
+244	87	0
+245	87	0
+246	87	0
+247	87	0
+248	87	0
+249	87	0
+250	87	0
+251	87	0
+252	87	0
+253	87	0
+254	87	0
+255	87	0
+256	87	0
+257	87	0
+258	87	0
+259	87	0
+260	87	0
+261	87	0
+262	87	0
+263	87	0
+264	87	0
+265	87	0
+266	87	0
+267	87	0
+268	87	0
+269	87	0
+270	87	0
+271	87	0
+272	87	0
+273	87	0
+274	87	0
+275	87	0
+276	87	0
+277	87	0
+278	87	0
+279	87	0
+280	87	0
+281	87	0
+282	87	0
+283	87	0
+284	87	0
+285	87	0
+286	87	0
+287	87	0
+288	87	0
+289	87	0
+290	87	0
+291	87	0
+292	87	0
+293	87	0
+294	87	0
+295	87	0
+296	87	0
+297	87	0
+298	87	0
+299	87	0
+300	87	0
+301	87	0
+302	87	0
+303	87	0
+304	87	0
+305	87	0
+306	87	0
+307	87	0
+308	87	0
+309	87	0
+310	87	0
+311	87	0
+312	87	0
+313	87	0
+314	87	0
+315	87	0
+316	87	0
+317	87	0
+318	87	0
+319	87	0
+320	87	0
+321	87	0
+322	87	0
+323	87	0
+324	87	0
+325	87	0
+326	87	0
+327	87	0
+328	87	0
+329	87	0
+330	87	0
+331	87	0
+332	87	0
+333	87	0
+334	87	0
+335	87	0
+336	87	0
+337	87	0
+338	87	0
+339	87	0
+340	87	0
+341	87	0
+342	87	0
+343	87	0
+344	87	0
+345	87	0
+346	87	0
+347	87	0
+348	87	0
+349	87	0
+350	87	0
+351	87	0
+352	87	0
+353	87	0
+354	87	0
+355	87	0
+356	87	0
+357	87	0
+358	87	0
+359	87	0
+360	87	0
+0	87.5	0
+1	87.5	0
+2	87.5	0
+3	87.5	0
+4	87.5	0
+5	87.5	0
+6	87.5	0
+7	87.5	0
+8	87.5	0
+9	87.5	0
+10	87.5	0
+11	87.5	0
+12	87.5	0
+13	87.5	0
+14	87.5	0
+15	87.5	0
+16	87.5	0
+17	87.5	0
+18	87.5	0
+19	87.5	0
+20	87.5	0
+21	87.5	0
+22	87.5	0
+23	87.5	0
+24	87.5	0
+25	87.5	0
+26	87.5	0
+27	87.5	0
+28	87.5	0
+29	87.5	0
+30	87.5	0
+31	87.5	0
+32	87.5	0
+33	87.5	0
+34	87.5	0
+35	87.5	0
+36	87.5	0
+37	87.5	0
+38	87.5	0
+39	87.5	0
+40	87.5	0
+41	87.5	0
+42	87.5	0
+43	87.5	0
+44	87.5	0
+45	87.5	0
+46	87.5	0
+47	87.5	0
+48	87.5	0
+49	87.5	0
+50	87.5	0
+51	87.5	0
+52	87.5	0
+53	87.5	0
+54	87.5	0
+55	87.5	0
+56	87.5	0
+57	87.5	0
+58	87.5	0
+59	87.5	0
+60	87.5	0
+61	87.5	0
+62	87.5	0
+63	87.5	0
+64	87.5	0
+65	87.5	0
+66	87.5	0
+67	87.5	0
+68	87.5	0
+69	87.5	0
+70	87.5	0
+71	87.5	0
+72	87.5	0
+73	87.5	0
+74	87.5	0
+75	87.5	0
+76	87.5	0
+77	87.5	0
+78	87.5	0
+79	87.5	0
+80	87.5	0
+81	87.5	0
+82	87.5	0
+83	87.5	0
+84	87.5	0
+85	87.5	0
+86	87.5	0
+87	87.5	0
+88	87.5	0
+89	87.5	0
+90	87.5	0
+91	87.5	0
+92	87.5	0
+93	87.5	0
+94	87.5	0
+95	87.5	0
+96	87.5	0
+97	87.5	0
+98	87.5	0
+99	87.5	0
+100	87.5	0
+101	87.5	0
+102	87.5	0
+103	87.5	0
+104	87.5	0
+105	87.5	0
+106	87.5	0
+107	87.5	0
+108	87.5	0
+109	87.5	0
+110	87.5	0
+111	87.5	0
+112	87.5	0
+113	87.5	0
+114	87.5	0
+115	87.5	0
+116	87.5	0
+117	87.5	0
+118	87.5	0
+119	87.5	0
+120	87.5	0
+121	87.5	0
+122	87.5	0
+123	87.5	0
+124	87.5	0
+125	87.5	0
+126	87.5	0
+127	87.5	0
+128	87.5	0
+129	87.5	0
+130	87.5	0
+131	87.5	0
+132	87.5	0
+133	87.5	0
+134	87.5	0
+135	87.5	0
+136	87.5	0
+137	87.5	0
+138	87.5	0
+139	87.5	0
+140	87.5	0
+141	87.5	0
+142	87.5	0
+143	87.5	0
+144	87.5	0
+145	87.5	0
+146	87.5	0
+147	87.5	0
+148	87.5	0
+149	87.5	0
+150	87.5	0
+151	87.5	0
+152	87.5	0
+153	87.5	0
+154	87.5	0
+155	87.5	0
+156	87.5	0
+157	87.5	0
+158	87.5	0
+159	87.5	0
+160	87.5	0
+161	87.5	0
+162	87.5	0
+163	87.5	0
+164	87.5	0
+165	87.5	0
+166	87.5	0
+167	87.5	0
+168	87.5	0
+169	87.5	0
+170	87.5	0
+171	87.5	0
+172	87.5	0
+173	87.5	0
+174	87.5	0
+175	87.5	0
+176	87.5	0
+177	87.5	0
+178	87.5	0
+179	87.5	0
+180	87.5	0
+181	87.5	0
+182	87.5	0
+183	87.5	0
+184	87.5	0
+185	87.5	0
+186	87.5	0
+187	87.5	0
+188	87.5	0
+189	87.5	0
+190	87.5	0
+191	87.5	0
+192	87.5	0
+193	87.5	0
+194	87.5	0
+195	87.5	0
+196	87.5	0
+197	87.5	0
+198	87.5	0
+199	87.5	0
+200	87.5	0
+201	87.5	0
+202	87.5	0
+203	87.5	0
+204	87.5	0
+205	87.5	0
+206	87.5	0
+207	87.5	0
+208	87.5	0
+209	87.5	0
+210	87.5	0
+211	87.5	0
+212	87.5	0
+213	87.5	0
+214	87.5	0
+215	87.5	0
+216	87.5	0
+217	87.5	0
+218	87.5	0
+219	87.5	0
+220	87.5	0
+221	87.5	0
+222	87.5	0
+223	87.5	0
+224	87.5	0
+225	87.5	0
+226	87.5	0
+227	87.5	0
+228	87.5	0
+229	87.5	0
+230	87.5	0
+231	87.5	0
+232	87.5	0
+233	87.5	0
+234	87.5	0
+235	87.5	0
+236	87.5	0
+237	87.5	0
+238	87.5	0
+239	87.5	0
+240	87.5	0
+241	87.5	0
+242	87.5	0
+243	87.5	0
+244	87.5	0
+245	87.5	0
+246	87.5	0
+247	87.5	0
+248	87.5	0
+249	87.5	0
+250	87.5	0
+251	87.5	0
+252	87.5	0
+253	87.5	0
+254	87.5	0
+255	87.5	0
+256	87.5	0
+257	87.5	0
+258	87.5	0
+259	87.5	0
+260	87.5	0
+261	87.5	0
+262	87.5	0
+263	87.5	0
+264	87.5	0
+265	87.5	0
+266	87.5	0
+267	87.5	0
+268	87.5	0
+269	87.5	0
+270	87.5	0
+271	87.5	0
+272	87.5	0
+273	87.5	0
+274	87.5	0
+275	87.5	0
+276	87.5	0
+277	87.5	0
+278	87.5	0
+279	87.5	0
+280	87.5	0
+281	87.5	0
+282	87.5	0
+283	87.5	0
+284	87.5	0
+285	87.5	0
+286	87.5	0
+287	87.5	0
+288	87.5	0
+289	87.5	0
+290	87.5	0
+291	87.5	0
+292	87.5	0
+293	87.5	0
+294	87.5	0
+295	87.5	0
+296	87.5	0
+297	87.5	0
+298	87.5	0
+299	87.5	0
+300	87.5	0
+301	87.5	0
+302	87.5	0
+303	87.5	0
+304	87.5	0
+305	87.5	0
+306	87.5	0
+307	87.5	0
+308	87.5	0
+309	87.5	0
+310	87.5	0
+311	87.5	0
+312	87.5	0
+313	87.5	0
+314	87.5	0
+315	87.5	0
+316	87.5	0
+317	87.5	0
+318	87.5	0
+319	87.5	0
+320	87.5	0
+321	87.5	0
+322	87.5	0
+323	87.5	0
+324	87.5	0
+325	87.5	0
+326	87.5	0
+327	87.5	0
+328	87.5	0
+329	87.5	0
+330	87.5	0
+331	87.5	0
+332	87.5	0
+333	87.5	0
+334	87.5	0
+335	87.5	0
+336	87.5	0
+337	87.5	0
+338	87.5	0
+339	87.5	0
+340	87.5	0
+341	87.5	0
+342	87.5	0
+343	87.5	0
+344	87.5	0
+345	87.5	0
+346	87.5	0
+347	87.5	0
+348	87.5	0
+349	87.5	0
+350	87.5	0
+351	87.5	0
+352	87.5	0
+353	87.5	0
+354	87.5	0
+355	87.5	0
+356	87.5	0
+357	87.5	0
+358	87.5	0
+359	87.5	0
+360	87.5	0
+0	88	0
+1	88	0
+2	88	0
+3	88	0
+4	88	0
+5	88	0
+6	88	0
+7	88	0
+8	88	0
+9	88	0
+10	88	0
+11	88	0
+12	88	0
+13	88	0
+14	88	0
+15	88	0
+16	88	0
+17	88	0
+18	88	0
+19	88	0
+20	88	0
+21	88	0
+22	88	0
+23	88	0
+24	88	0
+25	88	0
+26	88	0
+27	88	0
+28	88	0
+29	88	0
+30	88	0
+31	88	0
+32	88	0
+33	88	0
+34	88	0
+35	88	0
+36	88	0
+37	88	0
+38	88	0
+39	88	0
+40	88	0
+41	88	0
+42	88	0
+43	88	0
+44	88	0
+45	88	0
+46	88	0
+47	88	0
+48	88	0
+49	88	0
+50	88	0
+51	88	0
+52	88	0
+53	88	0
+54	88	0
+55	88	0
+56	88	0
+57	88	0
+58	88	0
+59	88	0
+60	88	0
+61	88	0
+62	88	0
+63	88	0
+64	88	0
+65	88	0
+66	88	0
+67	88	0
+68	88	0
+69	88	0
+70	88	0
+71	88	0
+72	88	0
+73	88	0
+74	88	0
+75	88	0
+76	88	0
+77	88	0
+78	88	0
+79	88	0
+80	88	0
+81	88	0
+82	88	0
+83	88	0
+84	88	0
+85	88	0
+86	88	0
+87	88	0
+88	88	0
+89	88	0
+90	88	0
+91	88	0
+92	88	0
+93	88	0
+94	88	0
+95	88	0
+96	88	0
+97	88	0
+98	88	0
+99	88	0
+100	88	0
+101	88	0
+102	88	0
+103	88	0
+104	88	0
+105	88	0
+106	88	0
+107	88	0
+108	88	0
+109	88	0
+110	88	0
+111	88	0
+112	88	0
+113	88	0
+114	88	0
+115	88	0
+116	88	0
+117	88	0
+118	88	0
+119	88	0
+120	88	0
+121	88	0
+122	88	0
+123	88	0
+124	88	0
+125	88	0
+126	88	0
+127	88	0
+128	88	0
+129	88	0
+130	88	0
+131	88	0
+132	88	0
+133	88	0
+134	88	0
+135	88	0
+136	88	0
+137	88	0
+138	88	0
+139	88	0
+140	88	0
+141	88	0
+142	88	0
+143	88	0
+144	88	0
+145	88	0
+146	88	0
+147	88	0
+148	88	0
+149	88	0
+150	88	0
+151	88	0
+152	88	0
+153	88	0
+154	88	0
+155	88	0
+156	88	0
+157	88	0
+158	88	0
+159	88	0
+160	88	0
+161	88	0
+162	88	0
+163	88	0
+164	88	0
+165	88	0
+166	88	0
+167	88	0
+168	88	0
+169	88	0
+170	88	0
+171	88	0
+172	88	0
+173	88	0
+174	88	0
+175	88	0
+176	88	0
+177	88	0
+178	88	0
+179	88	0
+180	88	0
+181	88	0
+182	88	0
+183	88	0
+184	88	0
+185	88	0
+186	88	0
+187	88	0
+188	88	0
+189	88	0
+190	88	0
+191	88	0
+192	88	0
+193	88	0
+194	88	0
+195	88	0
+196	88	0
+197	88	0
+198	88	0
+199	88	0
+200	88	0
+201	88	0
+202	88	0
+203	88	0
+204	88	0
+205	88	0
+206	88	0
+207	88	0
+208	88	0
+209	88	0
+210	88	0
+211	88	0
+212	88	0
+213	88	0
+214	88	0
+215	88	0
+216	88	0
+217	88	0
+218	88	0
+219	88	0
+220	88	0
+221	88	0
+222	88	0
+223	88	0
+224	88	0
+225	88	0
+226	88	0
+227	88	0
+228	88	0
+229	88	0
+230	88	0
+231	88	0
+232	88	0
+233	88	0
+234	88	0
+235	88	0
+236	88	0
+237	88	0
+238	88	0
+239	88	0
+240	88	0
+241	88	0
+242	88	0
+243	88	0
+244	88	0
+245	88	0
+246	88	0
+247	88	0
+248	88	0
+249	88	0
+250	88	0
+251	88	0
+252	88	0
+253	88	0
+254	88	0
+255	88	0
+256	88	0
+257	88	0
+258	88	0
+259	88	0
+260	88	0
+261	88	0
+262	88	0
+263	88	0
+264	88	0
+265	88	0
+266	88	0
+267	88	0
+268	88	0
+269	88	0
+270	88	0
+271	88	0
+272	88	0
+273	88	0
+274	88	0
+275	88	0
+276	88	0
+277	88	0
+278	88	0
+279	88	0
+280	88	0
+281	88	0
+282	88	0
+283	88	0
+284	88	0
+285	88	0
+286	88	0
+287	88	0
+288	88	0
+289	88	0
+290	88	0
+291	88	0
+292	88	0
+293	88	0
+294	88	0
+295	88	0
+296	88	0
+297	88	0
+298	88	0
+299	88	0
+300	88	0
+301	88	0
+302	88	0
+303	88	0
+304	88	0
+305	88	0
+306	88	0
+307	88	0
+308	88	0
+309	88	0
+310	88	0
+311	88	0
+312	88	0
+313	88	0
+314	88	0
+315	88	0
+316	88	0
+317	88	0
+318	88	0
+319	88	0
+320	88	0
+321	88	0
+322	88	0
+323	88	0
+324	88	0
+325	88	0
+326	88	0
+327	88	0
+328	88	0
+329	88	0
+330	88	0
+331	88	0
+332	88	0
+333	88	0
+334	88	0
+335	88	0
+336	88	0
+337	88	0
+338	88	0
+339	88	0
+340	88	0
+341	88	0
+342	88	0
+343	88	0
+344	88	0
+345	88	0
+346	88	0
+347	88	0
+348	88	0
+349	88	0
+350	88	0
+351	88	0
+352	88	0
+353	88	0
+354	88	0
+355	88	0
+356	88	0
+357	88	0
+358	88	0
+359	88	0
+360	88	0
+0	88.5	0
+1	88.5	0
+2	88.5	0
+3	88.5	0
+4	88.5	0
+5	88.5	0
+6	88.5	0
+7	88.5	0
+8	88.5	0
+9	88.5	0
+10	88.5	0
+11	88.5	0
+12	88.5	0
+13	88.5	0
+14	88.5	0
+15	88.5	0
+16	88.5	0
+17	88.5	0
+18	88.5	0
+19	88.5	0
+20	88.5	0
+21	88.5	0
+22	88.5	0
+23	88.5	0
+24	88.5	0
+25	88.5	0
+26	88.5	0
+27	88.5	0
+28	88.5	0
+29	88.5	0
+30	88.5	0
+31	88.5	0
+32	88.5	0
+33	88.5	0
+34	88.5	0
+35	88.5	0
+36	88.5	0
+37	88.5	0
+38	88.5	0
+39	88.5	0
+40	88.5	0
+41	88.5	0
+42	88.5	0
+43	88.5	0
+44	88.5	0
+45	88.5	0
+46	88.5	0
+47	88.5	0
+48	88.5	0
+49	88.5	0
+50	88.5	0
+51	88.5	0
+52	88.5	0
+53	88.5	0
+54	88.5	0
+55	88.5	0
+56	88.5	0
+57	88.5	0
+58	88.5	0
+59	88.5	0
+60	88.5	0
+61	88.5	0
+62	88.5	0
+63	88.5	0
+64	88.5	0
+65	88.5	0
+66	88.5	0
+67	88.5	0
+68	88.5	0
+69	88.5	0
+70	88.5	0
+71	88.5	0
+72	88.5	0
+73	88.5	0
+74	88.5	0
+75	88.5	0
+76	88.5	0
+77	88.5	0
+78	88.5	0
+79	88.5	0
+80	88.5	0
+81	88.5	0
+82	88.5	0
+83	88.5	0
+84	88.5	0
+85	88.5	0
+86	88.5	0
+87	88.5	0
+88	88.5	0
+89	88.5	0
+90	88.5	0
+91	88.5	0
+92	88.5	0
+93	88.5	0
+94	88.5	0
+95	88.5	0
+96	88.5	0
+97	88.5	0
+98	88.5	0
+99	88.5	0
+100	88.5	0
+101	88.5	0
+102	88.5	0
+103	88.5	0
+104	88.5	0
+105	88.5	0
+106	88.5	0
+107	88.5	0
+108	88.5	0
+109	88.5	0
+110	88.5	0
+111	88.5	0
+112	88.5	0
+113	88.5	0
+114	88.5	0
+115	88.5	0
+116	88.5	0
+117	88.5	0
+118	88.5	0
+119	88.5	0
+120	88.5	0
+121	88.5	0
+122	88.5	0
+123	88.5	0
+124	88.5	0
+125	88.5	0
+126	88.5	0
+127	88.5	0
+128	88.5	0
+129	88.5	0
+130	88.5	0
+131	88.5	0
+132	88.5	0
+133	88.5	0
+134	88.5	0
+135	88.5	0
+136	88.5	0
+137	88.5	0
+138	88.5	0
+139	88.5	0
+140	88.5	0
+141	88.5	0
+142	88.5	0
+143	88.5	0
+144	88.5	0
+145	88.5	0
+146	88.5	0
+147	88.5	0
+148	88.5	0
+149	88.5	0
+150	88.5	0
+151	88.5	0
+152	88.5	0
+153	88.5	0
+154	88.5	0
+155	88.5	0
+156	88.5	0
+157	88.5	0
+158	88.5	0
+159	88.5	0
+160	88.5	0
+161	88.5	0
+162	88.5	0
+163	88.5	0
+164	88.5	0
+165	88.5	0
+166	88.5	0
+167	88.5	0
+168	88.5	0
+169	88.5	0
+170	88.5	0
+171	88.5	0
+172	88.5	0
+173	88.5	0
+174	88.5	0
+175	88.5	0
+176	88.5	0
+177	88.5	0
+178	88.5	0
+179	88.5	0
+180	88.5	0
+181	88.5	0
+182	88.5	0
+183	88.5	0
+184	88.5	0
+185	88.5	0
+186	88.5	0
+187	88.5	0
+188	88.5	0
+189	88.5	0
+190	88.5	0
+191	88.5	0
+192	88.5	0
+193	88.5	0
+194	88.5	0
+195	88.5	0
+196	88.5	0
+197	88.5	0
+198	88.5	0
+199	88.5	0
+200	88.5	0
+201	88.5	0
+202	88.5	0
+203	88.5	0
+204	88.5	0
+205	88.5	0
+206	88.5	0
+207	88.5	0
+208	88.5	0
+209	88.5	0
+210	88.5	0
+211	88.5	0
+212	88.5	0
+213	88.5	0
+214	88.5	0
+215	88.5	0
+216	88.5	0
+217	88.5	0
+218	88.5	0
+219	88.5	0
+220	88.5	0
+221	88.5	0
+222	88.5	0
+223	88.5	0
+224	88.5	0
+225	88.5	0
+226	88.5	0
+227	88.5	0
+228	88.5	0
+229	88.5	0
+230	88.5	0
+231	88.5	0
+232	88.5	0
+233	88.5	0
+234	88.5	0
+235	88.5	0
+236	88.5	0
+237	88.5	0
+238	88.5	0
+239	88.5	0
+240	88.5	0
+241	88.5	0
+242	88.5	0
+243	88.5	0
+244	88.5	0
+245	88.5	0
+246	88.5	0
+247	88.5	0
+248	88.5	0
+249	88.5	0
+250	88.5	0
+251	88.5	0
+252	88.5	0
+253	88.5	0
+254	88.5	0
+255	88.5	0
+256	88.5	0
+257	88.5	0
+258	88.5	0
+259	88.5	0
+260	88.5	0
+261	88.5	0
+262	88.5	0
+263	88.5	0
+264	88.5	0
+265	88.5	0
+266	88.5	0
+267	88.5	0
+268	88.5	0
+269	88.5	0
+270	88.5	0
+271	88.5	0
+272	88.5	0
+273	88.5	0
+274	88.5	0
+275	88.5	0
+276	88.5	0
+277	88.5	0
+278	88.5	0
+279	88.5	0
+280	88.5	0
+281	88.5	0
+282	88.5	0
+283	88.5	0
+284	88.5	0
+285	88.5	0
+286	88.5	0
+287	88.5	0
+288	88.5	0
+289	88.5	0
+290	88.5	0
+291	88.5	0
+292	88.5	0
+293	88.5	0
+294	88.5	0
+295	88.5	0
+296	88.5	0
+297	88.5	0
+298	88.5	0
+299	88.5	0
+300	88.5	0
+301	88.5	0
+302	88.5	0
+303	88.5	0
+304	88.5	0
+305	88.5	0
+306	88.5	0
+307	88.5	0
+308	88.5	0
+309	88.5	0
+310	88.5	0
+311	88.5	0
+312	88.5	0
+313	88.5	0
+314	88.5	0
+315	88.5	0
+316	88.5	0
+317	88.5	0
+318	88.5	0
+319	88.5	0
+320	88.5	0
+321	88.5	0
+322	88.5	0
+323	88.5	0
+324	88.5	0
+325	88.5	0
+326	88.5	0
+327	88.5	0
+328	88.5	0
+329	88.5	0
+330	88.5	0
+331	88.5	0
+332	88.5	0
+333	88.5	0
+334	88.5	0
+335	88.5	0
+336	88.5	0
+337	88.5	0
+338	88.5	0
+339	88.5	0
+340	88.5	0
+341	88.5	0
+342	88.5	0
+343	88.5	0
+344	88.5	0
+345	88.5	0
+346	88.5	0
+347	88.5	0
+348	88.5	0
+349	88.5	0
+350	88.5	0
+351	88.5	0
+352	88.5	0
+353	88.5	0
+354	88.5	0
+355	88.5	0
+356	88.5	0
+357	88.5	0
+358	88.5	0
+359	88.5	0
+360	88.5	0
+0	89	0
+1	89	0
+2	89	0
+3	89	0
+4	89	0
+5	89	0
+6	89	0
+7	89	0
+8	89	0
+9	89	0
+10	89	0
+11	89	0
+12	89	0
+13	89	0
+14	89	0
+15	89	0
+16	89	0
+17	89	0
+18	89	0
+19	89	0
+20	89	0
+21	89	0
+22	89	0
+23	89	0
+24	89	0
+25	89	0
+26	89	0
+27	89	0
+28	89	0
+29	89	0
+30	89	0
+31	89	0
+32	89	0
+33	89	0
+34	89	0
+35	89	0
+36	89	0
+37	89	0
+38	89	0
+39	89	0
+40	89	0
+41	89	0
+42	89	0
+43	89	0
+44	89	0
+45	89	0
+46	89	0
+47	89	0
+48	89	0
+49	89	0
+50	89	0
+51	89	0
+52	89	0
+53	89	0
+54	89	0
+55	89	0
+56	89	0
+57	89	0
+58	89	0
+59	89	0
+60	89	0
+61	89	0
+62	89	0
+63	89	0
+64	89	0
+65	89	0
+66	89	0
+67	89	0
+68	89	0
+69	89	0
+70	89	0
+71	89	0
+72	89	0
+73	89	0
+74	89	0
+75	89	0
+76	89	0
+77	89	0
+78	89	0
+79	89	0
+80	89	0
+81	89	0
+82	89	0
+83	89	0
+84	89	0
+85	89	0
+86	89	0
+87	89	0
+88	89	0
+89	89	0
+90	89	0
+91	89	0
+92	89	0
+93	89	0
+94	89	0
+95	89	0
+96	89	0
+97	89	0
+98	89	0
+99	89	0
+100	89	0
+101	89	0
+102	89	0
+103	89	0
+104	89	0
+105	89	0
+106	89	0
+107	89	0
+108	89	0
+109	89	0
+110	89	0
+111	89	0
+112	89	0
+113	89	0
+114	89	0
+115	89	0
+116	89	0
+117	89	0
+118	89	0
+119	89	0
+120	89	0
+121	89	0
+122	89	0
+123	89	0
+124	89	0
+125	89	0
+126	89	0
+127	89	0
+128	89	0
+129	89	0
+130	89	0
+131	89	0
+132	89	0
+133	89	0
+134	89	0
+135	89	0
+136	89	0
+137	89	0
+138	89	0
+139	89	0
+140	89	0
+141	89	0
+142	89	0
+143	89	0
+144	89	0
+145	89	0
+146	89	0
+147	89	0
+148	89	0
+149	89	0
+150	89	0
+151	89	0
+152	89	0
+153	89	0
+154	89	0
+155	89	0
+156	89	0
+157	89	0
+158	89	0
+159	89	0
+160	89	0
+161	89	0
+162	89	0
+163	89	0
+164	89	0
+165	89	0
+166	89	0
+167	89	0
+168	89	0
+169	89	0
+170	89	0
+171	89	0
+172	89	0
+173	89	0
+174	89	0
+175	89	0
+176	89	0
+177	89	0
+178	89	0
+179	89	0
+180	89	0
+181	89	0
+182	89	0
+183	89	0
+184	89	0
+185	89	0
+186	89	0
+187	89	0
+188	89	0
+189	89	0
+190	89	0
+191	89	0
+192	89	0
+193	89	0
+194	89	0
+195	89	0
+196	89	0
+197	89	0
+198	89	0
+199	89	0
+200	89	0
+201	89	0
+202	89	0
+203	89	0
+204	89	0
+205	89	0
+206	89	0
+207	89	0
+208	89	0
+209	89	0
+210	89	0
+211	89	0
+212	89	0
+213	89	0
+214	89	0
+215	89	0
+216	89	0
+217	89	0
+218	89	0
+219	89	0
+220	89	0
+221	89	0
+222	89	0
+223	89	0
+224	89	0
+225	89	0
+226	89	0
+227	89	0
+228	89	0
+229	89	0
+230	89	0
+231	89	0
+232	89	0
+233	89	0
+234	89	0
+235	89	0
+236	89	0
+237	89	0
+238	89	0
+239	89	0
+240	89	0
+241	89	0
+242	89	0
+243	89	0
+244	89	0
+245	89	0
+246	89	0
+247	89	0
+248	89	0
+249	89	0
+250	89	0
+251	89	0
+252	89	0
+253	89	0
+254	89	0
+255	89	0
+256	89	0
+257	89	0
+258	89	0
+259	89	0
+260	89	0
+261	89	0
+262	89	0
+263	89	0
+264	89	0
+265	89	0
+266	89	0
+267	89	0
+268	89	0
+269	89	0
+270	89	0
+271	89	0
+272	89	0
+273	89	0
+274	89	0
+275	89	0
+276	89	0
+277	89	0
+278	89	0
+279	89	0
+280	89	0
+281	89	0
+282	89	0
+283	89	0
+284	89	0
+285	89	0
+286	89	0
+287	89	0
+288	89	0
+289	89	0
+290	89	0
+291	89	0
+292	89	0
+293	89	0
+294	89	0
+295	89	0
+296	89	0
+297	89	0
+298	89	0
+299	89	0
+300	89	0
+301	89	0
+302	89	0
+303	89	0
+304	89	0
+305	89	0
+306	89	0
+307	89	0
+308	89	0
+309	89	0
+310	89	0
+311	89	0
+312	89	0
+313	89	0
+314	89	0
+315	89	0
+316	89	0
+317	89	0
+318	89	0
+319	89	0
+320	89	0
+321	89	0
+322	89	0
+323	89	0
+324	89	0
+325	89	0
+326	89	0
+327	89	0
+328	89	0
+329	89	0
+330	89	0
+331	89	0
+332	89	0
+333	89	0
+334	89	0
+335	89	0
+336	89	0
+337	89	0
+338	89	0
+339	89	0
+340	89	0
+341	89	0
+342	89	0
+343	89	0
+344	89	0
+345	89	0
+346	89	0
+347	89	0
+348	89	0
+349	89	0
+350	89	0
+351	89	0
+352	89	0
+353	89	0
+354	89	0
+355	89	0
+356	89	0
+357	89	0
+358	89	0
+359	89	0
+360	89	0
+0	89.5	0
+1	89.5	0
+2	89.5	0
+3	89.5	0
+4	89.5	0
+5	89.5	0
+6	89.5	0
+7	89.5	0
+8	89.5	0
+9	89.5	0
+10	89.5	0
+11	89.5	0
+12	89.5	0
+13	89.5	0
+14	89.5	0
+15	89.5	0
+16	89.5	0
+17	89.5	0
+18	89.5	0
+19	89.5	0
+20	89.5	0
+21	89.5	0
+22	89.5	0
+23	89.5	0
+24	89.5	0
+25	89.5	0
+26	89.5	0
+27	89.5	0
+28	89.5	0
+29	89.5	0
+30	89.5	0
+31	89.5	0
+32	89.5	0
+33	89.5	0
+34	89.5	0
+35	89.5	0
+36	89.5	0
+37	89.5	0
+38	89.5	0
+39	89.5	0
+40	89.5	0
+41	89.5	0
+42	89.5	0
+43	89.5	0
+44	89.5	0
+45	89.5	0
+46	89.5	0
+47	89.5	0
+48	89.5	0
+49	89.5	0
+50	89.5	0
+51	89.5	0
+52	89.5	0
+53	89.5	0
+54	89.5	0
+55	89.5	0
+56	89.5	0
+57	89.5	0
+58	89.5	0
+59	89.5	0
+60	89.5	0
+61	89.5	0
+62	89.5	0
+63	89.5	0
+64	89.5	0
+65	89.5	0
+66	89.5	0
+67	89.5	0
+68	89.5	0
+69	89.5	0
+70	89.5	0
+71	89.5	0
+72	89.5	0
+73	89.5	0
+74	89.5	0
+75	89.5	0
+76	89.5	0
+77	89.5	0
+78	89.5	0
+79	89.5	0
+80	89.5	0
+81	89.5	0
+82	89.5	0
+83	89.5	0
+84	89.5	0
+85	89.5	0
+86	89.5	0
+87	89.5	0
+88	89.5	0
+89	89.5	0
+90	89.5	0
+91	89.5	0
+92	89.5	0
+93	89.5	0
+94	89.5	0
+95	89.5	0
+96	89.5	0
+97	89.5	0
+98	89.5	0
+99	89.5	0
+100	89.5	0
+101	89.5	0
+102	89.5	0
+103	89.5	0
+104	89.5	0
+105	89.5	0
+106	89.5	0
+107	89.5	0
+108	89.5	0
+109	89.5	0
+110	89.5	0
+111	89.5	0
+112	89.5	0
+113	89.5	0
+114	89.5	0
+115	89.5	0
+116	89.5	0
+117	89.5	0
+118	89.5	0
+119	89.5	0
+120	89.5	0
+121	89.5	0
+122	89.5	0
+123	89.5	0
+124	89.5	0
+125	89.5	0
+126	89.5	0
+127	89.5	0
+128	89.5	0
+129	89.5	0
+130	89.5	0
+131	89.5	0
+132	89.5	0
+133	89.5	0
+134	89.5	0
+135	89.5	0
+136	89.5	0
+137	89.5	0
+138	89.5	0
+139	89.5	0
+140	89.5	0
+141	89.5	0
+142	89.5	0
+143	89.5	0
+144	89.5	0
+145	89.5	0
+146	89.5	0
+147	89.5	0
+148	89.5	0
+149	89.5	0
+150	89.5	0
+151	89.5	0
+152	89.5	0
+153	89.5	0
+154	89.5	0
+155	89.5	0
+156	89.5	0
+157	89.5	0
+158	89.5	0
+159	89.5	0
+160	89.5	0
+161	89.5	0
+162	89.5	0
+163	89.5	0
+164	89.5	0
+165	89.5	0
+166	89.5	0
+167	89.5	0
+168	89.5	0
+169	89.5	0
+170	89.5	0
+171	89.5	0
+172	89.5	0
+173	89.5	0
+174	89.5	0
+175	89.5	0
+176	89.5	0
+177	89.5	0
+178	89.5	0
+179	89.5	0
+180	89.5	0
+181	89.5	0
+182	89.5	0
+183	89.5	0
+184	89.5	0
+185	89.5	0
+186	89.5	0
+187	89.5	0
+188	89.5	0
+189	89.5	0
+190	89.5	0
+191	89.5	0
+192	89.5	0
+193	89.5	0
+194	89.5	0
+195	89.5	0
+196	89.5	0
+197	89.5	0
+198	89.5	0
+199	89.5	0
+200	89.5	0
+201	89.5	0
+202	89.5	0
+203	89.5	0
+204	89.5	0
+205	89.5	0
+206	89.5	0
+207	89.5	0
+208	89.5	0
+209	89.5	0
+210	89.5	0
+211	89.5	0
+212	89.5	0
+213	89.5	0
+214	89.5	0
+215	89.5	0
+216	89.5	0
+217	89.5	0
+218	89.5	0
+219	89.5	0
+220	89.5	0
+221	89.5	0
+222	89.5	0
+223	89.5	0
+224	89.5	0
+225	89.5	0
+226	89.5	0
+227	89.5	0
+228	89.5	0
+229	89.5	0
+230	89.5	0
+231	89.5	0
+232	89.5	0
+233	89.5	0
+234	89.5	0
+235	89.5	0
+236	89.5	0
+237	89.5	0
+238	89.5	0
+239	89.5	0
+240	89.5	0
+241	89.5	0
+242	89.5	0
+243	89.5	0
+244	89.5	0
+245	89.5	0
+246	89.5	0
+247	89.5	0
+248	89.5	0
+249	89.5	0
+250	89.5	0
+251	89.5	0
+252	89.5	0
+253	89.5	0
+254	89.5	0
+255	89.5	0
+256	89.5	0
+257	89.5	0
+258	89.5	0
+259	89.5	0
+260	89.5	0
+261	89.5	0
+262	89.5	0
+263	89.5	0
+264	89.5	0
+265	89.5	0
+266	89.5	0
+267	89.5	0
+268	89.5	0
+269	89.5	0
+270	89.5	0
+271	89.5	0
+272	89.5	0
+273	89.5	0
+274	89.5	0
+275	89.5	0
+276	89.5	0
+277	89.5	0
+278	89.5	0
+279	89.5	0
+280	89.5	0
+281	89.5	0
+282	89.5	0
+283	89.5	0
+284	89.5	0
+285	89.5	0
+286	89.5	0
+287	89.5	0
+288	89.5	0
+289	89.5	0
+290	89.5	0
+291	89.5	0
+292	89.5	0
+293	89.5	0
+294	89.5	0
+295	89.5	0
+296	89.5	0
+297	89.5	0
+298	89.5	0
+299	89.5	0
+300	89.5	0
+301	89.5	0
+302	89.5	0
+303	89.5	0
+304	89.5	0
+305	89.5	0
+306	89.5	0
+307	89.5	0
+308	89.5	0
+309	89.5	0
+310	89.5	0
+311	89.5	0
+312	89.5	0
+313	89.5	0
+314	89.5	0
+315	89.5	0
+316	89.5	0
+317	89.5	0
+318	89.5	0
+319	89.5	0
+320	89.5	0
+321	89.5	0
+322	89.5	0
+323	89.5	0
+324	89.5	0
+325	89.5	0
+326	89.5	0
+327	89.5	0
+328	89.5	0
+329	89.5	0
+330	89.5	0
+331	89.5	0
+332	89.5	0
+333	89.5	0
+334	89.5	0
+335	89.5	0
+336	89.5	0
+337	89.5	0
+338	89.5	0
+339	89.5	0
+340	89.5	0
+341	89.5	0
+342	89.5	0
+343	89.5	0
+344	89.5	0
+345	89.5	0
+346	89.5	0
+347	89.5	0
+348	89.5	0
+349	89.5	0
+350	89.5	0
+351	89.5	0
+352	89.5	0
+353	89.5	0
+354	89.5	0
+355	89.5	0
+356	89.5	0
+357	89.5	0
+358	89.5	0
+359	89.5	0
+360	89.5	0
+0	90	0
+1	90	0
+2	90	0
+3	90	0
+4	90	0
+5	90	0
+6	90	0
+7	90	0
+8	90	0
+9	90	0
+10	90	0
+11	90	0
+12	90	0
+13	90	0
+14	90	0
+15	90	0
+16	90	0
+17	90	0
+18	90	0
+19	90	0
+20	90	0
+21	90	0
+22	90	0
+23	90	0
+24	90	0
+25	90	0
+26	90	0
+27	90	0
+28	90	0
+29	90	0
+30	90	0
+31	90	0
+32	90	0
+33	90	0
+34	90	0
+35	90	0
+36	90	0
+37	90	0
+38	90	0
+39	90	0
+40	90	0
+41	90	0
+42	90	0
+43	90	0
+44	90	0
+45	90	0
+46	90	0
+47	90	0
+48	90	0
+49	90	0
+50	90	0
+51	90	0
+52	90	0
+53	90	0
+54	90	0
+55	90	0
+56	90	0
+57	90	0
+58	90	0
+59	90	0
+60	90	0
+61	90	0
+62	90	0
+63	90	0
+64	90	0
+65	90	0
+66	90	0
+67	90	0
+68	90	0
+69	90	0
+70	90	0
+71	90	0
+72	90	0
+73	90	0
+74	90	0
+75	90	0
+76	90	0
+77	90	0
+78	90	0
+79	90	0
+80	90	0
+81	90	0
+82	90	0
+83	90	0
+84	90	0
+85	90	0
+86	90	0
+87	90	0
+88	90	0
+89	90	0
+90	90	0
+91	90	0
+92	90	0
+93	90	0
+94	90	0
+95	90	0
+96	90	0
+97	90	0
+98	90	0
+99	90	0
+100	90	0
+101	90	0
+102	90	0
+103	90	0
+104	90	0
+105	90	0
+106	90	0
+107	90	0
+108	90	0
+109	90	0
+110	90	0
+111	90	0
+112	90	0
+113	90	0
+114	90	0
+115	90	0
+116	90	0
+117	90	0
+118	90	0
+119	90	0
+120	90	0
+121	90	0
+122	90	0
+123	90	0
+124	90	0
+125	90	0
+126	90	0
+127	90	0
+128	90	0
+129	90	0
+130	90	0
+131	90	0
+132	90	0
+133	90	0
+134	90	0
+135	90	0
+136	90	0
+137	90	0
+138	90	0
+139	90	0
+140	90	0
+141	90	0
+142	90	0
+143	90	0
+144	90	0
+145	90	0
+146	90	0
+147	90	0
+148	90	0
+149	90	0
+150	90	0
+151	90	0
+152	90	0
+153	90	0
+154	90	0
+155	90	0
+156	90	0
+157	90	0
+158	90	0
+159	90	0
+160	90	0
+161	90	0
+162	90	0
+163	90	0
+164	90	0
+165	90	0
+166	90	0
+167	90	0
+168	90	0
+169	90	0
+170	90	0
+171	90	0
+172	90	0
+173	90	0
+174	90	0
+175	90	0
+176	90	0
+177	90	0
+178	90	0
+179	90	0
+180	90	0
+181	90	0
+182	90	0
+183	90	0
+184	90	0
+185	90	0
+186	90	0
+187	90	0
+188	90	0
+189	90	0
+190	90	0
+191	90	0
+192	90	0
+193	90	0
+194	90	0
+195	90	0
+196	90	0
+197	90	0
+198	90	0
+199	90	0
+200	90	0
+201	90	0
+202	90	0
+203	90	0
+204	90	0
+205	90	0
+206	90	0
+207	90	0
+208	90	0
+209	90	0
+210	90	0
+211	90	0
+212	90	0
+213	90	0
+214	90	0
+215	90	0
+216	90	0
+217	90	0
+218	90	0
+219	90	0
+220	90	0
+221	90	0
+222	90	0
+223	90	0
+224	90	0
+225	90	0
+226	90	0
+227	90	0
+228	90	0
+229	90	0
+230	90	0
+231	90	0
+232	90	0
+233	90	0
+234	90	0
+235	90	0
+236	90	0
+237	90	0
+238	90	0
+239	90	0
+240	90	0
+241	90	0
+242	90	0
+243	90	0
+244	90	0
+245	90	0
+246	90	0
+247	90	0
+248	90	0
+249	90	0
+250	90	0
+251	90	0
+252	90	0
+253	90	0
+254	90	0
+255	90	0
+256	90	0
+257	90	0
+258	90	0
+259	90	0
+260	90	0
+261	90	0
+262	90	0
+263	90	0
+264	90	0
+265	90	0
+266	90	0
+267	90	0
+268	90	0
+269	90	0
+270	90	0
+271	90	0
+272	90	0
+273	90	0
+274	90	0
+275	90	0
+276	90	0
+277	90	0
+278	90	0
+279	90	0
+280	90	0
+281	90	0
+282	90	0
+283	90	0
+284	90	0
+285	90	0
+286	90	0
+287	90	0
+288	90	0
+289	90	0
+290	90	0
+291	90	0
+292	90	0
+293	90	0
+294	90	0
+295	90	0
+296	90	0
+297	90	0
+298	90	0
+299	90	0
+300	90	0
+301	90	0
+302	90	0
+303	90	0
+304	90	0
+305	90	0
+306	90	0
+307	90	0
+308	90	0
+309	90	0
+310	90	0
+311	90	0
+312	90	0
+313	90	0
+314	90	0
+315	90	0
+316	90	0
+317	90	0
+318	90	0
+319	90	0
+320	90	0
+321	90	0
+322	90	0
+323	90	0
+324	90	0
+325	90	0
+326	90	0
+327	90	0
+328	90	0
+329	90	0
+330	90	0
+331	90	0
+332	90	0
+333	90	0
+334	90	0
+335	90	0
+336	90	0
+337	90	0
+338	90	0
+339	90	0
+340	90	0
+341	90	0
+342	90	0
+343	90	0
+344	90	0
+345	90	0
+346	90	0
+347	90	0
+348	90	0
+349	90	0
+350	90	0
+351	90	0
+352	90	0
+353	90	0
+354	90	0
+355	90	0
+356	90	0
+357	90	0
+358	90	0
+359	90	0
+360	90	0
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/GIS_delH_trend.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/GIS_delH_trend.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/GIS_delH_trend.txt	(revision 27955)
@@ -0,0 +1,130321 @@
+0	-90	0
+1	-90	0
+2	-90	0
+3	-90	0
+4	-90	0
+5	-90	0
+6	-90	0
+7	-90	0
+8	-90	0
+9	-90	0
+10	-90	0
+11	-90	0
+12	-90	0
+13	-90	0
+14	-90	0
+15	-90	0
+16	-90	0
+17	-90	0
+18	-90	0
+19	-90	0
+20	-90	0
+21	-90	0
+22	-90	0
+23	-90	0
+24	-90	0
+25	-90	0
+26	-90	0
+27	-90	0
+28	-90	0
+29	-90	0
+30	-90	0
+31	-90	0
+32	-90	0
+33	-90	0
+34	-90	0
+35	-90	0
+36	-90	0
+37	-90	0
+38	-90	0
+39	-90	0
+40	-90	0
+41	-90	0
+42	-90	0
+43	-90	0
+44	-90	0
+45	-90	0
+46	-90	0
+47	-90	0
+48	-90	0
+49	-90	0
+50	-90	0
+51	-90	0
+52	-90	0
+53	-90	0
+54	-90	0
+55	-90	0
+56	-90	0
+57	-90	0
+58	-90	0
+59	-90	0
+60	-90	0
+61	-90	0
+62	-90	0
+63	-90	0
+64	-90	0
+65	-90	0
+66	-90	0
+67	-90	0
+68	-90	0
+69	-90	0
+70	-90	0
+71	-90	0
+72	-90	0
+73	-90	0
+74	-90	0
+75	-90	0
+76	-90	0
+77	-90	0
+78	-90	0
+79	-90	0
+80	-90	0
+81	-90	0
+82	-90	0
+83	-90	0
+84	-90	0
+85	-90	0
+86	-90	0
+87	-90	0
+88	-90	0
+89	-90	0
+90	-90	0
+91	-90	0
+92	-90	0
+93	-90	0
+94	-90	0
+95	-90	0
+96	-90	0
+97	-90	0
+98	-90	0
+99	-90	0
+100	-90	0
+101	-90	0
+102	-90	0
+103	-90	0
+104	-90	0
+105	-90	0
+106	-90	0
+107	-90	0
+108	-90	0
+109	-90	0
+110	-90	0
+111	-90	0
+112	-90	0
+113	-90	0
+114	-90	0
+115	-90	0
+116	-90	0
+117	-90	0
+118	-90	0
+119	-90	0
+120	-90	0
+121	-90	0
+122	-90	0
+123	-90	0
+124	-90	0
+125	-90	0
+126	-90	0
+127	-90	0
+128	-90	0
+129	-90	0
+130	-90	0
+131	-90	0
+132	-90	0
+133	-90	0
+134	-90	0
+135	-90	0
+136	-90	0
+137	-90	0
+138	-90	0
+139	-90	0
+140	-90	0
+141	-90	0
+142	-90	0
+143	-90	0
+144	-90	0
+145	-90	0
+146	-90	0
+147	-90	0
+148	-90	0
+149	-90	0
+150	-90	0
+151	-90	0
+152	-90	0
+153	-90	0
+154	-90	0
+155	-90	0
+156	-90	0
+157	-90	0
+158	-90	0
+159	-90	0
+160	-90	0
+161	-90	0
+162	-90	0
+163	-90	0
+164	-90	0
+165	-90	0
+166	-90	0
+167	-90	0
+168	-90	0
+169	-90	0
+170	-90	0
+171	-90	0
+172	-90	0
+173	-90	0
+174	-90	0
+175	-90	0
+176	-90	0
+177	-90	0
+178	-90	0
+179	-90	0
+180	-90	0
+181	-90	0
+182	-90	0
+183	-90	0
+184	-90	0
+185	-90	0
+186	-90	0
+187	-90	0
+188	-90	0
+189	-90	0
+190	-90	0
+191	-90	0
+192	-90	0
+193	-90	0
+194	-90	0
+195	-90	0
+196	-90	0
+197	-90	0
+198	-90	0
+199	-90	0
+200	-90	0
+201	-90	0
+202	-90	0
+203	-90	0
+204	-90	0
+205	-90	0
+206	-90	0
+207	-90	0
+208	-90	0
+209	-90	0
+210	-90	0
+211	-90	0
+212	-90	0
+213	-90	0
+214	-90	0
+215	-90	0
+216	-90	0
+217	-90	0
+218	-90	0
+219	-90	0
+220	-90	0
+221	-90	0
+222	-90	0
+223	-90	0
+224	-90	0
+225	-90	0
+226	-90	0
+227	-90	0
+228	-90	0
+229	-90	0
+230	-90	0
+231	-90	0
+232	-90	0
+233	-90	0
+234	-90	0
+235	-90	0
+236	-90	0
+237	-90	0
+238	-90	0
+239	-90	0
+240	-90	0
+241	-90	0
+242	-90	0
+243	-90	0
+244	-90	0
+245	-90	0
+246	-90	0
+247	-90	0
+248	-90	0
+249	-90	0
+250	-90	0
+251	-90	0
+252	-90	0
+253	-90	0
+254	-90	0
+255	-90	0
+256	-90	0
+257	-90	0
+258	-90	0
+259	-90	0
+260	-90	0
+261	-90	0
+262	-90	0
+263	-90	0
+264	-90	0
+265	-90	0
+266	-90	0
+267	-90	0
+268	-90	0
+269	-90	0
+270	-90	0
+271	-90	0
+272	-90	0
+273	-90	0
+274	-90	0
+275	-90	0
+276	-90	0
+277	-90	0
+278	-90	0
+279	-90	0
+280	-90	0
+281	-90	0
+282	-90	0
+283	-90	0
+284	-90	0
+285	-90	0
+286	-90	0
+287	-90	0
+288	-90	0
+289	-90	0
+290	-90	0
+291	-90	0
+292	-90	0
+293	-90	0
+294	-90	0
+295	-90	0
+296	-90	0
+297	-90	0
+298	-90	0
+299	-90	0
+300	-90	0
+301	-90	0
+302	-90	0
+303	-90	0
+304	-90	0
+305	-90	0
+306	-90	0
+307	-90	0
+308	-90	0
+309	-90	0
+310	-90	0
+311	-90	0
+312	-90	0
+313	-90	0
+314	-90	0
+315	-90	0
+316	-90	0
+317	-90	0
+318	-90	0
+319	-90	0
+320	-90	0
+321	-90	0
+322	-90	0
+323	-90	0
+324	-90	0
+325	-90	0
+326	-90	0
+327	-90	0
+328	-90	0
+329	-90	0
+330	-90	0
+331	-90	0
+332	-90	0
+333	-90	0
+334	-90	0
+335	-90	0
+336	-90	0
+337	-90	0
+338	-90	0
+339	-90	0
+340	-90	0
+341	-90	0
+342	-90	0
+343	-90	0
+344	-90	0
+345	-90	0
+346	-90	0
+347	-90	0
+348	-90	0
+349	-90	0
+350	-90	0
+351	-90	0
+352	-90	0
+353	-90	0
+354	-90	0
+355	-90	0
+356	-90	0
+357	-90	0
+358	-90	0
+359	-90	0
+360	-90	0
+0	-89.5	0
+1	-89.5	0
+2	-89.5	0
+3	-89.5	0
+4	-89.5	0
+5	-89.5	0
+6	-89.5	0
+7	-89.5	0
+8	-89.5	0
+9	-89.5	0
+10	-89.5	0
+11	-89.5	0
+12	-89.5	0
+13	-89.5	0
+14	-89.5	0
+15	-89.5	0
+16	-89.5	0
+17	-89.5	0
+18	-89.5	0
+19	-89.5	0
+20	-89.5	0
+21	-89.5	0
+22	-89.5	0
+23	-89.5	0
+24	-89.5	0
+25	-89.5	0
+26	-89.5	0
+27	-89.5	0
+28	-89.5	0
+29	-89.5	0
+30	-89.5	0
+31	-89.5	0
+32	-89.5	0
+33	-89.5	0
+34	-89.5	0
+35	-89.5	0
+36	-89.5	0
+37	-89.5	0
+38	-89.5	0
+39	-89.5	0
+40	-89.5	0
+41	-89.5	0
+42	-89.5	0
+43	-89.5	0
+44	-89.5	0
+45	-89.5	0
+46	-89.5	0
+47	-89.5	0
+48	-89.5	0
+49	-89.5	0
+50	-89.5	0
+51	-89.5	0
+52	-89.5	0
+53	-89.5	0
+54	-89.5	0
+55	-89.5	0
+56	-89.5	0
+57	-89.5	0
+58	-89.5	0
+59	-89.5	0
+60	-89.5	0
+61	-89.5	0
+62	-89.5	0
+63	-89.5	0
+64	-89.5	0
+65	-89.5	0
+66	-89.5	0
+67	-89.5	0
+68	-89.5	0
+69	-89.5	0
+70	-89.5	0
+71	-89.5	0
+72	-89.5	0
+73	-89.5	0
+74	-89.5	0
+75	-89.5	0
+76	-89.5	0
+77	-89.5	0
+78	-89.5	0
+79	-89.5	0
+80	-89.5	0
+81	-89.5	0
+82	-89.5	0
+83	-89.5	0
+84	-89.5	0
+85	-89.5	0
+86	-89.5	0
+87	-89.5	0
+88	-89.5	0
+89	-89.5	0
+90	-89.5	0
+91	-89.5	0
+92	-89.5	0
+93	-89.5	0
+94	-89.5	0
+95	-89.5	0
+96	-89.5	0
+97	-89.5	0
+98	-89.5	0
+99	-89.5	0
+100	-89.5	0
+101	-89.5	0
+102	-89.5	0
+103	-89.5	0
+104	-89.5	0
+105	-89.5	0
+106	-89.5	0
+107	-89.5	0
+108	-89.5	0
+109	-89.5	0
+110	-89.5	0
+111	-89.5	0
+112	-89.5	0
+113	-89.5	0
+114	-89.5	0
+115	-89.5	0
+116	-89.5	0
+117	-89.5	0
+118	-89.5	0
+119	-89.5	0
+120	-89.5	0
+121	-89.5	0
+122	-89.5	0
+123	-89.5	0
+124	-89.5	0
+125	-89.5	0
+126	-89.5	0
+127	-89.5	0
+128	-89.5	0
+129	-89.5	0
+130	-89.5	0
+131	-89.5	0
+132	-89.5	0
+133	-89.5	0
+134	-89.5	0
+135	-89.5	0
+136	-89.5	0
+137	-89.5	0
+138	-89.5	0
+139	-89.5	0
+140	-89.5	0
+141	-89.5	0
+142	-89.5	0
+143	-89.5	0
+144	-89.5	0
+145	-89.5	0
+146	-89.5	0
+147	-89.5	0
+148	-89.5	0
+149	-89.5	0
+150	-89.5	0
+151	-89.5	0
+152	-89.5	0
+153	-89.5	0
+154	-89.5	0
+155	-89.5	0
+156	-89.5	0
+157	-89.5	0
+158	-89.5	0
+159	-89.5	0
+160	-89.5	0
+161	-89.5	0
+162	-89.5	0
+163	-89.5	0
+164	-89.5	0
+165	-89.5	0
+166	-89.5	0
+167	-89.5	0
+168	-89.5	0
+169	-89.5	0
+170	-89.5	0
+171	-89.5	0
+172	-89.5	0
+173	-89.5	0
+174	-89.5	0
+175	-89.5	0
+176	-89.5	0
+177	-89.5	0
+178	-89.5	0
+179	-89.5	0
+180	-89.5	0
+181	-89.5	0
+182	-89.5	0
+183	-89.5	0
+184	-89.5	0
+185	-89.5	0
+186	-89.5	0
+187	-89.5	0
+188	-89.5	0
+189	-89.5	0
+190	-89.5	0
+191	-89.5	0
+192	-89.5	0
+193	-89.5	0
+194	-89.5	0
+195	-89.5	0
+196	-89.5	0
+197	-89.5	0
+198	-89.5	0
+199	-89.5	0
+200	-89.5	0
+201	-89.5	0
+202	-89.5	0
+203	-89.5	0
+204	-89.5	0
+205	-89.5	0
+206	-89.5	0
+207	-89.5	0
+208	-89.5	0
+209	-89.5	0
+210	-89.5	0
+211	-89.5	0
+212	-89.5	0
+213	-89.5	0
+214	-89.5	0
+215	-89.5	0
+216	-89.5	0
+217	-89.5	0
+218	-89.5	0
+219	-89.5	0
+220	-89.5	0
+221	-89.5	0
+222	-89.5	0
+223	-89.5	0
+224	-89.5	0
+225	-89.5	0
+226	-89.5	0
+227	-89.5	0
+228	-89.5	0
+229	-89.5	0
+230	-89.5	0
+231	-89.5	0
+232	-89.5	0
+233	-89.5	0
+234	-89.5	0
+235	-89.5	0
+236	-89.5	0
+237	-89.5	0
+238	-89.5	0
+239	-89.5	0
+240	-89.5	0
+241	-89.5	0
+242	-89.5	0
+243	-89.5	0
+244	-89.5	0
+245	-89.5	0
+246	-89.5	0
+247	-89.5	0
+248	-89.5	0
+249	-89.5	0
+250	-89.5	0
+251	-89.5	0
+252	-89.5	0
+253	-89.5	0
+254	-89.5	0
+255	-89.5	0
+256	-89.5	0
+257	-89.5	0
+258	-89.5	0
+259	-89.5	0
+260	-89.5	0
+261	-89.5	0
+262	-89.5	0
+263	-89.5	0
+264	-89.5	0
+265	-89.5	0
+266	-89.5	0
+267	-89.5	0
+268	-89.5	0
+269	-89.5	0
+270	-89.5	0
+271	-89.5	0
+272	-89.5	0
+273	-89.5	0
+274	-89.5	0
+275	-89.5	0
+276	-89.5	0
+277	-89.5	0
+278	-89.5	0
+279	-89.5	0
+280	-89.5	0
+281	-89.5	0
+282	-89.5	0
+283	-89.5	0
+284	-89.5	0
+285	-89.5	0
+286	-89.5	0
+287	-89.5	0
+288	-89.5	0
+289	-89.5	0
+290	-89.5	0
+291	-89.5	0
+292	-89.5	0
+293	-89.5	0
+294	-89.5	0
+295	-89.5	0
+296	-89.5	0
+297	-89.5	0
+298	-89.5	0
+299	-89.5	0
+300	-89.5	0
+301	-89.5	0
+302	-89.5	0
+303	-89.5	0
+304	-89.5	0
+305	-89.5	0
+306	-89.5	0
+307	-89.5	0
+308	-89.5	0
+309	-89.5	0
+310	-89.5	0
+311	-89.5	0
+312	-89.5	0
+313	-89.5	0
+314	-89.5	0
+315	-89.5	0
+316	-89.5	0
+317	-89.5	0
+318	-89.5	0
+319	-89.5	0
+320	-89.5	0
+321	-89.5	0
+322	-89.5	0
+323	-89.5	0
+324	-89.5	0
+325	-89.5	0
+326	-89.5	0
+327	-89.5	0
+328	-89.5	0
+329	-89.5	0
+330	-89.5	0
+331	-89.5	0
+332	-89.5	0
+333	-89.5	0
+334	-89.5	0
+335	-89.5	0
+336	-89.5	0
+337	-89.5	0
+338	-89.5	0
+339	-89.5	0
+340	-89.5	0
+341	-89.5	0
+342	-89.5	0
+343	-89.5	0
+344	-89.5	0
+345	-89.5	0
+346	-89.5	0
+347	-89.5	0
+348	-89.5	0
+349	-89.5	0
+350	-89.5	0
+351	-89.5	0
+352	-89.5	0
+353	-89.5	0
+354	-89.5	0
+355	-89.5	0
+356	-89.5	0
+357	-89.5	0
+358	-89.5	0
+359	-89.5	0
+360	-89.5	0
+0	-89	0
+1	-89	0
+2	-89	0
+3	-89	0
+4	-89	0
+5	-89	0
+6	-89	0
+7	-89	0
+8	-89	0
+9	-89	0
+10	-89	0
+11	-89	0
+12	-89	0
+13	-89	0
+14	-89	0
+15	-89	0
+16	-89	0
+17	-89	0
+18	-89	0
+19	-89	0
+20	-89	0
+21	-89	0
+22	-89	0
+23	-89	0
+24	-89	0
+25	-89	0
+26	-89	0
+27	-89	0
+28	-89	0
+29	-89	0
+30	-89	0
+31	-89	0
+32	-89	0
+33	-89	0
+34	-89	0
+35	-89	0
+36	-89	0
+37	-89	0
+38	-89	0
+39	-89	0
+40	-89	0
+41	-89	0
+42	-89	0
+43	-89	0
+44	-89	0
+45	-89	0
+46	-89	0
+47	-89	0
+48	-89	0
+49	-89	0
+50	-89	0
+51	-89	0
+52	-89	0
+53	-89	0
+54	-89	0
+55	-89	0
+56	-89	0
+57	-89	0
+58	-89	0
+59	-89	0
+60	-89	0
+61	-89	0
+62	-89	0
+63	-89	0
+64	-89	0
+65	-89	0
+66	-89	0
+67	-89	0
+68	-89	0
+69	-89	0
+70	-89	0
+71	-89	0
+72	-89	0
+73	-89	0
+74	-89	0
+75	-89	0
+76	-89	0
+77	-89	0
+78	-89	0
+79	-89	0
+80	-89	0
+81	-89	0
+82	-89	0
+83	-89	0
+84	-89	0
+85	-89	0
+86	-89	0
+87	-89	0
+88	-89	0
+89	-89	0
+90	-89	0
+91	-89	0
+92	-89	0
+93	-89	0
+94	-89	0
+95	-89	0
+96	-89	0
+97	-89	0
+98	-89	0
+99	-89	0
+100	-89	0
+101	-89	0
+102	-89	0
+103	-89	0
+104	-89	0
+105	-89	0
+106	-89	0
+107	-89	0
+108	-89	0
+109	-89	0
+110	-89	0
+111	-89	0
+112	-89	0
+113	-89	0
+114	-89	0
+115	-89	0
+116	-89	0
+117	-89	0
+118	-89	0
+119	-89	0
+120	-89	0
+121	-89	0
+122	-89	0
+123	-89	0
+124	-89	0
+125	-89	0
+126	-89	0
+127	-89	0
+128	-89	0
+129	-89	0
+130	-89	0
+131	-89	0
+132	-89	0
+133	-89	0
+134	-89	0
+135	-89	0
+136	-89	0
+137	-89	0
+138	-89	0
+139	-89	0
+140	-89	0
+141	-89	0
+142	-89	0
+143	-89	0
+144	-89	0
+145	-89	0
+146	-89	0
+147	-89	0
+148	-89	0
+149	-89	0
+150	-89	0
+151	-89	0
+152	-89	0
+153	-89	0
+154	-89	0
+155	-89	0
+156	-89	0
+157	-89	0
+158	-89	0
+159	-89	0
+160	-89	0
+161	-89	0
+162	-89	0
+163	-89	0
+164	-89	0
+165	-89	0
+166	-89	0
+167	-89	0
+168	-89	0
+169	-89	0
+170	-89	0
+171	-89	0
+172	-89	0
+173	-89	0
+174	-89	0
+175	-89	0
+176	-89	0
+177	-89	0
+178	-89	0
+179	-89	0
+180	-89	0
+181	-89	0
+182	-89	0
+183	-89	0
+184	-89	0
+185	-89	0
+186	-89	0
+187	-89	0
+188	-89	0
+189	-89	0
+190	-89	0
+191	-89	0
+192	-89	0
+193	-89	0
+194	-89	0
+195	-89	0
+196	-89	0
+197	-89	0
+198	-89	0
+199	-89	0
+200	-89	0
+201	-89	0
+202	-89	0
+203	-89	0
+204	-89	0
+205	-89	0
+206	-89	0
+207	-89	0
+208	-89	0
+209	-89	0
+210	-89	0
+211	-89	0
+212	-89	0
+213	-89	0
+214	-89	0
+215	-89	0
+216	-89	0
+217	-89	0
+218	-89	0
+219	-89	0
+220	-89	0
+221	-89	0
+222	-89	0
+223	-89	0
+224	-89	0
+225	-89	0
+226	-89	0
+227	-89	0
+228	-89	0
+229	-89	0
+230	-89	0
+231	-89	0
+232	-89	0
+233	-89	0
+234	-89	0
+235	-89	0
+236	-89	0
+237	-89	0
+238	-89	0
+239	-89	0
+240	-89	0
+241	-89	0
+242	-89	0
+243	-89	0
+244	-89	0
+245	-89	0
+246	-89	0
+247	-89	0
+248	-89	0
+249	-89	0
+250	-89	0
+251	-89	0
+252	-89	0
+253	-89	0
+254	-89	0
+255	-89	0
+256	-89	0
+257	-89	0
+258	-89	0
+259	-89	0
+260	-89	0
+261	-89	0
+262	-89	0
+263	-89	0
+264	-89	0
+265	-89	0
+266	-89	0
+267	-89	0
+268	-89	0
+269	-89	0
+270	-89	0
+271	-89	0
+272	-89	0
+273	-89	0
+274	-89	0
+275	-89	0
+276	-89	0
+277	-89	0
+278	-89	0
+279	-89	0
+280	-89	0
+281	-89	0
+282	-89	0
+283	-89	0
+284	-89	0
+285	-89	0
+286	-89	0
+287	-89	0
+288	-89	0
+289	-89	0
+290	-89	0
+291	-89	0
+292	-89	0
+293	-89	0
+294	-89	0
+295	-89	0
+296	-89	0
+297	-89	0
+298	-89	0
+299	-89	0
+300	-89	0
+301	-89	0
+302	-89	0
+303	-89	0
+304	-89	0
+305	-89	0
+306	-89	0
+307	-89	0
+308	-89	0
+309	-89	0
+310	-89	0
+311	-89	0
+312	-89	0
+313	-89	0
+314	-89	0
+315	-89	0
+316	-89	0
+317	-89	0
+318	-89	0
+319	-89	0
+320	-89	0
+321	-89	0
+322	-89	0
+323	-89	0
+324	-89	0
+325	-89	0
+326	-89	0
+327	-89	0
+328	-89	0
+329	-89	0
+330	-89	0
+331	-89	0
+332	-89	0
+333	-89	0
+334	-89	0
+335	-89	0
+336	-89	0
+337	-89	0
+338	-89	0
+339	-89	0
+340	-89	0
+341	-89	0
+342	-89	0
+343	-89	0
+344	-89	0
+345	-89	0
+346	-89	0
+347	-89	0
+348	-89	0
+349	-89	0
+350	-89	0
+351	-89	0
+352	-89	0
+353	-89	0
+354	-89	0
+355	-89	0
+356	-89	0
+357	-89	0
+358	-89	0
+359	-89	0
+360	-89	0
+0	-88.5	0
+1	-88.5	0
+2	-88.5	0
+3	-88.5	0
+4	-88.5	0
+5	-88.5	0
+6	-88.5	0
+7	-88.5	0
+8	-88.5	0
+9	-88.5	0
+10	-88.5	0
+11	-88.5	0
+12	-88.5	0
+13	-88.5	0
+14	-88.5	0
+15	-88.5	0
+16	-88.5	0
+17	-88.5	0
+18	-88.5	0
+19	-88.5	0
+20	-88.5	0
+21	-88.5	0
+22	-88.5	0
+23	-88.5	0
+24	-88.5	0
+25	-88.5	0
+26	-88.5	0
+27	-88.5	0
+28	-88.5	0
+29	-88.5	0
+30	-88.5	0
+31	-88.5	0
+32	-88.5	0
+33	-88.5	0
+34	-88.5	0
+35	-88.5	0
+36	-88.5	0
+37	-88.5	0
+38	-88.5	0
+39	-88.5	0
+40	-88.5	0
+41	-88.5	0
+42	-88.5	0
+43	-88.5	0
+44	-88.5	0
+45	-88.5	0
+46	-88.5	0
+47	-88.5	0
+48	-88.5	0
+49	-88.5	0
+50	-88.5	0
+51	-88.5	0
+52	-88.5	0
+53	-88.5	0
+54	-88.5	0
+55	-88.5	0
+56	-88.5	0
+57	-88.5	0
+58	-88.5	0
+59	-88.5	0
+60	-88.5	0
+61	-88.5	0
+62	-88.5	0
+63	-88.5	0
+64	-88.5	0
+65	-88.5	0
+66	-88.5	0
+67	-88.5	0
+68	-88.5	0
+69	-88.5	0
+70	-88.5	0
+71	-88.5	0
+72	-88.5	0
+73	-88.5	0
+74	-88.5	0
+75	-88.5	0
+76	-88.5	0
+77	-88.5	0
+78	-88.5	0
+79	-88.5	0
+80	-88.5	0
+81	-88.5	0
+82	-88.5	0
+83	-88.5	0
+84	-88.5	0
+85	-88.5	0
+86	-88.5	0
+87	-88.5	0
+88	-88.5	0
+89	-88.5	0
+90	-88.5	0
+91	-88.5	0
+92	-88.5	0
+93	-88.5	0
+94	-88.5	0
+95	-88.5	0
+96	-88.5	0
+97	-88.5	0
+98	-88.5	0
+99	-88.5	0
+100	-88.5	0
+101	-88.5	0
+102	-88.5	0
+103	-88.5	0
+104	-88.5	0
+105	-88.5	0
+106	-88.5	0
+107	-88.5	0
+108	-88.5	0
+109	-88.5	0
+110	-88.5	0
+111	-88.5	0
+112	-88.5	0
+113	-88.5	0
+114	-88.5	0
+115	-88.5	0
+116	-88.5	0
+117	-88.5	0
+118	-88.5	0
+119	-88.5	0
+120	-88.5	0
+121	-88.5	0
+122	-88.5	0
+123	-88.5	0
+124	-88.5	0
+125	-88.5	0
+126	-88.5	0
+127	-88.5	0
+128	-88.5	0
+129	-88.5	0
+130	-88.5	0
+131	-88.5	0
+132	-88.5	0
+133	-88.5	0
+134	-88.5	0
+135	-88.5	0
+136	-88.5	0
+137	-88.5	0
+138	-88.5	0
+139	-88.5	0
+140	-88.5	0
+141	-88.5	0
+142	-88.5	0
+143	-88.5	0
+144	-88.5	0
+145	-88.5	0
+146	-88.5	0
+147	-88.5	0
+148	-88.5	0
+149	-88.5	0
+150	-88.5	0
+151	-88.5	0
+152	-88.5	0
+153	-88.5	0
+154	-88.5	0
+155	-88.5	0
+156	-88.5	0
+157	-88.5	0
+158	-88.5	0
+159	-88.5	0
+160	-88.5	0
+161	-88.5	0
+162	-88.5	0
+163	-88.5	0
+164	-88.5	0
+165	-88.5	0
+166	-88.5	0
+167	-88.5	0
+168	-88.5	0
+169	-88.5	0
+170	-88.5	0
+171	-88.5	0
+172	-88.5	0
+173	-88.5	0
+174	-88.5	0
+175	-88.5	0
+176	-88.5	0
+177	-88.5	0
+178	-88.5	0
+179	-88.5	0
+180	-88.5	0
+181	-88.5	0
+182	-88.5	0
+183	-88.5	0
+184	-88.5	0
+185	-88.5	0
+186	-88.5	0
+187	-88.5	0
+188	-88.5	0
+189	-88.5	0
+190	-88.5	0
+191	-88.5	0
+192	-88.5	0
+193	-88.5	0
+194	-88.5	0
+195	-88.5	0
+196	-88.5	0
+197	-88.5	0
+198	-88.5	0
+199	-88.5	0
+200	-88.5	0
+201	-88.5	0
+202	-88.5	0
+203	-88.5	0
+204	-88.5	0
+205	-88.5	0
+206	-88.5	0
+207	-88.5	0
+208	-88.5	0
+209	-88.5	0
+210	-88.5	0
+211	-88.5	0
+212	-88.5	0
+213	-88.5	0
+214	-88.5	0
+215	-88.5	0
+216	-88.5	0
+217	-88.5	0
+218	-88.5	0
+219	-88.5	0
+220	-88.5	0
+221	-88.5	0
+222	-88.5	0
+223	-88.5	0
+224	-88.5	0
+225	-88.5	0
+226	-88.5	0
+227	-88.5	0
+228	-88.5	0
+229	-88.5	0
+230	-88.5	0
+231	-88.5	0
+232	-88.5	0
+233	-88.5	0
+234	-88.5	0
+235	-88.5	0
+236	-88.5	0
+237	-88.5	0
+238	-88.5	0
+239	-88.5	0
+240	-88.5	0
+241	-88.5	0
+242	-88.5	0
+243	-88.5	0
+244	-88.5	0
+245	-88.5	0
+246	-88.5	0
+247	-88.5	0
+248	-88.5	0
+249	-88.5	0
+250	-88.5	0
+251	-88.5	0
+252	-88.5	0
+253	-88.5	0
+254	-88.5	0
+255	-88.5	0
+256	-88.5	0
+257	-88.5	0
+258	-88.5	0
+259	-88.5	0
+260	-88.5	0
+261	-88.5	0
+262	-88.5	0
+263	-88.5	0
+264	-88.5	0
+265	-88.5	0
+266	-88.5	0
+267	-88.5	0
+268	-88.5	0
+269	-88.5	0
+270	-88.5	0
+271	-88.5	0
+272	-88.5	0
+273	-88.5	0
+274	-88.5	0
+275	-88.5	0
+276	-88.5	0
+277	-88.5	0
+278	-88.5	0
+279	-88.5	0
+280	-88.5	0
+281	-88.5	0
+282	-88.5	0
+283	-88.5	0
+284	-88.5	0
+285	-88.5	0
+286	-88.5	0
+287	-88.5	0
+288	-88.5	0
+289	-88.5	0
+290	-88.5	0
+291	-88.5	0
+292	-88.5	0
+293	-88.5	0
+294	-88.5	0
+295	-88.5	0
+296	-88.5	0
+297	-88.5	0
+298	-88.5	0
+299	-88.5	0
+300	-88.5	0
+301	-88.5	0
+302	-88.5	0
+303	-88.5	0
+304	-88.5	0
+305	-88.5	0
+306	-88.5	0
+307	-88.5	0
+308	-88.5	0
+309	-88.5	0
+310	-88.5	0
+311	-88.5	0
+312	-88.5	0
+313	-88.5	0
+314	-88.5	0
+315	-88.5	0
+316	-88.5	0
+317	-88.5	0
+318	-88.5	0
+319	-88.5	0
+320	-88.5	0
+321	-88.5	0
+322	-88.5	0
+323	-88.5	0
+324	-88.5	0
+325	-88.5	0
+326	-88.5	0
+327	-88.5	0
+328	-88.5	0
+329	-88.5	0
+330	-88.5	0
+331	-88.5	0
+332	-88.5	0
+333	-88.5	0
+334	-88.5	0
+335	-88.5	0
+336	-88.5	0
+337	-88.5	0
+338	-88.5	0
+339	-88.5	0
+340	-88.5	0
+341	-88.5	0
+342	-88.5	0
+343	-88.5	0
+344	-88.5	0
+345	-88.5	0
+346	-88.5	0
+347	-88.5	0
+348	-88.5	0
+349	-88.5	0
+350	-88.5	0
+351	-88.5	0
+352	-88.5	0
+353	-88.5	0
+354	-88.5	0
+355	-88.5	0
+356	-88.5	0
+357	-88.5	0
+358	-88.5	0
+359	-88.5	0
+360	-88.5	0
+0	-88	0
+1	-88	0
+2	-88	0
+3	-88	0
+4	-88	0
+5	-88	0
+6	-88	0
+7	-88	0
+8	-88	0
+9	-88	0
+10	-88	0
+11	-88	0
+12	-88	0
+13	-88	0
+14	-88	0
+15	-88	0
+16	-88	0
+17	-88	0
+18	-88	0
+19	-88	0
+20	-88	0
+21	-88	0
+22	-88	0
+23	-88	0
+24	-88	0
+25	-88	0
+26	-88	0
+27	-88	0
+28	-88	0
+29	-88	0
+30	-88	0
+31	-88	0
+32	-88	0
+33	-88	0
+34	-88	0
+35	-88	0
+36	-88	0
+37	-88	0
+38	-88	0
+39	-88	0
+40	-88	0
+41	-88	0
+42	-88	0
+43	-88	0
+44	-88	0
+45	-88	0
+46	-88	0
+47	-88	0
+48	-88	0
+49	-88	0
+50	-88	0
+51	-88	0
+52	-88	0
+53	-88	0
+54	-88	0
+55	-88	0
+56	-88	0
+57	-88	0
+58	-88	0
+59	-88	0
+60	-88	0
+61	-88	0
+62	-88	0
+63	-88	0
+64	-88	0
+65	-88	0
+66	-88	0
+67	-88	0
+68	-88	0
+69	-88	0
+70	-88	0
+71	-88	0
+72	-88	0
+73	-88	0
+74	-88	0
+75	-88	0
+76	-88	0
+77	-88	0
+78	-88	0
+79	-88	0
+80	-88	0
+81	-88	0
+82	-88	0
+83	-88	0
+84	-88	0
+85	-88	0
+86	-88	0
+87	-88	0
+88	-88	0
+89	-88	0
+90	-88	0
+91	-88	0
+92	-88	0
+93	-88	0
+94	-88	0
+95	-88	0
+96	-88	0
+97	-88	0
+98	-88	0
+99	-88	0
+100	-88	0
+101	-88	0
+102	-88	0
+103	-88	0
+104	-88	0
+105	-88	0
+106	-88	0
+107	-88	0
+108	-88	0
+109	-88	0
+110	-88	0
+111	-88	0
+112	-88	0
+113	-88	0
+114	-88	0
+115	-88	0
+116	-88	0
+117	-88	0
+118	-88	0
+119	-88	0
+120	-88	0
+121	-88	0
+122	-88	0
+123	-88	0
+124	-88	0
+125	-88	0
+126	-88	0
+127	-88	0
+128	-88	0
+129	-88	0
+130	-88	0
+131	-88	0
+132	-88	0
+133	-88	0
+134	-88	0
+135	-88	0
+136	-88	0
+137	-88	0
+138	-88	0
+139	-88	0
+140	-88	0
+141	-88	0
+142	-88	0
+143	-88	0
+144	-88	0
+145	-88	0
+146	-88	0
+147	-88	0
+148	-88	0
+149	-88	0
+150	-88	0
+151	-88	0
+152	-88	0
+153	-88	0
+154	-88	0
+155	-88	0
+156	-88	0
+157	-88	0
+158	-88	0
+159	-88	0
+160	-88	0
+161	-88	0
+162	-88	0
+163	-88	0
+164	-88	0
+165	-88	0
+166	-88	0
+167	-88	0
+168	-88	0
+169	-88	0
+170	-88	0
+171	-88	0
+172	-88	0
+173	-88	0
+174	-88	0
+175	-88	0
+176	-88	0
+177	-88	0
+178	-88	0
+179	-88	0
+180	-88	0
+181	-88	0
+182	-88	0
+183	-88	0
+184	-88	0
+185	-88	0
+186	-88	0
+187	-88	0
+188	-88	0
+189	-88	0
+190	-88	0
+191	-88	0
+192	-88	0
+193	-88	0
+194	-88	0
+195	-88	0
+196	-88	0
+197	-88	0
+198	-88	0
+199	-88	0
+200	-88	0
+201	-88	0
+202	-88	0
+203	-88	0
+204	-88	0
+205	-88	0
+206	-88	0
+207	-88	0
+208	-88	0
+209	-88	0
+210	-88	0
+211	-88	0
+212	-88	0
+213	-88	0
+214	-88	0
+215	-88	0
+216	-88	0
+217	-88	0
+218	-88	0
+219	-88	0
+220	-88	0
+221	-88	0
+222	-88	0
+223	-88	0
+224	-88	0
+225	-88	0
+226	-88	0
+227	-88	0
+228	-88	0
+229	-88	0
+230	-88	0
+231	-88	0
+232	-88	0
+233	-88	0
+234	-88	0
+235	-88	0
+236	-88	0
+237	-88	0
+238	-88	0
+239	-88	0
+240	-88	0
+241	-88	0
+242	-88	0
+243	-88	0
+244	-88	0
+245	-88	0
+246	-88	0
+247	-88	0
+248	-88	0
+249	-88	0
+250	-88	0
+251	-88	0
+252	-88	0
+253	-88	0
+254	-88	0
+255	-88	0
+256	-88	0
+257	-88	0
+258	-88	0
+259	-88	0
+260	-88	0
+261	-88	0
+262	-88	0
+263	-88	0
+264	-88	0
+265	-88	0
+266	-88	0
+267	-88	0
+268	-88	0
+269	-88	0
+270	-88	0
+271	-88	0
+272	-88	0
+273	-88	0
+274	-88	0
+275	-88	0
+276	-88	0
+277	-88	0
+278	-88	0
+279	-88	0
+280	-88	0
+281	-88	0
+282	-88	0
+283	-88	0
+284	-88	0
+285	-88	0
+286	-88	0
+287	-88	0
+288	-88	0
+289	-88	0
+290	-88	0
+291	-88	0
+292	-88	0
+293	-88	0
+294	-88	0
+295	-88	0
+296	-88	0
+297	-88	0
+298	-88	0
+299	-88	0
+300	-88	0
+301	-88	0
+302	-88	0
+303	-88	0
+304	-88	0
+305	-88	0
+306	-88	0
+307	-88	0
+308	-88	0
+309	-88	0
+310	-88	0
+311	-88	0
+312	-88	0
+313	-88	0
+314	-88	0
+315	-88	0
+316	-88	0
+317	-88	0
+318	-88	0
+319	-88	0
+320	-88	0
+321	-88	0
+322	-88	0
+323	-88	0
+324	-88	0
+325	-88	0
+326	-88	0
+327	-88	0
+328	-88	0
+329	-88	0
+330	-88	0
+331	-88	0
+332	-88	0
+333	-88	0
+334	-88	0
+335	-88	0
+336	-88	0
+337	-88	0
+338	-88	0
+339	-88	0
+340	-88	0
+341	-88	0
+342	-88	0
+343	-88	0
+344	-88	0
+345	-88	0
+346	-88	0
+347	-88	0
+348	-88	0
+349	-88	0
+350	-88	0
+351	-88	0
+352	-88	0
+353	-88	0
+354	-88	0
+355	-88	0
+356	-88	0
+357	-88	0
+358	-88	0
+359	-88	0
+360	-88	0
+0	-87.5	0
+1	-87.5	0
+2	-87.5	0
+3	-87.5	0
+4	-87.5	0
+5	-87.5	0
+6	-87.5	0
+7	-87.5	0
+8	-87.5	0
+9	-87.5	0
+10	-87.5	0
+11	-87.5	0
+12	-87.5	0
+13	-87.5	0
+14	-87.5	0
+15	-87.5	0
+16	-87.5	0
+17	-87.5	0
+18	-87.5	0
+19	-87.5	0
+20	-87.5	0
+21	-87.5	0
+22	-87.5	0
+23	-87.5	0
+24	-87.5	0
+25	-87.5	0
+26	-87.5	0
+27	-87.5	0
+28	-87.5	0
+29	-87.5	0
+30	-87.5	0
+31	-87.5	0
+32	-87.5	0
+33	-87.5	0
+34	-87.5	0
+35	-87.5	0
+36	-87.5	0
+37	-87.5	0
+38	-87.5	0
+39	-87.5	0
+40	-87.5	0
+41	-87.5	0
+42	-87.5	0
+43	-87.5	0
+44	-87.5	0
+45	-87.5	0
+46	-87.5	0
+47	-87.5	0
+48	-87.5	0
+49	-87.5	0
+50	-87.5	0
+51	-87.5	0
+52	-87.5	0
+53	-87.5	0
+54	-87.5	0
+55	-87.5	0
+56	-87.5	0
+57	-87.5	0
+58	-87.5	0
+59	-87.5	0
+60	-87.5	0
+61	-87.5	0
+62	-87.5	0
+63	-87.5	0
+64	-87.5	0
+65	-87.5	0
+66	-87.5	0
+67	-87.5	0
+68	-87.5	0
+69	-87.5	0
+70	-87.5	0
+71	-87.5	0
+72	-87.5	0
+73	-87.5	0
+74	-87.5	0
+75	-87.5	0
+76	-87.5	0
+77	-87.5	0
+78	-87.5	0
+79	-87.5	0
+80	-87.5	0
+81	-87.5	0
+82	-87.5	0
+83	-87.5	0
+84	-87.5	0
+85	-87.5	0
+86	-87.5	0
+87	-87.5	0
+88	-87.5	0
+89	-87.5	0
+90	-87.5	0
+91	-87.5	0
+92	-87.5	0
+93	-87.5	0
+94	-87.5	0
+95	-87.5	0
+96	-87.5	0
+97	-87.5	0
+98	-87.5	0
+99	-87.5	0
+100	-87.5	0
+101	-87.5	0
+102	-87.5	0
+103	-87.5	0
+104	-87.5	0
+105	-87.5	0
+106	-87.5	0
+107	-87.5	0
+108	-87.5	0
+109	-87.5	0
+110	-87.5	0
+111	-87.5	0
+112	-87.5	0
+113	-87.5	0
+114	-87.5	0
+115	-87.5	0
+116	-87.5	0
+117	-87.5	0
+118	-87.5	0
+119	-87.5	0
+120	-87.5	0
+121	-87.5	0
+122	-87.5	0
+123	-87.5	0
+124	-87.5	0
+125	-87.5	0
+126	-87.5	0
+127	-87.5	0
+128	-87.5	0
+129	-87.5	0
+130	-87.5	0
+131	-87.5	0
+132	-87.5	0
+133	-87.5	0
+134	-87.5	0
+135	-87.5	0
+136	-87.5	0
+137	-87.5	0
+138	-87.5	0
+139	-87.5	0
+140	-87.5	0
+141	-87.5	0
+142	-87.5	0
+143	-87.5	0
+144	-87.5	0
+145	-87.5	0
+146	-87.5	0
+147	-87.5	0
+148	-87.5	0
+149	-87.5	0
+150	-87.5	0
+151	-87.5	0
+152	-87.5	0
+153	-87.5	0
+154	-87.5	0
+155	-87.5	0
+156	-87.5	0
+157	-87.5	0
+158	-87.5	0
+159	-87.5	0
+160	-87.5	0
+161	-87.5	0
+162	-87.5	0
+163	-87.5	0
+164	-87.5	0
+165	-87.5	0
+166	-87.5	0
+167	-87.5	0
+168	-87.5	0
+169	-87.5	0
+170	-87.5	0
+171	-87.5	0
+172	-87.5	0
+173	-87.5	0
+174	-87.5	0
+175	-87.5	0
+176	-87.5	0
+177	-87.5	0
+178	-87.5	0
+179	-87.5	0
+180	-87.5	0
+181	-87.5	0
+182	-87.5	0
+183	-87.5	0
+184	-87.5	0
+185	-87.5	0
+186	-87.5	0
+187	-87.5	0
+188	-87.5	0
+189	-87.5	0
+190	-87.5	0
+191	-87.5	0
+192	-87.5	0
+193	-87.5	0
+194	-87.5	0
+195	-87.5	0
+196	-87.5	0
+197	-87.5	0
+198	-87.5	0
+199	-87.5	0
+200	-87.5	0
+201	-87.5	0
+202	-87.5	0
+203	-87.5	0
+204	-87.5	0
+205	-87.5	0
+206	-87.5	0
+207	-87.5	0
+208	-87.5	0
+209	-87.5	0
+210	-87.5	0
+211	-87.5	0
+212	-87.5	0
+213	-87.5	0
+214	-87.5	0
+215	-87.5	0
+216	-87.5	0
+217	-87.5	0
+218	-87.5	0
+219	-87.5	0
+220	-87.5	0
+221	-87.5	0
+222	-87.5	0
+223	-87.5	0
+224	-87.5	0
+225	-87.5	0
+226	-87.5	0
+227	-87.5	0
+228	-87.5	0
+229	-87.5	0
+230	-87.5	0
+231	-87.5	0
+232	-87.5	0
+233	-87.5	0
+234	-87.5	0
+235	-87.5	0
+236	-87.5	0
+237	-87.5	0
+238	-87.5	0
+239	-87.5	0
+240	-87.5	0
+241	-87.5	0
+242	-87.5	0
+243	-87.5	0
+244	-87.5	0
+245	-87.5	0
+246	-87.5	0
+247	-87.5	0
+248	-87.5	0
+249	-87.5	0
+250	-87.5	0
+251	-87.5	0
+252	-87.5	0
+253	-87.5	0
+254	-87.5	0
+255	-87.5	0
+256	-87.5	0
+257	-87.5	0
+258	-87.5	0
+259	-87.5	0
+260	-87.5	0
+261	-87.5	0
+262	-87.5	0
+263	-87.5	0
+264	-87.5	0
+265	-87.5	0
+266	-87.5	0
+267	-87.5	0
+268	-87.5	0
+269	-87.5	0
+270	-87.5	0
+271	-87.5	0
+272	-87.5	0
+273	-87.5	0
+274	-87.5	0
+275	-87.5	0
+276	-87.5	0
+277	-87.5	0
+278	-87.5	0
+279	-87.5	0
+280	-87.5	0
+281	-87.5	0
+282	-87.5	0
+283	-87.5	0
+284	-87.5	0
+285	-87.5	0
+286	-87.5	0
+287	-87.5	0
+288	-87.5	0
+289	-87.5	0
+290	-87.5	0
+291	-87.5	0
+292	-87.5	0
+293	-87.5	0
+294	-87.5	0
+295	-87.5	0
+296	-87.5	0
+297	-87.5	0
+298	-87.5	0
+299	-87.5	0
+300	-87.5	0
+301	-87.5	0
+302	-87.5	0
+303	-87.5	0
+304	-87.5	0
+305	-87.5	0
+306	-87.5	0
+307	-87.5	0
+308	-87.5	0
+309	-87.5	0
+310	-87.5	0
+311	-87.5	0
+312	-87.5	0
+313	-87.5	0
+314	-87.5	0
+315	-87.5	0
+316	-87.5	0
+317	-87.5	0
+318	-87.5	0
+319	-87.5	0
+320	-87.5	0
+321	-87.5	0
+322	-87.5	0
+323	-87.5	0
+324	-87.5	0
+325	-87.5	0
+326	-87.5	0
+327	-87.5	0
+328	-87.5	0
+329	-87.5	0
+330	-87.5	0
+331	-87.5	0
+332	-87.5	0
+333	-87.5	0
+334	-87.5	0
+335	-87.5	0
+336	-87.5	0
+337	-87.5	0
+338	-87.5	0
+339	-87.5	0
+340	-87.5	0
+341	-87.5	0
+342	-87.5	0
+343	-87.5	0
+344	-87.5	0
+345	-87.5	0
+346	-87.5	0
+347	-87.5	0
+348	-87.5	0
+349	-87.5	0
+350	-87.5	0
+351	-87.5	0
+352	-87.5	0
+353	-87.5	0
+354	-87.5	0
+355	-87.5	0
+356	-87.5	0
+357	-87.5	0
+358	-87.5	0
+359	-87.5	0
+360	-87.5	0
+0	-87	0
+1	-87	0
+2	-87	0
+3	-87	0
+4	-87	0
+5	-87	0
+6	-87	0
+7	-87	0
+8	-87	0
+9	-87	0
+10	-87	0
+11	-87	0
+12	-87	0
+13	-87	0
+14	-87	0
+15	-87	0
+16	-87	0
+17	-87	0
+18	-87	0
+19	-87	0
+20	-87	0
+21	-87	0
+22	-87	0
+23	-87	0
+24	-87	0
+25	-87	0
+26	-87	0
+27	-87	0
+28	-87	0
+29	-87	0
+30	-87	0
+31	-87	0
+32	-87	0
+33	-87	0
+34	-87	0
+35	-87	0
+36	-87	0
+37	-87	0
+38	-87	0
+39	-87	0
+40	-87	0
+41	-87	0
+42	-87	0
+43	-87	0
+44	-87	0
+45	-87	0
+46	-87	0
+47	-87	0
+48	-87	0
+49	-87	0
+50	-87	0
+51	-87	0
+52	-87	0
+53	-87	0
+54	-87	0
+55	-87	0
+56	-87	0
+57	-87	0
+58	-87	0
+59	-87	0
+60	-87	0
+61	-87	0
+62	-87	0
+63	-87	0
+64	-87	0
+65	-87	0
+66	-87	0
+67	-87	0
+68	-87	0
+69	-87	0
+70	-87	0
+71	-87	0
+72	-87	0
+73	-87	0
+74	-87	0
+75	-87	0
+76	-87	0
+77	-87	0
+78	-87	0
+79	-87	0
+80	-87	0
+81	-87	0
+82	-87	0
+83	-87	0
+84	-87	0
+85	-87	0
+86	-87	0
+87	-87	0
+88	-87	0
+89	-87	0
+90	-87	0
+91	-87	0
+92	-87	0
+93	-87	0
+94	-87	0
+95	-87	0
+96	-87	0
+97	-87	0
+98	-87	0
+99	-87	0
+100	-87	0
+101	-87	0
+102	-87	0
+103	-87	0
+104	-87	0
+105	-87	0
+106	-87	0
+107	-87	0
+108	-87	0
+109	-87	0
+110	-87	0
+111	-87	0
+112	-87	0
+113	-87	0
+114	-87	0
+115	-87	0
+116	-87	0
+117	-87	0
+118	-87	0
+119	-87	0
+120	-87	0
+121	-87	0
+122	-87	0
+123	-87	0
+124	-87	0
+125	-87	0
+126	-87	0
+127	-87	0
+128	-87	0
+129	-87	0
+130	-87	0
+131	-87	0
+132	-87	0
+133	-87	0
+134	-87	0
+135	-87	0
+136	-87	0
+137	-87	0
+138	-87	0
+139	-87	0
+140	-87	0
+141	-87	0
+142	-87	0
+143	-87	0
+144	-87	0
+145	-87	0
+146	-87	0
+147	-87	0
+148	-87	0
+149	-87	0
+150	-87	0
+151	-87	0
+152	-87	0
+153	-87	0
+154	-87	0
+155	-87	0
+156	-87	0
+157	-87	0
+158	-87	0
+159	-87	0
+160	-87	0
+161	-87	0
+162	-87	0
+163	-87	0
+164	-87	0
+165	-87	0
+166	-87	0
+167	-87	0
+168	-87	0
+169	-87	0
+170	-87	0
+171	-87	0
+172	-87	0
+173	-87	0
+174	-87	0
+175	-87	0
+176	-87	0
+177	-87	0
+178	-87	0
+179	-87	0
+180	-87	0
+181	-87	0
+182	-87	0
+183	-87	0
+184	-87	0
+185	-87	0
+186	-87	0
+187	-87	0
+188	-87	0
+189	-87	0
+190	-87	0
+191	-87	0
+192	-87	0
+193	-87	0
+194	-87	0
+195	-87	0
+196	-87	0
+197	-87	0
+198	-87	0
+199	-87	0
+200	-87	0
+201	-87	0
+202	-87	0
+203	-87	0
+204	-87	0
+205	-87	0
+206	-87	0
+207	-87	0
+208	-87	0
+209	-87	0
+210	-87	0
+211	-87	0
+212	-87	0
+213	-87	0
+214	-87	0
+215	-87	0
+216	-87	0
+217	-87	0
+218	-87	0
+219	-87	0
+220	-87	0
+221	-87	0
+222	-87	0
+223	-87	0
+224	-87	0
+225	-87	0
+226	-87	0
+227	-87	0
+228	-87	0
+229	-87	0
+230	-87	0
+231	-87	0
+232	-87	0
+233	-87	0
+234	-87	0
+235	-87	0
+236	-87	0
+237	-87	0
+238	-87	0
+239	-87	0
+240	-87	0
+241	-87	0
+242	-87	0
+243	-87	0
+244	-87	0
+245	-87	0
+246	-87	0
+247	-87	0
+248	-87	0
+249	-87	0
+250	-87	0
+251	-87	0
+252	-87	0
+253	-87	0
+254	-87	0
+255	-87	0
+256	-87	0
+257	-87	0
+258	-87	0
+259	-87	0
+260	-87	0
+261	-87	0
+262	-87	0
+263	-87	0
+264	-87	0
+265	-87	0
+266	-87	0
+267	-87	0
+268	-87	0
+269	-87	0
+270	-87	0
+271	-87	0
+272	-87	0
+273	-87	0
+274	-87	0
+275	-87	0
+276	-87	0
+277	-87	0
+278	-87	0
+279	-87	0
+280	-87	0
+281	-87	0
+282	-87	0
+283	-87	0
+284	-87	0
+285	-87	0
+286	-87	0
+287	-87	0
+288	-87	0
+289	-87	0
+290	-87	0
+291	-87	0
+292	-87	0
+293	-87	0
+294	-87	0
+295	-87	0
+296	-87	0
+297	-87	0
+298	-87	0
+299	-87	0
+300	-87	0
+301	-87	0
+302	-87	0
+303	-87	0
+304	-87	0
+305	-87	0
+306	-87	0
+307	-87	0
+308	-87	0
+309	-87	0
+310	-87	0
+311	-87	0
+312	-87	0
+313	-87	0
+314	-87	0
+315	-87	0
+316	-87	0
+317	-87	0
+318	-87	0
+319	-87	0
+320	-87	0
+321	-87	0
+322	-87	0
+323	-87	0
+324	-87	0
+325	-87	0
+326	-87	0
+327	-87	0
+328	-87	0
+329	-87	0
+330	-87	0
+331	-87	0
+332	-87	0
+333	-87	0
+334	-87	0
+335	-87	0
+336	-87	0
+337	-87	0
+338	-87	0
+339	-87	0
+340	-87	0
+341	-87	0
+342	-87	0
+343	-87	0
+344	-87	0
+345	-87	0
+346	-87	0
+347	-87	0
+348	-87	0
+349	-87	0
+350	-87	0
+351	-87	0
+352	-87	0
+353	-87	0
+354	-87	0
+355	-87	0
+356	-87	0
+357	-87	0
+358	-87	0
+359	-87	0
+360	-87	0
+0	-86.5	0
+1	-86.5	0
+2	-86.5	0
+3	-86.5	0
+4	-86.5	0
+5	-86.5	0
+6	-86.5	0
+7	-86.5	0
+8	-86.5	0
+9	-86.5	0
+10	-86.5	0
+11	-86.5	0
+12	-86.5	0
+13	-86.5	0
+14	-86.5	0
+15	-86.5	0
+16	-86.5	0
+17	-86.5	0
+18	-86.5	0
+19	-86.5	0
+20	-86.5	0
+21	-86.5	0
+22	-86.5	0
+23	-86.5	0
+24	-86.5	0
+25	-86.5	0
+26	-86.5	0
+27	-86.5	0
+28	-86.5	0
+29	-86.5	0
+30	-86.5	0
+31	-86.5	0
+32	-86.5	0
+33	-86.5	0
+34	-86.5	0
+35	-86.5	0
+36	-86.5	0
+37	-86.5	0
+38	-86.5	0
+39	-86.5	0
+40	-86.5	0
+41	-86.5	0
+42	-86.5	0
+43	-86.5	0
+44	-86.5	0
+45	-86.5	0
+46	-86.5	0
+47	-86.5	0
+48	-86.5	0
+49	-86.5	0
+50	-86.5	0
+51	-86.5	0
+52	-86.5	0
+53	-86.5	0
+54	-86.5	0
+55	-86.5	0
+56	-86.5	0
+57	-86.5	0
+58	-86.5	0
+59	-86.5	0
+60	-86.5	0
+61	-86.5	0
+62	-86.5	0
+63	-86.5	0
+64	-86.5	0
+65	-86.5	0
+66	-86.5	0
+67	-86.5	0
+68	-86.5	0
+69	-86.5	0
+70	-86.5	0
+71	-86.5	0
+72	-86.5	0
+73	-86.5	0
+74	-86.5	0
+75	-86.5	0
+76	-86.5	0
+77	-86.5	0
+78	-86.5	0
+79	-86.5	0
+80	-86.5	0
+81	-86.5	0
+82	-86.5	0
+83	-86.5	0
+84	-86.5	0
+85	-86.5	0
+86	-86.5	0
+87	-86.5	0
+88	-86.5	0
+89	-86.5	0
+90	-86.5	0
+91	-86.5	0
+92	-86.5	0
+93	-86.5	0
+94	-86.5	0
+95	-86.5	0
+96	-86.5	0
+97	-86.5	0
+98	-86.5	0
+99	-86.5	0
+100	-86.5	0
+101	-86.5	0
+102	-86.5	0
+103	-86.5	0
+104	-86.5	0
+105	-86.5	0
+106	-86.5	0
+107	-86.5	0
+108	-86.5	0
+109	-86.5	0
+110	-86.5	0
+111	-86.5	0
+112	-86.5	0
+113	-86.5	0
+114	-86.5	0
+115	-86.5	0
+116	-86.5	0
+117	-86.5	0
+118	-86.5	0
+119	-86.5	0
+120	-86.5	0
+121	-86.5	0
+122	-86.5	0
+123	-86.5	0
+124	-86.5	0
+125	-86.5	0
+126	-86.5	0
+127	-86.5	0
+128	-86.5	0
+129	-86.5	0
+130	-86.5	0
+131	-86.5	0
+132	-86.5	0
+133	-86.5	0
+134	-86.5	0
+135	-86.5	0
+136	-86.5	0
+137	-86.5	0
+138	-86.5	0
+139	-86.5	0
+140	-86.5	0
+141	-86.5	0
+142	-86.5	0
+143	-86.5	0
+144	-86.5	0
+145	-86.5	0
+146	-86.5	0
+147	-86.5	0
+148	-86.5	0
+149	-86.5	0
+150	-86.5	0
+151	-86.5	0
+152	-86.5	0
+153	-86.5	0
+154	-86.5	0
+155	-86.5	0
+156	-86.5	0
+157	-86.5	0
+158	-86.5	0
+159	-86.5	0
+160	-86.5	0
+161	-86.5	0
+162	-86.5	0
+163	-86.5	0
+164	-86.5	0
+165	-86.5	0
+166	-86.5	0
+167	-86.5	0
+168	-86.5	0
+169	-86.5	0
+170	-86.5	0
+171	-86.5	0
+172	-86.5	0
+173	-86.5	0
+174	-86.5	0
+175	-86.5	0
+176	-86.5	0
+177	-86.5	0
+178	-86.5	0
+179	-86.5	0
+180	-86.5	0
+181	-86.5	0
+182	-86.5	0
+183	-86.5	0
+184	-86.5	0
+185	-86.5	0
+186	-86.5	0
+187	-86.5	0
+188	-86.5	0
+189	-86.5	0
+190	-86.5	0
+191	-86.5	0
+192	-86.5	0
+193	-86.5	0
+194	-86.5	0
+195	-86.5	0
+196	-86.5	0
+197	-86.5	0
+198	-86.5	0
+199	-86.5	0
+200	-86.5	0
+201	-86.5	0
+202	-86.5	0
+203	-86.5	0
+204	-86.5	0
+205	-86.5	0
+206	-86.5	0
+207	-86.5	0
+208	-86.5	0
+209	-86.5	0
+210	-86.5	0
+211	-86.5	0
+212	-86.5	0
+213	-86.5	0
+214	-86.5	0
+215	-86.5	0
+216	-86.5	0
+217	-86.5	0
+218	-86.5	0
+219	-86.5	0
+220	-86.5	0
+221	-86.5	0
+222	-86.5	0
+223	-86.5	0
+224	-86.5	0
+225	-86.5	0
+226	-86.5	0
+227	-86.5	0
+228	-86.5	0
+229	-86.5	0
+230	-86.5	0
+231	-86.5	0
+232	-86.5	0
+233	-86.5	0
+234	-86.5	0
+235	-86.5	0
+236	-86.5	0
+237	-86.5	0
+238	-86.5	0
+239	-86.5	0
+240	-86.5	0
+241	-86.5	0
+242	-86.5	0
+243	-86.5	0
+244	-86.5	0
+245	-86.5	0
+246	-86.5	0
+247	-86.5	0
+248	-86.5	0
+249	-86.5	0
+250	-86.5	0
+251	-86.5	0
+252	-86.5	0
+253	-86.5	0
+254	-86.5	0
+255	-86.5	0
+256	-86.5	0
+257	-86.5	0
+258	-86.5	0
+259	-86.5	0
+260	-86.5	0
+261	-86.5	0
+262	-86.5	0
+263	-86.5	0
+264	-86.5	0
+265	-86.5	0
+266	-86.5	0
+267	-86.5	0
+268	-86.5	0
+269	-86.5	0
+270	-86.5	0
+271	-86.5	0
+272	-86.5	0
+273	-86.5	0
+274	-86.5	0
+275	-86.5	0
+276	-86.5	0
+277	-86.5	0
+278	-86.5	0
+279	-86.5	0
+280	-86.5	0
+281	-86.5	0
+282	-86.5	0
+283	-86.5	0
+284	-86.5	0
+285	-86.5	0
+286	-86.5	0
+287	-86.5	0
+288	-86.5	0
+289	-86.5	0
+290	-86.5	0
+291	-86.5	0
+292	-86.5	0
+293	-86.5	0
+294	-86.5	0
+295	-86.5	0
+296	-86.5	0
+297	-86.5	0
+298	-86.5	0
+299	-86.5	0
+300	-86.5	0
+301	-86.5	0
+302	-86.5	0
+303	-86.5	0
+304	-86.5	0
+305	-86.5	0
+306	-86.5	0
+307	-86.5	0
+308	-86.5	0
+309	-86.5	0
+310	-86.5	0
+311	-86.5	0
+312	-86.5	0
+313	-86.5	0
+314	-86.5	0
+315	-86.5	0
+316	-86.5	0
+317	-86.5	0
+318	-86.5	0
+319	-86.5	0
+320	-86.5	0
+321	-86.5	0
+322	-86.5	0
+323	-86.5	0
+324	-86.5	0
+325	-86.5	0
+326	-86.5	0
+327	-86.5	0
+328	-86.5	0
+329	-86.5	0
+330	-86.5	0
+331	-86.5	0
+332	-86.5	0
+333	-86.5	0
+334	-86.5	0
+335	-86.5	0
+336	-86.5	0
+337	-86.5	0
+338	-86.5	0
+339	-86.5	0
+340	-86.5	0
+341	-86.5	0
+342	-86.5	0
+343	-86.5	0
+344	-86.5	0
+345	-86.5	0
+346	-86.5	0
+347	-86.5	0
+348	-86.5	0
+349	-86.5	0
+350	-86.5	0
+351	-86.5	0
+352	-86.5	0
+353	-86.5	0
+354	-86.5	0
+355	-86.5	0
+356	-86.5	0
+357	-86.5	0
+358	-86.5	0
+359	-86.5	0
+360	-86.5	0
+0	-86	0
+1	-86	0
+2	-86	0
+3	-86	0
+4	-86	0
+5	-86	0
+6	-86	0
+7	-86	0
+8	-86	0
+9	-86	0
+10	-86	0
+11	-86	0
+12	-86	0
+13	-86	0
+14	-86	0
+15	-86	0
+16	-86	0
+17	-86	0
+18	-86	0
+19	-86	0
+20	-86	0
+21	-86	0
+22	-86	0
+23	-86	0
+24	-86	0
+25	-86	0
+26	-86	0
+27	-86	0
+28	-86	0
+29	-86	0
+30	-86	0
+31	-86	0
+32	-86	0
+33	-86	0
+34	-86	0
+35	-86	0
+36	-86	0
+37	-86	0
+38	-86	0
+39	-86	0
+40	-86	0
+41	-86	0
+42	-86	0
+43	-86	0
+44	-86	0
+45	-86	0
+46	-86	0
+47	-86	0
+48	-86	0
+49	-86	0
+50	-86	0
+51	-86	0
+52	-86	0
+53	-86	0
+54	-86	0
+55	-86	0
+56	-86	0
+57	-86	0
+58	-86	0
+59	-86	0
+60	-86	0
+61	-86	0
+62	-86	0
+63	-86	0
+64	-86	0
+65	-86	0
+66	-86	0
+67	-86	0
+68	-86	0
+69	-86	0
+70	-86	0
+71	-86	0
+72	-86	0
+73	-86	0
+74	-86	0
+75	-86	0
+76	-86	0
+77	-86	0
+78	-86	0
+79	-86	0
+80	-86	0
+81	-86	0
+82	-86	0
+83	-86	0
+84	-86	0
+85	-86	0
+86	-86	0
+87	-86	0
+88	-86	0
+89	-86	0
+90	-86	0
+91	-86	0
+92	-86	0
+93	-86	0
+94	-86	0
+95	-86	0
+96	-86	0
+97	-86	0
+98	-86	0
+99	-86	0
+100	-86	0
+101	-86	0
+102	-86	0
+103	-86	0
+104	-86	0
+105	-86	0
+106	-86	0
+107	-86	0
+108	-86	0
+109	-86	0
+110	-86	0
+111	-86	0
+112	-86	0
+113	-86	0
+114	-86	0
+115	-86	0
+116	-86	0
+117	-86	0
+118	-86	0
+119	-86	0
+120	-86	0
+121	-86	0
+122	-86	0
+123	-86	0
+124	-86	0
+125	-86	0
+126	-86	0
+127	-86	0
+128	-86	0
+129	-86	0
+130	-86	0
+131	-86	0
+132	-86	0
+133	-86	0
+134	-86	0
+135	-86	0
+136	-86	0
+137	-86	0
+138	-86	0
+139	-86	0
+140	-86	0
+141	-86	0
+142	-86	0
+143	-86	0
+144	-86	0
+145	-86	0
+146	-86	0
+147	-86	0
+148	-86	0
+149	-86	0
+150	-86	0
+151	-86	0
+152	-86	0
+153	-86	0
+154	-86	0
+155	-86	0
+156	-86	0
+157	-86	0
+158	-86	0
+159	-86	0
+160	-86	0
+161	-86	0
+162	-86	0
+163	-86	0
+164	-86	0
+165	-86	0
+166	-86	0
+167	-86	0
+168	-86	0
+169	-86	0
+170	-86	0
+171	-86	0
+172	-86	0
+173	-86	0
+174	-86	0
+175	-86	0
+176	-86	0
+177	-86	0
+178	-86	0
+179	-86	0
+180	-86	0
+181	-86	0
+182	-86	0
+183	-86	0
+184	-86	0
+185	-86	0
+186	-86	0
+187	-86	0
+188	-86	0
+189	-86	0
+190	-86	0
+191	-86	0
+192	-86	0
+193	-86	0
+194	-86	0
+195	-86	0
+196	-86	0
+197	-86	0
+198	-86	0
+199	-86	0
+200	-86	0
+201	-86	0
+202	-86	0
+203	-86	0
+204	-86	0
+205	-86	0
+206	-86	0
+207	-86	0
+208	-86	0
+209	-86	0
+210	-86	0
+211	-86	0
+212	-86	0
+213	-86	0
+214	-86	0
+215	-86	0
+216	-86	0
+217	-86	0
+218	-86	0
+219	-86	0
+220	-86	0
+221	-86	0
+222	-86	0
+223	-86	0
+224	-86	0
+225	-86	0
+226	-86	0
+227	-86	0
+228	-86	0
+229	-86	0
+230	-86	0
+231	-86	0
+232	-86	0
+233	-86	0
+234	-86	0
+235	-86	0
+236	-86	0
+237	-86	0
+238	-86	0
+239	-86	0
+240	-86	0
+241	-86	0
+242	-86	0
+243	-86	0
+244	-86	0
+245	-86	0
+246	-86	0
+247	-86	0
+248	-86	0
+249	-86	0
+250	-86	0
+251	-86	0
+252	-86	0
+253	-86	0
+254	-86	0
+255	-86	0
+256	-86	0
+257	-86	0
+258	-86	0
+259	-86	0
+260	-86	0
+261	-86	0
+262	-86	0
+263	-86	0
+264	-86	0
+265	-86	0
+266	-86	0
+267	-86	0
+268	-86	0
+269	-86	0
+270	-86	0
+271	-86	0
+272	-86	0
+273	-86	0
+274	-86	0
+275	-86	0
+276	-86	0
+277	-86	0
+278	-86	0
+279	-86	0
+280	-86	0
+281	-86	0
+282	-86	0
+283	-86	0
+284	-86	0
+285	-86	0
+286	-86	0
+287	-86	0
+288	-86	0
+289	-86	0
+290	-86	0
+291	-86	0
+292	-86	0
+293	-86	0
+294	-86	0
+295	-86	0
+296	-86	0
+297	-86	0
+298	-86	0
+299	-86	0
+300	-86	0
+301	-86	0
+302	-86	0
+303	-86	0
+304	-86	0
+305	-86	0
+306	-86	0
+307	-86	0
+308	-86	0
+309	-86	0
+310	-86	0
+311	-86	0
+312	-86	0
+313	-86	0
+314	-86	0
+315	-86	0
+316	-86	0
+317	-86	0
+318	-86	0
+319	-86	0
+320	-86	0
+321	-86	0
+322	-86	0
+323	-86	0
+324	-86	0
+325	-86	0
+326	-86	0
+327	-86	0
+328	-86	0
+329	-86	0
+330	-86	0
+331	-86	0
+332	-86	0
+333	-86	0
+334	-86	0
+335	-86	0
+336	-86	0
+337	-86	0
+338	-86	0
+339	-86	0
+340	-86	0
+341	-86	0
+342	-86	0
+343	-86	0
+344	-86	0
+345	-86	0
+346	-86	0
+347	-86	0
+348	-86	0
+349	-86	0
+350	-86	0
+351	-86	0
+352	-86	0
+353	-86	0
+354	-86	0
+355	-86	0
+356	-86	0
+357	-86	0
+358	-86	0
+359	-86	0
+360	-86	0
+0	-85.5	0
+1	-85.5	0
+2	-85.5	0
+3	-85.5	0
+4	-85.5	0
+5	-85.5	0
+6	-85.5	0
+7	-85.5	0
+8	-85.5	0
+9	-85.5	0
+10	-85.5	0
+11	-85.5	0
+12	-85.5	0
+13	-85.5	0
+14	-85.5	0
+15	-85.5	0
+16	-85.5	0
+17	-85.5	0
+18	-85.5	0
+19	-85.5	0
+20	-85.5	0
+21	-85.5	0
+22	-85.5	0
+23	-85.5	0
+24	-85.5	0
+25	-85.5	0
+26	-85.5	0
+27	-85.5	0
+28	-85.5	0
+29	-85.5	0
+30	-85.5	0
+31	-85.5	0
+32	-85.5	0
+33	-85.5	0
+34	-85.5	0
+35	-85.5	0
+36	-85.5	0
+37	-85.5	0
+38	-85.5	0
+39	-85.5	0
+40	-85.5	0
+41	-85.5	0
+42	-85.5	0
+43	-85.5	0
+44	-85.5	0
+45	-85.5	0
+46	-85.5	0
+47	-85.5	0
+48	-85.5	0
+49	-85.5	0
+50	-85.5	0
+51	-85.5	0
+52	-85.5	0
+53	-85.5	0
+54	-85.5	0
+55	-85.5	0
+56	-85.5	0
+57	-85.5	0
+58	-85.5	0
+59	-85.5	0
+60	-85.5	0
+61	-85.5	0
+62	-85.5	0
+63	-85.5	0
+64	-85.5	0
+65	-85.5	0
+66	-85.5	0
+67	-85.5	0
+68	-85.5	0
+69	-85.5	0
+70	-85.5	0
+71	-85.5	0
+72	-85.5	0
+73	-85.5	0
+74	-85.5	0
+75	-85.5	0
+76	-85.5	0
+77	-85.5	0
+78	-85.5	0
+79	-85.5	0
+80	-85.5	0
+81	-85.5	0
+82	-85.5	0
+83	-85.5	0
+84	-85.5	0
+85	-85.5	0
+86	-85.5	0
+87	-85.5	0
+88	-85.5	0
+89	-85.5	0
+90	-85.5	0
+91	-85.5	0
+92	-85.5	0
+93	-85.5	0
+94	-85.5	0
+95	-85.5	0
+96	-85.5	0
+97	-85.5	0
+98	-85.5	0
+99	-85.5	0
+100	-85.5	0
+101	-85.5	0
+102	-85.5	0
+103	-85.5	0
+104	-85.5	0
+105	-85.5	0
+106	-85.5	0
+107	-85.5	0
+108	-85.5	0
+109	-85.5	0
+110	-85.5	0
+111	-85.5	0
+112	-85.5	0
+113	-85.5	0
+114	-85.5	0
+115	-85.5	0
+116	-85.5	0
+117	-85.5	0
+118	-85.5	0
+119	-85.5	0
+120	-85.5	0
+121	-85.5	0
+122	-85.5	0
+123	-85.5	0
+124	-85.5	0
+125	-85.5	0
+126	-85.5	0
+127	-85.5	0
+128	-85.5	0
+129	-85.5	0
+130	-85.5	0
+131	-85.5	0
+132	-85.5	0
+133	-85.5	0
+134	-85.5	0
+135	-85.5	0
+136	-85.5	0
+137	-85.5	0
+138	-85.5	0
+139	-85.5	0
+140	-85.5	0
+141	-85.5	0
+142	-85.5	0
+143	-85.5	0
+144	-85.5	0
+145	-85.5	0
+146	-85.5	0
+147	-85.5	0
+148	-85.5	0
+149	-85.5	0
+150	-85.5	0
+151	-85.5	0
+152	-85.5	0
+153	-85.5	0
+154	-85.5	0
+155	-85.5	0
+156	-85.5	0
+157	-85.5	0
+158	-85.5	0
+159	-85.5	0
+160	-85.5	0
+161	-85.5	0
+162	-85.5	0
+163	-85.5	0
+164	-85.5	0
+165	-85.5	0
+166	-85.5	0
+167	-85.5	0
+168	-85.5	0
+169	-85.5	0
+170	-85.5	0
+171	-85.5	0
+172	-85.5	0
+173	-85.5	0
+174	-85.5	0
+175	-85.5	0
+176	-85.5	0
+177	-85.5	0
+178	-85.5	0
+179	-85.5	0
+180	-85.5	0
+181	-85.5	0
+182	-85.5	0
+183	-85.5	0
+184	-85.5	0
+185	-85.5	0
+186	-85.5	0
+187	-85.5	0
+188	-85.5	0
+189	-85.5	0
+190	-85.5	0
+191	-85.5	0
+192	-85.5	0
+193	-85.5	0
+194	-85.5	0
+195	-85.5	0
+196	-85.5	0
+197	-85.5	0
+198	-85.5	0
+199	-85.5	0
+200	-85.5	0
+201	-85.5	0
+202	-85.5	0
+203	-85.5	0
+204	-85.5	0
+205	-85.5	0
+206	-85.5	0
+207	-85.5	0
+208	-85.5	0
+209	-85.5	0
+210	-85.5	0
+211	-85.5	0
+212	-85.5	0
+213	-85.5	0
+214	-85.5	0
+215	-85.5	0
+216	-85.5	0
+217	-85.5	0
+218	-85.5	0
+219	-85.5	0
+220	-85.5	0
+221	-85.5	0
+222	-85.5	0
+223	-85.5	0
+224	-85.5	0
+225	-85.5	0
+226	-85.5	0
+227	-85.5	0
+228	-85.5	0
+229	-85.5	0
+230	-85.5	0
+231	-85.5	0
+232	-85.5	0
+233	-85.5	0
+234	-85.5	0
+235	-85.5	0
+236	-85.5	0
+237	-85.5	0
+238	-85.5	0
+239	-85.5	0
+240	-85.5	0
+241	-85.5	0
+242	-85.5	0
+243	-85.5	0
+244	-85.5	0
+245	-85.5	0
+246	-85.5	0
+247	-85.5	0
+248	-85.5	0
+249	-85.5	0
+250	-85.5	0
+251	-85.5	0
+252	-85.5	0
+253	-85.5	0
+254	-85.5	0
+255	-85.5	0
+256	-85.5	0
+257	-85.5	0
+258	-85.5	0
+259	-85.5	0
+260	-85.5	0
+261	-85.5	0
+262	-85.5	0
+263	-85.5	0
+264	-85.5	0
+265	-85.5	0
+266	-85.5	0
+267	-85.5	0
+268	-85.5	0
+269	-85.5	0
+270	-85.5	0
+271	-85.5	0
+272	-85.5	0
+273	-85.5	0
+274	-85.5	0
+275	-85.5	0
+276	-85.5	0
+277	-85.5	0
+278	-85.5	0
+279	-85.5	0
+280	-85.5	0
+281	-85.5	0
+282	-85.5	0
+283	-85.5	0
+284	-85.5	0
+285	-85.5	0
+286	-85.5	0
+287	-85.5	0
+288	-85.5	0
+289	-85.5	0
+290	-85.5	0
+291	-85.5	0
+292	-85.5	0
+293	-85.5	0
+294	-85.5	0
+295	-85.5	0
+296	-85.5	0
+297	-85.5	0
+298	-85.5	0
+299	-85.5	0
+300	-85.5	0
+301	-85.5	0
+302	-85.5	0
+303	-85.5	0
+304	-85.5	0
+305	-85.5	0
+306	-85.5	0
+307	-85.5	0
+308	-85.5	0
+309	-85.5	0
+310	-85.5	0
+311	-85.5	0
+312	-85.5	0
+313	-85.5	0
+314	-85.5	0
+315	-85.5	0
+316	-85.5	0
+317	-85.5	0
+318	-85.5	0
+319	-85.5	0
+320	-85.5	0
+321	-85.5	0
+322	-85.5	0
+323	-85.5	0
+324	-85.5	0
+325	-85.5	0
+326	-85.5	0
+327	-85.5	0
+328	-85.5	0
+329	-85.5	0
+330	-85.5	0
+331	-85.5	0
+332	-85.5	0
+333	-85.5	0
+334	-85.5	0
+335	-85.5	0
+336	-85.5	0
+337	-85.5	0
+338	-85.5	0
+339	-85.5	0
+340	-85.5	0
+341	-85.5	0
+342	-85.5	0
+343	-85.5	0
+344	-85.5	0
+345	-85.5	0
+346	-85.5	0
+347	-85.5	0
+348	-85.5	0
+349	-85.5	0
+350	-85.5	0
+351	-85.5	0
+352	-85.5	0
+353	-85.5	0
+354	-85.5	0
+355	-85.5	0
+356	-85.5	0
+357	-85.5	0
+358	-85.5	0
+359	-85.5	0
+360	-85.5	0
+0	-85	0
+1	-85	0
+2	-85	0
+3	-85	0
+4	-85	0
+5	-85	0
+6	-85	0
+7	-85	0
+8	-85	0
+9	-85	0
+10	-85	0
+11	-85	0
+12	-85	0
+13	-85	0
+14	-85	0
+15	-85	0
+16	-85	0
+17	-85	0
+18	-85	0
+19	-85	0
+20	-85	0
+21	-85	0
+22	-85	0
+23	-85	0
+24	-85	0
+25	-85	0
+26	-85	0
+27	-85	0
+28	-85	0
+29	-85	0
+30	-85	0
+31	-85	0
+32	-85	0
+33	-85	0
+34	-85	0
+35	-85	0
+36	-85	0
+37	-85	0
+38	-85	0
+39	-85	0
+40	-85	0
+41	-85	0
+42	-85	0
+43	-85	0
+44	-85	0
+45	-85	0
+46	-85	0
+47	-85	0
+48	-85	0
+49	-85	0
+50	-85	0
+51	-85	0
+52	-85	0
+53	-85	0
+54	-85	0
+55	-85	0
+56	-85	0
+57	-85	0
+58	-85	0
+59	-85	0
+60	-85	0
+61	-85	0
+62	-85	0
+63	-85	0
+64	-85	0
+65	-85	0
+66	-85	0
+67	-85	0
+68	-85	0
+69	-85	0
+70	-85	0
+71	-85	0
+72	-85	0
+73	-85	0
+74	-85	0
+75	-85	0
+76	-85	0
+77	-85	0
+78	-85	0
+79	-85	0
+80	-85	0
+81	-85	0
+82	-85	0
+83	-85	0
+84	-85	0
+85	-85	0
+86	-85	0
+87	-85	0
+88	-85	0
+89	-85	0
+90	-85	0
+91	-85	0
+92	-85	0
+93	-85	0
+94	-85	0
+95	-85	0
+96	-85	0
+97	-85	0
+98	-85	0
+99	-85	0
+100	-85	0
+101	-85	0
+102	-85	0
+103	-85	0
+104	-85	0
+105	-85	0
+106	-85	0
+107	-85	0
+108	-85	0
+109	-85	0
+110	-85	0
+111	-85	0
+112	-85	0
+113	-85	0
+114	-85	0
+115	-85	0
+116	-85	0
+117	-85	0
+118	-85	0
+119	-85	0
+120	-85	0
+121	-85	0
+122	-85	0
+123	-85	0
+124	-85	0
+125	-85	0
+126	-85	0
+127	-85	0
+128	-85	0
+129	-85	0
+130	-85	0
+131	-85	0
+132	-85	0
+133	-85	0
+134	-85	0
+135	-85	0
+136	-85	0
+137	-85	0
+138	-85	0
+139	-85	0
+140	-85	0
+141	-85	0
+142	-85	0
+143	-85	0
+144	-85	0
+145	-85	0
+146	-85	0
+147	-85	0
+148	-85	0
+149	-85	0
+150	-85	0
+151	-85	0
+152	-85	0
+153	-85	0
+154	-85	0
+155	-85	0
+156	-85	0
+157	-85	0
+158	-85	0
+159	-85	0
+160	-85	0
+161	-85	0
+162	-85	0
+163	-85	0
+164	-85	0
+165	-85	0
+166	-85	0
+167	-85	0
+168	-85	0
+169	-85	0
+170	-85	0
+171	-85	0
+172	-85	0
+173	-85	0
+174	-85	0
+175	-85	0
+176	-85	0
+177	-85	0
+178	-85	0
+179	-85	0
+180	-85	0
+181	-85	0
+182	-85	0
+183	-85	0
+184	-85	0
+185	-85	0
+186	-85	0
+187	-85	0
+188	-85	0
+189	-85	0
+190	-85	0
+191	-85	0
+192	-85	0
+193	-85	0
+194	-85	0
+195	-85	0
+196	-85	0
+197	-85	0
+198	-85	0
+199	-85	0
+200	-85	0
+201	-85	0
+202	-85	0
+203	-85	0
+204	-85	0
+205	-85	0
+206	-85	0
+207	-85	0
+208	-85	0
+209	-85	0
+210	-85	0
+211	-85	0
+212	-85	0
+213	-85	0
+214	-85	0
+215	-85	0
+216	-85	0
+217	-85	0
+218	-85	0
+219	-85	0
+220	-85	0
+221	-85	0
+222	-85	0
+223	-85	0
+224	-85	0
+225	-85	0
+226	-85	0
+227	-85	0
+228	-85	0
+229	-85	0
+230	-85	0
+231	-85	0
+232	-85	0
+233	-85	0
+234	-85	0
+235	-85	0
+236	-85	0
+237	-85	0
+238	-85	0
+239	-85	0
+240	-85	0
+241	-85	0
+242	-85	0
+243	-85	0
+244	-85	0
+245	-85	0
+246	-85	0
+247	-85	0
+248	-85	0
+249	-85	0
+250	-85	0
+251	-85	0
+252	-85	0
+253	-85	0
+254	-85	0
+255	-85	0
+256	-85	0
+257	-85	0
+258	-85	0
+259	-85	0
+260	-85	0
+261	-85	0
+262	-85	0
+263	-85	0
+264	-85	0
+265	-85	0
+266	-85	0
+267	-85	0
+268	-85	0
+269	-85	0
+270	-85	0
+271	-85	0
+272	-85	0
+273	-85	0
+274	-85	0
+275	-85	0
+276	-85	0
+277	-85	0
+278	-85	0
+279	-85	0
+280	-85	0
+281	-85	0
+282	-85	0
+283	-85	0
+284	-85	0
+285	-85	0
+286	-85	0
+287	-85	0
+288	-85	0
+289	-85	0
+290	-85	0
+291	-85	0
+292	-85	0
+293	-85	0
+294	-85	0
+295	-85	0
+296	-85	0
+297	-85	0
+298	-85	0
+299	-85	0
+300	-85	0
+301	-85	0
+302	-85	0
+303	-85	0
+304	-85	0
+305	-85	0
+306	-85	0
+307	-85	0
+308	-85	0
+309	-85	0
+310	-85	0
+311	-85	0
+312	-85	0
+313	-85	0
+314	-85	0
+315	-85	0
+316	-85	0
+317	-85	0
+318	-85	0
+319	-85	0
+320	-85	0
+321	-85	0
+322	-85	0
+323	-85	0
+324	-85	0
+325	-85	0
+326	-85	0
+327	-85	0
+328	-85	0
+329	-85	0
+330	-85	0
+331	-85	0
+332	-85	0
+333	-85	0
+334	-85	0
+335	-85	0
+336	-85	0
+337	-85	0
+338	-85	0
+339	-85	0
+340	-85	0
+341	-85	0
+342	-85	0
+343	-85	0
+344	-85	0
+345	-85	0
+346	-85	0
+347	-85	0
+348	-85	0
+349	-85	0
+350	-85	0
+351	-85	0
+352	-85	0
+353	-85	0
+354	-85	0
+355	-85	0
+356	-85	0
+357	-85	0
+358	-85	0
+359	-85	0
+360	-85	0
+0	-84.5	0
+1	-84.5	0
+2	-84.5	0
+3	-84.5	0
+4	-84.5	0
+5	-84.5	0
+6	-84.5	0
+7	-84.5	0
+8	-84.5	0
+9	-84.5	0
+10	-84.5	0
+11	-84.5	0
+12	-84.5	0
+13	-84.5	0
+14	-84.5	0
+15	-84.5	0
+16	-84.5	0
+17	-84.5	0
+18	-84.5	0
+19	-84.5	0
+20	-84.5	0
+21	-84.5	0
+22	-84.5	0
+23	-84.5	0
+24	-84.5	0
+25	-84.5	0
+26	-84.5	0
+27	-84.5	0
+28	-84.5	0
+29	-84.5	0
+30	-84.5	0
+31	-84.5	0
+32	-84.5	0
+33	-84.5	0
+34	-84.5	0
+35	-84.5	0
+36	-84.5	0
+37	-84.5	0
+38	-84.5	0
+39	-84.5	0
+40	-84.5	0
+41	-84.5	0
+42	-84.5	0
+43	-84.5	0
+44	-84.5	0
+45	-84.5	0
+46	-84.5	0
+47	-84.5	0
+48	-84.5	0
+49	-84.5	0
+50	-84.5	0
+51	-84.5	0
+52	-84.5	0
+53	-84.5	0
+54	-84.5	0
+55	-84.5	0
+56	-84.5	0
+57	-84.5	0
+58	-84.5	0
+59	-84.5	0
+60	-84.5	0
+61	-84.5	0
+62	-84.5	0
+63	-84.5	0
+64	-84.5	0
+65	-84.5	0
+66	-84.5	0
+67	-84.5	0
+68	-84.5	0
+69	-84.5	0
+70	-84.5	0
+71	-84.5	0
+72	-84.5	0
+73	-84.5	0
+74	-84.5	0
+75	-84.5	0
+76	-84.5	0
+77	-84.5	0
+78	-84.5	0
+79	-84.5	0
+80	-84.5	0
+81	-84.5	0
+82	-84.5	0
+83	-84.5	0
+84	-84.5	0
+85	-84.5	0
+86	-84.5	0
+87	-84.5	0
+88	-84.5	0
+89	-84.5	0
+90	-84.5	0
+91	-84.5	0
+92	-84.5	0
+93	-84.5	0
+94	-84.5	0
+95	-84.5	0
+96	-84.5	0
+97	-84.5	0
+98	-84.5	0
+99	-84.5	0
+100	-84.5	0
+101	-84.5	0
+102	-84.5	0
+103	-84.5	0
+104	-84.5	0
+105	-84.5	0
+106	-84.5	0
+107	-84.5	0
+108	-84.5	0
+109	-84.5	0
+110	-84.5	0
+111	-84.5	0
+112	-84.5	0
+113	-84.5	0
+114	-84.5	0
+115	-84.5	0
+116	-84.5	0
+117	-84.5	0
+118	-84.5	0
+119	-84.5	0
+120	-84.5	0
+121	-84.5	0
+122	-84.5	0
+123	-84.5	0
+124	-84.5	0
+125	-84.5	0
+126	-84.5	0
+127	-84.5	0
+128	-84.5	0
+129	-84.5	0
+130	-84.5	0
+131	-84.5	0
+132	-84.5	0
+133	-84.5	0
+134	-84.5	0
+135	-84.5	0
+136	-84.5	0
+137	-84.5	0
+138	-84.5	0
+139	-84.5	0
+140	-84.5	0
+141	-84.5	0
+142	-84.5	0
+143	-84.5	0
+144	-84.5	0
+145	-84.5	0
+146	-84.5	0
+147	-84.5	0
+148	-84.5	0
+149	-84.5	0
+150	-84.5	0
+151	-84.5	0
+152	-84.5	0
+153	-84.5	0
+154	-84.5	0
+155	-84.5	0
+156	-84.5	0
+157	-84.5	0
+158	-84.5	0
+159	-84.5	0
+160	-84.5	0
+161	-84.5	0
+162	-84.5	0
+163	-84.5	0
+164	-84.5	0
+165	-84.5	0
+166	-84.5	0
+167	-84.5	0
+168	-84.5	0
+169	-84.5	0
+170	-84.5	0
+171	-84.5	0
+172	-84.5	0
+173	-84.5	0
+174	-84.5	0
+175	-84.5	0
+176	-84.5	0
+177	-84.5	0
+178	-84.5	0
+179	-84.5	0
+180	-84.5	0
+181	-84.5	0
+182	-84.5	0
+183	-84.5	0
+184	-84.5	0
+185	-84.5	0
+186	-84.5	0
+187	-84.5	0
+188	-84.5	0
+189	-84.5	0
+190	-84.5	0
+191	-84.5	0
+192	-84.5	0
+193	-84.5	0
+194	-84.5	0
+195	-84.5	0
+196	-84.5	0
+197	-84.5	0
+198	-84.5	0
+199	-84.5	0
+200	-84.5	0
+201	-84.5	0
+202	-84.5	0
+203	-84.5	0
+204	-84.5	0
+205	-84.5	0
+206	-84.5	0
+207	-84.5	0
+208	-84.5	0
+209	-84.5	0
+210	-84.5	0
+211	-84.5	0
+212	-84.5	0
+213	-84.5	0
+214	-84.5	0
+215	-84.5	0
+216	-84.5	0
+217	-84.5	0
+218	-84.5	0
+219	-84.5	0
+220	-84.5	0
+221	-84.5	0
+222	-84.5	0
+223	-84.5	0
+224	-84.5	0
+225	-84.5	0
+226	-84.5	0
+227	-84.5	0
+228	-84.5	0
+229	-84.5	0
+230	-84.5	0
+231	-84.5	0
+232	-84.5	0
+233	-84.5	0
+234	-84.5	0
+235	-84.5	0
+236	-84.5	0
+237	-84.5	0
+238	-84.5	0
+239	-84.5	0
+240	-84.5	0
+241	-84.5	0
+242	-84.5	0
+243	-84.5	0
+244	-84.5	0
+245	-84.5	0
+246	-84.5	0
+247	-84.5	0
+248	-84.5	0
+249	-84.5	0
+250	-84.5	0
+251	-84.5	0
+252	-84.5	0
+253	-84.5	0
+254	-84.5	0
+255	-84.5	0
+256	-84.5	0
+257	-84.5	0
+258	-84.5	0
+259	-84.5	0
+260	-84.5	0
+261	-84.5	0
+262	-84.5	0
+263	-84.5	0
+264	-84.5	0
+265	-84.5	0
+266	-84.5	0
+267	-84.5	0
+268	-84.5	0
+269	-84.5	0
+270	-84.5	0
+271	-84.5	0
+272	-84.5	0
+273	-84.5	0
+274	-84.5	0
+275	-84.5	0
+276	-84.5	0
+277	-84.5	0
+278	-84.5	0
+279	-84.5	0
+280	-84.5	0
+281	-84.5	0
+282	-84.5	0
+283	-84.5	0
+284	-84.5	0
+285	-84.5	0
+286	-84.5	0
+287	-84.5	0
+288	-84.5	0
+289	-84.5	0
+290	-84.5	0
+291	-84.5	0
+292	-84.5	0
+293	-84.5	0
+294	-84.5	0
+295	-84.5	0
+296	-84.5	0
+297	-84.5	0
+298	-84.5	0
+299	-84.5	0
+300	-84.5	0
+301	-84.5	0
+302	-84.5	0
+303	-84.5	0
+304	-84.5	0
+305	-84.5	0
+306	-84.5	0
+307	-84.5	0
+308	-84.5	0
+309	-84.5	0
+310	-84.5	0
+311	-84.5	0
+312	-84.5	0
+313	-84.5	0
+314	-84.5	0
+315	-84.5	0
+316	-84.5	0
+317	-84.5	0
+318	-84.5	0
+319	-84.5	0
+320	-84.5	0
+321	-84.5	0
+322	-84.5	0
+323	-84.5	0
+324	-84.5	0
+325	-84.5	0
+326	-84.5	0
+327	-84.5	0
+328	-84.5	0
+329	-84.5	0
+330	-84.5	0
+331	-84.5	0
+332	-84.5	0
+333	-84.5	0
+334	-84.5	0
+335	-84.5	0
+336	-84.5	0
+337	-84.5	0
+338	-84.5	0
+339	-84.5	0
+340	-84.5	0
+341	-84.5	0
+342	-84.5	0
+343	-84.5	0
+344	-84.5	0
+345	-84.5	0
+346	-84.5	0
+347	-84.5	0
+348	-84.5	0
+349	-84.5	0
+350	-84.5	0
+351	-84.5	0
+352	-84.5	0
+353	-84.5	0
+354	-84.5	0
+355	-84.5	0
+356	-84.5	0
+357	-84.5	0
+358	-84.5	0
+359	-84.5	0
+360	-84.5	0
+0	-84	0
+1	-84	0
+2	-84	0
+3	-84	0
+4	-84	0
+5	-84	0
+6	-84	0
+7	-84	0
+8	-84	0
+9	-84	0
+10	-84	0
+11	-84	0
+12	-84	0
+13	-84	0
+14	-84	0
+15	-84	0
+16	-84	0
+17	-84	0
+18	-84	0
+19	-84	0
+20	-84	0
+21	-84	0
+22	-84	0
+23	-84	0
+24	-84	0
+25	-84	0
+26	-84	0
+27	-84	0
+28	-84	0
+29	-84	0
+30	-84	0
+31	-84	0
+32	-84	0
+33	-84	0
+34	-84	0
+35	-84	0
+36	-84	0
+37	-84	0
+38	-84	0
+39	-84	0
+40	-84	0
+41	-84	0
+42	-84	0
+43	-84	0
+44	-84	0
+45	-84	0
+46	-84	0
+47	-84	0
+48	-84	0
+49	-84	0
+50	-84	0
+51	-84	0
+52	-84	0
+53	-84	0
+54	-84	0
+55	-84	0
+56	-84	0
+57	-84	0
+58	-84	0
+59	-84	0
+60	-84	0
+61	-84	0
+62	-84	0
+63	-84	0
+64	-84	0
+65	-84	0
+66	-84	0
+67	-84	0
+68	-84	0
+69	-84	0
+70	-84	0
+71	-84	0
+72	-84	0
+73	-84	0
+74	-84	0
+75	-84	0
+76	-84	0
+77	-84	0
+78	-84	0
+79	-84	0
+80	-84	0
+81	-84	0
+82	-84	0
+83	-84	0
+84	-84	0
+85	-84	0
+86	-84	0
+87	-84	0
+88	-84	0
+89	-84	0
+90	-84	0
+91	-84	0
+92	-84	0
+93	-84	0
+94	-84	0
+95	-84	0
+96	-84	0
+97	-84	0
+98	-84	0
+99	-84	0
+100	-84	0
+101	-84	0
+102	-84	0
+103	-84	0
+104	-84	0
+105	-84	0
+106	-84	0
+107	-84	0
+108	-84	0
+109	-84	0
+110	-84	0
+111	-84	0
+112	-84	0
+113	-84	0
+114	-84	0
+115	-84	0
+116	-84	0
+117	-84	0
+118	-84	0
+119	-84	0
+120	-84	0
+121	-84	0
+122	-84	0
+123	-84	0
+124	-84	0
+125	-84	0
+126	-84	0
+127	-84	0
+128	-84	0
+129	-84	0
+130	-84	0
+131	-84	0
+132	-84	0
+133	-84	0
+134	-84	0
+135	-84	0
+136	-84	0
+137	-84	0
+138	-84	0
+139	-84	0
+140	-84	0
+141	-84	0
+142	-84	0
+143	-84	0
+144	-84	0
+145	-84	0
+146	-84	0
+147	-84	0
+148	-84	0
+149	-84	0
+150	-84	0
+151	-84	0
+152	-84	0
+153	-84	0
+154	-84	0
+155	-84	0
+156	-84	0
+157	-84	0
+158	-84	0
+159	-84	0
+160	-84	0
+161	-84	0
+162	-84	0
+163	-84	0
+164	-84	0
+165	-84	0
+166	-84	0
+167	-84	0
+168	-84	0
+169	-84	0
+170	-84	0
+171	-84	0
+172	-84	0
+173	-84	0
+174	-84	0
+175	-84	0
+176	-84	0
+177	-84	0
+178	-84	0
+179	-84	0
+180	-84	0
+181	-84	0
+182	-84	0
+183	-84	0
+184	-84	0
+185	-84	0
+186	-84	0
+187	-84	0
+188	-84	0
+189	-84	0
+190	-84	0
+191	-84	0
+192	-84	0
+193	-84	0
+194	-84	0
+195	-84	0
+196	-84	0
+197	-84	0
+198	-84	0
+199	-84	0
+200	-84	0
+201	-84	0
+202	-84	0
+203	-84	0
+204	-84	0
+205	-84	0
+206	-84	0
+207	-84	0
+208	-84	0
+209	-84	0
+210	-84	0
+211	-84	0
+212	-84	0
+213	-84	0
+214	-84	0
+215	-84	0
+216	-84	0
+217	-84	0
+218	-84	0
+219	-84	0
+220	-84	0
+221	-84	0
+222	-84	0
+223	-84	0
+224	-84	0
+225	-84	0
+226	-84	0
+227	-84	0
+228	-84	0
+229	-84	0
+230	-84	0
+231	-84	0
+232	-84	0
+233	-84	0
+234	-84	0
+235	-84	0
+236	-84	0
+237	-84	0
+238	-84	0
+239	-84	0
+240	-84	0
+241	-84	0
+242	-84	0
+243	-84	0
+244	-84	0
+245	-84	0
+246	-84	0
+247	-84	0
+248	-84	0
+249	-84	0
+250	-84	0
+251	-84	0
+252	-84	0
+253	-84	0
+254	-84	0
+255	-84	0
+256	-84	0
+257	-84	0
+258	-84	0
+259	-84	0
+260	-84	0
+261	-84	0
+262	-84	0
+263	-84	0
+264	-84	0
+265	-84	0
+266	-84	0
+267	-84	0
+268	-84	0
+269	-84	0
+270	-84	0
+271	-84	0
+272	-84	0
+273	-84	0
+274	-84	0
+275	-84	0
+276	-84	0
+277	-84	0
+278	-84	0
+279	-84	0
+280	-84	0
+281	-84	0
+282	-84	0
+283	-84	0
+284	-84	0
+285	-84	0
+286	-84	0
+287	-84	0
+288	-84	0
+289	-84	0
+290	-84	0
+291	-84	0
+292	-84	0
+293	-84	0
+294	-84	0
+295	-84	0
+296	-84	0
+297	-84	0
+298	-84	0
+299	-84	0
+300	-84	0
+301	-84	0
+302	-84	0
+303	-84	0
+304	-84	0
+305	-84	0
+306	-84	0
+307	-84	0
+308	-84	0
+309	-84	0
+310	-84	0
+311	-84	0
+312	-84	0
+313	-84	0
+314	-84	0
+315	-84	0
+316	-84	0
+317	-84	0
+318	-84	0
+319	-84	0
+320	-84	0
+321	-84	0
+322	-84	0
+323	-84	0
+324	-84	0
+325	-84	0
+326	-84	0
+327	-84	0
+328	-84	0
+329	-84	0
+330	-84	0
+331	-84	0
+332	-84	0
+333	-84	0
+334	-84	0
+335	-84	0
+336	-84	0
+337	-84	0
+338	-84	0
+339	-84	0
+340	-84	0
+341	-84	0
+342	-84	0
+343	-84	0
+344	-84	0
+345	-84	0
+346	-84	0
+347	-84	0
+348	-84	0
+349	-84	0
+350	-84	0
+351	-84	0
+352	-84	0
+353	-84	0
+354	-84	0
+355	-84	0
+356	-84	0
+357	-84	0
+358	-84	0
+359	-84	0
+360	-84	0
+0	-83.5	0
+1	-83.5	0
+2	-83.5	0
+3	-83.5	0
+4	-83.5	0
+5	-83.5	0
+6	-83.5	0
+7	-83.5	0
+8	-83.5	0
+9	-83.5	0
+10	-83.5	0
+11	-83.5	0
+12	-83.5	0
+13	-83.5	0
+14	-83.5	0
+15	-83.5	0
+16	-83.5	0
+17	-83.5	0
+18	-83.5	0
+19	-83.5	0
+20	-83.5	0
+21	-83.5	0
+22	-83.5	0
+23	-83.5	0
+24	-83.5	0
+25	-83.5	0
+26	-83.5	0
+27	-83.5	0
+28	-83.5	0
+29	-83.5	0
+30	-83.5	0
+31	-83.5	0
+32	-83.5	0
+33	-83.5	0
+34	-83.5	0
+35	-83.5	0
+36	-83.5	0
+37	-83.5	0
+38	-83.5	0
+39	-83.5	0
+40	-83.5	0
+41	-83.5	0
+42	-83.5	0
+43	-83.5	0
+44	-83.5	0
+45	-83.5	0
+46	-83.5	0
+47	-83.5	0
+48	-83.5	0
+49	-83.5	0
+50	-83.5	0
+51	-83.5	0
+52	-83.5	0
+53	-83.5	0
+54	-83.5	0
+55	-83.5	0
+56	-83.5	0
+57	-83.5	0
+58	-83.5	0
+59	-83.5	0
+60	-83.5	0
+61	-83.5	0
+62	-83.5	0
+63	-83.5	0
+64	-83.5	0
+65	-83.5	0
+66	-83.5	0
+67	-83.5	0
+68	-83.5	0
+69	-83.5	0
+70	-83.5	0
+71	-83.5	0
+72	-83.5	0
+73	-83.5	0
+74	-83.5	0
+75	-83.5	0
+76	-83.5	0
+77	-83.5	0
+78	-83.5	0
+79	-83.5	0
+80	-83.5	0
+81	-83.5	0
+82	-83.5	0
+83	-83.5	0
+84	-83.5	0
+85	-83.5	0
+86	-83.5	0
+87	-83.5	0
+88	-83.5	0
+89	-83.5	0
+90	-83.5	0
+91	-83.5	0
+92	-83.5	0
+93	-83.5	0
+94	-83.5	0
+95	-83.5	0
+96	-83.5	0
+97	-83.5	0
+98	-83.5	0
+99	-83.5	0
+100	-83.5	0
+101	-83.5	0
+102	-83.5	0
+103	-83.5	0
+104	-83.5	0
+105	-83.5	0
+106	-83.5	0
+107	-83.5	0
+108	-83.5	0
+109	-83.5	0
+110	-83.5	0
+111	-83.5	0
+112	-83.5	0
+113	-83.5	0
+114	-83.5	0
+115	-83.5	0
+116	-83.5	0
+117	-83.5	0
+118	-83.5	0
+119	-83.5	0
+120	-83.5	0
+121	-83.5	0
+122	-83.5	0
+123	-83.5	0
+124	-83.5	0
+125	-83.5	0
+126	-83.5	0
+127	-83.5	0
+128	-83.5	0
+129	-83.5	0
+130	-83.5	0
+131	-83.5	0
+132	-83.5	0
+133	-83.5	0
+134	-83.5	0
+135	-83.5	0
+136	-83.5	0
+137	-83.5	0
+138	-83.5	0
+139	-83.5	0
+140	-83.5	0
+141	-83.5	0
+142	-83.5	0
+143	-83.5	0
+144	-83.5	0
+145	-83.5	0
+146	-83.5	0
+147	-83.5	0
+148	-83.5	0
+149	-83.5	0
+150	-83.5	0
+151	-83.5	0
+152	-83.5	0
+153	-83.5	0
+154	-83.5	0
+155	-83.5	0
+156	-83.5	0
+157	-83.5	0
+158	-83.5	0
+159	-83.5	0
+160	-83.5	0
+161	-83.5	0
+162	-83.5	0
+163	-83.5	0
+164	-83.5	0
+165	-83.5	0
+166	-83.5	0
+167	-83.5	0
+168	-83.5	0
+169	-83.5	0
+170	-83.5	0
+171	-83.5	0
+172	-83.5	0
+173	-83.5	0
+174	-83.5	0
+175	-83.5	0
+176	-83.5	0
+177	-83.5	0
+178	-83.5	0
+179	-83.5	0
+180	-83.5	0
+181	-83.5	0
+182	-83.5	0
+183	-83.5	0
+184	-83.5	0
+185	-83.5	0
+186	-83.5	0
+187	-83.5	0
+188	-83.5	0
+189	-83.5	0
+190	-83.5	0
+191	-83.5	0
+192	-83.5	0
+193	-83.5	0
+194	-83.5	0
+195	-83.5	0
+196	-83.5	0
+197	-83.5	0
+198	-83.5	0
+199	-83.5	0
+200	-83.5	0
+201	-83.5	0
+202	-83.5	0
+203	-83.5	0
+204	-83.5	0
+205	-83.5	0
+206	-83.5	0
+207	-83.5	0
+208	-83.5	0
+209	-83.5	0
+210	-83.5	0
+211	-83.5	0
+212	-83.5	0
+213	-83.5	0
+214	-83.5	0
+215	-83.5	0
+216	-83.5	0
+217	-83.5	0
+218	-83.5	0
+219	-83.5	0
+220	-83.5	0
+221	-83.5	0
+222	-83.5	0
+223	-83.5	0
+224	-83.5	0
+225	-83.5	0
+226	-83.5	0
+227	-83.5	0
+228	-83.5	0
+229	-83.5	0
+230	-83.5	0
+231	-83.5	0
+232	-83.5	0
+233	-83.5	0
+234	-83.5	0
+235	-83.5	0
+236	-83.5	0
+237	-83.5	0
+238	-83.5	0
+239	-83.5	0
+240	-83.5	0
+241	-83.5	0
+242	-83.5	0
+243	-83.5	0
+244	-83.5	0
+245	-83.5	0
+246	-83.5	0
+247	-83.5	0
+248	-83.5	0
+249	-83.5	0
+250	-83.5	0
+251	-83.5	0
+252	-83.5	0
+253	-83.5	0
+254	-83.5	0
+255	-83.5	0
+256	-83.5	0
+257	-83.5	0
+258	-83.5	0
+259	-83.5	0
+260	-83.5	0
+261	-83.5	0
+262	-83.5	0
+263	-83.5	0
+264	-83.5	0
+265	-83.5	0
+266	-83.5	0
+267	-83.5	0
+268	-83.5	0
+269	-83.5	0
+270	-83.5	0
+271	-83.5	0
+272	-83.5	0
+273	-83.5	0
+274	-83.5	0
+275	-83.5	0
+276	-83.5	0
+277	-83.5	0
+278	-83.5	0
+279	-83.5	0
+280	-83.5	0
+281	-83.5	0
+282	-83.5	0
+283	-83.5	0
+284	-83.5	0
+285	-83.5	0
+286	-83.5	0
+287	-83.5	0
+288	-83.5	0
+289	-83.5	0
+290	-83.5	0
+291	-83.5	0
+292	-83.5	0
+293	-83.5	0
+294	-83.5	0
+295	-83.5	0
+296	-83.5	0
+297	-83.5	0
+298	-83.5	0
+299	-83.5	0
+300	-83.5	0
+301	-83.5	0
+302	-83.5	0
+303	-83.5	0
+304	-83.5	0
+305	-83.5	0
+306	-83.5	0
+307	-83.5	0
+308	-83.5	0
+309	-83.5	0
+310	-83.5	0
+311	-83.5	0
+312	-83.5	0
+313	-83.5	0
+314	-83.5	0
+315	-83.5	0
+316	-83.5	0
+317	-83.5	0
+318	-83.5	0
+319	-83.5	0
+320	-83.5	0
+321	-83.5	0
+322	-83.5	0
+323	-83.5	0
+324	-83.5	0
+325	-83.5	0
+326	-83.5	0
+327	-83.5	0
+328	-83.5	0
+329	-83.5	0
+330	-83.5	0
+331	-83.5	0
+332	-83.5	0
+333	-83.5	0
+334	-83.5	0
+335	-83.5	0
+336	-83.5	0
+337	-83.5	0
+338	-83.5	0
+339	-83.5	0
+340	-83.5	0
+341	-83.5	0
+342	-83.5	0
+343	-83.5	0
+344	-83.5	0
+345	-83.5	0
+346	-83.5	0
+347	-83.5	0
+348	-83.5	0
+349	-83.5	0
+350	-83.5	0
+351	-83.5	0
+352	-83.5	0
+353	-83.5	0
+354	-83.5	0
+355	-83.5	0
+356	-83.5	0
+357	-83.5	0
+358	-83.5	0
+359	-83.5	0
+360	-83.5	0
+0	-83	0
+1	-83	0
+2	-83	0
+3	-83	0
+4	-83	0
+5	-83	0
+6	-83	0
+7	-83	0
+8	-83	0
+9	-83	0
+10	-83	0
+11	-83	0
+12	-83	0
+13	-83	0
+14	-83	0
+15	-83	0
+16	-83	0
+17	-83	0
+18	-83	0
+19	-83	0
+20	-83	0
+21	-83	0
+22	-83	0
+23	-83	0
+24	-83	0
+25	-83	0
+26	-83	0
+27	-83	0
+28	-83	0
+29	-83	0
+30	-83	0
+31	-83	0
+32	-83	0
+33	-83	0
+34	-83	0
+35	-83	0
+36	-83	0
+37	-83	0
+38	-83	0
+39	-83	0
+40	-83	0
+41	-83	0
+42	-83	0
+43	-83	0
+44	-83	0
+45	-83	0
+46	-83	0
+47	-83	0
+48	-83	0
+49	-83	0
+50	-83	0
+51	-83	0
+52	-83	0
+53	-83	0
+54	-83	0
+55	-83	0
+56	-83	0
+57	-83	0
+58	-83	0
+59	-83	0
+60	-83	0
+61	-83	0
+62	-83	0
+63	-83	0
+64	-83	0
+65	-83	0
+66	-83	0
+67	-83	0
+68	-83	0
+69	-83	0
+70	-83	0
+71	-83	0
+72	-83	0
+73	-83	0
+74	-83	0
+75	-83	0
+76	-83	0
+77	-83	0
+78	-83	0
+79	-83	0
+80	-83	0
+81	-83	0
+82	-83	0
+83	-83	0
+84	-83	0
+85	-83	0
+86	-83	0
+87	-83	0
+88	-83	0
+89	-83	0
+90	-83	0
+91	-83	0
+92	-83	0
+93	-83	0
+94	-83	0
+95	-83	0
+96	-83	0
+97	-83	0
+98	-83	0
+99	-83	0
+100	-83	0
+101	-83	0
+102	-83	0
+103	-83	0
+104	-83	0
+105	-83	0
+106	-83	0
+107	-83	0
+108	-83	0
+109	-83	0
+110	-83	0
+111	-83	0
+112	-83	0
+113	-83	0
+114	-83	0
+115	-83	0
+116	-83	0
+117	-83	0
+118	-83	0
+119	-83	0
+120	-83	0
+121	-83	0
+122	-83	0
+123	-83	0
+124	-83	0
+125	-83	0
+126	-83	0
+127	-83	0
+128	-83	0
+129	-83	0
+130	-83	0
+131	-83	0
+132	-83	0
+133	-83	0
+134	-83	0
+135	-83	0
+136	-83	0
+137	-83	0
+138	-83	0
+139	-83	0
+140	-83	0
+141	-83	0
+142	-83	0
+143	-83	0
+144	-83	0
+145	-83	0
+146	-83	0
+147	-83	0
+148	-83	0
+149	-83	0
+150	-83	0
+151	-83	0
+152	-83	0
+153	-83	0
+154	-83	0
+155	-83	0
+156	-83	0
+157	-83	0
+158	-83	0
+159	-83	0
+160	-83	0
+161	-83	0
+162	-83	0
+163	-83	0
+164	-83	0
+165	-83	0
+166	-83	0
+167	-83	0
+168	-83	0
+169	-83	0
+170	-83	0
+171	-83	0
+172	-83	0
+173	-83	0
+174	-83	0
+175	-83	0
+176	-83	0
+177	-83	0
+178	-83	0
+179	-83	0
+180	-83	0
+181	-83	0
+182	-83	0
+183	-83	0
+184	-83	0
+185	-83	0
+186	-83	0
+187	-83	0
+188	-83	0
+189	-83	0
+190	-83	0
+191	-83	0
+192	-83	0
+193	-83	0
+194	-83	0
+195	-83	0
+196	-83	0
+197	-83	0
+198	-83	0
+199	-83	0
+200	-83	0
+201	-83	0
+202	-83	0
+203	-83	0
+204	-83	0
+205	-83	0
+206	-83	0
+207	-83	0
+208	-83	0
+209	-83	0
+210	-83	0
+211	-83	0
+212	-83	0
+213	-83	0
+214	-83	0
+215	-83	0
+216	-83	0
+217	-83	0
+218	-83	0
+219	-83	0
+220	-83	0
+221	-83	0
+222	-83	0
+223	-83	0
+224	-83	0
+225	-83	0
+226	-83	0
+227	-83	0
+228	-83	0
+229	-83	0
+230	-83	0
+231	-83	0
+232	-83	0
+233	-83	0
+234	-83	0
+235	-83	0
+236	-83	0
+237	-83	0
+238	-83	0
+239	-83	0
+240	-83	0
+241	-83	0
+242	-83	0
+243	-83	0
+244	-83	0
+245	-83	0
+246	-83	0
+247	-83	0
+248	-83	0
+249	-83	0
+250	-83	0
+251	-83	0
+252	-83	0
+253	-83	0
+254	-83	0
+255	-83	0
+256	-83	0
+257	-83	0
+258	-83	0
+259	-83	0
+260	-83	0
+261	-83	0
+262	-83	0
+263	-83	0
+264	-83	0
+265	-83	0
+266	-83	0
+267	-83	0
+268	-83	0
+269	-83	0
+270	-83	0
+271	-83	0
+272	-83	0
+273	-83	0
+274	-83	0
+275	-83	0
+276	-83	0
+277	-83	0
+278	-83	0
+279	-83	0
+280	-83	0
+281	-83	0
+282	-83	0
+283	-83	0
+284	-83	0
+285	-83	0
+286	-83	0
+287	-83	0
+288	-83	0
+289	-83	0
+290	-83	0
+291	-83	0
+292	-83	0
+293	-83	0
+294	-83	0
+295	-83	0
+296	-83	0
+297	-83	0
+298	-83	0
+299	-83	0
+300	-83	0
+301	-83	0
+302	-83	0
+303	-83	0
+304	-83	0
+305	-83	0
+306	-83	0
+307	-83	0
+308	-83	0
+309	-83	0
+310	-83	0
+311	-83	0
+312	-83	0
+313	-83	0
+314	-83	0
+315	-83	0
+316	-83	0
+317	-83	0
+318	-83	0
+319	-83	0
+320	-83	0
+321	-83	0
+322	-83	0
+323	-83	0
+324	-83	0
+325	-83	0
+326	-83	0
+327	-83	0
+328	-83	0
+329	-83	0
+330	-83	0
+331	-83	0
+332	-83	0
+333	-83	0
+334	-83	0
+335	-83	0
+336	-83	0
+337	-83	0
+338	-83	0
+339	-83	0
+340	-83	0
+341	-83	0
+342	-83	0
+343	-83	0
+344	-83	0
+345	-83	0
+346	-83	0
+347	-83	0
+348	-83	0
+349	-83	0
+350	-83	0
+351	-83	0
+352	-83	0
+353	-83	0
+354	-83	0
+355	-83	0
+356	-83	0
+357	-83	0
+358	-83	0
+359	-83	0
+360	-83	0
+0	-82.5	0
+1	-82.5	0
+2	-82.5	0
+3	-82.5	0
+4	-82.5	0
+5	-82.5	0
+6	-82.5	0
+7	-82.5	0
+8	-82.5	0
+9	-82.5	0
+10	-82.5	0
+11	-82.5	0
+12	-82.5	0
+13	-82.5	0
+14	-82.5	0
+15	-82.5	0
+16	-82.5	0
+17	-82.5	0
+18	-82.5	0
+19	-82.5	0
+20	-82.5	0
+21	-82.5	0
+22	-82.5	0
+23	-82.5	0
+24	-82.5	0
+25	-82.5	0
+26	-82.5	0
+27	-82.5	0
+28	-82.5	0
+29	-82.5	0
+30	-82.5	0
+31	-82.5	0
+32	-82.5	0
+33	-82.5	0
+34	-82.5	0
+35	-82.5	0
+36	-82.5	0
+37	-82.5	0
+38	-82.5	0
+39	-82.5	0
+40	-82.5	0
+41	-82.5	0
+42	-82.5	0
+43	-82.5	0
+44	-82.5	0
+45	-82.5	0
+46	-82.5	0
+47	-82.5	0
+48	-82.5	0
+49	-82.5	0
+50	-82.5	0
+51	-82.5	0
+52	-82.5	0
+53	-82.5	0
+54	-82.5	0
+55	-82.5	0
+56	-82.5	0
+57	-82.5	0
+58	-82.5	0
+59	-82.5	0
+60	-82.5	0
+61	-82.5	0
+62	-82.5	0
+63	-82.5	0
+64	-82.5	0
+65	-82.5	0
+66	-82.5	0
+67	-82.5	0
+68	-82.5	0
+69	-82.5	0
+70	-82.5	0
+71	-82.5	0
+72	-82.5	0
+73	-82.5	0
+74	-82.5	0
+75	-82.5	0
+76	-82.5	0
+77	-82.5	0
+78	-82.5	0
+79	-82.5	0
+80	-82.5	0
+81	-82.5	0
+82	-82.5	0
+83	-82.5	0
+84	-82.5	0
+85	-82.5	0
+86	-82.5	0
+87	-82.5	0
+88	-82.5	0
+89	-82.5	0
+90	-82.5	0
+91	-82.5	0
+92	-82.5	0
+93	-82.5	0
+94	-82.5	0
+95	-82.5	0
+96	-82.5	0
+97	-82.5	0
+98	-82.5	0
+99	-82.5	0
+100	-82.5	0
+101	-82.5	0
+102	-82.5	0
+103	-82.5	0
+104	-82.5	0
+105	-82.5	0
+106	-82.5	0
+107	-82.5	0
+108	-82.5	0
+109	-82.5	0
+110	-82.5	0
+111	-82.5	0
+112	-82.5	0
+113	-82.5	0
+114	-82.5	0
+115	-82.5	0
+116	-82.5	0
+117	-82.5	0
+118	-82.5	0
+119	-82.5	0
+120	-82.5	0
+121	-82.5	0
+122	-82.5	0
+123	-82.5	0
+124	-82.5	0
+125	-82.5	0
+126	-82.5	0
+127	-82.5	0
+128	-82.5	0
+129	-82.5	0
+130	-82.5	0
+131	-82.5	0
+132	-82.5	0
+133	-82.5	0
+134	-82.5	0
+135	-82.5	0
+136	-82.5	0
+137	-82.5	0
+138	-82.5	0
+139	-82.5	0
+140	-82.5	0
+141	-82.5	0
+142	-82.5	0
+143	-82.5	0
+144	-82.5	0
+145	-82.5	0
+146	-82.5	0
+147	-82.5	0
+148	-82.5	0
+149	-82.5	0
+150	-82.5	0
+151	-82.5	0
+152	-82.5	0
+153	-82.5	0
+154	-82.5	0
+155	-82.5	0
+156	-82.5	0
+157	-82.5	0
+158	-82.5	0
+159	-82.5	0
+160	-82.5	0
+161	-82.5	0
+162	-82.5	0
+163	-82.5	0
+164	-82.5	0
+165	-82.5	0
+166	-82.5	0
+167	-82.5	0
+168	-82.5	0
+169	-82.5	0
+170	-82.5	0
+171	-82.5	0
+172	-82.5	0
+173	-82.5	0
+174	-82.5	0
+175	-82.5	0
+176	-82.5	0
+177	-82.5	0
+178	-82.5	0
+179	-82.5	0
+180	-82.5	0
+181	-82.5	0
+182	-82.5	0
+183	-82.5	0
+184	-82.5	0
+185	-82.5	0
+186	-82.5	0
+187	-82.5	0
+188	-82.5	0
+189	-82.5	0
+190	-82.5	0
+191	-82.5	0
+192	-82.5	0
+193	-82.5	0
+194	-82.5	0
+195	-82.5	0
+196	-82.5	0
+197	-82.5	0
+198	-82.5	0
+199	-82.5	0
+200	-82.5	0
+201	-82.5	0
+202	-82.5	0
+203	-82.5	0
+204	-82.5	0
+205	-82.5	0
+206	-82.5	0
+207	-82.5	0
+208	-82.5	0
+209	-82.5	0
+210	-82.5	0
+211	-82.5	0
+212	-82.5	0
+213	-82.5	0
+214	-82.5	0
+215	-82.5	0
+216	-82.5	0
+217	-82.5	0
+218	-82.5	0
+219	-82.5	0
+220	-82.5	0
+221	-82.5	0
+222	-82.5	0
+223	-82.5	0
+224	-82.5	0
+225	-82.5	0
+226	-82.5	0
+227	-82.5	0
+228	-82.5	0
+229	-82.5	0
+230	-82.5	0
+231	-82.5	0
+232	-82.5	0
+233	-82.5	0
+234	-82.5	0
+235	-82.5	0
+236	-82.5	0
+237	-82.5	0
+238	-82.5	0
+239	-82.5	0
+240	-82.5	0
+241	-82.5	0
+242	-82.5	0
+243	-82.5	0
+244	-82.5	0
+245	-82.5	0
+246	-82.5	0
+247	-82.5	0
+248	-82.5	0
+249	-82.5	0
+250	-82.5	0
+251	-82.5	0
+252	-82.5	0
+253	-82.5	0
+254	-82.5	0
+255	-82.5	0
+256	-82.5	0
+257	-82.5	0
+258	-82.5	0
+259	-82.5	0
+260	-82.5	0
+261	-82.5	0
+262	-82.5	0
+263	-82.5	0
+264	-82.5	0
+265	-82.5	0
+266	-82.5	0
+267	-82.5	0
+268	-82.5	0
+269	-82.5	0
+270	-82.5	0
+271	-82.5	0
+272	-82.5	0
+273	-82.5	0
+274	-82.5	0
+275	-82.5	0
+276	-82.5	0
+277	-82.5	0
+278	-82.5	0
+279	-82.5	0
+280	-82.5	0
+281	-82.5	0
+282	-82.5	0
+283	-82.5	0
+284	-82.5	0
+285	-82.5	0
+286	-82.5	0
+287	-82.5	0
+288	-82.5	0
+289	-82.5	0
+290	-82.5	0
+291	-82.5	0
+292	-82.5	0
+293	-82.5	0
+294	-82.5	0
+295	-82.5	0
+296	-82.5	0
+297	-82.5	0
+298	-82.5	0
+299	-82.5	0
+300	-82.5	0
+301	-82.5	0
+302	-82.5	0
+303	-82.5	0
+304	-82.5	0
+305	-82.5	0
+306	-82.5	0
+307	-82.5	0
+308	-82.5	0
+309	-82.5	0
+310	-82.5	0
+311	-82.5	0
+312	-82.5	0
+313	-82.5	0
+314	-82.5	0
+315	-82.5	0
+316	-82.5	0
+317	-82.5	0
+318	-82.5	0
+319	-82.5	0
+320	-82.5	0
+321	-82.5	0
+322	-82.5	0
+323	-82.5	0
+324	-82.5	0
+325	-82.5	0
+326	-82.5	0
+327	-82.5	0
+328	-82.5	0
+329	-82.5	0
+330	-82.5	0
+331	-82.5	0
+332	-82.5	0
+333	-82.5	0
+334	-82.5	0
+335	-82.5	0
+336	-82.5	0
+337	-82.5	0
+338	-82.5	0
+339	-82.5	0
+340	-82.5	0
+341	-82.5	0
+342	-82.5	0
+343	-82.5	0
+344	-82.5	0
+345	-82.5	0
+346	-82.5	0
+347	-82.5	0
+348	-82.5	0
+349	-82.5	0
+350	-82.5	0
+351	-82.5	0
+352	-82.5	0
+353	-82.5	0
+354	-82.5	0
+355	-82.5	0
+356	-82.5	0
+357	-82.5	0
+358	-82.5	0
+359	-82.5	0
+360	-82.5	0
+0	-82	0
+1	-82	0
+2	-82	0
+3	-82	0
+4	-82	0
+5	-82	0
+6	-82	0
+7	-82	0
+8	-82	0
+9	-82	0
+10	-82	0
+11	-82	0
+12	-82	0
+13	-82	0
+14	-82	0
+15	-82	0
+16	-82	0
+17	-82	0
+18	-82	0
+19	-82	0
+20	-82	0
+21	-82	0
+22	-82	0
+23	-82	0
+24	-82	0
+25	-82	0
+26	-82	0
+27	-82	0
+28	-82	0
+29	-82	0
+30	-82	0
+31	-82	0
+32	-82	0
+33	-82	0
+34	-82	0
+35	-82	0
+36	-82	0
+37	-82	0
+38	-82	0
+39	-82	0
+40	-82	0
+41	-82	0
+42	-82	0
+43	-82	0
+44	-82	0
+45	-82	0
+46	-82	0
+47	-82	0
+48	-82	0
+49	-82	0
+50	-82	0
+51	-82	0
+52	-82	0
+53	-82	0
+54	-82	0
+55	-82	0
+56	-82	0
+57	-82	0
+58	-82	0
+59	-82	0
+60	-82	0
+61	-82	0
+62	-82	0
+63	-82	0
+64	-82	0
+65	-82	0
+66	-82	0
+67	-82	0
+68	-82	0
+69	-82	0
+70	-82	0
+71	-82	0
+72	-82	0
+73	-82	0
+74	-82	0
+75	-82	0
+76	-82	0
+77	-82	0
+78	-82	0
+79	-82	0
+80	-82	0
+81	-82	0
+82	-82	0
+83	-82	0
+84	-82	0
+85	-82	0
+86	-82	0
+87	-82	0
+88	-82	0
+89	-82	0
+90	-82	0
+91	-82	0
+92	-82	0
+93	-82	0
+94	-82	0
+95	-82	0
+96	-82	0
+97	-82	0
+98	-82	0
+99	-82	0
+100	-82	0
+101	-82	0
+102	-82	0
+103	-82	0
+104	-82	0
+105	-82	0
+106	-82	0
+107	-82	0
+108	-82	0
+109	-82	0
+110	-82	0
+111	-82	0
+112	-82	0
+113	-82	0
+114	-82	0
+115	-82	0
+116	-82	0
+117	-82	0
+118	-82	0
+119	-82	0
+120	-82	0
+121	-82	0
+122	-82	0
+123	-82	0
+124	-82	0
+125	-82	0
+126	-82	0
+127	-82	0
+128	-82	0
+129	-82	0
+130	-82	0
+131	-82	0
+132	-82	0
+133	-82	0
+134	-82	0
+135	-82	0
+136	-82	0
+137	-82	0
+138	-82	0
+139	-82	0
+140	-82	0
+141	-82	0
+142	-82	0
+143	-82	0
+144	-82	0
+145	-82	0
+146	-82	0
+147	-82	0
+148	-82	0
+149	-82	0
+150	-82	0
+151	-82	0
+152	-82	0
+153	-82	0
+154	-82	0
+155	-82	0
+156	-82	0
+157	-82	0
+158	-82	0
+159	-82	0
+160	-82	0
+161	-82	0
+162	-82	0
+163	-82	0
+164	-82	0
+165	-82	0
+166	-82	0
+167	-82	0
+168	-82	0
+169	-82	0
+170	-82	0
+171	-82	0
+172	-82	0
+173	-82	0
+174	-82	0
+175	-82	0
+176	-82	0
+177	-82	0
+178	-82	0
+179	-82	0
+180	-82	0
+181	-82	0
+182	-82	0
+183	-82	0
+184	-82	0
+185	-82	0
+186	-82	0
+187	-82	0
+188	-82	0
+189	-82	0
+190	-82	0
+191	-82	0
+192	-82	0
+193	-82	0
+194	-82	0
+195	-82	0
+196	-82	0
+197	-82	0
+198	-82	0
+199	-82	0
+200	-82	0
+201	-82	0
+202	-82	0
+203	-82	0
+204	-82	0
+205	-82	0
+206	-82	0
+207	-82	0
+208	-82	0
+209	-82	0
+210	-82	0
+211	-82	0
+212	-82	0
+213	-82	0
+214	-82	0
+215	-82	0
+216	-82	0
+217	-82	0
+218	-82	0
+219	-82	0
+220	-82	0
+221	-82	0
+222	-82	0
+223	-82	0
+224	-82	0
+225	-82	0
+226	-82	0
+227	-82	0
+228	-82	0
+229	-82	0
+230	-82	0
+231	-82	0
+232	-82	0
+233	-82	0
+234	-82	0
+235	-82	0
+236	-82	0
+237	-82	0
+238	-82	0
+239	-82	0
+240	-82	0
+241	-82	0
+242	-82	0
+243	-82	0
+244	-82	0
+245	-82	0
+246	-82	0
+247	-82	0
+248	-82	0
+249	-82	0
+250	-82	0
+251	-82	0
+252	-82	0
+253	-82	0
+254	-82	0
+255	-82	0
+256	-82	0
+257	-82	0
+258	-82	0
+259	-82	0
+260	-82	0
+261	-82	0
+262	-82	0
+263	-82	0
+264	-82	0
+265	-82	0
+266	-82	0
+267	-82	0
+268	-82	0
+269	-82	0
+270	-82	0
+271	-82	0
+272	-82	0
+273	-82	0
+274	-82	0
+275	-82	0
+276	-82	0
+277	-82	0
+278	-82	0
+279	-82	0
+280	-82	0
+281	-82	0
+282	-82	0
+283	-82	0
+284	-82	0
+285	-82	0
+286	-82	0
+287	-82	0
+288	-82	0
+289	-82	0
+290	-82	0
+291	-82	0
+292	-82	0
+293	-82	0
+294	-82	0
+295	-82	0
+296	-82	0
+297	-82	0
+298	-82	0
+299	-82	0
+300	-82	0
+301	-82	0
+302	-82	0
+303	-82	0
+304	-82	0
+305	-82	0
+306	-82	0
+307	-82	0
+308	-82	0
+309	-82	0
+310	-82	0
+311	-82	0
+312	-82	0
+313	-82	0
+314	-82	0
+315	-82	0
+316	-82	0
+317	-82	0
+318	-82	0
+319	-82	0
+320	-82	0
+321	-82	0
+322	-82	0
+323	-82	0
+324	-82	0
+325	-82	0
+326	-82	0
+327	-82	0
+328	-82	0
+329	-82	0
+330	-82	0
+331	-82	0
+332	-82	0
+333	-82	0
+334	-82	0
+335	-82	0
+336	-82	0
+337	-82	0
+338	-82	0
+339	-82	0
+340	-82	0
+341	-82	0
+342	-82	0
+343	-82	0
+344	-82	0
+345	-82	0
+346	-82	0
+347	-82	0
+348	-82	0
+349	-82	0
+350	-82	0
+351	-82	0
+352	-82	0
+353	-82	0
+354	-82	0
+355	-82	0
+356	-82	0
+357	-82	0
+358	-82	0
+359	-82	0
+360	-82	0
+0	-81.5	0
+1	-81.5	0
+2	-81.5	0
+3	-81.5	0
+4	-81.5	0
+5	-81.5	0
+6	-81.5	0
+7	-81.5	0
+8	-81.5	0
+9	-81.5	0
+10	-81.5	0
+11	-81.5	0
+12	-81.5	0
+13	-81.5	0
+14	-81.5	0
+15	-81.5	0
+16	-81.5	0
+17	-81.5	0
+18	-81.5	0
+19	-81.5	0
+20	-81.5	0
+21	-81.5	0
+22	-81.5	0
+23	-81.5	0
+24	-81.5	0
+25	-81.5	0
+26	-81.5	0
+27	-81.5	0
+28	-81.5	0
+29	-81.5	0
+30	-81.5	0
+31	-81.5	0
+32	-81.5	0
+33	-81.5	0
+34	-81.5	0
+35	-81.5	0
+36	-81.5	0
+37	-81.5	0
+38	-81.5	0
+39	-81.5	0
+40	-81.5	0
+41	-81.5	0
+42	-81.5	0
+43	-81.5	0
+44	-81.5	0
+45	-81.5	0
+46	-81.5	0
+47	-81.5	0
+48	-81.5	0
+49	-81.5	0
+50	-81.5	0
+51	-81.5	0
+52	-81.5	0
+53	-81.5	0
+54	-81.5	0
+55	-81.5	0
+56	-81.5	0
+57	-81.5	0
+58	-81.5	0
+59	-81.5	0
+60	-81.5	0
+61	-81.5	0
+62	-81.5	0
+63	-81.5	0
+64	-81.5	0
+65	-81.5	0
+66	-81.5	0
+67	-81.5	0
+68	-81.5	0
+69	-81.5	0
+70	-81.5	0
+71	-81.5	0
+72	-81.5	0
+73	-81.5	0
+74	-81.5	0
+75	-81.5	0
+76	-81.5	0
+77	-81.5	0
+78	-81.5	0
+79	-81.5	0
+80	-81.5	0
+81	-81.5	0
+82	-81.5	0
+83	-81.5	0
+84	-81.5	0
+85	-81.5	0
+86	-81.5	0
+87	-81.5	0
+88	-81.5	0
+89	-81.5	0
+90	-81.5	0
+91	-81.5	0
+92	-81.5	0
+93	-81.5	0
+94	-81.5	0
+95	-81.5	0
+96	-81.5	0
+97	-81.5	0
+98	-81.5	0
+99	-81.5	0
+100	-81.5	0
+101	-81.5	0
+102	-81.5	0
+103	-81.5	0
+104	-81.5	0
+105	-81.5	0
+106	-81.5	0
+107	-81.5	0
+108	-81.5	0
+109	-81.5	0
+110	-81.5	0
+111	-81.5	0
+112	-81.5	0
+113	-81.5	0
+114	-81.5	0
+115	-81.5	0
+116	-81.5	0
+117	-81.5	0
+118	-81.5	0
+119	-81.5	0
+120	-81.5	0
+121	-81.5	0
+122	-81.5	0
+123	-81.5	0
+124	-81.5	0
+125	-81.5	0
+126	-81.5	0
+127	-81.5	0
+128	-81.5	0
+129	-81.5	0
+130	-81.5	0
+131	-81.5	0
+132	-81.5	0
+133	-81.5	0
+134	-81.5	0
+135	-81.5	0
+136	-81.5	0
+137	-81.5	0
+138	-81.5	0
+139	-81.5	0
+140	-81.5	0
+141	-81.5	0
+142	-81.5	0
+143	-81.5	0
+144	-81.5	0
+145	-81.5	0
+146	-81.5	0
+147	-81.5	0
+148	-81.5	0
+149	-81.5	0
+150	-81.5	0
+151	-81.5	0
+152	-81.5	0
+153	-81.5	0
+154	-81.5	0
+155	-81.5	0
+156	-81.5	0
+157	-81.5	0
+158	-81.5	0
+159	-81.5	0
+160	-81.5	0
+161	-81.5	0
+162	-81.5	0
+163	-81.5	0
+164	-81.5	0
+165	-81.5	0
+166	-81.5	0
+167	-81.5	0
+168	-81.5	0
+169	-81.5	0
+170	-81.5	0
+171	-81.5	0
+172	-81.5	0
+173	-81.5	0
+174	-81.5	0
+175	-81.5	0
+176	-81.5	0
+177	-81.5	0
+178	-81.5	0
+179	-81.5	0
+180	-81.5	0
+181	-81.5	0
+182	-81.5	0
+183	-81.5	0
+184	-81.5	0
+185	-81.5	0
+186	-81.5	0
+187	-81.5	0
+188	-81.5	0
+189	-81.5	0
+190	-81.5	0
+191	-81.5	0
+192	-81.5	0
+193	-81.5	0
+194	-81.5	0
+195	-81.5	0
+196	-81.5	0
+197	-81.5	0
+198	-81.5	0
+199	-81.5	0
+200	-81.5	0
+201	-81.5	0
+202	-81.5	0
+203	-81.5	0
+204	-81.5	0
+205	-81.5	0
+206	-81.5	0
+207	-81.5	0
+208	-81.5	0
+209	-81.5	0
+210	-81.5	0
+211	-81.5	0
+212	-81.5	0
+213	-81.5	0
+214	-81.5	0
+215	-81.5	0
+216	-81.5	0
+217	-81.5	0
+218	-81.5	0
+219	-81.5	0
+220	-81.5	0
+221	-81.5	0
+222	-81.5	0
+223	-81.5	0
+224	-81.5	0
+225	-81.5	0
+226	-81.5	0
+227	-81.5	0
+228	-81.5	0
+229	-81.5	0
+230	-81.5	0
+231	-81.5	0
+232	-81.5	0
+233	-81.5	0
+234	-81.5	0
+235	-81.5	0
+236	-81.5	0
+237	-81.5	0
+238	-81.5	0
+239	-81.5	0
+240	-81.5	0
+241	-81.5	0
+242	-81.5	0
+243	-81.5	0
+244	-81.5	0
+245	-81.5	0
+246	-81.5	0
+247	-81.5	0
+248	-81.5	0
+249	-81.5	0
+250	-81.5	0
+251	-81.5	0
+252	-81.5	0
+253	-81.5	0
+254	-81.5	0
+255	-81.5	0
+256	-81.5	0
+257	-81.5	0
+258	-81.5	0
+259	-81.5	0
+260	-81.5	0
+261	-81.5	0
+262	-81.5	0
+263	-81.5	0
+264	-81.5	0
+265	-81.5	0
+266	-81.5	0
+267	-81.5	0
+268	-81.5	0
+269	-81.5	0
+270	-81.5	0
+271	-81.5	0
+272	-81.5	0
+273	-81.5	0
+274	-81.5	0
+275	-81.5	0
+276	-81.5	0
+277	-81.5	0
+278	-81.5	0
+279	-81.5	0
+280	-81.5	0
+281	-81.5	0
+282	-81.5	0
+283	-81.5	0
+284	-81.5	0
+285	-81.5	0
+286	-81.5	0
+287	-81.5	0
+288	-81.5	0
+289	-81.5	0
+290	-81.5	0
+291	-81.5	0
+292	-81.5	0
+293	-81.5	0
+294	-81.5	0
+295	-81.5	0
+296	-81.5	0
+297	-81.5	0
+298	-81.5	0
+299	-81.5	0
+300	-81.5	0
+301	-81.5	0
+302	-81.5	0
+303	-81.5	0
+304	-81.5	0
+305	-81.5	0
+306	-81.5	0
+307	-81.5	0
+308	-81.5	0
+309	-81.5	0
+310	-81.5	0
+311	-81.5	0
+312	-81.5	0
+313	-81.5	0
+314	-81.5	0
+315	-81.5	0
+316	-81.5	0
+317	-81.5	0
+318	-81.5	0
+319	-81.5	0
+320	-81.5	0
+321	-81.5	0
+322	-81.5	0
+323	-81.5	0
+324	-81.5	0
+325	-81.5	0
+326	-81.5	0
+327	-81.5	0
+328	-81.5	0
+329	-81.5	0
+330	-81.5	0
+331	-81.5	0
+332	-81.5	0
+333	-81.5	0
+334	-81.5	0
+335	-81.5	0
+336	-81.5	0
+337	-81.5	0
+338	-81.5	0
+339	-81.5	0
+340	-81.5	0
+341	-81.5	0
+342	-81.5	0
+343	-81.5	0
+344	-81.5	0
+345	-81.5	0
+346	-81.5	0
+347	-81.5	0
+348	-81.5	0
+349	-81.5	0
+350	-81.5	0
+351	-81.5	0
+352	-81.5	0
+353	-81.5	0
+354	-81.5	0
+355	-81.5	0
+356	-81.5	0
+357	-81.5	0
+358	-81.5	0
+359	-81.5	0
+360	-81.5	0
+0	-81	0
+1	-81	0
+2	-81	0
+3	-81	0
+4	-81	0
+5	-81	0
+6	-81	0
+7	-81	0
+8	-81	0
+9	-81	0
+10	-81	0
+11	-81	0
+12	-81	0
+13	-81	0
+14	-81	0
+15	-81	0
+16	-81	0
+17	-81	0
+18	-81	0
+19	-81	0
+20	-81	0
+21	-81	0
+22	-81	0
+23	-81	0
+24	-81	0
+25	-81	0
+26	-81	0
+27	-81	0
+28	-81	0
+29	-81	0
+30	-81	0
+31	-81	0
+32	-81	0
+33	-81	0
+34	-81	0
+35	-81	0
+36	-81	0
+37	-81	0
+38	-81	0
+39	-81	0
+40	-81	0
+41	-81	0
+42	-81	0
+43	-81	0
+44	-81	0
+45	-81	0
+46	-81	0
+47	-81	0
+48	-81	0
+49	-81	0
+50	-81	0
+51	-81	0
+52	-81	0
+53	-81	0
+54	-81	0
+55	-81	0
+56	-81	0
+57	-81	0
+58	-81	0
+59	-81	0
+60	-81	0
+61	-81	0
+62	-81	0
+63	-81	0
+64	-81	0
+65	-81	0
+66	-81	0
+67	-81	0
+68	-81	0
+69	-81	0
+70	-81	0
+71	-81	0
+72	-81	0
+73	-81	0
+74	-81	0
+75	-81	0
+76	-81	0
+77	-81	0
+78	-81	0
+79	-81	0
+80	-81	0
+81	-81	0
+82	-81	0
+83	-81	0
+84	-81	0
+85	-81	0
+86	-81	0
+87	-81	0
+88	-81	0
+89	-81	0
+90	-81	0
+91	-81	0
+92	-81	0
+93	-81	0
+94	-81	0
+95	-81	0
+96	-81	0
+97	-81	0
+98	-81	0
+99	-81	0
+100	-81	0
+101	-81	0
+102	-81	0
+103	-81	0
+104	-81	0
+105	-81	0
+106	-81	0
+107	-81	0
+108	-81	0
+109	-81	0
+110	-81	0
+111	-81	0
+112	-81	0
+113	-81	0
+114	-81	0
+115	-81	0
+116	-81	0
+117	-81	0
+118	-81	0
+119	-81	0
+120	-81	0
+121	-81	0
+122	-81	0
+123	-81	0
+124	-81	0
+125	-81	0
+126	-81	0
+127	-81	0
+128	-81	0
+129	-81	0
+130	-81	0
+131	-81	0
+132	-81	0
+133	-81	0
+134	-81	0
+135	-81	0
+136	-81	0
+137	-81	0
+138	-81	0
+139	-81	0
+140	-81	0
+141	-81	0
+142	-81	0
+143	-81	0
+144	-81	0
+145	-81	0
+146	-81	0
+147	-81	0
+148	-81	0
+149	-81	0
+150	-81	0
+151	-81	0
+152	-81	0
+153	-81	0
+154	-81	0
+155	-81	0
+156	-81	0
+157	-81	0
+158	-81	0
+159	-81	0
+160	-81	0
+161	-81	0
+162	-81	0
+163	-81	0
+164	-81	0
+165	-81	0
+166	-81	0
+167	-81	0
+168	-81	0
+169	-81	0
+170	-81	0
+171	-81	0
+172	-81	0
+173	-81	0
+174	-81	0
+175	-81	0
+176	-81	0
+177	-81	0
+178	-81	0
+179	-81	0
+180	-81	0
+181	-81	0
+182	-81	0
+183	-81	0
+184	-81	0
+185	-81	0
+186	-81	0
+187	-81	0
+188	-81	0
+189	-81	0
+190	-81	0
+191	-81	0
+192	-81	0
+193	-81	0
+194	-81	0
+195	-81	0
+196	-81	0
+197	-81	0
+198	-81	0
+199	-81	0
+200	-81	0
+201	-81	0
+202	-81	0
+203	-81	0
+204	-81	0
+205	-81	0
+206	-81	0
+207	-81	0
+208	-81	0
+209	-81	0
+210	-81	0
+211	-81	0
+212	-81	0
+213	-81	0
+214	-81	0
+215	-81	0
+216	-81	0
+217	-81	0
+218	-81	0
+219	-81	0
+220	-81	0
+221	-81	0
+222	-81	0
+223	-81	0
+224	-81	0
+225	-81	0
+226	-81	0
+227	-81	0
+228	-81	0
+229	-81	0
+230	-81	0
+231	-81	0
+232	-81	0
+233	-81	0
+234	-81	0
+235	-81	0
+236	-81	0
+237	-81	0
+238	-81	0
+239	-81	0
+240	-81	0
+241	-81	0
+242	-81	0
+243	-81	0
+244	-81	0
+245	-81	0
+246	-81	0
+247	-81	0
+248	-81	0
+249	-81	0
+250	-81	0
+251	-81	0
+252	-81	0
+253	-81	0
+254	-81	0
+255	-81	0
+256	-81	0
+257	-81	0
+258	-81	0
+259	-81	0
+260	-81	0
+261	-81	0
+262	-81	0
+263	-81	0
+264	-81	0
+265	-81	0
+266	-81	0
+267	-81	0
+268	-81	0
+269	-81	0
+270	-81	0
+271	-81	0
+272	-81	0
+273	-81	0
+274	-81	0
+275	-81	0
+276	-81	0
+277	-81	0
+278	-81	0
+279	-81	0
+280	-81	0
+281	-81	0
+282	-81	0
+283	-81	0
+284	-81	0
+285	-81	0
+286	-81	0
+287	-81	0
+288	-81	0
+289	-81	0
+290	-81	0
+291	-81	0
+292	-81	0
+293	-81	0
+294	-81	0
+295	-81	0
+296	-81	0
+297	-81	0
+298	-81	0
+299	-81	0
+300	-81	0
+301	-81	0
+302	-81	0
+303	-81	0
+304	-81	0
+305	-81	0
+306	-81	0
+307	-81	0
+308	-81	0
+309	-81	0
+310	-81	0
+311	-81	0
+312	-81	0
+313	-81	0
+314	-81	0
+315	-81	0
+316	-81	0
+317	-81	0
+318	-81	0
+319	-81	0
+320	-81	0
+321	-81	0
+322	-81	0
+323	-81	0
+324	-81	0
+325	-81	0
+326	-81	0
+327	-81	0
+328	-81	0
+329	-81	0
+330	-81	0
+331	-81	0
+332	-81	0
+333	-81	0
+334	-81	0
+335	-81	0
+336	-81	0
+337	-81	0
+338	-81	0
+339	-81	0
+340	-81	0
+341	-81	0
+342	-81	0
+343	-81	0
+344	-81	0
+345	-81	0
+346	-81	0
+347	-81	0
+348	-81	0
+349	-81	0
+350	-81	0
+351	-81	0
+352	-81	0
+353	-81	0
+354	-81	0
+355	-81	0
+356	-81	0
+357	-81	0
+358	-81	0
+359	-81	0
+360	-81	0
+0	-80.5	0
+1	-80.5	0
+2	-80.5	0
+3	-80.5	0
+4	-80.5	0
+5	-80.5	0
+6	-80.5	0
+7	-80.5	0
+8	-80.5	0
+9	-80.5	0
+10	-80.5	0
+11	-80.5	0
+12	-80.5	0
+13	-80.5	0
+14	-80.5	0
+15	-80.5	0
+16	-80.5	0
+17	-80.5	0
+18	-80.5	0
+19	-80.5	0
+20	-80.5	0
+21	-80.5	0
+22	-80.5	0
+23	-80.5	0
+24	-80.5	0
+25	-80.5	0
+26	-80.5	0
+27	-80.5	0
+28	-80.5	0
+29	-80.5	0
+30	-80.5	0
+31	-80.5	0
+32	-80.5	0
+33	-80.5	0
+34	-80.5	0
+35	-80.5	0
+36	-80.5	0
+37	-80.5	0
+38	-80.5	0
+39	-80.5	0
+40	-80.5	0
+41	-80.5	0
+42	-80.5	0
+43	-80.5	0
+44	-80.5	0
+45	-80.5	0
+46	-80.5	0
+47	-80.5	0
+48	-80.5	0
+49	-80.5	0
+50	-80.5	0
+51	-80.5	0
+52	-80.5	0
+53	-80.5	0
+54	-80.5	0
+55	-80.5	0
+56	-80.5	0
+57	-80.5	0
+58	-80.5	0
+59	-80.5	0
+60	-80.5	0
+61	-80.5	0
+62	-80.5	0
+63	-80.5	0
+64	-80.5	0
+65	-80.5	0
+66	-80.5	0
+67	-80.5	0
+68	-80.5	0
+69	-80.5	0
+70	-80.5	0
+71	-80.5	0
+72	-80.5	0
+73	-80.5	0
+74	-80.5	0
+75	-80.5	0
+76	-80.5	0
+77	-80.5	0
+78	-80.5	0
+79	-80.5	0
+80	-80.5	0
+81	-80.5	0
+82	-80.5	0
+83	-80.5	0
+84	-80.5	0
+85	-80.5	0
+86	-80.5	0
+87	-80.5	0
+88	-80.5	0
+89	-80.5	0
+90	-80.5	0
+91	-80.5	0
+92	-80.5	0
+93	-80.5	0
+94	-80.5	0
+95	-80.5	0
+96	-80.5	0
+97	-80.5	0
+98	-80.5	0
+99	-80.5	0
+100	-80.5	0
+101	-80.5	0
+102	-80.5	0
+103	-80.5	0
+104	-80.5	0
+105	-80.5	0
+106	-80.5	0
+107	-80.5	0
+108	-80.5	0
+109	-80.5	0
+110	-80.5	0
+111	-80.5	0
+112	-80.5	0
+113	-80.5	0
+114	-80.5	0
+115	-80.5	0
+116	-80.5	0
+117	-80.5	0
+118	-80.5	0
+119	-80.5	0
+120	-80.5	0
+121	-80.5	0
+122	-80.5	0
+123	-80.5	0
+124	-80.5	0
+125	-80.5	0
+126	-80.5	0
+127	-80.5	0
+128	-80.5	0
+129	-80.5	0
+130	-80.5	0
+131	-80.5	0
+132	-80.5	0
+133	-80.5	0
+134	-80.5	0
+135	-80.5	0
+136	-80.5	0
+137	-80.5	0
+138	-80.5	0
+139	-80.5	0
+140	-80.5	0
+141	-80.5	0
+142	-80.5	0
+143	-80.5	0
+144	-80.5	0
+145	-80.5	0
+146	-80.5	0
+147	-80.5	0
+148	-80.5	0
+149	-80.5	0
+150	-80.5	0
+151	-80.5	0
+152	-80.5	0
+153	-80.5	0
+154	-80.5	0
+155	-80.5	0
+156	-80.5	0
+157	-80.5	0
+158	-80.5	0
+159	-80.5	0
+160	-80.5	0
+161	-80.5	0
+162	-80.5	0
+163	-80.5	0
+164	-80.5	0
+165	-80.5	0
+166	-80.5	0
+167	-80.5	0
+168	-80.5	0
+169	-80.5	0
+170	-80.5	0
+171	-80.5	0
+172	-80.5	0
+173	-80.5	0
+174	-80.5	0
+175	-80.5	0
+176	-80.5	0
+177	-80.5	0
+178	-80.5	0
+179	-80.5	0
+180	-80.5	0
+181	-80.5	0
+182	-80.5	0
+183	-80.5	0
+184	-80.5	0
+185	-80.5	0
+186	-80.5	0
+187	-80.5	0
+188	-80.5	0
+189	-80.5	0
+190	-80.5	0
+191	-80.5	0
+192	-80.5	0
+193	-80.5	0
+194	-80.5	0
+195	-80.5	0
+196	-80.5	0
+197	-80.5	0
+198	-80.5	0
+199	-80.5	0
+200	-80.5	0
+201	-80.5	0
+202	-80.5	0
+203	-80.5	0
+204	-80.5	0
+205	-80.5	0
+206	-80.5	0
+207	-80.5	0
+208	-80.5	0
+209	-80.5	0
+210	-80.5	0
+211	-80.5	0
+212	-80.5	0
+213	-80.5	0
+214	-80.5	0
+215	-80.5	0
+216	-80.5	0
+217	-80.5	0
+218	-80.5	0
+219	-80.5	0
+220	-80.5	0
+221	-80.5	0
+222	-80.5	0
+223	-80.5	0
+224	-80.5	0
+225	-80.5	0
+226	-80.5	0
+227	-80.5	0
+228	-80.5	0
+229	-80.5	0
+230	-80.5	0
+231	-80.5	0
+232	-80.5	0
+233	-80.5	0
+234	-80.5	0
+235	-80.5	0
+236	-80.5	0
+237	-80.5	0
+238	-80.5	0
+239	-80.5	0
+240	-80.5	0
+241	-80.5	0
+242	-80.5	0
+243	-80.5	0
+244	-80.5	0
+245	-80.5	0
+246	-80.5	0
+247	-80.5	0
+248	-80.5	0
+249	-80.5	0
+250	-80.5	0
+251	-80.5	0
+252	-80.5	0
+253	-80.5	0
+254	-80.5	0
+255	-80.5	0
+256	-80.5	0
+257	-80.5	0
+258	-80.5	0
+259	-80.5	0
+260	-80.5	0
+261	-80.5	0
+262	-80.5	0
+263	-80.5	0
+264	-80.5	0
+265	-80.5	0
+266	-80.5	0
+267	-80.5	0
+268	-80.5	0
+269	-80.5	0
+270	-80.5	0
+271	-80.5	0
+272	-80.5	0
+273	-80.5	0
+274	-80.5	0
+275	-80.5	0
+276	-80.5	0
+277	-80.5	0
+278	-80.5	0
+279	-80.5	0
+280	-80.5	0
+281	-80.5	0
+282	-80.5	0
+283	-80.5	0
+284	-80.5	0
+285	-80.5	0
+286	-80.5	0
+287	-80.5	0
+288	-80.5	0
+289	-80.5	0
+290	-80.5	0
+291	-80.5	0
+292	-80.5	0
+293	-80.5	0
+294	-80.5	0
+295	-80.5	0
+296	-80.5	0
+297	-80.5	0
+298	-80.5	0
+299	-80.5	0
+300	-80.5	0
+301	-80.5	0
+302	-80.5	0
+303	-80.5	0
+304	-80.5	0
+305	-80.5	0
+306	-80.5	0
+307	-80.5	0
+308	-80.5	0
+309	-80.5	0
+310	-80.5	0
+311	-80.5	0
+312	-80.5	0
+313	-80.5	0
+314	-80.5	0
+315	-80.5	0
+316	-80.5	0
+317	-80.5	0
+318	-80.5	0
+319	-80.5	0
+320	-80.5	0
+321	-80.5	0
+322	-80.5	0
+323	-80.5	0
+324	-80.5	0
+325	-80.5	0
+326	-80.5	0
+327	-80.5	0
+328	-80.5	0
+329	-80.5	0
+330	-80.5	0
+331	-80.5	0
+332	-80.5	0
+333	-80.5	0
+334	-80.5	0
+335	-80.5	0
+336	-80.5	0
+337	-80.5	0
+338	-80.5	0
+339	-80.5	0
+340	-80.5	0
+341	-80.5	0
+342	-80.5	0
+343	-80.5	0
+344	-80.5	0
+345	-80.5	0
+346	-80.5	0
+347	-80.5	0
+348	-80.5	0
+349	-80.5	0
+350	-80.5	0
+351	-80.5	0
+352	-80.5	0
+353	-80.5	0
+354	-80.5	0
+355	-80.5	0
+356	-80.5	0
+357	-80.5	0
+358	-80.5	0
+359	-80.5	0
+360	-80.5	0
+0	-80	0
+1	-80	0
+2	-80	0
+3	-80	0
+4	-80	0
+5	-80	0
+6	-80	0
+7	-80	0
+8	-80	0
+9	-80	0
+10	-80	0
+11	-80	0
+12	-80	0
+13	-80	0
+14	-80	0
+15	-80	0
+16	-80	0
+17	-80	0
+18	-80	0
+19	-80	0
+20	-80	0
+21	-80	0
+22	-80	0
+23	-80	0
+24	-80	0
+25	-80	0
+26	-80	0
+27	-80	0
+28	-80	0
+29	-80	0
+30	-80	0
+31	-80	0
+32	-80	0
+33	-80	0
+34	-80	0
+35	-80	0
+36	-80	0
+37	-80	0
+38	-80	0
+39	-80	0
+40	-80	0
+41	-80	0
+42	-80	0
+43	-80	0
+44	-80	0
+45	-80	0
+46	-80	0
+47	-80	0
+48	-80	0
+49	-80	0
+50	-80	0
+51	-80	0
+52	-80	0
+53	-80	0
+54	-80	0
+55	-80	0
+56	-80	0
+57	-80	0
+58	-80	0
+59	-80	0
+60	-80	0
+61	-80	0
+62	-80	0
+63	-80	0
+64	-80	0
+65	-80	0
+66	-80	0
+67	-80	0
+68	-80	0
+69	-80	0
+70	-80	0
+71	-80	0
+72	-80	0
+73	-80	0
+74	-80	0
+75	-80	0
+76	-80	0
+77	-80	0
+78	-80	0
+79	-80	0
+80	-80	0
+81	-80	0
+82	-80	0
+83	-80	0
+84	-80	0
+85	-80	0
+86	-80	0
+87	-80	0
+88	-80	0
+89	-80	0
+90	-80	0
+91	-80	0
+92	-80	0
+93	-80	0
+94	-80	0
+95	-80	0
+96	-80	0
+97	-80	0
+98	-80	0
+99	-80	0
+100	-80	0
+101	-80	0
+102	-80	0
+103	-80	0
+104	-80	0
+105	-80	0
+106	-80	0
+107	-80	0
+108	-80	0
+109	-80	0
+110	-80	0
+111	-80	0
+112	-80	0
+113	-80	0
+114	-80	0
+115	-80	0
+116	-80	0
+117	-80	0
+118	-80	0
+119	-80	0
+120	-80	0
+121	-80	0
+122	-80	0
+123	-80	0
+124	-80	0
+125	-80	0
+126	-80	0
+127	-80	0
+128	-80	0
+129	-80	0
+130	-80	0
+131	-80	0
+132	-80	0
+133	-80	0
+134	-80	0
+135	-80	0
+136	-80	0
+137	-80	0
+138	-80	0
+139	-80	0
+140	-80	0
+141	-80	0
+142	-80	0
+143	-80	0
+144	-80	0
+145	-80	0
+146	-80	0
+147	-80	0
+148	-80	0
+149	-80	0
+150	-80	0
+151	-80	0
+152	-80	0
+153	-80	0
+154	-80	0
+155	-80	0
+156	-80	0
+157	-80	0
+158	-80	0
+159	-80	0
+160	-80	0
+161	-80	0
+162	-80	0
+163	-80	0
+164	-80	0
+165	-80	0
+166	-80	0
+167	-80	0
+168	-80	0
+169	-80	0
+170	-80	0
+171	-80	0
+172	-80	0
+173	-80	0
+174	-80	0
+175	-80	0
+176	-80	0
+177	-80	0
+178	-80	0
+179	-80	0
+180	-80	0
+181	-80	0
+182	-80	0
+183	-80	0
+184	-80	0
+185	-80	0
+186	-80	0
+187	-80	0
+188	-80	0
+189	-80	0
+190	-80	0
+191	-80	0
+192	-80	0
+193	-80	0
+194	-80	0
+195	-80	0
+196	-80	0
+197	-80	0
+198	-80	0
+199	-80	0
+200	-80	0
+201	-80	0
+202	-80	0
+203	-80	0
+204	-80	0
+205	-80	0
+206	-80	0
+207	-80	0
+208	-80	0
+209	-80	0
+210	-80	0
+211	-80	0
+212	-80	0
+213	-80	0
+214	-80	0
+215	-80	0
+216	-80	0
+217	-80	0
+218	-80	0
+219	-80	0
+220	-80	0
+221	-80	0
+222	-80	0
+223	-80	0
+224	-80	0
+225	-80	0
+226	-80	0
+227	-80	0
+228	-80	0
+229	-80	0
+230	-80	0
+231	-80	0
+232	-80	0
+233	-80	0
+234	-80	0
+235	-80	0
+236	-80	0
+237	-80	0
+238	-80	0
+239	-80	0
+240	-80	0
+241	-80	0
+242	-80	0
+243	-80	0
+244	-80	0
+245	-80	0
+246	-80	0
+247	-80	0
+248	-80	0
+249	-80	0
+250	-80	0
+251	-80	0
+252	-80	0
+253	-80	0
+254	-80	0
+255	-80	0
+256	-80	0
+257	-80	0
+258	-80	0
+259	-80	0
+260	-80	0
+261	-80	0
+262	-80	0
+263	-80	0
+264	-80	0
+265	-80	0
+266	-80	0
+267	-80	0
+268	-80	0
+269	-80	0
+270	-80	0
+271	-80	0
+272	-80	0
+273	-80	0
+274	-80	0
+275	-80	0
+276	-80	0
+277	-80	0
+278	-80	0
+279	-80	0
+280	-80	0
+281	-80	0
+282	-80	0
+283	-80	0
+284	-80	0
+285	-80	0
+286	-80	0
+287	-80	0
+288	-80	0
+289	-80	0
+290	-80	0
+291	-80	0
+292	-80	0
+293	-80	0
+294	-80	0
+295	-80	0
+296	-80	0
+297	-80	0
+298	-80	0
+299	-80	0
+300	-80	0
+301	-80	0
+302	-80	0
+303	-80	0
+304	-80	0
+305	-80	0
+306	-80	0
+307	-80	0
+308	-80	0
+309	-80	0
+310	-80	0
+311	-80	0
+312	-80	0
+313	-80	0
+314	-80	0
+315	-80	0
+316	-80	0
+317	-80	0
+318	-80	0
+319	-80	0
+320	-80	0
+321	-80	0
+322	-80	0
+323	-80	0
+324	-80	0
+325	-80	0
+326	-80	0
+327	-80	0
+328	-80	0
+329	-80	0
+330	-80	0
+331	-80	0
+332	-80	0
+333	-80	0
+334	-80	0
+335	-80	0
+336	-80	0
+337	-80	0
+338	-80	0
+339	-80	0
+340	-80	0
+341	-80	0
+342	-80	0
+343	-80	0
+344	-80	0
+345	-80	0
+346	-80	0
+347	-80	0
+348	-80	0
+349	-80	0
+350	-80	0
+351	-80	0
+352	-80	0
+353	-80	0
+354	-80	0
+355	-80	0
+356	-80	0
+357	-80	0
+358	-80	0
+359	-80	0
+360	-80	0
+0	-79.5	0
+1	-79.5	0
+2	-79.5	0
+3	-79.5	0
+4	-79.5	0
+5	-79.5	0
+6	-79.5	0
+7	-79.5	0
+8	-79.5	0
+9	-79.5	0
+10	-79.5	0
+11	-79.5	0
+12	-79.5	0
+13	-79.5	0
+14	-79.5	0
+15	-79.5	0
+16	-79.5	0
+17	-79.5	0
+18	-79.5	0
+19	-79.5	0
+20	-79.5	0
+21	-79.5	0
+22	-79.5	0
+23	-79.5	0
+24	-79.5	0
+25	-79.5	0
+26	-79.5	0
+27	-79.5	0
+28	-79.5	0
+29	-79.5	0
+30	-79.5	0
+31	-79.5	0
+32	-79.5	0
+33	-79.5	0
+34	-79.5	0
+35	-79.5	0
+36	-79.5	0
+37	-79.5	0
+38	-79.5	0
+39	-79.5	0
+40	-79.5	0
+41	-79.5	0
+42	-79.5	0
+43	-79.5	0
+44	-79.5	0
+45	-79.5	0
+46	-79.5	0
+47	-79.5	0
+48	-79.5	0
+49	-79.5	0
+50	-79.5	0
+51	-79.5	0
+52	-79.5	0
+53	-79.5	0
+54	-79.5	0
+55	-79.5	0
+56	-79.5	0
+57	-79.5	0
+58	-79.5	0
+59	-79.5	0
+60	-79.5	0
+61	-79.5	0
+62	-79.5	0
+63	-79.5	0
+64	-79.5	0
+65	-79.5	0
+66	-79.5	0
+67	-79.5	0
+68	-79.5	0
+69	-79.5	0
+70	-79.5	0
+71	-79.5	0
+72	-79.5	0
+73	-79.5	0
+74	-79.5	0
+75	-79.5	0
+76	-79.5	0
+77	-79.5	0
+78	-79.5	0
+79	-79.5	0
+80	-79.5	0
+81	-79.5	0
+82	-79.5	0
+83	-79.5	0
+84	-79.5	0
+85	-79.5	0
+86	-79.5	0
+87	-79.5	0
+88	-79.5	0
+89	-79.5	0
+90	-79.5	0
+91	-79.5	0
+92	-79.5	0
+93	-79.5	0
+94	-79.5	0
+95	-79.5	0
+96	-79.5	0
+97	-79.5	0
+98	-79.5	0
+99	-79.5	0
+100	-79.5	0
+101	-79.5	0
+102	-79.5	0
+103	-79.5	0
+104	-79.5	0
+105	-79.5	0
+106	-79.5	0
+107	-79.5	0
+108	-79.5	0
+109	-79.5	0
+110	-79.5	0
+111	-79.5	0
+112	-79.5	0
+113	-79.5	0
+114	-79.5	0
+115	-79.5	0
+116	-79.5	0
+117	-79.5	0
+118	-79.5	0
+119	-79.5	0
+120	-79.5	0
+121	-79.5	0
+122	-79.5	0
+123	-79.5	0
+124	-79.5	0
+125	-79.5	0
+126	-79.5	0
+127	-79.5	0
+128	-79.5	0
+129	-79.5	0
+130	-79.5	0
+131	-79.5	0
+132	-79.5	0
+133	-79.5	0
+134	-79.5	0
+135	-79.5	0
+136	-79.5	0
+137	-79.5	0
+138	-79.5	0
+139	-79.5	0
+140	-79.5	0
+141	-79.5	0
+142	-79.5	0
+143	-79.5	0
+144	-79.5	0
+145	-79.5	0
+146	-79.5	0
+147	-79.5	0
+148	-79.5	0
+149	-79.5	0
+150	-79.5	0
+151	-79.5	0
+152	-79.5	0
+153	-79.5	0
+154	-79.5	0
+155	-79.5	0
+156	-79.5	0
+157	-79.5	0
+158	-79.5	0
+159	-79.5	0
+160	-79.5	0
+161	-79.5	0
+162	-79.5	0
+163	-79.5	0
+164	-79.5	0
+165	-79.5	0
+166	-79.5	0
+167	-79.5	0
+168	-79.5	0
+169	-79.5	0
+170	-79.5	0
+171	-79.5	0
+172	-79.5	0
+173	-79.5	0
+174	-79.5	0
+175	-79.5	0
+176	-79.5	0
+177	-79.5	0
+178	-79.5	0
+179	-79.5	0
+180	-79.5	0
+181	-79.5	0
+182	-79.5	0
+183	-79.5	0
+184	-79.5	0
+185	-79.5	0
+186	-79.5	0
+187	-79.5	0
+188	-79.5	0
+189	-79.5	0
+190	-79.5	0
+191	-79.5	0
+192	-79.5	0
+193	-79.5	0
+194	-79.5	0
+195	-79.5	0
+196	-79.5	0
+197	-79.5	0
+198	-79.5	0
+199	-79.5	0
+200	-79.5	0
+201	-79.5	0
+202	-79.5	0
+203	-79.5	0
+204	-79.5	0
+205	-79.5	0
+206	-79.5	0
+207	-79.5	0
+208	-79.5	0
+209	-79.5	0
+210	-79.5	0
+211	-79.5	0
+212	-79.5	0
+213	-79.5	0
+214	-79.5	0
+215	-79.5	0
+216	-79.5	0
+217	-79.5	0
+218	-79.5	0
+219	-79.5	0
+220	-79.5	0
+221	-79.5	0
+222	-79.5	0
+223	-79.5	0
+224	-79.5	0
+225	-79.5	0
+226	-79.5	0
+227	-79.5	0
+228	-79.5	0
+229	-79.5	0
+230	-79.5	0
+231	-79.5	0
+232	-79.5	0
+233	-79.5	0
+234	-79.5	0
+235	-79.5	0
+236	-79.5	0
+237	-79.5	0
+238	-79.5	0
+239	-79.5	0
+240	-79.5	0
+241	-79.5	0
+242	-79.5	0
+243	-79.5	0
+244	-79.5	0
+245	-79.5	0
+246	-79.5	0
+247	-79.5	0
+248	-79.5	0
+249	-79.5	0
+250	-79.5	0
+251	-79.5	0
+252	-79.5	0
+253	-79.5	0
+254	-79.5	0
+255	-79.5	0
+256	-79.5	0
+257	-79.5	0
+258	-79.5	0
+259	-79.5	0
+260	-79.5	0
+261	-79.5	0
+262	-79.5	0
+263	-79.5	0
+264	-79.5	0
+265	-79.5	0
+266	-79.5	0
+267	-79.5	0
+268	-79.5	0
+269	-79.5	0
+270	-79.5	0
+271	-79.5	0
+272	-79.5	0
+273	-79.5	0
+274	-79.5	0
+275	-79.5	0
+276	-79.5	0
+277	-79.5	0
+278	-79.5	0
+279	-79.5	0
+280	-79.5	0
+281	-79.5	0
+282	-79.5	0
+283	-79.5	0
+284	-79.5	0
+285	-79.5	0
+286	-79.5	0
+287	-79.5	0
+288	-79.5	0
+289	-79.5	0
+290	-79.5	0
+291	-79.5	0
+292	-79.5	0
+293	-79.5	0
+294	-79.5	0
+295	-79.5	0
+296	-79.5	0
+297	-79.5	0
+298	-79.5	0
+299	-79.5	0
+300	-79.5	0
+301	-79.5	0
+302	-79.5	0
+303	-79.5	0
+304	-79.5	0
+305	-79.5	0
+306	-79.5	0
+307	-79.5	0
+308	-79.5	0
+309	-79.5	0
+310	-79.5	0
+311	-79.5	0
+312	-79.5	0
+313	-79.5	0
+314	-79.5	0
+315	-79.5	0
+316	-79.5	0
+317	-79.5	0
+318	-79.5	0
+319	-79.5	0
+320	-79.5	0
+321	-79.5	0
+322	-79.5	0
+323	-79.5	0
+324	-79.5	0
+325	-79.5	0
+326	-79.5	0
+327	-79.5	0
+328	-79.5	0
+329	-79.5	0
+330	-79.5	0
+331	-79.5	0
+332	-79.5	0
+333	-79.5	0
+334	-79.5	0
+335	-79.5	0
+336	-79.5	0
+337	-79.5	0
+338	-79.5	0
+339	-79.5	0
+340	-79.5	0
+341	-79.5	0
+342	-79.5	0
+343	-79.5	0
+344	-79.5	0
+345	-79.5	0
+346	-79.5	0
+347	-79.5	0
+348	-79.5	0
+349	-79.5	0
+350	-79.5	0
+351	-79.5	0
+352	-79.5	0
+353	-79.5	0
+354	-79.5	0
+355	-79.5	0
+356	-79.5	0
+357	-79.5	0
+358	-79.5	0
+359	-79.5	0
+360	-79.5	0
+0	-79	0
+1	-79	0
+2	-79	0
+3	-79	0
+4	-79	0
+5	-79	0
+6	-79	0
+7	-79	0
+8	-79	0
+9	-79	0
+10	-79	0
+11	-79	0
+12	-79	0
+13	-79	0
+14	-79	0
+15	-79	0
+16	-79	0
+17	-79	0
+18	-79	0
+19	-79	0
+20	-79	0
+21	-79	0
+22	-79	0
+23	-79	0
+24	-79	0
+25	-79	0
+26	-79	0
+27	-79	0
+28	-79	0
+29	-79	0
+30	-79	0
+31	-79	0
+32	-79	0
+33	-79	0
+34	-79	0
+35	-79	0
+36	-79	0
+37	-79	0
+38	-79	0
+39	-79	0
+40	-79	0
+41	-79	0
+42	-79	0
+43	-79	0
+44	-79	0
+45	-79	0
+46	-79	0
+47	-79	0
+48	-79	0
+49	-79	0
+50	-79	0
+51	-79	0
+52	-79	0
+53	-79	0
+54	-79	0
+55	-79	0
+56	-79	0
+57	-79	0
+58	-79	0
+59	-79	0
+60	-79	0
+61	-79	0
+62	-79	0
+63	-79	0
+64	-79	0
+65	-79	0
+66	-79	0
+67	-79	0
+68	-79	0
+69	-79	0
+70	-79	0
+71	-79	0
+72	-79	0
+73	-79	0
+74	-79	0
+75	-79	0
+76	-79	0
+77	-79	0
+78	-79	0
+79	-79	0
+80	-79	0
+81	-79	0
+82	-79	0
+83	-79	0
+84	-79	0
+85	-79	0
+86	-79	0
+87	-79	0
+88	-79	0
+89	-79	0
+90	-79	0
+91	-79	0
+92	-79	0
+93	-79	0
+94	-79	0
+95	-79	0
+96	-79	0
+97	-79	0
+98	-79	0
+99	-79	0
+100	-79	0
+101	-79	0
+102	-79	0
+103	-79	0
+104	-79	0
+105	-79	0
+106	-79	0
+107	-79	0
+108	-79	0
+109	-79	0
+110	-79	0
+111	-79	0
+112	-79	0
+113	-79	0
+114	-79	0
+115	-79	0
+116	-79	0
+117	-79	0
+118	-79	0
+119	-79	0
+120	-79	0
+121	-79	0
+122	-79	0
+123	-79	0
+124	-79	0
+125	-79	0
+126	-79	0
+127	-79	0
+128	-79	0
+129	-79	0
+130	-79	0
+131	-79	0
+132	-79	0
+133	-79	0
+134	-79	0
+135	-79	0
+136	-79	0
+137	-79	0
+138	-79	0
+139	-79	0
+140	-79	0
+141	-79	0
+142	-79	0
+143	-79	0
+144	-79	0
+145	-79	0
+146	-79	0
+147	-79	0
+148	-79	0
+149	-79	0
+150	-79	0
+151	-79	0
+152	-79	0
+153	-79	0
+154	-79	0
+155	-79	0
+156	-79	0
+157	-79	0
+158	-79	0
+159	-79	0
+160	-79	0
+161	-79	0
+162	-79	0
+163	-79	0
+164	-79	0
+165	-79	0
+166	-79	0
+167	-79	0
+168	-79	0
+169	-79	0
+170	-79	0
+171	-79	0
+172	-79	0
+173	-79	0
+174	-79	0
+175	-79	0
+176	-79	0
+177	-79	0
+178	-79	0
+179	-79	0
+180	-79	0
+181	-79	0
+182	-79	0
+183	-79	0
+184	-79	0
+185	-79	0
+186	-79	0
+187	-79	0
+188	-79	0
+189	-79	0
+190	-79	0
+191	-79	0
+192	-79	0
+193	-79	0
+194	-79	0
+195	-79	0
+196	-79	0
+197	-79	0
+198	-79	0
+199	-79	0
+200	-79	0
+201	-79	0
+202	-79	0
+203	-79	0
+204	-79	0
+205	-79	0
+206	-79	0
+207	-79	0
+208	-79	0
+209	-79	0
+210	-79	0
+211	-79	0
+212	-79	0
+213	-79	0
+214	-79	0
+215	-79	0
+216	-79	0
+217	-79	0
+218	-79	0
+219	-79	0
+220	-79	0
+221	-79	0
+222	-79	0
+223	-79	0
+224	-79	0
+225	-79	0
+226	-79	0
+227	-79	0
+228	-79	0
+229	-79	0
+230	-79	0
+231	-79	0
+232	-79	0
+233	-79	0
+234	-79	0
+235	-79	0
+236	-79	0
+237	-79	0
+238	-79	0
+239	-79	0
+240	-79	0
+241	-79	0
+242	-79	0
+243	-79	0
+244	-79	0
+245	-79	0
+246	-79	0
+247	-79	0
+248	-79	0
+249	-79	0
+250	-79	0
+251	-79	0
+252	-79	0
+253	-79	0
+254	-79	0
+255	-79	0
+256	-79	0
+257	-79	0
+258	-79	0
+259	-79	0
+260	-79	0
+261	-79	0
+262	-79	0
+263	-79	0
+264	-79	0
+265	-79	0
+266	-79	0
+267	-79	0
+268	-79	0
+269	-79	0
+270	-79	0
+271	-79	0
+272	-79	0
+273	-79	0
+274	-79	0
+275	-79	0
+276	-79	0
+277	-79	0
+278	-79	0
+279	-79	0
+280	-79	0
+281	-79	0
+282	-79	0
+283	-79	0
+284	-79	0
+285	-79	0
+286	-79	0
+287	-79	0
+288	-79	0
+289	-79	0
+290	-79	0
+291	-79	0
+292	-79	0
+293	-79	0
+294	-79	0
+295	-79	0
+296	-79	0
+297	-79	0
+298	-79	0
+299	-79	0
+300	-79	0
+301	-79	0
+302	-79	0
+303	-79	0
+304	-79	0
+305	-79	0
+306	-79	0
+307	-79	0
+308	-79	0
+309	-79	0
+310	-79	0
+311	-79	0
+312	-79	0
+313	-79	0
+314	-79	0
+315	-79	0
+316	-79	0
+317	-79	0
+318	-79	0
+319	-79	0
+320	-79	0
+321	-79	0
+322	-79	0
+323	-79	0
+324	-79	0
+325	-79	0
+326	-79	0
+327	-79	0
+328	-79	0
+329	-79	0
+330	-79	0
+331	-79	0
+332	-79	0
+333	-79	0
+334	-79	0
+335	-79	0
+336	-79	0
+337	-79	0
+338	-79	0
+339	-79	0
+340	-79	0
+341	-79	0
+342	-79	0
+343	-79	0
+344	-79	0
+345	-79	0
+346	-79	0
+347	-79	0
+348	-79	0
+349	-79	0
+350	-79	0
+351	-79	0
+352	-79	0
+353	-79	0
+354	-79	0
+355	-79	0
+356	-79	0
+357	-79	0
+358	-79	0
+359	-79	0
+360	-79	0
+0	-78.5	0
+1	-78.5	0
+2	-78.5	0
+3	-78.5	0
+4	-78.5	0
+5	-78.5	0
+6	-78.5	0
+7	-78.5	0
+8	-78.5	0
+9	-78.5	0
+10	-78.5	0
+11	-78.5	0
+12	-78.5	0
+13	-78.5	0
+14	-78.5	0
+15	-78.5	0
+16	-78.5	0
+17	-78.5	0
+18	-78.5	0
+19	-78.5	0
+20	-78.5	0
+21	-78.5	0
+22	-78.5	0
+23	-78.5	0
+24	-78.5	0
+25	-78.5	0
+26	-78.5	0
+27	-78.5	0
+28	-78.5	0
+29	-78.5	0
+30	-78.5	0
+31	-78.5	0
+32	-78.5	0
+33	-78.5	0
+34	-78.5	0
+35	-78.5	0
+36	-78.5	0
+37	-78.5	0
+38	-78.5	0
+39	-78.5	0
+40	-78.5	0
+41	-78.5	0
+42	-78.5	0
+43	-78.5	0
+44	-78.5	0
+45	-78.5	0
+46	-78.5	0
+47	-78.5	0
+48	-78.5	0
+49	-78.5	0
+50	-78.5	0
+51	-78.5	0
+52	-78.5	0
+53	-78.5	0
+54	-78.5	0
+55	-78.5	0
+56	-78.5	0
+57	-78.5	0
+58	-78.5	0
+59	-78.5	0
+60	-78.5	0
+61	-78.5	0
+62	-78.5	0
+63	-78.5	0
+64	-78.5	0
+65	-78.5	0
+66	-78.5	0
+67	-78.5	0
+68	-78.5	0
+69	-78.5	0
+70	-78.5	0
+71	-78.5	0
+72	-78.5	0
+73	-78.5	0
+74	-78.5	0
+75	-78.5	0
+76	-78.5	0
+77	-78.5	0
+78	-78.5	0
+79	-78.5	0
+80	-78.5	0
+81	-78.5	0
+82	-78.5	0
+83	-78.5	0
+84	-78.5	0
+85	-78.5	0
+86	-78.5	0
+87	-78.5	0
+88	-78.5	0
+89	-78.5	0
+90	-78.5	0
+91	-78.5	0
+92	-78.5	0
+93	-78.5	0
+94	-78.5	0
+95	-78.5	0
+96	-78.5	0
+97	-78.5	0
+98	-78.5	0
+99	-78.5	0
+100	-78.5	0
+101	-78.5	0
+102	-78.5	0
+103	-78.5	0
+104	-78.5	0
+105	-78.5	0
+106	-78.5	0
+107	-78.5	0
+108	-78.5	0
+109	-78.5	0
+110	-78.5	0
+111	-78.5	0
+112	-78.5	0
+113	-78.5	0
+114	-78.5	0
+115	-78.5	0
+116	-78.5	0
+117	-78.5	0
+118	-78.5	0
+119	-78.5	0
+120	-78.5	0
+121	-78.5	0
+122	-78.5	0
+123	-78.5	0
+124	-78.5	0
+125	-78.5	0
+126	-78.5	0
+127	-78.5	0
+128	-78.5	0
+129	-78.5	0
+130	-78.5	0
+131	-78.5	0
+132	-78.5	0
+133	-78.5	0
+134	-78.5	0
+135	-78.5	0
+136	-78.5	0
+137	-78.5	0
+138	-78.5	0
+139	-78.5	0
+140	-78.5	0
+141	-78.5	0
+142	-78.5	0
+143	-78.5	0
+144	-78.5	0
+145	-78.5	0
+146	-78.5	0
+147	-78.5	0
+148	-78.5	0
+149	-78.5	0
+150	-78.5	0
+151	-78.5	0
+152	-78.5	0
+153	-78.5	0
+154	-78.5	0
+155	-78.5	0
+156	-78.5	0
+157	-78.5	0
+158	-78.5	0
+159	-78.5	0
+160	-78.5	0
+161	-78.5	0
+162	-78.5	0
+163	-78.5	0
+164	-78.5	0
+165	-78.5	0
+166	-78.5	0
+167	-78.5	0
+168	-78.5	0
+169	-78.5	0
+170	-78.5	0
+171	-78.5	0
+172	-78.5	0
+173	-78.5	0
+174	-78.5	0
+175	-78.5	0
+176	-78.5	0
+177	-78.5	0
+178	-78.5	0
+179	-78.5	0
+180	-78.5	0
+181	-78.5	0
+182	-78.5	0
+183	-78.5	0
+184	-78.5	0
+185	-78.5	0
+186	-78.5	0
+187	-78.5	0
+188	-78.5	0
+189	-78.5	0
+190	-78.5	0
+191	-78.5	0
+192	-78.5	0
+193	-78.5	0
+194	-78.5	0
+195	-78.5	0
+196	-78.5	0
+197	-78.5	0
+198	-78.5	0
+199	-78.5	0
+200	-78.5	0
+201	-78.5	0
+202	-78.5	0
+203	-78.5	0
+204	-78.5	0
+205	-78.5	0
+206	-78.5	0
+207	-78.5	0
+208	-78.5	0
+209	-78.5	0
+210	-78.5	0
+211	-78.5	0
+212	-78.5	0
+213	-78.5	0
+214	-78.5	0
+215	-78.5	0
+216	-78.5	0
+217	-78.5	0
+218	-78.5	0
+219	-78.5	0
+220	-78.5	0
+221	-78.5	0
+222	-78.5	0
+223	-78.5	0
+224	-78.5	0
+225	-78.5	0
+226	-78.5	0
+227	-78.5	0
+228	-78.5	0
+229	-78.5	0
+230	-78.5	0
+231	-78.5	0
+232	-78.5	0
+233	-78.5	0
+234	-78.5	0
+235	-78.5	0
+236	-78.5	0
+237	-78.5	0
+238	-78.5	0
+239	-78.5	0
+240	-78.5	0
+241	-78.5	0
+242	-78.5	0
+243	-78.5	0
+244	-78.5	0
+245	-78.5	0
+246	-78.5	0
+247	-78.5	0
+248	-78.5	0
+249	-78.5	0
+250	-78.5	0
+251	-78.5	0
+252	-78.5	0
+253	-78.5	0
+254	-78.5	0
+255	-78.5	0
+256	-78.5	0
+257	-78.5	0
+258	-78.5	0
+259	-78.5	0
+260	-78.5	0
+261	-78.5	0
+262	-78.5	0
+263	-78.5	0
+264	-78.5	0
+265	-78.5	0
+266	-78.5	0
+267	-78.5	0
+268	-78.5	0
+269	-78.5	0
+270	-78.5	0
+271	-78.5	0
+272	-78.5	0
+273	-78.5	0
+274	-78.5	0
+275	-78.5	0
+276	-78.5	0
+277	-78.5	0
+278	-78.5	0
+279	-78.5	0
+280	-78.5	0
+281	-78.5	0
+282	-78.5	0
+283	-78.5	0
+284	-78.5	0
+285	-78.5	0
+286	-78.5	0
+287	-78.5	0
+288	-78.5	0
+289	-78.5	0
+290	-78.5	0
+291	-78.5	0
+292	-78.5	0
+293	-78.5	0
+294	-78.5	0
+295	-78.5	0
+296	-78.5	0
+297	-78.5	0
+298	-78.5	0
+299	-78.5	0
+300	-78.5	0
+301	-78.5	0
+302	-78.5	0
+303	-78.5	0
+304	-78.5	0
+305	-78.5	0
+306	-78.5	0
+307	-78.5	0
+308	-78.5	0
+309	-78.5	0
+310	-78.5	0
+311	-78.5	0
+312	-78.5	0
+313	-78.5	0
+314	-78.5	0
+315	-78.5	0
+316	-78.5	0
+317	-78.5	0
+318	-78.5	0
+319	-78.5	0
+320	-78.5	0
+321	-78.5	0
+322	-78.5	0
+323	-78.5	0
+324	-78.5	0
+325	-78.5	0
+326	-78.5	0
+327	-78.5	0
+328	-78.5	0
+329	-78.5	0
+330	-78.5	0
+331	-78.5	0
+332	-78.5	0
+333	-78.5	0
+334	-78.5	0
+335	-78.5	0
+336	-78.5	0
+337	-78.5	0
+338	-78.5	0
+339	-78.5	0
+340	-78.5	0
+341	-78.5	0
+342	-78.5	0
+343	-78.5	0
+344	-78.5	0
+345	-78.5	0
+346	-78.5	0
+347	-78.5	0
+348	-78.5	0
+349	-78.5	0
+350	-78.5	0
+351	-78.5	0
+352	-78.5	0
+353	-78.5	0
+354	-78.5	0
+355	-78.5	0
+356	-78.5	0
+357	-78.5	0
+358	-78.5	0
+359	-78.5	0
+360	-78.5	0
+0	-78	0
+1	-78	0
+2	-78	0
+3	-78	0
+4	-78	0
+5	-78	0
+6	-78	0
+7	-78	0
+8	-78	0
+9	-78	0
+10	-78	0
+11	-78	0
+12	-78	0
+13	-78	0
+14	-78	0
+15	-78	0
+16	-78	0
+17	-78	0
+18	-78	0
+19	-78	0
+20	-78	0
+21	-78	0
+22	-78	0
+23	-78	0
+24	-78	0
+25	-78	0
+26	-78	0
+27	-78	0
+28	-78	0
+29	-78	0
+30	-78	0
+31	-78	0
+32	-78	0
+33	-78	0
+34	-78	0
+35	-78	0
+36	-78	0
+37	-78	0
+38	-78	0
+39	-78	0
+40	-78	0
+41	-78	0
+42	-78	0
+43	-78	0
+44	-78	0
+45	-78	0
+46	-78	0
+47	-78	0
+48	-78	0
+49	-78	0
+50	-78	0
+51	-78	0
+52	-78	0
+53	-78	0
+54	-78	0
+55	-78	0
+56	-78	0
+57	-78	0
+58	-78	0
+59	-78	0
+60	-78	0
+61	-78	0
+62	-78	0
+63	-78	0
+64	-78	0
+65	-78	0
+66	-78	0
+67	-78	0
+68	-78	0
+69	-78	0
+70	-78	0
+71	-78	0
+72	-78	0
+73	-78	0
+74	-78	0
+75	-78	0
+76	-78	0
+77	-78	0
+78	-78	0
+79	-78	0
+80	-78	0
+81	-78	0
+82	-78	0
+83	-78	0
+84	-78	0
+85	-78	0
+86	-78	0
+87	-78	0
+88	-78	0
+89	-78	0
+90	-78	0
+91	-78	0
+92	-78	0
+93	-78	0
+94	-78	0
+95	-78	0
+96	-78	0
+97	-78	0
+98	-78	0
+99	-78	0
+100	-78	0
+101	-78	0
+102	-78	0
+103	-78	0
+104	-78	0
+105	-78	0
+106	-78	0
+107	-78	0
+108	-78	0
+109	-78	0
+110	-78	0
+111	-78	0
+112	-78	0
+113	-78	0
+114	-78	0
+115	-78	0
+116	-78	0
+117	-78	0
+118	-78	0
+119	-78	0
+120	-78	0
+121	-78	0
+122	-78	0
+123	-78	0
+124	-78	0
+125	-78	0
+126	-78	0
+127	-78	0
+128	-78	0
+129	-78	0
+130	-78	0
+131	-78	0
+132	-78	0
+133	-78	0
+134	-78	0
+135	-78	0
+136	-78	0
+137	-78	0
+138	-78	0
+139	-78	0
+140	-78	0
+141	-78	0
+142	-78	0
+143	-78	0
+144	-78	0
+145	-78	0
+146	-78	0
+147	-78	0
+148	-78	0
+149	-78	0
+150	-78	0
+151	-78	0
+152	-78	0
+153	-78	0
+154	-78	0
+155	-78	0
+156	-78	0
+157	-78	0
+158	-78	0
+159	-78	0
+160	-78	0
+161	-78	0
+162	-78	0
+163	-78	0
+164	-78	0
+165	-78	0
+166	-78	0
+167	-78	0
+168	-78	0
+169	-78	0
+170	-78	0
+171	-78	0
+172	-78	0
+173	-78	0
+174	-78	0
+175	-78	0
+176	-78	0
+177	-78	0
+178	-78	0
+179	-78	0
+180	-78	0
+181	-78	0
+182	-78	0
+183	-78	0
+184	-78	0
+185	-78	0
+186	-78	0
+187	-78	0
+188	-78	0
+189	-78	0
+190	-78	0
+191	-78	0
+192	-78	0
+193	-78	0
+194	-78	0
+195	-78	0
+196	-78	0
+197	-78	0
+198	-78	0
+199	-78	0
+200	-78	0
+201	-78	0
+202	-78	0
+203	-78	0
+204	-78	0
+205	-78	0
+206	-78	0
+207	-78	0
+208	-78	0
+209	-78	0
+210	-78	0
+211	-78	0
+212	-78	0
+213	-78	0
+214	-78	0
+215	-78	0
+216	-78	0
+217	-78	0
+218	-78	0
+219	-78	0
+220	-78	0
+221	-78	0
+222	-78	0
+223	-78	0
+224	-78	0
+225	-78	0
+226	-78	0
+227	-78	0
+228	-78	0
+229	-78	0
+230	-78	0
+231	-78	0
+232	-78	0
+233	-78	0
+234	-78	0
+235	-78	0
+236	-78	0
+237	-78	0
+238	-78	0
+239	-78	0
+240	-78	0
+241	-78	0
+242	-78	0
+243	-78	0
+244	-78	0
+245	-78	0
+246	-78	0
+247	-78	0
+248	-78	0
+249	-78	0
+250	-78	0
+251	-78	0
+252	-78	0
+253	-78	0
+254	-78	0
+255	-78	0
+256	-78	0
+257	-78	0
+258	-78	0
+259	-78	0
+260	-78	0
+261	-78	0
+262	-78	0
+263	-78	0
+264	-78	0
+265	-78	0
+266	-78	0
+267	-78	0
+268	-78	0
+269	-78	0
+270	-78	0
+271	-78	0
+272	-78	0
+273	-78	0
+274	-78	0
+275	-78	0
+276	-78	0
+277	-78	0
+278	-78	0
+279	-78	0
+280	-78	0
+281	-78	0
+282	-78	0
+283	-78	0
+284	-78	0
+285	-78	0
+286	-78	0
+287	-78	0
+288	-78	0
+289	-78	0
+290	-78	0
+291	-78	0
+292	-78	0
+293	-78	0
+294	-78	0
+295	-78	0
+296	-78	0
+297	-78	0
+298	-78	0
+299	-78	0
+300	-78	0
+301	-78	0
+302	-78	0
+303	-78	0
+304	-78	0
+305	-78	0
+306	-78	0
+307	-78	0
+308	-78	0
+309	-78	0
+310	-78	0
+311	-78	0
+312	-78	0
+313	-78	0
+314	-78	0
+315	-78	0
+316	-78	0
+317	-78	0
+318	-78	0
+319	-78	0
+320	-78	0
+321	-78	0
+322	-78	0
+323	-78	0
+324	-78	0
+325	-78	0
+326	-78	0
+327	-78	0
+328	-78	0
+329	-78	0
+330	-78	0
+331	-78	0
+332	-78	0
+333	-78	0
+334	-78	0
+335	-78	0
+336	-78	0
+337	-78	0
+338	-78	0
+339	-78	0
+340	-78	0
+341	-78	0
+342	-78	0
+343	-78	0
+344	-78	0
+345	-78	0
+346	-78	0
+347	-78	0
+348	-78	0
+349	-78	0
+350	-78	0
+351	-78	0
+352	-78	0
+353	-78	0
+354	-78	0
+355	-78	0
+356	-78	0
+357	-78	0
+358	-78	0
+359	-78	0
+360	-78	0
+0	-77.5	0
+1	-77.5	0
+2	-77.5	0
+3	-77.5	0
+4	-77.5	0
+5	-77.5	0
+6	-77.5	0
+7	-77.5	0
+8	-77.5	0
+9	-77.5	0
+10	-77.5	0
+11	-77.5	0
+12	-77.5	0
+13	-77.5	0
+14	-77.5	0
+15	-77.5	0
+16	-77.5	0
+17	-77.5	0
+18	-77.5	0
+19	-77.5	0
+20	-77.5	0
+21	-77.5	0
+22	-77.5	0
+23	-77.5	0
+24	-77.5	0
+25	-77.5	0
+26	-77.5	0
+27	-77.5	0
+28	-77.5	0
+29	-77.5	0
+30	-77.5	0
+31	-77.5	0
+32	-77.5	0
+33	-77.5	0
+34	-77.5	0
+35	-77.5	0
+36	-77.5	0
+37	-77.5	0
+38	-77.5	0
+39	-77.5	0
+40	-77.5	0
+41	-77.5	0
+42	-77.5	0
+43	-77.5	0
+44	-77.5	0
+45	-77.5	0
+46	-77.5	0
+47	-77.5	0
+48	-77.5	0
+49	-77.5	0
+50	-77.5	0
+51	-77.5	0
+52	-77.5	0
+53	-77.5	0
+54	-77.5	0
+55	-77.5	0
+56	-77.5	0
+57	-77.5	0
+58	-77.5	0
+59	-77.5	0
+60	-77.5	0
+61	-77.5	0
+62	-77.5	0
+63	-77.5	0
+64	-77.5	0
+65	-77.5	0
+66	-77.5	0
+67	-77.5	0
+68	-77.5	0
+69	-77.5	0
+70	-77.5	0
+71	-77.5	0
+72	-77.5	0
+73	-77.5	0
+74	-77.5	0
+75	-77.5	0
+76	-77.5	0
+77	-77.5	0
+78	-77.5	0
+79	-77.5	0
+80	-77.5	0
+81	-77.5	0
+82	-77.5	0
+83	-77.5	0
+84	-77.5	0
+85	-77.5	0
+86	-77.5	0
+87	-77.5	0
+88	-77.5	0
+89	-77.5	0
+90	-77.5	0
+91	-77.5	0
+92	-77.5	0
+93	-77.5	0
+94	-77.5	0
+95	-77.5	0
+96	-77.5	0
+97	-77.5	0
+98	-77.5	0
+99	-77.5	0
+100	-77.5	0
+101	-77.5	0
+102	-77.5	0
+103	-77.5	0
+104	-77.5	0
+105	-77.5	0
+106	-77.5	0
+107	-77.5	0
+108	-77.5	0
+109	-77.5	0
+110	-77.5	0
+111	-77.5	0
+112	-77.5	0
+113	-77.5	0
+114	-77.5	0
+115	-77.5	0
+116	-77.5	0
+117	-77.5	0
+118	-77.5	0
+119	-77.5	0
+120	-77.5	0
+121	-77.5	0
+122	-77.5	0
+123	-77.5	0
+124	-77.5	0
+125	-77.5	0
+126	-77.5	0
+127	-77.5	0
+128	-77.5	0
+129	-77.5	0
+130	-77.5	0
+131	-77.5	0
+132	-77.5	0
+133	-77.5	0
+134	-77.5	0
+135	-77.5	0
+136	-77.5	0
+137	-77.5	0
+138	-77.5	0
+139	-77.5	0
+140	-77.5	0
+141	-77.5	0
+142	-77.5	0
+143	-77.5	0
+144	-77.5	0
+145	-77.5	0
+146	-77.5	0
+147	-77.5	0
+148	-77.5	0
+149	-77.5	0
+150	-77.5	0
+151	-77.5	0
+152	-77.5	0
+153	-77.5	0
+154	-77.5	0
+155	-77.5	0
+156	-77.5	0
+157	-77.5	0
+158	-77.5	0
+159	-77.5	0
+160	-77.5	0
+161	-77.5	0
+162	-77.5	0
+163	-77.5	0
+164	-77.5	0
+165	-77.5	0
+166	-77.5	0
+167	-77.5	0
+168	-77.5	0
+169	-77.5	0
+170	-77.5	0
+171	-77.5	0
+172	-77.5	0
+173	-77.5	0
+174	-77.5	0
+175	-77.5	0
+176	-77.5	0
+177	-77.5	0
+178	-77.5	0
+179	-77.5	0
+180	-77.5	0
+181	-77.5	0
+182	-77.5	0
+183	-77.5	0
+184	-77.5	0
+185	-77.5	0
+186	-77.5	0
+187	-77.5	0
+188	-77.5	0
+189	-77.5	0
+190	-77.5	0
+191	-77.5	0
+192	-77.5	0
+193	-77.5	0
+194	-77.5	0
+195	-77.5	0
+196	-77.5	0
+197	-77.5	0
+198	-77.5	0
+199	-77.5	0
+200	-77.5	0
+201	-77.5	0
+202	-77.5	0
+203	-77.5	0
+204	-77.5	0
+205	-77.5	0
+206	-77.5	0
+207	-77.5	0
+208	-77.5	0
+209	-77.5	0
+210	-77.5	0
+211	-77.5	0
+212	-77.5	0
+213	-77.5	0
+214	-77.5	0
+215	-77.5	0
+216	-77.5	0
+217	-77.5	0
+218	-77.5	0
+219	-77.5	0
+220	-77.5	0
+221	-77.5	0
+222	-77.5	0
+223	-77.5	0
+224	-77.5	0
+225	-77.5	0
+226	-77.5	0
+227	-77.5	0
+228	-77.5	0
+229	-77.5	0
+230	-77.5	0
+231	-77.5	0
+232	-77.5	0
+233	-77.5	0
+234	-77.5	0
+235	-77.5	0
+236	-77.5	0
+237	-77.5	0
+238	-77.5	0
+239	-77.5	0
+240	-77.5	0
+241	-77.5	0
+242	-77.5	0
+243	-77.5	0
+244	-77.5	0
+245	-77.5	0
+246	-77.5	0
+247	-77.5	0
+248	-77.5	0
+249	-77.5	0
+250	-77.5	0
+251	-77.5	0
+252	-77.5	0
+253	-77.5	0
+254	-77.5	0
+255	-77.5	0
+256	-77.5	0
+257	-77.5	0
+258	-77.5	0
+259	-77.5	0
+260	-77.5	0
+261	-77.5	0
+262	-77.5	0
+263	-77.5	0
+264	-77.5	0
+265	-77.5	0
+266	-77.5	0
+267	-77.5	0
+268	-77.5	0
+269	-77.5	0
+270	-77.5	0
+271	-77.5	0
+272	-77.5	0
+273	-77.5	0
+274	-77.5	0
+275	-77.5	0
+276	-77.5	0
+277	-77.5	0
+278	-77.5	0
+279	-77.5	0
+280	-77.5	0
+281	-77.5	0
+282	-77.5	0
+283	-77.5	0
+284	-77.5	0
+285	-77.5	0
+286	-77.5	0
+287	-77.5	0
+288	-77.5	0
+289	-77.5	0
+290	-77.5	0
+291	-77.5	0
+292	-77.5	0
+293	-77.5	0
+294	-77.5	0
+295	-77.5	0
+296	-77.5	0
+297	-77.5	0
+298	-77.5	0
+299	-77.5	0
+300	-77.5	0
+301	-77.5	0
+302	-77.5	0
+303	-77.5	0
+304	-77.5	0
+305	-77.5	0
+306	-77.5	0
+307	-77.5	0
+308	-77.5	0
+309	-77.5	0
+310	-77.5	0
+311	-77.5	0
+312	-77.5	0
+313	-77.5	0
+314	-77.5	0
+315	-77.5	0
+316	-77.5	0
+317	-77.5	0
+318	-77.5	0
+319	-77.5	0
+320	-77.5	0
+321	-77.5	0
+322	-77.5	0
+323	-77.5	0
+324	-77.5	0
+325	-77.5	0
+326	-77.5	0
+327	-77.5	0
+328	-77.5	0
+329	-77.5	0
+330	-77.5	0
+331	-77.5	0
+332	-77.5	0
+333	-77.5	0
+334	-77.5	0
+335	-77.5	0
+336	-77.5	0
+337	-77.5	0
+338	-77.5	0
+339	-77.5	0
+340	-77.5	0
+341	-77.5	0
+342	-77.5	0
+343	-77.5	0
+344	-77.5	0
+345	-77.5	0
+346	-77.5	0
+347	-77.5	0
+348	-77.5	0
+349	-77.5	0
+350	-77.5	0
+351	-77.5	0
+352	-77.5	0
+353	-77.5	0
+354	-77.5	0
+355	-77.5	0
+356	-77.5	0
+357	-77.5	0
+358	-77.5	0
+359	-77.5	0
+360	-77.5	0
+0	-77	0
+1	-77	0
+2	-77	0
+3	-77	0
+4	-77	0
+5	-77	0
+6	-77	0
+7	-77	0
+8	-77	0
+9	-77	0
+10	-77	0
+11	-77	0
+12	-77	0
+13	-77	0
+14	-77	0
+15	-77	0
+16	-77	0
+17	-77	0
+18	-77	0
+19	-77	0
+20	-77	0
+21	-77	0
+22	-77	0
+23	-77	0
+24	-77	0
+25	-77	0
+26	-77	0
+27	-77	0
+28	-77	0
+29	-77	0
+30	-77	0
+31	-77	0
+32	-77	0
+33	-77	0
+34	-77	0
+35	-77	0
+36	-77	0
+37	-77	0
+38	-77	0
+39	-77	0
+40	-77	0
+41	-77	0
+42	-77	0
+43	-77	0
+44	-77	0
+45	-77	0
+46	-77	0
+47	-77	0
+48	-77	0
+49	-77	0
+50	-77	0
+51	-77	0
+52	-77	0
+53	-77	0
+54	-77	0
+55	-77	0
+56	-77	0
+57	-77	0
+58	-77	0
+59	-77	0
+60	-77	0
+61	-77	0
+62	-77	0
+63	-77	0
+64	-77	0
+65	-77	0
+66	-77	0
+67	-77	0
+68	-77	0
+69	-77	0
+70	-77	0
+71	-77	0
+72	-77	0
+73	-77	0
+74	-77	0
+75	-77	0
+76	-77	0
+77	-77	0
+78	-77	0
+79	-77	0
+80	-77	0
+81	-77	0
+82	-77	0
+83	-77	0
+84	-77	0
+85	-77	0
+86	-77	0
+87	-77	0
+88	-77	0
+89	-77	0
+90	-77	0
+91	-77	0
+92	-77	0
+93	-77	0
+94	-77	0
+95	-77	0
+96	-77	0
+97	-77	0
+98	-77	0
+99	-77	0
+100	-77	0
+101	-77	0
+102	-77	0
+103	-77	0
+104	-77	0
+105	-77	0
+106	-77	0
+107	-77	0
+108	-77	0
+109	-77	0
+110	-77	0
+111	-77	0
+112	-77	0
+113	-77	0
+114	-77	0
+115	-77	0
+116	-77	0
+117	-77	0
+118	-77	0
+119	-77	0
+120	-77	0
+121	-77	0
+122	-77	0
+123	-77	0
+124	-77	0
+125	-77	0
+126	-77	0
+127	-77	0
+128	-77	0
+129	-77	0
+130	-77	0
+131	-77	0
+132	-77	0
+133	-77	0
+134	-77	0
+135	-77	0
+136	-77	0
+137	-77	0
+138	-77	0
+139	-77	0
+140	-77	0
+141	-77	0
+142	-77	0
+143	-77	0
+144	-77	0
+145	-77	0
+146	-77	0
+147	-77	0
+148	-77	0
+149	-77	0
+150	-77	0
+151	-77	0
+152	-77	0
+153	-77	0
+154	-77	0
+155	-77	0
+156	-77	0
+157	-77	0
+158	-77	0
+159	-77	0
+160	-77	0
+161	-77	0
+162	-77	0
+163	-77	0
+164	-77	0
+165	-77	0
+166	-77	0
+167	-77	0
+168	-77	0
+169	-77	0
+170	-77	0
+171	-77	0
+172	-77	0
+173	-77	0
+174	-77	0
+175	-77	0
+176	-77	0
+177	-77	0
+178	-77	0
+179	-77	0
+180	-77	0
+181	-77	0
+182	-77	0
+183	-77	0
+184	-77	0
+185	-77	0
+186	-77	0
+187	-77	0
+188	-77	0
+189	-77	0
+190	-77	0
+191	-77	0
+192	-77	0
+193	-77	0
+194	-77	0
+195	-77	0
+196	-77	0
+197	-77	0
+198	-77	0
+199	-77	0
+200	-77	0
+201	-77	0
+202	-77	0
+203	-77	0
+204	-77	0
+205	-77	0
+206	-77	0
+207	-77	0
+208	-77	0
+209	-77	0
+210	-77	0
+211	-77	0
+212	-77	0
+213	-77	0
+214	-77	0
+215	-77	0
+216	-77	0
+217	-77	0
+218	-77	0
+219	-77	0
+220	-77	0
+221	-77	0
+222	-77	0
+223	-77	0
+224	-77	0
+225	-77	0
+226	-77	0
+227	-77	0
+228	-77	0
+229	-77	0
+230	-77	0
+231	-77	0
+232	-77	0
+233	-77	0
+234	-77	0
+235	-77	0
+236	-77	0
+237	-77	0
+238	-77	0
+239	-77	0
+240	-77	0
+241	-77	0
+242	-77	0
+243	-77	0
+244	-77	0
+245	-77	0
+246	-77	0
+247	-77	0
+248	-77	0
+249	-77	0
+250	-77	0
+251	-77	0
+252	-77	0
+253	-77	0
+254	-77	0
+255	-77	0
+256	-77	0
+257	-77	0
+258	-77	0
+259	-77	0
+260	-77	0
+261	-77	0
+262	-77	0
+263	-77	0
+264	-77	0
+265	-77	0
+266	-77	0
+267	-77	0
+268	-77	0
+269	-77	0
+270	-77	0
+271	-77	0
+272	-77	0
+273	-77	0
+274	-77	0
+275	-77	0
+276	-77	0
+277	-77	0
+278	-77	0
+279	-77	0
+280	-77	0
+281	-77	0
+282	-77	0
+283	-77	0
+284	-77	0
+285	-77	0
+286	-77	0
+287	-77	0
+288	-77	0
+289	-77	0
+290	-77	0
+291	-77	0
+292	-77	0
+293	-77	0
+294	-77	0
+295	-77	0
+296	-77	0
+297	-77	0
+298	-77	0
+299	-77	0
+300	-77	0
+301	-77	0
+302	-77	0
+303	-77	0
+304	-77	0
+305	-77	0
+306	-77	0
+307	-77	0
+308	-77	0
+309	-77	0
+310	-77	0
+311	-77	0
+312	-77	0
+313	-77	0
+314	-77	0
+315	-77	0
+316	-77	0
+317	-77	0
+318	-77	0
+319	-77	0
+320	-77	0
+321	-77	0
+322	-77	0
+323	-77	0
+324	-77	0
+325	-77	0
+326	-77	0
+327	-77	0
+328	-77	0
+329	-77	0
+330	-77	0
+331	-77	0
+332	-77	0
+333	-77	0
+334	-77	0
+335	-77	0
+336	-77	0
+337	-77	0
+338	-77	0
+339	-77	0
+340	-77	0
+341	-77	0
+342	-77	0
+343	-77	0
+344	-77	0
+345	-77	0
+346	-77	0
+347	-77	0
+348	-77	0
+349	-77	0
+350	-77	0
+351	-77	0
+352	-77	0
+353	-77	0
+354	-77	0
+355	-77	0
+356	-77	0
+357	-77	0
+358	-77	0
+359	-77	0
+360	-77	0
+0	-76.5	0
+1	-76.5	0
+2	-76.5	0
+3	-76.5	0
+4	-76.5	0
+5	-76.5	0
+6	-76.5	0
+7	-76.5	0
+8	-76.5	0
+9	-76.5	0
+10	-76.5	0
+11	-76.5	0
+12	-76.5	0
+13	-76.5	0
+14	-76.5	0
+15	-76.5	0
+16	-76.5	0
+17	-76.5	0
+18	-76.5	0
+19	-76.5	0
+20	-76.5	0
+21	-76.5	0
+22	-76.5	0
+23	-76.5	0
+24	-76.5	0
+25	-76.5	0
+26	-76.5	0
+27	-76.5	0
+28	-76.5	0
+29	-76.5	0
+30	-76.5	0
+31	-76.5	0
+32	-76.5	0
+33	-76.5	0
+34	-76.5	0
+35	-76.5	0
+36	-76.5	0
+37	-76.5	0
+38	-76.5	0
+39	-76.5	0
+40	-76.5	0
+41	-76.5	0
+42	-76.5	0
+43	-76.5	0
+44	-76.5	0
+45	-76.5	0
+46	-76.5	0
+47	-76.5	0
+48	-76.5	0
+49	-76.5	0
+50	-76.5	0
+51	-76.5	0
+52	-76.5	0
+53	-76.5	0
+54	-76.5	0
+55	-76.5	0
+56	-76.5	0
+57	-76.5	0
+58	-76.5	0
+59	-76.5	0
+60	-76.5	0
+61	-76.5	0
+62	-76.5	0
+63	-76.5	0
+64	-76.5	0
+65	-76.5	0
+66	-76.5	0
+67	-76.5	0
+68	-76.5	0
+69	-76.5	0
+70	-76.5	0
+71	-76.5	0
+72	-76.5	0
+73	-76.5	0
+74	-76.5	0
+75	-76.5	0
+76	-76.5	0
+77	-76.5	0
+78	-76.5	0
+79	-76.5	0
+80	-76.5	0
+81	-76.5	0
+82	-76.5	0
+83	-76.5	0
+84	-76.5	0
+85	-76.5	0
+86	-76.5	0
+87	-76.5	0
+88	-76.5	0
+89	-76.5	0
+90	-76.5	0
+91	-76.5	0
+92	-76.5	0
+93	-76.5	0
+94	-76.5	0
+95	-76.5	0
+96	-76.5	0
+97	-76.5	0
+98	-76.5	0
+99	-76.5	0
+100	-76.5	0
+101	-76.5	0
+102	-76.5	0
+103	-76.5	0
+104	-76.5	0
+105	-76.5	0
+106	-76.5	0
+107	-76.5	0
+108	-76.5	0
+109	-76.5	0
+110	-76.5	0
+111	-76.5	0
+112	-76.5	0
+113	-76.5	0
+114	-76.5	0
+115	-76.5	0
+116	-76.5	0
+117	-76.5	0
+118	-76.5	0
+119	-76.5	0
+120	-76.5	0
+121	-76.5	0
+122	-76.5	0
+123	-76.5	0
+124	-76.5	0
+125	-76.5	0
+126	-76.5	0
+127	-76.5	0
+128	-76.5	0
+129	-76.5	0
+130	-76.5	0
+131	-76.5	0
+132	-76.5	0
+133	-76.5	0
+134	-76.5	0
+135	-76.5	0
+136	-76.5	0
+137	-76.5	0
+138	-76.5	0
+139	-76.5	0
+140	-76.5	0
+141	-76.5	0
+142	-76.5	0
+143	-76.5	0
+144	-76.5	0
+145	-76.5	0
+146	-76.5	0
+147	-76.5	0
+148	-76.5	0
+149	-76.5	0
+150	-76.5	0
+151	-76.5	0
+152	-76.5	0
+153	-76.5	0
+154	-76.5	0
+155	-76.5	0
+156	-76.5	0
+157	-76.5	0
+158	-76.5	0
+159	-76.5	0
+160	-76.5	0
+161	-76.5	0
+162	-76.5	0
+163	-76.5	0
+164	-76.5	0
+165	-76.5	0
+166	-76.5	0
+167	-76.5	0
+168	-76.5	0
+169	-76.5	0
+170	-76.5	0
+171	-76.5	0
+172	-76.5	0
+173	-76.5	0
+174	-76.5	0
+175	-76.5	0
+176	-76.5	0
+177	-76.5	0
+178	-76.5	0
+179	-76.5	0
+180	-76.5	0
+181	-76.5	0
+182	-76.5	0
+183	-76.5	0
+184	-76.5	0
+185	-76.5	0
+186	-76.5	0
+187	-76.5	0
+188	-76.5	0
+189	-76.5	0
+190	-76.5	0
+191	-76.5	0
+192	-76.5	0
+193	-76.5	0
+194	-76.5	0
+195	-76.5	0
+196	-76.5	0
+197	-76.5	0
+198	-76.5	0
+199	-76.5	0
+200	-76.5	0
+201	-76.5	0
+202	-76.5	0
+203	-76.5	0
+204	-76.5	0
+205	-76.5	0
+206	-76.5	0
+207	-76.5	0
+208	-76.5	0
+209	-76.5	0
+210	-76.5	0
+211	-76.5	0
+212	-76.5	0
+213	-76.5	0
+214	-76.5	0
+215	-76.5	0
+216	-76.5	0
+217	-76.5	0
+218	-76.5	0
+219	-76.5	0
+220	-76.5	0
+221	-76.5	0
+222	-76.5	0
+223	-76.5	0
+224	-76.5	0
+225	-76.5	0
+226	-76.5	0
+227	-76.5	0
+228	-76.5	0
+229	-76.5	0
+230	-76.5	0
+231	-76.5	0
+232	-76.5	0
+233	-76.5	0
+234	-76.5	0
+235	-76.5	0
+236	-76.5	0
+237	-76.5	0
+238	-76.5	0
+239	-76.5	0
+240	-76.5	0
+241	-76.5	0
+242	-76.5	0
+243	-76.5	0
+244	-76.5	0
+245	-76.5	0
+246	-76.5	0
+247	-76.5	0
+248	-76.5	0
+249	-76.5	0
+250	-76.5	0
+251	-76.5	0
+252	-76.5	0
+253	-76.5	0
+254	-76.5	0
+255	-76.5	0
+256	-76.5	0
+257	-76.5	0
+258	-76.5	0
+259	-76.5	0
+260	-76.5	0
+261	-76.5	0
+262	-76.5	0
+263	-76.5	0
+264	-76.5	0
+265	-76.5	0
+266	-76.5	0
+267	-76.5	0
+268	-76.5	0
+269	-76.5	0
+270	-76.5	0
+271	-76.5	0
+272	-76.5	0
+273	-76.5	0
+274	-76.5	0
+275	-76.5	0
+276	-76.5	0
+277	-76.5	0
+278	-76.5	0
+279	-76.5	0
+280	-76.5	0
+281	-76.5	0
+282	-76.5	0
+283	-76.5	0
+284	-76.5	0
+285	-76.5	0
+286	-76.5	0
+287	-76.5	0
+288	-76.5	0
+289	-76.5	0
+290	-76.5	0
+291	-76.5	0
+292	-76.5	0
+293	-76.5	0
+294	-76.5	0
+295	-76.5	0
+296	-76.5	0
+297	-76.5	0
+298	-76.5	0
+299	-76.5	0
+300	-76.5	0
+301	-76.5	0
+302	-76.5	0
+303	-76.5	0
+304	-76.5	0
+305	-76.5	0
+306	-76.5	0
+307	-76.5	0
+308	-76.5	0
+309	-76.5	0
+310	-76.5	0
+311	-76.5	0
+312	-76.5	0
+313	-76.5	0
+314	-76.5	0
+315	-76.5	0
+316	-76.5	0
+317	-76.5	0
+318	-76.5	0
+319	-76.5	0
+320	-76.5	0
+321	-76.5	0
+322	-76.5	0
+323	-76.5	0
+324	-76.5	0
+325	-76.5	0
+326	-76.5	0
+327	-76.5	0
+328	-76.5	0
+329	-76.5	0
+330	-76.5	0
+331	-76.5	0
+332	-76.5	0
+333	-76.5	0
+334	-76.5	0
+335	-76.5	0
+336	-76.5	0
+337	-76.5	0
+338	-76.5	0
+339	-76.5	0
+340	-76.5	0
+341	-76.5	0
+342	-76.5	0
+343	-76.5	0
+344	-76.5	0
+345	-76.5	0
+346	-76.5	0
+347	-76.5	0
+348	-76.5	0
+349	-76.5	0
+350	-76.5	0
+351	-76.5	0
+352	-76.5	0
+353	-76.5	0
+354	-76.5	0
+355	-76.5	0
+356	-76.5	0
+357	-76.5	0
+358	-76.5	0
+359	-76.5	0
+360	-76.5	0
+0	-76	0
+1	-76	0
+2	-76	0
+3	-76	0
+4	-76	0
+5	-76	0
+6	-76	0
+7	-76	0
+8	-76	0
+9	-76	0
+10	-76	0
+11	-76	0
+12	-76	0
+13	-76	0
+14	-76	0
+15	-76	0
+16	-76	0
+17	-76	0
+18	-76	0
+19	-76	0
+20	-76	0
+21	-76	0
+22	-76	0
+23	-76	0
+24	-76	0
+25	-76	0
+26	-76	0
+27	-76	0
+28	-76	0
+29	-76	0
+30	-76	0
+31	-76	0
+32	-76	0
+33	-76	0
+34	-76	0
+35	-76	0
+36	-76	0
+37	-76	0
+38	-76	0
+39	-76	0
+40	-76	0
+41	-76	0
+42	-76	0
+43	-76	0
+44	-76	0
+45	-76	0
+46	-76	0
+47	-76	0
+48	-76	0
+49	-76	0
+50	-76	0
+51	-76	0
+52	-76	0
+53	-76	0
+54	-76	0
+55	-76	0
+56	-76	0
+57	-76	0
+58	-76	0
+59	-76	0
+60	-76	0
+61	-76	0
+62	-76	0
+63	-76	0
+64	-76	0
+65	-76	0
+66	-76	0
+67	-76	0
+68	-76	0
+69	-76	0
+70	-76	0
+71	-76	0
+72	-76	0
+73	-76	0
+74	-76	0
+75	-76	0
+76	-76	0
+77	-76	0
+78	-76	0
+79	-76	0
+80	-76	0
+81	-76	0
+82	-76	0
+83	-76	0
+84	-76	0
+85	-76	0
+86	-76	0
+87	-76	0
+88	-76	0
+89	-76	0
+90	-76	0
+91	-76	0
+92	-76	0
+93	-76	0
+94	-76	0
+95	-76	0
+96	-76	0
+97	-76	0
+98	-76	0
+99	-76	0
+100	-76	0
+101	-76	0
+102	-76	0
+103	-76	0
+104	-76	0
+105	-76	0
+106	-76	0
+107	-76	0
+108	-76	0
+109	-76	0
+110	-76	0
+111	-76	0
+112	-76	0
+113	-76	0
+114	-76	0
+115	-76	0
+116	-76	0
+117	-76	0
+118	-76	0
+119	-76	0
+120	-76	0
+121	-76	0
+122	-76	0
+123	-76	0
+124	-76	0
+125	-76	0
+126	-76	0
+127	-76	0
+128	-76	0
+129	-76	0
+130	-76	0
+131	-76	0
+132	-76	0
+133	-76	0
+134	-76	0
+135	-76	0
+136	-76	0
+137	-76	0
+138	-76	0
+139	-76	0
+140	-76	0
+141	-76	0
+142	-76	0
+143	-76	0
+144	-76	0
+145	-76	0
+146	-76	0
+147	-76	0
+148	-76	0
+149	-76	0
+150	-76	0
+151	-76	0
+152	-76	0
+153	-76	0
+154	-76	0
+155	-76	0
+156	-76	0
+157	-76	0
+158	-76	0
+159	-76	0
+160	-76	0
+161	-76	0
+162	-76	0
+163	-76	0
+164	-76	0
+165	-76	0
+166	-76	0
+167	-76	0
+168	-76	0
+169	-76	0
+170	-76	0
+171	-76	0
+172	-76	0
+173	-76	0
+174	-76	0
+175	-76	0
+176	-76	0
+177	-76	0
+178	-76	0
+179	-76	0
+180	-76	0
+181	-76	0
+182	-76	0
+183	-76	0
+184	-76	0
+185	-76	0
+186	-76	0
+187	-76	0
+188	-76	0
+189	-76	0
+190	-76	0
+191	-76	0
+192	-76	0
+193	-76	0
+194	-76	0
+195	-76	0
+196	-76	0
+197	-76	0
+198	-76	0
+199	-76	0
+200	-76	0
+201	-76	0
+202	-76	0
+203	-76	0
+204	-76	0
+205	-76	0
+206	-76	0
+207	-76	0
+208	-76	0
+209	-76	0
+210	-76	0
+211	-76	0
+212	-76	0
+213	-76	0
+214	-76	0
+215	-76	0
+216	-76	0
+217	-76	0
+218	-76	0
+219	-76	0
+220	-76	0
+221	-76	0
+222	-76	0
+223	-76	0
+224	-76	0
+225	-76	0
+226	-76	0
+227	-76	0
+228	-76	0
+229	-76	0
+230	-76	0
+231	-76	0
+232	-76	0
+233	-76	0
+234	-76	0
+235	-76	0
+236	-76	0
+237	-76	0
+238	-76	0
+239	-76	0
+240	-76	0
+241	-76	0
+242	-76	0
+243	-76	0
+244	-76	0
+245	-76	0
+246	-76	0
+247	-76	0
+248	-76	0
+249	-76	0
+250	-76	0
+251	-76	0
+252	-76	0
+253	-76	0
+254	-76	0
+255	-76	0
+256	-76	0
+257	-76	0
+258	-76	0
+259	-76	0
+260	-76	0
+261	-76	0
+262	-76	0
+263	-76	0
+264	-76	0
+265	-76	0
+266	-76	0
+267	-76	0
+268	-76	0
+269	-76	0
+270	-76	0
+271	-76	0
+272	-76	0
+273	-76	0
+274	-76	0
+275	-76	0
+276	-76	0
+277	-76	0
+278	-76	0
+279	-76	0
+280	-76	0
+281	-76	0
+282	-76	0
+283	-76	0
+284	-76	0
+285	-76	0
+286	-76	0
+287	-76	0
+288	-76	0
+289	-76	0
+290	-76	0
+291	-76	0
+292	-76	0
+293	-76	0
+294	-76	0
+295	-76	0
+296	-76	0
+297	-76	0
+298	-76	0
+299	-76	0
+300	-76	0
+301	-76	0
+302	-76	0
+303	-76	0
+304	-76	0
+305	-76	0
+306	-76	0
+307	-76	0
+308	-76	0
+309	-76	0
+310	-76	0
+311	-76	0
+312	-76	0
+313	-76	0
+314	-76	0
+315	-76	0
+316	-76	0
+317	-76	0
+318	-76	0
+319	-76	0
+320	-76	0
+321	-76	0
+322	-76	0
+323	-76	0
+324	-76	0
+325	-76	0
+326	-76	0
+327	-76	0
+328	-76	0
+329	-76	0
+330	-76	0
+331	-76	0
+332	-76	0
+333	-76	0
+334	-76	0
+335	-76	0
+336	-76	0
+337	-76	0
+338	-76	0
+339	-76	0
+340	-76	0
+341	-76	0
+342	-76	0
+343	-76	0
+344	-76	0
+345	-76	0
+346	-76	0
+347	-76	0
+348	-76	0
+349	-76	0
+350	-76	0
+351	-76	0
+352	-76	0
+353	-76	0
+354	-76	0
+355	-76	0
+356	-76	0
+357	-76	0
+358	-76	0
+359	-76	0
+360	-76	0
+0	-75.5	0
+1	-75.5	0
+2	-75.5	0
+3	-75.5	0
+4	-75.5	0
+5	-75.5	0
+6	-75.5	0
+7	-75.5	0
+8	-75.5	0
+9	-75.5	0
+10	-75.5	0
+11	-75.5	0
+12	-75.5	0
+13	-75.5	0
+14	-75.5	0
+15	-75.5	0
+16	-75.5	0
+17	-75.5	0
+18	-75.5	0
+19	-75.5	0
+20	-75.5	0
+21	-75.5	0
+22	-75.5	0
+23	-75.5	0
+24	-75.5	0
+25	-75.5	0
+26	-75.5	0
+27	-75.5	0
+28	-75.5	0
+29	-75.5	0
+30	-75.5	0
+31	-75.5	0
+32	-75.5	0
+33	-75.5	0
+34	-75.5	0
+35	-75.5	0
+36	-75.5	0
+37	-75.5	0
+38	-75.5	0
+39	-75.5	0
+40	-75.5	0
+41	-75.5	0
+42	-75.5	0
+43	-75.5	0
+44	-75.5	0
+45	-75.5	0
+46	-75.5	0
+47	-75.5	0
+48	-75.5	0
+49	-75.5	0
+50	-75.5	0
+51	-75.5	0
+52	-75.5	0
+53	-75.5	0
+54	-75.5	0
+55	-75.5	0
+56	-75.5	0
+57	-75.5	0
+58	-75.5	0
+59	-75.5	0
+60	-75.5	0
+61	-75.5	0
+62	-75.5	0
+63	-75.5	0
+64	-75.5	0
+65	-75.5	0
+66	-75.5	0
+67	-75.5	0
+68	-75.5	0
+69	-75.5	0
+70	-75.5	0
+71	-75.5	0
+72	-75.5	0
+73	-75.5	0
+74	-75.5	0
+75	-75.5	0
+76	-75.5	0
+77	-75.5	0
+78	-75.5	0
+79	-75.5	0
+80	-75.5	0
+81	-75.5	0
+82	-75.5	0
+83	-75.5	0
+84	-75.5	0
+85	-75.5	0
+86	-75.5	0
+87	-75.5	0
+88	-75.5	0
+89	-75.5	0
+90	-75.5	0
+91	-75.5	0
+92	-75.5	0
+93	-75.5	0
+94	-75.5	0
+95	-75.5	0
+96	-75.5	0
+97	-75.5	0
+98	-75.5	0
+99	-75.5	0
+100	-75.5	0
+101	-75.5	0
+102	-75.5	0
+103	-75.5	0
+104	-75.5	0
+105	-75.5	0
+106	-75.5	0
+107	-75.5	0
+108	-75.5	0
+109	-75.5	0
+110	-75.5	0
+111	-75.5	0
+112	-75.5	0
+113	-75.5	0
+114	-75.5	0
+115	-75.5	0
+116	-75.5	0
+117	-75.5	0
+118	-75.5	0
+119	-75.5	0
+120	-75.5	0
+121	-75.5	0
+122	-75.5	0
+123	-75.5	0
+124	-75.5	0
+125	-75.5	0
+126	-75.5	0
+127	-75.5	0
+128	-75.5	0
+129	-75.5	0
+130	-75.5	0
+131	-75.5	0
+132	-75.5	0
+133	-75.5	0
+134	-75.5	0
+135	-75.5	0
+136	-75.5	0
+137	-75.5	0
+138	-75.5	0
+139	-75.5	0
+140	-75.5	0
+141	-75.5	0
+142	-75.5	0
+143	-75.5	0
+144	-75.5	0
+145	-75.5	0
+146	-75.5	0
+147	-75.5	0
+148	-75.5	0
+149	-75.5	0
+150	-75.5	0
+151	-75.5	0
+152	-75.5	0
+153	-75.5	0
+154	-75.5	0
+155	-75.5	0
+156	-75.5	0
+157	-75.5	0
+158	-75.5	0
+159	-75.5	0
+160	-75.5	0
+161	-75.5	0
+162	-75.5	0
+163	-75.5	0
+164	-75.5	0
+165	-75.5	0
+166	-75.5	0
+167	-75.5	0
+168	-75.5	0
+169	-75.5	0
+170	-75.5	0
+171	-75.5	0
+172	-75.5	0
+173	-75.5	0
+174	-75.5	0
+175	-75.5	0
+176	-75.5	0
+177	-75.5	0
+178	-75.5	0
+179	-75.5	0
+180	-75.5	0
+181	-75.5	0
+182	-75.5	0
+183	-75.5	0
+184	-75.5	0
+185	-75.5	0
+186	-75.5	0
+187	-75.5	0
+188	-75.5	0
+189	-75.5	0
+190	-75.5	0
+191	-75.5	0
+192	-75.5	0
+193	-75.5	0
+194	-75.5	0
+195	-75.5	0
+196	-75.5	0
+197	-75.5	0
+198	-75.5	0
+199	-75.5	0
+200	-75.5	0
+201	-75.5	0
+202	-75.5	0
+203	-75.5	0
+204	-75.5	0
+205	-75.5	0
+206	-75.5	0
+207	-75.5	0
+208	-75.5	0
+209	-75.5	0
+210	-75.5	0
+211	-75.5	0
+212	-75.5	0
+213	-75.5	0
+214	-75.5	0
+215	-75.5	0
+216	-75.5	0
+217	-75.5	0
+218	-75.5	0
+219	-75.5	0
+220	-75.5	0
+221	-75.5	0
+222	-75.5	0
+223	-75.5	0
+224	-75.5	0
+225	-75.5	0
+226	-75.5	0
+227	-75.5	0
+228	-75.5	0
+229	-75.5	0
+230	-75.5	0
+231	-75.5	0
+232	-75.5	0
+233	-75.5	0
+234	-75.5	0
+235	-75.5	0
+236	-75.5	0
+237	-75.5	0
+238	-75.5	0
+239	-75.5	0
+240	-75.5	0
+241	-75.5	0
+242	-75.5	0
+243	-75.5	0
+244	-75.5	0
+245	-75.5	0
+246	-75.5	0
+247	-75.5	0
+248	-75.5	0
+249	-75.5	0
+250	-75.5	0
+251	-75.5	0
+252	-75.5	0
+253	-75.5	0
+254	-75.5	0
+255	-75.5	0
+256	-75.5	0
+257	-75.5	0
+258	-75.5	0
+259	-75.5	0
+260	-75.5	0
+261	-75.5	0
+262	-75.5	0
+263	-75.5	0
+264	-75.5	0
+265	-75.5	0
+266	-75.5	0
+267	-75.5	0
+268	-75.5	0
+269	-75.5	0
+270	-75.5	0
+271	-75.5	0
+272	-75.5	0
+273	-75.5	0
+274	-75.5	0
+275	-75.5	0
+276	-75.5	0
+277	-75.5	0
+278	-75.5	0
+279	-75.5	0
+280	-75.5	0
+281	-75.5	0
+282	-75.5	0
+283	-75.5	0
+284	-75.5	0
+285	-75.5	0
+286	-75.5	0
+287	-75.5	0
+288	-75.5	0
+289	-75.5	0
+290	-75.5	0
+291	-75.5	0
+292	-75.5	0
+293	-75.5	0
+294	-75.5	0
+295	-75.5	0
+296	-75.5	0
+297	-75.5	0
+298	-75.5	0
+299	-75.5	0
+300	-75.5	0
+301	-75.5	0
+302	-75.5	0
+303	-75.5	0
+304	-75.5	0
+305	-75.5	0
+306	-75.5	0
+307	-75.5	0
+308	-75.5	0
+309	-75.5	0
+310	-75.5	0
+311	-75.5	0
+312	-75.5	0
+313	-75.5	0
+314	-75.5	0
+315	-75.5	0
+316	-75.5	0
+317	-75.5	0
+318	-75.5	0
+319	-75.5	0
+320	-75.5	0
+321	-75.5	0
+322	-75.5	0
+323	-75.5	0
+324	-75.5	0
+325	-75.5	0
+326	-75.5	0
+327	-75.5	0
+328	-75.5	0
+329	-75.5	0
+330	-75.5	0
+331	-75.5	0
+332	-75.5	0
+333	-75.5	0
+334	-75.5	0
+335	-75.5	0
+336	-75.5	0
+337	-75.5	0
+338	-75.5	0
+339	-75.5	0
+340	-75.5	0
+341	-75.5	0
+342	-75.5	0
+343	-75.5	0
+344	-75.5	0
+345	-75.5	0
+346	-75.5	0
+347	-75.5	0
+348	-75.5	0
+349	-75.5	0
+350	-75.5	0
+351	-75.5	0
+352	-75.5	0
+353	-75.5	0
+354	-75.5	0
+355	-75.5	0
+356	-75.5	0
+357	-75.5	0
+358	-75.5	0
+359	-75.5	0
+360	-75.5	0
+0	-75	0
+1	-75	0
+2	-75	0
+3	-75	0
+4	-75	0
+5	-75	0
+6	-75	0
+7	-75	0
+8	-75	0
+9	-75	0
+10	-75	0
+11	-75	0
+12	-75	0
+13	-75	0
+14	-75	0
+15	-75	0
+16	-75	0
+17	-75	0
+18	-75	0
+19	-75	0
+20	-75	0
+21	-75	0
+22	-75	0
+23	-75	0
+24	-75	0
+25	-75	0
+26	-75	0
+27	-75	0
+28	-75	0
+29	-75	0
+30	-75	0
+31	-75	0
+32	-75	0
+33	-75	0
+34	-75	0
+35	-75	0
+36	-75	0
+37	-75	0
+38	-75	0
+39	-75	0
+40	-75	0
+41	-75	0
+42	-75	0
+43	-75	0
+44	-75	0
+45	-75	0
+46	-75	0
+47	-75	0
+48	-75	0
+49	-75	0
+50	-75	0
+51	-75	0
+52	-75	0
+53	-75	0
+54	-75	0
+55	-75	0
+56	-75	0
+57	-75	0
+58	-75	0
+59	-75	0
+60	-75	0
+61	-75	0
+62	-75	0
+63	-75	0
+64	-75	0
+65	-75	0
+66	-75	0
+67	-75	0
+68	-75	0
+69	-75	0
+70	-75	0
+71	-75	0
+72	-75	0
+73	-75	0
+74	-75	0
+75	-75	0
+76	-75	0
+77	-75	0
+78	-75	0
+79	-75	0
+80	-75	0
+81	-75	0
+82	-75	0
+83	-75	0
+84	-75	0
+85	-75	0
+86	-75	0
+87	-75	0
+88	-75	0
+89	-75	0
+90	-75	0
+91	-75	0
+92	-75	0
+93	-75	0
+94	-75	0
+95	-75	0
+96	-75	0
+97	-75	0
+98	-75	0
+99	-75	0
+100	-75	0
+101	-75	0
+102	-75	0
+103	-75	0
+104	-75	0
+105	-75	0
+106	-75	0
+107	-75	0
+108	-75	0
+109	-75	0
+110	-75	0
+111	-75	0
+112	-75	0
+113	-75	0
+114	-75	0
+115	-75	0
+116	-75	0
+117	-75	0
+118	-75	0
+119	-75	0
+120	-75	0
+121	-75	0
+122	-75	0
+123	-75	0
+124	-75	0
+125	-75	0
+126	-75	0
+127	-75	0
+128	-75	0
+129	-75	0
+130	-75	0
+131	-75	0
+132	-75	0
+133	-75	0
+134	-75	0
+135	-75	0
+136	-75	0
+137	-75	0
+138	-75	0
+139	-75	0
+140	-75	0
+141	-75	0
+142	-75	0
+143	-75	0
+144	-75	0
+145	-75	0
+146	-75	0
+147	-75	0
+148	-75	0
+149	-75	0
+150	-75	0
+151	-75	0
+152	-75	0
+153	-75	0
+154	-75	0
+155	-75	0
+156	-75	0
+157	-75	0
+158	-75	0
+159	-75	0
+160	-75	0
+161	-75	0
+162	-75	0
+163	-75	0
+164	-75	0
+165	-75	0
+166	-75	0
+167	-75	0
+168	-75	0
+169	-75	0
+170	-75	0
+171	-75	0
+172	-75	0
+173	-75	0
+174	-75	0
+175	-75	0
+176	-75	0
+177	-75	0
+178	-75	0
+179	-75	0
+180	-75	0
+181	-75	0
+182	-75	0
+183	-75	0
+184	-75	0
+185	-75	0
+186	-75	0
+187	-75	0
+188	-75	0
+189	-75	0
+190	-75	0
+191	-75	0
+192	-75	0
+193	-75	0
+194	-75	0
+195	-75	0
+196	-75	0
+197	-75	0
+198	-75	0
+199	-75	0
+200	-75	0
+201	-75	0
+202	-75	0
+203	-75	0
+204	-75	0
+205	-75	0
+206	-75	0
+207	-75	0
+208	-75	0
+209	-75	0
+210	-75	0
+211	-75	0
+212	-75	0
+213	-75	0
+214	-75	0
+215	-75	0
+216	-75	0
+217	-75	0
+218	-75	0
+219	-75	0
+220	-75	0
+221	-75	0
+222	-75	0
+223	-75	0
+224	-75	0
+225	-75	0
+226	-75	0
+227	-75	0
+228	-75	0
+229	-75	0
+230	-75	0
+231	-75	0
+232	-75	0
+233	-75	0
+234	-75	0
+235	-75	0
+236	-75	0
+237	-75	0
+238	-75	0
+239	-75	0
+240	-75	0
+241	-75	0
+242	-75	0
+243	-75	0
+244	-75	0
+245	-75	0
+246	-75	0
+247	-75	0
+248	-75	0
+249	-75	0
+250	-75	0
+251	-75	0
+252	-75	0
+253	-75	0
+254	-75	0
+255	-75	0
+256	-75	0
+257	-75	0
+258	-75	0
+259	-75	0
+260	-75	0
+261	-75	0
+262	-75	0
+263	-75	0
+264	-75	0
+265	-75	0
+266	-75	0
+267	-75	0
+268	-75	0
+269	-75	0
+270	-75	0
+271	-75	0
+272	-75	0
+273	-75	0
+274	-75	0
+275	-75	0
+276	-75	0
+277	-75	0
+278	-75	0
+279	-75	0
+280	-75	0
+281	-75	0
+282	-75	0
+283	-75	0
+284	-75	0
+285	-75	0
+286	-75	0
+287	-75	0
+288	-75	0
+289	-75	0
+290	-75	0
+291	-75	0
+292	-75	0
+293	-75	0
+294	-75	0
+295	-75	0
+296	-75	0
+297	-75	0
+298	-75	0
+299	-75	0
+300	-75	0
+301	-75	0
+302	-75	0
+303	-75	0
+304	-75	0
+305	-75	0
+306	-75	0
+307	-75	0
+308	-75	0
+309	-75	0
+310	-75	0
+311	-75	0
+312	-75	0
+313	-75	0
+314	-75	0
+315	-75	0
+316	-75	0
+317	-75	0
+318	-75	0
+319	-75	0
+320	-75	0
+321	-75	0
+322	-75	0
+323	-75	0
+324	-75	0
+325	-75	0
+326	-75	0
+327	-75	0
+328	-75	0
+329	-75	0
+330	-75	0
+331	-75	0
+332	-75	0
+333	-75	0
+334	-75	0
+335	-75	0
+336	-75	0
+337	-75	0
+338	-75	0
+339	-75	0
+340	-75	0
+341	-75	0
+342	-75	0
+343	-75	0
+344	-75	0
+345	-75	0
+346	-75	0
+347	-75	0
+348	-75	0
+349	-75	0
+350	-75	0
+351	-75	0
+352	-75	0
+353	-75	0
+354	-75	0
+355	-75	0
+356	-75	0
+357	-75	0
+358	-75	0
+359	-75	0
+360	-75	0
+0	-74.5	0
+1	-74.5	0
+2	-74.5	0
+3	-74.5	0
+4	-74.5	0
+5	-74.5	0
+6	-74.5	0
+7	-74.5	0
+8	-74.5	0
+9	-74.5	0
+10	-74.5	0
+11	-74.5	0
+12	-74.5	0
+13	-74.5	0
+14	-74.5	0
+15	-74.5	0
+16	-74.5	0
+17	-74.5	0
+18	-74.5	0
+19	-74.5	0
+20	-74.5	0
+21	-74.5	0
+22	-74.5	0
+23	-74.5	0
+24	-74.5	0
+25	-74.5	0
+26	-74.5	0
+27	-74.5	0
+28	-74.5	0
+29	-74.5	0
+30	-74.5	0
+31	-74.5	0
+32	-74.5	0
+33	-74.5	0
+34	-74.5	0
+35	-74.5	0
+36	-74.5	0
+37	-74.5	0
+38	-74.5	0
+39	-74.5	0
+40	-74.5	0
+41	-74.5	0
+42	-74.5	0
+43	-74.5	0
+44	-74.5	0
+45	-74.5	0
+46	-74.5	0
+47	-74.5	0
+48	-74.5	0
+49	-74.5	0
+50	-74.5	0
+51	-74.5	0
+52	-74.5	0
+53	-74.5	0
+54	-74.5	0
+55	-74.5	0
+56	-74.5	0
+57	-74.5	0
+58	-74.5	0
+59	-74.5	0
+60	-74.5	0
+61	-74.5	0
+62	-74.5	0
+63	-74.5	0
+64	-74.5	0
+65	-74.5	0
+66	-74.5	0
+67	-74.5	0
+68	-74.5	0
+69	-74.5	0
+70	-74.5	0
+71	-74.5	0
+72	-74.5	0
+73	-74.5	0
+74	-74.5	0
+75	-74.5	0
+76	-74.5	0
+77	-74.5	0
+78	-74.5	0
+79	-74.5	0
+80	-74.5	0
+81	-74.5	0
+82	-74.5	0
+83	-74.5	0
+84	-74.5	0
+85	-74.5	0
+86	-74.5	0
+87	-74.5	0
+88	-74.5	0
+89	-74.5	0
+90	-74.5	0
+91	-74.5	0
+92	-74.5	0
+93	-74.5	0
+94	-74.5	0
+95	-74.5	0
+96	-74.5	0
+97	-74.5	0
+98	-74.5	0
+99	-74.5	0
+100	-74.5	0
+101	-74.5	0
+102	-74.5	0
+103	-74.5	0
+104	-74.5	0
+105	-74.5	0
+106	-74.5	0
+107	-74.5	0
+108	-74.5	0
+109	-74.5	0
+110	-74.5	0
+111	-74.5	0
+112	-74.5	0
+113	-74.5	0
+114	-74.5	0
+115	-74.5	0
+116	-74.5	0
+117	-74.5	0
+118	-74.5	0
+119	-74.5	0
+120	-74.5	0
+121	-74.5	0
+122	-74.5	0
+123	-74.5	0
+124	-74.5	0
+125	-74.5	0
+126	-74.5	0
+127	-74.5	0
+128	-74.5	0
+129	-74.5	0
+130	-74.5	0
+131	-74.5	0
+132	-74.5	0
+133	-74.5	0
+134	-74.5	0
+135	-74.5	0
+136	-74.5	0
+137	-74.5	0
+138	-74.5	0
+139	-74.5	0
+140	-74.5	0
+141	-74.5	0
+142	-74.5	0
+143	-74.5	0
+144	-74.5	0
+145	-74.5	0
+146	-74.5	0
+147	-74.5	0
+148	-74.5	0
+149	-74.5	0
+150	-74.5	0
+151	-74.5	0
+152	-74.5	0
+153	-74.5	0
+154	-74.5	0
+155	-74.5	0
+156	-74.5	0
+157	-74.5	0
+158	-74.5	0
+159	-74.5	0
+160	-74.5	0
+161	-74.5	0
+162	-74.5	0
+163	-74.5	0
+164	-74.5	0
+165	-74.5	0
+166	-74.5	0
+167	-74.5	0
+168	-74.5	0
+169	-74.5	0
+170	-74.5	0
+171	-74.5	0
+172	-74.5	0
+173	-74.5	0
+174	-74.5	0
+175	-74.5	0
+176	-74.5	0
+177	-74.5	0
+178	-74.5	0
+179	-74.5	0
+180	-74.5	0
+181	-74.5	0
+182	-74.5	0
+183	-74.5	0
+184	-74.5	0
+185	-74.5	0
+186	-74.5	0
+187	-74.5	0
+188	-74.5	0
+189	-74.5	0
+190	-74.5	0
+191	-74.5	0
+192	-74.5	0
+193	-74.5	0
+194	-74.5	0
+195	-74.5	0
+196	-74.5	0
+197	-74.5	0
+198	-74.5	0
+199	-74.5	0
+200	-74.5	0
+201	-74.5	0
+202	-74.5	0
+203	-74.5	0
+204	-74.5	0
+205	-74.5	0
+206	-74.5	0
+207	-74.5	0
+208	-74.5	0
+209	-74.5	0
+210	-74.5	0
+211	-74.5	0
+212	-74.5	0
+213	-74.5	0
+214	-74.5	0
+215	-74.5	0
+216	-74.5	0
+217	-74.5	0
+218	-74.5	0
+219	-74.5	0
+220	-74.5	0
+221	-74.5	0
+222	-74.5	0
+223	-74.5	0
+224	-74.5	0
+225	-74.5	0
+226	-74.5	0
+227	-74.5	0
+228	-74.5	0
+229	-74.5	0
+230	-74.5	0
+231	-74.5	0
+232	-74.5	0
+233	-74.5	0
+234	-74.5	0
+235	-74.5	0
+236	-74.5	0
+237	-74.5	0
+238	-74.5	0
+239	-74.5	0
+240	-74.5	0
+241	-74.5	0
+242	-74.5	0
+243	-74.5	0
+244	-74.5	0
+245	-74.5	0
+246	-74.5	0
+247	-74.5	0
+248	-74.5	0
+249	-74.5	0
+250	-74.5	0
+251	-74.5	0
+252	-74.5	0
+253	-74.5	0
+254	-74.5	0
+255	-74.5	0
+256	-74.5	0
+257	-74.5	0
+258	-74.5	0
+259	-74.5	0
+260	-74.5	0
+261	-74.5	0
+262	-74.5	0
+263	-74.5	0
+264	-74.5	0
+265	-74.5	0
+266	-74.5	0
+267	-74.5	0
+268	-74.5	0
+269	-74.5	0
+270	-74.5	0
+271	-74.5	0
+272	-74.5	0
+273	-74.5	0
+274	-74.5	0
+275	-74.5	0
+276	-74.5	0
+277	-74.5	0
+278	-74.5	0
+279	-74.5	0
+280	-74.5	0
+281	-74.5	0
+282	-74.5	0
+283	-74.5	0
+284	-74.5	0
+285	-74.5	0
+286	-74.5	0
+287	-74.5	0
+288	-74.5	0
+289	-74.5	0
+290	-74.5	0
+291	-74.5	0
+292	-74.5	0
+293	-74.5	0
+294	-74.5	0
+295	-74.5	0
+296	-74.5	0
+297	-74.5	0
+298	-74.5	0
+299	-74.5	0
+300	-74.5	0
+301	-74.5	0
+302	-74.5	0
+303	-74.5	0
+304	-74.5	0
+305	-74.5	0
+306	-74.5	0
+307	-74.5	0
+308	-74.5	0
+309	-74.5	0
+310	-74.5	0
+311	-74.5	0
+312	-74.5	0
+313	-74.5	0
+314	-74.5	0
+315	-74.5	0
+316	-74.5	0
+317	-74.5	0
+318	-74.5	0
+319	-74.5	0
+320	-74.5	0
+321	-74.5	0
+322	-74.5	0
+323	-74.5	0
+324	-74.5	0
+325	-74.5	0
+326	-74.5	0
+327	-74.5	0
+328	-74.5	0
+329	-74.5	0
+330	-74.5	0
+331	-74.5	0
+332	-74.5	0
+333	-74.5	0
+334	-74.5	0
+335	-74.5	0
+336	-74.5	0
+337	-74.5	0
+338	-74.5	0
+339	-74.5	0
+340	-74.5	0
+341	-74.5	0
+342	-74.5	0
+343	-74.5	0
+344	-74.5	0
+345	-74.5	0
+346	-74.5	0
+347	-74.5	0
+348	-74.5	0
+349	-74.5	0
+350	-74.5	0
+351	-74.5	0
+352	-74.5	0
+353	-74.5	0
+354	-74.5	0
+355	-74.5	0
+356	-74.5	0
+357	-74.5	0
+358	-74.5	0
+359	-74.5	0
+360	-74.5	0
+0	-74	0
+1	-74	0
+2	-74	0
+3	-74	0
+4	-74	0
+5	-74	0
+6	-74	0
+7	-74	0
+8	-74	0
+9	-74	0
+10	-74	0
+11	-74	0
+12	-74	0
+13	-74	0
+14	-74	0
+15	-74	0
+16	-74	0
+17	-74	0
+18	-74	0
+19	-74	0
+20	-74	0
+21	-74	0
+22	-74	0
+23	-74	0
+24	-74	0
+25	-74	0
+26	-74	0
+27	-74	0
+28	-74	0
+29	-74	0
+30	-74	0
+31	-74	0
+32	-74	0
+33	-74	0
+34	-74	0
+35	-74	0
+36	-74	0
+37	-74	0
+38	-74	0
+39	-74	0
+40	-74	0
+41	-74	0
+42	-74	0
+43	-74	0
+44	-74	0
+45	-74	0
+46	-74	0
+47	-74	0
+48	-74	0
+49	-74	0
+50	-74	0
+51	-74	0
+52	-74	0
+53	-74	0
+54	-74	0
+55	-74	0
+56	-74	0
+57	-74	0
+58	-74	0
+59	-74	0
+60	-74	0
+61	-74	0
+62	-74	0
+63	-74	0
+64	-74	0
+65	-74	0
+66	-74	0
+67	-74	0
+68	-74	0
+69	-74	0
+70	-74	0
+71	-74	0
+72	-74	0
+73	-74	0
+74	-74	0
+75	-74	0
+76	-74	0
+77	-74	0
+78	-74	0
+79	-74	0
+80	-74	0
+81	-74	0
+82	-74	0
+83	-74	0
+84	-74	0
+85	-74	0
+86	-74	0
+87	-74	0
+88	-74	0
+89	-74	0
+90	-74	0
+91	-74	0
+92	-74	0
+93	-74	0
+94	-74	0
+95	-74	0
+96	-74	0
+97	-74	0
+98	-74	0
+99	-74	0
+100	-74	0
+101	-74	0
+102	-74	0
+103	-74	0
+104	-74	0
+105	-74	0
+106	-74	0
+107	-74	0
+108	-74	0
+109	-74	0
+110	-74	0
+111	-74	0
+112	-74	0
+113	-74	0
+114	-74	0
+115	-74	0
+116	-74	0
+117	-74	0
+118	-74	0
+119	-74	0
+120	-74	0
+121	-74	0
+122	-74	0
+123	-74	0
+124	-74	0
+125	-74	0
+126	-74	0
+127	-74	0
+128	-74	0
+129	-74	0
+130	-74	0
+131	-74	0
+132	-74	0
+133	-74	0
+134	-74	0
+135	-74	0
+136	-74	0
+137	-74	0
+138	-74	0
+139	-74	0
+140	-74	0
+141	-74	0
+142	-74	0
+143	-74	0
+144	-74	0
+145	-74	0
+146	-74	0
+147	-74	0
+148	-74	0
+149	-74	0
+150	-74	0
+151	-74	0
+152	-74	0
+153	-74	0
+154	-74	0
+155	-74	0
+156	-74	0
+157	-74	0
+158	-74	0
+159	-74	0
+160	-74	0
+161	-74	0
+162	-74	0
+163	-74	0
+164	-74	0
+165	-74	0
+166	-74	0
+167	-74	0
+168	-74	0
+169	-74	0
+170	-74	0
+171	-74	0
+172	-74	0
+173	-74	0
+174	-74	0
+175	-74	0
+176	-74	0
+177	-74	0
+178	-74	0
+179	-74	0
+180	-74	0
+181	-74	0
+182	-74	0
+183	-74	0
+184	-74	0
+185	-74	0
+186	-74	0
+187	-74	0
+188	-74	0
+189	-74	0
+190	-74	0
+191	-74	0
+192	-74	0
+193	-74	0
+194	-74	0
+195	-74	0
+196	-74	0
+197	-74	0
+198	-74	0
+199	-74	0
+200	-74	0
+201	-74	0
+202	-74	0
+203	-74	0
+204	-74	0
+205	-74	0
+206	-74	0
+207	-74	0
+208	-74	0
+209	-74	0
+210	-74	0
+211	-74	0
+212	-74	0
+213	-74	0
+214	-74	0
+215	-74	0
+216	-74	0
+217	-74	0
+218	-74	0
+219	-74	0
+220	-74	0
+221	-74	0
+222	-74	0
+223	-74	0
+224	-74	0
+225	-74	0
+226	-74	0
+227	-74	0
+228	-74	0
+229	-74	0
+230	-74	0
+231	-74	0
+232	-74	0
+233	-74	0
+234	-74	0
+235	-74	0
+236	-74	0
+237	-74	0
+238	-74	0
+239	-74	0
+240	-74	0
+241	-74	0
+242	-74	0
+243	-74	0
+244	-74	0
+245	-74	0
+246	-74	0
+247	-74	0
+248	-74	0
+249	-74	0
+250	-74	0
+251	-74	0
+252	-74	0
+253	-74	0
+254	-74	0
+255	-74	0
+256	-74	0
+257	-74	0
+258	-74	0
+259	-74	0
+260	-74	0
+261	-74	0
+262	-74	0
+263	-74	0
+264	-74	0
+265	-74	0
+266	-74	0
+267	-74	0
+268	-74	0
+269	-74	0
+270	-74	0
+271	-74	0
+272	-74	0
+273	-74	0
+274	-74	0
+275	-74	0
+276	-74	0
+277	-74	0
+278	-74	0
+279	-74	0
+280	-74	0
+281	-74	0
+282	-74	0
+283	-74	0
+284	-74	0
+285	-74	0
+286	-74	0
+287	-74	0
+288	-74	0
+289	-74	0
+290	-74	0
+291	-74	0
+292	-74	0
+293	-74	0
+294	-74	0
+295	-74	0
+296	-74	0
+297	-74	0
+298	-74	0
+299	-74	0
+300	-74	0
+301	-74	0
+302	-74	0
+303	-74	0
+304	-74	0
+305	-74	0
+306	-74	0
+307	-74	0
+308	-74	0
+309	-74	0
+310	-74	0
+311	-74	0
+312	-74	0
+313	-74	0
+314	-74	0
+315	-74	0
+316	-74	0
+317	-74	0
+318	-74	0
+319	-74	0
+320	-74	0
+321	-74	0
+322	-74	0
+323	-74	0
+324	-74	0
+325	-74	0
+326	-74	0
+327	-74	0
+328	-74	0
+329	-74	0
+330	-74	0
+331	-74	0
+332	-74	0
+333	-74	0
+334	-74	0
+335	-74	0
+336	-74	0
+337	-74	0
+338	-74	0
+339	-74	0
+340	-74	0
+341	-74	0
+342	-74	0
+343	-74	0
+344	-74	0
+345	-74	0
+346	-74	0
+347	-74	0
+348	-74	0
+349	-74	0
+350	-74	0
+351	-74	0
+352	-74	0
+353	-74	0
+354	-74	0
+355	-74	0
+356	-74	0
+357	-74	0
+358	-74	0
+359	-74	0
+360	-74	0
+0	-73.5	0
+1	-73.5	0
+2	-73.5	0
+3	-73.5	0
+4	-73.5	0
+5	-73.5	0
+6	-73.5	0
+7	-73.5	0
+8	-73.5	0
+9	-73.5	0
+10	-73.5	0
+11	-73.5	0
+12	-73.5	0
+13	-73.5	0
+14	-73.5	0
+15	-73.5	0
+16	-73.5	0
+17	-73.5	0
+18	-73.5	0
+19	-73.5	0
+20	-73.5	0
+21	-73.5	0
+22	-73.5	0
+23	-73.5	0
+24	-73.5	0
+25	-73.5	0
+26	-73.5	0
+27	-73.5	0
+28	-73.5	0
+29	-73.5	0
+30	-73.5	0
+31	-73.5	0
+32	-73.5	0
+33	-73.5	0
+34	-73.5	0
+35	-73.5	0
+36	-73.5	0
+37	-73.5	0
+38	-73.5	0
+39	-73.5	0
+40	-73.5	0
+41	-73.5	0
+42	-73.5	0
+43	-73.5	0
+44	-73.5	0
+45	-73.5	0
+46	-73.5	0
+47	-73.5	0
+48	-73.5	0
+49	-73.5	0
+50	-73.5	0
+51	-73.5	0
+52	-73.5	0
+53	-73.5	0
+54	-73.5	0
+55	-73.5	0
+56	-73.5	0
+57	-73.5	0
+58	-73.5	0
+59	-73.5	0
+60	-73.5	0
+61	-73.5	0
+62	-73.5	0
+63	-73.5	0
+64	-73.5	0
+65	-73.5	0
+66	-73.5	0
+67	-73.5	0
+68	-73.5	0
+69	-73.5	0
+70	-73.5	0
+71	-73.5	0
+72	-73.5	0
+73	-73.5	0
+74	-73.5	0
+75	-73.5	0
+76	-73.5	0
+77	-73.5	0
+78	-73.5	0
+79	-73.5	0
+80	-73.5	0
+81	-73.5	0
+82	-73.5	0
+83	-73.5	0
+84	-73.5	0
+85	-73.5	0
+86	-73.5	0
+87	-73.5	0
+88	-73.5	0
+89	-73.5	0
+90	-73.5	0
+91	-73.5	0
+92	-73.5	0
+93	-73.5	0
+94	-73.5	0
+95	-73.5	0
+96	-73.5	0
+97	-73.5	0
+98	-73.5	0
+99	-73.5	0
+100	-73.5	0
+101	-73.5	0
+102	-73.5	0
+103	-73.5	0
+104	-73.5	0
+105	-73.5	0
+106	-73.5	0
+107	-73.5	0
+108	-73.5	0
+109	-73.5	0
+110	-73.5	0
+111	-73.5	0
+112	-73.5	0
+113	-73.5	0
+114	-73.5	0
+115	-73.5	0
+116	-73.5	0
+117	-73.5	0
+118	-73.5	0
+119	-73.5	0
+120	-73.5	0
+121	-73.5	0
+122	-73.5	0
+123	-73.5	0
+124	-73.5	0
+125	-73.5	0
+126	-73.5	0
+127	-73.5	0
+128	-73.5	0
+129	-73.5	0
+130	-73.5	0
+131	-73.5	0
+132	-73.5	0
+133	-73.5	0
+134	-73.5	0
+135	-73.5	0
+136	-73.5	0
+137	-73.5	0
+138	-73.5	0
+139	-73.5	0
+140	-73.5	0
+141	-73.5	0
+142	-73.5	0
+143	-73.5	0
+144	-73.5	0
+145	-73.5	0
+146	-73.5	0
+147	-73.5	0
+148	-73.5	0
+149	-73.5	0
+150	-73.5	0
+151	-73.5	0
+152	-73.5	0
+153	-73.5	0
+154	-73.5	0
+155	-73.5	0
+156	-73.5	0
+157	-73.5	0
+158	-73.5	0
+159	-73.5	0
+160	-73.5	0
+161	-73.5	0
+162	-73.5	0
+163	-73.5	0
+164	-73.5	0
+165	-73.5	0
+166	-73.5	0
+167	-73.5	0
+168	-73.5	0
+169	-73.5	0
+170	-73.5	0
+171	-73.5	0
+172	-73.5	0
+173	-73.5	0
+174	-73.5	0
+175	-73.5	0
+176	-73.5	0
+177	-73.5	0
+178	-73.5	0
+179	-73.5	0
+180	-73.5	0
+181	-73.5	0
+182	-73.5	0
+183	-73.5	0
+184	-73.5	0
+185	-73.5	0
+186	-73.5	0
+187	-73.5	0
+188	-73.5	0
+189	-73.5	0
+190	-73.5	0
+191	-73.5	0
+192	-73.5	0
+193	-73.5	0
+194	-73.5	0
+195	-73.5	0
+196	-73.5	0
+197	-73.5	0
+198	-73.5	0
+199	-73.5	0
+200	-73.5	0
+201	-73.5	0
+202	-73.5	0
+203	-73.5	0
+204	-73.5	0
+205	-73.5	0
+206	-73.5	0
+207	-73.5	0
+208	-73.5	0
+209	-73.5	0
+210	-73.5	0
+211	-73.5	0
+212	-73.5	0
+213	-73.5	0
+214	-73.5	0
+215	-73.5	0
+216	-73.5	0
+217	-73.5	0
+218	-73.5	0
+219	-73.5	0
+220	-73.5	0
+221	-73.5	0
+222	-73.5	0
+223	-73.5	0
+224	-73.5	0
+225	-73.5	0
+226	-73.5	0
+227	-73.5	0
+228	-73.5	0
+229	-73.5	0
+230	-73.5	0
+231	-73.5	0
+232	-73.5	0
+233	-73.5	0
+234	-73.5	0
+235	-73.5	0
+236	-73.5	0
+237	-73.5	0
+238	-73.5	0
+239	-73.5	0
+240	-73.5	0
+241	-73.5	0
+242	-73.5	0
+243	-73.5	0
+244	-73.5	0
+245	-73.5	0
+246	-73.5	0
+247	-73.5	0
+248	-73.5	0
+249	-73.5	0
+250	-73.5	0
+251	-73.5	0
+252	-73.5	0
+253	-73.5	0
+254	-73.5	0
+255	-73.5	0
+256	-73.5	0
+257	-73.5	0
+258	-73.5	0
+259	-73.5	0
+260	-73.5	0
+261	-73.5	0
+262	-73.5	0
+263	-73.5	0
+264	-73.5	0
+265	-73.5	0
+266	-73.5	0
+267	-73.5	0
+268	-73.5	0
+269	-73.5	0
+270	-73.5	0
+271	-73.5	0
+272	-73.5	0
+273	-73.5	0
+274	-73.5	0
+275	-73.5	0
+276	-73.5	0
+277	-73.5	0
+278	-73.5	0
+279	-73.5	0
+280	-73.5	0
+281	-73.5	0
+282	-73.5	0
+283	-73.5	0
+284	-73.5	0
+285	-73.5	0
+286	-73.5	0
+287	-73.5	0
+288	-73.5	0
+289	-73.5	0
+290	-73.5	0
+291	-73.5	0
+292	-73.5	0
+293	-73.5	0
+294	-73.5	0
+295	-73.5	0
+296	-73.5	0
+297	-73.5	0
+298	-73.5	0
+299	-73.5	0
+300	-73.5	0
+301	-73.5	0
+302	-73.5	0
+303	-73.5	0
+304	-73.5	0
+305	-73.5	0
+306	-73.5	0
+307	-73.5	0
+308	-73.5	0
+309	-73.5	0
+310	-73.5	0
+311	-73.5	0
+312	-73.5	0
+313	-73.5	0
+314	-73.5	0
+315	-73.5	0
+316	-73.5	0
+317	-73.5	0
+318	-73.5	0
+319	-73.5	0
+320	-73.5	0
+321	-73.5	0
+322	-73.5	0
+323	-73.5	0
+324	-73.5	0
+325	-73.5	0
+326	-73.5	0
+327	-73.5	0
+328	-73.5	0
+329	-73.5	0
+330	-73.5	0
+331	-73.5	0
+332	-73.5	0
+333	-73.5	0
+334	-73.5	0
+335	-73.5	0
+336	-73.5	0
+337	-73.5	0
+338	-73.5	0
+339	-73.5	0
+340	-73.5	0
+341	-73.5	0
+342	-73.5	0
+343	-73.5	0
+344	-73.5	0
+345	-73.5	0
+346	-73.5	0
+347	-73.5	0
+348	-73.5	0
+349	-73.5	0
+350	-73.5	0
+351	-73.5	0
+352	-73.5	0
+353	-73.5	0
+354	-73.5	0
+355	-73.5	0
+356	-73.5	0
+357	-73.5	0
+358	-73.5	0
+359	-73.5	0
+360	-73.5	0
+0	-73	0
+1	-73	0
+2	-73	0
+3	-73	0
+4	-73	0
+5	-73	0
+6	-73	0
+7	-73	0
+8	-73	0
+9	-73	0
+10	-73	0
+11	-73	0
+12	-73	0
+13	-73	0
+14	-73	0
+15	-73	0
+16	-73	0
+17	-73	0
+18	-73	0
+19	-73	0
+20	-73	0
+21	-73	0
+22	-73	0
+23	-73	0
+24	-73	0
+25	-73	0
+26	-73	0
+27	-73	0
+28	-73	0
+29	-73	0
+30	-73	0
+31	-73	0
+32	-73	0
+33	-73	0
+34	-73	0
+35	-73	0
+36	-73	0
+37	-73	0
+38	-73	0
+39	-73	0
+40	-73	0
+41	-73	0
+42	-73	0
+43	-73	0
+44	-73	0
+45	-73	0
+46	-73	0
+47	-73	0
+48	-73	0
+49	-73	0
+50	-73	0
+51	-73	0
+52	-73	0
+53	-73	0
+54	-73	0
+55	-73	0
+56	-73	0
+57	-73	0
+58	-73	0
+59	-73	0
+60	-73	0
+61	-73	0
+62	-73	0
+63	-73	0
+64	-73	0
+65	-73	0
+66	-73	0
+67	-73	0
+68	-73	0
+69	-73	0
+70	-73	0
+71	-73	0
+72	-73	0
+73	-73	0
+74	-73	0
+75	-73	0
+76	-73	0
+77	-73	0
+78	-73	0
+79	-73	0
+80	-73	0
+81	-73	0
+82	-73	0
+83	-73	0
+84	-73	0
+85	-73	0
+86	-73	0
+87	-73	0
+88	-73	0
+89	-73	0
+90	-73	0
+91	-73	0
+92	-73	0
+93	-73	0
+94	-73	0
+95	-73	0
+96	-73	0
+97	-73	0
+98	-73	0
+99	-73	0
+100	-73	0
+101	-73	0
+102	-73	0
+103	-73	0
+104	-73	0
+105	-73	0
+106	-73	0
+107	-73	0
+108	-73	0
+109	-73	0
+110	-73	0
+111	-73	0
+112	-73	0
+113	-73	0
+114	-73	0
+115	-73	0
+116	-73	0
+117	-73	0
+118	-73	0
+119	-73	0
+120	-73	0
+121	-73	0
+122	-73	0
+123	-73	0
+124	-73	0
+125	-73	0
+126	-73	0
+127	-73	0
+128	-73	0
+129	-73	0
+130	-73	0
+131	-73	0
+132	-73	0
+133	-73	0
+134	-73	0
+135	-73	0
+136	-73	0
+137	-73	0
+138	-73	0
+139	-73	0
+140	-73	0
+141	-73	0
+142	-73	0
+143	-73	0
+144	-73	0
+145	-73	0
+146	-73	0
+147	-73	0
+148	-73	0
+149	-73	0
+150	-73	0
+151	-73	0
+152	-73	0
+153	-73	0
+154	-73	0
+155	-73	0
+156	-73	0
+157	-73	0
+158	-73	0
+159	-73	0
+160	-73	0
+161	-73	0
+162	-73	0
+163	-73	0
+164	-73	0
+165	-73	0
+166	-73	0
+167	-73	0
+168	-73	0
+169	-73	0
+170	-73	0
+171	-73	0
+172	-73	0
+173	-73	0
+174	-73	0
+175	-73	0
+176	-73	0
+177	-73	0
+178	-73	0
+179	-73	0
+180	-73	0
+181	-73	0
+182	-73	0
+183	-73	0
+184	-73	0
+185	-73	0
+186	-73	0
+187	-73	0
+188	-73	0
+189	-73	0
+190	-73	0
+191	-73	0
+192	-73	0
+193	-73	0
+194	-73	0
+195	-73	0
+196	-73	0
+197	-73	0
+198	-73	0
+199	-73	0
+200	-73	0
+201	-73	0
+202	-73	0
+203	-73	0
+204	-73	0
+205	-73	0
+206	-73	0
+207	-73	0
+208	-73	0
+209	-73	0
+210	-73	0
+211	-73	0
+212	-73	0
+213	-73	0
+214	-73	0
+215	-73	0
+216	-73	0
+217	-73	0
+218	-73	0
+219	-73	0
+220	-73	0
+221	-73	0
+222	-73	0
+223	-73	0
+224	-73	0
+225	-73	0
+226	-73	0
+227	-73	0
+228	-73	0
+229	-73	0
+230	-73	0
+231	-73	0
+232	-73	0
+233	-73	0
+234	-73	0
+235	-73	0
+236	-73	0
+237	-73	0
+238	-73	0
+239	-73	0
+240	-73	0
+241	-73	0
+242	-73	0
+243	-73	0
+244	-73	0
+245	-73	0
+246	-73	0
+247	-73	0
+248	-73	0
+249	-73	0
+250	-73	0
+251	-73	0
+252	-73	0
+253	-73	0
+254	-73	0
+255	-73	0
+256	-73	0
+257	-73	0
+258	-73	0
+259	-73	0
+260	-73	0
+261	-73	0
+262	-73	0
+263	-73	0
+264	-73	0
+265	-73	0
+266	-73	0
+267	-73	0
+268	-73	0
+269	-73	0
+270	-73	0
+271	-73	0
+272	-73	0
+273	-73	0
+274	-73	0
+275	-73	0
+276	-73	0
+277	-73	0
+278	-73	0
+279	-73	0
+280	-73	0
+281	-73	0
+282	-73	0
+283	-73	0
+284	-73	0
+285	-73	0
+286	-73	0
+287	-73	0
+288	-73	0
+289	-73	0
+290	-73	0
+291	-73	0
+292	-73	0
+293	-73	0
+294	-73	0
+295	-73	0
+296	-73	0
+297	-73	0
+298	-73	0
+299	-73	0
+300	-73	0
+301	-73	0
+302	-73	0
+303	-73	0
+304	-73	0
+305	-73	0
+306	-73	0
+307	-73	0
+308	-73	0
+309	-73	0
+310	-73	0
+311	-73	0
+312	-73	0
+313	-73	0
+314	-73	0
+315	-73	0
+316	-73	0
+317	-73	0
+318	-73	0
+319	-73	0
+320	-73	0
+321	-73	0
+322	-73	0
+323	-73	0
+324	-73	0
+325	-73	0
+326	-73	0
+327	-73	0
+328	-73	0
+329	-73	0
+330	-73	0
+331	-73	0
+332	-73	0
+333	-73	0
+334	-73	0
+335	-73	0
+336	-73	0
+337	-73	0
+338	-73	0
+339	-73	0
+340	-73	0
+341	-73	0
+342	-73	0
+343	-73	0
+344	-73	0
+345	-73	0
+346	-73	0
+347	-73	0
+348	-73	0
+349	-73	0
+350	-73	0
+351	-73	0
+352	-73	0
+353	-73	0
+354	-73	0
+355	-73	0
+356	-73	0
+357	-73	0
+358	-73	0
+359	-73	0
+360	-73	0
+0	-72.5	0
+1	-72.5	0
+2	-72.5	0
+3	-72.5	0
+4	-72.5	0
+5	-72.5	0
+6	-72.5	0
+7	-72.5	0
+8	-72.5	0
+9	-72.5	0
+10	-72.5	0
+11	-72.5	0
+12	-72.5	0
+13	-72.5	0
+14	-72.5	0
+15	-72.5	0
+16	-72.5	0
+17	-72.5	0
+18	-72.5	0
+19	-72.5	0
+20	-72.5	0
+21	-72.5	0
+22	-72.5	0
+23	-72.5	0
+24	-72.5	0
+25	-72.5	0
+26	-72.5	0
+27	-72.5	0
+28	-72.5	0
+29	-72.5	0
+30	-72.5	0
+31	-72.5	0
+32	-72.5	0
+33	-72.5	0
+34	-72.5	0
+35	-72.5	0
+36	-72.5	0
+37	-72.5	0
+38	-72.5	0
+39	-72.5	0
+40	-72.5	0
+41	-72.5	0
+42	-72.5	0
+43	-72.5	0
+44	-72.5	0
+45	-72.5	0
+46	-72.5	0
+47	-72.5	0
+48	-72.5	0
+49	-72.5	0
+50	-72.5	0
+51	-72.5	0
+52	-72.5	0
+53	-72.5	0
+54	-72.5	0
+55	-72.5	0
+56	-72.5	0
+57	-72.5	0
+58	-72.5	0
+59	-72.5	0
+60	-72.5	0
+61	-72.5	0
+62	-72.5	0
+63	-72.5	0
+64	-72.5	0
+65	-72.5	0
+66	-72.5	0
+67	-72.5	0
+68	-72.5	0
+69	-72.5	0
+70	-72.5	0
+71	-72.5	0
+72	-72.5	0
+73	-72.5	0
+74	-72.5	0
+75	-72.5	0
+76	-72.5	0
+77	-72.5	0
+78	-72.5	0
+79	-72.5	0
+80	-72.5	0
+81	-72.5	0
+82	-72.5	0
+83	-72.5	0
+84	-72.5	0
+85	-72.5	0
+86	-72.5	0
+87	-72.5	0
+88	-72.5	0
+89	-72.5	0
+90	-72.5	0
+91	-72.5	0
+92	-72.5	0
+93	-72.5	0
+94	-72.5	0
+95	-72.5	0
+96	-72.5	0
+97	-72.5	0
+98	-72.5	0
+99	-72.5	0
+100	-72.5	0
+101	-72.5	0
+102	-72.5	0
+103	-72.5	0
+104	-72.5	0
+105	-72.5	0
+106	-72.5	0
+107	-72.5	0
+108	-72.5	0
+109	-72.5	0
+110	-72.5	0
+111	-72.5	0
+112	-72.5	0
+113	-72.5	0
+114	-72.5	0
+115	-72.5	0
+116	-72.5	0
+117	-72.5	0
+118	-72.5	0
+119	-72.5	0
+120	-72.5	0
+121	-72.5	0
+122	-72.5	0
+123	-72.5	0
+124	-72.5	0
+125	-72.5	0
+126	-72.5	0
+127	-72.5	0
+128	-72.5	0
+129	-72.5	0
+130	-72.5	0
+131	-72.5	0
+132	-72.5	0
+133	-72.5	0
+134	-72.5	0
+135	-72.5	0
+136	-72.5	0
+137	-72.5	0
+138	-72.5	0
+139	-72.5	0
+140	-72.5	0
+141	-72.5	0
+142	-72.5	0
+143	-72.5	0
+144	-72.5	0
+145	-72.5	0
+146	-72.5	0
+147	-72.5	0
+148	-72.5	0
+149	-72.5	0
+150	-72.5	0
+151	-72.5	0
+152	-72.5	0
+153	-72.5	0
+154	-72.5	0
+155	-72.5	0
+156	-72.5	0
+157	-72.5	0
+158	-72.5	0
+159	-72.5	0
+160	-72.5	0
+161	-72.5	0
+162	-72.5	0
+163	-72.5	0
+164	-72.5	0
+165	-72.5	0
+166	-72.5	0
+167	-72.5	0
+168	-72.5	0
+169	-72.5	0
+170	-72.5	0
+171	-72.5	0
+172	-72.5	0
+173	-72.5	0
+174	-72.5	0
+175	-72.5	0
+176	-72.5	0
+177	-72.5	0
+178	-72.5	0
+179	-72.5	0
+180	-72.5	0
+181	-72.5	0
+182	-72.5	0
+183	-72.5	0
+184	-72.5	0
+185	-72.5	0
+186	-72.5	0
+187	-72.5	0
+188	-72.5	0
+189	-72.5	0
+190	-72.5	0
+191	-72.5	0
+192	-72.5	0
+193	-72.5	0
+194	-72.5	0
+195	-72.5	0
+196	-72.5	0
+197	-72.5	0
+198	-72.5	0
+199	-72.5	0
+200	-72.5	0
+201	-72.5	0
+202	-72.5	0
+203	-72.5	0
+204	-72.5	0
+205	-72.5	0
+206	-72.5	0
+207	-72.5	0
+208	-72.5	0
+209	-72.5	0
+210	-72.5	0
+211	-72.5	0
+212	-72.5	0
+213	-72.5	0
+214	-72.5	0
+215	-72.5	0
+216	-72.5	0
+217	-72.5	0
+218	-72.5	0
+219	-72.5	0
+220	-72.5	0
+221	-72.5	0
+222	-72.5	0
+223	-72.5	0
+224	-72.5	0
+225	-72.5	0
+226	-72.5	0
+227	-72.5	0
+228	-72.5	0
+229	-72.5	0
+230	-72.5	0
+231	-72.5	0
+232	-72.5	0
+233	-72.5	0
+234	-72.5	0
+235	-72.5	0
+236	-72.5	0
+237	-72.5	0
+238	-72.5	0
+239	-72.5	0
+240	-72.5	0
+241	-72.5	0
+242	-72.5	0
+243	-72.5	0
+244	-72.5	0
+245	-72.5	0
+246	-72.5	0
+247	-72.5	0
+248	-72.5	0
+249	-72.5	0
+250	-72.5	0
+251	-72.5	0
+252	-72.5	0
+253	-72.5	0
+254	-72.5	0
+255	-72.5	0
+256	-72.5	0
+257	-72.5	0
+258	-72.5	0
+259	-72.5	0
+260	-72.5	0
+261	-72.5	0
+262	-72.5	0
+263	-72.5	0
+264	-72.5	0
+265	-72.5	0
+266	-72.5	0
+267	-72.5	0
+268	-72.5	0
+269	-72.5	0
+270	-72.5	0
+271	-72.5	0
+272	-72.5	0
+273	-72.5	0
+274	-72.5	0
+275	-72.5	0
+276	-72.5	0
+277	-72.5	0
+278	-72.5	0
+279	-72.5	0
+280	-72.5	0
+281	-72.5	0
+282	-72.5	0
+283	-72.5	0
+284	-72.5	0
+285	-72.5	0
+286	-72.5	0
+287	-72.5	0
+288	-72.5	0
+289	-72.5	0
+290	-72.5	0
+291	-72.5	0
+292	-72.5	0
+293	-72.5	0
+294	-72.5	0
+295	-72.5	0
+296	-72.5	0
+297	-72.5	0
+298	-72.5	0
+299	-72.5	0
+300	-72.5	0
+301	-72.5	0
+302	-72.5	0
+303	-72.5	0
+304	-72.5	0
+305	-72.5	0
+306	-72.5	0
+307	-72.5	0
+308	-72.5	0
+309	-72.5	0
+310	-72.5	0
+311	-72.5	0
+312	-72.5	0
+313	-72.5	0
+314	-72.5	0
+315	-72.5	0
+316	-72.5	0
+317	-72.5	0
+318	-72.5	0
+319	-72.5	0
+320	-72.5	0
+321	-72.5	0
+322	-72.5	0
+323	-72.5	0
+324	-72.5	0
+325	-72.5	0
+326	-72.5	0
+327	-72.5	0
+328	-72.5	0
+329	-72.5	0
+330	-72.5	0
+331	-72.5	0
+332	-72.5	0
+333	-72.5	0
+334	-72.5	0
+335	-72.5	0
+336	-72.5	0
+337	-72.5	0
+338	-72.5	0
+339	-72.5	0
+340	-72.5	0
+341	-72.5	0
+342	-72.5	0
+343	-72.5	0
+344	-72.5	0
+345	-72.5	0
+346	-72.5	0
+347	-72.5	0
+348	-72.5	0
+349	-72.5	0
+350	-72.5	0
+351	-72.5	0
+352	-72.5	0
+353	-72.5	0
+354	-72.5	0
+355	-72.5	0
+356	-72.5	0
+357	-72.5	0
+358	-72.5	0
+359	-72.5	0
+360	-72.5	0
+0	-72	0
+1	-72	0
+2	-72	0
+3	-72	0
+4	-72	0
+5	-72	0
+6	-72	0
+7	-72	0
+8	-72	0
+9	-72	0
+10	-72	0
+11	-72	0
+12	-72	0
+13	-72	0
+14	-72	0
+15	-72	0
+16	-72	0
+17	-72	0
+18	-72	0
+19	-72	0
+20	-72	0
+21	-72	0
+22	-72	0
+23	-72	0
+24	-72	0
+25	-72	0
+26	-72	0
+27	-72	0
+28	-72	0
+29	-72	0
+30	-72	0
+31	-72	0
+32	-72	0
+33	-72	0
+34	-72	0
+35	-72	0
+36	-72	0
+37	-72	0
+38	-72	0
+39	-72	0
+40	-72	0
+41	-72	0
+42	-72	0
+43	-72	0
+44	-72	0
+45	-72	0
+46	-72	0
+47	-72	0
+48	-72	0
+49	-72	0
+50	-72	0
+51	-72	0
+52	-72	0
+53	-72	0
+54	-72	0
+55	-72	0
+56	-72	0
+57	-72	0
+58	-72	0
+59	-72	0
+60	-72	0
+61	-72	0
+62	-72	0
+63	-72	0
+64	-72	0
+65	-72	0
+66	-72	0
+67	-72	0
+68	-72	0
+69	-72	0
+70	-72	0
+71	-72	0
+72	-72	0
+73	-72	0
+74	-72	0
+75	-72	0
+76	-72	0
+77	-72	0
+78	-72	0
+79	-72	0
+80	-72	0
+81	-72	0
+82	-72	0
+83	-72	0
+84	-72	0
+85	-72	0
+86	-72	0
+87	-72	0
+88	-72	0
+89	-72	0
+90	-72	0
+91	-72	0
+92	-72	0
+93	-72	0
+94	-72	0
+95	-72	0
+96	-72	0
+97	-72	0
+98	-72	0
+99	-72	0
+100	-72	0
+101	-72	0
+102	-72	0
+103	-72	0
+104	-72	0
+105	-72	0
+106	-72	0
+107	-72	0
+108	-72	0
+109	-72	0
+110	-72	0
+111	-72	0
+112	-72	0
+113	-72	0
+114	-72	0
+115	-72	0
+116	-72	0
+117	-72	0
+118	-72	0
+119	-72	0
+120	-72	0
+121	-72	0
+122	-72	0
+123	-72	0
+124	-72	0
+125	-72	0
+126	-72	0
+127	-72	0
+128	-72	0
+129	-72	0
+130	-72	0
+131	-72	0
+132	-72	0
+133	-72	0
+134	-72	0
+135	-72	0
+136	-72	0
+137	-72	0
+138	-72	0
+139	-72	0
+140	-72	0
+141	-72	0
+142	-72	0
+143	-72	0
+144	-72	0
+145	-72	0
+146	-72	0
+147	-72	0
+148	-72	0
+149	-72	0
+150	-72	0
+151	-72	0
+152	-72	0
+153	-72	0
+154	-72	0
+155	-72	0
+156	-72	0
+157	-72	0
+158	-72	0
+159	-72	0
+160	-72	0
+161	-72	0
+162	-72	0
+163	-72	0
+164	-72	0
+165	-72	0
+166	-72	0
+167	-72	0
+168	-72	0
+169	-72	0
+170	-72	0
+171	-72	0
+172	-72	0
+173	-72	0
+174	-72	0
+175	-72	0
+176	-72	0
+177	-72	0
+178	-72	0
+179	-72	0
+180	-72	0
+181	-72	0
+182	-72	0
+183	-72	0
+184	-72	0
+185	-72	0
+186	-72	0
+187	-72	0
+188	-72	0
+189	-72	0
+190	-72	0
+191	-72	0
+192	-72	0
+193	-72	0
+194	-72	0
+195	-72	0
+196	-72	0
+197	-72	0
+198	-72	0
+199	-72	0
+200	-72	0
+201	-72	0
+202	-72	0
+203	-72	0
+204	-72	0
+205	-72	0
+206	-72	0
+207	-72	0
+208	-72	0
+209	-72	0
+210	-72	0
+211	-72	0
+212	-72	0
+213	-72	0
+214	-72	0
+215	-72	0
+216	-72	0
+217	-72	0
+218	-72	0
+219	-72	0
+220	-72	0
+221	-72	0
+222	-72	0
+223	-72	0
+224	-72	0
+225	-72	0
+226	-72	0
+227	-72	0
+228	-72	0
+229	-72	0
+230	-72	0
+231	-72	0
+232	-72	0
+233	-72	0
+234	-72	0
+235	-72	0
+236	-72	0
+237	-72	0
+238	-72	0
+239	-72	0
+240	-72	0
+241	-72	0
+242	-72	0
+243	-72	0
+244	-72	0
+245	-72	0
+246	-72	0
+247	-72	0
+248	-72	0
+249	-72	0
+250	-72	0
+251	-72	0
+252	-72	0
+253	-72	0
+254	-72	0
+255	-72	0
+256	-72	0
+257	-72	0
+258	-72	0
+259	-72	0
+260	-72	0
+261	-72	0
+262	-72	0
+263	-72	0
+264	-72	0
+265	-72	0
+266	-72	0
+267	-72	0
+268	-72	0
+269	-72	0
+270	-72	0
+271	-72	0
+272	-72	0
+273	-72	0
+274	-72	0
+275	-72	0
+276	-72	0
+277	-72	0
+278	-72	0
+279	-72	0
+280	-72	0
+281	-72	0
+282	-72	0
+283	-72	0
+284	-72	0
+285	-72	0
+286	-72	0
+287	-72	0
+288	-72	0
+289	-72	0
+290	-72	0
+291	-72	0
+292	-72	0
+293	-72	0
+294	-72	0
+295	-72	0
+296	-72	0
+297	-72	0
+298	-72	0
+299	-72	0
+300	-72	0
+301	-72	0
+302	-72	0
+303	-72	0
+304	-72	0
+305	-72	0
+306	-72	0
+307	-72	0
+308	-72	0
+309	-72	0
+310	-72	0
+311	-72	0
+312	-72	0
+313	-72	0
+314	-72	0
+315	-72	0
+316	-72	0
+317	-72	0
+318	-72	0
+319	-72	0
+320	-72	0
+321	-72	0
+322	-72	0
+323	-72	0
+324	-72	0
+325	-72	0
+326	-72	0
+327	-72	0
+328	-72	0
+329	-72	0
+330	-72	0
+331	-72	0
+332	-72	0
+333	-72	0
+334	-72	0
+335	-72	0
+336	-72	0
+337	-72	0
+338	-72	0
+339	-72	0
+340	-72	0
+341	-72	0
+342	-72	0
+343	-72	0
+344	-72	0
+345	-72	0
+346	-72	0
+347	-72	0
+348	-72	0
+349	-72	0
+350	-72	0
+351	-72	0
+352	-72	0
+353	-72	0
+354	-72	0
+355	-72	0
+356	-72	0
+357	-72	0
+358	-72	0
+359	-72	0
+360	-72	0
+0	-71.5	0
+1	-71.5	0
+2	-71.5	0
+3	-71.5	0
+4	-71.5	0
+5	-71.5	0
+6	-71.5	0
+7	-71.5	0
+8	-71.5	0
+9	-71.5	0
+10	-71.5	0
+11	-71.5	0
+12	-71.5	0
+13	-71.5	0
+14	-71.5	0
+15	-71.5	0
+16	-71.5	0
+17	-71.5	0
+18	-71.5	0
+19	-71.5	0
+20	-71.5	0
+21	-71.5	0
+22	-71.5	0
+23	-71.5	0
+24	-71.5	0
+25	-71.5	0
+26	-71.5	0
+27	-71.5	0
+28	-71.5	0
+29	-71.5	0
+30	-71.5	0
+31	-71.5	0
+32	-71.5	0
+33	-71.5	0
+34	-71.5	0
+35	-71.5	0
+36	-71.5	0
+37	-71.5	0
+38	-71.5	0
+39	-71.5	0
+40	-71.5	0
+41	-71.5	0
+42	-71.5	0
+43	-71.5	0
+44	-71.5	0
+45	-71.5	0
+46	-71.5	0
+47	-71.5	0
+48	-71.5	0
+49	-71.5	0
+50	-71.5	0
+51	-71.5	0
+52	-71.5	0
+53	-71.5	0
+54	-71.5	0
+55	-71.5	0
+56	-71.5	0
+57	-71.5	0
+58	-71.5	0
+59	-71.5	0
+60	-71.5	0
+61	-71.5	0
+62	-71.5	0
+63	-71.5	0
+64	-71.5	0
+65	-71.5	0
+66	-71.5	0
+67	-71.5	0
+68	-71.5	0
+69	-71.5	0
+70	-71.5	0
+71	-71.5	0
+72	-71.5	0
+73	-71.5	0
+74	-71.5	0
+75	-71.5	0
+76	-71.5	0
+77	-71.5	0
+78	-71.5	0
+79	-71.5	0
+80	-71.5	0
+81	-71.5	0
+82	-71.5	0
+83	-71.5	0
+84	-71.5	0
+85	-71.5	0
+86	-71.5	0
+87	-71.5	0
+88	-71.5	0
+89	-71.5	0
+90	-71.5	0
+91	-71.5	0
+92	-71.5	0
+93	-71.5	0
+94	-71.5	0
+95	-71.5	0
+96	-71.5	0
+97	-71.5	0
+98	-71.5	0
+99	-71.5	0
+100	-71.5	0
+101	-71.5	0
+102	-71.5	0
+103	-71.5	0
+104	-71.5	0
+105	-71.5	0
+106	-71.5	0
+107	-71.5	0
+108	-71.5	0
+109	-71.5	0
+110	-71.5	0
+111	-71.5	0
+112	-71.5	0
+113	-71.5	0
+114	-71.5	0
+115	-71.5	0
+116	-71.5	0
+117	-71.5	0
+118	-71.5	0
+119	-71.5	0
+120	-71.5	0
+121	-71.5	0
+122	-71.5	0
+123	-71.5	0
+124	-71.5	0
+125	-71.5	0
+126	-71.5	0
+127	-71.5	0
+128	-71.5	0
+129	-71.5	0
+130	-71.5	0
+131	-71.5	0
+132	-71.5	0
+133	-71.5	0
+134	-71.5	0
+135	-71.5	0
+136	-71.5	0
+137	-71.5	0
+138	-71.5	0
+139	-71.5	0
+140	-71.5	0
+141	-71.5	0
+142	-71.5	0
+143	-71.5	0
+144	-71.5	0
+145	-71.5	0
+146	-71.5	0
+147	-71.5	0
+148	-71.5	0
+149	-71.5	0
+150	-71.5	0
+151	-71.5	0
+152	-71.5	0
+153	-71.5	0
+154	-71.5	0
+155	-71.5	0
+156	-71.5	0
+157	-71.5	0
+158	-71.5	0
+159	-71.5	0
+160	-71.5	0
+161	-71.5	0
+162	-71.5	0
+163	-71.5	0
+164	-71.5	0
+165	-71.5	0
+166	-71.5	0
+167	-71.5	0
+168	-71.5	0
+169	-71.5	0
+170	-71.5	0
+171	-71.5	0
+172	-71.5	0
+173	-71.5	0
+174	-71.5	0
+175	-71.5	0
+176	-71.5	0
+177	-71.5	0
+178	-71.5	0
+179	-71.5	0
+180	-71.5	0
+181	-71.5	0
+182	-71.5	0
+183	-71.5	0
+184	-71.5	0
+185	-71.5	0
+186	-71.5	0
+187	-71.5	0
+188	-71.5	0
+189	-71.5	0
+190	-71.5	0
+191	-71.5	0
+192	-71.5	0
+193	-71.5	0
+194	-71.5	0
+195	-71.5	0
+196	-71.5	0
+197	-71.5	0
+198	-71.5	0
+199	-71.5	0
+200	-71.5	0
+201	-71.5	0
+202	-71.5	0
+203	-71.5	0
+204	-71.5	0
+205	-71.5	0
+206	-71.5	0
+207	-71.5	0
+208	-71.5	0
+209	-71.5	0
+210	-71.5	0
+211	-71.5	0
+212	-71.5	0
+213	-71.5	0
+214	-71.5	0
+215	-71.5	0
+216	-71.5	0
+217	-71.5	0
+218	-71.5	0
+219	-71.5	0
+220	-71.5	0
+221	-71.5	0
+222	-71.5	0
+223	-71.5	0
+224	-71.5	0
+225	-71.5	0
+226	-71.5	0
+227	-71.5	0
+228	-71.5	0
+229	-71.5	0
+230	-71.5	0
+231	-71.5	0
+232	-71.5	0
+233	-71.5	0
+234	-71.5	0
+235	-71.5	0
+236	-71.5	0
+237	-71.5	0
+238	-71.5	0
+239	-71.5	0
+240	-71.5	0
+241	-71.5	0
+242	-71.5	0
+243	-71.5	0
+244	-71.5	0
+245	-71.5	0
+246	-71.5	0
+247	-71.5	0
+248	-71.5	0
+249	-71.5	0
+250	-71.5	0
+251	-71.5	0
+252	-71.5	0
+253	-71.5	0
+254	-71.5	0
+255	-71.5	0
+256	-71.5	0
+257	-71.5	0
+258	-71.5	0
+259	-71.5	0
+260	-71.5	0
+261	-71.5	0
+262	-71.5	0
+263	-71.5	0
+264	-71.5	0
+265	-71.5	0
+266	-71.5	0
+267	-71.5	0
+268	-71.5	0
+269	-71.5	0
+270	-71.5	0
+271	-71.5	0
+272	-71.5	0
+273	-71.5	0
+274	-71.5	0
+275	-71.5	0
+276	-71.5	0
+277	-71.5	0
+278	-71.5	0
+279	-71.5	0
+280	-71.5	0
+281	-71.5	0
+282	-71.5	0
+283	-71.5	0
+284	-71.5	0
+285	-71.5	0
+286	-71.5	0
+287	-71.5	0
+288	-71.5	0
+289	-71.5	0
+290	-71.5	0
+291	-71.5	0
+292	-71.5	0
+293	-71.5	0
+294	-71.5	0
+295	-71.5	0
+296	-71.5	0
+297	-71.5	0
+298	-71.5	0
+299	-71.5	0
+300	-71.5	0
+301	-71.5	0
+302	-71.5	0
+303	-71.5	0
+304	-71.5	0
+305	-71.5	0
+306	-71.5	0
+307	-71.5	0
+308	-71.5	0
+309	-71.5	0
+310	-71.5	0
+311	-71.5	0
+312	-71.5	0
+313	-71.5	0
+314	-71.5	0
+315	-71.5	0
+316	-71.5	0
+317	-71.5	0
+318	-71.5	0
+319	-71.5	0
+320	-71.5	0
+321	-71.5	0
+322	-71.5	0
+323	-71.5	0
+324	-71.5	0
+325	-71.5	0
+326	-71.5	0
+327	-71.5	0
+328	-71.5	0
+329	-71.5	0
+330	-71.5	0
+331	-71.5	0
+332	-71.5	0
+333	-71.5	0
+334	-71.5	0
+335	-71.5	0
+336	-71.5	0
+337	-71.5	0
+338	-71.5	0
+339	-71.5	0
+340	-71.5	0
+341	-71.5	0
+342	-71.5	0
+343	-71.5	0
+344	-71.5	0
+345	-71.5	0
+346	-71.5	0
+347	-71.5	0
+348	-71.5	0
+349	-71.5	0
+350	-71.5	0
+351	-71.5	0
+352	-71.5	0
+353	-71.5	0
+354	-71.5	0
+355	-71.5	0
+356	-71.5	0
+357	-71.5	0
+358	-71.5	0
+359	-71.5	0
+360	-71.5	0
+0	-71	0
+1	-71	0
+2	-71	0
+3	-71	0
+4	-71	0
+5	-71	0
+6	-71	0
+7	-71	0
+8	-71	0
+9	-71	0
+10	-71	0
+11	-71	0
+12	-71	0
+13	-71	0
+14	-71	0
+15	-71	0
+16	-71	0
+17	-71	0
+18	-71	0
+19	-71	0
+20	-71	0
+21	-71	0
+22	-71	0
+23	-71	0
+24	-71	0
+25	-71	0
+26	-71	0
+27	-71	0
+28	-71	0
+29	-71	0
+30	-71	0
+31	-71	0
+32	-71	0
+33	-71	0
+34	-71	0
+35	-71	0
+36	-71	0
+37	-71	0
+38	-71	0
+39	-71	0
+40	-71	0
+41	-71	0
+42	-71	0
+43	-71	0
+44	-71	0
+45	-71	0
+46	-71	0
+47	-71	0
+48	-71	0
+49	-71	0
+50	-71	0
+51	-71	0
+52	-71	0
+53	-71	0
+54	-71	0
+55	-71	0
+56	-71	0
+57	-71	0
+58	-71	0
+59	-71	0
+60	-71	0
+61	-71	0
+62	-71	0
+63	-71	0
+64	-71	0
+65	-71	0
+66	-71	0
+67	-71	0
+68	-71	0
+69	-71	0
+70	-71	0
+71	-71	0
+72	-71	0
+73	-71	0
+74	-71	0
+75	-71	0
+76	-71	0
+77	-71	0
+78	-71	0
+79	-71	0
+80	-71	0
+81	-71	0
+82	-71	0
+83	-71	0
+84	-71	0
+85	-71	0
+86	-71	0
+87	-71	0
+88	-71	0
+89	-71	0
+90	-71	0
+91	-71	0
+92	-71	0
+93	-71	0
+94	-71	0
+95	-71	0
+96	-71	0
+97	-71	0
+98	-71	0
+99	-71	0
+100	-71	0
+101	-71	0
+102	-71	0
+103	-71	0
+104	-71	0
+105	-71	0
+106	-71	0
+107	-71	0
+108	-71	0
+109	-71	0
+110	-71	0
+111	-71	0
+112	-71	0
+113	-71	0
+114	-71	0
+115	-71	0
+116	-71	0
+117	-71	0
+118	-71	0
+119	-71	0
+120	-71	0
+121	-71	0
+122	-71	0
+123	-71	0
+124	-71	0
+125	-71	0
+126	-71	0
+127	-71	0
+128	-71	0
+129	-71	0
+130	-71	0
+131	-71	0
+132	-71	0
+133	-71	0
+134	-71	0
+135	-71	0
+136	-71	0
+137	-71	0
+138	-71	0
+139	-71	0
+140	-71	0
+141	-71	0
+142	-71	0
+143	-71	0
+144	-71	0
+145	-71	0
+146	-71	0
+147	-71	0
+148	-71	0
+149	-71	0
+150	-71	0
+151	-71	0
+152	-71	0
+153	-71	0
+154	-71	0
+155	-71	0
+156	-71	0
+157	-71	0
+158	-71	0
+159	-71	0
+160	-71	0
+161	-71	0
+162	-71	0
+163	-71	0
+164	-71	0
+165	-71	0
+166	-71	0
+167	-71	0
+168	-71	0
+169	-71	0
+170	-71	0
+171	-71	0
+172	-71	0
+173	-71	0
+174	-71	0
+175	-71	0
+176	-71	0
+177	-71	0
+178	-71	0
+179	-71	0
+180	-71	0
+181	-71	0
+182	-71	0
+183	-71	0
+184	-71	0
+185	-71	0
+186	-71	0
+187	-71	0
+188	-71	0
+189	-71	0
+190	-71	0
+191	-71	0
+192	-71	0
+193	-71	0
+194	-71	0
+195	-71	0
+196	-71	0
+197	-71	0
+198	-71	0
+199	-71	0
+200	-71	0
+201	-71	0
+202	-71	0
+203	-71	0
+204	-71	0
+205	-71	0
+206	-71	0
+207	-71	0
+208	-71	0
+209	-71	0
+210	-71	0
+211	-71	0
+212	-71	0
+213	-71	0
+214	-71	0
+215	-71	0
+216	-71	0
+217	-71	0
+218	-71	0
+219	-71	0
+220	-71	0
+221	-71	0
+222	-71	0
+223	-71	0
+224	-71	0
+225	-71	0
+226	-71	0
+227	-71	0
+228	-71	0
+229	-71	0
+230	-71	0
+231	-71	0
+232	-71	0
+233	-71	0
+234	-71	0
+235	-71	0
+236	-71	0
+237	-71	0
+238	-71	0
+239	-71	0
+240	-71	0
+241	-71	0
+242	-71	0
+243	-71	0
+244	-71	0
+245	-71	0
+246	-71	0
+247	-71	0
+248	-71	0
+249	-71	0
+250	-71	0
+251	-71	0
+252	-71	0
+253	-71	0
+254	-71	0
+255	-71	0
+256	-71	0
+257	-71	0
+258	-71	0
+259	-71	0
+260	-71	0
+261	-71	0
+262	-71	0
+263	-71	0
+264	-71	0
+265	-71	0
+266	-71	0
+267	-71	0
+268	-71	0
+269	-71	0
+270	-71	0
+271	-71	0
+272	-71	0
+273	-71	0
+274	-71	0
+275	-71	0
+276	-71	0
+277	-71	0
+278	-71	0
+279	-71	0
+280	-71	0
+281	-71	0
+282	-71	0
+283	-71	0
+284	-71	0
+285	-71	0
+286	-71	0
+287	-71	0
+288	-71	0
+289	-71	0
+290	-71	0
+291	-71	0
+292	-71	0
+293	-71	0
+294	-71	0
+295	-71	0
+296	-71	0
+297	-71	0
+298	-71	0
+299	-71	0
+300	-71	0
+301	-71	0
+302	-71	0
+303	-71	0
+304	-71	0
+305	-71	0
+306	-71	0
+307	-71	0
+308	-71	0
+309	-71	0
+310	-71	0
+311	-71	0
+312	-71	0
+313	-71	0
+314	-71	0
+315	-71	0
+316	-71	0
+317	-71	0
+318	-71	0
+319	-71	0
+320	-71	0
+321	-71	0
+322	-71	0
+323	-71	0
+324	-71	0
+325	-71	0
+326	-71	0
+327	-71	0
+328	-71	0
+329	-71	0
+330	-71	0
+331	-71	0
+332	-71	0
+333	-71	0
+334	-71	0
+335	-71	0
+336	-71	0
+337	-71	0
+338	-71	0
+339	-71	0
+340	-71	0
+341	-71	0
+342	-71	0
+343	-71	0
+344	-71	0
+345	-71	0
+346	-71	0
+347	-71	0
+348	-71	0
+349	-71	0
+350	-71	0
+351	-71	0
+352	-71	0
+353	-71	0
+354	-71	0
+355	-71	0
+356	-71	0
+357	-71	0
+358	-71	0
+359	-71	0
+360	-71	0
+0	-70.5	0
+1	-70.5	0
+2	-70.5	0
+3	-70.5	0
+4	-70.5	0
+5	-70.5	0
+6	-70.5	0
+7	-70.5	0
+8	-70.5	0
+9	-70.5	0
+10	-70.5	0
+11	-70.5	0
+12	-70.5	0
+13	-70.5	0
+14	-70.5	0
+15	-70.5	0
+16	-70.5	0
+17	-70.5	0
+18	-70.5	0
+19	-70.5	0
+20	-70.5	0
+21	-70.5	0
+22	-70.5	0
+23	-70.5	0
+24	-70.5	0
+25	-70.5	0
+26	-70.5	0
+27	-70.5	0
+28	-70.5	0
+29	-70.5	0
+30	-70.5	0
+31	-70.5	0
+32	-70.5	0
+33	-70.5	0
+34	-70.5	0
+35	-70.5	0
+36	-70.5	0
+37	-70.5	0
+38	-70.5	0
+39	-70.5	0
+40	-70.5	0
+41	-70.5	0
+42	-70.5	0
+43	-70.5	0
+44	-70.5	0
+45	-70.5	0
+46	-70.5	0
+47	-70.5	0
+48	-70.5	0
+49	-70.5	0
+50	-70.5	0
+51	-70.5	0
+52	-70.5	0
+53	-70.5	0
+54	-70.5	0
+55	-70.5	0
+56	-70.5	0
+57	-70.5	0
+58	-70.5	0
+59	-70.5	0
+60	-70.5	0
+61	-70.5	0
+62	-70.5	0
+63	-70.5	0
+64	-70.5	0
+65	-70.5	0
+66	-70.5	0
+67	-70.5	0
+68	-70.5	0
+69	-70.5	0
+70	-70.5	0
+71	-70.5	0
+72	-70.5	0
+73	-70.5	0
+74	-70.5	0
+75	-70.5	0
+76	-70.5	0
+77	-70.5	0
+78	-70.5	0
+79	-70.5	0
+80	-70.5	0
+81	-70.5	0
+82	-70.5	0
+83	-70.5	0
+84	-70.5	0
+85	-70.5	0
+86	-70.5	0
+87	-70.5	0
+88	-70.5	0
+89	-70.5	0
+90	-70.5	0
+91	-70.5	0
+92	-70.5	0
+93	-70.5	0
+94	-70.5	0
+95	-70.5	0
+96	-70.5	0
+97	-70.5	0
+98	-70.5	0
+99	-70.5	0
+100	-70.5	0
+101	-70.5	0
+102	-70.5	0
+103	-70.5	0
+104	-70.5	0
+105	-70.5	0
+106	-70.5	0
+107	-70.5	0
+108	-70.5	0
+109	-70.5	0
+110	-70.5	0
+111	-70.5	0
+112	-70.5	0
+113	-70.5	0
+114	-70.5	0
+115	-70.5	0
+116	-70.5	0
+117	-70.5	0
+118	-70.5	0
+119	-70.5	0
+120	-70.5	0
+121	-70.5	0
+122	-70.5	0
+123	-70.5	0
+124	-70.5	0
+125	-70.5	0
+126	-70.5	0
+127	-70.5	0
+128	-70.5	0
+129	-70.5	0
+130	-70.5	0
+131	-70.5	0
+132	-70.5	0
+133	-70.5	0
+134	-70.5	0
+135	-70.5	0
+136	-70.5	0
+137	-70.5	0
+138	-70.5	0
+139	-70.5	0
+140	-70.5	0
+141	-70.5	0
+142	-70.5	0
+143	-70.5	0
+144	-70.5	0
+145	-70.5	0
+146	-70.5	0
+147	-70.5	0
+148	-70.5	0
+149	-70.5	0
+150	-70.5	0
+151	-70.5	0
+152	-70.5	0
+153	-70.5	0
+154	-70.5	0
+155	-70.5	0
+156	-70.5	0
+157	-70.5	0
+158	-70.5	0
+159	-70.5	0
+160	-70.5	0
+161	-70.5	0
+162	-70.5	0
+163	-70.5	0
+164	-70.5	0
+165	-70.5	0
+166	-70.5	0
+167	-70.5	0
+168	-70.5	0
+169	-70.5	0
+170	-70.5	0
+171	-70.5	0
+172	-70.5	0
+173	-70.5	0
+174	-70.5	0
+175	-70.5	0
+176	-70.5	0
+177	-70.5	0
+178	-70.5	0
+179	-70.5	0
+180	-70.5	0
+181	-70.5	0
+182	-70.5	0
+183	-70.5	0
+184	-70.5	0
+185	-70.5	0
+186	-70.5	0
+187	-70.5	0
+188	-70.5	0
+189	-70.5	0
+190	-70.5	0
+191	-70.5	0
+192	-70.5	0
+193	-70.5	0
+194	-70.5	0
+195	-70.5	0
+196	-70.5	0
+197	-70.5	0
+198	-70.5	0
+199	-70.5	0
+200	-70.5	0
+201	-70.5	0
+202	-70.5	0
+203	-70.5	0
+204	-70.5	0
+205	-70.5	0
+206	-70.5	0
+207	-70.5	0
+208	-70.5	0
+209	-70.5	0
+210	-70.5	0
+211	-70.5	0
+212	-70.5	0
+213	-70.5	0
+214	-70.5	0
+215	-70.5	0
+216	-70.5	0
+217	-70.5	0
+218	-70.5	0
+219	-70.5	0
+220	-70.5	0
+221	-70.5	0
+222	-70.5	0
+223	-70.5	0
+224	-70.5	0
+225	-70.5	0
+226	-70.5	0
+227	-70.5	0
+228	-70.5	0
+229	-70.5	0
+230	-70.5	0
+231	-70.5	0
+232	-70.5	0
+233	-70.5	0
+234	-70.5	0
+235	-70.5	0
+236	-70.5	0
+237	-70.5	0
+238	-70.5	0
+239	-70.5	0
+240	-70.5	0
+241	-70.5	0
+242	-70.5	0
+243	-70.5	0
+244	-70.5	0
+245	-70.5	0
+246	-70.5	0
+247	-70.5	0
+248	-70.5	0
+249	-70.5	0
+250	-70.5	0
+251	-70.5	0
+252	-70.5	0
+253	-70.5	0
+254	-70.5	0
+255	-70.5	0
+256	-70.5	0
+257	-70.5	0
+258	-70.5	0
+259	-70.5	0
+260	-70.5	0
+261	-70.5	0
+262	-70.5	0
+263	-70.5	0
+264	-70.5	0
+265	-70.5	0
+266	-70.5	0
+267	-70.5	0
+268	-70.5	0
+269	-70.5	0
+270	-70.5	0
+271	-70.5	0
+272	-70.5	0
+273	-70.5	0
+274	-70.5	0
+275	-70.5	0
+276	-70.5	0
+277	-70.5	0
+278	-70.5	0
+279	-70.5	0
+280	-70.5	0
+281	-70.5	0
+282	-70.5	0
+283	-70.5	0
+284	-70.5	0
+285	-70.5	0
+286	-70.5	0
+287	-70.5	0
+288	-70.5	0
+289	-70.5	0
+290	-70.5	0
+291	-70.5	0
+292	-70.5	0
+293	-70.5	0
+294	-70.5	0
+295	-70.5	0
+296	-70.5	0
+297	-70.5	0
+298	-70.5	0
+299	-70.5	0
+300	-70.5	0
+301	-70.5	0
+302	-70.5	0
+303	-70.5	0
+304	-70.5	0
+305	-70.5	0
+306	-70.5	0
+307	-70.5	0
+308	-70.5	0
+309	-70.5	0
+310	-70.5	0
+311	-70.5	0
+312	-70.5	0
+313	-70.5	0
+314	-70.5	0
+315	-70.5	0
+316	-70.5	0
+317	-70.5	0
+318	-70.5	0
+319	-70.5	0
+320	-70.5	0
+321	-70.5	0
+322	-70.5	0
+323	-70.5	0
+324	-70.5	0
+325	-70.5	0
+326	-70.5	0
+327	-70.5	0
+328	-70.5	0
+329	-70.5	0
+330	-70.5	0
+331	-70.5	0
+332	-70.5	0
+333	-70.5	0
+334	-70.5	0
+335	-70.5	0
+336	-70.5	0
+337	-70.5	0
+338	-70.5	0
+339	-70.5	0
+340	-70.5	0
+341	-70.5	0
+342	-70.5	0
+343	-70.5	0
+344	-70.5	0
+345	-70.5	0
+346	-70.5	0
+347	-70.5	0
+348	-70.5	0
+349	-70.5	0
+350	-70.5	0
+351	-70.5	0
+352	-70.5	0
+353	-70.5	0
+354	-70.5	0
+355	-70.5	0
+356	-70.5	0
+357	-70.5	0
+358	-70.5	0
+359	-70.5	0
+360	-70.5	0
+0	-70	0
+1	-70	0
+2	-70	0
+3	-70	0
+4	-70	0
+5	-70	0
+6	-70	0
+7	-70	0
+8	-70	0
+9	-70	0
+10	-70	0
+11	-70	0
+12	-70	0
+13	-70	0
+14	-70	0
+15	-70	0
+16	-70	0
+17	-70	0
+18	-70	0
+19	-70	0
+20	-70	0
+21	-70	0
+22	-70	0
+23	-70	0
+24	-70	0
+25	-70	0
+26	-70	0
+27	-70	0
+28	-70	0
+29	-70	0
+30	-70	0
+31	-70	0
+32	-70	0
+33	-70	0
+34	-70	0
+35	-70	0
+36	-70	0
+37	-70	0
+38	-70	0
+39	-70	0
+40	-70	0
+41	-70	0
+42	-70	0
+43	-70	0
+44	-70	0
+45	-70	0
+46	-70	0
+47	-70	0
+48	-70	0
+49	-70	0
+50	-70	0
+51	-70	0
+52	-70	0
+53	-70	0
+54	-70	0
+55	-70	0
+56	-70	0
+57	-70	0
+58	-70	0
+59	-70	0
+60	-70	0
+61	-70	0
+62	-70	0
+63	-70	0
+64	-70	0
+65	-70	0
+66	-70	0
+67	-70	0
+68	-70	0
+69	-70	0
+70	-70	0
+71	-70	0
+72	-70	0
+73	-70	0
+74	-70	0
+75	-70	0
+76	-70	0
+77	-70	0
+78	-70	0
+79	-70	0
+80	-70	0
+81	-70	0
+82	-70	0
+83	-70	0
+84	-70	0
+85	-70	0
+86	-70	0
+87	-70	0
+88	-70	0
+89	-70	0
+90	-70	0
+91	-70	0
+92	-70	0
+93	-70	0
+94	-70	0
+95	-70	0
+96	-70	0
+97	-70	0
+98	-70	0
+99	-70	0
+100	-70	0
+101	-70	0
+102	-70	0
+103	-70	0
+104	-70	0
+105	-70	0
+106	-70	0
+107	-70	0
+108	-70	0
+109	-70	0
+110	-70	0
+111	-70	0
+112	-70	0
+113	-70	0
+114	-70	0
+115	-70	0
+116	-70	0
+117	-70	0
+118	-70	0
+119	-70	0
+120	-70	0
+121	-70	0
+122	-70	0
+123	-70	0
+124	-70	0
+125	-70	0
+126	-70	0
+127	-70	0
+128	-70	0
+129	-70	0
+130	-70	0
+131	-70	0
+132	-70	0
+133	-70	0
+134	-70	0
+135	-70	0
+136	-70	0
+137	-70	0
+138	-70	0
+139	-70	0
+140	-70	0
+141	-70	0
+142	-70	0
+143	-70	0
+144	-70	0
+145	-70	0
+146	-70	0
+147	-70	0
+148	-70	0
+149	-70	0
+150	-70	0
+151	-70	0
+152	-70	0
+153	-70	0
+154	-70	0
+155	-70	0
+156	-70	0
+157	-70	0
+158	-70	0
+159	-70	0
+160	-70	0
+161	-70	0
+162	-70	0
+163	-70	0
+164	-70	0
+165	-70	0
+166	-70	0
+167	-70	0
+168	-70	0
+169	-70	0
+170	-70	0
+171	-70	0
+172	-70	0
+173	-70	0
+174	-70	0
+175	-70	0
+176	-70	0
+177	-70	0
+178	-70	0
+179	-70	0
+180	-70	0
+181	-70	0
+182	-70	0
+183	-70	0
+184	-70	0
+185	-70	0
+186	-70	0
+187	-70	0
+188	-70	0
+189	-70	0
+190	-70	0
+191	-70	0
+192	-70	0
+193	-70	0
+194	-70	0
+195	-70	0
+196	-70	0
+197	-70	0
+198	-70	0
+199	-70	0
+200	-70	0
+201	-70	0
+202	-70	0
+203	-70	0
+204	-70	0
+205	-70	0
+206	-70	0
+207	-70	0
+208	-70	0
+209	-70	0
+210	-70	0
+211	-70	0
+212	-70	0
+213	-70	0
+214	-70	0
+215	-70	0
+216	-70	0
+217	-70	0
+218	-70	0
+219	-70	0
+220	-70	0
+221	-70	0
+222	-70	0
+223	-70	0
+224	-70	0
+225	-70	0
+226	-70	0
+227	-70	0
+228	-70	0
+229	-70	0
+230	-70	0
+231	-70	0
+232	-70	0
+233	-70	0
+234	-70	0
+235	-70	0
+236	-70	0
+237	-70	0
+238	-70	0
+239	-70	0
+240	-70	0
+241	-70	0
+242	-70	0
+243	-70	0
+244	-70	0
+245	-70	0
+246	-70	0
+247	-70	0
+248	-70	0
+249	-70	0
+250	-70	0
+251	-70	0
+252	-70	0
+253	-70	0
+254	-70	0
+255	-70	0
+256	-70	0
+257	-70	0
+258	-70	0
+259	-70	0
+260	-70	0
+261	-70	0
+262	-70	0
+263	-70	0
+264	-70	0
+265	-70	0
+266	-70	0
+267	-70	0
+268	-70	0
+269	-70	0
+270	-70	0
+271	-70	0
+272	-70	0
+273	-70	0
+274	-70	0
+275	-70	0
+276	-70	0
+277	-70	0
+278	-70	0
+279	-70	0
+280	-70	0
+281	-70	0
+282	-70	0
+283	-70	0
+284	-70	0
+285	-70	0
+286	-70	0
+287	-70	0
+288	-70	0
+289	-70	0
+290	-70	0
+291	-70	0
+292	-70	0
+293	-70	0
+294	-70	0
+295	-70	0
+296	-70	0
+297	-70	0
+298	-70	0
+299	-70	0
+300	-70	0
+301	-70	0
+302	-70	0
+303	-70	0
+304	-70	0
+305	-70	0
+306	-70	0
+307	-70	0
+308	-70	0
+309	-70	0
+310	-70	0
+311	-70	0
+312	-70	0
+313	-70	0
+314	-70	0
+315	-70	0
+316	-70	0
+317	-70	0
+318	-70	0
+319	-70	0
+320	-70	0
+321	-70	0
+322	-70	0
+323	-70	0
+324	-70	0
+325	-70	0
+326	-70	0
+327	-70	0
+328	-70	0
+329	-70	0
+330	-70	0
+331	-70	0
+332	-70	0
+333	-70	0
+334	-70	0
+335	-70	0
+336	-70	0
+337	-70	0
+338	-70	0
+339	-70	0
+340	-70	0
+341	-70	0
+342	-70	0
+343	-70	0
+344	-70	0
+345	-70	0
+346	-70	0
+347	-70	0
+348	-70	0
+349	-70	0
+350	-70	0
+351	-70	0
+352	-70	0
+353	-70	0
+354	-70	0
+355	-70	0
+356	-70	0
+357	-70	0
+358	-70	0
+359	-70	0
+360	-70	0
+0	-69.5	0
+1	-69.5	0
+2	-69.5	0
+3	-69.5	0
+4	-69.5	0
+5	-69.5	0
+6	-69.5	0
+7	-69.5	0
+8	-69.5	0
+9	-69.5	0
+10	-69.5	0
+11	-69.5	0
+12	-69.5	0
+13	-69.5	0
+14	-69.5	0
+15	-69.5	0
+16	-69.5	0
+17	-69.5	0
+18	-69.5	0
+19	-69.5	0
+20	-69.5	0
+21	-69.5	0
+22	-69.5	0
+23	-69.5	0
+24	-69.5	0
+25	-69.5	0
+26	-69.5	0
+27	-69.5	0
+28	-69.5	0
+29	-69.5	0
+30	-69.5	0
+31	-69.5	0
+32	-69.5	0
+33	-69.5	0
+34	-69.5	0
+35	-69.5	0
+36	-69.5	0
+37	-69.5	0
+38	-69.5	0
+39	-69.5	0
+40	-69.5	0
+41	-69.5	0
+42	-69.5	0
+43	-69.5	0
+44	-69.5	0
+45	-69.5	0
+46	-69.5	0
+47	-69.5	0
+48	-69.5	0
+49	-69.5	0
+50	-69.5	0
+51	-69.5	0
+52	-69.5	0
+53	-69.5	0
+54	-69.5	0
+55	-69.5	0
+56	-69.5	0
+57	-69.5	0
+58	-69.5	0
+59	-69.5	0
+60	-69.5	0
+61	-69.5	0
+62	-69.5	0
+63	-69.5	0
+64	-69.5	0
+65	-69.5	0
+66	-69.5	0
+67	-69.5	0
+68	-69.5	0
+69	-69.5	0
+70	-69.5	0
+71	-69.5	0
+72	-69.5	0
+73	-69.5	0
+74	-69.5	0
+75	-69.5	0
+76	-69.5	0
+77	-69.5	0
+78	-69.5	0
+79	-69.5	0
+80	-69.5	0
+81	-69.5	0
+82	-69.5	0
+83	-69.5	0
+84	-69.5	0
+85	-69.5	0
+86	-69.5	0
+87	-69.5	0
+88	-69.5	0
+89	-69.5	0
+90	-69.5	0
+91	-69.5	0
+92	-69.5	0
+93	-69.5	0
+94	-69.5	0
+95	-69.5	0
+96	-69.5	0
+97	-69.5	0
+98	-69.5	0
+99	-69.5	0
+100	-69.5	0
+101	-69.5	0
+102	-69.5	0
+103	-69.5	0
+104	-69.5	0
+105	-69.5	0
+106	-69.5	0
+107	-69.5	0
+108	-69.5	0
+109	-69.5	0
+110	-69.5	0
+111	-69.5	0
+112	-69.5	0
+113	-69.5	0
+114	-69.5	0
+115	-69.5	0
+116	-69.5	0
+117	-69.5	0
+118	-69.5	0
+119	-69.5	0
+120	-69.5	0
+121	-69.5	0
+122	-69.5	0
+123	-69.5	0
+124	-69.5	0
+125	-69.5	0
+126	-69.5	0
+127	-69.5	0
+128	-69.5	0
+129	-69.5	0
+130	-69.5	0
+131	-69.5	0
+132	-69.5	0
+133	-69.5	0
+134	-69.5	0
+135	-69.5	0
+136	-69.5	0
+137	-69.5	0
+138	-69.5	0
+139	-69.5	0
+140	-69.5	0
+141	-69.5	0
+142	-69.5	0
+143	-69.5	0
+144	-69.5	0
+145	-69.5	0
+146	-69.5	0
+147	-69.5	0
+148	-69.5	0
+149	-69.5	0
+150	-69.5	0
+151	-69.5	0
+152	-69.5	0
+153	-69.5	0
+154	-69.5	0
+155	-69.5	0
+156	-69.5	0
+157	-69.5	0
+158	-69.5	0
+159	-69.5	0
+160	-69.5	0
+161	-69.5	0
+162	-69.5	0
+163	-69.5	0
+164	-69.5	0
+165	-69.5	0
+166	-69.5	0
+167	-69.5	0
+168	-69.5	0
+169	-69.5	0
+170	-69.5	0
+171	-69.5	0
+172	-69.5	0
+173	-69.5	0
+174	-69.5	0
+175	-69.5	0
+176	-69.5	0
+177	-69.5	0
+178	-69.5	0
+179	-69.5	0
+180	-69.5	0
+181	-69.5	0
+182	-69.5	0
+183	-69.5	0
+184	-69.5	0
+185	-69.5	0
+186	-69.5	0
+187	-69.5	0
+188	-69.5	0
+189	-69.5	0
+190	-69.5	0
+191	-69.5	0
+192	-69.5	0
+193	-69.5	0
+194	-69.5	0
+195	-69.5	0
+196	-69.5	0
+197	-69.5	0
+198	-69.5	0
+199	-69.5	0
+200	-69.5	0
+201	-69.5	0
+202	-69.5	0
+203	-69.5	0
+204	-69.5	0
+205	-69.5	0
+206	-69.5	0
+207	-69.5	0
+208	-69.5	0
+209	-69.5	0
+210	-69.5	0
+211	-69.5	0
+212	-69.5	0
+213	-69.5	0
+214	-69.5	0
+215	-69.5	0
+216	-69.5	0
+217	-69.5	0
+218	-69.5	0
+219	-69.5	0
+220	-69.5	0
+221	-69.5	0
+222	-69.5	0
+223	-69.5	0
+224	-69.5	0
+225	-69.5	0
+226	-69.5	0
+227	-69.5	0
+228	-69.5	0
+229	-69.5	0
+230	-69.5	0
+231	-69.5	0
+232	-69.5	0
+233	-69.5	0
+234	-69.5	0
+235	-69.5	0
+236	-69.5	0
+237	-69.5	0
+238	-69.5	0
+239	-69.5	0
+240	-69.5	0
+241	-69.5	0
+242	-69.5	0
+243	-69.5	0
+244	-69.5	0
+245	-69.5	0
+246	-69.5	0
+247	-69.5	0
+248	-69.5	0
+249	-69.5	0
+250	-69.5	0
+251	-69.5	0
+252	-69.5	0
+253	-69.5	0
+254	-69.5	0
+255	-69.5	0
+256	-69.5	0
+257	-69.5	0
+258	-69.5	0
+259	-69.5	0
+260	-69.5	0
+261	-69.5	0
+262	-69.5	0
+263	-69.5	0
+264	-69.5	0
+265	-69.5	0
+266	-69.5	0
+267	-69.5	0
+268	-69.5	0
+269	-69.5	0
+270	-69.5	0
+271	-69.5	0
+272	-69.5	0
+273	-69.5	0
+274	-69.5	0
+275	-69.5	0
+276	-69.5	0
+277	-69.5	0
+278	-69.5	0
+279	-69.5	0
+280	-69.5	0
+281	-69.5	0
+282	-69.5	0
+283	-69.5	0
+284	-69.5	0
+285	-69.5	0
+286	-69.5	0
+287	-69.5	0
+288	-69.5	0
+289	-69.5	0
+290	-69.5	0
+291	-69.5	0
+292	-69.5	0
+293	-69.5	0
+294	-69.5	0
+295	-69.5	0
+296	-69.5	0
+297	-69.5	0
+298	-69.5	0
+299	-69.5	0
+300	-69.5	0
+301	-69.5	0
+302	-69.5	0
+303	-69.5	0
+304	-69.5	0
+305	-69.5	0
+306	-69.5	0
+307	-69.5	0
+308	-69.5	0
+309	-69.5	0
+310	-69.5	0
+311	-69.5	0
+312	-69.5	0
+313	-69.5	0
+314	-69.5	0
+315	-69.5	0
+316	-69.5	0
+317	-69.5	0
+318	-69.5	0
+319	-69.5	0
+320	-69.5	0
+321	-69.5	0
+322	-69.5	0
+323	-69.5	0
+324	-69.5	0
+325	-69.5	0
+326	-69.5	0
+327	-69.5	0
+328	-69.5	0
+329	-69.5	0
+330	-69.5	0
+331	-69.5	0
+332	-69.5	0
+333	-69.5	0
+334	-69.5	0
+335	-69.5	0
+336	-69.5	0
+337	-69.5	0
+338	-69.5	0
+339	-69.5	0
+340	-69.5	0
+341	-69.5	0
+342	-69.5	0
+343	-69.5	0
+344	-69.5	0
+345	-69.5	0
+346	-69.5	0
+347	-69.5	0
+348	-69.5	0
+349	-69.5	0
+350	-69.5	0
+351	-69.5	0
+352	-69.5	0
+353	-69.5	0
+354	-69.5	0
+355	-69.5	0
+356	-69.5	0
+357	-69.5	0
+358	-69.5	0
+359	-69.5	0
+360	-69.5	0
+0	-69	0
+1	-69	0
+2	-69	0
+3	-69	0
+4	-69	0
+5	-69	0
+6	-69	0
+7	-69	0
+8	-69	0
+9	-69	0
+10	-69	0
+11	-69	0
+12	-69	0
+13	-69	0
+14	-69	0
+15	-69	0
+16	-69	0
+17	-69	0
+18	-69	0
+19	-69	0
+20	-69	0
+21	-69	0
+22	-69	0
+23	-69	0
+24	-69	0
+25	-69	0
+26	-69	0
+27	-69	0
+28	-69	0
+29	-69	0
+30	-69	0
+31	-69	0
+32	-69	0
+33	-69	0
+34	-69	0
+35	-69	0
+36	-69	0
+37	-69	0
+38	-69	0
+39	-69	0
+40	-69	0
+41	-69	0
+42	-69	0
+43	-69	0
+44	-69	0
+45	-69	0
+46	-69	0
+47	-69	0
+48	-69	0
+49	-69	0
+50	-69	0
+51	-69	0
+52	-69	0
+53	-69	0
+54	-69	0
+55	-69	0
+56	-69	0
+57	-69	0
+58	-69	0
+59	-69	0
+60	-69	0
+61	-69	0
+62	-69	0
+63	-69	0
+64	-69	0
+65	-69	0
+66	-69	0
+67	-69	0
+68	-69	0
+69	-69	0
+70	-69	0
+71	-69	0
+72	-69	0
+73	-69	0
+74	-69	0
+75	-69	0
+76	-69	0
+77	-69	0
+78	-69	0
+79	-69	0
+80	-69	0
+81	-69	0
+82	-69	0
+83	-69	0
+84	-69	0
+85	-69	0
+86	-69	0
+87	-69	0
+88	-69	0
+89	-69	0
+90	-69	0
+91	-69	0
+92	-69	0
+93	-69	0
+94	-69	0
+95	-69	0
+96	-69	0
+97	-69	0
+98	-69	0
+99	-69	0
+100	-69	0
+101	-69	0
+102	-69	0
+103	-69	0
+104	-69	0
+105	-69	0
+106	-69	0
+107	-69	0
+108	-69	0
+109	-69	0
+110	-69	0
+111	-69	0
+112	-69	0
+113	-69	0
+114	-69	0
+115	-69	0
+116	-69	0
+117	-69	0
+118	-69	0
+119	-69	0
+120	-69	0
+121	-69	0
+122	-69	0
+123	-69	0
+124	-69	0
+125	-69	0
+126	-69	0
+127	-69	0
+128	-69	0
+129	-69	0
+130	-69	0
+131	-69	0
+132	-69	0
+133	-69	0
+134	-69	0
+135	-69	0
+136	-69	0
+137	-69	0
+138	-69	0
+139	-69	0
+140	-69	0
+141	-69	0
+142	-69	0
+143	-69	0
+144	-69	0
+145	-69	0
+146	-69	0
+147	-69	0
+148	-69	0
+149	-69	0
+150	-69	0
+151	-69	0
+152	-69	0
+153	-69	0
+154	-69	0
+155	-69	0
+156	-69	0
+157	-69	0
+158	-69	0
+159	-69	0
+160	-69	0
+161	-69	0
+162	-69	0
+163	-69	0
+164	-69	0
+165	-69	0
+166	-69	0
+167	-69	0
+168	-69	0
+169	-69	0
+170	-69	0
+171	-69	0
+172	-69	0
+173	-69	0
+174	-69	0
+175	-69	0
+176	-69	0
+177	-69	0
+178	-69	0
+179	-69	0
+180	-69	0
+181	-69	0
+182	-69	0
+183	-69	0
+184	-69	0
+185	-69	0
+186	-69	0
+187	-69	0
+188	-69	0
+189	-69	0
+190	-69	0
+191	-69	0
+192	-69	0
+193	-69	0
+194	-69	0
+195	-69	0
+196	-69	0
+197	-69	0
+198	-69	0
+199	-69	0
+200	-69	0
+201	-69	0
+202	-69	0
+203	-69	0
+204	-69	0
+205	-69	0
+206	-69	0
+207	-69	0
+208	-69	0
+209	-69	0
+210	-69	0
+211	-69	0
+212	-69	0
+213	-69	0
+214	-69	0
+215	-69	0
+216	-69	0
+217	-69	0
+218	-69	0
+219	-69	0
+220	-69	0
+221	-69	0
+222	-69	0
+223	-69	0
+224	-69	0
+225	-69	0
+226	-69	0
+227	-69	0
+228	-69	0
+229	-69	0
+230	-69	0
+231	-69	0
+232	-69	0
+233	-69	0
+234	-69	0
+235	-69	0
+236	-69	0
+237	-69	0
+238	-69	0
+239	-69	0
+240	-69	0
+241	-69	0
+242	-69	0
+243	-69	0
+244	-69	0
+245	-69	0
+246	-69	0
+247	-69	0
+248	-69	0
+249	-69	0
+250	-69	0
+251	-69	0
+252	-69	0
+253	-69	0
+254	-69	0
+255	-69	0
+256	-69	0
+257	-69	0
+258	-69	0
+259	-69	0
+260	-69	0
+261	-69	0
+262	-69	0
+263	-69	0
+264	-69	0
+265	-69	0
+266	-69	0
+267	-69	0
+268	-69	0
+269	-69	0
+270	-69	0
+271	-69	0
+272	-69	0
+273	-69	0
+274	-69	0
+275	-69	0
+276	-69	0
+277	-69	0
+278	-69	0
+279	-69	0
+280	-69	0
+281	-69	0
+282	-69	0
+283	-69	0
+284	-69	0
+285	-69	0
+286	-69	0
+287	-69	0
+288	-69	0
+289	-69	0
+290	-69	0
+291	-69	0
+292	-69	0
+293	-69	0
+294	-69	0
+295	-69	0
+296	-69	0
+297	-69	0
+298	-69	0
+299	-69	0
+300	-69	0
+301	-69	0
+302	-69	0
+303	-69	0
+304	-69	0
+305	-69	0
+306	-69	0
+307	-69	0
+308	-69	0
+309	-69	0
+310	-69	0
+311	-69	0
+312	-69	0
+313	-69	0
+314	-69	0
+315	-69	0
+316	-69	0
+317	-69	0
+318	-69	0
+319	-69	0
+320	-69	0
+321	-69	0
+322	-69	0
+323	-69	0
+324	-69	0
+325	-69	0
+326	-69	0
+327	-69	0
+328	-69	0
+329	-69	0
+330	-69	0
+331	-69	0
+332	-69	0
+333	-69	0
+334	-69	0
+335	-69	0
+336	-69	0
+337	-69	0
+338	-69	0
+339	-69	0
+340	-69	0
+341	-69	0
+342	-69	0
+343	-69	0
+344	-69	0
+345	-69	0
+346	-69	0
+347	-69	0
+348	-69	0
+349	-69	0
+350	-69	0
+351	-69	0
+352	-69	0
+353	-69	0
+354	-69	0
+355	-69	0
+356	-69	0
+357	-69	0
+358	-69	0
+359	-69	0
+360	-69	0
+0	-68.5	0
+1	-68.5	0
+2	-68.5	0
+3	-68.5	0
+4	-68.5	0
+5	-68.5	0
+6	-68.5	0
+7	-68.5	0
+8	-68.5	0
+9	-68.5	0
+10	-68.5	0
+11	-68.5	0
+12	-68.5	0
+13	-68.5	0
+14	-68.5	0
+15	-68.5	0
+16	-68.5	0
+17	-68.5	0
+18	-68.5	0
+19	-68.5	0
+20	-68.5	0
+21	-68.5	0
+22	-68.5	0
+23	-68.5	0
+24	-68.5	0
+25	-68.5	0
+26	-68.5	0
+27	-68.5	0
+28	-68.5	0
+29	-68.5	0
+30	-68.5	0
+31	-68.5	0
+32	-68.5	0
+33	-68.5	0
+34	-68.5	0
+35	-68.5	0
+36	-68.5	0
+37	-68.5	0
+38	-68.5	0
+39	-68.5	0
+40	-68.5	0
+41	-68.5	0
+42	-68.5	0
+43	-68.5	0
+44	-68.5	0
+45	-68.5	0
+46	-68.5	0
+47	-68.5	0
+48	-68.5	0
+49	-68.5	0
+50	-68.5	0
+51	-68.5	0
+52	-68.5	0
+53	-68.5	0
+54	-68.5	0
+55	-68.5	0
+56	-68.5	0
+57	-68.5	0
+58	-68.5	0
+59	-68.5	0
+60	-68.5	0
+61	-68.5	0
+62	-68.5	0
+63	-68.5	0
+64	-68.5	0
+65	-68.5	0
+66	-68.5	0
+67	-68.5	0
+68	-68.5	0
+69	-68.5	0
+70	-68.5	0
+71	-68.5	0
+72	-68.5	0
+73	-68.5	0
+74	-68.5	0
+75	-68.5	0
+76	-68.5	0
+77	-68.5	0
+78	-68.5	0
+79	-68.5	0
+80	-68.5	0
+81	-68.5	0
+82	-68.5	0
+83	-68.5	0
+84	-68.5	0
+85	-68.5	0
+86	-68.5	0
+87	-68.5	0
+88	-68.5	0
+89	-68.5	0
+90	-68.5	0
+91	-68.5	0
+92	-68.5	0
+93	-68.5	0
+94	-68.5	0
+95	-68.5	0
+96	-68.5	0
+97	-68.5	0
+98	-68.5	0
+99	-68.5	0
+100	-68.5	0
+101	-68.5	0
+102	-68.5	0
+103	-68.5	0
+104	-68.5	0
+105	-68.5	0
+106	-68.5	0
+107	-68.5	0
+108	-68.5	0
+109	-68.5	0
+110	-68.5	0
+111	-68.5	0
+112	-68.5	0
+113	-68.5	0
+114	-68.5	0
+115	-68.5	0
+116	-68.5	0
+117	-68.5	0
+118	-68.5	0
+119	-68.5	0
+120	-68.5	0
+121	-68.5	0
+122	-68.5	0
+123	-68.5	0
+124	-68.5	0
+125	-68.5	0
+126	-68.5	0
+127	-68.5	0
+128	-68.5	0
+129	-68.5	0
+130	-68.5	0
+131	-68.5	0
+132	-68.5	0
+133	-68.5	0
+134	-68.5	0
+135	-68.5	0
+136	-68.5	0
+137	-68.5	0
+138	-68.5	0
+139	-68.5	0
+140	-68.5	0
+141	-68.5	0
+142	-68.5	0
+143	-68.5	0
+144	-68.5	0
+145	-68.5	0
+146	-68.5	0
+147	-68.5	0
+148	-68.5	0
+149	-68.5	0
+150	-68.5	0
+151	-68.5	0
+152	-68.5	0
+153	-68.5	0
+154	-68.5	0
+155	-68.5	0
+156	-68.5	0
+157	-68.5	0
+158	-68.5	0
+159	-68.5	0
+160	-68.5	0
+161	-68.5	0
+162	-68.5	0
+163	-68.5	0
+164	-68.5	0
+165	-68.5	0
+166	-68.5	0
+167	-68.5	0
+168	-68.5	0
+169	-68.5	0
+170	-68.5	0
+171	-68.5	0
+172	-68.5	0
+173	-68.5	0
+174	-68.5	0
+175	-68.5	0
+176	-68.5	0
+177	-68.5	0
+178	-68.5	0
+179	-68.5	0
+180	-68.5	0
+181	-68.5	0
+182	-68.5	0
+183	-68.5	0
+184	-68.5	0
+185	-68.5	0
+186	-68.5	0
+187	-68.5	0
+188	-68.5	0
+189	-68.5	0
+190	-68.5	0
+191	-68.5	0
+192	-68.5	0
+193	-68.5	0
+194	-68.5	0
+195	-68.5	0
+196	-68.5	0
+197	-68.5	0
+198	-68.5	0
+199	-68.5	0
+200	-68.5	0
+201	-68.5	0
+202	-68.5	0
+203	-68.5	0
+204	-68.5	0
+205	-68.5	0
+206	-68.5	0
+207	-68.5	0
+208	-68.5	0
+209	-68.5	0
+210	-68.5	0
+211	-68.5	0
+212	-68.5	0
+213	-68.5	0
+214	-68.5	0
+215	-68.5	0
+216	-68.5	0
+217	-68.5	0
+218	-68.5	0
+219	-68.5	0
+220	-68.5	0
+221	-68.5	0
+222	-68.5	0
+223	-68.5	0
+224	-68.5	0
+225	-68.5	0
+226	-68.5	0
+227	-68.5	0
+228	-68.5	0
+229	-68.5	0
+230	-68.5	0
+231	-68.5	0
+232	-68.5	0
+233	-68.5	0
+234	-68.5	0
+235	-68.5	0
+236	-68.5	0
+237	-68.5	0
+238	-68.5	0
+239	-68.5	0
+240	-68.5	0
+241	-68.5	0
+242	-68.5	0
+243	-68.5	0
+244	-68.5	0
+245	-68.5	0
+246	-68.5	0
+247	-68.5	0
+248	-68.5	0
+249	-68.5	0
+250	-68.5	0
+251	-68.5	0
+252	-68.5	0
+253	-68.5	0
+254	-68.5	0
+255	-68.5	0
+256	-68.5	0
+257	-68.5	0
+258	-68.5	0
+259	-68.5	0
+260	-68.5	0
+261	-68.5	0
+262	-68.5	0
+263	-68.5	0
+264	-68.5	0
+265	-68.5	0
+266	-68.5	0
+267	-68.5	0
+268	-68.5	0
+269	-68.5	0
+270	-68.5	0
+271	-68.5	0
+272	-68.5	0
+273	-68.5	0
+274	-68.5	0
+275	-68.5	0
+276	-68.5	0
+277	-68.5	0
+278	-68.5	0
+279	-68.5	0
+280	-68.5	0
+281	-68.5	0
+282	-68.5	0
+283	-68.5	0
+284	-68.5	0
+285	-68.5	0
+286	-68.5	0
+287	-68.5	0
+288	-68.5	0
+289	-68.5	0
+290	-68.5	0
+291	-68.5	0
+292	-68.5	0
+293	-68.5	0
+294	-68.5	0
+295	-68.5	0
+296	-68.5	0
+297	-68.5	0
+298	-68.5	0
+299	-68.5	0
+300	-68.5	0
+301	-68.5	0
+302	-68.5	0
+303	-68.5	0
+304	-68.5	0
+305	-68.5	0
+306	-68.5	0
+307	-68.5	0
+308	-68.5	0
+309	-68.5	0
+310	-68.5	0
+311	-68.5	0
+312	-68.5	0
+313	-68.5	0
+314	-68.5	0
+315	-68.5	0
+316	-68.5	0
+317	-68.5	0
+318	-68.5	0
+319	-68.5	0
+320	-68.5	0
+321	-68.5	0
+322	-68.5	0
+323	-68.5	0
+324	-68.5	0
+325	-68.5	0
+326	-68.5	0
+327	-68.5	0
+328	-68.5	0
+329	-68.5	0
+330	-68.5	0
+331	-68.5	0
+332	-68.5	0
+333	-68.5	0
+334	-68.5	0
+335	-68.5	0
+336	-68.5	0
+337	-68.5	0
+338	-68.5	0
+339	-68.5	0
+340	-68.5	0
+341	-68.5	0
+342	-68.5	0
+343	-68.5	0
+344	-68.5	0
+345	-68.5	0
+346	-68.5	0
+347	-68.5	0
+348	-68.5	0
+349	-68.5	0
+350	-68.5	0
+351	-68.5	0
+352	-68.5	0
+353	-68.5	0
+354	-68.5	0
+355	-68.5	0
+356	-68.5	0
+357	-68.5	0
+358	-68.5	0
+359	-68.5	0
+360	-68.5	0
+0	-68	0
+1	-68	0
+2	-68	0
+3	-68	0
+4	-68	0
+5	-68	0
+6	-68	0
+7	-68	0
+8	-68	0
+9	-68	0
+10	-68	0
+11	-68	0
+12	-68	0
+13	-68	0
+14	-68	0
+15	-68	0
+16	-68	0
+17	-68	0
+18	-68	0
+19	-68	0
+20	-68	0
+21	-68	0
+22	-68	0
+23	-68	0
+24	-68	0
+25	-68	0
+26	-68	0
+27	-68	0
+28	-68	0
+29	-68	0
+30	-68	0
+31	-68	0
+32	-68	0
+33	-68	0
+34	-68	0
+35	-68	0
+36	-68	0
+37	-68	0
+38	-68	0
+39	-68	0
+40	-68	0
+41	-68	0
+42	-68	0
+43	-68	0
+44	-68	0
+45	-68	0
+46	-68	0
+47	-68	0
+48	-68	0
+49	-68	0
+50	-68	0
+51	-68	0
+52	-68	0
+53	-68	0
+54	-68	0
+55	-68	0
+56	-68	0
+57	-68	0
+58	-68	0
+59	-68	0
+60	-68	0
+61	-68	0
+62	-68	0
+63	-68	0
+64	-68	0
+65	-68	0
+66	-68	0
+67	-68	0
+68	-68	0
+69	-68	0
+70	-68	0
+71	-68	0
+72	-68	0
+73	-68	0
+74	-68	0
+75	-68	0
+76	-68	0
+77	-68	0
+78	-68	0
+79	-68	0
+80	-68	0
+81	-68	0
+82	-68	0
+83	-68	0
+84	-68	0
+85	-68	0
+86	-68	0
+87	-68	0
+88	-68	0
+89	-68	0
+90	-68	0
+91	-68	0
+92	-68	0
+93	-68	0
+94	-68	0
+95	-68	0
+96	-68	0
+97	-68	0
+98	-68	0
+99	-68	0
+100	-68	0
+101	-68	0
+102	-68	0
+103	-68	0
+104	-68	0
+105	-68	0
+106	-68	0
+107	-68	0
+108	-68	0
+109	-68	0
+110	-68	0
+111	-68	0
+112	-68	0
+113	-68	0
+114	-68	0
+115	-68	0
+116	-68	0
+117	-68	0
+118	-68	0
+119	-68	0
+120	-68	0
+121	-68	0
+122	-68	0
+123	-68	0
+124	-68	0
+125	-68	0
+126	-68	0
+127	-68	0
+128	-68	0
+129	-68	0
+130	-68	0
+131	-68	0
+132	-68	0
+133	-68	0
+134	-68	0
+135	-68	0
+136	-68	0
+137	-68	0
+138	-68	0
+139	-68	0
+140	-68	0
+141	-68	0
+142	-68	0
+143	-68	0
+144	-68	0
+145	-68	0
+146	-68	0
+147	-68	0
+148	-68	0
+149	-68	0
+150	-68	0
+151	-68	0
+152	-68	0
+153	-68	0
+154	-68	0
+155	-68	0
+156	-68	0
+157	-68	0
+158	-68	0
+159	-68	0
+160	-68	0
+161	-68	0
+162	-68	0
+163	-68	0
+164	-68	0
+165	-68	0
+166	-68	0
+167	-68	0
+168	-68	0
+169	-68	0
+170	-68	0
+171	-68	0
+172	-68	0
+173	-68	0
+174	-68	0
+175	-68	0
+176	-68	0
+177	-68	0
+178	-68	0
+179	-68	0
+180	-68	0
+181	-68	0
+182	-68	0
+183	-68	0
+184	-68	0
+185	-68	0
+186	-68	0
+187	-68	0
+188	-68	0
+189	-68	0
+190	-68	0
+191	-68	0
+192	-68	0
+193	-68	0
+194	-68	0
+195	-68	0
+196	-68	0
+197	-68	0
+198	-68	0
+199	-68	0
+200	-68	0
+201	-68	0
+202	-68	0
+203	-68	0
+204	-68	0
+205	-68	0
+206	-68	0
+207	-68	0
+208	-68	0
+209	-68	0
+210	-68	0
+211	-68	0
+212	-68	0
+213	-68	0
+214	-68	0
+215	-68	0
+216	-68	0
+217	-68	0
+218	-68	0
+219	-68	0
+220	-68	0
+221	-68	0
+222	-68	0
+223	-68	0
+224	-68	0
+225	-68	0
+226	-68	0
+227	-68	0
+228	-68	0
+229	-68	0
+230	-68	0
+231	-68	0
+232	-68	0
+233	-68	0
+234	-68	0
+235	-68	0
+236	-68	0
+237	-68	0
+238	-68	0
+239	-68	0
+240	-68	0
+241	-68	0
+242	-68	0
+243	-68	0
+244	-68	0
+245	-68	0
+246	-68	0
+247	-68	0
+248	-68	0
+249	-68	0
+250	-68	0
+251	-68	0
+252	-68	0
+253	-68	0
+254	-68	0
+255	-68	0
+256	-68	0
+257	-68	0
+258	-68	0
+259	-68	0
+260	-68	0
+261	-68	0
+262	-68	0
+263	-68	0
+264	-68	0
+265	-68	0
+266	-68	0
+267	-68	0
+268	-68	0
+269	-68	0
+270	-68	0
+271	-68	0
+272	-68	0
+273	-68	0
+274	-68	0
+275	-68	0
+276	-68	0
+277	-68	0
+278	-68	0
+279	-68	0
+280	-68	0
+281	-68	0
+282	-68	0
+283	-68	0
+284	-68	0
+285	-68	0
+286	-68	0
+287	-68	0
+288	-68	0
+289	-68	0
+290	-68	0
+291	-68	0
+292	-68	0
+293	-68	0
+294	-68	0
+295	-68	0
+296	-68	0
+297	-68	0
+298	-68	0
+299	-68	0
+300	-68	0
+301	-68	0
+302	-68	0
+303	-68	0
+304	-68	0
+305	-68	0
+306	-68	0
+307	-68	0
+308	-68	0
+309	-68	0
+310	-68	0
+311	-68	0
+312	-68	0
+313	-68	0
+314	-68	0
+315	-68	0
+316	-68	0
+317	-68	0
+318	-68	0
+319	-68	0
+320	-68	0
+321	-68	0
+322	-68	0
+323	-68	0
+324	-68	0
+325	-68	0
+326	-68	0
+327	-68	0
+328	-68	0
+329	-68	0
+330	-68	0
+331	-68	0
+332	-68	0
+333	-68	0
+334	-68	0
+335	-68	0
+336	-68	0
+337	-68	0
+338	-68	0
+339	-68	0
+340	-68	0
+341	-68	0
+342	-68	0
+343	-68	0
+344	-68	0
+345	-68	0
+346	-68	0
+347	-68	0
+348	-68	0
+349	-68	0
+350	-68	0
+351	-68	0
+352	-68	0
+353	-68	0
+354	-68	0
+355	-68	0
+356	-68	0
+357	-68	0
+358	-68	0
+359	-68	0
+360	-68	0
+0	-67.5	0
+1	-67.5	0
+2	-67.5	0
+3	-67.5	0
+4	-67.5	0
+5	-67.5	0
+6	-67.5	0
+7	-67.5	0
+8	-67.5	0
+9	-67.5	0
+10	-67.5	0
+11	-67.5	0
+12	-67.5	0
+13	-67.5	0
+14	-67.5	0
+15	-67.5	0
+16	-67.5	0
+17	-67.5	0
+18	-67.5	0
+19	-67.5	0
+20	-67.5	0
+21	-67.5	0
+22	-67.5	0
+23	-67.5	0
+24	-67.5	0
+25	-67.5	0
+26	-67.5	0
+27	-67.5	0
+28	-67.5	0
+29	-67.5	0
+30	-67.5	0
+31	-67.5	0
+32	-67.5	0
+33	-67.5	0
+34	-67.5	0
+35	-67.5	0
+36	-67.5	0
+37	-67.5	0
+38	-67.5	0
+39	-67.5	0
+40	-67.5	0
+41	-67.5	0
+42	-67.5	0
+43	-67.5	0
+44	-67.5	0
+45	-67.5	0
+46	-67.5	0
+47	-67.5	0
+48	-67.5	0
+49	-67.5	0
+50	-67.5	0
+51	-67.5	0
+52	-67.5	0
+53	-67.5	0
+54	-67.5	0
+55	-67.5	0
+56	-67.5	0
+57	-67.5	0
+58	-67.5	0
+59	-67.5	0
+60	-67.5	0
+61	-67.5	0
+62	-67.5	0
+63	-67.5	0
+64	-67.5	0
+65	-67.5	0
+66	-67.5	0
+67	-67.5	0
+68	-67.5	0
+69	-67.5	0
+70	-67.5	0
+71	-67.5	0
+72	-67.5	0
+73	-67.5	0
+74	-67.5	0
+75	-67.5	0
+76	-67.5	0
+77	-67.5	0
+78	-67.5	0
+79	-67.5	0
+80	-67.5	0
+81	-67.5	0
+82	-67.5	0
+83	-67.5	0
+84	-67.5	0
+85	-67.5	0
+86	-67.5	0
+87	-67.5	0
+88	-67.5	0
+89	-67.5	0
+90	-67.5	0
+91	-67.5	0
+92	-67.5	0
+93	-67.5	0
+94	-67.5	0
+95	-67.5	0
+96	-67.5	0
+97	-67.5	0
+98	-67.5	0
+99	-67.5	0
+100	-67.5	0
+101	-67.5	0
+102	-67.5	0
+103	-67.5	0
+104	-67.5	0
+105	-67.5	0
+106	-67.5	0
+107	-67.5	0
+108	-67.5	0
+109	-67.5	0
+110	-67.5	0
+111	-67.5	0
+112	-67.5	0
+113	-67.5	0
+114	-67.5	0
+115	-67.5	0
+116	-67.5	0
+117	-67.5	0
+118	-67.5	0
+119	-67.5	0
+120	-67.5	0
+121	-67.5	0
+122	-67.5	0
+123	-67.5	0
+124	-67.5	0
+125	-67.5	0
+126	-67.5	0
+127	-67.5	0
+128	-67.5	0
+129	-67.5	0
+130	-67.5	0
+131	-67.5	0
+132	-67.5	0
+133	-67.5	0
+134	-67.5	0
+135	-67.5	0
+136	-67.5	0
+137	-67.5	0
+138	-67.5	0
+139	-67.5	0
+140	-67.5	0
+141	-67.5	0
+142	-67.5	0
+143	-67.5	0
+144	-67.5	0
+145	-67.5	0
+146	-67.5	0
+147	-67.5	0
+148	-67.5	0
+149	-67.5	0
+150	-67.5	0
+151	-67.5	0
+152	-67.5	0
+153	-67.5	0
+154	-67.5	0
+155	-67.5	0
+156	-67.5	0
+157	-67.5	0
+158	-67.5	0
+159	-67.5	0
+160	-67.5	0
+161	-67.5	0
+162	-67.5	0
+163	-67.5	0
+164	-67.5	0
+165	-67.5	0
+166	-67.5	0
+167	-67.5	0
+168	-67.5	0
+169	-67.5	0
+170	-67.5	0
+171	-67.5	0
+172	-67.5	0
+173	-67.5	0
+174	-67.5	0
+175	-67.5	0
+176	-67.5	0
+177	-67.5	0
+178	-67.5	0
+179	-67.5	0
+180	-67.5	0
+181	-67.5	0
+182	-67.5	0
+183	-67.5	0
+184	-67.5	0
+185	-67.5	0
+186	-67.5	0
+187	-67.5	0
+188	-67.5	0
+189	-67.5	0
+190	-67.5	0
+191	-67.5	0
+192	-67.5	0
+193	-67.5	0
+194	-67.5	0
+195	-67.5	0
+196	-67.5	0
+197	-67.5	0
+198	-67.5	0
+199	-67.5	0
+200	-67.5	0
+201	-67.5	0
+202	-67.5	0
+203	-67.5	0
+204	-67.5	0
+205	-67.5	0
+206	-67.5	0
+207	-67.5	0
+208	-67.5	0
+209	-67.5	0
+210	-67.5	0
+211	-67.5	0
+212	-67.5	0
+213	-67.5	0
+214	-67.5	0
+215	-67.5	0
+216	-67.5	0
+217	-67.5	0
+218	-67.5	0
+219	-67.5	0
+220	-67.5	0
+221	-67.5	0
+222	-67.5	0
+223	-67.5	0
+224	-67.5	0
+225	-67.5	0
+226	-67.5	0
+227	-67.5	0
+228	-67.5	0
+229	-67.5	0
+230	-67.5	0
+231	-67.5	0
+232	-67.5	0
+233	-67.5	0
+234	-67.5	0
+235	-67.5	0
+236	-67.5	0
+237	-67.5	0
+238	-67.5	0
+239	-67.5	0
+240	-67.5	0
+241	-67.5	0
+242	-67.5	0
+243	-67.5	0
+244	-67.5	0
+245	-67.5	0
+246	-67.5	0
+247	-67.5	0
+248	-67.5	0
+249	-67.5	0
+250	-67.5	0
+251	-67.5	0
+252	-67.5	0
+253	-67.5	0
+254	-67.5	0
+255	-67.5	0
+256	-67.5	0
+257	-67.5	0
+258	-67.5	0
+259	-67.5	0
+260	-67.5	0
+261	-67.5	0
+262	-67.5	0
+263	-67.5	0
+264	-67.5	0
+265	-67.5	0
+266	-67.5	0
+267	-67.5	0
+268	-67.5	0
+269	-67.5	0
+270	-67.5	0
+271	-67.5	0
+272	-67.5	0
+273	-67.5	0
+274	-67.5	0
+275	-67.5	0
+276	-67.5	0
+277	-67.5	0
+278	-67.5	0
+279	-67.5	0
+280	-67.5	0
+281	-67.5	0
+282	-67.5	0
+283	-67.5	0
+284	-67.5	0
+285	-67.5	0
+286	-67.5	0
+287	-67.5	0
+288	-67.5	0
+289	-67.5	0
+290	-67.5	0
+291	-67.5	0
+292	-67.5	0
+293	-67.5	0
+294	-67.5	0
+295	-67.5	0
+296	-67.5	0
+297	-67.5	0
+298	-67.5	0
+299	-67.5	0
+300	-67.5	0
+301	-67.5	0
+302	-67.5	0
+303	-67.5	0
+304	-67.5	0
+305	-67.5	0
+306	-67.5	0
+307	-67.5	0
+308	-67.5	0
+309	-67.5	0
+310	-67.5	0
+311	-67.5	0
+312	-67.5	0
+313	-67.5	0
+314	-67.5	0
+315	-67.5	0
+316	-67.5	0
+317	-67.5	0
+318	-67.5	0
+319	-67.5	0
+320	-67.5	0
+321	-67.5	0
+322	-67.5	0
+323	-67.5	0
+324	-67.5	0
+325	-67.5	0
+326	-67.5	0
+327	-67.5	0
+328	-67.5	0
+329	-67.5	0
+330	-67.5	0
+331	-67.5	0
+332	-67.5	0
+333	-67.5	0
+334	-67.5	0
+335	-67.5	0
+336	-67.5	0
+337	-67.5	0
+338	-67.5	0
+339	-67.5	0
+340	-67.5	0
+341	-67.5	0
+342	-67.5	0
+343	-67.5	0
+344	-67.5	0
+345	-67.5	0
+346	-67.5	0
+347	-67.5	0
+348	-67.5	0
+349	-67.5	0
+350	-67.5	0
+351	-67.5	0
+352	-67.5	0
+353	-67.5	0
+354	-67.5	0
+355	-67.5	0
+356	-67.5	0
+357	-67.5	0
+358	-67.5	0
+359	-67.5	0
+360	-67.5	0
+0	-67	0
+1	-67	0
+2	-67	0
+3	-67	0
+4	-67	0
+5	-67	0
+6	-67	0
+7	-67	0
+8	-67	0
+9	-67	0
+10	-67	0
+11	-67	0
+12	-67	0
+13	-67	0
+14	-67	0
+15	-67	0
+16	-67	0
+17	-67	0
+18	-67	0
+19	-67	0
+20	-67	0
+21	-67	0
+22	-67	0
+23	-67	0
+24	-67	0
+25	-67	0
+26	-67	0
+27	-67	0
+28	-67	0
+29	-67	0
+30	-67	0
+31	-67	0
+32	-67	0
+33	-67	0
+34	-67	0
+35	-67	0
+36	-67	0
+37	-67	0
+38	-67	0
+39	-67	0
+40	-67	0
+41	-67	0
+42	-67	0
+43	-67	0
+44	-67	0
+45	-67	0
+46	-67	0
+47	-67	0
+48	-67	0
+49	-67	0
+50	-67	0
+51	-67	0
+52	-67	0
+53	-67	0
+54	-67	0
+55	-67	0
+56	-67	0
+57	-67	0
+58	-67	0
+59	-67	0
+60	-67	0
+61	-67	0
+62	-67	0
+63	-67	0
+64	-67	0
+65	-67	0
+66	-67	0
+67	-67	0
+68	-67	0
+69	-67	0
+70	-67	0
+71	-67	0
+72	-67	0
+73	-67	0
+74	-67	0
+75	-67	0
+76	-67	0
+77	-67	0
+78	-67	0
+79	-67	0
+80	-67	0
+81	-67	0
+82	-67	0
+83	-67	0
+84	-67	0
+85	-67	0
+86	-67	0
+87	-67	0
+88	-67	0
+89	-67	0
+90	-67	0
+91	-67	0
+92	-67	0
+93	-67	0
+94	-67	0
+95	-67	0
+96	-67	0
+97	-67	0
+98	-67	0
+99	-67	0
+100	-67	0
+101	-67	0
+102	-67	0
+103	-67	0
+104	-67	0
+105	-67	0
+106	-67	0
+107	-67	0
+108	-67	0
+109	-67	0
+110	-67	0
+111	-67	0
+112	-67	0
+113	-67	0
+114	-67	0
+115	-67	0
+116	-67	0
+117	-67	0
+118	-67	0
+119	-67	0
+120	-67	0
+121	-67	0
+122	-67	0
+123	-67	0
+124	-67	0
+125	-67	0
+126	-67	0
+127	-67	0
+128	-67	0
+129	-67	0
+130	-67	0
+131	-67	0
+132	-67	0
+133	-67	0
+134	-67	0
+135	-67	0
+136	-67	0
+137	-67	0
+138	-67	0
+139	-67	0
+140	-67	0
+141	-67	0
+142	-67	0
+143	-67	0
+144	-67	0
+145	-67	0
+146	-67	0
+147	-67	0
+148	-67	0
+149	-67	0
+150	-67	0
+151	-67	0
+152	-67	0
+153	-67	0
+154	-67	0
+155	-67	0
+156	-67	0
+157	-67	0
+158	-67	0
+159	-67	0
+160	-67	0
+161	-67	0
+162	-67	0
+163	-67	0
+164	-67	0
+165	-67	0
+166	-67	0
+167	-67	0
+168	-67	0
+169	-67	0
+170	-67	0
+171	-67	0
+172	-67	0
+173	-67	0
+174	-67	0
+175	-67	0
+176	-67	0
+177	-67	0
+178	-67	0
+179	-67	0
+180	-67	0
+181	-67	0
+182	-67	0
+183	-67	0
+184	-67	0
+185	-67	0
+186	-67	0
+187	-67	0
+188	-67	0
+189	-67	0
+190	-67	0
+191	-67	0
+192	-67	0
+193	-67	0
+194	-67	0
+195	-67	0
+196	-67	0
+197	-67	0
+198	-67	0
+199	-67	0
+200	-67	0
+201	-67	0
+202	-67	0
+203	-67	0
+204	-67	0
+205	-67	0
+206	-67	0
+207	-67	0
+208	-67	0
+209	-67	0
+210	-67	0
+211	-67	0
+212	-67	0
+213	-67	0
+214	-67	0
+215	-67	0
+216	-67	0
+217	-67	0
+218	-67	0
+219	-67	0
+220	-67	0
+221	-67	0
+222	-67	0
+223	-67	0
+224	-67	0
+225	-67	0
+226	-67	0
+227	-67	0
+228	-67	0
+229	-67	0
+230	-67	0
+231	-67	0
+232	-67	0
+233	-67	0
+234	-67	0
+235	-67	0
+236	-67	0
+237	-67	0
+238	-67	0
+239	-67	0
+240	-67	0
+241	-67	0
+242	-67	0
+243	-67	0
+244	-67	0
+245	-67	0
+246	-67	0
+247	-67	0
+248	-67	0
+249	-67	0
+250	-67	0
+251	-67	0
+252	-67	0
+253	-67	0
+254	-67	0
+255	-67	0
+256	-67	0
+257	-67	0
+258	-67	0
+259	-67	0
+260	-67	0
+261	-67	0
+262	-67	0
+263	-67	0
+264	-67	0
+265	-67	0
+266	-67	0
+267	-67	0
+268	-67	0
+269	-67	0
+270	-67	0
+271	-67	0
+272	-67	0
+273	-67	0
+274	-67	0
+275	-67	0
+276	-67	0
+277	-67	0
+278	-67	0
+279	-67	0
+280	-67	0
+281	-67	0
+282	-67	0
+283	-67	0
+284	-67	0
+285	-67	0
+286	-67	0
+287	-67	0
+288	-67	0
+289	-67	0
+290	-67	0
+291	-67	0
+292	-67	0
+293	-67	0
+294	-67	0
+295	-67	0
+296	-67	0
+297	-67	0
+298	-67	0
+299	-67	0
+300	-67	0
+301	-67	0
+302	-67	0
+303	-67	0
+304	-67	0
+305	-67	0
+306	-67	0
+307	-67	0
+308	-67	0
+309	-67	0
+310	-67	0
+311	-67	0
+312	-67	0
+313	-67	0
+314	-67	0
+315	-67	0
+316	-67	0
+317	-67	0
+318	-67	0
+319	-67	0
+320	-67	0
+321	-67	0
+322	-67	0
+323	-67	0
+324	-67	0
+325	-67	0
+326	-67	0
+327	-67	0
+328	-67	0
+329	-67	0
+330	-67	0
+331	-67	0
+332	-67	0
+333	-67	0
+334	-67	0
+335	-67	0
+336	-67	0
+337	-67	0
+338	-67	0
+339	-67	0
+340	-67	0
+341	-67	0
+342	-67	0
+343	-67	0
+344	-67	0
+345	-67	0
+346	-67	0
+347	-67	0
+348	-67	0
+349	-67	0
+350	-67	0
+351	-67	0
+352	-67	0
+353	-67	0
+354	-67	0
+355	-67	0
+356	-67	0
+357	-67	0
+358	-67	0
+359	-67	0
+360	-67	0
+0	-66.5	0
+1	-66.5	0
+2	-66.5	0
+3	-66.5	0
+4	-66.5	0
+5	-66.5	0
+6	-66.5	0
+7	-66.5	0
+8	-66.5	0
+9	-66.5	0
+10	-66.5	0
+11	-66.5	0
+12	-66.5	0
+13	-66.5	0
+14	-66.5	0
+15	-66.5	0
+16	-66.5	0
+17	-66.5	0
+18	-66.5	0
+19	-66.5	0
+20	-66.5	0
+21	-66.5	0
+22	-66.5	0
+23	-66.5	0
+24	-66.5	0
+25	-66.5	0
+26	-66.5	0
+27	-66.5	0
+28	-66.5	0
+29	-66.5	0
+30	-66.5	0
+31	-66.5	0
+32	-66.5	0
+33	-66.5	0
+34	-66.5	0
+35	-66.5	0
+36	-66.5	0
+37	-66.5	0
+38	-66.5	0
+39	-66.5	0
+40	-66.5	0
+41	-66.5	0
+42	-66.5	0
+43	-66.5	0
+44	-66.5	0
+45	-66.5	0
+46	-66.5	0
+47	-66.5	0
+48	-66.5	0
+49	-66.5	0
+50	-66.5	0
+51	-66.5	0
+52	-66.5	0
+53	-66.5	0
+54	-66.5	0
+55	-66.5	0
+56	-66.5	0
+57	-66.5	0
+58	-66.5	0
+59	-66.5	0
+60	-66.5	0
+61	-66.5	0
+62	-66.5	0
+63	-66.5	0
+64	-66.5	0
+65	-66.5	0
+66	-66.5	0
+67	-66.5	0
+68	-66.5	0
+69	-66.5	0
+70	-66.5	0
+71	-66.5	0
+72	-66.5	0
+73	-66.5	0
+74	-66.5	0
+75	-66.5	0
+76	-66.5	0
+77	-66.5	0
+78	-66.5	0
+79	-66.5	0
+80	-66.5	0
+81	-66.5	0
+82	-66.5	0
+83	-66.5	0
+84	-66.5	0
+85	-66.5	0
+86	-66.5	0
+87	-66.5	0
+88	-66.5	0
+89	-66.5	0
+90	-66.5	0
+91	-66.5	0
+92	-66.5	0
+93	-66.5	0
+94	-66.5	0
+95	-66.5	0
+96	-66.5	0
+97	-66.5	0
+98	-66.5	0
+99	-66.5	0
+100	-66.5	0
+101	-66.5	0
+102	-66.5	0
+103	-66.5	0
+104	-66.5	0
+105	-66.5	0
+106	-66.5	0
+107	-66.5	0
+108	-66.5	0
+109	-66.5	0
+110	-66.5	0
+111	-66.5	0
+112	-66.5	0
+113	-66.5	0
+114	-66.5	0
+115	-66.5	0
+116	-66.5	0
+117	-66.5	0
+118	-66.5	0
+119	-66.5	0
+120	-66.5	0
+121	-66.5	0
+122	-66.5	0
+123	-66.5	0
+124	-66.5	0
+125	-66.5	0
+126	-66.5	0
+127	-66.5	0
+128	-66.5	0
+129	-66.5	0
+130	-66.5	0
+131	-66.5	0
+132	-66.5	0
+133	-66.5	0
+134	-66.5	0
+135	-66.5	0
+136	-66.5	0
+137	-66.5	0
+138	-66.5	0
+139	-66.5	0
+140	-66.5	0
+141	-66.5	0
+142	-66.5	0
+143	-66.5	0
+144	-66.5	0
+145	-66.5	0
+146	-66.5	0
+147	-66.5	0
+148	-66.5	0
+149	-66.5	0
+150	-66.5	0
+151	-66.5	0
+152	-66.5	0
+153	-66.5	0
+154	-66.5	0
+155	-66.5	0
+156	-66.5	0
+157	-66.5	0
+158	-66.5	0
+159	-66.5	0
+160	-66.5	0
+161	-66.5	0
+162	-66.5	0
+163	-66.5	0
+164	-66.5	0
+165	-66.5	0
+166	-66.5	0
+167	-66.5	0
+168	-66.5	0
+169	-66.5	0
+170	-66.5	0
+171	-66.5	0
+172	-66.5	0
+173	-66.5	0
+174	-66.5	0
+175	-66.5	0
+176	-66.5	0
+177	-66.5	0
+178	-66.5	0
+179	-66.5	0
+180	-66.5	0
+181	-66.5	0
+182	-66.5	0
+183	-66.5	0
+184	-66.5	0
+185	-66.5	0
+186	-66.5	0
+187	-66.5	0
+188	-66.5	0
+189	-66.5	0
+190	-66.5	0
+191	-66.5	0
+192	-66.5	0
+193	-66.5	0
+194	-66.5	0
+195	-66.5	0
+196	-66.5	0
+197	-66.5	0
+198	-66.5	0
+199	-66.5	0
+200	-66.5	0
+201	-66.5	0
+202	-66.5	0
+203	-66.5	0
+204	-66.5	0
+205	-66.5	0
+206	-66.5	0
+207	-66.5	0
+208	-66.5	0
+209	-66.5	0
+210	-66.5	0
+211	-66.5	0
+212	-66.5	0
+213	-66.5	0
+214	-66.5	0
+215	-66.5	0
+216	-66.5	0
+217	-66.5	0
+218	-66.5	0
+219	-66.5	0
+220	-66.5	0
+221	-66.5	0
+222	-66.5	0
+223	-66.5	0
+224	-66.5	0
+225	-66.5	0
+226	-66.5	0
+227	-66.5	0
+228	-66.5	0
+229	-66.5	0
+230	-66.5	0
+231	-66.5	0
+232	-66.5	0
+233	-66.5	0
+234	-66.5	0
+235	-66.5	0
+236	-66.5	0
+237	-66.5	0
+238	-66.5	0
+239	-66.5	0
+240	-66.5	0
+241	-66.5	0
+242	-66.5	0
+243	-66.5	0
+244	-66.5	0
+245	-66.5	0
+246	-66.5	0
+247	-66.5	0
+248	-66.5	0
+249	-66.5	0
+250	-66.5	0
+251	-66.5	0
+252	-66.5	0
+253	-66.5	0
+254	-66.5	0
+255	-66.5	0
+256	-66.5	0
+257	-66.5	0
+258	-66.5	0
+259	-66.5	0
+260	-66.5	0
+261	-66.5	0
+262	-66.5	0
+263	-66.5	0
+264	-66.5	0
+265	-66.5	0
+266	-66.5	0
+267	-66.5	0
+268	-66.5	0
+269	-66.5	0
+270	-66.5	0
+271	-66.5	0
+272	-66.5	0
+273	-66.5	0
+274	-66.5	0
+275	-66.5	0
+276	-66.5	0
+277	-66.5	0
+278	-66.5	0
+279	-66.5	0
+280	-66.5	0
+281	-66.5	0
+282	-66.5	0
+283	-66.5	0
+284	-66.5	0
+285	-66.5	0
+286	-66.5	0
+287	-66.5	0
+288	-66.5	0
+289	-66.5	0
+290	-66.5	0
+291	-66.5	0
+292	-66.5	0
+293	-66.5	0
+294	-66.5	0
+295	-66.5	0
+296	-66.5	0
+297	-66.5	0
+298	-66.5	0
+299	-66.5	0
+300	-66.5	0
+301	-66.5	0
+302	-66.5	0
+303	-66.5	0
+304	-66.5	0
+305	-66.5	0
+306	-66.5	0
+307	-66.5	0
+308	-66.5	0
+309	-66.5	0
+310	-66.5	0
+311	-66.5	0
+312	-66.5	0
+313	-66.5	0
+314	-66.5	0
+315	-66.5	0
+316	-66.5	0
+317	-66.5	0
+318	-66.5	0
+319	-66.5	0
+320	-66.5	0
+321	-66.5	0
+322	-66.5	0
+323	-66.5	0
+324	-66.5	0
+325	-66.5	0
+326	-66.5	0
+327	-66.5	0
+328	-66.5	0
+329	-66.5	0
+330	-66.5	0
+331	-66.5	0
+332	-66.5	0
+333	-66.5	0
+334	-66.5	0
+335	-66.5	0
+336	-66.5	0
+337	-66.5	0
+338	-66.5	0
+339	-66.5	0
+340	-66.5	0
+341	-66.5	0
+342	-66.5	0
+343	-66.5	0
+344	-66.5	0
+345	-66.5	0
+346	-66.5	0
+347	-66.5	0
+348	-66.5	0
+349	-66.5	0
+350	-66.5	0
+351	-66.5	0
+352	-66.5	0
+353	-66.5	0
+354	-66.5	0
+355	-66.5	0
+356	-66.5	0
+357	-66.5	0
+358	-66.5	0
+359	-66.5	0
+360	-66.5	0
+0	-66	0
+1	-66	0
+2	-66	0
+3	-66	0
+4	-66	0
+5	-66	0
+6	-66	0
+7	-66	0
+8	-66	0
+9	-66	0
+10	-66	0
+11	-66	0
+12	-66	0
+13	-66	0
+14	-66	0
+15	-66	0
+16	-66	0
+17	-66	0
+18	-66	0
+19	-66	0
+20	-66	0
+21	-66	0
+22	-66	0
+23	-66	0
+24	-66	0
+25	-66	0
+26	-66	0
+27	-66	0
+28	-66	0
+29	-66	0
+30	-66	0
+31	-66	0
+32	-66	0
+33	-66	0
+34	-66	0
+35	-66	0
+36	-66	0
+37	-66	0
+38	-66	0
+39	-66	0
+40	-66	0
+41	-66	0
+42	-66	0
+43	-66	0
+44	-66	0
+45	-66	0
+46	-66	0
+47	-66	0
+48	-66	0
+49	-66	0
+50	-66	0
+51	-66	0
+52	-66	0
+53	-66	0
+54	-66	0
+55	-66	0
+56	-66	0
+57	-66	0
+58	-66	0
+59	-66	0
+60	-66	0
+61	-66	0
+62	-66	0
+63	-66	0
+64	-66	0
+65	-66	0
+66	-66	0
+67	-66	0
+68	-66	0
+69	-66	0
+70	-66	0
+71	-66	0
+72	-66	0
+73	-66	0
+74	-66	0
+75	-66	0
+76	-66	0
+77	-66	0
+78	-66	0
+79	-66	0
+80	-66	0
+81	-66	0
+82	-66	0
+83	-66	0
+84	-66	0
+85	-66	0
+86	-66	0
+87	-66	0
+88	-66	0
+89	-66	0
+90	-66	0
+91	-66	0
+92	-66	0
+93	-66	0
+94	-66	0
+95	-66	0
+96	-66	0
+97	-66	0
+98	-66	0
+99	-66	0
+100	-66	0
+101	-66	0
+102	-66	0
+103	-66	0
+104	-66	0
+105	-66	0
+106	-66	0
+107	-66	0
+108	-66	0
+109	-66	0
+110	-66	0
+111	-66	0
+112	-66	0
+113	-66	0
+114	-66	0
+115	-66	0
+116	-66	0
+117	-66	0
+118	-66	0
+119	-66	0
+120	-66	0
+121	-66	0
+122	-66	0
+123	-66	0
+124	-66	0
+125	-66	0
+126	-66	0
+127	-66	0
+128	-66	0
+129	-66	0
+130	-66	0
+131	-66	0
+132	-66	0
+133	-66	0
+134	-66	0
+135	-66	0
+136	-66	0
+137	-66	0
+138	-66	0
+139	-66	0
+140	-66	0
+141	-66	0
+142	-66	0
+143	-66	0
+144	-66	0
+145	-66	0
+146	-66	0
+147	-66	0
+148	-66	0
+149	-66	0
+150	-66	0
+151	-66	0
+152	-66	0
+153	-66	0
+154	-66	0
+155	-66	0
+156	-66	0
+157	-66	0
+158	-66	0
+159	-66	0
+160	-66	0
+161	-66	0
+162	-66	0
+163	-66	0
+164	-66	0
+165	-66	0
+166	-66	0
+167	-66	0
+168	-66	0
+169	-66	0
+170	-66	0
+171	-66	0
+172	-66	0
+173	-66	0
+174	-66	0
+175	-66	0
+176	-66	0
+177	-66	0
+178	-66	0
+179	-66	0
+180	-66	0
+181	-66	0
+182	-66	0
+183	-66	0
+184	-66	0
+185	-66	0
+186	-66	0
+187	-66	0
+188	-66	0
+189	-66	0
+190	-66	0
+191	-66	0
+192	-66	0
+193	-66	0
+194	-66	0
+195	-66	0
+196	-66	0
+197	-66	0
+198	-66	0
+199	-66	0
+200	-66	0
+201	-66	0
+202	-66	0
+203	-66	0
+204	-66	0
+205	-66	0
+206	-66	0
+207	-66	0
+208	-66	0
+209	-66	0
+210	-66	0
+211	-66	0
+212	-66	0
+213	-66	0
+214	-66	0
+215	-66	0
+216	-66	0
+217	-66	0
+218	-66	0
+219	-66	0
+220	-66	0
+221	-66	0
+222	-66	0
+223	-66	0
+224	-66	0
+225	-66	0
+226	-66	0
+227	-66	0
+228	-66	0
+229	-66	0
+230	-66	0
+231	-66	0
+232	-66	0
+233	-66	0
+234	-66	0
+235	-66	0
+236	-66	0
+237	-66	0
+238	-66	0
+239	-66	0
+240	-66	0
+241	-66	0
+242	-66	0
+243	-66	0
+244	-66	0
+245	-66	0
+246	-66	0
+247	-66	0
+248	-66	0
+249	-66	0
+250	-66	0
+251	-66	0
+252	-66	0
+253	-66	0
+254	-66	0
+255	-66	0
+256	-66	0
+257	-66	0
+258	-66	0
+259	-66	0
+260	-66	0
+261	-66	0
+262	-66	0
+263	-66	0
+264	-66	0
+265	-66	0
+266	-66	0
+267	-66	0
+268	-66	0
+269	-66	0
+270	-66	0
+271	-66	0
+272	-66	0
+273	-66	0
+274	-66	0
+275	-66	0
+276	-66	0
+277	-66	0
+278	-66	0
+279	-66	0
+280	-66	0
+281	-66	0
+282	-66	0
+283	-66	0
+284	-66	0
+285	-66	0
+286	-66	0
+287	-66	0
+288	-66	0
+289	-66	0
+290	-66	0
+291	-66	0
+292	-66	0
+293	-66	0
+294	-66	0
+295	-66	0
+296	-66	0
+297	-66	0
+298	-66	0
+299	-66	0
+300	-66	0
+301	-66	0
+302	-66	0
+303	-66	0
+304	-66	0
+305	-66	0
+306	-66	0
+307	-66	0
+308	-66	0
+309	-66	0
+310	-66	0
+311	-66	0
+312	-66	0
+313	-66	0
+314	-66	0
+315	-66	0
+316	-66	0
+317	-66	0
+318	-66	0
+319	-66	0
+320	-66	0
+321	-66	0
+322	-66	0
+323	-66	0
+324	-66	0
+325	-66	0
+326	-66	0
+327	-66	0
+328	-66	0
+329	-66	0
+330	-66	0
+331	-66	0
+332	-66	0
+333	-66	0
+334	-66	0
+335	-66	0
+336	-66	0
+337	-66	0
+338	-66	0
+339	-66	0
+340	-66	0
+341	-66	0
+342	-66	0
+343	-66	0
+344	-66	0
+345	-66	0
+346	-66	0
+347	-66	0
+348	-66	0
+349	-66	0
+350	-66	0
+351	-66	0
+352	-66	0
+353	-66	0
+354	-66	0
+355	-66	0
+356	-66	0
+357	-66	0
+358	-66	0
+359	-66	0
+360	-66	0
+0	-65.5	0
+1	-65.5	0
+2	-65.5	0
+3	-65.5	0
+4	-65.5	0
+5	-65.5	0
+6	-65.5	0
+7	-65.5	0
+8	-65.5	0
+9	-65.5	0
+10	-65.5	0
+11	-65.5	0
+12	-65.5	0
+13	-65.5	0
+14	-65.5	0
+15	-65.5	0
+16	-65.5	0
+17	-65.5	0
+18	-65.5	0
+19	-65.5	0
+20	-65.5	0
+21	-65.5	0
+22	-65.5	0
+23	-65.5	0
+24	-65.5	0
+25	-65.5	0
+26	-65.5	0
+27	-65.5	0
+28	-65.5	0
+29	-65.5	0
+30	-65.5	0
+31	-65.5	0
+32	-65.5	0
+33	-65.5	0
+34	-65.5	0
+35	-65.5	0
+36	-65.5	0
+37	-65.5	0
+38	-65.5	0
+39	-65.5	0
+40	-65.5	0
+41	-65.5	0
+42	-65.5	0
+43	-65.5	0
+44	-65.5	0
+45	-65.5	0
+46	-65.5	0
+47	-65.5	0
+48	-65.5	0
+49	-65.5	0
+50	-65.5	0
+51	-65.5	0
+52	-65.5	0
+53	-65.5	0
+54	-65.5	0
+55	-65.5	0
+56	-65.5	0
+57	-65.5	0
+58	-65.5	0
+59	-65.5	0
+60	-65.5	0
+61	-65.5	0
+62	-65.5	0
+63	-65.5	0
+64	-65.5	0
+65	-65.5	0
+66	-65.5	0
+67	-65.5	0
+68	-65.5	0
+69	-65.5	0
+70	-65.5	0
+71	-65.5	0
+72	-65.5	0
+73	-65.5	0
+74	-65.5	0
+75	-65.5	0
+76	-65.5	0
+77	-65.5	0
+78	-65.5	0
+79	-65.5	0
+80	-65.5	0
+81	-65.5	0
+82	-65.5	0
+83	-65.5	0
+84	-65.5	0
+85	-65.5	0
+86	-65.5	0
+87	-65.5	0
+88	-65.5	0
+89	-65.5	0
+90	-65.5	0
+91	-65.5	0
+92	-65.5	0
+93	-65.5	0
+94	-65.5	0
+95	-65.5	0
+96	-65.5	0
+97	-65.5	0
+98	-65.5	0
+99	-65.5	0
+100	-65.5	0
+101	-65.5	0
+102	-65.5	0
+103	-65.5	0
+104	-65.5	0
+105	-65.5	0
+106	-65.5	0
+107	-65.5	0
+108	-65.5	0
+109	-65.5	0
+110	-65.5	0
+111	-65.5	0
+112	-65.5	0
+113	-65.5	0
+114	-65.5	0
+115	-65.5	0
+116	-65.5	0
+117	-65.5	0
+118	-65.5	0
+119	-65.5	0
+120	-65.5	0
+121	-65.5	0
+122	-65.5	0
+123	-65.5	0
+124	-65.5	0
+125	-65.5	0
+126	-65.5	0
+127	-65.5	0
+128	-65.5	0
+129	-65.5	0
+130	-65.5	0
+131	-65.5	0
+132	-65.5	0
+133	-65.5	0
+134	-65.5	0
+135	-65.5	0
+136	-65.5	0
+137	-65.5	0
+138	-65.5	0
+139	-65.5	0
+140	-65.5	0
+141	-65.5	0
+142	-65.5	0
+143	-65.5	0
+144	-65.5	0
+145	-65.5	0
+146	-65.5	0
+147	-65.5	0
+148	-65.5	0
+149	-65.5	0
+150	-65.5	0
+151	-65.5	0
+152	-65.5	0
+153	-65.5	0
+154	-65.5	0
+155	-65.5	0
+156	-65.5	0
+157	-65.5	0
+158	-65.5	0
+159	-65.5	0
+160	-65.5	0
+161	-65.5	0
+162	-65.5	0
+163	-65.5	0
+164	-65.5	0
+165	-65.5	0
+166	-65.5	0
+167	-65.5	0
+168	-65.5	0
+169	-65.5	0
+170	-65.5	0
+171	-65.5	0
+172	-65.5	0
+173	-65.5	0
+174	-65.5	0
+175	-65.5	0
+176	-65.5	0
+177	-65.5	0
+178	-65.5	0
+179	-65.5	0
+180	-65.5	0
+181	-65.5	0
+182	-65.5	0
+183	-65.5	0
+184	-65.5	0
+185	-65.5	0
+186	-65.5	0
+187	-65.5	0
+188	-65.5	0
+189	-65.5	0
+190	-65.5	0
+191	-65.5	0
+192	-65.5	0
+193	-65.5	0
+194	-65.5	0
+195	-65.5	0
+196	-65.5	0
+197	-65.5	0
+198	-65.5	0
+199	-65.5	0
+200	-65.5	0
+201	-65.5	0
+202	-65.5	0
+203	-65.5	0
+204	-65.5	0
+205	-65.5	0
+206	-65.5	0
+207	-65.5	0
+208	-65.5	0
+209	-65.5	0
+210	-65.5	0
+211	-65.5	0
+212	-65.5	0
+213	-65.5	0
+214	-65.5	0
+215	-65.5	0
+216	-65.5	0
+217	-65.5	0
+218	-65.5	0
+219	-65.5	0
+220	-65.5	0
+221	-65.5	0
+222	-65.5	0
+223	-65.5	0
+224	-65.5	0
+225	-65.5	0
+226	-65.5	0
+227	-65.5	0
+228	-65.5	0
+229	-65.5	0
+230	-65.5	0
+231	-65.5	0
+232	-65.5	0
+233	-65.5	0
+234	-65.5	0
+235	-65.5	0
+236	-65.5	0
+237	-65.5	0
+238	-65.5	0
+239	-65.5	0
+240	-65.5	0
+241	-65.5	0
+242	-65.5	0
+243	-65.5	0
+244	-65.5	0
+245	-65.5	0
+246	-65.5	0
+247	-65.5	0
+248	-65.5	0
+249	-65.5	0
+250	-65.5	0
+251	-65.5	0
+252	-65.5	0
+253	-65.5	0
+254	-65.5	0
+255	-65.5	0
+256	-65.5	0
+257	-65.5	0
+258	-65.5	0
+259	-65.5	0
+260	-65.5	0
+261	-65.5	0
+262	-65.5	0
+263	-65.5	0
+264	-65.5	0
+265	-65.5	0
+266	-65.5	0
+267	-65.5	0
+268	-65.5	0
+269	-65.5	0
+270	-65.5	0
+271	-65.5	0
+272	-65.5	0
+273	-65.5	0
+274	-65.5	0
+275	-65.5	0
+276	-65.5	0
+277	-65.5	0
+278	-65.5	0
+279	-65.5	0
+280	-65.5	0
+281	-65.5	0
+282	-65.5	0
+283	-65.5	0
+284	-65.5	0
+285	-65.5	0
+286	-65.5	0
+287	-65.5	0
+288	-65.5	0
+289	-65.5	0
+290	-65.5	0
+291	-65.5	0
+292	-65.5	0
+293	-65.5	0
+294	-65.5	0
+295	-65.5	0
+296	-65.5	0
+297	-65.5	0
+298	-65.5	0
+299	-65.5	0
+300	-65.5	0
+301	-65.5	0
+302	-65.5	0
+303	-65.5	0
+304	-65.5	0
+305	-65.5	0
+306	-65.5	0
+307	-65.5	0
+308	-65.5	0
+309	-65.5	0
+310	-65.5	0
+311	-65.5	0
+312	-65.5	0
+313	-65.5	0
+314	-65.5	0
+315	-65.5	0
+316	-65.5	0
+317	-65.5	0
+318	-65.5	0
+319	-65.5	0
+320	-65.5	0
+321	-65.5	0
+322	-65.5	0
+323	-65.5	0
+324	-65.5	0
+325	-65.5	0
+326	-65.5	0
+327	-65.5	0
+328	-65.5	0
+329	-65.5	0
+330	-65.5	0
+331	-65.5	0
+332	-65.5	0
+333	-65.5	0
+334	-65.5	0
+335	-65.5	0
+336	-65.5	0
+337	-65.5	0
+338	-65.5	0
+339	-65.5	0
+340	-65.5	0
+341	-65.5	0
+342	-65.5	0
+343	-65.5	0
+344	-65.5	0
+345	-65.5	0
+346	-65.5	0
+347	-65.5	0
+348	-65.5	0
+349	-65.5	0
+350	-65.5	0
+351	-65.5	0
+352	-65.5	0
+353	-65.5	0
+354	-65.5	0
+355	-65.5	0
+356	-65.5	0
+357	-65.5	0
+358	-65.5	0
+359	-65.5	0
+360	-65.5	0
+0	-65	0
+1	-65	0
+2	-65	0
+3	-65	0
+4	-65	0
+5	-65	0
+6	-65	0
+7	-65	0
+8	-65	0
+9	-65	0
+10	-65	0
+11	-65	0
+12	-65	0
+13	-65	0
+14	-65	0
+15	-65	0
+16	-65	0
+17	-65	0
+18	-65	0
+19	-65	0
+20	-65	0
+21	-65	0
+22	-65	0
+23	-65	0
+24	-65	0
+25	-65	0
+26	-65	0
+27	-65	0
+28	-65	0
+29	-65	0
+30	-65	0
+31	-65	0
+32	-65	0
+33	-65	0
+34	-65	0
+35	-65	0
+36	-65	0
+37	-65	0
+38	-65	0
+39	-65	0
+40	-65	0
+41	-65	0
+42	-65	0
+43	-65	0
+44	-65	0
+45	-65	0
+46	-65	0
+47	-65	0
+48	-65	0
+49	-65	0
+50	-65	0
+51	-65	0
+52	-65	0
+53	-65	0
+54	-65	0
+55	-65	0
+56	-65	0
+57	-65	0
+58	-65	0
+59	-65	0
+60	-65	0
+61	-65	0
+62	-65	0
+63	-65	0
+64	-65	0
+65	-65	0
+66	-65	0
+67	-65	0
+68	-65	0
+69	-65	0
+70	-65	0
+71	-65	0
+72	-65	0
+73	-65	0
+74	-65	0
+75	-65	0
+76	-65	0
+77	-65	0
+78	-65	0
+79	-65	0
+80	-65	0
+81	-65	0
+82	-65	0
+83	-65	0
+84	-65	0
+85	-65	0
+86	-65	0
+87	-65	0
+88	-65	0
+89	-65	0
+90	-65	0
+91	-65	0
+92	-65	0
+93	-65	0
+94	-65	0
+95	-65	0
+96	-65	0
+97	-65	0
+98	-65	0
+99	-65	0
+100	-65	0
+101	-65	0
+102	-65	0
+103	-65	0
+104	-65	0
+105	-65	0
+106	-65	0
+107	-65	0
+108	-65	0
+109	-65	0
+110	-65	0
+111	-65	0
+112	-65	0
+113	-65	0
+114	-65	0
+115	-65	0
+116	-65	0
+117	-65	0
+118	-65	0
+119	-65	0
+120	-65	0
+121	-65	0
+122	-65	0
+123	-65	0
+124	-65	0
+125	-65	0
+126	-65	0
+127	-65	0
+128	-65	0
+129	-65	0
+130	-65	0
+131	-65	0
+132	-65	0
+133	-65	0
+134	-65	0
+135	-65	0
+136	-65	0
+137	-65	0
+138	-65	0
+139	-65	0
+140	-65	0
+141	-65	0
+142	-65	0
+143	-65	0
+144	-65	0
+145	-65	0
+146	-65	0
+147	-65	0
+148	-65	0
+149	-65	0
+150	-65	0
+151	-65	0
+152	-65	0
+153	-65	0
+154	-65	0
+155	-65	0
+156	-65	0
+157	-65	0
+158	-65	0
+159	-65	0
+160	-65	0
+161	-65	0
+162	-65	0
+163	-65	0
+164	-65	0
+165	-65	0
+166	-65	0
+167	-65	0
+168	-65	0
+169	-65	0
+170	-65	0
+171	-65	0
+172	-65	0
+173	-65	0
+174	-65	0
+175	-65	0
+176	-65	0
+177	-65	0
+178	-65	0
+179	-65	0
+180	-65	0
+181	-65	0
+182	-65	0
+183	-65	0
+184	-65	0
+185	-65	0
+186	-65	0
+187	-65	0
+188	-65	0
+189	-65	0
+190	-65	0
+191	-65	0
+192	-65	0
+193	-65	0
+194	-65	0
+195	-65	0
+196	-65	0
+197	-65	0
+198	-65	0
+199	-65	0
+200	-65	0
+201	-65	0
+202	-65	0
+203	-65	0
+204	-65	0
+205	-65	0
+206	-65	0
+207	-65	0
+208	-65	0
+209	-65	0
+210	-65	0
+211	-65	0
+212	-65	0
+213	-65	0
+214	-65	0
+215	-65	0
+216	-65	0
+217	-65	0
+218	-65	0
+219	-65	0
+220	-65	0
+221	-65	0
+222	-65	0
+223	-65	0
+224	-65	0
+225	-65	0
+226	-65	0
+227	-65	0
+228	-65	0
+229	-65	0
+230	-65	0
+231	-65	0
+232	-65	0
+233	-65	0
+234	-65	0
+235	-65	0
+236	-65	0
+237	-65	0
+238	-65	0
+239	-65	0
+240	-65	0
+241	-65	0
+242	-65	0
+243	-65	0
+244	-65	0
+245	-65	0
+246	-65	0
+247	-65	0
+248	-65	0
+249	-65	0
+250	-65	0
+251	-65	0
+252	-65	0
+253	-65	0
+254	-65	0
+255	-65	0
+256	-65	0
+257	-65	0
+258	-65	0
+259	-65	0
+260	-65	0
+261	-65	0
+262	-65	0
+263	-65	0
+264	-65	0
+265	-65	0
+266	-65	0
+267	-65	0
+268	-65	0
+269	-65	0
+270	-65	0
+271	-65	0
+272	-65	0
+273	-65	0
+274	-65	0
+275	-65	0
+276	-65	0
+277	-65	0
+278	-65	0
+279	-65	0
+280	-65	0
+281	-65	0
+282	-65	0
+283	-65	0
+284	-65	0
+285	-65	0
+286	-65	0
+287	-65	0
+288	-65	0
+289	-65	0
+290	-65	0
+291	-65	0
+292	-65	0
+293	-65	0
+294	-65	0
+295	-65	0
+296	-65	0
+297	-65	0
+298	-65	0
+299	-65	0
+300	-65	0
+301	-65	0
+302	-65	0
+303	-65	0
+304	-65	0
+305	-65	0
+306	-65	0
+307	-65	0
+308	-65	0
+309	-65	0
+310	-65	0
+311	-65	0
+312	-65	0
+313	-65	0
+314	-65	0
+315	-65	0
+316	-65	0
+317	-65	0
+318	-65	0
+319	-65	0
+320	-65	0
+321	-65	0
+322	-65	0
+323	-65	0
+324	-65	0
+325	-65	0
+326	-65	0
+327	-65	0
+328	-65	0
+329	-65	0
+330	-65	0
+331	-65	0
+332	-65	0
+333	-65	0
+334	-65	0
+335	-65	0
+336	-65	0
+337	-65	0
+338	-65	0
+339	-65	0
+340	-65	0
+341	-65	0
+342	-65	0
+343	-65	0
+344	-65	0
+345	-65	0
+346	-65	0
+347	-65	0
+348	-65	0
+349	-65	0
+350	-65	0
+351	-65	0
+352	-65	0
+353	-65	0
+354	-65	0
+355	-65	0
+356	-65	0
+357	-65	0
+358	-65	0
+359	-65	0
+360	-65	0
+0	-64.5	0
+1	-64.5	0
+2	-64.5	0
+3	-64.5	0
+4	-64.5	0
+5	-64.5	0
+6	-64.5	0
+7	-64.5	0
+8	-64.5	0
+9	-64.5	0
+10	-64.5	0
+11	-64.5	0
+12	-64.5	0
+13	-64.5	0
+14	-64.5	0
+15	-64.5	0
+16	-64.5	0
+17	-64.5	0
+18	-64.5	0
+19	-64.5	0
+20	-64.5	0
+21	-64.5	0
+22	-64.5	0
+23	-64.5	0
+24	-64.5	0
+25	-64.5	0
+26	-64.5	0
+27	-64.5	0
+28	-64.5	0
+29	-64.5	0
+30	-64.5	0
+31	-64.5	0
+32	-64.5	0
+33	-64.5	0
+34	-64.5	0
+35	-64.5	0
+36	-64.5	0
+37	-64.5	0
+38	-64.5	0
+39	-64.5	0
+40	-64.5	0
+41	-64.5	0
+42	-64.5	0
+43	-64.5	0
+44	-64.5	0
+45	-64.5	0
+46	-64.5	0
+47	-64.5	0
+48	-64.5	0
+49	-64.5	0
+50	-64.5	0
+51	-64.5	0
+52	-64.5	0
+53	-64.5	0
+54	-64.5	0
+55	-64.5	0
+56	-64.5	0
+57	-64.5	0
+58	-64.5	0
+59	-64.5	0
+60	-64.5	0
+61	-64.5	0
+62	-64.5	0
+63	-64.5	0
+64	-64.5	0
+65	-64.5	0
+66	-64.5	0
+67	-64.5	0
+68	-64.5	0
+69	-64.5	0
+70	-64.5	0
+71	-64.5	0
+72	-64.5	0
+73	-64.5	0
+74	-64.5	0
+75	-64.5	0
+76	-64.5	0
+77	-64.5	0
+78	-64.5	0
+79	-64.5	0
+80	-64.5	0
+81	-64.5	0
+82	-64.5	0
+83	-64.5	0
+84	-64.5	0
+85	-64.5	0
+86	-64.5	0
+87	-64.5	0
+88	-64.5	0
+89	-64.5	0
+90	-64.5	0
+91	-64.5	0
+92	-64.5	0
+93	-64.5	0
+94	-64.5	0
+95	-64.5	0
+96	-64.5	0
+97	-64.5	0
+98	-64.5	0
+99	-64.5	0
+100	-64.5	0
+101	-64.5	0
+102	-64.5	0
+103	-64.5	0
+104	-64.5	0
+105	-64.5	0
+106	-64.5	0
+107	-64.5	0
+108	-64.5	0
+109	-64.5	0
+110	-64.5	0
+111	-64.5	0
+112	-64.5	0
+113	-64.5	0
+114	-64.5	0
+115	-64.5	0
+116	-64.5	0
+117	-64.5	0
+118	-64.5	0
+119	-64.5	0
+120	-64.5	0
+121	-64.5	0
+122	-64.5	0
+123	-64.5	0
+124	-64.5	0
+125	-64.5	0
+126	-64.5	0
+127	-64.5	0
+128	-64.5	0
+129	-64.5	0
+130	-64.5	0
+131	-64.5	0
+132	-64.5	0
+133	-64.5	0
+134	-64.5	0
+135	-64.5	0
+136	-64.5	0
+137	-64.5	0
+138	-64.5	0
+139	-64.5	0
+140	-64.5	0
+141	-64.5	0
+142	-64.5	0
+143	-64.5	0
+144	-64.5	0
+145	-64.5	0
+146	-64.5	0
+147	-64.5	0
+148	-64.5	0
+149	-64.5	0
+150	-64.5	0
+151	-64.5	0
+152	-64.5	0
+153	-64.5	0
+154	-64.5	0
+155	-64.5	0
+156	-64.5	0
+157	-64.5	0
+158	-64.5	0
+159	-64.5	0
+160	-64.5	0
+161	-64.5	0
+162	-64.5	0
+163	-64.5	0
+164	-64.5	0
+165	-64.5	0
+166	-64.5	0
+167	-64.5	0
+168	-64.5	0
+169	-64.5	0
+170	-64.5	0
+171	-64.5	0
+172	-64.5	0
+173	-64.5	0
+174	-64.5	0
+175	-64.5	0
+176	-64.5	0
+177	-64.5	0
+178	-64.5	0
+179	-64.5	0
+180	-64.5	0
+181	-64.5	0
+182	-64.5	0
+183	-64.5	0
+184	-64.5	0
+185	-64.5	0
+186	-64.5	0
+187	-64.5	0
+188	-64.5	0
+189	-64.5	0
+190	-64.5	0
+191	-64.5	0
+192	-64.5	0
+193	-64.5	0
+194	-64.5	0
+195	-64.5	0
+196	-64.5	0
+197	-64.5	0
+198	-64.5	0
+199	-64.5	0
+200	-64.5	0
+201	-64.5	0
+202	-64.5	0
+203	-64.5	0
+204	-64.5	0
+205	-64.5	0
+206	-64.5	0
+207	-64.5	0
+208	-64.5	0
+209	-64.5	0
+210	-64.5	0
+211	-64.5	0
+212	-64.5	0
+213	-64.5	0
+214	-64.5	0
+215	-64.5	0
+216	-64.5	0
+217	-64.5	0
+218	-64.5	0
+219	-64.5	0
+220	-64.5	0
+221	-64.5	0
+222	-64.5	0
+223	-64.5	0
+224	-64.5	0
+225	-64.5	0
+226	-64.5	0
+227	-64.5	0
+228	-64.5	0
+229	-64.5	0
+230	-64.5	0
+231	-64.5	0
+232	-64.5	0
+233	-64.5	0
+234	-64.5	0
+235	-64.5	0
+236	-64.5	0
+237	-64.5	0
+238	-64.5	0
+239	-64.5	0
+240	-64.5	0
+241	-64.5	0
+242	-64.5	0
+243	-64.5	0
+244	-64.5	0
+245	-64.5	0
+246	-64.5	0
+247	-64.5	0
+248	-64.5	0
+249	-64.5	0
+250	-64.5	0
+251	-64.5	0
+252	-64.5	0
+253	-64.5	0
+254	-64.5	0
+255	-64.5	0
+256	-64.5	0
+257	-64.5	0
+258	-64.5	0
+259	-64.5	0
+260	-64.5	0
+261	-64.5	0
+262	-64.5	0
+263	-64.5	0
+264	-64.5	0
+265	-64.5	0
+266	-64.5	0
+267	-64.5	0
+268	-64.5	0
+269	-64.5	0
+270	-64.5	0
+271	-64.5	0
+272	-64.5	0
+273	-64.5	0
+274	-64.5	0
+275	-64.5	0
+276	-64.5	0
+277	-64.5	0
+278	-64.5	0
+279	-64.5	0
+280	-64.5	0
+281	-64.5	0
+282	-64.5	0
+283	-64.5	0
+284	-64.5	0
+285	-64.5	0
+286	-64.5	0
+287	-64.5	0
+288	-64.5	0
+289	-64.5	0
+290	-64.5	0
+291	-64.5	0
+292	-64.5	0
+293	-64.5	0
+294	-64.5	0
+295	-64.5	0
+296	-64.5	0
+297	-64.5	0
+298	-64.5	0
+299	-64.5	0
+300	-64.5	0
+301	-64.5	0
+302	-64.5	0
+303	-64.5	0
+304	-64.5	0
+305	-64.5	0
+306	-64.5	0
+307	-64.5	0
+308	-64.5	0
+309	-64.5	0
+310	-64.5	0
+311	-64.5	0
+312	-64.5	0
+313	-64.5	0
+314	-64.5	0
+315	-64.5	0
+316	-64.5	0
+317	-64.5	0
+318	-64.5	0
+319	-64.5	0
+320	-64.5	0
+321	-64.5	0
+322	-64.5	0
+323	-64.5	0
+324	-64.5	0
+325	-64.5	0
+326	-64.5	0
+327	-64.5	0
+328	-64.5	0
+329	-64.5	0
+330	-64.5	0
+331	-64.5	0
+332	-64.5	0
+333	-64.5	0
+334	-64.5	0
+335	-64.5	0
+336	-64.5	0
+337	-64.5	0
+338	-64.5	0
+339	-64.5	0
+340	-64.5	0
+341	-64.5	0
+342	-64.5	0
+343	-64.5	0
+344	-64.5	0
+345	-64.5	0
+346	-64.5	0
+347	-64.5	0
+348	-64.5	0
+349	-64.5	0
+350	-64.5	0
+351	-64.5	0
+352	-64.5	0
+353	-64.5	0
+354	-64.5	0
+355	-64.5	0
+356	-64.5	0
+357	-64.5	0
+358	-64.5	0
+359	-64.5	0
+360	-64.5	0
+0	-64	0
+1	-64	0
+2	-64	0
+3	-64	0
+4	-64	0
+5	-64	0
+6	-64	0
+7	-64	0
+8	-64	0
+9	-64	0
+10	-64	0
+11	-64	0
+12	-64	0
+13	-64	0
+14	-64	0
+15	-64	0
+16	-64	0
+17	-64	0
+18	-64	0
+19	-64	0
+20	-64	0
+21	-64	0
+22	-64	0
+23	-64	0
+24	-64	0
+25	-64	0
+26	-64	0
+27	-64	0
+28	-64	0
+29	-64	0
+30	-64	0
+31	-64	0
+32	-64	0
+33	-64	0
+34	-64	0
+35	-64	0
+36	-64	0
+37	-64	0
+38	-64	0
+39	-64	0
+40	-64	0
+41	-64	0
+42	-64	0
+43	-64	0
+44	-64	0
+45	-64	0
+46	-64	0
+47	-64	0
+48	-64	0
+49	-64	0
+50	-64	0
+51	-64	0
+52	-64	0
+53	-64	0
+54	-64	0
+55	-64	0
+56	-64	0
+57	-64	0
+58	-64	0
+59	-64	0
+60	-64	0
+61	-64	0
+62	-64	0
+63	-64	0
+64	-64	0
+65	-64	0
+66	-64	0
+67	-64	0
+68	-64	0
+69	-64	0
+70	-64	0
+71	-64	0
+72	-64	0
+73	-64	0
+74	-64	0
+75	-64	0
+76	-64	0
+77	-64	0
+78	-64	0
+79	-64	0
+80	-64	0
+81	-64	0
+82	-64	0
+83	-64	0
+84	-64	0
+85	-64	0
+86	-64	0
+87	-64	0
+88	-64	0
+89	-64	0
+90	-64	0
+91	-64	0
+92	-64	0
+93	-64	0
+94	-64	0
+95	-64	0
+96	-64	0
+97	-64	0
+98	-64	0
+99	-64	0
+100	-64	0
+101	-64	0
+102	-64	0
+103	-64	0
+104	-64	0
+105	-64	0
+106	-64	0
+107	-64	0
+108	-64	0
+109	-64	0
+110	-64	0
+111	-64	0
+112	-64	0
+113	-64	0
+114	-64	0
+115	-64	0
+116	-64	0
+117	-64	0
+118	-64	0
+119	-64	0
+120	-64	0
+121	-64	0
+122	-64	0
+123	-64	0
+124	-64	0
+125	-64	0
+126	-64	0
+127	-64	0
+128	-64	0
+129	-64	0
+130	-64	0
+131	-64	0
+132	-64	0
+133	-64	0
+134	-64	0
+135	-64	0
+136	-64	0
+137	-64	0
+138	-64	0
+139	-64	0
+140	-64	0
+141	-64	0
+142	-64	0
+143	-64	0
+144	-64	0
+145	-64	0
+146	-64	0
+147	-64	0
+148	-64	0
+149	-64	0
+150	-64	0
+151	-64	0
+152	-64	0
+153	-64	0
+154	-64	0
+155	-64	0
+156	-64	0
+157	-64	0
+158	-64	0
+159	-64	0
+160	-64	0
+161	-64	0
+162	-64	0
+163	-64	0
+164	-64	0
+165	-64	0
+166	-64	0
+167	-64	0
+168	-64	0
+169	-64	0
+170	-64	0
+171	-64	0
+172	-64	0
+173	-64	0
+174	-64	0
+175	-64	0
+176	-64	0
+177	-64	0
+178	-64	0
+179	-64	0
+180	-64	0
+181	-64	0
+182	-64	0
+183	-64	0
+184	-64	0
+185	-64	0
+186	-64	0
+187	-64	0
+188	-64	0
+189	-64	0
+190	-64	0
+191	-64	0
+192	-64	0
+193	-64	0
+194	-64	0
+195	-64	0
+196	-64	0
+197	-64	0
+198	-64	0
+199	-64	0
+200	-64	0
+201	-64	0
+202	-64	0
+203	-64	0
+204	-64	0
+205	-64	0
+206	-64	0
+207	-64	0
+208	-64	0
+209	-64	0
+210	-64	0
+211	-64	0
+212	-64	0
+213	-64	0
+214	-64	0
+215	-64	0
+216	-64	0
+217	-64	0
+218	-64	0
+219	-64	0
+220	-64	0
+221	-64	0
+222	-64	0
+223	-64	0
+224	-64	0
+225	-64	0
+226	-64	0
+227	-64	0
+228	-64	0
+229	-64	0
+230	-64	0
+231	-64	0
+232	-64	0
+233	-64	0
+234	-64	0
+235	-64	0
+236	-64	0
+237	-64	0
+238	-64	0
+239	-64	0
+240	-64	0
+241	-64	0
+242	-64	0
+243	-64	0
+244	-64	0
+245	-64	0
+246	-64	0
+247	-64	0
+248	-64	0
+249	-64	0
+250	-64	0
+251	-64	0
+252	-64	0
+253	-64	0
+254	-64	0
+255	-64	0
+256	-64	0
+257	-64	0
+258	-64	0
+259	-64	0
+260	-64	0
+261	-64	0
+262	-64	0
+263	-64	0
+264	-64	0
+265	-64	0
+266	-64	0
+267	-64	0
+268	-64	0
+269	-64	0
+270	-64	0
+271	-64	0
+272	-64	0
+273	-64	0
+274	-64	0
+275	-64	0
+276	-64	0
+277	-64	0
+278	-64	0
+279	-64	0
+280	-64	0
+281	-64	0
+282	-64	0
+283	-64	0
+284	-64	0
+285	-64	0
+286	-64	0
+287	-64	0
+288	-64	0
+289	-64	0
+290	-64	0
+291	-64	0
+292	-64	0
+293	-64	0
+294	-64	0
+295	-64	0
+296	-64	0
+297	-64	0
+298	-64	0
+299	-64	0
+300	-64	0
+301	-64	0
+302	-64	0
+303	-64	0
+304	-64	0
+305	-64	0
+306	-64	0
+307	-64	0
+308	-64	0
+309	-64	0
+310	-64	0
+311	-64	0
+312	-64	0
+313	-64	0
+314	-64	0
+315	-64	0
+316	-64	0
+317	-64	0
+318	-64	0
+319	-64	0
+320	-64	0
+321	-64	0
+322	-64	0
+323	-64	0
+324	-64	0
+325	-64	0
+326	-64	0
+327	-64	0
+328	-64	0
+329	-64	0
+330	-64	0
+331	-64	0
+332	-64	0
+333	-64	0
+334	-64	0
+335	-64	0
+336	-64	0
+337	-64	0
+338	-64	0
+339	-64	0
+340	-64	0
+341	-64	0
+342	-64	0
+343	-64	0
+344	-64	0
+345	-64	0
+346	-64	0
+347	-64	0
+348	-64	0
+349	-64	0
+350	-64	0
+351	-64	0
+352	-64	0
+353	-64	0
+354	-64	0
+355	-64	0
+356	-64	0
+357	-64	0
+358	-64	0
+359	-64	0
+360	-64	0
+0	-63.5	0
+1	-63.5	0
+2	-63.5	0
+3	-63.5	0
+4	-63.5	0
+5	-63.5	0
+6	-63.5	0
+7	-63.5	0
+8	-63.5	0
+9	-63.5	0
+10	-63.5	0
+11	-63.5	0
+12	-63.5	0
+13	-63.5	0
+14	-63.5	0
+15	-63.5	0
+16	-63.5	0
+17	-63.5	0
+18	-63.5	0
+19	-63.5	0
+20	-63.5	0
+21	-63.5	0
+22	-63.5	0
+23	-63.5	0
+24	-63.5	0
+25	-63.5	0
+26	-63.5	0
+27	-63.5	0
+28	-63.5	0
+29	-63.5	0
+30	-63.5	0
+31	-63.5	0
+32	-63.5	0
+33	-63.5	0
+34	-63.5	0
+35	-63.5	0
+36	-63.5	0
+37	-63.5	0
+38	-63.5	0
+39	-63.5	0
+40	-63.5	0
+41	-63.5	0
+42	-63.5	0
+43	-63.5	0
+44	-63.5	0
+45	-63.5	0
+46	-63.5	0
+47	-63.5	0
+48	-63.5	0
+49	-63.5	0
+50	-63.5	0
+51	-63.5	0
+52	-63.5	0
+53	-63.5	0
+54	-63.5	0
+55	-63.5	0
+56	-63.5	0
+57	-63.5	0
+58	-63.5	0
+59	-63.5	0
+60	-63.5	0
+61	-63.5	0
+62	-63.5	0
+63	-63.5	0
+64	-63.5	0
+65	-63.5	0
+66	-63.5	0
+67	-63.5	0
+68	-63.5	0
+69	-63.5	0
+70	-63.5	0
+71	-63.5	0
+72	-63.5	0
+73	-63.5	0
+74	-63.5	0
+75	-63.5	0
+76	-63.5	0
+77	-63.5	0
+78	-63.5	0
+79	-63.5	0
+80	-63.5	0
+81	-63.5	0
+82	-63.5	0
+83	-63.5	0
+84	-63.5	0
+85	-63.5	0
+86	-63.5	0
+87	-63.5	0
+88	-63.5	0
+89	-63.5	0
+90	-63.5	0
+91	-63.5	0
+92	-63.5	0
+93	-63.5	0
+94	-63.5	0
+95	-63.5	0
+96	-63.5	0
+97	-63.5	0
+98	-63.5	0
+99	-63.5	0
+100	-63.5	0
+101	-63.5	0
+102	-63.5	0
+103	-63.5	0
+104	-63.5	0
+105	-63.5	0
+106	-63.5	0
+107	-63.5	0
+108	-63.5	0
+109	-63.5	0
+110	-63.5	0
+111	-63.5	0
+112	-63.5	0
+113	-63.5	0
+114	-63.5	0
+115	-63.5	0
+116	-63.5	0
+117	-63.5	0
+118	-63.5	0
+119	-63.5	0
+120	-63.5	0
+121	-63.5	0
+122	-63.5	0
+123	-63.5	0
+124	-63.5	0
+125	-63.5	0
+126	-63.5	0
+127	-63.5	0
+128	-63.5	0
+129	-63.5	0
+130	-63.5	0
+131	-63.5	0
+132	-63.5	0
+133	-63.5	0
+134	-63.5	0
+135	-63.5	0
+136	-63.5	0
+137	-63.5	0
+138	-63.5	0
+139	-63.5	0
+140	-63.5	0
+141	-63.5	0
+142	-63.5	0
+143	-63.5	0
+144	-63.5	0
+145	-63.5	0
+146	-63.5	0
+147	-63.5	0
+148	-63.5	0
+149	-63.5	0
+150	-63.5	0
+151	-63.5	0
+152	-63.5	0
+153	-63.5	0
+154	-63.5	0
+155	-63.5	0
+156	-63.5	0
+157	-63.5	0
+158	-63.5	0
+159	-63.5	0
+160	-63.5	0
+161	-63.5	0
+162	-63.5	0
+163	-63.5	0
+164	-63.5	0
+165	-63.5	0
+166	-63.5	0
+167	-63.5	0
+168	-63.5	0
+169	-63.5	0
+170	-63.5	0
+171	-63.5	0
+172	-63.5	0
+173	-63.5	0
+174	-63.5	0
+175	-63.5	0
+176	-63.5	0
+177	-63.5	0
+178	-63.5	0
+179	-63.5	0
+180	-63.5	0
+181	-63.5	0
+182	-63.5	0
+183	-63.5	0
+184	-63.5	0
+185	-63.5	0
+186	-63.5	0
+187	-63.5	0
+188	-63.5	0
+189	-63.5	0
+190	-63.5	0
+191	-63.5	0
+192	-63.5	0
+193	-63.5	0
+194	-63.5	0
+195	-63.5	0
+196	-63.5	0
+197	-63.5	0
+198	-63.5	0
+199	-63.5	0
+200	-63.5	0
+201	-63.5	0
+202	-63.5	0
+203	-63.5	0
+204	-63.5	0
+205	-63.5	0
+206	-63.5	0
+207	-63.5	0
+208	-63.5	0
+209	-63.5	0
+210	-63.5	0
+211	-63.5	0
+212	-63.5	0
+213	-63.5	0
+214	-63.5	0
+215	-63.5	0
+216	-63.5	0
+217	-63.5	0
+218	-63.5	0
+219	-63.5	0
+220	-63.5	0
+221	-63.5	0
+222	-63.5	0
+223	-63.5	0
+224	-63.5	0
+225	-63.5	0
+226	-63.5	0
+227	-63.5	0
+228	-63.5	0
+229	-63.5	0
+230	-63.5	0
+231	-63.5	0
+232	-63.5	0
+233	-63.5	0
+234	-63.5	0
+235	-63.5	0
+236	-63.5	0
+237	-63.5	0
+238	-63.5	0
+239	-63.5	0
+240	-63.5	0
+241	-63.5	0
+242	-63.5	0
+243	-63.5	0
+244	-63.5	0
+245	-63.5	0
+246	-63.5	0
+247	-63.5	0
+248	-63.5	0
+249	-63.5	0
+250	-63.5	0
+251	-63.5	0
+252	-63.5	0
+253	-63.5	0
+254	-63.5	0
+255	-63.5	0
+256	-63.5	0
+257	-63.5	0
+258	-63.5	0
+259	-63.5	0
+260	-63.5	0
+261	-63.5	0
+262	-63.5	0
+263	-63.5	0
+264	-63.5	0
+265	-63.5	0
+266	-63.5	0
+267	-63.5	0
+268	-63.5	0
+269	-63.5	0
+270	-63.5	0
+271	-63.5	0
+272	-63.5	0
+273	-63.5	0
+274	-63.5	0
+275	-63.5	0
+276	-63.5	0
+277	-63.5	0
+278	-63.5	0
+279	-63.5	0
+280	-63.5	0
+281	-63.5	0
+282	-63.5	0
+283	-63.5	0
+284	-63.5	0
+285	-63.5	0
+286	-63.5	0
+287	-63.5	0
+288	-63.5	0
+289	-63.5	0
+290	-63.5	0
+291	-63.5	0
+292	-63.5	0
+293	-63.5	0
+294	-63.5	0
+295	-63.5	0
+296	-63.5	0
+297	-63.5	0
+298	-63.5	0
+299	-63.5	0
+300	-63.5	0
+301	-63.5	0
+302	-63.5	0
+303	-63.5	0
+304	-63.5	0
+305	-63.5	0
+306	-63.5	0
+307	-63.5	0
+308	-63.5	0
+309	-63.5	0
+310	-63.5	0
+311	-63.5	0
+312	-63.5	0
+313	-63.5	0
+314	-63.5	0
+315	-63.5	0
+316	-63.5	0
+317	-63.5	0
+318	-63.5	0
+319	-63.5	0
+320	-63.5	0
+321	-63.5	0
+322	-63.5	0
+323	-63.5	0
+324	-63.5	0
+325	-63.5	0
+326	-63.5	0
+327	-63.5	0
+328	-63.5	0
+329	-63.5	0
+330	-63.5	0
+331	-63.5	0
+332	-63.5	0
+333	-63.5	0
+334	-63.5	0
+335	-63.5	0
+336	-63.5	0
+337	-63.5	0
+338	-63.5	0
+339	-63.5	0
+340	-63.5	0
+341	-63.5	0
+342	-63.5	0
+343	-63.5	0
+344	-63.5	0
+345	-63.5	0
+346	-63.5	0
+347	-63.5	0
+348	-63.5	0
+349	-63.5	0
+350	-63.5	0
+351	-63.5	0
+352	-63.5	0
+353	-63.5	0
+354	-63.5	0
+355	-63.5	0
+356	-63.5	0
+357	-63.5	0
+358	-63.5	0
+359	-63.5	0
+360	-63.5	0
+0	-63	0
+1	-63	0
+2	-63	0
+3	-63	0
+4	-63	0
+5	-63	0
+6	-63	0
+7	-63	0
+8	-63	0
+9	-63	0
+10	-63	0
+11	-63	0
+12	-63	0
+13	-63	0
+14	-63	0
+15	-63	0
+16	-63	0
+17	-63	0
+18	-63	0
+19	-63	0
+20	-63	0
+21	-63	0
+22	-63	0
+23	-63	0
+24	-63	0
+25	-63	0
+26	-63	0
+27	-63	0
+28	-63	0
+29	-63	0
+30	-63	0
+31	-63	0
+32	-63	0
+33	-63	0
+34	-63	0
+35	-63	0
+36	-63	0
+37	-63	0
+38	-63	0
+39	-63	0
+40	-63	0
+41	-63	0
+42	-63	0
+43	-63	0
+44	-63	0
+45	-63	0
+46	-63	0
+47	-63	0
+48	-63	0
+49	-63	0
+50	-63	0
+51	-63	0
+52	-63	0
+53	-63	0
+54	-63	0
+55	-63	0
+56	-63	0
+57	-63	0
+58	-63	0
+59	-63	0
+60	-63	0
+61	-63	0
+62	-63	0
+63	-63	0
+64	-63	0
+65	-63	0
+66	-63	0
+67	-63	0
+68	-63	0
+69	-63	0
+70	-63	0
+71	-63	0
+72	-63	0
+73	-63	0
+74	-63	0
+75	-63	0
+76	-63	0
+77	-63	0
+78	-63	0
+79	-63	0
+80	-63	0
+81	-63	0
+82	-63	0
+83	-63	0
+84	-63	0
+85	-63	0
+86	-63	0
+87	-63	0
+88	-63	0
+89	-63	0
+90	-63	0
+91	-63	0
+92	-63	0
+93	-63	0
+94	-63	0
+95	-63	0
+96	-63	0
+97	-63	0
+98	-63	0
+99	-63	0
+100	-63	0
+101	-63	0
+102	-63	0
+103	-63	0
+104	-63	0
+105	-63	0
+106	-63	0
+107	-63	0
+108	-63	0
+109	-63	0
+110	-63	0
+111	-63	0
+112	-63	0
+113	-63	0
+114	-63	0
+115	-63	0
+116	-63	0
+117	-63	0
+118	-63	0
+119	-63	0
+120	-63	0
+121	-63	0
+122	-63	0
+123	-63	0
+124	-63	0
+125	-63	0
+126	-63	0
+127	-63	0
+128	-63	0
+129	-63	0
+130	-63	0
+131	-63	0
+132	-63	0
+133	-63	0
+134	-63	0
+135	-63	0
+136	-63	0
+137	-63	0
+138	-63	0
+139	-63	0
+140	-63	0
+141	-63	0
+142	-63	0
+143	-63	0
+144	-63	0
+145	-63	0
+146	-63	0
+147	-63	0
+148	-63	0
+149	-63	0
+150	-63	0
+151	-63	0
+152	-63	0
+153	-63	0
+154	-63	0
+155	-63	0
+156	-63	0
+157	-63	0
+158	-63	0
+159	-63	0
+160	-63	0
+161	-63	0
+162	-63	0
+163	-63	0
+164	-63	0
+165	-63	0
+166	-63	0
+167	-63	0
+168	-63	0
+169	-63	0
+170	-63	0
+171	-63	0
+172	-63	0
+173	-63	0
+174	-63	0
+175	-63	0
+176	-63	0
+177	-63	0
+178	-63	0
+179	-63	0
+180	-63	0
+181	-63	0
+182	-63	0
+183	-63	0
+184	-63	0
+185	-63	0
+186	-63	0
+187	-63	0
+188	-63	0
+189	-63	0
+190	-63	0
+191	-63	0
+192	-63	0
+193	-63	0
+194	-63	0
+195	-63	0
+196	-63	0
+197	-63	0
+198	-63	0
+199	-63	0
+200	-63	0
+201	-63	0
+202	-63	0
+203	-63	0
+204	-63	0
+205	-63	0
+206	-63	0
+207	-63	0
+208	-63	0
+209	-63	0
+210	-63	0
+211	-63	0
+212	-63	0
+213	-63	0
+214	-63	0
+215	-63	0
+216	-63	0
+217	-63	0
+218	-63	0
+219	-63	0
+220	-63	0
+221	-63	0
+222	-63	0
+223	-63	0
+224	-63	0
+225	-63	0
+226	-63	0
+227	-63	0
+228	-63	0
+229	-63	0
+230	-63	0
+231	-63	0
+232	-63	0
+233	-63	0
+234	-63	0
+235	-63	0
+236	-63	0
+237	-63	0
+238	-63	0
+239	-63	0
+240	-63	0
+241	-63	0
+242	-63	0
+243	-63	0
+244	-63	0
+245	-63	0
+246	-63	0
+247	-63	0
+248	-63	0
+249	-63	0
+250	-63	0
+251	-63	0
+252	-63	0
+253	-63	0
+254	-63	0
+255	-63	0
+256	-63	0
+257	-63	0
+258	-63	0
+259	-63	0
+260	-63	0
+261	-63	0
+262	-63	0
+263	-63	0
+264	-63	0
+265	-63	0
+266	-63	0
+267	-63	0
+268	-63	0
+269	-63	0
+270	-63	0
+271	-63	0
+272	-63	0
+273	-63	0
+274	-63	0
+275	-63	0
+276	-63	0
+277	-63	0
+278	-63	0
+279	-63	0
+280	-63	0
+281	-63	0
+282	-63	0
+283	-63	0
+284	-63	0
+285	-63	0
+286	-63	0
+287	-63	0
+288	-63	0
+289	-63	0
+290	-63	0
+291	-63	0
+292	-63	0
+293	-63	0
+294	-63	0
+295	-63	0
+296	-63	0
+297	-63	0
+298	-63	0
+299	-63	0
+300	-63	0
+301	-63	0
+302	-63	0
+303	-63	0
+304	-63	0
+305	-63	0
+306	-63	0
+307	-63	0
+308	-63	0
+309	-63	0
+310	-63	0
+311	-63	0
+312	-63	0
+313	-63	0
+314	-63	0
+315	-63	0
+316	-63	0
+317	-63	0
+318	-63	0
+319	-63	0
+320	-63	0
+321	-63	0
+322	-63	0
+323	-63	0
+324	-63	0
+325	-63	0
+326	-63	0
+327	-63	0
+328	-63	0
+329	-63	0
+330	-63	0
+331	-63	0
+332	-63	0
+333	-63	0
+334	-63	0
+335	-63	0
+336	-63	0
+337	-63	0
+338	-63	0
+339	-63	0
+340	-63	0
+341	-63	0
+342	-63	0
+343	-63	0
+344	-63	0
+345	-63	0
+346	-63	0
+347	-63	0
+348	-63	0
+349	-63	0
+350	-63	0
+351	-63	0
+352	-63	0
+353	-63	0
+354	-63	0
+355	-63	0
+356	-63	0
+357	-63	0
+358	-63	0
+359	-63	0
+360	-63	0
+0	-62.5	0
+1	-62.5	0
+2	-62.5	0
+3	-62.5	0
+4	-62.5	0
+5	-62.5	0
+6	-62.5	0
+7	-62.5	0
+8	-62.5	0
+9	-62.5	0
+10	-62.5	0
+11	-62.5	0
+12	-62.5	0
+13	-62.5	0
+14	-62.5	0
+15	-62.5	0
+16	-62.5	0
+17	-62.5	0
+18	-62.5	0
+19	-62.5	0
+20	-62.5	0
+21	-62.5	0
+22	-62.5	0
+23	-62.5	0
+24	-62.5	0
+25	-62.5	0
+26	-62.5	0
+27	-62.5	0
+28	-62.5	0
+29	-62.5	0
+30	-62.5	0
+31	-62.5	0
+32	-62.5	0
+33	-62.5	0
+34	-62.5	0
+35	-62.5	0
+36	-62.5	0
+37	-62.5	0
+38	-62.5	0
+39	-62.5	0
+40	-62.5	0
+41	-62.5	0
+42	-62.5	0
+43	-62.5	0
+44	-62.5	0
+45	-62.5	0
+46	-62.5	0
+47	-62.5	0
+48	-62.5	0
+49	-62.5	0
+50	-62.5	0
+51	-62.5	0
+52	-62.5	0
+53	-62.5	0
+54	-62.5	0
+55	-62.5	0
+56	-62.5	0
+57	-62.5	0
+58	-62.5	0
+59	-62.5	0
+60	-62.5	0
+61	-62.5	0
+62	-62.5	0
+63	-62.5	0
+64	-62.5	0
+65	-62.5	0
+66	-62.5	0
+67	-62.5	0
+68	-62.5	0
+69	-62.5	0
+70	-62.5	0
+71	-62.5	0
+72	-62.5	0
+73	-62.5	0
+74	-62.5	0
+75	-62.5	0
+76	-62.5	0
+77	-62.5	0
+78	-62.5	0
+79	-62.5	0
+80	-62.5	0
+81	-62.5	0
+82	-62.5	0
+83	-62.5	0
+84	-62.5	0
+85	-62.5	0
+86	-62.5	0
+87	-62.5	0
+88	-62.5	0
+89	-62.5	0
+90	-62.5	0
+91	-62.5	0
+92	-62.5	0
+93	-62.5	0
+94	-62.5	0
+95	-62.5	0
+96	-62.5	0
+97	-62.5	0
+98	-62.5	0
+99	-62.5	0
+100	-62.5	0
+101	-62.5	0
+102	-62.5	0
+103	-62.5	0
+104	-62.5	0
+105	-62.5	0
+106	-62.5	0
+107	-62.5	0
+108	-62.5	0
+109	-62.5	0
+110	-62.5	0
+111	-62.5	0
+112	-62.5	0
+113	-62.5	0
+114	-62.5	0
+115	-62.5	0
+116	-62.5	0
+117	-62.5	0
+118	-62.5	0
+119	-62.5	0
+120	-62.5	0
+121	-62.5	0
+122	-62.5	0
+123	-62.5	0
+124	-62.5	0
+125	-62.5	0
+126	-62.5	0
+127	-62.5	0
+128	-62.5	0
+129	-62.5	0
+130	-62.5	0
+131	-62.5	0
+132	-62.5	0
+133	-62.5	0
+134	-62.5	0
+135	-62.5	0
+136	-62.5	0
+137	-62.5	0
+138	-62.5	0
+139	-62.5	0
+140	-62.5	0
+141	-62.5	0
+142	-62.5	0
+143	-62.5	0
+144	-62.5	0
+145	-62.5	0
+146	-62.5	0
+147	-62.5	0
+148	-62.5	0
+149	-62.5	0
+150	-62.5	0
+151	-62.5	0
+152	-62.5	0
+153	-62.5	0
+154	-62.5	0
+155	-62.5	0
+156	-62.5	0
+157	-62.5	0
+158	-62.5	0
+159	-62.5	0
+160	-62.5	0
+161	-62.5	0
+162	-62.5	0
+163	-62.5	0
+164	-62.5	0
+165	-62.5	0
+166	-62.5	0
+167	-62.5	0
+168	-62.5	0
+169	-62.5	0
+170	-62.5	0
+171	-62.5	0
+172	-62.5	0
+173	-62.5	0
+174	-62.5	0
+175	-62.5	0
+176	-62.5	0
+177	-62.5	0
+178	-62.5	0
+179	-62.5	0
+180	-62.5	0
+181	-62.5	0
+182	-62.5	0
+183	-62.5	0
+184	-62.5	0
+185	-62.5	0
+186	-62.5	0
+187	-62.5	0
+188	-62.5	0
+189	-62.5	0
+190	-62.5	0
+191	-62.5	0
+192	-62.5	0
+193	-62.5	0
+194	-62.5	0
+195	-62.5	0
+196	-62.5	0
+197	-62.5	0
+198	-62.5	0
+199	-62.5	0
+200	-62.5	0
+201	-62.5	0
+202	-62.5	0
+203	-62.5	0
+204	-62.5	0
+205	-62.5	0
+206	-62.5	0
+207	-62.5	0
+208	-62.5	0
+209	-62.5	0
+210	-62.5	0
+211	-62.5	0
+212	-62.5	0
+213	-62.5	0
+214	-62.5	0
+215	-62.5	0
+216	-62.5	0
+217	-62.5	0
+218	-62.5	0
+219	-62.5	0
+220	-62.5	0
+221	-62.5	0
+222	-62.5	0
+223	-62.5	0
+224	-62.5	0
+225	-62.5	0
+226	-62.5	0
+227	-62.5	0
+228	-62.5	0
+229	-62.5	0
+230	-62.5	0
+231	-62.5	0
+232	-62.5	0
+233	-62.5	0
+234	-62.5	0
+235	-62.5	0
+236	-62.5	0
+237	-62.5	0
+238	-62.5	0
+239	-62.5	0
+240	-62.5	0
+241	-62.5	0
+242	-62.5	0
+243	-62.5	0
+244	-62.5	0
+245	-62.5	0
+246	-62.5	0
+247	-62.5	0
+248	-62.5	0
+249	-62.5	0
+250	-62.5	0
+251	-62.5	0
+252	-62.5	0
+253	-62.5	0
+254	-62.5	0
+255	-62.5	0
+256	-62.5	0
+257	-62.5	0
+258	-62.5	0
+259	-62.5	0
+260	-62.5	0
+261	-62.5	0
+262	-62.5	0
+263	-62.5	0
+264	-62.5	0
+265	-62.5	0
+266	-62.5	0
+267	-62.5	0
+268	-62.5	0
+269	-62.5	0
+270	-62.5	0
+271	-62.5	0
+272	-62.5	0
+273	-62.5	0
+274	-62.5	0
+275	-62.5	0
+276	-62.5	0
+277	-62.5	0
+278	-62.5	0
+279	-62.5	0
+280	-62.5	0
+281	-62.5	0
+282	-62.5	0
+283	-62.5	0
+284	-62.5	0
+285	-62.5	0
+286	-62.5	0
+287	-62.5	0
+288	-62.5	0
+289	-62.5	0
+290	-62.5	0
+291	-62.5	0
+292	-62.5	0
+293	-62.5	0
+294	-62.5	0
+295	-62.5	0
+296	-62.5	0
+297	-62.5	0
+298	-62.5	0
+299	-62.5	0
+300	-62.5	0
+301	-62.5	0
+302	-62.5	0
+303	-62.5	0
+304	-62.5	0
+305	-62.5	0
+306	-62.5	0
+307	-62.5	0
+308	-62.5	0
+309	-62.5	0
+310	-62.5	0
+311	-62.5	0
+312	-62.5	0
+313	-62.5	0
+314	-62.5	0
+315	-62.5	0
+316	-62.5	0
+317	-62.5	0
+318	-62.5	0
+319	-62.5	0
+320	-62.5	0
+321	-62.5	0
+322	-62.5	0
+323	-62.5	0
+324	-62.5	0
+325	-62.5	0
+326	-62.5	0
+327	-62.5	0
+328	-62.5	0
+329	-62.5	0
+330	-62.5	0
+331	-62.5	0
+332	-62.5	0
+333	-62.5	0
+334	-62.5	0
+335	-62.5	0
+336	-62.5	0
+337	-62.5	0
+338	-62.5	0
+339	-62.5	0
+340	-62.5	0
+341	-62.5	0
+342	-62.5	0
+343	-62.5	0
+344	-62.5	0
+345	-62.5	0
+346	-62.5	0
+347	-62.5	0
+348	-62.5	0
+349	-62.5	0
+350	-62.5	0
+351	-62.5	0
+352	-62.5	0
+353	-62.5	0
+354	-62.5	0
+355	-62.5	0
+356	-62.5	0
+357	-62.5	0
+358	-62.5	0
+359	-62.5	0
+360	-62.5	0
+0	-62	0
+1	-62	0
+2	-62	0
+3	-62	0
+4	-62	0
+5	-62	0
+6	-62	0
+7	-62	0
+8	-62	0
+9	-62	0
+10	-62	0
+11	-62	0
+12	-62	0
+13	-62	0
+14	-62	0
+15	-62	0
+16	-62	0
+17	-62	0
+18	-62	0
+19	-62	0
+20	-62	0
+21	-62	0
+22	-62	0
+23	-62	0
+24	-62	0
+25	-62	0
+26	-62	0
+27	-62	0
+28	-62	0
+29	-62	0
+30	-62	0
+31	-62	0
+32	-62	0
+33	-62	0
+34	-62	0
+35	-62	0
+36	-62	0
+37	-62	0
+38	-62	0
+39	-62	0
+40	-62	0
+41	-62	0
+42	-62	0
+43	-62	0
+44	-62	0
+45	-62	0
+46	-62	0
+47	-62	0
+48	-62	0
+49	-62	0
+50	-62	0
+51	-62	0
+52	-62	0
+53	-62	0
+54	-62	0
+55	-62	0
+56	-62	0
+57	-62	0
+58	-62	0
+59	-62	0
+60	-62	0
+61	-62	0
+62	-62	0
+63	-62	0
+64	-62	0
+65	-62	0
+66	-62	0
+67	-62	0
+68	-62	0
+69	-62	0
+70	-62	0
+71	-62	0
+72	-62	0
+73	-62	0
+74	-62	0
+75	-62	0
+76	-62	0
+77	-62	0
+78	-62	0
+79	-62	0
+80	-62	0
+81	-62	0
+82	-62	0
+83	-62	0
+84	-62	0
+85	-62	0
+86	-62	0
+87	-62	0
+88	-62	0
+89	-62	0
+90	-62	0
+91	-62	0
+92	-62	0
+93	-62	0
+94	-62	0
+95	-62	0
+96	-62	0
+97	-62	0
+98	-62	0
+99	-62	0
+100	-62	0
+101	-62	0
+102	-62	0
+103	-62	0
+104	-62	0
+105	-62	0
+106	-62	0
+107	-62	0
+108	-62	0
+109	-62	0
+110	-62	0
+111	-62	0
+112	-62	0
+113	-62	0
+114	-62	0
+115	-62	0
+116	-62	0
+117	-62	0
+118	-62	0
+119	-62	0
+120	-62	0
+121	-62	0
+122	-62	0
+123	-62	0
+124	-62	0
+125	-62	0
+126	-62	0
+127	-62	0
+128	-62	0
+129	-62	0
+130	-62	0
+131	-62	0
+132	-62	0
+133	-62	0
+134	-62	0
+135	-62	0
+136	-62	0
+137	-62	0
+138	-62	0
+139	-62	0
+140	-62	0
+141	-62	0
+142	-62	0
+143	-62	0
+144	-62	0
+145	-62	0
+146	-62	0
+147	-62	0
+148	-62	0
+149	-62	0
+150	-62	0
+151	-62	0
+152	-62	0
+153	-62	0
+154	-62	0
+155	-62	0
+156	-62	0
+157	-62	0
+158	-62	0
+159	-62	0
+160	-62	0
+161	-62	0
+162	-62	0
+163	-62	0
+164	-62	0
+165	-62	0
+166	-62	0
+167	-62	0
+168	-62	0
+169	-62	0
+170	-62	0
+171	-62	0
+172	-62	0
+173	-62	0
+174	-62	0
+175	-62	0
+176	-62	0
+177	-62	0
+178	-62	0
+179	-62	0
+180	-62	0
+181	-62	0
+182	-62	0
+183	-62	0
+184	-62	0
+185	-62	0
+186	-62	0
+187	-62	0
+188	-62	0
+189	-62	0
+190	-62	0
+191	-62	0
+192	-62	0
+193	-62	0
+194	-62	0
+195	-62	0
+196	-62	0
+197	-62	0
+198	-62	0
+199	-62	0
+200	-62	0
+201	-62	0
+202	-62	0
+203	-62	0
+204	-62	0
+205	-62	0
+206	-62	0
+207	-62	0
+208	-62	0
+209	-62	0
+210	-62	0
+211	-62	0
+212	-62	0
+213	-62	0
+214	-62	0
+215	-62	0
+216	-62	0
+217	-62	0
+218	-62	0
+219	-62	0
+220	-62	0
+221	-62	0
+222	-62	0
+223	-62	0
+224	-62	0
+225	-62	0
+226	-62	0
+227	-62	0
+228	-62	0
+229	-62	0
+230	-62	0
+231	-62	0
+232	-62	0
+233	-62	0
+234	-62	0
+235	-62	0
+236	-62	0
+237	-62	0
+238	-62	0
+239	-62	0
+240	-62	0
+241	-62	0
+242	-62	0
+243	-62	0
+244	-62	0
+245	-62	0
+246	-62	0
+247	-62	0
+248	-62	0
+249	-62	0
+250	-62	0
+251	-62	0
+252	-62	0
+253	-62	0
+254	-62	0
+255	-62	0
+256	-62	0
+257	-62	0
+258	-62	0
+259	-62	0
+260	-62	0
+261	-62	0
+262	-62	0
+263	-62	0
+264	-62	0
+265	-62	0
+266	-62	0
+267	-62	0
+268	-62	0
+269	-62	0
+270	-62	0
+271	-62	0
+272	-62	0
+273	-62	0
+274	-62	0
+275	-62	0
+276	-62	0
+277	-62	0
+278	-62	0
+279	-62	0
+280	-62	0
+281	-62	0
+282	-62	0
+283	-62	0
+284	-62	0
+285	-62	0
+286	-62	0
+287	-62	0
+288	-62	0
+289	-62	0
+290	-62	0
+291	-62	0
+292	-62	0
+293	-62	0
+294	-62	0
+295	-62	0
+296	-62	0
+297	-62	0
+298	-62	0
+299	-62	0
+300	-62	0
+301	-62	0
+302	-62	0
+303	-62	0
+304	-62	0
+305	-62	0
+306	-62	0
+307	-62	0
+308	-62	0
+309	-62	0
+310	-62	0
+311	-62	0
+312	-62	0
+313	-62	0
+314	-62	0
+315	-62	0
+316	-62	0
+317	-62	0
+318	-62	0
+319	-62	0
+320	-62	0
+321	-62	0
+322	-62	0
+323	-62	0
+324	-62	0
+325	-62	0
+326	-62	0
+327	-62	0
+328	-62	0
+329	-62	0
+330	-62	0
+331	-62	0
+332	-62	0
+333	-62	0
+334	-62	0
+335	-62	0
+336	-62	0
+337	-62	0
+338	-62	0
+339	-62	0
+340	-62	0
+341	-62	0
+342	-62	0
+343	-62	0
+344	-62	0
+345	-62	0
+346	-62	0
+347	-62	0
+348	-62	0
+349	-62	0
+350	-62	0
+351	-62	0
+352	-62	0
+353	-62	0
+354	-62	0
+355	-62	0
+356	-62	0
+357	-62	0
+358	-62	0
+359	-62	0
+360	-62	0
+0	-61.5	0
+1	-61.5	0
+2	-61.5	0
+3	-61.5	0
+4	-61.5	0
+5	-61.5	0
+6	-61.5	0
+7	-61.5	0
+8	-61.5	0
+9	-61.5	0
+10	-61.5	0
+11	-61.5	0
+12	-61.5	0
+13	-61.5	0
+14	-61.5	0
+15	-61.5	0
+16	-61.5	0
+17	-61.5	0
+18	-61.5	0
+19	-61.5	0
+20	-61.5	0
+21	-61.5	0
+22	-61.5	0
+23	-61.5	0
+24	-61.5	0
+25	-61.5	0
+26	-61.5	0
+27	-61.5	0
+28	-61.5	0
+29	-61.5	0
+30	-61.5	0
+31	-61.5	0
+32	-61.5	0
+33	-61.5	0
+34	-61.5	0
+35	-61.5	0
+36	-61.5	0
+37	-61.5	0
+38	-61.5	0
+39	-61.5	0
+40	-61.5	0
+41	-61.5	0
+42	-61.5	0
+43	-61.5	0
+44	-61.5	0
+45	-61.5	0
+46	-61.5	0
+47	-61.5	0
+48	-61.5	0
+49	-61.5	0
+50	-61.5	0
+51	-61.5	0
+52	-61.5	0
+53	-61.5	0
+54	-61.5	0
+55	-61.5	0
+56	-61.5	0
+57	-61.5	0
+58	-61.5	0
+59	-61.5	0
+60	-61.5	0
+61	-61.5	0
+62	-61.5	0
+63	-61.5	0
+64	-61.5	0
+65	-61.5	0
+66	-61.5	0
+67	-61.5	0
+68	-61.5	0
+69	-61.5	0
+70	-61.5	0
+71	-61.5	0
+72	-61.5	0
+73	-61.5	0
+74	-61.5	0
+75	-61.5	0
+76	-61.5	0
+77	-61.5	0
+78	-61.5	0
+79	-61.5	0
+80	-61.5	0
+81	-61.5	0
+82	-61.5	0
+83	-61.5	0
+84	-61.5	0
+85	-61.5	0
+86	-61.5	0
+87	-61.5	0
+88	-61.5	0
+89	-61.5	0
+90	-61.5	0
+91	-61.5	0
+92	-61.5	0
+93	-61.5	0
+94	-61.5	0
+95	-61.5	0
+96	-61.5	0
+97	-61.5	0
+98	-61.5	0
+99	-61.5	0
+100	-61.5	0
+101	-61.5	0
+102	-61.5	0
+103	-61.5	0
+104	-61.5	0
+105	-61.5	0
+106	-61.5	0
+107	-61.5	0
+108	-61.5	0
+109	-61.5	0
+110	-61.5	0
+111	-61.5	0
+112	-61.5	0
+113	-61.5	0
+114	-61.5	0
+115	-61.5	0
+116	-61.5	0
+117	-61.5	0
+118	-61.5	0
+119	-61.5	0
+120	-61.5	0
+121	-61.5	0
+122	-61.5	0
+123	-61.5	0
+124	-61.5	0
+125	-61.5	0
+126	-61.5	0
+127	-61.5	0
+128	-61.5	0
+129	-61.5	0
+130	-61.5	0
+131	-61.5	0
+132	-61.5	0
+133	-61.5	0
+134	-61.5	0
+135	-61.5	0
+136	-61.5	0
+137	-61.5	0
+138	-61.5	0
+139	-61.5	0
+140	-61.5	0
+141	-61.5	0
+142	-61.5	0
+143	-61.5	0
+144	-61.5	0
+145	-61.5	0
+146	-61.5	0
+147	-61.5	0
+148	-61.5	0
+149	-61.5	0
+150	-61.5	0
+151	-61.5	0
+152	-61.5	0
+153	-61.5	0
+154	-61.5	0
+155	-61.5	0
+156	-61.5	0
+157	-61.5	0
+158	-61.5	0
+159	-61.5	0
+160	-61.5	0
+161	-61.5	0
+162	-61.5	0
+163	-61.5	0
+164	-61.5	0
+165	-61.5	0
+166	-61.5	0
+167	-61.5	0
+168	-61.5	0
+169	-61.5	0
+170	-61.5	0
+171	-61.5	0
+172	-61.5	0
+173	-61.5	0
+174	-61.5	0
+175	-61.5	0
+176	-61.5	0
+177	-61.5	0
+178	-61.5	0
+179	-61.5	0
+180	-61.5	0
+181	-61.5	0
+182	-61.5	0
+183	-61.5	0
+184	-61.5	0
+185	-61.5	0
+186	-61.5	0
+187	-61.5	0
+188	-61.5	0
+189	-61.5	0
+190	-61.5	0
+191	-61.5	0
+192	-61.5	0
+193	-61.5	0
+194	-61.5	0
+195	-61.5	0
+196	-61.5	0
+197	-61.5	0
+198	-61.5	0
+199	-61.5	0
+200	-61.5	0
+201	-61.5	0
+202	-61.5	0
+203	-61.5	0
+204	-61.5	0
+205	-61.5	0
+206	-61.5	0
+207	-61.5	0
+208	-61.5	0
+209	-61.5	0
+210	-61.5	0
+211	-61.5	0
+212	-61.5	0
+213	-61.5	0
+214	-61.5	0
+215	-61.5	0
+216	-61.5	0
+217	-61.5	0
+218	-61.5	0
+219	-61.5	0
+220	-61.5	0
+221	-61.5	0
+222	-61.5	0
+223	-61.5	0
+224	-61.5	0
+225	-61.5	0
+226	-61.5	0
+227	-61.5	0
+228	-61.5	0
+229	-61.5	0
+230	-61.5	0
+231	-61.5	0
+232	-61.5	0
+233	-61.5	0
+234	-61.5	0
+235	-61.5	0
+236	-61.5	0
+237	-61.5	0
+238	-61.5	0
+239	-61.5	0
+240	-61.5	0
+241	-61.5	0
+242	-61.5	0
+243	-61.5	0
+244	-61.5	0
+245	-61.5	0
+246	-61.5	0
+247	-61.5	0
+248	-61.5	0
+249	-61.5	0
+250	-61.5	0
+251	-61.5	0
+252	-61.5	0
+253	-61.5	0
+254	-61.5	0
+255	-61.5	0
+256	-61.5	0
+257	-61.5	0
+258	-61.5	0
+259	-61.5	0
+260	-61.5	0
+261	-61.5	0
+262	-61.5	0
+263	-61.5	0
+264	-61.5	0
+265	-61.5	0
+266	-61.5	0
+267	-61.5	0
+268	-61.5	0
+269	-61.5	0
+270	-61.5	0
+271	-61.5	0
+272	-61.5	0
+273	-61.5	0
+274	-61.5	0
+275	-61.5	0
+276	-61.5	0
+277	-61.5	0
+278	-61.5	0
+279	-61.5	0
+280	-61.5	0
+281	-61.5	0
+282	-61.5	0
+283	-61.5	0
+284	-61.5	0
+285	-61.5	0
+286	-61.5	0
+287	-61.5	0
+288	-61.5	0
+289	-61.5	0
+290	-61.5	0
+291	-61.5	0
+292	-61.5	0
+293	-61.5	0
+294	-61.5	0
+295	-61.5	0
+296	-61.5	0
+297	-61.5	0
+298	-61.5	0
+299	-61.5	0
+300	-61.5	0
+301	-61.5	0
+302	-61.5	0
+303	-61.5	0
+304	-61.5	0
+305	-61.5	0
+306	-61.5	0
+307	-61.5	0
+308	-61.5	0
+309	-61.5	0
+310	-61.5	0
+311	-61.5	0
+312	-61.5	0
+313	-61.5	0
+314	-61.5	0
+315	-61.5	0
+316	-61.5	0
+317	-61.5	0
+318	-61.5	0
+319	-61.5	0
+320	-61.5	0
+321	-61.5	0
+322	-61.5	0
+323	-61.5	0
+324	-61.5	0
+325	-61.5	0
+326	-61.5	0
+327	-61.5	0
+328	-61.5	0
+329	-61.5	0
+330	-61.5	0
+331	-61.5	0
+332	-61.5	0
+333	-61.5	0
+334	-61.5	0
+335	-61.5	0
+336	-61.5	0
+337	-61.5	0
+338	-61.5	0
+339	-61.5	0
+340	-61.5	0
+341	-61.5	0
+342	-61.5	0
+343	-61.5	0
+344	-61.5	0
+345	-61.5	0
+346	-61.5	0
+347	-61.5	0
+348	-61.5	0
+349	-61.5	0
+350	-61.5	0
+351	-61.5	0
+352	-61.5	0
+353	-61.5	0
+354	-61.5	0
+355	-61.5	0
+356	-61.5	0
+357	-61.5	0
+358	-61.5	0
+359	-61.5	0
+360	-61.5	0
+0	-61	0
+1	-61	0
+2	-61	0
+3	-61	0
+4	-61	0
+5	-61	0
+6	-61	0
+7	-61	0
+8	-61	0
+9	-61	0
+10	-61	0
+11	-61	0
+12	-61	0
+13	-61	0
+14	-61	0
+15	-61	0
+16	-61	0
+17	-61	0
+18	-61	0
+19	-61	0
+20	-61	0
+21	-61	0
+22	-61	0
+23	-61	0
+24	-61	0
+25	-61	0
+26	-61	0
+27	-61	0
+28	-61	0
+29	-61	0
+30	-61	0
+31	-61	0
+32	-61	0
+33	-61	0
+34	-61	0
+35	-61	0
+36	-61	0
+37	-61	0
+38	-61	0
+39	-61	0
+40	-61	0
+41	-61	0
+42	-61	0
+43	-61	0
+44	-61	0
+45	-61	0
+46	-61	0
+47	-61	0
+48	-61	0
+49	-61	0
+50	-61	0
+51	-61	0
+52	-61	0
+53	-61	0
+54	-61	0
+55	-61	0
+56	-61	0
+57	-61	0
+58	-61	0
+59	-61	0
+60	-61	0
+61	-61	0
+62	-61	0
+63	-61	0
+64	-61	0
+65	-61	0
+66	-61	0
+67	-61	0
+68	-61	0
+69	-61	0
+70	-61	0
+71	-61	0
+72	-61	0
+73	-61	0
+74	-61	0
+75	-61	0
+76	-61	0
+77	-61	0
+78	-61	0
+79	-61	0
+80	-61	0
+81	-61	0
+82	-61	0
+83	-61	0
+84	-61	0
+85	-61	0
+86	-61	0
+87	-61	0
+88	-61	0
+89	-61	0
+90	-61	0
+91	-61	0
+92	-61	0
+93	-61	0
+94	-61	0
+95	-61	0
+96	-61	0
+97	-61	0
+98	-61	0
+99	-61	0
+100	-61	0
+101	-61	0
+102	-61	0
+103	-61	0
+104	-61	0
+105	-61	0
+106	-61	0
+107	-61	0
+108	-61	0
+109	-61	0
+110	-61	0
+111	-61	0
+112	-61	0
+113	-61	0
+114	-61	0
+115	-61	0
+116	-61	0
+117	-61	0
+118	-61	0
+119	-61	0
+120	-61	0
+121	-61	0
+122	-61	0
+123	-61	0
+124	-61	0
+125	-61	0
+126	-61	0
+127	-61	0
+128	-61	0
+129	-61	0
+130	-61	0
+131	-61	0
+132	-61	0
+133	-61	0
+134	-61	0
+135	-61	0
+136	-61	0
+137	-61	0
+138	-61	0
+139	-61	0
+140	-61	0
+141	-61	0
+142	-61	0
+143	-61	0
+144	-61	0
+145	-61	0
+146	-61	0
+147	-61	0
+148	-61	0
+149	-61	0
+150	-61	0
+151	-61	0
+152	-61	0
+153	-61	0
+154	-61	0
+155	-61	0
+156	-61	0
+157	-61	0
+158	-61	0
+159	-61	0
+160	-61	0
+161	-61	0
+162	-61	0
+163	-61	0
+164	-61	0
+165	-61	0
+166	-61	0
+167	-61	0
+168	-61	0
+169	-61	0
+170	-61	0
+171	-61	0
+172	-61	0
+173	-61	0
+174	-61	0
+175	-61	0
+176	-61	0
+177	-61	0
+178	-61	0
+179	-61	0
+180	-61	0
+181	-61	0
+182	-61	0
+183	-61	0
+184	-61	0
+185	-61	0
+186	-61	0
+187	-61	0
+188	-61	0
+189	-61	0
+190	-61	0
+191	-61	0
+192	-61	0
+193	-61	0
+194	-61	0
+195	-61	0
+196	-61	0
+197	-61	0
+198	-61	0
+199	-61	0
+200	-61	0
+201	-61	0
+202	-61	0
+203	-61	0
+204	-61	0
+205	-61	0
+206	-61	0
+207	-61	0
+208	-61	0
+209	-61	0
+210	-61	0
+211	-61	0
+212	-61	0
+213	-61	0
+214	-61	0
+215	-61	0
+216	-61	0
+217	-61	0
+218	-61	0
+219	-61	0
+220	-61	0
+221	-61	0
+222	-61	0
+223	-61	0
+224	-61	0
+225	-61	0
+226	-61	0
+227	-61	0
+228	-61	0
+229	-61	0
+230	-61	0
+231	-61	0
+232	-61	0
+233	-61	0
+234	-61	0
+235	-61	0
+236	-61	0
+237	-61	0
+238	-61	0
+239	-61	0
+240	-61	0
+241	-61	0
+242	-61	0
+243	-61	0
+244	-61	0
+245	-61	0
+246	-61	0
+247	-61	0
+248	-61	0
+249	-61	0
+250	-61	0
+251	-61	0
+252	-61	0
+253	-61	0
+254	-61	0
+255	-61	0
+256	-61	0
+257	-61	0
+258	-61	0
+259	-61	0
+260	-61	0
+261	-61	0
+262	-61	0
+263	-61	0
+264	-61	0
+265	-61	0
+266	-61	0
+267	-61	0
+268	-61	0
+269	-61	0
+270	-61	0
+271	-61	0
+272	-61	0
+273	-61	0
+274	-61	0
+275	-61	0
+276	-61	0
+277	-61	0
+278	-61	0
+279	-61	0
+280	-61	0
+281	-61	0
+282	-61	0
+283	-61	0
+284	-61	0
+285	-61	0
+286	-61	0
+287	-61	0
+288	-61	0
+289	-61	0
+290	-61	0
+291	-61	0
+292	-61	0
+293	-61	0
+294	-61	0
+295	-61	0
+296	-61	0
+297	-61	0
+298	-61	0
+299	-61	0
+300	-61	0
+301	-61	0
+302	-61	0
+303	-61	0
+304	-61	0
+305	-61	0
+306	-61	0
+307	-61	0
+308	-61	0
+309	-61	0
+310	-61	0
+311	-61	0
+312	-61	0
+313	-61	0
+314	-61	0
+315	-61	0
+316	-61	0
+317	-61	0
+318	-61	0
+319	-61	0
+320	-61	0
+321	-61	0
+322	-61	0
+323	-61	0
+324	-61	0
+325	-61	0
+326	-61	0
+327	-61	0
+328	-61	0
+329	-61	0
+330	-61	0
+331	-61	0
+332	-61	0
+333	-61	0
+334	-61	0
+335	-61	0
+336	-61	0
+337	-61	0
+338	-61	0
+339	-61	0
+340	-61	0
+341	-61	0
+342	-61	0
+343	-61	0
+344	-61	0
+345	-61	0
+346	-61	0
+347	-61	0
+348	-61	0
+349	-61	0
+350	-61	0
+351	-61	0
+352	-61	0
+353	-61	0
+354	-61	0
+355	-61	0
+356	-61	0
+357	-61	0
+358	-61	0
+359	-61	0
+360	-61	0
+0	-60.5	0
+1	-60.5	0
+2	-60.5	0
+3	-60.5	0
+4	-60.5	0
+5	-60.5	0
+6	-60.5	0
+7	-60.5	0
+8	-60.5	0
+9	-60.5	0
+10	-60.5	0
+11	-60.5	0
+12	-60.5	0
+13	-60.5	0
+14	-60.5	0
+15	-60.5	0
+16	-60.5	0
+17	-60.5	0
+18	-60.5	0
+19	-60.5	0
+20	-60.5	0
+21	-60.5	0
+22	-60.5	0
+23	-60.5	0
+24	-60.5	0
+25	-60.5	0
+26	-60.5	0
+27	-60.5	0
+28	-60.5	0
+29	-60.5	0
+30	-60.5	0
+31	-60.5	0
+32	-60.5	0
+33	-60.5	0
+34	-60.5	0
+35	-60.5	0
+36	-60.5	0
+37	-60.5	0
+38	-60.5	0
+39	-60.5	0
+40	-60.5	0
+41	-60.5	0
+42	-60.5	0
+43	-60.5	0
+44	-60.5	0
+45	-60.5	0
+46	-60.5	0
+47	-60.5	0
+48	-60.5	0
+49	-60.5	0
+50	-60.5	0
+51	-60.5	0
+52	-60.5	0
+53	-60.5	0
+54	-60.5	0
+55	-60.5	0
+56	-60.5	0
+57	-60.5	0
+58	-60.5	0
+59	-60.5	0
+60	-60.5	0
+61	-60.5	0
+62	-60.5	0
+63	-60.5	0
+64	-60.5	0
+65	-60.5	0
+66	-60.5	0
+67	-60.5	0
+68	-60.5	0
+69	-60.5	0
+70	-60.5	0
+71	-60.5	0
+72	-60.5	0
+73	-60.5	0
+74	-60.5	0
+75	-60.5	0
+76	-60.5	0
+77	-60.5	0
+78	-60.5	0
+79	-60.5	0
+80	-60.5	0
+81	-60.5	0
+82	-60.5	0
+83	-60.5	0
+84	-60.5	0
+85	-60.5	0
+86	-60.5	0
+87	-60.5	0
+88	-60.5	0
+89	-60.5	0
+90	-60.5	0
+91	-60.5	0
+92	-60.5	0
+93	-60.5	0
+94	-60.5	0
+95	-60.5	0
+96	-60.5	0
+97	-60.5	0
+98	-60.5	0
+99	-60.5	0
+100	-60.5	0
+101	-60.5	0
+102	-60.5	0
+103	-60.5	0
+104	-60.5	0
+105	-60.5	0
+106	-60.5	0
+107	-60.5	0
+108	-60.5	0
+109	-60.5	0
+110	-60.5	0
+111	-60.5	0
+112	-60.5	0
+113	-60.5	0
+114	-60.5	0
+115	-60.5	0
+116	-60.5	0
+117	-60.5	0
+118	-60.5	0
+119	-60.5	0
+120	-60.5	0
+121	-60.5	0
+122	-60.5	0
+123	-60.5	0
+124	-60.5	0
+125	-60.5	0
+126	-60.5	0
+127	-60.5	0
+128	-60.5	0
+129	-60.5	0
+130	-60.5	0
+131	-60.5	0
+132	-60.5	0
+133	-60.5	0
+134	-60.5	0
+135	-60.5	0
+136	-60.5	0
+137	-60.5	0
+138	-60.5	0
+139	-60.5	0
+140	-60.5	0
+141	-60.5	0
+142	-60.5	0
+143	-60.5	0
+144	-60.5	0
+145	-60.5	0
+146	-60.5	0
+147	-60.5	0
+148	-60.5	0
+149	-60.5	0
+150	-60.5	0
+151	-60.5	0
+152	-60.5	0
+153	-60.5	0
+154	-60.5	0
+155	-60.5	0
+156	-60.5	0
+157	-60.5	0
+158	-60.5	0
+159	-60.5	0
+160	-60.5	0
+161	-60.5	0
+162	-60.5	0
+163	-60.5	0
+164	-60.5	0
+165	-60.5	0
+166	-60.5	0
+167	-60.5	0
+168	-60.5	0
+169	-60.5	0
+170	-60.5	0
+171	-60.5	0
+172	-60.5	0
+173	-60.5	0
+174	-60.5	0
+175	-60.5	0
+176	-60.5	0
+177	-60.5	0
+178	-60.5	0
+179	-60.5	0
+180	-60.5	0
+181	-60.5	0
+182	-60.5	0
+183	-60.5	0
+184	-60.5	0
+185	-60.5	0
+186	-60.5	0
+187	-60.5	0
+188	-60.5	0
+189	-60.5	0
+190	-60.5	0
+191	-60.5	0
+192	-60.5	0
+193	-60.5	0
+194	-60.5	0
+195	-60.5	0
+196	-60.5	0
+197	-60.5	0
+198	-60.5	0
+199	-60.5	0
+200	-60.5	0
+201	-60.5	0
+202	-60.5	0
+203	-60.5	0
+204	-60.5	0
+205	-60.5	0
+206	-60.5	0
+207	-60.5	0
+208	-60.5	0
+209	-60.5	0
+210	-60.5	0
+211	-60.5	0
+212	-60.5	0
+213	-60.5	0
+214	-60.5	0
+215	-60.5	0
+216	-60.5	0
+217	-60.5	0
+218	-60.5	0
+219	-60.5	0
+220	-60.5	0
+221	-60.5	0
+222	-60.5	0
+223	-60.5	0
+224	-60.5	0
+225	-60.5	0
+226	-60.5	0
+227	-60.5	0
+228	-60.5	0
+229	-60.5	0
+230	-60.5	0
+231	-60.5	0
+232	-60.5	0
+233	-60.5	0
+234	-60.5	0
+235	-60.5	0
+236	-60.5	0
+237	-60.5	0
+238	-60.5	0
+239	-60.5	0
+240	-60.5	0
+241	-60.5	0
+242	-60.5	0
+243	-60.5	0
+244	-60.5	0
+245	-60.5	0
+246	-60.5	0
+247	-60.5	0
+248	-60.5	0
+249	-60.5	0
+250	-60.5	0
+251	-60.5	0
+252	-60.5	0
+253	-60.5	0
+254	-60.5	0
+255	-60.5	0
+256	-60.5	0
+257	-60.5	0
+258	-60.5	0
+259	-60.5	0
+260	-60.5	0
+261	-60.5	0
+262	-60.5	0
+263	-60.5	0
+264	-60.5	0
+265	-60.5	0
+266	-60.5	0
+267	-60.5	0
+268	-60.5	0
+269	-60.5	0
+270	-60.5	0
+271	-60.5	0
+272	-60.5	0
+273	-60.5	0
+274	-60.5	0
+275	-60.5	0
+276	-60.5	0
+277	-60.5	0
+278	-60.5	0
+279	-60.5	0
+280	-60.5	0
+281	-60.5	0
+282	-60.5	0
+283	-60.5	0
+284	-60.5	0
+285	-60.5	0
+286	-60.5	0
+287	-60.5	0
+288	-60.5	0
+289	-60.5	0
+290	-60.5	0
+291	-60.5	0
+292	-60.5	0
+293	-60.5	0
+294	-60.5	0
+295	-60.5	0
+296	-60.5	0
+297	-60.5	0
+298	-60.5	0
+299	-60.5	0
+300	-60.5	0
+301	-60.5	0
+302	-60.5	0
+303	-60.5	0
+304	-60.5	0
+305	-60.5	0
+306	-60.5	0
+307	-60.5	0
+308	-60.5	0
+309	-60.5	0
+310	-60.5	0
+311	-60.5	0
+312	-60.5	0
+313	-60.5	0
+314	-60.5	0
+315	-60.5	0
+316	-60.5	0
+317	-60.5	0
+318	-60.5	0
+319	-60.5	0
+320	-60.5	0
+321	-60.5	0
+322	-60.5	0
+323	-60.5	0
+324	-60.5	0
+325	-60.5	0
+326	-60.5	0
+327	-60.5	0
+328	-60.5	0
+329	-60.5	0
+330	-60.5	0
+331	-60.5	0
+332	-60.5	0
+333	-60.5	0
+334	-60.5	0
+335	-60.5	0
+336	-60.5	0
+337	-60.5	0
+338	-60.5	0
+339	-60.5	0
+340	-60.5	0
+341	-60.5	0
+342	-60.5	0
+343	-60.5	0
+344	-60.5	0
+345	-60.5	0
+346	-60.5	0
+347	-60.5	0
+348	-60.5	0
+349	-60.5	0
+350	-60.5	0
+351	-60.5	0
+352	-60.5	0
+353	-60.5	0
+354	-60.5	0
+355	-60.5	0
+356	-60.5	0
+357	-60.5	0
+358	-60.5	0
+359	-60.5	0
+360	-60.5	0
+0	-60	0
+1	-60	0
+2	-60	0
+3	-60	0
+4	-60	0
+5	-60	0
+6	-60	0
+7	-60	0
+8	-60	0
+9	-60	0
+10	-60	0
+11	-60	0
+12	-60	0
+13	-60	0
+14	-60	0
+15	-60	0
+16	-60	0
+17	-60	0
+18	-60	0
+19	-60	0
+20	-60	0
+21	-60	0
+22	-60	0
+23	-60	0
+24	-60	0
+25	-60	0
+26	-60	0
+27	-60	0
+28	-60	0
+29	-60	0
+30	-60	0
+31	-60	0
+32	-60	0
+33	-60	0
+34	-60	0
+35	-60	0
+36	-60	0
+37	-60	0
+38	-60	0
+39	-60	0
+40	-60	0
+41	-60	0
+42	-60	0
+43	-60	0
+44	-60	0
+45	-60	0
+46	-60	0
+47	-60	0
+48	-60	0
+49	-60	0
+50	-60	0
+51	-60	0
+52	-60	0
+53	-60	0
+54	-60	0
+55	-60	0
+56	-60	0
+57	-60	0
+58	-60	0
+59	-60	0
+60	-60	0
+61	-60	0
+62	-60	0
+63	-60	0
+64	-60	0
+65	-60	0
+66	-60	0
+67	-60	0
+68	-60	0
+69	-60	0
+70	-60	0
+71	-60	0
+72	-60	0
+73	-60	0
+74	-60	0
+75	-60	0
+76	-60	0
+77	-60	0
+78	-60	0
+79	-60	0
+80	-60	0
+81	-60	0
+82	-60	0
+83	-60	0
+84	-60	0
+85	-60	0
+86	-60	0
+87	-60	0
+88	-60	0
+89	-60	0
+90	-60	0
+91	-60	0
+92	-60	0
+93	-60	0
+94	-60	0
+95	-60	0
+96	-60	0
+97	-60	0
+98	-60	0
+99	-60	0
+100	-60	0
+101	-60	0
+102	-60	0
+103	-60	0
+104	-60	0
+105	-60	0
+106	-60	0
+107	-60	0
+108	-60	0
+109	-60	0
+110	-60	0
+111	-60	0
+112	-60	0
+113	-60	0
+114	-60	0
+115	-60	0
+116	-60	0
+117	-60	0
+118	-60	0
+119	-60	0
+120	-60	0
+121	-60	0
+122	-60	0
+123	-60	0
+124	-60	0
+125	-60	0
+126	-60	0
+127	-60	0
+128	-60	0
+129	-60	0
+130	-60	0
+131	-60	0
+132	-60	0
+133	-60	0
+134	-60	0
+135	-60	0
+136	-60	0
+137	-60	0
+138	-60	0
+139	-60	0
+140	-60	0
+141	-60	0
+142	-60	0
+143	-60	0
+144	-60	0
+145	-60	0
+146	-60	0
+147	-60	0
+148	-60	0
+149	-60	0
+150	-60	0
+151	-60	0
+152	-60	0
+153	-60	0
+154	-60	0
+155	-60	0
+156	-60	0
+157	-60	0
+158	-60	0
+159	-60	0
+160	-60	0
+161	-60	0
+162	-60	0
+163	-60	0
+164	-60	0
+165	-60	0
+166	-60	0
+167	-60	0
+168	-60	0
+169	-60	0
+170	-60	0
+171	-60	0
+172	-60	0
+173	-60	0
+174	-60	0
+175	-60	0
+176	-60	0
+177	-60	0
+178	-60	0
+179	-60	0
+180	-60	0
+181	-60	0
+182	-60	0
+183	-60	0
+184	-60	0
+185	-60	0
+186	-60	0
+187	-60	0
+188	-60	0
+189	-60	0
+190	-60	0
+191	-60	0
+192	-60	0
+193	-60	0
+194	-60	0
+195	-60	0
+196	-60	0
+197	-60	0
+198	-60	0
+199	-60	0
+200	-60	0
+201	-60	0
+202	-60	0
+203	-60	0
+204	-60	0
+205	-60	0
+206	-60	0
+207	-60	0
+208	-60	0
+209	-60	0
+210	-60	0
+211	-60	0
+212	-60	0
+213	-60	0
+214	-60	0
+215	-60	0
+216	-60	0
+217	-60	0
+218	-60	0
+219	-60	0
+220	-60	0
+221	-60	0
+222	-60	0
+223	-60	0
+224	-60	0
+225	-60	0
+226	-60	0
+227	-60	0
+228	-60	0
+229	-60	0
+230	-60	0
+231	-60	0
+232	-60	0
+233	-60	0
+234	-60	0
+235	-60	0
+236	-60	0
+237	-60	0
+238	-60	0
+239	-60	0
+240	-60	0
+241	-60	0
+242	-60	0
+243	-60	0
+244	-60	0
+245	-60	0
+246	-60	0
+247	-60	0
+248	-60	0
+249	-60	0
+250	-60	0
+251	-60	0
+252	-60	0
+253	-60	0
+254	-60	0
+255	-60	0
+256	-60	0
+257	-60	0
+258	-60	0
+259	-60	0
+260	-60	0
+261	-60	0
+262	-60	0
+263	-60	0
+264	-60	0
+265	-60	0
+266	-60	0
+267	-60	0
+268	-60	0
+269	-60	0
+270	-60	0
+271	-60	0
+272	-60	0
+273	-60	0
+274	-60	0
+275	-60	0
+276	-60	0
+277	-60	0
+278	-60	0
+279	-60	0
+280	-60	0
+281	-60	0
+282	-60	0
+283	-60	0
+284	-60	0
+285	-60	0
+286	-60	0
+287	-60	0
+288	-60	0
+289	-60	0
+290	-60	0
+291	-60	0
+292	-60	0
+293	-60	0
+294	-60	0
+295	-60	0
+296	-60	0
+297	-60	0
+298	-60	0
+299	-60	0
+300	-60	0
+301	-60	0
+302	-60	0
+303	-60	0
+304	-60	0
+305	-60	0
+306	-60	0
+307	-60	0
+308	-60	0
+309	-60	0
+310	-60	0
+311	-60	0
+312	-60	0
+313	-60	0
+314	-60	0
+315	-60	0
+316	-60	0
+317	-60	0
+318	-60	0
+319	-60	0
+320	-60	0
+321	-60	0
+322	-60	0
+323	-60	0
+324	-60	0
+325	-60	0
+326	-60	0
+327	-60	0
+328	-60	0
+329	-60	0
+330	-60	0
+331	-60	0
+332	-60	0
+333	-60	0
+334	-60	0
+335	-60	0
+336	-60	0
+337	-60	0
+338	-60	0
+339	-60	0
+340	-60	0
+341	-60	0
+342	-60	0
+343	-60	0
+344	-60	0
+345	-60	0
+346	-60	0
+347	-60	0
+348	-60	0
+349	-60	0
+350	-60	0
+351	-60	0
+352	-60	0
+353	-60	0
+354	-60	0
+355	-60	0
+356	-60	0
+357	-60	0
+358	-60	0
+359	-60	0
+360	-60	0
+0	-59.5	0
+1	-59.5	0
+2	-59.5	0
+3	-59.5	0
+4	-59.5	0
+5	-59.5	0
+6	-59.5	0
+7	-59.5	0
+8	-59.5	0
+9	-59.5	0
+10	-59.5	0
+11	-59.5	0
+12	-59.5	0
+13	-59.5	0
+14	-59.5	0
+15	-59.5	0
+16	-59.5	0
+17	-59.5	0
+18	-59.5	0
+19	-59.5	0
+20	-59.5	0
+21	-59.5	0
+22	-59.5	0
+23	-59.5	0
+24	-59.5	0
+25	-59.5	0
+26	-59.5	0
+27	-59.5	0
+28	-59.5	0
+29	-59.5	0
+30	-59.5	0
+31	-59.5	0
+32	-59.5	0
+33	-59.5	0
+34	-59.5	0
+35	-59.5	0
+36	-59.5	0
+37	-59.5	0
+38	-59.5	0
+39	-59.5	0
+40	-59.5	0
+41	-59.5	0
+42	-59.5	0
+43	-59.5	0
+44	-59.5	0
+45	-59.5	0
+46	-59.5	0
+47	-59.5	0
+48	-59.5	0
+49	-59.5	0
+50	-59.5	0
+51	-59.5	0
+52	-59.5	0
+53	-59.5	0
+54	-59.5	0
+55	-59.5	0
+56	-59.5	0
+57	-59.5	0
+58	-59.5	0
+59	-59.5	0
+60	-59.5	0
+61	-59.5	0
+62	-59.5	0
+63	-59.5	0
+64	-59.5	0
+65	-59.5	0
+66	-59.5	0
+67	-59.5	0
+68	-59.5	0
+69	-59.5	0
+70	-59.5	0
+71	-59.5	0
+72	-59.5	0
+73	-59.5	0
+74	-59.5	0
+75	-59.5	0
+76	-59.5	0
+77	-59.5	0
+78	-59.5	0
+79	-59.5	0
+80	-59.5	0
+81	-59.5	0
+82	-59.5	0
+83	-59.5	0
+84	-59.5	0
+85	-59.5	0
+86	-59.5	0
+87	-59.5	0
+88	-59.5	0
+89	-59.5	0
+90	-59.5	0
+91	-59.5	0
+92	-59.5	0
+93	-59.5	0
+94	-59.5	0
+95	-59.5	0
+96	-59.5	0
+97	-59.5	0
+98	-59.5	0
+99	-59.5	0
+100	-59.5	0
+101	-59.5	0
+102	-59.5	0
+103	-59.5	0
+104	-59.5	0
+105	-59.5	0
+106	-59.5	0
+107	-59.5	0
+108	-59.5	0
+109	-59.5	0
+110	-59.5	0
+111	-59.5	0
+112	-59.5	0
+113	-59.5	0
+114	-59.5	0
+115	-59.5	0
+116	-59.5	0
+117	-59.5	0
+118	-59.5	0
+119	-59.5	0
+120	-59.5	0
+121	-59.5	0
+122	-59.5	0
+123	-59.5	0
+124	-59.5	0
+125	-59.5	0
+126	-59.5	0
+127	-59.5	0
+128	-59.5	0
+129	-59.5	0
+130	-59.5	0
+131	-59.5	0
+132	-59.5	0
+133	-59.5	0
+134	-59.5	0
+135	-59.5	0
+136	-59.5	0
+137	-59.5	0
+138	-59.5	0
+139	-59.5	0
+140	-59.5	0
+141	-59.5	0
+142	-59.5	0
+143	-59.5	0
+144	-59.5	0
+145	-59.5	0
+146	-59.5	0
+147	-59.5	0
+148	-59.5	0
+149	-59.5	0
+150	-59.5	0
+151	-59.5	0
+152	-59.5	0
+153	-59.5	0
+154	-59.5	0
+155	-59.5	0
+156	-59.5	0
+157	-59.5	0
+158	-59.5	0
+159	-59.5	0
+160	-59.5	0
+161	-59.5	0
+162	-59.5	0
+163	-59.5	0
+164	-59.5	0
+165	-59.5	0
+166	-59.5	0
+167	-59.5	0
+168	-59.5	0
+169	-59.5	0
+170	-59.5	0
+171	-59.5	0
+172	-59.5	0
+173	-59.5	0
+174	-59.5	0
+175	-59.5	0
+176	-59.5	0
+177	-59.5	0
+178	-59.5	0
+179	-59.5	0
+180	-59.5	0
+181	-59.5	0
+182	-59.5	0
+183	-59.5	0
+184	-59.5	0
+185	-59.5	0
+186	-59.5	0
+187	-59.5	0
+188	-59.5	0
+189	-59.5	0
+190	-59.5	0
+191	-59.5	0
+192	-59.5	0
+193	-59.5	0
+194	-59.5	0
+195	-59.5	0
+196	-59.5	0
+197	-59.5	0
+198	-59.5	0
+199	-59.5	0
+200	-59.5	0
+201	-59.5	0
+202	-59.5	0
+203	-59.5	0
+204	-59.5	0
+205	-59.5	0
+206	-59.5	0
+207	-59.5	0
+208	-59.5	0
+209	-59.5	0
+210	-59.5	0
+211	-59.5	0
+212	-59.5	0
+213	-59.5	0
+214	-59.5	0
+215	-59.5	0
+216	-59.5	0
+217	-59.5	0
+218	-59.5	0
+219	-59.5	0
+220	-59.5	0
+221	-59.5	0
+222	-59.5	0
+223	-59.5	0
+224	-59.5	0
+225	-59.5	0
+226	-59.5	0
+227	-59.5	0
+228	-59.5	0
+229	-59.5	0
+230	-59.5	0
+231	-59.5	0
+232	-59.5	0
+233	-59.5	0
+234	-59.5	0
+235	-59.5	0
+236	-59.5	0
+237	-59.5	0
+238	-59.5	0
+239	-59.5	0
+240	-59.5	0
+241	-59.5	0
+242	-59.5	0
+243	-59.5	0
+244	-59.5	0
+245	-59.5	0
+246	-59.5	0
+247	-59.5	0
+248	-59.5	0
+249	-59.5	0
+250	-59.5	0
+251	-59.5	0
+252	-59.5	0
+253	-59.5	0
+254	-59.5	0
+255	-59.5	0
+256	-59.5	0
+257	-59.5	0
+258	-59.5	0
+259	-59.5	0
+260	-59.5	0
+261	-59.5	0
+262	-59.5	0
+263	-59.5	0
+264	-59.5	0
+265	-59.5	0
+266	-59.5	0
+267	-59.5	0
+268	-59.5	0
+269	-59.5	0
+270	-59.5	0
+271	-59.5	0
+272	-59.5	0
+273	-59.5	0
+274	-59.5	0
+275	-59.5	0
+276	-59.5	0
+277	-59.5	0
+278	-59.5	0
+279	-59.5	0
+280	-59.5	0
+281	-59.5	0
+282	-59.5	0
+283	-59.5	0
+284	-59.5	0
+285	-59.5	0
+286	-59.5	0
+287	-59.5	0
+288	-59.5	0
+289	-59.5	0
+290	-59.5	0
+291	-59.5	0
+292	-59.5	0
+293	-59.5	0
+294	-59.5	0
+295	-59.5	0
+296	-59.5	0
+297	-59.5	0
+298	-59.5	0
+299	-59.5	0
+300	-59.5	0
+301	-59.5	0
+302	-59.5	0
+303	-59.5	0
+304	-59.5	0
+305	-59.5	0
+306	-59.5	0
+307	-59.5	0
+308	-59.5	0
+309	-59.5	0
+310	-59.5	0
+311	-59.5	0
+312	-59.5	0
+313	-59.5	0
+314	-59.5	0
+315	-59.5	0
+316	-59.5	0
+317	-59.5	0
+318	-59.5	0
+319	-59.5	0
+320	-59.5	0
+321	-59.5	0
+322	-59.5	0
+323	-59.5	0
+324	-59.5	0
+325	-59.5	0
+326	-59.5	0
+327	-59.5	0
+328	-59.5	0
+329	-59.5	0
+330	-59.5	0
+331	-59.5	0
+332	-59.5	0
+333	-59.5	0
+334	-59.5	0
+335	-59.5	0
+336	-59.5	0
+337	-59.5	0
+338	-59.5	0
+339	-59.5	0
+340	-59.5	0
+341	-59.5	0
+342	-59.5	0
+343	-59.5	0
+344	-59.5	0
+345	-59.5	0
+346	-59.5	0
+347	-59.5	0
+348	-59.5	0
+349	-59.5	0
+350	-59.5	0
+351	-59.5	0
+352	-59.5	0
+353	-59.5	0
+354	-59.5	0
+355	-59.5	0
+356	-59.5	0
+357	-59.5	0
+358	-59.5	0
+359	-59.5	0
+360	-59.5	0
+0	-59	0
+1	-59	0
+2	-59	0
+3	-59	0
+4	-59	0
+5	-59	0
+6	-59	0
+7	-59	0
+8	-59	0
+9	-59	0
+10	-59	0
+11	-59	0
+12	-59	0
+13	-59	0
+14	-59	0
+15	-59	0
+16	-59	0
+17	-59	0
+18	-59	0
+19	-59	0
+20	-59	0
+21	-59	0
+22	-59	0
+23	-59	0
+24	-59	0
+25	-59	0
+26	-59	0
+27	-59	0
+28	-59	0
+29	-59	0
+30	-59	0
+31	-59	0
+32	-59	0
+33	-59	0
+34	-59	0
+35	-59	0
+36	-59	0
+37	-59	0
+38	-59	0
+39	-59	0
+40	-59	0
+41	-59	0
+42	-59	0
+43	-59	0
+44	-59	0
+45	-59	0
+46	-59	0
+47	-59	0
+48	-59	0
+49	-59	0
+50	-59	0
+51	-59	0
+52	-59	0
+53	-59	0
+54	-59	0
+55	-59	0
+56	-59	0
+57	-59	0
+58	-59	0
+59	-59	0
+60	-59	0
+61	-59	0
+62	-59	0
+63	-59	0
+64	-59	0
+65	-59	0
+66	-59	0
+67	-59	0
+68	-59	0
+69	-59	0
+70	-59	0
+71	-59	0
+72	-59	0
+73	-59	0
+74	-59	0
+75	-59	0
+76	-59	0
+77	-59	0
+78	-59	0
+79	-59	0
+80	-59	0
+81	-59	0
+82	-59	0
+83	-59	0
+84	-59	0
+85	-59	0
+86	-59	0
+87	-59	0
+88	-59	0
+89	-59	0
+90	-59	0
+91	-59	0
+92	-59	0
+93	-59	0
+94	-59	0
+95	-59	0
+96	-59	0
+97	-59	0
+98	-59	0
+99	-59	0
+100	-59	0
+101	-59	0
+102	-59	0
+103	-59	0
+104	-59	0
+105	-59	0
+106	-59	0
+107	-59	0
+108	-59	0
+109	-59	0
+110	-59	0
+111	-59	0
+112	-59	0
+113	-59	0
+114	-59	0
+115	-59	0
+116	-59	0
+117	-59	0
+118	-59	0
+119	-59	0
+120	-59	0
+121	-59	0
+122	-59	0
+123	-59	0
+124	-59	0
+125	-59	0
+126	-59	0
+127	-59	0
+128	-59	0
+129	-59	0
+130	-59	0
+131	-59	0
+132	-59	0
+133	-59	0
+134	-59	0
+135	-59	0
+136	-59	0
+137	-59	0
+138	-59	0
+139	-59	0
+140	-59	0
+141	-59	0
+142	-59	0
+143	-59	0
+144	-59	0
+145	-59	0
+146	-59	0
+147	-59	0
+148	-59	0
+149	-59	0
+150	-59	0
+151	-59	0
+152	-59	0
+153	-59	0
+154	-59	0
+155	-59	0
+156	-59	0
+157	-59	0
+158	-59	0
+159	-59	0
+160	-59	0
+161	-59	0
+162	-59	0
+163	-59	0
+164	-59	0
+165	-59	0
+166	-59	0
+167	-59	0
+168	-59	0
+169	-59	0
+170	-59	0
+171	-59	0
+172	-59	0
+173	-59	0
+174	-59	0
+175	-59	0
+176	-59	0
+177	-59	0
+178	-59	0
+179	-59	0
+180	-59	0
+181	-59	0
+182	-59	0
+183	-59	0
+184	-59	0
+185	-59	0
+186	-59	0
+187	-59	0
+188	-59	0
+189	-59	0
+190	-59	0
+191	-59	0
+192	-59	0
+193	-59	0
+194	-59	0
+195	-59	0
+196	-59	0
+197	-59	0
+198	-59	0
+199	-59	0
+200	-59	0
+201	-59	0
+202	-59	0
+203	-59	0
+204	-59	0
+205	-59	0
+206	-59	0
+207	-59	0
+208	-59	0
+209	-59	0
+210	-59	0
+211	-59	0
+212	-59	0
+213	-59	0
+214	-59	0
+215	-59	0
+216	-59	0
+217	-59	0
+218	-59	0
+219	-59	0
+220	-59	0
+221	-59	0
+222	-59	0
+223	-59	0
+224	-59	0
+225	-59	0
+226	-59	0
+227	-59	0
+228	-59	0
+229	-59	0
+230	-59	0
+231	-59	0
+232	-59	0
+233	-59	0
+234	-59	0
+235	-59	0
+236	-59	0
+237	-59	0
+238	-59	0
+239	-59	0
+240	-59	0
+241	-59	0
+242	-59	0
+243	-59	0
+244	-59	0
+245	-59	0
+246	-59	0
+247	-59	0
+248	-59	0
+249	-59	0
+250	-59	0
+251	-59	0
+252	-59	0
+253	-59	0
+254	-59	0
+255	-59	0
+256	-59	0
+257	-59	0
+258	-59	0
+259	-59	0
+260	-59	0
+261	-59	0
+262	-59	0
+263	-59	0
+264	-59	0
+265	-59	0
+266	-59	0
+267	-59	0
+268	-59	0
+269	-59	0
+270	-59	0
+271	-59	0
+272	-59	0
+273	-59	0
+274	-59	0
+275	-59	0
+276	-59	0
+277	-59	0
+278	-59	0
+279	-59	0
+280	-59	0
+281	-59	0
+282	-59	0
+283	-59	0
+284	-59	0
+285	-59	0
+286	-59	0
+287	-59	0
+288	-59	0
+289	-59	0
+290	-59	0
+291	-59	0
+292	-59	0
+293	-59	0
+294	-59	0
+295	-59	0
+296	-59	0
+297	-59	0
+298	-59	0
+299	-59	0
+300	-59	0
+301	-59	0
+302	-59	0
+303	-59	0
+304	-59	0
+305	-59	0
+306	-59	0
+307	-59	0
+308	-59	0
+309	-59	0
+310	-59	0
+311	-59	0
+312	-59	0
+313	-59	0
+314	-59	0
+315	-59	0
+316	-59	0
+317	-59	0
+318	-59	0
+319	-59	0
+320	-59	0
+321	-59	0
+322	-59	0
+323	-59	0
+324	-59	0
+325	-59	0
+326	-59	0
+327	-59	0
+328	-59	0
+329	-59	0
+330	-59	0
+331	-59	0
+332	-59	0
+333	-59	0
+334	-59	0
+335	-59	0
+336	-59	0
+337	-59	0
+338	-59	0
+339	-59	0
+340	-59	0
+341	-59	0
+342	-59	0
+343	-59	0
+344	-59	0
+345	-59	0
+346	-59	0
+347	-59	0
+348	-59	0
+349	-59	0
+350	-59	0
+351	-59	0
+352	-59	0
+353	-59	0
+354	-59	0
+355	-59	0
+356	-59	0
+357	-59	0
+358	-59	0
+359	-59	0
+360	-59	0
+0	-58.5	0
+1	-58.5	0
+2	-58.5	0
+3	-58.5	0
+4	-58.5	0
+5	-58.5	0
+6	-58.5	0
+7	-58.5	0
+8	-58.5	0
+9	-58.5	0
+10	-58.5	0
+11	-58.5	0
+12	-58.5	0
+13	-58.5	0
+14	-58.5	0
+15	-58.5	0
+16	-58.5	0
+17	-58.5	0
+18	-58.5	0
+19	-58.5	0
+20	-58.5	0
+21	-58.5	0
+22	-58.5	0
+23	-58.5	0
+24	-58.5	0
+25	-58.5	0
+26	-58.5	0
+27	-58.5	0
+28	-58.5	0
+29	-58.5	0
+30	-58.5	0
+31	-58.5	0
+32	-58.5	0
+33	-58.5	0
+34	-58.5	0
+35	-58.5	0
+36	-58.5	0
+37	-58.5	0
+38	-58.5	0
+39	-58.5	0
+40	-58.5	0
+41	-58.5	0
+42	-58.5	0
+43	-58.5	0
+44	-58.5	0
+45	-58.5	0
+46	-58.5	0
+47	-58.5	0
+48	-58.5	0
+49	-58.5	0
+50	-58.5	0
+51	-58.5	0
+52	-58.5	0
+53	-58.5	0
+54	-58.5	0
+55	-58.5	0
+56	-58.5	0
+57	-58.5	0
+58	-58.5	0
+59	-58.5	0
+60	-58.5	0
+61	-58.5	0
+62	-58.5	0
+63	-58.5	0
+64	-58.5	0
+65	-58.5	0
+66	-58.5	0
+67	-58.5	0
+68	-58.5	0
+69	-58.5	0
+70	-58.5	0
+71	-58.5	0
+72	-58.5	0
+73	-58.5	0
+74	-58.5	0
+75	-58.5	0
+76	-58.5	0
+77	-58.5	0
+78	-58.5	0
+79	-58.5	0
+80	-58.5	0
+81	-58.5	0
+82	-58.5	0
+83	-58.5	0
+84	-58.5	0
+85	-58.5	0
+86	-58.5	0
+87	-58.5	0
+88	-58.5	0
+89	-58.5	0
+90	-58.5	0
+91	-58.5	0
+92	-58.5	0
+93	-58.5	0
+94	-58.5	0
+95	-58.5	0
+96	-58.5	0
+97	-58.5	0
+98	-58.5	0
+99	-58.5	0
+100	-58.5	0
+101	-58.5	0
+102	-58.5	0
+103	-58.5	0
+104	-58.5	0
+105	-58.5	0
+106	-58.5	0
+107	-58.5	0
+108	-58.5	0
+109	-58.5	0
+110	-58.5	0
+111	-58.5	0
+112	-58.5	0
+113	-58.5	0
+114	-58.5	0
+115	-58.5	0
+116	-58.5	0
+117	-58.5	0
+118	-58.5	0
+119	-58.5	0
+120	-58.5	0
+121	-58.5	0
+122	-58.5	0
+123	-58.5	0
+124	-58.5	0
+125	-58.5	0
+126	-58.5	0
+127	-58.5	0
+128	-58.5	0
+129	-58.5	0
+130	-58.5	0
+131	-58.5	0
+132	-58.5	0
+133	-58.5	0
+134	-58.5	0
+135	-58.5	0
+136	-58.5	0
+137	-58.5	0
+138	-58.5	0
+139	-58.5	0
+140	-58.5	0
+141	-58.5	0
+142	-58.5	0
+143	-58.5	0
+144	-58.5	0
+145	-58.5	0
+146	-58.5	0
+147	-58.5	0
+148	-58.5	0
+149	-58.5	0
+150	-58.5	0
+151	-58.5	0
+152	-58.5	0
+153	-58.5	0
+154	-58.5	0
+155	-58.5	0
+156	-58.5	0
+157	-58.5	0
+158	-58.5	0
+159	-58.5	0
+160	-58.5	0
+161	-58.5	0
+162	-58.5	0
+163	-58.5	0
+164	-58.5	0
+165	-58.5	0
+166	-58.5	0
+167	-58.5	0
+168	-58.5	0
+169	-58.5	0
+170	-58.5	0
+171	-58.5	0
+172	-58.5	0
+173	-58.5	0
+174	-58.5	0
+175	-58.5	0
+176	-58.5	0
+177	-58.5	0
+178	-58.5	0
+179	-58.5	0
+180	-58.5	0
+181	-58.5	0
+182	-58.5	0
+183	-58.5	0
+184	-58.5	0
+185	-58.5	0
+186	-58.5	0
+187	-58.5	0
+188	-58.5	0
+189	-58.5	0
+190	-58.5	0
+191	-58.5	0
+192	-58.5	0
+193	-58.5	0
+194	-58.5	0
+195	-58.5	0
+196	-58.5	0
+197	-58.5	0
+198	-58.5	0
+199	-58.5	0
+200	-58.5	0
+201	-58.5	0
+202	-58.5	0
+203	-58.5	0
+204	-58.5	0
+205	-58.5	0
+206	-58.5	0
+207	-58.5	0
+208	-58.5	0
+209	-58.5	0
+210	-58.5	0
+211	-58.5	0
+212	-58.5	0
+213	-58.5	0
+214	-58.5	0
+215	-58.5	0
+216	-58.5	0
+217	-58.5	0
+218	-58.5	0
+219	-58.5	0
+220	-58.5	0
+221	-58.5	0
+222	-58.5	0
+223	-58.5	0
+224	-58.5	0
+225	-58.5	0
+226	-58.5	0
+227	-58.5	0
+228	-58.5	0
+229	-58.5	0
+230	-58.5	0
+231	-58.5	0
+232	-58.5	0
+233	-58.5	0
+234	-58.5	0
+235	-58.5	0
+236	-58.5	0
+237	-58.5	0
+238	-58.5	0
+239	-58.5	0
+240	-58.5	0
+241	-58.5	0
+242	-58.5	0
+243	-58.5	0
+244	-58.5	0
+245	-58.5	0
+246	-58.5	0
+247	-58.5	0
+248	-58.5	0
+249	-58.5	0
+250	-58.5	0
+251	-58.5	0
+252	-58.5	0
+253	-58.5	0
+254	-58.5	0
+255	-58.5	0
+256	-58.5	0
+257	-58.5	0
+258	-58.5	0
+259	-58.5	0
+260	-58.5	0
+261	-58.5	0
+262	-58.5	0
+263	-58.5	0
+264	-58.5	0
+265	-58.5	0
+266	-58.5	0
+267	-58.5	0
+268	-58.5	0
+269	-58.5	0
+270	-58.5	0
+271	-58.5	0
+272	-58.5	0
+273	-58.5	0
+274	-58.5	0
+275	-58.5	0
+276	-58.5	0
+277	-58.5	0
+278	-58.5	0
+279	-58.5	0
+280	-58.5	0
+281	-58.5	0
+282	-58.5	0
+283	-58.5	0
+284	-58.5	0
+285	-58.5	0
+286	-58.5	0
+287	-58.5	0
+288	-58.5	0
+289	-58.5	0
+290	-58.5	0
+291	-58.5	0
+292	-58.5	0
+293	-58.5	0
+294	-58.5	0
+295	-58.5	0
+296	-58.5	0
+297	-58.5	0
+298	-58.5	0
+299	-58.5	0
+300	-58.5	0
+301	-58.5	0
+302	-58.5	0
+303	-58.5	0
+304	-58.5	0
+305	-58.5	0
+306	-58.5	0
+307	-58.5	0
+308	-58.5	0
+309	-58.5	0
+310	-58.5	0
+311	-58.5	0
+312	-58.5	0
+313	-58.5	0
+314	-58.5	0
+315	-58.5	0
+316	-58.5	0
+317	-58.5	0
+318	-58.5	0
+319	-58.5	0
+320	-58.5	0
+321	-58.5	0
+322	-58.5	0
+323	-58.5	0
+324	-58.5	0
+325	-58.5	0
+326	-58.5	0
+327	-58.5	0
+328	-58.5	0
+329	-58.5	0
+330	-58.5	0
+331	-58.5	0
+332	-58.5	0
+333	-58.5	0
+334	-58.5	0
+335	-58.5	0
+336	-58.5	0
+337	-58.5	0
+338	-58.5	0
+339	-58.5	0
+340	-58.5	0
+341	-58.5	0
+342	-58.5	0
+343	-58.5	0
+344	-58.5	0
+345	-58.5	0
+346	-58.5	0
+347	-58.5	0
+348	-58.5	0
+349	-58.5	0
+350	-58.5	0
+351	-58.5	0
+352	-58.5	0
+353	-58.5	0
+354	-58.5	0
+355	-58.5	0
+356	-58.5	0
+357	-58.5	0
+358	-58.5	0
+359	-58.5	0
+360	-58.5	0
+0	-58	0
+1	-58	0
+2	-58	0
+3	-58	0
+4	-58	0
+5	-58	0
+6	-58	0
+7	-58	0
+8	-58	0
+9	-58	0
+10	-58	0
+11	-58	0
+12	-58	0
+13	-58	0
+14	-58	0
+15	-58	0
+16	-58	0
+17	-58	0
+18	-58	0
+19	-58	0
+20	-58	0
+21	-58	0
+22	-58	0
+23	-58	0
+24	-58	0
+25	-58	0
+26	-58	0
+27	-58	0
+28	-58	0
+29	-58	0
+30	-58	0
+31	-58	0
+32	-58	0
+33	-58	0
+34	-58	0
+35	-58	0
+36	-58	0
+37	-58	0
+38	-58	0
+39	-58	0
+40	-58	0
+41	-58	0
+42	-58	0
+43	-58	0
+44	-58	0
+45	-58	0
+46	-58	0
+47	-58	0
+48	-58	0
+49	-58	0
+50	-58	0
+51	-58	0
+52	-58	0
+53	-58	0
+54	-58	0
+55	-58	0
+56	-58	0
+57	-58	0
+58	-58	0
+59	-58	0
+60	-58	0
+61	-58	0
+62	-58	0
+63	-58	0
+64	-58	0
+65	-58	0
+66	-58	0
+67	-58	0
+68	-58	0
+69	-58	0
+70	-58	0
+71	-58	0
+72	-58	0
+73	-58	0
+74	-58	0
+75	-58	0
+76	-58	0
+77	-58	0
+78	-58	0
+79	-58	0
+80	-58	0
+81	-58	0
+82	-58	0
+83	-58	0
+84	-58	0
+85	-58	0
+86	-58	0
+87	-58	0
+88	-58	0
+89	-58	0
+90	-58	0
+91	-58	0
+92	-58	0
+93	-58	0
+94	-58	0
+95	-58	0
+96	-58	0
+97	-58	0
+98	-58	0
+99	-58	0
+100	-58	0
+101	-58	0
+102	-58	0
+103	-58	0
+104	-58	0
+105	-58	0
+106	-58	0
+107	-58	0
+108	-58	0
+109	-58	0
+110	-58	0
+111	-58	0
+112	-58	0
+113	-58	0
+114	-58	0
+115	-58	0
+116	-58	0
+117	-58	0
+118	-58	0
+119	-58	0
+120	-58	0
+121	-58	0
+122	-58	0
+123	-58	0
+124	-58	0
+125	-58	0
+126	-58	0
+127	-58	0
+128	-58	0
+129	-58	0
+130	-58	0
+131	-58	0
+132	-58	0
+133	-58	0
+134	-58	0
+135	-58	0
+136	-58	0
+137	-58	0
+138	-58	0
+139	-58	0
+140	-58	0
+141	-58	0
+142	-58	0
+143	-58	0
+144	-58	0
+145	-58	0
+146	-58	0
+147	-58	0
+148	-58	0
+149	-58	0
+150	-58	0
+151	-58	0
+152	-58	0
+153	-58	0
+154	-58	0
+155	-58	0
+156	-58	0
+157	-58	0
+158	-58	0
+159	-58	0
+160	-58	0
+161	-58	0
+162	-58	0
+163	-58	0
+164	-58	0
+165	-58	0
+166	-58	0
+167	-58	0
+168	-58	0
+169	-58	0
+170	-58	0
+171	-58	0
+172	-58	0
+173	-58	0
+174	-58	0
+175	-58	0
+176	-58	0
+177	-58	0
+178	-58	0
+179	-58	0
+180	-58	0
+181	-58	0
+182	-58	0
+183	-58	0
+184	-58	0
+185	-58	0
+186	-58	0
+187	-58	0
+188	-58	0
+189	-58	0
+190	-58	0
+191	-58	0
+192	-58	0
+193	-58	0
+194	-58	0
+195	-58	0
+196	-58	0
+197	-58	0
+198	-58	0
+199	-58	0
+200	-58	0
+201	-58	0
+202	-58	0
+203	-58	0
+204	-58	0
+205	-58	0
+206	-58	0
+207	-58	0
+208	-58	0
+209	-58	0
+210	-58	0
+211	-58	0
+212	-58	0
+213	-58	0
+214	-58	0
+215	-58	0
+216	-58	0
+217	-58	0
+218	-58	0
+219	-58	0
+220	-58	0
+221	-58	0
+222	-58	0
+223	-58	0
+224	-58	0
+225	-58	0
+226	-58	0
+227	-58	0
+228	-58	0
+229	-58	0
+230	-58	0
+231	-58	0
+232	-58	0
+233	-58	0
+234	-58	0
+235	-58	0
+236	-58	0
+237	-58	0
+238	-58	0
+239	-58	0
+240	-58	0
+241	-58	0
+242	-58	0
+243	-58	0
+244	-58	0
+245	-58	0
+246	-58	0
+247	-58	0
+248	-58	0
+249	-58	0
+250	-58	0
+251	-58	0
+252	-58	0
+253	-58	0
+254	-58	0
+255	-58	0
+256	-58	0
+257	-58	0
+258	-58	0
+259	-58	0
+260	-58	0
+261	-58	0
+262	-58	0
+263	-58	0
+264	-58	0
+265	-58	0
+266	-58	0
+267	-58	0
+268	-58	0
+269	-58	0
+270	-58	0
+271	-58	0
+272	-58	0
+273	-58	0
+274	-58	0
+275	-58	0
+276	-58	0
+277	-58	0
+278	-58	0
+279	-58	0
+280	-58	0
+281	-58	0
+282	-58	0
+283	-58	0
+284	-58	0
+285	-58	0
+286	-58	0
+287	-58	0
+288	-58	0
+289	-58	0
+290	-58	0
+291	-58	0
+292	-58	0
+293	-58	0
+294	-58	0
+295	-58	0
+296	-58	0
+297	-58	0
+298	-58	0
+299	-58	0
+300	-58	0
+301	-58	0
+302	-58	0
+303	-58	0
+304	-58	0
+305	-58	0
+306	-58	0
+307	-58	0
+308	-58	0
+309	-58	0
+310	-58	0
+311	-58	0
+312	-58	0
+313	-58	0
+314	-58	0
+315	-58	0
+316	-58	0
+317	-58	0
+318	-58	0
+319	-58	0
+320	-58	0
+321	-58	0
+322	-58	0
+323	-58	0
+324	-58	0
+325	-58	0
+326	-58	0
+327	-58	0
+328	-58	0
+329	-58	0
+330	-58	0
+331	-58	0
+332	-58	0
+333	-58	0
+334	-58	0
+335	-58	0
+336	-58	0
+337	-58	0
+338	-58	0
+339	-58	0
+340	-58	0
+341	-58	0
+342	-58	0
+343	-58	0
+344	-58	0
+345	-58	0
+346	-58	0
+347	-58	0
+348	-58	0
+349	-58	0
+350	-58	0
+351	-58	0
+352	-58	0
+353	-58	0
+354	-58	0
+355	-58	0
+356	-58	0
+357	-58	0
+358	-58	0
+359	-58	0
+360	-58	0
+0	-57.5	0
+1	-57.5	0
+2	-57.5	0
+3	-57.5	0
+4	-57.5	0
+5	-57.5	0
+6	-57.5	0
+7	-57.5	0
+8	-57.5	0
+9	-57.5	0
+10	-57.5	0
+11	-57.5	0
+12	-57.5	0
+13	-57.5	0
+14	-57.5	0
+15	-57.5	0
+16	-57.5	0
+17	-57.5	0
+18	-57.5	0
+19	-57.5	0
+20	-57.5	0
+21	-57.5	0
+22	-57.5	0
+23	-57.5	0
+24	-57.5	0
+25	-57.5	0
+26	-57.5	0
+27	-57.5	0
+28	-57.5	0
+29	-57.5	0
+30	-57.5	0
+31	-57.5	0
+32	-57.5	0
+33	-57.5	0
+34	-57.5	0
+35	-57.5	0
+36	-57.5	0
+37	-57.5	0
+38	-57.5	0
+39	-57.5	0
+40	-57.5	0
+41	-57.5	0
+42	-57.5	0
+43	-57.5	0
+44	-57.5	0
+45	-57.5	0
+46	-57.5	0
+47	-57.5	0
+48	-57.5	0
+49	-57.5	0
+50	-57.5	0
+51	-57.5	0
+52	-57.5	0
+53	-57.5	0
+54	-57.5	0
+55	-57.5	0
+56	-57.5	0
+57	-57.5	0
+58	-57.5	0
+59	-57.5	0
+60	-57.5	0
+61	-57.5	0
+62	-57.5	0
+63	-57.5	0
+64	-57.5	0
+65	-57.5	0
+66	-57.5	0
+67	-57.5	0
+68	-57.5	0
+69	-57.5	0
+70	-57.5	0
+71	-57.5	0
+72	-57.5	0
+73	-57.5	0
+74	-57.5	0
+75	-57.5	0
+76	-57.5	0
+77	-57.5	0
+78	-57.5	0
+79	-57.5	0
+80	-57.5	0
+81	-57.5	0
+82	-57.5	0
+83	-57.5	0
+84	-57.5	0
+85	-57.5	0
+86	-57.5	0
+87	-57.5	0
+88	-57.5	0
+89	-57.5	0
+90	-57.5	0
+91	-57.5	0
+92	-57.5	0
+93	-57.5	0
+94	-57.5	0
+95	-57.5	0
+96	-57.5	0
+97	-57.5	0
+98	-57.5	0
+99	-57.5	0
+100	-57.5	0
+101	-57.5	0
+102	-57.5	0
+103	-57.5	0
+104	-57.5	0
+105	-57.5	0
+106	-57.5	0
+107	-57.5	0
+108	-57.5	0
+109	-57.5	0
+110	-57.5	0
+111	-57.5	0
+112	-57.5	0
+113	-57.5	0
+114	-57.5	0
+115	-57.5	0
+116	-57.5	0
+117	-57.5	0
+118	-57.5	0
+119	-57.5	0
+120	-57.5	0
+121	-57.5	0
+122	-57.5	0
+123	-57.5	0
+124	-57.5	0
+125	-57.5	0
+126	-57.5	0
+127	-57.5	0
+128	-57.5	0
+129	-57.5	0
+130	-57.5	0
+131	-57.5	0
+132	-57.5	0
+133	-57.5	0
+134	-57.5	0
+135	-57.5	0
+136	-57.5	0
+137	-57.5	0
+138	-57.5	0
+139	-57.5	0
+140	-57.5	0
+141	-57.5	0
+142	-57.5	0
+143	-57.5	0
+144	-57.5	0
+145	-57.5	0
+146	-57.5	0
+147	-57.5	0
+148	-57.5	0
+149	-57.5	0
+150	-57.5	0
+151	-57.5	0
+152	-57.5	0
+153	-57.5	0
+154	-57.5	0
+155	-57.5	0
+156	-57.5	0
+157	-57.5	0
+158	-57.5	0
+159	-57.5	0
+160	-57.5	0
+161	-57.5	0
+162	-57.5	0
+163	-57.5	0
+164	-57.5	0
+165	-57.5	0
+166	-57.5	0
+167	-57.5	0
+168	-57.5	0
+169	-57.5	0
+170	-57.5	0
+171	-57.5	0
+172	-57.5	0
+173	-57.5	0
+174	-57.5	0
+175	-57.5	0
+176	-57.5	0
+177	-57.5	0
+178	-57.5	0
+179	-57.5	0
+180	-57.5	0
+181	-57.5	0
+182	-57.5	0
+183	-57.5	0
+184	-57.5	0
+185	-57.5	0
+186	-57.5	0
+187	-57.5	0
+188	-57.5	0
+189	-57.5	0
+190	-57.5	0
+191	-57.5	0
+192	-57.5	0
+193	-57.5	0
+194	-57.5	0
+195	-57.5	0
+196	-57.5	0
+197	-57.5	0
+198	-57.5	0
+199	-57.5	0
+200	-57.5	0
+201	-57.5	0
+202	-57.5	0
+203	-57.5	0
+204	-57.5	0
+205	-57.5	0
+206	-57.5	0
+207	-57.5	0
+208	-57.5	0
+209	-57.5	0
+210	-57.5	0
+211	-57.5	0
+212	-57.5	0
+213	-57.5	0
+214	-57.5	0
+215	-57.5	0
+216	-57.5	0
+217	-57.5	0
+218	-57.5	0
+219	-57.5	0
+220	-57.5	0
+221	-57.5	0
+222	-57.5	0
+223	-57.5	0
+224	-57.5	0
+225	-57.5	0
+226	-57.5	0
+227	-57.5	0
+228	-57.5	0
+229	-57.5	0
+230	-57.5	0
+231	-57.5	0
+232	-57.5	0
+233	-57.5	0
+234	-57.5	0
+235	-57.5	0
+236	-57.5	0
+237	-57.5	0
+238	-57.5	0
+239	-57.5	0
+240	-57.5	0
+241	-57.5	0
+242	-57.5	0
+243	-57.5	0
+244	-57.5	0
+245	-57.5	0
+246	-57.5	0
+247	-57.5	0
+248	-57.5	0
+249	-57.5	0
+250	-57.5	0
+251	-57.5	0
+252	-57.5	0
+253	-57.5	0
+254	-57.5	0
+255	-57.5	0
+256	-57.5	0
+257	-57.5	0
+258	-57.5	0
+259	-57.5	0
+260	-57.5	0
+261	-57.5	0
+262	-57.5	0
+263	-57.5	0
+264	-57.5	0
+265	-57.5	0
+266	-57.5	0
+267	-57.5	0
+268	-57.5	0
+269	-57.5	0
+270	-57.5	0
+271	-57.5	0
+272	-57.5	0
+273	-57.5	0
+274	-57.5	0
+275	-57.5	0
+276	-57.5	0
+277	-57.5	0
+278	-57.5	0
+279	-57.5	0
+280	-57.5	0
+281	-57.5	0
+282	-57.5	0
+283	-57.5	0
+284	-57.5	0
+285	-57.5	0
+286	-57.5	0
+287	-57.5	0
+288	-57.5	0
+289	-57.5	0
+290	-57.5	0
+291	-57.5	0
+292	-57.5	0
+293	-57.5	0
+294	-57.5	0
+295	-57.5	0
+296	-57.5	0
+297	-57.5	0
+298	-57.5	0
+299	-57.5	0
+300	-57.5	0
+301	-57.5	0
+302	-57.5	0
+303	-57.5	0
+304	-57.5	0
+305	-57.5	0
+306	-57.5	0
+307	-57.5	0
+308	-57.5	0
+309	-57.5	0
+310	-57.5	0
+311	-57.5	0
+312	-57.5	0
+313	-57.5	0
+314	-57.5	0
+315	-57.5	0
+316	-57.5	0
+317	-57.5	0
+318	-57.5	0
+319	-57.5	0
+320	-57.5	0
+321	-57.5	0
+322	-57.5	0
+323	-57.5	0
+324	-57.5	0
+325	-57.5	0
+326	-57.5	0
+327	-57.5	0
+328	-57.5	0
+329	-57.5	0
+330	-57.5	0
+331	-57.5	0
+332	-57.5	0
+333	-57.5	0
+334	-57.5	0
+335	-57.5	0
+336	-57.5	0
+337	-57.5	0
+338	-57.5	0
+339	-57.5	0
+340	-57.5	0
+341	-57.5	0
+342	-57.5	0
+343	-57.5	0
+344	-57.5	0
+345	-57.5	0
+346	-57.5	0
+347	-57.5	0
+348	-57.5	0
+349	-57.5	0
+350	-57.5	0
+351	-57.5	0
+352	-57.5	0
+353	-57.5	0
+354	-57.5	0
+355	-57.5	0
+356	-57.5	0
+357	-57.5	0
+358	-57.5	0
+359	-57.5	0
+360	-57.5	0
+0	-57	0
+1	-57	0
+2	-57	0
+3	-57	0
+4	-57	0
+5	-57	0
+6	-57	0
+7	-57	0
+8	-57	0
+9	-57	0
+10	-57	0
+11	-57	0
+12	-57	0
+13	-57	0
+14	-57	0
+15	-57	0
+16	-57	0
+17	-57	0
+18	-57	0
+19	-57	0
+20	-57	0
+21	-57	0
+22	-57	0
+23	-57	0
+24	-57	0
+25	-57	0
+26	-57	0
+27	-57	0
+28	-57	0
+29	-57	0
+30	-57	0
+31	-57	0
+32	-57	0
+33	-57	0
+34	-57	0
+35	-57	0
+36	-57	0
+37	-57	0
+38	-57	0
+39	-57	0
+40	-57	0
+41	-57	0
+42	-57	0
+43	-57	0
+44	-57	0
+45	-57	0
+46	-57	0
+47	-57	0
+48	-57	0
+49	-57	0
+50	-57	0
+51	-57	0
+52	-57	0
+53	-57	0
+54	-57	0
+55	-57	0
+56	-57	0
+57	-57	0
+58	-57	0
+59	-57	0
+60	-57	0
+61	-57	0
+62	-57	0
+63	-57	0
+64	-57	0
+65	-57	0
+66	-57	0
+67	-57	0
+68	-57	0
+69	-57	0
+70	-57	0
+71	-57	0
+72	-57	0
+73	-57	0
+74	-57	0
+75	-57	0
+76	-57	0
+77	-57	0
+78	-57	0
+79	-57	0
+80	-57	0
+81	-57	0
+82	-57	0
+83	-57	0
+84	-57	0
+85	-57	0
+86	-57	0
+87	-57	0
+88	-57	0
+89	-57	0
+90	-57	0
+91	-57	0
+92	-57	0
+93	-57	0
+94	-57	0
+95	-57	0
+96	-57	0
+97	-57	0
+98	-57	0
+99	-57	0
+100	-57	0
+101	-57	0
+102	-57	0
+103	-57	0
+104	-57	0
+105	-57	0
+106	-57	0
+107	-57	0
+108	-57	0
+109	-57	0
+110	-57	0
+111	-57	0
+112	-57	0
+113	-57	0
+114	-57	0
+115	-57	0
+116	-57	0
+117	-57	0
+118	-57	0
+119	-57	0
+120	-57	0
+121	-57	0
+122	-57	0
+123	-57	0
+124	-57	0
+125	-57	0
+126	-57	0
+127	-57	0
+128	-57	0
+129	-57	0
+130	-57	0
+131	-57	0
+132	-57	0
+133	-57	0
+134	-57	0
+135	-57	0
+136	-57	0
+137	-57	0
+138	-57	0
+139	-57	0
+140	-57	0
+141	-57	0
+142	-57	0
+143	-57	0
+144	-57	0
+145	-57	0
+146	-57	0
+147	-57	0
+148	-57	0
+149	-57	0
+150	-57	0
+151	-57	0
+152	-57	0
+153	-57	0
+154	-57	0
+155	-57	0
+156	-57	0
+157	-57	0
+158	-57	0
+159	-57	0
+160	-57	0
+161	-57	0
+162	-57	0
+163	-57	0
+164	-57	0
+165	-57	0
+166	-57	0
+167	-57	0
+168	-57	0
+169	-57	0
+170	-57	0
+171	-57	0
+172	-57	0
+173	-57	0
+174	-57	0
+175	-57	0
+176	-57	0
+177	-57	0
+178	-57	0
+179	-57	0
+180	-57	0
+181	-57	0
+182	-57	0
+183	-57	0
+184	-57	0
+185	-57	0
+186	-57	0
+187	-57	0
+188	-57	0
+189	-57	0
+190	-57	0
+191	-57	0
+192	-57	0
+193	-57	0
+194	-57	0
+195	-57	0
+196	-57	0
+197	-57	0
+198	-57	0
+199	-57	0
+200	-57	0
+201	-57	0
+202	-57	0
+203	-57	0
+204	-57	0
+205	-57	0
+206	-57	0
+207	-57	0
+208	-57	0
+209	-57	0
+210	-57	0
+211	-57	0
+212	-57	0
+213	-57	0
+214	-57	0
+215	-57	0
+216	-57	0
+217	-57	0
+218	-57	0
+219	-57	0
+220	-57	0
+221	-57	0
+222	-57	0
+223	-57	0
+224	-57	0
+225	-57	0
+226	-57	0
+227	-57	0
+228	-57	0
+229	-57	0
+230	-57	0
+231	-57	0
+232	-57	0
+233	-57	0
+234	-57	0
+235	-57	0
+236	-57	0
+237	-57	0
+238	-57	0
+239	-57	0
+240	-57	0
+241	-57	0
+242	-57	0
+243	-57	0
+244	-57	0
+245	-57	0
+246	-57	0
+247	-57	0
+248	-57	0
+249	-57	0
+250	-57	0
+251	-57	0
+252	-57	0
+253	-57	0
+254	-57	0
+255	-57	0
+256	-57	0
+257	-57	0
+258	-57	0
+259	-57	0
+260	-57	0
+261	-57	0
+262	-57	0
+263	-57	0
+264	-57	0
+265	-57	0
+266	-57	0
+267	-57	0
+268	-57	0
+269	-57	0
+270	-57	0
+271	-57	0
+272	-57	0
+273	-57	0
+274	-57	0
+275	-57	0
+276	-57	0
+277	-57	0
+278	-57	0
+279	-57	0
+280	-57	0
+281	-57	0
+282	-57	0
+283	-57	0
+284	-57	0
+285	-57	0
+286	-57	0
+287	-57	0
+288	-57	0
+289	-57	0
+290	-57	0
+291	-57	0
+292	-57	0
+293	-57	0
+294	-57	0
+295	-57	0
+296	-57	0
+297	-57	0
+298	-57	0
+299	-57	0
+300	-57	0
+301	-57	0
+302	-57	0
+303	-57	0
+304	-57	0
+305	-57	0
+306	-57	0
+307	-57	0
+308	-57	0
+309	-57	0
+310	-57	0
+311	-57	0
+312	-57	0
+313	-57	0
+314	-57	0
+315	-57	0
+316	-57	0
+317	-57	0
+318	-57	0
+319	-57	0
+320	-57	0
+321	-57	0
+322	-57	0
+323	-57	0
+324	-57	0
+325	-57	0
+326	-57	0
+327	-57	0
+328	-57	0
+329	-57	0
+330	-57	0
+331	-57	0
+332	-57	0
+333	-57	0
+334	-57	0
+335	-57	0
+336	-57	0
+337	-57	0
+338	-57	0
+339	-57	0
+340	-57	0
+341	-57	0
+342	-57	0
+343	-57	0
+344	-57	0
+345	-57	0
+346	-57	0
+347	-57	0
+348	-57	0
+349	-57	0
+350	-57	0
+351	-57	0
+352	-57	0
+353	-57	0
+354	-57	0
+355	-57	0
+356	-57	0
+357	-57	0
+358	-57	0
+359	-57	0
+360	-57	0
+0	-56.5	0
+1	-56.5	0
+2	-56.5	0
+3	-56.5	0
+4	-56.5	0
+5	-56.5	0
+6	-56.5	0
+7	-56.5	0
+8	-56.5	0
+9	-56.5	0
+10	-56.5	0
+11	-56.5	0
+12	-56.5	0
+13	-56.5	0
+14	-56.5	0
+15	-56.5	0
+16	-56.5	0
+17	-56.5	0
+18	-56.5	0
+19	-56.5	0
+20	-56.5	0
+21	-56.5	0
+22	-56.5	0
+23	-56.5	0
+24	-56.5	0
+25	-56.5	0
+26	-56.5	0
+27	-56.5	0
+28	-56.5	0
+29	-56.5	0
+30	-56.5	0
+31	-56.5	0
+32	-56.5	0
+33	-56.5	0
+34	-56.5	0
+35	-56.5	0
+36	-56.5	0
+37	-56.5	0
+38	-56.5	0
+39	-56.5	0
+40	-56.5	0
+41	-56.5	0
+42	-56.5	0
+43	-56.5	0
+44	-56.5	0
+45	-56.5	0
+46	-56.5	0
+47	-56.5	0
+48	-56.5	0
+49	-56.5	0
+50	-56.5	0
+51	-56.5	0
+52	-56.5	0
+53	-56.5	0
+54	-56.5	0
+55	-56.5	0
+56	-56.5	0
+57	-56.5	0
+58	-56.5	0
+59	-56.5	0
+60	-56.5	0
+61	-56.5	0
+62	-56.5	0
+63	-56.5	0
+64	-56.5	0
+65	-56.5	0
+66	-56.5	0
+67	-56.5	0
+68	-56.5	0
+69	-56.5	0
+70	-56.5	0
+71	-56.5	0
+72	-56.5	0
+73	-56.5	0
+74	-56.5	0
+75	-56.5	0
+76	-56.5	0
+77	-56.5	0
+78	-56.5	0
+79	-56.5	0
+80	-56.5	0
+81	-56.5	0
+82	-56.5	0
+83	-56.5	0
+84	-56.5	0
+85	-56.5	0
+86	-56.5	0
+87	-56.5	0
+88	-56.5	0
+89	-56.5	0
+90	-56.5	0
+91	-56.5	0
+92	-56.5	0
+93	-56.5	0
+94	-56.5	0
+95	-56.5	0
+96	-56.5	0
+97	-56.5	0
+98	-56.5	0
+99	-56.5	0
+100	-56.5	0
+101	-56.5	0
+102	-56.5	0
+103	-56.5	0
+104	-56.5	0
+105	-56.5	0
+106	-56.5	0
+107	-56.5	0
+108	-56.5	0
+109	-56.5	0
+110	-56.5	0
+111	-56.5	0
+112	-56.5	0
+113	-56.5	0
+114	-56.5	0
+115	-56.5	0
+116	-56.5	0
+117	-56.5	0
+118	-56.5	0
+119	-56.5	0
+120	-56.5	0
+121	-56.5	0
+122	-56.5	0
+123	-56.5	0
+124	-56.5	0
+125	-56.5	0
+126	-56.5	0
+127	-56.5	0
+128	-56.5	0
+129	-56.5	0
+130	-56.5	0
+131	-56.5	0
+132	-56.5	0
+133	-56.5	0
+134	-56.5	0
+135	-56.5	0
+136	-56.5	0
+137	-56.5	0
+138	-56.5	0
+139	-56.5	0
+140	-56.5	0
+141	-56.5	0
+142	-56.5	0
+143	-56.5	0
+144	-56.5	0
+145	-56.5	0
+146	-56.5	0
+147	-56.5	0
+148	-56.5	0
+149	-56.5	0
+150	-56.5	0
+151	-56.5	0
+152	-56.5	0
+153	-56.5	0
+154	-56.5	0
+155	-56.5	0
+156	-56.5	0
+157	-56.5	0
+158	-56.5	0
+159	-56.5	0
+160	-56.5	0
+161	-56.5	0
+162	-56.5	0
+163	-56.5	0
+164	-56.5	0
+165	-56.5	0
+166	-56.5	0
+167	-56.5	0
+168	-56.5	0
+169	-56.5	0
+170	-56.5	0
+171	-56.5	0
+172	-56.5	0
+173	-56.5	0
+174	-56.5	0
+175	-56.5	0
+176	-56.5	0
+177	-56.5	0
+178	-56.5	0
+179	-56.5	0
+180	-56.5	0
+181	-56.5	0
+182	-56.5	0
+183	-56.5	0
+184	-56.5	0
+185	-56.5	0
+186	-56.5	0
+187	-56.5	0
+188	-56.5	0
+189	-56.5	0
+190	-56.5	0
+191	-56.5	0
+192	-56.5	0
+193	-56.5	0
+194	-56.5	0
+195	-56.5	0
+196	-56.5	0
+197	-56.5	0
+198	-56.5	0
+199	-56.5	0
+200	-56.5	0
+201	-56.5	0
+202	-56.5	0
+203	-56.5	0
+204	-56.5	0
+205	-56.5	0
+206	-56.5	0
+207	-56.5	0
+208	-56.5	0
+209	-56.5	0
+210	-56.5	0
+211	-56.5	0
+212	-56.5	0
+213	-56.5	0
+214	-56.5	0
+215	-56.5	0
+216	-56.5	0
+217	-56.5	0
+218	-56.5	0
+219	-56.5	0
+220	-56.5	0
+221	-56.5	0
+222	-56.5	0
+223	-56.5	0
+224	-56.5	0
+225	-56.5	0
+226	-56.5	0
+227	-56.5	0
+228	-56.5	0
+229	-56.5	0
+230	-56.5	0
+231	-56.5	0
+232	-56.5	0
+233	-56.5	0
+234	-56.5	0
+235	-56.5	0
+236	-56.5	0
+237	-56.5	0
+238	-56.5	0
+239	-56.5	0
+240	-56.5	0
+241	-56.5	0
+242	-56.5	0
+243	-56.5	0
+244	-56.5	0
+245	-56.5	0
+246	-56.5	0
+247	-56.5	0
+248	-56.5	0
+249	-56.5	0
+250	-56.5	0
+251	-56.5	0
+252	-56.5	0
+253	-56.5	0
+254	-56.5	0
+255	-56.5	0
+256	-56.5	0
+257	-56.5	0
+258	-56.5	0
+259	-56.5	0
+260	-56.5	0
+261	-56.5	0
+262	-56.5	0
+263	-56.5	0
+264	-56.5	0
+265	-56.5	0
+266	-56.5	0
+267	-56.5	0
+268	-56.5	0
+269	-56.5	0
+270	-56.5	0
+271	-56.5	0
+272	-56.5	0
+273	-56.5	0
+274	-56.5	0
+275	-56.5	0
+276	-56.5	0
+277	-56.5	0
+278	-56.5	0
+279	-56.5	0
+280	-56.5	0
+281	-56.5	0
+282	-56.5	0
+283	-56.5	0
+284	-56.5	0
+285	-56.5	0
+286	-56.5	0
+287	-56.5	0
+288	-56.5	0
+289	-56.5	0
+290	-56.5	0
+291	-56.5	0
+292	-56.5	0
+293	-56.5	0
+294	-56.5	0
+295	-56.5	0
+296	-56.5	0
+297	-56.5	0
+298	-56.5	0
+299	-56.5	0
+300	-56.5	0
+301	-56.5	0
+302	-56.5	0
+303	-56.5	0
+304	-56.5	0
+305	-56.5	0
+306	-56.5	0
+307	-56.5	0
+308	-56.5	0
+309	-56.5	0
+310	-56.5	0
+311	-56.5	0
+312	-56.5	0
+313	-56.5	0
+314	-56.5	0
+315	-56.5	0
+316	-56.5	0
+317	-56.5	0
+318	-56.5	0
+319	-56.5	0
+320	-56.5	0
+321	-56.5	0
+322	-56.5	0
+323	-56.5	0
+324	-56.5	0
+325	-56.5	0
+326	-56.5	0
+327	-56.5	0
+328	-56.5	0
+329	-56.5	0
+330	-56.5	0
+331	-56.5	0
+332	-56.5	0
+333	-56.5	0
+334	-56.5	0
+335	-56.5	0
+336	-56.5	0
+337	-56.5	0
+338	-56.5	0
+339	-56.5	0
+340	-56.5	0
+341	-56.5	0
+342	-56.5	0
+343	-56.5	0
+344	-56.5	0
+345	-56.5	0
+346	-56.5	0
+347	-56.5	0
+348	-56.5	0
+349	-56.5	0
+350	-56.5	0
+351	-56.5	0
+352	-56.5	0
+353	-56.5	0
+354	-56.5	0
+355	-56.5	0
+356	-56.5	0
+357	-56.5	0
+358	-56.5	0
+359	-56.5	0
+360	-56.5	0
+0	-56	0
+1	-56	0
+2	-56	0
+3	-56	0
+4	-56	0
+5	-56	0
+6	-56	0
+7	-56	0
+8	-56	0
+9	-56	0
+10	-56	0
+11	-56	0
+12	-56	0
+13	-56	0
+14	-56	0
+15	-56	0
+16	-56	0
+17	-56	0
+18	-56	0
+19	-56	0
+20	-56	0
+21	-56	0
+22	-56	0
+23	-56	0
+24	-56	0
+25	-56	0
+26	-56	0
+27	-56	0
+28	-56	0
+29	-56	0
+30	-56	0
+31	-56	0
+32	-56	0
+33	-56	0
+34	-56	0
+35	-56	0
+36	-56	0
+37	-56	0
+38	-56	0
+39	-56	0
+40	-56	0
+41	-56	0
+42	-56	0
+43	-56	0
+44	-56	0
+45	-56	0
+46	-56	0
+47	-56	0
+48	-56	0
+49	-56	0
+50	-56	0
+51	-56	0
+52	-56	0
+53	-56	0
+54	-56	0
+55	-56	0
+56	-56	0
+57	-56	0
+58	-56	0
+59	-56	0
+60	-56	0
+61	-56	0
+62	-56	0
+63	-56	0
+64	-56	0
+65	-56	0
+66	-56	0
+67	-56	0
+68	-56	0
+69	-56	0
+70	-56	0
+71	-56	0
+72	-56	0
+73	-56	0
+74	-56	0
+75	-56	0
+76	-56	0
+77	-56	0
+78	-56	0
+79	-56	0
+80	-56	0
+81	-56	0
+82	-56	0
+83	-56	0
+84	-56	0
+85	-56	0
+86	-56	0
+87	-56	0
+88	-56	0
+89	-56	0
+90	-56	0
+91	-56	0
+92	-56	0
+93	-56	0
+94	-56	0
+95	-56	0
+96	-56	0
+97	-56	0
+98	-56	0
+99	-56	0
+100	-56	0
+101	-56	0
+102	-56	0
+103	-56	0
+104	-56	0
+105	-56	0
+106	-56	0
+107	-56	0
+108	-56	0
+109	-56	0
+110	-56	0
+111	-56	0
+112	-56	0
+113	-56	0
+114	-56	0
+115	-56	0
+116	-56	0
+117	-56	0
+118	-56	0
+119	-56	0
+120	-56	0
+121	-56	0
+122	-56	0
+123	-56	0
+124	-56	0
+125	-56	0
+126	-56	0
+127	-56	0
+128	-56	0
+129	-56	0
+130	-56	0
+131	-56	0
+132	-56	0
+133	-56	0
+134	-56	0
+135	-56	0
+136	-56	0
+137	-56	0
+138	-56	0
+139	-56	0
+140	-56	0
+141	-56	0
+142	-56	0
+143	-56	0
+144	-56	0
+145	-56	0
+146	-56	0
+147	-56	0
+148	-56	0
+149	-56	0
+150	-56	0
+151	-56	0
+152	-56	0
+153	-56	0
+154	-56	0
+155	-56	0
+156	-56	0
+157	-56	0
+158	-56	0
+159	-56	0
+160	-56	0
+161	-56	0
+162	-56	0
+163	-56	0
+164	-56	0
+165	-56	0
+166	-56	0
+167	-56	0
+168	-56	0
+169	-56	0
+170	-56	0
+171	-56	0
+172	-56	0
+173	-56	0
+174	-56	0
+175	-56	0
+176	-56	0
+177	-56	0
+178	-56	0
+179	-56	0
+180	-56	0
+181	-56	0
+182	-56	0
+183	-56	0
+184	-56	0
+185	-56	0
+186	-56	0
+187	-56	0
+188	-56	0
+189	-56	0
+190	-56	0
+191	-56	0
+192	-56	0
+193	-56	0
+194	-56	0
+195	-56	0
+196	-56	0
+197	-56	0
+198	-56	0
+199	-56	0
+200	-56	0
+201	-56	0
+202	-56	0
+203	-56	0
+204	-56	0
+205	-56	0
+206	-56	0
+207	-56	0
+208	-56	0
+209	-56	0
+210	-56	0
+211	-56	0
+212	-56	0
+213	-56	0
+214	-56	0
+215	-56	0
+216	-56	0
+217	-56	0
+218	-56	0
+219	-56	0
+220	-56	0
+221	-56	0
+222	-56	0
+223	-56	0
+224	-56	0
+225	-56	0
+226	-56	0
+227	-56	0
+228	-56	0
+229	-56	0
+230	-56	0
+231	-56	0
+232	-56	0
+233	-56	0
+234	-56	0
+235	-56	0
+236	-56	0
+237	-56	0
+238	-56	0
+239	-56	0
+240	-56	0
+241	-56	0
+242	-56	0
+243	-56	0
+244	-56	0
+245	-56	0
+246	-56	0
+247	-56	0
+248	-56	0
+249	-56	0
+250	-56	0
+251	-56	0
+252	-56	0
+253	-56	0
+254	-56	0
+255	-56	0
+256	-56	0
+257	-56	0
+258	-56	0
+259	-56	0
+260	-56	0
+261	-56	0
+262	-56	0
+263	-56	0
+264	-56	0
+265	-56	0
+266	-56	0
+267	-56	0
+268	-56	0
+269	-56	0
+270	-56	0
+271	-56	0
+272	-56	0
+273	-56	0
+274	-56	0
+275	-56	0
+276	-56	0
+277	-56	0
+278	-56	0
+279	-56	0
+280	-56	0
+281	-56	0
+282	-56	0
+283	-56	0
+284	-56	0
+285	-56	0
+286	-56	0
+287	-56	0
+288	-56	0
+289	-56	0
+290	-56	0
+291	-56	0
+292	-56	0
+293	-56	0
+294	-56	0
+295	-56	0
+296	-56	0
+297	-56	0
+298	-56	0
+299	-56	0
+300	-56	0
+301	-56	0
+302	-56	0
+303	-56	0
+304	-56	0
+305	-56	0
+306	-56	0
+307	-56	0
+308	-56	0
+309	-56	0
+310	-56	0
+311	-56	0
+312	-56	0
+313	-56	0
+314	-56	0
+315	-56	0
+316	-56	0
+317	-56	0
+318	-56	0
+319	-56	0
+320	-56	0
+321	-56	0
+322	-56	0
+323	-56	0
+324	-56	0
+325	-56	0
+326	-56	0
+327	-56	0
+328	-56	0
+329	-56	0
+330	-56	0
+331	-56	0
+332	-56	0
+333	-56	0
+334	-56	0
+335	-56	0
+336	-56	0
+337	-56	0
+338	-56	0
+339	-56	0
+340	-56	0
+341	-56	0
+342	-56	0
+343	-56	0
+344	-56	0
+345	-56	0
+346	-56	0
+347	-56	0
+348	-56	0
+349	-56	0
+350	-56	0
+351	-56	0
+352	-56	0
+353	-56	0
+354	-56	0
+355	-56	0
+356	-56	0
+357	-56	0
+358	-56	0
+359	-56	0
+360	-56	0
+0	-55.5	0
+1	-55.5	0
+2	-55.5	0
+3	-55.5	0
+4	-55.5	0
+5	-55.5	0
+6	-55.5	0
+7	-55.5	0
+8	-55.5	0
+9	-55.5	0
+10	-55.5	0
+11	-55.5	0
+12	-55.5	0
+13	-55.5	0
+14	-55.5	0
+15	-55.5	0
+16	-55.5	0
+17	-55.5	0
+18	-55.5	0
+19	-55.5	0
+20	-55.5	0
+21	-55.5	0
+22	-55.5	0
+23	-55.5	0
+24	-55.5	0
+25	-55.5	0
+26	-55.5	0
+27	-55.5	0
+28	-55.5	0
+29	-55.5	0
+30	-55.5	0
+31	-55.5	0
+32	-55.5	0
+33	-55.5	0
+34	-55.5	0
+35	-55.5	0
+36	-55.5	0
+37	-55.5	0
+38	-55.5	0
+39	-55.5	0
+40	-55.5	0
+41	-55.5	0
+42	-55.5	0
+43	-55.5	0
+44	-55.5	0
+45	-55.5	0
+46	-55.5	0
+47	-55.5	0
+48	-55.5	0
+49	-55.5	0
+50	-55.5	0
+51	-55.5	0
+52	-55.5	0
+53	-55.5	0
+54	-55.5	0
+55	-55.5	0
+56	-55.5	0
+57	-55.5	0
+58	-55.5	0
+59	-55.5	0
+60	-55.5	0
+61	-55.5	0
+62	-55.5	0
+63	-55.5	0
+64	-55.5	0
+65	-55.5	0
+66	-55.5	0
+67	-55.5	0
+68	-55.5	0
+69	-55.5	0
+70	-55.5	0
+71	-55.5	0
+72	-55.5	0
+73	-55.5	0
+74	-55.5	0
+75	-55.5	0
+76	-55.5	0
+77	-55.5	0
+78	-55.5	0
+79	-55.5	0
+80	-55.5	0
+81	-55.5	0
+82	-55.5	0
+83	-55.5	0
+84	-55.5	0
+85	-55.5	0
+86	-55.5	0
+87	-55.5	0
+88	-55.5	0
+89	-55.5	0
+90	-55.5	0
+91	-55.5	0
+92	-55.5	0
+93	-55.5	0
+94	-55.5	0
+95	-55.5	0
+96	-55.5	0
+97	-55.5	0
+98	-55.5	0
+99	-55.5	0
+100	-55.5	0
+101	-55.5	0
+102	-55.5	0
+103	-55.5	0
+104	-55.5	0
+105	-55.5	0
+106	-55.5	0
+107	-55.5	0
+108	-55.5	0
+109	-55.5	0
+110	-55.5	0
+111	-55.5	0
+112	-55.5	0
+113	-55.5	0
+114	-55.5	0
+115	-55.5	0
+116	-55.5	0
+117	-55.5	0
+118	-55.5	0
+119	-55.5	0
+120	-55.5	0
+121	-55.5	0
+122	-55.5	0
+123	-55.5	0
+124	-55.5	0
+125	-55.5	0
+126	-55.5	0
+127	-55.5	0
+128	-55.5	0
+129	-55.5	0
+130	-55.5	0
+131	-55.5	0
+132	-55.5	0
+133	-55.5	0
+134	-55.5	0
+135	-55.5	0
+136	-55.5	0
+137	-55.5	0
+138	-55.5	0
+139	-55.5	0
+140	-55.5	0
+141	-55.5	0
+142	-55.5	0
+143	-55.5	0
+144	-55.5	0
+145	-55.5	0
+146	-55.5	0
+147	-55.5	0
+148	-55.5	0
+149	-55.5	0
+150	-55.5	0
+151	-55.5	0
+152	-55.5	0
+153	-55.5	0
+154	-55.5	0
+155	-55.5	0
+156	-55.5	0
+157	-55.5	0
+158	-55.5	0
+159	-55.5	0
+160	-55.5	0
+161	-55.5	0
+162	-55.5	0
+163	-55.5	0
+164	-55.5	0
+165	-55.5	0
+166	-55.5	0
+167	-55.5	0
+168	-55.5	0
+169	-55.5	0
+170	-55.5	0
+171	-55.5	0
+172	-55.5	0
+173	-55.5	0
+174	-55.5	0
+175	-55.5	0
+176	-55.5	0
+177	-55.5	0
+178	-55.5	0
+179	-55.5	0
+180	-55.5	0
+181	-55.5	0
+182	-55.5	0
+183	-55.5	0
+184	-55.5	0
+185	-55.5	0
+186	-55.5	0
+187	-55.5	0
+188	-55.5	0
+189	-55.5	0
+190	-55.5	0
+191	-55.5	0
+192	-55.5	0
+193	-55.5	0
+194	-55.5	0
+195	-55.5	0
+196	-55.5	0
+197	-55.5	0
+198	-55.5	0
+199	-55.5	0
+200	-55.5	0
+201	-55.5	0
+202	-55.5	0
+203	-55.5	0
+204	-55.5	0
+205	-55.5	0
+206	-55.5	0
+207	-55.5	0
+208	-55.5	0
+209	-55.5	0
+210	-55.5	0
+211	-55.5	0
+212	-55.5	0
+213	-55.5	0
+214	-55.5	0
+215	-55.5	0
+216	-55.5	0
+217	-55.5	0
+218	-55.5	0
+219	-55.5	0
+220	-55.5	0
+221	-55.5	0
+222	-55.5	0
+223	-55.5	0
+224	-55.5	0
+225	-55.5	0
+226	-55.5	0
+227	-55.5	0
+228	-55.5	0
+229	-55.5	0
+230	-55.5	0
+231	-55.5	0
+232	-55.5	0
+233	-55.5	0
+234	-55.5	0
+235	-55.5	0
+236	-55.5	0
+237	-55.5	0
+238	-55.5	0
+239	-55.5	0
+240	-55.5	0
+241	-55.5	0
+242	-55.5	0
+243	-55.5	0
+244	-55.5	0
+245	-55.5	0
+246	-55.5	0
+247	-55.5	0
+248	-55.5	0
+249	-55.5	0
+250	-55.5	0
+251	-55.5	0
+252	-55.5	0
+253	-55.5	0
+254	-55.5	0
+255	-55.5	0
+256	-55.5	0
+257	-55.5	0
+258	-55.5	0
+259	-55.5	0
+260	-55.5	0
+261	-55.5	0
+262	-55.5	0
+263	-55.5	0
+264	-55.5	0
+265	-55.5	0
+266	-55.5	0
+267	-55.5	0
+268	-55.5	0
+269	-55.5	0
+270	-55.5	0
+271	-55.5	0
+272	-55.5	0
+273	-55.5	0
+274	-55.5	0
+275	-55.5	0
+276	-55.5	0
+277	-55.5	0
+278	-55.5	0
+279	-55.5	0
+280	-55.5	0
+281	-55.5	0
+282	-55.5	0
+283	-55.5	0
+284	-55.5	0
+285	-55.5	0
+286	-55.5	0
+287	-55.5	0
+288	-55.5	0
+289	-55.5	0
+290	-55.5	0
+291	-55.5	0
+292	-55.5	0
+293	-55.5	0
+294	-55.5	0
+295	-55.5	0
+296	-55.5	0
+297	-55.5	0
+298	-55.5	0
+299	-55.5	0
+300	-55.5	0
+301	-55.5	0
+302	-55.5	0
+303	-55.5	0
+304	-55.5	0
+305	-55.5	0
+306	-55.5	0
+307	-55.5	0
+308	-55.5	0
+309	-55.5	0
+310	-55.5	0
+311	-55.5	0
+312	-55.5	0
+313	-55.5	0
+314	-55.5	0
+315	-55.5	0
+316	-55.5	0
+317	-55.5	0
+318	-55.5	0
+319	-55.5	0
+320	-55.5	0
+321	-55.5	0
+322	-55.5	0
+323	-55.5	0
+324	-55.5	0
+325	-55.5	0
+326	-55.5	0
+327	-55.5	0
+328	-55.5	0
+329	-55.5	0
+330	-55.5	0
+331	-55.5	0
+332	-55.5	0
+333	-55.5	0
+334	-55.5	0
+335	-55.5	0
+336	-55.5	0
+337	-55.5	0
+338	-55.5	0
+339	-55.5	0
+340	-55.5	0
+341	-55.5	0
+342	-55.5	0
+343	-55.5	0
+344	-55.5	0
+345	-55.5	0
+346	-55.5	0
+347	-55.5	0
+348	-55.5	0
+349	-55.5	0
+350	-55.5	0
+351	-55.5	0
+352	-55.5	0
+353	-55.5	0
+354	-55.5	0
+355	-55.5	0
+356	-55.5	0
+357	-55.5	0
+358	-55.5	0
+359	-55.5	0
+360	-55.5	0
+0	-55	0
+1	-55	0
+2	-55	0
+3	-55	0
+4	-55	0
+5	-55	0
+6	-55	0
+7	-55	0
+8	-55	0
+9	-55	0
+10	-55	0
+11	-55	0
+12	-55	0
+13	-55	0
+14	-55	0
+15	-55	0
+16	-55	0
+17	-55	0
+18	-55	0
+19	-55	0
+20	-55	0
+21	-55	0
+22	-55	0
+23	-55	0
+24	-55	0
+25	-55	0
+26	-55	0
+27	-55	0
+28	-55	0
+29	-55	0
+30	-55	0
+31	-55	0
+32	-55	0
+33	-55	0
+34	-55	0
+35	-55	0
+36	-55	0
+37	-55	0
+38	-55	0
+39	-55	0
+40	-55	0
+41	-55	0
+42	-55	0
+43	-55	0
+44	-55	0
+45	-55	0
+46	-55	0
+47	-55	0
+48	-55	0
+49	-55	0
+50	-55	0
+51	-55	0
+52	-55	0
+53	-55	0
+54	-55	0
+55	-55	0
+56	-55	0
+57	-55	0
+58	-55	0
+59	-55	0
+60	-55	0
+61	-55	0
+62	-55	0
+63	-55	0
+64	-55	0
+65	-55	0
+66	-55	0
+67	-55	0
+68	-55	0
+69	-55	0
+70	-55	0
+71	-55	0
+72	-55	0
+73	-55	0
+74	-55	0
+75	-55	0
+76	-55	0
+77	-55	0
+78	-55	0
+79	-55	0
+80	-55	0
+81	-55	0
+82	-55	0
+83	-55	0
+84	-55	0
+85	-55	0
+86	-55	0
+87	-55	0
+88	-55	0
+89	-55	0
+90	-55	0
+91	-55	0
+92	-55	0
+93	-55	0
+94	-55	0
+95	-55	0
+96	-55	0
+97	-55	0
+98	-55	0
+99	-55	0
+100	-55	0
+101	-55	0
+102	-55	0
+103	-55	0
+104	-55	0
+105	-55	0
+106	-55	0
+107	-55	0
+108	-55	0
+109	-55	0
+110	-55	0
+111	-55	0
+112	-55	0
+113	-55	0
+114	-55	0
+115	-55	0
+116	-55	0
+117	-55	0
+118	-55	0
+119	-55	0
+120	-55	0
+121	-55	0
+122	-55	0
+123	-55	0
+124	-55	0
+125	-55	0
+126	-55	0
+127	-55	0
+128	-55	0
+129	-55	0
+130	-55	0
+131	-55	0
+132	-55	0
+133	-55	0
+134	-55	0
+135	-55	0
+136	-55	0
+137	-55	0
+138	-55	0
+139	-55	0
+140	-55	0
+141	-55	0
+142	-55	0
+143	-55	0
+144	-55	0
+145	-55	0
+146	-55	0
+147	-55	0
+148	-55	0
+149	-55	0
+150	-55	0
+151	-55	0
+152	-55	0
+153	-55	0
+154	-55	0
+155	-55	0
+156	-55	0
+157	-55	0
+158	-55	0
+159	-55	0
+160	-55	0
+161	-55	0
+162	-55	0
+163	-55	0
+164	-55	0
+165	-55	0
+166	-55	0
+167	-55	0
+168	-55	0
+169	-55	0
+170	-55	0
+171	-55	0
+172	-55	0
+173	-55	0
+174	-55	0
+175	-55	0
+176	-55	0
+177	-55	0
+178	-55	0
+179	-55	0
+180	-55	0
+181	-55	0
+182	-55	0
+183	-55	0
+184	-55	0
+185	-55	0
+186	-55	0
+187	-55	0
+188	-55	0
+189	-55	0
+190	-55	0
+191	-55	0
+192	-55	0
+193	-55	0
+194	-55	0
+195	-55	0
+196	-55	0
+197	-55	0
+198	-55	0
+199	-55	0
+200	-55	0
+201	-55	0
+202	-55	0
+203	-55	0
+204	-55	0
+205	-55	0
+206	-55	0
+207	-55	0
+208	-55	0
+209	-55	0
+210	-55	0
+211	-55	0
+212	-55	0
+213	-55	0
+214	-55	0
+215	-55	0
+216	-55	0
+217	-55	0
+218	-55	0
+219	-55	0
+220	-55	0
+221	-55	0
+222	-55	0
+223	-55	0
+224	-55	0
+225	-55	0
+226	-55	0
+227	-55	0
+228	-55	0
+229	-55	0
+230	-55	0
+231	-55	0
+232	-55	0
+233	-55	0
+234	-55	0
+235	-55	0
+236	-55	0
+237	-55	0
+238	-55	0
+239	-55	0
+240	-55	0
+241	-55	0
+242	-55	0
+243	-55	0
+244	-55	0
+245	-55	0
+246	-55	0
+247	-55	0
+248	-55	0
+249	-55	0
+250	-55	0
+251	-55	0
+252	-55	0
+253	-55	0
+254	-55	0
+255	-55	0
+256	-55	0
+257	-55	0
+258	-55	0
+259	-55	0
+260	-55	0
+261	-55	0
+262	-55	0
+263	-55	0
+264	-55	0
+265	-55	0
+266	-55	0
+267	-55	0
+268	-55	0
+269	-55	0
+270	-55	0
+271	-55	0
+272	-55	0
+273	-55	0
+274	-55	0
+275	-55	0
+276	-55	0
+277	-55	0
+278	-55	0
+279	-55	0
+280	-55	0
+281	-55	0
+282	-55	0
+283	-55	0
+284	-55	0
+285	-55	0
+286	-55	0
+287	-55	0
+288	-55	0
+289	-55	0
+290	-55	0
+291	-55	0
+292	-55	0
+293	-55	0
+294	-55	0
+295	-55	0
+296	-55	0
+297	-55	0
+298	-55	0
+299	-55	0
+300	-55	0
+301	-55	0
+302	-55	0
+303	-55	0
+304	-55	0
+305	-55	0
+306	-55	0
+307	-55	0
+308	-55	0
+309	-55	0
+310	-55	0
+311	-55	0
+312	-55	0
+313	-55	0
+314	-55	0
+315	-55	0
+316	-55	0
+317	-55	0
+318	-55	0
+319	-55	0
+320	-55	0
+321	-55	0
+322	-55	0
+323	-55	0
+324	-55	0
+325	-55	0
+326	-55	0
+327	-55	0
+328	-55	0
+329	-55	0
+330	-55	0
+331	-55	0
+332	-55	0
+333	-55	0
+334	-55	0
+335	-55	0
+336	-55	0
+337	-55	0
+338	-55	0
+339	-55	0
+340	-55	0
+341	-55	0
+342	-55	0
+343	-55	0
+344	-55	0
+345	-55	0
+346	-55	0
+347	-55	0
+348	-55	0
+349	-55	0
+350	-55	0
+351	-55	0
+352	-55	0
+353	-55	0
+354	-55	0
+355	-55	0
+356	-55	0
+357	-55	0
+358	-55	0
+359	-55	0
+360	-55	0
+0	-54.5	0
+1	-54.5	0
+2	-54.5	0
+3	-54.5	0
+4	-54.5	0
+5	-54.5	0
+6	-54.5	0
+7	-54.5	0
+8	-54.5	0
+9	-54.5	0
+10	-54.5	0
+11	-54.5	0
+12	-54.5	0
+13	-54.5	0
+14	-54.5	0
+15	-54.5	0
+16	-54.5	0
+17	-54.5	0
+18	-54.5	0
+19	-54.5	0
+20	-54.5	0
+21	-54.5	0
+22	-54.5	0
+23	-54.5	0
+24	-54.5	0
+25	-54.5	0
+26	-54.5	0
+27	-54.5	0
+28	-54.5	0
+29	-54.5	0
+30	-54.5	0
+31	-54.5	0
+32	-54.5	0
+33	-54.5	0
+34	-54.5	0
+35	-54.5	0
+36	-54.5	0
+37	-54.5	0
+38	-54.5	0
+39	-54.5	0
+40	-54.5	0
+41	-54.5	0
+42	-54.5	0
+43	-54.5	0
+44	-54.5	0
+45	-54.5	0
+46	-54.5	0
+47	-54.5	0
+48	-54.5	0
+49	-54.5	0
+50	-54.5	0
+51	-54.5	0
+52	-54.5	0
+53	-54.5	0
+54	-54.5	0
+55	-54.5	0
+56	-54.5	0
+57	-54.5	0
+58	-54.5	0
+59	-54.5	0
+60	-54.5	0
+61	-54.5	0
+62	-54.5	0
+63	-54.5	0
+64	-54.5	0
+65	-54.5	0
+66	-54.5	0
+67	-54.5	0
+68	-54.5	0
+69	-54.5	0
+70	-54.5	0
+71	-54.5	0
+72	-54.5	0
+73	-54.5	0
+74	-54.5	0
+75	-54.5	0
+76	-54.5	0
+77	-54.5	0
+78	-54.5	0
+79	-54.5	0
+80	-54.5	0
+81	-54.5	0
+82	-54.5	0
+83	-54.5	0
+84	-54.5	0
+85	-54.5	0
+86	-54.5	0
+87	-54.5	0
+88	-54.5	0
+89	-54.5	0
+90	-54.5	0
+91	-54.5	0
+92	-54.5	0
+93	-54.5	0
+94	-54.5	0
+95	-54.5	0
+96	-54.5	0
+97	-54.5	0
+98	-54.5	0
+99	-54.5	0
+100	-54.5	0
+101	-54.5	0
+102	-54.5	0
+103	-54.5	0
+104	-54.5	0
+105	-54.5	0
+106	-54.5	0
+107	-54.5	0
+108	-54.5	0
+109	-54.5	0
+110	-54.5	0
+111	-54.5	0
+112	-54.5	0
+113	-54.5	0
+114	-54.5	0
+115	-54.5	0
+116	-54.5	0
+117	-54.5	0
+118	-54.5	0
+119	-54.5	0
+120	-54.5	0
+121	-54.5	0
+122	-54.5	0
+123	-54.5	0
+124	-54.5	0
+125	-54.5	0
+126	-54.5	0
+127	-54.5	0
+128	-54.5	0
+129	-54.5	0
+130	-54.5	0
+131	-54.5	0
+132	-54.5	0
+133	-54.5	0
+134	-54.5	0
+135	-54.5	0
+136	-54.5	0
+137	-54.5	0
+138	-54.5	0
+139	-54.5	0
+140	-54.5	0
+141	-54.5	0
+142	-54.5	0
+143	-54.5	0
+144	-54.5	0
+145	-54.5	0
+146	-54.5	0
+147	-54.5	0
+148	-54.5	0
+149	-54.5	0
+150	-54.5	0
+151	-54.5	0
+152	-54.5	0
+153	-54.5	0
+154	-54.5	0
+155	-54.5	0
+156	-54.5	0
+157	-54.5	0
+158	-54.5	0
+159	-54.5	0
+160	-54.5	0
+161	-54.5	0
+162	-54.5	0
+163	-54.5	0
+164	-54.5	0
+165	-54.5	0
+166	-54.5	0
+167	-54.5	0
+168	-54.5	0
+169	-54.5	0
+170	-54.5	0
+171	-54.5	0
+172	-54.5	0
+173	-54.5	0
+174	-54.5	0
+175	-54.5	0
+176	-54.5	0
+177	-54.5	0
+178	-54.5	0
+179	-54.5	0
+180	-54.5	0
+181	-54.5	0
+182	-54.5	0
+183	-54.5	0
+184	-54.5	0
+185	-54.5	0
+186	-54.5	0
+187	-54.5	0
+188	-54.5	0
+189	-54.5	0
+190	-54.5	0
+191	-54.5	0
+192	-54.5	0
+193	-54.5	0
+194	-54.5	0
+195	-54.5	0
+196	-54.5	0
+197	-54.5	0
+198	-54.5	0
+199	-54.5	0
+200	-54.5	0
+201	-54.5	0
+202	-54.5	0
+203	-54.5	0
+204	-54.5	0
+205	-54.5	0
+206	-54.5	0
+207	-54.5	0
+208	-54.5	0
+209	-54.5	0
+210	-54.5	0
+211	-54.5	0
+212	-54.5	0
+213	-54.5	0
+214	-54.5	0
+215	-54.5	0
+216	-54.5	0
+217	-54.5	0
+218	-54.5	0
+219	-54.5	0
+220	-54.5	0
+221	-54.5	0
+222	-54.5	0
+223	-54.5	0
+224	-54.5	0
+225	-54.5	0
+226	-54.5	0
+227	-54.5	0
+228	-54.5	0
+229	-54.5	0
+230	-54.5	0
+231	-54.5	0
+232	-54.5	0
+233	-54.5	0
+234	-54.5	0
+235	-54.5	0
+236	-54.5	0
+237	-54.5	0
+238	-54.5	0
+239	-54.5	0
+240	-54.5	0
+241	-54.5	0
+242	-54.5	0
+243	-54.5	0
+244	-54.5	0
+245	-54.5	0
+246	-54.5	0
+247	-54.5	0
+248	-54.5	0
+249	-54.5	0
+250	-54.5	0
+251	-54.5	0
+252	-54.5	0
+253	-54.5	0
+254	-54.5	0
+255	-54.5	0
+256	-54.5	0
+257	-54.5	0
+258	-54.5	0
+259	-54.5	0
+260	-54.5	0
+261	-54.5	0
+262	-54.5	0
+263	-54.5	0
+264	-54.5	0
+265	-54.5	0
+266	-54.5	0
+267	-54.5	0
+268	-54.5	0
+269	-54.5	0
+270	-54.5	0
+271	-54.5	0
+272	-54.5	0
+273	-54.5	0
+274	-54.5	0
+275	-54.5	0
+276	-54.5	0
+277	-54.5	0
+278	-54.5	0
+279	-54.5	0
+280	-54.5	0
+281	-54.5	0
+282	-54.5	0
+283	-54.5	0
+284	-54.5	0
+285	-54.5	0
+286	-54.5	0
+287	-54.5	0
+288	-54.5	0
+289	-54.5	0
+290	-54.5	0
+291	-54.5	0
+292	-54.5	0
+293	-54.5	0
+294	-54.5	0
+295	-54.5	0
+296	-54.5	0
+297	-54.5	0
+298	-54.5	0
+299	-54.5	0
+300	-54.5	0
+301	-54.5	0
+302	-54.5	0
+303	-54.5	0
+304	-54.5	0
+305	-54.5	0
+306	-54.5	0
+307	-54.5	0
+308	-54.5	0
+309	-54.5	0
+310	-54.5	0
+311	-54.5	0
+312	-54.5	0
+313	-54.5	0
+314	-54.5	0
+315	-54.5	0
+316	-54.5	0
+317	-54.5	0
+318	-54.5	0
+319	-54.5	0
+320	-54.5	0
+321	-54.5	0
+322	-54.5	0
+323	-54.5	0
+324	-54.5	0
+325	-54.5	0
+326	-54.5	0
+327	-54.5	0
+328	-54.5	0
+329	-54.5	0
+330	-54.5	0
+331	-54.5	0
+332	-54.5	0
+333	-54.5	0
+334	-54.5	0
+335	-54.5	0
+336	-54.5	0
+337	-54.5	0
+338	-54.5	0
+339	-54.5	0
+340	-54.5	0
+341	-54.5	0
+342	-54.5	0
+343	-54.5	0
+344	-54.5	0
+345	-54.5	0
+346	-54.5	0
+347	-54.5	0
+348	-54.5	0
+349	-54.5	0
+350	-54.5	0
+351	-54.5	0
+352	-54.5	0
+353	-54.5	0
+354	-54.5	0
+355	-54.5	0
+356	-54.5	0
+357	-54.5	0
+358	-54.5	0
+359	-54.5	0
+360	-54.5	0
+0	-54	0
+1	-54	0
+2	-54	0
+3	-54	0
+4	-54	0
+5	-54	0
+6	-54	0
+7	-54	0
+8	-54	0
+9	-54	0
+10	-54	0
+11	-54	0
+12	-54	0
+13	-54	0
+14	-54	0
+15	-54	0
+16	-54	0
+17	-54	0
+18	-54	0
+19	-54	0
+20	-54	0
+21	-54	0
+22	-54	0
+23	-54	0
+24	-54	0
+25	-54	0
+26	-54	0
+27	-54	0
+28	-54	0
+29	-54	0
+30	-54	0
+31	-54	0
+32	-54	0
+33	-54	0
+34	-54	0
+35	-54	0
+36	-54	0
+37	-54	0
+38	-54	0
+39	-54	0
+40	-54	0
+41	-54	0
+42	-54	0
+43	-54	0
+44	-54	0
+45	-54	0
+46	-54	0
+47	-54	0
+48	-54	0
+49	-54	0
+50	-54	0
+51	-54	0
+52	-54	0
+53	-54	0
+54	-54	0
+55	-54	0
+56	-54	0
+57	-54	0
+58	-54	0
+59	-54	0
+60	-54	0
+61	-54	0
+62	-54	0
+63	-54	0
+64	-54	0
+65	-54	0
+66	-54	0
+67	-54	0
+68	-54	0
+69	-54	0
+70	-54	0
+71	-54	0
+72	-54	0
+73	-54	0
+74	-54	0
+75	-54	0
+76	-54	0
+77	-54	0
+78	-54	0
+79	-54	0
+80	-54	0
+81	-54	0
+82	-54	0
+83	-54	0
+84	-54	0
+85	-54	0
+86	-54	0
+87	-54	0
+88	-54	0
+89	-54	0
+90	-54	0
+91	-54	0
+92	-54	0
+93	-54	0
+94	-54	0
+95	-54	0
+96	-54	0
+97	-54	0
+98	-54	0
+99	-54	0
+100	-54	0
+101	-54	0
+102	-54	0
+103	-54	0
+104	-54	0
+105	-54	0
+106	-54	0
+107	-54	0
+108	-54	0
+109	-54	0
+110	-54	0
+111	-54	0
+112	-54	0
+113	-54	0
+114	-54	0
+115	-54	0
+116	-54	0
+117	-54	0
+118	-54	0
+119	-54	0
+120	-54	0
+121	-54	0
+122	-54	0
+123	-54	0
+124	-54	0
+125	-54	0
+126	-54	0
+127	-54	0
+128	-54	0
+129	-54	0
+130	-54	0
+131	-54	0
+132	-54	0
+133	-54	0
+134	-54	0
+135	-54	0
+136	-54	0
+137	-54	0
+138	-54	0
+139	-54	0
+140	-54	0
+141	-54	0
+142	-54	0
+143	-54	0
+144	-54	0
+145	-54	0
+146	-54	0
+147	-54	0
+148	-54	0
+149	-54	0
+150	-54	0
+151	-54	0
+152	-54	0
+153	-54	0
+154	-54	0
+155	-54	0
+156	-54	0
+157	-54	0
+158	-54	0
+159	-54	0
+160	-54	0
+161	-54	0
+162	-54	0
+163	-54	0
+164	-54	0
+165	-54	0
+166	-54	0
+167	-54	0
+168	-54	0
+169	-54	0
+170	-54	0
+171	-54	0
+172	-54	0
+173	-54	0
+174	-54	0
+175	-54	0
+176	-54	0
+177	-54	0
+178	-54	0
+179	-54	0
+180	-54	0
+181	-54	0
+182	-54	0
+183	-54	0
+184	-54	0
+185	-54	0
+186	-54	0
+187	-54	0
+188	-54	0
+189	-54	0
+190	-54	0
+191	-54	0
+192	-54	0
+193	-54	0
+194	-54	0
+195	-54	0
+196	-54	0
+197	-54	0
+198	-54	0
+199	-54	0
+200	-54	0
+201	-54	0
+202	-54	0
+203	-54	0
+204	-54	0
+205	-54	0
+206	-54	0
+207	-54	0
+208	-54	0
+209	-54	0
+210	-54	0
+211	-54	0
+212	-54	0
+213	-54	0
+214	-54	0
+215	-54	0
+216	-54	0
+217	-54	0
+218	-54	0
+219	-54	0
+220	-54	0
+221	-54	0
+222	-54	0
+223	-54	0
+224	-54	0
+225	-54	0
+226	-54	0
+227	-54	0
+228	-54	0
+229	-54	0
+230	-54	0
+231	-54	0
+232	-54	0
+233	-54	0
+234	-54	0
+235	-54	0
+236	-54	0
+237	-54	0
+238	-54	0
+239	-54	0
+240	-54	0
+241	-54	0
+242	-54	0
+243	-54	0
+244	-54	0
+245	-54	0
+246	-54	0
+247	-54	0
+248	-54	0
+249	-54	0
+250	-54	0
+251	-54	0
+252	-54	0
+253	-54	0
+254	-54	0
+255	-54	0
+256	-54	0
+257	-54	0
+258	-54	0
+259	-54	0
+260	-54	0
+261	-54	0
+262	-54	0
+263	-54	0
+264	-54	0
+265	-54	0
+266	-54	0
+267	-54	0
+268	-54	0
+269	-54	0
+270	-54	0
+271	-54	0
+272	-54	0
+273	-54	0
+274	-54	0
+275	-54	0
+276	-54	0
+277	-54	0
+278	-54	0
+279	-54	0
+280	-54	0
+281	-54	0
+282	-54	0
+283	-54	0
+284	-54	0
+285	-54	0
+286	-54	0
+287	-54	0
+288	-54	0
+289	-54	0
+290	-54	0
+291	-54	0
+292	-54	0
+293	-54	0
+294	-54	0
+295	-54	0
+296	-54	0
+297	-54	0
+298	-54	0
+299	-54	0
+300	-54	0
+301	-54	0
+302	-54	0
+303	-54	0
+304	-54	0
+305	-54	0
+306	-54	0
+307	-54	0
+308	-54	0
+309	-54	0
+310	-54	0
+311	-54	0
+312	-54	0
+313	-54	0
+314	-54	0
+315	-54	0
+316	-54	0
+317	-54	0
+318	-54	0
+319	-54	0
+320	-54	0
+321	-54	0
+322	-54	0
+323	-54	0
+324	-54	0
+325	-54	0
+326	-54	0
+327	-54	0
+328	-54	0
+329	-54	0
+330	-54	0
+331	-54	0
+332	-54	0
+333	-54	0
+334	-54	0
+335	-54	0
+336	-54	0
+337	-54	0
+338	-54	0
+339	-54	0
+340	-54	0
+341	-54	0
+342	-54	0
+343	-54	0
+344	-54	0
+345	-54	0
+346	-54	0
+347	-54	0
+348	-54	0
+349	-54	0
+350	-54	0
+351	-54	0
+352	-54	0
+353	-54	0
+354	-54	0
+355	-54	0
+356	-54	0
+357	-54	0
+358	-54	0
+359	-54	0
+360	-54	0
+0	-53.5	0
+1	-53.5	0
+2	-53.5	0
+3	-53.5	0
+4	-53.5	0
+5	-53.5	0
+6	-53.5	0
+7	-53.5	0
+8	-53.5	0
+9	-53.5	0
+10	-53.5	0
+11	-53.5	0
+12	-53.5	0
+13	-53.5	0
+14	-53.5	0
+15	-53.5	0
+16	-53.5	0
+17	-53.5	0
+18	-53.5	0
+19	-53.5	0
+20	-53.5	0
+21	-53.5	0
+22	-53.5	0
+23	-53.5	0
+24	-53.5	0
+25	-53.5	0
+26	-53.5	0
+27	-53.5	0
+28	-53.5	0
+29	-53.5	0
+30	-53.5	0
+31	-53.5	0
+32	-53.5	0
+33	-53.5	0
+34	-53.5	0
+35	-53.5	0
+36	-53.5	0
+37	-53.5	0
+38	-53.5	0
+39	-53.5	0
+40	-53.5	0
+41	-53.5	0
+42	-53.5	0
+43	-53.5	0
+44	-53.5	0
+45	-53.5	0
+46	-53.5	0
+47	-53.5	0
+48	-53.5	0
+49	-53.5	0
+50	-53.5	0
+51	-53.5	0
+52	-53.5	0
+53	-53.5	0
+54	-53.5	0
+55	-53.5	0
+56	-53.5	0
+57	-53.5	0
+58	-53.5	0
+59	-53.5	0
+60	-53.5	0
+61	-53.5	0
+62	-53.5	0
+63	-53.5	0
+64	-53.5	0
+65	-53.5	0
+66	-53.5	0
+67	-53.5	0
+68	-53.5	0
+69	-53.5	0
+70	-53.5	0
+71	-53.5	0
+72	-53.5	0
+73	-53.5	0
+74	-53.5	0
+75	-53.5	0
+76	-53.5	0
+77	-53.5	0
+78	-53.5	0
+79	-53.5	0
+80	-53.5	0
+81	-53.5	0
+82	-53.5	0
+83	-53.5	0
+84	-53.5	0
+85	-53.5	0
+86	-53.5	0
+87	-53.5	0
+88	-53.5	0
+89	-53.5	0
+90	-53.5	0
+91	-53.5	0
+92	-53.5	0
+93	-53.5	0
+94	-53.5	0
+95	-53.5	0
+96	-53.5	0
+97	-53.5	0
+98	-53.5	0
+99	-53.5	0
+100	-53.5	0
+101	-53.5	0
+102	-53.5	0
+103	-53.5	0
+104	-53.5	0
+105	-53.5	0
+106	-53.5	0
+107	-53.5	0
+108	-53.5	0
+109	-53.5	0
+110	-53.5	0
+111	-53.5	0
+112	-53.5	0
+113	-53.5	0
+114	-53.5	0
+115	-53.5	0
+116	-53.5	0
+117	-53.5	0
+118	-53.5	0
+119	-53.5	0
+120	-53.5	0
+121	-53.5	0
+122	-53.5	0
+123	-53.5	0
+124	-53.5	0
+125	-53.5	0
+126	-53.5	0
+127	-53.5	0
+128	-53.5	0
+129	-53.5	0
+130	-53.5	0
+131	-53.5	0
+132	-53.5	0
+133	-53.5	0
+134	-53.5	0
+135	-53.5	0
+136	-53.5	0
+137	-53.5	0
+138	-53.5	0
+139	-53.5	0
+140	-53.5	0
+141	-53.5	0
+142	-53.5	0
+143	-53.5	0
+144	-53.5	0
+145	-53.5	0
+146	-53.5	0
+147	-53.5	0
+148	-53.5	0
+149	-53.5	0
+150	-53.5	0
+151	-53.5	0
+152	-53.5	0
+153	-53.5	0
+154	-53.5	0
+155	-53.5	0
+156	-53.5	0
+157	-53.5	0
+158	-53.5	0
+159	-53.5	0
+160	-53.5	0
+161	-53.5	0
+162	-53.5	0
+163	-53.5	0
+164	-53.5	0
+165	-53.5	0
+166	-53.5	0
+167	-53.5	0
+168	-53.5	0
+169	-53.5	0
+170	-53.5	0
+171	-53.5	0
+172	-53.5	0
+173	-53.5	0
+174	-53.5	0
+175	-53.5	0
+176	-53.5	0
+177	-53.5	0
+178	-53.5	0
+179	-53.5	0
+180	-53.5	0
+181	-53.5	0
+182	-53.5	0
+183	-53.5	0
+184	-53.5	0
+185	-53.5	0
+186	-53.5	0
+187	-53.5	0
+188	-53.5	0
+189	-53.5	0
+190	-53.5	0
+191	-53.5	0
+192	-53.5	0
+193	-53.5	0
+194	-53.5	0
+195	-53.5	0
+196	-53.5	0
+197	-53.5	0
+198	-53.5	0
+199	-53.5	0
+200	-53.5	0
+201	-53.5	0
+202	-53.5	0
+203	-53.5	0
+204	-53.5	0
+205	-53.5	0
+206	-53.5	0
+207	-53.5	0
+208	-53.5	0
+209	-53.5	0
+210	-53.5	0
+211	-53.5	0
+212	-53.5	0
+213	-53.5	0
+214	-53.5	0
+215	-53.5	0
+216	-53.5	0
+217	-53.5	0
+218	-53.5	0
+219	-53.5	0
+220	-53.5	0
+221	-53.5	0
+222	-53.5	0
+223	-53.5	0
+224	-53.5	0
+225	-53.5	0
+226	-53.5	0
+227	-53.5	0
+228	-53.5	0
+229	-53.5	0
+230	-53.5	0
+231	-53.5	0
+232	-53.5	0
+233	-53.5	0
+234	-53.5	0
+235	-53.5	0
+236	-53.5	0
+237	-53.5	0
+238	-53.5	0
+239	-53.5	0
+240	-53.5	0
+241	-53.5	0
+242	-53.5	0
+243	-53.5	0
+244	-53.5	0
+245	-53.5	0
+246	-53.5	0
+247	-53.5	0
+248	-53.5	0
+249	-53.5	0
+250	-53.5	0
+251	-53.5	0
+252	-53.5	0
+253	-53.5	0
+254	-53.5	0
+255	-53.5	0
+256	-53.5	0
+257	-53.5	0
+258	-53.5	0
+259	-53.5	0
+260	-53.5	0
+261	-53.5	0
+262	-53.5	0
+263	-53.5	0
+264	-53.5	0
+265	-53.5	0
+266	-53.5	0
+267	-53.5	0
+268	-53.5	0
+269	-53.5	0
+270	-53.5	0
+271	-53.5	0
+272	-53.5	0
+273	-53.5	0
+274	-53.5	0
+275	-53.5	0
+276	-53.5	0
+277	-53.5	0
+278	-53.5	0
+279	-53.5	0
+280	-53.5	0
+281	-53.5	0
+282	-53.5	0
+283	-53.5	0
+284	-53.5	0
+285	-53.5	0
+286	-53.5	0
+287	-53.5	0
+288	-53.5	0
+289	-53.5	0
+290	-53.5	0
+291	-53.5	0
+292	-53.5	0
+293	-53.5	0
+294	-53.5	0
+295	-53.5	0
+296	-53.5	0
+297	-53.5	0
+298	-53.5	0
+299	-53.5	0
+300	-53.5	0
+301	-53.5	0
+302	-53.5	0
+303	-53.5	0
+304	-53.5	0
+305	-53.5	0
+306	-53.5	0
+307	-53.5	0
+308	-53.5	0
+309	-53.5	0
+310	-53.5	0
+311	-53.5	0
+312	-53.5	0
+313	-53.5	0
+314	-53.5	0
+315	-53.5	0
+316	-53.5	0
+317	-53.5	0
+318	-53.5	0
+319	-53.5	0
+320	-53.5	0
+321	-53.5	0
+322	-53.5	0
+323	-53.5	0
+324	-53.5	0
+325	-53.5	0
+326	-53.5	0
+327	-53.5	0
+328	-53.5	0
+329	-53.5	0
+330	-53.5	0
+331	-53.5	0
+332	-53.5	0
+333	-53.5	0
+334	-53.5	0
+335	-53.5	0
+336	-53.5	0
+337	-53.5	0
+338	-53.5	0
+339	-53.5	0
+340	-53.5	0
+341	-53.5	0
+342	-53.5	0
+343	-53.5	0
+344	-53.5	0
+345	-53.5	0
+346	-53.5	0
+347	-53.5	0
+348	-53.5	0
+349	-53.5	0
+350	-53.5	0
+351	-53.5	0
+352	-53.5	0
+353	-53.5	0
+354	-53.5	0
+355	-53.5	0
+356	-53.5	0
+357	-53.5	0
+358	-53.5	0
+359	-53.5	0
+360	-53.5	0
+0	-53	0
+1	-53	0
+2	-53	0
+3	-53	0
+4	-53	0
+5	-53	0
+6	-53	0
+7	-53	0
+8	-53	0
+9	-53	0
+10	-53	0
+11	-53	0
+12	-53	0
+13	-53	0
+14	-53	0
+15	-53	0
+16	-53	0
+17	-53	0
+18	-53	0
+19	-53	0
+20	-53	0
+21	-53	0
+22	-53	0
+23	-53	0
+24	-53	0
+25	-53	0
+26	-53	0
+27	-53	0
+28	-53	0
+29	-53	0
+30	-53	0
+31	-53	0
+32	-53	0
+33	-53	0
+34	-53	0
+35	-53	0
+36	-53	0
+37	-53	0
+38	-53	0
+39	-53	0
+40	-53	0
+41	-53	0
+42	-53	0
+43	-53	0
+44	-53	0
+45	-53	0
+46	-53	0
+47	-53	0
+48	-53	0
+49	-53	0
+50	-53	0
+51	-53	0
+52	-53	0
+53	-53	0
+54	-53	0
+55	-53	0
+56	-53	0
+57	-53	0
+58	-53	0
+59	-53	0
+60	-53	0
+61	-53	0
+62	-53	0
+63	-53	0
+64	-53	0
+65	-53	0
+66	-53	0
+67	-53	0
+68	-53	0
+69	-53	0
+70	-53	0
+71	-53	0
+72	-53	0
+73	-53	0
+74	-53	0
+75	-53	0
+76	-53	0
+77	-53	0
+78	-53	0
+79	-53	0
+80	-53	0
+81	-53	0
+82	-53	0
+83	-53	0
+84	-53	0
+85	-53	0
+86	-53	0
+87	-53	0
+88	-53	0
+89	-53	0
+90	-53	0
+91	-53	0
+92	-53	0
+93	-53	0
+94	-53	0
+95	-53	0
+96	-53	0
+97	-53	0
+98	-53	0
+99	-53	0
+100	-53	0
+101	-53	0
+102	-53	0
+103	-53	0
+104	-53	0
+105	-53	0
+106	-53	0
+107	-53	0
+108	-53	0
+109	-53	0
+110	-53	0
+111	-53	0
+112	-53	0
+113	-53	0
+114	-53	0
+115	-53	0
+116	-53	0
+117	-53	0
+118	-53	0
+119	-53	0
+120	-53	0
+121	-53	0
+122	-53	0
+123	-53	0
+124	-53	0
+125	-53	0
+126	-53	0
+127	-53	0
+128	-53	0
+129	-53	0
+130	-53	0
+131	-53	0
+132	-53	0
+133	-53	0
+134	-53	0
+135	-53	0
+136	-53	0
+137	-53	0
+138	-53	0
+139	-53	0
+140	-53	0
+141	-53	0
+142	-53	0
+143	-53	0
+144	-53	0
+145	-53	0
+146	-53	0
+147	-53	0
+148	-53	0
+149	-53	0
+150	-53	0
+151	-53	0
+152	-53	0
+153	-53	0
+154	-53	0
+155	-53	0
+156	-53	0
+157	-53	0
+158	-53	0
+159	-53	0
+160	-53	0
+161	-53	0
+162	-53	0
+163	-53	0
+164	-53	0
+165	-53	0
+166	-53	0
+167	-53	0
+168	-53	0
+169	-53	0
+170	-53	0
+171	-53	0
+172	-53	0
+173	-53	0
+174	-53	0
+175	-53	0
+176	-53	0
+177	-53	0
+178	-53	0
+179	-53	0
+180	-53	0
+181	-53	0
+182	-53	0
+183	-53	0
+184	-53	0
+185	-53	0
+186	-53	0
+187	-53	0
+188	-53	0
+189	-53	0
+190	-53	0
+191	-53	0
+192	-53	0
+193	-53	0
+194	-53	0
+195	-53	0
+196	-53	0
+197	-53	0
+198	-53	0
+199	-53	0
+200	-53	0
+201	-53	0
+202	-53	0
+203	-53	0
+204	-53	0
+205	-53	0
+206	-53	0
+207	-53	0
+208	-53	0
+209	-53	0
+210	-53	0
+211	-53	0
+212	-53	0
+213	-53	0
+214	-53	0
+215	-53	0
+216	-53	0
+217	-53	0
+218	-53	0
+219	-53	0
+220	-53	0
+221	-53	0
+222	-53	0
+223	-53	0
+224	-53	0
+225	-53	0
+226	-53	0
+227	-53	0
+228	-53	0
+229	-53	0
+230	-53	0
+231	-53	0
+232	-53	0
+233	-53	0
+234	-53	0
+235	-53	0
+236	-53	0
+237	-53	0
+238	-53	0
+239	-53	0
+240	-53	0
+241	-53	0
+242	-53	0
+243	-53	0
+244	-53	0
+245	-53	0
+246	-53	0
+247	-53	0
+248	-53	0
+249	-53	0
+250	-53	0
+251	-53	0
+252	-53	0
+253	-53	0
+254	-53	0
+255	-53	0
+256	-53	0
+257	-53	0
+258	-53	0
+259	-53	0
+260	-53	0
+261	-53	0
+262	-53	0
+263	-53	0
+264	-53	0
+265	-53	0
+266	-53	0
+267	-53	0
+268	-53	0
+269	-53	0
+270	-53	0
+271	-53	0
+272	-53	0
+273	-53	0
+274	-53	0
+275	-53	0
+276	-53	0
+277	-53	0
+278	-53	0
+279	-53	0
+280	-53	0
+281	-53	0
+282	-53	0
+283	-53	0
+284	-53	0
+285	-53	0
+286	-53	0
+287	-53	0
+288	-53	0
+289	-53	0
+290	-53	0
+291	-53	0
+292	-53	0
+293	-53	0
+294	-53	0
+295	-53	0
+296	-53	0
+297	-53	0
+298	-53	0
+299	-53	0
+300	-53	0
+301	-53	0
+302	-53	0
+303	-53	0
+304	-53	0
+305	-53	0
+306	-53	0
+307	-53	0
+308	-53	0
+309	-53	0
+310	-53	0
+311	-53	0
+312	-53	0
+313	-53	0
+314	-53	0
+315	-53	0
+316	-53	0
+317	-53	0
+318	-53	0
+319	-53	0
+320	-53	0
+321	-53	0
+322	-53	0
+323	-53	0
+324	-53	0
+325	-53	0
+326	-53	0
+327	-53	0
+328	-53	0
+329	-53	0
+330	-53	0
+331	-53	0
+332	-53	0
+333	-53	0
+334	-53	0
+335	-53	0
+336	-53	0
+337	-53	0
+338	-53	0
+339	-53	0
+340	-53	0
+341	-53	0
+342	-53	0
+343	-53	0
+344	-53	0
+345	-53	0
+346	-53	0
+347	-53	0
+348	-53	0
+349	-53	0
+350	-53	0
+351	-53	0
+352	-53	0
+353	-53	0
+354	-53	0
+355	-53	0
+356	-53	0
+357	-53	0
+358	-53	0
+359	-53	0
+360	-53	0
+0	-52.5	0
+1	-52.5	0
+2	-52.5	0
+3	-52.5	0
+4	-52.5	0
+5	-52.5	0
+6	-52.5	0
+7	-52.5	0
+8	-52.5	0
+9	-52.5	0
+10	-52.5	0
+11	-52.5	0
+12	-52.5	0
+13	-52.5	0
+14	-52.5	0
+15	-52.5	0
+16	-52.5	0
+17	-52.5	0
+18	-52.5	0
+19	-52.5	0
+20	-52.5	0
+21	-52.5	0
+22	-52.5	0
+23	-52.5	0
+24	-52.5	0
+25	-52.5	0
+26	-52.5	0
+27	-52.5	0
+28	-52.5	0
+29	-52.5	0
+30	-52.5	0
+31	-52.5	0
+32	-52.5	0
+33	-52.5	0
+34	-52.5	0
+35	-52.5	0
+36	-52.5	0
+37	-52.5	0
+38	-52.5	0
+39	-52.5	0
+40	-52.5	0
+41	-52.5	0
+42	-52.5	0
+43	-52.5	0
+44	-52.5	0
+45	-52.5	0
+46	-52.5	0
+47	-52.5	0
+48	-52.5	0
+49	-52.5	0
+50	-52.5	0
+51	-52.5	0
+52	-52.5	0
+53	-52.5	0
+54	-52.5	0
+55	-52.5	0
+56	-52.5	0
+57	-52.5	0
+58	-52.5	0
+59	-52.5	0
+60	-52.5	0
+61	-52.5	0
+62	-52.5	0
+63	-52.5	0
+64	-52.5	0
+65	-52.5	0
+66	-52.5	0
+67	-52.5	0
+68	-52.5	0
+69	-52.5	0
+70	-52.5	0
+71	-52.5	0
+72	-52.5	0
+73	-52.5	0
+74	-52.5	0
+75	-52.5	0
+76	-52.5	0
+77	-52.5	0
+78	-52.5	0
+79	-52.5	0
+80	-52.5	0
+81	-52.5	0
+82	-52.5	0
+83	-52.5	0
+84	-52.5	0
+85	-52.5	0
+86	-52.5	0
+87	-52.5	0
+88	-52.5	0
+89	-52.5	0
+90	-52.5	0
+91	-52.5	0
+92	-52.5	0
+93	-52.5	0
+94	-52.5	0
+95	-52.5	0
+96	-52.5	0
+97	-52.5	0
+98	-52.5	0
+99	-52.5	0
+100	-52.5	0
+101	-52.5	0
+102	-52.5	0
+103	-52.5	0
+104	-52.5	0
+105	-52.5	0
+106	-52.5	0
+107	-52.5	0
+108	-52.5	0
+109	-52.5	0
+110	-52.5	0
+111	-52.5	0
+112	-52.5	0
+113	-52.5	0
+114	-52.5	0
+115	-52.5	0
+116	-52.5	0
+117	-52.5	0
+118	-52.5	0
+119	-52.5	0
+120	-52.5	0
+121	-52.5	0
+122	-52.5	0
+123	-52.5	0
+124	-52.5	0
+125	-52.5	0
+126	-52.5	0
+127	-52.5	0
+128	-52.5	0
+129	-52.5	0
+130	-52.5	0
+131	-52.5	0
+132	-52.5	0
+133	-52.5	0
+134	-52.5	0
+135	-52.5	0
+136	-52.5	0
+137	-52.5	0
+138	-52.5	0
+139	-52.5	0
+140	-52.5	0
+141	-52.5	0
+142	-52.5	0
+143	-52.5	0
+144	-52.5	0
+145	-52.5	0
+146	-52.5	0
+147	-52.5	0
+148	-52.5	0
+149	-52.5	0
+150	-52.5	0
+151	-52.5	0
+152	-52.5	0
+153	-52.5	0
+154	-52.5	0
+155	-52.5	0
+156	-52.5	0
+157	-52.5	0
+158	-52.5	0
+159	-52.5	0
+160	-52.5	0
+161	-52.5	0
+162	-52.5	0
+163	-52.5	0
+164	-52.5	0
+165	-52.5	0
+166	-52.5	0
+167	-52.5	0
+168	-52.5	0
+169	-52.5	0
+170	-52.5	0
+171	-52.5	0
+172	-52.5	0
+173	-52.5	0
+174	-52.5	0
+175	-52.5	0
+176	-52.5	0
+177	-52.5	0
+178	-52.5	0
+179	-52.5	0
+180	-52.5	0
+181	-52.5	0
+182	-52.5	0
+183	-52.5	0
+184	-52.5	0
+185	-52.5	0
+186	-52.5	0
+187	-52.5	0
+188	-52.5	0
+189	-52.5	0
+190	-52.5	0
+191	-52.5	0
+192	-52.5	0
+193	-52.5	0
+194	-52.5	0
+195	-52.5	0
+196	-52.5	0
+197	-52.5	0
+198	-52.5	0
+199	-52.5	0
+200	-52.5	0
+201	-52.5	0
+202	-52.5	0
+203	-52.5	0
+204	-52.5	0
+205	-52.5	0
+206	-52.5	0
+207	-52.5	0
+208	-52.5	0
+209	-52.5	0
+210	-52.5	0
+211	-52.5	0
+212	-52.5	0
+213	-52.5	0
+214	-52.5	0
+215	-52.5	0
+216	-52.5	0
+217	-52.5	0
+218	-52.5	0
+219	-52.5	0
+220	-52.5	0
+221	-52.5	0
+222	-52.5	0
+223	-52.5	0
+224	-52.5	0
+225	-52.5	0
+226	-52.5	0
+227	-52.5	0
+228	-52.5	0
+229	-52.5	0
+230	-52.5	0
+231	-52.5	0
+232	-52.5	0
+233	-52.5	0
+234	-52.5	0
+235	-52.5	0
+236	-52.5	0
+237	-52.5	0
+238	-52.5	0
+239	-52.5	0
+240	-52.5	0
+241	-52.5	0
+242	-52.5	0
+243	-52.5	0
+244	-52.5	0
+245	-52.5	0
+246	-52.5	0
+247	-52.5	0
+248	-52.5	0
+249	-52.5	0
+250	-52.5	0
+251	-52.5	0
+252	-52.5	0
+253	-52.5	0
+254	-52.5	0
+255	-52.5	0
+256	-52.5	0
+257	-52.5	0
+258	-52.5	0
+259	-52.5	0
+260	-52.5	0
+261	-52.5	0
+262	-52.5	0
+263	-52.5	0
+264	-52.5	0
+265	-52.5	0
+266	-52.5	0
+267	-52.5	0
+268	-52.5	0
+269	-52.5	0
+270	-52.5	0
+271	-52.5	0
+272	-52.5	0
+273	-52.5	0
+274	-52.5	0
+275	-52.5	0
+276	-52.5	0
+277	-52.5	0
+278	-52.5	0
+279	-52.5	0
+280	-52.5	0
+281	-52.5	0
+282	-52.5	0
+283	-52.5	0
+284	-52.5	0
+285	-52.5	0
+286	-52.5	0
+287	-52.5	0
+288	-52.5	0
+289	-52.5	0
+290	-52.5	0
+291	-52.5	0
+292	-52.5	0
+293	-52.5	0
+294	-52.5	0
+295	-52.5	0
+296	-52.5	0
+297	-52.5	0
+298	-52.5	0
+299	-52.5	0
+300	-52.5	0
+301	-52.5	0
+302	-52.5	0
+303	-52.5	0
+304	-52.5	0
+305	-52.5	0
+306	-52.5	0
+307	-52.5	0
+308	-52.5	0
+309	-52.5	0
+310	-52.5	0
+311	-52.5	0
+312	-52.5	0
+313	-52.5	0
+314	-52.5	0
+315	-52.5	0
+316	-52.5	0
+317	-52.5	0
+318	-52.5	0
+319	-52.5	0
+320	-52.5	0
+321	-52.5	0
+322	-52.5	0
+323	-52.5	0
+324	-52.5	0
+325	-52.5	0
+326	-52.5	0
+327	-52.5	0
+328	-52.5	0
+329	-52.5	0
+330	-52.5	0
+331	-52.5	0
+332	-52.5	0
+333	-52.5	0
+334	-52.5	0
+335	-52.5	0
+336	-52.5	0
+337	-52.5	0
+338	-52.5	0
+339	-52.5	0
+340	-52.5	0
+341	-52.5	0
+342	-52.5	0
+343	-52.5	0
+344	-52.5	0
+345	-52.5	0
+346	-52.5	0
+347	-52.5	0
+348	-52.5	0
+349	-52.5	0
+350	-52.5	0
+351	-52.5	0
+352	-52.5	0
+353	-52.5	0
+354	-52.5	0
+355	-52.5	0
+356	-52.5	0
+357	-52.5	0
+358	-52.5	0
+359	-52.5	0
+360	-52.5	0
+0	-52	0
+1	-52	0
+2	-52	0
+3	-52	0
+4	-52	0
+5	-52	0
+6	-52	0
+7	-52	0
+8	-52	0
+9	-52	0
+10	-52	0
+11	-52	0
+12	-52	0
+13	-52	0
+14	-52	0
+15	-52	0
+16	-52	0
+17	-52	0
+18	-52	0
+19	-52	0
+20	-52	0
+21	-52	0
+22	-52	0
+23	-52	0
+24	-52	0
+25	-52	0
+26	-52	0
+27	-52	0
+28	-52	0
+29	-52	0
+30	-52	0
+31	-52	0
+32	-52	0
+33	-52	0
+34	-52	0
+35	-52	0
+36	-52	0
+37	-52	0
+38	-52	0
+39	-52	0
+40	-52	0
+41	-52	0
+42	-52	0
+43	-52	0
+44	-52	0
+45	-52	0
+46	-52	0
+47	-52	0
+48	-52	0
+49	-52	0
+50	-52	0
+51	-52	0
+52	-52	0
+53	-52	0
+54	-52	0
+55	-52	0
+56	-52	0
+57	-52	0
+58	-52	0
+59	-52	0
+60	-52	0
+61	-52	0
+62	-52	0
+63	-52	0
+64	-52	0
+65	-52	0
+66	-52	0
+67	-52	0
+68	-52	0
+69	-52	0
+70	-52	0
+71	-52	0
+72	-52	0
+73	-52	0
+74	-52	0
+75	-52	0
+76	-52	0
+77	-52	0
+78	-52	0
+79	-52	0
+80	-52	0
+81	-52	0
+82	-52	0
+83	-52	0
+84	-52	0
+85	-52	0
+86	-52	0
+87	-52	0
+88	-52	0
+89	-52	0
+90	-52	0
+91	-52	0
+92	-52	0
+93	-52	0
+94	-52	0
+95	-52	0
+96	-52	0
+97	-52	0
+98	-52	0
+99	-52	0
+100	-52	0
+101	-52	0
+102	-52	0
+103	-52	0
+104	-52	0
+105	-52	0
+106	-52	0
+107	-52	0
+108	-52	0
+109	-52	0
+110	-52	0
+111	-52	0
+112	-52	0
+113	-52	0
+114	-52	0
+115	-52	0
+116	-52	0
+117	-52	0
+118	-52	0
+119	-52	0
+120	-52	0
+121	-52	0
+122	-52	0
+123	-52	0
+124	-52	0
+125	-52	0
+126	-52	0
+127	-52	0
+128	-52	0
+129	-52	0
+130	-52	0
+131	-52	0
+132	-52	0
+133	-52	0
+134	-52	0
+135	-52	0
+136	-52	0
+137	-52	0
+138	-52	0
+139	-52	0
+140	-52	0
+141	-52	0
+142	-52	0
+143	-52	0
+144	-52	0
+145	-52	0
+146	-52	0
+147	-52	0
+148	-52	0
+149	-52	0
+150	-52	0
+151	-52	0
+152	-52	0
+153	-52	0
+154	-52	0
+155	-52	0
+156	-52	0
+157	-52	0
+158	-52	0
+159	-52	0
+160	-52	0
+161	-52	0
+162	-52	0
+163	-52	0
+164	-52	0
+165	-52	0
+166	-52	0
+167	-52	0
+168	-52	0
+169	-52	0
+170	-52	0
+171	-52	0
+172	-52	0
+173	-52	0
+174	-52	0
+175	-52	0
+176	-52	0
+177	-52	0
+178	-52	0
+179	-52	0
+180	-52	0
+181	-52	0
+182	-52	0
+183	-52	0
+184	-52	0
+185	-52	0
+186	-52	0
+187	-52	0
+188	-52	0
+189	-52	0
+190	-52	0
+191	-52	0
+192	-52	0
+193	-52	0
+194	-52	0
+195	-52	0
+196	-52	0
+197	-52	0
+198	-52	0
+199	-52	0
+200	-52	0
+201	-52	0
+202	-52	0
+203	-52	0
+204	-52	0
+205	-52	0
+206	-52	0
+207	-52	0
+208	-52	0
+209	-52	0
+210	-52	0
+211	-52	0
+212	-52	0
+213	-52	0
+214	-52	0
+215	-52	0
+216	-52	0
+217	-52	0
+218	-52	0
+219	-52	0
+220	-52	0
+221	-52	0
+222	-52	0
+223	-52	0
+224	-52	0
+225	-52	0
+226	-52	0
+227	-52	0
+228	-52	0
+229	-52	0
+230	-52	0
+231	-52	0
+232	-52	0
+233	-52	0
+234	-52	0
+235	-52	0
+236	-52	0
+237	-52	0
+238	-52	0
+239	-52	0
+240	-52	0
+241	-52	0
+242	-52	0
+243	-52	0
+244	-52	0
+245	-52	0
+246	-52	0
+247	-52	0
+248	-52	0
+249	-52	0
+250	-52	0
+251	-52	0
+252	-52	0
+253	-52	0
+254	-52	0
+255	-52	0
+256	-52	0
+257	-52	0
+258	-52	0
+259	-52	0
+260	-52	0
+261	-52	0
+262	-52	0
+263	-52	0
+264	-52	0
+265	-52	0
+266	-52	0
+267	-52	0
+268	-52	0
+269	-52	0
+270	-52	0
+271	-52	0
+272	-52	0
+273	-52	0
+274	-52	0
+275	-52	0
+276	-52	0
+277	-52	0
+278	-52	0
+279	-52	0
+280	-52	0
+281	-52	0
+282	-52	0
+283	-52	0
+284	-52	0
+285	-52	0
+286	-52	0
+287	-52	0
+288	-52	0
+289	-52	0
+290	-52	0
+291	-52	0
+292	-52	0
+293	-52	0
+294	-52	0
+295	-52	0
+296	-52	0
+297	-52	0
+298	-52	0
+299	-52	0
+300	-52	0
+301	-52	0
+302	-52	0
+303	-52	0
+304	-52	0
+305	-52	0
+306	-52	0
+307	-52	0
+308	-52	0
+309	-52	0
+310	-52	0
+311	-52	0
+312	-52	0
+313	-52	0
+314	-52	0
+315	-52	0
+316	-52	0
+317	-52	0
+318	-52	0
+319	-52	0
+320	-52	0
+321	-52	0
+322	-52	0
+323	-52	0
+324	-52	0
+325	-52	0
+326	-52	0
+327	-52	0
+328	-52	0
+329	-52	0
+330	-52	0
+331	-52	0
+332	-52	0
+333	-52	0
+334	-52	0
+335	-52	0
+336	-52	0
+337	-52	0
+338	-52	0
+339	-52	0
+340	-52	0
+341	-52	0
+342	-52	0
+343	-52	0
+344	-52	0
+345	-52	0
+346	-52	0
+347	-52	0
+348	-52	0
+349	-52	0
+350	-52	0
+351	-52	0
+352	-52	0
+353	-52	0
+354	-52	0
+355	-52	0
+356	-52	0
+357	-52	0
+358	-52	0
+359	-52	0
+360	-52	0
+0	-51.5	0
+1	-51.5	0
+2	-51.5	0
+3	-51.5	0
+4	-51.5	0
+5	-51.5	0
+6	-51.5	0
+7	-51.5	0
+8	-51.5	0
+9	-51.5	0
+10	-51.5	0
+11	-51.5	0
+12	-51.5	0
+13	-51.5	0
+14	-51.5	0
+15	-51.5	0
+16	-51.5	0
+17	-51.5	0
+18	-51.5	0
+19	-51.5	0
+20	-51.5	0
+21	-51.5	0
+22	-51.5	0
+23	-51.5	0
+24	-51.5	0
+25	-51.5	0
+26	-51.5	0
+27	-51.5	0
+28	-51.5	0
+29	-51.5	0
+30	-51.5	0
+31	-51.5	0
+32	-51.5	0
+33	-51.5	0
+34	-51.5	0
+35	-51.5	0
+36	-51.5	0
+37	-51.5	0
+38	-51.5	0
+39	-51.5	0
+40	-51.5	0
+41	-51.5	0
+42	-51.5	0
+43	-51.5	0
+44	-51.5	0
+45	-51.5	0
+46	-51.5	0
+47	-51.5	0
+48	-51.5	0
+49	-51.5	0
+50	-51.5	0
+51	-51.5	0
+52	-51.5	0
+53	-51.5	0
+54	-51.5	0
+55	-51.5	0
+56	-51.5	0
+57	-51.5	0
+58	-51.5	0
+59	-51.5	0
+60	-51.5	0
+61	-51.5	0
+62	-51.5	0
+63	-51.5	0
+64	-51.5	0
+65	-51.5	0
+66	-51.5	0
+67	-51.5	0
+68	-51.5	0
+69	-51.5	0
+70	-51.5	0
+71	-51.5	0
+72	-51.5	0
+73	-51.5	0
+74	-51.5	0
+75	-51.5	0
+76	-51.5	0
+77	-51.5	0
+78	-51.5	0
+79	-51.5	0
+80	-51.5	0
+81	-51.5	0
+82	-51.5	0
+83	-51.5	0
+84	-51.5	0
+85	-51.5	0
+86	-51.5	0
+87	-51.5	0
+88	-51.5	0
+89	-51.5	0
+90	-51.5	0
+91	-51.5	0
+92	-51.5	0
+93	-51.5	0
+94	-51.5	0
+95	-51.5	0
+96	-51.5	0
+97	-51.5	0
+98	-51.5	0
+99	-51.5	0
+100	-51.5	0
+101	-51.5	0
+102	-51.5	0
+103	-51.5	0
+104	-51.5	0
+105	-51.5	0
+106	-51.5	0
+107	-51.5	0
+108	-51.5	0
+109	-51.5	0
+110	-51.5	0
+111	-51.5	0
+112	-51.5	0
+113	-51.5	0
+114	-51.5	0
+115	-51.5	0
+116	-51.5	0
+117	-51.5	0
+118	-51.5	0
+119	-51.5	0
+120	-51.5	0
+121	-51.5	0
+122	-51.5	0
+123	-51.5	0
+124	-51.5	0
+125	-51.5	0
+126	-51.5	0
+127	-51.5	0
+128	-51.5	0
+129	-51.5	0
+130	-51.5	0
+131	-51.5	0
+132	-51.5	0
+133	-51.5	0
+134	-51.5	0
+135	-51.5	0
+136	-51.5	0
+137	-51.5	0
+138	-51.5	0
+139	-51.5	0
+140	-51.5	0
+141	-51.5	0
+142	-51.5	0
+143	-51.5	0
+144	-51.5	0
+145	-51.5	0
+146	-51.5	0
+147	-51.5	0
+148	-51.5	0
+149	-51.5	0
+150	-51.5	0
+151	-51.5	0
+152	-51.5	0
+153	-51.5	0
+154	-51.5	0
+155	-51.5	0
+156	-51.5	0
+157	-51.5	0
+158	-51.5	0
+159	-51.5	0
+160	-51.5	0
+161	-51.5	0
+162	-51.5	0
+163	-51.5	0
+164	-51.5	0
+165	-51.5	0
+166	-51.5	0
+167	-51.5	0
+168	-51.5	0
+169	-51.5	0
+170	-51.5	0
+171	-51.5	0
+172	-51.5	0
+173	-51.5	0
+174	-51.5	0
+175	-51.5	0
+176	-51.5	0
+177	-51.5	0
+178	-51.5	0
+179	-51.5	0
+180	-51.5	0
+181	-51.5	0
+182	-51.5	0
+183	-51.5	0
+184	-51.5	0
+185	-51.5	0
+186	-51.5	0
+187	-51.5	0
+188	-51.5	0
+189	-51.5	0
+190	-51.5	0
+191	-51.5	0
+192	-51.5	0
+193	-51.5	0
+194	-51.5	0
+195	-51.5	0
+196	-51.5	0
+197	-51.5	0
+198	-51.5	0
+199	-51.5	0
+200	-51.5	0
+201	-51.5	0
+202	-51.5	0
+203	-51.5	0
+204	-51.5	0
+205	-51.5	0
+206	-51.5	0
+207	-51.5	0
+208	-51.5	0
+209	-51.5	0
+210	-51.5	0
+211	-51.5	0
+212	-51.5	0
+213	-51.5	0
+214	-51.5	0
+215	-51.5	0
+216	-51.5	0
+217	-51.5	0
+218	-51.5	0
+219	-51.5	0
+220	-51.5	0
+221	-51.5	0
+222	-51.5	0
+223	-51.5	0
+224	-51.5	0
+225	-51.5	0
+226	-51.5	0
+227	-51.5	0
+228	-51.5	0
+229	-51.5	0
+230	-51.5	0
+231	-51.5	0
+232	-51.5	0
+233	-51.5	0
+234	-51.5	0
+235	-51.5	0
+236	-51.5	0
+237	-51.5	0
+238	-51.5	0
+239	-51.5	0
+240	-51.5	0
+241	-51.5	0
+242	-51.5	0
+243	-51.5	0
+244	-51.5	0
+245	-51.5	0
+246	-51.5	0
+247	-51.5	0
+248	-51.5	0
+249	-51.5	0
+250	-51.5	0
+251	-51.5	0
+252	-51.5	0
+253	-51.5	0
+254	-51.5	0
+255	-51.5	0
+256	-51.5	0
+257	-51.5	0
+258	-51.5	0
+259	-51.5	0
+260	-51.5	0
+261	-51.5	0
+262	-51.5	0
+263	-51.5	0
+264	-51.5	0
+265	-51.5	0
+266	-51.5	0
+267	-51.5	0
+268	-51.5	0
+269	-51.5	0
+270	-51.5	0
+271	-51.5	0
+272	-51.5	0
+273	-51.5	0
+274	-51.5	0
+275	-51.5	0
+276	-51.5	0
+277	-51.5	0
+278	-51.5	0
+279	-51.5	0
+280	-51.5	0
+281	-51.5	0
+282	-51.5	0
+283	-51.5	0
+284	-51.5	0
+285	-51.5	0
+286	-51.5	0
+287	-51.5	0
+288	-51.5	0
+289	-51.5	0
+290	-51.5	0
+291	-51.5	0
+292	-51.5	0
+293	-51.5	0
+294	-51.5	0
+295	-51.5	0
+296	-51.5	0
+297	-51.5	0
+298	-51.5	0
+299	-51.5	0
+300	-51.5	0
+301	-51.5	0
+302	-51.5	0
+303	-51.5	0
+304	-51.5	0
+305	-51.5	0
+306	-51.5	0
+307	-51.5	0
+308	-51.5	0
+309	-51.5	0
+310	-51.5	0
+311	-51.5	0
+312	-51.5	0
+313	-51.5	0
+314	-51.5	0
+315	-51.5	0
+316	-51.5	0
+317	-51.5	0
+318	-51.5	0
+319	-51.5	0
+320	-51.5	0
+321	-51.5	0
+322	-51.5	0
+323	-51.5	0
+324	-51.5	0
+325	-51.5	0
+326	-51.5	0
+327	-51.5	0
+328	-51.5	0
+329	-51.5	0
+330	-51.5	0
+331	-51.5	0
+332	-51.5	0
+333	-51.5	0
+334	-51.5	0
+335	-51.5	0
+336	-51.5	0
+337	-51.5	0
+338	-51.5	0
+339	-51.5	0
+340	-51.5	0
+341	-51.5	0
+342	-51.5	0
+343	-51.5	0
+344	-51.5	0
+345	-51.5	0
+346	-51.5	0
+347	-51.5	0
+348	-51.5	0
+349	-51.5	0
+350	-51.5	0
+351	-51.5	0
+352	-51.5	0
+353	-51.5	0
+354	-51.5	0
+355	-51.5	0
+356	-51.5	0
+357	-51.5	0
+358	-51.5	0
+359	-51.5	0
+360	-51.5	0
+0	-51	0
+1	-51	0
+2	-51	0
+3	-51	0
+4	-51	0
+5	-51	0
+6	-51	0
+7	-51	0
+8	-51	0
+9	-51	0
+10	-51	0
+11	-51	0
+12	-51	0
+13	-51	0
+14	-51	0
+15	-51	0
+16	-51	0
+17	-51	0
+18	-51	0
+19	-51	0
+20	-51	0
+21	-51	0
+22	-51	0
+23	-51	0
+24	-51	0
+25	-51	0
+26	-51	0
+27	-51	0
+28	-51	0
+29	-51	0
+30	-51	0
+31	-51	0
+32	-51	0
+33	-51	0
+34	-51	0
+35	-51	0
+36	-51	0
+37	-51	0
+38	-51	0
+39	-51	0
+40	-51	0
+41	-51	0
+42	-51	0
+43	-51	0
+44	-51	0
+45	-51	0
+46	-51	0
+47	-51	0
+48	-51	0
+49	-51	0
+50	-51	0
+51	-51	0
+52	-51	0
+53	-51	0
+54	-51	0
+55	-51	0
+56	-51	0
+57	-51	0
+58	-51	0
+59	-51	0
+60	-51	0
+61	-51	0
+62	-51	0
+63	-51	0
+64	-51	0
+65	-51	0
+66	-51	0
+67	-51	0
+68	-51	0
+69	-51	0
+70	-51	0
+71	-51	0
+72	-51	0
+73	-51	0
+74	-51	0
+75	-51	0
+76	-51	0
+77	-51	0
+78	-51	0
+79	-51	0
+80	-51	0
+81	-51	0
+82	-51	0
+83	-51	0
+84	-51	0
+85	-51	0
+86	-51	0
+87	-51	0
+88	-51	0
+89	-51	0
+90	-51	0
+91	-51	0
+92	-51	0
+93	-51	0
+94	-51	0
+95	-51	0
+96	-51	0
+97	-51	0
+98	-51	0
+99	-51	0
+100	-51	0
+101	-51	0
+102	-51	0
+103	-51	0
+104	-51	0
+105	-51	0
+106	-51	0
+107	-51	0
+108	-51	0
+109	-51	0
+110	-51	0
+111	-51	0
+112	-51	0
+113	-51	0
+114	-51	0
+115	-51	0
+116	-51	0
+117	-51	0
+118	-51	0
+119	-51	0
+120	-51	0
+121	-51	0
+122	-51	0
+123	-51	0
+124	-51	0
+125	-51	0
+126	-51	0
+127	-51	0
+128	-51	0
+129	-51	0
+130	-51	0
+131	-51	0
+132	-51	0
+133	-51	0
+134	-51	0
+135	-51	0
+136	-51	0
+137	-51	0
+138	-51	0
+139	-51	0
+140	-51	0
+141	-51	0
+142	-51	0
+143	-51	0
+144	-51	0
+145	-51	0
+146	-51	0
+147	-51	0
+148	-51	0
+149	-51	0
+150	-51	0
+151	-51	0
+152	-51	0
+153	-51	0
+154	-51	0
+155	-51	0
+156	-51	0
+157	-51	0
+158	-51	0
+159	-51	0
+160	-51	0
+161	-51	0
+162	-51	0
+163	-51	0
+164	-51	0
+165	-51	0
+166	-51	0
+167	-51	0
+168	-51	0
+169	-51	0
+170	-51	0
+171	-51	0
+172	-51	0
+173	-51	0
+174	-51	0
+175	-51	0
+176	-51	0
+177	-51	0
+178	-51	0
+179	-51	0
+180	-51	0
+181	-51	0
+182	-51	0
+183	-51	0
+184	-51	0
+185	-51	0
+186	-51	0
+187	-51	0
+188	-51	0
+189	-51	0
+190	-51	0
+191	-51	0
+192	-51	0
+193	-51	0
+194	-51	0
+195	-51	0
+196	-51	0
+197	-51	0
+198	-51	0
+199	-51	0
+200	-51	0
+201	-51	0
+202	-51	0
+203	-51	0
+204	-51	0
+205	-51	0
+206	-51	0
+207	-51	0
+208	-51	0
+209	-51	0
+210	-51	0
+211	-51	0
+212	-51	0
+213	-51	0
+214	-51	0
+215	-51	0
+216	-51	0
+217	-51	0
+218	-51	0
+219	-51	0
+220	-51	0
+221	-51	0
+222	-51	0
+223	-51	0
+224	-51	0
+225	-51	0
+226	-51	0
+227	-51	0
+228	-51	0
+229	-51	0
+230	-51	0
+231	-51	0
+232	-51	0
+233	-51	0
+234	-51	0
+235	-51	0
+236	-51	0
+237	-51	0
+238	-51	0
+239	-51	0
+240	-51	0
+241	-51	0
+242	-51	0
+243	-51	0
+244	-51	0
+245	-51	0
+246	-51	0
+247	-51	0
+248	-51	0
+249	-51	0
+250	-51	0
+251	-51	0
+252	-51	0
+253	-51	0
+254	-51	0
+255	-51	0
+256	-51	0
+257	-51	0
+258	-51	0
+259	-51	0
+260	-51	0
+261	-51	0
+262	-51	0
+263	-51	0
+264	-51	0
+265	-51	0
+266	-51	0
+267	-51	0
+268	-51	0
+269	-51	0
+270	-51	0
+271	-51	0
+272	-51	0
+273	-51	0
+274	-51	0
+275	-51	0
+276	-51	0
+277	-51	0
+278	-51	0
+279	-51	0
+280	-51	0
+281	-51	0
+282	-51	0
+283	-51	0
+284	-51	0
+285	-51	0
+286	-51	0
+287	-51	0
+288	-51	0
+289	-51	0
+290	-51	0
+291	-51	0
+292	-51	0
+293	-51	0
+294	-51	0
+295	-51	0
+296	-51	0
+297	-51	0
+298	-51	0
+299	-51	0
+300	-51	0
+301	-51	0
+302	-51	0
+303	-51	0
+304	-51	0
+305	-51	0
+306	-51	0
+307	-51	0
+308	-51	0
+309	-51	0
+310	-51	0
+311	-51	0
+312	-51	0
+313	-51	0
+314	-51	0
+315	-51	0
+316	-51	0
+317	-51	0
+318	-51	0
+319	-51	0
+320	-51	0
+321	-51	0
+322	-51	0
+323	-51	0
+324	-51	0
+325	-51	0
+326	-51	0
+327	-51	0
+328	-51	0
+329	-51	0
+330	-51	0
+331	-51	0
+332	-51	0
+333	-51	0
+334	-51	0
+335	-51	0
+336	-51	0
+337	-51	0
+338	-51	0
+339	-51	0
+340	-51	0
+341	-51	0
+342	-51	0
+343	-51	0
+344	-51	0
+345	-51	0
+346	-51	0
+347	-51	0
+348	-51	0
+349	-51	0
+350	-51	0
+351	-51	0
+352	-51	0
+353	-51	0
+354	-51	0
+355	-51	0
+356	-51	0
+357	-51	0
+358	-51	0
+359	-51	0
+360	-51	0
+0	-50.5	0
+1	-50.5	0
+2	-50.5	0
+3	-50.5	0
+4	-50.5	0
+5	-50.5	0
+6	-50.5	0
+7	-50.5	0
+8	-50.5	0
+9	-50.5	0
+10	-50.5	0
+11	-50.5	0
+12	-50.5	0
+13	-50.5	0
+14	-50.5	0
+15	-50.5	0
+16	-50.5	0
+17	-50.5	0
+18	-50.5	0
+19	-50.5	0
+20	-50.5	0
+21	-50.5	0
+22	-50.5	0
+23	-50.5	0
+24	-50.5	0
+25	-50.5	0
+26	-50.5	0
+27	-50.5	0
+28	-50.5	0
+29	-50.5	0
+30	-50.5	0
+31	-50.5	0
+32	-50.5	0
+33	-50.5	0
+34	-50.5	0
+35	-50.5	0
+36	-50.5	0
+37	-50.5	0
+38	-50.5	0
+39	-50.5	0
+40	-50.5	0
+41	-50.5	0
+42	-50.5	0
+43	-50.5	0
+44	-50.5	0
+45	-50.5	0
+46	-50.5	0
+47	-50.5	0
+48	-50.5	0
+49	-50.5	0
+50	-50.5	0
+51	-50.5	0
+52	-50.5	0
+53	-50.5	0
+54	-50.5	0
+55	-50.5	0
+56	-50.5	0
+57	-50.5	0
+58	-50.5	0
+59	-50.5	0
+60	-50.5	0
+61	-50.5	0
+62	-50.5	0
+63	-50.5	0
+64	-50.5	0
+65	-50.5	0
+66	-50.5	0
+67	-50.5	0
+68	-50.5	0
+69	-50.5	0
+70	-50.5	0
+71	-50.5	0
+72	-50.5	0
+73	-50.5	0
+74	-50.5	0
+75	-50.5	0
+76	-50.5	0
+77	-50.5	0
+78	-50.5	0
+79	-50.5	0
+80	-50.5	0
+81	-50.5	0
+82	-50.5	0
+83	-50.5	0
+84	-50.5	0
+85	-50.5	0
+86	-50.5	0
+87	-50.5	0
+88	-50.5	0
+89	-50.5	0
+90	-50.5	0
+91	-50.5	0
+92	-50.5	0
+93	-50.5	0
+94	-50.5	0
+95	-50.5	0
+96	-50.5	0
+97	-50.5	0
+98	-50.5	0
+99	-50.5	0
+100	-50.5	0
+101	-50.5	0
+102	-50.5	0
+103	-50.5	0
+104	-50.5	0
+105	-50.5	0
+106	-50.5	0
+107	-50.5	0
+108	-50.5	0
+109	-50.5	0
+110	-50.5	0
+111	-50.5	0
+112	-50.5	0
+113	-50.5	0
+114	-50.5	0
+115	-50.5	0
+116	-50.5	0
+117	-50.5	0
+118	-50.5	0
+119	-50.5	0
+120	-50.5	0
+121	-50.5	0
+122	-50.5	0
+123	-50.5	0
+124	-50.5	0
+125	-50.5	0
+126	-50.5	0
+127	-50.5	0
+128	-50.5	0
+129	-50.5	0
+130	-50.5	0
+131	-50.5	0
+132	-50.5	0
+133	-50.5	0
+134	-50.5	0
+135	-50.5	0
+136	-50.5	0
+137	-50.5	0
+138	-50.5	0
+139	-50.5	0
+140	-50.5	0
+141	-50.5	0
+142	-50.5	0
+143	-50.5	0
+144	-50.5	0
+145	-50.5	0
+146	-50.5	0
+147	-50.5	0
+148	-50.5	0
+149	-50.5	0
+150	-50.5	0
+151	-50.5	0
+152	-50.5	0
+153	-50.5	0
+154	-50.5	0
+155	-50.5	0
+156	-50.5	0
+157	-50.5	0
+158	-50.5	0
+159	-50.5	0
+160	-50.5	0
+161	-50.5	0
+162	-50.5	0
+163	-50.5	0
+164	-50.5	0
+165	-50.5	0
+166	-50.5	0
+167	-50.5	0
+168	-50.5	0
+169	-50.5	0
+170	-50.5	0
+171	-50.5	0
+172	-50.5	0
+173	-50.5	0
+174	-50.5	0
+175	-50.5	0
+176	-50.5	0
+177	-50.5	0
+178	-50.5	0
+179	-50.5	0
+180	-50.5	0
+181	-50.5	0
+182	-50.5	0
+183	-50.5	0
+184	-50.5	0
+185	-50.5	0
+186	-50.5	0
+187	-50.5	0
+188	-50.5	0
+189	-50.5	0
+190	-50.5	0
+191	-50.5	0
+192	-50.5	0
+193	-50.5	0
+194	-50.5	0
+195	-50.5	0
+196	-50.5	0
+197	-50.5	0
+198	-50.5	0
+199	-50.5	0
+200	-50.5	0
+201	-50.5	0
+202	-50.5	0
+203	-50.5	0
+204	-50.5	0
+205	-50.5	0
+206	-50.5	0
+207	-50.5	0
+208	-50.5	0
+209	-50.5	0
+210	-50.5	0
+211	-50.5	0
+212	-50.5	0
+213	-50.5	0
+214	-50.5	0
+215	-50.5	0
+216	-50.5	0
+217	-50.5	0
+218	-50.5	0
+219	-50.5	0
+220	-50.5	0
+221	-50.5	0
+222	-50.5	0
+223	-50.5	0
+224	-50.5	0
+225	-50.5	0
+226	-50.5	0
+227	-50.5	0
+228	-50.5	0
+229	-50.5	0
+230	-50.5	0
+231	-50.5	0
+232	-50.5	0
+233	-50.5	0
+234	-50.5	0
+235	-50.5	0
+236	-50.5	0
+237	-50.5	0
+238	-50.5	0
+239	-50.5	0
+240	-50.5	0
+241	-50.5	0
+242	-50.5	0
+243	-50.5	0
+244	-50.5	0
+245	-50.5	0
+246	-50.5	0
+247	-50.5	0
+248	-50.5	0
+249	-50.5	0
+250	-50.5	0
+251	-50.5	0
+252	-50.5	0
+253	-50.5	0
+254	-50.5	0
+255	-50.5	0
+256	-50.5	0
+257	-50.5	0
+258	-50.5	0
+259	-50.5	0
+260	-50.5	0
+261	-50.5	0
+262	-50.5	0
+263	-50.5	0
+264	-50.5	0
+265	-50.5	0
+266	-50.5	0
+267	-50.5	0
+268	-50.5	0
+269	-50.5	0
+270	-50.5	0
+271	-50.5	0
+272	-50.5	0
+273	-50.5	0
+274	-50.5	0
+275	-50.5	0
+276	-50.5	0
+277	-50.5	0
+278	-50.5	0
+279	-50.5	0
+280	-50.5	0
+281	-50.5	0
+282	-50.5	0
+283	-50.5	0
+284	-50.5	0
+285	-50.5	0
+286	-50.5	0
+287	-50.5	0
+288	-50.5	0
+289	-50.5	0
+290	-50.5	0
+291	-50.5	0
+292	-50.5	0
+293	-50.5	0
+294	-50.5	0
+295	-50.5	0
+296	-50.5	0
+297	-50.5	0
+298	-50.5	0
+299	-50.5	0
+300	-50.5	0
+301	-50.5	0
+302	-50.5	0
+303	-50.5	0
+304	-50.5	0
+305	-50.5	0
+306	-50.5	0
+307	-50.5	0
+308	-50.5	0
+309	-50.5	0
+310	-50.5	0
+311	-50.5	0
+312	-50.5	0
+313	-50.5	0
+314	-50.5	0
+315	-50.5	0
+316	-50.5	0
+317	-50.5	0
+318	-50.5	0
+319	-50.5	0
+320	-50.5	0
+321	-50.5	0
+322	-50.5	0
+323	-50.5	0
+324	-50.5	0
+325	-50.5	0
+326	-50.5	0
+327	-50.5	0
+328	-50.5	0
+329	-50.5	0
+330	-50.5	0
+331	-50.5	0
+332	-50.5	0
+333	-50.5	0
+334	-50.5	0
+335	-50.5	0
+336	-50.5	0
+337	-50.5	0
+338	-50.5	0
+339	-50.5	0
+340	-50.5	0
+341	-50.5	0
+342	-50.5	0
+343	-50.5	0
+344	-50.5	0
+345	-50.5	0
+346	-50.5	0
+347	-50.5	0
+348	-50.5	0
+349	-50.5	0
+350	-50.5	0
+351	-50.5	0
+352	-50.5	0
+353	-50.5	0
+354	-50.5	0
+355	-50.5	0
+356	-50.5	0
+357	-50.5	0
+358	-50.5	0
+359	-50.5	0
+360	-50.5	0
+0	-50	0
+1	-50	0
+2	-50	0
+3	-50	0
+4	-50	0
+5	-50	0
+6	-50	0
+7	-50	0
+8	-50	0
+9	-50	0
+10	-50	0
+11	-50	0
+12	-50	0
+13	-50	0
+14	-50	0
+15	-50	0
+16	-50	0
+17	-50	0
+18	-50	0
+19	-50	0
+20	-50	0
+21	-50	0
+22	-50	0
+23	-50	0
+24	-50	0
+25	-50	0
+26	-50	0
+27	-50	0
+28	-50	0
+29	-50	0
+30	-50	0
+31	-50	0
+32	-50	0
+33	-50	0
+34	-50	0
+35	-50	0
+36	-50	0
+37	-50	0
+38	-50	0
+39	-50	0
+40	-50	0
+41	-50	0
+42	-50	0
+43	-50	0
+44	-50	0
+45	-50	0
+46	-50	0
+47	-50	0
+48	-50	0
+49	-50	0
+50	-50	0
+51	-50	0
+52	-50	0
+53	-50	0
+54	-50	0
+55	-50	0
+56	-50	0
+57	-50	0
+58	-50	0
+59	-50	0
+60	-50	0
+61	-50	0
+62	-50	0
+63	-50	0
+64	-50	0
+65	-50	0
+66	-50	0
+67	-50	0
+68	-50	0
+69	-50	0
+70	-50	0
+71	-50	0
+72	-50	0
+73	-50	0
+74	-50	0
+75	-50	0
+76	-50	0
+77	-50	0
+78	-50	0
+79	-50	0
+80	-50	0
+81	-50	0
+82	-50	0
+83	-50	0
+84	-50	0
+85	-50	0
+86	-50	0
+87	-50	0
+88	-50	0
+89	-50	0
+90	-50	0
+91	-50	0
+92	-50	0
+93	-50	0
+94	-50	0
+95	-50	0
+96	-50	0
+97	-50	0
+98	-50	0
+99	-50	0
+100	-50	0
+101	-50	0
+102	-50	0
+103	-50	0
+104	-50	0
+105	-50	0
+106	-50	0
+107	-50	0
+108	-50	0
+109	-50	0
+110	-50	0
+111	-50	0
+112	-50	0
+113	-50	0
+114	-50	0
+115	-50	0
+116	-50	0
+117	-50	0
+118	-50	0
+119	-50	0
+120	-50	0
+121	-50	0
+122	-50	0
+123	-50	0
+124	-50	0
+125	-50	0
+126	-50	0
+127	-50	0
+128	-50	0
+129	-50	0
+130	-50	0
+131	-50	0
+132	-50	0
+133	-50	0
+134	-50	0
+135	-50	0
+136	-50	0
+137	-50	0
+138	-50	0
+139	-50	0
+140	-50	0
+141	-50	0
+142	-50	0
+143	-50	0
+144	-50	0
+145	-50	0
+146	-50	0
+147	-50	0
+148	-50	0
+149	-50	0
+150	-50	0
+151	-50	0
+152	-50	0
+153	-50	0
+154	-50	0
+155	-50	0
+156	-50	0
+157	-50	0
+158	-50	0
+159	-50	0
+160	-50	0
+161	-50	0
+162	-50	0
+163	-50	0
+164	-50	0
+165	-50	0
+166	-50	0
+167	-50	0
+168	-50	0
+169	-50	0
+170	-50	0
+171	-50	0
+172	-50	0
+173	-50	0
+174	-50	0
+175	-50	0
+176	-50	0
+177	-50	0
+178	-50	0
+179	-50	0
+180	-50	0
+181	-50	0
+182	-50	0
+183	-50	0
+184	-50	0
+185	-50	0
+186	-50	0
+187	-50	0
+188	-50	0
+189	-50	0
+190	-50	0
+191	-50	0
+192	-50	0
+193	-50	0
+194	-50	0
+195	-50	0
+196	-50	0
+197	-50	0
+198	-50	0
+199	-50	0
+200	-50	0
+201	-50	0
+202	-50	0
+203	-50	0
+204	-50	0
+205	-50	0
+206	-50	0
+207	-50	0
+208	-50	0
+209	-50	0
+210	-50	0
+211	-50	0
+212	-50	0
+213	-50	0
+214	-50	0
+215	-50	0
+216	-50	0
+217	-50	0
+218	-50	0
+219	-50	0
+220	-50	0
+221	-50	0
+222	-50	0
+223	-50	0
+224	-50	0
+225	-50	0
+226	-50	0
+227	-50	0
+228	-50	0
+229	-50	0
+230	-50	0
+231	-50	0
+232	-50	0
+233	-50	0
+234	-50	0
+235	-50	0
+236	-50	0
+237	-50	0
+238	-50	0
+239	-50	0
+240	-50	0
+241	-50	0
+242	-50	0
+243	-50	0
+244	-50	0
+245	-50	0
+246	-50	0
+247	-50	0
+248	-50	0
+249	-50	0
+250	-50	0
+251	-50	0
+252	-50	0
+253	-50	0
+254	-50	0
+255	-50	0
+256	-50	0
+257	-50	0
+258	-50	0
+259	-50	0
+260	-50	0
+261	-50	0
+262	-50	0
+263	-50	0
+264	-50	0
+265	-50	0
+266	-50	0
+267	-50	0
+268	-50	0
+269	-50	0
+270	-50	0
+271	-50	0
+272	-50	0
+273	-50	0
+274	-50	0
+275	-50	0
+276	-50	0
+277	-50	0
+278	-50	0
+279	-50	0
+280	-50	0
+281	-50	0
+282	-50	0
+283	-50	0
+284	-50	0
+285	-50	0
+286	-50	0
+287	-50	0
+288	-50	0
+289	-50	0
+290	-50	0
+291	-50	0
+292	-50	0
+293	-50	0
+294	-50	0
+295	-50	0
+296	-50	0
+297	-50	0
+298	-50	0
+299	-50	0
+300	-50	0
+301	-50	0
+302	-50	0
+303	-50	0
+304	-50	0
+305	-50	0
+306	-50	0
+307	-50	0
+308	-50	0
+309	-50	0
+310	-50	0
+311	-50	0
+312	-50	0
+313	-50	0
+314	-50	0
+315	-50	0
+316	-50	0
+317	-50	0
+318	-50	0
+319	-50	0
+320	-50	0
+321	-50	0
+322	-50	0
+323	-50	0
+324	-50	0
+325	-50	0
+326	-50	0
+327	-50	0
+328	-50	0
+329	-50	0
+330	-50	0
+331	-50	0
+332	-50	0
+333	-50	0
+334	-50	0
+335	-50	0
+336	-50	0
+337	-50	0
+338	-50	0
+339	-50	0
+340	-50	0
+341	-50	0
+342	-50	0
+343	-50	0
+344	-50	0
+345	-50	0
+346	-50	0
+347	-50	0
+348	-50	0
+349	-50	0
+350	-50	0
+351	-50	0
+352	-50	0
+353	-50	0
+354	-50	0
+355	-50	0
+356	-50	0
+357	-50	0
+358	-50	0
+359	-50	0
+360	-50	0
+0	-49.5	0
+1	-49.5	0
+2	-49.5	0
+3	-49.5	0
+4	-49.5	0
+5	-49.5	0
+6	-49.5	0
+7	-49.5	0
+8	-49.5	0
+9	-49.5	0
+10	-49.5	0
+11	-49.5	0
+12	-49.5	0
+13	-49.5	0
+14	-49.5	0
+15	-49.5	0
+16	-49.5	0
+17	-49.5	0
+18	-49.5	0
+19	-49.5	0
+20	-49.5	0
+21	-49.5	0
+22	-49.5	0
+23	-49.5	0
+24	-49.5	0
+25	-49.5	0
+26	-49.5	0
+27	-49.5	0
+28	-49.5	0
+29	-49.5	0
+30	-49.5	0
+31	-49.5	0
+32	-49.5	0
+33	-49.5	0
+34	-49.5	0
+35	-49.5	0
+36	-49.5	0
+37	-49.5	0
+38	-49.5	0
+39	-49.5	0
+40	-49.5	0
+41	-49.5	0
+42	-49.5	0
+43	-49.5	0
+44	-49.5	0
+45	-49.5	0
+46	-49.5	0
+47	-49.5	0
+48	-49.5	0
+49	-49.5	0
+50	-49.5	0
+51	-49.5	0
+52	-49.5	0
+53	-49.5	0
+54	-49.5	0
+55	-49.5	0
+56	-49.5	0
+57	-49.5	0
+58	-49.5	0
+59	-49.5	0
+60	-49.5	0
+61	-49.5	0
+62	-49.5	0
+63	-49.5	0
+64	-49.5	0
+65	-49.5	0
+66	-49.5	0
+67	-49.5	0
+68	-49.5	0
+69	-49.5	0
+70	-49.5	0
+71	-49.5	0
+72	-49.5	0
+73	-49.5	0
+74	-49.5	0
+75	-49.5	0
+76	-49.5	0
+77	-49.5	0
+78	-49.5	0
+79	-49.5	0
+80	-49.5	0
+81	-49.5	0
+82	-49.5	0
+83	-49.5	0
+84	-49.5	0
+85	-49.5	0
+86	-49.5	0
+87	-49.5	0
+88	-49.5	0
+89	-49.5	0
+90	-49.5	0
+91	-49.5	0
+92	-49.5	0
+93	-49.5	0
+94	-49.5	0
+95	-49.5	0
+96	-49.5	0
+97	-49.5	0
+98	-49.5	0
+99	-49.5	0
+100	-49.5	0
+101	-49.5	0
+102	-49.5	0
+103	-49.5	0
+104	-49.5	0
+105	-49.5	0
+106	-49.5	0
+107	-49.5	0
+108	-49.5	0
+109	-49.5	0
+110	-49.5	0
+111	-49.5	0
+112	-49.5	0
+113	-49.5	0
+114	-49.5	0
+115	-49.5	0
+116	-49.5	0
+117	-49.5	0
+118	-49.5	0
+119	-49.5	0
+120	-49.5	0
+121	-49.5	0
+122	-49.5	0
+123	-49.5	0
+124	-49.5	0
+125	-49.5	0
+126	-49.5	0
+127	-49.5	0
+128	-49.5	0
+129	-49.5	0
+130	-49.5	0
+131	-49.5	0
+132	-49.5	0
+133	-49.5	0
+134	-49.5	0
+135	-49.5	0
+136	-49.5	0
+137	-49.5	0
+138	-49.5	0
+139	-49.5	0
+140	-49.5	0
+141	-49.5	0
+142	-49.5	0
+143	-49.5	0
+144	-49.5	0
+145	-49.5	0
+146	-49.5	0
+147	-49.5	0
+148	-49.5	0
+149	-49.5	0
+150	-49.5	0
+151	-49.5	0
+152	-49.5	0
+153	-49.5	0
+154	-49.5	0
+155	-49.5	0
+156	-49.5	0
+157	-49.5	0
+158	-49.5	0
+159	-49.5	0
+160	-49.5	0
+161	-49.5	0
+162	-49.5	0
+163	-49.5	0
+164	-49.5	0
+165	-49.5	0
+166	-49.5	0
+167	-49.5	0
+168	-49.5	0
+169	-49.5	0
+170	-49.5	0
+171	-49.5	0
+172	-49.5	0
+173	-49.5	0
+174	-49.5	0
+175	-49.5	0
+176	-49.5	0
+177	-49.5	0
+178	-49.5	0
+179	-49.5	0
+180	-49.5	0
+181	-49.5	0
+182	-49.5	0
+183	-49.5	0
+184	-49.5	0
+185	-49.5	0
+186	-49.5	0
+187	-49.5	0
+188	-49.5	0
+189	-49.5	0
+190	-49.5	0
+191	-49.5	0
+192	-49.5	0
+193	-49.5	0
+194	-49.5	0
+195	-49.5	0
+196	-49.5	0
+197	-49.5	0
+198	-49.5	0
+199	-49.5	0
+200	-49.5	0
+201	-49.5	0
+202	-49.5	0
+203	-49.5	0
+204	-49.5	0
+205	-49.5	0
+206	-49.5	0
+207	-49.5	0
+208	-49.5	0
+209	-49.5	0
+210	-49.5	0
+211	-49.5	0
+212	-49.5	0
+213	-49.5	0
+214	-49.5	0
+215	-49.5	0
+216	-49.5	0
+217	-49.5	0
+218	-49.5	0
+219	-49.5	0
+220	-49.5	0
+221	-49.5	0
+222	-49.5	0
+223	-49.5	0
+224	-49.5	0
+225	-49.5	0
+226	-49.5	0
+227	-49.5	0
+228	-49.5	0
+229	-49.5	0
+230	-49.5	0
+231	-49.5	0
+232	-49.5	0
+233	-49.5	0
+234	-49.5	0
+235	-49.5	0
+236	-49.5	0
+237	-49.5	0
+238	-49.5	0
+239	-49.5	0
+240	-49.5	0
+241	-49.5	0
+242	-49.5	0
+243	-49.5	0
+244	-49.5	0
+245	-49.5	0
+246	-49.5	0
+247	-49.5	0
+248	-49.5	0
+249	-49.5	0
+250	-49.5	0
+251	-49.5	0
+252	-49.5	0
+253	-49.5	0
+254	-49.5	0
+255	-49.5	0
+256	-49.5	0
+257	-49.5	0
+258	-49.5	0
+259	-49.5	0
+260	-49.5	0
+261	-49.5	0
+262	-49.5	0
+263	-49.5	0
+264	-49.5	0
+265	-49.5	0
+266	-49.5	0
+267	-49.5	0
+268	-49.5	0
+269	-49.5	0
+270	-49.5	0
+271	-49.5	0
+272	-49.5	0
+273	-49.5	0
+274	-49.5	0
+275	-49.5	0
+276	-49.5	0
+277	-49.5	0
+278	-49.5	0
+279	-49.5	0
+280	-49.5	0
+281	-49.5	0
+282	-49.5	0
+283	-49.5	0
+284	-49.5	0
+285	-49.5	0
+286	-49.5	0
+287	-49.5	0
+288	-49.5	0
+289	-49.5	0
+290	-49.5	0
+291	-49.5	0
+292	-49.5	0
+293	-49.5	0
+294	-49.5	0
+295	-49.5	0
+296	-49.5	0
+297	-49.5	0
+298	-49.5	0
+299	-49.5	0
+300	-49.5	0
+301	-49.5	0
+302	-49.5	0
+303	-49.5	0
+304	-49.5	0
+305	-49.5	0
+306	-49.5	0
+307	-49.5	0
+308	-49.5	0
+309	-49.5	0
+310	-49.5	0
+311	-49.5	0
+312	-49.5	0
+313	-49.5	0
+314	-49.5	0
+315	-49.5	0
+316	-49.5	0
+317	-49.5	0
+318	-49.5	0
+319	-49.5	0
+320	-49.5	0
+321	-49.5	0
+322	-49.5	0
+323	-49.5	0
+324	-49.5	0
+325	-49.5	0
+326	-49.5	0
+327	-49.5	0
+328	-49.5	0
+329	-49.5	0
+330	-49.5	0
+331	-49.5	0
+332	-49.5	0
+333	-49.5	0
+334	-49.5	0
+335	-49.5	0
+336	-49.5	0
+337	-49.5	0
+338	-49.5	0
+339	-49.5	0
+340	-49.5	0
+341	-49.5	0
+342	-49.5	0
+343	-49.5	0
+344	-49.5	0
+345	-49.5	0
+346	-49.5	0
+347	-49.5	0
+348	-49.5	0
+349	-49.5	0
+350	-49.5	0
+351	-49.5	0
+352	-49.5	0
+353	-49.5	0
+354	-49.5	0
+355	-49.5	0
+356	-49.5	0
+357	-49.5	0
+358	-49.5	0
+359	-49.5	0
+360	-49.5	0
+0	-49	0
+1	-49	0
+2	-49	0
+3	-49	0
+4	-49	0
+5	-49	0
+6	-49	0
+7	-49	0
+8	-49	0
+9	-49	0
+10	-49	0
+11	-49	0
+12	-49	0
+13	-49	0
+14	-49	0
+15	-49	0
+16	-49	0
+17	-49	0
+18	-49	0
+19	-49	0
+20	-49	0
+21	-49	0
+22	-49	0
+23	-49	0
+24	-49	0
+25	-49	0
+26	-49	0
+27	-49	0
+28	-49	0
+29	-49	0
+30	-49	0
+31	-49	0
+32	-49	0
+33	-49	0
+34	-49	0
+35	-49	0
+36	-49	0
+37	-49	0
+38	-49	0
+39	-49	0
+40	-49	0
+41	-49	0
+42	-49	0
+43	-49	0
+44	-49	0
+45	-49	0
+46	-49	0
+47	-49	0
+48	-49	0
+49	-49	0
+50	-49	0
+51	-49	0
+52	-49	0
+53	-49	0
+54	-49	0
+55	-49	0
+56	-49	0
+57	-49	0
+58	-49	0
+59	-49	0
+60	-49	0
+61	-49	0
+62	-49	0
+63	-49	0
+64	-49	0
+65	-49	0
+66	-49	0
+67	-49	0
+68	-49	0
+69	-49	0
+70	-49	0
+71	-49	0
+72	-49	0
+73	-49	0
+74	-49	0
+75	-49	0
+76	-49	0
+77	-49	0
+78	-49	0
+79	-49	0
+80	-49	0
+81	-49	0
+82	-49	0
+83	-49	0
+84	-49	0
+85	-49	0
+86	-49	0
+87	-49	0
+88	-49	0
+89	-49	0
+90	-49	0
+91	-49	0
+92	-49	0
+93	-49	0
+94	-49	0
+95	-49	0
+96	-49	0
+97	-49	0
+98	-49	0
+99	-49	0
+100	-49	0
+101	-49	0
+102	-49	0
+103	-49	0
+104	-49	0
+105	-49	0
+106	-49	0
+107	-49	0
+108	-49	0
+109	-49	0
+110	-49	0
+111	-49	0
+112	-49	0
+113	-49	0
+114	-49	0
+115	-49	0
+116	-49	0
+117	-49	0
+118	-49	0
+119	-49	0
+120	-49	0
+121	-49	0
+122	-49	0
+123	-49	0
+124	-49	0
+125	-49	0
+126	-49	0
+127	-49	0
+128	-49	0
+129	-49	0
+130	-49	0
+131	-49	0
+132	-49	0
+133	-49	0
+134	-49	0
+135	-49	0
+136	-49	0
+137	-49	0
+138	-49	0
+139	-49	0
+140	-49	0
+141	-49	0
+142	-49	0
+143	-49	0
+144	-49	0
+145	-49	0
+146	-49	0
+147	-49	0
+148	-49	0
+149	-49	0
+150	-49	0
+151	-49	0
+152	-49	0
+153	-49	0
+154	-49	0
+155	-49	0
+156	-49	0
+157	-49	0
+158	-49	0
+159	-49	0
+160	-49	0
+161	-49	0
+162	-49	0
+163	-49	0
+164	-49	0
+165	-49	0
+166	-49	0
+167	-49	0
+168	-49	0
+169	-49	0
+170	-49	0
+171	-49	0
+172	-49	0
+173	-49	0
+174	-49	0
+175	-49	0
+176	-49	0
+177	-49	0
+178	-49	0
+179	-49	0
+180	-49	0
+181	-49	0
+182	-49	0
+183	-49	0
+184	-49	0
+185	-49	0
+186	-49	0
+187	-49	0
+188	-49	0
+189	-49	0
+190	-49	0
+191	-49	0
+192	-49	0
+193	-49	0
+194	-49	0
+195	-49	0
+196	-49	0
+197	-49	0
+198	-49	0
+199	-49	0
+200	-49	0
+201	-49	0
+202	-49	0
+203	-49	0
+204	-49	0
+205	-49	0
+206	-49	0
+207	-49	0
+208	-49	0
+209	-49	0
+210	-49	0
+211	-49	0
+212	-49	0
+213	-49	0
+214	-49	0
+215	-49	0
+216	-49	0
+217	-49	0
+218	-49	0
+219	-49	0
+220	-49	0
+221	-49	0
+222	-49	0
+223	-49	0
+224	-49	0
+225	-49	0
+226	-49	0
+227	-49	0
+228	-49	0
+229	-49	0
+230	-49	0
+231	-49	0
+232	-49	0
+233	-49	0
+234	-49	0
+235	-49	0
+236	-49	0
+237	-49	0
+238	-49	0
+239	-49	0
+240	-49	0
+241	-49	0
+242	-49	0
+243	-49	0
+244	-49	0
+245	-49	0
+246	-49	0
+247	-49	0
+248	-49	0
+249	-49	0
+250	-49	0
+251	-49	0
+252	-49	0
+253	-49	0
+254	-49	0
+255	-49	0
+256	-49	0
+257	-49	0
+258	-49	0
+259	-49	0
+260	-49	0
+261	-49	0
+262	-49	0
+263	-49	0
+264	-49	0
+265	-49	0
+266	-49	0
+267	-49	0
+268	-49	0
+269	-49	0
+270	-49	0
+271	-49	0
+272	-49	0
+273	-49	0
+274	-49	0
+275	-49	0
+276	-49	0
+277	-49	0
+278	-49	0
+279	-49	0
+280	-49	0
+281	-49	0
+282	-49	0
+283	-49	0
+284	-49	0
+285	-49	0
+286	-49	0
+287	-49	0
+288	-49	0
+289	-49	0
+290	-49	0
+291	-49	0
+292	-49	0
+293	-49	0
+294	-49	0
+295	-49	0
+296	-49	0
+297	-49	0
+298	-49	0
+299	-49	0
+300	-49	0
+301	-49	0
+302	-49	0
+303	-49	0
+304	-49	0
+305	-49	0
+306	-49	0
+307	-49	0
+308	-49	0
+309	-49	0
+310	-49	0
+311	-49	0
+312	-49	0
+313	-49	0
+314	-49	0
+315	-49	0
+316	-49	0
+317	-49	0
+318	-49	0
+319	-49	0
+320	-49	0
+321	-49	0
+322	-49	0
+323	-49	0
+324	-49	0
+325	-49	0
+326	-49	0
+327	-49	0
+328	-49	0
+329	-49	0
+330	-49	0
+331	-49	0
+332	-49	0
+333	-49	0
+334	-49	0
+335	-49	0
+336	-49	0
+337	-49	0
+338	-49	0
+339	-49	0
+340	-49	0
+341	-49	0
+342	-49	0
+343	-49	0
+344	-49	0
+345	-49	0
+346	-49	0
+347	-49	0
+348	-49	0
+349	-49	0
+350	-49	0
+351	-49	0
+352	-49	0
+353	-49	0
+354	-49	0
+355	-49	0
+356	-49	0
+357	-49	0
+358	-49	0
+359	-49	0
+360	-49	0
+0	-48.5	0
+1	-48.5	0
+2	-48.5	0
+3	-48.5	0
+4	-48.5	0
+5	-48.5	0
+6	-48.5	0
+7	-48.5	0
+8	-48.5	0
+9	-48.5	0
+10	-48.5	0
+11	-48.5	0
+12	-48.5	0
+13	-48.5	0
+14	-48.5	0
+15	-48.5	0
+16	-48.5	0
+17	-48.5	0
+18	-48.5	0
+19	-48.5	0
+20	-48.5	0
+21	-48.5	0
+22	-48.5	0
+23	-48.5	0
+24	-48.5	0
+25	-48.5	0
+26	-48.5	0
+27	-48.5	0
+28	-48.5	0
+29	-48.5	0
+30	-48.5	0
+31	-48.5	0
+32	-48.5	0
+33	-48.5	0
+34	-48.5	0
+35	-48.5	0
+36	-48.5	0
+37	-48.5	0
+38	-48.5	0
+39	-48.5	0
+40	-48.5	0
+41	-48.5	0
+42	-48.5	0
+43	-48.5	0
+44	-48.5	0
+45	-48.5	0
+46	-48.5	0
+47	-48.5	0
+48	-48.5	0
+49	-48.5	0
+50	-48.5	0
+51	-48.5	0
+52	-48.5	0
+53	-48.5	0
+54	-48.5	0
+55	-48.5	0
+56	-48.5	0
+57	-48.5	0
+58	-48.5	0
+59	-48.5	0
+60	-48.5	0
+61	-48.5	0
+62	-48.5	0
+63	-48.5	0
+64	-48.5	0
+65	-48.5	0
+66	-48.5	0
+67	-48.5	0
+68	-48.5	0
+69	-48.5	0
+70	-48.5	0
+71	-48.5	0
+72	-48.5	0
+73	-48.5	0
+74	-48.5	0
+75	-48.5	0
+76	-48.5	0
+77	-48.5	0
+78	-48.5	0
+79	-48.5	0
+80	-48.5	0
+81	-48.5	0
+82	-48.5	0
+83	-48.5	0
+84	-48.5	0
+85	-48.5	0
+86	-48.5	0
+87	-48.5	0
+88	-48.5	0
+89	-48.5	0
+90	-48.5	0
+91	-48.5	0
+92	-48.5	0
+93	-48.5	0
+94	-48.5	0
+95	-48.5	0
+96	-48.5	0
+97	-48.5	0
+98	-48.5	0
+99	-48.5	0
+100	-48.5	0
+101	-48.5	0
+102	-48.5	0
+103	-48.5	0
+104	-48.5	0
+105	-48.5	0
+106	-48.5	0
+107	-48.5	0
+108	-48.5	0
+109	-48.5	0
+110	-48.5	0
+111	-48.5	0
+112	-48.5	0
+113	-48.5	0
+114	-48.5	0
+115	-48.5	0
+116	-48.5	0
+117	-48.5	0
+118	-48.5	0
+119	-48.5	0
+120	-48.5	0
+121	-48.5	0
+122	-48.5	0
+123	-48.5	0
+124	-48.5	0
+125	-48.5	0
+126	-48.5	0
+127	-48.5	0
+128	-48.5	0
+129	-48.5	0
+130	-48.5	0
+131	-48.5	0
+132	-48.5	0
+133	-48.5	0
+134	-48.5	0
+135	-48.5	0
+136	-48.5	0
+137	-48.5	0
+138	-48.5	0
+139	-48.5	0
+140	-48.5	0
+141	-48.5	0
+142	-48.5	0
+143	-48.5	0
+144	-48.5	0
+145	-48.5	0
+146	-48.5	0
+147	-48.5	0
+148	-48.5	0
+149	-48.5	0
+150	-48.5	0
+151	-48.5	0
+152	-48.5	0
+153	-48.5	0
+154	-48.5	0
+155	-48.5	0
+156	-48.5	0
+157	-48.5	0
+158	-48.5	0
+159	-48.5	0
+160	-48.5	0
+161	-48.5	0
+162	-48.5	0
+163	-48.5	0
+164	-48.5	0
+165	-48.5	0
+166	-48.5	0
+167	-48.5	0
+168	-48.5	0
+169	-48.5	0
+170	-48.5	0
+171	-48.5	0
+172	-48.5	0
+173	-48.5	0
+174	-48.5	0
+175	-48.5	0
+176	-48.5	0
+177	-48.5	0
+178	-48.5	0
+179	-48.5	0
+180	-48.5	0
+181	-48.5	0
+182	-48.5	0
+183	-48.5	0
+184	-48.5	0
+185	-48.5	0
+186	-48.5	0
+187	-48.5	0
+188	-48.5	0
+189	-48.5	0
+190	-48.5	0
+191	-48.5	0
+192	-48.5	0
+193	-48.5	0
+194	-48.5	0
+195	-48.5	0
+196	-48.5	0
+197	-48.5	0
+198	-48.5	0
+199	-48.5	0
+200	-48.5	0
+201	-48.5	0
+202	-48.5	0
+203	-48.5	0
+204	-48.5	0
+205	-48.5	0
+206	-48.5	0
+207	-48.5	0
+208	-48.5	0
+209	-48.5	0
+210	-48.5	0
+211	-48.5	0
+212	-48.5	0
+213	-48.5	0
+214	-48.5	0
+215	-48.5	0
+216	-48.5	0
+217	-48.5	0
+218	-48.5	0
+219	-48.5	0
+220	-48.5	0
+221	-48.5	0
+222	-48.5	0
+223	-48.5	0
+224	-48.5	0
+225	-48.5	0
+226	-48.5	0
+227	-48.5	0
+228	-48.5	0
+229	-48.5	0
+230	-48.5	0
+231	-48.5	0
+232	-48.5	0
+233	-48.5	0
+234	-48.5	0
+235	-48.5	0
+236	-48.5	0
+237	-48.5	0
+238	-48.5	0
+239	-48.5	0
+240	-48.5	0
+241	-48.5	0
+242	-48.5	0
+243	-48.5	0
+244	-48.5	0
+245	-48.5	0
+246	-48.5	0
+247	-48.5	0
+248	-48.5	0
+249	-48.5	0
+250	-48.5	0
+251	-48.5	0
+252	-48.5	0
+253	-48.5	0
+254	-48.5	0
+255	-48.5	0
+256	-48.5	0
+257	-48.5	0
+258	-48.5	0
+259	-48.5	0
+260	-48.5	0
+261	-48.5	0
+262	-48.5	0
+263	-48.5	0
+264	-48.5	0
+265	-48.5	0
+266	-48.5	0
+267	-48.5	0
+268	-48.5	0
+269	-48.5	0
+270	-48.5	0
+271	-48.5	0
+272	-48.5	0
+273	-48.5	0
+274	-48.5	0
+275	-48.5	0
+276	-48.5	0
+277	-48.5	0
+278	-48.5	0
+279	-48.5	0
+280	-48.5	0
+281	-48.5	0
+282	-48.5	0
+283	-48.5	0
+284	-48.5	0
+285	-48.5	0
+286	-48.5	0
+287	-48.5	0
+288	-48.5	0
+289	-48.5	0
+290	-48.5	0
+291	-48.5	0
+292	-48.5	0
+293	-48.5	0
+294	-48.5	0
+295	-48.5	0
+296	-48.5	0
+297	-48.5	0
+298	-48.5	0
+299	-48.5	0
+300	-48.5	0
+301	-48.5	0
+302	-48.5	0
+303	-48.5	0
+304	-48.5	0
+305	-48.5	0
+306	-48.5	0
+307	-48.5	0
+308	-48.5	0
+309	-48.5	0
+310	-48.5	0
+311	-48.5	0
+312	-48.5	0
+313	-48.5	0
+314	-48.5	0
+315	-48.5	0
+316	-48.5	0
+317	-48.5	0
+318	-48.5	0
+319	-48.5	0
+320	-48.5	0
+321	-48.5	0
+322	-48.5	0
+323	-48.5	0
+324	-48.5	0
+325	-48.5	0
+326	-48.5	0
+327	-48.5	0
+328	-48.5	0
+329	-48.5	0
+330	-48.5	0
+331	-48.5	0
+332	-48.5	0
+333	-48.5	0
+334	-48.5	0
+335	-48.5	0
+336	-48.5	0
+337	-48.5	0
+338	-48.5	0
+339	-48.5	0
+340	-48.5	0
+341	-48.5	0
+342	-48.5	0
+343	-48.5	0
+344	-48.5	0
+345	-48.5	0
+346	-48.5	0
+347	-48.5	0
+348	-48.5	0
+349	-48.5	0
+350	-48.5	0
+351	-48.5	0
+352	-48.5	0
+353	-48.5	0
+354	-48.5	0
+355	-48.5	0
+356	-48.5	0
+357	-48.5	0
+358	-48.5	0
+359	-48.5	0
+360	-48.5	0
+0	-48	0
+1	-48	0
+2	-48	0
+3	-48	0
+4	-48	0
+5	-48	0
+6	-48	0
+7	-48	0
+8	-48	0
+9	-48	0
+10	-48	0
+11	-48	0
+12	-48	0
+13	-48	0
+14	-48	0
+15	-48	0
+16	-48	0
+17	-48	0
+18	-48	0
+19	-48	0
+20	-48	0
+21	-48	0
+22	-48	0
+23	-48	0
+24	-48	0
+25	-48	0
+26	-48	0
+27	-48	0
+28	-48	0
+29	-48	0
+30	-48	0
+31	-48	0
+32	-48	0
+33	-48	0
+34	-48	0
+35	-48	0
+36	-48	0
+37	-48	0
+38	-48	0
+39	-48	0
+40	-48	0
+41	-48	0
+42	-48	0
+43	-48	0
+44	-48	0
+45	-48	0
+46	-48	0
+47	-48	0
+48	-48	0
+49	-48	0
+50	-48	0
+51	-48	0
+52	-48	0
+53	-48	0
+54	-48	0
+55	-48	0
+56	-48	0
+57	-48	0
+58	-48	0
+59	-48	0
+60	-48	0
+61	-48	0
+62	-48	0
+63	-48	0
+64	-48	0
+65	-48	0
+66	-48	0
+67	-48	0
+68	-48	0
+69	-48	0
+70	-48	0
+71	-48	0
+72	-48	0
+73	-48	0
+74	-48	0
+75	-48	0
+76	-48	0
+77	-48	0
+78	-48	0
+79	-48	0
+80	-48	0
+81	-48	0
+82	-48	0
+83	-48	0
+84	-48	0
+85	-48	0
+86	-48	0
+87	-48	0
+88	-48	0
+89	-48	0
+90	-48	0
+91	-48	0
+92	-48	0
+93	-48	0
+94	-48	0
+95	-48	0
+96	-48	0
+97	-48	0
+98	-48	0
+99	-48	0
+100	-48	0
+101	-48	0
+102	-48	0
+103	-48	0
+104	-48	0
+105	-48	0
+106	-48	0
+107	-48	0
+108	-48	0
+109	-48	0
+110	-48	0
+111	-48	0
+112	-48	0
+113	-48	0
+114	-48	0
+115	-48	0
+116	-48	0
+117	-48	0
+118	-48	0
+119	-48	0
+120	-48	0
+121	-48	0
+122	-48	0
+123	-48	0
+124	-48	0
+125	-48	0
+126	-48	0
+127	-48	0
+128	-48	0
+129	-48	0
+130	-48	0
+131	-48	0
+132	-48	0
+133	-48	0
+134	-48	0
+135	-48	0
+136	-48	0
+137	-48	0
+138	-48	0
+139	-48	0
+140	-48	0
+141	-48	0
+142	-48	0
+143	-48	0
+144	-48	0
+145	-48	0
+146	-48	0
+147	-48	0
+148	-48	0
+149	-48	0
+150	-48	0
+151	-48	0
+152	-48	0
+153	-48	0
+154	-48	0
+155	-48	0
+156	-48	0
+157	-48	0
+158	-48	0
+159	-48	0
+160	-48	0
+161	-48	0
+162	-48	0
+163	-48	0
+164	-48	0
+165	-48	0
+166	-48	0
+167	-48	0
+168	-48	0
+169	-48	0
+170	-48	0
+171	-48	0
+172	-48	0
+173	-48	0
+174	-48	0
+175	-48	0
+176	-48	0
+177	-48	0
+178	-48	0
+179	-48	0
+180	-48	0
+181	-48	0
+182	-48	0
+183	-48	0
+184	-48	0
+185	-48	0
+186	-48	0
+187	-48	0
+188	-48	0
+189	-48	0
+190	-48	0
+191	-48	0
+192	-48	0
+193	-48	0
+194	-48	0
+195	-48	0
+196	-48	0
+197	-48	0
+198	-48	0
+199	-48	0
+200	-48	0
+201	-48	0
+202	-48	0
+203	-48	0
+204	-48	0
+205	-48	0
+206	-48	0
+207	-48	0
+208	-48	0
+209	-48	0
+210	-48	0
+211	-48	0
+212	-48	0
+213	-48	0
+214	-48	0
+215	-48	0
+216	-48	0
+217	-48	0
+218	-48	0
+219	-48	0
+220	-48	0
+221	-48	0
+222	-48	0
+223	-48	0
+224	-48	0
+225	-48	0
+226	-48	0
+227	-48	0
+228	-48	0
+229	-48	0
+230	-48	0
+231	-48	0
+232	-48	0
+233	-48	0
+234	-48	0
+235	-48	0
+236	-48	0
+237	-48	0
+238	-48	0
+239	-48	0
+240	-48	0
+241	-48	0
+242	-48	0
+243	-48	0
+244	-48	0
+245	-48	0
+246	-48	0
+247	-48	0
+248	-48	0
+249	-48	0
+250	-48	0
+251	-48	0
+252	-48	0
+253	-48	0
+254	-48	0
+255	-48	0
+256	-48	0
+257	-48	0
+258	-48	0
+259	-48	0
+260	-48	0
+261	-48	0
+262	-48	0
+263	-48	0
+264	-48	0
+265	-48	0
+266	-48	0
+267	-48	0
+268	-48	0
+269	-48	0
+270	-48	0
+271	-48	0
+272	-48	0
+273	-48	0
+274	-48	0
+275	-48	0
+276	-48	0
+277	-48	0
+278	-48	0
+279	-48	0
+280	-48	0
+281	-48	0
+282	-48	0
+283	-48	0
+284	-48	0
+285	-48	0
+286	-48	0
+287	-48	0
+288	-48	0
+289	-48	0
+290	-48	0
+291	-48	0
+292	-48	0
+293	-48	0
+294	-48	0
+295	-48	0
+296	-48	0
+297	-48	0
+298	-48	0
+299	-48	0
+300	-48	0
+301	-48	0
+302	-48	0
+303	-48	0
+304	-48	0
+305	-48	0
+306	-48	0
+307	-48	0
+308	-48	0
+309	-48	0
+310	-48	0
+311	-48	0
+312	-48	0
+313	-48	0
+314	-48	0
+315	-48	0
+316	-48	0
+317	-48	0
+318	-48	0
+319	-48	0
+320	-48	0
+321	-48	0
+322	-48	0
+323	-48	0
+324	-48	0
+325	-48	0
+326	-48	0
+327	-48	0
+328	-48	0
+329	-48	0
+330	-48	0
+331	-48	0
+332	-48	0
+333	-48	0
+334	-48	0
+335	-48	0
+336	-48	0
+337	-48	0
+338	-48	0
+339	-48	0
+340	-48	0
+341	-48	0
+342	-48	0
+343	-48	0
+344	-48	0
+345	-48	0
+346	-48	0
+347	-48	0
+348	-48	0
+349	-48	0
+350	-48	0
+351	-48	0
+352	-48	0
+353	-48	0
+354	-48	0
+355	-48	0
+356	-48	0
+357	-48	0
+358	-48	0
+359	-48	0
+360	-48	0
+0	-47.5	0
+1	-47.5	0
+2	-47.5	0
+3	-47.5	0
+4	-47.5	0
+5	-47.5	0
+6	-47.5	0
+7	-47.5	0
+8	-47.5	0
+9	-47.5	0
+10	-47.5	0
+11	-47.5	0
+12	-47.5	0
+13	-47.5	0
+14	-47.5	0
+15	-47.5	0
+16	-47.5	0
+17	-47.5	0
+18	-47.5	0
+19	-47.5	0
+20	-47.5	0
+21	-47.5	0
+22	-47.5	0
+23	-47.5	0
+24	-47.5	0
+25	-47.5	0
+26	-47.5	0
+27	-47.5	0
+28	-47.5	0
+29	-47.5	0
+30	-47.5	0
+31	-47.5	0
+32	-47.5	0
+33	-47.5	0
+34	-47.5	0
+35	-47.5	0
+36	-47.5	0
+37	-47.5	0
+38	-47.5	0
+39	-47.5	0
+40	-47.5	0
+41	-47.5	0
+42	-47.5	0
+43	-47.5	0
+44	-47.5	0
+45	-47.5	0
+46	-47.5	0
+47	-47.5	0
+48	-47.5	0
+49	-47.5	0
+50	-47.5	0
+51	-47.5	0
+52	-47.5	0
+53	-47.5	0
+54	-47.5	0
+55	-47.5	0
+56	-47.5	0
+57	-47.5	0
+58	-47.5	0
+59	-47.5	0
+60	-47.5	0
+61	-47.5	0
+62	-47.5	0
+63	-47.5	0
+64	-47.5	0
+65	-47.5	0
+66	-47.5	0
+67	-47.5	0
+68	-47.5	0
+69	-47.5	0
+70	-47.5	0
+71	-47.5	0
+72	-47.5	0
+73	-47.5	0
+74	-47.5	0
+75	-47.5	0
+76	-47.5	0
+77	-47.5	0
+78	-47.5	0
+79	-47.5	0
+80	-47.5	0
+81	-47.5	0
+82	-47.5	0
+83	-47.5	0
+84	-47.5	0
+85	-47.5	0
+86	-47.5	0
+87	-47.5	0
+88	-47.5	0
+89	-47.5	0
+90	-47.5	0
+91	-47.5	0
+92	-47.5	0
+93	-47.5	0
+94	-47.5	0
+95	-47.5	0
+96	-47.5	0
+97	-47.5	0
+98	-47.5	0
+99	-47.5	0
+100	-47.5	0
+101	-47.5	0
+102	-47.5	0
+103	-47.5	0
+104	-47.5	0
+105	-47.5	0
+106	-47.5	0
+107	-47.5	0
+108	-47.5	0
+109	-47.5	0
+110	-47.5	0
+111	-47.5	0
+112	-47.5	0
+113	-47.5	0
+114	-47.5	0
+115	-47.5	0
+116	-47.5	0
+117	-47.5	0
+118	-47.5	0
+119	-47.5	0
+120	-47.5	0
+121	-47.5	0
+122	-47.5	0
+123	-47.5	0
+124	-47.5	0
+125	-47.5	0
+126	-47.5	0
+127	-47.5	0
+128	-47.5	0
+129	-47.5	0
+130	-47.5	0
+131	-47.5	0
+132	-47.5	0
+133	-47.5	0
+134	-47.5	0
+135	-47.5	0
+136	-47.5	0
+137	-47.5	0
+138	-47.5	0
+139	-47.5	0
+140	-47.5	0
+141	-47.5	0
+142	-47.5	0
+143	-47.5	0
+144	-47.5	0
+145	-47.5	0
+146	-47.5	0
+147	-47.5	0
+148	-47.5	0
+149	-47.5	0
+150	-47.5	0
+151	-47.5	0
+152	-47.5	0
+153	-47.5	0
+154	-47.5	0
+155	-47.5	0
+156	-47.5	0
+157	-47.5	0
+158	-47.5	0
+159	-47.5	0
+160	-47.5	0
+161	-47.5	0
+162	-47.5	0
+163	-47.5	0
+164	-47.5	0
+165	-47.5	0
+166	-47.5	0
+167	-47.5	0
+168	-47.5	0
+169	-47.5	0
+170	-47.5	0
+171	-47.5	0
+172	-47.5	0
+173	-47.5	0
+174	-47.5	0
+175	-47.5	0
+176	-47.5	0
+177	-47.5	0
+178	-47.5	0
+179	-47.5	0
+180	-47.5	0
+181	-47.5	0
+182	-47.5	0
+183	-47.5	0
+184	-47.5	0
+185	-47.5	0
+186	-47.5	0
+187	-47.5	0
+188	-47.5	0
+189	-47.5	0
+190	-47.5	0
+191	-47.5	0
+192	-47.5	0
+193	-47.5	0
+194	-47.5	0
+195	-47.5	0
+196	-47.5	0
+197	-47.5	0
+198	-47.5	0
+199	-47.5	0
+200	-47.5	0
+201	-47.5	0
+202	-47.5	0
+203	-47.5	0
+204	-47.5	0
+205	-47.5	0
+206	-47.5	0
+207	-47.5	0
+208	-47.5	0
+209	-47.5	0
+210	-47.5	0
+211	-47.5	0
+212	-47.5	0
+213	-47.5	0
+214	-47.5	0
+215	-47.5	0
+216	-47.5	0
+217	-47.5	0
+218	-47.5	0
+219	-47.5	0
+220	-47.5	0
+221	-47.5	0
+222	-47.5	0
+223	-47.5	0
+224	-47.5	0
+225	-47.5	0
+226	-47.5	0
+227	-47.5	0
+228	-47.5	0
+229	-47.5	0
+230	-47.5	0
+231	-47.5	0
+232	-47.5	0
+233	-47.5	0
+234	-47.5	0
+235	-47.5	0
+236	-47.5	0
+237	-47.5	0
+238	-47.5	0
+239	-47.5	0
+240	-47.5	0
+241	-47.5	0
+242	-47.5	0
+243	-47.5	0
+244	-47.5	0
+245	-47.5	0
+246	-47.5	0
+247	-47.5	0
+248	-47.5	0
+249	-47.5	0
+250	-47.5	0
+251	-47.5	0
+252	-47.5	0
+253	-47.5	0
+254	-47.5	0
+255	-47.5	0
+256	-47.5	0
+257	-47.5	0
+258	-47.5	0
+259	-47.5	0
+260	-47.5	0
+261	-47.5	0
+262	-47.5	0
+263	-47.5	0
+264	-47.5	0
+265	-47.5	0
+266	-47.5	0
+267	-47.5	0
+268	-47.5	0
+269	-47.5	0
+270	-47.5	0
+271	-47.5	0
+272	-47.5	0
+273	-47.5	0
+274	-47.5	0
+275	-47.5	0
+276	-47.5	0
+277	-47.5	0
+278	-47.5	0
+279	-47.5	0
+280	-47.5	0
+281	-47.5	0
+282	-47.5	0
+283	-47.5	0
+284	-47.5	0
+285	-47.5	0
+286	-47.5	0
+287	-47.5	0
+288	-47.5	0
+289	-47.5	0
+290	-47.5	0
+291	-47.5	0
+292	-47.5	0
+293	-47.5	0
+294	-47.5	0
+295	-47.5	0
+296	-47.5	0
+297	-47.5	0
+298	-47.5	0
+299	-47.5	0
+300	-47.5	0
+301	-47.5	0
+302	-47.5	0
+303	-47.5	0
+304	-47.5	0
+305	-47.5	0
+306	-47.5	0
+307	-47.5	0
+308	-47.5	0
+309	-47.5	0
+310	-47.5	0
+311	-47.5	0
+312	-47.5	0
+313	-47.5	0
+314	-47.5	0
+315	-47.5	0
+316	-47.5	0
+317	-47.5	0
+318	-47.5	0
+319	-47.5	0
+320	-47.5	0
+321	-47.5	0
+322	-47.5	0
+323	-47.5	0
+324	-47.5	0
+325	-47.5	0
+326	-47.5	0
+327	-47.5	0
+328	-47.5	0
+329	-47.5	0
+330	-47.5	0
+331	-47.5	0
+332	-47.5	0
+333	-47.5	0
+334	-47.5	0
+335	-47.5	0
+336	-47.5	0
+337	-47.5	0
+338	-47.5	0
+339	-47.5	0
+340	-47.5	0
+341	-47.5	0
+342	-47.5	0
+343	-47.5	0
+344	-47.5	0
+345	-47.5	0
+346	-47.5	0
+347	-47.5	0
+348	-47.5	0
+349	-47.5	0
+350	-47.5	0
+351	-47.5	0
+352	-47.5	0
+353	-47.5	0
+354	-47.5	0
+355	-47.5	0
+356	-47.5	0
+357	-47.5	0
+358	-47.5	0
+359	-47.5	0
+360	-47.5	0
+0	-47	0
+1	-47	0
+2	-47	0
+3	-47	0
+4	-47	0
+5	-47	0
+6	-47	0
+7	-47	0
+8	-47	0
+9	-47	0
+10	-47	0
+11	-47	0
+12	-47	0
+13	-47	0
+14	-47	0
+15	-47	0
+16	-47	0
+17	-47	0
+18	-47	0
+19	-47	0
+20	-47	0
+21	-47	0
+22	-47	0
+23	-47	0
+24	-47	0
+25	-47	0
+26	-47	0
+27	-47	0
+28	-47	0
+29	-47	0
+30	-47	0
+31	-47	0
+32	-47	0
+33	-47	0
+34	-47	0
+35	-47	0
+36	-47	0
+37	-47	0
+38	-47	0
+39	-47	0
+40	-47	0
+41	-47	0
+42	-47	0
+43	-47	0
+44	-47	0
+45	-47	0
+46	-47	0
+47	-47	0
+48	-47	0
+49	-47	0
+50	-47	0
+51	-47	0
+52	-47	0
+53	-47	0
+54	-47	0
+55	-47	0
+56	-47	0
+57	-47	0
+58	-47	0
+59	-47	0
+60	-47	0
+61	-47	0
+62	-47	0
+63	-47	0
+64	-47	0
+65	-47	0
+66	-47	0
+67	-47	0
+68	-47	0
+69	-47	0
+70	-47	0
+71	-47	0
+72	-47	0
+73	-47	0
+74	-47	0
+75	-47	0
+76	-47	0
+77	-47	0
+78	-47	0
+79	-47	0
+80	-47	0
+81	-47	0
+82	-47	0
+83	-47	0
+84	-47	0
+85	-47	0
+86	-47	0
+87	-47	0
+88	-47	0
+89	-47	0
+90	-47	0
+91	-47	0
+92	-47	0
+93	-47	0
+94	-47	0
+95	-47	0
+96	-47	0
+97	-47	0
+98	-47	0
+99	-47	0
+100	-47	0
+101	-47	0
+102	-47	0
+103	-47	0
+104	-47	0
+105	-47	0
+106	-47	0
+107	-47	0
+108	-47	0
+109	-47	0
+110	-47	0
+111	-47	0
+112	-47	0
+113	-47	0
+114	-47	0
+115	-47	0
+116	-47	0
+117	-47	0
+118	-47	0
+119	-47	0
+120	-47	0
+121	-47	0
+122	-47	0
+123	-47	0
+124	-47	0
+125	-47	0
+126	-47	0
+127	-47	0
+128	-47	0
+129	-47	0
+130	-47	0
+131	-47	0
+132	-47	0
+133	-47	0
+134	-47	0
+135	-47	0
+136	-47	0
+137	-47	0
+138	-47	0
+139	-47	0
+140	-47	0
+141	-47	0
+142	-47	0
+143	-47	0
+144	-47	0
+145	-47	0
+146	-47	0
+147	-47	0
+148	-47	0
+149	-47	0
+150	-47	0
+151	-47	0
+152	-47	0
+153	-47	0
+154	-47	0
+155	-47	0
+156	-47	0
+157	-47	0
+158	-47	0
+159	-47	0
+160	-47	0
+161	-47	0
+162	-47	0
+163	-47	0
+164	-47	0
+165	-47	0
+166	-47	0
+167	-47	0
+168	-47	0
+169	-47	0
+170	-47	0
+171	-47	0
+172	-47	0
+173	-47	0
+174	-47	0
+175	-47	0
+176	-47	0
+177	-47	0
+178	-47	0
+179	-47	0
+180	-47	0
+181	-47	0
+182	-47	0
+183	-47	0
+184	-47	0
+185	-47	0
+186	-47	0
+187	-47	0
+188	-47	0
+189	-47	0
+190	-47	0
+191	-47	0
+192	-47	0
+193	-47	0
+194	-47	0
+195	-47	0
+196	-47	0
+197	-47	0
+198	-47	0
+199	-47	0
+200	-47	0
+201	-47	0
+202	-47	0
+203	-47	0
+204	-47	0
+205	-47	0
+206	-47	0
+207	-47	0
+208	-47	0
+209	-47	0
+210	-47	0
+211	-47	0
+212	-47	0
+213	-47	0
+214	-47	0
+215	-47	0
+216	-47	0
+217	-47	0
+218	-47	0
+219	-47	0
+220	-47	0
+221	-47	0
+222	-47	0
+223	-47	0
+224	-47	0
+225	-47	0
+226	-47	0
+227	-47	0
+228	-47	0
+229	-47	0
+230	-47	0
+231	-47	0
+232	-47	0
+233	-47	0
+234	-47	0
+235	-47	0
+236	-47	0
+237	-47	0
+238	-47	0
+239	-47	0
+240	-47	0
+241	-47	0
+242	-47	0
+243	-47	0
+244	-47	0
+245	-47	0
+246	-47	0
+247	-47	0
+248	-47	0
+249	-47	0
+250	-47	0
+251	-47	0
+252	-47	0
+253	-47	0
+254	-47	0
+255	-47	0
+256	-47	0
+257	-47	0
+258	-47	0
+259	-47	0
+260	-47	0
+261	-47	0
+262	-47	0
+263	-47	0
+264	-47	0
+265	-47	0
+266	-47	0
+267	-47	0
+268	-47	0
+269	-47	0
+270	-47	0
+271	-47	0
+272	-47	0
+273	-47	0
+274	-47	0
+275	-47	0
+276	-47	0
+277	-47	0
+278	-47	0
+279	-47	0
+280	-47	0
+281	-47	0
+282	-47	0
+283	-47	0
+284	-47	0
+285	-47	0
+286	-47	0
+287	-47	0
+288	-47	0
+289	-47	0
+290	-47	0
+291	-47	0
+292	-47	0
+293	-47	0
+294	-47	0
+295	-47	0
+296	-47	0
+297	-47	0
+298	-47	0
+299	-47	0
+300	-47	0
+301	-47	0
+302	-47	0
+303	-47	0
+304	-47	0
+305	-47	0
+306	-47	0
+307	-47	0
+308	-47	0
+309	-47	0
+310	-47	0
+311	-47	0
+312	-47	0
+313	-47	0
+314	-47	0
+315	-47	0
+316	-47	0
+317	-47	0
+318	-47	0
+319	-47	0
+320	-47	0
+321	-47	0
+322	-47	0
+323	-47	0
+324	-47	0
+325	-47	0
+326	-47	0
+327	-47	0
+328	-47	0
+329	-47	0
+330	-47	0
+331	-47	0
+332	-47	0
+333	-47	0
+334	-47	0
+335	-47	0
+336	-47	0
+337	-47	0
+338	-47	0
+339	-47	0
+340	-47	0
+341	-47	0
+342	-47	0
+343	-47	0
+344	-47	0
+345	-47	0
+346	-47	0
+347	-47	0
+348	-47	0
+349	-47	0
+350	-47	0
+351	-47	0
+352	-47	0
+353	-47	0
+354	-47	0
+355	-47	0
+356	-47	0
+357	-47	0
+358	-47	0
+359	-47	0
+360	-47	0
+0	-46.5	0
+1	-46.5	0
+2	-46.5	0
+3	-46.5	0
+4	-46.5	0
+5	-46.5	0
+6	-46.5	0
+7	-46.5	0
+8	-46.5	0
+9	-46.5	0
+10	-46.5	0
+11	-46.5	0
+12	-46.5	0
+13	-46.5	0
+14	-46.5	0
+15	-46.5	0
+16	-46.5	0
+17	-46.5	0
+18	-46.5	0
+19	-46.5	0
+20	-46.5	0
+21	-46.5	0
+22	-46.5	0
+23	-46.5	0
+24	-46.5	0
+25	-46.5	0
+26	-46.5	0
+27	-46.5	0
+28	-46.5	0
+29	-46.5	0
+30	-46.5	0
+31	-46.5	0
+32	-46.5	0
+33	-46.5	0
+34	-46.5	0
+35	-46.5	0
+36	-46.5	0
+37	-46.5	0
+38	-46.5	0
+39	-46.5	0
+40	-46.5	0
+41	-46.5	0
+42	-46.5	0
+43	-46.5	0
+44	-46.5	0
+45	-46.5	0
+46	-46.5	0
+47	-46.5	0
+48	-46.5	0
+49	-46.5	0
+50	-46.5	0
+51	-46.5	0
+52	-46.5	0
+53	-46.5	0
+54	-46.5	0
+55	-46.5	0
+56	-46.5	0
+57	-46.5	0
+58	-46.5	0
+59	-46.5	0
+60	-46.5	0
+61	-46.5	0
+62	-46.5	0
+63	-46.5	0
+64	-46.5	0
+65	-46.5	0
+66	-46.5	0
+67	-46.5	0
+68	-46.5	0
+69	-46.5	0
+70	-46.5	0
+71	-46.5	0
+72	-46.5	0
+73	-46.5	0
+74	-46.5	0
+75	-46.5	0
+76	-46.5	0
+77	-46.5	0
+78	-46.5	0
+79	-46.5	0
+80	-46.5	0
+81	-46.5	0
+82	-46.5	0
+83	-46.5	0
+84	-46.5	0
+85	-46.5	0
+86	-46.5	0
+87	-46.5	0
+88	-46.5	0
+89	-46.5	0
+90	-46.5	0
+91	-46.5	0
+92	-46.5	0
+93	-46.5	0
+94	-46.5	0
+95	-46.5	0
+96	-46.5	0
+97	-46.5	0
+98	-46.5	0
+99	-46.5	0
+100	-46.5	0
+101	-46.5	0
+102	-46.5	0
+103	-46.5	0
+104	-46.5	0
+105	-46.5	0
+106	-46.5	0
+107	-46.5	0
+108	-46.5	0
+109	-46.5	0
+110	-46.5	0
+111	-46.5	0
+112	-46.5	0
+113	-46.5	0
+114	-46.5	0
+115	-46.5	0
+116	-46.5	0
+117	-46.5	0
+118	-46.5	0
+119	-46.5	0
+120	-46.5	0
+121	-46.5	0
+122	-46.5	0
+123	-46.5	0
+124	-46.5	0
+125	-46.5	0
+126	-46.5	0
+127	-46.5	0
+128	-46.5	0
+129	-46.5	0
+130	-46.5	0
+131	-46.5	0
+132	-46.5	0
+133	-46.5	0
+134	-46.5	0
+135	-46.5	0
+136	-46.5	0
+137	-46.5	0
+138	-46.5	0
+139	-46.5	0
+140	-46.5	0
+141	-46.5	0
+142	-46.5	0
+143	-46.5	0
+144	-46.5	0
+145	-46.5	0
+146	-46.5	0
+147	-46.5	0
+148	-46.5	0
+149	-46.5	0
+150	-46.5	0
+151	-46.5	0
+152	-46.5	0
+153	-46.5	0
+154	-46.5	0
+155	-46.5	0
+156	-46.5	0
+157	-46.5	0
+158	-46.5	0
+159	-46.5	0
+160	-46.5	0
+161	-46.5	0
+162	-46.5	0
+163	-46.5	0
+164	-46.5	0
+165	-46.5	0
+166	-46.5	0
+167	-46.5	0
+168	-46.5	0
+169	-46.5	0
+170	-46.5	0
+171	-46.5	0
+172	-46.5	0
+173	-46.5	0
+174	-46.5	0
+175	-46.5	0
+176	-46.5	0
+177	-46.5	0
+178	-46.5	0
+179	-46.5	0
+180	-46.5	0
+181	-46.5	0
+182	-46.5	0
+183	-46.5	0
+184	-46.5	0
+185	-46.5	0
+186	-46.5	0
+187	-46.5	0
+188	-46.5	0
+189	-46.5	0
+190	-46.5	0
+191	-46.5	0
+192	-46.5	0
+193	-46.5	0
+194	-46.5	0
+195	-46.5	0
+196	-46.5	0
+197	-46.5	0
+198	-46.5	0
+199	-46.5	0
+200	-46.5	0
+201	-46.5	0
+202	-46.5	0
+203	-46.5	0
+204	-46.5	0
+205	-46.5	0
+206	-46.5	0
+207	-46.5	0
+208	-46.5	0
+209	-46.5	0
+210	-46.5	0
+211	-46.5	0
+212	-46.5	0
+213	-46.5	0
+214	-46.5	0
+215	-46.5	0
+216	-46.5	0
+217	-46.5	0
+218	-46.5	0
+219	-46.5	0
+220	-46.5	0
+221	-46.5	0
+222	-46.5	0
+223	-46.5	0
+224	-46.5	0
+225	-46.5	0
+226	-46.5	0
+227	-46.5	0
+228	-46.5	0
+229	-46.5	0
+230	-46.5	0
+231	-46.5	0
+232	-46.5	0
+233	-46.5	0
+234	-46.5	0
+235	-46.5	0
+236	-46.5	0
+237	-46.5	0
+238	-46.5	0
+239	-46.5	0
+240	-46.5	0
+241	-46.5	0
+242	-46.5	0
+243	-46.5	0
+244	-46.5	0
+245	-46.5	0
+246	-46.5	0
+247	-46.5	0
+248	-46.5	0
+249	-46.5	0
+250	-46.5	0
+251	-46.5	0
+252	-46.5	0
+253	-46.5	0
+254	-46.5	0
+255	-46.5	0
+256	-46.5	0
+257	-46.5	0
+258	-46.5	0
+259	-46.5	0
+260	-46.5	0
+261	-46.5	0
+262	-46.5	0
+263	-46.5	0
+264	-46.5	0
+265	-46.5	0
+266	-46.5	0
+267	-46.5	0
+268	-46.5	0
+269	-46.5	0
+270	-46.5	0
+271	-46.5	0
+272	-46.5	0
+273	-46.5	0
+274	-46.5	0
+275	-46.5	0
+276	-46.5	0
+277	-46.5	0
+278	-46.5	0
+279	-46.5	0
+280	-46.5	0
+281	-46.5	0
+282	-46.5	0
+283	-46.5	0
+284	-46.5	0
+285	-46.5	0
+286	-46.5	0
+287	-46.5	0
+288	-46.5	0
+289	-46.5	0
+290	-46.5	0
+291	-46.5	0
+292	-46.5	0
+293	-46.5	0
+294	-46.5	0
+295	-46.5	0
+296	-46.5	0
+297	-46.5	0
+298	-46.5	0
+299	-46.5	0
+300	-46.5	0
+301	-46.5	0
+302	-46.5	0
+303	-46.5	0
+304	-46.5	0
+305	-46.5	0
+306	-46.5	0
+307	-46.5	0
+308	-46.5	0
+309	-46.5	0
+310	-46.5	0
+311	-46.5	0
+312	-46.5	0
+313	-46.5	0
+314	-46.5	0
+315	-46.5	0
+316	-46.5	0
+317	-46.5	0
+318	-46.5	0
+319	-46.5	0
+320	-46.5	0
+321	-46.5	0
+322	-46.5	0
+323	-46.5	0
+324	-46.5	0
+325	-46.5	0
+326	-46.5	0
+327	-46.5	0
+328	-46.5	0
+329	-46.5	0
+330	-46.5	0
+331	-46.5	0
+332	-46.5	0
+333	-46.5	0
+334	-46.5	0
+335	-46.5	0
+336	-46.5	0
+337	-46.5	0
+338	-46.5	0
+339	-46.5	0
+340	-46.5	0
+341	-46.5	0
+342	-46.5	0
+343	-46.5	0
+344	-46.5	0
+345	-46.5	0
+346	-46.5	0
+347	-46.5	0
+348	-46.5	0
+349	-46.5	0
+350	-46.5	0
+351	-46.5	0
+352	-46.5	0
+353	-46.5	0
+354	-46.5	0
+355	-46.5	0
+356	-46.5	0
+357	-46.5	0
+358	-46.5	0
+359	-46.5	0
+360	-46.5	0
+0	-46	0
+1	-46	0
+2	-46	0
+3	-46	0
+4	-46	0
+5	-46	0
+6	-46	0
+7	-46	0
+8	-46	0
+9	-46	0
+10	-46	0
+11	-46	0
+12	-46	0
+13	-46	0
+14	-46	0
+15	-46	0
+16	-46	0
+17	-46	0
+18	-46	0
+19	-46	0
+20	-46	0
+21	-46	0
+22	-46	0
+23	-46	0
+24	-46	0
+25	-46	0
+26	-46	0
+27	-46	0
+28	-46	0
+29	-46	0
+30	-46	0
+31	-46	0
+32	-46	0
+33	-46	0
+34	-46	0
+35	-46	0
+36	-46	0
+37	-46	0
+38	-46	0
+39	-46	0
+40	-46	0
+41	-46	0
+42	-46	0
+43	-46	0
+44	-46	0
+45	-46	0
+46	-46	0
+47	-46	0
+48	-46	0
+49	-46	0
+50	-46	0
+51	-46	0
+52	-46	0
+53	-46	0
+54	-46	0
+55	-46	0
+56	-46	0
+57	-46	0
+58	-46	0
+59	-46	0
+60	-46	0
+61	-46	0
+62	-46	0
+63	-46	0
+64	-46	0
+65	-46	0
+66	-46	0
+67	-46	0
+68	-46	0
+69	-46	0
+70	-46	0
+71	-46	0
+72	-46	0
+73	-46	0
+74	-46	0
+75	-46	0
+76	-46	0
+77	-46	0
+78	-46	0
+79	-46	0
+80	-46	0
+81	-46	0
+82	-46	0
+83	-46	0
+84	-46	0
+85	-46	0
+86	-46	0
+87	-46	0
+88	-46	0
+89	-46	0
+90	-46	0
+91	-46	0
+92	-46	0
+93	-46	0
+94	-46	0
+95	-46	0
+96	-46	0
+97	-46	0
+98	-46	0
+99	-46	0
+100	-46	0
+101	-46	0
+102	-46	0
+103	-46	0
+104	-46	0
+105	-46	0
+106	-46	0
+107	-46	0
+108	-46	0
+109	-46	0
+110	-46	0
+111	-46	0
+112	-46	0
+113	-46	0
+114	-46	0
+115	-46	0
+116	-46	0
+117	-46	0
+118	-46	0
+119	-46	0
+120	-46	0
+121	-46	0
+122	-46	0
+123	-46	0
+124	-46	0
+125	-46	0
+126	-46	0
+127	-46	0
+128	-46	0
+129	-46	0
+130	-46	0
+131	-46	0
+132	-46	0
+133	-46	0
+134	-46	0
+135	-46	0
+136	-46	0
+137	-46	0
+138	-46	0
+139	-46	0
+140	-46	0
+141	-46	0
+142	-46	0
+143	-46	0
+144	-46	0
+145	-46	0
+146	-46	0
+147	-46	0
+148	-46	0
+149	-46	0
+150	-46	0
+151	-46	0
+152	-46	0
+153	-46	0
+154	-46	0
+155	-46	0
+156	-46	0
+157	-46	0
+158	-46	0
+159	-46	0
+160	-46	0
+161	-46	0
+162	-46	0
+163	-46	0
+164	-46	0
+165	-46	0
+166	-46	0
+167	-46	0
+168	-46	0
+169	-46	0
+170	-46	0
+171	-46	0
+172	-46	0
+173	-46	0
+174	-46	0
+175	-46	0
+176	-46	0
+177	-46	0
+178	-46	0
+179	-46	0
+180	-46	0
+181	-46	0
+182	-46	0
+183	-46	0
+184	-46	0
+185	-46	0
+186	-46	0
+187	-46	0
+188	-46	0
+189	-46	0
+190	-46	0
+191	-46	0
+192	-46	0
+193	-46	0
+194	-46	0
+195	-46	0
+196	-46	0
+197	-46	0
+198	-46	0
+199	-46	0
+200	-46	0
+201	-46	0
+202	-46	0
+203	-46	0
+204	-46	0
+205	-46	0
+206	-46	0
+207	-46	0
+208	-46	0
+209	-46	0
+210	-46	0
+211	-46	0
+212	-46	0
+213	-46	0
+214	-46	0
+215	-46	0
+216	-46	0
+217	-46	0
+218	-46	0
+219	-46	0
+220	-46	0
+221	-46	0
+222	-46	0
+223	-46	0
+224	-46	0
+225	-46	0
+226	-46	0
+227	-46	0
+228	-46	0
+229	-46	0
+230	-46	0
+231	-46	0
+232	-46	0
+233	-46	0
+234	-46	0
+235	-46	0
+236	-46	0
+237	-46	0
+238	-46	0
+239	-46	0
+240	-46	0
+241	-46	0
+242	-46	0
+243	-46	0
+244	-46	0
+245	-46	0
+246	-46	0
+247	-46	0
+248	-46	0
+249	-46	0
+250	-46	0
+251	-46	0
+252	-46	0
+253	-46	0
+254	-46	0
+255	-46	0
+256	-46	0
+257	-46	0
+258	-46	0
+259	-46	0
+260	-46	0
+261	-46	0
+262	-46	0
+263	-46	0
+264	-46	0
+265	-46	0
+266	-46	0
+267	-46	0
+268	-46	0
+269	-46	0
+270	-46	0
+271	-46	0
+272	-46	0
+273	-46	0
+274	-46	0
+275	-46	0
+276	-46	0
+277	-46	0
+278	-46	0
+279	-46	0
+280	-46	0
+281	-46	0
+282	-46	0
+283	-46	0
+284	-46	0
+285	-46	0
+286	-46	0
+287	-46	0
+288	-46	0
+289	-46	0
+290	-46	0
+291	-46	0
+292	-46	0
+293	-46	0
+294	-46	0
+295	-46	0
+296	-46	0
+297	-46	0
+298	-46	0
+299	-46	0
+300	-46	0
+301	-46	0
+302	-46	0
+303	-46	0
+304	-46	0
+305	-46	0
+306	-46	0
+307	-46	0
+308	-46	0
+309	-46	0
+310	-46	0
+311	-46	0
+312	-46	0
+313	-46	0
+314	-46	0
+315	-46	0
+316	-46	0
+317	-46	0
+318	-46	0
+319	-46	0
+320	-46	0
+321	-46	0
+322	-46	0
+323	-46	0
+324	-46	0
+325	-46	0
+326	-46	0
+327	-46	0
+328	-46	0
+329	-46	0
+330	-46	0
+331	-46	0
+332	-46	0
+333	-46	0
+334	-46	0
+335	-46	0
+336	-46	0
+337	-46	0
+338	-46	0
+339	-46	0
+340	-46	0
+341	-46	0
+342	-46	0
+343	-46	0
+344	-46	0
+345	-46	0
+346	-46	0
+347	-46	0
+348	-46	0
+349	-46	0
+350	-46	0
+351	-46	0
+352	-46	0
+353	-46	0
+354	-46	0
+355	-46	0
+356	-46	0
+357	-46	0
+358	-46	0
+359	-46	0
+360	-46	0
+0	-45.5	0
+1	-45.5	0
+2	-45.5	0
+3	-45.5	0
+4	-45.5	0
+5	-45.5	0
+6	-45.5	0
+7	-45.5	0
+8	-45.5	0
+9	-45.5	0
+10	-45.5	0
+11	-45.5	0
+12	-45.5	0
+13	-45.5	0
+14	-45.5	0
+15	-45.5	0
+16	-45.5	0
+17	-45.5	0
+18	-45.5	0
+19	-45.5	0
+20	-45.5	0
+21	-45.5	0
+22	-45.5	0
+23	-45.5	0
+24	-45.5	0
+25	-45.5	0
+26	-45.5	0
+27	-45.5	0
+28	-45.5	0
+29	-45.5	0
+30	-45.5	0
+31	-45.5	0
+32	-45.5	0
+33	-45.5	0
+34	-45.5	0
+35	-45.5	0
+36	-45.5	0
+37	-45.5	0
+38	-45.5	0
+39	-45.5	0
+40	-45.5	0
+41	-45.5	0
+42	-45.5	0
+43	-45.5	0
+44	-45.5	0
+45	-45.5	0
+46	-45.5	0
+47	-45.5	0
+48	-45.5	0
+49	-45.5	0
+50	-45.5	0
+51	-45.5	0
+52	-45.5	0
+53	-45.5	0
+54	-45.5	0
+55	-45.5	0
+56	-45.5	0
+57	-45.5	0
+58	-45.5	0
+59	-45.5	0
+60	-45.5	0
+61	-45.5	0
+62	-45.5	0
+63	-45.5	0
+64	-45.5	0
+65	-45.5	0
+66	-45.5	0
+67	-45.5	0
+68	-45.5	0
+69	-45.5	0
+70	-45.5	0
+71	-45.5	0
+72	-45.5	0
+73	-45.5	0
+74	-45.5	0
+75	-45.5	0
+76	-45.5	0
+77	-45.5	0
+78	-45.5	0
+79	-45.5	0
+80	-45.5	0
+81	-45.5	0
+82	-45.5	0
+83	-45.5	0
+84	-45.5	0
+85	-45.5	0
+86	-45.5	0
+87	-45.5	0
+88	-45.5	0
+89	-45.5	0
+90	-45.5	0
+91	-45.5	0
+92	-45.5	0
+93	-45.5	0
+94	-45.5	0
+95	-45.5	0
+96	-45.5	0
+97	-45.5	0
+98	-45.5	0
+99	-45.5	0
+100	-45.5	0
+101	-45.5	0
+102	-45.5	0
+103	-45.5	0
+104	-45.5	0
+105	-45.5	0
+106	-45.5	0
+107	-45.5	0
+108	-45.5	0
+109	-45.5	0
+110	-45.5	0
+111	-45.5	0
+112	-45.5	0
+113	-45.5	0
+114	-45.5	0
+115	-45.5	0
+116	-45.5	0
+117	-45.5	0
+118	-45.5	0
+119	-45.5	0
+120	-45.5	0
+121	-45.5	0
+122	-45.5	0
+123	-45.5	0
+124	-45.5	0
+125	-45.5	0
+126	-45.5	0
+127	-45.5	0
+128	-45.5	0
+129	-45.5	0
+130	-45.5	0
+131	-45.5	0
+132	-45.5	0
+133	-45.5	0
+134	-45.5	0
+135	-45.5	0
+136	-45.5	0
+137	-45.5	0
+138	-45.5	0
+139	-45.5	0
+140	-45.5	0
+141	-45.5	0
+142	-45.5	0
+143	-45.5	0
+144	-45.5	0
+145	-45.5	0
+146	-45.5	0
+147	-45.5	0
+148	-45.5	0
+149	-45.5	0
+150	-45.5	0
+151	-45.5	0
+152	-45.5	0
+153	-45.5	0
+154	-45.5	0
+155	-45.5	0
+156	-45.5	0
+157	-45.5	0
+158	-45.5	0
+159	-45.5	0
+160	-45.5	0
+161	-45.5	0
+162	-45.5	0
+163	-45.5	0
+164	-45.5	0
+165	-45.5	0
+166	-45.5	0
+167	-45.5	0
+168	-45.5	0
+169	-45.5	0
+170	-45.5	0
+171	-45.5	0
+172	-45.5	0
+173	-45.5	0
+174	-45.5	0
+175	-45.5	0
+176	-45.5	0
+177	-45.5	0
+178	-45.5	0
+179	-45.5	0
+180	-45.5	0
+181	-45.5	0
+182	-45.5	0
+183	-45.5	0
+184	-45.5	0
+185	-45.5	0
+186	-45.5	0
+187	-45.5	0
+188	-45.5	0
+189	-45.5	0
+190	-45.5	0
+191	-45.5	0
+192	-45.5	0
+193	-45.5	0
+194	-45.5	0
+195	-45.5	0
+196	-45.5	0
+197	-45.5	0
+198	-45.5	0
+199	-45.5	0
+200	-45.5	0
+201	-45.5	0
+202	-45.5	0
+203	-45.5	0
+204	-45.5	0
+205	-45.5	0
+206	-45.5	0
+207	-45.5	0
+208	-45.5	0
+209	-45.5	0
+210	-45.5	0
+211	-45.5	0
+212	-45.5	0
+213	-45.5	0
+214	-45.5	0
+215	-45.5	0
+216	-45.5	0
+217	-45.5	0
+218	-45.5	0
+219	-45.5	0
+220	-45.5	0
+221	-45.5	0
+222	-45.5	0
+223	-45.5	0
+224	-45.5	0
+225	-45.5	0
+226	-45.5	0
+227	-45.5	0
+228	-45.5	0
+229	-45.5	0
+230	-45.5	0
+231	-45.5	0
+232	-45.5	0
+233	-45.5	0
+234	-45.5	0
+235	-45.5	0
+236	-45.5	0
+237	-45.5	0
+238	-45.5	0
+239	-45.5	0
+240	-45.5	0
+241	-45.5	0
+242	-45.5	0
+243	-45.5	0
+244	-45.5	0
+245	-45.5	0
+246	-45.5	0
+247	-45.5	0
+248	-45.5	0
+249	-45.5	0
+250	-45.5	0
+251	-45.5	0
+252	-45.5	0
+253	-45.5	0
+254	-45.5	0
+255	-45.5	0
+256	-45.5	0
+257	-45.5	0
+258	-45.5	0
+259	-45.5	0
+260	-45.5	0
+261	-45.5	0
+262	-45.5	0
+263	-45.5	0
+264	-45.5	0
+265	-45.5	0
+266	-45.5	0
+267	-45.5	0
+268	-45.5	0
+269	-45.5	0
+270	-45.5	0
+271	-45.5	0
+272	-45.5	0
+273	-45.5	0
+274	-45.5	0
+275	-45.5	0
+276	-45.5	0
+277	-45.5	0
+278	-45.5	0
+279	-45.5	0
+280	-45.5	0
+281	-45.5	0
+282	-45.5	0
+283	-45.5	0
+284	-45.5	0
+285	-45.5	0
+286	-45.5	0
+287	-45.5	0
+288	-45.5	0
+289	-45.5	0
+290	-45.5	0
+291	-45.5	0
+292	-45.5	0
+293	-45.5	0
+294	-45.5	0
+295	-45.5	0
+296	-45.5	0
+297	-45.5	0
+298	-45.5	0
+299	-45.5	0
+300	-45.5	0
+301	-45.5	0
+302	-45.5	0
+303	-45.5	0
+304	-45.5	0
+305	-45.5	0
+306	-45.5	0
+307	-45.5	0
+308	-45.5	0
+309	-45.5	0
+310	-45.5	0
+311	-45.5	0
+312	-45.5	0
+313	-45.5	0
+314	-45.5	0
+315	-45.5	0
+316	-45.5	0
+317	-45.5	0
+318	-45.5	0
+319	-45.5	0
+320	-45.5	0
+321	-45.5	0
+322	-45.5	0
+323	-45.5	0
+324	-45.5	0
+325	-45.5	0
+326	-45.5	0
+327	-45.5	0
+328	-45.5	0
+329	-45.5	0
+330	-45.5	0
+331	-45.5	0
+332	-45.5	0
+333	-45.5	0
+334	-45.5	0
+335	-45.5	0
+336	-45.5	0
+337	-45.5	0
+338	-45.5	0
+339	-45.5	0
+340	-45.5	0
+341	-45.5	0
+342	-45.5	0
+343	-45.5	0
+344	-45.5	0
+345	-45.5	0
+346	-45.5	0
+347	-45.5	0
+348	-45.5	0
+349	-45.5	0
+350	-45.5	0
+351	-45.5	0
+352	-45.5	0
+353	-45.5	0
+354	-45.5	0
+355	-45.5	0
+356	-45.5	0
+357	-45.5	0
+358	-45.5	0
+359	-45.5	0
+360	-45.5	0
+0	-45	0
+1	-45	0
+2	-45	0
+3	-45	0
+4	-45	0
+5	-45	0
+6	-45	0
+7	-45	0
+8	-45	0
+9	-45	0
+10	-45	0
+11	-45	0
+12	-45	0
+13	-45	0
+14	-45	0
+15	-45	0
+16	-45	0
+17	-45	0
+18	-45	0
+19	-45	0
+20	-45	0
+21	-45	0
+22	-45	0
+23	-45	0
+24	-45	0
+25	-45	0
+26	-45	0
+27	-45	0
+28	-45	0
+29	-45	0
+30	-45	0
+31	-45	0
+32	-45	0
+33	-45	0
+34	-45	0
+35	-45	0
+36	-45	0
+37	-45	0
+38	-45	0
+39	-45	0
+40	-45	0
+41	-45	0
+42	-45	0
+43	-45	0
+44	-45	0
+45	-45	0
+46	-45	0
+47	-45	0
+48	-45	0
+49	-45	0
+50	-45	0
+51	-45	0
+52	-45	0
+53	-45	0
+54	-45	0
+55	-45	0
+56	-45	0
+57	-45	0
+58	-45	0
+59	-45	0
+60	-45	0
+61	-45	0
+62	-45	0
+63	-45	0
+64	-45	0
+65	-45	0
+66	-45	0
+67	-45	0
+68	-45	0
+69	-45	0
+70	-45	0
+71	-45	0
+72	-45	0
+73	-45	0
+74	-45	0
+75	-45	0
+76	-45	0
+77	-45	0
+78	-45	0
+79	-45	0
+80	-45	0
+81	-45	0
+82	-45	0
+83	-45	0
+84	-45	0
+85	-45	0
+86	-45	0
+87	-45	0
+88	-45	0
+89	-45	0
+90	-45	0
+91	-45	0
+92	-45	0
+93	-45	0
+94	-45	0
+95	-45	0
+96	-45	0
+97	-45	0
+98	-45	0
+99	-45	0
+100	-45	0
+101	-45	0
+102	-45	0
+103	-45	0
+104	-45	0
+105	-45	0
+106	-45	0
+107	-45	0
+108	-45	0
+109	-45	0
+110	-45	0
+111	-45	0
+112	-45	0
+113	-45	0
+114	-45	0
+115	-45	0
+116	-45	0
+117	-45	0
+118	-45	0
+119	-45	0
+120	-45	0
+121	-45	0
+122	-45	0
+123	-45	0
+124	-45	0
+125	-45	0
+126	-45	0
+127	-45	0
+128	-45	0
+129	-45	0
+130	-45	0
+131	-45	0
+132	-45	0
+133	-45	0
+134	-45	0
+135	-45	0
+136	-45	0
+137	-45	0
+138	-45	0
+139	-45	0
+140	-45	0
+141	-45	0
+142	-45	0
+143	-45	0
+144	-45	0
+145	-45	0
+146	-45	0
+147	-45	0
+148	-45	0
+149	-45	0
+150	-45	0
+151	-45	0
+152	-45	0
+153	-45	0
+154	-45	0
+155	-45	0
+156	-45	0
+157	-45	0
+158	-45	0
+159	-45	0
+160	-45	0
+161	-45	0
+162	-45	0
+163	-45	0
+164	-45	0
+165	-45	0
+166	-45	0
+167	-45	0
+168	-45	0
+169	-45	0
+170	-45	0
+171	-45	0
+172	-45	0
+173	-45	0
+174	-45	0
+175	-45	0
+176	-45	0
+177	-45	0
+178	-45	0
+179	-45	0
+180	-45	0
+181	-45	0
+182	-45	0
+183	-45	0
+184	-45	0
+185	-45	0
+186	-45	0
+187	-45	0
+188	-45	0
+189	-45	0
+190	-45	0
+191	-45	0
+192	-45	0
+193	-45	0
+194	-45	0
+195	-45	0
+196	-45	0
+197	-45	0
+198	-45	0
+199	-45	0
+200	-45	0
+201	-45	0
+202	-45	0
+203	-45	0
+204	-45	0
+205	-45	0
+206	-45	0
+207	-45	0
+208	-45	0
+209	-45	0
+210	-45	0
+211	-45	0
+212	-45	0
+213	-45	0
+214	-45	0
+215	-45	0
+216	-45	0
+217	-45	0
+218	-45	0
+219	-45	0
+220	-45	0
+221	-45	0
+222	-45	0
+223	-45	0
+224	-45	0
+225	-45	0
+226	-45	0
+227	-45	0
+228	-45	0
+229	-45	0
+230	-45	0
+231	-45	0
+232	-45	0
+233	-45	0
+234	-45	0
+235	-45	0
+236	-45	0
+237	-45	0
+238	-45	0
+239	-45	0
+240	-45	0
+241	-45	0
+242	-45	0
+243	-45	0
+244	-45	0
+245	-45	0
+246	-45	0
+247	-45	0
+248	-45	0
+249	-45	0
+250	-45	0
+251	-45	0
+252	-45	0
+253	-45	0
+254	-45	0
+255	-45	0
+256	-45	0
+257	-45	0
+258	-45	0
+259	-45	0
+260	-45	0
+261	-45	0
+262	-45	0
+263	-45	0
+264	-45	0
+265	-45	0
+266	-45	0
+267	-45	0
+268	-45	0
+269	-45	0
+270	-45	0
+271	-45	0
+272	-45	0
+273	-45	0
+274	-45	0
+275	-45	0
+276	-45	0
+277	-45	0
+278	-45	0
+279	-45	0
+280	-45	0
+281	-45	0
+282	-45	0
+283	-45	0
+284	-45	0
+285	-45	0
+286	-45	0
+287	-45	0
+288	-45	0
+289	-45	0
+290	-45	0
+291	-45	0
+292	-45	0
+293	-45	0
+294	-45	0
+295	-45	0
+296	-45	0
+297	-45	0
+298	-45	0
+299	-45	0
+300	-45	0
+301	-45	0
+302	-45	0
+303	-45	0
+304	-45	0
+305	-45	0
+306	-45	0
+307	-45	0
+308	-45	0
+309	-45	0
+310	-45	0
+311	-45	0
+312	-45	0
+313	-45	0
+314	-45	0
+315	-45	0
+316	-45	0
+317	-45	0
+318	-45	0
+319	-45	0
+320	-45	0
+321	-45	0
+322	-45	0
+323	-45	0
+324	-45	0
+325	-45	0
+326	-45	0
+327	-45	0
+328	-45	0
+329	-45	0
+330	-45	0
+331	-45	0
+332	-45	0
+333	-45	0
+334	-45	0
+335	-45	0
+336	-45	0
+337	-45	0
+338	-45	0
+339	-45	0
+340	-45	0
+341	-45	0
+342	-45	0
+343	-45	0
+344	-45	0
+345	-45	0
+346	-45	0
+347	-45	0
+348	-45	0
+349	-45	0
+350	-45	0
+351	-45	0
+352	-45	0
+353	-45	0
+354	-45	0
+355	-45	0
+356	-45	0
+357	-45	0
+358	-45	0
+359	-45	0
+360	-45	0
+0	-44.5	0
+1	-44.5	0
+2	-44.5	0
+3	-44.5	0
+4	-44.5	0
+5	-44.5	0
+6	-44.5	0
+7	-44.5	0
+8	-44.5	0
+9	-44.5	0
+10	-44.5	0
+11	-44.5	0
+12	-44.5	0
+13	-44.5	0
+14	-44.5	0
+15	-44.5	0
+16	-44.5	0
+17	-44.5	0
+18	-44.5	0
+19	-44.5	0
+20	-44.5	0
+21	-44.5	0
+22	-44.5	0
+23	-44.5	0
+24	-44.5	0
+25	-44.5	0
+26	-44.5	0
+27	-44.5	0
+28	-44.5	0
+29	-44.5	0
+30	-44.5	0
+31	-44.5	0
+32	-44.5	0
+33	-44.5	0
+34	-44.5	0
+35	-44.5	0
+36	-44.5	0
+37	-44.5	0
+38	-44.5	0
+39	-44.5	0
+40	-44.5	0
+41	-44.5	0
+42	-44.5	0
+43	-44.5	0
+44	-44.5	0
+45	-44.5	0
+46	-44.5	0
+47	-44.5	0
+48	-44.5	0
+49	-44.5	0
+50	-44.5	0
+51	-44.5	0
+52	-44.5	0
+53	-44.5	0
+54	-44.5	0
+55	-44.5	0
+56	-44.5	0
+57	-44.5	0
+58	-44.5	0
+59	-44.5	0
+60	-44.5	0
+61	-44.5	0
+62	-44.5	0
+63	-44.5	0
+64	-44.5	0
+65	-44.5	0
+66	-44.5	0
+67	-44.5	0
+68	-44.5	0
+69	-44.5	0
+70	-44.5	0
+71	-44.5	0
+72	-44.5	0
+73	-44.5	0
+74	-44.5	0
+75	-44.5	0
+76	-44.5	0
+77	-44.5	0
+78	-44.5	0
+79	-44.5	0
+80	-44.5	0
+81	-44.5	0
+82	-44.5	0
+83	-44.5	0
+84	-44.5	0
+85	-44.5	0
+86	-44.5	0
+87	-44.5	0
+88	-44.5	0
+89	-44.5	0
+90	-44.5	0
+91	-44.5	0
+92	-44.5	0
+93	-44.5	0
+94	-44.5	0
+95	-44.5	0
+96	-44.5	0
+97	-44.5	0
+98	-44.5	0
+99	-44.5	0
+100	-44.5	0
+101	-44.5	0
+102	-44.5	0
+103	-44.5	0
+104	-44.5	0
+105	-44.5	0
+106	-44.5	0
+107	-44.5	0
+108	-44.5	0
+109	-44.5	0
+110	-44.5	0
+111	-44.5	0
+112	-44.5	0
+113	-44.5	0
+114	-44.5	0
+115	-44.5	0
+116	-44.5	0
+117	-44.5	0
+118	-44.5	0
+119	-44.5	0
+120	-44.5	0
+121	-44.5	0
+122	-44.5	0
+123	-44.5	0
+124	-44.5	0
+125	-44.5	0
+126	-44.5	0
+127	-44.5	0
+128	-44.5	0
+129	-44.5	0
+130	-44.5	0
+131	-44.5	0
+132	-44.5	0
+133	-44.5	0
+134	-44.5	0
+135	-44.5	0
+136	-44.5	0
+137	-44.5	0
+138	-44.5	0
+139	-44.5	0
+140	-44.5	0
+141	-44.5	0
+142	-44.5	0
+143	-44.5	0
+144	-44.5	0
+145	-44.5	0
+146	-44.5	0
+147	-44.5	0
+148	-44.5	0
+149	-44.5	0
+150	-44.5	0
+151	-44.5	0
+152	-44.5	0
+153	-44.5	0
+154	-44.5	0
+155	-44.5	0
+156	-44.5	0
+157	-44.5	0
+158	-44.5	0
+159	-44.5	0
+160	-44.5	0
+161	-44.5	0
+162	-44.5	0
+163	-44.5	0
+164	-44.5	0
+165	-44.5	0
+166	-44.5	0
+167	-44.5	0
+168	-44.5	0
+169	-44.5	0
+170	-44.5	0
+171	-44.5	0
+172	-44.5	0
+173	-44.5	0
+174	-44.5	0
+175	-44.5	0
+176	-44.5	0
+177	-44.5	0
+178	-44.5	0
+179	-44.5	0
+180	-44.5	0
+181	-44.5	0
+182	-44.5	0
+183	-44.5	0
+184	-44.5	0
+185	-44.5	0
+186	-44.5	0
+187	-44.5	0
+188	-44.5	0
+189	-44.5	0
+190	-44.5	0
+191	-44.5	0
+192	-44.5	0
+193	-44.5	0
+194	-44.5	0
+195	-44.5	0
+196	-44.5	0
+197	-44.5	0
+198	-44.5	0
+199	-44.5	0
+200	-44.5	0
+201	-44.5	0
+202	-44.5	0
+203	-44.5	0
+204	-44.5	0
+205	-44.5	0
+206	-44.5	0
+207	-44.5	0
+208	-44.5	0
+209	-44.5	0
+210	-44.5	0
+211	-44.5	0
+212	-44.5	0
+213	-44.5	0
+214	-44.5	0
+215	-44.5	0
+216	-44.5	0
+217	-44.5	0
+218	-44.5	0
+219	-44.5	0
+220	-44.5	0
+221	-44.5	0
+222	-44.5	0
+223	-44.5	0
+224	-44.5	0
+225	-44.5	0
+226	-44.5	0
+227	-44.5	0
+228	-44.5	0
+229	-44.5	0
+230	-44.5	0
+231	-44.5	0
+232	-44.5	0
+233	-44.5	0
+234	-44.5	0
+235	-44.5	0
+236	-44.5	0
+237	-44.5	0
+238	-44.5	0
+239	-44.5	0
+240	-44.5	0
+241	-44.5	0
+242	-44.5	0
+243	-44.5	0
+244	-44.5	0
+245	-44.5	0
+246	-44.5	0
+247	-44.5	0
+248	-44.5	0
+249	-44.5	0
+250	-44.5	0
+251	-44.5	0
+252	-44.5	0
+253	-44.5	0
+254	-44.5	0
+255	-44.5	0
+256	-44.5	0
+257	-44.5	0
+258	-44.5	0
+259	-44.5	0
+260	-44.5	0
+261	-44.5	0
+262	-44.5	0
+263	-44.5	0
+264	-44.5	0
+265	-44.5	0
+266	-44.5	0
+267	-44.5	0
+268	-44.5	0
+269	-44.5	0
+270	-44.5	0
+271	-44.5	0
+272	-44.5	0
+273	-44.5	0
+274	-44.5	0
+275	-44.5	0
+276	-44.5	0
+277	-44.5	0
+278	-44.5	0
+279	-44.5	0
+280	-44.5	0
+281	-44.5	0
+282	-44.5	0
+283	-44.5	0
+284	-44.5	0
+285	-44.5	0
+286	-44.5	0
+287	-44.5	0
+288	-44.5	0
+289	-44.5	0
+290	-44.5	0
+291	-44.5	0
+292	-44.5	0
+293	-44.5	0
+294	-44.5	0
+295	-44.5	0
+296	-44.5	0
+297	-44.5	0
+298	-44.5	0
+299	-44.5	0
+300	-44.5	0
+301	-44.5	0
+302	-44.5	0
+303	-44.5	0
+304	-44.5	0
+305	-44.5	0
+306	-44.5	0
+307	-44.5	0
+308	-44.5	0
+309	-44.5	0
+310	-44.5	0
+311	-44.5	0
+312	-44.5	0
+313	-44.5	0
+314	-44.5	0
+315	-44.5	0
+316	-44.5	0
+317	-44.5	0
+318	-44.5	0
+319	-44.5	0
+320	-44.5	0
+321	-44.5	0
+322	-44.5	0
+323	-44.5	0
+324	-44.5	0
+325	-44.5	0
+326	-44.5	0
+327	-44.5	0
+328	-44.5	0
+329	-44.5	0
+330	-44.5	0
+331	-44.5	0
+332	-44.5	0
+333	-44.5	0
+334	-44.5	0
+335	-44.5	0
+336	-44.5	0
+337	-44.5	0
+338	-44.5	0
+339	-44.5	0
+340	-44.5	0
+341	-44.5	0
+342	-44.5	0
+343	-44.5	0
+344	-44.5	0
+345	-44.5	0
+346	-44.5	0
+347	-44.5	0
+348	-44.5	0
+349	-44.5	0
+350	-44.5	0
+351	-44.5	0
+352	-44.5	0
+353	-44.5	0
+354	-44.5	0
+355	-44.5	0
+356	-44.5	0
+357	-44.5	0
+358	-44.5	0
+359	-44.5	0
+360	-44.5	0
+0	-44	0
+1	-44	0
+2	-44	0
+3	-44	0
+4	-44	0
+5	-44	0
+6	-44	0
+7	-44	0
+8	-44	0
+9	-44	0
+10	-44	0
+11	-44	0
+12	-44	0
+13	-44	0
+14	-44	0
+15	-44	0
+16	-44	0
+17	-44	0
+18	-44	0
+19	-44	0
+20	-44	0
+21	-44	0
+22	-44	0
+23	-44	0
+24	-44	0
+25	-44	0
+26	-44	0
+27	-44	0
+28	-44	0
+29	-44	0
+30	-44	0
+31	-44	0
+32	-44	0
+33	-44	0
+34	-44	0
+35	-44	0
+36	-44	0
+37	-44	0
+38	-44	0
+39	-44	0
+40	-44	0
+41	-44	0
+42	-44	0
+43	-44	0
+44	-44	0
+45	-44	0
+46	-44	0
+47	-44	0
+48	-44	0
+49	-44	0
+50	-44	0
+51	-44	0
+52	-44	0
+53	-44	0
+54	-44	0
+55	-44	0
+56	-44	0
+57	-44	0
+58	-44	0
+59	-44	0
+60	-44	0
+61	-44	0
+62	-44	0
+63	-44	0
+64	-44	0
+65	-44	0
+66	-44	0
+67	-44	0
+68	-44	0
+69	-44	0
+70	-44	0
+71	-44	0
+72	-44	0
+73	-44	0
+74	-44	0
+75	-44	0
+76	-44	0
+77	-44	0
+78	-44	0
+79	-44	0
+80	-44	0
+81	-44	0
+82	-44	0
+83	-44	0
+84	-44	0
+85	-44	0
+86	-44	0
+87	-44	0
+88	-44	0
+89	-44	0
+90	-44	0
+91	-44	0
+92	-44	0
+93	-44	0
+94	-44	0
+95	-44	0
+96	-44	0
+97	-44	0
+98	-44	0
+99	-44	0
+100	-44	0
+101	-44	0
+102	-44	0
+103	-44	0
+104	-44	0
+105	-44	0
+106	-44	0
+107	-44	0
+108	-44	0
+109	-44	0
+110	-44	0
+111	-44	0
+112	-44	0
+113	-44	0
+114	-44	0
+115	-44	0
+116	-44	0
+117	-44	0
+118	-44	0
+119	-44	0
+120	-44	0
+121	-44	0
+122	-44	0
+123	-44	0
+124	-44	0
+125	-44	0
+126	-44	0
+127	-44	0
+128	-44	0
+129	-44	0
+130	-44	0
+131	-44	0
+132	-44	0
+133	-44	0
+134	-44	0
+135	-44	0
+136	-44	0
+137	-44	0
+138	-44	0
+139	-44	0
+140	-44	0
+141	-44	0
+142	-44	0
+143	-44	0
+144	-44	0
+145	-44	0
+146	-44	0
+147	-44	0
+148	-44	0
+149	-44	0
+150	-44	0
+151	-44	0
+152	-44	0
+153	-44	0
+154	-44	0
+155	-44	0
+156	-44	0
+157	-44	0
+158	-44	0
+159	-44	0
+160	-44	0
+161	-44	0
+162	-44	0
+163	-44	0
+164	-44	0
+165	-44	0
+166	-44	0
+167	-44	0
+168	-44	0
+169	-44	0
+170	-44	0
+171	-44	0
+172	-44	0
+173	-44	0
+174	-44	0
+175	-44	0
+176	-44	0
+177	-44	0
+178	-44	0
+179	-44	0
+180	-44	0
+181	-44	0
+182	-44	0
+183	-44	0
+184	-44	0
+185	-44	0
+186	-44	0
+187	-44	0
+188	-44	0
+189	-44	0
+190	-44	0
+191	-44	0
+192	-44	0
+193	-44	0
+194	-44	0
+195	-44	0
+196	-44	0
+197	-44	0
+198	-44	0
+199	-44	0
+200	-44	0
+201	-44	0
+202	-44	0
+203	-44	0
+204	-44	0
+205	-44	0
+206	-44	0
+207	-44	0
+208	-44	0
+209	-44	0
+210	-44	0
+211	-44	0
+212	-44	0
+213	-44	0
+214	-44	0
+215	-44	0
+216	-44	0
+217	-44	0
+218	-44	0
+219	-44	0
+220	-44	0
+221	-44	0
+222	-44	0
+223	-44	0
+224	-44	0
+225	-44	0
+226	-44	0
+227	-44	0
+228	-44	0
+229	-44	0
+230	-44	0
+231	-44	0
+232	-44	0
+233	-44	0
+234	-44	0
+235	-44	0
+236	-44	0
+237	-44	0
+238	-44	0
+239	-44	0
+240	-44	0
+241	-44	0
+242	-44	0
+243	-44	0
+244	-44	0
+245	-44	0
+246	-44	0
+247	-44	0
+248	-44	0
+249	-44	0
+250	-44	0
+251	-44	0
+252	-44	0
+253	-44	0
+254	-44	0
+255	-44	0
+256	-44	0
+257	-44	0
+258	-44	0
+259	-44	0
+260	-44	0
+261	-44	0
+262	-44	0
+263	-44	0
+264	-44	0
+265	-44	0
+266	-44	0
+267	-44	0
+268	-44	0
+269	-44	0
+270	-44	0
+271	-44	0
+272	-44	0
+273	-44	0
+274	-44	0
+275	-44	0
+276	-44	0
+277	-44	0
+278	-44	0
+279	-44	0
+280	-44	0
+281	-44	0
+282	-44	0
+283	-44	0
+284	-44	0
+285	-44	0
+286	-44	0
+287	-44	0
+288	-44	0
+289	-44	0
+290	-44	0
+291	-44	0
+292	-44	0
+293	-44	0
+294	-44	0
+295	-44	0
+296	-44	0
+297	-44	0
+298	-44	0
+299	-44	0
+300	-44	0
+301	-44	0
+302	-44	0
+303	-44	0
+304	-44	0
+305	-44	0
+306	-44	0
+307	-44	0
+308	-44	0
+309	-44	0
+310	-44	0
+311	-44	0
+312	-44	0
+313	-44	0
+314	-44	0
+315	-44	0
+316	-44	0
+317	-44	0
+318	-44	0
+319	-44	0
+320	-44	0
+321	-44	0
+322	-44	0
+323	-44	0
+324	-44	0
+325	-44	0
+326	-44	0
+327	-44	0
+328	-44	0
+329	-44	0
+330	-44	0
+331	-44	0
+332	-44	0
+333	-44	0
+334	-44	0
+335	-44	0
+336	-44	0
+337	-44	0
+338	-44	0
+339	-44	0
+340	-44	0
+341	-44	0
+342	-44	0
+343	-44	0
+344	-44	0
+345	-44	0
+346	-44	0
+347	-44	0
+348	-44	0
+349	-44	0
+350	-44	0
+351	-44	0
+352	-44	0
+353	-44	0
+354	-44	0
+355	-44	0
+356	-44	0
+357	-44	0
+358	-44	0
+359	-44	0
+360	-44	0
+0	-43.5	0
+1	-43.5	0
+2	-43.5	0
+3	-43.5	0
+4	-43.5	0
+5	-43.5	0
+6	-43.5	0
+7	-43.5	0
+8	-43.5	0
+9	-43.5	0
+10	-43.5	0
+11	-43.5	0
+12	-43.5	0
+13	-43.5	0
+14	-43.5	0
+15	-43.5	0
+16	-43.5	0
+17	-43.5	0
+18	-43.5	0
+19	-43.5	0
+20	-43.5	0
+21	-43.5	0
+22	-43.5	0
+23	-43.5	0
+24	-43.5	0
+25	-43.5	0
+26	-43.5	0
+27	-43.5	0
+28	-43.5	0
+29	-43.5	0
+30	-43.5	0
+31	-43.5	0
+32	-43.5	0
+33	-43.5	0
+34	-43.5	0
+35	-43.5	0
+36	-43.5	0
+37	-43.5	0
+38	-43.5	0
+39	-43.5	0
+40	-43.5	0
+41	-43.5	0
+42	-43.5	0
+43	-43.5	0
+44	-43.5	0
+45	-43.5	0
+46	-43.5	0
+47	-43.5	0
+48	-43.5	0
+49	-43.5	0
+50	-43.5	0
+51	-43.5	0
+52	-43.5	0
+53	-43.5	0
+54	-43.5	0
+55	-43.5	0
+56	-43.5	0
+57	-43.5	0
+58	-43.5	0
+59	-43.5	0
+60	-43.5	0
+61	-43.5	0
+62	-43.5	0
+63	-43.5	0
+64	-43.5	0
+65	-43.5	0
+66	-43.5	0
+67	-43.5	0
+68	-43.5	0
+69	-43.5	0
+70	-43.5	0
+71	-43.5	0
+72	-43.5	0
+73	-43.5	0
+74	-43.5	0
+75	-43.5	0
+76	-43.5	0
+77	-43.5	0
+78	-43.5	0
+79	-43.5	0
+80	-43.5	0
+81	-43.5	0
+82	-43.5	0
+83	-43.5	0
+84	-43.5	0
+85	-43.5	0
+86	-43.5	0
+87	-43.5	0
+88	-43.5	0
+89	-43.5	0
+90	-43.5	0
+91	-43.5	0
+92	-43.5	0
+93	-43.5	0
+94	-43.5	0
+95	-43.5	0
+96	-43.5	0
+97	-43.5	0
+98	-43.5	0
+99	-43.5	0
+100	-43.5	0
+101	-43.5	0
+102	-43.5	0
+103	-43.5	0
+104	-43.5	0
+105	-43.5	0
+106	-43.5	0
+107	-43.5	0
+108	-43.5	0
+109	-43.5	0
+110	-43.5	0
+111	-43.5	0
+112	-43.5	0
+113	-43.5	0
+114	-43.5	0
+115	-43.5	0
+116	-43.5	0
+117	-43.5	0
+118	-43.5	0
+119	-43.5	0
+120	-43.5	0
+121	-43.5	0
+122	-43.5	0
+123	-43.5	0
+124	-43.5	0
+125	-43.5	0
+126	-43.5	0
+127	-43.5	0
+128	-43.5	0
+129	-43.5	0
+130	-43.5	0
+131	-43.5	0
+132	-43.5	0
+133	-43.5	0
+134	-43.5	0
+135	-43.5	0
+136	-43.5	0
+137	-43.5	0
+138	-43.5	0
+139	-43.5	0
+140	-43.5	0
+141	-43.5	0
+142	-43.5	0
+143	-43.5	0
+144	-43.5	0
+145	-43.5	0
+146	-43.5	0
+147	-43.5	0
+148	-43.5	0
+149	-43.5	0
+150	-43.5	0
+151	-43.5	0
+152	-43.5	0
+153	-43.5	0
+154	-43.5	0
+155	-43.5	0
+156	-43.5	0
+157	-43.5	0
+158	-43.5	0
+159	-43.5	0
+160	-43.5	0
+161	-43.5	0
+162	-43.5	0
+163	-43.5	0
+164	-43.5	0
+165	-43.5	0
+166	-43.5	0
+167	-43.5	0
+168	-43.5	0
+169	-43.5	0
+170	-43.5	0
+171	-43.5	0
+172	-43.5	0
+173	-43.5	0
+174	-43.5	0
+175	-43.5	0
+176	-43.5	0
+177	-43.5	0
+178	-43.5	0
+179	-43.5	0
+180	-43.5	0
+181	-43.5	0
+182	-43.5	0
+183	-43.5	0
+184	-43.5	0
+185	-43.5	0
+186	-43.5	0
+187	-43.5	0
+188	-43.5	0
+189	-43.5	0
+190	-43.5	0
+191	-43.5	0
+192	-43.5	0
+193	-43.5	0
+194	-43.5	0
+195	-43.5	0
+196	-43.5	0
+197	-43.5	0
+198	-43.5	0
+199	-43.5	0
+200	-43.5	0
+201	-43.5	0
+202	-43.5	0
+203	-43.5	0
+204	-43.5	0
+205	-43.5	0
+206	-43.5	0
+207	-43.5	0
+208	-43.5	0
+209	-43.5	0
+210	-43.5	0
+211	-43.5	0
+212	-43.5	0
+213	-43.5	0
+214	-43.5	0
+215	-43.5	0
+216	-43.5	0
+217	-43.5	0
+218	-43.5	0
+219	-43.5	0
+220	-43.5	0
+221	-43.5	0
+222	-43.5	0
+223	-43.5	0
+224	-43.5	0
+225	-43.5	0
+226	-43.5	0
+227	-43.5	0
+228	-43.5	0
+229	-43.5	0
+230	-43.5	0
+231	-43.5	0
+232	-43.5	0
+233	-43.5	0
+234	-43.5	0
+235	-43.5	0
+236	-43.5	0
+237	-43.5	0
+238	-43.5	0
+239	-43.5	0
+240	-43.5	0
+241	-43.5	0
+242	-43.5	0
+243	-43.5	0
+244	-43.5	0
+245	-43.5	0
+246	-43.5	0
+247	-43.5	0
+248	-43.5	0
+249	-43.5	0
+250	-43.5	0
+251	-43.5	0
+252	-43.5	0
+253	-43.5	0
+254	-43.5	0
+255	-43.5	0
+256	-43.5	0
+257	-43.5	0
+258	-43.5	0
+259	-43.5	0
+260	-43.5	0
+261	-43.5	0
+262	-43.5	0
+263	-43.5	0
+264	-43.5	0
+265	-43.5	0
+266	-43.5	0
+267	-43.5	0
+268	-43.5	0
+269	-43.5	0
+270	-43.5	0
+271	-43.5	0
+272	-43.5	0
+273	-43.5	0
+274	-43.5	0
+275	-43.5	0
+276	-43.5	0
+277	-43.5	0
+278	-43.5	0
+279	-43.5	0
+280	-43.5	0
+281	-43.5	0
+282	-43.5	0
+283	-43.5	0
+284	-43.5	0
+285	-43.5	0
+286	-43.5	0
+287	-43.5	0
+288	-43.5	0
+289	-43.5	0
+290	-43.5	0
+291	-43.5	0
+292	-43.5	0
+293	-43.5	0
+294	-43.5	0
+295	-43.5	0
+296	-43.5	0
+297	-43.5	0
+298	-43.5	0
+299	-43.5	0
+300	-43.5	0
+301	-43.5	0
+302	-43.5	0
+303	-43.5	0
+304	-43.5	0
+305	-43.5	0
+306	-43.5	0
+307	-43.5	0
+308	-43.5	0
+309	-43.5	0
+310	-43.5	0
+311	-43.5	0
+312	-43.5	0
+313	-43.5	0
+314	-43.5	0
+315	-43.5	0
+316	-43.5	0
+317	-43.5	0
+318	-43.5	0
+319	-43.5	0
+320	-43.5	0
+321	-43.5	0
+322	-43.5	0
+323	-43.5	0
+324	-43.5	0
+325	-43.5	0
+326	-43.5	0
+327	-43.5	0
+328	-43.5	0
+329	-43.5	0
+330	-43.5	0
+331	-43.5	0
+332	-43.5	0
+333	-43.5	0
+334	-43.5	0
+335	-43.5	0
+336	-43.5	0
+337	-43.5	0
+338	-43.5	0
+339	-43.5	0
+340	-43.5	0
+341	-43.5	0
+342	-43.5	0
+343	-43.5	0
+344	-43.5	0
+345	-43.5	0
+346	-43.5	0
+347	-43.5	0
+348	-43.5	0
+349	-43.5	0
+350	-43.5	0
+351	-43.5	0
+352	-43.5	0
+353	-43.5	0
+354	-43.5	0
+355	-43.5	0
+356	-43.5	0
+357	-43.5	0
+358	-43.5	0
+359	-43.5	0
+360	-43.5	0
+0	-43	0
+1	-43	0
+2	-43	0
+3	-43	0
+4	-43	0
+5	-43	0
+6	-43	0
+7	-43	0
+8	-43	0
+9	-43	0
+10	-43	0
+11	-43	0
+12	-43	0
+13	-43	0
+14	-43	0
+15	-43	0
+16	-43	0
+17	-43	0
+18	-43	0
+19	-43	0
+20	-43	0
+21	-43	0
+22	-43	0
+23	-43	0
+24	-43	0
+25	-43	0
+26	-43	0
+27	-43	0
+28	-43	0
+29	-43	0
+30	-43	0
+31	-43	0
+32	-43	0
+33	-43	0
+34	-43	0
+35	-43	0
+36	-43	0
+37	-43	0
+38	-43	0
+39	-43	0
+40	-43	0
+41	-43	0
+42	-43	0
+43	-43	0
+44	-43	0
+45	-43	0
+46	-43	0
+47	-43	0
+48	-43	0
+49	-43	0
+50	-43	0
+51	-43	0
+52	-43	0
+53	-43	0
+54	-43	0
+55	-43	0
+56	-43	0
+57	-43	0
+58	-43	0
+59	-43	0
+60	-43	0
+61	-43	0
+62	-43	0
+63	-43	0
+64	-43	0
+65	-43	0
+66	-43	0
+67	-43	0
+68	-43	0
+69	-43	0
+70	-43	0
+71	-43	0
+72	-43	0
+73	-43	0
+74	-43	0
+75	-43	0
+76	-43	0
+77	-43	0
+78	-43	0
+79	-43	0
+80	-43	0
+81	-43	0
+82	-43	0
+83	-43	0
+84	-43	0
+85	-43	0
+86	-43	0
+87	-43	0
+88	-43	0
+89	-43	0
+90	-43	0
+91	-43	0
+92	-43	0
+93	-43	0
+94	-43	0
+95	-43	0
+96	-43	0
+97	-43	0
+98	-43	0
+99	-43	0
+100	-43	0
+101	-43	0
+102	-43	0
+103	-43	0
+104	-43	0
+105	-43	0
+106	-43	0
+107	-43	0
+108	-43	0
+109	-43	0
+110	-43	0
+111	-43	0
+112	-43	0
+113	-43	0
+114	-43	0
+115	-43	0
+116	-43	0
+117	-43	0
+118	-43	0
+119	-43	0
+120	-43	0
+121	-43	0
+122	-43	0
+123	-43	0
+124	-43	0
+125	-43	0
+126	-43	0
+127	-43	0
+128	-43	0
+129	-43	0
+130	-43	0
+131	-43	0
+132	-43	0
+133	-43	0
+134	-43	0
+135	-43	0
+136	-43	0
+137	-43	0
+138	-43	0
+139	-43	0
+140	-43	0
+141	-43	0
+142	-43	0
+143	-43	0
+144	-43	0
+145	-43	0
+146	-43	0
+147	-43	0
+148	-43	0
+149	-43	0
+150	-43	0
+151	-43	0
+152	-43	0
+153	-43	0
+154	-43	0
+155	-43	0
+156	-43	0
+157	-43	0
+158	-43	0
+159	-43	0
+160	-43	0
+161	-43	0
+162	-43	0
+163	-43	0
+164	-43	0
+165	-43	0
+166	-43	0
+167	-43	0
+168	-43	0
+169	-43	0
+170	-43	0
+171	-43	0
+172	-43	0
+173	-43	0
+174	-43	0
+175	-43	0
+176	-43	0
+177	-43	0
+178	-43	0
+179	-43	0
+180	-43	0
+181	-43	0
+182	-43	0
+183	-43	0
+184	-43	0
+185	-43	0
+186	-43	0
+187	-43	0
+188	-43	0
+189	-43	0
+190	-43	0
+191	-43	0
+192	-43	0
+193	-43	0
+194	-43	0
+195	-43	0
+196	-43	0
+197	-43	0
+198	-43	0
+199	-43	0
+200	-43	0
+201	-43	0
+202	-43	0
+203	-43	0
+204	-43	0
+205	-43	0
+206	-43	0
+207	-43	0
+208	-43	0
+209	-43	0
+210	-43	0
+211	-43	0
+212	-43	0
+213	-43	0
+214	-43	0
+215	-43	0
+216	-43	0
+217	-43	0
+218	-43	0
+219	-43	0
+220	-43	0
+221	-43	0
+222	-43	0
+223	-43	0
+224	-43	0
+225	-43	0
+226	-43	0
+227	-43	0
+228	-43	0
+229	-43	0
+230	-43	0
+231	-43	0
+232	-43	0
+233	-43	0
+234	-43	0
+235	-43	0
+236	-43	0
+237	-43	0
+238	-43	0
+239	-43	0
+240	-43	0
+241	-43	0
+242	-43	0
+243	-43	0
+244	-43	0
+245	-43	0
+246	-43	0
+247	-43	0
+248	-43	0
+249	-43	0
+250	-43	0
+251	-43	0
+252	-43	0
+253	-43	0
+254	-43	0
+255	-43	0
+256	-43	0
+257	-43	0
+258	-43	0
+259	-43	0
+260	-43	0
+261	-43	0
+262	-43	0
+263	-43	0
+264	-43	0
+265	-43	0
+266	-43	0
+267	-43	0
+268	-43	0
+269	-43	0
+270	-43	0
+271	-43	0
+272	-43	0
+273	-43	0
+274	-43	0
+275	-43	0
+276	-43	0
+277	-43	0
+278	-43	0
+279	-43	0
+280	-43	0
+281	-43	0
+282	-43	0
+283	-43	0
+284	-43	0
+285	-43	0
+286	-43	0
+287	-43	0
+288	-43	0
+289	-43	0
+290	-43	0
+291	-43	0
+292	-43	0
+293	-43	0
+294	-43	0
+295	-43	0
+296	-43	0
+297	-43	0
+298	-43	0
+299	-43	0
+300	-43	0
+301	-43	0
+302	-43	0
+303	-43	0
+304	-43	0
+305	-43	0
+306	-43	0
+307	-43	0
+308	-43	0
+309	-43	0
+310	-43	0
+311	-43	0
+312	-43	0
+313	-43	0
+314	-43	0
+315	-43	0
+316	-43	0
+317	-43	0
+318	-43	0
+319	-43	0
+320	-43	0
+321	-43	0
+322	-43	0
+323	-43	0
+324	-43	0
+325	-43	0
+326	-43	0
+327	-43	0
+328	-43	0
+329	-43	0
+330	-43	0
+331	-43	0
+332	-43	0
+333	-43	0
+334	-43	0
+335	-43	0
+336	-43	0
+337	-43	0
+338	-43	0
+339	-43	0
+340	-43	0
+341	-43	0
+342	-43	0
+343	-43	0
+344	-43	0
+345	-43	0
+346	-43	0
+347	-43	0
+348	-43	0
+349	-43	0
+350	-43	0
+351	-43	0
+352	-43	0
+353	-43	0
+354	-43	0
+355	-43	0
+356	-43	0
+357	-43	0
+358	-43	0
+359	-43	0
+360	-43	0
+0	-42.5	0
+1	-42.5	0
+2	-42.5	0
+3	-42.5	0
+4	-42.5	0
+5	-42.5	0
+6	-42.5	0
+7	-42.5	0
+8	-42.5	0
+9	-42.5	0
+10	-42.5	0
+11	-42.5	0
+12	-42.5	0
+13	-42.5	0
+14	-42.5	0
+15	-42.5	0
+16	-42.5	0
+17	-42.5	0
+18	-42.5	0
+19	-42.5	0
+20	-42.5	0
+21	-42.5	0
+22	-42.5	0
+23	-42.5	0
+24	-42.5	0
+25	-42.5	0
+26	-42.5	0
+27	-42.5	0
+28	-42.5	0
+29	-42.5	0
+30	-42.5	0
+31	-42.5	0
+32	-42.5	0
+33	-42.5	0
+34	-42.5	0
+35	-42.5	0
+36	-42.5	0
+37	-42.5	0
+38	-42.5	0
+39	-42.5	0
+40	-42.5	0
+41	-42.5	0
+42	-42.5	0
+43	-42.5	0
+44	-42.5	0
+45	-42.5	0
+46	-42.5	0
+47	-42.5	0
+48	-42.5	0
+49	-42.5	0
+50	-42.5	0
+51	-42.5	0
+52	-42.5	0
+53	-42.5	0
+54	-42.5	0
+55	-42.5	0
+56	-42.5	0
+57	-42.5	0
+58	-42.5	0
+59	-42.5	0
+60	-42.5	0
+61	-42.5	0
+62	-42.5	0
+63	-42.5	0
+64	-42.5	0
+65	-42.5	0
+66	-42.5	0
+67	-42.5	0
+68	-42.5	0
+69	-42.5	0
+70	-42.5	0
+71	-42.5	0
+72	-42.5	0
+73	-42.5	0
+74	-42.5	0
+75	-42.5	0
+76	-42.5	0
+77	-42.5	0
+78	-42.5	0
+79	-42.5	0
+80	-42.5	0
+81	-42.5	0
+82	-42.5	0
+83	-42.5	0
+84	-42.5	0
+85	-42.5	0
+86	-42.5	0
+87	-42.5	0
+88	-42.5	0
+89	-42.5	0
+90	-42.5	0
+91	-42.5	0
+92	-42.5	0
+93	-42.5	0
+94	-42.5	0
+95	-42.5	0
+96	-42.5	0
+97	-42.5	0
+98	-42.5	0
+99	-42.5	0
+100	-42.5	0
+101	-42.5	0
+102	-42.5	0
+103	-42.5	0
+104	-42.5	0
+105	-42.5	0
+106	-42.5	0
+107	-42.5	0
+108	-42.5	0
+109	-42.5	0
+110	-42.5	0
+111	-42.5	0
+112	-42.5	0
+113	-42.5	0
+114	-42.5	0
+115	-42.5	0
+116	-42.5	0
+117	-42.5	0
+118	-42.5	0
+119	-42.5	0
+120	-42.5	0
+121	-42.5	0
+122	-42.5	0
+123	-42.5	0
+124	-42.5	0
+125	-42.5	0
+126	-42.5	0
+127	-42.5	0
+128	-42.5	0
+129	-42.5	0
+130	-42.5	0
+131	-42.5	0
+132	-42.5	0
+133	-42.5	0
+134	-42.5	0
+135	-42.5	0
+136	-42.5	0
+137	-42.5	0
+138	-42.5	0
+139	-42.5	0
+140	-42.5	0
+141	-42.5	0
+142	-42.5	0
+143	-42.5	0
+144	-42.5	0
+145	-42.5	0
+146	-42.5	0
+147	-42.5	0
+148	-42.5	0
+149	-42.5	0
+150	-42.5	0
+151	-42.5	0
+152	-42.5	0
+153	-42.5	0
+154	-42.5	0
+155	-42.5	0
+156	-42.5	0
+157	-42.5	0
+158	-42.5	0
+159	-42.5	0
+160	-42.5	0
+161	-42.5	0
+162	-42.5	0
+163	-42.5	0
+164	-42.5	0
+165	-42.5	0
+166	-42.5	0
+167	-42.5	0
+168	-42.5	0
+169	-42.5	0
+170	-42.5	0
+171	-42.5	0
+172	-42.5	0
+173	-42.5	0
+174	-42.5	0
+175	-42.5	0
+176	-42.5	0
+177	-42.5	0
+178	-42.5	0
+179	-42.5	0
+180	-42.5	0
+181	-42.5	0
+182	-42.5	0
+183	-42.5	0
+184	-42.5	0
+185	-42.5	0
+186	-42.5	0
+187	-42.5	0
+188	-42.5	0
+189	-42.5	0
+190	-42.5	0
+191	-42.5	0
+192	-42.5	0
+193	-42.5	0
+194	-42.5	0
+195	-42.5	0
+196	-42.5	0
+197	-42.5	0
+198	-42.5	0
+199	-42.5	0
+200	-42.5	0
+201	-42.5	0
+202	-42.5	0
+203	-42.5	0
+204	-42.5	0
+205	-42.5	0
+206	-42.5	0
+207	-42.5	0
+208	-42.5	0
+209	-42.5	0
+210	-42.5	0
+211	-42.5	0
+212	-42.5	0
+213	-42.5	0
+214	-42.5	0
+215	-42.5	0
+216	-42.5	0
+217	-42.5	0
+218	-42.5	0
+219	-42.5	0
+220	-42.5	0
+221	-42.5	0
+222	-42.5	0
+223	-42.5	0
+224	-42.5	0
+225	-42.5	0
+226	-42.5	0
+227	-42.5	0
+228	-42.5	0
+229	-42.5	0
+230	-42.5	0
+231	-42.5	0
+232	-42.5	0
+233	-42.5	0
+234	-42.5	0
+235	-42.5	0
+236	-42.5	0
+237	-42.5	0
+238	-42.5	0
+239	-42.5	0
+240	-42.5	0
+241	-42.5	0
+242	-42.5	0
+243	-42.5	0
+244	-42.5	0
+245	-42.5	0
+246	-42.5	0
+247	-42.5	0
+248	-42.5	0
+249	-42.5	0
+250	-42.5	0
+251	-42.5	0
+252	-42.5	0
+253	-42.5	0
+254	-42.5	0
+255	-42.5	0
+256	-42.5	0
+257	-42.5	0
+258	-42.5	0
+259	-42.5	0
+260	-42.5	0
+261	-42.5	0
+262	-42.5	0
+263	-42.5	0
+264	-42.5	0
+265	-42.5	0
+266	-42.5	0
+267	-42.5	0
+268	-42.5	0
+269	-42.5	0
+270	-42.5	0
+271	-42.5	0
+272	-42.5	0
+273	-42.5	0
+274	-42.5	0
+275	-42.5	0
+276	-42.5	0
+277	-42.5	0
+278	-42.5	0
+279	-42.5	0
+280	-42.5	0
+281	-42.5	0
+282	-42.5	0
+283	-42.5	0
+284	-42.5	0
+285	-42.5	0
+286	-42.5	0
+287	-42.5	0
+288	-42.5	0
+289	-42.5	0
+290	-42.5	0
+291	-42.5	0
+292	-42.5	0
+293	-42.5	0
+294	-42.5	0
+295	-42.5	0
+296	-42.5	0
+297	-42.5	0
+298	-42.5	0
+299	-42.5	0
+300	-42.5	0
+301	-42.5	0
+302	-42.5	0
+303	-42.5	0
+304	-42.5	0
+305	-42.5	0
+306	-42.5	0
+307	-42.5	0
+308	-42.5	0
+309	-42.5	0
+310	-42.5	0
+311	-42.5	0
+312	-42.5	0
+313	-42.5	0
+314	-42.5	0
+315	-42.5	0
+316	-42.5	0
+317	-42.5	0
+318	-42.5	0
+319	-42.5	0
+320	-42.5	0
+321	-42.5	0
+322	-42.5	0
+323	-42.5	0
+324	-42.5	0
+325	-42.5	0
+326	-42.5	0
+327	-42.5	0
+328	-42.5	0
+329	-42.5	0
+330	-42.5	0
+331	-42.5	0
+332	-42.5	0
+333	-42.5	0
+334	-42.5	0
+335	-42.5	0
+336	-42.5	0
+337	-42.5	0
+338	-42.5	0
+339	-42.5	0
+340	-42.5	0
+341	-42.5	0
+342	-42.5	0
+343	-42.5	0
+344	-42.5	0
+345	-42.5	0
+346	-42.5	0
+347	-42.5	0
+348	-42.5	0
+349	-42.5	0
+350	-42.5	0
+351	-42.5	0
+352	-42.5	0
+353	-42.5	0
+354	-42.5	0
+355	-42.5	0
+356	-42.5	0
+357	-42.5	0
+358	-42.5	0
+359	-42.5	0
+360	-42.5	0
+0	-42	0
+1	-42	0
+2	-42	0
+3	-42	0
+4	-42	0
+5	-42	0
+6	-42	0
+7	-42	0
+8	-42	0
+9	-42	0
+10	-42	0
+11	-42	0
+12	-42	0
+13	-42	0
+14	-42	0
+15	-42	0
+16	-42	0
+17	-42	0
+18	-42	0
+19	-42	0
+20	-42	0
+21	-42	0
+22	-42	0
+23	-42	0
+24	-42	0
+25	-42	0
+26	-42	0
+27	-42	0
+28	-42	0
+29	-42	0
+30	-42	0
+31	-42	0
+32	-42	0
+33	-42	0
+34	-42	0
+35	-42	0
+36	-42	0
+37	-42	0
+38	-42	0
+39	-42	0
+40	-42	0
+41	-42	0
+42	-42	0
+43	-42	0
+44	-42	0
+45	-42	0
+46	-42	0
+47	-42	0
+48	-42	0
+49	-42	0
+50	-42	0
+51	-42	0
+52	-42	0
+53	-42	0
+54	-42	0
+55	-42	0
+56	-42	0
+57	-42	0
+58	-42	0
+59	-42	0
+60	-42	0
+61	-42	0
+62	-42	0
+63	-42	0
+64	-42	0
+65	-42	0
+66	-42	0
+67	-42	0
+68	-42	0
+69	-42	0
+70	-42	0
+71	-42	0
+72	-42	0
+73	-42	0
+74	-42	0
+75	-42	0
+76	-42	0
+77	-42	0
+78	-42	0
+79	-42	0
+80	-42	0
+81	-42	0
+82	-42	0
+83	-42	0
+84	-42	0
+85	-42	0
+86	-42	0
+87	-42	0
+88	-42	0
+89	-42	0
+90	-42	0
+91	-42	0
+92	-42	0
+93	-42	0
+94	-42	0
+95	-42	0
+96	-42	0
+97	-42	0
+98	-42	0
+99	-42	0
+100	-42	0
+101	-42	0
+102	-42	0
+103	-42	0
+104	-42	0
+105	-42	0
+106	-42	0
+107	-42	0
+108	-42	0
+109	-42	0
+110	-42	0
+111	-42	0
+112	-42	0
+113	-42	0
+114	-42	0
+115	-42	0
+116	-42	0
+117	-42	0
+118	-42	0
+119	-42	0
+120	-42	0
+121	-42	0
+122	-42	0
+123	-42	0
+124	-42	0
+125	-42	0
+126	-42	0
+127	-42	0
+128	-42	0
+129	-42	0
+130	-42	0
+131	-42	0
+132	-42	0
+133	-42	0
+134	-42	0
+135	-42	0
+136	-42	0
+137	-42	0
+138	-42	0
+139	-42	0
+140	-42	0
+141	-42	0
+142	-42	0
+143	-42	0
+144	-42	0
+145	-42	0
+146	-42	0
+147	-42	0
+148	-42	0
+149	-42	0
+150	-42	0
+151	-42	0
+152	-42	0
+153	-42	0
+154	-42	0
+155	-42	0
+156	-42	0
+157	-42	0
+158	-42	0
+159	-42	0
+160	-42	0
+161	-42	0
+162	-42	0
+163	-42	0
+164	-42	0
+165	-42	0
+166	-42	0
+167	-42	0
+168	-42	0
+169	-42	0
+170	-42	0
+171	-42	0
+172	-42	0
+173	-42	0
+174	-42	0
+175	-42	0
+176	-42	0
+177	-42	0
+178	-42	0
+179	-42	0
+180	-42	0
+181	-42	0
+182	-42	0
+183	-42	0
+184	-42	0
+185	-42	0
+186	-42	0
+187	-42	0
+188	-42	0
+189	-42	0
+190	-42	0
+191	-42	0
+192	-42	0
+193	-42	0
+194	-42	0
+195	-42	0
+196	-42	0
+197	-42	0
+198	-42	0
+199	-42	0
+200	-42	0
+201	-42	0
+202	-42	0
+203	-42	0
+204	-42	0
+205	-42	0
+206	-42	0
+207	-42	0
+208	-42	0
+209	-42	0
+210	-42	0
+211	-42	0
+212	-42	0
+213	-42	0
+214	-42	0
+215	-42	0
+216	-42	0
+217	-42	0
+218	-42	0
+219	-42	0
+220	-42	0
+221	-42	0
+222	-42	0
+223	-42	0
+224	-42	0
+225	-42	0
+226	-42	0
+227	-42	0
+228	-42	0
+229	-42	0
+230	-42	0
+231	-42	0
+232	-42	0
+233	-42	0
+234	-42	0
+235	-42	0
+236	-42	0
+237	-42	0
+238	-42	0
+239	-42	0
+240	-42	0
+241	-42	0
+242	-42	0
+243	-42	0
+244	-42	0
+245	-42	0
+246	-42	0
+247	-42	0
+248	-42	0
+249	-42	0
+250	-42	0
+251	-42	0
+252	-42	0
+253	-42	0
+254	-42	0
+255	-42	0
+256	-42	0
+257	-42	0
+258	-42	0
+259	-42	0
+260	-42	0
+261	-42	0
+262	-42	0
+263	-42	0
+264	-42	0
+265	-42	0
+266	-42	0
+267	-42	0
+268	-42	0
+269	-42	0
+270	-42	0
+271	-42	0
+272	-42	0
+273	-42	0
+274	-42	0
+275	-42	0
+276	-42	0
+277	-42	0
+278	-42	0
+279	-42	0
+280	-42	0
+281	-42	0
+282	-42	0
+283	-42	0
+284	-42	0
+285	-42	0
+286	-42	0
+287	-42	0
+288	-42	0
+289	-42	0
+290	-42	0
+291	-42	0
+292	-42	0
+293	-42	0
+294	-42	0
+295	-42	0
+296	-42	0
+297	-42	0
+298	-42	0
+299	-42	0
+300	-42	0
+301	-42	0
+302	-42	0
+303	-42	0
+304	-42	0
+305	-42	0
+306	-42	0
+307	-42	0
+308	-42	0
+309	-42	0
+310	-42	0
+311	-42	0
+312	-42	0
+313	-42	0
+314	-42	0
+315	-42	0
+316	-42	0
+317	-42	0
+318	-42	0
+319	-42	0
+320	-42	0
+321	-42	0
+322	-42	0
+323	-42	0
+324	-42	0
+325	-42	0
+326	-42	0
+327	-42	0
+328	-42	0
+329	-42	0
+330	-42	0
+331	-42	0
+332	-42	0
+333	-42	0
+334	-42	0
+335	-42	0
+336	-42	0
+337	-42	0
+338	-42	0
+339	-42	0
+340	-42	0
+341	-42	0
+342	-42	0
+343	-42	0
+344	-42	0
+345	-42	0
+346	-42	0
+347	-42	0
+348	-42	0
+349	-42	0
+350	-42	0
+351	-42	0
+352	-42	0
+353	-42	0
+354	-42	0
+355	-42	0
+356	-42	0
+357	-42	0
+358	-42	0
+359	-42	0
+360	-42	0
+0	-41.5	0
+1	-41.5	0
+2	-41.5	0
+3	-41.5	0
+4	-41.5	0
+5	-41.5	0
+6	-41.5	0
+7	-41.5	0
+8	-41.5	0
+9	-41.5	0
+10	-41.5	0
+11	-41.5	0
+12	-41.5	0
+13	-41.5	0
+14	-41.5	0
+15	-41.5	0
+16	-41.5	0
+17	-41.5	0
+18	-41.5	0
+19	-41.5	0
+20	-41.5	0
+21	-41.5	0
+22	-41.5	0
+23	-41.5	0
+24	-41.5	0
+25	-41.5	0
+26	-41.5	0
+27	-41.5	0
+28	-41.5	0
+29	-41.5	0
+30	-41.5	0
+31	-41.5	0
+32	-41.5	0
+33	-41.5	0
+34	-41.5	0
+35	-41.5	0
+36	-41.5	0
+37	-41.5	0
+38	-41.5	0
+39	-41.5	0
+40	-41.5	0
+41	-41.5	0
+42	-41.5	0
+43	-41.5	0
+44	-41.5	0
+45	-41.5	0
+46	-41.5	0
+47	-41.5	0
+48	-41.5	0
+49	-41.5	0
+50	-41.5	0
+51	-41.5	0
+52	-41.5	0
+53	-41.5	0
+54	-41.5	0
+55	-41.5	0
+56	-41.5	0
+57	-41.5	0
+58	-41.5	0
+59	-41.5	0
+60	-41.5	0
+61	-41.5	0
+62	-41.5	0
+63	-41.5	0
+64	-41.5	0
+65	-41.5	0
+66	-41.5	0
+67	-41.5	0
+68	-41.5	0
+69	-41.5	0
+70	-41.5	0
+71	-41.5	0
+72	-41.5	0
+73	-41.5	0
+74	-41.5	0
+75	-41.5	0
+76	-41.5	0
+77	-41.5	0
+78	-41.5	0
+79	-41.5	0
+80	-41.5	0
+81	-41.5	0
+82	-41.5	0
+83	-41.5	0
+84	-41.5	0
+85	-41.5	0
+86	-41.5	0
+87	-41.5	0
+88	-41.5	0
+89	-41.5	0
+90	-41.5	0
+91	-41.5	0
+92	-41.5	0
+93	-41.5	0
+94	-41.5	0
+95	-41.5	0
+96	-41.5	0
+97	-41.5	0
+98	-41.5	0
+99	-41.5	0
+100	-41.5	0
+101	-41.5	0
+102	-41.5	0
+103	-41.5	0
+104	-41.5	0
+105	-41.5	0
+106	-41.5	0
+107	-41.5	0
+108	-41.5	0
+109	-41.5	0
+110	-41.5	0
+111	-41.5	0
+112	-41.5	0
+113	-41.5	0
+114	-41.5	0
+115	-41.5	0
+116	-41.5	0
+117	-41.5	0
+118	-41.5	0
+119	-41.5	0
+120	-41.5	0
+121	-41.5	0
+122	-41.5	0
+123	-41.5	0
+124	-41.5	0
+125	-41.5	0
+126	-41.5	0
+127	-41.5	0
+128	-41.5	0
+129	-41.5	0
+130	-41.5	0
+131	-41.5	0
+132	-41.5	0
+133	-41.5	0
+134	-41.5	0
+135	-41.5	0
+136	-41.5	0
+137	-41.5	0
+138	-41.5	0
+139	-41.5	0
+140	-41.5	0
+141	-41.5	0
+142	-41.5	0
+143	-41.5	0
+144	-41.5	0
+145	-41.5	0
+146	-41.5	0
+147	-41.5	0
+148	-41.5	0
+149	-41.5	0
+150	-41.5	0
+151	-41.5	0
+152	-41.5	0
+153	-41.5	0
+154	-41.5	0
+155	-41.5	0
+156	-41.5	0
+157	-41.5	0
+158	-41.5	0
+159	-41.5	0
+160	-41.5	0
+161	-41.5	0
+162	-41.5	0
+163	-41.5	0
+164	-41.5	0
+165	-41.5	0
+166	-41.5	0
+167	-41.5	0
+168	-41.5	0
+169	-41.5	0
+170	-41.5	0
+171	-41.5	0
+172	-41.5	0
+173	-41.5	0
+174	-41.5	0
+175	-41.5	0
+176	-41.5	0
+177	-41.5	0
+178	-41.5	0
+179	-41.5	0
+180	-41.5	0
+181	-41.5	0
+182	-41.5	0
+183	-41.5	0
+184	-41.5	0
+185	-41.5	0
+186	-41.5	0
+187	-41.5	0
+188	-41.5	0
+189	-41.5	0
+190	-41.5	0
+191	-41.5	0
+192	-41.5	0
+193	-41.5	0
+194	-41.5	0
+195	-41.5	0
+196	-41.5	0
+197	-41.5	0
+198	-41.5	0
+199	-41.5	0
+200	-41.5	0
+201	-41.5	0
+202	-41.5	0
+203	-41.5	0
+204	-41.5	0
+205	-41.5	0
+206	-41.5	0
+207	-41.5	0
+208	-41.5	0
+209	-41.5	0
+210	-41.5	0
+211	-41.5	0
+212	-41.5	0
+213	-41.5	0
+214	-41.5	0
+215	-41.5	0
+216	-41.5	0
+217	-41.5	0
+218	-41.5	0
+219	-41.5	0
+220	-41.5	0
+221	-41.5	0
+222	-41.5	0
+223	-41.5	0
+224	-41.5	0
+225	-41.5	0
+226	-41.5	0
+227	-41.5	0
+228	-41.5	0
+229	-41.5	0
+230	-41.5	0
+231	-41.5	0
+232	-41.5	0
+233	-41.5	0
+234	-41.5	0
+235	-41.5	0
+236	-41.5	0
+237	-41.5	0
+238	-41.5	0
+239	-41.5	0
+240	-41.5	0
+241	-41.5	0
+242	-41.5	0
+243	-41.5	0
+244	-41.5	0
+245	-41.5	0
+246	-41.5	0
+247	-41.5	0
+248	-41.5	0
+249	-41.5	0
+250	-41.5	0
+251	-41.5	0
+252	-41.5	0
+253	-41.5	0
+254	-41.5	0
+255	-41.5	0
+256	-41.5	0
+257	-41.5	0
+258	-41.5	0
+259	-41.5	0
+260	-41.5	0
+261	-41.5	0
+262	-41.5	0
+263	-41.5	0
+264	-41.5	0
+265	-41.5	0
+266	-41.5	0
+267	-41.5	0
+268	-41.5	0
+269	-41.5	0
+270	-41.5	0
+271	-41.5	0
+272	-41.5	0
+273	-41.5	0
+274	-41.5	0
+275	-41.5	0
+276	-41.5	0
+277	-41.5	0
+278	-41.5	0
+279	-41.5	0
+280	-41.5	0
+281	-41.5	0
+282	-41.5	0
+283	-41.5	0
+284	-41.5	0
+285	-41.5	0
+286	-41.5	0
+287	-41.5	0
+288	-41.5	0
+289	-41.5	0
+290	-41.5	0
+291	-41.5	0
+292	-41.5	0
+293	-41.5	0
+294	-41.5	0
+295	-41.5	0
+296	-41.5	0
+297	-41.5	0
+298	-41.5	0
+299	-41.5	0
+300	-41.5	0
+301	-41.5	0
+302	-41.5	0
+303	-41.5	0
+304	-41.5	0
+305	-41.5	0
+306	-41.5	0
+307	-41.5	0
+308	-41.5	0
+309	-41.5	0
+310	-41.5	0
+311	-41.5	0
+312	-41.5	0
+313	-41.5	0
+314	-41.5	0
+315	-41.5	0
+316	-41.5	0
+317	-41.5	0
+318	-41.5	0
+319	-41.5	0
+320	-41.5	0
+321	-41.5	0
+322	-41.5	0
+323	-41.5	0
+324	-41.5	0
+325	-41.5	0
+326	-41.5	0
+327	-41.5	0
+328	-41.5	0
+329	-41.5	0
+330	-41.5	0
+331	-41.5	0
+332	-41.5	0
+333	-41.5	0
+334	-41.5	0
+335	-41.5	0
+336	-41.5	0
+337	-41.5	0
+338	-41.5	0
+339	-41.5	0
+340	-41.5	0
+341	-41.5	0
+342	-41.5	0
+343	-41.5	0
+344	-41.5	0
+345	-41.5	0
+346	-41.5	0
+347	-41.5	0
+348	-41.5	0
+349	-41.5	0
+350	-41.5	0
+351	-41.5	0
+352	-41.5	0
+353	-41.5	0
+354	-41.5	0
+355	-41.5	0
+356	-41.5	0
+357	-41.5	0
+358	-41.5	0
+359	-41.5	0
+360	-41.5	0
+0	-41	0
+1	-41	0
+2	-41	0
+3	-41	0
+4	-41	0
+5	-41	0
+6	-41	0
+7	-41	0
+8	-41	0
+9	-41	0
+10	-41	0
+11	-41	0
+12	-41	0
+13	-41	0
+14	-41	0
+15	-41	0
+16	-41	0
+17	-41	0
+18	-41	0
+19	-41	0
+20	-41	0
+21	-41	0
+22	-41	0
+23	-41	0
+24	-41	0
+25	-41	0
+26	-41	0
+27	-41	0
+28	-41	0
+29	-41	0
+30	-41	0
+31	-41	0
+32	-41	0
+33	-41	0
+34	-41	0
+35	-41	0
+36	-41	0
+37	-41	0
+38	-41	0
+39	-41	0
+40	-41	0
+41	-41	0
+42	-41	0
+43	-41	0
+44	-41	0
+45	-41	0
+46	-41	0
+47	-41	0
+48	-41	0
+49	-41	0
+50	-41	0
+51	-41	0
+52	-41	0
+53	-41	0
+54	-41	0
+55	-41	0
+56	-41	0
+57	-41	0
+58	-41	0
+59	-41	0
+60	-41	0
+61	-41	0
+62	-41	0
+63	-41	0
+64	-41	0
+65	-41	0
+66	-41	0
+67	-41	0
+68	-41	0
+69	-41	0
+70	-41	0
+71	-41	0
+72	-41	0
+73	-41	0
+74	-41	0
+75	-41	0
+76	-41	0
+77	-41	0
+78	-41	0
+79	-41	0
+80	-41	0
+81	-41	0
+82	-41	0
+83	-41	0
+84	-41	0
+85	-41	0
+86	-41	0
+87	-41	0
+88	-41	0
+89	-41	0
+90	-41	0
+91	-41	0
+92	-41	0
+93	-41	0
+94	-41	0
+95	-41	0
+96	-41	0
+97	-41	0
+98	-41	0
+99	-41	0
+100	-41	0
+101	-41	0
+102	-41	0
+103	-41	0
+104	-41	0
+105	-41	0
+106	-41	0
+107	-41	0
+108	-41	0
+109	-41	0
+110	-41	0
+111	-41	0
+112	-41	0
+113	-41	0
+114	-41	0
+115	-41	0
+116	-41	0
+117	-41	0
+118	-41	0
+119	-41	0
+120	-41	0
+121	-41	0
+122	-41	0
+123	-41	0
+124	-41	0
+125	-41	0
+126	-41	0
+127	-41	0
+128	-41	0
+129	-41	0
+130	-41	0
+131	-41	0
+132	-41	0
+133	-41	0
+134	-41	0
+135	-41	0
+136	-41	0
+137	-41	0
+138	-41	0
+139	-41	0
+140	-41	0
+141	-41	0
+142	-41	0
+143	-41	0
+144	-41	0
+145	-41	0
+146	-41	0
+147	-41	0
+148	-41	0
+149	-41	0
+150	-41	0
+151	-41	0
+152	-41	0
+153	-41	0
+154	-41	0
+155	-41	0
+156	-41	0
+157	-41	0
+158	-41	0
+159	-41	0
+160	-41	0
+161	-41	0
+162	-41	0
+163	-41	0
+164	-41	0
+165	-41	0
+166	-41	0
+167	-41	0
+168	-41	0
+169	-41	0
+170	-41	0
+171	-41	0
+172	-41	0
+173	-41	0
+174	-41	0
+175	-41	0
+176	-41	0
+177	-41	0
+178	-41	0
+179	-41	0
+180	-41	0
+181	-41	0
+182	-41	0
+183	-41	0
+184	-41	0
+185	-41	0
+186	-41	0
+187	-41	0
+188	-41	0
+189	-41	0
+190	-41	0
+191	-41	0
+192	-41	0
+193	-41	0
+194	-41	0
+195	-41	0
+196	-41	0
+197	-41	0
+198	-41	0
+199	-41	0
+200	-41	0
+201	-41	0
+202	-41	0
+203	-41	0
+204	-41	0
+205	-41	0
+206	-41	0
+207	-41	0
+208	-41	0
+209	-41	0
+210	-41	0
+211	-41	0
+212	-41	0
+213	-41	0
+214	-41	0
+215	-41	0
+216	-41	0
+217	-41	0
+218	-41	0
+219	-41	0
+220	-41	0
+221	-41	0
+222	-41	0
+223	-41	0
+224	-41	0
+225	-41	0
+226	-41	0
+227	-41	0
+228	-41	0
+229	-41	0
+230	-41	0
+231	-41	0
+232	-41	0
+233	-41	0
+234	-41	0
+235	-41	0
+236	-41	0
+237	-41	0
+238	-41	0
+239	-41	0
+240	-41	0
+241	-41	0
+242	-41	0
+243	-41	0
+244	-41	0
+245	-41	0
+246	-41	0
+247	-41	0
+248	-41	0
+249	-41	0
+250	-41	0
+251	-41	0
+252	-41	0
+253	-41	0
+254	-41	0
+255	-41	0
+256	-41	0
+257	-41	0
+258	-41	0
+259	-41	0
+260	-41	0
+261	-41	0
+262	-41	0
+263	-41	0
+264	-41	0
+265	-41	0
+266	-41	0
+267	-41	0
+268	-41	0
+269	-41	0
+270	-41	0
+271	-41	0
+272	-41	0
+273	-41	0
+274	-41	0
+275	-41	0
+276	-41	0
+277	-41	0
+278	-41	0
+279	-41	0
+280	-41	0
+281	-41	0
+282	-41	0
+283	-41	0
+284	-41	0
+285	-41	0
+286	-41	0
+287	-41	0
+288	-41	0
+289	-41	0
+290	-41	0
+291	-41	0
+292	-41	0
+293	-41	0
+294	-41	0
+295	-41	0
+296	-41	0
+297	-41	0
+298	-41	0
+299	-41	0
+300	-41	0
+301	-41	0
+302	-41	0
+303	-41	0
+304	-41	0
+305	-41	0
+306	-41	0
+307	-41	0
+308	-41	0
+309	-41	0
+310	-41	0
+311	-41	0
+312	-41	0
+313	-41	0
+314	-41	0
+315	-41	0
+316	-41	0
+317	-41	0
+318	-41	0
+319	-41	0
+320	-41	0
+321	-41	0
+322	-41	0
+323	-41	0
+324	-41	0
+325	-41	0
+326	-41	0
+327	-41	0
+328	-41	0
+329	-41	0
+330	-41	0
+331	-41	0
+332	-41	0
+333	-41	0
+334	-41	0
+335	-41	0
+336	-41	0
+337	-41	0
+338	-41	0
+339	-41	0
+340	-41	0
+341	-41	0
+342	-41	0
+343	-41	0
+344	-41	0
+345	-41	0
+346	-41	0
+347	-41	0
+348	-41	0
+349	-41	0
+350	-41	0
+351	-41	0
+352	-41	0
+353	-41	0
+354	-41	0
+355	-41	0
+356	-41	0
+357	-41	0
+358	-41	0
+359	-41	0
+360	-41	0
+0	-40.5	0
+1	-40.5	0
+2	-40.5	0
+3	-40.5	0
+4	-40.5	0
+5	-40.5	0
+6	-40.5	0
+7	-40.5	0
+8	-40.5	0
+9	-40.5	0
+10	-40.5	0
+11	-40.5	0
+12	-40.5	0
+13	-40.5	0
+14	-40.5	0
+15	-40.5	0
+16	-40.5	0
+17	-40.5	0
+18	-40.5	0
+19	-40.5	0
+20	-40.5	0
+21	-40.5	0
+22	-40.5	0
+23	-40.5	0
+24	-40.5	0
+25	-40.5	0
+26	-40.5	0
+27	-40.5	0
+28	-40.5	0
+29	-40.5	0
+30	-40.5	0
+31	-40.5	0
+32	-40.5	0
+33	-40.5	0
+34	-40.5	0
+35	-40.5	0
+36	-40.5	0
+37	-40.5	0
+38	-40.5	0
+39	-40.5	0
+40	-40.5	0
+41	-40.5	0
+42	-40.5	0
+43	-40.5	0
+44	-40.5	0
+45	-40.5	0
+46	-40.5	0
+47	-40.5	0
+48	-40.5	0
+49	-40.5	0
+50	-40.5	0
+51	-40.5	0
+52	-40.5	0
+53	-40.5	0
+54	-40.5	0
+55	-40.5	0
+56	-40.5	0
+57	-40.5	0
+58	-40.5	0
+59	-40.5	0
+60	-40.5	0
+61	-40.5	0
+62	-40.5	0
+63	-40.5	0
+64	-40.5	0
+65	-40.5	0
+66	-40.5	0
+67	-40.5	0
+68	-40.5	0
+69	-40.5	0
+70	-40.5	0
+71	-40.5	0
+72	-40.5	0
+73	-40.5	0
+74	-40.5	0
+75	-40.5	0
+76	-40.5	0
+77	-40.5	0
+78	-40.5	0
+79	-40.5	0
+80	-40.5	0
+81	-40.5	0
+82	-40.5	0
+83	-40.5	0
+84	-40.5	0
+85	-40.5	0
+86	-40.5	0
+87	-40.5	0
+88	-40.5	0
+89	-40.5	0
+90	-40.5	0
+91	-40.5	0
+92	-40.5	0
+93	-40.5	0
+94	-40.5	0
+95	-40.5	0
+96	-40.5	0
+97	-40.5	0
+98	-40.5	0
+99	-40.5	0
+100	-40.5	0
+101	-40.5	0
+102	-40.5	0
+103	-40.5	0
+104	-40.5	0
+105	-40.5	0
+106	-40.5	0
+107	-40.5	0
+108	-40.5	0
+109	-40.5	0
+110	-40.5	0
+111	-40.5	0
+112	-40.5	0
+113	-40.5	0
+114	-40.5	0
+115	-40.5	0
+116	-40.5	0
+117	-40.5	0
+118	-40.5	0
+119	-40.5	0
+120	-40.5	0
+121	-40.5	0
+122	-40.5	0
+123	-40.5	0
+124	-40.5	0
+125	-40.5	0
+126	-40.5	0
+127	-40.5	0
+128	-40.5	0
+129	-40.5	0
+130	-40.5	0
+131	-40.5	0
+132	-40.5	0
+133	-40.5	0
+134	-40.5	0
+135	-40.5	0
+136	-40.5	0
+137	-40.5	0
+138	-40.5	0
+139	-40.5	0
+140	-40.5	0
+141	-40.5	0
+142	-40.5	0
+143	-40.5	0
+144	-40.5	0
+145	-40.5	0
+146	-40.5	0
+147	-40.5	0
+148	-40.5	0
+149	-40.5	0
+150	-40.5	0
+151	-40.5	0
+152	-40.5	0
+153	-40.5	0
+154	-40.5	0
+155	-40.5	0
+156	-40.5	0
+157	-40.5	0
+158	-40.5	0
+159	-40.5	0
+160	-40.5	0
+161	-40.5	0
+162	-40.5	0
+163	-40.5	0
+164	-40.5	0
+165	-40.5	0
+166	-40.5	0
+167	-40.5	0
+168	-40.5	0
+169	-40.5	0
+170	-40.5	0
+171	-40.5	0
+172	-40.5	0
+173	-40.5	0
+174	-40.5	0
+175	-40.5	0
+176	-40.5	0
+177	-40.5	0
+178	-40.5	0
+179	-40.5	0
+180	-40.5	0
+181	-40.5	0
+182	-40.5	0
+183	-40.5	0
+184	-40.5	0
+185	-40.5	0
+186	-40.5	0
+187	-40.5	0
+188	-40.5	0
+189	-40.5	0
+190	-40.5	0
+191	-40.5	0
+192	-40.5	0
+193	-40.5	0
+194	-40.5	0
+195	-40.5	0
+196	-40.5	0
+197	-40.5	0
+198	-40.5	0
+199	-40.5	0
+200	-40.5	0
+201	-40.5	0
+202	-40.5	0
+203	-40.5	0
+204	-40.5	0
+205	-40.5	0
+206	-40.5	0
+207	-40.5	0
+208	-40.5	0
+209	-40.5	0
+210	-40.5	0
+211	-40.5	0
+212	-40.5	0
+213	-40.5	0
+214	-40.5	0
+215	-40.5	0
+216	-40.5	0
+217	-40.5	0
+218	-40.5	0
+219	-40.5	0
+220	-40.5	0
+221	-40.5	0
+222	-40.5	0
+223	-40.5	0
+224	-40.5	0
+225	-40.5	0
+226	-40.5	0
+227	-40.5	0
+228	-40.5	0
+229	-40.5	0
+230	-40.5	0
+231	-40.5	0
+232	-40.5	0
+233	-40.5	0
+234	-40.5	0
+235	-40.5	0
+236	-40.5	0
+237	-40.5	0
+238	-40.5	0
+239	-40.5	0
+240	-40.5	0
+241	-40.5	0
+242	-40.5	0
+243	-40.5	0
+244	-40.5	0
+245	-40.5	0
+246	-40.5	0
+247	-40.5	0
+248	-40.5	0
+249	-40.5	0
+250	-40.5	0
+251	-40.5	0
+252	-40.5	0
+253	-40.5	0
+254	-40.5	0
+255	-40.5	0
+256	-40.5	0
+257	-40.5	0
+258	-40.5	0
+259	-40.5	0
+260	-40.5	0
+261	-40.5	0
+262	-40.5	0
+263	-40.5	0
+264	-40.5	0
+265	-40.5	0
+266	-40.5	0
+267	-40.5	0
+268	-40.5	0
+269	-40.5	0
+270	-40.5	0
+271	-40.5	0
+272	-40.5	0
+273	-40.5	0
+274	-40.5	0
+275	-40.5	0
+276	-40.5	0
+277	-40.5	0
+278	-40.5	0
+279	-40.5	0
+280	-40.5	0
+281	-40.5	0
+282	-40.5	0
+283	-40.5	0
+284	-40.5	0
+285	-40.5	0
+286	-40.5	0
+287	-40.5	0
+288	-40.5	0
+289	-40.5	0
+290	-40.5	0
+291	-40.5	0
+292	-40.5	0
+293	-40.5	0
+294	-40.5	0
+295	-40.5	0
+296	-40.5	0
+297	-40.5	0
+298	-40.5	0
+299	-40.5	0
+300	-40.5	0
+301	-40.5	0
+302	-40.5	0
+303	-40.5	0
+304	-40.5	0
+305	-40.5	0
+306	-40.5	0
+307	-40.5	0
+308	-40.5	0
+309	-40.5	0
+310	-40.5	0
+311	-40.5	0
+312	-40.5	0
+313	-40.5	0
+314	-40.5	0
+315	-40.5	0
+316	-40.5	0
+317	-40.5	0
+318	-40.5	0
+319	-40.5	0
+320	-40.5	0
+321	-40.5	0
+322	-40.5	0
+323	-40.5	0
+324	-40.5	0
+325	-40.5	0
+326	-40.5	0
+327	-40.5	0
+328	-40.5	0
+329	-40.5	0
+330	-40.5	0
+331	-40.5	0
+332	-40.5	0
+333	-40.5	0
+334	-40.5	0
+335	-40.5	0
+336	-40.5	0
+337	-40.5	0
+338	-40.5	0
+339	-40.5	0
+340	-40.5	0
+341	-40.5	0
+342	-40.5	0
+343	-40.5	0
+344	-40.5	0
+345	-40.5	0
+346	-40.5	0
+347	-40.5	0
+348	-40.5	0
+349	-40.5	0
+350	-40.5	0
+351	-40.5	0
+352	-40.5	0
+353	-40.5	0
+354	-40.5	0
+355	-40.5	0
+356	-40.5	0
+357	-40.5	0
+358	-40.5	0
+359	-40.5	0
+360	-40.5	0
+0	-40	0
+1	-40	0
+2	-40	0
+3	-40	0
+4	-40	0
+5	-40	0
+6	-40	0
+7	-40	0
+8	-40	0
+9	-40	0
+10	-40	0
+11	-40	0
+12	-40	0
+13	-40	0
+14	-40	0
+15	-40	0
+16	-40	0
+17	-40	0
+18	-40	0
+19	-40	0
+20	-40	0
+21	-40	0
+22	-40	0
+23	-40	0
+24	-40	0
+25	-40	0
+26	-40	0
+27	-40	0
+28	-40	0
+29	-40	0
+30	-40	0
+31	-40	0
+32	-40	0
+33	-40	0
+34	-40	0
+35	-40	0
+36	-40	0
+37	-40	0
+38	-40	0
+39	-40	0
+40	-40	0
+41	-40	0
+42	-40	0
+43	-40	0
+44	-40	0
+45	-40	0
+46	-40	0
+47	-40	0
+48	-40	0
+49	-40	0
+50	-40	0
+51	-40	0
+52	-40	0
+53	-40	0
+54	-40	0
+55	-40	0
+56	-40	0
+57	-40	0
+58	-40	0
+59	-40	0
+60	-40	0
+61	-40	0
+62	-40	0
+63	-40	0
+64	-40	0
+65	-40	0
+66	-40	0
+67	-40	0
+68	-40	0
+69	-40	0
+70	-40	0
+71	-40	0
+72	-40	0
+73	-40	0
+74	-40	0
+75	-40	0
+76	-40	0
+77	-40	0
+78	-40	0
+79	-40	0
+80	-40	0
+81	-40	0
+82	-40	0
+83	-40	0
+84	-40	0
+85	-40	0
+86	-40	0
+87	-40	0
+88	-40	0
+89	-40	0
+90	-40	0
+91	-40	0
+92	-40	0
+93	-40	0
+94	-40	0
+95	-40	0
+96	-40	0
+97	-40	0
+98	-40	0
+99	-40	0
+100	-40	0
+101	-40	0
+102	-40	0
+103	-40	0
+104	-40	0
+105	-40	0
+106	-40	0
+107	-40	0
+108	-40	0
+109	-40	0
+110	-40	0
+111	-40	0
+112	-40	0
+113	-40	0
+114	-40	0
+115	-40	0
+116	-40	0
+117	-40	0
+118	-40	0
+119	-40	0
+120	-40	0
+121	-40	0
+122	-40	0
+123	-40	0
+124	-40	0
+125	-40	0
+126	-40	0
+127	-40	0
+128	-40	0
+129	-40	0
+130	-40	0
+131	-40	0
+132	-40	0
+133	-40	0
+134	-40	0
+135	-40	0
+136	-40	0
+137	-40	0
+138	-40	0
+139	-40	0
+140	-40	0
+141	-40	0
+142	-40	0
+143	-40	0
+144	-40	0
+145	-40	0
+146	-40	0
+147	-40	0
+148	-40	0
+149	-40	0
+150	-40	0
+151	-40	0
+152	-40	0
+153	-40	0
+154	-40	0
+155	-40	0
+156	-40	0
+157	-40	0
+158	-40	0
+159	-40	0
+160	-40	0
+161	-40	0
+162	-40	0
+163	-40	0
+164	-40	0
+165	-40	0
+166	-40	0
+167	-40	0
+168	-40	0
+169	-40	0
+170	-40	0
+171	-40	0
+172	-40	0
+173	-40	0
+174	-40	0
+175	-40	0
+176	-40	0
+177	-40	0
+178	-40	0
+179	-40	0
+180	-40	0
+181	-40	0
+182	-40	0
+183	-40	0
+184	-40	0
+185	-40	0
+186	-40	0
+187	-40	0
+188	-40	0
+189	-40	0
+190	-40	0
+191	-40	0
+192	-40	0
+193	-40	0
+194	-40	0
+195	-40	0
+196	-40	0
+197	-40	0
+198	-40	0
+199	-40	0
+200	-40	0
+201	-40	0
+202	-40	0
+203	-40	0
+204	-40	0
+205	-40	0
+206	-40	0
+207	-40	0
+208	-40	0
+209	-40	0
+210	-40	0
+211	-40	0
+212	-40	0
+213	-40	0
+214	-40	0
+215	-40	0
+216	-40	0
+217	-40	0
+218	-40	0
+219	-40	0
+220	-40	0
+221	-40	0
+222	-40	0
+223	-40	0
+224	-40	0
+225	-40	0
+226	-40	0
+227	-40	0
+228	-40	0
+229	-40	0
+230	-40	0
+231	-40	0
+232	-40	0
+233	-40	0
+234	-40	0
+235	-40	0
+236	-40	0
+237	-40	0
+238	-40	0
+239	-40	0
+240	-40	0
+241	-40	0
+242	-40	0
+243	-40	0
+244	-40	0
+245	-40	0
+246	-40	0
+247	-40	0
+248	-40	0
+249	-40	0
+250	-40	0
+251	-40	0
+252	-40	0
+253	-40	0
+254	-40	0
+255	-40	0
+256	-40	0
+257	-40	0
+258	-40	0
+259	-40	0
+260	-40	0
+261	-40	0
+262	-40	0
+263	-40	0
+264	-40	0
+265	-40	0
+266	-40	0
+267	-40	0
+268	-40	0
+269	-40	0
+270	-40	0
+271	-40	0
+272	-40	0
+273	-40	0
+274	-40	0
+275	-40	0
+276	-40	0
+277	-40	0
+278	-40	0
+279	-40	0
+280	-40	0
+281	-40	0
+282	-40	0
+283	-40	0
+284	-40	0
+285	-40	0
+286	-40	0
+287	-40	0
+288	-40	0
+289	-40	0
+290	-40	0
+291	-40	0
+292	-40	0
+293	-40	0
+294	-40	0
+295	-40	0
+296	-40	0
+297	-40	0
+298	-40	0
+299	-40	0
+300	-40	0
+301	-40	0
+302	-40	0
+303	-40	0
+304	-40	0
+305	-40	0
+306	-40	0
+307	-40	0
+308	-40	0
+309	-40	0
+310	-40	0
+311	-40	0
+312	-40	0
+313	-40	0
+314	-40	0
+315	-40	0
+316	-40	0
+317	-40	0
+318	-40	0
+319	-40	0
+320	-40	0
+321	-40	0
+322	-40	0
+323	-40	0
+324	-40	0
+325	-40	0
+326	-40	0
+327	-40	0
+328	-40	0
+329	-40	0
+330	-40	0
+331	-40	0
+332	-40	0
+333	-40	0
+334	-40	0
+335	-40	0
+336	-40	0
+337	-40	0
+338	-40	0
+339	-40	0
+340	-40	0
+341	-40	0
+342	-40	0
+343	-40	0
+344	-40	0
+345	-40	0
+346	-40	0
+347	-40	0
+348	-40	0
+349	-40	0
+350	-40	0
+351	-40	0
+352	-40	0
+353	-40	0
+354	-40	0
+355	-40	0
+356	-40	0
+357	-40	0
+358	-40	0
+359	-40	0
+360	-40	0
+0	-39.5	0
+1	-39.5	0
+2	-39.5	0
+3	-39.5	0
+4	-39.5	0
+5	-39.5	0
+6	-39.5	0
+7	-39.5	0
+8	-39.5	0
+9	-39.5	0
+10	-39.5	0
+11	-39.5	0
+12	-39.5	0
+13	-39.5	0
+14	-39.5	0
+15	-39.5	0
+16	-39.5	0
+17	-39.5	0
+18	-39.5	0
+19	-39.5	0
+20	-39.5	0
+21	-39.5	0
+22	-39.5	0
+23	-39.5	0
+24	-39.5	0
+25	-39.5	0
+26	-39.5	0
+27	-39.5	0
+28	-39.5	0
+29	-39.5	0
+30	-39.5	0
+31	-39.5	0
+32	-39.5	0
+33	-39.5	0
+34	-39.5	0
+35	-39.5	0
+36	-39.5	0
+37	-39.5	0
+38	-39.5	0
+39	-39.5	0
+40	-39.5	0
+41	-39.5	0
+42	-39.5	0
+43	-39.5	0
+44	-39.5	0
+45	-39.5	0
+46	-39.5	0
+47	-39.5	0
+48	-39.5	0
+49	-39.5	0
+50	-39.5	0
+51	-39.5	0
+52	-39.5	0
+53	-39.5	0
+54	-39.5	0
+55	-39.5	0
+56	-39.5	0
+57	-39.5	0
+58	-39.5	0
+59	-39.5	0
+60	-39.5	0
+61	-39.5	0
+62	-39.5	0
+63	-39.5	0
+64	-39.5	0
+65	-39.5	0
+66	-39.5	0
+67	-39.5	0
+68	-39.5	0
+69	-39.5	0
+70	-39.5	0
+71	-39.5	0
+72	-39.5	0
+73	-39.5	0
+74	-39.5	0
+75	-39.5	0
+76	-39.5	0
+77	-39.5	0
+78	-39.5	0
+79	-39.5	0
+80	-39.5	0
+81	-39.5	0
+82	-39.5	0
+83	-39.5	0
+84	-39.5	0
+85	-39.5	0
+86	-39.5	0
+87	-39.5	0
+88	-39.5	0
+89	-39.5	0
+90	-39.5	0
+91	-39.5	0
+92	-39.5	0
+93	-39.5	0
+94	-39.5	0
+95	-39.5	0
+96	-39.5	0
+97	-39.5	0
+98	-39.5	0
+99	-39.5	0
+100	-39.5	0
+101	-39.5	0
+102	-39.5	0
+103	-39.5	0
+104	-39.5	0
+105	-39.5	0
+106	-39.5	0
+107	-39.5	0
+108	-39.5	0
+109	-39.5	0
+110	-39.5	0
+111	-39.5	0
+112	-39.5	0
+113	-39.5	0
+114	-39.5	0
+115	-39.5	0
+116	-39.5	0
+117	-39.5	0
+118	-39.5	0
+119	-39.5	0
+120	-39.5	0
+121	-39.5	0
+122	-39.5	0
+123	-39.5	0
+124	-39.5	0
+125	-39.5	0
+126	-39.5	0
+127	-39.5	0
+128	-39.5	0
+129	-39.5	0
+130	-39.5	0
+131	-39.5	0
+132	-39.5	0
+133	-39.5	0
+134	-39.5	0
+135	-39.5	0
+136	-39.5	0
+137	-39.5	0
+138	-39.5	0
+139	-39.5	0
+140	-39.5	0
+141	-39.5	0
+142	-39.5	0
+143	-39.5	0
+144	-39.5	0
+145	-39.5	0
+146	-39.5	0
+147	-39.5	0
+148	-39.5	0
+149	-39.5	0
+150	-39.5	0
+151	-39.5	0
+152	-39.5	0
+153	-39.5	0
+154	-39.5	0
+155	-39.5	0
+156	-39.5	0
+157	-39.5	0
+158	-39.5	0
+159	-39.5	0
+160	-39.5	0
+161	-39.5	0
+162	-39.5	0
+163	-39.5	0
+164	-39.5	0
+165	-39.5	0
+166	-39.5	0
+167	-39.5	0
+168	-39.5	0
+169	-39.5	0
+170	-39.5	0
+171	-39.5	0
+172	-39.5	0
+173	-39.5	0
+174	-39.5	0
+175	-39.5	0
+176	-39.5	0
+177	-39.5	0
+178	-39.5	0
+179	-39.5	0
+180	-39.5	0
+181	-39.5	0
+182	-39.5	0
+183	-39.5	0
+184	-39.5	0
+185	-39.5	0
+186	-39.5	0
+187	-39.5	0
+188	-39.5	0
+189	-39.5	0
+190	-39.5	0
+191	-39.5	0
+192	-39.5	0
+193	-39.5	0
+194	-39.5	0
+195	-39.5	0
+196	-39.5	0
+197	-39.5	0
+198	-39.5	0
+199	-39.5	0
+200	-39.5	0
+201	-39.5	0
+202	-39.5	0
+203	-39.5	0
+204	-39.5	0
+205	-39.5	0
+206	-39.5	0
+207	-39.5	0
+208	-39.5	0
+209	-39.5	0
+210	-39.5	0
+211	-39.5	0
+212	-39.5	0
+213	-39.5	0
+214	-39.5	0
+215	-39.5	0
+216	-39.5	0
+217	-39.5	0
+218	-39.5	0
+219	-39.5	0
+220	-39.5	0
+221	-39.5	0
+222	-39.5	0
+223	-39.5	0
+224	-39.5	0
+225	-39.5	0
+226	-39.5	0
+227	-39.5	0
+228	-39.5	0
+229	-39.5	0
+230	-39.5	0
+231	-39.5	0
+232	-39.5	0
+233	-39.5	0
+234	-39.5	0
+235	-39.5	0
+236	-39.5	0
+237	-39.5	0
+238	-39.5	0
+239	-39.5	0
+240	-39.5	0
+241	-39.5	0
+242	-39.5	0
+243	-39.5	0
+244	-39.5	0
+245	-39.5	0
+246	-39.5	0
+247	-39.5	0
+248	-39.5	0
+249	-39.5	0
+250	-39.5	0
+251	-39.5	0
+252	-39.5	0
+253	-39.5	0
+254	-39.5	0
+255	-39.5	0
+256	-39.5	0
+257	-39.5	0
+258	-39.5	0
+259	-39.5	0
+260	-39.5	0
+261	-39.5	0
+262	-39.5	0
+263	-39.5	0
+264	-39.5	0
+265	-39.5	0
+266	-39.5	0
+267	-39.5	0
+268	-39.5	0
+269	-39.5	0
+270	-39.5	0
+271	-39.5	0
+272	-39.5	0
+273	-39.5	0
+274	-39.5	0
+275	-39.5	0
+276	-39.5	0
+277	-39.5	0
+278	-39.5	0
+279	-39.5	0
+280	-39.5	0
+281	-39.5	0
+282	-39.5	0
+283	-39.5	0
+284	-39.5	0
+285	-39.5	0
+286	-39.5	0
+287	-39.5	0
+288	-39.5	0
+289	-39.5	0
+290	-39.5	0
+291	-39.5	0
+292	-39.5	0
+293	-39.5	0
+294	-39.5	0
+295	-39.5	0
+296	-39.5	0
+297	-39.5	0
+298	-39.5	0
+299	-39.5	0
+300	-39.5	0
+301	-39.5	0
+302	-39.5	0
+303	-39.5	0
+304	-39.5	0
+305	-39.5	0
+306	-39.5	0
+307	-39.5	0
+308	-39.5	0
+309	-39.5	0
+310	-39.5	0
+311	-39.5	0
+312	-39.5	0
+313	-39.5	0
+314	-39.5	0
+315	-39.5	0
+316	-39.5	0
+317	-39.5	0
+318	-39.5	0
+319	-39.5	0
+320	-39.5	0
+321	-39.5	0
+322	-39.5	0
+323	-39.5	0
+324	-39.5	0
+325	-39.5	0
+326	-39.5	0
+327	-39.5	0
+328	-39.5	0
+329	-39.5	0
+330	-39.5	0
+331	-39.5	0
+332	-39.5	0
+333	-39.5	0
+334	-39.5	0
+335	-39.5	0
+336	-39.5	0
+337	-39.5	0
+338	-39.5	0
+339	-39.5	0
+340	-39.5	0
+341	-39.5	0
+342	-39.5	0
+343	-39.5	0
+344	-39.5	0
+345	-39.5	0
+346	-39.5	0
+347	-39.5	0
+348	-39.5	0
+349	-39.5	0
+350	-39.5	0
+351	-39.5	0
+352	-39.5	0
+353	-39.5	0
+354	-39.5	0
+355	-39.5	0
+356	-39.5	0
+357	-39.5	0
+358	-39.5	0
+359	-39.5	0
+360	-39.5	0
+0	-39	0
+1	-39	0
+2	-39	0
+3	-39	0
+4	-39	0
+5	-39	0
+6	-39	0
+7	-39	0
+8	-39	0
+9	-39	0
+10	-39	0
+11	-39	0
+12	-39	0
+13	-39	0
+14	-39	0
+15	-39	0
+16	-39	0
+17	-39	0
+18	-39	0
+19	-39	0
+20	-39	0
+21	-39	0
+22	-39	0
+23	-39	0
+24	-39	0
+25	-39	0
+26	-39	0
+27	-39	0
+28	-39	0
+29	-39	0
+30	-39	0
+31	-39	0
+32	-39	0
+33	-39	0
+34	-39	0
+35	-39	0
+36	-39	0
+37	-39	0
+38	-39	0
+39	-39	0
+40	-39	0
+41	-39	0
+42	-39	0
+43	-39	0
+44	-39	0
+45	-39	0
+46	-39	0
+47	-39	0
+48	-39	0
+49	-39	0
+50	-39	0
+51	-39	0
+52	-39	0
+53	-39	0
+54	-39	0
+55	-39	0
+56	-39	0
+57	-39	0
+58	-39	0
+59	-39	0
+60	-39	0
+61	-39	0
+62	-39	0
+63	-39	0
+64	-39	0
+65	-39	0
+66	-39	0
+67	-39	0
+68	-39	0
+69	-39	0
+70	-39	0
+71	-39	0
+72	-39	0
+73	-39	0
+74	-39	0
+75	-39	0
+76	-39	0
+77	-39	0
+78	-39	0
+79	-39	0
+80	-39	0
+81	-39	0
+82	-39	0
+83	-39	0
+84	-39	0
+85	-39	0
+86	-39	0
+87	-39	0
+88	-39	0
+89	-39	0
+90	-39	0
+91	-39	0
+92	-39	0
+93	-39	0
+94	-39	0
+95	-39	0
+96	-39	0
+97	-39	0
+98	-39	0
+99	-39	0
+100	-39	0
+101	-39	0
+102	-39	0
+103	-39	0
+104	-39	0
+105	-39	0
+106	-39	0
+107	-39	0
+108	-39	0
+109	-39	0
+110	-39	0
+111	-39	0
+112	-39	0
+113	-39	0
+114	-39	0
+115	-39	0
+116	-39	0
+117	-39	0
+118	-39	0
+119	-39	0
+120	-39	0
+121	-39	0
+122	-39	0
+123	-39	0
+124	-39	0
+125	-39	0
+126	-39	0
+127	-39	0
+128	-39	0
+129	-39	0
+130	-39	0
+131	-39	0
+132	-39	0
+133	-39	0
+134	-39	0
+135	-39	0
+136	-39	0
+137	-39	0
+138	-39	0
+139	-39	0
+140	-39	0
+141	-39	0
+142	-39	0
+143	-39	0
+144	-39	0
+145	-39	0
+146	-39	0
+147	-39	0
+148	-39	0
+149	-39	0
+150	-39	0
+151	-39	0
+152	-39	0
+153	-39	0
+154	-39	0
+155	-39	0
+156	-39	0
+157	-39	0
+158	-39	0
+159	-39	0
+160	-39	0
+161	-39	0
+162	-39	0
+163	-39	0
+164	-39	0
+165	-39	0
+166	-39	0
+167	-39	0
+168	-39	0
+169	-39	0
+170	-39	0
+171	-39	0
+172	-39	0
+173	-39	0
+174	-39	0
+175	-39	0
+176	-39	0
+177	-39	0
+178	-39	0
+179	-39	0
+180	-39	0
+181	-39	0
+182	-39	0
+183	-39	0
+184	-39	0
+185	-39	0
+186	-39	0
+187	-39	0
+188	-39	0
+189	-39	0
+190	-39	0
+191	-39	0
+192	-39	0
+193	-39	0
+194	-39	0
+195	-39	0
+196	-39	0
+197	-39	0
+198	-39	0
+199	-39	0
+200	-39	0
+201	-39	0
+202	-39	0
+203	-39	0
+204	-39	0
+205	-39	0
+206	-39	0
+207	-39	0
+208	-39	0
+209	-39	0
+210	-39	0
+211	-39	0
+212	-39	0
+213	-39	0
+214	-39	0
+215	-39	0
+216	-39	0
+217	-39	0
+218	-39	0
+219	-39	0
+220	-39	0
+221	-39	0
+222	-39	0
+223	-39	0
+224	-39	0
+225	-39	0
+226	-39	0
+227	-39	0
+228	-39	0
+229	-39	0
+230	-39	0
+231	-39	0
+232	-39	0
+233	-39	0
+234	-39	0
+235	-39	0
+236	-39	0
+237	-39	0
+238	-39	0
+239	-39	0
+240	-39	0
+241	-39	0
+242	-39	0
+243	-39	0
+244	-39	0
+245	-39	0
+246	-39	0
+247	-39	0
+248	-39	0
+249	-39	0
+250	-39	0
+251	-39	0
+252	-39	0
+253	-39	0
+254	-39	0
+255	-39	0
+256	-39	0
+257	-39	0
+258	-39	0
+259	-39	0
+260	-39	0
+261	-39	0
+262	-39	0
+263	-39	0
+264	-39	0
+265	-39	0
+266	-39	0
+267	-39	0
+268	-39	0
+269	-39	0
+270	-39	0
+271	-39	0
+272	-39	0
+273	-39	0
+274	-39	0
+275	-39	0
+276	-39	0
+277	-39	0
+278	-39	0
+279	-39	0
+280	-39	0
+281	-39	0
+282	-39	0
+283	-39	0
+284	-39	0
+285	-39	0
+286	-39	0
+287	-39	0
+288	-39	0
+289	-39	0
+290	-39	0
+291	-39	0
+292	-39	0
+293	-39	0
+294	-39	0
+295	-39	0
+296	-39	0
+297	-39	0
+298	-39	0
+299	-39	0
+300	-39	0
+301	-39	0
+302	-39	0
+303	-39	0
+304	-39	0
+305	-39	0
+306	-39	0
+307	-39	0
+308	-39	0
+309	-39	0
+310	-39	0
+311	-39	0
+312	-39	0
+313	-39	0
+314	-39	0
+315	-39	0
+316	-39	0
+317	-39	0
+318	-39	0
+319	-39	0
+320	-39	0
+321	-39	0
+322	-39	0
+323	-39	0
+324	-39	0
+325	-39	0
+326	-39	0
+327	-39	0
+328	-39	0
+329	-39	0
+330	-39	0
+331	-39	0
+332	-39	0
+333	-39	0
+334	-39	0
+335	-39	0
+336	-39	0
+337	-39	0
+338	-39	0
+339	-39	0
+340	-39	0
+341	-39	0
+342	-39	0
+343	-39	0
+344	-39	0
+345	-39	0
+346	-39	0
+347	-39	0
+348	-39	0
+349	-39	0
+350	-39	0
+351	-39	0
+352	-39	0
+353	-39	0
+354	-39	0
+355	-39	0
+356	-39	0
+357	-39	0
+358	-39	0
+359	-39	0
+360	-39	0
+0	-38.5	0
+1	-38.5	0
+2	-38.5	0
+3	-38.5	0
+4	-38.5	0
+5	-38.5	0
+6	-38.5	0
+7	-38.5	0
+8	-38.5	0
+9	-38.5	0
+10	-38.5	0
+11	-38.5	0
+12	-38.5	0
+13	-38.5	0
+14	-38.5	0
+15	-38.5	0
+16	-38.5	0
+17	-38.5	0
+18	-38.5	0
+19	-38.5	0
+20	-38.5	0
+21	-38.5	0
+22	-38.5	0
+23	-38.5	0
+24	-38.5	0
+25	-38.5	0
+26	-38.5	0
+27	-38.5	0
+28	-38.5	0
+29	-38.5	0
+30	-38.5	0
+31	-38.5	0
+32	-38.5	0
+33	-38.5	0
+34	-38.5	0
+35	-38.5	0
+36	-38.5	0
+37	-38.5	0
+38	-38.5	0
+39	-38.5	0
+40	-38.5	0
+41	-38.5	0
+42	-38.5	0
+43	-38.5	0
+44	-38.5	0
+45	-38.5	0
+46	-38.5	0
+47	-38.5	0
+48	-38.5	0
+49	-38.5	0
+50	-38.5	0
+51	-38.5	0
+52	-38.5	0
+53	-38.5	0
+54	-38.5	0
+55	-38.5	0
+56	-38.5	0
+57	-38.5	0
+58	-38.5	0
+59	-38.5	0
+60	-38.5	0
+61	-38.5	0
+62	-38.5	0
+63	-38.5	0
+64	-38.5	0
+65	-38.5	0
+66	-38.5	0
+67	-38.5	0
+68	-38.5	0
+69	-38.5	0
+70	-38.5	0
+71	-38.5	0
+72	-38.5	0
+73	-38.5	0
+74	-38.5	0
+75	-38.5	0
+76	-38.5	0
+77	-38.5	0
+78	-38.5	0
+79	-38.5	0
+80	-38.5	0
+81	-38.5	0
+82	-38.5	0
+83	-38.5	0
+84	-38.5	0
+85	-38.5	0
+86	-38.5	0
+87	-38.5	0
+88	-38.5	0
+89	-38.5	0
+90	-38.5	0
+91	-38.5	0
+92	-38.5	0
+93	-38.5	0
+94	-38.5	0
+95	-38.5	0
+96	-38.5	0
+97	-38.5	0
+98	-38.5	0
+99	-38.5	0
+100	-38.5	0
+101	-38.5	0
+102	-38.5	0
+103	-38.5	0
+104	-38.5	0
+105	-38.5	0
+106	-38.5	0
+107	-38.5	0
+108	-38.5	0
+109	-38.5	0
+110	-38.5	0
+111	-38.5	0
+112	-38.5	0
+113	-38.5	0
+114	-38.5	0
+115	-38.5	0
+116	-38.5	0
+117	-38.5	0
+118	-38.5	0
+119	-38.5	0
+120	-38.5	0
+121	-38.5	0
+122	-38.5	0
+123	-38.5	0
+124	-38.5	0
+125	-38.5	0
+126	-38.5	0
+127	-38.5	0
+128	-38.5	0
+129	-38.5	0
+130	-38.5	0
+131	-38.5	0
+132	-38.5	0
+133	-38.5	0
+134	-38.5	0
+135	-38.5	0
+136	-38.5	0
+137	-38.5	0
+138	-38.5	0
+139	-38.5	0
+140	-38.5	0
+141	-38.5	0
+142	-38.5	0
+143	-38.5	0
+144	-38.5	0
+145	-38.5	0
+146	-38.5	0
+147	-38.5	0
+148	-38.5	0
+149	-38.5	0
+150	-38.5	0
+151	-38.5	0
+152	-38.5	0
+153	-38.5	0
+154	-38.5	0
+155	-38.5	0
+156	-38.5	0
+157	-38.5	0
+158	-38.5	0
+159	-38.5	0
+160	-38.5	0
+161	-38.5	0
+162	-38.5	0
+163	-38.5	0
+164	-38.5	0
+165	-38.5	0
+166	-38.5	0
+167	-38.5	0
+168	-38.5	0
+169	-38.5	0
+170	-38.5	0
+171	-38.5	0
+172	-38.5	0
+173	-38.5	0
+174	-38.5	0
+175	-38.5	0
+176	-38.5	0
+177	-38.5	0
+178	-38.5	0
+179	-38.5	0
+180	-38.5	0
+181	-38.5	0
+182	-38.5	0
+183	-38.5	0
+184	-38.5	0
+185	-38.5	0
+186	-38.5	0
+187	-38.5	0
+188	-38.5	0
+189	-38.5	0
+190	-38.5	0
+191	-38.5	0
+192	-38.5	0
+193	-38.5	0
+194	-38.5	0
+195	-38.5	0
+196	-38.5	0
+197	-38.5	0
+198	-38.5	0
+199	-38.5	0
+200	-38.5	0
+201	-38.5	0
+202	-38.5	0
+203	-38.5	0
+204	-38.5	0
+205	-38.5	0
+206	-38.5	0
+207	-38.5	0
+208	-38.5	0
+209	-38.5	0
+210	-38.5	0
+211	-38.5	0
+212	-38.5	0
+213	-38.5	0
+214	-38.5	0
+215	-38.5	0
+216	-38.5	0
+217	-38.5	0
+218	-38.5	0
+219	-38.5	0
+220	-38.5	0
+221	-38.5	0
+222	-38.5	0
+223	-38.5	0
+224	-38.5	0
+225	-38.5	0
+226	-38.5	0
+227	-38.5	0
+228	-38.5	0
+229	-38.5	0
+230	-38.5	0
+231	-38.5	0
+232	-38.5	0
+233	-38.5	0
+234	-38.5	0
+235	-38.5	0
+236	-38.5	0
+237	-38.5	0
+238	-38.5	0
+239	-38.5	0
+240	-38.5	0
+241	-38.5	0
+242	-38.5	0
+243	-38.5	0
+244	-38.5	0
+245	-38.5	0
+246	-38.5	0
+247	-38.5	0
+248	-38.5	0
+249	-38.5	0
+250	-38.5	0
+251	-38.5	0
+252	-38.5	0
+253	-38.5	0
+254	-38.5	0
+255	-38.5	0
+256	-38.5	0
+257	-38.5	0
+258	-38.5	0
+259	-38.5	0
+260	-38.5	0
+261	-38.5	0
+262	-38.5	0
+263	-38.5	0
+264	-38.5	0
+265	-38.5	0
+266	-38.5	0
+267	-38.5	0
+268	-38.5	0
+269	-38.5	0
+270	-38.5	0
+271	-38.5	0
+272	-38.5	0
+273	-38.5	0
+274	-38.5	0
+275	-38.5	0
+276	-38.5	0
+277	-38.5	0
+278	-38.5	0
+279	-38.5	0
+280	-38.5	0
+281	-38.5	0
+282	-38.5	0
+283	-38.5	0
+284	-38.5	0
+285	-38.5	0
+286	-38.5	0
+287	-38.5	0
+288	-38.5	0
+289	-38.5	0
+290	-38.5	0
+291	-38.5	0
+292	-38.5	0
+293	-38.5	0
+294	-38.5	0
+295	-38.5	0
+296	-38.5	0
+297	-38.5	0
+298	-38.5	0
+299	-38.5	0
+300	-38.5	0
+301	-38.5	0
+302	-38.5	0
+303	-38.5	0
+304	-38.5	0
+305	-38.5	0
+306	-38.5	0
+307	-38.5	0
+308	-38.5	0
+309	-38.5	0
+310	-38.5	0
+311	-38.5	0
+312	-38.5	0
+313	-38.5	0
+314	-38.5	0
+315	-38.5	0
+316	-38.5	0
+317	-38.5	0
+318	-38.5	0
+319	-38.5	0
+320	-38.5	0
+321	-38.5	0
+322	-38.5	0
+323	-38.5	0
+324	-38.5	0
+325	-38.5	0
+326	-38.5	0
+327	-38.5	0
+328	-38.5	0
+329	-38.5	0
+330	-38.5	0
+331	-38.5	0
+332	-38.5	0
+333	-38.5	0
+334	-38.5	0
+335	-38.5	0
+336	-38.5	0
+337	-38.5	0
+338	-38.5	0
+339	-38.5	0
+340	-38.5	0
+341	-38.5	0
+342	-38.5	0
+343	-38.5	0
+344	-38.5	0
+345	-38.5	0
+346	-38.5	0
+347	-38.5	0
+348	-38.5	0
+349	-38.5	0
+350	-38.5	0
+351	-38.5	0
+352	-38.5	0
+353	-38.5	0
+354	-38.5	0
+355	-38.5	0
+356	-38.5	0
+357	-38.5	0
+358	-38.5	0
+359	-38.5	0
+360	-38.5	0
+0	-38	0
+1	-38	0
+2	-38	0
+3	-38	0
+4	-38	0
+5	-38	0
+6	-38	0
+7	-38	0
+8	-38	0
+9	-38	0
+10	-38	0
+11	-38	0
+12	-38	0
+13	-38	0
+14	-38	0
+15	-38	0
+16	-38	0
+17	-38	0
+18	-38	0
+19	-38	0
+20	-38	0
+21	-38	0
+22	-38	0
+23	-38	0
+24	-38	0
+25	-38	0
+26	-38	0
+27	-38	0
+28	-38	0
+29	-38	0
+30	-38	0
+31	-38	0
+32	-38	0
+33	-38	0
+34	-38	0
+35	-38	0
+36	-38	0
+37	-38	0
+38	-38	0
+39	-38	0
+40	-38	0
+41	-38	0
+42	-38	0
+43	-38	0
+44	-38	0
+45	-38	0
+46	-38	0
+47	-38	0
+48	-38	0
+49	-38	0
+50	-38	0
+51	-38	0
+52	-38	0
+53	-38	0
+54	-38	0
+55	-38	0
+56	-38	0
+57	-38	0
+58	-38	0
+59	-38	0
+60	-38	0
+61	-38	0
+62	-38	0
+63	-38	0
+64	-38	0
+65	-38	0
+66	-38	0
+67	-38	0
+68	-38	0
+69	-38	0
+70	-38	0
+71	-38	0
+72	-38	0
+73	-38	0
+74	-38	0
+75	-38	0
+76	-38	0
+77	-38	0
+78	-38	0
+79	-38	0
+80	-38	0
+81	-38	0
+82	-38	0
+83	-38	0
+84	-38	0
+85	-38	0
+86	-38	0
+87	-38	0
+88	-38	0
+89	-38	0
+90	-38	0
+91	-38	0
+92	-38	0
+93	-38	0
+94	-38	0
+95	-38	0
+96	-38	0
+97	-38	0
+98	-38	0
+99	-38	0
+100	-38	0
+101	-38	0
+102	-38	0
+103	-38	0
+104	-38	0
+105	-38	0
+106	-38	0
+107	-38	0
+108	-38	0
+109	-38	0
+110	-38	0
+111	-38	0
+112	-38	0
+113	-38	0
+114	-38	0
+115	-38	0
+116	-38	0
+117	-38	0
+118	-38	0
+119	-38	0
+120	-38	0
+121	-38	0
+122	-38	0
+123	-38	0
+124	-38	0
+125	-38	0
+126	-38	0
+127	-38	0
+128	-38	0
+129	-38	0
+130	-38	0
+131	-38	0
+132	-38	0
+133	-38	0
+134	-38	0
+135	-38	0
+136	-38	0
+137	-38	0
+138	-38	0
+139	-38	0
+140	-38	0
+141	-38	0
+142	-38	0
+143	-38	0
+144	-38	0
+145	-38	0
+146	-38	0
+147	-38	0
+148	-38	0
+149	-38	0
+150	-38	0
+151	-38	0
+152	-38	0
+153	-38	0
+154	-38	0
+155	-38	0
+156	-38	0
+157	-38	0
+158	-38	0
+159	-38	0
+160	-38	0
+161	-38	0
+162	-38	0
+163	-38	0
+164	-38	0
+165	-38	0
+166	-38	0
+167	-38	0
+168	-38	0
+169	-38	0
+170	-38	0
+171	-38	0
+172	-38	0
+173	-38	0
+174	-38	0
+175	-38	0
+176	-38	0
+177	-38	0
+178	-38	0
+179	-38	0
+180	-38	0
+181	-38	0
+182	-38	0
+183	-38	0
+184	-38	0
+185	-38	0
+186	-38	0
+187	-38	0
+188	-38	0
+189	-38	0
+190	-38	0
+191	-38	0
+192	-38	0
+193	-38	0
+194	-38	0
+195	-38	0
+196	-38	0
+197	-38	0
+198	-38	0
+199	-38	0
+200	-38	0
+201	-38	0
+202	-38	0
+203	-38	0
+204	-38	0
+205	-38	0
+206	-38	0
+207	-38	0
+208	-38	0
+209	-38	0
+210	-38	0
+211	-38	0
+212	-38	0
+213	-38	0
+214	-38	0
+215	-38	0
+216	-38	0
+217	-38	0
+218	-38	0
+219	-38	0
+220	-38	0
+221	-38	0
+222	-38	0
+223	-38	0
+224	-38	0
+225	-38	0
+226	-38	0
+227	-38	0
+228	-38	0
+229	-38	0
+230	-38	0
+231	-38	0
+232	-38	0
+233	-38	0
+234	-38	0
+235	-38	0
+236	-38	0
+237	-38	0
+238	-38	0
+239	-38	0
+240	-38	0
+241	-38	0
+242	-38	0
+243	-38	0
+244	-38	0
+245	-38	0
+246	-38	0
+247	-38	0
+248	-38	0
+249	-38	0
+250	-38	0
+251	-38	0
+252	-38	0
+253	-38	0
+254	-38	0
+255	-38	0
+256	-38	0
+257	-38	0
+258	-38	0
+259	-38	0
+260	-38	0
+261	-38	0
+262	-38	0
+263	-38	0
+264	-38	0
+265	-38	0
+266	-38	0
+267	-38	0
+268	-38	0
+269	-38	0
+270	-38	0
+271	-38	0
+272	-38	0
+273	-38	0
+274	-38	0
+275	-38	0
+276	-38	0
+277	-38	0
+278	-38	0
+279	-38	0
+280	-38	0
+281	-38	0
+282	-38	0
+283	-38	0
+284	-38	0
+285	-38	0
+286	-38	0
+287	-38	0
+288	-38	0
+289	-38	0
+290	-38	0
+291	-38	0
+292	-38	0
+293	-38	0
+294	-38	0
+295	-38	0
+296	-38	0
+297	-38	0
+298	-38	0
+299	-38	0
+300	-38	0
+301	-38	0
+302	-38	0
+303	-38	0
+304	-38	0
+305	-38	0
+306	-38	0
+307	-38	0
+308	-38	0
+309	-38	0
+310	-38	0
+311	-38	0
+312	-38	0
+313	-38	0
+314	-38	0
+315	-38	0
+316	-38	0
+317	-38	0
+318	-38	0
+319	-38	0
+320	-38	0
+321	-38	0
+322	-38	0
+323	-38	0
+324	-38	0
+325	-38	0
+326	-38	0
+327	-38	0
+328	-38	0
+329	-38	0
+330	-38	0
+331	-38	0
+332	-38	0
+333	-38	0
+334	-38	0
+335	-38	0
+336	-38	0
+337	-38	0
+338	-38	0
+339	-38	0
+340	-38	0
+341	-38	0
+342	-38	0
+343	-38	0
+344	-38	0
+345	-38	0
+346	-38	0
+347	-38	0
+348	-38	0
+349	-38	0
+350	-38	0
+351	-38	0
+352	-38	0
+353	-38	0
+354	-38	0
+355	-38	0
+356	-38	0
+357	-38	0
+358	-38	0
+359	-38	0
+360	-38	0
+0	-37.5	0
+1	-37.5	0
+2	-37.5	0
+3	-37.5	0
+4	-37.5	0
+5	-37.5	0
+6	-37.5	0
+7	-37.5	0
+8	-37.5	0
+9	-37.5	0
+10	-37.5	0
+11	-37.5	0
+12	-37.5	0
+13	-37.5	0
+14	-37.5	0
+15	-37.5	0
+16	-37.5	0
+17	-37.5	0
+18	-37.5	0
+19	-37.5	0
+20	-37.5	0
+21	-37.5	0
+22	-37.5	0
+23	-37.5	0
+24	-37.5	0
+25	-37.5	0
+26	-37.5	0
+27	-37.5	0
+28	-37.5	0
+29	-37.5	0
+30	-37.5	0
+31	-37.5	0
+32	-37.5	0
+33	-37.5	0
+34	-37.5	0
+35	-37.5	0
+36	-37.5	0
+37	-37.5	0
+38	-37.5	0
+39	-37.5	0
+40	-37.5	0
+41	-37.5	0
+42	-37.5	0
+43	-37.5	0
+44	-37.5	0
+45	-37.5	0
+46	-37.5	0
+47	-37.5	0
+48	-37.5	0
+49	-37.5	0
+50	-37.5	0
+51	-37.5	0
+52	-37.5	0
+53	-37.5	0
+54	-37.5	0
+55	-37.5	0
+56	-37.5	0
+57	-37.5	0
+58	-37.5	0
+59	-37.5	0
+60	-37.5	0
+61	-37.5	0
+62	-37.5	0
+63	-37.5	0
+64	-37.5	0
+65	-37.5	0
+66	-37.5	0
+67	-37.5	0
+68	-37.5	0
+69	-37.5	0
+70	-37.5	0
+71	-37.5	0
+72	-37.5	0
+73	-37.5	0
+74	-37.5	0
+75	-37.5	0
+76	-37.5	0
+77	-37.5	0
+78	-37.5	0
+79	-37.5	0
+80	-37.5	0
+81	-37.5	0
+82	-37.5	0
+83	-37.5	0
+84	-37.5	0
+85	-37.5	0
+86	-37.5	0
+87	-37.5	0
+88	-37.5	0
+89	-37.5	0
+90	-37.5	0
+91	-37.5	0
+92	-37.5	0
+93	-37.5	0
+94	-37.5	0
+95	-37.5	0
+96	-37.5	0
+97	-37.5	0
+98	-37.5	0
+99	-37.5	0
+100	-37.5	0
+101	-37.5	0
+102	-37.5	0
+103	-37.5	0
+104	-37.5	0
+105	-37.5	0
+106	-37.5	0
+107	-37.5	0
+108	-37.5	0
+109	-37.5	0
+110	-37.5	0
+111	-37.5	0
+112	-37.5	0
+113	-37.5	0
+114	-37.5	0
+115	-37.5	0
+116	-37.5	0
+117	-37.5	0
+118	-37.5	0
+119	-37.5	0
+120	-37.5	0
+121	-37.5	0
+122	-37.5	0
+123	-37.5	0
+124	-37.5	0
+125	-37.5	0
+126	-37.5	0
+127	-37.5	0
+128	-37.5	0
+129	-37.5	0
+130	-37.5	0
+131	-37.5	0
+132	-37.5	0
+133	-37.5	0
+134	-37.5	0
+135	-37.5	0
+136	-37.5	0
+137	-37.5	0
+138	-37.5	0
+139	-37.5	0
+140	-37.5	0
+141	-37.5	0
+142	-37.5	0
+143	-37.5	0
+144	-37.5	0
+145	-37.5	0
+146	-37.5	0
+147	-37.5	0
+148	-37.5	0
+149	-37.5	0
+150	-37.5	0
+151	-37.5	0
+152	-37.5	0
+153	-37.5	0
+154	-37.5	0
+155	-37.5	0
+156	-37.5	0
+157	-37.5	0
+158	-37.5	0
+159	-37.5	0
+160	-37.5	0
+161	-37.5	0
+162	-37.5	0
+163	-37.5	0
+164	-37.5	0
+165	-37.5	0
+166	-37.5	0
+167	-37.5	0
+168	-37.5	0
+169	-37.5	0
+170	-37.5	0
+171	-37.5	0
+172	-37.5	0
+173	-37.5	0
+174	-37.5	0
+175	-37.5	0
+176	-37.5	0
+177	-37.5	0
+178	-37.5	0
+179	-37.5	0
+180	-37.5	0
+181	-37.5	0
+182	-37.5	0
+183	-37.5	0
+184	-37.5	0
+185	-37.5	0
+186	-37.5	0
+187	-37.5	0
+188	-37.5	0
+189	-37.5	0
+190	-37.5	0
+191	-37.5	0
+192	-37.5	0
+193	-37.5	0
+194	-37.5	0
+195	-37.5	0
+196	-37.5	0
+197	-37.5	0
+198	-37.5	0
+199	-37.5	0
+200	-37.5	0
+201	-37.5	0
+202	-37.5	0
+203	-37.5	0
+204	-37.5	0
+205	-37.5	0
+206	-37.5	0
+207	-37.5	0
+208	-37.5	0
+209	-37.5	0
+210	-37.5	0
+211	-37.5	0
+212	-37.5	0
+213	-37.5	0
+214	-37.5	0
+215	-37.5	0
+216	-37.5	0
+217	-37.5	0
+218	-37.5	0
+219	-37.5	0
+220	-37.5	0
+221	-37.5	0
+222	-37.5	0
+223	-37.5	0
+224	-37.5	0
+225	-37.5	0
+226	-37.5	0
+227	-37.5	0
+228	-37.5	0
+229	-37.5	0
+230	-37.5	0
+231	-37.5	0
+232	-37.5	0
+233	-37.5	0
+234	-37.5	0
+235	-37.5	0
+236	-37.5	0
+237	-37.5	0
+238	-37.5	0
+239	-37.5	0
+240	-37.5	0
+241	-37.5	0
+242	-37.5	0
+243	-37.5	0
+244	-37.5	0
+245	-37.5	0
+246	-37.5	0
+247	-37.5	0
+248	-37.5	0
+249	-37.5	0
+250	-37.5	0
+251	-37.5	0
+252	-37.5	0
+253	-37.5	0
+254	-37.5	0
+255	-37.5	0
+256	-37.5	0
+257	-37.5	0
+258	-37.5	0
+259	-37.5	0
+260	-37.5	0
+261	-37.5	0
+262	-37.5	0
+263	-37.5	0
+264	-37.5	0
+265	-37.5	0
+266	-37.5	0
+267	-37.5	0
+268	-37.5	0
+269	-37.5	0
+270	-37.5	0
+271	-37.5	0
+272	-37.5	0
+273	-37.5	0
+274	-37.5	0
+275	-37.5	0
+276	-37.5	0
+277	-37.5	0
+278	-37.5	0
+279	-37.5	0
+280	-37.5	0
+281	-37.5	0
+282	-37.5	0
+283	-37.5	0
+284	-37.5	0
+285	-37.5	0
+286	-37.5	0
+287	-37.5	0
+288	-37.5	0
+289	-37.5	0
+290	-37.5	0
+291	-37.5	0
+292	-37.5	0
+293	-37.5	0
+294	-37.5	0
+295	-37.5	0
+296	-37.5	0
+297	-37.5	0
+298	-37.5	0
+299	-37.5	0
+300	-37.5	0
+301	-37.5	0
+302	-37.5	0
+303	-37.5	0
+304	-37.5	0
+305	-37.5	0
+306	-37.5	0
+307	-37.5	0
+308	-37.5	0
+309	-37.5	0
+310	-37.5	0
+311	-37.5	0
+312	-37.5	0
+313	-37.5	0
+314	-37.5	0
+315	-37.5	0
+316	-37.5	0
+317	-37.5	0
+318	-37.5	0
+319	-37.5	0
+320	-37.5	0
+321	-37.5	0
+322	-37.5	0
+323	-37.5	0
+324	-37.5	0
+325	-37.5	0
+326	-37.5	0
+327	-37.5	0
+328	-37.5	0
+329	-37.5	0
+330	-37.5	0
+331	-37.5	0
+332	-37.5	0
+333	-37.5	0
+334	-37.5	0
+335	-37.5	0
+336	-37.5	0
+337	-37.5	0
+338	-37.5	0
+339	-37.5	0
+340	-37.5	0
+341	-37.5	0
+342	-37.5	0
+343	-37.5	0
+344	-37.5	0
+345	-37.5	0
+346	-37.5	0
+347	-37.5	0
+348	-37.5	0
+349	-37.5	0
+350	-37.5	0
+351	-37.5	0
+352	-37.5	0
+353	-37.5	0
+354	-37.5	0
+355	-37.5	0
+356	-37.5	0
+357	-37.5	0
+358	-37.5	0
+359	-37.5	0
+360	-37.5	0
+0	-37	0
+1	-37	0
+2	-37	0
+3	-37	0
+4	-37	0
+5	-37	0
+6	-37	0
+7	-37	0
+8	-37	0
+9	-37	0
+10	-37	0
+11	-37	0
+12	-37	0
+13	-37	0
+14	-37	0
+15	-37	0
+16	-37	0
+17	-37	0
+18	-37	0
+19	-37	0
+20	-37	0
+21	-37	0
+22	-37	0
+23	-37	0
+24	-37	0
+25	-37	0
+26	-37	0
+27	-37	0
+28	-37	0
+29	-37	0
+30	-37	0
+31	-37	0
+32	-37	0
+33	-37	0
+34	-37	0
+35	-37	0
+36	-37	0
+37	-37	0
+38	-37	0
+39	-37	0
+40	-37	0
+41	-37	0
+42	-37	0
+43	-37	0
+44	-37	0
+45	-37	0
+46	-37	0
+47	-37	0
+48	-37	0
+49	-37	0
+50	-37	0
+51	-37	0
+52	-37	0
+53	-37	0
+54	-37	0
+55	-37	0
+56	-37	0
+57	-37	0
+58	-37	0
+59	-37	0
+60	-37	0
+61	-37	0
+62	-37	0
+63	-37	0
+64	-37	0
+65	-37	0
+66	-37	0
+67	-37	0
+68	-37	0
+69	-37	0
+70	-37	0
+71	-37	0
+72	-37	0
+73	-37	0
+74	-37	0
+75	-37	0
+76	-37	0
+77	-37	0
+78	-37	0
+79	-37	0
+80	-37	0
+81	-37	0
+82	-37	0
+83	-37	0
+84	-37	0
+85	-37	0
+86	-37	0
+87	-37	0
+88	-37	0
+89	-37	0
+90	-37	0
+91	-37	0
+92	-37	0
+93	-37	0
+94	-37	0
+95	-37	0
+96	-37	0
+97	-37	0
+98	-37	0
+99	-37	0
+100	-37	0
+101	-37	0
+102	-37	0
+103	-37	0
+104	-37	0
+105	-37	0
+106	-37	0
+107	-37	0
+108	-37	0
+109	-37	0
+110	-37	0
+111	-37	0
+112	-37	0
+113	-37	0
+114	-37	0
+115	-37	0
+116	-37	0
+117	-37	0
+118	-37	0
+119	-37	0
+120	-37	0
+121	-37	0
+122	-37	0
+123	-37	0
+124	-37	0
+125	-37	0
+126	-37	0
+127	-37	0
+128	-37	0
+129	-37	0
+130	-37	0
+131	-37	0
+132	-37	0
+133	-37	0
+134	-37	0
+135	-37	0
+136	-37	0
+137	-37	0
+138	-37	0
+139	-37	0
+140	-37	0
+141	-37	0
+142	-37	0
+143	-37	0
+144	-37	0
+145	-37	0
+146	-37	0
+147	-37	0
+148	-37	0
+149	-37	0
+150	-37	0
+151	-37	0
+152	-37	0
+153	-37	0
+154	-37	0
+155	-37	0
+156	-37	0
+157	-37	0
+158	-37	0
+159	-37	0
+160	-37	0
+161	-37	0
+162	-37	0
+163	-37	0
+164	-37	0
+165	-37	0
+166	-37	0
+167	-37	0
+168	-37	0
+169	-37	0
+170	-37	0
+171	-37	0
+172	-37	0
+173	-37	0
+174	-37	0
+175	-37	0
+176	-37	0
+177	-37	0
+178	-37	0
+179	-37	0
+180	-37	0
+181	-37	0
+182	-37	0
+183	-37	0
+184	-37	0
+185	-37	0
+186	-37	0
+187	-37	0
+188	-37	0
+189	-37	0
+190	-37	0
+191	-37	0
+192	-37	0
+193	-37	0
+194	-37	0
+195	-37	0
+196	-37	0
+197	-37	0
+198	-37	0
+199	-37	0
+200	-37	0
+201	-37	0
+202	-37	0
+203	-37	0
+204	-37	0
+205	-37	0
+206	-37	0
+207	-37	0
+208	-37	0
+209	-37	0
+210	-37	0
+211	-37	0
+212	-37	0
+213	-37	0
+214	-37	0
+215	-37	0
+216	-37	0
+217	-37	0
+218	-37	0
+219	-37	0
+220	-37	0
+221	-37	0
+222	-37	0
+223	-37	0
+224	-37	0
+225	-37	0
+226	-37	0
+227	-37	0
+228	-37	0
+229	-37	0
+230	-37	0
+231	-37	0
+232	-37	0
+233	-37	0
+234	-37	0
+235	-37	0
+236	-37	0
+237	-37	0
+238	-37	0
+239	-37	0
+240	-37	0
+241	-37	0
+242	-37	0
+243	-37	0
+244	-37	0
+245	-37	0
+246	-37	0
+247	-37	0
+248	-37	0
+249	-37	0
+250	-37	0
+251	-37	0
+252	-37	0
+253	-37	0
+254	-37	0
+255	-37	0
+256	-37	0
+257	-37	0
+258	-37	0
+259	-37	0
+260	-37	0
+261	-37	0
+262	-37	0
+263	-37	0
+264	-37	0
+265	-37	0
+266	-37	0
+267	-37	0
+268	-37	0
+269	-37	0
+270	-37	0
+271	-37	0
+272	-37	0
+273	-37	0
+274	-37	0
+275	-37	0
+276	-37	0
+277	-37	0
+278	-37	0
+279	-37	0
+280	-37	0
+281	-37	0
+282	-37	0
+283	-37	0
+284	-37	0
+285	-37	0
+286	-37	0
+287	-37	0
+288	-37	0
+289	-37	0
+290	-37	0
+291	-37	0
+292	-37	0
+293	-37	0
+294	-37	0
+295	-37	0
+296	-37	0
+297	-37	0
+298	-37	0
+299	-37	0
+300	-37	0
+301	-37	0
+302	-37	0
+303	-37	0
+304	-37	0
+305	-37	0
+306	-37	0
+307	-37	0
+308	-37	0
+309	-37	0
+310	-37	0
+311	-37	0
+312	-37	0
+313	-37	0
+314	-37	0
+315	-37	0
+316	-37	0
+317	-37	0
+318	-37	0
+319	-37	0
+320	-37	0
+321	-37	0
+322	-37	0
+323	-37	0
+324	-37	0
+325	-37	0
+326	-37	0
+327	-37	0
+328	-37	0
+329	-37	0
+330	-37	0
+331	-37	0
+332	-37	0
+333	-37	0
+334	-37	0
+335	-37	0
+336	-37	0
+337	-37	0
+338	-37	0
+339	-37	0
+340	-37	0
+341	-37	0
+342	-37	0
+343	-37	0
+344	-37	0
+345	-37	0
+346	-37	0
+347	-37	0
+348	-37	0
+349	-37	0
+350	-37	0
+351	-37	0
+352	-37	0
+353	-37	0
+354	-37	0
+355	-37	0
+356	-37	0
+357	-37	0
+358	-37	0
+359	-37	0
+360	-37	0
+0	-36.5	0
+1	-36.5	0
+2	-36.5	0
+3	-36.5	0
+4	-36.5	0
+5	-36.5	0
+6	-36.5	0
+7	-36.5	0
+8	-36.5	0
+9	-36.5	0
+10	-36.5	0
+11	-36.5	0
+12	-36.5	0
+13	-36.5	0
+14	-36.5	0
+15	-36.5	0
+16	-36.5	0
+17	-36.5	0
+18	-36.5	0
+19	-36.5	0
+20	-36.5	0
+21	-36.5	0
+22	-36.5	0
+23	-36.5	0
+24	-36.5	0
+25	-36.5	0
+26	-36.5	0
+27	-36.5	0
+28	-36.5	0
+29	-36.5	0
+30	-36.5	0
+31	-36.5	0
+32	-36.5	0
+33	-36.5	0
+34	-36.5	0
+35	-36.5	0
+36	-36.5	0
+37	-36.5	0
+38	-36.5	0
+39	-36.5	0
+40	-36.5	0
+41	-36.5	0
+42	-36.5	0
+43	-36.5	0
+44	-36.5	0
+45	-36.5	0
+46	-36.5	0
+47	-36.5	0
+48	-36.5	0
+49	-36.5	0
+50	-36.5	0
+51	-36.5	0
+52	-36.5	0
+53	-36.5	0
+54	-36.5	0
+55	-36.5	0
+56	-36.5	0
+57	-36.5	0
+58	-36.5	0
+59	-36.5	0
+60	-36.5	0
+61	-36.5	0
+62	-36.5	0
+63	-36.5	0
+64	-36.5	0
+65	-36.5	0
+66	-36.5	0
+67	-36.5	0
+68	-36.5	0
+69	-36.5	0
+70	-36.5	0
+71	-36.5	0
+72	-36.5	0
+73	-36.5	0
+74	-36.5	0
+75	-36.5	0
+76	-36.5	0
+77	-36.5	0
+78	-36.5	0
+79	-36.5	0
+80	-36.5	0
+81	-36.5	0
+82	-36.5	0
+83	-36.5	0
+84	-36.5	0
+85	-36.5	0
+86	-36.5	0
+87	-36.5	0
+88	-36.5	0
+89	-36.5	0
+90	-36.5	0
+91	-36.5	0
+92	-36.5	0
+93	-36.5	0
+94	-36.5	0
+95	-36.5	0
+96	-36.5	0
+97	-36.5	0
+98	-36.5	0
+99	-36.5	0
+100	-36.5	0
+101	-36.5	0
+102	-36.5	0
+103	-36.5	0
+104	-36.5	0
+105	-36.5	0
+106	-36.5	0
+107	-36.5	0
+108	-36.5	0
+109	-36.5	0
+110	-36.5	0
+111	-36.5	0
+112	-36.5	0
+113	-36.5	0
+114	-36.5	0
+115	-36.5	0
+116	-36.5	0
+117	-36.5	0
+118	-36.5	0
+119	-36.5	0
+120	-36.5	0
+121	-36.5	0
+122	-36.5	0
+123	-36.5	0
+124	-36.5	0
+125	-36.5	0
+126	-36.5	0
+127	-36.5	0
+128	-36.5	0
+129	-36.5	0
+130	-36.5	0
+131	-36.5	0
+132	-36.5	0
+133	-36.5	0
+134	-36.5	0
+135	-36.5	0
+136	-36.5	0
+137	-36.5	0
+138	-36.5	0
+139	-36.5	0
+140	-36.5	0
+141	-36.5	0
+142	-36.5	0
+143	-36.5	0
+144	-36.5	0
+145	-36.5	0
+146	-36.5	0
+147	-36.5	0
+148	-36.5	0
+149	-36.5	0
+150	-36.5	0
+151	-36.5	0
+152	-36.5	0
+153	-36.5	0
+154	-36.5	0
+155	-36.5	0
+156	-36.5	0
+157	-36.5	0
+158	-36.5	0
+159	-36.5	0
+160	-36.5	0
+161	-36.5	0
+162	-36.5	0
+163	-36.5	0
+164	-36.5	0
+165	-36.5	0
+166	-36.5	0
+167	-36.5	0
+168	-36.5	0
+169	-36.5	0
+170	-36.5	0
+171	-36.5	0
+172	-36.5	0
+173	-36.5	0
+174	-36.5	0
+175	-36.5	0
+176	-36.5	0
+177	-36.5	0
+178	-36.5	0
+179	-36.5	0
+180	-36.5	0
+181	-36.5	0
+182	-36.5	0
+183	-36.5	0
+184	-36.5	0
+185	-36.5	0
+186	-36.5	0
+187	-36.5	0
+188	-36.5	0
+189	-36.5	0
+190	-36.5	0
+191	-36.5	0
+192	-36.5	0
+193	-36.5	0
+194	-36.5	0
+195	-36.5	0
+196	-36.5	0
+197	-36.5	0
+198	-36.5	0
+199	-36.5	0
+200	-36.5	0
+201	-36.5	0
+202	-36.5	0
+203	-36.5	0
+204	-36.5	0
+205	-36.5	0
+206	-36.5	0
+207	-36.5	0
+208	-36.5	0
+209	-36.5	0
+210	-36.5	0
+211	-36.5	0
+212	-36.5	0
+213	-36.5	0
+214	-36.5	0
+215	-36.5	0
+216	-36.5	0
+217	-36.5	0
+218	-36.5	0
+219	-36.5	0
+220	-36.5	0
+221	-36.5	0
+222	-36.5	0
+223	-36.5	0
+224	-36.5	0
+225	-36.5	0
+226	-36.5	0
+227	-36.5	0
+228	-36.5	0
+229	-36.5	0
+230	-36.5	0
+231	-36.5	0
+232	-36.5	0
+233	-36.5	0
+234	-36.5	0
+235	-36.5	0
+236	-36.5	0
+237	-36.5	0
+238	-36.5	0
+239	-36.5	0
+240	-36.5	0
+241	-36.5	0
+242	-36.5	0
+243	-36.5	0
+244	-36.5	0
+245	-36.5	0
+246	-36.5	0
+247	-36.5	0
+248	-36.5	0
+249	-36.5	0
+250	-36.5	0
+251	-36.5	0
+252	-36.5	0
+253	-36.5	0
+254	-36.5	0
+255	-36.5	0
+256	-36.5	0
+257	-36.5	0
+258	-36.5	0
+259	-36.5	0
+260	-36.5	0
+261	-36.5	0
+262	-36.5	0
+263	-36.5	0
+264	-36.5	0
+265	-36.5	0
+266	-36.5	0
+267	-36.5	0
+268	-36.5	0
+269	-36.5	0
+270	-36.5	0
+271	-36.5	0
+272	-36.5	0
+273	-36.5	0
+274	-36.5	0
+275	-36.5	0
+276	-36.5	0
+277	-36.5	0
+278	-36.5	0
+279	-36.5	0
+280	-36.5	0
+281	-36.5	0
+282	-36.5	0
+283	-36.5	0
+284	-36.5	0
+285	-36.5	0
+286	-36.5	0
+287	-36.5	0
+288	-36.5	0
+289	-36.5	0
+290	-36.5	0
+291	-36.5	0
+292	-36.5	0
+293	-36.5	0
+294	-36.5	0
+295	-36.5	0
+296	-36.5	0
+297	-36.5	0
+298	-36.5	0
+299	-36.5	0
+300	-36.5	0
+301	-36.5	0
+302	-36.5	0
+303	-36.5	0
+304	-36.5	0
+305	-36.5	0
+306	-36.5	0
+307	-36.5	0
+308	-36.5	0
+309	-36.5	0
+310	-36.5	0
+311	-36.5	0
+312	-36.5	0
+313	-36.5	0
+314	-36.5	0
+315	-36.5	0
+316	-36.5	0
+317	-36.5	0
+318	-36.5	0
+319	-36.5	0
+320	-36.5	0
+321	-36.5	0
+322	-36.5	0
+323	-36.5	0
+324	-36.5	0
+325	-36.5	0
+326	-36.5	0
+327	-36.5	0
+328	-36.5	0
+329	-36.5	0
+330	-36.5	0
+331	-36.5	0
+332	-36.5	0
+333	-36.5	0
+334	-36.5	0
+335	-36.5	0
+336	-36.5	0
+337	-36.5	0
+338	-36.5	0
+339	-36.5	0
+340	-36.5	0
+341	-36.5	0
+342	-36.5	0
+343	-36.5	0
+344	-36.5	0
+345	-36.5	0
+346	-36.5	0
+347	-36.5	0
+348	-36.5	0
+349	-36.5	0
+350	-36.5	0
+351	-36.5	0
+352	-36.5	0
+353	-36.5	0
+354	-36.5	0
+355	-36.5	0
+356	-36.5	0
+357	-36.5	0
+358	-36.5	0
+359	-36.5	0
+360	-36.5	0
+0	-36	0
+1	-36	0
+2	-36	0
+3	-36	0
+4	-36	0
+5	-36	0
+6	-36	0
+7	-36	0
+8	-36	0
+9	-36	0
+10	-36	0
+11	-36	0
+12	-36	0
+13	-36	0
+14	-36	0
+15	-36	0
+16	-36	0
+17	-36	0
+18	-36	0
+19	-36	0
+20	-36	0
+21	-36	0
+22	-36	0
+23	-36	0
+24	-36	0
+25	-36	0
+26	-36	0
+27	-36	0
+28	-36	0
+29	-36	0
+30	-36	0
+31	-36	0
+32	-36	0
+33	-36	0
+34	-36	0
+35	-36	0
+36	-36	0
+37	-36	0
+38	-36	0
+39	-36	0
+40	-36	0
+41	-36	0
+42	-36	0
+43	-36	0
+44	-36	0
+45	-36	0
+46	-36	0
+47	-36	0
+48	-36	0
+49	-36	0
+50	-36	0
+51	-36	0
+52	-36	0
+53	-36	0
+54	-36	0
+55	-36	0
+56	-36	0
+57	-36	0
+58	-36	0
+59	-36	0
+60	-36	0
+61	-36	0
+62	-36	0
+63	-36	0
+64	-36	0
+65	-36	0
+66	-36	0
+67	-36	0
+68	-36	0
+69	-36	0
+70	-36	0
+71	-36	0
+72	-36	0
+73	-36	0
+74	-36	0
+75	-36	0
+76	-36	0
+77	-36	0
+78	-36	0
+79	-36	0
+80	-36	0
+81	-36	0
+82	-36	0
+83	-36	0
+84	-36	0
+85	-36	0
+86	-36	0
+87	-36	0
+88	-36	0
+89	-36	0
+90	-36	0
+91	-36	0
+92	-36	0
+93	-36	0
+94	-36	0
+95	-36	0
+96	-36	0
+97	-36	0
+98	-36	0
+99	-36	0
+100	-36	0
+101	-36	0
+102	-36	0
+103	-36	0
+104	-36	0
+105	-36	0
+106	-36	0
+107	-36	0
+108	-36	0
+109	-36	0
+110	-36	0
+111	-36	0
+112	-36	0
+113	-36	0
+114	-36	0
+115	-36	0
+116	-36	0
+117	-36	0
+118	-36	0
+119	-36	0
+120	-36	0
+121	-36	0
+122	-36	0
+123	-36	0
+124	-36	0
+125	-36	0
+126	-36	0
+127	-36	0
+128	-36	0
+129	-36	0
+130	-36	0
+131	-36	0
+132	-36	0
+133	-36	0
+134	-36	0
+135	-36	0
+136	-36	0
+137	-36	0
+138	-36	0
+139	-36	0
+140	-36	0
+141	-36	0
+142	-36	0
+143	-36	0
+144	-36	0
+145	-36	0
+146	-36	0
+147	-36	0
+148	-36	0
+149	-36	0
+150	-36	0
+151	-36	0
+152	-36	0
+153	-36	0
+154	-36	0
+155	-36	0
+156	-36	0
+157	-36	0
+158	-36	0
+159	-36	0
+160	-36	0
+161	-36	0
+162	-36	0
+163	-36	0
+164	-36	0
+165	-36	0
+166	-36	0
+167	-36	0
+168	-36	0
+169	-36	0
+170	-36	0
+171	-36	0
+172	-36	0
+173	-36	0
+174	-36	0
+175	-36	0
+176	-36	0
+177	-36	0
+178	-36	0
+179	-36	0
+180	-36	0
+181	-36	0
+182	-36	0
+183	-36	0
+184	-36	0
+185	-36	0
+186	-36	0
+187	-36	0
+188	-36	0
+189	-36	0
+190	-36	0
+191	-36	0
+192	-36	0
+193	-36	0
+194	-36	0
+195	-36	0
+196	-36	0
+197	-36	0
+198	-36	0
+199	-36	0
+200	-36	0
+201	-36	0
+202	-36	0
+203	-36	0
+204	-36	0
+205	-36	0
+206	-36	0
+207	-36	0
+208	-36	0
+209	-36	0
+210	-36	0
+211	-36	0
+212	-36	0
+213	-36	0
+214	-36	0
+215	-36	0
+216	-36	0
+217	-36	0
+218	-36	0
+219	-36	0
+220	-36	0
+221	-36	0
+222	-36	0
+223	-36	0
+224	-36	0
+225	-36	0
+226	-36	0
+227	-36	0
+228	-36	0
+229	-36	0
+230	-36	0
+231	-36	0
+232	-36	0
+233	-36	0
+234	-36	0
+235	-36	0
+236	-36	0
+237	-36	0
+238	-36	0
+239	-36	0
+240	-36	0
+241	-36	0
+242	-36	0
+243	-36	0
+244	-36	0
+245	-36	0
+246	-36	0
+247	-36	0
+248	-36	0
+249	-36	0
+250	-36	0
+251	-36	0
+252	-36	0
+253	-36	0
+254	-36	0
+255	-36	0
+256	-36	0
+257	-36	0
+258	-36	0
+259	-36	0
+260	-36	0
+261	-36	0
+262	-36	0
+263	-36	0
+264	-36	0
+265	-36	0
+266	-36	0
+267	-36	0
+268	-36	0
+269	-36	0
+270	-36	0
+271	-36	0
+272	-36	0
+273	-36	0
+274	-36	0
+275	-36	0
+276	-36	0
+277	-36	0
+278	-36	0
+279	-36	0
+280	-36	0
+281	-36	0
+282	-36	0
+283	-36	0
+284	-36	0
+285	-36	0
+286	-36	0
+287	-36	0
+288	-36	0
+289	-36	0
+290	-36	0
+291	-36	0
+292	-36	0
+293	-36	0
+294	-36	0
+295	-36	0
+296	-36	0
+297	-36	0
+298	-36	0
+299	-36	0
+300	-36	0
+301	-36	0
+302	-36	0
+303	-36	0
+304	-36	0
+305	-36	0
+306	-36	0
+307	-36	0
+308	-36	0
+309	-36	0
+310	-36	0
+311	-36	0
+312	-36	0
+313	-36	0
+314	-36	0
+315	-36	0
+316	-36	0
+317	-36	0
+318	-36	0
+319	-36	0
+320	-36	0
+321	-36	0
+322	-36	0
+323	-36	0
+324	-36	0
+325	-36	0
+326	-36	0
+327	-36	0
+328	-36	0
+329	-36	0
+330	-36	0
+331	-36	0
+332	-36	0
+333	-36	0
+334	-36	0
+335	-36	0
+336	-36	0
+337	-36	0
+338	-36	0
+339	-36	0
+340	-36	0
+341	-36	0
+342	-36	0
+343	-36	0
+344	-36	0
+345	-36	0
+346	-36	0
+347	-36	0
+348	-36	0
+349	-36	0
+350	-36	0
+351	-36	0
+352	-36	0
+353	-36	0
+354	-36	0
+355	-36	0
+356	-36	0
+357	-36	0
+358	-36	0
+359	-36	0
+360	-36	0
+0	-35.5	0
+1	-35.5	0
+2	-35.5	0
+3	-35.5	0
+4	-35.5	0
+5	-35.5	0
+6	-35.5	0
+7	-35.5	0
+8	-35.5	0
+9	-35.5	0
+10	-35.5	0
+11	-35.5	0
+12	-35.5	0
+13	-35.5	0
+14	-35.5	0
+15	-35.5	0
+16	-35.5	0
+17	-35.5	0
+18	-35.5	0
+19	-35.5	0
+20	-35.5	0
+21	-35.5	0
+22	-35.5	0
+23	-35.5	0
+24	-35.5	0
+25	-35.5	0
+26	-35.5	0
+27	-35.5	0
+28	-35.5	0
+29	-35.5	0
+30	-35.5	0
+31	-35.5	0
+32	-35.5	0
+33	-35.5	0
+34	-35.5	0
+35	-35.5	0
+36	-35.5	0
+37	-35.5	0
+38	-35.5	0
+39	-35.5	0
+40	-35.5	0
+41	-35.5	0
+42	-35.5	0
+43	-35.5	0
+44	-35.5	0
+45	-35.5	0
+46	-35.5	0
+47	-35.5	0
+48	-35.5	0
+49	-35.5	0
+50	-35.5	0
+51	-35.5	0
+52	-35.5	0
+53	-35.5	0
+54	-35.5	0
+55	-35.5	0
+56	-35.5	0
+57	-35.5	0
+58	-35.5	0
+59	-35.5	0
+60	-35.5	0
+61	-35.5	0
+62	-35.5	0
+63	-35.5	0
+64	-35.5	0
+65	-35.5	0
+66	-35.5	0
+67	-35.5	0
+68	-35.5	0
+69	-35.5	0
+70	-35.5	0
+71	-35.5	0
+72	-35.5	0
+73	-35.5	0
+74	-35.5	0
+75	-35.5	0
+76	-35.5	0
+77	-35.5	0
+78	-35.5	0
+79	-35.5	0
+80	-35.5	0
+81	-35.5	0
+82	-35.5	0
+83	-35.5	0
+84	-35.5	0
+85	-35.5	0
+86	-35.5	0
+87	-35.5	0
+88	-35.5	0
+89	-35.5	0
+90	-35.5	0
+91	-35.5	0
+92	-35.5	0
+93	-35.5	0
+94	-35.5	0
+95	-35.5	0
+96	-35.5	0
+97	-35.5	0
+98	-35.5	0
+99	-35.5	0
+100	-35.5	0
+101	-35.5	0
+102	-35.5	0
+103	-35.5	0
+104	-35.5	0
+105	-35.5	0
+106	-35.5	0
+107	-35.5	0
+108	-35.5	0
+109	-35.5	0
+110	-35.5	0
+111	-35.5	0
+112	-35.5	0
+113	-35.5	0
+114	-35.5	0
+115	-35.5	0
+116	-35.5	0
+117	-35.5	0
+118	-35.5	0
+119	-35.5	0
+120	-35.5	0
+121	-35.5	0
+122	-35.5	0
+123	-35.5	0
+124	-35.5	0
+125	-35.5	0
+126	-35.5	0
+127	-35.5	0
+128	-35.5	0
+129	-35.5	0
+130	-35.5	0
+131	-35.5	0
+132	-35.5	0
+133	-35.5	0
+134	-35.5	0
+135	-35.5	0
+136	-35.5	0
+137	-35.5	0
+138	-35.5	0
+139	-35.5	0
+140	-35.5	0
+141	-35.5	0
+142	-35.5	0
+143	-35.5	0
+144	-35.5	0
+145	-35.5	0
+146	-35.5	0
+147	-35.5	0
+148	-35.5	0
+149	-35.5	0
+150	-35.5	0
+151	-35.5	0
+152	-35.5	0
+153	-35.5	0
+154	-35.5	0
+155	-35.5	0
+156	-35.5	0
+157	-35.5	0
+158	-35.5	0
+159	-35.5	0
+160	-35.5	0
+161	-35.5	0
+162	-35.5	0
+163	-35.5	0
+164	-35.5	0
+165	-35.5	0
+166	-35.5	0
+167	-35.5	0
+168	-35.5	0
+169	-35.5	0
+170	-35.5	0
+171	-35.5	0
+172	-35.5	0
+173	-35.5	0
+174	-35.5	0
+175	-35.5	0
+176	-35.5	0
+177	-35.5	0
+178	-35.5	0
+179	-35.5	0
+180	-35.5	0
+181	-35.5	0
+182	-35.5	0
+183	-35.5	0
+184	-35.5	0
+185	-35.5	0
+186	-35.5	0
+187	-35.5	0
+188	-35.5	0
+189	-35.5	0
+190	-35.5	0
+191	-35.5	0
+192	-35.5	0
+193	-35.5	0
+194	-35.5	0
+195	-35.5	0
+196	-35.5	0
+197	-35.5	0
+198	-35.5	0
+199	-35.5	0
+200	-35.5	0
+201	-35.5	0
+202	-35.5	0
+203	-35.5	0
+204	-35.5	0
+205	-35.5	0
+206	-35.5	0
+207	-35.5	0
+208	-35.5	0
+209	-35.5	0
+210	-35.5	0
+211	-35.5	0
+212	-35.5	0
+213	-35.5	0
+214	-35.5	0
+215	-35.5	0
+216	-35.5	0
+217	-35.5	0
+218	-35.5	0
+219	-35.5	0
+220	-35.5	0
+221	-35.5	0
+222	-35.5	0
+223	-35.5	0
+224	-35.5	0
+225	-35.5	0
+226	-35.5	0
+227	-35.5	0
+228	-35.5	0
+229	-35.5	0
+230	-35.5	0
+231	-35.5	0
+232	-35.5	0
+233	-35.5	0
+234	-35.5	0
+235	-35.5	0
+236	-35.5	0
+237	-35.5	0
+238	-35.5	0
+239	-35.5	0
+240	-35.5	0
+241	-35.5	0
+242	-35.5	0
+243	-35.5	0
+244	-35.5	0
+245	-35.5	0
+246	-35.5	0
+247	-35.5	0
+248	-35.5	0
+249	-35.5	0
+250	-35.5	0
+251	-35.5	0
+252	-35.5	0
+253	-35.5	0
+254	-35.5	0
+255	-35.5	0
+256	-35.5	0
+257	-35.5	0
+258	-35.5	0
+259	-35.5	0
+260	-35.5	0
+261	-35.5	0
+262	-35.5	0
+263	-35.5	0
+264	-35.5	0
+265	-35.5	0
+266	-35.5	0
+267	-35.5	0
+268	-35.5	0
+269	-35.5	0
+270	-35.5	0
+271	-35.5	0
+272	-35.5	0
+273	-35.5	0
+274	-35.5	0
+275	-35.5	0
+276	-35.5	0
+277	-35.5	0
+278	-35.5	0
+279	-35.5	0
+280	-35.5	0
+281	-35.5	0
+282	-35.5	0
+283	-35.5	0
+284	-35.5	0
+285	-35.5	0
+286	-35.5	0
+287	-35.5	0
+288	-35.5	0
+289	-35.5	0
+290	-35.5	0
+291	-35.5	0
+292	-35.5	0
+293	-35.5	0
+294	-35.5	0
+295	-35.5	0
+296	-35.5	0
+297	-35.5	0
+298	-35.5	0
+299	-35.5	0
+300	-35.5	0
+301	-35.5	0
+302	-35.5	0
+303	-35.5	0
+304	-35.5	0
+305	-35.5	0
+306	-35.5	0
+307	-35.5	0
+308	-35.5	0
+309	-35.5	0
+310	-35.5	0
+311	-35.5	0
+312	-35.5	0
+313	-35.5	0
+314	-35.5	0
+315	-35.5	0
+316	-35.5	0
+317	-35.5	0
+318	-35.5	0
+319	-35.5	0
+320	-35.5	0
+321	-35.5	0
+322	-35.5	0
+323	-35.5	0
+324	-35.5	0
+325	-35.5	0
+326	-35.5	0
+327	-35.5	0
+328	-35.5	0
+329	-35.5	0
+330	-35.5	0
+331	-35.5	0
+332	-35.5	0
+333	-35.5	0
+334	-35.5	0
+335	-35.5	0
+336	-35.5	0
+337	-35.5	0
+338	-35.5	0
+339	-35.5	0
+340	-35.5	0
+341	-35.5	0
+342	-35.5	0
+343	-35.5	0
+344	-35.5	0
+345	-35.5	0
+346	-35.5	0
+347	-35.5	0
+348	-35.5	0
+349	-35.5	0
+350	-35.5	0
+351	-35.5	0
+352	-35.5	0
+353	-35.5	0
+354	-35.5	0
+355	-35.5	0
+356	-35.5	0
+357	-35.5	0
+358	-35.5	0
+359	-35.5	0
+360	-35.5	0
+0	-35	0
+1	-35	0
+2	-35	0
+3	-35	0
+4	-35	0
+5	-35	0
+6	-35	0
+7	-35	0
+8	-35	0
+9	-35	0
+10	-35	0
+11	-35	0
+12	-35	0
+13	-35	0
+14	-35	0
+15	-35	0
+16	-35	0
+17	-35	0
+18	-35	0
+19	-35	0
+20	-35	0
+21	-35	0
+22	-35	0
+23	-35	0
+24	-35	0
+25	-35	0
+26	-35	0
+27	-35	0
+28	-35	0
+29	-35	0
+30	-35	0
+31	-35	0
+32	-35	0
+33	-35	0
+34	-35	0
+35	-35	0
+36	-35	0
+37	-35	0
+38	-35	0
+39	-35	0
+40	-35	0
+41	-35	0
+42	-35	0
+43	-35	0
+44	-35	0
+45	-35	0
+46	-35	0
+47	-35	0
+48	-35	0
+49	-35	0
+50	-35	0
+51	-35	0
+52	-35	0
+53	-35	0
+54	-35	0
+55	-35	0
+56	-35	0
+57	-35	0
+58	-35	0
+59	-35	0
+60	-35	0
+61	-35	0
+62	-35	0
+63	-35	0
+64	-35	0
+65	-35	0
+66	-35	0
+67	-35	0
+68	-35	0
+69	-35	0
+70	-35	0
+71	-35	0
+72	-35	0
+73	-35	0
+74	-35	0
+75	-35	0
+76	-35	0
+77	-35	0
+78	-35	0
+79	-35	0
+80	-35	0
+81	-35	0
+82	-35	0
+83	-35	0
+84	-35	0
+85	-35	0
+86	-35	0
+87	-35	0
+88	-35	0
+89	-35	0
+90	-35	0
+91	-35	0
+92	-35	0
+93	-35	0
+94	-35	0
+95	-35	0
+96	-35	0
+97	-35	0
+98	-35	0
+99	-35	0
+100	-35	0
+101	-35	0
+102	-35	0
+103	-35	0
+104	-35	0
+105	-35	0
+106	-35	0
+107	-35	0
+108	-35	0
+109	-35	0
+110	-35	0
+111	-35	0
+112	-35	0
+113	-35	0
+114	-35	0
+115	-35	0
+116	-35	0
+117	-35	0
+118	-35	0
+119	-35	0
+120	-35	0
+121	-35	0
+122	-35	0
+123	-35	0
+124	-35	0
+125	-35	0
+126	-35	0
+127	-35	0
+128	-35	0
+129	-35	0
+130	-35	0
+131	-35	0
+132	-35	0
+133	-35	0
+134	-35	0
+135	-35	0
+136	-35	0
+137	-35	0
+138	-35	0
+139	-35	0
+140	-35	0
+141	-35	0
+142	-35	0
+143	-35	0
+144	-35	0
+145	-35	0
+146	-35	0
+147	-35	0
+148	-35	0
+149	-35	0
+150	-35	0
+151	-35	0
+152	-35	0
+153	-35	0
+154	-35	0
+155	-35	0
+156	-35	0
+157	-35	0
+158	-35	0
+159	-35	0
+160	-35	0
+161	-35	0
+162	-35	0
+163	-35	0
+164	-35	0
+165	-35	0
+166	-35	0
+167	-35	0
+168	-35	0
+169	-35	0
+170	-35	0
+171	-35	0
+172	-35	0
+173	-35	0
+174	-35	0
+175	-35	0
+176	-35	0
+177	-35	0
+178	-35	0
+179	-35	0
+180	-35	0
+181	-35	0
+182	-35	0
+183	-35	0
+184	-35	0
+185	-35	0
+186	-35	0
+187	-35	0
+188	-35	0
+189	-35	0
+190	-35	0
+191	-35	0
+192	-35	0
+193	-35	0
+194	-35	0
+195	-35	0
+196	-35	0
+197	-35	0
+198	-35	0
+199	-35	0
+200	-35	0
+201	-35	0
+202	-35	0
+203	-35	0
+204	-35	0
+205	-35	0
+206	-35	0
+207	-35	0
+208	-35	0
+209	-35	0
+210	-35	0
+211	-35	0
+212	-35	0
+213	-35	0
+214	-35	0
+215	-35	0
+216	-35	0
+217	-35	0
+218	-35	0
+219	-35	0
+220	-35	0
+221	-35	0
+222	-35	0
+223	-35	0
+224	-35	0
+225	-35	0
+226	-35	0
+227	-35	0
+228	-35	0
+229	-35	0
+230	-35	0
+231	-35	0
+232	-35	0
+233	-35	0
+234	-35	0
+235	-35	0
+236	-35	0
+237	-35	0
+238	-35	0
+239	-35	0
+240	-35	0
+241	-35	0
+242	-35	0
+243	-35	0
+244	-35	0
+245	-35	0
+246	-35	0
+247	-35	0
+248	-35	0
+249	-35	0
+250	-35	0
+251	-35	0
+252	-35	0
+253	-35	0
+254	-35	0
+255	-35	0
+256	-35	0
+257	-35	0
+258	-35	0
+259	-35	0
+260	-35	0
+261	-35	0
+262	-35	0
+263	-35	0
+264	-35	0
+265	-35	0
+266	-35	0
+267	-35	0
+268	-35	0
+269	-35	0
+270	-35	0
+271	-35	0
+272	-35	0
+273	-35	0
+274	-35	0
+275	-35	0
+276	-35	0
+277	-35	0
+278	-35	0
+279	-35	0
+280	-35	0
+281	-35	0
+282	-35	0
+283	-35	0
+284	-35	0
+285	-35	0
+286	-35	0
+287	-35	0
+288	-35	0
+289	-35	0
+290	-35	0
+291	-35	0
+292	-35	0
+293	-35	0
+294	-35	0
+295	-35	0
+296	-35	0
+297	-35	0
+298	-35	0
+299	-35	0
+300	-35	0
+301	-35	0
+302	-35	0
+303	-35	0
+304	-35	0
+305	-35	0
+306	-35	0
+307	-35	0
+308	-35	0
+309	-35	0
+310	-35	0
+311	-35	0
+312	-35	0
+313	-35	0
+314	-35	0
+315	-35	0
+316	-35	0
+317	-35	0
+318	-35	0
+319	-35	0
+320	-35	0
+321	-35	0
+322	-35	0
+323	-35	0
+324	-35	0
+325	-35	0
+326	-35	0
+327	-35	0
+328	-35	0
+329	-35	0
+330	-35	0
+331	-35	0
+332	-35	0
+333	-35	0
+334	-35	0
+335	-35	0
+336	-35	0
+337	-35	0
+338	-35	0
+339	-35	0
+340	-35	0
+341	-35	0
+342	-35	0
+343	-35	0
+344	-35	0
+345	-35	0
+346	-35	0
+347	-35	0
+348	-35	0
+349	-35	0
+350	-35	0
+351	-35	0
+352	-35	0
+353	-35	0
+354	-35	0
+355	-35	0
+356	-35	0
+357	-35	0
+358	-35	0
+359	-35	0
+360	-35	0
+0	-34.5	0
+1	-34.5	0
+2	-34.5	0
+3	-34.5	0
+4	-34.5	0
+5	-34.5	0
+6	-34.5	0
+7	-34.5	0
+8	-34.5	0
+9	-34.5	0
+10	-34.5	0
+11	-34.5	0
+12	-34.5	0
+13	-34.5	0
+14	-34.5	0
+15	-34.5	0
+16	-34.5	0
+17	-34.5	0
+18	-34.5	0
+19	-34.5	0
+20	-34.5	0
+21	-34.5	0
+22	-34.5	0
+23	-34.5	0
+24	-34.5	0
+25	-34.5	0
+26	-34.5	0
+27	-34.5	0
+28	-34.5	0
+29	-34.5	0
+30	-34.5	0
+31	-34.5	0
+32	-34.5	0
+33	-34.5	0
+34	-34.5	0
+35	-34.5	0
+36	-34.5	0
+37	-34.5	0
+38	-34.5	0
+39	-34.5	0
+40	-34.5	0
+41	-34.5	0
+42	-34.5	0
+43	-34.5	0
+44	-34.5	0
+45	-34.5	0
+46	-34.5	0
+47	-34.5	0
+48	-34.5	0
+49	-34.5	0
+50	-34.5	0
+51	-34.5	0
+52	-34.5	0
+53	-34.5	0
+54	-34.5	0
+55	-34.5	0
+56	-34.5	0
+57	-34.5	0
+58	-34.5	0
+59	-34.5	0
+60	-34.5	0
+61	-34.5	0
+62	-34.5	0
+63	-34.5	0
+64	-34.5	0
+65	-34.5	0
+66	-34.5	0
+67	-34.5	0
+68	-34.5	0
+69	-34.5	0
+70	-34.5	0
+71	-34.5	0
+72	-34.5	0
+73	-34.5	0
+74	-34.5	0
+75	-34.5	0
+76	-34.5	0
+77	-34.5	0
+78	-34.5	0
+79	-34.5	0
+80	-34.5	0
+81	-34.5	0
+82	-34.5	0
+83	-34.5	0
+84	-34.5	0
+85	-34.5	0
+86	-34.5	0
+87	-34.5	0
+88	-34.5	0
+89	-34.5	0
+90	-34.5	0
+91	-34.5	0
+92	-34.5	0
+93	-34.5	0
+94	-34.5	0
+95	-34.5	0
+96	-34.5	0
+97	-34.5	0
+98	-34.5	0
+99	-34.5	0
+100	-34.5	0
+101	-34.5	0
+102	-34.5	0
+103	-34.5	0
+104	-34.5	0
+105	-34.5	0
+106	-34.5	0
+107	-34.5	0
+108	-34.5	0
+109	-34.5	0
+110	-34.5	0
+111	-34.5	0
+112	-34.5	0
+113	-34.5	0
+114	-34.5	0
+115	-34.5	0
+116	-34.5	0
+117	-34.5	0
+118	-34.5	0
+119	-34.5	0
+120	-34.5	0
+121	-34.5	0
+122	-34.5	0
+123	-34.5	0
+124	-34.5	0
+125	-34.5	0
+126	-34.5	0
+127	-34.5	0
+128	-34.5	0
+129	-34.5	0
+130	-34.5	0
+131	-34.5	0
+132	-34.5	0
+133	-34.5	0
+134	-34.5	0
+135	-34.5	0
+136	-34.5	0
+137	-34.5	0
+138	-34.5	0
+139	-34.5	0
+140	-34.5	0
+141	-34.5	0
+142	-34.5	0
+143	-34.5	0
+144	-34.5	0
+145	-34.5	0
+146	-34.5	0
+147	-34.5	0
+148	-34.5	0
+149	-34.5	0
+150	-34.5	0
+151	-34.5	0
+152	-34.5	0
+153	-34.5	0
+154	-34.5	0
+155	-34.5	0
+156	-34.5	0
+157	-34.5	0
+158	-34.5	0
+159	-34.5	0
+160	-34.5	0
+161	-34.5	0
+162	-34.5	0
+163	-34.5	0
+164	-34.5	0
+165	-34.5	0
+166	-34.5	0
+167	-34.5	0
+168	-34.5	0
+169	-34.5	0
+170	-34.5	0
+171	-34.5	0
+172	-34.5	0
+173	-34.5	0
+174	-34.5	0
+175	-34.5	0
+176	-34.5	0
+177	-34.5	0
+178	-34.5	0
+179	-34.5	0
+180	-34.5	0
+181	-34.5	0
+182	-34.5	0
+183	-34.5	0
+184	-34.5	0
+185	-34.5	0
+186	-34.5	0
+187	-34.5	0
+188	-34.5	0
+189	-34.5	0
+190	-34.5	0
+191	-34.5	0
+192	-34.5	0
+193	-34.5	0
+194	-34.5	0
+195	-34.5	0
+196	-34.5	0
+197	-34.5	0
+198	-34.5	0
+199	-34.5	0
+200	-34.5	0
+201	-34.5	0
+202	-34.5	0
+203	-34.5	0
+204	-34.5	0
+205	-34.5	0
+206	-34.5	0
+207	-34.5	0
+208	-34.5	0
+209	-34.5	0
+210	-34.5	0
+211	-34.5	0
+212	-34.5	0
+213	-34.5	0
+214	-34.5	0
+215	-34.5	0
+216	-34.5	0
+217	-34.5	0
+218	-34.5	0
+219	-34.5	0
+220	-34.5	0
+221	-34.5	0
+222	-34.5	0
+223	-34.5	0
+224	-34.5	0
+225	-34.5	0
+226	-34.5	0
+227	-34.5	0
+228	-34.5	0
+229	-34.5	0
+230	-34.5	0
+231	-34.5	0
+232	-34.5	0
+233	-34.5	0
+234	-34.5	0
+235	-34.5	0
+236	-34.5	0
+237	-34.5	0
+238	-34.5	0
+239	-34.5	0
+240	-34.5	0
+241	-34.5	0
+242	-34.5	0
+243	-34.5	0
+244	-34.5	0
+245	-34.5	0
+246	-34.5	0
+247	-34.5	0
+248	-34.5	0
+249	-34.5	0
+250	-34.5	0
+251	-34.5	0
+252	-34.5	0
+253	-34.5	0
+254	-34.5	0
+255	-34.5	0
+256	-34.5	0
+257	-34.5	0
+258	-34.5	0
+259	-34.5	0
+260	-34.5	0
+261	-34.5	0
+262	-34.5	0
+263	-34.5	0
+264	-34.5	0
+265	-34.5	0
+266	-34.5	0
+267	-34.5	0
+268	-34.5	0
+269	-34.5	0
+270	-34.5	0
+271	-34.5	0
+272	-34.5	0
+273	-34.5	0
+274	-34.5	0
+275	-34.5	0
+276	-34.5	0
+277	-34.5	0
+278	-34.5	0
+279	-34.5	0
+280	-34.5	0
+281	-34.5	0
+282	-34.5	0
+283	-34.5	0
+284	-34.5	0
+285	-34.5	0
+286	-34.5	0
+287	-34.5	0
+288	-34.5	0
+289	-34.5	0
+290	-34.5	0
+291	-34.5	0
+292	-34.5	0
+293	-34.5	0
+294	-34.5	0
+295	-34.5	0
+296	-34.5	0
+297	-34.5	0
+298	-34.5	0
+299	-34.5	0
+300	-34.5	0
+301	-34.5	0
+302	-34.5	0
+303	-34.5	0
+304	-34.5	0
+305	-34.5	0
+306	-34.5	0
+307	-34.5	0
+308	-34.5	0
+309	-34.5	0
+310	-34.5	0
+311	-34.5	0
+312	-34.5	0
+313	-34.5	0
+314	-34.5	0
+315	-34.5	0
+316	-34.5	0
+317	-34.5	0
+318	-34.5	0
+319	-34.5	0
+320	-34.5	0
+321	-34.5	0
+322	-34.5	0
+323	-34.5	0
+324	-34.5	0
+325	-34.5	0
+326	-34.5	0
+327	-34.5	0
+328	-34.5	0
+329	-34.5	0
+330	-34.5	0
+331	-34.5	0
+332	-34.5	0
+333	-34.5	0
+334	-34.5	0
+335	-34.5	0
+336	-34.5	0
+337	-34.5	0
+338	-34.5	0
+339	-34.5	0
+340	-34.5	0
+341	-34.5	0
+342	-34.5	0
+343	-34.5	0
+344	-34.5	0
+345	-34.5	0
+346	-34.5	0
+347	-34.5	0
+348	-34.5	0
+349	-34.5	0
+350	-34.5	0
+351	-34.5	0
+352	-34.5	0
+353	-34.5	0
+354	-34.5	0
+355	-34.5	0
+356	-34.5	0
+357	-34.5	0
+358	-34.5	0
+359	-34.5	0
+360	-34.5	0
+0	-34	0
+1	-34	0
+2	-34	0
+3	-34	0
+4	-34	0
+5	-34	0
+6	-34	0
+7	-34	0
+8	-34	0
+9	-34	0
+10	-34	0
+11	-34	0
+12	-34	0
+13	-34	0
+14	-34	0
+15	-34	0
+16	-34	0
+17	-34	0
+18	-34	0
+19	-34	0
+20	-34	0
+21	-34	0
+22	-34	0
+23	-34	0
+24	-34	0
+25	-34	0
+26	-34	0
+27	-34	0
+28	-34	0
+29	-34	0
+30	-34	0
+31	-34	0
+32	-34	0
+33	-34	0
+34	-34	0
+35	-34	0
+36	-34	0
+37	-34	0
+38	-34	0
+39	-34	0
+40	-34	0
+41	-34	0
+42	-34	0
+43	-34	0
+44	-34	0
+45	-34	0
+46	-34	0
+47	-34	0
+48	-34	0
+49	-34	0
+50	-34	0
+51	-34	0
+52	-34	0
+53	-34	0
+54	-34	0
+55	-34	0
+56	-34	0
+57	-34	0
+58	-34	0
+59	-34	0
+60	-34	0
+61	-34	0
+62	-34	0
+63	-34	0
+64	-34	0
+65	-34	0
+66	-34	0
+67	-34	0
+68	-34	0
+69	-34	0
+70	-34	0
+71	-34	0
+72	-34	0
+73	-34	0
+74	-34	0
+75	-34	0
+76	-34	0
+77	-34	0
+78	-34	0
+79	-34	0
+80	-34	0
+81	-34	0
+82	-34	0
+83	-34	0
+84	-34	0
+85	-34	0
+86	-34	0
+87	-34	0
+88	-34	0
+89	-34	0
+90	-34	0
+91	-34	0
+92	-34	0
+93	-34	0
+94	-34	0
+95	-34	0
+96	-34	0
+97	-34	0
+98	-34	0
+99	-34	0
+100	-34	0
+101	-34	0
+102	-34	0
+103	-34	0
+104	-34	0
+105	-34	0
+106	-34	0
+107	-34	0
+108	-34	0
+109	-34	0
+110	-34	0
+111	-34	0
+112	-34	0
+113	-34	0
+114	-34	0
+115	-34	0
+116	-34	0
+117	-34	0
+118	-34	0
+119	-34	0
+120	-34	0
+121	-34	0
+122	-34	0
+123	-34	0
+124	-34	0
+125	-34	0
+126	-34	0
+127	-34	0
+128	-34	0
+129	-34	0
+130	-34	0
+131	-34	0
+132	-34	0
+133	-34	0
+134	-34	0
+135	-34	0
+136	-34	0
+137	-34	0
+138	-34	0
+139	-34	0
+140	-34	0
+141	-34	0
+142	-34	0
+143	-34	0
+144	-34	0
+145	-34	0
+146	-34	0
+147	-34	0
+148	-34	0
+149	-34	0
+150	-34	0
+151	-34	0
+152	-34	0
+153	-34	0
+154	-34	0
+155	-34	0
+156	-34	0
+157	-34	0
+158	-34	0
+159	-34	0
+160	-34	0
+161	-34	0
+162	-34	0
+163	-34	0
+164	-34	0
+165	-34	0
+166	-34	0
+167	-34	0
+168	-34	0
+169	-34	0
+170	-34	0
+171	-34	0
+172	-34	0
+173	-34	0
+174	-34	0
+175	-34	0
+176	-34	0
+177	-34	0
+178	-34	0
+179	-34	0
+180	-34	0
+181	-34	0
+182	-34	0
+183	-34	0
+184	-34	0
+185	-34	0
+186	-34	0
+187	-34	0
+188	-34	0
+189	-34	0
+190	-34	0
+191	-34	0
+192	-34	0
+193	-34	0
+194	-34	0
+195	-34	0
+196	-34	0
+197	-34	0
+198	-34	0
+199	-34	0
+200	-34	0
+201	-34	0
+202	-34	0
+203	-34	0
+204	-34	0
+205	-34	0
+206	-34	0
+207	-34	0
+208	-34	0
+209	-34	0
+210	-34	0
+211	-34	0
+212	-34	0
+213	-34	0
+214	-34	0
+215	-34	0
+216	-34	0
+217	-34	0
+218	-34	0
+219	-34	0
+220	-34	0
+221	-34	0
+222	-34	0
+223	-34	0
+224	-34	0
+225	-34	0
+226	-34	0
+227	-34	0
+228	-34	0
+229	-34	0
+230	-34	0
+231	-34	0
+232	-34	0
+233	-34	0
+234	-34	0
+235	-34	0
+236	-34	0
+237	-34	0
+238	-34	0
+239	-34	0
+240	-34	0
+241	-34	0
+242	-34	0
+243	-34	0
+244	-34	0
+245	-34	0
+246	-34	0
+247	-34	0
+248	-34	0
+249	-34	0
+250	-34	0
+251	-34	0
+252	-34	0
+253	-34	0
+254	-34	0
+255	-34	0
+256	-34	0
+257	-34	0
+258	-34	0
+259	-34	0
+260	-34	0
+261	-34	0
+262	-34	0
+263	-34	0
+264	-34	0
+265	-34	0
+266	-34	0
+267	-34	0
+268	-34	0
+269	-34	0
+270	-34	0
+271	-34	0
+272	-34	0
+273	-34	0
+274	-34	0
+275	-34	0
+276	-34	0
+277	-34	0
+278	-34	0
+279	-34	0
+280	-34	0
+281	-34	0
+282	-34	0
+283	-34	0
+284	-34	0
+285	-34	0
+286	-34	0
+287	-34	0
+288	-34	0
+289	-34	0
+290	-34	0
+291	-34	0
+292	-34	0
+293	-34	0
+294	-34	0
+295	-34	0
+296	-34	0
+297	-34	0
+298	-34	0
+299	-34	0
+300	-34	0
+301	-34	0
+302	-34	0
+303	-34	0
+304	-34	0
+305	-34	0
+306	-34	0
+307	-34	0
+308	-34	0
+309	-34	0
+310	-34	0
+311	-34	0
+312	-34	0
+313	-34	0
+314	-34	0
+315	-34	0
+316	-34	0
+317	-34	0
+318	-34	0
+319	-34	0
+320	-34	0
+321	-34	0
+322	-34	0
+323	-34	0
+324	-34	0
+325	-34	0
+326	-34	0
+327	-34	0
+328	-34	0
+329	-34	0
+330	-34	0
+331	-34	0
+332	-34	0
+333	-34	0
+334	-34	0
+335	-34	0
+336	-34	0
+337	-34	0
+338	-34	0
+339	-34	0
+340	-34	0
+341	-34	0
+342	-34	0
+343	-34	0
+344	-34	0
+345	-34	0
+346	-34	0
+347	-34	0
+348	-34	0
+349	-34	0
+350	-34	0
+351	-34	0
+352	-34	0
+353	-34	0
+354	-34	0
+355	-34	0
+356	-34	0
+357	-34	0
+358	-34	0
+359	-34	0
+360	-34	0
+0	-33.5	0
+1	-33.5	0
+2	-33.5	0
+3	-33.5	0
+4	-33.5	0
+5	-33.5	0
+6	-33.5	0
+7	-33.5	0
+8	-33.5	0
+9	-33.5	0
+10	-33.5	0
+11	-33.5	0
+12	-33.5	0
+13	-33.5	0
+14	-33.5	0
+15	-33.5	0
+16	-33.5	0
+17	-33.5	0
+18	-33.5	0
+19	-33.5	0
+20	-33.5	0
+21	-33.5	0
+22	-33.5	0
+23	-33.5	0
+24	-33.5	0
+25	-33.5	0
+26	-33.5	0
+27	-33.5	0
+28	-33.5	0
+29	-33.5	0
+30	-33.5	0
+31	-33.5	0
+32	-33.5	0
+33	-33.5	0
+34	-33.5	0
+35	-33.5	0
+36	-33.5	0
+37	-33.5	0
+38	-33.5	0
+39	-33.5	0
+40	-33.5	0
+41	-33.5	0
+42	-33.5	0
+43	-33.5	0
+44	-33.5	0
+45	-33.5	0
+46	-33.5	0
+47	-33.5	0
+48	-33.5	0
+49	-33.5	0
+50	-33.5	0
+51	-33.5	0
+52	-33.5	0
+53	-33.5	0
+54	-33.5	0
+55	-33.5	0
+56	-33.5	0
+57	-33.5	0
+58	-33.5	0
+59	-33.5	0
+60	-33.5	0
+61	-33.5	0
+62	-33.5	0
+63	-33.5	0
+64	-33.5	0
+65	-33.5	0
+66	-33.5	0
+67	-33.5	0
+68	-33.5	0
+69	-33.5	0
+70	-33.5	0
+71	-33.5	0
+72	-33.5	0
+73	-33.5	0
+74	-33.5	0
+75	-33.5	0
+76	-33.5	0
+77	-33.5	0
+78	-33.5	0
+79	-33.5	0
+80	-33.5	0
+81	-33.5	0
+82	-33.5	0
+83	-33.5	0
+84	-33.5	0
+85	-33.5	0
+86	-33.5	0
+87	-33.5	0
+88	-33.5	0
+89	-33.5	0
+90	-33.5	0
+91	-33.5	0
+92	-33.5	0
+93	-33.5	0
+94	-33.5	0
+95	-33.5	0
+96	-33.5	0
+97	-33.5	0
+98	-33.5	0
+99	-33.5	0
+100	-33.5	0
+101	-33.5	0
+102	-33.5	0
+103	-33.5	0
+104	-33.5	0
+105	-33.5	0
+106	-33.5	0
+107	-33.5	0
+108	-33.5	0
+109	-33.5	0
+110	-33.5	0
+111	-33.5	0
+112	-33.5	0
+113	-33.5	0
+114	-33.5	0
+115	-33.5	0
+116	-33.5	0
+117	-33.5	0
+118	-33.5	0
+119	-33.5	0
+120	-33.5	0
+121	-33.5	0
+122	-33.5	0
+123	-33.5	0
+124	-33.5	0
+125	-33.5	0
+126	-33.5	0
+127	-33.5	0
+128	-33.5	0
+129	-33.5	0
+130	-33.5	0
+131	-33.5	0
+132	-33.5	0
+133	-33.5	0
+134	-33.5	0
+135	-33.5	0
+136	-33.5	0
+137	-33.5	0
+138	-33.5	0
+139	-33.5	0
+140	-33.5	0
+141	-33.5	0
+142	-33.5	0
+143	-33.5	0
+144	-33.5	0
+145	-33.5	0
+146	-33.5	0
+147	-33.5	0
+148	-33.5	0
+149	-33.5	0
+150	-33.5	0
+151	-33.5	0
+152	-33.5	0
+153	-33.5	0
+154	-33.5	0
+155	-33.5	0
+156	-33.5	0
+157	-33.5	0
+158	-33.5	0
+159	-33.5	0
+160	-33.5	0
+161	-33.5	0
+162	-33.5	0
+163	-33.5	0
+164	-33.5	0
+165	-33.5	0
+166	-33.5	0
+167	-33.5	0
+168	-33.5	0
+169	-33.5	0
+170	-33.5	0
+171	-33.5	0
+172	-33.5	0
+173	-33.5	0
+174	-33.5	0
+175	-33.5	0
+176	-33.5	0
+177	-33.5	0
+178	-33.5	0
+179	-33.5	0
+180	-33.5	0
+181	-33.5	0
+182	-33.5	0
+183	-33.5	0
+184	-33.5	0
+185	-33.5	0
+186	-33.5	0
+187	-33.5	0
+188	-33.5	0
+189	-33.5	0
+190	-33.5	0
+191	-33.5	0
+192	-33.5	0
+193	-33.5	0
+194	-33.5	0
+195	-33.5	0
+196	-33.5	0
+197	-33.5	0
+198	-33.5	0
+199	-33.5	0
+200	-33.5	0
+201	-33.5	0
+202	-33.5	0
+203	-33.5	0
+204	-33.5	0
+205	-33.5	0
+206	-33.5	0
+207	-33.5	0
+208	-33.5	0
+209	-33.5	0
+210	-33.5	0
+211	-33.5	0
+212	-33.5	0
+213	-33.5	0
+214	-33.5	0
+215	-33.5	0
+216	-33.5	0
+217	-33.5	0
+218	-33.5	0
+219	-33.5	0
+220	-33.5	0
+221	-33.5	0
+222	-33.5	0
+223	-33.5	0
+224	-33.5	0
+225	-33.5	0
+226	-33.5	0
+227	-33.5	0
+228	-33.5	0
+229	-33.5	0
+230	-33.5	0
+231	-33.5	0
+232	-33.5	0
+233	-33.5	0
+234	-33.5	0
+235	-33.5	0
+236	-33.5	0
+237	-33.5	0
+238	-33.5	0
+239	-33.5	0
+240	-33.5	0
+241	-33.5	0
+242	-33.5	0
+243	-33.5	0
+244	-33.5	0
+245	-33.5	0
+246	-33.5	0
+247	-33.5	0
+248	-33.5	0
+249	-33.5	0
+250	-33.5	0
+251	-33.5	0
+252	-33.5	0
+253	-33.5	0
+254	-33.5	0
+255	-33.5	0
+256	-33.5	0
+257	-33.5	0
+258	-33.5	0
+259	-33.5	0
+260	-33.5	0
+261	-33.5	0
+262	-33.5	0
+263	-33.5	0
+264	-33.5	0
+265	-33.5	0
+266	-33.5	0
+267	-33.5	0
+268	-33.5	0
+269	-33.5	0
+270	-33.5	0
+271	-33.5	0
+272	-33.5	0
+273	-33.5	0
+274	-33.5	0
+275	-33.5	0
+276	-33.5	0
+277	-33.5	0
+278	-33.5	0
+279	-33.5	0
+280	-33.5	0
+281	-33.5	0
+282	-33.5	0
+283	-33.5	0
+284	-33.5	0
+285	-33.5	0
+286	-33.5	0
+287	-33.5	0
+288	-33.5	0
+289	-33.5	0
+290	-33.5	0
+291	-33.5	0
+292	-33.5	0
+293	-33.5	0
+294	-33.5	0
+295	-33.5	0
+296	-33.5	0
+297	-33.5	0
+298	-33.5	0
+299	-33.5	0
+300	-33.5	0
+301	-33.5	0
+302	-33.5	0
+303	-33.5	0
+304	-33.5	0
+305	-33.5	0
+306	-33.5	0
+307	-33.5	0
+308	-33.5	0
+309	-33.5	0
+310	-33.5	0
+311	-33.5	0
+312	-33.5	0
+313	-33.5	0
+314	-33.5	0
+315	-33.5	0
+316	-33.5	0
+317	-33.5	0
+318	-33.5	0
+319	-33.5	0
+320	-33.5	0
+321	-33.5	0
+322	-33.5	0
+323	-33.5	0
+324	-33.5	0
+325	-33.5	0
+326	-33.5	0
+327	-33.5	0
+328	-33.5	0
+329	-33.5	0
+330	-33.5	0
+331	-33.5	0
+332	-33.5	0
+333	-33.5	0
+334	-33.5	0
+335	-33.5	0
+336	-33.5	0
+337	-33.5	0
+338	-33.5	0
+339	-33.5	0
+340	-33.5	0
+341	-33.5	0
+342	-33.5	0
+343	-33.5	0
+344	-33.5	0
+345	-33.5	0
+346	-33.5	0
+347	-33.5	0
+348	-33.5	0
+349	-33.5	0
+350	-33.5	0
+351	-33.5	0
+352	-33.5	0
+353	-33.5	0
+354	-33.5	0
+355	-33.5	0
+356	-33.5	0
+357	-33.5	0
+358	-33.5	0
+359	-33.5	0
+360	-33.5	0
+0	-33	0
+1	-33	0
+2	-33	0
+3	-33	0
+4	-33	0
+5	-33	0
+6	-33	0
+7	-33	0
+8	-33	0
+9	-33	0
+10	-33	0
+11	-33	0
+12	-33	0
+13	-33	0
+14	-33	0
+15	-33	0
+16	-33	0
+17	-33	0
+18	-33	0
+19	-33	0
+20	-33	0
+21	-33	0
+22	-33	0
+23	-33	0
+24	-33	0
+25	-33	0
+26	-33	0
+27	-33	0
+28	-33	0
+29	-33	0
+30	-33	0
+31	-33	0
+32	-33	0
+33	-33	0
+34	-33	0
+35	-33	0
+36	-33	0
+37	-33	0
+38	-33	0
+39	-33	0
+40	-33	0
+41	-33	0
+42	-33	0
+43	-33	0
+44	-33	0
+45	-33	0
+46	-33	0
+47	-33	0
+48	-33	0
+49	-33	0
+50	-33	0
+51	-33	0
+52	-33	0
+53	-33	0
+54	-33	0
+55	-33	0
+56	-33	0
+57	-33	0
+58	-33	0
+59	-33	0
+60	-33	0
+61	-33	0
+62	-33	0
+63	-33	0
+64	-33	0
+65	-33	0
+66	-33	0
+67	-33	0
+68	-33	0
+69	-33	0
+70	-33	0
+71	-33	0
+72	-33	0
+73	-33	0
+74	-33	0
+75	-33	0
+76	-33	0
+77	-33	0
+78	-33	0
+79	-33	0
+80	-33	0
+81	-33	0
+82	-33	0
+83	-33	0
+84	-33	0
+85	-33	0
+86	-33	0
+87	-33	0
+88	-33	0
+89	-33	0
+90	-33	0
+91	-33	0
+92	-33	0
+93	-33	0
+94	-33	0
+95	-33	0
+96	-33	0
+97	-33	0
+98	-33	0
+99	-33	0
+100	-33	0
+101	-33	0
+102	-33	0
+103	-33	0
+104	-33	0
+105	-33	0
+106	-33	0
+107	-33	0
+108	-33	0
+109	-33	0
+110	-33	0
+111	-33	0
+112	-33	0
+113	-33	0
+114	-33	0
+115	-33	0
+116	-33	0
+117	-33	0
+118	-33	0
+119	-33	0
+120	-33	0
+121	-33	0
+122	-33	0
+123	-33	0
+124	-33	0
+125	-33	0
+126	-33	0
+127	-33	0
+128	-33	0
+129	-33	0
+130	-33	0
+131	-33	0
+132	-33	0
+133	-33	0
+134	-33	0
+135	-33	0
+136	-33	0
+137	-33	0
+138	-33	0
+139	-33	0
+140	-33	0
+141	-33	0
+142	-33	0
+143	-33	0
+144	-33	0
+145	-33	0
+146	-33	0
+147	-33	0
+148	-33	0
+149	-33	0
+150	-33	0
+151	-33	0
+152	-33	0
+153	-33	0
+154	-33	0
+155	-33	0
+156	-33	0
+157	-33	0
+158	-33	0
+159	-33	0
+160	-33	0
+161	-33	0
+162	-33	0
+163	-33	0
+164	-33	0
+165	-33	0
+166	-33	0
+167	-33	0
+168	-33	0
+169	-33	0
+170	-33	0
+171	-33	0
+172	-33	0
+173	-33	0
+174	-33	0
+175	-33	0
+176	-33	0
+177	-33	0
+178	-33	0
+179	-33	0
+180	-33	0
+181	-33	0
+182	-33	0
+183	-33	0
+184	-33	0
+185	-33	0
+186	-33	0
+187	-33	0
+188	-33	0
+189	-33	0
+190	-33	0
+191	-33	0
+192	-33	0
+193	-33	0
+194	-33	0
+195	-33	0
+196	-33	0
+197	-33	0
+198	-33	0
+199	-33	0
+200	-33	0
+201	-33	0
+202	-33	0
+203	-33	0
+204	-33	0
+205	-33	0
+206	-33	0
+207	-33	0
+208	-33	0
+209	-33	0
+210	-33	0
+211	-33	0
+212	-33	0
+213	-33	0
+214	-33	0
+215	-33	0
+216	-33	0
+217	-33	0
+218	-33	0
+219	-33	0
+220	-33	0
+221	-33	0
+222	-33	0
+223	-33	0
+224	-33	0
+225	-33	0
+226	-33	0
+227	-33	0
+228	-33	0
+229	-33	0
+230	-33	0
+231	-33	0
+232	-33	0
+233	-33	0
+234	-33	0
+235	-33	0
+236	-33	0
+237	-33	0
+238	-33	0
+239	-33	0
+240	-33	0
+241	-33	0
+242	-33	0
+243	-33	0
+244	-33	0
+245	-33	0
+246	-33	0
+247	-33	0
+248	-33	0
+249	-33	0
+250	-33	0
+251	-33	0
+252	-33	0
+253	-33	0
+254	-33	0
+255	-33	0
+256	-33	0
+257	-33	0
+258	-33	0
+259	-33	0
+260	-33	0
+261	-33	0
+262	-33	0
+263	-33	0
+264	-33	0
+265	-33	0
+266	-33	0
+267	-33	0
+268	-33	0
+269	-33	0
+270	-33	0
+271	-33	0
+272	-33	0
+273	-33	0
+274	-33	0
+275	-33	0
+276	-33	0
+277	-33	0
+278	-33	0
+279	-33	0
+280	-33	0
+281	-33	0
+282	-33	0
+283	-33	0
+284	-33	0
+285	-33	0
+286	-33	0
+287	-33	0
+288	-33	0
+289	-33	0
+290	-33	0
+291	-33	0
+292	-33	0
+293	-33	0
+294	-33	0
+295	-33	0
+296	-33	0
+297	-33	0
+298	-33	0
+299	-33	0
+300	-33	0
+301	-33	0
+302	-33	0
+303	-33	0
+304	-33	0
+305	-33	0
+306	-33	0
+307	-33	0
+308	-33	0
+309	-33	0
+310	-33	0
+311	-33	0
+312	-33	0
+313	-33	0
+314	-33	0
+315	-33	0
+316	-33	0
+317	-33	0
+318	-33	0
+319	-33	0
+320	-33	0
+321	-33	0
+322	-33	0
+323	-33	0
+324	-33	0
+325	-33	0
+326	-33	0
+327	-33	0
+328	-33	0
+329	-33	0
+330	-33	0
+331	-33	0
+332	-33	0
+333	-33	0
+334	-33	0
+335	-33	0
+336	-33	0
+337	-33	0
+338	-33	0
+339	-33	0
+340	-33	0
+341	-33	0
+342	-33	0
+343	-33	0
+344	-33	0
+345	-33	0
+346	-33	0
+347	-33	0
+348	-33	0
+349	-33	0
+350	-33	0
+351	-33	0
+352	-33	0
+353	-33	0
+354	-33	0
+355	-33	0
+356	-33	0
+357	-33	0
+358	-33	0
+359	-33	0
+360	-33	0
+0	-32.5	0
+1	-32.5	0
+2	-32.5	0
+3	-32.5	0
+4	-32.5	0
+5	-32.5	0
+6	-32.5	0
+7	-32.5	0
+8	-32.5	0
+9	-32.5	0
+10	-32.5	0
+11	-32.5	0
+12	-32.5	0
+13	-32.5	0
+14	-32.5	0
+15	-32.5	0
+16	-32.5	0
+17	-32.5	0
+18	-32.5	0
+19	-32.5	0
+20	-32.5	0
+21	-32.5	0
+22	-32.5	0
+23	-32.5	0
+24	-32.5	0
+25	-32.5	0
+26	-32.5	0
+27	-32.5	0
+28	-32.5	0
+29	-32.5	0
+30	-32.5	0
+31	-32.5	0
+32	-32.5	0
+33	-32.5	0
+34	-32.5	0
+35	-32.5	0
+36	-32.5	0
+37	-32.5	0
+38	-32.5	0
+39	-32.5	0
+40	-32.5	0
+41	-32.5	0
+42	-32.5	0
+43	-32.5	0
+44	-32.5	0
+45	-32.5	0
+46	-32.5	0
+47	-32.5	0
+48	-32.5	0
+49	-32.5	0
+50	-32.5	0
+51	-32.5	0
+52	-32.5	0
+53	-32.5	0
+54	-32.5	0
+55	-32.5	0
+56	-32.5	0
+57	-32.5	0
+58	-32.5	0
+59	-32.5	0
+60	-32.5	0
+61	-32.5	0
+62	-32.5	0
+63	-32.5	0
+64	-32.5	0
+65	-32.5	0
+66	-32.5	0
+67	-32.5	0
+68	-32.5	0
+69	-32.5	0
+70	-32.5	0
+71	-32.5	0
+72	-32.5	0
+73	-32.5	0
+74	-32.5	0
+75	-32.5	0
+76	-32.5	0
+77	-32.5	0
+78	-32.5	0
+79	-32.5	0
+80	-32.5	0
+81	-32.5	0
+82	-32.5	0
+83	-32.5	0
+84	-32.5	0
+85	-32.5	0
+86	-32.5	0
+87	-32.5	0
+88	-32.5	0
+89	-32.5	0
+90	-32.5	0
+91	-32.5	0
+92	-32.5	0
+93	-32.5	0
+94	-32.5	0
+95	-32.5	0
+96	-32.5	0
+97	-32.5	0
+98	-32.5	0
+99	-32.5	0
+100	-32.5	0
+101	-32.5	0
+102	-32.5	0
+103	-32.5	0
+104	-32.5	0
+105	-32.5	0
+106	-32.5	0
+107	-32.5	0
+108	-32.5	0
+109	-32.5	0
+110	-32.5	0
+111	-32.5	0
+112	-32.5	0
+113	-32.5	0
+114	-32.5	0
+115	-32.5	0
+116	-32.5	0
+117	-32.5	0
+118	-32.5	0
+119	-32.5	0
+120	-32.5	0
+121	-32.5	0
+122	-32.5	0
+123	-32.5	0
+124	-32.5	0
+125	-32.5	0
+126	-32.5	0
+127	-32.5	0
+128	-32.5	0
+129	-32.5	0
+130	-32.5	0
+131	-32.5	0
+132	-32.5	0
+133	-32.5	0
+134	-32.5	0
+135	-32.5	0
+136	-32.5	0
+137	-32.5	0
+138	-32.5	0
+139	-32.5	0
+140	-32.5	0
+141	-32.5	0
+142	-32.5	0
+143	-32.5	0
+144	-32.5	0
+145	-32.5	0
+146	-32.5	0
+147	-32.5	0
+148	-32.5	0
+149	-32.5	0
+150	-32.5	0
+151	-32.5	0
+152	-32.5	0
+153	-32.5	0
+154	-32.5	0
+155	-32.5	0
+156	-32.5	0
+157	-32.5	0
+158	-32.5	0
+159	-32.5	0
+160	-32.5	0
+161	-32.5	0
+162	-32.5	0
+163	-32.5	0
+164	-32.5	0
+165	-32.5	0
+166	-32.5	0
+167	-32.5	0
+168	-32.5	0
+169	-32.5	0
+170	-32.5	0
+171	-32.5	0
+172	-32.5	0
+173	-32.5	0
+174	-32.5	0
+175	-32.5	0
+176	-32.5	0
+177	-32.5	0
+178	-32.5	0
+179	-32.5	0
+180	-32.5	0
+181	-32.5	0
+182	-32.5	0
+183	-32.5	0
+184	-32.5	0
+185	-32.5	0
+186	-32.5	0
+187	-32.5	0
+188	-32.5	0
+189	-32.5	0
+190	-32.5	0
+191	-32.5	0
+192	-32.5	0
+193	-32.5	0
+194	-32.5	0
+195	-32.5	0
+196	-32.5	0
+197	-32.5	0
+198	-32.5	0
+199	-32.5	0
+200	-32.5	0
+201	-32.5	0
+202	-32.5	0
+203	-32.5	0
+204	-32.5	0
+205	-32.5	0
+206	-32.5	0
+207	-32.5	0
+208	-32.5	0
+209	-32.5	0
+210	-32.5	0
+211	-32.5	0
+212	-32.5	0
+213	-32.5	0
+214	-32.5	0
+215	-32.5	0
+216	-32.5	0
+217	-32.5	0
+218	-32.5	0
+219	-32.5	0
+220	-32.5	0
+221	-32.5	0
+222	-32.5	0
+223	-32.5	0
+224	-32.5	0
+225	-32.5	0
+226	-32.5	0
+227	-32.5	0
+228	-32.5	0
+229	-32.5	0
+230	-32.5	0
+231	-32.5	0
+232	-32.5	0
+233	-32.5	0
+234	-32.5	0
+235	-32.5	0
+236	-32.5	0
+237	-32.5	0
+238	-32.5	0
+239	-32.5	0
+240	-32.5	0
+241	-32.5	0
+242	-32.5	0
+243	-32.5	0
+244	-32.5	0
+245	-32.5	0
+246	-32.5	0
+247	-32.5	0
+248	-32.5	0
+249	-32.5	0
+250	-32.5	0
+251	-32.5	0
+252	-32.5	0
+253	-32.5	0
+254	-32.5	0
+255	-32.5	0
+256	-32.5	0
+257	-32.5	0
+258	-32.5	0
+259	-32.5	0
+260	-32.5	0
+261	-32.5	0
+262	-32.5	0
+263	-32.5	0
+264	-32.5	0
+265	-32.5	0
+266	-32.5	0
+267	-32.5	0
+268	-32.5	0
+269	-32.5	0
+270	-32.5	0
+271	-32.5	0
+272	-32.5	0
+273	-32.5	0
+274	-32.5	0
+275	-32.5	0
+276	-32.5	0
+277	-32.5	0
+278	-32.5	0
+279	-32.5	0
+280	-32.5	0
+281	-32.5	0
+282	-32.5	0
+283	-32.5	0
+284	-32.5	0
+285	-32.5	0
+286	-32.5	0
+287	-32.5	0
+288	-32.5	0
+289	-32.5	0
+290	-32.5	0
+291	-32.5	0
+292	-32.5	0
+293	-32.5	0
+294	-32.5	0
+295	-32.5	0
+296	-32.5	0
+297	-32.5	0
+298	-32.5	0
+299	-32.5	0
+300	-32.5	0
+301	-32.5	0
+302	-32.5	0
+303	-32.5	0
+304	-32.5	0
+305	-32.5	0
+306	-32.5	0
+307	-32.5	0
+308	-32.5	0
+309	-32.5	0
+310	-32.5	0
+311	-32.5	0
+312	-32.5	0
+313	-32.5	0
+314	-32.5	0
+315	-32.5	0
+316	-32.5	0
+317	-32.5	0
+318	-32.5	0
+319	-32.5	0
+320	-32.5	0
+321	-32.5	0
+322	-32.5	0
+323	-32.5	0
+324	-32.5	0
+325	-32.5	0
+326	-32.5	0
+327	-32.5	0
+328	-32.5	0
+329	-32.5	0
+330	-32.5	0
+331	-32.5	0
+332	-32.5	0
+333	-32.5	0
+334	-32.5	0
+335	-32.5	0
+336	-32.5	0
+337	-32.5	0
+338	-32.5	0
+339	-32.5	0
+340	-32.5	0
+341	-32.5	0
+342	-32.5	0
+343	-32.5	0
+344	-32.5	0
+345	-32.5	0
+346	-32.5	0
+347	-32.5	0
+348	-32.5	0
+349	-32.5	0
+350	-32.5	0
+351	-32.5	0
+352	-32.5	0
+353	-32.5	0
+354	-32.5	0
+355	-32.5	0
+356	-32.5	0
+357	-32.5	0
+358	-32.5	0
+359	-32.5	0
+360	-32.5	0
+0	-32	0
+1	-32	0
+2	-32	0
+3	-32	0
+4	-32	0
+5	-32	0
+6	-32	0
+7	-32	0
+8	-32	0
+9	-32	0
+10	-32	0
+11	-32	0
+12	-32	0
+13	-32	0
+14	-32	0
+15	-32	0
+16	-32	0
+17	-32	0
+18	-32	0
+19	-32	0
+20	-32	0
+21	-32	0
+22	-32	0
+23	-32	0
+24	-32	0
+25	-32	0
+26	-32	0
+27	-32	0
+28	-32	0
+29	-32	0
+30	-32	0
+31	-32	0
+32	-32	0
+33	-32	0
+34	-32	0
+35	-32	0
+36	-32	0
+37	-32	0
+38	-32	0
+39	-32	0
+40	-32	0
+41	-32	0
+42	-32	0
+43	-32	0
+44	-32	0
+45	-32	0
+46	-32	0
+47	-32	0
+48	-32	0
+49	-32	0
+50	-32	0
+51	-32	0
+52	-32	0
+53	-32	0
+54	-32	0
+55	-32	0
+56	-32	0
+57	-32	0
+58	-32	0
+59	-32	0
+60	-32	0
+61	-32	0
+62	-32	0
+63	-32	0
+64	-32	0
+65	-32	0
+66	-32	0
+67	-32	0
+68	-32	0
+69	-32	0
+70	-32	0
+71	-32	0
+72	-32	0
+73	-32	0
+74	-32	0
+75	-32	0
+76	-32	0
+77	-32	0
+78	-32	0
+79	-32	0
+80	-32	0
+81	-32	0
+82	-32	0
+83	-32	0
+84	-32	0
+85	-32	0
+86	-32	0
+87	-32	0
+88	-32	0
+89	-32	0
+90	-32	0
+91	-32	0
+92	-32	0
+93	-32	0
+94	-32	0
+95	-32	0
+96	-32	0
+97	-32	0
+98	-32	0
+99	-32	0
+100	-32	0
+101	-32	0
+102	-32	0
+103	-32	0
+104	-32	0
+105	-32	0
+106	-32	0
+107	-32	0
+108	-32	0
+109	-32	0
+110	-32	0
+111	-32	0
+112	-32	0
+113	-32	0
+114	-32	0
+115	-32	0
+116	-32	0
+117	-32	0
+118	-32	0
+119	-32	0
+120	-32	0
+121	-32	0
+122	-32	0
+123	-32	0
+124	-32	0
+125	-32	0
+126	-32	0
+127	-32	0
+128	-32	0
+129	-32	0
+130	-32	0
+131	-32	0
+132	-32	0
+133	-32	0
+134	-32	0
+135	-32	0
+136	-32	0
+137	-32	0
+138	-32	0
+139	-32	0
+140	-32	0
+141	-32	0
+142	-32	0
+143	-32	0
+144	-32	0
+145	-32	0
+146	-32	0
+147	-32	0
+148	-32	0
+149	-32	0
+150	-32	0
+151	-32	0
+152	-32	0
+153	-32	0
+154	-32	0
+155	-32	0
+156	-32	0
+157	-32	0
+158	-32	0
+159	-32	0
+160	-32	0
+161	-32	0
+162	-32	0
+163	-32	0
+164	-32	0
+165	-32	0
+166	-32	0
+167	-32	0
+168	-32	0
+169	-32	0
+170	-32	0
+171	-32	0
+172	-32	0
+173	-32	0
+174	-32	0
+175	-32	0
+176	-32	0
+177	-32	0
+178	-32	0
+179	-32	0
+180	-32	0
+181	-32	0
+182	-32	0
+183	-32	0
+184	-32	0
+185	-32	0
+186	-32	0
+187	-32	0
+188	-32	0
+189	-32	0
+190	-32	0
+191	-32	0
+192	-32	0
+193	-32	0
+194	-32	0
+195	-32	0
+196	-32	0
+197	-32	0
+198	-32	0
+199	-32	0
+200	-32	0
+201	-32	0
+202	-32	0
+203	-32	0
+204	-32	0
+205	-32	0
+206	-32	0
+207	-32	0
+208	-32	0
+209	-32	0
+210	-32	0
+211	-32	0
+212	-32	0
+213	-32	0
+214	-32	0
+215	-32	0
+216	-32	0
+217	-32	0
+218	-32	0
+219	-32	0
+220	-32	0
+221	-32	0
+222	-32	0
+223	-32	0
+224	-32	0
+225	-32	0
+226	-32	0
+227	-32	0
+228	-32	0
+229	-32	0
+230	-32	0
+231	-32	0
+232	-32	0
+233	-32	0
+234	-32	0
+235	-32	0
+236	-32	0
+237	-32	0
+238	-32	0
+239	-32	0
+240	-32	0
+241	-32	0
+242	-32	0
+243	-32	0
+244	-32	0
+245	-32	0
+246	-32	0
+247	-32	0
+248	-32	0
+249	-32	0
+250	-32	0
+251	-32	0
+252	-32	0
+253	-32	0
+254	-32	0
+255	-32	0
+256	-32	0
+257	-32	0
+258	-32	0
+259	-32	0
+260	-32	0
+261	-32	0
+262	-32	0
+263	-32	0
+264	-32	0
+265	-32	0
+266	-32	0
+267	-32	0
+268	-32	0
+269	-32	0
+270	-32	0
+271	-32	0
+272	-32	0
+273	-32	0
+274	-32	0
+275	-32	0
+276	-32	0
+277	-32	0
+278	-32	0
+279	-32	0
+280	-32	0
+281	-32	0
+282	-32	0
+283	-32	0
+284	-32	0
+285	-32	0
+286	-32	0
+287	-32	0
+288	-32	0
+289	-32	0
+290	-32	0
+291	-32	0
+292	-32	0
+293	-32	0
+294	-32	0
+295	-32	0
+296	-32	0
+297	-32	0
+298	-32	0
+299	-32	0
+300	-32	0
+301	-32	0
+302	-32	0
+303	-32	0
+304	-32	0
+305	-32	0
+306	-32	0
+307	-32	0
+308	-32	0
+309	-32	0
+310	-32	0
+311	-32	0
+312	-32	0
+313	-32	0
+314	-32	0
+315	-32	0
+316	-32	0
+317	-32	0
+318	-32	0
+319	-32	0
+320	-32	0
+321	-32	0
+322	-32	0
+323	-32	0
+324	-32	0
+325	-32	0
+326	-32	0
+327	-32	0
+328	-32	0
+329	-32	0
+330	-32	0
+331	-32	0
+332	-32	0
+333	-32	0
+334	-32	0
+335	-32	0
+336	-32	0
+337	-32	0
+338	-32	0
+339	-32	0
+340	-32	0
+341	-32	0
+342	-32	0
+343	-32	0
+344	-32	0
+345	-32	0
+346	-32	0
+347	-32	0
+348	-32	0
+349	-32	0
+350	-32	0
+351	-32	0
+352	-32	0
+353	-32	0
+354	-32	0
+355	-32	0
+356	-32	0
+357	-32	0
+358	-32	0
+359	-32	0
+360	-32	0
+0	-31.5	0
+1	-31.5	0
+2	-31.5	0
+3	-31.5	0
+4	-31.5	0
+5	-31.5	0
+6	-31.5	0
+7	-31.5	0
+8	-31.5	0
+9	-31.5	0
+10	-31.5	0
+11	-31.5	0
+12	-31.5	0
+13	-31.5	0
+14	-31.5	0
+15	-31.5	0
+16	-31.5	0
+17	-31.5	0
+18	-31.5	0
+19	-31.5	0
+20	-31.5	0
+21	-31.5	0
+22	-31.5	0
+23	-31.5	0
+24	-31.5	0
+25	-31.5	0
+26	-31.5	0
+27	-31.5	0
+28	-31.5	0
+29	-31.5	0
+30	-31.5	0
+31	-31.5	0
+32	-31.5	0
+33	-31.5	0
+34	-31.5	0
+35	-31.5	0
+36	-31.5	0
+37	-31.5	0
+38	-31.5	0
+39	-31.5	0
+40	-31.5	0
+41	-31.5	0
+42	-31.5	0
+43	-31.5	0
+44	-31.5	0
+45	-31.5	0
+46	-31.5	0
+47	-31.5	0
+48	-31.5	0
+49	-31.5	0
+50	-31.5	0
+51	-31.5	0
+52	-31.5	0
+53	-31.5	0
+54	-31.5	0
+55	-31.5	0
+56	-31.5	0
+57	-31.5	0
+58	-31.5	0
+59	-31.5	0
+60	-31.5	0
+61	-31.5	0
+62	-31.5	0
+63	-31.5	0
+64	-31.5	0
+65	-31.5	0
+66	-31.5	0
+67	-31.5	0
+68	-31.5	0
+69	-31.5	0
+70	-31.5	0
+71	-31.5	0
+72	-31.5	0
+73	-31.5	0
+74	-31.5	0
+75	-31.5	0
+76	-31.5	0
+77	-31.5	0
+78	-31.5	0
+79	-31.5	0
+80	-31.5	0
+81	-31.5	0
+82	-31.5	0
+83	-31.5	0
+84	-31.5	0
+85	-31.5	0
+86	-31.5	0
+87	-31.5	0
+88	-31.5	0
+89	-31.5	0
+90	-31.5	0
+91	-31.5	0
+92	-31.5	0
+93	-31.5	0
+94	-31.5	0
+95	-31.5	0
+96	-31.5	0
+97	-31.5	0
+98	-31.5	0
+99	-31.5	0
+100	-31.5	0
+101	-31.5	0
+102	-31.5	0
+103	-31.5	0
+104	-31.5	0
+105	-31.5	0
+106	-31.5	0
+107	-31.5	0
+108	-31.5	0
+109	-31.5	0
+110	-31.5	0
+111	-31.5	0
+112	-31.5	0
+113	-31.5	0
+114	-31.5	0
+115	-31.5	0
+116	-31.5	0
+117	-31.5	0
+118	-31.5	0
+119	-31.5	0
+120	-31.5	0
+121	-31.5	0
+122	-31.5	0
+123	-31.5	0
+124	-31.5	0
+125	-31.5	0
+126	-31.5	0
+127	-31.5	0
+128	-31.5	0
+129	-31.5	0
+130	-31.5	0
+131	-31.5	0
+132	-31.5	0
+133	-31.5	0
+134	-31.5	0
+135	-31.5	0
+136	-31.5	0
+137	-31.5	0
+138	-31.5	0
+139	-31.5	0
+140	-31.5	0
+141	-31.5	0
+142	-31.5	0
+143	-31.5	0
+144	-31.5	0
+145	-31.5	0
+146	-31.5	0
+147	-31.5	0
+148	-31.5	0
+149	-31.5	0
+150	-31.5	0
+151	-31.5	0
+152	-31.5	0
+153	-31.5	0
+154	-31.5	0
+155	-31.5	0
+156	-31.5	0
+157	-31.5	0
+158	-31.5	0
+159	-31.5	0
+160	-31.5	0
+161	-31.5	0
+162	-31.5	0
+163	-31.5	0
+164	-31.5	0
+165	-31.5	0
+166	-31.5	0
+167	-31.5	0
+168	-31.5	0
+169	-31.5	0
+170	-31.5	0
+171	-31.5	0
+172	-31.5	0
+173	-31.5	0
+174	-31.5	0
+175	-31.5	0
+176	-31.5	0
+177	-31.5	0
+178	-31.5	0
+179	-31.5	0
+180	-31.5	0
+181	-31.5	0
+182	-31.5	0
+183	-31.5	0
+184	-31.5	0
+185	-31.5	0
+186	-31.5	0
+187	-31.5	0
+188	-31.5	0
+189	-31.5	0
+190	-31.5	0
+191	-31.5	0
+192	-31.5	0
+193	-31.5	0
+194	-31.5	0
+195	-31.5	0
+196	-31.5	0
+197	-31.5	0
+198	-31.5	0
+199	-31.5	0
+200	-31.5	0
+201	-31.5	0
+202	-31.5	0
+203	-31.5	0
+204	-31.5	0
+205	-31.5	0
+206	-31.5	0
+207	-31.5	0
+208	-31.5	0
+209	-31.5	0
+210	-31.5	0
+211	-31.5	0
+212	-31.5	0
+213	-31.5	0
+214	-31.5	0
+215	-31.5	0
+216	-31.5	0
+217	-31.5	0
+218	-31.5	0
+219	-31.5	0
+220	-31.5	0
+221	-31.5	0
+222	-31.5	0
+223	-31.5	0
+224	-31.5	0
+225	-31.5	0
+226	-31.5	0
+227	-31.5	0
+228	-31.5	0
+229	-31.5	0
+230	-31.5	0
+231	-31.5	0
+232	-31.5	0
+233	-31.5	0
+234	-31.5	0
+235	-31.5	0
+236	-31.5	0
+237	-31.5	0
+238	-31.5	0
+239	-31.5	0
+240	-31.5	0
+241	-31.5	0
+242	-31.5	0
+243	-31.5	0
+244	-31.5	0
+245	-31.5	0
+246	-31.5	0
+247	-31.5	0
+248	-31.5	0
+249	-31.5	0
+250	-31.5	0
+251	-31.5	0
+252	-31.5	0
+253	-31.5	0
+254	-31.5	0
+255	-31.5	0
+256	-31.5	0
+257	-31.5	0
+258	-31.5	0
+259	-31.5	0
+260	-31.5	0
+261	-31.5	0
+262	-31.5	0
+263	-31.5	0
+264	-31.5	0
+265	-31.5	0
+266	-31.5	0
+267	-31.5	0
+268	-31.5	0
+269	-31.5	0
+270	-31.5	0
+271	-31.5	0
+272	-31.5	0
+273	-31.5	0
+274	-31.5	0
+275	-31.5	0
+276	-31.5	0
+277	-31.5	0
+278	-31.5	0
+279	-31.5	0
+280	-31.5	0
+281	-31.5	0
+282	-31.5	0
+283	-31.5	0
+284	-31.5	0
+285	-31.5	0
+286	-31.5	0
+287	-31.5	0
+288	-31.5	0
+289	-31.5	0
+290	-31.5	0
+291	-31.5	0
+292	-31.5	0
+293	-31.5	0
+294	-31.5	0
+295	-31.5	0
+296	-31.5	0
+297	-31.5	0
+298	-31.5	0
+299	-31.5	0
+300	-31.5	0
+301	-31.5	0
+302	-31.5	0
+303	-31.5	0
+304	-31.5	0
+305	-31.5	0
+306	-31.5	0
+307	-31.5	0
+308	-31.5	0
+309	-31.5	0
+310	-31.5	0
+311	-31.5	0
+312	-31.5	0
+313	-31.5	0
+314	-31.5	0
+315	-31.5	0
+316	-31.5	0
+317	-31.5	0
+318	-31.5	0
+319	-31.5	0
+320	-31.5	0
+321	-31.5	0
+322	-31.5	0
+323	-31.5	0
+324	-31.5	0
+325	-31.5	0
+326	-31.5	0
+327	-31.5	0
+328	-31.5	0
+329	-31.5	0
+330	-31.5	0
+331	-31.5	0
+332	-31.5	0
+333	-31.5	0
+334	-31.5	0
+335	-31.5	0
+336	-31.5	0
+337	-31.5	0
+338	-31.5	0
+339	-31.5	0
+340	-31.5	0
+341	-31.5	0
+342	-31.5	0
+343	-31.5	0
+344	-31.5	0
+345	-31.5	0
+346	-31.5	0
+347	-31.5	0
+348	-31.5	0
+349	-31.5	0
+350	-31.5	0
+351	-31.5	0
+352	-31.5	0
+353	-31.5	0
+354	-31.5	0
+355	-31.5	0
+356	-31.5	0
+357	-31.5	0
+358	-31.5	0
+359	-31.5	0
+360	-31.5	0
+0	-31	0
+1	-31	0
+2	-31	0
+3	-31	0
+4	-31	0
+5	-31	0
+6	-31	0
+7	-31	0
+8	-31	0
+9	-31	0
+10	-31	0
+11	-31	0
+12	-31	0
+13	-31	0
+14	-31	0
+15	-31	0
+16	-31	0
+17	-31	0
+18	-31	0
+19	-31	0
+20	-31	0
+21	-31	0
+22	-31	0
+23	-31	0
+24	-31	0
+25	-31	0
+26	-31	0
+27	-31	0
+28	-31	0
+29	-31	0
+30	-31	0
+31	-31	0
+32	-31	0
+33	-31	0
+34	-31	0
+35	-31	0
+36	-31	0
+37	-31	0
+38	-31	0
+39	-31	0
+40	-31	0
+41	-31	0
+42	-31	0
+43	-31	0
+44	-31	0
+45	-31	0
+46	-31	0
+47	-31	0
+48	-31	0
+49	-31	0
+50	-31	0
+51	-31	0
+52	-31	0
+53	-31	0
+54	-31	0
+55	-31	0
+56	-31	0
+57	-31	0
+58	-31	0
+59	-31	0
+60	-31	0
+61	-31	0
+62	-31	0
+63	-31	0
+64	-31	0
+65	-31	0
+66	-31	0
+67	-31	0
+68	-31	0
+69	-31	0
+70	-31	0
+71	-31	0
+72	-31	0
+73	-31	0
+74	-31	0
+75	-31	0
+76	-31	0
+77	-31	0
+78	-31	0
+79	-31	0
+80	-31	0
+81	-31	0
+82	-31	0
+83	-31	0
+84	-31	0
+85	-31	0
+86	-31	0
+87	-31	0
+88	-31	0
+89	-31	0
+90	-31	0
+91	-31	0
+92	-31	0
+93	-31	0
+94	-31	0
+95	-31	0
+96	-31	0
+97	-31	0
+98	-31	0
+99	-31	0
+100	-31	0
+101	-31	0
+102	-31	0
+103	-31	0
+104	-31	0
+105	-31	0
+106	-31	0
+107	-31	0
+108	-31	0
+109	-31	0
+110	-31	0
+111	-31	0
+112	-31	0
+113	-31	0
+114	-31	0
+115	-31	0
+116	-31	0
+117	-31	0
+118	-31	0
+119	-31	0
+120	-31	0
+121	-31	0
+122	-31	0
+123	-31	0
+124	-31	0
+125	-31	0
+126	-31	0
+127	-31	0
+128	-31	0
+129	-31	0
+130	-31	0
+131	-31	0
+132	-31	0
+133	-31	0
+134	-31	0
+135	-31	0
+136	-31	0
+137	-31	0
+138	-31	0
+139	-31	0
+140	-31	0
+141	-31	0
+142	-31	0
+143	-31	0
+144	-31	0
+145	-31	0
+146	-31	0
+147	-31	0
+148	-31	0
+149	-31	0
+150	-31	0
+151	-31	0
+152	-31	0
+153	-31	0
+154	-31	0
+155	-31	0
+156	-31	0
+157	-31	0
+158	-31	0
+159	-31	0
+160	-31	0
+161	-31	0
+162	-31	0
+163	-31	0
+164	-31	0
+165	-31	0
+166	-31	0
+167	-31	0
+168	-31	0
+169	-31	0
+170	-31	0
+171	-31	0
+172	-31	0
+173	-31	0
+174	-31	0
+175	-31	0
+176	-31	0
+177	-31	0
+178	-31	0
+179	-31	0
+180	-31	0
+181	-31	0
+182	-31	0
+183	-31	0
+184	-31	0
+185	-31	0
+186	-31	0
+187	-31	0
+188	-31	0
+189	-31	0
+190	-31	0
+191	-31	0
+192	-31	0
+193	-31	0
+194	-31	0
+195	-31	0
+196	-31	0
+197	-31	0
+198	-31	0
+199	-31	0
+200	-31	0
+201	-31	0
+202	-31	0
+203	-31	0
+204	-31	0
+205	-31	0
+206	-31	0
+207	-31	0
+208	-31	0
+209	-31	0
+210	-31	0
+211	-31	0
+212	-31	0
+213	-31	0
+214	-31	0
+215	-31	0
+216	-31	0
+217	-31	0
+218	-31	0
+219	-31	0
+220	-31	0
+221	-31	0
+222	-31	0
+223	-31	0
+224	-31	0
+225	-31	0
+226	-31	0
+227	-31	0
+228	-31	0
+229	-31	0
+230	-31	0
+231	-31	0
+232	-31	0
+233	-31	0
+234	-31	0
+235	-31	0
+236	-31	0
+237	-31	0
+238	-31	0
+239	-31	0
+240	-31	0
+241	-31	0
+242	-31	0
+243	-31	0
+244	-31	0
+245	-31	0
+246	-31	0
+247	-31	0
+248	-31	0
+249	-31	0
+250	-31	0
+251	-31	0
+252	-31	0
+253	-31	0
+254	-31	0
+255	-31	0
+256	-31	0
+257	-31	0
+258	-31	0
+259	-31	0
+260	-31	0
+261	-31	0
+262	-31	0
+263	-31	0
+264	-31	0
+265	-31	0
+266	-31	0
+267	-31	0
+268	-31	0
+269	-31	0
+270	-31	0
+271	-31	0
+272	-31	0
+273	-31	0
+274	-31	0
+275	-31	0
+276	-31	0
+277	-31	0
+278	-31	0
+279	-31	0
+280	-31	0
+281	-31	0
+282	-31	0
+283	-31	0
+284	-31	0
+285	-31	0
+286	-31	0
+287	-31	0
+288	-31	0
+289	-31	0
+290	-31	0
+291	-31	0
+292	-31	0
+293	-31	0
+294	-31	0
+295	-31	0
+296	-31	0
+297	-31	0
+298	-31	0
+299	-31	0
+300	-31	0
+301	-31	0
+302	-31	0
+303	-31	0
+304	-31	0
+305	-31	0
+306	-31	0
+307	-31	0
+308	-31	0
+309	-31	0
+310	-31	0
+311	-31	0
+312	-31	0
+313	-31	0
+314	-31	0
+315	-31	0
+316	-31	0
+317	-31	0
+318	-31	0
+319	-31	0
+320	-31	0
+321	-31	0
+322	-31	0
+323	-31	0
+324	-31	0
+325	-31	0
+326	-31	0
+327	-31	0
+328	-31	0
+329	-31	0
+330	-31	0
+331	-31	0
+332	-31	0
+333	-31	0
+334	-31	0
+335	-31	0
+336	-31	0
+337	-31	0
+338	-31	0
+339	-31	0
+340	-31	0
+341	-31	0
+342	-31	0
+343	-31	0
+344	-31	0
+345	-31	0
+346	-31	0
+347	-31	0
+348	-31	0
+349	-31	0
+350	-31	0
+351	-31	0
+352	-31	0
+353	-31	0
+354	-31	0
+355	-31	0
+356	-31	0
+357	-31	0
+358	-31	0
+359	-31	0
+360	-31	0
+0	-30.5	0
+1	-30.5	0
+2	-30.5	0
+3	-30.5	0
+4	-30.5	0
+5	-30.5	0
+6	-30.5	0
+7	-30.5	0
+8	-30.5	0
+9	-30.5	0
+10	-30.5	0
+11	-30.5	0
+12	-30.5	0
+13	-30.5	0
+14	-30.5	0
+15	-30.5	0
+16	-30.5	0
+17	-30.5	0
+18	-30.5	0
+19	-30.5	0
+20	-30.5	0
+21	-30.5	0
+22	-30.5	0
+23	-30.5	0
+24	-30.5	0
+25	-30.5	0
+26	-30.5	0
+27	-30.5	0
+28	-30.5	0
+29	-30.5	0
+30	-30.5	0
+31	-30.5	0
+32	-30.5	0
+33	-30.5	0
+34	-30.5	0
+35	-30.5	0
+36	-30.5	0
+37	-30.5	0
+38	-30.5	0
+39	-30.5	0
+40	-30.5	0
+41	-30.5	0
+42	-30.5	0
+43	-30.5	0
+44	-30.5	0
+45	-30.5	0
+46	-30.5	0
+47	-30.5	0
+48	-30.5	0
+49	-30.5	0
+50	-30.5	0
+51	-30.5	0
+52	-30.5	0
+53	-30.5	0
+54	-30.5	0
+55	-30.5	0
+56	-30.5	0
+57	-30.5	0
+58	-30.5	0
+59	-30.5	0
+60	-30.5	0
+61	-30.5	0
+62	-30.5	0
+63	-30.5	0
+64	-30.5	0
+65	-30.5	0
+66	-30.5	0
+67	-30.5	0
+68	-30.5	0
+69	-30.5	0
+70	-30.5	0
+71	-30.5	0
+72	-30.5	0
+73	-30.5	0
+74	-30.5	0
+75	-30.5	0
+76	-30.5	0
+77	-30.5	0
+78	-30.5	0
+79	-30.5	0
+80	-30.5	0
+81	-30.5	0
+82	-30.5	0
+83	-30.5	0
+84	-30.5	0
+85	-30.5	0
+86	-30.5	0
+87	-30.5	0
+88	-30.5	0
+89	-30.5	0
+90	-30.5	0
+91	-30.5	0
+92	-30.5	0
+93	-30.5	0
+94	-30.5	0
+95	-30.5	0
+96	-30.5	0
+97	-30.5	0
+98	-30.5	0
+99	-30.5	0
+100	-30.5	0
+101	-30.5	0
+102	-30.5	0
+103	-30.5	0
+104	-30.5	0
+105	-30.5	0
+106	-30.5	0
+107	-30.5	0
+108	-30.5	0
+109	-30.5	0
+110	-30.5	0
+111	-30.5	0
+112	-30.5	0
+113	-30.5	0
+114	-30.5	0
+115	-30.5	0
+116	-30.5	0
+117	-30.5	0
+118	-30.5	0
+119	-30.5	0
+120	-30.5	0
+121	-30.5	0
+122	-30.5	0
+123	-30.5	0
+124	-30.5	0
+125	-30.5	0
+126	-30.5	0
+127	-30.5	0
+128	-30.5	0
+129	-30.5	0
+130	-30.5	0
+131	-30.5	0
+132	-30.5	0
+133	-30.5	0
+134	-30.5	0
+135	-30.5	0
+136	-30.5	0
+137	-30.5	0
+138	-30.5	0
+139	-30.5	0
+140	-30.5	0
+141	-30.5	0
+142	-30.5	0
+143	-30.5	0
+144	-30.5	0
+145	-30.5	0
+146	-30.5	0
+147	-30.5	0
+148	-30.5	0
+149	-30.5	0
+150	-30.5	0
+151	-30.5	0
+152	-30.5	0
+153	-30.5	0
+154	-30.5	0
+155	-30.5	0
+156	-30.5	0
+157	-30.5	0
+158	-30.5	0
+159	-30.5	0
+160	-30.5	0
+161	-30.5	0
+162	-30.5	0
+163	-30.5	0
+164	-30.5	0
+165	-30.5	0
+166	-30.5	0
+167	-30.5	0
+168	-30.5	0
+169	-30.5	0
+170	-30.5	0
+171	-30.5	0
+172	-30.5	0
+173	-30.5	0
+174	-30.5	0
+175	-30.5	0
+176	-30.5	0
+177	-30.5	0
+178	-30.5	0
+179	-30.5	0
+180	-30.5	0
+181	-30.5	0
+182	-30.5	0
+183	-30.5	0
+184	-30.5	0
+185	-30.5	0
+186	-30.5	0
+187	-30.5	0
+188	-30.5	0
+189	-30.5	0
+190	-30.5	0
+191	-30.5	0
+192	-30.5	0
+193	-30.5	0
+194	-30.5	0
+195	-30.5	0
+196	-30.5	0
+197	-30.5	0
+198	-30.5	0
+199	-30.5	0
+200	-30.5	0
+201	-30.5	0
+202	-30.5	0
+203	-30.5	0
+204	-30.5	0
+205	-30.5	0
+206	-30.5	0
+207	-30.5	0
+208	-30.5	0
+209	-30.5	0
+210	-30.5	0
+211	-30.5	0
+212	-30.5	0
+213	-30.5	0
+214	-30.5	0
+215	-30.5	0
+216	-30.5	0
+217	-30.5	0
+218	-30.5	0
+219	-30.5	0
+220	-30.5	0
+221	-30.5	0
+222	-30.5	0
+223	-30.5	0
+224	-30.5	0
+225	-30.5	0
+226	-30.5	0
+227	-30.5	0
+228	-30.5	0
+229	-30.5	0
+230	-30.5	0
+231	-30.5	0
+232	-30.5	0
+233	-30.5	0
+234	-30.5	0
+235	-30.5	0
+236	-30.5	0
+237	-30.5	0
+238	-30.5	0
+239	-30.5	0
+240	-30.5	0
+241	-30.5	0
+242	-30.5	0
+243	-30.5	0
+244	-30.5	0
+245	-30.5	0
+246	-30.5	0
+247	-30.5	0
+248	-30.5	0
+249	-30.5	0
+250	-30.5	0
+251	-30.5	0
+252	-30.5	0
+253	-30.5	0
+254	-30.5	0
+255	-30.5	0
+256	-30.5	0
+257	-30.5	0
+258	-30.5	0
+259	-30.5	0
+260	-30.5	0
+261	-30.5	0
+262	-30.5	0
+263	-30.5	0
+264	-30.5	0
+265	-30.5	0
+266	-30.5	0
+267	-30.5	0
+268	-30.5	0
+269	-30.5	0
+270	-30.5	0
+271	-30.5	0
+272	-30.5	0
+273	-30.5	0
+274	-30.5	0
+275	-30.5	0
+276	-30.5	0
+277	-30.5	0
+278	-30.5	0
+279	-30.5	0
+280	-30.5	0
+281	-30.5	0
+282	-30.5	0
+283	-30.5	0
+284	-30.5	0
+285	-30.5	0
+286	-30.5	0
+287	-30.5	0
+288	-30.5	0
+289	-30.5	0
+290	-30.5	0
+291	-30.5	0
+292	-30.5	0
+293	-30.5	0
+294	-30.5	0
+295	-30.5	0
+296	-30.5	0
+297	-30.5	0
+298	-30.5	0
+299	-30.5	0
+300	-30.5	0
+301	-30.5	0
+302	-30.5	0
+303	-30.5	0
+304	-30.5	0
+305	-30.5	0
+306	-30.5	0
+307	-30.5	0
+308	-30.5	0
+309	-30.5	0
+310	-30.5	0
+311	-30.5	0
+312	-30.5	0
+313	-30.5	0
+314	-30.5	0
+315	-30.5	0
+316	-30.5	0
+317	-30.5	0
+318	-30.5	0
+319	-30.5	0
+320	-30.5	0
+321	-30.5	0
+322	-30.5	0
+323	-30.5	0
+324	-30.5	0
+325	-30.5	0
+326	-30.5	0
+327	-30.5	0
+328	-30.5	0
+329	-30.5	0
+330	-30.5	0
+331	-30.5	0
+332	-30.5	0
+333	-30.5	0
+334	-30.5	0
+335	-30.5	0
+336	-30.5	0
+337	-30.5	0
+338	-30.5	0
+339	-30.5	0
+340	-30.5	0
+341	-30.5	0
+342	-30.5	0
+343	-30.5	0
+344	-30.5	0
+345	-30.5	0
+346	-30.5	0
+347	-30.5	0
+348	-30.5	0
+349	-30.5	0
+350	-30.5	0
+351	-30.5	0
+352	-30.5	0
+353	-30.5	0
+354	-30.5	0
+355	-30.5	0
+356	-30.5	0
+357	-30.5	0
+358	-30.5	0
+359	-30.5	0
+360	-30.5	0
+0	-30	0
+1	-30	0
+2	-30	0
+3	-30	0
+4	-30	0
+5	-30	0
+6	-30	0
+7	-30	0
+8	-30	0
+9	-30	0
+10	-30	0
+11	-30	0
+12	-30	0
+13	-30	0
+14	-30	0
+15	-30	0
+16	-30	0
+17	-30	0
+18	-30	0
+19	-30	0
+20	-30	0
+21	-30	0
+22	-30	0
+23	-30	0
+24	-30	0
+25	-30	0
+26	-30	0
+27	-30	0
+28	-30	0
+29	-30	0
+30	-30	0
+31	-30	0
+32	-30	0
+33	-30	0
+34	-30	0
+35	-30	0
+36	-30	0
+37	-30	0
+38	-30	0
+39	-30	0
+40	-30	0
+41	-30	0
+42	-30	0
+43	-30	0
+44	-30	0
+45	-30	0
+46	-30	0
+47	-30	0
+48	-30	0
+49	-30	0
+50	-30	0
+51	-30	0
+52	-30	0
+53	-30	0
+54	-30	0
+55	-30	0
+56	-30	0
+57	-30	0
+58	-30	0
+59	-30	0
+60	-30	0
+61	-30	0
+62	-30	0
+63	-30	0
+64	-30	0
+65	-30	0
+66	-30	0
+67	-30	0
+68	-30	0
+69	-30	0
+70	-30	0
+71	-30	0
+72	-30	0
+73	-30	0
+74	-30	0
+75	-30	0
+76	-30	0
+77	-30	0
+78	-30	0
+79	-30	0
+80	-30	0
+81	-30	0
+82	-30	0
+83	-30	0
+84	-30	0
+85	-30	0
+86	-30	0
+87	-30	0
+88	-30	0
+89	-30	0
+90	-30	0
+91	-30	0
+92	-30	0
+93	-30	0
+94	-30	0
+95	-30	0
+96	-30	0
+97	-30	0
+98	-30	0
+99	-30	0
+100	-30	0
+101	-30	0
+102	-30	0
+103	-30	0
+104	-30	0
+105	-30	0
+106	-30	0
+107	-30	0
+108	-30	0
+109	-30	0
+110	-30	0
+111	-30	0
+112	-30	0
+113	-30	0
+114	-30	0
+115	-30	0
+116	-30	0
+117	-30	0
+118	-30	0
+119	-30	0
+120	-30	0
+121	-30	0
+122	-30	0
+123	-30	0
+124	-30	0
+125	-30	0
+126	-30	0
+127	-30	0
+128	-30	0
+129	-30	0
+130	-30	0
+131	-30	0
+132	-30	0
+133	-30	0
+134	-30	0
+135	-30	0
+136	-30	0
+137	-30	0
+138	-30	0
+139	-30	0
+140	-30	0
+141	-30	0
+142	-30	0
+143	-30	0
+144	-30	0
+145	-30	0
+146	-30	0
+147	-30	0
+148	-30	0
+149	-30	0
+150	-30	0
+151	-30	0
+152	-30	0
+153	-30	0
+154	-30	0
+155	-30	0
+156	-30	0
+157	-30	0
+158	-30	0
+159	-30	0
+160	-30	0
+161	-30	0
+162	-30	0
+163	-30	0
+164	-30	0
+165	-30	0
+166	-30	0
+167	-30	0
+168	-30	0
+169	-30	0
+170	-30	0
+171	-30	0
+172	-30	0
+173	-30	0
+174	-30	0
+175	-30	0
+176	-30	0
+177	-30	0
+178	-30	0
+179	-30	0
+180	-30	0
+181	-30	0
+182	-30	0
+183	-30	0
+184	-30	0
+185	-30	0
+186	-30	0
+187	-30	0
+188	-30	0
+189	-30	0
+190	-30	0
+191	-30	0
+192	-30	0
+193	-30	0
+194	-30	0
+195	-30	0
+196	-30	0
+197	-30	0
+198	-30	0
+199	-30	0
+200	-30	0
+201	-30	0
+202	-30	0
+203	-30	0
+204	-30	0
+205	-30	0
+206	-30	0
+207	-30	0
+208	-30	0
+209	-30	0
+210	-30	0
+211	-30	0
+212	-30	0
+213	-30	0
+214	-30	0
+215	-30	0
+216	-30	0
+217	-30	0
+218	-30	0
+219	-30	0
+220	-30	0
+221	-30	0
+222	-30	0
+223	-30	0
+224	-30	0
+225	-30	0
+226	-30	0
+227	-30	0
+228	-30	0
+229	-30	0
+230	-30	0
+231	-30	0
+232	-30	0
+233	-30	0
+234	-30	0
+235	-30	0
+236	-30	0
+237	-30	0
+238	-30	0
+239	-30	0
+240	-30	0
+241	-30	0
+242	-30	0
+243	-30	0
+244	-30	0
+245	-30	0
+246	-30	0
+247	-30	0
+248	-30	0
+249	-30	0
+250	-30	0
+251	-30	0
+252	-30	0
+253	-30	0
+254	-30	0
+255	-30	0
+256	-30	0
+257	-30	0
+258	-30	0
+259	-30	0
+260	-30	0
+261	-30	0
+262	-30	0
+263	-30	0
+264	-30	0
+265	-30	0
+266	-30	0
+267	-30	0
+268	-30	0
+269	-30	0
+270	-30	0
+271	-30	0
+272	-30	0
+273	-30	0
+274	-30	0
+275	-30	0
+276	-30	0
+277	-30	0
+278	-30	0
+279	-30	0
+280	-30	0
+281	-30	0
+282	-30	0
+283	-30	0
+284	-30	0
+285	-30	0
+286	-30	0
+287	-30	0
+288	-30	0
+289	-30	0
+290	-30	0
+291	-30	0
+292	-30	0
+293	-30	0
+294	-30	0
+295	-30	0
+296	-30	0
+297	-30	0
+298	-30	0
+299	-30	0
+300	-30	0
+301	-30	0
+302	-30	0
+303	-30	0
+304	-30	0
+305	-30	0
+306	-30	0
+307	-30	0
+308	-30	0
+309	-30	0
+310	-30	0
+311	-30	0
+312	-30	0
+313	-30	0
+314	-30	0
+315	-30	0
+316	-30	0
+317	-30	0
+318	-30	0
+319	-30	0
+320	-30	0
+321	-30	0
+322	-30	0
+323	-30	0
+324	-30	0
+325	-30	0
+326	-30	0
+327	-30	0
+328	-30	0
+329	-30	0
+330	-30	0
+331	-30	0
+332	-30	0
+333	-30	0
+334	-30	0
+335	-30	0
+336	-30	0
+337	-30	0
+338	-30	0
+339	-30	0
+340	-30	0
+341	-30	0
+342	-30	0
+343	-30	0
+344	-30	0
+345	-30	0
+346	-30	0
+347	-30	0
+348	-30	0
+349	-30	0
+350	-30	0
+351	-30	0
+352	-30	0
+353	-30	0
+354	-30	0
+355	-30	0
+356	-30	0
+357	-30	0
+358	-30	0
+359	-30	0
+360	-30	0
+0	-29.5	0
+1	-29.5	0
+2	-29.5	0
+3	-29.5	0
+4	-29.5	0
+5	-29.5	0
+6	-29.5	0
+7	-29.5	0
+8	-29.5	0
+9	-29.5	0
+10	-29.5	0
+11	-29.5	0
+12	-29.5	0
+13	-29.5	0
+14	-29.5	0
+15	-29.5	0
+16	-29.5	0
+17	-29.5	0
+18	-29.5	0
+19	-29.5	0
+20	-29.5	0
+21	-29.5	0
+22	-29.5	0
+23	-29.5	0
+24	-29.5	0
+25	-29.5	0
+26	-29.5	0
+27	-29.5	0
+28	-29.5	0
+29	-29.5	0
+30	-29.5	0
+31	-29.5	0
+32	-29.5	0
+33	-29.5	0
+34	-29.5	0
+35	-29.5	0
+36	-29.5	0
+37	-29.5	0
+38	-29.5	0
+39	-29.5	0
+40	-29.5	0
+41	-29.5	0
+42	-29.5	0
+43	-29.5	0
+44	-29.5	0
+45	-29.5	0
+46	-29.5	0
+47	-29.5	0
+48	-29.5	0
+49	-29.5	0
+50	-29.5	0
+51	-29.5	0
+52	-29.5	0
+53	-29.5	0
+54	-29.5	0
+55	-29.5	0
+56	-29.5	0
+57	-29.5	0
+58	-29.5	0
+59	-29.5	0
+60	-29.5	0
+61	-29.5	0
+62	-29.5	0
+63	-29.5	0
+64	-29.5	0
+65	-29.5	0
+66	-29.5	0
+67	-29.5	0
+68	-29.5	0
+69	-29.5	0
+70	-29.5	0
+71	-29.5	0
+72	-29.5	0
+73	-29.5	0
+74	-29.5	0
+75	-29.5	0
+76	-29.5	0
+77	-29.5	0
+78	-29.5	0
+79	-29.5	0
+80	-29.5	0
+81	-29.5	0
+82	-29.5	0
+83	-29.5	0
+84	-29.5	0
+85	-29.5	0
+86	-29.5	0
+87	-29.5	0
+88	-29.5	0
+89	-29.5	0
+90	-29.5	0
+91	-29.5	0
+92	-29.5	0
+93	-29.5	0
+94	-29.5	0
+95	-29.5	0
+96	-29.5	0
+97	-29.5	0
+98	-29.5	0
+99	-29.5	0
+100	-29.5	0
+101	-29.5	0
+102	-29.5	0
+103	-29.5	0
+104	-29.5	0
+105	-29.5	0
+106	-29.5	0
+107	-29.5	0
+108	-29.5	0
+109	-29.5	0
+110	-29.5	0
+111	-29.5	0
+112	-29.5	0
+113	-29.5	0
+114	-29.5	0
+115	-29.5	0
+116	-29.5	0
+117	-29.5	0
+118	-29.5	0
+119	-29.5	0
+120	-29.5	0
+121	-29.5	0
+122	-29.5	0
+123	-29.5	0
+124	-29.5	0
+125	-29.5	0
+126	-29.5	0
+127	-29.5	0
+128	-29.5	0
+129	-29.5	0
+130	-29.5	0
+131	-29.5	0
+132	-29.5	0
+133	-29.5	0
+134	-29.5	0
+135	-29.5	0
+136	-29.5	0
+137	-29.5	0
+138	-29.5	0
+139	-29.5	0
+140	-29.5	0
+141	-29.5	0
+142	-29.5	0
+143	-29.5	0
+144	-29.5	0
+145	-29.5	0
+146	-29.5	0
+147	-29.5	0
+148	-29.5	0
+149	-29.5	0
+150	-29.5	0
+151	-29.5	0
+152	-29.5	0
+153	-29.5	0
+154	-29.5	0
+155	-29.5	0
+156	-29.5	0
+157	-29.5	0
+158	-29.5	0
+159	-29.5	0
+160	-29.5	0
+161	-29.5	0
+162	-29.5	0
+163	-29.5	0
+164	-29.5	0
+165	-29.5	0
+166	-29.5	0
+167	-29.5	0
+168	-29.5	0
+169	-29.5	0
+170	-29.5	0
+171	-29.5	0
+172	-29.5	0
+173	-29.5	0
+174	-29.5	0
+175	-29.5	0
+176	-29.5	0
+177	-29.5	0
+178	-29.5	0
+179	-29.5	0
+180	-29.5	0
+181	-29.5	0
+182	-29.5	0
+183	-29.5	0
+184	-29.5	0
+185	-29.5	0
+186	-29.5	0
+187	-29.5	0
+188	-29.5	0
+189	-29.5	0
+190	-29.5	0
+191	-29.5	0
+192	-29.5	0
+193	-29.5	0
+194	-29.5	0
+195	-29.5	0
+196	-29.5	0
+197	-29.5	0
+198	-29.5	0
+199	-29.5	0
+200	-29.5	0
+201	-29.5	0
+202	-29.5	0
+203	-29.5	0
+204	-29.5	0
+205	-29.5	0
+206	-29.5	0
+207	-29.5	0
+208	-29.5	0
+209	-29.5	0
+210	-29.5	0
+211	-29.5	0
+212	-29.5	0
+213	-29.5	0
+214	-29.5	0
+215	-29.5	0
+216	-29.5	0
+217	-29.5	0
+218	-29.5	0
+219	-29.5	0
+220	-29.5	0
+221	-29.5	0
+222	-29.5	0
+223	-29.5	0
+224	-29.5	0
+225	-29.5	0
+226	-29.5	0
+227	-29.5	0
+228	-29.5	0
+229	-29.5	0
+230	-29.5	0
+231	-29.5	0
+232	-29.5	0
+233	-29.5	0
+234	-29.5	0
+235	-29.5	0
+236	-29.5	0
+237	-29.5	0
+238	-29.5	0
+239	-29.5	0
+240	-29.5	0
+241	-29.5	0
+242	-29.5	0
+243	-29.5	0
+244	-29.5	0
+245	-29.5	0
+246	-29.5	0
+247	-29.5	0
+248	-29.5	0
+249	-29.5	0
+250	-29.5	0
+251	-29.5	0
+252	-29.5	0
+253	-29.5	0
+254	-29.5	0
+255	-29.5	0
+256	-29.5	0
+257	-29.5	0
+258	-29.5	0
+259	-29.5	0
+260	-29.5	0
+261	-29.5	0
+262	-29.5	0
+263	-29.5	0
+264	-29.5	0
+265	-29.5	0
+266	-29.5	0
+267	-29.5	0
+268	-29.5	0
+269	-29.5	0
+270	-29.5	0
+271	-29.5	0
+272	-29.5	0
+273	-29.5	0
+274	-29.5	0
+275	-29.5	0
+276	-29.5	0
+277	-29.5	0
+278	-29.5	0
+279	-29.5	0
+280	-29.5	0
+281	-29.5	0
+282	-29.5	0
+283	-29.5	0
+284	-29.5	0
+285	-29.5	0
+286	-29.5	0
+287	-29.5	0
+288	-29.5	0
+289	-29.5	0
+290	-29.5	0
+291	-29.5	0
+292	-29.5	0
+293	-29.5	0
+294	-29.5	0
+295	-29.5	0
+296	-29.5	0
+297	-29.5	0
+298	-29.5	0
+299	-29.5	0
+300	-29.5	0
+301	-29.5	0
+302	-29.5	0
+303	-29.5	0
+304	-29.5	0
+305	-29.5	0
+306	-29.5	0
+307	-29.5	0
+308	-29.5	0
+309	-29.5	0
+310	-29.5	0
+311	-29.5	0
+312	-29.5	0
+313	-29.5	0
+314	-29.5	0
+315	-29.5	0
+316	-29.5	0
+317	-29.5	0
+318	-29.5	0
+319	-29.5	0
+320	-29.5	0
+321	-29.5	0
+322	-29.5	0
+323	-29.5	0
+324	-29.5	0
+325	-29.5	0
+326	-29.5	0
+327	-29.5	0
+328	-29.5	0
+329	-29.5	0
+330	-29.5	0
+331	-29.5	0
+332	-29.5	0
+333	-29.5	0
+334	-29.5	0
+335	-29.5	0
+336	-29.5	0
+337	-29.5	0
+338	-29.5	0
+339	-29.5	0
+340	-29.5	0
+341	-29.5	0
+342	-29.5	0
+343	-29.5	0
+344	-29.5	0
+345	-29.5	0
+346	-29.5	0
+347	-29.5	0
+348	-29.5	0
+349	-29.5	0
+350	-29.5	0
+351	-29.5	0
+352	-29.5	0
+353	-29.5	0
+354	-29.5	0
+355	-29.5	0
+356	-29.5	0
+357	-29.5	0
+358	-29.5	0
+359	-29.5	0
+360	-29.5	0
+0	-29	0
+1	-29	0
+2	-29	0
+3	-29	0
+4	-29	0
+5	-29	0
+6	-29	0
+7	-29	0
+8	-29	0
+9	-29	0
+10	-29	0
+11	-29	0
+12	-29	0
+13	-29	0
+14	-29	0
+15	-29	0
+16	-29	0
+17	-29	0
+18	-29	0
+19	-29	0
+20	-29	0
+21	-29	0
+22	-29	0
+23	-29	0
+24	-29	0
+25	-29	0
+26	-29	0
+27	-29	0
+28	-29	0
+29	-29	0
+30	-29	0
+31	-29	0
+32	-29	0
+33	-29	0
+34	-29	0
+35	-29	0
+36	-29	0
+37	-29	0
+38	-29	0
+39	-29	0
+40	-29	0
+41	-29	0
+42	-29	0
+43	-29	0
+44	-29	0
+45	-29	0
+46	-29	0
+47	-29	0
+48	-29	0
+49	-29	0
+50	-29	0
+51	-29	0
+52	-29	0
+53	-29	0
+54	-29	0
+55	-29	0
+56	-29	0
+57	-29	0
+58	-29	0
+59	-29	0
+60	-29	0
+61	-29	0
+62	-29	0
+63	-29	0
+64	-29	0
+65	-29	0
+66	-29	0
+67	-29	0
+68	-29	0
+69	-29	0
+70	-29	0
+71	-29	0
+72	-29	0
+73	-29	0
+74	-29	0
+75	-29	0
+76	-29	0
+77	-29	0
+78	-29	0
+79	-29	0
+80	-29	0
+81	-29	0
+82	-29	0
+83	-29	0
+84	-29	0
+85	-29	0
+86	-29	0
+87	-29	0
+88	-29	0
+89	-29	0
+90	-29	0
+91	-29	0
+92	-29	0
+93	-29	0
+94	-29	0
+95	-29	0
+96	-29	0
+97	-29	0
+98	-29	0
+99	-29	0
+100	-29	0
+101	-29	0
+102	-29	0
+103	-29	0
+104	-29	0
+105	-29	0
+106	-29	0
+107	-29	0
+108	-29	0
+109	-29	0
+110	-29	0
+111	-29	0
+112	-29	0
+113	-29	0
+114	-29	0
+115	-29	0
+116	-29	0
+117	-29	0
+118	-29	0
+119	-29	0
+120	-29	0
+121	-29	0
+122	-29	0
+123	-29	0
+124	-29	0
+125	-29	0
+126	-29	0
+127	-29	0
+128	-29	0
+129	-29	0
+130	-29	0
+131	-29	0
+132	-29	0
+133	-29	0
+134	-29	0
+135	-29	0
+136	-29	0
+137	-29	0
+138	-29	0
+139	-29	0
+140	-29	0
+141	-29	0
+142	-29	0
+143	-29	0
+144	-29	0
+145	-29	0
+146	-29	0
+147	-29	0
+148	-29	0
+149	-29	0
+150	-29	0
+151	-29	0
+152	-29	0
+153	-29	0
+154	-29	0
+155	-29	0
+156	-29	0
+157	-29	0
+158	-29	0
+159	-29	0
+160	-29	0
+161	-29	0
+162	-29	0
+163	-29	0
+164	-29	0
+165	-29	0
+166	-29	0
+167	-29	0
+168	-29	0
+169	-29	0
+170	-29	0
+171	-29	0
+172	-29	0
+173	-29	0
+174	-29	0
+175	-29	0
+176	-29	0
+177	-29	0
+178	-29	0
+179	-29	0
+180	-29	0
+181	-29	0
+182	-29	0
+183	-29	0
+184	-29	0
+185	-29	0
+186	-29	0
+187	-29	0
+188	-29	0
+189	-29	0
+190	-29	0
+191	-29	0
+192	-29	0
+193	-29	0
+194	-29	0
+195	-29	0
+196	-29	0
+197	-29	0
+198	-29	0
+199	-29	0
+200	-29	0
+201	-29	0
+202	-29	0
+203	-29	0
+204	-29	0
+205	-29	0
+206	-29	0
+207	-29	0
+208	-29	0
+209	-29	0
+210	-29	0
+211	-29	0
+212	-29	0
+213	-29	0
+214	-29	0
+215	-29	0
+216	-29	0
+217	-29	0
+218	-29	0
+219	-29	0
+220	-29	0
+221	-29	0
+222	-29	0
+223	-29	0
+224	-29	0
+225	-29	0
+226	-29	0
+227	-29	0
+228	-29	0
+229	-29	0
+230	-29	0
+231	-29	0
+232	-29	0
+233	-29	0
+234	-29	0
+235	-29	0
+236	-29	0
+237	-29	0
+238	-29	0
+239	-29	0
+240	-29	0
+241	-29	0
+242	-29	0
+243	-29	0
+244	-29	0
+245	-29	0
+246	-29	0
+247	-29	0
+248	-29	0
+249	-29	0
+250	-29	0
+251	-29	0
+252	-29	0
+253	-29	0
+254	-29	0
+255	-29	0
+256	-29	0
+257	-29	0
+258	-29	0
+259	-29	0
+260	-29	0
+261	-29	0
+262	-29	0
+263	-29	0
+264	-29	0
+265	-29	0
+266	-29	0
+267	-29	0
+268	-29	0
+269	-29	0
+270	-29	0
+271	-29	0
+272	-29	0
+273	-29	0
+274	-29	0
+275	-29	0
+276	-29	0
+277	-29	0
+278	-29	0
+279	-29	0
+280	-29	0
+281	-29	0
+282	-29	0
+283	-29	0
+284	-29	0
+285	-29	0
+286	-29	0
+287	-29	0
+288	-29	0
+289	-29	0
+290	-29	0
+291	-29	0
+292	-29	0
+293	-29	0
+294	-29	0
+295	-29	0
+296	-29	0
+297	-29	0
+298	-29	0
+299	-29	0
+300	-29	0
+301	-29	0
+302	-29	0
+303	-29	0
+304	-29	0
+305	-29	0
+306	-29	0
+307	-29	0
+308	-29	0
+309	-29	0
+310	-29	0
+311	-29	0
+312	-29	0
+313	-29	0
+314	-29	0
+315	-29	0
+316	-29	0
+317	-29	0
+318	-29	0
+319	-29	0
+320	-29	0
+321	-29	0
+322	-29	0
+323	-29	0
+324	-29	0
+325	-29	0
+326	-29	0
+327	-29	0
+328	-29	0
+329	-29	0
+330	-29	0
+331	-29	0
+332	-29	0
+333	-29	0
+334	-29	0
+335	-29	0
+336	-29	0
+337	-29	0
+338	-29	0
+339	-29	0
+340	-29	0
+341	-29	0
+342	-29	0
+343	-29	0
+344	-29	0
+345	-29	0
+346	-29	0
+347	-29	0
+348	-29	0
+349	-29	0
+350	-29	0
+351	-29	0
+352	-29	0
+353	-29	0
+354	-29	0
+355	-29	0
+356	-29	0
+357	-29	0
+358	-29	0
+359	-29	0
+360	-29	0
+0	-28.5	0
+1	-28.5	0
+2	-28.5	0
+3	-28.5	0
+4	-28.5	0
+5	-28.5	0
+6	-28.5	0
+7	-28.5	0
+8	-28.5	0
+9	-28.5	0
+10	-28.5	0
+11	-28.5	0
+12	-28.5	0
+13	-28.5	0
+14	-28.5	0
+15	-28.5	0
+16	-28.5	0
+17	-28.5	0
+18	-28.5	0
+19	-28.5	0
+20	-28.5	0
+21	-28.5	0
+22	-28.5	0
+23	-28.5	0
+24	-28.5	0
+25	-28.5	0
+26	-28.5	0
+27	-28.5	0
+28	-28.5	0
+29	-28.5	0
+30	-28.5	0
+31	-28.5	0
+32	-28.5	0
+33	-28.5	0
+34	-28.5	0
+35	-28.5	0
+36	-28.5	0
+37	-28.5	0
+38	-28.5	0
+39	-28.5	0
+40	-28.5	0
+41	-28.5	0
+42	-28.5	0
+43	-28.5	0
+44	-28.5	0
+45	-28.5	0
+46	-28.5	0
+47	-28.5	0
+48	-28.5	0
+49	-28.5	0
+50	-28.5	0
+51	-28.5	0
+52	-28.5	0
+53	-28.5	0
+54	-28.5	0
+55	-28.5	0
+56	-28.5	0
+57	-28.5	0
+58	-28.5	0
+59	-28.5	0
+60	-28.5	0
+61	-28.5	0
+62	-28.5	0
+63	-28.5	0
+64	-28.5	0
+65	-28.5	0
+66	-28.5	0
+67	-28.5	0
+68	-28.5	0
+69	-28.5	0
+70	-28.5	0
+71	-28.5	0
+72	-28.5	0
+73	-28.5	0
+74	-28.5	0
+75	-28.5	0
+76	-28.5	0
+77	-28.5	0
+78	-28.5	0
+79	-28.5	0
+80	-28.5	0
+81	-28.5	0
+82	-28.5	0
+83	-28.5	0
+84	-28.5	0
+85	-28.5	0
+86	-28.5	0
+87	-28.5	0
+88	-28.5	0
+89	-28.5	0
+90	-28.5	0
+91	-28.5	0
+92	-28.5	0
+93	-28.5	0
+94	-28.5	0
+95	-28.5	0
+96	-28.5	0
+97	-28.5	0
+98	-28.5	0
+99	-28.5	0
+100	-28.5	0
+101	-28.5	0
+102	-28.5	0
+103	-28.5	0
+104	-28.5	0
+105	-28.5	0
+106	-28.5	0
+107	-28.5	0
+108	-28.5	0
+109	-28.5	0
+110	-28.5	0
+111	-28.5	0
+112	-28.5	0
+113	-28.5	0
+114	-28.5	0
+115	-28.5	0
+116	-28.5	0
+117	-28.5	0
+118	-28.5	0
+119	-28.5	0
+120	-28.5	0
+121	-28.5	0
+122	-28.5	0
+123	-28.5	0
+124	-28.5	0
+125	-28.5	0
+126	-28.5	0
+127	-28.5	0
+128	-28.5	0
+129	-28.5	0
+130	-28.5	0
+131	-28.5	0
+132	-28.5	0
+133	-28.5	0
+134	-28.5	0
+135	-28.5	0
+136	-28.5	0
+137	-28.5	0
+138	-28.5	0
+139	-28.5	0
+140	-28.5	0
+141	-28.5	0
+142	-28.5	0
+143	-28.5	0
+144	-28.5	0
+145	-28.5	0
+146	-28.5	0
+147	-28.5	0
+148	-28.5	0
+149	-28.5	0
+150	-28.5	0
+151	-28.5	0
+152	-28.5	0
+153	-28.5	0
+154	-28.5	0
+155	-28.5	0
+156	-28.5	0
+157	-28.5	0
+158	-28.5	0
+159	-28.5	0
+160	-28.5	0
+161	-28.5	0
+162	-28.5	0
+163	-28.5	0
+164	-28.5	0
+165	-28.5	0
+166	-28.5	0
+167	-28.5	0
+168	-28.5	0
+169	-28.5	0
+170	-28.5	0
+171	-28.5	0
+172	-28.5	0
+173	-28.5	0
+174	-28.5	0
+175	-28.5	0
+176	-28.5	0
+177	-28.5	0
+178	-28.5	0
+179	-28.5	0
+180	-28.5	0
+181	-28.5	0
+182	-28.5	0
+183	-28.5	0
+184	-28.5	0
+185	-28.5	0
+186	-28.5	0
+187	-28.5	0
+188	-28.5	0
+189	-28.5	0
+190	-28.5	0
+191	-28.5	0
+192	-28.5	0
+193	-28.5	0
+194	-28.5	0
+195	-28.5	0
+196	-28.5	0
+197	-28.5	0
+198	-28.5	0
+199	-28.5	0
+200	-28.5	0
+201	-28.5	0
+202	-28.5	0
+203	-28.5	0
+204	-28.5	0
+205	-28.5	0
+206	-28.5	0
+207	-28.5	0
+208	-28.5	0
+209	-28.5	0
+210	-28.5	0
+211	-28.5	0
+212	-28.5	0
+213	-28.5	0
+214	-28.5	0
+215	-28.5	0
+216	-28.5	0
+217	-28.5	0
+218	-28.5	0
+219	-28.5	0
+220	-28.5	0
+221	-28.5	0
+222	-28.5	0
+223	-28.5	0
+224	-28.5	0
+225	-28.5	0
+226	-28.5	0
+227	-28.5	0
+228	-28.5	0
+229	-28.5	0
+230	-28.5	0
+231	-28.5	0
+232	-28.5	0
+233	-28.5	0
+234	-28.5	0
+235	-28.5	0
+236	-28.5	0
+237	-28.5	0
+238	-28.5	0
+239	-28.5	0
+240	-28.5	0
+241	-28.5	0
+242	-28.5	0
+243	-28.5	0
+244	-28.5	0
+245	-28.5	0
+246	-28.5	0
+247	-28.5	0
+248	-28.5	0
+249	-28.5	0
+250	-28.5	0
+251	-28.5	0
+252	-28.5	0
+253	-28.5	0
+254	-28.5	0
+255	-28.5	0
+256	-28.5	0
+257	-28.5	0
+258	-28.5	0
+259	-28.5	0
+260	-28.5	0
+261	-28.5	0
+262	-28.5	0
+263	-28.5	0
+264	-28.5	0
+265	-28.5	0
+266	-28.5	0
+267	-28.5	0
+268	-28.5	0
+269	-28.5	0
+270	-28.5	0
+271	-28.5	0
+272	-28.5	0
+273	-28.5	0
+274	-28.5	0
+275	-28.5	0
+276	-28.5	0
+277	-28.5	0
+278	-28.5	0
+279	-28.5	0
+280	-28.5	0
+281	-28.5	0
+282	-28.5	0
+283	-28.5	0
+284	-28.5	0
+285	-28.5	0
+286	-28.5	0
+287	-28.5	0
+288	-28.5	0
+289	-28.5	0
+290	-28.5	0
+291	-28.5	0
+292	-28.5	0
+293	-28.5	0
+294	-28.5	0
+295	-28.5	0
+296	-28.5	0
+297	-28.5	0
+298	-28.5	0
+299	-28.5	0
+300	-28.5	0
+301	-28.5	0
+302	-28.5	0
+303	-28.5	0
+304	-28.5	0
+305	-28.5	0
+306	-28.5	0
+307	-28.5	0
+308	-28.5	0
+309	-28.5	0
+310	-28.5	0
+311	-28.5	0
+312	-28.5	0
+313	-28.5	0
+314	-28.5	0
+315	-28.5	0
+316	-28.5	0
+317	-28.5	0
+318	-28.5	0
+319	-28.5	0
+320	-28.5	0
+321	-28.5	0
+322	-28.5	0
+323	-28.5	0
+324	-28.5	0
+325	-28.5	0
+326	-28.5	0
+327	-28.5	0
+328	-28.5	0
+329	-28.5	0
+330	-28.5	0
+331	-28.5	0
+332	-28.5	0
+333	-28.5	0
+334	-28.5	0
+335	-28.5	0
+336	-28.5	0
+337	-28.5	0
+338	-28.5	0
+339	-28.5	0
+340	-28.5	0
+341	-28.5	0
+342	-28.5	0
+343	-28.5	0
+344	-28.5	0
+345	-28.5	0
+346	-28.5	0
+347	-28.5	0
+348	-28.5	0
+349	-28.5	0
+350	-28.5	0
+351	-28.5	0
+352	-28.5	0
+353	-28.5	0
+354	-28.5	0
+355	-28.5	0
+356	-28.5	0
+357	-28.5	0
+358	-28.5	0
+359	-28.5	0
+360	-28.5	0
+0	-28	0
+1	-28	0
+2	-28	0
+3	-28	0
+4	-28	0
+5	-28	0
+6	-28	0
+7	-28	0
+8	-28	0
+9	-28	0
+10	-28	0
+11	-28	0
+12	-28	0
+13	-28	0
+14	-28	0
+15	-28	0
+16	-28	0
+17	-28	0
+18	-28	0
+19	-28	0
+20	-28	0
+21	-28	0
+22	-28	0
+23	-28	0
+24	-28	0
+25	-28	0
+26	-28	0
+27	-28	0
+28	-28	0
+29	-28	0
+30	-28	0
+31	-28	0
+32	-28	0
+33	-28	0
+34	-28	0
+35	-28	0
+36	-28	0
+37	-28	0
+38	-28	0
+39	-28	0
+40	-28	0
+41	-28	0
+42	-28	0
+43	-28	0
+44	-28	0
+45	-28	0
+46	-28	0
+47	-28	0
+48	-28	0
+49	-28	0
+50	-28	0
+51	-28	0
+52	-28	0
+53	-28	0
+54	-28	0
+55	-28	0
+56	-28	0
+57	-28	0
+58	-28	0
+59	-28	0
+60	-28	0
+61	-28	0
+62	-28	0
+63	-28	0
+64	-28	0
+65	-28	0
+66	-28	0
+67	-28	0
+68	-28	0
+69	-28	0
+70	-28	0
+71	-28	0
+72	-28	0
+73	-28	0
+74	-28	0
+75	-28	0
+76	-28	0
+77	-28	0
+78	-28	0
+79	-28	0
+80	-28	0
+81	-28	0
+82	-28	0
+83	-28	0
+84	-28	0
+85	-28	0
+86	-28	0
+87	-28	0
+88	-28	0
+89	-28	0
+90	-28	0
+91	-28	0
+92	-28	0
+93	-28	0
+94	-28	0
+95	-28	0
+96	-28	0
+97	-28	0
+98	-28	0
+99	-28	0
+100	-28	0
+101	-28	0
+102	-28	0
+103	-28	0
+104	-28	0
+105	-28	0
+106	-28	0
+107	-28	0
+108	-28	0
+109	-28	0
+110	-28	0
+111	-28	0
+112	-28	0
+113	-28	0
+114	-28	0
+115	-28	0
+116	-28	0
+117	-28	0
+118	-28	0
+119	-28	0
+120	-28	0
+121	-28	0
+122	-28	0
+123	-28	0
+124	-28	0
+125	-28	0
+126	-28	0
+127	-28	0
+128	-28	0
+129	-28	0
+130	-28	0
+131	-28	0
+132	-28	0
+133	-28	0
+134	-28	0
+135	-28	0
+136	-28	0
+137	-28	0
+138	-28	0
+139	-28	0
+140	-28	0
+141	-28	0
+142	-28	0
+143	-28	0
+144	-28	0
+145	-28	0
+146	-28	0
+147	-28	0
+148	-28	0
+149	-28	0
+150	-28	0
+151	-28	0
+152	-28	0
+153	-28	0
+154	-28	0
+155	-28	0
+156	-28	0
+157	-28	0
+158	-28	0
+159	-28	0
+160	-28	0
+161	-28	0
+162	-28	0
+163	-28	0
+164	-28	0
+165	-28	0
+166	-28	0
+167	-28	0
+168	-28	0
+169	-28	0
+170	-28	0
+171	-28	0
+172	-28	0
+173	-28	0
+174	-28	0
+175	-28	0
+176	-28	0
+177	-28	0
+178	-28	0
+179	-28	0
+180	-28	0
+181	-28	0
+182	-28	0
+183	-28	0
+184	-28	0
+185	-28	0
+186	-28	0
+187	-28	0
+188	-28	0
+189	-28	0
+190	-28	0
+191	-28	0
+192	-28	0
+193	-28	0
+194	-28	0
+195	-28	0
+196	-28	0
+197	-28	0
+198	-28	0
+199	-28	0
+200	-28	0
+201	-28	0
+202	-28	0
+203	-28	0
+204	-28	0
+205	-28	0
+206	-28	0
+207	-28	0
+208	-28	0
+209	-28	0
+210	-28	0
+211	-28	0
+212	-28	0
+213	-28	0
+214	-28	0
+215	-28	0
+216	-28	0
+217	-28	0
+218	-28	0
+219	-28	0
+220	-28	0
+221	-28	0
+222	-28	0
+223	-28	0
+224	-28	0
+225	-28	0
+226	-28	0
+227	-28	0
+228	-28	0
+229	-28	0
+230	-28	0
+231	-28	0
+232	-28	0
+233	-28	0
+234	-28	0
+235	-28	0
+236	-28	0
+237	-28	0
+238	-28	0
+239	-28	0
+240	-28	0
+241	-28	0
+242	-28	0
+243	-28	0
+244	-28	0
+245	-28	0
+246	-28	0
+247	-28	0
+248	-28	0
+249	-28	0
+250	-28	0
+251	-28	0
+252	-28	0
+253	-28	0
+254	-28	0
+255	-28	0
+256	-28	0
+257	-28	0
+258	-28	0
+259	-28	0
+260	-28	0
+261	-28	0
+262	-28	0
+263	-28	0
+264	-28	0
+265	-28	0
+266	-28	0
+267	-28	0
+268	-28	0
+269	-28	0
+270	-28	0
+271	-28	0
+272	-28	0
+273	-28	0
+274	-28	0
+275	-28	0
+276	-28	0
+277	-28	0
+278	-28	0
+279	-28	0
+280	-28	0
+281	-28	0
+282	-28	0
+283	-28	0
+284	-28	0
+285	-28	0
+286	-28	0
+287	-28	0
+288	-28	0
+289	-28	0
+290	-28	0
+291	-28	0
+292	-28	0
+293	-28	0
+294	-28	0
+295	-28	0
+296	-28	0
+297	-28	0
+298	-28	0
+299	-28	0
+300	-28	0
+301	-28	0
+302	-28	0
+303	-28	0
+304	-28	0
+305	-28	0
+306	-28	0
+307	-28	0
+308	-28	0
+309	-28	0
+310	-28	0
+311	-28	0
+312	-28	0
+313	-28	0
+314	-28	0
+315	-28	0
+316	-28	0
+317	-28	0
+318	-28	0
+319	-28	0
+320	-28	0
+321	-28	0
+322	-28	0
+323	-28	0
+324	-28	0
+325	-28	0
+326	-28	0
+327	-28	0
+328	-28	0
+329	-28	0
+330	-28	0
+331	-28	0
+332	-28	0
+333	-28	0
+334	-28	0
+335	-28	0
+336	-28	0
+337	-28	0
+338	-28	0
+339	-28	0
+340	-28	0
+341	-28	0
+342	-28	0
+343	-28	0
+344	-28	0
+345	-28	0
+346	-28	0
+347	-28	0
+348	-28	0
+349	-28	0
+350	-28	0
+351	-28	0
+352	-28	0
+353	-28	0
+354	-28	0
+355	-28	0
+356	-28	0
+357	-28	0
+358	-28	0
+359	-28	0
+360	-28	0
+0	-27.5	0
+1	-27.5	0
+2	-27.5	0
+3	-27.5	0
+4	-27.5	0
+5	-27.5	0
+6	-27.5	0
+7	-27.5	0
+8	-27.5	0
+9	-27.5	0
+10	-27.5	0
+11	-27.5	0
+12	-27.5	0
+13	-27.5	0
+14	-27.5	0
+15	-27.5	0
+16	-27.5	0
+17	-27.5	0
+18	-27.5	0
+19	-27.5	0
+20	-27.5	0
+21	-27.5	0
+22	-27.5	0
+23	-27.5	0
+24	-27.5	0
+25	-27.5	0
+26	-27.5	0
+27	-27.5	0
+28	-27.5	0
+29	-27.5	0
+30	-27.5	0
+31	-27.5	0
+32	-27.5	0
+33	-27.5	0
+34	-27.5	0
+35	-27.5	0
+36	-27.5	0
+37	-27.5	0
+38	-27.5	0
+39	-27.5	0
+40	-27.5	0
+41	-27.5	0
+42	-27.5	0
+43	-27.5	0
+44	-27.5	0
+45	-27.5	0
+46	-27.5	0
+47	-27.5	0
+48	-27.5	0
+49	-27.5	0
+50	-27.5	0
+51	-27.5	0
+52	-27.5	0
+53	-27.5	0
+54	-27.5	0
+55	-27.5	0
+56	-27.5	0
+57	-27.5	0
+58	-27.5	0
+59	-27.5	0
+60	-27.5	0
+61	-27.5	0
+62	-27.5	0
+63	-27.5	0
+64	-27.5	0
+65	-27.5	0
+66	-27.5	0
+67	-27.5	0
+68	-27.5	0
+69	-27.5	0
+70	-27.5	0
+71	-27.5	0
+72	-27.5	0
+73	-27.5	0
+74	-27.5	0
+75	-27.5	0
+76	-27.5	0
+77	-27.5	0
+78	-27.5	0
+79	-27.5	0
+80	-27.5	0
+81	-27.5	0
+82	-27.5	0
+83	-27.5	0
+84	-27.5	0
+85	-27.5	0
+86	-27.5	0
+87	-27.5	0
+88	-27.5	0
+89	-27.5	0
+90	-27.5	0
+91	-27.5	0
+92	-27.5	0
+93	-27.5	0
+94	-27.5	0
+95	-27.5	0
+96	-27.5	0
+97	-27.5	0
+98	-27.5	0
+99	-27.5	0
+100	-27.5	0
+101	-27.5	0
+102	-27.5	0
+103	-27.5	0
+104	-27.5	0
+105	-27.5	0
+106	-27.5	0
+107	-27.5	0
+108	-27.5	0
+109	-27.5	0
+110	-27.5	0
+111	-27.5	0
+112	-27.5	0
+113	-27.5	0
+114	-27.5	0
+115	-27.5	0
+116	-27.5	0
+117	-27.5	0
+118	-27.5	0
+119	-27.5	0
+120	-27.5	0
+121	-27.5	0
+122	-27.5	0
+123	-27.5	0
+124	-27.5	0
+125	-27.5	0
+126	-27.5	0
+127	-27.5	0
+128	-27.5	0
+129	-27.5	0
+130	-27.5	0
+131	-27.5	0
+132	-27.5	0
+133	-27.5	0
+134	-27.5	0
+135	-27.5	0
+136	-27.5	0
+137	-27.5	0
+138	-27.5	0
+139	-27.5	0
+140	-27.5	0
+141	-27.5	0
+142	-27.5	0
+143	-27.5	0
+144	-27.5	0
+145	-27.5	0
+146	-27.5	0
+147	-27.5	0
+148	-27.5	0
+149	-27.5	0
+150	-27.5	0
+151	-27.5	0
+152	-27.5	0
+153	-27.5	0
+154	-27.5	0
+155	-27.5	0
+156	-27.5	0
+157	-27.5	0
+158	-27.5	0
+159	-27.5	0
+160	-27.5	0
+161	-27.5	0
+162	-27.5	0
+163	-27.5	0
+164	-27.5	0
+165	-27.5	0
+166	-27.5	0
+167	-27.5	0
+168	-27.5	0
+169	-27.5	0
+170	-27.5	0
+171	-27.5	0
+172	-27.5	0
+173	-27.5	0
+174	-27.5	0
+175	-27.5	0
+176	-27.5	0
+177	-27.5	0
+178	-27.5	0
+179	-27.5	0
+180	-27.5	0
+181	-27.5	0
+182	-27.5	0
+183	-27.5	0
+184	-27.5	0
+185	-27.5	0
+186	-27.5	0
+187	-27.5	0
+188	-27.5	0
+189	-27.5	0
+190	-27.5	0
+191	-27.5	0
+192	-27.5	0
+193	-27.5	0
+194	-27.5	0
+195	-27.5	0
+196	-27.5	0
+197	-27.5	0
+198	-27.5	0
+199	-27.5	0
+200	-27.5	0
+201	-27.5	0
+202	-27.5	0
+203	-27.5	0
+204	-27.5	0
+205	-27.5	0
+206	-27.5	0
+207	-27.5	0
+208	-27.5	0
+209	-27.5	0
+210	-27.5	0
+211	-27.5	0
+212	-27.5	0
+213	-27.5	0
+214	-27.5	0
+215	-27.5	0
+216	-27.5	0
+217	-27.5	0
+218	-27.5	0
+219	-27.5	0
+220	-27.5	0
+221	-27.5	0
+222	-27.5	0
+223	-27.5	0
+224	-27.5	0
+225	-27.5	0
+226	-27.5	0
+227	-27.5	0
+228	-27.5	0
+229	-27.5	0
+230	-27.5	0
+231	-27.5	0
+232	-27.5	0
+233	-27.5	0
+234	-27.5	0
+235	-27.5	0
+236	-27.5	0
+237	-27.5	0
+238	-27.5	0
+239	-27.5	0
+240	-27.5	0
+241	-27.5	0
+242	-27.5	0
+243	-27.5	0
+244	-27.5	0
+245	-27.5	0
+246	-27.5	0
+247	-27.5	0
+248	-27.5	0
+249	-27.5	0
+250	-27.5	0
+251	-27.5	0
+252	-27.5	0
+253	-27.5	0
+254	-27.5	0
+255	-27.5	0
+256	-27.5	0
+257	-27.5	0
+258	-27.5	0
+259	-27.5	0
+260	-27.5	0
+261	-27.5	0
+262	-27.5	0
+263	-27.5	0
+264	-27.5	0
+265	-27.5	0
+266	-27.5	0
+267	-27.5	0
+268	-27.5	0
+269	-27.5	0
+270	-27.5	0
+271	-27.5	0
+272	-27.5	0
+273	-27.5	0
+274	-27.5	0
+275	-27.5	0
+276	-27.5	0
+277	-27.5	0
+278	-27.5	0
+279	-27.5	0
+280	-27.5	0
+281	-27.5	0
+282	-27.5	0
+283	-27.5	0
+284	-27.5	0
+285	-27.5	0
+286	-27.5	0
+287	-27.5	0
+288	-27.5	0
+289	-27.5	0
+290	-27.5	0
+291	-27.5	0
+292	-27.5	0
+293	-27.5	0
+294	-27.5	0
+295	-27.5	0
+296	-27.5	0
+297	-27.5	0
+298	-27.5	0
+299	-27.5	0
+300	-27.5	0
+301	-27.5	0
+302	-27.5	0
+303	-27.5	0
+304	-27.5	0
+305	-27.5	0
+306	-27.5	0
+307	-27.5	0
+308	-27.5	0
+309	-27.5	0
+310	-27.5	0
+311	-27.5	0
+312	-27.5	0
+313	-27.5	0
+314	-27.5	0
+315	-27.5	0
+316	-27.5	0
+317	-27.5	0
+318	-27.5	0
+319	-27.5	0
+320	-27.5	0
+321	-27.5	0
+322	-27.5	0
+323	-27.5	0
+324	-27.5	0
+325	-27.5	0
+326	-27.5	0
+327	-27.5	0
+328	-27.5	0
+329	-27.5	0
+330	-27.5	0
+331	-27.5	0
+332	-27.5	0
+333	-27.5	0
+334	-27.5	0
+335	-27.5	0
+336	-27.5	0
+337	-27.5	0
+338	-27.5	0
+339	-27.5	0
+340	-27.5	0
+341	-27.5	0
+342	-27.5	0
+343	-27.5	0
+344	-27.5	0
+345	-27.5	0
+346	-27.5	0
+347	-27.5	0
+348	-27.5	0
+349	-27.5	0
+350	-27.5	0
+351	-27.5	0
+352	-27.5	0
+353	-27.5	0
+354	-27.5	0
+355	-27.5	0
+356	-27.5	0
+357	-27.5	0
+358	-27.5	0
+359	-27.5	0
+360	-27.5	0
+0	-27	0
+1	-27	0
+2	-27	0
+3	-27	0
+4	-27	0
+5	-27	0
+6	-27	0
+7	-27	0
+8	-27	0
+9	-27	0
+10	-27	0
+11	-27	0
+12	-27	0
+13	-27	0
+14	-27	0
+15	-27	0
+16	-27	0
+17	-27	0
+18	-27	0
+19	-27	0
+20	-27	0
+21	-27	0
+22	-27	0
+23	-27	0
+24	-27	0
+25	-27	0
+26	-27	0
+27	-27	0
+28	-27	0
+29	-27	0
+30	-27	0
+31	-27	0
+32	-27	0
+33	-27	0
+34	-27	0
+35	-27	0
+36	-27	0
+37	-27	0
+38	-27	0
+39	-27	0
+40	-27	0
+41	-27	0
+42	-27	0
+43	-27	0
+44	-27	0
+45	-27	0
+46	-27	0
+47	-27	0
+48	-27	0
+49	-27	0
+50	-27	0
+51	-27	0
+52	-27	0
+53	-27	0
+54	-27	0
+55	-27	0
+56	-27	0
+57	-27	0
+58	-27	0
+59	-27	0
+60	-27	0
+61	-27	0
+62	-27	0
+63	-27	0
+64	-27	0
+65	-27	0
+66	-27	0
+67	-27	0
+68	-27	0
+69	-27	0
+70	-27	0
+71	-27	0
+72	-27	0
+73	-27	0
+74	-27	0
+75	-27	0
+76	-27	0
+77	-27	0
+78	-27	0
+79	-27	0
+80	-27	0
+81	-27	0
+82	-27	0
+83	-27	0
+84	-27	0
+85	-27	0
+86	-27	0
+87	-27	0
+88	-27	0
+89	-27	0
+90	-27	0
+91	-27	0
+92	-27	0
+93	-27	0
+94	-27	0
+95	-27	0
+96	-27	0
+97	-27	0
+98	-27	0
+99	-27	0
+100	-27	0
+101	-27	0
+102	-27	0
+103	-27	0
+104	-27	0
+105	-27	0
+106	-27	0
+107	-27	0
+108	-27	0
+109	-27	0
+110	-27	0
+111	-27	0
+112	-27	0
+113	-27	0
+114	-27	0
+115	-27	0
+116	-27	0
+117	-27	0
+118	-27	0
+119	-27	0
+120	-27	0
+121	-27	0
+122	-27	0
+123	-27	0
+124	-27	0
+125	-27	0
+126	-27	0
+127	-27	0
+128	-27	0
+129	-27	0
+130	-27	0
+131	-27	0
+132	-27	0
+133	-27	0
+134	-27	0
+135	-27	0
+136	-27	0
+137	-27	0
+138	-27	0
+139	-27	0
+140	-27	0
+141	-27	0
+142	-27	0
+143	-27	0
+144	-27	0
+145	-27	0
+146	-27	0
+147	-27	0
+148	-27	0
+149	-27	0
+150	-27	0
+151	-27	0
+152	-27	0
+153	-27	0
+154	-27	0
+155	-27	0
+156	-27	0
+157	-27	0
+158	-27	0
+159	-27	0
+160	-27	0
+161	-27	0
+162	-27	0
+163	-27	0
+164	-27	0
+165	-27	0
+166	-27	0
+167	-27	0
+168	-27	0
+169	-27	0
+170	-27	0
+171	-27	0
+172	-27	0
+173	-27	0
+174	-27	0
+175	-27	0
+176	-27	0
+177	-27	0
+178	-27	0
+179	-27	0
+180	-27	0
+181	-27	0
+182	-27	0
+183	-27	0
+184	-27	0
+185	-27	0
+186	-27	0
+187	-27	0
+188	-27	0
+189	-27	0
+190	-27	0
+191	-27	0
+192	-27	0
+193	-27	0
+194	-27	0
+195	-27	0
+196	-27	0
+197	-27	0
+198	-27	0
+199	-27	0
+200	-27	0
+201	-27	0
+202	-27	0
+203	-27	0
+204	-27	0
+205	-27	0
+206	-27	0
+207	-27	0
+208	-27	0
+209	-27	0
+210	-27	0
+211	-27	0
+212	-27	0
+213	-27	0
+214	-27	0
+215	-27	0
+216	-27	0
+217	-27	0
+218	-27	0
+219	-27	0
+220	-27	0
+221	-27	0
+222	-27	0
+223	-27	0
+224	-27	0
+225	-27	0
+226	-27	0
+227	-27	0
+228	-27	0
+229	-27	0
+230	-27	0
+231	-27	0
+232	-27	0
+233	-27	0
+234	-27	0
+235	-27	0
+236	-27	0
+237	-27	0
+238	-27	0
+239	-27	0
+240	-27	0
+241	-27	0
+242	-27	0
+243	-27	0
+244	-27	0
+245	-27	0
+246	-27	0
+247	-27	0
+248	-27	0
+249	-27	0
+250	-27	0
+251	-27	0
+252	-27	0
+253	-27	0
+254	-27	0
+255	-27	0
+256	-27	0
+257	-27	0
+258	-27	0
+259	-27	0
+260	-27	0
+261	-27	0
+262	-27	0
+263	-27	0
+264	-27	0
+265	-27	0
+266	-27	0
+267	-27	0
+268	-27	0
+269	-27	0
+270	-27	0
+271	-27	0
+272	-27	0
+273	-27	0
+274	-27	0
+275	-27	0
+276	-27	0
+277	-27	0
+278	-27	0
+279	-27	0
+280	-27	0
+281	-27	0
+282	-27	0
+283	-27	0
+284	-27	0
+285	-27	0
+286	-27	0
+287	-27	0
+288	-27	0
+289	-27	0
+290	-27	0
+291	-27	0
+292	-27	0
+293	-27	0
+294	-27	0
+295	-27	0
+296	-27	0
+297	-27	0
+298	-27	0
+299	-27	0
+300	-27	0
+301	-27	0
+302	-27	0
+303	-27	0
+304	-27	0
+305	-27	0
+306	-27	0
+307	-27	0
+308	-27	0
+309	-27	0
+310	-27	0
+311	-27	0
+312	-27	0
+313	-27	0
+314	-27	0
+315	-27	0
+316	-27	0
+317	-27	0
+318	-27	0
+319	-27	0
+320	-27	0
+321	-27	0
+322	-27	0
+323	-27	0
+324	-27	0
+325	-27	0
+326	-27	0
+327	-27	0
+328	-27	0
+329	-27	0
+330	-27	0
+331	-27	0
+332	-27	0
+333	-27	0
+334	-27	0
+335	-27	0
+336	-27	0
+337	-27	0
+338	-27	0
+339	-27	0
+340	-27	0
+341	-27	0
+342	-27	0
+343	-27	0
+344	-27	0
+345	-27	0
+346	-27	0
+347	-27	0
+348	-27	0
+349	-27	0
+350	-27	0
+351	-27	0
+352	-27	0
+353	-27	0
+354	-27	0
+355	-27	0
+356	-27	0
+357	-27	0
+358	-27	0
+359	-27	0
+360	-27	0
+0	-26.5	0
+1	-26.5	0
+2	-26.5	0
+3	-26.5	0
+4	-26.5	0
+5	-26.5	0
+6	-26.5	0
+7	-26.5	0
+8	-26.5	0
+9	-26.5	0
+10	-26.5	0
+11	-26.5	0
+12	-26.5	0
+13	-26.5	0
+14	-26.5	0
+15	-26.5	0
+16	-26.5	0
+17	-26.5	0
+18	-26.5	0
+19	-26.5	0
+20	-26.5	0
+21	-26.5	0
+22	-26.5	0
+23	-26.5	0
+24	-26.5	0
+25	-26.5	0
+26	-26.5	0
+27	-26.5	0
+28	-26.5	0
+29	-26.5	0
+30	-26.5	0
+31	-26.5	0
+32	-26.5	0
+33	-26.5	0
+34	-26.5	0
+35	-26.5	0
+36	-26.5	0
+37	-26.5	0
+38	-26.5	0
+39	-26.5	0
+40	-26.5	0
+41	-26.5	0
+42	-26.5	0
+43	-26.5	0
+44	-26.5	0
+45	-26.5	0
+46	-26.5	0
+47	-26.5	0
+48	-26.5	0
+49	-26.5	0
+50	-26.5	0
+51	-26.5	0
+52	-26.5	0
+53	-26.5	0
+54	-26.5	0
+55	-26.5	0
+56	-26.5	0
+57	-26.5	0
+58	-26.5	0
+59	-26.5	0
+60	-26.5	0
+61	-26.5	0
+62	-26.5	0
+63	-26.5	0
+64	-26.5	0
+65	-26.5	0
+66	-26.5	0
+67	-26.5	0
+68	-26.5	0
+69	-26.5	0
+70	-26.5	0
+71	-26.5	0
+72	-26.5	0
+73	-26.5	0
+74	-26.5	0
+75	-26.5	0
+76	-26.5	0
+77	-26.5	0
+78	-26.5	0
+79	-26.5	0
+80	-26.5	0
+81	-26.5	0
+82	-26.5	0
+83	-26.5	0
+84	-26.5	0
+85	-26.5	0
+86	-26.5	0
+87	-26.5	0
+88	-26.5	0
+89	-26.5	0
+90	-26.5	0
+91	-26.5	0
+92	-26.5	0
+93	-26.5	0
+94	-26.5	0
+95	-26.5	0
+96	-26.5	0
+97	-26.5	0
+98	-26.5	0
+99	-26.5	0
+100	-26.5	0
+101	-26.5	0
+102	-26.5	0
+103	-26.5	0
+104	-26.5	0
+105	-26.5	0
+106	-26.5	0
+107	-26.5	0
+108	-26.5	0
+109	-26.5	0
+110	-26.5	0
+111	-26.5	0
+112	-26.5	0
+113	-26.5	0
+114	-26.5	0
+115	-26.5	0
+116	-26.5	0
+117	-26.5	0
+118	-26.5	0
+119	-26.5	0
+120	-26.5	0
+121	-26.5	0
+122	-26.5	0
+123	-26.5	0
+124	-26.5	0
+125	-26.5	0
+126	-26.5	0
+127	-26.5	0
+128	-26.5	0
+129	-26.5	0
+130	-26.5	0
+131	-26.5	0
+132	-26.5	0
+133	-26.5	0
+134	-26.5	0
+135	-26.5	0
+136	-26.5	0
+137	-26.5	0
+138	-26.5	0
+139	-26.5	0
+140	-26.5	0
+141	-26.5	0
+142	-26.5	0
+143	-26.5	0
+144	-26.5	0
+145	-26.5	0
+146	-26.5	0
+147	-26.5	0
+148	-26.5	0
+149	-26.5	0
+150	-26.5	0
+151	-26.5	0
+152	-26.5	0
+153	-26.5	0
+154	-26.5	0
+155	-26.5	0
+156	-26.5	0
+157	-26.5	0
+158	-26.5	0
+159	-26.5	0
+160	-26.5	0
+161	-26.5	0
+162	-26.5	0
+163	-26.5	0
+164	-26.5	0
+165	-26.5	0
+166	-26.5	0
+167	-26.5	0
+168	-26.5	0
+169	-26.5	0
+170	-26.5	0
+171	-26.5	0
+172	-26.5	0
+173	-26.5	0
+174	-26.5	0
+175	-26.5	0
+176	-26.5	0
+177	-26.5	0
+178	-26.5	0
+179	-26.5	0
+180	-26.5	0
+181	-26.5	0
+182	-26.5	0
+183	-26.5	0
+184	-26.5	0
+185	-26.5	0
+186	-26.5	0
+187	-26.5	0
+188	-26.5	0
+189	-26.5	0
+190	-26.5	0
+191	-26.5	0
+192	-26.5	0
+193	-26.5	0
+194	-26.5	0
+195	-26.5	0
+196	-26.5	0
+197	-26.5	0
+198	-26.5	0
+199	-26.5	0
+200	-26.5	0
+201	-26.5	0
+202	-26.5	0
+203	-26.5	0
+204	-26.5	0
+205	-26.5	0
+206	-26.5	0
+207	-26.5	0
+208	-26.5	0
+209	-26.5	0
+210	-26.5	0
+211	-26.5	0
+212	-26.5	0
+213	-26.5	0
+214	-26.5	0
+215	-26.5	0
+216	-26.5	0
+217	-26.5	0
+218	-26.5	0
+219	-26.5	0
+220	-26.5	0
+221	-26.5	0
+222	-26.5	0
+223	-26.5	0
+224	-26.5	0
+225	-26.5	0
+226	-26.5	0
+227	-26.5	0
+228	-26.5	0
+229	-26.5	0
+230	-26.5	0
+231	-26.5	0
+232	-26.5	0
+233	-26.5	0
+234	-26.5	0
+235	-26.5	0
+236	-26.5	0
+237	-26.5	0
+238	-26.5	0
+239	-26.5	0
+240	-26.5	0
+241	-26.5	0
+242	-26.5	0
+243	-26.5	0
+244	-26.5	0
+245	-26.5	0
+246	-26.5	0
+247	-26.5	0
+248	-26.5	0
+249	-26.5	0
+250	-26.5	0
+251	-26.5	0
+252	-26.5	0
+253	-26.5	0
+254	-26.5	0
+255	-26.5	0
+256	-26.5	0
+257	-26.5	0
+258	-26.5	0
+259	-26.5	0
+260	-26.5	0
+261	-26.5	0
+262	-26.5	0
+263	-26.5	0
+264	-26.5	0
+265	-26.5	0
+266	-26.5	0
+267	-26.5	0
+268	-26.5	0
+269	-26.5	0
+270	-26.5	0
+271	-26.5	0
+272	-26.5	0
+273	-26.5	0
+274	-26.5	0
+275	-26.5	0
+276	-26.5	0
+277	-26.5	0
+278	-26.5	0
+279	-26.5	0
+280	-26.5	0
+281	-26.5	0
+282	-26.5	0
+283	-26.5	0
+284	-26.5	0
+285	-26.5	0
+286	-26.5	0
+287	-26.5	0
+288	-26.5	0
+289	-26.5	0
+290	-26.5	0
+291	-26.5	0
+292	-26.5	0
+293	-26.5	0
+294	-26.5	0
+295	-26.5	0
+296	-26.5	0
+297	-26.5	0
+298	-26.5	0
+299	-26.5	0
+300	-26.5	0
+301	-26.5	0
+302	-26.5	0
+303	-26.5	0
+304	-26.5	0
+305	-26.5	0
+306	-26.5	0
+307	-26.5	0
+308	-26.5	0
+309	-26.5	0
+310	-26.5	0
+311	-26.5	0
+312	-26.5	0
+313	-26.5	0
+314	-26.5	0
+315	-26.5	0
+316	-26.5	0
+317	-26.5	0
+318	-26.5	0
+319	-26.5	0
+320	-26.5	0
+321	-26.5	0
+322	-26.5	0
+323	-26.5	0
+324	-26.5	0
+325	-26.5	0
+326	-26.5	0
+327	-26.5	0
+328	-26.5	0
+329	-26.5	0
+330	-26.5	0
+331	-26.5	0
+332	-26.5	0
+333	-26.5	0
+334	-26.5	0
+335	-26.5	0
+336	-26.5	0
+337	-26.5	0
+338	-26.5	0
+339	-26.5	0
+340	-26.5	0
+341	-26.5	0
+342	-26.5	0
+343	-26.5	0
+344	-26.5	0
+345	-26.5	0
+346	-26.5	0
+347	-26.5	0
+348	-26.5	0
+349	-26.5	0
+350	-26.5	0
+351	-26.5	0
+352	-26.5	0
+353	-26.5	0
+354	-26.5	0
+355	-26.5	0
+356	-26.5	0
+357	-26.5	0
+358	-26.5	0
+359	-26.5	0
+360	-26.5	0
+0	-26	0
+1	-26	0
+2	-26	0
+3	-26	0
+4	-26	0
+5	-26	0
+6	-26	0
+7	-26	0
+8	-26	0
+9	-26	0
+10	-26	0
+11	-26	0
+12	-26	0
+13	-26	0
+14	-26	0
+15	-26	0
+16	-26	0
+17	-26	0
+18	-26	0
+19	-26	0
+20	-26	0
+21	-26	0
+22	-26	0
+23	-26	0
+24	-26	0
+25	-26	0
+26	-26	0
+27	-26	0
+28	-26	0
+29	-26	0
+30	-26	0
+31	-26	0
+32	-26	0
+33	-26	0
+34	-26	0
+35	-26	0
+36	-26	0
+37	-26	0
+38	-26	0
+39	-26	0
+40	-26	0
+41	-26	0
+42	-26	0
+43	-26	0
+44	-26	0
+45	-26	0
+46	-26	0
+47	-26	0
+48	-26	0
+49	-26	0
+50	-26	0
+51	-26	0
+52	-26	0
+53	-26	0
+54	-26	0
+55	-26	0
+56	-26	0
+57	-26	0
+58	-26	0
+59	-26	0
+60	-26	0
+61	-26	0
+62	-26	0
+63	-26	0
+64	-26	0
+65	-26	0
+66	-26	0
+67	-26	0
+68	-26	0
+69	-26	0
+70	-26	0
+71	-26	0
+72	-26	0
+73	-26	0
+74	-26	0
+75	-26	0
+76	-26	0
+77	-26	0
+78	-26	0
+79	-26	0
+80	-26	0
+81	-26	0
+82	-26	0
+83	-26	0
+84	-26	0
+85	-26	0
+86	-26	0
+87	-26	0
+88	-26	0
+89	-26	0
+90	-26	0
+91	-26	0
+92	-26	0
+93	-26	0
+94	-26	0
+95	-26	0
+96	-26	0
+97	-26	0
+98	-26	0
+99	-26	0
+100	-26	0
+101	-26	0
+102	-26	0
+103	-26	0
+104	-26	0
+105	-26	0
+106	-26	0
+107	-26	0
+108	-26	0
+109	-26	0
+110	-26	0
+111	-26	0
+112	-26	0
+113	-26	0
+114	-26	0
+115	-26	0
+116	-26	0
+117	-26	0
+118	-26	0
+119	-26	0
+120	-26	0
+121	-26	0
+122	-26	0
+123	-26	0
+124	-26	0
+125	-26	0
+126	-26	0
+127	-26	0
+128	-26	0
+129	-26	0
+130	-26	0
+131	-26	0
+132	-26	0
+133	-26	0
+134	-26	0
+135	-26	0
+136	-26	0
+137	-26	0
+138	-26	0
+139	-26	0
+140	-26	0
+141	-26	0
+142	-26	0
+143	-26	0
+144	-26	0
+145	-26	0
+146	-26	0
+147	-26	0
+148	-26	0
+149	-26	0
+150	-26	0
+151	-26	0
+152	-26	0
+153	-26	0
+154	-26	0
+155	-26	0
+156	-26	0
+157	-26	0
+158	-26	0
+159	-26	0
+160	-26	0
+161	-26	0
+162	-26	0
+163	-26	0
+164	-26	0
+165	-26	0
+166	-26	0
+167	-26	0
+168	-26	0
+169	-26	0
+170	-26	0
+171	-26	0
+172	-26	0
+173	-26	0
+174	-26	0
+175	-26	0
+176	-26	0
+177	-26	0
+178	-26	0
+179	-26	0
+180	-26	0
+181	-26	0
+182	-26	0
+183	-26	0
+184	-26	0
+185	-26	0
+186	-26	0
+187	-26	0
+188	-26	0
+189	-26	0
+190	-26	0
+191	-26	0
+192	-26	0
+193	-26	0
+194	-26	0
+195	-26	0
+196	-26	0
+197	-26	0
+198	-26	0
+199	-26	0
+200	-26	0
+201	-26	0
+202	-26	0
+203	-26	0
+204	-26	0
+205	-26	0
+206	-26	0
+207	-26	0
+208	-26	0
+209	-26	0
+210	-26	0
+211	-26	0
+212	-26	0
+213	-26	0
+214	-26	0
+215	-26	0
+216	-26	0
+217	-26	0
+218	-26	0
+219	-26	0
+220	-26	0
+221	-26	0
+222	-26	0
+223	-26	0
+224	-26	0
+225	-26	0
+226	-26	0
+227	-26	0
+228	-26	0
+229	-26	0
+230	-26	0
+231	-26	0
+232	-26	0
+233	-26	0
+234	-26	0
+235	-26	0
+236	-26	0
+237	-26	0
+238	-26	0
+239	-26	0
+240	-26	0
+241	-26	0
+242	-26	0
+243	-26	0
+244	-26	0
+245	-26	0
+246	-26	0
+247	-26	0
+248	-26	0
+249	-26	0
+250	-26	0
+251	-26	0
+252	-26	0
+253	-26	0
+254	-26	0
+255	-26	0
+256	-26	0
+257	-26	0
+258	-26	0
+259	-26	0
+260	-26	0
+261	-26	0
+262	-26	0
+263	-26	0
+264	-26	0
+265	-26	0
+266	-26	0
+267	-26	0
+268	-26	0
+269	-26	0
+270	-26	0
+271	-26	0
+272	-26	0
+273	-26	0
+274	-26	0
+275	-26	0
+276	-26	0
+277	-26	0
+278	-26	0
+279	-26	0
+280	-26	0
+281	-26	0
+282	-26	0
+283	-26	0
+284	-26	0
+285	-26	0
+286	-26	0
+287	-26	0
+288	-26	0
+289	-26	0
+290	-26	0
+291	-26	0
+292	-26	0
+293	-26	0
+294	-26	0
+295	-26	0
+296	-26	0
+297	-26	0
+298	-26	0
+299	-26	0
+300	-26	0
+301	-26	0
+302	-26	0
+303	-26	0
+304	-26	0
+305	-26	0
+306	-26	0
+307	-26	0
+308	-26	0
+309	-26	0
+310	-26	0
+311	-26	0
+312	-26	0
+313	-26	0
+314	-26	0
+315	-26	0
+316	-26	0
+317	-26	0
+318	-26	0
+319	-26	0
+320	-26	0
+321	-26	0
+322	-26	0
+323	-26	0
+324	-26	0
+325	-26	0
+326	-26	0
+327	-26	0
+328	-26	0
+329	-26	0
+330	-26	0
+331	-26	0
+332	-26	0
+333	-26	0
+334	-26	0
+335	-26	0
+336	-26	0
+337	-26	0
+338	-26	0
+339	-26	0
+340	-26	0
+341	-26	0
+342	-26	0
+343	-26	0
+344	-26	0
+345	-26	0
+346	-26	0
+347	-26	0
+348	-26	0
+349	-26	0
+350	-26	0
+351	-26	0
+352	-26	0
+353	-26	0
+354	-26	0
+355	-26	0
+356	-26	0
+357	-26	0
+358	-26	0
+359	-26	0
+360	-26	0
+0	-25.5	0
+1	-25.5	0
+2	-25.5	0
+3	-25.5	0
+4	-25.5	0
+5	-25.5	0
+6	-25.5	0
+7	-25.5	0
+8	-25.5	0
+9	-25.5	0
+10	-25.5	0
+11	-25.5	0
+12	-25.5	0
+13	-25.5	0
+14	-25.5	0
+15	-25.5	0
+16	-25.5	0
+17	-25.5	0
+18	-25.5	0
+19	-25.5	0
+20	-25.5	0
+21	-25.5	0
+22	-25.5	0
+23	-25.5	0
+24	-25.5	0
+25	-25.5	0
+26	-25.5	0
+27	-25.5	0
+28	-25.5	0
+29	-25.5	0
+30	-25.5	0
+31	-25.5	0
+32	-25.5	0
+33	-25.5	0
+34	-25.5	0
+35	-25.5	0
+36	-25.5	0
+37	-25.5	0
+38	-25.5	0
+39	-25.5	0
+40	-25.5	0
+41	-25.5	0
+42	-25.5	0
+43	-25.5	0
+44	-25.5	0
+45	-25.5	0
+46	-25.5	0
+47	-25.5	0
+48	-25.5	0
+49	-25.5	0
+50	-25.5	0
+51	-25.5	0
+52	-25.5	0
+53	-25.5	0
+54	-25.5	0
+55	-25.5	0
+56	-25.5	0
+57	-25.5	0
+58	-25.5	0
+59	-25.5	0
+60	-25.5	0
+61	-25.5	0
+62	-25.5	0
+63	-25.5	0
+64	-25.5	0
+65	-25.5	0
+66	-25.5	0
+67	-25.5	0
+68	-25.5	0
+69	-25.5	0
+70	-25.5	0
+71	-25.5	0
+72	-25.5	0
+73	-25.5	0
+74	-25.5	0
+75	-25.5	0
+76	-25.5	0
+77	-25.5	0
+78	-25.5	0
+79	-25.5	0
+80	-25.5	0
+81	-25.5	0
+82	-25.5	0
+83	-25.5	0
+84	-25.5	0
+85	-25.5	0
+86	-25.5	0
+87	-25.5	0
+88	-25.5	0
+89	-25.5	0
+90	-25.5	0
+91	-25.5	0
+92	-25.5	0
+93	-25.5	0
+94	-25.5	0
+95	-25.5	0
+96	-25.5	0
+97	-25.5	0
+98	-25.5	0
+99	-25.5	0
+100	-25.5	0
+101	-25.5	0
+102	-25.5	0
+103	-25.5	0
+104	-25.5	0
+105	-25.5	0
+106	-25.5	0
+107	-25.5	0
+108	-25.5	0
+109	-25.5	0
+110	-25.5	0
+111	-25.5	0
+112	-25.5	0
+113	-25.5	0
+114	-25.5	0
+115	-25.5	0
+116	-25.5	0
+117	-25.5	0
+118	-25.5	0
+119	-25.5	0
+120	-25.5	0
+121	-25.5	0
+122	-25.5	0
+123	-25.5	0
+124	-25.5	0
+125	-25.5	0
+126	-25.5	0
+127	-25.5	0
+128	-25.5	0
+129	-25.5	0
+130	-25.5	0
+131	-25.5	0
+132	-25.5	0
+133	-25.5	0
+134	-25.5	0
+135	-25.5	0
+136	-25.5	0
+137	-25.5	0
+138	-25.5	0
+139	-25.5	0
+140	-25.5	0
+141	-25.5	0
+142	-25.5	0
+143	-25.5	0
+144	-25.5	0
+145	-25.5	0
+146	-25.5	0
+147	-25.5	0
+148	-25.5	0
+149	-25.5	0
+150	-25.5	0
+151	-25.5	0
+152	-25.5	0
+153	-25.5	0
+154	-25.5	0
+155	-25.5	0
+156	-25.5	0
+157	-25.5	0
+158	-25.5	0
+159	-25.5	0
+160	-25.5	0
+161	-25.5	0
+162	-25.5	0
+163	-25.5	0
+164	-25.5	0
+165	-25.5	0
+166	-25.5	0
+167	-25.5	0
+168	-25.5	0
+169	-25.5	0
+170	-25.5	0
+171	-25.5	0
+172	-25.5	0
+173	-25.5	0
+174	-25.5	0
+175	-25.5	0
+176	-25.5	0
+177	-25.5	0
+178	-25.5	0
+179	-25.5	0
+180	-25.5	0
+181	-25.5	0
+182	-25.5	0
+183	-25.5	0
+184	-25.5	0
+185	-25.5	0
+186	-25.5	0
+187	-25.5	0
+188	-25.5	0
+189	-25.5	0
+190	-25.5	0
+191	-25.5	0
+192	-25.5	0
+193	-25.5	0
+194	-25.5	0
+195	-25.5	0
+196	-25.5	0
+197	-25.5	0
+198	-25.5	0
+199	-25.5	0
+200	-25.5	0
+201	-25.5	0
+202	-25.5	0
+203	-25.5	0
+204	-25.5	0
+205	-25.5	0
+206	-25.5	0
+207	-25.5	0
+208	-25.5	0
+209	-25.5	0
+210	-25.5	0
+211	-25.5	0
+212	-25.5	0
+213	-25.5	0
+214	-25.5	0
+215	-25.5	0
+216	-25.5	0
+217	-25.5	0
+218	-25.5	0
+219	-25.5	0
+220	-25.5	0
+221	-25.5	0
+222	-25.5	0
+223	-25.5	0
+224	-25.5	0
+225	-25.5	0
+226	-25.5	0
+227	-25.5	0
+228	-25.5	0
+229	-25.5	0
+230	-25.5	0
+231	-25.5	0
+232	-25.5	0
+233	-25.5	0
+234	-25.5	0
+235	-25.5	0
+236	-25.5	0
+237	-25.5	0
+238	-25.5	0
+239	-25.5	0
+240	-25.5	0
+241	-25.5	0
+242	-25.5	0
+243	-25.5	0
+244	-25.5	0
+245	-25.5	0
+246	-25.5	0
+247	-25.5	0
+248	-25.5	0
+249	-25.5	0
+250	-25.5	0
+251	-25.5	0
+252	-25.5	0
+253	-25.5	0
+254	-25.5	0
+255	-25.5	0
+256	-25.5	0
+257	-25.5	0
+258	-25.5	0
+259	-25.5	0
+260	-25.5	0
+261	-25.5	0
+262	-25.5	0
+263	-25.5	0
+264	-25.5	0
+265	-25.5	0
+266	-25.5	0
+267	-25.5	0
+268	-25.5	0
+269	-25.5	0
+270	-25.5	0
+271	-25.5	0
+272	-25.5	0
+273	-25.5	0
+274	-25.5	0
+275	-25.5	0
+276	-25.5	0
+277	-25.5	0
+278	-25.5	0
+279	-25.5	0
+280	-25.5	0
+281	-25.5	0
+282	-25.5	0
+283	-25.5	0
+284	-25.5	0
+285	-25.5	0
+286	-25.5	0
+287	-25.5	0
+288	-25.5	0
+289	-25.5	0
+290	-25.5	0
+291	-25.5	0
+292	-25.5	0
+293	-25.5	0
+294	-25.5	0
+295	-25.5	0
+296	-25.5	0
+297	-25.5	0
+298	-25.5	0
+299	-25.5	0
+300	-25.5	0
+301	-25.5	0
+302	-25.5	0
+303	-25.5	0
+304	-25.5	0
+305	-25.5	0
+306	-25.5	0
+307	-25.5	0
+308	-25.5	0
+309	-25.5	0
+310	-25.5	0
+311	-25.5	0
+312	-25.5	0
+313	-25.5	0
+314	-25.5	0
+315	-25.5	0
+316	-25.5	0
+317	-25.5	0
+318	-25.5	0
+319	-25.5	0
+320	-25.5	0
+321	-25.5	0
+322	-25.5	0
+323	-25.5	0
+324	-25.5	0
+325	-25.5	0
+326	-25.5	0
+327	-25.5	0
+328	-25.5	0
+329	-25.5	0
+330	-25.5	0
+331	-25.5	0
+332	-25.5	0
+333	-25.5	0
+334	-25.5	0
+335	-25.5	0
+336	-25.5	0
+337	-25.5	0
+338	-25.5	0
+339	-25.5	0
+340	-25.5	0
+341	-25.5	0
+342	-25.5	0
+343	-25.5	0
+344	-25.5	0
+345	-25.5	0
+346	-25.5	0
+347	-25.5	0
+348	-25.5	0
+349	-25.5	0
+350	-25.5	0
+351	-25.5	0
+352	-25.5	0
+353	-25.5	0
+354	-25.5	0
+355	-25.5	0
+356	-25.5	0
+357	-25.5	0
+358	-25.5	0
+359	-25.5	0
+360	-25.5	0
+0	-25	0
+1	-25	0
+2	-25	0
+3	-25	0
+4	-25	0
+5	-25	0
+6	-25	0
+7	-25	0
+8	-25	0
+9	-25	0
+10	-25	0
+11	-25	0
+12	-25	0
+13	-25	0
+14	-25	0
+15	-25	0
+16	-25	0
+17	-25	0
+18	-25	0
+19	-25	0
+20	-25	0
+21	-25	0
+22	-25	0
+23	-25	0
+24	-25	0
+25	-25	0
+26	-25	0
+27	-25	0
+28	-25	0
+29	-25	0
+30	-25	0
+31	-25	0
+32	-25	0
+33	-25	0
+34	-25	0
+35	-25	0
+36	-25	0
+37	-25	0
+38	-25	0
+39	-25	0
+40	-25	0
+41	-25	0
+42	-25	0
+43	-25	0
+44	-25	0
+45	-25	0
+46	-25	0
+47	-25	0
+48	-25	0
+49	-25	0
+50	-25	0
+51	-25	0
+52	-25	0
+53	-25	0
+54	-25	0
+55	-25	0
+56	-25	0
+57	-25	0
+58	-25	0
+59	-25	0
+60	-25	0
+61	-25	0
+62	-25	0
+63	-25	0
+64	-25	0
+65	-25	0
+66	-25	0
+67	-25	0
+68	-25	0
+69	-25	0
+70	-25	0
+71	-25	0
+72	-25	0
+73	-25	0
+74	-25	0
+75	-25	0
+76	-25	0
+77	-25	0
+78	-25	0
+79	-25	0
+80	-25	0
+81	-25	0
+82	-25	0
+83	-25	0
+84	-25	0
+85	-25	0
+86	-25	0
+87	-25	0
+88	-25	0
+89	-25	0
+90	-25	0
+91	-25	0
+92	-25	0
+93	-25	0
+94	-25	0
+95	-25	0
+96	-25	0
+97	-25	0
+98	-25	0
+99	-25	0
+100	-25	0
+101	-25	0
+102	-25	0
+103	-25	0
+104	-25	0
+105	-25	0
+106	-25	0
+107	-25	0
+108	-25	0
+109	-25	0
+110	-25	0
+111	-25	0
+112	-25	0
+113	-25	0
+114	-25	0
+115	-25	0
+116	-25	0
+117	-25	0
+118	-25	0
+119	-25	0
+120	-25	0
+121	-25	0
+122	-25	0
+123	-25	0
+124	-25	0
+125	-25	0
+126	-25	0
+127	-25	0
+128	-25	0
+129	-25	0
+130	-25	0
+131	-25	0
+132	-25	0
+133	-25	0
+134	-25	0
+135	-25	0
+136	-25	0
+137	-25	0
+138	-25	0
+139	-25	0
+140	-25	0
+141	-25	0
+142	-25	0
+143	-25	0
+144	-25	0
+145	-25	0
+146	-25	0
+147	-25	0
+148	-25	0
+149	-25	0
+150	-25	0
+151	-25	0
+152	-25	0
+153	-25	0
+154	-25	0
+155	-25	0
+156	-25	0
+157	-25	0
+158	-25	0
+159	-25	0
+160	-25	0
+161	-25	0
+162	-25	0
+163	-25	0
+164	-25	0
+165	-25	0
+166	-25	0
+167	-25	0
+168	-25	0
+169	-25	0
+170	-25	0
+171	-25	0
+172	-25	0
+173	-25	0
+174	-25	0
+175	-25	0
+176	-25	0
+177	-25	0
+178	-25	0
+179	-25	0
+180	-25	0
+181	-25	0
+182	-25	0
+183	-25	0
+184	-25	0
+185	-25	0
+186	-25	0
+187	-25	0
+188	-25	0
+189	-25	0
+190	-25	0
+191	-25	0
+192	-25	0
+193	-25	0
+194	-25	0
+195	-25	0
+196	-25	0
+197	-25	0
+198	-25	0
+199	-25	0
+200	-25	0
+201	-25	0
+202	-25	0
+203	-25	0
+204	-25	0
+205	-25	0
+206	-25	0
+207	-25	0
+208	-25	0
+209	-25	0
+210	-25	0
+211	-25	0
+212	-25	0
+213	-25	0
+214	-25	0
+215	-25	0
+216	-25	0
+217	-25	0
+218	-25	0
+219	-25	0
+220	-25	0
+221	-25	0
+222	-25	0
+223	-25	0
+224	-25	0
+225	-25	0
+226	-25	0
+227	-25	0
+228	-25	0
+229	-25	0
+230	-25	0
+231	-25	0
+232	-25	0
+233	-25	0
+234	-25	0
+235	-25	0
+236	-25	0
+237	-25	0
+238	-25	0
+239	-25	0
+240	-25	0
+241	-25	0
+242	-25	0
+243	-25	0
+244	-25	0
+245	-25	0
+246	-25	0
+247	-25	0
+248	-25	0
+249	-25	0
+250	-25	0
+251	-25	0
+252	-25	0
+253	-25	0
+254	-25	0
+255	-25	0
+256	-25	0
+257	-25	0
+258	-25	0
+259	-25	0
+260	-25	0
+261	-25	0
+262	-25	0
+263	-25	0
+264	-25	0
+265	-25	0
+266	-25	0
+267	-25	0
+268	-25	0
+269	-25	0
+270	-25	0
+271	-25	0
+272	-25	0
+273	-25	0
+274	-25	0
+275	-25	0
+276	-25	0
+277	-25	0
+278	-25	0
+279	-25	0
+280	-25	0
+281	-25	0
+282	-25	0
+283	-25	0
+284	-25	0
+285	-25	0
+286	-25	0
+287	-25	0
+288	-25	0
+289	-25	0
+290	-25	0
+291	-25	0
+292	-25	0
+293	-25	0
+294	-25	0
+295	-25	0
+296	-25	0
+297	-25	0
+298	-25	0
+299	-25	0
+300	-25	0
+301	-25	0
+302	-25	0
+303	-25	0
+304	-25	0
+305	-25	0
+306	-25	0
+307	-25	0
+308	-25	0
+309	-25	0
+310	-25	0
+311	-25	0
+312	-25	0
+313	-25	0
+314	-25	0
+315	-25	0
+316	-25	0
+317	-25	0
+318	-25	0
+319	-25	0
+320	-25	0
+321	-25	0
+322	-25	0
+323	-25	0
+324	-25	0
+325	-25	0
+326	-25	0
+327	-25	0
+328	-25	0
+329	-25	0
+330	-25	0
+331	-25	0
+332	-25	0
+333	-25	0
+334	-25	0
+335	-25	0
+336	-25	0
+337	-25	0
+338	-25	0
+339	-25	0
+340	-25	0
+341	-25	0
+342	-25	0
+343	-25	0
+344	-25	0
+345	-25	0
+346	-25	0
+347	-25	0
+348	-25	0
+349	-25	0
+350	-25	0
+351	-25	0
+352	-25	0
+353	-25	0
+354	-25	0
+355	-25	0
+356	-25	0
+357	-25	0
+358	-25	0
+359	-25	0
+360	-25	0
+0	-24.5	0
+1	-24.5	0
+2	-24.5	0
+3	-24.5	0
+4	-24.5	0
+5	-24.5	0
+6	-24.5	0
+7	-24.5	0
+8	-24.5	0
+9	-24.5	0
+10	-24.5	0
+11	-24.5	0
+12	-24.5	0
+13	-24.5	0
+14	-24.5	0
+15	-24.5	0
+16	-24.5	0
+17	-24.5	0
+18	-24.5	0
+19	-24.5	0
+20	-24.5	0
+21	-24.5	0
+22	-24.5	0
+23	-24.5	0
+24	-24.5	0
+25	-24.5	0
+26	-24.5	0
+27	-24.5	0
+28	-24.5	0
+29	-24.5	0
+30	-24.5	0
+31	-24.5	0
+32	-24.5	0
+33	-24.5	0
+34	-24.5	0
+35	-24.5	0
+36	-24.5	0
+37	-24.5	0
+38	-24.5	0
+39	-24.5	0
+40	-24.5	0
+41	-24.5	0
+42	-24.5	0
+43	-24.5	0
+44	-24.5	0
+45	-24.5	0
+46	-24.5	0
+47	-24.5	0
+48	-24.5	0
+49	-24.5	0
+50	-24.5	0
+51	-24.5	0
+52	-24.5	0
+53	-24.5	0
+54	-24.5	0
+55	-24.5	0
+56	-24.5	0
+57	-24.5	0
+58	-24.5	0
+59	-24.5	0
+60	-24.5	0
+61	-24.5	0
+62	-24.5	0
+63	-24.5	0
+64	-24.5	0
+65	-24.5	0
+66	-24.5	0
+67	-24.5	0
+68	-24.5	0
+69	-24.5	0
+70	-24.5	0
+71	-24.5	0
+72	-24.5	0
+73	-24.5	0
+74	-24.5	0
+75	-24.5	0
+76	-24.5	0
+77	-24.5	0
+78	-24.5	0
+79	-24.5	0
+80	-24.5	0
+81	-24.5	0
+82	-24.5	0
+83	-24.5	0
+84	-24.5	0
+85	-24.5	0
+86	-24.5	0
+87	-24.5	0
+88	-24.5	0
+89	-24.5	0
+90	-24.5	0
+91	-24.5	0
+92	-24.5	0
+93	-24.5	0
+94	-24.5	0
+95	-24.5	0
+96	-24.5	0
+97	-24.5	0
+98	-24.5	0
+99	-24.5	0
+100	-24.5	0
+101	-24.5	0
+102	-24.5	0
+103	-24.5	0
+104	-24.5	0
+105	-24.5	0
+106	-24.5	0
+107	-24.5	0
+108	-24.5	0
+109	-24.5	0
+110	-24.5	0
+111	-24.5	0
+112	-24.5	0
+113	-24.5	0
+114	-24.5	0
+115	-24.5	0
+116	-24.5	0
+117	-24.5	0
+118	-24.5	0
+119	-24.5	0
+120	-24.5	0
+121	-24.5	0
+122	-24.5	0
+123	-24.5	0
+124	-24.5	0
+125	-24.5	0
+126	-24.5	0
+127	-24.5	0
+128	-24.5	0
+129	-24.5	0
+130	-24.5	0
+131	-24.5	0
+132	-24.5	0
+133	-24.5	0
+134	-24.5	0
+135	-24.5	0
+136	-24.5	0
+137	-24.5	0
+138	-24.5	0
+139	-24.5	0
+140	-24.5	0
+141	-24.5	0
+142	-24.5	0
+143	-24.5	0
+144	-24.5	0
+145	-24.5	0
+146	-24.5	0
+147	-24.5	0
+148	-24.5	0
+149	-24.5	0
+150	-24.5	0
+151	-24.5	0
+152	-24.5	0
+153	-24.5	0
+154	-24.5	0
+155	-24.5	0
+156	-24.5	0
+157	-24.5	0
+158	-24.5	0
+159	-24.5	0
+160	-24.5	0
+161	-24.5	0
+162	-24.5	0
+163	-24.5	0
+164	-24.5	0
+165	-24.5	0
+166	-24.5	0
+167	-24.5	0
+168	-24.5	0
+169	-24.5	0
+170	-24.5	0
+171	-24.5	0
+172	-24.5	0
+173	-24.5	0
+174	-24.5	0
+175	-24.5	0
+176	-24.5	0
+177	-24.5	0
+178	-24.5	0
+179	-24.5	0
+180	-24.5	0
+181	-24.5	0
+182	-24.5	0
+183	-24.5	0
+184	-24.5	0
+185	-24.5	0
+186	-24.5	0
+187	-24.5	0
+188	-24.5	0
+189	-24.5	0
+190	-24.5	0
+191	-24.5	0
+192	-24.5	0
+193	-24.5	0
+194	-24.5	0
+195	-24.5	0
+196	-24.5	0
+197	-24.5	0
+198	-24.5	0
+199	-24.5	0
+200	-24.5	0
+201	-24.5	0
+202	-24.5	0
+203	-24.5	0
+204	-24.5	0
+205	-24.5	0
+206	-24.5	0
+207	-24.5	0
+208	-24.5	0
+209	-24.5	0
+210	-24.5	0
+211	-24.5	0
+212	-24.5	0
+213	-24.5	0
+214	-24.5	0
+215	-24.5	0
+216	-24.5	0
+217	-24.5	0
+218	-24.5	0
+219	-24.5	0
+220	-24.5	0
+221	-24.5	0
+222	-24.5	0
+223	-24.5	0
+224	-24.5	0
+225	-24.5	0
+226	-24.5	0
+227	-24.5	0
+228	-24.5	0
+229	-24.5	0
+230	-24.5	0
+231	-24.5	0
+232	-24.5	0
+233	-24.5	0
+234	-24.5	0
+235	-24.5	0
+236	-24.5	0
+237	-24.5	0
+238	-24.5	0
+239	-24.5	0
+240	-24.5	0
+241	-24.5	0
+242	-24.5	0
+243	-24.5	0
+244	-24.5	0
+245	-24.5	0
+246	-24.5	0
+247	-24.5	0
+248	-24.5	0
+249	-24.5	0
+250	-24.5	0
+251	-24.5	0
+252	-24.5	0
+253	-24.5	0
+254	-24.5	0
+255	-24.5	0
+256	-24.5	0
+257	-24.5	0
+258	-24.5	0
+259	-24.5	0
+260	-24.5	0
+261	-24.5	0
+262	-24.5	0
+263	-24.5	0
+264	-24.5	0
+265	-24.5	0
+266	-24.5	0
+267	-24.5	0
+268	-24.5	0
+269	-24.5	0
+270	-24.5	0
+271	-24.5	0
+272	-24.5	0
+273	-24.5	0
+274	-24.5	0
+275	-24.5	0
+276	-24.5	0
+277	-24.5	0
+278	-24.5	0
+279	-24.5	0
+280	-24.5	0
+281	-24.5	0
+282	-24.5	0
+283	-24.5	0
+284	-24.5	0
+285	-24.5	0
+286	-24.5	0
+287	-24.5	0
+288	-24.5	0
+289	-24.5	0
+290	-24.5	0
+291	-24.5	0
+292	-24.5	0
+293	-24.5	0
+294	-24.5	0
+295	-24.5	0
+296	-24.5	0
+297	-24.5	0
+298	-24.5	0
+299	-24.5	0
+300	-24.5	0
+301	-24.5	0
+302	-24.5	0
+303	-24.5	0
+304	-24.5	0
+305	-24.5	0
+306	-24.5	0
+307	-24.5	0
+308	-24.5	0
+309	-24.5	0
+310	-24.5	0
+311	-24.5	0
+312	-24.5	0
+313	-24.5	0
+314	-24.5	0
+315	-24.5	0
+316	-24.5	0
+317	-24.5	0
+318	-24.5	0
+319	-24.5	0
+320	-24.5	0
+321	-24.5	0
+322	-24.5	0
+323	-24.5	0
+324	-24.5	0
+325	-24.5	0
+326	-24.5	0
+327	-24.5	0
+328	-24.5	0
+329	-24.5	0
+330	-24.5	0
+331	-24.5	0
+332	-24.5	0
+333	-24.5	0
+334	-24.5	0
+335	-24.5	0
+336	-24.5	0
+337	-24.5	0
+338	-24.5	0
+339	-24.5	0
+340	-24.5	0
+341	-24.5	0
+342	-24.5	0
+343	-24.5	0
+344	-24.5	0
+345	-24.5	0
+346	-24.5	0
+347	-24.5	0
+348	-24.5	0
+349	-24.5	0
+350	-24.5	0
+351	-24.5	0
+352	-24.5	0
+353	-24.5	0
+354	-24.5	0
+355	-24.5	0
+356	-24.5	0
+357	-24.5	0
+358	-24.5	0
+359	-24.5	0
+360	-24.5	0
+0	-24	0
+1	-24	0
+2	-24	0
+3	-24	0
+4	-24	0
+5	-24	0
+6	-24	0
+7	-24	0
+8	-24	0
+9	-24	0
+10	-24	0
+11	-24	0
+12	-24	0
+13	-24	0
+14	-24	0
+15	-24	0
+16	-24	0
+17	-24	0
+18	-24	0
+19	-24	0
+20	-24	0
+21	-24	0
+22	-24	0
+23	-24	0
+24	-24	0
+25	-24	0
+26	-24	0
+27	-24	0
+28	-24	0
+29	-24	0
+30	-24	0
+31	-24	0
+32	-24	0
+33	-24	0
+34	-24	0
+35	-24	0
+36	-24	0
+37	-24	0
+38	-24	0
+39	-24	0
+40	-24	0
+41	-24	0
+42	-24	0
+43	-24	0
+44	-24	0
+45	-24	0
+46	-24	0
+47	-24	0
+48	-24	0
+49	-24	0
+50	-24	0
+51	-24	0
+52	-24	0
+53	-24	0
+54	-24	0
+55	-24	0
+56	-24	0
+57	-24	0
+58	-24	0
+59	-24	0
+60	-24	0
+61	-24	0
+62	-24	0
+63	-24	0
+64	-24	0
+65	-24	0
+66	-24	0
+67	-24	0
+68	-24	0
+69	-24	0
+70	-24	0
+71	-24	0
+72	-24	0
+73	-24	0
+74	-24	0
+75	-24	0
+76	-24	0
+77	-24	0
+78	-24	0
+79	-24	0
+80	-24	0
+81	-24	0
+82	-24	0
+83	-24	0
+84	-24	0
+85	-24	0
+86	-24	0
+87	-24	0
+88	-24	0
+89	-24	0
+90	-24	0
+91	-24	0
+92	-24	0
+93	-24	0
+94	-24	0
+95	-24	0
+96	-24	0
+97	-24	0
+98	-24	0
+99	-24	0
+100	-24	0
+101	-24	0
+102	-24	0
+103	-24	0
+104	-24	0
+105	-24	0
+106	-24	0
+107	-24	0
+108	-24	0
+109	-24	0
+110	-24	0
+111	-24	0
+112	-24	0
+113	-24	0
+114	-24	0
+115	-24	0
+116	-24	0
+117	-24	0
+118	-24	0
+119	-24	0
+120	-24	0
+121	-24	0
+122	-24	0
+123	-24	0
+124	-24	0
+125	-24	0
+126	-24	0
+127	-24	0
+128	-24	0
+129	-24	0
+130	-24	0
+131	-24	0
+132	-24	0
+133	-24	0
+134	-24	0
+135	-24	0
+136	-24	0
+137	-24	0
+138	-24	0
+139	-24	0
+140	-24	0
+141	-24	0
+142	-24	0
+143	-24	0
+144	-24	0
+145	-24	0
+146	-24	0
+147	-24	0
+148	-24	0
+149	-24	0
+150	-24	0
+151	-24	0
+152	-24	0
+153	-24	0
+154	-24	0
+155	-24	0
+156	-24	0
+157	-24	0
+158	-24	0
+159	-24	0
+160	-24	0
+161	-24	0
+162	-24	0
+163	-24	0
+164	-24	0
+165	-24	0
+166	-24	0
+167	-24	0
+168	-24	0
+169	-24	0
+170	-24	0
+171	-24	0
+172	-24	0
+173	-24	0
+174	-24	0
+175	-24	0
+176	-24	0
+177	-24	0
+178	-24	0
+179	-24	0
+180	-24	0
+181	-24	0
+182	-24	0
+183	-24	0
+184	-24	0
+185	-24	0
+186	-24	0
+187	-24	0
+188	-24	0
+189	-24	0
+190	-24	0
+191	-24	0
+192	-24	0
+193	-24	0
+194	-24	0
+195	-24	0
+196	-24	0
+197	-24	0
+198	-24	0
+199	-24	0
+200	-24	0
+201	-24	0
+202	-24	0
+203	-24	0
+204	-24	0
+205	-24	0
+206	-24	0
+207	-24	0
+208	-24	0
+209	-24	0
+210	-24	0
+211	-24	0
+212	-24	0
+213	-24	0
+214	-24	0
+215	-24	0
+216	-24	0
+217	-24	0
+218	-24	0
+219	-24	0
+220	-24	0
+221	-24	0
+222	-24	0
+223	-24	0
+224	-24	0
+225	-24	0
+226	-24	0
+227	-24	0
+228	-24	0
+229	-24	0
+230	-24	0
+231	-24	0
+232	-24	0
+233	-24	0
+234	-24	0
+235	-24	0
+236	-24	0
+237	-24	0
+238	-24	0
+239	-24	0
+240	-24	0
+241	-24	0
+242	-24	0
+243	-24	0
+244	-24	0
+245	-24	0
+246	-24	0
+247	-24	0
+248	-24	0
+249	-24	0
+250	-24	0
+251	-24	0
+252	-24	0
+253	-24	0
+254	-24	0
+255	-24	0
+256	-24	0
+257	-24	0
+258	-24	0
+259	-24	0
+260	-24	0
+261	-24	0
+262	-24	0
+263	-24	0
+264	-24	0
+265	-24	0
+266	-24	0
+267	-24	0
+268	-24	0
+269	-24	0
+270	-24	0
+271	-24	0
+272	-24	0
+273	-24	0
+274	-24	0
+275	-24	0
+276	-24	0
+277	-24	0
+278	-24	0
+279	-24	0
+280	-24	0
+281	-24	0
+282	-24	0
+283	-24	0
+284	-24	0
+285	-24	0
+286	-24	0
+287	-24	0
+288	-24	0
+289	-24	0
+290	-24	0
+291	-24	0
+292	-24	0
+293	-24	0
+294	-24	0
+295	-24	0
+296	-24	0
+297	-24	0
+298	-24	0
+299	-24	0
+300	-24	0
+301	-24	0
+302	-24	0
+303	-24	0
+304	-24	0
+305	-24	0
+306	-24	0
+307	-24	0
+308	-24	0
+309	-24	0
+310	-24	0
+311	-24	0
+312	-24	0
+313	-24	0
+314	-24	0
+315	-24	0
+316	-24	0
+317	-24	0
+318	-24	0
+319	-24	0
+320	-24	0
+321	-24	0
+322	-24	0
+323	-24	0
+324	-24	0
+325	-24	0
+326	-24	0
+327	-24	0
+328	-24	0
+329	-24	0
+330	-24	0
+331	-24	0
+332	-24	0
+333	-24	0
+334	-24	0
+335	-24	0
+336	-24	0
+337	-24	0
+338	-24	0
+339	-24	0
+340	-24	0
+341	-24	0
+342	-24	0
+343	-24	0
+344	-24	0
+345	-24	0
+346	-24	0
+347	-24	0
+348	-24	0
+349	-24	0
+350	-24	0
+351	-24	0
+352	-24	0
+353	-24	0
+354	-24	0
+355	-24	0
+356	-24	0
+357	-24	0
+358	-24	0
+359	-24	0
+360	-24	0
+0	-23.5	0
+1	-23.5	0
+2	-23.5	0
+3	-23.5	0
+4	-23.5	0
+5	-23.5	0
+6	-23.5	0
+7	-23.5	0
+8	-23.5	0
+9	-23.5	0
+10	-23.5	0
+11	-23.5	0
+12	-23.5	0
+13	-23.5	0
+14	-23.5	0
+15	-23.5	0
+16	-23.5	0
+17	-23.5	0
+18	-23.5	0
+19	-23.5	0
+20	-23.5	0
+21	-23.5	0
+22	-23.5	0
+23	-23.5	0
+24	-23.5	0
+25	-23.5	0
+26	-23.5	0
+27	-23.5	0
+28	-23.5	0
+29	-23.5	0
+30	-23.5	0
+31	-23.5	0
+32	-23.5	0
+33	-23.5	0
+34	-23.5	0
+35	-23.5	0
+36	-23.5	0
+37	-23.5	0
+38	-23.5	0
+39	-23.5	0
+40	-23.5	0
+41	-23.5	0
+42	-23.5	0
+43	-23.5	0
+44	-23.5	0
+45	-23.5	0
+46	-23.5	0
+47	-23.5	0
+48	-23.5	0
+49	-23.5	0
+50	-23.5	0
+51	-23.5	0
+52	-23.5	0
+53	-23.5	0
+54	-23.5	0
+55	-23.5	0
+56	-23.5	0
+57	-23.5	0
+58	-23.5	0
+59	-23.5	0
+60	-23.5	0
+61	-23.5	0
+62	-23.5	0
+63	-23.5	0
+64	-23.5	0
+65	-23.5	0
+66	-23.5	0
+67	-23.5	0
+68	-23.5	0
+69	-23.5	0
+70	-23.5	0
+71	-23.5	0
+72	-23.5	0
+73	-23.5	0
+74	-23.5	0
+75	-23.5	0
+76	-23.5	0
+77	-23.5	0
+78	-23.5	0
+79	-23.5	0
+80	-23.5	0
+81	-23.5	0
+82	-23.5	0
+83	-23.5	0
+84	-23.5	0
+85	-23.5	0
+86	-23.5	0
+87	-23.5	0
+88	-23.5	0
+89	-23.5	0
+90	-23.5	0
+91	-23.5	0
+92	-23.5	0
+93	-23.5	0
+94	-23.5	0
+95	-23.5	0
+96	-23.5	0
+97	-23.5	0
+98	-23.5	0
+99	-23.5	0
+100	-23.5	0
+101	-23.5	0
+102	-23.5	0
+103	-23.5	0
+104	-23.5	0
+105	-23.5	0
+106	-23.5	0
+107	-23.5	0
+108	-23.5	0
+109	-23.5	0
+110	-23.5	0
+111	-23.5	0
+112	-23.5	0
+113	-23.5	0
+114	-23.5	0
+115	-23.5	0
+116	-23.5	0
+117	-23.5	0
+118	-23.5	0
+119	-23.5	0
+120	-23.5	0
+121	-23.5	0
+122	-23.5	0
+123	-23.5	0
+124	-23.5	0
+125	-23.5	0
+126	-23.5	0
+127	-23.5	0
+128	-23.5	0
+129	-23.5	0
+130	-23.5	0
+131	-23.5	0
+132	-23.5	0
+133	-23.5	0
+134	-23.5	0
+135	-23.5	0
+136	-23.5	0
+137	-23.5	0
+138	-23.5	0
+139	-23.5	0
+140	-23.5	0
+141	-23.5	0
+142	-23.5	0
+143	-23.5	0
+144	-23.5	0
+145	-23.5	0
+146	-23.5	0
+147	-23.5	0
+148	-23.5	0
+149	-23.5	0
+150	-23.5	0
+151	-23.5	0
+152	-23.5	0
+153	-23.5	0
+154	-23.5	0
+155	-23.5	0
+156	-23.5	0
+157	-23.5	0
+158	-23.5	0
+159	-23.5	0
+160	-23.5	0
+161	-23.5	0
+162	-23.5	0
+163	-23.5	0
+164	-23.5	0
+165	-23.5	0
+166	-23.5	0
+167	-23.5	0
+168	-23.5	0
+169	-23.5	0
+170	-23.5	0
+171	-23.5	0
+172	-23.5	0
+173	-23.5	0
+174	-23.5	0
+175	-23.5	0
+176	-23.5	0
+177	-23.5	0
+178	-23.5	0
+179	-23.5	0
+180	-23.5	0
+181	-23.5	0
+182	-23.5	0
+183	-23.5	0
+184	-23.5	0
+185	-23.5	0
+186	-23.5	0
+187	-23.5	0
+188	-23.5	0
+189	-23.5	0
+190	-23.5	0
+191	-23.5	0
+192	-23.5	0
+193	-23.5	0
+194	-23.5	0
+195	-23.5	0
+196	-23.5	0
+197	-23.5	0
+198	-23.5	0
+199	-23.5	0
+200	-23.5	0
+201	-23.5	0
+202	-23.5	0
+203	-23.5	0
+204	-23.5	0
+205	-23.5	0
+206	-23.5	0
+207	-23.5	0
+208	-23.5	0
+209	-23.5	0
+210	-23.5	0
+211	-23.5	0
+212	-23.5	0
+213	-23.5	0
+214	-23.5	0
+215	-23.5	0
+216	-23.5	0
+217	-23.5	0
+218	-23.5	0
+219	-23.5	0
+220	-23.5	0
+221	-23.5	0
+222	-23.5	0
+223	-23.5	0
+224	-23.5	0
+225	-23.5	0
+226	-23.5	0
+227	-23.5	0
+228	-23.5	0
+229	-23.5	0
+230	-23.5	0
+231	-23.5	0
+232	-23.5	0
+233	-23.5	0
+234	-23.5	0
+235	-23.5	0
+236	-23.5	0
+237	-23.5	0
+238	-23.5	0
+239	-23.5	0
+240	-23.5	0
+241	-23.5	0
+242	-23.5	0
+243	-23.5	0
+244	-23.5	0
+245	-23.5	0
+246	-23.5	0
+247	-23.5	0
+248	-23.5	0
+249	-23.5	0
+250	-23.5	0
+251	-23.5	0
+252	-23.5	0
+253	-23.5	0
+254	-23.5	0
+255	-23.5	0
+256	-23.5	0
+257	-23.5	0
+258	-23.5	0
+259	-23.5	0
+260	-23.5	0
+261	-23.5	0
+262	-23.5	0
+263	-23.5	0
+264	-23.5	0
+265	-23.5	0
+266	-23.5	0
+267	-23.5	0
+268	-23.5	0
+269	-23.5	0
+270	-23.5	0
+271	-23.5	0
+272	-23.5	0
+273	-23.5	0
+274	-23.5	0
+275	-23.5	0
+276	-23.5	0
+277	-23.5	0
+278	-23.5	0
+279	-23.5	0
+280	-23.5	0
+281	-23.5	0
+282	-23.5	0
+283	-23.5	0
+284	-23.5	0
+285	-23.5	0
+286	-23.5	0
+287	-23.5	0
+288	-23.5	0
+289	-23.5	0
+290	-23.5	0
+291	-23.5	0
+292	-23.5	0
+293	-23.5	0
+294	-23.5	0
+295	-23.5	0
+296	-23.5	0
+297	-23.5	0
+298	-23.5	0
+299	-23.5	0
+300	-23.5	0
+301	-23.5	0
+302	-23.5	0
+303	-23.5	0
+304	-23.5	0
+305	-23.5	0
+306	-23.5	0
+307	-23.5	0
+308	-23.5	0
+309	-23.5	0
+310	-23.5	0
+311	-23.5	0
+312	-23.5	0
+313	-23.5	0
+314	-23.5	0
+315	-23.5	0
+316	-23.5	0
+317	-23.5	0
+318	-23.5	0
+319	-23.5	0
+320	-23.5	0
+321	-23.5	0
+322	-23.5	0
+323	-23.5	0
+324	-23.5	0
+325	-23.5	0
+326	-23.5	0
+327	-23.5	0
+328	-23.5	0
+329	-23.5	0
+330	-23.5	0
+331	-23.5	0
+332	-23.5	0
+333	-23.5	0
+334	-23.5	0
+335	-23.5	0
+336	-23.5	0
+337	-23.5	0
+338	-23.5	0
+339	-23.5	0
+340	-23.5	0
+341	-23.5	0
+342	-23.5	0
+343	-23.5	0
+344	-23.5	0
+345	-23.5	0
+346	-23.5	0
+347	-23.5	0
+348	-23.5	0
+349	-23.5	0
+350	-23.5	0
+351	-23.5	0
+352	-23.5	0
+353	-23.5	0
+354	-23.5	0
+355	-23.5	0
+356	-23.5	0
+357	-23.5	0
+358	-23.5	0
+359	-23.5	0
+360	-23.5	0
+0	-23	0
+1	-23	0
+2	-23	0
+3	-23	0
+4	-23	0
+5	-23	0
+6	-23	0
+7	-23	0
+8	-23	0
+9	-23	0
+10	-23	0
+11	-23	0
+12	-23	0
+13	-23	0
+14	-23	0
+15	-23	0
+16	-23	0
+17	-23	0
+18	-23	0
+19	-23	0
+20	-23	0
+21	-23	0
+22	-23	0
+23	-23	0
+24	-23	0
+25	-23	0
+26	-23	0
+27	-23	0
+28	-23	0
+29	-23	0
+30	-23	0
+31	-23	0
+32	-23	0
+33	-23	0
+34	-23	0
+35	-23	0
+36	-23	0
+37	-23	0
+38	-23	0
+39	-23	0
+40	-23	0
+41	-23	0
+42	-23	0
+43	-23	0
+44	-23	0
+45	-23	0
+46	-23	0
+47	-23	0
+48	-23	0
+49	-23	0
+50	-23	0
+51	-23	0
+52	-23	0
+53	-23	0
+54	-23	0
+55	-23	0
+56	-23	0
+57	-23	0
+58	-23	0
+59	-23	0
+60	-23	0
+61	-23	0
+62	-23	0
+63	-23	0
+64	-23	0
+65	-23	0
+66	-23	0
+67	-23	0
+68	-23	0
+69	-23	0
+70	-23	0
+71	-23	0
+72	-23	0
+73	-23	0
+74	-23	0
+75	-23	0
+76	-23	0
+77	-23	0
+78	-23	0
+79	-23	0
+80	-23	0
+81	-23	0
+82	-23	0
+83	-23	0
+84	-23	0
+85	-23	0
+86	-23	0
+87	-23	0
+88	-23	0
+89	-23	0
+90	-23	0
+91	-23	0
+92	-23	0
+93	-23	0
+94	-23	0
+95	-23	0
+96	-23	0
+97	-23	0
+98	-23	0
+99	-23	0
+100	-23	0
+101	-23	0
+102	-23	0
+103	-23	0
+104	-23	0
+105	-23	0
+106	-23	0
+107	-23	0
+108	-23	0
+109	-23	0
+110	-23	0
+111	-23	0
+112	-23	0
+113	-23	0
+114	-23	0
+115	-23	0
+116	-23	0
+117	-23	0
+118	-23	0
+119	-23	0
+120	-23	0
+121	-23	0
+122	-23	0
+123	-23	0
+124	-23	0
+125	-23	0
+126	-23	0
+127	-23	0
+128	-23	0
+129	-23	0
+130	-23	0
+131	-23	0
+132	-23	0
+133	-23	0
+134	-23	0
+135	-23	0
+136	-23	0
+137	-23	0
+138	-23	0
+139	-23	0
+140	-23	0
+141	-23	0
+142	-23	0
+143	-23	0
+144	-23	0
+145	-23	0
+146	-23	0
+147	-23	0
+148	-23	0
+149	-23	0
+150	-23	0
+151	-23	0
+152	-23	0
+153	-23	0
+154	-23	0
+155	-23	0
+156	-23	0
+157	-23	0
+158	-23	0
+159	-23	0
+160	-23	0
+161	-23	0
+162	-23	0
+163	-23	0
+164	-23	0
+165	-23	0
+166	-23	0
+167	-23	0
+168	-23	0
+169	-23	0
+170	-23	0
+171	-23	0
+172	-23	0
+173	-23	0
+174	-23	0
+175	-23	0
+176	-23	0
+177	-23	0
+178	-23	0
+179	-23	0
+180	-23	0
+181	-23	0
+182	-23	0
+183	-23	0
+184	-23	0
+185	-23	0
+186	-23	0
+187	-23	0
+188	-23	0
+189	-23	0
+190	-23	0
+191	-23	0
+192	-23	0
+193	-23	0
+194	-23	0
+195	-23	0
+196	-23	0
+197	-23	0
+198	-23	0
+199	-23	0
+200	-23	0
+201	-23	0
+202	-23	0
+203	-23	0
+204	-23	0
+205	-23	0
+206	-23	0
+207	-23	0
+208	-23	0
+209	-23	0
+210	-23	0
+211	-23	0
+212	-23	0
+213	-23	0
+214	-23	0
+215	-23	0
+216	-23	0
+217	-23	0
+218	-23	0
+219	-23	0
+220	-23	0
+221	-23	0
+222	-23	0
+223	-23	0
+224	-23	0
+225	-23	0
+226	-23	0
+227	-23	0
+228	-23	0
+229	-23	0
+230	-23	0
+231	-23	0
+232	-23	0
+233	-23	0
+234	-23	0
+235	-23	0
+236	-23	0
+237	-23	0
+238	-23	0
+239	-23	0
+240	-23	0
+241	-23	0
+242	-23	0
+243	-23	0
+244	-23	0
+245	-23	0
+246	-23	0
+247	-23	0
+248	-23	0
+249	-23	0
+250	-23	0
+251	-23	0
+252	-23	0
+253	-23	0
+254	-23	0
+255	-23	0
+256	-23	0
+257	-23	0
+258	-23	0
+259	-23	0
+260	-23	0
+261	-23	0
+262	-23	0
+263	-23	0
+264	-23	0
+265	-23	0
+266	-23	0
+267	-23	0
+268	-23	0
+269	-23	0
+270	-23	0
+271	-23	0
+272	-23	0
+273	-23	0
+274	-23	0
+275	-23	0
+276	-23	0
+277	-23	0
+278	-23	0
+279	-23	0
+280	-23	0
+281	-23	0
+282	-23	0
+283	-23	0
+284	-23	0
+285	-23	0
+286	-23	0
+287	-23	0
+288	-23	0
+289	-23	0
+290	-23	0
+291	-23	0
+292	-23	0
+293	-23	0
+294	-23	0
+295	-23	0
+296	-23	0
+297	-23	0
+298	-23	0
+299	-23	0
+300	-23	0
+301	-23	0
+302	-23	0
+303	-23	0
+304	-23	0
+305	-23	0
+306	-23	0
+307	-23	0
+308	-23	0
+309	-23	0
+310	-23	0
+311	-23	0
+312	-23	0
+313	-23	0
+314	-23	0
+315	-23	0
+316	-23	0
+317	-23	0
+318	-23	0
+319	-23	0
+320	-23	0
+321	-23	0
+322	-23	0
+323	-23	0
+324	-23	0
+325	-23	0
+326	-23	0
+327	-23	0
+328	-23	0
+329	-23	0
+330	-23	0
+331	-23	0
+332	-23	0
+333	-23	0
+334	-23	0
+335	-23	0
+336	-23	0
+337	-23	0
+338	-23	0
+339	-23	0
+340	-23	0
+341	-23	0
+342	-23	0
+343	-23	0
+344	-23	0
+345	-23	0
+346	-23	0
+347	-23	0
+348	-23	0
+349	-23	0
+350	-23	0
+351	-23	0
+352	-23	0
+353	-23	0
+354	-23	0
+355	-23	0
+356	-23	0
+357	-23	0
+358	-23	0
+359	-23	0
+360	-23	0
+0	-22.5	0
+1	-22.5	0
+2	-22.5	0
+3	-22.5	0
+4	-22.5	0
+5	-22.5	0
+6	-22.5	0
+7	-22.5	0
+8	-22.5	0
+9	-22.5	0
+10	-22.5	0
+11	-22.5	0
+12	-22.5	0
+13	-22.5	0
+14	-22.5	0
+15	-22.5	0
+16	-22.5	0
+17	-22.5	0
+18	-22.5	0
+19	-22.5	0
+20	-22.5	0
+21	-22.5	0
+22	-22.5	0
+23	-22.5	0
+24	-22.5	0
+25	-22.5	0
+26	-22.5	0
+27	-22.5	0
+28	-22.5	0
+29	-22.5	0
+30	-22.5	0
+31	-22.5	0
+32	-22.5	0
+33	-22.5	0
+34	-22.5	0
+35	-22.5	0
+36	-22.5	0
+37	-22.5	0
+38	-22.5	0
+39	-22.5	0
+40	-22.5	0
+41	-22.5	0
+42	-22.5	0
+43	-22.5	0
+44	-22.5	0
+45	-22.5	0
+46	-22.5	0
+47	-22.5	0
+48	-22.5	0
+49	-22.5	0
+50	-22.5	0
+51	-22.5	0
+52	-22.5	0
+53	-22.5	0
+54	-22.5	0
+55	-22.5	0
+56	-22.5	0
+57	-22.5	0
+58	-22.5	0
+59	-22.5	0
+60	-22.5	0
+61	-22.5	0
+62	-22.5	0
+63	-22.5	0
+64	-22.5	0
+65	-22.5	0
+66	-22.5	0
+67	-22.5	0
+68	-22.5	0
+69	-22.5	0
+70	-22.5	0
+71	-22.5	0
+72	-22.5	0
+73	-22.5	0
+74	-22.5	0
+75	-22.5	0
+76	-22.5	0
+77	-22.5	0
+78	-22.5	0
+79	-22.5	0
+80	-22.5	0
+81	-22.5	0
+82	-22.5	0
+83	-22.5	0
+84	-22.5	0
+85	-22.5	0
+86	-22.5	0
+87	-22.5	0
+88	-22.5	0
+89	-22.5	0
+90	-22.5	0
+91	-22.5	0
+92	-22.5	0
+93	-22.5	0
+94	-22.5	0
+95	-22.5	0
+96	-22.5	0
+97	-22.5	0
+98	-22.5	0
+99	-22.5	0
+100	-22.5	0
+101	-22.5	0
+102	-22.5	0
+103	-22.5	0
+104	-22.5	0
+105	-22.5	0
+106	-22.5	0
+107	-22.5	0
+108	-22.5	0
+109	-22.5	0
+110	-22.5	0
+111	-22.5	0
+112	-22.5	0
+113	-22.5	0
+114	-22.5	0
+115	-22.5	0
+116	-22.5	0
+117	-22.5	0
+118	-22.5	0
+119	-22.5	0
+120	-22.5	0
+121	-22.5	0
+122	-22.5	0
+123	-22.5	0
+124	-22.5	0
+125	-22.5	0
+126	-22.5	0
+127	-22.5	0
+128	-22.5	0
+129	-22.5	0
+130	-22.5	0
+131	-22.5	0
+132	-22.5	0
+133	-22.5	0
+134	-22.5	0
+135	-22.5	0
+136	-22.5	0
+137	-22.5	0
+138	-22.5	0
+139	-22.5	0
+140	-22.5	0
+141	-22.5	0
+142	-22.5	0
+143	-22.5	0
+144	-22.5	0
+145	-22.5	0
+146	-22.5	0
+147	-22.5	0
+148	-22.5	0
+149	-22.5	0
+150	-22.5	0
+151	-22.5	0
+152	-22.5	0
+153	-22.5	0
+154	-22.5	0
+155	-22.5	0
+156	-22.5	0
+157	-22.5	0
+158	-22.5	0
+159	-22.5	0
+160	-22.5	0
+161	-22.5	0
+162	-22.5	0
+163	-22.5	0
+164	-22.5	0
+165	-22.5	0
+166	-22.5	0
+167	-22.5	0
+168	-22.5	0
+169	-22.5	0
+170	-22.5	0
+171	-22.5	0
+172	-22.5	0
+173	-22.5	0
+174	-22.5	0
+175	-22.5	0
+176	-22.5	0
+177	-22.5	0
+178	-22.5	0
+179	-22.5	0
+180	-22.5	0
+181	-22.5	0
+182	-22.5	0
+183	-22.5	0
+184	-22.5	0
+185	-22.5	0
+186	-22.5	0
+187	-22.5	0
+188	-22.5	0
+189	-22.5	0
+190	-22.5	0
+191	-22.5	0
+192	-22.5	0
+193	-22.5	0
+194	-22.5	0
+195	-22.5	0
+196	-22.5	0
+197	-22.5	0
+198	-22.5	0
+199	-22.5	0
+200	-22.5	0
+201	-22.5	0
+202	-22.5	0
+203	-22.5	0
+204	-22.5	0
+205	-22.5	0
+206	-22.5	0
+207	-22.5	0
+208	-22.5	0
+209	-22.5	0
+210	-22.5	0
+211	-22.5	0
+212	-22.5	0
+213	-22.5	0
+214	-22.5	0
+215	-22.5	0
+216	-22.5	0
+217	-22.5	0
+218	-22.5	0
+219	-22.5	0
+220	-22.5	0
+221	-22.5	0
+222	-22.5	0
+223	-22.5	0
+224	-22.5	0
+225	-22.5	0
+226	-22.5	0
+227	-22.5	0
+228	-22.5	0
+229	-22.5	0
+230	-22.5	0
+231	-22.5	0
+232	-22.5	0
+233	-22.5	0
+234	-22.5	0
+235	-22.5	0
+236	-22.5	0
+237	-22.5	0
+238	-22.5	0
+239	-22.5	0
+240	-22.5	0
+241	-22.5	0
+242	-22.5	0
+243	-22.5	0
+244	-22.5	0
+245	-22.5	0
+246	-22.5	0
+247	-22.5	0
+248	-22.5	0
+249	-22.5	0
+250	-22.5	0
+251	-22.5	0
+252	-22.5	0
+253	-22.5	0
+254	-22.5	0
+255	-22.5	0
+256	-22.5	0
+257	-22.5	0
+258	-22.5	0
+259	-22.5	0
+260	-22.5	0
+261	-22.5	0
+262	-22.5	0
+263	-22.5	0
+264	-22.5	0
+265	-22.5	0
+266	-22.5	0
+267	-22.5	0
+268	-22.5	0
+269	-22.5	0
+270	-22.5	0
+271	-22.5	0
+272	-22.5	0
+273	-22.5	0
+274	-22.5	0
+275	-22.5	0
+276	-22.5	0
+277	-22.5	0
+278	-22.5	0
+279	-22.5	0
+280	-22.5	0
+281	-22.5	0
+282	-22.5	0
+283	-22.5	0
+284	-22.5	0
+285	-22.5	0
+286	-22.5	0
+287	-22.5	0
+288	-22.5	0
+289	-22.5	0
+290	-22.5	0
+291	-22.5	0
+292	-22.5	0
+293	-22.5	0
+294	-22.5	0
+295	-22.5	0
+296	-22.5	0
+297	-22.5	0
+298	-22.5	0
+299	-22.5	0
+300	-22.5	0
+301	-22.5	0
+302	-22.5	0
+303	-22.5	0
+304	-22.5	0
+305	-22.5	0
+306	-22.5	0
+307	-22.5	0
+308	-22.5	0
+309	-22.5	0
+310	-22.5	0
+311	-22.5	0
+312	-22.5	0
+313	-22.5	0
+314	-22.5	0
+315	-22.5	0
+316	-22.5	0
+317	-22.5	0
+318	-22.5	0
+319	-22.5	0
+320	-22.5	0
+321	-22.5	0
+322	-22.5	0
+323	-22.5	0
+324	-22.5	0
+325	-22.5	0
+326	-22.5	0
+327	-22.5	0
+328	-22.5	0
+329	-22.5	0
+330	-22.5	0
+331	-22.5	0
+332	-22.5	0
+333	-22.5	0
+334	-22.5	0
+335	-22.5	0
+336	-22.5	0
+337	-22.5	0
+338	-22.5	0
+339	-22.5	0
+340	-22.5	0
+341	-22.5	0
+342	-22.5	0
+343	-22.5	0
+344	-22.5	0
+345	-22.5	0
+346	-22.5	0
+347	-22.5	0
+348	-22.5	0
+349	-22.5	0
+350	-22.5	0
+351	-22.5	0
+352	-22.5	0
+353	-22.5	0
+354	-22.5	0
+355	-22.5	0
+356	-22.5	0
+357	-22.5	0
+358	-22.5	0
+359	-22.5	0
+360	-22.5	0
+0	-22	0
+1	-22	0
+2	-22	0
+3	-22	0
+4	-22	0
+5	-22	0
+6	-22	0
+7	-22	0
+8	-22	0
+9	-22	0
+10	-22	0
+11	-22	0
+12	-22	0
+13	-22	0
+14	-22	0
+15	-22	0
+16	-22	0
+17	-22	0
+18	-22	0
+19	-22	0
+20	-22	0
+21	-22	0
+22	-22	0
+23	-22	0
+24	-22	0
+25	-22	0
+26	-22	0
+27	-22	0
+28	-22	0
+29	-22	0
+30	-22	0
+31	-22	0
+32	-22	0
+33	-22	0
+34	-22	0
+35	-22	0
+36	-22	0
+37	-22	0
+38	-22	0
+39	-22	0
+40	-22	0
+41	-22	0
+42	-22	0
+43	-22	0
+44	-22	0
+45	-22	0
+46	-22	0
+47	-22	0
+48	-22	0
+49	-22	0
+50	-22	0
+51	-22	0
+52	-22	0
+53	-22	0
+54	-22	0
+55	-22	0
+56	-22	0
+57	-22	0
+58	-22	0
+59	-22	0
+60	-22	0
+61	-22	0
+62	-22	0
+63	-22	0
+64	-22	0
+65	-22	0
+66	-22	0
+67	-22	0
+68	-22	0
+69	-22	0
+70	-22	0
+71	-22	0
+72	-22	0
+73	-22	0
+74	-22	0
+75	-22	0
+76	-22	0
+77	-22	0
+78	-22	0
+79	-22	0
+80	-22	0
+81	-22	0
+82	-22	0
+83	-22	0
+84	-22	0
+85	-22	0
+86	-22	0
+87	-22	0
+88	-22	0
+89	-22	0
+90	-22	0
+91	-22	0
+92	-22	0
+93	-22	0
+94	-22	0
+95	-22	0
+96	-22	0
+97	-22	0
+98	-22	0
+99	-22	0
+100	-22	0
+101	-22	0
+102	-22	0
+103	-22	0
+104	-22	0
+105	-22	0
+106	-22	0
+107	-22	0
+108	-22	0
+109	-22	0
+110	-22	0
+111	-22	0
+112	-22	0
+113	-22	0
+114	-22	0
+115	-22	0
+116	-22	0
+117	-22	0
+118	-22	0
+119	-22	0
+120	-22	0
+121	-22	0
+122	-22	0
+123	-22	0
+124	-22	0
+125	-22	0
+126	-22	0
+127	-22	0
+128	-22	0
+129	-22	0
+130	-22	0
+131	-22	0
+132	-22	0
+133	-22	0
+134	-22	0
+135	-22	0
+136	-22	0
+137	-22	0
+138	-22	0
+139	-22	0
+140	-22	0
+141	-22	0
+142	-22	0
+143	-22	0
+144	-22	0
+145	-22	0
+146	-22	0
+147	-22	0
+148	-22	0
+149	-22	0
+150	-22	0
+151	-22	0
+152	-22	0
+153	-22	0
+154	-22	0
+155	-22	0
+156	-22	0
+157	-22	0
+158	-22	0
+159	-22	0
+160	-22	0
+161	-22	0
+162	-22	0
+163	-22	0
+164	-22	0
+165	-22	0
+166	-22	0
+167	-22	0
+168	-22	0
+169	-22	0
+170	-22	0
+171	-22	0
+172	-22	0
+173	-22	0
+174	-22	0
+175	-22	0
+176	-22	0
+177	-22	0
+178	-22	0
+179	-22	0
+180	-22	0
+181	-22	0
+182	-22	0
+183	-22	0
+184	-22	0
+185	-22	0
+186	-22	0
+187	-22	0
+188	-22	0
+189	-22	0
+190	-22	0
+191	-22	0
+192	-22	0
+193	-22	0
+194	-22	0
+195	-22	0
+196	-22	0
+197	-22	0
+198	-22	0
+199	-22	0
+200	-22	0
+201	-22	0
+202	-22	0
+203	-22	0
+204	-22	0
+205	-22	0
+206	-22	0
+207	-22	0
+208	-22	0
+209	-22	0
+210	-22	0
+211	-22	0
+212	-22	0
+213	-22	0
+214	-22	0
+215	-22	0
+216	-22	0
+217	-22	0
+218	-22	0
+219	-22	0
+220	-22	0
+221	-22	0
+222	-22	0
+223	-22	0
+224	-22	0
+225	-22	0
+226	-22	0
+227	-22	0
+228	-22	0
+229	-22	0
+230	-22	0
+231	-22	0
+232	-22	0
+233	-22	0
+234	-22	0
+235	-22	0
+236	-22	0
+237	-22	0
+238	-22	0
+239	-22	0
+240	-22	0
+241	-22	0
+242	-22	0
+243	-22	0
+244	-22	0
+245	-22	0
+246	-22	0
+247	-22	0
+248	-22	0
+249	-22	0
+250	-22	0
+251	-22	0
+252	-22	0
+253	-22	0
+254	-22	0
+255	-22	0
+256	-22	0
+257	-22	0
+258	-22	0
+259	-22	0
+260	-22	0
+261	-22	0
+262	-22	0
+263	-22	0
+264	-22	0
+265	-22	0
+266	-22	0
+267	-22	0
+268	-22	0
+269	-22	0
+270	-22	0
+271	-22	0
+272	-22	0
+273	-22	0
+274	-22	0
+275	-22	0
+276	-22	0
+277	-22	0
+278	-22	0
+279	-22	0
+280	-22	0
+281	-22	0
+282	-22	0
+283	-22	0
+284	-22	0
+285	-22	0
+286	-22	0
+287	-22	0
+288	-22	0
+289	-22	0
+290	-22	0
+291	-22	0
+292	-22	0
+293	-22	0
+294	-22	0
+295	-22	0
+296	-22	0
+297	-22	0
+298	-22	0
+299	-22	0
+300	-22	0
+301	-22	0
+302	-22	0
+303	-22	0
+304	-22	0
+305	-22	0
+306	-22	0
+307	-22	0
+308	-22	0
+309	-22	0
+310	-22	0
+311	-22	0
+312	-22	0
+313	-22	0
+314	-22	0
+315	-22	0
+316	-22	0
+317	-22	0
+318	-22	0
+319	-22	0
+320	-22	0
+321	-22	0
+322	-22	0
+323	-22	0
+324	-22	0
+325	-22	0
+326	-22	0
+327	-22	0
+328	-22	0
+329	-22	0
+330	-22	0
+331	-22	0
+332	-22	0
+333	-22	0
+334	-22	0
+335	-22	0
+336	-22	0
+337	-22	0
+338	-22	0
+339	-22	0
+340	-22	0
+341	-22	0
+342	-22	0
+343	-22	0
+344	-22	0
+345	-22	0
+346	-22	0
+347	-22	0
+348	-22	0
+349	-22	0
+350	-22	0
+351	-22	0
+352	-22	0
+353	-22	0
+354	-22	0
+355	-22	0
+356	-22	0
+357	-22	0
+358	-22	0
+359	-22	0
+360	-22	0
+0	-21.5	0
+1	-21.5	0
+2	-21.5	0
+3	-21.5	0
+4	-21.5	0
+5	-21.5	0
+6	-21.5	0
+7	-21.5	0
+8	-21.5	0
+9	-21.5	0
+10	-21.5	0
+11	-21.5	0
+12	-21.5	0
+13	-21.5	0
+14	-21.5	0
+15	-21.5	0
+16	-21.5	0
+17	-21.5	0
+18	-21.5	0
+19	-21.5	0
+20	-21.5	0
+21	-21.5	0
+22	-21.5	0
+23	-21.5	0
+24	-21.5	0
+25	-21.5	0
+26	-21.5	0
+27	-21.5	0
+28	-21.5	0
+29	-21.5	0
+30	-21.5	0
+31	-21.5	0
+32	-21.5	0
+33	-21.5	0
+34	-21.5	0
+35	-21.5	0
+36	-21.5	0
+37	-21.5	0
+38	-21.5	0
+39	-21.5	0
+40	-21.5	0
+41	-21.5	0
+42	-21.5	0
+43	-21.5	0
+44	-21.5	0
+45	-21.5	0
+46	-21.5	0
+47	-21.5	0
+48	-21.5	0
+49	-21.5	0
+50	-21.5	0
+51	-21.5	0
+52	-21.5	0
+53	-21.5	0
+54	-21.5	0
+55	-21.5	0
+56	-21.5	0
+57	-21.5	0
+58	-21.5	0
+59	-21.5	0
+60	-21.5	0
+61	-21.5	0
+62	-21.5	0
+63	-21.5	0
+64	-21.5	0
+65	-21.5	0
+66	-21.5	0
+67	-21.5	0
+68	-21.5	0
+69	-21.5	0
+70	-21.5	0
+71	-21.5	0
+72	-21.5	0
+73	-21.5	0
+74	-21.5	0
+75	-21.5	0
+76	-21.5	0
+77	-21.5	0
+78	-21.5	0
+79	-21.5	0
+80	-21.5	0
+81	-21.5	0
+82	-21.5	0
+83	-21.5	0
+84	-21.5	0
+85	-21.5	0
+86	-21.5	0
+87	-21.5	0
+88	-21.5	0
+89	-21.5	0
+90	-21.5	0
+91	-21.5	0
+92	-21.5	0
+93	-21.5	0
+94	-21.5	0
+95	-21.5	0
+96	-21.5	0
+97	-21.5	0
+98	-21.5	0
+99	-21.5	0
+100	-21.5	0
+101	-21.5	0
+102	-21.5	0
+103	-21.5	0
+104	-21.5	0
+105	-21.5	0
+106	-21.5	0
+107	-21.5	0
+108	-21.5	0
+109	-21.5	0
+110	-21.5	0
+111	-21.5	0
+112	-21.5	0
+113	-21.5	0
+114	-21.5	0
+115	-21.5	0
+116	-21.5	0
+117	-21.5	0
+118	-21.5	0
+119	-21.5	0
+120	-21.5	0
+121	-21.5	0
+122	-21.5	0
+123	-21.5	0
+124	-21.5	0
+125	-21.5	0
+126	-21.5	0
+127	-21.5	0
+128	-21.5	0
+129	-21.5	0
+130	-21.5	0
+131	-21.5	0
+132	-21.5	0
+133	-21.5	0
+134	-21.5	0
+135	-21.5	0
+136	-21.5	0
+137	-21.5	0
+138	-21.5	0
+139	-21.5	0
+140	-21.5	0
+141	-21.5	0
+142	-21.5	0
+143	-21.5	0
+144	-21.5	0
+145	-21.5	0
+146	-21.5	0
+147	-21.5	0
+148	-21.5	0
+149	-21.5	0
+150	-21.5	0
+151	-21.5	0
+152	-21.5	0
+153	-21.5	0
+154	-21.5	0
+155	-21.5	0
+156	-21.5	0
+157	-21.5	0
+158	-21.5	0
+159	-21.5	0
+160	-21.5	0
+161	-21.5	0
+162	-21.5	0
+163	-21.5	0
+164	-21.5	0
+165	-21.5	0
+166	-21.5	0
+167	-21.5	0
+168	-21.5	0
+169	-21.5	0
+170	-21.5	0
+171	-21.5	0
+172	-21.5	0
+173	-21.5	0
+174	-21.5	0
+175	-21.5	0
+176	-21.5	0
+177	-21.5	0
+178	-21.5	0
+179	-21.5	0
+180	-21.5	0
+181	-21.5	0
+182	-21.5	0
+183	-21.5	0
+184	-21.5	0
+185	-21.5	0
+186	-21.5	0
+187	-21.5	0
+188	-21.5	0
+189	-21.5	0
+190	-21.5	0
+191	-21.5	0
+192	-21.5	0
+193	-21.5	0
+194	-21.5	0
+195	-21.5	0
+196	-21.5	0
+197	-21.5	0
+198	-21.5	0
+199	-21.5	0
+200	-21.5	0
+201	-21.5	0
+202	-21.5	0
+203	-21.5	0
+204	-21.5	0
+205	-21.5	0
+206	-21.5	0
+207	-21.5	0
+208	-21.5	0
+209	-21.5	0
+210	-21.5	0
+211	-21.5	0
+212	-21.5	0
+213	-21.5	0
+214	-21.5	0
+215	-21.5	0
+216	-21.5	0
+217	-21.5	0
+218	-21.5	0
+219	-21.5	0
+220	-21.5	0
+221	-21.5	0
+222	-21.5	0
+223	-21.5	0
+224	-21.5	0
+225	-21.5	0
+226	-21.5	0
+227	-21.5	0
+228	-21.5	0
+229	-21.5	0
+230	-21.5	0
+231	-21.5	0
+232	-21.5	0
+233	-21.5	0
+234	-21.5	0
+235	-21.5	0
+236	-21.5	0
+237	-21.5	0
+238	-21.5	0
+239	-21.5	0
+240	-21.5	0
+241	-21.5	0
+242	-21.5	0
+243	-21.5	0
+244	-21.5	0
+245	-21.5	0
+246	-21.5	0
+247	-21.5	0
+248	-21.5	0
+249	-21.5	0
+250	-21.5	0
+251	-21.5	0
+252	-21.5	0
+253	-21.5	0
+254	-21.5	0
+255	-21.5	0
+256	-21.5	0
+257	-21.5	0
+258	-21.5	0
+259	-21.5	0
+260	-21.5	0
+261	-21.5	0
+262	-21.5	0
+263	-21.5	0
+264	-21.5	0
+265	-21.5	0
+266	-21.5	0
+267	-21.5	0
+268	-21.5	0
+269	-21.5	0
+270	-21.5	0
+271	-21.5	0
+272	-21.5	0
+273	-21.5	0
+274	-21.5	0
+275	-21.5	0
+276	-21.5	0
+277	-21.5	0
+278	-21.5	0
+279	-21.5	0
+280	-21.5	0
+281	-21.5	0
+282	-21.5	0
+283	-21.5	0
+284	-21.5	0
+285	-21.5	0
+286	-21.5	0
+287	-21.5	0
+288	-21.5	0
+289	-21.5	0
+290	-21.5	0
+291	-21.5	0
+292	-21.5	0
+293	-21.5	0
+294	-21.5	0
+295	-21.5	0
+296	-21.5	0
+297	-21.5	0
+298	-21.5	0
+299	-21.5	0
+300	-21.5	0
+301	-21.5	0
+302	-21.5	0
+303	-21.5	0
+304	-21.5	0
+305	-21.5	0
+306	-21.5	0
+307	-21.5	0
+308	-21.5	0
+309	-21.5	0
+310	-21.5	0
+311	-21.5	0
+312	-21.5	0
+313	-21.5	0
+314	-21.5	0
+315	-21.5	0
+316	-21.5	0
+317	-21.5	0
+318	-21.5	0
+319	-21.5	0
+320	-21.5	0
+321	-21.5	0
+322	-21.5	0
+323	-21.5	0
+324	-21.5	0
+325	-21.5	0
+326	-21.5	0
+327	-21.5	0
+328	-21.5	0
+329	-21.5	0
+330	-21.5	0
+331	-21.5	0
+332	-21.5	0
+333	-21.5	0
+334	-21.5	0
+335	-21.5	0
+336	-21.5	0
+337	-21.5	0
+338	-21.5	0
+339	-21.5	0
+340	-21.5	0
+341	-21.5	0
+342	-21.5	0
+343	-21.5	0
+344	-21.5	0
+345	-21.5	0
+346	-21.5	0
+347	-21.5	0
+348	-21.5	0
+349	-21.5	0
+350	-21.5	0
+351	-21.5	0
+352	-21.5	0
+353	-21.5	0
+354	-21.5	0
+355	-21.5	0
+356	-21.5	0
+357	-21.5	0
+358	-21.5	0
+359	-21.5	0
+360	-21.5	0
+0	-21	0
+1	-21	0
+2	-21	0
+3	-21	0
+4	-21	0
+5	-21	0
+6	-21	0
+7	-21	0
+8	-21	0
+9	-21	0
+10	-21	0
+11	-21	0
+12	-21	0
+13	-21	0
+14	-21	0
+15	-21	0
+16	-21	0
+17	-21	0
+18	-21	0
+19	-21	0
+20	-21	0
+21	-21	0
+22	-21	0
+23	-21	0
+24	-21	0
+25	-21	0
+26	-21	0
+27	-21	0
+28	-21	0
+29	-21	0
+30	-21	0
+31	-21	0
+32	-21	0
+33	-21	0
+34	-21	0
+35	-21	0
+36	-21	0
+37	-21	0
+38	-21	0
+39	-21	0
+40	-21	0
+41	-21	0
+42	-21	0
+43	-21	0
+44	-21	0
+45	-21	0
+46	-21	0
+47	-21	0
+48	-21	0
+49	-21	0
+50	-21	0
+51	-21	0
+52	-21	0
+53	-21	0
+54	-21	0
+55	-21	0
+56	-21	0
+57	-21	0
+58	-21	0
+59	-21	0
+60	-21	0
+61	-21	0
+62	-21	0
+63	-21	0
+64	-21	0
+65	-21	0
+66	-21	0
+67	-21	0
+68	-21	0
+69	-21	0
+70	-21	0
+71	-21	0
+72	-21	0
+73	-21	0
+74	-21	0
+75	-21	0
+76	-21	0
+77	-21	0
+78	-21	0
+79	-21	0
+80	-21	0
+81	-21	0
+82	-21	0
+83	-21	0
+84	-21	0
+85	-21	0
+86	-21	0
+87	-21	0
+88	-21	0
+89	-21	0
+90	-21	0
+91	-21	0
+92	-21	0
+93	-21	0
+94	-21	0
+95	-21	0
+96	-21	0
+97	-21	0
+98	-21	0
+99	-21	0
+100	-21	0
+101	-21	0
+102	-21	0
+103	-21	0
+104	-21	0
+105	-21	0
+106	-21	0
+107	-21	0
+108	-21	0
+109	-21	0
+110	-21	0
+111	-21	0
+112	-21	0
+113	-21	0
+114	-21	0
+115	-21	0
+116	-21	0
+117	-21	0
+118	-21	0
+119	-21	0
+120	-21	0
+121	-21	0
+122	-21	0
+123	-21	0
+124	-21	0
+125	-21	0
+126	-21	0
+127	-21	0
+128	-21	0
+129	-21	0
+130	-21	0
+131	-21	0
+132	-21	0
+133	-21	0
+134	-21	0
+135	-21	0
+136	-21	0
+137	-21	0
+138	-21	0
+139	-21	0
+140	-21	0
+141	-21	0
+142	-21	0
+143	-21	0
+144	-21	0
+145	-21	0
+146	-21	0
+147	-21	0
+148	-21	0
+149	-21	0
+150	-21	0
+151	-21	0
+152	-21	0
+153	-21	0
+154	-21	0
+155	-21	0
+156	-21	0
+157	-21	0
+158	-21	0
+159	-21	0
+160	-21	0
+161	-21	0
+162	-21	0
+163	-21	0
+164	-21	0
+165	-21	0
+166	-21	0
+167	-21	0
+168	-21	0
+169	-21	0
+170	-21	0
+171	-21	0
+172	-21	0
+173	-21	0
+174	-21	0
+175	-21	0
+176	-21	0
+177	-21	0
+178	-21	0
+179	-21	0
+180	-21	0
+181	-21	0
+182	-21	0
+183	-21	0
+184	-21	0
+185	-21	0
+186	-21	0
+187	-21	0
+188	-21	0
+189	-21	0
+190	-21	0
+191	-21	0
+192	-21	0
+193	-21	0
+194	-21	0
+195	-21	0
+196	-21	0
+197	-21	0
+198	-21	0
+199	-21	0
+200	-21	0
+201	-21	0
+202	-21	0
+203	-21	0
+204	-21	0
+205	-21	0
+206	-21	0
+207	-21	0
+208	-21	0
+209	-21	0
+210	-21	0
+211	-21	0
+212	-21	0
+213	-21	0
+214	-21	0
+215	-21	0
+216	-21	0
+217	-21	0
+218	-21	0
+219	-21	0
+220	-21	0
+221	-21	0
+222	-21	0
+223	-21	0
+224	-21	0
+225	-21	0
+226	-21	0
+227	-21	0
+228	-21	0
+229	-21	0
+230	-21	0
+231	-21	0
+232	-21	0
+233	-21	0
+234	-21	0
+235	-21	0
+236	-21	0
+237	-21	0
+238	-21	0
+239	-21	0
+240	-21	0
+241	-21	0
+242	-21	0
+243	-21	0
+244	-21	0
+245	-21	0
+246	-21	0
+247	-21	0
+248	-21	0
+249	-21	0
+250	-21	0
+251	-21	0
+252	-21	0
+253	-21	0
+254	-21	0
+255	-21	0
+256	-21	0
+257	-21	0
+258	-21	0
+259	-21	0
+260	-21	0
+261	-21	0
+262	-21	0
+263	-21	0
+264	-21	0
+265	-21	0
+266	-21	0
+267	-21	0
+268	-21	0
+269	-21	0
+270	-21	0
+271	-21	0
+272	-21	0
+273	-21	0
+274	-21	0
+275	-21	0
+276	-21	0
+277	-21	0
+278	-21	0
+279	-21	0
+280	-21	0
+281	-21	0
+282	-21	0
+283	-21	0
+284	-21	0
+285	-21	0
+286	-21	0
+287	-21	0
+288	-21	0
+289	-21	0
+290	-21	0
+291	-21	0
+292	-21	0
+293	-21	0
+294	-21	0
+295	-21	0
+296	-21	0
+297	-21	0
+298	-21	0
+299	-21	0
+300	-21	0
+301	-21	0
+302	-21	0
+303	-21	0
+304	-21	0
+305	-21	0
+306	-21	0
+307	-21	0
+308	-21	0
+309	-21	0
+310	-21	0
+311	-21	0
+312	-21	0
+313	-21	0
+314	-21	0
+315	-21	0
+316	-21	0
+317	-21	0
+318	-21	0
+319	-21	0
+320	-21	0
+321	-21	0
+322	-21	0
+323	-21	0
+324	-21	0
+325	-21	0
+326	-21	0
+327	-21	0
+328	-21	0
+329	-21	0
+330	-21	0
+331	-21	0
+332	-21	0
+333	-21	0
+334	-21	0
+335	-21	0
+336	-21	0
+337	-21	0
+338	-21	0
+339	-21	0
+340	-21	0
+341	-21	0
+342	-21	0
+343	-21	0
+344	-21	0
+345	-21	0
+346	-21	0
+347	-21	0
+348	-21	0
+349	-21	0
+350	-21	0
+351	-21	0
+352	-21	0
+353	-21	0
+354	-21	0
+355	-21	0
+356	-21	0
+357	-21	0
+358	-21	0
+359	-21	0
+360	-21	0
+0	-20.5	0
+1	-20.5	0
+2	-20.5	0
+3	-20.5	0
+4	-20.5	0
+5	-20.5	0
+6	-20.5	0
+7	-20.5	0
+8	-20.5	0
+9	-20.5	0
+10	-20.5	0
+11	-20.5	0
+12	-20.5	0
+13	-20.5	0
+14	-20.5	0
+15	-20.5	0
+16	-20.5	0
+17	-20.5	0
+18	-20.5	0
+19	-20.5	0
+20	-20.5	0
+21	-20.5	0
+22	-20.5	0
+23	-20.5	0
+24	-20.5	0
+25	-20.5	0
+26	-20.5	0
+27	-20.5	0
+28	-20.5	0
+29	-20.5	0
+30	-20.5	0
+31	-20.5	0
+32	-20.5	0
+33	-20.5	0
+34	-20.5	0
+35	-20.5	0
+36	-20.5	0
+37	-20.5	0
+38	-20.5	0
+39	-20.5	0
+40	-20.5	0
+41	-20.5	0
+42	-20.5	0
+43	-20.5	0
+44	-20.5	0
+45	-20.5	0
+46	-20.5	0
+47	-20.5	0
+48	-20.5	0
+49	-20.5	0
+50	-20.5	0
+51	-20.5	0
+52	-20.5	0
+53	-20.5	0
+54	-20.5	0
+55	-20.5	0
+56	-20.5	0
+57	-20.5	0
+58	-20.5	0
+59	-20.5	0
+60	-20.5	0
+61	-20.5	0
+62	-20.5	0
+63	-20.5	0
+64	-20.5	0
+65	-20.5	0
+66	-20.5	0
+67	-20.5	0
+68	-20.5	0
+69	-20.5	0
+70	-20.5	0
+71	-20.5	0
+72	-20.5	0
+73	-20.5	0
+74	-20.5	0
+75	-20.5	0
+76	-20.5	0
+77	-20.5	0
+78	-20.5	0
+79	-20.5	0
+80	-20.5	0
+81	-20.5	0
+82	-20.5	0
+83	-20.5	0
+84	-20.5	0
+85	-20.5	0
+86	-20.5	0
+87	-20.5	0
+88	-20.5	0
+89	-20.5	0
+90	-20.5	0
+91	-20.5	0
+92	-20.5	0
+93	-20.5	0
+94	-20.5	0
+95	-20.5	0
+96	-20.5	0
+97	-20.5	0
+98	-20.5	0
+99	-20.5	0
+100	-20.5	0
+101	-20.5	0
+102	-20.5	0
+103	-20.5	0
+104	-20.5	0
+105	-20.5	0
+106	-20.5	0
+107	-20.5	0
+108	-20.5	0
+109	-20.5	0
+110	-20.5	0
+111	-20.5	0
+112	-20.5	0
+113	-20.5	0
+114	-20.5	0
+115	-20.5	0
+116	-20.5	0
+117	-20.5	0
+118	-20.5	0
+119	-20.5	0
+120	-20.5	0
+121	-20.5	0
+122	-20.5	0
+123	-20.5	0
+124	-20.5	0
+125	-20.5	0
+126	-20.5	0
+127	-20.5	0
+128	-20.5	0
+129	-20.5	0
+130	-20.5	0
+131	-20.5	0
+132	-20.5	0
+133	-20.5	0
+134	-20.5	0
+135	-20.5	0
+136	-20.5	0
+137	-20.5	0
+138	-20.5	0
+139	-20.5	0
+140	-20.5	0
+141	-20.5	0
+142	-20.5	0
+143	-20.5	0
+144	-20.5	0
+145	-20.5	0
+146	-20.5	0
+147	-20.5	0
+148	-20.5	0
+149	-20.5	0
+150	-20.5	0
+151	-20.5	0
+152	-20.5	0
+153	-20.5	0
+154	-20.5	0
+155	-20.5	0
+156	-20.5	0
+157	-20.5	0
+158	-20.5	0
+159	-20.5	0
+160	-20.5	0
+161	-20.5	0
+162	-20.5	0
+163	-20.5	0
+164	-20.5	0
+165	-20.5	0
+166	-20.5	0
+167	-20.5	0
+168	-20.5	0
+169	-20.5	0
+170	-20.5	0
+171	-20.5	0
+172	-20.5	0
+173	-20.5	0
+174	-20.5	0
+175	-20.5	0
+176	-20.5	0
+177	-20.5	0
+178	-20.5	0
+179	-20.5	0
+180	-20.5	0
+181	-20.5	0
+182	-20.5	0
+183	-20.5	0
+184	-20.5	0
+185	-20.5	0
+186	-20.5	0
+187	-20.5	0
+188	-20.5	0
+189	-20.5	0
+190	-20.5	0
+191	-20.5	0
+192	-20.5	0
+193	-20.5	0
+194	-20.5	0
+195	-20.5	0
+196	-20.5	0
+197	-20.5	0
+198	-20.5	0
+199	-20.5	0
+200	-20.5	0
+201	-20.5	0
+202	-20.5	0
+203	-20.5	0
+204	-20.5	0
+205	-20.5	0
+206	-20.5	0
+207	-20.5	0
+208	-20.5	0
+209	-20.5	0
+210	-20.5	0
+211	-20.5	0
+212	-20.5	0
+213	-20.5	0
+214	-20.5	0
+215	-20.5	0
+216	-20.5	0
+217	-20.5	0
+218	-20.5	0
+219	-20.5	0
+220	-20.5	0
+221	-20.5	0
+222	-20.5	0
+223	-20.5	0
+224	-20.5	0
+225	-20.5	0
+226	-20.5	0
+227	-20.5	0
+228	-20.5	0
+229	-20.5	0
+230	-20.5	0
+231	-20.5	0
+232	-20.5	0
+233	-20.5	0
+234	-20.5	0
+235	-20.5	0
+236	-20.5	0
+237	-20.5	0
+238	-20.5	0
+239	-20.5	0
+240	-20.5	0
+241	-20.5	0
+242	-20.5	0
+243	-20.5	0
+244	-20.5	0
+245	-20.5	0
+246	-20.5	0
+247	-20.5	0
+248	-20.5	0
+249	-20.5	0
+250	-20.5	0
+251	-20.5	0
+252	-20.5	0
+253	-20.5	0
+254	-20.5	0
+255	-20.5	0
+256	-20.5	0
+257	-20.5	0
+258	-20.5	0
+259	-20.5	0
+260	-20.5	0
+261	-20.5	0
+262	-20.5	0
+263	-20.5	0
+264	-20.5	0
+265	-20.5	0
+266	-20.5	0
+267	-20.5	0
+268	-20.5	0
+269	-20.5	0
+270	-20.5	0
+271	-20.5	0
+272	-20.5	0
+273	-20.5	0
+274	-20.5	0
+275	-20.5	0
+276	-20.5	0
+277	-20.5	0
+278	-20.5	0
+279	-20.5	0
+280	-20.5	0
+281	-20.5	0
+282	-20.5	0
+283	-20.5	0
+284	-20.5	0
+285	-20.5	0
+286	-20.5	0
+287	-20.5	0
+288	-20.5	0
+289	-20.5	0
+290	-20.5	0
+291	-20.5	0
+292	-20.5	0
+293	-20.5	0
+294	-20.5	0
+295	-20.5	0
+296	-20.5	0
+297	-20.5	0
+298	-20.5	0
+299	-20.5	0
+300	-20.5	0
+301	-20.5	0
+302	-20.5	0
+303	-20.5	0
+304	-20.5	0
+305	-20.5	0
+306	-20.5	0
+307	-20.5	0
+308	-20.5	0
+309	-20.5	0
+310	-20.5	0
+311	-20.5	0
+312	-20.5	0
+313	-20.5	0
+314	-20.5	0
+315	-20.5	0
+316	-20.5	0
+317	-20.5	0
+318	-20.5	0
+319	-20.5	0
+320	-20.5	0
+321	-20.5	0
+322	-20.5	0
+323	-20.5	0
+324	-20.5	0
+325	-20.5	0
+326	-20.5	0
+327	-20.5	0
+328	-20.5	0
+329	-20.5	0
+330	-20.5	0
+331	-20.5	0
+332	-20.5	0
+333	-20.5	0
+334	-20.5	0
+335	-20.5	0
+336	-20.5	0
+337	-20.5	0
+338	-20.5	0
+339	-20.5	0
+340	-20.5	0
+341	-20.5	0
+342	-20.5	0
+343	-20.5	0
+344	-20.5	0
+345	-20.5	0
+346	-20.5	0
+347	-20.5	0
+348	-20.5	0
+349	-20.5	0
+350	-20.5	0
+351	-20.5	0
+352	-20.5	0
+353	-20.5	0
+354	-20.5	0
+355	-20.5	0
+356	-20.5	0
+357	-20.5	0
+358	-20.5	0
+359	-20.5	0
+360	-20.5	0
+0	-20	0
+1	-20	0
+2	-20	0
+3	-20	0
+4	-20	0
+5	-20	0
+6	-20	0
+7	-20	0
+8	-20	0
+9	-20	0
+10	-20	0
+11	-20	0
+12	-20	0
+13	-20	0
+14	-20	0
+15	-20	0
+16	-20	0
+17	-20	0
+18	-20	0
+19	-20	0
+20	-20	0
+21	-20	0
+22	-20	0
+23	-20	0
+24	-20	0
+25	-20	0
+26	-20	0
+27	-20	0
+28	-20	0
+29	-20	0
+30	-20	0
+31	-20	0
+32	-20	0
+33	-20	0
+34	-20	0
+35	-20	0
+36	-20	0
+37	-20	0
+38	-20	0
+39	-20	0
+40	-20	0
+41	-20	0
+42	-20	0
+43	-20	0
+44	-20	0
+45	-20	0
+46	-20	0
+47	-20	0
+48	-20	0
+49	-20	0
+50	-20	0
+51	-20	0
+52	-20	0
+53	-20	0
+54	-20	0
+55	-20	0
+56	-20	0
+57	-20	0
+58	-20	0
+59	-20	0
+60	-20	0
+61	-20	0
+62	-20	0
+63	-20	0
+64	-20	0
+65	-20	0
+66	-20	0
+67	-20	0
+68	-20	0
+69	-20	0
+70	-20	0
+71	-20	0
+72	-20	0
+73	-20	0
+74	-20	0
+75	-20	0
+76	-20	0
+77	-20	0
+78	-20	0
+79	-20	0
+80	-20	0
+81	-20	0
+82	-20	0
+83	-20	0
+84	-20	0
+85	-20	0
+86	-20	0
+87	-20	0
+88	-20	0
+89	-20	0
+90	-20	0
+91	-20	0
+92	-20	0
+93	-20	0
+94	-20	0
+95	-20	0
+96	-20	0
+97	-20	0
+98	-20	0
+99	-20	0
+100	-20	0
+101	-20	0
+102	-20	0
+103	-20	0
+104	-20	0
+105	-20	0
+106	-20	0
+107	-20	0
+108	-20	0
+109	-20	0
+110	-20	0
+111	-20	0
+112	-20	0
+113	-20	0
+114	-20	0
+115	-20	0
+116	-20	0
+117	-20	0
+118	-20	0
+119	-20	0
+120	-20	0
+121	-20	0
+122	-20	0
+123	-20	0
+124	-20	0
+125	-20	0
+126	-20	0
+127	-20	0
+128	-20	0
+129	-20	0
+130	-20	0
+131	-20	0
+132	-20	0
+133	-20	0
+134	-20	0
+135	-20	0
+136	-20	0
+137	-20	0
+138	-20	0
+139	-20	0
+140	-20	0
+141	-20	0
+142	-20	0
+143	-20	0
+144	-20	0
+145	-20	0
+146	-20	0
+147	-20	0
+148	-20	0
+149	-20	0
+150	-20	0
+151	-20	0
+152	-20	0
+153	-20	0
+154	-20	0
+155	-20	0
+156	-20	0
+157	-20	0
+158	-20	0
+159	-20	0
+160	-20	0
+161	-20	0
+162	-20	0
+163	-20	0
+164	-20	0
+165	-20	0
+166	-20	0
+167	-20	0
+168	-20	0
+169	-20	0
+170	-20	0
+171	-20	0
+172	-20	0
+173	-20	0
+174	-20	0
+175	-20	0
+176	-20	0
+177	-20	0
+178	-20	0
+179	-20	0
+180	-20	0
+181	-20	0
+182	-20	0
+183	-20	0
+184	-20	0
+185	-20	0
+186	-20	0
+187	-20	0
+188	-20	0
+189	-20	0
+190	-20	0
+191	-20	0
+192	-20	0
+193	-20	0
+194	-20	0
+195	-20	0
+196	-20	0
+197	-20	0
+198	-20	0
+199	-20	0
+200	-20	0
+201	-20	0
+202	-20	0
+203	-20	0
+204	-20	0
+205	-20	0
+206	-20	0
+207	-20	0
+208	-20	0
+209	-20	0
+210	-20	0
+211	-20	0
+212	-20	0
+213	-20	0
+214	-20	0
+215	-20	0
+216	-20	0
+217	-20	0
+218	-20	0
+219	-20	0
+220	-20	0
+221	-20	0
+222	-20	0
+223	-20	0
+224	-20	0
+225	-20	0
+226	-20	0
+227	-20	0
+228	-20	0
+229	-20	0
+230	-20	0
+231	-20	0
+232	-20	0
+233	-20	0
+234	-20	0
+235	-20	0
+236	-20	0
+237	-20	0
+238	-20	0
+239	-20	0
+240	-20	0
+241	-20	0
+242	-20	0
+243	-20	0
+244	-20	0
+245	-20	0
+246	-20	0
+247	-20	0
+248	-20	0
+249	-20	0
+250	-20	0
+251	-20	0
+252	-20	0
+253	-20	0
+254	-20	0
+255	-20	0
+256	-20	0
+257	-20	0
+258	-20	0
+259	-20	0
+260	-20	0
+261	-20	0
+262	-20	0
+263	-20	0
+264	-20	0
+265	-20	0
+266	-20	0
+267	-20	0
+268	-20	0
+269	-20	0
+270	-20	0
+271	-20	0
+272	-20	0
+273	-20	0
+274	-20	0
+275	-20	0
+276	-20	0
+277	-20	0
+278	-20	0
+279	-20	0
+280	-20	0
+281	-20	0
+282	-20	0
+283	-20	0
+284	-20	0
+285	-20	0
+286	-20	0
+287	-20	0
+288	-20	0
+289	-20	0
+290	-20	0
+291	-20	0
+292	-20	0
+293	-20	0
+294	-20	0
+295	-20	0
+296	-20	0
+297	-20	0
+298	-20	0
+299	-20	0
+300	-20	0
+301	-20	0
+302	-20	0
+303	-20	0
+304	-20	0
+305	-20	0
+306	-20	0
+307	-20	0
+308	-20	0
+309	-20	0
+310	-20	0
+311	-20	0
+312	-20	0
+313	-20	0
+314	-20	0
+315	-20	0
+316	-20	0
+317	-20	0
+318	-20	0
+319	-20	0
+320	-20	0
+321	-20	0
+322	-20	0
+323	-20	0
+324	-20	0
+325	-20	0
+326	-20	0
+327	-20	0
+328	-20	0
+329	-20	0
+330	-20	0
+331	-20	0
+332	-20	0
+333	-20	0
+334	-20	0
+335	-20	0
+336	-20	0
+337	-20	0
+338	-20	0
+339	-20	0
+340	-20	0
+341	-20	0
+342	-20	0
+343	-20	0
+344	-20	0
+345	-20	0
+346	-20	0
+347	-20	0
+348	-20	0
+349	-20	0
+350	-20	0
+351	-20	0
+352	-20	0
+353	-20	0
+354	-20	0
+355	-20	0
+356	-20	0
+357	-20	0
+358	-20	0
+359	-20	0
+360	-20	0
+0	-19.5	0
+1	-19.5	0
+2	-19.5	0
+3	-19.5	0
+4	-19.5	0
+5	-19.5	0
+6	-19.5	0
+7	-19.5	0
+8	-19.5	0
+9	-19.5	0
+10	-19.5	0
+11	-19.5	0
+12	-19.5	0
+13	-19.5	0
+14	-19.5	0
+15	-19.5	0
+16	-19.5	0
+17	-19.5	0
+18	-19.5	0
+19	-19.5	0
+20	-19.5	0
+21	-19.5	0
+22	-19.5	0
+23	-19.5	0
+24	-19.5	0
+25	-19.5	0
+26	-19.5	0
+27	-19.5	0
+28	-19.5	0
+29	-19.5	0
+30	-19.5	0
+31	-19.5	0
+32	-19.5	0
+33	-19.5	0
+34	-19.5	0
+35	-19.5	0
+36	-19.5	0
+37	-19.5	0
+38	-19.5	0
+39	-19.5	0
+40	-19.5	0
+41	-19.5	0
+42	-19.5	0
+43	-19.5	0
+44	-19.5	0
+45	-19.5	0
+46	-19.5	0
+47	-19.5	0
+48	-19.5	0
+49	-19.5	0
+50	-19.5	0
+51	-19.5	0
+52	-19.5	0
+53	-19.5	0
+54	-19.5	0
+55	-19.5	0
+56	-19.5	0
+57	-19.5	0
+58	-19.5	0
+59	-19.5	0
+60	-19.5	0
+61	-19.5	0
+62	-19.5	0
+63	-19.5	0
+64	-19.5	0
+65	-19.5	0
+66	-19.5	0
+67	-19.5	0
+68	-19.5	0
+69	-19.5	0
+70	-19.5	0
+71	-19.5	0
+72	-19.5	0
+73	-19.5	0
+74	-19.5	0
+75	-19.5	0
+76	-19.5	0
+77	-19.5	0
+78	-19.5	0
+79	-19.5	0
+80	-19.5	0
+81	-19.5	0
+82	-19.5	0
+83	-19.5	0
+84	-19.5	0
+85	-19.5	0
+86	-19.5	0
+87	-19.5	0
+88	-19.5	0
+89	-19.5	0
+90	-19.5	0
+91	-19.5	0
+92	-19.5	0
+93	-19.5	0
+94	-19.5	0
+95	-19.5	0
+96	-19.5	0
+97	-19.5	0
+98	-19.5	0
+99	-19.5	0
+100	-19.5	0
+101	-19.5	0
+102	-19.5	0
+103	-19.5	0
+104	-19.5	0
+105	-19.5	0
+106	-19.5	0
+107	-19.5	0
+108	-19.5	0
+109	-19.5	0
+110	-19.5	0
+111	-19.5	0
+112	-19.5	0
+113	-19.5	0
+114	-19.5	0
+115	-19.5	0
+116	-19.5	0
+117	-19.5	0
+118	-19.5	0
+119	-19.5	0
+120	-19.5	0
+121	-19.5	0
+122	-19.5	0
+123	-19.5	0
+124	-19.5	0
+125	-19.5	0
+126	-19.5	0
+127	-19.5	0
+128	-19.5	0
+129	-19.5	0
+130	-19.5	0
+131	-19.5	0
+132	-19.5	0
+133	-19.5	0
+134	-19.5	0
+135	-19.5	0
+136	-19.5	0
+137	-19.5	0
+138	-19.5	0
+139	-19.5	0
+140	-19.5	0
+141	-19.5	0
+142	-19.5	0
+143	-19.5	0
+144	-19.5	0
+145	-19.5	0
+146	-19.5	0
+147	-19.5	0
+148	-19.5	0
+149	-19.5	0
+150	-19.5	0
+151	-19.5	0
+152	-19.5	0
+153	-19.5	0
+154	-19.5	0
+155	-19.5	0
+156	-19.5	0
+157	-19.5	0
+158	-19.5	0
+159	-19.5	0
+160	-19.5	0
+161	-19.5	0
+162	-19.5	0
+163	-19.5	0
+164	-19.5	0
+165	-19.5	0
+166	-19.5	0
+167	-19.5	0
+168	-19.5	0
+169	-19.5	0
+170	-19.5	0
+171	-19.5	0
+172	-19.5	0
+173	-19.5	0
+174	-19.5	0
+175	-19.5	0
+176	-19.5	0
+177	-19.5	0
+178	-19.5	0
+179	-19.5	0
+180	-19.5	0
+181	-19.5	0
+182	-19.5	0
+183	-19.5	0
+184	-19.5	0
+185	-19.5	0
+186	-19.5	0
+187	-19.5	0
+188	-19.5	0
+189	-19.5	0
+190	-19.5	0
+191	-19.5	0
+192	-19.5	0
+193	-19.5	0
+194	-19.5	0
+195	-19.5	0
+196	-19.5	0
+197	-19.5	0
+198	-19.5	0
+199	-19.5	0
+200	-19.5	0
+201	-19.5	0
+202	-19.5	0
+203	-19.5	0
+204	-19.5	0
+205	-19.5	0
+206	-19.5	0
+207	-19.5	0
+208	-19.5	0
+209	-19.5	0
+210	-19.5	0
+211	-19.5	0
+212	-19.5	0
+213	-19.5	0
+214	-19.5	0
+215	-19.5	0
+216	-19.5	0
+217	-19.5	0
+218	-19.5	0
+219	-19.5	0
+220	-19.5	0
+221	-19.5	0
+222	-19.5	0
+223	-19.5	0
+224	-19.5	0
+225	-19.5	0
+226	-19.5	0
+227	-19.5	0
+228	-19.5	0
+229	-19.5	0
+230	-19.5	0
+231	-19.5	0
+232	-19.5	0
+233	-19.5	0
+234	-19.5	0
+235	-19.5	0
+236	-19.5	0
+237	-19.5	0
+238	-19.5	0
+239	-19.5	0
+240	-19.5	0
+241	-19.5	0
+242	-19.5	0
+243	-19.5	0
+244	-19.5	0
+245	-19.5	0
+246	-19.5	0
+247	-19.5	0
+248	-19.5	0
+249	-19.5	0
+250	-19.5	0
+251	-19.5	0
+252	-19.5	0
+253	-19.5	0
+254	-19.5	0
+255	-19.5	0
+256	-19.5	0
+257	-19.5	0
+258	-19.5	0
+259	-19.5	0
+260	-19.5	0
+261	-19.5	0
+262	-19.5	0
+263	-19.5	0
+264	-19.5	0
+265	-19.5	0
+266	-19.5	0
+267	-19.5	0
+268	-19.5	0
+269	-19.5	0
+270	-19.5	0
+271	-19.5	0
+272	-19.5	0
+273	-19.5	0
+274	-19.5	0
+275	-19.5	0
+276	-19.5	0
+277	-19.5	0
+278	-19.5	0
+279	-19.5	0
+280	-19.5	0
+281	-19.5	0
+282	-19.5	0
+283	-19.5	0
+284	-19.5	0
+285	-19.5	0
+286	-19.5	0
+287	-19.5	0
+288	-19.5	0
+289	-19.5	0
+290	-19.5	0
+291	-19.5	0
+292	-19.5	0
+293	-19.5	0
+294	-19.5	0
+295	-19.5	0
+296	-19.5	0
+297	-19.5	0
+298	-19.5	0
+299	-19.5	0
+300	-19.5	0
+301	-19.5	0
+302	-19.5	0
+303	-19.5	0
+304	-19.5	0
+305	-19.5	0
+306	-19.5	0
+307	-19.5	0
+308	-19.5	0
+309	-19.5	0
+310	-19.5	0
+311	-19.5	0
+312	-19.5	0
+313	-19.5	0
+314	-19.5	0
+315	-19.5	0
+316	-19.5	0
+317	-19.5	0
+318	-19.5	0
+319	-19.5	0
+320	-19.5	0
+321	-19.5	0
+322	-19.5	0
+323	-19.5	0
+324	-19.5	0
+325	-19.5	0
+326	-19.5	0
+327	-19.5	0
+328	-19.5	0
+329	-19.5	0
+330	-19.5	0
+331	-19.5	0
+332	-19.5	0
+333	-19.5	0
+334	-19.5	0
+335	-19.5	0
+336	-19.5	0
+337	-19.5	0
+338	-19.5	0
+339	-19.5	0
+340	-19.5	0
+341	-19.5	0
+342	-19.5	0
+343	-19.5	0
+344	-19.5	0
+345	-19.5	0
+346	-19.5	0
+347	-19.5	0
+348	-19.5	0
+349	-19.5	0
+350	-19.5	0
+351	-19.5	0
+352	-19.5	0
+353	-19.5	0
+354	-19.5	0
+355	-19.5	0
+356	-19.5	0
+357	-19.5	0
+358	-19.5	0
+359	-19.5	0
+360	-19.5	0
+0	-19	0
+1	-19	0
+2	-19	0
+3	-19	0
+4	-19	0
+5	-19	0
+6	-19	0
+7	-19	0
+8	-19	0
+9	-19	0
+10	-19	0
+11	-19	0
+12	-19	0
+13	-19	0
+14	-19	0
+15	-19	0
+16	-19	0
+17	-19	0
+18	-19	0
+19	-19	0
+20	-19	0
+21	-19	0
+22	-19	0
+23	-19	0
+24	-19	0
+25	-19	0
+26	-19	0
+27	-19	0
+28	-19	0
+29	-19	0
+30	-19	0
+31	-19	0
+32	-19	0
+33	-19	0
+34	-19	0
+35	-19	0
+36	-19	0
+37	-19	0
+38	-19	0
+39	-19	0
+40	-19	0
+41	-19	0
+42	-19	0
+43	-19	0
+44	-19	0
+45	-19	0
+46	-19	0
+47	-19	0
+48	-19	0
+49	-19	0
+50	-19	0
+51	-19	0
+52	-19	0
+53	-19	0
+54	-19	0
+55	-19	0
+56	-19	0
+57	-19	0
+58	-19	0
+59	-19	0
+60	-19	0
+61	-19	0
+62	-19	0
+63	-19	0
+64	-19	0
+65	-19	0
+66	-19	0
+67	-19	0
+68	-19	0
+69	-19	0
+70	-19	0
+71	-19	0
+72	-19	0
+73	-19	0
+74	-19	0
+75	-19	0
+76	-19	0
+77	-19	0
+78	-19	0
+79	-19	0
+80	-19	0
+81	-19	0
+82	-19	0
+83	-19	0
+84	-19	0
+85	-19	0
+86	-19	0
+87	-19	0
+88	-19	0
+89	-19	0
+90	-19	0
+91	-19	0
+92	-19	0
+93	-19	0
+94	-19	0
+95	-19	0
+96	-19	0
+97	-19	0
+98	-19	0
+99	-19	0
+100	-19	0
+101	-19	0
+102	-19	0
+103	-19	0
+104	-19	0
+105	-19	0
+106	-19	0
+107	-19	0
+108	-19	0
+109	-19	0
+110	-19	0
+111	-19	0
+112	-19	0
+113	-19	0
+114	-19	0
+115	-19	0
+116	-19	0
+117	-19	0
+118	-19	0
+119	-19	0
+120	-19	0
+121	-19	0
+122	-19	0
+123	-19	0
+124	-19	0
+125	-19	0
+126	-19	0
+127	-19	0
+128	-19	0
+129	-19	0
+130	-19	0
+131	-19	0
+132	-19	0
+133	-19	0
+134	-19	0
+135	-19	0
+136	-19	0
+137	-19	0
+138	-19	0
+139	-19	0
+140	-19	0
+141	-19	0
+142	-19	0
+143	-19	0
+144	-19	0
+145	-19	0
+146	-19	0
+147	-19	0
+148	-19	0
+149	-19	0
+150	-19	0
+151	-19	0
+152	-19	0
+153	-19	0
+154	-19	0
+155	-19	0
+156	-19	0
+157	-19	0
+158	-19	0
+159	-19	0
+160	-19	0
+161	-19	0
+162	-19	0
+163	-19	0
+164	-19	0
+165	-19	0
+166	-19	0
+167	-19	0
+168	-19	0
+169	-19	0
+170	-19	0
+171	-19	0
+172	-19	0
+173	-19	0
+174	-19	0
+175	-19	0
+176	-19	0
+177	-19	0
+178	-19	0
+179	-19	0
+180	-19	0
+181	-19	0
+182	-19	0
+183	-19	0
+184	-19	0
+185	-19	0
+186	-19	0
+187	-19	0
+188	-19	0
+189	-19	0
+190	-19	0
+191	-19	0
+192	-19	0
+193	-19	0
+194	-19	0
+195	-19	0
+196	-19	0
+197	-19	0
+198	-19	0
+199	-19	0
+200	-19	0
+201	-19	0
+202	-19	0
+203	-19	0
+204	-19	0
+205	-19	0
+206	-19	0
+207	-19	0
+208	-19	0
+209	-19	0
+210	-19	0
+211	-19	0
+212	-19	0
+213	-19	0
+214	-19	0
+215	-19	0
+216	-19	0
+217	-19	0
+218	-19	0
+219	-19	0
+220	-19	0
+221	-19	0
+222	-19	0
+223	-19	0
+224	-19	0
+225	-19	0
+226	-19	0
+227	-19	0
+228	-19	0
+229	-19	0
+230	-19	0
+231	-19	0
+232	-19	0
+233	-19	0
+234	-19	0
+235	-19	0
+236	-19	0
+237	-19	0
+238	-19	0
+239	-19	0
+240	-19	0
+241	-19	0
+242	-19	0
+243	-19	0
+244	-19	0
+245	-19	0
+246	-19	0
+247	-19	0
+248	-19	0
+249	-19	0
+250	-19	0
+251	-19	0
+252	-19	0
+253	-19	0
+254	-19	0
+255	-19	0
+256	-19	0
+257	-19	0
+258	-19	0
+259	-19	0
+260	-19	0
+261	-19	0
+262	-19	0
+263	-19	0
+264	-19	0
+265	-19	0
+266	-19	0
+267	-19	0
+268	-19	0
+269	-19	0
+270	-19	0
+271	-19	0
+272	-19	0
+273	-19	0
+274	-19	0
+275	-19	0
+276	-19	0
+277	-19	0
+278	-19	0
+279	-19	0
+280	-19	0
+281	-19	0
+282	-19	0
+283	-19	0
+284	-19	0
+285	-19	0
+286	-19	0
+287	-19	0
+288	-19	0
+289	-19	0
+290	-19	0
+291	-19	0
+292	-19	0
+293	-19	0
+294	-19	0
+295	-19	0
+296	-19	0
+297	-19	0
+298	-19	0
+299	-19	0
+300	-19	0
+301	-19	0
+302	-19	0
+303	-19	0
+304	-19	0
+305	-19	0
+306	-19	0
+307	-19	0
+308	-19	0
+309	-19	0
+310	-19	0
+311	-19	0
+312	-19	0
+313	-19	0
+314	-19	0
+315	-19	0
+316	-19	0
+317	-19	0
+318	-19	0
+319	-19	0
+320	-19	0
+321	-19	0
+322	-19	0
+323	-19	0
+324	-19	0
+325	-19	0
+326	-19	0
+327	-19	0
+328	-19	0
+329	-19	0
+330	-19	0
+331	-19	0
+332	-19	0
+333	-19	0
+334	-19	0
+335	-19	0
+336	-19	0
+337	-19	0
+338	-19	0
+339	-19	0
+340	-19	0
+341	-19	0
+342	-19	0
+343	-19	0
+344	-19	0
+345	-19	0
+346	-19	0
+347	-19	0
+348	-19	0
+349	-19	0
+350	-19	0
+351	-19	0
+352	-19	0
+353	-19	0
+354	-19	0
+355	-19	0
+356	-19	0
+357	-19	0
+358	-19	0
+359	-19	0
+360	-19	0
+0	-18.5	0
+1	-18.5	0
+2	-18.5	0
+3	-18.5	0
+4	-18.5	0
+5	-18.5	0
+6	-18.5	0
+7	-18.5	0
+8	-18.5	0
+9	-18.5	0
+10	-18.5	0
+11	-18.5	0
+12	-18.5	0
+13	-18.5	0
+14	-18.5	0
+15	-18.5	0
+16	-18.5	0
+17	-18.5	0
+18	-18.5	0
+19	-18.5	0
+20	-18.5	0
+21	-18.5	0
+22	-18.5	0
+23	-18.5	0
+24	-18.5	0
+25	-18.5	0
+26	-18.5	0
+27	-18.5	0
+28	-18.5	0
+29	-18.5	0
+30	-18.5	0
+31	-18.5	0
+32	-18.5	0
+33	-18.5	0
+34	-18.5	0
+35	-18.5	0
+36	-18.5	0
+37	-18.5	0
+38	-18.5	0
+39	-18.5	0
+40	-18.5	0
+41	-18.5	0
+42	-18.5	0
+43	-18.5	0
+44	-18.5	0
+45	-18.5	0
+46	-18.5	0
+47	-18.5	0
+48	-18.5	0
+49	-18.5	0
+50	-18.5	0
+51	-18.5	0
+52	-18.5	0
+53	-18.5	0
+54	-18.5	0
+55	-18.5	0
+56	-18.5	0
+57	-18.5	0
+58	-18.5	0
+59	-18.5	0
+60	-18.5	0
+61	-18.5	0
+62	-18.5	0
+63	-18.5	0
+64	-18.5	0
+65	-18.5	0
+66	-18.5	0
+67	-18.5	0
+68	-18.5	0
+69	-18.5	0
+70	-18.5	0
+71	-18.5	0
+72	-18.5	0
+73	-18.5	0
+74	-18.5	0
+75	-18.5	0
+76	-18.5	0
+77	-18.5	0
+78	-18.5	0
+79	-18.5	0
+80	-18.5	0
+81	-18.5	0
+82	-18.5	0
+83	-18.5	0
+84	-18.5	0
+85	-18.5	0
+86	-18.5	0
+87	-18.5	0
+88	-18.5	0
+89	-18.5	0
+90	-18.5	0
+91	-18.5	0
+92	-18.5	0
+93	-18.5	0
+94	-18.5	0
+95	-18.5	0
+96	-18.5	0
+97	-18.5	0
+98	-18.5	0
+99	-18.5	0
+100	-18.5	0
+101	-18.5	0
+102	-18.5	0
+103	-18.5	0
+104	-18.5	0
+105	-18.5	0
+106	-18.5	0
+107	-18.5	0
+108	-18.5	0
+109	-18.5	0
+110	-18.5	0
+111	-18.5	0
+112	-18.5	0
+113	-18.5	0
+114	-18.5	0
+115	-18.5	0
+116	-18.5	0
+117	-18.5	0
+118	-18.5	0
+119	-18.5	0
+120	-18.5	0
+121	-18.5	0
+122	-18.5	0
+123	-18.5	0
+124	-18.5	0
+125	-18.5	0
+126	-18.5	0
+127	-18.5	0
+128	-18.5	0
+129	-18.5	0
+130	-18.5	0
+131	-18.5	0
+132	-18.5	0
+133	-18.5	0
+134	-18.5	0
+135	-18.5	0
+136	-18.5	0
+137	-18.5	0
+138	-18.5	0
+139	-18.5	0
+140	-18.5	0
+141	-18.5	0
+142	-18.5	0
+143	-18.5	0
+144	-18.5	0
+145	-18.5	0
+146	-18.5	0
+147	-18.5	0
+148	-18.5	0
+149	-18.5	0
+150	-18.5	0
+151	-18.5	0
+152	-18.5	0
+153	-18.5	0
+154	-18.5	0
+155	-18.5	0
+156	-18.5	0
+157	-18.5	0
+158	-18.5	0
+159	-18.5	0
+160	-18.5	0
+161	-18.5	0
+162	-18.5	0
+163	-18.5	0
+164	-18.5	0
+165	-18.5	0
+166	-18.5	0
+167	-18.5	0
+168	-18.5	0
+169	-18.5	0
+170	-18.5	0
+171	-18.5	0
+172	-18.5	0
+173	-18.5	0
+174	-18.5	0
+175	-18.5	0
+176	-18.5	0
+177	-18.5	0
+178	-18.5	0
+179	-18.5	0
+180	-18.5	0
+181	-18.5	0
+182	-18.5	0
+183	-18.5	0
+184	-18.5	0
+185	-18.5	0
+186	-18.5	0
+187	-18.5	0
+188	-18.5	0
+189	-18.5	0
+190	-18.5	0
+191	-18.5	0
+192	-18.5	0
+193	-18.5	0
+194	-18.5	0
+195	-18.5	0
+196	-18.5	0
+197	-18.5	0
+198	-18.5	0
+199	-18.5	0
+200	-18.5	0
+201	-18.5	0
+202	-18.5	0
+203	-18.5	0
+204	-18.5	0
+205	-18.5	0
+206	-18.5	0
+207	-18.5	0
+208	-18.5	0
+209	-18.5	0
+210	-18.5	0
+211	-18.5	0
+212	-18.5	0
+213	-18.5	0
+214	-18.5	0
+215	-18.5	0
+216	-18.5	0
+217	-18.5	0
+218	-18.5	0
+219	-18.5	0
+220	-18.5	0
+221	-18.5	0
+222	-18.5	0
+223	-18.5	0
+224	-18.5	0
+225	-18.5	0
+226	-18.5	0
+227	-18.5	0
+228	-18.5	0
+229	-18.5	0
+230	-18.5	0
+231	-18.5	0
+232	-18.5	0
+233	-18.5	0
+234	-18.5	0
+235	-18.5	0
+236	-18.5	0
+237	-18.5	0
+238	-18.5	0
+239	-18.5	0
+240	-18.5	0
+241	-18.5	0
+242	-18.5	0
+243	-18.5	0
+244	-18.5	0
+245	-18.5	0
+246	-18.5	0
+247	-18.5	0
+248	-18.5	0
+249	-18.5	0
+250	-18.5	0
+251	-18.5	0
+252	-18.5	0
+253	-18.5	0
+254	-18.5	0
+255	-18.5	0
+256	-18.5	0
+257	-18.5	0
+258	-18.5	0
+259	-18.5	0
+260	-18.5	0
+261	-18.5	0
+262	-18.5	0
+263	-18.5	0
+264	-18.5	0
+265	-18.5	0
+266	-18.5	0
+267	-18.5	0
+268	-18.5	0
+269	-18.5	0
+270	-18.5	0
+271	-18.5	0
+272	-18.5	0
+273	-18.5	0
+274	-18.5	0
+275	-18.5	0
+276	-18.5	0
+277	-18.5	0
+278	-18.5	0
+279	-18.5	0
+280	-18.5	0
+281	-18.5	0
+282	-18.5	0
+283	-18.5	0
+284	-18.5	0
+285	-18.5	0
+286	-18.5	0
+287	-18.5	0
+288	-18.5	0
+289	-18.5	0
+290	-18.5	0
+291	-18.5	0
+292	-18.5	0
+293	-18.5	0
+294	-18.5	0
+295	-18.5	0
+296	-18.5	0
+297	-18.5	0
+298	-18.5	0
+299	-18.5	0
+300	-18.5	0
+301	-18.5	0
+302	-18.5	0
+303	-18.5	0
+304	-18.5	0
+305	-18.5	0
+306	-18.5	0
+307	-18.5	0
+308	-18.5	0
+309	-18.5	0
+310	-18.5	0
+311	-18.5	0
+312	-18.5	0
+313	-18.5	0
+314	-18.5	0
+315	-18.5	0
+316	-18.5	0
+317	-18.5	0
+318	-18.5	0
+319	-18.5	0
+320	-18.5	0
+321	-18.5	0
+322	-18.5	0
+323	-18.5	0
+324	-18.5	0
+325	-18.5	0
+326	-18.5	0
+327	-18.5	0
+328	-18.5	0
+329	-18.5	0
+330	-18.5	0
+331	-18.5	0
+332	-18.5	0
+333	-18.5	0
+334	-18.5	0
+335	-18.5	0
+336	-18.5	0
+337	-18.5	0
+338	-18.5	0
+339	-18.5	0
+340	-18.5	0
+341	-18.5	0
+342	-18.5	0
+343	-18.5	0
+344	-18.5	0
+345	-18.5	0
+346	-18.5	0
+347	-18.5	0
+348	-18.5	0
+349	-18.5	0
+350	-18.5	0
+351	-18.5	0
+352	-18.5	0
+353	-18.5	0
+354	-18.5	0
+355	-18.5	0
+356	-18.5	0
+357	-18.5	0
+358	-18.5	0
+359	-18.5	0
+360	-18.5	0
+0	-18	0
+1	-18	0
+2	-18	0
+3	-18	0
+4	-18	0
+5	-18	0
+6	-18	0
+7	-18	0
+8	-18	0
+9	-18	0
+10	-18	0
+11	-18	0
+12	-18	0
+13	-18	0
+14	-18	0
+15	-18	0
+16	-18	0
+17	-18	0
+18	-18	0
+19	-18	0
+20	-18	0
+21	-18	0
+22	-18	0
+23	-18	0
+24	-18	0
+25	-18	0
+26	-18	0
+27	-18	0
+28	-18	0
+29	-18	0
+30	-18	0
+31	-18	0
+32	-18	0
+33	-18	0
+34	-18	0
+35	-18	0
+36	-18	0
+37	-18	0
+38	-18	0
+39	-18	0
+40	-18	0
+41	-18	0
+42	-18	0
+43	-18	0
+44	-18	0
+45	-18	0
+46	-18	0
+47	-18	0
+48	-18	0
+49	-18	0
+50	-18	0
+51	-18	0
+52	-18	0
+53	-18	0
+54	-18	0
+55	-18	0
+56	-18	0
+57	-18	0
+58	-18	0
+59	-18	0
+60	-18	0
+61	-18	0
+62	-18	0
+63	-18	0
+64	-18	0
+65	-18	0
+66	-18	0
+67	-18	0
+68	-18	0
+69	-18	0
+70	-18	0
+71	-18	0
+72	-18	0
+73	-18	0
+74	-18	0
+75	-18	0
+76	-18	0
+77	-18	0
+78	-18	0
+79	-18	0
+80	-18	0
+81	-18	0
+82	-18	0
+83	-18	0
+84	-18	0
+85	-18	0
+86	-18	0
+87	-18	0
+88	-18	0
+89	-18	0
+90	-18	0
+91	-18	0
+92	-18	0
+93	-18	0
+94	-18	0
+95	-18	0
+96	-18	0
+97	-18	0
+98	-18	0
+99	-18	0
+100	-18	0
+101	-18	0
+102	-18	0
+103	-18	0
+104	-18	0
+105	-18	0
+106	-18	0
+107	-18	0
+108	-18	0
+109	-18	0
+110	-18	0
+111	-18	0
+112	-18	0
+113	-18	0
+114	-18	0
+115	-18	0
+116	-18	0
+117	-18	0
+118	-18	0
+119	-18	0
+120	-18	0
+121	-18	0
+122	-18	0
+123	-18	0
+124	-18	0
+125	-18	0
+126	-18	0
+127	-18	0
+128	-18	0
+129	-18	0
+130	-18	0
+131	-18	0
+132	-18	0
+133	-18	0
+134	-18	0
+135	-18	0
+136	-18	0
+137	-18	0
+138	-18	0
+139	-18	0
+140	-18	0
+141	-18	0
+142	-18	0
+143	-18	0
+144	-18	0
+145	-18	0
+146	-18	0
+147	-18	0
+148	-18	0
+149	-18	0
+150	-18	0
+151	-18	0
+152	-18	0
+153	-18	0
+154	-18	0
+155	-18	0
+156	-18	0
+157	-18	0
+158	-18	0
+159	-18	0
+160	-18	0
+161	-18	0
+162	-18	0
+163	-18	0
+164	-18	0
+165	-18	0
+166	-18	0
+167	-18	0
+168	-18	0
+169	-18	0
+170	-18	0
+171	-18	0
+172	-18	0
+173	-18	0
+174	-18	0
+175	-18	0
+176	-18	0
+177	-18	0
+178	-18	0
+179	-18	0
+180	-18	0
+181	-18	0
+182	-18	0
+183	-18	0
+184	-18	0
+185	-18	0
+186	-18	0
+187	-18	0
+188	-18	0
+189	-18	0
+190	-18	0
+191	-18	0
+192	-18	0
+193	-18	0
+194	-18	0
+195	-18	0
+196	-18	0
+197	-18	0
+198	-18	0
+199	-18	0
+200	-18	0
+201	-18	0
+202	-18	0
+203	-18	0
+204	-18	0
+205	-18	0
+206	-18	0
+207	-18	0
+208	-18	0
+209	-18	0
+210	-18	0
+211	-18	0
+212	-18	0
+213	-18	0
+214	-18	0
+215	-18	0
+216	-18	0
+217	-18	0
+218	-18	0
+219	-18	0
+220	-18	0
+221	-18	0
+222	-18	0
+223	-18	0
+224	-18	0
+225	-18	0
+226	-18	0
+227	-18	0
+228	-18	0
+229	-18	0
+230	-18	0
+231	-18	0
+232	-18	0
+233	-18	0
+234	-18	0
+235	-18	0
+236	-18	0
+237	-18	0
+238	-18	0
+239	-18	0
+240	-18	0
+241	-18	0
+242	-18	0
+243	-18	0
+244	-18	0
+245	-18	0
+246	-18	0
+247	-18	0
+248	-18	0
+249	-18	0
+250	-18	0
+251	-18	0
+252	-18	0
+253	-18	0
+254	-18	0
+255	-18	0
+256	-18	0
+257	-18	0
+258	-18	0
+259	-18	0
+260	-18	0
+261	-18	0
+262	-18	0
+263	-18	0
+264	-18	0
+265	-18	0
+266	-18	0
+267	-18	0
+268	-18	0
+269	-18	0
+270	-18	0
+271	-18	0
+272	-18	0
+273	-18	0
+274	-18	0
+275	-18	0
+276	-18	0
+277	-18	0
+278	-18	0
+279	-18	0
+280	-18	0
+281	-18	0
+282	-18	0
+283	-18	0
+284	-18	0
+285	-18	0
+286	-18	0
+287	-18	0
+288	-18	0
+289	-18	0
+290	-18	0
+291	-18	0
+292	-18	0
+293	-18	0
+294	-18	0
+295	-18	0
+296	-18	0
+297	-18	0
+298	-18	0
+299	-18	0
+300	-18	0
+301	-18	0
+302	-18	0
+303	-18	0
+304	-18	0
+305	-18	0
+306	-18	0
+307	-18	0
+308	-18	0
+309	-18	0
+310	-18	0
+311	-18	0
+312	-18	0
+313	-18	0
+314	-18	0
+315	-18	0
+316	-18	0
+317	-18	0
+318	-18	0
+319	-18	0
+320	-18	0
+321	-18	0
+322	-18	0
+323	-18	0
+324	-18	0
+325	-18	0
+326	-18	0
+327	-18	0
+328	-18	0
+329	-18	0
+330	-18	0
+331	-18	0
+332	-18	0
+333	-18	0
+334	-18	0
+335	-18	0
+336	-18	0
+337	-18	0
+338	-18	0
+339	-18	0
+340	-18	0
+341	-18	0
+342	-18	0
+343	-18	0
+344	-18	0
+345	-18	0
+346	-18	0
+347	-18	0
+348	-18	0
+349	-18	0
+350	-18	0
+351	-18	0
+352	-18	0
+353	-18	0
+354	-18	0
+355	-18	0
+356	-18	0
+357	-18	0
+358	-18	0
+359	-18	0
+360	-18	0
+0	-17.5	0
+1	-17.5	0
+2	-17.5	0
+3	-17.5	0
+4	-17.5	0
+5	-17.5	0
+6	-17.5	0
+7	-17.5	0
+8	-17.5	0
+9	-17.5	0
+10	-17.5	0
+11	-17.5	0
+12	-17.5	0
+13	-17.5	0
+14	-17.5	0
+15	-17.5	0
+16	-17.5	0
+17	-17.5	0
+18	-17.5	0
+19	-17.5	0
+20	-17.5	0
+21	-17.5	0
+22	-17.5	0
+23	-17.5	0
+24	-17.5	0
+25	-17.5	0
+26	-17.5	0
+27	-17.5	0
+28	-17.5	0
+29	-17.5	0
+30	-17.5	0
+31	-17.5	0
+32	-17.5	0
+33	-17.5	0
+34	-17.5	0
+35	-17.5	0
+36	-17.5	0
+37	-17.5	0
+38	-17.5	0
+39	-17.5	0
+40	-17.5	0
+41	-17.5	0
+42	-17.5	0
+43	-17.5	0
+44	-17.5	0
+45	-17.5	0
+46	-17.5	0
+47	-17.5	0
+48	-17.5	0
+49	-17.5	0
+50	-17.5	0
+51	-17.5	0
+52	-17.5	0
+53	-17.5	0
+54	-17.5	0
+55	-17.5	0
+56	-17.5	0
+57	-17.5	0
+58	-17.5	0
+59	-17.5	0
+60	-17.5	0
+61	-17.5	0
+62	-17.5	0
+63	-17.5	0
+64	-17.5	0
+65	-17.5	0
+66	-17.5	0
+67	-17.5	0
+68	-17.5	0
+69	-17.5	0
+70	-17.5	0
+71	-17.5	0
+72	-17.5	0
+73	-17.5	0
+74	-17.5	0
+75	-17.5	0
+76	-17.5	0
+77	-17.5	0
+78	-17.5	0
+79	-17.5	0
+80	-17.5	0
+81	-17.5	0
+82	-17.5	0
+83	-17.5	0
+84	-17.5	0
+85	-17.5	0
+86	-17.5	0
+87	-17.5	0
+88	-17.5	0
+89	-17.5	0
+90	-17.5	0
+91	-17.5	0
+92	-17.5	0
+93	-17.5	0
+94	-17.5	0
+95	-17.5	0
+96	-17.5	0
+97	-17.5	0
+98	-17.5	0
+99	-17.5	0
+100	-17.5	0
+101	-17.5	0
+102	-17.5	0
+103	-17.5	0
+104	-17.5	0
+105	-17.5	0
+106	-17.5	0
+107	-17.5	0
+108	-17.5	0
+109	-17.5	0
+110	-17.5	0
+111	-17.5	0
+112	-17.5	0
+113	-17.5	0
+114	-17.5	0
+115	-17.5	0
+116	-17.5	0
+117	-17.5	0
+118	-17.5	0
+119	-17.5	0
+120	-17.5	0
+121	-17.5	0
+122	-17.5	0
+123	-17.5	0
+124	-17.5	0
+125	-17.5	0
+126	-17.5	0
+127	-17.5	0
+128	-17.5	0
+129	-17.5	0
+130	-17.5	0
+131	-17.5	0
+132	-17.5	0
+133	-17.5	0
+134	-17.5	0
+135	-17.5	0
+136	-17.5	0
+137	-17.5	0
+138	-17.5	0
+139	-17.5	0
+140	-17.5	0
+141	-17.5	0
+142	-17.5	0
+143	-17.5	0
+144	-17.5	0
+145	-17.5	0
+146	-17.5	0
+147	-17.5	0
+148	-17.5	0
+149	-17.5	0
+150	-17.5	0
+151	-17.5	0
+152	-17.5	0
+153	-17.5	0
+154	-17.5	0
+155	-17.5	0
+156	-17.5	0
+157	-17.5	0
+158	-17.5	0
+159	-17.5	0
+160	-17.5	0
+161	-17.5	0
+162	-17.5	0
+163	-17.5	0
+164	-17.5	0
+165	-17.5	0
+166	-17.5	0
+167	-17.5	0
+168	-17.5	0
+169	-17.5	0
+170	-17.5	0
+171	-17.5	0
+172	-17.5	0
+173	-17.5	0
+174	-17.5	0
+175	-17.5	0
+176	-17.5	0
+177	-17.5	0
+178	-17.5	0
+179	-17.5	0
+180	-17.5	0
+181	-17.5	0
+182	-17.5	0
+183	-17.5	0
+184	-17.5	0
+185	-17.5	0
+186	-17.5	0
+187	-17.5	0
+188	-17.5	0
+189	-17.5	0
+190	-17.5	0
+191	-17.5	0
+192	-17.5	0
+193	-17.5	0
+194	-17.5	0
+195	-17.5	0
+196	-17.5	0
+197	-17.5	0
+198	-17.5	0
+199	-17.5	0
+200	-17.5	0
+201	-17.5	0
+202	-17.5	0
+203	-17.5	0
+204	-17.5	0
+205	-17.5	0
+206	-17.5	0
+207	-17.5	0
+208	-17.5	0
+209	-17.5	0
+210	-17.5	0
+211	-17.5	0
+212	-17.5	0
+213	-17.5	0
+214	-17.5	0
+215	-17.5	0
+216	-17.5	0
+217	-17.5	0
+218	-17.5	0
+219	-17.5	0
+220	-17.5	0
+221	-17.5	0
+222	-17.5	0
+223	-17.5	0
+224	-17.5	0
+225	-17.5	0
+226	-17.5	0
+227	-17.5	0
+228	-17.5	0
+229	-17.5	0
+230	-17.5	0
+231	-17.5	0
+232	-17.5	0
+233	-17.5	0
+234	-17.5	0
+235	-17.5	0
+236	-17.5	0
+237	-17.5	0
+238	-17.5	0
+239	-17.5	0
+240	-17.5	0
+241	-17.5	0
+242	-17.5	0
+243	-17.5	0
+244	-17.5	0
+245	-17.5	0
+246	-17.5	0
+247	-17.5	0
+248	-17.5	0
+249	-17.5	0
+250	-17.5	0
+251	-17.5	0
+252	-17.5	0
+253	-17.5	0
+254	-17.5	0
+255	-17.5	0
+256	-17.5	0
+257	-17.5	0
+258	-17.5	0
+259	-17.5	0
+260	-17.5	0
+261	-17.5	0
+262	-17.5	0
+263	-17.5	0
+264	-17.5	0
+265	-17.5	0
+266	-17.5	0
+267	-17.5	0
+268	-17.5	0
+269	-17.5	0
+270	-17.5	0
+271	-17.5	0
+272	-17.5	0
+273	-17.5	0
+274	-17.5	0
+275	-17.5	0
+276	-17.5	0
+277	-17.5	0
+278	-17.5	0
+279	-17.5	0
+280	-17.5	0
+281	-17.5	0
+282	-17.5	0
+283	-17.5	0
+284	-17.5	0
+285	-17.5	0
+286	-17.5	0
+287	-17.5	0
+288	-17.5	0
+289	-17.5	0
+290	-17.5	0
+291	-17.5	0
+292	-17.5	0
+293	-17.5	0
+294	-17.5	0
+295	-17.5	0
+296	-17.5	0
+297	-17.5	0
+298	-17.5	0
+299	-17.5	0
+300	-17.5	0
+301	-17.5	0
+302	-17.5	0
+303	-17.5	0
+304	-17.5	0
+305	-17.5	0
+306	-17.5	0
+307	-17.5	0
+308	-17.5	0
+309	-17.5	0
+310	-17.5	0
+311	-17.5	0
+312	-17.5	0
+313	-17.5	0
+314	-17.5	0
+315	-17.5	0
+316	-17.5	0
+317	-17.5	0
+318	-17.5	0
+319	-17.5	0
+320	-17.5	0
+321	-17.5	0
+322	-17.5	0
+323	-17.5	0
+324	-17.5	0
+325	-17.5	0
+326	-17.5	0
+327	-17.5	0
+328	-17.5	0
+329	-17.5	0
+330	-17.5	0
+331	-17.5	0
+332	-17.5	0
+333	-17.5	0
+334	-17.5	0
+335	-17.5	0
+336	-17.5	0
+337	-17.5	0
+338	-17.5	0
+339	-17.5	0
+340	-17.5	0
+341	-17.5	0
+342	-17.5	0
+343	-17.5	0
+344	-17.5	0
+345	-17.5	0
+346	-17.5	0
+347	-17.5	0
+348	-17.5	0
+349	-17.5	0
+350	-17.5	0
+351	-17.5	0
+352	-17.5	0
+353	-17.5	0
+354	-17.5	0
+355	-17.5	0
+356	-17.5	0
+357	-17.5	0
+358	-17.5	0
+359	-17.5	0
+360	-17.5	0
+0	-17	0
+1	-17	0
+2	-17	0
+3	-17	0
+4	-17	0
+5	-17	0
+6	-17	0
+7	-17	0
+8	-17	0
+9	-17	0
+10	-17	0
+11	-17	0
+12	-17	0
+13	-17	0
+14	-17	0
+15	-17	0
+16	-17	0
+17	-17	0
+18	-17	0
+19	-17	0
+20	-17	0
+21	-17	0
+22	-17	0
+23	-17	0
+24	-17	0
+25	-17	0
+26	-17	0
+27	-17	0
+28	-17	0
+29	-17	0
+30	-17	0
+31	-17	0
+32	-17	0
+33	-17	0
+34	-17	0
+35	-17	0
+36	-17	0
+37	-17	0
+38	-17	0
+39	-17	0
+40	-17	0
+41	-17	0
+42	-17	0
+43	-17	0
+44	-17	0
+45	-17	0
+46	-17	0
+47	-17	0
+48	-17	0
+49	-17	0
+50	-17	0
+51	-17	0
+52	-17	0
+53	-17	0
+54	-17	0
+55	-17	0
+56	-17	0
+57	-17	0
+58	-17	0
+59	-17	0
+60	-17	0
+61	-17	0
+62	-17	0
+63	-17	0
+64	-17	0
+65	-17	0
+66	-17	0
+67	-17	0
+68	-17	0
+69	-17	0
+70	-17	0
+71	-17	0
+72	-17	0
+73	-17	0
+74	-17	0
+75	-17	0
+76	-17	0
+77	-17	0
+78	-17	0
+79	-17	0
+80	-17	0
+81	-17	0
+82	-17	0
+83	-17	0
+84	-17	0
+85	-17	0
+86	-17	0
+87	-17	0
+88	-17	0
+89	-17	0
+90	-17	0
+91	-17	0
+92	-17	0
+93	-17	0
+94	-17	0
+95	-17	0
+96	-17	0
+97	-17	0
+98	-17	0
+99	-17	0
+100	-17	0
+101	-17	0
+102	-17	0
+103	-17	0
+104	-17	0
+105	-17	0
+106	-17	0
+107	-17	0
+108	-17	0
+109	-17	0
+110	-17	0
+111	-17	0
+112	-17	0
+113	-17	0
+114	-17	0
+115	-17	0
+116	-17	0
+117	-17	0
+118	-17	0
+119	-17	0
+120	-17	0
+121	-17	0
+122	-17	0
+123	-17	0
+124	-17	0
+125	-17	0
+126	-17	0
+127	-17	0
+128	-17	0
+129	-17	0
+130	-17	0
+131	-17	0
+132	-17	0
+133	-17	0
+134	-17	0
+135	-17	0
+136	-17	0
+137	-17	0
+138	-17	0
+139	-17	0
+140	-17	0
+141	-17	0
+142	-17	0
+143	-17	0
+144	-17	0
+145	-17	0
+146	-17	0
+147	-17	0
+148	-17	0
+149	-17	0
+150	-17	0
+151	-17	0
+152	-17	0
+153	-17	0
+154	-17	0
+155	-17	0
+156	-17	0
+157	-17	0
+158	-17	0
+159	-17	0
+160	-17	0
+161	-17	0
+162	-17	0
+163	-17	0
+164	-17	0
+165	-17	0
+166	-17	0
+167	-17	0
+168	-17	0
+169	-17	0
+170	-17	0
+171	-17	0
+172	-17	0
+173	-17	0
+174	-17	0
+175	-17	0
+176	-17	0
+177	-17	0
+178	-17	0
+179	-17	0
+180	-17	0
+181	-17	0
+182	-17	0
+183	-17	0
+184	-17	0
+185	-17	0
+186	-17	0
+187	-17	0
+188	-17	0
+189	-17	0
+190	-17	0
+191	-17	0
+192	-17	0
+193	-17	0
+194	-17	0
+195	-17	0
+196	-17	0
+197	-17	0
+198	-17	0
+199	-17	0
+200	-17	0
+201	-17	0
+202	-17	0
+203	-17	0
+204	-17	0
+205	-17	0
+206	-17	0
+207	-17	0
+208	-17	0
+209	-17	0
+210	-17	0
+211	-17	0
+212	-17	0
+213	-17	0
+214	-17	0
+215	-17	0
+216	-17	0
+217	-17	0
+218	-17	0
+219	-17	0
+220	-17	0
+221	-17	0
+222	-17	0
+223	-17	0
+224	-17	0
+225	-17	0
+226	-17	0
+227	-17	0
+228	-17	0
+229	-17	0
+230	-17	0
+231	-17	0
+232	-17	0
+233	-17	0
+234	-17	0
+235	-17	0
+236	-17	0
+237	-17	0
+238	-17	0
+239	-17	0
+240	-17	0
+241	-17	0
+242	-17	0
+243	-17	0
+244	-17	0
+245	-17	0
+246	-17	0
+247	-17	0
+248	-17	0
+249	-17	0
+250	-17	0
+251	-17	0
+252	-17	0
+253	-17	0
+254	-17	0
+255	-17	0
+256	-17	0
+257	-17	0
+258	-17	0
+259	-17	0
+260	-17	0
+261	-17	0
+262	-17	0
+263	-17	0
+264	-17	0
+265	-17	0
+266	-17	0
+267	-17	0
+268	-17	0
+269	-17	0
+270	-17	0
+271	-17	0
+272	-17	0
+273	-17	0
+274	-17	0
+275	-17	0
+276	-17	0
+277	-17	0
+278	-17	0
+279	-17	0
+280	-17	0
+281	-17	0
+282	-17	0
+283	-17	0
+284	-17	0
+285	-17	0
+286	-17	0
+287	-17	0
+288	-17	0
+289	-17	0
+290	-17	0
+291	-17	0
+292	-17	0
+293	-17	0
+294	-17	0
+295	-17	0
+296	-17	0
+297	-17	0
+298	-17	0
+299	-17	0
+300	-17	0
+301	-17	0
+302	-17	0
+303	-17	0
+304	-17	0
+305	-17	0
+306	-17	0
+307	-17	0
+308	-17	0
+309	-17	0
+310	-17	0
+311	-17	0
+312	-17	0
+313	-17	0
+314	-17	0
+315	-17	0
+316	-17	0
+317	-17	0
+318	-17	0
+319	-17	0
+320	-17	0
+321	-17	0
+322	-17	0
+323	-17	0
+324	-17	0
+325	-17	0
+326	-17	0
+327	-17	0
+328	-17	0
+329	-17	0
+330	-17	0
+331	-17	0
+332	-17	0
+333	-17	0
+334	-17	0
+335	-17	0
+336	-17	0
+337	-17	0
+338	-17	0
+339	-17	0
+340	-17	0
+341	-17	0
+342	-17	0
+343	-17	0
+344	-17	0
+345	-17	0
+346	-17	0
+347	-17	0
+348	-17	0
+349	-17	0
+350	-17	0
+351	-17	0
+352	-17	0
+353	-17	0
+354	-17	0
+355	-17	0
+356	-17	0
+357	-17	0
+358	-17	0
+359	-17	0
+360	-17	0
+0	-16.5	0
+1	-16.5	0
+2	-16.5	0
+3	-16.5	0
+4	-16.5	0
+5	-16.5	0
+6	-16.5	0
+7	-16.5	0
+8	-16.5	0
+9	-16.5	0
+10	-16.5	0
+11	-16.5	0
+12	-16.5	0
+13	-16.5	0
+14	-16.5	0
+15	-16.5	0
+16	-16.5	0
+17	-16.5	0
+18	-16.5	0
+19	-16.5	0
+20	-16.5	0
+21	-16.5	0
+22	-16.5	0
+23	-16.5	0
+24	-16.5	0
+25	-16.5	0
+26	-16.5	0
+27	-16.5	0
+28	-16.5	0
+29	-16.5	0
+30	-16.5	0
+31	-16.5	0
+32	-16.5	0
+33	-16.5	0
+34	-16.5	0
+35	-16.5	0
+36	-16.5	0
+37	-16.5	0
+38	-16.5	0
+39	-16.5	0
+40	-16.5	0
+41	-16.5	0
+42	-16.5	0
+43	-16.5	0
+44	-16.5	0
+45	-16.5	0
+46	-16.5	0
+47	-16.5	0
+48	-16.5	0
+49	-16.5	0
+50	-16.5	0
+51	-16.5	0
+52	-16.5	0
+53	-16.5	0
+54	-16.5	0
+55	-16.5	0
+56	-16.5	0
+57	-16.5	0
+58	-16.5	0
+59	-16.5	0
+60	-16.5	0
+61	-16.5	0
+62	-16.5	0
+63	-16.5	0
+64	-16.5	0
+65	-16.5	0
+66	-16.5	0
+67	-16.5	0
+68	-16.5	0
+69	-16.5	0
+70	-16.5	0
+71	-16.5	0
+72	-16.5	0
+73	-16.5	0
+74	-16.5	0
+75	-16.5	0
+76	-16.5	0
+77	-16.5	0
+78	-16.5	0
+79	-16.5	0
+80	-16.5	0
+81	-16.5	0
+82	-16.5	0
+83	-16.5	0
+84	-16.5	0
+85	-16.5	0
+86	-16.5	0
+87	-16.5	0
+88	-16.5	0
+89	-16.5	0
+90	-16.5	0
+91	-16.5	0
+92	-16.5	0
+93	-16.5	0
+94	-16.5	0
+95	-16.5	0
+96	-16.5	0
+97	-16.5	0
+98	-16.5	0
+99	-16.5	0
+100	-16.5	0
+101	-16.5	0
+102	-16.5	0
+103	-16.5	0
+104	-16.5	0
+105	-16.5	0
+106	-16.5	0
+107	-16.5	0
+108	-16.5	0
+109	-16.5	0
+110	-16.5	0
+111	-16.5	0
+112	-16.5	0
+113	-16.5	0
+114	-16.5	0
+115	-16.5	0
+116	-16.5	0
+117	-16.5	0
+118	-16.5	0
+119	-16.5	0
+120	-16.5	0
+121	-16.5	0
+122	-16.5	0
+123	-16.5	0
+124	-16.5	0
+125	-16.5	0
+126	-16.5	0
+127	-16.5	0
+128	-16.5	0
+129	-16.5	0
+130	-16.5	0
+131	-16.5	0
+132	-16.5	0
+133	-16.5	0
+134	-16.5	0
+135	-16.5	0
+136	-16.5	0
+137	-16.5	0
+138	-16.5	0
+139	-16.5	0
+140	-16.5	0
+141	-16.5	0
+142	-16.5	0
+143	-16.5	0
+144	-16.5	0
+145	-16.5	0
+146	-16.5	0
+147	-16.5	0
+148	-16.5	0
+149	-16.5	0
+150	-16.5	0
+151	-16.5	0
+152	-16.5	0
+153	-16.5	0
+154	-16.5	0
+155	-16.5	0
+156	-16.5	0
+157	-16.5	0
+158	-16.5	0
+159	-16.5	0
+160	-16.5	0
+161	-16.5	0
+162	-16.5	0
+163	-16.5	0
+164	-16.5	0
+165	-16.5	0
+166	-16.5	0
+167	-16.5	0
+168	-16.5	0
+169	-16.5	0
+170	-16.5	0
+171	-16.5	0
+172	-16.5	0
+173	-16.5	0
+174	-16.5	0
+175	-16.5	0
+176	-16.5	0
+177	-16.5	0
+178	-16.5	0
+179	-16.5	0
+180	-16.5	0
+181	-16.5	0
+182	-16.5	0
+183	-16.5	0
+184	-16.5	0
+185	-16.5	0
+186	-16.5	0
+187	-16.5	0
+188	-16.5	0
+189	-16.5	0
+190	-16.5	0
+191	-16.5	0
+192	-16.5	0
+193	-16.5	0
+194	-16.5	0
+195	-16.5	0
+196	-16.5	0
+197	-16.5	0
+198	-16.5	0
+199	-16.5	0
+200	-16.5	0
+201	-16.5	0
+202	-16.5	0
+203	-16.5	0
+204	-16.5	0
+205	-16.5	0
+206	-16.5	0
+207	-16.5	0
+208	-16.5	0
+209	-16.5	0
+210	-16.5	0
+211	-16.5	0
+212	-16.5	0
+213	-16.5	0
+214	-16.5	0
+215	-16.5	0
+216	-16.5	0
+217	-16.5	0
+218	-16.5	0
+219	-16.5	0
+220	-16.5	0
+221	-16.5	0
+222	-16.5	0
+223	-16.5	0
+224	-16.5	0
+225	-16.5	0
+226	-16.5	0
+227	-16.5	0
+228	-16.5	0
+229	-16.5	0
+230	-16.5	0
+231	-16.5	0
+232	-16.5	0
+233	-16.5	0
+234	-16.5	0
+235	-16.5	0
+236	-16.5	0
+237	-16.5	0
+238	-16.5	0
+239	-16.5	0
+240	-16.5	0
+241	-16.5	0
+242	-16.5	0
+243	-16.5	0
+244	-16.5	0
+245	-16.5	0
+246	-16.5	0
+247	-16.5	0
+248	-16.5	0
+249	-16.5	0
+250	-16.5	0
+251	-16.5	0
+252	-16.5	0
+253	-16.5	0
+254	-16.5	0
+255	-16.5	0
+256	-16.5	0
+257	-16.5	0
+258	-16.5	0
+259	-16.5	0
+260	-16.5	0
+261	-16.5	0
+262	-16.5	0
+263	-16.5	0
+264	-16.5	0
+265	-16.5	0
+266	-16.5	0
+267	-16.5	0
+268	-16.5	0
+269	-16.5	0
+270	-16.5	0
+271	-16.5	0
+272	-16.5	0
+273	-16.5	0
+274	-16.5	0
+275	-16.5	0
+276	-16.5	0
+277	-16.5	0
+278	-16.5	0
+279	-16.5	0
+280	-16.5	0
+281	-16.5	0
+282	-16.5	0
+283	-16.5	0
+284	-16.5	0
+285	-16.5	0
+286	-16.5	0
+287	-16.5	0
+288	-16.5	0
+289	-16.5	0
+290	-16.5	0
+291	-16.5	0
+292	-16.5	0
+293	-16.5	0
+294	-16.5	0
+295	-16.5	0
+296	-16.5	0
+297	-16.5	0
+298	-16.5	0
+299	-16.5	0
+300	-16.5	0
+301	-16.5	0
+302	-16.5	0
+303	-16.5	0
+304	-16.5	0
+305	-16.5	0
+306	-16.5	0
+307	-16.5	0
+308	-16.5	0
+309	-16.5	0
+310	-16.5	0
+311	-16.5	0
+312	-16.5	0
+313	-16.5	0
+314	-16.5	0
+315	-16.5	0
+316	-16.5	0
+317	-16.5	0
+318	-16.5	0
+319	-16.5	0
+320	-16.5	0
+321	-16.5	0
+322	-16.5	0
+323	-16.5	0
+324	-16.5	0
+325	-16.5	0
+326	-16.5	0
+327	-16.5	0
+328	-16.5	0
+329	-16.5	0
+330	-16.5	0
+331	-16.5	0
+332	-16.5	0
+333	-16.5	0
+334	-16.5	0
+335	-16.5	0
+336	-16.5	0
+337	-16.5	0
+338	-16.5	0
+339	-16.5	0
+340	-16.5	0
+341	-16.5	0
+342	-16.5	0
+343	-16.5	0
+344	-16.5	0
+345	-16.5	0
+346	-16.5	0
+347	-16.5	0
+348	-16.5	0
+349	-16.5	0
+350	-16.5	0
+351	-16.5	0
+352	-16.5	0
+353	-16.5	0
+354	-16.5	0
+355	-16.5	0
+356	-16.5	0
+357	-16.5	0
+358	-16.5	0
+359	-16.5	0
+360	-16.5	0
+0	-16	0
+1	-16	0
+2	-16	0
+3	-16	0
+4	-16	0
+5	-16	0
+6	-16	0
+7	-16	0
+8	-16	0
+9	-16	0
+10	-16	0
+11	-16	0
+12	-16	0
+13	-16	0
+14	-16	0
+15	-16	0
+16	-16	0
+17	-16	0
+18	-16	0
+19	-16	0
+20	-16	0
+21	-16	0
+22	-16	0
+23	-16	0
+24	-16	0
+25	-16	0
+26	-16	0
+27	-16	0
+28	-16	0
+29	-16	0
+30	-16	0
+31	-16	0
+32	-16	0
+33	-16	0
+34	-16	0
+35	-16	0
+36	-16	0
+37	-16	0
+38	-16	0
+39	-16	0
+40	-16	0
+41	-16	0
+42	-16	0
+43	-16	0
+44	-16	0
+45	-16	0
+46	-16	0
+47	-16	0
+48	-16	0
+49	-16	0
+50	-16	0
+51	-16	0
+52	-16	0
+53	-16	0
+54	-16	0
+55	-16	0
+56	-16	0
+57	-16	0
+58	-16	0
+59	-16	0
+60	-16	0
+61	-16	0
+62	-16	0
+63	-16	0
+64	-16	0
+65	-16	0
+66	-16	0
+67	-16	0
+68	-16	0
+69	-16	0
+70	-16	0
+71	-16	0
+72	-16	0
+73	-16	0
+74	-16	0
+75	-16	0
+76	-16	0
+77	-16	0
+78	-16	0
+79	-16	0
+80	-16	0
+81	-16	0
+82	-16	0
+83	-16	0
+84	-16	0
+85	-16	0
+86	-16	0
+87	-16	0
+88	-16	0
+89	-16	0
+90	-16	0
+91	-16	0
+92	-16	0
+93	-16	0
+94	-16	0
+95	-16	0
+96	-16	0
+97	-16	0
+98	-16	0
+99	-16	0
+100	-16	0
+101	-16	0
+102	-16	0
+103	-16	0
+104	-16	0
+105	-16	0
+106	-16	0
+107	-16	0
+108	-16	0
+109	-16	0
+110	-16	0
+111	-16	0
+112	-16	0
+113	-16	0
+114	-16	0
+115	-16	0
+116	-16	0
+117	-16	0
+118	-16	0
+119	-16	0
+120	-16	0
+121	-16	0
+122	-16	0
+123	-16	0
+124	-16	0
+125	-16	0
+126	-16	0
+127	-16	0
+128	-16	0
+129	-16	0
+130	-16	0
+131	-16	0
+132	-16	0
+133	-16	0
+134	-16	0
+135	-16	0
+136	-16	0
+137	-16	0
+138	-16	0
+139	-16	0
+140	-16	0
+141	-16	0
+142	-16	0
+143	-16	0
+144	-16	0
+145	-16	0
+146	-16	0
+147	-16	0
+148	-16	0
+149	-16	0
+150	-16	0
+151	-16	0
+152	-16	0
+153	-16	0
+154	-16	0
+155	-16	0
+156	-16	0
+157	-16	0
+158	-16	0
+159	-16	0
+160	-16	0
+161	-16	0
+162	-16	0
+163	-16	0
+164	-16	0
+165	-16	0
+166	-16	0
+167	-16	0
+168	-16	0
+169	-16	0
+170	-16	0
+171	-16	0
+172	-16	0
+173	-16	0
+174	-16	0
+175	-16	0
+176	-16	0
+177	-16	0
+178	-16	0
+179	-16	0
+180	-16	0
+181	-16	0
+182	-16	0
+183	-16	0
+184	-16	0
+185	-16	0
+186	-16	0
+187	-16	0
+188	-16	0
+189	-16	0
+190	-16	0
+191	-16	0
+192	-16	0
+193	-16	0
+194	-16	0
+195	-16	0
+196	-16	0
+197	-16	0
+198	-16	0
+199	-16	0
+200	-16	0
+201	-16	0
+202	-16	0
+203	-16	0
+204	-16	0
+205	-16	0
+206	-16	0
+207	-16	0
+208	-16	0
+209	-16	0
+210	-16	0
+211	-16	0
+212	-16	0
+213	-16	0
+214	-16	0
+215	-16	0
+216	-16	0
+217	-16	0
+218	-16	0
+219	-16	0
+220	-16	0
+221	-16	0
+222	-16	0
+223	-16	0
+224	-16	0
+225	-16	0
+226	-16	0
+227	-16	0
+228	-16	0
+229	-16	0
+230	-16	0
+231	-16	0
+232	-16	0
+233	-16	0
+234	-16	0
+235	-16	0
+236	-16	0
+237	-16	0
+238	-16	0
+239	-16	0
+240	-16	0
+241	-16	0
+242	-16	0
+243	-16	0
+244	-16	0
+245	-16	0
+246	-16	0
+247	-16	0
+248	-16	0
+249	-16	0
+250	-16	0
+251	-16	0
+252	-16	0
+253	-16	0
+254	-16	0
+255	-16	0
+256	-16	0
+257	-16	0
+258	-16	0
+259	-16	0
+260	-16	0
+261	-16	0
+262	-16	0
+263	-16	0
+264	-16	0
+265	-16	0
+266	-16	0
+267	-16	0
+268	-16	0
+269	-16	0
+270	-16	0
+271	-16	0
+272	-16	0
+273	-16	0
+274	-16	0
+275	-16	0
+276	-16	0
+277	-16	0
+278	-16	0
+279	-16	0
+280	-16	0
+281	-16	0
+282	-16	0
+283	-16	0
+284	-16	0
+285	-16	0
+286	-16	0
+287	-16	0
+288	-16	0
+289	-16	0
+290	-16	0
+291	-16	0
+292	-16	0
+293	-16	0
+294	-16	0
+295	-16	0
+296	-16	0
+297	-16	0
+298	-16	0
+299	-16	0
+300	-16	0
+301	-16	0
+302	-16	0
+303	-16	0
+304	-16	0
+305	-16	0
+306	-16	0
+307	-16	0
+308	-16	0
+309	-16	0
+310	-16	0
+311	-16	0
+312	-16	0
+313	-16	0
+314	-16	0
+315	-16	0
+316	-16	0
+317	-16	0
+318	-16	0
+319	-16	0
+320	-16	0
+321	-16	0
+322	-16	0
+323	-16	0
+324	-16	0
+325	-16	0
+326	-16	0
+327	-16	0
+328	-16	0
+329	-16	0
+330	-16	0
+331	-16	0
+332	-16	0
+333	-16	0
+334	-16	0
+335	-16	0
+336	-16	0
+337	-16	0
+338	-16	0
+339	-16	0
+340	-16	0
+341	-16	0
+342	-16	0
+343	-16	0
+344	-16	0
+345	-16	0
+346	-16	0
+347	-16	0
+348	-16	0
+349	-16	0
+350	-16	0
+351	-16	0
+352	-16	0
+353	-16	0
+354	-16	0
+355	-16	0
+356	-16	0
+357	-16	0
+358	-16	0
+359	-16	0
+360	-16	0
+0	-15.5	0
+1	-15.5	0
+2	-15.5	0
+3	-15.5	0
+4	-15.5	0
+5	-15.5	0
+6	-15.5	0
+7	-15.5	0
+8	-15.5	0
+9	-15.5	0
+10	-15.5	0
+11	-15.5	0
+12	-15.5	0
+13	-15.5	0
+14	-15.5	0
+15	-15.5	0
+16	-15.5	0
+17	-15.5	0
+18	-15.5	0
+19	-15.5	0
+20	-15.5	0
+21	-15.5	0
+22	-15.5	0
+23	-15.5	0
+24	-15.5	0
+25	-15.5	0
+26	-15.5	0
+27	-15.5	0
+28	-15.5	0
+29	-15.5	0
+30	-15.5	0
+31	-15.5	0
+32	-15.5	0
+33	-15.5	0
+34	-15.5	0
+35	-15.5	0
+36	-15.5	0
+37	-15.5	0
+38	-15.5	0
+39	-15.5	0
+40	-15.5	0
+41	-15.5	0
+42	-15.5	0
+43	-15.5	0
+44	-15.5	0
+45	-15.5	0
+46	-15.5	0
+47	-15.5	0
+48	-15.5	0
+49	-15.5	0
+50	-15.5	0
+51	-15.5	0
+52	-15.5	0
+53	-15.5	0
+54	-15.5	0
+55	-15.5	0
+56	-15.5	0
+57	-15.5	0
+58	-15.5	0
+59	-15.5	0
+60	-15.5	0
+61	-15.5	0
+62	-15.5	0
+63	-15.5	0
+64	-15.5	0
+65	-15.5	0
+66	-15.5	0
+67	-15.5	0
+68	-15.5	0
+69	-15.5	0
+70	-15.5	0
+71	-15.5	0
+72	-15.5	0
+73	-15.5	0
+74	-15.5	0
+75	-15.5	0
+76	-15.5	0
+77	-15.5	0
+78	-15.5	0
+79	-15.5	0
+80	-15.5	0
+81	-15.5	0
+82	-15.5	0
+83	-15.5	0
+84	-15.5	0
+85	-15.5	0
+86	-15.5	0
+87	-15.5	0
+88	-15.5	0
+89	-15.5	0
+90	-15.5	0
+91	-15.5	0
+92	-15.5	0
+93	-15.5	0
+94	-15.5	0
+95	-15.5	0
+96	-15.5	0
+97	-15.5	0
+98	-15.5	0
+99	-15.5	0
+100	-15.5	0
+101	-15.5	0
+102	-15.5	0
+103	-15.5	0
+104	-15.5	0
+105	-15.5	0
+106	-15.5	0
+107	-15.5	0
+108	-15.5	0
+109	-15.5	0
+110	-15.5	0
+111	-15.5	0
+112	-15.5	0
+113	-15.5	0
+114	-15.5	0
+115	-15.5	0
+116	-15.5	0
+117	-15.5	0
+118	-15.5	0
+119	-15.5	0
+120	-15.5	0
+121	-15.5	0
+122	-15.5	0
+123	-15.5	0
+124	-15.5	0
+125	-15.5	0
+126	-15.5	0
+127	-15.5	0
+128	-15.5	0
+129	-15.5	0
+130	-15.5	0
+131	-15.5	0
+132	-15.5	0
+133	-15.5	0
+134	-15.5	0
+135	-15.5	0
+136	-15.5	0
+137	-15.5	0
+138	-15.5	0
+139	-15.5	0
+140	-15.5	0
+141	-15.5	0
+142	-15.5	0
+143	-15.5	0
+144	-15.5	0
+145	-15.5	0
+146	-15.5	0
+147	-15.5	0
+148	-15.5	0
+149	-15.5	0
+150	-15.5	0
+151	-15.5	0
+152	-15.5	0
+153	-15.5	0
+154	-15.5	0
+155	-15.5	0
+156	-15.5	0
+157	-15.5	0
+158	-15.5	0
+159	-15.5	0
+160	-15.5	0
+161	-15.5	0
+162	-15.5	0
+163	-15.5	0
+164	-15.5	0
+165	-15.5	0
+166	-15.5	0
+167	-15.5	0
+168	-15.5	0
+169	-15.5	0
+170	-15.5	0
+171	-15.5	0
+172	-15.5	0
+173	-15.5	0
+174	-15.5	0
+175	-15.5	0
+176	-15.5	0
+177	-15.5	0
+178	-15.5	0
+179	-15.5	0
+180	-15.5	0
+181	-15.5	0
+182	-15.5	0
+183	-15.5	0
+184	-15.5	0
+185	-15.5	0
+186	-15.5	0
+187	-15.5	0
+188	-15.5	0
+189	-15.5	0
+190	-15.5	0
+191	-15.5	0
+192	-15.5	0
+193	-15.5	0
+194	-15.5	0
+195	-15.5	0
+196	-15.5	0
+197	-15.5	0
+198	-15.5	0
+199	-15.5	0
+200	-15.5	0
+201	-15.5	0
+202	-15.5	0
+203	-15.5	0
+204	-15.5	0
+205	-15.5	0
+206	-15.5	0
+207	-15.5	0
+208	-15.5	0
+209	-15.5	0
+210	-15.5	0
+211	-15.5	0
+212	-15.5	0
+213	-15.5	0
+214	-15.5	0
+215	-15.5	0
+216	-15.5	0
+217	-15.5	0
+218	-15.5	0
+219	-15.5	0
+220	-15.5	0
+221	-15.5	0
+222	-15.5	0
+223	-15.5	0
+224	-15.5	0
+225	-15.5	0
+226	-15.5	0
+227	-15.5	0
+228	-15.5	0
+229	-15.5	0
+230	-15.5	0
+231	-15.5	0
+232	-15.5	0
+233	-15.5	0
+234	-15.5	0
+235	-15.5	0
+236	-15.5	0
+237	-15.5	0
+238	-15.5	0
+239	-15.5	0
+240	-15.5	0
+241	-15.5	0
+242	-15.5	0
+243	-15.5	0
+244	-15.5	0
+245	-15.5	0
+246	-15.5	0
+247	-15.5	0
+248	-15.5	0
+249	-15.5	0
+250	-15.5	0
+251	-15.5	0
+252	-15.5	0
+253	-15.5	0
+254	-15.5	0
+255	-15.5	0
+256	-15.5	0
+257	-15.5	0
+258	-15.5	0
+259	-15.5	0
+260	-15.5	0
+261	-15.5	0
+262	-15.5	0
+263	-15.5	0
+264	-15.5	0
+265	-15.5	0
+266	-15.5	0
+267	-15.5	0
+268	-15.5	0
+269	-15.5	0
+270	-15.5	0
+271	-15.5	0
+272	-15.5	0
+273	-15.5	0
+274	-15.5	0
+275	-15.5	0
+276	-15.5	0
+277	-15.5	0
+278	-15.5	0
+279	-15.5	0
+280	-15.5	0
+281	-15.5	0
+282	-15.5	0
+283	-15.5	0
+284	-15.5	0
+285	-15.5	0
+286	-15.5	0
+287	-15.5	0
+288	-15.5	0
+289	-15.5	0
+290	-15.5	0
+291	-15.5	0
+292	-15.5	0
+293	-15.5	0
+294	-15.5	0
+295	-15.5	0
+296	-15.5	0
+297	-15.5	0
+298	-15.5	0
+299	-15.5	0
+300	-15.5	0
+301	-15.5	0
+302	-15.5	0
+303	-15.5	0
+304	-15.5	0
+305	-15.5	0
+306	-15.5	0
+307	-15.5	0
+308	-15.5	0
+309	-15.5	0
+310	-15.5	0
+311	-15.5	0
+312	-15.5	0
+313	-15.5	0
+314	-15.5	0
+315	-15.5	0
+316	-15.5	0
+317	-15.5	0
+318	-15.5	0
+319	-15.5	0
+320	-15.5	0
+321	-15.5	0
+322	-15.5	0
+323	-15.5	0
+324	-15.5	0
+325	-15.5	0
+326	-15.5	0
+327	-15.5	0
+328	-15.5	0
+329	-15.5	0
+330	-15.5	0
+331	-15.5	0
+332	-15.5	0
+333	-15.5	0
+334	-15.5	0
+335	-15.5	0
+336	-15.5	0
+337	-15.5	0
+338	-15.5	0
+339	-15.5	0
+340	-15.5	0
+341	-15.5	0
+342	-15.5	0
+343	-15.5	0
+344	-15.5	0
+345	-15.5	0
+346	-15.5	0
+347	-15.5	0
+348	-15.5	0
+349	-15.5	0
+350	-15.5	0
+351	-15.5	0
+352	-15.5	0
+353	-15.5	0
+354	-15.5	0
+355	-15.5	0
+356	-15.5	0
+357	-15.5	0
+358	-15.5	0
+359	-15.5	0
+360	-15.5	0
+0	-15	0
+1	-15	0
+2	-15	0
+3	-15	0
+4	-15	0
+5	-15	0
+6	-15	0
+7	-15	0
+8	-15	0
+9	-15	0
+10	-15	0
+11	-15	0
+12	-15	0
+13	-15	0
+14	-15	0
+15	-15	0
+16	-15	0
+17	-15	0
+18	-15	0
+19	-15	0
+20	-15	0
+21	-15	0
+22	-15	0
+23	-15	0
+24	-15	0
+25	-15	0
+26	-15	0
+27	-15	0
+28	-15	0
+29	-15	0
+30	-15	0
+31	-15	0
+32	-15	0
+33	-15	0
+34	-15	0
+35	-15	0
+36	-15	0
+37	-15	0
+38	-15	0
+39	-15	0
+40	-15	0
+41	-15	0
+42	-15	0
+43	-15	0
+44	-15	0
+45	-15	0
+46	-15	0
+47	-15	0
+48	-15	0
+49	-15	0
+50	-15	0
+51	-15	0
+52	-15	0
+53	-15	0
+54	-15	0
+55	-15	0
+56	-15	0
+57	-15	0
+58	-15	0
+59	-15	0
+60	-15	0
+61	-15	0
+62	-15	0
+63	-15	0
+64	-15	0
+65	-15	0
+66	-15	0
+67	-15	0
+68	-15	0
+69	-15	0
+70	-15	0
+71	-15	0
+72	-15	0
+73	-15	0
+74	-15	0
+75	-15	0
+76	-15	0
+77	-15	0
+78	-15	0
+79	-15	0
+80	-15	0
+81	-15	0
+82	-15	0
+83	-15	0
+84	-15	0
+85	-15	0
+86	-15	0
+87	-15	0
+88	-15	0
+89	-15	0
+90	-15	0
+91	-15	0
+92	-15	0
+93	-15	0
+94	-15	0
+95	-15	0
+96	-15	0
+97	-15	0
+98	-15	0
+99	-15	0
+100	-15	0
+101	-15	0
+102	-15	0
+103	-15	0
+104	-15	0
+105	-15	0
+106	-15	0
+107	-15	0
+108	-15	0
+109	-15	0
+110	-15	0
+111	-15	0
+112	-15	0
+113	-15	0
+114	-15	0
+115	-15	0
+116	-15	0
+117	-15	0
+118	-15	0
+119	-15	0
+120	-15	0
+121	-15	0
+122	-15	0
+123	-15	0
+124	-15	0
+125	-15	0
+126	-15	0
+127	-15	0
+128	-15	0
+129	-15	0
+130	-15	0
+131	-15	0
+132	-15	0
+133	-15	0
+134	-15	0
+135	-15	0
+136	-15	0
+137	-15	0
+138	-15	0
+139	-15	0
+140	-15	0
+141	-15	0
+142	-15	0
+143	-15	0
+144	-15	0
+145	-15	0
+146	-15	0
+147	-15	0
+148	-15	0
+149	-15	0
+150	-15	0
+151	-15	0
+152	-15	0
+153	-15	0
+154	-15	0
+155	-15	0
+156	-15	0
+157	-15	0
+158	-15	0
+159	-15	0
+160	-15	0
+161	-15	0
+162	-15	0
+163	-15	0
+164	-15	0
+165	-15	0
+166	-15	0
+167	-15	0
+168	-15	0
+169	-15	0
+170	-15	0
+171	-15	0
+172	-15	0
+173	-15	0
+174	-15	0
+175	-15	0
+176	-15	0
+177	-15	0
+178	-15	0
+179	-15	0
+180	-15	0
+181	-15	0
+182	-15	0
+183	-15	0
+184	-15	0
+185	-15	0
+186	-15	0
+187	-15	0
+188	-15	0
+189	-15	0
+190	-15	0
+191	-15	0
+192	-15	0
+193	-15	0
+194	-15	0
+195	-15	0
+196	-15	0
+197	-15	0
+198	-15	0
+199	-15	0
+200	-15	0
+201	-15	0
+202	-15	0
+203	-15	0
+204	-15	0
+205	-15	0
+206	-15	0
+207	-15	0
+208	-15	0
+209	-15	0
+210	-15	0
+211	-15	0
+212	-15	0
+213	-15	0
+214	-15	0
+215	-15	0
+216	-15	0
+217	-15	0
+218	-15	0
+219	-15	0
+220	-15	0
+221	-15	0
+222	-15	0
+223	-15	0
+224	-15	0
+225	-15	0
+226	-15	0
+227	-15	0
+228	-15	0
+229	-15	0
+230	-15	0
+231	-15	0
+232	-15	0
+233	-15	0
+234	-15	0
+235	-15	0
+236	-15	0
+237	-15	0
+238	-15	0
+239	-15	0
+240	-15	0
+241	-15	0
+242	-15	0
+243	-15	0
+244	-15	0
+245	-15	0
+246	-15	0
+247	-15	0
+248	-15	0
+249	-15	0
+250	-15	0
+251	-15	0
+252	-15	0
+253	-15	0
+254	-15	0
+255	-15	0
+256	-15	0
+257	-15	0
+258	-15	0
+259	-15	0
+260	-15	0
+261	-15	0
+262	-15	0
+263	-15	0
+264	-15	0
+265	-15	0
+266	-15	0
+267	-15	0
+268	-15	0
+269	-15	0
+270	-15	0
+271	-15	0
+272	-15	0
+273	-15	0
+274	-15	0
+275	-15	0
+276	-15	0
+277	-15	0
+278	-15	0
+279	-15	0
+280	-15	0
+281	-15	0
+282	-15	0
+283	-15	0
+284	-15	0
+285	-15	0
+286	-15	0
+287	-15	0
+288	-15	0
+289	-15	0
+290	-15	0
+291	-15	0
+292	-15	0
+293	-15	0
+294	-15	0
+295	-15	0
+296	-15	0
+297	-15	0
+298	-15	0
+299	-15	0
+300	-15	0
+301	-15	0
+302	-15	0
+303	-15	0
+304	-15	0
+305	-15	0
+306	-15	0
+307	-15	0
+308	-15	0
+309	-15	0
+310	-15	0
+311	-15	0
+312	-15	0
+313	-15	0
+314	-15	0
+315	-15	0
+316	-15	0
+317	-15	0
+318	-15	0
+319	-15	0
+320	-15	0
+321	-15	0
+322	-15	0
+323	-15	0
+324	-15	0
+325	-15	0
+326	-15	0
+327	-15	0
+328	-15	0
+329	-15	0
+330	-15	0
+331	-15	0
+332	-15	0
+333	-15	0
+334	-15	0
+335	-15	0
+336	-15	0
+337	-15	0
+338	-15	0
+339	-15	0
+340	-15	0
+341	-15	0
+342	-15	0
+343	-15	0
+344	-15	0
+345	-15	0
+346	-15	0
+347	-15	0
+348	-15	0
+349	-15	0
+350	-15	0
+351	-15	0
+352	-15	0
+353	-15	0
+354	-15	0
+355	-15	0
+356	-15	0
+357	-15	0
+358	-15	0
+359	-15	0
+360	-15	0
+0	-14.5	0
+1	-14.5	0
+2	-14.5	0
+3	-14.5	0
+4	-14.5	0
+5	-14.5	0
+6	-14.5	0
+7	-14.5	0
+8	-14.5	0
+9	-14.5	0
+10	-14.5	0
+11	-14.5	0
+12	-14.5	0
+13	-14.5	0
+14	-14.5	0
+15	-14.5	0
+16	-14.5	0
+17	-14.5	0
+18	-14.5	0
+19	-14.5	0
+20	-14.5	0
+21	-14.5	0
+22	-14.5	0
+23	-14.5	0
+24	-14.5	0
+25	-14.5	0
+26	-14.5	0
+27	-14.5	0
+28	-14.5	0
+29	-14.5	0
+30	-14.5	0
+31	-14.5	0
+32	-14.5	0
+33	-14.5	0
+34	-14.5	0
+35	-14.5	0
+36	-14.5	0
+37	-14.5	0
+38	-14.5	0
+39	-14.5	0
+40	-14.5	0
+41	-14.5	0
+42	-14.5	0
+43	-14.5	0
+44	-14.5	0
+45	-14.5	0
+46	-14.5	0
+47	-14.5	0
+48	-14.5	0
+49	-14.5	0
+50	-14.5	0
+51	-14.5	0
+52	-14.5	0
+53	-14.5	0
+54	-14.5	0
+55	-14.5	0
+56	-14.5	0
+57	-14.5	0
+58	-14.5	0
+59	-14.5	0
+60	-14.5	0
+61	-14.5	0
+62	-14.5	0
+63	-14.5	0
+64	-14.5	0
+65	-14.5	0
+66	-14.5	0
+67	-14.5	0
+68	-14.5	0
+69	-14.5	0
+70	-14.5	0
+71	-14.5	0
+72	-14.5	0
+73	-14.5	0
+74	-14.5	0
+75	-14.5	0
+76	-14.5	0
+77	-14.5	0
+78	-14.5	0
+79	-14.5	0
+80	-14.5	0
+81	-14.5	0
+82	-14.5	0
+83	-14.5	0
+84	-14.5	0
+85	-14.5	0
+86	-14.5	0
+87	-14.5	0
+88	-14.5	0
+89	-14.5	0
+90	-14.5	0
+91	-14.5	0
+92	-14.5	0
+93	-14.5	0
+94	-14.5	0
+95	-14.5	0
+96	-14.5	0
+97	-14.5	0
+98	-14.5	0
+99	-14.5	0
+100	-14.5	0
+101	-14.5	0
+102	-14.5	0
+103	-14.5	0
+104	-14.5	0
+105	-14.5	0
+106	-14.5	0
+107	-14.5	0
+108	-14.5	0
+109	-14.5	0
+110	-14.5	0
+111	-14.5	0
+112	-14.5	0
+113	-14.5	0
+114	-14.5	0
+115	-14.5	0
+116	-14.5	0
+117	-14.5	0
+118	-14.5	0
+119	-14.5	0
+120	-14.5	0
+121	-14.5	0
+122	-14.5	0
+123	-14.5	0
+124	-14.5	0
+125	-14.5	0
+126	-14.5	0
+127	-14.5	0
+128	-14.5	0
+129	-14.5	0
+130	-14.5	0
+131	-14.5	0
+132	-14.5	0
+133	-14.5	0
+134	-14.5	0
+135	-14.5	0
+136	-14.5	0
+137	-14.5	0
+138	-14.5	0
+139	-14.5	0
+140	-14.5	0
+141	-14.5	0
+142	-14.5	0
+143	-14.5	0
+144	-14.5	0
+145	-14.5	0
+146	-14.5	0
+147	-14.5	0
+148	-14.5	0
+149	-14.5	0
+150	-14.5	0
+151	-14.5	0
+152	-14.5	0
+153	-14.5	0
+154	-14.5	0
+155	-14.5	0
+156	-14.5	0
+157	-14.5	0
+158	-14.5	0
+159	-14.5	0
+160	-14.5	0
+161	-14.5	0
+162	-14.5	0
+163	-14.5	0
+164	-14.5	0
+165	-14.5	0
+166	-14.5	0
+167	-14.5	0
+168	-14.5	0
+169	-14.5	0
+170	-14.5	0
+171	-14.5	0
+172	-14.5	0
+173	-14.5	0
+174	-14.5	0
+175	-14.5	0
+176	-14.5	0
+177	-14.5	0
+178	-14.5	0
+179	-14.5	0
+180	-14.5	0
+181	-14.5	0
+182	-14.5	0
+183	-14.5	0
+184	-14.5	0
+185	-14.5	0
+186	-14.5	0
+187	-14.5	0
+188	-14.5	0
+189	-14.5	0
+190	-14.5	0
+191	-14.5	0
+192	-14.5	0
+193	-14.5	0
+194	-14.5	0
+195	-14.5	0
+196	-14.5	0
+197	-14.5	0
+198	-14.5	0
+199	-14.5	0
+200	-14.5	0
+201	-14.5	0
+202	-14.5	0
+203	-14.5	0
+204	-14.5	0
+205	-14.5	0
+206	-14.5	0
+207	-14.5	0
+208	-14.5	0
+209	-14.5	0
+210	-14.5	0
+211	-14.5	0
+212	-14.5	0
+213	-14.5	0
+214	-14.5	0
+215	-14.5	0
+216	-14.5	0
+217	-14.5	0
+218	-14.5	0
+219	-14.5	0
+220	-14.5	0
+221	-14.5	0
+222	-14.5	0
+223	-14.5	0
+224	-14.5	0
+225	-14.5	0
+226	-14.5	0
+227	-14.5	0
+228	-14.5	0
+229	-14.5	0
+230	-14.5	0
+231	-14.5	0
+232	-14.5	0
+233	-14.5	0
+234	-14.5	0
+235	-14.5	0
+236	-14.5	0
+237	-14.5	0
+238	-14.5	0
+239	-14.5	0
+240	-14.5	0
+241	-14.5	0
+242	-14.5	0
+243	-14.5	0
+244	-14.5	0
+245	-14.5	0
+246	-14.5	0
+247	-14.5	0
+248	-14.5	0
+249	-14.5	0
+250	-14.5	0
+251	-14.5	0
+252	-14.5	0
+253	-14.5	0
+254	-14.5	0
+255	-14.5	0
+256	-14.5	0
+257	-14.5	0
+258	-14.5	0
+259	-14.5	0
+260	-14.5	0
+261	-14.5	0
+262	-14.5	0
+263	-14.5	0
+264	-14.5	0
+265	-14.5	0
+266	-14.5	0
+267	-14.5	0
+268	-14.5	0
+269	-14.5	0
+270	-14.5	0
+271	-14.5	0
+272	-14.5	0
+273	-14.5	0
+274	-14.5	0
+275	-14.5	0
+276	-14.5	0
+277	-14.5	0
+278	-14.5	0
+279	-14.5	0
+280	-14.5	0
+281	-14.5	0
+282	-14.5	0
+283	-14.5	0
+284	-14.5	0
+285	-14.5	0
+286	-14.5	0
+287	-14.5	0
+288	-14.5	0
+289	-14.5	0
+290	-14.5	0
+291	-14.5	0
+292	-14.5	0
+293	-14.5	0
+294	-14.5	0
+295	-14.5	0
+296	-14.5	0
+297	-14.5	0
+298	-14.5	0
+299	-14.5	0
+300	-14.5	0
+301	-14.5	0
+302	-14.5	0
+303	-14.5	0
+304	-14.5	0
+305	-14.5	0
+306	-14.5	0
+307	-14.5	0
+308	-14.5	0
+309	-14.5	0
+310	-14.5	0
+311	-14.5	0
+312	-14.5	0
+313	-14.5	0
+314	-14.5	0
+315	-14.5	0
+316	-14.5	0
+317	-14.5	0
+318	-14.5	0
+319	-14.5	0
+320	-14.5	0
+321	-14.5	0
+322	-14.5	0
+323	-14.5	0
+324	-14.5	0
+325	-14.5	0
+326	-14.5	0
+327	-14.5	0
+328	-14.5	0
+329	-14.5	0
+330	-14.5	0
+331	-14.5	0
+332	-14.5	0
+333	-14.5	0
+334	-14.5	0
+335	-14.5	0
+336	-14.5	0
+337	-14.5	0
+338	-14.5	0
+339	-14.5	0
+340	-14.5	0
+341	-14.5	0
+342	-14.5	0
+343	-14.5	0
+344	-14.5	0
+345	-14.5	0
+346	-14.5	0
+347	-14.5	0
+348	-14.5	0
+349	-14.5	0
+350	-14.5	0
+351	-14.5	0
+352	-14.5	0
+353	-14.5	0
+354	-14.5	0
+355	-14.5	0
+356	-14.5	0
+357	-14.5	0
+358	-14.5	0
+359	-14.5	0
+360	-14.5	0
+0	-14	0
+1	-14	0
+2	-14	0
+3	-14	0
+4	-14	0
+5	-14	0
+6	-14	0
+7	-14	0
+8	-14	0
+9	-14	0
+10	-14	0
+11	-14	0
+12	-14	0
+13	-14	0
+14	-14	0
+15	-14	0
+16	-14	0
+17	-14	0
+18	-14	0
+19	-14	0
+20	-14	0
+21	-14	0
+22	-14	0
+23	-14	0
+24	-14	0
+25	-14	0
+26	-14	0
+27	-14	0
+28	-14	0
+29	-14	0
+30	-14	0
+31	-14	0
+32	-14	0
+33	-14	0
+34	-14	0
+35	-14	0
+36	-14	0
+37	-14	0
+38	-14	0
+39	-14	0
+40	-14	0
+41	-14	0
+42	-14	0
+43	-14	0
+44	-14	0
+45	-14	0
+46	-14	0
+47	-14	0
+48	-14	0
+49	-14	0
+50	-14	0
+51	-14	0
+52	-14	0
+53	-14	0
+54	-14	0
+55	-14	0
+56	-14	0
+57	-14	0
+58	-14	0
+59	-14	0
+60	-14	0
+61	-14	0
+62	-14	0
+63	-14	0
+64	-14	0
+65	-14	0
+66	-14	0
+67	-14	0
+68	-14	0
+69	-14	0
+70	-14	0
+71	-14	0
+72	-14	0
+73	-14	0
+74	-14	0
+75	-14	0
+76	-14	0
+77	-14	0
+78	-14	0
+79	-14	0
+80	-14	0
+81	-14	0
+82	-14	0
+83	-14	0
+84	-14	0
+85	-14	0
+86	-14	0
+87	-14	0
+88	-14	0
+89	-14	0
+90	-14	0
+91	-14	0
+92	-14	0
+93	-14	0
+94	-14	0
+95	-14	0
+96	-14	0
+97	-14	0
+98	-14	0
+99	-14	0
+100	-14	0
+101	-14	0
+102	-14	0
+103	-14	0
+104	-14	0
+105	-14	0
+106	-14	0
+107	-14	0
+108	-14	0
+109	-14	0
+110	-14	0
+111	-14	0
+112	-14	0
+113	-14	0
+114	-14	0
+115	-14	0
+116	-14	0
+117	-14	0
+118	-14	0
+119	-14	0
+120	-14	0
+121	-14	0
+122	-14	0
+123	-14	0
+124	-14	0
+125	-14	0
+126	-14	0
+127	-14	0
+128	-14	0
+129	-14	0
+130	-14	0
+131	-14	0
+132	-14	0
+133	-14	0
+134	-14	0
+135	-14	0
+136	-14	0
+137	-14	0
+138	-14	0
+139	-14	0
+140	-14	0
+141	-14	0
+142	-14	0
+143	-14	0
+144	-14	0
+145	-14	0
+146	-14	0
+147	-14	0
+148	-14	0
+149	-14	0
+150	-14	0
+151	-14	0
+152	-14	0
+153	-14	0
+154	-14	0
+155	-14	0
+156	-14	0
+157	-14	0
+158	-14	0
+159	-14	0
+160	-14	0
+161	-14	0
+162	-14	0
+163	-14	0
+164	-14	0
+165	-14	0
+166	-14	0
+167	-14	0
+168	-14	0
+169	-14	0
+170	-14	0
+171	-14	0
+172	-14	0
+173	-14	0
+174	-14	0
+175	-14	0
+176	-14	0
+177	-14	0
+178	-14	0
+179	-14	0
+180	-14	0
+181	-14	0
+182	-14	0
+183	-14	0
+184	-14	0
+185	-14	0
+186	-14	0
+187	-14	0
+188	-14	0
+189	-14	0
+190	-14	0
+191	-14	0
+192	-14	0
+193	-14	0
+194	-14	0
+195	-14	0
+196	-14	0
+197	-14	0
+198	-14	0
+199	-14	0
+200	-14	0
+201	-14	0
+202	-14	0
+203	-14	0
+204	-14	0
+205	-14	0
+206	-14	0
+207	-14	0
+208	-14	0
+209	-14	0
+210	-14	0
+211	-14	0
+212	-14	0
+213	-14	0
+214	-14	0
+215	-14	0
+216	-14	0
+217	-14	0
+218	-14	0
+219	-14	0
+220	-14	0
+221	-14	0
+222	-14	0
+223	-14	0
+224	-14	0
+225	-14	0
+226	-14	0
+227	-14	0
+228	-14	0
+229	-14	0
+230	-14	0
+231	-14	0
+232	-14	0
+233	-14	0
+234	-14	0
+235	-14	0
+236	-14	0
+237	-14	0
+238	-14	0
+239	-14	0
+240	-14	0
+241	-14	0
+242	-14	0
+243	-14	0
+244	-14	0
+245	-14	0
+246	-14	0
+247	-14	0
+248	-14	0
+249	-14	0
+250	-14	0
+251	-14	0
+252	-14	0
+253	-14	0
+254	-14	0
+255	-14	0
+256	-14	0
+257	-14	0
+258	-14	0
+259	-14	0
+260	-14	0
+261	-14	0
+262	-14	0
+263	-14	0
+264	-14	0
+265	-14	0
+266	-14	0
+267	-14	0
+268	-14	0
+269	-14	0
+270	-14	0
+271	-14	0
+272	-14	0
+273	-14	0
+274	-14	0
+275	-14	0
+276	-14	0
+277	-14	0
+278	-14	0
+279	-14	0
+280	-14	0
+281	-14	0
+282	-14	0
+283	-14	0
+284	-14	0
+285	-14	0
+286	-14	0
+287	-14	0
+288	-14	0
+289	-14	0
+290	-14	0
+291	-14	0
+292	-14	0
+293	-14	0
+294	-14	0
+295	-14	0
+296	-14	0
+297	-14	0
+298	-14	0
+299	-14	0
+300	-14	0
+301	-14	0
+302	-14	0
+303	-14	0
+304	-14	0
+305	-14	0
+306	-14	0
+307	-14	0
+308	-14	0
+309	-14	0
+310	-14	0
+311	-14	0
+312	-14	0
+313	-14	0
+314	-14	0
+315	-14	0
+316	-14	0
+317	-14	0
+318	-14	0
+319	-14	0
+320	-14	0
+321	-14	0
+322	-14	0
+323	-14	0
+324	-14	0
+325	-14	0
+326	-14	0
+327	-14	0
+328	-14	0
+329	-14	0
+330	-14	0
+331	-14	0
+332	-14	0
+333	-14	0
+334	-14	0
+335	-14	0
+336	-14	0
+337	-14	0
+338	-14	0
+339	-14	0
+340	-14	0
+341	-14	0
+342	-14	0
+343	-14	0
+344	-14	0
+345	-14	0
+346	-14	0
+347	-14	0
+348	-14	0
+349	-14	0
+350	-14	0
+351	-14	0
+352	-14	0
+353	-14	0
+354	-14	0
+355	-14	0
+356	-14	0
+357	-14	0
+358	-14	0
+359	-14	0
+360	-14	0
+0	-13.5	0
+1	-13.5	0
+2	-13.5	0
+3	-13.5	0
+4	-13.5	0
+5	-13.5	0
+6	-13.5	0
+7	-13.5	0
+8	-13.5	0
+9	-13.5	0
+10	-13.5	0
+11	-13.5	0
+12	-13.5	0
+13	-13.5	0
+14	-13.5	0
+15	-13.5	0
+16	-13.5	0
+17	-13.5	0
+18	-13.5	0
+19	-13.5	0
+20	-13.5	0
+21	-13.5	0
+22	-13.5	0
+23	-13.5	0
+24	-13.5	0
+25	-13.5	0
+26	-13.5	0
+27	-13.5	0
+28	-13.5	0
+29	-13.5	0
+30	-13.5	0
+31	-13.5	0
+32	-13.5	0
+33	-13.5	0
+34	-13.5	0
+35	-13.5	0
+36	-13.5	0
+37	-13.5	0
+38	-13.5	0
+39	-13.5	0
+40	-13.5	0
+41	-13.5	0
+42	-13.5	0
+43	-13.5	0
+44	-13.5	0
+45	-13.5	0
+46	-13.5	0
+47	-13.5	0
+48	-13.5	0
+49	-13.5	0
+50	-13.5	0
+51	-13.5	0
+52	-13.5	0
+53	-13.5	0
+54	-13.5	0
+55	-13.5	0
+56	-13.5	0
+57	-13.5	0
+58	-13.5	0
+59	-13.5	0
+60	-13.5	0
+61	-13.5	0
+62	-13.5	0
+63	-13.5	0
+64	-13.5	0
+65	-13.5	0
+66	-13.5	0
+67	-13.5	0
+68	-13.5	0
+69	-13.5	0
+70	-13.5	0
+71	-13.5	0
+72	-13.5	0
+73	-13.5	0
+74	-13.5	0
+75	-13.5	0
+76	-13.5	0
+77	-13.5	0
+78	-13.5	0
+79	-13.5	0
+80	-13.5	0
+81	-13.5	0
+82	-13.5	0
+83	-13.5	0
+84	-13.5	0
+85	-13.5	0
+86	-13.5	0
+87	-13.5	0
+88	-13.5	0
+89	-13.5	0
+90	-13.5	0
+91	-13.5	0
+92	-13.5	0
+93	-13.5	0
+94	-13.5	0
+95	-13.5	0
+96	-13.5	0
+97	-13.5	0
+98	-13.5	0
+99	-13.5	0
+100	-13.5	0
+101	-13.5	0
+102	-13.5	0
+103	-13.5	0
+104	-13.5	0
+105	-13.5	0
+106	-13.5	0
+107	-13.5	0
+108	-13.5	0
+109	-13.5	0
+110	-13.5	0
+111	-13.5	0
+112	-13.5	0
+113	-13.5	0
+114	-13.5	0
+115	-13.5	0
+116	-13.5	0
+117	-13.5	0
+118	-13.5	0
+119	-13.5	0
+120	-13.5	0
+121	-13.5	0
+122	-13.5	0
+123	-13.5	0
+124	-13.5	0
+125	-13.5	0
+126	-13.5	0
+127	-13.5	0
+128	-13.5	0
+129	-13.5	0
+130	-13.5	0
+131	-13.5	0
+132	-13.5	0
+133	-13.5	0
+134	-13.5	0
+135	-13.5	0
+136	-13.5	0
+137	-13.5	0
+138	-13.5	0
+139	-13.5	0
+140	-13.5	0
+141	-13.5	0
+142	-13.5	0
+143	-13.5	0
+144	-13.5	0
+145	-13.5	0
+146	-13.5	0
+147	-13.5	0
+148	-13.5	0
+149	-13.5	0
+150	-13.5	0
+151	-13.5	0
+152	-13.5	0
+153	-13.5	0
+154	-13.5	0
+155	-13.5	0
+156	-13.5	0
+157	-13.5	0
+158	-13.5	0
+159	-13.5	0
+160	-13.5	0
+161	-13.5	0
+162	-13.5	0
+163	-13.5	0
+164	-13.5	0
+165	-13.5	0
+166	-13.5	0
+167	-13.5	0
+168	-13.5	0
+169	-13.5	0
+170	-13.5	0
+171	-13.5	0
+172	-13.5	0
+173	-13.5	0
+174	-13.5	0
+175	-13.5	0
+176	-13.5	0
+177	-13.5	0
+178	-13.5	0
+179	-13.5	0
+180	-13.5	0
+181	-13.5	0
+182	-13.5	0
+183	-13.5	0
+184	-13.5	0
+185	-13.5	0
+186	-13.5	0
+187	-13.5	0
+188	-13.5	0
+189	-13.5	0
+190	-13.5	0
+191	-13.5	0
+192	-13.5	0
+193	-13.5	0
+194	-13.5	0
+195	-13.5	0
+196	-13.5	0
+197	-13.5	0
+198	-13.5	0
+199	-13.5	0
+200	-13.5	0
+201	-13.5	0
+202	-13.5	0
+203	-13.5	0
+204	-13.5	0
+205	-13.5	0
+206	-13.5	0
+207	-13.5	0
+208	-13.5	0
+209	-13.5	0
+210	-13.5	0
+211	-13.5	0
+212	-13.5	0
+213	-13.5	0
+214	-13.5	0
+215	-13.5	0
+216	-13.5	0
+217	-13.5	0
+218	-13.5	0
+219	-13.5	0
+220	-13.5	0
+221	-13.5	0
+222	-13.5	0
+223	-13.5	0
+224	-13.5	0
+225	-13.5	0
+226	-13.5	0
+227	-13.5	0
+228	-13.5	0
+229	-13.5	0
+230	-13.5	0
+231	-13.5	0
+232	-13.5	0
+233	-13.5	0
+234	-13.5	0
+235	-13.5	0
+236	-13.5	0
+237	-13.5	0
+238	-13.5	0
+239	-13.5	0
+240	-13.5	0
+241	-13.5	0
+242	-13.5	0
+243	-13.5	0
+244	-13.5	0
+245	-13.5	0
+246	-13.5	0
+247	-13.5	0
+248	-13.5	0
+249	-13.5	0
+250	-13.5	0
+251	-13.5	0
+252	-13.5	0
+253	-13.5	0
+254	-13.5	0
+255	-13.5	0
+256	-13.5	0
+257	-13.5	0
+258	-13.5	0
+259	-13.5	0
+260	-13.5	0
+261	-13.5	0
+262	-13.5	0
+263	-13.5	0
+264	-13.5	0
+265	-13.5	0
+266	-13.5	0
+267	-13.5	0
+268	-13.5	0
+269	-13.5	0
+270	-13.5	0
+271	-13.5	0
+272	-13.5	0
+273	-13.5	0
+274	-13.5	0
+275	-13.5	0
+276	-13.5	0
+277	-13.5	0
+278	-13.5	0
+279	-13.5	0
+280	-13.5	0
+281	-13.5	0
+282	-13.5	0
+283	-13.5	0
+284	-13.5	0
+285	-13.5	0
+286	-13.5	0
+287	-13.5	0
+288	-13.5	0
+289	-13.5	0
+290	-13.5	0
+291	-13.5	0
+292	-13.5	0
+293	-13.5	0
+294	-13.5	0
+295	-13.5	0
+296	-13.5	0
+297	-13.5	0
+298	-13.5	0
+299	-13.5	0
+300	-13.5	0
+301	-13.5	0
+302	-13.5	0
+303	-13.5	0
+304	-13.5	0
+305	-13.5	0
+306	-13.5	0
+307	-13.5	0
+308	-13.5	0
+309	-13.5	0
+310	-13.5	0
+311	-13.5	0
+312	-13.5	0
+313	-13.5	0
+314	-13.5	0
+315	-13.5	0
+316	-13.5	0
+317	-13.5	0
+318	-13.5	0
+319	-13.5	0
+320	-13.5	0
+321	-13.5	0
+322	-13.5	0
+323	-13.5	0
+324	-13.5	0
+325	-13.5	0
+326	-13.5	0
+327	-13.5	0
+328	-13.5	0
+329	-13.5	0
+330	-13.5	0
+331	-13.5	0
+332	-13.5	0
+333	-13.5	0
+334	-13.5	0
+335	-13.5	0
+336	-13.5	0
+337	-13.5	0
+338	-13.5	0
+339	-13.5	0
+340	-13.5	0
+341	-13.5	0
+342	-13.5	0
+343	-13.5	0
+344	-13.5	0
+345	-13.5	0
+346	-13.5	0
+347	-13.5	0
+348	-13.5	0
+349	-13.5	0
+350	-13.5	0
+351	-13.5	0
+352	-13.5	0
+353	-13.5	0
+354	-13.5	0
+355	-13.5	0
+356	-13.5	0
+357	-13.5	0
+358	-13.5	0
+359	-13.5	0
+360	-13.5	0
+0	-13	0
+1	-13	0
+2	-13	0
+3	-13	0
+4	-13	0
+5	-13	0
+6	-13	0
+7	-13	0
+8	-13	0
+9	-13	0
+10	-13	0
+11	-13	0
+12	-13	0
+13	-13	0
+14	-13	0
+15	-13	0
+16	-13	0
+17	-13	0
+18	-13	0
+19	-13	0
+20	-13	0
+21	-13	0
+22	-13	0
+23	-13	0
+24	-13	0
+25	-13	0
+26	-13	0
+27	-13	0
+28	-13	0
+29	-13	0
+30	-13	0
+31	-13	0
+32	-13	0
+33	-13	0
+34	-13	0
+35	-13	0
+36	-13	0
+37	-13	0
+38	-13	0
+39	-13	0
+40	-13	0
+41	-13	0
+42	-13	0
+43	-13	0
+44	-13	0
+45	-13	0
+46	-13	0
+47	-13	0
+48	-13	0
+49	-13	0
+50	-13	0
+51	-13	0
+52	-13	0
+53	-13	0
+54	-13	0
+55	-13	0
+56	-13	0
+57	-13	0
+58	-13	0
+59	-13	0
+60	-13	0
+61	-13	0
+62	-13	0
+63	-13	0
+64	-13	0
+65	-13	0
+66	-13	0
+67	-13	0
+68	-13	0
+69	-13	0
+70	-13	0
+71	-13	0
+72	-13	0
+73	-13	0
+74	-13	0
+75	-13	0
+76	-13	0
+77	-13	0
+78	-13	0
+79	-13	0
+80	-13	0
+81	-13	0
+82	-13	0
+83	-13	0
+84	-13	0
+85	-13	0
+86	-13	0
+87	-13	0
+88	-13	0
+89	-13	0
+90	-13	0
+91	-13	0
+92	-13	0
+93	-13	0
+94	-13	0
+95	-13	0
+96	-13	0
+97	-13	0
+98	-13	0
+99	-13	0
+100	-13	0
+101	-13	0
+102	-13	0
+103	-13	0
+104	-13	0
+105	-13	0
+106	-13	0
+107	-13	0
+108	-13	0
+109	-13	0
+110	-13	0
+111	-13	0
+112	-13	0
+113	-13	0
+114	-13	0
+115	-13	0
+116	-13	0
+117	-13	0
+118	-13	0
+119	-13	0
+120	-13	0
+121	-13	0
+122	-13	0
+123	-13	0
+124	-13	0
+125	-13	0
+126	-13	0
+127	-13	0
+128	-13	0
+129	-13	0
+130	-13	0
+131	-13	0
+132	-13	0
+133	-13	0
+134	-13	0
+135	-13	0
+136	-13	0
+137	-13	0
+138	-13	0
+139	-13	0
+140	-13	0
+141	-13	0
+142	-13	0
+143	-13	0
+144	-13	0
+145	-13	0
+146	-13	0
+147	-13	0
+148	-13	0
+149	-13	0
+150	-13	0
+151	-13	0
+152	-13	0
+153	-13	0
+154	-13	0
+155	-13	0
+156	-13	0
+157	-13	0
+158	-13	0
+159	-13	0
+160	-13	0
+161	-13	0
+162	-13	0
+163	-13	0
+164	-13	0
+165	-13	0
+166	-13	0
+167	-13	0
+168	-13	0
+169	-13	0
+170	-13	0
+171	-13	0
+172	-13	0
+173	-13	0
+174	-13	0
+175	-13	0
+176	-13	0
+177	-13	0
+178	-13	0
+179	-13	0
+180	-13	0
+181	-13	0
+182	-13	0
+183	-13	0
+184	-13	0
+185	-13	0
+186	-13	0
+187	-13	0
+188	-13	0
+189	-13	0
+190	-13	0
+191	-13	0
+192	-13	0
+193	-13	0
+194	-13	0
+195	-13	0
+196	-13	0
+197	-13	0
+198	-13	0
+199	-13	0
+200	-13	0
+201	-13	0
+202	-13	0
+203	-13	0
+204	-13	0
+205	-13	0
+206	-13	0
+207	-13	0
+208	-13	0
+209	-13	0
+210	-13	0
+211	-13	0
+212	-13	0
+213	-13	0
+214	-13	0
+215	-13	0
+216	-13	0
+217	-13	0
+218	-13	0
+219	-13	0
+220	-13	0
+221	-13	0
+222	-13	0
+223	-13	0
+224	-13	0
+225	-13	0
+226	-13	0
+227	-13	0
+228	-13	0
+229	-13	0
+230	-13	0
+231	-13	0
+232	-13	0
+233	-13	0
+234	-13	0
+235	-13	0
+236	-13	0
+237	-13	0
+238	-13	0
+239	-13	0
+240	-13	0
+241	-13	0
+242	-13	0
+243	-13	0
+244	-13	0
+245	-13	0
+246	-13	0
+247	-13	0
+248	-13	0
+249	-13	0
+250	-13	0
+251	-13	0
+252	-13	0
+253	-13	0
+254	-13	0
+255	-13	0
+256	-13	0
+257	-13	0
+258	-13	0
+259	-13	0
+260	-13	0
+261	-13	0
+262	-13	0
+263	-13	0
+264	-13	0
+265	-13	0
+266	-13	0
+267	-13	0
+268	-13	0
+269	-13	0
+270	-13	0
+271	-13	0
+272	-13	0
+273	-13	0
+274	-13	0
+275	-13	0
+276	-13	0
+277	-13	0
+278	-13	0
+279	-13	0
+280	-13	0
+281	-13	0
+282	-13	0
+283	-13	0
+284	-13	0
+285	-13	0
+286	-13	0
+287	-13	0
+288	-13	0
+289	-13	0
+290	-13	0
+291	-13	0
+292	-13	0
+293	-13	0
+294	-13	0
+295	-13	0
+296	-13	0
+297	-13	0
+298	-13	0
+299	-13	0
+300	-13	0
+301	-13	0
+302	-13	0
+303	-13	0
+304	-13	0
+305	-13	0
+306	-13	0
+307	-13	0
+308	-13	0
+309	-13	0
+310	-13	0
+311	-13	0
+312	-13	0
+313	-13	0
+314	-13	0
+315	-13	0
+316	-13	0
+317	-13	0
+318	-13	0
+319	-13	0
+320	-13	0
+321	-13	0
+322	-13	0
+323	-13	0
+324	-13	0
+325	-13	0
+326	-13	0
+327	-13	0
+328	-13	0
+329	-13	0
+330	-13	0
+331	-13	0
+332	-13	0
+333	-13	0
+334	-13	0
+335	-13	0
+336	-13	0
+337	-13	0
+338	-13	0
+339	-13	0
+340	-13	0
+341	-13	0
+342	-13	0
+343	-13	0
+344	-13	0
+345	-13	0
+346	-13	0
+347	-13	0
+348	-13	0
+349	-13	0
+350	-13	0
+351	-13	0
+352	-13	0
+353	-13	0
+354	-13	0
+355	-13	0
+356	-13	0
+357	-13	0
+358	-13	0
+359	-13	0
+360	-13	0
+0	-12.5	0
+1	-12.5	0
+2	-12.5	0
+3	-12.5	0
+4	-12.5	0
+5	-12.5	0
+6	-12.5	0
+7	-12.5	0
+8	-12.5	0
+9	-12.5	0
+10	-12.5	0
+11	-12.5	0
+12	-12.5	0
+13	-12.5	0
+14	-12.5	0
+15	-12.5	0
+16	-12.5	0
+17	-12.5	0
+18	-12.5	0
+19	-12.5	0
+20	-12.5	0
+21	-12.5	0
+22	-12.5	0
+23	-12.5	0
+24	-12.5	0
+25	-12.5	0
+26	-12.5	0
+27	-12.5	0
+28	-12.5	0
+29	-12.5	0
+30	-12.5	0
+31	-12.5	0
+32	-12.5	0
+33	-12.5	0
+34	-12.5	0
+35	-12.5	0
+36	-12.5	0
+37	-12.5	0
+38	-12.5	0
+39	-12.5	0
+40	-12.5	0
+41	-12.5	0
+42	-12.5	0
+43	-12.5	0
+44	-12.5	0
+45	-12.5	0
+46	-12.5	0
+47	-12.5	0
+48	-12.5	0
+49	-12.5	0
+50	-12.5	0
+51	-12.5	0
+52	-12.5	0
+53	-12.5	0
+54	-12.5	0
+55	-12.5	0
+56	-12.5	0
+57	-12.5	0
+58	-12.5	0
+59	-12.5	0
+60	-12.5	0
+61	-12.5	0
+62	-12.5	0
+63	-12.5	0
+64	-12.5	0
+65	-12.5	0
+66	-12.5	0
+67	-12.5	0
+68	-12.5	0
+69	-12.5	0
+70	-12.5	0
+71	-12.5	0
+72	-12.5	0
+73	-12.5	0
+74	-12.5	0
+75	-12.5	0
+76	-12.5	0
+77	-12.5	0
+78	-12.5	0
+79	-12.5	0
+80	-12.5	0
+81	-12.5	0
+82	-12.5	0
+83	-12.5	0
+84	-12.5	0
+85	-12.5	0
+86	-12.5	0
+87	-12.5	0
+88	-12.5	0
+89	-12.5	0
+90	-12.5	0
+91	-12.5	0
+92	-12.5	0
+93	-12.5	0
+94	-12.5	0
+95	-12.5	0
+96	-12.5	0
+97	-12.5	0
+98	-12.5	0
+99	-12.5	0
+100	-12.5	0
+101	-12.5	0
+102	-12.5	0
+103	-12.5	0
+104	-12.5	0
+105	-12.5	0
+106	-12.5	0
+107	-12.5	0
+108	-12.5	0
+109	-12.5	0
+110	-12.5	0
+111	-12.5	0
+112	-12.5	0
+113	-12.5	0
+114	-12.5	0
+115	-12.5	0
+116	-12.5	0
+117	-12.5	0
+118	-12.5	0
+119	-12.5	0
+120	-12.5	0
+121	-12.5	0
+122	-12.5	0
+123	-12.5	0
+124	-12.5	0
+125	-12.5	0
+126	-12.5	0
+127	-12.5	0
+128	-12.5	0
+129	-12.5	0
+130	-12.5	0
+131	-12.5	0
+132	-12.5	0
+133	-12.5	0
+134	-12.5	0
+135	-12.5	0
+136	-12.5	0
+137	-12.5	0
+138	-12.5	0
+139	-12.5	0
+140	-12.5	0
+141	-12.5	0
+142	-12.5	0
+143	-12.5	0
+144	-12.5	0
+145	-12.5	0
+146	-12.5	0
+147	-12.5	0
+148	-12.5	0
+149	-12.5	0
+150	-12.5	0
+151	-12.5	0
+152	-12.5	0
+153	-12.5	0
+154	-12.5	0
+155	-12.5	0
+156	-12.5	0
+157	-12.5	0
+158	-12.5	0
+159	-12.5	0
+160	-12.5	0
+161	-12.5	0
+162	-12.5	0
+163	-12.5	0
+164	-12.5	0
+165	-12.5	0
+166	-12.5	0
+167	-12.5	0
+168	-12.5	0
+169	-12.5	0
+170	-12.5	0
+171	-12.5	0
+172	-12.5	0
+173	-12.5	0
+174	-12.5	0
+175	-12.5	0
+176	-12.5	0
+177	-12.5	0
+178	-12.5	0
+179	-12.5	0
+180	-12.5	0
+181	-12.5	0
+182	-12.5	0
+183	-12.5	0
+184	-12.5	0
+185	-12.5	0
+186	-12.5	0
+187	-12.5	0
+188	-12.5	0
+189	-12.5	0
+190	-12.5	0
+191	-12.5	0
+192	-12.5	0
+193	-12.5	0
+194	-12.5	0
+195	-12.5	0
+196	-12.5	0
+197	-12.5	0
+198	-12.5	0
+199	-12.5	0
+200	-12.5	0
+201	-12.5	0
+202	-12.5	0
+203	-12.5	0
+204	-12.5	0
+205	-12.5	0
+206	-12.5	0
+207	-12.5	0
+208	-12.5	0
+209	-12.5	0
+210	-12.5	0
+211	-12.5	0
+212	-12.5	0
+213	-12.5	0
+214	-12.5	0
+215	-12.5	0
+216	-12.5	0
+217	-12.5	0
+218	-12.5	0
+219	-12.5	0
+220	-12.5	0
+221	-12.5	0
+222	-12.5	0
+223	-12.5	0
+224	-12.5	0
+225	-12.5	0
+226	-12.5	0
+227	-12.5	0
+228	-12.5	0
+229	-12.5	0
+230	-12.5	0
+231	-12.5	0
+232	-12.5	0
+233	-12.5	0
+234	-12.5	0
+235	-12.5	0
+236	-12.5	0
+237	-12.5	0
+238	-12.5	0
+239	-12.5	0
+240	-12.5	0
+241	-12.5	0
+242	-12.5	0
+243	-12.5	0
+244	-12.5	0
+245	-12.5	0
+246	-12.5	0
+247	-12.5	0
+248	-12.5	0
+249	-12.5	0
+250	-12.5	0
+251	-12.5	0
+252	-12.5	0
+253	-12.5	0
+254	-12.5	0
+255	-12.5	0
+256	-12.5	0
+257	-12.5	0
+258	-12.5	0
+259	-12.5	0
+260	-12.5	0
+261	-12.5	0
+262	-12.5	0
+263	-12.5	0
+264	-12.5	0
+265	-12.5	0
+266	-12.5	0
+267	-12.5	0
+268	-12.5	0
+269	-12.5	0
+270	-12.5	0
+271	-12.5	0
+272	-12.5	0
+273	-12.5	0
+274	-12.5	0
+275	-12.5	0
+276	-12.5	0
+277	-12.5	0
+278	-12.5	0
+279	-12.5	0
+280	-12.5	0
+281	-12.5	0
+282	-12.5	0
+283	-12.5	0
+284	-12.5	0
+285	-12.5	0
+286	-12.5	0
+287	-12.5	0
+288	-12.5	0
+289	-12.5	0
+290	-12.5	0
+291	-12.5	0
+292	-12.5	0
+293	-12.5	0
+294	-12.5	0
+295	-12.5	0
+296	-12.5	0
+297	-12.5	0
+298	-12.5	0
+299	-12.5	0
+300	-12.5	0
+301	-12.5	0
+302	-12.5	0
+303	-12.5	0
+304	-12.5	0
+305	-12.5	0
+306	-12.5	0
+307	-12.5	0
+308	-12.5	0
+309	-12.5	0
+310	-12.5	0
+311	-12.5	0
+312	-12.5	0
+313	-12.5	0
+314	-12.5	0
+315	-12.5	0
+316	-12.5	0
+317	-12.5	0
+318	-12.5	0
+319	-12.5	0
+320	-12.5	0
+321	-12.5	0
+322	-12.5	0
+323	-12.5	0
+324	-12.5	0
+325	-12.5	0
+326	-12.5	0
+327	-12.5	0
+328	-12.5	0
+329	-12.5	0
+330	-12.5	0
+331	-12.5	0
+332	-12.5	0
+333	-12.5	0
+334	-12.5	0
+335	-12.5	0
+336	-12.5	0
+337	-12.5	0
+338	-12.5	0
+339	-12.5	0
+340	-12.5	0
+341	-12.5	0
+342	-12.5	0
+343	-12.5	0
+344	-12.5	0
+345	-12.5	0
+346	-12.5	0
+347	-12.5	0
+348	-12.5	0
+349	-12.5	0
+350	-12.5	0
+351	-12.5	0
+352	-12.5	0
+353	-12.5	0
+354	-12.5	0
+355	-12.5	0
+356	-12.5	0
+357	-12.5	0
+358	-12.5	0
+359	-12.5	0
+360	-12.5	0
+0	-12	0
+1	-12	0
+2	-12	0
+3	-12	0
+4	-12	0
+5	-12	0
+6	-12	0
+7	-12	0
+8	-12	0
+9	-12	0
+10	-12	0
+11	-12	0
+12	-12	0
+13	-12	0
+14	-12	0
+15	-12	0
+16	-12	0
+17	-12	0
+18	-12	0
+19	-12	0
+20	-12	0
+21	-12	0
+22	-12	0
+23	-12	0
+24	-12	0
+25	-12	0
+26	-12	0
+27	-12	0
+28	-12	0
+29	-12	0
+30	-12	0
+31	-12	0
+32	-12	0
+33	-12	0
+34	-12	0
+35	-12	0
+36	-12	0
+37	-12	0
+38	-12	0
+39	-12	0
+40	-12	0
+41	-12	0
+42	-12	0
+43	-12	0
+44	-12	0
+45	-12	0
+46	-12	0
+47	-12	0
+48	-12	0
+49	-12	0
+50	-12	0
+51	-12	0
+52	-12	0
+53	-12	0
+54	-12	0
+55	-12	0
+56	-12	0
+57	-12	0
+58	-12	0
+59	-12	0
+60	-12	0
+61	-12	0
+62	-12	0
+63	-12	0
+64	-12	0
+65	-12	0
+66	-12	0
+67	-12	0
+68	-12	0
+69	-12	0
+70	-12	0
+71	-12	0
+72	-12	0
+73	-12	0
+74	-12	0
+75	-12	0
+76	-12	0
+77	-12	0
+78	-12	0
+79	-12	0
+80	-12	0
+81	-12	0
+82	-12	0
+83	-12	0
+84	-12	0
+85	-12	0
+86	-12	0
+87	-12	0
+88	-12	0
+89	-12	0
+90	-12	0
+91	-12	0
+92	-12	0
+93	-12	0
+94	-12	0
+95	-12	0
+96	-12	0
+97	-12	0
+98	-12	0
+99	-12	0
+100	-12	0
+101	-12	0
+102	-12	0
+103	-12	0
+104	-12	0
+105	-12	0
+106	-12	0
+107	-12	0
+108	-12	0
+109	-12	0
+110	-12	0
+111	-12	0
+112	-12	0
+113	-12	0
+114	-12	0
+115	-12	0
+116	-12	0
+117	-12	0
+118	-12	0
+119	-12	0
+120	-12	0
+121	-12	0
+122	-12	0
+123	-12	0
+124	-12	0
+125	-12	0
+126	-12	0
+127	-12	0
+128	-12	0
+129	-12	0
+130	-12	0
+131	-12	0
+132	-12	0
+133	-12	0
+134	-12	0
+135	-12	0
+136	-12	0
+137	-12	0
+138	-12	0
+139	-12	0
+140	-12	0
+141	-12	0
+142	-12	0
+143	-12	0
+144	-12	0
+145	-12	0
+146	-12	0
+147	-12	0
+148	-12	0
+149	-12	0
+150	-12	0
+151	-12	0
+152	-12	0
+153	-12	0
+154	-12	0
+155	-12	0
+156	-12	0
+157	-12	0
+158	-12	0
+159	-12	0
+160	-12	0
+161	-12	0
+162	-12	0
+163	-12	0
+164	-12	0
+165	-12	0
+166	-12	0
+167	-12	0
+168	-12	0
+169	-12	0
+170	-12	0
+171	-12	0
+172	-12	0
+173	-12	0
+174	-12	0
+175	-12	0
+176	-12	0
+177	-12	0
+178	-12	0
+179	-12	0
+180	-12	0
+181	-12	0
+182	-12	0
+183	-12	0
+184	-12	0
+185	-12	0
+186	-12	0
+187	-12	0
+188	-12	0
+189	-12	0
+190	-12	0
+191	-12	0
+192	-12	0
+193	-12	0
+194	-12	0
+195	-12	0
+196	-12	0
+197	-12	0
+198	-12	0
+199	-12	0
+200	-12	0
+201	-12	0
+202	-12	0
+203	-12	0
+204	-12	0
+205	-12	0
+206	-12	0
+207	-12	0
+208	-12	0
+209	-12	0
+210	-12	0
+211	-12	0
+212	-12	0
+213	-12	0
+214	-12	0
+215	-12	0
+216	-12	0
+217	-12	0
+218	-12	0
+219	-12	0
+220	-12	0
+221	-12	0
+222	-12	0
+223	-12	0
+224	-12	0
+225	-12	0
+226	-12	0
+227	-12	0
+228	-12	0
+229	-12	0
+230	-12	0
+231	-12	0
+232	-12	0
+233	-12	0
+234	-12	0
+235	-12	0
+236	-12	0
+237	-12	0
+238	-12	0
+239	-12	0
+240	-12	0
+241	-12	0
+242	-12	0
+243	-12	0
+244	-12	0
+245	-12	0
+246	-12	0
+247	-12	0
+248	-12	0
+249	-12	0
+250	-12	0
+251	-12	0
+252	-12	0
+253	-12	0
+254	-12	0
+255	-12	0
+256	-12	0
+257	-12	0
+258	-12	0
+259	-12	0
+260	-12	0
+261	-12	0
+262	-12	0
+263	-12	0
+264	-12	0
+265	-12	0
+266	-12	0
+267	-12	0
+268	-12	0
+269	-12	0
+270	-12	0
+271	-12	0
+272	-12	0
+273	-12	0
+274	-12	0
+275	-12	0
+276	-12	0
+277	-12	0
+278	-12	0
+279	-12	0
+280	-12	0
+281	-12	0
+282	-12	0
+283	-12	0
+284	-12	0
+285	-12	0
+286	-12	0
+287	-12	0
+288	-12	0
+289	-12	0
+290	-12	0
+291	-12	0
+292	-12	0
+293	-12	0
+294	-12	0
+295	-12	0
+296	-12	0
+297	-12	0
+298	-12	0
+299	-12	0
+300	-12	0
+301	-12	0
+302	-12	0
+303	-12	0
+304	-12	0
+305	-12	0
+306	-12	0
+307	-12	0
+308	-12	0
+309	-12	0
+310	-12	0
+311	-12	0
+312	-12	0
+313	-12	0
+314	-12	0
+315	-12	0
+316	-12	0
+317	-12	0
+318	-12	0
+319	-12	0
+320	-12	0
+321	-12	0
+322	-12	0
+323	-12	0
+324	-12	0
+325	-12	0
+326	-12	0
+327	-12	0
+328	-12	0
+329	-12	0
+330	-12	0
+331	-12	0
+332	-12	0
+333	-12	0
+334	-12	0
+335	-12	0
+336	-12	0
+337	-12	0
+338	-12	0
+339	-12	0
+340	-12	0
+341	-12	0
+342	-12	0
+343	-12	0
+344	-12	0
+345	-12	0
+346	-12	0
+347	-12	0
+348	-12	0
+349	-12	0
+350	-12	0
+351	-12	0
+352	-12	0
+353	-12	0
+354	-12	0
+355	-12	0
+356	-12	0
+357	-12	0
+358	-12	0
+359	-12	0
+360	-12	0
+0	-11.5	0
+1	-11.5	0
+2	-11.5	0
+3	-11.5	0
+4	-11.5	0
+5	-11.5	0
+6	-11.5	0
+7	-11.5	0
+8	-11.5	0
+9	-11.5	0
+10	-11.5	0
+11	-11.5	0
+12	-11.5	0
+13	-11.5	0
+14	-11.5	0
+15	-11.5	0
+16	-11.5	0
+17	-11.5	0
+18	-11.5	0
+19	-11.5	0
+20	-11.5	0
+21	-11.5	0
+22	-11.5	0
+23	-11.5	0
+24	-11.5	0
+25	-11.5	0
+26	-11.5	0
+27	-11.5	0
+28	-11.5	0
+29	-11.5	0
+30	-11.5	0
+31	-11.5	0
+32	-11.5	0
+33	-11.5	0
+34	-11.5	0
+35	-11.5	0
+36	-11.5	0
+37	-11.5	0
+38	-11.5	0
+39	-11.5	0
+40	-11.5	0
+41	-11.5	0
+42	-11.5	0
+43	-11.5	0
+44	-11.5	0
+45	-11.5	0
+46	-11.5	0
+47	-11.5	0
+48	-11.5	0
+49	-11.5	0
+50	-11.5	0
+51	-11.5	0
+52	-11.5	0
+53	-11.5	0
+54	-11.5	0
+55	-11.5	0
+56	-11.5	0
+57	-11.5	0
+58	-11.5	0
+59	-11.5	0
+60	-11.5	0
+61	-11.5	0
+62	-11.5	0
+63	-11.5	0
+64	-11.5	0
+65	-11.5	0
+66	-11.5	0
+67	-11.5	0
+68	-11.5	0
+69	-11.5	0
+70	-11.5	0
+71	-11.5	0
+72	-11.5	0
+73	-11.5	0
+74	-11.5	0
+75	-11.5	0
+76	-11.5	0
+77	-11.5	0
+78	-11.5	0
+79	-11.5	0
+80	-11.5	0
+81	-11.5	0
+82	-11.5	0
+83	-11.5	0
+84	-11.5	0
+85	-11.5	0
+86	-11.5	0
+87	-11.5	0
+88	-11.5	0
+89	-11.5	0
+90	-11.5	0
+91	-11.5	0
+92	-11.5	0
+93	-11.5	0
+94	-11.5	0
+95	-11.5	0
+96	-11.5	0
+97	-11.5	0
+98	-11.5	0
+99	-11.5	0
+100	-11.5	0
+101	-11.5	0
+102	-11.5	0
+103	-11.5	0
+104	-11.5	0
+105	-11.5	0
+106	-11.5	0
+107	-11.5	0
+108	-11.5	0
+109	-11.5	0
+110	-11.5	0
+111	-11.5	0
+112	-11.5	0
+113	-11.5	0
+114	-11.5	0
+115	-11.5	0
+116	-11.5	0
+117	-11.5	0
+118	-11.5	0
+119	-11.5	0
+120	-11.5	0
+121	-11.5	0
+122	-11.5	0
+123	-11.5	0
+124	-11.5	0
+125	-11.5	0
+126	-11.5	0
+127	-11.5	0
+128	-11.5	0
+129	-11.5	0
+130	-11.5	0
+131	-11.5	0
+132	-11.5	0
+133	-11.5	0
+134	-11.5	0
+135	-11.5	0
+136	-11.5	0
+137	-11.5	0
+138	-11.5	0
+139	-11.5	0
+140	-11.5	0
+141	-11.5	0
+142	-11.5	0
+143	-11.5	0
+144	-11.5	0
+145	-11.5	0
+146	-11.5	0
+147	-11.5	0
+148	-11.5	0
+149	-11.5	0
+150	-11.5	0
+151	-11.5	0
+152	-11.5	0
+153	-11.5	0
+154	-11.5	0
+155	-11.5	0
+156	-11.5	0
+157	-11.5	0
+158	-11.5	0
+159	-11.5	0
+160	-11.5	0
+161	-11.5	0
+162	-11.5	0
+163	-11.5	0
+164	-11.5	0
+165	-11.5	0
+166	-11.5	0
+167	-11.5	0
+168	-11.5	0
+169	-11.5	0
+170	-11.5	0
+171	-11.5	0
+172	-11.5	0
+173	-11.5	0
+174	-11.5	0
+175	-11.5	0
+176	-11.5	0
+177	-11.5	0
+178	-11.5	0
+179	-11.5	0
+180	-11.5	0
+181	-11.5	0
+182	-11.5	0
+183	-11.5	0
+184	-11.5	0
+185	-11.5	0
+186	-11.5	0
+187	-11.5	0
+188	-11.5	0
+189	-11.5	0
+190	-11.5	0
+191	-11.5	0
+192	-11.5	0
+193	-11.5	0
+194	-11.5	0
+195	-11.5	0
+196	-11.5	0
+197	-11.5	0
+198	-11.5	0
+199	-11.5	0
+200	-11.5	0
+201	-11.5	0
+202	-11.5	0
+203	-11.5	0
+204	-11.5	0
+205	-11.5	0
+206	-11.5	0
+207	-11.5	0
+208	-11.5	0
+209	-11.5	0
+210	-11.5	0
+211	-11.5	0
+212	-11.5	0
+213	-11.5	0
+214	-11.5	0
+215	-11.5	0
+216	-11.5	0
+217	-11.5	0
+218	-11.5	0
+219	-11.5	0
+220	-11.5	0
+221	-11.5	0
+222	-11.5	0
+223	-11.5	0
+224	-11.5	0
+225	-11.5	0
+226	-11.5	0
+227	-11.5	0
+228	-11.5	0
+229	-11.5	0
+230	-11.5	0
+231	-11.5	0
+232	-11.5	0
+233	-11.5	0
+234	-11.5	0
+235	-11.5	0
+236	-11.5	0
+237	-11.5	0
+238	-11.5	0
+239	-11.5	0
+240	-11.5	0
+241	-11.5	0
+242	-11.5	0
+243	-11.5	0
+244	-11.5	0
+245	-11.5	0
+246	-11.5	0
+247	-11.5	0
+248	-11.5	0
+249	-11.5	0
+250	-11.5	0
+251	-11.5	0
+252	-11.5	0
+253	-11.5	0
+254	-11.5	0
+255	-11.5	0
+256	-11.5	0
+257	-11.5	0
+258	-11.5	0
+259	-11.5	0
+260	-11.5	0
+261	-11.5	0
+262	-11.5	0
+263	-11.5	0
+264	-11.5	0
+265	-11.5	0
+266	-11.5	0
+267	-11.5	0
+268	-11.5	0
+269	-11.5	0
+270	-11.5	0
+271	-11.5	0
+272	-11.5	0
+273	-11.5	0
+274	-11.5	0
+275	-11.5	0
+276	-11.5	0
+277	-11.5	0
+278	-11.5	0
+279	-11.5	0
+280	-11.5	0
+281	-11.5	0
+282	-11.5	0
+283	-11.5	0
+284	-11.5	0
+285	-11.5	0
+286	-11.5	0
+287	-11.5	0
+288	-11.5	0
+289	-11.5	0
+290	-11.5	0
+291	-11.5	0
+292	-11.5	0
+293	-11.5	0
+294	-11.5	0
+295	-11.5	0
+296	-11.5	0
+297	-11.5	0
+298	-11.5	0
+299	-11.5	0
+300	-11.5	0
+301	-11.5	0
+302	-11.5	0
+303	-11.5	0
+304	-11.5	0
+305	-11.5	0
+306	-11.5	0
+307	-11.5	0
+308	-11.5	0
+309	-11.5	0
+310	-11.5	0
+311	-11.5	0
+312	-11.5	0
+313	-11.5	0
+314	-11.5	0
+315	-11.5	0
+316	-11.5	0
+317	-11.5	0
+318	-11.5	0
+319	-11.5	0
+320	-11.5	0
+321	-11.5	0
+322	-11.5	0
+323	-11.5	0
+324	-11.5	0
+325	-11.5	0
+326	-11.5	0
+327	-11.5	0
+328	-11.5	0
+329	-11.5	0
+330	-11.5	0
+331	-11.5	0
+332	-11.5	0
+333	-11.5	0
+334	-11.5	0
+335	-11.5	0
+336	-11.5	0
+337	-11.5	0
+338	-11.5	0
+339	-11.5	0
+340	-11.5	0
+341	-11.5	0
+342	-11.5	0
+343	-11.5	0
+344	-11.5	0
+345	-11.5	0
+346	-11.5	0
+347	-11.5	0
+348	-11.5	0
+349	-11.5	0
+350	-11.5	0
+351	-11.5	0
+352	-11.5	0
+353	-11.5	0
+354	-11.5	0
+355	-11.5	0
+356	-11.5	0
+357	-11.5	0
+358	-11.5	0
+359	-11.5	0
+360	-11.5	0
+0	-11	0
+1	-11	0
+2	-11	0
+3	-11	0
+4	-11	0
+5	-11	0
+6	-11	0
+7	-11	0
+8	-11	0
+9	-11	0
+10	-11	0
+11	-11	0
+12	-11	0
+13	-11	0
+14	-11	0
+15	-11	0
+16	-11	0
+17	-11	0
+18	-11	0
+19	-11	0
+20	-11	0
+21	-11	0
+22	-11	0
+23	-11	0
+24	-11	0
+25	-11	0
+26	-11	0
+27	-11	0
+28	-11	0
+29	-11	0
+30	-11	0
+31	-11	0
+32	-11	0
+33	-11	0
+34	-11	0
+35	-11	0
+36	-11	0
+37	-11	0
+38	-11	0
+39	-11	0
+40	-11	0
+41	-11	0
+42	-11	0
+43	-11	0
+44	-11	0
+45	-11	0
+46	-11	0
+47	-11	0
+48	-11	0
+49	-11	0
+50	-11	0
+51	-11	0
+52	-11	0
+53	-11	0
+54	-11	0
+55	-11	0
+56	-11	0
+57	-11	0
+58	-11	0
+59	-11	0
+60	-11	0
+61	-11	0
+62	-11	0
+63	-11	0
+64	-11	0
+65	-11	0
+66	-11	0
+67	-11	0
+68	-11	0
+69	-11	0
+70	-11	0
+71	-11	0
+72	-11	0
+73	-11	0
+74	-11	0
+75	-11	0
+76	-11	0
+77	-11	0
+78	-11	0
+79	-11	0
+80	-11	0
+81	-11	0
+82	-11	0
+83	-11	0
+84	-11	0
+85	-11	0
+86	-11	0
+87	-11	0
+88	-11	0
+89	-11	0
+90	-11	0
+91	-11	0
+92	-11	0
+93	-11	0
+94	-11	0
+95	-11	0
+96	-11	0
+97	-11	0
+98	-11	0
+99	-11	0
+100	-11	0
+101	-11	0
+102	-11	0
+103	-11	0
+104	-11	0
+105	-11	0
+106	-11	0
+107	-11	0
+108	-11	0
+109	-11	0
+110	-11	0
+111	-11	0
+112	-11	0
+113	-11	0
+114	-11	0
+115	-11	0
+116	-11	0
+117	-11	0
+118	-11	0
+119	-11	0
+120	-11	0
+121	-11	0
+122	-11	0
+123	-11	0
+124	-11	0
+125	-11	0
+126	-11	0
+127	-11	0
+128	-11	0
+129	-11	0
+130	-11	0
+131	-11	0
+132	-11	0
+133	-11	0
+134	-11	0
+135	-11	0
+136	-11	0
+137	-11	0
+138	-11	0
+139	-11	0
+140	-11	0
+141	-11	0
+142	-11	0
+143	-11	0
+144	-11	0
+145	-11	0
+146	-11	0
+147	-11	0
+148	-11	0
+149	-11	0
+150	-11	0
+151	-11	0
+152	-11	0
+153	-11	0
+154	-11	0
+155	-11	0
+156	-11	0
+157	-11	0
+158	-11	0
+159	-11	0
+160	-11	0
+161	-11	0
+162	-11	0
+163	-11	0
+164	-11	0
+165	-11	0
+166	-11	0
+167	-11	0
+168	-11	0
+169	-11	0
+170	-11	0
+171	-11	0
+172	-11	0
+173	-11	0
+174	-11	0
+175	-11	0
+176	-11	0
+177	-11	0
+178	-11	0
+179	-11	0
+180	-11	0
+181	-11	0
+182	-11	0
+183	-11	0
+184	-11	0
+185	-11	0
+186	-11	0
+187	-11	0
+188	-11	0
+189	-11	0
+190	-11	0
+191	-11	0
+192	-11	0
+193	-11	0
+194	-11	0
+195	-11	0
+196	-11	0
+197	-11	0
+198	-11	0
+199	-11	0
+200	-11	0
+201	-11	0
+202	-11	0
+203	-11	0
+204	-11	0
+205	-11	0
+206	-11	0
+207	-11	0
+208	-11	0
+209	-11	0
+210	-11	0
+211	-11	0
+212	-11	0
+213	-11	0
+214	-11	0
+215	-11	0
+216	-11	0
+217	-11	0
+218	-11	0
+219	-11	0
+220	-11	0
+221	-11	0
+222	-11	0
+223	-11	0
+224	-11	0
+225	-11	0
+226	-11	0
+227	-11	0
+228	-11	0
+229	-11	0
+230	-11	0
+231	-11	0
+232	-11	0
+233	-11	0
+234	-11	0
+235	-11	0
+236	-11	0
+237	-11	0
+238	-11	0
+239	-11	0
+240	-11	0
+241	-11	0
+242	-11	0
+243	-11	0
+244	-11	0
+245	-11	0
+246	-11	0
+247	-11	0
+248	-11	0
+249	-11	0
+250	-11	0
+251	-11	0
+252	-11	0
+253	-11	0
+254	-11	0
+255	-11	0
+256	-11	0
+257	-11	0
+258	-11	0
+259	-11	0
+260	-11	0
+261	-11	0
+262	-11	0
+263	-11	0
+264	-11	0
+265	-11	0
+266	-11	0
+267	-11	0
+268	-11	0
+269	-11	0
+270	-11	0
+271	-11	0
+272	-11	0
+273	-11	0
+274	-11	0
+275	-11	0
+276	-11	0
+277	-11	0
+278	-11	0
+279	-11	0
+280	-11	0
+281	-11	0
+282	-11	0
+283	-11	0
+284	-11	0
+285	-11	0
+286	-11	0
+287	-11	0
+288	-11	0
+289	-11	0
+290	-11	0
+291	-11	0
+292	-11	0
+293	-11	0
+294	-11	0
+295	-11	0
+296	-11	0
+297	-11	0
+298	-11	0
+299	-11	0
+300	-11	0
+301	-11	0
+302	-11	0
+303	-11	0
+304	-11	0
+305	-11	0
+306	-11	0
+307	-11	0
+308	-11	0
+309	-11	0
+310	-11	0
+311	-11	0
+312	-11	0
+313	-11	0
+314	-11	0
+315	-11	0
+316	-11	0
+317	-11	0
+318	-11	0
+319	-11	0
+320	-11	0
+321	-11	0
+322	-11	0
+323	-11	0
+324	-11	0
+325	-11	0
+326	-11	0
+327	-11	0
+328	-11	0
+329	-11	0
+330	-11	0
+331	-11	0
+332	-11	0
+333	-11	0
+334	-11	0
+335	-11	0
+336	-11	0
+337	-11	0
+338	-11	0
+339	-11	0
+340	-11	0
+341	-11	0
+342	-11	0
+343	-11	0
+344	-11	0
+345	-11	0
+346	-11	0
+347	-11	0
+348	-11	0
+349	-11	0
+350	-11	0
+351	-11	0
+352	-11	0
+353	-11	0
+354	-11	0
+355	-11	0
+356	-11	0
+357	-11	0
+358	-11	0
+359	-11	0
+360	-11	0
+0	-10.5	0
+1	-10.5	0
+2	-10.5	0
+3	-10.5	0
+4	-10.5	0
+5	-10.5	0
+6	-10.5	0
+7	-10.5	0
+8	-10.5	0
+9	-10.5	0
+10	-10.5	0
+11	-10.5	0
+12	-10.5	0
+13	-10.5	0
+14	-10.5	0
+15	-10.5	0
+16	-10.5	0
+17	-10.5	0
+18	-10.5	0
+19	-10.5	0
+20	-10.5	0
+21	-10.5	0
+22	-10.5	0
+23	-10.5	0
+24	-10.5	0
+25	-10.5	0
+26	-10.5	0
+27	-10.5	0
+28	-10.5	0
+29	-10.5	0
+30	-10.5	0
+31	-10.5	0
+32	-10.5	0
+33	-10.5	0
+34	-10.5	0
+35	-10.5	0
+36	-10.5	0
+37	-10.5	0
+38	-10.5	0
+39	-10.5	0
+40	-10.5	0
+41	-10.5	0
+42	-10.5	0
+43	-10.5	0
+44	-10.5	0
+45	-10.5	0
+46	-10.5	0
+47	-10.5	0
+48	-10.5	0
+49	-10.5	0
+50	-10.5	0
+51	-10.5	0
+52	-10.5	0
+53	-10.5	0
+54	-10.5	0
+55	-10.5	0
+56	-10.5	0
+57	-10.5	0
+58	-10.5	0
+59	-10.5	0
+60	-10.5	0
+61	-10.5	0
+62	-10.5	0
+63	-10.5	0
+64	-10.5	0
+65	-10.5	0
+66	-10.5	0
+67	-10.5	0
+68	-10.5	0
+69	-10.5	0
+70	-10.5	0
+71	-10.5	0
+72	-10.5	0
+73	-10.5	0
+74	-10.5	0
+75	-10.5	0
+76	-10.5	0
+77	-10.5	0
+78	-10.5	0
+79	-10.5	0
+80	-10.5	0
+81	-10.5	0
+82	-10.5	0
+83	-10.5	0
+84	-10.5	0
+85	-10.5	0
+86	-10.5	0
+87	-10.5	0
+88	-10.5	0
+89	-10.5	0
+90	-10.5	0
+91	-10.5	0
+92	-10.5	0
+93	-10.5	0
+94	-10.5	0
+95	-10.5	0
+96	-10.5	0
+97	-10.5	0
+98	-10.5	0
+99	-10.5	0
+100	-10.5	0
+101	-10.5	0
+102	-10.5	0
+103	-10.5	0
+104	-10.5	0
+105	-10.5	0
+106	-10.5	0
+107	-10.5	0
+108	-10.5	0
+109	-10.5	0
+110	-10.5	0
+111	-10.5	0
+112	-10.5	0
+113	-10.5	0
+114	-10.5	0
+115	-10.5	0
+116	-10.5	0
+117	-10.5	0
+118	-10.5	0
+119	-10.5	0
+120	-10.5	0
+121	-10.5	0
+122	-10.5	0
+123	-10.5	0
+124	-10.5	0
+125	-10.5	0
+126	-10.5	0
+127	-10.5	0
+128	-10.5	0
+129	-10.5	0
+130	-10.5	0
+131	-10.5	0
+132	-10.5	0
+133	-10.5	0
+134	-10.5	0
+135	-10.5	0
+136	-10.5	0
+137	-10.5	0
+138	-10.5	0
+139	-10.5	0
+140	-10.5	0
+141	-10.5	0
+142	-10.5	0
+143	-10.5	0
+144	-10.5	0
+145	-10.5	0
+146	-10.5	0
+147	-10.5	0
+148	-10.5	0
+149	-10.5	0
+150	-10.5	0
+151	-10.5	0
+152	-10.5	0
+153	-10.5	0
+154	-10.5	0
+155	-10.5	0
+156	-10.5	0
+157	-10.5	0
+158	-10.5	0
+159	-10.5	0
+160	-10.5	0
+161	-10.5	0
+162	-10.5	0
+163	-10.5	0
+164	-10.5	0
+165	-10.5	0
+166	-10.5	0
+167	-10.5	0
+168	-10.5	0
+169	-10.5	0
+170	-10.5	0
+171	-10.5	0
+172	-10.5	0
+173	-10.5	0
+174	-10.5	0
+175	-10.5	0
+176	-10.5	0
+177	-10.5	0
+178	-10.5	0
+179	-10.5	0
+180	-10.5	0
+181	-10.5	0
+182	-10.5	0
+183	-10.5	0
+184	-10.5	0
+185	-10.5	0
+186	-10.5	0
+187	-10.5	0
+188	-10.5	0
+189	-10.5	0
+190	-10.5	0
+191	-10.5	0
+192	-10.5	0
+193	-10.5	0
+194	-10.5	0
+195	-10.5	0
+196	-10.5	0
+197	-10.5	0
+198	-10.5	0
+199	-10.5	0
+200	-10.5	0
+201	-10.5	0
+202	-10.5	0
+203	-10.5	0
+204	-10.5	0
+205	-10.5	0
+206	-10.5	0
+207	-10.5	0
+208	-10.5	0
+209	-10.5	0
+210	-10.5	0
+211	-10.5	0
+212	-10.5	0
+213	-10.5	0
+214	-10.5	0
+215	-10.5	0
+216	-10.5	0
+217	-10.5	0
+218	-10.5	0
+219	-10.5	0
+220	-10.5	0
+221	-10.5	0
+222	-10.5	0
+223	-10.5	0
+224	-10.5	0
+225	-10.5	0
+226	-10.5	0
+227	-10.5	0
+228	-10.5	0
+229	-10.5	0
+230	-10.5	0
+231	-10.5	0
+232	-10.5	0
+233	-10.5	0
+234	-10.5	0
+235	-10.5	0
+236	-10.5	0
+237	-10.5	0
+238	-10.5	0
+239	-10.5	0
+240	-10.5	0
+241	-10.5	0
+242	-10.5	0
+243	-10.5	0
+244	-10.5	0
+245	-10.5	0
+246	-10.5	0
+247	-10.5	0
+248	-10.5	0
+249	-10.5	0
+250	-10.5	0
+251	-10.5	0
+252	-10.5	0
+253	-10.5	0
+254	-10.5	0
+255	-10.5	0
+256	-10.5	0
+257	-10.5	0
+258	-10.5	0
+259	-10.5	0
+260	-10.5	0
+261	-10.5	0
+262	-10.5	0
+263	-10.5	0
+264	-10.5	0
+265	-10.5	0
+266	-10.5	0
+267	-10.5	0
+268	-10.5	0
+269	-10.5	0
+270	-10.5	0
+271	-10.5	0
+272	-10.5	0
+273	-10.5	0
+274	-10.5	0
+275	-10.5	0
+276	-10.5	0
+277	-10.5	0
+278	-10.5	0
+279	-10.5	0
+280	-10.5	0
+281	-10.5	0
+282	-10.5	0
+283	-10.5	0
+284	-10.5	0
+285	-10.5	0
+286	-10.5	0
+287	-10.5	0
+288	-10.5	0
+289	-10.5	0
+290	-10.5	0
+291	-10.5	0
+292	-10.5	0
+293	-10.5	0
+294	-10.5	0
+295	-10.5	0
+296	-10.5	0
+297	-10.5	0
+298	-10.5	0
+299	-10.5	0
+300	-10.5	0
+301	-10.5	0
+302	-10.5	0
+303	-10.5	0
+304	-10.5	0
+305	-10.5	0
+306	-10.5	0
+307	-10.5	0
+308	-10.5	0
+309	-10.5	0
+310	-10.5	0
+311	-10.5	0
+312	-10.5	0
+313	-10.5	0
+314	-10.5	0
+315	-10.5	0
+316	-10.5	0
+317	-10.5	0
+318	-10.5	0
+319	-10.5	0
+320	-10.5	0
+321	-10.5	0
+322	-10.5	0
+323	-10.5	0
+324	-10.5	0
+325	-10.5	0
+326	-10.5	0
+327	-10.5	0
+328	-10.5	0
+329	-10.5	0
+330	-10.5	0
+331	-10.5	0
+332	-10.5	0
+333	-10.5	0
+334	-10.5	0
+335	-10.5	0
+336	-10.5	0
+337	-10.5	0
+338	-10.5	0
+339	-10.5	0
+340	-10.5	0
+341	-10.5	0
+342	-10.5	0
+343	-10.5	0
+344	-10.5	0
+345	-10.5	0
+346	-10.5	0
+347	-10.5	0
+348	-10.5	0
+349	-10.5	0
+350	-10.5	0
+351	-10.5	0
+352	-10.5	0
+353	-10.5	0
+354	-10.5	0
+355	-10.5	0
+356	-10.5	0
+357	-10.5	0
+358	-10.5	0
+359	-10.5	0
+360	-10.5	0
+0	-10	0
+1	-10	0
+2	-10	0
+3	-10	0
+4	-10	0
+5	-10	0
+6	-10	0
+7	-10	0
+8	-10	0
+9	-10	0
+10	-10	0
+11	-10	0
+12	-10	0
+13	-10	0
+14	-10	0
+15	-10	0
+16	-10	0
+17	-10	0
+18	-10	0
+19	-10	0
+20	-10	0
+21	-10	0
+22	-10	0
+23	-10	0
+24	-10	0
+25	-10	0
+26	-10	0
+27	-10	0
+28	-10	0
+29	-10	0
+30	-10	0
+31	-10	0
+32	-10	0
+33	-10	0
+34	-10	0
+35	-10	0
+36	-10	0
+37	-10	0
+38	-10	0
+39	-10	0
+40	-10	0
+41	-10	0
+42	-10	0
+43	-10	0
+44	-10	0
+45	-10	0
+46	-10	0
+47	-10	0
+48	-10	0
+49	-10	0
+50	-10	0
+51	-10	0
+52	-10	0
+53	-10	0
+54	-10	0
+55	-10	0
+56	-10	0
+57	-10	0
+58	-10	0
+59	-10	0
+60	-10	0
+61	-10	0
+62	-10	0
+63	-10	0
+64	-10	0
+65	-10	0
+66	-10	0
+67	-10	0
+68	-10	0
+69	-10	0
+70	-10	0
+71	-10	0
+72	-10	0
+73	-10	0
+74	-10	0
+75	-10	0
+76	-10	0
+77	-10	0
+78	-10	0
+79	-10	0
+80	-10	0
+81	-10	0
+82	-10	0
+83	-10	0
+84	-10	0
+85	-10	0
+86	-10	0
+87	-10	0
+88	-10	0
+89	-10	0
+90	-10	0
+91	-10	0
+92	-10	0
+93	-10	0
+94	-10	0
+95	-10	0
+96	-10	0
+97	-10	0
+98	-10	0
+99	-10	0
+100	-10	0
+101	-10	0
+102	-10	0
+103	-10	0
+104	-10	0
+105	-10	0
+106	-10	0
+107	-10	0
+108	-10	0
+109	-10	0
+110	-10	0
+111	-10	0
+112	-10	0
+113	-10	0
+114	-10	0
+115	-10	0
+116	-10	0
+117	-10	0
+118	-10	0
+119	-10	0
+120	-10	0
+121	-10	0
+122	-10	0
+123	-10	0
+124	-10	0
+125	-10	0
+126	-10	0
+127	-10	0
+128	-10	0
+129	-10	0
+130	-10	0
+131	-10	0
+132	-10	0
+133	-10	0
+134	-10	0
+135	-10	0
+136	-10	0
+137	-10	0
+138	-10	0
+139	-10	0
+140	-10	0
+141	-10	0
+142	-10	0
+143	-10	0
+144	-10	0
+145	-10	0
+146	-10	0
+147	-10	0
+148	-10	0
+149	-10	0
+150	-10	0
+151	-10	0
+152	-10	0
+153	-10	0
+154	-10	0
+155	-10	0
+156	-10	0
+157	-10	0
+158	-10	0
+159	-10	0
+160	-10	0
+161	-10	0
+162	-10	0
+163	-10	0
+164	-10	0
+165	-10	0
+166	-10	0
+167	-10	0
+168	-10	0
+169	-10	0
+170	-10	0
+171	-10	0
+172	-10	0
+173	-10	0
+174	-10	0
+175	-10	0
+176	-10	0
+177	-10	0
+178	-10	0
+179	-10	0
+180	-10	0
+181	-10	0
+182	-10	0
+183	-10	0
+184	-10	0
+185	-10	0
+186	-10	0
+187	-10	0
+188	-10	0
+189	-10	0
+190	-10	0
+191	-10	0
+192	-10	0
+193	-10	0
+194	-10	0
+195	-10	0
+196	-10	0
+197	-10	0
+198	-10	0
+199	-10	0
+200	-10	0
+201	-10	0
+202	-10	0
+203	-10	0
+204	-10	0
+205	-10	0
+206	-10	0
+207	-10	0
+208	-10	0
+209	-10	0
+210	-10	0
+211	-10	0
+212	-10	0
+213	-10	0
+214	-10	0
+215	-10	0
+216	-10	0
+217	-10	0
+218	-10	0
+219	-10	0
+220	-10	0
+221	-10	0
+222	-10	0
+223	-10	0
+224	-10	0
+225	-10	0
+226	-10	0
+227	-10	0
+228	-10	0
+229	-10	0
+230	-10	0
+231	-10	0
+232	-10	0
+233	-10	0
+234	-10	0
+235	-10	0
+236	-10	0
+237	-10	0
+238	-10	0
+239	-10	0
+240	-10	0
+241	-10	0
+242	-10	0
+243	-10	0
+244	-10	0
+245	-10	0
+246	-10	0
+247	-10	0
+248	-10	0
+249	-10	0
+250	-10	0
+251	-10	0
+252	-10	0
+253	-10	0
+254	-10	0
+255	-10	0
+256	-10	0
+257	-10	0
+258	-10	0
+259	-10	0
+260	-10	0
+261	-10	0
+262	-10	0
+263	-10	0
+264	-10	0
+265	-10	0
+266	-10	0
+267	-10	0
+268	-10	0
+269	-10	0
+270	-10	0
+271	-10	0
+272	-10	0
+273	-10	0
+274	-10	0
+275	-10	0
+276	-10	0
+277	-10	0
+278	-10	0
+279	-10	0
+280	-10	0
+281	-10	0
+282	-10	0
+283	-10	0
+284	-10	0
+285	-10	0
+286	-10	0
+287	-10	0
+288	-10	0
+289	-10	0
+290	-10	0
+291	-10	0
+292	-10	0
+293	-10	0
+294	-10	0
+295	-10	0
+296	-10	0
+297	-10	0
+298	-10	0
+299	-10	0
+300	-10	0
+301	-10	0
+302	-10	0
+303	-10	0
+304	-10	0
+305	-10	0
+306	-10	0
+307	-10	0
+308	-10	0
+309	-10	0
+310	-10	0
+311	-10	0
+312	-10	0
+313	-10	0
+314	-10	0
+315	-10	0
+316	-10	0
+317	-10	0
+318	-10	0
+319	-10	0
+320	-10	0
+321	-10	0
+322	-10	0
+323	-10	0
+324	-10	0
+325	-10	0
+326	-10	0
+327	-10	0
+328	-10	0
+329	-10	0
+330	-10	0
+331	-10	0
+332	-10	0
+333	-10	0
+334	-10	0
+335	-10	0
+336	-10	0
+337	-10	0
+338	-10	0
+339	-10	0
+340	-10	0
+341	-10	0
+342	-10	0
+343	-10	0
+344	-10	0
+345	-10	0
+346	-10	0
+347	-10	0
+348	-10	0
+349	-10	0
+350	-10	0
+351	-10	0
+352	-10	0
+353	-10	0
+354	-10	0
+355	-10	0
+356	-10	0
+357	-10	0
+358	-10	0
+359	-10	0
+360	-10	0
+0	-9.5	0
+1	-9.5	0
+2	-9.5	0
+3	-9.5	0
+4	-9.5	0
+5	-9.5	0
+6	-9.5	0
+7	-9.5	0
+8	-9.5	0
+9	-9.5	0
+10	-9.5	0
+11	-9.5	0
+12	-9.5	0
+13	-9.5	0
+14	-9.5	0
+15	-9.5	0
+16	-9.5	0
+17	-9.5	0
+18	-9.5	0
+19	-9.5	0
+20	-9.5	0
+21	-9.5	0
+22	-9.5	0
+23	-9.5	0
+24	-9.5	0
+25	-9.5	0
+26	-9.5	0
+27	-9.5	0
+28	-9.5	0
+29	-9.5	0
+30	-9.5	0
+31	-9.5	0
+32	-9.5	0
+33	-9.5	0
+34	-9.5	0
+35	-9.5	0
+36	-9.5	0
+37	-9.5	0
+38	-9.5	0
+39	-9.5	0
+40	-9.5	0
+41	-9.5	0
+42	-9.5	0
+43	-9.5	0
+44	-9.5	0
+45	-9.5	0
+46	-9.5	0
+47	-9.5	0
+48	-9.5	0
+49	-9.5	0
+50	-9.5	0
+51	-9.5	0
+52	-9.5	0
+53	-9.5	0
+54	-9.5	0
+55	-9.5	0
+56	-9.5	0
+57	-9.5	0
+58	-9.5	0
+59	-9.5	0
+60	-9.5	0
+61	-9.5	0
+62	-9.5	0
+63	-9.5	0
+64	-9.5	0
+65	-9.5	0
+66	-9.5	0
+67	-9.5	0
+68	-9.5	0
+69	-9.5	0
+70	-9.5	0
+71	-9.5	0
+72	-9.5	0
+73	-9.5	0
+74	-9.5	0
+75	-9.5	0
+76	-9.5	0
+77	-9.5	0
+78	-9.5	0
+79	-9.5	0
+80	-9.5	0
+81	-9.5	0
+82	-9.5	0
+83	-9.5	0
+84	-9.5	0
+85	-9.5	0
+86	-9.5	0
+87	-9.5	0
+88	-9.5	0
+89	-9.5	0
+90	-9.5	0
+91	-9.5	0
+92	-9.5	0
+93	-9.5	0
+94	-9.5	0
+95	-9.5	0
+96	-9.5	0
+97	-9.5	0
+98	-9.5	0
+99	-9.5	0
+100	-9.5	0
+101	-9.5	0
+102	-9.5	0
+103	-9.5	0
+104	-9.5	0
+105	-9.5	0
+106	-9.5	0
+107	-9.5	0
+108	-9.5	0
+109	-9.5	0
+110	-9.5	0
+111	-9.5	0
+112	-9.5	0
+113	-9.5	0
+114	-9.5	0
+115	-9.5	0
+116	-9.5	0
+117	-9.5	0
+118	-9.5	0
+119	-9.5	0
+120	-9.5	0
+121	-9.5	0
+122	-9.5	0
+123	-9.5	0
+124	-9.5	0
+125	-9.5	0
+126	-9.5	0
+127	-9.5	0
+128	-9.5	0
+129	-9.5	0
+130	-9.5	0
+131	-9.5	0
+132	-9.5	0
+133	-9.5	0
+134	-9.5	0
+135	-9.5	0
+136	-9.5	0
+137	-9.5	0
+138	-9.5	0
+139	-9.5	0
+140	-9.5	0
+141	-9.5	0
+142	-9.5	0
+143	-9.5	0
+144	-9.5	0
+145	-9.5	0
+146	-9.5	0
+147	-9.5	0
+148	-9.5	0
+149	-9.5	0
+150	-9.5	0
+151	-9.5	0
+152	-9.5	0
+153	-9.5	0
+154	-9.5	0
+155	-9.5	0
+156	-9.5	0
+157	-9.5	0
+158	-9.5	0
+159	-9.5	0
+160	-9.5	0
+161	-9.5	0
+162	-9.5	0
+163	-9.5	0
+164	-9.5	0
+165	-9.5	0
+166	-9.5	0
+167	-9.5	0
+168	-9.5	0
+169	-9.5	0
+170	-9.5	0
+171	-9.5	0
+172	-9.5	0
+173	-9.5	0
+174	-9.5	0
+175	-9.5	0
+176	-9.5	0
+177	-9.5	0
+178	-9.5	0
+179	-9.5	0
+180	-9.5	0
+181	-9.5	0
+182	-9.5	0
+183	-9.5	0
+184	-9.5	0
+185	-9.5	0
+186	-9.5	0
+187	-9.5	0
+188	-9.5	0
+189	-9.5	0
+190	-9.5	0
+191	-9.5	0
+192	-9.5	0
+193	-9.5	0
+194	-9.5	0
+195	-9.5	0
+196	-9.5	0
+197	-9.5	0
+198	-9.5	0
+199	-9.5	0
+200	-9.5	0
+201	-9.5	0
+202	-9.5	0
+203	-9.5	0
+204	-9.5	0
+205	-9.5	0
+206	-9.5	0
+207	-9.5	0
+208	-9.5	0
+209	-9.5	0
+210	-9.5	0
+211	-9.5	0
+212	-9.5	0
+213	-9.5	0
+214	-9.5	0
+215	-9.5	0
+216	-9.5	0
+217	-9.5	0
+218	-9.5	0
+219	-9.5	0
+220	-9.5	0
+221	-9.5	0
+222	-9.5	0
+223	-9.5	0
+224	-9.5	0
+225	-9.5	0
+226	-9.5	0
+227	-9.5	0
+228	-9.5	0
+229	-9.5	0
+230	-9.5	0
+231	-9.5	0
+232	-9.5	0
+233	-9.5	0
+234	-9.5	0
+235	-9.5	0
+236	-9.5	0
+237	-9.5	0
+238	-9.5	0
+239	-9.5	0
+240	-9.5	0
+241	-9.5	0
+242	-9.5	0
+243	-9.5	0
+244	-9.5	0
+245	-9.5	0
+246	-9.5	0
+247	-9.5	0
+248	-9.5	0
+249	-9.5	0
+250	-9.5	0
+251	-9.5	0
+252	-9.5	0
+253	-9.5	0
+254	-9.5	0
+255	-9.5	0
+256	-9.5	0
+257	-9.5	0
+258	-9.5	0
+259	-9.5	0
+260	-9.5	0
+261	-9.5	0
+262	-9.5	0
+263	-9.5	0
+264	-9.5	0
+265	-9.5	0
+266	-9.5	0
+267	-9.5	0
+268	-9.5	0
+269	-9.5	0
+270	-9.5	0
+271	-9.5	0
+272	-9.5	0
+273	-9.5	0
+274	-9.5	0
+275	-9.5	0
+276	-9.5	0
+277	-9.5	0
+278	-9.5	0
+279	-9.5	0
+280	-9.5	0
+281	-9.5	0
+282	-9.5	0
+283	-9.5	0
+284	-9.5	0
+285	-9.5	0
+286	-9.5	0
+287	-9.5	0
+288	-9.5	0
+289	-9.5	0
+290	-9.5	0
+291	-9.5	0
+292	-9.5	0
+293	-9.5	0
+294	-9.5	0
+295	-9.5	0
+296	-9.5	0
+297	-9.5	0
+298	-9.5	0
+299	-9.5	0
+300	-9.5	0
+301	-9.5	0
+302	-9.5	0
+303	-9.5	0
+304	-9.5	0
+305	-9.5	0
+306	-9.5	0
+307	-9.5	0
+308	-9.5	0
+309	-9.5	0
+310	-9.5	0
+311	-9.5	0
+312	-9.5	0
+313	-9.5	0
+314	-9.5	0
+315	-9.5	0
+316	-9.5	0
+317	-9.5	0
+318	-9.5	0
+319	-9.5	0
+320	-9.5	0
+321	-9.5	0
+322	-9.5	0
+323	-9.5	0
+324	-9.5	0
+325	-9.5	0
+326	-9.5	0
+327	-9.5	0
+328	-9.5	0
+329	-9.5	0
+330	-9.5	0
+331	-9.5	0
+332	-9.5	0
+333	-9.5	0
+334	-9.5	0
+335	-9.5	0
+336	-9.5	0
+337	-9.5	0
+338	-9.5	0
+339	-9.5	0
+340	-9.5	0
+341	-9.5	0
+342	-9.5	0
+343	-9.5	0
+344	-9.5	0
+345	-9.5	0
+346	-9.5	0
+347	-9.5	0
+348	-9.5	0
+349	-9.5	0
+350	-9.5	0
+351	-9.5	0
+352	-9.5	0
+353	-9.5	0
+354	-9.5	0
+355	-9.5	0
+356	-9.5	0
+357	-9.5	0
+358	-9.5	0
+359	-9.5	0
+360	-9.5	0
+0	-9	0
+1	-9	0
+2	-9	0
+3	-9	0
+4	-9	0
+5	-9	0
+6	-9	0
+7	-9	0
+8	-9	0
+9	-9	0
+10	-9	0
+11	-9	0
+12	-9	0
+13	-9	0
+14	-9	0
+15	-9	0
+16	-9	0
+17	-9	0
+18	-9	0
+19	-9	0
+20	-9	0
+21	-9	0
+22	-9	0
+23	-9	0
+24	-9	0
+25	-9	0
+26	-9	0
+27	-9	0
+28	-9	0
+29	-9	0
+30	-9	0
+31	-9	0
+32	-9	0
+33	-9	0
+34	-9	0
+35	-9	0
+36	-9	0
+37	-9	0
+38	-9	0
+39	-9	0
+40	-9	0
+41	-9	0
+42	-9	0
+43	-9	0
+44	-9	0
+45	-9	0
+46	-9	0
+47	-9	0
+48	-9	0
+49	-9	0
+50	-9	0
+51	-9	0
+52	-9	0
+53	-9	0
+54	-9	0
+55	-9	0
+56	-9	0
+57	-9	0
+58	-9	0
+59	-9	0
+60	-9	0
+61	-9	0
+62	-9	0
+63	-9	0
+64	-9	0
+65	-9	0
+66	-9	0
+67	-9	0
+68	-9	0
+69	-9	0
+70	-9	0
+71	-9	0
+72	-9	0
+73	-9	0
+74	-9	0
+75	-9	0
+76	-9	0
+77	-9	0
+78	-9	0
+79	-9	0
+80	-9	0
+81	-9	0
+82	-9	0
+83	-9	0
+84	-9	0
+85	-9	0
+86	-9	0
+87	-9	0
+88	-9	0
+89	-9	0
+90	-9	0
+91	-9	0
+92	-9	0
+93	-9	0
+94	-9	0
+95	-9	0
+96	-9	0
+97	-9	0
+98	-9	0
+99	-9	0
+100	-9	0
+101	-9	0
+102	-9	0
+103	-9	0
+104	-9	0
+105	-9	0
+106	-9	0
+107	-9	0
+108	-9	0
+109	-9	0
+110	-9	0
+111	-9	0
+112	-9	0
+113	-9	0
+114	-9	0
+115	-9	0
+116	-9	0
+117	-9	0
+118	-9	0
+119	-9	0
+120	-9	0
+121	-9	0
+122	-9	0
+123	-9	0
+124	-9	0
+125	-9	0
+126	-9	0
+127	-9	0
+128	-9	0
+129	-9	0
+130	-9	0
+131	-9	0
+132	-9	0
+133	-9	0
+134	-9	0
+135	-9	0
+136	-9	0
+137	-9	0
+138	-9	0
+139	-9	0
+140	-9	0
+141	-9	0
+142	-9	0
+143	-9	0
+144	-9	0
+145	-9	0
+146	-9	0
+147	-9	0
+148	-9	0
+149	-9	0
+150	-9	0
+151	-9	0
+152	-9	0
+153	-9	0
+154	-9	0
+155	-9	0
+156	-9	0
+157	-9	0
+158	-9	0
+159	-9	0
+160	-9	0
+161	-9	0
+162	-9	0
+163	-9	0
+164	-9	0
+165	-9	0
+166	-9	0
+167	-9	0
+168	-9	0
+169	-9	0
+170	-9	0
+171	-9	0
+172	-9	0
+173	-9	0
+174	-9	0
+175	-9	0
+176	-9	0
+177	-9	0
+178	-9	0
+179	-9	0
+180	-9	0
+181	-9	0
+182	-9	0
+183	-9	0
+184	-9	0
+185	-9	0
+186	-9	0
+187	-9	0
+188	-9	0
+189	-9	0
+190	-9	0
+191	-9	0
+192	-9	0
+193	-9	0
+194	-9	0
+195	-9	0
+196	-9	0
+197	-9	0
+198	-9	0
+199	-9	0
+200	-9	0
+201	-9	0
+202	-9	0
+203	-9	0
+204	-9	0
+205	-9	0
+206	-9	0
+207	-9	0
+208	-9	0
+209	-9	0
+210	-9	0
+211	-9	0
+212	-9	0
+213	-9	0
+214	-9	0
+215	-9	0
+216	-9	0
+217	-9	0
+218	-9	0
+219	-9	0
+220	-9	0
+221	-9	0
+222	-9	0
+223	-9	0
+224	-9	0
+225	-9	0
+226	-9	0
+227	-9	0
+228	-9	0
+229	-9	0
+230	-9	0
+231	-9	0
+232	-9	0
+233	-9	0
+234	-9	0
+235	-9	0
+236	-9	0
+237	-9	0
+238	-9	0
+239	-9	0
+240	-9	0
+241	-9	0
+242	-9	0
+243	-9	0
+244	-9	0
+245	-9	0
+246	-9	0
+247	-9	0
+248	-9	0
+249	-9	0
+250	-9	0
+251	-9	0
+252	-9	0
+253	-9	0
+254	-9	0
+255	-9	0
+256	-9	0
+257	-9	0
+258	-9	0
+259	-9	0
+260	-9	0
+261	-9	0
+262	-9	0
+263	-9	0
+264	-9	0
+265	-9	0
+266	-9	0
+267	-9	0
+268	-9	0
+269	-9	0
+270	-9	0
+271	-9	0
+272	-9	0
+273	-9	0
+274	-9	0
+275	-9	0
+276	-9	0
+277	-9	0
+278	-9	0
+279	-9	0
+280	-9	0
+281	-9	0
+282	-9	0
+283	-9	0
+284	-9	0
+285	-9	0
+286	-9	0
+287	-9	0
+288	-9	0
+289	-9	0
+290	-9	0
+291	-9	0
+292	-9	0
+293	-9	0
+294	-9	0
+295	-9	0
+296	-9	0
+297	-9	0
+298	-9	0
+299	-9	0
+300	-9	0
+301	-9	0
+302	-9	0
+303	-9	0
+304	-9	0
+305	-9	0
+306	-9	0
+307	-9	0
+308	-9	0
+309	-9	0
+310	-9	0
+311	-9	0
+312	-9	0
+313	-9	0
+314	-9	0
+315	-9	0
+316	-9	0
+317	-9	0
+318	-9	0
+319	-9	0
+320	-9	0
+321	-9	0
+322	-9	0
+323	-9	0
+324	-9	0
+325	-9	0
+326	-9	0
+327	-9	0
+328	-9	0
+329	-9	0
+330	-9	0
+331	-9	0
+332	-9	0
+333	-9	0
+334	-9	0
+335	-9	0
+336	-9	0
+337	-9	0
+338	-9	0
+339	-9	0
+340	-9	0
+341	-9	0
+342	-9	0
+343	-9	0
+344	-9	0
+345	-9	0
+346	-9	0
+347	-9	0
+348	-9	0
+349	-9	0
+350	-9	0
+351	-9	0
+352	-9	0
+353	-9	0
+354	-9	0
+355	-9	0
+356	-9	0
+357	-9	0
+358	-9	0
+359	-9	0
+360	-9	0
+0	-8.5	0
+1	-8.5	0
+2	-8.5	0
+3	-8.5	0
+4	-8.5	0
+5	-8.5	0
+6	-8.5	0
+7	-8.5	0
+8	-8.5	0
+9	-8.5	0
+10	-8.5	0
+11	-8.5	0
+12	-8.5	0
+13	-8.5	0
+14	-8.5	0
+15	-8.5	0
+16	-8.5	0
+17	-8.5	0
+18	-8.5	0
+19	-8.5	0
+20	-8.5	0
+21	-8.5	0
+22	-8.5	0
+23	-8.5	0
+24	-8.5	0
+25	-8.5	0
+26	-8.5	0
+27	-8.5	0
+28	-8.5	0
+29	-8.5	0
+30	-8.5	0
+31	-8.5	0
+32	-8.5	0
+33	-8.5	0
+34	-8.5	0
+35	-8.5	0
+36	-8.5	0
+37	-8.5	0
+38	-8.5	0
+39	-8.5	0
+40	-8.5	0
+41	-8.5	0
+42	-8.5	0
+43	-8.5	0
+44	-8.5	0
+45	-8.5	0
+46	-8.5	0
+47	-8.5	0
+48	-8.5	0
+49	-8.5	0
+50	-8.5	0
+51	-8.5	0
+52	-8.5	0
+53	-8.5	0
+54	-8.5	0
+55	-8.5	0
+56	-8.5	0
+57	-8.5	0
+58	-8.5	0
+59	-8.5	0
+60	-8.5	0
+61	-8.5	0
+62	-8.5	0
+63	-8.5	0
+64	-8.5	0
+65	-8.5	0
+66	-8.5	0
+67	-8.5	0
+68	-8.5	0
+69	-8.5	0
+70	-8.5	0
+71	-8.5	0
+72	-8.5	0
+73	-8.5	0
+74	-8.5	0
+75	-8.5	0
+76	-8.5	0
+77	-8.5	0
+78	-8.5	0
+79	-8.5	0
+80	-8.5	0
+81	-8.5	0
+82	-8.5	0
+83	-8.5	0
+84	-8.5	0
+85	-8.5	0
+86	-8.5	0
+87	-8.5	0
+88	-8.5	0
+89	-8.5	0
+90	-8.5	0
+91	-8.5	0
+92	-8.5	0
+93	-8.5	0
+94	-8.5	0
+95	-8.5	0
+96	-8.5	0
+97	-8.5	0
+98	-8.5	0
+99	-8.5	0
+100	-8.5	0
+101	-8.5	0
+102	-8.5	0
+103	-8.5	0
+104	-8.5	0
+105	-8.5	0
+106	-8.5	0
+107	-8.5	0
+108	-8.5	0
+109	-8.5	0
+110	-8.5	0
+111	-8.5	0
+112	-8.5	0
+113	-8.5	0
+114	-8.5	0
+115	-8.5	0
+116	-8.5	0
+117	-8.5	0
+118	-8.5	0
+119	-8.5	0
+120	-8.5	0
+121	-8.5	0
+122	-8.5	0
+123	-8.5	0
+124	-8.5	0
+125	-8.5	0
+126	-8.5	0
+127	-8.5	0
+128	-8.5	0
+129	-8.5	0
+130	-8.5	0
+131	-8.5	0
+132	-8.5	0
+133	-8.5	0
+134	-8.5	0
+135	-8.5	0
+136	-8.5	0
+137	-8.5	0
+138	-8.5	0
+139	-8.5	0
+140	-8.5	0
+141	-8.5	0
+142	-8.5	0
+143	-8.5	0
+144	-8.5	0
+145	-8.5	0
+146	-8.5	0
+147	-8.5	0
+148	-8.5	0
+149	-8.5	0
+150	-8.5	0
+151	-8.5	0
+152	-8.5	0
+153	-8.5	0
+154	-8.5	0
+155	-8.5	0
+156	-8.5	0
+157	-8.5	0
+158	-8.5	0
+159	-8.5	0
+160	-8.5	0
+161	-8.5	0
+162	-8.5	0
+163	-8.5	0
+164	-8.5	0
+165	-8.5	0
+166	-8.5	0
+167	-8.5	0
+168	-8.5	0
+169	-8.5	0
+170	-8.5	0
+171	-8.5	0
+172	-8.5	0
+173	-8.5	0
+174	-8.5	0
+175	-8.5	0
+176	-8.5	0
+177	-8.5	0
+178	-8.5	0
+179	-8.5	0
+180	-8.5	0
+181	-8.5	0
+182	-8.5	0
+183	-8.5	0
+184	-8.5	0
+185	-8.5	0
+186	-8.5	0
+187	-8.5	0
+188	-8.5	0
+189	-8.5	0
+190	-8.5	0
+191	-8.5	0
+192	-8.5	0
+193	-8.5	0
+194	-8.5	0
+195	-8.5	0
+196	-8.5	0
+197	-8.5	0
+198	-8.5	0
+199	-8.5	0
+200	-8.5	0
+201	-8.5	0
+202	-8.5	0
+203	-8.5	0
+204	-8.5	0
+205	-8.5	0
+206	-8.5	0
+207	-8.5	0
+208	-8.5	0
+209	-8.5	0
+210	-8.5	0
+211	-8.5	0
+212	-8.5	0
+213	-8.5	0
+214	-8.5	0
+215	-8.5	0
+216	-8.5	0
+217	-8.5	0
+218	-8.5	0
+219	-8.5	0
+220	-8.5	0
+221	-8.5	0
+222	-8.5	0
+223	-8.5	0
+224	-8.5	0
+225	-8.5	0
+226	-8.5	0
+227	-8.5	0
+228	-8.5	0
+229	-8.5	0
+230	-8.5	0
+231	-8.5	0
+232	-8.5	0
+233	-8.5	0
+234	-8.5	0
+235	-8.5	0
+236	-8.5	0
+237	-8.5	0
+238	-8.5	0
+239	-8.5	0
+240	-8.5	0
+241	-8.5	0
+242	-8.5	0
+243	-8.5	0
+244	-8.5	0
+245	-8.5	0
+246	-8.5	0
+247	-8.5	0
+248	-8.5	0
+249	-8.5	0
+250	-8.5	0
+251	-8.5	0
+252	-8.5	0
+253	-8.5	0
+254	-8.5	0
+255	-8.5	0
+256	-8.5	0
+257	-8.5	0
+258	-8.5	0
+259	-8.5	0
+260	-8.5	0
+261	-8.5	0
+262	-8.5	0
+263	-8.5	0
+264	-8.5	0
+265	-8.5	0
+266	-8.5	0
+267	-8.5	0
+268	-8.5	0
+269	-8.5	0
+270	-8.5	0
+271	-8.5	0
+272	-8.5	0
+273	-8.5	0
+274	-8.5	0
+275	-8.5	0
+276	-8.5	0
+277	-8.5	0
+278	-8.5	0
+279	-8.5	0
+280	-8.5	0
+281	-8.5	0
+282	-8.5	0
+283	-8.5	0
+284	-8.5	0
+285	-8.5	0
+286	-8.5	0
+287	-8.5	0
+288	-8.5	0
+289	-8.5	0
+290	-8.5	0
+291	-8.5	0
+292	-8.5	0
+293	-8.5	0
+294	-8.5	0
+295	-8.5	0
+296	-8.5	0
+297	-8.5	0
+298	-8.5	0
+299	-8.5	0
+300	-8.5	0
+301	-8.5	0
+302	-8.5	0
+303	-8.5	0
+304	-8.5	0
+305	-8.5	0
+306	-8.5	0
+307	-8.5	0
+308	-8.5	0
+309	-8.5	0
+310	-8.5	0
+311	-8.5	0
+312	-8.5	0
+313	-8.5	0
+314	-8.5	0
+315	-8.5	0
+316	-8.5	0
+317	-8.5	0
+318	-8.5	0
+319	-8.5	0
+320	-8.5	0
+321	-8.5	0
+322	-8.5	0
+323	-8.5	0
+324	-8.5	0
+325	-8.5	0
+326	-8.5	0
+327	-8.5	0
+328	-8.5	0
+329	-8.5	0
+330	-8.5	0
+331	-8.5	0
+332	-8.5	0
+333	-8.5	0
+334	-8.5	0
+335	-8.5	0
+336	-8.5	0
+337	-8.5	0
+338	-8.5	0
+339	-8.5	0
+340	-8.5	0
+341	-8.5	0
+342	-8.5	0
+343	-8.5	0
+344	-8.5	0
+345	-8.5	0
+346	-8.5	0
+347	-8.5	0
+348	-8.5	0
+349	-8.5	0
+350	-8.5	0
+351	-8.5	0
+352	-8.5	0
+353	-8.5	0
+354	-8.5	0
+355	-8.5	0
+356	-8.5	0
+357	-8.5	0
+358	-8.5	0
+359	-8.5	0
+360	-8.5	0
+0	-8	0
+1	-8	0
+2	-8	0
+3	-8	0
+4	-8	0
+5	-8	0
+6	-8	0
+7	-8	0
+8	-8	0
+9	-8	0
+10	-8	0
+11	-8	0
+12	-8	0
+13	-8	0
+14	-8	0
+15	-8	0
+16	-8	0
+17	-8	0
+18	-8	0
+19	-8	0
+20	-8	0
+21	-8	0
+22	-8	0
+23	-8	0
+24	-8	0
+25	-8	0
+26	-8	0
+27	-8	0
+28	-8	0
+29	-8	0
+30	-8	0
+31	-8	0
+32	-8	0
+33	-8	0
+34	-8	0
+35	-8	0
+36	-8	0
+37	-8	0
+38	-8	0
+39	-8	0
+40	-8	0
+41	-8	0
+42	-8	0
+43	-8	0
+44	-8	0
+45	-8	0
+46	-8	0
+47	-8	0
+48	-8	0
+49	-8	0
+50	-8	0
+51	-8	0
+52	-8	0
+53	-8	0
+54	-8	0
+55	-8	0
+56	-8	0
+57	-8	0
+58	-8	0
+59	-8	0
+60	-8	0
+61	-8	0
+62	-8	0
+63	-8	0
+64	-8	0
+65	-8	0
+66	-8	0
+67	-8	0
+68	-8	0
+69	-8	0
+70	-8	0
+71	-8	0
+72	-8	0
+73	-8	0
+74	-8	0
+75	-8	0
+76	-8	0
+77	-8	0
+78	-8	0
+79	-8	0
+80	-8	0
+81	-8	0
+82	-8	0
+83	-8	0
+84	-8	0
+85	-8	0
+86	-8	0
+87	-8	0
+88	-8	0
+89	-8	0
+90	-8	0
+91	-8	0
+92	-8	0
+93	-8	0
+94	-8	0
+95	-8	0
+96	-8	0
+97	-8	0
+98	-8	0
+99	-8	0
+100	-8	0
+101	-8	0
+102	-8	0
+103	-8	0
+104	-8	0
+105	-8	0
+106	-8	0
+107	-8	0
+108	-8	0
+109	-8	0
+110	-8	0
+111	-8	0
+112	-8	0
+113	-8	0
+114	-8	0
+115	-8	0
+116	-8	0
+117	-8	0
+118	-8	0
+119	-8	0
+120	-8	0
+121	-8	0
+122	-8	0
+123	-8	0
+124	-8	0
+125	-8	0
+126	-8	0
+127	-8	0
+128	-8	0
+129	-8	0
+130	-8	0
+131	-8	0
+132	-8	0
+133	-8	0
+134	-8	0
+135	-8	0
+136	-8	0
+137	-8	0
+138	-8	0
+139	-8	0
+140	-8	0
+141	-8	0
+142	-8	0
+143	-8	0
+144	-8	0
+145	-8	0
+146	-8	0
+147	-8	0
+148	-8	0
+149	-8	0
+150	-8	0
+151	-8	0
+152	-8	0
+153	-8	0
+154	-8	0
+155	-8	0
+156	-8	0
+157	-8	0
+158	-8	0
+159	-8	0
+160	-8	0
+161	-8	0
+162	-8	0
+163	-8	0
+164	-8	0
+165	-8	0
+166	-8	0
+167	-8	0
+168	-8	0
+169	-8	0
+170	-8	0
+171	-8	0
+172	-8	0
+173	-8	0
+174	-8	0
+175	-8	0
+176	-8	0
+177	-8	0
+178	-8	0
+179	-8	0
+180	-8	0
+181	-8	0
+182	-8	0
+183	-8	0
+184	-8	0
+185	-8	0
+186	-8	0
+187	-8	0
+188	-8	0
+189	-8	0
+190	-8	0
+191	-8	0
+192	-8	0
+193	-8	0
+194	-8	0
+195	-8	0
+196	-8	0
+197	-8	0
+198	-8	0
+199	-8	0
+200	-8	0
+201	-8	0
+202	-8	0
+203	-8	0
+204	-8	0
+205	-8	0
+206	-8	0
+207	-8	0
+208	-8	0
+209	-8	0
+210	-8	0
+211	-8	0
+212	-8	0
+213	-8	0
+214	-8	0
+215	-8	0
+216	-8	0
+217	-8	0
+218	-8	0
+219	-8	0
+220	-8	0
+221	-8	0
+222	-8	0
+223	-8	0
+224	-8	0
+225	-8	0
+226	-8	0
+227	-8	0
+228	-8	0
+229	-8	0
+230	-8	0
+231	-8	0
+232	-8	0
+233	-8	0
+234	-8	0
+235	-8	0
+236	-8	0
+237	-8	0
+238	-8	0
+239	-8	0
+240	-8	0
+241	-8	0
+242	-8	0
+243	-8	0
+244	-8	0
+245	-8	0
+246	-8	0
+247	-8	0
+248	-8	0
+249	-8	0
+250	-8	0
+251	-8	0
+252	-8	0
+253	-8	0
+254	-8	0
+255	-8	0
+256	-8	0
+257	-8	0
+258	-8	0
+259	-8	0
+260	-8	0
+261	-8	0
+262	-8	0
+263	-8	0
+264	-8	0
+265	-8	0
+266	-8	0
+267	-8	0
+268	-8	0
+269	-8	0
+270	-8	0
+271	-8	0
+272	-8	0
+273	-8	0
+274	-8	0
+275	-8	0
+276	-8	0
+277	-8	0
+278	-8	0
+279	-8	0
+280	-8	0
+281	-8	0
+282	-8	0
+283	-8	0
+284	-8	0
+285	-8	0
+286	-8	0
+287	-8	0
+288	-8	0
+289	-8	0
+290	-8	0
+291	-8	0
+292	-8	0
+293	-8	0
+294	-8	0
+295	-8	0
+296	-8	0
+297	-8	0
+298	-8	0
+299	-8	0
+300	-8	0
+301	-8	0
+302	-8	0
+303	-8	0
+304	-8	0
+305	-8	0
+306	-8	0
+307	-8	0
+308	-8	0
+309	-8	0
+310	-8	0
+311	-8	0
+312	-8	0
+313	-8	0
+314	-8	0
+315	-8	0
+316	-8	0
+317	-8	0
+318	-8	0
+319	-8	0
+320	-8	0
+321	-8	0
+322	-8	0
+323	-8	0
+324	-8	0
+325	-8	0
+326	-8	0
+327	-8	0
+328	-8	0
+329	-8	0
+330	-8	0
+331	-8	0
+332	-8	0
+333	-8	0
+334	-8	0
+335	-8	0
+336	-8	0
+337	-8	0
+338	-8	0
+339	-8	0
+340	-8	0
+341	-8	0
+342	-8	0
+343	-8	0
+344	-8	0
+345	-8	0
+346	-8	0
+347	-8	0
+348	-8	0
+349	-8	0
+350	-8	0
+351	-8	0
+352	-8	0
+353	-8	0
+354	-8	0
+355	-8	0
+356	-8	0
+357	-8	0
+358	-8	0
+359	-8	0
+360	-8	0
+0	-7.5	0
+1	-7.5	0
+2	-7.5	0
+3	-7.5	0
+4	-7.5	0
+5	-7.5	0
+6	-7.5	0
+7	-7.5	0
+8	-7.5	0
+9	-7.5	0
+10	-7.5	0
+11	-7.5	0
+12	-7.5	0
+13	-7.5	0
+14	-7.5	0
+15	-7.5	0
+16	-7.5	0
+17	-7.5	0
+18	-7.5	0
+19	-7.5	0
+20	-7.5	0
+21	-7.5	0
+22	-7.5	0
+23	-7.5	0
+24	-7.5	0
+25	-7.5	0
+26	-7.5	0
+27	-7.5	0
+28	-7.5	0
+29	-7.5	0
+30	-7.5	0
+31	-7.5	0
+32	-7.5	0
+33	-7.5	0
+34	-7.5	0
+35	-7.5	0
+36	-7.5	0
+37	-7.5	0
+38	-7.5	0
+39	-7.5	0
+40	-7.5	0
+41	-7.5	0
+42	-7.5	0
+43	-7.5	0
+44	-7.5	0
+45	-7.5	0
+46	-7.5	0
+47	-7.5	0
+48	-7.5	0
+49	-7.5	0
+50	-7.5	0
+51	-7.5	0
+52	-7.5	0
+53	-7.5	0
+54	-7.5	0
+55	-7.5	0
+56	-7.5	0
+57	-7.5	0
+58	-7.5	0
+59	-7.5	0
+60	-7.5	0
+61	-7.5	0
+62	-7.5	0
+63	-7.5	0
+64	-7.5	0
+65	-7.5	0
+66	-7.5	0
+67	-7.5	0
+68	-7.5	0
+69	-7.5	0
+70	-7.5	0
+71	-7.5	0
+72	-7.5	0
+73	-7.5	0
+74	-7.5	0
+75	-7.5	0
+76	-7.5	0
+77	-7.5	0
+78	-7.5	0
+79	-7.5	0
+80	-7.5	0
+81	-7.5	0
+82	-7.5	0
+83	-7.5	0
+84	-7.5	0
+85	-7.5	0
+86	-7.5	0
+87	-7.5	0
+88	-7.5	0
+89	-7.5	0
+90	-7.5	0
+91	-7.5	0
+92	-7.5	0
+93	-7.5	0
+94	-7.5	0
+95	-7.5	0
+96	-7.5	0
+97	-7.5	0
+98	-7.5	0
+99	-7.5	0
+100	-7.5	0
+101	-7.5	0
+102	-7.5	0
+103	-7.5	0
+104	-7.5	0
+105	-7.5	0
+106	-7.5	0
+107	-7.5	0
+108	-7.5	0
+109	-7.5	0
+110	-7.5	0
+111	-7.5	0
+112	-7.5	0
+113	-7.5	0
+114	-7.5	0
+115	-7.5	0
+116	-7.5	0
+117	-7.5	0
+118	-7.5	0
+119	-7.5	0
+120	-7.5	0
+121	-7.5	0
+122	-7.5	0
+123	-7.5	0
+124	-7.5	0
+125	-7.5	0
+126	-7.5	0
+127	-7.5	0
+128	-7.5	0
+129	-7.5	0
+130	-7.5	0
+131	-7.5	0
+132	-7.5	0
+133	-7.5	0
+134	-7.5	0
+135	-7.5	0
+136	-7.5	0
+137	-7.5	0
+138	-7.5	0
+139	-7.5	0
+140	-7.5	0
+141	-7.5	0
+142	-7.5	0
+143	-7.5	0
+144	-7.5	0
+145	-7.5	0
+146	-7.5	0
+147	-7.5	0
+148	-7.5	0
+149	-7.5	0
+150	-7.5	0
+151	-7.5	0
+152	-7.5	0
+153	-7.5	0
+154	-7.5	0
+155	-7.5	0
+156	-7.5	0
+157	-7.5	0
+158	-7.5	0
+159	-7.5	0
+160	-7.5	0
+161	-7.5	0
+162	-7.5	0
+163	-7.5	0
+164	-7.5	0
+165	-7.5	0
+166	-7.5	0
+167	-7.5	0
+168	-7.5	0
+169	-7.5	0
+170	-7.5	0
+171	-7.5	0
+172	-7.5	0
+173	-7.5	0
+174	-7.5	0
+175	-7.5	0
+176	-7.5	0
+177	-7.5	0
+178	-7.5	0
+179	-7.5	0
+180	-7.5	0
+181	-7.5	0
+182	-7.5	0
+183	-7.5	0
+184	-7.5	0
+185	-7.5	0
+186	-7.5	0
+187	-7.5	0
+188	-7.5	0
+189	-7.5	0
+190	-7.5	0
+191	-7.5	0
+192	-7.5	0
+193	-7.5	0
+194	-7.5	0
+195	-7.5	0
+196	-7.5	0
+197	-7.5	0
+198	-7.5	0
+199	-7.5	0
+200	-7.5	0
+201	-7.5	0
+202	-7.5	0
+203	-7.5	0
+204	-7.5	0
+205	-7.5	0
+206	-7.5	0
+207	-7.5	0
+208	-7.5	0
+209	-7.5	0
+210	-7.5	0
+211	-7.5	0
+212	-7.5	0
+213	-7.5	0
+214	-7.5	0
+215	-7.5	0
+216	-7.5	0
+217	-7.5	0
+218	-7.5	0
+219	-7.5	0
+220	-7.5	0
+221	-7.5	0
+222	-7.5	0
+223	-7.5	0
+224	-7.5	0
+225	-7.5	0
+226	-7.5	0
+227	-7.5	0
+228	-7.5	0
+229	-7.5	0
+230	-7.5	0
+231	-7.5	0
+232	-7.5	0
+233	-7.5	0
+234	-7.5	0
+235	-7.5	0
+236	-7.5	0
+237	-7.5	0
+238	-7.5	0
+239	-7.5	0
+240	-7.5	0
+241	-7.5	0
+242	-7.5	0
+243	-7.5	0
+244	-7.5	0
+245	-7.5	0
+246	-7.5	0
+247	-7.5	0
+248	-7.5	0
+249	-7.5	0
+250	-7.5	0
+251	-7.5	0
+252	-7.5	0
+253	-7.5	0
+254	-7.5	0
+255	-7.5	0
+256	-7.5	0
+257	-7.5	0
+258	-7.5	0
+259	-7.5	0
+260	-7.5	0
+261	-7.5	0
+262	-7.5	0
+263	-7.5	0
+264	-7.5	0
+265	-7.5	0
+266	-7.5	0
+267	-7.5	0
+268	-7.5	0
+269	-7.5	0
+270	-7.5	0
+271	-7.5	0
+272	-7.5	0
+273	-7.5	0
+274	-7.5	0
+275	-7.5	0
+276	-7.5	0
+277	-7.5	0
+278	-7.5	0
+279	-7.5	0
+280	-7.5	0
+281	-7.5	0
+282	-7.5	0
+283	-7.5	0
+284	-7.5	0
+285	-7.5	0
+286	-7.5	0
+287	-7.5	0
+288	-7.5	0
+289	-7.5	0
+290	-7.5	0
+291	-7.5	0
+292	-7.5	0
+293	-7.5	0
+294	-7.5	0
+295	-7.5	0
+296	-7.5	0
+297	-7.5	0
+298	-7.5	0
+299	-7.5	0
+300	-7.5	0
+301	-7.5	0
+302	-7.5	0
+303	-7.5	0
+304	-7.5	0
+305	-7.5	0
+306	-7.5	0
+307	-7.5	0
+308	-7.5	0
+309	-7.5	0
+310	-7.5	0
+311	-7.5	0
+312	-7.5	0
+313	-7.5	0
+314	-7.5	0
+315	-7.5	0
+316	-7.5	0
+317	-7.5	0
+318	-7.5	0
+319	-7.5	0
+320	-7.5	0
+321	-7.5	0
+322	-7.5	0
+323	-7.5	0
+324	-7.5	0
+325	-7.5	0
+326	-7.5	0
+327	-7.5	0
+328	-7.5	0
+329	-7.5	0
+330	-7.5	0
+331	-7.5	0
+332	-7.5	0
+333	-7.5	0
+334	-7.5	0
+335	-7.5	0
+336	-7.5	0
+337	-7.5	0
+338	-7.5	0
+339	-7.5	0
+340	-7.5	0
+341	-7.5	0
+342	-7.5	0
+343	-7.5	0
+344	-7.5	0
+345	-7.5	0
+346	-7.5	0
+347	-7.5	0
+348	-7.5	0
+349	-7.5	0
+350	-7.5	0
+351	-7.5	0
+352	-7.5	0
+353	-7.5	0
+354	-7.5	0
+355	-7.5	0
+356	-7.5	0
+357	-7.5	0
+358	-7.5	0
+359	-7.5	0
+360	-7.5	0
+0	-7	0
+1	-7	0
+2	-7	0
+3	-7	0
+4	-7	0
+5	-7	0
+6	-7	0
+7	-7	0
+8	-7	0
+9	-7	0
+10	-7	0
+11	-7	0
+12	-7	0
+13	-7	0
+14	-7	0
+15	-7	0
+16	-7	0
+17	-7	0
+18	-7	0
+19	-7	0
+20	-7	0
+21	-7	0
+22	-7	0
+23	-7	0
+24	-7	0
+25	-7	0
+26	-7	0
+27	-7	0
+28	-7	0
+29	-7	0
+30	-7	0
+31	-7	0
+32	-7	0
+33	-7	0
+34	-7	0
+35	-7	0
+36	-7	0
+37	-7	0
+38	-7	0
+39	-7	0
+40	-7	0
+41	-7	0
+42	-7	0
+43	-7	0
+44	-7	0
+45	-7	0
+46	-7	0
+47	-7	0
+48	-7	0
+49	-7	0
+50	-7	0
+51	-7	0
+52	-7	0
+53	-7	0
+54	-7	0
+55	-7	0
+56	-7	0
+57	-7	0
+58	-7	0
+59	-7	0
+60	-7	0
+61	-7	0
+62	-7	0
+63	-7	0
+64	-7	0
+65	-7	0
+66	-7	0
+67	-7	0
+68	-7	0
+69	-7	0
+70	-7	0
+71	-7	0
+72	-7	0
+73	-7	0
+74	-7	0
+75	-7	0
+76	-7	0
+77	-7	0
+78	-7	0
+79	-7	0
+80	-7	0
+81	-7	0
+82	-7	0
+83	-7	0
+84	-7	0
+85	-7	0
+86	-7	0
+87	-7	0
+88	-7	0
+89	-7	0
+90	-7	0
+91	-7	0
+92	-7	0
+93	-7	0
+94	-7	0
+95	-7	0
+96	-7	0
+97	-7	0
+98	-7	0
+99	-7	0
+100	-7	0
+101	-7	0
+102	-7	0
+103	-7	0
+104	-7	0
+105	-7	0
+106	-7	0
+107	-7	0
+108	-7	0
+109	-7	0
+110	-7	0
+111	-7	0
+112	-7	0
+113	-7	0
+114	-7	0
+115	-7	0
+116	-7	0
+117	-7	0
+118	-7	0
+119	-7	0
+120	-7	0
+121	-7	0
+122	-7	0
+123	-7	0
+124	-7	0
+125	-7	0
+126	-7	0
+127	-7	0
+128	-7	0
+129	-7	0
+130	-7	0
+131	-7	0
+132	-7	0
+133	-7	0
+134	-7	0
+135	-7	0
+136	-7	0
+137	-7	0
+138	-7	0
+139	-7	0
+140	-7	0
+141	-7	0
+142	-7	0
+143	-7	0
+144	-7	0
+145	-7	0
+146	-7	0
+147	-7	0
+148	-7	0
+149	-7	0
+150	-7	0
+151	-7	0
+152	-7	0
+153	-7	0
+154	-7	0
+155	-7	0
+156	-7	0
+157	-7	0
+158	-7	0
+159	-7	0
+160	-7	0
+161	-7	0
+162	-7	0
+163	-7	0
+164	-7	0
+165	-7	0
+166	-7	0
+167	-7	0
+168	-7	0
+169	-7	0
+170	-7	0
+171	-7	0
+172	-7	0
+173	-7	0
+174	-7	0
+175	-7	0
+176	-7	0
+177	-7	0
+178	-7	0
+179	-7	0
+180	-7	0
+181	-7	0
+182	-7	0
+183	-7	0
+184	-7	0
+185	-7	0
+186	-7	0
+187	-7	0
+188	-7	0
+189	-7	0
+190	-7	0
+191	-7	0
+192	-7	0
+193	-7	0
+194	-7	0
+195	-7	0
+196	-7	0
+197	-7	0
+198	-7	0
+199	-7	0
+200	-7	0
+201	-7	0
+202	-7	0
+203	-7	0
+204	-7	0
+205	-7	0
+206	-7	0
+207	-7	0
+208	-7	0
+209	-7	0
+210	-7	0
+211	-7	0
+212	-7	0
+213	-7	0
+214	-7	0
+215	-7	0
+216	-7	0
+217	-7	0
+218	-7	0
+219	-7	0
+220	-7	0
+221	-7	0
+222	-7	0
+223	-7	0
+224	-7	0
+225	-7	0
+226	-7	0
+227	-7	0
+228	-7	0
+229	-7	0
+230	-7	0
+231	-7	0
+232	-7	0
+233	-7	0
+234	-7	0
+235	-7	0
+236	-7	0
+237	-7	0
+238	-7	0
+239	-7	0
+240	-7	0
+241	-7	0
+242	-7	0
+243	-7	0
+244	-7	0
+245	-7	0
+246	-7	0
+247	-7	0
+248	-7	0
+249	-7	0
+250	-7	0
+251	-7	0
+252	-7	0
+253	-7	0
+254	-7	0
+255	-7	0
+256	-7	0
+257	-7	0
+258	-7	0
+259	-7	0
+260	-7	0
+261	-7	0
+262	-7	0
+263	-7	0
+264	-7	0
+265	-7	0
+266	-7	0
+267	-7	0
+268	-7	0
+269	-7	0
+270	-7	0
+271	-7	0
+272	-7	0
+273	-7	0
+274	-7	0
+275	-7	0
+276	-7	0
+277	-7	0
+278	-7	0
+279	-7	0
+280	-7	0
+281	-7	0
+282	-7	0
+283	-7	0
+284	-7	0
+285	-7	0
+286	-7	0
+287	-7	0
+288	-7	0
+289	-7	0
+290	-7	0
+291	-7	0
+292	-7	0
+293	-7	0
+294	-7	0
+295	-7	0
+296	-7	0
+297	-7	0
+298	-7	0
+299	-7	0
+300	-7	0
+301	-7	0
+302	-7	0
+303	-7	0
+304	-7	0
+305	-7	0
+306	-7	0
+307	-7	0
+308	-7	0
+309	-7	0
+310	-7	0
+311	-7	0
+312	-7	0
+313	-7	0
+314	-7	0
+315	-7	0
+316	-7	0
+317	-7	0
+318	-7	0
+319	-7	0
+320	-7	0
+321	-7	0
+322	-7	0
+323	-7	0
+324	-7	0
+325	-7	0
+326	-7	0
+327	-7	0
+328	-7	0
+329	-7	0
+330	-7	0
+331	-7	0
+332	-7	0
+333	-7	0
+334	-7	0
+335	-7	0
+336	-7	0
+337	-7	0
+338	-7	0
+339	-7	0
+340	-7	0
+341	-7	0
+342	-7	0
+343	-7	0
+344	-7	0
+345	-7	0
+346	-7	0
+347	-7	0
+348	-7	0
+349	-7	0
+350	-7	0
+351	-7	0
+352	-7	0
+353	-7	0
+354	-7	0
+355	-7	0
+356	-7	0
+357	-7	0
+358	-7	0
+359	-7	0
+360	-7	0
+0	-6.5	0
+1	-6.5	0
+2	-6.5	0
+3	-6.5	0
+4	-6.5	0
+5	-6.5	0
+6	-6.5	0
+7	-6.5	0
+8	-6.5	0
+9	-6.5	0
+10	-6.5	0
+11	-6.5	0
+12	-6.5	0
+13	-6.5	0
+14	-6.5	0
+15	-6.5	0
+16	-6.5	0
+17	-6.5	0
+18	-6.5	0
+19	-6.5	0
+20	-6.5	0
+21	-6.5	0
+22	-6.5	0
+23	-6.5	0
+24	-6.5	0
+25	-6.5	0
+26	-6.5	0
+27	-6.5	0
+28	-6.5	0
+29	-6.5	0
+30	-6.5	0
+31	-6.5	0
+32	-6.5	0
+33	-6.5	0
+34	-6.5	0
+35	-6.5	0
+36	-6.5	0
+37	-6.5	0
+38	-6.5	0
+39	-6.5	0
+40	-6.5	0
+41	-6.5	0
+42	-6.5	0
+43	-6.5	0
+44	-6.5	0
+45	-6.5	0
+46	-6.5	0
+47	-6.5	0
+48	-6.5	0
+49	-6.5	0
+50	-6.5	0
+51	-6.5	0
+52	-6.5	0
+53	-6.5	0
+54	-6.5	0
+55	-6.5	0
+56	-6.5	0
+57	-6.5	0
+58	-6.5	0
+59	-6.5	0
+60	-6.5	0
+61	-6.5	0
+62	-6.5	0
+63	-6.5	0
+64	-6.5	0
+65	-6.5	0
+66	-6.5	0
+67	-6.5	0
+68	-6.5	0
+69	-6.5	0
+70	-6.5	0
+71	-6.5	0
+72	-6.5	0
+73	-6.5	0
+74	-6.5	0
+75	-6.5	0
+76	-6.5	0
+77	-6.5	0
+78	-6.5	0
+79	-6.5	0
+80	-6.5	0
+81	-6.5	0
+82	-6.5	0
+83	-6.5	0
+84	-6.5	0
+85	-6.5	0
+86	-6.5	0
+87	-6.5	0
+88	-6.5	0
+89	-6.5	0
+90	-6.5	0
+91	-6.5	0
+92	-6.5	0
+93	-6.5	0
+94	-6.5	0
+95	-6.5	0
+96	-6.5	0
+97	-6.5	0
+98	-6.5	0
+99	-6.5	0
+100	-6.5	0
+101	-6.5	0
+102	-6.5	0
+103	-6.5	0
+104	-6.5	0
+105	-6.5	0
+106	-6.5	0
+107	-6.5	0
+108	-6.5	0
+109	-6.5	0
+110	-6.5	0
+111	-6.5	0
+112	-6.5	0
+113	-6.5	0
+114	-6.5	0
+115	-6.5	0
+116	-6.5	0
+117	-6.5	0
+118	-6.5	0
+119	-6.5	0
+120	-6.5	0
+121	-6.5	0
+122	-6.5	0
+123	-6.5	0
+124	-6.5	0
+125	-6.5	0
+126	-6.5	0
+127	-6.5	0
+128	-6.5	0
+129	-6.5	0
+130	-6.5	0
+131	-6.5	0
+132	-6.5	0
+133	-6.5	0
+134	-6.5	0
+135	-6.5	0
+136	-6.5	0
+137	-6.5	0
+138	-6.5	0
+139	-6.5	0
+140	-6.5	0
+141	-6.5	0
+142	-6.5	0
+143	-6.5	0
+144	-6.5	0
+145	-6.5	0
+146	-6.5	0
+147	-6.5	0
+148	-6.5	0
+149	-6.5	0
+150	-6.5	0
+151	-6.5	0
+152	-6.5	0
+153	-6.5	0
+154	-6.5	0
+155	-6.5	0
+156	-6.5	0
+157	-6.5	0
+158	-6.5	0
+159	-6.5	0
+160	-6.5	0
+161	-6.5	0
+162	-6.5	0
+163	-6.5	0
+164	-6.5	0
+165	-6.5	0
+166	-6.5	0
+167	-6.5	0
+168	-6.5	0
+169	-6.5	0
+170	-6.5	0
+171	-6.5	0
+172	-6.5	0
+173	-6.5	0
+174	-6.5	0
+175	-6.5	0
+176	-6.5	0
+177	-6.5	0
+178	-6.5	0
+179	-6.5	0
+180	-6.5	0
+181	-6.5	0
+182	-6.5	0
+183	-6.5	0
+184	-6.5	0
+185	-6.5	0
+186	-6.5	0
+187	-6.5	0
+188	-6.5	0
+189	-6.5	0
+190	-6.5	0
+191	-6.5	0
+192	-6.5	0
+193	-6.5	0
+194	-6.5	0
+195	-6.5	0
+196	-6.5	0
+197	-6.5	0
+198	-6.5	0
+199	-6.5	0
+200	-6.5	0
+201	-6.5	0
+202	-6.5	0
+203	-6.5	0
+204	-6.5	0
+205	-6.5	0
+206	-6.5	0
+207	-6.5	0
+208	-6.5	0
+209	-6.5	0
+210	-6.5	0
+211	-6.5	0
+212	-6.5	0
+213	-6.5	0
+214	-6.5	0
+215	-6.5	0
+216	-6.5	0
+217	-6.5	0
+218	-6.5	0
+219	-6.5	0
+220	-6.5	0
+221	-6.5	0
+222	-6.5	0
+223	-6.5	0
+224	-6.5	0
+225	-6.5	0
+226	-6.5	0
+227	-6.5	0
+228	-6.5	0
+229	-6.5	0
+230	-6.5	0
+231	-6.5	0
+232	-6.5	0
+233	-6.5	0
+234	-6.5	0
+235	-6.5	0
+236	-6.5	0
+237	-6.5	0
+238	-6.5	0
+239	-6.5	0
+240	-6.5	0
+241	-6.5	0
+242	-6.5	0
+243	-6.5	0
+244	-6.5	0
+245	-6.5	0
+246	-6.5	0
+247	-6.5	0
+248	-6.5	0
+249	-6.5	0
+250	-6.5	0
+251	-6.5	0
+252	-6.5	0
+253	-6.5	0
+254	-6.5	0
+255	-6.5	0
+256	-6.5	0
+257	-6.5	0
+258	-6.5	0
+259	-6.5	0
+260	-6.5	0
+261	-6.5	0
+262	-6.5	0
+263	-6.5	0
+264	-6.5	0
+265	-6.5	0
+266	-6.5	0
+267	-6.5	0
+268	-6.5	0
+269	-6.5	0
+270	-6.5	0
+271	-6.5	0
+272	-6.5	0
+273	-6.5	0
+274	-6.5	0
+275	-6.5	0
+276	-6.5	0
+277	-6.5	0
+278	-6.5	0
+279	-6.5	0
+280	-6.5	0
+281	-6.5	0
+282	-6.5	0
+283	-6.5	0
+284	-6.5	0
+285	-6.5	0
+286	-6.5	0
+287	-6.5	0
+288	-6.5	0
+289	-6.5	0
+290	-6.5	0
+291	-6.5	0
+292	-6.5	0
+293	-6.5	0
+294	-6.5	0
+295	-6.5	0
+296	-6.5	0
+297	-6.5	0
+298	-6.5	0
+299	-6.5	0
+300	-6.5	0
+301	-6.5	0
+302	-6.5	0
+303	-6.5	0
+304	-6.5	0
+305	-6.5	0
+306	-6.5	0
+307	-6.5	0
+308	-6.5	0
+309	-6.5	0
+310	-6.5	0
+311	-6.5	0
+312	-6.5	0
+313	-6.5	0
+314	-6.5	0
+315	-6.5	0
+316	-6.5	0
+317	-6.5	0
+318	-6.5	0
+319	-6.5	0
+320	-6.5	0
+321	-6.5	0
+322	-6.5	0
+323	-6.5	0
+324	-6.5	0
+325	-6.5	0
+326	-6.5	0
+327	-6.5	0
+328	-6.5	0
+329	-6.5	0
+330	-6.5	0
+331	-6.5	0
+332	-6.5	0
+333	-6.5	0
+334	-6.5	0
+335	-6.5	0
+336	-6.5	0
+337	-6.5	0
+338	-6.5	0
+339	-6.5	0
+340	-6.5	0
+341	-6.5	0
+342	-6.5	0
+343	-6.5	0
+344	-6.5	0
+345	-6.5	0
+346	-6.5	0
+347	-6.5	0
+348	-6.5	0
+349	-6.5	0
+350	-6.5	0
+351	-6.5	0
+352	-6.5	0
+353	-6.5	0
+354	-6.5	0
+355	-6.5	0
+356	-6.5	0
+357	-6.5	0
+358	-6.5	0
+359	-6.5	0
+360	-6.5	0
+0	-6	0
+1	-6	0
+2	-6	0
+3	-6	0
+4	-6	0
+5	-6	0
+6	-6	0
+7	-6	0
+8	-6	0
+9	-6	0
+10	-6	0
+11	-6	0
+12	-6	0
+13	-6	0
+14	-6	0
+15	-6	0
+16	-6	0
+17	-6	0
+18	-6	0
+19	-6	0
+20	-6	0
+21	-6	0
+22	-6	0
+23	-6	0
+24	-6	0
+25	-6	0
+26	-6	0
+27	-6	0
+28	-6	0
+29	-6	0
+30	-6	0
+31	-6	0
+32	-6	0
+33	-6	0
+34	-6	0
+35	-6	0
+36	-6	0
+37	-6	0
+38	-6	0
+39	-6	0
+40	-6	0
+41	-6	0
+42	-6	0
+43	-6	0
+44	-6	0
+45	-6	0
+46	-6	0
+47	-6	0
+48	-6	0
+49	-6	0
+50	-6	0
+51	-6	0
+52	-6	0
+53	-6	0
+54	-6	0
+55	-6	0
+56	-6	0
+57	-6	0
+58	-6	0
+59	-6	0
+60	-6	0
+61	-6	0
+62	-6	0
+63	-6	0
+64	-6	0
+65	-6	0
+66	-6	0
+67	-6	0
+68	-6	0
+69	-6	0
+70	-6	0
+71	-6	0
+72	-6	0
+73	-6	0
+74	-6	0
+75	-6	0
+76	-6	0
+77	-6	0
+78	-6	0
+79	-6	0
+80	-6	0
+81	-6	0
+82	-6	0
+83	-6	0
+84	-6	0
+85	-6	0
+86	-6	0
+87	-6	0
+88	-6	0
+89	-6	0
+90	-6	0
+91	-6	0
+92	-6	0
+93	-6	0
+94	-6	0
+95	-6	0
+96	-6	0
+97	-6	0
+98	-6	0
+99	-6	0
+100	-6	0
+101	-6	0
+102	-6	0
+103	-6	0
+104	-6	0
+105	-6	0
+106	-6	0
+107	-6	0
+108	-6	0
+109	-6	0
+110	-6	0
+111	-6	0
+112	-6	0
+113	-6	0
+114	-6	0
+115	-6	0
+116	-6	0
+117	-6	0
+118	-6	0
+119	-6	0
+120	-6	0
+121	-6	0
+122	-6	0
+123	-6	0
+124	-6	0
+125	-6	0
+126	-6	0
+127	-6	0
+128	-6	0
+129	-6	0
+130	-6	0
+131	-6	0
+132	-6	0
+133	-6	0
+134	-6	0
+135	-6	0
+136	-6	0
+137	-6	0
+138	-6	0
+139	-6	0
+140	-6	0
+141	-6	0
+142	-6	0
+143	-6	0
+144	-6	0
+145	-6	0
+146	-6	0
+147	-6	0
+148	-6	0
+149	-6	0
+150	-6	0
+151	-6	0
+152	-6	0
+153	-6	0
+154	-6	0
+155	-6	0
+156	-6	0
+157	-6	0
+158	-6	0
+159	-6	0
+160	-6	0
+161	-6	0
+162	-6	0
+163	-6	0
+164	-6	0
+165	-6	0
+166	-6	0
+167	-6	0
+168	-6	0
+169	-6	0
+170	-6	0
+171	-6	0
+172	-6	0
+173	-6	0
+174	-6	0
+175	-6	0
+176	-6	0
+177	-6	0
+178	-6	0
+179	-6	0
+180	-6	0
+181	-6	0
+182	-6	0
+183	-6	0
+184	-6	0
+185	-6	0
+186	-6	0
+187	-6	0
+188	-6	0
+189	-6	0
+190	-6	0
+191	-6	0
+192	-6	0
+193	-6	0
+194	-6	0
+195	-6	0
+196	-6	0
+197	-6	0
+198	-6	0
+199	-6	0
+200	-6	0
+201	-6	0
+202	-6	0
+203	-6	0
+204	-6	0
+205	-6	0
+206	-6	0
+207	-6	0
+208	-6	0
+209	-6	0
+210	-6	0
+211	-6	0
+212	-6	0
+213	-6	0
+214	-6	0
+215	-6	0
+216	-6	0
+217	-6	0
+218	-6	0
+219	-6	0
+220	-6	0
+221	-6	0
+222	-6	0
+223	-6	0
+224	-6	0
+225	-6	0
+226	-6	0
+227	-6	0
+228	-6	0
+229	-6	0
+230	-6	0
+231	-6	0
+232	-6	0
+233	-6	0
+234	-6	0
+235	-6	0
+236	-6	0
+237	-6	0
+238	-6	0
+239	-6	0
+240	-6	0
+241	-6	0
+242	-6	0
+243	-6	0
+244	-6	0
+245	-6	0
+246	-6	0
+247	-6	0
+248	-6	0
+249	-6	0
+250	-6	0
+251	-6	0
+252	-6	0
+253	-6	0
+254	-6	0
+255	-6	0
+256	-6	0
+257	-6	0
+258	-6	0
+259	-6	0
+260	-6	0
+261	-6	0
+262	-6	0
+263	-6	0
+264	-6	0
+265	-6	0
+266	-6	0
+267	-6	0
+268	-6	0
+269	-6	0
+270	-6	0
+271	-6	0
+272	-6	0
+273	-6	0
+274	-6	0
+275	-6	0
+276	-6	0
+277	-6	0
+278	-6	0
+279	-6	0
+280	-6	0
+281	-6	0
+282	-6	0
+283	-6	0
+284	-6	0
+285	-6	0
+286	-6	0
+287	-6	0
+288	-6	0
+289	-6	0
+290	-6	0
+291	-6	0
+292	-6	0
+293	-6	0
+294	-6	0
+295	-6	0
+296	-6	0
+297	-6	0
+298	-6	0
+299	-6	0
+300	-6	0
+301	-6	0
+302	-6	0
+303	-6	0
+304	-6	0
+305	-6	0
+306	-6	0
+307	-6	0
+308	-6	0
+309	-6	0
+310	-6	0
+311	-6	0
+312	-6	0
+313	-6	0
+314	-6	0
+315	-6	0
+316	-6	0
+317	-6	0
+318	-6	0
+319	-6	0
+320	-6	0
+321	-6	0
+322	-6	0
+323	-6	0
+324	-6	0
+325	-6	0
+326	-6	0
+327	-6	0
+328	-6	0
+329	-6	0
+330	-6	0
+331	-6	0
+332	-6	0
+333	-6	0
+334	-6	0
+335	-6	0
+336	-6	0
+337	-6	0
+338	-6	0
+339	-6	0
+340	-6	0
+341	-6	0
+342	-6	0
+343	-6	0
+344	-6	0
+345	-6	0
+346	-6	0
+347	-6	0
+348	-6	0
+349	-6	0
+350	-6	0
+351	-6	0
+352	-6	0
+353	-6	0
+354	-6	0
+355	-6	0
+356	-6	0
+357	-6	0
+358	-6	0
+359	-6	0
+360	-6	0
+0	-5.5	0
+1	-5.5	0
+2	-5.5	0
+3	-5.5	0
+4	-5.5	0
+5	-5.5	0
+6	-5.5	0
+7	-5.5	0
+8	-5.5	0
+9	-5.5	0
+10	-5.5	0
+11	-5.5	0
+12	-5.5	0
+13	-5.5	0
+14	-5.5	0
+15	-5.5	0
+16	-5.5	0
+17	-5.5	0
+18	-5.5	0
+19	-5.5	0
+20	-5.5	0
+21	-5.5	0
+22	-5.5	0
+23	-5.5	0
+24	-5.5	0
+25	-5.5	0
+26	-5.5	0
+27	-5.5	0
+28	-5.5	0
+29	-5.5	0
+30	-5.5	0
+31	-5.5	0
+32	-5.5	0
+33	-5.5	0
+34	-5.5	0
+35	-5.5	0
+36	-5.5	0
+37	-5.5	0
+38	-5.5	0
+39	-5.5	0
+40	-5.5	0
+41	-5.5	0
+42	-5.5	0
+43	-5.5	0
+44	-5.5	0
+45	-5.5	0
+46	-5.5	0
+47	-5.5	0
+48	-5.5	0
+49	-5.5	0
+50	-5.5	0
+51	-5.5	0
+52	-5.5	0
+53	-5.5	0
+54	-5.5	0
+55	-5.5	0
+56	-5.5	0
+57	-5.5	0
+58	-5.5	0
+59	-5.5	0
+60	-5.5	0
+61	-5.5	0
+62	-5.5	0
+63	-5.5	0
+64	-5.5	0
+65	-5.5	0
+66	-5.5	0
+67	-5.5	0
+68	-5.5	0
+69	-5.5	0
+70	-5.5	0
+71	-5.5	0
+72	-5.5	0
+73	-5.5	0
+74	-5.5	0
+75	-5.5	0
+76	-5.5	0
+77	-5.5	0
+78	-5.5	0
+79	-5.5	0
+80	-5.5	0
+81	-5.5	0
+82	-5.5	0
+83	-5.5	0
+84	-5.5	0
+85	-5.5	0
+86	-5.5	0
+87	-5.5	0
+88	-5.5	0
+89	-5.5	0
+90	-5.5	0
+91	-5.5	0
+92	-5.5	0
+93	-5.5	0
+94	-5.5	0
+95	-5.5	0
+96	-5.5	0
+97	-5.5	0
+98	-5.5	0
+99	-5.5	0
+100	-5.5	0
+101	-5.5	0
+102	-5.5	0
+103	-5.5	0
+104	-5.5	0
+105	-5.5	0
+106	-5.5	0
+107	-5.5	0
+108	-5.5	0
+109	-5.5	0
+110	-5.5	0
+111	-5.5	0
+112	-5.5	0
+113	-5.5	0
+114	-5.5	0
+115	-5.5	0
+116	-5.5	0
+117	-5.5	0
+118	-5.5	0
+119	-5.5	0
+120	-5.5	0
+121	-5.5	0
+122	-5.5	0
+123	-5.5	0
+124	-5.5	0
+125	-5.5	0
+126	-5.5	0
+127	-5.5	0
+128	-5.5	0
+129	-5.5	0
+130	-5.5	0
+131	-5.5	0
+132	-5.5	0
+133	-5.5	0
+134	-5.5	0
+135	-5.5	0
+136	-5.5	0
+137	-5.5	0
+138	-5.5	0
+139	-5.5	0
+140	-5.5	0
+141	-5.5	0
+142	-5.5	0
+143	-5.5	0
+144	-5.5	0
+145	-5.5	0
+146	-5.5	0
+147	-5.5	0
+148	-5.5	0
+149	-5.5	0
+150	-5.5	0
+151	-5.5	0
+152	-5.5	0
+153	-5.5	0
+154	-5.5	0
+155	-5.5	0
+156	-5.5	0
+157	-5.5	0
+158	-5.5	0
+159	-5.5	0
+160	-5.5	0
+161	-5.5	0
+162	-5.5	0
+163	-5.5	0
+164	-5.5	0
+165	-5.5	0
+166	-5.5	0
+167	-5.5	0
+168	-5.5	0
+169	-5.5	0
+170	-5.5	0
+171	-5.5	0
+172	-5.5	0
+173	-5.5	0
+174	-5.5	0
+175	-5.5	0
+176	-5.5	0
+177	-5.5	0
+178	-5.5	0
+179	-5.5	0
+180	-5.5	0
+181	-5.5	0
+182	-5.5	0
+183	-5.5	0
+184	-5.5	0
+185	-5.5	0
+186	-5.5	0
+187	-5.5	0
+188	-5.5	0
+189	-5.5	0
+190	-5.5	0
+191	-5.5	0
+192	-5.5	0
+193	-5.5	0
+194	-5.5	0
+195	-5.5	0
+196	-5.5	0
+197	-5.5	0
+198	-5.5	0
+199	-5.5	0
+200	-5.5	0
+201	-5.5	0
+202	-5.5	0
+203	-5.5	0
+204	-5.5	0
+205	-5.5	0
+206	-5.5	0
+207	-5.5	0
+208	-5.5	0
+209	-5.5	0
+210	-5.5	0
+211	-5.5	0
+212	-5.5	0
+213	-5.5	0
+214	-5.5	0
+215	-5.5	0
+216	-5.5	0
+217	-5.5	0
+218	-5.5	0
+219	-5.5	0
+220	-5.5	0
+221	-5.5	0
+222	-5.5	0
+223	-5.5	0
+224	-5.5	0
+225	-5.5	0
+226	-5.5	0
+227	-5.5	0
+228	-5.5	0
+229	-5.5	0
+230	-5.5	0
+231	-5.5	0
+232	-5.5	0
+233	-5.5	0
+234	-5.5	0
+235	-5.5	0
+236	-5.5	0
+237	-5.5	0
+238	-5.5	0
+239	-5.5	0
+240	-5.5	0
+241	-5.5	0
+242	-5.5	0
+243	-5.5	0
+244	-5.5	0
+245	-5.5	0
+246	-5.5	0
+247	-5.5	0
+248	-5.5	0
+249	-5.5	0
+250	-5.5	0
+251	-5.5	0
+252	-5.5	0
+253	-5.5	0
+254	-5.5	0
+255	-5.5	0
+256	-5.5	0
+257	-5.5	0
+258	-5.5	0
+259	-5.5	0
+260	-5.5	0
+261	-5.5	0
+262	-5.5	0
+263	-5.5	0
+264	-5.5	0
+265	-5.5	0
+266	-5.5	0
+267	-5.5	0
+268	-5.5	0
+269	-5.5	0
+270	-5.5	0
+271	-5.5	0
+272	-5.5	0
+273	-5.5	0
+274	-5.5	0
+275	-5.5	0
+276	-5.5	0
+277	-5.5	0
+278	-5.5	0
+279	-5.5	0
+280	-5.5	0
+281	-5.5	0
+282	-5.5	0
+283	-5.5	0
+284	-5.5	0
+285	-5.5	0
+286	-5.5	0
+287	-5.5	0
+288	-5.5	0
+289	-5.5	0
+290	-5.5	0
+291	-5.5	0
+292	-5.5	0
+293	-5.5	0
+294	-5.5	0
+295	-5.5	0
+296	-5.5	0
+297	-5.5	0
+298	-5.5	0
+299	-5.5	0
+300	-5.5	0
+301	-5.5	0
+302	-5.5	0
+303	-5.5	0
+304	-5.5	0
+305	-5.5	0
+306	-5.5	0
+307	-5.5	0
+308	-5.5	0
+309	-5.5	0
+310	-5.5	0
+311	-5.5	0
+312	-5.5	0
+313	-5.5	0
+314	-5.5	0
+315	-5.5	0
+316	-5.5	0
+317	-5.5	0
+318	-5.5	0
+319	-5.5	0
+320	-5.5	0
+321	-5.5	0
+322	-5.5	0
+323	-5.5	0
+324	-5.5	0
+325	-5.5	0
+326	-5.5	0
+327	-5.5	0
+328	-5.5	0
+329	-5.5	0
+330	-5.5	0
+331	-5.5	0
+332	-5.5	0
+333	-5.5	0
+334	-5.5	0
+335	-5.5	0
+336	-5.5	0
+337	-5.5	0
+338	-5.5	0
+339	-5.5	0
+340	-5.5	0
+341	-5.5	0
+342	-5.5	0
+343	-5.5	0
+344	-5.5	0
+345	-5.5	0
+346	-5.5	0
+347	-5.5	0
+348	-5.5	0
+349	-5.5	0
+350	-5.5	0
+351	-5.5	0
+352	-5.5	0
+353	-5.5	0
+354	-5.5	0
+355	-5.5	0
+356	-5.5	0
+357	-5.5	0
+358	-5.5	0
+359	-5.5	0
+360	-5.5	0
+0	-5	0
+1	-5	0
+2	-5	0
+3	-5	0
+4	-5	0
+5	-5	0
+6	-5	0
+7	-5	0
+8	-5	0
+9	-5	0
+10	-5	0
+11	-5	0
+12	-5	0
+13	-5	0
+14	-5	0
+15	-5	0
+16	-5	0
+17	-5	0
+18	-5	0
+19	-5	0
+20	-5	0
+21	-5	0
+22	-5	0
+23	-5	0
+24	-5	0
+25	-5	0
+26	-5	0
+27	-5	0
+28	-5	0
+29	-5	0
+30	-5	0
+31	-5	0
+32	-5	0
+33	-5	0
+34	-5	0
+35	-5	0
+36	-5	0
+37	-5	0
+38	-5	0
+39	-5	0
+40	-5	0
+41	-5	0
+42	-5	0
+43	-5	0
+44	-5	0
+45	-5	0
+46	-5	0
+47	-5	0
+48	-5	0
+49	-5	0
+50	-5	0
+51	-5	0
+52	-5	0
+53	-5	0
+54	-5	0
+55	-5	0
+56	-5	0
+57	-5	0
+58	-5	0
+59	-5	0
+60	-5	0
+61	-5	0
+62	-5	0
+63	-5	0
+64	-5	0
+65	-5	0
+66	-5	0
+67	-5	0
+68	-5	0
+69	-5	0
+70	-5	0
+71	-5	0
+72	-5	0
+73	-5	0
+74	-5	0
+75	-5	0
+76	-5	0
+77	-5	0
+78	-5	0
+79	-5	0
+80	-5	0
+81	-5	0
+82	-5	0
+83	-5	0
+84	-5	0
+85	-5	0
+86	-5	0
+87	-5	0
+88	-5	0
+89	-5	0
+90	-5	0
+91	-5	0
+92	-5	0
+93	-5	0
+94	-5	0
+95	-5	0
+96	-5	0
+97	-5	0
+98	-5	0
+99	-5	0
+100	-5	0
+101	-5	0
+102	-5	0
+103	-5	0
+104	-5	0
+105	-5	0
+106	-5	0
+107	-5	0
+108	-5	0
+109	-5	0
+110	-5	0
+111	-5	0
+112	-5	0
+113	-5	0
+114	-5	0
+115	-5	0
+116	-5	0
+117	-5	0
+118	-5	0
+119	-5	0
+120	-5	0
+121	-5	0
+122	-5	0
+123	-5	0
+124	-5	0
+125	-5	0
+126	-5	0
+127	-5	0
+128	-5	0
+129	-5	0
+130	-5	0
+131	-5	0
+132	-5	0
+133	-5	0
+134	-5	0
+135	-5	0
+136	-5	0
+137	-5	0
+138	-5	0
+139	-5	0
+140	-5	0
+141	-5	0
+142	-5	0
+143	-5	0
+144	-5	0
+145	-5	0
+146	-5	0
+147	-5	0
+148	-5	0
+149	-5	0
+150	-5	0
+151	-5	0
+152	-5	0
+153	-5	0
+154	-5	0
+155	-5	0
+156	-5	0
+157	-5	0
+158	-5	0
+159	-5	0
+160	-5	0
+161	-5	0
+162	-5	0
+163	-5	0
+164	-5	0
+165	-5	0
+166	-5	0
+167	-5	0
+168	-5	0
+169	-5	0
+170	-5	0
+171	-5	0
+172	-5	0
+173	-5	0
+174	-5	0
+175	-5	0
+176	-5	0
+177	-5	0
+178	-5	0
+179	-5	0
+180	-5	0
+181	-5	0
+182	-5	0
+183	-5	0
+184	-5	0
+185	-5	0
+186	-5	0
+187	-5	0
+188	-5	0
+189	-5	0
+190	-5	0
+191	-5	0
+192	-5	0
+193	-5	0
+194	-5	0
+195	-5	0
+196	-5	0
+197	-5	0
+198	-5	0
+199	-5	0
+200	-5	0
+201	-5	0
+202	-5	0
+203	-5	0
+204	-5	0
+205	-5	0
+206	-5	0
+207	-5	0
+208	-5	0
+209	-5	0
+210	-5	0
+211	-5	0
+212	-5	0
+213	-5	0
+214	-5	0
+215	-5	0
+216	-5	0
+217	-5	0
+218	-5	0
+219	-5	0
+220	-5	0
+221	-5	0
+222	-5	0
+223	-5	0
+224	-5	0
+225	-5	0
+226	-5	0
+227	-5	0
+228	-5	0
+229	-5	0
+230	-5	0
+231	-5	0
+232	-5	0
+233	-5	0
+234	-5	0
+235	-5	0
+236	-5	0
+237	-5	0
+238	-5	0
+239	-5	0
+240	-5	0
+241	-5	0
+242	-5	0
+243	-5	0
+244	-5	0
+245	-5	0
+246	-5	0
+247	-5	0
+248	-5	0
+249	-5	0
+250	-5	0
+251	-5	0
+252	-5	0
+253	-5	0
+254	-5	0
+255	-5	0
+256	-5	0
+257	-5	0
+258	-5	0
+259	-5	0
+260	-5	0
+261	-5	0
+262	-5	0
+263	-5	0
+264	-5	0
+265	-5	0
+266	-5	0
+267	-5	0
+268	-5	0
+269	-5	0
+270	-5	0
+271	-5	0
+272	-5	0
+273	-5	0
+274	-5	0
+275	-5	0
+276	-5	0
+277	-5	0
+278	-5	0
+279	-5	0
+280	-5	0
+281	-5	0
+282	-5	0
+283	-5	0
+284	-5	0
+285	-5	0
+286	-5	0
+287	-5	0
+288	-5	0
+289	-5	0
+290	-5	0
+291	-5	0
+292	-5	0
+293	-5	0
+294	-5	0
+295	-5	0
+296	-5	0
+297	-5	0
+298	-5	0
+299	-5	0
+300	-5	0
+301	-5	0
+302	-5	0
+303	-5	0
+304	-5	0
+305	-5	0
+306	-5	0
+307	-5	0
+308	-5	0
+309	-5	0
+310	-5	0
+311	-5	0
+312	-5	0
+313	-5	0
+314	-5	0
+315	-5	0
+316	-5	0
+317	-5	0
+318	-5	0
+319	-5	0
+320	-5	0
+321	-5	0
+322	-5	0
+323	-5	0
+324	-5	0
+325	-5	0
+326	-5	0
+327	-5	0
+328	-5	0
+329	-5	0
+330	-5	0
+331	-5	0
+332	-5	0
+333	-5	0
+334	-5	0
+335	-5	0
+336	-5	0
+337	-5	0
+338	-5	0
+339	-5	0
+340	-5	0
+341	-5	0
+342	-5	0
+343	-5	0
+344	-5	0
+345	-5	0
+346	-5	0
+347	-5	0
+348	-5	0
+349	-5	0
+350	-5	0
+351	-5	0
+352	-5	0
+353	-5	0
+354	-5	0
+355	-5	0
+356	-5	0
+357	-5	0
+358	-5	0
+359	-5	0
+360	-5	0
+0	-4.5	0
+1	-4.5	0
+2	-4.5	0
+3	-4.5	0
+4	-4.5	0
+5	-4.5	0
+6	-4.5	0
+7	-4.5	0
+8	-4.5	0
+9	-4.5	0
+10	-4.5	0
+11	-4.5	0
+12	-4.5	0
+13	-4.5	0
+14	-4.5	0
+15	-4.5	0
+16	-4.5	0
+17	-4.5	0
+18	-4.5	0
+19	-4.5	0
+20	-4.5	0
+21	-4.5	0
+22	-4.5	0
+23	-4.5	0
+24	-4.5	0
+25	-4.5	0
+26	-4.5	0
+27	-4.5	0
+28	-4.5	0
+29	-4.5	0
+30	-4.5	0
+31	-4.5	0
+32	-4.5	0
+33	-4.5	0
+34	-4.5	0
+35	-4.5	0
+36	-4.5	0
+37	-4.5	0
+38	-4.5	0
+39	-4.5	0
+40	-4.5	0
+41	-4.5	0
+42	-4.5	0
+43	-4.5	0
+44	-4.5	0
+45	-4.5	0
+46	-4.5	0
+47	-4.5	0
+48	-4.5	0
+49	-4.5	0
+50	-4.5	0
+51	-4.5	0
+52	-4.5	0
+53	-4.5	0
+54	-4.5	0
+55	-4.5	0
+56	-4.5	0
+57	-4.5	0
+58	-4.5	0
+59	-4.5	0
+60	-4.5	0
+61	-4.5	0
+62	-4.5	0
+63	-4.5	0
+64	-4.5	0
+65	-4.5	0
+66	-4.5	0
+67	-4.5	0
+68	-4.5	0
+69	-4.5	0
+70	-4.5	0
+71	-4.5	0
+72	-4.5	0
+73	-4.5	0
+74	-4.5	0
+75	-4.5	0
+76	-4.5	0
+77	-4.5	0
+78	-4.5	0
+79	-4.5	0
+80	-4.5	0
+81	-4.5	0
+82	-4.5	0
+83	-4.5	0
+84	-4.5	0
+85	-4.5	0
+86	-4.5	0
+87	-4.5	0
+88	-4.5	0
+89	-4.5	0
+90	-4.5	0
+91	-4.5	0
+92	-4.5	0
+93	-4.5	0
+94	-4.5	0
+95	-4.5	0
+96	-4.5	0
+97	-4.5	0
+98	-4.5	0
+99	-4.5	0
+100	-4.5	0
+101	-4.5	0
+102	-4.5	0
+103	-4.5	0
+104	-4.5	0
+105	-4.5	0
+106	-4.5	0
+107	-4.5	0
+108	-4.5	0
+109	-4.5	0
+110	-4.5	0
+111	-4.5	0
+112	-4.5	0
+113	-4.5	0
+114	-4.5	0
+115	-4.5	0
+116	-4.5	0
+117	-4.5	0
+118	-4.5	0
+119	-4.5	0
+120	-4.5	0
+121	-4.5	0
+122	-4.5	0
+123	-4.5	0
+124	-4.5	0
+125	-4.5	0
+126	-4.5	0
+127	-4.5	0
+128	-4.5	0
+129	-4.5	0
+130	-4.5	0
+131	-4.5	0
+132	-4.5	0
+133	-4.5	0
+134	-4.5	0
+135	-4.5	0
+136	-4.5	0
+137	-4.5	0
+138	-4.5	0
+139	-4.5	0
+140	-4.5	0
+141	-4.5	0
+142	-4.5	0
+143	-4.5	0
+144	-4.5	0
+145	-4.5	0
+146	-4.5	0
+147	-4.5	0
+148	-4.5	0
+149	-4.5	0
+150	-4.5	0
+151	-4.5	0
+152	-4.5	0
+153	-4.5	0
+154	-4.5	0
+155	-4.5	0
+156	-4.5	0
+157	-4.5	0
+158	-4.5	0
+159	-4.5	0
+160	-4.5	0
+161	-4.5	0
+162	-4.5	0
+163	-4.5	0
+164	-4.5	0
+165	-4.5	0
+166	-4.5	0
+167	-4.5	0
+168	-4.5	0
+169	-4.5	0
+170	-4.5	0
+171	-4.5	0
+172	-4.5	0
+173	-4.5	0
+174	-4.5	0
+175	-4.5	0
+176	-4.5	0
+177	-4.5	0
+178	-4.5	0
+179	-4.5	0
+180	-4.5	0
+181	-4.5	0
+182	-4.5	0
+183	-4.5	0
+184	-4.5	0
+185	-4.5	0
+186	-4.5	0
+187	-4.5	0
+188	-4.5	0
+189	-4.5	0
+190	-4.5	0
+191	-4.5	0
+192	-4.5	0
+193	-4.5	0
+194	-4.5	0
+195	-4.5	0
+196	-4.5	0
+197	-4.5	0
+198	-4.5	0
+199	-4.5	0
+200	-4.5	0
+201	-4.5	0
+202	-4.5	0
+203	-4.5	0
+204	-4.5	0
+205	-4.5	0
+206	-4.5	0
+207	-4.5	0
+208	-4.5	0
+209	-4.5	0
+210	-4.5	0
+211	-4.5	0
+212	-4.5	0
+213	-4.5	0
+214	-4.5	0
+215	-4.5	0
+216	-4.5	0
+217	-4.5	0
+218	-4.5	0
+219	-4.5	0
+220	-4.5	0
+221	-4.5	0
+222	-4.5	0
+223	-4.5	0
+224	-4.5	0
+225	-4.5	0
+226	-4.5	0
+227	-4.5	0
+228	-4.5	0
+229	-4.5	0
+230	-4.5	0
+231	-4.5	0
+232	-4.5	0
+233	-4.5	0
+234	-4.5	0
+235	-4.5	0
+236	-4.5	0
+237	-4.5	0
+238	-4.5	0
+239	-4.5	0
+240	-4.5	0
+241	-4.5	0
+242	-4.5	0
+243	-4.5	0
+244	-4.5	0
+245	-4.5	0
+246	-4.5	0
+247	-4.5	0
+248	-4.5	0
+249	-4.5	0
+250	-4.5	0
+251	-4.5	0
+252	-4.5	0
+253	-4.5	0
+254	-4.5	0
+255	-4.5	0
+256	-4.5	0
+257	-4.5	0
+258	-4.5	0
+259	-4.5	0
+260	-4.5	0
+261	-4.5	0
+262	-4.5	0
+263	-4.5	0
+264	-4.5	0
+265	-4.5	0
+266	-4.5	0
+267	-4.5	0
+268	-4.5	0
+269	-4.5	0
+270	-4.5	0
+271	-4.5	0
+272	-4.5	0
+273	-4.5	0
+274	-4.5	0
+275	-4.5	0
+276	-4.5	0
+277	-4.5	0
+278	-4.5	0
+279	-4.5	0
+280	-4.5	0
+281	-4.5	0
+282	-4.5	0
+283	-4.5	0
+284	-4.5	0
+285	-4.5	0
+286	-4.5	0
+287	-4.5	0
+288	-4.5	0
+289	-4.5	0
+290	-4.5	0
+291	-4.5	0
+292	-4.5	0
+293	-4.5	0
+294	-4.5	0
+295	-4.5	0
+296	-4.5	0
+297	-4.5	0
+298	-4.5	0
+299	-4.5	0
+300	-4.5	0
+301	-4.5	0
+302	-4.5	0
+303	-4.5	0
+304	-4.5	0
+305	-4.5	0
+306	-4.5	0
+307	-4.5	0
+308	-4.5	0
+309	-4.5	0
+310	-4.5	0
+311	-4.5	0
+312	-4.5	0
+313	-4.5	0
+314	-4.5	0
+315	-4.5	0
+316	-4.5	0
+317	-4.5	0
+318	-4.5	0
+319	-4.5	0
+320	-4.5	0
+321	-4.5	0
+322	-4.5	0
+323	-4.5	0
+324	-4.5	0
+325	-4.5	0
+326	-4.5	0
+327	-4.5	0
+328	-4.5	0
+329	-4.5	0
+330	-4.5	0
+331	-4.5	0
+332	-4.5	0
+333	-4.5	0
+334	-4.5	0
+335	-4.5	0
+336	-4.5	0
+337	-4.5	0
+338	-4.5	0
+339	-4.5	0
+340	-4.5	0
+341	-4.5	0
+342	-4.5	0
+343	-4.5	0
+344	-4.5	0
+345	-4.5	0
+346	-4.5	0
+347	-4.5	0
+348	-4.5	0
+349	-4.5	0
+350	-4.5	0
+351	-4.5	0
+352	-4.5	0
+353	-4.5	0
+354	-4.5	0
+355	-4.5	0
+356	-4.5	0
+357	-4.5	0
+358	-4.5	0
+359	-4.5	0
+360	-4.5	0
+0	-4	0
+1	-4	0
+2	-4	0
+3	-4	0
+4	-4	0
+5	-4	0
+6	-4	0
+7	-4	0
+8	-4	0
+9	-4	0
+10	-4	0
+11	-4	0
+12	-4	0
+13	-4	0
+14	-4	0
+15	-4	0
+16	-4	0
+17	-4	0
+18	-4	0
+19	-4	0
+20	-4	0
+21	-4	0
+22	-4	0
+23	-4	0
+24	-4	0
+25	-4	0
+26	-4	0
+27	-4	0
+28	-4	0
+29	-4	0
+30	-4	0
+31	-4	0
+32	-4	0
+33	-4	0
+34	-4	0
+35	-4	0
+36	-4	0
+37	-4	0
+38	-4	0
+39	-4	0
+40	-4	0
+41	-4	0
+42	-4	0
+43	-4	0
+44	-4	0
+45	-4	0
+46	-4	0
+47	-4	0
+48	-4	0
+49	-4	0
+50	-4	0
+51	-4	0
+52	-4	0
+53	-4	0
+54	-4	0
+55	-4	0
+56	-4	0
+57	-4	0
+58	-4	0
+59	-4	0
+60	-4	0
+61	-4	0
+62	-4	0
+63	-4	0
+64	-4	0
+65	-4	0
+66	-4	0
+67	-4	0
+68	-4	0
+69	-4	0
+70	-4	0
+71	-4	0
+72	-4	0
+73	-4	0
+74	-4	0
+75	-4	0
+76	-4	0
+77	-4	0
+78	-4	0
+79	-4	0
+80	-4	0
+81	-4	0
+82	-4	0
+83	-4	0
+84	-4	0
+85	-4	0
+86	-4	0
+87	-4	0
+88	-4	0
+89	-4	0
+90	-4	0
+91	-4	0
+92	-4	0
+93	-4	0
+94	-4	0
+95	-4	0
+96	-4	0
+97	-4	0
+98	-4	0
+99	-4	0
+100	-4	0
+101	-4	0
+102	-4	0
+103	-4	0
+104	-4	0
+105	-4	0
+106	-4	0
+107	-4	0
+108	-4	0
+109	-4	0
+110	-4	0
+111	-4	0
+112	-4	0
+113	-4	0
+114	-4	0
+115	-4	0
+116	-4	0
+117	-4	0
+118	-4	0
+119	-4	0
+120	-4	0
+121	-4	0
+122	-4	0
+123	-4	0
+124	-4	0
+125	-4	0
+126	-4	0
+127	-4	0
+128	-4	0
+129	-4	0
+130	-4	0
+131	-4	0
+132	-4	0
+133	-4	0
+134	-4	0
+135	-4	0
+136	-4	0
+137	-4	0
+138	-4	0
+139	-4	0
+140	-4	0
+141	-4	0
+142	-4	0
+143	-4	0
+144	-4	0
+145	-4	0
+146	-4	0
+147	-4	0
+148	-4	0
+149	-4	0
+150	-4	0
+151	-4	0
+152	-4	0
+153	-4	0
+154	-4	0
+155	-4	0
+156	-4	0
+157	-4	0
+158	-4	0
+159	-4	0
+160	-4	0
+161	-4	0
+162	-4	0
+163	-4	0
+164	-4	0
+165	-4	0
+166	-4	0
+167	-4	0
+168	-4	0
+169	-4	0
+170	-4	0
+171	-4	0
+172	-4	0
+173	-4	0
+174	-4	0
+175	-4	0
+176	-4	0
+177	-4	0
+178	-4	0
+179	-4	0
+180	-4	0
+181	-4	0
+182	-4	0
+183	-4	0
+184	-4	0
+185	-4	0
+186	-4	0
+187	-4	0
+188	-4	0
+189	-4	0
+190	-4	0
+191	-4	0
+192	-4	0
+193	-4	0
+194	-4	0
+195	-4	0
+196	-4	0
+197	-4	0
+198	-4	0
+199	-4	0
+200	-4	0
+201	-4	0
+202	-4	0
+203	-4	0
+204	-4	0
+205	-4	0
+206	-4	0
+207	-4	0
+208	-4	0
+209	-4	0
+210	-4	0
+211	-4	0
+212	-4	0
+213	-4	0
+214	-4	0
+215	-4	0
+216	-4	0
+217	-4	0
+218	-4	0
+219	-4	0
+220	-4	0
+221	-4	0
+222	-4	0
+223	-4	0
+224	-4	0
+225	-4	0
+226	-4	0
+227	-4	0
+228	-4	0
+229	-4	0
+230	-4	0
+231	-4	0
+232	-4	0
+233	-4	0
+234	-4	0
+235	-4	0
+236	-4	0
+237	-4	0
+238	-4	0
+239	-4	0
+240	-4	0
+241	-4	0
+242	-4	0
+243	-4	0
+244	-4	0
+245	-4	0
+246	-4	0
+247	-4	0
+248	-4	0
+249	-4	0
+250	-4	0
+251	-4	0
+252	-4	0
+253	-4	0
+254	-4	0
+255	-4	0
+256	-4	0
+257	-4	0
+258	-4	0
+259	-4	0
+260	-4	0
+261	-4	0
+262	-4	0
+263	-4	0
+264	-4	0
+265	-4	0
+266	-4	0
+267	-4	0
+268	-4	0
+269	-4	0
+270	-4	0
+271	-4	0
+272	-4	0
+273	-4	0
+274	-4	0
+275	-4	0
+276	-4	0
+277	-4	0
+278	-4	0
+279	-4	0
+280	-4	0
+281	-4	0
+282	-4	0
+283	-4	0
+284	-4	0
+285	-4	0
+286	-4	0
+287	-4	0
+288	-4	0
+289	-4	0
+290	-4	0
+291	-4	0
+292	-4	0
+293	-4	0
+294	-4	0
+295	-4	0
+296	-4	0
+297	-4	0
+298	-4	0
+299	-4	0
+300	-4	0
+301	-4	0
+302	-4	0
+303	-4	0
+304	-4	0
+305	-4	0
+306	-4	0
+307	-4	0
+308	-4	0
+309	-4	0
+310	-4	0
+311	-4	0
+312	-4	0
+313	-4	0
+314	-4	0
+315	-4	0
+316	-4	0
+317	-4	0
+318	-4	0
+319	-4	0
+320	-4	0
+321	-4	0
+322	-4	0
+323	-4	0
+324	-4	0
+325	-4	0
+326	-4	0
+327	-4	0
+328	-4	0
+329	-4	0
+330	-4	0
+331	-4	0
+332	-4	0
+333	-4	0
+334	-4	0
+335	-4	0
+336	-4	0
+337	-4	0
+338	-4	0
+339	-4	0
+340	-4	0
+341	-4	0
+342	-4	0
+343	-4	0
+344	-4	0
+345	-4	0
+346	-4	0
+347	-4	0
+348	-4	0
+349	-4	0
+350	-4	0
+351	-4	0
+352	-4	0
+353	-4	0
+354	-4	0
+355	-4	0
+356	-4	0
+357	-4	0
+358	-4	0
+359	-4	0
+360	-4	0
+0	-3.5	0
+1	-3.5	0
+2	-3.5	0
+3	-3.5	0
+4	-3.5	0
+5	-3.5	0
+6	-3.5	0
+7	-3.5	0
+8	-3.5	0
+9	-3.5	0
+10	-3.5	0
+11	-3.5	0
+12	-3.5	0
+13	-3.5	0
+14	-3.5	0
+15	-3.5	0
+16	-3.5	0
+17	-3.5	0
+18	-3.5	0
+19	-3.5	0
+20	-3.5	0
+21	-3.5	0
+22	-3.5	0
+23	-3.5	0
+24	-3.5	0
+25	-3.5	0
+26	-3.5	0
+27	-3.5	0
+28	-3.5	0
+29	-3.5	0
+30	-3.5	0
+31	-3.5	0
+32	-3.5	0
+33	-3.5	0
+34	-3.5	0
+35	-3.5	0
+36	-3.5	0
+37	-3.5	0
+38	-3.5	0
+39	-3.5	0
+40	-3.5	0
+41	-3.5	0
+42	-3.5	0
+43	-3.5	0
+44	-3.5	0
+45	-3.5	0
+46	-3.5	0
+47	-3.5	0
+48	-3.5	0
+49	-3.5	0
+50	-3.5	0
+51	-3.5	0
+52	-3.5	0
+53	-3.5	0
+54	-3.5	0
+55	-3.5	0
+56	-3.5	0
+57	-3.5	0
+58	-3.5	0
+59	-3.5	0
+60	-3.5	0
+61	-3.5	0
+62	-3.5	0
+63	-3.5	0
+64	-3.5	0
+65	-3.5	0
+66	-3.5	0
+67	-3.5	0
+68	-3.5	0
+69	-3.5	0
+70	-3.5	0
+71	-3.5	0
+72	-3.5	0
+73	-3.5	0
+74	-3.5	0
+75	-3.5	0
+76	-3.5	0
+77	-3.5	0
+78	-3.5	0
+79	-3.5	0
+80	-3.5	0
+81	-3.5	0
+82	-3.5	0
+83	-3.5	0
+84	-3.5	0
+85	-3.5	0
+86	-3.5	0
+87	-3.5	0
+88	-3.5	0
+89	-3.5	0
+90	-3.5	0
+91	-3.5	0
+92	-3.5	0
+93	-3.5	0
+94	-3.5	0
+95	-3.5	0
+96	-3.5	0
+97	-3.5	0
+98	-3.5	0
+99	-3.5	0
+100	-3.5	0
+101	-3.5	0
+102	-3.5	0
+103	-3.5	0
+104	-3.5	0
+105	-3.5	0
+106	-3.5	0
+107	-3.5	0
+108	-3.5	0
+109	-3.5	0
+110	-3.5	0
+111	-3.5	0
+112	-3.5	0
+113	-3.5	0
+114	-3.5	0
+115	-3.5	0
+116	-3.5	0
+117	-3.5	0
+118	-3.5	0
+119	-3.5	0
+120	-3.5	0
+121	-3.5	0
+122	-3.5	0
+123	-3.5	0
+124	-3.5	0
+125	-3.5	0
+126	-3.5	0
+127	-3.5	0
+128	-3.5	0
+129	-3.5	0
+130	-3.5	0
+131	-3.5	0
+132	-3.5	0
+133	-3.5	0
+134	-3.5	0
+135	-3.5	0
+136	-3.5	0
+137	-3.5	0
+138	-3.5	0
+139	-3.5	0
+140	-3.5	0
+141	-3.5	0
+142	-3.5	0
+143	-3.5	0
+144	-3.5	0
+145	-3.5	0
+146	-3.5	0
+147	-3.5	0
+148	-3.5	0
+149	-3.5	0
+150	-3.5	0
+151	-3.5	0
+152	-3.5	0
+153	-3.5	0
+154	-3.5	0
+155	-3.5	0
+156	-3.5	0
+157	-3.5	0
+158	-3.5	0
+159	-3.5	0
+160	-3.5	0
+161	-3.5	0
+162	-3.5	0
+163	-3.5	0
+164	-3.5	0
+165	-3.5	0
+166	-3.5	0
+167	-3.5	0
+168	-3.5	0
+169	-3.5	0
+170	-3.5	0
+171	-3.5	0
+172	-3.5	0
+173	-3.5	0
+174	-3.5	0
+175	-3.5	0
+176	-3.5	0
+177	-3.5	0
+178	-3.5	0
+179	-3.5	0
+180	-3.5	0
+181	-3.5	0
+182	-3.5	0
+183	-3.5	0
+184	-3.5	0
+185	-3.5	0
+186	-3.5	0
+187	-3.5	0
+188	-3.5	0
+189	-3.5	0
+190	-3.5	0
+191	-3.5	0
+192	-3.5	0
+193	-3.5	0
+194	-3.5	0
+195	-3.5	0
+196	-3.5	0
+197	-3.5	0
+198	-3.5	0
+199	-3.5	0
+200	-3.5	0
+201	-3.5	0
+202	-3.5	0
+203	-3.5	0
+204	-3.5	0
+205	-3.5	0
+206	-3.5	0
+207	-3.5	0
+208	-3.5	0
+209	-3.5	0
+210	-3.5	0
+211	-3.5	0
+212	-3.5	0
+213	-3.5	0
+214	-3.5	0
+215	-3.5	0
+216	-3.5	0
+217	-3.5	0
+218	-3.5	0
+219	-3.5	0
+220	-3.5	0
+221	-3.5	0
+222	-3.5	0
+223	-3.5	0
+224	-3.5	0
+225	-3.5	0
+226	-3.5	0
+227	-3.5	0
+228	-3.5	0
+229	-3.5	0
+230	-3.5	0
+231	-3.5	0
+232	-3.5	0
+233	-3.5	0
+234	-3.5	0
+235	-3.5	0
+236	-3.5	0
+237	-3.5	0
+238	-3.5	0
+239	-3.5	0
+240	-3.5	0
+241	-3.5	0
+242	-3.5	0
+243	-3.5	0
+244	-3.5	0
+245	-3.5	0
+246	-3.5	0
+247	-3.5	0
+248	-3.5	0
+249	-3.5	0
+250	-3.5	0
+251	-3.5	0
+252	-3.5	0
+253	-3.5	0
+254	-3.5	0
+255	-3.5	0
+256	-3.5	0
+257	-3.5	0
+258	-3.5	0
+259	-3.5	0
+260	-3.5	0
+261	-3.5	0
+262	-3.5	0
+263	-3.5	0
+264	-3.5	0
+265	-3.5	0
+266	-3.5	0
+267	-3.5	0
+268	-3.5	0
+269	-3.5	0
+270	-3.5	0
+271	-3.5	0
+272	-3.5	0
+273	-3.5	0
+274	-3.5	0
+275	-3.5	0
+276	-3.5	0
+277	-3.5	0
+278	-3.5	0
+279	-3.5	0
+280	-3.5	0
+281	-3.5	0
+282	-3.5	0
+283	-3.5	0
+284	-3.5	0
+285	-3.5	0
+286	-3.5	0
+287	-3.5	0
+288	-3.5	0
+289	-3.5	0
+290	-3.5	0
+291	-3.5	0
+292	-3.5	0
+293	-3.5	0
+294	-3.5	0
+295	-3.5	0
+296	-3.5	0
+297	-3.5	0
+298	-3.5	0
+299	-3.5	0
+300	-3.5	0
+301	-3.5	0
+302	-3.5	0
+303	-3.5	0
+304	-3.5	0
+305	-3.5	0
+306	-3.5	0
+307	-3.5	0
+308	-3.5	0
+309	-3.5	0
+310	-3.5	0
+311	-3.5	0
+312	-3.5	0
+313	-3.5	0
+314	-3.5	0
+315	-3.5	0
+316	-3.5	0
+317	-3.5	0
+318	-3.5	0
+319	-3.5	0
+320	-3.5	0
+321	-3.5	0
+322	-3.5	0
+323	-3.5	0
+324	-3.5	0
+325	-3.5	0
+326	-3.5	0
+327	-3.5	0
+328	-3.5	0
+329	-3.5	0
+330	-3.5	0
+331	-3.5	0
+332	-3.5	0
+333	-3.5	0
+334	-3.5	0
+335	-3.5	0
+336	-3.5	0
+337	-3.5	0
+338	-3.5	0
+339	-3.5	0
+340	-3.5	0
+341	-3.5	0
+342	-3.5	0
+343	-3.5	0
+344	-3.5	0
+345	-3.5	0
+346	-3.5	0
+347	-3.5	0
+348	-3.5	0
+349	-3.5	0
+350	-3.5	0
+351	-3.5	0
+352	-3.5	0
+353	-3.5	0
+354	-3.5	0
+355	-3.5	0
+356	-3.5	0
+357	-3.5	0
+358	-3.5	0
+359	-3.5	0
+360	-3.5	0
+0	-3	0
+1	-3	0
+2	-3	0
+3	-3	0
+4	-3	0
+5	-3	0
+6	-3	0
+7	-3	0
+8	-3	0
+9	-3	0
+10	-3	0
+11	-3	0
+12	-3	0
+13	-3	0
+14	-3	0
+15	-3	0
+16	-3	0
+17	-3	0
+18	-3	0
+19	-3	0
+20	-3	0
+21	-3	0
+22	-3	0
+23	-3	0
+24	-3	0
+25	-3	0
+26	-3	0
+27	-3	0
+28	-3	0
+29	-3	0
+30	-3	0
+31	-3	0
+32	-3	0
+33	-3	0
+34	-3	0
+35	-3	0
+36	-3	0
+37	-3	0
+38	-3	0
+39	-3	0
+40	-3	0
+41	-3	0
+42	-3	0
+43	-3	0
+44	-3	0
+45	-3	0
+46	-3	0
+47	-3	0
+48	-3	0
+49	-3	0
+50	-3	0
+51	-3	0
+52	-3	0
+53	-3	0
+54	-3	0
+55	-3	0
+56	-3	0
+57	-3	0
+58	-3	0
+59	-3	0
+60	-3	0
+61	-3	0
+62	-3	0
+63	-3	0
+64	-3	0
+65	-3	0
+66	-3	0
+67	-3	0
+68	-3	0
+69	-3	0
+70	-3	0
+71	-3	0
+72	-3	0
+73	-3	0
+74	-3	0
+75	-3	0
+76	-3	0
+77	-3	0
+78	-3	0
+79	-3	0
+80	-3	0
+81	-3	0
+82	-3	0
+83	-3	0
+84	-3	0
+85	-3	0
+86	-3	0
+87	-3	0
+88	-3	0
+89	-3	0
+90	-3	0
+91	-3	0
+92	-3	0
+93	-3	0
+94	-3	0
+95	-3	0
+96	-3	0
+97	-3	0
+98	-3	0
+99	-3	0
+100	-3	0
+101	-3	0
+102	-3	0
+103	-3	0
+104	-3	0
+105	-3	0
+106	-3	0
+107	-3	0
+108	-3	0
+109	-3	0
+110	-3	0
+111	-3	0
+112	-3	0
+113	-3	0
+114	-3	0
+115	-3	0
+116	-3	0
+117	-3	0
+118	-3	0
+119	-3	0
+120	-3	0
+121	-3	0
+122	-3	0
+123	-3	0
+124	-3	0
+125	-3	0
+126	-3	0
+127	-3	0
+128	-3	0
+129	-3	0
+130	-3	0
+131	-3	0
+132	-3	0
+133	-3	0
+134	-3	0
+135	-3	0
+136	-3	0
+137	-3	0
+138	-3	0
+139	-3	0
+140	-3	0
+141	-3	0
+142	-3	0
+143	-3	0
+144	-3	0
+145	-3	0
+146	-3	0
+147	-3	0
+148	-3	0
+149	-3	0
+150	-3	0
+151	-3	0
+152	-3	0
+153	-3	0
+154	-3	0
+155	-3	0
+156	-3	0
+157	-3	0
+158	-3	0
+159	-3	0
+160	-3	0
+161	-3	0
+162	-3	0
+163	-3	0
+164	-3	0
+165	-3	0
+166	-3	0
+167	-3	0
+168	-3	0
+169	-3	0
+170	-3	0
+171	-3	0
+172	-3	0
+173	-3	0
+174	-3	0
+175	-3	0
+176	-3	0
+177	-3	0
+178	-3	0
+179	-3	0
+180	-3	0
+181	-3	0
+182	-3	0
+183	-3	0
+184	-3	0
+185	-3	0
+186	-3	0
+187	-3	0
+188	-3	0
+189	-3	0
+190	-3	0
+191	-3	0
+192	-3	0
+193	-3	0
+194	-3	0
+195	-3	0
+196	-3	0
+197	-3	0
+198	-3	0
+199	-3	0
+200	-3	0
+201	-3	0
+202	-3	0
+203	-3	0
+204	-3	0
+205	-3	0
+206	-3	0
+207	-3	0
+208	-3	0
+209	-3	0
+210	-3	0
+211	-3	0
+212	-3	0
+213	-3	0
+214	-3	0
+215	-3	0
+216	-3	0
+217	-3	0
+218	-3	0
+219	-3	0
+220	-3	0
+221	-3	0
+222	-3	0
+223	-3	0
+224	-3	0
+225	-3	0
+226	-3	0
+227	-3	0
+228	-3	0
+229	-3	0
+230	-3	0
+231	-3	0
+232	-3	0
+233	-3	0
+234	-3	0
+235	-3	0
+236	-3	0
+237	-3	0
+238	-3	0
+239	-3	0
+240	-3	0
+241	-3	0
+242	-3	0
+243	-3	0
+244	-3	0
+245	-3	0
+246	-3	0
+247	-3	0
+248	-3	0
+249	-3	0
+250	-3	0
+251	-3	0
+252	-3	0
+253	-3	0
+254	-3	0
+255	-3	0
+256	-3	0
+257	-3	0
+258	-3	0
+259	-3	0
+260	-3	0
+261	-3	0
+262	-3	0
+263	-3	0
+264	-3	0
+265	-3	0
+266	-3	0
+267	-3	0
+268	-3	0
+269	-3	0
+270	-3	0
+271	-3	0
+272	-3	0
+273	-3	0
+274	-3	0
+275	-3	0
+276	-3	0
+277	-3	0
+278	-3	0
+279	-3	0
+280	-3	0
+281	-3	0
+282	-3	0
+283	-3	0
+284	-3	0
+285	-3	0
+286	-3	0
+287	-3	0
+288	-3	0
+289	-3	0
+290	-3	0
+291	-3	0
+292	-3	0
+293	-3	0
+294	-3	0
+295	-3	0
+296	-3	0
+297	-3	0
+298	-3	0
+299	-3	0
+300	-3	0
+301	-3	0
+302	-3	0
+303	-3	0
+304	-3	0
+305	-3	0
+306	-3	0
+307	-3	0
+308	-3	0
+309	-3	0
+310	-3	0
+311	-3	0
+312	-3	0
+313	-3	0
+314	-3	0
+315	-3	0
+316	-3	0
+317	-3	0
+318	-3	0
+319	-3	0
+320	-3	0
+321	-3	0
+322	-3	0
+323	-3	0
+324	-3	0
+325	-3	0
+326	-3	0
+327	-3	0
+328	-3	0
+329	-3	0
+330	-3	0
+331	-3	0
+332	-3	0
+333	-3	0
+334	-3	0
+335	-3	0
+336	-3	0
+337	-3	0
+338	-3	0
+339	-3	0
+340	-3	0
+341	-3	0
+342	-3	0
+343	-3	0
+344	-3	0
+345	-3	0
+346	-3	0
+347	-3	0
+348	-3	0
+349	-3	0
+350	-3	0
+351	-3	0
+352	-3	0
+353	-3	0
+354	-3	0
+355	-3	0
+356	-3	0
+357	-3	0
+358	-3	0
+359	-3	0
+360	-3	0
+0	-2.5	0
+1	-2.5	0
+2	-2.5	0
+3	-2.5	0
+4	-2.5	0
+5	-2.5	0
+6	-2.5	0
+7	-2.5	0
+8	-2.5	0
+9	-2.5	0
+10	-2.5	0
+11	-2.5	0
+12	-2.5	0
+13	-2.5	0
+14	-2.5	0
+15	-2.5	0
+16	-2.5	0
+17	-2.5	0
+18	-2.5	0
+19	-2.5	0
+20	-2.5	0
+21	-2.5	0
+22	-2.5	0
+23	-2.5	0
+24	-2.5	0
+25	-2.5	0
+26	-2.5	0
+27	-2.5	0
+28	-2.5	0
+29	-2.5	0
+30	-2.5	0
+31	-2.5	0
+32	-2.5	0
+33	-2.5	0
+34	-2.5	0
+35	-2.5	0
+36	-2.5	0
+37	-2.5	0
+38	-2.5	0
+39	-2.5	0
+40	-2.5	0
+41	-2.5	0
+42	-2.5	0
+43	-2.5	0
+44	-2.5	0
+45	-2.5	0
+46	-2.5	0
+47	-2.5	0
+48	-2.5	0
+49	-2.5	0
+50	-2.5	0
+51	-2.5	0
+52	-2.5	0
+53	-2.5	0
+54	-2.5	0
+55	-2.5	0
+56	-2.5	0
+57	-2.5	0
+58	-2.5	0
+59	-2.5	0
+60	-2.5	0
+61	-2.5	0
+62	-2.5	0
+63	-2.5	0
+64	-2.5	0
+65	-2.5	0
+66	-2.5	0
+67	-2.5	0
+68	-2.5	0
+69	-2.5	0
+70	-2.5	0
+71	-2.5	0
+72	-2.5	0
+73	-2.5	0
+74	-2.5	0
+75	-2.5	0
+76	-2.5	0
+77	-2.5	0
+78	-2.5	0
+79	-2.5	0
+80	-2.5	0
+81	-2.5	0
+82	-2.5	0
+83	-2.5	0
+84	-2.5	0
+85	-2.5	0
+86	-2.5	0
+87	-2.5	0
+88	-2.5	0
+89	-2.5	0
+90	-2.5	0
+91	-2.5	0
+92	-2.5	0
+93	-2.5	0
+94	-2.5	0
+95	-2.5	0
+96	-2.5	0
+97	-2.5	0
+98	-2.5	0
+99	-2.5	0
+100	-2.5	0
+101	-2.5	0
+102	-2.5	0
+103	-2.5	0
+104	-2.5	0
+105	-2.5	0
+106	-2.5	0
+107	-2.5	0
+108	-2.5	0
+109	-2.5	0
+110	-2.5	0
+111	-2.5	0
+112	-2.5	0
+113	-2.5	0
+114	-2.5	0
+115	-2.5	0
+116	-2.5	0
+117	-2.5	0
+118	-2.5	0
+119	-2.5	0
+120	-2.5	0
+121	-2.5	0
+122	-2.5	0
+123	-2.5	0
+124	-2.5	0
+125	-2.5	0
+126	-2.5	0
+127	-2.5	0
+128	-2.5	0
+129	-2.5	0
+130	-2.5	0
+131	-2.5	0
+132	-2.5	0
+133	-2.5	0
+134	-2.5	0
+135	-2.5	0
+136	-2.5	0
+137	-2.5	0
+138	-2.5	0
+139	-2.5	0
+140	-2.5	0
+141	-2.5	0
+142	-2.5	0
+143	-2.5	0
+144	-2.5	0
+145	-2.5	0
+146	-2.5	0
+147	-2.5	0
+148	-2.5	0
+149	-2.5	0
+150	-2.5	0
+151	-2.5	0
+152	-2.5	0
+153	-2.5	0
+154	-2.5	0
+155	-2.5	0
+156	-2.5	0
+157	-2.5	0
+158	-2.5	0
+159	-2.5	0
+160	-2.5	0
+161	-2.5	0
+162	-2.5	0
+163	-2.5	0
+164	-2.5	0
+165	-2.5	0
+166	-2.5	0
+167	-2.5	0
+168	-2.5	0
+169	-2.5	0
+170	-2.5	0
+171	-2.5	0
+172	-2.5	0
+173	-2.5	0
+174	-2.5	0
+175	-2.5	0
+176	-2.5	0
+177	-2.5	0
+178	-2.5	0
+179	-2.5	0
+180	-2.5	0
+181	-2.5	0
+182	-2.5	0
+183	-2.5	0
+184	-2.5	0
+185	-2.5	0
+186	-2.5	0
+187	-2.5	0
+188	-2.5	0
+189	-2.5	0
+190	-2.5	0
+191	-2.5	0
+192	-2.5	0
+193	-2.5	0
+194	-2.5	0
+195	-2.5	0
+196	-2.5	0
+197	-2.5	0
+198	-2.5	0
+199	-2.5	0
+200	-2.5	0
+201	-2.5	0
+202	-2.5	0
+203	-2.5	0
+204	-2.5	0
+205	-2.5	0
+206	-2.5	0
+207	-2.5	0
+208	-2.5	0
+209	-2.5	0
+210	-2.5	0
+211	-2.5	0
+212	-2.5	0
+213	-2.5	0
+214	-2.5	0
+215	-2.5	0
+216	-2.5	0
+217	-2.5	0
+218	-2.5	0
+219	-2.5	0
+220	-2.5	0
+221	-2.5	0
+222	-2.5	0
+223	-2.5	0
+224	-2.5	0
+225	-2.5	0
+226	-2.5	0
+227	-2.5	0
+228	-2.5	0
+229	-2.5	0
+230	-2.5	0
+231	-2.5	0
+232	-2.5	0
+233	-2.5	0
+234	-2.5	0
+235	-2.5	0
+236	-2.5	0
+237	-2.5	0
+238	-2.5	0
+239	-2.5	0
+240	-2.5	0
+241	-2.5	0
+242	-2.5	0
+243	-2.5	0
+244	-2.5	0
+245	-2.5	0
+246	-2.5	0
+247	-2.5	0
+248	-2.5	0
+249	-2.5	0
+250	-2.5	0
+251	-2.5	0
+252	-2.5	0
+253	-2.5	0
+254	-2.5	0
+255	-2.5	0
+256	-2.5	0
+257	-2.5	0
+258	-2.5	0
+259	-2.5	0
+260	-2.5	0
+261	-2.5	0
+262	-2.5	0
+263	-2.5	0
+264	-2.5	0
+265	-2.5	0
+266	-2.5	0
+267	-2.5	0
+268	-2.5	0
+269	-2.5	0
+270	-2.5	0
+271	-2.5	0
+272	-2.5	0
+273	-2.5	0
+274	-2.5	0
+275	-2.5	0
+276	-2.5	0
+277	-2.5	0
+278	-2.5	0
+279	-2.5	0
+280	-2.5	0
+281	-2.5	0
+282	-2.5	0
+283	-2.5	0
+284	-2.5	0
+285	-2.5	0
+286	-2.5	0
+287	-2.5	0
+288	-2.5	0
+289	-2.5	0
+290	-2.5	0
+291	-2.5	0
+292	-2.5	0
+293	-2.5	0
+294	-2.5	0
+295	-2.5	0
+296	-2.5	0
+297	-2.5	0
+298	-2.5	0
+299	-2.5	0
+300	-2.5	0
+301	-2.5	0
+302	-2.5	0
+303	-2.5	0
+304	-2.5	0
+305	-2.5	0
+306	-2.5	0
+307	-2.5	0
+308	-2.5	0
+309	-2.5	0
+310	-2.5	0
+311	-2.5	0
+312	-2.5	0
+313	-2.5	0
+314	-2.5	0
+315	-2.5	0
+316	-2.5	0
+317	-2.5	0
+318	-2.5	0
+319	-2.5	0
+320	-2.5	0
+321	-2.5	0
+322	-2.5	0
+323	-2.5	0
+324	-2.5	0
+325	-2.5	0
+326	-2.5	0
+327	-2.5	0
+328	-2.5	0
+329	-2.5	0
+330	-2.5	0
+331	-2.5	0
+332	-2.5	0
+333	-2.5	0
+334	-2.5	0
+335	-2.5	0
+336	-2.5	0
+337	-2.5	0
+338	-2.5	0
+339	-2.5	0
+340	-2.5	0
+341	-2.5	0
+342	-2.5	0
+343	-2.5	0
+344	-2.5	0
+345	-2.5	0
+346	-2.5	0
+347	-2.5	0
+348	-2.5	0
+349	-2.5	0
+350	-2.5	0
+351	-2.5	0
+352	-2.5	0
+353	-2.5	0
+354	-2.5	0
+355	-2.5	0
+356	-2.5	0
+357	-2.5	0
+358	-2.5	0
+359	-2.5	0
+360	-2.5	0
+0	-2	0
+1	-2	0
+2	-2	0
+3	-2	0
+4	-2	0
+5	-2	0
+6	-2	0
+7	-2	0
+8	-2	0
+9	-2	0
+10	-2	0
+11	-2	0
+12	-2	0
+13	-2	0
+14	-2	0
+15	-2	0
+16	-2	0
+17	-2	0
+18	-2	0
+19	-2	0
+20	-2	0
+21	-2	0
+22	-2	0
+23	-2	0
+24	-2	0
+25	-2	0
+26	-2	0
+27	-2	0
+28	-2	0
+29	-2	0
+30	-2	0
+31	-2	0
+32	-2	0
+33	-2	0
+34	-2	0
+35	-2	0
+36	-2	0
+37	-2	0
+38	-2	0
+39	-2	0
+40	-2	0
+41	-2	0
+42	-2	0
+43	-2	0
+44	-2	0
+45	-2	0
+46	-2	0
+47	-2	0
+48	-2	0
+49	-2	0
+50	-2	0
+51	-2	0
+52	-2	0
+53	-2	0
+54	-2	0
+55	-2	0
+56	-2	0
+57	-2	0
+58	-2	0
+59	-2	0
+60	-2	0
+61	-2	0
+62	-2	0
+63	-2	0
+64	-2	0
+65	-2	0
+66	-2	0
+67	-2	0
+68	-2	0
+69	-2	0
+70	-2	0
+71	-2	0
+72	-2	0
+73	-2	0
+74	-2	0
+75	-2	0
+76	-2	0
+77	-2	0
+78	-2	0
+79	-2	0
+80	-2	0
+81	-2	0
+82	-2	0
+83	-2	0
+84	-2	0
+85	-2	0
+86	-2	0
+87	-2	0
+88	-2	0
+89	-2	0
+90	-2	0
+91	-2	0
+92	-2	0
+93	-2	0
+94	-2	0
+95	-2	0
+96	-2	0
+97	-2	0
+98	-2	0
+99	-2	0
+100	-2	0
+101	-2	0
+102	-2	0
+103	-2	0
+104	-2	0
+105	-2	0
+106	-2	0
+107	-2	0
+108	-2	0
+109	-2	0
+110	-2	0
+111	-2	0
+112	-2	0
+113	-2	0
+114	-2	0
+115	-2	0
+116	-2	0
+117	-2	0
+118	-2	0
+119	-2	0
+120	-2	0
+121	-2	0
+122	-2	0
+123	-2	0
+124	-2	0
+125	-2	0
+126	-2	0
+127	-2	0
+128	-2	0
+129	-2	0
+130	-2	0
+131	-2	0
+132	-2	0
+133	-2	0
+134	-2	0
+135	-2	0
+136	-2	0
+137	-2	0
+138	-2	0
+139	-2	0
+140	-2	0
+141	-2	0
+142	-2	0
+143	-2	0
+144	-2	0
+145	-2	0
+146	-2	0
+147	-2	0
+148	-2	0
+149	-2	0
+150	-2	0
+151	-2	0
+152	-2	0
+153	-2	0
+154	-2	0
+155	-2	0
+156	-2	0
+157	-2	0
+158	-2	0
+159	-2	0
+160	-2	0
+161	-2	0
+162	-2	0
+163	-2	0
+164	-2	0
+165	-2	0
+166	-2	0
+167	-2	0
+168	-2	0
+169	-2	0
+170	-2	0
+171	-2	0
+172	-2	0
+173	-2	0
+174	-2	0
+175	-2	0
+176	-2	0
+177	-2	0
+178	-2	0
+179	-2	0
+180	-2	0
+181	-2	0
+182	-2	0
+183	-2	0
+184	-2	0
+185	-2	0
+186	-2	0
+187	-2	0
+188	-2	0
+189	-2	0
+190	-2	0
+191	-2	0
+192	-2	0
+193	-2	0
+194	-2	0
+195	-2	0
+196	-2	0
+197	-2	0
+198	-2	0
+199	-2	0
+200	-2	0
+201	-2	0
+202	-2	0
+203	-2	0
+204	-2	0
+205	-2	0
+206	-2	0
+207	-2	0
+208	-2	0
+209	-2	0
+210	-2	0
+211	-2	0
+212	-2	0
+213	-2	0
+214	-2	0
+215	-2	0
+216	-2	0
+217	-2	0
+218	-2	0
+219	-2	0
+220	-2	0
+221	-2	0
+222	-2	0
+223	-2	0
+224	-2	0
+225	-2	0
+226	-2	0
+227	-2	0
+228	-2	0
+229	-2	0
+230	-2	0
+231	-2	0
+232	-2	0
+233	-2	0
+234	-2	0
+235	-2	0
+236	-2	0
+237	-2	0
+238	-2	0
+239	-2	0
+240	-2	0
+241	-2	0
+242	-2	0
+243	-2	0
+244	-2	0
+245	-2	0
+246	-2	0
+247	-2	0
+248	-2	0
+249	-2	0
+250	-2	0
+251	-2	0
+252	-2	0
+253	-2	0
+254	-2	0
+255	-2	0
+256	-2	0
+257	-2	0
+258	-2	0
+259	-2	0
+260	-2	0
+261	-2	0
+262	-2	0
+263	-2	0
+264	-2	0
+265	-2	0
+266	-2	0
+267	-2	0
+268	-2	0
+269	-2	0
+270	-2	0
+271	-2	0
+272	-2	0
+273	-2	0
+274	-2	0
+275	-2	0
+276	-2	0
+277	-2	0
+278	-2	0
+279	-2	0
+280	-2	0
+281	-2	0
+282	-2	0
+283	-2	0
+284	-2	0
+285	-2	0
+286	-2	0
+287	-2	0
+288	-2	0
+289	-2	0
+290	-2	0
+291	-2	0
+292	-2	0
+293	-2	0
+294	-2	0
+295	-2	0
+296	-2	0
+297	-2	0
+298	-2	0
+299	-2	0
+300	-2	0
+301	-2	0
+302	-2	0
+303	-2	0
+304	-2	0
+305	-2	0
+306	-2	0
+307	-2	0
+308	-2	0
+309	-2	0
+310	-2	0
+311	-2	0
+312	-2	0
+313	-2	0
+314	-2	0
+315	-2	0
+316	-2	0
+317	-2	0
+318	-2	0
+319	-2	0
+320	-2	0
+321	-2	0
+322	-2	0
+323	-2	0
+324	-2	0
+325	-2	0
+326	-2	0
+327	-2	0
+328	-2	0
+329	-2	0
+330	-2	0
+331	-2	0
+332	-2	0
+333	-2	0
+334	-2	0
+335	-2	0
+336	-2	0
+337	-2	0
+338	-2	0
+339	-2	0
+340	-2	0
+341	-2	0
+342	-2	0
+343	-2	0
+344	-2	0
+345	-2	0
+346	-2	0
+347	-2	0
+348	-2	0
+349	-2	0
+350	-2	0
+351	-2	0
+352	-2	0
+353	-2	0
+354	-2	0
+355	-2	0
+356	-2	0
+357	-2	0
+358	-2	0
+359	-2	0
+360	-2	0
+0	-1.5	0
+1	-1.5	0
+2	-1.5	0
+3	-1.5	0
+4	-1.5	0
+5	-1.5	0
+6	-1.5	0
+7	-1.5	0
+8	-1.5	0
+9	-1.5	0
+10	-1.5	0
+11	-1.5	0
+12	-1.5	0
+13	-1.5	0
+14	-1.5	0
+15	-1.5	0
+16	-1.5	0
+17	-1.5	0
+18	-1.5	0
+19	-1.5	0
+20	-1.5	0
+21	-1.5	0
+22	-1.5	0
+23	-1.5	0
+24	-1.5	0
+25	-1.5	0
+26	-1.5	0
+27	-1.5	0
+28	-1.5	0
+29	-1.5	0
+30	-1.5	0
+31	-1.5	0
+32	-1.5	0
+33	-1.5	0
+34	-1.5	0
+35	-1.5	0
+36	-1.5	0
+37	-1.5	0
+38	-1.5	0
+39	-1.5	0
+40	-1.5	0
+41	-1.5	0
+42	-1.5	0
+43	-1.5	0
+44	-1.5	0
+45	-1.5	0
+46	-1.5	0
+47	-1.5	0
+48	-1.5	0
+49	-1.5	0
+50	-1.5	0
+51	-1.5	0
+52	-1.5	0
+53	-1.5	0
+54	-1.5	0
+55	-1.5	0
+56	-1.5	0
+57	-1.5	0
+58	-1.5	0
+59	-1.5	0
+60	-1.5	0
+61	-1.5	0
+62	-1.5	0
+63	-1.5	0
+64	-1.5	0
+65	-1.5	0
+66	-1.5	0
+67	-1.5	0
+68	-1.5	0
+69	-1.5	0
+70	-1.5	0
+71	-1.5	0
+72	-1.5	0
+73	-1.5	0
+74	-1.5	0
+75	-1.5	0
+76	-1.5	0
+77	-1.5	0
+78	-1.5	0
+79	-1.5	0
+80	-1.5	0
+81	-1.5	0
+82	-1.5	0
+83	-1.5	0
+84	-1.5	0
+85	-1.5	0
+86	-1.5	0
+87	-1.5	0
+88	-1.5	0
+89	-1.5	0
+90	-1.5	0
+91	-1.5	0
+92	-1.5	0
+93	-1.5	0
+94	-1.5	0
+95	-1.5	0
+96	-1.5	0
+97	-1.5	0
+98	-1.5	0
+99	-1.5	0
+100	-1.5	0
+101	-1.5	0
+102	-1.5	0
+103	-1.5	0
+104	-1.5	0
+105	-1.5	0
+106	-1.5	0
+107	-1.5	0
+108	-1.5	0
+109	-1.5	0
+110	-1.5	0
+111	-1.5	0
+112	-1.5	0
+113	-1.5	0
+114	-1.5	0
+115	-1.5	0
+116	-1.5	0
+117	-1.5	0
+118	-1.5	0
+119	-1.5	0
+120	-1.5	0
+121	-1.5	0
+122	-1.5	0
+123	-1.5	0
+124	-1.5	0
+125	-1.5	0
+126	-1.5	0
+127	-1.5	0
+128	-1.5	0
+129	-1.5	0
+130	-1.5	0
+131	-1.5	0
+132	-1.5	0
+133	-1.5	0
+134	-1.5	0
+135	-1.5	0
+136	-1.5	0
+137	-1.5	0
+138	-1.5	0
+139	-1.5	0
+140	-1.5	0
+141	-1.5	0
+142	-1.5	0
+143	-1.5	0
+144	-1.5	0
+145	-1.5	0
+146	-1.5	0
+147	-1.5	0
+148	-1.5	0
+149	-1.5	0
+150	-1.5	0
+151	-1.5	0
+152	-1.5	0
+153	-1.5	0
+154	-1.5	0
+155	-1.5	0
+156	-1.5	0
+157	-1.5	0
+158	-1.5	0
+159	-1.5	0
+160	-1.5	0
+161	-1.5	0
+162	-1.5	0
+163	-1.5	0
+164	-1.5	0
+165	-1.5	0
+166	-1.5	0
+167	-1.5	0
+168	-1.5	0
+169	-1.5	0
+170	-1.5	0
+171	-1.5	0
+172	-1.5	0
+173	-1.5	0
+174	-1.5	0
+175	-1.5	0
+176	-1.5	0
+177	-1.5	0
+178	-1.5	0
+179	-1.5	0
+180	-1.5	0
+181	-1.5	0
+182	-1.5	0
+183	-1.5	0
+184	-1.5	0
+185	-1.5	0
+186	-1.5	0
+187	-1.5	0
+188	-1.5	0
+189	-1.5	0
+190	-1.5	0
+191	-1.5	0
+192	-1.5	0
+193	-1.5	0
+194	-1.5	0
+195	-1.5	0
+196	-1.5	0
+197	-1.5	0
+198	-1.5	0
+199	-1.5	0
+200	-1.5	0
+201	-1.5	0
+202	-1.5	0
+203	-1.5	0
+204	-1.5	0
+205	-1.5	0
+206	-1.5	0
+207	-1.5	0
+208	-1.5	0
+209	-1.5	0
+210	-1.5	0
+211	-1.5	0
+212	-1.5	0
+213	-1.5	0
+214	-1.5	0
+215	-1.5	0
+216	-1.5	0
+217	-1.5	0
+218	-1.5	0
+219	-1.5	0
+220	-1.5	0
+221	-1.5	0
+222	-1.5	0
+223	-1.5	0
+224	-1.5	0
+225	-1.5	0
+226	-1.5	0
+227	-1.5	0
+228	-1.5	0
+229	-1.5	0
+230	-1.5	0
+231	-1.5	0
+232	-1.5	0
+233	-1.5	0
+234	-1.5	0
+235	-1.5	0
+236	-1.5	0
+237	-1.5	0
+238	-1.5	0
+239	-1.5	0
+240	-1.5	0
+241	-1.5	0
+242	-1.5	0
+243	-1.5	0
+244	-1.5	0
+245	-1.5	0
+246	-1.5	0
+247	-1.5	0
+248	-1.5	0
+249	-1.5	0
+250	-1.5	0
+251	-1.5	0
+252	-1.5	0
+253	-1.5	0
+254	-1.5	0
+255	-1.5	0
+256	-1.5	0
+257	-1.5	0
+258	-1.5	0
+259	-1.5	0
+260	-1.5	0
+261	-1.5	0
+262	-1.5	0
+263	-1.5	0
+264	-1.5	0
+265	-1.5	0
+266	-1.5	0
+267	-1.5	0
+268	-1.5	0
+269	-1.5	0
+270	-1.5	0
+271	-1.5	0
+272	-1.5	0
+273	-1.5	0
+274	-1.5	0
+275	-1.5	0
+276	-1.5	0
+277	-1.5	0
+278	-1.5	0
+279	-1.5	0
+280	-1.5	0
+281	-1.5	0
+282	-1.5	0
+283	-1.5	0
+284	-1.5	0
+285	-1.5	0
+286	-1.5	0
+287	-1.5	0
+288	-1.5	0
+289	-1.5	0
+290	-1.5	0
+291	-1.5	0
+292	-1.5	0
+293	-1.5	0
+294	-1.5	0
+295	-1.5	0
+296	-1.5	0
+297	-1.5	0
+298	-1.5	0
+299	-1.5	0
+300	-1.5	0
+301	-1.5	0
+302	-1.5	0
+303	-1.5	0
+304	-1.5	0
+305	-1.5	0
+306	-1.5	0
+307	-1.5	0
+308	-1.5	0
+309	-1.5	0
+310	-1.5	0
+311	-1.5	0
+312	-1.5	0
+313	-1.5	0
+314	-1.5	0
+315	-1.5	0
+316	-1.5	0
+317	-1.5	0
+318	-1.5	0
+319	-1.5	0
+320	-1.5	0
+321	-1.5	0
+322	-1.5	0
+323	-1.5	0
+324	-1.5	0
+325	-1.5	0
+326	-1.5	0
+327	-1.5	0
+328	-1.5	0
+329	-1.5	0
+330	-1.5	0
+331	-1.5	0
+332	-1.5	0
+333	-1.5	0
+334	-1.5	0
+335	-1.5	0
+336	-1.5	0
+337	-1.5	0
+338	-1.5	0
+339	-1.5	0
+340	-1.5	0
+341	-1.5	0
+342	-1.5	0
+343	-1.5	0
+344	-1.5	0
+345	-1.5	0
+346	-1.5	0
+347	-1.5	0
+348	-1.5	0
+349	-1.5	0
+350	-1.5	0
+351	-1.5	0
+352	-1.5	0
+353	-1.5	0
+354	-1.5	0
+355	-1.5	0
+356	-1.5	0
+357	-1.5	0
+358	-1.5	0
+359	-1.5	0
+360	-1.5	0
+0	-1	0
+1	-1	0
+2	-1	0
+3	-1	0
+4	-1	0
+5	-1	0
+6	-1	0
+7	-1	0
+8	-1	0
+9	-1	0
+10	-1	0
+11	-1	0
+12	-1	0
+13	-1	0
+14	-1	0
+15	-1	0
+16	-1	0
+17	-1	0
+18	-1	0
+19	-1	0
+20	-1	0
+21	-1	0
+22	-1	0
+23	-1	0
+24	-1	0
+25	-1	0
+26	-1	0
+27	-1	0
+28	-1	0
+29	-1	0
+30	-1	0
+31	-1	0
+32	-1	0
+33	-1	0
+34	-1	0
+35	-1	0
+36	-1	0
+37	-1	0
+38	-1	0
+39	-1	0
+40	-1	0
+41	-1	0
+42	-1	0
+43	-1	0
+44	-1	0
+45	-1	0
+46	-1	0
+47	-1	0
+48	-1	0
+49	-1	0
+50	-1	0
+51	-1	0
+52	-1	0
+53	-1	0
+54	-1	0
+55	-1	0
+56	-1	0
+57	-1	0
+58	-1	0
+59	-1	0
+60	-1	0
+61	-1	0
+62	-1	0
+63	-1	0
+64	-1	0
+65	-1	0
+66	-1	0
+67	-1	0
+68	-1	0
+69	-1	0
+70	-1	0
+71	-1	0
+72	-1	0
+73	-1	0
+74	-1	0
+75	-1	0
+76	-1	0
+77	-1	0
+78	-1	0
+79	-1	0
+80	-1	0
+81	-1	0
+82	-1	0
+83	-1	0
+84	-1	0
+85	-1	0
+86	-1	0
+87	-1	0
+88	-1	0
+89	-1	0
+90	-1	0
+91	-1	0
+92	-1	0
+93	-1	0
+94	-1	0
+95	-1	0
+96	-1	0
+97	-1	0
+98	-1	0
+99	-1	0
+100	-1	0
+101	-1	0
+102	-1	0
+103	-1	0
+104	-1	0
+105	-1	0
+106	-1	0
+107	-1	0
+108	-1	0
+109	-1	0
+110	-1	0
+111	-1	0
+112	-1	0
+113	-1	0
+114	-1	0
+115	-1	0
+116	-1	0
+117	-1	0
+118	-1	0
+119	-1	0
+120	-1	0
+121	-1	0
+122	-1	0
+123	-1	0
+124	-1	0
+125	-1	0
+126	-1	0
+127	-1	0
+128	-1	0
+129	-1	0
+130	-1	0
+131	-1	0
+132	-1	0
+133	-1	0
+134	-1	0
+135	-1	0
+136	-1	0
+137	-1	0
+138	-1	0
+139	-1	0
+140	-1	0
+141	-1	0
+142	-1	0
+143	-1	0
+144	-1	0
+145	-1	0
+146	-1	0
+147	-1	0
+148	-1	0
+149	-1	0
+150	-1	0
+151	-1	0
+152	-1	0
+153	-1	0
+154	-1	0
+155	-1	0
+156	-1	0
+157	-1	0
+158	-1	0
+159	-1	0
+160	-1	0
+161	-1	0
+162	-1	0
+163	-1	0
+164	-1	0
+165	-1	0
+166	-1	0
+167	-1	0
+168	-1	0
+169	-1	0
+170	-1	0
+171	-1	0
+172	-1	0
+173	-1	0
+174	-1	0
+175	-1	0
+176	-1	0
+177	-1	0
+178	-1	0
+179	-1	0
+180	-1	0
+181	-1	0
+182	-1	0
+183	-1	0
+184	-1	0
+185	-1	0
+186	-1	0
+187	-1	0
+188	-1	0
+189	-1	0
+190	-1	0
+191	-1	0
+192	-1	0
+193	-1	0
+194	-1	0
+195	-1	0
+196	-1	0
+197	-1	0
+198	-1	0
+199	-1	0
+200	-1	0
+201	-1	0
+202	-1	0
+203	-1	0
+204	-1	0
+205	-1	0
+206	-1	0
+207	-1	0
+208	-1	0
+209	-1	0
+210	-1	0
+211	-1	0
+212	-1	0
+213	-1	0
+214	-1	0
+215	-1	0
+216	-1	0
+217	-1	0
+218	-1	0
+219	-1	0
+220	-1	0
+221	-1	0
+222	-1	0
+223	-1	0
+224	-1	0
+225	-1	0
+226	-1	0
+227	-1	0
+228	-1	0
+229	-1	0
+230	-1	0
+231	-1	0
+232	-1	0
+233	-1	0
+234	-1	0
+235	-1	0
+236	-1	0
+237	-1	0
+238	-1	0
+239	-1	0
+240	-1	0
+241	-1	0
+242	-1	0
+243	-1	0
+244	-1	0
+245	-1	0
+246	-1	0
+247	-1	0
+248	-1	0
+249	-1	0
+250	-1	0
+251	-1	0
+252	-1	0
+253	-1	0
+254	-1	0
+255	-1	0
+256	-1	0
+257	-1	0
+258	-1	0
+259	-1	0
+260	-1	0
+261	-1	0
+262	-1	0
+263	-1	0
+264	-1	0
+265	-1	0
+266	-1	0
+267	-1	0
+268	-1	0
+269	-1	0
+270	-1	0
+271	-1	0
+272	-1	0
+273	-1	0
+274	-1	0
+275	-1	0
+276	-1	0
+277	-1	0
+278	-1	0
+279	-1	0
+280	-1	0
+281	-1	0
+282	-1	0
+283	-1	0
+284	-1	0
+285	-1	0
+286	-1	0
+287	-1	0
+288	-1	0
+289	-1	0
+290	-1	0
+291	-1	0
+292	-1	0
+293	-1	0
+294	-1	0
+295	-1	0
+296	-1	0
+297	-1	0
+298	-1	0
+299	-1	0
+300	-1	0
+301	-1	0
+302	-1	0
+303	-1	0
+304	-1	0
+305	-1	0
+306	-1	0
+307	-1	0
+308	-1	0
+309	-1	0
+310	-1	0
+311	-1	0
+312	-1	0
+313	-1	0
+314	-1	0
+315	-1	0
+316	-1	0
+317	-1	0
+318	-1	0
+319	-1	0
+320	-1	0
+321	-1	0
+322	-1	0
+323	-1	0
+324	-1	0
+325	-1	0
+326	-1	0
+327	-1	0
+328	-1	0
+329	-1	0
+330	-1	0
+331	-1	0
+332	-1	0
+333	-1	0
+334	-1	0
+335	-1	0
+336	-1	0
+337	-1	0
+338	-1	0
+339	-1	0
+340	-1	0
+341	-1	0
+342	-1	0
+343	-1	0
+344	-1	0
+345	-1	0
+346	-1	0
+347	-1	0
+348	-1	0
+349	-1	0
+350	-1	0
+351	-1	0
+352	-1	0
+353	-1	0
+354	-1	0
+355	-1	0
+356	-1	0
+357	-1	0
+358	-1	0
+359	-1	0
+360	-1	0
+0	-0.5	0
+1	-0.5	0
+2	-0.5	0
+3	-0.5	0
+4	-0.5	0
+5	-0.5	0
+6	-0.5	0
+7	-0.5	0
+8	-0.5	0
+9	-0.5	0
+10	-0.5	0
+11	-0.5	0
+12	-0.5	0
+13	-0.5	0
+14	-0.5	0
+15	-0.5	0
+16	-0.5	0
+17	-0.5	0
+18	-0.5	0
+19	-0.5	0
+20	-0.5	0
+21	-0.5	0
+22	-0.5	0
+23	-0.5	0
+24	-0.5	0
+25	-0.5	0
+26	-0.5	0
+27	-0.5	0
+28	-0.5	0
+29	-0.5	0
+30	-0.5	0
+31	-0.5	0
+32	-0.5	0
+33	-0.5	0
+34	-0.5	0
+35	-0.5	0
+36	-0.5	0
+37	-0.5	0
+38	-0.5	0
+39	-0.5	0
+40	-0.5	0
+41	-0.5	0
+42	-0.5	0
+43	-0.5	0
+44	-0.5	0
+45	-0.5	0
+46	-0.5	0
+47	-0.5	0
+48	-0.5	0
+49	-0.5	0
+50	-0.5	0
+51	-0.5	0
+52	-0.5	0
+53	-0.5	0
+54	-0.5	0
+55	-0.5	0
+56	-0.5	0
+57	-0.5	0
+58	-0.5	0
+59	-0.5	0
+60	-0.5	0
+61	-0.5	0
+62	-0.5	0
+63	-0.5	0
+64	-0.5	0
+65	-0.5	0
+66	-0.5	0
+67	-0.5	0
+68	-0.5	0
+69	-0.5	0
+70	-0.5	0
+71	-0.5	0
+72	-0.5	0
+73	-0.5	0
+74	-0.5	0
+75	-0.5	0
+76	-0.5	0
+77	-0.5	0
+78	-0.5	0
+79	-0.5	0
+80	-0.5	0
+81	-0.5	0
+82	-0.5	0
+83	-0.5	0
+84	-0.5	0
+85	-0.5	0
+86	-0.5	0
+87	-0.5	0
+88	-0.5	0
+89	-0.5	0
+90	-0.5	0
+91	-0.5	0
+92	-0.5	0
+93	-0.5	0
+94	-0.5	0
+95	-0.5	0
+96	-0.5	0
+97	-0.5	0
+98	-0.5	0
+99	-0.5	0
+100	-0.5	0
+101	-0.5	0
+102	-0.5	0
+103	-0.5	0
+104	-0.5	0
+105	-0.5	0
+106	-0.5	0
+107	-0.5	0
+108	-0.5	0
+109	-0.5	0
+110	-0.5	0
+111	-0.5	0
+112	-0.5	0
+113	-0.5	0
+114	-0.5	0
+115	-0.5	0
+116	-0.5	0
+117	-0.5	0
+118	-0.5	0
+119	-0.5	0
+120	-0.5	0
+121	-0.5	0
+122	-0.5	0
+123	-0.5	0
+124	-0.5	0
+125	-0.5	0
+126	-0.5	0
+127	-0.5	0
+128	-0.5	0
+129	-0.5	0
+130	-0.5	0
+131	-0.5	0
+132	-0.5	0
+133	-0.5	0
+134	-0.5	0
+135	-0.5	0
+136	-0.5	0
+137	-0.5	0
+138	-0.5	0
+139	-0.5	0
+140	-0.5	0
+141	-0.5	0
+142	-0.5	0
+143	-0.5	0
+144	-0.5	0
+145	-0.5	0
+146	-0.5	0
+147	-0.5	0
+148	-0.5	0
+149	-0.5	0
+150	-0.5	0
+151	-0.5	0
+152	-0.5	0
+153	-0.5	0
+154	-0.5	0
+155	-0.5	0
+156	-0.5	0
+157	-0.5	0
+158	-0.5	0
+159	-0.5	0
+160	-0.5	0
+161	-0.5	0
+162	-0.5	0
+163	-0.5	0
+164	-0.5	0
+165	-0.5	0
+166	-0.5	0
+167	-0.5	0
+168	-0.5	0
+169	-0.5	0
+170	-0.5	0
+171	-0.5	0
+172	-0.5	0
+173	-0.5	0
+174	-0.5	0
+175	-0.5	0
+176	-0.5	0
+177	-0.5	0
+178	-0.5	0
+179	-0.5	0
+180	-0.5	0
+181	-0.5	0
+182	-0.5	0
+183	-0.5	0
+184	-0.5	0
+185	-0.5	0
+186	-0.5	0
+187	-0.5	0
+188	-0.5	0
+189	-0.5	0
+190	-0.5	0
+191	-0.5	0
+192	-0.5	0
+193	-0.5	0
+194	-0.5	0
+195	-0.5	0
+196	-0.5	0
+197	-0.5	0
+198	-0.5	0
+199	-0.5	0
+200	-0.5	0
+201	-0.5	0
+202	-0.5	0
+203	-0.5	0
+204	-0.5	0
+205	-0.5	0
+206	-0.5	0
+207	-0.5	0
+208	-0.5	0
+209	-0.5	0
+210	-0.5	0
+211	-0.5	0
+212	-0.5	0
+213	-0.5	0
+214	-0.5	0
+215	-0.5	0
+216	-0.5	0
+217	-0.5	0
+218	-0.5	0
+219	-0.5	0
+220	-0.5	0
+221	-0.5	0
+222	-0.5	0
+223	-0.5	0
+224	-0.5	0
+225	-0.5	0
+226	-0.5	0
+227	-0.5	0
+228	-0.5	0
+229	-0.5	0
+230	-0.5	0
+231	-0.5	0
+232	-0.5	0
+233	-0.5	0
+234	-0.5	0
+235	-0.5	0
+236	-0.5	0
+237	-0.5	0
+238	-0.5	0
+239	-0.5	0
+240	-0.5	0
+241	-0.5	0
+242	-0.5	0
+243	-0.5	0
+244	-0.5	0
+245	-0.5	0
+246	-0.5	0
+247	-0.5	0
+248	-0.5	0
+249	-0.5	0
+250	-0.5	0
+251	-0.5	0
+252	-0.5	0
+253	-0.5	0
+254	-0.5	0
+255	-0.5	0
+256	-0.5	0
+257	-0.5	0
+258	-0.5	0
+259	-0.5	0
+260	-0.5	0
+261	-0.5	0
+262	-0.5	0
+263	-0.5	0
+264	-0.5	0
+265	-0.5	0
+266	-0.5	0
+267	-0.5	0
+268	-0.5	0
+269	-0.5	0
+270	-0.5	0
+271	-0.5	0
+272	-0.5	0
+273	-0.5	0
+274	-0.5	0
+275	-0.5	0
+276	-0.5	0
+277	-0.5	0
+278	-0.5	0
+279	-0.5	0
+280	-0.5	0
+281	-0.5	0
+282	-0.5	0
+283	-0.5	0
+284	-0.5	0
+285	-0.5	0
+286	-0.5	0
+287	-0.5	0
+288	-0.5	0
+289	-0.5	0
+290	-0.5	0
+291	-0.5	0
+292	-0.5	0
+293	-0.5	0
+294	-0.5	0
+295	-0.5	0
+296	-0.5	0
+297	-0.5	0
+298	-0.5	0
+299	-0.5	0
+300	-0.5	0
+301	-0.5	0
+302	-0.5	0
+303	-0.5	0
+304	-0.5	0
+305	-0.5	0
+306	-0.5	0
+307	-0.5	0
+308	-0.5	0
+309	-0.5	0
+310	-0.5	0
+311	-0.5	0
+312	-0.5	0
+313	-0.5	0
+314	-0.5	0
+315	-0.5	0
+316	-0.5	0
+317	-0.5	0
+318	-0.5	0
+319	-0.5	0
+320	-0.5	0
+321	-0.5	0
+322	-0.5	0
+323	-0.5	0
+324	-0.5	0
+325	-0.5	0
+326	-0.5	0
+327	-0.5	0
+328	-0.5	0
+329	-0.5	0
+330	-0.5	0
+331	-0.5	0
+332	-0.5	0
+333	-0.5	0
+334	-0.5	0
+335	-0.5	0
+336	-0.5	0
+337	-0.5	0
+338	-0.5	0
+339	-0.5	0
+340	-0.5	0
+341	-0.5	0
+342	-0.5	0
+343	-0.5	0
+344	-0.5	0
+345	-0.5	0
+346	-0.5	0
+347	-0.5	0
+348	-0.5	0
+349	-0.5	0
+350	-0.5	0
+351	-0.5	0
+352	-0.5	0
+353	-0.5	0
+354	-0.5	0
+355	-0.5	0
+356	-0.5	0
+357	-0.5	0
+358	-0.5	0
+359	-0.5	0
+360	-0.5	0
+0	0	0
+1	0	0
+2	0	0
+3	0	0
+4	0	0
+5	0	0
+6	0	0
+7	0	0
+8	0	0
+9	0	0
+10	0	0
+11	0	0
+12	0	0
+13	0	0
+14	0	0
+15	0	0
+16	0	0
+17	0	0
+18	0	0
+19	0	0
+20	0	0
+21	0	0
+22	0	0
+23	0	0
+24	0	0
+25	0	0
+26	0	0
+27	0	0
+28	0	0
+29	0	0
+30	0	0
+31	0	0
+32	0	0
+33	0	0
+34	0	0
+35	0	0
+36	0	0
+37	0	0
+38	0	0
+39	0	0
+40	0	0
+41	0	0
+42	0	0
+43	0	0
+44	0	0
+45	0	0
+46	0	0
+47	0	0
+48	0	0
+49	0	0
+50	0	0
+51	0	0
+52	0	0
+53	0	0
+54	0	0
+55	0	0
+56	0	0
+57	0	0
+58	0	0
+59	0	0
+60	0	0
+61	0	0
+62	0	0
+63	0	0
+64	0	0
+65	0	0
+66	0	0
+67	0	0
+68	0	0
+69	0	0
+70	0	0
+71	0	0
+72	0	0
+73	0	0
+74	0	0
+75	0	0
+76	0	0
+77	0	0
+78	0	0
+79	0	0
+80	0	0
+81	0	0
+82	0	0
+83	0	0
+84	0	0
+85	0	0
+86	0	0
+87	0	0
+88	0	0
+89	0	0
+90	0	0
+91	0	0
+92	0	0
+93	0	0
+94	0	0
+95	0	0
+96	0	0
+97	0	0
+98	0	0
+99	0	0
+100	0	0
+101	0	0
+102	0	0
+103	0	0
+104	0	0
+105	0	0
+106	0	0
+107	0	0
+108	0	0
+109	0	0
+110	0	0
+111	0	0
+112	0	0
+113	0	0
+114	0	0
+115	0	0
+116	0	0
+117	0	0
+118	0	0
+119	0	0
+120	0	0
+121	0	0
+122	0	0
+123	0	0
+124	0	0
+125	0	0
+126	0	0
+127	0	0
+128	0	0
+129	0	0
+130	0	0
+131	0	0
+132	0	0
+133	0	0
+134	0	0
+135	0	0
+136	0	0
+137	0	0
+138	0	0
+139	0	0
+140	0	0
+141	0	0
+142	0	0
+143	0	0
+144	0	0
+145	0	0
+146	0	0
+147	0	0
+148	0	0
+149	0	0
+150	0	0
+151	0	0
+152	0	0
+153	0	0
+154	0	0
+155	0	0
+156	0	0
+157	0	0
+158	0	0
+159	0	0
+160	0	0
+161	0	0
+162	0	0
+163	0	0
+164	0	0
+165	0	0
+166	0	0
+167	0	0
+168	0	0
+169	0	0
+170	0	0
+171	0	0
+172	0	0
+173	0	0
+174	0	0
+175	0	0
+176	0	0
+177	0	0
+178	0	0
+179	0	0
+180	0	0
+181	0	0
+182	0	0
+183	0	0
+184	0	0
+185	0	0
+186	0	0
+187	0	0
+188	0	0
+189	0	0
+190	0	0
+191	0	0
+192	0	0
+193	0	0
+194	0	0
+195	0	0
+196	0	0
+197	0	0
+198	0	0
+199	0	0
+200	0	0
+201	0	0
+202	0	0
+203	0	0
+204	0	0
+205	0	0
+206	0	0
+207	0	0
+208	0	0
+209	0	0
+210	0	0
+211	0	0
+212	0	0
+213	0	0
+214	0	0
+215	0	0
+216	0	0
+217	0	0
+218	0	0
+219	0	0
+220	0	0
+221	0	0
+222	0	0
+223	0	0
+224	0	0
+225	0	0
+226	0	0
+227	0	0
+228	0	0
+229	0	0
+230	0	0
+231	0	0
+232	0	0
+233	0	0
+234	0	0
+235	0	0
+236	0	0
+237	0	0
+238	0	0
+239	0	0
+240	0	0
+241	0	0
+242	0	0
+243	0	0
+244	0	0
+245	0	0
+246	0	0
+247	0	0
+248	0	0
+249	0	0
+250	0	0
+251	0	0
+252	0	0
+253	0	0
+254	0	0
+255	0	0
+256	0	0
+257	0	0
+258	0	0
+259	0	0
+260	0	0
+261	0	0
+262	0	0
+263	0	0
+264	0	0
+265	0	0
+266	0	0
+267	0	0
+268	0	0
+269	0	0
+270	0	0
+271	0	0
+272	0	0
+273	0	0
+274	0	0
+275	0	0
+276	0	0
+277	0	0
+278	0	0
+279	0	0
+280	0	0
+281	0	0
+282	0	0
+283	0	0
+284	0	0
+285	0	0
+286	0	0
+287	0	0
+288	0	0
+289	0	0
+290	0	0
+291	0	0
+292	0	0
+293	0	0
+294	0	0
+295	0	0
+296	0	0
+297	0	0
+298	0	0
+299	0	0
+300	0	0
+301	0	0
+302	0	0
+303	0	0
+304	0	0
+305	0	0
+306	0	0
+307	0	0
+308	0	0
+309	0	0
+310	0	0
+311	0	0
+312	0	0
+313	0	0
+314	0	0
+315	0	0
+316	0	0
+317	0	0
+318	0	0
+319	0	0
+320	0	0
+321	0	0
+322	0	0
+323	0	0
+324	0	0
+325	0	0
+326	0	0
+327	0	0
+328	0	0
+329	0	0
+330	0	0
+331	0	0
+332	0	0
+333	0	0
+334	0	0
+335	0	0
+336	0	0
+337	0	0
+338	0	0
+339	0	0
+340	0	0
+341	0	0
+342	0	0
+343	0	0
+344	0	0
+345	0	0
+346	0	0
+347	0	0
+348	0	0
+349	0	0
+350	0	0
+351	0	0
+352	0	0
+353	0	0
+354	0	0
+355	0	0
+356	0	0
+357	0	0
+358	0	0
+359	0	0
+360	0	0
+0	0.5	0
+1	0.5	0
+2	0.5	0
+3	0.5	0
+4	0.5	0
+5	0.5	0
+6	0.5	0
+7	0.5	0
+8	0.5	0
+9	0.5	0
+10	0.5	0
+11	0.5	0
+12	0.5	0
+13	0.5	0
+14	0.5	0
+15	0.5	0
+16	0.5	0
+17	0.5	0
+18	0.5	0
+19	0.5	0
+20	0.5	0
+21	0.5	0
+22	0.5	0
+23	0.5	0
+24	0.5	0
+25	0.5	0
+26	0.5	0
+27	0.5	0
+28	0.5	0
+29	0.5	0
+30	0.5	0
+31	0.5	0
+32	0.5	0
+33	0.5	0
+34	0.5	0
+35	0.5	0
+36	0.5	0
+37	0.5	0
+38	0.5	0
+39	0.5	0
+40	0.5	0
+41	0.5	0
+42	0.5	0
+43	0.5	0
+44	0.5	0
+45	0.5	0
+46	0.5	0
+47	0.5	0
+48	0.5	0
+49	0.5	0
+50	0.5	0
+51	0.5	0
+52	0.5	0
+53	0.5	0
+54	0.5	0
+55	0.5	0
+56	0.5	0
+57	0.5	0
+58	0.5	0
+59	0.5	0
+60	0.5	0
+61	0.5	0
+62	0.5	0
+63	0.5	0
+64	0.5	0
+65	0.5	0
+66	0.5	0
+67	0.5	0
+68	0.5	0
+69	0.5	0
+70	0.5	0
+71	0.5	0
+72	0.5	0
+73	0.5	0
+74	0.5	0
+75	0.5	0
+76	0.5	0
+77	0.5	0
+78	0.5	0
+79	0.5	0
+80	0.5	0
+81	0.5	0
+82	0.5	0
+83	0.5	0
+84	0.5	0
+85	0.5	0
+86	0.5	0
+87	0.5	0
+88	0.5	0
+89	0.5	0
+90	0.5	0
+91	0.5	0
+92	0.5	0
+93	0.5	0
+94	0.5	0
+95	0.5	0
+96	0.5	0
+97	0.5	0
+98	0.5	0
+99	0.5	0
+100	0.5	0
+101	0.5	0
+102	0.5	0
+103	0.5	0
+104	0.5	0
+105	0.5	0
+106	0.5	0
+107	0.5	0
+108	0.5	0
+109	0.5	0
+110	0.5	0
+111	0.5	0
+112	0.5	0
+113	0.5	0
+114	0.5	0
+115	0.5	0
+116	0.5	0
+117	0.5	0
+118	0.5	0
+119	0.5	0
+120	0.5	0
+121	0.5	0
+122	0.5	0
+123	0.5	0
+124	0.5	0
+125	0.5	0
+126	0.5	0
+127	0.5	0
+128	0.5	0
+129	0.5	0
+130	0.5	0
+131	0.5	0
+132	0.5	0
+133	0.5	0
+134	0.5	0
+135	0.5	0
+136	0.5	0
+137	0.5	0
+138	0.5	0
+139	0.5	0
+140	0.5	0
+141	0.5	0
+142	0.5	0
+143	0.5	0
+144	0.5	0
+145	0.5	0
+146	0.5	0
+147	0.5	0
+148	0.5	0
+149	0.5	0
+150	0.5	0
+151	0.5	0
+152	0.5	0
+153	0.5	0
+154	0.5	0
+155	0.5	0
+156	0.5	0
+157	0.5	0
+158	0.5	0
+159	0.5	0
+160	0.5	0
+161	0.5	0
+162	0.5	0
+163	0.5	0
+164	0.5	0
+165	0.5	0
+166	0.5	0
+167	0.5	0
+168	0.5	0
+169	0.5	0
+170	0.5	0
+171	0.5	0
+172	0.5	0
+173	0.5	0
+174	0.5	0
+175	0.5	0
+176	0.5	0
+177	0.5	0
+178	0.5	0
+179	0.5	0
+180	0.5	0
+181	0.5	0
+182	0.5	0
+183	0.5	0
+184	0.5	0
+185	0.5	0
+186	0.5	0
+187	0.5	0
+188	0.5	0
+189	0.5	0
+190	0.5	0
+191	0.5	0
+192	0.5	0
+193	0.5	0
+194	0.5	0
+195	0.5	0
+196	0.5	0
+197	0.5	0
+198	0.5	0
+199	0.5	0
+200	0.5	0
+201	0.5	0
+202	0.5	0
+203	0.5	0
+204	0.5	0
+205	0.5	0
+206	0.5	0
+207	0.5	0
+208	0.5	0
+209	0.5	0
+210	0.5	0
+211	0.5	0
+212	0.5	0
+213	0.5	0
+214	0.5	0
+215	0.5	0
+216	0.5	0
+217	0.5	0
+218	0.5	0
+219	0.5	0
+220	0.5	0
+221	0.5	0
+222	0.5	0
+223	0.5	0
+224	0.5	0
+225	0.5	0
+226	0.5	0
+227	0.5	0
+228	0.5	0
+229	0.5	0
+230	0.5	0
+231	0.5	0
+232	0.5	0
+233	0.5	0
+234	0.5	0
+235	0.5	0
+236	0.5	0
+237	0.5	0
+238	0.5	0
+239	0.5	0
+240	0.5	0
+241	0.5	0
+242	0.5	0
+243	0.5	0
+244	0.5	0
+245	0.5	0
+246	0.5	0
+247	0.5	0
+248	0.5	0
+249	0.5	0
+250	0.5	0
+251	0.5	0
+252	0.5	0
+253	0.5	0
+254	0.5	0
+255	0.5	0
+256	0.5	0
+257	0.5	0
+258	0.5	0
+259	0.5	0
+260	0.5	0
+261	0.5	0
+262	0.5	0
+263	0.5	0
+264	0.5	0
+265	0.5	0
+266	0.5	0
+267	0.5	0
+268	0.5	0
+269	0.5	0
+270	0.5	0
+271	0.5	0
+272	0.5	0
+273	0.5	0
+274	0.5	0
+275	0.5	0
+276	0.5	0
+277	0.5	0
+278	0.5	0
+279	0.5	0
+280	0.5	0
+281	0.5	0
+282	0.5	0
+283	0.5	0
+284	0.5	0
+285	0.5	0
+286	0.5	0
+287	0.5	0
+288	0.5	0
+289	0.5	0
+290	0.5	0
+291	0.5	0
+292	0.5	0
+293	0.5	0
+294	0.5	0
+295	0.5	0
+296	0.5	0
+297	0.5	0
+298	0.5	0
+299	0.5	0
+300	0.5	0
+301	0.5	0
+302	0.5	0
+303	0.5	0
+304	0.5	0
+305	0.5	0
+306	0.5	0
+307	0.5	0
+308	0.5	0
+309	0.5	0
+310	0.5	0
+311	0.5	0
+312	0.5	0
+313	0.5	0
+314	0.5	0
+315	0.5	0
+316	0.5	0
+317	0.5	0
+318	0.5	0
+319	0.5	0
+320	0.5	0
+321	0.5	0
+322	0.5	0
+323	0.5	0
+324	0.5	0
+325	0.5	0
+326	0.5	0
+327	0.5	0
+328	0.5	0
+329	0.5	0
+330	0.5	0
+331	0.5	0
+332	0.5	0
+333	0.5	0
+334	0.5	0
+335	0.5	0
+336	0.5	0
+337	0.5	0
+338	0.5	0
+339	0.5	0
+340	0.5	0
+341	0.5	0
+342	0.5	0
+343	0.5	0
+344	0.5	0
+345	0.5	0
+346	0.5	0
+347	0.5	0
+348	0.5	0
+349	0.5	0
+350	0.5	0
+351	0.5	0
+352	0.5	0
+353	0.5	0
+354	0.5	0
+355	0.5	0
+356	0.5	0
+357	0.5	0
+358	0.5	0
+359	0.5	0
+360	0.5	0
+0	1	0
+1	1	0
+2	1	0
+3	1	0
+4	1	0
+5	1	0
+6	1	0
+7	1	0
+8	1	0
+9	1	0
+10	1	0
+11	1	0
+12	1	0
+13	1	0
+14	1	0
+15	1	0
+16	1	0
+17	1	0
+18	1	0
+19	1	0
+20	1	0
+21	1	0
+22	1	0
+23	1	0
+24	1	0
+25	1	0
+26	1	0
+27	1	0
+28	1	0
+29	1	0
+30	1	0
+31	1	0
+32	1	0
+33	1	0
+34	1	0
+35	1	0
+36	1	0
+37	1	0
+38	1	0
+39	1	0
+40	1	0
+41	1	0
+42	1	0
+43	1	0
+44	1	0
+45	1	0
+46	1	0
+47	1	0
+48	1	0
+49	1	0
+50	1	0
+51	1	0
+52	1	0
+53	1	0
+54	1	0
+55	1	0
+56	1	0
+57	1	0
+58	1	0
+59	1	0
+60	1	0
+61	1	0
+62	1	0
+63	1	0
+64	1	0
+65	1	0
+66	1	0
+67	1	0
+68	1	0
+69	1	0
+70	1	0
+71	1	0
+72	1	0
+73	1	0
+74	1	0
+75	1	0
+76	1	0
+77	1	0
+78	1	0
+79	1	0
+80	1	0
+81	1	0
+82	1	0
+83	1	0
+84	1	0
+85	1	0
+86	1	0
+87	1	0
+88	1	0
+89	1	0
+90	1	0
+91	1	0
+92	1	0
+93	1	0
+94	1	0
+95	1	0
+96	1	0
+97	1	0
+98	1	0
+99	1	0
+100	1	0
+101	1	0
+102	1	0
+103	1	0
+104	1	0
+105	1	0
+106	1	0
+107	1	0
+108	1	0
+109	1	0
+110	1	0
+111	1	0
+112	1	0
+113	1	0
+114	1	0
+115	1	0
+116	1	0
+117	1	0
+118	1	0
+119	1	0
+120	1	0
+121	1	0
+122	1	0
+123	1	0
+124	1	0
+125	1	0
+126	1	0
+127	1	0
+128	1	0
+129	1	0
+130	1	0
+131	1	0
+132	1	0
+133	1	0
+134	1	0
+135	1	0
+136	1	0
+137	1	0
+138	1	0
+139	1	0
+140	1	0
+141	1	0
+142	1	0
+143	1	0
+144	1	0
+145	1	0
+146	1	0
+147	1	0
+148	1	0
+149	1	0
+150	1	0
+151	1	0
+152	1	0
+153	1	0
+154	1	0
+155	1	0
+156	1	0
+157	1	0
+158	1	0
+159	1	0
+160	1	0
+161	1	0
+162	1	0
+163	1	0
+164	1	0
+165	1	0
+166	1	0
+167	1	0
+168	1	0
+169	1	0
+170	1	0
+171	1	0
+172	1	0
+173	1	0
+174	1	0
+175	1	0
+176	1	0
+177	1	0
+178	1	0
+179	1	0
+180	1	0
+181	1	0
+182	1	0
+183	1	0
+184	1	0
+185	1	0
+186	1	0
+187	1	0
+188	1	0
+189	1	0
+190	1	0
+191	1	0
+192	1	0
+193	1	0
+194	1	0
+195	1	0
+196	1	0
+197	1	0
+198	1	0
+199	1	0
+200	1	0
+201	1	0
+202	1	0
+203	1	0
+204	1	0
+205	1	0
+206	1	0
+207	1	0
+208	1	0
+209	1	0
+210	1	0
+211	1	0
+212	1	0
+213	1	0
+214	1	0
+215	1	0
+216	1	0
+217	1	0
+218	1	0
+219	1	0
+220	1	0
+221	1	0
+222	1	0
+223	1	0
+224	1	0
+225	1	0
+226	1	0
+227	1	0
+228	1	0
+229	1	0
+230	1	0
+231	1	0
+232	1	0
+233	1	0
+234	1	0
+235	1	0
+236	1	0
+237	1	0
+238	1	0
+239	1	0
+240	1	0
+241	1	0
+242	1	0
+243	1	0
+244	1	0
+245	1	0
+246	1	0
+247	1	0
+248	1	0
+249	1	0
+250	1	0
+251	1	0
+252	1	0
+253	1	0
+254	1	0
+255	1	0
+256	1	0
+257	1	0
+258	1	0
+259	1	0
+260	1	0
+261	1	0
+262	1	0
+263	1	0
+264	1	0
+265	1	0
+266	1	0
+267	1	0
+268	1	0
+269	1	0
+270	1	0
+271	1	0
+272	1	0
+273	1	0
+274	1	0
+275	1	0
+276	1	0
+277	1	0
+278	1	0
+279	1	0
+280	1	0
+281	1	0
+282	1	0
+283	1	0
+284	1	0
+285	1	0
+286	1	0
+287	1	0
+288	1	0
+289	1	0
+290	1	0
+291	1	0
+292	1	0
+293	1	0
+294	1	0
+295	1	0
+296	1	0
+297	1	0
+298	1	0
+299	1	0
+300	1	0
+301	1	0
+302	1	0
+303	1	0
+304	1	0
+305	1	0
+306	1	0
+307	1	0
+308	1	0
+309	1	0
+310	1	0
+311	1	0
+312	1	0
+313	1	0
+314	1	0
+315	1	0
+316	1	0
+317	1	0
+318	1	0
+319	1	0
+320	1	0
+321	1	0
+322	1	0
+323	1	0
+324	1	0
+325	1	0
+326	1	0
+327	1	0
+328	1	0
+329	1	0
+330	1	0
+331	1	0
+332	1	0
+333	1	0
+334	1	0
+335	1	0
+336	1	0
+337	1	0
+338	1	0
+339	1	0
+340	1	0
+341	1	0
+342	1	0
+343	1	0
+344	1	0
+345	1	0
+346	1	0
+347	1	0
+348	1	0
+349	1	0
+350	1	0
+351	1	0
+352	1	0
+353	1	0
+354	1	0
+355	1	0
+356	1	0
+357	1	0
+358	1	0
+359	1	0
+360	1	0
+0	1.5	0
+1	1.5	0
+2	1.5	0
+3	1.5	0
+4	1.5	0
+5	1.5	0
+6	1.5	0
+7	1.5	0
+8	1.5	0
+9	1.5	0
+10	1.5	0
+11	1.5	0
+12	1.5	0
+13	1.5	0
+14	1.5	0
+15	1.5	0
+16	1.5	0
+17	1.5	0
+18	1.5	0
+19	1.5	0
+20	1.5	0
+21	1.5	0
+22	1.5	0
+23	1.5	0
+24	1.5	0
+25	1.5	0
+26	1.5	0
+27	1.5	0
+28	1.5	0
+29	1.5	0
+30	1.5	0
+31	1.5	0
+32	1.5	0
+33	1.5	0
+34	1.5	0
+35	1.5	0
+36	1.5	0
+37	1.5	0
+38	1.5	0
+39	1.5	0
+40	1.5	0
+41	1.5	0
+42	1.5	0
+43	1.5	0
+44	1.5	0
+45	1.5	0
+46	1.5	0
+47	1.5	0
+48	1.5	0
+49	1.5	0
+50	1.5	0
+51	1.5	0
+52	1.5	0
+53	1.5	0
+54	1.5	0
+55	1.5	0
+56	1.5	0
+57	1.5	0
+58	1.5	0
+59	1.5	0
+60	1.5	0
+61	1.5	0
+62	1.5	0
+63	1.5	0
+64	1.5	0
+65	1.5	0
+66	1.5	0
+67	1.5	0
+68	1.5	0
+69	1.5	0
+70	1.5	0
+71	1.5	0
+72	1.5	0
+73	1.5	0
+74	1.5	0
+75	1.5	0
+76	1.5	0
+77	1.5	0
+78	1.5	0
+79	1.5	0
+80	1.5	0
+81	1.5	0
+82	1.5	0
+83	1.5	0
+84	1.5	0
+85	1.5	0
+86	1.5	0
+87	1.5	0
+88	1.5	0
+89	1.5	0
+90	1.5	0
+91	1.5	0
+92	1.5	0
+93	1.5	0
+94	1.5	0
+95	1.5	0
+96	1.5	0
+97	1.5	0
+98	1.5	0
+99	1.5	0
+100	1.5	0
+101	1.5	0
+102	1.5	0
+103	1.5	0
+104	1.5	0
+105	1.5	0
+106	1.5	0
+107	1.5	0
+108	1.5	0
+109	1.5	0
+110	1.5	0
+111	1.5	0
+112	1.5	0
+113	1.5	0
+114	1.5	0
+115	1.5	0
+116	1.5	0
+117	1.5	0
+118	1.5	0
+119	1.5	0
+120	1.5	0
+121	1.5	0
+122	1.5	0
+123	1.5	0
+124	1.5	0
+125	1.5	0
+126	1.5	0
+127	1.5	0
+128	1.5	0
+129	1.5	0
+130	1.5	0
+131	1.5	0
+132	1.5	0
+133	1.5	0
+134	1.5	0
+135	1.5	0
+136	1.5	0
+137	1.5	0
+138	1.5	0
+139	1.5	0
+140	1.5	0
+141	1.5	0
+142	1.5	0
+143	1.5	0
+144	1.5	0
+145	1.5	0
+146	1.5	0
+147	1.5	0
+148	1.5	0
+149	1.5	0
+150	1.5	0
+151	1.5	0
+152	1.5	0
+153	1.5	0
+154	1.5	0
+155	1.5	0
+156	1.5	0
+157	1.5	0
+158	1.5	0
+159	1.5	0
+160	1.5	0
+161	1.5	0
+162	1.5	0
+163	1.5	0
+164	1.5	0
+165	1.5	0
+166	1.5	0
+167	1.5	0
+168	1.5	0
+169	1.5	0
+170	1.5	0
+171	1.5	0
+172	1.5	0
+173	1.5	0
+174	1.5	0
+175	1.5	0
+176	1.5	0
+177	1.5	0
+178	1.5	0
+179	1.5	0
+180	1.5	0
+181	1.5	0
+182	1.5	0
+183	1.5	0
+184	1.5	0
+185	1.5	0
+186	1.5	0
+187	1.5	0
+188	1.5	0
+189	1.5	0
+190	1.5	0
+191	1.5	0
+192	1.5	0
+193	1.5	0
+194	1.5	0
+195	1.5	0
+196	1.5	0
+197	1.5	0
+198	1.5	0
+199	1.5	0
+200	1.5	0
+201	1.5	0
+202	1.5	0
+203	1.5	0
+204	1.5	0
+205	1.5	0
+206	1.5	0
+207	1.5	0
+208	1.5	0
+209	1.5	0
+210	1.5	0
+211	1.5	0
+212	1.5	0
+213	1.5	0
+214	1.5	0
+215	1.5	0
+216	1.5	0
+217	1.5	0
+218	1.5	0
+219	1.5	0
+220	1.5	0
+221	1.5	0
+222	1.5	0
+223	1.5	0
+224	1.5	0
+225	1.5	0
+226	1.5	0
+227	1.5	0
+228	1.5	0
+229	1.5	0
+230	1.5	0
+231	1.5	0
+232	1.5	0
+233	1.5	0
+234	1.5	0
+235	1.5	0
+236	1.5	0
+237	1.5	0
+238	1.5	0
+239	1.5	0
+240	1.5	0
+241	1.5	0
+242	1.5	0
+243	1.5	0
+244	1.5	0
+245	1.5	0
+246	1.5	0
+247	1.5	0
+248	1.5	0
+249	1.5	0
+250	1.5	0
+251	1.5	0
+252	1.5	0
+253	1.5	0
+254	1.5	0
+255	1.5	0
+256	1.5	0
+257	1.5	0
+258	1.5	0
+259	1.5	0
+260	1.5	0
+261	1.5	0
+262	1.5	0
+263	1.5	0
+264	1.5	0
+265	1.5	0
+266	1.5	0
+267	1.5	0
+268	1.5	0
+269	1.5	0
+270	1.5	0
+271	1.5	0
+272	1.5	0
+273	1.5	0
+274	1.5	0
+275	1.5	0
+276	1.5	0
+277	1.5	0
+278	1.5	0
+279	1.5	0
+280	1.5	0
+281	1.5	0
+282	1.5	0
+283	1.5	0
+284	1.5	0
+285	1.5	0
+286	1.5	0
+287	1.5	0
+288	1.5	0
+289	1.5	0
+290	1.5	0
+291	1.5	0
+292	1.5	0
+293	1.5	0
+294	1.5	0
+295	1.5	0
+296	1.5	0
+297	1.5	0
+298	1.5	0
+299	1.5	0
+300	1.5	0
+301	1.5	0
+302	1.5	0
+303	1.5	0
+304	1.5	0
+305	1.5	0
+306	1.5	0
+307	1.5	0
+308	1.5	0
+309	1.5	0
+310	1.5	0
+311	1.5	0
+312	1.5	0
+313	1.5	0
+314	1.5	0
+315	1.5	0
+316	1.5	0
+317	1.5	0
+318	1.5	0
+319	1.5	0
+320	1.5	0
+321	1.5	0
+322	1.5	0
+323	1.5	0
+324	1.5	0
+325	1.5	0
+326	1.5	0
+327	1.5	0
+328	1.5	0
+329	1.5	0
+330	1.5	0
+331	1.5	0
+332	1.5	0
+333	1.5	0
+334	1.5	0
+335	1.5	0
+336	1.5	0
+337	1.5	0
+338	1.5	0
+339	1.5	0
+340	1.5	0
+341	1.5	0
+342	1.5	0
+343	1.5	0
+344	1.5	0
+345	1.5	0
+346	1.5	0
+347	1.5	0
+348	1.5	0
+349	1.5	0
+350	1.5	0
+351	1.5	0
+352	1.5	0
+353	1.5	0
+354	1.5	0
+355	1.5	0
+356	1.5	0
+357	1.5	0
+358	1.5	0
+359	1.5	0
+360	1.5	0
+0	2	0
+1	2	0
+2	2	0
+3	2	0
+4	2	0
+5	2	0
+6	2	0
+7	2	0
+8	2	0
+9	2	0
+10	2	0
+11	2	0
+12	2	0
+13	2	0
+14	2	0
+15	2	0
+16	2	0
+17	2	0
+18	2	0
+19	2	0
+20	2	0
+21	2	0
+22	2	0
+23	2	0
+24	2	0
+25	2	0
+26	2	0
+27	2	0
+28	2	0
+29	2	0
+30	2	0
+31	2	0
+32	2	0
+33	2	0
+34	2	0
+35	2	0
+36	2	0
+37	2	0
+38	2	0
+39	2	0
+40	2	0
+41	2	0
+42	2	0
+43	2	0
+44	2	0
+45	2	0
+46	2	0
+47	2	0
+48	2	0
+49	2	0
+50	2	0
+51	2	0
+52	2	0
+53	2	0
+54	2	0
+55	2	0
+56	2	0
+57	2	0
+58	2	0
+59	2	0
+60	2	0
+61	2	0
+62	2	0
+63	2	0
+64	2	0
+65	2	0
+66	2	0
+67	2	0
+68	2	0
+69	2	0
+70	2	0
+71	2	0
+72	2	0
+73	2	0
+74	2	0
+75	2	0
+76	2	0
+77	2	0
+78	2	0
+79	2	0
+80	2	0
+81	2	0
+82	2	0
+83	2	0
+84	2	0
+85	2	0
+86	2	0
+87	2	0
+88	2	0
+89	2	0
+90	2	0
+91	2	0
+92	2	0
+93	2	0
+94	2	0
+95	2	0
+96	2	0
+97	2	0
+98	2	0
+99	2	0
+100	2	0
+101	2	0
+102	2	0
+103	2	0
+104	2	0
+105	2	0
+106	2	0
+107	2	0
+108	2	0
+109	2	0
+110	2	0
+111	2	0
+112	2	0
+113	2	0
+114	2	0
+115	2	0
+116	2	0
+117	2	0
+118	2	0
+119	2	0
+120	2	0
+121	2	0
+122	2	0
+123	2	0
+124	2	0
+125	2	0
+126	2	0
+127	2	0
+128	2	0
+129	2	0
+130	2	0
+131	2	0
+132	2	0
+133	2	0
+134	2	0
+135	2	0
+136	2	0
+137	2	0
+138	2	0
+139	2	0
+140	2	0
+141	2	0
+142	2	0
+143	2	0
+144	2	0
+145	2	0
+146	2	0
+147	2	0
+148	2	0
+149	2	0
+150	2	0
+151	2	0
+152	2	0
+153	2	0
+154	2	0
+155	2	0
+156	2	0
+157	2	0
+158	2	0
+159	2	0
+160	2	0
+161	2	0
+162	2	0
+163	2	0
+164	2	0
+165	2	0
+166	2	0
+167	2	0
+168	2	0
+169	2	0
+170	2	0
+171	2	0
+172	2	0
+173	2	0
+174	2	0
+175	2	0
+176	2	0
+177	2	0
+178	2	0
+179	2	0
+180	2	0
+181	2	0
+182	2	0
+183	2	0
+184	2	0
+185	2	0
+186	2	0
+187	2	0
+188	2	0
+189	2	0
+190	2	0
+191	2	0
+192	2	0
+193	2	0
+194	2	0
+195	2	0
+196	2	0
+197	2	0
+198	2	0
+199	2	0
+200	2	0
+201	2	0
+202	2	0
+203	2	0
+204	2	0
+205	2	0
+206	2	0
+207	2	0
+208	2	0
+209	2	0
+210	2	0
+211	2	0
+212	2	0
+213	2	0
+214	2	0
+215	2	0
+216	2	0
+217	2	0
+218	2	0
+219	2	0
+220	2	0
+221	2	0
+222	2	0
+223	2	0
+224	2	0
+225	2	0
+226	2	0
+227	2	0
+228	2	0
+229	2	0
+230	2	0
+231	2	0
+232	2	0
+233	2	0
+234	2	0
+235	2	0
+236	2	0
+237	2	0
+238	2	0
+239	2	0
+240	2	0
+241	2	0
+242	2	0
+243	2	0
+244	2	0
+245	2	0
+246	2	0
+247	2	0
+248	2	0
+249	2	0
+250	2	0
+251	2	0
+252	2	0
+253	2	0
+254	2	0
+255	2	0
+256	2	0
+257	2	0
+258	2	0
+259	2	0
+260	2	0
+261	2	0
+262	2	0
+263	2	0
+264	2	0
+265	2	0
+266	2	0
+267	2	0
+268	2	0
+269	2	0
+270	2	0
+271	2	0
+272	2	0
+273	2	0
+274	2	0
+275	2	0
+276	2	0
+277	2	0
+278	2	0
+279	2	0
+280	2	0
+281	2	0
+282	2	0
+283	2	0
+284	2	0
+285	2	0
+286	2	0
+287	2	0
+288	2	0
+289	2	0
+290	2	0
+291	2	0
+292	2	0
+293	2	0
+294	2	0
+295	2	0
+296	2	0
+297	2	0
+298	2	0
+299	2	0
+300	2	0
+301	2	0
+302	2	0
+303	2	0
+304	2	0
+305	2	0
+306	2	0
+307	2	0
+308	2	0
+309	2	0
+310	2	0
+311	2	0
+312	2	0
+313	2	0
+314	2	0
+315	2	0
+316	2	0
+317	2	0
+318	2	0
+319	2	0
+320	2	0
+321	2	0
+322	2	0
+323	2	0
+324	2	0
+325	2	0
+326	2	0
+327	2	0
+328	2	0
+329	2	0
+330	2	0
+331	2	0
+332	2	0
+333	2	0
+334	2	0
+335	2	0
+336	2	0
+337	2	0
+338	2	0
+339	2	0
+340	2	0
+341	2	0
+342	2	0
+343	2	0
+344	2	0
+345	2	0
+346	2	0
+347	2	0
+348	2	0
+349	2	0
+350	2	0
+351	2	0
+352	2	0
+353	2	0
+354	2	0
+355	2	0
+356	2	0
+357	2	0
+358	2	0
+359	2	0
+360	2	0
+0	2.5	0
+1	2.5	0
+2	2.5	0
+3	2.5	0
+4	2.5	0
+5	2.5	0
+6	2.5	0
+7	2.5	0
+8	2.5	0
+9	2.5	0
+10	2.5	0
+11	2.5	0
+12	2.5	0
+13	2.5	0
+14	2.5	0
+15	2.5	0
+16	2.5	0
+17	2.5	0
+18	2.5	0
+19	2.5	0
+20	2.5	0
+21	2.5	0
+22	2.5	0
+23	2.5	0
+24	2.5	0
+25	2.5	0
+26	2.5	0
+27	2.5	0
+28	2.5	0
+29	2.5	0
+30	2.5	0
+31	2.5	0
+32	2.5	0
+33	2.5	0
+34	2.5	0
+35	2.5	0
+36	2.5	0
+37	2.5	0
+38	2.5	0
+39	2.5	0
+40	2.5	0
+41	2.5	0
+42	2.5	0
+43	2.5	0
+44	2.5	0
+45	2.5	0
+46	2.5	0
+47	2.5	0
+48	2.5	0
+49	2.5	0
+50	2.5	0
+51	2.5	0
+52	2.5	0
+53	2.5	0
+54	2.5	0
+55	2.5	0
+56	2.5	0
+57	2.5	0
+58	2.5	0
+59	2.5	0
+60	2.5	0
+61	2.5	0
+62	2.5	0
+63	2.5	0
+64	2.5	0
+65	2.5	0
+66	2.5	0
+67	2.5	0
+68	2.5	0
+69	2.5	0
+70	2.5	0
+71	2.5	0
+72	2.5	0
+73	2.5	0
+74	2.5	0
+75	2.5	0
+76	2.5	0
+77	2.5	0
+78	2.5	0
+79	2.5	0
+80	2.5	0
+81	2.5	0
+82	2.5	0
+83	2.5	0
+84	2.5	0
+85	2.5	0
+86	2.5	0
+87	2.5	0
+88	2.5	0
+89	2.5	0
+90	2.5	0
+91	2.5	0
+92	2.5	0
+93	2.5	0
+94	2.5	0
+95	2.5	0
+96	2.5	0
+97	2.5	0
+98	2.5	0
+99	2.5	0
+100	2.5	0
+101	2.5	0
+102	2.5	0
+103	2.5	0
+104	2.5	0
+105	2.5	0
+106	2.5	0
+107	2.5	0
+108	2.5	0
+109	2.5	0
+110	2.5	0
+111	2.5	0
+112	2.5	0
+113	2.5	0
+114	2.5	0
+115	2.5	0
+116	2.5	0
+117	2.5	0
+118	2.5	0
+119	2.5	0
+120	2.5	0
+121	2.5	0
+122	2.5	0
+123	2.5	0
+124	2.5	0
+125	2.5	0
+126	2.5	0
+127	2.5	0
+128	2.5	0
+129	2.5	0
+130	2.5	0
+131	2.5	0
+132	2.5	0
+133	2.5	0
+134	2.5	0
+135	2.5	0
+136	2.5	0
+137	2.5	0
+138	2.5	0
+139	2.5	0
+140	2.5	0
+141	2.5	0
+142	2.5	0
+143	2.5	0
+144	2.5	0
+145	2.5	0
+146	2.5	0
+147	2.5	0
+148	2.5	0
+149	2.5	0
+150	2.5	0
+151	2.5	0
+152	2.5	0
+153	2.5	0
+154	2.5	0
+155	2.5	0
+156	2.5	0
+157	2.5	0
+158	2.5	0
+159	2.5	0
+160	2.5	0
+161	2.5	0
+162	2.5	0
+163	2.5	0
+164	2.5	0
+165	2.5	0
+166	2.5	0
+167	2.5	0
+168	2.5	0
+169	2.5	0
+170	2.5	0
+171	2.5	0
+172	2.5	0
+173	2.5	0
+174	2.5	0
+175	2.5	0
+176	2.5	0
+177	2.5	0
+178	2.5	0
+179	2.5	0
+180	2.5	0
+181	2.5	0
+182	2.5	0
+183	2.5	0
+184	2.5	0
+185	2.5	0
+186	2.5	0
+187	2.5	0
+188	2.5	0
+189	2.5	0
+190	2.5	0
+191	2.5	0
+192	2.5	0
+193	2.5	0
+194	2.5	0
+195	2.5	0
+196	2.5	0
+197	2.5	0
+198	2.5	0
+199	2.5	0
+200	2.5	0
+201	2.5	0
+202	2.5	0
+203	2.5	0
+204	2.5	0
+205	2.5	0
+206	2.5	0
+207	2.5	0
+208	2.5	0
+209	2.5	0
+210	2.5	0
+211	2.5	0
+212	2.5	0
+213	2.5	0
+214	2.5	0
+215	2.5	0
+216	2.5	0
+217	2.5	0
+218	2.5	0
+219	2.5	0
+220	2.5	0
+221	2.5	0
+222	2.5	0
+223	2.5	0
+224	2.5	0
+225	2.5	0
+226	2.5	0
+227	2.5	0
+228	2.5	0
+229	2.5	0
+230	2.5	0
+231	2.5	0
+232	2.5	0
+233	2.5	0
+234	2.5	0
+235	2.5	0
+236	2.5	0
+237	2.5	0
+238	2.5	0
+239	2.5	0
+240	2.5	0
+241	2.5	0
+242	2.5	0
+243	2.5	0
+244	2.5	0
+245	2.5	0
+246	2.5	0
+247	2.5	0
+248	2.5	0
+249	2.5	0
+250	2.5	0
+251	2.5	0
+252	2.5	0
+253	2.5	0
+254	2.5	0
+255	2.5	0
+256	2.5	0
+257	2.5	0
+258	2.5	0
+259	2.5	0
+260	2.5	0
+261	2.5	0
+262	2.5	0
+263	2.5	0
+264	2.5	0
+265	2.5	0
+266	2.5	0
+267	2.5	0
+268	2.5	0
+269	2.5	0
+270	2.5	0
+271	2.5	0
+272	2.5	0
+273	2.5	0
+274	2.5	0
+275	2.5	0
+276	2.5	0
+277	2.5	0
+278	2.5	0
+279	2.5	0
+280	2.5	0
+281	2.5	0
+282	2.5	0
+283	2.5	0
+284	2.5	0
+285	2.5	0
+286	2.5	0
+287	2.5	0
+288	2.5	0
+289	2.5	0
+290	2.5	0
+291	2.5	0
+292	2.5	0
+293	2.5	0
+294	2.5	0
+295	2.5	0
+296	2.5	0
+297	2.5	0
+298	2.5	0
+299	2.5	0
+300	2.5	0
+301	2.5	0
+302	2.5	0
+303	2.5	0
+304	2.5	0
+305	2.5	0
+306	2.5	0
+307	2.5	0
+308	2.5	0
+309	2.5	0
+310	2.5	0
+311	2.5	0
+312	2.5	0
+313	2.5	0
+314	2.5	0
+315	2.5	0
+316	2.5	0
+317	2.5	0
+318	2.5	0
+319	2.5	0
+320	2.5	0
+321	2.5	0
+322	2.5	0
+323	2.5	0
+324	2.5	0
+325	2.5	0
+326	2.5	0
+327	2.5	0
+328	2.5	0
+329	2.5	0
+330	2.5	0
+331	2.5	0
+332	2.5	0
+333	2.5	0
+334	2.5	0
+335	2.5	0
+336	2.5	0
+337	2.5	0
+338	2.5	0
+339	2.5	0
+340	2.5	0
+341	2.5	0
+342	2.5	0
+343	2.5	0
+344	2.5	0
+345	2.5	0
+346	2.5	0
+347	2.5	0
+348	2.5	0
+349	2.5	0
+350	2.5	0
+351	2.5	0
+352	2.5	0
+353	2.5	0
+354	2.5	0
+355	2.5	0
+356	2.5	0
+357	2.5	0
+358	2.5	0
+359	2.5	0
+360	2.5	0
+0	3	0
+1	3	0
+2	3	0
+3	3	0
+4	3	0
+5	3	0
+6	3	0
+7	3	0
+8	3	0
+9	3	0
+10	3	0
+11	3	0
+12	3	0
+13	3	0
+14	3	0
+15	3	0
+16	3	0
+17	3	0
+18	3	0
+19	3	0
+20	3	0
+21	3	0
+22	3	0
+23	3	0
+24	3	0
+25	3	0
+26	3	0
+27	3	0
+28	3	0
+29	3	0
+30	3	0
+31	3	0
+32	3	0
+33	3	0
+34	3	0
+35	3	0
+36	3	0
+37	3	0
+38	3	0
+39	3	0
+40	3	0
+41	3	0
+42	3	0
+43	3	0
+44	3	0
+45	3	0
+46	3	0
+47	3	0
+48	3	0
+49	3	0
+50	3	0
+51	3	0
+52	3	0
+53	3	0
+54	3	0
+55	3	0
+56	3	0
+57	3	0
+58	3	0
+59	3	0
+60	3	0
+61	3	0
+62	3	0
+63	3	0
+64	3	0
+65	3	0
+66	3	0
+67	3	0
+68	3	0
+69	3	0
+70	3	0
+71	3	0
+72	3	0
+73	3	0
+74	3	0
+75	3	0
+76	3	0
+77	3	0
+78	3	0
+79	3	0
+80	3	0
+81	3	0
+82	3	0
+83	3	0
+84	3	0
+85	3	0
+86	3	0
+87	3	0
+88	3	0
+89	3	0
+90	3	0
+91	3	0
+92	3	0
+93	3	0
+94	3	0
+95	3	0
+96	3	0
+97	3	0
+98	3	0
+99	3	0
+100	3	0
+101	3	0
+102	3	0
+103	3	0
+104	3	0
+105	3	0
+106	3	0
+107	3	0
+108	3	0
+109	3	0
+110	3	0
+111	3	0
+112	3	0
+113	3	0
+114	3	0
+115	3	0
+116	3	0
+117	3	0
+118	3	0
+119	3	0
+120	3	0
+121	3	0
+122	3	0
+123	3	0
+124	3	0
+125	3	0
+126	3	0
+127	3	0
+128	3	0
+129	3	0
+130	3	0
+131	3	0
+132	3	0
+133	3	0
+134	3	0
+135	3	0
+136	3	0
+137	3	0
+138	3	0
+139	3	0
+140	3	0
+141	3	0
+142	3	0
+143	3	0
+144	3	0
+145	3	0
+146	3	0
+147	3	0
+148	3	0
+149	3	0
+150	3	0
+151	3	0
+152	3	0
+153	3	0
+154	3	0
+155	3	0
+156	3	0
+157	3	0
+158	3	0
+159	3	0
+160	3	0
+161	3	0
+162	3	0
+163	3	0
+164	3	0
+165	3	0
+166	3	0
+167	3	0
+168	3	0
+169	3	0
+170	3	0
+171	3	0
+172	3	0
+173	3	0
+174	3	0
+175	3	0
+176	3	0
+177	3	0
+178	3	0
+179	3	0
+180	3	0
+181	3	0
+182	3	0
+183	3	0
+184	3	0
+185	3	0
+186	3	0
+187	3	0
+188	3	0
+189	3	0
+190	3	0
+191	3	0
+192	3	0
+193	3	0
+194	3	0
+195	3	0
+196	3	0
+197	3	0
+198	3	0
+199	3	0
+200	3	0
+201	3	0
+202	3	0
+203	3	0
+204	3	0
+205	3	0
+206	3	0
+207	3	0
+208	3	0
+209	3	0
+210	3	0
+211	3	0
+212	3	0
+213	3	0
+214	3	0
+215	3	0
+216	3	0
+217	3	0
+218	3	0
+219	3	0
+220	3	0
+221	3	0
+222	3	0
+223	3	0
+224	3	0
+225	3	0
+226	3	0
+227	3	0
+228	3	0
+229	3	0
+230	3	0
+231	3	0
+232	3	0
+233	3	0
+234	3	0
+235	3	0
+236	3	0
+237	3	0
+238	3	0
+239	3	0
+240	3	0
+241	3	0
+242	3	0
+243	3	0
+244	3	0
+245	3	0
+246	3	0
+247	3	0
+248	3	0
+249	3	0
+250	3	0
+251	3	0
+252	3	0
+253	3	0
+254	3	0
+255	3	0
+256	3	0
+257	3	0
+258	3	0
+259	3	0
+260	3	0
+261	3	0
+262	3	0
+263	3	0
+264	3	0
+265	3	0
+266	3	0
+267	3	0
+268	3	0
+269	3	0
+270	3	0
+271	3	0
+272	3	0
+273	3	0
+274	3	0
+275	3	0
+276	3	0
+277	3	0
+278	3	0
+279	3	0
+280	3	0
+281	3	0
+282	3	0
+283	3	0
+284	3	0
+285	3	0
+286	3	0
+287	3	0
+288	3	0
+289	3	0
+290	3	0
+291	3	0
+292	3	0
+293	3	0
+294	3	0
+295	3	0
+296	3	0
+297	3	0
+298	3	0
+299	3	0
+300	3	0
+301	3	0
+302	3	0
+303	3	0
+304	3	0
+305	3	0
+306	3	0
+307	3	0
+308	3	0
+309	3	0
+310	3	0
+311	3	0
+312	3	0
+313	3	0
+314	3	0
+315	3	0
+316	3	0
+317	3	0
+318	3	0
+319	3	0
+320	3	0
+321	3	0
+322	3	0
+323	3	0
+324	3	0
+325	3	0
+326	3	0
+327	3	0
+328	3	0
+329	3	0
+330	3	0
+331	3	0
+332	3	0
+333	3	0
+334	3	0
+335	3	0
+336	3	0
+337	3	0
+338	3	0
+339	3	0
+340	3	0
+341	3	0
+342	3	0
+343	3	0
+344	3	0
+345	3	0
+346	3	0
+347	3	0
+348	3	0
+349	3	0
+350	3	0
+351	3	0
+352	3	0
+353	3	0
+354	3	0
+355	3	0
+356	3	0
+357	3	0
+358	3	0
+359	3	0
+360	3	0
+0	3.5	0
+1	3.5	0
+2	3.5	0
+3	3.5	0
+4	3.5	0
+5	3.5	0
+6	3.5	0
+7	3.5	0
+8	3.5	0
+9	3.5	0
+10	3.5	0
+11	3.5	0
+12	3.5	0
+13	3.5	0
+14	3.5	0
+15	3.5	0
+16	3.5	0
+17	3.5	0
+18	3.5	0
+19	3.5	0
+20	3.5	0
+21	3.5	0
+22	3.5	0
+23	3.5	0
+24	3.5	0
+25	3.5	0
+26	3.5	0
+27	3.5	0
+28	3.5	0
+29	3.5	0
+30	3.5	0
+31	3.5	0
+32	3.5	0
+33	3.5	0
+34	3.5	0
+35	3.5	0
+36	3.5	0
+37	3.5	0
+38	3.5	0
+39	3.5	0
+40	3.5	0
+41	3.5	0
+42	3.5	0
+43	3.5	0
+44	3.5	0
+45	3.5	0
+46	3.5	0
+47	3.5	0
+48	3.5	0
+49	3.5	0
+50	3.5	0
+51	3.5	0
+52	3.5	0
+53	3.5	0
+54	3.5	0
+55	3.5	0
+56	3.5	0
+57	3.5	0
+58	3.5	0
+59	3.5	0
+60	3.5	0
+61	3.5	0
+62	3.5	0
+63	3.5	0
+64	3.5	0
+65	3.5	0
+66	3.5	0
+67	3.5	0
+68	3.5	0
+69	3.5	0
+70	3.5	0
+71	3.5	0
+72	3.5	0
+73	3.5	0
+74	3.5	0
+75	3.5	0
+76	3.5	0
+77	3.5	0
+78	3.5	0
+79	3.5	0
+80	3.5	0
+81	3.5	0
+82	3.5	0
+83	3.5	0
+84	3.5	0
+85	3.5	0
+86	3.5	0
+87	3.5	0
+88	3.5	0
+89	3.5	0
+90	3.5	0
+91	3.5	0
+92	3.5	0
+93	3.5	0
+94	3.5	0
+95	3.5	0
+96	3.5	0
+97	3.5	0
+98	3.5	0
+99	3.5	0
+100	3.5	0
+101	3.5	0
+102	3.5	0
+103	3.5	0
+104	3.5	0
+105	3.5	0
+106	3.5	0
+107	3.5	0
+108	3.5	0
+109	3.5	0
+110	3.5	0
+111	3.5	0
+112	3.5	0
+113	3.5	0
+114	3.5	0
+115	3.5	0
+116	3.5	0
+117	3.5	0
+118	3.5	0
+119	3.5	0
+120	3.5	0
+121	3.5	0
+122	3.5	0
+123	3.5	0
+124	3.5	0
+125	3.5	0
+126	3.5	0
+127	3.5	0
+128	3.5	0
+129	3.5	0
+130	3.5	0
+131	3.5	0
+132	3.5	0
+133	3.5	0
+134	3.5	0
+135	3.5	0
+136	3.5	0
+137	3.5	0
+138	3.5	0
+139	3.5	0
+140	3.5	0
+141	3.5	0
+142	3.5	0
+143	3.5	0
+144	3.5	0
+145	3.5	0
+146	3.5	0
+147	3.5	0
+148	3.5	0
+149	3.5	0
+150	3.5	0
+151	3.5	0
+152	3.5	0
+153	3.5	0
+154	3.5	0
+155	3.5	0
+156	3.5	0
+157	3.5	0
+158	3.5	0
+159	3.5	0
+160	3.5	0
+161	3.5	0
+162	3.5	0
+163	3.5	0
+164	3.5	0
+165	3.5	0
+166	3.5	0
+167	3.5	0
+168	3.5	0
+169	3.5	0
+170	3.5	0
+171	3.5	0
+172	3.5	0
+173	3.5	0
+174	3.5	0
+175	3.5	0
+176	3.5	0
+177	3.5	0
+178	3.5	0
+179	3.5	0
+180	3.5	0
+181	3.5	0
+182	3.5	0
+183	3.5	0
+184	3.5	0
+185	3.5	0
+186	3.5	0
+187	3.5	0
+188	3.5	0
+189	3.5	0
+190	3.5	0
+191	3.5	0
+192	3.5	0
+193	3.5	0
+194	3.5	0
+195	3.5	0
+196	3.5	0
+197	3.5	0
+198	3.5	0
+199	3.5	0
+200	3.5	0
+201	3.5	0
+202	3.5	0
+203	3.5	0
+204	3.5	0
+205	3.5	0
+206	3.5	0
+207	3.5	0
+208	3.5	0
+209	3.5	0
+210	3.5	0
+211	3.5	0
+212	3.5	0
+213	3.5	0
+214	3.5	0
+215	3.5	0
+216	3.5	0
+217	3.5	0
+218	3.5	0
+219	3.5	0
+220	3.5	0
+221	3.5	0
+222	3.5	0
+223	3.5	0
+224	3.5	0
+225	3.5	0
+226	3.5	0
+227	3.5	0
+228	3.5	0
+229	3.5	0
+230	3.5	0
+231	3.5	0
+232	3.5	0
+233	3.5	0
+234	3.5	0
+235	3.5	0
+236	3.5	0
+237	3.5	0
+238	3.5	0
+239	3.5	0
+240	3.5	0
+241	3.5	0
+242	3.5	0
+243	3.5	0
+244	3.5	0
+245	3.5	0
+246	3.5	0
+247	3.5	0
+248	3.5	0
+249	3.5	0
+250	3.5	0
+251	3.5	0
+252	3.5	0
+253	3.5	0
+254	3.5	0
+255	3.5	0
+256	3.5	0
+257	3.5	0
+258	3.5	0
+259	3.5	0
+260	3.5	0
+261	3.5	0
+262	3.5	0
+263	3.5	0
+264	3.5	0
+265	3.5	0
+266	3.5	0
+267	3.5	0
+268	3.5	0
+269	3.5	0
+270	3.5	0
+271	3.5	0
+272	3.5	0
+273	3.5	0
+274	3.5	0
+275	3.5	0
+276	3.5	0
+277	3.5	0
+278	3.5	0
+279	3.5	0
+280	3.5	0
+281	3.5	0
+282	3.5	0
+283	3.5	0
+284	3.5	0
+285	3.5	0
+286	3.5	0
+287	3.5	0
+288	3.5	0
+289	3.5	0
+290	3.5	0
+291	3.5	0
+292	3.5	0
+293	3.5	0
+294	3.5	0
+295	3.5	0
+296	3.5	0
+297	3.5	0
+298	3.5	0
+299	3.5	0
+300	3.5	0
+301	3.5	0
+302	3.5	0
+303	3.5	0
+304	3.5	0
+305	3.5	0
+306	3.5	0
+307	3.5	0
+308	3.5	0
+309	3.5	0
+310	3.5	0
+311	3.5	0
+312	3.5	0
+313	3.5	0
+314	3.5	0
+315	3.5	0
+316	3.5	0
+317	3.5	0
+318	3.5	0
+319	3.5	0
+320	3.5	0
+321	3.5	0
+322	3.5	0
+323	3.5	0
+324	3.5	0
+325	3.5	0
+326	3.5	0
+327	3.5	0
+328	3.5	0
+329	3.5	0
+330	3.5	0
+331	3.5	0
+332	3.5	0
+333	3.5	0
+334	3.5	0
+335	3.5	0
+336	3.5	0
+337	3.5	0
+338	3.5	0
+339	3.5	0
+340	3.5	0
+341	3.5	0
+342	3.5	0
+343	3.5	0
+344	3.5	0
+345	3.5	0
+346	3.5	0
+347	3.5	0
+348	3.5	0
+349	3.5	0
+350	3.5	0
+351	3.5	0
+352	3.5	0
+353	3.5	0
+354	3.5	0
+355	3.5	0
+356	3.5	0
+357	3.5	0
+358	3.5	0
+359	3.5	0
+360	3.5	0
+0	4	0
+1	4	0
+2	4	0
+3	4	0
+4	4	0
+5	4	0
+6	4	0
+7	4	0
+8	4	0
+9	4	0
+10	4	0
+11	4	0
+12	4	0
+13	4	0
+14	4	0
+15	4	0
+16	4	0
+17	4	0
+18	4	0
+19	4	0
+20	4	0
+21	4	0
+22	4	0
+23	4	0
+24	4	0
+25	4	0
+26	4	0
+27	4	0
+28	4	0
+29	4	0
+30	4	0
+31	4	0
+32	4	0
+33	4	0
+34	4	0
+35	4	0
+36	4	0
+37	4	0
+38	4	0
+39	4	0
+40	4	0
+41	4	0
+42	4	0
+43	4	0
+44	4	0
+45	4	0
+46	4	0
+47	4	0
+48	4	0
+49	4	0
+50	4	0
+51	4	0
+52	4	0
+53	4	0
+54	4	0
+55	4	0
+56	4	0
+57	4	0
+58	4	0
+59	4	0
+60	4	0
+61	4	0
+62	4	0
+63	4	0
+64	4	0
+65	4	0
+66	4	0
+67	4	0
+68	4	0
+69	4	0
+70	4	0
+71	4	0
+72	4	0
+73	4	0
+74	4	0
+75	4	0
+76	4	0
+77	4	0
+78	4	0
+79	4	0
+80	4	0
+81	4	0
+82	4	0
+83	4	0
+84	4	0
+85	4	0
+86	4	0
+87	4	0
+88	4	0
+89	4	0
+90	4	0
+91	4	0
+92	4	0
+93	4	0
+94	4	0
+95	4	0
+96	4	0
+97	4	0
+98	4	0
+99	4	0
+100	4	0
+101	4	0
+102	4	0
+103	4	0
+104	4	0
+105	4	0
+106	4	0
+107	4	0
+108	4	0
+109	4	0
+110	4	0
+111	4	0
+112	4	0
+113	4	0
+114	4	0
+115	4	0
+116	4	0
+117	4	0
+118	4	0
+119	4	0
+120	4	0
+121	4	0
+122	4	0
+123	4	0
+124	4	0
+125	4	0
+126	4	0
+127	4	0
+128	4	0
+129	4	0
+130	4	0
+131	4	0
+132	4	0
+133	4	0
+134	4	0
+135	4	0
+136	4	0
+137	4	0
+138	4	0
+139	4	0
+140	4	0
+141	4	0
+142	4	0
+143	4	0
+144	4	0
+145	4	0
+146	4	0
+147	4	0
+148	4	0
+149	4	0
+150	4	0
+151	4	0
+152	4	0
+153	4	0
+154	4	0
+155	4	0
+156	4	0
+157	4	0
+158	4	0
+159	4	0
+160	4	0
+161	4	0
+162	4	0
+163	4	0
+164	4	0
+165	4	0
+166	4	0
+167	4	0
+168	4	0
+169	4	0
+170	4	0
+171	4	0
+172	4	0
+173	4	0
+174	4	0
+175	4	0
+176	4	0
+177	4	0
+178	4	0
+179	4	0
+180	4	0
+181	4	0
+182	4	0
+183	4	0
+184	4	0
+185	4	0
+186	4	0
+187	4	0
+188	4	0
+189	4	0
+190	4	0
+191	4	0
+192	4	0
+193	4	0
+194	4	0
+195	4	0
+196	4	0
+197	4	0
+198	4	0
+199	4	0
+200	4	0
+201	4	0
+202	4	0
+203	4	0
+204	4	0
+205	4	0
+206	4	0
+207	4	0
+208	4	0
+209	4	0
+210	4	0
+211	4	0
+212	4	0
+213	4	0
+214	4	0
+215	4	0
+216	4	0
+217	4	0
+218	4	0
+219	4	0
+220	4	0
+221	4	0
+222	4	0
+223	4	0
+224	4	0
+225	4	0
+226	4	0
+227	4	0
+228	4	0
+229	4	0
+230	4	0
+231	4	0
+232	4	0
+233	4	0
+234	4	0
+235	4	0
+236	4	0
+237	4	0
+238	4	0
+239	4	0
+240	4	0
+241	4	0
+242	4	0
+243	4	0
+244	4	0
+245	4	0
+246	4	0
+247	4	0
+248	4	0
+249	4	0
+250	4	0
+251	4	0
+252	4	0
+253	4	0
+254	4	0
+255	4	0
+256	4	0
+257	4	0
+258	4	0
+259	4	0
+260	4	0
+261	4	0
+262	4	0
+263	4	0
+264	4	0
+265	4	0
+266	4	0
+267	4	0
+268	4	0
+269	4	0
+270	4	0
+271	4	0
+272	4	0
+273	4	0
+274	4	0
+275	4	0
+276	4	0
+277	4	0
+278	4	0
+279	4	0
+280	4	0
+281	4	0
+282	4	0
+283	4	0
+284	4	0
+285	4	0
+286	4	0
+287	4	0
+288	4	0
+289	4	0
+290	4	0
+291	4	0
+292	4	0
+293	4	0
+294	4	0
+295	4	0
+296	4	0
+297	4	0
+298	4	0
+299	4	0
+300	4	0
+301	4	0
+302	4	0
+303	4	0
+304	4	0
+305	4	0
+306	4	0
+307	4	0
+308	4	0
+309	4	0
+310	4	0
+311	4	0
+312	4	0
+313	4	0
+314	4	0
+315	4	0
+316	4	0
+317	4	0
+318	4	0
+319	4	0
+320	4	0
+321	4	0
+322	4	0
+323	4	0
+324	4	0
+325	4	0
+326	4	0
+327	4	0
+328	4	0
+329	4	0
+330	4	0
+331	4	0
+332	4	0
+333	4	0
+334	4	0
+335	4	0
+336	4	0
+337	4	0
+338	4	0
+339	4	0
+340	4	0
+341	4	0
+342	4	0
+343	4	0
+344	4	0
+345	4	0
+346	4	0
+347	4	0
+348	4	0
+349	4	0
+350	4	0
+351	4	0
+352	4	0
+353	4	0
+354	4	0
+355	4	0
+356	4	0
+357	4	0
+358	4	0
+359	4	0
+360	4	0
+0	4.5	0
+1	4.5	0
+2	4.5	0
+3	4.5	0
+4	4.5	0
+5	4.5	0
+6	4.5	0
+7	4.5	0
+8	4.5	0
+9	4.5	0
+10	4.5	0
+11	4.5	0
+12	4.5	0
+13	4.5	0
+14	4.5	0
+15	4.5	0
+16	4.5	0
+17	4.5	0
+18	4.5	0
+19	4.5	0
+20	4.5	0
+21	4.5	0
+22	4.5	0
+23	4.5	0
+24	4.5	0
+25	4.5	0
+26	4.5	0
+27	4.5	0
+28	4.5	0
+29	4.5	0
+30	4.5	0
+31	4.5	0
+32	4.5	0
+33	4.5	0
+34	4.5	0
+35	4.5	0
+36	4.5	0
+37	4.5	0
+38	4.5	0
+39	4.5	0
+40	4.5	0
+41	4.5	0
+42	4.5	0
+43	4.5	0
+44	4.5	0
+45	4.5	0
+46	4.5	0
+47	4.5	0
+48	4.5	0
+49	4.5	0
+50	4.5	0
+51	4.5	0
+52	4.5	0
+53	4.5	0
+54	4.5	0
+55	4.5	0
+56	4.5	0
+57	4.5	0
+58	4.5	0
+59	4.5	0
+60	4.5	0
+61	4.5	0
+62	4.5	0
+63	4.5	0
+64	4.5	0
+65	4.5	0
+66	4.5	0
+67	4.5	0
+68	4.5	0
+69	4.5	0
+70	4.5	0
+71	4.5	0
+72	4.5	0
+73	4.5	0
+74	4.5	0
+75	4.5	0
+76	4.5	0
+77	4.5	0
+78	4.5	0
+79	4.5	0
+80	4.5	0
+81	4.5	0
+82	4.5	0
+83	4.5	0
+84	4.5	0
+85	4.5	0
+86	4.5	0
+87	4.5	0
+88	4.5	0
+89	4.5	0
+90	4.5	0
+91	4.5	0
+92	4.5	0
+93	4.5	0
+94	4.5	0
+95	4.5	0
+96	4.5	0
+97	4.5	0
+98	4.5	0
+99	4.5	0
+100	4.5	0
+101	4.5	0
+102	4.5	0
+103	4.5	0
+104	4.5	0
+105	4.5	0
+106	4.5	0
+107	4.5	0
+108	4.5	0
+109	4.5	0
+110	4.5	0
+111	4.5	0
+112	4.5	0
+113	4.5	0
+114	4.5	0
+115	4.5	0
+116	4.5	0
+117	4.5	0
+118	4.5	0
+119	4.5	0
+120	4.5	0
+121	4.5	0
+122	4.5	0
+123	4.5	0
+124	4.5	0
+125	4.5	0
+126	4.5	0
+127	4.5	0
+128	4.5	0
+129	4.5	0
+130	4.5	0
+131	4.5	0
+132	4.5	0
+133	4.5	0
+134	4.5	0
+135	4.5	0
+136	4.5	0
+137	4.5	0
+138	4.5	0
+139	4.5	0
+140	4.5	0
+141	4.5	0
+142	4.5	0
+143	4.5	0
+144	4.5	0
+145	4.5	0
+146	4.5	0
+147	4.5	0
+148	4.5	0
+149	4.5	0
+150	4.5	0
+151	4.5	0
+152	4.5	0
+153	4.5	0
+154	4.5	0
+155	4.5	0
+156	4.5	0
+157	4.5	0
+158	4.5	0
+159	4.5	0
+160	4.5	0
+161	4.5	0
+162	4.5	0
+163	4.5	0
+164	4.5	0
+165	4.5	0
+166	4.5	0
+167	4.5	0
+168	4.5	0
+169	4.5	0
+170	4.5	0
+171	4.5	0
+172	4.5	0
+173	4.5	0
+174	4.5	0
+175	4.5	0
+176	4.5	0
+177	4.5	0
+178	4.5	0
+179	4.5	0
+180	4.5	0
+181	4.5	0
+182	4.5	0
+183	4.5	0
+184	4.5	0
+185	4.5	0
+186	4.5	0
+187	4.5	0
+188	4.5	0
+189	4.5	0
+190	4.5	0
+191	4.5	0
+192	4.5	0
+193	4.5	0
+194	4.5	0
+195	4.5	0
+196	4.5	0
+197	4.5	0
+198	4.5	0
+199	4.5	0
+200	4.5	0
+201	4.5	0
+202	4.5	0
+203	4.5	0
+204	4.5	0
+205	4.5	0
+206	4.5	0
+207	4.5	0
+208	4.5	0
+209	4.5	0
+210	4.5	0
+211	4.5	0
+212	4.5	0
+213	4.5	0
+214	4.5	0
+215	4.5	0
+216	4.5	0
+217	4.5	0
+218	4.5	0
+219	4.5	0
+220	4.5	0
+221	4.5	0
+222	4.5	0
+223	4.5	0
+224	4.5	0
+225	4.5	0
+226	4.5	0
+227	4.5	0
+228	4.5	0
+229	4.5	0
+230	4.5	0
+231	4.5	0
+232	4.5	0
+233	4.5	0
+234	4.5	0
+235	4.5	0
+236	4.5	0
+237	4.5	0
+238	4.5	0
+239	4.5	0
+240	4.5	0
+241	4.5	0
+242	4.5	0
+243	4.5	0
+244	4.5	0
+245	4.5	0
+246	4.5	0
+247	4.5	0
+248	4.5	0
+249	4.5	0
+250	4.5	0
+251	4.5	0
+252	4.5	0
+253	4.5	0
+254	4.5	0
+255	4.5	0
+256	4.5	0
+257	4.5	0
+258	4.5	0
+259	4.5	0
+260	4.5	0
+261	4.5	0
+262	4.5	0
+263	4.5	0
+264	4.5	0
+265	4.5	0
+266	4.5	0
+267	4.5	0
+268	4.5	0
+269	4.5	0
+270	4.5	0
+271	4.5	0
+272	4.5	0
+273	4.5	0
+274	4.5	0
+275	4.5	0
+276	4.5	0
+277	4.5	0
+278	4.5	0
+279	4.5	0
+280	4.5	0
+281	4.5	0
+282	4.5	0
+283	4.5	0
+284	4.5	0
+285	4.5	0
+286	4.5	0
+287	4.5	0
+288	4.5	0
+289	4.5	0
+290	4.5	0
+291	4.5	0
+292	4.5	0
+293	4.5	0
+294	4.5	0
+295	4.5	0
+296	4.5	0
+297	4.5	0
+298	4.5	0
+299	4.5	0
+300	4.5	0
+301	4.5	0
+302	4.5	0
+303	4.5	0
+304	4.5	0
+305	4.5	0
+306	4.5	0
+307	4.5	0
+308	4.5	0
+309	4.5	0
+310	4.5	0
+311	4.5	0
+312	4.5	0
+313	4.5	0
+314	4.5	0
+315	4.5	0
+316	4.5	0
+317	4.5	0
+318	4.5	0
+319	4.5	0
+320	4.5	0
+321	4.5	0
+322	4.5	0
+323	4.5	0
+324	4.5	0
+325	4.5	0
+326	4.5	0
+327	4.5	0
+328	4.5	0
+329	4.5	0
+330	4.5	0
+331	4.5	0
+332	4.5	0
+333	4.5	0
+334	4.5	0
+335	4.5	0
+336	4.5	0
+337	4.5	0
+338	4.5	0
+339	4.5	0
+340	4.5	0
+341	4.5	0
+342	4.5	0
+343	4.5	0
+344	4.5	0
+345	4.5	0
+346	4.5	0
+347	4.5	0
+348	4.5	0
+349	4.5	0
+350	4.5	0
+351	4.5	0
+352	4.5	0
+353	4.5	0
+354	4.5	0
+355	4.5	0
+356	4.5	0
+357	4.5	0
+358	4.5	0
+359	4.5	0
+360	4.5	0
+0	5	0
+1	5	0
+2	5	0
+3	5	0
+4	5	0
+5	5	0
+6	5	0
+7	5	0
+8	5	0
+9	5	0
+10	5	0
+11	5	0
+12	5	0
+13	5	0
+14	5	0
+15	5	0
+16	5	0
+17	5	0
+18	5	0
+19	5	0
+20	5	0
+21	5	0
+22	5	0
+23	5	0
+24	5	0
+25	5	0
+26	5	0
+27	5	0
+28	5	0
+29	5	0
+30	5	0
+31	5	0
+32	5	0
+33	5	0
+34	5	0
+35	5	0
+36	5	0
+37	5	0
+38	5	0
+39	5	0
+40	5	0
+41	5	0
+42	5	0
+43	5	0
+44	5	0
+45	5	0
+46	5	0
+47	5	0
+48	5	0
+49	5	0
+50	5	0
+51	5	0
+52	5	0
+53	5	0
+54	5	0
+55	5	0
+56	5	0
+57	5	0
+58	5	0
+59	5	0
+60	5	0
+61	5	0
+62	5	0
+63	5	0
+64	5	0
+65	5	0
+66	5	0
+67	5	0
+68	5	0
+69	5	0
+70	5	0
+71	5	0
+72	5	0
+73	5	0
+74	5	0
+75	5	0
+76	5	0
+77	5	0
+78	5	0
+79	5	0
+80	5	0
+81	5	0
+82	5	0
+83	5	0
+84	5	0
+85	5	0
+86	5	0
+87	5	0
+88	5	0
+89	5	0
+90	5	0
+91	5	0
+92	5	0
+93	5	0
+94	5	0
+95	5	0
+96	5	0
+97	5	0
+98	5	0
+99	5	0
+100	5	0
+101	5	0
+102	5	0
+103	5	0
+104	5	0
+105	5	0
+106	5	0
+107	5	0
+108	5	0
+109	5	0
+110	5	0
+111	5	0
+112	5	0
+113	5	0
+114	5	0
+115	5	0
+116	5	0
+117	5	0
+118	5	0
+119	5	0
+120	5	0
+121	5	0
+122	5	0
+123	5	0
+124	5	0
+125	5	0
+126	5	0
+127	5	0
+128	5	0
+129	5	0
+130	5	0
+131	5	0
+132	5	0
+133	5	0
+134	5	0
+135	5	0
+136	5	0
+137	5	0
+138	5	0
+139	5	0
+140	5	0
+141	5	0
+142	5	0
+143	5	0
+144	5	0
+145	5	0
+146	5	0
+147	5	0
+148	5	0
+149	5	0
+150	5	0
+151	5	0
+152	5	0
+153	5	0
+154	5	0
+155	5	0
+156	5	0
+157	5	0
+158	5	0
+159	5	0
+160	5	0
+161	5	0
+162	5	0
+163	5	0
+164	5	0
+165	5	0
+166	5	0
+167	5	0
+168	5	0
+169	5	0
+170	5	0
+171	5	0
+172	5	0
+173	5	0
+174	5	0
+175	5	0
+176	5	0
+177	5	0
+178	5	0
+179	5	0
+180	5	0
+181	5	0
+182	5	0
+183	5	0
+184	5	0
+185	5	0
+186	5	0
+187	5	0
+188	5	0
+189	5	0
+190	5	0
+191	5	0
+192	5	0
+193	5	0
+194	5	0
+195	5	0
+196	5	0
+197	5	0
+198	5	0
+199	5	0
+200	5	0
+201	5	0
+202	5	0
+203	5	0
+204	5	0
+205	5	0
+206	5	0
+207	5	0
+208	5	0
+209	5	0
+210	5	0
+211	5	0
+212	5	0
+213	5	0
+214	5	0
+215	5	0
+216	5	0
+217	5	0
+218	5	0
+219	5	0
+220	5	0
+221	5	0
+222	5	0
+223	5	0
+224	5	0
+225	5	0
+226	5	0
+227	5	0
+228	5	0
+229	5	0
+230	5	0
+231	5	0
+232	5	0
+233	5	0
+234	5	0
+235	5	0
+236	5	0
+237	5	0
+238	5	0
+239	5	0
+240	5	0
+241	5	0
+242	5	0
+243	5	0
+244	5	0
+245	5	0
+246	5	0
+247	5	0
+248	5	0
+249	5	0
+250	5	0
+251	5	0
+252	5	0
+253	5	0
+254	5	0
+255	5	0
+256	5	0
+257	5	0
+258	5	0
+259	5	0
+260	5	0
+261	5	0
+262	5	0
+263	5	0
+264	5	0
+265	5	0
+266	5	0
+267	5	0
+268	5	0
+269	5	0
+270	5	0
+271	5	0
+272	5	0
+273	5	0
+274	5	0
+275	5	0
+276	5	0
+277	5	0
+278	5	0
+279	5	0
+280	5	0
+281	5	0
+282	5	0
+283	5	0
+284	5	0
+285	5	0
+286	5	0
+287	5	0
+288	5	0
+289	5	0
+290	5	0
+291	5	0
+292	5	0
+293	5	0
+294	5	0
+295	5	0
+296	5	0
+297	5	0
+298	5	0
+299	5	0
+300	5	0
+301	5	0
+302	5	0
+303	5	0
+304	5	0
+305	5	0
+306	5	0
+307	5	0
+308	5	0
+309	5	0
+310	5	0
+311	5	0
+312	5	0
+313	5	0
+314	5	0
+315	5	0
+316	5	0
+317	5	0
+318	5	0
+319	5	0
+320	5	0
+321	5	0
+322	5	0
+323	5	0
+324	5	0
+325	5	0
+326	5	0
+327	5	0
+328	5	0
+329	5	0
+330	5	0
+331	5	0
+332	5	0
+333	5	0
+334	5	0
+335	5	0
+336	5	0
+337	5	0
+338	5	0
+339	5	0
+340	5	0
+341	5	0
+342	5	0
+343	5	0
+344	5	0
+345	5	0
+346	5	0
+347	5	0
+348	5	0
+349	5	0
+350	5	0
+351	5	0
+352	5	0
+353	5	0
+354	5	0
+355	5	0
+356	5	0
+357	5	0
+358	5	0
+359	5	0
+360	5	0
+0	5.5	0
+1	5.5	0
+2	5.5	0
+3	5.5	0
+4	5.5	0
+5	5.5	0
+6	5.5	0
+7	5.5	0
+8	5.5	0
+9	5.5	0
+10	5.5	0
+11	5.5	0
+12	5.5	0
+13	5.5	0
+14	5.5	0
+15	5.5	0
+16	5.5	0
+17	5.5	0
+18	5.5	0
+19	5.5	0
+20	5.5	0
+21	5.5	0
+22	5.5	0
+23	5.5	0
+24	5.5	0
+25	5.5	0
+26	5.5	0
+27	5.5	0
+28	5.5	0
+29	5.5	0
+30	5.5	0
+31	5.5	0
+32	5.5	0
+33	5.5	0
+34	5.5	0
+35	5.5	0
+36	5.5	0
+37	5.5	0
+38	5.5	0
+39	5.5	0
+40	5.5	0
+41	5.5	0
+42	5.5	0
+43	5.5	0
+44	5.5	0
+45	5.5	0
+46	5.5	0
+47	5.5	0
+48	5.5	0
+49	5.5	0
+50	5.5	0
+51	5.5	0
+52	5.5	0
+53	5.5	0
+54	5.5	0
+55	5.5	0
+56	5.5	0
+57	5.5	0
+58	5.5	0
+59	5.5	0
+60	5.5	0
+61	5.5	0
+62	5.5	0
+63	5.5	0
+64	5.5	0
+65	5.5	0
+66	5.5	0
+67	5.5	0
+68	5.5	0
+69	5.5	0
+70	5.5	0
+71	5.5	0
+72	5.5	0
+73	5.5	0
+74	5.5	0
+75	5.5	0
+76	5.5	0
+77	5.5	0
+78	5.5	0
+79	5.5	0
+80	5.5	0
+81	5.5	0
+82	5.5	0
+83	5.5	0
+84	5.5	0
+85	5.5	0
+86	5.5	0
+87	5.5	0
+88	5.5	0
+89	5.5	0
+90	5.5	0
+91	5.5	0
+92	5.5	0
+93	5.5	0
+94	5.5	0
+95	5.5	0
+96	5.5	0
+97	5.5	0
+98	5.5	0
+99	5.5	0
+100	5.5	0
+101	5.5	0
+102	5.5	0
+103	5.5	0
+104	5.5	0
+105	5.5	0
+106	5.5	0
+107	5.5	0
+108	5.5	0
+109	5.5	0
+110	5.5	0
+111	5.5	0
+112	5.5	0
+113	5.5	0
+114	5.5	0
+115	5.5	0
+116	5.5	0
+117	5.5	0
+118	5.5	0
+119	5.5	0
+120	5.5	0
+121	5.5	0
+122	5.5	0
+123	5.5	0
+124	5.5	0
+125	5.5	0
+126	5.5	0
+127	5.5	0
+128	5.5	0
+129	5.5	0
+130	5.5	0
+131	5.5	0
+132	5.5	0
+133	5.5	0
+134	5.5	0
+135	5.5	0
+136	5.5	0
+137	5.5	0
+138	5.5	0
+139	5.5	0
+140	5.5	0
+141	5.5	0
+142	5.5	0
+143	5.5	0
+144	5.5	0
+145	5.5	0
+146	5.5	0
+147	5.5	0
+148	5.5	0
+149	5.5	0
+150	5.5	0
+151	5.5	0
+152	5.5	0
+153	5.5	0
+154	5.5	0
+155	5.5	0
+156	5.5	0
+157	5.5	0
+158	5.5	0
+159	5.5	0
+160	5.5	0
+161	5.5	0
+162	5.5	0
+163	5.5	0
+164	5.5	0
+165	5.5	0
+166	5.5	0
+167	5.5	0
+168	5.5	0
+169	5.5	0
+170	5.5	0
+171	5.5	0
+172	5.5	0
+173	5.5	0
+174	5.5	0
+175	5.5	0
+176	5.5	0
+177	5.5	0
+178	5.5	0
+179	5.5	0
+180	5.5	0
+181	5.5	0
+182	5.5	0
+183	5.5	0
+184	5.5	0
+185	5.5	0
+186	5.5	0
+187	5.5	0
+188	5.5	0
+189	5.5	0
+190	5.5	0
+191	5.5	0
+192	5.5	0
+193	5.5	0
+194	5.5	0
+195	5.5	0
+196	5.5	0
+197	5.5	0
+198	5.5	0
+199	5.5	0
+200	5.5	0
+201	5.5	0
+202	5.5	0
+203	5.5	0
+204	5.5	0
+205	5.5	0
+206	5.5	0
+207	5.5	0
+208	5.5	0
+209	5.5	0
+210	5.5	0
+211	5.5	0
+212	5.5	0
+213	5.5	0
+214	5.5	0
+215	5.5	0
+216	5.5	0
+217	5.5	0
+218	5.5	0
+219	5.5	0
+220	5.5	0
+221	5.5	0
+222	5.5	0
+223	5.5	0
+224	5.5	0
+225	5.5	0
+226	5.5	0
+227	5.5	0
+228	5.5	0
+229	5.5	0
+230	5.5	0
+231	5.5	0
+232	5.5	0
+233	5.5	0
+234	5.5	0
+235	5.5	0
+236	5.5	0
+237	5.5	0
+238	5.5	0
+239	5.5	0
+240	5.5	0
+241	5.5	0
+242	5.5	0
+243	5.5	0
+244	5.5	0
+245	5.5	0
+246	5.5	0
+247	5.5	0
+248	5.5	0
+249	5.5	0
+250	5.5	0
+251	5.5	0
+252	5.5	0
+253	5.5	0
+254	5.5	0
+255	5.5	0
+256	5.5	0
+257	5.5	0
+258	5.5	0
+259	5.5	0
+260	5.5	0
+261	5.5	0
+262	5.5	0
+263	5.5	0
+264	5.5	0
+265	5.5	0
+266	5.5	0
+267	5.5	0
+268	5.5	0
+269	5.5	0
+270	5.5	0
+271	5.5	0
+272	5.5	0
+273	5.5	0
+274	5.5	0
+275	5.5	0
+276	5.5	0
+277	5.5	0
+278	5.5	0
+279	5.5	0
+280	5.5	0
+281	5.5	0
+282	5.5	0
+283	5.5	0
+284	5.5	0
+285	5.5	0
+286	5.5	0
+287	5.5	0
+288	5.5	0
+289	5.5	0
+290	5.5	0
+291	5.5	0
+292	5.5	0
+293	5.5	0
+294	5.5	0
+295	5.5	0
+296	5.5	0
+297	5.5	0
+298	5.5	0
+299	5.5	0
+300	5.5	0
+301	5.5	0
+302	5.5	0
+303	5.5	0
+304	5.5	0
+305	5.5	0
+306	5.5	0
+307	5.5	0
+308	5.5	0
+309	5.5	0
+310	5.5	0
+311	5.5	0
+312	5.5	0
+313	5.5	0
+314	5.5	0
+315	5.5	0
+316	5.5	0
+317	5.5	0
+318	5.5	0
+319	5.5	0
+320	5.5	0
+321	5.5	0
+322	5.5	0
+323	5.5	0
+324	5.5	0
+325	5.5	0
+326	5.5	0
+327	5.5	0
+328	5.5	0
+329	5.5	0
+330	5.5	0
+331	5.5	0
+332	5.5	0
+333	5.5	0
+334	5.5	0
+335	5.5	0
+336	5.5	0
+337	5.5	0
+338	5.5	0
+339	5.5	0
+340	5.5	0
+341	5.5	0
+342	5.5	0
+343	5.5	0
+344	5.5	0
+345	5.5	0
+346	5.5	0
+347	5.5	0
+348	5.5	0
+349	5.5	0
+350	5.5	0
+351	5.5	0
+352	5.5	0
+353	5.5	0
+354	5.5	0
+355	5.5	0
+356	5.5	0
+357	5.5	0
+358	5.5	0
+359	5.5	0
+360	5.5	0
+0	6	0
+1	6	0
+2	6	0
+3	6	0
+4	6	0
+5	6	0
+6	6	0
+7	6	0
+8	6	0
+9	6	0
+10	6	0
+11	6	0
+12	6	0
+13	6	0
+14	6	0
+15	6	0
+16	6	0
+17	6	0
+18	6	0
+19	6	0
+20	6	0
+21	6	0
+22	6	0
+23	6	0
+24	6	0
+25	6	0
+26	6	0
+27	6	0
+28	6	0
+29	6	0
+30	6	0
+31	6	0
+32	6	0
+33	6	0
+34	6	0
+35	6	0
+36	6	0
+37	6	0
+38	6	0
+39	6	0
+40	6	0
+41	6	0
+42	6	0
+43	6	0
+44	6	0
+45	6	0
+46	6	0
+47	6	0
+48	6	0
+49	6	0
+50	6	0
+51	6	0
+52	6	0
+53	6	0
+54	6	0
+55	6	0
+56	6	0
+57	6	0
+58	6	0
+59	6	0
+60	6	0
+61	6	0
+62	6	0
+63	6	0
+64	6	0
+65	6	0
+66	6	0
+67	6	0
+68	6	0
+69	6	0
+70	6	0
+71	6	0
+72	6	0
+73	6	0
+74	6	0
+75	6	0
+76	6	0
+77	6	0
+78	6	0
+79	6	0
+80	6	0
+81	6	0
+82	6	0
+83	6	0
+84	6	0
+85	6	0
+86	6	0
+87	6	0
+88	6	0
+89	6	0
+90	6	0
+91	6	0
+92	6	0
+93	6	0
+94	6	0
+95	6	0
+96	6	0
+97	6	0
+98	6	0
+99	6	0
+100	6	0
+101	6	0
+102	6	0
+103	6	0
+104	6	0
+105	6	0
+106	6	0
+107	6	0
+108	6	0
+109	6	0
+110	6	0
+111	6	0
+112	6	0
+113	6	0
+114	6	0
+115	6	0
+116	6	0
+117	6	0
+118	6	0
+119	6	0
+120	6	0
+121	6	0
+122	6	0
+123	6	0
+124	6	0
+125	6	0
+126	6	0
+127	6	0
+128	6	0
+129	6	0
+130	6	0
+131	6	0
+132	6	0
+133	6	0
+134	6	0
+135	6	0
+136	6	0
+137	6	0
+138	6	0
+139	6	0
+140	6	0
+141	6	0
+142	6	0
+143	6	0
+144	6	0
+145	6	0
+146	6	0
+147	6	0
+148	6	0
+149	6	0
+150	6	0
+151	6	0
+152	6	0
+153	6	0
+154	6	0
+155	6	0
+156	6	0
+157	6	0
+158	6	0
+159	6	0
+160	6	0
+161	6	0
+162	6	0
+163	6	0
+164	6	0
+165	6	0
+166	6	0
+167	6	0
+168	6	0
+169	6	0
+170	6	0
+171	6	0
+172	6	0
+173	6	0
+174	6	0
+175	6	0
+176	6	0
+177	6	0
+178	6	0
+179	6	0
+180	6	0
+181	6	0
+182	6	0
+183	6	0
+184	6	0
+185	6	0
+186	6	0
+187	6	0
+188	6	0
+189	6	0
+190	6	0
+191	6	0
+192	6	0
+193	6	0
+194	6	0
+195	6	0
+196	6	0
+197	6	0
+198	6	0
+199	6	0
+200	6	0
+201	6	0
+202	6	0
+203	6	0
+204	6	0
+205	6	0
+206	6	0
+207	6	0
+208	6	0
+209	6	0
+210	6	0
+211	6	0
+212	6	0
+213	6	0
+214	6	0
+215	6	0
+216	6	0
+217	6	0
+218	6	0
+219	6	0
+220	6	0
+221	6	0
+222	6	0
+223	6	0
+224	6	0
+225	6	0
+226	6	0
+227	6	0
+228	6	0
+229	6	0
+230	6	0
+231	6	0
+232	6	0
+233	6	0
+234	6	0
+235	6	0
+236	6	0
+237	6	0
+238	6	0
+239	6	0
+240	6	0
+241	6	0
+242	6	0
+243	6	0
+244	6	0
+245	6	0
+246	6	0
+247	6	0
+248	6	0
+249	6	0
+250	6	0
+251	6	0
+252	6	0
+253	6	0
+254	6	0
+255	6	0
+256	6	0
+257	6	0
+258	6	0
+259	6	0
+260	6	0
+261	6	0
+262	6	0
+263	6	0
+264	6	0
+265	6	0
+266	6	0
+267	6	0
+268	6	0
+269	6	0
+270	6	0
+271	6	0
+272	6	0
+273	6	0
+274	6	0
+275	6	0
+276	6	0
+277	6	0
+278	6	0
+279	6	0
+280	6	0
+281	6	0
+282	6	0
+283	6	0
+284	6	0
+285	6	0
+286	6	0
+287	6	0
+288	6	0
+289	6	0
+290	6	0
+291	6	0
+292	6	0
+293	6	0
+294	6	0
+295	6	0
+296	6	0
+297	6	0
+298	6	0
+299	6	0
+300	6	0
+301	6	0
+302	6	0
+303	6	0
+304	6	0
+305	6	0
+306	6	0
+307	6	0
+308	6	0
+309	6	0
+310	6	0
+311	6	0
+312	6	0
+313	6	0
+314	6	0
+315	6	0
+316	6	0
+317	6	0
+318	6	0
+319	6	0
+320	6	0
+321	6	0
+322	6	0
+323	6	0
+324	6	0
+325	6	0
+326	6	0
+327	6	0
+328	6	0
+329	6	0
+330	6	0
+331	6	0
+332	6	0
+333	6	0
+334	6	0
+335	6	0
+336	6	0
+337	6	0
+338	6	0
+339	6	0
+340	6	0
+341	6	0
+342	6	0
+343	6	0
+344	6	0
+345	6	0
+346	6	0
+347	6	0
+348	6	0
+349	6	0
+350	6	0
+351	6	0
+352	6	0
+353	6	0
+354	6	0
+355	6	0
+356	6	0
+357	6	0
+358	6	0
+359	6	0
+360	6	0
+0	6.5	0
+1	6.5	0
+2	6.5	0
+3	6.5	0
+4	6.5	0
+5	6.5	0
+6	6.5	0
+7	6.5	0
+8	6.5	0
+9	6.5	0
+10	6.5	0
+11	6.5	0
+12	6.5	0
+13	6.5	0
+14	6.5	0
+15	6.5	0
+16	6.5	0
+17	6.5	0
+18	6.5	0
+19	6.5	0
+20	6.5	0
+21	6.5	0
+22	6.5	0
+23	6.5	0
+24	6.5	0
+25	6.5	0
+26	6.5	0
+27	6.5	0
+28	6.5	0
+29	6.5	0
+30	6.5	0
+31	6.5	0
+32	6.5	0
+33	6.5	0
+34	6.5	0
+35	6.5	0
+36	6.5	0
+37	6.5	0
+38	6.5	0
+39	6.5	0
+40	6.5	0
+41	6.5	0
+42	6.5	0
+43	6.5	0
+44	6.5	0
+45	6.5	0
+46	6.5	0
+47	6.5	0
+48	6.5	0
+49	6.5	0
+50	6.5	0
+51	6.5	0
+52	6.5	0
+53	6.5	0
+54	6.5	0
+55	6.5	0
+56	6.5	0
+57	6.5	0
+58	6.5	0
+59	6.5	0
+60	6.5	0
+61	6.5	0
+62	6.5	0
+63	6.5	0
+64	6.5	0
+65	6.5	0
+66	6.5	0
+67	6.5	0
+68	6.5	0
+69	6.5	0
+70	6.5	0
+71	6.5	0
+72	6.5	0
+73	6.5	0
+74	6.5	0
+75	6.5	0
+76	6.5	0
+77	6.5	0
+78	6.5	0
+79	6.5	0
+80	6.5	0
+81	6.5	0
+82	6.5	0
+83	6.5	0
+84	6.5	0
+85	6.5	0
+86	6.5	0
+87	6.5	0
+88	6.5	0
+89	6.5	0
+90	6.5	0
+91	6.5	0
+92	6.5	0
+93	6.5	0
+94	6.5	0
+95	6.5	0
+96	6.5	0
+97	6.5	0
+98	6.5	0
+99	6.5	0
+100	6.5	0
+101	6.5	0
+102	6.5	0
+103	6.5	0
+104	6.5	0
+105	6.5	0
+106	6.5	0
+107	6.5	0
+108	6.5	0
+109	6.5	0
+110	6.5	0
+111	6.5	0
+112	6.5	0
+113	6.5	0
+114	6.5	0
+115	6.5	0
+116	6.5	0
+117	6.5	0
+118	6.5	0
+119	6.5	0
+120	6.5	0
+121	6.5	0
+122	6.5	0
+123	6.5	0
+124	6.5	0
+125	6.5	0
+126	6.5	0
+127	6.5	0
+128	6.5	0
+129	6.5	0
+130	6.5	0
+131	6.5	0
+132	6.5	0
+133	6.5	0
+134	6.5	0
+135	6.5	0
+136	6.5	0
+137	6.5	0
+138	6.5	0
+139	6.5	0
+140	6.5	0
+141	6.5	0
+142	6.5	0
+143	6.5	0
+144	6.5	0
+145	6.5	0
+146	6.5	0
+147	6.5	0
+148	6.5	0
+149	6.5	0
+150	6.5	0
+151	6.5	0
+152	6.5	0
+153	6.5	0
+154	6.5	0
+155	6.5	0
+156	6.5	0
+157	6.5	0
+158	6.5	0
+159	6.5	0
+160	6.5	0
+161	6.5	0
+162	6.5	0
+163	6.5	0
+164	6.5	0
+165	6.5	0
+166	6.5	0
+167	6.5	0
+168	6.5	0
+169	6.5	0
+170	6.5	0
+171	6.5	0
+172	6.5	0
+173	6.5	0
+174	6.5	0
+175	6.5	0
+176	6.5	0
+177	6.5	0
+178	6.5	0
+179	6.5	0
+180	6.5	0
+181	6.5	0
+182	6.5	0
+183	6.5	0
+184	6.5	0
+185	6.5	0
+186	6.5	0
+187	6.5	0
+188	6.5	0
+189	6.5	0
+190	6.5	0
+191	6.5	0
+192	6.5	0
+193	6.5	0
+194	6.5	0
+195	6.5	0
+196	6.5	0
+197	6.5	0
+198	6.5	0
+199	6.5	0
+200	6.5	0
+201	6.5	0
+202	6.5	0
+203	6.5	0
+204	6.5	0
+205	6.5	0
+206	6.5	0
+207	6.5	0
+208	6.5	0
+209	6.5	0
+210	6.5	0
+211	6.5	0
+212	6.5	0
+213	6.5	0
+214	6.5	0
+215	6.5	0
+216	6.5	0
+217	6.5	0
+218	6.5	0
+219	6.5	0
+220	6.5	0
+221	6.5	0
+222	6.5	0
+223	6.5	0
+224	6.5	0
+225	6.5	0
+226	6.5	0
+227	6.5	0
+228	6.5	0
+229	6.5	0
+230	6.5	0
+231	6.5	0
+232	6.5	0
+233	6.5	0
+234	6.5	0
+235	6.5	0
+236	6.5	0
+237	6.5	0
+238	6.5	0
+239	6.5	0
+240	6.5	0
+241	6.5	0
+242	6.5	0
+243	6.5	0
+244	6.5	0
+245	6.5	0
+246	6.5	0
+247	6.5	0
+248	6.5	0
+249	6.5	0
+250	6.5	0
+251	6.5	0
+252	6.5	0
+253	6.5	0
+254	6.5	0
+255	6.5	0
+256	6.5	0
+257	6.5	0
+258	6.5	0
+259	6.5	0
+260	6.5	0
+261	6.5	0
+262	6.5	0
+263	6.5	0
+264	6.5	0
+265	6.5	0
+266	6.5	0
+267	6.5	0
+268	6.5	0
+269	6.5	0
+270	6.5	0
+271	6.5	0
+272	6.5	0
+273	6.5	0
+274	6.5	0
+275	6.5	0
+276	6.5	0
+277	6.5	0
+278	6.5	0
+279	6.5	0
+280	6.5	0
+281	6.5	0
+282	6.5	0
+283	6.5	0
+284	6.5	0
+285	6.5	0
+286	6.5	0
+287	6.5	0
+288	6.5	0
+289	6.5	0
+290	6.5	0
+291	6.5	0
+292	6.5	0
+293	6.5	0
+294	6.5	0
+295	6.5	0
+296	6.5	0
+297	6.5	0
+298	6.5	0
+299	6.5	0
+300	6.5	0
+301	6.5	0
+302	6.5	0
+303	6.5	0
+304	6.5	0
+305	6.5	0
+306	6.5	0
+307	6.5	0
+308	6.5	0
+309	6.5	0
+310	6.5	0
+311	6.5	0
+312	6.5	0
+313	6.5	0
+314	6.5	0
+315	6.5	0
+316	6.5	0
+317	6.5	0
+318	6.5	0
+319	6.5	0
+320	6.5	0
+321	6.5	0
+322	6.5	0
+323	6.5	0
+324	6.5	0
+325	6.5	0
+326	6.5	0
+327	6.5	0
+328	6.5	0
+329	6.5	0
+330	6.5	0
+331	6.5	0
+332	6.5	0
+333	6.5	0
+334	6.5	0
+335	6.5	0
+336	6.5	0
+337	6.5	0
+338	6.5	0
+339	6.5	0
+340	6.5	0
+341	6.5	0
+342	6.5	0
+343	6.5	0
+344	6.5	0
+345	6.5	0
+346	6.5	0
+347	6.5	0
+348	6.5	0
+349	6.5	0
+350	6.5	0
+351	6.5	0
+352	6.5	0
+353	6.5	0
+354	6.5	0
+355	6.5	0
+356	6.5	0
+357	6.5	0
+358	6.5	0
+359	6.5	0
+360	6.5	0
+0	7	0
+1	7	0
+2	7	0
+3	7	0
+4	7	0
+5	7	0
+6	7	0
+7	7	0
+8	7	0
+9	7	0
+10	7	0
+11	7	0
+12	7	0
+13	7	0
+14	7	0
+15	7	0
+16	7	0
+17	7	0
+18	7	0
+19	7	0
+20	7	0
+21	7	0
+22	7	0
+23	7	0
+24	7	0
+25	7	0
+26	7	0
+27	7	0
+28	7	0
+29	7	0
+30	7	0
+31	7	0
+32	7	0
+33	7	0
+34	7	0
+35	7	0
+36	7	0
+37	7	0
+38	7	0
+39	7	0
+40	7	0
+41	7	0
+42	7	0
+43	7	0
+44	7	0
+45	7	0
+46	7	0
+47	7	0
+48	7	0
+49	7	0
+50	7	0
+51	7	0
+52	7	0
+53	7	0
+54	7	0
+55	7	0
+56	7	0
+57	7	0
+58	7	0
+59	7	0
+60	7	0
+61	7	0
+62	7	0
+63	7	0
+64	7	0
+65	7	0
+66	7	0
+67	7	0
+68	7	0
+69	7	0
+70	7	0
+71	7	0
+72	7	0
+73	7	0
+74	7	0
+75	7	0
+76	7	0
+77	7	0
+78	7	0
+79	7	0
+80	7	0
+81	7	0
+82	7	0
+83	7	0
+84	7	0
+85	7	0
+86	7	0
+87	7	0
+88	7	0
+89	7	0
+90	7	0
+91	7	0
+92	7	0
+93	7	0
+94	7	0
+95	7	0
+96	7	0
+97	7	0
+98	7	0
+99	7	0
+100	7	0
+101	7	0
+102	7	0
+103	7	0
+104	7	0
+105	7	0
+106	7	0
+107	7	0
+108	7	0
+109	7	0
+110	7	0
+111	7	0
+112	7	0
+113	7	0
+114	7	0
+115	7	0
+116	7	0
+117	7	0
+118	7	0
+119	7	0
+120	7	0
+121	7	0
+122	7	0
+123	7	0
+124	7	0
+125	7	0
+126	7	0
+127	7	0
+128	7	0
+129	7	0
+130	7	0
+131	7	0
+132	7	0
+133	7	0
+134	7	0
+135	7	0
+136	7	0
+137	7	0
+138	7	0
+139	7	0
+140	7	0
+141	7	0
+142	7	0
+143	7	0
+144	7	0
+145	7	0
+146	7	0
+147	7	0
+148	7	0
+149	7	0
+150	7	0
+151	7	0
+152	7	0
+153	7	0
+154	7	0
+155	7	0
+156	7	0
+157	7	0
+158	7	0
+159	7	0
+160	7	0
+161	7	0
+162	7	0
+163	7	0
+164	7	0
+165	7	0
+166	7	0
+167	7	0
+168	7	0
+169	7	0
+170	7	0
+171	7	0
+172	7	0
+173	7	0
+174	7	0
+175	7	0
+176	7	0
+177	7	0
+178	7	0
+179	7	0
+180	7	0
+181	7	0
+182	7	0
+183	7	0
+184	7	0
+185	7	0
+186	7	0
+187	7	0
+188	7	0
+189	7	0
+190	7	0
+191	7	0
+192	7	0
+193	7	0
+194	7	0
+195	7	0
+196	7	0
+197	7	0
+198	7	0
+199	7	0
+200	7	0
+201	7	0
+202	7	0
+203	7	0
+204	7	0
+205	7	0
+206	7	0
+207	7	0
+208	7	0
+209	7	0
+210	7	0
+211	7	0
+212	7	0
+213	7	0
+214	7	0
+215	7	0
+216	7	0
+217	7	0
+218	7	0
+219	7	0
+220	7	0
+221	7	0
+222	7	0
+223	7	0
+224	7	0
+225	7	0
+226	7	0
+227	7	0
+228	7	0
+229	7	0
+230	7	0
+231	7	0
+232	7	0
+233	7	0
+234	7	0
+235	7	0
+236	7	0
+237	7	0
+238	7	0
+239	7	0
+240	7	0
+241	7	0
+242	7	0
+243	7	0
+244	7	0
+245	7	0
+246	7	0
+247	7	0
+248	7	0
+249	7	0
+250	7	0
+251	7	0
+252	7	0
+253	7	0
+254	7	0
+255	7	0
+256	7	0
+257	7	0
+258	7	0
+259	7	0
+260	7	0
+261	7	0
+262	7	0
+263	7	0
+264	7	0
+265	7	0
+266	7	0
+267	7	0
+268	7	0
+269	7	0
+270	7	0
+271	7	0
+272	7	0
+273	7	0
+274	7	0
+275	7	0
+276	7	0
+277	7	0
+278	7	0
+279	7	0
+280	7	0
+281	7	0
+282	7	0
+283	7	0
+284	7	0
+285	7	0
+286	7	0
+287	7	0
+288	7	0
+289	7	0
+290	7	0
+291	7	0
+292	7	0
+293	7	0
+294	7	0
+295	7	0
+296	7	0
+297	7	0
+298	7	0
+299	7	0
+300	7	0
+301	7	0
+302	7	0
+303	7	0
+304	7	0
+305	7	0
+306	7	0
+307	7	0
+308	7	0
+309	7	0
+310	7	0
+311	7	0
+312	7	0
+313	7	0
+314	7	0
+315	7	0
+316	7	0
+317	7	0
+318	7	0
+319	7	0
+320	7	0
+321	7	0
+322	7	0
+323	7	0
+324	7	0
+325	7	0
+326	7	0
+327	7	0
+328	7	0
+329	7	0
+330	7	0
+331	7	0
+332	7	0
+333	7	0
+334	7	0
+335	7	0
+336	7	0
+337	7	0
+338	7	0
+339	7	0
+340	7	0
+341	7	0
+342	7	0
+343	7	0
+344	7	0
+345	7	0
+346	7	0
+347	7	0
+348	7	0
+349	7	0
+350	7	0
+351	7	0
+352	7	0
+353	7	0
+354	7	0
+355	7	0
+356	7	0
+357	7	0
+358	7	0
+359	7	0
+360	7	0
+0	7.5	0
+1	7.5	0
+2	7.5	0
+3	7.5	0
+4	7.5	0
+5	7.5	0
+6	7.5	0
+7	7.5	0
+8	7.5	0
+9	7.5	0
+10	7.5	0
+11	7.5	0
+12	7.5	0
+13	7.5	0
+14	7.5	0
+15	7.5	0
+16	7.5	0
+17	7.5	0
+18	7.5	0
+19	7.5	0
+20	7.5	0
+21	7.5	0
+22	7.5	0
+23	7.5	0
+24	7.5	0
+25	7.5	0
+26	7.5	0
+27	7.5	0
+28	7.5	0
+29	7.5	0
+30	7.5	0
+31	7.5	0
+32	7.5	0
+33	7.5	0
+34	7.5	0
+35	7.5	0
+36	7.5	0
+37	7.5	0
+38	7.5	0
+39	7.5	0
+40	7.5	0
+41	7.5	0
+42	7.5	0
+43	7.5	0
+44	7.5	0
+45	7.5	0
+46	7.5	0
+47	7.5	0
+48	7.5	0
+49	7.5	0
+50	7.5	0
+51	7.5	0
+52	7.5	0
+53	7.5	0
+54	7.5	0
+55	7.5	0
+56	7.5	0
+57	7.5	0
+58	7.5	0
+59	7.5	0
+60	7.5	0
+61	7.5	0
+62	7.5	0
+63	7.5	0
+64	7.5	0
+65	7.5	0
+66	7.5	0
+67	7.5	0
+68	7.5	0
+69	7.5	0
+70	7.5	0
+71	7.5	0
+72	7.5	0
+73	7.5	0
+74	7.5	0
+75	7.5	0
+76	7.5	0
+77	7.5	0
+78	7.5	0
+79	7.5	0
+80	7.5	0
+81	7.5	0
+82	7.5	0
+83	7.5	0
+84	7.5	0
+85	7.5	0
+86	7.5	0
+87	7.5	0
+88	7.5	0
+89	7.5	0
+90	7.5	0
+91	7.5	0
+92	7.5	0
+93	7.5	0
+94	7.5	0
+95	7.5	0
+96	7.5	0
+97	7.5	0
+98	7.5	0
+99	7.5	0
+100	7.5	0
+101	7.5	0
+102	7.5	0
+103	7.5	0
+104	7.5	0
+105	7.5	0
+106	7.5	0
+107	7.5	0
+108	7.5	0
+109	7.5	0
+110	7.5	0
+111	7.5	0
+112	7.5	0
+113	7.5	0
+114	7.5	0
+115	7.5	0
+116	7.5	0
+117	7.5	0
+118	7.5	0
+119	7.5	0
+120	7.5	0
+121	7.5	0
+122	7.5	0
+123	7.5	0
+124	7.5	0
+125	7.5	0
+126	7.5	0
+127	7.5	0
+128	7.5	0
+129	7.5	0
+130	7.5	0
+131	7.5	0
+132	7.5	0
+133	7.5	0
+134	7.5	0
+135	7.5	0
+136	7.5	0
+137	7.5	0
+138	7.5	0
+139	7.5	0
+140	7.5	0
+141	7.5	0
+142	7.5	0
+143	7.5	0
+144	7.5	0
+145	7.5	0
+146	7.5	0
+147	7.5	0
+148	7.5	0
+149	7.5	0
+150	7.5	0
+151	7.5	0
+152	7.5	0
+153	7.5	0
+154	7.5	0
+155	7.5	0
+156	7.5	0
+157	7.5	0
+158	7.5	0
+159	7.5	0
+160	7.5	0
+161	7.5	0
+162	7.5	0
+163	7.5	0
+164	7.5	0
+165	7.5	0
+166	7.5	0
+167	7.5	0
+168	7.5	0
+169	7.5	0
+170	7.5	0
+171	7.5	0
+172	7.5	0
+173	7.5	0
+174	7.5	0
+175	7.5	0
+176	7.5	0
+177	7.5	0
+178	7.5	0
+179	7.5	0
+180	7.5	0
+181	7.5	0
+182	7.5	0
+183	7.5	0
+184	7.5	0
+185	7.5	0
+186	7.5	0
+187	7.5	0
+188	7.5	0
+189	7.5	0
+190	7.5	0
+191	7.5	0
+192	7.5	0
+193	7.5	0
+194	7.5	0
+195	7.5	0
+196	7.5	0
+197	7.5	0
+198	7.5	0
+199	7.5	0
+200	7.5	0
+201	7.5	0
+202	7.5	0
+203	7.5	0
+204	7.5	0
+205	7.5	0
+206	7.5	0
+207	7.5	0
+208	7.5	0
+209	7.5	0
+210	7.5	0
+211	7.5	0
+212	7.5	0
+213	7.5	0
+214	7.5	0
+215	7.5	0
+216	7.5	0
+217	7.5	0
+218	7.5	0
+219	7.5	0
+220	7.5	0
+221	7.5	0
+222	7.5	0
+223	7.5	0
+224	7.5	0
+225	7.5	0
+226	7.5	0
+227	7.5	0
+228	7.5	0
+229	7.5	0
+230	7.5	0
+231	7.5	0
+232	7.5	0
+233	7.5	0
+234	7.5	0
+235	7.5	0
+236	7.5	0
+237	7.5	0
+238	7.5	0
+239	7.5	0
+240	7.5	0
+241	7.5	0
+242	7.5	0
+243	7.5	0
+244	7.5	0
+245	7.5	0
+246	7.5	0
+247	7.5	0
+248	7.5	0
+249	7.5	0
+250	7.5	0
+251	7.5	0
+252	7.5	0
+253	7.5	0
+254	7.5	0
+255	7.5	0
+256	7.5	0
+257	7.5	0
+258	7.5	0
+259	7.5	0
+260	7.5	0
+261	7.5	0
+262	7.5	0
+263	7.5	0
+264	7.5	0
+265	7.5	0
+266	7.5	0
+267	7.5	0
+268	7.5	0
+269	7.5	0
+270	7.5	0
+271	7.5	0
+272	7.5	0
+273	7.5	0
+274	7.5	0
+275	7.5	0
+276	7.5	0
+277	7.5	0
+278	7.5	0
+279	7.5	0
+280	7.5	0
+281	7.5	0
+282	7.5	0
+283	7.5	0
+284	7.5	0
+285	7.5	0
+286	7.5	0
+287	7.5	0
+288	7.5	0
+289	7.5	0
+290	7.5	0
+291	7.5	0
+292	7.5	0
+293	7.5	0
+294	7.5	0
+295	7.5	0
+296	7.5	0
+297	7.5	0
+298	7.5	0
+299	7.5	0
+300	7.5	0
+301	7.5	0
+302	7.5	0
+303	7.5	0
+304	7.5	0
+305	7.5	0
+306	7.5	0
+307	7.5	0
+308	7.5	0
+309	7.5	0
+310	7.5	0
+311	7.5	0
+312	7.5	0
+313	7.5	0
+314	7.5	0
+315	7.5	0
+316	7.5	0
+317	7.5	0
+318	7.5	0
+319	7.5	0
+320	7.5	0
+321	7.5	0
+322	7.5	0
+323	7.5	0
+324	7.5	0
+325	7.5	0
+326	7.5	0
+327	7.5	0
+328	7.5	0
+329	7.5	0
+330	7.5	0
+331	7.5	0
+332	7.5	0
+333	7.5	0
+334	7.5	0
+335	7.5	0
+336	7.5	0
+337	7.5	0
+338	7.5	0
+339	7.5	0
+340	7.5	0
+341	7.5	0
+342	7.5	0
+343	7.5	0
+344	7.5	0
+345	7.5	0
+346	7.5	0
+347	7.5	0
+348	7.5	0
+349	7.5	0
+350	7.5	0
+351	7.5	0
+352	7.5	0
+353	7.5	0
+354	7.5	0
+355	7.5	0
+356	7.5	0
+357	7.5	0
+358	7.5	0
+359	7.5	0
+360	7.5	0
+0	8	0
+1	8	0
+2	8	0
+3	8	0
+4	8	0
+5	8	0
+6	8	0
+7	8	0
+8	8	0
+9	8	0
+10	8	0
+11	8	0
+12	8	0
+13	8	0
+14	8	0
+15	8	0
+16	8	0
+17	8	0
+18	8	0
+19	8	0
+20	8	0
+21	8	0
+22	8	0
+23	8	0
+24	8	0
+25	8	0
+26	8	0
+27	8	0
+28	8	0
+29	8	0
+30	8	0
+31	8	0
+32	8	0
+33	8	0
+34	8	0
+35	8	0
+36	8	0
+37	8	0
+38	8	0
+39	8	0
+40	8	0
+41	8	0
+42	8	0
+43	8	0
+44	8	0
+45	8	0
+46	8	0
+47	8	0
+48	8	0
+49	8	0
+50	8	0
+51	8	0
+52	8	0
+53	8	0
+54	8	0
+55	8	0
+56	8	0
+57	8	0
+58	8	0
+59	8	0
+60	8	0
+61	8	0
+62	8	0
+63	8	0
+64	8	0
+65	8	0
+66	8	0
+67	8	0
+68	8	0
+69	8	0
+70	8	0
+71	8	0
+72	8	0
+73	8	0
+74	8	0
+75	8	0
+76	8	0
+77	8	0
+78	8	0
+79	8	0
+80	8	0
+81	8	0
+82	8	0
+83	8	0
+84	8	0
+85	8	0
+86	8	0
+87	8	0
+88	8	0
+89	8	0
+90	8	0
+91	8	0
+92	8	0
+93	8	0
+94	8	0
+95	8	0
+96	8	0
+97	8	0
+98	8	0
+99	8	0
+100	8	0
+101	8	0
+102	8	0
+103	8	0
+104	8	0
+105	8	0
+106	8	0
+107	8	0
+108	8	0
+109	8	0
+110	8	0
+111	8	0
+112	8	0
+113	8	0
+114	8	0
+115	8	0
+116	8	0
+117	8	0
+118	8	0
+119	8	0
+120	8	0
+121	8	0
+122	8	0
+123	8	0
+124	8	0
+125	8	0
+126	8	0
+127	8	0
+128	8	0
+129	8	0
+130	8	0
+131	8	0
+132	8	0
+133	8	0
+134	8	0
+135	8	0
+136	8	0
+137	8	0
+138	8	0
+139	8	0
+140	8	0
+141	8	0
+142	8	0
+143	8	0
+144	8	0
+145	8	0
+146	8	0
+147	8	0
+148	8	0
+149	8	0
+150	8	0
+151	8	0
+152	8	0
+153	8	0
+154	8	0
+155	8	0
+156	8	0
+157	8	0
+158	8	0
+159	8	0
+160	8	0
+161	8	0
+162	8	0
+163	8	0
+164	8	0
+165	8	0
+166	8	0
+167	8	0
+168	8	0
+169	8	0
+170	8	0
+171	8	0
+172	8	0
+173	8	0
+174	8	0
+175	8	0
+176	8	0
+177	8	0
+178	8	0
+179	8	0
+180	8	0
+181	8	0
+182	8	0
+183	8	0
+184	8	0
+185	8	0
+186	8	0
+187	8	0
+188	8	0
+189	8	0
+190	8	0
+191	8	0
+192	8	0
+193	8	0
+194	8	0
+195	8	0
+196	8	0
+197	8	0
+198	8	0
+199	8	0
+200	8	0
+201	8	0
+202	8	0
+203	8	0
+204	8	0
+205	8	0
+206	8	0
+207	8	0
+208	8	0
+209	8	0
+210	8	0
+211	8	0
+212	8	0
+213	8	0
+214	8	0
+215	8	0
+216	8	0
+217	8	0
+218	8	0
+219	8	0
+220	8	0
+221	8	0
+222	8	0
+223	8	0
+224	8	0
+225	8	0
+226	8	0
+227	8	0
+228	8	0
+229	8	0
+230	8	0
+231	8	0
+232	8	0
+233	8	0
+234	8	0
+235	8	0
+236	8	0
+237	8	0
+238	8	0
+239	8	0
+240	8	0
+241	8	0
+242	8	0
+243	8	0
+244	8	0
+245	8	0
+246	8	0
+247	8	0
+248	8	0
+249	8	0
+250	8	0
+251	8	0
+252	8	0
+253	8	0
+254	8	0
+255	8	0
+256	8	0
+257	8	0
+258	8	0
+259	8	0
+260	8	0
+261	8	0
+262	8	0
+263	8	0
+264	8	0
+265	8	0
+266	8	0
+267	8	0
+268	8	0
+269	8	0
+270	8	0
+271	8	0
+272	8	0
+273	8	0
+274	8	0
+275	8	0
+276	8	0
+277	8	0
+278	8	0
+279	8	0
+280	8	0
+281	8	0
+282	8	0
+283	8	0
+284	8	0
+285	8	0
+286	8	0
+287	8	0
+288	8	0
+289	8	0
+290	8	0
+291	8	0
+292	8	0
+293	8	0
+294	8	0
+295	8	0
+296	8	0
+297	8	0
+298	8	0
+299	8	0
+300	8	0
+301	8	0
+302	8	0
+303	8	0
+304	8	0
+305	8	0
+306	8	0
+307	8	0
+308	8	0
+309	8	0
+310	8	0
+311	8	0
+312	8	0
+313	8	0
+314	8	0
+315	8	0
+316	8	0
+317	8	0
+318	8	0
+319	8	0
+320	8	0
+321	8	0
+322	8	0
+323	8	0
+324	8	0
+325	8	0
+326	8	0
+327	8	0
+328	8	0
+329	8	0
+330	8	0
+331	8	0
+332	8	0
+333	8	0
+334	8	0
+335	8	0
+336	8	0
+337	8	0
+338	8	0
+339	8	0
+340	8	0
+341	8	0
+342	8	0
+343	8	0
+344	8	0
+345	8	0
+346	8	0
+347	8	0
+348	8	0
+349	8	0
+350	8	0
+351	8	0
+352	8	0
+353	8	0
+354	8	0
+355	8	0
+356	8	0
+357	8	0
+358	8	0
+359	8	0
+360	8	0
+0	8.5	0
+1	8.5	0
+2	8.5	0
+3	8.5	0
+4	8.5	0
+5	8.5	0
+6	8.5	0
+7	8.5	0
+8	8.5	0
+9	8.5	0
+10	8.5	0
+11	8.5	0
+12	8.5	0
+13	8.5	0
+14	8.5	0
+15	8.5	0
+16	8.5	0
+17	8.5	0
+18	8.5	0
+19	8.5	0
+20	8.5	0
+21	8.5	0
+22	8.5	0
+23	8.5	0
+24	8.5	0
+25	8.5	0
+26	8.5	0
+27	8.5	0
+28	8.5	0
+29	8.5	0
+30	8.5	0
+31	8.5	0
+32	8.5	0
+33	8.5	0
+34	8.5	0
+35	8.5	0
+36	8.5	0
+37	8.5	0
+38	8.5	0
+39	8.5	0
+40	8.5	0
+41	8.5	0
+42	8.5	0
+43	8.5	0
+44	8.5	0
+45	8.5	0
+46	8.5	0
+47	8.5	0
+48	8.5	0
+49	8.5	0
+50	8.5	0
+51	8.5	0
+52	8.5	0
+53	8.5	0
+54	8.5	0
+55	8.5	0
+56	8.5	0
+57	8.5	0
+58	8.5	0
+59	8.5	0
+60	8.5	0
+61	8.5	0
+62	8.5	0
+63	8.5	0
+64	8.5	0
+65	8.5	0
+66	8.5	0
+67	8.5	0
+68	8.5	0
+69	8.5	0
+70	8.5	0
+71	8.5	0
+72	8.5	0
+73	8.5	0
+74	8.5	0
+75	8.5	0
+76	8.5	0
+77	8.5	0
+78	8.5	0
+79	8.5	0
+80	8.5	0
+81	8.5	0
+82	8.5	0
+83	8.5	0
+84	8.5	0
+85	8.5	0
+86	8.5	0
+87	8.5	0
+88	8.5	0
+89	8.5	0
+90	8.5	0
+91	8.5	0
+92	8.5	0
+93	8.5	0
+94	8.5	0
+95	8.5	0
+96	8.5	0
+97	8.5	0
+98	8.5	0
+99	8.5	0
+100	8.5	0
+101	8.5	0
+102	8.5	0
+103	8.5	0
+104	8.5	0
+105	8.5	0
+106	8.5	0
+107	8.5	0
+108	8.5	0
+109	8.5	0
+110	8.5	0
+111	8.5	0
+112	8.5	0
+113	8.5	0
+114	8.5	0
+115	8.5	0
+116	8.5	0
+117	8.5	0
+118	8.5	0
+119	8.5	0
+120	8.5	0
+121	8.5	0
+122	8.5	0
+123	8.5	0
+124	8.5	0
+125	8.5	0
+126	8.5	0
+127	8.5	0
+128	8.5	0
+129	8.5	0
+130	8.5	0
+131	8.5	0
+132	8.5	0
+133	8.5	0
+134	8.5	0
+135	8.5	0
+136	8.5	0
+137	8.5	0
+138	8.5	0
+139	8.5	0
+140	8.5	0
+141	8.5	0
+142	8.5	0
+143	8.5	0
+144	8.5	0
+145	8.5	0
+146	8.5	0
+147	8.5	0
+148	8.5	0
+149	8.5	0
+150	8.5	0
+151	8.5	0
+152	8.5	0
+153	8.5	0
+154	8.5	0
+155	8.5	0
+156	8.5	0
+157	8.5	0
+158	8.5	0
+159	8.5	0
+160	8.5	0
+161	8.5	0
+162	8.5	0
+163	8.5	0
+164	8.5	0
+165	8.5	0
+166	8.5	0
+167	8.5	0
+168	8.5	0
+169	8.5	0
+170	8.5	0
+171	8.5	0
+172	8.5	0
+173	8.5	0
+174	8.5	0
+175	8.5	0
+176	8.5	0
+177	8.5	0
+178	8.5	0
+179	8.5	0
+180	8.5	0
+181	8.5	0
+182	8.5	0
+183	8.5	0
+184	8.5	0
+185	8.5	0
+186	8.5	0
+187	8.5	0
+188	8.5	0
+189	8.5	0
+190	8.5	0
+191	8.5	0
+192	8.5	0
+193	8.5	0
+194	8.5	0
+195	8.5	0
+196	8.5	0
+197	8.5	0
+198	8.5	0
+199	8.5	0
+200	8.5	0
+201	8.5	0
+202	8.5	0
+203	8.5	0
+204	8.5	0
+205	8.5	0
+206	8.5	0
+207	8.5	0
+208	8.5	0
+209	8.5	0
+210	8.5	0
+211	8.5	0
+212	8.5	0
+213	8.5	0
+214	8.5	0
+215	8.5	0
+216	8.5	0
+217	8.5	0
+218	8.5	0
+219	8.5	0
+220	8.5	0
+221	8.5	0
+222	8.5	0
+223	8.5	0
+224	8.5	0
+225	8.5	0
+226	8.5	0
+227	8.5	0
+228	8.5	0
+229	8.5	0
+230	8.5	0
+231	8.5	0
+232	8.5	0
+233	8.5	0
+234	8.5	0
+235	8.5	0
+236	8.5	0
+237	8.5	0
+238	8.5	0
+239	8.5	0
+240	8.5	0
+241	8.5	0
+242	8.5	0
+243	8.5	0
+244	8.5	0
+245	8.5	0
+246	8.5	0
+247	8.5	0
+248	8.5	0
+249	8.5	0
+250	8.5	0
+251	8.5	0
+252	8.5	0
+253	8.5	0
+254	8.5	0
+255	8.5	0
+256	8.5	0
+257	8.5	0
+258	8.5	0
+259	8.5	0
+260	8.5	0
+261	8.5	0
+262	8.5	0
+263	8.5	0
+264	8.5	0
+265	8.5	0
+266	8.5	0
+267	8.5	0
+268	8.5	0
+269	8.5	0
+270	8.5	0
+271	8.5	0
+272	8.5	0
+273	8.5	0
+274	8.5	0
+275	8.5	0
+276	8.5	0
+277	8.5	0
+278	8.5	0
+279	8.5	0
+280	8.5	0
+281	8.5	0
+282	8.5	0
+283	8.5	0
+284	8.5	0
+285	8.5	0
+286	8.5	0
+287	8.5	0
+288	8.5	0
+289	8.5	0
+290	8.5	0
+291	8.5	0
+292	8.5	0
+293	8.5	0
+294	8.5	0
+295	8.5	0
+296	8.5	0
+297	8.5	0
+298	8.5	0
+299	8.5	0
+300	8.5	0
+301	8.5	0
+302	8.5	0
+303	8.5	0
+304	8.5	0
+305	8.5	0
+306	8.5	0
+307	8.5	0
+308	8.5	0
+309	8.5	0
+310	8.5	0
+311	8.5	0
+312	8.5	0
+313	8.5	0
+314	8.5	0
+315	8.5	0
+316	8.5	0
+317	8.5	0
+318	8.5	0
+319	8.5	0
+320	8.5	0
+321	8.5	0
+322	8.5	0
+323	8.5	0
+324	8.5	0
+325	8.5	0
+326	8.5	0
+327	8.5	0
+328	8.5	0
+329	8.5	0
+330	8.5	0
+331	8.5	0
+332	8.5	0
+333	8.5	0
+334	8.5	0
+335	8.5	0
+336	8.5	0
+337	8.5	0
+338	8.5	0
+339	8.5	0
+340	8.5	0
+341	8.5	0
+342	8.5	0
+343	8.5	0
+344	8.5	0
+345	8.5	0
+346	8.5	0
+347	8.5	0
+348	8.5	0
+349	8.5	0
+350	8.5	0
+351	8.5	0
+352	8.5	0
+353	8.5	0
+354	8.5	0
+355	8.5	0
+356	8.5	0
+357	8.5	0
+358	8.5	0
+359	8.5	0
+360	8.5	0
+0	9	0
+1	9	0
+2	9	0
+3	9	0
+4	9	0
+5	9	0
+6	9	0
+7	9	0
+8	9	0
+9	9	0
+10	9	0
+11	9	0
+12	9	0
+13	9	0
+14	9	0
+15	9	0
+16	9	0
+17	9	0
+18	9	0
+19	9	0
+20	9	0
+21	9	0
+22	9	0
+23	9	0
+24	9	0
+25	9	0
+26	9	0
+27	9	0
+28	9	0
+29	9	0
+30	9	0
+31	9	0
+32	9	0
+33	9	0
+34	9	0
+35	9	0
+36	9	0
+37	9	0
+38	9	0
+39	9	0
+40	9	0
+41	9	0
+42	9	0
+43	9	0
+44	9	0
+45	9	0
+46	9	0
+47	9	0
+48	9	0
+49	9	0
+50	9	0
+51	9	0
+52	9	0
+53	9	0
+54	9	0
+55	9	0
+56	9	0
+57	9	0
+58	9	0
+59	9	0
+60	9	0
+61	9	0
+62	9	0
+63	9	0
+64	9	0
+65	9	0
+66	9	0
+67	9	0
+68	9	0
+69	9	0
+70	9	0
+71	9	0
+72	9	0
+73	9	0
+74	9	0
+75	9	0
+76	9	0
+77	9	0
+78	9	0
+79	9	0
+80	9	0
+81	9	0
+82	9	0
+83	9	0
+84	9	0
+85	9	0
+86	9	0
+87	9	0
+88	9	0
+89	9	0
+90	9	0
+91	9	0
+92	9	0
+93	9	0
+94	9	0
+95	9	0
+96	9	0
+97	9	0
+98	9	0
+99	9	0
+100	9	0
+101	9	0
+102	9	0
+103	9	0
+104	9	0
+105	9	0
+106	9	0
+107	9	0
+108	9	0
+109	9	0
+110	9	0
+111	9	0
+112	9	0
+113	9	0
+114	9	0
+115	9	0
+116	9	0
+117	9	0
+118	9	0
+119	9	0
+120	9	0
+121	9	0
+122	9	0
+123	9	0
+124	9	0
+125	9	0
+126	9	0
+127	9	0
+128	9	0
+129	9	0
+130	9	0
+131	9	0
+132	9	0
+133	9	0
+134	9	0
+135	9	0
+136	9	0
+137	9	0
+138	9	0
+139	9	0
+140	9	0
+141	9	0
+142	9	0
+143	9	0
+144	9	0
+145	9	0
+146	9	0
+147	9	0
+148	9	0
+149	9	0
+150	9	0
+151	9	0
+152	9	0
+153	9	0
+154	9	0
+155	9	0
+156	9	0
+157	9	0
+158	9	0
+159	9	0
+160	9	0
+161	9	0
+162	9	0
+163	9	0
+164	9	0
+165	9	0
+166	9	0
+167	9	0
+168	9	0
+169	9	0
+170	9	0
+171	9	0
+172	9	0
+173	9	0
+174	9	0
+175	9	0
+176	9	0
+177	9	0
+178	9	0
+179	9	0
+180	9	0
+181	9	0
+182	9	0
+183	9	0
+184	9	0
+185	9	0
+186	9	0
+187	9	0
+188	9	0
+189	9	0
+190	9	0
+191	9	0
+192	9	0
+193	9	0
+194	9	0
+195	9	0
+196	9	0
+197	9	0
+198	9	0
+199	9	0
+200	9	0
+201	9	0
+202	9	0
+203	9	0
+204	9	0
+205	9	0
+206	9	0
+207	9	0
+208	9	0
+209	9	0
+210	9	0
+211	9	0
+212	9	0
+213	9	0
+214	9	0
+215	9	0
+216	9	0
+217	9	0
+218	9	0
+219	9	0
+220	9	0
+221	9	0
+222	9	0
+223	9	0
+224	9	0
+225	9	0
+226	9	0
+227	9	0
+228	9	0
+229	9	0
+230	9	0
+231	9	0
+232	9	0
+233	9	0
+234	9	0
+235	9	0
+236	9	0
+237	9	0
+238	9	0
+239	9	0
+240	9	0
+241	9	0
+242	9	0
+243	9	0
+244	9	0
+245	9	0
+246	9	0
+247	9	0
+248	9	0
+249	9	0
+250	9	0
+251	9	0
+252	9	0
+253	9	0
+254	9	0
+255	9	0
+256	9	0
+257	9	0
+258	9	0
+259	9	0
+260	9	0
+261	9	0
+262	9	0
+263	9	0
+264	9	0
+265	9	0
+266	9	0
+267	9	0
+268	9	0
+269	9	0
+270	9	0
+271	9	0
+272	9	0
+273	9	0
+274	9	0
+275	9	0
+276	9	0
+277	9	0
+278	9	0
+279	9	0
+280	9	0
+281	9	0
+282	9	0
+283	9	0
+284	9	0
+285	9	0
+286	9	0
+287	9	0
+288	9	0
+289	9	0
+290	9	0
+291	9	0
+292	9	0
+293	9	0
+294	9	0
+295	9	0
+296	9	0
+297	9	0
+298	9	0
+299	9	0
+300	9	0
+301	9	0
+302	9	0
+303	9	0
+304	9	0
+305	9	0
+306	9	0
+307	9	0
+308	9	0
+309	9	0
+310	9	0
+311	9	0
+312	9	0
+313	9	0
+314	9	0
+315	9	0
+316	9	0
+317	9	0
+318	9	0
+319	9	0
+320	9	0
+321	9	0
+322	9	0
+323	9	0
+324	9	0
+325	9	0
+326	9	0
+327	9	0
+328	9	0
+329	9	0
+330	9	0
+331	9	0
+332	9	0
+333	9	0
+334	9	0
+335	9	0
+336	9	0
+337	9	0
+338	9	0
+339	9	0
+340	9	0
+341	9	0
+342	9	0
+343	9	0
+344	9	0
+345	9	0
+346	9	0
+347	9	0
+348	9	0
+349	9	0
+350	9	0
+351	9	0
+352	9	0
+353	9	0
+354	9	0
+355	9	0
+356	9	0
+357	9	0
+358	9	0
+359	9	0
+360	9	0
+0	9.5	0
+1	9.5	0
+2	9.5	0
+3	9.5	0
+4	9.5	0
+5	9.5	0
+6	9.5	0
+7	9.5	0
+8	9.5	0
+9	9.5	0
+10	9.5	0
+11	9.5	0
+12	9.5	0
+13	9.5	0
+14	9.5	0
+15	9.5	0
+16	9.5	0
+17	9.5	0
+18	9.5	0
+19	9.5	0
+20	9.5	0
+21	9.5	0
+22	9.5	0
+23	9.5	0
+24	9.5	0
+25	9.5	0
+26	9.5	0
+27	9.5	0
+28	9.5	0
+29	9.5	0
+30	9.5	0
+31	9.5	0
+32	9.5	0
+33	9.5	0
+34	9.5	0
+35	9.5	0
+36	9.5	0
+37	9.5	0
+38	9.5	0
+39	9.5	0
+40	9.5	0
+41	9.5	0
+42	9.5	0
+43	9.5	0
+44	9.5	0
+45	9.5	0
+46	9.5	0
+47	9.5	0
+48	9.5	0
+49	9.5	0
+50	9.5	0
+51	9.5	0
+52	9.5	0
+53	9.5	0
+54	9.5	0
+55	9.5	0
+56	9.5	0
+57	9.5	0
+58	9.5	0
+59	9.5	0
+60	9.5	0
+61	9.5	0
+62	9.5	0
+63	9.5	0
+64	9.5	0
+65	9.5	0
+66	9.5	0
+67	9.5	0
+68	9.5	0
+69	9.5	0
+70	9.5	0
+71	9.5	0
+72	9.5	0
+73	9.5	0
+74	9.5	0
+75	9.5	0
+76	9.5	0
+77	9.5	0
+78	9.5	0
+79	9.5	0
+80	9.5	0
+81	9.5	0
+82	9.5	0
+83	9.5	0
+84	9.5	0
+85	9.5	0
+86	9.5	0
+87	9.5	0
+88	9.5	0
+89	9.5	0
+90	9.5	0
+91	9.5	0
+92	9.5	0
+93	9.5	0
+94	9.5	0
+95	9.5	0
+96	9.5	0
+97	9.5	0
+98	9.5	0
+99	9.5	0
+100	9.5	0
+101	9.5	0
+102	9.5	0
+103	9.5	0
+104	9.5	0
+105	9.5	0
+106	9.5	0
+107	9.5	0
+108	9.5	0
+109	9.5	0
+110	9.5	0
+111	9.5	0
+112	9.5	0
+113	9.5	0
+114	9.5	0
+115	9.5	0
+116	9.5	0
+117	9.5	0
+118	9.5	0
+119	9.5	0
+120	9.5	0
+121	9.5	0
+122	9.5	0
+123	9.5	0
+124	9.5	0
+125	9.5	0
+126	9.5	0
+127	9.5	0
+128	9.5	0
+129	9.5	0
+130	9.5	0
+131	9.5	0
+132	9.5	0
+133	9.5	0
+134	9.5	0
+135	9.5	0
+136	9.5	0
+137	9.5	0
+138	9.5	0
+139	9.5	0
+140	9.5	0
+141	9.5	0
+142	9.5	0
+143	9.5	0
+144	9.5	0
+145	9.5	0
+146	9.5	0
+147	9.5	0
+148	9.5	0
+149	9.5	0
+150	9.5	0
+151	9.5	0
+152	9.5	0
+153	9.5	0
+154	9.5	0
+155	9.5	0
+156	9.5	0
+157	9.5	0
+158	9.5	0
+159	9.5	0
+160	9.5	0
+161	9.5	0
+162	9.5	0
+163	9.5	0
+164	9.5	0
+165	9.5	0
+166	9.5	0
+167	9.5	0
+168	9.5	0
+169	9.5	0
+170	9.5	0
+171	9.5	0
+172	9.5	0
+173	9.5	0
+174	9.5	0
+175	9.5	0
+176	9.5	0
+177	9.5	0
+178	9.5	0
+179	9.5	0
+180	9.5	0
+181	9.5	0
+182	9.5	0
+183	9.5	0
+184	9.5	0
+185	9.5	0
+186	9.5	0
+187	9.5	0
+188	9.5	0
+189	9.5	0
+190	9.5	0
+191	9.5	0
+192	9.5	0
+193	9.5	0
+194	9.5	0
+195	9.5	0
+196	9.5	0
+197	9.5	0
+198	9.5	0
+199	9.5	0
+200	9.5	0
+201	9.5	0
+202	9.5	0
+203	9.5	0
+204	9.5	0
+205	9.5	0
+206	9.5	0
+207	9.5	0
+208	9.5	0
+209	9.5	0
+210	9.5	0
+211	9.5	0
+212	9.5	0
+213	9.5	0
+214	9.5	0
+215	9.5	0
+216	9.5	0
+217	9.5	0
+218	9.5	0
+219	9.5	0
+220	9.5	0
+221	9.5	0
+222	9.5	0
+223	9.5	0
+224	9.5	0
+225	9.5	0
+226	9.5	0
+227	9.5	0
+228	9.5	0
+229	9.5	0
+230	9.5	0
+231	9.5	0
+232	9.5	0
+233	9.5	0
+234	9.5	0
+235	9.5	0
+236	9.5	0
+237	9.5	0
+238	9.5	0
+239	9.5	0
+240	9.5	0
+241	9.5	0
+242	9.5	0
+243	9.5	0
+244	9.5	0
+245	9.5	0
+246	9.5	0
+247	9.5	0
+248	9.5	0
+249	9.5	0
+250	9.5	0
+251	9.5	0
+252	9.5	0
+253	9.5	0
+254	9.5	0
+255	9.5	0
+256	9.5	0
+257	9.5	0
+258	9.5	0
+259	9.5	0
+260	9.5	0
+261	9.5	0
+262	9.5	0
+263	9.5	0
+264	9.5	0
+265	9.5	0
+266	9.5	0
+267	9.5	0
+268	9.5	0
+269	9.5	0
+270	9.5	0
+271	9.5	0
+272	9.5	0
+273	9.5	0
+274	9.5	0
+275	9.5	0
+276	9.5	0
+277	9.5	0
+278	9.5	0
+279	9.5	0
+280	9.5	0
+281	9.5	0
+282	9.5	0
+283	9.5	0
+284	9.5	0
+285	9.5	0
+286	9.5	0
+287	9.5	0
+288	9.5	0
+289	9.5	0
+290	9.5	0
+291	9.5	0
+292	9.5	0
+293	9.5	0
+294	9.5	0
+295	9.5	0
+296	9.5	0
+297	9.5	0
+298	9.5	0
+299	9.5	0
+300	9.5	0
+301	9.5	0
+302	9.5	0
+303	9.5	0
+304	9.5	0
+305	9.5	0
+306	9.5	0
+307	9.5	0
+308	9.5	0
+309	9.5	0
+310	9.5	0
+311	9.5	0
+312	9.5	0
+313	9.5	0
+314	9.5	0
+315	9.5	0
+316	9.5	0
+317	9.5	0
+318	9.5	0
+319	9.5	0
+320	9.5	0
+321	9.5	0
+322	9.5	0
+323	9.5	0
+324	9.5	0
+325	9.5	0
+326	9.5	0
+327	9.5	0
+328	9.5	0
+329	9.5	0
+330	9.5	0
+331	9.5	0
+332	9.5	0
+333	9.5	0
+334	9.5	0
+335	9.5	0
+336	9.5	0
+337	9.5	0
+338	9.5	0
+339	9.5	0
+340	9.5	0
+341	9.5	0
+342	9.5	0
+343	9.5	0
+344	9.5	0
+345	9.5	0
+346	9.5	0
+347	9.5	0
+348	9.5	0
+349	9.5	0
+350	9.5	0
+351	9.5	0
+352	9.5	0
+353	9.5	0
+354	9.5	0
+355	9.5	0
+356	9.5	0
+357	9.5	0
+358	9.5	0
+359	9.5	0
+360	9.5	0
+0	10	0
+1	10	0
+2	10	0
+3	10	0
+4	10	0
+5	10	0
+6	10	0
+7	10	0
+8	10	0
+9	10	0
+10	10	0
+11	10	0
+12	10	0
+13	10	0
+14	10	0
+15	10	0
+16	10	0
+17	10	0
+18	10	0
+19	10	0
+20	10	0
+21	10	0
+22	10	0
+23	10	0
+24	10	0
+25	10	0
+26	10	0
+27	10	0
+28	10	0
+29	10	0
+30	10	0
+31	10	0
+32	10	0
+33	10	0
+34	10	0
+35	10	0
+36	10	0
+37	10	0
+38	10	0
+39	10	0
+40	10	0
+41	10	0
+42	10	0
+43	10	0
+44	10	0
+45	10	0
+46	10	0
+47	10	0
+48	10	0
+49	10	0
+50	10	0
+51	10	0
+52	10	0
+53	10	0
+54	10	0
+55	10	0
+56	10	0
+57	10	0
+58	10	0
+59	10	0
+60	10	0
+61	10	0
+62	10	0
+63	10	0
+64	10	0
+65	10	0
+66	10	0
+67	10	0
+68	10	0
+69	10	0
+70	10	0
+71	10	0
+72	10	0
+73	10	0
+74	10	0
+75	10	0
+76	10	0
+77	10	0
+78	10	0
+79	10	0
+80	10	0
+81	10	0
+82	10	0
+83	10	0
+84	10	0
+85	10	0
+86	10	0
+87	10	0
+88	10	0
+89	10	0
+90	10	0
+91	10	0
+92	10	0
+93	10	0
+94	10	0
+95	10	0
+96	10	0
+97	10	0
+98	10	0
+99	10	0
+100	10	0
+101	10	0
+102	10	0
+103	10	0
+104	10	0
+105	10	0
+106	10	0
+107	10	0
+108	10	0
+109	10	0
+110	10	0
+111	10	0
+112	10	0
+113	10	0
+114	10	0
+115	10	0
+116	10	0
+117	10	0
+118	10	0
+119	10	0
+120	10	0
+121	10	0
+122	10	0
+123	10	0
+124	10	0
+125	10	0
+126	10	0
+127	10	0
+128	10	0
+129	10	0
+130	10	0
+131	10	0
+132	10	0
+133	10	0
+134	10	0
+135	10	0
+136	10	0
+137	10	0
+138	10	0
+139	10	0
+140	10	0
+141	10	0
+142	10	0
+143	10	0
+144	10	0
+145	10	0
+146	10	0
+147	10	0
+148	10	0
+149	10	0
+150	10	0
+151	10	0
+152	10	0
+153	10	0
+154	10	0
+155	10	0
+156	10	0
+157	10	0
+158	10	0
+159	10	0
+160	10	0
+161	10	0
+162	10	0
+163	10	0
+164	10	0
+165	10	0
+166	10	0
+167	10	0
+168	10	0
+169	10	0
+170	10	0
+171	10	0
+172	10	0
+173	10	0
+174	10	0
+175	10	0
+176	10	0
+177	10	0
+178	10	0
+179	10	0
+180	10	0
+181	10	0
+182	10	0
+183	10	0
+184	10	0
+185	10	0
+186	10	0
+187	10	0
+188	10	0
+189	10	0
+190	10	0
+191	10	0
+192	10	0
+193	10	0
+194	10	0
+195	10	0
+196	10	0
+197	10	0
+198	10	0
+199	10	0
+200	10	0
+201	10	0
+202	10	0
+203	10	0
+204	10	0
+205	10	0
+206	10	0
+207	10	0
+208	10	0
+209	10	0
+210	10	0
+211	10	0
+212	10	0
+213	10	0
+214	10	0
+215	10	0
+216	10	0
+217	10	0
+218	10	0
+219	10	0
+220	10	0
+221	10	0
+222	10	0
+223	10	0
+224	10	0
+225	10	0
+226	10	0
+227	10	0
+228	10	0
+229	10	0
+230	10	0
+231	10	0
+232	10	0
+233	10	0
+234	10	0
+235	10	0
+236	10	0
+237	10	0
+238	10	0
+239	10	0
+240	10	0
+241	10	0
+242	10	0
+243	10	0
+244	10	0
+245	10	0
+246	10	0
+247	10	0
+248	10	0
+249	10	0
+250	10	0
+251	10	0
+252	10	0
+253	10	0
+254	10	0
+255	10	0
+256	10	0
+257	10	0
+258	10	0
+259	10	0
+260	10	0
+261	10	0
+262	10	0
+263	10	0
+264	10	0
+265	10	0
+266	10	0
+267	10	0
+268	10	0
+269	10	0
+270	10	0
+271	10	0
+272	10	0
+273	10	0
+274	10	0
+275	10	0
+276	10	0
+277	10	0
+278	10	0
+279	10	0
+280	10	0
+281	10	0
+282	10	0
+283	10	0
+284	10	0
+285	10	0
+286	10	0
+287	10	0
+288	10	0
+289	10	0
+290	10	0
+291	10	0
+292	10	0
+293	10	0
+294	10	0
+295	10	0
+296	10	0
+297	10	0
+298	10	0
+299	10	0
+300	10	0
+301	10	0
+302	10	0
+303	10	0
+304	10	0
+305	10	0
+306	10	0
+307	10	0
+308	10	0
+309	10	0
+310	10	0
+311	10	0
+312	10	0
+313	10	0
+314	10	0
+315	10	0
+316	10	0
+317	10	0
+318	10	0
+319	10	0
+320	10	0
+321	10	0
+322	10	0
+323	10	0
+324	10	0
+325	10	0
+326	10	0
+327	10	0
+328	10	0
+329	10	0
+330	10	0
+331	10	0
+332	10	0
+333	10	0
+334	10	0
+335	10	0
+336	10	0
+337	10	0
+338	10	0
+339	10	0
+340	10	0
+341	10	0
+342	10	0
+343	10	0
+344	10	0
+345	10	0
+346	10	0
+347	10	0
+348	10	0
+349	10	0
+350	10	0
+351	10	0
+352	10	0
+353	10	0
+354	10	0
+355	10	0
+356	10	0
+357	10	0
+358	10	0
+359	10	0
+360	10	0
+0	10.5	0
+1	10.5	0
+2	10.5	0
+3	10.5	0
+4	10.5	0
+5	10.5	0
+6	10.5	0
+7	10.5	0
+8	10.5	0
+9	10.5	0
+10	10.5	0
+11	10.5	0
+12	10.5	0
+13	10.5	0
+14	10.5	0
+15	10.5	0
+16	10.5	0
+17	10.5	0
+18	10.5	0
+19	10.5	0
+20	10.5	0
+21	10.5	0
+22	10.5	0
+23	10.5	0
+24	10.5	0
+25	10.5	0
+26	10.5	0
+27	10.5	0
+28	10.5	0
+29	10.5	0
+30	10.5	0
+31	10.5	0
+32	10.5	0
+33	10.5	0
+34	10.5	0
+35	10.5	0
+36	10.5	0
+37	10.5	0
+38	10.5	0
+39	10.5	0
+40	10.5	0
+41	10.5	0
+42	10.5	0
+43	10.5	0
+44	10.5	0
+45	10.5	0
+46	10.5	0
+47	10.5	0
+48	10.5	0
+49	10.5	0
+50	10.5	0
+51	10.5	0
+52	10.5	0
+53	10.5	0
+54	10.5	0
+55	10.5	0
+56	10.5	0
+57	10.5	0
+58	10.5	0
+59	10.5	0
+60	10.5	0
+61	10.5	0
+62	10.5	0
+63	10.5	0
+64	10.5	0
+65	10.5	0
+66	10.5	0
+67	10.5	0
+68	10.5	0
+69	10.5	0
+70	10.5	0
+71	10.5	0
+72	10.5	0
+73	10.5	0
+74	10.5	0
+75	10.5	0
+76	10.5	0
+77	10.5	0
+78	10.5	0
+79	10.5	0
+80	10.5	0
+81	10.5	0
+82	10.5	0
+83	10.5	0
+84	10.5	0
+85	10.5	0
+86	10.5	0
+87	10.5	0
+88	10.5	0
+89	10.5	0
+90	10.5	0
+91	10.5	0
+92	10.5	0
+93	10.5	0
+94	10.5	0
+95	10.5	0
+96	10.5	0
+97	10.5	0
+98	10.5	0
+99	10.5	0
+100	10.5	0
+101	10.5	0
+102	10.5	0
+103	10.5	0
+104	10.5	0
+105	10.5	0
+106	10.5	0
+107	10.5	0
+108	10.5	0
+109	10.5	0
+110	10.5	0
+111	10.5	0
+112	10.5	0
+113	10.5	0
+114	10.5	0
+115	10.5	0
+116	10.5	0
+117	10.5	0
+118	10.5	0
+119	10.5	0
+120	10.5	0
+121	10.5	0
+122	10.5	0
+123	10.5	0
+124	10.5	0
+125	10.5	0
+126	10.5	0
+127	10.5	0
+128	10.5	0
+129	10.5	0
+130	10.5	0
+131	10.5	0
+132	10.5	0
+133	10.5	0
+134	10.5	0
+135	10.5	0
+136	10.5	0
+137	10.5	0
+138	10.5	0
+139	10.5	0
+140	10.5	0
+141	10.5	0
+142	10.5	0
+143	10.5	0
+144	10.5	0
+145	10.5	0
+146	10.5	0
+147	10.5	0
+148	10.5	0
+149	10.5	0
+150	10.5	0
+151	10.5	0
+152	10.5	0
+153	10.5	0
+154	10.5	0
+155	10.5	0
+156	10.5	0
+157	10.5	0
+158	10.5	0
+159	10.5	0
+160	10.5	0
+161	10.5	0
+162	10.5	0
+163	10.5	0
+164	10.5	0
+165	10.5	0
+166	10.5	0
+167	10.5	0
+168	10.5	0
+169	10.5	0
+170	10.5	0
+171	10.5	0
+172	10.5	0
+173	10.5	0
+174	10.5	0
+175	10.5	0
+176	10.5	0
+177	10.5	0
+178	10.5	0
+179	10.5	0
+180	10.5	0
+181	10.5	0
+182	10.5	0
+183	10.5	0
+184	10.5	0
+185	10.5	0
+186	10.5	0
+187	10.5	0
+188	10.5	0
+189	10.5	0
+190	10.5	0
+191	10.5	0
+192	10.5	0
+193	10.5	0
+194	10.5	0
+195	10.5	0
+196	10.5	0
+197	10.5	0
+198	10.5	0
+199	10.5	0
+200	10.5	0
+201	10.5	0
+202	10.5	0
+203	10.5	0
+204	10.5	0
+205	10.5	0
+206	10.5	0
+207	10.5	0
+208	10.5	0
+209	10.5	0
+210	10.5	0
+211	10.5	0
+212	10.5	0
+213	10.5	0
+214	10.5	0
+215	10.5	0
+216	10.5	0
+217	10.5	0
+218	10.5	0
+219	10.5	0
+220	10.5	0
+221	10.5	0
+222	10.5	0
+223	10.5	0
+224	10.5	0
+225	10.5	0
+226	10.5	0
+227	10.5	0
+228	10.5	0
+229	10.5	0
+230	10.5	0
+231	10.5	0
+232	10.5	0
+233	10.5	0
+234	10.5	0
+235	10.5	0
+236	10.5	0
+237	10.5	0
+238	10.5	0
+239	10.5	0
+240	10.5	0
+241	10.5	0
+242	10.5	0
+243	10.5	0
+244	10.5	0
+245	10.5	0
+246	10.5	0
+247	10.5	0
+248	10.5	0
+249	10.5	0
+250	10.5	0
+251	10.5	0
+252	10.5	0
+253	10.5	0
+254	10.5	0
+255	10.5	0
+256	10.5	0
+257	10.5	0
+258	10.5	0
+259	10.5	0
+260	10.5	0
+261	10.5	0
+262	10.5	0
+263	10.5	0
+264	10.5	0
+265	10.5	0
+266	10.5	0
+267	10.5	0
+268	10.5	0
+269	10.5	0
+270	10.5	0
+271	10.5	0
+272	10.5	0
+273	10.5	0
+274	10.5	0
+275	10.5	0
+276	10.5	0
+277	10.5	0
+278	10.5	0
+279	10.5	0
+280	10.5	0
+281	10.5	0
+282	10.5	0
+283	10.5	0
+284	10.5	0
+285	10.5	0
+286	10.5	0
+287	10.5	0
+288	10.5	0
+289	10.5	0
+290	10.5	0
+291	10.5	0
+292	10.5	0
+293	10.5	0
+294	10.5	0
+295	10.5	0
+296	10.5	0
+297	10.5	0
+298	10.5	0
+299	10.5	0
+300	10.5	0
+301	10.5	0
+302	10.5	0
+303	10.5	0
+304	10.5	0
+305	10.5	0
+306	10.5	0
+307	10.5	0
+308	10.5	0
+309	10.5	0
+310	10.5	0
+311	10.5	0
+312	10.5	0
+313	10.5	0
+314	10.5	0
+315	10.5	0
+316	10.5	0
+317	10.5	0
+318	10.5	0
+319	10.5	0
+320	10.5	0
+321	10.5	0
+322	10.5	0
+323	10.5	0
+324	10.5	0
+325	10.5	0
+326	10.5	0
+327	10.5	0
+328	10.5	0
+329	10.5	0
+330	10.5	0
+331	10.5	0
+332	10.5	0
+333	10.5	0
+334	10.5	0
+335	10.5	0
+336	10.5	0
+337	10.5	0
+338	10.5	0
+339	10.5	0
+340	10.5	0
+341	10.5	0
+342	10.5	0
+343	10.5	0
+344	10.5	0
+345	10.5	0
+346	10.5	0
+347	10.5	0
+348	10.5	0
+349	10.5	0
+350	10.5	0
+351	10.5	0
+352	10.5	0
+353	10.5	0
+354	10.5	0
+355	10.5	0
+356	10.5	0
+357	10.5	0
+358	10.5	0
+359	10.5	0
+360	10.5	0
+0	11	0
+1	11	0
+2	11	0
+3	11	0
+4	11	0
+5	11	0
+6	11	0
+7	11	0
+8	11	0
+9	11	0
+10	11	0
+11	11	0
+12	11	0
+13	11	0
+14	11	0
+15	11	0
+16	11	0
+17	11	0
+18	11	0
+19	11	0
+20	11	0
+21	11	0
+22	11	0
+23	11	0
+24	11	0
+25	11	0
+26	11	0
+27	11	0
+28	11	0
+29	11	0
+30	11	0
+31	11	0
+32	11	0
+33	11	0
+34	11	0
+35	11	0
+36	11	0
+37	11	0
+38	11	0
+39	11	0
+40	11	0
+41	11	0
+42	11	0
+43	11	0
+44	11	0
+45	11	0
+46	11	0
+47	11	0
+48	11	0
+49	11	0
+50	11	0
+51	11	0
+52	11	0
+53	11	0
+54	11	0
+55	11	0
+56	11	0
+57	11	0
+58	11	0
+59	11	0
+60	11	0
+61	11	0
+62	11	0
+63	11	0
+64	11	0
+65	11	0
+66	11	0
+67	11	0
+68	11	0
+69	11	0
+70	11	0
+71	11	0
+72	11	0
+73	11	0
+74	11	0
+75	11	0
+76	11	0
+77	11	0
+78	11	0
+79	11	0
+80	11	0
+81	11	0
+82	11	0
+83	11	0
+84	11	0
+85	11	0
+86	11	0
+87	11	0
+88	11	0
+89	11	0
+90	11	0
+91	11	0
+92	11	0
+93	11	0
+94	11	0
+95	11	0
+96	11	0
+97	11	0
+98	11	0
+99	11	0
+100	11	0
+101	11	0
+102	11	0
+103	11	0
+104	11	0
+105	11	0
+106	11	0
+107	11	0
+108	11	0
+109	11	0
+110	11	0
+111	11	0
+112	11	0
+113	11	0
+114	11	0
+115	11	0
+116	11	0
+117	11	0
+118	11	0
+119	11	0
+120	11	0
+121	11	0
+122	11	0
+123	11	0
+124	11	0
+125	11	0
+126	11	0
+127	11	0
+128	11	0
+129	11	0
+130	11	0
+131	11	0
+132	11	0
+133	11	0
+134	11	0
+135	11	0
+136	11	0
+137	11	0
+138	11	0
+139	11	0
+140	11	0
+141	11	0
+142	11	0
+143	11	0
+144	11	0
+145	11	0
+146	11	0
+147	11	0
+148	11	0
+149	11	0
+150	11	0
+151	11	0
+152	11	0
+153	11	0
+154	11	0
+155	11	0
+156	11	0
+157	11	0
+158	11	0
+159	11	0
+160	11	0
+161	11	0
+162	11	0
+163	11	0
+164	11	0
+165	11	0
+166	11	0
+167	11	0
+168	11	0
+169	11	0
+170	11	0
+171	11	0
+172	11	0
+173	11	0
+174	11	0
+175	11	0
+176	11	0
+177	11	0
+178	11	0
+179	11	0
+180	11	0
+181	11	0
+182	11	0
+183	11	0
+184	11	0
+185	11	0
+186	11	0
+187	11	0
+188	11	0
+189	11	0
+190	11	0
+191	11	0
+192	11	0
+193	11	0
+194	11	0
+195	11	0
+196	11	0
+197	11	0
+198	11	0
+199	11	0
+200	11	0
+201	11	0
+202	11	0
+203	11	0
+204	11	0
+205	11	0
+206	11	0
+207	11	0
+208	11	0
+209	11	0
+210	11	0
+211	11	0
+212	11	0
+213	11	0
+214	11	0
+215	11	0
+216	11	0
+217	11	0
+218	11	0
+219	11	0
+220	11	0
+221	11	0
+222	11	0
+223	11	0
+224	11	0
+225	11	0
+226	11	0
+227	11	0
+228	11	0
+229	11	0
+230	11	0
+231	11	0
+232	11	0
+233	11	0
+234	11	0
+235	11	0
+236	11	0
+237	11	0
+238	11	0
+239	11	0
+240	11	0
+241	11	0
+242	11	0
+243	11	0
+244	11	0
+245	11	0
+246	11	0
+247	11	0
+248	11	0
+249	11	0
+250	11	0
+251	11	0
+252	11	0
+253	11	0
+254	11	0
+255	11	0
+256	11	0
+257	11	0
+258	11	0
+259	11	0
+260	11	0
+261	11	0
+262	11	0
+263	11	0
+264	11	0
+265	11	0
+266	11	0
+267	11	0
+268	11	0
+269	11	0
+270	11	0
+271	11	0
+272	11	0
+273	11	0
+274	11	0
+275	11	0
+276	11	0
+277	11	0
+278	11	0
+279	11	0
+280	11	0
+281	11	0
+282	11	0
+283	11	0
+284	11	0
+285	11	0
+286	11	0
+287	11	0
+288	11	0
+289	11	0
+290	11	0
+291	11	0
+292	11	0
+293	11	0
+294	11	0
+295	11	0
+296	11	0
+297	11	0
+298	11	0
+299	11	0
+300	11	0
+301	11	0
+302	11	0
+303	11	0
+304	11	0
+305	11	0
+306	11	0
+307	11	0
+308	11	0
+309	11	0
+310	11	0
+311	11	0
+312	11	0
+313	11	0
+314	11	0
+315	11	0
+316	11	0
+317	11	0
+318	11	0
+319	11	0
+320	11	0
+321	11	0
+322	11	0
+323	11	0
+324	11	0
+325	11	0
+326	11	0
+327	11	0
+328	11	0
+329	11	0
+330	11	0
+331	11	0
+332	11	0
+333	11	0
+334	11	0
+335	11	0
+336	11	0
+337	11	0
+338	11	0
+339	11	0
+340	11	0
+341	11	0
+342	11	0
+343	11	0
+344	11	0
+345	11	0
+346	11	0
+347	11	0
+348	11	0
+349	11	0
+350	11	0
+351	11	0
+352	11	0
+353	11	0
+354	11	0
+355	11	0
+356	11	0
+357	11	0
+358	11	0
+359	11	0
+360	11	0
+0	11.5	0
+1	11.5	0
+2	11.5	0
+3	11.5	0
+4	11.5	0
+5	11.5	0
+6	11.5	0
+7	11.5	0
+8	11.5	0
+9	11.5	0
+10	11.5	0
+11	11.5	0
+12	11.5	0
+13	11.5	0
+14	11.5	0
+15	11.5	0
+16	11.5	0
+17	11.5	0
+18	11.5	0
+19	11.5	0
+20	11.5	0
+21	11.5	0
+22	11.5	0
+23	11.5	0
+24	11.5	0
+25	11.5	0
+26	11.5	0
+27	11.5	0
+28	11.5	0
+29	11.5	0
+30	11.5	0
+31	11.5	0
+32	11.5	0
+33	11.5	0
+34	11.5	0
+35	11.5	0
+36	11.5	0
+37	11.5	0
+38	11.5	0
+39	11.5	0
+40	11.5	0
+41	11.5	0
+42	11.5	0
+43	11.5	0
+44	11.5	0
+45	11.5	0
+46	11.5	0
+47	11.5	0
+48	11.5	0
+49	11.5	0
+50	11.5	0
+51	11.5	0
+52	11.5	0
+53	11.5	0
+54	11.5	0
+55	11.5	0
+56	11.5	0
+57	11.5	0
+58	11.5	0
+59	11.5	0
+60	11.5	0
+61	11.5	0
+62	11.5	0
+63	11.5	0
+64	11.5	0
+65	11.5	0
+66	11.5	0
+67	11.5	0
+68	11.5	0
+69	11.5	0
+70	11.5	0
+71	11.5	0
+72	11.5	0
+73	11.5	0
+74	11.5	0
+75	11.5	0
+76	11.5	0
+77	11.5	0
+78	11.5	0
+79	11.5	0
+80	11.5	0
+81	11.5	0
+82	11.5	0
+83	11.5	0
+84	11.5	0
+85	11.5	0
+86	11.5	0
+87	11.5	0
+88	11.5	0
+89	11.5	0
+90	11.5	0
+91	11.5	0
+92	11.5	0
+93	11.5	0
+94	11.5	0
+95	11.5	0
+96	11.5	0
+97	11.5	0
+98	11.5	0
+99	11.5	0
+100	11.5	0
+101	11.5	0
+102	11.5	0
+103	11.5	0
+104	11.5	0
+105	11.5	0
+106	11.5	0
+107	11.5	0
+108	11.5	0
+109	11.5	0
+110	11.5	0
+111	11.5	0
+112	11.5	0
+113	11.5	0
+114	11.5	0
+115	11.5	0
+116	11.5	0
+117	11.5	0
+118	11.5	0
+119	11.5	0
+120	11.5	0
+121	11.5	0
+122	11.5	0
+123	11.5	0
+124	11.5	0
+125	11.5	0
+126	11.5	0
+127	11.5	0
+128	11.5	0
+129	11.5	0
+130	11.5	0
+131	11.5	0
+132	11.5	0
+133	11.5	0
+134	11.5	0
+135	11.5	0
+136	11.5	0
+137	11.5	0
+138	11.5	0
+139	11.5	0
+140	11.5	0
+141	11.5	0
+142	11.5	0
+143	11.5	0
+144	11.5	0
+145	11.5	0
+146	11.5	0
+147	11.5	0
+148	11.5	0
+149	11.5	0
+150	11.5	0
+151	11.5	0
+152	11.5	0
+153	11.5	0
+154	11.5	0
+155	11.5	0
+156	11.5	0
+157	11.5	0
+158	11.5	0
+159	11.5	0
+160	11.5	0
+161	11.5	0
+162	11.5	0
+163	11.5	0
+164	11.5	0
+165	11.5	0
+166	11.5	0
+167	11.5	0
+168	11.5	0
+169	11.5	0
+170	11.5	0
+171	11.5	0
+172	11.5	0
+173	11.5	0
+174	11.5	0
+175	11.5	0
+176	11.5	0
+177	11.5	0
+178	11.5	0
+179	11.5	0
+180	11.5	0
+181	11.5	0
+182	11.5	0
+183	11.5	0
+184	11.5	0
+185	11.5	0
+186	11.5	0
+187	11.5	0
+188	11.5	0
+189	11.5	0
+190	11.5	0
+191	11.5	0
+192	11.5	0
+193	11.5	0
+194	11.5	0
+195	11.5	0
+196	11.5	0
+197	11.5	0
+198	11.5	0
+199	11.5	0
+200	11.5	0
+201	11.5	0
+202	11.5	0
+203	11.5	0
+204	11.5	0
+205	11.5	0
+206	11.5	0
+207	11.5	0
+208	11.5	0
+209	11.5	0
+210	11.5	0
+211	11.5	0
+212	11.5	0
+213	11.5	0
+214	11.5	0
+215	11.5	0
+216	11.5	0
+217	11.5	0
+218	11.5	0
+219	11.5	0
+220	11.5	0
+221	11.5	0
+222	11.5	0
+223	11.5	0
+224	11.5	0
+225	11.5	0
+226	11.5	0
+227	11.5	0
+228	11.5	0
+229	11.5	0
+230	11.5	0
+231	11.5	0
+232	11.5	0
+233	11.5	0
+234	11.5	0
+235	11.5	0
+236	11.5	0
+237	11.5	0
+238	11.5	0
+239	11.5	0
+240	11.5	0
+241	11.5	0
+242	11.5	0
+243	11.5	0
+244	11.5	0
+245	11.5	0
+246	11.5	0
+247	11.5	0
+248	11.5	0
+249	11.5	0
+250	11.5	0
+251	11.5	0
+252	11.5	0
+253	11.5	0
+254	11.5	0
+255	11.5	0
+256	11.5	0
+257	11.5	0
+258	11.5	0
+259	11.5	0
+260	11.5	0
+261	11.5	0
+262	11.5	0
+263	11.5	0
+264	11.5	0
+265	11.5	0
+266	11.5	0
+267	11.5	0
+268	11.5	0
+269	11.5	0
+270	11.5	0
+271	11.5	0
+272	11.5	0
+273	11.5	0
+274	11.5	0
+275	11.5	0
+276	11.5	0
+277	11.5	0
+278	11.5	0
+279	11.5	0
+280	11.5	0
+281	11.5	0
+282	11.5	0
+283	11.5	0
+284	11.5	0
+285	11.5	0
+286	11.5	0
+287	11.5	0
+288	11.5	0
+289	11.5	0
+290	11.5	0
+291	11.5	0
+292	11.5	0
+293	11.5	0
+294	11.5	0
+295	11.5	0
+296	11.5	0
+297	11.5	0
+298	11.5	0
+299	11.5	0
+300	11.5	0
+301	11.5	0
+302	11.5	0
+303	11.5	0
+304	11.5	0
+305	11.5	0
+306	11.5	0
+307	11.5	0
+308	11.5	0
+309	11.5	0
+310	11.5	0
+311	11.5	0
+312	11.5	0
+313	11.5	0
+314	11.5	0
+315	11.5	0
+316	11.5	0
+317	11.5	0
+318	11.5	0
+319	11.5	0
+320	11.5	0
+321	11.5	0
+322	11.5	0
+323	11.5	0
+324	11.5	0
+325	11.5	0
+326	11.5	0
+327	11.5	0
+328	11.5	0
+329	11.5	0
+330	11.5	0
+331	11.5	0
+332	11.5	0
+333	11.5	0
+334	11.5	0
+335	11.5	0
+336	11.5	0
+337	11.5	0
+338	11.5	0
+339	11.5	0
+340	11.5	0
+341	11.5	0
+342	11.5	0
+343	11.5	0
+344	11.5	0
+345	11.5	0
+346	11.5	0
+347	11.5	0
+348	11.5	0
+349	11.5	0
+350	11.5	0
+351	11.5	0
+352	11.5	0
+353	11.5	0
+354	11.5	0
+355	11.5	0
+356	11.5	0
+357	11.5	0
+358	11.5	0
+359	11.5	0
+360	11.5	0
+0	12	0
+1	12	0
+2	12	0
+3	12	0
+4	12	0
+5	12	0
+6	12	0
+7	12	0
+8	12	0
+9	12	0
+10	12	0
+11	12	0
+12	12	0
+13	12	0
+14	12	0
+15	12	0
+16	12	0
+17	12	0
+18	12	0
+19	12	0
+20	12	0
+21	12	0
+22	12	0
+23	12	0
+24	12	0
+25	12	0
+26	12	0
+27	12	0
+28	12	0
+29	12	0
+30	12	0
+31	12	0
+32	12	0
+33	12	0
+34	12	0
+35	12	0
+36	12	0
+37	12	0
+38	12	0
+39	12	0
+40	12	0
+41	12	0
+42	12	0
+43	12	0
+44	12	0
+45	12	0
+46	12	0
+47	12	0
+48	12	0
+49	12	0
+50	12	0
+51	12	0
+52	12	0
+53	12	0
+54	12	0
+55	12	0
+56	12	0
+57	12	0
+58	12	0
+59	12	0
+60	12	0
+61	12	0
+62	12	0
+63	12	0
+64	12	0
+65	12	0
+66	12	0
+67	12	0
+68	12	0
+69	12	0
+70	12	0
+71	12	0
+72	12	0
+73	12	0
+74	12	0
+75	12	0
+76	12	0
+77	12	0
+78	12	0
+79	12	0
+80	12	0
+81	12	0
+82	12	0
+83	12	0
+84	12	0
+85	12	0
+86	12	0
+87	12	0
+88	12	0
+89	12	0
+90	12	0
+91	12	0
+92	12	0
+93	12	0
+94	12	0
+95	12	0
+96	12	0
+97	12	0
+98	12	0
+99	12	0
+100	12	0
+101	12	0
+102	12	0
+103	12	0
+104	12	0
+105	12	0
+106	12	0
+107	12	0
+108	12	0
+109	12	0
+110	12	0
+111	12	0
+112	12	0
+113	12	0
+114	12	0
+115	12	0
+116	12	0
+117	12	0
+118	12	0
+119	12	0
+120	12	0
+121	12	0
+122	12	0
+123	12	0
+124	12	0
+125	12	0
+126	12	0
+127	12	0
+128	12	0
+129	12	0
+130	12	0
+131	12	0
+132	12	0
+133	12	0
+134	12	0
+135	12	0
+136	12	0
+137	12	0
+138	12	0
+139	12	0
+140	12	0
+141	12	0
+142	12	0
+143	12	0
+144	12	0
+145	12	0
+146	12	0
+147	12	0
+148	12	0
+149	12	0
+150	12	0
+151	12	0
+152	12	0
+153	12	0
+154	12	0
+155	12	0
+156	12	0
+157	12	0
+158	12	0
+159	12	0
+160	12	0
+161	12	0
+162	12	0
+163	12	0
+164	12	0
+165	12	0
+166	12	0
+167	12	0
+168	12	0
+169	12	0
+170	12	0
+171	12	0
+172	12	0
+173	12	0
+174	12	0
+175	12	0
+176	12	0
+177	12	0
+178	12	0
+179	12	0
+180	12	0
+181	12	0
+182	12	0
+183	12	0
+184	12	0
+185	12	0
+186	12	0
+187	12	0
+188	12	0
+189	12	0
+190	12	0
+191	12	0
+192	12	0
+193	12	0
+194	12	0
+195	12	0
+196	12	0
+197	12	0
+198	12	0
+199	12	0
+200	12	0
+201	12	0
+202	12	0
+203	12	0
+204	12	0
+205	12	0
+206	12	0
+207	12	0
+208	12	0
+209	12	0
+210	12	0
+211	12	0
+212	12	0
+213	12	0
+214	12	0
+215	12	0
+216	12	0
+217	12	0
+218	12	0
+219	12	0
+220	12	0
+221	12	0
+222	12	0
+223	12	0
+224	12	0
+225	12	0
+226	12	0
+227	12	0
+228	12	0
+229	12	0
+230	12	0
+231	12	0
+232	12	0
+233	12	0
+234	12	0
+235	12	0
+236	12	0
+237	12	0
+238	12	0
+239	12	0
+240	12	0
+241	12	0
+242	12	0
+243	12	0
+244	12	0
+245	12	0
+246	12	0
+247	12	0
+248	12	0
+249	12	0
+250	12	0
+251	12	0
+252	12	0
+253	12	0
+254	12	0
+255	12	0
+256	12	0
+257	12	0
+258	12	0
+259	12	0
+260	12	0
+261	12	0
+262	12	0
+263	12	0
+264	12	0
+265	12	0
+266	12	0
+267	12	0
+268	12	0
+269	12	0
+270	12	0
+271	12	0
+272	12	0
+273	12	0
+274	12	0
+275	12	0
+276	12	0
+277	12	0
+278	12	0
+279	12	0
+280	12	0
+281	12	0
+282	12	0
+283	12	0
+284	12	0
+285	12	0
+286	12	0
+287	12	0
+288	12	0
+289	12	0
+290	12	0
+291	12	0
+292	12	0
+293	12	0
+294	12	0
+295	12	0
+296	12	0
+297	12	0
+298	12	0
+299	12	0
+300	12	0
+301	12	0
+302	12	0
+303	12	0
+304	12	0
+305	12	0
+306	12	0
+307	12	0
+308	12	0
+309	12	0
+310	12	0
+311	12	0
+312	12	0
+313	12	0
+314	12	0
+315	12	0
+316	12	0
+317	12	0
+318	12	0
+319	12	0
+320	12	0
+321	12	0
+322	12	0
+323	12	0
+324	12	0
+325	12	0
+326	12	0
+327	12	0
+328	12	0
+329	12	0
+330	12	0
+331	12	0
+332	12	0
+333	12	0
+334	12	0
+335	12	0
+336	12	0
+337	12	0
+338	12	0
+339	12	0
+340	12	0
+341	12	0
+342	12	0
+343	12	0
+344	12	0
+345	12	0
+346	12	0
+347	12	0
+348	12	0
+349	12	0
+350	12	0
+351	12	0
+352	12	0
+353	12	0
+354	12	0
+355	12	0
+356	12	0
+357	12	0
+358	12	0
+359	12	0
+360	12	0
+0	12.5	0
+1	12.5	0
+2	12.5	0
+3	12.5	0
+4	12.5	0
+5	12.5	0
+6	12.5	0
+7	12.5	0
+8	12.5	0
+9	12.5	0
+10	12.5	0
+11	12.5	0
+12	12.5	0
+13	12.5	0
+14	12.5	0
+15	12.5	0
+16	12.5	0
+17	12.5	0
+18	12.5	0
+19	12.5	0
+20	12.5	0
+21	12.5	0
+22	12.5	0
+23	12.5	0
+24	12.5	0
+25	12.5	0
+26	12.5	0
+27	12.5	0
+28	12.5	0
+29	12.5	0
+30	12.5	0
+31	12.5	0
+32	12.5	0
+33	12.5	0
+34	12.5	0
+35	12.5	0
+36	12.5	0
+37	12.5	0
+38	12.5	0
+39	12.5	0
+40	12.5	0
+41	12.5	0
+42	12.5	0
+43	12.5	0
+44	12.5	0
+45	12.5	0
+46	12.5	0
+47	12.5	0
+48	12.5	0
+49	12.5	0
+50	12.5	0
+51	12.5	0
+52	12.5	0
+53	12.5	0
+54	12.5	0
+55	12.5	0
+56	12.5	0
+57	12.5	0
+58	12.5	0
+59	12.5	0
+60	12.5	0
+61	12.5	0
+62	12.5	0
+63	12.5	0
+64	12.5	0
+65	12.5	0
+66	12.5	0
+67	12.5	0
+68	12.5	0
+69	12.5	0
+70	12.5	0
+71	12.5	0
+72	12.5	0
+73	12.5	0
+74	12.5	0
+75	12.5	0
+76	12.5	0
+77	12.5	0
+78	12.5	0
+79	12.5	0
+80	12.5	0
+81	12.5	0
+82	12.5	0
+83	12.5	0
+84	12.5	0
+85	12.5	0
+86	12.5	0
+87	12.5	0
+88	12.5	0
+89	12.5	0
+90	12.5	0
+91	12.5	0
+92	12.5	0
+93	12.5	0
+94	12.5	0
+95	12.5	0
+96	12.5	0
+97	12.5	0
+98	12.5	0
+99	12.5	0
+100	12.5	0
+101	12.5	0
+102	12.5	0
+103	12.5	0
+104	12.5	0
+105	12.5	0
+106	12.5	0
+107	12.5	0
+108	12.5	0
+109	12.5	0
+110	12.5	0
+111	12.5	0
+112	12.5	0
+113	12.5	0
+114	12.5	0
+115	12.5	0
+116	12.5	0
+117	12.5	0
+118	12.5	0
+119	12.5	0
+120	12.5	0
+121	12.5	0
+122	12.5	0
+123	12.5	0
+124	12.5	0
+125	12.5	0
+126	12.5	0
+127	12.5	0
+128	12.5	0
+129	12.5	0
+130	12.5	0
+131	12.5	0
+132	12.5	0
+133	12.5	0
+134	12.5	0
+135	12.5	0
+136	12.5	0
+137	12.5	0
+138	12.5	0
+139	12.5	0
+140	12.5	0
+141	12.5	0
+142	12.5	0
+143	12.5	0
+144	12.5	0
+145	12.5	0
+146	12.5	0
+147	12.5	0
+148	12.5	0
+149	12.5	0
+150	12.5	0
+151	12.5	0
+152	12.5	0
+153	12.5	0
+154	12.5	0
+155	12.5	0
+156	12.5	0
+157	12.5	0
+158	12.5	0
+159	12.5	0
+160	12.5	0
+161	12.5	0
+162	12.5	0
+163	12.5	0
+164	12.5	0
+165	12.5	0
+166	12.5	0
+167	12.5	0
+168	12.5	0
+169	12.5	0
+170	12.5	0
+171	12.5	0
+172	12.5	0
+173	12.5	0
+174	12.5	0
+175	12.5	0
+176	12.5	0
+177	12.5	0
+178	12.5	0
+179	12.5	0
+180	12.5	0
+181	12.5	0
+182	12.5	0
+183	12.5	0
+184	12.5	0
+185	12.5	0
+186	12.5	0
+187	12.5	0
+188	12.5	0
+189	12.5	0
+190	12.5	0
+191	12.5	0
+192	12.5	0
+193	12.5	0
+194	12.5	0
+195	12.5	0
+196	12.5	0
+197	12.5	0
+198	12.5	0
+199	12.5	0
+200	12.5	0
+201	12.5	0
+202	12.5	0
+203	12.5	0
+204	12.5	0
+205	12.5	0
+206	12.5	0
+207	12.5	0
+208	12.5	0
+209	12.5	0
+210	12.5	0
+211	12.5	0
+212	12.5	0
+213	12.5	0
+214	12.5	0
+215	12.5	0
+216	12.5	0
+217	12.5	0
+218	12.5	0
+219	12.5	0
+220	12.5	0
+221	12.5	0
+222	12.5	0
+223	12.5	0
+224	12.5	0
+225	12.5	0
+226	12.5	0
+227	12.5	0
+228	12.5	0
+229	12.5	0
+230	12.5	0
+231	12.5	0
+232	12.5	0
+233	12.5	0
+234	12.5	0
+235	12.5	0
+236	12.5	0
+237	12.5	0
+238	12.5	0
+239	12.5	0
+240	12.5	0
+241	12.5	0
+242	12.5	0
+243	12.5	0
+244	12.5	0
+245	12.5	0
+246	12.5	0
+247	12.5	0
+248	12.5	0
+249	12.5	0
+250	12.5	0
+251	12.5	0
+252	12.5	0
+253	12.5	0
+254	12.5	0
+255	12.5	0
+256	12.5	0
+257	12.5	0
+258	12.5	0
+259	12.5	0
+260	12.5	0
+261	12.5	0
+262	12.5	0
+263	12.5	0
+264	12.5	0
+265	12.5	0
+266	12.5	0
+267	12.5	0
+268	12.5	0
+269	12.5	0
+270	12.5	0
+271	12.5	0
+272	12.5	0
+273	12.5	0
+274	12.5	0
+275	12.5	0
+276	12.5	0
+277	12.5	0
+278	12.5	0
+279	12.5	0
+280	12.5	0
+281	12.5	0
+282	12.5	0
+283	12.5	0
+284	12.5	0
+285	12.5	0
+286	12.5	0
+287	12.5	0
+288	12.5	0
+289	12.5	0
+290	12.5	0
+291	12.5	0
+292	12.5	0
+293	12.5	0
+294	12.5	0
+295	12.5	0
+296	12.5	0
+297	12.5	0
+298	12.5	0
+299	12.5	0
+300	12.5	0
+301	12.5	0
+302	12.5	0
+303	12.5	0
+304	12.5	0
+305	12.5	0
+306	12.5	0
+307	12.5	0
+308	12.5	0
+309	12.5	0
+310	12.5	0
+311	12.5	0
+312	12.5	0
+313	12.5	0
+314	12.5	0
+315	12.5	0
+316	12.5	0
+317	12.5	0
+318	12.5	0
+319	12.5	0
+320	12.5	0
+321	12.5	0
+322	12.5	0
+323	12.5	0
+324	12.5	0
+325	12.5	0
+326	12.5	0
+327	12.5	0
+328	12.5	0
+329	12.5	0
+330	12.5	0
+331	12.5	0
+332	12.5	0
+333	12.5	0
+334	12.5	0
+335	12.5	0
+336	12.5	0
+337	12.5	0
+338	12.5	0
+339	12.5	0
+340	12.5	0
+341	12.5	0
+342	12.5	0
+343	12.5	0
+344	12.5	0
+345	12.5	0
+346	12.5	0
+347	12.5	0
+348	12.5	0
+349	12.5	0
+350	12.5	0
+351	12.5	0
+352	12.5	0
+353	12.5	0
+354	12.5	0
+355	12.5	0
+356	12.5	0
+357	12.5	0
+358	12.5	0
+359	12.5	0
+360	12.5	0
+0	13	0
+1	13	0
+2	13	0
+3	13	0
+4	13	0
+5	13	0
+6	13	0
+7	13	0
+8	13	0
+9	13	0
+10	13	0
+11	13	0
+12	13	0
+13	13	0
+14	13	0
+15	13	0
+16	13	0
+17	13	0
+18	13	0
+19	13	0
+20	13	0
+21	13	0
+22	13	0
+23	13	0
+24	13	0
+25	13	0
+26	13	0
+27	13	0
+28	13	0
+29	13	0
+30	13	0
+31	13	0
+32	13	0
+33	13	0
+34	13	0
+35	13	0
+36	13	0
+37	13	0
+38	13	0
+39	13	0
+40	13	0
+41	13	0
+42	13	0
+43	13	0
+44	13	0
+45	13	0
+46	13	0
+47	13	0
+48	13	0
+49	13	0
+50	13	0
+51	13	0
+52	13	0
+53	13	0
+54	13	0
+55	13	0
+56	13	0
+57	13	0
+58	13	0
+59	13	0
+60	13	0
+61	13	0
+62	13	0
+63	13	0
+64	13	0
+65	13	0
+66	13	0
+67	13	0
+68	13	0
+69	13	0
+70	13	0
+71	13	0
+72	13	0
+73	13	0
+74	13	0
+75	13	0
+76	13	0
+77	13	0
+78	13	0
+79	13	0
+80	13	0
+81	13	0
+82	13	0
+83	13	0
+84	13	0
+85	13	0
+86	13	0
+87	13	0
+88	13	0
+89	13	0
+90	13	0
+91	13	0
+92	13	0
+93	13	0
+94	13	0
+95	13	0
+96	13	0
+97	13	0
+98	13	0
+99	13	0
+100	13	0
+101	13	0
+102	13	0
+103	13	0
+104	13	0
+105	13	0
+106	13	0
+107	13	0
+108	13	0
+109	13	0
+110	13	0
+111	13	0
+112	13	0
+113	13	0
+114	13	0
+115	13	0
+116	13	0
+117	13	0
+118	13	0
+119	13	0
+120	13	0
+121	13	0
+122	13	0
+123	13	0
+124	13	0
+125	13	0
+126	13	0
+127	13	0
+128	13	0
+129	13	0
+130	13	0
+131	13	0
+132	13	0
+133	13	0
+134	13	0
+135	13	0
+136	13	0
+137	13	0
+138	13	0
+139	13	0
+140	13	0
+141	13	0
+142	13	0
+143	13	0
+144	13	0
+145	13	0
+146	13	0
+147	13	0
+148	13	0
+149	13	0
+150	13	0
+151	13	0
+152	13	0
+153	13	0
+154	13	0
+155	13	0
+156	13	0
+157	13	0
+158	13	0
+159	13	0
+160	13	0
+161	13	0
+162	13	0
+163	13	0
+164	13	0
+165	13	0
+166	13	0
+167	13	0
+168	13	0
+169	13	0
+170	13	0
+171	13	0
+172	13	0
+173	13	0
+174	13	0
+175	13	0
+176	13	0
+177	13	0
+178	13	0
+179	13	0
+180	13	0
+181	13	0
+182	13	0
+183	13	0
+184	13	0
+185	13	0
+186	13	0
+187	13	0
+188	13	0
+189	13	0
+190	13	0
+191	13	0
+192	13	0
+193	13	0
+194	13	0
+195	13	0
+196	13	0
+197	13	0
+198	13	0
+199	13	0
+200	13	0
+201	13	0
+202	13	0
+203	13	0
+204	13	0
+205	13	0
+206	13	0
+207	13	0
+208	13	0
+209	13	0
+210	13	0
+211	13	0
+212	13	0
+213	13	0
+214	13	0
+215	13	0
+216	13	0
+217	13	0
+218	13	0
+219	13	0
+220	13	0
+221	13	0
+222	13	0
+223	13	0
+224	13	0
+225	13	0
+226	13	0
+227	13	0
+228	13	0
+229	13	0
+230	13	0
+231	13	0
+232	13	0
+233	13	0
+234	13	0
+235	13	0
+236	13	0
+237	13	0
+238	13	0
+239	13	0
+240	13	0
+241	13	0
+242	13	0
+243	13	0
+244	13	0
+245	13	0
+246	13	0
+247	13	0
+248	13	0
+249	13	0
+250	13	0
+251	13	0
+252	13	0
+253	13	0
+254	13	0
+255	13	0
+256	13	0
+257	13	0
+258	13	0
+259	13	0
+260	13	0
+261	13	0
+262	13	0
+263	13	0
+264	13	0
+265	13	0
+266	13	0
+267	13	0
+268	13	0
+269	13	0
+270	13	0
+271	13	0
+272	13	0
+273	13	0
+274	13	0
+275	13	0
+276	13	0
+277	13	0
+278	13	0
+279	13	0
+280	13	0
+281	13	0
+282	13	0
+283	13	0
+284	13	0
+285	13	0
+286	13	0
+287	13	0
+288	13	0
+289	13	0
+290	13	0
+291	13	0
+292	13	0
+293	13	0
+294	13	0
+295	13	0
+296	13	0
+297	13	0
+298	13	0
+299	13	0
+300	13	0
+301	13	0
+302	13	0
+303	13	0
+304	13	0
+305	13	0
+306	13	0
+307	13	0
+308	13	0
+309	13	0
+310	13	0
+311	13	0
+312	13	0
+313	13	0
+314	13	0
+315	13	0
+316	13	0
+317	13	0
+318	13	0
+319	13	0
+320	13	0
+321	13	0
+322	13	0
+323	13	0
+324	13	0
+325	13	0
+326	13	0
+327	13	0
+328	13	0
+329	13	0
+330	13	0
+331	13	0
+332	13	0
+333	13	0
+334	13	0
+335	13	0
+336	13	0
+337	13	0
+338	13	0
+339	13	0
+340	13	0
+341	13	0
+342	13	0
+343	13	0
+344	13	0
+345	13	0
+346	13	0
+347	13	0
+348	13	0
+349	13	0
+350	13	0
+351	13	0
+352	13	0
+353	13	0
+354	13	0
+355	13	0
+356	13	0
+357	13	0
+358	13	0
+359	13	0
+360	13	0
+0	13.5	0
+1	13.5	0
+2	13.5	0
+3	13.5	0
+4	13.5	0
+5	13.5	0
+6	13.5	0
+7	13.5	0
+8	13.5	0
+9	13.5	0
+10	13.5	0
+11	13.5	0
+12	13.5	0
+13	13.5	0
+14	13.5	0
+15	13.5	0
+16	13.5	0
+17	13.5	0
+18	13.5	0
+19	13.5	0
+20	13.5	0
+21	13.5	0
+22	13.5	0
+23	13.5	0
+24	13.5	0
+25	13.5	0
+26	13.5	0
+27	13.5	0
+28	13.5	0
+29	13.5	0
+30	13.5	0
+31	13.5	0
+32	13.5	0
+33	13.5	0
+34	13.5	0
+35	13.5	0
+36	13.5	0
+37	13.5	0
+38	13.5	0
+39	13.5	0
+40	13.5	0
+41	13.5	0
+42	13.5	0
+43	13.5	0
+44	13.5	0
+45	13.5	0
+46	13.5	0
+47	13.5	0
+48	13.5	0
+49	13.5	0
+50	13.5	0
+51	13.5	0
+52	13.5	0
+53	13.5	0
+54	13.5	0
+55	13.5	0
+56	13.5	0
+57	13.5	0
+58	13.5	0
+59	13.5	0
+60	13.5	0
+61	13.5	0
+62	13.5	0
+63	13.5	0
+64	13.5	0
+65	13.5	0
+66	13.5	0
+67	13.5	0
+68	13.5	0
+69	13.5	0
+70	13.5	0
+71	13.5	0
+72	13.5	0
+73	13.5	0
+74	13.5	0
+75	13.5	0
+76	13.5	0
+77	13.5	0
+78	13.5	0
+79	13.5	0
+80	13.5	0
+81	13.5	0
+82	13.5	0
+83	13.5	0
+84	13.5	0
+85	13.5	0
+86	13.5	0
+87	13.5	0
+88	13.5	0
+89	13.5	0
+90	13.5	0
+91	13.5	0
+92	13.5	0
+93	13.5	0
+94	13.5	0
+95	13.5	0
+96	13.5	0
+97	13.5	0
+98	13.5	0
+99	13.5	0
+100	13.5	0
+101	13.5	0
+102	13.5	0
+103	13.5	0
+104	13.5	0
+105	13.5	0
+106	13.5	0
+107	13.5	0
+108	13.5	0
+109	13.5	0
+110	13.5	0
+111	13.5	0
+112	13.5	0
+113	13.5	0
+114	13.5	0
+115	13.5	0
+116	13.5	0
+117	13.5	0
+118	13.5	0
+119	13.5	0
+120	13.5	0
+121	13.5	0
+122	13.5	0
+123	13.5	0
+124	13.5	0
+125	13.5	0
+126	13.5	0
+127	13.5	0
+128	13.5	0
+129	13.5	0
+130	13.5	0
+131	13.5	0
+132	13.5	0
+133	13.5	0
+134	13.5	0
+135	13.5	0
+136	13.5	0
+137	13.5	0
+138	13.5	0
+139	13.5	0
+140	13.5	0
+141	13.5	0
+142	13.5	0
+143	13.5	0
+144	13.5	0
+145	13.5	0
+146	13.5	0
+147	13.5	0
+148	13.5	0
+149	13.5	0
+150	13.5	0
+151	13.5	0
+152	13.5	0
+153	13.5	0
+154	13.5	0
+155	13.5	0
+156	13.5	0
+157	13.5	0
+158	13.5	0
+159	13.5	0
+160	13.5	0
+161	13.5	0
+162	13.5	0
+163	13.5	0
+164	13.5	0
+165	13.5	0
+166	13.5	0
+167	13.5	0
+168	13.5	0
+169	13.5	0
+170	13.5	0
+171	13.5	0
+172	13.5	0
+173	13.5	0
+174	13.5	0
+175	13.5	0
+176	13.5	0
+177	13.5	0
+178	13.5	0
+179	13.5	0
+180	13.5	0
+181	13.5	0
+182	13.5	0
+183	13.5	0
+184	13.5	0
+185	13.5	0
+186	13.5	0
+187	13.5	0
+188	13.5	0
+189	13.5	0
+190	13.5	0
+191	13.5	0
+192	13.5	0
+193	13.5	0
+194	13.5	0
+195	13.5	0
+196	13.5	0
+197	13.5	0
+198	13.5	0
+199	13.5	0
+200	13.5	0
+201	13.5	0
+202	13.5	0
+203	13.5	0
+204	13.5	0
+205	13.5	0
+206	13.5	0
+207	13.5	0
+208	13.5	0
+209	13.5	0
+210	13.5	0
+211	13.5	0
+212	13.5	0
+213	13.5	0
+214	13.5	0
+215	13.5	0
+216	13.5	0
+217	13.5	0
+218	13.5	0
+219	13.5	0
+220	13.5	0
+221	13.5	0
+222	13.5	0
+223	13.5	0
+224	13.5	0
+225	13.5	0
+226	13.5	0
+227	13.5	0
+228	13.5	0
+229	13.5	0
+230	13.5	0
+231	13.5	0
+232	13.5	0
+233	13.5	0
+234	13.5	0
+235	13.5	0
+236	13.5	0
+237	13.5	0
+238	13.5	0
+239	13.5	0
+240	13.5	0
+241	13.5	0
+242	13.5	0
+243	13.5	0
+244	13.5	0
+245	13.5	0
+246	13.5	0
+247	13.5	0
+248	13.5	0
+249	13.5	0
+250	13.5	0
+251	13.5	0
+252	13.5	0
+253	13.5	0
+254	13.5	0
+255	13.5	0
+256	13.5	0
+257	13.5	0
+258	13.5	0
+259	13.5	0
+260	13.5	0
+261	13.5	0
+262	13.5	0
+263	13.5	0
+264	13.5	0
+265	13.5	0
+266	13.5	0
+267	13.5	0
+268	13.5	0
+269	13.5	0
+270	13.5	0
+271	13.5	0
+272	13.5	0
+273	13.5	0
+274	13.5	0
+275	13.5	0
+276	13.5	0
+277	13.5	0
+278	13.5	0
+279	13.5	0
+280	13.5	0
+281	13.5	0
+282	13.5	0
+283	13.5	0
+284	13.5	0
+285	13.5	0
+286	13.5	0
+287	13.5	0
+288	13.5	0
+289	13.5	0
+290	13.5	0
+291	13.5	0
+292	13.5	0
+293	13.5	0
+294	13.5	0
+295	13.5	0
+296	13.5	0
+297	13.5	0
+298	13.5	0
+299	13.5	0
+300	13.5	0
+301	13.5	0
+302	13.5	0
+303	13.5	0
+304	13.5	0
+305	13.5	0
+306	13.5	0
+307	13.5	0
+308	13.5	0
+309	13.5	0
+310	13.5	0
+311	13.5	0
+312	13.5	0
+313	13.5	0
+314	13.5	0
+315	13.5	0
+316	13.5	0
+317	13.5	0
+318	13.5	0
+319	13.5	0
+320	13.5	0
+321	13.5	0
+322	13.5	0
+323	13.5	0
+324	13.5	0
+325	13.5	0
+326	13.5	0
+327	13.5	0
+328	13.5	0
+329	13.5	0
+330	13.5	0
+331	13.5	0
+332	13.5	0
+333	13.5	0
+334	13.5	0
+335	13.5	0
+336	13.5	0
+337	13.5	0
+338	13.5	0
+339	13.5	0
+340	13.5	0
+341	13.5	0
+342	13.5	0
+343	13.5	0
+344	13.5	0
+345	13.5	0
+346	13.5	0
+347	13.5	0
+348	13.5	0
+349	13.5	0
+350	13.5	0
+351	13.5	0
+352	13.5	0
+353	13.5	0
+354	13.5	0
+355	13.5	0
+356	13.5	0
+357	13.5	0
+358	13.5	0
+359	13.5	0
+360	13.5	0
+0	14	0
+1	14	0
+2	14	0
+3	14	0
+4	14	0
+5	14	0
+6	14	0
+7	14	0
+8	14	0
+9	14	0
+10	14	0
+11	14	0
+12	14	0
+13	14	0
+14	14	0
+15	14	0
+16	14	0
+17	14	0
+18	14	0
+19	14	0
+20	14	0
+21	14	0
+22	14	0
+23	14	0
+24	14	0
+25	14	0
+26	14	0
+27	14	0
+28	14	0
+29	14	0
+30	14	0
+31	14	0
+32	14	0
+33	14	0
+34	14	0
+35	14	0
+36	14	0
+37	14	0
+38	14	0
+39	14	0
+40	14	0
+41	14	0
+42	14	0
+43	14	0
+44	14	0
+45	14	0
+46	14	0
+47	14	0
+48	14	0
+49	14	0
+50	14	0
+51	14	0
+52	14	0
+53	14	0
+54	14	0
+55	14	0
+56	14	0
+57	14	0
+58	14	0
+59	14	0
+60	14	0
+61	14	0
+62	14	0
+63	14	0
+64	14	0
+65	14	0
+66	14	0
+67	14	0
+68	14	0
+69	14	0
+70	14	0
+71	14	0
+72	14	0
+73	14	0
+74	14	0
+75	14	0
+76	14	0
+77	14	0
+78	14	0
+79	14	0
+80	14	0
+81	14	0
+82	14	0
+83	14	0
+84	14	0
+85	14	0
+86	14	0
+87	14	0
+88	14	0
+89	14	0
+90	14	0
+91	14	0
+92	14	0
+93	14	0
+94	14	0
+95	14	0
+96	14	0
+97	14	0
+98	14	0
+99	14	0
+100	14	0
+101	14	0
+102	14	0
+103	14	0
+104	14	0
+105	14	0
+106	14	0
+107	14	0
+108	14	0
+109	14	0
+110	14	0
+111	14	0
+112	14	0
+113	14	0
+114	14	0
+115	14	0
+116	14	0
+117	14	0
+118	14	0
+119	14	0
+120	14	0
+121	14	0
+122	14	0
+123	14	0
+124	14	0
+125	14	0
+126	14	0
+127	14	0
+128	14	0
+129	14	0
+130	14	0
+131	14	0
+132	14	0
+133	14	0
+134	14	0
+135	14	0
+136	14	0
+137	14	0
+138	14	0
+139	14	0
+140	14	0
+141	14	0
+142	14	0
+143	14	0
+144	14	0
+145	14	0
+146	14	0
+147	14	0
+148	14	0
+149	14	0
+150	14	0
+151	14	0
+152	14	0
+153	14	0
+154	14	0
+155	14	0
+156	14	0
+157	14	0
+158	14	0
+159	14	0
+160	14	0
+161	14	0
+162	14	0
+163	14	0
+164	14	0
+165	14	0
+166	14	0
+167	14	0
+168	14	0
+169	14	0
+170	14	0
+171	14	0
+172	14	0
+173	14	0
+174	14	0
+175	14	0
+176	14	0
+177	14	0
+178	14	0
+179	14	0
+180	14	0
+181	14	0
+182	14	0
+183	14	0
+184	14	0
+185	14	0
+186	14	0
+187	14	0
+188	14	0
+189	14	0
+190	14	0
+191	14	0
+192	14	0
+193	14	0
+194	14	0
+195	14	0
+196	14	0
+197	14	0
+198	14	0
+199	14	0
+200	14	0
+201	14	0
+202	14	0
+203	14	0
+204	14	0
+205	14	0
+206	14	0
+207	14	0
+208	14	0
+209	14	0
+210	14	0
+211	14	0
+212	14	0
+213	14	0
+214	14	0
+215	14	0
+216	14	0
+217	14	0
+218	14	0
+219	14	0
+220	14	0
+221	14	0
+222	14	0
+223	14	0
+224	14	0
+225	14	0
+226	14	0
+227	14	0
+228	14	0
+229	14	0
+230	14	0
+231	14	0
+232	14	0
+233	14	0
+234	14	0
+235	14	0
+236	14	0
+237	14	0
+238	14	0
+239	14	0
+240	14	0
+241	14	0
+242	14	0
+243	14	0
+244	14	0
+245	14	0
+246	14	0
+247	14	0
+248	14	0
+249	14	0
+250	14	0
+251	14	0
+252	14	0
+253	14	0
+254	14	0
+255	14	0
+256	14	0
+257	14	0
+258	14	0
+259	14	0
+260	14	0
+261	14	0
+262	14	0
+263	14	0
+264	14	0
+265	14	0
+266	14	0
+267	14	0
+268	14	0
+269	14	0
+270	14	0
+271	14	0
+272	14	0
+273	14	0
+274	14	0
+275	14	0
+276	14	0
+277	14	0
+278	14	0
+279	14	0
+280	14	0
+281	14	0
+282	14	0
+283	14	0
+284	14	0
+285	14	0
+286	14	0
+287	14	0
+288	14	0
+289	14	0
+290	14	0
+291	14	0
+292	14	0
+293	14	0
+294	14	0
+295	14	0
+296	14	0
+297	14	0
+298	14	0
+299	14	0
+300	14	0
+301	14	0
+302	14	0
+303	14	0
+304	14	0
+305	14	0
+306	14	0
+307	14	0
+308	14	0
+309	14	0
+310	14	0
+311	14	0
+312	14	0
+313	14	0
+314	14	0
+315	14	0
+316	14	0
+317	14	0
+318	14	0
+319	14	0
+320	14	0
+321	14	0
+322	14	0
+323	14	0
+324	14	0
+325	14	0
+326	14	0
+327	14	0
+328	14	0
+329	14	0
+330	14	0
+331	14	0
+332	14	0
+333	14	0
+334	14	0
+335	14	0
+336	14	0
+337	14	0
+338	14	0
+339	14	0
+340	14	0
+341	14	0
+342	14	0
+343	14	0
+344	14	0
+345	14	0
+346	14	0
+347	14	0
+348	14	0
+349	14	0
+350	14	0
+351	14	0
+352	14	0
+353	14	0
+354	14	0
+355	14	0
+356	14	0
+357	14	0
+358	14	0
+359	14	0
+360	14	0
+0	14.5	0
+1	14.5	0
+2	14.5	0
+3	14.5	0
+4	14.5	0
+5	14.5	0
+6	14.5	0
+7	14.5	0
+8	14.5	0
+9	14.5	0
+10	14.5	0
+11	14.5	0
+12	14.5	0
+13	14.5	0
+14	14.5	0
+15	14.5	0
+16	14.5	0
+17	14.5	0
+18	14.5	0
+19	14.5	0
+20	14.5	0
+21	14.5	0
+22	14.5	0
+23	14.5	0
+24	14.5	0
+25	14.5	0
+26	14.5	0
+27	14.5	0
+28	14.5	0
+29	14.5	0
+30	14.5	0
+31	14.5	0
+32	14.5	0
+33	14.5	0
+34	14.5	0
+35	14.5	0
+36	14.5	0
+37	14.5	0
+38	14.5	0
+39	14.5	0
+40	14.5	0
+41	14.5	0
+42	14.5	0
+43	14.5	0
+44	14.5	0
+45	14.5	0
+46	14.5	0
+47	14.5	0
+48	14.5	0
+49	14.5	0
+50	14.5	0
+51	14.5	0
+52	14.5	0
+53	14.5	0
+54	14.5	0
+55	14.5	0
+56	14.5	0
+57	14.5	0
+58	14.5	0
+59	14.5	0
+60	14.5	0
+61	14.5	0
+62	14.5	0
+63	14.5	0
+64	14.5	0
+65	14.5	0
+66	14.5	0
+67	14.5	0
+68	14.5	0
+69	14.5	0
+70	14.5	0
+71	14.5	0
+72	14.5	0
+73	14.5	0
+74	14.5	0
+75	14.5	0
+76	14.5	0
+77	14.5	0
+78	14.5	0
+79	14.5	0
+80	14.5	0
+81	14.5	0
+82	14.5	0
+83	14.5	0
+84	14.5	0
+85	14.5	0
+86	14.5	0
+87	14.5	0
+88	14.5	0
+89	14.5	0
+90	14.5	0
+91	14.5	0
+92	14.5	0
+93	14.5	0
+94	14.5	0
+95	14.5	0
+96	14.5	0
+97	14.5	0
+98	14.5	0
+99	14.5	0
+100	14.5	0
+101	14.5	0
+102	14.5	0
+103	14.5	0
+104	14.5	0
+105	14.5	0
+106	14.5	0
+107	14.5	0
+108	14.5	0
+109	14.5	0
+110	14.5	0
+111	14.5	0
+112	14.5	0
+113	14.5	0
+114	14.5	0
+115	14.5	0
+116	14.5	0
+117	14.5	0
+118	14.5	0
+119	14.5	0
+120	14.5	0
+121	14.5	0
+122	14.5	0
+123	14.5	0
+124	14.5	0
+125	14.5	0
+126	14.5	0
+127	14.5	0
+128	14.5	0
+129	14.5	0
+130	14.5	0
+131	14.5	0
+132	14.5	0
+133	14.5	0
+134	14.5	0
+135	14.5	0
+136	14.5	0
+137	14.5	0
+138	14.5	0
+139	14.5	0
+140	14.5	0
+141	14.5	0
+142	14.5	0
+143	14.5	0
+144	14.5	0
+145	14.5	0
+146	14.5	0
+147	14.5	0
+148	14.5	0
+149	14.5	0
+150	14.5	0
+151	14.5	0
+152	14.5	0
+153	14.5	0
+154	14.5	0
+155	14.5	0
+156	14.5	0
+157	14.5	0
+158	14.5	0
+159	14.5	0
+160	14.5	0
+161	14.5	0
+162	14.5	0
+163	14.5	0
+164	14.5	0
+165	14.5	0
+166	14.5	0
+167	14.5	0
+168	14.5	0
+169	14.5	0
+170	14.5	0
+171	14.5	0
+172	14.5	0
+173	14.5	0
+174	14.5	0
+175	14.5	0
+176	14.5	0
+177	14.5	0
+178	14.5	0
+179	14.5	0
+180	14.5	0
+181	14.5	0
+182	14.5	0
+183	14.5	0
+184	14.5	0
+185	14.5	0
+186	14.5	0
+187	14.5	0
+188	14.5	0
+189	14.5	0
+190	14.5	0
+191	14.5	0
+192	14.5	0
+193	14.5	0
+194	14.5	0
+195	14.5	0
+196	14.5	0
+197	14.5	0
+198	14.5	0
+199	14.5	0
+200	14.5	0
+201	14.5	0
+202	14.5	0
+203	14.5	0
+204	14.5	0
+205	14.5	0
+206	14.5	0
+207	14.5	0
+208	14.5	0
+209	14.5	0
+210	14.5	0
+211	14.5	0
+212	14.5	0
+213	14.5	0
+214	14.5	0
+215	14.5	0
+216	14.5	0
+217	14.5	0
+218	14.5	0
+219	14.5	0
+220	14.5	0
+221	14.5	0
+222	14.5	0
+223	14.5	0
+224	14.5	0
+225	14.5	0
+226	14.5	0
+227	14.5	0
+228	14.5	0
+229	14.5	0
+230	14.5	0
+231	14.5	0
+232	14.5	0
+233	14.5	0
+234	14.5	0
+235	14.5	0
+236	14.5	0
+237	14.5	0
+238	14.5	0
+239	14.5	0
+240	14.5	0
+241	14.5	0
+242	14.5	0
+243	14.5	0
+244	14.5	0
+245	14.5	0
+246	14.5	0
+247	14.5	0
+248	14.5	0
+249	14.5	0
+250	14.5	0
+251	14.5	0
+252	14.5	0
+253	14.5	0
+254	14.5	0
+255	14.5	0
+256	14.5	0
+257	14.5	0
+258	14.5	0
+259	14.5	0
+260	14.5	0
+261	14.5	0
+262	14.5	0
+263	14.5	0
+264	14.5	0
+265	14.5	0
+266	14.5	0
+267	14.5	0
+268	14.5	0
+269	14.5	0
+270	14.5	0
+271	14.5	0
+272	14.5	0
+273	14.5	0
+274	14.5	0
+275	14.5	0
+276	14.5	0
+277	14.5	0
+278	14.5	0
+279	14.5	0
+280	14.5	0
+281	14.5	0
+282	14.5	0
+283	14.5	0
+284	14.5	0
+285	14.5	0
+286	14.5	0
+287	14.5	0
+288	14.5	0
+289	14.5	0
+290	14.5	0
+291	14.5	0
+292	14.5	0
+293	14.5	0
+294	14.5	0
+295	14.5	0
+296	14.5	0
+297	14.5	0
+298	14.5	0
+299	14.5	0
+300	14.5	0
+301	14.5	0
+302	14.5	0
+303	14.5	0
+304	14.5	0
+305	14.5	0
+306	14.5	0
+307	14.5	0
+308	14.5	0
+309	14.5	0
+310	14.5	0
+311	14.5	0
+312	14.5	0
+313	14.5	0
+314	14.5	0
+315	14.5	0
+316	14.5	0
+317	14.5	0
+318	14.5	0
+319	14.5	0
+320	14.5	0
+321	14.5	0
+322	14.5	0
+323	14.5	0
+324	14.5	0
+325	14.5	0
+326	14.5	0
+327	14.5	0
+328	14.5	0
+329	14.5	0
+330	14.5	0
+331	14.5	0
+332	14.5	0
+333	14.5	0
+334	14.5	0
+335	14.5	0
+336	14.5	0
+337	14.5	0
+338	14.5	0
+339	14.5	0
+340	14.5	0
+341	14.5	0
+342	14.5	0
+343	14.5	0
+344	14.5	0
+345	14.5	0
+346	14.5	0
+347	14.5	0
+348	14.5	0
+349	14.5	0
+350	14.5	0
+351	14.5	0
+352	14.5	0
+353	14.5	0
+354	14.5	0
+355	14.5	0
+356	14.5	0
+357	14.5	0
+358	14.5	0
+359	14.5	0
+360	14.5	0
+0	15	0
+1	15	0
+2	15	0
+3	15	0
+4	15	0
+5	15	0
+6	15	0
+7	15	0
+8	15	0
+9	15	0
+10	15	0
+11	15	0
+12	15	0
+13	15	0
+14	15	0
+15	15	0
+16	15	0
+17	15	0
+18	15	0
+19	15	0
+20	15	0
+21	15	0
+22	15	0
+23	15	0
+24	15	0
+25	15	0
+26	15	0
+27	15	0
+28	15	0
+29	15	0
+30	15	0
+31	15	0
+32	15	0
+33	15	0
+34	15	0
+35	15	0
+36	15	0
+37	15	0
+38	15	0
+39	15	0
+40	15	0
+41	15	0
+42	15	0
+43	15	0
+44	15	0
+45	15	0
+46	15	0
+47	15	0
+48	15	0
+49	15	0
+50	15	0
+51	15	0
+52	15	0
+53	15	0
+54	15	0
+55	15	0
+56	15	0
+57	15	0
+58	15	0
+59	15	0
+60	15	0
+61	15	0
+62	15	0
+63	15	0
+64	15	0
+65	15	0
+66	15	0
+67	15	0
+68	15	0
+69	15	0
+70	15	0
+71	15	0
+72	15	0
+73	15	0
+74	15	0
+75	15	0
+76	15	0
+77	15	0
+78	15	0
+79	15	0
+80	15	0
+81	15	0
+82	15	0
+83	15	0
+84	15	0
+85	15	0
+86	15	0
+87	15	0
+88	15	0
+89	15	0
+90	15	0
+91	15	0
+92	15	0
+93	15	0
+94	15	0
+95	15	0
+96	15	0
+97	15	0
+98	15	0
+99	15	0
+100	15	0
+101	15	0
+102	15	0
+103	15	0
+104	15	0
+105	15	0
+106	15	0
+107	15	0
+108	15	0
+109	15	0
+110	15	0
+111	15	0
+112	15	0
+113	15	0
+114	15	0
+115	15	0
+116	15	0
+117	15	0
+118	15	0
+119	15	0
+120	15	0
+121	15	0
+122	15	0
+123	15	0
+124	15	0
+125	15	0
+126	15	0
+127	15	0
+128	15	0
+129	15	0
+130	15	0
+131	15	0
+132	15	0
+133	15	0
+134	15	0
+135	15	0
+136	15	0
+137	15	0
+138	15	0
+139	15	0
+140	15	0
+141	15	0
+142	15	0
+143	15	0
+144	15	0
+145	15	0
+146	15	0
+147	15	0
+148	15	0
+149	15	0
+150	15	0
+151	15	0
+152	15	0
+153	15	0
+154	15	0
+155	15	0
+156	15	0
+157	15	0
+158	15	0
+159	15	0
+160	15	0
+161	15	0
+162	15	0
+163	15	0
+164	15	0
+165	15	0
+166	15	0
+167	15	0
+168	15	0
+169	15	0
+170	15	0
+171	15	0
+172	15	0
+173	15	0
+174	15	0
+175	15	0
+176	15	0
+177	15	0
+178	15	0
+179	15	0
+180	15	0
+181	15	0
+182	15	0
+183	15	0
+184	15	0
+185	15	0
+186	15	0
+187	15	0
+188	15	0
+189	15	0
+190	15	0
+191	15	0
+192	15	0
+193	15	0
+194	15	0
+195	15	0
+196	15	0
+197	15	0
+198	15	0
+199	15	0
+200	15	0
+201	15	0
+202	15	0
+203	15	0
+204	15	0
+205	15	0
+206	15	0
+207	15	0
+208	15	0
+209	15	0
+210	15	0
+211	15	0
+212	15	0
+213	15	0
+214	15	0
+215	15	0
+216	15	0
+217	15	0
+218	15	0
+219	15	0
+220	15	0
+221	15	0
+222	15	0
+223	15	0
+224	15	0
+225	15	0
+226	15	0
+227	15	0
+228	15	0
+229	15	0
+230	15	0
+231	15	0
+232	15	0
+233	15	0
+234	15	0
+235	15	0
+236	15	0
+237	15	0
+238	15	0
+239	15	0
+240	15	0
+241	15	0
+242	15	0
+243	15	0
+244	15	0
+245	15	0
+246	15	0
+247	15	0
+248	15	0
+249	15	0
+250	15	0
+251	15	0
+252	15	0
+253	15	0
+254	15	0
+255	15	0
+256	15	0
+257	15	0
+258	15	0
+259	15	0
+260	15	0
+261	15	0
+262	15	0
+263	15	0
+264	15	0
+265	15	0
+266	15	0
+267	15	0
+268	15	0
+269	15	0
+270	15	0
+271	15	0
+272	15	0
+273	15	0
+274	15	0
+275	15	0
+276	15	0
+277	15	0
+278	15	0
+279	15	0
+280	15	0
+281	15	0
+282	15	0
+283	15	0
+284	15	0
+285	15	0
+286	15	0
+287	15	0
+288	15	0
+289	15	0
+290	15	0
+291	15	0
+292	15	0
+293	15	0
+294	15	0
+295	15	0
+296	15	0
+297	15	0
+298	15	0
+299	15	0
+300	15	0
+301	15	0
+302	15	0
+303	15	0
+304	15	0
+305	15	0
+306	15	0
+307	15	0
+308	15	0
+309	15	0
+310	15	0
+311	15	0
+312	15	0
+313	15	0
+314	15	0
+315	15	0
+316	15	0
+317	15	0
+318	15	0
+319	15	0
+320	15	0
+321	15	0
+322	15	0
+323	15	0
+324	15	0
+325	15	0
+326	15	0
+327	15	0
+328	15	0
+329	15	0
+330	15	0
+331	15	0
+332	15	0
+333	15	0
+334	15	0
+335	15	0
+336	15	0
+337	15	0
+338	15	0
+339	15	0
+340	15	0
+341	15	0
+342	15	0
+343	15	0
+344	15	0
+345	15	0
+346	15	0
+347	15	0
+348	15	0
+349	15	0
+350	15	0
+351	15	0
+352	15	0
+353	15	0
+354	15	0
+355	15	0
+356	15	0
+357	15	0
+358	15	0
+359	15	0
+360	15	0
+0	15.5	0
+1	15.5	0
+2	15.5	0
+3	15.5	0
+4	15.5	0
+5	15.5	0
+6	15.5	0
+7	15.5	0
+8	15.5	0
+9	15.5	0
+10	15.5	0
+11	15.5	0
+12	15.5	0
+13	15.5	0
+14	15.5	0
+15	15.5	0
+16	15.5	0
+17	15.5	0
+18	15.5	0
+19	15.5	0
+20	15.5	0
+21	15.5	0
+22	15.5	0
+23	15.5	0
+24	15.5	0
+25	15.5	0
+26	15.5	0
+27	15.5	0
+28	15.5	0
+29	15.5	0
+30	15.5	0
+31	15.5	0
+32	15.5	0
+33	15.5	0
+34	15.5	0
+35	15.5	0
+36	15.5	0
+37	15.5	0
+38	15.5	0
+39	15.5	0
+40	15.5	0
+41	15.5	0
+42	15.5	0
+43	15.5	0
+44	15.5	0
+45	15.5	0
+46	15.5	0
+47	15.5	0
+48	15.5	0
+49	15.5	0
+50	15.5	0
+51	15.5	0
+52	15.5	0
+53	15.5	0
+54	15.5	0
+55	15.5	0
+56	15.5	0
+57	15.5	0
+58	15.5	0
+59	15.5	0
+60	15.5	0
+61	15.5	0
+62	15.5	0
+63	15.5	0
+64	15.5	0
+65	15.5	0
+66	15.5	0
+67	15.5	0
+68	15.5	0
+69	15.5	0
+70	15.5	0
+71	15.5	0
+72	15.5	0
+73	15.5	0
+74	15.5	0
+75	15.5	0
+76	15.5	0
+77	15.5	0
+78	15.5	0
+79	15.5	0
+80	15.5	0
+81	15.5	0
+82	15.5	0
+83	15.5	0
+84	15.5	0
+85	15.5	0
+86	15.5	0
+87	15.5	0
+88	15.5	0
+89	15.5	0
+90	15.5	0
+91	15.5	0
+92	15.5	0
+93	15.5	0
+94	15.5	0
+95	15.5	0
+96	15.5	0
+97	15.5	0
+98	15.5	0
+99	15.5	0
+100	15.5	0
+101	15.5	0
+102	15.5	0
+103	15.5	0
+104	15.5	0
+105	15.5	0
+106	15.5	0
+107	15.5	0
+108	15.5	0
+109	15.5	0
+110	15.5	0
+111	15.5	0
+112	15.5	0
+113	15.5	0
+114	15.5	0
+115	15.5	0
+116	15.5	0
+117	15.5	0
+118	15.5	0
+119	15.5	0
+120	15.5	0
+121	15.5	0
+122	15.5	0
+123	15.5	0
+124	15.5	0
+125	15.5	0
+126	15.5	0
+127	15.5	0
+128	15.5	0
+129	15.5	0
+130	15.5	0
+131	15.5	0
+132	15.5	0
+133	15.5	0
+134	15.5	0
+135	15.5	0
+136	15.5	0
+137	15.5	0
+138	15.5	0
+139	15.5	0
+140	15.5	0
+141	15.5	0
+142	15.5	0
+143	15.5	0
+144	15.5	0
+145	15.5	0
+146	15.5	0
+147	15.5	0
+148	15.5	0
+149	15.5	0
+150	15.5	0
+151	15.5	0
+152	15.5	0
+153	15.5	0
+154	15.5	0
+155	15.5	0
+156	15.5	0
+157	15.5	0
+158	15.5	0
+159	15.5	0
+160	15.5	0
+161	15.5	0
+162	15.5	0
+163	15.5	0
+164	15.5	0
+165	15.5	0
+166	15.5	0
+167	15.5	0
+168	15.5	0
+169	15.5	0
+170	15.5	0
+171	15.5	0
+172	15.5	0
+173	15.5	0
+174	15.5	0
+175	15.5	0
+176	15.5	0
+177	15.5	0
+178	15.5	0
+179	15.5	0
+180	15.5	0
+181	15.5	0
+182	15.5	0
+183	15.5	0
+184	15.5	0
+185	15.5	0
+186	15.5	0
+187	15.5	0
+188	15.5	0
+189	15.5	0
+190	15.5	0
+191	15.5	0
+192	15.5	0
+193	15.5	0
+194	15.5	0
+195	15.5	0
+196	15.5	0
+197	15.5	0
+198	15.5	0
+199	15.5	0
+200	15.5	0
+201	15.5	0
+202	15.5	0
+203	15.5	0
+204	15.5	0
+205	15.5	0
+206	15.5	0
+207	15.5	0
+208	15.5	0
+209	15.5	0
+210	15.5	0
+211	15.5	0
+212	15.5	0
+213	15.5	0
+214	15.5	0
+215	15.5	0
+216	15.5	0
+217	15.5	0
+218	15.5	0
+219	15.5	0
+220	15.5	0
+221	15.5	0
+222	15.5	0
+223	15.5	0
+224	15.5	0
+225	15.5	0
+226	15.5	0
+227	15.5	0
+228	15.5	0
+229	15.5	0
+230	15.5	0
+231	15.5	0
+232	15.5	0
+233	15.5	0
+234	15.5	0
+235	15.5	0
+236	15.5	0
+237	15.5	0
+238	15.5	0
+239	15.5	0
+240	15.5	0
+241	15.5	0
+242	15.5	0
+243	15.5	0
+244	15.5	0
+245	15.5	0
+246	15.5	0
+247	15.5	0
+248	15.5	0
+249	15.5	0
+250	15.5	0
+251	15.5	0
+252	15.5	0
+253	15.5	0
+254	15.5	0
+255	15.5	0
+256	15.5	0
+257	15.5	0
+258	15.5	0
+259	15.5	0
+260	15.5	0
+261	15.5	0
+262	15.5	0
+263	15.5	0
+264	15.5	0
+265	15.5	0
+266	15.5	0
+267	15.5	0
+268	15.5	0
+269	15.5	0
+270	15.5	0
+271	15.5	0
+272	15.5	0
+273	15.5	0
+274	15.5	0
+275	15.5	0
+276	15.5	0
+277	15.5	0
+278	15.5	0
+279	15.5	0
+280	15.5	0
+281	15.5	0
+282	15.5	0
+283	15.5	0
+284	15.5	0
+285	15.5	0
+286	15.5	0
+287	15.5	0
+288	15.5	0
+289	15.5	0
+290	15.5	0
+291	15.5	0
+292	15.5	0
+293	15.5	0
+294	15.5	0
+295	15.5	0
+296	15.5	0
+297	15.5	0
+298	15.5	0
+299	15.5	0
+300	15.5	0
+301	15.5	0
+302	15.5	0
+303	15.5	0
+304	15.5	0
+305	15.5	0
+306	15.5	0
+307	15.5	0
+308	15.5	0
+309	15.5	0
+310	15.5	0
+311	15.5	0
+312	15.5	0
+313	15.5	0
+314	15.5	0
+315	15.5	0
+316	15.5	0
+317	15.5	0
+318	15.5	0
+319	15.5	0
+320	15.5	0
+321	15.5	0
+322	15.5	0
+323	15.5	0
+324	15.5	0
+325	15.5	0
+326	15.5	0
+327	15.5	0
+328	15.5	0
+329	15.5	0
+330	15.5	0
+331	15.5	0
+332	15.5	0
+333	15.5	0
+334	15.5	0
+335	15.5	0
+336	15.5	0
+337	15.5	0
+338	15.5	0
+339	15.5	0
+340	15.5	0
+341	15.5	0
+342	15.5	0
+343	15.5	0
+344	15.5	0
+345	15.5	0
+346	15.5	0
+347	15.5	0
+348	15.5	0
+349	15.5	0
+350	15.5	0
+351	15.5	0
+352	15.5	0
+353	15.5	0
+354	15.5	0
+355	15.5	0
+356	15.5	0
+357	15.5	0
+358	15.5	0
+359	15.5	0
+360	15.5	0
+0	16	0
+1	16	0
+2	16	0
+3	16	0
+4	16	0
+5	16	0
+6	16	0
+7	16	0
+8	16	0
+9	16	0
+10	16	0
+11	16	0
+12	16	0
+13	16	0
+14	16	0
+15	16	0
+16	16	0
+17	16	0
+18	16	0
+19	16	0
+20	16	0
+21	16	0
+22	16	0
+23	16	0
+24	16	0
+25	16	0
+26	16	0
+27	16	0
+28	16	0
+29	16	0
+30	16	0
+31	16	0
+32	16	0
+33	16	0
+34	16	0
+35	16	0
+36	16	0
+37	16	0
+38	16	0
+39	16	0
+40	16	0
+41	16	0
+42	16	0
+43	16	0
+44	16	0
+45	16	0
+46	16	0
+47	16	0
+48	16	0
+49	16	0
+50	16	0
+51	16	0
+52	16	0
+53	16	0
+54	16	0
+55	16	0
+56	16	0
+57	16	0
+58	16	0
+59	16	0
+60	16	0
+61	16	0
+62	16	0
+63	16	0
+64	16	0
+65	16	0
+66	16	0
+67	16	0
+68	16	0
+69	16	0
+70	16	0
+71	16	0
+72	16	0
+73	16	0
+74	16	0
+75	16	0
+76	16	0
+77	16	0
+78	16	0
+79	16	0
+80	16	0
+81	16	0
+82	16	0
+83	16	0
+84	16	0
+85	16	0
+86	16	0
+87	16	0
+88	16	0
+89	16	0
+90	16	0
+91	16	0
+92	16	0
+93	16	0
+94	16	0
+95	16	0
+96	16	0
+97	16	0
+98	16	0
+99	16	0
+100	16	0
+101	16	0
+102	16	0
+103	16	0
+104	16	0
+105	16	0
+106	16	0
+107	16	0
+108	16	0
+109	16	0
+110	16	0
+111	16	0
+112	16	0
+113	16	0
+114	16	0
+115	16	0
+116	16	0
+117	16	0
+118	16	0
+119	16	0
+120	16	0
+121	16	0
+122	16	0
+123	16	0
+124	16	0
+125	16	0
+126	16	0
+127	16	0
+128	16	0
+129	16	0
+130	16	0
+131	16	0
+132	16	0
+133	16	0
+134	16	0
+135	16	0
+136	16	0
+137	16	0
+138	16	0
+139	16	0
+140	16	0
+141	16	0
+142	16	0
+143	16	0
+144	16	0
+145	16	0
+146	16	0
+147	16	0
+148	16	0
+149	16	0
+150	16	0
+151	16	0
+152	16	0
+153	16	0
+154	16	0
+155	16	0
+156	16	0
+157	16	0
+158	16	0
+159	16	0
+160	16	0
+161	16	0
+162	16	0
+163	16	0
+164	16	0
+165	16	0
+166	16	0
+167	16	0
+168	16	0
+169	16	0
+170	16	0
+171	16	0
+172	16	0
+173	16	0
+174	16	0
+175	16	0
+176	16	0
+177	16	0
+178	16	0
+179	16	0
+180	16	0
+181	16	0
+182	16	0
+183	16	0
+184	16	0
+185	16	0
+186	16	0
+187	16	0
+188	16	0
+189	16	0
+190	16	0
+191	16	0
+192	16	0
+193	16	0
+194	16	0
+195	16	0
+196	16	0
+197	16	0
+198	16	0
+199	16	0
+200	16	0
+201	16	0
+202	16	0
+203	16	0
+204	16	0
+205	16	0
+206	16	0
+207	16	0
+208	16	0
+209	16	0
+210	16	0
+211	16	0
+212	16	0
+213	16	0
+214	16	0
+215	16	0
+216	16	0
+217	16	0
+218	16	0
+219	16	0
+220	16	0
+221	16	0
+222	16	0
+223	16	0
+224	16	0
+225	16	0
+226	16	0
+227	16	0
+228	16	0
+229	16	0
+230	16	0
+231	16	0
+232	16	0
+233	16	0
+234	16	0
+235	16	0
+236	16	0
+237	16	0
+238	16	0
+239	16	0
+240	16	0
+241	16	0
+242	16	0
+243	16	0
+244	16	0
+245	16	0
+246	16	0
+247	16	0
+248	16	0
+249	16	0
+250	16	0
+251	16	0
+252	16	0
+253	16	0
+254	16	0
+255	16	0
+256	16	0
+257	16	0
+258	16	0
+259	16	0
+260	16	0
+261	16	0
+262	16	0
+263	16	0
+264	16	0
+265	16	0
+266	16	0
+267	16	0
+268	16	0
+269	16	0
+270	16	0
+271	16	0
+272	16	0
+273	16	0
+274	16	0
+275	16	0
+276	16	0
+277	16	0
+278	16	0
+279	16	0
+280	16	0
+281	16	0
+282	16	0
+283	16	0
+284	16	0
+285	16	0
+286	16	0
+287	16	0
+288	16	0
+289	16	0
+290	16	0
+291	16	0
+292	16	0
+293	16	0
+294	16	0
+295	16	0
+296	16	0
+297	16	0
+298	16	0
+299	16	0
+300	16	0
+301	16	0
+302	16	0
+303	16	0
+304	16	0
+305	16	0
+306	16	0
+307	16	0
+308	16	0
+309	16	0
+310	16	0
+311	16	0
+312	16	0
+313	16	0
+314	16	0
+315	16	0
+316	16	0
+317	16	0
+318	16	0
+319	16	0
+320	16	0
+321	16	0
+322	16	0
+323	16	0
+324	16	0
+325	16	0
+326	16	0
+327	16	0
+328	16	0
+329	16	0
+330	16	0
+331	16	0
+332	16	0
+333	16	0
+334	16	0
+335	16	0
+336	16	0
+337	16	0
+338	16	0
+339	16	0
+340	16	0
+341	16	0
+342	16	0
+343	16	0
+344	16	0
+345	16	0
+346	16	0
+347	16	0
+348	16	0
+349	16	0
+350	16	0
+351	16	0
+352	16	0
+353	16	0
+354	16	0
+355	16	0
+356	16	0
+357	16	0
+358	16	0
+359	16	0
+360	16	0
+0	16.5	0
+1	16.5	0
+2	16.5	0
+3	16.5	0
+4	16.5	0
+5	16.5	0
+6	16.5	0
+7	16.5	0
+8	16.5	0
+9	16.5	0
+10	16.5	0
+11	16.5	0
+12	16.5	0
+13	16.5	0
+14	16.5	0
+15	16.5	0
+16	16.5	0
+17	16.5	0
+18	16.5	0
+19	16.5	0
+20	16.5	0
+21	16.5	0
+22	16.5	0
+23	16.5	0
+24	16.5	0
+25	16.5	0
+26	16.5	0
+27	16.5	0
+28	16.5	0
+29	16.5	0
+30	16.5	0
+31	16.5	0
+32	16.5	0
+33	16.5	0
+34	16.5	0
+35	16.5	0
+36	16.5	0
+37	16.5	0
+38	16.5	0
+39	16.5	0
+40	16.5	0
+41	16.5	0
+42	16.5	0
+43	16.5	0
+44	16.5	0
+45	16.5	0
+46	16.5	0
+47	16.5	0
+48	16.5	0
+49	16.5	0
+50	16.5	0
+51	16.5	0
+52	16.5	0
+53	16.5	0
+54	16.5	0
+55	16.5	0
+56	16.5	0
+57	16.5	0
+58	16.5	0
+59	16.5	0
+60	16.5	0
+61	16.5	0
+62	16.5	0
+63	16.5	0
+64	16.5	0
+65	16.5	0
+66	16.5	0
+67	16.5	0
+68	16.5	0
+69	16.5	0
+70	16.5	0
+71	16.5	0
+72	16.5	0
+73	16.5	0
+74	16.5	0
+75	16.5	0
+76	16.5	0
+77	16.5	0
+78	16.5	0
+79	16.5	0
+80	16.5	0
+81	16.5	0
+82	16.5	0
+83	16.5	0
+84	16.5	0
+85	16.5	0
+86	16.5	0
+87	16.5	0
+88	16.5	0
+89	16.5	0
+90	16.5	0
+91	16.5	0
+92	16.5	0
+93	16.5	0
+94	16.5	0
+95	16.5	0
+96	16.5	0
+97	16.5	0
+98	16.5	0
+99	16.5	0
+100	16.5	0
+101	16.5	0
+102	16.5	0
+103	16.5	0
+104	16.5	0
+105	16.5	0
+106	16.5	0
+107	16.5	0
+108	16.5	0
+109	16.5	0
+110	16.5	0
+111	16.5	0
+112	16.5	0
+113	16.5	0
+114	16.5	0
+115	16.5	0
+116	16.5	0
+117	16.5	0
+118	16.5	0
+119	16.5	0
+120	16.5	0
+121	16.5	0
+122	16.5	0
+123	16.5	0
+124	16.5	0
+125	16.5	0
+126	16.5	0
+127	16.5	0
+128	16.5	0
+129	16.5	0
+130	16.5	0
+131	16.5	0
+132	16.5	0
+133	16.5	0
+134	16.5	0
+135	16.5	0
+136	16.5	0
+137	16.5	0
+138	16.5	0
+139	16.5	0
+140	16.5	0
+141	16.5	0
+142	16.5	0
+143	16.5	0
+144	16.5	0
+145	16.5	0
+146	16.5	0
+147	16.5	0
+148	16.5	0
+149	16.5	0
+150	16.5	0
+151	16.5	0
+152	16.5	0
+153	16.5	0
+154	16.5	0
+155	16.5	0
+156	16.5	0
+157	16.5	0
+158	16.5	0
+159	16.5	0
+160	16.5	0
+161	16.5	0
+162	16.5	0
+163	16.5	0
+164	16.5	0
+165	16.5	0
+166	16.5	0
+167	16.5	0
+168	16.5	0
+169	16.5	0
+170	16.5	0
+171	16.5	0
+172	16.5	0
+173	16.5	0
+174	16.5	0
+175	16.5	0
+176	16.5	0
+177	16.5	0
+178	16.5	0
+179	16.5	0
+180	16.5	0
+181	16.5	0
+182	16.5	0
+183	16.5	0
+184	16.5	0
+185	16.5	0
+186	16.5	0
+187	16.5	0
+188	16.5	0
+189	16.5	0
+190	16.5	0
+191	16.5	0
+192	16.5	0
+193	16.5	0
+194	16.5	0
+195	16.5	0
+196	16.5	0
+197	16.5	0
+198	16.5	0
+199	16.5	0
+200	16.5	0
+201	16.5	0
+202	16.5	0
+203	16.5	0
+204	16.5	0
+205	16.5	0
+206	16.5	0
+207	16.5	0
+208	16.5	0
+209	16.5	0
+210	16.5	0
+211	16.5	0
+212	16.5	0
+213	16.5	0
+214	16.5	0
+215	16.5	0
+216	16.5	0
+217	16.5	0
+218	16.5	0
+219	16.5	0
+220	16.5	0
+221	16.5	0
+222	16.5	0
+223	16.5	0
+224	16.5	0
+225	16.5	0
+226	16.5	0
+227	16.5	0
+228	16.5	0
+229	16.5	0
+230	16.5	0
+231	16.5	0
+232	16.5	0
+233	16.5	0
+234	16.5	0
+235	16.5	0
+236	16.5	0
+237	16.5	0
+238	16.5	0
+239	16.5	0
+240	16.5	0
+241	16.5	0
+242	16.5	0
+243	16.5	0
+244	16.5	0
+245	16.5	0
+246	16.5	0
+247	16.5	0
+248	16.5	0
+249	16.5	0
+250	16.5	0
+251	16.5	0
+252	16.5	0
+253	16.5	0
+254	16.5	0
+255	16.5	0
+256	16.5	0
+257	16.5	0
+258	16.5	0
+259	16.5	0
+260	16.5	0
+261	16.5	0
+262	16.5	0
+263	16.5	0
+264	16.5	0
+265	16.5	0
+266	16.5	0
+267	16.5	0
+268	16.5	0
+269	16.5	0
+270	16.5	0
+271	16.5	0
+272	16.5	0
+273	16.5	0
+274	16.5	0
+275	16.5	0
+276	16.5	0
+277	16.5	0
+278	16.5	0
+279	16.5	0
+280	16.5	0
+281	16.5	0
+282	16.5	0
+283	16.5	0
+284	16.5	0
+285	16.5	0
+286	16.5	0
+287	16.5	0
+288	16.5	0
+289	16.5	0
+290	16.5	0
+291	16.5	0
+292	16.5	0
+293	16.5	0
+294	16.5	0
+295	16.5	0
+296	16.5	0
+297	16.5	0
+298	16.5	0
+299	16.5	0
+300	16.5	0
+301	16.5	0
+302	16.5	0
+303	16.5	0
+304	16.5	0
+305	16.5	0
+306	16.5	0
+307	16.5	0
+308	16.5	0
+309	16.5	0
+310	16.5	0
+311	16.5	0
+312	16.5	0
+313	16.5	0
+314	16.5	0
+315	16.5	0
+316	16.5	0
+317	16.5	0
+318	16.5	0
+319	16.5	0
+320	16.5	0
+321	16.5	0
+322	16.5	0
+323	16.5	0
+324	16.5	0
+325	16.5	0
+326	16.5	0
+327	16.5	0
+328	16.5	0
+329	16.5	0
+330	16.5	0
+331	16.5	0
+332	16.5	0
+333	16.5	0
+334	16.5	0
+335	16.5	0
+336	16.5	0
+337	16.5	0
+338	16.5	0
+339	16.5	0
+340	16.5	0
+341	16.5	0
+342	16.5	0
+343	16.5	0
+344	16.5	0
+345	16.5	0
+346	16.5	0
+347	16.5	0
+348	16.5	0
+349	16.5	0
+350	16.5	0
+351	16.5	0
+352	16.5	0
+353	16.5	0
+354	16.5	0
+355	16.5	0
+356	16.5	0
+357	16.5	0
+358	16.5	0
+359	16.5	0
+360	16.5	0
+0	17	0
+1	17	0
+2	17	0
+3	17	0
+4	17	0
+5	17	0
+6	17	0
+7	17	0
+8	17	0
+9	17	0
+10	17	0
+11	17	0
+12	17	0
+13	17	0
+14	17	0
+15	17	0
+16	17	0
+17	17	0
+18	17	0
+19	17	0
+20	17	0
+21	17	0
+22	17	0
+23	17	0
+24	17	0
+25	17	0
+26	17	0
+27	17	0
+28	17	0
+29	17	0
+30	17	0
+31	17	0
+32	17	0
+33	17	0
+34	17	0
+35	17	0
+36	17	0
+37	17	0
+38	17	0
+39	17	0
+40	17	0
+41	17	0
+42	17	0
+43	17	0
+44	17	0
+45	17	0
+46	17	0
+47	17	0
+48	17	0
+49	17	0
+50	17	0
+51	17	0
+52	17	0
+53	17	0
+54	17	0
+55	17	0
+56	17	0
+57	17	0
+58	17	0
+59	17	0
+60	17	0
+61	17	0
+62	17	0
+63	17	0
+64	17	0
+65	17	0
+66	17	0
+67	17	0
+68	17	0
+69	17	0
+70	17	0
+71	17	0
+72	17	0
+73	17	0
+74	17	0
+75	17	0
+76	17	0
+77	17	0
+78	17	0
+79	17	0
+80	17	0
+81	17	0
+82	17	0
+83	17	0
+84	17	0
+85	17	0
+86	17	0
+87	17	0
+88	17	0
+89	17	0
+90	17	0
+91	17	0
+92	17	0
+93	17	0
+94	17	0
+95	17	0
+96	17	0
+97	17	0
+98	17	0
+99	17	0
+100	17	0
+101	17	0
+102	17	0
+103	17	0
+104	17	0
+105	17	0
+106	17	0
+107	17	0
+108	17	0
+109	17	0
+110	17	0
+111	17	0
+112	17	0
+113	17	0
+114	17	0
+115	17	0
+116	17	0
+117	17	0
+118	17	0
+119	17	0
+120	17	0
+121	17	0
+122	17	0
+123	17	0
+124	17	0
+125	17	0
+126	17	0
+127	17	0
+128	17	0
+129	17	0
+130	17	0
+131	17	0
+132	17	0
+133	17	0
+134	17	0
+135	17	0
+136	17	0
+137	17	0
+138	17	0
+139	17	0
+140	17	0
+141	17	0
+142	17	0
+143	17	0
+144	17	0
+145	17	0
+146	17	0
+147	17	0
+148	17	0
+149	17	0
+150	17	0
+151	17	0
+152	17	0
+153	17	0
+154	17	0
+155	17	0
+156	17	0
+157	17	0
+158	17	0
+159	17	0
+160	17	0
+161	17	0
+162	17	0
+163	17	0
+164	17	0
+165	17	0
+166	17	0
+167	17	0
+168	17	0
+169	17	0
+170	17	0
+171	17	0
+172	17	0
+173	17	0
+174	17	0
+175	17	0
+176	17	0
+177	17	0
+178	17	0
+179	17	0
+180	17	0
+181	17	0
+182	17	0
+183	17	0
+184	17	0
+185	17	0
+186	17	0
+187	17	0
+188	17	0
+189	17	0
+190	17	0
+191	17	0
+192	17	0
+193	17	0
+194	17	0
+195	17	0
+196	17	0
+197	17	0
+198	17	0
+199	17	0
+200	17	0
+201	17	0
+202	17	0
+203	17	0
+204	17	0
+205	17	0
+206	17	0
+207	17	0
+208	17	0
+209	17	0
+210	17	0
+211	17	0
+212	17	0
+213	17	0
+214	17	0
+215	17	0
+216	17	0
+217	17	0
+218	17	0
+219	17	0
+220	17	0
+221	17	0
+222	17	0
+223	17	0
+224	17	0
+225	17	0
+226	17	0
+227	17	0
+228	17	0
+229	17	0
+230	17	0
+231	17	0
+232	17	0
+233	17	0
+234	17	0
+235	17	0
+236	17	0
+237	17	0
+238	17	0
+239	17	0
+240	17	0
+241	17	0
+242	17	0
+243	17	0
+244	17	0
+245	17	0
+246	17	0
+247	17	0
+248	17	0
+249	17	0
+250	17	0
+251	17	0
+252	17	0
+253	17	0
+254	17	0
+255	17	0
+256	17	0
+257	17	0
+258	17	0
+259	17	0
+260	17	0
+261	17	0
+262	17	0
+263	17	0
+264	17	0
+265	17	0
+266	17	0
+267	17	0
+268	17	0
+269	17	0
+270	17	0
+271	17	0
+272	17	0
+273	17	0
+274	17	0
+275	17	0
+276	17	0
+277	17	0
+278	17	0
+279	17	0
+280	17	0
+281	17	0
+282	17	0
+283	17	0
+284	17	0
+285	17	0
+286	17	0
+287	17	0
+288	17	0
+289	17	0
+290	17	0
+291	17	0
+292	17	0
+293	17	0
+294	17	0
+295	17	0
+296	17	0
+297	17	0
+298	17	0
+299	17	0
+300	17	0
+301	17	0
+302	17	0
+303	17	0
+304	17	0
+305	17	0
+306	17	0
+307	17	0
+308	17	0
+309	17	0
+310	17	0
+311	17	0
+312	17	0
+313	17	0
+314	17	0
+315	17	0
+316	17	0
+317	17	0
+318	17	0
+319	17	0
+320	17	0
+321	17	0
+322	17	0
+323	17	0
+324	17	0
+325	17	0
+326	17	0
+327	17	0
+328	17	0
+329	17	0
+330	17	0
+331	17	0
+332	17	0
+333	17	0
+334	17	0
+335	17	0
+336	17	0
+337	17	0
+338	17	0
+339	17	0
+340	17	0
+341	17	0
+342	17	0
+343	17	0
+344	17	0
+345	17	0
+346	17	0
+347	17	0
+348	17	0
+349	17	0
+350	17	0
+351	17	0
+352	17	0
+353	17	0
+354	17	0
+355	17	0
+356	17	0
+357	17	0
+358	17	0
+359	17	0
+360	17	0
+0	17.5	0
+1	17.5	0
+2	17.5	0
+3	17.5	0
+4	17.5	0
+5	17.5	0
+6	17.5	0
+7	17.5	0
+8	17.5	0
+9	17.5	0
+10	17.5	0
+11	17.5	0
+12	17.5	0
+13	17.5	0
+14	17.5	0
+15	17.5	0
+16	17.5	0
+17	17.5	0
+18	17.5	0
+19	17.5	0
+20	17.5	0
+21	17.5	0
+22	17.5	0
+23	17.5	0
+24	17.5	0
+25	17.5	0
+26	17.5	0
+27	17.5	0
+28	17.5	0
+29	17.5	0
+30	17.5	0
+31	17.5	0
+32	17.5	0
+33	17.5	0
+34	17.5	0
+35	17.5	0
+36	17.5	0
+37	17.5	0
+38	17.5	0
+39	17.5	0
+40	17.5	0
+41	17.5	0
+42	17.5	0
+43	17.5	0
+44	17.5	0
+45	17.5	0
+46	17.5	0
+47	17.5	0
+48	17.5	0
+49	17.5	0
+50	17.5	0
+51	17.5	0
+52	17.5	0
+53	17.5	0
+54	17.5	0
+55	17.5	0
+56	17.5	0
+57	17.5	0
+58	17.5	0
+59	17.5	0
+60	17.5	0
+61	17.5	0
+62	17.5	0
+63	17.5	0
+64	17.5	0
+65	17.5	0
+66	17.5	0
+67	17.5	0
+68	17.5	0
+69	17.5	0
+70	17.5	0
+71	17.5	0
+72	17.5	0
+73	17.5	0
+74	17.5	0
+75	17.5	0
+76	17.5	0
+77	17.5	0
+78	17.5	0
+79	17.5	0
+80	17.5	0
+81	17.5	0
+82	17.5	0
+83	17.5	0
+84	17.5	0
+85	17.5	0
+86	17.5	0
+87	17.5	0
+88	17.5	0
+89	17.5	0
+90	17.5	0
+91	17.5	0
+92	17.5	0
+93	17.5	0
+94	17.5	0
+95	17.5	0
+96	17.5	0
+97	17.5	0
+98	17.5	0
+99	17.5	0
+100	17.5	0
+101	17.5	0
+102	17.5	0
+103	17.5	0
+104	17.5	0
+105	17.5	0
+106	17.5	0
+107	17.5	0
+108	17.5	0
+109	17.5	0
+110	17.5	0
+111	17.5	0
+112	17.5	0
+113	17.5	0
+114	17.5	0
+115	17.5	0
+116	17.5	0
+117	17.5	0
+118	17.5	0
+119	17.5	0
+120	17.5	0
+121	17.5	0
+122	17.5	0
+123	17.5	0
+124	17.5	0
+125	17.5	0
+126	17.5	0
+127	17.5	0
+128	17.5	0
+129	17.5	0
+130	17.5	0
+131	17.5	0
+132	17.5	0
+133	17.5	0
+134	17.5	0
+135	17.5	0
+136	17.5	0
+137	17.5	0
+138	17.5	0
+139	17.5	0
+140	17.5	0
+141	17.5	0
+142	17.5	0
+143	17.5	0
+144	17.5	0
+145	17.5	0
+146	17.5	0
+147	17.5	0
+148	17.5	0
+149	17.5	0
+150	17.5	0
+151	17.5	0
+152	17.5	0
+153	17.5	0
+154	17.5	0
+155	17.5	0
+156	17.5	0
+157	17.5	0
+158	17.5	0
+159	17.5	0
+160	17.5	0
+161	17.5	0
+162	17.5	0
+163	17.5	0
+164	17.5	0
+165	17.5	0
+166	17.5	0
+167	17.5	0
+168	17.5	0
+169	17.5	0
+170	17.5	0
+171	17.5	0
+172	17.5	0
+173	17.5	0
+174	17.5	0
+175	17.5	0
+176	17.5	0
+177	17.5	0
+178	17.5	0
+179	17.5	0
+180	17.5	0
+181	17.5	0
+182	17.5	0
+183	17.5	0
+184	17.5	0
+185	17.5	0
+186	17.5	0
+187	17.5	0
+188	17.5	0
+189	17.5	0
+190	17.5	0
+191	17.5	0
+192	17.5	0
+193	17.5	0
+194	17.5	0
+195	17.5	0
+196	17.5	0
+197	17.5	0
+198	17.5	0
+199	17.5	0
+200	17.5	0
+201	17.5	0
+202	17.5	0
+203	17.5	0
+204	17.5	0
+205	17.5	0
+206	17.5	0
+207	17.5	0
+208	17.5	0
+209	17.5	0
+210	17.5	0
+211	17.5	0
+212	17.5	0
+213	17.5	0
+214	17.5	0
+215	17.5	0
+216	17.5	0
+217	17.5	0
+218	17.5	0
+219	17.5	0
+220	17.5	0
+221	17.5	0
+222	17.5	0
+223	17.5	0
+224	17.5	0
+225	17.5	0
+226	17.5	0
+227	17.5	0
+228	17.5	0
+229	17.5	0
+230	17.5	0
+231	17.5	0
+232	17.5	0
+233	17.5	0
+234	17.5	0
+235	17.5	0
+236	17.5	0
+237	17.5	0
+238	17.5	0
+239	17.5	0
+240	17.5	0
+241	17.5	0
+242	17.5	0
+243	17.5	0
+244	17.5	0
+245	17.5	0
+246	17.5	0
+247	17.5	0
+248	17.5	0
+249	17.5	0
+250	17.5	0
+251	17.5	0
+252	17.5	0
+253	17.5	0
+254	17.5	0
+255	17.5	0
+256	17.5	0
+257	17.5	0
+258	17.5	0
+259	17.5	0
+260	17.5	0
+261	17.5	0
+262	17.5	0
+263	17.5	0
+264	17.5	0
+265	17.5	0
+266	17.5	0
+267	17.5	0
+268	17.5	0
+269	17.5	0
+270	17.5	0
+271	17.5	0
+272	17.5	0
+273	17.5	0
+274	17.5	0
+275	17.5	0
+276	17.5	0
+277	17.5	0
+278	17.5	0
+279	17.5	0
+280	17.5	0
+281	17.5	0
+282	17.5	0
+283	17.5	0
+284	17.5	0
+285	17.5	0
+286	17.5	0
+287	17.5	0
+288	17.5	0
+289	17.5	0
+290	17.5	0
+291	17.5	0
+292	17.5	0
+293	17.5	0
+294	17.5	0
+295	17.5	0
+296	17.5	0
+297	17.5	0
+298	17.5	0
+299	17.5	0
+300	17.5	0
+301	17.5	0
+302	17.5	0
+303	17.5	0
+304	17.5	0
+305	17.5	0
+306	17.5	0
+307	17.5	0
+308	17.5	0
+309	17.5	0
+310	17.5	0
+311	17.5	0
+312	17.5	0
+313	17.5	0
+314	17.5	0
+315	17.5	0
+316	17.5	0
+317	17.5	0
+318	17.5	0
+319	17.5	0
+320	17.5	0
+321	17.5	0
+322	17.5	0
+323	17.5	0
+324	17.5	0
+325	17.5	0
+326	17.5	0
+327	17.5	0
+328	17.5	0
+329	17.5	0
+330	17.5	0
+331	17.5	0
+332	17.5	0
+333	17.5	0
+334	17.5	0
+335	17.5	0
+336	17.5	0
+337	17.5	0
+338	17.5	0
+339	17.5	0
+340	17.5	0
+341	17.5	0
+342	17.5	0
+343	17.5	0
+344	17.5	0
+345	17.5	0
+346	17.5	0
+347	17.5	0
+348	17.5	0
+349	17.5	0
+350	17.5	0
+351	17.5	0
+352	17.5	0
+353	17.5	0
+354	17.5	0
+355	17.5	0
+356	17.5	0
+357	17.5	0
+358	17.5	0
+359	17.5	0
+360	17.5	0
+0	18	0
+1	18	0
+2	18	0
+3	18	0
+4	18	0
+5	18	0
+6	18	0
+7	18	0
+8	18	0
+9	18	0
+10	18	0
+11	18	0
+12	18	0
+13	18	0
+14	18	0
+15	18	0
+16	18	0
+17	18	0
+18	18	0
+19	18	0
+20	18	0
+21	18	0
+22	18	0
+23	18	0
+24	18	0
+25	18	0
+26	18	0
+27	18	0
+28	18	0
+29	18	0
+30	18	0
+31	18	0
+32	18	0
+33	18	0
+34	18	0
+35	18	0
+36	18	0
+37	18	0
+38	18	0
+39	18	0
+40	18	0
+41	18	0
+42	18	0
+43	18	0
+44	18	0
+45	18	0
+46	18	0
+47	18	0
+48	18	0
+49	18	0
+50	18	0
+51	18	0
+52	18	0
+53	18	0
+54	18	0
+55	18	0
+56	18	0
+57	18	0
+58	18	0
+59	18	0
+60	18	0
+61	18	0
+62	18	0
+63	18	0
+64	18	0
+65	18	0
+66	18	0
+67	18	0
+68	18	0
+69	18	0
+70	18	0
+71	18	0
+72	18	0
+73	18	0
+74	18	0
+75	18	0
+76	18	0
+77	18	0
+78	18	0
+79	18	0
+80	18	0
+81	18	0
+82	18	0
+83	18	0
+84	18	0
+85	18	0
+86	18	0
+87	18	0
+88	18	0
+89	18	0
+90	18	0
+91	18	0
+92	18	0
+93	18	0
+94	18	0
+95	18	0
+96	18	0
+97	18	0
+98	18	0
+99	18	0
+100	18	0
+101	18	0
+102	18	0
+103	18	0
+104	18	0
+105	18	0
+106	18	0
+107	18	0
+108	18	0
+109	18	0
+110	18	0
+111	18	0
+112	18	0
+113	18	0
+114	18	0
+115	18	0
+116	18	0
+117	18	0
+118	18	0
+119	18	0
+120	18	0
+121	18	0
+122	18	0
+123	18	0
+124	18	0
+125	18	0
+126	18	0
+127	18	0
+128	18	0
+129	18	0
+130	18	0
+131	18	0
+132	18	0
+133	18	0
+134	18	0
+135	18	0
+136	18	0
+137	18	0
+138	18	0
+139	18	0
+140	18	0
+141	18	0
+142	18	0
+143	18	0
+144	18	0
+145	18	0
+146	18	0
+147	18	0
+148	18	0
+149	18	0
+150	18	0
+151	18	0
+152	18	0
+153	18	0
+154	18	0
+155	18	0
+156	18	0
+157	18	0
+158	18	0
+159	18	0
+160	18	0
+161	18	0
+162	18	0
+163	18	0
+164	18	0
+165	18	0
+166	18	0
+167	18	0
+168	18	0
+169	18	0
+170	18	0
+171	18	0
+172	18	0
+173	18	0
+174	18	0
+175	18	0
+176	18	0
+177	18	0
+178	18	0
+179	18	0
+180	18	0
+181	18	0
+182	18	0
+183	18	0
+184	18	0
+185	18	0
+186	18	0
+187	18	0
+188	18	0
+189	18	0
+190	18	0
+191	18	0
+192	18	0
+193	18	0
+194	18	0
+195	18	0
+196	18	0
+197	18	0
+198	18	0
+199	18	0
+200	18	0
+201	18	0
+202	18	0
+203	18	0
+204	18	0
+205	18	0
+206	18	0
+207	18	0
+208	18	0
+209	18	0
+210	18	0
+211	18	0
+212	18	0
+213	18	0
+214	18	0
+215	18	0
+216	18	0
+217	18	0
+218	18	0
+219	18	0
+220	18	0
+221	18	0
+222	18	0
+223	18	0
+224	18	0
+225	18	0
+226	18	0
+227	18	0
+228	18	0
+229	18	0
+230	18	0
+231	18	0
+232	18	0
+233	18	0
+234	18	0
+235	18	0
+236	18	0
+237	18	0
+238	18	0
+239	18	0
+240	18	0
+241	18	0
+242	18	0
+243	18	0
+244	18	0
+245	18	0
+246	18	0
+247	18	0
+248	18	0
+249	18	0
+250	18	0
+251	18	0
+252	18	0
+253	18	0
+254	18	0
+255	18	0
+256	18	0
+257	18	0
+258	18	0
+259	18	0
+260	18	0
+261	18	0
+262	18	0
+263	18	0
+264	18	0
+265	18	0
+266	18	0
+267	18	0
+268	18	0
+269	18	0
+270	18	0
+271	18	0
+272	18	0
+273	18	0
+274	18	0
+275	18	0
+276	18	0
+277	18	0
+278	18	0
+279	18	0
+280	18	0
+281	18	0
+282	18	0
+283	18	0
+284	18	0
+285	18	0
+286	18	0
+287	18	0
+288	18	0
+289	18	0
+290	18	0
+291	18	0
+292	18	0
+293	18	0
+294	18	0
+295	18	0
+296	18	0
+297	18	0
+298	18	0
+299	18	0
+300	18	0
+301	18	0
+302	18	0
+303	18	0
+304	18	0
+305	18	0
+306	18	0
+307	18	0
+308	18	0
+309	18	0
+310	18	0
+311	18	0
+312	18	0
+313	18	0
+314	18	0
+315	18	0
+316	18	0
+317	18	0
+318	18	0
+319	18	0
+320	18	0
+321	18	0
+322	18	0
+323	18	0
+324	18	0
+325	18	0
+326	18	0
+327	18	0
+328	18	0
+329	18	0
+330	18	0
+331	18	0
+332	18	0
+333	18	0
+334	18	0
+335	18	0
+336	18	0
+337	18	0
+338	18	0
+339	18	0
+340	18	0
+341	18	0
+342	18	0
+343	18	0
+344	18	0
+345	18	0
+346	18	0
+347	18	0
+348	18	0
+349	18	0
+350	18	0
+351	18	0
+352	18	0
+353	18	0
+354	18	0
+355	18	0
+356	18	0
+357	18	0
+358	18	0
+359	18	0
+360	18	0
+0	18.5	0
+1	18.5	0
+2	18.5	0
+3	18.5	0
+4	18.5	0
+5	18.5	0
+6	18.5	0
+7	18.5	0
+8	18.5	0
+9	18.5	0
+10	18.5	0
+11	18.5	0
+12	18.5	0
+13	18.5	0
+14	18.5	0
+15	18.5	0
+16	18.5	0
+17	18.5	0
+18	18.5	0
+19	18.5	0
+20	18.5	0
+21	18.5	0
+22	18.5	0
+23	18.5	0
+24	18.5	0
+25	18.5	0
+26	18.5	0
+27	18.5	0
+28	18.5	0
+29	18.5	0
+30	18.5	0
+31	18.5	0
+32	18.5	0
+33	18.5	0
+34	18.5	0
+35	18.5	0
+36	18.5	0
+37	18.5	0
+38	18.5	0
+39	18.5	0
+40	18.5	0
+41	18.5	0
+42	18.5	0
+43	18.5	0
+44	18.5	0
+45	18.5	0
+46	18.5	0
+47	18.5	0
+48	18.5	0
+49	18.5	0
+50	18.5	0
+51	18.5	0
+52	18.5	0
+53	18.5	0
+54	18.5	0
+55	18.5	0
+56	18.5	0
+57	18.5	0
+58	18.5	0
+59	18.5	0
+60	18.5	0
+61	18.5	0
+62	18.5	0
+63	18.5	0
+64	18.5	0
+65	18.5	0
+66	18.5	0
+67	18.5	0
+68	18.5	0
+69	18.5	0
+70	18.5	0
+71	18.5	0
+72	18.5	0
+73	18.5	0
+74	18.5	0
+75	18.5	0
+76	18.5	0
+77	18.5	0
+78	18.5	0
+79	18.5	0
+80	18.5	0
+81	18.5	0
+82	18.5	0
+83	18.5	0
+84	18.5	0
+85	18.5	0
+86	18.5	0
+87	18.5	0
+88	18.5	0
+89	18.5	0
+90	18.5	0
+91	18.5	0
+92	18.5	0
+93	18.5	0
+94	18.5	0
+95	18.5	0
+96	18.5	0
+97	18.5	0
+98	18.5	0
+99	18.5	0
+100	18.5	0
+101	18.5	0
+102	18.5	0
+103	18.5	0
+104	18.5	0
+105	18.5	0
+106	18.5	0
+107	18.5	0
+108	18.5	0
+109	18.5	0
+110	18.5	0
+111	18.5	0
+112	18.5	0
+113	18.5	0
+114	18.5	0
+115	18.5	0
+116	18.5	0
+117	18.5	0
+118	18.5	0
+119	18.5	0
+120	18.5	0
+121	18.5	0
+122	18.5	0
+123	18.5	0
+124	18.5	0
+125	18.5	0
+126	18.5	0
+127	18.5	0
+128	18.5	0
+129	18.5	0
+130	18.5	0
+131	18.5	0
+132	18.5	0
+133	18.5	0
+134	18.5	0
+135	18.5	0
+136	18.5	0
+137	18.5	0
+138	18.5	0
+139	18.5	0
+140	18.5	0
+141	18.5	0
+142	18.5	0
+143	18.5	0
+144	18.5	0
+145	18.5	0
+146	18.5	0
+147	18.5	0
+148	18.5	0
+149	18.5	0
+150	18.5	0
+151	18.5	0
+152	18.5	0
+153	18.5	0
+154	18.5	0
+155	18.5	0
+156	18.5	0
+157	18.5	0
+158	18.5	0
+159	18.5	0
+160	18.5	0
+161	18.5	0
+162	18.5	0
+163	18.5	0
+164	18.5	0
+165	18.5	0
+166	18.5	0
+167	18.5	0
+168	18.5	0
+169	18.5	0
+170	18.5	0
+171	18.5	0
+172	18.5	0
+173	18.5	0
+174	18.5	0
+175	18.5	0
+176	18.5	0
+177	18.5	0
+178	18.5	0
+179	18.5	0
+180	18.5	0
+181	18.5	0
+182	18.5	0
+183	18.5	0
+184	18.5	0
+185	18.5	0
+186	18.5	0
+187	18.5	0
+188	18.5	0
+189	18.5	0
+190	18.5	0
+191	18.5	0
+192	18.5	0
+193	18.5	0
+194	18.5	0
+195	18.5	0
+196	18.5	0
+197	18.5	0
+198	18.5	0
+199	18.5	0
+200	18.5	0
+201	18.5	0
+202	18.5	0
+203	18.5	0
+204	18.5	0
+205	18.5	0
+206	18.5	0
+207	18.5	0
+208	18.5	0
+209	18.5	0
+210	18.5	0
+211	18.5	0
+212	18.5	0
+213	18.5	0
+214	18.5	0
+215	18.5	0
+216	18.5	0
+217	18.5	0
+218	18.5	0
+219	18.5	0
+220	18.5	0
+221	18.5	0
+222	18.5	0
+223	18.5	0
+224	18.5	0
+225	18.5	0
+226	18.5	0
+227	18.5	0
+228	18.5	0
+229	18.5	0
+230	18.5	0
+231	18.5	0
+232	18.5	0
+233	18.5	0
+234	18.5	0
+235	18.5	0
+236	18.5	0
+237	18.5	0
+238	18.5	0
+239	18.5	0
+240	18.5	0
+241	18.5	0
+242	18.5	0
+243	18.5	0
+244	18.5	0
+245	18.5	0
+246	18.5	0
+247	18.5	0
+248	18.5	0
+249	18.5	0
+250	18.5	0
+251	18.5	0
+252	18.5	0
+253	18.5	0
+254	18.5	0
+255	18.5	0
+256	18.5	0
+257	18.5	0
+258	18.5	0
+259	18.5	0
+260	18.5	0
+261	18.5	0
+262	18.5	0
+263	18.5	0
+264	18.5	0
+265	18.5	0
+266	18.5	0
+267	18.5	0
+268	18.5	0
+269	18.5	0
+270	18.5	0
+271	18.5	0
+272	18.5	0
+273	18.5	0
+274	18.5	0
+275	18.5	0
+276	18.5	0
+277	18.5	0
+278	18.5	0
+279	18.5	0
+280	18.5	0
+281	18.5	0
+282	18.5	0
+283	18.5	0
+284	18.5	0
+285	18.5	0
+286	18.5	0
+287	18.5	0
+288	18.5	0
+289	18.5	0
+290	18.5	0
+291	18.5	0
+292	18.5	0
+293	18.5	0
+294	18.5	0
+295	18.5	0
+296	18.5	0
+297	18.5	0
+298	18.5	0
+299	18.5	0
+300	18.5	0
+301	18.5	0
+302	18.5	0
+303	18.5	0
+304	18.5	0
+305	18.5	0
+306	18.5	0
+307	18.5	0
+308	18.5	0
+309	18.5	0
+310	18.5	0
+311	18.5	0
+312	18.5	0
+313	18.5	0
+314	18.5	0
+315	18.5	0
+316	18.5	0
+317	18.5	0
+318	18.5	0
+319	18.5	0
+320	18.5	0
+321	18.5	0
+322	18.5	0
+323	18.5	0
+324	18.5	0
+325	18.5	0
+326	18.5	0
+327	18.5	0
+328	18.5	0
+329	18.5	0
+330	18.5	0
+331	18.5	0
+332	18.5	0
+333	18.5	0
+334	18.5	0
+335	18.5	0
+336	18.5	0
+337	18.5	0
+338	18.5	0
+339	18.5	0
+340	18.5	0
+341	18.5	0
+342	18.5	0
+343	18.5	0
+344	18.5	0
+345	18.5	0
+346	18.5	0
+347	18.5	0
+348	18.5	0
+349	18.5	0
+350	18.5	0
+351	18.5	0
+352	18.5	0
+353	18.5	0
+354	18.5	0
+355	18.5	0
+356	18.5	0
+357	18.5	0
+358	18.5	0
+359	18.5	0
+360	18.5	0
+0	19	0
+1	19	0
+2	19	0
+3	19	0
+4	19	0
+5	19	0
+6	19	0
+7	19	0
+8	19	0
+9	19	0
+10	19	0
+11	19	0
+12	19	0
+13	19	0
+14	19	0
+15	19	0
+16	19	0
+17	19	0
+18	19	0
+19	19	0
+20	19	0
+21	19	0
+22	19	0
+23	19	0
+24	19	0
+25	19	0
+26	19	0
+27	19	0
+28	19	0
+29	19	0
+30	19	0
+31	19	0
+32	19	0
+33	19	0
+34	19	0
+35	19	0
+36	19	0
+37	19	0
+38	19	0
+39	19	0
+40	19	0
+41	19	0
+42	19	0
+43	19	0
+44	19	0
+45	19	0
+46	19	0
+47	19	0
+48	19	0
+49	19	0
+50	19	0
+51	19	0
+52	19	0
+53	19	0
+54	19	0
+55	19	0
+56	19	0
+57	19	0
+58	19	0
+59	19	0
+60	19	0
+61	19	0
+62	19	0
+63	19	0
+64	19	0
+65	19	0
+66	19	0
+67	19	0
+68	19	0
+69	19	0
+70	19	0
+71	19	0
+72	19	0
+73	19	0
+74	19	0
+75	19	0
+76	19	0
+77	19	0
+78	19	0
+79	19	0
+80	19	0
+81	19	0
+82	19	0
+83	19	0
+84	19	0
+85	19	0
+86	19	0
+87	19	0
+88	19	0
+89	19	0
+90	19	0
+91	19	0
+92	19	0
+93	19	0
+94	19	0
+95	19	0
+96	19	0
+97	19	0
+98	19	0
+99	19	0
+100	19	0
+101	19	0
+102	19	0
+103	19	0
+104	19	0
+105	19	0
+106	19	0
+107	19	0
+108	19	0
+109	19	0
+110	19	0
+111	19	0
+112	19	0
+113	19	0
+114	19	0
+115	19	0
+116	19	0
+117	19	0
+118	19	0
+119	19	0
+120	19	0
+121	19	0
+122	19	0
+123	19	0
+124	19	0
+125	19	0
+126	19	0
+127	19	0
+128	19	0
+129	19	0
+130	19	0
+131	19	0
+132	19	0
+133	19	0
+134	19	0
+135	19	0
+136	19	0
+137	19	0
+138	19	0
+139	19	0
+140	19	0
+141	19	0
+142	19	0
+143	19	0
+144	19	0
+145	19	0
+146	19	0
+147	19	0
+148	19	0
+149	19	0
+150	19	0
+151	19	0
+152	19	0
+153	19	0
+154	19	0
+155	19	0
+156	19	0
+157	19	0
+158	19	0
+159	19	0
+160	19	0
+161	19	0
+162	19	0
+163	19	0
+164	19	0
+165	19	0
+166	19	0
+167	19	0
+168	19	0
+169	19	0
+170	19	0
+171	19	0
+172	19	0
+173	19	0
+174	19	0
+175	19	0
+176	19	0
+177	19	0
+178	19	0
+179	19	0
+180	19	0
+181	19	0
+182	19	0
+183	19	0
+184	19	0
+185	19	0
+186	19	0
+187	19	0
+188	19	0
+189	19	0
+190	19	0
+191	19	0
+192	19	0
+193	19	0
+194	19	0
+195	19	0
+196	19	0
+197	19	0
+198	19	0
+199	19	0
+200	19	0
+201	19	0
+202	19	0
+203	19	0
+204	19	0
+205	19	0
+206	19	0
+207	19	0
+208	19	0
+209	19	0
+210	19	0
+211	19	0
+212	19	0
+213	19	0
+214	19	0
+215	19	0
+216	19	0
+217	19	0
+218	19	0
+219	19	0
+220	19	0
+221	19	0
+222	19	0
+223	19	0
+224	19	0
+225	19	0
+226	19	0
+227	19	0
+228	19	0
+229	19	0
+230	19	0
+231	19	0
+232	19	0
+233	19	0
+234	19	0
+235	19	0
+236	19	0
+237	19	0
+238	19	0
+239	19	0
+240	19	0
+241	19	0
+242	19	0
+243	19	0
+244	19	0
+245	19	0
+246	19	0
+247	19	0
+248	19	0
+249	19	0
+250	19	0
+251	19	0
+252	19	0
+253	19	0
+254	19	0
+255	19	0
+256	19	0
+257	19	0
+258	19	0
+259	19	0
+260	19	0
+261	19	0
+262	19	0
+263	19	0
+264	19	0
+265	19	0
+266	19	0
+267	19	0
+268	19	0
+269	19	0
+270	19	0
+271	19	0
+272	19	0
+273	19	0
+274	19	0
+275	19	0
+276	19	0
+277	19	0
+278	19	0
+279	19	0
+280	19	0
+281	19	0
+282	19	0
+283	19	0
+284	19	0
+285	19	0
+286	19	0
+287	19	0
+288	19	0
+289	19	0
+290	19	0
+291	19	0
+292	19	0
+293	19	0
+294	19	0
+295	19	0
+296	19	0
+297	19	0
+298	19	0
+299	19	0
+300	19	0
+301	19	0
+302	19	0
+303	19	0
+304	19	0
+305	19	0
+306	19	0
+307	19	0
+308	19	0
+309	19	0
+310	19	0
+311	19	0
+312	19	0
+313	19	0
+314	19	0
+315	19	0
+316	19	0
+317	19	0
+318	19	0
+319	19	0
+320	19	0
+321	19	0
+322	19	0
+323	19	0
+324	19	0
+325	19	0
+326	19	0
+327	19	0
+328	19	0
+329	19	0
+330	19	0
+331	19	0
+332	19	0
+333	19	0
+334	19	0
+335	19	0
+336	19	0
+337	19	0
+338	19	0
+339	19	0
+340	19	0
+341	19	0
+342	19	0
+343	19	0
+344	19	0
+345	19	0
+346	19	0
+347	19	0
+348	19	0
+349	19	0
+350	19	0
+351	19	0
+352	19	0
+353	19	0
+354	19	0
+355	19	0
+356	19	0
+357	19	0
+358	19	0
+359	19	0
+360	19	0
+0	19.5	0
+1	19.5	0
+2	19.5	0
+3	19.5	0
+4	19.5	0
+5	19.5	0
+6	19.5	0
+7	19.5	0
+8	19.5	0
+9	19.5	0
+10	19.5	0
+11	19.5	0
+12	19.5	0
+13	19.5	0
+14	19.5	0
+15	19.5	0
+16	19.5	0
+17	19.5	0
+18	19.5	0
+19	19.5	0
+20	19.5	0
+21	19.5	0
+22	19.5	0
+23	19.5	0
+24	19.5	0
+25	19.5	0
+26	19.5	0
+27	19.5	0
+28	19.5	0
+29	19.5	0
+30	19.5	0
+31	19.5	0
+32	19.5	0
+33	19.5	0
+34	19.5	0
+35	19.5	0
+36	19.5	0
+37	19.5	0
+38	19.5	0
+39	19.5	0
+40	19.5	0
+41	19.5	0
+42	19.5	0
+43	19.5	0
+44	19.5	0
+45	19.5	0
+46	19.5	0
+47	19.5	0
+48	19.5	0
+49	19.5	0
+50	19.5	0
+51	19.5	0
+52	19.5	0
+53	19.5	0
+54	19.5	0
+55	19.5	0
+56	19.5	0
+57	19.5	0
+58	19.5	0
+59	19.5	0
+60	19.5	0
+61	19.5	0
+62	19.5	0
+63	19.5	0
+64	19.5	0
+65	19.5	0
+66	19.5	0
+67	19.5	0
+68	19.5	0
+69	19.5	0
+70	19.5	0
+71	19.5	0
+72	19.5	0
+73	19.5	0
+74	19.5	0
+75	19.5	0
+76	19.5	0
+77	19.5	0
+78	19.5	0
+79	19.5	0
+80	19.5	0
+81	19.5	0
+82	19.5	0
+83	19.5	0
+84	19.5	0
+85	19.5	0
+86	19.5	0
+87	19.5	0
+88	19.5	0
+89	19.5	0
+90	19.5	0
+91	19.5	0
+92	19.5	0
+93	19.5	0
+94	19.5	0
+95	19.5	0
+96	19.5	0
+97	19.5	0
+98	19.5	0
+99	19.5	0
+100	19.5	0
+101	19.5	0
+102	19.5	0
+103	19.5	0
+104	19.5	0
+105	19.5	0
+106	19.5	0
+107	19.5	0
+108	19.5	0
+109	19.5	0
+110	19.5	0
+111	19.5	0
+112	19.5	0
+113	19.5	0
+114	19.5	0
+115	19.5	0
+116	19.5	0
+117	19.5	0
+118	19.5	0
+119	19.5	0
+120	19.5	0
+121	19.5	0
+122	19.5	0
+123	19.5	0
+124	19.5	0
+125	19.5	0
+126	19.5	0
+127	19.5	0
+128	19.5	0
+129	19.5	0
+130	19.5	0
+131	19.5	0
+132	19.5	0
+133	19.5	0
+134	19.5	0
+135	19.5	0
+136	19.5	0
+137	19.5	0
+138	19.5	0
+139	19.5	0
+140	19.5	0
+141	19.5	0
+142	19.5	0
+143	19.5	0
+144	19.5	0
+145	19.5	0
+146	19.5	0
+147	19.5	0
+148	19.5	0
+149	19.5	0
+150	19.5	0
+151	19.5	0
+152	19.5	0
+153	19.5	0
+154	19.5	0
+155	19.5	0
+156	19.5	0
+157	19.5	0
+158	19.5	0
+159	19.5	0
+160	19.5	0
+161	19.5	0
+162	19.5	0
+163	19.5	0
+164	19.5	0
+165	19.5	0
+166	19.5	0
+167	19.5	0
+168	19.5	0
+169	19.5	0
+170	19.5	0
+171	19.5	0
+172	19.5	0
+173	19.5	0
+174	19.5	0
+175	19.5	0
+176	19.5	0
+177	19.5	0
+178	19.5	0
+179	19.5	0
+180	19.5	0
+181	19.5	0
+182	19.5	0
+183	19.5	0
+184	19.5	0
+185	19.5	0
+186	19.5	0
+187	19.5	0
+188	19.5	0
+189	19.5	0
+190	19.5	0
+191	19.5	0
+192	19.5	0
+193	19.5	0
+194	19.5	0
+195	19.5	0
+196	19.5	0
+197	19.5	0
+198	19.5	0
+199	19.5	0
+200	19.5	0
+201	19.5	0
+202	19.5	0
+203	19.5	0
+204	19.5	0
+205	19.5	0
+206	19.5	0
+207	19.5	0
+208	19.5	0
+209	19.5	0
+210	19.5	0
+211	19.5	0
+212	19.5	0
+213	19.5	0
+214	19.5	0
+215	19.5	0
+216	19.5	0
+217	19.5	0
+218	19.5	0
+219	19.5	0
+220	19.5	0
+221	19.5	0
+222	19.5	0
+223	19.5	0
+224	19.5	0
+225	19.5	0
+226	19.5	0
+227	19.5	0
+228	19.5	0
+229	19.5	0
+230	19.5	0
+231	19.5	0
+232	19.5	0
+233	19.5	0
+234	19.5	0
+235	19.5	0
+236	19.5	0
+237	19.5	0
+238	19.5	0
+239	19.5	0
+240	19.5	0
+241	19.5	0
+242	19.5	0
+243	19.5	0
+244	19.5	0
+245	19.5	0
+246	19.5	0
+247	19.5	0
+248	19.5	0
+249	19.5	0
+250	19.5	0
+251	19.5	0
+252	19.5	0
+253	19.5	0
+254	19.5	0
+255	19.5	0
+256	19.5	0
+257	19.5	0
+258	19.5	0
+259	19.5	0
+260	19.5	0
+261	19.5	0
+262	19.5	0
+263	19.5	0
+264	19.5	0
+265	19.5	0
+266	19.5	0
+267	19.5	0
+268	19.5	0
+269	19.5	0
+270	19.5	0
+271	19.5	0
+272	19.5	0
+273	19.5	0
+274	19.5	0
+275	19.5	0
+276	19.5	0
+277	19.5	0
+278	19.5	0
+279	19.5	0
+280	19.5	0
+281	19.5	0
+282	19.5	0
+283	19.5	0
+284	19.5	0
+285	19.5	0
+286	19.5	0
+287	19.5	0
+288	19.5	0
+289	19.5	0
+290	19.5	0
+291	19.5	0
+292	19.5	0
+293	19.5	0
+294	19.5	0
+295	19.5	0
+296	19.5	0
+297	19.5	0
+298	19.5	0
+299	19.5	0
+300	19.5	0
+301	19.5	0
+302	19.5	0
+303	19.5	0
+304	19.5	0
+305	19.5	0
+306	19.5	0
+307	19.5	0
+308	19.5	0
+309	19.5	0
+310	19.5	0
+311	19.5	0
+312	19.5	0
+313	19.5	0
+314	19.5	0
+315	19.5	0
+316	19.5	0
+317	19.5	0
+318	19.5	0
+319	19.5	0
+320	19.5	0
+321	19.5	0
+322	19.5	0
+323	19.5	0
+324	19.5	0
+325	19.5	0
+326	19.5	0
+327	19.5	0
+328	19.5	0
+329	19.5	0
+330	19.5	0
+331	19.5	0
+332	19.5	0
+333	19.5	0
+334	19.5	0
+335	19.5	0
+336	19.5	0
+337	19.5	0
+338	19.5	0
+339	19.5	0
+340	19.5	0
+341	19.5	0
+342	19.5	0
+343	19.5	0
+344	19.5	0
+345	19.5	0
+346	19.5	0
+347	19.5	0
+348	19.5	0
+349	19.5	0
+350	19.5	0
+351	19.5	0
+352	19.5	0
+353	19.5	0
+354	19.5	0
+355	19.5	0
+356	19.5	0
+357	19.5	0
+358	19.5	0
+359	19.5	0
+360	19.5	0
+0	20	0
+1	20	0
+2	20	0
+3	20	0
+4	20	0
+5	20	0
+6	20	0
+7	20	0
+8	20	0
+9	20	0
+10	20	0
+11	20	0
+12	20	0
+13	20	0
+14	20	0
+15	20	0
+16	20	0
+17	20	0
+18	20	0
+19	20	0
+20	20	0
+21	20	0
+22	20	0
+23	20	0
+24	20	0
+25	20	0
+26	20	0
+27	20	0
+28	20	0
+29	20	0
+30	20	0
+31	20	0
+32	20	0
+33	20	0
+34	20	0
+35	20	0
+36	20	0
+37	20	0
+38	20	0
+39	20	0
+40	20	0
+41	20	0
+42	20	0
+43	20	0
+44	20	0
+45	20	0
+46	20	0
+47	20	0
+48	20	0
+49	20	0
+50	20	0
+51	20	0
+52	20	0
+53	20	0
+54	20	0
+55	20	0
+56	20	0
+57	20	0
+58	20	0
+59	20	0
+60	20	0
+61	20	0
+62	20	0
+63	20	0
+64	20	0
+65	20	0
+66	20	0
+67	20	0
+68	20	0
+69	20	0
+70	20	0
+71	20	0
+72	20	0
+73	20	0
+74	20	0
+75	20	0
+76	20	0
+77	20	0
+78	20	0
+79	20	0
+80	20	0
+81	20	0
+82	20	0
+83	20	0
+84	20	0
+85	20	0
+86	20	0
+87	20	0
+88	20	0
+89	20	0
+90	20	0
+91	20	0
+92	20	0
+93	20	0
+94	20	0
+95	20	0
+96	20	0
+97	20	0
+98	20	0
+99	20	0
+100	20	0
+101	20	0
+102	20	0
+103	20	0
+104	20	0
+105	20	0
+106	20	0
+107	20	0
+108	20	0
+109	20	0
+110	20	0
+111	20	0
+112	20	0
+113	20	0
+114	20	0
+115	20	0
+116	20	0
+117	20	0
+118	20	0
+119	20	0
+120	20	0
+121	20	0
+122	20	0
+123	20	0
+124	20	0
+125	20	0
+126	20	0
+127	20	0
+128	20	0
+129	20	0
+130	20	0
+131	20	0
+132	20	0
+133	20	0
+134	20	0
+135	20	0
+136	20	0
+137	20	0
+138	20	0
+139	20	0
+140	20	0
+141	20	0
+142	20	0
+143	20	0
+144	20	0
+145	20	0
+146	20	0
+147	20	0
+148	20	0
+149	20	0
+150	20	0
+151	20	0
+152	20	0
+153	20	0
+154	20	0
+155	20	0
+156	20	0
+157	20	0
+158	20	0
+159	20	0
+160	20	0
+161	20	0
+162	20	0
+163	20	0
+164	20	0
+165	20	0
+166	20	0
+167	20	0
+168	20	0
+169	20	0
+170	20	0
+171	20	0
+172	20	0
+173	20	0
+174	20	0
+175	20	0
+176	20	0
+177	20	0
+178	20	0
+179	20	0
+180	20	0
+181	20	0
+182	20	0
+183	20	0
+184	20	0
+185	20	0
+186	20	0
+187	20	0
+188	20	0
+189	20	0
+190	20	0
+191	20	0
+192	20	0
+193	20	0
+194	20	0
+195	20	0
+196	20	0
+197	20	0
+198	20	0
+199	20	0
+200	20	0
+201	20	0
+202	20	0
+203	20	0
+204	20	0
+205	20	0
+206	20	0
+207	20	0
+208	20	0
+209	20	0
+210	20	0
+211	20	0
+212	20	0
+213	20	0
+214	20	0
+215	20	0
+216	20	0
+217	20	0
+218	20	0
+219	20	0
+220	20	0
+221	20	0
+222	20	0
+223	20	0
+224	20	0
+225	20	0
+226	20	0
+227	20	0
+228	20	0
+229	20	0
+230	20	0
+231	20	0
+232	20	0
+233	20	0
+234	20	0
+235	20	0
+236	20	0
+237	20	0
+238	20	0
+239	20	0
+240	20	0
+241	20	0
+242	20	0
+243	20	0
+244	20	0
+245	20	0
+246	20	0
+247	20	0
+248	20	0
+249	20	0
+250	20	0
+251	20	0
+252	20	0
+253	20	0
+254	20	0
+255	20	0
+256	20	0
+257	20	0
+258	20	0
+259	20	0
+260	20	0
+261	20	0
+262	20	0
+263	20	0
+264	20	0
+265	20	0
+266	20	0
+267	20	0
+268	20	0
+269	20	0
+270	20	0
+271	20	0
+272	20	0
+273	20	0
+274	20	0
+275	20	0
+276	20	0
+277	20	0
+278	20	0
+279	20	0
+280	20	0
+281	20	0
+282	20	0
+283	20	0
+284	20	0
+285	20	0
+286	20	0
+287	20	0
+288	20	0
+289	20	0
+290	20	0
+291	20	0
+292	20	0
+293	20	0
+294	20	0
+295	20	0
+296	20	0
+297	20	0
+298	20	0
+299	20	0
+300	20	0
+301	20	0
+302	20	0
+303	20	0
+304	20	0
+305	20	0
+306	20	0
+307	20	0
+308	20	0
+309	20	0
+310	20	0
+311	20	0
+312	20	0
+313	20	0
+314	20	0
+315	20	0
+316	20	0
+317	20	0
+318	20	0
+319	20	0
+320	20	0
+321	20	0
+322	20	0
+323	20	0
+324	20	0
+325	20	0
+326	20	0
+327	20	0
+328	20	0
+329	20	0
+330	20	0
+331	20	0
+332	20	0
+333	20	0
+334	20	0
+335	20	0
+336	20	0
+337	20	0
+338	20	0
+339	20	0
+340	20	0
+341	20	0
+342	20	0
+343	20	0
+344	20	0
+345	20	0
+346	20	0
+347	20	0
+348	20	0
+349	20	0
+350	20	0
+351	20	0
+352	20	0
+353	20	0
+354	20	0
+355	20	0
+356	20	0
+357	20	0
+358	20	0
+359	20	0
+360	20	0
+0	20.5	0
+1	20.5	0
+2	20.5	0
+3	20.5	0
+4	20.5	0
+5	20.5	0
+6	20.5	0
+7	20.5	0
+8	20.5	0
+9	20.5	0
+10	20.5	0
+11	20.5	0
+12	20.5	0
+13	20.5	0
+14	20.5	0
+15	20.5	0
+16	20.5	0
+17	20.5	0
+18	20.5	0
+19	20.5	0
+20	20.5	0
+21	20.5	0
+22	20.5	0
+23	20.5	0
+24	20.5	0
+25	20.5	0
+26	20.5	0
+27	20.5	0
+28	20.5	0
+29	20.5	0
+30	20.5	0
+31	20.5	0
+32	20.5	0
+33	20.5	0
+34	20.5	0
+35	20.5	0
+36	20.5	0
+37	20.5	0
+38	20.5	0
+39	20.5	0
+40	20.5	0
+41	20.5	0
+42	20.5	0
+43	20.5	0
+44	20.5	0
+45	20.5	0
+46	20.5	0
+47	20.5	0
+48	20.5	0
+49	20.5	0
+50	20.5	0
+51	20.5	0
+52	20.5	0
+53	20.5	0
+54	20.5	0
+55	20.5	0
+56	20.5	0
+57	20.5	0
+58	20.5	0
+59	20.5	0
+60	20.5	0
+61	20.5	0
+62	20.5	0
+63	20.5	0
+64	20.5	0
+65	20.5	0
+66	20.5	0
+67	20.5	0
+68	20.5	0
+69	20.5	0
+70	20.5	0
+71	20.5	0
+72	20.5	0
+73	20.5	0
+74	20.5	0
+75	20.5	0
+76	20.5	0
+77	20.5	0
+78	20.5	0
+79	20.5	0
+80	20.5	0
+81	20.5	0
+82	20.5	0
+83	20.5	0
+84	20.5	0
+85	20.5	0
+86	20.5	0
+87	20.5	0
+88	20.5	0
+89	20.5	0
+90	20.5	0
+91	20.5	0
+92	20.5	0
+93	20.5	0
+94	20.5	0
+95	20.5	0
+96	20.5	0
+97	20.5	0
+98	20.5	0
+99	20.5	0
+100	20.5	0
+101	20.5	0
+102	20.5	0
+103	20.5	0
+104	20.5	0
+105	20.5	0
+106	20.5	0
+107	20.5	0
+108	20.5	0
+109	20.5	0
+110	20.5	0
+111	20.5	0
+112	20.5	0
+113	20.5	0
+114	20.5	0
+115	20.5	0
+116	20.5	0
+117	20.5	0
+118	20.5	0
+119	20.5	0
+120	20.5	0
+121	20.5	0
+122	20.5	0
+123	20.5	0
+124	20.5	0
+125	20.5	0
+126	20.5	0
+127	20.5	0
+128	20.5	0
+129	20.5	0
+130	20.5	0
+131	20.5	0
+132	20.5	0
+133	20.5	0
+134	20.5	0
+135	20.5	0
+136	20.5	0
+137	20.5	0
+138	20.5	0
+139	20.5	0
+140	20.5	0
+141	20.5	0
+142	20.5	0
+143	20.5	0
+144	20.5	0
+145	20.5	0
+146	20.5	0
+147	20.5	0
+148	20.5	0
+149	20.5	0
+150	20.5	0
+151	20.5	0
+152	20.5	0
+153	20.5	0
+154	20.5	0
+155	20.5	0
+156	20.5	0
+157	20.5	0
+158	20.5	0
+159	20.5	0
+160	20.5	0
+161	20.5	0
+162	20.5	0
+163	20.5	0
+164	20.5	0
+165	20.5	0
+166	20.5	0
+167	20.5	0
+168	20.5	0
+169	20.5	0
+170	20.5	0
+171	20.5	0
+172	20.5	0
+173	20.5	0
+174	20.5	0
+175	20.5	0
+176	20.5	0
+177	20.5	0
+178	20.5	0
+179	20.5	0
+180	20.5	0
+181	20.5	0
+182	20.5	0
+183	20.5	0
+184	20.5	0
+185	20.5	0
+186	20.5	0
+187	20.5	0
+188	20.5	0
+189	20.5	0
+190	20.5	0
+191	20.5	0
+192	20.5	0
+193	20.5	0
+194	20.5	0
+195	20.5	0
+196	20.5	0
+197	20.5	0
+198	20.5	0
+199	20.5	0
+200	20.5	0
+201	20.5	0
+202	20.5	0
+203	20.5	0
+204	20.5	0
+205	20.5	0
+206	20.5	0
+207	20.5	0
+208	20.5	0
+209	20.5	0
+210	20.5	0
+211	20.5	0
+212	20.5	0
+213	20.5	0
+214	20.5	0
+215	20.5	0
+216	20.5	0
+217	20.5	0
+218	20.5	0
+219	20.5	0
+220	20.5	0
+221	20.5	0
+222	20.5	0
+223	20.5	0
+224	20.5	0
+225	20.5	0
+226	20.5	0
+227	20.5	0
+228	20.5	0
+229	20.5	0
+230	20.5	0
+231	20.5	0
+232	20.5	0
+233	20.5	0
+234	20.5	0
+235	20.5	0
+236	20.5	0
+237	20.5	0
+238	20.5	0
+239	20.5	0
+240	20.5	0
+241	20.5	0
+242	20.5	0
+243	20.5	0
+244	20.5	0
+245	20.5	0
+246	20.5	0
+247	20.5	0
+248	20.5	0
+249	20.5	0
+250	20.5	0
+251	20.5	0
+252	20.5	0
+253	20.5	0
+254	20.5	0
+255	20.5	0
+256	20.5	0
+257	20.5	0
+258	20.5	0
+259	20.5	0
+260	20.5	0
+261	20.5	0
+262	20.5	0
+263	20.5	0
+264	20.5	0
+265	20.5	0
+266	20.5	0
+267	20.5	0
+268	20.5	0
+269	20.5	0
+270	20.5	0
+271	20.5	0
+272	20.5	0
+273	20.5	0
+274	20.5	0
+275	20.5	0
+276	20.5	0
+277	20.5	0
+278	20.5	0
+279	20.5	0
+280	20.5	0
+281	20.5	0
+282	20.5	0
+283	20.5	0
+284	20.5	0
+285	20.5	0
+286	20.5	0
+287	20.5	0
+288	20.5	0
+289	20.5	0
+290	20.5	0
+291	20.5	0
+292	20.5	0
+293	20.5	0
+294	20.5	0
+295	20.5	0
+296	20.5	0
+297	20.5	0
+298	20.5	0
+299	20.5	0
+300	20.5	0
+301	20.5	0
+302	20.5	0
+303	20.5	0
+304	20.5	0
+305	20.5	0
+306	20.5	0
+307	20.5	0
+308	20.5	0
+309	20.5	0
+310	20.5	0
+311	20.5	0
+312	20.5	0
+313	20.5	0
+314	20.5	0
+315	20.5	0
+316	20.5	0
+317	20.5	0
+318	20.5	0
+319	20.5	0
+320	20.5	0
+321	20.5	0
+322	20.5	0
+323	20.5	0
+324	20.5	0
+325	20.5	0
+326	20.5	0
+327	20.5	0
+328	20.5	0
+329	20.5	0
+330	20.5	0
+331	20.5	0
+332	20.5	0
+333	20.5	0
+334	20.5	0
+335	20.5	0
+336	20.5	0
+337	20.5	0
+338	20.5	0
+339	20.5	0
+340	20.5	0
+341	20.5	0
+342	20.5	0
+343	20.5	0
+344	20.5	0
+345	20.5	0
+346	20.5	0
+347	20.5	0
+348	20.5	0
+349	20.5	0
+350	20.5	0
+351	20.5	0
+352	20.5	0
+353	20.5	0
+354	20.5	0
+355	20.5	0
+356	20.5	0
+357	20.5	0
+358	20.5	0
+359	20.5	0
+360	20.5	0
+0	21	0
+1	21	0
+2	21	0
+3	21	0
+4	21	0
+5	21	0
+6	21	0
+7	21	0
+8	21	0
+9	21	0
+10	21	0
+11	21	0
+12	21	0
+13	21	0
+14	21	0
+15	21	0
+16	21	0
+17	21	0
+18	21	0
+19	21	0
+20	21	0
+21	21	0
+22	21	0
+23	21	0
+24	21	0
+25	21	0
+26	21	0
+27	21	0
+28	21	0
+29	21	0
+30	21	0
+31	21	0
+32	21	0
+33	21	0
+34	21	0
+35	21	0
+36	21	0
+37	21	0
+38	21	0
+39	21	0
+40	21	0
+41	21	0
+42	21	0
+43	21	0
+44	21	0
+45	21	0
+46	21	0
+47	21	0
+48	21	0
+49	21	0
+50	21	0
+51	21	0
+52	21	0
+53	21	0
+54	21	0
+55	21	0
+56	21	0
+57	21	0
+58	21	0
+59	21	0
+60	21	0
+61	21	0
+62	21	0
+63	21	0
+64	21	0
+65	21	0
+66	21	0
+67	21	0
+68	21	0
+69	21	0
+70	21	0
+71	21	0
+72	21	0
+73	21	0
+74	21	0
+75	21	0
+76	21	0
+77	21	0
+78	21	0
+79	21	0
+80	21	0
+81	21	0
+82	21	0
+83	21	0
+84	21	0
+85	21	0
+86	21	0
+87	21	0
+88	21	0
+89	21	0
+90	21	0
+91	21	0
+92	21	0
+93	21	0
+94	21	0
+95	21	0
+96	21	0
+97	21	0
+98	21	0
+99	21	0
+100	21	0
+101	21	0
+102	21	0
+103	21	0
+104	21	0
+105	21	0
+106	21	0
+107	21	0
+108	21	0
+109	21	0
+110	21	0
+111	21	0
+112	21	0
+113	21	0
+114	21	0
+115	21	0
+116	21	0
+117	21	0
+118	21	0
+119	21	0
+120	21	0
+121	21	0
+122	21	0
+123	21	0
+124	21	0
+125	21	0
+126	21	0
+127	21	0
+128	21	0
+129	21	0
+130	21	0
+131	21	0
+132	21	0
+133	21	0
+134	21	0
+135	21	0
+136	21	0
+137	21	0
+138	21	0
+139	21	0
+140	21	0
+141	21	0
+142	21	0
+143	21	0
+144	21	0
+145	21	0
+146	21	0
+147	21	0
+148	21	0
+149	21	0
+150	21	0
+151	21	0
+152	21	0
+153	21	0
+154	21	0
+155	21	0
+156	21	0
+157	21	0
+158	21	0
+159	21	0
+160	21	0
+161	21	0
+162	21	0
+163	21	0
+164	21	0
+165	21	0
+166	21	0
+167	21	0
+168	21	0
+169	21	0
+170	21	0
+171	21	0
+172	21	0
+173	21	0
+174	21	0
+175	21	0
+176	21	0
+177	21	0
+178	21	0
+179	21	0
+180	21	0
+181	21	0
+182	21	0
+183	21	0
+184	21	0
+185	21	0
+186	21	0
+187	21	0
+188	21	0
+189	21	0
+190	21	0
+191	21	0
+192	21	0
+193	21	0
+194	21	0
+195	21	0
+196	21	0
+197	21	0
+198	21	0
+199	21	0
+200	21	0
+201	21	0
+202	21	0
+203	21	0
+204	21	0
+205	21	0
+206	21	0
+207	21	0
+208	21	0
+209	21	0
+210	21	0
+211	21	0
+212	21	0
+213	21	0
+214	21	0
+215	21	0
+216	21	0
+217	21	0
+218	21	0
+219	21	0
+220	21	0
+221	21	0
+222	21	0
+223	21	0
+224	21	0
+225	21	0
+226	21	0
+227	21	0
+228	21	0
+229	21	0
+230	21	0
+231	21	0
+232	21	0
+233	21	0
+234	21	0
+235	21	0
+236	21	0
+237	21	0
+238	21	0
+239	21	0
+240	21	0
+241	21	0
+242	21	0
+243	21	0
+244	21	0
+245	21	0
+246	21	0
+247	21	0
+248	21	0
+249	21	0
+250	21	0
+251	21	0
+252	21	0
+253	21	0
+254	21	0
+255	21	0
+256	21	0
+257	21	0
+258	21	0
+259	21	0
+260	21	0
+261	21	0
+262	21	0
+263	21	0
+264	21	0
+265	21	0
+266	21	0
+267	21	0
+268	21	0
+269	21	0
+270	21	0
+271	21	0
+272	21	0
+273	21	0
+274	21	0
+275	21	0
+276	21	0
+277	21	0
+278	21	0
+279	21	0
+280	21	0
+281	21	0
+282	21	0
+283	21	0
+284	21	0
+285	21	0
+286	21	0
+287	21	0
+288	21	0
+289	21	0
+290	21	0
+291	21	0
+292	21	0
+293	21	0
+294	21	0
+295	21	0
+296	21	0
+297	21	0
+298	21	0
+299	21	0
+300	21	0
+301	21	0
+302	21	0
+303	21	0
+304	21	0
+305	21	0
+306	21	0
+307	21	0
+308	21	0
+309	21	0
+310	21	0
+311	21	0
+312	21	0
+313	21	0
+314	21	0
+315	21	0
+316	21	0
+317	21	0
+318	21	0
+319	21	0
+320	21	0
+321	21	0
+322	21	0
+323	21	0
+324	21	0
+325	21	0
+326	21	0
+327	21	0
+328	21	0
+329	21	0
+330	21	0
+331	21	0
+332	21	0
+333	21	0
+334	21	0
+335	21	0
+336	21	0
+337	21	0
+338	21	0
+339	21	0
+340	21	0
+341	21	0
+342	21	0
+343	21	0
+344	21	0
+345	21	0
+346	21	0
+347	21	0
+348	21	0
+349	21	0
+350	21	0
+351	21	0
+352	21	0
+353	21	0
+354	21	0
+355	21	0
+356	21	0
+357	21	0
+358	21	0
+359	21	0
+360	21	0
+0	21.5	0
+1	21.5	0
+2	21.5	0
+3	21.5	0
+4	21.5	0
+5	21.5	0
+6	21.5	0
+7	21.5	0
+8	21.5	0
+9	21.5	0
+10	21.5	0
+11	21.5	0
+12	21.5	0
+13	21.5	0
+14	21.5	0
+15	21.5	0
+16	21.5	0
+17	21.5	0
+18	21.5	0
+19	21.5	0
+20	21.5	0
+21	21.5	0
+22	21.5	0
+23	21.5	0
+24	21.5	0
+25	21.5	0
+26	21.5	0
+27	21.5	0
+28	21.5	0
+29	21.5	0
+30	21.5	0
+31	21.5	0
+32	21.5	0
+33	21.5	0
+34	21.5	0
+35	21.5	0
+36	21.5	0
+37	21.5	0
+38	21.5	0
+39	21.5	0
+40	21.5	0
+41	21.5	0
+42	21.5	0
+43	21.5	0
+44	21.5	0
+45	21.5	0
+46	21.5	0
+47	21.5	0
+48	21.5	0
+49	21.5	0
+50	21.5	0
+51	21.5	0
+52	21.5	0
+53	21.5	0
+54	21.5	0
+55	21.5	0
+56	21.5	0
+57	21.5	0
+58	21.5	0
+59	21.5	0
+60	21.5	0
+61	21.5	0
+62	21.5	0
+63	21.5	0
+64	21.5	0
+65	21.5	0
+66	21.5	0
+67	21.5	0
+68	21.5	0
+69	21.5	0
+70	21.5	0
+71	21.5	0
+72	21.5	0
+73	21.5	0
+74	21.5	0
+75	21.5	0
+76	21.5	0
+77	21.5	0
+78	21.5	0
+79	21.5	0
+80	21.5	0
+81	21.5	0
+82	21.5	0
+83	21.5	0
+84	21.5	0
+85	21.5	0
+86	21.5	0
+87	21.5	0
+88	21.5	0
+89	21.5	0
+90	21.5	0
+91	21.5	0
+92	21.5	0
+93	21.5	0
+94	21.5	0
+95	21.5	0
+96	21.5	0
+97	21.5	0
+98	21.5	0
+99	21.5	0
+100	21.5	0
+101	21.5	0
+102	21.5	0
+103	21.5	0
+104	21.5	0
+105	21.5	0
+106	21.5	0
+107	21.5	0
+108	21.5	0
+109	21.5	0
+110	21.5	0
+111	21.5	0
+112	21.5	0
+113	21.5	0
+114	21.5	0
+115	21.5	0
+116	21.5	0
+117	21.5	0
+118	21.5	0
+119	21.5	0
+120	21.5	0
+121	21.5	0
+122	21.5	0
+123	21.5	0
+124	21.5	0
+125	21.5	0
+126	21.5	0
+127	21.5	0
+128	21.5	0
+129	21.5	0
+130	21.5	0
+131	21.5	0
+132	21.5	0
+133	21.5	0
+134	21.5	0
+135	21.5	0
+136	21.5	0
+137	21.5	0
+138	21.5	0
+139	21.5	0
+140	21.5	0
+141	21.5	0
+142	21.5	0
+143	21.5	0
+144	21.5	0
+145	21.5	0
+146	21.5	0
+147	21.5	0
+148	21.5	0
+149	21.5	0
+150	21.5	0
+151	21.5	0
+152	21.5	0
+153	21.5	0
+154	21.5	0
+155	21.5	0
+156	21.5	0
+157	21.5	0
+158	21.5	0
+159	21.5	0
+160	21.5	0
+161	21.5	0
+162	21.5	0
+163	21.5	0
+164	21.5	0
+165	21.5	0
+166	21.5	0
+167	21.5	0
+168	21.5	0
+169	21.5	0
+170	21.5	0
+171	21.5	0
+172	21.5	0
+173	21.5	0
+174	21.5	0
+175	21.5	0
+176	21.5	0
+177	21.5	0
+178	21.5	0
+179	21.5	0
+180	21.5	0
+181	21.5	0
+182	21.5	0
+183	21.5	0
+184	21.5	0
+185	21.5	0
+186	21.5	0
+187	21.5	0
+188	21.5	0
+189	21.5	0
+190	21.5	0
+191	21.5	0
+192	21.5	0
+193	21.5	0
+194	21.5	0
+195	21.5	0
+196	21.5	0
+197	21.5	0
+198	21.5	0
+199	21.5	0
+200	21.5	0
+201	21.5	0
+202	21.5	0
+203	21.5	0
+204	21.5	0
+205	21.5	0
+206	21.5	0
+207	21.5	0
+208	21.5	0
+209	21.5	0
+210	21.5	0
+211	21.5	0
+212	21.5	0
+213	21.5	0
+214	21.5	0
+215	21.5	0
+216	21.5	0
+217	21.5	0
+218	21.5	0
+219	21.5	0
+220	21.5	0
+221	21.5	0
+222	21.5	0
+223	21.5	0
+224	21.5	0
+225	21.5	0
+226	21.5	0
+227	21.5	0
+228	21.5	0
+229	21.5	0
+230	21.5	0
+231	21.5	0
+232	21.5	0
+233	21.5	0
+234	21.5	0
+235	21.5	0
+236	21.5	0
+237	21.5	0
+238	21.5	0
+239	21.5	0
+240	21.5	0
+241	21.5	0
+242	21.5	0
+243	21.5	0
+244	21.5	0
+245	21.5	0
+246	21.5	0
+247	21.5	0
+248	21.5	0
+249	21.5	0
+250	21.5	0
+251	21.5	0
+252	21.5	0
+253	21.5	0
+254	21.5	0
+255	21.5	0
+256	21.5	0
+257	21.5	0
+258	21.5	0
+259	21.5	0
+260	21.5	0
+261	21.5	0
+262	21.5	0
+263	21.5	0
+264	21.5	0
+265	21.5	0
+266	21.5	0
+267	21.5	0
+268	21.5	0
+269	21.5	0
+270	21.5	0
+271	21.5	0
+272	21.5	0
+273	21.5	0
+274	21.5	0
+275	21.5	0
+276	21.5	0
+277	21.5	0
+278	21.5	0
+279	21.5	0
+280	21.5	0
+281	21.5	0
+282	21.5	0
+283	21.5	0
+284	21.5	0
+285	21.5	0
+286	21.5	0
+287	21.5	0
+288	21.5	0
+289	21.5	0
+290	21.5	0
+291	21.5	0
+292	21.5	0
+293	21.5	0
+294	21.5	0
+295	21.5	0
+296	21.5	0
+297	21.5	0
+298	21.5	0
+299	21.5	0
+300	21.5	0
+301	21.5	0
+302	21.5	0
+303	21.5	0
+304	21.5	0
+305	21.5	0
+306	21.5	0
+307	21.5	0
+308	21.5	0
+309	21.5	0
+310	21.5	0
+311	21.5	0
+312	21.5	0
+313	21.5	0
+314	21.5	0
+315	21.5	0
+316	21.5	0
+317	21.5	0
+318	21.5	0
+319	21.5	0
+320	21.5	0
+321	21.5	0
+322	21.5	0
+323	21.5	0
+324	21.5	0
+325	21.5	0
+326	21.5	0
+327	21.5	0
+328	21.5	0
+329	21.5	0
+330	21.5	0
+331	21.5	0
+332	21.5	0
+333	21.5	0
+334	21.5	0
+335	21.5	0
+336	21.5	0
+337	21.5	0
+338	21.5	0
+339	21.5	0
+340	21.5	0
+341	21.5	0
+342	21.5	0
+343	21.5	0
+344	21.5	0
+345	21.5	0
+346	21.5	0
+347	21.5	0
+348	21.5	0
+349	21.5	0
+350	21.5	0
+351	21.5	0
+352	21.5	0
+353	21.5	0
+354	21.5	0
+355	21.5	0
+356	21.5	0
+357	21.5	0
+358	21.5	0
+359	21.5	0
+360	21.5	0
+0	22	0
+1	22	0
+2	22	0
+3	22	0
+4	22	0
+5	22	0
+6	22	0
+7	22	0
+8	22	0
+9	22	0
+10	22	0
+11	22	0
+12	22	0
+13	22	0
+14	22	0
+15	22	0
+16	22	0
+17	22	0
+18	22	0
+19	22	0
+20	22	0
+21	22	0
+22	22	0
+23	22	0
+24	22	0
+25	22	0
+26	22	0
+27	22	0
+28	22	0
+29	22	0
+30	22	0
+31	22	0
+32	22	0
+33	22	0
+34	22	0
+35	22	0
+36	22	0
+37	22	0
+38	22	0
+39	22	0
+40	22	0
+41	22	0
+42	22	0
+43	22	0
+44	22	0
+45	22	0
+46	22	0
+47	22	0
+48	22	0
+49	22	0
+50	22	0
+51	22	0
+52	22	0
+53	22	0
+54	22	0
+55	22	0
+56	22	0
+57	22	0
+58	22	0
+59	22	0
+60	22	0
+61	22	0
+62	22	0
+63	22	0
+64	22	0
+65	22	0
+66	22	0
+67	22	0
+68	22	0
+69	22	0
+70	22	0
+71	22	0
+72	22	0
+73	22	0
+74	22	0
+75	22	0
+76	22	0
+77	22	0
+78	22	0
+79	22	0
+80	22	0
+81	22	0
+82	22	0
+83	22	0
+84	22	0
+85	22	0
+86	22	0
+87	22	0
+88	22	0
+89	22	0
+90	22	0
+91	22	0
+92	22	0
+93	22	0
+94	22	0
+95	22	0
+96	22	0
+97	22	0
+98	22	0
+99	22	0
+100	22	0
+101	22	0
+102	22	0
+103	22	0
+104	22	0
+105	22	0
+106	22	0
+107	22	0
+108	22	0
+109	22	0
+110	22	0
+111	22	0
+112	22	0
+113	22	0
+114	22	0
+115	22	0
+116	22	0
+117	22	0
+118	22	0
+119	22	0
+120	22	0
+121	22	0
+122	22	0
+123	22	0
+124	22	0
+125	22	0
+126	22	0
+127	22	0
+128	22	0
+129	22	0
+130	22	0
+131	22	0
+132	22	0
+133	22	0
+134	22	0
+135	22	0
+136	22	0
+137	22	0
+138	22	0
+139	22	0
+140	22	0
+141	22	0
+142	22	0
+143	22	0
+144	22	0
+145	22	0
+146	22	0
+147	22	0
+148	22	0
+149	22	0
+150	22	0
+151	22	0
+152	22	0
+153	22	0
+154	22	0
+155	22	0
+156	22	0
+157	22	0
+158	22	0
+159	22	0
+160	22	0
+161	22	0
+162	22	0
+163	22	0
+164	22	0
+165	22	0
+166	22	0
+167	22	0
+168	22	0
+169	22	0
+170	22	0
+171	22	0
+172	22	0
+173	22	0
+174	22	0
+175	22	0
+176	22	0
+177	22	0
+178	22	0
+179	22	0
+180	22	0
+181	22	0
+182	22	0
+183	22	0
+184	22	0
+185	22	0
+186	22	0
+187	22	0
+188	22	0
+189	22	0
+190	22	0
+191	22	0
+192	22	0
+193	22	0
+194	22	0
+195	22	0
+196	22	0
+197	22	0
+198	22	0
+199	22	0
+200	22	0
+201	22	0
+202	22	0
+203	22	0
+204	22	0
+205	22	0
+206	22	0
+207	22	0
+208	22	0
+209	22	0
+210	22	0
+211	22	0
+212	22	0
+213	22	0
+214	22	0
+215	22	0
+216	22	0
+217	22	0
+218	22	0
+219	22	0
+220	22	0
+221	22	0
+222	22	0
+223	22	0
+224	22	0
+225	22	0
+226	22	0
+227	22	0
+228	22	0
+229	22	0
+230	22	0
+231	22	0
+232	22	0
+233	22	0
+234	22	0
+235	22	0
+236	22	0
+237	22	0
+238	22	0
+239	22	0
+240	22	0
+241	22	0
+242	22	0
+243	22	0
+244	22	0
+245	22	0
+246	22	0
+247	22	0
+248	22	0
+249	22	0
+250	22	0
+251	22	0
+252	22	0
+253	22	0
+254	22	0
+255	22	0
+256	22	0
+257	22	0
+258	22	0
+259	22	0
+260	22	0
+261	22	0
+262	22	0
+263	22	0
+264	22	0
+265	22	0
+266	22	0
+267	22	0
+268	22	0
+269	22	0
+270	22	0
+271	22	0
+272	22	0
+273	22	0
+274	22	0
+275	22	0
+276	22	0
+277	22	0
+278	22	0
+279	22	0
+280	22	0
+281	22	0
+282	22	0
+283	22	0
+284	22	0
+285	22	0
+286	22	0
+287	22	0
+288	22	0
+289	22	0
+290	22	0
+291	22	0
+292	22	0
+293	22	0
+294	22	0
+295	22	0
+296	22	0
+297	22	0
+298	22	0
+299	22	0
+300	22	0
+301	22	0
+302	22	0
+303	22	0
+304	22	0
+305	22	0
+306	22	0
+307	22	0
+308	22	0
+309	22	0
+310	22	0
+311	22	0
+312	22	0
+313	22	0
+314	22	0
+315	22	0
+316	22	0
+317	22	0
+318	22	0
+319	22	0
+320	22	0
+321	22	0
+322	22	0
+323	22	0
+324	22	0
+325	22	0
+326	22	0
+327	22	0
+328	22	0
+329	22	0
+330	22	0
+331	22	0
+332	22	0
+333	22	0
+334	22	0
+335	22	0
+336	22	0
+337	22	0
+338	22	0
+339	22	0
+340	22	0
+341	22	0
+342	22	0
+343	22	0
+344	22	0
+345	22	0
+346	22	0
+347	22	0
+348	22	0
+349	22	0
+350	22	0
+351	22	0
+352	22	0
+353	22	0
+354	22	0
+355	22	0
+356	22	0
+357	22	0
+358	22	0
+359	22	0
+360	22	0
+0	22.5	0
+1	22.5	0
+2	22.5	0
+3	22.5	0
+4	22.5	0
+5	22.5	0
+6	22.5	0
+7	22.5	0
+8	22.5	0
+9	22.5	0
+10	22.5	0
+11	22.5	0
+12	22.5	0
+13	22.5	0
+14	22.5	0
+15	22.5	0
+16	22.5	0
+17	22.5	0
+18	22.5	0
+19	22.5	0
+20	22.5	0
+21	22.5	0
+22	22.5	0
+23	22.5	0
+24	22.5	0
+25	22.5	0
+26	22.5	0
+27	22.5	0
+28	22.5	0
+29	22.5	0
+30	22.5	0
+31	22.5	0
+32	22.5	0
+33	22.5	0
+34	22.5	0
+35	22.5	0
+36	22.5	0
+37	22.5	0
+38	22.5	0
+39	22.5	0
+40	22.5	0
+41	22.5	0
+42	22.5	0
+43	22.5	0
+44	22.5	0
+45	22.5	0
+46	22.5	0
+47	22.5	0
+48	22.5	0
+49	22.5	0
+50	22.5	0
+51	22.5	0
+52	22.5	0
+53	22.5	0
+54	22.5	0
+55	22.5	0
+56	22.5	0
+57	22.5	0
+58	22.5	0
+59	22.5	0
+60	22.5	0
+61	22.5	0
+62	22.5	0
+63	22.5	0
+64	22.5	0
+65	22.5	0
+66	22.5	0
+67	22.5	0
+68	22.5	0
+69	22.5	0
+70	22.5	0
+71	22.5	0
+72	22.5	0
+73	22.5	0
+74	22.5	0
+75	22.5	0
+76	22.5	0
+77	22.5	0
+78	22.5	0
+79	22.5	0
+80	22.5	0
+81	22.5	0
+82	22.5	0
+83	22.5	0
+84	22.5	0
+85	22.5	0
+86	22.5	0
+87	22.5	0
+88	22.5	0
+89	22.5	0
+90	22.5	0
+91	22.5	0
+92	22.5	0
+93	22.5	0
+94	22.5	0
+95	22.5	0
+96	22.5	0
+97	22.5	0
+98	22.5	0
+99	22.5	0
+100	22.5	0
+101	22.5	0
+102	22.5	0
+103	22.5	0
+104	22.5	0
+105	22.5	0
+106	22.5	0
+107	22.5	0
+108	22.5	0
+109	22.5	0
+110	22.5	0
+111	22.5	0
+112	22.5	0
+113	22.5	0
+114	22.5	0
+115	22.5	0
+116	22.5	0
+117	22.5	0
+118	22.5	0
+119	22.5	0
+120	22.5	0
+121	22.5	0
+122	22.5	0
+123	22.5	0
+124	22.5	0
+125	22.5	0
+126	22.5	0
+127	22.5	0
+128	22.5	0
+129	22.5	0
+130	22.5	0
+131	22.5	0
+132	22.5	0
+133	22.5	0
+134	22.5	0
+135	22.5	0
+136	22.5	0
+137	22.5	0
+138	22.5	0
+139	22.5	0
+140	22.5	0
+141	22.5	0
+142	22.5	0
+143	22.5	0
+144	22.5	0
+145	22.5	0
+146	22.5	0
+147	22.5	0
+148	22.5	0
+149	22.5	0
+150	22.5	0
+151	22.5	0
+152	22.5	0
+153	22.5	0
+154	22.5	0
+155	22.5	0
+156	22.5	0
+157	22.5	0
+158	22.5	0
+159	22.5	0
+160	22.5	0
+161	22.5	0
+162	22.5	0
+163	22.5	0
+164	22.5	0
+165	22.5	0
+166	22.5	0
+167	22.5	0
+168	22.5	0
+169	22.5	0
+170	22.5	0
+171	22.5	0
+172	22.5	0
+173	22.5	0
+174	22.5	0
+175	22.5	0
+176	22.5	0
+177	22.5	0
+178	22.5	0
+179	22.5	0
+180	22.5	0
+181	22.5	0
+182	22.5	0
+183	22.5	0
+184	22.5	0
+185	22.5	0
+186	22.5	0
+187	22.5	0
+188	22.5	0
+189	22.5	0
+190	22.5	0
+191	22.5	0
+192	22.5	0
+193	22.5	0
+194	22.5	0
+195	22.5	0
+196	22.5	0
+197	22.5	0
+198	22.5	0
+199	22.5	0
+200	22.5	0
+201	22.5	0
+202	22.5	0
+203	22.5	0
+204	22.5	0
+205	22.5	0
+206	22.5	0
+207	22.5	0
+208	22.5	0
+209	22.5	0
+210	22.5	0
+211	22.5	0
+212	22.5	0
+213	22.5	0
+214	22.5	0
+215	22.5	0
+216	22.5	0
+217	22.5	0
+218	22.5	0
+219	22.5	0
+220	22.5	0
+221	22.5	0
+222	22.5	0
+223	22.5	0
+224	22.5	0
+225	22.5	0
+226	22.5	0
+227	22.5	0
+228	22.5	0
+229	22.5	0
+230	22.5	0
+231	22.5	0
+232	22.5	0
+233	22.5	0
+234	22.5	0
+235	22.5	0
+236	22.5	0
+237	22.5	0
+238	22.5	0
+239	22.5	0
+240	22.5	0
+241	22.5	0
+242	22.5	0
+243	22.5	0
+244	22.5	0
+245	22.5	0
+246	22.5	0
+247	22.5	0
+248	22.5	0
+249	22.5	0
+250	22.5	0
+251	22.5	0
+252	22.5	0
+253	22.5	0
+254	22.5	0
+255	22.5	0
+256	22.5	0
+257	22.5	0
+258	22.5	0
+259	22.5	0
+260	22.5	0
+261	22.5	0
+262	22.5	0
+263	22.5	0
+264	22.5	0
+265	22.5	0
+266	22.5	0
+267	22.5	0
+268	22.5	0
+269	22.5	0
+270	22.5	0
+271	22.5	0
+272	22.5	0
+273	22.5	0
+274	22.5	0
+275	22.5	0
+276	22.5	0
+277	22.5	0
+278	22.5	0
+279	22.5	0
+280	22.5	0
+281	22.5	0
+282	22.5	0
+283	22.5	0
+284	22.5	0
+285	22.5	0
+286	22.5	0
+287	22.5	0
+288	22.5	0
+289	22.5	0
+290	22.5	0
+291	22.5	0
+292	22.5	0
+293	22.5	0
+294	22.5	0
+295	22.5	0
+296	22.5	0
+297	22.5	0
+298	22.5	0
+299	22.5	0
+300	22.5	0
+301	22.5	0
+302	22.5	0
+303	22.5	0
+304	22.5	0
+305	22.5	0
+306	22.5	0
+307	22.5	0
+308	22.5	0
+309	22.5	0
+310	22.5	0
+311	22.5	0
+312	22.5	0
+313	22.5	0
+314	22.5	0
+315	22.5	0
+316	22.5	0
+317	22.5	0
+318	22.5	0
+319	22.5	0
+320	22.5	0
+321	22.5	0
+322	22.5	0
+323	22.5	0
+324	22.5	0
+325	22.5	0
+326	22.5	0
+327	22.5	0
+328	22.5	0
+329	22.5	0
+330	22.5	0
+331	22.5	0
+332	22.5	0
+333	22.5	0
+334	22.5	0
+335	22.5	0
+336	22.5	0
+337	22.5	0
+338	22.5	0
+339	22.5	0
+340	22.5	0
+341	22.5	0
+342	22.5	0
+343	22.5	0
+344	22.5	0
+345	22.5	0
+346	22.5	0
+347	22.5	0
+348	22.5	0
+349	22.5	0
+350	22.5	0
+351	22.5	0
+352	22.5	0
+353	22.5	0
+354	22.5	0
+355	22.5	0
+356	22.5	0
+357	22.5	0
+358	22.5	0
+359	22.5	0
+360	22.5	0
+0	23	0
+1	23	0
+2	23	0
+3	23	0
+4	23	0
+5	23	0
+6	23	0
+7	23	0
+8	23	0
+9	23	0
+10	23	0
+11	23	0
+12	23	0
+13	23	0
+14	23	0
+15	23	0
+16	23	0
+17	23	0
+18	23	0
+19	23	0
+20	23	0
+21	23	0
+22	23	0
+23	23	0
+24	23	0
+25	23	0
+26	23	0
+27	23	0
+28	23	0
+29	23	0
+30	23	0
+31	23	0
+32	23	0
+33	23	0
+34	23	0
+35	23	0
+36	23	0
+37	23	0
+38	23	0
+39	23	0
+40	23	0
+41	23	0
+42	23	0
+43	23	0
+44	23	0
+45	23	0
+46	23	0
+47	23	0
+48	23	0
+49	23	0
+50	23	0
+51	23	0
+52	23	0
+53	23	0
+54	23	0
+55	23	0
+56	23	0
+57	23	0
+58	23	0
+59	23	0
+60	23	0
+61	23	0
+62	23	0
+63	23	0
+64	23	0
+65	23	0
+66	23	0
+67	23	0
+68	23	0
+69	23	0
+70	23	0
+71	23	0
+72	23	0
+73	23	0
+74	23	0
+75	23	0
+76	23	0
+77	23	0
+78	23	0
+79	23	0
+80	23	0
+81	23	0
+82	23	0
+83	23	0
+84	23	0
+85	23	0
+86	23	0
+87	23	0
+88	23	0
+89	23	0
+90	23	0
+91	23	0
+92	23	0
+93	23	0
+94	23	0
+95	23	0
+96	23	0
+97	23	0
+98	23	0
+99	23	0
+100	23	0
+101	23	0
+102	23	0
+103	23	0
+104	23	0
+105	23	0
+106	23	0
+107	23	0
+108	23	0
+109	23	0
+110	23	0
+111	23	0
+112	23	0
+113	23	0
+114	23	0
+115	23	0
+116	23	0
+117	23	0
+118	23	0
+119	23	0
+120	23	0
+121	23	0
+122	23	0
+123	23	0
+124	23	0
+125	23	0
+126	23	0
+127	23	0
+128	23	0
+129	23	0
+130	23	0
+131	23	0
+132	23	0
+133	23	0
+134	23	0
+135	23	0
+136	23	0
+137	23	0
+138	23	0
+139	23	0
+140	23	0
+141	23	0
+142	23	0
+143	23	0
+144	23	0
+145	23	0
+146	23	0
+147	23	0
+148	23	0
+149	23	0
+150	23	0
+151	23	0
+152	23	0
+153	23	0
+154	23	0
+155	23	0
+156	23	0
+157	23	0
+158	23	0
+159	23	0
+160	23	0
+161	23	0
+162	23	0
+163	23	0
+164	23	0
+165	23	0
+166	23	0
+167	23	0
+168	23	0
+169	23	0
+170	23	0
+171	23	0
+172	23	0
+173	23	0
+174	23	0
+175	23	0
+176	23	0
+177	23	0
+178	23	0
+179	23	0
+180	23	0
+181	23	0
+182	23	0
+183	23	0
+184	23	0
+185	23	0
+186	23	0
+187	23	0
+188	23	0
+189	23	0
+190	23	0
+191	23	0
+192	23	0
+193	23	0
+194	23	0
+195	23	0
+196	23	0
+197	23	0
+198	23	0
+199	23	0
+200	23	0
+201	23	0
+202	23	0
+203	23	0
+204	23	0
+205	23	0
+206	23	0
+207	23	0
+208	23	0
+209	23	0
+210	23	0
+211	23	0
+212	23	0
+213	23	0
+214	23	0
+215	23	0
+216	23	0
+217	23	0
+218	23	0
+219	23	0
+220	23	0
+221	23	0
+222	23	0
+223	23	0
+224	23	0
+225	23	0
+226	23	0
+227	23	0
+228	23	0
+229	23	0
+230	23	0
+231	23	0
+232	23	0
+233	23	0
+234	23	0
+235	23	0
+236	23	0
+237	23	0
+238	23	0
+239	23	0
+240	23	0
+241	23	0
+242	23	0
+243	23	0
+244	23	0
+245	23	0
+246	23	0
+247	23	0
+248	23	0
+249	23	0
+250	23	0
+251	23	0
+252	23	0
+253	23	0
+254	23	0
+255	23	0
+256	23	0
+257	23	0
+258	23	0
+259	23	0
+260	23	0
+261	23	0
+262	23	0
+263	23	0
+264	23	0
+265	23	0
+266	23	0
+267	23	0
+268	23	0
+269	23	0
+270	23	0
+271	23	0
+272	23	0
+273	23	0
+274	23	0
+275	23	0
+276	23	0
+277	23	0
+278	23	0
+279	23	0
+280	23	0
+281	23	0
+282	23	0
+283	23	0
+284	23	0
+285	23	0
+286	23	0
+287	23	0
+288	23	0
+289	23	0
+290	23	0
+291	23	0
+292	23	0
+293	23	0
+294	23	0
+295	23	0
+296	23	0
+297	23	0
+298	23	0
+299	23	0
+300	23	0
+301	23	0
+302	23	0
+303	23	0
+304	23	0
+305	23	0
+306	23	0
+307	23	0
+308	23	0
+309	23	0
+310	23	0
+311	23	0
+312	23	0
+313	23	0
+314	23	0
+315	23	0
+316	23	0
+317	23	0
+318	23	0
+319	23	0
+320	23	0
+321	23	0
+322	23	0
+323	23	0
+324	23	0
+325	23	0
+326	23	0
+327	23	0
+328	23	0
+329	23	0
+330	23	0
+331	23	0
+332	23	0
+333	23	0
+334	23	0
+335	23	0
+336	23	0
+337	23	0
+338	23	0
+339	23	0
+340	23	0
+341	23	0
+342	23	0
+343	23	0
+344	23	0
+345	23	0
+346	23	0
+347	23	0
+348	23	0
+349	23	0
+350	23	0
+351	23	0
+352	23	0
+353	23	0
+354	23	0
+355	23	0
+356	23	0
+357	23	0
+358	23	0
+359	23	0
+360	23	0
+0	23.5	0
+1	23.5	0
+2	23.5	0
+3	23.5	0
+4	23.5	0
+5	23.5	0
+6	23.5	0
+7	23.5	0
+8	23.5	0
+9	23.5	0
+10	23.5	0
+11	23.5	0
+12	23.5	0
+13	23.5	0
+14	23.5	0
+15	23.5	0
+16	23.5	0
+17	23.5	0
+18	23.5	0
+19	23.5	0
+20	23.5	0
+21	23.5	0
+22	23.5	0
+23	23.5	0
+24	23.5	0
+25	23.5	0
+26	23.5	0
+27	23.5	0
+28	23.5	0
+29	23.5	0
+30	23.5	0
+31	23.5	0
+32	23.5	0
+33	23.5	0
+34	23.5	0
+35	23.5	0
+36	23.5	0
+37	23.5	0
+38	23.5	0
+39	23.5	0
+40	23.5	0
+41	23.5	0
+42	23.5	0
+43	23.5	0
+44	23.5	0
+45	23.5	0
+46	23.5	0
+47	23.5	0
+48	23.5	0
+49	23.5	0
+50	23.5	0
+51	23.5	0
+52	23.5	0
+53	23.5	0
+54	23.5	0
+55	23.5	0
+56	23.5	0
+57	23.5	0
+58	23.5	0
+59	23.5	0
+60	23.5	0
+61	23.5	0
+62	23.5	0
+63	23.5	0
+64	23.5	0
+65	23.5	0
+66	23.5	0
+67	23.5	0
+68	23.5	0
+69	23.5	0
+70	23.5	0
+71	23.5	0
+72	23.5	0
+73	23.5	0
+74	23.5	0
+75	23.5	0
+76	23.5	0
+77	23.5	0
+78	23.5	0
+79	23.5	0
+80	23.5	0
+81	23.5	0
+82	23.5	0
+83	23.5	0
+84	23.5	0
+85	23.5	0
+86	23.5	0
+87	23.5	0
+88	23.5	0
+89	23.5	0
+90	23.5	0
+91	23.5	0
+92	23.5	0
+93	23.5	0
+94	23.5	0
+95	23.5	0
+96	23.5	0
+97	23.5	0
+98	23.5	0
+99	23.5	0
+100	23.5	0
+101	23.5	0
+102	23.5	0
+103	23.5	0
+104	23.5	0
+105	23.5	0
+106	23.5	0
+107	23.5	0
+108	23.5	0
+109	23.5	0
+110	23.5	0
+111	23.5	0
+112	23.5	0
+113	23.5	0
+114	23.5	0
+115	23.5	0
+116	23.5	0
+117	23.5	0
+118	23.5	0
+119	23.5	0
+120	23.5	0
+121	23.5	0
+122	23.5	0
+123	23.5	0
+124	23.5	0
+125	23.5	0
+126	23.5	0
+127	23.5	0
+128	23.5	0
+129	23.5	0
+130	23.5	0
+131	23.5	0
+132	23.5	0
+133	23.5	0
+134	23.5	0
+135	23.5	0
+136	23.5	0
+137	23.5	0
+138	23.5	0
+139	23.5	0
+140	23.5	0
+141	23.5	0
+142	23.5	0
+143	23.5	0
+144	23.5	0
+145	23.5	0
+146	23.5	0
+147	23.5	0
+148	23.5	0
+149	23.5	0
+150	23.5	0
+151	23.5	0
+152	23.5	0
+153	23.5	0
+154	23.5	0
+155	23.5	0
+156	23.5	0
+157	23.5	0
+158	23.5	0
+159	23.5	0
+160	23.5	0
+161	23.5	0
+162	23.5	0
+163	23.5	0
+164	23.5	0
+165	23.5	0
+166	23.5	0
+167	23.5	0
+168	23.5	0
+169	23.5	0
+170	23.5	0
+171	23.5	0
+172	23.5	0
+173	23.5	0
+174	23.5	0
+175	23.5	0
+176	23.5	0
+177	23.5	0
+178	23.5	0
+179	23.5	0
+180	23.5	0
+181	23.5	0
+182	23.5	0
+183	23.5	0
+184	23.5	0
+185	23.5	0
+186	23.5	0
+187	23.5	0
+188	23.5	0
+189	23.5	0
+190	23.5	0
+191	23.5	0
+192	23.5	0
+193	23.5	0
+194	23.5	0
+195	23.5	0
+196	23.5	0
+197	23.5	0
+198	23.5	0
+199	23.5	0
+200	23.5	0
+201	23.5	0
+202	23.5	0
+203	23.5	0
+204	23.5	0
+205	23.5	0
+206	23.5	0
+207	23.5	0
+208	23.5	0
+209	23.5	0
+210	23.5	0
+211	23.5	0
+212	23.5	0
+213	23.5	0
+214	23.5	0
+215	23.5	0
+216	23.5	0
+217	23.5	0
+218	23.5	0
+219	23.5	0
+220	23.5	0
+221	23.5	0
+222	23.5	0
+223	23.5	0
+224	23.5	0
+225	23.5	0
+226	23.5	0
+227	23.5	0
+228	23.5	0
+229	23.5	0
+230	23.5	0
+231	23.5	0
+232	23.5	0
+233	23.5	0
+234	23.5	0
+235	23.5	0
+236	23.5	0
+237	23.5	0
+238	23.5	0
+239	23.5	0
+240	23.5	0
+241	23.5	0
+242	23.5	0
+243	23.5	0
+244	23.5	0
+245	23.5	0
+246	23.5	0
+247	23.5	0
+248	23.5	0
+249	23.5	0
+250	23.5	0
+251	23.5	0
+252	23.5	0
+253	23.5	0
+254	23.5	0
+255	23.5	0
+256	23.5	0
+257	23.5	0
+258	23.5	0
+259	23.5	0
+260	23.5	0
+261	23.5	0
+262	23.5	0
+263	23.5	0
+264	23.5	0
+265	23.5	0
+266	23.5	0
+267	23.5	0
+268	23.5	0
+269	23.5	0
+270	23.5	0
+271	23.5	0
+272	23.5	0
+273	23.5	0
+274	23.5	0
+275	23.5	0
+276	23.5	0
+277	23.5	0
+278	23.5	0
+279	23.5	0
+280	23.5	0
+281	23.5	0
+282	23.5	0
+283	23.5	0
+284	23.5	0
+285	23.5	0
+286	23.5	0
+287	23.5	0
+288	23.5	0
+289	23.5	0
+290	23.5	0
+291	23.5	0
+292	23.5	0
+293	23.5	0
+294	23.5	0
+295	23.5	0
+296	23.5	0
+297	23.5	0
+298	23.5	0
+299	23.5	0
+300	23.5	0
+301	23.5	0
+302	23.5	0
+303	23.5	0
+304	23.5	0
+305	23.5	0
+306	23.5	0
+307	23.5	0
+308	23.5	0
+309	23.5	0
+310	23.5	0
+311	23.5	0
+312	23.5	0
+313	23.5	0
+314	23.5	0
+315	23.5	0
+316	23.5	0
+317	23.5	0
+318	23.5	0
+319	23.5	0
+320	23.5	0
+321	23.5	0
+322	23.5	0
+323	23.5	0
+324	23.5	0
+325	23.5	0
+326	23.5	0
+327	23.5	0
+328	23.5	0
+329	23.5	0
+330	23.5	0
+331	23.5	0
+332	23.5	0
+333	23.5	0
+334	23.5	0
+335	23.5	0
+336	23.5	0
+337	23.5	0
+338	23.5	0
+339	23.5	0
+340	23.5	0
+341	23.5	0
+342	23.5	0
+343	23.5	0
+344	23.5	0
+345	23.5	0
+346	23.5	0
+347	23.5	0
+348	23.5	0
+349	23.5	0
+350	23.5	0
+351	23.5	0
+352	23.5	0
+353	23.5	0
+354	23.5	0
+355	23.5	0
+356	23.5	0
+357	23.5	0
+358	23.5	0
+359	23.5	0
+360	23.5	0
+0	24	0
+1	24	0
+2	24	0
+3	24	0
+4	24	0
+5	24	0
+6	24	0
+7	24	0
+8	24	0
+9	24	0
+10	24	0
+11	24	0
+12	24	0
+13	24	0
+14	24	0
+15	24	0
+16	24	0
+17	24	0
+18	24	0
+19	24	0
+20	24	0
+21	24	0
+22	24	0
+23	24	0
+24	24	0
+25	24	0
+26	24	0
+27	24	0
+28	24	0
+29	24	0
+30	24	0
+31	24	0
+32	24	0
+33	24	0
+34	24	0
+35	24	0
+36	24	0
+37	24	0
+38	24	0
+39	24	0
+40	24	0
+41	24	0
+42	24	0
+43	24	0
+44	24	0
+45	24	0
+46	24	0
+47	24	0
+48	24	0
+49	24	0
+50	24	0
+51	24	0
+52	24	0
+53	24	0
+54	24	0
+55	24	0
+56	24	0
+57	24	0
+58	24	0
+59	24	0
+60	24	0
+61	24	0
+62	24	0
+63	24	0
+64	24	0
+65	24	0
+66	24	0
+67	24	0
+68	24	0
+69	24	0
+70	24	0
+71	24	0
+72	24	0
+73	24	0
+74	24	0
+75	24	0
+76	24	0
+77	24	0
+78	24	0
+79	24	0
+80	24	0
+81	24	0
+82	24	0
+83	24	0
+84	24	0
+85	24	0
+86	24	0
+87	24	0
+88	24	0
+89	24	0
+90	24	0
+91	24	0
+92	24	0
+93	24	0
+94	24	0
+95	24	0
+96	24	0
+97	24	0
+98	24	0
+99	24	0
+100	24	0
+101	24	0
+102	24	0
+103	24	0
+104	24	0
+105	24	0
+106	24	0
+107	24	0
+108	24	0
+109	24	0
+110	24	0
+111	24	0
+112	24	0
+113	24	0
+114	24	0
+115	24	0
+116	24	0
+117	24	0
+118	24	0
+119	24	0
+120	24	0
+121	24	0
+122	24	0
+123	24	0
+124	24	0
+125	24	0
+126	24	0
+127	24	0
+128	24	0
+129	24	0
+130	24	0
+131	24	0
+132	24	0
+133	24	0
+134	24	0
+135	24	0
+136	24	0
+137	24	0
+138	24	0
+139	24	0
+140	24	0
+141	24	0
+142	24	0
+143	24	0
+144	24	0
+145	24	0
+146	24	0
+147	24	0
+148	24	0
+149	24	0
+150	24	0
+151	24	0
+152	24	0
+153	24	0
+154	24	0
+155	24	0
+156	24	0
+157	24	0
+158	24	0
+159	24	0
+160	24	0
+161	24	0
+162	24	0
+163	24	0
+164	24	0
+165	24	0
+166	24	0
+167	24	0
+168	24	0
+169	24	0
+170	24	0
+171	24	0
+172	24	0
+173	24	0
+174	24	0
+175	24	0
+176	24	0
+177	24	0
+178	24	0
+179	24	0
+180	24	0
+181	24	0
+182	24	0
+183	24	0
+184	24	0
+185	24	0
+186	24	0
+187	24	0
+188	24	0
+189	24	0
+190	24	0
+191	24	0
+192	24	0
+193	24	0
+194	24	0
+195	24	0
+196	24	0
+197	24	0
+198	24	0
+199	24	0
+200	24	0
+201	24	0
+202	24	0
+203	24	0
+204	24	0
+205	24	0
+206	24	0
+207	24	0
+208	24	0
+209	24	0
+210	24	0
+211	24	0
+212	24	0
+213	24	0
+214	24	0
+215	24	0
+216	24	0
+217	24	0
+218	24	0
+219	24	0
+220	24	0
+221	24	0
+222	24	0
+223	24	0
+224	24	0
+225	24	0
+226	24	0
+227	24	0
+228	24	0
+229	24	0
+230	24	0
+231	24	0
+232	24	0
+233	24	0
+234	24	0
+235	24	0
+236	24	0
+237	24	0
+238	24	0
+239	24	0
+240	24	0
+241	24	0
+242	24	0
+243	24	0
+244	24	0
+245	24	0
+246	24	0
+247	24	0
+248	24	0
+249	24	0
+250	24	0
+251	24	0
+252	24	0
+253	24	0
+254	24	0
+255	24	0
+256	24	0
+257	24	0
+258	24	0
+259	24	0
+260	24	0
+261	24	0
+262	24	0
+263	24	0
+264	24	0
+265	24	0
+266	24	0
+267	24	0
+268	24	0
+269	24	0
+270	24	0
+271	24	0
+272	24	0
+273	24	0
+274	24	0
+275	24	0
+276	24	0
+277	24	0
+278	24	0
+279	24	0
+280	24	0
+281	24	0
+282	24	0
+283	24	0
+284	24	0
+285	24	0
+286	24	0
+287	24	0
+288	24	0
+289	24	0
+290	24	0
+291	24	0
+292	24	0
+293	24	0
+294	24	0
+295	24	0
+296	24	0
+297	24	0
+298	24	0
+299	24	0
+300	24	0
+301	24	0
+302	24	0
+303	24	0
+304	24	0
+305	24	0
+306	24	0
+307	24	0
+308	24	0
+309	24	0
+310	24	0
+311	24	0
+312	24	0
+313	24	0
+314	24	0
+315	24	0
+316	24	0
+317	24	0
+318	24	0
+319	24	0
+320	24	0
+321	24	0
+322	24	0
+323	24	0
+324	24	0
+325	24	0
+326	24	0
+327	24	0
+328	24	0
+329	24	0
+330	24	0
+331	24	0
+332	24	0
+333	24	0
+334	24	0
+335	24	0
+336	24	0
+337	24	0
+338	24	0
+339	24	0
+340	24	0
+341	24	0
+342	24	0
+343	24	0
+344	24	0
+345	24	0
+346	24	0
+347	24	0
+348	24	0
+349	24	0
+350	24	0
+351	24	0
+352	24	0
+353	24	0
+354	24	0
+355	24	0
+356	24	0
+357	24	0
+358	24	0
+359	24	0
+360	24	0
+0	24.5	0
+1	24.5	0
+2	24.5	0
+3	24.5	0
+4	24.5	0
+5	24.5	0
+6	24.5	0
+7	24.5	0
+8	24.5	0
+9	24.5	0
+10	24.5	0
+11	24.5	0
+12	24.5	0
+13	24.5	0
+14	24.5	0
+15	24.5	0
+16	24.5	0
+17	24.5	0
+18	24.5	0
+19	24.5	0
+20	24.5	0
+21	24.5	0
+22	24.5	0
+23	24.5	0
+24	24.5	0
+25	24.5	0
+26	24.5	0
+27	24.5	0
+28	24.5	0
+29	24.5	0
+30	24.5	0
+31	24.5	0
+32	24.5	0
+33	24.5	0
+34	24.5	0
+35	24.5	0
+36	24.5	0
+37	24.5	0
+38	24.5	0
+39	24.5	0
+40	24.5	0
+41	24.5	0
+42	24.5	0
+43	24.5	0
+44	24.5	0
+45	24.5	0
+46	24.5	0
+47	24.5	0
+48	24.5	0
+49	24.5	0
+50	24.5	0
+51	24.5	0
+52	24.5	0
+53	24.5	0
+54	24.5	0
+55	24.5	0
+56	24.5	0
+57	24.5	0
+58	24.5	0
+59	24.5	0
+60	24.5	0
+61	24.5	0
+62	24.5	0
+63	24.5	0
+64	24.5	0
+65	24.5	0
+66	24.5	0
+67	24.5	0
+68	24.5	0
+69	24.5	0
+70	24.5	0
+71	24.5	0
+72	24.5	0
+73	24.5	0
+74	24.5	0
+75	24.5	0
+76	24.5	0
+77	24.5	0
+78	24.5	0
+79	24.5	0
+80	24.5	0
+81	24.5	0
+82	24.5	0
+83	24.5	0
+84	24.5	0
+85	24.5	0
+86	24.5	0
+87	24.5	0
+88	24.5	0
+89	24.5	0
+90	24.5	0
+91	24.5	0
+92	24.5	0
+93	24.5	0
+94	24.5	0
+95	24.5	0
+96	24.5	0
+97	24.5	0
+98	24.5	0
+99	24.5	0
+100	24.5	0
+101	24.5	0
+102	24.5	0
+103	24.5	0
+104	24.5	0
+105	24.5	0
+106	24.5	0
+107	24.5	0
+108	24.5	0
+109	24.5	0
+110	24.5	0
+111	24.5	0
+112	24.5	0
+113	24.5	0
+114	24.5	0
+115	24.5	0
+116	24.5	0
+117	24.5	0
+118	24.5	0
+119	24.5	0
+120	24.5	0
+121	24.5	0
+122	24.5	0
+123	24.5	0
+124	24.5	0
+125	24.5	0
+126	24.5	0
+127	24.5	0
+128	24.5	0
+129	24.5	0
+130	24.5	0
+131	24.5	0
+132	24.5	0
+133	24.5	0
+134	24.5	0
+135	24.5	0
+136	24.5	0
+137	24.5	0
+138	24.5	0
+139	24.5	0
+140	24.5	0
+141	24.5	0
+142	24.5	0
+143	24.5	0
+144	24.5	0
+145	24.5	0
+146	24.5	0
+147	24.5	0
+148	24.5	0
+149	24.5	0
+150	24.5	0
+151	24.5	0
+152	24.5	0
+153	24.5	0
+154	24.5	0
+155	24.5	0
+156	24.5	0
+157	24.5	0
+158	24.5	0
+159	24.5	0
+160	24.5	0
+161	24.5	0
+162	24.5	0
+163	24.5	0
+164	24.5	0
+165	24.5	0
+166	24.5	0
+167	24.5	0
+168	24.5	0
+169	24.5	0
+170	24.5	0
+171	24.5	0
+172	24.5	0
+173	24.5	0
+174	24.5	0
+175	24.5	0
+176	24.5	0
+177	24.5	0
+178	24.5	0
+179	24.5	0
+180	24.5	0
+181	24.5	0
+182	24.5	0
+183	24.5	0
+184	24.5	0
+185	24.5	0
+186	24.5	0
+187	24.5	0
+188	24.5	0
+189	24.5	0
+190	24.5	0
+191	24.5	0
+192	24.5	0
+193	24.5	0
+194	24.5	0
+195	24.5	0
+196	24.5	0
+197	24.5	0
+198	24.5	0
+199	24.5	0
+200	24.5	0
+201	24.5	0
+202	24.5	0
+203	24.5	0
+204	24.5	0
+205	24.5	0
+206	24.5	0
+207	24.5	0
+208	24.5	0
+209	24.5	0
+210	24.5	0
+211	24.5	0
+212	24.5	0
+213	24.5	0
+214	24.5	0
+215	24.5	0
+216	24.5	0
+217	24.5	0
+218	24.5	0
+219	24.5	0
+220	24.5	0
+221	24.5	0
+222	24.5	0
+223	24.5	0
+224	24.5	0
+225	24.5	0
+226	24.5	0
+227	24.5	0
+228	24.5	0
+229	24.5	0
+230	24.5	0
+231	24.5	0
+232	24.5	0
+233	24.5	0
+234	24.5	0
+235	24.5	0
+236	24.5	0
+237	24.5	0
+238	24.5	0
+239	24.5	0
+240	24.5	0
+241	24.5	0
+242	24.5	0
+243	24.5	0
+244	24.5	0
+245	24.5	0
+246	24.5	0
+247	24.5	0
+248	24.5	0
+249	24.5	0
+250	24.5	0
+251	24.5	0
+252	24.5	0
+253	24.5	0
+254	24.5	0
+255	24.5	0
+256	24.5	0
+257	24.5	0
+258	24.5	0
+259	24.5	0
+260	24.5	0
+261	24.5	0
+262	24.5	0
+263	24.5	0
+264	24.5	0
+265	24.5	0
+266	24.5	0
+267	24.5	0
+268	24.5	0
+269	24.5	0
+270	24.5	0
+271	24.5	0
+272	24.5	0
+273	24.5	0
+274	24.5	0
+275	24.5	0
+276	24.5	0
+277	24.5	0
+278	24.5	0
+279	24.5	0
+280	24.5	0
+281	24.5	0
+282	24.5	0
+283	24.5	0
+284	24.5	0
+285	24.5	0
+286	24.5	0
+287	24.5	0
+288	24.5	0
+289	24.5	0
+290	24.5	0
+291	24.5	0
+292	24.5	0
+293	24.5	0
+294	24.5	0
+295	24.5	0
+296	24.5	0
+297	24.5	0
+298	24.5	0
+299	24.5	0
+300	24.5	0
+301	24.5	0
+302	24.5	0
+303	24.5	0
+304	24.5	0
+305	24.5	0
+306	24.5	0
+307	24.5	0
+308	24.5	0
+309	24.5	0
+310	24.5	0
+311	24.5	0
+312	24.5	0
+313	24.5	0
+314	24.5	0
+315	24.5	0
+316	24.5	0
+317	24.5	0
+318	24.5	0
+319	24.5	0
+320	24.5	0
+321	24.5	0
+322	24.5	0
+323	24.5	0
+324	24.5	0
+325	24.5	0
+326	24.5	0
+327	24.5	0
+328	24.5	0
+329	24.5	0
+330	24.5	0
+331	24.5	0
+332	24.5	0
+333	24.5	0
+334	24.5	0
+335	24.5	0
+336	24.5	0
+337	24.5	0
+338	24.5	0
+339	24.5	0
+340	24.5	0
+341	24.5	0
+342	24.5	0
+343	24.5	0
+344	24.5	0
+345	24.5	0
+346	24.5	0
+347	24.5	0
+348	24.5	0
+349	24.5	0
+350	24.5	0
+351	24.5	0
+352	24.5	0
+353	24.5	0
+354	24.5	0
+355	24.5	0
+356	24.5	0
+357	24.5	0
+358	24.5	0
+359	24.5	0
+360	24.5	0
+0	25	0
+1	25	0
+2	25	0
+3	25	0
+4	25	0
+5	25	0
+6	25	0
+7	25	0
+8	25	0
+9	25	0
+10	25	0
+11	25	0
+12	25	0
+13	25	0
+14	25	0
+15	25	0
+16	25	0
+17	25	0
+18	25	0
+19	25	0
+20	25	0
+21	25	0
+22	25	0
+23	25	0
+24	25	0
+25	25	0
+26	25	0
+27	25	0
+28	25	0
+29	25	0
+30	25	0
+31	25	0
+32	25	0
+33	25	0
+34	25	0
+35	25	0
+36	25	0
+37	25	0
+38	25	0
+39	25	0
+40	25	0
+41	25	0
+42	25	0
+43	25	0
+44	25	0
+45	25	0
+46	25	0
+47	25	0
+48	25	0
+49	25	0
+50	25	0
+51	25	0
+52	25	0
+53	25	0
+54	25	0
+55	25	0
+56	25	0
+57	25	0
+58	25	0
+59	25	0
+60	25	0
+61	25	0
+62	25	0
+63	25	0
+64	25	0
+65	25	0
+66	25	0
+67	25	0
+68	25	0
+69	25	0
+70	25	0
+71	25	0
+72	25	0
+73	25	0
+74	25	0
+75	25	0
+76	25	0
+77	25	0
+78	25	0
+79	25	0
+80	25	0
+81	25	0
+82	25	0
+83	25	0
+84	25	0
+85	25	0
+86	25	0
+87	25	0
+88	25	0
+89	25	0
+90	25	0
+91	25	0
+92	25	0
+93	25	0
+94	25	0
+95	25	0
+96	25	0
+97	25	0
+98	25	0
+99	25	0
+100	25	0
+101	25	0
+102	25	0
+103	25	0
+104	25	0
+105	25	0
+106	25	0
+107	25	0
+108	25	0
+109	25	0
+110	25	0
+111	25	0
+112	25	0
+113	25	0
+114	25	0
+115	25	0
+116	25	0
+117	25	0
+118	25	0
+119	25	0
+120	25	0
+121	25	0
+122	25	0
+123	25	0
+124	25	0
+125	25	0
+126	25	0
+127	25	0
+128	25	0
+129	25	0
+130	25	0
+131	25	0
+132	25	0
+133	25	0
+134	25	0
+135	25	0
+136	25	0
+137	25	0
+138	25	0
+139	25	0
+140	25	0
+141	25	0
+142	25	0
+143	25	0
+144	25	0
+145	25	0
+146	25	0
+147	25	0
+148	25	0
+149	25	0
+150	25	0
+151	25	0
+152	25	0
+153	25	0
+154	25	0
+155	25	0
+156	25	0
+157	25	0
+158	25	0
+159	25	0
+160	25	0
+161	25	0
+162	25	0
+163	25	0
+164	25	0
+165	25	0
+166	25	0
+167	25	0
+168	25	0
+169	25	0
+170	25	0
+171	25	0
+172	25	0
+173	25	0
+174	25	0
+175	25	0
+176	25	0
+177	25	0
+178	25	0
+179	25	0
+180	25	0
+181	25	0
+182	25	0
+183	25	0
+184	25	0
+185	25	0
+186	25	0
+187	25	0
+188	25	0
+189	25	0
+190	25	0
+191	25	0
+192	25	0
+193	25	0
+194	25	0
+195	25	0
+196	25	0
+197	25	0
+198	25	0
+199	25	0
+200	25	0
+201	25	0
+202	25	0
+203	25	0
+204	25	0
+205	25	0
+206	25	0
+207	25	0
+208	25	0
+209	25	0
+210	25	0
+211	25	0
+212	25	0
+213	25	0
+214	25	0
+215	25	0
+216	25	0
+217	25	0
+218	25	0
+219	25	0
+220	25	0
+221	25	0
+222	25	0
+223	25	0
+224	25	0
+225	25	0
+226	25	0
+227	25	0
+228	25	0
+229	25	0
+230	25	0
+231	25	0
+232	25	0
+233	25	0
+234	25	0
+235	25	0
+236	25	0
+237	25	0
+238	25	0
+239	25	0
+240	25	0
+241	25	0
+242	25	0
+243	25	0
+244	25	0
+245	25	0
+246	25	0
+247	25	0
+248	25	0
+249	25	0
+250	25	0
+251	25	0
+252	25	0
+253	25	0
+254	25	0
+255	25	0
+256	25	0
+257	25	0
+258	25	0
+259	25	0
+260	25	0
+261	25	0
+262	25	0
+263	25	0
+264	25	0
+265	25	0
+266	25	0
+267	25	0
+268	25	0
+269	25	0
+270	25	0
+271	25	0
+272	25	0
+273	25	0
+274	25	0
+275	25	0
+276	25	0
+277	25	0
+278	25	0
+279	25	0
+280	25	0
+281	25	0
+282	25	0
+283	25	0
+284	25	0
+285	25	0
+286	25	0
+287	25	0
+288	25	0
+289	25	0
+290	25	0
+291	25	0
+292	25	0
+293	25	0
+294	25	0
+295	25	0
+296	25	0
+297	25	0
+298	25	0
+299	25	0
+300	25	0
+301	25	0
+302	25	0
+303	25	0
+304	25	0
+305	25	0
+306	25	0
+307	25	0
+308	25	0
+309	25	0
+310	25	0
+311	25	0
+312	25	0
+313	25	0
+314	25	0
+315	25	0
+316	25	0
+317	25	0
+318	25	0
+319	25	0
+320	25	0
+321	25	0
+322	25	0
+323	25	0
+324	25	0
+325	25	0
+326	25	0
+327	25	0
+328	25	0
+329	25	0
+330	25	0
+331	25	0
+332	25	0
+333	25	0
+334	25	0
+335	25	0
+336	25	0
+337	25	0
+338	25	0
+339	25	0
+340	25	0
+341	25	0
+342	25	0
+343	25	0
+344	25	0
+345	25	0
+346	25	0
+347	25	0
+348	25	0
+349	25	0
+350	25	0
+351	25	0
+352	25	0
+353	25	0
+354	25	0
+355	25	0
+356	25	0
+357	25	0
+358	25	0
+359	25	0
+360	25	0
+0	25.5	0
+1	25.5	0
+2	25.5	0
+3	25.5	0
+4	25.5	0
+5	25.5	0
+6	25.5	0
+7	25.5	0
+8	25.5	0
+9	25.5	0
+10	25.5	0
+11	25.5	0
+12	25.5	0
+13	25.5	0
+14	25.5	0
+15	25.5	0
+16	25.5	0
+17	25.5	0
+18	25.5	0
+19	25.5	0
+20	25.5	0
+21	25.5	0
+22	25.5	0
+23	25.5	0
+24	25.5	0
+25	25.5	0
+26	25.5	0
+27	25.5	0
+28	25.5	0
+29	25.5	0
+30	25.5	0
+31	25.5	0
+32	25.5	0
+33	25.5	0
+34	25.5	0
+35	25.5	0
+36	25.5	0
+37	25.5	0
+38	25.5	0
+39	25.5	0
+40	25.5	0
+41	25.5	0
+42	25.5	0
+43	25.5	0
+44	25.5	0
+45	25.5	0
+46	25.5	0
+47	25.5	0
+48	25.5	0
+49	25.5	0
+50	25.5	0
+51	25.5	0
+52	25.5	0
+53	25.5	0
+54	25.5	0
+55	25.5	0
+56	25.5	0
+57	25.5	0
+58	25.5	0
+59	25.5	0
+60	25.5	0
+61	25.5	0
+62	25.5	0
+63	25.5	0
+64	25.5	0
+65	25.5	0
+66	25.5	0
+67	25.5	0
+68	25.5	0
+69	25.5	0
+70	25.5	0
+71	25.5	0
+72	25.5	0
+73	25.5	0
+74	25.5	0
+75	25.5	0
+76	25.5	0
+77	25.5	0
+78	25.5	0
+79	25.5	0
+80	25.5	0
+81	25.5	0
+82	25.5	0
+83	25.5	0
+84	25.5	0
+85	25.5	0
+86	25.5	0
+87	25.5	0
+88	25.5	0
+89	25.5	0
+90	25.5	0
+91	25.5	0
+92	25.5	0
+93	25.5	0
+94	25.5	0
+95	25.5	0
+96	25.5	0
+97	25.5	0
+98	25.5	0
+99	25.5	0
+100	25.5	0
+101	25.5	0
+102	25.5	0
+103	25.5	0
+104	25.5	0
+105	25.5	0
+106	25.5	0
+107	25.5	0
+108	25.5	0
+109	25.5	0
+110	25.5	0
+111	25.5	0
+112	25.5	0
+113	25.5	0
+114	25.5	0
+115	25.5	0
+116	25.5	0
+117	25.5	0
+118	25.5	0
+119	25.5	0
+120	25.5	0
+121	25.5	0
+122	25.5	0
+123	25.5	0
+124	25.5	0
+125	25.5	0
+126	25.5	0
+127	25.5	0
+128	25.5	0
+129	25.5	0
+130	25.5	0
+131	25.5	0
+132	25.5	0
+133	25.5	0
+134	25.5	0
+135	25.5	0
+136	25.5	0
+137	25.5	0
+138	25.5	0
+139	25.5	0
+140	25.5	0
+141	25.5	0
+142	25.5	0
+143	25.5	0
+144	25.5	0
+145	25.5	0
+146	25.5	0
+147	25.5	0
+148	25.5	0
+149	25.5	0
+150	25.5	0
+151	25.5	0
+152	25.5	0
+153	25.5	0
+154	25.5	0
+155	25.5	0
+156	25.5	0
+157	25.5	0
+158	25.5	0
+159	25.5	0
+160	25.5	0
+161	25.5	0
+162	25.5	0
+163	25.5	0
+164	25.5	0
+165	25.5	0
+166	25.5	0
+167	25.5	0
+168	25.5	0
+169	25.5	0
+170	25.5	0
+171	25.5	0
+172	25.5	0
+173	25.5	0
+174	25.5	0
+175	25.5	0
+176	25.5	0
+177	25.5	0
+178	25.5	0
+179	25.5	0
+180	25.5	0
+181	25.5	0
+182	25.5	0
+183	25.5	0
+184	25.5	0
+185	25.5	0
+186	25.5	0
+187	25.5	0
+188	25.5	0
+189	25.5	0
+190	25.5	0
+191	25.5	0
+192	25.5	0
+193	25.5	0
+194	25.5	0
+195	25.5	0
+196	25.5	0
+197	25.5	0
+198	25.5	0
+199	25.5	0
+200	25.5	0
+201	25.5	0
+202	25.5	0
+203	25.5	0
+204	25.5	0
+205	25.5	0
+206	25.5	0
+207	25.5	0
+208	25.5	0
+209	25.5	0
+210	25.5	0
+211	25.5	0
+212	25.5	0
+213	25.5	0
+214	25.5	0
+215	25.5	0
+216	25.5	0
+217	25.5	0
+218	25.5	0
+219	25.5	0
+220	25.5	0
+221	25.5	0
+222	25.5	0
+223	25.5	0
+224	25.5	0
+225	25.5	0
+226	25.5	0
+227	25.5	0
+228	25.5	0
+229	25.5	0
+230	25.5	0
+231	25.5	0
+232	25.5	0
+233	25.5	0
+234	25.5	0
+235	25.5	0
+236	25.5	0
+237	25.5	0
+238	25.5	0
+239	25.5	0
+240	25.5	0
+241	25.5	0
+242	25.5	0
+243	25.5	0
+244	25.5	0
+245	25.5	0
+246	25.5	0
+247	25.5	0
+248	25.5	0
+249	25.5	0
+250	25.5	0
+251	25.5	0
+252	25.5	0
+253	25.5	0
+254	25.5	0
+255	25.5	0
+256	25.5	0
+257	25.5	0
+258	25.5	0
+259	25.5	0
+260	25.5	0
+261	25.5	0
+262	25.5	0
+263	25.5	0
+264	25.5	0
+265	25.5	0
+266	25.5	0
+267	25.5	0
+268	25.5	0
+269	25.5	0
+270	25.5	0
+271	25.5	0
+272	25.5	0
+273	25.5	0
+274	25.5	0
+275	25.5	0
+276	25.5	0
+277	25.5	0
+278	25.5	0
+279	25.5	0
+280	25.5	0
+281	25.5	0
+282	25.5	0
+283	25.5	0
+284	25.5	0
+285	25.5	0
+286	25.5	0
+287	25.5	0
+288	25.5	0
+289	25.5	0
+290	25.5	0
+291	25.5	0
+292	25.5	0
+293	25.5	0
+294	25.5	0
+295	25.5	0
+296	25.5	0
+297	25.5	0
+298	25.5	0
+299	25.5	0
+300	25.5	0
+301	25.5	0
+302	25.5	0
+303	25.5	0
+304	25.5	0
+305	25.5	0
+306	25.5	0
+307	25.5	0
+308	25.5	0
+309	25.5	0
+310	25.5	0
+311	25.5	0
+312	25.5	0
+313	25.5	0
+314	25.5	0
+315	25.5	0
+316	25.5	0
+317	25.5	0
+318	25.5	0
+319	25.5	0
+320	25.5	0
+321	25.5	0
+322	25.5	0
+323	25.5	0
+324	25.5	0
+325	25.5	0
+326	25.5	0
+327	25.5	0
+328	25.5	0
+329	25.5	0
+330	25.5	0
+331	25.5	0
+332	25.5	0
+333	25.5	0
+334	25.5	0
+335	25.5	0
+336	25.5	0
+337	25.5	0
+338	25.5	0
+339	25.5	0
+340	25.5	0
+341	25.5	0
+342	25.5	0
+343	25.5	0
+344	25.5	0
+345	25.5	0
+346	25.5	0
+347	25.5	0
+348	25.5	0
+349	25.5	0
+350	25.5	0
+351	25.5	0
+352	25.5	0
+353	25.5	0
+354	25.5	0
+355	25.5	0
+356	25.5	0
+357	25.5	0
+358	25.5	0
+359	25.5	0
+360	25.5	0
+0	26	0
+1	26	0
+2	26	0
+3	26	0
+4	26	0
+5	26	0
+6	26	0
+7	26	0
+8	26	0
+9	26	0
+10	26	0
+11	26	0
+12	26	0
+13	26	0
+14	26	0
+15	26	0
+16	26	0
+17	26	0
+18	26	0
+19	26	0
+20	26	0
+21	26	0
+22	26	0
+23	26	0
+24	26	0
+25	26	0
+26	26	0
+27	26	0
+28	26	0
+29	26	0
+30	26	0
+31	26	0
+32	26	0
+33	26	0
+34	26	0
+35	26	0
+36	26	0
+37	26	0
+38	26	0
+39	26	0
+40	26	0
+41	26	0
+42	26	0
+43	26	0
+44	26	0
+45	26	0
+46	26	0
+47	26	0
+48	26	0
+49	26	0
+50	26	0
+51	26	0
+52	26	0
+53	26	0
+54	26	0
+55	26	0
+56	26	0
+57	26	0
+58	26	0
+59	26	0
+60	26	0
+61	26	0
+62	26	0
+63	26	0
+64	26	0
+65	26	0
+66	26	0
+67	26	0
+68	26	0
+69	26	0
+70	26	0
+71	26	0
+72	26	0
+73	26	0
+74	26	0
+75	26	0
+76	26	0
+77	26	0
+78	26	0
+79	26	0
+80	26	0
+81	26	0
+82	26	0
+83	26	0
+84	26	0
+85	26	0
+86	26	0
+87	26	0
+88	26	0
+89	26	0
+90	26	0
+91	26	0
+92	26	0
+93	26	0
+94	26	0
+95	26	0
+96	26	0
+97	26	0
+98	26	0
+99	26	0
+100	26	0
+101	26	0
+102	26	0
+103	26	0
+104	26	0
+105	26	0
+106	26	0
+107	26	0
+108	26	0
+109	26	0
+110	26	0
+111	26	0
+112	26	0
+113	26	0
+114	26	0
+115	26	0
+116	26	0
+117	26	0
+118	26	0
+119	26	0
+120	26	0
+121	26	0
+122	26	0
+123	26	0
+124	26	0
+125	26	0
+126	26	0
+127	26	0
+128	26	0
+129	26	0
+130	26	0
+131	26	0
+132	26	0
+133	26	0
+134	26	0
+135	26	0
+136	26	0
+137	26	0
+138	26	0
+139	26	0
+140	26	0
+141	26	0
+142	26	0
+143	26	0
+144	26	0
+145	26	0
+146	26	0
+147	26	0
+148	26	0
+149	26	0
+150	26	0
+151	26	0
+152	26	0
+153	26	0
+154	26	0
+155	26	0
+156	26	0
+157	26	0
+158	26	0
+159	26	0
+160	26	0
+161	26	0
+162	26	0
+163	26	0
+164	26	0
+165	26	0
+166	26	0
+167	26	0
+168	26	0
+169	26	0
+170	26	0
+171	26	0
+172	26	0
+173	26	0
+174	26	0
+175	26	0
+176	26	0
+177	26	0
+178	26	0
+179	26	0
+180	26	0
+181	26	0
+182	26	0
+183	26	0
+184	26	0
+185	26	0
+186	26	0
+187	26	0
+188	26	0
+189	26	0
+190	26	0
+191	26	0
+192	26	0
+193	26	0
+194	26	0
+195	26	0
+196	26	0
+197	26	0
+198	26	0
+199	26	0
+200	26	0
+201	26	0
+202	26	0
+203	26	0
+204	26	0
+205	26	0
+206	26	0
+207	26	0
+208	26	0
+209	26	0
+210	26	0
+211	26	0
+212	26	0
+213	26	0
+214	26	0
+215	26	0
+216	26	0
+217	26	0
+218	26	0
+219	26	0
+220	26	0
+221	26	0
+222	26	0
+223	26	0
+224	26	0
+225	26	0
+226	26	0
+227	26	0
+228	26	0
+229	26	0
+230	26	0
+231	26	0
+232	26	0
+233	26	0
+234	26	0
+235	26	0
+236	26	0
+237	26	0
+238	26	0
+239	26	0
+240	26	0
+241	26	0
+242	26	0
+243	26	0
+244	26	0
+245	26	0
+246	26	0
+247	26	0
+248	26	0
+249	26	0
+250	26	0
+251	26	0
+252	26	0
+253	26	0
+254	26	0
+255	26	0
+256	26	0
+257	26	0
+258	26	0
+259	26	0
+260	26	0
+261	26	0
+262	26	0
+263	26	0
+264	26	0
+265	26	0
+266	26	0
+267	26	0
+268	26	0
+269	26	0
+270	26	0
+271	26	0
+272	26	0
+273	26	0
+274	26	0
+275	26	0
+276	26	0
+277	26	0
+278	26	0
+279	26	0
+280	26	0
+281	26	0
+282	26	0
+283	26	0
+284	26	0
+285	26	0
+286	26	0
+287	26	0
+288	26	0
+289	26	0
+290	26	0
+291	26	0
+292	26	0
+293	26	0
+294	26	0
+295	26	0
+296	26	0
+297	26	0
+298	26	0
+299	26	0
+300	26	0
+301	26	0
+302	26	0
+303	26	0
+304	26	0
+305	26	0
+306	26	0
+307	26	0
+308	26	0
+309	26	0
+310	26	0
+311	26	0
+312	26	0
+313	26	0
+314	26	0
+315	26	0
+316	26	0
+317	26	0
+318	26	0
+319	26	0
+320	26	0
+321	26	0
+322	26	0
+323	26	0
+324	26	0
+325	26	0
+326	26	0
+327	26	0
+328	26	0
+329	26	0
+330	26	0
+331	26	0
+332	26	0
+333	26	0
+334	26	0
+335	26	0
+336	26	0
+337	26	0
+338	26	0
+339	26	0
+340	26	0
+341	26	0
+342	26	0
+343	26	0
+344	26	0
+345	26	0
+346	26	0
+347	26	0
+348	26	0
+349	26	0
+350	26	0
+351	26	0
+352	26	0
+353	26	0
+354	26	0
+355	26	0
+356	26	0
+357	26	0
+358	26	0
+359	26	0
+360	26	0
+0	26.5	0
+1	26.5	0
+2	26.5	0
+3	26.5	0
+4	26.5	0
+5	26.5	0
+6	26.5	0
+7	26.5	0
+8	26.5	0
+9	26.5	0
+10	26.5	0
+11	26.5	0
+12	26.5	0
+13	26.5	0
+14	26.5	0
+15	26.5	0
+16	26.5	0
+17	26.5	0
+18	26.5	0
+19	26.5	0
+20	26.5	0
+21	26.5	0
+22	26.5	0
+23	26.5	0
+24	26.5	0
+25	26.5	0
+26	26.5	0
+27	26.5	0
+28	26.5	0
+29	26.5	0
+30	26.5	0
+31	26.5	0
+32	26.5	0
+33	26.5	0
+34	26.5	0
+35	26.5	0
+36	26.5	0
+37	26.5	0
+38	26.5	0
+39	26.5	0
+40	26.5	0
+41	26.5	0
+42	26.5	0
+43	26.5	0
+44	26.5	0
+45	26.5	0
+46	26.5	0
+47	26.5	0
+48	26.5	0
+49	26.5	0
+50	26.5	0
+51	26.5	0
+52	26.5	0
+53	26.5	0
+54	26.5	0
+55	26.5	0
+56	26.5	0
+57	26.5	0
+58	26.5	0
+59	26.5	0
+60	26.5	0
+61	26.5	0
+62	26.5	0
+63	26.5	0
+64	26.5	0
+65	26.5	0
+66	26.5	0
+67	26.5	0
+68	26.5	0
+69	26.5	0
+70	26.5	0
+71	26.5	0
+72	26.5	0
+73	26.5	0
+74	26.5	0
+75	26.5	0
+76	26.5	0
+77	26.5	0
+78	26.5	0
+79	26.5	0
+80	26.5	0
+81	26.5	0
+82	26.5	0
+83	26.5	0
+84	26.5	0
+85	26.5	0
+86	26.5	0
+87	26.5	0
+88	26.5	0
+89	26.5	0
+90	26.5	0
+91	26.5	0
+92	26.5	0
+93	26.5	0
+94	26.5	0
+95	26.5	0
+96	26.5	0
+97	26.5	0
+98	26.5	0
+99	26.5	0
+100	26.5	0
+101	26.5	0
+102	26.5	0
+103	26.5	0
+104	26.5	0
+105	26.5	0
+106	26.5	0
+107	26.5	0
+108	26.5	0
+109	26.5	0
+110	26.5	0
+111	26.5	0
+112	26.5	0
+113	26.5	0
+114	26.5	0
+115	26.5	0
+116	26.5	0
+117	26.5	0
+118	26.5	0
+119	26.5	0
+120	26.5	0
+121	26.5	0
+122	26.5	0
+123	26.5	0
+124	26.5	0
+125	26.5	0
+126	26.5	0
+127	26.5	0
+128	26.5	0
+129	26.5	0
+130	26.5	0
+131	26.5	0
+132	26.5	0
+133	26.5	0
+134	26.5	0
+135	26.5	0
+136	26.5	0
+137	26.5	0
+138	26.5	0
+139	26.5	0
+140	26.5	0
+141	26.5	0
+142	26.5	0
+143	26.5	0
+144	26.5	0
+145	26.5	0
+146	26.5	0
+147	26.5	0
+148	26.5	0
+149	26.5	0
+150	26.5	0
+151	26.5	0
+152	26.5	0
+153	26.5	0
+154	26.5	0
+155	26.5	0
+156	26.5	0
+157	26.5	0
+158	26.5	0
+159	26.5	0
+160	26.5	0
+161	26.5	0
+162	26.5	0
+163	26.5	0
+164	26.5	0
+165	26.5	0
+166	26.5	0
+167	26.5	0
+168	26.5	0
+169	26.5	0
+170	26.5	0
+171	26.5	0
+172	26.5	0
+173	26.5	0
+174	26.5	0
+175	26.5	0
+176	26.5	0
+177	26.5	0
+178	26.5	0
+179	26.5	0
+180	26.5	0
+181	26.5	0
+182	26.5	0
+183	26.5	0
+184	26.5	0
+185	26.5	0
+186	26.5	0
+187	26.5	0
+188	26.5	0
+189	26.5	0
+190	26.5	0
+191	26.5	0
+192	26.5	0
+193	26.5	0
+194	26.5	0
+195	26.5	0
+196	26.5	0
+197	26.5	0
+198	26.5	0
+199	26.5	0
+200	26.5	0
+201	26.5	0
+202	26.5	0
+203	26.5	0
+204	26.5	0
+205	26.5	0
+206	26.5	0
+207	26.5	0
+208	26.5	0
+209	26.5	0
+210	26.5	0
+211	26.5	0
+212	26.5	0
+213	26.5	0
+214	26.5	0
+215	26.5	0
+216	26.5	0
+217	26.5	0
+218	26.5	0
+219	26.5	0
+220	26.5	0
+221	26.5	0
+222	26.5	0
+223	26.5	0
+224	26.5	0
+225	26.5	0
+226	26.5	0
+227	26.5	0
+228	26.5	0
+229	26.5	0
+230	26.5	0
+231	26.5	0
+232	26.5	0
+233	26.5	0
+234	26.5	0
+235	26.5	0
+236	26.5	0
+237	26.5	0
+238	26.5	0
+239	26.5	0
+240	26.5	0
+241	26.5	0
+242	26.5	0
+243	26.5	0
+244	26.5	0
+245	26.5	0
+246	26.5	0
+247	26.5	0
+248	26.5	0
+249	26.5	0
+250	26.5	0
+251	26.5	0
+252	26.5	0
+253	26.5	0
+254	26.5	0
+255	26.5	0
+256	26.5	0
+257	26.5	0
+258	26.5	0
+259	26.5	0
+260	26.5	0
+261	26.5	0
+262	26.5	0
+263	26.5	0
+264	26.5	0
+265	26.5	0
+266	26.5	0
+267	26.5	0
+268	26.5	0
+269	26.5	0
+270	26.5	0
+271	26.5	0
+272	26.5	0
+273	26.5	0
+274	26.5	0
+275	26.5	0
+276	26.5	0
+277	26.5	0
+278	26.5	0
+279	26.5	0
+280	26.5	0
+281	26.5	0
+282	26.5	0
+283	26.5	0
+284	26.5	0
+285	26.5	0
+286	26.5	0
+287	26.5	0
+288	26.5	0
+289	26.5	0
+290	26.5	0
+291	26.5	0
+292	26.5	0
+293	26.5	0
+294	26.5	0
+295	26.5	0
+296	26.5	0
+297	26.5	0
+298	26.5	0
+299	26.5	0
+300	26.5	0
+301	26.5	0
+302	26.5	0
+303	26.5	0
+304	26.5	0
+305	26.5	0
+306	26.5	0
+307	26.5	0
+308	26.5	0
+309	26.5	0
+310	26.5	0
+311	26.5	0
+312	26.5	0
+313	26.5	0
+314	26.5	0
+315	26.5	0
+316	26.5	0
+317	26.5	0
+318	26.5	0
+319	26.5	0
+320	26.5	0
+321	26.5	0
+322	26.5	0
+323	26.5	0
+324	26.5	0
+325	26.5	0
+326	26.5	0
+327	26.5	0
+328	26.5	0
+329	26.5	0
+330	26.5	0
+331	26.5	0
+332	26.5	0
+333	26.5	0
+334	26.5	0
+335	26.5	0
+336	26.5	0
+337	26.5	0
+338	26.5	0
+339	26.5	0
+340	26.5	0
+341	26.5	0
+342	26.5	0
+343	26.5	0
+344	26.5	0
+345	26.5	0
+346	26.5	0
+347	26.5	0
+348	26.5	0
+349	26.5	0
+350	26.5	0
+351	26.5	0
+352	26.5	0
+353	26.5	0
+354	26.5	0
+355	26.5	0
+356	26.5	0
+357	26.5	0
+358	26.5	0
+359	26.5	0
+360	26.5	0
+0	27	0
+1	27	0
+2	27	0
+3	27	0
+4	27	0
+5	27	0
+6	27	0
+7	27	0
+8	27	0
+9	27	0
+10	27	0
+11	27	0
+12	27	0
+13	27	0
+14	27	0
+15	27	0
+16	27	0
+17	27	0
+18	27	0
+19	27	0
+20	27	0
+21	27	0
+22	27	0
+23	27	0
+24	27	0
+25	27	0
+26	27	0
+27	27	0
+28	27	0
+29	27	0
+30	27	0
+31	27	0
+32	27	0
+33	27	0
+34	27	0
+35	27	0
+36	27	0
+37	27	0
+38	27	0
+39	27	0
+40	27	0
+41	27	0
+42	27	0
+43	27	0
+44	27	0
+45	27	0
+46	27	0
+47	27	0
+48	27	0
+49	27	0
+50	27	0
+51	27	0
+52	27	0
+53	27	0
+54	27	0
+55	27	0
+56	27	0
+57	27	0
+58	27	0
+59	27	0
+60	27	0
+61	27	0
+62	27	0
+63	27	0
+64	27	0
+65	27	0
+66	27	0
+67	27	0
+68	27	0
+69	27	0
+70	27	0
+71	27	0
+72	27	0
+73	27	0
+74	27	0
+75	27	0
+76	27	0
+77	27	0
+78	27	0
+79	27	0
+80	27	0
+81	27	0
+82	27	0
+83	27	0
+84	27	0
+85	27	0
+86	27	0
+87	27	0
+88	27	0
+89	27	0
+90	27	0
+91	27	0
+92	27	0
+93	27	0
+94	27	0
+95	27	0
+96	27	0
+97	27	0
+98	27	0
+99	27	0
+100	27	0
+101	27	0
+102	27	0
+103	27	0
+104	27	0
+105	27	0
+106	27	0
+107	27	0
+108	27	0
+109	27	0
+110	27	0
+111	27	0
+112	27	0
+113	27	0
+114	27	0
+115	27	0
+116	27	0
+117	27	0
+118	27	0
+119	27	0
+120	27	0
+121	27	0
+122	27	0
+123	27	0
+124	27	0
+125	27	0
+126	27	0
+127	27	0
+128	27	0
+129	27	0
+130	27	0
+131	27	0
+132	27	0
+133	27	0
+134	27	0
+135	27	0
+136	27	0
+137	27	0
+138	27	0
+139	27	0
+140	27	0
+141	27	0
+142	27	0
+143	27	0
+144	27	0
+145	27	0
+146	27	0
+147	27	0
+148	27	0
+149	27	0
+150	27	0
+151	27	0
+152	27	0
+153	27	0
+154	27	0
+155	27	0
+156	27	0
+157	27	0
+158	27	0
+159	27	0
+160	27	0
+161	27	0
+162	27	0
+163	27	0
+164	27	0
+165	27	0
+166	27	0
+167	27	0
+168	27	0
+169	27	0
+170	27	0
+171	27	0
+172	27	0
+173	27	0
+174	27	0
+175	27	0
+176	27	0
+177	27	0
+178	27	0
+179	27	0
+180	27	0
+181	27	0
+182	27	0
+183	27	0
+184	27	0
+185	27	0
+186	27	0
+187	27	0
+188	27	0
+189	27	0
+190	27	0
+191	27	0
+192	27	0
+193	27	0
+194	27	0
+195	27	0
+196	27	0
+197	27	0
+198	27	0
+199	27	0
+200	27	0
+201	27	0
+202	27	0
+203	27	0
+204	27	0
+205	27	0
+206	27	0
+207	27	0
+208	27	0
+209	27	0
+210	27	0
+211	27	0
+212	27	0
+213	27	0
+214	27	0
+215	27	0
+216	27	0
+217	27	0
+218	27	0
+219	27	0
+220	27	0
+221	27	0
+222	27	0
+223	27	0
+224	27	0
+225	27	0
+226	27	0
+227	27	0
+228	27	0
+229	27	0
+230	27	0
+231	27	0
+232	27	0
+233	27	0
+234	27	0
+235	27	0
+236	27	0
+237	27	0
+238	27	0
+239	27	0
+240	27	0
+241	27	0
+242	27	0
+243	27	0
+244	27	0
+245	27	0
+246	27	0
+247	27	0
+248	27	0
+249	27	0
+250	27	0
+251	27	0
+252	27	0
+253	27	0
+254	27	0
+255	27	0
+256	27	0
+257	27	0
+258	27	0
+259	27	0
+260	27	0
+261	27	0
+262	27	0
+263	27	0
+264	27	0
+265	27	0
+266	27	0
+267	27	0
+268	27	0
+269	27	0
+270	27	0
+271	27	0
+272	27	0
+273	27	0
+274	27	0
+275	27	0
+276	27	0
+277	27	0
+278	27	0
+279	27	0
+280	27	0
+281	27	0
+282	27	0
+283	27	0
+284	27	0
+285	27	0
+286	27	0
+287	27	0
+288	27	0
+289	27	0
+290	27	0
+291	27	0
+292	27	0
+293	27	0
+294	27	0
+295	27	0
+296	27	0
+297	27	0
+298	27	0
+299	27	0
+300	27	0
+301	27	0
+302	27	0
+303	27	0
+304	27	0
+305	27	0
+306	27	0
+307	27	0
+308	27	0
+309	27	0
+310	27	0
+311	27	0
+312	27	0
+313	27	0
+314	27	0
+315	27	0
+316	27	0
+317	27	0
+318	27	0
+319	27	0
+320	27	0
+321	27	0
+322	27	0
+323	27	0
+324	27	0
+325	27	0
+326	27	0
+327	27	0
+328	27	0
+329	27	0
+330	27	0
+331	27	0
+332	27	0
+333	27	0
+334	27	0
+335	27	0
+336	27	0
+337	27	0
+338	27	0
+339	27	0
+340	27	0
+341	27	0
+342	27	0
+343	27	0
+344	27	0
+345	27	0
+346	27	0
+347	27	0
+348	27	0
+349	27	0
+350	27	0
+351	27	0
+352	27	0
+353	27	0
+354	27	0
+355	27	0
+356	27	0
+357	27	0
+358	27	0
+359	27	0
+360	27	0
+0	27.5	0
+1	27.5	0
+2	27.5	0
+3	27.5	0
+4	27.5	0
+5	27.5	0
+6	27.5	0
+7	27.5	0
+8	27.5	0
+9	27.5	0
+10	27.5	0
+11	27.5	0
+12	27.5	0
+13	27.5	0
+14	27.5	0
+15	27.5	0
+16	27.5	0
+17	27.5	0
+18	27.5	0
+19	27.5	0
+20	27.5	0
+21	27.5	0
+22	27.5	0
+23	27.5	0
+24	27.5	0
+25	27.5	0
+26	27.5	0
+27	27.5	0
+28	27.5	0
+29	27.5	0
+30	27.5	0
+31	27.5	0
+32	27.5	0
+33	27.5	0
+34	27.5	0
+35	27.5	0
+36	27.5	0
+37	27.5	0
+38	27.5	0
+39	27.5	0
+40	27.5	0
+41	27.5	0
+42	27.5	0
+43	27.5	0
+44	27.5	0
+45	27.5	0
+46	27.5	0
+47	27.5	0
+48	27.5	0
+49	27.5	0
+50	27.5	0
+51	27.5	0
+52	27.5	0
+53	27.5	0
+54	27.5	0
+55	27.5	0
+56	27.5	0
+57	27.5	0
+58	27.5	0
+59	27.5	0
+60	27.5	0
+61	27.5	0
+62	27.5	0
+63	27.5	0
+64	27.5	0
+65	27.5	0
+66	27.5	0
+67	27.5	0
+68	27.5	0
+69	27.5	0
+70	27.5	0
+71	27.5	0
+72	27.5	0
+73	27.5	0
+74	27.5	0
+75	27.5	0
+76	27.5	0
+77	27.5	0
+78	27.5	0
+79	27.5	0
+80	27.5	0
+81	27.5	0
+82	27.5	0
+83	27.5	0
+84	27.5	0
+85	27.5	0
+86	27.5	0
+87	27.5	0
+88	27.5	0
+89	27.5	0
+90	27.5	0
+91	27.5	0
+92	27.5	0
+93	27.5	0
+94	27.5	0
+95	27.5	0
+96	27.5	0
+97	27.5	0
+98	27.5	0
+99	27.5	0
+100	27.5	0
+101	27.5	0
+102	27.5	0
+103	27.5	0
+104	27.5	0
+105	27.5	0
+106	27.5	0
+107	27.5	0
+108	27.5	0
+109	27.5	0
+110	27.5	0
+111	27.5	0
+112	27.5	0
+113	27.5	0
+114	27.5	0
+115	27.5	0
+116	27.5	0
+117	27.5	0
+118	27.5	0
+119	27.5	0
+120	27.5	0
+121	27.5	0
+122	27.5	0
+123	27.5	0
+124	27.5	0
+125	27.5	0
+126	27.5	0
+127	27.5	0
+128	27.5	0
+129	27.5	0
+130	27.5	0
+131	27.5	0
+132	27.5	0
+133	27.5	0
+134	27.5	0
+135	27.5	0
+136	27.5	0
+137	27.5	0
+138	27.5	0
+139	27.5	0
+140	27.5	0
+141	27.5	0
+142	27.5	0
+143	27.5	0
+144	27.5	0
+145	27.5	0
+146	27.5	0
+147	27.5	0
+148	27.5	0
+149	27.5	0
+150	27.5	0
+151	27.5	0
+152	27.5	0
+153	27.5	0
+154	27.5	0
+155	27.5	0
+156	27.5	0
+157	27.5	0
+158	27.5	0
+159	27.5	0
+160	27.5	0
+161	27.5	0
+162	27.5	0
+163	27.5	0
+164	27.5	0
+165	27.5	0
+166	27.5	0
+167	27.5	0
+168	27.5	0
+169	27.5	0
+170	27.5	0
+171	27.5	0
+172	27.5	0
+173	27.5	0
+174	27.5	0
+175	27.5	0
+176	27.5	0
+177	27.5	0
+178	27.5	0
+179	27.5	0
+180	27.5	0
+181	27.5	0
+182	27.5	0
+183	27.5	0
+184	27.5	0
+185	27.5	0
+186	27.5	0
+187	27.5	0
+188	27.5	0
+189	27.5	0
+190	27.5	0
+191	27.5	0
+192	27.5	0
+193	27.5	0
+194	27.5	0
+195	27.5	0
+196	27.5	0
+197	27.5	0
+198	27.5	0
+199	27.5	0
+200	27.5	0
+201	27.5	0
+202	27.5	0
+203	27.5	0
+204	27.5	0
+205	27.5	0
+206	27.5	0
+207	27.5	0
+208	27.5	0
+209	27.5	0
+210	27.5	0
+211	27.5	0
+212	27.5	0
+213	27.5	0
+214	27.5	0
+215	27.5	0
+216	27.5	0
+217	27.5	0
+218	27.5	0
+219	27.5	0
+220	27.5	0
+221	27.5	0
+222	27.5	0
+223	27.5	0
+224	27.5	0
+225	27.5	0
+226	27.5	0
+227	27.5	0
+228	27.5	0
+229	27.5	0
+230	27.5	0
+231	27.5	0
+232	27.5	0
+233	27.5	0
+234	27.5	0
+235	27.5	0
+236	27.5	0
+237	27.5	0
+238	27.5	0
+239	27.5	0
+240	27.5	0
+241	27.5	0
+242	27.5	0
+243	27.5	0
+244	27.5	0
+245	27.5	0
+246	27.5	0
+247	27.5	0
+248	27.5	0
+249	27.5	0
+250	27.5	0
+251	27.5	0
+252	27.5	0
+253	27.5	0
+254	27.5	0
+255	27.5	0
+256	27.5	0
+257	27.5	0
+258	27.5	0
+259	27.5	0
+260	27.5	0
+261	27.5	0
+262	27.5	0
+263	27.5	0
+264	27.5	0
+265	27.5	0
+266	27.5	0
+267	27.5	0
+268	27.5	0
+269	27.5	0
+270	27.5	0
+271	27.5	0
+272	27.5	0
+273	27.5	0
+274	27.5	0
+275	27.5	0
+276	27.5	0
+277	27.5	0
+278	27.5	0
+279	27.5	0
+280	27.5	0
+281	27.5	0
+282	27.5	0
+283	27.5	0
+284	27.5	0
+285	27.5	0
+286	27.5	0
+287	27.5	0
+288	27.5	0
+289	27.5	0
+290	27.5	0
+291	27.5	0
+292	27.5	0
+293	27.5	0
+294	27.5	0
+295	27.5	0
+296	27.5	0
+297	27.5	0
+298	27.5	0
+299	27.5	0
+300	27.5	0
+301	27.5	0
+302	27.5	0
+303	27.5	0
+304	27.5	0
+305	27.5	0
+306	27.5	0
+307	27.5	0
+308	27.5	0
+309	27.5	0
+310	27.5	0
+311	27.5	0
+312	27.5	0
+313	27.5	0
+314	27.5	0
+315	27.5	0
+316	27.5	0
+317	27.5	0
+318	27.5	0
+319	27.5	0
+320	27.5	0
+321	27.5	0
+322	27.5	0
+323	27.5	0
+324	27.5	0
+325	27.5	0
+326	27.5	0
+327	27.5	0
+328	27.5	0
+329	27.5	0
+330	27.5	0
+331	27.5	0
+332	27.5	0
+333	27.5	0
+334	27.5	0
+335	27.5	0
+336	27.5	0
+337	27.5	0
+338	27.5	0
+339	27.5	0
+340	27.5	0
+341	27.5	0
+342	27.5	0
+343	27.5	0
+344	27.5	0
+345	27.5	0
+346	27.5	0
+347	27.5	0
+348	27.5	0
+349	27.5	0
+350	27.5	0
+351	27.5	0
+352	27.5	0
+353	27.5	0
+354	27.5	0
+355	27.5	0
+356	27.5	0
+357	27.5	0
+358	27.5	0
+359	27.5	0
+360	27.5	0
+0	28	0
+1	28	0
+2	28	0
+3	28	0
+4	28	0
+5	28	0
+6	28	0
+7	28	0
+8	28	0
+9	28	0
+10	28	0
+11	28	0
+12	28	0
+13	28	0
+14	28	0
+15	28	0
+16	28	0
+17	28	0
+18	28	0
+19	28	0
+20	28	0
+21	28	0
+22	28	0
+23	28	0
+24	28	0
+25	28	0
+26	28	0
+27	28	0
+28	28	0
+29	28	0
+30	28	0
+31	28	0
+32	28	0
+33	28	0
+34	28	0
+35	28	0
+36	28	0
+37	28	0
+38	28	0
+39	28	0
+40	28	0
+41	28	0
+42	28	0
+43	28	0
+44	28	0
+45	28	0
+46	28	0
+47	28	0
+48	28	0
+49	28	0
+50	28	0
+51	28	0
+52	28	0
+53	28	0
+54	28	0
+55	28	0
+56	28	0
+57	28	0
+58	28	0
+59	28	0
+60	28	0
+61	28	0
+62	28	0
+63	28	0
+64	28	0
+65	28	0
+66	28	0
+67	28	0
+68	28	0
+69	28	0
+70	28	0
+71	28	0
+72	28	0
+73	28	0
+74	28	0
+75	28	0
+76	28	0
+77	28	0
+78	28	0
+79	28	0
+80	28	0
+81	28	0
+82	28	0
+83	28	0
+84	28	0
+85	28	0
+86	28	0
+87	28	0
+88	28	0
+89	28	0
+90	28	0
+91	28	0
+92	28	0
+93	28	0
+94	28	0
+95	28	0
+96	28	0
+97	28	0
+98	28	0
+99	28	0
+100	28	0
+101	28	0
+102	28	0
+103	28	0
+104	28	0
+105	28	0
+106	28	0
+107	28	0
+108	28	0
+109	28	0
+110	28	0
+111	28	0
+112	28	0
+113	28	0
+114	28	0
+115	28	0
+116	28	0
+117	28	0
+118	28	0
+119	28	0
+120	28	0
+121	28	0
+122	28	0
+123	28	0
+124	28	0
+125	28	0
+126	28	0
+127	28	0
+128	28	0
+129	28	0
+130	28	0
+131	28	0
+132	28	0
+133	28	0
+134	28	0
+135	28	0
+136	28	0
+137	28	0
+138	28	0
+139	28	0
+140	28	0
+141	28	0
+142	28	0
+143	28	0
+144	28	0
+145	28	0
+146	28	0
+147	28	0
+148	28	0
+149	28	0
+150	28	0
+151	28	0
+152	28	0
+153	28	0
+154	28	0
+155	28	0
+156	28	0
+157	28	0
+158	28	0
+159	28	0
+160	28	0
+161	28	0
+162	28	0
+163	28	0
+164	28	0
+165	28	0
+166	28	0
+167	28	0
+168	28	0
+169	28	0
+170	28	0
+171	28	0
+172	28	0
+173	28	0
+174	28	0
+175	28	0
+176	28	0
+177	28	0
+178	28	0
+179	28	0
+180	28	0
+181	28	0
+182	28	0
+183	28	0
+184	28	0
+185	28	0
+186	28	0
+187	28	0
+188	28	0
+189	28	0
+190	28	0
+191	28	0
+192	28	0
+193	28	0
+194	28	0
+195	28	0
+196	28	0
+197	28	0
+198	28	0
+199	28	0
+200	28	0
+201	28	0
+202	28	0
+203	28	0
+204	28	0
+205	28	0
+206	28	0
+207	28	0
+208	28	0
+209	28	0
+210	28	0
+211	28	0
+212	28	0
+213	28	0
+214	28	0
+215	28	0
+216	28	0
+217	28	0
+218	28	0
+219	28	0
+220	28	0
+221	28	0
+222	28	0
+223	28	0
+224	28	0
+225	28	0
+226	28	0
+227	28	0
+228	28	0
+229	28	0
+230	28	0
+231	28	0
+232	28	0
+233	28	0
+234	28	0
+235	28	0
+236	28	0
+237	28	0
+238	28	0
+239	28	0
+240	28	0
+241	28	0
+242	28	0
+243	28	0
+244	28	0
+245	28	0
+246	28	0
+247	28	0
+248	28	0
+249	28	0
+250	28	0
+251	28	0
+252	28	0
+253	28	0
+254	28	0
+255	28	0
+256	28	0
+257	28	0
+258	28	0
+259	28	0
+260	28	0
+261	28	0
+262	28	0
+263	28	0
+264	28	0
+265	28	0
+266	28	0
+267	28	0
+268	28	0
+269	28	0
+270	28	0
+271	28	0
+272	28	0
+273	28	0
+274	28	0
+275	28	0
+276	28	0
+277	28	0
+278	28	0
+279	28	0
+280	28	0
+281	28	0
+282	28	0
+283	28	0
+284	28	0
+285	28	0
+286	28	0
+287	28	0
+288	28	0
+289	28	0
+290	28	0
+291	28	0
+292	28	0
+293	28	0
+294	28	0
+295	28	0
+296	28	0
+297	28	0
+298	28	0
+299	28	0
+300	28	0
+301	28	0
+302	28	0
+303	28	0
+304	28	0
+305	28	0
+306	28	0
+307	28	0
+308	28	0
+309	28	0
+310	28	0
+311	28	0
+312	28	0
+313	28	0
+314	28	0
+315	28	0
+316	28	0
+317	28	0
+318	28	0
+319	28	0
+320	28	0
+321	28	0
+322	28	0
+323	28	0
+324	28	0
+325	28	0
+326	28	0
+327	28	0
+328	28	0
+329	28	0
+330	28	0
+331	28	0
+332	28	0
+333	28	0
+334	28	0
+335	28	0
+336	28	0
+337	28	0
+338	28	0
+339	28	0
+340	28	0
+341	28	0
+342	28	0
+343	28	0
+344	28	0
+345	28	0
+346	28	0
+347	28	0
+348	28	0
+349	28	0
+350	28	0
+351	28	0
+352	28	0
+353	28	0
+354	28	0
+355	28	0
+356	28	0
+357	28	0
+358	28	0
+359	28	0
+360	28	0
+0	28.5	0
+1	28.5	0
+2	28.5	0
+3	28.5	0
+4	28.5	0
+5	28.5	0
+6	28.5	0
+7	28.5	0
+8	28.5	0
+9	28.5	0
+10	28.5	0
+11	28.5	0
+12	28.5	0
+13	28.5	0
+14	28.5	0
+15	28.5	0
+16	28.5	0
+17	28.5	0
+18	28.5	0
+19	28.5	0
+20	28.5	0
+21	28.5	0
+22	28.5	0
+23	28.5	0
+24	28.5	0
+25	28.5	0
+26	28.5	0
+27	28.5	0
+28	28.5	0
+29	28.5	0
+30	28.5	0
+31	28.5	0
+32	28.5	0
+33	28.5	0
+34	28.5	0
+35	28.5	0
+36	28.5	0
+37	28.5	0
+38	28.5	0
+39	28.5	0
+40	28.5	0
+41	28.5	0
+42	28.5	0
+43	28.5	0
+44	28.5	0
+45	28.5	0
+46	28.5	0
+47	28.5	0
+48	28.5	0
+49	28.5	0
+50	28.5	0
+51	28.5	0
+52	28.5	0
+53	28.5	0
+54	28.5	0
+55	28.5	0
+56	28.5	0
+57	28.5	0
+58	28.5	0
+59	28.5	0
+60	28.5	0
+61	28.5	0
+62	28.5	0
+63	28.5	0
+64	28.5	0
+65	28.5	0
+66	28.5	0
+67	28.5	0
+68	28.5	0
+69	28.5	0
+70	28.5	0
+71	28.5	0
+72	28.5	0
+73	28.5	0
+74	28.5	0
+75	28.5	0
+76	28.5	0
+77	28.5	0
+78	28.5	0
+79	28.5	0
+80	28.5	0
+81	28.5	0
+82	28.5	0
+83	28.5	0
+84	28.5	0
+85	28.5	0
+86	28.5	0
+87	28.5	0
+88	28.5	0
+89	28.5	0
+90	28.5	0
+91	28.5	0
+92	28.5	0
+93	28.5	0
+94	28.5	0
+95	28.5	0
+96	28.5	0
+97	28.5	0
+98	28.5	0
+99	28.5	0
+100	28.5	0
+101	28.5	0
+102	28.5	0
+103	28.5	0
+104	28.5	0
+105	28.5	0
+106	28.5	0
+107	28.5	0
+108	28.5	0
+109	28.5	0
+110	28.5	0
+111	28.5	0
+112	28.5	0
+113	28.5	0
+114	28.5	0
+115	28.5	0
+116	28.5	0
+117	28.5	0
+118	28.5	0
+119	28.5	0
+120	28.5	0
+121	28.5	0
+122	28.5	0
+123	28.5	0
+124	28.5	0
+125	28.5	0
+126	28.5	0
+127	28.5	0
+128	28.5	0
+129	28.5	0
+130	28.5	0
+131	28.5	0
+132	28.5	0
+133	28.5	0
+134	28.5	0
+135	28.5	0
+136	28.5	0
+137	28.5	0
+138	28.5	0
+139	28.5	0
+140	28.5	0
+141	28.5	0
+142	28.5	0
+143	28.5	0
+144	28.5	0
+145	28.5	0
+146	28.5	0
+147	28.5	0
+148	28.5	0
+149	28.5	0
+150	28.5	0
+151	28.5	0
+152	28.5	0
+153	28.5	0
+154	28.5	0
+155	28.5	0
+156	28.5	0
+157	28.5	0
+158	28.5	0
+159	28.5	0
+160	28.5	0
+161	28.5	0
+162	28.5	0
+163	28.5	0
+164	28.5	0
+165	28.5	0
+166	28.5	0
+167	28.5	0
+168	28.5	0
+169	28.5	0
+170	28.5	0
+171	28.5	0
+172	28.5	0
+173	28.5	0
+174	28.5	0
+175	28.5	0
+176	28.5	0
+177	28.5	0
+178	28.5	0
+179	28.5	0
+180	28.5	0
+181	28.5	0
+182	28.5	0
+183	28.5	0
+184	28.5	0
+185	28.5	0
+186	28.5	0
+187	28.5	0
+188	28.5	0
+189	28.5	0
+190	28.5	0
+191	28.5	0
+192	28.5	0
+193	28.5	0
+194	28.5	0
+195	28.5	0
+196	28.5	0
+197	28.5	0
+198	28.5	0
+199	28.5	0
+200	28.5	0
+201	28.5	0
+202	28.5	0
+203	28.5	0
+204	28.5	0
+205	28.5	0
+206	28.5	0
+207	28.5	0
+208	28.5	0
+209	28.5	0
+210	28.5	0
+211	28.5	0
+212	28.5	0
+213	28.5	0
+214	28.5	0
+215	28.5	0
+216	28.5	0
+217	28.5	0
+218	28.5	0
+219	28.5	0
+220	28.5	0
+221	28.5	0
+222	28.5	0
+223	28.5	0
+224	28.5	0
+225	28.5	0
+226	28.5	0
+227	28.5	0
+228	28.5	0
+229	28.5	0
+230	28.5	0
+231	28.5	0
+232	28.5	0
+233	28.5	0
+234	28.5	0
+235	28.5	0
+236	28.5	0
+237	28.5	0
+238	28.5	0
+239	28.5	0
+240	28.5	0
+241	28.5	0
+242	28.5	0
+243	28.5	0
+244	28.5	0
+245	28.5	0
+246	28.5	0
+247	28.5	0
+248	28.5	0
+249	28.5	0
+250	28.5	0
+251	28.5	0
+252	28.5	0
+253	28.5	0
+254	28.5	0
+255	28.5	0
+256	28.5	0
+257	28.5	0
+258	28.5	0
+259	28.5	0
+260	28.5	0
+261	28.5	0
+262	28.5	0
+263	28.5	0
+264	28.5	0
+265	28.5	0
+266	28.5	0
+267	28.5	0
+268	28.5	0
+269	28.5	0
+270	28.5	0
+271	28.5	0
+272	28.5	0
+273	28.5	0
+274	28.5	0
+275	28.5	0
+276	28.5	0
+277	28.5	0
+278	28.5	0
+279	28.5	0
+280	28.5	0
+281	28.5	0
+282	28.5	0
+283	28.5	0
+284	28.5	0
+285	28.5	0
+286	28.5	0
+287	28.5	0
+288	28.5	0
+289	28.5	0
+290	28.5	0
+291	28.5	0
+292	28.5	0
+293	28.5	0
+294	28.5	0
+295	28.5	0
+296	28.5	0
+297	28.5	0
+298	28.5	0
+299	28.5	0
+300	28.5	0
+301	28.5	0
+302	28.5	0
+303	28.5	0
+304	28.5	0
+305	28.5	0
+306	28.5	0
+307	28.5	0
+308	28.5	0
+309	28.5	0
+310	28.5	0
+311	28.5	0
+312	28.5	0
+313	28.5	0
+314	28.5	0
+315	28.5	0
+316	28.5	0
+317	28.5	0
+318	28.5	0
+319	28.5	0
+320	28.5	0
+321	28.5	0
+322	28.5	0
+323	28.5	0
+324	28.5	0
+325	28.5	0
+326	28.5	0
+327	28.5	0
+328	28.5	0
+329	28.5	0
+330	28.5	0
+331	28.5	0
+332	28.5	0
+333	28.5	0
+334	28.5	0
+335	28.5	0
+336	28.5	0
+337	28.5	0
+338	28.5	0
+339	28.5	0
+340	28.5	0
+341	28.5	0
+342	28.5	0
+343	28.5	0
+344	28.5	0
+345	28.5	0
+346	28.5	0
+347	28.5	0
+348	28.5	0
+349	28.5	0
+350	28.5	0
+351	28.5	0
+352	28.5	0
+353	28.5	0
+354	28.5	0
+355	28.5	0
+356	28.5	0
+357	28.5	0
+358	28.5	0
+359	28.5	0
+360	28.5	0
+0	29	0
+1	29	0
+2	29	0
+3	29	0
+4	29	0
+5	29	0
+6	29	0
+7	29	0
+8	29	0
+9	29	0
+10	29	0
+11	29	0
+12	29	0
+13	29	0
+14	29	0
+15	29	0
+16	29	0
+17	29	0
+18	29	0
+19	29	0
+20	29	0
+21	29	0
+22	29	0
+23	29	0
+24	29	0
+25	29	0
+26	29	0
+27	29	0
+28	29	0
+29	29	0
+30	29	0
+31	29	0
+32	29	0
+33	29	0
+34	29	0
+35	29	0
+36	29	0
+37	29	0
+38	29	0
+39	29	0
+40	29	0
+41	29	0
+42	29	0
+43	29	0
+44	29	0
+45	29	0
+46	29	0
+47	29	0
+48	29	0
+49	29	0
+50	29	0
+51	29	0
+52	29	0
+53	29	0
+54	29	0
+55	29	0
+56	29	0
+57	29	0
+58	29	0
+59	29	0
+60	29	0
+61	29	0
+62	29	0
+63	29	0
+64	29	0
+65	29	0
+66	29	0
+67	29	0
+68	29	0
+69	29	0
+70	29	0
+71	29	0
+72	29	0
+73	29	0
+74	29	0
+75	29	0
+76	29	0
+77	29	0
+78	29	0
+79	29	0
+80	29	0
+81	29	0
+82	29	0
+83	29	0
+84	29	0
+85	29	0
+86	29	0
+87	29	0
+88	29	0
+89	29	0
+90	29	0
+91	29	0
+92	29	0
+93	29	0
+94	29	0
+95	29	0
+96	29	0
+97	29	0
+98	29	0
+99	29	0
+100	29	0
+101	29	0
+102	29	0
+103	29	0
+104	29	0
+105	29	0
+106	29	0
+107	29	0
+108	29	0
+109	29	0
+110	29	0
+111	29	0
+112	29	0
+113	29	0
+114	29	0
+115	29	0
+116	29	0
+117	29	0
+118	29	0
+119	29	0
+120	29	0
+121	29	0
+122	29	0
+123	29	0
+124	29	0
+125	29	0
+126	29	0
+127	29	0
+128	29	0
+129	29	0
+130	29	0
+131	29	0
+132	29	0
+133	29	0
+134	29	0
+135	29	0
+136	29	0
+137	29	0
+138	29	0
+139	29	0
+140	29	0
+141	29	0
+142	29	0
+143	29	0
+144	29	0
+145	29	0
+146	29	0
+147	29	0
+148	29	0
+149	29	0
+150	29	0
+151	29	0
+152	29	0
+153	29	0
+154	29	0
+155	29	0
+156	29	0
+157	29	0
+158	29	0
+159	29	0
+160	29	0
+161	29	0
+162	29	0
+163	29	0
+164	29	0
+165	29	0
+166	29	0
+167	29	0
+168	29	0
+169	29	0
+170	29	0
+171	29	0
+172	29	0
+173	29	0
+174	29	0
+175	29	0
+176	29	0
+177	29	0
+178	29	0
+179	29	0
+180	29	0
+181	29	0
+182	29	0
+183	29	0
+184	29	0
+185	29	0
+186	29	0
+187	29	0
+188	29	0
+189	29	0
+190	29	0
+191	29	0
+192	29	0
+193	29	0
+194	29	0
+195	29	0
+196	29	0
+197	29	0
+198	29	0
+199	29	0
+200	29	0
+201	29	0
+202	29	0
+203	29	0
+204	29	0
+205	29	0
+206	29	0
+207	29	0
+208	29	0
+209	29	0
+210	29	0
+211	29	0
+212	29	0
+213	29	0
+214	29	0
+215	29	0
+216	29	0
+217	29	0
+218	29	0
+219	29	0
+220	29	0
+221	29	0
+222	29	0
+223	29	0
+224	29	0
+225	29	0
+226	29	0
+227	29	0
+228	29	0
+229	29	0
+230	29	0
+231	29	0
+232	29	0
+233	29	0
+234	29	0
+235	29	0
+236	29	0
+237	29	0
+238	29	0
+239	29	0
+240	29	0
+241	29	0
+242	29	0
+243	29	0
+244	29	0
+245	29	0
+246	29	0
+247	29	0
+248	29	0
+249	29	0
+250	29	0
+251	29	0
+252	29	0
+253	29	0
+254	29	0
+255	29	0
+256	29	0
+257	29	0
+258	29	0
+259	29	0
+260	29	0
+261	29	0
+262	29	0
+263	29	0
+264	29	0
+265	29	0
+266	29	0
+267	29	0
+268	29	0
+269	29	0
+270	29	0
+271	29	0
+272	29	0
+273	29	0
+274	29	0
+275	29	0
+276	29	0
+277	29	0
+278	29	0
+279	29	0
+280	29	0
+281	29	0
+282	29	0
+283	29	0
+284	29	0
+285	29	0
+286	29	0
+287	29	0
+288	29	0
+289	29	0
+290	29	0
+291	29	0
+292	29	0
+293	29	0
+294	29	0
+295	29	0
+296	29	0
+297	29	0
+298	29	0
+299	29	0
+300	29	0
+301	29	0
+302	29	0
+303	29	0
+304	29	0
+305	29	0
+306	29	0
+307	29	0
+308	29	0
+309	29	0
+310	29	0
+311	29	0
+312	29	0
+313	29	0
+314	29	0
+315	29	0
+316	29	0
+317	29	0
+318	29	0
+319	29	0
+320	29	0
+321	29	0
+322	29	0
+323	29	0
+324	29	0
+325	29	0
+326	29	0
+327	29	0
+328	29	0
+329	29	0
+330	29	0
+331	29	0
+332	29	0
+333	29	0
+334	29	0
+335	29	0
+336	29	0
+337	29	0
+338	29	0
+339	29	0
+340	29	0
+341	29	0
+342	29	0
+343	29	0
+344	29	0
+345	29	0
+346	29	0
+347	29	0
+348	29	0
+349	29	0
+350	29	0
+351	29	0
+352	29	0
+353	29	0
+354	29	0
+355	29	0
+356	29	0
+357	29	0
+358	29	0
+359	29	0
+360	29	0
+0	29.5	0
+1	29.5	0
+2	29.5	0
+3	29.5	0
+4	29.5	0
+5	29.5	0
+6	29.5	0
+7	29.5	0
+8	29.5	0
+9	29.5	0
+10	29.5	0
+11	29.5	0
+12	29.5	0
+13	29.5	0
+14	29.5	0
+15	29.5	0
+16	29.5	0
+17	29.5	0
+18	29.5	0
+19	29.5	0
+20	29.5	0
+21	29.5	0
+22	29.5	0
+23	29.5	0
+24	29.5	0
+25	29.5	0
+26	29.5	0
+27	29.5	0
+28	29.5	0
+29	29.5	0
+30	29.5	0
+31	29.5	0
+32	29.5	0
+33	29.5	0
+34	29.5	0
+35	29.5	0
+36	29.5	0
+37	29.5	0
+38	29.5	0
+39	29.5	0
+40	29.5	0
+41	29.5	0
+42	29.5	0
+43	29.5	0
+44	29.5	0
+45	29.5	0
+46	29.5	0
+47	29.5	0
+48	29.5	0
+49	29.5	0
+50	29.5	0
+51	29.5	0
+52	29.5	0
+53	29.5	0
+54	29.5	0
+55	29.5	0
+56	29.5	0
+57	29.5	0
+58	29.5	0
+59	29.5	0
+60	29.5	0
+61	29.5	0
+62	29.5	0
+63	29.5	0
+64	29.5	0
+65	29.5	0
+66	29.5	0
+67	29.5	0
+68	29.5	0
+69	29.5	0
+70	29.5	0
+71	29.5	0
+72	29.5	0
+73	29.5	0
+74	29.5	0
+75	29.5	0
+76	29.5	0
+77	29.5	0
+78	29.5	0
+79	29.5	0
+80	29.5	0
+81	29.5	0
+82	29.5	0
+83	29.5	0
+84	29.5	0
+85	29.5	0
+86	29.5	0
+87	29.5	0
+88	29.5	0
+89	29.5	0
+90	29.5	0
+91	29.5	0
+92	29.5	0
+93	29.5	0
+94	29.5	0
+95	29.5	0
+96	29.5	0
+97	29.5	0
+98	29.5	0
+99	29.5	0
+100	29.5	0
+101	29.5	0
+102	29.5	0
+103	29.5	0
+104	29.5	0
+105	29.5	0
+106	29.5	0
+107	29.5	0
+108	29.5	0
+109	29.5	0
+110	29.5	0
+111	29.5	0
+112	29.5	0
+113	29.5	0
+114	29.5	0
+115	29.5	0
+116	29.5	0
+117	29.5	0
+118	29.5	0
+119	29.5	0
+120	29.5	0
+121	29.5	0
+122	29.5	0
+123	29.5	0
+124	29.5	0
+125	29.5	0
+126	29.5	0
+127	29.5	0
+128	29.5	0
+129	29.5	0
+130	29.5	0
+131	29.5	0
+132	29.5	0
+133	29.5	0
+134	29.5	0
+135	29.5	0
+136	29.5	0
+137	29.5	0
+138	29.5	0
+139	29.5	0
+140	29.5	0
+141	29.5	0
+142	29.5	0
+143	29.5	0
+144	29.5	0
+145	29.5	0
+146	29.5	0
+147	29.5	0
+148	29.5	0
+149	29.5	0
+150	29.5	0
+151	29.5	0
+152	29.5	0
+153	29.5	0
+154	29.5	0
+155	29.5	0
+156	29.5	0
+157	29.5	0
+158	29.5	0
+159	29.5	0
+160	29.5	0
+161	29.5	0
+162	29.5	0
+163	29.5	0
+164	29.5	0
+165	29.5	0
+166	29.5	0
+167	29.5	0
+168	29.5	0
+169	29.5	0
+170	29.5	0
+171	29.5	0
+172	29.5	0
+173	29.5	0
+174	29.5	0
+175	29.5	0
+176	29.5	0
+177	29.5	0
+178	29.5	0
+179	29.5	0
+180	29.5	0
+181	29.5	0
+182	29.5	0
+183	29.5	0
+184	29.5	0
+185	29.5	0
+186	29.5	0
+187	29.5	0
+188	29.5	0
+189	29.5	0
+190	29.5	0
+191	29.5	0
+192	29.5	0
+193	29.5	0
+194	29.5	0
+195	29.5	0
+196	29.5	0
+197	29.5	0
+198	29.5	0
+199	29.5	0
+200	29.5	0
+201	29.5	0
+202	29.5	0
+203	29.5	0
+204	29.5	0
+205	29.5	0
+206	29.5	0
+207	29.5	0
+208	29.5	0
+209	29.5	0
+210	29.5	0
+211	29.5	0
+212	29.5	0
+213	29.5	0
+214	29.5	0
+215	29.5	0
+216	29.5	0
+217	29.5	0
+218	29.5	0
+219	29.5	0
+220	29.5	0
+221	29.5	0
+222	29.5	0
+223	29.5	0
+224	29.5	0
+225	29.5	0
+226	29.5	0
+227	29.5	0
+228	29.5	0
+229	29.5	0
+230	29.5	0
+231	29.5	0
+232	29.5	0
+233	29.5	0
+234	29.5	0
+235	29.5	0
+236	29.5	0
+237	29.5	0
+238	29.5	0
+239	29.5	0
+240	29.5	0
+241	29.5	0
+242	29.5	0
+243	29.5	0
+244	29.5	0
+245	29.5	0
+246	29.5	0
+247	29.5	0
+248	29.5	0
+249	29.5	0
+250	29.5	0
+251	29.5	0
+252	29.5	0
+253	29.5	0
+254	29.5	0
+255	29.5	0
+256	29.5	0
+257	29.5	0
+258	29.5	0
+259	29.5	0
+260	29.5	0
+261	29.5	0
+262	29.5	0
+263	29.5	0
+264	29.5	0
+265	29.5	0
+266	29.5	0
+267	29.5	0
+268	29.5	0
+269	29.5	0
+270	29.5	0
+271	29.5	0
+272	29.5	0
+273	29.5	0
+274	29.5	0
+275	29.5	0
+276	29.5	0
+277	29.5	0
+278	29.5	0
+279	29.5	0
+280	29.5	0
+281	29.5	0
+282	29.5	0
+283	29.5	0
+284	29.5	0
+285	29.5	0
+286	29.5	0
+287	29.5	0
+288	29.5	0
+289	29.5	0
+290	29.5	0
+291	29.5	0
+292	29.5	0
+293	29.5	0
+294	29.5	0
+295	29.5	0
+296	29.5	0
+297	29.5	0
+298	29.5	0
+299	29.5	0
+300	29.5	0
+301	29.5	0
+302	29.5	0
+303	29.5	0
+304	29.5	0
+305	29.5	0
+306	29.5	0
+307	29.5	0
+308	29.5	0
+309	29.5	0
+310	29.5	0
+311	29.5	0
+312	29.5	0
+313	29.5	0
+314	29.5	0
+315	29.5	0
+316	29.5	0
+317	29.5	0
+318	29.5	0
+319	29.5	0
+320	29.5	0
+321	29.5	0
+322	29.5	0
+323	29.5	0
+324	29.5	0
+325	29.5	0
+326	29.5	0
+327	29.5	0
+328	29.5	0
+329	29.5	0
+330	29.5	0
+331	29.5	0
+332	29.5	0
+333	29.5	0
+334	29.5	0
+335	29.5	0
+336	29.5	0
+337	29.5	0
+338	29.5	0
+339	29.5	0
+340	29.5	0
+341	29.5	0
+342	29.5	0
+343	29.5	0
+344	29.5	0
+345	29.5	0
+346	29.5	0
+347	29.5	0
+348	29.5	0
+349	29.5	0
+350	29.5	0
+351	29.5	0
+352	29.5	0
+353	29.5	0
+354	29.5	0
+355	29.5	0
+356	29.5	0
+357	29.5	0
+358	29.5	0
+359	29.5	0
+360	29.5	0
+0	30	0
+1	30	0
+2	30	0
+3	30	0
+4	30	0
+5	30	0
+6	30	0
+7	30	0
+8	30	0
+9	30	0
+10	30	0
+11	30	0
+12	30	0
+13	30	0
+14	30	0
+15	30	0
+16	30	0
+17	30	0
+18	30	0
+19	30	0
+20	30	0
+21	30	0
+22	30	0
+23	30	0
+24	30	0
+25	30	0
+26	30	0
+27	30	0
+28	30	0
+29	30	0
+30	30	0
+31	30	0
+32	30	0
+33	30	0
+34	30	0
+35	30	0
+36	30	0
+37	30	0
+38	30	0
+39	30	0
+40	30	0
+41	30	0
+42	30	0
+43	30	0
+44	30	0
+45	30	0
+46	30	0
+47	30	0
+48	30	0
+49	30	0
+50	30	0
+51	30	0
+52	30	0
+53	30	0
+54	30	0
+55	30	0
+56	30	0
+57	30	0
+58	30	0
+59	30	0
+60	30	0
+61	30	0
+62	30	0
+63	30	0
+64	30	0
+65	30	0
+66	30	0
+67	30	0
+68	30	0
+69	30	0
+70	30	0
+71	30	0
+72	30	0
+73	30	0
+74	30	0
+75	30	0
+76	30	0
+77	30	0
+78	30	0
+79	30	0
+80	30	0
+81	30	0
+82	30	0
+83	30	0
+84	30	0
+85	30	0
+86	30	0
+87	30	0
+88	30	0
+89	30	0
+90	30	0
+91	30	0
+92	30	0
+93	30	0
+94	30	0
+95	30	0
+96	30	0
+97	30	0
+98	30	0
+99	30	0
+100	30	0
+101	30	0
+102	30	0
+103	30	0
+104	30	0
+105	30	0
+106	30	0
+107	30	0
+108	30	0
+109	30	0
+110	30	0
+111	30	0
+112	30	0
+113	30	0
+114	30	0
+115	30	0
+116	30	0
+117	30	0
+118	30	0
+119	30	0
+120	30	0
+121	30	0
+122	30	0
+123	30	0
+124	30	0
+125	30	0
+126	30	0
+127	30	0
+128	30	0
+129	30	0
+130	30	0
+131	30	0
+132	30	0
+133	30	0
+134	30	0
+135	30	0
+136	30	0
+137	30	0
+138	30	0
+139	30	0
+140	30	0
+141	30	0
+142	30	0
+143	30	0
+144	30	0
+145	30	0
+146	30	0
+147	30	0
+148	30	0
+149	30	0
+150	30	0
+151	30	0
+152	30	0
+153	30	0
+154	30	0
+155	30	0
+156	30	0
+157	30	0
+158	30	0
+159	30	0
+160	30	0
+161	30	0
+162	30	0
+163	30	0
+164	30	0
+165	30	0
+166	30	0
+167	30	0
+168	30	0
+169	30	0
+170	30	0
+171	30	0
+172	30	0
+173	30	0
+174	30	0
+175	30	0
+176	30	0
+177	30	0
+178	30	0
+179	30	0
+180	30	0
+181	30	0
+182	30	0
+183	30	0
+184	30	0
+185	30	0
+186	30	0
+187	30	0
+188	30	0
+189	30	0
+190	30	0
+191	30	0
+192	30	0
+193	30	0
+194	30	0
+195	30	0
+196	30	0
+197	30	0
+198	30	0
+199	30	0
+200	30	0
+201	30	0
+202	30	0
+203	30	0
+204	30	0
+205	30	0
+206	30	0
+207	30	0
+208	30	0
+209	30	0
+210	30	0
+211	30	0
+212	30	0
+213	30	0
+214	30	0
+215	30	0
+216	30	0
+217	30	0
+218	30	0
+219	30	0
+220	30	0
+221	30	0
+222	30	0
+223	30	0
+224	30	0
+225	30	0
+226	30	0
+227	30	0
+228	30	0
+229	30	0
+230	30	0
+231	30	0
+232	30	0
+233	30	0
+234	30	0
+235	30	0
+236	30	0
+237	30	0
+238	30	0
+239	30	0
+240	30	0
+241	30	0
+242	30	0
+243	30	0
+244	30	0
+245	30	0
+246	30	0
+247	30	0
+248	30	0
+249	30	0
+250	30	0
+251	30	0
+252	30	0
+253	30	0
+254	30	0
+255	30	0
+256	30	0
+257	30	0
+258	30	0
+259	30	0
+260	30	0
+261	30	0
+262	30	0
+263	30	0
+264	30	0
+265	30	0
+266	30	0
+267	30	0
+268	30	0
+269	30	0
+270	30	0
+271	30	0
+272	30	0
+273	30	0
+274	30	0
+275	30	0
+276	30	0
+277	30	0
+278	30	0
+279	30	0
+280	30	0
+281	30	0
+282	30	0
+283	30	0
+284	30	0
+285	30	0
+286	30	0
+287	30	0
+288	30	0
+289	30	0
+290	30	0
+291	30	0
+292	30	0
+293	30	0
+294	30	0
+295	30	0
+296	30	0
+297	30	0
+298	30	0
+299	30	0
+300	30	0
+301	30	0
+302	30	0
+303	30	0
+304	30	0
+305	30	0
+306	30	0
+307	30	0
+308	30	0
+309	30	0
+310	30	0
+311	30	0
+312	30	0
+313	30	0
+314	30	0
+315	30	0
+316	30	0
+317	30	0
+318	30	0
+319	30	0
+320	30	0
+321	30	0
+322	30	0
+323	30	0
+324	30	0
+325	30	0
+326	30	0
+327	30	0
+328	30	0
+329	30	0
+330	30	0
+331	30	0
+332	30	0
+333	30	0
+334	30	0
+335	30	0
+336	30	0
+337	30	0
+338	30	0
+339	30	0
+340	30	0
+341	30	0
+342	30	0
+343	30	0
+344	30	0
+345	30	0
+346	30	0
+347	30	0
+348	30	0
+349	30	0
+350	30	0
+351	30	0
+352	30	0
+353	30	0
+354	30	0
+355	30	0
+356	30	0
+357	30	0
+358	30	0
+359	30	0
+360	30	0
+0	30.5	0
+1	30.5	0
+2	30.5	0
+3	30.5	0
+4	30.5	0
+5	30.5	0
+6	30.5	0
+7	30.5	0
+8	30.5	0
+9	30.5	0
+10	30.5	0
+11	30.5	0
+12	30.5	0
+13	30.5	0
+14	30.5	0
+15	30.5	0
+16	30.5	0
+17	30.5	0
+18	30.5	0
+19	30.5	0
+20	30.5	0
+21	30.5	0
+22	30.5	0
+23	30.5	0
+24	30.5	0
+25	30.5	0
+26	30.5	0
+27	30.5	0
+28	30.5	0
+29	30.5	0
+30	30.5	0
+31	30.5	0
+32	30.5	0
+33	30.5	0
+34	30.5	0
+35	30.5	0
+36	30.5	0
+37	30.5	0
+38	30.5	0
+39	30.5	0
+40	30.5	0
+41	30.5	0
+42	30.5	0
+43	30.5	0
+44	30.5	0
+45	30.5	0
+46	30.5	0
+47	30.5	0
+48	30.5	0
+49	30.5	0
+50	30.5	0
+51	30.5	0
+52	30.5	0
+53	30.5	0
+54	30.5	0
+55	30.5	0
+56	30.5	0
+57	30.5	0
+58	30.5	0
+59	30.5	0
+60	30.5	0
+61	30.5	0
+62	30.5	0
+63	30.5	0
+64	30.5	0
+65	30.5	0
+66	30.5	0
+67	30.5	0
+68	30.5	0
+69	30.5	0
+70	30.5	0
+71	30.5	0
+72	30.5	0
+73	30.5	0
+74	30.5	0
+75	30.5	0
+76	30.5	0
+77	30.5	0
+78	30.5	0
+79	30.5	0
+80	30.5	0
+81	30.5	0
+82	30.5	0
+83	30.5	0
+84	30.5	0
+85	30.5	0
+86	30.5	0
+87	30.5	0
+88	30.5	0
+89	30.5	0
+90	30.5	0
+91	30.5	0
+92	30.5	0
+93	30.5	0
+94	30.5	0
+95	30.5	0
+96	30.5	0
+97	30.5	0
+98	30.5	0
+99	30.5	0
+100	30.5	0
+101	30.5	0
+102	30.5	0
+103	30.5	0
+104	30.5	0
+105	30.5	0
+106	30.5	0
+107	30.5	0
+108	30.5	0
+109	30.5	0
+110	30.5	0
+111	30.5	0
+112	30.5	0
+113	30.5	0
+114	30.5	0
+115	30.5	0
+116	30.5	0
+117	30.5	0
+118	30.5	0
+119	30.5	0
+120	30.5	0
+121	30.5	0
+122	30.5	0
+123	30.5	0
+124	30.5	0
+125	30.5	0
+126	30.5	0
+127	30.5	0
+128	30.5	0
+129	30.5	0
+130	30.5	0
+131	30.5	0
+132	30.5	0
+133	30.5	0
+134	30.5	0
+135	30.5	0
+136	30.5	0
+137	30.5	0
+138	30.5	0
+139	30.5	0
+140	30.5	0
+141	30.5	0
+142	30.5	0
+143	30.5	0
+144	30.5	0
+145	30.5	0
+146	30.5	0
+147	30.5	0
+148	30.5	0
+149	30.5	0
+150	30.5	0
+151	30.5	0
+152	30.5	0
+153	30.5	0
+154	30.5	0
+155	30.5	0
+156	30.5	0
+157	30.5	0
+158	30.5	0
+159	30.5	0
+160	30.5	0
+161	30.5	0
+162	30.5	0
+163	30.5	0
+164	30.5	0
+165	30.5	0
+166	30.5	0
+167	30.5	0
+168	30.5	0
+169	30.5	0
+170	30.5	0
+171	30.5	0
+172	30.5	0
+173	30.5	0
+174	30.5	0
+175	30.5	0
+176	30.5	0
+177	30.5	0
+178	30.5	0
+179	30.5	0
+180	30.5	0
+181	30.5	0
+182	30.5	0
+183	30.5	0
+184	30.5	0
+185	30.5	0
+186	30.5	0
+187	30.5	0
+188	30.5	0
+189	30.5	0
+190	30.5	0
+191	30.5	0
+192	30.5	0
+193	30.5	0
+194	30.5	0
+195	30.5	0
+196	30.5	0
+197	30.5	0
+198	30.5	0
+199	30.5	0
+200	30.5	0
+201	30.5	0
+202	30.5	0
+203	30.5	0
+204	30.5	0
+205	30.5	0
+206	30.5	0
+207	30.5	0
+208	30.5	0
+209	30.5	0
+210	30.5	0
+211	30.5	0
+212	30.5	0
+213	30.5	0
+214	30.5	0
+215	30.5	0
+216	30.5	0
+217	30.5	0
+218	30.5	0
+219	30.5	0
+220	30.5	0
+221	30.5	0
+222	30.5	0
+223	30.5	0
+224	30.5	0
+225	30.5	0
+226	30.5	0
+227	30.5	0
+228	30.5	0
+229	30.5	0
+230	30.5	0
+231	30.5	0
+232	30.5	0
+233	30.5	0
+234	30.5	0
+235	30.5	0
+236	30.5	0
+237	30.5	0
+238	30.5	0
+239	30.5	0
+240	30.5	0
+241	30.5	0
+242	30.5	0
+243	30.5	0
+244	30.5	0
+245	30.5	0
+246	30.5	0
+247	30.5	0
+248	30.5	0
+249	30.5	0
+250	30.5	0
+251	30.5	0
+252	30.5	0
+253	30.5	0
+254	30.5	0
+255	30.5	0
+256	30.5	0
+257	30.5	0
+258	30.5	0
+259	30.5	0
+260	30.5	0
+261	30.5	0
+262	30.5	0
+263	30.5	0
+264	30.5	0
+265	30.5	0
+266	30.5	0
+267	30.5	0
+268	30.5	0
+269	30.5	0
+270	30.5	0
+271	30.5	0
+272	30.5	0
+273	30.5	0
+274	30.5	0
+275	30.5	0
+276	30.5	0
+277	30.5	0
+278	30.5	0
+279	30.5	0
+280	30.5	0
+281	30.5	0
+282	30.5	0
+283	30.5	0
+284	30.5	0
+285	30.5	0
+286	30.5	0
+287	30.5	0
+288	30.5	0
+289	30.5	0
+290	30.5	0
+291	30.5	0
+292	30.5	0
+293	30.5	0
+294	30.5	0
+295	30.5	0
+296	30.5	0
+297	30.5	0
+298	30.5	0
+299	30.5	0
+300	30.5	0
+301	30.5	0
+302	30.5	0
+303	30.5	0
+304	30.5	0
+305	30.5	0
+306	30.5	0
+307	30.5	0
+308	30.5	0
+309	30.5	0
+310	30.5	0
+311	30.5	0
+312	30.5	0
+313	30.5	0
+314	30.5	0
+315	30.5	0
+316	30.5	0
+317	30.5	0
+318	30.5	0
+319	30.5	0
+320	30.5	0
+321	30.5	0
+322	30.5	0
+323	30.5	0
+324	30.5	0
+325	30.5	0
+326	30.5	0
+327	30.5	0
+328	30.5	0
+329	30.5	0
+330	30.5	0
+331	30.5	0
+332	30.5	0
+333	30.5	0
+334	30.5	0
+335	30.5	0
+336	30.5	0
+337	30.5	0
+338	30.5	0
+339	30.5	0
+340	30.5	0
+341	30.5	0
+342	30.5	0
+343	30.5	0
+344	30.5	0
+345	30.5	0
+346	30.5	0
+347	30.5	0
+348	30.5	0
+349	30.5	0
+350	30.5	0
+351	30.5	0
+352	30.5	0
+353	30.5	0
+354	30.5	0
+355	30.5	0
+356	30.5	0
+357	30.5	0
+358	30.5	0
+359	30.5	0
+360	30.5	0
+0	31	0
+1	31	0
+2	31	0
+3	31	0
+4	31	0
+5	31	0
+6	31	0
+7	31	0
+8	31	0
+9	31	0
+10	31	0
+11	31	0
+12	31	0
+13	31	0
+14	31	0
+15	31	0
+16	31	0
+17	31	0
+18	31	0
+19	31	0
+20	31	0
+21	31	0
+22	31	0
+23	31	0
+24	31	0
+25	31	0
+26	31	0
+27	31	0
+28	31	0
+29	31	0
+30	31	0
+31	31	0
+32	31	0
+33	31	0
+34	31	0
+35	31	0
+36	31	0
+37	31	0
+38	31	0
+39	31	0
+40	31	0
+41	31	0
+42	31	0
+43	31	0
+44	31	0
+45	31	0
+46	31	0
+47	31	0
+48	31	0
+49	31	0
+50	31	0
+51	31	0
+52	31	0
+53	31	0
+54	31	0
+55	31	0
+56	31	0
+57	31	0
+58	31	0
+59	31	0
+60	31	0
+61	31	0
+62	31	0
+63	31	0
+64	31	0
+65	31	0
+66	31	0
+67	31	0
+68	31	0
+69	31	0
+70	31	0
+71	31	0
+72	31	0
+73	31	0
+74	31	0
+75	31	0
+76	31	0
+77	31	0
+78	31	0
+79	31	0
+80	31	0
+81	31	0
+82	31	0
+83	31	0
+84	31	0
+85	31	0
+86	31	0
+87	31	0
+88	31	0
+89	31	0
+90	31	0
+91	31	0
+92	31	0
+93	31	0
+94	31	0
+95	31	0
+96	31	0
+97	31	0
+98	31	0
+99	31	0
+100	31	0
+101	31	0
+102	31	0
+103	31	0
+104	31	0
+105	31	0
+106	31	0
+107	31	0
+108	31	0
+109	31	0
+110	31	0
+111	31	0
+112	31	0
+113	31	0
+114	31	0
+115	31	0
+116	31	0
+117	31	0
+118	31	0
+119	31	0
+120	31	0
+121	31	0
+122	31	0
+123	31	0
+124	31	0
+125	31	0
+126	31	0
+127	31	0
+128	31	0
+129	31	0
+130	31	0
+131	31	0
+132	31	0
+133	31	0
+134	31	0
+135	31	0
+136	31	0
+137	31	0
+138	31	0
+139	31	0
+140	31	0
+141	31	0
+142	31	0
+143	31	0
+144	31	0
+145	31	0
+146	31	0
+147	31	0
+148	31	0
+149	31	0
+150	31	0
+151	31	0
+152	31	0
+153	31	0
+154	31	0
+155	31	0
+156	31	0
+157	31	0
+158	31	0
+159	31	0
+160	31	0
+161	31	0
+162	31	0
+163	31	0
+164	31	0
+165	31	0
+166	31	0
+167	31	0
+168	31	0
+169	31	0
+170	31	0
+171	31	0
+172	31	0
+173	31	0
+174	31	0
+175	31	0
+176	31	0
+177	31	0
+178	31	0
+179	31	0
+180	31	0
+181	31	0
+182	31	0
+183	31	0
+184	31	0
+185	31	0
+186	31	0
+187	31	0
+188	31	0
+189	31	0
+190	31	0
+191	31	0
+192	31	0
+193	31	0
+194	31	0
+195	31	0
+196	31	0
+197	31	0
+198	31	0
+199	31	0
+200	31	0
+201	31	0
+202	31	0
+203	31	0
+204	31	0
+205	31	0
+206	31	0
+207	31	0
+208	31	0
+209	31	0
+210	31	0
+211	31	0
+212	31	0
+213	31	0
+214	31	0
+215	31	0
+216	31	0
+217	31	0
+218	31	0
+219	31	0
+220	31	0
+221	31	0
+222	31	0
+223	31	0
+224	31	0
+225	31	0
+226	31	0
+227	31	0
+228	31	0
+229	31	0
+230	31	0
+231	31	0
+232	31	0
+233	31	0
+234	31	0
+235	31	0
+236	31	0
+237	31	0
+238	31	0
+239	31	0
+240	31	0
+241	31	0
+242	31	0
+243	31	0
+244	31	0
+245	31	0
+246	31	0
+247	31	0
+248	31	0
+249	31	0
+250	31	0
+251	31	0
+252	31	0
+253	31	0
+254	31	0
+255	31	0
+256	31	0
+257	31	0
+258	31	0
+259	31	0
+260	31	0
+261	31	0
+262	31	0
+263	31	0
+264	31	0
+265	31	0
+266	31	0
+267	31	0
+268	31	0
+269	31	0
+270	31	0
+271	31	0
+272	31	0
+273	31	0
+274	31	0
+275	31	0
+276	31	0
+277	31	0
+278	31	0
+279	31	0
+280	31	0
+281	31	0
+282	31	0
+283	31	0
+284	31	0
+285	31	0
+286	31	0
+287	31	0
+288	31	0
+289	31	0
+290	31	0
+291	31	0
+292	31	0
+293	31	0
+294	31	0
+295	31	0
+296	31	0
+297	31	0
+298	31	0
+299	31	0
+300	31	0
+301	31	0
+302	31	0
+303	31	0
+304	31	0
+305	31	0
+306	31	0
+307	31	0
+308	31	0
+309	31	0
+310	31	0
+311	31	0
+312	31	0
+313	31	0
+314	31	0
+315	31	0
+316	31	0
+317	31	0
+318	31	0
+319	31	0
+320	31	0
+321	31	0
+322	31	0
+323	31	0
+324	31	0
+325	31	0
+326	31	0
+327	31	0
+328	31	0
+329	31	0
+330	31	0
+331	31	0
+332	31	0
+333	31	0
+334	31	0
+335	31	0
+336	31	0
+337	31	0
+338	31	0
+339	31	0
+340	31	0
+341	31	0
+342	31	0
+343	31	0
+344	31	0
+345	31	0
+346	31	0
+347	31	0
+348	31	0
+349	31	0
+350	31	0
+351	31	0
+352	31	0
+353	31	0
+354	31	0
+355	31	0
+356	31	0
+357	31	0
+358	31	0
+359	31	0
+360	31	0
+0	31.5	0
+1	31.5	0
+2	31.5	0
+3	31.5	0
+4	31.5	0
+5	31.5	0
+6	31.5	0
+7	31.5	0
+8	31.5	0
+9	31.5	0
+10	31.5	0
+11	31.5	0
+12	31.5	0
+13	31.5	0
+14	31.5	0
+15	31.5	0
+16	31.5	0
+17	31.5	0
+18	31.5	0
+19	31.5	0
+20	31.5	0
+21	31.5	0
+22	31.5	0
+23	31.5	0
+24	31.5	0
+25	31.5	0
+26	31.5	0
+27	31.5	0
+28	31.5	0
+29	31.5	0
+30	31.5	0
+31	31.5	0
+32	31.5	0
+33	31.5	0
+34	31.5	0
+35	31.5	0
+36	31.5	0
+37	31.5	0
+38	31.5	0
+39	31.5	0
+40	31.5	0
+41	31.5	0
+42	31.5	0
+43	31.5	0
+44	31.5	0
+45	31.5	0
+46	31.5	0
+47	31.5	0
+48	31.5	0
+49	31.5	0
+50	31.5	0
+51	31.5	0
+52	31.5	0
+53	31.5	0
+54	31.5	0
+55	31.5	0
+56	31.5	0
+57	31.5	0
+58	31.5	0
+59	31.5	0
+60	31.5	0
+61	31.5	0
+62	31.5	0
+63	31.5	0
+64	31.5	0
+65	31.5	0
+66	31.5	0
+67	31.5	0
+68	31.5	0
+69	31.5	0
+70	31.5	0
+71	31.5	0
+72	31.5	0
+73	31.5	0
+74	31.5	0
+75	31.5	0
+76	31.5	0
+77	31.5	0
+78	31.5	0
+79	31.5	0
+80	31.5	0
+81	31.5	0
+82	31.5	0
+83	31.5	0
+84	31.5	0
+85	31.5	0
+86	31.5	0
+87	31.5	0
+88	31.5	0
+89	31.5	0
+90	31.5	0
+91	31.5	0
+92	31.5	0
+93	31.5	0
+94	31.5	0
+95	31.5	0
+96	31.5	0
+97	31.5	0
+98	31.5	0
+99	31.5	0
+100	31.5	0
+101	31.5	0
+102	31.5	0
+103	31.5	0
+104	31.5	0
+105	31.5	0
+106	31.5	0
+107	31.5	0
+108	31.5	0
+109	31.5	0
+110	31.5	0
+111	31.5	0
+112	31.5	0
+113	31.5	0
+114	31.5	0
+115	31.5	0
+116	31.5	0
+117	31.5	0
+118	31.5	0
+119	31.5	0
+120	31.5	0
+121	31.5	0
+122	31.5	0
+123	31.5	0
+124	31.5	0
+125	31.5	0
+126	31.5	0
+127	31.5	0
+128	31.5	0
+129	31.5	0
+130	31.5	0
+131	31.5	0
+132	31.5	0
+133	31.5	0
+134	31.5	0
+135	31.5	0
+136	31.5	0
+137	31.5	0
+138	31.5	0
+139	31.5	0
+140	31.5	0
+141	31.5	0
+142	31.5	0
+143	31.5	0
+144	31.5	0
+145	31.5	0
+146	31.5	0
+147	31.5	0
+148	31.5	0
+149	31.5	0
+150	31.5	0
+151	31.5	0
+152	31.5	0
+153	31.5	0
+154	31.5	0
+155	31.5	0
+156	31.5	0
+157	31.5	0
+158	31.5	0
+159	31.5	0
+160	31.5	0
+161	31.5	0
+162	31.5	0
+163	31.5	0
+164	31.5	0
+165	31.5	0
+166	31.5	0
+167	31.5	0
+168	31.5	0
+169	31.5	0
+170	31.5	0
+171	31.5	0
+172	31.5	0
+173	31.5	0
+174	31.5	0
+175	31.5	0
+176	31.5	0
+177	31.5	0
+178	31.5	0
+179	31.5	0
+180	31.5	0
+181	31.5	0
+182	31.5	0
+183	31.5	0
+184	31.5	0
+185	31.5	0
+186	31.5	0
+187	31.5	0
+188	31.5	0
+189	31.5	0
+190	31.5	0
+191	31.5	0
+192	31.5	0
+193	31.5	0
+194	31.5	0
+195	31.5	0
+196	31.5	0
+197	31.5	0
+198	31.5	0
+199	31.5	0
+200	31.5	0
+201	31.5	0
+202	31.5	0
+203	31.5	0
+204	31.5	0
+205	31.5	0
+206	31.5	0
+207	31.5	0
+208	31.5	0
+209	31.5	0
+210	31.5	0
+211	31.5	0
+212	31.5	0
+213	31.5	0
+214	31.5	0
+215	31.5	0
+216	31.5	0
+217	31.5	0
+218	31.5	0
+219	31.5	0
+220	31.5	0
+221	31.5	0
+222	31.5	0
+223	31.5	0
+224	31.5	0
+225	31.5	0
+226	31.5	0
+227	31.5	0
+228	31.5	0
+229	31.5	0
+230	31.5	0
+231	31.5	0
+232	31.5	0
+233	31.5	0
+234	31.5	0
+235	31.5	0
+236	31.5	0
+237	31.5	0
+238	31.5	0
+239	31.5	0
+240	31.5	0
+241	31.5	0
+242	31.5	0
+243	31.5	0
+244	31.5	0
+245	31.5	0
+246	31.5	0
+247	31.5	0
+248	31.5	0
+249	31.5	0
+250	31.5	0
+251	31.5	0
+252	31.5	0
+253	31.5	0
+254	31.5	0
+255	31.5	0
+256	31.5	0
+257	31.5	0
+258	31.5	0
+259	31.5	0
+260	31.5	0
+261	31.5	0
+262	31.5	0
+263	31.5	0
+264	31.5	0
+265	31.5	0
+266	31.5	0
+267	31.5	0
+268	31.5	0
+269	31.5	0
+270	31.5	0
+271	31.5	0
+272	31.5	0
+273	31.5	0
+274	31.5	0
+275	31.5	0
+276	31.5	0
+277	31.5	0
+278	31.5	0
+279	31.5	0
+280	31.5	0
+281	31.5	0
+282	31.5	0
+283	31.5	0
+284	31.5	0
+285	31.5	0
+286	31.5	0
+287	31.5	0
+288	31.5	0
+289	31.5	0
+290	31.5	0
+291	31.5	0
+292	31.5	0
+293	31.5	0
+294	31.5	0
+295	31.5	0
+296	31.5	0
+297	31.5	0
+298	31.5	0
+299	31.5	0
+300	31.5	0
+301	31.5	0
+302	31.5	0
+303	31.5	0
+304	31.5	0
+305	31.5	0
+306	31.5	0
+307	31.5	0
+308	31.5	0
+309	31.5	0
+310	31.5	0
+311	31.5	0
+312	31.5	0
+313	31.5	0
+314	31.5	0
+315	31.5	0
+316	31.5	0
+317	31.5	0
+318	31.5	0
+319	31.5	0
+320	31.5	0
+321	31.5	0
+322	31.5	0
+323	31.5	0
+324	31.5	0
+325	31.5	0
+326	31.5	0
+327	31.5	0
+328	31.5	0
+329	31.5	0
+330	31.5	0
+331	31.5	0
+332	31.5	0
+333	31.5	0
+334	31.5	0
+335	31.5	0
+336	31.5	0
+337	31.5	0
+338	31.5	0
+339	31.5	0
+340	31.5	0
+341	31.5	0
+342	31.5	0
+343	31.5	0
+344	31.5	0
+345	31.5	0
+346	31.5	0
+347	31.5	0
+348	31.5	0
+349	31.5	0
+350	31.5	0
+351	31.5	0
+352	31.5	0
+353	31.5	0
+354	31.5	0
+355	31.5	0
+356	31.5	0
+357	31.5	0
+358	31.5	0
+359	31.5	0
+360	31.5	0
+0	32	0
+1	32	0
+2	32	0
+3	32	0
+4	32	0
+5	32	0
+6	32	0
+7	32	0
+8	32	0
+9	32	0
+10	32	0
+11	32	0
+12	32	0
+13	32	0
+14	32	0
+15	32	0
+16	32	0
+17	32	0
+18	32	0
+19	32	0
+20	32	0
+21	32	0
+22	32	0
+23	32	0
+24	32	0
+25	32	0
+26	32	0
+27	32	0
+28	32	0
+29	32	0
+30	32	0
+31	32	0
+32	32	0
+33	32	0
+34	32	0
+35	32	0
+36	32	0
+37	32	0
+38	32	0
+39	32	0
+40	32	0
+41	32	0
+42	32	0
+43	32	0
+44	32	0
+45	32	0
+46	32	0
+47	32	0
+48	32	0
+49	32	0
+50	32	0
+51	32	0
+52	32	0
+53	32	0
+54	32	0
+55	32	0
+56	32	0
+57	32	0
+58	32	0
+59	32	0
+60	32	0
+61	32	0
+62	32	0
+63	32	0
+64	32	0
+65	32	0
+66	32	0
+67	32	0
+68	32	0
+69	32	0
+70	32	0
+71	32	0
+72	32	0
+73	32	0
+74	32	0
+75	32	0
+76	32	0
+77	32	0
+78	32	0
+79	32	0
+80	32	0
+81	32	0
+82	32	0
+83	32	0
+84	32	0
+85	32	0
+86	32	0
+87	32	0
+88	32	0
+89	32	0
+90	32	0
+91	32	0
+92	32	0
+93	32	0
+94	32	0
+95	32	0
+96	32	0
+97	32	0
+98	32	0
+99	32	0
+100	32	0
+101	32	0
+102	32	0
+103	32	0
+104	32	0
+105	32	0
+106	32	0
+107	32	0
+108	32	0
+109	32	0
+110	32	0
+111	32	0
+112	32	0
+113	32	0
+114	32	0
+115	32	0
+116	32	0
+117	32	0
+118	32	0
+119	32	0
+120	32	0
+121	32	0
+122	32	0
+123	32	0
+124	32	0
+125	32	0
+126	32	0
+127	32	0
+128	32	0
+129	32	0
+130	32	0
+131	32	0
+132	32	0
+133	32	0
+134	32	0
+135	32	0
+136	32	0
+137	32	0
+138	32	0
+139	32	0
+140	32	0
+141	32	0
+142	32	0
+143	32	0
+144	32	0
+145	32	0
+146	32	0
+147	32	0
+148	32	0
+149	32	0
+150	32	0
+151	32	0
+152	32	0
+153	32	0
+154	32	0
+155	32	0
+156	32	0
+157	32	0
+158	32	0
+159	32	0
+160	32	0
+161	32	0
+162	32	0
+163	32	0
+164	32	0
+165	32	0
+166	32	0
+167	32	0
+168	32	0
+169	32	0
+170	32	0
+171	32	0
+172	32	0
+173	32	0
+174	32	0
+175	32	0
+176	32	0
+177	32	0
+178	32	0
+179	32	0
+180	32	0
+181	32	0
+182	32	0
+183	32	0
+184	32	0
+185	32	0
+186	32	0
+187	32	0
+188	32	0
+189	32	0
+190	32	0
+191	32	0
+192	32	0
+193	32	0
+194	32	0
+195	32	0
+196	32	0
+197	32	0
+198	32	0
+199	32	0
+200	32	0
+201	32	0
+202	32	0
+203	32	0
+204	32	0
+205	32	0
+206	32	0
+207	32	0
+208	32	0
+209	32	0
+210	32	0
+211	32	0
+212	32	0
+213	32	0
+214	32	0
+215	32	0
+216	32	0
+217	32	0
+218	32	0
+219	32	0
+220	32	0
+221	32	0
+222	32	0
+223	32	0
+224	32	0
+225	32	0
+226	32	0
+227	32	0
+228	32	0
+229	32	0
+230	32	0
+231	32	0
+232	32	0
+233	32	0
+234	32	0
+235	32	0
+236	32	0
+237	32	0
+238	32	0
+239	32	0
+240	32	0
+241	32	0
+242	32	0
+243	32	0
+244	32	0
+245	32	0
+246	32	0
+247	32	0
+248	32	0
+249	32	0
+250	32	0
+251	32	0
+252	32	0
+253	32	0
+254	32	0
+255	32	0
+256	32	0
+257	32	0
+258	32	0
+259	32	0
+260	32	0
+261	32	0
+262	32	0
+263	32	0
+264	32	0
+265	32	0
+266	32	0
+267	32	0
+268	32	0
+269	32	0
+270	32	0
+271	32	0
+272	32	0
+273	32	0
+274	32	0
+275	32	0
+276	32	0
+277	32	0
+278	32	0
+279	32	0
+280	32	0
+281	32	0
+282	32	0
+283	32	0
+284	32	0
+285	32	0
+286	32	0
+287	32	0
+288	32	0
+289	32	0
+290	32	0
+291	32	0
+292	32	0
+293	32	0
+294	32	0
+295	32	0
+296	32	0
+297	32	0
+298	32	0
+299	32	0
+300	32	0
+301	32	0
+302	32	0
+303	32	0
+304	32	0
+305	32	0
+306	32	0
+307	32	0
+308	32	0
+309	32	0
+310	32	0
+311	32	0
+312	32	0
+313	32	0
+314	32	0
+315	32	0
+316	32	0
+317	32	0
+318	32	0
+319	32	0
+320	32	0
+321	32	0
+322	32	0
+323	32	0
+324	32	0
+325	32	0
+326	32	0
+327	32	0
+328	32	0
+329	32	0
+330	32	0
+331	32	0
+332	32	0
+333	32	0
+334	32	0
+335	32	0
+336	32	0
+337	32	0
+338	32	0
+339	32	0
+340	32	0
+341	32	0
+342	32	0
+343	32	0
+344	32	0
+345	32	0
+346	32	0
+347	32	0
+348	32	0
+349	32	0
+350	32	0
+351	32	0
+352	32	0
+353	32	0
+354	32	0
+355	32	0
+356	32	0
+357	32	0
+358	32	0
+359	32	0
+360	32	0
+0	32.5	0
+1	32.5	0
+2	32.5	0
+3	32.5	0
+4	32.5	0
+5	32.5	0
+6	32.5	0
+7	32.5	0
+8	32.5	0
+9	32.5	0
+10	32.5	0
+11	32.5	0
+12	32.5	0
+13	32.5	0
+14	32.5	0
+15	32.5	0
+16	32.5	0
+17	32.5	0
+18	32.5	0
+19	32.5	0
+20	32.5	0
+21	32.5	0
+22	32.5	0
+23	32.5	0
+24	32.5	0
+25	32.5	0
+26	32.5	0
+27	32.5	0
+28	32.5	0
+29	32.5	0
+30	32.5	0
+31	32.5	0
+32	32.5	0
+33	32.5	0
+34	32.5	0
+35	32.5	0
+36	32.5	0
+37	32.5	0
+38	32.5	0
+39	32.5	0
+40	32.5	0
+41	32.5	0
+42	32.5	0
+43	32.5	0
+44	32.5	0
+45	32.5	0
+46	32.5	0
+47	32.5	0
+48	32.5	0
+49	32.5	0
+50	32.5	0
+51	32.5	0
+52	32.5	0
+53	32.5	0
+54	32.5	0
+55	32.5	0
+56	32.5	0
+57	32.5	0
+58	32.5	0
+59	32.5	0
+60	32.5	0
+61	32.5	0
+62	32.5	0
+63	32.5	0
+64	32.5	0
+65	32.5	0
+66	32.5	0
+67	32.5	0
+68	32.5	0
+69	32.5	0
+70	32.5	0
+71	32.5	0
+72	32.5	0
+73	32.5	0
+74	32.5	0
+75	32.5	0
+76	32.5	0
+77	32.5	0
+78	32.5	0
+79	32.5	0
+80	32.5	0
+81	32.5	0
+82	32.5	0
+83	32.5	0
+84	32.5	0
+85	32.5	0
+86	32.5	0
+87	32.5	0
+88	32.5	0
+89	32.5	0
+90	32.5	0
+91	32.5	0
+92	32.5	0
+93	32.5	0
+94	32.5	0
+95	32.5	0
+96	32.5	0
+97	32.5	0
+98	32.5	0
+99	32.5	0
+100	32.5	0
+101	32.5	0
+102	32.5	0
+103	32.5	0
+104	32.5	0
+105	32.5	0
+106	32.5	0
+107	32.5	0
+108	32.5	0
+109	32.5	0
+110	32.5	0
+111	32.5	0
+112	32.5	0
+113	32.5	0
+114	32.5	0
+115	32.5	0
+116	32.5	0
+117	32.5	0
+118	32.5	0
+119	32.5	0
+120	32.5	0
+121	32.5	0
+122	32.5	0
+123	32.5	0
+124	32.5	0
+125	32.5	0
+126	32.5	0
+127	32.5	0
+128	32.5	0
+129	32.5	0
+130	32.5	0
+131	32.5	0
+132	32.5	0
+133	32.5	0
+134	32.5	0
+135	32.5	0
+136	32.5	0
+137	32.5	0
+138	32.5	0
+139	32.5	0
+140	32.5	0
+141	32.5	0
+142	32.5	0
+143	32.5	0
+144	32.5	0
+145	32.5	0
+146	32.5	0
+147	32.5	0
+148	32.5	0
+149	32.5	0
+150	32.5	0
+151	32.5	0
+152	32.5	0
+153	32.5	0
+154	32.5	0
+155	32.5	0
+156	32.5	0
+157	32.5	0
+158	32.5	0
+159	32.5	0
+160	32.5	0
+161	32.5	0
+162	32.5	0
+163	32.5	0
+164	32.5	0
+165	32.5	0
+166	32.5	0
+167	32.5	0
+168	32.5	0
+169	32.5	0
+170	32.5	0
+171	32.5	0
+172	32.5	0
+173	32.5	0
+174	32.5	0
+175	32.5	0
+176	32.5	0
+177	32.5	0
+178	32.5	0
+179	32.5	0
+180	32.5	0
+181	32.5	0
+182	32.5	0
+183	32.5	0
+184	32.5	0
+185	32.5	0
+186	32.5	0
+187	32.5	0
+188	32.5	0
+189	32.5	0
+190	32.5	0
+191	32.5	0
+192	32.5	0
+193	32.5	0
+194	32.5	0
+195	32.5	0
+196	32.5	0
+197	32.5	0
+198	32.5	0
+199	32.5	0
+200	32.5	0
+201	32.5	0
+202	32.5	0
+203	32.5	0
+204	32.5	0
+205	32.5	0
+206	32.5	0
+207	32.5	0
+208	32.5	0
+209	32.5	0
+210	32.5	0
+211	32.5	0
+212	32.5	0
+213	32.5	0
+214	32.5	0
+215	32.5	0
+216	32.5	0
+217	32.5	0
+218	32.5	0
+219	32.5	0
+220	32.5	0
+221	32.5	0
+222	32.5	0
+223	32.5	0
+224	32.5	0
+225	32.5	0
+226	32.5	0
+227	32.5	0
+228	32.5	0
+229	32.5	0
+230	32.5	0
+231	32.5	0
+232	32.5	0
+233	32.5	0
+234	32.5	0
+235	32.5	0
+236	32.5	0
+237	32.5	0
+238	32.5	0
+239	32.5	0
+240	32.5	0
+241	32.5	0
+242	32.5	0
+243	32.5	0
+244	32.5	0
+245	32.5	0
+246	32.5	0
+247	32.5	0
+248	32.5	0
+249	32.5	0
+250	32.5	0
+251	32.5	0
+252	32.5	0
+253	32.5	0
+254	32.5	0
+255	32.5	0
+256	32.5	0
+257	32.5	0
+258	32.5	0
+259	32.5	0
+260	32.5	0
+261	32.5	0
+262	32.5	0
+263	32.5	0
+264	32.5	0
+265	32.5	0
+266	32.5	0
+267	32.5	0
+268	32.5	0
+269	32.5	0
+270	32.5	0
+271	32.5	0
+272	32.5	0
+273	32.5	0
+274	32.5	0
+275	32.5	0
+276	32.5	0
+277	32.5	0
+278	32.5	0
+279	32.5	0
+280	32.5	0
+281	32.5	0
+282	32.5	0
+283	32.5	0
+284	32.5	0
+285	32.5	0
+286	32.5	0
+287	32.5	0
+288	32.5	0
+289	32.5	0
+290	32.5	0
+291	32.5	0
+292	32.5	0
+293	32.5	0
+294	32.5	0
+295	32.5	0
+296	32.5	0
+297	32.5	0
+298	32.5	0
+299	32.5	0
+300	32.5	0
+301	32.5	0
+302	32.5	0
+303	32.5	0
+304	32.5	0
+305	32.5	0
+306	32.5	0
+307	32.5	0
+308	32.5	0
+309	32.5	0
+310	32.5	0
+311	32.5	0
+312	32.5	0
+313	32.5	0
+314	32.5	0
+315	32.5	0
+316	32.5	0
+317	32.5	0
+318	32.5	0
+319	32.5	0
+320	32.5	0
+321	32.5	0
+322	32.5	0
+323	32.5	0
+324	32.5	0
+325	32.5	0
+326	32.5	0
+327	32.5	0
+328	32.5	0
+329	32.5	0
+330	32.5	0
+331	32.5	0
+332	32.5	0
+333	32.5	0
+334	32.5	0
+335	32.5	0
+336	32.5	0
+337	32.5	0
+338	32.5	0
+339	32.5	0
+340	32.5	0
+341	32.5	0
+342	32.5	0
+343	32.5	0
+344	32.5	0
+345	32.5	0
+346	32.5	0
+347	32.5	0
+348	32.5	0
+349	32.5	0
+350	32.5	0
+351	32.5	0
+352	32.5	0
+353	32.5	0
+354	32.5	0
+355	32.5	0
+356	32.5	0
+357	32.5	0
+358	32.5	0
+359	32.5	0
+360	32.5	0
+0	33	0
+1	33	0
+2	33	0
+3	33	0
+4	33	0
+5	33	0
+6	33	0
+7	33	0
+8	33	0
+9	33	0
+10	33	0
+11	33	0
+12	33	0
+13	33	0
+14	33	0
+15	33	0
+16	33	0
+17	33	0
+18	33	0
+19	33	0
+20	33	0
+21	33	0
+22	33	0
+23	33	0
+24	33	0
+25	33	0
+26	33	0
+27	33	0
+28	33	0
+29	33	0
+30	33	0
+31	33	0
+32	33	0
+33	33	0
+34	33	0
+35	33	0
+36	33	0
+37	33	0
+38	33	0
+39	33	0
+40	33	0
+41	33	0
+42	33	0
+43	33	0
+44	33	0
+45	33	0
+46	33	0
+47	33	0
+48	33	0
+49	33	0
+50	33	0
+51	33	0
+52	33	0
+53	33	0
+54	33	0
+55	33	0
+56	33	0
+57	33	0
+58	33	0
+59	33	0
+60	33	0
+61	33	0
+62	33	0
+63	33	0
+64	33	0
+65	33	0
+66	33	0
+67	33	0
+68	33	0
+69	33	0
+70	33	0
+71	33	0
+72	33	0
+73	33	0
+74	33	0
+75	33	0
+76	33	0
+77	33	0
+78	33	0
+79	33	0
+80	33	0
+81	33	0
+82	33	0
+83	33	0
+84	33	0
+85	33	0
+86	33	0
+87	33	0
+88	33	0
+89	33	0
+90	33	0
+91	33	0
+92	33	0
+93	33	0
+94	33	0
+95	33	0
+96	33	0
+97	33	0
+98	33	0
+99	33	0
+100	33	0
+101	33	0
+102	33	0
+103	33	0
+104	33	0
+105	33	0
+106	33	0
+107	33	0
+108	33	0
+109	33	0
+110	33	0
+111	33	0
+112	33	0
+113	33	0
+114	33	0
+115	33	0
+116	33	0
+117	33	0
+118	33	0
+119	33	0
+120	33	0
+121	33	0
+122	33	0
+123	33	0
+124	33	0
+125	33	0
+126	33	0
+127	33	0
+128	33	0
+129	33	0
+130	33	0
+131	33	0
+132	33	0
+133	33	0
+134	33	0
+135	33	0
+136	33	0
+137	33	0
+138	33	0
+139	33	0
+140	33	0
+141	33	0
+142	33	0
+143	33	0
+144	33	0
+145	33	0
+146	33	0
+147	33	0
+148	33	0
+149	33	0
+150	33	0
+151	33	0
+152	33	0
+153	33	0
+154	33	0
+155	33	0
+156	33	0
+157	33	0
+158	33	0
+159	33	0
+160	33	0
+161	33	0
+162	33	0
+163	33	0
+164	33	0
+165	33	0
+166	33	0
+167	33	0
+168	33	0
+169	33	0
+170	33	0
+171	33	0
+172	33	0
+173	33	0
+174	33	0
+175	33	0
+176	33	0
+177	33	0
+178	33	0
+179	33	0
+180	33	0
+181	33	0
+182	33	0
+183	33	0
+184	33	0
+185	33	0
+186	33	0
+187	33	0
+188	33	0
+189	33	0
+190	33	0
+191	33	0
+192	33	0
+193	33	0
+194	33	0
+195	33	0
+196	33	0
+197	33	0
+198	33	0
+199	33	0
+200	33	0
+201	33	0
+202	33	0
+203	33	0
+204	33	0
+205	33	0
+206	33	0
+207	33	0
+208	33	0
+209	33	0
+210	33	0
+211	33	0
+212	33	0
+213	33	0
+214	33	0
+215	33	0
+216	33	0
+217	33	0
+218	33	0
+219	33	0
+220	33	0
+221	33	0
+222	33	0
+223	33	0
+224	33	0
+225	33	0
+226	33	0
+227	33	0
+228	33	0
+229	33	0
+230	33	0
+231	33	0
+232	33	0
+233	33	0
+234	33	0
+235	33	0
+236	33	0
+237	33	0
+238	33	0
+239	33	0
+240	33	0
+241	33	0
+242	33	0
+243	33	0
+244	33	0
+245	33	0
+246	33	0
+247	33	0
+248	33	0
+249	33	0
+250	33	0
+251	33	0
+252	33	0
+253	33	0
+254	33	0
+255	33	0
+256	33	0
+257	33	0
+258	33	0
+259	33	0
+260	33	0
+261	33	0
+262	33	0
+263	33	0
+264	33	0
+265	33	0
+266	33	0
+267	33	0
+268	33	0
+269	33	0
+270	33	0
+271	33	0
+272	33	0
+273	33	0
+274	33	0
+275	33	0
+276	33	0
+277	33	0
+278	33	0
+279	33	0
+280	33	0
+281	33	0
+282	33	0
+283	33	0
+284	33	0
+285	33	0
+286	33	0
+287	33	0
+288	33	0
+289	33	0
+290	33	0
+291	33	0
+292	33	0
+293	33	0
+294	33	0
+295	33	0
+296	33	0
+297	33	0
+298	33	0
+299	33	0
+300	33	0
+301	33	0
+302	33	0
+303	33	0
+304	33	0
+305	33	0
+306	33	0
+307	33	0
+308	33	0
+309	33	0
+310	33	0
+311	33	0
+312	33	0
+313	33	0
+314	33	0
+315	33	0
+316	33	0
+317	33	0
+318	33	0
+319	33	0
+320	33	0
+321	33	0
+322	33	0
+323	33	0
+324	33	0
+325	33	0
+326	33	0
+327	33	0
+328	33	0
+329	33	0
+330	33	0
+331	33	0
+332	33	0
+333	33	0
+334	33	0
+335	33	0
+336	33	0
+337	33	0
+338	33	0
+339	33	0
+340	33	0
+341	33	0
+342	33	0
+343	33	0
+344	33	0
+345	33	0
+346	33	0
+347	33	0
+348	33	0
+349	33	0
+350	33	0
+351	33	0
+352	33	0
+353	33	0
+354	33	0
+355	33	0
+356	33	0
+357	33	0
+358	33	0
+359	33	0
+360	33	0
+0	33.5	0
+1	33.5	0
+2	33.5	0
+3	33.5	0
+4	33.5	0
+5	33.5	0
+6	33.5	0
+7	33.5	0
+8	33.5	0
+9	33.5	0
+10	33.5	0
+11	33.5	0
+12	33.5	0
+13	33.5	0
+14	33.5	0
+15	33.5	0
+16	33.5	0
+17	33.5	0
+18	33.5	0
+19	33.5	0
+20	33.5	0
+21	33.5	0
+22	33.5	0
+23	33.5	0
+24	33.5	0
+25	33.5	0
+26	33.5	0
+27	33.5	0
+28	33.5	0
+29	33.5	0
+30	33.5	0
+31	33.5	0
+32	33.5	0
+33	33.5	0
+34	33.5	0
+35	33.5	0
+36	33.5	0
+37	33.5	0
+38	33.5	0
+39	33.5	0
+40	33.5	0
+41	33.5	0
+42	33.5	0
+43	33.5	0
+44	33.5	0
+45	33.5	0
+46	33.5	0
+47	33.5	0
+48	33.5	0
+49	33.5	0
+50	33.5	0
+51	33.5	0
+52	33.5	0
+53	33.5	0
+54	33.5	0
+55	33.5	0
+56	33.5	0
+57	33.5	0
+58	33.5	0
+59	33.5	0
+60	33.5	0
+61	33.5	0
+62	33.5	0
+63	33.5	0
+64	33.5	0
+65	33.5	0
+66	33.5	0
+67	33.5	0
+68	33.5	0
+69	33.5	0
+70	33.5	0
+71	33.5	0
+72	33.5	0
+73	33.5	0
+74	33.5	0
+75	33.5	0
+76	33.5	0
+77	33.5	0
+78	33.5	0
+79	33.5	0
+80	33.5	0
+81	33.5	0
+82	33.5	0
+83	33.5	0
+84	33.5	0
+85	33.5	0
+86	33.5	0
+87	33.5	0
+88	33.5	0
+89	33.5	0
+90	33.5	0
+91	33.5	0
+92	33.5	0
+93	33.5	0
+94	33.5	0
+95	33.5	0
+96	33.5	0
+97	33.5	0
+98	33.5	0
+99	33.5	0
+100	33.5	0
+101	33.5	0
+102	33.5	0
+103	33.5	0
+104	33.5	0
+105	33.5	0
+106	33.5	0
+107	33.5	0
+108	33.5	0
+109	33.5	0
+110	33.5	0
+111	33.5	0
+112	33.5	0
+113	33.5	0
+114	33.5	0
+115	33.5	0
+116	33.5	0
+117	33.5	0
+118	33.5	0
+119	33.5	0
+120	33.5	0
+121	33.5	0
+122	33.5	0
+123	33.5	0
+124	33.5	0
+125	33.5	0
+126	33.5	0
+127	33.5	0
+128	33.5	0
+129	33.5	0
+130	33.5	0
+131	33.5	0
+132	33.5	0
+133	33.5	0
+134	33.5	0
+135	33.5	0
+136	33.5	0
+137	33.5	0
+138	33.5	0
+139	33.5	0
+140	33.5	0
+141	33.5	0
+142	33.5	0
+143	33.5	0
+144	33.5	0
+145	33.5	0
+146	33.5	0
+147	33.5	0
+148	33.5	0
+149	33.5	0
+150	33.5	0
+151	33.5	0
+152	33.5	0
+153	33.5	0
+154	33.5	0
+155	33.5	0
+156	33.5	0
+157	33.5	0
+158	33.5	0
+159	33.5	0
+160	33.5	0
+161	33.5	0
+162	33.5	0
+163	33.5	0
+164	33.5	0
+165	33.5	0
+166	33.5	0
+167	33.5	0
+168	33.5	0
+169	33.5	0
+170	33.5	0
+171	33.5	0
+172	33.5	0
+173	33.5	0
+174	33.5	0
+175	33.5	0
+176	33.5	0
+177	33.5	0
+178	33.5	0
+179	33.5	0
+180	33.5	0
+181	33.5	0
+182	33.5	0
+183	33.5	0
+184	33.5	0
+185	33.5	0
+186	33.5	0
+187	33.5	0
+188	33.5	0
+189	33.5	0
+190	33.5	0
+191	33.5	0
+192	33.5	0
+193	33.5	0
+194	33.5	0
+195	33.5	0
+196	33.5	0
+197	33.5	0
+198	33.5	0
+199	33.5	0
+200	33.5	0
+201	33.5	0
+202	33.5	0
+203	33.5	0
+204	33.5	0
+205	33.5	0
+206	33.5	0
+207	33.5	0
+208	33.5	0
+209	33.5	0
+210	33.5	0
+211	33.5	0
+212	33.5	0
+213	33.5	0
+214	33.5	0
+215	33.5	0
+216	33.5	0
+217	33.5	0
+218	33.5	0
+219	33.5	0
+220	33.5	0
+221	33.5	0
+222	33.5	0
+223	33.5	0
+224	33.5	0
+225	33.5	0
+226	33.5	0
+227	33.5	0
+228	33.5	0
+229	33.5	0
+230	33.5	0
+231	33.5	0
+232	33.5	0
+233	33.5	0
+234	33.5	0
+235	33.5	0
+236	33.5	0
+237	33.5	0
+238	33.5	0
+239	33.5	0
+240	33.5	0
+241	33.5	0
+242	33.5	0
+243	33.5	0
+244	33.5	0
+245	33.5	0
+246	33.5	0
+247	33.5	0
+248	33.5	0
+249	33.5	0
+250	33.5	0
+251	33.5	0
+252	33.5	0
+253	33.5	0
+254	33.5	0
+255	33.5	0
+256	33.5	0
+257	33.5	0
+258	33.5	0
+259	33.5	0
+260	33.5	0
+261	33.5	0
+262	33.5	0
+263	33.5	0
+264	33.5	0
+265	33.5	0
+266	33.5	0
+267	33.5	0
+268	33.5	0
+269	33.5	0
+270	33.5	0
+271	33.5	0
+272	33.5	0
+273	33.5	0
+274	33.5	0
+275	33.5	0
+276	33.5	0
+277	33.5	0
+278	33.5	0
+279	33.5	0
+280	33.5	0
+281	33.5	0
+282	33.5	0
+283	33.5	0
+284	33.5	0
+285	33.5	0
+286	33.5	0
+287	33.5	0
+288	33.5	0
+289	33.5	0
+290	33.5	0
+291	33.5	0
+292	33.5	0
+293	33.5	0
+294	33.5	0
+295	33.5	0
+296	33.5	0
+297	33.5	0
+298	33.5	0
+299	33.5	0
+300	33.5	0
+301	33.5	0
+302	33.5	0
+303	33.5	0
+304	33.5	0
+305	33.5	0
+306	33.5	0
+307	33.5	0
+308	33.5	0
+309	33.5	0
+310	33.5	0
+311	33.5	0
+312	33.5	0
+313	33.5	0
+314	33.5	0
+315	33.5	0
+316	33.5	0
+317	33.5	0
+318	33.5	0
+319	33.5	0
+320	33.5	0
+321	33.5	0
+322	33.5	0
+323	33.5	0
+324	33.5	0
+325	33.5	0
+326	33.5	0
+327	33.5	0
+328	33.5	0
+329	33.5	0
+330	33.5	0
+331	33.5	0
+332	33.5	0
+333	33.5	0
+334	33.5	0
+335	33.5	0
+336	33.5	0
+337	33.5	0
+338	33.5	0
+339	33.5	0
+340	33.5	0
+341	33.5	0
+342	33.5	0
+343	33.5	0
+344	33.5	0
+345	33.5	0
+346	33.5	0
+347	33.5	0
+348	33.5	0
+349	33.5	0
+350	33.5	0
+351	33.5	0
+352	33.5	0
+353	33.5	0
+354	33.5	0
+355	33.5	0
+356	33.5	0
+357	33.5	0
+358	33.5	0
+359	33.5	0
+360	33.5	0
+0	34	0
+1	34	0
+2	34	0
+3	34	0
+4	34	0
+5	34	0
+6	34	0
+7	34	0
+8	34	0
+9	34	0
+10	34	0
+11	34	0
+12	34	0
+13	34	0
+14	34	0
+15	34	0
+16	34	0
+17	34	0
+18	34	0
+19	34	0
+20	34	0
+21	34	0
+22	34	0
+23	34	0
+24	34	0
+25	34	0
+26	34	0
+27	34	0
+28	34	0
+29	34	0
+30	34	0
+31	34	0
+32	34	0
+33	34	0
+34	34	0
+35	34	0
+36	34	0
+37	34	0
+38	34	0
+39	34	0
+40	34	0
+41	34	0
+42	34	0
+43	34	0
+44	34	0
+45	34	0
+46	34	0
+47	34	0
+48	34	0
+49	34	0
+50	34	0
+51	34	0
+52	34	0
+53	34	0
+54	34	0
+55	34	0
+56	34	0
+57	34	0
+58	34	0
+59	34	0
+60	34	0
+61	34	0
+62	34	0
+63	34	0
+64	34	0
+65	34	0
+66	34	0
+67	34	0
+68	34	0
+69	34	0
+70	34	0
+71	34	0
+72	34	0
+73	34	0
+74	34	0
+75	34	0
+76	34	0
+77	34	0
+78	34	0
+79	34	0
+80	34	0
+81	34	0
+82	34	0
+83	34	0
+84	34	0
+85	34	0
+86	34	0
+87	34	0
+88	34	0
+89	34	0
+90	34	0
+91	34	0
+92	34	0
+93	34	0
+94	34	0
+95	34	0
+96	34	0
+97	34	0
+98	34	0
+99	34	0
+100	34	0
+101	34	0
+102	34	0
+103	34	0
+104	34	0
+105	34	0
+106	34	0
+107	34	0
+108	34	0
+109	34	0
+110	34	0
+111	34	0
+112	34	0
+113	34	0
+114	34	0
+115	34	0
+116	34	0
+117	34	0
+118	34	0
+119	34	0
+120	34	0
+121	34	0
+122	34	0
+123	34	0
+124	34	0
+125	34	0
+126	34	0
+127	34	0
+128	34	0
+129	34	0
+130	34	0
+131	34	0
+132	34	0
+133	34	0
+134	34	0
+135	34	0
+136	34	0
+137	34	0
+138	34	0
+139	34	0
+140	34	0
+141	34	0
+142	34	0
+143	34	0
+144	34	0
+145	34	0
+146	34	0
+147	34	0
+148	34	0
+149	34	0
+150	34	0
+151	34	0
+152	34	0
+153	34	0
+154	34	0
+155	34	0
+156	34	0
+157	34	0
+158	34	0
+159	34	0
+160	34	0
+161	34	0
+162	34	0
+163	34	0
+164	34	0
+165	34	0
+166	34	0
+167	34	0
+168	34	0
+169	34	0
+170	34	0
+171	34	0
+172	34	0
+173	34	0
+174	34	0
+175	34	0
+176	34	0
+177	34	0
+178	34	0
+179	34	0
+180	34	0
+181	34	0
+182	34	0
+183	34	0
+184	34	0
+185	34	0
+186	34	0
+187	34	0
+188	34	0
+189	34	0
+190	34	0
+191	34	0
+192	34	0
+193	34	0
+194	34	0
+195	34	0
+196	34	0
+197	34	0
+198	34	0
+199	34	0
+200	34	0
+201	34	0
+202	34	0
+203	34	0
+204	34	0
+205	34	0
+206	34	0
+207	34	0
+208	34	0
+209	34	0
+210	34	0
+211	34	0
+212	34	0
+213	34	0
+214	34	0
+215	34	0
+216	34	0
+217	34	0
+218	34	0
+219	34	0
+220	34	0
+221	34	0
+222	34	0
+223	34	0
+224	34	0
+225	34	0
+226	34	0
+227	34	0
+228	34	0
+229	34	0
+230	34	0
+231	34	0
+232	34	0
+233	34	0
+234	34	0
+235	34	0
+236	34	0
+237	34	0
+238	34	0
+239	34	0
+240	34	0
+241	34	0
+242	34	0
+243	34	0
+244	34	0
+245	34	0
+246	34	0
+247	34	0
+248	34	0
+249	34	0
+250	34	0
+251	34	0
+252	34	0
+253	34	0
+254	34	0
+255	34	0
+256	34	0
+257	34	0
+258	34	0
+259	34	0
+260	34	0
+261	34	0
+262	34	0
+263	34	0
+264	34	0
+265	34	0
+266	34	0
+267	34	0
+268	34	0
+269	34	0
+270	34	0
+271	34	0
+272	34	0
+273	34	0
+274	34	0
+275	34	0
+276	34	0
+277	34	0
+278	34	0
+279	34	0
+280	34	0
+281	34	0
+282	34	0
+283	34	0
+284	34	0
+285	34	0
+286	34	0
+287	34	0
+288	34	0
+289	34	0
+290	34	0
+291	34	0
+292	34	0
+293	34	0
+294	34	0
+295	34	0
+296	34	0
+297	34	0
+298	34	0
+299	34	0
+300	34	0
+301	34	0
+302	34	0
+303	34	0
+304	34	0
+305	34	0
+306	34	0
+307	34	0
+308	34	0
+309	34	0
+310	34	0
+311	34	0
+312	34	0
+313	34	0
+314	34	0
+315	34	0
+316	34	0
+317	34	0
+318	34	0
+319	34	0
+320	34	0
+321	34	0
+322	34	0
+323	34	0
+324	34	0
+325	34	0
+326	34	0
+327	34	0
+328	34	0
+329	34	0
+330	34	0
+331	34	0
+332	34	0
+333	34	0
+334	34	0
+335	34	0
+336	34	0
+337	34	0
+338	34	0
+339	34	0
+340	34	0
+341	34	0
+342	34	0
+343	34	0
+344	34	0
+345	34	0
+346	34	0
+347	34	0
+348	34	0
+349	34	0
+350	34	0
+351	34	0
+352	34	0
+353	34	0
+354	34	0
+355	34	0
+356	34	0
+357	34	0
+358	34	0
+359	34	0
+360	34	0
+0	34.5	0
+1	34.5	0
+2	34.5	0
+3	34.5	0
+4	34.5	0
+5	34.5	0
+6	34.5	0
+7	34.5	0
+8	34.5	0
+9	34.5	0
+10	34.5	0
+11	34.5	0
+12	34.5	0
+13	34.5	0
+14	34.5	0
+15	34.5	0
+16	34.5	0
+17	34.5	0
+18	34.5	0
+19	34.5	0
+20	34.5	0
+21	34.5	0
+22	34.5	0
+23	34.5	0
+24	34.5	0
+25	34.5	0
+26	34.5	0
+27	34.5	0
+28	34.5	0
+29	34.5	0
+30	34.5	0
+31	34.5	0
+32	34.5	0
+33	34.5	0
+34	34.5	0
+35	34.5	0
+36	34.5	0
+37	34.5	0
+38	34.5	0
+39	34.5	0
+40	34.5	0
+41	34.5	0
+42	34.5	0
+43	34.5	0
+44	34.5	0
+45	34.5	0
+46	34.5	0
+47	34.5	0
+48	34.5	0
+49	34.5	0
+50	34.5	0
+51	34.5	0
+52	34.5	0
+53	34.5	0
+54	34.5	0
+55	34.5	0
+56	34.5	0
+57	34.5	0
+58	34.5	0
+59	34.5	0
+60	34.5	0
+61	34.5	0
+62	34.5	0
+63	34.5	0
+64	34.5	0
+65	34.5	0
+66	34.5	0
+67	34.5	0
+68	34.5	0
+69	34.5	0
+70	34.5	0
+71	34.5	0
+72	34.5	0
+73	34.5	0
+74	34.5	0
+75	34.5	0
+76	34.5	0
+77	34.5	0
+78	34.5	0
+79	34.5	0
+80	34.5	0
+81	34.5	0
+82	34.5	0
+83	34.5	0
+84	34.5	0
+85	34.5	0
+86	34.5	0
+87	34.5	0
+88	34.5	0
+89	34.5	0
+90	34.5	0
+91	34.5	0
+92	34.5	0
+93	34.5	0
+94	34.5	0
+95	34.5	0
+96	34.5	0
+97	34.5	0
+98	34.5	0
+99	34.5	0
+100	34.5	0
+101	34.5	0
+102	34.5	0
+103	34.5	0
+104	34.5	0
+105	34.5	0
+106	34.5	0
+107	34.5	0
+108	34.5	0
+109	34.5	0
+110	34.5	0
+111	34.5	0
+112	34.5	0
+113	34.5	0
+114	34.5	0
+115	34.5	0
+116	34.5	0
+117	34.5	0
+118	34.5	0
+119	34.5	0
+120	34.5	0
+121	34.5	0
+122	34.5	0
+123	34.5	0
+124	34.5	0
+125	34.5	0
+126	34.5	0
+127	34.5	0
+128	34.5	0
+129	34.5	0
+130	34.5	0
+131	34.5	0
+132	34.5	0
+133	34.5	0
+134	34.5	0
+135	34.5	0
+136	34.5	0
+137	34.5	0
+138	34.5	0
+139	34.5	0
+140	34.5	0
+141	34.5	0
+142	34.5	0
+143	34.5	0
+144	34.5	0
+145	34.5	0
+146	34.5	0
+147	34.5	0
+148	34.5	0
+149	34.5	0
+150	34.5	0
+151	34.5	0
+152	34.5	0
+153	34.5	0
+154	34.5	0
+155	34.5	0
+156	34.5	0
+157	34.5	0
+158	34.5	0
+159	34.5	0
+160	34.5	0
+161	34.5	0
+162	34.5	0
+163	34.5	0
+164	34.5	0
+165	34.5	0
+166	34.5	0
+167	34.5	0
+168	34.5	0
+169	34.5	0
+170	34.5	0
+171	34.5	0
+172	34.5	0
+173	34.5	0
+174	34.5	0
+175	34.5	0
+176	34.5	0
+177	34.5	0
+178	34.5	0
+179	34.5	0
+180	34.5	0
+181	34.5	0
+182	34.5	0
+183	34.5	0
+184	34.5	0
+185	34.5	0
+186	34.5	0
+187	34.5	0
+188	34.5	0
+189	34.5	0
+190	34.5	0
+191	34.5	0
+192	34.5	0
+193	34.5	0
+194	34.5	0
+195	34.5	0
+196	34.5	0
+197	34.5	0
+198	34.5	0
+199	34.5	0
+200	34.5	0
+201	34.5	0
+202	34.5	0
+203	34.5	0
+204	34.5	0
+205	34.5	0
+206	34.5	0
+207	34.5	0
+208	34.5	0
+209	34.5	0
+210	34.5	0
+211	34.5	0
+212	34.5	0
+213	34.5	0
+214	34.5	0
+215	34.5	0
+216	34.5	0
+217	34.5	0
+218	34.5	0
+219	34.5	0
+220	34.5	0
+221	34.5	0
+222	34.5	0
+223	34.5	0
+224	34.5	0
+225	34.5	0
+226	34.5	0
+227	34.5	0
+228	34.5	0
+229	34.5	0
+230	34.5	0
+231	34.5	0
+232	34.5	0
+233	34.5	0
+234	34.5	0
+235	34.5	0
+236	34.5	0
+237	34.5	0
+238	34.5	0
+239	34.5	0
+240	34.5	0
+241	34.5	0
+242	34.5	0
+243	34.5	0
+244	34.5	0
+245	34.5	0
+246	34.5	0
+247	34.5	0
+248	34.5	0
+249	34.5	0
+250	34.5	0
+251	34.5	0
+252	34.5	0
+253	34.5	0
+254	34.5	0
+255	34.5	0
+256	34.5	0
+257	34.5	0
+258	34.5	0
+259	34.5	0
+260	34.5	0
+261	34.5	0
+262	34.5	0
+263	34.5	0
+264	34.5	0
+265	34.5	0
+266	34.5	0
+267	34.5	0
+268	34.5	0
+269	34.5	0
+270	34.5	0
+271	34.5	0
+272	34.5	0
+273	34.5	0
+274	34.5	0
+275	34.5	0
+276	34.5	0
+277	34.5	0
+278	34.5	0
+279	34.5	0
+280	34.5	0
+281	34.5	0
+282	34.5	0
+283	34.5	0
+284	34.5	0
+285	34.5	0
+286	34.5	0
+287	34.5	0
+288	34.5	0
+289	34.5	0
+290	34.5	0
+291	34.5	0
+292	34.5	0
+293	34.5	0
+294	34.5	0
+295	34.5	0
+296	34.5	0
+297	34.5	0
+298	34.5	0
+299	34.5	0
+300	34.5	0
+301	34.5	0
+302	34.5	0
+303	34.5	0
+304	34.5	0
+305	34.5	0
+306	34.5	0
+307	34.5	0
+308	34.5	0
+309	34.5	0
+310	34.5	0
+311	34.5	0
+312	34.5	0
+313	34.5	0
+314	34.5	0
+315	34.5	0
+316	34.5	0
+317	34.5	0
+318	34.5	0
+319	34.5	0
+320	34.5	0
+321	34.5	0
+322	34.5	0
+323	34.5	0
+324	34.5	0
+325	34.5	0
+326	34.5	0
+327	34.5	0
+328	34.5	0
+329	34.5	0
+330	34.5	0
+331	34.5	0
+332	34.5	0
+333	34.5	0
+334	34.5	0
+335	34.5	0
+336	34.5	0
+337	34.5	0
+338	34.5	0
+339	34.5	0
+340	34.5	0
+341	34.5	0
+342	34.5	0
+343	34.5	0
+344	34.5	0
+345	34.5	0
+346	34.5	0
+347	34.5	0
+348	34.5	0
+349	34.5	0
+350	34.5	0
+351	34.5	0
+352	34.5	0
+353	34.5	0
+354	34.5	0
+355	34.5	0
+356	34.5	0
+357	34.5	0
+358	34.5	0
+359	34.5	0
+360	34.5	0
+0	35	0
+1	35	0
+2	35	0
+3	35	0
+4	35	0
+5	35	0
+6	35	0
+7	35	0
+8	35	0
+9	35	0
+10	35	0
+11	35	0
+12	35	0
+13	35	0
+14	35	0
+15	35	0
+16	35	0
+17	35	0
+18	35	0
+19	35	0
+20	35	0
+21	35	0
+22	35	0
+23	35	0
+24	35	0
+25	35	0
+26	35	0
+27	35	0
+28	35	0
+29	35	0
+30	35	0
+31	35	0
+32	35	0
+33	35	0
+34	35	0
+35	35	0
+36	35	0
+37	35	0
+38	35	0
+39	35	0
+40	35	0
+41	35	0
+42	35	0
+43	35	0
+44	35	0
+45	35	0
+46	35	0
+47	35	0
+48	35	0
+49	35	0
+50	35	0
+51	35	0
+52	35	0
+53	35	0
+54	35	0
+55	35	0
+56	35	0
+57	35	0
+58	35	0
+59	35	0
+60	35	0
+61	35	0
+62	35	0
+63	35	0
+64	35	0
+65	35	0
+66	35	0
+67	35	0
+68	35	0
+69	35	0
+70	35	0
+71	35	0
+72	35	0
+73	35	0
+74	35	0
+75	35	0
+76	35	0
+77	35	0
+78	35	0
+79	35	0
+80	35	0
+81	35	0
+82	35	0
+83	35	0
+84	35	0
+85	35	0
+86	35	0
+87	35	0
+88	35	0
+89	35	0
+90	35	0
+91	35	0
+92	35	0
+93	35	0
+94	35	0
+95	35	0
+96	35	0
+97	35	0
+98	35	0
+99	35	0
+100	35	0
+101	35	0
+102	35	0
+103	35	0
+104	35	0
+105	35	0
+106	35	0
+107	35	0
+108	35	0
+109	35	0
+110	35	0
+111	35	0
+112	35	0
+113	35	0
+114	35	0
+115	35	0
+116	35	0
+117	35	0
+118	35	0
+119	35	0
+120	35	0
+121	35	0
+122	35	0
+123	35	0
+124	35	0
+125	35	0
+126	35	0
+127	35	0
+128	35	0
+129	35	0
+130	35	0
+131	35	0
+132	35	0
+133	35	0
+134	35	0
+135	35	0
+136	35	0
+137	35	0
+138	35	0
+139	35	0
+140	35	0
+141	35	0
+142	35	0
+143	35	0
+144	35	0
+145	35	0
+146	35	0
+147	35	0
+148	35	0
+149	35	0
+150	35	0
+151	35	0
+152	35	0
+153	35	0
+154	35	0
+155	35	0
+156	35	0
+157	35	0
+158	35	0
+159	35	0
+160	35	0
+161	35	0
+162	35	0
+163	35	0
+164	35	0
+165	35	0
+166	35	0
+167	35	0
+168	35	0
+169	35	0
+170	35	0
+171	35	0
+172	35	0
+173	35	0
+174	35	0
+175	35	0
+176	35	0
+177	35	0
+178	35	0
+179	35	0
+180	35	0
+181	35	0
+182	35	0
+183	35	0
+184	35	0
+185	35	0
+186	35	0
+187	35	0
+188	35	0
+189	35	0
+190	35	0
+191	35	0
+192	35	0
+193	35	0
+194	35	0
+195	35	0
+196	35	0
+197	35	0
+198	35	0
+199	35	0
+200	35	0
+201	35	0
+202	35	0
+203	35	0
+204	35	0
+205	35	0
+206	35	0
+207	35	0
+208	35	0
+209	35	0
+210	35	0
+211	35	0
+212	35	0
+213	35	0
+214	35	0
+215	35	0
+216	35	0
+217	35	0
+218	35	0
+219	35	0
+220	35	0
+221	35	0
+222	35	0
+223	35	0
+224	35	0
+225	35	0
+226	35	0
+227	35	0
+228	35	0
+229	35	0
+230	35	0
+231	35	0
+232	35	0
+233	35	0
+234	35	0
+235	35	0
+236	35	0
+237	35	0
+238	35	0
+239	35	0
+240	35	0
+241	35	0
+242	35	0
+243	35	0
+244	35	0
+245	35	0
+246	35	0
+247	35	0
+248	35	0
+249	35	0
+250	35	0
+251	35	0
+252	35	0
+253	35	0
+254	35	0
+255	35	0
+256	35	0
+257	35	0
+258	35	0
+259	35	0
+260	35	0
+261	35	0
+262	35	0
+263	35	0
+264	35	0
+265	35	0
+266	35	0
+267	35	0
+268	35	0
+269	35	0
+270	35	0
+271	35	0
+272	35	0
+273	35	0
+274	35	0
+275	35	0
+276	35	0
+277	35	0
+278	35	0
+279	35	0
+280	35	0
+281	35	0
+282	35	0
+283	35	0
+284	35	0
+285	35	0
+286	35	0
+287	35	0
+288	35	0
+289	35	0
+290	35	0
+291	35	0
+292	35	0
+293	35	0
+294	35	0
+295	35	0
+296	35	0
+297	35	0
+298	35	0
+299	35	0
+300	35	0
+301	35	0
+302	35	0
+303	35	0
+304	35	0
+305	35	0
+306	35	0
+307	35	0
+308	35	0
+309	35	0
+310	35	0
+311	35	0
+312	35	0
+313	35	0
+314	35	0
+315	35	0
+316	35	0
+317	35	0
+318	35	0
+319	35	0
+320	35	0
+321	35	0
+322	35	0
+323	35	0
+324	35	0
+325	35	0
+326	35	0
+327	35	0
+328	35	0
+329	35	0
+330	35	0
+331	35	0
+332	35	0
+333	35	0
+334	35	0
+335	35	0
+336	35	0
+337	35	0
+338	35	0
+339	35	0
+340	35	0
+341	35	0
+342	35	0
+343	35	0
+344	35	0
+345	35	0
+346	35	0
+347	35	0
+348	35	0
+349	35	0
+350	35	0
+351	35	0
+352	35	0
+353	35	0
+354	35	0
+355	35	0
+356	35	0
+357	35	0
+358	35	0
+359	35	0
+360	35	0
+0	35.5	0
+1	35.5	0
+2	35.5	0
+3	35.5	0
+4	35.5	0
+5	35.5	0
+6	35.5	0
+7	35.5	0
+8	35.5	0
+9	35.5	0
+10	35.5	0
+11	35.5	0
+12	35.5	0
+13	35.5	0
+14	35.5	0
+15	35.5	0
+16	35.5	0
+17	35.5	0
+18	35.5	0
+19	35.5	0
+20	35.5	0
+21	35.5	0
+22	35.5	0
+23	35.5	0
+24	35.5	0
+25	35.5	0
+26	35.5	0
+27	35.5	0
+28	35.5	0
+29	35.5	0
+30	35.5	0
+31	35.5	0
+32	35.5	0
+33	35.5	0
+34	35.5	0
+35	35.5	0
+36	35.5	0
+37	35.5	0
+38	35.5	0
+39	35.5	0
+40	35.5	0
+41	35.5	0
+42	35.5	0
+43	35.5	0
+44	35.5	0
+45	35.5	0
+46	35.5	0
+47	35.5	0
+48	35.5	0
+49	35.5	0
+50	35.5	0
+51	35.5	0
+52	35.5	0
+53	35.5	0
+54	35.5	0
+55	35.5	0
+56	35.5	0
+57	35.5	0
+58	35.5	0
+59	35.5	0
+60	35.5	0
+61	35.5	0
+62	35.5	0
+63	35.5	0
+64	35.5	0
+65	35.5	0
+66	35.5	0
+67	35.5	0
+68	35.5	0
+69	35.5	0
+70	35.5	0
+71	35.5	0
+72	35.5	0
+73	35.5	0
+74	35.5	0
+75	35.5	0
+76	35.5	0
+77	35.5	0
+78	35.5	0
+79	35.5	0
+80	35.5	0
+81	35.5	0
+82	35.5	0
+83	35.5	0
+84	35.5	0
+85	35.5	0
+86	35.5	0
+87	35.5	0
+88	35.5	0
+89	35.5	0
+90	35.5	0
+91	35.5	0
+92	35.5	0
+93	35.5	0
+94	35.5	0
+95	35.5	0
+96	35.5	0
+97	35.5	0
+98	35.5	0
+99	35.5	0
+100	35.5	0
+101	35.5	0
+102	35.5	0
+103	35.5	0
+104	35.5	0
+105	35.5	0
+106	35.5	0
+107	35.5	0
+108	35.5	0
+109	35.5	0
+110	35.5	0
+111	35.5	0
+112	35.5	0
+113	35.5	0
+114	35.5	0
+115	35.5	0
+116	35.5	0
+117	35.5	0
+118	35.5	0
+119	35.5	0
+120	35.5	0
+121	35.5	0
+122	35.5	0
+123	35.5	0
+124	35.5	0
+125	35.5	0
+126	35.5	0
+127	35.5	0
+128	35.5	0
+129	35.5	0
+130	35.5	0
+131	35.5	0
+132	35.5	0
+133	35.5	0
+134	35.5	0
+135	35.5	0
+136	35.5	0
+137	35.5	0
+138	35.5	0
+139	35.5	0
+140	35.5	0
+141	35.5	0
+142	35.5	0
+143	35.5	0
+144	35.5	0
+145	35.5	0
+146	35.5	0
+147	35.5	0
+148	35.5	0
+149	35.5	0
+150	35.5	0
+151	35.5	0
+152	35.5	0
+153	35.5	0
+154	35.5	0
+155	35.5	0
+156	35.5	0
+157	35.5	0
+158	35.5	0
+159	35.5	0
+160	35.5	0
+161	35.5	0
+162	35.5	0
+163	35.5	0
+164	35.5	0
+165	35.5	0
+166	35.5	0
+167	35.5	0
+168	35.5	0
+169	35.5	0
+170	35.5	0
+171	35.5	0
+172	35.5	0
+173	35.5	0
+174	35.5	0
+175	35.5	0
+176	35.5	0
+177	35.5	0
+178	35.5	0
+179	35.5	0
+180	35.5	0
+181	35.5	0
+182	35.5	0
+183	35.5	0
+184	35.5	0
+185	35.5	0
+186	35.5	0
+187	35.5	0
+188	35.5	0
+189	35.5	0
+190	35.5	0
+191	35.5	0
+192	35.5	0
+193	35.5	0
+194	35.5	0
+195	35.5	0
+196	35.5	0
+197	35.5	0
+198	35.5	0
+199	35.5	0
+200	35.5	0
+201	35.5	0
+202	35.5	0
+203	35.5	0
+204	35.5	0
+205	35.5	0
+206	35.5	0
+207	35.5	0
+208	35.5	0
+209	35.5	0
+210	35.5	0
+211	35.5	0
+212	35.5	0
+213	35.5	0
+214	35.5	0
+215	35.5	0
+216	35.5	0
+217	35.5	0
+218	35.5	0
+219	35.5	0
+220	35.5	0
+221	35.5	0
+222	35.5	0
+223	35.5	0
+224	35.5	0
+225	35.5	0
+226	35.5	0
+227	35.5	0
+228	35.5	0
+229	35.5	0
+230	35.5	0
+231	35.5	0
+232	35.5	0
+233	35.5	0
+234	35.5	0
+235	35.5	0
+236	35.5	0
+237	35.5	0
+238	35.5	0
+239	35.5	0
+240	35.5	0
+241	35.5	0
+242	35.5	0
+243	35.5	0
+244	35.5	0
+245	35.5	0
+246	35.5	0
+247	35.5	0
+248	35.5	0
+249	35.5	0
+250	35.5	0
+251	35.5	0
+252	35.5	0
+253	35.5	0
+254	35.5	0
+255	35.5	0
+256	35.5	0
+257	35.5	0
+258	35.5	0
+259	35.5	0
+260	35.5	0
+261	35.5	0
+262	35.5	0
+263	35.5	0
+264	35.5	0
+265	35.5	0
+266	35.5	0
+267	35.5	0
+268	35.5	0
+269	35.5	0
+270	35.5	0
+271	35.5	0
+272	35.5	0
+273	35.5	0
+274	35.5	0
+275	35.5	0
+276	35.5	0
+277	35.5	0
+278	35.5	0
+279	35.5	0
+280	35.5	0
+281	35.5	0
+282	35.5	0
+283	35.5	0
+284	35.5	0
+285	35.5	0
+286	35.5	0
+287	35.5	0
+288	35.5	0
+289	35.5	0
+290	35.5	0
+291	35.5	0
+292	35.5	0
+293	35.5	0
+294	35.5	0
+295	35.5	0
+296	35.5	0
+297	35.5	0
+298	35.5	0
+299	35.5	0
+300	35.5	0
+301	35.5	0
+302	35.5	0
+303	35.5	0
+304	35.5	0
+305	35.5	0
+306	35.5	0
+307	35.5	0
+308	35.5	0
+309	35.5	0
+310	35.5	0
+311	35.5	0
+312	35.5	0
+313	35.5	0
+314	35.5	0
+315	35.5	0
+316	35.5	0
+317	35.5	0
+318	35.5	0
+319	35.5	0
+320	35.5	0
+321	35.5	0
+322	35.5	0
+323	35.5	0
+324	35.5	0
+325	35.5	0
+326	35.5	0
+327	35.5	0
+328	35.5	0
+329	35.5	0
+330	35.5	0
+331	35.5	0
+332	35.5	0
+333	35.5	0
+334	35.5	0
+335	35.5	0
+336	35.5	0
+337	35.5	0
+338	35.5	0
+339	35.5	0
+340	35.5	0
+341	35.5	0
+342	35.5	0
+343	35.5	0
+344	35.5	0
+345	35.5	0
+346	35.5	0
+347	35.5	0
+348	35.5	0
+349	35.5	0
+350	35.5	0
+351	35.5	0
+352	35.5	0
+353	35.5	0
+354	35.5	0
+355	35.5	0
+356	35.5	0
+357	35.5	0
+358	35.5	0
+359	35.5	0
+360	35.5	0
+0	36	0
+1	36	0
+2	36	0
+3	36	0
+4	36	0
+5	36	0
+6	36	0
+7	36	0
+8	36	0
+9	36	0
+10	36	0
+11	36	0
+12	36	0
+13	36	0
+14	36	0
+15	36	0
+16	36	0
+17	36	0
+18	36	0
+19	36	0
+20	36	0
+21	36	0
+22	36	0
+23	36	0
+24	36	0
+25	36	0
+26	36	0
+27	36	0
+28	36	0
+29	36	0
+30	36	0
+31	36	0
+32	36	0
+33	36	0
+34	36	0
+35	36	0
+36	36	0
+37	36	0
+38	36	0
+39	36	0
+40	36	0
+41	36	0
+42	36	0
+43	36	0
+44	36	0
+45	36	0
+46	36	0
+47	36	0
+48	36	0
+49	36	0
+50	36	0
+51	36	0
+52	36	0
+53	36	0
+54	36	0
+55	36	0
+56	36	0
+57	36	0
+58	36	0
+59	36	0
+60	36	0
+61	36	0
+62	36	0
+63	36	0
+64	36	0
+65	36	0
+66	36	0
+67	36	0
+68	36	0
+69	36	0
+70	36	0
+71	36	0
+72	36	0
+73	36	0
+74	36	0
+75	36	0
+76	36	0
+77	36	0
+78	36	0
+79	36	0
+80	36	0
+81	36	0
+82	36	0
+83	36	0
+84	36	0
+85	36	0
+86	36	0
+87	36	0
+88	36	0
+89	36	0
+90	36	0
+91	36	0
+92	36	0
+93	36	0
+94	36	0
+95	36	0
+96	36	0
+97	36	0
+98	36	0
+99	36	0
+100	36	0
+101	36	0
+102	36	0
+103	36	0
+104	36	0
+105	36	0
+106	36	0
+107	36	0
+108	36	0
+109	36	0
+110	36	0
+111	36	0
+112	36	0
+113	36	0
+114	36	0
+115	36	0
+116	36	0
+117	36	0
+118	36	0
+119	36	0
+120	36	0
+121	36	0
+122	36	0
+123	36	0
+124	36	0
+125	36	0
+126	36	0
+127	36	0
+128	36	0
+129	36	0
+130	36	0
+131	36	0
+132	36	0
+133	36	0
+134	36	0
+135	36	0
+136	36	0
+137	36	0
+138	36	0
+139	36	0
+140	36	0
+141	36	0
+142	36	0
+143	36	0
+144	36	0
+145	36	0
+146	36	0
+147	36	0
+148	36	0
+149	36	0
+150	36	0
+151	36	0
+152	36	0
+153	36	0
+154	36	0
+155	36	0
+156	36	0
+157	36	0
+158	36	0
+159	36	0
+160	36	0
+161	36	0
+162	36	0
+163	36	0
+164	36	0
+165	36	0
+166	36	0
+167	36	0
+168	36	0
+169	36	0
+170	36	0
+171	36	0
+172	36	0
+173	36	0
+174	36	0
+175	36	0
+176	36	0
+177	36	0
+178	36	0
+179	36	0
+180	36	0
+181	36	0
+182	36	0
+183	36	0
+184	36	0
+185	36	0
+186	36	0
+187	36	0
+188	36	0
+189	36	0
+190	36	0
+191	36	0
+192	36	0
+193	36	0
+194	36	0
+195	36	0
+196	36	0
+197	36	0
+198	36	0
+199	36	0
+200	36	0
+201	36	0
+202	36	0
+203	36	0
+204	36	0
+205	36	0
+206	36	0
+207	36	0
+208	36	0
+209	36	0
+210	36	0
+211	36	0
+212	36	0
+213	36	0
+214	36	0
+215	36	0
+216	36	0
+217	36	0
+218	36	0
+219	36	0
+220	36	0
+221	36	0
+222	36	0
+223	36	0
+224	36	0
+225	36	0
+226	36	0
+227	36	0
+228	36	0
+229	36	0
+230	36	0
+231	36	0
+232	36	0
+233	36	0
+234	36	0
+235	36	0
+236	36	0
+237	36	0
+238	36	0
+239	36	0
+240	36	0
+241	36	0
+242	36	0
+243	36	0
+244	36	0
+245	36	0
+246	36	0
+247	36	0
+248	36	0
+249	36	0
+250	36	0
+251	36	0
+252	36	0
+253	36	0
+254	36	0
+255	36	0
+256	36	0
+257	36	0
+258	36	0
+259	36	0
+260	36	0
+261	36	0
+262	36	0
+263	36	0
+264	36	0
+265	36	0
+266	36	0
+267	36	0
+268	36	0
+269	36	0
+270	36	0
+271	36	0
+272	36	0
+273	36	0
+274	36	0
+275	36	0
+276	36	0
+277	36	0
+278	36	0
+279	36	0
+280	36	0
+281	36	0
+282	36	0
+283	36	0
+284	36	0
+285	36	0
+286	36	0
+287	36	0
+288	36	0
+289	36	0
+290	36	0
+291	36	0
+292	36	0
+293	36	0
+294	36	0
+295	36	0
+296	36	0
+297	36	0
+298	36	0
+299	36	0
+300	36	0
+301	36	0
+302	36	0
+303	36	0
+304	36	0
+305	36	0
+306	36	0
+307	36	0
+308	36	0
+309	36	0
+310	36	0
+311	36	0
+312	36	0
+313	36	0
+314	36	0
+315	36	0
+316	36	0
+317	36	0
+318	36	0
+319	36	0
+320	36	0
+321	36	0
+322	36	0
+323	36	0
+324	36	0
+325	36	0
+326	36	0
+327	36	0
+328	36	0
+329	36	0
+330	36	0
+331	36	0
+332	36	0
+333	36	0
+334	36	0
+335	36	0
+336	36	0
+337	36	0
+338	36	0
+339	36	0
+340	36	0
+341	36	0
+342	36	0
+343	36	0
+344	36	0
+345	36	0
+346	36	0
+347	36	0
+348	36	0
+349	36	0
+350	36	0
+351	36	0
+352	36	0
+353	36	0
+354	36	0
+355	36	0
+356	36	0
+357	36	0
+358	36	0
+359	36	0
+360	36	0
+0	36.5	0
+1	36.5	0
+2	36.5	0
+3	36.5	0
+4	36.5	0
+5	36.5	0
+6	36.5	0
+7	36.5	0
+8	36.5	0
+9	36.5	0
+10	36.5	0
+11	36.5	0
+12	36.5	0
+13	36.5	0
+14	36.5	0
+15	36.5	0
+16	36.5	0
+17	36.5	0
+18	36.5	0
+19	36.5	0
+20	36.5	0
+21	36.5	0
+22	36.5	0
+23	36.5	0
+24	36.5	0
+25	36.5	0
+26	36.5	0
+27	36.5	0
+28	36.5	0
+29	36.5	0
+30	36.5	0
+31	36.5	0
+32	36.5	0
+33	36.5	0
+34	36.5	0
+35	36.5	0
+36	36.5	0
+37	36.5	0
+38	36.5	0
+39	36.5	0
+40	36.5	0
+41	36.5	0
+42	36.5	0
+43	36.5	0
+44	36.5	0
+45	36.5	0
+46	36.5	0
+47	36.5	0
+48	36.5	0
+49	36.5	0
+50	36.5	0
+51	36.5	0
+52	36.5	0
+53	36.5	0
+54	36.5	0
+55	36.5	0
+56	36.5	0
+57	36.5	0
+58	36.5	0
+59	36.5	0
+60	36.5	0
+61	36.5	0
+62	36.5	0
+63	36.5	0
+64	36.5	0
+65	36.5	0
+66	36.5	0
+67	36.5	0
+68	36.5	0
+69	36.5	0
+70	36.5	0
+71	36.5	0
+72	36.5	0
+73	36.5	0
+74	36.5	0
+75	36.5	0
+76	36.5	0
+77	36.5	0
+78	36.5	0
+79	36.5	0
+80	36.5	0
+81	36.5	0
+82	36.5	0
+83	36.5	0
+84	36.5	0
+85	36.5	0
+86	36.5	0
+87	36.5	0
+88	36.5	0
+89	36.5	0
+90	36.5	0
+91	36.5	0
+92	36.5	0
+93	36.5	0
+94	36.5	0
+95	36.5	0
+96	36.5	0
+97	36.5	0
+98	36.5	0
+99	36.5	0
+100	36.5	0
+101	36.5	0
+102	36.5	0
+103	36.5	0
+104	36.5	0
+105	36.5	0
+106	36.5	0
+107	36.5	0
+108	36.5	0
+109	36.5	0
+110	36.5	0
+111	36.5	0
+112	36.5	0
+113	36.5	0
+114	36.5	0
+115	36.5	0
+116	36.5	0
+117	36.5	0
+118	36.5	0
+119	36.5	0
+120	36.5	0
+121	36.5	0
+122	36.5	0
+123	36.5	0
+124	36.5	0
+125	36.5	0
+126	36.5	0
+127	36.5	0
+128	36.5	0
+129	36.5	0
+130	36.5	0
+131	36.5	0
+132	36.5	0
+133	36.5	0
+134	36.5	0
+135	36.5	0
+136	36.5	0
+137	36.5	0
+138	36.5	0
+139	36.5	0
+140	36.5	0
+141	36.5	0
+142	36.5	0
+143	36.5	0
+144	36.5	0
+145	36.5	0
+146	36.5	0
+147	36.5	0
+148	36.5	0
+149	36.5	0
+150	36.5	0
+151	36.5	0
+152	36.5	0
+153	36.5	0
+154	36.5	0
+155	36.5	0
+156	36.5	0
+157	36.5	0
+158	36.5	0
+159	36.5	0
+160	36.5	0
+161	36.5	0
+162	36.5	0
+163	36.5	0
+164	36.5	0
+165	36.5	0
+166	36.5	0
+167	36.5	0
+168	36.5	0
+169	36.5	0
+170	36.5	0
+171	36.5	0
+172	36.5	0
+173	36.5	0
+174	36.5	0
+175	36.5	0
+176	36.5	0
+177	36.5	0
+178	36.5	0
+179	36.5	0
+180	36.5	0
+181	36.5	0
+182	36.5	0
+183	36.5	0
+184	36.5	0
+185	36.5	0
+186	36.5	0
+187	36.5	0
+188	36.5	0
+189	36.5	0
+190	36.5	0
+191	36.5	0
+192	36.5	0
+193	36.5	0
+194	36.5	0
+195	36.5	0
+196	36.5	0
+197	36.5	0
+198	36.5	0
+199	36.5	0
+200	36.5	0
+201	36.5	0
+202	36.5	0
+203	36.5	0
+204	36.5	0
+205	36.5	0
+206	36.5	0
+207	36.5	0
+208	36.5	0
+209	36.5	0
+210	36.5	0
+211	36.5	0
+212	36.5	0
+213	36.5	0
+214	36.5	0
+215	36.5	0
+216	36.5	0
+217	36.5	0
+218	36.5	0
+219	36.5	0
+220	36.5	0
+221	36.5	0
+222	36.5	0
+223	36.5	0
+224	36.5	0
+225	36.5	0
+226	36.5	0
+227	36.5	0
+228	36.5	0
+229	36.5	0
+230	36.5	0
+231	36.5	0
+232	36.5	0
+233	36.5	0
+234	36.5	0
+235	36.5	0
+236	36.5	0
+237	36.5	0
+238	36.5	0
+239	36.5	0
+240	36.5	0
+241	36.5	0
+242	36.5	0
+243	36.5	0
+244	36.5	0
+245	36.5	0
+246	36.5	0
+247	36.5	0
+248	36.5	0
+249	36.5	0
+250	36.5	0
+251	36.5	0
+252	36.5	0
+253	36.5	0
+254	36.5	0
+255	36.5	0
+256	36.5	0
+257	36.5	0
+258	36.5	0
+259	36.5	0
+260	36.5	0
+261	36.5	0
+262	36.5	0
+263	36.5	0
+264	36.5	0
+265	36.5	0
+266	36.5	0
+267	36.5	0
+268	36.5	0
+269	36.5	0
+270	36.5	0
+271	36.5	0
+272	36.5	0
+273	36.5	0
+274	36.5	0
+275	36.5	0
+276	36.5	0
+277	36.5	0
+278	36.5	0
+279	36.5	0
+280	36.5	0
+281	36.5	0
+282	36.5	0
+283	36.5	0
+284	36.5	0
+285	36.5	0
+286	36.5	0
+287	36.5	0
+288	36.5	0
+289	36.5	0
+290	36.5	0
+291	36.5	0
+292	36.5	0
+293	36.5	0
+294	36.5	0
+295	36.5	0
+296	36.5	0
+297	36.5	0
+298	36.5	0
+299	36.5	0
+300	36.5	0
+301	36.5	0
+302	36.5	0
+303	36.5	0
+304	36.5	0
+305	36.5	0
+306	36.5	0
+307	36.5	0
+308	36.5	0
+309	36.5	0
+310	36.5	0
+311	36.5	0
+312	36.5	0
+313	36.5	0
+314	36.5	0
+315	36.5	0
+316	36.5	0
+317	36.5	0
+318	36.5	0
+319	36.5	0
+320	36.5	0
+321	36.5	0
+322	36.5	0
+323	36.5	0
+324	36.5	0
+325	36.5	0
+326	36.5	0
+327	36.5	0
+328	36.5	0
+329	36.5	0
+330	36.5	0
+331	36.5	0
+332	36.5	0
+333	36.5	0
+334	36.5	0
+335	36.5	0
+336	36.5	0
+337	36.5	0
+338	36.5	0
+339	36.5	0
+340	36.5	0
+341	36.5	0
+342	36.5	0
+343	36.5	0
+344	36.5	0
+345	36.5	0
+346	36.5	0
+347	36.5	0
+348	36.5	0
+349	36.5	0
+350	36.5	0
+351	36.5	0
+352	36.5	0
+353	36.5	0
+354	36.5	0
+355	36.5	0
+356	36.5	0
+357	36.5	0
+358	36.5	0
+359	36.5	0
+360	36.5	0
+0	37	0
+1	37	0
+2	37	0
+3	37	0
+4	37	0
+5	37	0
+6	37	0
+7	37	0
+8	37	0
+9	37	0
+10	37	0
+11	37	0
+12	37	0
+13	37	0
+14	37	0
+15	37	0
+16	37	0
+17	37	0
+18	37	0
+19	37	0
+20	37	0
+21	37	0
+22	37	0
+23	37	0
+24	37	0
+25	37	0
+26	37	0
+27	37	0
+28	37	0
+29	37	0
+30	37	0
+31	37	0
+32	37	0
+33	37	0
+34	37	0
+35	37	0
+36	37	0
+37	37	0
+38	37	0
+39	37	0
+40	37	0
+41	37	0
+42	37	0
+43	37	0
+44	37	0
+45	37	0
+46	37	0
+47	37	0
+48	37	0
+49	37	0
+50	37	0
+51	37	0
+52	37	0
+53	37	0
+54	37	0
+55	37	0
+56	37	0
+57	37	0
+58	37	0
+59	37	0
+60	37	0
+61	37	0
+62	37	0
+63	37	0
+64	37	0
+65	37	0
+66	37	0
+67	37	0
+68	37	0
+69	37	0
+70	37	0
+71	37	0
+72	37	0
+73	37	0
+74	37	0
+75	37	0
+76	37	0
+77	37	0
+78	37	0
+79	37	0
+80	37	0
+81	37	0
+82	37	0
+83	37	0
+84	37	0
+85	37	0
+86	37	0
+87	37	0
+88	37	0
+89	37	0
+90	37	0
+91	37	0
+92	37	0
+93	37	0
+94	37	0
+95	37	0
+96	37	0
+97	37	0
+98	37	0
+99	37	0
+100	37	0
+101	37	0
+102	37	0
+103	37	0
+104	37	0
+105	37	0
+106	37	0
+107	37	0
+108	37	0
+109	37	0
+110	37	0
+111	37	0
+112	37	0
+113	37	0
+114	37	0
+115	37	0
+116	37	0
+117	37	0
+118	37	0
+119	37	0
+120	37	0
+121	37	0
+122	37	0
+123	37	0
+124	37	0
+125	37	0
+126	37	0
+127	37	0
+128	37	0
+129	37	0
+130	37	0
+131	37	0
+132	37	0
+133	37	0
+134	37	0
+135	37	0
+136	37	0
+137	37	0
+138	37	0
+139	37	0
+140	37	0
+141	37	0
+142	37	0
+143	37	0
+144	37	0
+145	37	0
+146	37	0
+147	37	0
+148	37	0
+149	37	0
+150	37	0
+151	37	0
+152	37	0
+153	37	0
+154	37	0
+155	37	0
+156	37	0
+157	37	0
+158	37	0
+159	37	0
+160	37	0
+161	37	0
+162	37	0
+163	37	0
+164	37	0
+165	37	0
+166	37	0
+167	37	0
+168	37	0
+169	37	0
+170	37	0
+171	37	0
+172	37	0
+173	37	0
+174	37	0
+175	37	0
+176	37	0
+177	37	0
+178	37	0
+179	37	0
+180	37	0
+181	37	0
+182	37	0
+183	37	0
+184	37	0
+185	37	0
+186	37	0
+187	37	0
+188	37	0
+189	37	0
+190	37	0
+191	37	0
+192	37	0
+193	37	0
+194	37	0
+195	37	0
+196	37	0
+197	37	0
+198	37	0
+199	37	0
+200	37	0
+201	37	0
+202	37	0
+203	37	0
+204	37	0
+205	37	0
+206	37	0
+207	37	0
+208	37	0
+209	37	0
+210	37	0
+211	37	0
+212	37	0
+213	37	0
+214	37	0
+215	37	0
+216	37	0
+217	37	0
+218	37	0
+219	37	0
+220	37	0
+221	37	0
+222	37	0
+223	37	0
+224	37	0
+225	37	0
+226	37	0
+227	37	0
+228	37	0
+229	37	0
+230	37	0
+231	37	0
+232	37	0
+233	37	0
+234	37	0
+235	37	0
+236	37	0
+237	37	0
+238	37	0
+239	37	0
+240	37	0
+241	37	0
+242	37	0
+243	37	0
+244	37	0
+245	37	0
+246	37	0
+247	37	0
+248	37	0
+249	37	0
+250	37	0
+251	37	0
+252	37	0
+253	37	0
+254	37	0
+255	37	0
+256	37	0
+257	37	0
+258	37	0
+259	37	0
+260	37	0
+261	37	0
+262	37	0
+263	37	0
+264	37	0
+265	37	0
+266	37	0
+267	37	0
+268	37	0
+269	37	0
+270	37	0
+271	37	0
+272	37	0
+273	37	0
+274	37	0
+275	37	0
+276	37	0
+277	37	0
+278	37	0
+279	37	0
+280	37	0
+281	37	0
+282	37	0
+283	37	0
+284	37	0
+285	37	0
+286	37	0
+287	37	0
+288	37	0
+289	37	0
+290	37	0
+291	37	0
+292	37	0
+293	37	0
+294	37	0
+295	37	0
+296	37	0
+297	37	0
+298	37	0
+299	37	0
+300	37	0
+301	37	0
+302	37	0
+303	37	0
+304	37	0
+305	37	0
+306	37	0
+307	37	0
+308	37	0
+309	37	0
+310	37	0
+311	37	0
+312	37	0
+313	37	0
+314	37	0
+315	37	0
+316	37	0
+317	37	0
+318	37	0
+319	37	0
+320	37	0
+321	37	0
+322	37	0
+323	37	0
+324	37	0
+325	37	0
+326	37	0
+327	37	0
+328	37	0
+329	37	0
+330	37	0
+331	37	0
+332	37	0
+333	37	0
+334	37	0
+335	37	0
+336	37	0
+337	37	0
+338	37	0
+339	37	0
+340	37	0
+341	37	0
+342	37	0
+343	37	0
+344	37	0
+345	37	0
+346	37	0
+347	37	0
+348	37	0
+349	37	0
+350	37	0
+351	37	0
+352	37	0
+353	37	0
+354	37	0
+355	37	0
+356	37	0
+357	37	0
+358	37	0
+359	37	0
+360	37	0
+0	37.5	0
+1	37.5	0
+2	37.5	0
+3	37.5	0
+4	37.5	0
+5	37.5	0
+6	37.5	0
+7	37.5	0
+8	37.5	0
+9	37.5	0
+10	37.5	0
+11	37.5	0
+12	37.5	0
+13	37.5	0
+14	37.5	0
+15	37.5	0
+16	37.5	0
+17	37.5	0
+18	37.5	0
+19	37.5	0
+20	37.5	0
+21	37.5	0
+22	37.5	0
+23	37.5	0
+24	37.5	0
+25	37.5	0
+26	37.5	0
+27	37.5	0
+28	37.5	0
+29	37.5	0
+30	37.5	0
+31	37.5	0
+32	37.5	0
+33	37.5	0
+34	37.5	0
+35	37.5	0
+36	37.5	0
+37	37.5	0
+38	37.5	0
+39	37.5	0
+40	37.5	0
+41	37.5	0
+42	37.5	0
+43	37.5	0
+44	37.5	0
+45	37.5	0
+46	37.5	0
+47	37.5	0
+48	37.5	0
+49	37.5	0
+50	37.5	0
+51	37.5	0
+52	37.5	0
+53	37.5	0
+54	37.5	0
+55	37.5	0
+56	37.5	0
+57	37.5	0
+58	37.5	0
+59	37.5	0
+60	37.5	0
+61	37.5	0
+62	37.5	0
+63	37.5	0
+64	37.5	0
+65	37.5	0
+66	37.5	0
+67	37.5	0
+68	37.5	0
+69	37.5	0
+70	37.5	0
+71	37.5	0
+72	37.5	0
+73	37.5	0
+74	37.5	0
+75	37.5	0
+76	37.5	0
+77	37.5	0
+78	37.5	0
+79	37.5	0
+80	37.5	0
+81	37.5	0
+82	37.5	0
+83	37.5	0
+84	37.5	0
+85	37.5	0
+86	37.5	0
+87	37.5	0
+88	37.5	0
+89	37.5	0
+90	37.5	0
+91	37.5	0
+92	37.5	0
+93	37.5	0
+94	37.5	0
+95	37.5	0
+96	37.5	0
+97	37.5	0
+98	37.5	0
+99	37.5	0
+100	37.5	0
+101	37.5	0
+102	37.5	0
+103	37.5	0
+104	37.5	0
+105	37.5	0
+106	37.5	0
+107	37.5	0
+108	37.5	0
+109	37.5	0
+110	37.5	0
+111	37.5	0
+112	37.5	0
+113	37.5	0
+114	37.5	0
+115	37.5	0
+116	37.5	0
+117	37.5	0
+118	37.5	0
+119	37.5	0
+120	37.5	0
+121	37.5	0
+122	37.5	0
+123	37.5	0
+124	37.5	0
+125	37.5	0
+126	37.5	0
+127	37.5	0
+128	37.5	0
+129	37.5	0
+130	37.5	0
+131	37.5	0
+132	37.5	0
+133	37.5	0
+134	37.5	0
+135	37.5	0
+136	37.5	0
+137	37.5	0
+138	37.5	0
+139	37.5	0
+140	37.5	0
+141	37.5	0
+142	37.5	0
+143	37.5	0
+144	37.5	0
+145	37.5	0
+146	37.5	0
+147	37.5	0
+148	37.5	0
+149	37.5	0
+150	37.5	0
+151	37.5	0
+152	37.5	0
+153	37.5	0
+154	37.5	0
+155	37.5	0
+156	37.5	0
+157	37.5	0
+158	37.5	0
+159	37.5	0
+160	37.5	0
+161	37.5	0
+162	37.5	0
+163	37.5	0
+164	37.5	0
+165	37.5	0
+166	37.5	0
+167	37.5	0
+168	37.5	0
+169	37.5	0
+170	37.5	0
+171	37.5	0
+172	37.5	0
+173	37.5	0
+174	37.5	0
+175	37.5	0
+176	37.5	0
+177	37.5	0
+178	37.5	0
+179	37.5	0
+180	37.5	0
+181	37.5	0
+182	37.5	0
+183	37.5	0
+184	37.5	0
+185	37.5	0
+186	37.5	0
+187	37.5	0
+188	37.5	0
+189	37.5	0
+190	37.5	0
+191	37.5	0
+192	37.5	0
+193	37.5	0
+194	37.5	0
+195	37.5	0
+196	37.5	0
+197	37.5	0
+198	37.5	0
+199	37.5	0
+200	37.5	0
+201	37.5	0
+202	37.5	0
+203	37.5	0
+204	37.5	0
+205	37.5	0
+206	37.5	0
+207	37.5	0
+208	37.5	0
+209	37.5	0
+210	37.5	0
+211	37.5	0
+212	37.5	0
+213	37.5	0
+214	37.5	0
+215	37.5	0
+216	37.5	0
+217	37.5	0
+218	37.5	0
+219	37.5	0
+220	37.5	0
+221	37.5	0
+222	37.5	0
+223	37.5	0
+224	37.5	0
+225	37.5	0
+226	37.5	0
+227	37.5	0
+228	37.5	0
+229	37.5	0
+230	37.5	0
+231	37.5	0
+232	37.5	0
+233	37.5	0
+234	37.5	0
+235	37.5	0
+236	37.5	0
+237	37.5	0
+238	37.5	0
+239	37.5	0
+240	37.5	0
+241	37.5	0
+242	37.5	0
+243	37.5	0
+244	37.5	0
+245	37.5	0
+246	37.5	0
+247	37.5	0
+248	37.5	0
+249	37.5	0
+250	37.5	0
+251	37.5	0
+252	37.5	0
+253	37.5	0
+254	37.5	0
+255	37.5	0
+256	37.5	0
+257	37.5	0
+258	37.5	0
+259	37.5	0
+260	37.5	0
+261	37.5	0
+262	37.5	0
+263	37.5	0
+264	37.5	0
+265	37.5	0
+266	37.5	0
+267	37.5	0
+268	37.5	0
+269	37.5	0
+270	37.5	0
+271	37.5	0
+272	37.5	0
+273	37.5	0
+274	37.5	0
+275	37.5	0
+276	37.5	0
+277	37.5	0
+278	37.5	0
+279	37.5	0
+280	37.5	0
+281	37.5	0
+282	37.5	0
+283	37.5	0
+284	37.5	0
+285	37.5	0
+286	37.5	0
+287	37.5	0
+288	37.5	0
+289	37.5	0
+290	37.5	0
+291	37.5	0
+292	37.5	0
+293	37.5	0
+294	37.5	0
+295	37.5	0
+296	37.5	0
+297	37.5	0
+298	37.5	0
+299	37.5	0
+300	37.5	0
+301	37.5	0
+302	37.5	0
+303	37.5	0
+304	37.5	0
+305	37.5	0
+306	37.5	0
+307	37.5	0
+308	37.5	0
+309	37.5	0
+310	37.5	0
+311	37.5	0
+312	37.5	0
+313	37.5	0
+314	37.5	0
+315	37.5	0
+316	37.5	0
+317	37.5	0
+318	37.5	0
+319	37.5	0
+320	37.5	0
+321	37.5	0
+322	37.5	0
+323	37.5	0
+324	37.5	0
+325	37.5	0
+326	37.5	0
+327	37.5	0
+328	37.5	0
+329	37.5	0
+330	37.5	0
+331	37.5	0
+332	37.5	0
+333	37.5	0
+334	37.5	0
+335	37.5	0
+336	37.5	0
+337	37.5	0
+338	37.5	0
+339	37.5	0
+340	37.5	0
+341	37.5	0
+342	37.5	0
+343	37.5	0
+344	37.5	0
+345	37.5	0
+346	37.5	0
+347	37.5	0
+348	37.5	0
+349	37.5	0
+350	37.5	0
+351	37.5	0
+352	37.5	0
+353	37.5	0
+354	37.5	0
+355	37.5	0
+356	37.5	0
+357	37.5	0
+358	37.5	0
+359	37.5	0
+360	37.5	0
+0	38	0
+1	38	0
+2	38	0
+3	38	0
+4	38	0
+5	38	0
+6	38	0
+7	38	0
+8	38	0
+9	38	0
+10	38	0
+11	38	0
+12	38	0
+13	38	0
+14	38	0
+15	38	0
+16	38	0
+17	38	0
+18	38	0
+19	38	0
+20	38	0
+21	38	0
+22	38	0
+23	38	0
+24	38	0
+25	38	0
+26	38	0
+27	38	0
+28	38	0
+29	38	0
+30	38	0
+31	38	0
+32	38	0
+33	38	0
+34	38	0
+35	38	0
+36	38	0
+37	38	0
+38	38	0
+39	38	0
+40	38	0
+41	38	0
+42	38	0
+43	38	0
+44	38	0
+45	38	0
+46	38	0
+47	38	0
+48	38	0
+49	38	0
+50	38	0
+51	38	0
+52	38	0
+53	38	0
+54	38	0
+55	38	0
+56	38	0
+57	38	0
+58	38	0
+59	38	0
+60	38	0
+61	38	0
+62	38	0
+63	38	0
+64	38	0
+65	38	0
+66	38	0
+67	38	0
+68	38	0
+69	38	0
+70	38	0
+71	38	0
+72	38	0
+73	38	0
+74	38	0
+75	38	0
+76	38	0
+77	38	0
+78	38	0
+79	38	0
+80	38	0
+81	38	0
+82	38	0
+83	38	0
+84	38	0
+85	38	0
+86	38	0
+87	38	0
+88	38	0
+89	38	0
+90	38	0
+91	38	0
+92	38	0
+93	38	0
+94	38	0
+95	38	0
+96	38	0
+97	38	0
+98	38	0
+99	38	0
+100	38	0
+101	38	0
+102	38	0
+103	38	0
+104	38	0
+105	38	0
+106	38	0
+107	38	0
+108	38	0
+109	38	0
+110	38	0
+111	38	0
+112	38	0
+113	38	0
+114	38	0
+115	38	0
+116	38	0
+117	38	0
+118	38	0
+119	38	0
+120	38	0
+121	38	0
+122	38	0
+123	38	0
+124	38	0
+125	38	0
+126	38	0
+127	38	0
+128	38	0
+129	38	0
+130	38	0
+131	38	0
+132	38	0
+133	38	0
+134	38	0
+135	38	0
+136	38	0
+137	38	0
+138	38	0
+139	38	0
+140	38	0
+141	38	0
+142	38	0
+143	38	0
+144	38	0
+145	38	0
+146	38	0
+147	38	0
+148	38	0
+149	38	0
+150	38	0
+151	38	0
+152	38	0
+153	38	0
+154	38	0
+155	38	0
+156	38	0
+157	38	0
+158	38	0
+159	38	0
+160	38	0
+161	38	0
+162	38	0
+163	38	0
+164	38	0
+165	38	0
+166	38	0
+167	38	0
+168	38	0
+169	38	0
+170	38	0
+171	38	0
+172	38	0
+173	38	0
+174	38	0
+175	38	0
+176	38	0
+177	38	0
+178	38	0
+179	38	0
+180	38	0
+181	38	0
+182	38	0
+183	38	0
+184	38	0
+185	38	0
+186	38	0
+187	38	0
+188	38	0
+189	38	0
+190	38	0
+191	38	0
+192	38	0
+193	38	0
+194	38	0
+195	38	0
+196	38	0
+197	38	0
+198	38	0
+199	38	0
+200	38	0
+201	38	0
+202	38	0
+203	38	0
+204	38	0
+205	38	0
+206	38	0
+207	38	0
+208	38	0
+209	38	0
+210	38	0
+211	38	0
+212	38	0
+213	38	0
+214	38	0
+215	38	0
+216	38	0
+217	38	0
+218	38	0
+219	38	0
+220	38	0
+221	38	0
+222	38	0
+223	38	0
+224	38	0
+225	38	0
+226	38	0
+227	38	0
+228	38	0
+229	38	0
+230	38	0
+231	38	0
+232	38	0
+233	38	0
+234	38	0
+235	38	0
+236	38	0
+237	38	0
+238	38	0
+239	38	0
+240	38	0
+241	38	0
+242	38	0
+243	38	0
+244	38	0
+245	38	0
+246	38	0
+247	38	0
+248	38	0
+249	38	0
+250	38	0
+251	38	0
+252	38	0
+253	38	0
+254	38	0
+255	38	0
+256	38	0
+257	38	0
+258	38	0
+259	38	0
+260	38	0
+261	38	0
+262	38	0
+263	38	0
+264	38	0
+265	38	0
+266	38	0
+267	38	0
+268	38	0
+269	38	0
+270	38	0
+271	38	0
+272	38	0
+273	38	0
+274	38	0
+275	38	0
+276	38	0
+277	38	0
+278	38	0
+279	38	0
+280	38	0
+281	38	0
+282	38	0
+283	38	0
+284	38	0
+285	38	0
+286	38	0
+287	38	0
+288	38	0
+289	38	0
+290	38	0
+291	38	0
+292	38	0
+293	38	0
+294	38	0
+295	38	0
+296	38	0
+297	38	0
+298	38	0
+299	38	0
+300	38	0
+301	38	0
+302	38	0
+303	38	0
+304	38	0
+305	38	0
+306	38	0
+307	38	0
+308	38	0
+309	38	0
+310	38	0
+311	38	0
+312	38	0
+313	38	0
+314	38	0
+315	38	0
+316	38	0
+317	38	0
+318	38	0
+319	38	0
+320	38	0
+321	38	0
+322	38	0
+323	38	0
+324	38	0
+325	38	0
+326	38	0
+327	38	0
+328	38	0
+329	38	0
+330	38	0
+331	38	0
+332	38	0
+333	38	0
+334	38	0
+335	38	0
+336	38	0
+337	38	0
+338	38	0
+339	38	0
+340	38	0
+341	38	0
+342	38	0
+343	38	0
+344	38	0
+345	38	0
+346	38	0
+347	38	0
+348	38	0
+349	38	0
+350	38	0
+351	38	0
+352	38	0
+353	38	0
+354	38	0
+355	38	0
+356	38	0
+357	38	0
+358	38	0
+359	38	0
+360	38	0
+0	38.5	0
+1	38.5	0
+2	38.5	0
+3	38.5	0
+4	38.5	0
+5	38.5	0
+6	38.5	0
+7	38.5	0
+8	38.5	0
+9	38.5	0
+10	38.5	0
+11	38.5	0
+12	38.5	0
+13	38.5	0
+14	38.5	0
+15	38.5	0
+16	38.5	0
+17	38.5	0
+18	38.5	0
+19	38.5	0
+20	38.5	0
+21	38.5	0
+22	38.5	0
+23	38.5	0
+24	38.5	0
+25	38.5	0
+26	38.5	0
+27	38.5	0
+28	38.5	0
+29	38.5	0
+30	38.5	0
+31	38.5	0
+32	38.5	0
+33	38.5	0
+34	38.5	0
+35	38.5	0
+36	38.5	0
+37	38.5	0
+38	38.5	0
+39	38.5	0
+40	38.5	0
+41	38.5	0
+42	38.5	0
+43	38.5	0
+44	38.5	0
+45	38.5	0
+46	38.5	0
+47	38.5	0
+48	38.5	0
+49	38.5	0
+50	38.5	0
+51	38.5	0
+52	38.5	0
+53	38.5	0
+54	38.5	0
+55	38.5	0
+56	38.5	0
+57	38.5	0
+58	38.5	0
+59	38.5	0
+60	38.5	0
+61	38.5	0
+62	38.5	0
+63	38.5	0
+64	38.5	0
+65	38.5	0
+66	38.5	0
+67	38.5	0
+68	38.5	0
+69	38.5	0
+70	38.5	0
+71	38.5	0
+72	38.5	0
+73	38.5	0
+74	38.5	0
+75	38.5	0
+76	38.5	0
+77	38.5	0
+78	38.5	0
+79	38.5	0
+80	38.5	0
+81	38.5	0
+82	38.5	0
+83	38.5	0
+84	38.5	0
+85	38.5	0
+86	38.5	0
+87	38.5	0
+88	38.5	0
+89	38.5	0
+90	38.5	0
+91	38.5	0
+92	38.5	0
+93	38.5	0
+94	38.5	0
+95	38.5	0
+96	38.5	0
+97	38.5	0
+98	38.5	0
+99	38.5	0
+100	38.5	0
+101	38.5	0
+102	38.5	0
+103	38.5	0
+104	38.5	0
+105	38.5	0
+106	38.5	0
+107	38.5	0
+108	38.5	0
+109	38.5	0
+110	38.5	0
+111	38.5	0
+112	38.5	0
+113	38.5	0
+114	38.5	0
+115	38.5	0
+116	38.5	0
+117	38.5	0
+118	38.5	0
+119	38.5	0
+120	38.5	0
+121	38.5	0
+122	38.5	0
+123	38.5	0
+124	38.5	0
+125	38.5	0
+126	38.5	0
+127	38.5	0
+128	38.5	0
+129	38.5	0
+130	38.5	0
+131	38.5	0
+132	38.5	0
+133	38.5	0
+134	38.5	0
+135	38.5	0
+136	38.5	0
+137	38.5	0
+138	38.5	0
+139	38.5	0
+140	38.5	0
+141	38.5	0
+142	38.5	0
+143	38.5	0
+144	38.5	0
+145	38.5	0
+146	38.5	0
+147	38.5	0
+148	38.5	0
+149	38.5	0
+150	38.5	0
+151	38.5	0
+152	38.5	0
+153	38.5	0
+154	38.5	0
+155	38.5	0
+156	38.5	0
+157	38.5	0
+158	38.5	0
+159	38.5	0
+160	38.5	0
+161	38.5	0
+162	38.5	0
+163	38.5	0
+164	38.5	0
+165	38.5	0
+166	38.5	0
+167	38.5	0
+168	38.5	0
+169	38.5	0
+170	38.5	0
+171	38.5	0
+172	38.5	0
+173	38.5	0
+174	38.5	0
+175	38.5	0
+176	38.5	0
+177	38.5	0
+178	38.5	0
+179	38.5	0
+180	38.5	0
+181	38.5	0
+182	38.5	0
+183	38.5	0
+184	38.5	0
+185	38.5	0
+186	38.5	0
+187	38.5	0
+188	38.5	0
+189	38.5	0
+190	38.5	0
+191	38.5	0
+192	38.5	0
+193	38.5	0
+194	38.5	0
+195	38.5	0
+196	38.5	0
+197	38.5	0
+198	38.5	0
+199	38.5	0
+200	38.5	0
+201	38.5	0
+202	38.5	0
+203	38.5	0
+204	38.5	0
+205	38.5	0
+206	38.5	0
+207	38.5	0
+208	38.5	0
+209	38.5	0
+210	38.5	0
+211	38.5	0
+212	38.5	0
+213	38.5	0
+214	38.5	0
+215	38.5	0
+216	38.5	0
+217	38.5	0
+218	38.5	0
+219	38.5	0
+220	38.5	0
+221	38.5	0
+222	38.5	0
+223	38.5	0
+224	38.5	0
+225	38.5	0
+226	38.5	0
+227	38.5	0
+228	38.5	0
+229	38.5	0
+230	38.5	0
+231	38.5	0
+232	38.5	0
+233	38.5	0
+234	38.5	0
+235	38.5	0
+236	38.5	0
+237	38.5	0
+238	38.5	0
+239	38.5	0
+240	38.5	0
+241	38.5	0
+242	38.5	0
+243	38.5	0
+244	38.5	0
+245	38.5	0
+246	38.5	0
+247	38.5	0
+248	38.5	0
+249	38.5	0
+250	38.5	0
+251	38.5	0
+252	38.5	0
+253	38.5	0
+254	38.5	0
+255	38.5	0
+256	38.5	0
+257	38.5	0
+258	38.5	0
+259	38.5	0
+260	38.5	0
+261	38.5	0
+262	38.5	0
+263	38.5	0
+264	38.5	0
+265	38.5	0
+266	38.5	0
+267	38.5	0
+268	38.5	0
+269	38.5	0
+270	38.5	0
+271	38.5	0
+272	38.5	0
+273	38.5	0
+274	38.5	0
+275	38.5	0
+276	38.5	0
+277	38.5	0
+278	38.5	0
+279	38.5	0
+280	38.5	0
+281	38.5	0
+282	38.5	0
+283	38.5	0
+284	38.5	0
+285	38.5	0
+286	38.5	0
+287	38.5	0
+288	38.5	0
+289	38.5	0
+290	38.5	0
+291	38.5	0
+292	38.5	0
+293	38.5	0
+294	38.5	0
+295	38.5	0
+296	38.5	0
+297	38.5	0
+298	38.5	0
+299	38.5	0
+300	38.5	0
+301	38.5	0
+302	38.5	0
+303	38.5	0
+304	38.5	0
+305	38.5	0
+306	38.5	0
+307	38.5	0
+308	38.5	0
+309	38.5	0
+310	38.5	0
+311	38.5	0
+312	38.5	0
+313	38.5	0
+314	38.5	0
+315	38.5	0
+316	38.5	0
+317	38.5	0
+318	38.5	0
+319	38.5	0
+320	38.5	0
+321	38.5	0
+322	38.5	0
+323	38.5	0
+324	38.5	0
+325	38.5	0
+326	38.5	0
+327	38.5	0
+328	38.5	0
+329	38.5	0
+330	38.5	0
+331	38.5	0
+332	38.5	0
+333	38.5	0
+334	38.5	0
+335	38.5	0
+336	38.5	0
+337	38.5	0
+338	38.5	0
+339	38.5	0
+340	38.5	0
+341	38.5	0
+342	38.5	0
+343	38.5	0
+344	38.5	0
+345	38.5	0
+346	38.5	0
+347	38.5	0
+348	38.5	0
+349	38.5	0
+350	38.5	0
+351	38.5	0
+352	38.5	0
+353	38.5	0
+354	38.5	0
+355	38.5	0
+356	38.5	0
+357	38.5	0
+358	38.5	0
+359	38.5	0
+360	38.5	0
+0	39	0
+1	39	0
+2	39	0
+3	39	0
+4	39	0
+5	39	0
+6	39	0
+7	39	0
+8	39	0
+9	39	0
+10	39	0
+11	39	0
+12	39	0
+13	39	0
+14	39	0
+15	39	0
+16	39	0
+17	39	0
+18	39	0
+19	39	0
+20	39	0
+21	39	0
+22	39	0
+23	39	0
+24	39	0
+25	39	0
+26	39	0
+27	39	0
+28	39	0
+29	39	0
+30	39	0
+31	39	0
+32	39	0
+33	39	0
+34	39	0
+35	39	0
+36	39	0
+37	39	0
+38	39	0
+39	39	0
+40	39	0
+41	39	0
+42	39	0
+43	39	0
+44	39	0
+45	39	0
+46	39	0
+47	39	0
+48	39	0
+49	39	0
+50	39	0
+51	39	0
+52	39	0
+53	39	0
+54	39	0
+55	39	0
+56	39	0
+57	39	0
+58	39	0
+59	39	0
+60	39	0
+61	39	0
+62	39	0
+63	39	0
+64	39	0
+65	39	0
+66	39	0
+67	39	0
+68	39	0
+69	39	0
+70	39	0
+71	39	0
+72	39	0
+73	39	0
+74	39	0
+75	39	0
+76	39	0
+77	39	0
+78	39	0
+79	39	0
+80	39	0
+81	39	0
+82	39	0
+83	39	0
+84	39	0
+85	39	0
+86	39	0
+87	39	0
+88	39	0
+89	39	0
+90	39	0
+91	39	0
+92	39	0
+93	39	0
+94	39	0
+95	39	0
+96	39	0
+97	39	0
+98	39	0
+99	39	0
+100	39	0
+101	39	0
+102	39	0
+103	39	0
+104	39	0
+105	39	0
+106	39	0
+107	39	0
+108	39	0
+109	39	0
+110	39	0
+111	39	0
+112	39	0
+113	39	0
+114	39	0
+115	39	0
+116	39	0
+117	39	0
+118	39	0
+119	39	0
+120	39	0
+121	39	0
+122	39	0
+123	39	0
+124	39	0
+125	39	0
+126	39	0
+127	39	0
+128	39	0
+129	39	0
+130	39	0
+131	39	0
+132	39	0
+133	39	0
+134	39	0
+135	39	0
+136	39	0
+137	39	0
+138	39	0
+139	39	0
+140	39	0
+141	39	0
+142	39	0
+143	39	0
+144	39	0
+145	39	0
+146	39	0
+147	39	0
+148	39	0
+149	39	0
+150	39	0
+151	39	0
+152	39	0
+153	39	0
+154	39	0
+155	39	0
+156	39	0
+157	39	0
+158	39	0
+159	39	0
+160	39	0
+161	39	0
+162	39	0
+163	39	0
+164	39	0
+165	39	0
+166	39	0
+167	39	0
+168	39	0
+169	39	0
+170	39	0
+171	39	0
+172	39	0
+173	39	0
+174	39	0
+175	39	0
+176	39	0
+177	39	0
+178	39	0
+179	39	0
+180	39	0
+181	39	0
+182	39	0
+183	39	0
+184	39	0
+185	39	0
+186	39	0
+187	39	0
+188	39	0
+189	39	0
+190	39	0
+191	39	0
+192	39	0
+193	39	0
+194	39	0
+195	39	0
+196	39	0
+197	39	0
+198	39	0
+199	39	0
+200	39	0
+201	39	0
+202	39	0
+203	39	0
+204	39	0
+205	39	0
+206	39	0
+207	39	0
+208	39	0
+209	39	0
+210	39	0
+211	39	0
+212	39	0
+213	39	0
+214	39	0
+215	39	0
+216	39	0
+217	39	0
+218	39	0
+219	39	0
+220	39	0
+221	39	0
+222	39	0
+223	39	0
+224	39	0
+225	39	0
+226	39	0
+227	39	0
+228	39	0
+229	39	0
+230	39	0
+231	39	0
+232	39	0
+233	39	0
+234	39	0
+235	39	0
+236	39	0
+237	39	0
+238	39	0
+239	39	0
+240	39	0
+241	39	0
+242	39	0
+243	39	0
+244	39	0
+245	39	0
+246	39	0
+247	39	0
+248	39	0
+249	39	0
+250	39	0
+251	39	0
+252	39	0
+253	39	0
+254	39	0
+255	39	0
+256	39	0
+257	39	0
+258	39	0
+259	39	0
+260	39	0
+261	39	0
+262	39	0
+263	39	0
+264	39	0
+265	39	0
+266	39	0
+267	39	0
+268	39	0
+269	39	0
+270	39	0
+271	39	0
+272	39	0
+273	39	0
+274	39	0
+275	39	0
+276	39	0
+277	39	0
+278	39	0
+279	39	0
+280	39	0
+281	39	0
+282	39	0
+283	39	0
+284	39	0
+285	39	0
+286	39	0
+287	39	0
+288	39	0
+289	39	0
+290	39	0
+291	39	0
+292	39	0
+293	39	0
+294	39	0
+295	39	0
+296	39	0
+297	39	0
+298	39	0
+299	39	0
+300	39	0
+301	39	0
+302	39	0
+303	39	0
+304	39	0
+305	39	0
+306	39	0
+307	39	0
+308	39	0
+309	39	0
+310	39	0
+311	39	0
+312	39	0
+313	39	0
+314	39	0
+315	39	0
+316	39	0
+317	39	0
+318	39	0
+319	39	0
+320	39	0
+321	39	0
+322	39	0
+323	39	0
+324	39	0
+325	39	0
+326	39	0
+327	39	0
+328	39	0
+329	39	0
+330	39	0
+331	39	0
+332	39	0
+333	39	0
+334	39	0
+335	39	0
+336	39	0
+337	39	0
+338	39	0
+339	39	0
+340	39	0
+341	39	0
+342	39	0
+343	39	0
+344	39	0
+345	39	0
+346	39	0
+347	39	0
+348	39	0
+349	39	0
+350	39	0
+351	39	0
+352	39	0
+353	39	0
+354	39	0
+355	39	0
+356	39	0
+357	39	0
+358	39	0
+359	39	0
+360	39	0
+0	39.5	0
+1	39.5	0
+2	39.5	0
+3	39.5	0
+4	39.5	0
+5	39.5	0
+6	39.5	0
+7	39.5	0
+8	39.5	0
+9	39.5	0
+10	39.5	0
+11	39.5	0
+12	39.5	0
+13	39.5	0
+14	39.5	0
+15	39.5	0
+16	39.5	0
+17	39.5	0
+18	39.5	0
+19	39.5	0
+20	39.5	0
+21	39.5	0
+22	39.5	0
+23	39.5	0
+24	39.5	0
+25	39.5	0
+26	39.5	0
+27	39.5	0
+28	39.5	0
+29	39.5	0
+30	39.5	0
+31	39.5	0
+32	39.5	0
+33	39.5	0
+34	39.5	0
+35	39.5	0
+36	39.5	0
+37	39.5	0
+38	39.5	0
+39	39.5	0
+40	39.5	0
+41	39.5	0
+42	39.5	0
+43	39.5	0
+44	39.5	0
+45	39.5	0
+46	39.5	0
+47	39.5	0
+48	39.5	0
+49	39.5	0
+50	39.5	0
+51	39.5	0
+52	39.5	0
+53	39.5	0
+54	39.5	0
+55	39.5	0
+56	39.5	0
+57	39.5	0
+58	39.5	0
+59	39.5	0
+60	39.5	0
+61	39.5	0
+62	39.5	0
+63	39.5	0
+64	39.5	0
+65	39.5	0
+66	39.5	0
+67	39.5	0
+68	39.5	0
+69	39.5	0
+70	39.5	0
+71	39.5	0
+72	39.5	0
+73	39.5	0
+74	39.5	0
+75	39.5	0
+76	39.5	0
+77	39.5	0
+78	39.5	0
+79	39.5	0
+80	39.5	0
+81	39.5	0
+82	39.5	0
+83	39.5	0
+84	39.5	0
+85	39.5	0
+86	39.5	0
+87	39.5	0
+88	39.5	0
+89	39.5	0
+90	39.5	0
+91	39.5	0
+92	39.5	0
+93	39.5	0
+94	39.5	0
+95	39.5	0
+96	39.5	0
+97	39.5	0
+98	39.5	0
+99	39.5	0
+100	39.5	0
+101	39.5	0
+102	39.5	0
+103	39.5	0
+104	39.5	0
+105	39.5	0
+106	39.5	0
+107	39.5	0
+108	39.5	0
+109	39.5	0
+110	39.5	0
+111	39.5	0
+112	39.5	0
+113	39.5	0
+114	39.5	0
+115	39.5	0
+116	39.5	0
+117	39.5	0
+118	39.5	0
+119	39.5	0
+120	39.5	0
+121	39.5	0
+122	39.5	0
+123	39.5	0
+124	39.5	0
+125	39.5	0
+126	39.5	0
+127	39.5	0
+128	39.5	0
+129	39.5	0
+130	39.5	0
+131	39.5	0
+132	39.5	0
+133	39.5	0
+134	39.5	0
+135	39.5	0
+136	39.5	0
+137	39.5	0
+138	39.5	0
+139	39.5	0
+140	39.5	0
+141	39.5	0
+142	39.5	0
+143	39.5	0
+144	39.5	0
+145	39.5	0
+146	39.5	0
+147	39.5	0
+148	39.5	0
+149	39.5	0
+150	39.5	0
+151	39.5	0
+152	39.5	0
+153	39.5	0
+154	39.5	0
+155	39.5	0
+156	39.5	0
+157	39.5	0
+158	39.5	0
+159	39.5	0
+160	39.5	0
+161	39.5	0
+162	39.5	0
+163	39.5	0
+164	39.5	0
+165	39.5	0
+166	39.5	0
+167	39.5	0
+168	39.5	0
+169	39.5	0
+170	39.5	0
+171	39.5	0
+172	39.5	0
+173	39.5	0
+174	39.5	0
+175	39.5	0
+176	39.5	0
+177	39.5	0
+178	39.5	0
+179	39.5	0
+180	39.5	0
+181	39.5	0
+182	39.5	0
+183	39.5	0
+184	39.5	0
+185	39.5	0
+186	39.5	0
+187	39.5	0
+188	39.5	0
+189	39.5	0
+190	39.5	0
+191	39.5	0
+192	39.5	0
+193	39.5	0
+194	39.5	0
+195	39.5	0
+196	39.5	0
+197	39.5	0
+198	39.5	0
+199	39.5	0
+200	39.5	0
+201	39.5	0
+202	39.5	0
+203	39.5	0
+204	39.5	0
+205	39.5	0
+206	39.5	0
+207	39.5	0
+208	39.5	0
+209	39.5	0
+210	39.5	0
+211	39.5	0
+212	39.5	0
+213	39.5	0
+214	39.5	0
+215	39.5	0
+216	39.5	0
+217	39.5	0
+218	39.5	0
+219	39.5	0
+220	39.5	0
+221	39.5	0
+222	39.5	0
+223	39.5	0
+224	39.5	0
+225	39.5	0
+226	39.5	0
+227	39.5	0
+228	39.5	0
+229	39.5	0
+230	39.5	0
+231	39.5	0
+232	39.5	0
+233	39.5	0
+234	39.5	0
+235	39.5	0
+236	39.5	0
+237	39.5	0
+238	39.5	0
+239	39.5	0
+240	39.5	0
+241	39.5	0
+242	39.5	0
+243	39.5	0
+244	39.5	0
+245	39.5	0
+246	39.5	0
+247	39.5	0
+248	39.5	0
+249	39.5	0
+250	39.5	0
+251	39.5	0
+252	39.5	0
+253	39.5	0
+254	39.5	0
+255	39.5	0
+256	39.5	0
+257	39.5	0
+258	39.5	0
+259	39.5	0
+260	39.5	0
+261	39.5	0
+262	39.5	0
+263	39.5	0
+264	39.5	0
+265	39.5	0
+266	39.5	0
+267	39.5	0
+268	39.5	0
+269	39.5	0
+270	39.5	0
+271	39.5	0
+272	39.5	0
+273	39.5	0
+274	39.5	0
+275	39.5	0
+276	39.5	0
+277	39.5	0
+278	39.5	0
+279	39.5	0
+280	39.5	0
+281	39.5	0
+282	39.5	0
+283	39.5	0
+284	39.5	0
+285	39.5	0
+286	39.5	0
+287	39.5	0
+288	39.5	0
+289	39.5	0
+290	39.5	0
+291	39.5	0
+292	39.5	0
+293	39.5	0
+294	39.5	0
+295	39.5	0
+296	39.5	0
+297	39.5	0
+298	39.5	0
+299	39.5	0
+300	39.5	0
+301	39.5	0
+302	39.5	0
+303	39.5	0
+304	39.5	0
+305	39.5	0
+306	39.5	0
+307	39.5	0
+308	39.5	0
+309	39.5	0
+310	39.5	0
+311	39.5	0
+312	39.5	0
+313	39.5	0
+314	39.5	0
+315	39.5	0
+316	39.5	0
+317	39.5	0
+318	39.5	0
+319	39.5	0
+320	39.5	0
+321	39.5	0
+322	39.5	0
+323	39.5	0
+324	39.5	0
+325	39.5	0
+326	39.5	0
+327	39.5	0
+328	39.5	0
+329	39.5	0
+330	39.5	0
+331	39.5	0
+332	39.5	0
+333	39.5	0
+334	39.5	0
+335	39.5	0
+336	39.5	0
+337	39.5	0
+338	39.5	0
+339	39.5	0
+340	39.5	0
+341	39.5	0
+342	39.5	0
+343	39.5	0
+344	39.5	0
+345	39.5	0
+346	39.5	0
+347	39.5	0
+348	39.5	0
+349	39.5	0
+350	39.5	0
+351	39.5	0
+352	39.5	0
+353	39.5	0
+354	39.5	0
+355	39.5	0
+356	39.5	0
+357	39.5	0
+358	39.5	0
+359	39.5	0
+360	39.5	0
+0	40	0
+1	40	0
+2	40	0
+3	40	0
+4	40	0
+5	40	0
+6	40	0
+7	40	0
+8	40	0
+9	40	0
+10	40	0
+11	40	0
+12	40	0
+13	40	0
+14	40	0
+15	40	0
+16	40	0
+17	40	0
+18	40	0
+19	40	0
+20	40	0
+21	40	0
+22	40	0
+23	40	0
+24	40	0
+25	40	0
+26	40	0
+27	40	0
+28	40	0
+29	40	0
+30	40	0
+31	40	0
+32	40	0
+33	40	0
+34	40	0
+35	40	0
+36	40	0
+37	40	0
+38	40	0
+39	40	0
+40	40	0
+41	40	0
+42	40	0
+43	40	0
+44	40	0
+45	40	0
+46	40	0
+47	40	0
+48	40	0
+49	40	0
+50	40	0
+51	40	0
+52	40	0
+53	40	0
+54	40	0
+55	40	0
+56	40	0
+57	40	0
+58	40	0
+59	40	0
+60	40	0
+61	40	0
+62	40	0
+63	40	0
+64	40	0
+65	40	0
+66	40	0
+67	40	0
+68	40	0
+69	40	0
+70	40	0
+71	40	0
+72	40	0
+73	40	0
+74	40	0
+75	40	0
+76	40	0
+77	40	0
+78	40	0
+79	40	0
+80	40	0
+81	40	0
+82	40	0
+83	40	0
+84	40	0
+85	40	0
+86	40	0
+87	40	0
+88	40	0
+89	40	0
+90	40	0
+91	40	0
+92	40	0
+93	40	0
+94	40	0
+95	40	0
+96	40	0
+97	40	0
+98	40	0
+99	40	0
+100	40	0
+101	40	0
+102	40	0
+103	40	0
+104	40	0
+105	40	0
+106	40	0
+107	40	0
+108	40	0
+109	40	0
+110	40	0
+111	40	0
+112	40	0
+113	40	0
+114	40	0
+115	40	0
+116	40	0
+117	40	0
+118	40	0
+119	40	0
+120	40	0
+121	40	0
+122	40	0
+123	40	0
+124	40	0
+125	40	0
+126	40	0
+127	40	0
+128	40	0
+129	40	0
+130	40	0
+131	40	0
+132	40	0
+133	40	0
+134	40	0
+135	40	0
+136	40	0
+137	40	0
+138	40	0
+139	40	0
+140	40	0
+141	40	0
+142	40	0
+143	40	0
+144	40	0
+145	40	0
+146	40	0
+147	40	0
+148	40	0
+149	40	0
+150	40	0
+151	40	0
+152	40	0
+153	40	0
+154	40	0
+155	40	0
+156	40	0
+157	40	0
+158	40	0
+159	40	0
+160	40	0
+161	40	0
+162	40	0
+163	40	0
+164	40	0
+165	40	0
+166	40	0
+167	40	0
+168	40	0
+169	40	0
+170	40	0
+171	40	0
+172	40	0
+173	40	0
+174	40	0
+175	40	0
+176	40	0
+177	40	0
+178	40	0
+179	40	0
+180	40	0
+181	40	0
+182	40	0
+183	40	0
+184	40	0
+185	40	0
+186	40	0
+187	40	0
+188	40	0
+189	40	0
+190	40	0
+191	40	0
+192	40	0
+193	40	0
+194	40	0
+195	40	0
+196	40	0
+197	40	0
+198	40	0
+199	40	0
+200	40	0
+201	40	0
+202	40	0
+203	40	0
+204	40	0
+205	40	0
+206	40	0
+207	40	0
+208	40	0
+209	40	0
+210	40	0
+211	40	0
+212	40	0
+213	40	0
+214	40	0
+215	40	0
+216	40	0
+217	40	0
+218	40	0
+219	40	0
+220	40	0
+221	40	0
+222	40	0
+223	40	0
+224	40	0
+225	40	0
+226	40	0
+227	40	0
+228	40	0
+229	40	0
+230	40	0
+231	40	0
+232	40	0
+233	40	0
+234	40	0
+235	40	0
+236	40	0
+237	40	0
+238	40	0
+239	40	0
+240	40	0
+241	40	0
+242	40	0
+243	40	0
+244	40	0
+245	40	0
+246	40	0
+247	40	0
+248	40	0
+249	40	0
+250	40	0
+251	40	0
+252	40	0
+253	40	0
+254	40	0
+255	40	0
+256	40	0
+257	40	0
+258	40	0
+259	40	0
+260	40	0
+261	40	0
+262	40	0
+263	40	0
+264	40	0
+265	40	0
+266	40	0
+267	40	0
+268	40	0
+269	40	0
+270	40	0
+271	40	0
+272	40	0
+273	40	0
+274	40	0
+275	40	0
+276	40	0
+277	40	0
+278	40	0
+279	40	0
+280	40	0
+281	40	0
+282	40	0
+283	40	0
+284	40	0
+285	40	0
+286	40	0
+287	40	0
+288	40	0
+289	40	0
+290	40	0
+291	40	0
+292	40	0
+293	40	0
+294	40	0
+295	40	0
+296	40	0
+297	40	0
+298	40	0
+299	40	0
+300	40	0
+301	40	0
+302	40	0
+303	40	0
+304	40	0
+305	40	0
+306	40	0
+307	40	0
+308	40	0
+309	40	0
+310	40	0
+311	40	0
+312	40	0
+313	40	0
+314	40	0
+315	40	0
+316	40	0
+317	40	0
+318	40	0
+319	40	0
+320	40	0
+321	40	0
+322	40	0
+323	40	0
+324	40	0
+325	40	0
+326	40	0
+327	40	0
+328	40	0
+329	40	0
+330	40	0
+331	40	0
+332	40	0
+333	40	0
+334	40	0
+335	40	0
+336	40	0
+337	40	0
+338	40	0
+339	40	0
+340	40	0
+341	40	0
+342	40	0
+343	40	0
+344	40	0
+345	40	0
+346	40	0
+347	40	0
+348	40	0
+349	40	0
+350	40	0
+351	40	0
+352	40	0
+353	40	0
+354	40	0
+355	40	0
+356	40	0
+357	40	0
+358	40	0
+359	40	0
+360	40	0
+0	40.5	0
+1	40.5	0
+2	40.5	0
+3	40.5	0
+4	40.5	0
+5	40.5	0
+6	40.5	0
+7	40.5	0
+8	40.5	0
+9	40.5	0
+10	40.5	0
+11	40.5	0
+12	40.5	0
+13	40.5	0
+14	40.5	0
+15	40.5	0
+16	40.5	0
+17	40.5	0
+18	40.5	0
+19	40.5	0
+20	40.5	0
+21	40.5	0
+22	40.5	0
+23	40.5	0
+24	40.5	0
+25	40.5	0
+26	40.5	0
+27	40.5	0
+28	40.5	0
+29	40.5	0
+30	40.5	0
+31	40.5	0
+32	40.5	0
+33	40.5	0
+34	40.5	0
+35	40.5	0
+36	40.5	0
+37	40.5	0
+38	40.5	0
+39	40.5	0
+40	40.5	0
+41	40.5	0
+42	40.5	0
+43	40.5	0
+44	40.5	0
+45	40.5	0
+46	40.5	0
+47	40.5	0
+48	40.5	0
+49	40.5	0
+50	40.5	0
+51	40.5	0
+52	40.5	0
+53	40.5	0
+54	40.5	0
+55	40.5	0
+56	40.5	0
+57	40.5	0
+58	40.5	0
+59	40.5	0
+60	40.5	0
+61	40.5	0
+62	40.5	0
+63	40.5	0
+64	40.5	0
+65	40.5	0
+66	40.5	0
+67	40.5	0
+68	40.5	0
+69	40.5	0
+70	40.5	0
+71	40.5	0
+72	40.5	0
+73	40.5	0
+74	40.5	0
+75	40.5	0
+76	40.5	0
+77	40.5	0
+78	40.5	0
+79	40.5	0
+80	40.5	0
+81	40.5	0
+82	40.5	0
+83	40.5	0
+84	40.5	0
+85	40.5	0
+86	40.5	0
+87	40.5	0
+88	40.5	0
+89	40.5	0
+90	40.5	0
+91	40.5	0
+92	40.5	0
+93	40.5	0
+94	40.5	0
+95	40.5	0
+96	40.5	0
+97	40.5	0
+98	40.5	0
+99	40.5	0
+100	40.5	0
+101	40.5	0
+102	40.5	0
+103	40.5	0
+104	40.5	0
+105	40.5	0
+106	40.5	0
+107	40.5	0
+108	40.5	0
+109	40.5	0
+110	40.5	0
+111	40.5	0
+112	40.5	0
+113	40.5	0
+114	40.5	0
+115	40.5	0
+116	40.5	0
+117	40.5	0
+118	40.5	0
+119	40.5	0
+120	40.5	0
+121	40.5	0
+122	40.5	0
+123	40.5	0
+124	40.5	0
+125	40.5	0
+126	40.5	0
+127	40.5	0
+128	40.5	0
+129	40.5	0
+130	40.5	0
+131	40.5	0
+132	40.5	0
+133	40.5	0
+134	40.5	0
+135	40.5	0
+136	40.5	0
+137	40.5	0
+138	40.5	0
+139	40.5	0
+140	40.5	0
+141	40.5	0
+142	40.5	0
+143	40.5	0
+144	40.5	0
+145	40.5	0
+146	40.5	0
+147	40.5	0
+148	40.5	0
+149	40.5	0
+150	40.5	0
+151	40.5	0
+152	40.5	0
+153	40.5	0
+154	40.5	0
+155	40.5	0
+156	40.5	0
+157	40.5	0
+158	40.5	0
+159	40.5	0
+160	40.5	0
+161	40.5	0
+162	40.5	0
+163	40.5	0
+164	40.5	0
+165	40.5	0
+166	40.5	0
+167	40.5	0
+168	40.5	0
+169	40.5	0
+170	40.5	0
+171	40.5	0
+172	40.5	0
+173	40.5	0
+174	40.5	0
+175	40.5	0
+176	40.5	0
+177	40.5	0
+178	40.5	0
+179	40.5	0
+180	40.5	0
+181	40.5	0
+182	40.5	0
+183	40.5	0
+184	40.5	0
+185	40.5	0
+186	40.5	0
+187	40.5	0
+188	40.5	0
+189	40.5	0
+190	40.5	0
+191	40.5	0
+192	40.5	0
+193	40.5	0
+194	40.5	0
+195	40.5	0
+196	40.5	0
+197	40.5	0
+198	40.5	0
+199	40.5	0
+200	40.5	0
+201	40.5	0
+202	40.5	0
+203	40.5	0
+204	40.5	0
+205	40.5	0
+206	40.5	0
+207	40.5	0
+208	40.5	0
+209	40.5	0
+210	40.5	0
+211	40.5	0
+212	40.5	0
+213	40.5	0
+214	40.5	0
+215	40.5	0
+216	40.5	0
+217	40.5	0
+218	40.5	0
+219	40.5	0
+220	40.5	0
+221	40.5	0
+222	40.5	0
+223	40.5	0
+224	40.5	0
+225	40.5	0
+226	40.5	0
+227	40.5	0
+228	40.5	0
+229	40.5	0
+230	40.5	0
+231	40.5	0
+232	40.5	0
+233	40.5	0
+234	40.5	0
+235	40.5	0
+236	40.5	0
+237	40.5	0
+238	40.5	0
+239	40.5	0
+240	40.5	0
+241	40.5	0
+242	40.5	0
+243	40.5	0
+244	40.5	0
+245	40.5	0
+246	40.5	0
+247	40.5	0
+248	40.5	0
+249	40.5	0
+250	40.5	0
+251	40.5	0
+252	40.5	0
+253	40.5	0
+254	40.5	0
+255	40.5	0
+256	40.5	0
+257	40.5	0
+258	40.5	0
+259	40.5	0
+260	40.5	0
+261	40.5	0
+262	40.5	0
+263	40.5	0
+264	40.5	0
+265	40.5	0
+266	40.5	0
+267	40.5	0
+268	40.5	0
+269	40.5	0
+270	40.5	0
+271	40.5	0
+272	40.5	0
+273	40.5	0
+274	40.5	0
+275	40.5	0
+276	40.5	0
+277	40.5	0
+278	40.5	0
+279	40.5	0
+280	40.5	0
+281	40.5	0
+282	40.5	0
+283	40.5	0
+284	40.5	0
+285	40.5	0
+286	40.5	0
+287	40.5	0
+288	40.5	0
+289	40.5	0
+290	40.5	0
+291	40.5	0
+292	40.5	0
+293	40.5	0
+294	40.5	0
+295	40.5	0
+296	40.5	0
+297	40.5	0
+298	40.5	0
+299	40.5	0
+300	40.5	0
+301	40.5	0
+302	40.5	0
+303	40.5	0
+304	40.5	0
+305	40.5	0
+306	40.5	0
+307	40.5	0
+308	40.5	0
+309	40.5	0
+310	40.5	0
+311	40.5	0
+312	40.5	0
+313	40.5	0
+314	40.5	0
+315	40.5	0
+316	40.5	0
+317	40.5	0
+318	40.5	0
+319	40.5	0
+320	40.5	0
+321	40.5	0
+322	40.5	0
+323	40.5	0
+324	40.5	0
+325	40.5	0
+326	40.5	0
+327	40.5	0
+328	40.5	0
+329	40.5	0
+330	40.5	0
+331	40.5	0
+332	40.5	0
+333	40.5	0
+334	40.5	0
+335	40.5	0
+336	40.5	0
+337	40.5	0
+338	40.5	0
+339	40.5	0
+340	40.5	0
+341	40.5	0
+342	40.5	0
+343	40.5	0
+344	40.5	0
+345	40.5	0
+346	40.5	0
+347	40.5	0
+348	40.5	0
+349	40.5	0
+350	40.5	0
+351	40.5	0
+352	40.5	0
+353	40.5	0
+354	40.5	0
+355	40.5	0
+356	40.5	0
+357	40.5	0
+358	40.5	0
+359	40.5	0
+360	40.5	0
+0	41	0
+1	41	0
+2	41	0
+3	41	0
+4	41	0
+5	41	0
+6	41	0
+7	41	0
+8	41	0
+9	41	0
+10	41	0
+11	41	0
+12	41	0
+13	41	0
+14	41	0
+15	41	0
+16	41	0
+17	41	0
+18	41	0
+19	41	0
+20	41	0
+21	41	0
+22	41	0
+23	41	0
+24	41	0
+25	41	0
+26	41	0
+27	41	0
+28	41	0
+29	41	0
+30	41	0
+31	41	0
+32	41	0
+33	41	0
+34	41	0
+35	41	0
+36	41	0
+37	41	0
+38	41	0
+39	41	0
+40	41	0
+41	41	0
+42	41	0
+43	41	0
+44	41	0
+45	41	0
+46	41	0
+47	41	0
+48	41	0
+49	41	0
+50	41	0
+51	41	0
+52	41	0
+53	41	0
+54	41	0
+55	41	0
+56	41	0
+57	41	0
+58	41	0
+59	41	0
+60	41	0
+61	41	0
+62	41	0
+63	41	0
+64	41	0
+65	41	0
+66	41	0
+67	41	0
+68	41	0
+69	41	0
+70	41	0
+71	41	0
+72	41	0
+73	41	0
+74	41	0
+75	41	0
+76	41	0
+77	41	0
+78	41	0
+79	41	0
+80	41	0
+81	41	0
+82	41	0
+83	41	0
+84	41	0
+85	41	0
+86	41	0
+87	41	0
+88	41	0
+89	41	0
+90	41	0
+91	41	0
+92	41	0
+93	41	0
+94	41	0
+95	41	0
+96	41	0
+97	41	0
+98	41	0
+99	41	0
+100	41	0
+101	41	0
+102	41	0
+103	41	0
+104	41	0
+105	41	0
+106	41	0
+107	41	0
+108	41	0
+109	41	0
+110	41	0
+111	41	0
+112	41	0
+113	41	0
+114	41	0
+115	41	0
+116	41	0
+117	41	0
+118	41	0
+119	41	0
+120	41	0
+121	41	0
+122	41	0
+123	41	0
+124	41	0
+125	41	0
+126	41	0
+127	41	0
+128	41	0
+129	41	0
+130	41	0
+131	41	0
+132	41	0
+133	41	0
+134	41	0
+135	41	0
+136	41	0
+137	41	0
+138	41	0
+139	41	0
+140	41	0
+141	41	0
+142	41	0
+143	41	0
+144	41	0
+145	41	0
+146	41	0
+147	41	0
+148	41	0
+149	41	0
+150	41	0
+151	41	0
+152	41	0
+153	41	0
+154	41	0
+155	41	0
+156	41	0
+157	41	0
+158	41	0
+159	41	0
+160	41	0
+161	41	0
+162	41	0
+163	41	0
+164	41	0
+165	41	0
+166	41	0
+167	41	0
+168	41	0
+169	41	0
+170	41	0
+171	41	0
+172	41	0
+173	41	0
+174	41	0
+175	41	0
+176	41	0
+177	41	0
+178	41	0
+179	41	0
+180	41	0
+181	41	0
+182	41	0
+183	41	0
+184	41	0
+185	41	0
+186	41	0
+187	41	0
+188	41	0
+189	41	0
+190	41	0
+191	41	0
+192	41	0
+193	41	0
+194	41	0
+195	41	0
+196	41	0
+197	41	0
+198	41	0
+199	41	0
+200	41	0
+201	41	0
+202	41	0
+203	41	0
+204	41	0
+205	41	0
+206	41	0
+207	41	0
+208	41	0
+209	41	0
+210	41	0
+211	41	0
+212	41	0
+213	41	0
+214	41	0
+215	41	0
+216	41	0
+217	41	0
+218	41	0
+219	41	0
+220	41	0
+221	41	0
+222	41	0
+223	41	0
+224	41	0
+225	41	0
+226	41	0
+227	41	0
+228	41	0
+229	41	0
+230	41	0
+231	41	0
+232	41	0
+233	41	0
+234	41	0
+235	41	0
+236	41	0
+237	41	0
+238	41	0
+239	41	0
+240	41	0
+241	41	0
+242	41	0
+243	41	0
+244	41	0
+245	41	0
+246	41	0
+247	41	0
+248	41	0
+249	41	0
+250	41	0
+251	41	0
+252	41	0
+253	41	0
+254	41	0
+255	41	0
+256	41	0
+257	41	0
+258	41	0
+259	41	0
+260	41	0
+261	41	0
+262	41	0
+263	41	0
+264	41	0
+265	41	0
+266	41	0
+267	41	0
+268	41	0
+269	41	0
+270	41	0
+271	41	0
+272	41	0
+273	41	0
+274	41	0
+275	41	0
+276	41	0
+277	41	0
+278	41	0
+279	41	0
+280	41	0
+281	41	0
+282	41	0
+283	41	0
+284	41	0
+285	41	0
+286	41	0
+287	41	0
+288	41	0
+289	41	0
+290	41	0
+291	41	0
+292	41	0
+293	41	0
+294	41	0
+295	41	0
+296	41	0
+297	41	0
+298	41	0
+299	41	0
+300	41	0
+301	41	0
+302	41	0
+303	41	0
+304	41	0
+305	41	0
+306	41	0
+307	41	0
+308	41	0
+309	41	0
+310	41	0
+311	41	0
+312	41	0
+313	41	0
+314	41	0
+315	41	0
+316	41	0
+317	41	0
+318	41	0
+319	41	0
+320	41	0
+321	41	0
+322	41	0
+323	41	0
+324	41	0
+325	41	0
+326	41	0
+327	41	0
+328	41	0
+329	41	0
+330	41	0
+331	41	0
+332	41	0
+333	41	0
+334	41	0
+335	41	0
+336	41	0
+337	41	0
+338	41	0
+339	41	0
+340	41	0
+341	41	0
+342	41	0
+343	41	0
+344	41	0
+345	41	0
+346	41	0
+347	41	0
+348	41	0
+349	41	0
+350	41	0
+351	41	0
+352	41	0
+353	41	0
+354	41	0
+355	41	0
+356	41	0
+357	41	0
+358	41	0
+359	41	0
+360	41	0
+0	41.5	0
+1	41.5	0
+2	41.5	0
+3	41.5	0
+4	41.5	0
+5	41.5	0
+6	41.5	0
+7	41.5	0
+8	41.5	0
+9	41.5	0
+10	41.5	0
+11	41.5	0
+12	41.5	0
+13	41.5	0
+14	41.5	0
+15	41.5	0
+16	41.5	0
+17	41.5	0
+18	41.5	0
+19	41.5	0
+20	41.5	0
+21	41.5	0
+22	41.5	0
+23	41.5	0
+24	41.5	0
+25	41.5	0
+26	41.5	0
+27	41.5	0
+28	41.5	0
+29	41.5	0
+30	41.5	0
+31	41.5	0
+32	41.5	0
+33	41.5	0
+34	41.5	0
+35	41.5	0
+36	41.5	0
+37	41.5	0
+38	41.5	0
+39	41.5	0
+40	41.5	0
+41	41.5	0
+42	41.5	0
+43	41.5	0
+44	41.5	0
+45	41.5	0
+46	41.5	0
+47	41.5	0
+48	41.5	0
+49	41.5	0
+50	41.5	0
+51	41.5	0
+52	41.5	0
+53	41.5	0
+54	41.5	0
+55	41.5	0
+56	41.5	0
+57	41.5	0
+58	41.5	0
+59	41.5	0
+60	41.5	0
+61	41.5	0
+62	41.5	0
+63	41.5	0
+64	41.5	0
+65	41.5	0
+66	41.5	0
+67	41.5	0
+68	41.5	0
+69	41.5	0
+70	41.5	0
+71	41.5	0
+72	41.5	0
+73	41.5	0
+74	41.5	0
+75	41.5	0
+76	41.5	0
+77	41.5	0
+78	41.5	0
+79	41.5	0
+80	41.5	0
+81	41.5	0
+82	41.5	0
+83	41.5	0
+84	41.5	0
+85	41.5	0
+86	41.5	0
+87	41.5	0
+88	41.5	0
+89	41.5	0
+90	41.5	0
+91	41.5	0
+92	41.5	0
+93	41.5	0
+94	41.5	0
+95	41.5	0
+96	41.5	0
+97	41.5	0
+98	41.5	0
+99	41.5	0
+100	41.5	0
+101	41.5	0
+102	41.5	0
+103	41.5	0
+104	41.5	0
+105	41.5	0
+106	41.5	0
+107	41.5	0
+108	41.5	0
+109	41.5	0
+110	41.5	0
+111	41.5	0
+112	41.5	0
+113	41.5	0
+114	41.5	0
+115	41.5	0
+116	41.5	0
+117	41.5	0
+118	41.5	0
+119	41.5	0
+120	41.5	0
+121	41.5	0
+122	41.5	0
+123	41.5	0
+124	41.5	0
+125	41.5	0
+126	41.5	0
+127	41.5	0
+128	41.5	0
+129	41.5	0
+130	41.5	0
+131	41.5	0
+132	41.5	0
+133	41.5	0
+134	41.5	0
+135	41.5	0
+136	41.5	0
+137	41.5	0
+138	41.5	0
+139	41.5	0
+140	41.5	0
+141	41.5	0
+142	41.5	0
+143	41.5	0
+144	41.5	0
+145	41.5	0
+146	41.5	0
+147	41.5	0
+148	41.5	0
+149	41.5	0
+150	41.5	0
+151	41.5	0
+152	41.5	0
+153	41.5	0
+154	41.5	0
+155	41.5	0
+156	41.5	0
+157	41.5	0
+158	41.5	0
+159	41.5	0
+160	41.5	0
+161	41.5	0
+162	41.5	0
+163	41.5	0
+164	41.5	0
+165	41.5	0
+166	41.5	0
+167	41.5	0
+168	41.5	0
+169	41.5	0
+170	41.5	0
+171	41.5	0
+172	41.5	0
+173	41.5	0
+174	41.5	0
+175	41.5	0
+176	41.5	0
+177	41.5	0
+178	41.5	0
+179	41.5	0
+180	41.5	0
+181	41.5	0
+182	41.5	0
+183	41.5	0
+184	41.5	0
+185	41.5	0
+186	41.5	0
+187	41.5	0
+188	41.5	0
+189	41.5	0
+190	41.5	0
+191	41.5	0
+192	41.5	0
+193	41.5	0
+194	41.5	0
+195	41.5	0
+196	41.5	0
+197	41.5	0
+198	41.5	0
+199	41.5	0
+200	41.5	0
+201	41.5	0
+202	41.5	0
+203	41.5	0
+204	41.5	0
+205	41.5	0
+206	41.5	0
+207	41.5	0
+208	41.5	0
+209	41.5	0
+210	41.5	0
+211	41.5	0
+212	41.5	0
+213	41.5	0
+214	41.5	0
+215	41.5	0
+216	41.5	0
+217	41.5	0
+218	41.5	0
+219	41.5	0
+220	41.5	0
+221	41.5	0
+222	41.5	0
+223	41.5	0
+224	41.5	0
+225	41.5	0
+226	41.5	0
+227	41.5	0
+228	41.5	0
+229	41.5	0
+230	41.5	0
+231	41.5	0
+232	41.5	0
+233	41.5	0
+234	41.5	0
+235	41.5	0
+236	41.5	0
+237	41.5	0
+238	41.5	0
+239	41.5	0
+240	41.5	0
+241	41.5	0
+242	41.5	0
+243	41.5	0
+244	41.5	0
+245	41.5	0
+246	41.5	0
+247	41.5	0
+248	41.5	0
+249	41.5	0
+250	41.5	0
+251	41.5	0
+252	41.5	0
+253	41.5	0
+254	41.5	0
+255	41.5	0
+256	41.5	0
+257	41.5	0
+258	41.5	0
+259	41.5	0
+260	41.5	0
+261	41.5	0
+262	41.5	0
+263	41.5	0
+264	41.5	0
+265	41.5	0
+266	41.5	0
+267	41.5	0
+268	41.5	0
+269	41.5	0
+270	41.5	0
+271	41.5	0
+272	41.5	0
+273	41.5	0
+274	41.5	0
+275	41.5	0
+276	41.5	0
+277	41.5	0
+278	41.5	0
+279	41.5	0
+280	41.5	0
+281	41.5	0
+282	41.5	0
+283	41.5	0
+284	41.5	0
+285	41.5	0
+286	41.5	0
+287	41.5	0
+288	41.5	0
+289	41.5	0
+290	41.5	0
+291	41.5	0
+292	41.5	0
+293	41.5	0
+294	41.5	0
+295	41.5	0
+296	41.5	0
+297	41.5	0
+298	41.5	0
+299	41.5	0
+300	41.5	0
+301	41.5	0
+302	41.5	0
+303	41.5	0
+304	41.5	0
+305	41.5	0
+306	41.5	0
+307	41.5	0
+308	41.5	0
+309	41.5	0
+310	41.5	0
+311	41.5	0
+312	41.5	0
+313	41.5	0
+314	41.5	0
+315	41.5	0
+316	41.5	0
+317	41.5	0
+318	41.5	0
+319	41.5	0
+320	41.5	0
+321	41.5	0
+322	41.5	0
+323	41.5	0
+324	41.5	0
+325	41.5	0
+326	41.5	0
+327	41.5	0
+328	41.5	0
+329	41.5	0
+330	41.5	0
+331	41.5	0
+332	41.5	0
+333	41.5	0
+334	41.5	0
+335	41.5	0
+336	41.5	0
+337	41.5	0
+338	41.5	0
+339	41.5	0
+340	41.5	0
+341	41.5	0
+342	41.5	0
+343	41.5	0
+344	41.5	0
+345	41.5	0
+346	41.5	0
+347	41.5	0
+348	41.5	0
+349	41.5	0
+350	41.5	0
+351	41.5	0
+352	41.5	0
+353	41.5	0
+354	41.5	0
+355	41.5	0
+356	41.5	0
+357	41.5	0
+358	41.5	0
+359	41.5	0
+360	41.5	0
+0	42	0
+1	42	0
+2	42	0
+3	42	0
+4	42	0
+5	42	0
+6	42	0
+7	42	0
+8	42	0
+9	42	0
+10	42	0
+11	42	0
+12	42	0
+13	42	0
+14	42	0
+15	42	0
+16	42	0
+17	42	0
+18	42	0
+19	42	0
+20	42	0
+21	42	0
+22	42	0
+23	42	0
+24	42	0
+25	42	0
+26	42	0
+27	42	0
+28	42	0
+29	42	0
+30	42	0
+31	42	0
+32	42	0
+33	42	0
+34	42	0
+35	42	0
+36	42	0
+37	42	0
+38	42	0
+39	42	0
+40	42	0
+41	42	0
+42	42	0
+43	42	0
+44	42	0
+45	42	0
+46	42	0
+47	42	0
+48	42	0
+49	42	0
+50	42	0
+51	42	0
+52	42	0
+53	42	0
+54	42	0
+55	42	0
+56	42	0
+57	42	0
+58	42	0
+59	42	0
+60	42	0
+61	42	0
+62	42	0
+63	42	0
+64	42	0
+65	42	0
+66	42	0
+67	42	0
+68	42	0
+69	42	0
+70	42	0
+71	42	0
+72	42	0
+73	42	0
+74	42	0
+75	42	0
+76	42	0
+77	42	0
+78	42	0
+79	42	0
+80	42	0
+81	42	0
+82	42	0
+83	42	0
+84	42	0
+85	42	0
+86	42	0
+87	42	0
+88	42	0
+89	42	0
+90	42	0
+91	42	0
+92	42	0
+93	42	0
+94	42	0
+95	42	0
+96	42	0
+97	42	0
+98	42	0
+99	42	0
+100	42	0
+101	42	0
+102	42	0
+103	42	0
+104	42	0
+105	42	0
+106	42	0
+107	42	0
+108	42	0
+109	42	0
+110	42	0
+111	42	0
+112	42	0
+113	42	0
+114	42	0
+115	42	0
+116	42	0
+117	42	0
+118	42	0
+119	42	0
+120	42	0
+121	42	0
+122	42	0
+123	42	0
+124	42	0
+125	42	0
+126	42	0
+127	42	0
+128	42	0
+129	42	0
+130	42	0
+131	42	0
+132	42	0
+133	42	0
+134	42	0
+135	42	0
+136	42	0
+137	42	0
+138	42	0
+139	42	0
+140	42	0
+141	42	0
+142	42	0
+143	42	0
+144	42	0
+145	42	0
+146	42	0
+147	42	0
+148	42	0
+149	42	0
+150	42	0
+151	42	0
+152	42	0
+153	42	0
+154	42	0
+155	42	0
+156	42	0
+157	42	0
+158	42	0
+159	42	0
+160	42	0
+161	42	0
+162	42	0
+163	42	0
+164	42	0
+165	42	0
+166	42	0
+167	42	0
+168	42	0
+169	42	0
+170	42	0
+171	42	0
+172	42	0
+173	42	0
+174	42	0
+175	42	0
+176	42	0
+177	42	0
+178	42	0
+179	42	0
+180	42	0
+181	42	0
+182	42	0
+183	42	0
+184	42	0
+185	42	0
+186	42	0
+187	42	0
+188	42	0
+189	42	0
+190	42	0
+191	42	0
+192	42	0
+193	42	0
+194	42	0
+195	42	0
+196	42	0
+197	42	0
+198	42	0
+199	42	0
+200	42	0
+201	42	0
+202	42	0
+203	42	0
+204	42	0
+205	42	0
+206	42	0
+207	42	0
+208	42	0
+209	42	0
+210	42	0
+211	42	0
+212	42	0
+213	42	0
+214	42	0
+215	42	0
+216	42	0
+217	42	0
+218	42	0
+219	42	0
+220	42	0
+221	42	0
+222	42	0
+223	42	0
+224	42	0
+225	42	0
+226	42	0
+227	42	0
+228	42	0
+229	42	0
+230	42	0
+231	42	0
+232	42	0
+233	42	0
+234	42	0
+235	42	0
+236	42	0
+237	42	0
+238	42	0
+239	42	0
+240	42	0
+241	42	0
+242	42	0
+243	42	0
+244	42	0
+245	42	0
+246	42	0
+247	42	0
+248	42	0
+249	42	0
+250	42	0
+251	42	0
+252	42	0
+253	42	0
+254	42	0
+255	42	0
+256	42	0
+257	42	0
+258	42	0
+259	42	0
+260	42	0
+261	42	0
+262	42	0
+263	42	0
+264	42	0
+265	42	0
+266	42	0
+267	42	0
+268	42	0
+269	42	0
+270	42	0
+271	42	0
+272	42	0
+273	42	0
+274	42	0
+275	42	0
+276	42	0
+277	42	0
+278	42	0
+279	42	0
+280	42	0
+281	42	0
+282	42	0
+283	42	0
+284	42	0
+285	42	0
+286	42	0
+287	42	0
+288	42	0
+289	42	0
+290	42	0
+291	42	0
+292	42	0
+293	42	0
+294	42	0
+295	42	0
+296	42	0
+297	42	0
+298	42	0
+299	42	0
+300	42	0
+301	42	0
+302	42	0
+303	42	0
+304	42	0
+305	42	0
+306	42	0
+307	42	0
+308	42	0
+309	42	0
+310	42	0
+311	42	0
+312	42	0
+313	42	0
+314	42	0
+315	42	0
+316	42	0
+317	42	0
+318	42	0
+319	42	0
+320	42	0
+321	42	0
+322	42	0
+323	42	0
+324	42	0
+325	42	0
+326	42	0
+327	42	0
+328	42	0
+329	42	0
+330	42	0
+331	42	0
+332	42	0
+333	42	0
+334	42	0
+335	42	0
+336	42	0
+337	42	0
+338	42	0
+339	42	0
+340	42	0
+341	42	0
+342	42	0
+343	42	0
+344	42	0
+345	42	0
+346	42	0
+347	42	0
+348	42	0
+349	42	0
+350	42	0
+351	42	0
+352	42	0
+353	42	0
+354	42	0
+355	42	0
+356	42	0
+357	42	0
+358	42	0
+359	42	0
+360	42	0
+0	42.5	0
+1	42.5	0
+2	42.5	0
+3	42.5	0
+4	42.5	0
+5	42.5	0
+6	42.5	0
+7	42.5	0
+8	42.5	0
+9	42.5	0
+10	42.5	0
+11	42.5	0
+12	42.5	0
+13	42.5	0
+14	42.5	0
+15	42.5	0
+16	42.5	0
+17	42.5	0
+18	42.5	0
+19	42.5	0
+20	42.5	0
+21	42.5	0
+22	42.5	0
+23	42.5	0
+24	42.5	0
+25	42.5	0
+26	42.5	0
+27	42.5	0
+28	42.5	0
+29	42.5	0
+30	42.5	0
+31	42.5	0
+32	42.5	0
+33	42.5	0
+34	42.5	0
+35	42.5	0
+36	42.5	0
+37	42.5	0
+38	42.5	0
+39	42.5	0
+40	42.5	0
+41	42.5	0
+42	42.5	0
+43	42.5	0
+44	42.5	0
+45	42.5	0
+46	42.5	0
+47	42.5	0
+48	42.5	0
+49	42.5	0
+50	42.5	0
+51	42.5	0
+52	42.5	0
+53	42.5	0
+54	42.5	0
+55	42.5	0
+56	42.5	0
+57	42.5	0
+58	42.5	0
+59	42.5	0
+60	42.5	0
+61	42.5	0
+62	42.5	0
+63	42.5	0
+64	42.5	0
+65	42.5	0
+66	42.5	0
+67	42.5	0
+68	42.5	0
+69	42.5	0
+70	42.5	0
+71	42.5	0
+72	42.5	0
+73	42.5	0
+74	42.5	0
+75	42.5	0
+76	42.5	0
+77	42.5	0
+78	42.5	0
+79	42.5	0
+80	42.5	0
+81	42.5	0
+82	42.5	0
+83	42.5	0
+84	42.5	0
+85	42.5	0
+86	42.5	0
+87	42.5	0
+88	42.5	0
+89	42.5	0
+90	42.5	0
+91	42.5	0
+92	42.5	0
+93	42.5	0
+94	42.5	0
+95	42.5	0
+96	42.5	0
+97	42.5	0
+98	42.5	0
+99	42.5	0
+100	42.5	0
+101	42.5	0
+102	42.5	0
+103	42.5	0
+104	42.5	0
+105	42.5	0
+106	42.5	0
+107	42.5	0
+108	42.5	0
+109	42.5	0
+110	42.5	0
+111	42.5	0
+112	42.5	0
+113	42.5	0
+114	42.5	0
+115	42.5	0
+116	42.5	0
+117	42.5	0
+118	42.5	0
+119	42.5	0
+120	42.5	0
+121	42.5	0
+122	42.5	0
+123	42.5	0
+124	42.5	0
+125	42.5	0
+126	42.5	0
+127	42.5	0
+128	42.5	0
+129	42.5	0
+130	42.5	0
+131	42.5	0
+132	42.5	0
+133	42.5	0
+134	42.5	0
+135	42.5	0
+136	42.5	0
+137	42.5	0
+138	42.5	0
+139	42.5	0
+140	42.5	0
+141	42.5	0
+142	42.5	0
+143	42.5	0
+144	42.5	0
+145	42.5	0
+146	42.5	0
+147	42.5	0
+148	42.5	0
+149	42.5	0
+150	42.5	0
+151	42.5	0
+152	42.5	0
+153	42.5	0
+154	42.5	0
+155	42.5	0
+156	42.5	0
+157	42.5	0
+158	42.5	0
+159	42.5	0
+160	42.5	0
+161	42.5	0
+162	42.5	0
+163	42.5	0
+164	42.5	0
+165	42.5	0
+166	42.5	0
+167	42.5	0
+168	42.5	0
+169	42.5	0
+170	42.5	0
+171	42.5	0
+172	42.5	0
+173	42.5	0
+174	42.5	0
+175	42.5	0
+176	42.5	0
+177	42.5	0
+178	42.5	0
+179	42.5	0
+180	42.5	0
+181	42.5	0
+182	42.5	0
+183	42.5	0
+184	42.5	0
+185	42.5	0
+186	42.5	0
+187	42.5	0
+188	42.5	0
+189	42.5	0
+190	42.5	0
+191	42.5	0
+192	42.5	0
+193	42.5	0
+194	42.5	0
+195	42.5	0
+196	42.5	0
+197	42.5	0
+198	42.5	0
+199	42.5	0
+200	42.5	0
+201	42.5	0
+202	42.5	0
+203	42.5	0
+204	42.5	0
+205	42.5	0
+206	42.5	0
+207	42.5	0
+208	42.5	0
+209	42.5	0
+210	42.5	0
+211	42.5	0
+212	42.5	0
+213	42.5	0
+214	42.5	0
+215	42.5	0
+216	42.5	0
+217	42.5	0
+218	42.5	0
+219	42.5	0
+220	42.5	0
+221	42.5	0
+222	42.5	0
+223	42.5	0
+224	42.5	0
+225	42.5	0
+226	42.5	0
+227	42.5	0
+228	42.5	0
+229	42.5	0
+230	42.5	0
+231	42.5	0
+232	42.5	0
+233	42.5	0
+234	42.5	0
+235	42.5	0
+236	42.5	0
+237	42.5	0
+238	42.5	0
+239	42.5	0
+240	42.5	0
+241	42.5	0
+242	42.5	0
+243	42.5	0
+244	42.5	0
+245	42.5	0
+246	42.5	0
+247	42.5	0
+248	42.5	0
+249	42.5	0
+250	42.5	0
+251	42.5	0
+252	42.5	0
+253	42.5	0
+254	42.5	0
+255	42.5	0
+256	42.5	0
+257	42.5	0
+258	42.5	0
+259	42.5	0
+260	42.5	0
+261	42.5	0
+262	42.5	0
+263	42.5	0
+264	42.5	0
+265	42.5	0
+266	42.5	0
+267	42.5	0
+268	42.5	0
+269	42.5	0
+270	42.5	0
+271	42.5	0
+272	42.5	0
+273	42.5	0
+274	42.5	0
+275	42.5	0
+276	42.5	0
+277	42.5	0
+278	42.5	0
+279	42.5	0
+280	42.5	0
+281	42.5	0
+282	42.5	0
+283	42.5	0
+284	42.5	0
+285	42.5	0
+286	42.5	0
+287	42.5	0
+288	42.5	0
+289	42.5	0
+290	42.5	0
+291	42.5	0
+292	42.5	0
+293	42.5	0
+294	42.5	0
+295	42.5	0
+296	42.5	0
+297	42.5	0
+298	42.5	0
+299	42.5	0
+300	42.5	0
+301	42.5	0
+302	42.5	0
+303	42.5	0
+304	42.5	0
+305	42.5	0
+306	42.5	0
+307	42.5	0
+308	42.5	0
+309	42.5	0
+310	42.5	0
+311	42.5	0
+312	42.5	0
+313	42.5	0
+314	42.5	0
+315	42.5	0
+316	42.5	0
+317	42.5	0
+318	42.5	0
+319	42.5	0
+320	42.5	0
+321	42.5	0
+322	42.5	0
+323	42.5	0
+324	42.5	0
+325	42.5	0
+326	42.5	0
+327	42.5	0
+328	42.5	0
+329	42.5	0
+330	42.5	0
+331	42.5	0
+332	42.5	0
+333	42.5	0
+334	42.5	0
+335	42.5	0
+336	42.5	0
+337	42.5	0
+338	42.5	0
+339	42.5	0
+340	42.5	0
+341	42.5	0
+342	42.5	0
+343	42.5	0
+344	42.5	0
+345	42.5	0
+346	42.5	0
+347	42.5	0
+348	42.5	0
+349	42.5	0
+350	42.5	0
+351	42.5	0
+352	42.5	0
+353	42.5	0
+354	42.5	0
+355	42.5	0
+356	42.5	0
+357	42.5	0
+358	42.5	0
+359	42.5	0
+360	42.5	0
+0	43	0
+1	43	0
+2	43	0
+3	43	0
+4	43	0
+5	43	0
+6	43	0
+7	43	0
+8	43	0
+9	43	0
+10	43	0
+11	43	0
+12	43	0
+13	43	0
+14	43	0
+15	43	0
+16	43	0
+17	43	0
+18	43	0
+19	43	0
+20	43	0
+21	43	0
+22	43	0
+23	43	0
+24	43	0
+25	43	0
+26	43	0
+27	43	0
+28	43	0
+29	43	0
+30	43	0
+31	43	0
+32	43	0
+33	43	0
+34	43	0
+35	43	0
+36	43	0
+37	43	0
+38	43	0
+39	43	0
+40	43	0
+41	43	0
+42	43	0
+43	43	0
+44	43	0
+45	43	0
+46	43	0
+47	43	0
+48	43	0
+49	43	0
+50	43	0
+51	43	0
+52	43	0
+53	43	0
+54	43	0
+55	43	0
+56	43	0
+57	43	0
+58	43	0
+59	43	0
+60	43	0
+61	43	0
+62	43	0
+63	43	0
+64	43	0
+65	43	0
+66	43	0
+67	43	0
+68	43	0
+69	43	0
+70	43	0
+71	43	0
+72	43	0
+73	43	0
+74	43	0
+75	43	0
+76	43	0
+77	43	0
+78	43	0
+79	43	0
+80	43	0
+81	43	0
+82	43	0
+83	43	0
+84	43	0
+85	43	0
+86	43	0
+87	43	0
+88	43	0
+89	43	0
+90	43	0
+91	43	0
+92	43	0
+93	43	0
+94	43	0
+95	43	0
+96	43	0
+97	43	0
+98	43	0
+99	43	0
+100	43	0
+101	43	0
+102	43	0
+103	43	0
+104	43	0
+105	43	0
+106	43	0
+107	43	0
+108	43	0
+109	43	0
+110	43	0
+111	43	0
+112	43	0
+113	43	0
+114	43	0
+115	43	0
+116	43	0
+117	43	0
+118	43	0
+119	43	0
+120	43	0
+121	43	0
+122	43	0
+123	43	0
+124	43	0
+125	43	0
+126	43	0
+127	43	0
+128	43	0
+129	43	0
+130	43	0
+131	43	0
+132	43	0
+133	43	0
+134	43	0
+135	43	0
+136	43	0
+137	43	0
+138	43	0
+139	43	0
+140	43	0
+141	43	0
+142	43	0
+143	43	0
+144	43	0
+145	43	0
+146	43	0
+147	43	0
+148	43	0
+149	43	0
+150	43	0
+151	43	0
+152	43	0
+153	43	0
+154	43	0
+155	43	0
+156	43	0
+157	43	0
+158	43	0
+159	43	0
+160	43	0
+161	43	0
+162	43	0
+163	43	0
+164	43	0
+165	43	0
+166	43	0
+167	43	0
+168	43	0
+169	43	0
+170	43	0
+171	43	0
+172	43	0
+173	43	0
+174	43	0
+175	43	0
+176	43	0
+177	43	0
+178	43	0
+179	43	0
+180	43	0
+181	43	0
+182	43	0
+183	43	0
+184	43	0
+185	43	0
+186	43	0
+187	43	0
+188	43	0
+189	43	0
+190	43	0
+191	43	0
+192	43	0
+193	43	0
+194	43	0
+195	43	0
+196	43	0
+197	43	0
+198	43	0
+199	43	0
+200	43	0
+201	43	0
+202	43	0
+203	43	0
+204	43	0
+205	43	0
+206	43	0
+207	43	0
+208	43	0
+209	43	0
+210	43	0
+211	43	0
+212	43	0
+213	43	0
+214	43	0
+215	43	0
+216	43	0
+217	43	0
+218	43	0
+219	43	0
+220	43	0
+221	43	0
+222	43	0
+223	43	0
+224	43	0
+225	43	0
+226	43	0
+227	43	0
+228	43	0
+229	43	0
+230	43	0
+231	43	0
+232	43	0
+233	43	0
+234	43	0
+235	43	0
+236	43	0
+237	43	0
+238	43	0
+239	43	0
+240	43	0
+241	43	0
+242	43	0
+243	43	0
+244	43	0
+245	43	0
+246	43	0
+247	43	0
+248	43	0
+249	43	0
+250	43	0
+251	43	0
+252	43	0
+253	43	0
+254	43	0
+255	43	0
+256	43	0
+257	43	0
+258	43	0
+259	43	0
+260	43	0
+261	43	0
+262	43	0
+263	43	0
+264	43	0
+265	43	0
+266	43	0
+267	43	0
+268	43	0
+269	43	0
+270	43	0
+271	43	0
+272	43	0
+273	43	0
+274	43	0
+275	43	0
+276	43	0
+277	43	0
+278	43	0
+279	43	0
+280	43	0
+281	43	0
+282	43	0
+283	43	0
+284	43	0
+285	43	0
+286	43	0
+287	43	0
+288	43	0
+289	43	0
+290	43	0
+291	43	0
+292	43	0
+293	43	0
+294	43	0
+295	43	0
+296	43	0
+297	43	0
+298	43	0
+299	43	0
+300	43	0
+301	43	0
+302	43	0
+303	43	0
+304	43	0
+305	43	0
+306	43	0
+307	43	0
+308	43	0
+309	43	0
+310	43	0
+311	43	0
+312	43	0
+313	43	0
+314	43	0
+315	43	0
+316	43	0
+317	43	0
+318	43	0
+319	43	0
+320	43	0
+321	43	0
+322	43	0
+323	43	0
+324	43	0
+325	43	0
+326	43	0
+327	43	0
+328	43	0
+329	43	0
+330	43	0
+331	43	0
+332	43	0
+333	43	0
+334	43	0
+335	43	0
+336	43	0
+337	43	0
+338	43	0
+339	43	0
+340	43	0
+341	43	0
+342	43	0
+343	43	0
+344	43	0
+345	43	0
+346	43	0
+347	43	0
+348	43	0
+349	43	0
+350	43	0
+351	43	0
+352	43	0
+353	43	0
+354	43	0
+355	43	0
+356	43	0
+357	43	0
+358	43	0
+359	43	0
+360	43	0
+0	43.5	0
+1	43.5	0
+2	43.5	0
+3	43.5	0
+4	43.5	0
+5	43.5	0
+6	43.5	0
+7	43.5	0
+8	43.5	0
+9	43.5	0
+10	43.5	0
+11	43.5	0
+12	43.5	0
+13	43.5	0
+14	43.5	0
+15	43.5	0
+16	43.5	0
+17	43.5	0
+18	43.5	0
+19	43.5	0
+20	43.5	0
+21	43.5	0
+22	43.5	0
+23	43.5	0
+24	43.5	0
+25	43.5	0
+26	43.5	0
+27	43.5	0
+28	43.5	0
+29	43.5	0
+30	43.5	0
+31	43.5	0
+32	43.5	0
+33	43.5	0
+34	43.5	0
+35	43.5	0
+36	43.5	0
+37	43.5	0
+38	43.5	0
+39	43.5	0
+40	43.5	0
+41	43.5	0
+42	43.5	0
+43	43.5	0
+44	43.5	0
+45	43.5	0
+46	43.5	0
+47	43.5	0
+48	43.5	0
+49	43.5	0
+50	43.5	0
+51	43.5	0
+52	43.5	0
+53	43.5	0
+54	43.5	0
+55	43.5	0
+56	43.5	0
+57	43.5	0
+58	43.5	0
+59	43.5	0
+60	43.5	0
+61	43.5	0
+62	43.5	0
+63	43.5	0
+64	43.5	0
+65	43.5	0
+66	43.5	0
+67	43.5	0
+68	43.5	0
+69	43.5	0
+70	43.5	0
+71	43.5	0
+72	43.5	0
+73	43.5	0
+74	43.5	0
+75	43.5	0
+76	43.5	0
+77	43.5	0
+78	43.5	0
+79	43.5	0
+80	43.5	0
+81	43.5	0
+82	43.5	0
+83	43.5	0
+84	43.5	0
+85	43.5	0
+86	43.5	0
+87	43.5	0
+88	43.5	0
+89	43.5	0
+90	43.5	0
+91	43.5	0
+92	43.5	0
+93	43.5	0
+94	43.5	0
+95	43.5	0
+96	43.5	0
+97	43.5	0
+98	43.5	0
+99	43.5	0
+100	43.5	0
+101	43.5	0
+102	43.5	0
+103	43.5	0
+104	43.5	0
+105	43.5	0
+106	43.5	0
+107	43.5	0
+108	43.5	0
+109	43.5	0
+110	43.5	0
+111	43.5	0
+112	43.5	0
+113	43.5	0
+114	43.5	0
+115	43.5	0
+116	43.5	0
+117	43.5	0
+118	43.5	0
+119	43.5	0
+120	43.5	0
+121	43.5	0
+122	43.5	0
+123	43.5	0
+124	43.5	0
+125	43.5	0
+126	43.5	0
+127	43.5	0
+128	43.5	0
+129	43.5	0
+130	43.5	0
+131	43.5	0
+132	43.5	0
+133	43.5	0
+134	43.5	0
+135	43.5	0
+136	43.5	0
+137	43.5	0
+138	43.5	0
+139	43.5	0
+140	43.5	0
+141	43.5	0
+142	43.5	0
+143	43.5	0
+144	43.5	0
+145	43.5	0
+146	43.5	0
+147	43.5	0
+148	43.5	0
+149	43.5	0
+150	43.5	0
+151	43.5	0
+152	43.5	0
+153	43.5	0
+154	43.5	0
+155	43.5	0
+156	43.5	0
+157	43.5	0
+158	43.5	0
+159	43.5	0
+160	43.5	0
+161	43.5	0
+162	43.5	0
+163	43.5	0
+164	43.5	0
+165	43.5	0
+166	43.5	0
+167	43.5	0
+168	43.5	0
+169	43.5	0
+170	43.5	0
+171	43.5	0
+172	43.5	0
+173	43.5	0
+174	43.5	0
+175	43.5	0
+176	43.5	0
+177	43.5	0
+178	43.5	0
+179	43.5	0
+180	43.5	0
+181	43.5	0
+182	43.5	0
+183	43.5	0
+184	43.5	0
+185	43.5	0
+186	43.5	0
+187	43.5	0
+188	43.5	0
+189	43.5	0
+190	43.5	0
+191	43.5	0
+192	43.5	0
+193	43.5	0
+194	43.5	0
+195	43.5	0
+196	43.5	0
+197	43.5	0
+198	43.5	0
+199	43.5	0
+200	43.5	0
+201	43.5	0
+202	43.5	0
+203	43.5	0
+204	43.5	0
+205	43.5	0
+206	43.5	0
+207	43.5	0
+208	43.5	0
+209	43.5	0
+210	43.5	0
+211	43.5	0
+212	43.5	0
+213	43.5	0
+214	43.5	0
+215	43.5	0
+216	43.5	0
+217	43.5	0
+218	43.5	0
+219	43.5	0
+220	43.5	0
+221	43.5	0
+222	43.5	0
+223	43.5	0
+224	43.5	0
+225	43.5	0
+226	43.5	0
+227	43.5	0
+228	43.5	0
+229	43.5	0
+230	43.5	0
+231	43.5	0
+232	43.5	0
+233	43.5	0
+234	43.5	0
+235	43.5	0
+236	43.5	0
+237	43.5	0
+238	43.5	0
+239	43.5	0
+240	43.5	0
+241	43.5	0
+242	43.5	0
+243	43.5	0
+244	43.5	0
+245	43.5	0
+246	43.5	0
+247	43.5	0
+248	43.5	0
+249	43.5	0
+250	43.5	0
+251	43.5	0
+252	43.5	0
+253	43.5	0
+254	43.5	0
+255	43.5	0
+256	43.5	0
+257	43.5	0
+258	43.5	0
+259	43.5	0
+260	43.5	0
+261	43.5	0
+262	43.5	0
+263	43.5	0
+264	43.5	0
+265	43.5	0
+266	43.5	0
+267	43.5	0
+268	43.5	0
+269	43.5	0
+270	43.5	0
+271	43.5	0
+272	43.5	0
+273	43.5	0
+274	43.5	0
+275	43.5	0
+276	43.5	0
+277	43.5	0
+278	43.5	0
+279	43.5	0
+280	43.5	0
+281	43.5	0
+282	43.5	0
+283	43.5	0
+284	43.5	0
+285	43.5	0
+286	43.5	0
+287	43.5	0
+288	43.5	0
+289	43.5	0
+290	43.5	0
+291	43.5	0
+292	43.5	0
+293	43.5	0
+294	43.5	0
+295	43.5	0
+296	43.5	0
+297	43.5	0
+298	43.5	0
+299	43.5	0
+300	43.5	0
+301	43.5	0
+302	43.5	0
+303	43.5	0
+304	43.5	0
+305	43.5	0
+306	43.5	0
+307	43.5	0
+308	43.5	0
+309	43.5	0
+310	43.5	0
+311	43.5	0
+312	43.5	0
+313	43.5	0
+314	43.5	0
+315	43.5	0
+316	43.5	0
+317	43.5	0
+318	43.5	0
+319	43.5	0
+320	43.5	0
+321	43.5	0
+322	43.5	0
+323	43.5	0
+324	43.5	0
+325	43.5	0
+326	43.5	0
+327	43.5	0
+328	43.5	0
+329	43.5	0
+330	43.5	0
+331	43.5	0
+332	43.5	0
+333	43.5	0
+334	43.5	0
+335	43.5	0
+336	43.5	0
+337	43.5	0
+338	43.5	0
+339	43.5	0
+340	43.5	0
+341	43.5	0
+342	43.5	0
+343	43.5	0
+344	43.5	0
+345	43.5	0
+346	43.5	0
+347	43.5	0
+348	43.5	0
+349	43.5	0
+350	43.5	0
+351	43.5	0
+352	43.5	0
+353	43.5	0
+354	43.5	0
+355	43.5	0
+356	43.5	0
+357	43.5	0
+358	43.5	0
+359	43.5	0
+360	43.5	0
+0	44	0
+1	44	0
+2	44	0
+3	44	0
+4	44	0
+5	44	0
+6	44	0
+7	44	0
+8	44	0
+9	44	0
+10	44	0
+11	44	0
+12	44	0
+13	44	0
+14	44	0
+15	44	0
+16	44	0
+17	44	0
+18	44	0
+19	44	0
+20	44	0
+21	44	0
+22	44	0
+23	44	0
+24	44	0
+25	44	0
+26	44	0
+27	44	0
+28	44	0
+29	44	0
+30	44	0
+31	44	0
+32	44	0
+33	44	0
+34	44	0
+35	44	0
+36	44	0
+37	44	0
+38	44	0
+39	44	0
+40	44	0
+41	44	0
+42	44	0
+43	44	0
+44	44	0
+45	44	0
+46	44	0
+47	44	0
+48	44	0
+49	44	0
+50	44	0
+51	44	0
+52	44	0
+53	44	0
+54	44	0
+55	44	0
+56	44	0
+57	44	0
+58	44	0
+59	44	0
+60	44	0
+61	44	0
+62	44	0
+63	44	0
+64	44	0
+65	44	0
+66	44	0
+67	44	0
+68	44	0
+69	44	0
+70	44	0
+71	44	0
+72	44	0
+73	44	0
+74	44	0
+75	44	0
+76	44	0
+77	44	0
+78	44	0
+79	44	0
+80	44	0
+81	44	0
+82	44	0
+83	44	0
+84	44	0
+85	44	0
+86	44	0
+87	44	0
+88	44	0
+89	44	0
+90	44	0
+91	44	0
+92	44	0
+93	44	0
+94	44	0
+95	44	0
+96	44	0
+97	44	0
+98	44	0
+99	44	0
+100	44	0
+101	44	0
+102	44	0
+103	44	0
+104	44	0
+105	44	0
+106	44	0
+107	44	0
+108	44	0
+109	44	0
+110	44	0
+111	44	0
+112	44	0
+113	44	0
+114	44	0
+115	44	0
+116	44	0
+117	44	0
+118	44	0
+119	44	0
+120	44	0
+121	44	0
+122	44	0
+123	44	0
+124	44	0
+125	44	0
+126	44	0
+127	44	0
+128	44	0
+129	44	0
+130	44	0
+131	44	0
+132	44	0
+133	44	0
+134	44	0
+135	44	0
+136	44	0
+137	44	0
+138	44	0
+139	44	0
+140	44	0
+141	44	0
+142	44	0
+143	44	0
+144	44	0
+145	44	0
+146	44	0
+147	44	0
+148	44	0
+149	44	0
+150	44	0
+151	44	0
+152	44	0
+153	44	0
+154	44	0
+155	44	0
+156	44	0
+157	44	0
+158	44	0
+159	44	0
+160	44	0
+161	44	0
+162	44	0
+163	44	0
+164	44	0
+165	44	0
+166	44	0
+167	44	0
+168	44	0
+169	44	0
+170	44	0
+171	44	0
+172	44	0
+173	44	0
+174	44	0
+175	44	0
+176	44	0
+177	44	0
+178	44	0
+179	44	0
+180	44	0
+181	44	0
+182	44	0
+183	44	0
+184	44	0
+185	44	0
+186	44	0
+187	44	0
+188	44	0
+189	44	0
+190	44	0
+191	44	0
+192	44	0
+193	44	0
+194	44	0
+195	44	0
+196	44	0
+197	44	0
+198	44	0
+199	44	0
+200	44	0
+201	44	0
+202	44	0
+203	44	0
+204	44	0
+205	44	0
+206	44	0
+207	44	0
+208	44	0
+209	44	0
+210	44	0
+211	44	0
+212	44	0
+213	44	0
+214	44	0
+215	44	0
+216	44	0
+217	44	0
+218	44	0
+219	44	0
+220	44	0
+221	44	0
+222	44	0
+223	44	0
+224	44	0
+225	44	0
+226	44	0
+227	44	0
+228	44	0
+229	44	0
+230	44	0
+231	44	0
+232	44	0
+233	44	0
+234	44	0
+235	44	0
+236	44	0
+237	44	0
+238	44	0
+239	44	0
+240	44	0
+241	44	0
+242	44	0
+243	44	0
+244	44	0
+245	44	0
+246	44	0
+247	44	0
+248	44	0
+249	44	0
+250	44	0
+251	44	0
+252	44	0
+253	44	0
+254	44	0
+255	44	0
+256	44	0
+257	44	0
+258	44	0
+259	44	0
+260	44	0
+261	44	0
+262	44	0
+263	44	0
+264	44	0
+265	44	0
+266	44	0
+267	44	0
+268	44	0
+269	44	0
+270	44	0
+271	44	0
+272	44	0
+273	44	0
+274	44	0
+275	44	0
+276	44	0
+277	44	0
+278	44	0
+279	44	0
+280	44	0
+281	44	0
+282	44	0
+283	44	0
+284	44	0
+285	44	0
+286	44	0
+287	44	0
+288	44	0
+289	44	0
+290	44	0
+291	44	0
+292	44	0
+293	44	0
+294	44	0
+295	44	0
+296	44	0
+297	44	0
+298	44	0
+299	44	0
+300	44	0
+301	44	0
+302	44	0
+303	44	0
+304	44	0
+305	44	0
+306	44	0
+307	44	0
+308	44	0
+309	44	0
+310	44	0
+311	44	0
+312	44	0
+313	44	0
+314	44	0
+315	44	0
+316	44	0
+317	44	0
+318	44	0
+319	44	0
+320	44	0
+321	44	0
+322	44	0
+323	44	0
+324	44	0
+325	44	0
+326	44	0
+327	44	0
+328	44	0
+329	44	0
+330	44	0
+331	44	0
+332	44	0
+333	44	0
+334	44	0
+335	44	0
+336	44	0
+337	44	0
+338	44	0
+339	44	0
+340	44	0
+341	44	0
+342	44	0
+343	44	0
+344	44	0
+345	44	0
+346	44	0
+347	44	0
+348	44	0
+349	44	0
+350	44	0
+351	44	0
+352	44	0
+353	44	0
+354	44	0
+355	44	0
+356	44	0
+357	44	0
+358	44	0
+359	44	0
+360	44	0
+0	44.5	0
+1	44.5	0
+2	44.5	0
+3	44.5	0
+4	44.5	0
+5	44.5	0
+6	44.5	0
+7	44.5	0
+8	44.5	0
+9	44.5	0
+10	44.5	0
+11	44.5	0
+12	44.5	0
+13	44.5	0
+14	44.5	0
+15	44.5	0
+16	44.5	0
+17	44.5	0
+18	44.5	0
+19	44.5	0
+20	44.5	0
+21	44.5	0
+22	44.5	0
+23	44.5	0
+24	44.5	0
+25	44.5	0
+26	44.5	0
+27	44.5	0
+28	44.5	0
+29	44.5	0
+30	44.5	0
+31	44.5	0
+32	44.5	0
+33	44.5	0
+34	44.5	0
+35	44.5	0
+36	44.5	0
+37	44.5	0
+38	44.5	0
+39	44.5	0
+40	44.5	0
+41	44.5	0
+42	44.5	0
+43	44.5	0
+44	44.5	0
+45	44.5	0
+46	44.5	0
+47	44.5	0
+48	44.5	0
+49	44.5	0
+50	44.5	0
+51	44.5	0
+52	44.5	0
+53	44.5	0
+54	44.5	0
+55	44.5	0
+56	44.5	0
+57	44.5	0
+58	44.5	0
+59	44.5	0
+60	44.5	0
+61	44.5	0
+62	44.5	0
+63	44.5	0
+64	44.5	0
+65	44.5	0
+66	44.5	0
+67	44.5	0
+68	44.5	0
+69	44.5	0
+70	44.5	0
+71	44.5	0
+72	44.5	0
+73	44.5	0
+74	44.5	0
+75	44.5	0
+76	44.5	0
+77	44.5	0
+78	44.5	0
+79	44.5	0
+80	44.5	0
+81	44.5	0
+82	44.5	0
+83	44.5	0
+84	44.5	0
+85	44.5	0
+86	44.5	0
+87	44.5	0
+88	44.5	0
+89	44.5	0
+90	44.5	0
+91	44.5	0
+92	44.5	0
+93	44.5	0
+94	44.5	0
+95	44.5	0
+96	44.5	0
+97	44.5	0
+98	44.5	0
+99	44.5	0
+100	44.5	0
+101	44.5	0
+102	44.5	0
+103	44.5	0
+104	44.5	0
+105	44.5	0
+106	44.5	0
+107	44.5	0
+108	44.5	0
+109	44.5	0
+110	44.5	0
+111	44.5	0
+112	44.5	0
+113	44.5	0
+114	44.5	0
+115	44.5	0
+116	44.5	0
+117	44.5	0
+118	44.5	0
+119	44.5	0
+120	44.5	0
+121	44.5	0
+122	44.5	0
+123	44.5	0
+124	44.5	0
+125	44.5	0
+126	44.5	0
+127	44.5	0
+128	44.5	0
+129	44.5	0
+130	44.5	0
+131	44.5	0
+132	44.5	0
+133	44.5	0
+134	44.5	0
+135	44.5	0
+136	44.5	0
+137	44.5	0
+138	44.5	0
+139	44.5	0
+140	44.5	0
+141	44.5	0
+142	44.5	0
+143	44.5	0
+144	44.5	0
+145	44.5	0
+146	44.5	0
+147	44.5	0
+148	44.5	0
+149	44.5	0
+150	44.5	0
+151	44.5	0
+152	44.5	0
+153	44.5	0
+154	44.5	0
+155	44.5	0
+156	44.5	0
+157	44.5	0
+158	44.5	0
+159	44.5	0
+160	44.5	0
+161	44.5	0
+162	44.5	0
+163	44.5	0
+164	44.5	0
+165	44.5	0
+166	44.5	0
+167	44.5	0
+168	44.5	0
+169	44.5	0
+170	44.5	0
+171	44.5	0
+172	44.5	0
+173	44.5	0
+174	44.5	0
+175	44.5	0
+176	44.5	0
+177	44.5	0
+178	44.5	0
+179	44.5	0
+180	44.5	0
+181	44.5	0
+182	44.5	0
+183	44.5	0
+184	44.5	0
+185	44.5	0
+186	44.5	0
+187	44.5	0
+188	44.5	0
+189	44.5	0
+190	44.5	0
+191	44.5	0
+192	44.5	0
+193	44.5	0
+194	44.5	0
+195	44.5	0
+196	44.5	0
+197	44.5	0
+198	44.5	0
+199	44.5	0
+200	44.5	0
+201	44.5	0
+202	44.5	0
+203	44.5	0
+204	44.5	0
+205	44.5	0
+206	44.5	0
+207	44.5	0
+208	44.5	0
+209	44.5	0
+210	44.5	0
+211	44.5	0
+212	44.5	0
+213	44.5	0
+214	44.5	0
+215	44.5	0
+216	44.5	0
+217	44.5	0
+218	44.5	0
+219	44.5	0
+220	44.5	0
+221	44.5	0
+222	44.5	0
+223	44.5	0
+224	44.5	0
+225	44.5	0
+226	44.5	0
+227	44.5	0
+228	44.5	0
+229	44.5	0
+230	44.5	0
+231	44.5	0
+232	44.5	0
+233	44.5	0
+234	44.5	0
+235	44.5	0
+236	44.5	0
+237	44.5	0
+238	44.5	0
+239	44.5	0
+240	44.5	0
+241	44.5	0
+242	44.5	0
+243	44.5	0
+244	44.5	0
+245	44.5	0
+246	44.5	0
+247	44.5	0
+248	44.5	0
+249	44.5	0
+250	44.5	0
+251	44.5	0
+252	44.5	0
+253	44.5	0
+254	44.5	0
+255	44.5	0
+256	44.5	0
+257	44.5	0
+258	44.5	0
+259	44.5	0
+260	44.5	0
+261	44.5	0
+262	44.5	0
+263	44.5	0
+264	44.5	0
+265	44.5	0
+266	44.5	0
+267	44.5	0
+268	44.5	0
+269	44.5	0
+270	44.5	0
+271	44.5	0
+272	44.5	0
+273	44.5	0
+274	44.5	0
+275	44.5	0
+276	44.5	0
+277	44.5	0
+278	44.5	0
+279	44.5	0
+280	44.5	0
+281	44.5	0
+282	44.5	0
+283	44.5	0
+284	44.5	0
+285	44.5	0
+286	44.5	0
+287	44.5	0
+288	44.5	0
+289	44.5	0
+290	44.5	0
+291	44.5	0
+292	44.5	0
+293	44.5	0
+294	44.5	0
+295	44.5	0
+296	44.5	0
+297	44.5	0
+298	44.5	0
+299	44.5	0
+300	44.5	0
+301	44.5	0
+302	44.5	0
+303	44.5	0
+304	44.5	0
+305	44.5	0
+306	44.5	0
+307	44.5	0
+308	44.5	0
+309	44.5	0
+310	44.5	0
+311	44.5	0
+312	44.5	0
+313	44.5	0
+314	44.5	0
+315	44.5	0
+316	44.5	0
+317	44.5	0
+318	44.5	0
+319	44.5	0
+320	44.5	0
+321	44.5	0
+322	44.5	0
+323	44.5	0
+324	44.5	0
+325	44.5	0
+326	44.5	0
+327	44.5	0
+328	44.5	0
+329	44.5	0
+330	44.5	0
+331	44.5	0
+332	44.5	0
+333	44.5	0
+334	44.5	0
+335	44.5	0
+336	44.5	0
+337	44.5	0
+338	44.5	0
+339	44.5	0
+340	44.5	0
+341	44.5	0
+342	44.5	0
+343	44.5	0
+344	44.5	0
+345	44.5	0
+346	44.5	0
+347	44.5	0
+348	44.5	0
+349	44.5	0
+350	44.5	0
+351	44.5	0
+352	44.5	0
+353	44.5	0
+354	44.5	0
+355	44.5	0
+356	44.5	0
+357	44.5	0
+358	44.5	0
+359	44.5	0
+360	44.5	0
+0	45	0
+1	45	0
+2	45	0
+3	45	0
+4	45	0
+5	45	0
+6	45	0
+7	45	0
+8	45	0
+9	45	0
+10	45	0
+11	45	0
+12	45	0
+13	45	0
+14	45	0
+15	45	0
+16	45	0
+17	45	0
+18	45	0
+19	45	0
+20	45	0
+21	45	0
+22	45	0
+23	45	0
+24	45	0
+25	45	0
+26	45	0
+27	45	0
+28	45	0
+29	45	0
+30	45	0
+31	45	0
+32	45	0
+33	45	0
+34	45	0
+35	45	0
+36	45	0
+37	45	0
+38	45	0
+39	45	0
+40	45	0
+41	45	0
+42	45	0
+43	45	0
+44	45	0
+45	45	0
+46	45	0
+47	45	0
+48	45	0
+49	45	0
+50	45	0
+51	45	0
+52	45	0
+53	45	0
+54	45	0
+55	45	0
+56	45	0
+57	45	0
+58	45	0
+59	45	0
+60	45	0
+61	45	0
+62	45	0
+63	45	0
+64	45	0
+65	45	0
+66	45	0
+67	45	0
+68	45	0
+69	45	0
+70	45	0
+71	45	0
+72	45	0
+73	45	0
+74	45	0
+75	45	0
+76	45	0
+77	45	0
+78	45	0
+79	45	0
+80	45	0
+81	45	0
+82	45	0
+83	45	0
+84	45	0
+85	45	0
+86	45	0
+87	45	0
+88	45	0
+89	45	0
+90	45	0
+91	45	0
+92	45	0
+93	45	0
+94	45	0
+95	45	0
+96	45	0
+97	45	0
+98	45	0
+99	45	0
+100	45	0
+101	45	0
+102	45	0
+103	45	0
+104	45	0
+105	45	0
+106	45	0
+107	45	0
+108	45	0
+109	45	0
+110	45	0
+111	45	0
+112	45	0
+113	45	0
+114	45	0
+115	45	0
+116	45	0
+117	45	0
+118	45	0
+119	45	0
+120	45	0
+121	45	0
+122	45	0
+123	45	0
+124	45	0
+125	45	0
+126	45	0
+127	45	0
+128	45	0
+129	45	0
+130	45	0
+131	45	0
+132	45	0
+133	45	0
+134	45	0
+135	45	0
+136	45	0
+137	45	0
+138	45	0
+139	45	0
+140	45	0
+141	45	0
+142	45	0
+143	45	0
+144	45	0
+145	45	0
+146	45	0
+147	45	0
+148	45	0
+149	45	0
+150	45	0
+151	45	0
+152	45	0
+153	45	0
+154	45	0
+155	45	0
+156	45	0
+157	45	0
+158	45	0
+159	45	0
+160	45	0
+161	45	0
+162	45	0
+163	45	0
+164	45	0
+165	45	0
+166	45	0
+167	45	0
+168	45	0
+169	45	0
+170	45	0
+171	45	0
+172	45	0
+173	45	0
+174	45	0
+175	45	0
+176	45	0
+177	45	0
+178	45	0
+179	45	0
+180	45	0
+181	45	0
+182	45	0
+183	45	0
+184	45	0
+185	45	0
+186	45	0
+187	45	0
+188	45	0
+189	45	0
+190	45	0
+191	45	0
+192	45	0
+193	45	0
+194	45	0
+195	45	0
+196	45	0
+197	45	0
+198	45	0
+199	45	0
+200	45	0
+201	45	0
+202	45	0
+203	45	0
+204	45	0
+205	45	0
+206	45	0
+207	45	0
+208	45	0
+209	45	0
+210	45	0
+211	45	0
+212	45	0
+213	45	0
+214	45	0
+215	45	0
+216	45	0
+217	45	0
+218	45	0
+219	45	0
+220	45	0
+221	45	0
+222	45	0
+223	45	0
+224	45	0
+225	45	0
+226	45	0
+227	45	0
+228	45	0
+229	45	0
+230	45	0
+231	45	0
+232	45	0
+233	45	0
+234	45	0
+235	45	0
+236	45	0
+237	45	0
+238	45	0
+239	45	0
+240	45	0
+241	45	0
+242	45	0
+243	45	0
+244	45	0
+245	45	0
+246	45	0
+247	45	0
+248	45	0
+249	45	0
+250	45	0
+251	45	0
+252	45	0
+253	45	0
+254	45	0
+255	45	0
+256	45	0
+257	45	0
+258	45	0
+259	45	0
+260	45	0
+261	45	0
+262	45	0
+263	45	0
+264	45	0
+265	45	0
+266	45	0
+267	45	0
+268	45	0
+269	45	0
+270	45	0
+271	45	0
+272	45	0
+273	45	0
+274	45	0
+275	45	0
+276	45	0
+277	45	0
+278	45	0
+279	45	0
+280	45	0
+281	45	0
+282	45	0
+283	45	0
+284	45	0
+285	45	0
+286	45	0
+287	45	0
+288	45	0
+289	45	0
+290	45	0
+291	45	0
+292	45	0
+293	45	0
+294	45	0
+295	45	0
+296	45	0
+297	45	0
+298	45	0
+299	45	0
+300	45	0
+301	45	0
+302	45	0
+303	45	0
+304	45	0
+305	45	0
+306	45	0
+307	45	0
+308	45	0
+309	45	0
+310	45	0
+311	45	0
+312	45	0
+313	45	0
+314	45	0
+315	45	0
+316	45	0
+317	45	0
+318	45	0
+319	45	0
+320	45	0
+321	45	0
+322	45	0
+323	45	0
+324	45	0
+325	45	0
+326	45	0
+327	45	0
+328	45	0
+329	45	0
+330	45	0
+331	45	0
+332	45	0
+333	45	0
+334	45	0
+335	45	0
+336	45	0
+337	45	0
+338	45	0
+339	45	0
+340	45	0
+341	45	0
+342	45	0
+343	45	0
+344	45	0
+345	45	0
+346	45	0
+347	45	0
+348	45	0
+349	45	0
+350	45	0
+351	45	0
+352	45	0
+353	45	0
+354	45	0
+355	45	0
+356	45	0
+357	45	0
+358	45	0
+359	45	0
+360	45	0
+0	45.5	0
+1	45.5	0
+2	45.5	0
+3	45.5	0
+4	45.5	0
+5	45.5	0
+6	45.5	0
+7	45.5	0
+8	45.5	0
+9	45.5	0
+10	45.5	0
+11	45.5	0
+12	45.5	0
+13	45.5	0
+14	45.5	0
+15	45.5	0
+16	45.5	0
+17	45.5	0
+18	45.5	0
+19	45.5	0
+20	45.5	0
+21	45.5	0
+22	45.5	0
+23	45.5	0
+24	45.5	0
+25	45.5	0
+26	45.5	0
+27	45.5	0
+28	45.5	0
+29	45.5	0
+30	45.5	0
+31	45.5	0
+32	45.5	0
+33	45.5	0
+34	45.5	0
+35	45.5	0
+36	45.5	0
+37	45.5	0
+38	45.5	0
+39	45.5	0
+40	45.5	0
+41	45.5	0
+42	45.5	0
+43	45.5	0
+44	45.5	0
+45	45.5	0
+46	45.5	0
+47	45.5	0
+48	45.5	0
+49	45.5	0
+50	45.5	0
+51	45.5	0
+52	45.5	0
+53	45.5	0
+54	45.5	0
+55	45.5	0
+56	45.5	0
+57	45.5	0
+58	45.5	0
+59	45.5	0
+60	45.5	0
+61	45.5	0
+62	45.5	0
+63	45.5	0
+64	45.5	0
+65	45.5	0
+66	45.5	0
+67	45.5	0
+68	45.5	0
+69	45.5	0
+70	45.5	0
+71	45.5	0
+72	45.5	0
+73	45.5	0
+74	45.5	0
+75	45.5	0
+76	45.5	0
+77	45.5	0
+78	45.5	0
+79	45.5	0
+80	45.5	0
+81	45.5	0
+82	45.5	0
+83	45.5	0
+84	45.5	0
+85	45.5	0
+86	45.5	0
+87	45.5	0
+88	45.5	0
+89	45.5	0
+90	45.5	0
+91	45.5	0
+92	45.5	0
+93	45.5	0
+94	45.5	0
+95	45.5	0
+96	45.5	0
+97	45.5	0
+98	45.5	0
+99	45.5	0
+100	45.5	0
+101	45.5	0
+102	45.5	0
+103	45.5	0
+104	45.5	0
+105	45.5	0
+106	45.5	0
+107	45.5	0
+108	45.5	0
+109	45.5	0
+110	45.5	0
+111	45.5	0
+112	45.5	0
+113	45.5	0
+114	45.5	0
+115	45.5	0
+116	45.5	0
+117	45.5	0
+118	45.5	0
+119	45.5	0
+120	45.5	0
+121	45.5	0
+122	45.5	0
+123	45.5	0
+124	45.5	0
+125	45.5	0
+126	45.5	0
+127	45.5	0
+128	45.5	0
+129	45.5	0
+130	45.5	0
+131	45.5	0
+132	45.5	0
+133	45.5	0
+134	45.5	0
+135	45.5	0
+136	45.5	0
+137	45.5	0
+138	45.5	0
+139	45.5	0
+140	45.5	0
+141	45.5	0
+142	45.5	0
+143	45.5	0
+144	45.5	0
+145	45.5	0
+146	45.5	0
+147	45.5	0
+148	45.5	0
+149	45.5	0
+150	45.5	0
+151	45.5	0
+152	45.5	0
+153	45.5	0
+154	45.5	0
+155	45.5	0
+156	45.5	0
+157	45.5	0
+158	45.5	0
+159	45.5	0
+160	45.5	0
+161	45.5	0
+162	45.5	0
+163	45.5	0
+164	45.5	0
+165	45.5	0
+166	45.5	0
+167	45.5	0
+168	45.5	0
+169	45.5	0
+170	45.5	0
+171	45.5	0
+172	45.5	0
+173	45.5	0
+174	45.5	0
+175	45.5	0
+176	45.5	0
+177	45.5	0
+178	45.5	0
+179	45.5	0
+180	45.5	0
+181	45.5	0
+182	45.5	0
+183	45.5	0
+184	45.5	0
+185	45.5	0
+186	45.5	0
+187	45.5	0
+188	45.5	0
+189	45.5	0
+190	45.5	0
+191	45.5	0
+192	45.5	0
+193	45.5	0
+194	45.5	0
+195	45.5	0
+196	45.5	0
+197	45.5	0
+198	45.5	0
+199	45.5	0
+200	45.5	0
+201	45.5	0
+202	45.5	0
+203	45.5	0
+204	45.5	0
+205	45.5	0
+206	45.5	0
+207	45.5	0
+208	45.5	0
+209	45.5	0
+210	45.5	0
+211	45.5	0
+212	45.5	0
+213	45.5	0
+214	45.5	0
+215	45.5	0
+216	45.5	0
+217	45.5	0
+218	45.5	0
+219	45.5	0
+220	45.5	0
+221	45.5	0
+222	45.5	0
+223	45.5	0
+224	45.5	0
+225	45.5	0
+226	45.5	0
+227	45.5	0
+228	45.5	0
+229	45.5	0
+230	45.5	0
+231	45.5	0
+232	45.5	0
+233	45.5	0
+234	45.5	0
+235	45.5	0
+236	45.5	0
+237	45.5	0
+238	45.5	0
+239	45.5	0
+240	45.5	0
+241	45.5	0
+242	45.5	0
+243	45.5	0
+244	45.5	0
+245	45.5	0
+246	45.5	0
+247	45.5	0
+248	45.5	0
+249	45.5	0
+250	45.5	0
+251	45.5	0
+252	45.5	0
+253	45.5	0
+254	45.5	0
+255	45.5	0
+256	45.5	0
+257	45.5	0
+258	45.5	0
+259	45.5	0
+260	45.5	0
+261	45.5	0
+262	45.5	0
+263	45.5	0
+264	45.5	0
+265	45.5	0
+266	45.5	0
+267	45.5	0
+268	45.5	0
+269	45.5	0
+270	45.5	0
+271	45.5	0
+272	45.5	0
+273	45.5	0
+274	45.5	0
+275	45.5	0
+276	45.5	0
+277	45.5	0
+278	45.5	0
+279	45.5	0
+280	45.5	0
+281	45.5	0
+282	45.5	0
+283	45.5	0
+284	45.5	0
+285	45.5	0
+286	45.5	0
+287	45.5	0
+288	45.5	0
+289	45.5	0
+290	45.5	0
+291	45.5	0
+292	45.5	0
+293	45.5	0
+294	45.5	0
+295	45.5	0
+296	45.5	0
+297	45.5	0
+298	45.5	0
+299	45.5	0
+300	45.5	0
+301	45.5	0
+302	45.5	0
+303	45.5	0
+304	45.5	0
+305	45.5	0
+306	45.5	0
+307	45.5	0
+308	45.5	0
+309	45.5	0
+310	45.5	0
+311	45.5	0
+312	45.5	0
+313	45.5	0
+314	45.5	0
+315	45.5	0
+316	45.5	0
+317	45.5	0
+318	45.5	0
+319	45.5	0
+320	45.5	0
+321	45.5	0
+322	45.5	0
+323	45.5	0
+324	45.5	0
+325	45.5	0
+326	45.5	0
+327	45.5	0
+328	45.5	0
+329	45.5	0
+330	45.5	0
+331	45.5	0
+332	45.5	0
+333	45.5	0
+334	45.5	0
+335	45.5	0
+336	45.5	0
+337	45.5	0
+338	45.5	0
+339	45.5	0
+340	45.5	0
+341	45.5	0
+342	45.5	0
+343	45.5	0
+344	45.5	0
+345	45.5	0
+346	45.5	0
+347	45.5	0
+348	45.5	0
+349	45.5	0
+350	45.5	0
+351	45.5	0
+352	45.5	0
+353	45.5	0
+354	45.5	0
+355	45.5	0
+356	45.5	0
+357	45.5	0
+358	45.5	0
+359	45.5	0
+360	45.5	0
+0	46	0
+1	46	0
+2	46	0
+3	46	0
+4	46	0
+5	46	0
+6	46	0
+7	46	0
+8	46	0
+9	46	0
+10	46	0
+11	46	0
+12	46	0
+13	46	0
+14	46	0
+15	46	0
+16	46	0
+17	46	0
+18	46	0
+19	46	0
+20	46	0
+21	46	0
+22	46	0
+23	46	0
+24	46	0
+25	46	0
+26	46	0
+27	46	0
+28	46	0
+29	46	0
+30	46	0
+31	46	0
+32	46	0
+33	46	0
+34	46	0
+35	46	0
+36	46	0
+37	46	0
+38	46	0
+39	46	0
+40	46	0
+41	46	0
+42	46	0
+43	46	0
+44	46	0
+45	46	0
+46	46	0
+47	46	0
+48	46	0
+49	46	0
+50	46	0
+51	46	0
+52	46	0
+53	46	0
+54	46	0
+55	46	0
+56	46	0
+57	46	0
+58	46	0
+59	46	0
+60	46	0
+61	46	0
+62	46	0
+63	46	0
+64	46	0
+65	46	0
+66	46	0
+67	46	0
+68	46	0
+69	46	0
+70	46	0
+71	46	0
+72	46	0
+73	46	0
+74	46	0
+75	46	0
+76	46	0
+77	46	0
+78	46	0
+79	46	0
+80	46	0
+81	46	0
+82	46	0
+83	46	0
+84	46	0
+85	46	0
+86	46	0
+87	46	0
+88	46	0
+89	46	0
+90	46	0
+91	46	0
+92	46	0
+93	46	0
+94	46	0
+95	46	0
+96	46	0
+97	46	0
+98	46	0
+99	46	0
+100	46	0
+101	46	0
+102	46	0
+103	46	0
+104	46	0
+105	46	0
+106	46	0
+107	46	0
+108	46	0
+109	46	0
+110	46	0
+111	46	0
+112	46	0
+113	46	0
+114	46	0
+115	46	0
+116	46	0
+117	46	0
+118	46	0
+119	46	0
+120	46	0
+121	46	0
+122	46	0
+123	46	0
+124	46	0
+125	46	0
+126	46	0
+127	46	0
+128	46	0
+129	46	0
+130	46	0
+131	46	0
+132	46	0
+133	46	0
+134	46	0
+135	46	0
+136	46	0
+137	46	0
+138	46	0
+139	46	0
+140	46	0
+141	46	0
+142	46	0
+143	46	0
+144	46	0
+145	46	0
+146	46	0
+147	46	0
+148	46	0
+149	46	0
+150	46	0
+151	46	0
+152	46	0
+153	46	0
+154	46	0
+155	46	0
+156	46	0
+157	46	0
+158	46	0
+159	46	0
+160	46	0
+161	46	0
+162	46	0
+163	46	0
+164	46	0
+165	46	0
+166	46	0
+167	46	0
+168	46	0
+169	46	0
+170	46	0
+171	46	0
+172	46	0
+173	46	0
+174	46	0
+175	46	0
+176	46	0
+177	46	0
+178	46	0
+179	46	0
+180	46	0
+181	46	0
+182	46	0
+183	46	0
+184	46	0
+185	46	0
+186	46	0
+187	46	0
+188	46	0
+189	46	0
+190	46	0
+191	46	0
+192	46	0
+193	46	0
+194	46	0
+195	46	0
+196	46	0
+197	46	0
+198	46	0
+199	46	0
+200	46	0
+201	46	0
+202	46	0
+203	46	0
+204	46	0
+205	46	0
+206	46	0
+207	46	0
+208	46	0
+209	46	0
+210	46	0
+211	46	0
+212	46	0
+213	46	0
+214	46	0
+215	46	0
+216	46	0
+217	46	0
+218	46	0
+219	46	0
+220	46	0
+221	46	0
+222	46	0
+223	46	0
+224	46	0
+225	46	0
+226	46	0
+227	46	0
+228	46	0
+229	46	0
+230	46	0
+231	46	0
+232	46	0
+233	46	0
+234	46	0
+235	46	0
+236	46	0
+237	46	0
+238	46	0
+239	46	0
+240	46	0
+241	46	0
+242	46	0
+243	46	0
+244	46	0
+245	46	0
+246	46	0
+247	46	0
+248	46	0
+249	46	0
+250	46	0
+251	46	0
+252	46	0
+253	46	0
+254	46	0
+255	46	0
+256	46	0
+257	46	0
+258	46	0
+259	46	0
+260	46	0
+261	46	0
+262	46	0
+263	46	0
+264	46	0
+265	46	0
+266	46	0
+267	46	0
+268	46	0
+269	46	0
+270	46	0
+271	46	0
+272	46	0
+273	46	0
+274	46	0
+275	46	0
+276	46	0
+277	46	0
+278	46	0
+279	46	0
+280	46	0
+281	46	0
+282	46	0
+283	46	0
+284	46	0
+285	46	0
+286	46	0
+287	46	0
+288	46	0
+289	46	0
+290	46	0
+291	46	0
+292	46	0
+293	46	0
+294	46	0
+295	46	0
+296	46	0
+297	46	0
+298	46	0
+299	46	0
+300	46	0
+301	46	0
+302	46	0
+303	46	0
+304	46	0
+305	46	0
+306	46	0
+307	46	0
+308	46	0
+309	46	0
+310	46	0
+311	46	0
+312	46	0
+313	46	0
+314	46	0
+315	46	0
+316	46	0
+317	46	0
+318	46	0
+319	46	0
+320	46	0
+321	46	0
+322	46	0
+323	46	0
+324	46	0
+325	46	0
+326	46	0
+327	46	0
+328	46	0
+329	46	0
+330	46	0
+331	46	0
+332	46	0
+333	46	0
+334	46	0
+335	46	0
+336	46	0
+337	46	0
+338	46	0
+339	46	0
+340	46	0
+341	46	0
+342	46	0
+343	46	0
+344	46	0
+345	46	0
+346	46	0
+347	46	0
+348	46	0
+349	46	0
+350	46	0
+351	46	0
+352	46	0
+353	46	0
+354	46	0
+355	46	0
+356	46	0
+357	46	0
+358	46	0
+359	46	0
+360	46	0
+0	46.5	0
+1	46.5	0
+2	46.5	0
+3	46.5	0
+4	46.5	0
+5	46.5	0
+6	46.5	0
+7	46.5	0
+8	46.5	0
+9	46.5	0
+10	46.5	0
+11	46.5	0
+12	46.5	0
+13	46.5	0
+14	46.5	0
+15	46.5	0
+16	46.5	0
+17	46.5	0
+18	46.5	0
+19	46.5	0
+20	46.5	0
+21	46.5	0
+22	46.5	0
+23	46.5	0
+24	46.5	0
+25	46.5	0
+26	46.5	0
+27	46.5	0
+28	46.5	0
+29	46.5	0
+30	46.5	0
+31	46.5	0
+32	46.5	0
+33	46.5	0
+34	46.5	0
+35	46.5	0
+36	46.5	0
+37	46.5	0
+38	46.5	0
+39	46.5	0
+40	46.5	0
+41	46.5	0
+42	46.5	0
+43	46.5	0
+44	46.5	0
+45	46.5	0
+46	46.5	0
+47	46.5	0
+48	46.5	0
+49	46.5	0
+50	46.5	0
+51	46.5	0
+52	46.5	0
+53	46.5	0
+54	46.5	0
+55	46.5	0
+56	46.5	0
+57	46.5	0
+58	46.5	0
+59	46.5	0
+60	46.5	0
+61	46.5	0
+62	46.5	0
+63	46.5	0
+64	46.5	0
+65	46.5	0
+66	46.5	0
+67	46.5	0
+68	46.5	0
+69	46.5	0
+70	46.5	0
+71	46.5	0
+72	46.5	0
+73	46.5	0
+74	46.5	0
+75	46.5	0
+76	46.5	0
+77	46.5	0
+78	46.5	0
+79	46.5	0
+80	46.5	0
+81	46.5	0
+82	46.5	0
+83	46.5	0
+84	46.5	0
+85	46.5	0
+86	46.5	0
+87	46.5	0
+88	46.5	0
+89	46.5	0
+90	46.5	0
+91	46.5	0
+92	46.5	0
+93	46.5	0
+94	46.5	0
+95	46.5	0
+96	46.5	0
+97	46.5	0
+98	46.5	0
+99	46.5	0
+100	46.5	0
+101	46.5	0
+102	46.5	0
+103	46.5	0
+104	46.5	0
+105	46.5	0
+106	46.5	0
+107	46.5	0
+108	46.5	0
+109	46.5	0
+110	46.5	0
+111	46.5	0
+112	46.5	0
+113	46.5	0
+114	46.5	0
+115	46.5	0
+116	46.5	0
+117	46.5	0
+118	46.5	0
+119	46.5	0
+120	46.5	0
+121	46.5	0
+122	46.5	0
+123	46.5	0
+124	46.5	0
+125	46.5	0
+126	46.5	0
+127	46.5	0
+128	46.5	0
+129	46.5	0
+130	46.5	0
+131	46.5	0
+132	46.5	0
+133	46.5	0
+134	46.5	0
+135	46.5	0
+136	46.5	0
+137	46.5	0
+138	46.5	0
+139	46.5	0
+140	46.5	0
+141	46.5	0
+142	46.5	0
+143	46.5	0
+144	46.5	0
+145	46.5	0
+146	46.5	0
+147	46.5	0
+148	46.5	0
+149	46.5	0
+150	46.5	0
+151	46.5	0
+152	46.5	0
+153	46.5	0
+154	46.5	0
+155	46.5	0
+156	46.5	0
+157	46.5	0
+158	46.5	0
+159	46.5	0
+160	46.5	0
+161	46.5	0
+162	46.5	0
+163	46.5	0
+164	46.5	0
+165	46.5	0
+166	46.5	0
+167	46.5	0
+168	46.5	0
+169	46.5	0
+170	46.5	0
+171	46.5	0
+172	46.5	0
+173	46.5	0
+174	46.5	0
+175	46.5	0
+176	46.5	0
+177	46.5	0
+178	46.5	0
+179	46.5	0
+180	46.5	0
+181	46.5	0
+182	46.5	0
+183	46.5	0
+184	46.5	0
+185	46.5	0
+186	46.5	0
+187	46.5	0
+188	46.5	0
+189	46.5	0
+190	46.5	0
+191	46.5	0
+192	46.5	0
+193	46.5	0
+194	46.5	0
+195	46.5	0
+196	46.5	0
+197	46.5	0
+198	46.5	0
+199	46.5	0
+200	46.5	0
+201	46.5	0
+202	46.5	0
+203	46.5	0
+204	46.5	0
+205	46.5	0
+206	46.5	0
+207	46.5	0
+208	46.5	0
+209	46.5	0
+210	46.5	0
+211	46.5	0
+212	46.5	0
+213	46.5	0
+214	46.5	0
+215	46.5	0
+216	46.5	0
+217	46.5	0
+218	46.5	0
+219	46.5	0
+220	46.5	0
+221	46.5	0
+222	46.5	0
+223	46.5	0
+224	46.5	0
+225	46.5	0
+226	46.5	0
+227	46.5	0
+228	46.5	0
+229	46.5	0
+230	46.5	0
+231	46.5	0
+232	46.5	0
+233	46.5	0
+234	46.5	0
+235	46.5	0
+236	46.5	0
+237	46.5	0
+238	46.5	0
+239	46.5	0
+240	46.5	0
+241	46.5	0
+242	46.5	0
+243	46.5	0
+244	46.5	0
+245	46.5	0
+246	46.5	0
+247	46.5	0
+248	46.5	0
+249	46.5	0
+250	46.5	0
+251	46.5	0
+252	46.5	0
+253	46.5	0
+254	46.5	0
+255	46.5	0
+256	46.5	0
+257	46.5	0
+258	46.5	0
+259	46.5	0
+260	46.5	0
+261	46.5	0
+262	46.5	0
+263	46.5	0
+264	46.5	0
+265	46.5	0
+266	46.5	0
+267	46.5	0
+268	46.5	0
+269	46.5	0
+270	46.5	0
+271	46.5	0
+272	46.5	0
+273	46.5	0
+274	46.5	0
+275	46.5	0
+276	46.5	0
+277	46.5	0
+278	46.5	0
+279	46.5	0
+280	46.5	0
+281	46.5	0
+282	46.5	0
+283	46.5	0
+284	46.5	0
+285	46.5	0
+286	46.5	0
+287	46.5	0
+288	46.5	0
+289	46.5	0
+290	46.5	0
+291	46.5	0
+292	46.5	0
+293	46.5	0
+294	46.5	0
+295	46.5	0
+296	46.5	0
+297	46.5	0
+298	46.5	0
+299	46.5	0
+300	46.5	0
+301	46.5	0
+302	46.5	0
+303	46.5	0
+304	46.5	0
+305	46.5	0
+306	46.5	0
+307	46.5	0
+308	46.5	0
+309	46.5	0
+310	46.5	0
+311	46.5	0
+312	46.5	0
+313	46.5	0
+314	46.5	0
+315	46.5	0
+316	46.5	0
+317	46.5	0
+318	46.5	0
+319	46.5	0
+320	46.5	0
+321	46.5	0
+322	46.5	0
+323	46.5	0
+324	46.5	0
+325	46.5	0
+326	46.5	0
+327	46.5	0
+328	46.5	0
+329	46.5	0
+330	46.5	0
+331	46.5	0
+332	46.5	0
+333	46.5	0
+334	46.5	0
+335	46.5	0
+336	46.5	0
+337	46.5	0
+338	46.5	0
+339	46.5	0
+340	46.5	0
+341	46.5	0
+342	46.5	0
+343	46.5	0
+344	46.5	0
+345	46.5	0
+346	46.5	0
+347	46.5	0
+348	46.5	0
+349	46.5	0
+350	46.5	0
+351	46.5	0
+352	46.5	0
+353	46.5	0
+354	46.5	0
+355	46.5	0
+356	46.5	0
+357	46.5	0
+358	46.5	0
+359	46.5	0
+360	46.5	0
+0	47	0
+1	47	0
+2	47	0
+3	47	0
+4	47	0
+5	47	0
+6	47	0
+7	47	0
+8	47	0
+9	47	0
+10	47	0
+11	47	0
+12	47	0
+13	47	0
+14	47	0
+15	47	0
+16	47	0
+17	47	0
+18	47	0
+19	47	0
+20	47	0
+21	47	0
+22	47	0
+23	47	0
+24	47	0
+25	47	0
+26	47	0
+27	47	0
+28	47	0
+29	47	0
+30	47	0
+31	47	0
+32	47	0
+33	47	0
+34	47	0
+35	47	0
+36	47	0
+37	47	0
+38	47	0
+39	47	0
+40	47	0
+41	47	0
+42	47	0
+43	47	0
+44	47	0
+45	47	0
+46	47	0
+47	47	0
+48	47	0
+49	47	0
+50	47	0
+51	47	0
+52	47	0
+53	47	0
+54	47	0
+55	47	0
+56	47	0
+57	47	0
+58	47	0
+59	47	0
+60	47	0
+61	47	0
+62	47	0
+63	47	0
+64	47	0
+65	47	0
+66	47	0
+67	47	0
+68	47	0
+69	47	0
+70	47	0
+71	47	0
+72	47	0
+73	47	0
+74	47	0
+75	47	0
+76	47	0
+77	47	0
+78	47	0
+79	47	0
+80	47	0
+81	47	0
+82	47	0
+83	47	0
+84	47	0
+85	47	0
+86	47	0
+87	47	0
+88	47	0
+89	47	0
+90	47	0
+91	47	0
+92	47	0
+93	47	0
+94	47	0
+95	47	0
+96	47	0
+97	47	0
+98	47	0
+99	47	0
+100	47	0
+101	47	0
+102	47	0
+103	47	0
+104	47	0
+105	47	0
+106	47	0
+107	47	0
+108	47	0
+109	47	0
+110	47	0
+111	47	0
+112	47	0
+113	47	0
+114	47	0
+115	47	0
+116	47	0
+117	47	0
+118	47	0
+119	47	0
+120	47	0
+121	47	0
+122	47	0
+123	47	0
+124	47	0
+125	47	0
+126	47	0
+127	47	0
+128	47	0
+129	47	0
+130	47	0
+131	47	0
+132	47	0
+133	47	0
+134	47	0
+135	47	0
+136	47	0
+137	47	0
+138	47	0
+139	47	0
+140	47	0
+141	47	0
+142	47	0
+143	47	0
+144	47	0
+145	47	0
+146	47	0
+147	47	0
+148	47	0
+149	47	0
+150	47	0
+151	47	0
+152	47	0
+153	47	0
+154	47	0
+155	47	0
+156	47	0
+157	47	0
+158	47	0
+159	47	0
+160	47	0
+161	47	0
+162	47	0
+163	47	0
+164	47	0
+165	47	0
+166	47	0
+167	47	0
+168	47	0
+169	47	0
+170	47	0
+171	47	0
+172	47	0
+173	47	0
+174	47	0
+175	47	0
+176	47	0
+177	47	0
+178	47	0
+179	47	0
+180	47	0
+181	47	0
+182	47	0
+183	47	0
+184	47	0
+185	47	0
+186	47	0
+187	47	0
+188	47	0
+189	47	0
+190	47	0
+191	47	0
+192	47	0
+193	47	0
+194	47	0
+195	47	0
+196	47	0
+197	47	0
+198	47	0
+199	47	0
+200	47	0
+201	47	0
+202	47	0
+203	47	0
+204	47	0
+205	47	0
+206	47	0
+207	47	0
+208	47	0
+209	47	0
+210	47	0
+211	47	0
+212	47	0
+213	47	0
+214	47	0
+215	47	0
+216	47	0
+217	47	0
+218	47	0
+219	47	0
+220	47	0
+221	47	0
+222	47	0
+223	47	0
+224	47	0
+225	47	0
+226	47	0
+227	47	0
+228	47	0
+229	47	0
+230	47	0
+231	47	0
+232	47	0
+233	47	0
+234	47	0
+235	47	0
+236	47	0
+237	47	0
+238	47	0
+239	47	0
+240	47	0
+241	47	0
+242	47	0
+243	47	0
+244	47	0
+245	47	0
+246	47	0
+247	47	0
+248	47	0
+249	47	0
+250	47	0
+251	47	0
+252	47	0
+253	47	0
+254	47	0
+255	47	0
+256	47	0
+257	47	0
+258	47	0
+259	47	0
+260	47	0
+261	47	0
+262	47	0
+263	47	0
+264	47	0
+265	47	0
+266	47	0
+267	47	0
+268	47	0
+269	47	0
+270	47	0
+271	47	0
+272	47	0
+273	47	0
+274	47	0
+275	47	0
+276	47	0
+277	47	0
+278	47	0
+279	47	0
+280	47	0
+281	47	0
+282	47	0
+283	47	0
+284	47	0
+285	47	0
+286	47	0
+287	47	0
+288	47	0
+289	47	0
+290	47	0
+291	47	0
+292	47	0
+293	47	0
+294	47	0
+295	47	0
+296	47	0
+297	47	0
+298	47	0
+299	47	0
+300	47	0
+301	47	0
+302	47	0
+303	47	0
+304	47	0
+305	47	0
+306	47	0
+307	47	0
+308	47	0
+309	47	0
+310	47	0
+311	47	0
+312	47	0
+313	47	0
+314	47	0
+315	47	0
+316	47	0
+317	47	0
+318	47	0
+319	47	0
+320	47	0
+321	47	0
+322	47	0
+323	47	0
+324	47	0
+325	47	0
+326	47	0
+327	47	0
+328	47	0
+329	47	0
+330	47	0
+331	47	0
+332	47	0
+333	47	0
+334	47	0
+335	47	0
+336	47	0
+337	47	0
+338	47	0
+339	47	0
+340	47	0
+341	47	0
+342	47	0
+343	47	0
+344	47	0
+345	47	0
+346	47	0
+347	47	0
+348	47	0
+349	47	0
+350	47	0
+351	47	0
+352	47	0
+353	47	0
+354	47	0
+355	47	0
+356	47	0
+357	47	0
+358	47	0
+359	47	0
+360	47	0
+0	47.5	0
+1	47.5	0
+2	47.5	0
+3	47.5	0
+4	47.5	0
+5	47.5	0
+6	47.5	0
+7	47.5	0
+8	47.5	0
+9	47.5	0
+10	47.5	0
+11	47.5	0
+12	47.5	0
+13	47.5	0
+14	47.5	0
+15	47.5	0
+16	47.5	0
+17	47.5	0
+18	47.5	0
+19	47.5	0
+20	47.5	0
+21	47.5	0
+22	47.5	0
+23	47.5	0
+24	47.5	0
+25	47.5	0
+26	47.5	0
+27	47.5	0
+28	47.5	0
+29	47.5	0
+30	47.5	0
+31	47.5	0
+32	47.5	0
+33	47.5	0
+34	47.5	0
+35	47.5	0
+36	47.5	0
+37	47.5	0
+38	47.5	0
+39	47.5	0
+40	47.5	0
+41	47.5	0
+42	47.5	0
+43	47.5	0
+44	47.5	0
+45	47.5	0
+46	47.5	0
+47	47.5	0
+48	47.5	0
+49	47.5	0
+50	47.5	0
+51	47.5	0
+52	47.5	0
+53	47.5	0
+54	47.5	0
+55	47.5	0
+56	47.5	0
+57	47.5	0
+58	47.5	0
+59	47.5	0
+60	47.5	0
+61	47.5	0
+62	47.5	0
+63	47.5	0
+64	47.5	0
+65	47.5	0
+66	47.5	0
+67	47.5	0
+68	47.5	0
+69	47.5	0
+70	47.5	0
+71	47.5	0
+72	47.5	0
+73	47.5	0
+74	47.5	0
+75	47.5	0
+76	47.5	0
+77	47.5	0
+78	47.5	0
+79	47.5	0
+80	47.5	0
+81	47.5	0
+82	47.5	0
+83	47.5	0
+84	47.5	0
+85	47.5	0
+86	47.5	0
+87	47.5	0
+88	47.5	0
+89	47.5	0
+90	47.5	0
+91	47.5	0
+92	47.5	0
+93	47.5	0
+94	47.5	0
+95	47.5	0
+96	47.5	0
+97	47.5	0
+98	47.5	0
+99	47.5	0
+100	47.5	0
+101	47.5	0
+102	47.5	0
+103	47.5	0
+104	47.5	0
+105	47.5	0
+106	47.5	0
+107	47.5	0
+108	47.5	0
+109	47.5	0
+110	47.5	0
+111	47.5	0
+112	47.5	0
+113	47.5	0
+114	47.5	0
+115	47.5	0
+116	47.5	0
+117	47.5	0
+118	47.5	0
+119	47.5	0
+120	47.5	0
+121	47.5	0
+122	47.5	0
+123	47.5	0
+124	47.5	0
+125	47.5	0
+126	47.5	0
+127	47.5	0
+128	47.5	0
+129	47.5	0
+130	47.5	0
+131	47.5	0
+132	47.5	0
+133	47.5	0
+134	47.5	0
+135	47.5	0
+136	47.5	0
+137	47.5	0
+138	47.5	0
+139	47.5	0
+140	47.5	0
+141	47.5	0
+142	47.5	0
+143	47.5	0
+144	47.5	0
+145	47.5	0
+146	47.5	0
+147	47.5	0
+148	47.5	0
+149	47.5	0
+150	47.5	0
+151	47.5	0
+152	47.5	0
+153	47.5	0
+154	47.5	0
+155	47.5	0
+156	47.5	0
+157	47.5	0
+158	47.5	0
+159	47.5	0
+160	47.5	0
+161	47.5	0
+162	47.5	0
+163	47.5	0
+164	47.5	0
+165	47.5	0
+166	47.5	0
+167	47.5	0
+168	47.5	0
+169	47.5	0
+170	47.5	0
+171	47.5	0
+172	47.5	0
+173	47.5	0
+174	47.5	0
+175	47.5	0
+176	47.5	0
+177	47.5	0
+178	47.5	0
+179	47.5	0
+180	47.5	0
+181	47.5	0
+182	47.5	0
+183	47.5	0
+184	47.5	0
+185	47.5	0
+186	47.5	0
+187	47.5	0
+188	47.5	0
+189	47.5	0
+190	47.5	0
+191	47.5	0
+192	47.5	0
+193	47.5	0
+194	47.5	0
+195	47.5	0
+196	47.5	0
+197	47.5	0
+198	47.5	0
+199	47.5	0
+200	47.5	0
+201	47.5	0
+202	47.5	0
+203	47.5	0
+204	47.5	0
+205	47.5	0
+206	47.5	0
+207	47.5	0
+208	47.5	0
+209	47.5	0
+210	47.5	0
+211	47.5	0
+212	47.5	0
+213	47.5	0
+214	47.5	0
+215	47.5	0
+216	47.5	0
+217	47.5	0
+218	47.5	0
+219	47.5	0
+220	47.5	0
+221	47.5	0
+222	47.5	0
+223	47.5	0
+224	47.5	0
+225	47.5	0
+226	47.5	0
+227	47.5	0
+228	47.5	0
+229	47.5	0
+230	47.5	0
+231	47.5	0
+232	47.5	0
+233	47.5	0
+234	47.5	0
+235	47.5	0
+236	47.5	0
+237	47.5	0
+238	47.5	0
+239	47.5	0
+240	47.5	0
+241	47.5	0
+242	47.5	0
+243	47.5	0
+244	47.5	0
+245	47.5	0
+246	47.5	0
+247	47.5	0
+248	47.5	0
+249	47.5	0
+250	47.5	0
+251	47.5	0
+252	47.5	0
+253	47.5	0
+254	47.5	0
+255	47.5	0
+256	47.5	0
+257	47.5	0
+258	47.5	0
+259	47.5	0
+260	47.5	0
+261	47.5	0
+262	47.5	0
+263	47.5	0
+264	47.5	0
+265	47.5	0
+266	47.5	0
+267	47.5	0
+268	47.5	0
+269	47.5	0
+270	47.5	0
+271	47.5	0
+272	47.5	0
+273	47.5	0
+274	47.5	0
+275	47.5	0
+276	47.5	0
+277	47.5	0
+278	47.5	0
+279	47.5	0
+280	47.5	0
+281	47.5	0
+282	47.5	0
+283	47.5	0
+284	47.5	0
+285	47.5	0
+286	47.5	0
+287	47.5	0
+288	47.5	0
+289	47.5	0
+290	47.5	0
+291	47.5	0
+292	47.5	0
+293	47.5	0
+294	47.5	0
+295	47.5	0
+296	47.5	0
+297	47.5	0
+298	47.5	0
+299	47.5	0
+300	47.5	0
+301	47.5	0
+302	47.5	0
+303	47.5	0
+304	47.5	0
+305	47.5	0
+306	47.5	0
+307	47.5	0
+308	47.5	0
+309	47.5	0
+310	47.5	0
+311	47.5	0
+312	47.5	0
+313	47.5	0
+314	47.5	0
+315	47.5	0
+316	47.5	0
+317	47.5	0
+318	47.5	0
+319	47.5	0
+320	47.5	0
+321	47.5	0
+322	47.5	0
+323	47.5	0
+324	47.5	0
+325	47.5	0
+326	47.5	0
+327	47.5	0
+328	47.5	0
+329	47.5	0
+330	47.5	0
+331	47.5	0
+332	47.5	0
+333	47.5	0
+334	47.5	0
+335	47.5	0
+336	47.5	0
+337	47.5	0
+338	47.5	0
+339	47.5	0
+340	47.5	0
+341	47.5	0
+342	47.5	0
+343	47.5	0
+344	47.5	0
+345	47.5	0
+346	47.5	0
+347	47.5	0
+348	47.5	0
+349	47.5	0
+350	47.5	0
+351	47.5	0
+352	47.5	0
+353	47.5	0
+354	47.5	0
+355	47.5	0
+356	47.5	0
+357	47.5	0
+358	47.5	0
+359	47.5	0
+360	47.5	0
+0	48	0
+1	48	0
+2	48	0
+3	48	0
+4	48	0
+5	48	0
+6	48	0
+7	48	0
+8	48	0
+9	48	0
+10	48	0
+11	48	0
+12	48	0
+13	48	0
+14	48	0
+15	48	0
+16	48	0
+17	48	0
+18	48	0
+19	48	0
+20	48	0
+21	48	0
+22	48	0
+23	48	0
+24	48	0
+25	48	0
+26	48	0
+27	48	0
+28	48	0
+29	48	0
+30	48	0
+31	48	0
+32	48	0
+33	48	0
+34	48	0
+35	48	0
+36	48	0
+37	48	0
+38	48	0
+39	48	0
+40	48	0
+41	48	0
+42	48	0
+43	48	0
+44	48	0
+45	48	0
+46	48	0
+47	48	0
+48	48	0
+49	48	0
+50	48	0
+51	48	0
+52	48	0
+53	48	0
+54	48	0
+55	48	0
+56	48	0
+57	48	0
+58	48	0
+59	48	0
+60	48	0
+61	48	0
+62	48	0
+63	48	0
+64	48	0
+65	48	0
+66	48	0
+67	48	0
+68	48	0
+69	48	0
+70	48	0
+71	48	0
+72	48	0
+73	48	0
+74	48	0
+75	48	0
+76	48	0
+77	48	0
+78	48	0
+79	48	0
+80	48	0
+81	48	0
+82	48	0
+83	48	0
+84	48	0
+85	48	0
+86	48	0
+87	48	0
+88	48	0
+89	48	0
+90	48	0
+91	48	0
+92	48	0
+93	48	0
+94	48	0
+95	48	0
+96	48	0
+97	48	0
+98	48	0
+99	48	0
+100	48	0
+101	48	0
+102	48	0
+103	48	0
+104	48	0
+105	48	0
+106	48	0
+107	48	0
+108	48	0
+109	48	0
+110	48	0
+111	48	0
+112	48	0
+113	48	0
+114	48	0
+115	48	0
+116	48	0
+117	48	0
+118	48	0
+119	48	0
+120	48	0
+121	48	0
+122	48	0
+123	48	0
+124	48	0
+125	48	0
+126	48	0
+127	48	0
+128	48	0
+129	48	0
+130	48	0
+131	48	0
+132	48	0
+133	48	0
+134	48	0
+135	48	0
+136	48	0
+137	48	0
+138	48	0
+139	48	0
+140	48	0
+141	48	0
+142	48	0
+143	48	0
+144	48	0
+145	48	0
+146	48	0
+147	48	0
+148	48	0
+149	48	0
+150	48	0
+151	48	0
+152	48	0
+153	48	0
+154	48	0
+155	48	0
+156	48	0
+157	48	0
+158	48	0
+159	48	0
+160	48	0
+161	48	0
+162	48	0
+163	48	0
+164	48	0
+165	48	0
+166	48	0
+167	48	0
+168	48	0
+169	48	0
+170	48	0
+171	48	0
+172	48	0
+173	48	0
+174	48	0
+175	48	0
+176	48	0
+177	48	0
+178	48	0
+179	48	0
+180	48	0
+181	48	0
+182	48	0
+183	48	0
+184	48	0
+185	48	0
+186	48	0
+187	48	0
+188	48	0
+189	48	0
+190	48	0
+191	48	0
+192	48	0
+193	48	0
+194	48	0
+195	48	0
+196	48	0
+197	48	0
+198	48	0
+199	48	0
+200	48	0
+201	48	0
+202	48	0
+203	48	0
+204	48	0
+205	48	0
+206	48	0
+207	48	0
+208	48	0
+209	48	0
+210	48	0
+211	48	0
+212	48	0
+213	48	0
+214	48	0
+215	48	0
+216	48	0
+217	48	0
+218	48	0
+219	48	0
+220	48	0
+221	48	0
+222	48	0
+223	48	0
+224	48	0
+225	48	0
+226	48	0
+227	48	0
+228	48	0
+229	48	0
+230	48	0
+231	48	0
+232	48	0
+233	48	0
+234	48	0
+235	48	0
+236	48	0
+237	48	0
+238	48	0
+239	48	0
+240	48	0
+241	48	0
+242	48	0
+243	48	0
+244	48	0
+245	48	0
+246	48	0
+247	48	0
+248	48	0
+249	48	0
+250	48	0
+251	48	0
+252	48	0
+253	48	0
+254	48	0
+255	48	0
+256	48	0
+257	48	0
+258	48	0
+259	48	0
+260	48	0
+261	48	0
+262	48	0
+263	48	0
+264	48	0
+265	48	0
+266	48	0
+267	48	0
+268	48	0
+269	48	0
+270	48	0
+271	48	0
+272	48	0
+273	48	0
+274	48	0
+275	48	0
+276	48	0
+277	48	0
+278	48	0
+279	48	0
+280	48	0
+281	48	0
+282	48	0
+283	48	0
+284	48	0
+285	48	0
+286	48	0
+287	48	0
+288	48	0
+289	48	0
+290	48	0
+291	48	0
+292	48	0
+293	48	0
+294	48	0
+295	48	0
+296	48	0
+297	48	0
+298	48	0
+299	48	0
+300	48	0
+301	48	0
+302	48	0
+303	48	0
+304	48	0
+305	48	0
+306	48	0
+307	48	0
+308	48	0
+309	48	0
+310	48	0
+311	48	0
+312	48	0
+313	48	0
+314	48	0
+315	48	0
+316	48	0
+317	48	0
+318	48	0
+319	48	0
+320	48	0
+321	48	0
+322	48	0
+323	48	0
+324	48	0
+325	48	0
+326	48	0
+327	48	0
+328	48	0
+329	48	0
+330	48	0
+331	48	0
+332	48	0
+333	48	0
+334	48	0
+335	48	0
+336	48	0
+337	48	0
+338	48	0
+339	48	0
+340	48	0
+341	48	0
+342	48	0
+343	48	0
+344	48	0
+345	48	0
+346	48	0
+347	48	0
+348	48	0
+349	48	0
+350	48	0
+351	48	0
+352	48	0
+353	48	0
+354	48	0
+355	48	0
+356	48	0
+357	48	0
+358	48	0
+359	48	0
+360	48	0
+0	48.5	0
+1	48.5	0
+2	48.5	0
+3	48.5	0
+4	48.5	0
+5	48.5	0
+6	48.5	0
+7	48.5	0
+8	48.5	0
+9	48.5	0
+10	48.5	0
+11	48.5	0
+12	48.5	0
+13	48.5	0
+14	48.5	0
+15	48.5	0
+16	48.5	0
+17	48.5	0
+18	48.5	0
+19	48.5	0
+20	48.5	0
+21	48.5	0
+22	48.5	0
+23	48.5	0
+24	48.5	0
+25	48.5	0
+26	48.5	0
+27	48.5	0
+28	48.5	0
+29	48.5	0
+30	48.5	0
+31	48.5	0
+32	48.5	0
+33	48.5	0
+34	48.5	0
+35	48.5	0
+36	48.5	0
+37	48.5	0
+38	48.5	0
+39	48.5	0
+40	48.5	0
+41	48.5	0
+42	48.5	0
+43	48.5	0
+44	48.5	0
+45	48.5	0
+46	48.5	0
+47	48.5	0
+48	48.5	0
+49	48.5	0
+50	48.5	0
+51	48.5	0
+52	48.5	0
+53	48.5	0
+54	48.5	0
+55	48.5	0
+56	48.5	0
+57	48.5	0
+58	48.5	0
+59	48.5	0
+60	48.5	0
+61	48.5	0
+62	48.5	0
+63	48.5	0
+64	48.5	0
+65	48.5	0
+66	48.5	0
+67	48.5	0
+68	48.5	0
+69	48.5	0
+70	48.5	0
+71	48.5	0
+72	48.5	0
+73	48.5	0
+74	48.5	0
+75	48.5	0
+76	48.5	0
+77	48.5	0
+78	48.5	0
+79	48.5	0
+80	48.5	0
+81	48.5	0
+82	48.5	0
+83	48.5	0
+84	48.5	0
+85	48.5	0
+86	48.5	0
+87	48.5	0
+88	48.5	0
+89	48.5	0
+90	48.5	0
+91	48.5	0
+92	48.5	0
+93	48.5	0
+94	48.5	0
+95	48.5	0
+96	48.5	0
+97	48.5	0
+98	48.5	0
+99	48.5	0
+100	48.5	0
+101	48.5	0
+102	48.5	0
+103	48.5	0
+104	48.5	0
+105	48.5	0
+106	48.5	0
+107	48.5	0
+108	48.5	0
+109	48.5	0
+110	48.5	0
+111	48.5	0
+112	48.5	0
+113	48.5	0
+114	48.5	0
+115	48.5	0
+116	48.5	0
+117	48.5	0
+118	48.5	0
+119	48.5	0
+120	48.5	0
+121	48.5	0
+122	48.5	0
+123	48.5	0
+124	48.5	0
+125	48.5	0
+126	48.5	0
+127	48.5	0
+128	48.5	0
+129	48.5	0
+130	48.5	0
+131	48.5	0
+132	48.5	0
+133	48.5	0
+134	48.5	0
+135	48.5	0
+136	48.5	0
+137	48.5	0
+138	48.5	0
+139	48.5	0
+140	48.5	0
+141	48.5	0
+142	48.5	0
+143	48.5	0
+144	48.5	0
+145	48.5	0
+146	48.5	0
+147	48.5	0
+148	48.5	0
+149	48.5	0
+150	48.5	0
+151	48.5	0
+152	48.5	0
+153	48.5	0
+154	48.5	0
+155	48.5	0
+156	48.5	0
+157	48.5	0
+158	48.5	0
+159	48.5	0
+160	48.5	0
+161	48.5	0
+162	48.5	0
+163	48.5	0
+164	48.5	0
+165	48.5	0
+166	48.5	0
+167	48.5	0
+168	48.5	0
+169	48.5	0
+170	48.5	0
+171	48.5	0
+172	48.5	0
+173	48.5	0
+174	48.5	0
+175	48.5	0
+176	48.5	0
+177	48.5	0
+178	48.5	0
+179	48.5	0
+180	48.5	0
+181	48.5	0
+182	48.5	0
+183	48.5	0
+184	48.5	0
+185	48.5	0
+186	48.5	0
+187	48.5	0
+188	48.5	0
+189	48.5	0
+190	48.5	0
+191	48.5	0
+192	48.5	0
+193	48.5	0
+194	48.5	0
+195	48.5	0
+196	48.5	0
+197	48.5	0
+198	48.5	0
+199	48.5	0
+200	48.5	0
+201	48.5	0
+202	48.5	0
+203	48.5	0
+204	48.5	0
+205	48.5	0
+206	48.5	0
+207	48.5	0
+208	48.5	0
+209	48.5	0
+210	48.5	0
+211	48.5	0
+212	48.5	0
+213	48.5	0
+214	48.5	0
+215	48.5	0
+216	48.5	0
+217	48.5	0
+218	48.5	0
+219	48.5	0
+220	48.5	0
+221	48.5	0
+222	48.5	0
+223	48.5	0
+224	48.5	0
+225	48.5	0
+226	48.5	0
+227	48.5	0
+228	48.5	0
+229	48.5	0
+230	48.5	0
+231	48.5	0
+232	48.5	0
+233	48.5	0
+234	48.5	0
+235	48.5	0
+236	48.5	0
+237	48.5	0
+238	48.5	0
+239	48.5	0
+240	48.5	0
+241	48.5	0
+242	48.5	0
+243	48.5	0
+244	48.5	0
+245	48.5	0
+246	48.5	0
+247	48.5	0
+248	48.5	0
+249	48.5	0
+250	48.5	0
+251	48.5	0
+252	48.5	0
+253	48.5	0
+254	48.5	0
+255	48.5	0
+256	48.5	0
+257	48.5	0
+258	48.5	0
+259	48.5	0
+260	48.5	0
+261	48.5	0
+262	48.5	0
+263	48.5	0
+264	48.5	0
+265	48.5	0
+266	48.5	0
+267	48.5	0
+268	48.5	0
+269	48.5	0
+270	48.5	0
+271	48.5	0
+272	48.5	0
+273	48.5	0
+274	48.5	0
+275	48.5	0
+276	48.5	0
+277	48.5	0
+278	48.5	0
+279	48.5	0
+280	48.5	0
+281	48.5	0
+282	48.5	0
+283	48.5	0
+284	48.5	0
+285	48.5	0
+286	48.5	0
+287	48.5	0
+288	48.5	0
+289	48.5	0
+290	48.5	0
+291	48.5	0
+292	48.5	0
+293	48.5	0
+294	48.5	0
+295	48.5	0
+296	48.5	0
+297	48.5	0
+298	48.5	0
+299	48.5	0
+300	48.5	0
+301	48.5	0
+302	48.5	0
+303	48.5	0
+304	48.5	0
+305	48.5	0
+306	48.5	0
+307	48.5	0
+308	48.5	0
+309	48.5	0
+310	48.5	0
+311	48.5	0
+312	48.5	0
+313	48.5	0
+314	48.5	0
+315	48.5	0
+316	48.5	0
+317	48.5	0
+318	48.5	0
+319	48.5	0
+320	48.5	0
+321	48.5	0
+322	48.5	0
+323	48.5	0
+324	48.5	0
+325	48.5	0
+326	48.5	0
+327	48.5	0
+328	48.5	0
+329	48.5	0
+330	48.5	0
+331	48.5	0
+332	48.5	0
+333	48.5	0
+334	48.5	0
+335	48.5	0
+336	48.5	0
+337	48.5	0
+338	48.5	0
+339	48.5	0
+340	48.5	0
+341	48.5	0
+342	48.5	0
+343	48.5	0
+344	48.5	0
+345	48.5	0
+346	48.5	0
+347	48.5	0
+348	48.5	0
+349	48.5	0
+350	48.5	0
+351	48.5	0
+352	48.5	0
+353	48.5	0
+354	48.5	0
+355	48.5	0
+356	48.5	0
+357	48.5	0
+358	48.5	0
+359	48.5	0
+360	48.5	0
+0	49	0
+1	49	0
+2	49	0
+3	49	0
+4	49	0
+5	49	0
+6	49	0
+7	49	0
+8	49	0
+9	49	0
+10	49	0
+11	49	0
+12	49	0
+13	49	0
+14	49	0
+15	49	0
+16	49	0
+17	49	0
+18	49	0
+19	49	0
+20	49	0
+21	49	0
+22	49	0
+23	49	0
+24	49	0
+25	49	0
+26	49	0
+27	49	0
+28	49	0
+29	49	0
+30	49	0
+31	49	0
+32	49	0
+33	49	0
+34	49	0
+35	49	0
+36	49	0
+37	49	0
+38	49	0
+39	49	0
+40	49	0
+41	49	0
+42	49	0
+43	49	0
+44	49	0
+45	49	0
+46	49	0
+47	49	0
+48	49	0
+49	49	0
+50	49	0
+51	49	0
+52	49	0
+53	49	0
+54	49	0
+55	49	0
+56	49	0
+57	49	0
+58	49	0
+59	49	0
+60	49	0
+61	49	0
+62	49	0
+63	49	0
+64	49	0
+65	49	0
+66	49	0
+67	49	0
+68	49	0
+69	49	0
+70	49	0
+71	49	0
+72	49	0
+73	49	0
+74	49	0
+75	49	0
+76	49	0
+77	49	0
+78	49	0
+79	49	0
+80	49	0
+81	49	0
+82	49	0
+83	49	0
+84	49	0
+85	49	0
+86	49	0
+87	49	0
+88	49	0
+89	49	0
+90	49	0
+91	49	0
+92	49	0
+93	49	0
+94	49	0
+95	49	0
+96	49	0
+97	49	0
+98	49	0
+99	49	0
+100	49	0
+101	49	0
+102	49	0
+103	49	0
+104	49	0
+105	49	0
+106	49	0
+107	49	0
+108	49	0
+109	49	0
+110	49	0
+111	49	0
+112	49	0
+113	49	0
+114	49	0
+115	49	0
+116	49	0
+117	49	0
+118	49	0
+119	49	0
+120	49	0
+121	49	0
+122	49	0
+123	49	0
+124	49	0
+125	49	0
+126	49	0
+127	49	0
+128	49	0
+129	49	0
+130	49	0
+131	49	0
+132	49	0
+133	49	0
+134	49	0
+135	49	0
+136	49	0
+137	49	0
+138	49	0
+139	49	0
+140	49	0
+141	49	0
+142	49	0
+143	49	0
+144	49	0
+145	49	0
+146	49	0
+147	49	0
+148	49	0
+149	49	0
+150	49	0
+151	49	0
+152	49	0
+153	49	0
+154	49	0
+155	49	0
+156	49	0
+157	49	0
+158	49	0
+159	49	0
+160	49	0
+161	49	0
+162	49	0
+163	49	0
+164	49	0
+165	49	0
+166	49	0
+167	49	0
+168	49	0
+169	49	0
+170	49	0
+171	49	0
+172	49	0
+173	49	0
+174	49	0
+175	49	0
+176	49	0
+177	49	0
+178	49	0
+179	49	0
+180	49	0
+181	49	0
+182	49	0
+183	49	0
+184	49	0
+185	49	0
+186	49	0
+187	49	0
+188	49	0
+189	49	0
+190	49	0
+191	49	0
+192	49	0
+193	49	0
+194	49	0
+195	49	0
+196	49	0
+197	49	0
+198	49	0
+199	49	0
+200	49	0
+201	49	0
+202	49	0
+203	49	0
+204	49	0
+205	49	0
+206	49	0
+207	49	0
+208	49	0
+209	49	0
+210	49	0
+211	49	0
+212	49	0
+213	49	0
+214	49	0
+215	49	0
+216	49	0
+217	49	0
+218	49	0
+219	49	0
+220	49	0
+221	49	0
+222	49	0
+223	49	0
+224	49	0
+225	49	0
+226	49	0
+227	49	0
+228	49	0
+229	49	0
+230	49	0
+231	49	0
+232	49	0
+233	49	0
+234	49	0
+235	49	0
+236	49	0
+237	49	0
+238	49	0
+239	49	0
+240	49	0
+241	49	0
+242	49	0
+243	49	0
+244	49	0
+245	49	0
+246	49	0
+247	49	0
+248	49	0
+249	49	0
+250	49	0
+251	49	0
+252	49	0
+253	49	0
+254	49	0
+255	49	0
+256	49	0
+257	49	0
+258	49	0
+259	49	0
+260	49	0
+261	49	0
+262	49	0
+263	49	0
+264	49	0
+265	49	0
+266	49	0
+267	49	0
+268	49	0
+269	49	0
+270	49	0
+271	49	0
+272	49	0
+273	49	0
+274	49	0
+275	49	0
+276	49	0
+277	49	0
+278	49	0
+279	49	0
+280	49	0
+281	49	0
+282	49	0
+283	49	0
+284	49	0
+285	49	0
+286	49	0
+287	49	0
+288	49	0
+289	49	0
+290	49	0
+291	49	0
+292	49	0
+293	49	0
+294	49	0
+295	49	0
+296	49	0
+297	49	0
+298	49	0
+299	49	0
+300	49	0
+301	49	0
+302	49	0
+303	49	0
+304	49	0
+305	49	0
+306	49	0
+307	49	0
+308	49	0
+309	49	0
+310	49	0
+311	49	0
+312	49	0
+313	49	0
+314	49	0
+315	49	0
+316	49	0
+317	49	0
+318	49	0
+319	49	0
+320	49	0
+321	49	0
+322	49	0
+323	49	0
+324	49	0
+325	49	0
+326	49	0
+327	49	0
+328	49	0
+329	49	0
+330	49	0
+331	49	0
+332	49	0
+333	49	0
+334	49	0
+335	49	0
+336	49	0
+337	49	0
+338	49	0
+339	49	0
+340	49	0
+341	49	0
+342	49	0
+343	49	0
+344	49	0
+345	49	0
+346	49	0
+347	49	0
+348	49	0
+349	49	0
+350	49	0
+351	49	0
+352	49	0
+353	49	0
+354	49	0
+355	49	0
+356	49	0
+357	49	0
+358	49	0
+359	49	0
+360	49	0
+0	49.5	0
+1	49.5	0
+2	49.5	0
+3	49.5	0
+4	49.5	0
+5	49.5	0
+6	49.5	0
+7	49.5	0
+8	49.5	0
+9	49.5	0
+10	49.5	0
+11	49.5	0
+12	49.5	0
+13	49.5	0
+14	49.5	0
+15	49.5	0
+16	49.5	0
+17	49.5	0
+18	49.5	0
+19	49.5	0
+20	49.5	0
+21	49.5	0
+22	49.5	0
+23	49.5	0
+24	49.5	0
+25	49.5	0
+26	49.5	0
+27	49.5	0
+28	49.5	0
+29	49.5	0
+30	49.5	0
+31	49.5	0
+32	49.5	0
+33	49.5	0
+34	49.5	0
+35	49.5	0
+36	49.5	0
+37	49.5	0
+38	49.5	0
+39	49.5	0
+40	49.5	0
+41	49.5	0
+42	49.5	0
+43	49.5	0
+44	49.5	0
+45	49.5	0
+46	49.5	0
+47	49.5	0
+48	49.5	0
+49	49.5	0
+50	49.5	0
+51	49.5	0
+52	49.5	0
+53	49.5	0
+54	49.5	0
+55	49.5	0
+56	49.5	0
+57	49.5	0
+58	49.5	0
+59	49.5	0
+60	49.5	0
+61	49.5	0
+62	49.5	0
+63	49.5	0
+64	49.5	0
+65	49.5	0
+66	49.5	0
+67	49.5	0
+68	49.5	0
+69	49.5	0
+70	49.5	0
+71	49.5	0
+72	49.5	0
+73	49.5	0
+74	49.5	0
+75	49.5	0
+76	49.5	0
+77	49.5	0
+78	49.5	0
+79	49.5	0
+80	49.5	0
+81	49.5	0
+82	49.5	0
+83	49.5	0
+84	49.5	0
+85	49.5	0
+86	49.5	0
+87	49.5	0
+88	49.5	0
+89	49.5	0
+90	49.5	0
+91	49.5	0
+92	49.5	0
+93	49.5	0
+94	49.5	0
+95	49.5	0
+96	49.5	0
+97	49.5	0
+98	49.5	0
+99	49.5	0
+100	49.5	0
+101	49.5	0
+102	49.5	0
+103	49.5	0
+104	49.5	0
+105	49.5	0
+106	49.5	0
+107	49.5	0
+108	49.5	0
+109	49.5	0
+110	49.5	0
+111	49.5	0
+112	49.5	0
+113	49.5	0
+114	49.5	0
+115	49.5	0
+116	49.5	0
+117	49.5	0
+118	49.5	0
+119	49.5	0
+120	49.5	0
+121	49.5	0
+122	49.5	0
+123	49.5	0
+124	49.5	0
+125	49.5	0
+126	49.5	0
+127	49.5	0
+128	49.5	0
+129	49.5	0
+130	49.5	0
+131	49.5	0
+132	49.5	0
+133	49.5	0
+134	49.5	0
+135	49.5	0
+136	49.5	0
+137	49.5	0
+138	49.5	0
+139	49.5	0
+140	49.5	0
+141	49.5	0
+142	49.5	0
+143	49.5	0
+144	49.5	0
+145	49.5	0
+146	49.5	0
+147	49.5	0
+148	49.5	0
+149	49.5	0
+150	49.5	0
+151	49.5	0
+152	49.5	0
+153	49.5	0
+154	49.5	0
+155	49.5	0
+156	49.5	0
+157	49.5	0
+158	49.5	0
+159	49.5	0
+160	49.5	0
+161	49.5	0
+162	49.5	0
+163	49.5	0
+164	49.5	0
+165	49.5	0
+166	49.5	0
+167	49.5	0
+168	49.5	0
+169	49.5	0
+170	49.5	0
+171	49.5	0
+172	49.5	0
+173	49.5	0
+174	49.5	0
+175	49.5	0
+176	49.5	0
+177	49.5	0
+178	49.5	0
+179	49.5	0
+180	49.5	0
+181	49.5	0
+182	49.5	0
+183	49.5	0
+184	49.5	0
+185	49.5	0
+186	49.5	0
+187	49.5	0
+188	49.5	0
+189	49.5	0
+190	49.5	0
+191	49.5	0
+192	49.5	0
+193	49.5	0
+194	49.5	0
+195	49.5	0
+196	49.5	0
+197	49.5	0
+198	49.5	0
+199	49.5	0
+200	49.5	0
+201	49.5	0
+202	49.5	0
+203	49.5	0
+204	49.5	0
+205	49.5	0
+206	49.5	0
+207	49.5	0
+208	49.5	0
+209	49.5	0
+210	49.5	0
+211	49.5	0
+212	49.5	0
+213	49.5	0
+214	49.5	0
+215	49.5	0
+216	49.5	0
+217	49.5	0
+218	49.5	0
+219	49.5	0
+220	49.5	0
+221	49.5	0
+222	49.5	0
+223	49.5	0
+224	49.5	0
+225	49.5	0
+226	49.5	0
+227	49.5	0
+228	49.5	0
+229	49.5	0
+230	49.5	0
+231	49.5	0
+232	49.5	0
+233	49.5	0
+234	49.5	0
+235	49.5	0
+236	49.5	0
+237	49.5	0
+238	49.5	0
+239	49.5	0
+240	49.5	0
+241	49.5	0
+242	49.5	0
+243	49.5	0
+244	49.5	0
+245	49.5	0
+246	49.5	0
+247	49.5	0
+248	49.5	0
+249	49.5	0
+250	49.5	0
+251	49.5	0
+252	49.5	0
+253	49.5	0
+254	49.5	0
+255	49.5	0
+256	49.5	0
+257	49.5	0
+258	49.5	0
+259	49.5	0
+260	49.5	0
+261	49.5	0
+262	49.5	0
+263	49.5	0
+264	49.5	0
+265	49.5	0
+266	49.5	0
+267	49.5	0
+268	49.5	0
+269	49.5	0
+270	49.5	0
+271	49.5	0
+272	49.5	0
+273	49.5	0
+274	49.5	0
+275	49.5	0
+276	49.5	0
+277	49.5	0
+278	49.5	0
+279	49.5	0
+280	49.5	0
+281	49.5	0
+282	49.5	0
+283	49.5	0
+284	49.5	0
+285	49.5	0
+286	49.5	0
+287	49.5	0
+288	49.5	0
+289	49.5	0
+290	49.5	0
+291	49.5	0
+292	49.5	0
+293	49.5	0
+294	49.5	0
+295	49.5	0
+296	49.5	0
+297	49.5	0
+298	49.5	0
+299	49.5	0
+300	49.5	0
+301	49.5	0
+302	49.5	0
+303	49.5	0
+304	49.5	0
+305	49.5	0
+306	49.5	0
+307	49.5	0
+308	49.5	0
+309	49.5	0
+310	49.5	0
+311	49.5	0
+312	49.5	0
+313	49.5	0
+314	49.5	0
+315	49.5	0
+316	49.5	0
+317	49.5	0
+318	49.5	0
+319	49.5	0
+320	49.5	0
+321	49.5	0
+322	49.5	0
+323	49.5	0
+324	49.5	0
+325	49.5	0
+326	49.5	0
+327	49.5	0
+328	49.5	0
+329	49.5	0
+330	49.5	0
+331	49.5	0
+332	49.5	0
+333	49.5	0
+334	49.5	0
+335	49.5	0
+336	49.5	0
+337	49.5	0
+338	49.5	0
+339	49.5	0
+340	49.5	0
+341	49.5	0
+342	49.5	0
+343	49.5	0
+344	49.5	0
+345	49.5	0
+346	49.5	0
+347	49.5	0
+348	49.5	0
+349	49.5	0
+350	49.5	0
+351	49.5	0
+352	49.5	0
+353	49.5	0
+354	49.5	0
+355	49.5	0
+356	49.5	0
+357	49.5	0
+358	49.5	0
+359	49.5	0
+360	49.5	0
+0	50	0
+1	50	0
+2	50	0
+3	50	0
+4	50	0
+5	50	0
+6	50	0
+7	50	0
+8	50	0
+9	50	0
+10	50	0
+11	50	0
+12	50	0
+13	50	0
+14	50	0
+15	50	0
+16	50	0
+17	50	0
+18	50	0
+19	50	0
+20	50	0
+21	50	0
+22	50	0
+23	50	0
+24	50	0
+25	50	0
+26	50	0
+27	50	0
+28	50	0
+29	50	0
+30	50	0
+31	50	0
+32	50	0
+33	50	0
+34	50	0
+35	50	0
+36	50	0
+37	50	0
+38	50	0
+39	50	0
+40	50	0
+41	50	0
+42	50	0
+43	50	0
+44	50	0
+45	50	0
+46	50	0
+47	50	0
+48	50	0
+49	50	0
+50	50	0
+51	50	0
+52	50	0
+53	50	0
+54	50	0
+55	50	0
+56	50	0
+57	50	0
+58	50	0
+59	50	0
+60	50	0
+61	50	0
+62	50	0
+63	50	0
+64	50	0
+65	50	0
+66	50	0
+67	50	0
+68	50	0
+69	50	0
+70	50	0
+71	50	0
+72	50	0
+73	50	0
+74	50	0
+75	50	0
+76	50	0
+77	50	0
+78	50	0
+79	50	0
+80	50	0
+81	50	0
+82	50	0
+83	50	0
+84	50	0
+85	50	0
+86	50	0
+87	50	0
+88	50	0
+89	50	0
+90	50	0
+91	50	0
+92	50	0
+93	50	0
+94	50	0
+95	50	0
+96	50	0
+97	50	0
+98	50	0
+99	50	0
+100	50	0
+101	50	0
+102	50	0
+103	50	0
+104	50	0
+105	50	0
+106	50	0
+107	50	0
+108	50	0
+109	50	0
+110	50	0
+111	50	0
+112	50	0
+113	50	0
+114	50	0
+115	50	0
+116	50	0
+117	50	0
+118	50	0
+119	50	0
+120	50	0
+121	50	0
+122	50	0
+123	50	0
+124	50	0
+125	50	0
+126	50	0
+127	50	0
+128	50	0
+129	50	0
+130	50	0
+131	50	0
+132	50	0
+133	50	0
+134	50	0
+135	50	0
+136	50	0
+137	50	0
+138	50	0
+139	50	0
+140	50	0
+141	50	0
+142	50	0
+143	50	0
+144	50	0
+145	50	0
+146	50	0
+147	50	0
+148	50	0
+149	50	0
+150	50	0
+151	50	0
+152	50	0
+153	50	0
+154	50	0
+155	50	0
+156	50	0
+157	50	0
+158	50	0
+159	50	0
+160	50	0
+161	50	0
+162	50	0
+163	50	0
+164	50	0
+165	50	0
+166	50	0
+167	50	0
+168	50	0
+169	50	0
+170	50	0
+171	50	0
+172	50	0
+173	50	0
+174	50	0
+175	50	0
+176	50	0
+177	50	0
+178	50	0
+179	50	0
+180	50	0
+181	50	0
+182	50	0
+183	50	0
+184	50	0
+185	50	0
+186	50	0
+187	50	0
+188	50	0
+189	50	0
+190	50	0
+191	50	0
+192	50	0
+193	50	0
+194	50	0
+195	50	0
+196	50	0
+197	50	0
+198	50	0
+199	50	0
+200	50	0
+201	50	0
+202	50	0
+203	50	0
+204	50	0
+205	50	0
+206	50	0
+207	50	0
+208	50	0
+209	50	0
+210	50	0
+211	50	0
+212	50	0
+213	50	0
+214	50	0
+215	50	0
+216	50	0
+217	50	0
+218	50	0
+219	50	0
+220	50	0
+221	50	0
+222	50	0
+223	50	0
+224	50	0
+225	50	0
+226	50	0
+227	50	0
+228	50	0
+229	50	0
+230	50	0
+231	50	0
+232	50	0
+233	50	0
+234	50	0
+235	50	0
+236	50	0
+237	50	0
+238	50	0
+239	50	0
+240	50	0
+241	50	0
+242	50	0
+243	50	0
+244	50	0
+245	50	0
+246	50	0
+247	50	0
+248	50	0
+249	50	0
+250	50	0
+251	50	0
+252	50	0
+253	50	0
+254	50	0
+255	50	0
+256	50	0
+257	50	0
+258	50	0
+259	50	0
+260	50	0
+261	50	0
+262	50	0
+263	50	0
+264	50	0
+265	50	0
+266	50	0
+267	50	0
+268	50	0
+269	50	0
+270	50	0
+271	50	0
+272	50	0
+273	50	0
+274	50	0
+275	50	0
+276	50	0
+277	50	0
+278	50	0
+279	50	0
+280	50	0
+281	50	0
+282	50	0
+283	50	0
+284	50	0
+285	50	0
+286	50	0
+287	50	0
+288	50	0
+289	50	0
+290	50	0
+291	50	0
+292	50	0
+293	50	0
+294	50	0
+295	50	0
+296	50	0
+297	50	0
+298	50	0
+299	50	0
+300	50	0
+301	50	0
+302	50	0
+303	50	0
+304	50	0
+305	50	0
+306	50	0
+307	50	0
+308	50	0
+309	50	0
+310	50	0
+311	50	0
+312	50	0
+313	50	0
+314	50	0
+315	50	0
+316	50	0
+317	50	0
+318	50	0
+319	50	0
+320	50	0
+321	50	0
+322	50	0
+323	50	0
+324	50	0
+325	50	0
+326	50	0
+327	50	0
+328	50	0
+329	50	0
+330	50	0
+331	50	0
+332	50	0
+333	50	0
+334	50	0
+335	50	0
+336	50	0
+337	50	0
+338	50	0
+339	50	0
+340	50	0
+341	50	0
+342	50	0
+343	50	0
+344	50	0
+345	50	0
+346	50	0
+347	50	0
+348	50	0
+349	50	0
+350	50	0
+351	50	0
+352	50	0
+353	50	0
+354	50	0
+355	50	0
+356	50	0
+357	50	0
+358	50	0
+359	50	0
+360	50	0
+0	50.5	0
+1	50.5	0
+2	50.5	0
+3	50.5	0
+4	50.5	0
+5	50.5	0
+6	50.5	0
+7	50.5	0
+8	50.5	0
+9	50.5	0
+10	50.5	0
+11	50.5	0
+12	50.5	0
+13	50.5	0
+14	50.5	0
+15	50.5	0
+16	50.5	0
+17	50.5	0
+18	50.5	0
+19	50.5	0
+20	50.5	0
+21	50.5	0
+22	50.5	0
+23	50.5	0
+24	50.5	0
+25	50.5	0
+26	50.5	0
+27	50.5	0
+28	50.5	0
+29	50.5	0
+30	50.5	0
+31	50.5	0
+32	50.5	0
+33	50.5	0
+34	50.5	0
+35	50.5	0
+36	50.5	0
+37	50.5	0
+38	50.5	0
+39	50.5	0
+40	50.5	0
+41	50.5	0
+42	50.5	0
+43	50.5	0
+44	50.5	0
+45	50.5	0
+46	50.5	0
+47	50.5	0
+48	50.5	0
+49	50.5	0
+50	50.5	0
+51	50.5	0
+52	50.5	0
+53	50.5	0
+54	50.5	0
+55	50.5	0
+56	50.5	0
+57	50.5	0
+58	50.5	0
+59	50.5	0
+60	50.5	0
+61	50.5	0
+62	50.5	0
+63	50.5	0
+64	50.5	0
+65	50.5	0
+66	50.5	0
+67	50.5	0
+68	50.5	0
+69	50.5	0
+70	50.5	0
+71	50.5	0
+72	50.5	0
+73	50.5	0
+74	50.5	0
+75	50.5	0
+76	50.5	0
+77	50.5	0
+78	50.5	0
+79	50.5	0
+80	50.5	0
+81	50.5	0
+82	50.5	0
+83	50.5	0
+84	50.5	0
+85	50.5	0
+86	50.5	0
+87	50.5	0
+88	50.5	0
+89	50.5	0
+90	50.5	0
+91	50.5	0
+92	50.5	0
+93	50.5	0
+94	50.5	0
+95	50.5	0
+96	50.5	0
+97	50.5	0
+98	50.5	0
+99	50.5	0
+100	50.5	0
+101	50.5	0
+102	50.5	0
+103	50.5	0
+104	50.5	0
+105	50.5	0
+106	50.5	0
+107	50.5	0
+108	50.5	0
+109	50.5	0
+110	50.5	0
+111	50.5	0
+112	50.5	0
+113	50.5	0
+114	50.5	0
+115	50.5	0
+116	50.5	0
+117	50.5	0
+118	50.5	0
+119	50.5	0
+120	50.5	0
+121	50.5	0
+122	50.5	0
+123	50.5	0
+124	50.5	0
+125	50.5	0
+126	50.5	0
+127	50.5	0
+128	50.5	0
+129	50.5	0
+130	50.5	0
+131	50.5	0
+132	50.5	0
+133	50.5	0
+134	50.5	0
+135	50.5	0
+136	50.5	0
+137	50.5	0
+138	50.5	0
+139	50.5	0
+140	50.5	0
+141	50.5	0
+142	50.5	0
+143	50.5	0
+144	50.5	0
+145	50.5	0
+146	50.5	0
+147	50.5	0
+148	50.5	0
+149	50.5	0
+150	50.5	0
+151	50.5	0
+152	50.5	0
+153	50.5	0
+154	50.5	0
+155	50.5	0
+156	50.5	0
+157	50.5	0
+158	50.5	0
+159	50.5	0
+160	50.5	0
+161	50.5	0
+162	50.5	0
+163	50.5	0
+164	50.5	0
+165	50.5	0
+166	50.5	0
+167	50.5	0
+168	50.5	0
+169	50.5	0
+170	50.5	0
+171	50.5	0
+172	50.5	0
+173	50.5	0
+174	50.5	0
+175	50.5	0
+176	50.5	0
+177	50.5	0
+178	50.5	0
+179	50.5	0
+180	50.5	0
+181	50.5	0
+182	50.5	0
+183	50.5	0
+184	50.5	0
+185	50.5	0
+186	50.5	0
+187	50.5	0
+188	50.5	0
+189	50.5	0
+190	50.5	0
+191	50.5	0
+192	50.5	0
+193	50.5	0
+194	50.5	0
+195	50.5	0
+196	50.5	0
+197	50.5	0
+198	50.5	0
+199	50.5	0
+200	50.5	0
+201	50.5	0
+202	50.5	0
+203	50.5	0
+204	50.5	0
+205	50.5	0
+206	50.5	0
+207	50.5	0
+208	50.5	0
+209	50.5	0
+210	50.5	0
+211	50.5	0
+212	50.5	0
+213	50.5	0
+214	50.5	0
+215	50.5	0
+216	50.5	0
+217	50.5	0
+218	50.5	0
+219	50.5	0
+220	50.5	0
+221	50.5	0
+222	50.5	0
+223	50.5	0
+224	50.5	0
+225	50.5	0
+226	50.5	0
+227	50.5	0
+228	50.5	0
+229	50.5	0
+230	50.5	0
+231	50.5	0
+232	50.5	0
+233	50.5	0
+234	50.5	0
+235	50.5	0
+236	50.5	0
+237	50.5	0
+238	50.5	0
+239	50.5	0
+240	50.5	0
+241	50.5	0
+242	50.5	0
+243	50.5	0
+244	50.5	0
+245	50.5	0
+246	50.5	0
+247	50.5	0
+248	50.5	0
+249	50.5	0
+250	50.5	0
+251	50.5	0
+252	50.5	0
+253	50.5	0
+254	50.5	0
+255	50.5	0
+256	50.5	0
+257	50.5	0
+258	50.5	0
+259	50.5	0
+260	50.5	0
+261	50.5	0
+262	50.5	0
+263	50.5	0
+264	50.5	0
+265	50.5	0
+266	50.5	0
+267	50.5	0
+268	50.5	0
+269	50.5	0
+270	50.5	0
+271	50.5	0
+272	50.5	0
+273	50.5	0
+274	50.5	0
+275	50.5	0
+276	50.5	0
+277	50.5	0
+278	50.5	0
+279	50.5	0
+280	50.5	0
+281	50.5	0
+282	50.5	0
+283	50.5	0
+284	50.5	0
+285	50.5	0
+286	50.5	0
+287	50.5	0
+288	50.5	0
+289	50.5	0
+290	50.5	0
+291	50.5	0
+292	50.5	0
+293	50.5	0
+294	50.5	0
+295	50.5	0
+296	50.5	0
+297	50.5	0
+298	50.5	0
+299	50.5	0
+300	50.5	0
+301	50.5	0
+302	50.5	0
+303	50.5	0
+304	50.5	0
+305	50.5	0
+306	50.5	0
+307	50.5	0
+308	50.5	0
+309	50.5	0
+310	50.5	0
+311	50.5	0
+312	50.5	0
+313	50.5	0
+314	50.5	0
+315	50.5	0
+316	50.5	0
+317	50.5	0
+318	50.5	0
+319	50.5	0
+320	50.5	0
+321	50.5	0
+322	50.5	0
+323	50.5	0
+324	50.5	0
+325	50.5	0
+326	50.5	0
+327	50.5	0
+328	50.5	0
+329	50.5	0
+330	50.5	0
+331	50.5	0
+332	50.5	0
+333	50.5	0
+334	50.5	0
+335	50.5	0
+336	50.5	0
+337	50.5	0
+338	50.5	0
+339	50.5	0
+340	50.5	0
+341	50.5	0
+342	50.5	0
+343	50.5	0
+344	50.5	0
+345	50.5	0
+346	50.5	0
+347	50.5	0
+348	50.5	0
+349	50.5	0
+350	50.5	0
+351	50.5	0
+352	50.5	0
+353	50.5	0
+354	50.5	0
+355	50.5	0
+356	50.5	0
+357	50.5	0
+358	50.5	0
+359	50.5	0
+360	50.5	0
+0	51	0
+1	51	0
+2	51	0
+3	51	0
+4	51	0
+5	51	0
+6	51	0
+7	51	0
+8	51	0
+9	51	0
+10	51	0
+11	51	0
+12	51	0
+13	51	0
+14	51	0
+15	51	0
+16	51	0
+17	51	0
+18	51	0
+19	51	0
+20	51	0
+21	51	0
+22	51	0
+23	51	0
+24	51	0
+25	51	0
+26	51	0
+27	51	0
+28	51	0
+29	51	0
+30	51	0
+31	51	0
+32	51	0
+33	51	0
+34	51	0
+35	51	0
+36	51	0
+37	51	0
+38	51	0
+39	51	0
+40	51	0
+41	51	0
+42	51	0
+43	51	0
+44	51	0
+45	51	0
+46	51	0
+47	51	0
+48	51	0
+49	51	0
+50	51	0
+51	51	0
+52	51	0
+53	51	0
+54	51	0
+55	51	0
+56	51	0
+57	51	0
+58	51	0
+59	51	0
+60	51	0
+61	51	0
+62	51	0
+63	51	0
+64	51	0
+65	51	0
+66	51	0
+67	51	0
+68	51	0
+69	51	0
+70	51	0
+71	51	0
+72	51	0
+73	51	0
+74	51	0
+75	51	0
+76	51	0
+77	51	0
+78	51	0
+79	51	0
+80	51	0
+81	51	0
+82	51	0
+83	51	0
+84	51	0
+85	51	0
+86	51	0
+87	51	0
+88	51	0
+89	51	0
+90	51	0
+91	51	0
+92	51	0
+93	51	0
+94	51	0
+95	51	0
+96	51	0
+97	51	0
+98	51	0
+99	51	0
+100	51	0
+101	51	0
+102	51	0
+103	51	0
+104	51	0
+105	51	0
+106	51	0
+107	51	0
+108	51	0
+109	51	0
+110	51	0
+111	51	0
+112	51	0
+113	51	0
+114	51	0
+115	51	0
+116	51	0
+117	51	0
+118	51	0
+119	51	0
+120	51	0
+121	51	0
+122	51	0
+123	51	0
+124	51	0
+125	51	0
+126	51	0
+127	51	0
+128	51	0
+129	51	0
+130	51	0
+131	51	0
+132	51	0
+133	51	0
+134	51	0
+135	51	0
+136	51	0
+137	51	0
+138	51	0
+139	51	0
+140	51	0
+141	51	0
+142	51	0
+143	51	0
+144	51	0
+145	51	0
+146	51	0
+147	51	0
+148	51	0
+149	51	0
+150	51	0
+151	51	0
+152	51	0
+153	51	0
+154	51	0
+155	51	0
+156	51	0
+157	51	0
+158	51	0
+159	51	0
+160	51	0
+161	51	0
+162	51	0
+163	51	0
+164	51	0
+165	51	0
+166	51	0
+167	51	0
+168	51	0
+169	51	0
+170	51	0
+171	51	0
+172	51	0
+173	51	0
+174	51	0
+175	51	0
+176	51	0
+177	51	0
+178	51	0
+179	51	0
+180	51	0
+181	51	0
+182	51	0
+183	51	0
+184	51	0
+185	51	0
+186	51	0
+187	51	0
+188	51	0
+189	51	0
+190	51	0
+191	51	0
+192	51	0
+193	51	0
+194	51	0
+195	51	0
+196	51	0
+197	51	0
+198	51	0
+199	51	0
+200	51	0
+201	51	0
+202	51	0
+203	51	0
+204	51	0
+205	51	0
+206	51	0
+207	51	0
+208	51	0
+209	51	0
+210	51	0
+211	51	0
+212	51	0
+213	51	0
+214	51	0
+215	51	0
+216	51	0
+217	51	0
+218	51	0
+219	51	0
+220	51	0
+221	51	0
+222	51	0
+223	51	0
+224	51	0
+225	51	0
+226	51	0
+227	51	0
+228	51	0
+229	51	0
+230	51	0
+231	51	0
+232	51	0
+233	51	0
+234	51	0
+235	51	0
+236	51	0
+237	51	0
+238	51	0
+239	51	0
+240	51	0
+241	51	0
+242	51	0
+243	51	0
+244	51	0
+245	51	0
+246	51	0
+247	51	0
+248	51	0
+249	51	0
+250	51	0
+251	51	0
+252	51	0
+253	51	0
+254	51	0
+255	51	0
+256	51	0
+257	51	0
+258	51	0
+259	51	0
+260	51	0
+261	51	0
+262	51	0
+263	51	0
+264	51	0
+265	51	0
+266	51	0
+267	51	0
+268	51	0
+269	51	0
+270	51	0
+271	51	0
+272	51	0
+273	51	0
+274	51	0
+275	51	0
+276	51	0
+277	51	0
+278	51	0
+279	51	0
+280	51	0
+281	51	0
+282	51	0
+283	51	0
+284	51	0
+285	51	0
+286	51	0
+287	51	0
+288	51	0
+289	51	0
+290	51	0
+291	51	0
+292	51	0
+293	51	0
+294	51	0
+295	51	0
+296	51	0
+297	51	0
+298	51	0
+299	51	0
+300	51	0
+301	51	0
+302	51	0
+303	51	0
+304	51	0
+305	51	0
+306	51	0
+307	51	0
+308	51	0
+309	51	0
+310	51	0
+311	51	0
+312	51	0
+313	51	0
+314	51	0
+315	51	0
+316	51	0
+317	51	0
+318	51	0
+319	51	0
+320	51	0
+321	51	0
+322	51	0
+323	51	0
+324	51	0
+325	51	0
+326	51	0
+327	51	0
+328	51	0
+329	51	0
+330	51	0
+331	51	0
+332	51	0
+333	51	0
+334	51	0
+335	51	0
+336	51	0
+337	51	0
+338	51	0
+339	51	0
+340	51	0
+341	51	0
+342	51	0
+343	51	0
+344	51	0
+345	51	0
+346	51	0
+347	51	0
+348	51	0
+349	51	0
+350	51	0
+351	51	0
+352	51	0
+353	51	0
+354	51	0
+355	51	0
+356	51	0
+357	51	0
+358	51	0
+359	51	0
+360	51	0
+0	51.5	0
+1	51.5	0
+2	51.5	0
+3	51.5	0
+4	51.5	0
+5	51.5	0
+6	51.5	0
+7	51.5	0
+8	51.5	0
+9	51.5	0
+10	51.5	0
+11	51.5	0
+12	51.5	0
+13	51.5	0
+14	51.5	0
+15	51.5	0
+16	51.5	0
+17	51.5	0
+18	51.5	0
+19	51.5	0
+20	51.5	0
+21	51.5	0
+22	51.5	0
+23	51.5	0
+24	51.5	0
+25	51.5	0
+26	51.5	0
+27	51.5	0
+28	51.5	0
+29	51.5	0
+30	51.5	0
+31	51.5	0
+32	51.5	0
+33	51.5	0
+34	51.5	0
+35	51.5	0
+36	51.5	0
+37	51.5	0
+38	51.5	0
+39	51.5	0
+40	51.5	0
+41	51.5	0
+42	51.5	0
+43	51.5	0
+44	51.5	0
+45	51.5	0
+46	51.5	0
+47	51.5	0
+48	51.5	0
+49	51.5	0
+50	51.5	0
+51	51.5	0
+52	51.5	0
+53	51.5	0
+54	51.5	0
+55	51.5	0
+56	51.5	0
+57	51.5	0
+58	51.5	0
+59	51.5	0
+60	51.5	0
+61	51.5	0
+62	51.5	0
+63	51.5	0
+64	51.5	0
+65	51.5	0
+66	51.5	0
+67	51.5	0
+68	51.5	0
+69	51.5	0
+70	51.5	0
+71	51.5	0
+72	51.5	0
+73	51.5	0
+74	51.5	0
+75	51.5	0
+76	51.5	0
+77	51.5	0
+78	51.5	0
+79	51.5	0
+80	51.5	0
+81	51.5	0
+82	51.5	0
+83	51.5	0
+84	51.5	0
+85	51.5	0
+86	51.5	0
+87	51.5	0
+88	51.5	0
+89	51.5	0
+90	51.5	0
+91	51.5	0
+92	51.5	0
+93	51.5	0
+94	51.5	0
+95	51.5	0
+96	51.5	0
+97	51.5	0
+98	51.5	0
+99	51.5	0
+100	51.5	0
+101	51.5	0
+102	51.5	0
+103	51.5	0
+104	51.5	0
+105	51.5	0
+106	51.5	0
+107	51.5	0
+108	51.5	0
+109	51.5	0
+110	51.5	0
+111	51.5	0
+112	51.5	0
+113	51.5	0
+114	51.5	0
+115	51.5	0
+116	51.5	0
+117	51.5	0
+118	51.5	0
+119	51.5	0
+120	51.5	0
+121	51.5	0
+122	51.5	0
+123	51.5	0
+124	51.5	0
+125	51.5	0
+126	51.5	0
+127	51.5	0
+128	51.5	0
+129	51.5	0
+130	51.5	0
+131	51.5	0
+132	51.5	0
+133	51.5	0
+134	51.5	0
+135	51.5	0
+136	51.5	0
+137	51.5	0
+138	51.5	0
+139	51.5	0
+140	51.5	0
+141	51.5	0
+142	51.5	0
+143	51.5	0
+144	51.5	0
+145	51.5	0
+146	51.5	0
+147	51.5	0
+148	51.5	0
+149	51.5	0
+150	51.5	0
+151	51.5	0
+152	51.5	0
+153	51.5	0
+154	51.5	0
+155	51.5	0
+156	51.5	0
+157	51.5	0
+158	51.5	0
+159	51.5	0
+160	51.5	0
+161	51.5	0
+162	51.5	0
+163	51.5	0
+164	51.5	0
+165	51.5	0
+166	51.5	0
+167	51.5	0
+168	51.5	0
+169	51.5	0
+170	51.5	0
+171	51.5	0
+172	51.5	0
+173	51.5	0
+174	51.5	0
+175	51.5	0
+176	51.5	0
+177	51.5	0
+178	51.5	0
+179	51.5	0
+180	51.5	0
+181	51.5	0
+182	51.5	0
+183	51.5	0
+184	51.5	0
+185	51.5	0
+186	51.5	0
+187	51.5	0
+188	51.5	0
+189	51.5	0
+190	51.5	0
+191	51.5	0
+192	51.5	0
+193	51.5	0
+194	51.5	0
+195	51.5	0
+196	51.5	0
+197	51.5	0
+198	51.5	0
+199	51.5	0
+200	51.5	0
+201	51.5	0
+202	51.5	0
+203	51.5	0
+204	51.5	0
+205	51.5	0
+206	51.5	0
+207	51.5	0
+208	51.5	0
+209	51.5	0
+210	51.5	0
+211	51.5	0
+212	51.5	0
+213	51.5	0
+214	51.5	0
+215	51.5	0
+216	51.5	0
+217	51.5	0
+218	51.5	0
+219	51.5	0
+220	51.5	0
+221	51.5	0
+222	51.5	0
+223	51.5	0
+224	51.5	0
+225	51.5	0
+226	51.5	0
+227	51.5	0
+228	51.5	0
+229	51.5	0
+230	51.5	0
+231	51.5	0
+232	51.5	0
+233	51.5	0
+234	51.5	0
+235	51.5	0
+236	51.5	0
+237	51.5	0
+238	51.5	0
+239	51.5	0
+240	51.5	0
+241	51.5	0
+242	51.5	0
+243	51.5	0
+244	51.5	0
+245	51.5	0
+246	51.5	0
+247	51.5	0
+248	51.5	0
+249	51.5	0
+250	51.5	0
+251	51.5	0
+252	51.5	0
+253	51.5	0
+254	51.5	0
+255	51.5	0
+256	51.5	0
+257	51.5	0
+258	51.5	0
+259	51.5	0
+260	51.5	0
+261	51.5	0
+262	51.5	0
+263	51.5	0
+264	51.5	0
+265	51.5	0
+266	51.5	0
+267	51.5	0
+268	51.5	0
+269	51.5	0
+270	51.5	0
+271	51.5	0
+272	51.5	0
+273	51.5	0
+274	51.5	0
+275	51.5	0
+276	51.5	0
+277	51.5	0
+278	51.5	0
+279	51.5	0
+280	51.5	0
+281	51.5	0
+282	51.5	0
+283	51.5	0
+284	51.5	0
+285	51.5	0
+286	51.5	0
+287	51.5	0
+288	51.5	0
+289	51.5	0
+290	51.5	0
+291	51.5	0
+292	51.5	0
+293	51.5	0
+294	51.5	0
+295	51.5	0
+296	51.5	0
+297	51.5	0
+298	51.5	0
+299	51.5	0
+300	51.5	0
+301	51.5	0
+302	51.5	0
+303	51.5	0
+304	51.5	0
+305	51.5	0
+306	51.5	0
+307	51.5	0
+308	51.5	0
+309	51.5	0
+310	51.5	0
+311	51.5	0
+312	51.5	0
+313	51.5	0
+314	51.5	0
+315	51.5	0
+316	51.5	0
+317	51.5	0
+318	51.5	0
+319	51.5	0
+320	51.5	0
+321	51.5	0
+322	51.5	0
+323	51.5	0
+324	51.5	0
+325	51.5	0
+326	51.5	0
+327	51.5	0
+328	51.5	0
+329	51.5	0
+330	51.5	0
+331	51.5	0
+332	51.5	0
+333	51.5	0
+334	51.5	0
+335	51.5	0
+336	51.5	0
+337	51.5	0
+338	51.5	0
+339	51.5	0
+340	51.5	0
+341	51.5	0
+342	51.5	0
+343	51.5	0
+344	51.5	0
+345	51.5	0
+346	51.5	0
+347	51.5	0
+348	51.5	0
+349	51.5	0
+350	51.5	0
+351	51.5	0
+352	51.5	0
+353	51.5	0
+354	51.5	0
+355	51.5	0
+356	51.5	0
+357	51.5	0
+358	51.5	0
+359	51.5	0
+360	51.5	0
+0	52	0
+1	52	0
+2	52	0
+3	52	0
+4	52	0
+5	52	0
+6	52	0
+7	52	0
+8	52	0
+9	52	0
+10	52	0
+11	52	0
+12	52	0
+13	52	0
+14	52	0
+15	52	0
+16	52	0
+17	52	0
+18	52	0
+19	52	0
+20	52	0
+21	52	0
+22	52	0
+23	52	0
+24	52	0
+25	52	0
+26	52	0
+27	52	0
+28	52	0
+29	52	0
+30	52	0
+31	52	0
+32	52	0
+33	52	0
+34	52	0
+35	52	0
+36	52	0
+37	52	0
+38	52	0
+39	52	0
+40	52	0
+41	52	0
+42	52	0
+43	52	0
+44	52	0
+45	52	0
+46	52	0
+47	52	0
+48	52	0
+49	52	0
+50	52	0
+51	52	0
+52	52	0
+53	52	0
+54	52	0
+55	52	0
+56	52	0
+57	52	0
+58	52	0
+59	52	0
+60	52	0
+61	52	0
+62	52	0
+63	52	0
+64	52	0
+65	52	0
+66	52	0
+67	52	0
+68	52	0
+69	52	0
+70	52	0
+71	52	0
+72	52	0
+73	52	0
+74	52	0
+75	52	0
+76	52	0
+77	52	0
+78	52	0
+79	52	0
+80	52	0
+81	52	0
+82	52	0
+83	52	0
+84	52	0
+85	52	0
+86	52	0
+87	52	0
+88	52	0
+89	52	0
+90	52	0
+91	52	0
+92	52	0
+93	52	0
+94	52	0
+95	52	0
+96	52	0
+97	52	0
+98	52	0
+99	52	0
+100	52	0
+101	52	0
+102	52	0
+103	52	0
+104	52	0
+105	52	0
+106	52	0
+107	52	0
+108	52	0
+109	52	0
+110	52	0
+111	52	0
+112	52	0
+113	52	0
+114	52	0
+115	52	0
+116	52	0
+117	52	0
+118	52	0
+119	52	0
+120	52	0
+121	52	0
+122	52	0
+123	52	0
+124	52	0
+125	52	0
+126	52	0
+127	52	0
+128	52	0
+129	52	0
+130	52	0
+131	52	0
+132	52	0
+133	52	0
+134	52	0
+135	52	0
+136	52	0
+137	52	0
+138	52	0
+139	52	0
+140	52	0
+141	52	0
+142	52	0
+143	52	0
+144	52	0
+145	52	0
+146	52	0
+147	52	0
+148	52	0
+149	52	0
+150	52	0
+151	52	0
+152	52	0
+153	52	0
+154	52	0
+155	52	0
+156	52	0
+157	52	0
+158	52	0
+159	52	0
+160	52	0
+161	52	0
+162	52	0
+163	52	0
+164	52	0
+165	52	0
+166	52	0
+167	52	0
+168	52	0
+169	52	0
+170	52	0
+171	52	0
+172	52	0
+173	52	0
+174	52	0
+175	52	0
+176	52	0
+177	52	0
+178	52	0
+179	52	0
+180	52	0
+181	52	0
+182	52	0
+183	52	0
+184	52	0
+185	52	0
+186	52	0
+187	52	0
+188	52	0
+189	52	0
+190	52	0
+191	52	0
+192	52	0
+193	52	0
+194	52	0
+195	52	0
+196	52	0
+197	52	0
+198	52	0
+199	52	0
+200	52	0
+201	52	0
+202	52	0
+203	52	0
+204	52	0
+205	52	0
+206	52	0
+207	52	0
+208	52	0
+209	52	0
+210	52	0
+211	52	0
+212	52	0
+213	52	0
+214	52	0
+215	52	0
+216	52	0
+217	52	0
+218	52	0
+219	52	0
+220	52	0
+221	52	0
+222	52	0
+223	52	0
+224	52	0
+225	52	0
+226	52	0
+227	52	0
+228	52	0
+229	52	0
+230	52	0
+231	52	0
+232	52	0
+233	52	0
+234	52	0
+235	52	0
+236	52	0
+237	52	0
+238	52	0
+239	52	0
+240	52	0
+241	52	0
+242	52	0
+243	52	0
+244	52	0
+245	52	0
+246	52	0
+247	52	0
+248	52	0
+249	52	0
+250	52	0
+251	52	0
+252	52	0
+253	52	0
+254	52	0
+255	52	0
+256	52	0
+257	52	0
+258	52	0
+259	52	0
+260	52	0
+261	52	0
+262	52	0
+263	52	0
+264	52	0
+265	52	0
+266	52	0
+267	52	0
+268	52	0
+269	52	0
+270	52	0
+271	52	0
+272	52	0
+273	52	0
+274	52	0
+275	52	0
+276	52	0
+277	52	0
+278	52	0
+279	52	0
+280	52	0
+281	52	0
+282	52	0
+283	52	0
+284	52	0
+285	52	0
+286	52	0
+287	52	0
+288	52	0
+289	52	0
+290	52	0
+291	52	0
+292	52	0
+293	52	0
+294	52	0
+295	52	0
+296	52	0
+297	52	0
+298	52	0
+299	52	0
+300	52	0
+301	52	0
+302	52	0
+303	52	0
+304	52	0
+305	52	0
+306	52	0
+307	52	0
+308	52	0
+309	52	0
+310	52	0
+311	52	0
+312	52	0
+313	52	0
+314	52	0
+315	52	0
+316	52	0
+317	52	0
+318	52	0
+319	52	0
+320	52	0
+321	52	0
+322	52	0
+323	52	0
+324	52	0
+325	52	0
+326	52	0
+327	52	0
+328	52	0
+329	52	0
+330	52	0
+331	52	0
+332	52	0
+333	52	0
+334	52	0
+335	52	0
+336	52	0
+337	52	0
+338	52	0
+339	52	0
+340	52	0
+341	52	0
+342	52	0
+343	52	0
+344	52	0
+345	52	0
+346	52	0
+347	52	0
+348	52	0
+349	52	0
+350	52	0
+351	52	0
+352	52	0
+353	52	0
+354	52	0
+355	52	0
+356	52	0
+357	52	0
+358	52	0
+359	52	0
+360	52	0
+0	52.5	0
+1	52.5	0
+2	52.5	0
+3	52.5	0
+4	52.5	0
+5	52.5	0
+6	52.5	0
+7	52.5	0
+8	52.5	0
+9	52.5	0
+10	52.5	0
+11	52.5	0
+12	52.5	0
+13	52.5	0
+14	52.5	0
+15	52.5	0
+16	52.5	0
+17	52.5	0
+18	52.5	0
+19	52.5	0
+20	52.5	0
+21	52.5	0
+22	52.5	0
+23	52.5	0
+24	52.5	0
+25	52.5	0
+26	52.5	0
+27	52.5	0
+28	52.5	0
+29	52.5	0
+30	52.5	0
+31	52.5	0
+32	52.5	0
+33	52.5	0
+34	52.5	0
+35	52.5	0
+36	52.5	0
+37	52.5	0
+38	52.5	0
+39	52.5	0
+40	52.5	0
+41	52.5	0
+42	52.5	0
+43	52.5	0
+44	52.5	0
+45	52.5	0
+46	52.5	0
+47	52.5	0
+48	52.5	0
+49	52.5	0
+50	52.5	0
+51	52.5	0
+52	52.5	0
+53	52.5	0
+54	52.5	0
+55	52.5	0
+56	52.5	0
+57	52.5	0
+58	52.5	0
+59	52.5	0
+60	52.5	0
+61	52.5	0
+62	52.5	0
+63	52.5	0
+64	52.5	0
+65	52.5	0
+66	52.5	0
+67	52.5	0
+68	52.5	0
+69	52.5	0
+70	52.5	0
+71	52.5	0
+72	52.5	0
+73	52.5	0
+74	52.5	0
+75	52.5	0
+76	52.5	0
+77	52.5	0
+78	52.5	0
+79	52.5	0
+80	52.5	0
+81	52.5	0
+82	52.5	0
+83	52.5	0
+84	52.5	0
+85	52.5	0
+86	52.5	0
+87	52.5	0
+88	52.5	0
+89	52.5	0
+90	52.5	0
+91	52.5	0
+92	52.5	0
+93	52.5	0
+94	52.5	0
+95	52.5	0
+96	52.5	0
+97	52.5	0
+98	52.5	0
+99	52.5	0
+100	52.5	0
+101	52.5	0
+102	52.5	0
+103	52.5	0
+104	52.5	0
+105	52.5	0
+106	52.5	0
+107	52.5	0
+108	52.5	0
+109	52.5	0
+110	52.5	0
+111	52.5	0
+112	52.5	0
+113	52.5	0
+114	52.5	0
+115	52.5	0
+116	52.5	0
+117	52.5	0
+118	52.5	0
+119	52.5	0
+120	52.5	0
+121	52.5	0
+122	52.5	0
+123	52.5	0
+124	52.5	0
+125	52.5	0
+126	52.5	0
+127	52.5	0
+128	52.5	0
+129	52.5	0
+130	52.5	0
+131	52.5	0
+132	52.5	0
+133	52.5	0
+134	52.5	0
+135	52.5	0
+136	52.5	0
+137	52.5	0
+138	52.5	0
+139	52.5	0
+140	52.5	0
+141	52.5	0
+142	52.5	0
+143	52.5	0
+144	52.5	0
+145	52.5	0
+146	52.5	0
+147	52.5	0
+148	52.5	0
+149	52.5	0
+150	52.5	0
+151	52.5	0
+152	52.5	0
+153	52.5	0
+154	52.5	0
+155	52.5	0
+156	52.5	0
+157	52.5	0
+158	52.5	0
+159	52.5	0
+160	52.5	0
+161	52.5	0
+162	52.5	0
+163	52.5	0
+164	52.5	0
+165	52.5	0
+166	52.5	0
+167	52.5	0
+168	52.5	0
+169	52.5	0
+170	52.5	0
+171	52.5	0
+172	52.5	0
+173	52.5	0
+174	52.5	0
+175	52.5	0
+176	52.5	0
+177	52.5	0
+178	52.5	0
+179	52.5	0
+180	52.5	0
+181	52.5	0
+182	52.5	0
+183	52.5	0
+184	52.5	0
+185	52.5	0
+186	52.5	0
+187	52.5	0
+188	52.5	0
+189	52.5	0
+190	52.5	0
+191	52.5	0
+192	52.5	0
+193	52.5	0
+194	52.5	0
+195	52.5	0
+196	52.5	0
+197	52.5	0
+198	52.5	0
+199	52.5	0
+200	52.5	0
+201	52.5	0
+202	52.5	0
+203	52.5	0
+204	52.5	0
+205	52.5	0
+206	52.5	0
+207	52.5	0
+208	52.5	0
+209	52.5	0
+210	52.5	0
+211	52.5	0
+212	52.5	0
+213	52.5	0
+214	52.5	0
+215	52.5	0
+216	52.5	0
+217	52.5	0
+218	52.5	0
+219	52.5	0
+220	52.5	0
+221	52.5	0
+222	52.5	0
+223	52.5	0
+224	52.5	0
+225	52.5	0
+226	52.5	0
+227	52.5	0
+228	52.5	0
+229	52.5	0
+230	52.5	0
+231	52.5	0
+232	52.5	0
+233	52.5	0
+234	52.5	0
+235	52.5	0
+236	52.5	0
+237	52.5	0
+238	52.5	0
+239	52.5	0
+240	52.5	0
+241	52.5	0
+242	52.5	0
+243	52.5	0
+244	52.5	0
+245	52.5	0
+246	52.5	0
+247	52.5	0
+248	52.5	0
+249	52.5	0
+250	52.5	0
+251	52.5	0
+252	52.5	0
+253	52.5	0
+254	52.5	0
+255	52.5	0
+256	52.5	0
+257	52.5	0
+258	52.5	0
+259	52.5	0
+260	52.5	0
+261	52.5	0
+262	52.5	0
+263	52.5	0
+264	52.5	0
+265	52.5	0
+266	52.5	0
+267	52.5	0
+268	52.5	0
+269	52.5	0
+270	52.5	0
+271	52.5	0
+272	52.5	0
+273	52.5	0
+274	52.5	0
+275	52.5	0
+276	52.5	0
+277	52.5	0
+278	52.5	0
+279	52.5	0
+280	52.5	0
+281	52.5	0
+282	52.5	0
+283	52.5	0
+284	52.5	0
+285	52.5	0
+286	52.5	0
+287	52.5	0
+288	52.5	0
+289	52.5	0
+290	52.5	0
+291	52.5	0
+292	52.5	0
+293	52.5	0
+294	52.5	0
+295	52.5	0
+296	52.5	0
+297	52.5	0
+298	52.5	0
+299	52.5	0
+300	52.5	0
+301	52.5	0
+302	52.5	0
+303	52.5	0
+304	52.5	0
+305	52.5	0
+306	52.5	0
+307	52.5	0
+308	52.5	0
+309	52.5	0
+310	52.5	0
+311	52.5	0
+312	52.5	0
+313	52.5	0
+314	52.5	0
+315	52.5	0
+316	52.5	0
+317	52.5	0
+318	52.5	0
+319	52.5	0
+320	52.5	0
+321	52.5	0
+322	52.5	0
+323	52.5	0
+324	52.5	0
+325	52.5	0
+326	52.5	0
+327	52.5	0
+328	52.5	0
+329	52.5	0
+330	52.5	0
+331	52.5	0
+332	52.5	0
+333	52.5	0
+334	52.5	0
+335	52.5	0
+336	52.5	0
+337	52.5	0
+338	52.5	0
+339	52.5	0
+340	52.5	0
+341	52.5	0
+342	52.5	0
+343	52.5	0
+344	52.5	0
+345	52.5	0
+346	52.5	0
+347	52.5	0
+348	52.5	0
+349	52.5	0
+350	52.5	0
+351	52.5	0
+352	52.5	0
+353	52.5	0
+354	52.5	0
+355	52.5	0
+356	52.5	0
+357	52.5	0
+358	52.5	0
+359	52.5	0
+360	52.5	0
+0	53	0
+1	53	0
+2	53	0
+3	53	0
+4	53	0
+5	53	0
+6	53	0
+7	53	0
+8	53	0
+9	53	0
+10	53	0
+11	53	0
+12	53	0
+13	53	0
+14	53	0
+15	53	0
+16	53	0
+17	53	0
+18	53	0
+19	53	0
+20	53	0
+21	53	0
+22	53	0
+23	53	0
+24	53	0
+25	53	0
+26	53	0
+27	53	0
+28	53	0
+29	53	0
+30	53	0
+31	53	0
+32	53	0
+33	53	0
+34	53	0
+35	53	0
+36	53	0
+37	53	0
+38	53	0
+39	53	0
+40	53	0
+41	53	0
+42	53	0
+43	53	0
+44	53	0
+45	53	0
+46	53	0
+47	53	0
+48	53	0
+49	53	0
+50	53	0
+51	53	0
+52	53	0
+53	53	0
+54	53	0
+55	53	0
+56	53	0
+57	53	0
+58	53	0
+59	53	0
+60	53	0
+61	53	0
+62	53	0
+63	53	0
+64	53	0
+65	53	0
+66	53	0
+67	53	0
+68	53	0
+69	53	0
+70	53	0
+71	53	0
+72	53	0
+73	53	0
+74	53	0
+75	53	0
+76	53	0
+77	53	0
+78	53	0
+79	53	0
+80	53	0
+81	53	0
+82	53	0
+83	53	0
+84	53	0
+85	53	0
+86	53	0
+87	53	0
+88	53	0
+89	53	0
+90	53	0
+91	53	0
+92	53	0
+93	53	0
+94	53	0
+95	53	0
+96	53	0
+97	53	0
+98	53	0
+99	53	0
+100	53	0
+101	53	0
+102	53	0
+103	53	0
+104	53	0
+105	53	0
+106	53	0
+107	53	0
+108	53	0
+109	53	0
+110	53	0
+111	53	0
+112	53	0
+113	53	0
+114	53	0
+115	53	0
+116	53	0
+117	53	0
+118	53	0
+119	53	0
+120	53	0
+121	53	0
+122	53	0
+123	53	0
+124	53	0
+125	53	0
+126	53	0
+127	53	0
+128	53	0
+129	53	0
+130	53	0
+131	53	0
+132	53	0
+133	53	0
+134	53	0
+135	53	0
+136	53	0
+137	53	0
+138	53	0
+139	53	0
+140	53	0
+141	53	0
+142	53	0
+143	53	0
+144	53	0
+145	53	0
+146	53	0
+147	53	0
+148	53	0
+149	53	0
+150	53	0
+151	53	0
+152	53	0
+153	53	0
+154	53	0
+155	53	0
+156	53	0
+157	53	0
+158	53	0
+159	53	0
+160	53	0
+161	53	0
+162	53	0
+163	53	0
+164	53	0
+165	53	0
+166	53	0
+167	53	0
+168	53	0
+169	53	0
+170	53	0
+171	53	0
+172	53	0
+173	53	0
+174	53	0
+175	53	0
+176	53	0
+177	53	0
+178	53	0
+179	53	0
+180	53	0
+181	53	0
+182	53	0
+183	53	0
+184	53	0
+185	53	0
+186	53	0
+187	53	0
+188	53	0
+189	53	0
+190	53	0
+191	53	0
+192	53	0
+193	53	0
+194	53	0
+195	53	0
+196	53	0
+197	53	0
+198	53	0
+199	53	0
+200	53	0
+201	53	0
+202	53	0
+203	53	0
+204	53	0
+205	53	0
+206	53	0
+207	53	0
+208	53	0
+209	53	0
+210	53	0
+211	53	0
+212	53	0
+213	53	0
+214	53	0
+215	53	0
+216	53	0
+217	53	0
+218	53	0
+219	53	0
+220	53	0
+221	53	0
+222	53	0
+223	53	0
+224	53	0
+225	53	0
+226	53	0
+227	53	0
+228	53	0
+229	53	0
+230	53	0
+231	53	0
+232	53	0
+233	53	0
+234	53	0
+235	53	0
+236	53	0
+237	53	0
+238	53	0
+239	53	0
+240	53	0
+241	53	0
+242	53	0
+243	53	0
+244	53	0
+245	53	0
+246	53	0
+247	53	0
+248	53	0
+249	53	0
+250	53	0
+251	53	0
+252	53	0
+253	53	0
+254	53	0
+255	53	0
+256	53	0
+257	53	0
+258	53	0
+259	53	0
+260	53	0
+261	53	0
+262	53	0
+263	53	0
+264	53	0
+265	53	0
+266	53	0
+267	53	0
+268	53	0
+269	53	0
+270	53	0
+271	53	0
+272	53	0
+273	53	0
+274	53	0
+275	53	0
+276	53	0
+277	53	0
+278	53	0
+279	53	0
+280	53	0
+281	53	0
+282	53	0
+283	53	0
+284	53	0
+285	53	0
+286	53	0
+287	53	0
+288	53	0
+289	53	0
+290	53	0
+291	53	0
+292	53	0
+293	53	0
+294	53	0
+295	53	0
+296	53	0
+297	53	0
+298	53	0
+299	53	0
+300	53	0
+301	53	0
+302	53	0
+303	53	0
+304	53	0
+305	53	0
+306	53	0
+307	53	0
+308	53	0
+309	53	0
+310	53	0
+311	53	0
+312	53	0
+313	53	0
+314	53	0
+315	53	0
+316	53	0
+317	53	0
+318	53	0
+319	53	0
+320	53	0
+321	53	0
+322	53	0
+323	53	0
+324	53	0
+325	53	0
+326	53	0
+327	53	0
+328	53	0
+329	53	0
+330	53	0
+331	53	0
+332	53	0
+333	53	0
+334	53	0
+335	53	0
+336	53	0
+337	53	0
+338	53	0
+339	53	0
+340	53	0
+341	53	0
+342	53	0
+343	53	0
+344	53	0
+345	53	0
+346	53	0
+347	53	0
+348	53	0
+349	53	0
+350	53	0
+351	53	0
+352	53	0
+353	53	0
+354	53	0
+355	53	0
+356	53	0
+357	53	0
+358	53	0
+359	53	0
+360	53	0
+0	53.5	0
+1	53.5	0
+2	53.5	0
+3	53.5	0
+4	53.5	0
+5	53.5	0
+6	53.5	0
+7	53.5	0
+8	53.5	0
+9	53.5	0
+10	53.5	0
+11	53.5	0
+12	53.5	0
+13	53.5	0
+14	53.5	0
+15	53.5	0
+16	53.5	0
+17	53.5	0
+18	53.5	0
+19	53.5	0
+20	53.5	0
+21	53.5	0
+22	53.5	0
+23	53.5	0
+24	53.5	0
+25	53.5	0
+26	53.5	0
+27	53.5	0
+28	53.5	0
+29	53.5	0
+30	53.5	0
+31	53.5	0
+32	53.5	0
+33	53.5	0
+34	53.5	0
+35	53.5	0
+36	53.5	0
+37	53.5	0
+38	53.5	0
+39	53.5	0
+40	53.5	0
+41	53.5	0
+42	53.5	0
+43	53.5	0
+44	53.5	0
+45	53.5	0
+46	53.5	0
+47	53.5	0
+48	53.5	0
+49	53.5	0
+50	53.5	0
+51	53.5	0
+52	53.5	0
+53	53.5	0
+54	53.5	0
+55	53.5	0
+56	53.5	0
+57	53.5	0
+58	53.5	0
+59	53.5	0
+60	53.5	0
+61	53.5	0
+62	53.5	0
+63	53.5	0
+64	53.5	0
+65	53.5	0
+66	53.5	0
+67	53.5	0
+68	53.5	0
+69	53.5	0
+70	53.5	0
+71	53.5	0
+72	53.5	0
+73	53.5	0
+74	53.5	0
+75	53.5	0
+76	53.5	0
+77	53.5	0
+78	53.5	0
+79	53.5	0
+80	53.5	0
+81	53.5	0
+82	53.5	0
+83	53.5	0
+84	53.5	0
+85	53.5	0
+86	53.5	0
+87	53.5	0
+88	53.5	0
+89	53.5	0
+90	53.5	0
+91	53.5	0
+92	53.5	0
+93	53.5	0
+94	53.5	0
+95	53.5	0
+96	53.5	0
+97	53.5	0
+98	53.5	0
+99	53.5	0
+100	53.5	0
+101	53.5	0
+102	53.5	0
+103	53.5	0
+104	53.5	0
+105	53.5	0
+106	53.5	0
+107	53.5	0
+108	53.5	0
+109	53.5	0
+110	53.5	0
+111	53.5	0
+112	53.5	0
+113	53.5	0
+114	53.5	0
+115	53.5	0
+116	53.5	0
+117	53.5	0
+118	53.5	0
+119	53.5	0
+120	53.5	0
+121	53.5	0
+122	53.5	0
+123	53.5	0
+124	53.5	0
+125	53.5	0
+126	53.5	0
+127	53.5	0
+128	53.5	0
+129	53.5	0
+130	53.5	0
+131	53.5	0
+132	53.5	0
+133	53.5	0
+134	53.5	0
+135	53.5	0
+136	53.5	0
+137	53.5	0
+138	53.5	0
+139	53.5	0
+140	53.5	0
+141	53.5	0
+142	53.5	0
+143	53.5	0
+144	53.5	0
+145	53.5	0
+146	53.5	0
+147	53.5	0
+148	53.5	0
+149	53.5	0
+150	53.5	0
+151	53.5	0
+152	53.5	0
+153	53.5	0
+154	53.5	0
+155	53.5	0
+156	53.5	0
+157	53.5	0
+158	53.5	0
+159	53.5	0
+160	53.5	0
+161	53.5	0
+162	53.5	0
+163	53.5	0
+164	53.5	0
+165	53.5	0
+166	53.5	0
+167	53.5	0
+168	53.5	0
+169	53.5	0
+170	53.5	0
+171	53.5	0
+172	53.5	0
+173	53.5	0
+174	53.5	0
+175	53.5	0
+176	53.5	0
+177	53.5	0
+178	53.5	0
+179	53.5	0
+180	53.5	0
+181	53.5	0
+182	53.5	0
+183	53.5	0
+184	53.5	0
+185	53.5	0
+186	53.5	0
+187	53.5	0
+188	53.5	0
+189	53.5	0
+190	53.5	0
+191	53.5	0
+192	53.5	0
+193	53.5	0
+194	53.5	0
+195	53.5	0
+196	53.5	0
+197	53.5	0
+198	53.5	0
+199	53.5	0
+200	53.5	0
+201	53.5	0
+202	53.5	0
+203	53.5	0
+204	53.5	0
+205	53.5	0
+206	53.5	0
+207	53.5	0
+208	53.5	0
+209	53.5	0
+210	53.5	0
+211	53.5	0
+212	53.5	0
+213	53.5	0
+214	53.5	0
+215	53.5	0
+216	53.5	0
+217	53.5	0
+218	53.5	0
+219	53.5	0
+220	53.5	0
+221	53.5	0
+222	53.5	0
+223	53.5	0
+224	53.5	0
+225	53.5	0
+226	53.5	0
+227	53.5	0
+228	53.5	0
+229	53.5	0
+230	53.5	0
+231	53.5	0
+232	53.5	0
+233	53.5	0
+234	53.5	0
+235	53.5	0
+236	53.5	0
+237	53.5	0
+238	53.5	0
+239	53.5	0
+240	53.5	0
+241	53.5	0
+242	53.5	0
+243	53.5	0
+244	53.5	0
+245	53.5	0
+246	53.5	0
+247	53.5	0
+248	53.5	0
+249	53.5	0
+250	53.5	0
+251	53.5	0
+252	53.5	0
+253	53.5	0
+254	53.5	0
+255	53.5	0
+256	53.5	0
+257	53.5	0
+258	53.5	0
+259	53.5	0
+260	53.5	0
+261	53.5	0
+262	53.5	0
+263	53.5	0
+264	53.5	0
+265	53.5	0
+266	53.5	0
+267	53.5	0
+268	53.5	0
+269	53.5	0
+270	53.5	0
+271	53.5	0
+272	53.5	0
+273	53.5	0
+274	53.5	0
+275	53.5	0
+276	53.5	0
+277	53.5	0
+278	53.5	0
+279	53.5	0
+280	53.5	0
+281	53.5	0
+282	53.5	0
+283	53.5	0
+284	53.5	0
+285	53.5	0
+286	53.5	0
+287	53.5	0
+288	53.5	0
+289	53.5	0
+290	53.5	0
+291	53.5	0
+292	53.5	0
+293	53.5	0
+294	53.5	0
+295	53.5	0
+296	53.5	0
+297	53.5	0
+298	53.5	0
+299	53.5	0
+300	53.5	0
+301	53.5	0
+302	53.5	0
+303	53.5	0
+304	53.5	0
+305	53.5	0
+306	53.5	0
+307	53.5	0
+308	53.5	0
+309	53.5	0
+310	53.5	0
+311	53.5	0
+312	53.5	0
+313	53.5	0
+314	53.5	0
+315	53.5	0
+316	53.5	0
+317	53.5	0
+318	53.5	0
+319	53.5	0
+320	53.5	0
+321	53.5	0
+322	53.5	0
+323	53.5	0
+324	53.5	0
+325	53.5	0
+326	53.5	0
+327	53.5	0
+328	53.5	0
+329	53.5	0
+330	53.5	0
+331	53.5	0
+332	53.5	0
+333	53.5	0
+334	53.5	0
+335	53.5	0
+336	53.5	0
+337	53.5	0
+338	53.5	0
+339	53.5	0
+340	53.5	0
+341	53.5	0
+342	53.5	0
+343	53.5	0
+344	53.5	0
+345	53.5	0
+346	53.5	0
+347	53.5	0
+348	53.5	0
+349	53.5	0
+350	53.5	0
+351	53.5	0
+352	53.5	0
+353	53.5	0
+354	53.5	0
+355	53.5	0
+356	53.5	0
+357	53.5	0
+358	53.5	0
+359	53.5	0
+360	53.5	0
+0	54	0
+1	54	0
+2	54	0
+3	54	0
+4	54	0
+5	54	0
+6	54	0
+7	54	0
+8	54	0
+9	54	0
+10	54	0
+11	54	0
+12	54	0
+13	54	0
+14	54	0
+15	54	0
+16	54	0
+17	54	0
+18	54	0
+19	54	0
+20	54	0
+21	54	0
+22	54	0
+23	54	0
+24	54	0
+25	54	0
+26	54	0
+27	54	0
+28	54	0
+29	54	0
+30	54	0
+31	54	0
+32	54	0
+33	54	0
+34	54	0
+35	54	0
+36	54	0
+37	54	0
+38	54	0
+39	54	0
+40	54	0
+41	54	0
+42	54	0
+43	54	0
+44	54	0
+45	54	0
+46	54	0
+47	54	0
+48	54	0
+49	54	0
+50	54	0
+51	54	0
+52	54	0
+53	54	0
+54	54	0
+55	54	0
+56	54	0
+57	54	0
+58	54	0
+59	54	0
+60	54	0
+61	54	0
+62	54	0
+63	54	0
+64	54	0
+65	54	0
+66	54	0
+67	54	0
+68	54	0
+69	54	0
+70	54	0
+71	54	0
+72	54	0
+73	54	0
+74	54	0
+75	54	0
+76	54	0
+77	54	0
+78	54	0
+79	54	0
+80	54	0
+81	54	0
+82	54	0
+83	54	0
+84	54	0
+85	54	0
+86	54	0
+87	54	0
+88	54	0
+89	54	0
+90	54	0
+91	54	0
+92	54	0
+93	54	0
+94	54	0
+95	54	0
+96	54	0
+97	54	0
+98	54	0
+99	54	0
+100	54	0
+101	54	0
+102	54	0
+103	54	0
+104	54	0
+105	54	0
+106	54	0
+107	54	0
+108	54	0
+109	54	0
+110	54	0
+111	54	0
+112	54	0
+113	54	0
+114	54	0
+115	54	0
+116	54	0
+117	54	0
+118	54	0
+119	54	0
+120	54	0
+121	54	0
+122	54	0
+123	54	0
+124	54	0
+125	54	0
+126	54	0
+127	54	0
+128	54	0
+129	54	0
+130	54	0
+131	54	0
+132	54	0
+133	54	0
+134	54	0
+135	54	0
+136	54	0
+137	54	0
+138	54	0
+139	54	0
+140	54	0
+141	54	0
+142	54	0
+143	54	0
+144	54	0
+145	54	0
+146	54	0
+147	54	0
+148	54	0
+149	54	0
+150	54	0
+151	54	0
+152	54	0
+153	54	0
+154	54	0
+155	54	0
+156	54	0
+157	54	0
+158	54	0
+159	54	0
+160	54	0
+161	54	0
+162	54	0
+163	54	0
+164	54	0
+165	54	0
+166	54	0
+167	54	0
+168	54	0
+169	54	0
+170	54	0
+171	54	0
+172	54	0
+173	54	0
+174	54	0
+175	54	0
+176	54	0
+177	54	0
+178	54	0
+179	54	0
+180	54	0
+181	54	0
+182	54	0
+183	54	0
+184	54	0
+185	54	0
+186	54	0
+187	54	0
+188	54	0
+189	54	0
+190	54	0
+191	54	0
+192	54	0
+193	54	0
+194	54	0
+195	54	0
+196	54	0
+197	54	0
+198	54	0
+199	54	0
+200	54	0
+201	54	0
+202	54	0
+203	54	0
+204	54	0
+205	54	0
+206	54	0
+207	54	0
+208	54	0
+209	54	0
+210	54	0
+211	54	0
+212	54	0
+213	54	0
+214	54	0
+215	54	0
+216	54	0
+217	54	0
+218	54	0
+219	54	0
+220	54	0
+221	54	0
+222	54	0
+223	54	0
+224	54	0
+225	54	0
+226	54	0
+227	54	0
+228	54	0
+229	54	0
+230	54	0
+231	54	0
+232	54	0
+233	54	0
+234	54	0
+235	54	0
+236	54	0
+237	54	0
+238	54	0
+239	54	0
+240	54	0
+241	54	0
+242	54	0
+243	54	0
+244	54	0
+245	54	0
+246	54	0
+247	54	0
+248	54	0
+249	54	0
+250	54	0
+251	54	0
+252	54	0
+253	54	0
+254	54	0
+255	54	0
+256	54	0
+257	54	0
+258	54	0
+259	54	0
+260	54	0
+261	54	0
+262	54	0
+263	54	0
+264	54	0
+265	54	0
+266	54	0
+267	54	0
+268	54	0
+269	54	0
+270	54	0
+271	54	0
+272	54	0
+273	54	0
+274	54	0
+275	54	0
+276	54	0
+277	54	0
+278	54	0
+279	54	0
+280	54	0
+281	54	0
+282	54	0
+283	54	0
+284	54	0
+285	54	0
+286	54	0
+287	54	0
+288	54	0
+289	54	0
+290	54	0
+291	54	0
+292	54	0
+293	54	0
+294	54	0
+295	54	0
+296	54	0
+297	54	0
+298	54	0
+299	54	0
+300	54	0
+301	54	0
+302	54	0
+303	54	0
+304	54	0
+305	54	0
+306	54	0
+307	54	0
+308	54	0
+309	54	0
+310	54	0
+311	54	0
+312	54	0
+313	54	0
+314	54	0
+315	54	0
+316	54	0
+317	54	0
+318	54	0
+319	54	0
+320	54	0
+321	54	0
+322	54	0
+323	54	0
+324	54	0
+325	54	0
+326	54	0
+327	54	0
+328	54	0
+329	54	0
+330	54	0
+331	54	0
+332	54	0
+333	54	0
+334	54	0
+335	54	0
+336	54	0
+337	54	0
+338	54	0
+339	54	0
+340	54	0
+341	54	0
+342	54	0
+343	54	0
+344	54	0
+345	54	0
+346	54	0
+347	54	0
+348	54	0
+349	54	0
+350	54	0
+351	54	0
+352	54	0
+353	54	0
+354	54	0
+355	54	0
+356	54	0
+357	54	0
+358	54	0
+359	54	0
+360	54	0
+0	54.5	0
+1	54.5	0
+2	54.5	0
+3	54.5	0
+4	54.5	0
+5	54.5	0
+6	54.5	0
+7	54.5	0
+8	54.5	0
+9	54.5	0
+10	54.5	0
+11	54.5	0
+12	54.5	0
+13	54.5	0
+14	54.5	0
+15	54.5	0
+16	54.5	0
+17	54.5	0
+18	54.5	0
+19	54.5	0
+20	54.5	0
+21	54.5	0
+22	54.5	0
+23	54.5	0
+24	54.5	0
+25	54.5	0
+26	54.5	0
+27	54.5	0
+28	54.5	0
+29	54.5	0
+30	54.5	0
+31	54.5	0
+32	54.5	0
+33	54.5	0
+34	54.5	0
+35	54.5	0
+36	54.5	0
+37	54.5	0
+38	54.5	0
+39	54.5	0
+40	54.5	0
+41	54.5	0
+42	54.5	0
+43	54.5	0
+44	54.5	0
+45	54.5	0
+46	54.5	0
+47	54.5	0
+48	54.5	0
+49	54.5	0
+50	54.5	0
+51	54.5	0
+52	54.5	0
+53	54.5	0
+54	54.5	0
+55	54.5	0
+56	54.5	0
+57	54.5	0
+58	54.5	0
+59	54.5	0
+60	54.5	0
+61	54.5	0
+62	54.5	0
+63	54.5	0
+64	54.5	0
+65	54.5	0
+66	54.5	0
+67	54.5	0
+68	54.5	0
+69	54.5	0
+70	54.5	0
+71	54.5	0
+72	54.5	0
+73	54.5	0
+74	54.5	0
+75	54.5	0
+76	54.5	0
+77	54.5	0
+78	54.5	0
+79	54.5	0
+80	54.5	0
+81	54.5	0
+82	54.5	0
+83	54.5	0
+84	54.5	0
+85	54.5	0
+86	54.5	0
+87	54.5	0
+88	54.5	0
+89	54.5	0
+90	54.5	0
+91	54.5	0
+92	54.5	0
+93	54.5	0
+94	54.5	0
+95	54.5	0
+96	54.5	0
+97	54.5	0
+98	54.5	0
+99	54.5	0
+100	54.5	0
+101	54.5	0
+102	54.5	0
+103	54.5	0
+104	54.5	0
+105	54.5	0
+106	54.5	0
+107	54.5	0
+108	54.5	0
+109	54.5	0
+110	54.5	0
+111	54.5	0
+112	54.5	0
+113	54.5	0
+114	54.5	0
+115	54.5	0
+116	54.5	0
+117	54.5	0
+118	54.5	0
+119	54.5	0
+120	54.5	0
+121	54.5	0
+122	54.5	0
+123	54.5	0
+124	54.5	0
+125	54.5	0
+126	54.5	0
+127	54.5	0
+128	54.5	0
+129	54.5	0
+130	54.5	0
+131	54.5	0
+132	54.5	0
+133	54.5	0
+134	54.5	0
+135	54.5	0
+136	54.5	0
+137	54.5	0
+138	54.5	0
+139	54.5	0
+140	54.5	0
+141	54.5	0
+142	54.5	0
+143	54.5	0
+144	54.5	0
+145	54.5	0
+146	54.5	0
+147	54.5	0
+148	54.5	0
+149	54.5	0
+150	54.5	0
+151	54.5	0
+152	54.5	0
+153	54.5	0
+154	54.5	0
+155	54.5	0
+156	54.5	0
+157	54.5	0
+158	54.5	0
+159	54.5	0
+160	54.5	0
+161	54.5	0
+162	54.5	0
+163	54.5	0
+164	54.5	0
+165	54.5	0
+166	54.5	0
+167	54.5	0
+168	54.5	0
+169	54.5	0
+170	54.5	0
+171	54.5	0
+172	54.5	0
+173	54.5	0
+174	54.5	0
+175	54.5	0
+176	54.5	0
+177	54.5	0
+178	54.5	0
+179	54.5	0
+180	54.5	0
+181	54.5	0
+182	54.5	0
+183	54.5	0
+184	54.5	0
+185	54.5	0
+186	54.5	0
+187	54.5	0
+188	54.5	0
+189	54.5	0
+190	54.5	0
+191	54.5	0
+192	54.5	0
+193	54.5	0
+194	54.5	0
+195	54.5	0
+196	54.5	0
+197	54.5	0
+198	54.5	0
+199	54.5	0
+200	54.5	0
+201	54.5	0
+202	54.5	0
+203	54.5	0
+204	54.5	0
+205	54.5	0
+206	54.5	0
+207	54.5	0
+208	54.5	0
+209	54.5	0
+210	54.5	0
+211	54.5	0
+212	54.5	0
+213	54.5	0
+214	54.5	0
+215	54.5	0
+216	54.5	0
+217	54.5	0
+218	54.5	0
+219	54.5	0
+220	54.5	0
+221	54.5	0
+222	54.5	0
+223	54.5	0
+224	54.5	0
+225	54.5	0
+226	54.5	0
+227	54.5	0
+228	54.5	0
+229	54.5	0
+230	54.5	0
+231	54.5	0
+232	54.5	0
+233	54.5	0
+234	54.5	0
+235	54.5	0
+236	54.5	0
+237	54.5	0
+238	54.5	0
+239	54.5	0
+240	54.5	0
+241	54.5	0
+242	54.5	0
+243	54.5	0
+244	54.5	0
+245	54.5	0
+246	54.5	0
+247	54.5	0
+248	54.5	0
+249	54.5	0
+250	54.5	0
+251	54.5	0
+252	54.5	0
+253	54.5	0
+254	54.5	0
+255	54.5	0
+256	54.5	0
+257	54.5	0
+258	54.5	0
+259	54.5	0
+260	54.5	0
+261	54.5	0
+262	54.5	0
+263	54.5	0
+264	54.5	0
+265	54.5	0
+266	54.5	0
+267	54.5	0
+268	54.5	0
+269	54.5	0
+270	54.5	0
+271	54.5	0
+272	54.5	0
+273	54.5	0
+274	54.5	0
+275	54.5	0
+276	54.5	0
+277	54.5	0
+278	54.5	0
+279	54.5	0
+280	54.5	0
+281	54.5	0
+282	54.5	0
+283	54.5	0
+284	54.5	0
+285	54.5	0
+286	54.5	0
+287	54.5	0
+288	54.5	0
+289	54.5	0
+290	54.5	0
+291	54.5	0
+292	54.5	0
+293	54.5	0
+294	54.5	0
+295	54.5	0
+296	54.5	0
+297	54.5	0
+298	54.5	0
+299	54.5	0
+300	54.5	0
+301	54.5	0
+302	54.5	0
+303	54.5	0
+304	54.5	0
+305	54.5	0
+306	54.5	0
+307	54.5	0
+308	54.5	0
+309	54.5	0
+310	54.5	0
+311	54.5	0
+312	54.5	0
+313	54.5	0
+314	54.5	0
+315	54.5	0
+316	54.5	0
+317	54.5	0
+318	54.5	0
+319	54.5	0
+320	54.5	0
+321	54.5	0
+322	54.5	0
+323	54.5	0
+324	54.5	0
+325	54.5	0
+326	54.5	0
+327	54.5	0
+328	54.5	0
+329	54.5	0
+330	54.5	0
+331	54.5	0
+332	54.5	0
+333	54.5	0
+334	54.5	0
+335	54.5	0
+336	54.5	0
+337	54.5	0
+338	54.5	0
+339	54.5	0
+340	54.5	0
+341	54.5	0
+342	54.5	0
+343	54.5	0
+344	54.5	0
+345	54.5	0
+346	54.5	0
+347	54.5	0
+348	54.5	0
+349	54.5	0
+350	54.5	0
+351	54.5	0
+352	54.5	0
+353	54.5	0
+354	54.5	0
+355	54.5	0
+356	54.5	0
+357	54.5	0
+358	54.5	0
+359	54.5	0
+360	54.5	0
+0	55	0
+1	55	0
+2	55	0
+3	55	0
+4	55	0
+5	55	0
+6	55	0
+7	55	0
+8	55	0
+9	55	0
+10	55	0
+11	55	0
+12	55	0
+13	55	0
+14	55	0
+15	55	0
+16	55	0
+17	55	0
+18	55	0
+19	55	0
+20	55	0
+21	55	0
+22	55	0
+23	55	0
+24	55	0
+25	55	0
+26	55	0
+27	55	0
+28	55	0
+29	55	0
+30	55	0
+31	55	0
+32	55	0
+33	55	0
+34	55	0
+35	55	0
+36	55	0
+37	55	0
+38	55	0
+39	55	0
+40	55	0
+41	55	0
+42	55	0
+43	55	0
+44	55	0
+45	55	0
+46	55	0
+47	55	0
+48	55	0
+49	55	0
+50	55	0
+51	55	0
+52	55	0
+53	55	0
+54	55	0
+55	55	0
+56	55	0
+57	55	0
+58	55	0
+59	55	0
+60	55	0
+61	55	0
+62	55	0
+63	55	0
+64	55	0
+65	55	0
+66	55	0
+67	55	0
+68	55	0
+69	55	0
+70	55	0
+71	55	0
+72	55	0
+73	55	0
+74	55	0
+75	55	0
+76	55	0
+77	55	0
+78	55	0
+79	55	0
+80	55	0
+81	55	0
+82	55	0
+83	55	0
+84	55	0
+85	55	0
+86	55	0
+87	55	0
+88	55	0
+89	55	0
+90	55	0
+91	55	0
+92	55	0
+93	55	0
+94	55	0
+95	55	0
+96	55	0
+97	55	0
+98	55	0
+99	55	0
+100	55	0
+101	55	0
+102	55	0
+103	55	0
+104	55	0
+105	55	0
+106	55	0
+107	55	0
+108	55	0
+109	55	0
+110	55	0
+111	55	0
+112	55	0
+113	55	0
+114	55	0
+115	55	0
+116	55	0
+117	55	0
+118	55	0
+119	55	0
+120	55	0
+121	55	0
+122	55	0
+123	55	0
+124	55	0
+125	55	0
+126	55	0
+127	55	0
+128	55	0
+129	55	0
+130	55	0
+131	55	0
+132	55	0
+133	55	0
+134	55	0
+135	55	0
+136	55	0
+137	55	0
+138	55	0
+139	55	0
+140	55	0
+141	55	0
+142	55	0
+143	55	0
+144	55	0
+145	55	0
+146	55	0
+147	55	0
+148	55	0
+149	55	0
+150	55	0
+151	55	0
+152	55	0
+153	55	0
+154	55	0
+155	55	0
+156	55	0
+157	55	0
+158	55	0
+159	55	0
+160	55	0
+161	55	0
+162	55	0
+163	55	0
+164	55	0
+165	55	0
+166	55	0
+167	55	0
+168	55	0
+169	55	0
+170	55	0
+171	55	0
+172	55	0
+173	55	0
+174	55	0
+175	55	0
+176	55	0
+177	55	0
+178	55	0
+179	55	0
+180	55	0
+181	55	0
+182	55	0
+183	55	0
+184	55	0
+185	55	0
+186	55	0
+187	55	0
+188	55	0
+189	55	0
+190	55	0
+191	55	0
+192	55	0
+193	55	0
+194	55	0
+195	55	0
+196	55	0
+197	55	0
+198	55	0
+199	55	0
+200	55	0
+201	55	0
+202	55	0
+203	55	0
+204	55	0
+205	55	0
+206	55	0
+207	55	0
+208	55	0
+209	55	0
+210	55	0
+211	55	0
+212	55	0
+213	55	0
+214	55	0
+215	55	0
+216	55	0
+217	55	0
+218	55	0
+219	55	0
+220	55	0
+221	55	0
+222	55	0
+223	55	0
+224	55	0
+225	55	0
+226	55	0
+227	55	0
+228	55	0
+229	55	0
+230	55	0
+231	55	0
+232	55	0
+233	55	0
+234	55	0
+235	55	0
+236	55	0
+237	55	0
+238	55	0
+239	55	0
+240	55	0
+241	55	0
+242	55	0
+243	55	0
+244	55	0
+245	55	0
+246	55	0
+247	55	0
+248	55	0
+249	55	0
+250	55	0
+251	55	0
+252	55	0
+253	55	0
+254	55	0
+255	55	0
+256	55	0
+257	55	0
+258	55	0
+259	55	0
+260	55	0
+261	55	0
+262	55	0
+263	55	0
+264	55	0
+265	55	0
+266	55	0
+267	55	0
+268	55	0
+269	55	0
+270	55	0
+271	55	0
+272	55	0
+273	55	0
+274	55	0
+275	55	0
+276	55	0
+277	55	0
+278	55	0
+279	55	0
+280	55	0
+281	55	0
+282	55	0
+283	55	0
+284	55	0
+285	55	0
+286	55	0
+287	55	0
+288	55	0
+289	55	0
+290	55	0
+291	55	0
+292	55	0
+293	55	0
+294	55	0
+295	55	0
+296	55	0
+297	55	0
+298	55	0
+299	55	0
+300	55	0
+301	55	0
+302	55	0
+303	55	0
+304	55	0
+305	55	0
+306	55	0
+307	55	0
+308	55	0
+309	55	0
+310	55	0
+311	55	0
+312	55	0
+313	55	0
+314	55	0
+315	55	0
+316	55	0
+317	55	0
+318	55	0
+319	55	0
+320	55	0
+321	55	0
+322	55	0
+323	55	0
+324	55	0
+325	55	0
+326	55	0
+327	55	0
+328	55	0
+329	55	0
+330	55	0
+331	55	0
+332	55	0
+333	55	0
+334	55	0
+335	55	0
+336	55	0
+337	55	0
+338	55	0
+339	55	0
+340	55	0
+341	55	0
+342	55	0
+343	55	0
+344	55	0
+345	55	0
+346	55	0
+347	55	0
+348	55	0
+349	55	0
+350	55	0
+351	55	0
+352	55	0
+353	55	0
+354	55	0
+355	55	0
+356	55	0
+357	55	0
+358	55	0
+359	55	0
+360	55	0
+0	55.5	0
+1	55.5	0
+2	55.5	0
+3	55.5	0
+4	55.5	0
+5	55.5	0
+6	55.5	0
+7	55.5	0
+8	55.5	0
+9	55.5	0
+10	55.5	0
+11	55.5	0
+12	55.5	0
+13	55.5	0
+14	55.5	0
+15	55.5	0
+16	55.5	0
+17	55.5	0
+18	55.5	0
+19	55.5	0
+20	55.5	0
+21	55.5	0
+22	55.5	0
+23	55.5	0
+24	55.5	0
+25	55.5	0
+26	55.5	0
+27	55.5	0
+28	55.5	0
+29	55.5	0
+30	55.5	0
+31	55.5	0
+32	55.5	0
+33	55.5	0
+34	55.5	0
+35	55.5	0
+36	55.5	0
+37	55.5	0
+38	55.5	0
+39	55.5	0
+40	55.5	0
+41	55.5	0
+42	55.5	0
+43	55.5	0
+44	55.5	0
+45	55.5	0
+46	55.5	0
+47	55.5	0
+48	55.5	0
+49	55.5	0
+50	55.5	0
+51	55.5	0
+52	55.5	0
+53	55.5	0
+54	55.5	0
+55	55.5	0
+56	55.5	0
+57	55.5	0
+58	55.5	0
+59	55.5	0
+60	55.5	0
+61	55.5	0
+62	55.5	0
+63	55.5	0
+64	55.5	0
+65	55.5	0
+66	55.5	0
+67	55.5	0
+68	55.5	0
+69	55.5	0
+70	55.5	0
+71	55.5	0
+72	55.5	0
+73	55.5	0
+74	55.5	0
+75	55.5	0
+76	55.5	0
+77	55.5	0
+78	55.5	0
+79	55.5	0
+80	55.5	0
+81	55.5	0
+82	55.5	0
+83	55.5	0
+84	55.5	0
+85	55.5	0
+86	55.5	0
+87	55.5	0
+88	55.5	0
+89	55.5	0
+90	55.5	0
+91	55.5	0
+92	55.5	0
+93	55.5	0
+94	55.5	0
+95	55.5	0
+96	55.5	0
+97	55.5	0
+98	55.5	0
+99	55.5	0
+100	55.5	0
+101	55.5	0
+102	55.5	0
+103	55.5	0
+104	55.5	0
+105	55.5	0
+106	55.5	0
+107	55.5	0
+108	55.5	0
+109	55.5	0
+110	55.5	0
+111	55.5	0
+112	55.5	0
+113	55.5	0
+114	55.5	0
+115	55.5	0
+116	55.5	0
+117	55.5	0
+118	55.5	0
+119	55.5	0
+120	55.5	0
+121	55.5	0
+122	55.5	0
+123	55.5	0
+124	55.5	0
+125	55.5	0
+126	55.5	0
+127	55.5	0
+128	55.5	0
+129	55.5	0
+130	55.5	0
+131	55.5	0
+132	55.5	0
+133	55.5	0
+134	55.5	0
+135	55.5	0
+136	55.5	0
+137	55.5	0
+138	55.5	0
+139	55.5	0
+140	55.5	0
+141	55.5	0
+142	55.5	0
+143	55.5	0
+144	55.5	0
+145	55.5	0
+146	55.5	0
+147	55.5	0
+148	55.5	0
+149	55.5	0
+150	55.5	0
+151	55.5	0
+152	55.5	0
+153	55.5	0
+154	55.5	0
+155	55.5	0
+156	55.5	0
+157	55.5	0
+158	55.5	0
+159	55.5	0
+160	55.5	0
+161	55.5	0
+162	55.5	0
+163	55.5	0
+164	55.5	0
+165	55.5	0
+166	55.5	0
+167	55.5	0
+168	55.5	0
+169	55.5	0
+170	55.5	0
+171	55.5	0
+172	55.5	0
+173	55.5	0
+174	55.5	0
+175	55.5	0
+176	55.5	0
+177	55.5	0
+178	55.5	0
+179	55.5	0
+180	55.5	0
+181	55.5	0
+182	55.5	0
+183	55.5	0
+184	55.5	0
+185	55.5	0
+186	55.5	0
+187	55.5	0
+188	55.5	0
+189	55.5	0
+190	55.5	0
+191	55.5	0
+192	55.5	0
+193	55.5	0
+194	55.5	0
+195	55.5	0
+196	55.5	0
+197	55.5	0
+198	55.5	0
+199	55.5	0
+200	55.5	0
+201	55.5	0
+202	55.5	0
+203	55.5	0
+204	55.5	0
+205	55.5	0
+206	55.5	0
+207	55.5	0
+208	55.5	0
+209	55.5	0
+210	55.5	0
+211	55.5	0
+212	55.5	0
+213	55.5	0
+214	55.5	0
+215	55.5	0
+216	55.5	0
+217	55.5	0
+218	55.5	0
+219	55.5	0
+220	55.5	0
+221	55.5	0
+222	55.5	0
+223	55.5	0
+224	55.5	0
+225	55.5	0
+226	55.5	0
+227	55.5	0
+228	55.5	0
+229	55.5	0
+230	55.5	0
+231	55.5	0
+232	55.5	0
+233	55.5	0
+234	55.5	0
+235	55.5	0
+236	55.5	0
+237	55.5	0
+238	55.5	0
+239	55.5	0
+240	55.5	0
+241	55.5	0
+242	55.5	0
+243	55.5	0
+244	55.5	0
+245	55.5	0
+246	55.5	0
+247	55.5	0
+248	55.5	0
+249	55.5	0
+250	55.5	0
+251	55.5	0
+252	55.5	0
+253	55.5	0
+254	55.5	0
+255	55.5	0
+256	55.5	0
+257	55.5	0
+258	55.5	0
+259	55.5	0
+260	55.5	0
+261	55.5	0
+262	55.5	0
+263	55.5	0
+264	55.5	0
+265	55.5	0
+266	55.5	0
+267	55.5	0
+268	55.5	0
+269	55.5	0
+270	55.5	0
+271	55.5	0
+272	55.5	0
+273	55.5	0
+274	55.5	0
+275	55.5	0
+276	55.5	0
+277	55.5	0
+278	55.5	0
+279	55.5	0
+280	55.5	0
+281	55.5	0
+282	55.5	0
+283	55.5	0
+284	55.5	0
+285	55.5	0
+286	55.5	0
+287	55.5	0
+288	55.5	0
+289	55.5	0
+290	55.5	0
+291	55.5	0
+292	55.5	0
+293	55.5	0
+294	55.5	0
+295	55.5	0
+296	55.5	0
+297	55.5	0
+298	55.5	0
+299	55.5	0
+300	55.5	0
+301	55.5	0
+302	55.5	0
+303	55.5	0
+304	55.5	0
+305	55.5	0
+306	55.5	0
+307	55.5	0
+308	55.5	0
+309	55.5	0
+310	55.5	0
+311	55.5	0
+312	55.5	0
+313	55.5	0
+314	55.5	0
+315	55.5	0
+316	55.5	0
+317	55.5	0
+318	55.5	0
+319	55.5	0
+320	55.5	0
+321	55.5	0
+322	55.5	0
+323	55.5	0
+324	55.5	0
+325	55.5	0
+326	55.5	0
+327	55.5	0
+328	55.5	0
+329	55.5	0
+330	55.5	0
+331	55.5	0
+332	55.5	0
+333	55.5	0
+334	55.5	0
+335	55.5	0
+336	55.5	0
+337	55.5	0
+338	55.5	0
+339	55.5	0
+340	55.5	0
+341	55.5	0
+342	55.5	0
+343	55.5	0
+344	55.5	0
+345	55.5	0
+346	55.5	0
+347	55.5	0
+348	55.5	0
+349	55.5	0
+350	55.5	0
+351	55.5	0
+352	55.5	0
+353	55.5	0
+354	55.5	0
+355	55.5	0
+356	55.5	0
+357	55.5	0
+358	55.5	0
+359	55.5	0
+360	55.5	0
+0	56	0
+1	56	0
+2	56	0
+3	56	0
+4	56	0
+5	56	0
+6	56	0
+7	56	0
+8	56	0
+9	56	0
+10	56	0
+11	56	0
+12	56	0
+13	56	0
+14	56	0
+15	56	0
+16	56	0
+17	56	0
+18	56	0
+19	56	0
+20	56	0
+21	56	0
+22	56	0
+23	56	0
+24	56	0
+25	56	0
+26	56	0
+27	56	0
+28	56	0
+29	56	0
+30	56	0
+31	56	0
+32	56	0
+33	56	0
+34	56	0
+35	56	0
+36	56	0
+37	56	0
+38	56	0
+39	56	0
+40	56	0
+41	56	0
+42	56	0
+43	56	0
+44	56	0
+45	56	0
+46	56	0
+47	56	0
+48	56	0
+49	56	0
+50	56	0
+51	56	0
+52	56	0
+53	56	0
+54	56	0
+55	56	0
+56	56	0
+57	56	0
+58	56	0
+59	56	0
+60	56	0
+61	56	0
+62	56	0
+63	56	0
+64	56	0
+65	56	0
+66	56	0
+67	56	0
+68	56	0
+69	56	0
+70	56	0
+71	56	0
+72	56	0
+73	56	0
+74	56	0
+75	56	0
+76	56	0
+77	56	0
+78	56	0
+79	56	0
+80	56	0
+81	56	0
+82	56	0
+83	56	0
+84	56	0
+85	56	0
+86	56	0
+87	56	0
+88	56	0
+89	56	0
+90	56	0
+91	56	0
+92	56	0
+93	56	0
+94	56	0
+95	56	0
+96	56	0
+97	56	0
+98	56	0
+99	56	0
+100	56	0
+101	56	0
+102	56	0
+103	56	0
+104	56	0
+105	56	0
+106	56	0
+107	56	0
+108	56	0
+109	56	0
+110	56	0
+111	56	0
+112	56	0
+113	56	0
+114	56	0
+115	56	0
+116	56	0
+117	56	0
+118	56	0
+119	56	0
+120	56	0
+121	56	0
+122	56	0
+123	56	0
+124	56	0
+125	56	0
+126	56	0
+127	56	0
+128	56	0
+129	56	0
+130	56	0
+131	56	0
+132	56	0
+133	56	0
+134	56	0
+135	56	0
+136	56	0
+137	56	0
+138	56	0
+139	56	0
+140	56	0
+141	56	0
+142	56	0
+143	56	0
+144	56	0
+145	56	0
+146	56	0
+147	56	0
+148	56	0
+149	56	0
+150	56	0
+151	56	0
+152	56	0
+153	56	0
+154	56	0
+155	56	0
+156	56	0
+157	56	0
+158	56	0
+159	56	0
+160	56	0
+161	56	0
+162	56	0
+163	56	0
+164	56	0
+165	56	0
+166	56	0
+167	56	0
+168	56	0
+169	56	0
+170	56	0
+171	56	0
+172	56	0
+173	56	0
+174	56	0
+175	56	0
+176	56	0
+177	56	0
+178	56	0
+179	56	0
+180	56	0
+181	56	0
+182	56	0
+183	56	0
+184	56	0
+185	56	0
+186	56	0
+187	56	0
+188	56	0
+189	56	0
+190	56	0
+191	56	0
+192	56	0
+193	56	0
+194	56	0
+195	56	0
+196	56	0
+197	56	0
+198	56	0
+199	56	0
+200	56	0
+201	56	0
+202	56	0
+203	56	0
+204	56	0
+205	56	0
+206	56	0
+207	56	0
+208	56	0
+209	56	0
+210	56	0
+211	56	0
+212	56	0
+213	56	0
+214	56	0
+215	56	0
+216	56	0
+217	56	0
+218	56	0
+219	56	0
+220	56	0
+221	56	0
+222	56	0
+223	56	0
+224	56	0
+225	56	0
+226	56	0
+227	56	0
+228	56	0
+229	56	0
+230	56	0
+231	56	0
+232	56	0
+233	56	0
+234	56	0
+235	56	0
+236	56	0
+237	56	0
+238	56	0
+239	56	0
+240	56	0
+241	56	0
+242	56	0
+243	56	0
+244	56	0
+245	56	0
+246	56	0
+247	56	0
+248	56	0
+249	56	0
+250	56	0
+251	56	0
+252	56	0
+253	56	0
+254	56	0
+255	56	0
+256	56	0
+257	56	0
+258	56	0
+259	56	0
+260	56	0
+261	56	0
+262	56	0
+263	56	0
+264	56	0
+265	56	0
+266	56	0
+267	56	0
+268	56	0
+269	56	0
+270	56	0
+271	56	0
+272	56	0
+273	56	0
+274	56	0
+275	56	0
+276	56	0
+277	56	0
+278	56	0
+279	56	0
+280	56	0
+281	56	0
+282	56	0
+283	56	0
+284	56	0
+285	56	0
+286	56	0
+287	56	0
+288	56	0
+289	56	0
+290	56	0
+291	56	0
+292	56	0
+293	56	0
+294	56	0
+295	56	0
+296	56	0
+297	56	0
+298	56	0
+299	56	0
+300	56	0
+301	56	0
+302	56	0
+303	56	0
+304	56	0
+305	56	0
+306	56	0
+307	56	0
+308	56	0
+309	56	0
+310	56	0
+311	56	0
+312	56	0
+313	56	0
+314	56	0
+315	56	0
+316	56	0
+317	56	0
+318	56	0
+319	56	0
+320	56	0
+321	56	0
+322	56	0
+323	56	0
+324	56	0
+325	56	0
+326	56	0
+327	56	0
+328	56	0
+329	56	0
+330	56	0
+331	56	0
+332	56	0
+333	56	0
+334	56	0
+335	56	0
+336	56	0
+337	56	0
+338	56	0
+339	56	0
+340	56	0
+341	56	0
+342	56	0
+343	56	0
+344	56	0
+345	56	0
+346	56	0
+347	56	0
+348	56	0
+349	56	0
+350	56	0
+351	56	0
+352	56	0
+353	56	0
+354	56	0
+355	56	0
+356	56	0
+357	56	0
+358	56	0
+359	56	0
+360	56	0
+0	56.5	0
+1	56.5	0
+2	56.5	0
+3	56.5	0
+4	56.5	0
+5	56.5	0
+6	56.5	0
+7	56.5	0
+8	56.5	0
+9	56.5	0
+10	56.5	0
+11	56.5	0
+12	56.5	0
+13	56.5	0
+14	56.5	0
+15	56.5	0
+16	56.5	0
+17	56.5	0
+18	56.5	0
+19	56.5	0
+20	56.5	0
+21	56.5	0
+22	56.5	0
+23	56.5	0
+24	56.5	0
+25	56.5	0
+26	56.5	0
+27	56.5	0
+28	56.5	0
+29	56.5	0
+30	56.5	0
+31	56.5	0
+32	56.5	0
+33	56.5	0
+34	56.5	0
+35	56.5	0
+36	56.5	0
+37	56.5	0
+38	56.5	0
+39	56.5	0
+40	56.5	0
+41	56.5	0
+42	56.5	0
+43	56.5	0
+44	56.5	0
+45	56.5	0
+46	56.5	0
+47	56.5	0
+48	56.5	0
+49	56.5	0
+50	56.5	0
+51	56.5	0
+52	56.5	0
+53	56.5	0
+54	56.5	0
+55	56.5	0
+56	56.5	0
+57	56.5	0
+58	56.5	0
+59	56.5	0
+60	56.5	0
+61	56.5	0
+62	56.5	0
+63	56.5	0
+64	56.5	0
+65	56.5	0
+66	56.5	0
+67	56.5	0
+68	56.5	0
+69	56.5	0
+70	56.5	0
+71	56.5	0
+72	56.5	0
+73	56.5	0
+74	56.5	0
+75	56.5	0
+76	56.5	0
+77	56.5	0
+78	56.5	0
+79	56.5	0
+80	56.5	0
+81	56.5	0
+82	56.5	0
+83	56.5	0
+84	56.5	0
+85	56.5	0
+86	56.5	0
+87	56.5	0
+88	56.5	0
+89	56.5	0
+90	56.5	0
+91	56.5	0
+92	56.5	0
+93	56.5	0
+94	56.5	0
+95	56.5	0
+96	56.5	0
+97	56.5	0
+98	56.5	0
+99	56.5	0
+100	56.5	0
+101	56.5	0
+102	56.5	0
+103	56.5	0
+104	56.5	0
+105	56.5	0
+106	56.5	0
+107	56.5	0
+108	56.5	0
+109	56.5	0
+110	56.5	0
+111	56.5	0
+112	56.5	0
+113	56.5	0
+114	56.5	0
+115	56.5	0
+116	56.5	0
+117	56.5	0
+118	56.5	0
+119	56.5	0
+120	56.5	0
+121	56.5	0
+122	56.5	0
+123	56.5	0
+124	56.5	0
+125	56.5	0
+126	56.5	0
+127	56.5	0
+128	56.5	0
+129	56.5	0
+130	56.5	0
+131	56.5	0
+132	56.5	0
+133	56.5	0
+134	56.5	0
+135	56.5	0
+136	56.5	0
+137	56.5	0
+138	56.5	0
+139	56.5	0
+140	56.5	0
+141	56.5	0
+142	56.5	0
+143	56.5	0
+144	56.5	0
+145	56.5	0
+146	56.5	0
+147	56.5	0
+148	56.5	0
+149	56.5	0
+150	56.5	0
+151	56.5	0
+152	56.5	0
+153	56.5	0
+154	56.5	0
+155	56.5	0
+156	56.5	0
+157	56.5	0
+158	56.5	0
+159	56.5	0
+160	56.5	0
+161	56.5	0
+162	56.5	0
+163	56.5	0
+164	56.5	0
+165	56.5	0
+166	56.5	0
+167	56.5	0
+168	56.5	0
+169	56.5	0
+170	56.5	0
+171	56.5	0
+172	56.5	0
+173	56.5	0
+174	56.5	0
+175	56.5	0
+176	56.5	0
+177	56.5	0
+178	56.5	0
+179	56.5	0
+180	56.5	0
+181	56.5	0
+182	56.5	0
+183	56.5	0
+184	56.5	0
+185	56.5	0
+186	56.5	0
+187	56.5	0
+188	56.5	0
+189	56.5	0
+190	56.5	0
+191	56.5	0
+192	56.5	0
+193	56.5	0
+194	56.5	0
+195	56.5	0
+196	56.5	0
+197	56.5	0
+198	56.5	0
+199	56.5	0
+200	56.5	0
+201	56.5	0
+202	56.5	0
+203	56.5	0
+204	56.5	0
+205	56.5	0
+206	56.5	0
+207	56.5	0
+208	56.5	0
+209	56.5	0
+210	56.5	0
+211	56.5	0
+212	56.5	0
+213	56.5	0
+214	56.5	0
+215	56.5	0
+216	56.5	0
+217	56.5	0
+218	56.5	0
+219	56.5	0
+220	56.5	0
+221	56.5	0
+222	56.5	0
+223	56.5	0
+224	56.5	0
+225	56.5	0
+226	56.5	0
+227	56.5	0
+228	56.5	0
+229	56.5	0
+230	56.5	0
+231	56.5	0
+232	56.5	0
+233	56.5	0
+234	56.5	0
+235	56.5	0
+236	56.5	0
+237	56.5	0
+238	56.5	0
+239	56.5	0
+240	56.5	0
+241	56.5	0
+242	56.5	0
+243	56.5	0
+244	56.5	0
+245	56.5	0
+246	56.5	0
+247	56.5	0
+248	56.5	0
+249	56.5	0
+250	56.5	0
+251	56.5	0
+252	56.5	0
+253	56.5	0
+254	56.5	0
+255	56.5	0
+256	56.5	0
+257	56.5	0
+258	56.5	0
+259	56.5	0
+260	56.5	0
+261	56.5	0
+262	56.5	0
+263	56.5	0
+264	56.5	0
+265	56.5	0
+266	56.5	0
+267	56.5	0
+268	56.5	0
+269	56.5	0
+270	56.5	0
+271	56.5	0
+272	56.5	0
+273	56.5	0
+274	56.5	0
+275	56.5	0
+276	56.5	0
+277	56.5	0
+278	56.5	0
+279	56.5	0
+280	56.5	0
+281	56.5	0
+282	56.5	0
+283	56.5	0
+284	56.5	0
+285	56.5	0
+286	56.5	0
+287	56.5	0
+288	56.5	0
+289	56.5	0
+290	56.5	0
+291	56.5	0
+292	56.5	0
+293	56.5	0
+294	56.5	0
+295	56.5	0
+296	56.5	0
+297	56.5	0
+298	56.5	0
+299	56.5	0
+300	56.5	0
+301	56.5	0
+302	56.5	0
+303	56.5	0
+304	56.5	0
+305	56.5	0
+306	56.5	0
+307	56.5	0
+308	56.5	0
+309	56.5	0
+310	56.5	0
+311	56.5	0
+312	56.5	0
+313	56.5	0
+314	56.5	0
+315	56.5	0
+316	56.5	0
+317	56.5	0
+318	56.5	0
+319	56.5	0
+320	56.5	0
+321	56.5	0
+322	56.5	0
+323	56.5	0
+324	56.5	0
+325	56.5	0
+326	56.5	0
+327	56.5	0
+328	56.5	0
+329	56.5	0
+330	56.5	0
+331	56.5	0
+332	56.5	0
+333	56.5	0
+334	56.5	0
+335	56.5	0
+336	56.5	0
+337	56.5	0
+338	56.5	0
+339	56.5	0
+340	56.5	0
+341	56.5	0
+342	56.5	0
+343	56.5	0
+344	56.5	0
+345	56.5	0
+346	56.5	0
+347	56.5	0
+348	56.5	0
+349	56.5	0
+350	56.5	0
+351	56.5	0
+352	56.5	0
+353	56.5	0
+354	56.5	0
+355	56.5	0
+356	56.5	0
+357	56.5	0
+358	56.5	0
+359	56.5	0
+360	56.5	0
+0	57	0
+1	57	0
+2	57	0
+3	57	0
+4	57	0
+5	57	0
+6	57	0
+7	57	0
+8	57	0
+9	57	0
+10	57	0
+11	57	0
+12	57	0
+13	57	0
+14	57	0
+15	57	0
+16	57	0
+17	57	0
+18	57	0
+19	57	0
+20	57	0
+21	57	0
+22	57	0
+23	57	0
+24	57	0
+25	57	0
+26	57	0
+27	57	0
+28	57	0
+29	57	0
+30	57	0
+31	57	0
+32	57	0
+33	57	0
+34	57	0
+35	57	0
+36	57	0
+37	57	0
+38	57	0
+39	57	0
+40	57	0
+41	57	0
+42	57	0
+43	57	0
+44	57	0
+45	57	0
+46	57	0
+47	57	0
+48	57	0
+49	57	0
+50	57	0
+51	57	0
+52	57	0
+53	57	0
+54	57	0
+55	57	0
+56	57	0
+57	57	0
+58	57	0
+59	57	0
+60	57	0
+61	57	0
+62	57	0
+63	57	0
+64	57	0
+65	57	0
+66	57	0
+67	57	0
+68	57	0
+69	57	0
+70	57	0
+71	57	0
+72	57	0
+73	57	0
+74	57	0
+75	57	0
+76	57	0
+77	57	0
+78	57	0
+79	57	0
+80	57	0
+81	57	0
+82	57	0
+83	57	0
+84	57	0
+85	57	0
+86	57	0
+87	57	0
+88	57	0
+89	57	0
+90	57	0
+91	57	0
+92	57	0
+93	57	0
+94	57	0
+95	57	0
+96	57	0
+97	57	0
+98	57	0
+99	57	0
+100	57	0
+101	57	0
+102	57	0
+103	57	0
+104	57	0
+105	57	0
+106	57	0
+107	57	0
+108	57	0
+109	57	0
+110	57	0
+111	57	0
+112	57	0
+113	57	0
+114	57	0
+115	57	0
+116	57	0
+117	57	0
+118	57	0
+119	57	0
+120	57	0
+121	57	0
+122	57	0
+123	57	0
+124	57	0
+125	57	0
+126	57	0
+127	57	0
+128	57	0
+129	57	0
+130	57	0
+131	57	0
+132	57	0
+133	57	0
+134	57	0
+135	57	0
+136	57	0
+137	57	0
+138	57	0
+139	57	0
+140	57	0
+141	57	0
+142	57	0
+143	57	0
+144	57	0
+145	57	0
+146	57	0
+147	57	0
+148	57	0
+149	57	0
+150	57	0
+151	57	0
+152	57	0
+153	57	0
+154	57	0
+155	57	0
+156	57	0
+157	57	0
+158	57	0
+159	57	0
+160	57	0
+161	57	0
+162	57	0
+163	57	0
+164	57	0
+165	57	0
+166	57	0
+167	57	0
+168	57	0
+169	57	0
+170	57	0
+171	57	0
+172	57	0
+173	57	0
+174	57	0
+175	57	0
+176	57	0
+177	57	0
+178	57	0
+179	57	0
+180	57	0
+181	57	0
+182	57	0
+183	57	0
+184	57	0
+185	57	0
+186	57	0
+187	57	0
+188	57	0
+189	57	0
+190	57	0
+191	57	0
+192	57	0
+193	57	0
+194	57	0
+195	57	0
+196	57	0
+197	57	0
+198	57	0
+199	57	0
+200	57	0
+201	57	0
+202	57	0
+203	57	0
+204	57	0
+205	57	0
+206	57	0
+207	57	0
+208	57	0
+209	57	0
+210	57	0
+211	57	0
+212	57	0
+213	57	0
+214	57	0
+215	57	0
+216	57	0
+217	57	0
+218	57	0
+219	57	0
+220	57	0
+221	57	0
+222	57	0
+223	57	0
+224	57	0
+225	57	0
+226	57	0
+227	57	0
+228	57	0
+229	57	0
+230	57	0
+231	57	0
+232	57	0
+233	57	0
+234	57	0
+235	57	0
+236	57	0
+237	57	0
+238	57	0
+239	57	0
+240	57	0
+241	57	0
+242	57	0
+243	57	0
+244	57	0
+245	57	0
+246	57	0
+247	57	0
+248	57	0
+249	57	0
+250	57	0
+251	57	0
+252	57	0
+253	57	0
+254	57	0
+255	57	0
+256	57	0
+257	57	0
+258	57	0
+259	57	0
+260	57	0
+261	57	0
+262	57	0
+263	57	0
+264	57	0
+265	57	0
+266	57	0
+267	57	0
+268	57	0
+269	57	0
+270	57	0
+271	57	0
+272	57	0
+273	57	0
+274	57	0
+275	57	0
+276	57	0
+277	57	0
+278	57	0
+279	57	0
+280	57	0
+281	57	0
+282	57	0
+283	57	0
+284	57	0
+285	57	0
+286	57	0
+287	57	0
+288	57	0
+289	57	0
+290	57	0
+291	57	0
+292	57	0
+293	57	0
+294	57	0
+295	57	0
+296	57	0
+297	57	0
+298	57	0
+299	57	0
+300	57	0
+301	57	0
+302	57	0
+303	57	0
+304	57	0
+305	57	0
+306	57	0
+307	57	0
+308	57	0
+309	57	0
+310	57	0
+311	57	0
+312	57	0
+313	57	0
+314	57	0
+315	57	0
+316	57	0
+317	57	0
+318	57	0
+319	57	0
+320	57	0
+321	57	0
+322	57	0
+323	57	0
+324	57	0
+325	57	0
+326	57	0
+327	57	0
+328	57	0
+329	57	0
+330	57	0
+331	57	0
+332	57	0
+333	57	0
+334	57	0
+335	57	0
+336	57	0
+337	57	0
+338	57	0
+339	57	0
+340	57	0
+341	57	0
+342	57	0
+343	57	0
+344	57	0
+345	57	0
+346	57	0
+347	57	0
+348	57	0
+349	57	0
+350	57	0
+351	57	0
+352	57	0
+353	57	0
+354	57	0
+355	57	0
+356	57	0
+357	57	0
+358	57	0
+359	57	0
+360	57	0
+0	57.5	0
+1	57.5	0
+2	57.5	0
+3	57.5	0
+4	57.5	0
+5	57.5	0
+6	57.5	0
+7	57.5	0
+8	57.5	0
+9	57.5	0
+10	57.5	0
+11	57.5	0
+12	57.5	0
+13	57.5	0
+14	57.5	0
+15	57.5	0
+16	57.5	0
+17	57.5	0
+18	57.5	0
+19	57.5	0
+20	57.5	0
+21	57.5	0
+22	57.5	0
+23	57.5	0
+24	57.5	0
+25	57.5	0
+26	57.5	0
+27	57.5	0
+28	57.5	0
+29	57.5	0
+30	57.5	0
+31	57.5	0
+32	57.5	0
+33	57.5	0
+34	57.5	0
+35	57.5	0
+36	57.5	0
+37	57.5	0
+38	57.5	0
+39	57.5	0
+40	57.5	0
+41	57.5	0
+42	57.5	0
+43	57.5	0
+44	57.5	0
+45	57.5	0
+46	57.5	0
+47	57.5	0
+48	57.5	0
+49	57.5	0
+50	57.5	0
+51	57.5	0
+52	57.5	0
+53	57.5	0
+54	57.5	0
+55	57.5	0
+56	57.5	0
+57	57.5	0
+58	57.5	0
+59	57.5	0
+60	57.5	0
+61	57.5	0
+62	57.5	0
+63	57.5	0
+64	57.5	0
+65	57.5	0
+66	57.5	0
+67	57.5	0
+68	57.5	0
+69	57.5	0
+70	57.5	0
+71	57.5	0
+72	57.5	0
+73	57.5	0
+74	57.5	0
+75	57.5	0
+76	57.5	0
+77	57.5	0
+78	57.5	0
+79	57.5	0
+80	57.5	0
+81	57.5	0
+82	57.5	0
+83	57.5	0
+84	57.5	0
+85	57.5	0
+86	57.5	0
+87	57.5	0
+88	57.5	0
+89	57.5	0
+90	57.5	0
+91	57.5	0
+92	57.5	0
+93	57.5	0
+94	57.5	0
+95	57.5	0
+96	57.5	0
+97	57.5	0
+98	57.5	0
+99	57.5	0
+100	57.5	0
+101	57.5	0
+102	57.5	0
+103	57.5	0
+104	57.5	0
+105	57.5	0
+106	57.5	0
+107	57.5	0
+108	57.5	0
+109	57.5	0
+110	57.5	0
+111	57.5	0
+112	57.5	0
+113	57.5	0
+114	57.5	0
+115	57.5	0
+116	57.5	0
+117	57.5	0
+118	57.5	0
+119	57.5	0
+120	57.5	0
+121	57.5	0
+122	57.5	0
+123	57.5	0
+124	57.5	0
+125	57.5	0
+126	57.5	0
+127	57.5	0
+128	57.5	0
+129	57.5	0
+130	57.5	0
+131	57.5	0
+132	57.5	0
+133	57.5	0
+134	57.5	0
+135	57.5	0
+136	57.5	0
+137	57.5	0
+138	57.5	0
+139	57.5	0
+140	57.5	0
+141	57.5	0
+142	57.5	0
+143	57.5	0
+144	57.5	0
+145	57.5	0
+146	57.5	0
+147	57.5	0
+148	57.5	0
+149	57.5	0
+150	57.5	0
+151	57.5	0
+152	57.5	0
+153	57.5	0
+154	57.5	0
+155	57.5	0
+156	57.5	0
+157	57.5	0
+158	57.5	0
+159	57.5	0
+160	57.5	0
+161	57.5	0
+162	57.5	0
+163	57.5	0
+164	57.5	0
+165	57.5	0
+166	57.5	0
+167	57.5	0
+168	57.5	0
+169	57.5	0
+170	57.5	0
+171	57.5	0
+172	57.5	0
+173	57.5	0
+174	57.5	0
+175	57.5	0
+176	57.5	0
+177	57.5	0
+178	57.5	0
+179	57.5	0
+180	57.5	0
+181	57.5	0
+182	57.5	0
+183	57.5	0
+184	57.5	0
+185	57.5	0
+186	57.5	0
+187	57.5	0
+188	57.5	0
+189	57.5	0
+190	57.5	0
+191	57.5	0
+192	57.5	0
+193	57.5	0
+194	57.5	0
+195	57.5	0
+196	57.5	0
+197	57.5	0
+198	57.5	0
+199	57.5	0
+200	57.5	0
+201	57.5	0
+202	57.5	0
+203	57.5	0
+204	57.5	0
+205	57.5	0
+206	57.5	0
+207	57.5	0
+208	57.5	0
+209	57.5	0
+210	57.5	0
+211	57.5	0
+212	57.5	0
+213	57.5	0
+214	57.5	0
+215	57.5	0
+216	57.5	0
+217	57.5	0
+218	57.5	0
+219	57.5	0
+220	57.5	0
+221	57.5	0
+222	57.5	0
+223	57.5	0
+224	57.5	0
+225	57.5	0
+226	57.5	0
+227	57.5	0
+228	57.5	0
+229	57.5	0
+230	57.5	0
+231	57.5	0
+232	57.5	0
+233	57.5	0
+234	57.5	0
+235	57.5	0
+236	57.5	0
+237	57.5	0
+238	57.5	0
+239	57.5	0
+240	57.5	0
+241	57.5	0
+242	57.5	0
+243	57.5	0
+244	57.5	0
+245	57.5	0
+246	57.5	0
+247	57.5	0
+248	57.5	0
+249	57.5	0
+250	57.5	0
+251	57.5	0
+252	57.5	0
+253	57.5	0
+254	57.5	0
+255	57.5	0
+256	57.5	0
+257	57.5	0
+258	57.5	0
+259	57.5	0
+260	57.5	0
+261	57.5	0
+262	57.5	0
+263	57.5	0
+264	57.5	0
+265	57.5	0
+266	57.5	0
+267	57.5	0
+268	57.5	0
+269	57.5	0
+270	57.5	0
+271	57.5	0
+272	57.5	0
+273	57.5	0
+274	57.5	0
+275	57.5	0
+276	57.5	0
+277	57.5	0
+278	57.5	0
+279	57.5	0
+280	57.5	0
+281	57.5	0
+282	57.5	0
+283	57.5	0
+284	57.5	0
+285	57.5	0
+286	57.5	0
+287	57.5	0
+288	57.5	0
+289	57.5	0
+290	57.5	0
+291	57.5	0
+292	57.5	0
+293	57.5	0
+294	57.5	0
+295	57.5	0
+296	57.5	0
+297	57.5	0
+298	57.5	0
+299	57.5	0
+300	57.5	0
+301	57.5	0
+302	57.5	0
+303	57.5	0
+304	57.5	0
+305	57.5	0
+306	57.5	0
+307	57.5	0
+308	57.5	0
+309	57.5	0
+310	57.5	0
+311	57.5	0
+312	57.5	0
+313	57.5	0
+314	57.5	0
+315	57.5	0
+316	57.5	0
+317	57.5	0
+318	57.5	0
+319	57.5	0
+320	57.5	0
+321	57.5	0
+322	57.5	0
+323	57.5	0
+324	57.5	0
+325	57.5	0
+326	57.5	0
+327	57.5	0
+328	57.5	0
+329	57.5	0
+330	57.5	0
+331	57.5	0
+332	57.5	0
+333	57.5	0
+334	57.5	0
+335	57.5	0
+336	57.5	0
+337	57.5	0
+338	57.5	0
+339	57.5	0
+340	57.5	0
+341	57.5	0
+342	57.5	0
+343	57.5	0
+344	57.5	0
+345	57.5	0
+346	57.5	0
+347	57.5	0
+348	57.5	0
+349	57.5	0
+350	57.5	0
+351	57.5	0
+352	57.5	0
+353	57.5	0
+354	57.5	0
+355	57.5	0
+356	57.5	0
+357	57.5	0
+358	57.5	0
+359	57.5	0
+360	57.5	0
+0	58	0
+1	58	0
+2	58	0
+3	58	0
+4	58	0
+5	58	0
+6	58	0
+7	58	0
+8	58	0
+9	58	0
+10	58	0
+11	58	0
+12	58	0
+13	58	0
+14	58	0
+15	58	0
+16	58	0
+17	58	0
+18	58	0
+19	58	0
+20	58	0
+21	58	0
+22	58	0
+23	58	0
+24	58	0
+25	58	0
+26	58	0
+27	58	0
+28	58	0
+29	58	0
+30	58	0
+31	58	0
+32	58	0
+33	58	0
+34	58	0
+35	58	0
+36	58	0
+37	58	0
+38	58	0
+39	58	0
+40	58	0
+41	58	0
+42	58	0
+43	58	0
+44	58	0
+45	58	0
+46	58	0
+47	58	0
+48	58	0
+49	58	0
+50	58	0
+51	58	0
+52	58	0
+53	58	0
+54	58	0
+55	58	0
+56	58	0
+57	58	0
+58	58	0
+59	58	0
+60	58	0
+61	58	0
+62	58	0
+63	58	0
+64	58	0
+65	58	0
+66	58	0
+67	58	0
+68	58	0
+69	58	0
+70	58	0
+71	58	0
+72	58	0
+73	58	0
+74	58	0
+75	58	0
+76	58	0
+77	58	0
+78	58	0
+79	58	0
+80	58	0
+81	58	0
+82	58	0
+83	58	0
+84	58	0
+85	58	0
+86	58	0
+87	58	0
+88	58	0
+89	58	0
+90	58	0
+91	58	0
+92	58	0
+93	58	0
+94	58	0
+95	58	0
+96	58	0
+97	58	0
+98	58	0
+99	58	0
+100	58	0
+101	58	0
+102	58	0
+103	58	0
+104	58	0
+105	58	0
+106	58	0
+107	58	0
+108	58	0
+109	58	0
+110	58	0
+111	58	0
+112	58	0
+113	58	0
+114	58	0
+115	58	0
+116	58	0
+117	58	0
+118	58	0
+119	58	0
+120	58	0
+121	58	0
+122	58	0
+123	58	0
+124	58	0
+125	58	0
+126	58	0
+127	58	0
+128	58	0
+129	58	0
+130	58	0
+131	58	0
+132	58	0
+133	58	0
+134	58	0
+135	58	0
+136	58	0
+137	58	0
+138	58	0
+139	58	0
+140	58	0
+141	58	0
+142	58	0
+143	58	0
+144	58	0
+145	58	0
+146	58	0
+147	58	0
+148	58	0
+149	58	0
+150	58	0
+151	58	0
+152	58	0
+153	58	0
+154	58	0
+155	58	0
+156	58	0
+157	58	0
+158	58	0
+159	58	0
+160	58	0
+161	58	0
+162	58	0
+163	58	0
+164	58	0
+165	58	0
+166	58	0
+167	58	0
+168	58	0
+169	58	0
+170	58	0
+171	58	0
+172	58	0
+173	58	0
+174	58	0
+175	58	0
+176	58	0
+177	58	0
+178	58	0
+179	58	0
+180	58	0
+181	58	0
+182	58	0
+183	58	0
+184	58	0
+185	58	0
+186	58	0
+187	58	0
+188	58	0
+189	58	0
+190	58	0
+191	58	0
+192	58	0
+193	58	0
+194	58	0
+195	58	0
+196	58	0
+197	58	0
+198	58	0
+199	58	0
+200	58	0
+201	58	0
+202	58	0
+203	58	0
+204	58	0
+205	58	0
+206	58	0
+207	58	0
+208	58	0
+209	58	0
+210	58	0
+211	58	0
+212	58	0
+213	58	0
+214	58	0
+215	58	0
+216	58	0
+217	58	0
+218	58	0
+219	58	0
+220	58	0
+221	58	0
+222	58	0
+223	58	0
+224	58	0
+225	58	0
+226	58	0
+227	58	0
+228	58	0
+229	58	0
+230	58	0
+231	58	0
+232	58	0
+233	58	0
+234	58	0
+235	58	0
+236	58	0
+237	58	0
+238	58	0
+239	58	0
+240	58	0
+241	58	0
+242	58	0
+243	58	0
+244	58	0
+245	58	0
+246	58	0
+247	58	0
+248	58	0
+249	58	0
+250	58	0
+251	58	0
+252	58	0
+253	58	0
+254	58	0
+255	58	0
+256	58	0
+257	58	0
+258	58	0
+259	58	0
+260	58	0
+261	58	0
+262	58	0
+263	58	0
+264	58	0
+265	58	0
+266	58	0
+267	58	0
+268	58	0
+269	58	0
+270	58	0
+271	58	0
+272	58	0
+273	58	0
+274	58	0
+275	58	0
+276	58	0
+277	58	0
+278	58	0
+279	58	0
+280	58	0
+281	58	0
+282	58	0
+283	58	0
+284	58	0
+285	58	0
+286	58	0
+287	58	0
+288	58	0
+289	58	0
+290	58	0
+291	58	0
+292	58	0
+293	58	0
+294	58	0
+295	58	0
+296	58	0
+297	58	0
+298	58	0
+299	58	0
+300	58	0
+301	58	0
+302	58	0
+303	58	0
+304	58	0
+305	58	0
+306	58	0
+307	58	0
+308	58	0
+309	58	0
+310	58	0
+311	58	0
+312	58	0
+313	58	0
+314	58	0
+315	58	0
+316	58	0
+317	58	0
+318	58	0
+319	58	0
+320	58	0
+321	58	0
+322	58	0
+323	58	0
+324	58	0
+325	58	0
+326	58	0
+327	58	0
+328	58	0
+329	58	0
+330	58	0
+331	58	0
+332	58	0
+333	58	0
+334	58	0
+335	58	0
+336	58	0
+337	58	0
+338	58	0
+339	58	0
+340	58	0
+341	58	0
+342	58	0
+343	58	0
+344	58	0
+345	58	0
+346	58	0
+347	58	0
+348	58	0
+349	58	0
+350	58	0
+351	58	0
+352	58	0
+353	58	0
+354	58	0
+355	58	0
+356	58	0
+357	58	0
+358	58	0
+359	58	0
+360	58	0
+0	58.5	0
+1	58.5	0
+2	58.5	0
+3	58.5	0
+4	58.5	0
+5	58.5	0
+6	58.5	0
+7	58.5	0
+8	58.5	0
+9	58.5	0
+10	58.5	0
+11	58.5	0
+12	58.5	0
+13	58.5	0
+14	58.5	0
+15	58.5	0
+16	58.5	0
+17	58.5	0
+18	58.5	0
+19	58.5	0
+20	58.5	0
+21	58.5	0
+22	58.5	0
+23	58.5	0
+24	58.5	0
+25	58.5	0
+26	58.5	0
+27	58.5	0
+28	58.5	0
+29	58.5	0
+30	58.5	0
+31	58.5	0
+32	58.5	0
+33	58.5	0
+34	58.5	0
+35	58.5	0
+36	58.5	0
+37	58.5	0
+38	58.5	0
+39	58.5	0
+40	58.5	0
+41	58.5	0
+42	58.5	0
+43	58.5	0
+44	58.5	0
+45	58.5	0
+46	58.5	0
+47	58.5	0
+48	58.5	0
+49	58.5	0
+50	58.5	0
+51	58.5	0
+52	58.5	0
+53	58.5	0
+54	58.5	0
+55	58.5	0
+56	58.5	0
+57	58.5	0
+58	58.5	0
+59	58.5	0
+60	58.5	0
+61	58.5	0
+62	58.5	0
+63	58.5	0
+64	58.5	0
+65	58.5	0
+66	58.5	0
+67	58.5	0
+68	58.5	0
+69	58.5	0
+70	58.5	0
+71	58.5	0
+72	58.5	0
+73	58.5	0
+74	58.5	0
+75	58.5	0
+76	58.5	0
+77	58.5	0
+78	58.5	0
+79	58.5	0
+80	58.5	0
+81	58.5	0
+82	58.5	0
+83	58.5	0
+84	58.5	0
+85	58.5	0
+86	58.5	0
+87	58.5	0
+88	58.5	0
+89	58.5	0
+90	58.5	0
+91	58.5	0
+92	58.5	0
+93	58.5	0
+94	58.5	0
+95	58.5	0
+96	58.5	0
+97	58.5	0
+98	58.5	0
+99	58.5	0
+100	58.5	0
+101	58.5	0
+102	58.5	0
+103	58.5	0
+104	58.5	0
+105	58.5	0
+106	58.5	0
+107	58.5	0
+108	58.5	0
+109	58.5	0
+110	58.5	0
+111	58.5	0
+112	58.5	0
+113	58.5	0
+114	58.5	0
+115	58.5	0
+116	58.5	0
+117	58.5	0
+118	58.5	0
+119	58.5	0
+120	58.5	0
+121	58.5	0
+122	58.5	0
+123	58.5	0
+124	58.5	0
+125	58.5	0
+126	58.5	0
+127	58.5	0
+128	58.5	0
+129	58.5	0
+130	58.5	0
+131	58.5	0
+132	58.5	0
+133	58.5	0
+134	58.5	0
+135	58.5	0
+136	58.5	0
+137	58.5	0
+138	58.5	0
+139	58.5	0
+140	58.5	0
+141	58.5	0
+142	58.5	0
+143	58.5	0
+144	58.5	0
+145	58.5	0
+146	58.5	0
+147	58.5	0
+148	58.5	0
+149	58.5	0
+150	58.5	0
+151	58.5	0
+152	58.5	0
+153	58.5	0
+154	58.5	0
+155	58.5	0
+156	58.5	0
+157	58.5	0
+158	58.5	0
+159	58.5	0
+160	58.5	0
+161	58.5	0
+162	58.5	0
+163	58.5	0
+164	58.5	0
+165	58.5	0
+166	58.5	0
+167	58.5	0
+168	58.5	0
+169	58.5	0
+170	58.5	0
+171	58.5	0
+172	58.5	0
+173	58.5	0
+174	58.5	0
+175	58.5	0
+176	58.5	0
+177	58.5	0
+178	58.5	0
+179	58.5	0
+180	58.5	0
+181	58.5	0
+182	58.5	0
+183	58.5	0
+184	58.5	0
+185	58.5	0
+186	58.5	0
+187	58.5	0
+188	58.5	0
+189	58.5	0
+190	58.5	0
+191	58.5	0
+192	58.5	0
+193	58.5	0
+194	58.5	0
+195	58.5	0
+196	58.5	0
+197	58.5	0
+198	58.5	0
+199	58.5	0
+200	58.5	0
+201	58.5	0
+202	58.5	0
+203	58.5	0
+204	58.5	0
+205	58.5	0
+206	58.5	0
+207	58.5	0
+208	58.5	0
+209	58.5	0
+210	58.5	0
+211	58.5	0
+212	58.5	0
+213	58.5	0
+214	58.5	0
+215	58.5	0
+216	58.5	0
+217	58.5	0
+218	58.5	0
+219	58.5	0
+220	58.5	0
+221	58.5	0
+222	58.5	0
+223	58.5	0
+224	58.5	0
+225	58.5	0
+226	58.5	0
+227	58.5	0
+228	58.5	0
+229	58.5	0
+230	58.5	0
+231	58.5	0
+232	58.5	0
+233	58.5	0
+234	58.5	0
+235	58.5	0
+236	58.5	0
+237	58.5	0
+238	58.5	0
+239	58.5	0
+240	58.5	0
+241	58.5	0
+242	58.5	0
+243	58.5	0
+244	58.5	0
+245	58.5	0
+246	58.5	0
+247	58.5	0
+248	58.5	0
+249	58.5	0
+250	58.5	0
+251	58.5	0
+252	58.5	0
+253	58.5	0
+254	58.5	0
+255	58.5	0
+256	58.5	0
+257	58.5	0
+258	58.5	0
+259	58.5	0
+260	58.5	0
+261	58.5	0
+262	58.5	0
+263	58.5	0
+264	58.5	0
+265	58.5	0
+266	58.5	0
+267	58.5	0
+268	58.5	0
+269	58.5	0
+270	58.5	0
+271	58.5	0
+272	58.5	0
+273	58.5	0
+274	58.5	0
+275	58.5	0
+276	58.5	0
+277	58.5	0
+278	58.5	0
+279	58.5	0
+280	58.5	0
+281	58.5	0
+282	58.5	0
+283	58.5	0
+284	58.5	0
+285	58.5	0
+286	58.5	0
+287	58.5	0
+288	58.5	0
+289	58.5	0
+290	58.5	0
+291	58.5	0
+292	58.5	0
+293	58.5	0
+294	58.5	0
+295	58.5	0
+296	58.5	0
+297	58.5	0
+298	58.5	0
+299	58.5	0
+300	58.5	0
+301	58.5	0
+302	58.5	0
+303	58.5	0
+304	58.5	0
+305	58.5	0
+306	58.5	0
+307	58.5	0
+308	58.5	0
+309	58.5	0
+310	58.5	0
+311	58.5	0
+312	58.5	0
+313	58.5	0
+314	58.5	0
+315	58.5	0
+316	58.5	0
+317	58.5	0
+318	58.5	0
+319	58.5	0
+320	58.5	0
+321	58.5	0
+322	58.5	0
+323	58.5	0
+324	58.5	0
+325	58.5	0
+326	58.5	0
+327	58.5	0
+328	58.5	0
+329	58.5	0
+330	58.5	0
+331	58.5	0
+332	58.5	0
+333	58.5	0
+334	58.5	0
+335	58.5	0
+336	58.5	0
+337	58.5	0
+338	58.5	0
+339	58.5	0
+340	58.5	0
+341	58.5	0
+342	58.5	0
+343	58.5	0
+344	58.5	0
+345	58.5	0
+346	58.5	0
+347	58.5	0
+348	58.5	0
+349	58.5	0
+350	58.5	0
+351	58.5	0
+352	58.5	0
+353	58.5	0
+354	58.5	0
+355	58.5	0
+356	58.5	0
+357	58.5	0
+358	58.5	0
+359	58.5	0
+360	58.5	0
+0	59	0
+1	59	0
+2	59	0
+3	59	0
+4	59	0
+5	59	0
+6	59	0
+7	59	0
+8	59	0
+9	59	0
+10	59	0
+11	59	0
+12	59	0
+13	59	0
+14	59	0
+15	59	0
+16	59	0
+17	59	0
+18	59	0
+19	59	0
+20	59	0
+21	59	0
+22	59	0
+23	59	0
+24	59	0
+25	59	0
+26	59	0
+27	59	0
+28	59	0
+29	59	0
+30	59	0
+31	59	0
+32	59	0
+33	59	0
+34	59	0
+35	59	0
+36	59	0
+37	59	0
+38	59	0
+39	59	0
+40	59	0
+41	59	0
+42	59	0
+43	59	0
+44	59	0
+45	59	0
+46	59	0
+47	59	0
+48	59	0
+49	59	0
+50	59	0
+51	59	0
+52	59	0
+53	59	0
+54	59	0
+55	59	0
+56	59	0
+57	59	0
+58	59	0
+59	59	0
+60	59	0
+61	59	0
+62	59	0
+63	59	0
+64	59	0
+65	59	0
+66	59	0
+67	59	0
+68	59	0
+69	59	0
+70	59	0
+71	59	0
+72	59	0
+73	59	0
+74	59	0
+75	59	0
+76	59	0
+77	59	0
+78	59	0
+79	59	0
+80	59	0
+81	59	0
+82	59	0
+83	59	0
+84	59	0
+85	59	0
+86	59	0
+87	59	0
+88	59	0
+89	59	0
+90	59	0
+91	59	0
+92	59	0
+93	59	0
+94	59	0
+95	59	0
+96	59	0
+97	59	0
+98	59	0
+99	59	0
+100	59	0
+101	59	0
+102	59	0
+103	59	0
+104	59	0
+105	59	0
+106	59	0
+107	59	0
+108	59	0
+109	59	0
+110	59	0
+111	59	0
+112	59	0
+113	59	0
+114	59	0
+115	59	0
+116	59	0
+117	59	0
+118	59	0
+119	59	0
+120	59	0
+121	59	0
+122	59	0
+123	59	0
+124	59	0
+125	59	0
+126	59	0
+127	59	0
+128	59	0
+129	59	0
+130	59	0
+131	59	0
+132	59	0
+133	59	0
+134	59	0
+135	59	0
+136	59	0
+137	59	0
+138	59	0
+139	59	0
+140	59	0
+141	59	0
+142	59	0
+143	59	0
+144	59	0
+145	59	0
+146	59	0
+147	59	0
+148	59	0
+149	59	0
+150	59	0
+151	59	0
+152	59	0
+153	59	0
+154	59	0
+155	59	0
+156	59	0
+157	59	0
+158	59	0
+159	59	0
+160	59	0
+161	59	0
+162	59	0
+163	59	0
+164	59	0
+165	59	0
+166	59	0
+167	59	0
+168	59	0
+169	59	0
+170	59	0
+171	59	0
+172	59	0
+173	59	0
+174	59	0
+175	59	0
+176	59	0
+177	59	0
+178	59	0
+179	59	0
+180	59	0
+181	59	0
+182	59	0
+183	59	0
+184	59	0
+185	59	0
+186	59	0
+187	59	0
+188	59	0
+189	59	0
+190	59	0
+191	59	0
+192	59	0
+193	59	0
+194	59	0
+195	59	0
+196	59	0
+197	59	0
+198	59	0
+199	59	0
+200	59	0
+201	59	0
+202	59	0
+203	59	0
+204	59	0
+205	59	0
+206	59	0
+207	59	0
+208	59	0
+209	59	0
+210	59	0
+211	59	0
+212	59	0
+213	59	0
+214	59	0
+215	59	0
+216	59	0
+217	59	0
+218	59	0
+219	59	0
+220	59	0
+221	59	0
+222	59	0
+223	59	0
+224	59	0
+225	59	0
+226	59	0
+227	59	0
+228	59	0
+229	59	0
+230	59	0
+231	59	0
+232	59	0
+233	59	0
+234	59	0
+235	59	0
+236	59	0
+237	59	0
+238	59	0
+239	59	0
+240	59	0
+241	59	0
+242	59	0
+243	59	0
+244	59	0
+245	59	0
+246	59	0
+247	59	0
+248	59	0
+249	59	0
+250	59	0
+251	59	0
+252	59	0
+253	59	0
+254	59	0
+255	59	0
+256	59	0
+257	59	0
+258	59	0
+259	59	0
+260	59	0
+261	59	0
+262	59	0
+263	59	0
+264	59	0
+265	59	0
+266	59	0
+267	59	0
+268	59	0
+269	59	0
+270	59	0
+271	59	0
+272	59	0
+273	59	0
+274	59	0
+275	59	0
+276	59	0
+277	59	0
+278	59	0
+279	59	0
+280	59	0
+281	59	0
+282	59	0
+283	59	0
+284	59	0
+285	59	0
+286	59	0
+287	59	0
+288	59	0
+289	59	0
+290	59	0
+291	59	0
+292	59	0
+293	59	0
+294	59	0
+295	59	0
+296	59	0
+297	59	0
+298	59	0
+299	59	0
+300	59	0
+301	59	0
+302	59	0
+303	59	0
+304	59	0
+305	59	0
+306	59	0
+307	59	0
+308	59	0
+309	59	0
+310	59	0
+311	59	0
+312	59	0
+313	59	0
+314	59	0
+315	59	0
+316	59	0
+317	59	0
+318	59	0
+319	59	0
+320	59	0
+321	59	0
+322	59	0
+323	59	0
+324	59	0
+325	59	0
+326	59	0
+327	59	0
+328	59	0
+329	59	0
+330	59	0
+331	59	0
+332	59	0
+333	59	0
+334	59	0
+335	59	0
+336	59	0
+337	59	0
+338	59	0
+339	59	0
+340	59	0
+341	59	0
+342	59	0
+343	59	0
+344	59	0
+345	59	0
+346	59	0
+347	59	0
+348	59	0
+349	59	0
+350	59	0
+351	59	0
+352	59	0
+353	59	0
+354	59	0
+355	59	0
+356	59	0
+357	59	0
+358	59	0
+359	59	0
+360	59	0
+0	59.5	0
+1	59.5	0
+2	59.5	0
+3	59.5	0
+4	59.5	0
+5	59.5	0
+6	59.5	0
+7	59.5	0
+8	59.5	0
+9	59.5	0
+10	59.5	0
+11	59.5	0
+12	59.5	0
+13	59.5	0
+14	59.5	0
+15	59.5	0
+16	59.5	0
+17	59.5	0
+18	59.5	0
+19	59.5	0
+20	59.5	0
+21	59.5	0
+22	59.5	0
+23	59.5	0
+24	59.5	0
+25	59.5	0
+26	59.5	0
+27	59.5	0
+28	59.5	0
+29	59.5	0
+30	59.5	0
+31	59.5	0
+32	59.5	0
+33	59.5	0
+34	59.5	0
+35	59.5	0
+36	59.5	0
+37	59.5	0
+38	59.5	0
+39	59.5	0
+40	59.5	0
+41	59.5	0
+42	59.5	0
+43	59.5	0
+44	59.5	0
+45	59.5	0
+46	59.5	0
+47	59.5	0
+48	59.5	0
+49	59.5	0
+50	59.5	0
+51	59.5	0
+52	59.5	0
+53	59.5	0
+54	59.5	0
+55	59.5	0
+56	59.5	0
+57	59.5	0
+58	59.5	0
+59	59.5	0
+60	59.5	0
+61	59.5	0
+62	59.5	0
+63	59.5	0
+64	59.5	0
+65	59.5	0
+66	59.5	0
+67	59.5	0
+68	59.5	0
+69	59.5	0
+70	59.5	0
+71	59.5	0
+72	59.5	0
+73	59.5	0
+74	59.5	0
+75	59.5	0
+76	59.5	0
+77	59.5	0
+78	59.5	0
+79	59.5	0
+80	59.5	0
+81	59.5	0
+82	59.5	0
+83	59.5	0
+84	59.5	0
+85	59.5	0
+86	59.5	0
+87	59.5	0
+88	59.5	0
+89	59.5	0
+90	59.5	0
+91	59.5	0
+92	59.5	0
+93	59.5	0
+94	59.5	0
+95	59.5	0
+96	59.5	0
+97	59.5	0
+98	59.5	0
+99	59.5	0
+100	59.5	0
+101	59.5	0
+102	59.5	0
+103	59.5	0
+104	59.5	0
+105	59.5	0
+106	59.5	0
+107	59.5	0
+108	59.5	0
+109	59.5	0
+110	59.5	0
+111	59.5	0
+112	59.5	0
+113	59.5	0
+114	59.5	0
+115	59.5	0
+116	59.5	0
+117	59.5	0
+118	59.5	0
+119	59.5	0
+120	59.5	0
+121	59.5	0
+122	59.5	0
+123	59.5	0
+124	59.5	0
+125	59.5	0
+126	59.5	0
+127	59.5	0
+128	59.5	0
+129	59.5	0
+130	59.5	0
+131	59.5	0
+132	59.5	0
+133	59.5	0
+134	59.5	0
+135	59.5	0
+136	59.5	0
+137	59.5	0
+138	59.5	0
+139	59.5	0
+140	59.5	0
+141	59.5	0
+142	59.5	0
+143	59.5	0
+144	59.5	0
+145	59.5	0
+146	59.5	0
+147	59.5	0
+148	59.5	0
+149	59.5	0
+150	59.5	0
+151	59.5	0
+152	59.5	0
+153	59.5	0
+154	59.5	0
+155	59.5	0
+156	59.5	0
+157	59.5	0
+158	59.5	0
+159	59.5	0
+160	59.5	0
+161	59.5	0
+162	59.5	0
+163	59.5	0
+164	59.5	0
+165	59.5	0
+166	59.5	0
+167	59.5	0
+168	59.5	0
+169	59.5	0
+170	59.5	0
+171	59.5	0
+172	59.5	0
+173	59.5	0
+174	59.5	0
+175	59.5	0
+176	59.5	0
+177	59.5	0
+178	59.5	0
+179	59.5	0
+180	59.5	0
+181	59.5	0
+182	59.5	0
+183	59.5	0
+184	59.5	0
+185	59.5	0
+186	59.5	0
+187	59.5	0
+188	59.5	0
+189	59.5	0
+190	59.5	0
+191	59.5	0
+192	59.5	0
+193	59.5	0
+194	59.5	0
+195	59.5	0
+196	59.5	0
+197	59.5	0
+198	59.5	0
+199	59.5	0
+200	59.5	0
+201	59.5	0
+202	59.5	0
+203	59.5	0
+204	59.5	0
+205	59.5	0
+206	59.5	0
+207	59.5	0
+208	59.5	0
+209	59.5	0
+210	59.5	0
+211	59.5	0
+212	59.5	0
+213	59.5	0
+214	59.5	0
+215	59.5	0
+216	59.5	0
+217	59.5	0
+218	59.5	0
+219	59.5	0
+220	59.5	0
+221	59.5	0
+222	59.5	0
+223	59.5	0
+224	59.5	0
+225	59.5	0
+226	59.5	0
+227	59.5	0
+228	59.5	0
+229	59.5	0
+230	59.5	0
+231	59.5	0
+232	59.5	0
+233	59.5	0
+234	59.5	0
+235	59.5	0
+236	59.5	0
+237	59.5	0
+238	59.5	0
+239	59.5	0
+240	59.5	0
+241	59.5	0
+242	59.5	0
+243	59.5	0
+244	59.5	0
+245	59.5	0
+246	59.5	0
+247	59.5	0
+248	59.5	0
+249	59.5	0
+250	59.5	0
+251	59.5	0
+252	59.5	0
+253	59.5	0
+254	59.5	0
+255	59.5	0
+256	59.5	0
+257	59.5	0
+258	59.5	0
+259	59.5	0
+260	59.5	0
+261	59.5	0
+262	59.5	0
+263	59.5	0
+264	59.5	0
+265	59.5	0
+266	59.5	0
+267	59.5	0
+268	59.5	0
+269	59.5	0
+270	59.5	0
+271	59.5	0
+272	59.5	0
+273	59.5	0
+274	59.5	0
+275	59.5	0
+276	59.5	0
+277	59.5	0
+278	59.5	0
+279	59.5	0
+280	59.5	0
+281	59.5	0
+282	59.5	0
+283	59.5	0
+284	59.5	0
+285	59.5	0
+286	59.5	0
+287	59.5	0
+288	59.5	0
+289	59.5	0
+290	59.5	0
+291	59.5	0
+292	59.5	0
+293	59.5	0
+294	59.5	0
+295	59.5	0
+296	59.5	0
+297	59.5	0
+298	59.5	0
+299	59.5	0
+300	59.5	0
+301	59.5	0
+302	59.5	0
+303	59.5	0
+304	59.5	0
+305	59.5	0
+306	59.5	0
+307	59.5	0
+308	59.5	0
+309	59.5	0
+310	59.5	0
+311	59.5	0
+312	59.5	0
+313	59.5	0
+314	59.5	-1.9752
+315	59.5	0
+316	59.5	-5.8802
+317	59.5	0
+318	59.5	0
+319	59.5	0
+320	59.5	0
+321	59.5	0
+322	59.5	0
+323	59.5	0
+324	59.5	0
+325	59.5	0
+326	59.5	0
+327	59.5	0
+328	59.5	0
+329	59.5	0
+330	59.5	0
+331	59.5	0
+332	59.5	0
+333	59.5	0
+334	59.5	0
+335	59.5	0
+336	59.5	0
+337	59.5	0
+338	59.5	0
+339	59.5	0
+340	59.5	0
+341	59.5	0
+342	59.5	0
+343	59.5	0
+344	59.5	0
+345	59.5	0
+346	59.5	0
+347	59.5	0
+348	59.5	0
+349	59.5	0
+350	59.5	0
+351	59.5	0
+352	59.5	0
+353	59.5	0
+354	59.5	0
+355	59.5	0
+356	59.5	0
+357	59.5	0
+358	59.5	0
+359	59.5	0
+360	59.5	0
+0	60	0
+1	60	0
+2	60	0
+3	60	0
+4	60	0
+5	60	0
+6	60	0
+7	60	0
+8	60	0
+9	60	0
+10	60	0
+11	60	0
+12	60	0
+13	60	0
+14	60	0
+15	60	0
+16	60	0
+17	60	0
+18	60	0
+19	60	0
+20	60	0
+21	60	0
+22	60	0
+23	60	0
+24	60	0
+25	60	0
+26	60	0
+27	60	0
+28	60	0
+29	60	0
+30	60	0
+31	60	0
+32	60	0
+33	60	0
+34	60	0
+35	60	0
+36	60	0
+37	60	0
+38	60	0
+39	60	0
+40	60	0
+41	60	0
+42	60	0
+43	60	0
+44	60	0
+45	60	0
+46	60	0
+47	60	0
+48	60	0
+49	60	0
+50	60	0
+51	60	0
+52	60	0
+53	60	0
+54	60	0
+55	60	0
+56	60	0
+57	60	0
+58	60	0
+59	60	0
+60	60	0
+61	60	0
+62	60	0
+63	60	0
+64	60	0
+65	60	0
+66	60	0
+67	60	0
+68	60	0
+69	60	0
+70	60	0
+71	60	0
+72	60	0
+73	60	0
+74	60	0
+75	60	0
+76	60	0
+77	60	0
+78	60	0
+79	60	0
+80	60	0
+81	60	0
+82	60	0
+83	60	0
+84	60	0
+85	60	0
+86	60	0
+87	60	0
+88	60	0
+89	60	0
+90	60	0
+91	60	0
+92	60	0
+93	60	0
+94	60	0
+95	60	0
+96	60	0
+97	60	0
+98	60	0
+99	60	0
+100	60	0
+101	60	0
+102	60	0
+103	60	0
+104	60	0
+105	60	0
+106	60	0
+107	60	0
+108	60	0
+109	60	0
+110	60	0
+111	60	0
+112	60	0
+113	60	0
+114	60	0
+115	60	0
+116	60	0
+117	60	0
+118	60	0
+119	60	0
+120	60	0
+121	60	0
+122	60	0
+123	60	0
+124	60	0
+125	60	0
+126	60	0
+127	60	0
+128	60	0
+129	60	0
+130	60	0
+131	60	0
+132	60	0
+133	60	0
+134	60	0
+135	60	0
+136	60	0
+137	60	0
+138	60	0
+139	60	0
+140	60	0
+141	60	0
+142	60	0
+143	60	0
+144	60	0
+145	60	0
+146	60	0
+147	60	0
+148	60	0
+149	60	0
+150	60	0
+151	60	0
+152	60	0
+153	60	0
+154	60	0
+155	60	0
+156	60	0
+157	60	0
+158	60	0
+159	60	0
+160	60	0
+161	60	0
+162	60	0
+163	60	0
+164	60	0
+165	60	0
+166	60	0
+167	60	0
+168	60	0
+169	60	0
+170	60	0
+171	60	0
+172	60	0
+173	60	0
+174	60	0
+175	60	0
+176	60	0
+177	60	0
+178	60	0
+179	60	0
+180	60	0
+181	60	0
+182	60	0
+183	60	0
+184	60	0
+185	60	0
+186	60	0
+187	60	0
+188	60	0
+189	60	0
+190	60	0
+191	60	0
+192	60	0
+193	60	0
+194	60	0
+195	60	0
+196	60	0
+197	60	0
+198	60	0
+199	60	0
+200	60	0
+201	60	0
+202	60	0
+203	60	0
+204	60	0
+205	60	0
+206	60	0
+207	60	0
+208	60	0
+209	60	0
+210	60	0
+211	60	0
+212	60	0
+213	60	0
+214	60	0
+215	60	0
+216	60	0
+217	60	0
+218	60	0
+219	60	0
+220	60	0
+221	60	0
+222	60	0
+223	60	0
+224	60	0
+225	60	0
+226	60	0
+227	60	0
+228	60	0
+229	60	0
+230	60	0
+231	60	0
+232	60	0
+233	60	0
+234	60	0
+235	60	0
+236	60	0
+237	60	0
+238	60	0
+239	60	0
+240	60	0
+241	60	0
+242	60	0
+243	60	0
+244	60	0
+245	60	0
+246	60	0
+247	60	0
+248	60	0
+249	60	0
+250	60	0
+251	60	0
+252	60	0
+253	60	0
+254	60	0
+255	60	0
+256	60	0
+257	60	0
+258	60	0
+259	60	0
+260	60	0
+261	60	0
+262	60	0
+263	60	0
+264	60	0
+265	60	0
+266	60	0
+267	60	0
+268	60	0
+269	60	0
+270	60	0
+271	60	0
+272	60	0
+273	60	0
+274	60	0
+275	60	0
+276	60	0
+277	60	0
+278	60	0
+279	60	0
+280	60	0
+281	60	0
+282	60	0
+283	60	0
+284	60	0
+285	60	0
+286	60	0
+287	60	0
+288	60	0
+289	60	0
+290	60	0
+291	60	0
+292	60	0
+293	60	0
+294	60	0
+295	60	0
+296	60	0
+297	60	0
+298	60	0
+299	60	0
+300	60	0
+301	60	0
+302	60	0
+303	60	0
+304	60	0
+305	60	0
+306	60	0
+307	60	0
+308	60	0
+309	60	0
+310	60	0
+311	60	0
+312	60	0
+313	60	0
+314	60	-7.3632
+315	60	-6.1474
+316	60	-11.309
+317	60	-3.4755
+318	60	0
+319	60	0
+320	60	0
+321	60	0
+322	60	0
+323	60	0
+324	60	0
+325	60	0
+326	60	0
+327	60	0
+328	60	0
+329	60	0
+330	60	0
+331	60	0
+332	60	0
+333	60	0
+334	60	0
+335	60	0
+336	60	0
+337	60	0
+338	60	0
+339	60	0
+340	60	0
+341	60	0
+342	60	0
+343	60	0
+344	60	0
+345	60	0
+346	60	0
+347	60	0
+348	60	0
+349	60	0
+350	60	0
+351	60	0
+352	60	0
+353	60	0
+354	60	0
+355	60	0
+356	60	0
+357	60	0
+358	60	0
+359	60	0
+360	60	0
+0	60.5	0
+1	60.5	0
+2	60.5	0
+3	60.5	0
+4	60.5	0
+5	60.5	0
+6	60.5	0
+7	60.5	0
+8	60.5	0
+9	60.5	0
+10	60.5	0
+11	60.5	0
+12	60.5	0
+13	60.5	0
+14	60.5	0
+15	60.5	0
+16	60.5	0
+17	60.5	0
+18	60.5	0
+19	60.5	0
+20	60.5	0
+21	60.5	0
+22	60.5	0
+23	60.5	0
+24	60.5	0
+25	60.5	0
+26	60.5	0
+27	60.5	0
+28	60.5	0
+29	60.5	0
+30	60.5	0
+31	60.5	0
+32	60.5	0
+33	60.5	0
+34	60.5	0
+35	60.5	0
+36	60.5	0
+37	60.5	0
+38	60.5	0
+39	60.5	0
+40	60.5	0
+41	60.5	0
+42	60.5	0
+43	60.5	0
+44	60.5	0
+45	60.5	0
+46	60.5	0
+47	60.5	0
+48	60.5	0
+49	60.5	0
+50	60.5	0
+51	60.5	0
+52	60.5	0
+53	60.5	0
+54	60.5	0
+55	60.5	0
+56	60.5	0
+57	60.5	0
+58	60.5	0
+59	60.5	0
+60	60.5	0
+61	60.5	0
+62	60.5	0
+63	60.5	0
+64	60.5	0
+65	60.5	0
+66	60.5	0
+67	60.5	0
+68	60.5	0
+69	60.5	0
+70	60.5	0
+71	60.5	0
+72	60.5	0
+73	60.5	0
+74	60.5	0
+75	60.5	0
+76	60.5	0
+77	60.5	0
+78	60.5	0
+79	60.5	0
+80	60.5	0
+81	60.5	0
+82	60.5	0
+83	60.5	0
+84	60.5	0
+85	60.5	0
+86	60.5	0
+87	60.5	0
+88	60.5	0
+89	60.5	0
+90	60.5	0
+91	60.5	0
+92	60.5	0
+93	60.5	0
+94	60.5	0
+95	60.5	0
+96	60.5	0
+97	60.5	0
+98	60.5	0
+99	60.5	0
+100	60.5	0
+101	60.5	0
+102	60.5	0
+103	60.5	0
+104	60.5	0
+105	60.5	0
+106	60.5	0
+107	60.5	0
+108	60.5	0
+109	60.5	0
+110	60.5	0
+111	60.5	0
+112	60.5	0
+113	60.5	0
+114	60.5	0
+115	60.5	0
+116	60.5	0
+117	60.5	0
+118	60.5	0
+119	60.5	0
+120	60.5	0
+121	60.5	0
+122	60.5	0
+123	60.5	0
+124	60.5	0
+125	60.5	0
+126	60.5	0
+127	60.5	0
+128	60.5	0
+129	60.5	0
+130	60.5	0
+131	60.5	0
+132	60.5	0
+133	60.5	0
+134	60.5	0
+135	60.5	0
+136	60.5	0
+137	60.5	0
+138	60.5	0
+139	60.5	0
+140	60.5	0
+141	60.5	0
+142	60.5	0
+143	60.5	0
+144	60.5	0
+145	60.5	0
+146	60.5	0
+147	60.5	0
+148	60.5	0
+149	60.5	0
+150	60.5	0
+151	60.5	0
+152	60.5	0
+153	60.5	0
+154	60.5	0
+155	60.5	0
+156	60.5	0
+157	60.5	0
+158	60.5	0
+159	60.5	0
+160	60.5	0
+161	60.5	0
+162	60.5	0
+163	60.5	0
+164	60.5	0
+165	60.5	0
+166	60.5	0
+167	60.5	0
+168	60.5	0
+169	60.5	0
+170	60.5	0
+171	60.5	0
+172	60.5	0
+173	60.5	0
+174	60.5	0
+175	60.5	0
+176	60.5	0
+177	60.5	0
+178	60.5	0
+179	60.5	0
+180	60.5	0
+181	60.5	0
+182	60.5	0
+183	60.5	0
+184	60.5	0
+185	60.5	0
+186	60.5	0
+187	60.5	0
+188	60.5	0
+189	60.5	0
+190	60.5	0
+191	60.5	0
+192	60.5	0
+193	60.5	0
+194	60.5	0
+195	60.5	0
+196	60.5	0
+197	60.5	0
+198	60.5	0
+199	60.5	0
+200	60.5	0
+201	60.5	0
+202	60.5	0
+203	60.5	0
+204	60.5	0
+205	60.5	0
+206	60.5	0
+207	60.5	0
+208	60.5	0
+209	60.5	0
+210	60.5	0
+211	60.5	0
+212	60.5	0
+213	60.5	0
+214	60.5	0
+215	60.5	0
+216	60.5	0
+217	60.5	0
+218	60.5	0
+219	60.5	0
+220	60.5	0
+221	60.5	0
+222	60.5	0
+223	60.5	0
+224	60.5	0
+225	60.5	0
+226	60.5	0
+227	60.5	0
+228	60.5	0
+229	60.5	0
+230	60.5	0
+231	60.5	0
+232	60.5	0
+233	60.5	0
+234	60.5	0
+235	60.5	0
+236	60.5	0
+237	60.5	0
+238	60.5	0
+239	60.5	0
+240	60.5	0
+241	60.5	0
+242	60.5	0
+243	60.5	0
+244	60.5	0
+245	60.5	0
+246	60.5	0
+247	60.5	0
+248	60.5	0
+249	60.5	0
+250	60.5	0
+251	60.5	0
+252	60.5	0
+253	60.5	0
+254	60.5	0
+255	60.5	0
+256	60.5	0
+257	60.5	0
+258	60.5	0
+259	60.5	0
+260	60.5	0
+261	60.5	0
+262	60.5	0
+263	60.5	0
+264	60.5	0
+265	60.5	0
+266	60.5	0
+267	60.5	0
+268	60.5	0
+269	60.5	0
+270	60.5	0
+271	60.5	0
+272	60.5	0
+273	60.5	0
+274	60.5	0
+275	60.5	0
+276	60.5	0
+277	60.5	0
+278	60.5	0
+279	60.5	0
+280	60.5	0
+281	60.5	0
+282	60.5	0
+283	60.5	0
+284	60.5	0
+285	60.5	0
+286	60.5	0
+287	60.5	0
+288	60.5	0
+289	60.5	0
+290	60.5	0
+291	60.5	0
+292	60.5	0
+293	60.5	0
+294	60.5	0
+295	60.5	0
+296	60.5	0
+297	60.5	0
+298	60.5	0
+299	60.5	0
+300	60.5	0
+301	60.5	0
+302	60.5	0
+303	60.5	0
+304	60.5	0
+305	60.5	0
+306	60.5	0
+307	60.5	0
+308	60.5	0
+309	60.5	0
+310	60.5	0
+311	60.5	-4.833
+312	60.5	-4.7134
+313	60.5	-4.6682
+314	60.5	-10.34
+315	60.5	-14.012
+316	60.5	-13.781
+317	60.5	-8.132
+318	60.5	0
+319	60.5	0
+320	60.5	0
+321	60.5	0
+322	60.5	0
+323	60.5	0
+324	60.5	0
+325	60.5	0
+326	60.5	0
+327	60.5	0
+328	60.5	0
+329	60.5	0
+330	60.5	0
+331	60.5	0
+332	60.5	0
+333	60.5	0
+334	60.5	0
+335	60.5	0
+336	60.5	0
+337	60.5	0
+338	60.5	0
+339	60.5	0
+340	60.5	0
+341	60.5	0
+342	60.5	0
+343	60.5	0
+344	60.5	0
+345	60.5	0
+346	60.5	0
+347	60.5	0
+348	60.5	0
+349	60.5	0
+350	60.5	0
+351	60.5	0
+352	60.5	0
+353	60.5	0
+354	60.5	0
+355	60.5	0
+356	60.5	0
+357	60.5	0
+358	60.5	0
+359	60.5	0
+360	60.5	0
+0	61	0
+1	61	0
+2	61	0
+3	61	0
+4	61	0
+5	61	0
+6	61	0
+7	61	0
+8	61	0
+9	61	0
+10	61	0
+11	61	0
+12	61	0
+13	61	0
+14	61	0
+15	61	0
+16	61	0
+17	61	0
+18	61	0
+19	61	0
+20	61	0
+21	61	0
+22	61	0
+23	61	0
+24	61	0
+25	61	0
+26	61	0
+27	61	0
+28	61	0
+29	61	0
+30	61	0
+31	61	0
+32	61	0
+33	61	0
+34	61	0
+35	61	0
+36	61	0
+37	61	0
+38	61	0
+39	61	0
+40	61	0
+41	61	0
+42	61	0
+43	61	0
+44	61	0
+45	61	0
+46	61	0
+47	61	0
+48	61	0
+49	61	0
+50	61	0
+51	61	0
+52	61	0
+53	61	0
+54	61	0
+55	61	0
+56	61	0
+57	61	0
+58	61	0
+59	61	0
+60	61	0
+61	61	0
+62	61	0
+63	61	0
+64	61	0
+65	61	0
+66	61	0
+67	61	0
+68	61	0
+69	61	0
+70	61	0
+71	61	0
+72	61	0
+73	61	0
+74	61	0
+75	61	0
+76	61	0
+77	61	0
+78	61	0
+79	61	0
+80	61	0
+81	61	0
+82	61	0
+83	61	0
+84	61	0
+85	61	0
+86	61	0
+87	61	0
+88	61	0
+89	61	0
+90	61	0
+91	61	0
+92	61	0
+93	61	0
+94	61	0
+95	61	0
+96	61	0
+97	61	0
+98	61	0
+99	61	0
+100	61	0
+101	61	0
+102	61	0
+103	61	0
+104	61	0
+105	61	0
+106	61	0
+107	61	0
+108	61	0
+109	61	0
+110	61	0
+111	61	0
+112	61	0
+113	61	0
+114	61	0
+115	61	0
+116	61	0
+117	61	0
+118	61	0
+119	61	0
+120	61	0
+121	61	0
+122	61	0
+123	61	0
+124	61	0
+125	61	0
+126	61	0
+127	61	0
+128	61	0
+129	61	0
+130	61	0
+131	61	0
+132	61	0
+133	61	0
+134	61	0
+135	61	0
+136	61	0
+137	61	0
+138	61	0
+139	61	0
+140	61	0
+141	61	0
+142	61	0
+143	61	0
+144	61	0
+145	61	0
+146	61	0
+147	61	0
+148	61	0
+149	61	0
+150	61	0
+151	61	0
+152	61	0
+153	61	0
+154	61	0
+155	61	0
+156	61	0
+157	61	0
+158	61	0
+159	61	0
+160	61	0
+161	61	0
+162	61	0
+163	61	0
+164	61	0
+165	61	0
+166	61	0
+167	61	0
+168	61	0
+169	61	0
+170	61	0
+171	61	0
+172	61	0
+173	61	0
+174	61	0
+175	61	0
+176	61	0
+177	61	0
+178	61	0
+179	61	0
+180	61	0
+181	61	0
+182	61	0
+183	61	0
+184	61	0
+185	61	0
+186	61	0
+187	61	0
+188	61	0
+189	61	0
+190	61	0
+191	61	0
+192	61	0
+193	61	0
+194	61	0
+195	61	0
+196	61	0
+197	61	0
+198	61	0
+199	61	0
+200	61	0
+201	61	0
+202	61	0
+203	61	0
+204	61	0
+205	61	0
+206	61	0
+207	61	0
+208	61	0
+209	61	0
+210	61	0
+211	61	0
+212	61	0
+213	61	0
+214	61	0
+215	61	0
+216	61	0
+217	61	0
+218	61	0
+219	61	0
+220	61	0
+221	61	0
+222	61	0
+223	61	0
+224	61	0
+225	61	0
+226	61	0
+227	61	0
+228	61	0
+229	61	0
+230	61	0
+231	61	0
+232	61	0
+233	61	0
+234	61	0
+235	61	0
+236	61	0
+237	61	0
+238	61	0
+239	61	0
+240	61	0
+241	61	0
+242	61	0
+243	61	0
+244	61	0
+245	61	0
+246	61	0
+247	61	0
+248	61	0
+249	61	0
+250	61	0
+251	61	0
+252	61	0
+253	61	0
+254	61	0
+255	61	0
+256	61	0
+257	61	0
+258	61	0
+259	61	0
+260	61	0
+261	61	0
+262	61	0
+263	61	0
+264	61	0
+265	61	0
+266	61	0
+267	61	0
+268	61	0
+269	61	0
+270	61	0
+271	61	0
+272	61	0
+273	61	0
+274	61	0
+275	61	0
+276	61	0
+277	61	0
+278	61	0
+279	61	0
+280	61	0
+281	61	0
+282	61	0
+283	61	0
+284	61	0
+285	61	0
+286	61	0
+287	61	0
+288	61	0
+289	61	0
+290	61	0
+291	61	0
+292	61	0
+293	61	0
+294	61	0
+295	61	0
+296	61	0
+297	61	0
+298	61	0
+299	61	0
+300	61	0
+301	61	0
+302	61	0
+303	61	0
+304	61	0
+305	61	0
+306	61	0
+307	61	0
+308	61	0
+309	61	0
+310	61	-2.6153
+311	61	-10.14
+312	61	-10.728
+313	61	-14.909
+314	61	-15.599
+315	61	-15.916
+316	61	-15.7
+317	61	-12.454
+318	61	-7.9241
+319	61	0
+320	61	0
+321	61	0
+322	61	0
+323	61	0
+324	61	0
+325	61	0
+326	61	0
+327	61	0
+328	61	0
+329	61	0
+330	61	0
+331	61	0
+332	61	0
+333	61	0
+334	61	0
+335	61	0
+336	61	0
+337	61	0
+338	61	0
+339	61	0
+340	61	0
+341	61	0
+342	61	0
+343	61	0
+344	61	0
+345	61	0
+346	61	0
+347	61	0
+348	61	0
+349	61	0
+350	61	0
+351	61	0
+352	61	0
+353	61	0
+354	61	0
+355	61	0
+356	61	0
+357	61	0
+358	61	0
+359	61	0
+360	61	0
+0	61.5	0
+1	61.5	0
+2	61.5	0
+3	61.5	0
+4	61.5	0
+5	61.5	0
+6	61.5	0
+7	61.5	0
+8	61.5	0
+9	61.5	0
+10	61.5	0
+11	61.5	0
+12	61.5	0
+13	61.5	0
+14	61.5	0
+15	61.5	0
+16	61.5	0
+17	61.5	0
+18	61.5	0
+19	61.5	0
+20	61.5	0
+21	61.5	0
+22	61.5	0
+23	61.5	0
+24	61.5	0
+25	61.5	0
+26	61.5	0
+27	61.5	0
+28	61.5	0
+29	61.5	0
+30	61.5	0
+31	61.5	0
+32	61.5	0
+33	61.5	0
+34	61.5	0
+35	61.5	0
+36	61.5	0
+37	61.5	0
+38	61.5	0
+39	61.5	0
+40	61.5	0
+41	61.5	0
+42	61.5	0
+43	61.5	0
+44	61.5	0
+45	61.5	0
+46	61.5	0
+47	61.5	0
+48	61.5	0
+49	61.5	0
+50	61.5	0
+51	61.5	0
+52	61.5	0
+53	61.5	0
+54	61.5	0
+55	61.5	0
+56	61.5	0
+57	61.5	0
+58	61.5	0
+59	61.5	0
+60	61.5	0
+61	61.5	0
+62	61.5	0
+63	61.5	0
+64	61.5	0
+65	61.5	0
+66	61.5	0
+67	61.5	0
+68	61.5	0
+69	61.5	0
+70	61.5	0
+71	61.5	0
+72	61.5	0
+73	61.5	0
+74	61.5	0
+75	61.5	0
+76	61.5	0
+77	61.5	0
+78	61.5	0
+79	61.5	0
+80	61.5	0
+81	61.5	0
+82	61.5	0
+83	61.5	0
+84	61.5	0
+85	61.5	0
+86	61.5	0
+87	61.5	0
+88	61.5	0
+89	61.5	0
+90	61.5	0
+91	61.5	0
+92	61.5	0
+93	61.5	0
+94	61.5	0
+95	61.5	0
+96	61.5	0
+97	61.5	0
+98	61.5	0
+99	61.5	0
+100	61.5	0
+101	61.5	0
+102	61.5	0
+103	61.5	0
+104	61.5	0
+105	61.5	0
+106	61.5	0
+107	61.5	0
+108	61.5	0
+109	61.5	0
+110	61.5	0
+111	61.5	0
+112	61.5	0
+113	61.5	0
+114	61.5	0
+115	61.5	0
+116	61.5	0
+117	61.5	0
+118	61.5	0
+119	61.5	0
+120	61.5	0
+121	61.5	0
+122	61.5	0
+123	61.5	0
+124	61.5	0
+125	61.5	0
+126	61.5	0
+127	61.5	0
+128	61.5	0
+129	61.5	0
+130	61.5	0
+131	61.5	0
+132	61.5	0
+133	61.5	0
+134	61.5	0
+135	61.5	0
+136	61.5	0
+137	61.5	0
+138	61.5	0
+139	61.5	0
+140	61.5	0
+141	61.5	0
+142	61.5	0
+143	61.5	0
+144	61.5	0
+145	61.5	0
+146	61.5	0
+147	61.5	0
+148	61.5	0
+149	61.5	0
+150	61.5	0
+151	61.5	0
+152	61.5	0
+153	61.5	0
+154	61.5	0
+155	61.5	0
+156	61.5	0
+157	61.5	0
+158	61.5	0
+159	61.5	0
+160	61.5	0
+161	61.5	0
+162	61.5	0
+163	61.5	0
+164	61.5	0
+165	61.5	0
+166	61.5	0
+167	61.5	0
+168	61.5	0
+169	61.5	0
+170	61.5	0
+171	61.5	0
+172	61.5	0
+173	61.5	0
+174	61.5	0
+175	61.5	0
+176	61.5	0
+177	61.5	0
+178	61.5	0
+179	61.5	0
+180	61.5	0
+181	61.5	0
+182	61.5	0
+183	61.5	0
+184	61.5	0
+185	61.5	0
+186	61.5	0
+187	61.5	0
+188	61.5	0
+189	61.5	0
+190	61.5	0
+191	61.5	0
+192	61.5	0
+193	61.5	0
+194	61.5	0
+195	61.5	0
+196	61.5	0
+197	61.5	0
+198	61.5	0
+199	61.5	0
+200	61.5	0
+201	61.5	0
+202	61.5	0
+203	61.5	0
+204	61.5	0
+205	61.5	0
+206	61.5	0
+207	61.5	0
+208	61.5	0
+209	61.5	0
+210	61.5	0
+211	61.5	0
+212	61.5	0
+213	61.5	0
+214	61.5	0
+215	61.5	0
+216	61.5	0
+217	61.5	0
+218	61.5	0
+219	61.5	0
+220	61.5	0
+221	61.5	0
+222	61.5	0
+223	61.5	0
+224	61.5	0
+225	61.5	0
+226	61.5	0
+227	61.5	0
+228	61.5	0
+229	61.5	0
+230	61.5	0
+231	61.5	0
+232	61.5	0
+233	61.5	0
+234	61.5	0
+235	61.5	0
+236	61.5	0
+237	61.5	0
+238	61.5	0
+239	61.5	0
+240	61.5	0
+241	61.5	0
+242	61.5	0
+243	61.5	0
+244	61.5	0
+245	61.5	0
+246	61.5	0
+247	61.5	0
+248	61.5	0
+249	61.5	0
+250	61.5	0
+251	61.5	0
+252	61.5	0
+253	61.5	0
+254	61.5	0
+255	61.5	0
+256	61.5	0
+257	61.5	0
+258	61.5	0
+259	61.5	0
+260	61.5	0
+261	61.5	0
+262	61.5	0
+263	61.5	0
+264	61.5	0
+265	61.5	0
+266	61.5	0
+267	61.5	0
+268	61.5	0
+269	61.5	0
+270	61.5	0
+271	61.5	0
+272	61.5	0
+273	61.5	0
+274	61.5	0
+275	61.5	0
+276	61.5	0
+277	61.5	0
+278	61.5	0
+279	61.5	0
+280	61.5	0
+281	61.5	0
+282	61.5	0
+283	61.5	0
+284	61.5	0
+285	61.5	0
+286	61.5	0
+287	61.5	0
+288	61.5	0
+289	61.5	0
+290	61.5	0
+291	61.5	0
+292	61.5	0
+293	61.5	0
+294	61.5	0
+295	61.5	0
+296	61.5	0
+297	61.5	0
+298	61.5	0
+299	61.5	0
+300	61.5	0
+301	61.5	0
+302	61.5	0
+303	61.5	0
+304	61.5	0
+305	61.5	0
+306	61.5	0
+307	61.5	0
+308	61.5	0
+309	61.5	0
+310	61.5	-7.5842
+311	61.5	-13.7
+312	61.5	-14.934
+313	61.5	-16.127
+314	61.5	-17.232
+315	61.5	-17.719
+316	61.5	-17.46
+317	61.5	-16.53
+318	61.5	-11.787
+319	61.5	0
+320	61.5	0
+321	61.5	0
+322	61.5	0
+323	61.5	0
+324	61.5	0
+325	61.5	0
+326	61.5	0
+327	61.5	0
+328	61.5	0
+329	61.5	0
+330	61.5	0
+331	61.5	0
+332	61.5	0
+333	61.5	0
+334	61.5	0
+335	61.5	0
+336	61.5	0
+337	61.5	0
+338	61.5	0
+339	61.5	0
+340	61.5	0
+341	61.5	0
+342	61.5	0
+343	61.5	0
+344	61.5	0
+345	61.5	0
+346	61.5	0
+347	61.5	0
+348	61.5	0
+349	61.5	0
+350	61.5	0
+351	61.5	0
+352	61.5	0
+353	61.5	0
+354	61.5	0
+355	61.5	0
+356	61.5	0
+357	61.5	0
+358	61.5	0
+359	61.5	0
+360	61.5	0
+0	62	0
+1	62	0
+2	62	0
+3	62	0
+4	62	0
+5	62	0
+6	62	0
+7	62	0
+8	62	0
+9	62	0
+10	62	0
+11	62	0
+12	62	0
+13	62	0
+14	62	0
+15	62	0
+16	62	0
+17	62	0
+18	62	0
+19	62	0
+20	62	0
+21	62	0
+22	62	0
+23	62	0
+24	62	0
+25	62	0
+26	62	0
+27	62	0
+28	62	0
+29	62	0
+30	62	0
+31	62	0
+32	62	0
+33	62	0
+34	62	0
+35	62	0
+36	62	0
+37	62	0
+38	62	0
+39	62	0
+40	62	0
+41	62	0
+42	62	0
+43	62	0
+44	62	0
+45	62	0
+46	62	0
+47	62	0
+48	62	0
+49	62	0
+50	62	0
+51	62	0
+52	62	0
+53	62	0
+54	62	0
+55	62	0
+56	62	0
+57	62	0
+58	62	0
+59	62	0
+60	62	0
+61	62	0
+62	62	0
+63	62	0
+64	62	0
+65	62	0
+66	62	0
+67	62	0
+68	62	0
+69	62	0
+70	62	0
+71	62	0
+72	62	0
+73	62	0
+74	62	0
+75	62	0
+76	62	0
+77	62	0
+78	62	0
+79	62	0
+80	62	0
+81	62	0
+82	62	0
+83	62	0
+84	62	0
+85	62	0
+86	62	0
+87	62	0
+88	62	0
+89	62	0
+90	62	0
+91	62	0
+92	62	0
+93	62	0
+94	62	0
+95	62	0
+96	62	0
+97	62	0
+98	62	0
+99	62	0
+100	62	0
+101	62	0
+102	62	0
+103	62	0
+104	62	0
+105	62	0
+106	62	0
+107	62	0
+108	62	0
+109	62	0
+110	62	0
+111	62	0
+112	62	0
+113	62	0
+114	62	0
+115	62	0
+116	62	0
+117	62	0
+118	62	0
+119	62	0
+120	62	0
+121	62	0
+122	62	0
+123	62	0
+124	62	0
+125	62	0
+126	62	0
+127	62	0
+128	62	0
+129	62	0
+130	62	0
+131	62	0
+132	62	0
+133	62	0
+134	62	0
+135	62	0
+136	62	0
+137	62	0
+138	62	0
+139	62	0
+140	62	0
+141	62	0
+142	62	0
+143	62	0
+144	62	0
+145	62	0
+146	62	0
+147	62	0
+148	62	0
+149	62	0
+150	62	0
+151	62	0
+152	62	0
+153	62	0
+154	62	0
+155	62	0
+156	62	0
+157	62	0
+158	62	0
+159	62	0
+160	62	0
+161	62	0
+162	62	0
+163	62	0
+164	62	0
+165	62	0
+166	62	0
+167	62	0
+168	62	0
+169	62	0
+170	62	0
+171	62	0
+172	62	0
+173	62	0
+174	62	0
+175	62	0
+176	62	0
+177	62	0
+178	62	0
+179	62	0
+180	62	0
+181	62	0
+182	62	0
+183	62	0
+184	62	0
+185	62	0
+186	62	0
+187	62	0
+188	62	0
+189	62	0
+190	62	0
+191	62	0
+192	62	0
+193	62	0
+194	62	0
+195	62	0
+196	62	0
+197	62	0
+198	62	0
+199	62	0
+200	62	0
+201	62	0
+202	62	0
+203	62	0
+204	62	0
+205	62	0
+206	62	0
+207	62	0
+208	62	0
+209	62	0
+210	62	0
+211	62	0
+212	62	0
+213	62	0
+214	62	0
+215	62	0
+216	62	0
+217	62	0
+218	62	0
+219	62	0
+220	62	0
+221	62	0
+222	62	0
+223	62	0
+224	62	0
+225	62	0
+226	62	0
+227	62	0
+228	62	0
+229	62	0
+230	62	0
+231	62	0
+232	62	0
+233	62	0
+234	62	0
+235	62	0
+236	62	0
+237	62	0
+238	62	0
+239	62	0
+240	62	0
+241	62	0
+242	62	0
+243	62	0
+244	62	0
+245	62	0
+246	62	0
+247	62	0
+248	62	0
+249	62	0
+250	62	0
+251	62	0
+252	62	0
+253	62	0
+254	62	0
+255	62	0
+256	62	0
+257	62	0
+258	62	0
+259	62	0
+260	62	0
+261	62	0
+262	62	0
+263	62	0
+264	62	0
+265	62	0
+266	62	0
+267	62	0
+268	62	0
+269	62	0
+270	62	0
+271	62	0
+272	62	0
+273	62	0
+274	62	0
+275	62	0
+276	62	0
+277	62	0
+278	62	0
+279	62	0
+280	62	0
+281	62	0
+282	62	0
+283	62	0
+284	62	0
+285	62	0
+286	62	0
+287	62	0
+288	62	0
+289	62	0
+290	62	0
+291	62	0
+292	62	0
+293	62	0
+294	62	0
+295	62	0
+296	62	0
+297	62	0
+298	62	0
+299	62	0
+300	62	0
+301	62	0
+302	62	0
+303	62	0
+304	62	0
+305	62	0
+306	62	0
+307	62	0
+308	62	0
+309	62	-1.778
+310	62	-11.666
+311	62	-14.942
+312	62	-16.172
+313	62	-17.349
+314	62	-18.564
+315	62	-19.254
+316	62	-18.911
+317	62	-17.988
+318	62	-16.694
+319	62	0
+320	62	0
+321	62	0
+322	62	0
+323	62	0
+324	62	0
+325	62	0
+326	62	0
+327	62	0
+328	62	0
+329	62	0
+330	62	0
+331	62	0
+332	62	0
+333	62	0
+334	62	0
+335	62	0
+336	62	0
+337	62	0
+338	62	0
+339	62	0
+340	62	0
+341	62	0
+342	62	0
+343	62	0
+344	62	0
+345	62	0
+346	62	0
+347	62	0
+348	62	0
+349	62	0
+350	62	0
+351	62	0
+352	62	0
+353	62	0
+354	62	0
+355	62	0
+356	62	0
+357	62	0
+358	62	0
+359	62	0
+360	62	0
+0	62.5	0
+1	62.5	0
+2	62.5	0
+3	62.5	0
+4	62.5	0
+5	62.5	0
+6	62.5	0
+7	62.5	0
+8	62.5	0
+9	62.5	0
+10	62.5	0
+11	62.5	0
+12	62.5	0
+13	62.5	0
+14	62.5	0
+15	62.5	0
+16	62.5	0
+17	62.5	0
+18	62.5	0
+19	62.5	0
+20	62.5	0
+21	62.5	0
+22	62.5	0
+23	62.5	0
+24	62.5	0
+25	62.5	0
+26	62.5	0
+27	62.5	0
+28	62.5	0
+29	62.5	0
+30	62.5	0
+31	62.5	0
+32	62.5	0
+33	62.5	0
+34	62.5	0
+35	62.5	0
+36	62.5	0
+37	62.5	0
+38	62.5	0
+39	62.5	0
+40	62.5	0
+41	62.5	0
+42	62.5	0
+43	62.5	0
+44	62.5	0
+45	62.5	0
+46	62.5	0
+47	62.5	0
+48	62.5	0
+49	62.5	0
+50	62.5	0
+51	62.5	0
+52	62.5	0
+53	62.5	0
+54	62.5	0
+55	62.5	0
+56	62.5	0
+57	62.5	0
+58	62.5	0
+59	62.5	0
+60	62.5	0
+61	62.5	0
+62	62.5	0
+63	62.5	0
+64	62.5	0
+65	62.5	0
+66	62.5	0
+67	62.5	0
+68	62.5	0
+69	62.5	0
+70	62.5	0
+71	62.5	0
+72	62.5	0
+73	62.5	0
+74	62.5	0
+75	62.5	0
+76	62.5	0
+77	62.5	0
+78	62.5	0
+79	62.5	0
+80	62.5	0
+81	62.5	0
+82	62.5	0
+83	62.5	0
+84	62.5	0
+85	62.5	0
+86	62.5	0
+87	62.5	0
+88	62.5	0
+89	62.5	0
+90	62.5	0
+91	62.5	0
+92	62.5	0
+93	62.5	0
+94	62.5	0
+95	62.5	0
+96	62.5	0
+97	62.5	0
+98	62.5	0
+99	62.5	0
+100	62.5	0
+101	62.5	0
+102	62.5	0
+103	62.5	0
+104	62.5	0
+105	62.5	0
+106	62.5	0
+107	62.5	0
+108	62.5	0
+109	62.5	0
+110	62.5	0
+111	62.5	0
+112	62.5	0
+113	62.5	0
+114	62.5	0
+115	62.5	0
+116	62.5	0
+117	62.5	0
+118	62.5	0
+119	62.5	0
+120	62.5	0
+121	62.5	0
+122	62.5	0
+123	62.5	0
+124	62.5	0
+125	62.5	0
+126	62.5	0
+127	62.5	0
+128	62.5	0
+129	62.5	0
+130	62.5	0
+131	62.5	0
+132	62.5	0
+133	62.5	0
+134	62.5	0
+135	62.5	0
+136	62.5	0
+137	62.5	0
+138	62.5	0
+139	62.5	0
+140	62.5	0
+141	62.5	0
+142	62.5	0
+143	62.5	0
+144	62.5	0
+145	62.5	0
+146	62.5	0
+147	62.5	0
+148	62.5	0
+149	62.5	0
+150	62.5	0
+151	62.5	0
+152	62.5	0
+153	62.5	0
+154	62.5	0
+155	62.5	0
+156	62.5	0
+157	62.5	0
+158	62.5	0
+159	62.5	0
+160	62.5	0
+161	62.5	0
+162	62.5	0
+163	62.5	0
+164	62.5	0
+165	62.5	0
+166	62.5	0
+167	62.5	0
+168	62.5	0
+169	62.5	0
+170	62.5	0
+171	62.5	0
+172	62.5	0
+173	62.5	0
+174	62.5	0
+175	62.5	0
+176	62.5	0
+177	62.5	0
+178	62.5	0
+179	62.5	0
+180	62.5	0
+181	62.5	0
+182	62.5	0
+183	62.5	0
+184	62.5	0
+185	62.5	0
+186	62.5	0
+187	62.5	0
+188	62.5	0
+189	62.5	0
+190	62.5	0
+191	62.5	0
+192	62.5	0
+193	62.5	0
+194	62.5	0
+195	62.5	0
+196	62.5	0
+197	62.5	0
+198	62.5	0
+199	62.5	0
+200	62.5	0
+201	62.5	0
+202	62.5	0
+203	62.5	0
+204	62.5	0
+205	62.5	0
+206	62.5	0
+207	62.5	0
+208	62.5	0
+209	62.5	0
+210	62.5	0
+211	62.5	0
+212	62.5	0
+213	62.5	0
+214	62.5	0
+215	62.5	0
+216	62.5	0
+217	62.5	0
+218	62.5	0
+219	62.5	0
+220	62.5	0
+221	62.5	0
+222	62.5	0
+223	62.5	0
+224	62.5	0
+225	62.5	0
+226	62.5	0
+227	62.5	0
+228	62.5	0
+229	62.5	0
+230	62.5	0
+231	62.5	0
+232	62.5	0
+233	62.5	0
+234	62.5	0
+235	62.5	0
+236	62.5	0
+237	62.5	0
+238	62.5	0
+239	62.5	0
+240	62.5	0
+241	62.5	0
+242	62.5	0
+243	62.5	0
+244	62.5	0
+245	62.5	0
+246	62.5	0
+247	62.5	0
+248	62.5	0
+249	62.5	0
+250	62.5	0
+251	62.5	0
+252	62.5	0
+253	62.5	0
+254	62.5	0
+255	62.5	0
+256	62.5	0
+257	62.5	0
+258	62.5	0
+259	62.5	0
+260	62.5	0
+261	62.5	0
+262	62.5	0
+263	62.5	0
+264	62.5	0
+265	62.5	0
+266	62.5	0
+267	62.5	0
+268	62.5	0
+269	62.5	0
+270	62.5	0
+271	62.5	0
+272	62.5	0
+273	62.5	0
+274	62.5	0
+275	62.5	0
+276	62.5	0
+277	62.5	0
+278	62.5	0
+279	62.5	0
+280	62.5	0
+281	62.5	0
+282	62.5	0
+283	62.5	0
+284	62.5	0
+285	62.5	0
+286	62.5	0
+287	62.5	0
+288	62.5	0
+289	62.5	0
+290	62.5	0
+291	62.5	0
+292	62.5	0
+293	62.5	0
+294	62.5	0
+295	62.5	0
+296	62.5	0
+297	62.5	0
+298	62.5	0
+299	62.5	0
+300	62.5	0
+301	62.5	0
+302	62.5	0
+303	62.5	0
+304	62.5	0
+305	62.5	0
+306	62.5	0
+307	62.5	0
+308	62.5	0
+309	62.5	-4.1807
+310	62.5	-14.376
+311	62.5	-16.171
+312	62.5	-17.402
+313	62.5	-18.572
+314	62.5	-19.682
+315	62.5	-20.201
+316	62.5	-20.069
+317	62.5	-19.415
+318	62.5	-18.446
+319	62.5	-3.4798
+320	62.5	0
+321	62.5	0
+322	62.5	0
+323	62.5	0
+324	62.5	0
+325	62.5	0
+326	62.5	0
+327	62.5	0
+328	62.5	0
+329	62.5	0
+330	62.5	0
+331	62.5	0
+332	62.5	0
+333	62.5	0
+334	62.5	0
+335	62.5	0
+336	62.5	0
+337	62.5	0
+338	62.5	0
+339	62.5	0
+340	62.5	0
+341	62.5	0
+342	62.5	0
+343	62.5	0
+344	62.5	0
+345	62.5	0
+346	62.5	0
+347	62.5	0
+348	62.5	0
+349	62.5	0
+350	62.5	0
+351	62.5	0
+352	62.5	0
+353	62.5	0
+354	62.5	0
+355	62.5	0
+356	62.5	0
+357	62.5	0
+358	62.5	0
+359	62.5	0
+360	62.5	0
+0	63	0
+1	63	0
+2	63	0
+3	63	0
+4	63	0
+5	63	0
+6	63	0
+7	63	0
+8	63	0
+9	63	0
+10	63	0
+11	63	0
+12	63	0
+13	63	0
+14	63	0
+15	63	0
+16	63	0
+17	63	0
+18	63	0
+19	63	0
+20	63	0
+21	63	0
+22	63	0
+23	63	0
+24	63	0
+25	63	0
+26	63	0
+27	63	0
+28	63	0
+29	63	0
+30	63	0
+31	63	0
+32	63	0
+33	63	0
+34	63	0
+35	63	0
+36	63	0
+37	63	0
+38	63	0
+39	63	0
+40	63	0
+41	63	0
+42	63	0
+43	63	0
+44	63	0
+45	63	0
+46	63	0
+47	63	0
+48	63	0
+49	63	0
+50	63	0
+51	63	0
+52	63	0
+53	63	0
+54	63	0
+55	63	0
+56	63	0
+57	63	0
+58	63	0
+59	63	0
+60	63	0
+61	63	0
+62	63	0
+63	63	0
+64	63	0
+65	63	0
+66	63	0
+67	63	0
+68	63	0
+69	63	0
+70	63	0
+71	63	0
+72	63	0
+73	63	0
+74	63	0
+75	63	0
+76	63	0
+77	63	0
+78	63	0
+79	63	0
+80	63	0
+81	63	0
+82	63	0
+83	63	0
+84	63	0
+85	63	0
+86	63	0
+87	63	0
+88	63	0
+89	63	0
+90	63	0
+91	63	0
+92	63	0
+93	63	0
+94	63	0
+95	63	0
+96	63	0
+97	63	0
+98	63	0
+99	63	0
+100	63	0
+101	63	0
+102	63	0
+103	63	0
+104	63	0
+105	63	0
+106	63	0
+107	63	0
+108	63	0
+109	63	0
+110	63	0
+111	63	0
+112	63	0
+113	63	0
+114	63	0
+115	63	0
+116	63	0
+117	63	0
+118	63	0
+119	63	0
+120	63	0
+121	63	0
+122	63	0
+123	63	0
+124	63	0
+125	63	0
+126	63	0
+127	63	0
+128	63	0
+129	63	0
+130	63	0
+131	63	0
+132	63	0
+133	63	0
+134	63	0
+135	63	0
+136	63	0
+137	63	0
+138	63	0
+139	63	0
+140	63	0
+141	63	0
+142	63	0
+143	63	0
+144	63	0
+145	63	0
+146	63	0
+147	63	0
+148	63	0
+149	63	0
+150	63	0
+151	63	0
+152	63	0
+153	63	0
+154	63	0
+155	63	0
+156	63	0
+157	63	0
+158	63	0
+159	63	0
+160	63	0
+161	63	0
+162	63	0
+163	63	0
+164	63	0
+165	63	0
+166	63	0
+167	63	0
+168	63	0
+169	63	0
+170	63	0
+171	63	0
+172	63	0
+173	63	0
+174	63	0
+175	63	0
+176	63	0
+177	63	0
+178	63	0
+179	63	0
+180	63	0
+181	63	0
+182	63	0
+183	63	0
+184	63	0
+185	63	0
+186	63	0
+187	63	0
+188	63	0
+189	63	0
+190	63	0
+191	63	0
+192	63	0
+193	63	0
+194	63	0
+195	63	0
+196	63	0
+197	63	0
+198	63	0
+199	63	0
+200	63	0
+201	63	0
+202	63	0
+203	63	0
+204	63	0
+205	63	0
+206	63	0
+207	63	0
+208	63	0
+209	63	0
+210	63	0
+211	63	0
+212	63	0
+213	63	0
+214	63	0
+215	63	0
+216	63	0
+217	63	0
+218	63	0
+219	63	0
+220	63	0
+221	63	0
+222	63	0
+223	63	0
+224	63	0
+225	63	0
+226	63	0
+227	63	0
+228	63	0
+229	63	0
+230	63	0
+231	63	0
+232	63	0
+233	63	0
+234	63	0
+235	63	0
+236	63	0
+237	63	0
+238	63	0
+239	63	0
+240	63	0
+241	63	0
+242	63	0
+243	63	0
+244	63	0
+245	63	0
+246	63	0
+247	63	0
+248	63	0
+249	63	0
+250	63	0
+251	63	0
+252	63	0
+253	63	0
+254	63	0
+255	63	0
+256	63	0
+257	63	0
+258	63	0
+259	63	0
+260	63	0
+261	63	0
+262	63	0
+263	63	0
+264	63	0
+265	63	0
+266	63	0
+267	63	0
+268	63	0
+269	63	0
+270	63	0
+271	63	0
+272	63	0
+273	63	0
+274	63	0
+275	63	0
+276	63	0
+277	63	0
+278	63	0
+279	63	0
+280	63	0
+281	63	0
+282	63	0
+283	63	0
+284	63	0
+285	63	0
+286	63	0
+287	63	0
+288	63	0
+289	63	0
+290	63	0
+291	63	0
+292	63	0
+293	63	0
+294	63	0
+295	63	0
+296	63	0
+297	63	0
+298	63	0
+299	63	0
+300	63	0
+301	63	0
+302	63	0
+303	63	0
+304	63	0
+305	63	0
+306	63	0
+307	63	0
+308	63	0
+309	63	-7.6347
+310	63	-15.19
+311	63	-16.957
+312	63	-18.486
+313	63	-19.773
+314	63	-20.423
+315	63	-20.841
+316	63	-21.005
+317	63	-20.675
+318	63	-19.804
+319	63	-9.9161
+320	63	0
+321	63	0
+322	63	0
+323	63	0
+324	63	0
+325	63	0
+326	63	0
+327	63	0
+328	63	0
+329	63	0
+330	63	0
+331	63	0
+332	63	0
+333	63	0
+334	63	0
+335	63	0
+336	63	0
+337	63	0
+338	63	0
+339	63	0
+340	63	0
+341	63	0
+342	63	0
+343	63	0
+344	63	0
+345	63	0
+346	63	0
+347	63	0
+348	63	0
+349	63	0
+350	63	0
+351	63	0
+352	63	0
+353	63	0
+354	63	0
+355	63	0
+356	63	0
+357	63	0
+358	63	0
+359	63	0
+360	63	0
+0	63.5	0
+1	63.5	0
+2	63.5	0
+3	63.5	0
+4	63.5	0
+5	63.5	0
+6	63.5	0
+7	63.5	0
+8	63.5	0
+9	63.5	0
+10	63.5	0
+11	63.5	0
+12	63.5	0
+13	63.5	0
+14	63.5	0
+15	63.5	0
+16	63.5	0
+17	63.5	0
+18	63.5	0
+19	63.5	0
+20	63.5	0
+21	63.5	0
+22	63.5	0
+23	63.5	0
+24	63.5	0
+25	63.5	0
+26	63.5	0
+27	63.5	0
+28	63.5	0
+29	63.5	0
+30	63.5	0
+31	63.5	0
+32	63.5	0
+33	63.5	0
+34	63.5	0
+35	63.5	0
+36	63.5	0
+37	63.5	0
+38	63.5	0
+39	63.5	0
+40	63.5	0
+41	63.5	0
+42	63.5	0
+43	63.5	0
+44	63.5	0
+45	63.5	0
+46	63.5	0
+47	63.5	0
+48	63.5	0
+49	63.5	0
+50	63.5	0
+51	63.5	0
+52	63.5	0
+53	63.5	0
+54	63.5	0
+55	63.5	0
+56	63.5	0
+57	63.5	0
+58	63.5	0
+59	63.5	0
+60	63.5	0
+61	63.5	0
+62	63.5	0
+63	63.5	0
+64	63.5	0
+65	63.5	0
+66	63.5	0
+67	63.5	0
+68	63.5	0
+69	63.5	0
+70	63.5	0
+71	63.5	0
+72	63.5	0
+73	63.5	0
+74	63.5	0
+75	63.5	0
+76	63.5	0
+77	63.5	0
+78	63.5	0
+79	63.5	0
+80	63.5	0
+81	63.5	0
+82	63.5	0
+83	63.5	0
+84	63.5	0
+85	63.5	0
+86	63.5	0
+87	63.5	0
+88	63.5	0
+89	63.5	0
+90	63.5	0
+91	63.5	0
+92	63.5	0
+93	63.5	0
+94	63.5	0
+95	63.5	0
+96	63.5	0
+97	63.5	0
+98	63.5	0
+99	63.5	0
+100	63.5	0
+101	63.5	0
+102	63.5	0
+103	63.5	0
+104	63.5	0
+105	63.5	0
+106	63.5	0
+107	63.5	0
+108	63.5	0
+109	63.5	0
+110	63.5	0
+111	63.5	0
+112	63.5	0
+113	63.5	0
+114	63.5	0
+115	63.5	0
+116	63.5	0
+117	63.5	0
+118	63.5	0
+119	63.5	0
+120	63.5	0
+121	63.5	0
+122	63.5	0
+123	63.5	0
+124	63.5	0
+125	63.5	0
+126	63.5	0
+127	63.5	0
+128	63.5	0
+129	63.5	0
+130	63.5	0
+131	63.5	0
+132	63.5	0
+133	63.5	0
+134	63.5	0
+135	63.5	0
+136	63.5	0
+137	63.5	0
+138	63.5	0
+139	63.5	0
+140	63.5	0
+141	63.5	0
+142	63.5	0
+143	63.5	0
+144	63.5	0
+145	63.5	0
+146	63.5	0
+147	63.5	0
+148	63.5	0
+149	63.5	0
+150	63.5	0
+151	63.5	0
+152	63.5	0
+153	63.5	0
+154	63.5	0
+155	63.5	0
+156	63.5	0
+157	63.5	0
+158	63.5	0
+159	63.5	0
+160	63.5	0
+161	63.5	0
+162	63.5	0
+163	63.5	0
+164	63.5	0
+165	63.5	0
+166	63.5	0
+167	63.5	0
+168	63.5	0
+169	63.5	0
+170	63.5	0
+171	63.5	0
+172	63.5	0
+173	63.5	0
+174	63.5	0
+175	63.5	0
+176	63.5	0
+177	63.5	0
+178	63.5	0
+179	63.5	0
+180	63.5	0
+181	63.5	0
+182	63.5	0
+183	63.5	0
+184	63.5	0
+185	63.5	0
+186	63.5	0
+187	63.5	0
+188	63.5	0
+189	63.5	0
+190	63.5	0
+191	63.5	0
+192	63.5	0
+193	63.5	0
+194	63.5	0
+195	63.5	0
+196	63.5	0
+197	63.5	0
+198	63.5	0
+199	63.5	0
+200	63.5	0
+201	63.5	0
+202	63.5	0
+203	63.5	0
+204	63.5	0
+205	63.5	0
+206	63.5	0
+207	63.5	0
+208	63.5	0
+209	63.5	0
+210	63.5	0
+211	63.5	0
+212	63.5	0
+213	63.5	0
+214	63.5	0
+215	63.5	0
+216	63.5	0
+217	63.5	0
+218	63.5	0
+219	63.5	0
+220	63.5	0
+221	63.5	0
+222	63.5	0
+223	63.5	0
+224	63.5	0
+225	63.5	0
+226	63.5	0
+227	63.5	0
+228	63.5	0
+229	63.5	0
+230	63.5	0
+231	63.5	0
+232	63.5	0
+233	63.5	0
+234	63.5	0
+235	63.5	0
+236	63.5	0
+237	63.5	0
+238	63.5	0
+239	63.5	0
+240	63.5	0
+241	63.5	0
+242	63.5	0
+243	63.5	0
+244	63.5	0
+245	63.5	0
+246	63.5	0
+247	63.5	0
+248	63.5	0
+249	63.5	0
+250	63.5	0
+251	63.5	0
+252	63.5	0
+253	63.5	0
+254	63.5	0
+255	63.5	0
+256	63.5	0
+257	63.5	0
+258	63.5	0
+259	63.5	0
+260	63.5	0
+261	63.5	0
+262	63.5	0
+263	63.5	0
+264	63.5	0
+265	63.5	0
+266	63.5	0
+267	63.5	0
+268	63.5	0
+269	63.5	0
+270	63.5	0
+271	63.5	0
+272	63.5	0
+273	63.5	0
+274	63.5	0
+275	63.5	0
+276	63.5	0
+277	63.5	0
+278	63.5	0
+279	63.5	0
+280	63.5	0
+281	63.5	0
+282	63.5	0
+283	63.5	0
+284	63.5	0
+285	63.5	0
+286	63.5	0
+287	63.5	0
+288	63.5	0
+289	63.5	0
+290	63.5	0
+291	63.5	0
+292	63.5	0
+293	63.5	0
+294	63.5	0
+295	63.5	0
+296	63.5	0
+297	63.5	0
+298	63.5	0
+299	63.5	0
+300	63.5	0
+301	63.5	0
+302	63.5	0
+303	63.5	0
+304	63.5	0
+305	63.5	0
+306	63.5	0
+307	63.5	0
+308	63.5	-2.8145
+309	63.5	-11.811
+310	63.5	-15.934
+311	63.5	-17.7
+312	63.5	-19.387
+313	63.5	-20.388
+314	63.5	-20.984
+315	63.5	-21.39
+316	63.5	-21.566
+317	63.5	-21.714
+318	63.5	-20.843
+319	63.5	-16.762
+320	63.5	0
+321	63.5	0
+322	63.5	0
+323	63.5	0
+324	63.5	0
+325	63.5	0
+326	63.5	0
+327	63.5	0
+328	63.5	0
+329	63.5	0
+330	63.5	0
+331	63.5	0
+332	63.5	0
+333	63.5	0
+334	63.5	0
+335	63.5	0
+336	63.5	0
+337	63.5	0
+338	63.5	0
+339	63.5	0
+340	63.5	0
+341	63.5	0
+342	63.5	0
+343	63.5	0
+344	63.5	0
+345	63.5	0
+346	63.5	0
+347	63.5	0
+348	63.5	0
+349	63.5	0
+350	63.5	0
+351	63.5	0
+352	63.5	0
+353	63.5	0
+354	63.5	0
+355	63.5	0
+356	63.5	0
+357	63.5	0
+358	63.5	0
+359	63.5	0
+360	63.5	0
+0	64	0
+1	64	0
+2	64	0
+3	64	0
+4	64	0
+5	64	0
+6	64	0
+7	64	0
+8	64	0
+9	64	0
+10	64	0
+11	64	0
+12	64	0
+13	64	0
+14	64	0
+15	64	0
+16	64	0
+17	64	0
+18	64	0
+19	64	0
+20	64	0
+21	64	0
+22	64	0
+23	64	0
+24	64	0
+25	64	0
+26	64	0
+27	64	0
+28	64	0
+29	64	0
+30	64	0
+31	64	0
+32	64	0
+33	64	0
+34	64	0
+35	64	0
+36	64	0
+37	64	0
+38	64	0
+39	64	0
+40	64	0
+41	64	0
+42	64	0
+43	64	0
+44	64	0
+45	64	0
+46	64	0
+47	64	0
+48	64	0
+49	64	0
+50	64	0
+51	64	0
+52	64	0
+53	64	0
+54	64	0
+55	64	0
+56	64	0
+57	64	0
+58	64	0
+59	64	0
+60	64	0
+61	64	0
+62	64	0
+63	64	0
+64	64	0
+65	64	0
+66	64	0
+67	64	0
+68	64	0
+69	64	0
+70	64	0
+71	64	0
+72	64	0
+73	64	0
+74	64	0
+75	64	0
+76	64	0
+77	64	0
+78	64	0
+79	64	0
+80	64	0
+81	64	0
+82	64	0
+83	64	0
+84	64	0
+85	64	0
+86	64	0
+87	64	0
+88	64	0
+89	64	0
+90	64	0
+91	64	0
+92	64	0
+93	64	0
+94	64	0
+95	64	0
+96	64	0
+97	64	0
+98	64	0
+99	64	0
+100	64	0
+101	64	0
+102	64	0
+103	64	0
+104	64	0
+105	64	0
+106	64	0
+107	64	0
+108	64	0
+109	64	0
+110	64	0
+111	64	0
+112	64	0
+113	64	0
+114	64	0
+115	64	0
+116	64	0
+117	64	0
+118	64	0
+119	64	0
+120	64	0
+121	64	0
+122	64	0
+123	64	0
+124	64	0
+125	64	0
+126	64	0
+127	64	0
+128	64	0
+129	64	0
+130	64	0
+131	64	0
+132	64	0
+133	64	0
+134	64	0
+135	64	0
+136	64	0
+137	64	0
+138	64	0
+139	64	0
+140	64	0
+141	64	0
+142	64	0
+143	64	0
+144	64	0
+145	64	0
+146	64	0
+147	64	0
+148	64	0
+149	64	0
+150	64	0
+151	64	0
+152	64	0
+153	64	0
+154	64	0
+155	64	0
+156	64	0
+157	64	0
+158	64	0
+159	64	0
+160	64	0
+161	64	0
+162	64	0
+163	64	0
+164	64	0
+165	64	0
+166	64	0
+167	64	0
+168	64	0
+169	64	0
+170	64	0
+171	64	0
+172	64	0
+173	64	0
+174	64	0
+175	64	0
+176	64	0
+177	64	0
+178	64	0
+179	64	0
+180	64	0
+181	64	0
+182	64	0
+183	64	0
+184	64	0
+185	64	0
+186	64	0
+187	64	0
+188	64	0
+189	64	0
+190	64	0
+191	64	0
+192	64	0
+193	64	0
+194	64	0
+195	64	0
+196	64	0
+197	64	0
+198	64	0
+199	64	0
+200	64	0
+201	64	0
+202	64	0
+203	64	0
+204	64	0
+205	64	0
+206	64	0
+207	64	0
+208	64	0
+209	64	0
+210	64	0
+211	64	0
+212	64	0
+213	64	0
+214	64	0
+215	64	0
+216	64	0
+217	64	0
+218	64	0
+219	64	0
+220	64	0
+221	64	0
+222	64	0
+223	64	0
+224	64	0
+225	64	0
+226	64	0
+227	64	0
+228	64	0
+229	64	0
+230	64	0
+231	64	0
+232	64	0
+233	64	0
+234	64	0
+235	64	0
+236	64	0
+237	64	0
+238	64	0
+239	64	0
+240	64	0
+241	64	0
+242	64	0
+243	64	0
+244	64	0
+245	64	0
+246	64	0
+247	64	0
+248	64	0
+249	64	0
+250	64	0
+251	64	0
+252	64	0
+253	64	0
+254	64	0
+255	64	0
+256	64	0
+257	64	0
+258	64	0
+259	64	0
+260	64	0
+261	64	0
+262	64	0
+263	64	0
+264	64	0
+265	64	0
+266	64	0
+267	64	0
+268	64	0
+269	64	0
+270	64	0
+271	64	0
+272	64	0
+273	64	0
+274	64	0
+275	64	0
+276	64	0
+277	64	0
+278	64	0
+279	64	0
+280	64	0
+281	64	0
+282	64	0
+283	64	0
+284	64	0
+285	64	0
+286	64	0
+287	64	0
+288	64	0
+289	64	0
+290	64	0
+291	64	0
+292	64	0
+293	64	0
+294	64	0
+295	64	0
+296	64	0
+297	64	0
+298	64	0
+299	64	0
+300	64	0
+301	64	0
+302	64	0
+303	64	0
+304	64	0
+305	64	0
+306	64	0
+307	64	0
+308	64	-7.7048
+309	64	-14.97
+310	64	-16.68
+311	64	-18.362
+312	64	-19.985
+313	64	-20.884
+314	64	-21.546
+315	64	-21.976
+316	64	-22.127
+317	64	-22.101
+318	64	-21.568
+319	64	-20.773
+320	64	-3.4532
+321	64	0
+322	64	0
+323	64	0
+324	64	0
+325	64	0
+326	64	0
+327	64	0
+328	64	0
+329	64	0
+330	64	0
+331	64	0
+332	64	0
+333	64	0
+334	64	0
+335	64	0
+336	64	0
+337	64	0
+338	64	0
+339	64	0
+340	64	0
+341	64	0
+342	64	0
+343	64	0
+344	64	0
+345	64	0
+346	64	0
+347	64	0
+348	64	0
+349	64	0
+350	64	0
+351	64	0
+352	64	0
+353	64	0
+354	64	0
+355	64	0
+356	64	0
+357	64	0
+358	64	0
+359	64	0
+360	64	0
+0	64.5	0
+1	64.5	0
+2	64.5	0
+3	64.5	0
+4	64.5	0
+5	64.5	0
+6	64.5	0
+7	64.5	0
+8	64.5	0
+9	64.5	0
+10	64.5	0
+11	64.5	0
+12	64.5	0
+13	64.5	0
+14	64.5	0
+15	64.5	0
+16	64.5	0
+17	64.5	0
+18	64.5	0
+19	64.5	0
+20	64.5	0
+21	64.5	0
+22	64.5	0
+23	64.5	0
+24	64.5	0
+25	64.5	0
+26	64.5	0
+27	64.5	0
+28	64.5	0
+29	64.5	0
+30	64.5	0
+31	64.5	0
+32	64.5	0
+33	64.5	0
+34	64.5	0
+35	64.5	0
+36	64.5	0
+37	64.5	0
+38	64.5	0
+39	64.5	0
+40	64.5	0
+41	64.5	0
+42	64.5	0
+43	64.5	0
+44	64.5	0
+45	64.5	0
+46	64.5	0
+47	64.5	0
+48	64.5	0
+49	64.5	0
+50	64.5	0
+51	64.5	0
+52	64.5	0
+53	64.5	0
+54	64.5	0
+55	64.5	0
+56	64.5	0
+57	64.5	0
+58	64.5	0
+59	64.5	0
+60	64.5	0
+61	64.5	0
+62	64.5	0
+63	64.5	0
+64	64.5	0
+65	64.5	0
+66	64.5	0
+67	64.5	0
+68	64.5	0
+69	64.5	0
+70	64.5	0
+71	64.5	0
+72	64.5	0
+73	64.5	0
+74	64.5	0
+75	64.5	0
+76	64.5	0
+77	64.5	0
+78	64.5	0
+79	64.5	0
+80	64.5	0
+81	64.5	0
+82	64.5	0
+83	64.5	0
+84	64.5	0
+85	64.5	0
+86	64.5	0
+87	64.5	0
+88	64.5	0
+89	64.5	0
+90	64.5	0
+91	64.5	0
+92	64.5	0
+93	64.5	0
+94	64.5	0
+95	64.5	0
+96	64.5	0
+97	64.5	0
+98	64.5	0
+99	64.5	0
+100	64.5	0
+101	64.5	0
+102	64.5	0
+103	64.5	0
+104	64.5	0
+105	64.5	0
+106	64.5	0
+107	64.5	0
+108	64.5	0
+109	64.5	0
+110	64.5	0
+111	64.5	0
+112	64.5	0
+113	64.5	0
+114	64.5	0
+115	64.5	0
+116	64.5	0
+117	64.5	0
+118	64.5	0
+119	64.5	0
+120	64.5	0
+121	64.5	0
+122	64.5	0
+123	64.5	0
+124	64.5	0
+125	64.5	0
+126	64.5	0
+127	64.5	0
+128	64.5	0
+129	64.5	0
+130	64.5	0
+131	64.5	0
+132	64.5	0
+133	64.5	0
+134	64.5	0
+135	64.5	0
+136	64.5	0
+137	64.5	0
+138	64.5	0
+139	64.5	0
+140	64.5	0
+141	64.5	0
+142	64.5	0
+143	64.5	0
+144	64.5	0
+145	64.5	0
+146	64.5	0
+147	64.5	0
+148	64.5	0
+149	64.5	0
+150	64.5	0
+151	64.5	0
+152	64.5	0
+153	64.5	0
+154	64.5	0
+155	64.5	0
+156	64.5	0
+157	64.5	0
+158	64.5	0
+159	64.5	0
+160	64.5	0
+161	64.5	0
+162	64.5	0
+163	64.5	0
+164	64.5	0
+165	64.5	0
+166	64.5	0
+167	64.5	0
+168	64.5	0
+169	64.5	0
+170	64.5	0
+171	64.5	0
+172	64.5	0
+173	64.5	0
+174	64.5	0
+175	64.5	0
+176	64.5	0
+177	64.5	0
+178	64.5	0
+179	64.5	0
+180	64.5	0
+181	64.5	0
+182	64.5	0
+183	64.5	0
+184	64.5	0
+185	64.5	0
+186	64.5	0
+187	64.5	0
+188	64.5	0
+189	64.5	0
+190	64.5	0
+191	64.5	0
+192	64.5	0
+193	64.5	0
+194	64.5	0
+195	64.5	0
+196	64.5	0
+197	64.5	0
+198	64.5	0
+199	64.5	0
+200	64.5	0
+201	64.5	0
+202	64.5	0
+203	64.5	0
+204	64.5	0
+205	64.5	0
+206	64.5	0
+207	64.5	0
+208	64.5	0
+209	64.5	0
+210	64.5	0
+211	64.5	0
+212	64.5	0
+213	64.5	0
+214	64.5	0
+215	64.5	0
+216	64.5	0
+217	64.5	0
+218	64.5	0
+219	64.5	0
+220	64.5	0
+221	64.5	0
+222	64.5	0
+223	64.5	0
+224	64.5	0
+225	64.5	0
+226	64.5	0
+227	64.5	0
+228	64.5	0
+229	64.5	0
+230	64.5	0
+231	64.5	0
+232	64.5	0
+233	64.5	0
+234	64.5	0
+235	64.5	0
+236	64.5	0
+237	64.5	0
+238	64.5	0
+239	64.5	0
+240	64.5	0
+241	64.5	0
+242	64.5	0
+243	64.5	0
+244	64.5	0
+245	64.5	0
+246	64.5	0
+247	64.5	0
+248	64.5	0
+249	64.5	0
+250	64.5	0
+251	64.5	0
+252	64.5	0
+253	64.5	0
+254	64.5	0
+255	64.5	0
+256	64.5	0
+257	64.5	0
+258	64.5	0
+259	64.5	0
+260	64.5	0
+261	64.5	0
+262	64.5	0
+263	64.5	0
+264	64.5	0
+265	64.5	0
+266	64.5	0
+267	64.5	0
+268	64.5	0
+269	64.5	0
+270	64.5	0
+271	64.5	0
+272	64.5	0
+273	64.5	0
+274	64.5	0
+275	64.5	0
+276	64.5	0
+277	64.5	0
+278	64.5	0
+279	64.5	0
+280	64.5	0
+281	64.5	0
+282	64.5	0
+283	64.5	0
+284	64.5	0
+285	64.5	0
+286	64.5	0
+287	64.5	0
+288	64.5	0
+289	64.5	0
+290	64.5	0
+291	64.5	0
+292	64.5	0
+293	64.5	0
+294	64.5	0
+295	64.5	0
+296	64.5	0
+297	64.5	0
+298	64.5	0
+299	64.5	0
+300	64.5	0
+301	64.5	0
+302	64.5	0
+303	64.5	0
+304	64.5	0
+305	64.5	0
+306	64.5	0
+307	64.5	-0.831
+308	64.5	-12.146
+309	64.5	-15.788
+310	64.5	-17.321
+311	64.5	-18.955
+312	64.5	-20.325
+313	64.5	-21.291
+314	64.5	-22.016
+315	64.5	-22.379
+316	64.5	-22.557
+317	64.5	-22.317
+318	64.5	-21.957
+319	64.5	-21.45
+320	64.5	-10.208
+321	64.5	0
+322	64.5	0
+323	64.5	0
+324	64.5	0
+325	64.5	0
+326	64.5	0
+327	64.5	0
+328	64.5	0
+329	64.5	0
+330	64.5	0
+331	64.5	0
+332	64.5	0
+333	64.5	0
+334	64.5	0
+335	64.5	0
+336	64.5	0
+337	64.5	0
+338	64.5	0
+339	64.5	0
+340	64.5	0
+341	64.5	0
+342	64.5	0
+343	64.5	0
+344	64.5	0
+345	64.5	0
+346	64.5	0
+347	64.5	0
+348	64.5	0
+349	64.5	0
+350	64.5	0
+351	64.5	0
+352	64.5	0
+353	64.5	0
+354	64.5	0
+355	64.5	0
+356	64.5	0
+357	64.5	0
+358	64.5	0
+359	64.5	0
+360	64.5	0
+0	65	0
+1	65	0
+2	65	0
+3	65	0
+4	65	0
+5	65	0
+6	65	0
+7	65	0
+8	65	0
+9	65	0
+10	65	0
+11	65	0
+12	65	0
+13	65	0
+14	65	0
+15	65	0
+16	65	0
+17	65	0
+18	65	0
+19	65	0
+20	65	0
+21	65	0
+22	65	0
+23	65	0
+24	65	0
+25	65	0
+26	65	0
+27	65	0
+28	65	0
+29	65	0
+30	65	0
+31	65	0
+32	65	0
+33	65	0
+34	65	0
+35	65	0
+36	65	0
+37	65	0
+38	65	0
+39	65	0
+40	65	0
+41	65	0
+42	65	0
+43	65	0
+44	65	0
+45	65	0
+46	65	0
+47	65	0
+48	65	0
+49	65	0
+50	65	0
+51	65	0
+52	65	0
+53	65	0
+54	65	0
+55	65	0
+56	65	0
+57	65	0
+58	65	0
+59	65	0
+60	65	0
+61	65	0
+62	65	0
+63	65	0
+64	65	0
+65	65	0
+66	65	0
+67	65	0
+68	65	0
+69	65	0
+70	65	0
+71	65	0
+72	65	0
+73	65	0
+74	65	0
+75	65	0
+76	65	0
+77	65	0
+78	65	0
+79	65	0
+80	65	0
+81	65	0
+82	65	0
+83	65	0
+84	65	0
+85	65	0
+86	65	0
+87	65	0
+88	65	0
+89	65	0
+90	65	0
+91	65	0
+92	65	0
+93	65	0
+94	65	0
+95	65	0
+96	65	0
+97	65	0
+98	65	0
+99	65	0
+100	65	0
+101	65	0
+102	65	0
+103	65	0
+104	65	0
+105	65	0
+106	65	0
+107	65	0
+108	65	0
+109	65	0
+110	65	0
+111	65	0
+112	65	0
+113	65	0
+114	65	0
+115	65	0
+116	65	0
+117	65	0
+118	65	0
+119	65	0
+120	65	0
+121	65	0
+122	65	0
+123	65	0
+124	65	0
+125	65	0
+126	65	0
+127	65	0
+128	65	0
+129	65	0
+130	65	0
+131	65	0
+132	65	0
+133	65	0
+134	65	0
+135	65	0
+136	65	0
+137	65	0
+138	65	0
+139	65	0
+140	65	0
+141	65	0
+142	65	0
+143	65	0
+144	65	0
+145	65	0
+146	65	0
+147	65	0
+148	65	0
+149	65	0
+150	65	0
+151	65	0
+152	65	0
+153	65	0
+154	65	0
+155	65	0
+156	65	0
+157	65	0
+158	65	0
+159	65	0
+160	65	0
+161	65	0
+162	65	0
+163	65	0
+164	65	0
+165	65	0
+166	65	0
+167	65	0
+168	65	0
+169	65	0
+170	65	0
+171	65	0
+172	65	0
+173	65	0
+174	65	0
+175	65	0
+176	65	0
+177	65	0
+178	65	0
+179	65	0
+180	65	0
+181	65	0
+182	65	0
+183	65	0
+184	65	0
+185	65	0
+186	65	0
+187	65	0
+188	65	0
+189	65	0
+190	65	0
+191	65	0
+192	65	0
+193	65	0
+194	65	0
+195	65	0
+196	65	0
+197	65	0
+198	65	0
+199	65	0
+200	65	0
+201	65	0
+202	65	0
+203	65	0
+204	65	0
+205	65	0
+206	65	0
+207	65	0
+208	65	0
+209	65	0
+210	65	0
+211	65	0
+212	65	0
+213	65	0
+214	65	0
+215	65	0
+216	65	0
+217	65	0
+218	65	0
+219	65	0
+220	65	0
+221	65	0
+222	65	0
+223	65	0
+224	65	0
+225	65	0
+226	65	0
+227	65	0
+228	65	0
+229	65	0
+230	65	0
+231	65	0
+232	65	0
+233	65	0
+234	65	0
+235	65	0
+236	65	0
+237	65	0
+238	65	0
+239	65	0
+240	65	0
+241	65	0
+242	65	0
+243	65	0
+244	65	0
+245	65	0
+246	65	0
+247	65	0
+248	65	0
+249	65	0
+250	65	0
+251	65	0
+252	65	0
+253	65	0
+254	65	0
+255	65	0
+256	65	0
+257	65	0
+258	65	0
+259	65	0
+260	65	0
+261	65	0
+262	65	0
+263	65	0
+264	65	0
+265	65	0
+266	65	0
+267	65	0
+268	65	0
+269	65	0
+270	65	0
+271	65	0
+272	65	0
+273	65	0
+274	65	0
+275	65	0
+276	65	0
+277	65	0
+278	65	0
+279	65	0
+280	65	0
+281	65	0
+282	65	0
+283	65	0
+284	65	0
+285	65	0
+286	65	0
+287	65	0
+288	65	0
+289	65	0
+290	65	0
+291	65	0
+292	65	0
+293	65	0
+294	65	0
+295	65	0
+296	65	0
+297	65	0
+298	65	0
+299	65	0
+300	65	0
+301	65	0
+302	65	0
+303	65	0
+304	65	0
+305	65	0
+306	65	0
+307	65	-4.418
+308	65	-15.134
+309	65	-16.713
+310	65	-17.919
+311	65	-19.391
+312	65	-20.666
+313	65	-21.6
+314	65	-22.34
+315	65	-22.713
+316	65	-22.788
+317	65	-22.534
+318	65	-22.184
+319	65	-21.69
+320	65	-16.416
+321	65	-7.08
+322	65	-5.2968
+323	65	-9.565
+324	65	-1.6307
+325	65	0
+326	65	0
+327	65	0
+328	65	0
+329	65	0
+330	65	0
+331	65	0
+332	65	0
+333	65	0
+334	65	0
+335	65	0
+336	65	0
+337	65	0
+338	65	0
+339	65	0
+340	65	0
+341	65	0
+342	65	0
+343	65	0
+344	65	0
+345	65	0
+346	65	0
+347	65	0
+348	65	0
+349	65	0
+350	65	0
+351	65	0
+352	65	0
+353	65	0
+354	65	0
+355	65	0
+356	65	0
+357	65	0
+358	65	0
+359	65	0
+360	65	0
+0	65.5	0
+1	65.5	0
+2	65.5	0
+3	65.5	0
+4	65.5	0
+5	65.5	0
+6	65.5	0
+7	65.5	0
+8	65.5	0
+9	65.5	0
+10	65.5	0
+11	65.5	0
+12	65.5	0
+13	65.5	0
+14	65.5	0
+15	65.5	0
+16	65.5	0
+17	65.5	0
+18	65.5	0
+19	65.5	0
+20	65.5	0
+21	65.5	0
+22	65.5	0
+23	65.5	0
+24	65.5	0
+25	65.5	0
+26	65.5	0
+27	65.5	0
+28	65.5	0
+29	65.5	0
+30	65.5	0
+31	65.5	0
+32	65.5	0
+33	65.5	0
+34	65.5	0
+35	65.5	0
+36	65.5	0
+37	65.5	0
+38	65.5	0
+39	65.5	0
+40	65.5	0
+41	65.5	0
+42	65.5	0
+43	65.5	0
+44	65.5	0
+45	65.5	0
+46	65.5	0
+47	65.5	0
+48	65.5	0
+49	65.5	0
+50	65.5	0
+51	65.5	0
+52	65.5	0
+53	65.5	0
+54	65.5	0
+55	65.5	0
+56	65.5	0
+57	65.5	0
+58	65.5	0
+59	65.5	0
+60	65.5	0
+61	65.5	0
+62	65.5	0
+63	65.5	0
+64	65.5	0
+65	65.5	0
+66	65.5	0
+67	65.5	0
+68	65.5	0
+69	65.5	0
+70	65.5	0
+71	65.5	0
+72	65.5	0
+73	65.5	0
+74	65.5	0
+75	65.5	0
+76	65.5	0
+77	65.5	0
+78	65.5	0
+79	65.5	0
+80	65.5	0
+81	65.5	0
+82	65.5	0
+83	65.5	0
+84	65.5	0
+85	65.5	0
+86	65.5	0
+87	65.5	0
+88	65.5	0
+89	65.5	0
+90	65.5	0
+91	65.5	0
+92	65.5	0
+93	65.5	0
+94	65.5	0
+95	65.5	0
+96	65.5	0
+97	65.5	0
+98	65.5	0
+99	65.5	0
+100	65.5	0
+101	65.5	0
+102	65.5	0
+103	65.5	0
+104	65.5	0
+105	65.5	0
+106	65.5	0
+107	65.5	0
+108	65.5	0
+109	65.5	0
+110	65.5	0
+111	65.5	0
+112	65.5	0
+113	65.5	0
+114	65.5	0
+115	65.5	0
+116	65.5	0
+117	65.5	0
+118	65.5	0
+119	65.5	0
+120	65.5	0
+121	65.5	0
+122	65.5	0
+123	65.5	0
+124	65.5	0
+125	65.5	0
+126	65.5	0
+127	65.5	0
+128	65.5	0
+129	65.5	0
+130	65.5	0
+131	65.5	0
+132	65.5	0
+133	65.5	0
+134	65.5	0
+135	65.5	0
+136	65.5	0
+137	65.5	0
+138	65.5	0
+139	65.5	0
+140	65.5	0
+141	65.5	0
+142	65.5	0
+143	65.5	0
+144	65.5	0
+145	65.5	0
+146	65.5	0
+147	65.5	0
+148	65.5	0
+149	65.5	0
+150	65.5	0
+151	65.5	0
+152	65.5	0
+153	65.5	0
+154	65.5	0
+155	65.5	0
+156	65.5	0
+157	65.5	0
+158	65.5	0
+159	65.5	0
+160	65.5	0
+161	65.5	0
+162	65.5	0
+163	65.5	0
+164	65.5	0
+165	65.5	0
+166	65.5	0
+167	65.5	0
+168	65.5	0
+169	65.5	0
+170	65.5	0
+171	65.5	0
+172	65.5	0
+173	65.5	0
+174	65.5	0
+175	65.5	0
+176	65.5	0
+177	65.5	0
+178	65.5	0
+179	65.5	0
+180	65.5	0
+181	65.5	0
+182	65.5	0
+183	65.5	0
+184	65.5	0
+185	65.5	0
+186	65.5	0
+187	65.5	0
+188	65.5	0
+189	65.5	0
+190	65.5	0
+191	65.5	0
+192	65.5	0
+193	65.5	0
+194	65.5	0
+195	65.5	0
+196	65.5	0
+197	65.5	0
+198	65.5	0
+199	65.5	0
+200	65.5	0
+201	65.5	0
+202	65.5	0
+203	65.5	0
+204	65.5	0
+205	65.5	0
+206	65.5	0
+207	65.5	0
+208	65.5	0
+209	65.5	0
+210	65.5	0
+211	65.5	0
+212	65.5	0
+213	65.5	0
+214	65.5	0
+215	65.5	0
+216	65.5	0
+217	65.5	0
+218	65.5	0
+219	65.5	0
+220	65.5	0
+221	65.5	0
+222	65.5	0
+223	65.5	0
+224	65.5	0
+225	65.5	0
+226	65.5	0
+227	65.5	0
+228	65.5	0
+229	65.5	0
+230	65.5	0
+231	65.5	0
+232	65.5	0
+233	65.5	0
+234	65.5	0
+235	65.5	0
+236	65.5	0
+237	65.5	0
+238	65.5	0
+239	65.5	0
+240	65.5	0
+241	65.5	0
+242	65.5	0
+243	65.5	0
+244	65.5	0
+245	65.5	0
+246	65.5	0
+247	65.5	0
+248	65.5	0
+249	65.5	0
+250	65.5	0
+251	65.5	0
+252	65.5	0
+253	65.5	0
+254	65.5	0
+255	65.5	0
+256	65.5	0
+257	65.5	0
+258	65.5	0
+259	65.5	0
+260	65.5	0
+261	65.5	0
+262	65.5	0
+263	65.5	0
+264	65.5	0
+265	65.5	0
+266	65.5	0
+267	65.5	0
+268	65.5	0
+269	65.5	0
+270	65.5	0
+271	65.5	0
+272	65.5	0
+273	65.5	0
+274	65.5	0
+275	65.5	0
+276	65.5	0
+277	65.5	0
+278	65.5	0
+279	65.5	0
+280	65.5	0
+281	65.5	0
+282	65.5	0
+283	65.5	0
+284	65.5	0
+285	65.5	0
+286	65.5	0
+287	65.5	0
+288	65.5	0
+289	65.5	0
+290	65.5	0
+291	65.5	0
+292	65.5	0
+293	65.5	0
+294	65.5	0
+295	65.5	0
+296	65.5	0
+297	65.5	0
+298	65.5	0
+299	65.5	0
+300	65.5	0
+301	65.5	0
+302	65.5	0
+303	65.5	0
+304	65.5	0
+305	65.5	0
+306	65.5	0
+307	65.5	-9.2635
+308	65.5	-16.057
+309	65.5	-17.456
+310	65.5	-18.627
+311	65.5	-19.872
+312	65.5	-21.01
+313	65.5	-21.898
+314	65.5	-22.447
+315	65.5	-22.79
+316	65.5	-22.977
+317	65.5	-22.748
+318	65.5	-22.367
+319	65.5	-21.899
+320	65.5	-17.785
+321	65.5	-15.64
+322	65.5	-10.832
+323	65.5	-16.863
+324	65.5	-8.4463
+325	65.5	-6.2045
+326	65.5	0
+327	65.5	0
+328	65.5	0
+329	65.5	0
+330	65.5	0
+331	65.5	0
+332	65.5	0
+333	65.5	0
+334	65.5	0
+335	65.5	0
+336	65.5	0
+337	65.5	0
+338	65.5	0
+339	65.5	0
+340	65.5	0
+341	65.5	0
+342	65.5	0
+343	65.5	0
+344	65.5	0
+345	65.5	0
+346	65.5	0
+347	65.5	0
+348	65.5	0
+349	65.5	0
+350	65.5	0
+351	65.5	0
+352	65.5	0
+353	65.5	0
+354	65.5	0
+355	65.5	0
+356	65.5	0
+357	65.5	0
+358	65.5	0
+359	65.5	0
+360	65.5	0
+0	66	0
+1	66	0
+2	66	0
+3	66	0
+4	66	0
+5	66	0
+6	66	0
+7	66	0
+8	66	0
+9	66	0
+10	66	0
+11	66	0
+12	66	0
+13	66	0
+14	66	0
+15	66	0
+16	66	0
+17	66	0
+18	66	0
+19	66	0
+20	66	0
+21	66	0
+22	66	0
+23	66	0
+24	66	0
+25	66	0
+26	66	0
+27	66	0
+28	66	0
+29	66	0
+30	66	0
+31	66	0
+32	66	0
+33	66	0
+34	66	0
+35	66	0
+36	66	0
+37	66	0
+38	66	0
+39	66	0
+40	66	0
+41	66	0
+42	66	0
+43	66	0
+44	66	0
+45	66	0
+46	66	0
+47	66	0
+48	66	0
+49	66	0
+50	66	0
+51	66	0
+52	66	0
+53	66	0
+54	66	0
+55	66	0
+56	66	0
+57	66	0
+58	66	0
+59	66	0
+60	66	0
+61	66	0
+62	66	0
+63	66	0
+64	66	0
+65	66	0
+66	66	0
+67	66	0
+68	66	0
+69	66	0
+70	66	0
+71	66	0
+72	66	0
+73	66	0
+74	66	0
+75	66	0
+76	66	0
+77	66	0
+78	66	0
+79	66	0
+80	66	0
+81	66	0
+82	66	0
+83	66	0
+84	66	0
+85	66	0
+86	66	0
+87	66	0
+88	66	0
+89	66	0
+90	66	0
+91	66	0
+92	66	0
+93	66	0
+94	66	0
+95	66	0
+96	66	0
+97	66	0
+98	66	0
+99	66	0
+100	66	0
+101	66	0
+102	66	0
+103	66	0
+104	66	0
+105	66	0
+106	66	0
+107	66	0
+108	66	0
+109	66	0
+110	66	0
+111	66	0
+112	66	0
+113	66	0
+114	66	0
+115	66	0
+116	66	0
+117	66	0
+118	66	0
+119	66	0
+120	66	0
+121	66	0
+122	66	0
+123	66	0
+124	66	0
+125	66	0
+126	66	0
+127	66	0
+128	66	0
+129	66	0
+130	66	0
+131	66	0
+132	66	0
+133	66	0
+134	66	0
+135	66	0
+136	66	0
+137	66	0
+138	66	0
+139	66	0
+140	66	0
+141	66	0
+142	66	0
+143	66	0
+144	66	0
+145	66	0
+146	66	0
+147	66	0
+148	66	0
+149	66	0
+150	66	0
+151	66	0
+152	66	0
+153	66	0
+154	66	0
+155	66	0
+156	66	0
+157	66	0
+158	66	0
+159	66	0
+160	66	0
+161	66	0
+162	66	0
+163	66	0
+164	66	0
+165	66	0
+166	66	0
+167	66	0
+168	66	0
+169	66	0
+170	66	0
+171	66	0
+172	66	0
+173	66	0
+174	66	0
+175	66	0
+176	66	0
+177	66	0
+178	66	0
+179	66	0
+180	66	0
+181	66	0
+182	66	0
+183	66	0
+184	66	0
+185	66	0
+186	66	0
+187	66	0
+188	66	0
+189	66	0
+190	66	0
+191	66	0
+192	66	0
+193	66	0
+194	66	0
+195	66	0
+196	66	0
+197	66	0
+198	66	0
+199	66	0
+200	66	0
+201	66	0
+202	66	0
+203	66	0
+204	66	0
+205	66	0
+206	66	0
+207	66	0
+208	66	0
+209	66	0
+210	66	0
+211	66	0
+212	66	0
+213	66	0
+214	66	0
+215	66	0
+216	66	0
+217	66	0
+218	66	0
+219	66	0
+220	66	0
+221	66	0
+222	66	0
+223	66	0
+224	66	0
+225	66	0
+226	66	0
+227	66	0
+228	66	0
+229	66	0
+230	66	0
+231	66	0
+232	66	0
+233	66	0
+234	66	0
+235	66	0
+236	66	0
+237	66	0
+238	66	0
+239	66	0
+240	66	0
+241	66	0
+242	66	0
+243	66	0
+244	66	0
+245	66	0
+246	66	0
+247	66	0
+248	66	0
+249	66	0
+250	66	0
+251	66	0
+252	66	0
+253	66	0
+254	66	0
+255	66	0
+256	66	0
+257	66	0
+258	66	0
+259	66	0
+260	66	0
+261	66	0
+262	66	0
+263	66	0
+264	66	0
+265	66	0
+266	66	0
+267	66	0
+268	66	0
+269	66	0
+270	66	0
+271	66	0
+272	66	0
+273	66	0
+274	66	0
+275	66	0
+276	66	0
+277	66	0
+278	66	0
+279	66	0
+280	66	0
+281	66	0
+282	66	0
+283	66	0
+284	66	0
+285	66	0
+286	66	0
+287	66	0
+288	66	0
+289	66	0
+290	66	0
+291	66	0
+292	66	0
+293	66	0
+294	66	0
+295	66	0
+296	66	0
+297	66	0
+298	66	0
+299	66	0
+300	66	0
+301	66	0
+302	66	0
+303	66	0
+304	66	0
+305	66	0
+306	66	-3.087
+307	66	-14.347
+308	66	-16.963
+309	66	-18.254
+310	66	-19.346
+311	66	-20.255
+312	66	-21.353
+313	66	-22.134
+314	66	-22.454
+315	66	-22.766
+316	66	-22.887
+317	66	-22.848
+318	66	-22.43
+319	66	-21.913
+320	66	-21.218
+321	66	-20.701
+322	66	-20.417
+323	66	-19.314
+324	66	-18.291
+325	66	-17.047
+326	66	0
+327	66	0
+328	66	0
+329	66	0
+330	66	0
+331	66	0
+332	66	0
+333	66	0
+334	66	0
+335	66	0
+336	66	0
+337	66	0
+338	66	0
+339	66	0
+340	66	0
+341	66	0
+342	66	0
+343	66	0
+344	66	0
+345	66	0
+346	66	0
+347	66	0
+348	66	0
+349	66	0
+350	66	0
+351	66	0
+352	66	0
+353	66	0
+354	66	0
+355	66	0
+356	66	0
+357	66	0
+358	66	0
+359	66	0
+360	66	0
+0	66.5	0
+1	66.5	0
+2	66.5	0
+3	66.5	0
+4	66.5	0
+5	66.5	0
+6	66.5	0
+7	66.5	0
+8	66.5	0
+9	66.5	0
+10	66.5	0
+11	66.5	0
+12	66.5	0
+13	66.5	0
+14	66.5	0
+15	66.5	0
+16	66.5	0
+17	66.5	0
+18	66.5	0
+19	66.5	0
+20	66.5	0
+21	66.5	0
+22	66.5	0
+23	66.5	0
+24	66.5	0
+25	66.5	0
+26	66.5	0
+27	66.5	0
+28	66.5	0
+29	66.5	0
+30	66.5	0
+31	66.5	0
+32	66.5	0
+33	66.5	0
+34	66.5	0
+35	66.5	0
+36	66.5	0
+37	66.5	0
+38	66.5	0
+39	66.5	0
+40	66.5	0
+41	66.5	0
+42	66.5	0
+43	66.5	0
+44	66.5	0
+45	66.5	0
+46	66.5	0
+47	66.5	0
+48	66.5	0
+49	66.5	0
+50	66.5	0
+51	66.5	0
+52	66.5	0
+53	66.5	0
+54	66.5	0
+55	66.5	0
+56	66.5	0
+57	66.5	0
+58	66.5	0
+59	66.5	0
+60	66.5	0
+61	66.5	0
+62	66.5	0
+63	66.5	0
+64	66.5	0
+65	66.5	0
+66	66.5	0
+67	66.5	0
+68	66.5	0
+69	66.5	0
+70	66.5	0
+71	66.5	0
+72	66.5	0
+73	66.5	0
+74	66.5	0
+75	66.5	0
+76	66.5	0
+77	66.5	0
+78	66.5	0
+79	66.5	0
+80	66.5	0
+81	66.5	0
+82	66.5	0
+83	66.5	0
+84	66.5	0
+85	66.5	0
+86	66.5	0
+87	66.5	0
+88	66.5	0
+89	66.5	0
+90	66.5	0
+91	66.5	0
+92	66.5	0
+93	66.5	0
+94	66.5	0
+95	66.5	0
+96	66.5	0
+97	66.5	0
+98	66.5	0
+99	66.5	0
+100	66.5	0
+101	66.5	0
+102	66.5	0
+103	66.5	0
+104	66.5	0
+105	66.5	0
+106	66.5	0
+107	66.5	0
+108	66.5	0
+109	66.5	0
+110	66.5	0
+111	66.5	0
+112	66.5	0
+113	66.5	0
+114	66.5	0
+115	66.5	0
+116	66.5	0
+117	66.5	0
+118	66.5	0
+119	66.5	0
+120	66.5	0
+121	66.5	0
+122	66.5	0
+123	66.5	0
+124	66.5	0
+125	66.5	0
+126	66.5	0
+127	66.5	0
+128	66.5	0
+129	66.5	0
+130	66.5	0
+131	66.5	0
+132	66.5	0
+133	66.5	0
+134	66.5	0
+135	66.5	0
+136	66.5	0
+137	66.5	0
+138	66.5	0
+139	66.5	0
+140	66.5	0
+141	66.5	0
+142	66.5	0
+143	66.5	0
+144	66.5	0
+145	66.5	0
+146	66.5	0
+147	66.5	0
+148	66.5	0
+149	66.5	0
+150	66.5	0
+151	66.5	0
+152	66.5	0
+153	66.5	0
+154	66.5	0
+155	66.5	0
+156	66.5	0
+157	66.5	0
+158	66.5	0
+159	66.5	0
+160	66.5	0
+161	66.5	0
+162	66.5	0
+163	66.5	0
+164	66.5	0
+165	66.5	0
+166	66.5	0
+167	66.5	0
+168	66.5	0
+169	66.5	0
+170	66.5	0
+171	66.5	0
+172	66.5	0
+173	66.5	0
+174	66.5	0
+175	66.5	0
+176	66.5	0
+177	66.5	0
+178	66.5	0
+179	66.5	0
+180	66.5	0
+181	66.5	0
+182	66.5	0
+183	66.5	0
+184	66.5	0
+185	66.5	0
+186	66.5	0
+187	66.5	0
+188	66.5	0
+189	66.5	0
+190	66.5	0
+191	66.5	0
+192	66.5	0
+193	66.5	0
+194	66.5	0
+195	66.5	0
+196	66.5	0
+197	66.5	0
+198	66.5	0
+199	66.5	0
+200	66.5	0
+201	66.5	0
+202	66.5	0
+203	66.5	0
+204	66.5	0
+205	66.5	0
+206	66.5	0
+207	66.5	0
+208	66.5	0
+209	66.5	0
+210	66.5	0
+211	66.5	0
+212	66.5	0
+213	66.5	0
+214	66.5	0
+215	66.5	0
+216	66.5	0
+217	66.5	0
+218	66.5	0
+219	66.5	0
+220	66.5	0
+221	66.5	0
+222	66.5	0
+223	66.5	0
+224	66.5	0
+225	66.5	0
+226	66.5	0
+227	66.5	0
+228	66.5	0
+229	66.5	0
+230	66.5	0
+231	66.5	0
+232	66.5	0
+233	66.5	0
+234	66.5	0
+235	66.5	0
+236	66.5	0
+237	66.5	0
+238	66.5	0
+239	66.5	0
+240	66.5	0
+241	66.5	0
+242	66.5	0
+243	66.5	0
+244	66.5	0
+245	66.5	0
+246	66.5	0
+247	66.5	0
+248	66.5	0
+249	66.5	0
+250	66.5	0
+251	66.5	0
+252	66.5	0
+253	66.5	0
+254	66.5	0
+255	66.5	0
+256	66.5	0
+257	66.5	0
+258	66.5	0
+259	66.5	0
+260	66.5	0
+261	66.5	0
+262	66.5	0
+263	66.5	0
+264	66.5	0
+265	66.5	0
+266	66.5	0
+267	66.5	0
+268	66.5	0
+269	66.5	0
+270	66.5	0
+271	66.5	0
+272	66.5	0
+273	66.5	0
+274	66.5	0
+275	66.5	0
+276	66.5	0
+277	66.5	0
+278	66.5	0
+279	66.5	0
+280	66.5	0
+281	66.5	0
+282	66.5	0
+283	66.5	0
+284	66.5	0
+285	66.5	0
+286	66.5	0
+287	66.5	0
+288	66.5	0
+289	66.5	0
+290	66.5	0
+291	66.5	0
+292	66.5	0
+293	66.5	0
+294	66.5	0
+295	66.5	0
+296	66.5	0
+297	66.5	0
+298	66.5	0
+299	66.5	0
+300	66.5	0
+301	66.5	0
+302	66.5	0
+303	66.5	0
+304	66.5	0
+305	66.5	0
+306	66.5	-8.687
+307	66.5	-16.436
+308	66.5	-17.748
+309	66.5	-19.028
+310	66.5	-20.055
+311	66.5	-20.803
+312	66.5	-21.65
+313	66.5	-22.129
+314	66.5	-22.358
+315	66.5	-22.645
+316	66.5	-22.77
+317	66.5	-22.613
+318	66.5	-22.492
+319	66.5	-21.901
+320	66.5	-21.201
+321	66.5	-20.63
+322	66.5	-20.387
+323	66.5	-19.836
+324	66.5	-19.469
+325	66.5	-18.154
+326	66.5	-13.873
+327	66.5	0
+328	66.5	0
+329	66.5	0
+330	66.5	0
+331	66.5	0
+332	66.5	0
+333	66.5	0
+334	66.5	0
+335	66.5	0
+336	66.5	0
+337	66.5	0
+338	66.5	0
+339	66.5	0
+340	66.5	0
+341	66.5	0
+342	66.5	0
+343	66.5	0
+344	66.5	0
+345	66.5	0
+346	66.5	0
+347	66.5	0
+348	66.5	0
+349	66.5	0
+350	66.5	0
+351	66.5	0
+352	66.5	0
+353	66.5	0
+354	66.5	0
+355	66.5	0
+356	66.5	0
+357	66.5	0
+358	66.5	0
+359	66.5	0
+360	66.5	0
+0	67	0
+1	67	0
+2	67	0
+3	67	0
+4	67	0
+5	67	0
+6	67	0
+7	67	0
+8	67	0
+9	67	0
+10	67	0
+11	67	0
+12	67	0
+13	67	0
+14	67	0
+15	67	0
+16	67	0
+17	67	0
+18	67	0
+19	67	0
+20	67	0
+21	67	0
+22	67	0
+23	67	0
+24	67	0
+25	67	0
+26	67	0
+27	67	0
+28	67	0
+29	67	0
+30	67	0
+31	67	0
+32	67	0
+33	67	0
+34	67	0
+35	67	0
+36	67	0
+37	67	0
+38	67	0
+39	67	0
+40	67	0
+41	67	0
+42	67	0
+43	67	0
+44	67	0
+45	67	0
+46	67	0
+47	67	0
+48	67	0
+49	67	0
+50	67	0
+51	67	0
+52	67	0
+53	67	0
+54	67	0
+55	67	0
+56	67	0
+57	67	0
+58	67	0
+59	67	0
+60	67	0
+61	67	0
+62	67	0
+63	67	0
+64	67	0
+65	67	0
+66	67	0
+67	67	0
+68	67	0
+69	67	0
+70	67	0
+71	67	0
+72	67	0
+73	67	0
+74	67	0
+75	67	0
+76	67	0
+77	67	0
+78	67	0
+79	67	0
+80	67	0
+81	67	0
+82	67	0
+83	67	0
+84	67	0
+85	67	0
+86	67	0
+87	67	0
+88	67	0
+89	67	0
+90	67	0
+91	67	0
+92	67	0
+93	67	0
+94	67	0
+95	67	0
+96	67	0
+97	67	0
+98	67	0
+99	67	0
+100	67	0
+101	67	0
+102	67	0
+103	67	0
+104	67	0
+105	67	0
+106	67	0
+107	67	0
+108	67	0
+109	67	0
+110	67	0
+111	67	0
+112	67	0
+113	67	0
+114	67	0
+115	67	0
+116	67	0
+117	67	0
+118	67	0
+119	67	0
+120	67	0
+121	67	0
+122	67	0
+123	67	0
+124	67	0
+125	67	0
+126	67	0
+127	67	0
+128	67	0
+129	67	0
+130	67	0
+131	67	0
+132	67	0
+133	67	0
+134	67	0
+135	67	0
+136	67	0
+137	67	0
+138	67	0
+139	67	0
+140	67	0
+141	67	0
+142	67	0
+143	67	0
+144	67	0
+145	67	0
+146	67	0
+147	67	0
+148	67	0
+149	67	0
+150	67	0
+151	67	0
+152	67	0
+153	67	0
+154	67	0
+155	67	0
+156	67	0
+157	67	0
+158	67	0
+159	67	0
+160	67	0
+161	67	0
+162	67	0
+163	67	0
+164	67	0
+165	67	0
+166	67	0
+167	67	0
+168	67	0
+169	67	0
+170	67	0
+171	67	0
+172	67	0
+173	67	0
+174	67	0
+175	67	0
+176	67	0
+177	67	0
+178	67	0
+179	67	0
+180	67	0
+181	67	0
+182	67	0
+183	67	0
+184	67	0
+185	67	0
+186	67	0
+187	67	0
+188	67	0
+189	67	0
+190	67	0
+191	67	0
+192	67	0
+193	67	0
+194	67	0
+195	67	0
+196	67	0
+197	67	0
+198	67	0
+199	67	0
+200	67	0
+201	67	0
+202	67	0
+203	67	0
+204	67	0
+205	67	0
+206	67	0
+207	67	0
+208	67	0
+209	67	0
+210	67	0
+211	67	0
+212	67	0
+213	67	0
+214	67	0
+215	67	0
+216	67	0
+217	67	0
+218	67	0
+219	67	0
+220	67	0
+221	67	0
+222	67	0
+223	67	0
+224	67	0
+225	67	0
+226	67	0
+227	67	0
+228	67	0
+229	67	0
+230	67	0
+231	67	0
+232	67	0
+233	67	0
+234	67	0
+235	67	0
+236	67	0
+237	67	0
+238	67	0
+239	67	0
+240	67	0
+241	67	0
+242	67	0
+243	67	0
+244	67	0
+245	67	0
+246	67	0
+247	67	0
+248	67	0
+249	67	0
+250	67	0
+251	67	0
+252	67	0
+253	67	0
+254	67	0
+255	67	0
+256	67	0
+257	67	0
+258	67	0
+259	67	0
+260	67	0
+261	67	0
+262	67	0
+263	67	0
+264	67	0
+265	67	0
+266	67	0
+267	67	0
+268	67	0
+269	67	0
+270	67	0
+271	67	0
+272	67	0
+273	67	0
+274	67	0
+275	67	0
+276	67	0
+277	67	0
+278	67	0
+279	67	0
+280	67	0
+281	67	0
+282	67	0
+283	67	0
+284	67	0
+285	67	0
+286	67	0
+287	67	0
+288	67	0
+289	67	0
+290	67	0
+291	67	0
+292	67	0
+293	67	0
+294	67	0
+295	67	0
+296	67	0
+297	67	0
+298	67	0
+299	67	0
+300	67	0
+301	67	0
+302	67	0
+303	67	0
+304	67	0
+305	67	0
+306	67	-12.606
+307	67	-17.227
+308	67	-18.517
+309	67	-19.739
+310	67	-20.622
+311	67	-21.355
+312	67	-21.903
+313	67	-22.087
+314	67	-22.296
+315	67	-22.524
+316	67	-22.654
+317	67	-22.138
+318	67	-22.033
+319	67	-21.467
+320	67	-20.829
+321	67	-20.538
+322	67	-20.14
+323	67	-19.824
+324	67	-19.133
+325	67	-18.93
+326	67	-17.958
+327	67	-9.7993
+328	67	-7.3502
+329	67	0
+330	67	0
+331	67	0
+332	67	0
+333	67	0
+334	67	0
+335	67	0
+336	67	0
+337	67	0
+338	67	0
+339	67	0
+340	67	0
+341	67	0
+342	67	0
+343	67	0
+344	67	0
+345	67	0
+346	67	0
+347	67	0
+348	67	0
+349	67	0
+350	67	0
+351	67	0
+352	67	0
+353	67	0
+354	67	0
+355	67	0
+356	67	0
+357	67	0
+358	67	0
+359	67	0
+360	67	0
+0	67.5	0
+1	67.5	0
+2	67.5	0
+3	67.5	0
+4	67.5	0
+5	67.5	0
+6	67.5	0
+7	67.5	0
+8	67.5	0
+9	67.5	0
+10	67.5	0
+11	67.5	0
+12	67.5	0
+13	67.5	0
+14	67.5	0
+15	67.5	0
+16	67.5	0
+17	67.5	0
+18	67.5	0
+19	67.5	0
+20	67.5	0
+21	67.5	0
+22	67.5	0
+23	67.5	0
+24	67.5	0
+25	67.5	0
+26	67.5	0
+27	67.5	0
+28	67.5	0
+29	67.5	0
+30	67.5	0
+31	67.5	0
+32	67.5	0
+33	67.5	0
+34	67.5	0
+35	67.5	0
+36	67.5	0
+37	67.5	0
+38	67.5	0
+39	67.5	0
+40	67.5	0
+41	67.5	0
+42	67.5	0
+43	67.5	0
+44	67.5	0
+45	67.5	0
+46	67.5	0
+47	67.5	0
+48	67.5	0
+49	67.5	0
+50	67.5	0
+51	67.5	0
+52	67.5	0
+53	67.5	0
+54	67.5	0
+55	67.5	0
+56	67.5	0
+57	67.5	0
+58	67.5	0
+59	67.5	0
+60	67.5	0
+61	67.5	0
+62	67.5	0
+63	67.5	0
+64	67.5	0
+65	67.5	0
+66	67.5	0
+67	67.5	0
+68	67.5	0
+69	67.5	0
+70	67.5	0
+71	67.5	0
+72	67.5	0
+73	67.5	0
+74	67.5	0
+75	67.5	0
+76	67.5	0
+77	67.5	0
+78	67.5	0
+79	67.5	0
+80	67.5	0
+81	67.5	0
+82	67.5	0
+83	67.5	0
+84	67.5	0
+85	67.5	0
+86	67.5	0
+87	67.5	0
+88	67.5	0
+89	67.5	0
+90	67.5	0
+91	67.5	0
+92	67.5	0
+93	67.5	0
+94	67.5	0
+95	67.5	0
+96	67.5	0
+97	67.5	0
+98	67.5	0
+99	67.5	0
+100	67.5	0
+101	67.5	0
+102	67.5	0
+103	67.5	0
+104	67.5	0
+105	67.5	0
+106	67.5	0
+107	67.5	0
+108	67.5	0
+109	67.5	0
+110	67.5	0
+111	67.5	0
+112	67.5	0
+113	67.5	0
+114	67.5	0
+115	67.5	0
+116	67.5	0
+117	67.5	0
+118	67.5	0
+119	67.5	0
+120	67.5	0
+121	67.5	0
+122	67.5	0
+123	67.5	0
+124	67.5	0
+125	67.5	0
+126	67.5	0
+127	67.5	0
+128	67.5	0
+129	67.5	0
+130	67.5	0
+131	67.5	0
+132	67.5	0
+133	67.5	0
+134	67.5	0
+135	67.5	0
+136	67.5	0
+137	67.5	0
+138	67.5	0
+139	67.5	0
+140	67.5	0
+141	67.5	0
+142	67.5	0
+143	67.5	0
+144	67.5	0
+145	67.5	0
+146	67.5	0
+147	67.5	0
+148	67.5	0
+149	67.5	0
+150	67.5	0
+151	67.5	0
+152	67.5	0
+153	67.5	0
+154	67.5	0
+155	67.5	0
+156	67.5	0
+157	67.5	0
+158	67.5	0
+159	67.5	0
+160	67.5	0
+161	67.5	0
+162	67.5	0
+163	67.5	0
+164	67.5	0
+165	67.5	0
+166	67.5	0
+167	67.5	0
+168	67.5	0
+169	67.5	0
+170	67.5	0
+171	67.5	0
+172	67.5	0
+173	67.5	0
+174	67.5	0
+175	67.5	0
+176	67.5	0
+177	67.5	0
+178	67.5	0
+179	67.5	0
+180	67.5	0
+181	67.5	0
+182	67.5	0
+183	67.5	0
+184	67.5	0
+185	67.5	0
+186	67.5	0
+187	67.5	0
+188	67.5	0
+189	67.5	0
+190	67.5	0
+191	67.5	0
+192	67.5	0
+193	67.5	0
+194	67.5	0
+195	67.5	0
+196	67.5	0
+197	67.5	0
+198	67.5	0
+199	67.5	0
+200	67.5	0
+201	67.5	0
+202	67.5	0
+203	67.5	0
+204	67.5	0
+205	67.5	0
+206	67.5	0
+207	67.5	0
+208	67.5	0
+209	67.5	0
+210	67.5	0
+211	67.5	0
+212	67.5	0
+213	67.5	0
+214	67.5	0
+215	67.5	0
+216	67.5	0
+217	67.5	0
+218	67.5	0
+219	67.5	0
+220	67.5	0
+221	67.5	0
+222	67.5	0
+223	67.5	0
+224	67.5	0
+225	67.5	0
+226	67.5	0
+227	67.5	0
+228	67.5	0
+229	67.5	0
+230	67.5	0
+231	67.5	0
+232	67.5	0
+233	67.5	0
+234	67.5	0
+235	67.5	0
+236	67.5	0
+237	67.5	0
+238	67.5	0
+239	67.5	0
+240	67.5	0
+241	67.5	0
+242	67.5	0
+243	67.5	0
+244	67.5	0
+245	67.5	0
+246	67.5	0
+247	67.5	0
+248	67.5	0
+249	67.5	0
+250	67.5	0
+251	67.5	0
+252	67.5	0
+253	67.5	0
+254	67.5	0
+255	67.5	0
+256	67.5	0
+257	67.5	0
+258	67.5	0
+259	67.5	0
+260	67.5	0
+261	67.5	0
+262	67.5	0
+263	67.5	0
+264	67.5	0
+265	67.5	0
+266	67.5	0
+267	67.5	0
+268	67.5	0
+269	67.5	0
+270	67.5	0
+271	67.5	0
+272	67.5	0
+273	67.5	0
+274	67.5	0
+275	67.5	0
+276	67.5	0
+277	67.5	0
+278	67.5	0
+279	67.5	0
+280	67.5	0
+281	67.5	0
+282	67.5	0
+283	67.5	0
+284	67.5	0
+285	67.5	0
+286	67.5	0
+287	67.5	0
+288	67.5	0
+289	67.5	0
+290	67.5	0
+291	67.5	0
+292	67.5	0
+293	67.5	0
+294	67.5	0
+295	67.5	0
+296	67.5	0
+297	67.5	0
+298	67.5	0
+299	67.5	0
+300	67.5	0
+301	67.5	0
+302	67.5	0
+303	67.5	0
+304	67.5	0
+305	67.5	0
+306	67.5	-11.205
+307	67.5	-18.009
+308	67.5	-19.291
+309	67.5	-20.381
+310	67.5	-21.067
+311	67.5	-21.717
+312	67.5	-22.001
+313	67.5	-21.992
+314	67.5	-22.166
+315	67.5	-22.405
+316	67.5	-22.219
+317	67.5	-21.662
+318	67.5	-21.275
+319	67.5	-21.023
+320	67.5	-20.458
+321	67.5	-20.402
+322	67.5	-19.873
+323	67.5	-19.305
+324	67.5	-18.635
+325	67.5	-18.898
+326	67.5	-18.853
+327	67.5	-17.832
+328	67.5	-15.225
+329	67.5	-7.0761
+330	67.5	-2.585
+331	67.5	-5.4272
+332	67.5	0
+333	67.5	0
+334	67.5	0
+335	67.5	0
+336	67.5	0
+337	67.5	0
+338	67.5	0
+339	67.5	0
+340	67.5	0
+341	67.5	0
+342	67.5	0
+343	67.5	0
+344	67.5	0
+345	67.5	0
+346	67.5	0
+347	67.5	0
+348	67.5	0
+349	67.5	0
+350	67.5	0
+351	67.5	0
+352	67.5	0
+353	67.5	0
+354	67.5	0
+355	67.5	0
+356	67.5	0
+357	67.5	0
+358	67.5	0
+359	67.5	0
+360	67.5	0
+0	68	0
+1	68	0
+2	68	0
+3	68	0
+4	68	0
+5	68	0
+6	68	0
+7	68	0
+8	68	0
+9	68	0
+10	68	0
+11	68	0
+12	68	0
+13	68	0
+14	68	0
+15	68	0
+16	68	0
+17	68	0
+18	68	0
+19	68	0
+20	68	0
+21	68	0
+22	68	0
+23	68	0
+24	68	0
+25	68	0
+26	68	0
+27	68	0
+28	68	0
+29	68	0
+30	68	0
+31	68	0
+32	68	0
+33	68	0
+34	68	0
+35	68	0
+36	68	0
+37	68	0
+38	68	0
+39	68	0
+40	68	0
+41	68	0
+42	68	0
+43	68	0
+44	68	0
+45	68	0
+46	68	0
+47	68	0
+48	68	0
+49	68	0
+50	68	0
+51	68	0
+52	68	0
+53	68	0
+54	68	0
+55	68	0
+56	68	0
+57	68	0
+58	68	0
+59	68	0
+60	68	0
+61	68	0
+62	68	0
+63	68	0
+64	68	0
+65	68	0
+66	68	0
+67	68	0
+68	68	0
+69	68	0
+70	68	0
+71	68	0
+72	68	0
+73	68	0
+74	68	0
+75	68	0
+76	68	0
+77	68	0
+78	68	0
+79	68	0
+80	68	0
+81	68	0
+82	68	0
+83	68	0
+84	68	0
+85	68	0
+86	68	0
+87	68	0
+88	68	0
+89	68	0
+90	68	0
+91	68	0
+92	68	0
+93	68	0
+94	68	0
+95	68	0
+96	68	0
+97	68	0
+98	68	0
+99	68	0
+100	68	0
+101	68	0
+102	68	0
+103	68	0
+104	68	0
+105	68	0
+106	68	0
+107	68	0
+108	68	0
+109	68	0
+110	68	0
+111	68	0
+112	68	0
+113	68	0
+114	68	0
+115	68	0
+116	68	0
+117	68	0
+118	68	0
+119	68	0
+120	68	0
+121	68	0
+122	68	0
+123	68	0
+124	68	0
+125	68	0
+126	68	0
+127	68	0
+128	68	0
+129	68	0
+130	68	0
+131	68	0
+132	68	0
+133	68	0
+134	68	0
+135	68	0
+136	68	0
+137	68	0
+138	68	0
+139	68	0
+140	68	0
+141	68	0
+142	68	0
+143	68	0
+144	68	0
+145	68	0
+146	68	0
+147	68	0
+148	68	0
+149	68	0
+150	68	0
+151	68	0
+152	68	0
+153	68	0
+154	68	0
+155	68	0
+156	68	0
+157	68	0
+158	68	0
+159	68	0
+160	68	0
+161	68	0
+162	68	0
+163	68	0
+164	68	0
+165	68	0
+166	68	0
+167	68	0
+168	68	0
+169	68	0
+170	68	0
+171	68	0
+172	68	0
+173	68	0
+174	68	0
+175	68	0
+176	68	0
+177	68	0
+178	68	0
+179	68	0
+180	68	0
+181	68	0
+182	68	0
+183	68	0
+184	68	0
+185	68	0
+186	68	0
+187	68	0
+188	68	0
+189	68	0
+190	68	0
+191	68	0
+192	68	0
+193	68	0
+194	68	0
+195	68	0
+196	68	0
+197	68	0
+198	68	0
+199	68	0
+200	68	0
+201	68	0
+202	68	0
+203	68	0
+204	68	0
+205	68	0
+206	68	0
+207	68	0
+208	68	0
+209	68	0
+210	68	0
+211	68	0
+212	68	0
+213	68	0
+214	68	0
+215	68	0
+216	68	0
+217	68	0
+218	68	0
+219	68	0
+220	68	0
+221	68	0
+222	68	0
+223	68	0
+224	68	0
+225	68	0
+226	68	0
+227	68	0
+228	68	0
+229	68	0
+230	68	0
+231	68	0
+232	68	0
+233	68	0
+234	68	0
+235	68	0
+236	68	0
+237	68	0
+238	68	0
+239	68	0
+240	68	0
+241	68	0
+242	68	0
+243	68	0
+244	68	0
+245	68	0
+246	68	0
+247	68	0
+248	68	0
+249	68	0
+250	68	0
+251	68	0
+252	68	0
+253	68	0
+254	68	0
+255	68	0
+256	68	0
+257	68	0
+258	68	0
+259	68	0
+260	68	0
+261	68	0
+262	68	0
+263	68	0
+264	68	0
+265	68	0
+266	68	0
+267	68	0
+268	68	0
+269	68	0
+270	68	0
+271	68	0
+272	68	0
+273	68	0
+274	68	0
+275	68	0
+276	68	0
+277	68	0
+278	68	0
+279	68	0
+280	68	0
+281	68	0
+282	68	0
+283	68	0
+284	68	0
+285	68	0
+286	68	0
+287	68	0
+288	68	0
+289	68	0
+290	68	0
+291	68	0
+292	68	0
+293	68	0
+294	68	0
+295	68	0
+296	68	0
+297	68	0
+298	68	0
+299	68	0
+300	68	0
+301	68	0
+302	68	0
+303	68	0
+304	68	0
+305	68	0
+306	68	-1.4256
+307	68	-18.752
+308	68	-20.071
+309	68	-20.987
+310	68	-21.554
+311	68	-21.842
+312	68	-22.095
+313	68	-22.049
+314	68	-22.033
+315	68	-22.161
+316	68	-21.451
+317	68	-20.826
+318	68	-20.433
+319	68	-20.248
+320	68	-19.927
+321	68	-19.334
+322	68	-18.761
+323	68	-18.687
+324	68	-18.062
+325	68	-18.182
+326	68	-18.355
+327	68	-17.945
+328	68	-17.545
+329	68	-16.481
+330	68	-15.499
+331	68	-14.861
+332	68	-9.8583
+333	68	0
+334	68	0
+335	68	0
+336	68	0
+337	68	0
+338	68	0
+339	68	0
+340	68	0
+341	68	0
+342	68	0
+343	68	0
+344	68	0
+345	68	0
+346	68	0
+347	68	0
+348	68	0
+349	68	0
+350	68	0
+351	68	0
+352	68	0
+353	68	0
+354	68	0
+355	68	0
+356	68	0
+357	68	0
+358	68	0
+359	68	0
+360	68	0
+0	68.5	0
+1	68.5	0
+2	68.5	0
+3	68.5	0
+4	68.5	0
+5	68.5	0
+6	68.5	0
+7	68.5	0
+8	68.5	0
+9	68.5	0
+10	68.5	0
+11	68.5	0
+12	68.5	0
+13	68.5	0
+14	68.5	0
+15	68.5	0
+16	68.5	0
+17	68.5	0
+18	68.5	0
+19	68.5	0
+20	68.5	0
+21	68.5	0
+22	68.5	0
+23	68.5	0
+24	68.5	0
+25	68.5	0
+26	68.5	0
+27	68.5	0
+28	68.5	0
+29	68.5	0
+30	68.5	0
+31	68.5	0
+32	68.5	0
+33	68.5	0
+34	68.5	0
+35	68.5	0
+36	68.5	0
+37	68.5	0
+38	68.5	0
+39	68.5	0
+40	68.5	0
+41	68.5	0
+42	68.5	0
+43	68.5	0
+44	68.5	0
+45	68.5	0
+46	68.5	0
+47	68.5	0
+48	68.5	0
+49	68.5	0
+50	68.5	0
+51	68.5	0
+52	68.5	0
+53	68.5	0
+54	68.5	0
+55	68.5	0
+56	68.5	0
+57	68.5	0
+58	68.5	0
+59	68.5	0
+60	68.5	0
+61	68.5	0
+62	68.5	0
+63	68.5	0
+64	68.5	0
+65	68.5	0
+66	68.5	0
+67	68.5	0
+68	68.5	0
+69	68.5	0
+70	68.5	0
+71	68.5	0
+72	68.5	0
+73	68.5	0
+74	68.5	0
+75	68.5	0
+76	68.5	0
+77	68.5	0
+78	68.5	0
+79	68.5	0
+80	68.5	0
+81	68.5	0
+82	68.5	0
+83	68.5	0
+84	68.5	0
+85	68.5	0
+86	68.5	0
+87	68.5	0
+88	68.5	0
+89	68.5	0
+90	68.5	0
+91	68.5	0
+92	68.5	0
+93	68.5	0
+94	68.5	0
+95	68.5	0
+96	68.5	0
+97	68.5	0
+98	68.5	0
+99	68.5	0
+100	68.5	0
+101	68.5	0
+102	68.5	0
+103	68.5	0
+104	68.5	0
+105	68.5	0
+106	68.5	0
+107	68.5	0
+108	68.5	0
+109	68.5	0
+110	68.5	0
+111	68.5	0
+112	68.5	0
+113	68.5	0
+114	68.5	0
+115	68.5	0
+116	68.5	0
+117	68.5	0
+118	68.5	0
+119	68.5	0
+120	68.5	0
+121	68.5	0
+122	68.5	0
+123	68.5	0
+124	68.5	0
+125	68.5	0
+126	68.5	0
+127	68.5	0
+128	68.5	0
+129	68.5	0
+130	68.5	0
+131	68.5	0
+132	68.5	0
+133	68.5	0
+134	68.5	0
+135	68.5	0
+136	68.5	0
+137	68.5	0
+138	68.5	0
+139	68.5	0
+140	68.5	0
+141	68.5	0
+142	68.5	0
+143	68.5	0
+144	68.5	0
+145	68.5	0
+146	68.5	0
+147	68.5	0
+148	68.5	0
+149	68.5	0
+150	68.5	0
+151	68.5	0
+152	68.5	0
+153	68.5	0
+154	68.5	0
+155	68.5	0
+156	68.5	0
+157	68.5	0
+158	68.5	0
+159	68.5	0
+160	68.5	0
+161	68.5	0
+162	68.5	0
+163	68.5	0
+164	68.5	0
+165	68.5	0
+166	68.5	0
+167	68.5	0
+168	68.5	0
+169	68.5	0
+170	68.5	0
+171	68.5	0
+172	68.5	0
+173	68.5	0
+174	68.5	0
+175	68.5	0
+176	68.5	0
+177	68.5	0
+178	68.5	0
+179	68.5	0
+180	68.5	0
+181	68.5	0
+182	68.5	0
+183	68.5	0
+184	68.5	0
+185	68.5	0
+186	68.5	0
+187	68.5	0
+188	68.5	0
+189	68.5	0
+190	68.5	0
+191	68.5	0
+192	68.5	0
+193	68.5	0
+194	68.5	0
+195	68.5	0
+196	68.5	0
+197	68.5	0
+198	68.5	0
+199	68.5	0
+200	68.5	0
+201	68.5	0
+202	68.5	0
+203	68.5	0
+204	68.5	0
+205	68.5	0
+206	68.5	0
+207	68.5	0
+208	68.5	0
+209	68.5	0
+210	68.5	0
+211	68.5	0
+212	68.5	0
+213	68.5	0
+214	68.5	0
+215	68.5	0
+216	68.5	0
+217	68.5	0
+218	68.5	0
+219	68.5	0
+220	68.5	0
+221	68.5	0
+222	68.5	0
+223	68.5	0
+224	68.5	0
+225	68.5	0
+226	68.5	0
+227	68.5	0
+228	68.5	0
+229	68.5	0
+230	68.5	0
+231	68.5	0
+232	68.5	0
+233	68.5	0
+234	68.5	0
+235	68.5	0
+236	68.5	0
+237	68.5	0
+238	68.5	0
+239	68.5	0
+240	68.5	0
+241	68.5	0
+242	68.5	0
+243	68.5	0
+244	68.5	0
+245	68.5	0
+246	68.5	0
+247	68.5	0
+248	68.5	0
+249	68.5	0
+250	68.5	0
+251	68.5	0
+252	68.5	0
+253	68.5	0
+254	68.5	0
+255	68.5	0
+256	68.5	0
+257	68.5	0
+258	68.5	0
+259	68.5	0
+260	68.5	0
+261	68.5	0
+262	68.5	0
+263	68.5	0
+264	68.5	0
+265	68.5	0
+266	68.5	0
+267	68.5	0
+268	68.5	0
+269	68.5	0
+270	68.5	0
+271	68.5	0
+272	68.5	0
+273	68.5	0
+274	68.5	0
+275	68.5	0
+276	68.5	0
+277	68.5	0
+278	68.5	0
+279	68.5	0
+280	68.5	0
+281	68.5	0
+282	68.5	0
+283	68.5	0
+284	68.5	0
+285	68.5	0
+286	68.5	0
+287	68.5	0
+288	68.5	0
+289	68.5	0
+290	68.5	0
+291	68.5	0
+292	68.5	0
+293	68.5	0
+294	68.5	0
+295	68.5	0
+296	68.5	0
+297	68.5	0
+298	68.5	0
+299	68.5	0
+300	68.5	0
+301	68.5	0
+302	68.5	0
+303	68.5	0
+304	68.5	0
+305	68.5	0
+306	68.5	-9.6532
+307	68.5	-17.972
+308	68.5	-20.339
+309	68.5	-20.386
+310	68.5	-21.654
+311	68.5	-21.93
+312	68.5	-22.188
+313	68.5	-22.105
+314	68.5	-21.977
+315	68.5	-21.366
+316	68.5	-20.601
+317	68.5	-20.023
+318	68.5	-19.668
+319	68.5	-19.326
+320	68.5	-18.951
+321	68.5	-18.263
+322	68.5	-17.649
+323	68.5	-17.703
+324	68.5	-17.501
+325	68.5	-17.381
+326	68.5	-17.548
+327	68.5	-17.512
+328	68.5	-17.526
+329	68.5	-16.705
+330	68.5	-15.927
+331	68.5	-15.118
+332	68.5	-14.682
+333	68.5	-6.6878
+334	68.5	-4.8096
+335	68.5	0
+336	68.5	0
+337	68.5	0
+338	68.5	0
+339	68.5	0
+340	68.5	0
+341	68.5	0
+342	68.5	0
+343	68.5	0
+344	68.5	0
+345	68.5	0
+346	68.5	0
+347	68.5	0
+348	68.5	0
+349	68.5	0
+350	68.5	0
+351	68.5	0
+352	68.5	0
+353	68.5	0
+354	68.5	0
+355	68.5	0
+356	68.5	0
+357	68.5	0
+358	68.5	0
+359	68.5	0
+360	68.5	0
+0	69	0
+1	69	0
+2	69	0
+3	69	0
+4	69	0
+5	69	0
+6	69	0
+7	69	0
+8	69	0
+9	69	0
+10	69	0
+11	69	0
+12	69	0
+13	69	0
+14	69	0
+15	69	0
+16	69	0
+17	69	0
+18	69	0
+19	69	0
+20	69	0
+21	69	0
+22	69	0
+23	69	0
+24	69	0
+25	69	0
+26	69	0
+27	69	0
+28	69	0
+29	69	0
+30	69	0
+31	69	0
+32	69	0
+33	69	0
+34	69	0
+35	69	0
+36	69	0
+37	69	0
+38	69	0
+39	69	0
+40	69	0
+41	69	0
+42	69	0
+43	69	0
+44	69	0
+45	69	0
+46	69	0
+47	69	0
+48	69	0
+49	69	0
+50	69	0
+51	69	0
+52	69	0
+53	69	0
+54	69	0
+55	69	0
+56	69	0
+57	69	0
+58	69	0
+59	69	0
+60	69	0
+61	69	0
+62	69	0
+63	69	0
+64	69	0
+65	69	0
+66	69	0
+67	69	0
+68	69	0
+69	69	0
+70	69	0
+71	69	0
+72	69	0
+73	69	0
+74	69	0
+75	69	0
+76	69	0
+77	69	0
+78	69	0
+79	69	0
+80	69	0
+81	69	0
+82	69	0
+83	69	0
+84	69	0
+85	69	0
+86	69	0
+87	69	0
+88	69	0
+89	69	0
+90	69	0
+91	69	0
+92	69	0
+93	69	0
+94	69	0
+95	69	0
+96	69	0
+97	69	0
+98	69	0
+99	69	0
+100	69	0
+101	69	0
+102	69	0
+103	69	0
+104	69	0
+105	69	0
+106	69	0
+107	69	0
+108	69	0
+109	69	0
+110	69	0
+111	69	0
+112	69	0
+113	69	0
+114	69	0
+115	69	0
+116	69	0
+117	69	0
+118	69	0
+119	69	0
+120	69	0
+121	69	0
+122	69	0
+123	69	0
+124	69	0
+125	69	0
+126	69	0
+127	69	0
+128	69	0
+129	69	0
+130	69	0
+131	69	0
+132	69	0
+133	69	0
+134	69	0
+135	69	0
+136	69	0
+137	69	0
+138	69	0
+139	69	0
+140	69	0
+141	69	0
+142	69	0
+143	69	0
+144	69	0
+145	69	0
+146	69	0
+147	69	0
+148	69	0
+149	69	0
+150	69	0
+151	69	0
+152	69	0
+153	69	0
+154	69	0
+155	69	0
+156	69	0
+157	69	0
+158	69	0
+159	69	0
+160	69	0
+161	69	0
+162	69	0
+163	69	0
+164	69	0
+165	69	0
+166	69	0
+167	69	0
+168	69	0
+169	69	0
+170	69	0
+171	69	0
+172	69	0
+173	69	0
+174	69	0
+175	69	0
+176	69	0
+177	69	0
+178	69	0
+179	69	0
+180	69	0
+181	69	0
+182	69	0
+183	69	0
+184	69	0
+185	69	0
+186	69	0
+187	69	0
+188	69	0
+189	69	0
+190	69	0
+191	69	0
+192	69	0
+193	69	0
+194	69	0
+195	69	0
+196	69	0
+197	69	0
+198	69	0
+199	69	0
+200	69	0
+201	69	0
+202	69	0
+203	69	0
+204	69	0
+205	69	0
+206	69	0
+207	69	0
+208	69	0
+209	69	0
+210	69	0
+211	69	0
+212	69	0
+213	69	0
+214	69	0
+215	69	0
+216	69	0
+217	69	0
+218	69	0
+219	69	0
+220	69	0
+221	69	0
+222	69	0
+223	69	0
+224	69	0
+225	69	0
+226	69	0
+227	69	0
+228	69	0
+229	69	0
+230	69	0
+231	69	0
+232	69	0
+233	69	0
+234	69	0
+235	69	0
+236	69	0
+237	69	0
+238	69	0
+239	69	0
+240	69	0
+241	69	0
+242	69	0
+243	69	0
+244	69	0
+245	69	0
+246	69	0
+247	69	0
+248	69	0
+249	69	0
+250	69	0
+251	69	0
+252	69	0
+253	69	0
+254	69	0
+255	69	0
+256	69	0
+257	69	0
+258	69	0
+259	69	0
+260	69	0
+261	69	0
+262	69	0
+263	69	0
+264	69	0
+265	69	0
+266	69	0
+267	69	0
+268	69	0
+269	69	0
+270	69	0
+271	69	0
+272	69	0
+273	69	0
+274	69	0
+275	69	0
+276	69	0
+277	69	0
+278	69	0
+279	69	0
+280	69	0
+281	69	0
+282	69	0
+283	69	0
+284	69	0
+285	69	0
+286	69	0
+287	69	0
+288	69	0
+289	69	0
+290	69	0
+291	69	0
+292	69	0
+293	69	0
+294	69	0
+295	69	0
+296	69	0
+297	69	0
+298	69	0
+299	69	0
+300	69	0
+301	69	0
+302	69	0
+303	69	0
+304	69	0
+305	69	-9.8617
+306	69	-18.966
+307	69	-20.079
+308	69	-8.4539
+309	69	-18.664
+310	69	-21.783
+311	69	-21.963
+312	69	-21.871
+313	69	-21.339
+314	69	-21.211
+315	69	-20.508
+316	69	-19.791
+317	69	-19.257
+318	69	-18.893
+319	69	-18.341
+320	69	-17.817
+321	69	-17.192
+322	69	-16.537
+323	69	-16.719
+324	69	-16.807
+325	69	-16.762
+326	69	-16.658
+327	69	-16.506
+328	69	-16.424
+329	69	-16.481
+330	69	-15.704
+331	69	-15.457
+332	69	-14.589
+333	69	-13.192
+334	69	-9.9915
+335	69	-5.4819
+336	69	0
+337	69	0
+338	69	-0.84306
+339	69	0
+340	69	0
+341	69	0
+342	69	0
+343	69	0
+344	69	0
+345	69	0
+346	69	0
+347	69	0
+348	69	0
+349	69	0
+350	69	0
+351	69	0
+352	69	0
+353	69	0
+354	69	0
+355	69	0
+356	69	0
+357	69	0
+358	69	0
+359	69	0
+360	69	0
+0	69.5	0
+1	69.5	0
+2	69.5	0
+3	69.5	0
+4	69.5	0
+5	69.5	0
+6	69.5	0
+7	69.5	0
+8	69.5	0
+9	69.5	0
+10	69.5	0
+11	69.5	0
+12	69.5	0
+13	69.5	0
+14	69.5	0
+15	69.5	0
+16	69.5	0
+17	69.5	0
+18	69.5	0
+19	69.5	0
+20	69.5	0
+21	69.5	0
+22	69.5	0
+23	69.5	0
+24	69.5	0
+25	69.5	0
+26	69.5	0
+27	69.5	0
+28	69.5	0
+29	69.5	0
+30	69.5	0
+31	69.5	0
+32	69.5	0
+33	69.5	0
+34	69.5	0
+35	69.5	0
+36	69.5	0
+37	69.5	0
+38	69.5	0
+39	69.5	0
+40	69.5	0
+41	69.5	0
+42	69.5	0
+43	69.5	0
+44	69.5	0
+45	69.5	0
+46	69.5	0
+47	69.5	0
+48	69.5	0
+49	69.5	0
+50	69.5	0
+51	69.5	0
+52	69.5	0
+53	69.5	0
+54	69.5	0
+55	69.5	0
+56	69.5	0
+57	69.5	0
+58	69.5	0
+59	69.5	0
+60	69.5	0
+61	69.5	0
+62	69.5	0
+63	69.5	0
+64	69.5	0
+65	69.5	0
+66	69.5	0
+67	69.5	0
+68	69.5	0
+69	69.5	0
+70	69.5	0
+71	69.5	0
+72	69.5	0
+73	69.5	0
+74	69.5	0
+75	69.5	0
+76	69.5	0
+77	69.5	0
+78	69.5	0
+79	69.5	0
+80	69.5	0
+81	69.5	0
+82	69.5	0
+83	69.5	0
+84	69.5	0
+85	69.5	0
+86	69.5	0
+87	69.5	0
+88	69.5	0
+89	69.5	0
+90	69.5	0
+91	69.5	0
+92	69.5	0
+93	69.5	0
+94	69.5	0
+95	69.5	0
+96	69.5	0
+97	69.5	0
+98	69.5	0
+99	69.5	0
+100	69.5	0
+101	69.5	0
+102	69.5	0
+103	69.5	0
+104	69.5	0
+105	69.5	0
+106	69.5	0
+107	69.5	0
+108	69.5	0
+109	69.5	0
+110	69.5	0
+111	69.5	0
+112	69.5	0
+113	69.5	0
+114	69.5	0
+115	69.5	0
+116	69.5	0
+117	69.5	0
+118	69.5	0
+119	69.5	0
+120	69.5	0
+121	69.5	0
+122	69.5	0
+123	69.5	0
+124	69.5	0
+125	69.5	0
+126	69.5	0
+127	69.5	0
+128	69.5	0
+129	69.5	0
+130	69.5	0
+131	69.5	0
+132	69.5	0
+133	69.5	0
+134	69.5	0
+135	69.5	0
+136	69.5	0
+137	69.5	0
+138	69.5	0
+139	69.5	0
+140	69.5	0
+141	69.5	0
+142	69.5	0
+143	69.5	0
+144	69.5	0
+145	69.5	0
+146	69.5	0
+147	69.5	0
+148	69.5	0
+149	69.5	0
+150	69.5	0
+151	69.5	0
+152	69.5	0
+153	69.5	0
+154	69.5	0
+155	69.5	0
+156	69.5	0
+157	69.5	0
+158	69.5	0
+159	69.5	0
+160	69.5	0
+161	69.5	0
+162	69.5	0
+163	69.5	0
+164	69.5	0
+165	69.5	0
+166	69.5	0
+167	69.5	0
+168	69.5	0
+169	69.5	0
+170	69.5	0
+171	69.5	0
+172	69.5	0
+173	69.5	0
+174	69.5	0
+175	69.5	0
+176	69.5	0
+177	69.5	0
+178	69.5	0
+179	69.5	0
+180	69.5	0
+181	69.5	0
+182	69.5	0
+183	69.5	0
+184	69.5	0
+185	69.5	0
+186	69.5	0
+187	69.5	0
+188	69.5	0
+189	69.5	0
+190	69.5	0
+191	69.5	0
+192	69.5	0
+193	69.5	0
+194	69.5	0
+195	69.5	0
+196	69.5	0
+197	69.5	0
+198	69.5	0
+199	69.5	0
+200	69.5	0
+201	69.5	0
+202	69.5	0
+203	69.5	0
+204	69.5	0
+205	69.5	0
+206	69.5	0
+207	69.5	0
+208	69.5	0
+209	69.5	0
+210	69.5	0
+211	69.5	0
+212	69.5	0
+213	69.5	0
+214	69.5	0
+215	69.5	0
+216	69.5	0
+217	69.5	0
+218	69.5	0
+219	69.5	0
+220	69.5	0
+221	69.5	0
+222	69.5	0
+223	69.5	0
+224	69.5	0
+225	69.5	0
+226	69.5	0
+227	69.5	0
+228	69.5	0
+229	69.5	0
+230	69.5	0
+231	69.5	0
+232	69.5	0
+233	69.5	0
+234	69.5	0
+235	69.5	0
+236	69.5	0
+237	69.5	0
+238	69.5	0
+239	69.5	0
+240	69.5	0
+241	69.5	0
+242	69.5	0
+243	69.5	0
+244	69.5	0
+245	69.5	0
+246	69.5	0
+247	69.5	0
+248	69.5	0
+249	69.5	0
+250	69.5	0
+251	69.5	0
+252	69.5	0
+253	69.5	0
+254	69.5	0
+255	69.5	0
+256	69.5	0
+257	69.5	0
+258	69.5	0
+259	69.5	0
+260	69.5	0
+261	69.5	0
+262	69.5	0
+263	69.5	0
+264	69.5	0
+265	69.5	0
+266	69.5	0
+267	69.5	0
+268	69.5	0
+269	69.5	0
+270	69.5	0
+271	69.5	0
+272	69.5	0
+273	69.5	0
+274	69.5	0
+275	69.5	0
+276	69.5	0
+277	69.5	0
+278	69.5	0
+279	69.5	0
+280	69.5	0
+281	69.5	0
+282	69.5	0
+283	69.5	0
+284	69.5	0
+285	69.5	0
+286	69.5	0
+287	69.5	0
+288	69.5	0
+289	69.5	0
+290	69.5	0
+291	69.5	0
+292	69.5	0
+293	69.5	0
+294	69.5	0
+295	69.5	0
+296	69.5	0
+297	69.5	0
+298	69.5	0
+299	69.5	0
+300	69.5	0
+301	69.5	0
+302	69.5	0
+303	69.5	0
+304	69.5	-3.283
+305	69.5	-16.914
+306	69.5	-19.448
+307	69.5	-20.302
+308	69.5	-3.8786
+309	69.5	-16.941
+310	69.5	-21.881
+311	69.5	-21.889
+312	69.5	-21.435
+313	69.5	-20.574
+314	69.5	-20.409
+315	69.5	-19.625
+316	69.5	-18.893
+317	69.5	-17.891
+318	69.5	-17.339
+319	69.5	-16.787
+320	69.5	-16.261
+321	69.5	-15.758
+322	69.5	-15.251
+323	69.5	-15.184
+324	69.5	-15.232
+325	69.5	-15.269
+326	69.5	-15.52
+327	69.5	-15.426
+328	69.5	-15.311
+329	69.5	-15.325
+330	69.5	-15.449
+331	69.5	-15.355
+332	69.5	-14.143
+333	69.5	-12.479
+334	69.5	-12.171
+335	69.5	-10.984
+336	69.5	-5.6182
+337	69.5	-5.1596
+338	69.5	-4.3465
+339	69.5	-0.50482
+340	69.5	0
+341	69.5	0
+342	69.5	0
+343	69.5	0
+344	69.5	0
+345	69.5	0
+346	69.5	0
+347	69.5	0
+348	69.5	0
+349	69.5	0
+350	69.5	0
+351	69.5	0
+352	69.5	0
+353	69.5	0
+354	69.5	0
+355	69.5	0
+356	69.5	0
+357	69.5	0
+358	69.5	0
+359	69.5	0
+360	69.5	0
+0	70	0
+1	70	0
+2	70	0
+3	70	0
+4	70	0
+5	70	0
+6	70	0
+7	70	0
+8	70	0
+9	70	0
+10	70	0
+11	70	0
+12	70	0
+13	70	0
+14	70	0
+15	70	0
+16	70	0
+17	70	0
+18	70	0
+19	70	0
+20	70	0
+21	70	0
+22	70	0
+23	70	0
+24	70	0
+25	70	0
+26	70	0
+27	70	0
+28	70	0
+29	70	0
+30	70	0
+31	70	0
+32	70	0
+33	70	0
+34	70	0
+35	70	0
+36	70	0
+37	70	0
+38	70	0
+39	70	0
+40	70	0
+41	70	0
+42	70	0
+43	70	0
+44	70	0
+45	70	0
+46	70	0
+47	70	0
+48	70	0
+49	70	0
+50	70	0
+51	70	0
+52	70	0
+53	70	0
+54	70	0
+55	70	0
+56	70	0
+57	70	0
+58	70	0
+59	70	0
+60	70	0
+61	70	0
+62	70	0
+63	70	0
+64	70	0
+65	70	0
+66	70	0
+67	70	0
+68	70	0
+69	70	0
+70	70	0
+71	70	0
+72	70	0
+73	70	0
+74	70	0
+75	70	0
+76	70	0
+77	70	0
+78	70	0
+79	70	0
+80	70	0
+81	70	0
+82	70	0
+83	70	0
+84	70	0
+85	70	0
+86	70	0
+87	70	0
+88	70	0
+89	70	0
+90	70	0
+91	70	0
+92	70	0
+93	70	0
+94	70	0
+95	70	0
+96	70	0
+97	70	0
+98	70	0
+99	70	0
+100	70	0
+101	70	0
+102	70	0
+103	70	0
+104	70	0
+105	70	0
+106	70	0
+107	70	0
+108	70	0
+109	70	0
+110	70	0
+111	70	0
+112	70	0
+113	70	0
+114	70	0
+115	70	0
+116	70	0
+117	70	0
+118	70	0
+119	70	0
+120	70	0
+121	70	0
+122	70	0
+123	70	0
+124	70	0
+125	70	0
+126	70	0
+127	70	0
+128	70	0
+129	70	0
+130	70	0
+131	70	0
+132	70	0
+133	70	0
+134	70	0
+135	70	0
+136	70	0
+137	70	0
+138	70	0
+139	70	0
+140	70	0
+141	70	0
+142	70	0
+143	70	0
+144	70	0
+145	70	0
+146	70	0
+147	70	0
+148	70	0
+149	70	0
+150	70	0
+151	70	0
+152	70	0
+153	70	0
+154	70	0
+155	70	0
+156	70	0
+157	70	0
+158	70	0
+159	70	0
+160	70	0
+161	70	0
+162	70	0
+163	70	0
+164	70	0
+165	70	0
+166	70	0
+167	70	0
+168	70	0
+169	70	0
+170	70	0
+171	70	0
+172	70	0
+173	70	0
+174	70	0
+175	70	0
+176	70	0
+177	70	0
+178	70	0
+179	70	0
+180	70	0
+181	70	0
+182	70	0
+183	70	0
+184	70	0
+185	70	0
+186	70	0
+187	70	0
+188	70	0
+189	70	0
+190	70	0
+191	70	0
+192	70	0
+193	70	0
+194	70	0
+195	70	0
+196	70	0
+197	70	0
+198	70	0
+199	70	0
+200	70	0
+201	70	0
+202	70	0
+203	70	0
+204	70	0
+205	70	0
+206	70	0
+207	70	0
+208	70	0
+209	70	0
+210	70	0
+211	70	0
+212	70	0
+213	70	0
+214	70	0
+215	70	0
+216	70	0
+217	70	0
+218	70	0
+219	70	0
+220	70	0
+221	70	0
+222	70	0
+223	70	0
+224	70	0
+225	70	0
+226	70	0
+227	70	0
+228	70	0
+229	70	0
+230	70	0
+231	70	0
+232	70	0
+233	70	0
+234	70	0
+235	70	0
+236	70	0
+237	70	0
+238	70	0
+239	70	0
+240	70	0
+241	70	0
+242	70	0
+243	70	0
+244	70	0
+245	70	0
+246	70	0
+247	70	0
+248	70	0
+249	70	0
+250	70	0
+251	70	0
+252	70	0
+253	70	0
+254	70	0
+255	70	0
+256	70	0
+257	70	0
+258	70	0
+259	70	0
+260	70	0
+261	70	0
+262	70	0
+263	70	0
+264	70	0
+265	70	0
+266	70	0
+267	70	0
+268	70	0
+269	70	0
+270	70	0
+271	70	0
+272	70	0
+273	70	0
+274	70	0
+275	70	0
+276	70	0
+277	70	0
+278	70	0
+279	70	0
+280	70	0
+281	70	0
+282	70	0
+283	70	0
+284	70	0
+285	70	0
+286	70	0
+287	70	0
+288	70	0
+289	70	0
+290	70	0
+291	70	0
+292	70	0
+293	70	0
+294	70	0
+295	70	0
+296	70	0
+297	70	0
+298	70	0
+299	70	0
+300	70	0
+301	70	0
+302	70	0
+303	70	0
+304	70	-1.6999
+305	70	-15.81
+306	70	-19.742
+307	70	-20.554
+308	70	-14.928
+309	70	-15.218
+310	70	-21.89
+311	70	-21.847
+312	70	-21
+313	70	-19.996
+314	70	-19.541
+315	70	-18.757
+316	70	-17.979
+317	70	-16.886
+318	70	-15.786
+319	70	-15.234
+320	70	-14.705
+321	70	-14.202
+322	70	-13.687
+323	70	-13.556
+324	70	-13.656
+325	70	-13.718
+326	70	-14.089
+327	70	-14.299
+328	70	-14.17
+329	70	-14.185
+330	70	-14.27
+331	70	-14.254
+332	70	-13.693
+333	70	-12.048
+334	70	-11.566
+335	70	-11.124
+336	70	-10.137
+337	70	-9.8148
+338	70	-7.6113
+339	70	-3.5978
+340	70	0
+341	70	0
+342	70	0
+343	70	0
+344	70	0
+345	70	0
+346	70	0
+347	70	0
+348	70	0
+349	70	0
+350	70	0
+351	70	0
+352	70	0
+353	70	0
+354	70	0
+355	70	0
+356	70	0
+357	70	0
+358	70	0
+359	70	0
+360	70	0
+0	70.5	0
+1	70.5	0
+2	70.5	0
+3	70.5	0
+4	70.5	0
+5	70.5	0
+6	70.5	0
+7	70.5	0
+8	70.5	0
+9	70.5	0
+10	70.5	0
+11	70.5	0
+12	70.5	0
+13	70.5	0
+14	70.5	0
+15	70.5	0
+16	70.5	0
+17	70.5	0
+18	70.5	0
+19	70.5	0
+20	70.5	0
+21	70.5	0
+22	70.5	0
+23	70.5	0
+24	70.5	0
+25	70.5	0
+26	70.5	0
+27	70.5	0
+28	70.5	0
+29	70.5	0
+30	70.5	0
+31	70.5	0
+32	70.5	0
+33	70.5	0
+34	70.5	0
+35	70.5	0
+36	70.5	0
+37	70.5	0
+38	70.5	0
+39	70.5	0
+40	70.5	0
+41	70.5	0
+42	70.5	0
+43	70.5	0
+44	70.5	0
+45	70.5	0
+46	70.5	0
+47	70.5	0
+48	70.5	0
+49	70.5	0
+50	70.5	0
+51	70.5	0
+52	70.5	0
+53	70.5	0
+54	70.5	0
+55	70.5	0
+56	70.5	0
+57	70.5	0
+58	70.5	0
+59	70.5	0
+60	70.5	0
+61	70.5	0
+62	70.5	0
+63	70.5	0
+64	70.5	0
+65	70.5	0
+66	70.5	0
+67	70.5	0
+68	70.5	0
+69	70.5	0
+70	70.5	0
+71	70.5	0
+72	70.5	0
+73	70.5	0
+74	70.5	0
+75	70.5	0
+76	70.5	0
+77	70.5	0
+78	70.5	0
+79	70.5	0
+80	70.5	0
+81	70.5	0
+82	70.5	0
+83	70.5	0
+84	70.5	0
+85	70.5	0
+86	70.5	0
+87	70.5	0
+88	70.5	0
+89	70.5	0
+90	70.5	0
+91	70.5	0
+92	70.5	0
+93	70.5	0
+94	70.5	0
+95	70.5	0
+96	70.5	0
+97	70.5	0
+98	70.5	0
+99	70.5	0
+100	70.5	0
+101	70.5	0
+102	70.5	0
+103	70.5	0
+104	70.5	0
+105	70.5	0
+106	70.5	0
+107	70.5	0
+108	70.5	0
+109	70.5	0
+110	70.5	0
+111	70.5	0
+112	70.5	0
+113	70.5	0
+114	70.5	0
+115	70.5	0
+116	70.5	0
+117	70.5	0
+118	70.5	0
+119	70.5	0
+120	70.5	0
+121	70.5	0
+122	70.5	0
+123	70.5	0
+124	70.5	0
+125	70.5	0
+126	70.5	0
+127	70.5	0
+128	70.5	0
+129	70.5	0
+130	70.5	0
+131	70.5	0
+132	70.5	0
+133	70.5	0
+134	70.5	0
+135	70.5	0
+136	70.5	0
+137	70.5	0
+138	70.5	0
+139	70.5	0
+140	70.5	0
+141	70.5	0
+142	70.5	0
+143	70.5	0
+144	70.5	0
+145	70.5	0
+146	70.5	0
+147	70.5	0
+148	70.5	0
+149	70.5	0
+150	70.5	0
+151	70.5	0
+152	70.5	0
+153	70.5	0
+154	70.5	0
+155	70.5	0
+156	70.5	0
+157	70.5	0
+158	70.5	0
+159	70.5	0
+160	70.5	0
+161	70.5	0
+162	70.5	0
+163	70.5	0
+164	70.5	0
+165	70.5	0
+166	70.5	0
+167	70.5	0
+168	70.5	0
+169	70.5	0
+170	70.5	0
+171	70.5	0
+172	70.5	0
+173	70.5	0
+174	70.5	0
+175	70.5	0
+176	70.5	0
+177	70.5	0
+178	70.5	0
+179	70.5	0
+180	70.5	0
+181	70.5	0
+182	70.5	0
+183	70.5	0
+184	70.5	0
+185	70.5	0
+186	70.5	0
+187	70.5	0
+188	70.5	0
+189	70.5	0
+190	70.5	0
+191	70.5	0
+192	70.5	0
+193	70.5	0
+194	70.5	0
+195	70.5	0
+196	70.5	0
+197	70.5	0
+198	70.5	0
+199	70.5	0
+200	70.5	0
+201	70.5	0
+202	70.5	0
+203	70.5	0
+204	70.5	0
+205	70.5	0
+206	70.5	0
+207	70.5	0
+208	70.5	0
+209	70.5	0
+210	70.5	0
+211	70.5	0
+212	70.5	0
+213	70.5	0
+214	70.5	0
+215	70.5	0
+216	70.5	0
+217	70.5	0
+218	70.5	0
+219	70.5	0
+220	70.5	0
+221	70.5	0
+222	70.5	0
+223	70.5	0
+224	70.5	0
+225	70.5	0
+226	70.5	0
+227	70.5	0
+228	70.5	0
+229	70.5	0
+230	70.5	0
+231	70.5	0
+232	70.5	0
+233	70.5	0
+234	70.5	0
+235	70.5	0
+236	70.5	0
+237	70.5	0
+238	70.5	0
+239	70.5	0
+240	70.5	0
+241	70.5	0
+242	70.5	0
+243	70.5	0
+244	70.5	0
+245	70.5	0
+246	70.5	0
+247	70.5	0
+248	70.5	0
+249	70.5	0
+250	70.5	0
+251	70.5	0
+252	70.5	0
+253	70.5	0
+254	70.5	0
+255	70.5	0
+256	70.5	0
+257	70.5	0
+258	70.5	0
+259	70.5	0
+260	70.5	0
+261	70.5	0
+262	70.5	0
+263	70.5	0
+264	70.5	0
+265	70.5	0
+266	70.5	0
+267	70.5	0
+268	70.5	0
+269	70.5	0
+270	70.5	0
+271	70.5	0
+272	70.5	0
+273	70.5	0
+274	70.5	0
+275	70.5	0
+276	70.5	0
+277	70.5	0
+278	70.5	0
+279	70.5	0
+280	70.5	0
+281	70.5	0
+282	70.5	0
+283	70.5	0
+284	70.5	0
+285	70.5	0
+286	70.5	0
+287	70.5	0
+288	70.5	0
+289	70.5	0
+290	70.5	0
+291	70.5	0
+292	70.5	0
+293	70.5	0
+294	70.5	0
+295	70.5	0
+296	70.5	0
+297	70.5	0
+298	70.5	0
+299	70.5	0
+300	70.5	0
+301	70.5	0
+302	70.5	0
+303	70.5	0
+304	70.5	0
+305	70.5	-12.288
+306	70.5	-20.059
+307	70.5	-20.755
+308	70.5	-21.375
+309	70.5	-21.714
+310	70.5	-21.642
+311	70.5	-21.183
+312	70.5	-20.458
+313	70.5	-19.528
+314	70.5	-18.673
+315	70.5	-17.889
+316	70.5	-17.015
+317	70.5	-15.862
+318	70.5	-14.71
+319	70.5	-13.68
+320	70.5	-13.149
+321	70.5	-12.638
+322	70.5	-12.123
+323	70.5	-11.98
+324	70.5	-12.08
+325	70.5	-12.167
+326	70.5	-12.609
+327	70.5	-12.966
+328	70.5	-12.954
+329	70.5	-13.016
+330	70.5	-13.05
+331	70.5	-13.1
+332	70.5	-12.731
+333	70.5	-11.621
+334	70.5	-10.96
+335	70.5	-11.138
+336	70.5	-10.373
+337	70.5	-9.6118
+338	70.5	-7.9147
+339	70.5	-3.7145
+340	70.5	0
+341	70.5	0
+342	70.5	0
+343	70.5	0
+344	70.5	0
+345	70.5	0
+346	70.5	0
+347	70.5	0
+348	70.5	0
+349	70.5	0
+350	70.5	0
+351	70.5	0
+352	70.5	0
+353	70.5	0
+354	70.5	0
+355	70.5	0
+356	70.5	0
+357	70.5	0
+358	70.5	0
+359	70.5	0
+360	70.5	0
+0	71	0
+1	71	0
+2	71	0
+3	71	0
+4	71	0
+5	71	0
+6	71	0
+7	71	0
+8	71	0
+9	71	0
+10	71	0
+11	71	0
+12	71	0
+13	71	0
+14	71	0
+15	71	0
+16	71	0
+17	71	0
+18	71	0
+19	71	0
+20	71	0
+21	71	0
+22	71	0
+23	71	0
+24	71	0
+25	71	0
+26	71	0
+27	71	0
+28	71	0
+29	71	0
+30	71	0
+31	71	0
+32	71	0
+33	71	0
+34	71	0
+35	71	0
+36	71	0
+37	71	0
+38	71	0
+39	71	0
+40	71	0
+41	71	0
+42	71	0
+43	71	0
+44	71	0
+45	71	0
+46	71	0
+47	71	0
+48	71	0
+49	71	0
+50	71	0
+51	71	0
+52	71	0
+53	71	0
+54	71	0
+55	71	0
+56	71	0
+57	71	0
+58	71	0
+59	71	0
+60	71	0
+61	71	0
+62	71	0
+63	71	0
+64	71	0
+65	71	0
+66	71	0
+67	71	0
+68	71	0
+69	71	0
+70	71	0
+71	71	0
+72	71	0
+73	71	0
+74	71	0
+75	71	0
+76	71	0
+77	71	0
+78	71	0
+79	71	0
+80	71	0
+81	71	0
+82	71	0
+83	71	0
+84	71	0
+85	71	0
+86	71	0
+87	71	0
+88	71	0
+89	71	0
+90	71	0
+91	71	0
+92	71	0
+93	71	0
+94	71	0
+95	71	0
+96	71	0
+97	71	0
+98	71	0
+99	71	0
+100	71	0
+101	71	0
+102	71	0
+103	71	0
+104	71	0
+105	71	0
+106	71	0
+107	71	0
+108	71	0
+109	71	0
+110	71	0
+111	71	0
+112	71	0
+113	71	0
+114	71	0
+115	71	0
+116	71	0
+117	71	0
+118	71	0
+119	71	0
+120	71	0
+121	71	0
+122	71	0
+123	71	0
+124	71	0
+125	71	0
+126	71	0
+127	71	0
+128	71	0
+129	71	0
+130	71	0
+131	71	0
+132	71	0
+133	71	0
+134	71	0
+135	71	0
+136	71	0
+137	71	0
+138	71	0
+139	71	0
+140	71	0
+141	71	0
+142	71	0
+143	71	0
+144	71	0
+145	71	0
+146	71	0
+147	71	0
+148	71	0
+149	71	0
+150	71	0
+151	71	0
+152	71	0
+153	71	0
+154	71	0
+155	71	0
+156	71	0
+157	71	0
+158	71	0
+159	71	0
+160	71	0
+161	71	0
+162	71	0
+163	71	0
+164	71	0
+165	71	0
+166	71	0
+167	71	0
+168	71	0
+169	71	0
+170	71	0
+171	71	0
+172	71	0
+173	71	0
+174	71	0
+175	71	0
+176	71	0
+177	71	0
+178	71	0
+179	71	0
+180	71	0
+181	71	0
+182	71	0
+183	71	0
+184	71	0
+185	71	0
+186	71	0
+187	71	0
+188	71	0
+189	71	0
+190	71	0
+191	71	0
+192	71	0
+193	71	0
+194	71	0
+195	71	0
+196	71	0
+197	71	0
+198	71	0
+199	71	0
+200	71	0
+201	71	0
+202	71	0
+203	71	0
+204	71	0
+205	71	0
+206	71	0
+207	71	0
+208	71	0
+209	71	0
+210	71	0
+211	71	0
+212	71	0
+213	71	0
+214	71	0
+215	71	0
+216	71	0
+217	71	0
+218	71	0
+219	71	0
+220	71	0
+221	71	0
+222	71	0
+223	71	0
+224	71	0
+225	71	0
+226	71	0
+227	71	0
+228	71	0
+229	71	0
+230	71	0
+231	71	0
+232	71	0
+233	71	0
+234	71	0
+235	71	0
+236	71	0
+237	71	0
+238	71	0
+239	71	0
+240	71	0
+241	71	0
+242	71	0
+243	71	0
+244	71	0
+245	71	0
+246	71	0
+247	71	0
+248	71	0
+249	71	0
+250	71	0
+251	71	0
+252	71	0
+253	71	0
+254	71	0
+255	71	0
+256	71	0
+257	71	0
+258	71	0
+259	71	0
+260	71	0
+261	71	0
+262	71	0
+263	71	0
+264	71	0
+265	71	0
+266	71	0
+267	71	0
+268	71	0
+269	71	0
+270	71	0
+271	71	0
+272	71	0
+273	71	0
+274	71	0
+275	71	0
+276	71	0
+277	71	0
+278	71	0
+279	71	0
+280	71	0
+281	71	0
+282	71	0
+283	71	0
+284	71	0
+285	71	0
+286	71	0
+287	71	0
+288	71	0
+289	71	0
+290	71	0
+291	71	0
+292	71	0
+293	71	0
+294	71	0
+295	71	0
+296	71	0
+297	71	0
+298	71	0
+299	71	0
+300	71	0
+301	71	0
+302	71	0
+303	71	0
+304	71	0
+305	71	-7.1959
+306	71	-18.74
+307	71	-20.859
+308	71	-21.453
+309	71	-21.488
+310	71	-21.033
+311	71	-20.415
+312	71	-19.782
+313	71	-18.922
+314	71	-17.806
+315	71	-17.022
+316	71	-15.769
+317	71	-14.546
+318	71	-13.493
+319	71	-12.439
+320	71	-11.603
+321	71	-11.127
+322	71	-10.685
+323	71	-10.456
+324	71	-10.541
+325	71	-10.616
+326	71	-10.783
+327	71	-11.169
+328	71	-11.477
+329	71	-11.818
+330	71	-11.84
+331	71	-11.865
+332	71	-11.768
+333	71	-11.049
+334	71	-10.594
+335	71	-10.532
+336	71	-10.316
+337	71	-9.3475
+338	71	-6.9172
+339	71	-2.5341
+340	71	0
+341	71	0
+342	71	0
+343	71	0
+344	71	0
+345	71	0
+346	71	0
+347	71	0
+348	71	0
+349	71	0
+350	71	0
+351	71	0
+352	71	0
+353	71	0
+354	71	0
+355	71	0
+356	71	0
+357	71	0
+358	71	0
+359	71	0
+360	71	0
+0	71.5	0
+1	71.5	0
+2	71.5	0
+3	71.5	0
+4	71.5	0
+5	71.5	0
+6	71.5	0
+7	71.5	0
+8	71.5	0
+9	71.5	0
+10	71.5	0
+11	71.5	0
+12	71.5	0
+13	71.5	0
+14	71.5	0
+15	71.5	0
+16	71.5	0
+17	71.5	0
+18	71.5	0
+19	71.5	0
+20	71.5	0
+21	71.5	0
+22	71.5	0
+23	71.5	0
+24	71.5	0
+25	71.5	0
+26	71.5	0
+27	71.5	0
+28	71.5	0
+29	71.5	0
+30	71.5	0
+31	71.5	0
+32	71.5	0
+33	71.5	0
+34	71.5	0
+35	71.5	0
+36	71.5	0
+37	71.5	0
+38	71.5	0
+39	71.5	0
+40	71.5	0
+41	71.5	0
+42	71.5	0
+43	71.5	0
+44	71.5	0
+45	71.5	0
+46	71.5	0
+47	71.5	0
+48	71.5	0
+49	71.5	0
+50	71.5	0
+51	71.5	0
+52	71.5	0
+53	71.5	0
+54	71.5	0
+55	71.5	0
+56	71.5	0
+57	71.5	0
+58	71.5	0
+59	71.5	0
+60	71.5	0
+61	71.5	0
+62	71.5	0
+63	71.5	0
+64	71.5	0
+65	71.5	0
+66	71.5	0
+67	71.5	0
+68	71.5	0
+69	71.5	0
+70	71.5	0
+71	71.5	0
+72	71.5	0
+73	71.5	0
+74	71.5	0
+75	71.5	0
+76	71.5	0
+77	71.5	0
+78	71.5	0
+79	71.5	0
+80	71.5	0
+81	71.5	0
+82	71.5	0
+83	71.5	0
+84	71.5	0
+85	71.5	0
+86	71.5	0
+87	71.5	0
+88	71.5	0
+89	71.5	0
+90	71.5	0
+91	71.5	0
+92	71.5	0
+93	71.5	0
+94	71.5	0
+95	71.5	0
+96	71.5	0
+97	71.5	0
+98	71.5	0
+99	71.5	0
+100	71.5	0
+101	71.5	0
+102	71.5	0
+103	71.5	0
+104	71.5	0
+105	71.5	0
+106	71.5	0
+107	71.5	0
+108	71.5	0
+109	71.5	0
+110	71.5	0
+111	71.5	0
+112	71.5	0
+113	71.5	0
+114	71.5	0
+115	71.5	0
+116	71.5	0
+117	71.5	0
+118	71.5	0
+119	71.5	0
+120	71.5	0
+121	71.5	0
+122	71.5	0
+123	71.5	0
+124	71.5	0
+125	71.5	0
+126	71.5	0
+127	71.5	0
+128	71.5	0
+129	71.5	0
+130	71.5	0
+131	71.5	0
+132	71.5	0
+133	71.5	0
+134	71.5	0
+135	71.5	0
+136	71.5	0
+137	71.5	0
+138	71.5	0
+139	71.5	0
+140	71.5	0
+141	71.5	0
+142	71.5	0
+143	71.5	0
+144	71.5	0
+145	71.5	0
+146	71.5	0
+147	71.5	0
+148	71.5	0
+149	71.5	0
+150	71.5	0
+151	71.5	0
+152	71.5	0
+153	71.5	0
+154	71.5	0
+155	71.5	0
+156	71.5	0
+157	71.5	0
+158	71.5	0
+159	71.5	0
+160	71.5	0
+161	71.5	0
+162	71.5	0
+163	71.5	0
+164	71.5	0
+165	71.5	0
+166	71.5	0
+167	71.5	0
+168	71.5	0
+169	71.5	0
+170	71.5	0
+171	71.5	0
+172	71.5	0
+173	71.5	0
+174	71.5	0
+175	71.5	0
+176	71.5	0
+177	71.5	0
+178	71.5	0
+179	71.5	0
+180	71.5	0
+181	71.5	0
+182	71.5	0
+183	71.5	0
+184	71.5	0
+185	71.5	0
+186	71.5	0
+187	71.5	0
+188	71.5	0
+189	71.5	0
+190	71.5	0
+191	71.5	0
+192	71.5	0
+193	71.5	0
+194	71.5	0
+195	71.5	0
+196	71.5	0
+197	71.5	0
+198	71.5	0
+199	71.5	0
+200	71.5	0
+201	71.5	0
+202	71.5	0
+203	71.5	0
+204	71.5	0
+205	71.5	0
+206	71.5	0
+207	71.5	0
+208	71.5	0
+209	71.5	0
+210	71.5	0
+211	71.5	0
+212	71.5	0
+213	71.5	0
+214	71.5	0
+215	71.5	0
+216	71.5	0
+217	71.5	0
+218	71.5	0
+219	71.5	0
+220	71.5	0
+221	71.5	0
+222	71.5	0
+223	71.5	0
+224	71.5	0
+225	71.5	0
+226	71.5	0
+227	71.5	0
+228	71.5	0
+229	71.5	0
+230	71.5	0
+231	71.5	0
+232	71.5	0
+233	71.5	0
+234	71.5	0
+235	71.5	0
+236	71.5	0
+237	71.5	0
+238	71.5	0
+239	71.5	0
+240	71.5	0
+241	71.5	0
+242	71.5	0
+243	71.5	0
+244	71.5	0
+245	71.5	0
+246	71.5	0
+247	71.5	0
+248	71.5	0
+249	71.5	0
+250	71.5	0
+251	71.5	0
+252	71.5	0
+253	71.5	0
+254	71.5	0
+255	71.5	0
+256	71.5	0
+257	71.5	0
+258	71.5	0
+259	71.5	0
+260	71.5	0
+261	71.5	0
+262	71.5	0
+263	71.5	0
+264	71.5	0
+265	71.5	0
+266	71.5	0
+267	71.5	0
+268	71.5	0
+269	71.5	0
+270	71.5	0
+271	71.5	0
+272	71.5	0
+273	71.5	0
+274	71.5	0
+275	71.5	0
+276	71.5	0
+277	71.5	0
+278	71.5	0
+279	71.5	0
+280	71.5	0
+281	71.5	0
+282	71.5	0
+283	71.5	0
+284	71.5	0
+285	71.5	0
+286	71.5	0
+287	71.5	0
+288	71.5	0
+289	71.5	0
+290	71.5	0
+291	71.5	0
+292	71.5	0
+293	71.5	0
+294	71.5	0
+295	71.5	0
+296	71.5	0
+297	71.5	0
+298	71.5	0
+299	71.5	0
+300	71.5	0
+301	71.5	0
+302	71.5	0
+303	71.5	0
+304	71.5	0
+305	71.5	-8.6966
+306	71.5	-20.483
+307	71.5	-20.898
+308	71.5	-21.426
+309	71.5	-20.975
+310	71.5	-20.379
+311	71.5	-19.699
+312	71.5	-19.049
+313	71.5	-18.117
+314	71.5	-16.938
+315	71.5	-15.914
+316	71.5	-14.524
+317	71.5	-13.23
+318	71.5	-12.176
+319	71.5	-11.122
+320	71.5	-10.137
+321	71.5	-9.6607
+322	71.5	-9.2952
+323	71.5	-8.9483
+324	71.5	-9.0197
+325	71.5	-9.0555
+326	71.5	-8.9902
+327	71.5	-9.3704
+328	71.5	-9.8082
+329	71.5	-10.366
+330	71.5	-10.604
+331	71.5	-10.628
+332	71.5	-10.693
+333	71.5	-10.29
+334	71.5	-9.9108
+335	71.5	-9.9121
+336	71.5	-9.7315
+337	71.5	-8.984
+338	71.5	-6.63
+339	71.5	-2.082
+340	71.5	0
+341	71.5	0
+342	71.5	0
+343	71.5	0
+344	71.5	0
+345	71.5	0
+346	71.5	0
+347	71.5	0
+348	71.5	0
+349	71.5	0
+350	71.5	0
+351	71.5	0
+352	71.5	0
+353	71.5	0
+354	71.5	0
+355	71.5	0
+356	71.5	0
+357	71.5	0
+358	71.5	0
+359	71.5	0
+360	71.5	0
+0	72	0
+1	72	0
+2	72	0
+3	72	0
+4	72	0
+5	72	0
+6	72	0
+7	72	0
+8	72	0
+9	72	0
+10	72	0
+11	72	0
+12	72	0
+13	72	0
+14	72	0
+15	72	0
+16	72	0
+17	72	0
+18	72	0
+19	72	0
+20	72	0
+21	72	0
+22	72	0
+23	72	0
+24	72	0
+25	72	0
+26	72	0
+27	72	0
+28	72	0
+29	72	0
+30	72	0
+31	72	0
+32	72	0
+33	72	0
+34	72	0
+35	72	0
+36	72	0
+37	72	0
+38	72	0
+39	72	0
+40	72	0
+41	72	0
+42	72	0
+43	72	0
+44	72	0
+45	72	0
+46	72	0
+47	72	0
+48	72	0
+49	72	0
+50	72	0
+51	72	0
+52	72	0
+53	72	0
+54	72	0
+55	72	0
+56	72	0
+57	72	0
+58	72	0
+59	72	0
+60	72	0
+61	72	0
+62	72	0
+63	72	0
+64	72	0
+65	72	0
+66	72	0
+67	72	0
+68	72	0
+69	72	0
+70	72	0
+71	72	0
+72	72	0
+73	72	0
+74	72	0
+75	72	0
+76	72	0
+77	72	0
+78	72	0
+79	72	0
+80	72	0
+81	72	0
+82	72	0
+83	72	0
+84	72	0
+85	72	0
+86	72	0
+87	72	0
+88	72	0
+89	72	0
+90	72	0
+91	72	0
+92	72	0
+93	72	0
+94	72	0
+95	72	0
+96	72	0
+97	72	0
+98	72	0
+99	72	0
+100	72	0
+101	72	0
+102	72	0
+103	72	0
+104	72	0
+105	72	0
+106	72	0
+107	72	0
+108	72	0
+109	72	0
+110	72	0
+111	72	0
+112	72	0
+113	72	0
+114	72	0
+115	72	0
+116	72	0
+117	72	0
+118	72	0
+119	72	0
+120	72	0
+121	72	0
+122	72	0
+123	72	0
+124	72	0
+125	72	0
+126	72	0
+127	72	0
+128	72	0
+129	72	0
+130	72	0
+131	72	0
+132	72	0
+133	72	0
+134	72	0
+135	72	0
+136	72	0
+137	72	0
+138	72	0
+139	72	0
+140	72	0
+141	72	0
+142	72	0
+143	72	0
+144	72	0
+145	72	0
+146	72	0
+147	72	0
+148	72	0
+149	72	0
+150	72	0
+151	72	0
+152	72	0
+153	72	0
+154	72	0
+155	72	0
+156	72	0
+157	72	0
+158	72	0
+159	72	0
+160	72	0
+161	72	0
+162	72	0
+163	72	0
+164	72	0
+165	72	0
+166	72	0
+167	72	0
+168	72	0
+169	72	0
+170	72	0
+171	72	0
+172	72	0
+173	72	0
+174	72	0
+175	72	0
+176	72	0
+177	72	0
+178	72	0
+179	72	0
+180	72	0
+181	72	0
+182	72	0
+183	72	0
+184	72	0
+185	72	0
+186	72	0
+187	72	0
+188	72	0
+189	72	0
+190	72	0
+191	72	0
+192	72	0
+193	72	0
+194	72	0
+195	72	0
+196	72	0
+197	72	0
+198	72	0
+199	72	0
+200	72	0
+201	72	0
+202	72	0
+203	72	0
+204	72	0
+205	72	0
+206	72	0
+207	72	0
+208	72	0
+209	72	0
+210	72	0
+211	72	0
+212	72	0
+213	72	0
+214	72	0
+215	72	0
+216	72	0
+217	72	0
+218	72	0
+219	72	0
+220	72	0
+221	72	0
+222	72	0
+223	72	0
+224	72	0
+225	72	0
+226	72	0
+227	72	0
+228	72	0
+229	72	0
+230	72	0
+231	72	0
+232	72	0
+233	72	0
+234	72	0
+235	72	0
+236	72	0
+237	72	0
+238	72	0
+239	72	0
+240	72	0
+241	72	0
+242	72	0
+243	72	0
+244	72	0
+245	72	0
+246	72	0
+247	72	0
+248	72	0
+249	72	0
+250	72	0
+251	72	0
+252	72	0
+253	72	0
+254	72	0
+255	72	0
+256	72	0
+257	72	0
+258	72	0
+259	72	0
+260	72	0
+261	72	0
+262	72	0
+263	72	0
+264	72	0
+265	72	0
+266	72	0
+267	72	0
+268	72	0
+269	72	0
+270	72	0
+271	72	0
+272	72	0
+273	72	0
+274	72	0
+275	72	0
+276	72	0
+277	72	0
+278	72	0
+279	72	0
+280	72	0
+281	72	0
+282	72	0
+283	72	0
+284	72	0
+285	72	0
+286	72	0
+287	72	0
+288	72	0
+289	72	0
+290	72	0
+291	72	0
+292	72	0
+293	72	0
+294	72	0
+295	72	0
+296	72	0
+297	72	0
+298	72	0
+299	72	0
+300	72	0
+301	72	0
+302	72	0
+303	72	0
+304	72	0
+305	72	-10.14
+306	72	-20.541
+307	72	-20.924
+308	72	-21.046
+309	72	-20.552
+310	72	-19.833
+311	72	-19.045
+312	72	-18.395
+313	72	-17.227
+314	72	-16.058
+315	72	-14.669
+316	72	-13.279
+317	72	-11.914
+318	72	-10.86
+319	72	-9.7873
+320	72	-8.7046
+321	72	-8.252
+322	72	-7.9052
+323	72	-7.5584
+324	72	-7.4986
+325	72	-7.4952
+326	72	-7.2782
+327	72	-7.5448
+328	72	-8.6533
+329	72	-9.3604
+330	72	-9.3674
+331	72	-9.4019
+332	72	-9.4522
+333	72	-9.4143
+334	72	-9.0999
+335	72	-9.228
+336	72	-9.1038
+337	72	-8.6673
+338	72	-6.718
+339	72	-2.2309
+340	72	0
+341	72	0
+342	72	0
+343	72	0
+344	72	0
+345	72	0
+346	72	0
+347	72	0
+348	72	0
+349	72	0
+350	72	0
+351	72	0
+352	72	0
+353	72	0
+354	72	0
+355	72	0
+356	72	0
+357	72	0
+358	72	0
+359	72	0
+360	72	0
+0	72.5	0
+1	72.5	0
+2	72.5	0
+3	72.5	0
+4	72.5	0
+5	72.5	0
+6	72.5	0
+7	72.5	0
+8	72.5	0
+9	72.5	0
+10	72.5	0
+11	72.5	0
+12	72.5	0
+13	72.5	0
+14	72.5	0
+15	72.5	0
+16	72.5	0
+17	72.5	0
+18	72.5	0
+19	72.5	0
+20	72.5	0
+21	72.5	0
+22	72.5	0
+23	72.5	0
+24	72.5	0
+25	72.5	0
+26	72.5	0
+27	72.5	0
+28	72.5	0
+29	72.5	0
+30	72.5	0
+31	72.5	0
+32	72.5	0
+33	72.5	0
+34	72.5	0
+35	72.5	0
+36	72.5	0
+37	72.5	0
+38	72.5	0
+39	72.5	0
+40	72.5	0
+41	72.5	0
+42	72.5	0
+43	72.5	0
+44	72.5	0
+45	72.5	0
+46	72.5	0
+47	72.5	0
+48	72.5	0
+49	72.5	0
+50	72.5	0
+51	72.5	0
+52	72.5	0
+53	72.5	0
+54	72.5	0
+55	72.5	0
+56	72.5	0
+57	72.5	0
+58	72.5	0
+59	72.5	0
+60	72.5	0
+61	72.5	0
+62	72.5	0
+63	72.5	0
+64	72.5	0
+65	72.5	0
+66	72.5	0
+67	72.5	0
+68	72.5	0
+69	72.5	0
+70	72.5	0
+71	72.5	0
+72	72.5	0
+73	72.5	0
+74	72.5	0
+75	72.5	0
+76	72.5	0
+77	72.5	0
+78	72.5	0
+79	72.5	0
+80	72.5	0
+81	72.5	0
+82	72.5	0
+83	72.5	0
+84	72.5	0
+85	72.5	0
+86	72.5	0
+87	72.5	0
+88	72.5	0
+89	72.5	0
+90	72.5	0
+91	72.5	0
+92	72.5	0
+93	72.5	0
+94	72.5	0
+95	72.5	0
+96	72.5	0
+97	72.5	0
+98	72.5	0
+99	72.5	0
+100	72.5	0
+101	72.5	0
+102	72.5	0
+103	72.5	0
+104	72.5	0
+105	72.5	0
+106	72.5	0
+107	72.5	0
+108	72.5	0
+109	72.5	0
+110	72.5	0
+111	72.5	0
+112	72.5	0
+113	72.5	0
+114	72.5	0
+115	72.5	0
+116	72.5	0
+117	72.5	0
+118	72.5	0
+119	72.5	0
+120	72.5	0
+121	72.5	0
+122	72.5	0
+123	72.5	0
+124	72.5	0
+125	72.5	0
+126	72.5	0
+127	72.5	0
+128	72.5	0
+129	72.5	0
+130	72.5	0
+131	72.5	0
+132	72.5	0
+133	72.5	0
+134	72.5	0
+135	72.5	0
+136	72.5	0
+137	72.5	0
+138	72.5	0
+139	72.5	0
+140	72.5	0
+141	72.5	0
+142	72.5	0
+143	72.5	0
+144	72.5	0
+145	72.5	0
+146	72.5	0
+147	72.5	0
+148	72.5	0
+149	72.5	0
+150	72.5	0
+151	72.5	0
+152	72.5	0
+153	72.5	0
+154	72.5	0
+155	72.5	0
+156	72.5	0
+157	72.5	0
+158	72.5	0
+159	72.5	0
+160	72.5	0
+161	72.5	0
+162	72.5	0
+163	72.5	0
+164	72.5	0
+165	72.5	0
+166	72.5	0
+167	72.5	0
+168	72.5	0
+169	72.5	0
+170	72.5	0
+171	72.5	0
+172	72.5	0
+173	72.5	0
+174	72.5	0
+175	72.5	0
+176	72.5	0
+177	72.5	0
+178	72.5	0
+179	72.5	0
+180	72.5	0
+181	72.5	0
+182	72.5	0
+183	72.5	0
+184	72.5	0
+185	72.5	0
+186	72.5	0
+187	72.5	0
+188	72.5	0
+189	72.5	0
+190	72.5	0
+191	72.5	0
+192	72.5	0
+193	72.5	0
+194	72.5	0
+195	72.5	0
+196	72.5	0
+197	72.5	0
+198	72.5	0
+199	72.5	0
+200	72.5	0
+201	72.5	0
+202	72.5	0
+203	72.5	0
+204	72.5	0
+205	72.5	0
+206	72.5	0
+207	72.5	0
+208	72.5	0
+209	72.5	0
+210	72.5	0
+211	72.5	0
+212	72.5	0
+213	72.5	0
+214	72.5	0
+215	72.5	0
+216	72.5	0
+217	72.5	0
+218	72.5	0
+219	72.5	0
+220	72.5	0
+221	72.5	0
+222	72.5	0
+223	72.5	0
+224	72.5	0
+225	72.5	0
+226	72.5	0
+227	72.5	0
+228	72.5	0
+229	72.5	0
+230	72.5	0
+231	72.5	0
+232	72.5	0
+233	72.5	0
+234	72.5	0
+235	72.5	0
+236	72.5	0
+237	72.5	0
+238	72.5	0
+239	72.5	0
+240	72.5	0
+241	72.5	0
+242	72.5	0
+243	72.5	0
+244	72.5	0
+245	72.5	0
+246	72.5	0
+247	72.5	0
+248	72.5	0
+249	72.5	0
+250	72.5	0
+251	72.5	0
+252	72.5	0
+253	72.5	0
+254	72.5	0
+255	72.5	0
+256	72.5	0
+257	72.5	0
+258	72.5	0
+259	72.5	0
+260	72.5	0
+261	72.5	0
+262	72.5	0
+263	72.5	0
+264	72.5	0
+265	72.5	0
+266	72.5	0
+267	72.5	0
+268	72.5	0
+269	72.5	0
+270	72.5	0
+271	72.5	0
+272	72.5	0
+273	72.5	0
+274	72.5	0
+275	72.5	0
+276	72.5	0
+277	72.5	0
+278	72.5	0
+279	72.5	0
+280	72.5	0
+281	72.5	0
+282	72.5	0
+283	72.5	0
+284	72.5	0
+285	72.5	0
+286	72.5	0
+287	72.5	0
+288	72.5	0
+289	72.5	0
+290	72.5	0
+291	72.5	0
+292	72.5	0
+293	72.5	0
+294	72.5	0
+295	72.5	0
+296	72.5	0
+297	72.5	0
+298	72.5	0
+299	72.5	0
+300	72.5	0
+301	72.5	0
+302	72.5	0
+303	72.5	0
+304	72.5	-7.639
+305	72.5	-17.674
+306	72.5	-20.462
+307	72.5	-20.75
+308	72.5	-20.674
+309	72.5	-20.129
+310	72.5	-19.286
+311	72.5	-18.401
+312	72.5	-17.61
+313	72.5	-16.306
+314	72.5	-14.96
+315	72.5	-13.463
+316	72.5	-12.033
+317	72.5	-10.644
+318	72.5	-9.5348
+319	72.5	-8.4522
+320	72.5	-7.5226
+321	72.5	-6.9449
+322	72.5	-6.5153
+323	72.5	-6.1685
+324	72.5	-5.9776
+325	72.5	-5.8383
+326	72.5	-5.6885
+327	72.5	-6.4184
+328	72.5	-7.5311
+329	72.5	-8.4096
+330	72.5	-8.2036
+331	72.5	-8.2205
+332	72.5	-8.2141
+333	72.5	-8.193
+334	72.5	-8.406
+335	72.5	-8.5405
+336	72.5	-8.494
+337	72.5	-8.1433
+338	72.5	-5.6658
+339	72.5	0
+340	72.5	0
+341	72.5	0
+342	72.5	0
+343	72.5	0
+344	72.5	0
+345	72.5	0
+346	72.5	0
+347	72.5	0
+348	72.5	0
+349	72.5	0
+350	72.5	0
+351	72.5	0
+352	72.5	0
+353	72.5	0
+354	72.5	0
+355	72.5	0
+356	72.5	0
+357	72.5	0
+358	72.5	0
+359	72.5	0
+360	72.5	0
+0	73	0
+1	73	0
+2	73	0
+3	73	0
+4	73	0
+5	73	0
+6	73	0
+7	73	0
+8	73	0
+9	73	0
+10	73	0
+11	73	0
+12	73	0
+13	73	0
+14	73	0
+15	73	0
+16	73	0
+17	73	0
+18	73	0
+19	73	0
+20	73	0
+21	73	0
+22	73	0
+23	73	0
+24	73	0
+25	73	0
+26	73	0
+27	73	0
+28	73	0
+29	73	0
+30	73	0
+31	73	0
+32	73	0
+33	73	0
+34	73	0
+35	73	0
+36	73	0
+37	73	0
+38	73	0
+39	73	0
+40	73	0
+41	73	0
+42	73	0
+43	73	0
+44	73	0
+45	73	0
+46	73	0
+47	73	0
+48	73	0
+49	73	0
+50	73	0
+51	73	0
+52	73	0
+53	73	0
+54	73	0
+55	73	0
+56	73	0
+57	73	0
+58	73	0
+59	73	0
+60	73	0
+61	73	0
+62	73	0
+63	73	0
+64	73	0
+65	73	0
+66	73	0
+67	73	0
+68	73	0
+69	73	0
+70	73	0
+71	73	0
+72	73	0
+73	73	0
+74	73	0
+75	73	0
+76	73	0
+77	73	0
+78	73	0
+79	73	0
+80	73	0
+81	73	0
+82	73	0
+83	73	0
+84	73	0
+85	73	0
+86	73	0
+87	73	0
+88	73	0
+89	73	0
+90	73	0
+91	73	0
+92	73	0
+93	73	0
+94	73	0
+95	73	0
+96	73	0
+97	73	0
+98	73	0
+99	73	0
+100	73	0
+101	73	0
+102	73	0
+103	73	0
+104	73	0
+105	73	0
+106	73	0
+107	73	0
+108	73	0
+109	73	0
+110	73	0
+111	73	0
+112	73	0
+113	73	0
+114	73	0
+115	73	0
+116	73	0
+117	73	0
+118	73	0
+119	73	0
+120	73	0
+121	73	0
+122	73	0
+123	73	0
+124	73	0
+125	73	0
+126	73	0
+127	73	0
+128	73	0
+129	73	0
+130	73	0
+131	73	0
+132	73	0
+133	73	0
+134	73	0
+135	73	0
+136	73	0
+137	73	0
+138	73	0
+139	73	0
+140	73	0
+141	73	0
+142	73	0
+143	73	0
+144	73	0
+145	73	0
+146	73	0
+147	73	0
+148	73	0
+149	73	0
+150	73	0
+151	73	0
+152	73	0
+153	73	0
+154	73	0
+155	73	0
+156	73	0
+157	73	0
+158	73	0
+159	73	0
+160	73	0
+161	73	0
+162	73	0
+163	73	0
+164	73	0
+165	73	0
+166	73	0
+167	73	0
+168	73	0
+169	73	0
+170	73	0
+171	73	0
+172	73	0
+173	73	0
+174	73	0
+175	73	0
+176	73	0
+177	73	0
+178	73	0
+179	73	0
+180	73	0
+181	73	0
+182	73	0
+183	73	0
+184	73	0
+185	73	0
+186	73	0
+187	73	0
+188	73	0
+189	73	0
+190	73	0
+191	73	0
+192	73	0
+193	73	0
+194	73	0
+195	73	0
+196	73	0
+197	73	0
+198	73	0
+199	73	0
+200	73	0
+201	73	0
+202	73	0
+203	73	0
+204	73	0
+205	73	0
+206	73	0
+207	73	0
+208	73	0
+209	73	0
+210	73	0
+211	73	0
+212	73	0
+213	73	0
+214	73	0
+215	73	0
+216	73	0
+217	73	0
+218	73	0
+219	73	0
+220	73	0
+221	73	0
+222	73	0
+223	73	0
+224	73	0
+225	73	0
+226	73	0
+227	73	0
+228	73	0
+229	73	0
+230	73	0
+231	73	0
+232	73	0
+233	73	0
+234	73	0
+235	73	0
+236	73	0
+237	73	0
+238	73	0
+239	73	0
+240	73	0
+241	73	0
+242	73	0
+243	73	0
+244	73	0
+245	73	0
+246	73	0
+247	73	0
+248	73	0
+249	73	0
+250	73	0
+251	73	0
+252	73	0
+253	73	0
+254	73	0
+255	73	0
+256	73	0
+257	73	0
+258	73	0
+259	73	0
+260	73	0
+261	73	0
+262	73	0
+263	73	0
+264	73	0
+265	73	0
+266	73	0
+267	73	0
+268	73	0
+269	73	0
+270	73	0
+271	73	0
+272	73	0
+273	73	0
+274	73	0
+275	73	0
+276	73	0
+277	73	0
+278	73	0
+279	73	0
+280	73	0
+281	73	0
+282	73	0
+283	73	0
+284	73	0
+285	73	0
+286	73	0
+287	73	0
+288	73	0
+289	73	0
+290	73	0
+291	73	0
+292	73	0
+293	73	0
+294	73	0
+295	73	0
+296	73	0
+297	73	0
+298	73	0
+299	73	0
+300	73	0
+301	73	0
+302	73	0
+303	73	-4.1725
+304	73	-15.612
+305	73	-19.738
+306	73	-20.236
+307	73	-20.426
+308	73	-20.302
+309	73	-19.481
+310	73	-18.617
+311	73	-17.791
+312	73	-16.645
+313	73	-15.278
+314	73	-13.946
+315	73	-12.585
+316	73	-11.074
+317	73	-9.5617
+318	73	-8.4906
+319	73	-7.5766
+320	73	-6.7448
+321	73	-6.3266
+322	73	-5.7113
+323	73	-5.096
+324	73	-4.565
+325	73	-4.8544
+326	73	-5.1168
+327	73	-5.3692
+328	73	-6.4696
+329	73	-7.2482
+330	73	-7.0546
+331	73	-7.0373
+332	73	-6.9954
+333	73	-7.555
+334	73	-7.8429
+335	73	-7.8508
+336	73	-7.8857
+337	73	-7.5226
+338	73	-6.0807
+339	73	-0.68334
+340	73	-0.89446
+341	73	-0.43515
+342	73	0
+343	73	0
+344	73	0
+345	73	0
+346	73	0
+347	73	0
+348	73	0
+349	73	0
+350	73	0
+351	73	0
+352	73	0
+353	73	0
+354	73	0
+355	73	0
+356	73	0
+357	73	0
+358	73	0
+359	73	0
+360	73	0
+0	73.5	0
+1	73.5	0
+2	73.5	0
+3	73.5	0
+4	73.5	0
+5	73.5	0
+6	73.5	0
+7	73.5	0
+8	73.5	0
+9	73.5	0
+10	73.5	0
+11	73.5	0
+12	73.5	0
+13	73.5	0
+14	73.5	0
+15	73.5	0
+16	73.5	0
+17	73.5	0
+18	73.5	0
+19	73.5	0
+20	73.5	0
+21	73.5	0
+22	73.5	0
+23	73.5	0
+24	73.5	0
+25	73.5	0
+26	73.5	0
+27	73.5	0
+28	73.5	0
+29	73.5	0
+30	73.5	0
+31	73.5	0
+32	73.5	0
+33	73.5	0
+34	73.5	0
+35	73.5	0
+36	73.5	0
+37	73.5	0
+38	73.5	0
+39	73.5	0
+40	73.5	0
+41	73.5	0
+42	73.5	0
+43	73.5	0
+44	73.5	0
+45	73.5	0
+46	73.5	0
+47	73.5	0
+48	73.5	0
+49	73.5	0
+50	73.5	0
+51	73.5	0
+52	73.5	0
+53	73.5	0
+54	73.5	0
+55	73.5	0
+56	73.5	0
+57	73.5	0
+58	73.5	0
+59	73.5	0
+60	73.5	0
+61	73.5	0
+62	73.5	0
+63	73.5	0
+64	73.5	0
+65	73.5	0
+66	73.5	0
+67	73.5	0
+68	73.5	0
+69	73.5	0
+70	73.5	0
+71	73.5	0
+72	73.5	0
+73	73.5	0
+74	73.5	0
+75	73.5	0
+76	73.5	0
+77	73.5	0
+78	73.5	0
+79	73.5	0
+80	73.5	0
+81	73.5	0
+82	73.5	0
+83	73.5	0
+84	73.5	0
+85	73.5	0
+86	73.5	0
+87	73.5	0
+88	73.5	0
+89	73.5	0
+90	73.5	0
+91	73.5	0
+92	73.5	0
+93	73.5	0
+94	73.5	0
+95	73.5	0
+96	73.5	0
+97	73.5	0
+98	73.5	0
+99	73.5	0
+100	73.5	0
+101	73.5	0
+102	73.5	0
+103	73.5	0
+104	73.5	0
+105	73.5	0
+106	73.5	0
+107	73.5	0
+108	73.5	0
+109	73.5	0
+110	73.5	0
+111	73.5	0
+112	73.5	0
+113	73.5	0
+114	73.5	0
+115	73.5	0
+116	73.5	0
+117	73.5	0
+118	73.5	0
+119	73.5	0
+120	73.5	0
+121	73.5	0
+122	73.5	0
+123	73.5	0
+124	73.5	0
+125	73.5	0
+126	73.5	0
+127	73.5	0
+128	73.5	0
+129	73.5	0
+130	73.5	0
+131	73.5	0
+132	73.5	0
+133	73.5	0
+134	73.5	0
+135	73.5	0
+136	73.5	0
+137	73.5	0
+138	73.5	0
+139	73.5	0
+140	73.5	0
+141	73.5	0
+142	73.5	0
+143	73.5	0
+144	73.5	0
+145	73.5	0
+146	73.5	0
+147	73.5	0
+148	73.5	0
+149	73.5	0
+150	73.5	0
+151	73.5	0
+152	73.5	0
+153	73.5	0
+154	73.5	0
+155	73.5	0
+156	73.5	0
+157	73.5	0
+158	73.5	0
+159	73.5	0
+160	73.5	0
+161	73.5	0
+162	73.5	0
+163	73.5	0
+164	73.5	0
+165	73.5	0
+166	73.5	0
+167	73.5	0
+168	73.5	0
+169	73.5	0
+170	73.5	0
+171	73.5	0
+172	73.5	0
+173	73.5	0
+174	73.5	0
+175	73.5	0
+176	73.5	0
+177	73.5	0
+178	73.5	0
+179	73.5	0
+180	73.5	0
+181	73.5	0
+182	73.5	0
+183	73.5	0
+184	73.5	0
+185	73.5	0
+186	73.5	0
+187	73.5	0
+188	73.5	0
+189	73.5	0
+190	73.5	0
+191	73.5	0
+192	73.5	0
+193	73.5	0
+194	73.5	0
+195	73.5	0
+196	73.5	0
+197	73.5	0
+198	73.5	0
+199	73.5	0
+200	73.5	0
+201	73.5	0
+202	73.5	0
+203	73.5	0
+204	73.5	0
+205	73.5	0
+206	73.5	0
+207	73.5	0
+208	73.5	0
+209	73.5	0
+210	73.5	0
+211	73.5	0
+212	73.5	0
+213	73.5	0
+214	73.5	0
+215	73.5	0
+216	73.5	0
+217	73.5	0
+218	73.5	0
+219	73.5	0
+220	73.5	0
+221	73.5	0
+222	73.5	0
+223	73.5	0
+224	73.5	0
+225	73.5	0
+226	73.5	0
+227	73.5	0
+228	73.5	0
+229	73.5	0
+230	73.5	0
+231	73.5	0
+232	73.5	0
+233	73.5	0
+234	73.5	0
+235	73.5	0
+236	73.5	0
+237	73.5	0
+238	73.5	0
+239	73.5	0
+240	73.5	0
+241	73.5	0
+242	73.5	0
+243	73.5	0
+244	73.5	0
+245	73.5	0
+246	73.5	0
+247	73.5	0
+248	73.5	0
+249	73.5	0
+250	73.5	0
+251	73.5	0
+252	73.5	0
+253	73.5	0
+254	73.5	0
+255	73.5	0
+256	73.5	0
+257	73.5	0
+258	73.5	0
+259	73.5	0
+260	73.5	0
+261	73.5	0
+262	73.5	0
+263	73.5	0
+264	73.5	0
+265	73.5	0
+266	73.5	0
+267	73.5	0
+268	73.5	0
+269	73.5	0
+270	73.5	0
+271	73.5	0
+272	73.5	0
+273	73.5	0
+274	73.5	0
+275	73.5	0
+276	73.5	0
+277	73.5	0
+278	73.5	0
+279	73.5	0
+280	73.5	0
+281	73.5	0
+282	73.5	0
+283	73.5	0
+284	73.5	0
+285	73.5	0
+286	73.5	0
+287	73.5	0
+288	73.5	0
+289	73.5	0
+290	73.5	0
+291	73.5	0
+292	73.5	0
+293	73.5	0
+294	73.5	0
+295	73.5	0
+296	73.5	0
+297	73.5	0
+298	73.5	0
+299	73.5	0
+300	73.5	0
+301	73.5	0
+302	73.5	-0.65526
+303	73.5	-8.3954
+304	73.5	-18.788
+305	73.5	-19.273
+306	73.5	-19.749
+307	73.5	-20.334
+308	73.5	-19.586
+309	73.5	-18.69
+310	73.5	-17.756
+311	73.5	-16.93
+312	73.5	-15.618
+313	73.5	-14.255
+314	73.5	-12.933
+315	73.5	-11.611
+316	73.5	-10.196
+317	73.5	-8.7543
+318	73.5	-7.6305
+319	73.5	-6.7165
+320	73.5	-6.0138
+321	73.5	-5.6124
+322	73.5	-5.093
+323	73.5	-4.4777
+324	73.5	-4.0748
+325	73.5	-4.3096
+326	73.5	-4.5164
+327	73.5	-4.6462
+328	73.5	-5.4204
+329	73.5	-5.9852
+330	73.5	-5.9525
+331	73.5	-6.0478
+332	73.5	-6.0549
+333	73.5	-6.8662
+334	73.5	-7.2891
+335	73.5	-7.3768
+336	73.5	-7.2129
+337	73.5	-6.9619
+338	73.5	-6.3984
+339	73.5	-4.3248
+340	73.5	-3.4554
+341	73.5	-2.7783
+342	73.5	0
+343	73.5	0
+344	73.5	0
+345	73.5	0
+346	73.5	0
+347	73.5	0
+348	73.5	0
+349	73.5	0
+350	73.5	0
+351	73.5	0
+352	73.5	0
+353	73.5	0
+354	73.5	0
+355	73.5	0
+356	73.5	0
+357	73.5	0
+358	73.5	0
+359	73.5	0
+360	73.5	0
+0	74	0
+1	74	0
+2	74	0
+3	74	0
+4	74	0
+5	74	0
+6	74	0
+7	74	0
+8	74	0
+9	74	0
+10	74	0
+11	74	0
+12	74	0
+13	74	0
+14	74	0
+15	74	0
+16	74	0
+17	74	0
+18	74	0
+19	74	0
+20	74	0
+21	74	0
+22	74	0
+23	74	0
+24	74	0
+25	74	0
+26	74	0
+27	74	0
+28	74	0
+29	74	0
+30	74	0
+31	74	0
+32	74	0
+33	74	0
+34	74	0
+35	74	0
+36	74	0
+37	74	0
+38	74	0
+39	74	0
+40	74	0
+41	74	0
+42	74	0
+43	74	0
+44	74	0
+45	74	0
+46	74	0
+47	74	0
+48	74	0
+49	74	0
+50	74	0
+51	74	0
+52	74	0
+53	74	0
+54	74	0
+55	74	0
+56	74	0
+57	74	0
+58	74	0
+59	74	0
+60	74	0
+61	74	0
+62	74	0
+63	74	0
+64	74	0
+65	74	0
+66	74	0
+67	74	0
+68	74	0
+69	74	0
+70	74	0
+71	74	0
+72	74	0
+73	74	0
+74	74	0
+75	74	0
+76	74	0
+77	74	0
+78	74	0
+79	74	0
+80	74	0
+81	74	0
+82	74	0
+83	74	0
+84	74	0
+85	74	0
+86	74	0
+87	74	0
+88	74	0
+89	74	0
+90	74	0
+91	74	0
+92	74	0
+93	74	0
+94	74	0
+95	74	0
+96	74	0
+97	74	0
+98	74	0
+99	74	0
+100	74	0
+101	74	0
+102	74	0
+103	74	0
+104	74	0
+105	74	0
+106	74	0
+107	74	0
+108	74	0
+109	74	0
+110	74	0
+111	74	0
+112	74	0
+113	74	0
+114	74	0
+115	74	0
+116	74	0
+117	74	0
+118	74	0
+119	74	0
+120	74	0
+121	74	0
+122	74	0
+123	74	0
+124	74	0
+125	74	0
+126	74	0
+127	74	0
+128	74	0
+129	74	0
+130	74	0
+131	74	0
+132	74	0
+133	74	0
+134	74	0
+135	74	0
+136	74	0
+137	74	0
+138	74	0
+139	74	0
+140	74	0
+141	74	0
+142	74	0
+143	74	0
+144	74	0
+145	74	0
+146	74	0
+147	74	0
+148	74	0
+149	74	0
+150	74	0
+151	74	0
+152	74	0
+153	74	0
+154	74	0
+155	74	0
+156	74	0
+157	74	0
+158	74	0
+159	74	0
+160	74	0
+161	74	0
+162	74	0
+163	74	0
+164	74	0
+165	74	0
+166	74	0
+167	74	0
+168	74	0
+169	74	0
+170	74	0
+171	74	0
+172	74	0
+173	74	0
+174	74	0
+175	74	0
+176	74	0
+177	74	0
+178	74	0
+179	74	0
+180	74	0
+181	74	0
+182	74	0
+183	74	0
+184	74	0
+185	74	0
+186	74	0
+187	74	0
+188	74	0
+189	74	0
+190	74	0
+191	74	0
+192	74	0
+193	74	0
+194	74	0
+195	74	0
+196	74	0
+197	74	0
+198	74	0
+199	74	0
+200	74	0
+201	74	0
+202	74	0
+203	74	0
+204	74	0
+205	74	0
+206	74	0
+207	74	0
+208	74	0
+209	74	0
+210	74	0
+211	74	0
+212	74	0
+213	74	0
+214	74	0
+215	74	0
+216	74	0
+217	74	0
+218	74	0
+219	74	0
+220	74	0
+221	74	0
+222	74	0
+223	74	0
+224	74	0
+225	74	0
+226	74	0
+227	74	0
+228	74	0
+229	74	0
+230	74	0
+231	74	0
+232	74	0
+233	74	0
+234	74	0
+235	74	0
+236	74	0
+237	74	0
+238	74	0
+239	74	0
+240	74	0
+241	74	0
+242	74	0
+243	74	0
+244	74	0
+245	74	0
+246	74	0
+247	74	0
+248	74	0
+249	74	0
+250	74	0
+251	74	0
+252	74	0
+253	74	0
+254	74	0
+255	74	0
+256	74	0
+257	74	0
+258	74	0
+259	74	0
+260	74	0
+261	74	0
+262	74	0
+263	74	0
+264	74	0
+265	74	0
+266	74	0
+267	74	0
+268	74	0
+269	74	0
+270	74	0
+271	74	0
+272	74	0
+273	74	0
+274	74	0
+275	74	0
+276	74	0
+277	74	0
+278	74	0
+279	74	0
+280	74	0
+281	74	0
+282	74	0
+283	74	0
+284	74	0
+285	74	0
+286	74	0
+287	74	0
+288	74	0
+289	74	0
+290	74	0
+291	74	0
+292	74	0
+293	74	0
+294	74	0
+295	74	0
+296	74	0
+297	74	0
+298	74	0
+299	74	0
+300	74	0
+301	74	0
+302	74	-3.2599
+303	74	-12.44
+304	74	-18.411
+305	74	-18.797
+306	74	-19.296
+307	74	-19.803
+308	74	-18.86
+309	74	-17.9
+310	74	-16.914
+311	74	-16.007
+312	74	-14.607
+313	74	-13.242
+314	74	-11.92
+315	74	-10.597
+316	74	-9.2752
+317	74	-7.9894
+318	74	-6.7795
+319	74	-5.8564
+320	74	-5.2828
+321	74	-4.8814
+322	74	-4.4746
+323	74	-3.8594
+324	74	-3.5895
+325	74	-3.7648
+326	74	-3.9161
+327	74	-4.0458
+328	74	-4.3713
+329	74	-4.7221
+330	74	-4.9643
+331	74	-5.0973
+332	74	-5.331
+333	74	-6.2369
+334	74	-6.7731
+335	74	-6.9999
+336	74	-6.654
+337	74	-6.3267
+338	74	-5.8554
+339	74	-5.481
+340	74	-5.1291
+341	74	-4.1263
+342	74	0
+343	74	0
+344	74	0
+345	74	0
+346	74	0
+347	74	0
+348	74	0
+349	74	0
+350	74	0
+351	74	0
+352	74	0
+353	74	0
+354	74	0
+355	74	0
+356	74	0
+357	74	0
+358	74	0
+359	74	0
+360	74	0
+0	74.5	0
+1	74.5	0
+2	74.5	0
+3	74.5	0
+4	74.5	0
+5	74.5	0
+6	74.5	0
+7	74.5	0
+8	74.5	0
+9	74.5	0
+10	74.5	0
+11	74.5	0
+12	74.5	0
+13	74.5	0
+14	74.5	0
+15	74.5	0
+16	74.5	0
+17	74.5	0
+18	74.5	0
+19	74.5	0
+20	74.5	0
+21	74.5	0
+22	74.5	0
+23	74.5	0
+24	74.5	0
+25	74.5	0
+26	74.5	0
+27	74.5	0
+28	74.5	0
+29	74.5	0
+30	74.5	0
+31	74.5	0
+32	74.5	0
+33	74.5	0
+34	74.5	0
+35	74.5	0
+36	74.5	0
+37	74.5	0
+38	74.5	0
+39	74.5	0
+40	74.5	0
+41	74.5	0
+42	74.5	0
+43	74.5	0
+44	74.5	0
+45	74.5	0
+46	74.5	0
+47	74.5	0
+48	74.5	0
+49	74.5	0
+50	74.5	0
+51	74.5	0
+52	74.5	0
+53	74.5	0
+54	74.5	0
+55	74.5	0
+56	74.5	0
+57	74.5	0
+58	74.5	0
+59	74.5	0
+60	74.5	0
+61	74.5	0
+62	74.5	0
+63	74.5	0
+64	74.5	0
+65	74.5	0
+66	74.5	0
+67	74.5	0
+68	74.5	0
+69	74.5	0
+70	74.5	0
+71	74.5	0
+72	74.5	0
+73	74.5	0
+74	74.5	0
+75	74.5	0
+76	74.5	0
+77	74.5	0
+78	74.5	0
+79	74.5	0
+80	74.5	0
+81	74.5	0
+82	74.5	0
+83	74.5	0
+84	74.5	0
+85	74.5	0
+86	74.5	0
+87	74.5	0
+88	74.5	0
+89	74.5	0
+90	74.5	0
+91	74.5	0
+92	74.5	0
+93	74.5	0
+94	74.5	0
+95	74.5	0
+96	74.5	0
+97	74.5	0
+98	74.5	0
+99	74.5	0
+100	74.5	0
+101	74.5	0
+102	74.5	0
+103	74.5	0
+104	74.5	0
+105	74.5	0
+106	74.5	0
+107	74.5	0
+108	74.5	0
+109	74.5	0
+110	74.5	0
+111	74.5	0
+112	74.5	0
+113	74.5	0
+114	74.5	0
+115	74.5	0
+116	74.5	0
+117	74.5	0
+118	74.5	0
+119	74.5	0
+120	74.5	0
+121	74.5	0
+122	74.5	0
+123	74.5	0
+124	74.5	0
+125	74.5	0
+126	74.5	0
+127	74.5	0
+128	74.5	0
+129	74.5	0
+130	74.5	0
+131	74.5	0
+132	74.5	0
+133	74.5	0
+134	74.5	0
+135	74.5	0
+136	74.5	0
+137	74.5	0
+138	74.5	0
+139	74.5	0
+140	74.5	0
+141	74.5	0
+142	74.5	0
+143	74.5	0
+144	74.5	0
+145	74.5	0
+146	74.5	0
+147	74.5	0
+148	74.5	0
+149	74.5	0
+150	74.5	0
+151	74.5	0
+152	74.5	0
+153	74.5	0
+154	74.5	0
+155	74.5	0
+156	74.5	0
+157	74.5	0
+158	74.5	0
+159	74.5	0
+160	74.5	0
+161	74.5	0
+162	74.5	0
+163	74.5	0
+164	74.5	0
+165	74.5	0
+166	74.5	0
+167	74.5	0
+168	74.5	0
+169	74.5	0
+170	74.5	0
+171	74.5	0
+172	74.5	0
+173	74.5	0
+174	74.5	0
+175	74.5	0
+176	74.5	0
+177	74.5	0
+178	74.5	0
+179	74.5	0
+180	74.5	0
+181	74.5	0
+182	74.5	0
+183	74.5	0
+184	74.5	0
+185	74.5	0
+186	74.5	0
+187	74.5	0
+188	74.5	0
+189	74.5	0
+190	74.5	0
+191	74.5	0
+192	74.5	0
+193	74.5	0
+194	74.5	0
+195	74.5	0
+196	74.5	0
+197	74.5	0
+198	74.5	0
+199	74.5	0
+200	74.5	0
+201	74.5	0
+202	74.5	0
+203	74.5	0
+204	74.5	0
+205	74.5	0
+206	74.5	0
+207	74.5	0
+208	74.5	0
+209	74.5	0
+210	74.5	0
+211	74.5	0
+212	74.5	0
+213	74.5	0
+214	74.5	0
+215	74.5	0
+216	74.5	0
+217	74.5	0
+218	74.5	0
+219	74.5	0
+220	74.5	0
+221	74.5	0
+222	74.5	0
+223	74.5	0
+224	74.5	0
+225	74.5	0
+226	74.5	0
+227	74.5	0
+228	74.5	0
+229	74.5	0
+230	74.5	0
+231	74.5	0
+232	74.5	0
+233	74.5	0
+234	74.5	0
+235	74.5	0
+236	74.5	0
+237	74.5	0
+238	74.5	0
+239	74.5	0
+240	74.5	0
+241	74.5	0
+242	74.5	0
+243	74.5	0
+244	74.5	0
+245	74.5	0
+246	74.5	0
+247	74.5	0
+248	74.5	0
+249	74.5	0
+250	74.5	0
+251	74.5	0
+252	74.5	0
+253	74.5	0
+254	74.5	0
+255	74.5	0
+256	74.5	0
+257	74.5	0
+258	74.5	0
+259	74.5	0
+260	74.5	0
+261	74.5	0
+262	74.5	0
+263	74.5	0
+264	74.5	0
+265	74.5	0
+266	74.5	0
+267	74.5	0
+268	74.5	0
+269	74.5	0
+270	74.5	0
+271	74.5	0
+272	74.5	0
+273	74.5	0
+274	74.5	0
+275	74.5	0
+276	74.5	0
+277	74.5	0
+278	74.5	0
+279	74.5	0
+280	74.5	0
+281	74.5	0
+282	74.5	0
+283	74.5	0
+284	74.5	0
+285	74.5	0
+286	74.5	0
+287	74.5	0
+288	74.5	0
+289	74.5	0
+290	74.5	0
+291	74.5	0
+292	74.5	0
+293	74.5	0
+294	74.5	0
+295	74.5	0
+296	74.5	0
+297	74.5	0
+298	74.5	0
+299	74.5	0
+300	74.5	0
+301	74.5	-1.9968
+302	74.5	-7.2139
+303	74.5	-14.136
+304	74.5	-18.098
+305	74.5	-18.255
+306	74.5	-18.831
+307	74.5	-18.845
+308	74.5	-17.976
+309	74.5	-17.058
+310	74.5	-16.116
+311	74.5	-14.999
+312	74.5	-13.615
+313	74.5	-12.406
+314	74.5	-11.118
+315	74.5	-9.788
+316	74.5	-8.4583
+317	74.5	-7.2213
+318	74.5	-6.0146
+319	74.5	-4.9964
+320	74.5	-4.5518
+321	74.5	-4.1504
+322	74.5	-3.7489
+323	74.5	-3.241
+324	74.5	-3.1041
+325	74.5	-3.2796
+326	74.5	-3.4107
+327	74.5	-3.5181
+328	74.5	-3.6308
+329	74.5	-3.8221
+330	74.5	-4.0919
+331	74.5	-4.255
+332	74.5	-5.1783
+333	74.5	-5.8859
+334	74.5	-6.2954
+335	74.5	-6.6294
+336	74.5	-6.1768
+337	74.5	-5.788
+338	74.5	-5.3537
+339	74.5	-5.203
+340	74.5	-5.1535
+341	74.5	-3.5672
+342	74.5	0
+343	74.5	0
+344	74.5	0
+345	74.5	0
+346	74.5	0
+347	74.5	0
+348	74.5	0
+349	74.5	0
+350	74.5	0
+351	74.5	0
+352	74.5	0
+353	74.5	0
+354	74.5	0
+355	74.5	0
+356	74.5	0
+357	74.5	0
+358	74.5	0
+359	74.5	0
+360	74.5	0
+0	75	0
+1	75	0
+2	75	0
+3	75	0
+4	75	0
+5	75	0
+6	75	0
+7	75	0
+8	75	0
+9	75	0
+10	75	0
+11	75	0
+12	75	0
+13	75	0
+14	75	0
+15	75	0
+16	75	0
+17	75	0
+18	75	0
+19	75	0
+20	75	0
+21	75	0
+22	75	0
+23	75	0
+24	75	0
+25	75	0
+26	75	0
+27	75	0
+28	75	0
+29	75	0
+30	75	0
+31	75	0
+32	75	0
+33	75	0
+34	75	0
+35	75	0
+36	75	0
+37	75	0
+38	75	0
+39	75	0
+40	75	0
+41	75	0
+42	75	0
+43	75	0
+44	75	0
+45	75	0
+46	75	0
+47	75	0
+48	75	0
+49	75	0
+50	75	0
+51	75	0
+52	75	0
+53	75	0
+54	75	0
+55	75	0
+56	75	0
+57	75	0
+58	75	0
+59	75	0
+60	75	0
+61	75	0
+62	75	0
+63	75	0
+64	75	0
+65	75	0
+66	75	0
+67	75	0
+68	75	0
+69	75	0
+70	75	0
+71	75	0
+72	75	0
+73	75	0
+74	75	0
+75	75	0
+76	75	0
+77	75	0
+78	75	0
+79	75	0
+80	75	0
+81	75	0
+82	75	0
+83	75	0
+84	75	0
+85	75	0
+86	75	0
+87	75	0
+88	75	0
+89	75	0
+90	75	0
+91	75	0
+92	75	0
+93	75	0
+94	75	0
+95	75	0
+96	75	0
+97	75	0
+98	75	0
+99	75	0
+100	75	0
+101	75	0
+102	75	0
+103	75	0
+104	75	0
+105	75	0
+106	75	0
+107	75	0
+108	75	0
+109	75	0
+110	75	0
+111	75	0
+112	75	0
+113	75	0
+114	75	0
+115	75	0
+116	75	0
+117	75	0
+118	75	0
+119	75	0
+120	75	0
+121	75	0
+122	75	0
+123	75	0
+124	75	0
+125	75	0
+126	75	0
+127	75	0
+128	75	0
+129	75	0
+130	75	0
+131	75	0
+132	75	0
+133	75	0
+134	75	0
+135	75	0
+136	75	0
+137	75	0
+138	75	0
+139	75	0
+140	75	0
+141	75	0
+142	75	0
+143	75	0
+144	75	0
+145	75	0
+146	75	0
+147	75	0
+148	75	0
+149	75	0
+150	75	0
+151	75	0
+152	75	0
+153	75	0
+154	75	0
+155	75	0
+156	75	0
+157	75	0
+158	75	0
+159	75	0
+160	75	0
+161	75	0
+162	75	0
+163	75	0
+164	75	0
+165	75	0
+166	75	0
+167	75	0
+168	75	0
+169	75	0
+170	75	0
+171	75	0
+172	75	0
+173	75	0
+174	75	0
+175	75	0
+176	75	0
+177	75	0
+178	75	0
+179	75	0
+180	75	0
+181	75	0
+182	75	0
+183	75	0
+184	75	0
+185	75	0
+186	75	0
+187	75	0
+188	75	0
+189	75	0
+190	75	0
+191	75	0
+192	75	0
+193	75	0
+194	75	0
+195	75	0
+196	75	0
+197	75	0
+198	75	0
+199	75	0
+200	75	0
+201	75	0
+202	75	0
+203	75	0
+204	75	0
+205	75	0
+206	75	0
+207	75	0
+208	75	0
+209	75	0
+210	75	0
+211	75	0
+212	75	0
+213	75	0
+214	75	0
+215	75	0
+216	75	0
+217	75	0
+218	75	0
+219	75	0
+220	75	0
+221	75	0
+222	75	0
+223	75	0
+224	75	0
+225	75	0
+226	75	0
+227	75	0
+228	75	0
+229	75	0
+230	75	0
+231	75	0
+232	75	0
+233	75	0
+234	75	0
+235	75	0
+236	75	0
+237	75	0
+238	75	0
+239	75	0
+240	75	0
+241	75	0
+242	75	0
+243	75	0
+244	75	0
+245	75	0
+246	75	0
+247	75	0
+248	75	0
+249	75	0
+250	75	0
+251	75	0
+252	75	0
+253	75	0
+254	75	0
+255	75	0
+256	75	0
+257	75	0
+258	75	0
+259	75	0
+260	75	0
+261	75	0
+262	75	0
+263	75	0
+264	75	0
+265	75	0
+266	75	0
+267	75	0
+268	75	0
+269	75	0
+270	75	0
+271	75	0
+272	75	0
+273	75	0
+274	75	0
+275	75	0
+276	75	0
+277	75	0
+278	75	0
+279	75	0
+280	75	0
+281	75	0
+282	75	0
+283	75	0
+284	75	0
+285	75	0
+286	75	0
+287	75	0
+288	75	0
+289	75	0
+290	75	0
+291	75	0
+292	75	0
+293	75	0
+294	75	0
+295	75	0
+296	75	0
+297	75	-0.29193
+298	75	0
+299	75	0
+300	75	-1.3761
+301	75	-11.524
+302	75	-17.172
+303	75	-17.529
+304	75	-17.851
+305	75	-17.712
+306	75	-18.215
+307	75	-17.84
+308	75	-16.966
+309	75	-16.092
+310	75	-15.151
+311	75	-14.017
+312	75	-12.658
+313	75	-11.502
+314	75	-10.334
+315	75	-9.0042
+316	75	-7.6745
+317	75	-6.4446
+318	75	-5.2451
+319	75	-4.2222
+320	75	-3.8208
+321	75	-3.4193
+322	75	-3.0179
+323	75	-2.6165
+324	75	-2.626
+325	75	-2.8059
+326	75	-2.9634
+327	75	-3.0708
+328	75	-3.3201
+329	75	-3.6063
+330	75	-3.4988
+331	75	-4.3622
+332	75	-5.0628
+333	75	-5.44
+334	75	-5.8793
+335	75	-6.2454
+336	75	-5.7705
+337	75	-5.3992
+338	75	-5.2176
+339	75	-5.1524
+340	75	-5.3461
+341	75	-3.9956
+342	75	-2.0168
+343	75	-1.6244
+344	75	0
+345	75	0
+346	75	0
+347	75	0
+348	75	0
+349	75	0
+350	75	0
+351	75	0
+352	75	0
+353	75	0
+354	75	0
+355	75	0
+356	75	0
+357	75	0
+358	75	0
+359	75	0
+360	75	0
+0	75.5	0
+1	75.5	0
+2	75.5	0
+3	75.5	0
+4	75.5	0
+5	75.5	0
+6	75.5	0
+7	75.5	0
+8	75.5	0
+9	75.5	0
+10	75.5	0
+11	75.5	0
+12	75.5	0
+13	75.5	0
+14	75.5	0
+15	75.5	0
+16	75.5	0
+17	75.5	0
+18	75.5	0
+19	75.5	0
+20	75.5	0
+21	75.5	0
+22	75.5	0
+23	75.5	0
+24	75.5	0
+25	75.5	0
+26	75.5	0
+27	75.5	0
+28	75.5	0
+29	75.5	0
+30	75.5	0
+31	75.5	0
+32	75.5	0
+33	75.5	0
+34	75.5	0
+35	75.5	0
+36	75.5	0
+37	75.5	0
+38	75.5	0
+39	75.5	0
+40	75.5	0
+41	75.5	0
+42	75.5	0
+43	75.5	0
+44	75.5	0
+45	75.5	0
+46	75.5	0
+47	75.5	0
+48	75.5	0
+49	75.5	0
+50	75.5	0
+51	75.5	0
+52	75.5	0
+53	75.5	0
+54	75.5	0
+55	75.5	0
+56	75.5	0
+57	75.5	0
+58	75.5	0
+59	75.5	0
+60	75.5	0
+61	75.5	0
+62	75.5	0
+63	75.5	0
+64	75.5	0
+65	75.5	0
+66	75.5	0
+67	75.5	0
+68	75.5	0
+69	75.5	0
+70	75.5	0
+71	75.5	0
+72	75.5	0
+73	75.5	0
+74	75.5	0
+75	75.5	0
+76	75.5	0
+77	75.5	0
+78	75.5	0
+79	75.5	0
+80	75.5	0
+81	75.5	0
+82	75.5	0
+83	75.5	0
+84	75.5	0
+85	75.5	0
+86	75.5	0
+87	75.5	0
+88	75.5	0
+89	75.5	0
+90	75.5	0
+91	75.5	0
+92	75.5	0
+93	75.5	0
+94	75.5	0
+95	75.5	0
+96	75.5	0
+97	75.5	0
+98	75.5	0
+99	75.5	0
+100	75.5	0
+101	75.5	0
+102	75.5	0
+103	75.5	0
+104	75.5	0
+105	75.5	0
+106	75.5	0
+107	75.5	0
+108	75.5	0
+109	75.5	0
+110	75.5	0
+111	75.5	0
+112	75.5	0
+113	75.5	0
+114	75.5	0
+115	75.5	0
+116	75.5	0
+117	75.5	0
+118	75.5	0
+119	75.5	0
+120	75.5	0
+121	75.5	0
+122	75.5	0
+123	75.5	0
+124	75.5	0
+125	75.5	0
+126	75.5	0
+127	75.5	0
+128	75.5	0
+129	75.5	0
+130	75.5	0
+131	75.5	0
+132	75.5	0
+133	75.5	0
+134	75.5	0
+135	75.5	0
+136	75.5	0
+137	75.5	0
+138	75.5	0
+139	75.5	0
+140	75.5	0
+141	75.5	0
+142	75.5	0
+143	75.5	0
+144	75.5	0
+145	75.5	0
+146	75.5	0
+147	75.5	0
+148	75.5	0
+149	75.5	0
+150	75.5	0
+151	75.5	0
+152	75.5	0
+153	75.5	0
+154	75.5	0
+155	75.5	0
+156	75.5	0
+157	75.5	0
+158	75.5	0
+159	75.5	0
+160	75.5	0
+161	75.5	0
+162	75.5	0
+163	75.5	0
+164	75.5	0
+165	75.5	0
+166	75.5	0
+167	75.5	0
+168	75.5	0
+169	75.5	0
+170	75.5	0
+171	75.5	0
+172	75.5	0
+173	75.5	0
+174	75.5	0
+175	75.5	0
+176	75.5	0
+177	75.5	0
+178	75.5	0
+179	75.5	0
+180	75.5	0
+181	75.5	0
+182	75.5	0
+183	75.5	0
+184	75.5	0
+185	75.5	0
+186	75.5	0
+187	75.5	0
+188	75.5	0
+189	75.5	0
+190	75.5	0
+191	75.5	0
+192	75.5	0
+193	75.5	0
+194	75.5	0
+195	75.5	0
+196	75.5	0
+197	75.5	0
+198	75.5	0
+199	75.5	0
+200	75.5	0
+201	75.5	0
+202	75.5	0
+203	75.5	0
+204	75.5	0
+205	75.5	0
+206	75.5	0
+207	75.5	0
+208	75.5	0
+209	75.5	0
+210	75.5	0
+211	75.5	0
+212	75.5	0
+213	75.5	0
+214	75.5	0
+215	75.5	0
+216	75.5	0
+217	75.5	0
+218	75.5	0
+219	75.5	0
+220	75.5	0
+221	75.5	0
+222	75.5	0
+223	75.5	0
+224	75.5	0
+225	75.5	0
+226	75.5	0
+227	75.5	0
+228	75.5	0
+229	75.5	0
+230	75.5	0
+231	75.5	0
+232	75.5	0
+233	75.5	0
+234	75.5	0
+235	75.5	0
+236	75.5	0
+237	75.5	0
+238	75.5	0
+239	75.5	0
+240	75.5	0
+241	75.5	0
+242	75.5	0
+243	75.5	0
+244	75.5	0
+245	75.5	0
+246	75.5	0
+247	75.5	0
+248	75.5	0
+249	75.5	0
+250	75.5	0
+251	75.5	0
+252	75.5	0
+253	75.5	0
+254	75.5	0
+255	75.5	0
+256	75.5	0
+257	75.5	0
+258	75.5	0
+259	75.5	0
+260	75.5	0
+261	75.5	0
+262	75.5	0
+263	75.5	0
+264	75.5	0
+265	75.5	0
+266	75.5	0
+267	75.5	0
+268	75.5	0
+269	75.5	0
+270	75.5	0
+271	75.5	0
+272	75.5	0
+273	75.5	0
+274	75.5	0
+275	75.5	0
+276	75.5	0
+277	75.5	0
+278	75.5	0
+279	75.5	0
+280	75.5	0
+281	75.5	0
+282	75.5	0
+283	75.5	0
+284	75.5	0
+285	75.5	0
+286	75.5	0
+287	75.5	0
+288	75.5	0
+289	75.5	0
+290	75.5	0
+291	75.5	0
+292	75.5	-1.5507
+293	75.5	-6.3327
+294	75.5	-0.41269
+295	75.5	-2.1975
+296	75.5	-8.6892
+297	75.5	-7.5086
+298	75.5	-7.7829
+299	75.5	0
+300	75.5	-6.1352
+301	75.5	-15.629
+302	75.5	-19.096
+303	75.5	-18.345
+304	75.5	-17.599
+305	75.5	-17.096
+306	75.5	-17.108
+307	75.5	-16.83
+308	75.5	-15.956
+309	75.5	-15.082
+310	75.5	-14.141
+311	75.5	-13.035
+312	75.5	-11.754
+313	75.5	-10.597
+314	75.5	-9.4407
+315	75.5	-8.2204
+316	75.5	-6.8907
+317	75.5	-5.6679
+318	75.5	-4.4684
+319	75.5	-4.0119
+320	75.5	-3.6112
+321	75.5	-3.2105
+322	75.5	-2.8098
+323	75.5	-2.5821
+324	75.5	-2.3551
+325	75.5	-2.3322
+326	75.5	-2.5121
+327	75.5	-2.6235
+328	75.5	-3.0094
+329	75.5	-3.4364
+330	75.5	-3.6215
+331	75.5	-4.3478
+332	75.5	-4.9307
+333	75.5	-5.3848
+334	75.5	-5.7463
+335	75.5	-5.8379
+336	75.5	-5.3921
+337	75.5	-5.1966
+338	75.5	-5.0816
+339	75.5	-5.308
+340	75.5	-5.6231
+341	75.5	-5.5661
+342	75.5	-4.5739
+343	75.5	-2.4293
+344	75.5	0
+345	75.5	0
+346	75.5	0
+347	75.5	0
+348	75.5	0
+349	75.5	0
+350	75.5	0
+351	75.5	0
+352	75.5	0
+353	75.5	0
+354	75.5	0
+355	75.5	0
+356	75.5	0
+357	75.5	0
+358	75.5	0
+359	75.5	0
+360	75.5	0
+0	76	0
+1	76	0
+2	76	0
+3	76	0
+4	76	0
+5	76	0
+6	76	0
+7	76	0
+8	76	0
+9	76	0
+10	76	0
+11	76	0
+12	76	0
+13	76	0
+14	76	0
+15	76	0
+16	76	0
+17	76	0
+18	76	0
+19	76	0
+20	76	0
+21	76	0
+22	76	0
+23	76	0
+24	76	0
+25	76	0
+26	76	0
+27	76	0
+28	76	0
+29	76	0
+30	76	0
+31	76	0
+32	76	0
+33	76	0
+34	76	0
+35	76	0
+36	76	0
+37	76	0
+38	76	0
+39	76	0
+40	76	0
+41	76	0
+42	76	0
+43	76	0
+44	76	0
+45	76	0
+46	76	0
+47	76	0
+48	76	0
+49	76	0
+50	76	0
+51	76	0
+52	76	0
+53	76	0
+54	76	0
+55	76	0
+56	76	0
+57	76	0
+58	76	0
+59	76	0
+60	76	0
+61	76	0
+62	76	0
+63	76	0
+64	76	0
+65	76	0
+66	76	0
+67	76	0
+68	76	0
+69	76	0
+70	76	0
+71	76	0
+72	76	0
+73	76	0
+74	76	0
+75	76	0
+76	76	0
+77	76	0
+78	76	0
+79	76	0
+80	76	0
+81	76	0
+82	76	0
+83	76	0
+84	76	0
+85	76	0
+86	76	0
+87	76	0
+88	76	0
+89	76	0
+90	76	0
+91	76	0
+92	76	0
+93	76	0
+94	76	0
+95	76	0
+96	76	0
+97	76	0
+98	76	0
+99	76	0
+100	76	0
+101	76	0
+102	76	0
+103	76	0
+104	76	0
+105	76	0
+106	76	0
+107	76	0
+108	76	0
+109	76	0
+110	76	0
+111	76	0
+112	76	0
+113	76	0
+114	76	0
+115	76	0
+116	76	0
+117	76	0
+118	76	0
+119	76	0
+120	76	0
+121	76	0
+122	76	0
+123	76	0
+124	76	0
+125	76	0
+126	76	0
+127	76	0
+128	76	0
+129	76	0
+130	76	0
+131	76	0
+132	76	0
+133	76	0
+134	76	0
+135	76	0
+136	76	0
+137	76	0
+138	76	0
+139	76	0
+140	76	0
+141	76	0
+142	76	0
+143	76	0
+144	76	0
+145	76	0
+146	76	0
+147	76	0
+148	76	0
+149	76	0
+150	76	0
+151	76	0
+152	76	0
+153	76	0
+154	76	0
+155	76	0
+156	76	0
+157	76	0
+158	76	0
+159	76	0
+160	76	0
+161	76	0
+162	76	0
+163	76	0
+164	76	0
+165	76	0
+166	76	0
+167	76	0
+168	76	0
+169	76	0
+170	76	0
+171	76	0
+172	76	0
+173	76	0
+174	76	0
+175	76	0
+176	76	0
+177	76	0
+178	76	0
+179	76	0
+180	76	0
+181	76	0
+182	76	0
+183	76	0
+184	76	0
+185	76	0
+186	76	0
+187	76	0
+188	76	0
+189	76	0
+190	76	0
+191	76	0
+192	76	0
+193	76	0
+194	76	0
+195	76	0
+196	76	0
+197	76	0
+198	76	0
+199	76	0
+200	76	0
+201	76	0
+202	76	0
+203	76	0
+204	76	0
+205	76	0
+206	76	0
+207	76	0
+208	76	0
+209	76	0
+210	76	0
+211	76	0
+212	76	0
+213	76	0
+214	76	0
+215	76	0
+216	76	0
+217	76	0
+218	76	0
+219	76	0
+220	76	0
+221	76	0
+222	76	0
+223	76	0
+224	76	0
+225	76	0
+226	76	0
+227	76	0
+228	76	0
+229	76	0
+230	76	0
+231	76	0
+232	76	0
+233	76	0
+234	76	0
+235	76	0
+236	76	0
+237	76	0
+238	76	0
+239	76	0
+240	76	0
+241	76	0
+242	76	0
+243	76	0
+244	76	0
+245	76	0
+246	76	0
+247	76	0
+248	76	0
+249	76	0
+250	76	0
+251	76	0
+252	76	0
+253	76	0
+254	76	0
+255	76	0
+256	76	0
+257	76	0
+258	76	0
+259	76	0
+260	76	0
+261	76	0
+262	76	0
+263	76	0
+264	76	0
+265	76	0
+266	76	0
+267	76	0
+268	76	0
+269	76	0
+270	76	0
+271	76	0
+272	76	0
+273	76	0
+274	76	0
+275	76	0
+276	76	0
+277	76	0
+278	76	0
+279	76	0
+280	76	0
+281	76	0
+282	76	0
+283	76	0
+284	76	0
+285	76	0
+286	76	0
+287	76	0
+288	76	0
+289	76	-3.3568
+290	76	-6.0649
+291	76	-5.8564
+292	76	-9.3166
+293	76	-14.413
+294	76	-7.0671
+295	76	-6.9128
+296	76	-17.52
+297	76	-12.087
+298	76	-16.285
+299	76	-7.4261
+300	76	-8.1595
+301	76	-17.65
+302	76	-18.462
+303	76	-17.889
+304	76	-17.14
+305	76	-16.355
+306	76	-16.274
+307	76	-15.836
+308	76	-14.949
+309	76	-14.061
+310	76	-13.105
+311	76	-12.053
+312	76	-10.849
+313	76	-9.6928
+314	76	-8.5363
+315	76	-7.3797
+316	76	-6.1069
+317	76	-4.8912
+318	76	-4.4575
+319	76	-4.102
+320	76	-3.6
+321	76	-3.1993
+322	76	-2.7986
+323	76	-2.9517
+324	76	-2.7981
+325	76	-2.419
+326	76	-2.0384
+327	76	-2.2718
+328	76	-2.6988
+329	76	-3.2266
+330	76	-3.788
+331	76	-4.2802
+332	76	-4.7925
+333	76	-5.3277
+334	76	-5.4549
+335	76	-5.4303
+336	76	-5.2559
+337	76	-5.2371
+338	76	-5.2267
+339	76	-5.5562
+340	76	-5.3807
+341	76	-2.3898
+342	76	-1.1913
+343	76	0
+344	76	0
+345	76	0
+346	76	0
+347	76	0
+348	76	0
+349	76	0
+350	76	0
+351	76	0
+352	76	0
+353	76	0
+354	76	0
+355	76	0
+356	76	0
+357	76	0
+358	76	0
+359	76	0
+360	76	0
+0	76.5	0
+1	76.5	0
+2	76.5	0
+3	76.5	0
+4	76.5	0
+5	76.5	0
+6	76.5	0
+7	76.5	0
+8	76.5	0
+9	76.5	0
+10	76.5	0
+11	76.5	0
+12	76.5	0
+13	76.5	0
+14	76.5	0
+15	76.5	0
+16	76.5	0
+17	76.5	0
+18	76.5	0
+19	76.5	0
+20	76.5	0
+21	76.5	0
+22	76.5	0
+23	76.5	0
+24	76.5	0
+25	76.5	0
+26	76.5	0
+27	76.5	0
+28	76.5	0
+29	76.5	0
+30	76.5	0
+31	76.5	0
+32	76.5	0
+33	76.5	0
+34	76.5	0
+35	76.5	0
+36	76.5	0
+37	76.5	0
+38	76.5	0
+39	76.5	0
+40	76.5	0
+41	76.5	0
+42	76.5	0
+43	76.5	0
+44	76.5	0
+45	76.5	0
+46	76.5	0
+47	76.5	0
+48	76.5	0
+49	76.5	0
+50	76.5	0
+51	76.5	0
+52	76.5	0
+53	76.5	0
+54	76.5	0
+55	76.5	0
+56	76.5	0
+57	76.5	0
+58	76.5	0
+59	76.5	0
+60	76.5	0
+61	76.5	0
+62	76.5	0
+63	76.5	0
+64	76.5	0
+65	76.5	0
+66	76.5	0
+67	76.5	0
+68	76.5	0
+69	76.5	0
+70	76.5	0
+71	76.5	0
+72	76.5	0
+73	76.5	0
+74	76.5	0
+75	76.5	0
+76	76.5	0
+77	76.5	0
+78	76.5	0
+79	76.5	0
+80	76.5	0
+81	76.5	0
+82	76.5	0
+83	76.5	0
+84	76.5	0
+85	76.5	0
+86	76.5	0
+87	76.5	0
+88	76.5	0
+89	76.5	0
+90	76.5	0
+91	76.5	0
+92	76.5	0
+93	76.5	0
+94	76.5	0
+95	76.5	0
+96	76.5	0
+97	76.5	0
+98	76.5	0
+99	76.5	0
+100	76.5	0
+101	76.5	0
+102	76.5	0
+103	76.5	0
+104	76.5	0
+105	76.5	0
+106	76.5	0
+107	76.5	0
+108	76.5	0
+109	76.5	0
+110	76.5	0
+111	76.5	0
+112	76.5	0
+113	76.5	0
+114	76.5	0
+115	76.5	0
+116	76.5	0
+117	76.5	0
+118	76.5	0
+119	76.5	0
+120	76.5	0
+121	76.5	0
+122	76.5	0
+123	76.5	0
+124	76.5	0
+125	76.5	0
+126	76.5	0
+127	76.5	0
+128	76.5	0
+129	76.5	0
+130	76.5	0
+131	76.5	0
+132	76.5	0
+133	76.5	0
+134	76.5	0
+135	76.5	0
+136	76.5	0
+137	76.5	0
+138	76.5	0
+139	76.5	0
+140	76.5	0
+141	76.5	0
+142	76.5	0
+143	76.5	0
+144	76.5	0
+145	76.5	0
+146	76.5	0
+147	76.5	0
+148	76.5	0
+149	76.5	0
+150	76.5	0
+151	76.5	0
+152	76.5	0
+153	76.5	0
+154	76.5	0
+155	76.5	0
+156	76.5	0
+157	76.5	0
+158	76.5	0
+159	76.5	0
+160	76.5	0
+161	76.5	0
+162	76.5	0
+163	76.5	0
+164	76.5	0
+165	76.5	0
+166	76.5	0
+167	76.5	0
+168	76.5	0
+169	76.5	0
+170	76.5	0
+171	76.5	0
+172	76.5	0
+173	76.5	0
+174	76.5	0
+175	76.5	0
+176	76.5	0
+177	76.5	0
+178	76.5	0
+179	76.5	0
+180	76.5	0
+181	76.5	0
+182	76.5	0
+183	76.5	0
+184	76.5	0
+185	76.5	0
+186	76.5	0
+187	76.5	0
+188	76.5	0
+189	76.5	0
+190	76.5	0
+191	76.5	0
+192	76.5	0
+193	76.5	0
+194	76.5	0
+195	76.5	0
+196	76.5	0
+197	76.5	0
+198	76.5	0
+199	76.5	0
+200	76.5	0
+201	76.5	0
+202	76.5	0
+203	76.5	0
+204	76.5	0
+205	76.5	0
+206	76.5	0
+207	76.5	0
+208	76.5	0
+209	76.5	0
+210	76.5	0
+211	76.5	0
+212	76.5	0
+213	76.5	0
+214	76.5	0
+215	76.5	0
+216	76.5	0
+217	76.5	0
+218	76.5	0
+219	76.5	0
+220	76.5	0
+221	76.5	0
+222	76.5	0
+223	76.5	0
+224	76.5	0
+225	76.5	0
+226	76.5	0
+227	76.5	0
+228	76.5	0
+229	76.5	0
+230	76.5	0
+231	76.5	0
+232	76.5	0
+233	76.5	0
+234	76.5	0
+235	76.5	0
+236	76.5	0
+237	76.5	0
+238	76.5	0
+239	76.5	0
+240	76.5	0
+241	76.5	0
+242	76.5	0
+243	76.5	0
+244	76.5	0
+245	76.5	0
+246	76.5	0
+247	76.5	0
+248	76.5	0
+249	76.5	0
+250	76.5	0
+251	76.5	0
+252	76.5	0
+253	76.5	0
+254	76.5	0
+255	76.5	0
+256	76.5	0
+257	76.5	0
+258	76.5	0
+259	76.5	0
+260	76.5	0
+261	76.5	0
+262	76.5	0
+263	76.5	0
+264	76.5	0
+265	76.5	0
+266	76.5	0
+267	76.5	0
+268	76.5	0
+269	76.5	0
+270	76.5	0
+271	76.5	0
+272	76.5	0
+273	76.5	0
+274	76.5	0
+275	76.5	0
+276	76.5	0
+277	76.5	0
+278	76.5	0
+279	76.5	0
+280	76.5	0
+281	76.5	0
+282	76.5	0
+283	76.5	0
+284	76.5	0
+285	76.5	0
+286	76.5	0
+287	76.5	-4.8818
+288	76.5	-6.8533
+289	76.5	-10.643
+290	76.5	-13.03
+291	76.5	-12.824
+292	76.5	-15.731
+293	76.5	-16.088
+294	76.5	-11.172
+295	76.5	-14.281
+296	76.5	-17.86
+297	76.5	-16.665
+298	76.5	-17.283
+299	76.5	-14.543
+300	76.5	-10.99
+301	76.5	-18.112
+302	76.5	-17.655
+303	76.5	-17.198
+304	76.5	-16.564
+305	76.5	-15.792
+306	76.5	-15.441
+307	76.5	-14.917
+308	76.5	-13.941
+309	76.5	-13.005
+310	76.5	-12.049
+311	76.5	-11.215
+312	76.5	-10.052
+313	76.5	-8.8557
+314	76.5	-7.6596
+315	76.5	-6.4753
+316	76.5	-5.3188
+317	76.5	-4.8544
+318	76.5	-4.4988
+319	76.5	-4.1433
+320	76.5	-3.5887
+321	76.5	-3.188
+322	76.5	-3.1176
+323	76.5	-3.3213
+324	76.5	-3.2307
+325	76.5	-2.871
+326	76.5	-2.483
+327	76.5	-2.5237
+328	76.5	-3.0524
+329	76.5	-3.6235
+330	76.5	-4.1838
+331	76.5	-4.676
+332	76.5	-5.1682
+333	76.5	-5.3709
+334	76.5	-5.2152
+335	76.5	-5.1744
+336	76.5	-5.2298
+337	76.5	-5.2532
+338	76.5	-5.4675
+339	76.5	-5.8015
+340	76.5	-5.1416
+341	76.5	-2.421
+342	76.5	0
+343	76.5	0
+344	76.5	0
+345	76.5	0
+346	76.5	0
+347	76.5	0
+348	76.5	0
+349	76.5	0
+350	76.5	0
+351	76.5	0
+352	76.5	0
+353	76.5	0
+354	76.5	0
+355	76.5	0
+356	76.5	0
+357	76.5	0
+358	76.5	0
+359	76.5	0
+360	76.5	0
+0	77	0
+1	77	0
+2	77	0
+3	77	0
+4	77	0
+5	77	0
+6	77	0
+7	77	0
+8	77	0
+9	77	0
+10	77	0
+11	77	0
+12	77	0
+13	77	0
+14	77	0
+15	77	0
+16	77	0
+17	77	0
+18	77	0
+19	77	0
+20	77	0
+21	77	0
+22	77	0
+23	77	0
+24	77	0
+25	77	0
+26	77	0
+27	77	0
+28	77	0
+29	77	0
+30	77	0
+31	77	0
+32	77	0
+33	77	0
+34	77	0
+35	77	0
+36	77	0
+37	77	0
+38	77	0
+39	77	0
+40	77	0
+41	77	0
+42	77	0
+43	77	0
+44	77	0
+45	77	0
+46	77	0
+47	77	0
+48	77	0
+49	77	0
+50	77	0
+51	77	0
+52	77	0
+53	77	0
+54	77	0
+55	77	0
+56	77	0
+57	77	0
+58	77	0
+59	77	0
+60	77	0
+61	77	0
+62	77	0
+63	77	0
+64	77	0
+65	77	0
+66	77	0
+67	77	0
+68	77	0
+69	77	0
+70	77	0
+71	77	0
+72	77	0
+73	77	0
+74	77	0
+75	77	0
+76	77	0
+77	77	0
+78	77	0
+79	77	0
+80	77	0
+81	77	0
+82	77	0
+83	77	0
+84	77	0
+85	77	0
+86	77	0
+87	77	0
+88	77	0
+89	77	0
+90	77	0
+91	77	0
+92	77	0
+93	77	0
+94	77	0
+95	77	0
+96	77	0
+97	77	0
+98	77	0
+99	77	0
+100	77	0
+101	77	0
+102	77	0
+103	77	0
+104	77	0
+105	77	0
+106	77	0
+107	77	0
+108	77	0
+109	77	0
+110	77	0
+111	77	0
+112	77	0
+113	77	0
+114	77	0
+115	77	0
+116	77	0
+117	77	0
+118	77	0
+119	77	0
+120	77	0
+121	77	0
+122	77	0
+123	77	0
+124	77	0
+125	77	0
+126	77	0
+127	77	0
+128	77	0
+129	77	0
+130	77	0
+131	77	0
+132	77	0
+133	77	0
+134	77	0
+135	77	0
+136	77	0
+137	77	0
+138	77	0
+139	77	0
+140	77	0
+141	77	0
+142	77	0
+143	77	0
+144	77	0
+145	77	0
+146	77	0
+147	77	0
+148	77	0
+149	77	0
+150	77	0
+151	77	0
+152	77	0
+153	77	0
+154	77	0
+155	77	0
+156	77	0
+157	77	0
+158	77	0
+159	77	0
+160	77	0
+161	77	0
+162	77	0
+163	77	0
+164	77	0
+165	77	0
+166	77	0
+167	77	0
+168	77	0
+169	77	0
+170	77	0
+171	77	0
+172	77	0
+173	77	0
+174	77	0
+175	77	0
+176	77	0
+177	77	0
+178	77	0
+179	77	0
+180	77	0
+181	77	0
+182	77	0
+183	77	0
+184	77	0
+185	77	0
+186	77	0
+187	77	0
+188	77	0
+189	77	0
+190	77	0
+191	77	0
+192	77	0
+193	77	0
+194	77	0
+195	77	0
+196	77	0
+197	77	0
+198	77	0
+199	77	0
+200	77	0
+201	77	0
+202	77	0
+203	77	0
+204	77	0
+205	77	0
+206	77	0
+207	77	0
+208	77	0
+209	77	0
+210	77	0
+211	77	0
+212	77	0
+213	77	0
+214	77	0
+215	77	0
+216	77	0
+217	77	0
+218	77	0
+219	77	0
+220	77	0
+221	77	0
+222	77	0
+223	77	0
+224	77	0
+225	77	0
+226	77	0
+227	77	0
+228	77	0
+229	77	0
+230	77	0
+231	77	0
+232	77	0
+233	77	0
+234	77	0
+235	77	0
+236	77	0
+237	77	0
+238	77	0
+239	77	0
+240	77	0
+241	77	0
+242	77	0
+243	77	0
+244	77	0
+245	77	0
+246	77	0
+247	77	0
+248	77	0
+249	77	0
+250	77	0
+251	77	0
+252	77	0
+253	77	0
+254	77	0
+255	77	0
+256	77	0
+257	77	0
+258	77	0
+259	77	0
+260	77	0
+261	77	0
+262	77	0
+263	77	0
+264	77	0
+265	77	0
+266	77	0
+267	77	0
+268	77	0
+269	77	0
+270	77	0
+271	77	0
+272	77	0
+273	77	0
+274	77	0
+275	77	0
+276	77	0
+277	77	0
+278	77	0
+279	77	0
+280	77	0
+281	77	0
+282	77	0
+283	77	0
+284	77	0
+285	77	0
+286	77	0
+287	77	-5.824
+288	77	-13.83
+289	77	-14.87
+290	77	-14.761
+291	77	-15.482
+292	77	-15.571
+293	77	-15.939
+294	77	-15.547
+295	77	-17.56
+296	77	-17.63
+297	77	-17.395
+298	77	-17.226
+299	77	-16.989
+300	77	-15.364
+301	77	-17.305
+302	77	-16.847
+303	77	-16.389
+304	77	-15.876
+305	77	-15.229
+306	77	-14.607
+307	77	-13.999
+308	77	-12.905
+309	77	-12.144
+310	77	-11.392
+311	77	-10.69
+312	77	-10.058
+313	77	-8.8617
+314	77	-7.6656
+315	77	-6.4695
+316	77	-5.3314
+317	77	-4.8957
+318	77	-4.5402
+319	77	-4.1846
+320	77	-3.5774
+321	77	-3.2835
+322	77	-3.4872
+323	77	-3.6909
+324	77	-3.6634
+325	77	-3.3037
+326	77	-2.944
+327	77	-3.1048
+328	77	-3.5075
+329	77	-4.0204
+330	77	-4.5796
+331	77	-5.0718
+332	77	-5.5013
+333	77	-5.509
+334	77	-5.375
+335	77	-5.2226
+336	77	-5.3468
+337	77	-5.5135
+338	77	-5.7082
+339	77	-6.0243
+340	77	-6.0493
+341	77	-4.5063
+342	77	-1.3054
+343	77	0
+344	77	0
+345	77	0
+346	77	0
+347	77	0
+348	77	0
+349	77	0
+350	77	0
+351	77	0
+352	77	0
+353	77	0
+354	77	0
+355	77	0
+356	77	0
+357	77	0
+358	77	0
+359	77	0
+360	77	0
+0	77.5	0
+1	77.5	0
+2	77.5	0
+3	77.5	0
+4	77.5	0
+5	77.5	0
+6	77.5	0
+7	77.5	0
+8	77.5	0
+9	77.5	0
+10	77.5	0
+11	77.5	0
+12	77.5	0
+13	77.5	0
+14	77.5	0
+15	77.5	0
+16	77.5	0
+17	77.5	0
+18	77.5	0
+19	77.5	0
+20	77.5	0
+21	77.5	0
+22	77.5	0
+23	77.5	0
+24	77.5	0
+25	77.5	0
+26	77.5	0
+27	77.5	0
+28	77.5	0
+29	77.5	0
+30	77.5	0
+31	77.5	0
+32	77.5	0
+33	77.5	0
+34	77.5	0
+35	77.5	0
+36	77.5	0
+37	77.5	0
+38	77.5	0
+39	77.5	0
+40	77.5	0
+41	77.5	0
+42	77.5	0
+43	77.5	0
+44	77.5	0
+45	77.5	0
+46	77.5	0
+47	77.5	0
+48	77.5	0
+49	77.5	0
+50	77.5	0
+51	77.5	0
+52	77.5	0
+53	77.5	0
+54	77.5	0
+55	77.5	0
+56	77.5	0
+57	77.5	0
+58	77.5	0
+59	77.5	0
+60	77.5	0
+61	77.5	0
+62	77.5	0
+63	77.5	0
+64	77.5	0
+65	77.5	0
+66	77.5	0
+67	77.5	0
+68	77.5	0
+69	77.5	0
+70	77.5	0
+71	77.5	0
+72	77.5	0
+73	77.5	0
+74	77.5	0
+75	77.5	0
+76	77.5	0
+77	77.5	0
+78	77.5	0
+79	77.5	0
+80	77.5	0
+81	77.5	0
+82	77.5	0
+83	77.5	0
+84	77.5	0
+85	77.5	0
+86	77.5	0
+87	77.5	0
+88	77.5	0
+89	77.5	0
+90	77.5	0
+91	77.5	0
+92	77.5	0
+93	77.5	0
+94	77.5	0
+95	77.5	0
+96	77.5	0
+97	77.5	0
+98	77.5	0
+99	77.5	0
+100	77.5	0
+101	77.5	0
+102	77.5	0
+103	77.5	0
+104	77.5	0
+105	77.5	0
+106	77.5	0
+107	77.5	0
+108	77.5	0
+109	77.5	0
+110	77.5	0
+111	77.5	0
+112	77.5	0
+113	77.5	0
+114	77.5	0
+115	77.5	0
+116	77.5	0
+117	77.5	0
+118	77.5	0
+119	77.5	0
+120	77.5	0
+121	77.5	0
+122	77.5	0
+123	77.5	0
+124	77.5	0
+125	77.5	0
+126	77.5	0
+127	77.5	0
+128	77.5	0
+129	77.5	0
+130	77.5	0
+131	77.5	0
+132	77.5	0
+133	77.5	0
+134	77.5	0
+135	77.5	0
+136	77.5	0
+137	77.5	0
+138	77.5	0
+139	77.5	0
+140	77.5	0
+141	77.5	0
+142	77.5	0
+143	77.5	0
+144	77.5	0
+145	77.5	0
+146	77.5	0
+147	77.5	0
+148	77.5	0
+149	77.5	0
+150	77.5	0
+151	77.5	0
+152	77.5	0
+153	77.5	0
+154	77.5	0
+155	77.5	0
+156	77.5	0
+157	77.5	0
+158	77.5	0
+159	77.5	0
+160	77.5	0
+161	77.5	0
+162	77.5	0
+163	77.5	0
+164	77.5	0
+165	77.5	0
+166	77.5	0
+167	77.5	0
+168	77.5	0
+169	77.5	0
+170	77.5	0
+171	77.5	0
+172	77.5	0
+173	77.5	0
+174	77.5	0
+175	77.5	0
+176	77.5	0
+177	77.5	0
+178	77.5	0
+179	77.5	0
+180	77.5	0
+181	77.5	0
+182	77.5	0
+183	77.5	0
+184	77.5	0
+185	77.5	0
+186	77.5	0
+187	77.5	0
+188	77.5	0
+189	77.5	0
+190	77.5	0
+191	77.5	0
+192	77.5	0
+193	77.5	0
+194	77.5	0
+195	77.5	0
+196	77.5	0
+197	77.5	0
+198	77.5	0
+199	77.5	0
+200	77.5	0
+201	77.5	0
+202	77.5	0
+203	77.5	0
+204	77.5	0
+205	77.5	0
+206	77.5	0
+207	77.5	0
+208	77.5	0
+209	77.5	0
+210	77.5	0
+211	77.5	0
+212	77.5	0
+213	77.5	0
+214	77.5	0
+215	77.5	0
+216	77.5	0
+217	77.5	0
+218	77.5	0
+219	77.5	0
+220	77.5	0
+221	77.5	0
+222	77.5	0
+223	77.5	0
+224	77.5	0
+225	77.5	0
+226	77.5	0
+227	77.5	0
+228	77.5	0
+229	77.5	0
+230	77.5	0
+231	77.5	0
+232	77.5	0
+233	77.5	0
+234	77.5	0
+235	77.5	0
+236	77.5	0
+237	77.5	0
+238	77.5	0
+239	77.5	0
+240	77.5	0
+241	77.5	0
+242	77.5	0
+243	77.5	0
+244	77.5	0
+245	77.5	0
+246	77.5	0
+247	77.5	0
+248	77.5	0
+249	77.5	0
+250	77.5	0
+251	77.5	0
+252	77.5	0
+253	77.5	0
+254	77.5	0
+255	77.5	0
+256	77.5	0
+257	77.5	0
+258	77.5	0
+259	77.5	0
+260	77.5	0
+261	77.5	0
+262	77.5	0
+263	77.5	0
+264	77.5	0
+265	77.5	0
+266	77.5	0
+267	77.5	0
+268	77.5	0
+269	77.5	0
+270	77.5	0
+271	77.5	0
+272	77.5	0
+273	77.5	0
+274	77.5	0
+275	77.5	0
+276	77.5	0
+277	77.5	0
+278	77.5	0
+279	77.5	0
+280	77.5	0
+281	77.5	0
+282	77.5	0
+283	77.5	0
+284	77.5	0
+285	77.5	0
+286	77.5	0
+287	77.5	-4.7602
+288	77.5	-12.424
+289	77.5	-15.165
+290	77.5	-14.952
+291	77.5	-15.866
+292	77.5	-14.733
+293	77.5	-15.789
+294	77.5	-16.723
+295	77.5	-16.983
+296	77.5	-16.947
+297	77.5	-17.144
+298	77.5	-16.849
+299	77.5	-16.502
+300	77.5	-16.958
+301	77.5	-16.497
+302	77.5	-16.039
+303	77.5	-15.578
+304	77.5	-15.049
+305	77.5	-14.52
+306	77.5	-13.893
+307	77.5	-13.104
+308	77.5	-12.341
+309	77.5	-11.593
+310	77.5	-10.841
+311	77.5	-10.166
+312	77.5	-9.6507
+313	77.5	-8.8677
+314	77.5	-7.6716
+315	77.5	-6.4755
+316	77.5	-5.4469
+317	77.5	-4.9792
+318	77.5	-4.5815
+319	77.5	-4.226
+320	77.5	-3.6327
+321	77.5	-3.6532
+322	77.5	-3.8569
+323	77.5	-4.0606
+324	77.5	-4.0415
+325	77.5	-3.7363
+326	77.5	-3.3766
+327	77.5	-3.7248
+328	77.5	-4.1032
+329	77.5	-4.4913
+330	77.5	-4.9754
+331	77.5	-5.5454
+332	77.5	-5.6357
+333	77.5	-5.6434
+334	77.5	-5.4707
+335	77.5	-5.3769
+336	77.5	-5.5535
+337	77.5	-5.7301
+338	77.5	-5.9433
+339	77.5	-6.2203
+340	77.5	-6.4531
+341	77.5	-6.384
+342	77.5	-3.4151
+343	77.5	0
+344	77.5	0
+345	77.5	0
+346	77.5	0
+347	77.5	0
+348	77.5	0
+349	77.5	0
+350	77.5	0
+351	77.5	0
+352	77.5	0
+353	77.5	0
+354	77.5	0
+355	77.5	0
+356	77.5	0
+357	77.5	0
+358	77.5	0
+359	77.5	0
+360	77.5	0
+0	78	0
+1	78	0
+2	78	0
+3	78	0
+4	78	0
+5	78	0
+6	78	0
+7	78	0
+8	78	0
+9	78	0
+10	78	0
+11	78	0
+12	78	0
+13	78	0
+14	78	0
+15	78	0
+16	78	0
+17	78	0
+18	78	0
+19	78	0
+20	78	0
+21	78	0
+22	78	0
+23	78	0
+24	78	0
+25	78	0
+26	78	0
+27	78	0
+28	78	0
+29	78	0
+30	78	0
+31	78	0
+32	78	0
+33	78	0
+34	78	0
+35	78	0
+36	78	0
+37	78	0
+38	78	0
+39	78	0
+40	78	0
+41	78	0
+42	78	0
+43	78	0
+44	78	0
+45	78	0
+46	78	0
+47	78	0
+48	78	0
+49	78	0
+50	78	0
+51	78	0
+52	78	0
+53	78	0
+54	78	0
+55	78	0
+56	78	0
+57	78	0
+58	78	0
+59	78	0
+60	78	0
+61	78	0
+62	78	0
+63	78	0
+64	78	0
+65	78	0
+66	78	0
+67	78	0
+68	78	0
+69	78	0
+70	78	0
+71	78	0
+72	78	0
+73	78	0
+74	78	0
+75	78	0
+76	78	0
+77	78	0
+78	78	0
+79	78	0
+80	78	0
+81	78	0
+82	78	0
+83	78	0
+84	78	0
+85	78	0
+86	78	0
+87	78	0
+88	78	0
+89	78	0
+90	78	0
+91	78	0
+92	78	0
+93	78	0
+94	78	0
+95	78	0
+96	78	0
+97	78	0
+98	78	0
+99	78	0
+100	78	0
+101	78	0
+102	78	0
+103	78	0
+104	78	0
+105	78	0
+106	78	0
+107	78	0
+108	78	0
+109	78	0
+110	78	0
+111	78	0
+112	78	0
+113	78	0
+114	78	0
+115	78	0
+116	78	0
+117	78	0
+118	78	0
+119	78	0
+120	78	0
+121	78	0
+122	78	0
+123	78	0
+124	78	0
+125	78	0
+126	78	0
+127	78	0
+128	78	0
+129	78	0
+130	78	0
+131	78	0
+132	78	0
+133	78	0
+134	78	0
+135	78	0
+136	78	0
+137	78	0
+138	78	0
+139	78	0
+140	78	0
+141	78	0
+142	78	0
+143	78	0
+144	78	0
+145	78	0
+146	78	0
+147	78	0
+148	78	0
+149	78	0
+150	78	0
+151	78	0
+152	78	0
+153	78	0
+154	78	0
+155	78	0
+156	78	0
+157	78	0
+158	78	0
+159	78	0
+160	78	0
+161	78	0
+162	78	0
+163	78	0
+164	78	0
+165	78	0
+166	78	0
+167	78	0
+168	78	0
+169	78	0
+170	78	0
+171	78	0
+172	78	0
+173	78	0
+174	78	0
+175	78	0
+176	78	0
+177	78	0
+178	78	0
+179	78	0
+180	78	0
+181	78	0
+182	78	0
+183	78	0
+184	78	0
+185	78	0
+186	78	0
+187	78	0
+188	78	0
+189	78	0
+190	78	0
+191	78	0
+192	78	0
+193	78	0
+194	78	0
+195	78	0
+196	78	0
+197	78	0
+198	78	0
+199	78	0
+200	78	0
+201	78	0
+202	78	0
+203	78	0
+204	78	0
+205	78	0
+206	78	0
+207	78	0
+208	78	0
+209	78	0
+210	78	0
+211	78	0
+212	78	0
+213	78	0
+214	78	0
+215	78	0
+216	78	0
+217	78	0
+218	78	0
+219	78	0
+220	78	0
+221	78	0
+222	78	0
+223	78	0
+224	78	0
+225	78	0
+226	78	0
+227	78	0
+228	78	0
+229	78	0
+230	78	0
+231	78	0
+232	78	0
+233	78	0
+234	78	0
+235	78	0
+236	78	0
+237	78	0
+238	78	0
+239	78	0
+240	78	0
+241	78	0
+242	78	0
+243	78	0
+244	78	0
+245	78	0
+246	78	0
+247	78	0
+248	78	0
+249	78	0
+250	78	0
+251	78	0
+252	78	0
+253	78	0
+254	78	0
+255	78	0
+256	78	0
+257	78	0
+258	78	0
+259	78	0
+260	78	0
+261	78	0
+262	78	0
+263	78	0
+264	78	0
+265	78	0
+266	78	0
+267	78	0
+268	78	0
+269	78	0
+270	78	0
+271	78	0
+272	78	0
+273	78	0
+274	78	0
+275	78	0
+276	78	0
+277	78	0
+278	78	0
+279	78	0
+280	78	0
+281	78	0
+282	78	0
+283	78	0
+284	78	0
+285	78	0
+286	78	0
+287	78	-3.5188
+288	78	-10.247
+289	78	-15.46
+290	78	-15.746
+291	78	-15.684
+292	78	-12.445
+293	78	-15.533
+294	78	-16.217
+295	78	-16.399
+296	78	-16.265
+297	78	-16.296
+298	78	-16.392
+299	78	-16.125
+300	78	-16.151
+301	78	-15.689
+302	78	-15.23
+303	78	-14.751
+304	78	-14.222
+305	78	-13.693
+306	78	-13.169
+307	78	-12.479
+308	78	-11.738
+309	78	-11.042
+310	78	-10.29
+311	78	-9.6413
+312	78	-9.1262
+313	78	-8.611
+314	78	-7.6777
+315	78	-6.4816
+316	78	-5.5624
+317	78	-5.0655
+318	78	-4.6616
+319	78	-4.2673
+320	78	-3.7848
+321	78	-4.0228
+322	78	-4.2265
+323	78	-4.4302
+324	78	-4.4161
+325	78	-4.169
+326	78	-3.9371
+327	78	-4.3285
+328	78	-4.768
+329	78	-5.1463
+330	78	-5.4445
+331	78	-5.7625
+332	78	-5.7739
+333	78	-5.7688
+334	78	-5.5166
+335	78	-5.5588
+336	78	-5.753
+337	78	-5.9673
+338	78	-6.1909
+339	78	-6.4471
+340	78	-6.6161
+341	78	-6.6569
+342	78	-5.2163
+343	78	-0.084452
+344	78	0
+345	78	0
+346	78	0
+347	78	0
+348	78	0
+349	78	0
+350	78	0
+351	78	0
+352	78	0
+353	78	0
+354	78	0
+355	78	0
+356	78	0
+357	78	0
+358	78	0
+359	78	0
+360	78	0
+0	78.5	0
+1	78.5	0
+2	78.5	0
+3	78.5	0
+4	78.5	0
+5	78.5	0
+6	78.5	0
+7	78.5	0
+8	78.5	0
+9	78.5	0
+10	78.5	0
+11	78.5	0
+12	78.5	0
+13	78.5	0
+14	78.5	0
+15	78.5	0
+16	78.5	0
+17	78.5	0
+18	78.5	0
+19	78.5	0
+20	78.5	0
+21	78.5	0
+22	78.5	0
+23	78.5	0
+24	78.5	0
+25	78.5	0
+26	78.5	0
+27	78.5	0
+28	78.5	0
+29	78.5	0
+30	78.5	0
+31	78.5	0
+32	78.5	0
+33	78.5	0
+34	78.5	0
+35	78.5	0
+36	78.5	0
+37	78.5	0
+38	78.5	0
+39	78.5	0
+40	78.5	0
+41	78.5	0
+42	78.5	0
+43	78.5	0
+44	78.5	0
+45	78.5	0
+46	78.5	0
+47	78.5	0
+48	78.5	0
+49	78.5	0
+50	78.5	0
+51	78.5	0
+52	78.5	0
+53	78.5	0
+54	78.5	0
+55	78.5	0
+56	78.5	0
+57	78.5	0
+58	78.5	0
+59	78.5	0
+60	78.5	0
+61	78.5	0
+62	78.5	0
+63	78.5	0
+64	78.5	0
+65	78.5	0
+66	78.5	0
+67	78.5	0
+68	78.5	0
+69	78.5	0
+70	78.5	0
+71	78.5	0
+72	78.5	0
+73	78.5	0
+74	78.5	0
+75	78.5	0
+76	78.5	0
+77	78.5	0
+78	78.5	0
+79	78.5	0
+80	78.5	0
+81	78.5	0
+82	78.5	0
+83	78.5	0
+84	78.5	0
+85	78.5	0
+86	78.5	0
+87	78.5	0
+88	78.5	0
+89	78.5	0
+90	78.5	0
+91	78.5	0
+92	78.5	0
+93	78.5	0
+94	78.5	0
+95	78.5	0
+96	78.5	0
+97	78.5	0
+98	78.5	0
+99	78.5	0
+100	78.5	0
+101	78.5	0
+102	78.5	0
+103	78.5	0
+104	78.5	0
+105	78.5	0
+106	78.5	0
+107	78.5	0
+108	78.5	0
+109	78.5	0
+110	78.5	0
+111	78.5	0
+112	78.5	0
+113	78.5	0
+114	78.5	0
+115	78.5	0
+116	78.5	0
+117	78.5	0
+118	78.5	0
+119	78.5	0
+120	78.5	0
+121	78.5	0
+122	78.5	0
+123	78.5	0
+124	78.5	0
+125	78.5	0
+126	78.5	0
+127	78.5	0
+128	78.5	0
+129	78.5	0
+130	78.5	0
+131	78.5	0
+132	78.5	0
+133	78.5	0
+134	78.5	0
+135	78.5	0
+136	78.5	0
+137	78.5	0
+138	78.5	0
+139	78.5	0
+140	78.5	0
+141	78.5	0
+142	78.5	0
+143	78.5	0
+144	78.5	0
+145	78.5	0
+146	78.5	0
+147	78.5	0
+148	78.5	0
+149	78.5	0
+150	78.5	0
+151	78.5	0
+152	78.5	0
+153	78.5	0
+154	78.5	0
+155	78.5	0
+156	78.5	0
+157	78.5	0
+158	78.5	0
+159	78.5	0
+160	78.5	0
+161	78.5	0
+162	78.5	0
+163	78.5	0
+164	78.5	0
+165	78.5	0
+166	78.5	0
+167	78.5	0
+168	78.5	0
+169	78.5	0
+170	78.5	0
+171	78.5	0
+172	78.5	0
+173	78.5	0
+174	78.5	0
+175	78.5	0
+176	78.5	0
+177	78.5	0
+178	78.5	0
+179	78.5	0
+180	78.5	0
+181	78.5	0
+182	78.5	0
+183	78.5	0
+184	78.5	0
+185	78.5	0
+186	78.5	0
+187	78.5	0
+188	78.5	0
+189	78.5	0
+190	78.5	0
+191	78.5	0
+192	78.5	0
+193	78.5	0
+194	78.5	0
+195	78.5	0
+196	78.5	0
+197	78.5	0
+198	78.5	0
+199	78.5	0
+200	78.5	0
+201	78.5	0
+202	78.5	0
+203	78.5	0
+204	78.5	0
+205	78.5	0
+206	78.5	0
+207	78.5	0
+208	78.5	0
+209	78.5	0
+210	78.5	0
+211	78.5	0
+212	78.5	0
+213	78.5	0
+214	78.5	0
+215	78.5	0
+216	78.5	0
+217	78.5	0
+218	78.5	0
+219	78.5	0
+220	78.5	0
+221	78.5	0
+222	78.5	0
+223	78.5	0
+224	78.5	0
+225	78.5	0
+226	78.5	0
+227	78.5	0
+228	78.5	0
+229	78.5	0
+230	78.5	0
+231	78.5	0
+232	78.5	0
+233	78.5	0
+234	78.5	0
+235	78.5	0
+236	78.5	0
+237	78.5	0
+238	78.5	0
+239	78.5	0
+240	78.5	0
+241	78.5	0
+242	78.5	0
+243	78.5	0
+244	78.5	0
+245	78.5	0
+246	78.5	0
+247	78.5	0
+248	78.5	0
+249	78.5	0
+250	78.5	0
+251	78.5	0
+252	78.5	0
+253	78.5	0
+254	78.5	0
+255	78.5	0
+256	78.5	0
+257	78.5	0
+258	78.5	0
+259	78.5	0
+260	78.5	0
+261	78.5	0
+262	78.5	0
+263	78.5	0
+264	78.5	0
+265	78.5	0
+266	78.5	0
+267	78.5	0
+268	78.5	0
+269	78.5	0
+270	78.5	0
+271	78.5	0
+272	78.5	0
+273	78.5	0
+274	78.5	0
+275	78.5	0
+276	78.5	0
+277	78.5	0
+278	78.5	0
+279	78.5	0
+280	78.5	0
+281	78.5	0
+282	78.5	0
+283	78.5	0
+284	78.5	0
+285	78.5	0
+286	78.5	0
+287	78.5	0
+288	78.5	-6.7142
+289	78.5	-13.624
+290	78.5	-15.795
+291	78.5	-14.992
+292	78.5	-10.158
+293	78.5	-14.127
+294	78.5	-15.747
+295	78.5	-15.538
+296	78.5	-15.469
+297	78.5	-15.469
+298	78.5	-15.523
+299	78.5	-15.639
+300	78.5	-15.342
+301	78.5	-14.879
+302	78.5	-14.421
+303	78.5	-13.924
+304	78.5	-13.395
+305	78.5	-12.932
+306	78.5	-12.476
+307	78.5	-11.894
+308	78.5	-11.134
+309	78.5	-10.46
+310	78.5	-9.7389
+311	78.5	-9.1168
+312	78.5	-8.6017
+313	78.5	-8.0865
+314	78.5	-7.5714
+315	78.5	-6.4876
+316	78.5	-5.6779
+317	78.5	-5.1646
+318	78.5	-4.7479
+319	78.5	-4.344
+320	78.5	-4.1275
+321	78.5	-4.3739
+322	78.5	-4.5961
+323	78.5	-4.7998
+324	78.5	-4.7907
+325	78.5	-4.6016
+326	78.5	-4.5041
+327	78.5	-4.8951
+328	78.5	-5.4129
+329	78.5	-5.8111
+330	78.5	-5.9247
+331	78.5	-5.9066
+332	78.5	-5.9206
+333	78.5	-5.8153
+334	78.5	-5.6436
+335	78.5	-5.6932
+336	78.5	-6.0041
+337	78.5	-6.2179
+338	78.5	-6.4384
+339	78.5	-6.6924
+340	78.5	-6.7792
+341	78.5	-6.8475
+342	78.5	-5.1027
+343	78.5	-1.5175
+344	78.5	0
+345	78.5	0
+346	78.5	0
+347	78.5	0
+348	78.5	0
+349	78.5	0
+350	78.5	0
+351	78.5	0
+352	78.5	0
+353	78.5	0
+354	78.5	0
+355	78.5	0
+356	78.5	0
+357	78.5	0
+358	78.5	0
+359	78.5	0
+360	78.5	0
+0	79	0
+1	79	0
+2	79	0
+3	79	0
+4	79	0
+5	79	0
+6	79	0
+7	79	0
+8	79	0
+9	79	0
+10	79	0
+11	79	0
+12	79	0
+13	79	0
+14	79	0
+15	79	0
+16	79	0
+17	79	0
+18	79	0
+19	79	0
+20	79	0
+21	79	0
+22	79	0
+23	79	0
+24	79	0
+25	79	0
+26	79	0
+27	79	0
+28	79	0
+29	79	0
+30	79	0
+31	79	0
+32	79	0
+33	79	0
+34	79	0
+35	79	0
+36	79	0
+37	79	0
+38	79	0
+39	79	0
+40	79	0
+41	79	0
+42	79	0
+43	79	0
+44	79	0
+45	79	0
+46	79	0
+47	79	0
+48	79	0
+49	79	0
+50	79	0
+51	79	0
+52	79	0
+53	79	0
+54	79	0
+55	79	0
+56	79	0
+57	79	0
+58	79	0
+59	79	0
+60	79	0
+61	79	0
+62	79	0
+63	79	0
+64	79	0
+65	79	0
+66	79	0
+67	79	0
+68	79	0
+69	79	0
+70	79	0
+71	79	0
+72	79	0
+73	79	0
+74	79	0
+75	79	0
+76	79	0
+77	79	0
+78	79	0
+79	79	0
+80	79	0
+81	79	0
+82	79	0
+83	79	0
+84	79	0
+85	79	0
+86	79	0
+87	79	0
+88	79	0
+89	79	0
+90	79	0
+91	79	0
+92	79	0
+93	79	0
+94	79	0
+95	79	0
+96	79	0
+97	79	0
+98	79	0
+99	79	0
+100	79	0
+101	79	0
+102	79	0
+103	79	0
+104	79	0
+105	79	0
+106	79	0
+107	79	0
+108	79	0
+109	79	0
+110	79	0
+111	79	0
+112	79	0
+113	79	0
+114	79	0
+115	79	0
+116	79	0
+117	79	0
+118	79	0
+119	79	0
+120	79	0
+121	79	0
+122	79	0
+123	79	0
+124	79	0
+125	79	0
+126	79	0
+127	79	0
+128	79	0
+129	79	0
+130	79	0
+131	79	0
+132	79	0
+133	79	0
+134	79	0
+135	79	0
+136	79	0
+137	79	0
+138	79	0
+139	79	0
+140	79	0
+141	79	0
+142	79	0
+143	79	0
+144	79	0
+145	79	0
+146	79	0
+147	79	0
+148	79	0
+149	79	0
+150	79	0
+151	79	0
+152	79	0
+153	79	0
+154	79	0
+155	79	0
+156	79	0
+157	79	0
+158	79	0
+159	79	0
+160	79	0
+161	79	0
+162	79	0
+163	79	0
+164	79	0
+165	79	0
+166	79	0
+167	79	0
+168	79	0
+169	79	0
+170	79	0
+171	79	0
+172	79	0
+173	79	0
+174	79	0
+175	79	0
+176	79	0
+177	79	0
+178	79	0
+179	79	0
+180	79	0
+181	79	0
+182	79	0
+183	79	0
+184	79	0
+185	79	0
+186	79	0
+187	79	0
+188	79	0
+189	79	0
+190	79	0
+191	79	0
+192	79	0
+193	79	0
+194	79	0
+195	79	0
+196	79	0
+197	79	0
+198	79	0
+199	79	0
+200	79	0
+201	79	0
+202	79	0
+203	79	0
+204	79	0
+205	79	0
+206	79	0
+207	79	0
+208	79	0
+209	79	0
+210	79	0
+211	79	0
+212	79	0
+213	79	0
+214	79	0
+215	79	0
+216	79	0
+217	79	0
+218	79	0
+219	79	0
+220	79	0
+221	79	0
+222	79	0
+223	79	0
+224	79	0
+225	79	0
+226	79	0
+227	79	0
+228	79	0
+229	79	0
+230	79	0
+231	79	0
+232	79	0
+233	79	0
+234	79	0
+235	79	0
+236	79	0
+237	79	0
+238	79	0
+239	79	0
+240	79	0
+241	79	0
+242	79	0
+243	79	0
+244	79	0
+245	79	0
+246	79	0
+247	79	0
+248	79	0
+249	79	0
+250	79	0
+251	79	0
+252	79	0
+253	79	0
+254	79	0
+255	79	0
+256	79	0
+257	79	0
+258	79	0
+259	79	0
+260	79	0
+261	79	0
+262	79	0
+263	79	0
+264	79	0
+265	79	0
+266	79	0
+267	79	0
+268	79	0
+269	79	0
+270	79	0
+271	79	0
+272	79	0
+273	79	0
+274	79	0
+275	79	0
+276	79	0
+277	79	0
+278	79	0
+279	79	0
+280	79	0
+281	79	0
+282	79	0
+283	79	0
+284	79	0
+285	79	0
+286	79	0
+287	79	0
+288	79	-0.78138
+289	79	-8.3042
+290	79	-13.702
+291	79	-12.704
+292	79	-7.8704
+293	79	-11.002
+294	79	-15.399
+295	79	-14.979
+296	79	-14.676
+297	79	-14.643
+298	79	-14.655
+299	79	-14.771
+300	79	-14.485
+301	79	-14.07
+302	79	-13.611
+303	79	-13.151
+304	79	-12.695
+305	79	-12.239
+306	79	-11.862
+307	79	-11.454
+308	79	-10.593
+309	79	-9.8745
+310	79	-9.1827
+311	79	-8.5923
+312	79	-8.0771
+313	79	-7.562
+314	79	-7.0469
+315	79	-6.4936
+316	79	-5.7934
+317	79	-5.2801
+318	79	-4.8342
+319	79	-4.4303
+320	79	-4.5025
+321	79	-4.7166
+322	79	-4.963
+323	79	-5.1694
+324	79	-5.1653
+325	79	-5.0463
+326	79	-5.0711
+327	79	-5.4618
+328	79	-5.9795
+329	79	-6.2482
+330	79	-6.1016
+331	79	-6.0572
+332	79	-6.0673
+333	79	-5.8592
+334	79	-5.7176
+335	79	-5.8513
+336	79	-6.2141
+337	79	-6.4686
+338	79	-6.686
+339	79	-6.9332
+340	79	-7.0577
+341	79	-7.126
+342	79	-6.3973
+343	79	-2.6908
+344	79	0
+345	79	0
+346	79	0
+347	79	0
+348	79	0
+349	79	0
+350	79	0
+351	79	0
+352	79	0
+353	79	0
+354	79	0
+355	79	0
+356	79	0
+357	79	0
+358	79	0
+359	79	0
+360	79	0
+0	79.5	0
+1	79.5	0
+2	79.5	0
+3	79.5	0
+4	79.5	0
+5	79.5	0
+6	79.5	0
+7	79.5	0
+8	79.5	0
+9	79.5	0
+10	79.5	0
+11	79.5	0
+12	79.5	0
+13	79.5	0
+14	79.5	0
+15	79.5	0
+16	79.5	0
+17	79.5	0
+18	79.5	0
+19	79.5	0
+20	79.5	0
+21	79.5	0
+22	79.5	0
+23	79.5	0
+24	79.5	0
+25	79.5	0
+26	79.5	0
+27	79.5	0
+28	79.5	0
+29	79.5	0
+30	79.5	0
+31	79.5	0
+32	79.5	0
+33	79.5	0
+34	79.5	0
+35	79.5	0
+36	79.5	0
+37	79.5	0
+38	79.5	0
+39	79.5	0
+40	79.5	0
+41	79.5	0
+42	79.5	0
+43	79.5	0
+44	79.5	0
+45	79.5	0
+46	79.5	0
+47	79.5	0
+48	79.5	0
+49	79.5	0
+50	79.5	0
+51	79.5	0
+52	79.5	0
+53	79.5	0
+54	79.5	0
+55	79.5	0
+56	79.5	0
+57	79.5	0
+58	79.5	0
+59	79.5	0
+60	79.5	0
+61	79.5	0
+62	79.5	0
+63	79.5	0
+64	79.5	0
+65	79.5	0
+66	79.5	0
+67	79.5	0
+68	79.5	0
+69	79.5	0
+70	79.5	0
+71	79.5	0
+72	79.5	0
+73	79.5	0
+74	79.5	0
+75	79.5	0
+76	79.5	0
+77	79.5	0
+78	79.5	0
+79	79.5	0
+80	79.5	0
+81	79.5	0
+82	79.5	0
+83	79.5	0
+84	79.5	0
+85	79.5	0
+86	79.5	0
+87	79.5	0
+88	79.5	0
+89	79.5	0
+90	79.5	0
+91	79.5	0
+92	79.5	0
+93	79.5	0
+94	79.5	0
+95	79.5	0
+96	79.5	0
+97	79.5	0
+98	79.5	0
+99	79.5	0
+100	79.5	0
+101	79.5	0
+102	79.5	0
+103	79.5	0
+104	79.5	0
+105	79.5	0
+106	79.5	0
+107	79.5	0
+108	79.5	0
+109	79.5	0
+110	79.5	0
+111	79.5	0
+112	79.5	0
+113	79.5	0
+114	79.5	0
+115	79.5	0
+116	79.5	0
+117	79.5	0
+118	79.5	0
+119	79.5	0
+120	79.5	0
+121	79.5	0
+122	79.5	0
+123	79.5	0
+124	79.5	0
+125	79.5	0
+126	79.5	0
+127	79.5	0
+128	79.5	0
+129	79.5	0
+130	79.5	0
+131	79.5	0
+132	79.5	0
+133	79.5	0
+134	79.5	0
+135	79.5	0
+136	79.5	0
+137	79.5	0
+138	79.5	0
+139	79.5	0
+140	79.5	0
+141	79.5	0
+142	79.5	0
+143	79.5	0
+144	79.5	0
+145	79.5	0
+146	79.5	0
+147	79.5	0
+148	79.5	0
+149	79.5	0
+150	79.5	0
+151	79.5	0
+152	79.5	0
+153	79.5	0
+154	79.5	0
+155	79.5	0
+156	79.5	0
+157	79.5	0
+158	79.5	0
+159	79.5	0
+160	79.5	0
+161	79.5	0
+162	79.5	0
+163	79.5	0
+164	79.5	0
+165	79.5	0
+166	79.5	0
+167	79.5	0
+168	79.5	0
+169	79.5	0
+170	79.5	0
+171	79.5	0
+172	79.5	0
+173	79.5	0
+174	79.5	0
+175	79.5	0
+176	79.5	0
+177	79.5	0
+178	79.5	0
+179	79.5	0
+180	79.5	0
+181	79.5	0
+182	79.5	0
+183	79.5	0
+184	79.5	0
+185	79.5	0
+186	79.5	0
+187	79.5	0
+188	79.5	0
+189	79.5	0
+190	79.5	0
+191	79.5	0
+192	79.5	0
+193	79.5	0
+194	79.5	0
+195	79.5	0
+196	79.5	0
+197	79.5	0
+198	79.5	0
+199	79.5	0
+200	79.5	0
+201	79.5	0
+202	79.5	0
+203	79.5	0
+204	79.5	0
+205	79.5	0
+206	79.5	0
+207	79.5	0
+208	79.5	0
+209	79.5	0
+210	79.5	0
+211	79.5	0
+212	79.5	0
+213	79.5	0
+214	79.5	0
+215	79.5	0
+216	79.5	0
+217	79.5	0
+218	79.5	0
+219	79.5	0
+220	79.5	0
+221	79.5	0
+222	79.5	0
+223	79.5	0
+224	79.5	0
+225	79.5	0
+226	79.5	0
+227	79.5	0
+228	79.5	0
+229	79.5	0
+230	79.5	0
+231	79.5	0
+232	79.5	0
+233	79.5	0
+234	79.5	0
+235	79.5	0
+236	79.5	0
+237	79.5	0
+238	79.5	0
+239	79.5	0
+240	79.5	0
+241	79.5	0
+242	79.5	0
+243	79.5	0
+244	79.5	0
+245	79.5	0
+246	79.5	0
+247	79.5	0
+248	79.5	0
+249	79.5	0
+250	79.5	0
+251	79.5	0
+252	79.5	0
+253	79.5	0
+254	79.5	0
+255	79.5	0
+256	79.5	0
+257	79.5	0
+258	79.5	0
+259	79.5	0
+260	79.5	0
+261	79.5	0
+262	79.5	0
+263	79.5	0
+264	79.5	0
+265	79.5	0
+266	79.5	0
+267	79.5	0
+268	79.5	0
+269	79.5	0
+270	79.5	0
+271	79.5	0
+272	79.5	0
+273	79.5	0
+274	79.5	0
+275	79.5	0
+276	79.5	0
+277	79.5	0
+278	79.5	0
+279	79.5	0
+280	79.5	0
+281	79.5	0
+282	79.5	0
+283	79.5	0
+284	79.5	0
+285	79.5	0
+286	79.5	0
+287	79.5	0
+288	79.5	0
+289	79.5	-2.9844
+290	79.5	-8.9508
+291	79.5	-9.7488
+292	79.5	-5.5829
+293	79.5	-7.8772
+294	79.5	-13.409
+295	79.5	-14.219
+296	79.5	-13.917
+297	79.5	-13.851
+298	79.5	-13.817
+299	79.5	-13.861
+300	79.5	-13.528
+301	79.5	-13.195
+302	79.5	-12.799
+303	79.5	-12.458
+304	79.5	-12.001
+305	79.5	-11.545
+306	79.5	-11.279
+307	79.5	-11.015
+308	79.5	-10.104
+309	79.5	-9.3854
+310	79.5	-8.7774
+311	79.5	-8.3703
+312	79.5	-7.855
+313	79.5	-7.3397
+314	79.5	-6.8244
+315	79.5	-6.3633
+316	79.5	-5.9036
+317	79.5	-5.3956
+318	79.5	-4.9205
+319	79.5	-4.7055
+320	79.5	-4.8923
+321	79.5	-5.0984
+322	79.5	-5.3099
+323	79.5	-5.539
+324	79.5	-5.5399
+325	79.5	-5.4202
+326	79.5	-5.6381
+327	79.5	-6.0284
+328	79.5	-6.4226
+329	79.5	-6.2404
+330	79.5	-6.2785
+331	79.5	-6.2153
+332	79.5	-6.1581
+333	79.5	-5.9044
+334	79.5	-5.7787
+335	79.5	-6.0095
+336	79.5	-6.4234
+337	79.5	-6.6867
+338	79.5	-6.9336
+339	79.5	-7.1808
+340	79.5	-7.4069
+341	79.5	-7.1403
+342	79.5	-6.3201
+343	79.5	-3.7276
+344	79.5	0
+345	79.5	0
+346	79.5	-0.37417
+347	79.5	0
+348	79.5	0
+349	79.5	0
+350	79.5	0
+351	79.5	0
+352	79.5	0
+353	79.5	0
+354	79.5	0
+355	79.5	0
+356	79.5	0
+357	79.5	0
+358	79.5	0
+359	79.5	0
+360	79.5	0
+0	80	0
+1	80	0
+2	80	0
+3	80	0
+4	80	0
+5	80	0
+6	80	0
+7	80	0
+8	80	0
+9	80	0
+10	80	0
+11	80	0
+12	80	0
+13	80	0
+14	80	0
+15	80	0
+16	80	0
+17	80	0
+18	80	0
+19	80	0
+20	80	0
+21	80	0
+22	80	0
+23	80	0
+24	80	0
+25	80	0
+26	80	0
+27	80	0
+28	80	0
+29	80	0
+30	80	0
+31	80	0
+32	80	0
+33	80	0
+34	80	0
+35	80	0
+36	80	0
+37	80	0
+38	80	0
+39	80	0
+40	80	0
+41	80	0
+42	80	0
+43	80	0
+44	80	0
+45	80	0
+46	80	0
+47	80	0
+48	80	0
+49	80	0
+50	80	0
+51	80	0
+52	80	0
+53	80	0
+54	80	0
+55	80	0
+56	80	0
+57	80	0
+58	80	0
+59	80	0
+60	80	0
+61	80	0
+62	80	0
+63	80	0
+64	80	0
+65	80	0
+66	80	0
+67	80	0
+68	80	0
+69	80	0
+70	80	0
+71	80	0
+72	80	0
+73	80	0
+74	80	0
+75	80	0
+76	80	0
+77	80	0
+78	80	0
+79	80	0
+80	80	0
+81	80	0
+82	80	0
+83	80	0
+84	80	0
+85	80	0
+86	80	0
+87	80	0
+88	80	0
+89	80	0
+90	80	0
+91	80	0
+92	80	0
+93	80	0
+94	80	0
+95	80	0
+96	80	0
+97	80	0
+98	80	0
+99	80	0
+100	80	0
+101	80	0
+102	80	0
+103	80	0
+104	80	0
+105	80	0
+106	80	0
+107	80	0
+108	80	0
+109	80	0
+110	80	0
+111	80	0
+112	80	0
+113	80	0
+114	80	0
+115	80	0
+116	80	0
+117	80	0
+118	80	0
+119	80	0
+120	80	0
+121	80	0
+122	80	0
+123	80	0
+124	80	0
+125	80	0
+126	80	0
+127	80	0
+128	80	0
+129	80	0
+130	80	0
+131	80	0
+132	80	0
+133	80	0
+134	80	0
+135	80	0
+136	80	0
+137	80	0
+138	80	0
+139	80	0
+140	80	0
+141	80	0
+142	80	0
+143	80	0
+144	80	0
+145	80	0
+146	80	0
+147	80	0
+148	80	0
+149	80	0
+150	80	0
+151	80	0
+152	80	0
+153	80	0
+154	80	0
+155	80	0
+156	80	0
+157	80	0
+158	80	0
+159	80	0
+160	80	0
+161	80	0
+162	80	0
+163	80	0
+164	80	0
+165	80	0
+166	80	0
+167	80	0
+168	80	0
+169	80	0
+170	80	0
+171	80	0
+172	80	0
+173	80	0
+174	80	0
+175	80	0
+176	80	0
+177	80	0
+178	80	0
+179	80	0
+180	80	0
+181	80	0
+182	80	0
+183	80	0
+184	80	0
+185	80	0
+186	80	0
+187	80	0
+188	80	0
+189	80	0
+190	80	0
+191	80	0
+192	80	0
+193	80	0
+194	80	0
+195	80	0
+196	80	0
+197	80	0
+198	80	0
+199	80	0
+200	80	0
+201	80	0
+202	80	0
+203	80	0
+204	80	0
+205	80	0
+206	80	0
+207	80	0
+208	80	0
+209	80	0
+210	80	0
+211	80	0
+212	80	0
+213	80	0
+214	80	0
+215	80	0
+216	80	0
+217	80	0
+218	80	0
+219	80	0
+220	80	0
+221	80	0
+222	80	0
+223	80	0
+224	80	0
+225	80	0
+226	80	0
+227	80	0
+228	80	0
+229	80	0
+230	80	0
+231	80	0
+232	80	0
+233	80	0
+234	80	0
+235	80	0
+236	80	0
+237	80	0
+238	80	0
+239	80	0
+240	80	0
+241	80	0
+242	80	0
+243	80	0
+244	80	0
+245	80	0
+246	80	0
+247	80	0
+248	80	0
+249	80	0
+250	80	0
+251	80	0
+252	80	0
+253	80	0
+254	80	0
+255	80	0
+256	80	0
+257	80	0
+258	80	0
+259	80	0
+260	80	0
+261	80	0
+262	80	0
+263	80	0
+264	80	0
+265	80	0
+266	80	0
+267	80	0
+268	80	0
+269	80	0
+270	80	0
+271	80	0
+272	80	0
+273	80	0
+274	80	0
+275	80	0
+276	80	0
+277	80	0
+278	80	0
+279	80	0
+280	80	0
+281	80	0
+282	80	0
+283	80	0
+284	80	0
+285	80	0
+286	80	0
+287	80	0
+288	80	0
+289	80	0
+290	80	-5.0295
+291	80	-5.7047
+292	80	-2.8124
+293	80	-4.5512
+294	80	-9.1398
+295	80	-13.446
+296	80	-13.158
+297	80	-13.092
+298	80	-13.026
+299	80	-12.903
+300	80	-12.576
+301	80	-12.253
+302	80	-11.938
+303	80	-11.712
+304	80	-11.308
+305	80	-10.852
+306	80	-10.696
+307	80	-10.575
+308	80	-9.6147
+309	80	-8.9577
+310	80	-8.6453
+311	80	-8.3108
+312	80	-7.7955
+313	80	-7.2801
+314	80	-6.8296
+315	80	-6.4177
+316	80	-5.964
+317	80	-5.4896
+318	80	-5.0068
+319	80	-5.096
+320	80	-5.2827
+321	80	-5.4827
+322	80	-5.6942
+323	80	-5.9058
+324	80	-5.8646
+325	80	-5.6942
+326	80	-6.2051
+327	80	-6.5951
+328	80	-6.3689
+329	80	-6.1711
+330	80	-6.4026
+331	80	-6.3734
+332	80	-6.1894
+333	80	-5.9634
+334	80	-5.9163
+335	80	-6.1676
+336	80	-6.6109
+337	80	-6.9213
+338	80	-7.0555
+339	80	-7.0856
+340	80	-7.4141
+341	80	-6.9539
+342	80	-6.1178
+343	80	-4.9584
+344	80	-1.2468
+345	80	-0.15337
+346	80	-1.1625
+347	80	-0.14581
+348	80	0
+349	80	0
+350	80	0
+351	80	0
+352	80	0
+353	80	0
+354	80	0
+355	80	0
+356	80	0
+357	80	0
+358	80	0
+359	80	0
+360	80	0
+0	80.5	0
+1	80.5	0
+2	80.5	0
+3	80.5	0
+4	80.5	0
+5	80.5	0
+6	80.5	0
+7	80.5	0
+8	80.5	0
+9	80.5	0
+10	80.5	0
+11	80.5	0
+12	80.5	0
+13	80.5	0
+14	80.5	0
+15	80.5	0
+16	80.5	0
+17	80.5	0
+18	80.5	0
+19	80.5	0
+20	80.5	0
+21	80.5	0
+22	80.5	0
+23	80.5	0
+24	80.5	0
+25	80.5	0
+26	80.5	0
+27	80.5	0
+28	80.5	0
+29	80.5	0
+30	80.5	0
+31	80.5	0
+32	80.5	0
+33	80.5	0
+34	80.5	0
+35	80.5	0
+36	80.5	0
+37	80.5	0
+38	80.5	0
+39	80.5	0
+40	80.5	0
+41	80.5	0
+42	80.5	0
+43	80.5	0
+44	80.5	0
+45	80.5	0
+46	80.5	0
+47	80.5	0
+48	80.5	0
+49	80.5	0
+50	80.5	0
+51	80.5	0
+52	80.5	0
+53	80.5	0
+54	80.5	0
+55	80.5	0
+56	80.5	0
+57	80.5	0
+58	80.5	0
+59	80.5	0
+60	80.5	0
+61	80.5	0
+62	80.5	0
+63	80.5	0
+64	80.5	0
+65	80.5	0
+66	80.5	0
+67	80.5	0
+68	80.5	0
+69	80.5	0
+70	80.5	0
+71	80.5	0
+72	80.5	0
+73	80.5	0
+74	80.5	0
+75	80.5	0
+76	80.5	0
+77	80.5	0
+78	80.5	0
+79	80.5	0
+80	80.5	0
+81	80.5	0
+82	80.5	0
+83	80.5	0
+84	80.5	0
+85	80.5	0
+86	80.5	0
+87	80.5	0
+88	80.5	0
+89	80.5	0
+90	80.5	0
+91	80.5	0
+92	80.5	0
+93	80.5	0
+94	80.5	0
+95	80.5	0
+96	80.5	0
+97	80.5	0
+98	80.5	0
+99	80.5	0
+100	80.5	0
+101	80.5	0
+102	80.5	0
+103	80.5	0
+104	80.5	0
+105	80.5	0
+106	80.5	0
+107	80.5	0
+108	80.5	0
+109	80.5	0
+110	80.5	0
+111	80.5	0
+112	80.5	0
+113	80.5	0
+114	80.5	0
+115	80.5	0
+116	80.5	0
+117	80.5	0
+118	80.5	0
+119	80.5	0
+120	80.5	0
+121	80.5	0
+122	80.5	0
+123	80.5	0
+124	80.5	0
+125	80.5	0
+126	80.5	0
+127	80.5	0
+128	80.5	0
+129	80.5	0
+130	80.5	0
+131	80.5	0
+132	80.5	0
+133	80.5	0
+134	80.5	0
+135	80.5	0
+136	80.5	0
+137	80.5	0
+138	80.5	0
+139	80.5	0
+140	80.5	0
+141	80.5	0
+142	80.5	0
+143	80.5	0
+144	80.5	0
+145	80.5	0
+146	80.5	0
+147	80.5	0
+148	80.5	0
+149	80.5	0
+150	80.5	0
+151	80.5	0
+152	80.5	0
+153	80.5	0
+154	80.5	0
+155	80.5	0
+156	80.5	0
+157	80.5	0
+158	80.5	0
+159	80.5	0
+160	80.5	0
+161	80.5	0
+162	80.5	0
+163	80.5	0
+164	80.5	0
+165	80.5	0
+166	80.5	0
+167	80.5	0
+168	80.5	0
+169	80.5	0
+170	80.5	0
+171	80.5	0
+172	80.5	0
+173	80.5	0
+174	80.5	0
+175	80.5	0
+176	80.5	0
+177	80.5	0
+178	80.5	0
+179	80.5	0
+180	80.5	0
+181	80.5	0
+182	80.5	0
+183	80.5	0
+184	80.5	0
+185	80.5	0
+186	80.5	0
+187	80.5	0
+188	80.5	0
+189	80.5	0
+190	80.5	0
+191	80.5	0
+192	80.5	0
+193	80.5	0
+194	80.5	0
+195	80.5	0
+196	80.5	0
+197	80.5	0
+198	80.5	0
+199	80.5	0
+200	80.5	0
+201	80.5	0
+202	80.5	0
+203	80.5	0
+204	80.5	0
+205	80.5	0
+206	80.5	0
+207	80.5	0
+208	80.5	0
+209	80.5	0
+210	80.5	0
+211	80.5	0
+212	80.5	0
+213	80.5	0
+214	80.5	0
+215	80.5	0
+216	80.5	0
+217	80.5	0
+218	80.5	0
+219	80.5	0
+220	80.5	0
+221	80.5	0
+222	80.5	0
+223	80.5	0
+224	80.5	0
+225	80.5	0
+226	80.5	0
+227	80.5	0
+228	80.5	0
+229	80.5	0
+230	80.5	0
+231	80.5	0
+232	80.5	0
+233	80.5	0
+234	80.5	0
+235	80.5	0
+236	80.5	0
+237	80.5	0
+238	80.5	0
+239	80.5	0
+240	80.5	0
+241	80.5	0
+242	80.5	0
+243	80.5	0
+244	80.5	0
+245	80.5	0
+246	80.5	0
+247	80.5	0
+248	80.5	0
+249	80.5	0
+250	80.5	0
+251	80.5	0
+252	80.5	0
+253	80.5	0
+254	80.5	0
+255	80.5	0
+256	80.5	0
+257	80.5	0
+258	80.5	0
+259	80.5	0
+260	80.5	0
+261	80.5	0
+262	80.5	0
+263	80.5	0
+264	80.5	0
+265	80.5	0
+266	80.5	0
+267	80.5	0
+268	80.5	0
+269	80.5	0
+270	80.5	0
+271	80.5	0
+272	80.5	0
+273	80.5	0
+274	80.5	0
+275	80.5	0
+276	80.5	0
+277	80.5	0
+278	80.5	0
+279	80.5	0
+280	80.5	0
+281	80.5	0
+282	80.5	0
+283	80.5	0
+284	80.5	0
+285	80.5	0
+286	80.5	0
+287	80.5	0
+288	80.5	0
+289	80.5	0
+290	80.5	-1.1081
+291	80.5	-1.6605
+292	80.5	0
+293	80.5	-1.0604
+294	80.5	-5.3193
+295	80.5	-10.743
+296	80.5	-12.399
+297	80.5	-12.333
+298	80.5	-10.488
+299	80.5	-11.945
+300	80.5	-11.666
+301	80.5	-11.343
+302	80.5	-11.057
+303	80.5	-10.878
+304	80.5	-10.614
+305	80.5	-10.158
+306	80.5	-10.113
+307	80.5	-9.8916
+308	80.5	-9.1381
+309	80.5	-8.8256
+310	80.5	-8.5132
+311	80.5	-8.2503
+312	80.5	-7.7359
+313	80.5	-7.2959
+314	80.5	-6.8905
+315	80.5	-6.4715
+316	80.5	-6.0244
+317	80.5	-5.5752
+318	80.5	-5.1246
+319	80.5	-5.4864
+320	80.5	-5.6732
+321	80.5	-5.867
+322	80.5	-6.0786
+323	80.5	-6.0326
+324	80.5	-6.1512
+325	80.5	-6.003
+326	80.5	-6.6324
+327	80.5	-6.6286
+328	80.5	-6.3153
+329	80.5	-6.1018
+330	80.5	-6.3333
+331	80.5	-6.4343
+332	80.5	-6.2186
+333	80.5	-5.9888
+334	80.5	-6.1022
+335	80.5	-6.3258
+336	80.5	-6.769
+337	80.5	-7.1303
+338	80.5	-7.1512
+339	80.5	-7.1813
+340	80.5	-6.8352
+341	80.5	-6.5295
+342	80.5	-5.912
+343	80.5	-4.8823
+344	80.5	-1.5807
+345	80.5	-0.94167
+346	80.5	-1.9508
+347	80.5	-0.90881
+348	80.5	0
+349	80.5	0
+350	80.5	0
+351	80.5	0
+352	80.5	0
+353	80.5	0
+354	80.5	0
+355	80.5	0
+356	80.5	0
+357	80.5	0
+358	80.5	0
+359	80.5	0
+360	80.5	0
+0	81	0
+1	81	0
+2	81	0
+3	81	0
+4	81	0
+5	81	0
+6	81	0
+7	81	0
+8	81	0
+9	81	0
+10	81	0
+11	81	0
+12	81	0
+13	81	0
+14	81	0
+15	81	0
+16	81	0
+17	81	0
+18	81	0
+19	81	0
+20	81	0
+21	81	0
+22	81	0
+23	81	0
+24	81	0
+25	81	0
+26	81	0
+27	81	0
+28	81	0
+29	81	0
+30	81	0
+31	81	0
+32	81	0
+33	81	0
+34	81	0
+35	81	0
+36	81	0
+37	81	0
+38	81	0
+39	81	0
+40	81	0
+41	81	0
+42	81	0
+43	81	0
+44	81	0
+45	81	0
+46	81	0
+47	81	0
+48	81	0
+49	81	0
+50	81	0
+51	81	0
+52	81	0
+53	81	0
+54	81	0
+55	81	0
+56	81	0
+57	81	0
+58	81	0
+59	81	0
+60	81	0
+61	81	0
+62	81	0
+63	81	0
+64	81	0
+65	81	0
+66	81	0
+67	81	0
+68	81	0
+69	81	0
+70	81	0
+71	81	0
+72	81	0
+73	81	0
+74	81	0
+75	81	0
+76	81	0
+77	81	0
+78	81	0
+79	81	0
+80	81	0
+81	81	0
+82	81	0
+83	81	0
+84	81	0
+85	81	0
+86	81	0
+87	81	0
+88	81	0
+89	81	0
+90	81	0
+91	81	0
+92	81	0
+93	81	0
+94	81	0
+95	81	0
+96	81	0
+97	81	0
+98	81	0
+99	81	0
+100	81	0
+101	81	0
+102	81	0
+103	81	0
+104	81	0
+105	81	0
+106	81	0
+107	81	0
+108	81	0
+109	81	0
+110	81	0
+111	81	0
+112	81	0
+113	81	0
+114	81	0
+115	81	0
+116	81	0
+117	81	0
+118	81	0
+119	81	0
+120	81	0
+121	81	0
+122	81	0
+123	81	0
+124	81	0
+125	81	0
+126	81	0
+127	81	0
+128	81	0
+129	81	0
+130	81	0
+131	81	0
+132	81	0
+133	81	0
+134	81	0
+135	81	0
+136	81	0
+137	81	0
+138	81	0
+139	81	0
+140	81	0
+141	81	0
+142	81	0
+143	81	0
+144	81	0
+145	81	0
+146	81	0
+147	81	0
+148	81	0
+149	81	0
+150	81	0
+151	81	0
+152	81	0
+153	81	0
+154	81	0
+155	81	0
+156	81	0
+157	81	0
+158	81	0
+159	81	0
+160	81	0
+161	81	0
+162	81	0
+163	81	0
+164	81	0
+165	81	0
+166	81	0
+167	81	0
+168	81	0
+169	81	0
+170	81	0
+171	81	0
+172	81	0
+173	81	0
+174	81	0
+175	81	0
+176	81	0
+177	81	0
+178	81	0
+179	81	0
+180	81	0
+181	81	0
+182	81	0
+183	81	0
+184	81	0
+185	81	0
+186	81	0
+187	81	0
+188	81	0
+189	81	0
+190	81	0
+191	81	0
+192	81	0
+193	81	0
+194	81	0
+195	81	0
+196	81	0
+197	81	0
+198	81	0
+199	81	0
+200	81	0
+201	81	0
+202	81	0
+203	81	0
+204	81	0
+205	81	0
+206	81	0
+207	81	0
+208	81	0
+209	81	0
+210	81	0
+211	81	0
+212	81	0
+213	81	0
+214	81	0
+215	81	0
+216	81	0
+217	81	0
+218	81	0
+219	81	0
+220	81	0
+221	81	0
+222	81	0
+223	81	0
+224	81	0
+225	81	0
+226	81	0
+227	81	0
+228	81	0
+229	81	0
+230	81	0
+231	81	0
+232	81	0
+233	81	0
+234	81	0
+235	81	0
+236	81	0
+237	81	0
+238	81	0
+239	81	0
+240	81	0
+241	81	0
+242	81	0
+243	81	0
+244	81	0
+245	81	0
+246	81	0
+247	81	0
+248	81	0
+249	81	0
+250	81	0
+251	81	0
+252	81	0
+253	81	0
+254	81	0
+255	81	0
+256	81	0
+257	81	0
+258	81	0
+259	81	0
+260	81	0
+261	81	0
+262	81	0
+263	81	0
+264	81	0
+265	81	0
+266	81	0
+267	81	0
+268	81	0
+269	81	0
+270	81	0
+271	81	0
+272	81	0
+273	81	0
+274	81	0
+275	81	0
+276	81	0
+277	81	0
+278	81	0
+279	81	0
+280	81	0
+281	81	0
+282	81	0
+283	81	0
+284	81	0
+285	81	0
+286	81	0
+287	81	0
+288	81	0
+289	81	0
+290	81	0
+291	81	0
+292	81	0
+293	81	0
+294	81	-1.7748
+295	81	-7.4756
+296	81	-10.487
+297	81	-8.1684
+298	81	-7.6201
+299	81	-10.504
+300	81	-10.701
+301	81	-10.432
+302	81	-10.177
+303	81	-9.9983
+304	81	-9.8193
+305	81	-9.5615
+306	81	-9.3722
+307	81	-9.1411
+308	81	-8.2916
+309	81	-8.6935
+310	81	-8.3811
+311	81	-8.1178
+312	81	-7.7621
+313	81	-7.3567
+314	81	-6.9514
+315	81	-6.5253
+316	81	-6.1809
+317	81	-5.9294
+318	81	-5.2548
+319	81	-5.4069
+320	81	-6.0637
+321	81	-6.2514
+322	81	-6.4629
+323	81	-5.8018
+324	81	-5.9731
+325	81	-6.3118
+326	81	-6.5453
+327	81	-6.5067
+328	81	-6.2616
+329	81	-6.0324
+330	81	-6.2247
+331	81	-6.2664
+332	81	-6.2478
+333	81	-6.0318
+334	81	-6.288
+335	81	-6.5014
+336	81	-6.9272
+337	81	-7.1703
+338	81	-7.2469
+339	81	-6.4257
+340	81	-5.3461
+341	81	-5.9748
+342	81	-4.6021
+343	81	-4.7408
+344	81	-2.4659
+345	81	-1.6084
+346	81	-2.7391
+347	81	-1.6969
+348	81	-0.61965
+349	81	0
+350	81	0
+351	81	0
+352	81	0
+353	81	0
+354	81	0
+355	81	0
+356	81	0
+357	81	0
+358	81	0
+359	81	0
+360	81	0
+0	81.5	0
+1	81.5	0
+2	81.5	0
+3	81.5	0
+4	81.5	0
+5	81.5	0
+6	81.5	0
+7	81.5	0
+8	81.5	0
+9	81.5	0
+10	81.5	0
+11	81.5	0
+12	81.5	0
+13	81.5	0
+14	81.5	0
+15	81.5	0
+16	81.5	0
+17	81.5	0
+18	81.5	0
+19	81.5	0
+20	81.5	0
+21	81.5	0
+22	81.5	0
+23	81.5	0
+24	81.5	0
+25	81.5	0
+26	81.5	0
+27	81.5	0
+28	81.5	0
+29	81.5	0
+30	81.5	0
+31	81.5	0
+32	81.5	0
+33	81.5	0
+34	81.5	0
+35	81.5	0
+36	81.5	0
+37	81.5	0
+38	81.5	0
+39	81.5	0
+40	81.5	0
+41	81.5	0
+42	81.5	0
+43	81.5	0
+44	81.5	0
+45	81.5	0
+46	81.5	0
+47	81.5	0
+48	81.5	0
+49	81.5	0
+50	81.5	0
+51	81.5	0
+52	81.5	0
+53	81.5	0
+54	81.5	0
+55	81.5	0
+56	81.5	0
+57	81.5	0
+58	81.5	0
+59	81.5	0
+60	81.5	0
+61	81.5	0
+62	81.5	0
+63	81.5	0
+64	81.5	0
+65	81.5	0
+66	81.5	0
+67	81.5	0
+68	81.5	0
+69	81.5	0
+70	81.5	0
+71	81.5	0
+72	81.5	0
+73	81.5	0
+74	81.5	0
+75	81.5	0
+76	81.5	0
+77	81.5	0
+78	81.5	0
+79	81.5	0
+80	81.5	0
+81	81.5	0
+82	81.5	0
+83	81.5	0
+84	81.5	0
+85	81.5	0
+86	81.5	0
+87	81.5	0
+88	81.5	0
+89	81.5	0
+90	81.5	0
+91	81.5	0
+92	81.5	0
+93	81.5	0
+94	81.5	0
+95	81.5	0
+96	81.5	0
+97	81.5	0
+98	81.5	0
+99	81.5	0
+100	81.5	0
+101	81.5	0
+102	81.5	0
+103	81.5	0
+104	81.5	0
+105	81.5	0
+106	81.5	0
+107	81.5	0
+108	81.5	0
+109	81.5	0
+110	81.5	0
+111	81.5	0
+112	81.5	0
+113	81.5	0
+114	81.5	0
+115	81.5	0
+116	81.5	0
+117	81.5	0
+118	81.5	0
+119	81.5	0
+120	81.5	0
+121	81.5	0
+122	81.5	0
+123	81.5	0
+124	81.5	0
+125	81.5	0
+126	81.5	0
+127	81.5	0
+128	81.5	0
+129	81.5	0
+130	81.5	0
+131	81.5	0
+132	81.5	0
+133	81.5	0
+134	81.5	0
+135	81.5	0
+136	81.5	0
+137	81.5	0
+138	81.5	0
+139	81.5	0
+140	81.5	0
+141	81.5	0
+142	81.5	0
+143	81.5	0
+144	81.5	0
+145	81.5	0
+146	81.5	0
+147	81.5	0
+148	81.5	0
+149	81.5	0
+150	81.5	0
+151	81.5	0
+152	81.5	0
+153	81.5	0
+154	81.5	0
+155	81.5	0
+156	81.5	0
+157	81.5	0
+158	81.5	0
+159	81.5	0
+160	81.5	0
+161	81.5	0
+162	81.5	0
+163	81.5	0
+164	81.5	0
+165	81.5	0
+166	81.5	0
+167	81.5	0
+168	81.5	0
+169	81.5	0
+170	81.5	0
+171	81.5	0
+172	81.5	0
+173	81.5	0
+174	81.5	0
+175	81.5	0
+176	81.5	0
+177	81.5	0
+178	81.5	0
+179	81.5	0
+180	81.5	0
+181	81.5	0
+182	81.5	0
+183	81.5	0
+184	81.5	0
+185	81.5	0
+186	81.5	0
+187	81.5	0
+188	81.5	0
+189	81.5	0
+190	81.5	0
+191	81.5	0
+192	81.5	0
+193	81.5	0
+194	81.5	0
+195	81.5	0
+196	81.5	0
+197	81.5	0
+198	81.5	0
+199	81.5	0
+200	81.5	0
+201	81.5	0
+202	81.5	0
+203	81.5	0
+204	81.5	0
+205	81.5	0
+206	81.5	0
+207	81.5	0
+208	81.5	0
+209	81.5	0
+210	81.5	0
+211	81.5	0
+212	81.5	0
+213	81.5	0
+214	81.5	0
+215	81.5	0
+216	81.5	0
+217	81.5	0
+218	81.5	0
+219	81.5	0
+220	81.5	0
+221	81.5	0
+222	81.5	0
+223	81.5	0
+224	81.5	0
+225	81.5	0
+226	81.5	0
+227	81.5	0
+228	81.5	0
+229	81.5	0
+230	81.5	0
+231	81.5	0
+232	81.5	0
+233	81.5	0
+234	81.5	0
+235	81.5	0
+236	81.5	0
+237	81.5	0
+238	81.5	0
+239	81.5	0
+240	81.5	0
+241	81.5	0
+242	81.5	0
+243	81.5	0
+244	81.5	0
+245	81.5	0
+246	81.5	0
+247	81.5	0
+248	81.5	0
+249	81.5	0
+250	81.5	0
+251	81.5	0
+252	81.5	0
+253	81.5	0
+254	81.5	0
+255	81.5	0
+256	81.5	0
+257	81.5	0
+258	81.5	0
+259	81.5	0
+260	81.5	0
+261	81.5	0
+262	81.5	0
+263	81.5	0
+264	81.5	0
+265	81.5	0
+266	81.5	0
+267	81.5	0
+268	81.5	0
+269	81.5	0
+270	81.5	0
+271	81.5	0
+272	81.5	0
+273	81.5	0
+274	81.5	0
+275	81.5	0
+276	81.5	0
+277	81.5	0
+278	81.5	0
+279	81.5	0
+280	81.5	0
+281	81.5	0
+282	81.5	0
+283	81.5	0
+284	81.5	0
+285	81.5	0
+286	81.5	0
+287	81.5	0
+288	81.5	0
+289	81.5	0
+290	81.5	0
+291	81.5	0
+292	81.5	0
+293	81.5	0
+294	81.5	0
+295	81.5	-3.5216
+296	81.5	-6.1441
+297	81.5	-3.5305
+298	81.5	-5.2006
+299	81.5	-6.9259
+300	81.5	-9.7668
+301	81.5	-9.4953
+302	81.5	-9.2874
+303	81.5	-9.108
+304	81.5	-8.8236
+305	81.5	-8.7616
+306	81.5	-8.6212
+307	81.5	-8.3906
+308	81.5	-6.1953
+309	81.5	-7.3278
+310	81.5	-8.249
+311	81.5	-6.374
+312	81.5	-7.5351
+313	81.5	-7.4176
+314	81.5	-7.008
+315	81.5	-6.378
+316	81.5	-5.5151
+317	81.5	-6.0925
+318	81.5	-5.3849
+319	81.5	-5.1708
+320	81.5	-5.9425
+321	81.5	-6.641
+322	81.5	-6.3935
+323	81.5	-5.5709
+324	81.5	-5.795
+325	81.5	-6.3097
+326	81.5	-6.0927
+327	81.5	-6.0885
+328	81.5	-6.1018
+329	81.5	-5.9631
+330	81.5	-5.966
+331	81.5	-6.0276
+332	81.5	-6.1788
+333	81.5	-5.9365
+334	81.5	-6.3438
+335	81.5	-6.6872
+336	81.5	-6.7978
+337	81.5	-6.7442
+338	81.5	-6.0162
+339	81.5	-3.8853
+340	81.5	-4.1229
+341	81.5	-4.6828
+342	81.5	-2.1534
+343	81.5	-3.6789
+344	81.5	-3.4134
+345	81.5	-2.2684
+346	81.5	-3.0975
+347	81.5	-2.4908
+348	81.5	-1.1164
+349	81.5	0
+350	81.5	0
+351	81.5	0
+352	81.5	0
+353	81.5	0
+354	81.5	0
+355	81.5	0
+356	81.5	0
+357	81.5	0
+358	81.5	0
+359	81.5	0
+360	81.5	0
+0	82	0
+1	82	0
+2	82	0
+3	82	0
+4	82	0
+5	82	0
+6	82	0
+7	82	0
+8	82	0
+9	82	0
+10	82	0
+11	82	0
+12	82	0
+13	82	0
+14	82	0
+15	82	0
+16	82	0
+17	82	0
+18	82	0
+19	82	0
+20	82	0
+21	82	0
+22	82	0
+23	82	0
+24	82	0
+25	82	0
+26	82	0
+27	82	0
+28	82	0
+29	82	0
+30	82	0
+31	82	0
+32	82	0
+33	82	0
+34	82	0
+35	82	0
+36	82	0
+37	82	0
+38	82	0
+39	82	0
+40	82	0
+41	82	0
+42	82	0
+43	82	0
+44	82	0
+45	82	0
+46	82	0
+47	82	0
+48	82	0
+49	82	0
+50	82	0
+51	82	0
+52	82	0
+53	82	0
+54	82	0
+55	82	0
+56	82	0
+57	82	0
+58	82	0
+59	82	0
+60	82	0
+61	82	0
+62	82	0
+63	82	0
+64	82	0
+65	82	0
+66	82	0
+67	82	0
+68	82	0
+69	82	0
+70	82	0
+71	82	0
+72	82	0
+73	82	0
+74	82	0
+75	82	0
+76	82	0
+77	82	0
+78	82	0
+79	82	0
+80	82	0
+81	82	0
+82	82	0
+83	82	0
+84	82	0
+85	82	0
+86	82	0
+87	82	0
+88	82	0
+89	82	0
+90	82	0
+91	82	0
+92	82	0
+93	82	0
+94	82	0
+95	82	0
+96	82	0
+97	82	0
+98	82	0
+99	82	0
+100	82	0
+101	82	0
+102	82	0
+103	82	0
+104	82	0
+105	82	0
+106	82	0
+107	82	0
+108	82	0
+109	82	0
+110	82	0
+111	82	0
+112	82	0
+113	82	0
+114	82	0
+115	82	0
+116	82	0
+117	82	0
+118	82	0
+119	82	0
+120	82	0
+121	82	0
+122	82	0
+123	82	0
+124	82	0
+125	82	0
+126	82	0
+127	82	0
+128	82	0
+129	82	0
+130	82	0
+131	82	0
+132	82	0
+133	82	0
+134	82	0
+135	82	0
+136	82	0
+137	82	0
+138	82	0
+139	82	0
+140	82	0
+141	82	0
+142	82	0
+143	82	0
+144	82	0
+145	82	0
+146	82	0
+147	82	0
+148	82	0
+149	82	0
+150	82	0
+151	82	0
+152	82	0
+153	82	0
+154	82	0
+155	82	0
+156	82	0
+157	82	0
+158	82	0
+159	82	0
+160	82	0
+161	82	0
+162	82	0
+163	82	0
+164	82	0
+165	82	0
+166	82	0
+167	82	0
+168	82	0
+169	82	0
+170	82	0
+171	82	0
+172	82	0
+173	82	0
+174	82	0
+175	82	0
+176	82	0
+177	82	0
+178	82	0
+179	82	0
+180	82	0
+181	82	0
+182	82	0
+183	82	0
+184	82	0
+185	82	0
+186	82	0
+187	82	0
+188	82	0
+189	82	0
+190	82	0
+191	82	0
+192	82	0
+193	82	0
+194	82	0
+195	82	0
+196	82	0
+197	82	0
+198	82	0
+199	82	0
+200	82	0
+201	82	0
+202	82	0
+203	82	0
+204	82	0
+205	82	0
+206	82	0
+207	82	0
+208	82	0
+209	82	0
+210	82	0
+211	82	0
+212	82	0
+213	82	0
+214	82	0
+215	82	0
+216	82	0
+217	82	0
+218	82	0
+219	82	0
+220	82	0
+221	82	0
+222	82	0
+223	82	0
+224	82	0
+225	82	0
+226	82	0
+227	82	0
+228	82	0
+229	82	0
+230	82	0
+231	82	0
+232	82	0
+233	82	0
+234	82	0
+235	82	0
+236	82	0
+237	82	0
+238	82	0
+239	82	0
+240	82	0
+241	82	0
+242	82	0
+243	82	0
+244	82	0
+245	82	0
+246	82	0
+247	82	0
+248	82	0
+249	82	0
+250	82	0
+251	82	0
+252	82	0
+253	82	0
+254	82	0
+255	82	0
+256	82	0
+257	82	0
+258	82	0
+259	82	0
+260	82	0
+261	82	0
+262	82	0
+263	82	0
+264	82	0
+265	82	0
+266	82	0
+267	82	0
+268	82	0
+269	82	0
+270	82	0
+271	82	0
+272	82	0
+273	82	0
+274	82	0
+275	82	0
+276	82	0
+277	82	0
+278	82	0
+279	82	0
+280	82	0
+281	82	0
+282	82	0
+283	82	0
+284	82	0
+285	82	0
+286	82	0
+287	82	0
+288	82	0
+289	82	0
+290	82	0
+291	82	0
+292	82	0
+293	82	0
+294	82	0
+295	82	0
+296	82	-3.0496
+297	82	-0.13123
+298	82	-1.8566
+299	82	-3.5819
+300	82	-7.0422
+301	82	-8.6078
+302	82	-8.3881
+303	82	-7.7144
+304	82	-6.3125
+305	82	-7.2025
+306	82	-7.7266
+307	82	-6.2502
+308	82	-4.099
+309	82	-5.2315
+310	82	-6.6141
+311	82	-3.7783
+312	82	-6.7397
+313	82	-7.0858
+314	82	-6.9993
+315	82	-5.5281
+316	82	-3.9062
+317	82	-5.8503
+318	82	-5.515
+319	82	-4.9348
+320	82	-5.7065
+321	82	-6.4499
+322	82	-6.1627
+323	82	-5.3401
+324	82	-5.6169
+325	82	-5.9035
+326	82	-5.6402
+327	82	-5.6614
+328	82	-5.7059
+329	82	-5.7321
+330	82	-5.7073
+331	82	-5.7887
+332	82	-6.0573
+333	82	-5.8411
+334	82	-6.2484
+335	82	-6.578
+336	82	-6.349
+337	82	-6.2851
+338	82	-4.6007
+339	82	-1.3449
+340	82	-2.9838
+341	82	-1.3143
+342	82	-0.83922
+343	82	-2.4916
+344	82	-2.9329
+345	82	-2.9284
+346	82	-1.6752
+347	82	-2.0192
+348	82	-1.3746
+349	82	0
+350	82	0
+351	82	0
+352	82	0
+353	82	0
+354	82	0
+355	82	0
+356	82	0
+357	82	0
+358	82	0
+359	82	0
+360	82	0
+0	82.5	0
+1	82.5	0
+2	82.5	0
+3	82.5	0
+4	82.5	0
+5	82.5	0
+6	82.5	0
+7	82.5	0
+8	82.5	0
+9	82.5	0
+10	82.5	0
+11	82.5	0
+12	82.5	0
+13	82.5	0
+14	82.5	0
+15	82.5	0
+16	82.5	0
+17	82.5	0
+18	82.5	0
+19	82.5	0
+20	82.5	0
+21	82.5	0
+22	82.5	0
+23	82.5	0
+24	82.5	0
+25	82.5	0
+26	82.5	0
+27	82.5	0
+28	82.5	0
+29	82.5	0
+30	82.5	0
+31	82.5	0
+32	82.5	0
+33	82.5	0
+34	82.5	0
+35	82.5	0
+36	82.5	0
+37	82.5	0
+38	82.5	0
+39	82.5	0
+40	82.5	0
+41	82.5	0
+42	82.5	0
+43	82.5	0
+44	82.5	0
+45	82.5	0
+46	82.5	0
+47	82.5	0
+48	82.5	0
+49	82.5	0
+50	82.5	0
+51	82.5	0
+52	82.5	0
+53	82.5	0
+54	82.5	0
+55	82.5	0
+56	82.5	0
+57	82.5	0
+58	82.5	0
+59	82.5	0
+60	82.5	0
+61	82.5	0
+62	82.5	0
+63	82.5	0
+64	82.5	0
+65	82.5	0
+66	82.5	0
+67	82.5	0
+68	82.5	0
+69	82.5	0
+70	82.5	0
+71	82.5	0
+72	82.5	0
+73	82.5	0
+74	82.5	0
+75	82.5	0
+76	82.5	0
+77	82.5	0
+78	82.5	0
+79	82.5	0
+80	82.5	0
+81	82.5	0
+82	82.5	0
+83	82.5	0
+84	82.5	0
+85	82.5	0
+86	82.5	0
+87	82.5	0
+88	82.5	0
+89	82.5	0
+90	82.5	0
+91	82.5	0
+92	82.5	0
+93	82.5	0
+94	82.5	0
+95	82.5	0
+96	82.5	0
+97	82.5	0
+98	82.5	0
+99	82.5	0
+100	82.5	0
+101	82.5	0
+102	82.5	0
+103	82.5	0
+104	82.5	0
+105	82.5	0
+106	82.5	0
+107	82.5	0
+108	82.5	0
+109	82.5	0
+110	82.5	0
+111	82.5	0
+112	82.5	0
+113	82.5	0
+114	82.5	0
+115	82.5	0
+116	82.5	0
+117	82.5	0
+118	82.5	0
+119	82.5	0
+120	82.5	0
+121	82.5	0
+122	82.5	0
+123	82.5	0
+124	82.5	0
+125	82.5	0
+126	82.5	0
+127	82.5	0
+128	82.5	0
+129	82.5	0
+130	82.5	0
+131	82.5	0
+132	82.5	0
+133	82.5	0
+134	82.5	0
+135	82.5	0
+136	82.5	0
+137	82.5	0
+138	82.5	0
+139	82.5	0
+140	82.5	0
+141	82.5	0
+142	82.5	0
+143	82.5	0
+144	82.5	0
+145	82.5	0
+146	82.5	0
+147	82.5	0
+148	82.5	0
+149	82.5	0
+150	82.5	0
+151	82.5	0
+152	82.5	0
+153	82.5	0
+154	82.5	0
+155	82.5	0
+156	82.5	0
+157	82.5	0
+158	82.5	0
+159	82.5	0
+160	82.5	0
+161	82.5	0
+162	82.5	0
+163	82.5	0
+164	82.5	0
+165	82.5	0
+166	82.5	0
+167	82.5	0
+168	82.5	0
+169	82.5	0
+170	82.5	0
+171	82.5	0
+172	82.5	0
+173	82.5	0
+174	82.5	0
+175	82.5	0
+176	82.5	0
+177	82.5	0
+178	82.5	0
+179	82.5	0
+180	82.5	0
+181	82.5	0
+182	82.5	0
+183	82.5	0
+184	82.5	0
+185	82.5	0
+186	82.5	0
+187	82.5	0
+188	82.5	0
+189	82.5	0
+190	82.5	0
+191	82.5	0
+192	82.5	0
+193	82.5	0
+194	82.5	0
+195	82.5	0
+196	82.5	0
+197	82.5	0
+198	82.5	0
+199	82.5	0
+200	82.5	0
+201	82.5	0
+202	82.5	0
+203	82.5	0
+204	82.5	0
+205	82.5	0
+206	82.5	0
+207	82.5	0
+208	82.5	0
+209	82.5	0
+210	82.5	0
+211	82.5	0
+212	82.5	0
+213	82.5	0
+214	82.5	0
+215	82.5	0
+216	82.5	0
+217	82.5	0
+218	82.5	0
+219	82.5	0
+220	82.5	0
+221	82.5	0
+222	82.5	0
+223	82.5	0
+224	82.5	0
+225	82.5	0
+226	82.5	0
+227	82.5	0
+228	82.5	0
+229	82.5	0
+230	82.5	0
+231	82.5	0
+232	82.5	0
+233	82.5	0
+234	82.5	0
+235	82.5	0
+236	82.5	0
+237	82.5	0
+238	82.5	0
+239	82.5	0
+240	82.5	0
+241	82.5	0
+242	82.5	0
+243	82.5	0
+244	82.5	0
+245	82.5	0
+246	82.5	0
+247	82.5	0
+248	82.5	0
+249	82.5	0
+250	82.5	0
+251	82.5	0
+252	82.5	0
+253	82.5	0
+254	82.5	0
+255	82.5	0
+256	82.5	0
+257	82.5	0
+258	82.5	0
+259	82.5	0
+260	82.5	0
+261	82.5	0
+262	82.5	0
+263	82.5	0
+264	82.5	0
+265	82.5	0
+266	82.5	0
+267	82.5	0
+268	82.5	0
+269	82.5	0
+270	82.5	0
+271	82.5	0
+272	82.5	0
+273	82.5	0
+274	82.5	0
+275	82.5	0
+276	82.5	0
+277	82.5	0
+278	82.5	0
+279	82.5	0
+280	82.5	0
+281	82.5	0
+282	82.5	0
+283	82.5	0
+284	82.5	0
+285	82.5	0
+286	82.5	0
+287	82.5	0
+288	82.5	0
+289	82.5	0
+290	82.5	0
+291	82.5	0
+292	82.5	0
+293	82.5	0
+294	82.5	0
+295	82.5	0
+296	82.5	0
+297	82.5	0
+298	82.5	0
+299	82.5	-0.23781
+300	82.5	-3.8447
+301	82.5	-5.2763
+302	82.5	-6.6005
+303	82.5	-5.2033
+304	82.5	-3.8014
+305	82.5	-5.1859
+306	82.5	-4.4733
+307	82.5	-2.4485
+308	82.5	-2.0129
+309	82.5	-3.5574
+310	82.5	-4.4904
+311	82.5	-1.4583
+312	82.5	-4.855
+313	82.5	-6.434
+314	82.5	-6.5157
+315	82.5	-4.6782
+316	82.5	-2.8407
+317	82.5	-5.6082
+318	82.5	-5.5873
+319	82.5	-4.6988
+320	82.5	-5.4705
+321	82.5	-5.8828
+322	82.5	-5.8737
+323	82.5	-5.1092
+324	82.5	-5.4388
+325	82.5	-5.4575
+326	82.5	-5.1899
+327	82.5	-5.2344
+328	82.5	-5.2789
+329	82.5	-5.3058
+330	82.5	-5.4487
+331	82.5	-5.5499
+332	82.5	-5.9636
+333	82.5	-5.7458
+334	82.5	-6.1019
+335	82.5	-5.7448
+336	82.5	-5.9001
+337	82.5	-5.6814
+338	82.5	-3.2095
+339	82.5	-0.0049497
+340	82.5	-0.28683
+341	82.5	0
+342	82.5	0
+343	82.5	-1.3043
+344	82.5	-1.7928
+345	82.5	-1.7183
+346	82.5	-0.68236
+347	82.5	-1.4448
+348	82.5	-1.0192
+349	82.5	-0.010447
+350	82.5	0
+351	82.5	0
+352	82.5	0
+353	82.5	0
+354	82.5	0
+355	82.5	0
+356	82.5	0
+357	82.5	0
+358	82.5	0
+359	82.5	0
+360	82.5	0
+0	83	0
+1	83	0
+2	83	0
+3	83	0
+4	83	0
+5	83	0
+6	83	0
+7	83	0
+8	83	0
+9	83	0
+10	83	0
+11	83	0
+12	83	0
+13	83	0
+14	83	0
+15	83	0
+16	83	0
+17	83	0
+18	83	0
+19	83	0
+20	83	0
+21	83	0
+22	83	0
+23	83	0
+24	83	0
+25	83	0
+26	83	0
+27	83	0
+28	83	0
+29	83	0
+30	83	0
+31	83	0
+32	83	0
+33	83	0
+34	83	0
+35	83	0
+36	83	0
+37	83	0
+38	83	0
+39	83	0
+40	83	0
+41	83	0
+42	83	0
+43	83	0
+44	83	0
+45	83	0
+46	83	0
+47	83	0
+48	83	0
+49	83	0
+50	83	0
+51	83	0
+52	83	0
+53	83	0
+54	83	0
+55	83	0
+56	83	0
+57	83	0
+58	83	0
+59	83	0
+60	83	0
+61	83	0
+62	83	0
+63	83	0
+64	83	0
+65	83	0
+66	83	0
+67	83	0
+68	83	0
+69	83	0
+70	83	0
+71	83	0
+72	83	0
+73	83	0
+74	83	0
+75	83	0
+76	83	0
+77	83	0
+78	83	0
+79	83	0
+80	83	0
+81	83	0
+82	83	0
+83	83	0
+84	83	0
+85	83	0
+86	83	0
+87	83	0
+88	83	0
+89	83	0
+90	83	0
+91	83	0
+92	83	0
+93	83	0
+94	83	0
+95	83	0
+96	83	0
+97	83	0
+98	83	0
+99	83	0
+100	83	0
+101	83	0
+102	83	0
+103	83	0
+104	83	0
+105	83	0
+106	83	0
+107	83	0
+108	83	0
+109	83	0
+110	83	0
+111	83	0
+112	83	0
+113	83	0
+114	83	0
+115	83	0
+116	83	0
+117	83	0
+118	83	0
+119	83	0
+120	83	0
+121	83	0
+122	83	0
+123	83	0
+124	83	0
+125	83	0
+126	83	0
+127	83	0
+128	83	0
+129	83	0
+130	83	0
+131	83	0
+132	83	0
+133	83	0
+134	83	0
+135	83	0
+136	83	0
+137	83	0
+138	83	0
+139	83	0
+140	83	0
+141	83	0
+142	83	0
+143	83	0
+144	83	0
+145	83	0
+146	83	0
+147	83	0
+148	83	0
+149	83	0
+150	83	0
+151	83	0
+152	83	0
+153	83	0
+154	83	0
+155	83	0
+156	83	0
+157	83	0
+158	83	0
+159	83	0
+160	83	0
+161	83	0
+162	83	0
+163	83	0
+164	83	0
+165	83	0
+166	83	0
+167	83	0
+168	83	0
+169	83	0
+170	83	0
+171	83	0
+172	83	0
+173	83	0
+174	83	0
+175	83	0
+176	83	0
+177	83	0
+178	83	0
+179	83	0
+180	83	0
+181	83	0
+182	83	0
+183	83	0
+184	83	0
+185	83	0
+186	83	0
+187	83	0
+188	83	0
+189	83	0
+190	83	0
+191	83	0
+192	83	0
+193	83	0
+194	83	0
+195	83	0
+196	83	0
+197	83	0
+198	83	0
+199	83	0
+200	83	0
+201	83	0
+202	83	0
+203	83	0
+204	83	0
+205	83	0
+206	83	0
+207	83	0
+208	83	0
+209	83	0
+210	83	0
+211	83	0
+212	83	0
+213	83	0
+214	83	0
+215	83	0
+216	83	0
+217	83	0
+218	83	0
+219	83	0
+220	83	0
+221	83	0
+222	83	0
+223	83	0
+224	83	0
+225	83	0
+226	83	0
+227	83	0
+228	83	0
+229	83	0
+230	83	0
+231	83	0
+232	83	0
+233	83	0
+234	83	0
+235	83	0
+236	83	0
+237	83	0
+238	83	0
+239	83	0
+240	83	0
+241	83	0
+242	83	0
+243	83	0
+244	83	0
+245	83	0
+246	83	0
+247	83	0
+248	83	0
+249	83	0
+250	83	0
+251	83	0
+252	83	0
+253	83	0
+254	83	0
+255	83	0
+256	83	0
+257	83	0
+258	83	0
+259	83	0
+260	83	0
+261	83	0
+262	83	0
+263	83	0
+264	83	0
+265	83	0
+266	83	0
+267	83	0
+268	83	0
+269	83	0
+270	83	0
+271	83	0
+272	83	0
+273	83	0
+274	83	0
+275	83	0
+276	83	0
+277	83	0
+278	83	0
+279	83	0
+280	83	0
+281	83	0
+282	83	0
+283	83	0
+284	83	0
+285	83	0
+286	83	0
+287	83	0
+288	83	0
+289	83	0
+290	83	0
+291	83	0
+292	83	0
+293	83	0
+294	83	0
+295	83	0
+296	83	0
+297	83	0
+298	83	0
+299	83	0
+300	83	-0.5494
+301	83	-2.8166
+302	83	-4.0764
+303	83	-2.6848
+304	83	-1.2904
+305	83	-2.8186
+306	83	-1.4769
+307	83	0
+308	83	-0.50066
+309	83	-2.0452
+310	83	-1.7017
+311	83	0
+312	83	-2.9703
+313	83	-5.7823
+314	83	-5.1816
+315	83	-3.8283
+316	83	-1.9908
+317	83	-5.3643
+318	83	-5.0192
+319	83	-4.4628
+320	83	-5.0704
+321	83	-4.4387
+322	83	-4.912
+323	83	-4.8784
+324	83	-5.0305
+325	83	-4.9561
+326	83	-4.7629
+327	83	-4.4697
+328	83	-3.8319
+329	83	-3.9224
+330	83	-5.19
+331	83	-5.4548
+332	83	-4.0167
+333	83	-5.5397
+334	83	-4.7269
+335	83	-3.914
+336	83	-4.4932
+337	83	-4.1851
+338	83	-1.8182
+339	83	0
+340	83	0
+341	83	0
+342	83	0
+343	83	-0.3474
+344	83	-1.355
+345	83	-0.61647
+346	83	-0.53593
+347	83	-0.6926
+348	83	-0.26695
+349	83	0
+350	83	0
+351	83	0
+352	83	0
+353	83	0
+354	83	0
+355	83	0
+356	83	0
+357	83	0
+358	83	0
+359	83	0
+360	83	0
+0	83.5	0
+1	83.5	0
+2	83.5	0
+3	83.5	0
+4	83.5	0
+5	83.5	0
+6	83.5	0
+7	83.5	0
+8	83.5	0
+9	83.5	0
+10	83.5	0
+11	83.5	0
+12	83.5	0
+13	83.5	0
+14	83.5	0
+15	83.5	0
+16	83.5	0
+17	83.5	0
+18	83.5	0
+19	83.5	0
+20	83.5	0
+21	83.5	0
+22	83.5	0
+23	83.5	0
+24	83.5	0
+25	83.5	0
+26	83.5	0
+27	83.5	0
+28	83.5	0
+29	83.5	0
+30	83.5	0
+31	83.5	0
+32	83.5	0
+33	83.5	0
+34	83.5	0
+35	83.5	0
+36	83.5	0
+37	83.5	0
+38	83.5	0
+39	83.5	0
+40	83.5	0
+41	83.5	0
+42	83.5	0
+43	83.5	0
+44	83.5	0
+45	83.5	0
+46	83.5	0
+47	83.5	0
+48	83.5	0
+49	83.5	0
+50	83.5	0
+51	83.5	0
+52	83.5	0
+53	83.5	0
+54	83.5	0
+55	83.5	0
+56	83.5	0
+57	83.5	0
+58	83.5	0
+59	83.5	0
+60	83.5	0
+61	83.5	0
+62	83.5	0
+63	83.5	0
+64	83.5	0
+65	83.5	0
+66	83.5	0
+67	83.5	0
+68	83.5	0
+69	83.5	0
+70	83.5	0
+71	83.5	0
+72	83.5	0
+73	83.5	0
+74	83.5	0
+75	83.5	0
+76	83.5	0
+77	83.5	0
+78	83.5	0
+79	83.5	0
+80	83.5	0
+81	83.5	0
+82	83.5	0
+83	83.5	0
+84	83.5	0
+85	83.5	0
+86	83.5	0
+87	83.5	0
+88	83.5	0
+89	83.5	0
+90	83.5	0
+91	83.5	0
+92	83.5	0
+93	83.5	0
+94	83.5	0
+95	83.5	0
+96	83.5	0
+97	83.5	0
+98	83.5	0
+99	83.5	0
+100	83.5	0
+101	83.5	0
+102	83.5	0
+103	83.5	0
+104	83.5	0
+105	83.5	0
+106	83.5	0
+107	83.5	0
+108	83.5	0
+109	83.5	0
+110	83.5	0
+111	83.5	0
+112	83.5	0
+113	83.5	0
+114	83.5	0
+115	83.5	0
+116	83.5	0
+117	83.5	0
+118	83.5	0
+119	83.5	0
+120	83.5	0
+121	83.5	0
+122	83.5	0
+123	83.5	0
+124	83.5	0
+125	83.5	0
+126	83.5	0
+127	83.5	0
+128	83.5	0
+129	83.5	0
+130	83.5	0
+131	83.5	0
+132	83.5	0
+133	83.5	0
+134	83.5	0
+135	83.5	0
+136	83.5	0
+137	83.5	0
+138	83.5	0
+139	83.5	0
+140	83.5	0
+141	83.5	0
+142	83.5	0
+143	83.5	0
+144	83.5	0
+145	83.5	0
+146	83.5	0
+147	83.5	0
+148	83.5	0
+149	83.5	0
+150	83.5	0
+151	83.5	0
+152	83.5	0
+153	83.5	0
+154	83.5	0
+155	83.5	0
+156	83.5	0
+157	83.5	0
+158	83.5	0
+159	83.5	0
+160	83.5	0
+161	83.5	0
+162	83.5	0
+163	83.5	0
+164	83.5	0
+165	83.5	0
+166	83.5	0
+167	83.5	0
+168	83.5	0
+169	83.5	0
+170	83.5	0
+171	83.5	0
+172	83.5	0
+173	83.5	0
+174	83.5	0
+175	83.5	0
+176	83.5	0
+177	83.5	0
+178	83.5	0
+179	83.5	0
+180	83.5	0
+181	83.5	0
+182	83.5	0
+183	83.5	0
+184	83.5	0
+185	83.5	0
+186	83.5	0
+187	83.5	0
+188	83.5	0
+189	83.5	0
+190	83.5	0
+191	83.5	0
+192	83.5	0
+193	83.5	0
+194	83.5	0
+195	83.5	0
+196	83.5	0
+197	83.5	0
+198	83.5	0
+199	83.5	0
+200	83.5	0
+201	83.5	0
+202	83.5	0
+203	83.5	0
+204	83.5	0
+205	83.5	0
+206	83.5	0
+207	83.5	0
+208	83.5	0
+209	83.5	0
+210	83.5	0
+211	83.5	0
+212	83.5	0
+213	83.5	0
+214	83.5	0
+215	83.5	0
+216	83.5	0
+217	83.5	0
+218	83.5	0
+219	83.5	0
+220	83.5	0
+221	83.5	0
+222	83.5	0
+223	83.5	0
+224	83.5	0
+225	83.5	0
+226	83.5	0
+227	83.5	0
+228	83.5	0
+229	83.5	0
+230	83.5	0
+231	83.5	0
+232	83.5	0
+233	83.5	0
+234	83.5	0
+235	83.5	0
+236	83.5	0
+237	83.5	0
+238	83.5	0
+239	83.5	0
+240	83.5	0
+241	83.5	0
+242	83.5	0
+243	83.5	0
+244	83.5	0
+245	83.5	0
+246	83.5	0
+247	83.5	0
+248	83.5	0
+249	83.5	0
+250	83.5	0
+251	83.5	0
+252	83.5	0
+253	83.5	0
+254	83.5	0
+255	83.5	0
+256	83.5	0
+257	83.5	0
+258	83.5	0
+259	83.5	0
+260	83.5	0
+261	83.5	0
+262	83.5	0
+263	83.5	0
+264	83.5	0
+265	83.5	0
+266	83.5	0
+267	83.5	0
+268	83.5	0
+269	83.5	0
+270	83.5	0
+271	83.5	0
+272	83.5	0
+273	83.5	0
+274	83.5	0
+275	83.5	0
+276	83.5	0
+277	83.5	0
+278	83.5	0
+279	83.5	0
+280	83.5	0
+281	83.5	0
+282	83.5	0
+283	83.5	0
+284	83.5	0
+285	83.5	0
+286	83.5	0
+287	83.5	0
+288	83.5	0
+289	83.5	0
+290	83.5	0
+291	83.5	0
+292	83.5	0
+293	83.5	0
+294	83.5	0
+295	83.5	0
+296	83.5	0
+297	83.5	0
+298	83.5	0
+299	83.5	0
+300	83.5	0
+301	83.5	-0.76061
+302	83.5	-1.5523
+303	83.5	-0.16072
+304	83.5	0
+305	83.5	-0.38946
+306	83.5	0
+307	83.5	0
+308	83.5	0
+309	83.5	-0.53292
+310	83.5	0
+311	83.5	0
+312	83.5	0
+313	83.5	-3.829
+314	83.5	-3.8086
+315	83.5	-2.5104
+316	83.5	-1.1409
+317	83.5	-2.888
+318	83.5	-3.0873
+319	83.5	-3.9742
+320	83.5	-3.5592
+321	83.5	-2.8635
+322	83.5	-3.1156
+323	83.5	-4.5395
+324	83.5	-4.5101
+325	83.5	-4.3981
+326	83.5	-3.8704
+327	83.5	-2.8791
+328	83.5	-2.2413
+329	83.5	-2.5389
+330	83.5	-4.4163
+331	83.5	-2.3044
+332	83.5	-2.5068
+333	83.5	-4.1429
+334	83.5	-2.981
+335	83.5	-2.0832
+336	83.5	-2.6654
+337	83.5	-3.2098
+338	83.5	-0.35918
+339	83.5	0
+340	83.5	0
+341	83.5	0
+342	83.5	0
+343	83.5	0
+344	83.5	-0.91716
+345	83.5	0
+346	83.5	-0.36602
+347	83.5	0
+348	83.5	0
+349	83.5	0
+350	83.5	0
+351	83.5	0
+352	83.5	0
+353	83.5	0
+354	83.5	0
+355	83.5	0
+356	83.5	0
+357	83.5	0
+358	83.5	0
+359	83.5	0
+360	83.5	0
+0	84	0
+1	84	0
+2	84	0
+3	84	0
+4	84	0
+5	84	0
+6	84	0
+7	84	0
+8	84	0
+9	84	0
+10	84	0
+11	84	0
+12	84	0
+13	84	0
+14	84	0
+15	84	0
+16	84	0
+17	84	0
+18	84	0
+19	84	0
+20	84	0
+21	84	0
+22	84	0
+23	84	0
+24	84	0
+25	84	0
+26	84	0
+27	84	0
+28	84	0
+29	84	0
+30	84	0
+31	84	0
+32	84	0
+33	84	0
+34	84	0
+35	84	0
+36	84	0
+37	84	0
+38	84	0
+39	84	0
+40	84	0
+41	84	0
+42	84	0
+43	84	0
+44	84	0
+45	84	0
+46	84	0
+47	84	0
+48	84	0
+49	84	0
+50	84	0
+51	84	0
+52	84	0
+53	84	0
+54	84	0
+55	84	0
+56	84	0
+57	84	0
+58	84	0
+59	84	0
+60	84	0
+61	84	0
+62	84	0
+63	84	0
+64	84	0
+65	84	0
+66	84	0
+67	84	0
+68	84	0
+69	84	0
+70	84	0
+71	84	0
+72	84	0
+73	84	0
+74	84	0
+75	84	0
+76	84	0
+77	84	0
+78	84	0
+79	84	0
+80	84	0
+81	84	0
+82	84	0
+83	84	0
+84	84	0
+85	84	0
+86	84	0
+87	84	0
+88	84	0
+89	84	0
+90	84	0
+91	84	0
+92	84	0
+93	84	0
+94	84	0
+95	84	0
+96	84	0
+97	84	0
+98	84	0
+99	84	0
+100	84	0
+101	84	0
+102	84	0
+103	84	0
+104	84	0
+105	84	0
+106	84	0
+107	84	0
+108	84	0
+109	84	0
+110	84	0
+111	84	0
+112	84	0
+113	84	0
+114	84	0
+115	84	0
+116	84	0
+117	84	0
+118	84	0
+119	84	0
+120	84	0
+121	84	0
+122	84	0
+123	84	0
+124	84	0
+125	84	0
+126	84	0
+127	84	0
+128	84	0
+129	84	0
+130	84	0
+131	84	0
+132	84	0
+133	84	0
+134	84	0
+135	84	0
+136	84	0
+137	84	0
+138	84	0
+139	84	0
+140	84	0
+141	84	0
+142	84	0
+143	84	0
+144	84	0
+145	84	0
+146	84	0
+147	84	0
+148	84	0
+149	84	0
+150	84	0
+151	84	0
+152	84	0
+153	84	0
+154	84	0
+155	84	0
+156	84	0
+157	84	0
+158	84	0
+159	84	0
+160	84	0
+161	84	0
+162	84	0
+163	84	0
+164	84	0
+165	84	0
+166	84	0
+167	84	0
+168	84	0
+169	84	0
+170	84	0
+171	84	0
+172	84	0
+173	84	0
+174	84	0
+175	84	0
+176	84	0
+177	84	0
+178	84	0
+179	84	0
+180	84	0
+181	84	0
+182	84	0
+183	84	0
+184	84	0
+185	84	0
+186	84	0
+187	84	0
+188	84	0
+189	84	0
+190	84	0
+191	84	0
+192	84	0
+193	84	0
+194	84	0
+195	84	0
+196	84	0
+197	84	0
+198	84	0
+199	84	0
+200	84	0
+201	84	0
+202	84	0
+203	84	0
+204	84	0
+205	84	0
+206	84	0
+207	84	0
+208	84	0
+209	84	0
+210	84	0
+211	84	0
+212	84	0
+213	84	0
+214	84	0
+215	84	0
+216	84	0
+217	84	0
+218	84	0
+219	84	0
+220	84	0
+221	84	0
+222	84	0
+223	84	0
+224	84	0
+225	84	0
+226	84	0
+227	84	0
+228	84	0
+229	84	0
+230	84	0
+231	84	0
+232	84	0
+233	84	0
+234	84	0
+235	84	0
+236	84	0
+237	84	0
+238	84	0
+239	84	0
+240	84	0
+241	84	0
+242	84	0
+243	84	0
+244	84	0
+245	84	0
+246	84	0
+247	84	0
+248	84	0
+249	84	0
+250	84	0
+251	84	0
+252	84	0
+253	84	0
+254	84	0
+255	84	0
+256	84	0
+257	84	0
+258	84	0
+259	84	0
+260	84	0
+261	84	0
+262	84	0
+263	84	0
+264	84	0
+265	84	0
+266	84	0
+267	84	0
+268	84	0
+269	84	0
+270	84	0
+271	84	0
+272	84	0
+273	84	0
+274	84	0
+275	84	0
+276	84	0
+277	84	0
+278	84	0
+279	84	0
+280	84	0
+281	84	0
+282	84	0
+283	84	0
+284	84	0
+285	84	0
+286	84	0
+287	84	0
+288	84	0
+289	84	0
+290	84	0
+291	84	0
+292	84	0
+293	84	0
+294	84	0
+295	84	0
+296	84	0
+297	84	0
+298	84	0
+299	84	0
+300	84	0
+301	84	0
+302	84	0
+303	84	0
+304	84	0
+305	84	0
+306	84	0
+307	84	0
+308	84	0
+309	84	0
+310	84	0
+311	84	0
+312	84	0
+313	84	-0.69306
+314	84	-2.4356
+315	84	-1.1374
+316	84	0
+317	84	-0.05824
+318	84	-1.2001
+319	84	-2.25
+320	84	-2.2803
+321	84	-1.2882
+322	84	-1.3192
+323	84	-2.2654
+324	84	-3.1313
+325	84	-3.5796
+326	84	-2.8427
+327	84	-2.1057
+328	84	-0.86506
+329	84	-1.1691
+330	84	-3.0843
+331	84	-0.20197
+332	84	-0.89886
+333	84	-2.576
+334	84	-1.6235
+335	84	-0.46158
+336	84	-0.45775
+337	84	-1.7077
+338	84	0
+339	84	0
+340	84	0
+341	84	0
+342	84	0
+343	84	0
+344	84	-0.47934
+345	84	0
+346	84	0
+347	84	0
+348	84	0
+349	84	0
+350	84	0
+351	84	0
+352	84	0
+353	84	0
+354	84	0
+355	84	0
+356	84	0
+357	84	0
+358	84	0
+359	84	0
+360	84	0
+0	84.5	0
+1	84.5	0
+2	84.5	0
+3	84.5	0
+4	84.5	0
+5	84.5	0
+6	84.5	0
+7	84.5	0
+8	84.5	0
+9	84.5	0
+10	84.5	0
+11	84.5	0
+12	84.5	0
+13	84.5	0
+14	84.5	0
+15	84.5	0
+16	84.5	0
+17	84.5	0
+18	84.5	0
+19	84.5	0
+20	84.5	0
+21	84.5	0
+22	84.5	0
+23	84.5	0
+24	84.5	0
+25	84.5	0
+26	84.5	0
+27	84.5	0
+28	84.5	0
+29	84.5	0
+30	84.5	0
+31	84.5	0
+32	84.5	0
+33	84.5	0
+34	84.5	0
+35	84.5	0
+36	84.5	0
+37	84.5	0
+38	84.5	0
+39	84.5	0
+40	84.5	0
+41	84.5	0
+42	84.5	0
+43	84.5	0
+44	84.5	0
+45	84.5	0
+46	84.5	0
+47	84.5	0
+48	84.5	0
+49	84.5	0
+50	84.5	0
+51	84.5	0
+52	84.5	0
+53	84.5	0
+54	84.5	0
+55	84.5	0
+56	84.5	0
+57	84.5	0
+58	84.5	0
+59	84.5	0
+60	84.5	0
+61	84.5	0
+62	84.5	0
+63	84.5	0
+64	84.5	0
+65	84.5	0
+66	84.5	0
+67	84.5	0
+68	84.5	0
+69	84.5	0
+70	84.5	0
+71	84.5	0
+72	84.5	0
+73	84.5	0
+74	84.5	0
+75	84.5	0
+76	84.5	0
+77	84.5	0
+78	84.5	0
+79	84.5	0
+80	84.5	0
+81	84.5	0
+82	84.5	0
+83	84.5	0
+84	84.5	0
+85	84.5	0
+86	84.5	0
+87	84.5	0
+88	84.5	0
+89	84.5	0
+90	84.5	0
+91	84.5	0
+92	84.5	0
+93	84.5	0
+94	84.5	0
+95	84.5	0
+96	84.5	0
+97	84.5	0
+98	84.5	0
+99	84.5	0
+100	84.5	0
+101	84.5	0
+102	84.5	0
+103	84.5	0
+104	84.5	0
+105	84.5	0
+106	84.5	0
+107	84.5	0
+108	84.5	0
+109	84.5	0
+110	84.5	0
+111	84.5	0
+112	84.5	0
+113	84.5	0
+114	84.5	0
+115	84.5	0
+116	84.5	0
+117	84.5	0
+118	84.5	0
+119	84.5	0
+120	84.5	0
+121	84.5	0
+122	84.5	0
+123	84.5	0
+124	84.5	0
+125	84.5	0
+126	84.5	0
+127	84.5	0
+128	84.5	0
+129	84.5	0
+130	84.5	0
+131	84.5	0
+132	84.5	0
+133	84.5	0
+134	84.5	0
+135	84.5	0
+136	84.5	0
+137	84.5	0
+138	84.5	0
+139	84.5	0
+140	84.5	0
+141	84.5	0
+142	84.5	0
+143	84.5	0
+144	84.5	0
+145	84.5	0
+146	84.5	0
+147	84.5	0
+148	84.5	0
+149	84.5	0
+150	84.5	0
+151	84.5	0
+152	84.5	0
+153	84.5	0
+154	84.5	0
+155	84.5	0
+156	84.5	0
+157	84.5	0
+158	84.5	0
+159	84.5	0
+160	84.5	0
+161	84.5	0
+162	84.5	0
+163	84.5	0
+164	84.5	0
+165	84.5	0
+166	84.5	0
+167	84.5	0
+168	84.5	0
+169	84.5	0
+170	84.5	0
+171	84.5	0
+172	84.5	0
+173	84.5	0
+174	84.5	0
+175	84.5	0
+176	84.5	0
+177	84.5	0
+178	84.5	0
+179	84.5	0
+180	84.5	0
+181	84.5	0
+182	84.5	0
+183	84.5	0
+184	84.5	0
+185	84.5	0
+186	84.5	0
+187	84.5	0
+188	84.5	0
+189	84.5	0
+190	84.5	0
+191	84.5	0
+192	84.5	0
+193	84.5	0
+194	84.5	0
+195	84.5	0
+196	84.5	0
+197	84.5	0
+198	84.5	0
+199	84.5	0
+200	84.5	0
+201	84.5	0
+202	84.5	0
+203	84.5	0
+204	84.5	0
+205	84.5	0
+206	84.5	0
+207	84.5	0
+208	84.5	0
+209	84.5	0
+210	84.5	0
+211	84.5	0
+212	84.5	0
+213	84.5	0
+214	84.5	0
+215	84.5	0
+216	84.5	0
+217	84.5	0
+218	84.5	0
+219	84.5	0
+220	84.5	0
+221	84.5	0
+222	84.5	0
+223	84.5	0
+224	84.5	0
+225	84.5	0
+226	84.5	0
+227	84.5	0
+228	84.5	0
+229	84.5	0
+230	84.5	0
+231	84.5	0
+232	84.5	0
+233	84.5	0
+234	84.5	0
+235	84.5	0
+236	84.5	0
+237	84.5	0
+238	84.5	0
+239	84.5	0
+240	84.5	0
+241	84.5	0
+242	84.5	0
+243	84.5	0
+244	84.5	0
+245	84.5	0
+246	84.5	0
+247	84.5	0
+248	84.5	0
+249	84.5	0
+250	84.5	0
+251	84.5	0
+252	84.5	0
+253	84.5	0
+254	84.5	0
+255	84.5	0
+256	84.5	0
+257	84.5	0
+258	84.5	0
+259	84.5	0
+260	84.5	0
+261	84.5	0
+262	84.5	0
+263	84.5	0
+264	84.5	0
+265	84.5	0
+266	84.5	0
+267	84.5	0
+268	84.5	0
+269	84.5	0
+270	84.5	0
+271	84.5	0
+272	84.5	0
+273	84.5	0
+274	84.5	0
+275	84.5	0
+276	84.5	0
+277	84.5	0
+278	84.5	0
+279	84.5	0
+280	84.5	0
+281	84.5	0
+282	84.5	0
+283	84.5	0
+284	84.5	0
+285	84.5	0
+286	84.5	0
+287	84.5	0
+288	84.5	0
+289	84.5	0
+290	84.5	0
+291	84.5	0
+292	84.5	0
+293	84.5	0
+294	84.5	0
+295	84.5	0
+296	84.5	0
+297	84.5	0
+298	84.5	0
+299	84.5	0
+300	84.5	0
+301	84.5	0
+302	84.5	0
+303	84.5	0
+304	84.5	0
+305	84.5	0
+306	84.5	0
+307	84.5	0
+308	84.5	0
+309	84.5	0
+310	84.5	0
+311	84.5	0
+312	84.5	0
+313	84.5	0
+314	84.5	-1.0626
+315	84.5	0
+316	84.5	0
+317	84.5	0
+318	84.5	0
+319	84.5	-0.52588
+320	84.5	-1.2032
+321	84.5	-0.18723
+322	84.5	0
+323	84.5	0
+324	84.5	-0.78186
+325	84.5	-0.66965
+326	84.5	-0.55744
+327	84.5	-0.44522
+328	84.5	-0.33301
+329	84.5	0
+330	84.5	-1.7523
+331	84.5	0
+332	84.5	0
+333	84.5	-0.96809
+334	84.5	-0.26605
+335	84.5	0
+336	84.5	0
+337	84.5	0
+338	84.5	0
+339	84.5	0
+340	84.5	0
+341	84.5	0
+342	84.5	0
+343	84.5	0
+344	84.5	-0.041514
+345	84.5	0
+346	84.5	0
+347	84.5	0
+348	84.5	0
+349	84.5	0
+350	84.5	0
+351	84.5	0
+352	84.5	0
+353	84.5	0
+354	84.5	0
+355	84.5	0
+356	84.5	0
+357	84.5	0
+358	84.5	0
+359	84.5	0
+360	84.5	0
+0	85	0
+1	85	0
+2	85	0
+3	85	0
+4	85	0
+5	85	0
+6	85	0
+7	85	0
+8	85	0
+9	85	0
+10	85	0
+11	85	0
+12	85	0
+13	85	0
+14	85	0
+15	85	0
+16	85	0
+17	85	0
+18	85	0
+19	85	0
+20	85	0
+21	85	0
+22	85	0
+23	85	0
+24	85	0
+25	85	0
+26	85	0
+27	85	0
+28	85	0
+29	85	0
+30	85	0
+31	85	0
+32	85	0
+33	85	0
+34	85	0
+35	85	0
+36	85	0
+37	85	0
+38	85	0
+39	85	0
+40	85	0
+41	85	0
+42	85	0
+43	85	0
+44	85	0
+45	85	0
+46	85	0
+47	85	0
+48	85	0
+49	85	0
+50	85	0
+51	85	0
+52	85	0
+53	85	0
+54	85	0
+55	85	0
+56	85	0
+57	85	0
+58	85	0
+59	85	0
+60	85	0
+61	85	0
+62	85	0
+63	85	0
+64	85	0
+65	85	0
+66	85	0
+67	85	0
+68	85	0
+69	85	0
+70	85	0
+71	85	0
+72	85	0
+73	85	0
+74	85	0
+75	85	0
+76	85	0
+77	85	0
+78	85	0
+79	85	0
+80	85	0
+81	85	0
+82	85	0
+83	85	0
+84	85	0
+85	85	0
+86	85	0
+87	85	0
+88	85	0
+89	85	0
+90	85	0
+91	85	0
+92	85	0
+93	85	0
+94	85	0
+95	85	0
+96	85	0
+97	85	0
+98	85	0
+99	85	0
+100	85	0
+101	85	0
+102	85	0
+103	85	0
+104	85	0
+105	85	0
+106	85	0
+107	85	0
+108	85	0
+109	85	0
+110	85	0
+111	85	0
+112	85	0
+113	85	0
+114	85	0
+115	85	0
+116	85	0
+117	85	0
+118	85	0
+119	85	0
+120	85	0
+121	85	0
+122	85	0
+123	85	0
+124	85	0
+125	85	0
+126	85	0
+127	85	0
+128	85	0
+129	85	0
+130	85	0
+131	85	0
+132	85	0
+133	85	0
+134	85	0
+135	85	0
+136	85	0
+137	85	0
+138	85	0
+139	85	0
+140	85	0
+141	85	0
+142	85	0
+143	85	0
+144	85	0
+145	85	0
+146	85	0
+147	85	0
+148	85	0
+149	85	0
+150	85	0
+151	85	0
+152	85	0
+153	85	0
+154	85	0
+155	85	0
+156	85	0
+157	85	0
+158	85	0
+159	85	0
+160	85	0
+161	85	0
+162	85	0
+163	85	0
+164	85	0
+165	85	0
+166	85	0
+167	85	0
+168	85	0
+169	85	0
+170	85	0
+171	85	0
+172	85	0
+173	85	0
+174	85	0
+175	85	0
+176	85	0
+177	85	0
+178	85	0
+179	85	0
+180	85	0
+181	85	0
+182	85	0
+183	85	0
+184	85	0
+185	85	0
+186	85	0
+187	85	0
+188	85	0
+189	85	0
+190	85	0
+191	85	0
+192	85	0
+193	85	0
+194	85	0
+195	85	0
+196	85	0
+197	85	0
+198	85	0
+199	85	0
+200	85	0
+201	85	0
+202	85	0
+203	85	0
+204	85	0
+205	85	0
+206	85	0
+207	85	0
+208	85	0
+209	85	0
+210	85	0
+211	85	0
+212	85	0
+213	85	0
+214	85	0
+215	85	0
+216	85	0
+217	85	0
+218	85	0
+219	85	0
+220	85	0
+221	85	0
+222	85	0
+223	85	0
+224	85	0
+225	85	0
+226	85	0
+227	85	0
+228	85	0
+229	85	0
+230	85	0
+231	85	0
+232	85	0
+233	85	0
+234	85	0
+235	85	0
+236	85	0
+237	85	0
+238	85	0
+239	85	0
+240	85	0
+241	85	0
+242	85	0
+243	85	0
+244	85	0
+245	85	0
+246	85	0
+247	85	0
+248	85	0
+249	85	0
+250	85	0
+251	85	0
+252	85	0
+253	85	0
+254	85	0
+255	85	0
+256	85	0
+257	85	0
+258	85	0
+259	85	0
+260	85	0
+261	85	0
+262	85	0
+263	85	0
+264	85	0
+265	85	0
+266	85	0
+267	85	0
+268	85	0
+269	85	0
+270	85	0
+271	85	0
+272	85	0
+273	85	0
+274	85	0
+275	85	0
+276	85	0
+277	85	0
+278	85	0
+279	85	0
+280	85	0
+281	85	0
+282	85	0
+283	85	0
+284	85	0
+285	85	0
+286	85	0
+287	85	0
+288	85	0
+289	85	0
+290	85	0
+291	85	0
+292	85	0
+293	85	0
+294	85	0
+295	85	0
+296	85	0
+297	85	0
+298	85	0
+299	85	0
+300	85	0
+301	85	0
+302	85	0
+303	85	0
+304	85	0
+305	85	0
+306	85	0
+307	85	0
+308	85	0
+309	85	0
+310	85	0
+311	85	0
+312	85	0
+313	85	0
+314	85	0
+315	85	0
+316	85	0
+317	85	0
+318	85	0
+319	85	0
+320	85	0
+321	85	0
+322	85	0
+323	85	0
+324	85	0
+325	85	0
+326	85	0
+327	85	0
+328	85	0
+329	85	0
+330	85	-0.42022
+331	85	0
+332	85	0
+333	85	0
+334	85	0
+335	85	0
+336	85	0
+337	85	0
+338	85	0
+339	85	0
+340	85	0
+341	85	0
+342	85	0
+343	85	0
+344	85	0
+345	85	0
+346	85	0
+347	85	0
+348	85	0
+349	85	0
+350	85	0
+351	85	0
+352	85	0
+353	85	0
+354	85	0
+355	85	0
+356	85	0
+357	85	0
+358	85	0
+359	85	0
+360	85	0
+0	85.5	0
+1	85.5	0
+2	85.5	0
+3	85.5	0
+4	85.5	0
+5	85.5	0
+6	85.5	0
+7	85.5	0
+8	85.5	0
+9	85.5	0
+10	85.5	0
+11	85.5	0
+12	85.5	0
+13	85.5	0
+14	85.5	0
+15	85.5	0
+16	85.5	0
+17	85.5	0
+18	85.5	0
+19	85.5	0
+20	85.5	0
+21	85.5	0
+22	85.5	0
+23	85.5	0
+24	85.5	0
+25	85.5	0
+26	85.5	0
+27	85.5	0
+28	85.5	0
+29	85.5	0
+30	85.5	0
+31	85.5	0
+32	85.5	0
+33	85.5	0
+34	85.5	0
+35	85.5	0
+36	85.5	0
+37	85.5	0
+38	85.5	0
+39	85.5	0
+40	85.5	0
+41	85.5	0
+42	85.5	0
+43	85.5	0
+44	85.5	0
+45	85.5	0
+46	85.5	0
+47	85.5	0
+48	85.5	0
+49	85.5	0
+50	85.5	0
+51	85.5	0
+52	85.5	0
+53	85.5	0
+54	85.5	0
+55	85.5	0
+56	85.5	0
+57	85.5	0
+58	85.5	0
+59	85.5	0
+60	85.5	0
+61	85.5	0
+62	85.5	0
+63	85.5	0
+64	85.5	0
+65	85.5	0
+66	85.5	0
+67	85.5	0
+68	85.5	0
+69	85.5	0
+70	85.5	0
+71	85.5	0
+72	85.5	0
+73	85.5	0
+74	85.5	0
+75	85.5	0
+76	85.5	0
+77	85.5	0
+78	85.5	0
+79	85.5	0
+80	85.5	0
+81	85.5	0
+82	85.5	0
+83	85.5	0
+84	85.5	0
+85	85.5	0
+86	85.5	0
+87	85.5	0
+88	85.5	0
+89	85.5	0
+90	85.5	0
+91	85.5	0
+92	85.5	0
+93	85.5	0
+94	85.5	0
+95	85.5	0
+96	85.5	0
+97	85.5	0
+98	85.5	0
+99	85.5	0
+100	85.5	0
+101	85.5	0
+102	85.5	0
+103	85.5	0
+104	85.5	0
+105	85.5	0
+106	85.5	0
+107	85.5	0
+108	85.5	0
+109	85.5	0
+110	85.5	0
+111	85.5	0
+112	85.5	0
+113	85.5	0
+114	85.5	0
+115	85.5	0
+116	85.5	0
+117	85.5	0
+118	85.5	0
+119	85.5	0
+120	85.5	0
+121	85.5	0
+122	85.5	0
+123	85.5	0
+124	85.5	0
+125	85.5	0
+126	85.5	0
+127	85.5	0
+128	85.5	0
+129	85.5	0
+130	85.5	0
+131	85.5	0
+132	85.5	0
+133	85.5	0
+134	85.5	0
+135	85.5	0
+136	85.5	0
+137	85.5	0
+138	85.5	0
+139	85.5	0
+140	85.5	0
+141	85.5	0
+142	85.5	0
+143	85.5	0
+144	85.5	0
+145	85.5	0
+146	85.5	0
+147	85.5	0
+148	85.5	0
+149	85.5	0
+150	85.5	0
+151	85.5	0
+152	85.5	0
+153	85.5	0
+154	85.5	0
+155	85.5	0
+156	85.5	0
+157	85.5	0
+158	85.5	0
+159	85.5	0
+160	85.5	0
+161	85.5	0
+162	85.5	0
+163	85.5	0
+164	85.5	0
+165	85.5	0
+166	85.5	0
+167	85.5	0
+168	85.5	0
+169	85.5	0
+170	85.5	0
+171	85.5	0
+172	85.5	0
+173	85.5	0
+174	85.5	0
+175	85.5	0
+176	85.5	0
+177	85.5	0
+178	85.5	0
+179	85.5	0
+180	85.5	0
+181	85.5	0
+182	85.5	0
+183	85.5	0
+184	85.5	0
+185	85.5	0
+186	85.5	0
+187	85.5	0
+188	85.5	0
+189	85.5	0
+190	85.5	0
+191	85.5	0
+192	85.5	0
+193	85.5	0
+194	85.5	0
+195	85.5	0
+196	85.5	0
+197	85.5	0
+198	85.5	0
+199	85.5	0
+200	85.5	0
+201	85.5	0
+202	85.5	0
+203	85.5	0
+204	85.5	0
+205	85.5	0
+206	85.5	0
+207	85.5	0
+208	85.5	0
+209	85.5	0
+210	85.5	0
+211	85.5	0
+212	85.5	0
+213	85.5	0
+214	85.5	0
+215	85.5	0
+216	85.5	0
+217	85.5	0
+218	85.5	0
+219	85.5	0
+220	85.5	0
+221	85.5	0
+222	85.5	0
+223	85.5	0
+224	85.5	0
+225	85.5	0
+226	85.5	0
+227	85.5	0
+228	85.5	0
+229	85.5	0
+230	85.5	0
+231	85.5	0
+232	85.5	0
+233	85.5	0
+234	85.5	0
+235	85.5	0
+236	85.5	0
+237	85.5	0
+238	85.5	0
+239	85.5	0
+240	85.5	0
+241	85.5	0
+242	85.5	0
+243	85.5	0
+244	85.5	0
+245	85.5	0
+246	85.5	0
+247	85.5	0
+248	85.5	0
+249	85.5	0
+250	85.5	0
+251	85.5	0
+252	85.5	0
+253	85.5	0
+254	85.5	0
+255	85.5	0
+256	85.5	0
+257	85.5	0
+258	85.5	0
+259	85.5	0
+260	85.5	0
+261	85.5	0
+262	85.5	0
+263	85.5	0
+264	85.5	0
+265	85.5	0
+266	85.5	0
+267	85.5	0
+268	85.5	0
+269	85.5	0
+270	85.5	0
+271	85.5	0
+272	85.5	0
+273	85.5	0
+274	85.5	0
+275	85.5	0
+276	85.5	0
+277	85.5	0
+278	85.5	0
+279	85.5	0
+280	85.5	0
+281	85.5	0
+282	85.5	0
+283	85.5	0
+284	85.5	0
+285	85.5	0
+286	85.5	0
+287	85.5	0
+288	85.5	0
+289	85.5	0
+290	85.5	0
+291	85.5	0
+292	85.5	0
+293	85.5	0
+294	85.5	0
+295	85.5	0
+296	85.5	0
+297	85.5	0
+298	85.5	0
+299	85.5	0
+300	85.5	0
+301	85.5	0
+302	85.5	0
+303	85.5	0
+304	85.5	0
+305	85.5	0
+306	85.5	0
+307	85.5	0
+308	85.5	0
+309	85.5	0
+310	85.5	0
+311	85.5	0
+312	85.5	0
+313	85.5	0
+314	85.5	0
+315	85.5	0
+316	85.5	0
+317	85.5	0
+318	85.5	0
+319	85.5	0
+320	85.5	0
+321	85.5	0
+322	85.5	0
+323	85.5	0
+324	85.5	0
+325	85.5	0
+326	85.5	0
+327	85.5	0
+328	85.5	0
+329	85.5	0
+330	85.5	0
+331	85.5	0
+332	85.5	0
+333	85.5	0
+334	85.5	0
+335	85.5	0
+336	85.5	0
+337	85.5	0
+338	85.5	0
+339	85.5	0
+340	85.5	0
+341	85.5	0
+342	85.5	0
+343	85.5	0
+344	85.5	0
+345	85.5	0
+346	85.5	0
+347	85.5	0
+348	85.5	0
+349	85.5	0
+350	85.5	0
+351	85.5	0
+352	85.5	0
+353	85.5	0
+354	85.5	0
+355	85.5	0
+356	85.5	0
+357	85.5	0
+358	85.5	0
+359	85.5	0
+360	85.5	0
+0	86	0
+1	86	0
+2	86	0
+3	86	0
+4	86	0
+5	86	0
+6	86	0
+7	86	0
+8	86	0
+9	86	0
+10	86	0
+11	86	0
+12	86	0
+13	86	0
+14	86	0
+15	86	0
+16	86	0
+17	86	0
+18	86	0
+19	86	0
+20	86	0
+21	86	0
+22	86	0
+23	86	0
+24	86	0
+25	86	0
+26	86	0
+27	86	0
+28	86	0
+29	86	0
+30	86	0
+31	86	0
+32	86	0
+33	86	0
+34	86	0
+35	86	0
+36	86	0
+37	86	0
+38	86	0
+39	86	0
+40	86	0
+41	86	0
+42	86	0
+43	86	0
+44	86	0
+45	86	0
+46	86	0
+47	86	0
+48	86	0
+49	86	0
+50	86	0
+51	86	0
+52	86	0
+53	86	0
+54	86	0
+55	86	0
+56	86	0
+57	86	0
+58	86	0
+59	86	0
+60	86	0
+61	86	0
+62	86	0
+63	86	0
+64	86	0
+65	86	0
+66	86	0
+67	86	0
+68	86	0
+69	86	0
+70	86	0
+71	86	0
+72	86	0
+73	86	0
+74	86	0
+75	86	0
+76	86	0
+77	86	0
+78	86	0
+79	86	0
+80	86	0
+81	86	0
+82	86	0
+83	86	0
+84	86	0
+85	86	0
+86	86	0
+87	86	0
+88	86	0
+89	86	0
+90	86	0
+91	86	0
+92	86	0
+93	86	0
+94	86	0
+95	86	0
+96	86	0
+97	86	0
+98	86	0
+99	86	0
+100	86	0
+101	86	0
+102	86	0
+103	86	0
+104	86	0
+105	86	0
+106	86	0
+107	86	0
+108	86	0
+109	86	0
+110	86	0
+111	86	0
+112	86	0
+113	86	0
+114	86	0
+115	86	0
+116	86	0
+117	86	0
+118	86	0
+119	86	0
+120	86	0
+121	86	0
+122	86	0
+123	86	0
+124	86	0
+125	86	0
+126	86	0
+127	86	0
+128	86	0
+129	86	0
+130	86	0
+131	86	0
+132	86	0
+133	86	0
+134	86	0
+135	86	0
+136	86	0
+137	86	0
+138	86	0
+139	86	0
+140	86	0
+141	86	0
+142	86	0
+143	86	0
+144	86	0
+145	86	0
+146	86	0
+147	86	0
+148	86	0
+149	86	0
+150	86	0
+151	86	0
+152	86	0
+153	86	0
+154	86	0
+155	86	0
+156	86	0
+157	86	0
+158	86	0
+159	86	0
+160	86	0
+161	86	0
+162	86	0
+163	86	0
+164	86	0
+165	86	0
+166	86	0
+167	86	0
+168	86	0
+169	86	0
+170	86	0
+171	86	0
+172	86	0
+173	86	0
+174	86	0
+175	86	0
+176	86	0
+177	86	0
+178	86	0
+179	86	0
+180	86	0
+181	86	0
+182	86	0
+183	86	0
+184	86	0
+185	86	0
+186	86	0
+187	86	0
+188	86	0
+189	86	0
+190	86	0
+191	86	0
+192	86	0
+193	86	0
+194	86	0
+195	86	0
+196	86	0
+197	86	0
+198	86	0
+199	86	0
+200	86	0
+201	86	0
+202	86	0
+203	86	0
+204	86	0
+205	86	0
+206	86	0
+207	86	0
+208	86	0
+209	86	0
+210	86	0
+211	86	0
+212	86	0
+213	86	0
+214	86	0
+215	86	0
+216	86	0
+217	86	0
+218	86	0
+219	86	0
+220	86	0
+221	86	0
+222	86	0
+223	86	0
+224	86	0
+225	86	0
+226	86	0
+227	86	0
+228	86	0
+229	86	0
+230	86	0
+231	86	0
+232	86	0
+233	86	0
+234	86	0
+235	86	0
+236	86	0
+237	86	0
+238	86	0
+239	86	0
+240	86	0
+241	86	0
+242	86	0
+243	86	0
+244	86	0
+245	86	0
+246	86	0
+247	86	0
+248	86	0
+249	86	0
+250	86	0
+251	86	0
+252	86	0
+253	86	0
+254	86	0
+255	86	0
+256	86	0
+257	86	0
+258	86	0
+259	86	0
+260	86	0
+261	86	0
+262	86	0
+263	86	0
+264	86	0
+265	86	0
+266	86	0
+267	86	0
+268	86	0
+269	86	0
+270	86	0
+271	86	0
+272	86	0
+273	86	0
+274	86	0
+275	86	0
+276	86	0
+277	86	0
+278	86	0
+279	86	0
+280	86	0
+281	86	0
+282	86	0
+283	86	0
+284	86	0
+285	86	0
+286	86	0
+287	86	0
+288	86	0
+289	86	0
+290	86	0
+291	86	0
+292	86	0
+293	86	0
+294	86	0
+295	86	0
+296	86	0
+297	86	0
+298	86	0
+299	86	0
+300	86	0
+301	86	0
+302	86	0
+303	86	0
+304	86	0
+305	86	0
+306	86	0
+307	86	0
+308	86	0
+309	86	0
+310	86	0
+311	86	0
+312	86	0
+313	86	0
+314	86	0
+315	86	0
+316	86	0
+317	86	0
+318	86	0
+319	86	0
+320	86	0
+321	86	0
+322	86	0
+323	86	0
+324	86	0
+325	86	0
+326	86	0
+327	86	0
+328	86	0
+329	86	0
+330	86	0
+331	86	0
+332	86	0
+333	86	0
+334	86	0
+335	86	0
+336	86	0
+337	86	0
+338	86	0
+339	86	0
+340	86	0
+341	86	0
+342	86	0
+343	86	0
+344	86	0
+345	86	0
+346	86	0
+347	86	0
+348	86	0
+349	86	0
+350	86	0
+351	86	0
+352	86	0
+353	86	0
+354	86	0
+355	86	0
+356	86	0
+357	86	0
+358	86	0
+359	86	0
+360	86	0
+0	86.5	0
+1	86.5	0
+2	86.5	0
+3	86.5	0
+4	86.5	0
+5	86.5	0
+6	86.5	0
+7	86.5	0
+8	86.5	0
+9	86.5	0
+10	86.5	0
+11	86.5	0
+12	86.5	0
+13	86.5	0
+14	86.5	0
+15	86.5	0
+16	86.5	0
+17	86.5	0
+18	86.5	0
+19	86.5	0
+20	86.5	0
+21	86.5	0
+22	86.5	0
+23	86.5	0
+24	86.5	0
+25	86.5	0
+26	86.5	0
+27	86.5	0
+28	86.5	0
+29	86.5	0
+30	86.5	0
+31	86.5	0
+32	86.5	0
+33	86.5	0
+34	86.5	0
+35	86.5	0
+36	86.5	0
+37	86.5	0
+38	86.5	0
+39	86.5	0
+40	86.5	0
+41	86.5	0
+42	86.5	0
+43	86.5	0
+44	86.5	0
+45	86.5	0
+46	86.5	0
+47	86.5	0
+48	86.5	0
+49	86.5	0
+50	86.5	0
+51	86.5	0
+52	86.5	0
+53	86.5	0
+54	86.5	0
+55	86.5	0
+56	86.5	0
+57	86.5	0
+58	86.5	0
+59	86.5	0
+60	86.5	0
+61	86.5	0
+62	86.5	0
+63	86.5	0
+64	86.5	0
+65	86.5	0
+66	86.5	0
+67	86.5	0
+68	86.5	0
+69	86.5	0
+70	86.5	0
+71	86.5	0
+72	86.5	0
+73	86.5	0
+74	86.5	0
+75	86.5	0
+76	86.5	0
+77	86.5	0
+78	86.5	0
+79	86.5	0
+80	86.5	0
+81	86.5	0
+82	86.5	0
+83	86.5	0
+84	86.5	0
+85	86.5	0
+86	86.5	0
+87	86.5	0
+88	86.5	0
+89	86.5	0
+90	86.5	0
+91	86.5	0
+92	86.5	0
+93	86.5	0
+94	86.5	0
+95	86.5	0
+96	86.5	0
+97	86.5	0
+98	86.5	0
+99	86.5	0
+100	86.5	0
+101	86.5	0
+102	86.5	0
+103	86.5	0
+104	86.5	0
+105	86.5	0
+106	86.5	0
+107	86.5	0
+108	86.5	0
+109	86.5	0
+110	86.5	0
+111	86.5	0
+112	86.5	0
+113	86.5	0
+114	86.5	0
+115	86.5	0
+116	86.5	0
+117	86.5	0
+118	86.5	0
+119	86.5	0
+120	86.5	0
+121	86.5	0
+122	86.5	0
+123	86.5	0
+124	86.5	0
+125	86.5	0
+126	86.5	0
+127	86.5	0
+128	86.5	0
+129	86.5	0
+130	86.5	0
+131	86.5	0
+132	86.5	0
+133	86.5	0
+134	86.5	0
+135	86.5	0
+136	86.5	0
+137	86.5	0
+138	86.5	0
+139	86.5	0
+140	86.5	0
+141	86.5	0
+142	86.5	0
+143	86.5	0
+144	86.5	0
+145	86.5	0
+146	86.5	0
+147	86.5	0
+148	86.5	0
+149	86.5	0
+150	86.5	0
+151	86.5	0
+152	86.5	0
+153	86.5	0
+154	86.5	0
+155	86.5	0
+156	86.5	0
+157	86.5	0
+158	86.5	0
+159	86.5	0
+160	86.5	0
+161	86.5	0
+162	86.5	0
+163	86.5	0
+164	86.5	0
+165	86.5	0
+166	86.5	0
+167	86.5	0
+168	86.5	0
+169	86.5	0
+170	86.5	0
+171	86.5	0
+172	86.5	0
+173	86.5	0
+174	86.5	0
+175	86.5	0
+176	86.5	0
+177	86.5	0
+178	86.5	0
+179	86.5	0
+180	86.5	0
+181	86.5	0
+182	86.5	0
+183	86.5	0
+184	86.5	0
+185	86.5	0
+186	86.5	0
+187	86.5	0
+188	86.5	0
+189	86.5	0
+190	86.5	0
+191	86.5	0
+192	86.5	0
+193	86.5	0
+194	86.5	0
+195	86.5	0
+196	86.5	0
+197	86.5	0
+198	86.5	0
+199	86.5	0
+200	86.5	0
+201	86.5	0
+202	86.5	0
+203	86.5	0
+204	86.5	0
+205	86.5	0
+206	86.5	0
+207	86.5	0
+208	86.5	0
+209	86.5	0
+210	86.5	0
+211	86.5	0
+212	86.5	0
+213	86.5	0
+214	86.5	0
+215	86.5	0
+216	86.5	0
+217	86.5	0
+218	86.5	0
+219	86.5	0
+220	86.5	0
+221	86.5	0
+222	86.5	0
+223	86.5	0
+224	86.5	0
+225	86.5	0
+226	86.5	0
+227	86.5	0
+228	86.5	0
+229	86.5	0
+230	86.5	0
+231	86.5	0
+232	86.5	0
+233	86.5	0
+234	86.5	0
+235	86.5	0
+236	86.5	0
+237	86.5	0
+238	86.5	0
+239	86.5	0
+240	86.5	0
+241	86.5	0
+242	86.5	0
+243	86.5	0
+244	86.5	0
+245	86.5	0
+246	86.5	0
+247	86.5	0
+248	86.5	0
+249	86.5	0
+250	86.5	0
+251	86.5	0
+252	86.5	0
+253	86.5	0
+254	86.5	0
+255	86.5	0
+256	86.5	0
+257	86.5	0
+258	86.5	0
+259	86.5	0
+260	86.5	0
+261	86.5	0
+262	86.5	0
+263	86.5	0
+264	86.5	0
+265	86.5	0
+266	86.5	0
+267	86.5	0
+268	86.5	0
+269	86.5	0
+270	86.5	0
+271	86.5	0
+272	86.5	0
+273	86.5	0
+274	86.5	0
+275	86.5	0
+276	86.5	0
+277	86.5	0
+278	86.5	0
+279	86.5	0
+280	86.5	0
+281	86.5	0
+282	86.5	0
+283	86.5	0
+284	86.5	0
+285	86.5	0
+286	86.5	0
+287	86.5	0
+288	86.5	0
+289	86.5	0
+290	86.5	0
+291	86.5	0
+292	86.5	0
+293	86.5	0
+294	86.5	0
+295	86.5	0
+296	86.5	0
+297	86.5	0
+298	86.5	0
+299	86.5	0
+300	86.5	0
+301	86.5	0
+302	86.5	0
+303	86.5	0
+304	86.5	0
+305	86.5	0
+306	86.5	0
+307	86.5	0
+308	86.5	0
+309	86.5	0
+310	86.5	0
+311	86.5	0
+312	86.5	0
+313	86.5	0
+314	86.5	0
+315	86.5	0
+316	86.5	0
+317	86.5	0
+318	86.5	0
+319	86.5	0
+320	86.5	0
+321	86.5	0
+322	86.5	0
+323	86.5	0
+324	86.5	0
+325	86.5	0
+326	86.5	0
+327	86.5	0
+328	86.5	0
+329	86.5	0
+330	86.5	0
+331	86.5	0
+332	86.5	0
+333	86.5	0
+334	86.5	0
+335	86.5	0
+336	86.5	0
+337	86.5	0
+338	86.5	0
+339	86.5	0
+340	86.5	0
+341	86.5	0
+342	86.5	0
+343	86.5	0
+344	86.5	0
+345	86.5	0
+346	86.5	0
+347	86.5	0
+348	86.5	0
+349	86.5	0
+350	86.5	0
+351	86.5	0
+352	86.5	0
+353	86.5	0
+354	86.5	0
+355	86.5	0
+356	86.5	0
+357	86.5	0
+358	86.5	0
+359	86.5	0
+360	86.5	0
+0	87	0
+1	87	0
+2	87	0
+3	87	0
+4	87	0
+5	87	0
+6	87	0
+7	87	0
+8	87	0
+9	87	0
+10	87	0
+11	87	0
+12	87	0
+13	87	0
+14	87	0
+15	87	0
+16	87	0
+17	87	0
+18	87	0
+19	87	0
+20	87	0
+21	87	0
+22	87	0
+23	87	0
+24	87	0
+25	87	0
+26	87	0
+27	87	0
+28	87	0
+29	87	0
+30	87	0
+31	87	0
+32	87	0
+33	87	0
+34	87	0
+35	87	0
+36	87	0
+37	87	0
+38	87	0
+39	87	0
+40	87	0
+41	87	0
+42	87	0
+43	87	0
+44	87	0
+45	87	0
+46	87	0
+47	87	0
+48	87	0
+49	87	0
+50	87	0
+51	87	0
+52	87	0
+53	87	0
+54	87	0
+55	87	0
+56	87	0
+57	87	0
+58	87	0
+59	87	0
+60	87	0
+61	87	0
+62	87	0
+63	87	0
+64	87	0
+65	87	0
+66	87	0
+67	87	0
+68	87	0
+69	87	0
+70	87	0
+71	87	0
+72	87	0
+73	87	0
+74	87	0
+75	87	0
+76	87	0
+77	87	0
+78	87	0
+79	87	0
+80	87	0
+81	87	0
+82	87	0
+83	87	0
+84	87	0
+85	87	0
+86	87	0
+87	87	0
+88	87	0
+89	87	0
+90	87	0
+91	87	0
+92	87	0
+93	87	0
+94	87	0
+95	87	0
+96	87	0
+97	87	0
+98	87	0
+99	87	0
+100	87	0
+101	87	0
+102	87	0
+103	87	0
+104	87	0
+105	87	0
+106	87	0
+107	87	0
+108	87	0
+109	87	0
+110	87	0
+111	87	0
+112	87	0
+113	87	0
+114	87	0
+115	87	0
+116	87	0
+117	87	0
+118	87	0
+119	87	0
+120	87	0
+121	87	0
+122	87	0
+123	87	0
+124	87	0
+125	87	0
+126	87	0
+127	87	0
+128	87	0
+129	87	0
+130	87	0
+131	87	0
+132	87	0
+133	87	0
+134	87	0
+135	87	0
+136	87	0
+137	87	0
+138	87	0
+139	87	0
+140	87	0
+141	87	0
+142	87	0
+143	87	0
+144	87	0
+145	87	0
+146	87	0
+147	87	0
+148	87	0
+149	87	0
+150	87	0
+151	87	0
+152	87	0
+153	87	0
+154	87	0
+155	87	0
+156	87	0
+157	87	0
+158	87	0
+159	87	0
+160	87	0
+161	87	0
+162	87	0
+163	87	0
+164	87	0
+165	87	0
+166	87	0
+167	87	0
+168	87	0
+169	87	0
+170	87	0
+171	87	0
+172	87	0
+173	87	0
+174	87	0
+175	87	0
+176	87	0
+177	87	0
+178	87	0
+179	87	0
+180	87	0
+181	87	0
+182	87	0
+183	87	0
+184	87	0
+185	87	0
+186	87	0
+187	87	0
+188	87	0
+189	87	0
+190	87	0
+191	87	0
+192	87	0
+193	87	0
+194	87	0
+195	87	0
+196	87	0
+197	87	0
+198	87	0
+199	87	0
+200	87	0
+201	87	0
+202	87	0
+203	87	0
+204	87	0
+205	87	0
+206	87	0
+207	87	0
+208	87	0
+209	87	0
+210	87	0
+211	87	0
+212	87	0
+213	87	0
+214	87	0
+215	87	0
+216	87	0
+217	87	0
+218	87	0
+219	87	0
+220	87	0
+221	87	0
+222	87	0
+223	87	0
+224	87	0
+225	87	0
+226	87	0
+227	87	0
+228	87	0
+229	87	0
+230	87	0
+231	87	0
+232	87	0
+233	87	0
+234	87	0
+235	87	0
+236	87	0
+237	87	0
+238	87	0
+239	87	0
+240	87	0
+241	87	0
+242	87	0
+243	87	0
+244	87	0
+245	87	0
+246	87	0
+247	87	0
+248	87	0
+249	87	0
+250	87	0
+251	87	0
+252	87	0
+253	87	0
+254	87	0
+255	87	0
+256	87	0
+257	87	0
+258	87	0
+259	87	0
+260	87	0
+261	87	0
+262	87	0
+263	87	0
+264	87	0
+265	87	0
+266	87	0
+267	87	0
+268	87	0
+269	87	0
+270	87	0
+271	87	0
+272	87	0
+273	87	0
+274	87	0
+275	87	0
+276	87	0
+277	87	0
+278	87	0
+279	87	0
+280	87	0
+281	87	0
+282	87	0
+283	87	0
+284	87	0
+285	87	0
+286	87	0
+287	87	0
+288	87	0
+289	87	0
+290	87	0
+291	87	0
+292	87	0
+293	87	0
+294	87	0
+295	87	0
+296	87	0
+297	87	0
+298	87	0
+299	87	0
+300	87	0
+301	87	0
+302	87	0
+303	87	0
+304	87	0
+305	87	0
+306	87	0
+307	87	0
+308	87	0
+309	87	0
+310	87	0
+311	87	0
+312	87	0
+313	87	0
+314	87	0
+315	87	0
+316	87	0
+317	87	0
+318	87	0
+319	87	0
+320	87	0
+321	87	0
+322	87	0
+323	87	0
+324	87	0
+325	87	0
+326	87	0
+327	87	0
+328	87	0
+329	87	0
+330	87	0
+331	87	0
+332	87	0
+333	87	0
+334	87	0
+335	87	0
+336	87	0
+337	87	0
+338	87	0
+339	87	0
+340	87	0
+341	87	0
+342	87	0
+343	87	0
+344	87	0
+345	87	0
+346	87	0
+347	87	0
+348	87	0
+349	87	0
+350	87	0
+351	87	0
+352	87	0
+353	87	0
+354	87	0
+355	87	0
+356	87	0
+357	87	0
+358	87	0
+359	87	0
+360	87	0
+0	87.5	0
+1	87.5	0
+2	87.5	0
+3	87.5	0
+4	87.5	0
+5	87.5	0
+6	87.5	0
+7	87.5	0
+8	87.5	0
+9	87.5	0
+10	87.5	0
+11	87.5	0
+12	87.5	0
+13	87.5	0
+14	87.5	0
+15	87.5	0
+16	87.5	0
+17	87.5	0
+18	87.5	0
+19	87.5	0
+20	87.5	0
+21	87.5	0
+22	87.5	0
+23	87.5	0
+24	87.5	0
+25	87.5	0
+26	87.5	0
+27	87.5	0
+28	87.5	0
+29	87.5	0
+30	87.5	0
+31	87.5	0
+32	87.5	0
+33	87.5	0
+34	87.5	0
+35	87.5	0
+36	87.5	0
+37	87.5	0
+38	87.5	0
+39	87.5	0
+40	87.5	0
+41	87.5	0
+42	87.5	0
+43	87.5	0
+44	87.5	0
+45	87.5	0
+46	87.5	0
+47	87.5	0
+48	87.5	0
+49	87.5	0
+50	87.5	0
+51	87.5	0
+52	87.5	0
+53	87.5	0
+54	87.5	0
+55	87.5	0
+56	87.5	0
+57	87.5	0
+58	87.5	0
+59	87.5	0
+60	87.5	0
+61	87.5	0
+62	87.5	0
+63	87.5	0
+64	87.5	0
+65	87.5	0
+66	87.5	0
+67	87.5	0
+68	87.5	0
+69	87.5	0
+70	87.5	0
+71	87.5	0
+72	87.5	0
+73	87.5	0
+74	87.5	0
+75	87.5	0
+76	87.5	0
+77	87.5	0
+78	87.5	0
+79	87.5	0
+80	87.5	0
+81	87.5	0
+82	87.5	0
+83	87.5	0
+84	87.5	0
+85	87.5	0
+86	87.5	0
+87	87.5	0
+88	87.5	0
+89	87.5	0
+90	87.5	0
+91	87.5	0
+92	87.5	0
+93	87.5	0
+94	87.5	0
+95	87.5	0
+96	87.5	0
+97	87.5	0
+98	87.5	0
+99	87.5	0
+100	87.5	0
+101	87.5	0
+102	87.5	0
+103	87.5	0
+104	87.5	0
+105	87.5	0
+106	87.5	0
+107	87.5	0
+108	87.5	0
+109	87.5	0
+110	87.5	0
+111	87.5	0
+112	87.5	0
+113	87.5	0
+114	87.5	0
+115	87.5	0
+116	87.5	0
+117	87.5	0
+118	87.5	0
+119	87.5	0
+120	87.5	0
+121	87.5	0
+122	87.5	0
+123	87.5	0
+124	87.5	0
+125	87.5	0
+126	87.5	0
+127	87.5	0
+128	87.5	0
+129	87.5	0
+130	87.5	0
+131	87.5	0
+132	87.5	0
+133	87.5	0
+134	87.5	0
+135	87.5	0
+136	87.5	0
+137	87.5	0
+138	87.5	0
+139	87.5	0
+140	87.5	0
+141	87.5	0
+142	87.5	0
+143	87.5	0
+144	87.5	0
+145	87.5	0
+146	87.5	0
+147	87.5	0
+148	87.5	0
+149	87.5	0
+150	87.5	0
+151	87.5	0
+152	87.5	0
+153	87.5	0
+154	87.5	0
+155	87.5	0
+156	87.5	0
+157	87.5	0
+158	87.5	0
+159	87.5	0
+160	87.5	0
+161	87.5	0
+162	87.5	0
+163	87.5	0
+164	87.5	0
+165	87.5	0
+166	87.5	0
+167	87.5	0
+168	87.5	0
+169	87.5	0
+170	87.5	0
+171	87.5	0
+172	87.5	0
+173	87.5	0
+174	87.5	0
+175	87.5	0
+176	87.5	0
+177	87.5	0
+178	87.5	0
+179	87.5	0
+180	87.5	0
+181	87.5	0
+182	87.5	0
+183	87.5	0
+184	87.5	0
+185	87.5	0
+186	87.5	0
+187	87.5	0
+188	87.5	0
+189	87.5	0
+190	87.5	0
+191	87.5	0
+192	87.5	0
+193	87.5	0
+194	87.5	0
+195	87.5	0
+196	87.5	0
+197	87.5	0
+198	87.5	0
+199	87.5	0
+200	87.5	0
+201	87.5	0
+202	87.5	0
+203	87.5	0
+204	87.5	0
+205	87.5	0
+206	87.5	0
+207	87.5	0
+208	87.5	0
+209	87.5	0
+210	87.5	0
+211	87.5	0
+212	87.5	0
+213	87.5	0
+214	87.5	0
+215	87.5	0
+216	87.5	0
+217	87.5	0
+218	87.5	0
+219	87.5	0
+220	87.5	0
+221	87.5	0
+222	87.5	0
+223	87.5	0
+224	87.5	0
+225	87.5	0
+226	87.5	0
+227	87.5	0
+228	87.5	0
+229	87.5	0
+230	87.5	0
+231	87.5	0
+232	87.5	0
+233	87.5	0
+234	87.5	0
+235	87.5	0
+236	87.5	0
+237	87.5	0
+238	87.5	0
+239	87.5	0
+240	87.5	0
+241	87.5	0
+242	87.5	0
+243	87.5	0
+244	87.5	0
+245	87.5	0
+246	87.5	0
+247	87.5	0
+248	87.5	0
+249	87.5	0
+250	87.5	0
+251	87.5	0
+252	87.5	0
+253	87.5	0
+254	87.5	0
+255	87.5	0
+256	87.5	0
+257	87.5	0
+258	87.5	0
+259	87.5	0
+260	87.5	0
+261	87.5	0
+262	87.5	0
+263	87.5	0
+264	87.5	0
+265	87.5	0
+266	87.5	0
+267	87.5	0
+268	87.5	0
+269	87.5	0
+270	87.5	0
+271	87.5	0
+272	87.5	0
+273	87.5	0
+274	87.5	0
+275	87.5	0
+276	87.5	0
+277	87.5	0
+278	87.5	0
+279	87.5	0
+280	87.5	0
+281	87.5	0
+282	87.5	0
+283	87.5	0
+284	87.5	0
+285	87.5	0
+286	87.5	0
+287	87.5	0
+288	87.5	0
+289	87.5	0
+290	87.5	0
+291	87.5	0
+292	87.5	0
+293	87.5	0
+294	87.5	0
+295	87.5	0
+296	87.5	0
+297	87.5	0
+298	87.5	0
+299	87.5	0
+300	87.5	0
+301	87.5	0
+302	87.5	0
+303	87.5	0
+304	87.5	0
+305	87.5	0
+306	87.5	0
+307	87.5	0
+308	87.5	0
+309	87.5	0
+310	87.5	0
+311	87.5	0
+312	87.5	0
+313	87.5	0
+314	87.5	0
+315	87.5	0
+316	87.5	0
+317	87.5	0
+318	87.5	0
+319	87.5	0
+320	87.5	0
+321	87.5	0
+322	87.5	0
+323	87.5	0
+324	87.5	0
+325	87.5	0
+326	87.5	0
+327	87.5	0
+328	87.5	0
+329	87.5	0
+330	87.5	0
+331	87.5	0
+332	87.5	0
+333	87.5	0
+334	87.5	0
+335	87.5	0
+336	87.5	0
+337	87.5	0
+338	87.5	0
+339	87.5	0
+340	87.5	0
+341	87.5	0
+342	87.5	0
+343	87.5	0
+344	87.5	0
+345	87.5	0
+346	87.5	0
+347	87.5	0
+348	87.5	0
+349	87.5	0
+350	87.5	0
+351	87.5	0
+352	87.5	0
+353	87.5	0
+354	87.5	0
+355	87.5	0
+356	87.5	0
+357	87.5	0
+358	87.5	0
+359	87.5	0
+360	87.5	0
+0	88	0
+1	88	0
+2	88	0
+3	88	0
+4	88	0
+5	88	0
+6	88	0
+7	88	0
+8	88	0
+9	88	0
+10	88	0
+11	88	0
+12	88	0
+13	88	0
+14	88	0
+15	88	0
+16	88	0
+17	88	0
+18	88	0
+19	88	0
+20	88	0
+21	88	0
+22	88	0
+23	88	0
+24	88	0
+25	88	0
+26	88	0
+27	88	0
+28	88	0
+29	88	0
+30	88	0
+31	88	0
+32	88	0
+33	88	0
+34	88	0
+35	88	0
+36	88	0
+37	88	0
+38	88	0
+39	88	0
+40	88	0
+41	88	0
+42	88	0
+43	88	0
+44	88	0
+45	88	0
+46	88	0
+47	88	0
+48	88	0
+49	88	0
+50	88	0
+51	88	0
+52	88	0
+53	88	0
+54	88	0
+55	88	0
+56	88	0
+57	88	0
+58	88	0
+59	88	0
+60	88	0
+61	88	0
+62	88	0
+63	88	0
+64	88	0
+65	88	0
+66	88	0
+67	88	0
+68	88	0
+69	88	0
+70	88	0
+71	88	0
+72	88	0
+73	88	0
+74	88	0
+75	88	0
+76	88	0
+77	88	0
+78	88	0
+79	88	0
+80	88	0
+81	88	0
+82	88	0
+83	88	0
+84	88	0
+85	88	0
+86	88	0
+87	88	0
+88	88	0
+89	88	0
+90	88	0
+91	88	0
+92	88	0
+93	88	0
+94	88	0
+95	88	0
+96	88	0
+97	88	0
+98	88	0
+99	88	0
+100	88	0
+101	88	0
+102	88	0
+103	88	0
+104	88	0
+105	88	0
+106	88	0
+107	88	0
+108	88	0
+109	88	0
+110	88	0
+111	88	0
+112	88	0
+113	88	0
+114	88	0
+115	88	0
+116	88	0
+117	88	0
+118	88	0
+119	88	0
+120	88	0
+121	88	0
+122	88	0
+123	88	0
+124	88	0
+125	88	0
+126	88	0
+127	88	0
+128	88	0
+129	88	0
+130	88	0
+131	88	0
+132	88	0
+133	88	0
+134	88	0
+135	88	0
+136	88	0
+137	88	0
+138	88	0
+139	88	0
+140	88	0
+141	88	0
+142	88	0
+143	88	0
+144	88	0
+145	88	0
+146	88	0
+147	88	0
+148	88	0
+149	88	0
+150	88	0
+151	88	0
+152	88	0
+153	88	0
+154	88	0
+155	88	0
+156	88	0
+157	88	0
+158	88	0
+159	88	0
+160	88	0
+161	88	0
+162	88	0
+163	88	0
+164	88	0
+165	88	0
+166	88	0
+167	88	0
+168	88	0
+169	88	0
+170	88	0
+171	88	0
+172	88	0
+173	88	0
+174	88	0
+175	88	0
+176	88	0
+177	88	0
+178	88	0
+179	88	0
+180	88	0
+181	88	0
+182	88	0
+183	88	0
+184	88	0
+185	88	0
+186	88	0
+187	88	0
+188	88	0
+189	88	0
+190	88	0
+191	88	0
+192	88	0
+193	88	0
+194	88	0
+195	88	0
+196	88	0
+197	88	0
+198	88	0
+199	88	0
+200	88	0
+201	88	0
+202	88	0
+203	88	0
+204	88	0
+205	88	0
+206	88	0
+207	88	0
+208	88	0
+209	88	0
+210	88	0
+211	88	0
+212	88	0
+213	88	0
+214	88	0
+215	88	0
+216	88	0
+217	88	0
+218	88	0
+219	88	0
+220	88	0
+221	88	0
+222	88	0
+223	88	0
+224	88	0
+225	88	0
+226	88	0
+227	88	0
+228	88	0
+229	88	0
+230	88	0
+231	88	0
+232	88	0
+233	88	0
+234	88	0
+235	88	0
+236	88	0
+237	88	0
+238	88	0
+239	88	0
+240	88	0
+241	88	0
+242	88	0
+243	88	0
+244	88	0
+245	88	0
+246	88	0
+247	88	0
+248	88	0
+249	88	0
+250	88	0
+251	88	0
+252	88	0
+253	88	0
+254	88	0
+255	88	0
+256	88	0
+257	88	0
+258	88	0
+259	88	0
+260	88	0
+261	88	0
+262	88	0
+263	88	0
+264	88	0
+265	88	0
+266	88	0
+267	88	0
+268	88	0
+269	88	0
+270	88	0
+271	88	0
+272	88	0
+273	88	0
+274	88	0
+275	88	0
+276	88	0
+277	88	0
+278	88	0
+279	88	0
+280	88	0
+281	88	0
+282	88	0
+283	88	0
+284	88	0
+285	88	0
+286	88	0
+287	88	0
+288	88	0
+289	88	0
+290	88	0
+291	88	0
+292	88	0
+293	88	0
+294	88	0
+295	88	0
+296	88	0
+297	88	0
+298	88	0
+299	88	0
+300	88	0
+301	88	0
+302	88	0
+303	88	0
+304	88	0
+305	88	0
+306	88	0
+307	88	0
+308	88	0
+309	88	0
+310	88	0
+311	88	0
+312	88	0
+313	88	0
+314	88	0
+315	88	0
+316	88	0
+317	88	0
+318	88	0
+319	88	0
+320	88	0
+321	88	0
+322	88	0
+323	88	0
+324	88	0
+325	88	0
+326	88	0
+327	88	0
+328	88	0
+329	88	0
+330	88	0
+331	88	0
+332	88	0
+333	88	0
+334	88	0
+335	88	0
+336	88	0
+337	88	0
+338	88	0
+339	88	0
+340	88	0
+341	88	0
+342	88	0
+343	88	0
+344	88	0
+345	88	0
+346	88	0
+347	88	0
+348	88	0
+349	88	0
+350	88	0
+351	88	0
+352	88	0
+353	88	0
+354	88	0
+355	88	0
+356	88	0
+357	88	0
+358	88	0
+359	88	0
+360	88	0
+0	88.5	0
+1	88.5	0
+2	88.5	0
+3	88.5	0
+4	88.5	0
+5	88.5	0
+6	88.5	0
+7	88.5	0
+8	88.5	0
+9	88.5	0
+10	88.5	0
+11	88.5	0
+12	88.5	0
+13	88.5	0
+14	88.5	0
+15	88.5	0
+16	88.5	0
+17	88.5	0
+18	88.5	0
+19	88.5	0
+20	88.5	0
+21	88.5	0
+22	88.5	0
+23	88.5	0
+24	88.5	0
+25	88.5	0
+26	88.5	0
+27	88.5	0
+28	88.5	0
+29	88.5	0
+30	88.5	0
+31	88.5	0
+32	88.5	0
+33	88.5	0
+34	88.5	0
+35	88.5	0
+36	88.5	0
+37	88.5	0
+38	88.5	0
+39	88.5	0
+40	88.5	0
+41	88.5	0
+42	88.5	0
+43	88.5	0
+44	88.5	0
+45	88.5	0
+46	88.5	0
+47	88.5	0
+48	88.5	0
+49	88.5	0
+50	88.5	0
+51	88.5	0
+52	88.5	0
+53	88.5	0
+54	88.5	0
+55	88.5	0
+56	88.5	0
+57	88.5	0
+58	88.5	0
+59	88.5	0
+60	88.5	0
+61	88.5	0
+62	88.5	0
+63	88.5	0
+64	88.5	0
+65	88.5	0
+66	88.5	0
+67	88.5	0
+68	88.5	0
+69	88.5	0
+70	88.5	0
+71	88.5	0
+72	88.5	0
+73	88.5	0
+74	88.5	0
+75	88.5	0
+76	88.5	0
+77	88.5	0
+78	88.5	0
+79	88.5	0
+80	88.5	0
+81	88.5	0
+82	88.5	0
+83	88.5	0
+84	88.5	0
+85	88.5	0
+86	88.5	0
+87	88.5	0
+88	88.5	0
+89	88.5	0
+90	88.5	0
+91	88.5	0
+92	88.5	0
+93	88.5	0
+94	88.5	0
+95	88.5	0
+96	88.5	0
+97	88.5	0
+98	88.5	0
+99	88.5	0
+100	88.5	0
+101	88.5	0
+102	88.5	0
+103	88.5	0
+104	88.5	0
+105	88.5	0
+106	88.5	0
+107	88.5	0
+108	88.5	0
+109	88.5	0
+110	88.5	0
+111	88.5	0
+112	88.5	0
+113	88.5	0
+114	88.5	0
+115	88.5	0
+116	88.5	0
+117	88.5	0
+118	88.5	0
+119	88.5	0
+120	88.5	0
+121	88.5	0
+122	88.5	0
+123	88.5	0
+124	88.5	0
+125	88.5	0
+126	88.5	0
+127	88.5	0
+128	88.5	0
+129	88.5	0
+130	88.5	0
+131	88.5	0
+132	88.5	0
+133	88.5	0
+134	88.5	0
+135	88.5	0
+136	88.5	0
+137	88.5	0
+138	88.5	0
+139	88.5	0
+140	88.5	0
+141	88.5	0
+142	88.5	0
+143	88.5	0
+144	88.5	0
+145	88.5	0
+146	88.5	0
+147	88.5	0
+148	88.5	0
+149	88.5	0
+150	88.5	0
+151	88.5	0
+152	88.5	0
+153	88.5	0
+154	88.5	0
+155	88.5	0
+156	88.5	0
+157	88.5	0
+158	88.5	0
+159	88.5	0
+160	88.5	0
+161	88.5	0
+162	88.5	0
+163	88.5	0
+164	88.5	0
+165	88.5	0
+166	88.5	0
+167	88.5	0
+168	88.5	0
+169	88.5	0
+170	88.5	0
+171	88.5	0
+172	88.5	0
+173	88.5	0
+174	88.5	0
+175	88.5	0
+176	88.5	0
+177	88.5	0
+178	88.5	0
+179	88.5	0
+180	88.5	0
+181	88.5	0
+182	88.5	0
+183	88.5	0
+184	88.5	0
+185	88.5	0
+186	88.5	0
+187	88.5	0
+188	88.5	0
+189	88.5	0
+190	88.5	0
+191	88.5	0
+192	88.5	0
+193	88.5	0
+194	88.5	0
+195	88.5	0
+196	88.5	0
+197	88.5	0
+198	88.5	0
+199	88.5	0
+200	88.5	0
+201	88.5	0
+202	88.5	0
+203	88.5	0
+204	88.5	0
+205	88.5	0
+206	88.5	0
+207	88.5	0
+208	88.5	0
+209	88.5	0
+210	88.5	0
+211	88.5	0
+212	88.5	0
+213	88.5	0
+214	88.5	0
+215	88.5	0
+216	88.5	0
+217	88.5	0
+218	88.5	0
+219	88.5	0
+220	88.5	0
+221	88.5	0
+222	88.5	0
+223	88.5	0
+224	88.5	0
+225	88.5	0
+226	88.5	0
+227	88.5	0
+228	88.5	0
+229	88.5	0
+230	88.5	0
+231	88.5	0
+232	88.5	0
+233	88.5	0
+234	88.5	0
+235	88.5	0
+236	88.5	0
+237	88.5	0
+238	88.5	0
+239	88.5	0
+240	88.5	0
+241	88.5	0
+242	88.5	0
+243	88.5	0
+244	88.5	0
+245	88.5	0
+246	88.5	0
+247	88.5	0
+248	88.5	0
+249	88.5	0
+250	88.5	0
+251	88.5	0
+252	88.5	0
+253	88.5	0
+254	88.5	0
+255	88.5	0
+256	88.5	0
+257	88.5	0
+258	88.5	0
+259	88.5	0
+260	88.5	0
+261	88.5	0
+262	88.5	0
+263	88.5	0
+264	88.5	0
+265	88.5	0
+266	88.5	0
+267	88.5	0
+268	88.5	0
+269	88.5	0
+270	88.5	0
+271	88.5	0
+272	88.5	0
+273	88.5	0
+274	88.5	0
+275	88.5	0
+276	88.5	0
+277	88.5	0
+278	88.5	0
+279	88.5	0
+280	88.5	0
+281	88.5	0
+282	88.5	0
+283	88.5	0
+284	88.5	0
+285	88.5	0
+286	88.5	0
+287	88.5	0
+288	88.5	0
+289	88.5	0
+290	88.5	0
+291	88.5	0
+292	88.5	0
+293	88.5	0
+294	88.5	0
+295	88.5	0
+296	88.5	0
+297	88.5	0
+298	88.5	0
+299	88.5	0
+300	88.5	0
+301	88.5	0
+302	88.5	0
+303	88.5	0
+304	88.5	0
+305	88.5	0
+306	88.5	0
+307	88.5	0
+308	88.5	0
+309	88.5	0
+310	88.5	0
+311	88.5	0
+312	88.5	0
+313	88.5	0
+314	88.5	0
+315	88.5	0
+316	88.5	0
+317	88.5	0
+318	88.5	0
+319	88.5	0
+320	88.5	0
+321	88.5	0
+322	88.5	0
+323	88.5	0
+324	88.5	0
+325	88.5	0
+326	88.5	0
+327	88.5	0
+328	88.5	0
+329	88.5	0
+330	88.5	0
+331	88.5	0
+332	88.5	0
+333	88.5	0
+334	88.5	0
+335	88.5	0
+336	88.5	0
+337	88.5	0
+338	88.5	0
+339	88.5	0
+340	88.5	0
+341	88.5	0
+342	88.5	0
+343	88.5	0
+344	88.5	0
+345	88.5	0
+346	88.5	0
+347	88.5	0
+348	88.5	0
+349	88.5	0
+350	88.5	0
+351	88.5	0
+352	88.5	0
+353	88.5	0
+354	88.5	0
+355	88.5	0
+356	88.5	0
+357	88.5	0
+358	88.5	0
+359	88.5	0
+360	88.5	0
+0	89	0
+1	89	0
+2	89	0
+3	89	0
+4	89	0
+5	89	0
+6	89	0
+7	89	0
+8	89	0
+9	89	0
+10	89	0
+11	89	0
+12	89	0
+13	89	0
+14	89	0
+15	89	0
+16	89	0
+17	89	0
+18	89	0
+19	89	0
+20	89	0
+21	89	0
+22	89	0
+23	89	0
+24	89	0
+25	89	0
+26	89	0
+27	89	0
+28	89	0
+29	89	0
+30	89	0
+31	89	0
+32	89	0
+33	89	0
+34	89	0
+35	89	0
+36	89	0
+37	89	0
+38	89	0
+39	89	0
+40	89	0
+41	89	0
+42	89	0
+43	89	0
+44	89	0
+45	89	0
+46	89	0
+47	89	0
+48	89	0
+49	89	0
+50	89	0
+51	89	0
+52	89	0
+53	89	0
+54	89	0
+55	89	0
+56	89	0
+57	89	0
+58	89	0
+59	89	0
+60	89	0
+61	89	0
+62	89	0
+63	89	0
+64	89	0
+65	89	0
+66	89	0
+67	89	0
+68	89	0
+69	89	0
+70	89	0
+71	89	0
+72	89	0
+73	89	0
+74	89	0
+75	89	0
+76	89	0
+77	89	0
+78	89	0
+79	89	0
+80	89	0
+81	89	0
+82	89	0
+83	89	0
+84	89	0
+85	89	0
+86	89	0
+87	89	0
+88	89	0
+89	89	0
+90	89	0
+91	89	0
+92	89	0
+93	89	0
+94	89	0
+95	89	0
+96	89	0
+97	89	0
+98	89	0
+99	89	0
+100	89	0
+101	89	0
+102	89	0
+103	89	0
+104	89	0
+105	89	0
+106	89	0
+107	89	0
+108	89	0
+109	89	0
+110	89	0
+111	89	0
+112	89	0
+113	89	0
+114	89	0
+115	89	0
+116	89	0
+117	89	0
+118	89	0
+119	89	0
+120	89	0
+121	89	0
+122	89	0
+123	89	0
+124	89	0
+125	89	0
+126	89	0
+127	89	0
+128	89	0
+129	89	0
+130	89	0
+131	89	0
+132	89	0
+133	89	0
+134	89	0
+135	89	0
+136	89	0
+137	89	0
+138	89	0
+139	89	0
+140	89	0
+141	89	0
+142	89	0
+143	89	0
+144	89	0
+145	89	0
+146	89	0
+147	89	0
+148	89	0
+149	89	0
+150	89	0
+151	89	0
+152	89	0
+153	89	0
+154	89	0
+155	89	0
+156	89	0
+157	89	0
+158	89	0
+159	89	0
+160	89	0
+161	89	0
+162	89	0
+163	89	0
+164	89	0
+165	89	0
+166	89	0
+167	89	0
+168	89	0
+169	89	0
+170	89	0
+171	89	0
+172	89	0
+173	89	0
+174	89	0
+175	89	0
+176	89	0
+177	89	0
+178	89	0
+179	89	0
+180	89	0
+181	89	0
+182	89	0
+183	89	0
+184	89	0
+185	89	0
+186	89	0
+187	89	0
+188	89	0
+189	89	0
+190	89	0
+191	89	0
+192	89	0
+193	89	0
+194	89	0
+195	89	0
+196	89	0
+197	89	0
+198	89	0
+199	89	0
+200	89	0
+201	89	0
+202	89	0
+203	89	0
+204	89	0
+205	89	0
+206	89	0
+207	89	0
+208	89	0
+209	89	0
+210	89	0
+211	89	0
+212	89	0
+213	89	0
+214	89	0
+215	89	0
+216	89	0
+217	89	0
+218	89	0
+219	89	0
+220	89	0
+221	89	0
+222	89	0
+223	89	0
+224	89	0
+225	89	0
+226	89	0
+227	89	0
+228	89	0
+229	89	0
+230	89	0
+231	89	0
+232	89	0
+233	89	0
+234	89	0
+235	89	0
+236	89	0
+237	89	0
+238	89	0
+239	89	0
+240	89	0
+241	89	0
+242	89	0
+243	89	0
+244	89	0
+245	89	0
+246	89	0
+247	89	0
+248	89	0
+249	89	0
+250	89	0
+251	89	0
+252	89	0
+253	89	0
+254	89	0
+255	89	0
+256	89	0
+257	89	0
+258	89	0
+259	89	0
+260	89	0
+261	89	0
+262	89	0
+263	89	0
+264	89	0
+265	89	0
+266	89	0
+267	89	0
+268	89	0
+269	89	0
+270	89	0
+271	89	0
+272	89	0
+273	89	0
+274	89	0
+275	89	0
+276	89	0
+277	89	0
+278	89	0
+279	89	0
+280	89	0
+281	89	0
+282	89	0
+283	89	0
+284	89	0
+285	89	0
+286	89	0
+287	89	0
+288	89	0
+289	89	0
+290	89	0
+291	89	0
+292	89	0
+293	89	0
+294	89	0
+295	89	0
+296	89	0
+297	89	0
+298	89	0
+299	89	0
+300	89	0
+301	89	0
+302	89	0
+303	89	0
+304	89	0
+305	89	0
+306	89	0
+307	89	0
+308	89	0
+309	89	0
+310	89	0
+311	89	0
+312	89	0
+313	89	0
+314	89	0
+315	89	0
+316	89	0
+317	89	0
+318	89	0
+319	89	0
+320	89	0
+321	89	0
+322	89	0
+323	89	0
+324	89	0
+325	89	0
+326	89	0
+327	89	0
+328	89	0
+329	89	0
+330	89	0
+331	89	0
+332	89	0
+333	89	0
+334	89	0
+335	89	0
+336	89	0
+337	89	0
+338	89	0
+339	89	0
+340	89	0
+341	89	0
+342	89	0
+343	89	0
+344	89	0
+345	89	0
+346	89	0
+347	89	0
+348	89	0
+349	89	0
+350	89	0
+351	89	0
+352	89	0
+353	89	0
+354	89	0
+355	89	0
+356	89	0
+357	89	0
+358	89	0
+359	89	0
+360	89	0
+0	89.5	0
+1	89.5	0
+2	89.5	0
+3	89.5	0
+4	89.5	0
+5	89.5	0
+6	89.5	0
+7	89.5	0
+8	89.5	0
+9	89.5	0
+10	89.5	0
+11	89.5	0
+12	89.5	0
+13	89.5	0
+14	89.5	0
+15	89.5	0
+16	89.5	0
+17	89.5	0
+18	89.5	0
+19	89.5	0
+20	89.5	0
+21	89.5	0
+22	89.5	0
+23	89.5	0
+24	89.5	0
+25	89.5	0
+26	89.5	0
+27	89.5	0
+28	89.5	0
+29	89.5	0
+30	89.5	0
+31	89.5	0
+32	89.5	0
+33	89.5	0
+34	89.5	0
+35	89.5	0
+36	89.5	0
+37	89.5	0
+38	89.5	0
+39	89.5	0
+40	89.5	0
+41	89.5	0
+42	89.5	0
+43	89.5	0
+44	89.5	0
+45	89.5	0
+46	89.5	0
+47	89.5	0
+48	89.5	0
+49	89.5	0
+50	89.5	0
+51	89.5	0
+52	89.5	0
+53	89.5	0
+54	89.5	0
+55	89.5	0
+56	89.5	0
+57	89.5	0
+58	89.5	0
+59	89.5	0
+60	89.5	0
+61	89.5	0
+62	89.5	0
+63	89.5	0
+64	89.5	0
+65	89.5	0
+66	89.5	0
+67	89.5	0
+68	89.5	0
+69	89.5	0
+70	89.5	0
+71	89.5	0
+72	89.5	0
+73	89.5	0
+74	89.5	0
+75	89.5	0
+76	89.5	0
+77	89.5	0
+78	89.5	0
+79	89.5	0
+80	89.5	0
+81	89.5	0
+82	89.5	0
+83	89.5	0
+84	89.5	0
+85	89.5	0
+86	89.5	0
+87	89.5	0
+88	89.5	0
+89	89.5	0
+90	89.5	0
+91	89.5	0
+92	89.5	0
+93	89.5	0
+94	89.5	0
+95	89.5	0
+96	89.5	0
+97	89.5	0
+98	89.5	0
+99	89.5	0
+100	89.5	0
+101	89.5	0
+102	89.5	0
+103	89.5	0
+104	89.5	0
+105	89.5	0
+106	89.5	0
+107	89.5	0
+108	89.5	0
+109	89.5	0
+110	89.5	0
+111	89.5	0
+112	89.5	0
+113	89.5	0
+114	89.5	0
+115	89.5	0
+116	89.5	0
+117	89.5	0
+118	89.5	0
+119	89.5	0
+120	89.5	0
+121	89.5	0
+122	89.5	0
+123	89.5	0
+124	89.5	0
+125	89.5	0
+126	89.5	0
+127	89.5	0
+128	89.5	0
+129	89.5	0
+130	89.5	0
+131	89.5	0
+132	89.5	0
+133	89.5	0
+134	89.5	0
+135	89.5	0
+136	89.5	0
+137	89.5	0
+138	89.5	0
+139	89.5	0
+140	89.5	0
+141	89.5	0
+142	89.5	0
+143	89.5	0
+144	89.5	0
+145	89.5	0
+146	89.5	0
+147	89.5	0
+148	89.5	0
+149	89.5	0
+150	89.5	0
+151	89.5	0
+152	89.5	0
+153	89.5	0
+154	89.5	0
+155	89.5	0
+156	89.5	0
+157	89.5	0
+158	89.5	0
+159	89.5	0
+160	89.5	0
+161	89.5	0
+162	89.5	0
+163	89.5	0
+164	89.5	0
+165	89.5	0
+166	89.5	0
+167	89.5	0
+168	89.5	0
+169	89.5	0
+170	89.5	0
+171	89.5	0
+172	89.5	0
+173	89.5	0
+174	89.5	0
+175	89.5	0
+176	89.5	0
+177	89.5	0
+178	89.5	0
+179	89.5	0
+180	89.5	0
+181	89.5	0
+182	89.5	0
+183	89.5	0
+184	89.5	0
+185	89.5	0
+186	89.5	0
+187	89.5	0
+188	89.5	0
+189	89.5	0
+190	89.5	0
+191	89.5	0
+192	89.5	0
+193	89.5	0
+194	89.5	0
+195	89.5	0
+196	89.5	0
+197	89.5	0
+198	89.5	0
+199	89.5	0
+200	89.5	0
+201	89.5	0
+202	89.5	0
+203	89.5	0
+204	89.5	0
+205	89.5	0
+206	89.5	0
+207	89.5	0
+208	89.5	0
+209	89.5	0
+210	89.5	0
+211	89.5	0
+212	89.5	0
+213	89.5	0
+214	89.5	0
+215	89.5	0
+216	89.5	0
+217	89.5	0
+218	89.5	0
+219	89.5	0
+220	89.5	0
+221	89.5	0
+222	89.5	0
+223	89.5	0
+224	89.5	0
+225	89.5	0
+226	89.5	0
+227	89.5	0
+228	89.5	0
+229	89.5	0
+230	89.5	0
+231	89.5	0
+232	89.5	0
+233	89.5	0
+234	89.5	0
+235	89.5	0
+236	89.5	0
+237	89.5	0
+238	89.5	0
+239	89.5	0
+240	89.5	0
+241	89.5	0
+242	89.5	0
+243	89.5	0
+244	89.5	0
+245	89.5	0
+246	89.5	0
+247	89.5	0
+248	89.5	0
+249	89.5	0
+250	89.5	0
+251	89.5	0
+252	89.5	0
+253	89.5	0
+254	89.5	0
+255	89.5	0
+256	89.5	0
+257	89.5	0
+258	89.5	0
+259	89.5	0
+260	89.5	0
+261	89.5	0
+262	89.5	0
+263	89.5	0
+264	89.5	0
+265	89.5	0
+266	89.5	0
+267	89.5	0
+268	89.5	0
+269	89.5	0
+270	89.5	0
+271	89.5	0
+272	89.5	0
+273	89.5	0
+274	89.5	0
+275	89.5	0
+276	89.5	0
+277	89.5	0
+278	89.5	0
+279	89.5	0
+280	89.5	0
+281	89.5	0
+282	89.5	0
+283	89.5	0
+284	89.5	0
+285	89.5	0
+286	89.5	0
+287	89.5	0
+288	89.5	0
+289	89.5	0
+290	89.5	0
+291	89.5	0
+292	89.5	0
+293	89.5	0
+294	89.5	0
+295	89.5	0
+296	89.5	0
+297	89.5	0
+298	89.5	0
+299	89.5	0
+300	89.5	0
+301	89.5	0
+302	89.5	0
+303	89.5	0
+304	89.5	0
+305	89.5	0
+306	89.5	0
+307	89.5	0
+308	89.5	0
+309	89.5	0
+310	89.5	0
+311	89.5	0
+312	89.5	0
+313	89.5	0
+314	89.5	0
+315	89.5	0
+316	89.5	0
+317	89.5	0
+318	89.5	0
+319	89.5	0
+320	89.5	0
+321	89.5	0
+322	89.5	0
+323	89.5	0
+324	89.5	0
+325	89.5	0
+326	89.5	0
+327	89.5	0
+328	89.5	0
+329	89.5	0
+330	89.5	0
+331	89.5	0
+332	89.5	0
+333	89.5	0
+334	89.5	0
+335	89.5	0
+336	89.5	0
+337	89.5	0
+338	89.5	0
+339	89.5	0
+340	89.5	0
+341	89.5	0
+342	89.5	0
+343	89.5	0
+344	89.5	0
+345	89.5	0
+346	89.5	0
+347	89.5	0
+348	89.5	0
+349	89.5	0
+350	89.5	0
+351	89.5	0
+352	89.5	0
+353	89.5	0
+354	89.5	0
+355	89.5	0
+356	89.5	0
+357	89.5	0
+358	89.5	0
+359	89.5	0
+360	89.5	0
+0	90	0
+1	90	0
+2	90	0
+3	90	0
+4	90	0
+5	90	0
+6	90	0
+7	90	0
+8	90	0
+9	90	0
+10	90	0
+11	90	0
+12	90	0
+13	90	0
+14	90	0
+15	90	0
+16	90	0
+17	90	0
+18	90	0
+19	90	0
+20	90	0
+21	90	0
+22	90	0
+23	90	0
+24	90	0
+25	90	0
+26	90	0
+27	90	0
+28	90	0
+29	90	0
+30	90	0
+31	90	0
+32	90	0
+33	90	0
+34	90	0
+35	90	0
+36	90	0
+37	90	0
+38	90	0
+39	90	0
+40	90	0
+41	90	0
+42	90	0
+43	90	0
+44	90	0
+45	90	0
+46	90	0
+47	90	0
+48	90	0
+49	90	0
+50	90	0
+51	90	0
+52	90	0
+53	90	0
+54	90	0
+55	90	0
+56	90	0
+57	90	0
+58	90	0
+59	90	0
+60	90	0
+61	90	0
+62	90	0
+63	90	0
+64	90	0
+65	90	0
+66	90	0
+67	90	0
+68	90	0
+69	90	0
+70	90	0
+71	90	0
+72	90	0
+73	90	0
+74	90	0
+75	90	0
+76	90	0
+77	90	0
+78	90	0
+79	90	0
+80	90	0
+81	90	0
+82	90	0
+83	90	0
+84	90	0
+85	90	0
+86	90	0
+87	90	0
+88	90	0
+89	90	0
+90	90	0
+91	90	0
+92	90	0
+93	90	0
+94	90	0
+95	90	0
+96	90	0
+97	90	0
+98	90	0
+99	90	0
+100	90	0
+101	90	0
+102	90	0
+103	90	0
+104	90	0
+105	90	0
+106	90	0
+107	90	0
+108	90	0
+109	90	0
+110	90	0
+111	90	0
+112	90	0
+113	90	0
+114	90	0
+115	90	0
+116	90	0
+117	90	0
+118	90	0
+119	90	0
+120	90	0
+121	90	0
+122	90	0
+123	90	0
+124	90	0
+125	90	0
+126	90	0
+127	90	0
+128	90	0
+129	90	0
+130	90	0
+131	90	0
+132	90	0
+133	90	0
+134	90	0
+135	90	0
+136	90	0
+137	90	0
+138	90	0
+139	90	0
+140	90	0
+141	90	0
+142	90	0
+143	90	0
+144	90	0
+145	90	0
+146	90	0
+147	90	0
+148	90	0
+149	90	0
+150	90	0
+151	90	0
+152	90	0
+153	90	0
+154	90	0
+155	90	0
+156	90	0
+157	90	0
+158	90	0
+159	90	0
+160	90	0
+161	90	0
+162	90	0
+163	90	0
+164	90	0
+165	90	0
+166	90	0
+167	90	0
+168	90	0
+169	90	0
+170	90	0
+171	90	0
+172	90	0
+173	90	0
+174	90	0
+175	90	0
+176	90	0
+177	90	0
+178	90	0
+179	90	0
+180	90	0
+181	90	0
+182	90	0
+183	90	0
+184	90	0
+185	90	0
+186	90	0
+187	90	0
+188	90	0
+189	90	0
+190	90	0
+191	90	0
+192	90	0
+193	90	0
+194	90	0
+195	90	0
+196	90	0
+197	90	0
+198	90	0
+199	90	0
+200	90	0
+201	90	0
+202	90	0
+203	90	0
+204	90	0
+205	90	0
+206	90	0
+207	90	0
+208	90	0
+209	90	0
+210	90	0
+211	90	0
+212	90	0
+213	90	0
+214	90	0
+215	90	0
+216	90	0
+217	90	0
+218	90	0
+219	90	0
+220	90	0
+221	90	0
+222	90	0
+223	90	0
+224	90	0
+225	90	0
+226	90	0
+227	90	0
+228	90	0
+229	90	0
+230	90	0
+231	90	0
+232	90	0
+233	90	0
+234	90	0
+235	90	0
+236	90	0
+237	90	0
+238	90	0
+239	90	0
+240	90	0
+241	90	0
+242	90	0
+243	90	0
+244	90	0
+245	90	0
+246	90	0
+247	90	0
+248	90	0
+249	90	0
+250	90	0
+251	90	0
+252	90	0
+253	90	0
+254	90	0
+255	90	0
+256	90	0
+257	90	0
+258	90	0
+259	90	0
+260	90	0
+261	90	0
+262	90	0
+263	90	0
+264	90	0
+265	90	0
+266	90	0
+267	90	0
+268	90	0
+269	90	0
+270	90	0
+271	90	0
+272	90	0
+273	90	0
+274	90	0
+275	90	0
+276	90	0
+277	90	0
+278	90	0
+279	90	0
+280	90	0
+281	90	0
+282	90	0
+283	90	0
+284	90	0
+285	90	0
+286	90	0
+287	90	0
+288	90	0
+289	90	0
+290	90	0
+291	90	0
+292	90	0
+293	90	0
+294	90	0
+295	90	0
+296	90	0
+297	90	0
+298	90	0
+299	90	0
+300	90	0
+301	90	0
+302	90	0
+303	90	0
+304	90	0
+305	90	0
+306	90	0
+307	90	0
+308	90	0
+309	90	0
+310	90	0
+311	90	0
+312	90	0
+313	90	0
+314	90	0
+315	90	0
+316	90	0
+317	90	0
+318	90	0
+319	90	0
+320	90	0
+321	90	0
+322	90	0
+323	90	0
+324	90	0
+325	90	0
+326	90	0
+327	90	0
+328	90	0
+329	90	0
+330	90	0
+331	90	0
+332	90	0
+333	90	0
+334	90	0
+335	90	0
+336	90	0
+337	90	0
+338	90	0
+339	90	0
+340	90	0
+341	90	0
+342	90	0
+343	90	0
+344	90	0
+345	90	0
+346	90	0
+347	90	0
+348	90	0
+349	90	0
+350	90	0
+351	90	0
+352	90	0
+353	90	0
+354	90	0
+355	90	0
+356	90	0
+357	90	0
+358	90	0
+359	90	0
+360	90	0
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/GLA_delH_trend_15regions.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/GLA_delH_trend_15regions.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/GLA_delH_trend_15regions.txt	(revision 27955)
@@ -0,0 +1,260281 @@
+0	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.39832	0
+289.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.48044	0
+290	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-3.282	0
+290.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.9641	0
+291	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.38993	0
+291.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	-4.1562	0
+289.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	-4.7747	0
+290	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	-5.7605	0
+290.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	-5.7767	0
+291	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	-3.5407	0
+291.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.4887	0
+292	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.14086	0
+292.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.9342	0
+289	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-6.0562	0
+289.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-5.7543	0
+290	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-4.2994	0
+290.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-4.8728	0
+291	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-4.2227	0
+291.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-4.7874	0
+292	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.7422	0
+287.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	-4.5715	0
+288	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.69489	0
+289	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	-4.0563	0
+289.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	-3.393	0
+290	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.33755	0
+291.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.37443	0
+286	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-3.8567	0
+286.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.46269	0
+287	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-6.7401	0
+287.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-5.5931	0
+288	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	-5.549	0
+286.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.52204	0
+287	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	-5.6323	0
+287.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	-7.9926	0
+288	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.339	0
+288.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.5842	0
+286.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.6948	0
+287	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-8.2956	0
+287.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-7.0458	0
+288	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.5108	0
+288.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	-7.067	0
+287	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	-6.8223	0
+287.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.3848	0
+288	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.1023	0
+288.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.3794	0
+285.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.7049	0
+286	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.3412	0
+286.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-10.75	0
+287	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-8.535	0
+287.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.42123	0
+288	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	-3.761	0
+285.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	-8.2303	0
+286	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	-4.8309	0
+286.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	-11.796	0
+287	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	-11.851	0
+287.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	-9.1535	0
+288	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	-5.2783	0
+288.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.12605	0
+285.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-12.347	0
+286	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-11.621	0
+286.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-12.735	0
+287	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-12.896	0
+287.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-8.5901	0
+288	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-10.869	0
+288.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	-11.43	0
+286	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	-13.331	0
+286.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	-13.525	0
+287	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	-13.71	0
+287.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.9673	0
+288	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.6994	0
+288.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.56318	0
+285.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-11.596	0
+286	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-13.93	0
+286.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-14.119	0
+287	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-14.377	0
+287.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.9568	0
+288	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.2702	0
+285.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	-7.7578	0
+286	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	-14.309	0
+286.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	-14.602	0
+287	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	-14.842	0
+287.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	-9.766	0
+288	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.3165	0
+286	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-14.365	0
+286.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-14.857	0
+287	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-15.239	0
+287.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-15.478	0
+288	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-3.5443	0
+288.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	-8.861	0
+286.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	-14.862	0
+287	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	-15.226	0
+287.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	-15.445	0
+288	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	-14.401	0
+288.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.63569	0
+289	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-8.5145	0
+286.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-14.411	0
+287	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-14.798	0
+287.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-14.79	0
+288	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-4.7566	0
+288.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.2545	0
+286	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	-12.404	0
+286.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	-13.937	0
+287	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	-14.344	0
+287.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.036378	0
+288	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	-6.6695	0
+288.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-4.4249	0
+286.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-13.259	0
+287	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-13.771	0
+287.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-6.9504	0
+288	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-12.597	0
+288.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	-7.4921	0
+287	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	-12.577	0
+287.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	-12.424	0
+288	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	-5.6508	0
+288.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-8.238	0
+287.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-6.0585	0
+288	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0.26854
+168	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1.095
+168.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0.56482
+169	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0.025258
+169.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.9257	0
+287.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	-6.907	0
+288	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	-4.2375	0
+288.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1.1027
+168.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1.3569
+169	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0.88649
+169.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0.16344
+171	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-5.9945	0
+288	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-8.4979	0
+288.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0.39926
+169	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1.2302
+169.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1.2679
+170.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0.84412
+171	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.5124	0
+287.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	-8.1254	0
+288	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	-8.1974	0
+288.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.5364	0
+289	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0.4833
+169.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0.32457
+170	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0.72728
+170.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1.1813
+171	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0.58382
+171.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-4.595	0
+287.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-7.1217	0
+288	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-7.189	0
+288.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.1867	0
+289	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0.37982
+170.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0.8609
+171	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1.2121
+171.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.4561	0
+287.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	-6.2345	0
+288	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	-6.6048	0
+288.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.519	0
+289	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0.13549
+171.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.5167	0
+288	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-6.223	0
+288.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.5271	0
+289	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.5294	0
+288	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	-5.8646	0
+288.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.2373	0
+289	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-5.6159	0
+288.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.86567	0
+289	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	-3.8577	0
+288.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.173	0
+289	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.84831	0
+288.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.4225	0
+289	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.33363	0
+288	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.6321	0
+288.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.8621	0
+289	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-5.8501	0
+288.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-3.0634	0
+289	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	-6.0702	0
+289	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.79184	0
+288.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-7.6292	0
+289	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.3782	0
+289.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	-7.8113	0
+289	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	-3.1067	0
+289.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-4.3179	0
+289	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-3.0029	0
+290	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	-5.2403	0
+290	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.4527	0
+290.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.464	0
+290	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.28601	0
+290.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	-4.358	0
+289.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-8.4186	0
+289.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-4.6773	0
+290	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	-3.1016	0
+289.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	-11.284	0
+290	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	-10.764	0
+290.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.40765	0
+289.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-5.8837	0
+290	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-11.627	0
+290.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.202	0
+291	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.0781	0
+290	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	-11.374	0
+290.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	-11.052	0
+291	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.5872	0
+290	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-10.674	0
+290.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-3.653	0
+291	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	-4.1567	0
+290	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	-9.736	0
+290.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.87855	0
+291	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-3.4305	0
+290	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-8.9864	0
+290.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-6.6499	0
+291	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.6099	0
+290	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	-8.4064	0
+290.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	-5.4126	0
+291	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.4685	0
+290	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-6.1021	0
+290.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.80798	0
+291	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.05305	0
+290	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-3.4233	0
+290.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.0647	0
+290.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.28257	0
+291.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.21865	0
+292	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.8343	0
+291	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.5832	0
+291.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.0623	0
+292	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.33744	0
+291	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.2089	0
+291.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	-2.3758	0
+292	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.73171	0
+291.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	-1.9853	0
+292	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	-0.31598	0
+291.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-24	0	0	0	0	0	0	0	0	0	0	0	0	0.33789	0	0
+292.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	1.3122	0	0
+292.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0.48406	0	0
+293	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-23	0	0	0	0	0	0	0	0	0	0	0	0	1.7462	0	0
+292.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	1.2502	0	0
+293	-23	0	0	0	0	0	0	0	0	0	0	0	0	0.01624	0	0
+293.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	1.7079	0	0
+292.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0.69641	0	0
+293	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	1.0336	0	0
+292	-22	0	0	0	0	0	0	0	0	0	0	0	0	1.4676	0	0
+292.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0.12934	0	0
+293	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	1.2772	0	0
+292	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0.59868	0	0
+292.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0.19352	0	0
+293	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0.3109	0	0
+292	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0.030829	0	0
+290.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0.19027	0	0
+291	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-18	0	0	0	0	0	0	0	0	0	0	0	0	0.40919	0	0
+290.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0.2994	0	0
+291	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0.36172	0	0
+290.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0.40375	0	0
+291	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0.32629	0	0
+290	-17	0	0	0	0	0	0	0	0	0	0	0	0	0.56207	0	0
+290.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0.020134	0	0
+290	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	1.2345	0	0
+290.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0.34224	0	0
+291	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0.11302	0	0
+292	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0.65326	0	0
+288	-16	0	0	0	0	0	0	0	0	0	0	0	0	0.64391	0	0
+288.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-16	0	0	0	0	0	0	0	0	0	0	0	0	0.069754	0	0
+289.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0.65239	0	0
+290	-16	0	0	0	0	0	0	0	0	0	0	0	0	0.47216	0	0
+290.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-16	0	0	0	0	0	0	0	0	0	0	0	0	0.12353	0	0
+291.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0.94152	0	0
+292	-16	0	0	0	0	0	0	0	0	0	0	0	0	0.2534	0	0
+292.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0.11208	0	0
+287.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0.77434	0	0
+288	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0.96712	0	0
+288.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0.14038	0	0
+289	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0.84021	0	0
+289.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0.67499	0	0
+291.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0.77564	0	0
+292	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-15	0	0	0	0	0	0	0	0	0	0	0	0	0.13945	0	0
+287.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	1.2397	0	0
+288	-15	0	0	0	0	0	0	0	0	0	0	0	0	0.69609	0	0
+288.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0.13722	0	0
+289	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0.10035	0	0
+290	-15	0	0	0	0	0	0	0	0	0	0	0	0	1.207	0	0
+290.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	1.1864	0	0
+291	-15	0	0	0	0	0	0	0	0	0	0	0	0	0.92858	0	0
+291.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0.24607	0	0
+287.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0.80021	0	0
+288	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0.72047	0	0
+288.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0.058453	0	0
+290.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0.58163	0	0
+291	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0.247	0	0
+291.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	1.0862	0	0
+289	-14	0	0	0	0	0	0	0	0	0	0	0	0	1.0743	0	0
+289.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0.71705	0	0
+290	-14	0	0	0	0	0	0	0	0	0	0	0	0	0.29047	0	0
+290.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0.27751	0	0
+287.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0.56916	0	0
+288	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0.70254	0	0
+288.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0.72982	0	0
+289.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0.73239	0	0
+290	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0.18941	0	0
+290.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-13	0	0	0	0	0	0	0	0	0	0	0	0	1.289	0	0
+287.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	1.4266	0	0
+288	-13	0	0	0	0	0	0	0	0	0	0	0	0	1.1082	0	0
+288.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0.34189	0	0
+284.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0.84272	0	0
+285	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0.998	0	0
+287.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	1.001	0	0
+288	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0.48386	0	0
+288.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-12	0	0	0	0	0	0	0	0	0	0	0	0	1.5627	0	0
+284.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-12	0	0	0	0	0	0	0	0	0	0	0	0	0.47618	0	0
+287.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0.4667	0	0
+288	-12	0	0	0	0	0	0	0	0	0	0	0	0	0.18105	0	0
+288.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	1.3862	0	0
+284	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0.44319	0	0
+284.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	1.5927	0	0
+284	-11	0	0	0	0	0	0	0	0	0	0	0	0	0.54848	0	0
+284.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0.71694	0	0
+283.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	1.5129	0	0
+284	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-10	0	0	0	0	0	0	0	0	0	0	0	0	1.2727	0	0
+283.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0.1215	0	0
+283	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	1.5848	0	0
+283	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0.54508	0	0
+283	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	-0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	0.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	1.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	2	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	2.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	3	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	3.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	4	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	4.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	5.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	6	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	6.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	7	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	7.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	8	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	8.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	9	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	9.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	10	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	10.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	11	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	11.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	12	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	12.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	13	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	13.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	14	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	14.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	15	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	15.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	16	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	16.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	17	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	18	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	18.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	19	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	19.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	20	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	20.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	21	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	21.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	22	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	22.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	23	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	23.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	24	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	24.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	25	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	25.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	26	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	26.5	0	0	0	0	0	0	0	0	0	0	0	-0.85118	0	0	0
+96.5	26.5	0	0	0	0	0	0	0	0	0	0	0	-0.73597	0	0	0
+97	26.5	0	0	0	0	0	0	0	0	0	0	0	-0.62075	0	0	0
+97.5	26.5	0	0	0	0	0	0	0	0	0	0	0	-0.3799	0	0	0
+98	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	26.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	27	0	0	0	0	0	0	0	0	0	0	0	-0.24735	0	0	0
+86	27	0	0	0	0	0	0	0	0	0	0	0	-0.46609	0	0	0
+86.5	27	0	0	0	0	0	0	0	0	0	0	0	-0.20767	0	0	0
+87	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	27	0	0	0	0	0	0	0	0	0	0	0	-0.86411	0	0	0
+89.5	27	0	0	0	0	0	0	0	0	0	0	0	-0.01294	0	0	0
+90	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	27	0	0	0	0	0	0	0	0	0	0	0	-0.3117	0	0	0
+91	27	0	0	0	0	0	0	0	0	0	0	0	-1.2264	0	0	0
+91.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	27	0	0	0	0	0	0	0	0	0	0	0	-1.193	0	0	0
+96.5	27	0	0	0	0	0	0	0	0	0	0	0	-1.9071	0	0	0
+97	27	0	0	0	0	0	0	0	0	0	0	0	-1.7919	0	0	0
+97.5	27	0	0	0	0	0	0	0	0	0	0	0	-0.90283	0	0	0
+98	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	27	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	27.5	0	0	0	0	0	0	0	0	0	0	0	-0.0023521	0	0	0
+85.5	27.5	0	0	0	0	0	0	0	0	0	0	0	-1.197	0	0	0
+86	27.5	0	0	0	0	0	0	0	0	0	0	0	-1.3947	0	0	0
+86.5	27.5	0	0	0	0	0	0	0	0	0	0	0	-1.1082	0	0	0
+87	27.5	0	0	0	0	0	0	0	0	0	0	0	-0.60308	0	0	0
+87.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	27.5	0	0	0	0	0	0	0	0	0	0	0	-2.2765	0	0	0
+89	27.5	0	0	0	0	0	0	0	0	0	0	0	-0.81874	0	0	0
+89.5	27.5	0	0	0	0	0	0	0	0	0	0	0	-3.0972	0	0	0
+90	27.5	0	0	0	0	0	0	0	0	0	0	0	-2.8099	0	0	0
+90.5	27.5	0	0	0	0	0	0	0	0	0	0	0	-3.3966	0	0	0
+91	27.5	0	0	0	0	0	0	0	0	0	0	0	-2.8697	0	0	0
+91.5	27.5	0	0	0	0	0	0	0	0	0	0	0	-1.7525	0	0	0
+92	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	27.5	0	0	0	0	0	0	0	0	0	0	0	-1.0377	0	0	0
+94	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	27.5	0	0	0	0	0	0	0	0	0	0	0	-1.5327	0	0	0
+96.5	27.5	0	0	0	0	0	0	0	0	0	0	0	-3.0783	0	0	0
+97	27.5	0	0	0	0	0	0	0	0	0	0	0	-2.9631	0	0	0
+97.5	27.5	0	0	0	0	0	0	0	0	0	0	0	-1.4258	0	0	0
+98	27.5	0	0	0	0	0	0	0	0	0	0	0	-0.041151	0	0	0
+98.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	27.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	28	0	0	0	0	0	0	0	0	0	0	0	-0.54127	0	0	0
+85.5	28	0	0	0	0	0	0	0	0	0	0	0	-1.935	0	0	0
+86	28	0	0	0	0	0	0	0	0	0	0	0	-2.2877	0	0	0
+86.5	28	0	0	0	0	0	0	0	0	0	0	0	-2.1667	0	0	0
+87	28	0	0	0	0	0	0	0	0	0	0	0	-1.9509	0	0	0
+87.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	28	0	0	0	0	0	0	0	0	0	0	0	-0.12147	0	0	0
+88.5	28	0	0	0	0	0	0	0	0	0	0	0	-2.7347	0	0	0
+89	28	0	0	0	0	0	0	0	0	0	0	0	-0.77338	0	0	0
+89.5	28	0	0	0	0	0	0	0	0	0	0	0	-4.3096	0	0	0
+90	28	0	0	0	0	0	0	0	0	0	0	0	-3.1312	0	0	0
+90.5	28	0	0	0	0	0	0	0	0	0	0	0	-4.2692	0	0	0
+91	28	0	0	0	0	0	0	0	0	0	0	0	-4.3718	0	0	0
+91.5	28	0	0	0	0	0	0	0	0	0	0	0	-3.0087	0	0	0
+92	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	28	0	0	0	0	0	0	0	0	0	0	0	-0.16443	0	0	0
+93.5	28	0	0	0	0	0	0	0	0	0	0	0	-1.8875	0	0	0
+94	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	28	0	0	0	0	0	0	0	0	0	0	0	-0.32263	0	0	0
+96	28	0	0	0	0	0	0	0	0	0	0	0	-1.8724	0	0	0
+96.5	28	0	0	0	0	0	0	0	0	0	0	0	-3.4222	0	0	0
+97	28	0	0	0	0	0	0	0	0	0	0	0	-3.5645	0	0	0
+97.5	28	0	0	0	0	0	0	0	0	0	0	0	-2.0832	0	0	0
+98	28	0	0	0	0	0	0	0	0	0	0	0	-1.3788	0	0	0
+98.5	28	0	0	0	0	0	0	0	0	0	0	0	-0.25602	0	0	0
+99	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	28	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	28.5	0	0	0	0	0	0	0	0	0	0	0	-0.39656	0	0	0
+83.5	28.5	0	0	0	0	0	0	0	0	0	0	0	-1.0775	0	0	0
+84	28.5	0	0	0	0	0	0	0	0	0	0	0	-0.83888	0	0	0
+84.5	28.5	0	0	0	0	0	0	0	0	0	0	0	-1.5687	0	0	0
+85	28.5	0	0	0	0	0	0	0	0	0	0	0	-1.7013	0	0	0
+85.5	28.5	0	0	0	0	0	0	0	0	0	0	0	-2.2509	0	0	0
+86	28.5	0	0	0	0	0	0	0	0	0	0	0	-2.2843	0	0	0
+86.5	28.5	0	0	0	0	0	0	0	0	0	0	0	-0.78536	0	0	0
+87	28.5	0	0	0	0	0	0	0	0	0	0	0	-1.0089	0	0	0
+87.5	28.5	0	0	0	0	0	0	0	0	0	0	0	-0.62247	0	0	0
+88	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	28.5	0	0	0	0	0	0	0	0	0	0	0	-0.82546	0	0	0
+89	28.5	0	0	0	0	0	0	0	0	0	0	0	-0.38699	0	0	0
+89.5	28.5	0	0	0	0	0	0	0	0	0	0	0	-1.685	0	0	0
+90	28.5	0	0	0	0	0	0	0	0	0	0	0	-0.21554	0	0	0
+90.5	28.5	0	0	0	0	0	0	0	0	0	0	0	-1.6712	0	0	0
+91	28.5	0	0	0	0	0	0	0	0	0	0	0	-2.6966	0	0	0
+91.5	28.5	0	0	0	0	0	0	0	0	0	0	0	-1.9972	0	0	0
+92	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	28.5	0	0	0	0	0	0	0	0	0	0	0	-0.22805	0	0	0
+93	28.5	0	0	0	0	0	0	0	0	0	0	0	-1.0142	0	0	0
+93.5	28.5	0	0	0	0	0	0	0	0	0	0	0	-2.7373	0	0	0
+94	28.5	0	0	0	0	0	0	0	0	0	0	0	-0.56082	0	0	0
+94.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	28.5	0	0	0	0	0	0	0	0	0	0	0	-0.074279	0	0	0
+96	28.5	0	0	0	0	0	0	0	0	0	0	0	-3.0105	0	0	0
+96.5	28.5	0	0	0	0	0	0	0	0	0	0	0	-4.474	0	0	0
+97	28.5	0	0	0	0	0	0	0	0	0	0	0	-4.2564	0	0	0
+97.5	28.5	0	0	0	0	0	0	0	0	0	0	0	-3.2941	0	0	0
+98	28.5	0	0	0	0	0	0	0	0	0	0	0	-2.6835	0	0	0
+98.5	28.5	0	0	0	0	0	0	0	0	0	0	0	-1.5937	0	0	0
+99	28.5	0	0	0	0	0	0	0	0	0	0	0	-1.13	0	0	0
+99.5	28.5	0	0	0	0	0	0	0	0	0	0	0	-0.72548	0	0	0
+100	28.5	0	0	0	0	0	0	0	0	0	0	0	-0.16939	0	0	0
+100.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	28.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	29	0	0	0	0	0	0	0	0	0	0	0	-0.74405	0	0	0
+82.5	29	0	0	0	0	0	0	0	0	0	0	0	-1.6744	0	0	0
+83	29	0	0	0	0	0	0	0	0	0	0	0	-1.7511	0	0	0
+83.5	29	0	0	0	0	0	0	0	0	0	0	0	-2.244	0	0	0
+84	29	0	0	0	0	0	0	0	0	0	0	0	-1.8304	0	0	0
+84.5	29	0	0	0	0	0	0	0	0	0	0	0	-1.692	0	0	0
+85	29	0	0	0	0	0	0	0	0	0	0	0	-1.1131	0	0	0
+85.5	29	0	0	0	0	0	0	0	0	0	0	0	-0.87864	0	0	0
+86	29	0	0	0	0	0	0	0	0	0	0	0	-0.40236	0	0	0
+86.5	29	0	0	0	0	0	0	0	0	0	0	0	-1.1449	0	0	0
+87	29	0	0	0	0	0	0	0	0	0	0	0	-1.3738	0	0	0
+87.5	29	0	0	0	0	0	0	0	0	0	0	0	-1.8783	0	0	0
+88	29	0	0	0	0	0	0	0	0	0	0	0	-0.44983	0	0	0
+88.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	29	0	0	0	0	0	0	0	0	0	0	0	-1.6361	0	0	0
+90.5	29	0	0	0	0	0	0	0	0	0	0	0	-1.4212	0	0	0
+91	29	0	0	0	0	0	0	0	0	0	0	0	-0.68883	0	0	0
+91.5	29	0	0	0	0	0	0	0	0	0	0	0	-0.27176	0	0	0
+92	29	0	0	0	0	0	0	0	0	0	0	0	-0.63087	0	0	0
+92.5	29	0	0	0	0	0	0	0	0	0	0	0	-2.2394	0	0	0
+93	29	0	0	0	0	0	0	0	0	0	0	0	-4.2271	0	0	0
+93.5	29	0	0	0	0	0	0	0	0	0	0	0	-4.1067	0	0	0
+94	29	0	0	0	0	0	0	0	0	0	0	0	-1.8883	0	0	0
+94.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	29	0	0	0	0	0	0	0	0	0	0	0	-1.5805	0	0	0
+95.5	29	0	0	0	0	0	0	0	0	0	0	0	-0.22943	0	0	0
+96	29	0	0	0	0	0	0	0	0	0	0	0	-3.7077	0	0	0
+96.5	29	0	0	0	0	0	0	0	0	0	0	0	-4.5251	0	0	0
+97	29	0	0	0	0	0	0	0	0	0	0	0	-4.3069	0	0	0
+97.5	29	0	0	0	0	0	0	0	0	0	0	0	-2.9037	0	0	0
+98	29	0	0	0	0	0	0	0	0	0	0	0	-3.7301	0	0	0
+98.5	29	0	0	0	0	0	0	0	0	0	0	0	-3.106	0	0	0
+99	29	0	0	0	0	0	0	0	0	0	0	0	-2.1928	0	0	0
+99.5	29	0	0	0	0	0	0	0	0	0	0	0	-1.2797	0	0	0
+100	29	0	0	0	0	0	0	0	0	0	0	0	-0.36648	0	0	0
+100.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	29	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	29.5	0	0	0	0	0	0	0	0	0	0	0	-0.87242	0	0	0
+80.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	29.5	0	0	0	0	0	0	0	0	0	0	0	-0.67741	0	0	0
+81.5	29.5	0	0	0	0	0	0	0	0	0	0	0	-1.9439	0	0	0
+82	29.5	0	0	0	0	0	0	0	0	0	0	0	-3.34	0	0	0
+82.5	29.5	0	0	0	0	0	0	0	0	0	0	0	-3.2519	0	0	0
+83	29.5	0	0	0	0	0	0	0	0	0	0	0	-2.7998	0	0	0
+83.5	29.5	0	0	0	0	0	0	0	0	0	0	0	-1.2215	0	0	0
+84	29.5	0	0	0	0	0	0	0	0	0	0	0	-1.2688	0	0	0
+84.5	29.5	0	0	0	0	0	0	0	0	0	0	0	-1.659	0	0	0
+85	29.5	0	0	0	0	0	0	0	0	0	0	0	-0.56167	0	0	0
+85.5	29.5	0	0	0	0	0	0	0	0	0	0	0	-0.47795	0	0	0
+86	29.5	0	0	0	0	0	0	0	0	0	0	0	-0.36866	0	0	0
+86.5	29.5	0	0	0	0	0	0	0	0	0	0	0	-1.4298	0	0	0
+87	29.5	0	0	0	0	0	0	0	0	0	0	0	-1.7397	0	0	0
+87.5	29.5	0	0	0	0	0	0	0	0	0	0	0	-0.36245	0	0	0
+88	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	29.5	0	0	0	0	0	0	0	0	0	0	0	-0.81457	0	0	0
+89	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	29.5	0	0	0	0	0	0	0	0	0	0	0	-0.22073	0	0	0
+90	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	29.5	0	0	0	0	0	0	0	0	0	0	0	-0.068632	0	0	0
+91	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	29.5	0	0	0	0	0	0	0	0	0	0	0	-2.7037	0	0	0
+93	29.5	0	0	0	0	0	0	0	0	0	0	0	-3.8722	0	0	0
+93.5	29.5	0	0	0	0	0	0	0	0	0	0	0	-4.156	0	0	0
+94	29.5	0	0	0	0	0	0	0	0	0	0	0	-1.89	0	0	0
+94.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	29.5	0	0	0	0	0	0	0	0	0	0	0	-3.977	0	0	0
+95.5	29.5	0	0	0	0	0	0	0	0	0	0	0	-4.4304	0	0	0
+96	29.5	0	0	0	0	0	0	0	0	0	0	0	-4.476	0	0	0
+96.5	29.5	0	0	0	0	0	0	0	0	0	0	0	-4.5039	0	0	0
+97	29.5	0	0	0	0	0	0	0	0	0	0	0	-4.0112	0	0	0
+97.5	29.5	0	0	0	0	0	0	0	0	0	0	0	-1.4199	0	0	0
+98	29.5	0	0	0	0	0	0	0	0	0	0	0	-1.4435	0	0	0
+98.5	29.5	0	0	0	0	0	0	0	0	0	0	0	-3.1087	0	0	0
+99	29.5	0	0	0	0	0	0	0	0	0	0	0	-2.3866	0	0	0
+99.5	29.5	0	0	0	0	0	0	0	0	0	0	0	-1.4766	0	0	0
+100	29.5	0	0	0	0	0	0	0	0	0	0	0	-0.56358	0	0	0
+100.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	29.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	30	0	0	0	0	0	0	0	0	0	0	0	-0.36321	0	0	0
+79.5	30	0	0	0	0	0	0	0	0	0	0	0	-2.1879	0	0	0
+80	30	0	0	0	0	0	0	0	0	0	0	0	-3.7931	0	0	0
+80.5	30	0	0	0	0	0	0	0	0	0	0	0	-4.3608	0	0	0
+81	30	0	0	0	0	0	0	0	0	0	0	0	-4.4317	0	0	0
+81.5	30	0	0	0	0	0	0	0	0	0	0	0	-3.8485	0	0	0
+82	30	0	0	0	0	0	0	0	0	0	0	0	-3.4037	0	0	0
+82.5	30	0	0	0	0	0	0	0	0	0	0	0	-2.9968	0	0	0
+83	30	0	0	0	0	0	0	0	0	0	0	0	-1.4716	0	0	0
+83.5	30	0	0	0	0	0	0	0	0	0	0	0	-0.21006	0	0	0
+84	30	0	0	0	0	0	0	0	0	0	0	0	-0.14197	0	0	0
+84.5	30	0	0	0	0	0	0	0	0	0	0	0	-1.3867	0	0	0
+85	30	0	0	0	0	0	0	0	0	0	0	0	-1.2104	0	0	0
+85.5	30	0	0	0	0	0	0	0	0	0	0	0	-0.83969	0	0	0
+86	30	0	0	0	0	0	0	0	0	0	0	0	-0.98033	0	0	0
+86.5	30	0	0	0	0	0	0	0	0	0	0	0	-0.6328	0	0	0
+87	30	0	0	0	0	0	0	0	0	0	0	0	-0.71332	0	0	0
+87.5	30	0	0	0	0	0	0	0	0	0	0	0	-0.22377	0	0	0
+88	30	0	0	0	0	0	0	0	0	0	0	0	-0.4967	0	0	0
+88.5	30	0	0	0	0	0	0	0	0	0	0	0	-1.6797	0	0	0
+89	30	0	0	0	0	0	0	0	0	0	0	0	-0.32665	0	0	0
+89.5	30	0	0	0	0	0	0	0	0	0	0	0	-1.4001	0	0	0
+90	30	0	0	0	0	0	0	0	0	0	0	0	-0.37702	0	0	0
+90.5	30	0	0	0	0	0	0	0	0	0	0	0	-1.9445	0	0	0
+91	30	0	0	0	0	0	0	0	0	0	0	0	-1.2036	0	0	0
+91.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	30	0	0	0	0	0	0	0	0	0	0	0	-1.0059	0	0	0
+93	30	0	0	0	0	0	0	0	0	0	0	0	-3.4957	0	0	0
+93.5	30	0	0	0	0	0	0	0	0	0	0	0	-3.8153	0	0	0
+94	30	0	0	0	0	0	0	0	0	0	0	0	-3.7093	0	0	0
+94.5	30	0	0	0	0	0	0	0	0	0	0	0	-3.8241	0	0	0
+95	30	0	0	0	0	0	0	0	0	0	0	0	-4.2071	0	0	0
+95.5	30	0	0	0	0	0	0	0	0	0	0	0	-4.1571	0	0	0
+96	30	0	0	0	0	0	0	0	0	0	0	0	-3.2498	0	0	0
+96.5	30	0	0	0	0	0	0	0	0	0	0	0	-3.5413	0	0	0
+97	30	0	0	0	0	0	0	0	0	0	0	0	-2.1193	0	0	0
+97.5	30	0	0	0	0	0	0	0	0	0	0	0	-1.3257	0	0	0
+98	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	30	0	0	0	0	0	0	0	0	0	0	0	-1.7248	0	0	0
+99	30	0	0	0	0	0	0	0	0	0	0	0	-2.4741	0	0	0
+99.5	30	0	0	0	0	0	0	0	0	0	0	0	-1.6647	0	0	0
+100	30	0	0	0	0	0	0	0	0	0	0	0	-0.75466	0	0	0
+100.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	30	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	30.5	0	0	0	0	0	0	0	0	0	0	0	-0.60589	0	0	0
+79	30.5	0	0	0	0	0	0	0	0	0	0	0	-3.8706	0	0	0
+79.5	30.5	0	0	0	0	0	0	0	0	0	0	0	-5.6868	0	0	0
+80	30.5	0	0	0	0	0	0	0	0	0	0	0	-5.2377	0	0	0
+80.5	30.5	0	0	0	0	0	0	0	0	0	0	0	-3.4495	0	0	0
+81	30.5	0	0	0	0	0	0	0	0	0	0	0	-1.3066	0	0	0
+81.5	30.5	0	0	0	0	0	0	0	0	0	0	0	-0.80773	0	0	0
+82	30.5	0	0	0	0	0	0	0	0	0	0	0	-1.5348	0	0	0
+82.5	30.5	0	0	0	0	0	0	0	0	0	0	0	-0.19105	0	0	0
+83	30.5	0	0	0	0	0	0	0	0	0	0	0	-0.96404	0	0	0
+83.5	30.5	0	0	0	0	0	0	0	0	0	0	0	-1.0972	0	0	0
+84	30.5	0	0	0	0	0	0	0	0	0	0	0	-1.334	0	0	0
+84.5	30.5	0	0	0	0	0	0	0	0	0	0	0	-0.50289	0	0	0
+85	30.5	0	0	0	0	0	0	0	0	0	0	0	-0.38226	0	0	0
+85.5	30.5	0	0	0	0	0	0	0	0	0	0	0	-0.13858	0	0	0
+86	30.5	0	0	0	0	0	0	0	0	0	0	0	-0.34308	0	0	0
+86.5	30.5	0	0	0	0	0	0	0	0	0	0	0	-0.50697	0	0	0
+87	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	30.5	0	0	0	0	0	0	0	0	0	0	0	-0.45857	0	0	0
+88	30.5	0	0	0	0	0	0	0	0	0	0	0	-0.92766	0	0	0
+88.5	30.5	0	0	0	0	0	0	0	0	0	0	0	-0.73005	0	0	0
+89	30.5	0	0	0	0	0	0	0	0	0	0	0	-1.3981	0	0	0
+89.5	30.5	0	0	0	0	0	0	0	0	0	0	0	-0.94606	0	0	0
+90	30.5	0	0	0	0	0	0	0	0	0	0	0	-1.2425	0	0	0
+90.5	30.5	0	0	0	0	0	0	0	0	0	0	0	-1.5677	0	0	0
+91	30.5	0	0	0	0	0	0	0	0	0	0	0	-0.53159	0	0	0
+91.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	30.5	0	0	0	0	0	0	0	0	0	0	0	-1.6886	0	0	0
+93.5	30.5	0	0	0	0	0	0	0	0	0	0	0	-3.4479	0	0	0
+94	30.5	0	0	0	0	0	0	0	0	0	0	0	-3.6762	0	0	0
+94.5	30.5	0	0	0	0	0	0	0	0	0	0	0	-3.8601	0	0	0
+95	30.5	0	0	0	0	0	0	0	0	0	0	0	-3.9054	0	0	0
+95.5	30.5	0	0	0	0	0	0	0	0	0	0	0	-2.3968	0	0	0
+96	30.5	0	0	0	0	0	0	0	0	0	0	0	-2.8244	0	0	0
+96.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	30.5	0	0	0	0	0	0	0	0	0	0	0	-0.15371	0	0	0
+97.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	30.5	0	0	0	0	0	0	0	0	0	0	0	-0.23198	0	0	0
+99	30.5	0	0	0	0	0	0	0	0	0	0	0	-1.0903	0	0	0
+99.5	30.5	0	0	0	0	0	0	0	0	0	0	0	-1.8396	0	0	0
+100	30.5	0	0	0	0	0	0	0	0	0	0	0	-0.96956	0	0	0
+100.5	30.5	0	0	0	0	0	0	0	0	0	0	0	-0.093683	0	0	0
+101	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	30.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	31	0	0	0	0	0	0	0	0	0	0	0	-3.1554	0	0	0
+79	31	0	0	0	0	0	0	0	0	0	0	0	-5.6691	0	0	0
+79.5	31	0	0	0	0	0	0	0	0	0	0	0	-5.1508	0	0	0
+80	31	0	0	0	0	0	0	0	0	0	0	0	-1.1585	0	0	0
+80.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	31	0	0	0	0	0	0	0	0	0	0	0	-3.4599	0	0	0
+81.5	31	0	0	0	0	0	0	0	0	0	0	0	-1.6604	0	0	0
+82	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	31	0	0	0	0	0	0	0	0	0	0	0	-1.8616	0	0	0
+83	31	0	0	0	0	0	0	0	0	0	0	0	-1.8265	0	0	0
+83.5	31	0	0	0	0	0	0	0	0	0	0	0	-1.3923	0	0	0
+84	31	0	0	0	0	0	0	0	0	0	0	0	-0.74993	0	0	0
+84.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	31	0	0	0	0	0	0	0	0	0	0	0	0.021668	0	0	0
+85.5	31	0	0	0	0	0	0	0	0	0	0	0	0.019671	0	0	0
+86	31	0	0	0	0	0	0	0	0	0	0	0	0.018307	0	0	0
+86.5	31	0	0	0	0	0	0	0	0	0	0	0	-0.057793	0	0	0
+87	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	31	0	0	0	0	0	0	0	0	0	0	0	-0.19424	0	0	0
+88.5	31	0	0	0	0	0	0	0	0	0	0	0	-0.56127	0	0	0
+89	31	0	0	0	0	0	0	0	0	0	0	0	-0.42371	0	0	0
+89.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	31	0	0	0	0	0	0	0	0	0	0	0	-0.53982	0	0	0
+93.5	31	0	0	0	0	0	0	0	0	0	0	0	-2.9897	0	0	0
+94	31	0	0	0	0	0	0	0	0	0	0	0	-1.7387	0	0	0
+94.5	31	0	0	0	0	0	0	0	0	0	0	0	-1.666	0	0	0
+95	31	0	0	0	0	0	0	0	0	0	0	0	-3.2351	0	0	0
+95.5	31	0	0	0	0	0	0	0	0	0	0	0	-2.142	0	0	0
+96	31	0	0	0	0	0	0	0	0	0	0	0	-2.4032	0	0	0
+96.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	31	0	0	0	0	0	0	0	0	0	0	0	-0.72773	0	0	0
+100	31	0	0	0	0	0	0	0	0	0	0	0	-0.98512	0	0	0
+100.5	31	0	0	0	0	0	0	0	0	0	0	0	-0.31871	0	0	0
+101	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	31	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	31.5	0	0	0	0	0	0	0	0	0	0	0	-1.1065	0	0	0
+77.5	31.5	0	0	0	0	0	0	0	0	0	0	0	-1.4175	0	0	0
+78	31.5	0	0	0	0	0	0	0	0	0	0	0	-1.1988	0	0	0
+78.5	31.5	0	0	0	0	0	0	0	0	0	0	0	-5.657	0	0	0
+79	31.5	0	0	0	0	0	0	0	0	0	0	0	-5.2823	0	0	0
+79.5	31.5	0	0	0	0	0	0	0	0	0	0	0	-0.79717	0	0	0
+80	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	31.5	0	0	0	0	0	0	0	0	0	0	0	-3.3429	0	0	0
+81.5	31.5	0	0	0	0	0	0	0	0	0	0	0	-1.1926	0	0	0
+82	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	31.5	0	0	0	0	0	0	0	0	0	0	0	-1.1864	0	0	0
+83	31.5	0	0	0	0	0	0	0	0	0	0	0	-0.83317	0	0	0
+83.5	31.5	0	0	0	0	0	0	0	0	0	0	0	-0.99958	0	0	0
+84	31.5	0	0	0	0	0	0	0	0	0	0	0	-0.48215	0	0	0
+84.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	31.5	0	0	0	0	0	0	0	0	0	0	0	0.040976	0	0	0
+85.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0.070665	0	0	0
+86	31.5	0	0	0	0	0	0	0	0	0	0	0	0.0046054	0	0	0
+86.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	31.5	0	0	0	0	0	0	0	0	0	0	0	-0.15915	0	0	0
+93.5	31.5	0	0	0	0	0	0	0	0	0	0	0	-2.0537	0	0	0
+94	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	31.5	0	0	0	0	0	0	0	0	0	0	0	-0.41702	0	0	0
+95	31.5	0	0	0	0	0	0	0	0	0	0	0	-3.0052	0	0	0
+95.5	31.5	0	0	0	0	0	0	0	0	0	0	0	-2.5936	0	0	0
+96	31.5	0	0	0	0	0	0	0	0	0	0	0	-1.4123	0	0	0
+96.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	31.5	0	0	0	0	0	0	0	0	0	0	0	-0.13478	0	0	0
+100.5	31.5	0	0	0	0	0	0	0	0	0	0	0	-0.1031	0	0	0
+101	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	31.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	32	0	0	0	0	0	0	0	0	0	0	0	-0.75474	0	0	0
+77	32	0	0	0	0	0	0	0	0	0	0	0	-2.4019	0	0	0
+77.5	32	0	0	0	0	0	0	0	0	0	0	0	-3.6187	0	0	0
+78	32	0	0	0	0	0	0	0	0	0	0	0	-5.2891	0	0	0
+78.5	32	0	0	0	0	0	0	0	0	0	0	0	-5.017	0	0	0
+79	32	0	0	0	0	0	0	0	0	0	0	0	-2.8761	0	0	0
+79.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	32	0	0	0	0	0	0	0	0	0	0	0	-2.4617	0	0	0
+80.5	32	0	0	0	0	0	0	0	0	0	0	0	-2.3372	0	0	0
+81	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	32	0	0	0	0	0	0	0	0	0	0	0	-0.39046	0	0	0
+83.5	32	0	0	0	0	0	0	0	0	0	0	0	-0.6548	0	0	0
+84	32	0	0	0	0	0	0	0	0	0	0	0	-0.23322	0	0	0
+84.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	32	0	0	0	0	0	0	0	0	0	0	0	0.018802	0	0	0
+85.5	32	0	0	0	0	0	0	0	0	0	0	0	0.056958	0	0	0
+86	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	32	0	0	0	0	0	0	0	0	0	0	0	0.42969	0	0	0
+88	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	32	0	0	0	0	0	0	0	0	0	0	0	-0.13921	0	0	0
+93.5	32	0	0	0	0	0	0	0	0	0	0	0	-1.382	0	0	0
+94	32	0	0	0	0	0	0	0	0	0	0	0	-0.60367	0	0	0
+94.5	32	0	0	0	0	0	0	0	0	0	0	0	-0.71115	0	0	0
+95	32	0	0	0	0	0	0	0	0	0	0	0	-2.4173	0	0	0
+95.5	32	0	0	0	0	0	0	0	0	0	0	0	-1.6003	0	0	0
+96	32	0	0	0	0	0	0	0	0	0	0	0	-0.29984	0	0	0
+96.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	32	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	32.5	0	0	0	0	0	0	0	0	0	0	0	-1.2194	0	0	0
+76.5	32.5	0	0	0	0	0	0	0	0	0	0	0	-2.2056	0	0	0
+77	32.5	0	0	0	0	0	0	0	0	0	0	0	-3.8929	0	0	0
+77.5	32.5	0	0	0	0	0	0	0	0	0	0	0	-4.889	0	0	0
+78	32.5	0	0	0	0	0	0	0	0	0	0	0	-4.6683	0	0	0
+78.5	32.5	0	0	0	0	0	0	0	0	0	0	0	-4.2547	0	0	0
+79	32.5	0	0	0	0	0	0	0	0	0	0	0	-0.39321	0	0	0
+79.5	32.5	0	0	0	0	0	0	0	0	0	0	0	-1.9049	0	0	0
+80	32.5	0	0	0	0	0	0	0	0	0	0	0	-0.45611	0	0	0
+80.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	32.5	0	0	0	0	0	0	0	0	0	0	0	-1.2933	0	0	0
+81.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	32.5	0	0	0	0	0	0	0	0	0	0	0	-0.37206	0	0	0
+83.5	32.5	0	0	0	0	0	0	0	0	0	0	0	-0.35301	0	0	0
+84	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0.043249	0	0	0
+86	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0.69043	0	0	0
+88	32.5	0	0	0	0	0	0	0	0	0	0	0	0.39663	0	0	0
+88.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	32.5	0	0	0	0	0	0	0	0	0	0	0	-0.072393	0	0	0
+92.5	32.5	0	0	0	0	0	0	0	0	0	0	0	-0.053699	0	0	0
+93	32.5	0	0	0	0	0	0	0	0	0	0	0	-0.34491	0	0	0
+93.5	32.5	0	0	0	0	0	0	0	0	0	0	0	-0.48493	0	0	0
+94	32.5	0	0	0	0	0	0	0	0	0	0	0	-0.88156	0	0	0
+94.5	32.5	0	0	0	0	0	0	0	0	0	0	0	-0.48659	0	0	0
+95	32.5	0	0	0	0	0	0	0	0	0	0	0	-1.2295	0	0	0
+95.5	32.5	0	0	0	0	0	0	0	0	0	0	0	-0.8111	0	0	0
+96	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	32.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	33	0	0	0	0	0	0	0	0	0	0	0	-1.6988	0	0	0
+76.5	33	0	0	0	0	0	0	0	0	0	0	0	-3.6116	0	0	0
+77	33	0	0	0	0	0	0	0	0	0	0	0	-4.2813	0	0	0
+77.5	33	0	0	0	0	0	0	0	0	0	0	0	-4.2555	0	0	0
+78	33	0	0	0	0	0	0	0	0	0	0	0	-4.0408	0	0	0
+78.5	33	0	0	0	0	0	0	0	0	0	0	0	-1.5341	0	0	0
+79	33	0	0	0	0	0	0	0	0	0	0	0	-0.012433	0	0	0
+79.5	33	0	0	0	0	0	0	0	0	0	0	0	-0.91929	0	0	0
+80	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	33	0	0	0	0	0	0	0	0	0	0	0	-0.41539	0	0	0
+81.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	33	0	0	0	0	0	0	0	0	0	0	0	-0.010947	0	0	0
+83	33	0	0	0	0	0	0	0	0	0	0	0	-0.14142	0	0	0
+83.5	33	0	0	0	0	0	0	0	0	0	0	0	-0.051219	0	0	0
+84	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	33	0	0	0	0	0	0	0	0	0	0	0	0.0048287	0	0	0
+86	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	33	0	0	0	0	0	0	0	0	0	0	0	0.030734	0	0	0
+87.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	33	0	0	0	0	0	0	0	0	0	0	0	0.23563	0	0	0
+91.5	33	0	0	0	0	0	0	0	0	0	0	0	0.2044	0	0	0
+92	33	0	0	0	0	0	0	0	0	0	0	0	-0.14937	0	0	0
+92.5	33	0	0	0	0	0	0	0	0	0	0	0	-0.45136	0	0	0
+93	33	0	0	0	0	0	0	0	0	0	0	0	-0.60435	0	0	0
+93.5	33	0	0	0	0	0	0	0	0	0	0	0	-0.025275	0	0	0
+94	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	33	0	0	0	0	0	0	0	0	0	0	0	-0.24551	0	0	0
+95	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	33	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	33.5	0	0	0	0	0	0	0	0	0	0	0	-2.1196	0	0	0
+76.5	33.5	0	0	0	0	0	0	0	0	0	0	0	-3.677	0	0	0
+77	33.5	0	0	0	0	0	0	0	0	0	0	0	-3.6606	0	0	0
+77.5	33.5	0	0	0	0	0	0	0	0	0	0	0	-3.5408	0	0	0
+78	33.5	0	0	0	0	0	0	0	0	0	0	0	-3.4317	0	0	0
+78.5	33.5	0	0	0	0	0	0	0	0	0	0	0	-3.1736	0	0	0
+79	33.5	0	0	0	0	0	0	0	0	0	0	0	-0.15689	0	0	0
+79.5	33.5	0	0	0	0	0	0	0	0	0	0	0	-0.84291	0	0	0
+80	33.5	0	0	0	0	0	0	0	0	0	0	0	-1.0441	0	0	0
+80.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	33.5	0	0	0	0	0	0	0	0	0	0	0	0.43648	0	0	0
+86.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0.64282	0	0	0
+87	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	33.5	0	0	0	0	0	0	0	0	0	0	0	0.056746	0	0	0
+90.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	33.5	0	0	0	0	0	0	0	0	0	0	0	0.45967	0	0	0
+91.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0.32	0	0	0
+92	33.5	0	0	0	0	0	0	0	0	0	0	0	0.049812	0	0	0
+92.5	33.5	0	0	0	0	0	0	0	0	0	0	0	-0.30005	0	0	0
+93	33.5	0	0	0	0	0	0	0	0	0	0	0	-0.3631	0	0	0
+93.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	33.5	0	0	0	0	0	0	0	0	0	0	0	-0.10553	0	0	0
+95	33.5	0	0	0	0	0	0	0	0	0	0	0	-0.20494	0	0	0
+95.5	33.5	0	0	0	0	0	0	0	0	0	0	0	-0.085297	0	0	0
+96	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	33.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	34	0	0	0	0	0	0	0	0	0	0	0	-0.59242	0	0	0
+75.5	34	0	0	0	0	0	0	0	0	0	0	0	-2.8638	0	0	0
+76	34	0	0	0	0	0	0	0	0	0	0	0	-3.0482	0	0	0
+76.5	34	0	0	0	0	0	0	0	0	0	0	0	-3.0313	0	0	0
+77	34	0	0	0	0	0	0	0	0	0	0	0	-2.9358	0	0	0
+77.5	34	0	0	0	0	0	0	0	0	0	0	0	-2.8788	0	0	0
+78	34	0	0	0	0	0	0	0	0	0	0	0	-2.7476	0	0	0
+78.5	34	0	0	0	0	0	0	0	0	0	0	0	-2.6147	0	0	0
+79	34	0	0	0	0	0	0	0	0	0	0	0	-1.7122	0	0	0
+79.5	34	0	0	0	0	0	0	0	0	0	0	0	-2.0294	0	0	0
+80	34	0	0	0	0	0	0	0	0	0	0	0	-0.51023	0	0	0
+80.5	34	0	0	0	0	0	0	0	0	0	0	0	-0.19416	0	0	0
+81	34	0	0	0	0	0	0	0	0	0	0	0	-0.81104	0	0	0
+81.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	34	0	0	0	0	0	0	0	0	0	0	0	-0.023652	0	0	0
+83	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	34	0	0	0	0	0	0	0	0	0	0	0	0.58961	0	0	0
+86	34	0	0	0	0	0	0	0	0	0	0	0	1.2419	0	0	0
+86.5	34	0	0	0	0	0	0	0	0	0	0	0	0.46059	0	0	0
+87	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	34	0	0	0	0	0	0	0	0	0	0	0	0.042221	0	0	0
+89	34	0	0	0	0	0	0	0	0	0	0	0	0.76425	0	0	0
+89.5	34	0	0	0	0	0	0	0	0	0	0	0	1.2701	0	0	0
+90	34	0	0	0	0	0	0	0	0	0	0	0	0.14848	0	0	0
+90.5	34	0	0	0	0	0	0	0	0	0	0	0	1.0636	0	0	0
+91	34	0	0	0	0	0	0	0	0	0	0	0	0.27116	0	0	0
+91.5	34	0	0	0	0	0	0	0	0	0	0	0	0.072529	0	0	0
+92	34	0	0	0	0	0	0	0	0	0	0	0	0.12435	0	0	0
+92.5	34	0	0	0	0	0	0	0	0	0	0	0	-0.14874	0	0	0
+93	34	0	0	0	0	0	0	0	0	0	0	0	-0.11729	0	0	0
+93.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	34	0	0	0	0	0	0	0	0	0	0	0	-0.11483	0	0	0
+95	34	0	0	0	0	0	0	0	0	0	0	0	-0.26635	0	0	0
+95.5	34	0	0	0	0	0	0	0	0	0	0	0	-0.11443	0	0	0
+96	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	34	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	34.5	0	0	0	0	0	0	0	0	0	0	0	-0.21456	0	0	0
+73.5	34.5	0	0	0	0	0	0	0	0	0	0	0	-0.50289	0	0	0
+74	34.5	0	0	0	0	0	0	0	0	0	0	0	-0.53798	0	0	0
+74.5	34.5	0	0	0	0	0	0	0	0	0	0	0	-0.57308	0	0	0
+75	34.5	0	0	0	0	0	0	0	0	0	0	0	-2.3083	0	0	0
+75.5	34.5	0	0	0	0	0	0	0	0	0	0	0	-1.4966	0	0	0
+76	34.5	0	0	0	0	0	0	0	0	0	0	0	-2.5628	0	0	0
+76.5	34.5	0	0	0	0	0	0	0	0	0	0	0	-0.69761	0	0	0
+77	34.5	0	0	0	0	0	0	0	0	0	0	0	-2.428	0	0	0
+77.5	34.5	0	0	0	0	0	0	0	0	0	0	0	-2.325	0	0	0
+78	34.5	0	0	0	0	0	0	0	0	0	0	0	-2.2148	0	0	0
+78.5	34.5	0	0	0	0	0	0	0	0	0	0	0	-2.1094	0	0	0
+79	34.5	0	0	0	0	0	0	0	0	0	0	0	-1.8874	0	0	0
+79.5	34.5	0	0	0	0	0	0	0	0	0	0	0	-1.3996	0	0	0
+80	34.5	0	0	0	0	0	0	0	0	0	0	0	-0.7429	0	0	0
+80.5	34.5	0	0	0	0	0	0	0	0	0	0	0	-0.93549	0	0	0
+81	34.5	0	0	0	0	0	0	0	0	0	0	0	-0.64563	0	0	0
+81.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	34.5	0	0	0	0	0	0	0	0	0	0	0	-0.027263	0	0	0
+82.5	34.5	0	0	0	0	0	0	0	0	0	0	0	-0.020633	0	0	0
+83	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0.68958	0	0	0
+86	34.5	0	0	0	0	0	0	0	0	0	0	0	0.95682	0	0	0
+86.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0.25448	0	0	0
+87	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0.016066	0	0	0
+89	34.5	0	0	0	0	0	0	0	0	0	0	0	0.58647	0	0	0
+89.5	34.5	0	0	0	0	0	0	0	0	0	0	0	1.2075	0	0	0
+90	34.5	0	0	0	0	0	0	0	0	0	0	0	0.71418	0	0	0
+90.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0.18659	0	0	0
+91	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0.0025576	0	0	0
+93	34.5	0	0	0	0	0	0	0	0	0	0	0	0.18623	0	0	0
+93.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0.25626	0	0	0
+94	34.5	0	0	0	0	0	0	0	0	0	0	0	0.18115	0	0	0
+94.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	34.5	0	0	0	0	0	0	0	0	0	0	0	-0.070685	0	0	0
+95.5	34.5	0	0	0	0	0	0	0	0	0	0	0	-0.14356	0	0	0
+96	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	34.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	35	0	0	0	0	0	0	0	0	0	0	0	-0.34245	0	0	0
+73	35	0	0	0	0	0	0	0	0	0	0	0	-0.79979	0	0	0
+73.5	35	0	0	0	0	0	0	0	0	0	0	0	-1.2571	0	0	0
+74	35	0	0	0	0	0	0	0	0	0	0	0	-1.3301	0	0	0
+74.5	35	0	0	0	0	0	0	0	0	0	0	0	-1.6743	0	0	0
+75	35	0	0	0	0	0	0	0	0	0	0	0	-1.4687	0	0	0
+75.5	35	0	0	0	0	0	0	0	0	0	0	0	-1.1111	0	0	0
+76	35	0	0	0	0	0	0	0	0	0	0	0	-2.1169	0	0	0
+76.5	35	0	0	0	0	0	0	0	0	0	0	0	-2.0936	0	0	0
+77	35	0	0	0	0	0	0	0	0	0	0	0	-2.0439	0	0	0
+77.5	35	0	0	0	0	0	0	0	0	0	0	0	-1.9482	0	0	0
+78	35	0	0	0	0	0	0	0	0	0	0	0	-1.8371	0	0	0
+78.5	35	0	0	0	0	0	0	0	0	0	0	0	-1.669	0	0	0
+79	35	0	0	0	0	0	0	0	0	0	0	0	-0.76786	0	0	0
+79.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	35	0	0	0	0	0	0	0	0	0	0	0	-0.64569	0	0	0
+81	35	0	0	0	0	0	0	0	0	0	0	0	-0.36957	0	0	0
+81.5	35	0	0	0	0	0	0	0	0	0	0	0	-0.010984	0	0	0
+82	35	0	0	0	0	0	0	0	0	0	0	0	0.11394	0	0	0
+82.5	35	0	0	0	0	0	0	0	0	0	0	0	0.052505	0	0	0
+83	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	35	0	0	0	0	0	0	0	0	0	0	0	0.33914	0	0	0
+86	35	0	0	0	0	0	0	0	0	0	0	0	0.57973	0	0	0
+86.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	35	0	0	0	0	0	0	0	0	0	0	0	0.068382	0	0	0
+89.5	35	0	0	0	0	0	0	0	0	0	0	0	0.2227	0	0	0
+90	35	0	0	0	0	0	0	0	0	0	0	0	1.0086	0	0	0
+90.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	35	0	0	0	0	0	0	0	0	0	0	0	0.19579	0	0	0
+93	35	0	0	0	0	0	0	0	0	0	0	0	0.54239	0	0	0
+93.5	35	0	0	0	0	0	0	0	0	0	0	0	0.55314	0	0	0
+94	35	0	0	0	0	0	0	0	0	0	0	0	0.36257	0	0	0
+94.5	35	0	0	0	0	0	0	0	0	0	0	0	0.058043	0	0	0
+95	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	35	0	0	0	0	0	0	0	0	0	0	0	-0.0067704	0	0	0
+96.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	35	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	35.5	0	0	0	0	0	0	0	0	0	0	0	-0.1559	0	0	0
+71	35.5	0	0	0	0	0	0	0	0	0	0	0	-0.056277	0	0	0
+71.5	35.5	0	0	0	0	0	0	0	0	0	0	0	-0.20435	0	0	0
+72	35.5	0	0	0	0	0	0	0	0	0	0	0	-0.50956	0	0	0
+72.5	35.5	0	0	0	0	0	0	0	0	0	0	0	-0.99754	0	0	0
+73	35.5	0	0	0	0	0	0	0	0	0	0	0	-1.3826	0	0	0
+73.5	35.5	0	0	0	0	0	0	0	0	0	0	0	-0.53349	0	0	0
+74	35.5	0	0	0	0	0	0	0	0	0	0	0	-0.89391	0	0	0
+74.5	35.5	0	0	0	0	0	0	0	0	0	0	0	-0.8385	0	0	0
+75	35.5	0	0	0	0	0	0	0	0	0	0	0	-1.7024	0	0	0
+75.5	35.5	0	0	0	0	0	0	0	0	0	0	0	-1.6973	0	0	0
+76	35.5	0	0	0	0	0	0	0	0	0	0	0	-1.6786	0	0	0
+76.5	35.5	0	0	0	0	0	0	0	0	0	0	0	-1.6835	0	0	0
+77	35.5	0	0	0	0	0	0	0	0	0	0	0	-1.653	0	0	0
+77.5	35.5	0	0	0	0	0	0	0	0	0	0	0	-1.5835	0	0	0
+78	35.5	0	0	0	0	0	0	0	0	0	0	0	-1.4336	0	0	0
+78.5	35.5	0	0	0	0	0	0	0	0	0	0	0	-1.2295	0	0	0
+79	35.5	0	0	0	0	0	0	0	0	0	0	0	-1.0372	0	0	0
+79.5	35.5	0	0	0	0	0	0	0	0	0	0	0	-0.54026	0	0	0
+80	35.5	0	0	0	0	0	0	0	0	0	0	0	-0.30256	0	0	0
+80.5	35.5	0	0	0	0	0	0	0	0	0	0	0	-0.37026	0	0	0
+81	35.5	0	0	0	0	0	0	0	0	0	0	0	-0.13791	0	0	0
+81.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0.080292	0	0	0
+82	35.5	0	0	0	0	0	0	0	0	0	0	0	0.30147	0	0	0
+82.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0.16172	0	0	0
+83	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	35.5	0	0	0	0	0	0	0	0	0	0	0	0.20263	0	0	0
+86.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	35.5	0	0	0	0	0	0	0	0	0	0	0	1.2109	0	0	0
+89	35.5	0	0	0	0	0	0	0	0	0	0	0	0.030501	0	0	0
+89.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0.84039	0	0	0
+90	35.5	0	0	0	0	0	0	0	0	0	0	0	0.9597	0	0	0
+90.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0.38902	0	0	0
+93	35.5	0	0	0	0	0	0	0	0	0	0	0	0.89856	0	0	0
+93.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0.76975	0	0	0
+94	35.5	0	0	0	0	0	0	0	0	0	0	0	0.46522	0	0	0
+94.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0.13725	0	0	0
+95	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	35.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	36	0	0	0	0	0	0	0	0	0	0	0	-0.26155	0	0	0
+70.5	36	0	0	0	0	0	0	0	0	0	0	0	-0.76233	0	0	0
+71	36	0	0	0	0	0	0	0	0	0	0	0	-0.86915	0	0	0
+71.5	36	0	0	0	0	0	0	0	0	0	0	0	-1.005	0	0	0
+72	36	0	0	0	0	0	0	0	0	0	0	0	-1.0684	0	0	0
+72.5	36	0	0	0	0	0	0	0	0	0	0	0	-1.2714	0	0	0
+73	36	0	0	0	0	0	0	0	0	0	0	0	-1.332	0	0	0
+73.5	36	0	0	0	0	0	0	0	0	0	0	0	-0.53593	0	0	0
+74	36	0	0	0	0	0	0	0	0	0	0	0	-0.4169	0	0	0
+74.5	36	0	0	0	0	0	0	0	0	0	0	0	-1.3229	0	0	0
+75	36	0	0	0	0	0	0	0	0	0	0	0	-1.4479	0	0	0
+75.5	36	0	0	0	0	0	0	0	0	0	0	0	-1.4203	0	0	0
+76	36	0	0	0	0	0	0	0	0	0	0	0	-1.4204	0	0	0
+76.5	36	0	0	0	0	0	0	0	0	0	0	0	-1.4023	0	0	0
+77	36	0	0	0	0	0	0	0	0	0	0	0	-1.3848	0	0	0
+77.5	36	0	0	0	0	0	0	0	0	0	0	0	-1.3196	0	0	0
+78	36	0	0	0	0	0	0	0	0	0	0	0	-1.1631	0	0	0
+78.5	36	0	0	0	0	0	0	0	0	0	0	0	-0.9789	0	0	0
+79	36	0	0	0	0	0	0	0	0	0	0	0	-0.79799	0	0	0
+79.5	36	0	0	0	0	0	0	0	0	0	0	0	-0.60969	0	0	0
+80	36	0	0	0	0	0	0	0	0	0	0	0	-0.43418	0	0	0
+80.5	36	0	0	0	0	0	0	0	0	0	0	0	-0.27067	0	0	0
+81	36	0	0	0	0	0	0	0	0	0	0	0	-0.04572	0	0	0
+81.5	36	0	0	0	0	0	0	0	0	0	0	0	0.10603	0	0	0
+82	36	0	0	0	0	0	0	0	0	0	0	0	0.26211	0	0	0
+82.5	36	0	0	0	0	0	0	0	0	0	0	0	0.19025	0	0	0
+83	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	36	0	0	0	0	0	0	0	0	0	0	0	0.47636	0	0	0
+87.5	36	0	0	0	0	0	0	0	0	0	0	0	0.31665	0	0	0
+88	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	36	0	0	0	0	0	0	0	0	0	0	0	1.0778	0	0	0
+90	36	0	0	0	0	0	0	0	0	0	0	0	0.29624	0	0	0
+90.5	36	0	0	0	0	0	0	0	0	0	0	0	0.85468	0	0	0
+91	36	0	0	0	0	0	0	0	0	0	0	0	1.007	0	0	0
+91.5	36	0	0	0	0	0	0	0	0	0	0	0	0.2145	0	0	0
+92	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	36	0	0	0	0	0	0	0	0	0	0	0	0.46336	0	0	0
+93	36	0	0	0	0	0	0	0	0	0	0	0	1.1402	0	0	0
+93.5	36	0	0	0	0	0	0	0	0	0	0	0	0.66267	0	0	0
+94	36	0	0	0	0	0	0	0	0	0	0	0	0.21552	0	0	0
+94.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	36	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	36.5	0	0	0	0	0	0	0	0	0	0	0	-0.50755	0	0	0
+70.5	36.5	0	0	0	0	0	0	0	0	0	0	0	-0.50581	0	0	0
+71	36.5	0	0	0	0	0	0	0	0	0	0	0	-0.51988	0	0	0
+71.5	36.5	0	0	0	0	0	0	0	0	0	0	0	-1.2404	0	0	0
+72	36.5	0	0	0	0	0	0	0	0	0	0	0	-1.2557	0	0	0
+72.5	36.5	0	0	0	0	0	0	0	0	0	0	0	-1.2897	0	0	0
+73	36.5	0	0	0	0	0	0	0	0	0	0	0	-1.3387	0	0	0
+73.5	36.5	0	0	0	0	0	0	0	0	0	0	0	-1.4009	0	0	0
+74	36.5	0	0	0	0	0	0	0	0	0	0	0	-1.4141	0	0	0
+74.5	36.5	0	0	0	0	0	0	0	0	0	0	0	-1.3602	0	0	0
+75	36.5	0	0	0	0	0	0	0	0	0	0	0	-1.3179	0	0	0
+75.5	36.5	0	0	0	0	0	0	0	0	0	0	0	-1.27	0	0	0
+76	36.5	0	0	0	0	0	0	0	0	0	0	0	-1.261	0	0	0
+76.5	36.5	0	0	0	0	0	0	0	0	0	0	0	-1.2422	0	0	0
+77	36.5	0	0	0	0	0	0	0	0	0	0	0	-1.1808	0	0	0
+77.5	36.5	0	0	0	0	0	0	0	0	0	0	0	-1.0992	0	0	0
+78	36.5	0	0	0	0	0	0	0	0	0	0	0	-1.0058	0	0	0
+78.5	36.5	0	0	0	0	0	0	0	0	0	0	0	-0.77081	0	0	0
+79	36.5	0	0	0	0	0	0	0	0	0	0	0	-0.28287	0	0	0
+79.5	36.5	0	0	0	0	0	0	0	0	0	0	0	-0.015213	0	0	0
+80	36.5	0	0	0	0	0	0	0	0	0	0	0	-0.13276	0	0	0
+80.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	36.5	0	0	0	0	0	0	0	0	0	0	0	-0.015948	0	0	0
+81.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0.058424	0	0	0
+83	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0.13681	0	0	0
+87	36.5	0	0	0	0	0	0	0	0	0	0	0	0.73228	0	0	0
+87.5	36.5	0	0	0	0	0	0	0	0	0	0	0	1.1753	0	0	0
+88	36.5	0	0	0	0	0	0	0	0	0	0	0	0.7987	0	0	0
+88.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	36.5	0	0	0	0	0	0	0	0	0	0	0	0.33299	0	0	0
+90.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0.93063	0	0	0
+91	36.5	0	0	0	0	0	0	0	0	0	0	0	0.94347	0	0	0
+91.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0.89747	0	0	0
+92	36.5	0	0	0	0	0	0	0	0	0	0	0	0.066947	0	0	0
+92.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0.41013	0	0	0
+93	36.5	0	0	0	0	0	0	0	0	0	0	0	0.73333	0	0	0
+93.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0.59011	0	0	0
+94	36.5	0	0	0	0	0	0	0	0	0	0	0	0.059016	0	0	0
+94.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	36.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	37	0	0	0	0	0	0	0	0	0	0	0	-0.32066	0	0	0
+71.5	37	0	0	0	0	0	0	0	0	0	0	0	-1.3067	0	0	0
+72	37	0	0	0	0	0	0	0	0	0	0	0	-1.3113	0	0	0
+72.5	37	0	0	0	0	0	0	0	0	0	0	0	-1.3303	0	0	0
+73	37	0	0	0	0	0	0	0	0	0	0	0	-1.3578	0	0	0
+73.5	37	0	0	0	0	0	0	0	0	0	0	0	-1.3581	0	0	0
+74	37	0	0	0	0	0	0	0	0	0	0	0	-1.3184	0	0	0
+74.5	37	0	0	0	0	0	0	0	0	0	0	0	-1.2545	0	0	0
+75	37	0	0	0	0	0	0	0	0	0	0	0	-1.2086	0	0	0
+75.5	37	0	0	0	0	0	0	0	0	0	0	0	-1.1667	0	0	0
+76	37	0	0	0	0	0	0	0	0	0	0	0	-1.0956	0	0	0
+76.5	37	0	0	0	0	0	0	0	0	0	0	0	-0.97073	0	0	0
+77	37	0	0	0	0	0	0	0	0	0	0	0	-0.87699	0	0	0
+77.5	37	0	0	0	0	0	0	0	0	0	0	0	-0.72253	0	0	0
+78	37	0	0	0	0	0	0	0	0	0	0	0	-0.40172	0	0	0
+78.5	37	0	0	0	0	0	0	0	0	0	0	0	-0.13036	0	0	0
+79	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	37	0	0	0	0	0	0	0	0	0	0	0	0.39273	0	0	0
+87	37	0	0	0	0	0	0	0	0	0	0	0	0.2694	0	0	0
+87.5	37	0	0	0	0	0	0	0	0	0	0	0	0.011334	0	0	0
+88	37	0	0	0	0	0	0	0	0	0	0	0	0.082073	0	0	0
+88.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	37	0	0	0	0	0	0	0	0	0	0	0	0.0025639	0	0	0
+89.5	37	0	0	0	0	0	0	0	0	0	0	0	0.016613	0	0	0
+90	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	37	0	0	0	0	0	0	0	0	0	0	0	0.42278	0	0	0
+91.5	37	0	0	0	0	0	0	0	0	0	0	0	0.74215	0	0	0
+92	37	0	0	0	0	0	0	0	0	0	0	0	0.037391	0	0	0
+92.5	37	0	0	0	0	0	0	0	0	0	0	0	0.073388	0	0	0
+93	37	0	0	0	0	0	0	0	0	0	0	0	0.31967	0	0	0
+93.5	37	0	0	0	0	0	0	0	0	0	0	0	0.28571	0	0	0
+94	37	0	0	0	0	0	0	0	0	0	0	0	0.039983	0	0	0
+94.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	37	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	37.5	0	0	0	0	0	0	0	0	0	0	0	-0.29218	0	0	0
+71	37.5	0	0	0	0	0	0	0	0	0	0	0	-1.0727	0	0	0
+71.5	37.5	0	0	0	0	0	0	0	0	0	0	0	-0.81559	0	0	0
+72	37.5	0	0	0	0	0	0	0	0	0	0	0	-0.61462	0	0	0
+72.5	37.5	0	0	0	0	0	0	0	0	0	0	0	-1.4206	0	0	0
+73	37.5	0	0	0	0	0	0	0	0	0	0	0	-1.4036	0	0	0
+73.5	37.5	0	0	0	0	0	0	0	0	0	0	0	-1.2419	0	0	0
+74	37.5	0	0	0	0	0	0	0	0	0	0	0	-0.71581	0	0	0
+74.5	37.5	0	0	0	0	0	0	0	0	0	0	0	-0.54959	0	0	0
+75	37.5	0	0	0	0	0	0	0	0	0	0	0	-1.1781	0	0	0
+75.5	37.5	0	0	0	0	0	0	0	0	0	0	0	-0.73427	0	0	0
+76	37.5	0	0	0	0	0	0	0	0	0	0	0	-0.38744	0	0	0
+76.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	37.5	0	0	0	0	0	0	0	0	0	0	0	-0.13755	0	0	0
+78	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0.76379	0	0	0
+88	37.5	0	0	0	0	0	0	0	0	0	0	0	1.1113	0	0	0
+88.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0.39239	0	0	0
+89	37.5	0	0	0	0	0	0	0	0	0	0	0	0.30804	0	0	0
+89.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0.35204	0	0	0
+90	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0.43044	0	0	0
+92	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0.06136	0	0	0
+97	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	37.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	38	0	0	0	0	0	0	0	0	0	0	0	-0.099346	0	0	0
+68	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	38	0	0	0	0	0	0	0	0	0	0	0	-0.1751	0	0	0
+70.5	38	0	0	0	0	0	0	0	0	0	0	0	-0.91328	0	0	0
+71	38	0	0	0	0	0	0	0	0	0	0	0	-1.466	0	0	0
+71.5	38	0	0	0	0	0	0	0	0	0	0	0	-0.95072	0	0	0
+72	38	0	0	0	0	0	0	0	0	0	0	0	-1.201	0	0	0
+72.5	38	0	0	0	0	0	0	0	0	0	0	0	-1.5057	0	0	0
+73	38	0	0	0	0	0	0	0	0	0	0	0	-1.4424	0	0	0
+73.5	38	0	0	0	0	0	0	0	0	0	0	0	-0.70769	0	0	0
+74	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	38	0	0	0	0	0	0	0	0	0	0	0	-1.0628	0	0	0
+75.5	38	0	0	0	0	0	0	0	0	0	0	0	-0.33459	0	0	0
+76	38	0	0	0	0	0	0	0	0	0	0	0	-0.40534	0	0	0
+76.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	38	0	0	0	0	0	0	0	0	0	0	0	0.11951	0	0	0
+87.5	38	0	0	0	0	0	0	0	0	0	0	0	0.71484	0	0	0
+88	38	0	0	0	0	0	0	0	0	0	0	0	0.2003	0	0	0
+88.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	38	0	0	0	0	0	0	0	0	0	0	0	0.30954	0	0	0
+89.5	38	0	0	0	0	0	0	0	0	0	0	0	0.3101	0	0	0
+90	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	38	0	0	0	0	0	0	0	0	0	0	0	0.12665	0	0	0
+96.5	38	0	0	0	0	0	0	0	0	0	0	0	0.21518	0	0	0
+97	38	0	0	0	0	0	0	0	0	0	0	0	0.029849	0	0	0
+97.5	38	0	0	0	0	0	0	0	0	0	0	0	0.048381	0	0	0
+98	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	38	0	0	0	0	0	0	0	0	0	0	0	-0.05313	0	0	0
+99.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	38	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	38.5	0	0	0	0	0	0	0	0	0	0	0	-0.14991	0	0	0
+67.5	38.5	0	0	0	0	0	0	0	0	0	0	0	-0.35384	0	0	0
+68	38.5	0	0	0	0	0	0	0	0	0	0	0	-0.066022	0	0	0
+68.5	38.5	0	0	0	0	0	0	0	0	0	0	0	-0.33222	0	0	0
+69	38.5	0	0	0	0	0	0	0	0	0	0	0	-0.57022	0	0	0
+69.5	38.5	0	0	0	0	0	0	0	0	0	0	0	-0.13292	0	0	0
+70	38.5	0	0	0	0	0	0	0	0	0	0	0	-0.60073	0	0	0
+70.5	38.5	0	0	0	0	0	0	0	0	0	0	0	-1.0233	0	0	0
+71	38.5	0	0	0	0	0	0	0	0	0	0	0	-1.5277	0	0	0
+71.5	38.5	0	0	0	0	0	0	0	0	0	0	0	-1.5841	0	0	0
+72	38.5	0	0	0	0	0	0	0	0	0	0	0	-1.6074	0	0	0
+72.5	38.5	0	0	0	0	0	0	0	0	0	0	0	-1.5487	0	0	0
+73	38.5	0	0	0	0	0	0	0	0	0	0	0	-1.485	0	0	0
+73.5	38.5	0	0	0	0	0	0	0	0	0	0	0	-1.4118	0	0	0
+74	38.5	0	0	0	0	0	0	0	0	0	0	0	-1.1625	0	0	0
+74.5	38.5	0	0	0	0	0	0	0	0	0	0	0	-0.10539	0	0	0
+75	38.5	0	0	0	0	0	0	0	0	0	0	0	-1.2248	0	0	0
+75.5	38.5	0	0	0	0	0	0	0	0	0	0	0	-1.0243	0	0	0
+76	38.5	0	0	0	0	0	0	0	0	0	0	0	-0.032917	0	0	0
+76.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	38.5	0	0	0	0	0	0	0	0	0	0	0	0.25698	0	0	0
+87.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0.4721	0	0	0
+88	38.5	0	0	0	0	0	0	0	0	0	0	0	0.039539	0	0	0
+88.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	38.5	0	0	0	0	0	0	0	0	0	0	0	0.041096	0	0	0
+89.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0.073985	0	0	0
+90	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	38.5	0	0	0	0	0	0	0	0	0	0	0	0.11453	0	0	0
+96.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0.14714	0	0	0
+97	38.5	0	0	0	0	0	0	0	0	0	0	0	0.024835	0	0	0
+97.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0.049235	0	0	0
+98	38.5	0	0	0	0	0	0	0	0	0	0	0	-0.032873	0	0	0
+98.5	38.5	0	0	0	0	0	0	0	0	0	0	0	-0.12496	0	0	0
+99	38.5	0	0	0	0	0	0	0	0	0	0	0	-0.23328	0	0	0
+99.5	38.5	0	0	0	0	0	0	0	0	0	0	0	-0.098106	0	0	0
+100	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	38.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	39	0	0	0	0	0	0	0	0	0	0	0	-0.081208	0	0	0
+67	39	0	0	0	0	0	0	0	0	0	0	0	-0.38407	0	0	0
+67.5	39	0	0	0	0	0	0	0	0	0	0	0	-0.60833	0	0	0
+68	39	0	0	0	0	0	0	0	0	0	0	0	-0.052754	0	0	0
+68.5	39	0	0	0	0	0	0	0	0	0	0	0	-0.76672	0	0	0
+69	39	0	0	0	0	0	0	0	0	0	0	0	-1.1466	0	0	0
+69.5	39	0	0	0	0	0	0	0	0	0	0	0	-0.72372	0	0	0
+70	39	0	0	0	0	0	0	0	0	0	0	0	-1.0964	0	0	0
+70.5	39	0	0	0	0	0	0	0	0	0	0	0	-1.224	0	0	0
+71	39	0	0	0	0	0	0	0	0	0	0	0	-1.5823	0	0	0
+71.5	39	0	0	0	0	0	0	0	0	0	0	0	-1.6391	0	0	0
+72	39	0	0	0	0	0	0	0	0	0	0	0	-1.6559	0	0	0
+72.5	39	0	0	0	0	0	0	0	0	0	0	0	-1.6098	0	0	0
+73	39	0	0	0	0	0	0	0	0	0	0	0	-1.5422	0	0	0
+73.5	39	0	0	0	0	0	0	0	0	0	0	0	-1.4746	0	0	0
+74	39	0	0	0	0	0	0	0	0	0	0	0	-1.4069	0	0	0
+74.5	39	0	0	0	0	0	0	0	0	0	0	0	-1.2324	0	0	0
+75	39	0	0	0	0	0	0	0	0	0	0	0	-0.99201	0	0	0
+75.5	39	0	0	0	0	0	0	0	0	0	0	0	-0.57097	0	0	0
+76	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	39	0	0	0	0	0	0	0	0	0	0	0	0.1951	0	0	0
+88	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	39	0	0	0	0	0	0	0	0	0	0	0	0.02451	0	0	0
+96.5	39	0	0	0	0	0	0	0	0	0	0	0	0.035214	0	0	0
+97	39	0	0	0	0	0	0	0	0	0	0	0	-0.078548	0	0	0
+97.5	39	0	0	0	0	0	0	0	0	0	0	0	-0.13633	0	0	0
+98	39	0	0	0	0	0	0	0	0	0	0	0	-0.2187	0	0	0
+98.5	39	0	0	0	0	0	0	0	0	0	0	0	-0.30825	0	0	0
+99	39	0	0	0	0	0	0	0	0	0	0	0	-0.30323	0	0	0
+99.5	39	0	0	0	0	0	0	0	0	0	0	0	-0.19788	0	0	0
+100	39	0	0	0	0	0	0	0	0	0	0	0	-0.02095	0	0	0
+100.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	39	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	39.5	0	0	0	0	0	0	0	0	0	0	0	-0.23162	0	0	0
+67	39.5	0	0	0	0	0	0	0	0	0	0	0	-0.43319	0	0	0
+67.5	39.5	0	0	0	0	0	0	0	0	0	0	0	-0.44268	0	0	0
+68	39.5	0	0	0	0	0	0	0	0	0	0	0	-0.089742	0	0	0
+68.5	39.5	0	0	0	0	0	0	0	0	0	0	0	-0.59444	0	0	0
+69	39.5	0	0	0	0	0	0	0	0	0	0	0	-0.69896	0	0	0
+69.5	39.5	0	0	0	0	0	0	0	0	0	0	0	-0.99857	0	0	0
+70	39.5	0	0	0	0	0	0	0	0	0	0	0	-1.1753	0	0	0
+70.5	39.5	0	0	0	0	0	0	0	0	0	0	0	-1.1287	0	0	0
+71	39.5	0	0	0	0	0	0	0	0	0	0	0	-1.0334	0	0	0
+71.5	39.5	0	0	0	0	0	0	0	0	0	0	0	-1.0169	0	0	0
+72	39.5	0	0	0	0	0	0	0	0	0	0	0	-1.6765	0	0	0
+72.5	39.5	0	0	0	0	0	0	0	0	0	0	0	-1.6667	0	0	0
+73	39.5	0	0	0	0	0	0	0	0	0	0	0	-1.6202	0	0	0
+73.5	39.5	0	0	0	0	0	0	0	0	0	0	0	-1.5526	0	0	0
+74	39.5	0	0	0	0	0	0	0	0	0	0	0	-0.8807	0	0	0
+74.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	39.5	0	0	0	0	0	0	0	0	0	0	0	-0.20142	0	0	0
+75.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	39.5	0	0	0	0	0	0	0	0	0	0	0	-0.067682	0	0	0
+97.5	39.5	0	0	0	0	0	0	0	0	0	0	0	-0.23914	0	0	0
+98	39.5	0	0	0	0	0	0	0	0	0	0	0	-0.22022	0	0	0
+98.5	39.5	0	0	0	0	0	0	0	0	0	0	0	-0.31441	0	0	0
+99	39.5	0	0	0	0	0	0	0	0	0	0	0	-0.11085	0	0	0
+99.5	39.5	0	0	0	0	0	0	0	0	0	0	0	-0.051787	0	0	0
+100	39.5	0	0	0	0	0	0	0	0	0	0	0	-0.00087098	0	0	0
+100.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	39.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	40	0	0	0	0	0	0	0	0	0	0	0	-0.020171	0	0	0
+66.5	40	0	0	0	0	0	0	0	0	0	0	0	-0.13769	0	0	0
+67	40	0	0	0	0	0	0	0	0	0	0	0	-0.25521	0	0	0
+67.5	40	0	0	0	0	0	0	0	0	0	0	0	-0.19989	0	0	0
+68	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	40	0	0	0	0	0	0	0	0	0	0	0	-0.25733	0	0	0
+69	40	0	0	0	0	0	0	0	0	0	0	0	-0.34083	0	0	0
+69.5	40	0	0	0	0	0	0	0	0	0	0	0	-0.55096	0	0	0
+70	40	0	0	0	0	0	0	0	0	0	0	0	-0.29082	0	0	0
+70.5	40	0	0	0	0	0	0	0	0	0	0	0	-0.017184	0	0	0
+71	40	0	0	0	0	0	0	0	0	0	0	0	-0.022735	0	0	0
+71.5	40	0	0	0	0	0	0	0	0	0	0	0	-0.2948	0	0	0
+72	40	0	0	0	0	0	0	0	0	0	0	0	-1.3254	0	0	0
+72.5	40	0	0	0	0	0	0	0	0	0	0	0	-1.3358	0	0	0
+73	40	0	0	0	0	0	0	0	0	0	0	0	-1.0622	0	0	0
+73.5	40	0	0	0	0	0	0	0	0	0	0	0	-0.35223	0	0	0
+74	40	0	0	0	0	0	0	0	0	0	0	0	-0.20137	0	0	0
+74.5	40	0	0	0	0	0	0	0	0	0	0	0	-0.50523	0	0	0
+75	40	0	0	0	0	0	0	0	0	0	0	0	-0.87953	0	0	0
+75.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	40	0	0	0	0	0	0	0	0	0	0	0	-0.037846	0	0	0
+98	40	0	0	0	0	0	0	0	0	0	0	0	-0.077066	0	0	0
+98.5	40	0	0	0	0	0	0	0	0	0	0	0	-0.019867	0	0	0
+99	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	40	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	40.5	0	0	0	0	0	0	0	0	0	0	0	-0.077226	0	0	0
+67.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	40.5	0	0	0	0	0	0	0	0	0	0	0	-0.0016387	0	0	0
+69.5	40.5	0	0	0	0	0	0	0	0	0	0	0	-0.10335	0	0	0
+70	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	40.5	0	0	0	0	0	0	0	0	0	0	0	-0.21454	0	0	0
+72.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	40.5	0	0	0	0	0	0	0	0	0	0	0	-1.0146	0	0	0
+75	40.5	0	0	0	0	0	0	0	0	0	0	0	-0.57714	0	0	0
+75.5	40.5	0	0	0	0	0	0	0	0	0	0	0	-0.67072	0	0	0
+76	40.5	0	0	0	0	0	0	0	0	0	0	0	-0.2456	0	0	0
+76.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	40.5	0	0	0	0	0	0	0	0	0	0	0	-0.56368	0	0	0
+77.5	40.5	0	0	0	0	0	0	0	0	0	0	0	-0.095258	0	0	0
+78	40.5	0	0	0	0	0	0	0	0	0	0	0	-0.20663	0	0	0
+78.5	40.5	0	0	0	0	0	0	0	0	0	0	0	-0.318	0	0	0
+79	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	40.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	41	0	0	0	0	0	0	0	0	0	0	0	-0.65749	0	0	0
+75	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	41	0	0	0	0	0	0	0	0	0	0	0	-0.86389	0	0	0
+76.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	41	0	0	0	0	0	0	0	0	0	0	0	-1.1414	0	0	0
+77.5	41	0	0	0	0	0	0	0	0	0	0	0	-0.88722	0	0	0
+78	41	0	0	0	0	0	0	0	0	0	0	0	-0.91266	0	0	0
+78.5	41	0	0	0	0	0	0	0	0	0	0	0	-0.94928	0	0	0
+79	41	0	0	0	0	0	0	0	0	0	0	0	-0.16007	0	0	0
+79.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	41	0	0	0	0	0	0	0	0	0	0	0	-0.74309	0	0	0
+81.5	41	0	0	0	0	0	0	0	0	0	0	0	-0.10986	0	0	0
+82	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	41	0	0	0	0	0	0	0	0	0	0	0	-0.24756	0	0	0
+84.5	41	0	0	0	0	0	0	0	0	0	0	0	-0.26462	0	0	0
+85	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	41	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	41.5	0	0	0	0	0	0	0	0	0	0	0	-0.52725	0	0	0
+72	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	41.5	0	0	0	0	0	0	0	0	0	0	0	-0.085597	0	0	0
+73.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	41.5	0	0	0	0	0	0	0	0	0	0	0	-0.00040501	0	0	0
+76.5	41.5	0	0	0	0	0	0	0	0	0	0	0	-1.1692	0	0	0
+77	41.5	0	0	0	0	0	0	0	0	0	0	0	-1.462	0	0	0
+77.5	41.5	0	0	0	0	0	0	0	0	0	0	0	-1.5143	0	0	0
+78	41.5	0	0	0	0	0	0	0	0	0	0	0	-1.455	0	0	0
+78.5	41.5	0	0	0	0	0	0	0	0	0	0	0	-1.6402	0	0	0
+79	41.5	0	0	0	0	0	0	0	0	0	0	0	-1.2604	0	0	0
+79.5	41.5	0	0	0	0	0	0	0	0	0	0	0	-1.1643	0	0	0
+80	41.5	0	0	0	0	0	0	0	0	0	0	0	-0.79857	0	0	0
+80.5	41.5	0	0	0	0	0	0	0	0	0	0	0	-1.1619	0	0	0
+81	41.5	0	0	0	0	0	0	0	0	0	0	0	-1.7643	0	0	0
+81.5	41.5	0	0	0	0	0	0	0	0	0	0	0	-1.041	0	0	0
+82	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	41.5	0	0	0	0	0	0	0	0	0	0	0	-1.1529	0	0	0
+84.5	41.5	0	0	0	0	0	0	0	0	0	0	0	-0.95274	0	0	0
+85	41.5	0	0	0	0	0	0	0	0	0	0	0	-0.48478	0	0	0
+85.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	41.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	42	0	0	0	0	0	0	0	0	0	0	0.00058249	0	0	0	0
+44	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	42	0	0	0	0	0	0	0	0	0	0	0	-0.32513	0	0	0
+71.5	42	0	0	0	0	0	0	0	0	0	0	0	-1.4482	0	0	0
+72	42	0	0	0	0	0	0	0	0	0	0	0	-1.6064	0	0	0
+72.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	42	0	0	0	0	0	0	0	0	0	0	0	-0.86425	0	0	0
+73.5	42	0	0	0	0	0	0	0	0	0	0	0	-0.36974	0	0	0
+74	42	0	0	0	0	0	0	0	0	0	0	0	-0.64428	0	0	0
+74.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	42	0	0	0	0	0	0	0	0	0	0	0	-0.49466	0	0	0
+75.5	42	0	0	0	0	0	0	0	0	0	0	0	-1.0032	0	0	0
+76	42	0	0	0	0	0	0	0	0	0	0	0	-0.32611	0	0	0
+76.5	42	0	0	0	0	0	0	0	0	0	0	0	-0.71822	0	0	0
+77	42	0	0	0	0	0	0	0	0	0	0	0	-0.78293	0	0	0
+77.5	42	0	0	0	0	0	0	0	0	0	0	0	-0.53355	0	0	0
+78	42	0	0	0	0	0	0	0	0	0	0	0	-1.6572	0	0	0
+78.5	42	0	0	0	0	0	0	0	0	0	0	0	-1.7742	0	0	0
+79	42	0	0	0	0	0	0	0	0	0	0	0	-1.4305	0	0	0
+79.5	42	0	0	0	0	0	0	0	0	0	0	0	-2.0507	0	0	0
+80	42	0	0	0	0	0	0	0	0	0	0	0	-1.9174	0	0	0
+80.5	42	0	0	0	0	0	0	0	0	0	0	0	-2.3073	0	0	0
+81	42	0	0	0	0	0	0	0	0	0	0	0	-2.4494	0	0	0
+81.5	42	0	0	0	0	0	0	0	0	0	0	0	-1.9897	0	0	0
+82	42	0	0	0	0	0	0	0	0	0	0	0	-0.70937	0	0	0
+82.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	42	0	0	0	0	0	0	0	0	0	0	0	-0.61499	0	0	0
+84	42	0	0	0	0	0	0	0	0	0	0	0	-2.0583	0	0	0
+84.5	42	0	0	0	0	0	0	0	0	0	0	0	-1.6409	0	0	0
+85	42	0	0	0	0	0	0	0	0	0	0	0	-1.4167	0	0	0
+85.5	42	0	0	0	0	0	0	0	0	0	0	0	-0.59233	0	0	0
+86	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	42	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	42.5	0	0	0	0	0	0	0	0	0	0	0.10148	0	0	0	0
+43.5	42.5	0	0	0	0	0	0	0	0	0	0	0.1083	0	0	0	0
+44	42.5	0	0	0	0	0	0	0	0	0	0	0.020541	0	0	0	0
+44.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	42.5	0	0	0	0	0	0	0	0	0	0	0	-0.81393	0	0	0
+71.5	42.5	0	0	0	0	0	0	0	0	0	0	0	-0.31114	0	0	0
+72	42.5	0	0	0	0	0	0	0	0	0	0	0	-0.69154	0	0	0
+72.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	42.5	0	0	0	0	0	0	0	0	0	0	0	-0.16656	0	0	0
+73.5	42.5	0	0	0	0	0	0	0	0	0	0	0	-1.4184	0	0	0
+74	42.5	0	0	0	0	0	0	0	0	0	0	0	-1.1259	0	0	0
+74.5	42.5	0	0	0	0	0	0	0	0	0	0	0	-0.4067	0	0	0
+75	42.5	0	0	0	0	0	0	0	0	0	0	0	-0.7795	0	0	0
+75.5	42.5	0	0	0	0	0	0	0	0	0	0	0	-0.43822	0	0	0
+76	42.5	0	0	0	0	0	0	0	0	0	0	0	-0.76784	0	0	0
+76.5	42.5	0	0	0	0	0	0	0	0	0	0	0	-0.37377	0	0	0
+77	42.5	0	0	0	0	0	0	0	0	0	0	0	-0.0078595	0	0	0
+77.5	42.5	0	0	0	0	0	0	0	0	0	0	0	-0.79732	0	0	0
+78	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	42.5	0	0	0	0	0	0	0	0	0	0	0	-1.3744	0	0	0
+79	42.5	0	0	0	0	0	0	0	0	0	0	0	-0.51611	0	0	0
+79.5	42.5	0	0	0	0	0	0	0	0	0	0	0	-0.92739	0	0	0
+80	42.5	0	0	0	0	0	0	0	0	0	0	0	-1.5302	0	0	0
+80.5	42.5	0	0	0	0	0	0	0	0	0	0	0	-2.3253	0	0	0
+81	42.5	0	0	0	0	0	0	0	0	0	0	0	-2.4866	0	0	0
+81.5	42.5	0	0	0	0	0	0	0	0	0	0	0	-2.6353	0	0	0
+82	42.5	0	0	0	0	0	0	0	0	0	0	0	-2.2159	0	0	0
+82.5	42.5	0	0	0	0	0	0	0	0	0	0	0	-2.2554	0	0	0
+83	42.5	0	0	0	0	0	0	0	0	0	0	0	-2.0475	0	0	0
+83.5	42.5	0	0	0	0	0	0	0	0	0	0	0	-3.0243	0	0	0
+84	42.5	0	0	0	0	0	0	0	0	0	0	0	-2.7969	0	0	0
+84.5	42.5	0	0	0	0	0	0	0	0	0	0	0	-2.738	0	0	0
+85	42.5	0	0	0	0	0	0	0	0	0	0	0	-2.8639	0	0	0
+85.5	42.5	0	0	0	0	0	0	0	0	0	0	0	-1.2774	0	0	0
+86	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	42.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	43	0	0	0	0	0	0	0	0	0	0	0.14227	0	0	0	0
+42	43	0	0	0	0	0	0	0	0	0	0	0.4202	0	0	0	0
+42.5	43	0	0	0	0	0	0	0	0	0	0	0.5365	0	0	0	0
+43	43	0	0	0	0	0	0	0	0	0	0	0.34747	0	0	0	0
+43.5	43	0	0	0	0	0	0	0	0	0	0	0.20685	0	0	0	0
+44	43	0	0	0	0	0	0	0	0	0	0	0.032417	0	0	0	0
+44.5	43	0	0	0	0	0	0	0	0	0	0	0.0088699	0	0	0	0
+45	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	43	0	0	0	0	0	0	0	0	0	0	0	-0.62913	0	0	0
+74	43	0	0	0	0	0	0	0	0	0	0	0	-0.43279	0	0	0
+74.5	43	0	0	0	0	0	0	0	0	0	0	0	-0.32601	0	0	0
+75	43	0	0	0	0	0	0	0	0	0	0	0	-0.56622	0	0	0
+75.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	43	0	0	0	0	0	0	0	0	0	0	0	-0.28084	0	0	0
+77	43	0	0	0	0	0	0	0	0	0	0	0	-0.90987	0	0	0
+77.5	43	0	0	0	0	0	0	0	0	0	0	0	-1.4173	0	0	0
+78	43	0	0	0	0	0	0	0	0	0	0	0	-0.5243	0	0	0
+78.5	43	0	0	0	0	0	0	0	0	0	0	0	-0.47539	0	0	0
+79	43	0	0	0	0	0	0	0	0	0	0	0	-0.37092	0	0	0
+79.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	43	0	0	0	0	0	0	0	0	0	0	0	-0.42078	0	0	0
+80.5	43	0	0	0	0	0	0	0	0	0	0	0	-1.5321	0	0	0
+81	43	0	0	0	0	0	0	0	0	0	0	0	-1.5871	0	0	0
+81.5	43	0	0	0	0	0	0	0	0	0	0	0	-1.7291	0	0	0
+82	43	0	0	0	0	0	0	0	0	0	0	0	-0.80867	0	0	0
+82.5	43	0	0	0	0	0	0	0	0	0	0	0	-0.46923	0	0	0
+83	43	0	0	0	0	0	0	0	0	0	0	0	-1.3143	0	0	0
+83.5	43	0	0	0	0	0	0	0	0	0	0	0	-2.5372	0	0	0
+84	43	0	0	0	0	0	0	0	0	0	0	0	-2.3483	0	0	0
+84.5	43	0	0	0	0	0	0	0	0	0	0	0	-3.1427	0	0	0
+85	43	0	0	0	0	0	0	0	0	0	0	0	-3.2073	0	0	0
+85.5	43	0	0	0	0	0	0	0	0	0	0	0	-1.9625	0	0	0
+86	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	43	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	43.5	0	0	0	0	0	0	0	0	0	0	0.52682	0	0	0	0
+41.5	43.5	0	0	0	0	0	0	0	0	0	0	0.77643	0	0	0	0
+42	43.5	0	0	0	0	0	0	0	0	0	0	0.60318	0	0	0	0
+42.5	43.5	0	0	0	0	0	0	0	0	0	0	0.29085	0	0	0	0
+43	43.5	0	0	0	0	0	0	0	0	0	0	0.26531	0	0	0	0
+43.5	43.5	0	0	0	0	0	0	0	0	0	0	0.082765	0	0	0	0
+44	43.5	0	0	0	0	0	0	0	0	0	0	0.0086539	0	0	0	0
+44.5	43.5	0	0	0	0	0	0	0	0	0	0	0.0041991	0	0	0	0
+45	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	43.5	0	0	0	0	0	0	0	0	0	0	0	-0.046222	0	0	0
+77	43.5	0	0	0	0	0	0	0	0	0	0	0	-0.58874	0	0	0
+77.5	43.5	0	0	0	0	0	0	0	0	0	0	0	-0.041737	0	0	0
+78	43.5	0	0	0	0	0	0	0	0	0	0	0	-0.35214	0	0	0
+78.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	43.5	0	0	0	0	0	0	0	0	0	0	0	-0.46144	0	0	0
+80	43.5	0	0	0	0	0	0	0	0	0	0	0	-0.38837	0	0	0
+80.5	43.5	0	0	0	0	0	0	0	0	0	0	0	-0.56225	0	0	0
+81	43.5	0	0	0	0	0	0	0	0	0	0	0	-0.46739	0	0	0
+81.5	43.5	0	0	0	0	0	0	0	0	0	0	0	-0.37327	0	0	0
+82	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	43.5	0	0	0	0	0	0	0	0	0	0	0	-2.7644	0	0	0
+84	43.5	0	0	0	0	0	0	0	0	0	0	0	-0.87978	0	0	0
+84.5	43.5	0	0	0	0	0	0	0	0	0	0	0	-3.1826	0	0	0
+85	43.5	0	0	0	0	0	0	0	0	0	0	0	-2.8118	0	0	0
+85.5	43.5	0	0	0	0	0	0	0	0	0	0	0	-2.224	0	0	0
+86	43.5	0	0	0	0	0	0	0	0	0	0	0	-0.1581	0	0	0
+86.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	43.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	44	0	0	0	0	0	0	0	0	0	0	0.34968	0	0	0	0
+41.5	44	0	0	0	0	0	0	0	0	0	0	0.4147	0	0	0	0
+42	44	0	0	0	0	0	0	0	0	0	0	0.22952	0	0	0	0
+42.5	44	0	0	0	0	0	0	0	0	0	0	0.059478	0	0	0	0
+43	44	0	0	0	0	0	0	0	0	0	0	0.076529	0	0	0	0
+43.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	44	0	0	0	0	0	0	0	0	0	0	0	-0.097636	0	0	0
+79.5	44	0	0	0	0	0	0	0	0	0	0	0	-0.81531	0	0	0
+80	44	0	0	0	0	0	0	0	0	0	0	0	-0.97351	0	0	0
+80.5	44	0	0	0	0	0	0	0	0	0	0	0	-0.29033	0	0	0
+81	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	44	0	0	0	0	0	0	0	0	0	0	0	-2.4215	0	0	0
+84	44	0	0	0	0	0	0	0	0	0	0	0	-2.924	0	0	0
+84.5	44	0	0	0	0	0	0	0	0	0	0	0	-2.4712	0	0	0
+85	44	0	0	0	0	0	0	0	0	0	0	0	-1.7296	0	0	0
+85.5	44	0	0	0	0	0	0	0	0	0	0	0	-1.1345	0	0	0
+86	44	0	0	0	0	0	0	0	0	0	0	0	-0.28884	0	0	0
+86.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	44	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	44.5	0	0	0	0	0	0	0	0	0	-1.1374	0	0	0	0	0
+6.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	44.5	0	0	0	0	0	0	0	0	0	0	0.026489	0	0	0	0
+42	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	44.5	0	0	0	0	0	0	0	0	0	0	0	-0.31407	0	0	0
+79.5	44.5	0	0	0	0	0	0	0	0	0	0	0	-1.0318	0	0	0
+80	44.5	0	0	0	0	0	0	0	0	0	0	0	-1.5708	0	0	0
+80.5	44.5	0	0	0	0	0	0	0	0	0	0	0	-0.96504	0	0	0
+81	44.5	0	0	0	0	0	0	0	0	0	0	0	-0.16297	0	0	0
+81.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	44.5	0	0	0	0	0	0	0	0	0	0	0	-1.661	0	0	0
+84	44.5	0	0	0	0	0	0	0	0	0	0	0	-2.26	0	0	0
+84.5	44.5	0	0	0	0	0	0	0	0	0	0	0	-2.0347	0	0	0
+85	44.5	0	0	0	0	0	0	0	0	0	0	0	-0.80502	0	0	0
+85.5	44.5	0	0	0	0	0	0	0	0	0	0	0	-0.044855	0	0	0
+86	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	44.5	0	0.60487	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	44.5	0	0.37864	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	44.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	45	0	0	0	0	0	0	0	0	0	-2.4669	0	0	0	0	0
+6.5	45	0	0	0	0	0	0	0	0	0	-1.4009	0	0	0	0	0
+7	45	0	0	0	0	0	0	0	0	0	-0.75567	0	0	0	0	0
+7.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	45	0	0	0	0	0	0	0	0	0	0	0	-0.64717	0	0	0
+80	45	0	0	0	0	0	0	0	0	0	0	0	-0.96837	0	0	0
+80.5	45	0	0	0	0	0	0	0	0	0	0	0	-1.5528	0	0	0
+81	45	0	0	0	0	0	0	0	0	0	0	0	-0.8062	0	0	0
+81.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	45	0	0	0	0	0	0	0	0	0	0	0	-1.0978	0	0	0
+84	45	0	0	0	0	0	0	0	0	0	0	0	-1.3793	0	0	0
+84.5	45	0	0	0	0	0	0	0	0	0	0	0	-1.2884	0	0	0
+85	45	0	0	0	0	0	0	0	0	0	0	0	-0.46803	0	0	0
+85.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	45	0	0.0022896	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	45	0	1.3791	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	45	0	0.90043	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	45	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	45.5	0	0	0	0	0	0	0	0	0	-0.35735	0	0	0	0	0
+6.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	45.5	0	0	0	0	0	0	0	0	0	-4.6381	0	0	0	0	0
+7.5	45.5	0	0	0	0	0	0	0	0	0	-1.1391	0	0	0	0	0
+8	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	45.5	0	0	0	0	0	0	0	0	0	0	0	-0.22896	0	0	0
+80	45.5	0	0	0	0	0	0	0	0	0	0	0	-0.35227	0	0	0
+80.5	45.5	0	0	0	0	0	0	0	0	0	0	0	-0.46812	0	0	0
+81	45.5	0	0	0	0	0	0	0	0	0	0	0	-0.61875	0	0	0
+81.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	45.5	0	0	0	0	0	0	0	0	0	0	0	-0.53456	0	0	0
+84	45.5	0	0	0	0	0	0	0	0	0	0	0	-0.48155	0	0	0
+84.5	45.5	0	0	0	0	0	0	0	0	0	0	0	-0.39069	0	0	0
+85	45.5	0	0	0	0	0	0	0	0	0	0	0	-0.15974	0	0	0
+85.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	45.5	0	1.6889	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	45.5	0	0.77252	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	45.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	46	0	0	0	0	0	0	0	0	0	-3.9976	0	0	0	0	0
+7.5	46	0	0	0	0	0	0	0	0	0	-4.5555	0	0	0	0	0
+8	46	0	0	0	0	0	0	0	0	0	-1.8813	0	0	0	0	0
+8.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	46	0	0	0	0	0	0	0	0	0	-1.2095	0	0	0	0	0
+10.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	46	0	0	0	0	0	0	0	0	0	-2.2085	0	0	0	0	0
+11.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	46	0	0	0	0	0	0	0	0	0.2227	0	0	0	0	0	0
+91	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	46	0	0.79703	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	46	0	0.49029	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	46	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	46.5	0	0	0	0	0	0	0	0	0	-2.1509	0	0	0	0	0
+7.5	46.5	0	0	0	0	0	0	0	0	0	-3.4556	0	0	0	0	0
+8	46.5	0	0	0	0	0	0	0	0	0	-4.0935	0	0	0	0	0
+8.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	46.5	0	0	0	0	0	0	0	0	0	-3.6004	0	0	0	0	0
+10	46.5	0	0	0	0	0	0	0	0	0	-1.8277	0	0	0	0	0
+10.5	46.5	0	0	0	0	0	0	0	0	0	-2.633	0	0	0	0	0
+11	46.5	0	0	0	0	0	0	0	0	0	-2.7583	0	0	0	0	0
+11.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	46.5	0	0	0	0	0	0	0	0	0	-1.9751	0	0	0	0	0
+12.5	46.5	0	0	0	0	0	0	0	0	0	-0.10796	0	0	0	0	0
+13	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	46.5	0	0	0	0	0	0	0	0	0.034467	0	0	0	0	0	0
+90.5	46.5	0	0	0	0	0	0	0	0	0.71825	0	0	0	0	0	0
+91	46.5	0	0	0	0	0	0	0	0	0.20758	0	0	0	0	0	0
+91.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	46.5	0	0.20805	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	46.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	47	0	0	0	0	0	0	0	0	0	-0.27919	0	0	0	0	0
+7.5	47	0	0	0	0	0	0	0	0	0	-0.75903	0	0	0	0	0
+8	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	47	0	0	0	0	0	0	0	0	0	-2.0383	0	0	0	0	0
+10	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	47	0	0	0	0	0	0	0	0	0	-1.3809	0	0	0	0	0
+11	47	0	0	0	0	0	0	0	0	0	-1.4629	0	0	0	0	0
+11.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	47	0	0	0	0	0	0	0	0	0	-3.8065	0	0	0	0	0
+12.5	47	0	0	0	0	0	0	0	0	0	-0.12047	0	0	0	0	0
+13	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	47	0	0	0	0	0	0	0	0	0.5121	0	0	0	0	0	0
+90.5	47	0	0	0	0	0	0	0	0	1.0578	0	0	0	0	0	0
+91	47	0	0	0	0	0	0	0	0	0.50561	0	0	0	0	0	0
+91.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	47	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	47.5	0	0	0	0	0	0	0	0	0	-0.91003	0	0	0	0	0
+12.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	47.5	0	0	0	0	0	0	0	0	0.61298	0	0	0	0	0	0
+90.5	47.5	0	0	0	0	0	0	0	0	1.0769	0	0	0	0	0	0
+91	47.5	0	0	0	0	0	0	0	0	0.69724	0	0	0	0	0	0
+91.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	47.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	48	0	0	0	0	0	0	0	0	0.6044	0	0	0	0	0	0
+90.5	48	0	0	0	0	0	0	0	0	1.1126	0	0	0	0	0	0
+91	48	0	0	0	0	0	0	0	0	0.82131	0	0	0	0	0	0
+91.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	48	0	0.061339	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	48	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	48.5	0	0	0	0	0	0	0	0	0.26548	0	0	0	0	0	0
+85.5	48.5	0	0	0	0	0	0	0	0	0.33423	0	0	0	0	0	0
+86	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	48.5	0	0	0	0	0	0	0	0	0.18226	0	0	0	0	0	0
+88.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	48.5	0	0	0	0	0	0	0	0	0.30067	0	0	0	0	0	0
+89.5	48.5	0	0	0	0	0	0	0	0	0.37022	0	0	0	0	0	0
+90	48.5	0	0	0	0	0	0	0	0	0.48553	0	0	0	0	0	0
+90.5	48.5	0	0	0	0	0	0	0	0	1.0295	0	0	0	0	0	0
+91	48.5	0	0	0	0	0	0	0	0	0.86221	0	0	0	0	0	0
+91.5	48.5	0	0	0	0	0	0	0	0	0.05457	0	0	0	0	0	0
+92	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	48.5	0	1.1839	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	48.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	49	0	0	0	0	0	0	0	0	0.73425	0	0	0	0	0	0
+85.5	49	0	0	0	0	0	0	0	0	0.71412	0	0	0	0	0	0
+86	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	49	0	0	0	0	0	0	0	0	0.002294	0	0	0	0	0	0
+88	49	0	0	0	0	0	0	0	0	0.88312	0	0	0	0	0	0
+88.5	49	0	0	0	0	0	0	0	0	0.26758	0	0	0	0	0	0
+89	49	0	0	0	0	0	0	0	0	0.31165	0	0	0	0	0	0
+89.5	49	0	0	0	0	0	0	0	0	0.53833	0	0	0	0	0	0
+90	49	0	0	0	0	0	0	0	0	0.29888	0	0	0	0	0	0
+90.5	49	0	0	0	0	0	0	0	0	0.47384	0	0	0	0	0	0
+91	49	0	0	0	0	0	0	0	0	0.85766	0	0	0	0	0	0
+91.5	49	0	0	0	0	0	0	0	0	0.14837	0	0	0	0	0	0
+92	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	49	0	0.93842	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	49	0	0.83702	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	49	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	49.5	0	0	0	0	0	0	0	0	0.10741	0	0	0	0	0	0
+85	49.5	0	0	0	0	0	0	0	0	0.72872	0	0	0	0	0	0
+85.5	49.5	0	0	0	0	0	0	0	0	0.66454	0	0	0	0	0	0
+86	49.5	0	0	0	0	0	0	0	0	0.028095	0	0	0	0	0	0
+86.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	49.5	0	0	0	0	0	0	0	0	0.03304	0	0	0	0	0	0
+88	49.5	0	0	0	0	0	0	0	0	1.1274	0	0	0	0	0	0
+88.5	49.5	0	0	0	0	0	0	0	0	0.19672	0	0	0	0	0	0
+89	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	49.5	0	0	0	0	0	0	0	0	0.15862	0	0	0	0	0	0
+91.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	49.5	0	0.17074	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	49.5	0	0.1064	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	49.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	50	0	0	0	0	0	0	0	0	0.11779	0	0	0	0	0	0
+85.5	50	0	0	0	0	0	0	0	0	0.060526	0	0	0	0	0	0
+86	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	50	0	0	0	0	0	0	0	0	0.29741	0	0	0	0	0	0
+88	50	0	0	0	0	0	0	0	0	1.0498	0	0	0	0	0	0
+88.5	50	0	0	0	0	0	0	0	0	0.42154	0	0	0	0	0	0
+89	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	50	0	0.15213	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	50	0	0.15627	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	50	0	0.80532	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	50	0	0.64535	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	50	0	0.729	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	50	0	0.67669	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	50	0	0.13323	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	50	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	50.5	0	0	0	0	0	0	0	0	0.42714	0	0	0	0	0	0
+88	50.5	0	0	0	0	0	0	0	0	0.68766	0	0	0	0	0	0
+88.5	50.5	0	0	0	0	0	0	0	0	0.2009	0	0	0	0	0	0
+89	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	50.5	0	1.0862	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	50.5	0	1.2331	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	50.5	0	1.1054	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	50.5	0	1.0508	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	50.5	0	0.94753	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	50.5	0	1.1223	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	50.5	0	0.8586	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	50.5	0	0.18188	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	50.5	0	0.40944	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	50.5	0	0.45144	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	50.5	0	0.64151	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	50.5	0	0.037589	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	50.5	0	0.3219	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	50.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	51	0	0	0	0	0	0	0	0	0.085101	0	0	0	0	0	0
+88.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	51	0	0.22275	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	51	0	0.78207	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	51	0	0.38681	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	51	0	1.1265	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	51	0	1.1357	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	51	0	1.0148	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	51	0	0.47501	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	51	0	0.36405	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	51	0	0.23931	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	51	0	0.58136	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	51	0	0.17089	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	51	0	0.39058	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	51	0	1.0228	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	51	0	1.2377	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	51	0	1.3049	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	51	0	0.025434	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	51	0	0.28185	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	51	0	1.4358	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	51	0	0.36236	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	51	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	51.5	0	0.89213	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	51.5	0	0.66144	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	51.5	0	0.97103	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	51.5	0	0.97818	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	51.5	0	0.81144	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	51.5	0	0.52162	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	51.5	0	0.5444	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	51.5	0	0.036237	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	51.5	0	0.071856	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	51.5	0	0.29282	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	51.5	0	0.37172	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	51.5	0	1.1943	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	51.5	0	1.6715	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	51.5	0	1.7323	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	51.5	0	1.2825	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	51.5	0	0.29264	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	51.5	0	1.0985	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	51.5	0	0.74652	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	51.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	52	0	0.90529	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	52	0	0.91054	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	52	0	0.69462	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	52	0	0.36157	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	52	0	0.50505	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	52	0	0.83467	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	52	0	0.69085	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	52	0	1.5842	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	52	0	1.3049	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	52	0	1.6837	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	52	0	1.5398	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	52	0	0.46483	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	52	0	0.33526	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	52	0	0.13016	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	52	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	52.5	0	0.086091	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	52.5	0	0.32573	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	52.5	0	0.7416	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	52.5	0	0.61736	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	52.5	0	0.46385	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	52.5	0	0.82118	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	52.5	0	1.5165	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	52.5	0	1.2433	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	52.5	0	1.1181	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	52.5	0	0.41222	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	52.5	0	0.697	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	52.5	0	0.65139	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	52.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	53	0	0.21784	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	53	0	0.34914	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	53	0	0.80324	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	53	0	0.71179	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	53	0	0.18665	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	53	0	0.16713	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	53	0	1.4542	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	53	0	1.5445	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	53	0	1.373	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	53	0	0.88442	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	53	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	53.5	0	0.16658	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	53.5	0	0.67553	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	53.5	0	0.70426	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	53.5	0	0.72286	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	53.5	0	0.3844	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	53.5	0	0.28347	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	53.5	0	0.28066	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	53.5	0	0.57325	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	53.5	0	1.1429	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	53.5	0	0.63071	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	53.5	0	0.56914	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	53.5	0	0.83246	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	53.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	54	0	0.11631	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	54	0	0.019205	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	54	0	0.50805	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	54	0	0.094912	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	54	0	0.61628	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	54	0	0.55688	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	54	0	0.052171	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	54	0	0.67087	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	54	0	1.079	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	54	0	1.444	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	54	0	1.2499	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	54	0	0.46078	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	54	0	0.12312	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	54	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	54.5	0	0	0	0	0	0	0	0	0.33882	0	0	0	0	0	0
+162.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	54.5	-0.11555	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	54.5	-0.059461	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	54.5	0	0.33706	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	54.5	0	0.29717	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	54.5	0	0.49049	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	54.5	0	0.19642	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	54.5	0	0.52839	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	54.5	0	0.28466	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	54.5	0	0.022837	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	54.5	0	0.98316	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	54.5	0	1.0515	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	54.5	0	0.97048	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	54.5	0	0.78439	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	54.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	55	0	0	0	0	0	0	0	0	1.109	0	0	0	0	0	0
+162.5	55	0	0	0	0	0	0	0	0	0.019157	0	0	0	0	0	0
+163	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	55	-0.1456	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	55	-0.20864	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	55	-0.034124	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	55	-2.3982	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	55	-3.3239	0.13875	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	55	-0.62638	0.1803	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	55	0	0.054348	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	55	0	0.32891	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	55	0	0.24328	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	55	0	0.53897	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	55	0	0.49047	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	55	0	0.44198	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	55	0	0.31889	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	55	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	55.5	0	0	0	0	0	0	0	0	0.38334	0	0	0	0	0	0
+160.5	55.5	0	0	0	0	0	0	0	0	0.7055	0	0	0	0	0	0
+161	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	55.5	0	0	0	0	0	0	0	0	0.24193	0	0	0	0	0	0
+162.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	55.5	-0.0035789	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	55.5	-0.14192	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	55.5	-0.17458	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	55.5	-0.066415	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	55.5	-0.6824	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	55.5	-1.234	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	55.5	-3.8399	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	55.5	-5.2057	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	55.5	-0.47564	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	55.5	0	0.044398	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	55.5	0	0.16256	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	55.5	0	0.10846	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	55.5	0	0.058957	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	55.5	0	0.010463	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	55.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	56	0	0	0	0	0	0	0	0	0.85998	0	0	0	0	0	0
+160.5	56	0	0	0	0	0	0	0	0	1.5739	0	0	0	0	0	0
+161	56	0	0	0	0	0	0	0	0	0.27066	0	0	0	0	0	0
+161.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	56	-0.034098	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	56	-0.055298	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	56	-0.038884	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	56	-0.39553	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	56	-1.6375	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	56	-0.15376	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	56	-0.62093	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	56	-1.1924	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	56	-3.5016	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	56	-6.466	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	56	-6.1637	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	56	-5.9134	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	56	-2.3355	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	56	0	0.083847	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	56	0	0.18428	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	56	0	0.34336	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	56	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	56.5	0	0	0	0	0	0	0	0	0.17494	0	0	0	0	0	0
+160	56.5	0	0	0	0	0	0	0	0	1.0331	0	0	0	0	0	0
+160.5	56.5	0	0	0	0	0	0	0	0	0.45648	0	0	0	0	0	0
+161	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	56.5	-0.5661	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	56.5	-0.45565	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	56.5	-5.013	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	56.5	-8.0729	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	56.5	-7.0196	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	56.5	-7.0879	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	56.5	-6.853	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	56.5	-6.6438	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	56.5	-6.37	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	56.5	-4.3523	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	56.5	0	0.096523	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	56.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	57	0	0	0	0	0	0	0	0	0.21904	0	0	0	0	0	0
+160	57	0	0	0	0	0	0	0	0	0.50936	0	0	0	0	0	0
+160.5	57	0	0	0	0	0	0	0	0	0.12256	0	0	0	0	0	0
+161	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	57	-1.9356	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	57	-0.15487	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	57	-0.24114	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	57	-2.8591	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	57	-9.1671	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	57	-8.7134	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	57	-8.1003	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	57	-7.4995	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	57	-7.2207	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	57	-7.0215	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	57	-5.3727	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	57	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	57.5	0	0	0	0	0	0	0	0	1.6546	0	0	0	0	0	0
+161	57.5	0	0	0	0	0	0	0	0	0.41293	0	0	0	0	0	0
+161.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	57.5	-1.5121	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	57.5	-0.12882	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	57.5	-3.2677	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	57.5	-1.2884	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	57.5	-1.6034	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	57.5	-6.4929	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	57.5	-10.372	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	57.5	-9.7438	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	57.5	-9.1366	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	57.5	-8.5004	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	57.5	-7.8736	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	57.5	-5.136	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	57.5	-4.7268	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	57.5	-0.10337	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	57.5	0	0.01681	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	57.5	0	0.080119	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	57.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	58	0	0	0	0	0	0	0	0	0.96159	0	0	0	0	0	0
+161	58	0	0	0	0	0	0	0	0	0.80355	0	0	0	0	0	0
+161.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	58	-2.1806	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	58	-3.3672	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	58	-2.4035	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	58	-0.0072533	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	58	-2.0996	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	58	-7.2161	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	58	-6.1665	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	58	-2.7278	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	58	-9.1091	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	58	-3.4461	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	58	-9.7907	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	58	-10.39	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	58	-9.9495	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	58	-7.9917	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	58	-5.4278	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	58	-4.4149	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	58	0	0.50921	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	58	0	0.43949	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	58	0	0.056659	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	58	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	58.5	0	0	0	0	0	0	0	0	0.047591	0	0	0	0	0	0
+161	58.5	0	0	0	0	0	0	0	0	0.32605	0	0	0	0	0	0
+161.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	58.5	-2.0253	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	58.5	-4.4164	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	58.5	-3.145	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	58.5	-5.1696	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	58.5	-7.9023	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	58.5	-15.281	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	58.5	-14.577	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	58.5	-5.7707	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	58.5	-5.6817	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	58.5	-11.133	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	58.5	-7.074	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	58.5	-13.138	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	58.5	-12.422	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	58.5	-11.411	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	58.5	-5.4839	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	58.5	-5.2935	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	58.5	-1.5801	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	58.5	0	0.014099	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	58.5	0	0.78024	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	58.5	0	0.7282	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	58.5	0	0.28389	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	58.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	59	-1.15	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	59	-4.941	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	59	-2.3324	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	59	-4.2264	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	59	-12.475	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	59	-16.259	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	59	-15.44	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	59	-15.27	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	59	-12.784	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	59	-14.893	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	59	-14.122	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	59	-13.56	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	59	-12.499	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	59	-6.1963	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	59	0	0.0086045	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	59	0	0.54679	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	59	0	0.54526	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	59	0	0.10096	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	59	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	59.5	0	0	0	0	0	0	0.17902	0	0	0	0	0	0	0	0
+6.5	59.5	0	0	0	0	0	0	0.61211	0	0	0	0	0	0	0	0
+7	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	59.5	-3.3364	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	59.5	-1.3593	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	59.5	-0.95738	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	59.5	-8.5556	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	59.5	-7.0492	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	59.5	-7.0392	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	59.5	-4.2607	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	59.5	-5.463	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	59.5	-5.175	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	59.5	-3.4258	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	59.5	-8.999	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	59.5	-8.4754	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	59.5	-0.80066	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	59.5	-12.065	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	59.5	-11.317	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	59.5	-12.404	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	59.5	-6.6697	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	59.5	-15.173	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	59.5	-18.956	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	59.5	-18.18	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	59.5	-17.151	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	59.5	-16.474	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	59.5	-16.285	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	59.5	-16.06	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	59.5	-15.02	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	59.5	-13.637	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	59.5	-8.6729	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	59.5	-7.7378	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	59.5	0	0.25579	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	59.5	0	0.36233	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	59.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	60	0	0	0	0	0	0	0.11052	0	0	0	0	0	0	0	0
+6.5	60	0	0	0	0	0	0	1.0503	0	0	0	0	0	0	0	0
+7	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	60	-4.892	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	60	-2.5756	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	60	-3.868	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	60	-3.7556	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	60	-4.9371	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	60	-10.424	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	60	-13.943	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	60	-11.052	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	60	-9.983	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	60	-14.156	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	60	-7.4627	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	60	-3.6226	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	60	-7.6991	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	60	-6.8601	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	60	-2.5609	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	60	-6.2189	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	60	-18.192	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	60	-7.8238	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	60	-13.892	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	60	-20.091	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	60	-12.98	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	60	-22.622	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	60	-21.764	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	60	-20.556	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	60	-19.555	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	60	-19.108	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	60	-18.975	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	60	-18.745	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	60	-17.967	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	60	-12.192	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	60	-4.1326	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	60	-11.228	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	60	-8.8704	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	60	-8.2803	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	60	-0.75574	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	60	0	0.1794	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	60	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	60.5	0	0	0	0	0	0	0.10888	0	0	0	0	0	0	0	0
+7.5	60.5	0	0	0	0	0	0	0.25578	0	0	0	0	0	0	0	0
+8	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	60.5	-0.74797	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	60.5	-5.1269	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	60.5	-8.7596	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	60.5	-9.3374	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	60.5	-10.363	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	60.5	-1.2832	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	60.5	-3.8219	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	60.5	-9.4439	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	60.5	-7.0104	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	60.5	-9.6694	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	60.5	-10.863	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	60.5	-2.0657	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	60.5	-4.6079	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	60.5	-11.818	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	60.5	-19.618	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	60.5	-18.939	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	60.5	-20.959	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	60.5	-14.026	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	60.5	-21.588	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	60.5	-22.418	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	60.5	-23.248	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	60.5	-23.61	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	60.5	-23.488	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	60.5	-22.562	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	60.5	-21.354	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	60.5	-20.145	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	60.5	-19.13	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	60.5	-18.858	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	60.5	-18.713	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	60.5	-18.577	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	60.5	-16.107	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	60.5	-9.8395	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	60.5	-0.78273	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	60.5	-2.1103	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	60.5	-1.5594	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	60.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	61	0	0	0	0	0	0	0.79252	0	0	0	0	0	0	0	0
+7.5	61	0	0	0	0	0	0	1.2098	0	0	0	0	0	0	0	0
+8	61	0	0	0	0	0	0	0.53463	0	0	0	0	0	0	0	0
+8.5	61	0	0	0	0	0	0	0.73671	0	0	0	0	0	0	0	0
+9	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	61	-3.2954	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	61	-8.4671	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	61	-9.9792	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	61	-10.93	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	61	-7.6098	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	61	-5.6148	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	61	-11.329	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	61	-16.737	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	61	-18.021	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	61	-10.39	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	61	-12.329	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	61	-20.436	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	61	-21.065	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	61	-21.499	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	61	-21.412	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	61	-21.12	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	61	-15.214	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	61	-12.253	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	61	-18.053	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	61	-22.962	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	61	-22.521	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	61	-22.22	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	61	-21.601	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	61	-20.943	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	61	-19.424	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	61	-18.999	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	61	-18.603	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	61	-18.441	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	61	-17.409	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	61	-11.29	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	61	-5.5395	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	61	0	0	0	-0.23204	0	0	0	0	0	0	0	0	0	0	0
+294	61	0	0	0	-0.20589	0	0	0	0	0	0	0	0	0	0	0
+294.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	61	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	61.5	0	0	0	0	0	0	0.86845	0	0	0	0	0	0	0	0
+6	61.5	0	0	0	0	0	0	0.66701	0	0	0	0	0	0	0	0
+6.5	61.5	0	0	0	0	0	0	0.31515	0	0	0	0	0	0	0	0
+7	61.5	0	0	0	0	0	0	1.3466	0	0	0	0	0	0	0	0
+7.5	61.5	0	0	0	0	0	0	0.44917	0	0	0	0	0	0	0	0
+8	61.5	0	0	0	0	0	0	0.96521	0	0	0	0	0	0	0	0
+8.5	61.5	0	0	0	0	0	0	1.5516	0	0	0	0	0	0	0	0
+9	61.5	0	0	0	0	0	0	0.4301	0	0	0	0	0	0	0	0
+9.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	61.5	0	0	0	0	0	0	0	0	1.1853	0	0	0	0	0	0
+172	61.5	0	0	0	0	0	0	0	0	0.62851	0	0	0	0	0	0
+172.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	61.5	-2.581	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	61.5	-6.7144	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	61.5	-9.6525	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	61.5	-10.614	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	61.5	-11.043	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	61.5	-9.5056	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	61.5	-6.4167	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	61.5	-7.8532	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	61.5	-17.413	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	61.5	-18.015	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	61.5	-18.419	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	61.5	-18.659	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	61.5	-19.118	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	61.5	-17.892	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	61.5	-8.7394	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	61.5	-2.0566	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	61.5	-3.8922	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	61.5	-5.1068	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	61.5	-5.7835	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	61.5	-9.943	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	61.5	-21.063	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	61.5	-20.671	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	61.5	-17.773	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	61.5	-11.755	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	61.5	-10.145	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	61.5	-8.8754	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	61.5	-9.7675	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	61.5	-14.013	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	61.5	-12.09	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	61.5	-10.334	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	61.5	-8.9079	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	61.5	-4.8255	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	61.5	0	0	0	-0.33226	0	0	0	0	0	0	0	0	0	0	0
+293.5	61.5	0	0	0	-0.92051	0	0	0	0	0	0	0	0	0	0	0
+294	61.5	0	0	0	-0.73823	0	0	0	0	0	0	0	0	0	0	0
+294.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	61.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	62	0	0	0	0	0	0	0.94332	0	0	0	0	0	0	0	0
+6	62	0	0	0	0	0	0	0.67879	0	0	0	0	0	0	0	0
+6.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	62	0	0	0	0	0	0	0.92657	0	0	0	0	0	0	0	0
+7.5	62	0	0	0	0	0	0	1.5649	0	0	0	0	0	0	0	0
+8	62	0	0	0	0	0	0	1.4934	0	0	0	0	0	0	0	0
+8.5	62	0	0	0	0	0	0	1.2967	0	0	0	0	0	0	0	0
+9	62	0	0	0	0	0	0	0.83492	0	0	0	0	0	0	0	0
+9.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	62	0	0	0	0	0	0	0	0	0.65214	0	0	0	0	0	0
+172	62	0	0	0	0	0	0	0	0	0.66866	0	0	0	0	0	0
+172.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	62	-3.3719	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	62	-7.9199	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	62	-6.3551	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	62	-6.2313	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	62	-9.0205	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	62	-3.0559	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	62	-1.2546	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	62	-1.746	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	62	-10.976	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	62	-16.494	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	62	-6.958	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	62	-12.222	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	62	-11.989	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	62	-3.0179	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	62	-0.88481	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	62	-4.6045	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	62	-13.244	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	62	-20.656	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	62	-20.12	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	62	-19.599	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	62	-19.141	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	62	-18.731	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	62	-10.515	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	62	-2.6774	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	62	-4.8338	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	62	-3.2587	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	62	-1.833	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	62	-0.40729	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	62	0	0	0	-0.60801	0	0	0	0	0	0	0	0	0	0	0
+293.5	62	0	0	0	-1.5244	0	0	0	0	0	0	0	0	0	0	0
+294	62	0	0	0	-0.99091	0	0	0	0	0	0	0	0	0	0	0
+294.5	62	0	0	0	-0.20804	0	0	0	0	0	0	0	0	0	0	0
+295	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	62	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	62.5	0	0	0	0	0	0	0.2052	0	0	0	0	0	0	0	0
+6	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	62.5	0	0	0	0	0	0	0.66131	0	0	0	0	0	0	0	0
+8	62.5	0	0	0	0	0	0	0.70213	0	0	0	0	0	0	0	0
+8.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	62.5	-2.7395	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	62.5	-2.9005	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	62.5	-0.76622	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	62.5	-3.8262	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	62.5	-7.4438	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	62.5	-8.6276	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	62.5	-7.8436	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	62.5	-8.0569	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	62.5	-3.6273	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	62.5	-2.0733	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	62.5	-0.58551	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	62.5	-5.6925	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	62.5	-5.2864	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	62.5	-0.032072	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	62.5	-13.279	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	62.5	-12.632	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	62.5	-17.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	62.5	-16.51	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	62.5	-14.656	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	62.5	-14.993	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	62.5	-15.797	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	62.5	-9.4156	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	62.5	-1.4512	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	62.5	0	0	0	-0.55706	0	0	0	0	0	0	0	0	0	0	0
+293.5	62.5	0	0	0	-2.2925	0	0	0	0	0	0	0	0	0	0	0
+294	62.5	0	0	0	-1.4686	0	0	0	0	0	0	0	0	0	0	0
+294.5	62.5	0	0	0	-0.26812	0	0	0	0	0	0	0	0	0	0	0
+295	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	62.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	63	-0.091991	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	63	-1.1796	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	63	-4.8097	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	63	-8.2546	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	63	-9.6636	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	63	-10.486	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	63	-10.093	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	63	-7.8187	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	63	-4.0813	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	63	-0.34376	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	63	-0.84338	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	63	-1.5332	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	63	-9.7939	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	63	-11.916	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	63	-2.529	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	63	-3.6785	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	63	-7.0758	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	63	-5.5646	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	63	-4.1201	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	63	-4.8166	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	63	-8.8251	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	63	-3.8998	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	63	0	0	0	-0.64291	0	0	0	0	0	0	0	0	0	0	0
+293.5	63	0	0	0	-1.177	0	0	0	0	0	0	0	0	0	0	0
+294	63	0	0	0	-0.959	0	0	0	0	0	0	0	0	0	0	0
+294.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	63	0	0	0	0	-6.5556	0	0	0	0	0	0	0	0	0	0
+341	63	0	0	0	0	-9.3269	0	0	0	0	0	0	0	0	0	0
+341.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	63	0	0	0	0	-2.3161	0	0	0	0	0	0	0	0	0	0
+343	63	0	0	0	0	-3.332	0	0	0	0	0	0	0	0	0	0
+343.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	63	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	63.5	-1.9793	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	63.5	-5.6094	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	63.5	-7.1206	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	63.5	-6.9156	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	63.5	-6.4376	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	63.5	-6.9066	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	63.5	-2.1389	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	63.5	-5.8069	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	63.5	-8.2272	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	63.5	-9.4611	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	63.5	-9.6493	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	63.5	-11.237	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	63.5	-7.7099	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	63.5	-1.8647	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	63.5	0	0	0	-0.41822	0	0	0	0	0	0	0	0	0	0	0
+294	63.5	0	0	0	-1.1598	0	0	0	0	0	0	0	0	0	0	0
+294.5	63.5	0	0	0	-2.5919	0	0	0	0	0	0	0	0	0	0	0
+295	63.5	0	0	0	-3.4738	0	0	0	0	0	0	0	0	0	0	0
+295.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	63.5	0	0	0	0	-9.0604	0	0	0	0	0	0	0	0	0	0
+340.5	63.5	0	0	0	0	-21.373	0	0	0	0	0	0	0	0	0	0
+341	63.5	0	0	0	0	-13.441	0	0	0	0	0	0	0	0	0	0
+341.5	63.5	0	0	0	0	-4.1379	0	0	0	0	0	0	0	0	0	0
+342	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	63.5	0	0	0	0	-8.4314	0	0	0	0	0	0	0	0	0	0
+343	63.5	0	0	0	0	-14.305	0	0	0	0	0	0	0	0	0	0
+343.5	63.5	0	0	0	0	-6.6203	0	0	0	0	0	0	0	0	0	0
+344	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	63.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	64	-2.779	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	64	-4.4575	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	64	-3.3454	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	64	-2.2333	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	64	-1.1984	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	64	-8.1554	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	64	-10.083	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	64	-10.113	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	64	-9.8955	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	64	-8.597	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	64	-3.5976	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	64	0	0	0	-2.3058	0	0	0	0	0	0	0	0	0	0	0
+294	64	0	0	0	-6.4832	0	0	0	0	0	0	0	0	0	0	0
+294.5	64	0	0	0	-6.374	0	0	0	0	0	0	0	0	0	0	0
+295	64	0	0	0	-3.3675	0	0	0	0	0	0	0	0	0	0	0
+295.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	64	0	0	0	0	-6.5798	0	0	0	0	0	0	0	0	0	0
+340	64	0	0	0	0	-20.347	0	0	0	0	0	0	0	0	0	0
+340.5	64	0	0	0	0	-10.531	0	0	0	0	0	0	0	0	0	0
+341	64	0	0	0	0	-1.0643	0	0	0	0	0	0	0	0	0	0
+341.5	64	0	0	0	0	-15.536	0	0	0	0	0	0	0	0	0	0
+342	64	0	0	0	0	-10.798	0	0	0	0	0	0	0	0	0	0
+342.5	64	0	0	0	0	-7.8676	0	0	0	0	0	0	0	0	0	0
+343	64	0	0	0	0	-21.537	0	0	0	0	0	0	0	0	0	0
+343.5	64	0	0	0	0	-14.202	0	0	0	0	0	0	0	0	0	0
+344	64	0	0	0	0	-10.034	0	0	0	0	0	0	0	0	0	0
+344.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	64	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	64.5	-0.88731	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	64.5	-0.3695	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	64.5	-3.224	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	64.5	-6.0785	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	64.5	-6.2068	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	64.5	-5.6161	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	64.5	-4.7736	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	64.5	-3.9311	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	64.5	0	0	0	-1.3759	0	0	0	0	0	0	0	0	0	0	0
+294	64.5	0	0	0	-6.0119	0	0	0	0	0	0	0	0	0	0	0
+294.5	64.5	0	0	0	-1.312	0	0	0	0	0	0	0	0	0	0	0
+295	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	64.5	0	0	0	0	-11.456	0	0	0	0	0	0	0	0	0	0
+340	64.5	0	0	0	0	-22.108	0	0	0	0	0	0	0	0	0	0
+340.5	64.5	0	0	0	0	-3.0167	0	0	0	0	0	0	0	0	0	0
+341	64.5	0	0	0	0	-17.794	0	0	0	0	0	0	0	0	0	0
+341.5	64.5	0	0	0	0	-27.017	0	0	0	0	0	0	0	0	0	0
+342	64.5	0	0	0	0	-24.303	0	0	0	0	0	0	0	0	0	0
+342.5	64.5	0	0	0	0	-20.227	0	0	0	0	0	0	0	0	0	0
+343	64.5	0	0	0	0	-23.096	0	0	0	0	0	0	0	0	0	0
+343.5	64.5	0	0	0	0	-22.421	0	0	0	0	0	0	0	0	0	0
+344	64.5	0	0	0	0	-21.607	0	0	0	0	0	0	0	0	0	0
+344.5	64.5	0	0	0	0	-14.063	0	0	0	0	0	0	0	0	0	0
+345	64.5	0	0	0	0	-11.205	0	0	0	0	0	0	0	0	0	0
+345.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	64.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	65	-1.1472	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	65	-2.1791	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	65	-1.3366	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	65	-0.49413	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	65	0	0	0	0	-0.54259	0	0	0	0	0	0	0	0	0	0
+339.5	65	0	0	0	0	-15.9	0	0	0	0	0	0	0	0	0	0
+340	65	0	0	0	0	-26.238	0	0	0	0	0	0	0	0	0	0
+340.5	65	0	0	0	0	-23.572	0	0	0	0	0	0	0	0	0	0
+341	65	0	0	0	0	-27.736	0	0	0	0	0	0	0	0	0	0
+341.5	65	0	0	0	0	-9.3829	0	0	0	0	0	0	0	0	0	0
+342	65	0	0	0	0	-18.907	0	0	0	0	0	0	0	0	0	0
+342.5	65	0	0	0	0	-16.807	0	0	0	0	0	0	0	0	0	0
+343	65	0	0	0	0	-11.422	0	0	0	0	0	0	0	0	0	0
+343.5	65	0	0	0	0	-22.282	0	0	0	0	0	0	0	0	0	0
+344	65	0	0	0	0	-9.4822	0	0	0	0	0	0	0	0	0	0
+344.5	65	0	0	0	0	-5.3721	0	0	0	0	0	0	0	0	0	0
+345	65	0	0	0	0	-10.129	0	0	0	0	0	0	0	0	0	0
+345.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	65	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	65.5	0	0	0	0	0	0	0.58798	0	0	0	0	0	0	0	0
+15	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	65.5	0	0	0	-1.0877	0	0	0	0	0	0	0	0	0	0	0
+296	65.5	0	0	0	-8.2773	0	0	0	0	0	0	0	0	0	0	0
+296.5	65.5	0	0	0	-9.0071	0	0	0	0	0	0	0	0	0	0	0
+297	65.5	0	0	0	-6.8624	0	0	0	0	0	0	0	0	0	0	0
+297.5	65.5	0	0	0	-3.3466	0	0	0	0	0	0	0	0	0	0	0
+298	65.5	0	0	0	-2.3854	0	0	0	0	0	0	0	0	0	0	0
+298.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	65.5	0	0	0	0	-1.34	0	0	0	0	0	0	0	0	0	0
+340	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	65.5	0	0	0	0	-14.827	0	0	0	0	0	0	0	0	0	0
+341	65.5	0	0	0	0	-28.543	0	0	0	0	0	0	0	0	0	0
+341.5	65.5	0	0	0	0	-27.244	0	0	0	0	0	0	0	0	0	0
+342	65.5	0	0	0	0	-2.1429	0	0	0	0	0	0	0	0	0	0
+342.5	65.5	0	0	0	0	-4.5843	0	0	0	0	0	0	0	0	0	0
+343	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	65.5	0	0	0	0	-6.9167	0	0	0	0	0	0	0	0	0	0
+344	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	65.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	66	0	0	0	0	0	0	1.0989	0	0	0	0	0	0	0	0
+14.5	66	0	0	0	0	0	0	1.8973	0	0	0	0	0	0	0	0
+15	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	66	0	0	0	-2.6442	0	0	0	0	0	0	0	0	0	0	0
+295.5	66	0	0	0	-10.141	0	0	0	0	0	0	0	0	0	0	0
+296	66	0	0	0	-14.129	0	0	0	0	0	0	0	0	0	0	0
+296.5	66	0	0	0	-14.443	0	0	0	0	0	0	0	0	0	0	0
+297	66	0	0	0	-14.532	0	0	0	0	0	0	0	0	0	0	0
+297.5	66	0	0	0	-14.432	0	0	0	0	0	0	0	0	0	0	0
+298	66	0	0	0	-5.2833	0	0	0	0	0	0	0	0	0	0	0
+298.5	66	0	0	0	-2.9331	0	0	0	0	0	0	0	0	0	0	0
+299	66	0	0	0	-1.8165	0	0	0	0	0	0	0	0	0	0	0
+299.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	66	0	0	0	0	-7.2295	0	0	0	0	0	0	0	0	0	0
+341	66	0	0	0	0	-1.1766	0	0	0	0	0	0	0	0	0	0
+341.5	66	0	0	0	0	-5.9926	0	0	0	0	0	0	0	0	0	0
+342	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	66	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	66.5	0	0	0	0	0	0	0.74769	0	0	0	0	0	0	0	0
+14	66.5	0	0	0	0	0	0	1.959	0	0	0	0	0	0	0	0
+14.5	66.5	0	0	0	0	0	0	1.915	0	0	0	0	0	0	0	0
+15	66.5	0	0	0	0	0	0	1.19	0	0	0	0	0	0	0	0
+15.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	66.5	0	0	0	0	0	0	0.025161	0	0	0	0	0	0	0	0
+17	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	66.5	0	0	0	0	0	0	0.090174	0	0	0	0	0	0	0	0
+18.5	66.5	0	0	0	0	0	0	0.37607	0	0	0	0	0	0	0	0
+19	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	66.5	0	0	0	0	0	0	0	0	0.097095	0	0	0	0	0	0
+137	66.5	0	0	0	0	0	0	0	0	0.092943	0	0	0	0	0	0
+137.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	66.5	-0.084925	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	66.5	0	0	0	-5.7426	0	0	0	0	0	0	0	0	0	0	0
+293	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	66.5	0	0	0	-7.565	0	0	0	0	0	0	0	0	0	0	0
+294	66.5	0	0	0	-10.98	0	0	0	0	0	0	0	0	0	0	0
+294.5	66.5	0	0	0	-15.417	0	0	0	0	0	0	0	0	0	0	0
+295	66.5	0	0	0	-15.665	0	0	0	0	0	0	0	0	0	0	0
+295.5	66.5	0	0	0	-14.758	0	0	0	0	0	0	0	0	0	0	0
+296	66.5	0	0	0	-15.855	0	0	0	0	0	0	0	0	0	0	0
+296.5	66.5	0	0	0	-15.942	0	0	0	0	0	0	0	0	0	0	0
+297	66.5	0	0	0	-16.029	0	0	0	0	0	0	0	0	0	0	0
+297.5	66.5	0	0	0	-16.05	0	0	0	0	0	0	0	0	0	0	0
+298	66.5	0	0	0	-14.138	0	0	0	0	0	0	0	0	0	0	0
+298.5	66.5	0	0	0	-13.747	0	0	0	0	0	0	0	0	0	0	0
+299	66.5	0	0	0	-8.6888	0	0	0	0	0	0	0	0	0	0	0
+299.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	66.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	67	0	0	0	0	0	0	0.57322	0	0	0	0	0	0	0	0
+14	67	0	0	0	0	0	0	0.93258	0	0	0	0	0	0	0	0
+14.5	67	0	0	0	0	0	0	1.5953	0	0	0	0	0	0	0	0
+15	67	0	0	0	0	0	0	1.1114	0	0	0	0	0	0	0	0
+15.5	67	0	0	0	0	0	0	0.12482	0	0	0	0	0	0	0	0
+16	67	0	0	0	0	0	0	1.2608	0	0	0	0	0	0	0	0
+16.5	67	0	0	0	0	0	0	0.236	0	0	0	0	0	0	0	0
+17	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	67	0	0	0	0	0	0	0.55073	0	0	0	0	0	0	0	0
+18	67	0	0	0	0	0	0	1.3412	0	0	0	0	0	0	0	0
+18.5	67	0	0	0	0	0	0	0.23772	0	0	0	0	0	0	0	0
+19	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	67	0	0	0	0	0	0	0	0	0.22327	0	0	0	0	0	0
+137	67	0	0	0	0	0	0	0	0	0.55905	0	0	0	0	0	0
+137.5	67	0	0	0	0	0	0	0	0	0.4856	0	0	0	0	0	0
+138	67	0	0	0	0	0	0	0	0	0.30656	0	0	0	0	0	0
+138.5	67	0	0	0	0	0	0	0	0	0.12751	0	0	0	0	0	0
+139	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	67	-0.52606	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	67	-0.62404	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	67	-0.72202	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	67	-0.64572	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	67	0	0	0	-3.3208	0	0	0	0	0	0	0	0	0	0	0
+292	67	0	0	0	-11.161	0	0	0	0	0	0	0	0	0	0	0
+292.5	67	0	0	0	-17.111	0	0	0	0	0	0	0	0	0	0	0
+293	67	0	0	0	-10.889	0	0	0	0	0	0	0	0	0	0	0
+293.5	67	0	0	0	-11.012	0	0	0	0	0	0	0	0	0	0	0
+294	67	0	0	0	-16.921	0	0	0	0	0	0	0	0	0	0	0
+294.5	67	0	0	0	-16.787	0	0	0	0	0	0	0	0	0	0	0
+295	67	0	0	0	-16.67	0	0	0	0	0	0	0	0	0	0	0
+295.5	67	0	0	0	-16.757	0	0	0	0	0	0	0	0	0	0	0
+296	67	0	0	0	-13.339	0	0	0	0	0	0	0	0	0	0	0
+296.5	67	0	0	0	-14.104	0	0	0	0	0	0	0	0	0	0	0
+297	67	0	0	0	-11.627	0	0	0	0	0	0	0	0	0	0	0
+297.5	67	0	0	0	-5.5836	0	0	0	0	0	0	0	0	0	0	0
+298	67	0	0	0	-4.4431	0	0	0	0	0	0	0	0	0	0	0
+298.5	67	0	0	0	-7.0498	0	0	0	0	0	0	0	0	0	0	0
+299	67	0	0	0	-6.2579	0	0	0	0	0	0	0	0	0	0	0
+299.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	67	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	67.5	0	0	0	0	0	0	0.71292	0	0	0	0	0	0	0	0
+16	67.5	0	0	0	0	0	0	1.0096	0	0	0	0	0	0	0	0
+16.5	67.5	0	0	0	0	0	0	0.29481	0	0	0	0	0	0	0	0
+17	67.5	0	0	0	0	0	0	0.15509	0	0	0	0	0	0	0	0
+17.5	67.5	0	0	0	0	0	0	0.66684	0	0	0	0	0	0	0	0
+18	67.5	0	0	0	0	0	0	0.68037	0	0	0	0	0	0	0	0
+18.5	67.5	0	0	0	0	0	0	0.099357	0	0	0	0	0	0	0	0
+19	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	67.5	0	0	0	0	0	0	0	0	0.013666	0	0	0	0	0	0
+136.5	67.5	0	0	0	0	0	0	0	0	0.34945	0	0	0	0	0	0
+137	67.5	0	0	0	0	0	0	0	0	0.68523	0	0	0	0	0	0
+137.5	67.5	0	0	0	0	0	0	0	0	1.021	0	0	0	0	0	0
+138	67.5	0	0	0	0	0	0	0	0	0.87826	0	0	0	0	0	0
+138.5	67.5	0	0	0	0	0	0	0	0	0.56791	0	0	0	0	0	0
+139	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	67.5	-1.0728	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	67.5	-1.3591	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	67.5	-1.4571	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	67.5	-0.71018	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	67.5	0	0	0	-2.8535	0	0	0	0	0	0	0	0	0	0	0
+292	67.5	0	0	0	-13.253	0	0	0	0	0	0	0	0	0	0	0
+292.5	67.5	0	0	0	-18.622	0	0	0	0	0	0	0	0	0	0	0
+293	67.5	0	0	0	-18.254	0	0	0	0	0	0	0	0	0	0	0
+293.5	67.5	0	0	0	-18.004	0	0	0	0	0	0	0	0	0	0	0
+294	67.5	0	0	0	-17.704	0	0	0	0	0	0	0	0	0	0	0
+294.5	67.5	0	0	0	-17.509	0	0	0	0	0	0	0	0	0	0	0
+295	67.5	0	0	0	-17.377	0	0	0	0	0	0	0	0	0	0	0
+295.5	67.5	0	0	0	-4.9392	0	0	0	0	0	0	0	0	0	0	0
+296	67.5	0	0	0	-0.28958	0	0	0	0	0	0	0	0	0	0	0
+296.5	67.5	0	0	0	-1.1898	0	0	0	0	0	0	0	0	0	0	0
+297	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	67.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	68	0	0	0	0	0	0	0.60692	0	0	0	0	0	0	0	0
+17.5	68	0	0	0	0	0	0	0.20142	0	0	0	0	0	0	0	0
+18	68	0	0	0	0	0	0	0.36225	0	0	0	0	0	0	0	0
+18.5	68	0	0	0	0	0	0	0.60568	0	0	0	0	0	0	0	0
+19	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	68	0	0	0	0	0	0	0	0	0.13984	0	0	0	0	0	0
+136.5	68	0	0	0	0	0	0	0	0	0.47562	0	0	0	0	0	0
+137	68	0	0	0	0	0	0	0	0	0.8114	0	0	0	0	0	0
+137.5	68	0	0	0	0	0	0	0	0	1.1398	0	0	0	0	0	0
+138	68	0	0	0	0	0	0	0	0	1.3725	0	0	0	0	0	0
+138.5	68	0	0	0	0	0	0	0	0	0.76693	0	0	0	0	0	0
+139	68	0	0	0	0	0	0	0	0	0.15802	0	0	0	0	0	0
+139.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	68	-0.72333	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	68	-2.0942	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	68	-1.7765	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	68	-0.77464	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	68	0	0	0	-1.0736	0	0	0	0	0	0	0	0	0	0	0
+291	68	0	0	0	-1.6525	0	0	0	0	0	0	0	0	0	0	0
+291.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	68	0	0	0	-3.6464	0	0	0	0	0	0	0	0	0	0	0
+292.5	68	0	0	0	-18.965	0	0	0	0	0	0	0	0	0	0	0
+293	68	0	0	0	-12.627	0	0	0	0	0	0	0	0	0	0	0
+293.5	68	0	0	0	-15.271	0	0	0	0	0	0	0	0	0	0	0
+294	68	0	0	0	-15.523	0	0	0	0	0	0	0	0	0	0	0
+294.5	68	0	0	0	-6.2993	0	0	0	0	0	0	0	0	0	0	0
+295	68	0	0	0	-5.0569	0	0	0	0	0	0	0	0	0	0	0
+295.5	68	0	0	0	-1.7269	0	0	0	0	0	0	0	0	0	0	0
+296	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	68	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	68.5	0	0	0	0	0	0	0.059199	0	0	0	0	0	0	0	0
+17	68.5	0	0	0	0	0	0	0.76594	0	0	0	0	0	0	0	0
+17.5	68.5	0	0	0	0	0	0	1.1625	0	0	0	0	0	0	0	0
+18	68.5	0	0	0	0	0	0	1.5229	0	0	0	0	0	0	0	0
+18.5	68.5	0	0	0	0	0	0	1.2436	0	0	0	0	0	0	0	0
+19	68.5	0	0	0	0	0	0	0.55451	0	0	0	0	0	0	0	0
+19.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	68.5	0	0	0	0	0	0	0	0	0.31097	0	0	0	0	0	0
+137	68.5	0	0	0	0	0	0	0	0	0.63307	0	0	0	0	0	0
+137.5	68.5	0	0	0	0	0	0	0	0	0.95325	0	0	0	0	0	0
+138	68.5	0	0	0	0	0	0	0	0	0.92752	0	0	0	0	0	0
+138.5	68.5	0	0	0	0	0	0	0	0	0.71343	0	0	0	0	0	0
+139	68.5	0	0	0	0	0	0	0	0	0.3249	0	0	0	0	0	0
+139.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	68.5	-0.15627	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	68.5	-1.606	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	68.5	-1.4968	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	68.5	-0.55491	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	68.5	-0.46415	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	68.5	-0.61599	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	68.5	-0.24566	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	68.5	0	0	0	-1.8912	0	0	0	0	0	0	0	0	0	0	0
+290	68.5	0	0	0	-14.954	0	0	0	0	0	0	0	0	0	0	0
+290.5	68.5	0	0	0	-12.521	0	0	0	0	0	0	0	0	0	0	0
+291	68.5	0	0	0	-12.287	0	0	0	0	0	0	0	0	0	0	0
+291.5	68.5	0	0	0	-2.7775	0	0	0	0	0	0	0	0	0	0	0
+292	68.5	0	0	0	-6.5841	0	0	0	0	0	0	0	0	0	0	0
+292.5	68.5	0	0	0	-13.156	0	0	0	0	0	0	0	0	0	0	0
+293	68.5	0	0	0	-4.1122	0	0	0	0	0	0	0	0	0	0	0
+293.5	68.5	0	0	0	-1.5345	0	0	0	0	0	0	0	0	0	0	0
+294	68.5	0	0	0	-6.694	0	0	0	0	0	0	0	0	0	0	0
+294.5	68.5	0	0	0	-5.648	0	0	0	0	0	0	0	0	0	0	0
+295	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	68.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	69	0	0	0	0	0	0	0.024327	0	0	0	0	0	0	0	0
+18.5	69	0	0	0	0	0	0	0.30092	0	0	0	0	0	0	0	0
+19	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	69	0	0	0	0	0	0	0	0	0.12634	0	0	0	0	0	0
+137	69	0	0	0	0	0	0	0	0	0.44845	0	0	0	0	0	0
+137.5	69	0	0	0	0	0	0	0	0	0.47815	0	0	0	0	0	0
+138	69	0	0	0	0	0	0	0	0	0.45242	0	0	0	0	0	0
+138.5	69	0	0	0	0	0	0	0	0	0.42669	0	0	0	0	0	0
+139	69	0	0	0	0	0	0	0	0	0.054328	0	0	0	0	0	0
+139.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	69	-0.26077	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	69	-0.40665	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	69	-0.67988	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	69	-1.3978	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	69	-1.2065	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	69	-0.38084	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	69	0	0	0	-9.6784	0	0	0	0	0	0	0	0	0	0	0
+288	69	0	0	0	-8.7112	0	0	0	0	0	0	0	0	0	0	0
+288.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	69	0	0	0	-2.5006	0	0	0	0	0	0	0	0	0	0	0
+289.5	69	0	0	0	-13.3	0	0	0	0	0	0	0	0	0	0	0
+290	69	0	0	0	-21.342	0	0	0	0	0	0	0	0	0	0	0
+290.5	69	0	0	0	-21.231	0	0	0	0	0	0	0	0	0	0	0
+291	69	0	0	0	-19.299	0	0	0	0	0	0	0	0	0	0	0
+291.5	69	0	0	0	-8.0708	0	0	0	0	0	0	0	0	0	0	0
+292	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	69	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	69.5	0	0	0	0	0	0	0.53937	0	0	0	0	0	0	0	0
+20	69.5	0	0	0	0	0	0	0.80152	0	0	0	0	0	0	0	0
+20.5	69.5	0	0	0	0	0	0	0.35588	0	0	0	0	0	0	0	0
+21	69.5	0	0	0	0	0	0	0.36154	0	0	0	0	0	0	0	0
+21.5	69.5	0	0	0	0	0	0	0.38633	0	0	0	0	0	0	0	0
+22	69.5	0	0	0	0	0	0	0.22579	0	0	0	0	0	0	0	0
+22.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	69.5	0	0	0	0	0	0	0	0	0.028775	0	0	0	0	0	0
+137.5	69.5	0	0	0	0	0	0	0	0	0.0030458	0	0	0	0	0	0
+138	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	69.5	-0.50933	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	69.5	-0.87956	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	69.5	-0.714	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	69.5	-0.055891	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	69.5	0	0	0	-9.4253	0	0	0	0	0	0	0	0	0	0	0
+286.5	69.5	0	0	0	-16.749	0	0	0	0	0	0	0	0	0	0	0
+287	69.5	0	0	0	-14.5	0	0	0	0	0	0	0	0	0	0	0
+287.5	69.5	0	0	0	-20.202	0	0	0	0	0	0	0	0	0	0	0
+288	69.5	0	0	0	-17.614	0	0	0	0	0	0	0	0	0	0	0
+288.5	69.5	0	0	0	-7.7543	0	0	0	0	0	0	0	0	0	0	0
+289	69.5	0	0	0	-7.5659	0	0	0	0	0	0	0	0	0	0	0
+289.5	69.5	0	0	0	-17.511	0	0	0	0	0	0	0	0	0	0	0
+290	69.5	0	0	0	-21.881	0	0	0	0	0	0	0	0	0	0	0
+290.5	69.5	0	0	0	-21.751	0	0	0	0	0	0	0	0	0	0	0
+291	69.5	0	0	0	-18.239	0	0	0	0	0	0	0	0	0	0	0
+291.5	69.5	0	0	0	-8.8106	0	0	0	0	0	0	0	0	0	0	0
+292	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	69.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	70	0	0	0	0	0	0	0.39957	0	0	0	0	0	0	0	0
+19.5	70	0	0	0	0	0	0	0.91493	0	0	0	0	0	0	0	0
+20	70	0	0	0	0	0	0	0.94575	0	0	0	0	0	0	0	0
+20.5	70	0	0	0	0	0	0	1.426	0	0	0	0	0	0	0	0
+21	70	0	0	0	0	0	0	1.4007	0	0	0	0	0	0	0	0
+21.5	70	0	0	0	0	0	0	1.3936	0	0	0	0	0	0	0	0
+22	70	0	0	0	0	0	0	0.98347	0	0	0	0	0	0	0	0
+22.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	70	0	0	0	-15.644	0	0	0	0	0	0	0	0	0	0	0
+286	70	0	0	0	-22.775	0	0	0	0	0	0	0	0	0	0	0
+286.5	70	0	0	0	-22.767	0	0	0	0	0	0	0	0	0	0	0
+287	70	0	0	0	-22.554	0	0	0	0	0	0	0	0	0	0	0
+287.5	70	0	0	0	-22.423	0	0	0	0	0	0	0	0	0	0	0
+288	70	0	0	0	-22.474	0	0	0	0	0	0	0	0	0	0	0
+288.5	70	0	0	0	-17.257	0	0	0	0	0	0	0	0	0	0	0
+289	70	0	0	0	-19.442	0	0	0	0	0	0	0	0	0	0	0
+289.5	70	0	0	0	-22.505	0	0	0	0	0	0	0	0	0	0	0
+290	70	0	0	0	-22.368	0	0	0	0	0	0	0	0	0	0	0
+290.5	70	0	0	0	-22.231	0	0	0	0	0	0	0	0	0	0	0
+291	70	0	0	0	-13.395	0	0	0	0	0	0	0	0	0	0	0
+291.5	70	0	0	0	-4.6899	0	0	0	0	0	0	0	0	0	0	0
+292	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	70	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	70.5	0	0	0	0	0	0	0.31652	0	0	0	0	0	0	0	0
+21.5	70.5	0	0	0	0	0	0	0.1748	0	0	0	0	0	0	0	0
+22	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	70.5	0	0	0	-8.3353	0	0	0	0	0	0	0	0	0	0	0
+285.5	70.5	0	0	0	-10.92	0	0	0	0	0	0	0	0	0	0	0
+286	70.5	0	0	0	-14.446	0	0	0	0	0	0	0	0	0	0	0
+286.5	70.5	0	0	0	-23.272	0	0	0	0	0	0	0	0	0	0	0
+287	70.5	0	0	0	-23.262	0	0	0	0	0	0	0	0	0	0	0
+287.5	70.5	0	0	0	-23.187	0	0	0	0	0	0	0	0	0	0	0
+288	70.5	0	0	0	-23.164	0	0	0	0	0	0	0	0	0	0	0
+288.5	70.5	0	0	0	-23.187	0	0	0	0	0	0	0	0	0	0	0
+289	70.5	0	0	0	-23.097	0	0	0	0	0	0	0	0	0	0	0
+289.5	70.5	0	0	0	-22.997	0	0	0	0	0	0	0	0	0	0	0
+290	70.5	0	0	0	-22.854	0	0	0	0	0	0	0	0	0	0	0
+290.5	70.5	0	0	0	-18.41	0	0	0	0	0	0	0	0	0	0	0
+291	70.5	0	0	0	-9.6443	0	0	0	0	0	0	0	0	0	0	0
+291.5	70.5	0	0	0	-0.87857	0	0	0	0	0	0	0	0	0	0	0
+292	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	70.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	71	0	0	0	-5.7056	0	0	0	0	0	0	0	0	0	0	0
+281.5	71	0	0	0	-3.394	0	0	0	0	0	0	0	0	0	0	0
+282	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	71	0	0	0	-1.9265	0	0	0	0	0	0	0	0	0	0	0
+283	71	0	0	0	-8.1648	0	0	0	0	0	0	0	0	0	0	0
+283.5	71	0	0	0	-5.8404	0	0	0	0	0	0	0	0	0	0	0
+284	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	71	0	0	0	-7.3375	0	0	0	0	0	0	0	0	0	0	0
+285	71	0	0	0	-10.518	0	0	0	0	0	0	0	0	0	0	0
+285.5	71	0	0	0	-13.58	0	0	0	0	0	0	0	0	0	0	0
+286	71	0	0	0	-23.437	0	0	0	0	0	0	0	0	0	0	0
+286.5	71	0	0	0	-23.603	0	0	0	0	0	0	0	0	0	0	0
+287	71	0	0	0	-23.769	0	0	0	0	0	0	0	0	0	0	0
+287.5	71	0	0	0	-19.31	0	0	0	0	0	0	0	0	0	0	0
+288	71	0	0	0	-16.981	0	0	0	0	0	0	0	0	0	0	0
+288.5	71	0	0	0	-16.272	0	0	0	0	0	0	0	0	0	0	0
+289	71	0	0	0	-17.657	0	0	0	0	0	0	0	0	0	0	0
+289.5	71	0	0	0	-13.009	0	0	0	0	0	0	0	0	0	0	0
+290	71	0	0	0	-7.4973	0	0	0	0	0	0	0	0	0	0	0
+290.5	71	0	0	0	-8.2061	0	0	0	0	0	0	0	0	0	0	0
+291	71	0	0	0	-7.9971	0	0	0	0	0	0	0	0	0	0	0
+291.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	71	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	71.5	0	0	0	-7.1139	0	0	0	0	0	0	0	0	0	0	0
+281	71.5	0	0	0	-16.882	0	0	0	0	0	0	0	0	0	0	0
+281.5	71.5	0	0	0	-5.3043	0	0	0	0	0	0	0	0	0	0	0
+282	71.5	0	0	0	-6.4771	0	0	0	0	0	0	0	0	0	0	0
+282.5	71.5	0	0	0	-15.654	0	0	0	0	0	0	0	0	0	0	0
+283	71.5	0	0	0	-21.495	0	0	0	0	0	0	0	0	0	0	0
+283.5	71.5	0	0	0	-13.589	0	0	0	0	0	0	0	0	0	0	0
+284	71.5	0	0	0	-12.256	0	0	0	0	0	0	0	0	0	0	0
+284.5	71.5	0	0	0	-22.114	0	0	0	0	0	0	0	0	0	0	0
+285	71.5	0	0	0	-23.437	0	0	0	0	0	0	0	0	0	0	0
+285.5	71.5	0	0	0	-23.672	0	0	0	0	0	0	0	0	0	0	0
+286	71.5	0	0	0	-23.917	0	0	0	0	0	0	0	0	0	0	0
+286.5	71.5	0	0	0	-24.171	0	0	0	0	0	0	0	0	0	0	0
+287	71.5	0	0	0	-24.619	0	0	0	0	0	0	0	0	0	0	0
+287.5	71.5	0	0	0	-16.171	0	0	0	0	0	0	0	0	0	0	0
+288	71.5	0	0	0	-7.159	0	0	0	0	0	0	0	0	0	0	0
+288.5	71.5	0	0	0	-2.6273	0	0	0	0	0	0	0	0	0	0	0
+289	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	71.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	72	0	0	0	-0.90583	0	0	0	0	0	0	0	0	0	0	0
+281	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	72	0	0	0	-5.7537	0	0	0	0	0	0	0	0	0	0	0
+282	72	0	0	0	-15.777	0	0	0	0	0	0	0	0	0	0	0
+282.5	72	0	0	0	-21.589	0	0	0	0	0	0	0	0	0	0	0
+283	72	0	0	0	-22.249	0	0	0	0	0	0	0	0	0	0	0
+283.5	72	0	0	0	-22.881	0	0	0	0	0	0	0	0	0	0	0
+284	72	0	0	0	-23.374	0	0	0	0	0	0	0	0	0	0	0
+284.5	72	0	0	0	-23.617	0	0	0	0	0	0	0	0	0	0	0
+285	72	0	0	0	-23.951	0	0	0	0	0	0	0	0	0	0	0
+285.5	72	0	0	0	-24.226	0	0	0	0	0	0	0	0	0	0	0
+286	72	0	0	0	-24.919	0	0	0	0	0	0	0	0	0	0	0
+286.5	72	0	0	0	-20.84	0	0	0	0	0	0	0	0	0	0	0
+287	72	0	0	0	-11.434	0	0	0	0	0	0	0	0	0	0	0
+287.5	72	0	0	0	-2.8711	0	0	0	0	0	0	0	0	0	0	0
+288	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	72	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	72.5	0	0	0	-3.5433	0	0	0	0	0	0	0	0	0	0	0
+277.5	72.5	0	0	0	-4.5404	0	0	0	0	0	0	0	0	0	0	0
+278	72.5	0	0	0	-4.3607	0	0	0	0	0	0	0	0	0	0	0
+278.5	72.5	0	0	0	-2.4234	0	0	0	0	0	0	0	0	0	0	0
+279	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	72.5	0	0	0	-9.0785	0	0	0	0	0	0	0	0	0	0	0
+282	72.5	0	0	0	-19.246	0	0	0	0	0	0	0	0	0	0	0
+282.5	72.5	0	0	0	-22.343	0	0	0	0	0	0	0	0	0	0	0
+283	72.5	0	0	0	-23.003	0	0	0	0	0	0	0	0	0	0	0
+283.5	72.5	0	0	0	-18.014	0	0	0	0	0	0	0	0	0	0	0
+284	72.5	0	0	0	-14.061	0	0	0	0	0	0	0	0	0	0	0
+284.5	72.5	0	0	0	-13.181	0	0	0	0	0	0	0	0	0	0	0
+285	72.5	0	0	0	-14.727	0	0	0	0	0	0	0	0	0	0	0
+285.5	72.5	0	0	0	-9.197	0	0	0	0	0	0	0	0	0	0	0
+286	72.5	0	0	0	-7.0825	0	0	0	0	0	0	0	0	0	0	0
+286.5	72.5	0	0	0	-7.2443	0	0	0	0	0	0	0	0	0	0	0
+287	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	72.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	73	0	0	0	0	0	0	0	-0.1958	0	0	0	0	0	0	0
+54	73	0	0	0	0	0	0	0	-3.4929	0	0	0	0	0	0	0
+54.5	73	0	0	0	0	0	0	0	-5.2372	0	0	0	0	0	0	0
+55	73	0	0	0	0	0	0	0	-5.4488	0	0	0	0	0	0	0
+55.5	73	0	0	0	0	0	0	0	-5.4623	0	0	0	0	0	0	0
+56	73	0	0	0	0	0	0	0	-2.6141	0	0	0	0	0	0	0
+56.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	73	0	0	0	-4.4943	0	0	0	0	0	0	0	0	0	0	0
+275	73	0	0	0	-0.94145	0	0	0	0	0	0	0	0	0	0	0
+275.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	73	0	0	0	-5.8349	0	0	0	0	0	0	0	0	0	0	0
+277	73	0	0	0	-15.689	0	0	0	0	0	0	0	0	0	0	0
+277.5	73	0	0	0	-16.625	0	0	0	0	0	0	0	0	0	0	0
+278	73	0	0	0	-17.562	0	0	0	0	0	0	0	0	0	0	0
+278.5	73	0	0	0	-14.01	0	0	0	0	0	0	0	0	0	0	0
+279	73	0	0	0	-8.5375	0	0	0	0	0	0	0	0	0	0	0
+279.5	73	0	0	0	-1.6213	0	0	0	0	0	0	0	0	0	0	0
+280	73	0	0	0	-2.0582	0	0	0	0	0	0	0	0	0	0	0
+280.5	73	0	0	0	-11.584	0	0	0	0	0	0	0	0	0	0	0
+281	73	0	0	0	-14.295	0	0	0	0	0	0	0	0	0	0	0
+281.5	73	0	0	0	-16.699	0	0	0	0	0	0	0	0	0	0	0
+282	73	0	0	0	-22.436	0	0	0	0	0	0	0	0	0	0	0
+282.5	73	0	0	0	-23.097	0	0	0	0	0	0	0	0	0	0	0
+283	73	0	0	0	-22.462	0	0	0	0	0	0	0	0	0	0	0
+283.5	73	0	0	0	-13.791	0	0	0	0	0	0	0	0	0	0	0
+284	73	0	0	0	-5.4018	0	0	0	0	0	0	0	0	0	0	0
+284.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	73	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	73.5	0	0	0	0	0	0	0	-4.5995	0	0	0	0	0	0	0
+54.5	73.5	0	0	0	0	0	0	0	-6.0271	0	0	0	0	0	0	0
+55	73.5	0	0	0	0	0	0	0	-5.2985	0	0	0	0	0	0	0
+55.5	73.5	0	0	0	0	0	0	0	-4.8093	0	0	0	0	0	0	0
+56	73.5	0	0	0	0	0	0	0	-7.3026	0	0	0	0	0	0	0
+56.5	73.5	0	0	0	0	0	0	0	-3.7077	0	0	0	0	0	0	0
+57	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	73.5	0	0	0	-0.24489	0	0	0	0	0	0	0	0	0	0	0
+274	73.5	0	0	0	-9.6816	0	0	0	0	0	0	0	0	0	0	0
+274.5	73.5	0	0	0	-12.921	0	0	0	0	0	0	0	0	0	0	0
+275	73.5	0	0	0	-4.414	0	0	0	0	0	0	0	0	0	0	0
+275.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	73.5	0	0	0	-7.4144	0	0	0	0	0	0	0	0	0	0	0
+277.5	73.5	0	0	0	-19.409	0	0	0	0	0	0	0	0	0	0	0
+278	73.5	0	0	0	-19.078	0	0	0	0	0	0	0	0	0	0	0
+278.5	73.5	0	0	0	-6.7589	0	0	0	0	0	0	0	0	0	0	0
+279	73.5	0	0	0	-14.152	0	0	0	0	0	0	0	0	0	0	0
+279.5	73.5	0	0	0	-17.783	0	0	0	0	0	0	0	0	0	0	0
+280	73.5	0	0	0	-13.782	0	0	0	0	0	0	0	0	0	0	0
+280.5	73.5	0	0	0	-17.514	0	0	0	0	0	0	0	0	0	0	0
+281	73.5	0	0	0	-22.91	0	0	0	0	0	0	0	0	0	0	0
+281.5	73.5	0	0	0	-23.066	0	0	0	0	0	0	0	0	0	0	0
+282	73.5	0	0	0	-23.337	0	0	0	0	0	0	0	0	0	0	0
+282.5	73.5	0	0	0	-22.272	0	0	0	0	0	0	0	0	0	0	0
+283	73.5	0	0	0	-17.209	0	0	0	0	0	0	0	0	0	0	0
+283.5	73.5	0	0	0	-8.8297	0	0	0	0	0	0	0	0	0	0	0
+284	73.5	0	0	0	-0.45009	0	0	0	0	0	0	0	0	0	0	0
+284.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	73.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	74	0	0	0	0	0	0	0	-0.29746	0	0	0	0	0	0	0
+55.5	74	0	0	0	0	0	0	0	-2.3292	0	0	0	0	0	0	0
+56	74	0	0	0	0	0	0	0	-5.0209	0	0	0	0	0	0	0
+56.5	74	0	0	0	0	0	0	0	-7.8313	0	0	0	0	0	0	0
+57	74	0	0	0	0	0	0	0	-6.668	0	0	0	0	0	0	0
+57.5	74	0	0	0	0	0	0	0	-3.4633	0	0	0	0	0	0	0
+58	74	0	0	0	0	0	0	0	-0.27783	0	0	0	0	0	0	0
+58.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	74	0	0	0	0	0	0	0	-3.0667	0	0	0	0	0	0	0
+59.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	74	0	0	0	0	0	0	0	-1.6956	0	0	0	0	0	0	0
+61.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	74	0	0	-2.4677	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	74	0	0	-1.4777	0	0	0	0	0	0	0	0	0	0	0	0
+273	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	74	0	0	0	-7.1686	0	0	0	0	0	0	0	0	0	0	0
+274.5	74	0	0	0	-15.942	0	0	0	0	0	0	0	0	0	0	0
+275	74	0	0	0	-6.3838	0	0	0	0	0	0	0	0	0	0	0
+275.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	74	0	0	0	-10.175	0	0	0	0	0	0	0	0	0	0	0
+278	74	0	0	0	-5.6594	0	0	0	0	0	0	0	0	0	0	0
+278.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	74	0	0	0	-3.1373	0	0	0	0	0	0	0	0	0	0	0
+279.5	74	0	0	0	-13.723	0	0	0	0	0	0	0	0	0	0	0
+280	74	0	0	0	-8.4236	0	0	0	0	0	0	0	0	0	0	0
+280.5	74	0	0	0	-9.2589	0	0	0	0	0	0	0	0	0	0	0
+281	74	0	0	0	-11.907	0	0	0	0	0	0	0	0	0	0	0
+281.5	74	0	0	0	-13.525	0	0	0	0	0	0	0	0	0	0	0
+282	74	0	0	0	-8.3984	0	0	0	0	0	0	0	0	0	0	0
+282.5	74	0	0	0	-8.7478	0	0	0	0	0	0	0	0	0	0	0
+283	74	0	0	0	-12.646	0	0	0	0	0	0	0	0	0	0	0
+283.5	74	0	0	0	-6.8798	0	0	0	0	0	0	0	0	0	0	0
+284	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	74	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	74.5	0	0	0	0	0	0	0	-1.0615	0	0	0	0	0	0	0
+56	74.5	0	0	0	0	0	0	0	-3.8552	0	0	0	0	0	0	0
+56.5	74.5	0	0	0	0	0	0	0	-6.7183	0	0	0	0	0	0	0
+57	74.5	0	0	0	0	0	0	0	-9.5815	0	0	0	0	0	0	0
+57.5	74.5	0	0	0	0	0	0	0	-7.06	0	0	0	0	0	0	0
+58	74.5	0	0	0	0	0	0	0	-3.7535	0	0	0	0	0	0	0
+58.5	74.5	0	0	0	0	0	0	0	-3.9381	0	0	0	0	0	0	0
+59	74.5	0	0	0	0	0	0	0	-6.3767	0	0	0	0	0	0	0
+59.5	74.5	0	0	0	0	0	0	0	-2.5672	0	0	0	0	0	0	0
+60	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	74.5	0	0	0	0	0	0	0	-2.3069	0	0	0	0	0	0	0
+61	74.5	0	0	0	0	0	0	0	-5.4179	0	0	0	0	0	0	0
+61.5	74.5	0	0	0	0	0	0	0	-1.9133	0	0	0	0	0	0	0
+62	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	74.5	0	0	-3.6649	0	0	0	0	0	0	0	0	0	0	0	0
+271	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	74.5	0	0	-3.3343	0	0	0	0	0	0	0	0	0	0	0	0
+272	74.5	0	0	-7.2519	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	74.5	0	0	-6.5026	0	0	0	0	0	0	0	0	0	0	0	0
+273	74.5	0	0	-9.2269	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	74.5	0	0	-8.3727	0	0	0	0	0	0	0	0	0	0	0	0
+274	74.5	0	0	-7.6238	-2.2056	0	0	0	0	0	0	0	0	0	0	0
+274.5	74.5	0	0	-8.3238	-4.2103	0	0	0	0	0	0	0	0	0	0	0
+275	74.5	0	0	-9.6073	-2.6146	0	0	0	0	0	0	0	0	0	0	0
+275.5	74.5	0	0	-4.43	0	0	0	0	0	0	0	0	0	0	0	0
+276	74.5	0	0	-6.0271	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	74.5	0	0	-6.8132	0	0	0	0	0	0	0	0	0	0	0	0
+277	74.5	0	0	-6.1947	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	74.5	0	0	-9.9151	0	0	0	0	0	0	0	0	0	0	0	0
+278	74.5	0	0	-6.4325	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	74.5	0	0	-10.616	0	0	0	0	0	0	0	0	0	0	0	0
+279	74.5	0	0	-7.8782	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	74.5	0	0	-6.6528	0	0	0	0	0	0	0	0	0	0	0	0
+280	74.5	0	0	-4.4065	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	74.5	0	0	0	-6.8248	0	0	0	0	0	0	0	0	0	0	0
+283.5	74.5	0	0	0	-1.0585	0	0	0	0	0	0	0	0	0	0	0
+284	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	74.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	75	0	0	0	0	0	0	0	-1.9334	0	0	0	0	0	0	0
+56	75	0	0	0	0	0	0	0	-5.0078	0	0	0	0	0	0	0
+56.5	75	0	0	0	0	0	0	0	-7.9186	0	0	0	0	0	0	0
+57	75	0	0	0	0	0	0	0	-10.33	0	0	0	0	0	0	0
+57.5	75	0	0	0	0	0	0	0	-10.483	0	0	0	0	0	0	0
+58	75	0	0	0	0	0	0	0	-7.826	0	0	0	0	0	0	0
+58.5	75	0	0	0	0	0	0	0	-8.6287	0	0	0	0	0	0	0
+59	75	0	0	0	0	0	0	0	-9.9368	0	0	0	0	0	0	0
+59.5	75	0	0	0	0	0	0	0	-6.0321	0	0	0	0	0	0	0
+60	75	0	0	0	0	0	0	0	-4.4709	0	0	0	0	0	0	0
+60.5	75	0	0	0	0	0	0	0	-5.8493	0	0	0	0	0	0	0
+61	75	0	0	0	0	0	0	0	-8.5295	0	0	0	0	0	0	0
+61.5	75	0	0	0	0	0	0	0	-6.0407	0	0	0	0	0	0	0
+62	75	0	0	0	0	0	0	0	-3.0077	0	0	0	0	0	0	0
+62.5	75	0	0	0	0	0	0	0	-0.72006	0	0	0	0	0	0	0
+63	75	0	0	0	0	0	0	0	-3.2705	0	0	0	0	0	0	0
+63.5	75	0	0	0	0	0	0	0	-0.71796	0	0	0	0	0	0	0
+64	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	75	0	0.17568	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	75	0	0.077437	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	75	0	0	-1.7052	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	75	0	0	-5.9789	0	0	0	0	0	0	0	0	0	0	0	0
+271	75	0	0	-1.2092	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	75	0	0	-2.6334	0	0	0	0	0	0	0	0	0	0	0	0
+272	75	0	0	-1.6628	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	75	0	0	-1.8985	0	0	0	0	0	0	0	0	0	0	0	0
+273	75	0	0	-3.8662	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	75	0	0	-8.3967	0	0	0	0	0	0	0	0	0	0	0	0
+274	75	0	0	-11.414	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	75	0	0	-11.743	0	0	0	0	0	0	0	0	0	0	0	0
+275	75	0	0	-12.129	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	75	0	0	-12.576	0	0	0	0	0	0	0	0	0	0	0	0
+276	75	0	0	-13.008	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	75	0	0	-13.477	0	0	0	0	0	0	0	0	0	0	0	0
+277	75	0	0	-13.919	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	75	0	0	-14.252	0	0	0	0	0	0	0	0	0	0	0	0
+278	75	0	0	-14.548	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	75	0	0	-14.636	0	0	0	0	0	0	0	0	0	0	0	0
+279	75	0	0	-14.725	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	75	0	0	-14.894	0	0	0	0	0	0	0	0	0	0	0	0
+280	75	0	0	-12.457	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	75	0	0	-7.5529	0	0	0	0	0	0	0	0	0	0	0	0
+281	75	0	0	-1.8926	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	75	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	75.5	0	0	0	0	0	0	0	-2.3162	0	0	0	0	0	0	0
+56	75.5	0	0	0	0	0	0	0	-5.2525	0	0	0	0	0	0	0
+56.5	75.5	0	0	0	0	0	0	0	-8.1888	0	0	0	0	0	0	0
+57	75.5	0	0	0	0	0	0	0	-8.8724	0	0	0	0	0	0	0
+57.5	75.5	0	0	0	0	0	0	0	-10.175	0	0	0	0	0	0	0
+58	75.5	0	0	0	0	0	0	0	-11.27	0	0	0	0	0	0	0
+58.5	75.5	0	0	0	0	0	0	0	-7.3166	0	0	0	0	0	0	0
+59	75.5	0	0	0	0	0	0	0	-6.3744	0	0	0	0	0	0	0
+59.5	75.5	0	0	0	0	0	0	0	-9.3205	0	0	0	0	0	0	0
+60	75.5	0	0	0	0	0	0	0	-10.041	0	0	0	0	0	0	0
+60.5	75.5	0	0	0	0	0	0	0	-9.5798	0	0	0	0	0	0	0
+61	75.5	0	0	0	0	0	0	0	-9.1183	0	0	0	0	0	0	0
+61.5	75.5	0	0	0	0	0	0	0	-7.3247	0	0	0	0	0	0	0
+62	75.5	0	0	0	0	0	0	0	-4.1135	0	0	0	0	0	0	0
+62.5	75.5	0	0	0	0	0	0	0	-5.0925	0	0	0	0	0	0	0
+63	75.5	0	0	0	0	0	0	0	-6.2027	0	0	0	0	0	0	0
+63.5	75.5	0	0	0	0	0	0	0	-5.7588	0	0	0	0	0	0	0
+64	75.5	0	0	0	0	0	0	0	-1.4609	0	0	0	0	0	0	0
+64.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	75.5	0	0.49859	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	75.5	0	1.4011	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	75.5	0	1.246	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	75.5	0	0.68339	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	75.5	0	0.12076	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	75.5	0	0	-2.2266	0	0	0	0	0	0	0	0	0	0	0	0
+270	75.5	0	0	-2.155	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	75.5	0	0	-2.0833	0	0	0	0	0	0	0	0	0	0	0	0
+271	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	75.5	0	0	-0.066388	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	75.5	0	0	-2.5433	0	0	0	0	0	0	0	0	0	0	0	0
+274	75.5	0	0	-3.7014	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	75.5	0	0	-7.3125	0	0	0	0	0	0	0	0	0	0	0	0
+275	75.5	0	0	-13.243	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	75.5	0	0	-13.711	0	0	0	0	0	0	0	0	0	0	0	0
+276	75.5	0	0	-14.178	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	75.5	0	0	-14.614	0	0	0	0	0	0	0	0	0	0	0	0
+277	75.5	0	0	-15.006	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	75.5	0	0	-15.094	0	0	0	0	0	0	0	0	0	0	0	0
+278	75.5	0	0	-15.28	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	75.5	0	0	-15.422	0	0	0	0	0	0	0	0	0	0	0	0
+279	75.5	0	0	-15.609	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	75.5	0	0	-15.763	0	0	0	0	0	0	0	0	0	0	0	0
+280	75.5	0	0	-15.699	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	75.5	0	0	-15.219	0	0	0	0	0	0	0	0	0	0	0	0
+281	75.5	0	0	-8.8752	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	75.5	0	0	-1.3274	0	0	0	0	0	0	0	0	0	0	0	0
+282	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	75.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	76	0	0	0	0	0	-0.03379	0	0	0	0	0	0	0	0	0
+16	76	0	0	0	0	0	-1.4557	0	0	0	0	0	0	0	0	0
+16.5	76	0	0	0	0	0	-2.7838	0	0	0	0	0	0	0	0	0
+17	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	76	0	0	0	0	0	0	0	-0.88736	0	0	0	0	0	0	0
+56	76	0	0	0	0	0	0	0	-3.8237	0	0	0	0	0	0	0
+56.5	76	0	0	0	0	0	0	0	-4.4127	0	0	0	0	0	0	0
+57	76	0	0	0	0	0	0	0	-3.9096	0	0	0	0	0	0	0
+57.5	76	0	0	0	0	0	0	0	-3.4064	0	0	0	0	0	0	0
+58	76	0	0	0	0	0	0	0	-4.4536	0	0	0	0	0	0	0
+58.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	76	0	0	0	0	0	0	0	-0.69462	0	0	0	0	0	0	0
+59.5	76	0	0	0	0	0	0	0	-3.7636	0	0	0	0	0	0	0
+60	76	0	0	0	0	0	0	0	-6.3628	0	0	0	0	0	0	0
+60.5	76	0	0	0	0	0	0	0	-9.0245	0	0	0	0	0	0	0
+61	76	0	0	0	0	0	0	0	-9.4961	0	0	0	0	0	0	0
+61.5	76	0	0	0	0	0	0	0	-8.3117	0	0	0	0	0	0	0
+62	76	0	0	0	0	0	0	0	-8.3547	0	0	0	0	0	0	0
+62.5	76	0	0	0	0	0	0	0	-9.0112	0	0	0	0	0	0	0
+63	76	0	0	0	0	0	0	0	-8.9593	0	0	0	0	0	0	0
+63.5	76	0	0	0	0	0	0	0	-8.6408	0	0	0	0	0	0	0
+64	76	0	0	0	0	0	0	0	-5.0066	0	0	0	0	0	0	0
+64.5	76	0	0	0	0	0	0	0	-1.9428	0	0	0	0	0	0	0
+65	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	76	0	0.56486	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	76	0	0.98947	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	76	0	1.1028	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	76	0	0.61587	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	76	0	0.033123	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	76	0	0	-2.5636	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	76	0	0	-4.3271	0	0	0	0	0	0	0	0	0	0	0	0
+268	76	0	0	-4.8356	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	76	0	0	-4.1162	0	0	0	0	0	0	0	0	0	0	0	0
+269	76	0	0	-1.573	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	76	0	0	-2.1904	0	0	0	0	0	0	0	0	0	0	0	0
+270	76	0	0	-6.7964	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	76	0	0	-11.402	0	0	0	0	0	0	0	0	0	0	0	0
+271	76	0	0	-3.0373	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	76	0	0	-0.15268	0	0	0	0	0	0	0	0	0	0	0	0
+273	76	0	0	-4.8706	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	76	0	0	-0.79304	0	0	0	0	0	0	0	0	0	0	0	0
+275	76	0	0	-1.6552	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	76	0	0	-1.8679	0	0	0	0	0	0	0	0	0	0	0	0
+276	76	0	0	-3.7428	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	76	0	0	-14.413	0	0	0	0	0	0	0	0	0	0	0	0
+277	76	0	0	-15.707	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	76	0	0	-13.629	0	0	0	0	0	0	0	0	0	0	0	0
+278	76	0	0	-6.9282	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	76	0	0	-9.7241	0	0	0	0	0	0	0	0	0	0	0	0
+279	76	0	0	-16.58	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	76	0	0	-16.313	0	0	0	0	0	0	0	0	0	0	0	0
+280	76	0	0	-16.334	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	76	0	0	-16.488	0	0	0	0	0	0	0	0	0	0	0	0
+281	76	0	0	-10.533	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	76	0	0	-0.0088816	0	0	0	0	0	0	0	0	0	0	0	0
+282	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	76	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	76.5	0	0	0	0	0	-0.38486	0	0	0	0	0	0	0	0	0
+15.5	76.5	0	0	0	0	0	-2.2454	0	0	0	0	0	0	0	0	0
+16	76.5	0	0	0	0	0	-3.7407	0	0	0	0	0	0	0	0	0
+16.5	76.5	0	0	0	0	0	-5.0745	0	0	0	0	0	0	0	0	0
+17	76.5	0	0	0	0	0	-3.1151	0	0	0	0	0	0	0	0	0
+17.5	76.5	0	0	0	0	0	-0.26384	0	0	0	0	0	0	0	0	0
+18	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	76.5	0	0	0	0	0	0	0	-0.99527	0	0	0	0	0	0	0
+60.5	76.5	0	0	0	0	0	0	0	-4.9361	0	0	0	0	0	0	0
+61	76.5	0	0	0	0	0	0	0	-6.2043	0	0	0	0	0	0	0
+61.5	76.5	0	0	0	0	0	0	0	-8.4133	0	0	0	0	0	0	0
+62	76.5	0	0	0	0	0	0	0	-7.9374	0	0	0	0	0	0	0
+62.5	76.5	0	0	0	0	0	0	0	-7.7634	0	0	0	0	0	0	0
+63	76.5	0	0	0	0	0	0	0	-7.5894	0	0	0	0	0	0	0
+63.5	76.5	0	0	0	0	0	0	0	-7.4153	0	0	0	0	0	0	0
+64	76.5	0	0	0	0	0	0	0	-5.7557	0	0	0	0	0	0	0
+64.5	76.5	0	0	0	0	0	0	0	-4.6085	0	0	0	0	0	0	0
+65	76.5	0	0	0	0	0	0	0	-2.4247	0	0	0	0	0	0	0
+65.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	76.5	0	0.013475	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	76.5	0	0.12683	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	76.5	0	0.24019	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	76.5	0	0	-2.8487	0	0	0	0	0	0	0	0	0	0	0	0
+268	76.5	0	0	-6.1134	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	76.5	0	0	-5.1463	0	0	0	0	0	0	0	0	0	0	0	0
+269	76.5	0	0	-0.23272	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	76.5	0	0	-3.4489	0	0	0	0	0	0	0	0	0	0	0	0
+270	76.5	0	0	-7.0429	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	76.5	0	0	-10.637	0	0	0	0	0	0	0	0	0	0	0	0
+271	76.5	0	0	-9.6737	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	76.5	0	0	-6.9931	0	0	0	0	0	0	0	0	0	0	0	0
+272	76.5	0	0	-6.5382	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	76.5	0	0	-3.0268	0	0	0	0	0	0	0	0	0	0	0	0
+273	76.5	0	0	-10.394	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	76.5	0	0	-6.9501	0	0	0	0	0	0	0	0	0	0	0	0
+274	76.5	0	0	-7.8973	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	76.5	0	0	-8.5009	0	0	0	0	0	0	0	0	0	0	0	0
+275	76.5	0	0	-8.0384	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	76.5	0	0	-11.811	0	0	0	0	0	0	0	0	0	0	0	0
+276	76.5	0	0	-13.327	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	76.5	0	0	-16.409	0	0	0	0	0	0	0	0	0	0	0	0
+277	76.5	0	0	-16.673	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	76.5	0	0	-10.578	0	0	0	0	0	0	0	0	0	0	0	0
+278	76.5	0	0	-2.9206	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	76.5	0	0	-9.5613	0	0	0	0	0	0	0	0	0	0	0	0
+279	76.5	0	0	-16.978	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	76.5	0	0	-16.908	0	0	0	0	0	0	0	0	0	0	0	0
+280	76.5	0	0	-17.146	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	76.5	0	0	-17.434	0	0	0	0	0	0	0	0	0	0	0	0
+281	76.5	0	0	-17.915	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	76.5	0	0	-8.6756	0	0	0	0	0	0	0	0	0	0	0	0
+282	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	76.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	77	0	0	0	0	0	-2.0125	0	0	0	0	0	0	0	0	0
+15.5	77	0	0	0	0	0	-4.457	0	0	0	0	0	0	0	0	0
+16	77	0	0	0	0	0	-6.0204	0	0	0	0	0	0	0	0	0
+16.5	77	0	0	0	0	0	-6.9955	0	0	0	0	0	0	0	0	0
+17	77	0	0	0	0	0	-7.0371	0	0	0	0	0	0	0	0	0
+17.5	77	0	0	0	0	0	-4.9712	0	0	0	0	0	0	0	0	0
+18	77	0	0	0	0	0	-0.96229	0	0	0	0	0	0	0	0	0
+18.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	77	0	0	0	0	0	-0.33189	0	0	0	0	0	0	0	0	0
+21	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	77	0	0	0	0	0	0	0	-0.90228	0	0	0	0	0	0	0
+61	77	0	0	0	0	0	0	0	-3.3832	0	0	0	0	0	0	0
+61.5	77	0	0	0	0	0	0	0	-5.864	0	0	0	0	0	0	0
+62	77	0	0	0	0	0	0	0	-6.396	0	0	0	0	0	0	0
+62.5	77	0	0	0	0	0	0	0	-5.4125	0	0	0	0	0	0	0
+63	77	0	0	0	0	0	0	0	-5.2384	0	0	0	0	0	0	0
+63.5	77	0	0	0	0	0	0	0	-5.0644	0	0	0	0	0	0	0
+64	77	0	0	0	0	0	0	0	-2.5716	0	0	0	0	0	0	0
+64.5	77	0	0	0	0	0	0	0	-1.4244	0	0	0	0	0	0	0
+65	77	0	0	0	0	0	0	0	-0.2772	0	0	0	0	0	0	0
+65.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	77	0	0	-3.1802	0	0	0	0	0	0	0	0	0	0	0	0
+270	77	0	0	-5.1547	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	77	0	0	-4.5068	0	0	0	0	0	0	0	0	0	0	0	0
+271	77	0	0	-5.0995	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	77	0	0	-7.7995	0	0	0	0	0	0	0	0	0	0	0	0
+272	77	0	0	-4.7734	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	77	0	0	-4.1984	0	0	0	0	0	0	0	0	0	0	0	0
+273	77	0	0	-10.142	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	77	0	0	-13.921	0	0	0	0	0	0	0	0	0	0	0	0
+274	77	0	0	-14.895	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	77	0	0	-16.284	0	0	0	0	0	0	0	0	0	0	0	0
+275	77	0	0	-13.078	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	77	0	0	-16.733	0	0	0	0	0	0	0	0	0	0	0	0
+276	77	0	0	-17.176	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	77	0	0	-17.42	0	0	0	0	0	0	0	0	0	0	0	0
+277	77	0	0	-17.507	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	77	0	0	-6.8433	0	0	0	0	0	0	0	0	0	0	0	0
+278	77	0	0	-1.9483	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	77	0	0	-14.694	0	0	0	0	0	0	0	0	0	0	0	0
+279	77	0	0	-17.406	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	77	0	0	-17.673	0	0	0	0	0	0	0	0	0	0	0	0
+280	77	0	0	-18.092	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	77	0	0	-18.374	0	0	0	0	0	0	0	0	0	0	0	0
+281	77	0	0	-18.108	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	77	0	0	-17.523	0	0	0	0	0	0	0	0	0	0	0	0
+282	77	0	0	-13.402	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	77	0	0	-3.2464	0	0	0	0	0	0	0	0	0	0	0	0
+283	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	77	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	77.5	0	0	0	0	0	-0.28211	0	0	0	0	0	0	0	0	0
+13	77.5	0	0	0	0	0	-2.1073	0	0	0	0	0	0	0	0	0
+13.5	77.5	0	0	0	0	0	-2.3025	0	0	0	0	0	0	0	0	0
+14	77.5	0	0	0	0	0	-2.4978	0	0	0	0	0	0	0	0	0
+14.5	77.5	0	0	0	0	0	-0.75801	0	0	0	0	0	0	0	0	0
+15	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	77.5	0	0	0	0	0	-4.3883	0	0	0	0	0	0	0	0	0
+16	77.5	0	0	0	0	0	-7.7099	0	0	0	0	0	0	0	0	0
+16.5	77.5	0	0	0	0	0	-7.5854	0	0	0	0	0	0	0	0	0
+17	77.5	0	0	0	0	0	-7.6762	0	0	0	0	0	0	0	0	0
+17.5	77.5	0	0	0	0	0	-7.7669	0	0	0	0	0	0	0	0	0
+18	77.5	0	0	0	0	0	-5.3096	0	0	0	0	0	0	0	0	0
+18.5	77.5	0	0	0	0	0	-1.2236	0	0	0	0	0	0	0	0	0
+19	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	77.5	0	0	0	0	0	-0.91468	0	0	0	0	0	0	0	0	0
+20.5	77.5	0	0	0	0	0	-2.2865	0	0	0	0	0	0	0	0	0
+21	77.5	0	0	0	0	0	-3.6583	0	0	0	0	0	0	0	0	0
+21.5	77.5	0	0	0	0	0	-3.3897	0	0	0	0	0	0	0	0	0
+22	77.5	0	0	0	0	0	-2.3167	0	0	0	0	0	0	0	0	0
+22.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	77.5	0	0	0	0	0	0	0	-0.83388	0	0	0	0	0	0	0
+61.5	77.5	0	0	0	0	0	0	0	-3.3148	0	0	0	0	0	0	0
+62	77.5	0	0	0	0	0	0	0	-5.3034	0	0	0	0	0	0	0
+62.5	77.5	0	0	0	0	0	0	0	-4.2004	0	0	0	0	0	0	0
+63	77.5	0	0	0	0	0	0	0	-3.0974	0	0	0	0	0	0	0
+63.5	77.5	0	0	0	0	0	0	0	-2.7134	0	0	0	0	0	0	0
+64	77.5	0	0	0	0	0	0	0	-0.26641	0	0	0	0	0	0	0
+64.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	77.5	0	0	0	0	0	0	0	-0.10217	0	0	0	0	0	0	0
+100	77.5	0	0	0	0	0	0	0	-0.073855	0	0	0	0	0	0	0
+100.5	77.5	0	0	0	0	0	0	0	-0.045542	0	0	0	0	0	0	0
+101	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	77.5	0	0	-3.021	0	0	0	0	0	0	0	0	0	0	0	0
+273	77.5	0	0	-7.0327	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	77.5	0	0	-8.4999	0	0	0	0	0	0	0	0	0	0	0	0
+274	77.5	0	0	-8.838	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	77.5	0	0	-10.707	0	0	0	0	0	0	0	0	0	0	0	0
+275	77.5	0	0	-9.7039	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	77.5	0	0	-9.1816	0	0	0	0	0	0	0	0	0	0	0	0
+276	77.5	0	0	-9.2565	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	77.5	0	0	-7.7611	0	0	0	0	0	0	0	0	0	0	0	0
+277	77.5	0	0	-13.518	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	77.5	0	0	-18.126	0	0	0	0	0	0	0	0	0	0	0	0
+278	77.5	0	0	-7.9523	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	77.5	0	0	-11.171	0	0	0	0	0	0	0	0	0	0	0	0
+279	77.5	0	0	-18.29	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	77.5	0	0	-18.515	0	0	0	0	0	0	0	0	0	0	0	0
+280	77.5	0	0	-18.815	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	77.5	0	0	-18.507	0	0	0	0	0	0	0	0	0	0	0	0
+281	77.5	0	0	-17.861	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	77.5	0	0	-17.233	0	0	0	0	0	0	0	0	0	0	0	0
+282	77.5	0	0	-16.607	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	77.5	0	0	-10.641	0	0	0	0	0	0	0	0	0	0	0	0
+283	77.5	0	0	-3.7053	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	77.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	78	0	0	0	0	0	-0.35787	0	0	0	0	0	0	0	0	0
+12.5	78	0	0	0	0	0	-1.2844	0	0	0	0	0	0	0	0	0
+13	78	0	0	0	0	0	-2.8129	0	0	0	0	0	0	0	0	0
+13.5	78	0	0	0	0	0	-4.4747	0	0	0	0	0	0	0	0	0
+14	78	0	0	0	0	0	-3.7022	0	0	0	0	0	0	0	0	0
+14.5	78	0	0	0	0	0	-2.537	0	0	0	0	0	0	0	0	0
+15	78	0	0	0	0	0	-1.7347	0	0	0	0	0	0	0	0	0
+15.5	78	0	0	0	0	0	-2.3515	0	0	0	0	0	0	0	0	0
+16	78	0	0	0	0	0	-6.1618	0	0	0	0	0	0	0	0	0
+16.5	78	0	0	0	0	0	-8.2244	0	0	0	0	0	0	0	0	0
+17	78	0	0	0	0	0	-8.1107	0	0	0	0	0	0	0	0	0
+17.5	78	0	0	0	0	0	-7.9059	0	0	0	0	0	0	0	0	0
+18	78	0	0	0	0	0	-7.8669	0	0	0	0	0	0	0	0	0
+18.5	78	0	0	0	0	0	-4.5678	0	0	0	0	0	0	0	0	0
+19	78	0	0	0	0	0	-1.9149	0	0	0	0	0	0	0	0	0
+19.5	78	0	0	0	0	0	-0.96798	0	0	0	0	0	0	0	0	0
+20	78	0	0	0	0	0	-2.3972	0	0	0	0	0	0	0	0	0
+20.5	78	0	0	0	0	0	-3.8265	0	0	0	0	0	0	0	0	0
+21	78	0	0	0	0	0	-5.2557	0	0	0	0	0	0	0	0	0
+21.5	78	0	0	0	0	0	-6.345	0	0	0	0	0	0	0	0	0
+22	78	0	0	0	0	0	-5.0401	0	0	0	0	0	0	0	0	0
+22.5	78	0	0	0	0	0	-3.1033	0	0	0	0	0	0	0	0	0
+23	78	0	0	0	0	0	-0.71607	0	0	0	0	0	0	0	0	0
+23.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	78	0	0	0	0	0	0	0	-0.76547	0	0	0	0	0	0	0
+62	78	0	0	0	0	0	0	0	-3.2464	0	0	0	0	0	0	0
+62.5	78	0	0	0	0	0	0	0	-3.1078	0	0	0	0	0	0	0
+63	78	0	0	0	0	0	0	0	-2.0048	0	0	0	0	0	0	0
+63.5	78	0	0	0	0	0	0	0	-0.90184	0	0	0	0	0	0	0
+64	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	78	0	0	0	0	0	0	0	-0.059214	0	0	0	0	0	0	0
+97	78	0	0	0	0	0	0	0	-0.33935	0	0	0	0	0	0	0
+97.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	78	0	0	0	0	0	0	0	-0.17099	0	0	0	0	0	0	0
+100	78	0	0	0	0	0	0	0	-0.50931	0	0	0	0	0	0	0
+100.5	78	0	0	0	0	0	0	0	-0.84762	0	0	0	0	0	0	0
+101	78	0	0	0	0	0	0	0	-0.78968	0	0	0	0	0	0	0
+101.5	78	0	0	0	0	0	0	0	-0.13287	0	0	0	0	0	0	0
+102	78	0	0	0	0	0	0	0	0.011159	0	0	0	0	0	0	0
+102.5	78	0	0	0	0	0	0	0	0.010941	0	0	0	0	0	0	0
+103	78	0	0	0	0	0	0	0	-0.17918	0	0	0	0	0	0	0
+103.5	78	0	0	0	0	0	0	0	-0.071688	0	0	0	0	0	0	0
+104	78	0	0	0	0	0	0	0	-0.10464	0	0	0	0	0	0	0
+104.5	78	0	0	0	0	0	0	0	-0.13141	0	0	0	0	0	0	0
+105	78	0	0	0	0	0	0	0	-0.054942	0	0	0	0	0	0	0
+105.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	78	0	0	-1.9211	0	0	0	0	0	0	0	0	0	0	0	0
+268	78	0	0	-2.6934	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	78	0	0	-4.079	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	78	0	0	-4.724	0	0	0	0	0	0	0	0	0	0	0	0
+270	78	0	0	-2.7699	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	78	0	0	-0.81584	0	0	0	0	0	0	0	0	0	0	0	0
+271	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	78	0	0	-1.6127	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	78	0	0	-0.73689	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	78	0	0	-6.7003	0	0	0	0	0	0	0	0	0	0	0	0
+278	78	0	0	-14.356	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	78	0	0	-18.565	0	0	0	0	0	0	0	0	0	0	0	0
+279	78	0	0	-19.092	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	78	0	0	-18.482	0	0	0	0	0	0	0	0	0	0	0	0
+280	78	0	0	-18.243	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	78	0	0	-17.758	0	0	0	0	0	0	0	0	0	0	0	0
+281	78	0	0	-17.417	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	78	0	0	-16.966	0	0	0	0	0	0	0	0	0	0	0	0
+282	78	0	0	-16.27	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	78	0	0	-10.64	0	0	0	0	0	0	0	0	0	0	0	0
+283	78	0	0	-9.8205	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	78	0	0	-9.2313	0	0	0	0	0	0	0	0	0	0	0	0
+284	78	0	0	-9.3344	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	78	0	0	-8.2768	0	0	0	0	0	0	0	0	0	0	0	0
+285	78	0	0	-3.7979	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	78	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	78.5	0	0	0	0	0	-0.75167	0	0	0	0	0	0	0	0	0
+12	78.5	0	0	0	0	0	-1.8306	0	0	0	0	0	0	0	0	0
+12.5	78.5	0	0	0	0	0	-2.9346	0	0	0	0	0	0	0	0	0
+13	78.5	0	0	0	0	0	-3.8303	0	0	0	0	0	0	0	0	0
+13.5	78.5	0	0	0	0	0	-4.2335	0	0	0	0	0	0	0	0	0
+14	78.5	0	0	0	0	0	-4.7641	0	0	0	0	0	0	0	0	0
+14.5	78.5	0	0	0	0	0	-5.4611	0	0	0	0	0	0	0	0	0
+15	78.5	0	0	0	0	0	-6.1294	0	0	0	0	0	0	0	0	0
+15.5	78.5	0	0	0	0	0	-6.8507	0	0	0	0	0	0	0	0	0
+16	78.5	0	0	0	0	0	-7.6657	0	0	0	0	0	0	0	0	0
+16.5	78.5	0	0	0	0	0	-8.2982	0	0	0	0	0	0	0	0	0
+17	78.5	0	0	0	0	0	-8.0801	0	0	0	0	0	0	0	0	0
+17.5	78.5	0	0	0	0	0	-8.0159	0	0	0	0	0	0	0	0	0
+18	78.5	0	0	0	0	0	-7.97	0	0	0	0	0	0	0	0	0
+18.5	78.5	0	0	0	0	0	-7.409	0	0	0	0	0	0	0	0	0
+19	78.5	0	0	0	0	0	-5.09	0	0	0	0	0	0	0	0	0
+19.5	78.5	0	0	0	0	0	-3.9019	0	0	0	0	0	0	0	0	0
+20	78.5	0	0	0	0	0	-5.1542	0	0	0	0	0	0	0	0	0
+20.5	78.5	0	0	0	0	0	-6.5835	0	0	0	0	0	0	0	0	0
+21	78.5	0	0	0	0	0	-6.6713	0	0	0	0	0	0	0	0	0
+21.5	78.5	0	0	0	0	0	-6.1118	0	0	0	0	0	0	0	0	0
+22	78.5	0	0	0	0	0	-5.157	0	0	0	0	0	0	0	0	0
+22.5	78.5	0	0	0	0	0	-3.4168	0	0	0	0	0	0	0	0	0
+23	78.5	0	0	0	0	0	-1.6766	0	0	0	0	0	0	0	0	0
+23.5	78.5	0	0	0	0	0	-0.16945	0	0	0	0	0	0	0	0	0
+24	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	78.5	0	0	0	0	0	-0.13839	0	0	0	0	0	0	0	0	0
+25.5	78.5	0	0	0	0	0	-0.67929	0	0	0	0	0	0	0	0	0
+26	78.5	0	0	0	0	0	-0.87807	0	0	0	0	0	0	0	0	0
+26.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	78.5	0	0	0	0	0	-0.070301	0	0	0	0	0	0	0	0	0
+33	78.5	0	0	0	0	0	-0.69315	0	0	0	0	0	0	0	0	0
+33.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	78.5	0	0	0	0	0	0	0	-0.69707	0	0	0	0	0	0	0
+62.5	78.5	0	0	0	0	0	0	0	-2.0153	0	0	0	0	0	0	0
+63	78.5	0	0	0	0	0	0	0	-0.91227	0	0	0	0	0	0	0
+63.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	78.5	0	0	0	0	0	0	0	-0.032364	0	0	0	0	0	0	0
+95	78.5	0	0	0	0	0	0	0	-0.094332	0	0	0	0	0	0	0
+95.5	78.5	0	0	0	0	0	0	0	-0.35377	0	0	0	0	0	0	0
+96	78.5	0	0	0	0	0	0	0	-1.0661	0	0	0	0	0	0	0
+96.5	78.5	0	0	0	0	0	0	0	-1.573	0	0	0	0	0	0	0
+97	78.5	0	0	0	0	0	0	0	-1.3032	0	0	0	0	0	0	0
+97.5	78.5	0	0	0	0	0	0	0	-1.8264	0	0	0	0	0	0	0
+98	78.5	0	0	0	0	0	0	0	-1.2511	0	0	0	0	0	0	0
+98.5	78.5	0	0	0	0	0	0	0	-0.47302	0	0	0	0	0	0	0
+99	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	78.5	0	0	0	0	0	0	0	-0.63299	0	0	0	0	0	0	0
+100	78.5	0	0	0	0	0	0	0	-0.53372	0	0	0	0	0	0	0
+100.5	78.5	0	0	0	0	0	0	0	-0.5547	0	0	0	0	0	0	0
+101	78.5	0	0	0	0	0	0	0	-0.47275	0	0	0	0	0	0	0
+101.5	78.5	0	0	0	0	0	0	0	-0.0067028	0	0	0	0	0	0	0
+102	78.5	0	0	0	0	0	0	0	-0.11066	0	0	0	0	0	0	0
+102.5	78.5	0	0	0	0	0	0	0	-0.31617	0	0	0	0	0	0	0
+103	78.5	0	0	0	0	0	0	0	-0.50587	0	0	0	0	0	0	0
+103.5	78.5	0	0	0	0	0	0	0	-0.32586	0	0	0	0	0	0	0
+104	78.5	0	0	0	0	0	0	0	-0.14723	0	0	0	0	0	0	0
+104.5	78.5	0	0	0	0	0	0	0	-0.34188	0	0	0	0	0	0	0
+105	78.5	0	0	0	0	0	0	0	-0.15681	0	0	0	0	0	0	0
+105.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	78.5	0	0	-1.7951	0	0	0	0	0	0	0	0	0	0	0	0
+267	78.5	0	0	-5.9901	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	78.5	0	0	-10.185	0	0	0	0	0	0	0	0	0	0	0	0
+268	78.5	0	0	-8.5722	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	78.5	0	0	-1.1808	0	0	0	0	0	0	0	0	0	0	0	0
+269	78.5	0	0	-8.5047	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	78.5	0	0	-9.4645	0	0	0	0	0	0	0	0	0	0	0	0
+270	78.5	0	0	-7.5104	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	78.5	0	0	-7.3675	0	0	0	0	0	0	0	0	0	0	0	0
+271	78.5	0	0	-7.6571	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	78.5	0	0	-11.305	0	0	0	0	0	0	0	0	0	0	0	0
+272	78.5	0	0	-14.983	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	78.5	0	0	-7.1426	0	0	0	0	0	0	0	0	0	0	0	0
+273	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	78.5	0	0	-1.165	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	78.5	0	0	-4.4132	0	0	0	0	0	0	0	0	0	0	0	0
+278	78.5	0	0	-5.9734	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	78.5	0	0	-11.311	0	0	0	0	0	0	0	0	0	0	0	0
+279	78.5	0	0	-18.49	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	78.5	0	0	-18.274	0	0	0	0	0	0	0	0	0	0	0	0
+280	78.5	0	0	-17.815	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	78.5	0	0	-16.95	0	0	0	0	0	0	0	0	0	0	0	0
+281	78.5	0	0	-16.522	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	78.5	0	0	-16.181	0	0	0	0	0	0	0	0	0	0	0	0
+282	78.5	0	0	-16.314	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	78.5	0	0	-17.472	0	0	0	0	0	0	0	0	0	0	0	0
+283	78.5	0	0	-18.476	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	78.5	0	0	-19.085	0	0	0	0	0	0	0	0	0	0	0	0
+284	78.5	0	0	-14.853	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	78.5	0	0	-9.7034	0	0	0	0	0	0	0	0	0	0	0	0
+285	78.5	0	0	-4.554	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	78.5	0	0	-0.60848	0	0	0	0	0	0	0	0	0	0	0	0
+286	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	78.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	79	0	0	0	0	0	-0.29927	0	0	0	0	0	0	0	0	0
+11.5	79	0	0	0	0	0	-1.1678	0	0	0	0	0	0	0	0	0
+12	79	0	0	0	0	0	-2.0363	0	0	0	0	0	0	0	0	0
+12.5	79	0	0	0	0	0	-2.9048	0	0	0	0	0	0	0	0	0
+13	79	0	0	0	0	0	-3.8382	0	0	0	0	0	0	0	0	0
+13.5	79	0	0	0	0	0	-3.7253	0	0	0	0	0	0	0	0	0
+14	79	0	0	0	0	0	-4.1132	0	0	0	0	0	0	0	0	0
+14.5	79	0	0	0	0	0	-5.0769	0	0	0	0	0	0	0	0	0
+15	79	0	0	0	0	0	-5.7619	0	0	0	0	0	0	0	0	0
+15.5	79	0	0	0	0	0	-5.7892	0	0	0	0	0	0	0	0	0
+16	79	0	0	0	0	0	-6.9886	0	0	0	0	0	0	0	0	0
+16.5	79	0	0	0	0	0	-7.7031	0	0	0	0	0	0	0	0	0
+17	79	0	0	0	0	0	-8.148	0	0	0	0	0	0	0	0	0
+17.5	79	0	0	0	0	0	-8.0881	0	0	0	0	0	0	0	0	0
+18	79	0	0	0	0	0	-8.0282	0	0	0	0	0	0	0	0	0
+18.5	79	0	0	0	0	0	-7.9569	0	0	0	0	0	0	0	0	0
+19	79	0	0	0	0	0	-7.873	0	0	0	0	0	0	0	0	0
+19.5	79	0	0	0	0	0	-7.7903	0	0	0	0	0	0	0	0	0
+20	79	0	0	0	0	0	-7.5571	0	0	0	0	0	0	0	0	0
+20.5	79	0	0	0	0	0	-6.9976	0	0	0	0	0	0	0	0	0
+21	79	0	0	0	0	0	-6.4381	0	0	0	0	0	0	0	0	0
+21.5	79	0	0	0	0	0	-5.8786	0	0	0	0	0	0	0	0	0
+22	79	0	0	0	0	0	-5.2739	0	0	0	0	0	0	0	0	0
+22.5	79	0	0	0	0	0	-3.6276	0	0	0	0	0	0	0	0	0
+23	79	0	0	0	0	0	-2.1639	0	0	0	0	0	0	0	0	0
+23.5	79	0	0	0	0	0	-0.83024	0	0	0	0	0	0	0	0	0
+24	79	0	0	0	0	0	-0.86189	0	0	0	0	0	0	0	0	0
+24.5	79	0	0	0	0	0	-1.4028	0	0	0	0	0	0	0	0	0
+25	79	0	0	0	0	0	-1.9437	0	0	0	0	0	0	0	0	0
+25.5	79	0	0	0	0	0	-2.3244	0	0	0	0	0	0	0	0	0
+26	79	0	0	0	0	0	-1.0583	0	0	0	0	0	0	0	0	0
+26.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	79	0	0	0	0	0	-0.81614	0	0	0	0	0	0	0	0	0
+27.5	79	0	0	0	0	0	-1.67	0	0	0	0	0	0	0	0	0
+28	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	79	0	0	0	0	0	-0.57208	0	0	0	0	0	0	0	0	0
+32.5	79	0	0	0	0	0	-1.6889	0	0	0	0	0	0	0	0	0
+33	79	0	0	0	0	0	-2.2284	0	0	0	0	0	0	0	0	0
+33.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	79	0	0	0	0	0	0	0	-1.5909	0	0	0	0	0	0	0
+59	79	0	0	0	0	0	0	0	-2.1638	0	0	0	0	0	0	0
+59.5	79	0	0	0	0	0	0	0	-0.70007	0	0	0	0	0	0	0
+60	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	79	0	0	0	0	0	0	0	-0.62867	0	0	0	0	0	0	0
+63	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	79	0	0	0	0	0	0	0	-0.11635	0	0	0	0	0	0	0
+94	79	0	0	0	0	0	0	0	-1.4457	0	0	0	0	0	0	0
+94.5	79	0	0	0	0	0	0	0	-2.775	0	0	0	0	0	0	0
+95	79	0	0	0	0	0	0	0	-3.0533	0	0	0	0	0	0	0
+95.5	79	0	0	0	0	0	0	0	-2.1707	0	0	0	0	0	0	0
+96	79	0	0	0	0	0	0	0	-3.1159	0	0	0	0	0	0	0
+96.5	79	0	0	0	0	0	0	0	-3.6881	0	0	0	0	0	0	0
+97	79	0	0	0	0	0	0	0	-3.4082	0	0	0	0	0	0	0
+97.5	79	0	0	0	0	0	0	0	-3.1403	0	0	0	0	0	0	0
+98	79	0	0	0	0	0	0	0	-2.8723	0	0	0	0	0	0	0
+98.5	79	0	0	0	0	0	0	0	-2.4095	0	0	0	0	0	0	0
+99	79	0	0	0	0	0	0	0	-1.4713	0	0	0	0	0	0	0
+99.5	79	0	0	0	0	0	0	0	-1.3829	0	0	0	0	0	0	0
+100	79	0	0	0	0	0	0	0	-0.97555	0	0	0	0	0	0	0
+100.5	79	0	0	0	0	0	0	0	-0.49844	0	0	0	0	0	0	0
+101	79	0	0	0	0	0	0	0	-0.12552	0	0	0	0	0	0	0
+101.5	79	0	0	0	0	0	0	0	-0.0013307	0	0	0	0	0	0	0
+102	79	0	0	0	0	0	0	0	-0.084623	0	0	0	0	0	0	0
+102.5	79	0	0	0	0	0	0	0	-0.23177	0	0	0	0	0	0	0
+103	79	0	0	0	0	0	0	0	-0.18593	0	0	0	0	0	0	0
+103.5	79	0	0	0	0	0	0	0	-0.14009	0	0	0	0	0	0	0
+104	79	0	0	0	0	0	0	0	-0.10389	0	0	0	0	0	0	0
+104.5	79	0	0	0	0	0	0	0	-0.13327	0	0	0	0	0	0	0
+105	79	0	0	0	0	0	0	0	-0.16265	0	0	0	0	0	0	0
+105.5	79	0	0	0	0	0	0	0	-0.010168	0	0	0	0	0	0	0
+106	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	79	0	0	-0.57459	0	0	0	0	0	0	0	0	0	0	0	0
+260	79	0	0	-0.77688	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	79	0	0	-0.18226	0	0	0	0	0	0	0	0	0	0	0	0
+261	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	79	0	0	-2.3075	0	0	0	0	0	0	0	0	0	0	0	0
+264	79	0	0	-3.9193	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	79	0	0	-0.51852	0	0	0	0	0	0	0	0	0	0	0	0
+265	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	79	0	0	-1.641	0	0	0	0	0	0	0	0	0	0	0	0
+266	79	0	0	-3.0746	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	79	0	0	-0.65843	0	0	0	0	0	0	0	0	0	0	0	0
+267	79	0	0	-1.2305	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	79	0	0	-1.8025	0	0	0	0	0	0	0	0	0	0	0	0
+268	79	0	0	-2.2555	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	79	0	0	-5.682	0	0	0	0	0	0	0	0	0	0	0	0
+269	79	0	0	-12.653	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	79	0	0	-14.042	0	0	0	0	0	0	0	0	0	0	0	0
+270	79	0	0	-14.526	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	79	0	0	-14.975	0	0	0	0	0	0	0	0	0	0	0	0
+271	79	0	0	-15.419	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	79	0	0	-15.842	0	0	0	0	0	0	0	0	0	0	0	0
+272	79	0	0	-14.722	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	79	0	0	-9.9684	0	0	0	0	0	0	0	0	0	0	0	0
+273	79	0	0	-5.2149	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	79	0	0	-2.6581	0	0	0	0	0	0	0	0	0	0	0	0
+277	79	0	0	-9.8053	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	79	0	0	-17.806	0	0	0	0	0	0	0	0	0	0	0	0
+278	79	0	0	-2.6471	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	79	0	0	-8.4269	0	0	0	0	0	0	0	0	0	0	0	0
+279	79	0	0	-15.44	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	79	0	0	-17.775	0	0	0	0	0	0	0	0	0	0	0	0
+280	79	0	0	-16.917	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	79	0	0	-16.094	0	0	0	0	0	0	0	0	0	0	0	0
+281	79	0	0	-15.979	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	79	0	0	-16.136	0	0	0	0	0	0	0	0	0	0	0	0
+282	79	0	0	-16.709	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	79	0	0	-18.056	0	0	0	0	0	0	0	0	0	0	0	0
+283	79	0	0	-12.432	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	79	0	0	-7.0441	0	0	0	0	0	0	0	0	0	0	0	0
+284	79	0	0	-1.8659	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	79	0	0	-3.3553	0	0	0	0	0	0	0	0	0	0	0	0
+285	79	0	0	-7.7673	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	79	0	0	-8.769	0	0	0	0	0	0	0	0	0	0	0	0
+286	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	79	0	0	-0.88724	0	0	0	0	0	0	0	0	0	0	0	0
+287	79	0	0	-2.953	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	79	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	79.5	0	0	0	0	0	-0.71539	0	0	0	0	0	0	0	0	0
+11.5	79.5	0	0	0	0	0	-1.5839	0	0	0	0	0	0	0	0	0
+12	79.5	0	0	0	0	0	-2.2634	0	0	0	0	0	0	0	0	0
+12.5	79.5	0	0	0	0	0	-2.8302	0	0	0	0	0	0	0	0	0
+13	79.5	0	0	0	0	0	-2.4377	0	0	0	0	0	0	0	0	0
+13.5	79.5	0	0	0	0	0	-1.6862	0	0	0	0	0	0	0	0	0
+14	79.5	0	0	0	0	0	-2.2985	0	0	0	0	0	0	0	0	0
+14.5	79.5	0	0	0	0	0	-4.225	0	0	0	0	0	0	0	0	0
+15	79.5	0	0	0	0	0	-4.1873	0	0	0	0	0	0	0	0	0
+15.5	79.5	0	0	0	0	0	-3.6601	0	0	0	0	0	0	0	0	0
+16	79.5	0	0	0	0	0	-3.8973	0	0	0	0	0	0	0	0	0
+16.5	79.5	0	0	0	0	0	-5.7081	0	0	0	0	0	0	0	0	0
+17	79.5	0	0	0	0	0	-6.4083	0	0	0	0	0	0	0	0	0
+17.5	79.5	0	0	0	0	0	-6.9318	0	0	0	0	0	0	0	0	0
+18	79.5	0	0	0	0	0	-7.4553	0	0	0	0	0	0	0	0	0
+18.5	79.5	0	0	0	0	0	-7.966	0	0	0	0	0	0	0	0	0
+19	79.5	0	0	0	0	0	-7.7125	0	0	0	0	0	0	0	0	0
+19.5	79.5	0	0	0	0	0	-7.4587	0	0	0	0	0	0	0	0	0
+20	79.5	0	0	0	0	0	-7.2046	0	0	0	0	0	0	0	0	0
+20.5	79.5	0	0	0	0	0	-6.7644	0	0	0	0	0	0	0	0	0
+21	79.5	0	0	0	0	0	-6.2049	0	0	0	0	0	0	0	0	0
+21.5	79.5	0	0	0	0	0	-5.6454	0	0	0	0	0	0	0	0	0
+22	79.5	0	0	0	0	0	-3.9476	0	0	0	0	0	0	0	0	0
+22.5	79.5	0	0	0	0	0	-4.6744	0	0	0	0	0	0	0	0	0
+23	79.5	0	0	0	0	0	-3.4135	0	0	0	0	0	0	0	0	0
+23.5	79.5	0	0	0	0	0	-2.5771	0	0	0	0	0	0	0	0	0
+24	79.5	0	0	0	0	0	-2.1735	0	0	0	0	0	0	0	0	0
+24.5	79.5	0	0	0	0	0	-3.2081	0	0	0	0	0	0	0	0	0
+25	79.5	0	0	0	0	0	-3.749	0	0	0	0	0	0	0	0	0
+25.5	79.5	0	0	0	0	0	-2.5	0	0	0	0	0	0	0	0	0
+26	79.5	0	0	0	0	0	-0.89279	0	0	0	0	0	0	0	0	0
+26.5	79.5	0	0	0	0	0	-1.2812	0	0	0	0	0	0	0	0	0
+27	79.5	0	0	0	0	0	-3.4824	0	0	0	0	0	0	0	0	0
+27.5	79.5	0	0	0	0	0	-3.4495	0	0	0	0	0	0	0	0	0
+28	79.5	0	0	0	0	0	-0.55905	0	0	0	0	0	0	0	0	0
+28.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	79.5	0	0	0	0	0	-1.0202	0	0	0	0	0	0	0	0	0
+32	79.5	0	0	0	0	0	-2.1907	0	0	0	0	0	0	0	0	0
+32.5	79.5	0	0	0	0	0	-3.3075	0	0	0	0	0	0	0	0	0
+33	79.5	0	0	0	0	0	-3.7637	0	0	0	0	0	0	0	0	0
+33.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	79.5	0	0	0	0	0	0	0	-1.5709	0	0	0	0	0	0	0
+48.5	79.5	0	0	0	0	0	0	0	-2.7089	0	0	0	0	0	0	0
+49	79.5	0	0	0	0	0	0	0	-2.9255	0	0	0	0	0	0	0
+49.5	79.5	0	0	0	0	0	0	0	-2.9582	0	0	0	0	0	0	0
+50	79.5	0	0	0	0	0	0	0	-2.2369	0	0	0	0	0	0	0
+50.5	79.5	0	0	0	0	0	0	0	-1.5427	0	0	0	0	0	0	0
+51	79.5	0	0	0	0	0	0	0	-2.9916	0	0	0	0	0	0	0
+51.5	79.5	0	0	0	0	0	0	0	-4.2155	0	0	0	0	0	0	0
+52	79.5	0	0	0	0	0	0	0	-2.6229	0	0	0	0	0	0	0
+52.5	79.5	0	0	0	0	0	0	0	-0.56741	0	0	0	0	0	0	0
+53	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	79.5	0	0	0	0	0	0	0	-1.2769	0	0	0	0	0	0	0
+54.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	79.5	0	0	0	0	0	0	0	-1.2811	0	0	0	0	0	0	0
+58.5	79.5	0	0	0	0	0	0	0	-3.606	0	0	0	0	0	0	0
+59	79.5	0	0	0	0	0	0	0	-5.4737	0	0	0	0	0	0	0
+59.5	79.5	0	0	0	0	0	0	0	-4.4779	0	0	0	0	0	0	0
+60	79.5	0	0	0	0	0	0	0	-2.6921	0	0	0	0	0	0	0
+60.5	79.5	0	0	0	0	0	0	0	-1.2898	0	0	0	0	0	0	0
+61	79.5	0	0	0	0	0	0	0	-0.48694	0	0	0	0	0	0	0
+61.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	79.5	0	0	0	0	0	0	0	-0.264	0	0	0	0	0	0	0
+93	79.5	0	0	0	0	0	0	0	-1.027	0	0	0	0	0	0	0
+93.5	79.5	0	0	0	0	0	0	0	-0.53857	0	0	0	0	0	0	0
+94	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	79.5	0	0	0	0	0	0	0	-1.2561	0	0	0	0	0	0	0
+95	79.5	0	0	0	0	0	0	0	-3.4947	0	0	0	0	0	0	0
+95.5	79.5	0	0	0	0	0	0	0	-3.8524	0	0	0	0	0	0	0
+96	79.5	0	0	0	0	0	0	0	-3.7398	0	0	0	0	0	0	0
+96.5	79.5	0	0	0	0	0	0	0	-3.4613	0	0	0	0	0	0	0
+97	79.5	0	0	0	0	0	0	0	-3.1225	0	0	0	0	0	0	0
+97.5	79.5	0	0	0	0	0	0	0	-2.7822	0	0	0	0	0	0	0
+98	79.5	0	0	0	0	0	0	0	-2.438	0	0	0	0	0	0	0
+98.5	79.5	0	0	0	0	0	0	0	-1.9594	0	0	0	0	0	0	0
+99	79.5	0	0	0	0	0	0	0	-1.4808	0	0	0	0	0	0	0
+99.5	79.5	0	0	0	0	0	0	0	-1.0104	0	0	0	0	0	0	0
+100	79.5	0	0	0	0	0	0	0	-0.54116	0	0	0	0	0	0	0
+100.5	79.5	0	0	0	0	0	0	0	-0.095672	0	0	0	0	0	0	0
+101	79.5	0	0	0	0	0	0	0	-0.038094	0	0	0	0	0	0	0
+101.5	79.5	0	0	0	0	0	0	0	-0.037229	0	0	0	0	0	0	0
+102	79.5	0	0	0	0	0	0	0	-0.078736	0	0	0	0	0	0	0
+102.5	79.5	0	0	0	0	0	0	0	-0.08565	0	0	0	0	0	0	0
+103	79.5	0	0	0	0	0	0	0	-0.07778	0	0	0	0	0	0	0
+103.5	79.5	0	0	0	0	0	0	0	-0.059766	0	0	0	0	0	0	0
+104	79.5	0	0	0	0	0	0	0	-0.041752	0	0	0	0	0	0	0
+104.5	79.5	0	0	0	0	0	0	0	-0.023742	0	0	0	0	0	0	0
+105	79.5	0	0	0	0	0	0	0	-0.0057328	0	0	0	0	0	0	0
+105.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	79.5	0	0	-0.58838	0	0	0	0	0	0	0	0	0	0	0	0
+260	79.5	0	0	-2.5508	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	79.5	0	0	-2.979	0	0	0	0	0	0	0	0	0	0	0	0
+261	79.5	0	0	-2.0172	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	79.5	0	0	-0.30948	0	0	0	0	0	0	0	0	0	0	0	0
+262	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	79.5	0	0	-0.043068	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	79.5	0	0	-3.9909	0	0	0	0	0	0	0	0	0	0	0	0
+264	79.5	0	0	-7.9388	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	79.5	0	0	-6.6926	0	0	0	0	0	0	0	0	0	0	0	0
+265	79.5	0	0	-3.8945	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	79.5	0	0	-6.9984	0	0	0	0	0	0	0	0	0	0	0	0
+266	79.5	0	0	-6.4741	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	79.5	0	0	-4.9772	0	0	0	0	0	0	0	0	0	0	0	0
+267	79.5	0	0	-5.894	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	79.5	0	0	-8.6454	0	0	0	0	0	0	0	0	0	0	0	0
+268	79.5	0	0	-8.5684	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	79.5	0	0	-12.427	0	0	0	0	0	0	0	0	0	0	0	0
+269	79.5	0	0	-13.485	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	79.5	0	0	-13.861	0	0	0	0	0	0	0	0	0	0	0	0
+270	79.5	0	0	-14.406	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	79.5	0	0	-14.951	0	0	0	0	0	0	0	0	0	0	0	0
+271	79.5	0	0	-12.788	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	79.5	0	0	-7.8744	0	0	0	0	0	0	0	0	0	0	0	0
+272	79.5	0	0	-10.723	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	79.5	0	0	-7.894	0	0	0	0	0	0	0	0	0	0	0	0
+273	79.5	0	0	-4.2701	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	79.5	0	0	-1.8092	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	79.5	0	0	-10.127	0	0	0	0	0	0	0	0	0	0	0	0
+277	79.5	0	0	-16.689	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	79.5	0	0	-13.221	0	0	0	0	0	0	0	0	0	0	0	0
+278	79.5	0	0	-3.1633	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	79.5	0	0	-10.11	0	0	0	0	0	0	0	0	0	0	0	0
+279	79.5	0	0	-17.057	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	79.5	0	0	-16.87	0	0	0	0	0	0	0	0	0	0	0	0
+280	79.5	0	0	-15.99	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	79.5	0	0	-15.558	0	0	0	0	0	0	0	0	0	0	0	0
+281	79.5	0	0	-15.895	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	79.5	0	0	-16.169	0	0	0	0	0	0	0	0	0	0	0	0
+282	79.5	0	0	-16.803	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	79.5	0	0	-17.006	0	0	0	0	0	0	0	0	0	0	0	0
+283	79.5	0	0	-15.952	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	79.5	0	0	-11.731	0	0	0	0	0	0	0	0	0	0	0	0
+284	79.5	0	0	-11.364	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	79.5	0	0	-14.633	0	0	0	0	0	0	0	0	0	0	0	0
+285	79.5	0	0	-15.635	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	79.5	0	0	-16.632	0	0	0	0	0	0	0	0	0	0	0	0
+286	79.5	0	0	-9.0422	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	79.5	0	0	-18.819	0	0	0	0	0	0	0	0	0	0	0	0
+287	79.5	0	0	-15.447	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	79.5	0	0	-8.4558	0	0	0	0	0	0	0	0	0	0	0	0
+288	79.5	0	0	-4.3148	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	79.5	0	0	-0.17373	0	0	0	0	0	0	0	0	0	0	0	0
+289	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	79.5	0	0	-3.5896	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	79.5	0	0	-2.1906	0	0	0	0	0	0	0	0	0	0	0	0
+293	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	79.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	80	0	0	0	0	0	-0.54364	0	0	0	0	0	0	0	0	0
+11.5	80	0	0	0	0	0	-1.1105	0	0	0	0	0	0	0	0	0
+12	80	0	0	0	0	0	-1.6773	0	0	0	0	0	0	0	0	0
+12.5	80	0	0	0	0	0	-1.4769	0	0	0	0	0	0	0	0	0
+13	80	0	0	0	0	0	-0.66452	0	0	0	0	0	0	0	0	0
+13.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	80	0	0	0	0	0	-1.4697	0	0	0	0	0	0	0	0	0
+15	80	0	0	0	0	0	-2.6841	0	0	0	0	0	0	0	0	0
+15.5	80	0	0	0	0	0	-1.7223	0	0	0	0	0	0	0	0	0
+16	80	0	0	0	0	0	-1.0039	0	0	0	0	0	0	0	0	0
+16.5	80	0	0	0	0	0	-1.9855	0	0	0	0	0	0	0	0	0
+17	80	0	0	0	0	0	-2.8553	0	0	0	0	0	0	0	0	0
+17.5	80	0	0	0	0	0	-4.129	0	0	0	0	0	0	0	0	0
+18	80	0	0	0	0	0	-5.4026	0	0	0	0	0	0	0	0	0
+18.5	80	0	0	0	0	0	-6.7026	0	0	0	0	0	0	0	0	0
+19	80	0	0	0	0	0	-7.015	0	0	0	0	0	0	0	0	0
+19.5	80	0	0	0	0	0	-6.9072	0	0	0	0	0	0	0	0	0
+20	80	0	0	0	0	0	-6.6797	0	0	0	0	0	0	0	0	0
+20.5	80	0	0	0	0	0	-6.4256	0	0	0	0	0	0	0	0	0
+21	80	0	0	0	0	0	-5.502	0	0	0	0	0	0	0	0	0
+21.5	80	0	0	0	0	0	-3.4704	0	0	0	0	0	0	0	0	0
+22	80	0	0	0	0	0	-2.0723	0	0	0	0	0	0	0	0	0
+22.5	80	0	0	0	0	0	-3.6199	0	0	0	0	0	0	0	0	0
+23	80	0	0	0	0	0	-4.1927	0	0	0	0	0	0	0	0	0
+23.5	80	0	0	0	0	0	-4.3386	0	0	0	0	0	0	0	0	0
+24	80	0	0	0	0	0	-3.5022	0	0	0	0	0	0	0	0	0
+24.5	80	0	0	0	0	0	-4.6946	0	0	0	0	0	0	0	0	0
+25	80	0	0	0	0	0	-3.6103	0	0	0	0	0	0	0	0	0
+25.5	80	0	0	0	0	0	-2.0031	0	0	0	0	0	0	0	0	0
+26	80	0	0	0	0	0	-0.39592	0	0	0	0	0	0	0	0	0
+26.5	80	0	0	0	0	0	-2.1723	0	0	0	0	0	0	0	0	0
+27	80	0	0	0	0	0	-4.9848	0	0	0	0	0	0	0	0	0
+27.5	80	0	0	0	0	0	-3.2478	0	0	0	0	0	0	0	0	0
+28	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	80	0	0	0	0	0	-0.31268	0	0	0	0	0	0	0	0	0
+31.5	80	0	0	0	0	0	-1.8562	0	0	0	0	0	0	0	0	0
+32	80	0	0	0	0	0	-3.3998	0	0	0	0	0	0	0	0	0
+32.5	80	0	0	0	0	0	-4.9261	0	0	0	0	0	0	0	0	0
+33	80	0	0	0	0	0	-5.2989	0	0	0	0	0	0	0	0	0
+33.5	80	0	0	0	0	0	-1.3589	0	0	0	0	0	0	0	0	0
+34	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	80	0	0	0	0	0	0	0	-1.9232	0	0	0	0	0	0	0
+47	80	0	0	0	0	0	0	0	-2.0619	0	0	0	0	0	0	0
+47.5	80	0	0	0	0	0	0	0	-0.26312	0	0	0	0	0	0	0
+48	80	0	0	0	0	0	0	0	-1.8365	0	0	0	0	0	0	0
+48.5	80	0	0	0	0	0	0	0	-3.54	0	0	0	0	0	0	0
+49	80	0	0	0	0	0	0	0	-5.2741	0	0	0	0	0	0	0
+49.5	80	0	0	0	0	0	0	0	-6.6378	0	0	0	0	0	0	0
+50	80	0	0	0	0	0	0	0	-6.7461	0	0	0	0	0	0	0
+50.5	80	0	0	0	0	0	0	0	-6.8543	0	0	0	0	0	0	0
+51	80	0	0	0	0	0	0	0	-6.5982	0	0	0	0	0	0	0
+51.5	80	0	0	0	0	0	0	0	-5.1325	0	0	0	0	0	0	0
+52	80	0	0	0	0	0	0	0	-3.1157	0	0	0	0	0	0	0
+52.5	80	0	0	0	0	0	0	0	-1.0989	0	0	0	0	0	0	0
+53	80	0	0	0	0	0	0	0	-1.7877	0	0	0	0	0	0	0
+53.5	80	0	0	0	0	0	0	0	-3.6545	0	0	0	0	0	0	0
+54	80	0	0	0	0	0	0	0	-4.7731	0	0	0	0	0	0	0
+54.5	80	0	0	0	0	0	0	0	-2.0361	0	0	0	0	0	0	0
+55	80	0	0	0	0	0	0	0	-3.8497	0	0	0	0	0	0	0
+55.5	80	0	0	0	0	0	0	0	-5.6633	0	0	0	0	0	0	0
+56	80	0	0	0	0	0	0	0	-3.6412	0	0	0	0	0	0	0
+56.5	80	0	0	0	0	0	0	0	-1.2715	0	0	0	0	0	0	0
+57	80	0	0	0	0	0	0	0	-1.4535	0	0	0	0	0	0	0
+57.5	80	0	0	0	0	0	0	0	-1.7316	0	0	0	0	0	0	0
+58	80	0	0	0	0	0	0	0	-5.4239	0	0	0	0	0	0	0
+58.5	80	0	0	0	0	0	0	0	-7.032	0	0	0	0	0	0	0
+59	80	0	0	0	0	0	0	0	-7.6615	0	0	0	0	0	0	0
+59.5	80	0	0	0	0	0	0	0	-7.5255	0	0	0	0	0	0	0
+60	80	0	0	0	0	0	0	0	-6.277	0	0	0	0	0	0	0
+60.5	80	0	0	0	0	0	0	0	-4.4912	0	0	0	0	0	0	0
+61	80	0	0	0	0	0	0	0	-3.0155	0	0	0	0	0	0	0
+61.5	80	0	0	0	0	0	0	0	-2.2127	0	0	0	0	0	0	0
+62	80	0	0	0	0	0	0	0	-1.4098	0	0	0	0	0	0	0
+62.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	80	0	0	0	0	0	0	0	-1.0248	0	0	0	0	0	0	0
+92	80	0	0	0	0	0	0	0	-1.7126	0	0	0	0	0	0	0
+92.5	80	0	0	0	0	0	0	0	-0.50152	0	0	0	0	0	0	0
+93	80	0	0	0	0	0	0	0	-1.576	0	0	0	0	0	0	0
+93.5	80	0	0	0	0	0	0	0	-2.3719	0	0	0	0	0	0	0
+94	80	0	0	0	0	0	0	0	-1.5948	0	0	0	0	0	0	0
+94.5	80	0	0	0	0	0	0	0	-1.0685	0	0	0	0	0	0	0
+95	80	0	0	0	0	0	0	0	-3.4719	0	0	0	0	0	0	0
+95.5	80	0	0	0	0	0	0	0	-3.3654	0	0	0	0	0	0	0
+96	80	0	0	0	0	0	0	0	-3.2589	0	0	0	0	0	0	0
+96.5	80	0	0	0	0	0	0	0	-3.2233	0	0	0	0	0	0	0
+97	80	0	0	0	0	0	0	0	-2.8971	0	0	0	0	0	0	0
+97.5	80	0	0	0	0	0	0	0	-2.1213	0	0	0	0	0	0	0
+98	80	0	0	0	0	0	0	0	-1.8789	0	0	0	0	0	0	0
+98.5	80	0	0	0	0	0	0	0	-1.5482	0	0	0	0	0	0	0
+99	80	0	0	0	0	0	0	0	-1.1166	0	0	0	0	0	0	0
+99.5	80	0	0	0	0	0	0	0	-0.67041	0	0	0	0	0	0	0
+100	80	0	0	0	0	0	0	0	-0.11885	0	0	0	0	0	0	0
+100.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	80	0	0	0	0	0	0	0	-0.0032444	0	0	0	0	0	0	0
+103	80	0	0	0	0	0	0	0	-0.010158	0	0	0	0	0	0	0
+103.5	80	0	0	0	0	0	0	0	-0.017071	0	0	0	0	0	0	0
+104	80	0	0	0	0	0	0	0	-0.0076132	0	0	0	0	0	0	0
+104.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	80	0	0	-0.60217	0	0	0	0	0	0	0	0	0	0	0	0
+260	80	0	0	-2.5646	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	80	0	0	-4.5271	0	0	0	0	0	0	0	0	0	0	0	0
+261	80	0	0	-3.8258	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	80	0	0	-1.7591	0	0	0	0	0	0	0	0	0	0	0	0
+262	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	80	0	0	-0.33578	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	80	0	0	-4.1122	0	0	0	0	0	0	0	0	0	0	0	0
+264	80	0	0	-5.6649	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	80	0	0	-7.46	0	0	0	0	0	0	0	0	0	0	0	0
+265	80	0	0	-9.8263	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	80	0	0	-10.351	0	0	0	0	0	0	0	0	0	0	0	0
+266	80	0	0	-10.878	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	80	0	0	-10.79	0	0	0	0	0	0	0	0	0	0	0	0
+267	80	0	0	-9.2936	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	80	0	0	-10.337	0	0	0	0	0	0	0	0	0	0	0	0
+268	80	0	0	-9.8834	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	80	0	0	-11.139	0	0	0	0	0	0	0	0	0	0	0	0
+269	80	0	0	-13.163	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	80	0	0	-13.596	0	0	0	0	0	0	0	0	0	0	0	0
+270	80	0	0	-14.034	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	80	0	0	-14.471	0	0	0	0	0	0	0	0	0	0	0	0
+271	80	0	0	-11.164	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	80	0	0	-1.9728	0	0	0	0	0	0	0	0	0	0	0	0
+273	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	80	0	0	-8.7315	0	0	0	0	0	0	0	0	0	0	0	0
+277	80	0	0	-13.412	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	80	0	0	-5.875	0	0	0	0	0	0	0	0	0	0	0	0
+278	80	0	0	-3.7255	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	80	0	0	-11.797	0	0	0	0	0	0	0	0	0	0	0	0
+279	80	0	0	-16.864	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	80	0	0	-15.985	0	0	0	0	0	0	0	0	0	0	0	0
+280	80	0	0	-15.054	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	80	0	0	-15.401	0	0	0	0	0	0	0	0	0	0	0	0
+281	80	0	0	-15.79	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	80	0	0	-16.133	0	0	0	0	0	0	0	0	0	0	0	0
+282	80	0	0	-15.765	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	80	0	0	-15.96	0	0	0	0	0	0	0	0	0	0	0	0
+283	80	0	0	-16.003	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	80	0	0	-16.455	0	0	0	0	0	0	0	0	0	0	0	0
+284	80	0	0	-17.004	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	80	0	0	-18.243	0	0	0	0	0	0	0	0	0	0	0	0
+285	80	0	0	-19.507	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	80	0	0	-20.161	0	0	0	0	0	0	0	0	0	0	0	0
+286	80	0	0	-19.111	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	80	0	0	-20.52	0	0	0	0	0	0	0	0	0	0	0	0
+287	80	0	0	-21.033	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	80	0	0	-18.613	0	0	0	0	0	0	0	0	0	0	0	0
+288	80	0	0	-14.051	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	80	0	0	-8.2573	0	0	0	0	0	0	0	0	0	0	0	0
+289	80	0	0	-3.1923	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	80	0	0	-5.5922	0	0	0	0	0	0	0	0	0	0	0	0
+290	80	0	0	-10.987	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	80	0	0	-6.7564	0	0	0	0	0	0	0	0	0	0	0	0
+291	80	0	0	-2.5256	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	80	0	0	-1.1275	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	80	0	0	-7.985	0	0	0	0	0	0	0	0	0	0	0	0
+293	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	80	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	80.5	0	0	0	0	0	-0.52445	0	0	0	0	0	0	0	0	0
+12	80.5	0	0	0	0	0	-0.51607	0	0	0	0	0	0	0	0	0
+12.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	80.5	0	0	0	0	0	-0.21935	0	0	0	0	0	0	0	0	0
+15.5	80.5	0	0	0	0	0	-0.45715	0	0	0	0	0	0	0	0	0
+16	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	80.5	0	0	0	0	0	-0.32343	0	0	0	0	0	0	0	0	0
+17	80.5	0	0	0	0	0	-1.6392	0	0	0	0	0	0	0	0	0
+17.5	80.5	0	0	0	0	0	-2.955	0	0	0	0	0	0	0	0	0
+18	80.5	0	0	0	0	0	-4.2708	0	0	0	0	0	0	0	0	0
+18.5	80.5	0	0	0	0	0	-5.0923	0	0	0	0	0	0	0	0	0
+19	80.5	0	0	0	0	0	-4.043	0	0	0	0	0	0	0	0	0
+19.5	80.5	0	0	0	0	0	-3.9352	0	0	0	0	0	0	0	0	0
+20	80.5	0	0	0	0	0	-3.8275	0	0	0	0	0	0	0	0	0
+20.5	80.5	0	0	0	0	0	-3.5883	0	0	0	0	0	0	0	0	0
+21	80.5	0	0	0	0	0	-3.347	0	0	0	0	0	0	0	0	0
+21.5	80.5	0	0	0	0	0	-2.0999	0	0	0	0	0	0	0	0	0
+22	80.5	0	0	0	0	0	-0.75707	0	0	0	0	0	0	0	0	0
+22.5	80.5	0	0	0	0	0	-2.0556	0	0	0	0	0	0	0	0	0
+23	80.5	0	0	0	0	0	-2.6136	0	0	0	0	0	0	0	0	0
+23.5	80.5	0	0	0	0	0	-3.1716	0	0	0	0	0	0	0	0	0
+24	80.5	0	0	0	0	0	-3.8901	0	0	0	0	0	0	0	0	0
+24.5	80.5	0	0	0	0	0	-3.152	0	0	0	0	0	0	0	0	0
+25	80.5	0	0	0	0	0	-2.1044	0	0	0	0	0	0	0	0	0
+25.5	80.5	0	0	0	0	0	-1.2715	0	0	0	0	0	0	0	0	0
+26	80.5	0	0	0	0	0	-0.18106	0	0	0	0	0	0	0	0	0
+26.5	80.5	0	0	0	0	0	-0.99109	0	0	0	0	0	0	0	0	0
+27	80.5	0	0	0	0	0	-0.81358	0	0	0	0	0	0	0	0	0
+27.5	80.5	0	0	0	0	0	-0.63607	0	0	0	0	0	0	0	0	0
+28	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	80.5	0	0	0	0	0	-0.74899	0	0	0	0	0	0	0	0	0
+31.5	80.5	0	0	0	0	0	-2.2268	0	0	0	0	0	0	0	0	0
+32	80.5	0	0	0	0	0	-3.7047	0	0	0	0	0	0	0	0	0
+32.5	80.5	0	0	0	0	0	-4.6298	0	0	0	0	0	0	0	0	0
+33	80.5	0	0	0	0	0	-4.5907	0	0	0	0	0	0	0	0	0
+33.5	80.5	0	0	0	0	0	-2.5612	0	0	0	0	0	0	0	0	0
+34	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	80.5	0	0	0	0	0	0	0	-1.6357	0	0	0	0	0	0	0
+46.5	80.5	0	0	0	0	0	0	0	-4.6657	0	0	0	0	0	0	0
+47	80.5	0	0	0	0	0	0	0	-4.2162	0	0	0	0	0	0	0
+47.5	80.5	0	0	0	0	0	0	0	-1.6187	0	0	0	0	0	0	0
+48	80.5	0	0	0	0	0	0	0	-0.80598	0	0	0	0	0	0	0
+48.5	80.5	0	0	0	0	0	0	0	-2.9449	0	0	0	0	0	0	0
+49	80.5	0	0	0	0	0	0	0	-4.9799	0	0	0	0	0	0	0
+49.5	80.5	0	0	0	0	0	0	0	-5.5358	0	0	0	0	0	0	0
+50	80.5	0	0	0	0	0	0	0	-5.644	0	0	0	0	0	0	0
+50.5	80.5	0	0	0	0	0	0	0	-5.7523	0	0	0	0	0	0	0
+51	80.5	0	0	0	0	0	0	0	-5.1033	0	0	0	0	0	0	0
+51.5	80.5	0	0	0	0	0	0	0	-4.2749	0	0	0	0	0	0	0
+52	80.5	0	0	0	0	0	0	0	-3.2115	0	0	0	0	0	0	0
+52.5	80.5	0	0	0	0	0	0	0	-1.1947	0	0	0	0	0	0	0
+53	80.5	0	0	0	0	0	0	0	-3.1707	0	0	0	0	0	0	0
+53.5	80.5	0	0	0	0	0	0	0	-6.0078	0	0	0	0	0	0	0
+54	80.5	0	0	0	0	0	0	0	-6.1152	0	0	0	0	0	0	0
+54.5	80.5	0	0	0	0	0	0	0	-3.8382	0	0	0	0	0	0	0
+55	80.5	0	0	0	0	0	0	0	-5.6517	0	0	0	0	0	0	0
+55.5	80.5	0	0	0	0	0	0	0	-6.2305	0	0	0	0	0	0	0
+56	80.5	0	0	0	0	0	0	0	-5.8724	0	0	0	0	0	0	0
+56.5	80.5	0	0	0	0	0	0	0	-4.5713	0	0	0	0	0	0	0
+57	80.5	0	0	0	0	0	0	0	-3.6114	0	0	0	0	0	0	0
+57.5	80.5	0	0	0	0	0	0	0	-6.5331	0	0	0	0	0	0	0
+58	80.5	0	0	0	0	0	0	0	-6.6261	0	0	0	0	0	0	0
+58.5	80.5	0	0	0	0	0	0	0	-6.6123	0	0	0	0	0	0	0
+59	80.5	0	0	0	0	0	0	0	-6.4215	0	0	0	0	0	0	0
+59.5	80.5	0	0	0	0	0	0	0	-6.2786	0	0	0	0	0	0	0
+60	80.5	0	0	0	0	0	0	0	-6.1664	0	0	0	0	0	0	0
+60.5	80.5	0	0	0	0	0	0	0	-6.0543	0	0	0	0	0	0	0
+61	80.5	0	0	0	0	0	0	0	-5.9421	0	0	0	0	0	0	0
+61.5	80.5	0	0	0	0	0	0	0	-4.7413	0	0	0	0	0	0	0
+62	80.5	0	0	0	0	0	0	0	-0.76217	0	0	0	0	0	0	0
+62.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	80.5	0	0	0	0	0	0	0	-1.7195	0	0	0	0	0	0	0
+92	80.5	0	0	0	0	0	0	0	-2.6919	0	0	0	0	0	0	0
+92.5	80.5	0	0	0	0	0	0	0	-0.31584	0	0	0	0	0	0	0
+93	80.5	0	0	0	0	0	0	0	-1.3903	0	0	0	0	0	0	0
+93.5	80.5	0	0	0	0	0	0	0	-2.4024	0	0	0	0	0	0	0
+94	80.5	0	0	0	0	0	0	0	-2.8388	0	0	0	0	0	0	0
+94.5	80.5	0	0	0	0	0	0	0	-2.7993	0	0	0	0	0	0	0
+95	80.5	0	0	0	0	0	0	0	-2.7428	0	0	0	0	0	0	0
+95.5	80.5	0	0	0	0	0	0	0	-2.6862	0	0	0	0	0	0	0
+96	80.5	0	0	0	0	0	0	0	-2.6297	0	0	0	0	0	0	0
+96.5	80.5	0	0	0	0	0	0	0	-2.5731	0	0	0	0	0	0	0
+97	80.5	0	0	0	0	0	0	0	-1.8091	0	0	0	0	0	0	0
+97.5	80.5	0	0	0	0	0	0	0	-0.97798	0	0	0	0	0	0	0
+98	80.5	0	0	0	0	0	0	0	-0.52967	0	0	0	0	0	0	0
+98.5	80.5	0	0	0	0	0	0	0	-0.45668	0	0	0	0	0	0	0
+99	80.5	0	0	0	0	0	0	0	-0.3837	0	0	0	0	0	0	0
+99.5	80.5	0	0	0	0	0	0	0	-0.31071	0	0	0	0	0	0	0
+100	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	80.5	0	0	-0.61596	0	0	0	0	0	0	0	0	0	0	0	0
+260	80.5	0	0	-2.2118	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	80.5	0	0	-2.904	0	0	0	0	0	0	0	0	0	0	0	0
+261	80.5	0	0	-3.0816	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	80.5	0	0	-2.1858	0	0	0	0	0	0	0	0	0	0	0	0
+262	80.5	0	0	-1.0121	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	80.5	0	0	-0.46282	0	0	0	0	0	0	0	0	0	0	0	0
+264	80.5	0	0	-2.0155	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	80.5	0	0	-3.5782	0	0	0	0	0	0	0	0	0	0	0	0
+265	80.5	0	0	-5.9445	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	80.5	0	0	-7.5342	0	0	0	0	0	0	0	0	0	0	0	0
+266	80.5	0	0	-9.5575	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	80.5	0	0	-10.595	0	0	0	0	0	0	0	0	0	0	0	0
+267	80.5	0	0	-10.932	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	80.5	0	0	-11.191	0	0	0	0	0	0	0	0	0	0	0	0
+268	80.5	0	0	-6.4324	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	80.5	0	0	-2.3735	0	0	0	0	0	0	0	0	0	0	0	0
+269	80.5	0	0	-8.3184	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	80.5	0	0	-6.926	0	0	0	0	0	0	0	0	0	0	0	0
+270	80.5	0	0	-5.5335	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	80.5	0	0	-4.9465	0	0	0	0	0	0	0	0	0	0	0	0
+271	80.5	0	0	-3.6951	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	80.5	0	0	-0.84597	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	80.5	0	0	-2.2906	0	0	0	0	0	0	0	0	0	0	0	0
+274	80.5	0	0	-2.2321	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	80.5	0	0	-5.188	0	0	0	0	0	0	0	0	0	0	0	0
+275	80.5	0	0	-9.9081	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	80.5	0	0	-4.3979	0	0	0	0	0	0	0	0	0	0	0	0
+276	80.5	0	0	-1.6982	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	80.5	0	0	-1.9367	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	80.5	0	0	-4.166	0	0	0	0	0	0	0	0	0	0	0	0
+278	80.5	0	0	-7.673	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	80.5	0	0	-14.775	0	0	0	0	0	0	0	0	0	0	0	0
+279	80.5	0	0	-12.384	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	80.5	0	0	-9.6664	0	0	0	0	0	0	0	0	0	0	0	0
+280	80.5	0	0	-14.633	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	80.5	0	0	-15.083	0	0	0	0	0	0	0	0	0	0	0	0
+281	80.5	0	0	-15.533	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	80.5	0	0	-11.917	0	0	0	0	0	0	0	0	0	0	0	0
+282	80.5	0	0	-15.074	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	80.5	0	0	-14.7	0	0	0	0	0	0	0	0	0	0	0	0
+283	80.5	0	0	-15.01	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	80.5	0	0	-15.811	0	0	0	0	0	0	0	0	0	0	0	0
+284	80.5	0	0	-16.583	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	80.5	0	0	-17.516	0	0	0	0	0	0	0	0	0	0	0	0
+285	80.5	0	0	-18.086	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	80.5	0	0	-18.431	0	0	0	0	0	0	0	0	0	0	0	0
+286	80.5	0	0	-18.622	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	80.5	0	0	-19.006	0	0	0	0	0	0	0	0	0	0	0	0
+287	80.5	0	0	-19.464	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	80.5	0	0	-20.149	0	0	0	0	0	0	0	0	0	0	0	0
+288	80.5	0	0	-20.833	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	80.5	0	0	-15.058	0	0	0	0	0	0	0	0	0	0	0	0
+289	80.5	0	0	-8.9259	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	80.5	0	0	-14.228	0	0	0	0	0	0	0	0	0	0	0	0
+290	80.5	0	0	-18.385	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	80.5	0	0	-13.581	0	0	0	0	0	0	0	0	0	0	0	0
+291	80.5	0	0	-7.9814	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	80.5	0	0	-0.19371	0	0	0	0	0	0	0	0	0	0	0	0
+292	80.5	0	0	-7.8629	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	80.5	0	0	-12.321	0	0	0	0	0	0	0	0	0	0	0	0
+293	80.5	0	0	-3.3636	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	80.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	81	0	0	0	0	0	-0.52333	0	0	0	0	0	0	0	0	0
+17.5	81	0	0	0	0	0	-1.8391	0	0	0	0	0	0	0	0	0
+18	81	0	0	0	0	0	-3.1549	0	0	0	0	0	0	0	0	0
+18.5	81	0	0	0	0	0	-2.3026	0	0	0	0	0	0	0	0	0
+19	81	0	0	0	0	0	-1.0711	0	0	0	0	0	0	0	0	0
+19.5	81	0	0	0	0	0	-0.87295	0	0	0	0	0	0	0	0	0
+20	81	0	0	0	0	0	-0.63161	0	0	0	0	0	0	0	0	0
+20.5	81	0	0	0	0	0	-0.39027	0	0	0	0	0	0	0	0	0
+21	81	0	0	0	0	0	-0.14894	0	0	0	0	0	0	0	0	0
+21.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	81	0	0	0	0	0	-0.042475	0	0	0	0	0	0	0	0	0
+22.5	81	0	0	0	0	0	-0.85372	0	0	0	0	0	0	0	0	0
+23	81	0	0	0	0	0	-1.665	0	0	0	0	0	0	0	0	0
+23.5	81	0	0	0	0	0	-2.4762	0	0	0	0	0	0	0	0	0
+24	81	0	0	0	0	0	-2.9755	0	0	0	0	0	0	0	0	0
+24.5	81	0	0	0	0	0	-1.4184	0	0	0	0	0	0	0	0	0
+25	81	0	0	0	0	0	-0.13374	0	0	0	0	0	0	0	0	0
+25.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	81	0	0	0	0	0	-0.33116	0	0	0	0	0	0	0	0	0
+31.5	81	0	0	0	0	0	-0.7779	0	0	0	0	0	0	0	0	0
+32	81	0	0	0	0	0	-0.73887	0	0	0	0	0	0	0	0	0
+32.5	81	0	0	0	0	0	-0.69983	0	0	0	0	0	0	0	0	0
+33	81	0	0	0	0	0	-0.6608	0	0	0	0	0	0	0	0	0
+33.5	81	0	0	0	0	0	-0.62177	0	0	0	0	0	0	0	0	0
+34	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	81	0	0	0	0	0	0	0	-1.8275	0	0	0	0	0	0	0
+46.5	81	0	0	0	0	0	0	0	-3.3233	0	0	0	0	0	0	0
+47	81	0	0	0	0	0	0	0	-3.0412	0	0	0	0	0	0	0
+47.5	81	0	0	0	0	0	0	0	-2.1397	0	0	0	0	0	0	0
+48	81	0	0	0	0	0	0	0	-0.37685	0	0	0	0	0	0	0
+48.5	81	0	0	0	0	0	0	0	-1.7169	0	0	0	0	0	0	0
+49	81	0	0	0	0	0	0	0	-2.7047	0	0	0	0	0	0	0
+49.5	81	0	0	0	0	0	0	0	-3.4905	0	0	0	0	0	0	0
+50	81	0	0	0	0	0	0	0	-4.1554	0	0	0	0	0	0	0
+50.5	81	0	0	0	0	0	0	0	-4.3853	0	0	0	0	0	0	0
+51	81	0	0	0	0	0	0	0	-3.7774	0	0	0	0	0	0	0
+51.5	81	0	0	0	0	0	0	0	-3.0034	0	0	0	0	0	0	0
+52	81	0	0	0	0	0	0	0	-1.989	0	0	0	0	0	0	0
+52.5	81	0	0	0	0	0	0	0	-1.1232	0	0	0	0	0	0	0
+53	81	0	0	0	0	0	0	0	-1.786	0	0	0	0	0	0	0
+53.5	81	0	0	0	0	0	0	0	-2.7238	0	0	0	0	0	0	0
+54	81	0	0	0	0	0	0	0	-3.6943	0	0	0	0	0	0	0
+54.5	81	0	0	0	0	0	0	0	-5.0506	0	0	0	0	0	0	0
+55	81	0	0	0	0	0	0	0	-4.7056	0	0	0	0	0	0	0
+55.5	81	0	0	0	0	0	0	0	-4.245	0	0	0	0	0	0	0
+56	81	0	0	0	0	0	0	0	-3.7843	0	0	0	0	0	0	0
+56.5	81	0	0	0	0	0	0	0	-4.4956	0	0	0	0	0	0	0
+57	81	0	0	0	0	0	0	0	-5.1952	0	0	0	0	0	0	0
+57.5	81	0	0	0	0	0	0	0	-5.2906	0	0	0	0	0	0	0
+58	81	0	0	0	0	0	0	0	-5.2794	0	0	0	0	0	0	0
+58.5	81	0	0	0	0	0	0	0	-5.2681	0	0	0	0	0	0	0
+59	81	0	0	0	0	0	0	0	-5.1475	0	0	0	0	0	0	0
+59.5	81	0	0	0	0	0	0	0	-5.0317	0	0	0	0	0	0	0
+60	81	0	0	0	0	0	0	0	-4.9195	0	0	0	0	0	0	0
+60.5	81	0	0	0	0	0	0	0	-4.8134	0	0	0	0	0	0	0
+61	81	0	0	0	0	0	0	0	-4.7642	0	0	0	0	0	0	0
+61.5	81	0	0	0	0	0	0	0	-4.1244	0	0	0	0	0	0	0
+62	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	81	0	0	0	0	0	0	0	-2.2146	0	0	0	0	0	0	0
+92	81	0	0	0	0	0	0	0	-0.93283	0	0	0	0	0	0	0
+92.5	81	0	0	0	0	0	0	0	-0.0070427	0	0	0	0	0	0	0
+93	81	0	0	0	0	0	0	0	-0.88458	0	0	0	0	0	0	0
+93.5	81	0	0	0	0	0	0	0	-1.4668	0	0	0	0	0	0	0
+94	81	0	0	0	0	0	0	0	-1.7203	0	0	0	0	0	0	0
+94.5	81	0	0	0	0	0	0	0	-2.021	0	0	0	0	0	0	0
+95	81	0	0	0	0	0	0	0	-1.9524	0	0	0	0	0	0	0
+95.5	81	0	0	0	0	0	0	0	-1.8963	0	0	0	0	0	0	0
+96	81	0	0	0	0	0	0	0	-1.8543	0	0	0	0	0	0	0
+96.5	81	0	0	0	0	0	0	0	-1.807	0	0	0	0	0	0	0
+97	81	0	0	0	0	0	0	0	-0.9126	0	0	0	0	0	0	0
+97.5	81	0	0	0	0	0	0	0	-0.049304	0	0	0	0	0	0	0
+98	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	81	0	0	-0.56372	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	81	0	0	-1.2559	0	0	0	0	0	0	0	0	0	0	0	0
+261	81	0	0	-1.948	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	81	0	0	-1.0697	0	0	0	0	0	0	0	0	0	0	0	0
+262	81	0	0	-0.17385	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	81	0	0	-1.4561	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	81	0	0	-2.8231	0	0	0	0	0	0	0	0	0	0	0	0
+266	81	0	0	-4.1902	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	81	0	0	-6.2121	0	0	0	0	0	0	0	0	0	0	0	0
+267	81	0	0	-8.5639	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	81	0	0	-9.9309	0	0	0	0	0	0	0	0	0	0	0	0
+268	81	0	0	-5.7925	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	81	0	0	-1.6541	0	0	0	0	0	0	0	0	0	0	0	0
+269	81	0	0	-3.1121	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	81	0	0	-1.7197	0	0	0	0	0	0	0	0	0	0	0	0
+270	81	0	0	-0.32719	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	81	0	0	-0.11488	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	81	0	0	-4.389	0	0	0	0	0	0	0	0	0	0	0	0
+272	81	0	0	-5.982	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	81	0	0	-7.0672	0	0	0	0	0	0	0	0	0	0	0	0
+273	81	0	0	-5.2691	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	81	0	0	-6.7137	0	0	0	0	0	0	0	0	0	0	0	0
+274	81	0	0	-4.1755	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	81	0	0	-1.5474	0	0	0	0	0	0	0	0	0	0	0	0
+275	81	0	0	-11.042	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	81	0	0	-10.294	0	0	0	0	0	0	0	0	0	0	0	0
+276	81	0	0	-6.5759	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	81	0	0	-7.8459	0	0	0	0	0	0	0	0	0	0	0	0
+277	81	0	0	-11.371	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	81	0	0	-7.0215	0	0	0	0	0	0	0	0	0	0	0	0
+278	81	0	0	-13.054	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	81	0	0	-15.67	0	0	0	0	0	0	0	0	0	0	0	0
+279	81	0	0	-8.0657	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	81	0	0	-1.7249	0	0	0	0	0	0	0	0	0	0	0	0
+280	81	0	0	-12.452	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	81	0	0	-14.569	0	0	0	0	0	0	0	0	0	0	0	0
+281	81	0	0	-9.0667	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	81	0	0	-1.4532	0	0	0	0	0	0	0	0	0	0	0	0
+282	81	0	0	-10.03	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	81	0	0	-13.264	0	0	0	0	0	0	0	0	0	0	0	0
+283	81	0	0	-13.778	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	81	0	0	-14.801	0	0	0	0	0	0	0	0	0	0	0	0
+284	81	0	0	-15.818	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	81	0	0	-16.589	0	0	0	0	0	0	0	0	0	0	0	0
+285	81	0	0	-16.645	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	81	0	0	-16.702	0	0	0	0	0	0	0	0	0	0	0	0
+286	81	0	0	-16.996	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	81	0	0	-17.404	0	0	0	0	0	0	0	0	0	0	0	0
+287	81	0	0	-17.896	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	81	0	0	-17.41	0	0	0	0	0	0	0	0	0	0	0	0
+288	81	0	0	-14.33	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	81	0	0	-15.764	0	0	0	0	0	0	0	0	0	0	0	0
+289	81	0	0	-16.843	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	81	0	0	-13.616	0	0	0	0	0	0	0	0	0	0	0	0
+290	81	0	0	-17.829	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	81	0	0	-16.056	0	0	0	0	0	0	0	0	0	0	0	0
+291	81	0	0	-3.5279	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	81	0	0	-5.975	0	0	0	0	0	0	0	0	0	0	0	0
+292	81	0	0	-14.292	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	81	0	0	-16.353	0	0	0	0	0	0	0	0	0	0	0	0
+293	81	0	0	-6.1034	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	81	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	81.5	0	0	0	0	0	-0.72324	0	0	0	0	0	0	0	0	0
+18	81.5	0	0	0	0	0	-1.3355	0	0	0	0	0	0	0	0	0
+18.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	81.5	0	0	0	0	0	-0.25108	0	0	0	0	0	0	0	0	0
+23	81.5	0	0	0	0	0	-1.0623	0	0	0	0	0	0	0	0	0
+23.5	81.5	0	0	0	0	0	-1.8736	0	0	0	0	0	0	0	0	0
+24	81.5	0	0	0	0	0	-1.3207	0	0	0	0	0	0	0	0	0
+24.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	81.5	0	0	0	0	0	0	0	-0.31344	0	0	0	0	0	0	0
+46.5	81.5	0	0	0	0	0	0	0	-1.8093	0	0	0	0	0	0	0
+47	81.5	0	0	0	0	0	0	0	-1.2784	0	0	0	0	0	0	0
+47.5	81.5	0	0	0	0	0	0	0	-0.37683	0	0	0	0	0	0	0
+48	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	81.5	0	0	0	0	0	0	0	-0.42955	0	0	0	0	0	0	0
+49.5	81.5	0	0	0	0	0	0	0	-1.2684	0	0	0	0	0	0	0
+50	81.5	0	0	0	0	0	0	0	-1.3677	0	0	0	0	0	0	0
+50.5	81.5	0	0	0	0	0	0	0	-1.2898	0	0	0	0	0	0	0
+51	81.5	0	0	0	0	0	0	0	-1.2119	0	0	0	0	0	0	0
+51.5	81.5	0	0	0	0	0	0	0	-1.134	0	0	0	0	0	0	0
+52	81.5	0	0	0	0	0	0	0	-1.0349	0	0	0	0	0	0	0
+52.5	81.5	0	0	0	0	0	0	0	-0.18074	0	0	0	0	0	0	0
+53	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	81.5	0	0	0	0	0	0	0	-0.9975	0	0	0	0	0	0	0
+54	81.5	0	0	0	0	0	0	0	-2.3538	0	0	0	0	0	0	0
+54.5	81.5	0	0	0	0	0	0	0	-3.5699	0	0	0	0	0	0	0
+55	81.5	0	0	0	0	0	0	0	-2.9205	0	0	0	0	0	0	0
+55.5	81.5	0	0	0	0	0	0	0	-2.2711	0	0	0	0	0	0	0
+56	81.5	0	0	0	0	0	0	0	-1.7988	0	0	0	0	0	0	0
+56.5	81.5	0	0	0	0	0	0	0	-2.3069	0	0	0	0	0	0	0
+57	81.5	0	0	0	0	0	0	0	-2.6376	0	0	0	0	0	0	0
+57.5	81.5	0	0	0	0	0	0	0	-2.9683	0	0	0	0	0	0	0
+58	81.5	0	0	0	0	0	0	0	-3.2991	0	0	0	0	0	0	0
+58.5	81.5	0	0	0	0	0	0	0	-3.6298	0	0	0	0	0	0	0
+59	81.5	0	0	0	0	0	0	0	-3.9116	0	0	0	0	0	0	0
+59.5	81.5	0	0	0	0	0	0	0	-3.8623	0	0	0	0	0	0	0
+60	81.5	0	0	0	0	0	0	0	-3.8131	0	0	0	0	0	0	0
+60.5	81.5	0	0	0	0	0	0	0	-3.7638	0	0	0	0	0	0	0
+61	81.5	0	0	0	0	0	0	0	-3.7145	0	0	0	0	0	0	0
+61.5	81.5	0	0	0	0	0	0	0	-1.8441	0	0	0	0	0	0	0
+62	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	81.5	0	0	0	0	0	0	0	-1.0009	0	0	0	0	0	0	0
+92	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	81.5	0	0	0	0	0	0	0	-0.12486	0	0	0	0	0	0	0
+93.5	81.5	0	0	0	0	0	0	0	-0.53025	0	0	0	0	0	0	0
+94	81.5	0	0	0	0	0	0	0	-0.93563	0	0	0	0	0	0	0
+94.5	81.5	0	0	0	0	0	0	0	-1.1956	0	0	0	0	0	0	0
+95	81.5	0	0	0	0	0	0	0	-1.1406	0	0	0	0	0	0	0
+95.5	81.5	0	0	0	0	0	0	0	-1.0856	0	0	0	0	0	0	0
+96	81.5	0	0	0	0	0	0	0	-1.008	0	0	0	0	0	0	0
+96.5	81.5	0	0	0	0	0	0	0	-0.91182	0	0	0	0	0	0	0
+97	81.5	0	0	0	0	0	0	0	-0.38992	0	0	0	0	0	0	0
+97.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	81.5	0	0	-0.29986	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	81.5	0	0	-0.84619	0	0	0	0	0	0	0	0	0	0	0	0
+267	81.5	0	0	-2.8667	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	81.5	0	0	-4.9101	0	0	0	0	0	0	0	0	0	0	0	0
+268	81.5	0	0	-3.9095	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	81.5	0	0	-0.97442	0	0	0	0	0	0	0	0	0	0	0	0
+269	81.5	0	0	-0.75532	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	81.5	0	0	-2.0381	0	0	0	0	0	0	0	0	0	0	0	0
+270	81.5	0	0	-2.3252	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	81.5	0	0	-2.6123	0	0	0	0	0	0	0	0	0	0	0	0
+271	81.5	0	0	-2.8994	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	81.5	0	0	-5.7417	0	0	0	0	0	0	0	0	0	0	0	0
+272	81.5	0	0	-9.7294	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	81.5	0	0	-12.16	0	0	0	0	0	0	0	0	0	0	0	0
+273	81.5	0	0	-9.6923	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	81.5	0	0	-8.7468	0	0	0	0	0	0	0	0	0	0	0	0
+274	81.5	0	0	-4.7447	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	81.5	0	0	-2.382	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	81.5	0	0	-9.2455	0	0	0	0	0	0	0	0	0	0	0	0
+276	81.5	0	0	-12.305	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	81.5	0	0	-15.311	0	0	0	0	0	0	0	0	0	0	0	0
+277	81.5	0	0	-14.226	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	81.5	0	0	-11.967	0	0	0	0	0	0	0	0	0	0	0	0
+278	81.5	0	0	-14.675	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	81.5	0	0	-14.53	0	0	0	0	0	0	0	0	0	0	0	0
+279	81.5	0	0	-14.181	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	81.5	0	0	-9.8099	0	0	0	0	0	0	0	0	0	0	0	0
+280	81.5	0	0	-11.691	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	81.5	0	0	-12.304	0	0	0	0	0	0	0	0	0	0	0	0
+281	81.5	0	0	-8.8487	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	81.5	0	0	-7.5619	0	0	0	0	0	0	0	0	0	0	0	0
+282	81.5	0	0	-12.273	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	81.5	0	0	-12.665	0	0	0	0	0	0	0	0	0	0	0	0
+283	81.5	0	0	-13.067	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	81.5	0	0	-14.133	0	0	0	0	0	0	0	0	0	0	0	0
+284	81.5	0	0	-14.778	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	81.5	0	0	-14.86	0	0	0	0	0	0	0	0	0	0	0	0
+285	81.5	0	0	-14.916	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	81.5	0	0	-15.023	0	0	0	0	0	0	0	0	0	0	0	0
+286	81.5	0	0	-15.403	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	81.5	0	0	-15.871	0	0	0	0	0	0	0	0	0	0	0	0
+287	81.5	0	0	-16.328	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	81.5	0	0	-16.679	0	0	0	0	0	0	0	0	0	0	0	0
+288	81.5	0	0	-10.249	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	81.5	0	0	-3.8195	0	0	0	0	0	0	0	0	0	0	0	0
+289	81.5	0	0	-2.3379	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	81.5	0	0	-8.5084	0	0	0	0	0	0	0	0	0	0	0	0
+290	81.5	0	0	-14.862	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	81.5	0	0	-6.8622	0	0	0	0	0	0	0	0	0	0	0	0
+291	81.5	0	0	-3.7614	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	81.5	0	0	-10.644	0	0	0	0	0	0	0	0	0	0	0	0
+292	81.5	0	0	-16.654	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	81.5	0	0	-4.9114	0	0	0	0	0	0	0	0	0	0	0	0
+293	81.5	0	0	-0.7414	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	81.5	0	0	-3.4799	0	0	0	0	0	0	0	0	0	0	0	0
+294	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	81.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	82	0	0	0	0	0	-0.45969	0	0	0	0	0	0	0	0	0
+23.5	82	0	0	0	0	0	-1.2229	0	0	0	0	0	0	0	0	0
+24	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	82	0	0	0	0	0	0	0	-0.29528	0	0	0	0	0	0	0
+47	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	82	0	0	0	0	0	0	0	-1.0132	0	0	0	0	0	0	0
+54.5	82	0	0	0	0	0	0	0	-1.8853	0	0	0	0	0	0	0
+55	82	0	0	0	0	0	0	0	-1.2359	0	0	0	0	0	0	0
+55.5	82	0	0	0	0	0	0	0	-0.58647	0	0	0	0	0	0	0
+56	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	82	0	0	0	0	0	0	0	-0.035016	0	0	0	0	0	0	0
+57	82	0	0	0	0	0	0	0	-0.52429	0	0	0	0	0	0	0
+57.5	82	0	0	0	0	0	0	0	-1.0136	0	0	0	0	0	0	0
+58	82	0	0	0	0	0	0	0	-1.5028	0	0	0	0	0	0	0
+58.5	82	0	0	0	0	0	0	0	-1.9921	0	0	0	0	0	0	0
+59	82	0	0	0	0	0	0	0	-2.4814	0	0	0	0	0	0	0
+59.5	82	0	0	0	0	0	0	0	-2.8127	0	0	0	0	0	0	0
+60	82	0	0	0	0	0	0	0	-2.7634	0	0	0	0	0	0	0
+60.5	82	0	0	0	0	0	0	0	-2.7141	0	0	0	0	0	0	0
+61	82	0	0	0	0	0	0	0	-2.6649	0	0	0	0	0	0	0
+61.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	82	0	0	0	0	0	0	0	-0.17408	0	0	0	0	0	0	0
+94.5	82	0	0	0	0	0	0	0	-0.3703	0	0	0	0	0	0	0
+95	82	0	0	0	0	0	0	0	-0.29424	0	0	0	0	0	0	0
+95.5	82	0	0	0	0	0	0	0	-0.20055	0	0	0	0	0	0	0
+96	82	0	0	0	0	0	0	0	-0.10686	0	0	0	0	0	0	0
+96.5	82	0	0	0	0	0	0	0	-0.013165	0	0	0	0	0	0	0
+97	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	82	0	0	-0.79032	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	82	0	0	-1.5068	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	82	0	0	-3.0559	0	0	0	0	0	0	0	0	0	0	0	0
+270	82	0	0	-4.605	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	82	0	0	-6.154	0	0	0	0	0	0	0	0	0	0	0	0
+271	82	0	0	-7.7031	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	82	0	0	-8.7583	0	0	0	0	0	0	0	0	0	0	0	0
+272	82	0	0	-8.6285	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	82	0	0	-8.3052	0	0	0	0	0	0	0	0	0	0	0	0
+273	82	0	0	-8.1419	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	82	0	0	-4.052	0	0	0	0	0	0	0	0	0	0	0	0
+274	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	82	0	0	-3.3196	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	82	0	0	-10.183	0	0	0	0	0	0	0	0	0	0	0	0
+276	82	0	0	-12.306	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	82	0	0	-13.013	0	0	0	0	0	0	0	0	0	0	0	0
+277	82	0	0	-13.349	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	82	0	0	-13.682	0	0	0	0	0	0	0	0	0	0	0	0
+278	82	0	0	-13.566	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	82	0	0	-13.429	0	0	0	0	0	0	0	0	0	0	0	0
+279	82	0	0	-13.124	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	82	0	0	-12.632	0	0	0	0	0	0	0	0	0	0	0	0
+280	82	0	0	-12.144	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	82	0	0	-11.946	0	0	0	0	0	0	0	0	0	0	0	0
+281	82	0	0	-11.728	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	82	0	0	-11.282	0	0	0	0	0	0	0	0	0	0	0	0
+282	82	0	0	-11.708	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	82	0	0	-12.209	0	0	0	0	0	0	0	0	0	0	0	0
+283	82	0	0	-12.664	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	82	0	0	-12.944	0	0	0	0	0	0	0	0	0	0	0	0
+284	82	0	0	-13.054	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	82	0	0	-13.12	0	0	0	0	0	0	0	0	0	0	0	0
+285	82	0	0	-13.186	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	82	0	0	-13.331	0	0	0	0	0	0	0	0	0	0	0	0
+286	82	0	0	-13.755	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	82	0	0	-14.176	0	0	0	0	0	0	0	0	0	0	0	0
+287	82	0	0	-14.698	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	82	0	0	-15.135	0	0	0	0	0	0	0	0	0	0	0	0
+288	82	0	0	-14.628	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	82	0	0	-8.2969	0	0	0	0	0	0	0	0	0	0	0	0
+289	82	0	0	-4.3347	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	82	0	0	-8.6429	0	0	0	0	0	0	0	0	0	0	0	0
+290	82	0	0	-13.372	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	82	0	0	-9.7431	0	0	0	0	0	0	0	0	0	0	0	0
+291	82	0	0	-7.7517	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	82	0	0	-11.232	0	0	0	0	0	0	0	0	0	0	0	0
+292	82	0	0	-15.074	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	82	0	0	-6.4605	0	0	0	0	0	0	0	0	0	0	0	0
+293	82	0	0	-7.5307	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	82	0	0	-10.098	0	0	0	0	0	0	0	0	0	0	0	0
+294	82	0	0	-12.632	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	82	0	0	-5.5268	0	0	0	0	0	0	0	0	0	0	0	0
+295	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	82	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	82.5	0	0	0	0	0	0	0	-0.20066	0	0	0	0	0	0	0
+55	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	82.5	0	0	0	0	0	0	0	-0.4682	0	0	0	0	0	0	0
+59	82.5	0	0	0	0	0	0	0	-0.95748	0	0	0	0	0	0	0
+59.5	82.5	0	0	0	0	0	0	0	-1.4467	0	0	0	0	0	0	0
+60	82.5	0	0	0	0	0	0	0	-1.7137	0	0	0	0	0	0	0
+60.5	82.5	0	0	0	0	0	0	0	-1.6645	0	0	0	0	0	0	0
+61	82.5	0	0	0	0	0	0	0	-0.4259	0	0	0	0	0	0	0
+61.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	82.5	0	0	-0.7092	0	0	0	0	0	0	0	0	0	0	0	0
+269	82.5	0	0	-2.2583	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	82.5	0	0	-3.8074	0	0	0	0	0	0	0	0	0	0	0	0
+270	82.5	0	0	-5.0684	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	82.5	0	0	-5.7809	0	0	0	0	0	0	0	0	0	0	0	0
+271	82.5	0	0	-6.4933	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	82.5	0	0	-7.2057	0	0	0	0	0	0	0	0	0	0	0	0
+272	82.5	0	0	-3.4112	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	82.5	0	0	-2.7865	0	0	0	0	0	0	0	0	0	0	0	0
+273	82.5	0	0	-0.50433	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	82.5	0	0	-4.2573	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	82.5	0	0	-7.1902	0	0	0	0	0	0	0	0	0	0	0	0
+276	82.5	0	0	-8.8242	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	82.5	0	0	-10.194	0	0	0	0	0	0	0	0	0	0	0	0
+277	82.5	0	0	-10.651	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	82.5	0	0	-11.415	0	0	0	0	0	0	0	0	0	0	0	0
+278	82.5	0	0	-11.76	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	82.5	0	0	-12.051	0	0	0	0	0	0	0	0	0	0	0	0
+279	82.5	0	0	-12.052	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	82.5	0	0	-11.516	0	0	0	0	0	0	0	0	0	0	0	0
+280	82.5	0	0	-10.98	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	82.5	0	0	-10.51	0	0	0	0	0	0	0	0	0	0	0	0
+281	82.5	0	0	-10.24	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	82.5	0	0	-9.8357	0	0	0	0	0	0	0	0	0	0	0	0
+282	82.5	0	0	-10.155	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	82.5	0	0	-10.474	0	0	0	0	0	0	0	0	0	0	0	0
+283	82.5	0	0	-10.793	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	82.5	0	0	-11.113	0	0	0	0	0	0	0	0	0	0	0	0
+284	82.5	0	0	-11.345	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	82.5	0	0	-11.401	0	0	0	0	0	0	0	0	0	0	0	0
+285	82.5	0	0	-11.457	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	82.5	0	0	-11.608	0	0	0	0	0	0	0	0	0	0	0	0
+286	82.5	0	0	-12.031	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	82.5	0	0	-12.518	0	0	0	0	0	0	0	0	0	0	0	0
+287	82.5	0	0	-13.049	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	82.5	0	0	-13.568	0	0	0	0	0	0	0	0	0	0	0	0
+288	82.5	0	0	-13.892	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	82.5	0	0	-14.114	0	0	0	0	0	0	0	0	0	0	0	0
+289	82.5	0	0	-9.3162	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	82.5	0	0	-12.2	0	0	0	0	0	0	0	0	0	0	0	0
+290	82.5	0	0	-13.194	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	82.5	0	0	-13.932	0	0	0	0	0	0	0	0	0	0	0	0
+291	82.5	0	0	-14.823	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	82.5	0	0	-14.982	0	0	0	0	0	0	0	0	0	0	0	0
+292	82.5	0	0	-14.978	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	82.5	0	0	-14.659	0	0	0	0	0	0	0	0	0	0	0	0
+293	82.5	0	0	-14.183	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	82.5	0	0	-13.482	0	0	0	0	0	0	0	0	0	0	0	0
+294	82.5	0	0	-11.813	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	82.5	0	0	-7.9893	0	0	0	0	0	0	0	0	0	0	0	0
+295	82.5	0	0	-1.5183	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	82.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	83	0	0	0	0	0	0	0	-0.41212	0	0	0	0	0	0	0
+60.5	83	0	0	0	0	0	0	0	-0.61481	0	0	0	0	0	0	0
+61	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	83	0	0	-0.23743	0	0	0	0	0	0	0	0	0	0	0	0
+269	83	0	0	-0.94986	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	83	0	0	-1.6623	0	0	0	0	0	0	0	0	0	0	0	0
+270	83	0	0	-2.3747	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	83	0	0	-3.0871	0	0	0	0	0	0	0	0	0	0	0	0
+271	83	0	0	-3.7996	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	83	0	0	-4.512	0	0	0	0	0	0	0	0	0	0	0	0
+272	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	83	0	0	-2.4654	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	83	0	0	-5.5014	0	0	0	0	0	0	0	0	0	0	0	0
+276	83	0	0	-7.5005	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	83	0	0	-6.9128	0	0	0	0	0	0	0	0	0	0	0	0
+277	83	0	0	-6.3251	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	83	0	0	-6.0667	0	0	0	0	0	0	0	0	0	0	0	0
+278	83	0	0	-7.5061	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	83	0	0	-8.7283	0	0	0	0	0	0	0	0	0	0	0	0
+279	83	0	0	-8.0813	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	83	0	0	-6.8957	0	0	0	0	0	0	0	0	0	0	0	0
+280	83	0	0	-6.4774	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	83	0	0	-8.6032	0	0	0	0	0	0	0	0	0	0	0	0
+281	83	0	0	-8.7482	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	83	0	0	-7.3514	0	0	0	0	0	0	0	0	0	0	0	0
+282	83	0	0	-7.3824	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	83	0	0	-7.7016	0	0	0	0	0	0	0	0	0	0	0	0
+283	83	0	0	-8.0209	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	83	0	0	-8.9871	0	0	0	0	0	0	0	0	0	0	0	0
+284	83	0	0	-8.3476	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	83	0	0	-7.3648	0	0	0	0	0	0	0	0	0	0	0	0
+285	83	0	0	-9.3457	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	83	0	0	-9.8836	0	0	0	0	0	0	0	0	0	0	0	0
+286	83	0	0	-10.377	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	83	0	0	-10.622	0	0	0	0	0	0	0	0	0	0	0	0
+287	83	0	0	-10.264	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	83	0	0	-9.9065	0	0	0	0	0	0	0	0	0	0	0	0
+288	83	0	0	-11.985	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	83	0	0	-12.207	0	0	0	0	0	0	0	0	0	0	0	0
+289	83	0	0	-12.429	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	83	0	0	-9.8013	0	0	0	0	0	0	0	0	0	0	0	0
+290	83	0	0	-7.6216	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	83	0	0	-10.014	0	0	0	0	0	0	0	0	0	0	0	0
+291	83	0	0	-10.946	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	83	0	0	-11.837	0	0	0	0	0	0	0	0	0	0	0	0
+292	83	0	0	-12.707	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	83	0	0	-10.702	0	0	0	0	0	0	0	0	0	0	0	0
+293	83	0	0	-8.7863	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	83	0	0	-7.0621	0	0	0	0	0	0	0	0	0	0	0	0
+294	83	0	0	-5.3717	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	83	0	0	-2.3486	0	0	0	0	0	0	0	0	0	0	0	0
+295	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	83	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	83.5	0	0	-0.3934	0	0	0	0	0	0	0	0	0	0	0	0
+271	83.5	0	0	-1.1058	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	83.5	0	0	-1.8183	0	0	0	0	0	0	0	0	0	0	0	0
+272	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	83.5	0	0	-2.1787	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	83.5	0	0	-4.8068	0	0	0	0	0	0	0	0	0	0	0	0
+276	83.5	0	0	-4.2191	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	83.5	0	0	-3.6314	0	0	0	0	0	0	0	0	0	0	0	0
+277	83.5	0	0	-3.0437	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	83.5	0	0	-2.456	0	0	0	0	0	0	0	0	0	0	0	0
+278	83.5	0	0	-1.8684	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	83.5	0	0	-2.6152	0	0	0	0	0	0	0	0	0	0	0	0
+279	83.5	0	0	-4.3391	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	83.5	0	0	-3.1536	0	0	0	0	0	0	0	0	0	0	0	0
+280	83.5	0	0	-1.968	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	83.5	0	0	-0.78248	0	0	0	0	0	0	0	0	0	0	0	0
+281	83.5	0	0	-0.89737	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	83.5	0	0	-5.5271	0	0	0	0	0	0	0	0	0	0	0	0
+282	83.5	0	0	-4.6099	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	83.5	0	0	-4.9291	0	0	0	0	0	0	0	0	0	0	0	0
+283	83.5	0	0	-5.4957	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	83.5	0	0	-3.4868	0	0	0	0	0	0	0	0	0	0	0	0
+284	83.5	0	0	-1.6363	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	83.5	0	0	-3.0474	0	0	0	0	0	0	0	0	0	0	0	0
+285	83.5	0	0	-4.7936	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	83.5	0	0	-6.2558	0	0	0	0	0	0	0	0	0	0	0	0
+286	83.5	0	0	-6.3225	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	83.5	0	0	-6.0593	0	0	0	0	0	0	0	0	0	0	0	0
+287	83.5	0	0	-5.7016	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	83.5	0	0	-5.344	0	0	0	0	0	0	0	0	0	0	0	0
+288	83.5	0	0	-6.8541	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	83.5	0	0	-6.5339	0	0	0	0	0	0	0	0	0	0	0	0
+289	83.5	0	0	-4.659	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	83.5	0	0	-2.8598	0	0	0	0	0	0	0	0	0	0	0	0
+290	83.5	0	0	-3.2984	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	83.5	0	0	-5.6908	0	0	0	0	0	0	0	0	0	0	0	0
+291	83.5	0	0	-7.0687	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	83.5	0	0	-7.9599	0	0	0	0	0	0	0	0	0	0	0	0
+292	83.5	0	0	-6.5655	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	83.5	0	0	-4.5003	0	0	0	0	0	0	0	0	0	0	0	0
+293	83.5	0	0	-2.4721	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	83.5	0	0	-0.74798	0	0	0	0	0	0	0	0	0	0	0	0
+294	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	83.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	84	0	0	-1.892	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	84	0	0	-1.5253	0	0	0	0	0	0	0	0	0	0	0	0
+276	84	0	0	-0.93767	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	84	0	0	-0.34999	0	0	0	0	0	0	0	0	0	0	0	0
+277	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	84	0	0	-0.59692	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	84	0	0	-2.306	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	84	0	0	-2.1566	0	0	0	0	0	0	0	0	0	0	0	0
+283	84	0	0	-0.13698	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	84	0	0	-0.07281	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	84	0	0	-0.13952	0	0	0	0	0	0	0	0	0	0	0	0
+286	84	0	0	-0.20622	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	84	0	0	-0.27293	0	0	0	0	0	0	0	0	0	0	0	0
+287	84	0	0	-0.33964	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	84	0	0	-0.40634	0	0	0	0	0	0	0	0	0	0	0	0
+288	84	0	0	-0.42394	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	84	0	0	-1.3676	0	0	0	0	0	0	0	0	0	0	0	0
+291	84	0	0	-3.1914	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	84	0	0	-2.489	0	0	0	0	0	0	0	0	0	0	0	0
+292	84	0	0	-0.42378	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	84	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	84.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	85	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	85.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	86	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	86.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	87	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	87.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	88	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	88.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	89	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	89.5	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+0.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+1.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+2.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+3.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+4.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+5.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+6.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+7.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+8.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+9.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+10.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+11.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+12.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+13.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+14.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+15.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+16.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+17.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+18.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+19.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+20.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+21.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+22.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+23.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+24.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+25.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+26.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+27.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+28.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+29.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+30.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+31.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+32.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+33.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+34.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+35.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+36.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+37.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+38.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+39.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+40.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+41.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+42.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+43.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+44.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+45.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+46.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+47.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+48.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+49.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+50.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+51.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+52.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+53.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+54.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+55.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+56.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+57.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+58.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+59.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+60.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+61.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+62.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+63.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+64.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+65.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+66.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+67.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+68.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+69.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+70.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+71.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+72.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+73.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+74.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+75.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+76.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+77.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+78.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+79.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+80.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+81.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+82.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+83.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+84.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+85.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+86.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+87.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+88.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+89.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+90.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+91.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+92.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+93.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+94.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+95.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+96.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+97.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+98.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+99.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+100.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+101.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+102.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+103.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+104.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+105.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+106.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+107.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+108.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+109.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+110.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+111.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+112.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+113.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+114.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+115.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+116.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+117.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+118.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+119.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+120.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+121.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+122.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+123.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+124.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+125.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+126.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+127.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+128.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+129.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+130.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+131.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+132.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+133.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+134.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+135.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+136.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+137.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+138.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+139.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+140.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+141.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+142.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+143.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+144.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+145.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+146.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+147.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+148.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+149.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+150.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+151.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+152.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+153.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+154.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+155.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+156.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+157.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+158.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+159.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+160.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+161.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+162.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+163.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+164.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+165.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+166.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+167.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+168.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+169.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+170.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+171.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+172.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+173.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+174.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+175.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+176.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+177.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+178.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+179.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+180.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+181.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+182.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+183.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+184.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+185.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+186.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+187.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+188.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+189.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+190.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+191.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+192.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+193.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+194.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+195.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+196.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+197.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+198.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+199.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+200.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+201.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+202.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+203.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+204.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+205.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+206.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+207.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+208.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+209.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+210.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+211.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+212.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+213.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+214.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+215.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+216.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+217.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+218.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+219.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+220.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+221.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+222.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+223.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+224.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+225.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+226.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+227.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+228.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+229.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+230.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+231.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+232.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+233.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+234.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+235.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+236.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+237.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+238.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+239.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+240.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+241.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+242.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+243.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+244.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+245.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+246.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+247.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+248.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+249.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+250.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+251.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+252.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+253.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+254.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+255.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+256.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+257.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+258.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+259.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+260.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+261.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+262.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+263.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+264.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+265.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+266.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+267.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+268.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+269.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+270.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+271.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+272.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+273.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+274.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+275.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+276.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+277.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+278.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+279.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+280.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+281.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+282.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+283.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+284.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+285.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+286.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+287.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+288.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+289.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+290.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+291.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+292.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+293.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+294.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+295.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+296.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+297.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+298.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+299.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+300.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+301.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+302.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+303.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+304.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+305.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+306.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+307.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+308.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+309.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+310.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+311.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+312.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+313.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+314.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+315.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+316.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+317.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+318.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+319.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+320.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+321.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+322.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+323.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+324.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+325.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+326.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+327.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+328.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+329.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+330.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+331.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+332.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+333.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+334.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+335.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+336.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+337.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+338.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+339.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+340.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+341.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+342.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+343.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+344.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+345.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+346.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+347.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+348.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+349.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+350.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+351.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+352.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+353.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+354.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+355.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+356.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+357.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+358.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+359.5	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
+360	90	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/SlcTestMesh.pkl
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/SlcTestMesh.pkl	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/SlcTestMesh.pkl	(revision 27955)
@@ -0,0 +1,202 @@
+ccopy_reg
+_reconstructor
+p0
+(cmesh3dsurface
+mesh3dsurface
+p1
+c__builtin__
+object
+p2
+Ntp3
+Rp4
+(dp5
+S'vertexonboundary'
+p6
+Fnan
+sS'extractedelements'
+p7
+Fnan
+sS'elements'
+p8
+cnumpy.core.multiarray
+_reconstruct
+p9
+(cnumpy
+ndarray
+p10
+(I0
+tp11
+S'b'
+p12
+tp13
+Rp14
+(I1
+(I2568
+I3
+tp15
+cnumpy
+dtype
+p16
+(S'i8'
+p17
+I0
+I1
+tp18
+Rp19
+(I3
+S'<'
+p20
+NNNI-1
+I-1
+I0
+tp21
+bI00
+S'\xaf\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\x00\x00\x00\x00\xb2\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\xb5\x00\x00\x00\x00\x00\x00\x00\xb4\x00\x00\x00\x00\x00\x00\x00\xb4\x00\x00\x00\x00\x00\x00\x00\xb5\x00\x00\x00\x00\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x00\x00\xb6\x00\x00\x00\x00\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\xb9\x00\x00\x00\x00\x00\x00\x00\xbb\x00\x00\x00\x00\x00\x00\x00\xba\x00\x00\x00\x00\x00\x00\x00\xb5\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x00\x00\x00\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\xbd\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\xb5\x00\x00\x00\x00\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x00\x00\x8d\x00\x00\x00\x00\x00\x00\x00\xbe\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\xbf\x00\x00\x00\x00\x00\x00\x00\xc1\x00\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00\xbf\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00r\x00\x00\x00\x00\x00\x00\x00\xb9\x00\x00\x00\x00\x00\x00\x00\xba\x00\x00\x00\x00\x00\x00\x00t\x00\x00\x00\x00\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x00\x00\xc6\x00\x00\x00\x00\x00\x00\x00\xc5\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x00\x00\x00\x00\x00\x00u\x00\x00\x00\x00\x00\x00\x00v\x00\x00\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\xc9\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x00\x00\xca\x00\x00\x00\x00\x00\x00\x00\xcb\x00\x00\x00\x00\x00\x00\x00\xbd\x00\x00\x00\x00\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x00\x00\xce\x00\x00\x00\x00\x00\x00\x00\xcd\x00\x00\x00\x00\x00\x00\x00\xc1\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00\xcf\x00\x00\x00\x00\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x00\x00\xd2\x00\x00\x00\x00\x00\x00\x00\xd1\x00\x00\x00\x00\x00\x00\x00\xd1\x00\x00\x00\x00\x00\x00\x00\xd2\x00\x00\x00\x00\x00\x00\x00\xd3\x00\x00\x00\x00\x00\x00\x00\x87\x00\x00\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x00\x00\x87\x00\x00\x00\x00\x00\x00\x00\xd5\x00\x00\x00\x00\x00\x00\x00\xbd\x00\x00\x00\x00\x00\x00\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\xd6\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x00\x00\x00\x00\x00\x00\xd7\x00\x00\x00\x00\x00\x00\x00\xd9\x00\x00\x00\x00\x00\x00\x00\xd7\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x00\x00\x00\x00\x00\x00\xd6\x00\x00\x00\x00\x00\x00\x00\xd7\x00\x00\x00\x00\x00\x00\x00\xda\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x00\x00\xc9\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00k\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00k\x00\x00\x00\x00\x00\x00\x00l\x00\x00\x00\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xdf\x00\x00\x00\x00\x00\x00\x00\xe1\x00\x00\x00\x00\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00\xe3\x00\x00\x00\x00\x00\x00\x00\xe5\x00\x00\x00\x00\x00\x00\x00\xe7\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x00\x00\x00\x00\x00\xe8\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x00\x00\x00\x00\x00\xe7\x00\x00\x00\x00\x00\x00\x00\xd3\x00\x00\x00\x00\x00\x00\x00\xe5\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x00\x00\x00\x00\x00\xd1\x00\x00\x00\x00\x00\x00\x00\xd3\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x00\x00\x00\x00\x00\xd5\x00\x00\x00\x00\x00\x00\x00\xea\x00\x00\x00\x00\x00\x00\x00\xe9\x00\x00\x00\x00\x00\x00\x00\xd1\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x00\x00\x00\x00\x00\xeb\x00\x00\x00\x00\x00\x00\x00\xec\x00\x00\x00\x00\x00\x00\x00\xea\x00\x00\x00\x00\x00\x00\x00\xd5\x00\x00\x00\x00\x00\x00\x00\xed\x00\x00\x00\x00\x00\x00\x00\xd2\x00\x00\x00\x00\x00\x00\x00\xee\x00\x00\x00\x00\x00\x00\x00\xe1\x00\x00\x00\x00\x00\x00\x00\xef\x00\x00\x00\x00\x00\x00\x00\xd6\x00\x00\x00\x00\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x00\x00\xe1\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\xd6\x00\x00\x00\x00\x00\x00\x00\xda\x00\x00\x00\x00\x00\x00\x00\xe1\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\xe1\x00\x00\x00\x00\x00\x00\x00\xda\x00\x00\x00\x00\x00\x00\x00\xf1\x00\x00\x00\x00\x00\x00\x00\xca\x00\x00\x00\x00\x00\x00\x00\xf2\x00\x00\x00\x00\x00\x00\x00\xea\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\xf3\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x00\x00\xf5\x00\x00\x00\x00\x00\x00\x00\xf7\x00\x00\x00\x00\x00\x00\x00\xdf\x00\x00\x00\x00\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x00\x00\xf5\x00\x00\x00\x00\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x00\x00\xd9\x00\x00\x00\x00\x00\x00\x00\xbb\x00\x00\x00\x00\x00\x00\x00\xfa\x00\x00\x00\x00\x00\x00\x00\xf9\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x00\xe3\x00\x00\x00\x00\x00\x00\x00\xfb\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x00\x00\x00\x00\x00\x00\xfc\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x00\x00\xfc\x00\x00\x00\x00\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x00\x00\xeb\x00\x00\x00\x00\x00\x00\x00\xdf\x00\x00\x00\x00\x00\x00\x00\xf7\x00\x00\x00\x00\x00\x00\x00\xfd\x00\x00\x00\x00\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00\xfe\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\xf5\x00\x00\x00\x00\x00\x00\x00\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\xee\x00\x00\x00\x00\x00\x00\x00\xf7\x00\x00\x00\x00\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\xe9\x00\x00\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x00\x00\xd5\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00k\x00\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00j\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00j\x00\x00\x00\x00\x00\x00\x00k\x00\x00\x00\x00\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\x04\x01\x00\x00\x00\x00\x00\x00\xbe\x00\x00\x00\x00\x00\x00\x00\xce\x00\x00\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x05\x01\x00\x00\x00\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x00\x00\x8d\x00\x00\x00\x00\x00\x00\x00\x06\x01\x00\x00\x00\x00\x00\x00\x08\x01\x00\x00\x00\x00\x00\x00\x07\x01\x00\x00\x00\x00\x00\x00\x06\x01\x00\x00\x00\x00\x00\x00\x07\x01\x00\x00\x00\x00\x00\x00o\x00\x00\x00\x00\x00\x00\x00\t\x01\x00\x00\x00\x00\x00\x00\xfd\x00\x00\x00\x00\x00\x00\x00\x07\x01\x00\x00\x00\x00\x00\x00\x07\x01\x00\x00\x00\x00\x00\x00\xfd\x00\x00\x00\x00\x00\x00\x00n\x00\x00\x00\x00\x00\x00\x00\x04\x01\x00\x00\x00\x00\x00\x00\n\x01\x00\x00\x00\x00\x00\x00\x06\x01\x00\x00\x00\x00\x00\x00\xf9\x00\x00\x00\x00\x00\x00\x00\xfa\x00\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x00\x00\x00\x00\xf2\x00\x00\x00\x00\x00\x00\x00\xca\x00\x00\x00\x00\x00\x00\x00\xbd\x00\x00\x00\x00\x00\x00\x00\x04\x01\x00\x00\x00\x00\x00\x00\x06\x01\x00\x00\x00\x00\x00\x00p\x00\x00\x00\x00\x00\x00\x00\xec\x00\x00\x00\x00\x00\x00\x00\xd5\x00\x00\x00\x00\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x00\xd5\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x00\x00\r\x01\x00\x00\x00\x00\x00\x00\x0e\x01\x00\x00\x00\x00\x00\x00\xe9\x00\x00\x00\x00\x00\x00\x00\xce\x00\x00\x00\x00\x00\x00\x00\xfe\x00\x00\x00\x00\x00\x00\x00\xc9\x00\x00\x00\x00\x00\x00\x00\x0f\x01\x00\x00\x00\x00\x00\x00\x11\x01\x00\x00\x00\x00\x00\x00\x10\x01\x00\x00\x00\x00\x00\x00\x12\x01\x00\x00\x00\x00\x00\x00\x14\x01\x00\x00\x00\x00\x00\x00\x13\x01\x00\x00\x00\x00\x00\x00\x15\x01\x00\x00\x00\x00\x00\x00\x10\x01\x00\x00\x00\x00\x00\x00\x11\x01\x00\x00\x00\x00\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\xb2\x00\x00\x00\x00\x00\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00\xb2\x00\x00\x00\x00\x00\x00\x00\xc6\x00\x00\x00\x00\x00\x00\x00\x15\x01\x00\x00\x00\x00\x00\x00\x17\x01\x00\x00\x00\x00\x00\x00\x10\x01\x00\x00\x00\x00\x00\x00\x18\x01\x00\x00\x00\x00\x00\x00\x19\x01\x00\x00\x00\x00\x00\x00\xbe\x00\x00\x00\x00\x00\x00\x00\xd7\x00\x00\x00\x00\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x00\x00\x1a\x01\x00\x00\x00\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x00\x00\xcd\x00\x00\x00\x00\x00\x00\x00\x1a\x01\x00\x00\x00\x00\x00\x00\x19\x01\x00\x00\x00\x00\x00\x00\x18\x01\x00\x00\x00\x00\x00\x00\x10\x01\x00\x00\x00\x00\x00\x00\xcd\x00\x00\x00\x00\x00\x00\x00\x0e\x01\x00\x00\x00\x00\x00\x00\x1a\x01\x00\x00\x00\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x1b\x01\x00\x00\x00\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x00\x00\x1b\x01\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x00\x00\xb9\x00\x00\x00\x00\x00\x00\x00u\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x00\x00\x00\x00\x00\x00\x17\x01\x00\x00\x00\x00\x00\x00\x19\x01\x00\x00\x00\x00\x00\x00\x10\x01\x00\x00\x00\x00\x00\x00\xc7\x00\x00\x00\x00\x00\x00\x00\x14\x01\x00\x00\x00\x00\x00\x00\xb9\x00\x00\x00\x00\x00\x00\x00\xb9\x00\x00\x00\x00\x00\x00\x00\x14\x01\x00\x00\x00\x00\x00\x00\xfa\x00\x00\x00\x00\x00\x00\x00\xbb\x00\x00\x00\x00\x00\x00\x00\xb9\x00\x00\x00\x00\x00\x00\x00\xfa\x00\x00\x00\x00\x00\x00\x00\x04\x01\x00\x00\x00\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\n\x01\x00\x00\x00\x00\x00\x00\xef\x00\x00\x00\x00\x00\x00\x00\x08\x01\x00\x00\x00\x00\x00\x00\x1c\x01\x00\x00\x00\x00\x00\x00s\x00\x00\x00\x00\x00\x00\x00\xbf\x00\x00\x00\x00\x00\x00\x00r\x00\x00\x00\x00\x00\x00\x00\xda\x00\x00\x00\x00\x00\x00\x00\xd7\x00\x00\x00\x00\x00\x00\x00\x1a\x01\x00\x00\x00\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00\xfb\x00\x00\x00\x00\x00\x00\x00\xe3\x00\x00\x00\x00\x00\x00\x00\n\x01\x00\x00\x00\x00\x00\x00\x1c\x01\x00\x00\x00\x00\x00\x00\x08\x01\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00l\x00\x00\x00\x00\x00\x00\x00\xf7\x00\x00\x00\x00\x00\x00\x00\xf7\x00\x00\x00\x00\x00\x00\x00l\x00\x00\x00\x00\x00\x00\x00m\x00\x00\x00\x00\x00\x00\x00\xe9\x00\x00\x00\x00\x00\x00\x00\xea\x00\x00\x00\x00\x00\x00\x00\r\x01\x00\x00\x00\x00\x00\x00\xef\x00\x00\x00\x00\x00\x00\x00\x1c\x01\x00\x00\x00\x00\x00\x00\x1d\x01\x00\x00\x00\x00\x00\x00\xb5\x00\x00\x00\x00\x00\x00\x00\x8d\x00\x00\x00\x00\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x13\x01\x00\x00\x00\x00\x00\x00\x14\x01\x00\x00\x00\x00\x00\x00\xc7\x00\x00\x00\x00\x00\x00\x00\xc5\x00\x00\x00\x00\x00\x00\x00\xc6\x00\x00\x00\x00\x00\x00\x00\xb2\x00\x00\x00\x00\x00\x00\x00\r\x01\x00\x00\x00\x00\x00\x00\xea\x00\x00\x00\x00\x00\x00\x00\xf3\x00\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\xc1\x00\x00\x00\x00\x00\x00\x00\x1e\x01\x00\x00\x00\x00\x00\x00\x10\x01\x00\x00\x00\x00\x00\x00\x18\x01\x00\x00\x00\x00\x00\x00\xf9\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\x00\x00\x00\x00\xb6\x00\x00\x00\x00\x00\x00\x00\xb2\x00\x00\x00\x00\x00\x00\x00\x1b\x01\x00\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x00\x00\xb6\x00\x00\x00\x00\x00\x00\x00\xc5\x00\x00\x00\x00\x00\x00\x00\xb2\x00\x00\x00\x00\x00\x00\x00\xca\x00\x00\x00\x00\x00\x00\x00\xf1\x00\x00\x00\x00\x00\x00\x00\x1f\x01\x00\x00\x00\x00\x00\x00\xca\x00\x00\x00\x00\x00\x00\x00\x1f\x01\x00\x00\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00\xe3\x00\x00\x00\x00\x00\x00\x00 \x01\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x1e\x01\x00\x00\x00\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x00\x00\x05\x01\x00\x00\x00\x00\x00\x00"\x01\x00\x00\x00\x00\x00\x00!\x01\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\xda\x00\x00\x00\x00\x00\x00\x00#\x01\x00\x00\x00\x00\x00\x00#\x01\x00\x00\x00\x00\x00\x00\xda\x00\x00\x00\x00\x00\x00\x00\x1a\x01\x00\x00\x00\x00\x00\x00\xfa\x00\x00\x00\x00\x00\x00\x00\x14\x01\x00\x00\x00\x00\x00\x00$\x01\x00\x00\x00\x00\x00\x00\x10\x01\x00\x00\x00\x00\x00\x00\xf9\x00\x00\x00\x00\x00\x00\x00\x0f\x01\x00\x00\x00\x00\x00\x00\xfa\x00\x00\x00\x00\x00\x00\x00$\x01\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x00\x00\x00\x00\xe7\x00\x00\x00\x00\x00\x00\x00&\x01\x00\x00\x00\x00\x00\x00%\x01\x00\x00\x00\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\x19\x01\x00\x00\x00\x00\x00\x00\'\x01\x00\x00\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00$\x01\x00\x00\x00\x00\x00\x00\x12\x01\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x00\x00\xd5\x00\x00\x00\x00\x00\x00\x00\x87\x00\x00\x00\x00\x00\x00\x00\x12\x01\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00$\x01\x00\x00\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x00\x00\x00\x00\x1c\x01\x00\x00\x00\x00\x00\x00\n\x01\x00\x00\x00\x00\x00\x00\'\x01\x00\x00\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00(\x01\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x00\x00\x00\x00\xed\x00\x00\x00\x00\x00\x00\x00\x15\x01\x00\x00\x00\x00\x00\x00\xd2\x00\x00\x00\x00\x00\x00\x00\xd3\x00\x00\x00\x00\x00\x00\x00\xd2\x00\x00\x00\x00\x00\x00\x00\x15\x01\x00\x00\x00\x00\x00\x00\xed\x00\x00\x00\x00\x00\x00\x00\x17\x01\x00\x00\x00\x00\x00\x00\x15\x01\x00\x00\x00\x00\x00\x00\'\x01\x00\x00\x00\x00\x00\x00\n\x01\x00\x00\x00\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\x19\x01\x00\x00\x00\x00\x00\x00\x17\x01\x00\x00\x00\x00\x00\x00\'\x01\x00\x00\x00\x00\x00\x00\xef\x00\x00\x00\x00\x00\x00\x00\x1d\x01\x00\x00\x00\x00\x00\x00\xd6\x00\x00\x00\x00\x00\x00\x00\xbf\x00\x00\x00\x00\x00\x00\x00\x18\x01\x00\x00\x00\x00\x00\x00\xbe\x00\x00\x00\x00\x00\x00\x00\xce\x00\x00\x00\x00\x00\x00\x00\xc9\x00\x00\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x00\x00\x00\x00\x00\x00v\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x13\x01\x00\x00\x00\x00\x00\x00\xec\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\xea\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\xea\x00\x00\x00\x00\x00\x00\x00"\x00\x00\x00\x00\x00\x00\x00\xca\x00\x00\x00\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00#\x01\x00\x00\x00\x00\x00\x00\r\x01\x00\x00\x00\x00\x00\x00\x0e\x01\x00\x00\x00\x00\x00\x00#\x01\x00\x00\x00\x00\x00\x00\x1a\x01\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x13\x01\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00#\x01\x00\x00\x00\x00\x00\x00\x0e\x01\x00\x00\x00\x00\x00\x00\r\x01\x00\x00\x00\x00\x00\x00!\x01\x00\x00\x00\x00\x00\x00"\x01\x00\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x00\x00%\x01\x00\x00\x00\x00\x00\x00\xe8\x00\x00\x00\x00\x00\x00\x00\xe7\x00\x00\x00\x00\x00\x00\x00\x18\x01\x00\x00\x00\x00\x00\x00\xbb\x00\x00\x00\x00\x00\x00\x00\xf9\x00\x00\x00\x00\x00\x00\x00\xbb\x00\x00\x00\x00\x00\x00\x00\x18\x01\x00\x00\x00\x00\x00\x00\xbf\x00\x00\x00\x00\x00\x00\x00\x12\x01\x00\x00\x00\x00\x00\x00\x13\x01\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x00\x00\x1b\x01\x00\x00\x00\x00\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00)\x01\x00\x00\x00\x00\x00\x00&\x01\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00%\x01\x00\x00\x00\x00\x00\x00"\x00\x00\x00\x00\x00\x00\x00\xcb\x00\x00\x00\x00\x00\x00\x00\xca\x00\x00\x00\x00\x00\x00\x00\xe5\x00\x00\x00\x00\x00\x00\x00\xd3\x00\x00\x00\x00\x00\x00\x00\x11\x01\x00\x00\x00\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x00\x00\xe3\x00\x00\x00\x00\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00*\x01\x00\x00\x00\x00\x00\x00+\x01\x00\x00\x00\x00\x00\x00,\x01\x00\x00\x00\x00\x00\x00)\x01\x00\x00\x00\x00\x00\x00\xe8\x00\x00\x00\x00\x00\x00\x00%\x01\x00\x00\x00\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00&\x01\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x1f\x01\x00\x00\x00\x00\x00\x00\xcf\x00\x00\x00\x00\x00\x00\x00%\x01\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00*\x01\x00\x00\x00\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00-\x01\x00\x00\x00\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00%\x01\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\x00\x00\x00\x00(\x01\x00\x00\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00(\x01\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\x00\x00\x00\x00-\x01\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x12\x01\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\xb6\x00\x00\x00\x00\x00\x00\x00.\x01\x00\x00\x00\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x00\x00/\x01\x00\x00\x00\x00\x00\x000\x01\x00\x00\x00\x00\x00\x00\xe5\x00\x00\x00\x00\x00\x00\x00\x11\x01\x00\x00\x00\x00\x00\x00/\x01\x00\x00\x00\x00\x00\x00\xe5\x00\x00\x00\x00\x00\x00\x00$\x01\x00\x00\x00\x00\x00\x00\x14\x01\x00\x00\x00\x00\x00\x00\x12\x01\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x00\x00.\x01\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\xec\x00\x00\x00\x00\x00\x00\x00j\x00\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00i\x00\x00\x00\x00\x00\x00\x00\x0e\x01\x00\x00\x00\x00\x00\x00!\x01\x00\x00\x00\x00\x00\x00\xe9\x00\x00\x00\x00\x00\x00\x00\x1d\x01\x00\x00\x00\x00\x00\x00\x1c\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\xb6\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\x00\x00\x00\x00.\x01\x00\x00\x00\x00\x00\x001\x01\x00\x00\x00\x00\x00\x00.\x01\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x1e\x01\x00\x00\x00\x00\x00\x00\xc1\x00\x00\x00\x00\x00\x00\x002\x01\x00\x00\x00\x00\x00\x00\t\x01\x00\x00\x00\x00\x00\x00\xdf\x00\x00\x00\x00\x00\x00\x00\xfd\x00\x00\x00\x00\x00\x00\x00\x05\x01\x00\x00\x00\x00\x00\x00\xcd\x00\x00\x00\x00\x00\x00\x00\xce\x00\x00\x00\x00\x00\x00\x00!\x01\x00\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x00\x00\xe9\x00\x00\x00\x00\x00\x00\x00\x05\x01\x00\x00\x00\x00\x00\x00\x0e\x01\x00\x00\x00\x00\x00\x00\xcd\x00\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xcb\x00\x00\x00\x00\x00\x00\x00"\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00!\x01\x00\x00\x00\x00\x00\x00\x0e\x01\x00\x00\x00\x00\x00\x00\x05\x01\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00,\x01\x00\x00\x00\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x1e\x01\x00\x00\x00\x00\x00\x002\x01\x00\x00\x00\x00\x00\x00\xf1\x00\x00\x00\x00\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00,\x01\x00\x00\x00\x00\x00\x00\xbd\x00\x00\x00\x00\x00\x00\x00\r\x01\x00\x00\x00\x00\x00\x00\xf3\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00i\x00\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xcf\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00 \x01\x00\x00\x00\x00\x00\x00u\x00\x00\x00\x00\x00\x00\x00\xb9\x00\x00\x00\x00\x00\x00\x00t\x00\x00\x00\x00\x00\x00\x00\x1f\x01\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00\x00-\x01\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xd7\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x00\x00)\x01\x00\x00\x00\x00\x00\x00,\x01\x00\x00\x00\x00\x00\x00\x1b\x01\x00\x00\x00\x00\x00\x00,\x01\x00\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x1b\x01\x00\x00\x00\x00\x00\x00\xd7\x00\x00\x00\x00\x00\x00\x00\xd9\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x00\xfb\x00\x00\x00\x00\x00\x00\x003\x01\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x00\x00\x00\x00\x00\x001\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\'\x01\x00\x00\x00\x00\x00\x00\xed\x00\x00\x00\x00\x00\x00\x00\'\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x1c\x01\x00\x00\x00\x00\x00\x00\t\x01\x00\x00\x00\x00\x00\x00\x07\x01\x00\x00\x00\x00\x00\x00\x08\x01\x00\x00\x00\x00\x00\x00\'\x01\x00\x00\x00\x00\x00\x00\x17\x01\x00\x00\x00\x00\x00\x00\xed\x00\x00\x00\x00\x00\x00\x00o\x00\x00\x00\x00\x00\x00\x00\x07\x01\x00\x00\x00\x00\x00\x00n\x00\x00\x00\x00\x00\x00\x004\x01\x00\x00\x00\x00\x00\x00\x0f\x01\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x00\x00\x00\x004\x01\x00\x00\x00\x00\x00\x00(\x01\x00\x00\x00\x00\x00\x00/\x01\x00\x00\x00\x00\x00\x00(\x01\x00\x00\x00\x00\x00\x004\x01\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x00\x00\x00\x00-\x01\x00\x00\x00\x00\x00\x005\x01\x00\x00\x00\x00\x00\x00(\x01\x00\x00\x00\x00\x00\x00\xef\x00\x00\x00\x00\x00\x00\x00\t\x01\x00\x00\x00\x00\x00\x00\x08\x01\x00\x00\x00\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\xbe\x00\x00\x00\x00\x00\x00\x00\x19\x01\x00\x00\x00\x00\x00\x00\xfb\x00\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x00\x00\xef\x00\x00\x00\x00\x00\x00\x00\xe1\x00\x00\x00\x00\x00\x00\x00\t\x01\x00\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00,\x01\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x005\x01\x00\x00\x00\x00\x00\x00-\x01\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xfb\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\xf1\x00\x00\x00\x00\x00\x00\x00+\x01\x00\x00\x00\x00\x00\x00\x1e\x01\x00\x00\x00\x00\x00\x00+\x01\x00\x00\x00\x00\x00\x00\xc6\x00\x00\x00\x00\x00\x00\x00\x1e\x01\x00\x00\x00\x00\x00\x00\xe1\x00\x00\x00\x00\x00\x00\x00\xdf\x00\x00\x00\x00\x00\x00\x00\t\x01\x00\x00\x00\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x00\xe8\x00\x00\x00\x00\x00\x00\x00/\x01\x00\x00\x00\x00\x00\x005\x01\x00\x00\x00\x00\x00\x000\x01\x00\x00\x00\x00\x00\x00(\x01\x00\x00\x00\x00\x00\x005\x01\x00\x00\x00\x00\x00\x00/\x01\x00\x00\x00\x00\x00\x002\x01\x00\x00\x00\x00\x00\x00\x1f\x01\x00\x00\x00\x00\x00\x00\xf1\x00\x00\x00\x00\x00\x00\x00+\x01\x00\x00\x00\x00\x00\x00)\x01\x00\x00\x00\x00\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00\x1d\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\xd8\x00\x00\x00\x00\x00\x00\x00\x05\x01\x00\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00"\x01\x00\x00\x00\x00\x00\x000\x01\x00\x00\x00\x00\x00\x005\x01\x00\x00\x00\x00\x00\x00&\x01\x00\x00\x00\x00\x00\x005\x01\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00&\x01\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x005\x01\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x00\x00\x00\x00\x0f\x01\x00\x00\x00\x00\x00\x00\xf9\x00\x00\x00\x00\x00\x00\x00\x0b\x01\x00\x00\x00\x00\x00\x00\xfc\x00\x00\x00\x00\x00\x00\x00\xeb\x00\x00\x00\x00\x00\x00\x006\x01\x00\x00\x00\x00\x00\x00\xfc\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\x00\x00\xd1\x00\x00\x00\x00\x00\x00\x00\xeb\x00\x00\x00\x00\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\xec\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x00\x00\xf3\x00\x00\x00\x00\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x00\x00\x00\x00&\x01\x00\x00\x00\x00\x00\x00\xe7\x00\x00\x00\x00\x00\x00\x000\x01\x00\x00\x00\x00\x00\x00\xb5\x00\x00\x00\x00\x00\x00\x001\x01\x00\x00\x00\x00\x00\x00\xaf\x00\x00\x00\x00\x00\x00\x00\xe7\x00\x00\x00\x00\x00\x00\x00\xe5\x00\x00\x00\x00\x00\x00\x000\x01\x00\x00\x00\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x00\x006\x01\x00\x00\x00\x00\x00\x00\xfb\x00\x00\x00\x00\x00\x00\x00.\x01\x00\x00\x00\x00\x00\x001\x01\x00\x00\x00\x00\x00\x00\xfe\x00\x00\x00\x00\x00\x00\x00q\x00\x00\x00\x00\x00\x00\x00\x04\x01\x00\x00\x00\x00\x00\x00p\x00\x00\x00\x00\x00\x00\x006\x01\x00\x00\x00\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x00\x00\xc5\x00\x00\x00\x00\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x00\x00\xf3\x00\x00\x00\x00\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x00\x00\xc6\x00\x00\x00\x00\x00\x00\x00+\x01\x00\x00\x00\x00\x00\x00\x16\x01\x00\x00\x00\x00\x00\x003\x01\x00\x00\x00\x00\x00\x00\xfb\x00\x00\x00\x00\x00\x00\x006\x01\x00\x00\x00\x00\x00\x003\x01\x00\x00\x00\x00\x00\x00\xeb\x00\x00\x00\x00\x00\x00\x007\x01\x00\x00\x00\x00\x00\x00\x06\x01\x00\x00\x00\x00\x00\x00o\x00\x00\x00\x00\x00\x00\x00p\x00\x00\x00\x00\x00\x00\x00\xee\x00\x00\x00\x00\x00\x00\x00\xd2\x00\x00\x00\x00\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x00\x00\x06\x01\x00\x00\x00\x00\x00\x00\n\x01\x00\x00\x00\x00\x00\x00\x08\x01\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00.\x01\x00\x00\x00\x00\x00\x00\xfe\x00\x00\x00\x00\x00\x00\x00\xf2\x00\x00\x00\x00\x00\x00\x00\xbd\x00\x00\x00\x00\x00\x00\x00,\x01\x00\x00\x00\x00\x00\x00\xdf\x00\x00\x00\x00\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x00\x00\xf3\x00\x00\x00\x00\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x002\x01\x00\x00\x00\x00\x00\x00\xc1\x00\x00\x00\x00\x00\x00\x00\xcf\x00\x00\x00\x00\x00\x00\x004\x01\x00\x00\x00\x00\x00\x00/\x01\x00\x00\x00\x00\x00\x00\x11\x01\x00\x00\x00\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x003\x01\x00\x00\x00\x00\x00\x007\x01\x00\x00\x00\x00\x00\x00\xed\x00\x00\x00\x00\x00\x00\x00\xee\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x0f\x01\x00\x00\x00\x00\x00\x004\x01\x00\x00\x00\x00\x00\x00\x11\x01\x00\x00\x00\x00\x00\x00\xf7\x00\x00\x00\x00\x00\x00\x00m\x00\x00\x00\x00\x00\x00\x00\xfd\x00\x00\x00\x00\x00\x00\x00\xb4\x00\x00\x00\x00\x00\x00\x00\xc9\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\xee\x00\x00\x00\x00\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\x00\x008\x01\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\xfc\x00\x00\x00\x00\x00\x00\x00q\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x04\x01\x00\x00\x00\x00\x00\x008\x01\x00\x00\x00\x00\x00\x006\x01\x00\x00\x00\x00\x00\x00\xc5\x00\x00\x00\x00\x00\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00\x1b\x01\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\xbe\x00\x00\x00\x00\x00\x00\x00\x04\x01\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00q\x00\x00\x00\x00\x00\x00\x00r\x00\x00\x00\x00\x00\x00\x006\x01\x00\x00\x00\x00\x00\x008\x01\x00\x00\x00\x00\x00\x00\xfc\x00\x00\x00\x00\x00\x00\x00\xd3\x00\x00\x00\x00\x00\x00\x00\x15\x01\x00\x00\x00\x00\x00\x00\x11\x01\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x001\x01\x00\x00\x00\x00\x00\x00\xb5\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\xc9\x00\x00\x00\x00\x00\x00\x00\xfe\x00\x00\x00\x00\x00\x00\x001\x01\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\xfe\x00\x00\x00\x00\x00\x00\x00\xd9\x00\x00\x00\x00\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\x00\x00\xf5\x00\x00\x00\x00\x00\x00\x00\xd9\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x00\x00\x00\x00\x00\x00\xf5\x00\x00\x00\x00\x00\x00\x00\xee\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x00\x00\xfe\x00\x00\x00\x00\x00\x00\x00\xce\x00\x00\x00\x00\x00\x00\x00n\x00\x00\x00\x00\x00\x00\x00\xfd\x00\x00\x00\x00\x00\x00\x00m\x00\x00\x00\x00\x00\x00\x00\xb6\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x008\x01\x00\x00\x00\x00\x00\x00\xc5\x00\x00\x00\x00\x00\x00\x00\xb6\x00\x00\x00\x00\x00\x00\x008\x01\x00\x00\x00\x00\x00\x00\xb4\x00\x00\x00\x00\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x00\x00\x00\x00\x00\x00\xd6\x00\x00\x00\x00\x00\x00\x00\x1d\x01\x00\x00\x00\x00\x00\x00\xd8\x00\x00\x00\x00\x00\x00\x00\xc9\x00\x00\x00\x00\x00\x00\x00\xb4\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x00\x00\x00\x00\x00\x00\xba\x00\x00\x00\x00\x00\x00\x00\xbf\x00\x00\x00\x00\x00\x00\x00s\x00\x00\x00\x00\x00\x00\x00\xbf\x00\x00\x00\x00\x00\x00\x00\xba\x00\x00\x00\x00\x00\x00\x00\xbb\x00\x00\x00\x00\x00\x00\x00t\x00\x00\x00\x00\x00\x00\x00\xba\x00\x00\x00\x00\x00\x00\x00s\x00\x00\x00\x00\x00\x00\x00 \x01\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00 \x01\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\xf2\x00\x00\x00\x00\x00\x00\x00+\x01\x00\x00\x00\x00\x00\x00\xf1\x00\x00\x00\x00\x00\x00\x00+\x01\x00\x00\x00\x00\x00\x00\xf2\x00\x00\x00\x00\x00\x00\x00,\x01\x00\x00\x00\x00\x00\x00\x1f\x01\x00\x00\x00\x00\x00\x002\x01\x00\x00\x00\x00\x00\x00\xcf\x00\x00\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00"\x01\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00*\x01\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\xe3\x00\x00\x00\x00\x00\x00\x00*\x01\x00\x00\x00\x00\x00\x00 \x01\x00\x00\x00\x00\x00\x00\x1e\x01\x00\x00\x00\x00\x00\x00\xc6\x00\x00\x00\x00\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x00\x00*\x01\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00 \x01\x00\x00\x00\x00\x00\x00"\x01\x00\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x00\x00"\x01\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x007\x01\x00\x00\x00\x00\x00\x00\xe8\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x00\x00\x00\x00\x007\x01\x00\x00\x00\x00\x00\x00\xeb\x00\x00\x00\x00\x00\x00\x007\x01\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x00\x00\x00\x00\x00\xe8\x00\x00\x00\x00\x00\x00\x00\xeb\x00\x00\x00\x00\x00\x00\x003\x01\x00\x00\x00\x00\x00\x006\x01\x00\x00\x00\x00\x00\x009\x01\x00\x00\x00\x00\x00\x00;\x01\x00\x00\x00\x00\x00\x00:\x01\x00\x00\x00\x00\x00\x009\x01\x00\x00\x00\x00\x00\x00:\x01\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00<\x01\x00\x00\x00\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00:\x01\x00\x00\x00\x00\x00\x00:\x01\x00\x00\x00\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00=\x01\x00\x00\x00\x00\x00\x00?\x01\x00\x00\x00\x00\x00\x00>\x01\x00\x00\x00\x00\x00\x00=\x01\x00\x00\x00\x00\x00\x00>\x01\x00\x00\x00\x00\x00\x00@\x01\x00\x00\x00\x00\x00\x00A\x01\x00\x00\x00\x00\x00\x00C\x01\x00\x00\x00\x00\x00\x00B\x01\x00\x00\x00\x00\x00\x00D\x01\x00\x00\x00\x00\x00\x00F\x01\x00\x00\x00\x00\x00\x00E\x01\x00\x00\x00\x00\x00\x00G\x01\x00\x00\x00\x00\x00\x00I\x01\x00\x00\x00\x00\x00\x00H\x01\x00\x00\x00\x00\x00\x00B\x01\x00\x00\x00\x00\x00\x00C\x01\x00\x00\x00\x00\x00\x00J\x01\x00\x00\x00\x00\x00\x00G\x01\x00\x00\x00\x00\x00\x00H\x01\x00\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00K\x01\x00\x00\x00\x00\x00\x00M\x01\x00\x00\x00\x00\x00\x00L\x01\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00<\x01\x00\x00\x00\x00\x00\x00G\x01\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00G\x01\x00\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00K\x01\x00\x00\x00\x00\x00\x00L\x01\x00\x00\x00\x00\x00\x00N\x01\x00\x00\x00\x00\x00\x00O\x01\x00\x00\x00\x00\x00\x00Q\x01\x00\x00\x00\x00\x00\x00P\x01\x00\x00\x00\x00\x00\x00R\x01\x00\x00\x00\x00\x00\x00g\x00\x00\x00\x00\x00\x00\x00h\x00\x00\x00\x00\x00\x00\x00S\x01\x00\x00\x00\x00\x00\x00,\x00\x00\x00\x00\x00\x00\x00-\x00\x00\x00\x00\x00\x00\x00T\x01\x00\x00\x00\x00\x00\x00V\x01\x00\x00\x00\x00\x00\x00U\x01\x00\x00\x00\x00\x00\x00W\x01\x00\x00\x00\x00\x00\x00X\x01\x00\x00\x00\x00\x00\x00\'\x00\x00\x00\x00\x00\x00\x00Y\x01\x00\x00\x00\x00\x00\x00[\x01\x00\x00\x00\x00\x00\x00Z\x01\x00\x00\x00\x00\x00\x00\\\x01\x00\x00\x00\x00\x00\x00^\x01\x00\x00\x00\x00\x00\x00]\x01\x00\x00\x00\x00\x00\x00]\x01\x00\x00\x00\x00\x00\x00^\x01\x00\x00\x00\x00\x00\x00_\x01\x00\x00\x00\x00\x00\x00*\x00\x00\x00\x00\x00\x00\x00`\x01\x00\x00\x00\x00\x00\x00M\x01\x00\x00\x00\x00\x00\x00*\x00\x00\x00\x00\x00\x00\x00M\x01\x00\x00\x00\x00\x00\x00)\x00\x00\x00\x00\x00\x00\x00.\x00\x00\x00\x00\x00\x00\x00b\x01\x00\x00\x00\x00\x00\x00a\x01\x00\x00\x00\x00\x00\x00.\x00\x00\x00\x00\x00\x00\x00a\x01\x00\x00\x00\x00\x00\x00-\x00\x00\x00\x00\x00\x00\x00c\x01\x00\x00\x00\x00\x00\x00e\x01\x00\x00\x00\x00\x00\x00d\x01\x00\x00\x00\x00\x00\x00;\x01\x00\x00\x00\x00\x00\x00$\x00\x00\x00\x00\x00\x00\x00f\x01\x00\x00\x00\x00\x00\x00f\x01\x00\x00\x00\x00\x00\x00$\x00\x00\x00\x00\x00\x00\x00%\x00\x00\x00\x00\x00\x00\x00g\x01\x00\x00\x00\x00\x00\x00]\x00\x00\x00\x00\x00\x00\x00h\x01\x00\x00\x00\x00\x00\x00h\x01\x00\x00\x00\x00\x00\x00]\x00\x00\x00\x00\x00\x00\x00^\x00\x00\x00\x00\x00\x00\x00`\x01\x00\x00\x00\x00\x00\x00j\x01\x00\x00\x00\x00\x00\x00i\x01\x00\x00\x00\x00\x00\x00`\x01\x00\x00\x00\x00\x00\x00i\x01\x00\x00\x00\x00\x00\x00k\x01\x00\x00\x00\x00\x00\x00f\x01\x00\x00\x00\x00\x00\x00%\x00\x00\x00\x00\x00\x00\x00l\x01\x00\x00\x00\x00\x00\x00l\x01\x00\x00\x00\x00\x00\x00%\x00\x00\x00\x00\x00\x00\x00&\x00\x00\x00\x00\x00\x00\x00l\x01\x00\x00\x00\x00\x00\x00m\x01\x00\x00\x00\x00\x00\x00f\x01\x00\x00\x00\x00\x00\x00c\x01\x00\x00\x00\x00\x00\x00d\x01\x00\x00\x00\x00\x00\x00\x8d\x00\x00\x00\x00\x00\x00\x00Z\x01\x00\x00\x00\x00\x00\x00[\x01\x00\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\'\x00\x00\x00\x00\x00\x00\x00X\x01\x00\x00\x00\x00\x00\x00&\x00\x00\x00\x00\x00\x00\x00?\x01\x00\x00\x00\x00\x00\x00=\x01\x00\x00\x00\x00\x00\x00n\x01\x00\x00\x00\x00\x00\x00]\x01\x00\x00\x00\x00\x00\x00p\x01\x00\x00\x00\x00\x00\x00o\x01\x00\x00\x00\x00\x00\x00j\x01\x00\x00\x00\x00\x00\x00q\x01\x00\x00\x00\x00\x00\x00i\x01\x00\x00\x00\x00\x00\x00r\x01\x00\x00\x00\x00\x00\x00^\x01\x00\x00\x00\x00\x00\x00s\x01\x00\x00\x00\x00\x00\x00t\x01\x00\x00\x00\x00\x00\x00B\x01\x00\x00\x00\x00\x00\x00u\x01\x00\x00\x00\x00\x00\x00i\x01\x00\x00\x00\x00\x00\x00q\x01\x00\x00\x00\x00\x00\x00v\x01\x00\x00\x00\x00\x00\x00X\x01\x00\x00\x00\x00\x00\x00Q\x01\x00\x00\x00\x00\x00\x00O\x01\x00\x00\x00\x00\x00\x00Q\x01\x00\x00\x00\x00\x00\x00X\x01\x00\x00\x00\x00\x00\x00W\x01\x00\x00\x00\x00\x00\x00w\x01\x00\x00\x00\x00\x00\x00y\x01\x00\x00\x00\x00\x00\x00x\x01\x00\x00\x00\x00\x00\x00C\x01\x00\x00\x00\x00\x00\x00g\x01\x00\x00\x00\x00\x00\x00z\x01\x00\x00\x00\x00\x00\x00{\x01\x00\x00\x00\x00\x00\x00?\x01\x00\x00\x00\x00\x00\x00|\x01\x00\x00\x00\x00\x00\x00|\x01\x00\x00\x00\x00\x00\x00?\x01\x00\x00\x00\x00\x00\x00n\x01\x00\x00\x00\x00\x00\x00y\x01\x00\x00\x00\x00\x00\x00~\x01\x00\x00\x00\x00\x00\x00}\x01\x00\x00\x00\x00\x00\x00w\x01\x00\x00\x00\x00\x00\x00x\x01\x00\x00\x00\x00\x00\x00f\x00\x00\x00\x00\x00\x00\x00\x7f\x01\x00\x00\x00\x00\x00\x00{\x01\x00\x00\x00\x00\x00\x00\\\x01\x00\x00\x00\x00\x00\x00\x7f\x01\x00\x00\x00\x00\x00\x00\\\x01\x00\x00\x00\x00\x00\x00o\x01\x00\x00\x00\x00\x00\x00=\x01\x00\x00\x00\x00\x00\x00@\x01\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00@\x01\x00\x00\x00\x00\x00\x00k\x01\x00\x00\x00\x00\x00\x00\x81\x01\x00\x00\x00\x00\x00\x00\x82\x01\x00\x00\x00\x00\x00\x00|\x01\x00\x00\x00\x00\x00\x00q\x01\x00\x00\x00\x00\x00\x00j\x01\x00\x00\x00\x00\x00\x00S\x01\x00\x00\x00\x00\x00\x00|\x01\x00\x00\x00\x00\x00\x00\x82\x01\x00\x00\x00\x00\x00\x00s\x01\x00\x00\x00\x00\x00\x00\x83\x01\x00\x00\x00\x00\x00\x00\x85\x01\x00\x00\x00\x00\x00\x00\x84\x01\x00\x00\x00\x00\x00\x00\x86\x01\x00\x00\x00\x00\x00\x00\x81\x01\x00\x00\x00\x00\x00\x00F\x01\x00\x00\x00\x00\x00\x00;\x01\x00\x00\x00\x00\x00\x00f\x01\x00\x00\x00\x00\x00\x00:\x01\x00\x00\x00\x00\x00\x00f\x01\x00\x00\x00\x00\x00\x00m\x01\x00\x00\x00\x00\x00\x00\x87\x01\x00\x00\x00\x00\x00\x00:\x01\x00\x00\x00\x00\x00\x00f\x01\x00\x00\x00\x00\x00\x00\x87\x01\x00\x00\x00\x00\x00\x00\x88\x01\x00\x00\x00\x00\x00\x00\x89\x01\x00\x00\x00\x00\x00\x00Y\x01\x00\x00\x00\x00\x00\x00\x86\x01\x00\x00\x00\x00\x00\x00F\x01\x00\x00\x00\x00\x00\x00\x8a\x01\x00\x00\x00\x00\x00\x00\x87\x01\x00\x00\x00\x00\x00\x00m\x01\x00\x00\x00\x00\x00\x00\x8b\x01\x00\x00\x00\x00\x00\x00\x87\x01\x00\x00\x00\x00\x00\x00\x8b\x01\x00\x00\x00\x00\x00\x00\x8c\x01\x00\x00\x00\x00\x00\x00u\x01\x00\x00\x00\x00\x00\x00B\x01\x00\x00\x00\x00\x00\x000\x00\x00\x00\x00\x00\x00\x00}\x01\x00\x00\x00\x00\x00\x00~\x01\x00\x00\x00\x00\x00\x00\x8d\x01\x00\x00\x00\x00\x00\x00P\x01\x00\x00\x00\x00\x00\x00Q\x01\x00\x00\x00\x00\x00\x00\x8e\x01\x00\x00\x00\x00\x00\x00Q\x01\x00\x00\x00\x00\x00\x00\x8f\x01\x00\x00\x00\x00\x00\x00\x8e\x01\x00\x00\x00\x00\x00\x00\x90\x01\x00\x00\x00\x00\x00\x00\x92\x01\x00\x00\x00\x00\x00\x00\x91\x01\x00\x00\x00\x00\x00\x00\x93\x01\x00\x00\x00\x00\x00\x00\x95\x01\x00\x00\x00\x00\x00\x00\x94\x01\x00\x00\x00\x00\x00\x00\x96\x01\x00\x00\x00\x00\x00\x00\x91\x01\x00\x00\x00\x00\x00\x00\x92\x01\x00\x00\x00\x00\x00\x00X\x01\x00\x00\x00\x00\x00\x00O\x01\x00\x00\x00\x00\x00\x00l\x01\x00\x00\x00\x00\x00\x00\x93\x01\x00\x00\x00\x00\x00\x00\x94\x01\x00\x00\x00\x00\x00\x00a\x00\x00\x00\x00\x00\x00\x00\x84\x01\x00\x00\x00\x00\x00\x00\x85\x01\x00\x00\x00\x00\x00\x00\x97\x01\x00\x00\x00\x00\x00\x00\x98\x01\x00\x00\x00\x00\x00\x00a\x01\x00\x00\x00\x00\x00\x00J\x01\x00\x00\x00\x00\x00\x00\x99\x01\x00\x00\x00\x00\x00\x00\x96\x01\x00\x00\x00\x00\x00\x00\x92\x01\x00\x00\x00\x00\x00\x00\x89\x01\x00\x00\x00\x00\x00\x00\x9a\x01\x00\x00\x00\x00\x00\x00\x93\x01\x00\x00\x00\x00\x00\x00\x89\x01\x00\x00\x00\x00\x00\x00\x93\x01\x00\x00\x00\x00\x00\x00b\x00\x00\x00\x00\x00\x00\x00\x9b\x01\x00\x00\x00\x00\x00\x00\x9d\x01\x00\x00\x00\x00\x00\x00\x9c\x01\x00\x00\x00\x00\x00\x00I\x01\x00\x00\x00\x00\x00\x00\x8c\x01\x00\x00\x00\x00\x00\x00\x9e\x01\x00\x00\x00\x00\x00\x00\x9e\x01\x00\x00\x00\x00\x00\x00\x8c\x01\x00\x00\x00\x00\x00\x00\x8b\x01\x00\x00\x00\x00\x00\x00\x9f\x01\x00\x00\x00\x00\x00\x00\xa0\x01\x00\x00\x00\x00\x00\x00\x94\x01\x00\x00\x00\x00\x00\x00\x94\x01\x00\x00\x00\x00\x00\x00\xa0\x01\x00\x00\x00\x00\x00\x00`\x00\x00\x00\x00\x00\x00\x00\x91\x01\x00\x00\x00\x00\x00\x00\x96\x01\x00\x00\x00\x00\x00\x00p\x01\x00\x00\x00\x00\x00\x00\x84\x01\x00\x00\x00\x00\x00\x00\xa1\x01\x00\x00\x00\x00\x00\x00\xa0\x01\x00\x00\x00\x00\x00\x00m\x01\x00\x00\x00\x00\x00\x00P\x01\x00\x00\x00\x00\x00\x00\x8b\x01\x00\x00\x00\x00\x00\x00q\x01\x00\x00\x00\x00\x00\x00\xa2\x01\x00\x00\x00\x00\x00\x00v\x01\x00\x00\x00\x00\x00\x00S\x01\x00\x00\x00\x00\x00\x00a\x01\x00\x00\x00\x00\x00\x00\xa3\x01\x00\x00\x00\x00\x00\x00J\x01\x00\x00\x00\x00\x00\x00C\x01\x00\x00\x00\x00\x00\x00\xa4\x01\x00\x00\x00\x00\x00\x00J\x01\x00\x00\x00\x00\x00\x00\xa4\x01\x00\x00\x00\x00\x00\x00\x98\x01\x00\x00\x00\x00\x00\x00h\x01\x00\x00\x00\x00\x00\x00^\x00\x00\x00\x00\x00\x00\x00\xa1\x01\x00\x00\x00\x00\x00\x00\xa1\x01\x00\x00\x00\x00\x00\x00^\x00\x00\x00\x00\x00\x00\x00_\x00\x00\x00\x00\x00\x00\x00\x9c\x01\x00\x00\x00\x00\x00\x00\x9d\x01\x00\x00\x00\x00\x00\x00R\x01\x00\x00\x00\x00\x00\x00\xa5\x01\x00\x00\x00\x00\x00\x00p\x01\x00\x00\x00\x00\x00\x00\x96\x01\x00\x00\x00\x00\x00\x00_\x01\x00\x00\x00\x00\x00\x00\x91\x01\x00\x00\x00\x00\x00\x00p\x01\x00\x00\x00\x00\x00\x00\x9e\x01\x00\x00\x00\x00\x00\x00\x8b\x01\x00\x00\x00\x00\x00\x00\xa6\x01\x00\x00\x00\x00\x00\x00]\x01\x00\x00\x00\x00\x00\x00_\x01\x00\x00\x00\x00\x00\x00p\x01\x00\x00\x00\x00\x00\x00\xa3\x01\x00\x00\x00\x00\x00\x00a\x01\x00\x00\x00\x00\x00\x00\x98\x01\x00\x00\x00\x00\x00\x00\xa1\x01\x00\x00\x00\x00\x00\x00\x84\x01\x00\x00\x00\x00\x00\x00h\x01\x00\x00\x00\x00\x00\x00\x83\x01\x00\x00\x00\x00\x00\x00\xa7\x01\x00\x00\x00\x00\x00\x00\x86\x01\x00\x00\x00\x00\x00\x00\xa8\x01\x00\x00\x00\x00\x00\x00\x8a\x01\x00\x00\x00\x00\x00\x00\xa9\x01\x00\x00\x00\x00\x00\x00\x85\x01\x00\x00\x00\x00\x00\x00\x83\x01\x00\x00\x00\x00\x00\x00\xa8\x01\x00\x00\x00\x00\x00\x00\x86\x01\x00\x00\x00\x00\x00\x00\x8a\x01\x00\x00\x00\x00\x00\x00\x83\x01\x00\x00\x00\x00\x00\x00~\x01\x00\x00\x00\x00\x00\x00\x9d\x01\x00\x00\x00\x00\x00\x00\xaa\x01\x00\x00\x00\x00\x00\x00U\x01\x00\x00\x00\x00\x00\x00\xa6\x01\x00\x00\x00\x00\x00\x00\x8e\x01\x00\x00\x00\x00\x00\x00\xa8\x01\x00\x00\x00\x00\x00\x00\x83\x01\x00\x00\x00\x00\x00\x00\x8a\x01\x00\x00\x00\x00\x00\x00~\x01\x00\x00\x00\x00\x00\x00\xaa\x01\x00\x00\x00\x00\x00\x00\x8d\x01\x00\x00\x00\x00\x00\x00A\x01\x00\x00\x00\x00\x00\x00B\x01\x00\x00\x00\x00\x00\x00t\x01\x00\x00\x00\x00\x00\x00\x84\x01\x00\x00\x00\x00\x00\x00\x97\x01\x00\x00\x00\x00\x00\x00h\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xad\x01\x00\x00\x00\x00\x00\x00\xac\x01\x00\x00\x00\x00\x00\x00\xae\x01\x00\x00\x00\x00\x00\x00\xac\x01\x00\x00\x00\x00\x00\x00\xad\x01\x00\x00\x00\x00\x00\x00\xaf\x01\x00\x00\x00\x00\x00\x00\xb1\x01\x00\x00\x00\x00\x00\x00\xb0\x01\x00\x00\x00\x00\x00\x00\xae\x01\x00\x00\x00\x00\x00\x00\xb2\x01\x00\x00\x00\x00\x00\x00\xac\x01\x00\x00\x00\x00\x00\x00/\x00\x00\x00\x00\x00\x00\x00B\x01\x00\x00\x00\x00\x00\x00b\x01\x00\x00\x00\x00\x00\x00/\x00\x00\x00\x00\x00\x00\x00b\x01\x00\x00\x00\x00\x00\x00.\x00\x00\x00\x00\x00\x00\x00)\x00\x00\x00\x00\x00\x00\x00M\x01\x00\x00\x00\x00\x00\x00\xb3\x01\x00\x00\x00\x00\x00\x00w\x01\x00\x00\x00\x00\x00\x00g\x00\x00\x00\x00\x00\x00\x00R\x01\x00\x00\x00\x00\x00\x00R\x01\x00\x00\x00\x00\x00\x00\x9d\x01\x00\x00\x00\x00\x00\x00w\x01\x00\x00\x00\x00\x00\x00w\x01\x00\x00\x00\x00\x00\x00\x9d\x01\x00\x00\x00\x00\x00\x00~\x01\x00\x00\x00\x00\x00\x00y\x01\x00\x00\x00\x00\x00\x00w\x01\x00\x00\x00\x00\x00\x00~\x01\x00\x00\x00\x00\x00\x00\x89\x01\x00\x00\x00\x00\x00\x00\x88\x01\x00\x00\x00\x00\x00\x00\x9a\x01\x00\x00\x00\x00\x00\x00H\x01\x00\x00\x00\x00\x00\x00c\x01\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x00\x00\xa7\x01\x00\x00\x00\x00\x00\x00\x95\x01\x00\x00\x00\x00\x00\x00\xb4\x01\x00\x00\x00\x00\x00\x00\xb5\x01\x00\x00\x00\x00\x00\x00\xb6\x01\x00\x00\x00\x00\x00\x00Y\x01\x00\x00\x00\x00\x00\x00\x9a\x01\x00\x00\x00\x00\x00\x00\xb4\x01\x00\x00\x00\x00\x00\x00\x95\x01\x00\x00\x00\x00\x00\x00\xa7\x01\x00\x00\x00\x00\x00\x00\xb4\x01\x00\x00\x00\x00\x00\x00\xb7\x01\x00\x00\x00\x00\x00\x00\xa8\x01\x00\x00\x00\x00\x00\x00\xa9\x01\x00\x00\x00\x00\x00\x00\xb8\x01\x00\x00\x00\x00\x00\x00E\x01\x00\x00\x00\x00\x00\x00v\x01\x00\x00\x00\x00\x00\x00D\x01\x00\x00\x00\x00\x00\x00\xa9\x01\x00\x00\x00\x00\x00\x00\xa2\x01\x00\x00\x00\x00\x00\x00\xb8\x01\x00\x00\x00\x00\x00\x00v\x01\x00\x00\x00\x00\x00\x00\xa2\x01\x00\x00\x00\x00\x00\x00D\x01\x00\x00\x00\x00\x00\x00)\x00\x00\x00\x00\x00\x00\x00\xb3\x01\x00\x00\x00\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x9e\x01\x00\x00\x00\x00\x00\x00\xb1\x01\x00\x00\x00\x00\x00\x00\xb9\x01\x00\x00\x00\x00\x00\x00\xaf\x01\x00\x00\x00\x00\x00\x00\xba\x01\x00\x00\x00\x00\x00\x00e\x01\x00\x00\x00\x00\x00\x00\xba\x01\x00\x00\x00\x00\x00\x00\xaf\x01\x00\x00\x00\x00\x00\x00\xbb\x01\x00\x00\x00\x00\x00\x00\xa2\x01\x00\x00\x00\x00\x00\x00\xa9\x01\x00\x00\x00\x00\x00\x00D\x01\x00\x00\x00\x00\x00\x000\x00\x00\x00\x00\x00\x00\x00B\x01\x00\x00\x00\x00\x00\x00/\x00\x00\x00\x00\x00\x00\x00\xa9\x01\x00\x00\x00\x00\x00\x00\x8a\x01\x00\x00\x00\x00\x00\x00D\x01\x00\x00\x00\x00\x00\x00\x8c\x01\x00\x00\x00\x00\x00\x00<\x01\x00\x00\x00\x00\x00\x00\x87\x01\x00\x00\x00\x00\x00\x00G\x01\x00\x00\x00\x00\x00\x00<\x01\x00\x00\x00\x00\x00\x00\x8c\x01\x00\x00\x00\x00\x00\x00:\x01\x00\x00\x00\x00\x00\x00\x87\x01\x00\x00\x00\x00\x00\x00<\x01\x00\x00\x00\x00\x00\x00\xaf\x01\x00\x00\x00\x00\x00\x00\xb0\x01\x00\x00\x00\x00\x00\x00\xbb\x01\x00\x00\x00\x00\x00\x00\x9c\x01\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x00\x00A\x01\x00\x00\x00\x00\x00\x00g\x01\x00\x00\x00\x00\x00\x00C\x01\x00\x00\x00\x00\x00\x00\xa6\x01\x00\x00\x00\x00\x00\x00P\x01\x00\x00\x00\x00\x00\x00\x8e\x01\x00\x00\x00\x00\x00\x00m\x01\x00\x00\x00\x00\x00\x00O\x01\x00\x00\x00\x00\x00\x00P\x01\x00\x00\x00\x00\x00\x00P\x01\x00\x00\x00\x00\x00\x00\xa6\x01\x00\x00\x00\x00\x00\x00\x8b\x01\x00\x00\x00\x00\x00\x00;\x01\x00\x00\x00\x00\x00\x009\x01\x00\x00\x00\x00\x00\x00#\x00\x00\x00\x00\x00\x00\x00\xbc\x01\x00\x00\x00\x00\x00\x00\xaa\x01\x00\x00\x00\x00\x00\x00\x9b\x01\x00\x00\x00\x00\x00\x00\x9b\x01\x00\x00\x00\x00\x00\x00\x87\x00\x00\x00\x00\x00\x00\x00\xbc\x01\x00\x00\x00\x00\x00\x00\x9b\x01\x00\x00\x00\x00\x00\x00\x9c\x01\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x00\x00\xaa\x01\x00\x00\x00\x00\x00\x00\xbc\x01\x00\x00\x00\x00\x00\x00\x8d\x01\x00\x00\x00\x00\x00\x00\xbc\x01\x00\x00\x00\x00\x00\x00\xbd\x01\x00\x00\x00\x00\x00\x00\x8d\x01\x00\x00\x00\x00\x00\x00\xb9\x01\x00\x00\x00\x00\x00\x00\xb1\x01\x00\x00\x00\x00\x00\x00\xaf\x01\x00\x00\x00\x00\x00\x00I\x01\x00\x00\x00\x00\x00\x00e\x01\x00\x00\x00\x00\x00\x00H\x01\x00\x00\x00\x00\x00\x00c\x01\x00\x00\x00\x00\x00\x00H\x01\x00\x00\x00\x00\x00\x00e\x01\x00\x00\x00\x00\x00\x00I\x01\x00\x00\x00\x00\x00\x00G\x01\x00\x00\x00\x00\x00\x00\x8c\x01\x00\x00\x00\x00\x00\x00I\x01\x00\x00\x00\x00\x00\x00\xb9\x01\x00\x00\x00\x00\x00\x00e\x01\x00\x00\x00\x00\x00\x00$\x00\x00\x00\x00\x00\x00\x00;\x01\x00\x00\x00\x00\x00\x00#\x00\x00\x00\x00\x00\x00\x00U\x01\x00\x00\x00\x00\x00\x00V\x01\x00\x00\x00\x00\x00\x00\xb1\x01\x00\x00\x00\x00\x00\x00\xb1\x01\x00\x00\x00\x00\x00\x00V\x01\x00\x00\x00\x00\x00\x00\xb0\x01\x00\x00\x00\x00\x00\x00\xb0\x01\x00\x00\x00\x00\x00\x00V\x01\x00\x00\x00\x00\x00\x00\x7f\x01\x00\x00\x00\x00\x00\x00V\x01\x00\x00\x00\x00\x00\x00\xbe\x01\x00\x00\x00\x00\x00\x00\x7f\x01\x00\x00\x00\x00\x00\x00r\x01\x00\x00\x00\x00\x00\x00\xae\x01\x00\x00\x00\x00\x00\x00^\x01\x00\x00\x00\x00\x00\x00_\x01\x00\x00\x00\x00\x00\x00^\x01\x00\x00\x00\x00\x00\x00\xae\x01\x00\x00\x00\x00\x00\x00r\x01\x00\x00\x00\x00\x00\x00\xb2\x01\x00\x00\x00\x00\x00\x00\xae\x01\x00\x00\x00\x00\x00\x00\xb9\x01\x00\x00\x00\x00\x00\x00I\x01\x00\x00\x00\x00\x00\x00\x9e\x01\x00\x00\x00\x00\x00\x00\xb6\x01\x00\x00\x00\x00\x00\x00\xb5\x01\x00\x00\x00\x00\x00\x00\xac\x01\x00\x00\x00\x00\x00\x00\xb9\x01\x00\x00\x00\x00\x00\x00\xaf\x01\x00\x00\x00\x00\x00\x00e\x01\x00\x00\x00\x00\x00\x00\xa7\x01\x00\x00\x00\x00\x00\x00\xb7\x01\x00\x00\x00\x00\x00\x00\x86\x01\x00\x00\x00\x00\x00\x00\x87\x00\x00\x00\x00\x00\x00\x00\x9b\x01\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x00\x00R\x01\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x00\x00\x00\x00\x9c\x01\x00\x00\x00\x00\x00\x00<\x01\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x00\x00\x00\x00R\x01\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00R\x01\x00\x00\x00\x00\x00\x00h\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xbe\x01\x00\x00\x00\x00\x00\x00>\x01\x00\x00\x00\x00\x00\x00?\x01\x00\x00\x00\x00\x00\x00@\x01\x00\x00\x00\x00\x00\x00>\x01\x00\x00\x00\x00\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00>\x01\x00\x00\x00\x00\x00\x00\xbe\x01\x00\x00\x00\x00\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00O\x01\x00\x00\x00\x00\x00\x00m\x01\x00\x00\x00\x00\x00\x00l\x01\x00\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00Z\x01\x00\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x91\x01\x00\x00\x00\x00\x00\x00_\x01\x00\x00\x00\x00\x00\x00\xad\x01\x00\x00\x00\x00\x00\x00\xaa\x01\x00\x00\x00\x00\x00\x00\x9d\x01\x00\x00\x00\x00\x00\x00\x9b\x01\x00\x00\x00\x00\x00\x00\x96\x01\x00\x00\x00\x00\x00\x00\x99\x01\x00\x00\x00\x00\x00\x00\xc0\x01\x00\x00\x00\x00\x00\x00\x99\x01\x00\x00\x00\x00\x00\x00\x8b\x00\x00\x00\x00\x00\x00\x00\xc0\x01\x00\x00\x00\x00\x00\x00\x8b\x00\x00\x00\x00\x00\x00\x00\x99\x01\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x00\x00\xbc\x01\x00\x00\x00\x00\x00\x00\x87\x00\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\xa4\x01\x00\x00\x00\x00\x00\x00z\x01\x00\x00\x00\x00\x00\x00\xb8\x01\x00\x00\x00\x00\x00\x00\x98\x01\x00\x00\x00\x00\x00\x00\xa4\x01\x00\x00\x00\x00\x00\x00\xb8\x01\x00\x00\x00\x00\x00\x00z\x01\x00\x00\x00\x00\x00\x00\xa4\x01\x00\x00\x00\x00\x00\x00C\x01\x00\x00\x00\x00\x00\x00\xb8\x01\x00\x00\x00\x00\x00\x00\xa2\x01\x00\x00\x00\x00\x00\x00\x98\x01\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\xbd\x01\x00\x00\x00\x00\x00\x00\xbc\x01\x00\x00\x00\x00\x00\x00\xac\x01\x00\x00\x00\x00\x00\x00\xb5\x01\x00\x00\x00\x00\x00\x00}\x01\x00\x00\x00\x00\x00\x00\xac\x01\x00\x00\x00\x00\x00\x00}\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xad\x01\x00\x00\x00\x00\x00\x00\x90\x01\x00\x00\x00\x00\x00\x00\x91\x01\x00\x00\x00\x00\x00\x009\x01\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00#\x00\x00\x00\x00\x00\x00\x009\x01\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xb8\x01\x00\x00\x00\x00\x00\x00z\x01\x00\x00\x00\x00\x00\x00\xa8\x01\x00\x00\x00\x00\x00\x00\xb7\x01\x00\x00\x00\x00\x00\x00\xb4\x01\x00\x00\x00\x00\x00\x00\x82\x01\x00\x00\x00\x00\x00\x00\xb2\x01\x00\x00\x00\x00\x00\x00\xb6\x01\x00\x00\x00\x00\x00\x00\xac\x01\x00\x00\x00\x00\x00\x00\x84\x01\x00\x00\x00\x00\x00\x00\xa0\x01\x00\x00\x00\x00\x00\x00\x9f\x01\x00\x00\x00\x00\x00\x00g\x00\x00\x00\x00\x00\x00\x00w\x01\x00\x00\x00\x00\x00\x00f\x00\x00\x00\x00\x00\x00\x00\x88\x01\x00\x00\x00\x00\x00\x00\xb6\x01\x00\x00\x00\x00\x00\x00\xc1\x01\x00\x00\x00\x00\x00\x00\xb4\x01\x00\x00\x00\x00\x00\x00\x9a\x01\x00\x00\x00\x00\x00\x00\xc1\x01\x00\x00\x00\x00\x00\x00\xc1\x01\x00\x00\x00\x00\x00\x00\x9a\x01\x00\x00\x00\x00\x00\x00\x88\x01\x00\x00\x00\x00\x00\x00H\x01\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\xb6\x01\x00\x00\x00\x00\x00\x00\xb2\x01\x00\x00\x00\x00\x00\x00\xc1\x01\x00\x00\x00\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x00\x00d\x01\x00\x00\x00\x00\x00\x00\xc0\x01\x00\x00\x00\x00\x00\x00T\x01\x00\x00\x00\x00\x00\x00\x8f\x01\x00\x00\x00\x00\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00\xbe\x01\x00\x00\x00\x00\x00\x00V\x01\x00\x00\x00\x00\x00\x00T\x01\x00\x00\x00\x00\x00\x00\x8b\x00\x00\x00\x00\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x00\x00\xc0\x01\x00\x00\x00\x00\x00\x00\x8f\x01\x00\x00\x00\x00\x00\x00K\x01\x00\x00\x00\x00\x00\x00N\x01\x00\x00\x00\x00\x00\x00\xbe\x01\x00\x00\x00\x00\x00\x00T\x01\x00\x00\x00\x00\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00Z\x01\x00\x00\x00\x00\x00\x00\xb5\x01\x00\x00\x00\x00\x00\x00Y\x01\x00\x00\x00\x00\x00\x00\xb5\x01\x00\x00\x00\x00\x00\x00y\x01\x00\x00\x00\x00\x00\x00}\x01\x00\x00\x00\x00\x00\x00k\x01\x00\x00\x00\x00\x00\x00@\x01\x00\x00\x00\x00\x00\x00N\x01\x00\x00\x00\x00\x00\x00y\x01\x00\x00\x00\x00\x00\x00\xb5\x01\x00\x00\x00\x00\x00\x00Z\x01\x00\x00\x00\x00\x00\x00g\x01\x00\x00\x00\x00\x00\x00A\x01\x00\x00\x00\x00\x00\x00]\x00\x00\x00\x00\x00\x00\x00\\\x00\x00\x00\x00\x00\x00\x00t\x01\x00\x00\x00\x00\x00\x00[\x00\x00\x00\x00\x00\x00\x00t\x01\x00\x00\x00\x00\x00\x00\\\x00\x00\x00\x00\x00\x00\x00A\x01\x00\x00\x00\x00\x00\x00A\x01\x00\x00\x00\x00\x00\x00\\\x00\x00\x00\x00\x00\x00\x00]\x00\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00v\x01\x00\x00\x00\x00\x00\x00E\x01\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00E\x01\x00\x00\x00\x00\x00\x00=\x01\x00\x00\x00\x00\x00\x00\x9f\x01\x00\x00\x00\x00\x00\x00\x94\x01\x00\x00\x00\x00\x00\x00\x95\x01\x00\x00\x00\x00\x00\x00a\x00\x00\x00\x00\x00\x00\x00\x94\x01\x00\x00\x00\x00\x00\x00`\x00\x00\x00\x00\x00\x00\x00\x83\x01\x00\x00\x00\x00\x00\x00\x84\x01\x00\x00\x00\x00\x00\x00\x9f\x01\x00\x00\x00\x00\x00\x00`\x01\x00\x00\x00\x00\x00\x00*\x00\x00\x00\x00\x00\x00\x00+\x00\x00\x00\x00\x00\x00\x00\xc2\x01\x00\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\x92\x01\x00\x00\x00\x00\x00\x00\xc2\x01\x00\x00\x00\x00\x00\x00\xbd\x01\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\'\x00\x00\x00\x00\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00W\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\xc3\x01\x00\x00\x00\x00\x00\x00\xad\x01\x00\x00\x00\x00\x00\x00\xbd\x01\x00\x00\x00\x00\x00\x00\xc2\x01\x00\x00\x00\x00\x00\x00\x92\x01\x00\x00\x00\x00\x00\x00\xc3\x01\x00\x00\x00\x00\x00\x00\x90\x01\x00\x00\x00\x00\x00\x00\xad\x01\x00\x00\x00\x00\x00\x00\xa7\x01\x00\x00\x00\x00\x00\x00\x9f\x01\x00\x00\x00\x00\x00\x00\x95\x01\x00\x00\x00\x00\x00\x00\x88\x01\x00\x00\x00\x00\x00\x00Y\x01\x00\x00\x00\x00\x00\x00\xb6\x01\x00\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\xc2\x01\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\xb7\x01\x00\x00\x00\x00\x00\x00\x82\x01\x00\x00\x00\x00\x00\x00\x81\x01\x00\x00\x00\x00\x00\x00+\x00\x00\x00\x00\x00\x00\x00j\x01\x00\x00\x00\x00\x00\x00`\x01\x00\x00\x00\x00\x00\x00&\x00\x00\x00\x00\x00\x00\x00X\x01\x00\x00\x00\x00\x00\x00l\x01\x00\x00\x00\x00\x00\x00\xa5\x01\x00\x00\x00\x00\x00\x00\xc0\x01\x00\x00\x00\x00\x00\x00d\x01\x00\x00\x00\x00\x00\x00\xa5\x01\x00\x00\x00\x00\x00\x00d\x01\x00\x00\x00\x00\x00\x00\xba\x01\x00\x00\x00\x00\x00\x00\x82\x01\x00\x00\x00\x00\x00\x00\xc1\x01\x00\x00\x00\x00\x00\x00r\x01\x00\x00\x00\x00\x00\x00\xc1\x01\x00\x00\x00\x00\x00\x00\x82\x01\x00\x00\x00\x00\x00\x00\xb4\x01\x00\x00\x00\x00\x00\x00\x7f\x01\x00\x00\x00\x00\x00\x00o\x01\x00\x00\x00\x00\x00\x00\xb0\x01\x00\x00\x00\x00\x00\x00\x7f\x01\x00\x00\x00\x00\x00\x00\xbe\x01\x00\x00\x00\x00\x00\x00{\x01\x00\x00\x00\x00\x00\x00\xbd\x01\x00\x00\x00\x00\x00\x00\x92\x01\x00\x00\x00\x00\x00\x00\x90\x01\x00\x00\x00\x00\x00\x00\xba\x01\x00\x00\x00\x00\x00\x00d\x01\x00\x00\x00\x00\x00\x00e\x01\x00\x00\x00\x00\x00\x00\x8d\x00\x00\x00\x00\x00\x00\x00d\x01\x00\x00\x00\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x00\x00\xc1\x01\x00\x00\x00\x00\x00\x00\xb2\x01\x00\x00\x00\x00\x00\x00r\x01\x00\x00\x00\x00\x00\x00\x92\x01\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x00\x00\x99\x01\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x00\x00\x92\x01\x00\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\xc3\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x8d\x01\x00\x00\x00\x00\x00\x00\xc3\x01\x00\x00\x00\x00\x00\x00\xbd\x01\x00\x00\x00\x00\x00\x00\x90\x01\x00\x00\x00\x00\x00\x00E\x01\x00\x00\x00\x00\x00\x00n\x01\x00\x00\x00\x00\x00\x00=\x01\x00\x00\x00\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00}\x01\x00\x00\x00\x00\x00\x00\x8d\x01\x00\x00\x00\x00\x00\x00U\x01\x00\x00\x00\x00\x00\x00\xb1\x01\x00\x00\x00\x00\x00\x00\xa6\x01\x00\x00\x00\x00\x00\x00n\x01\x00\x00\x00\x00\x00\x00E\x01\x00\x00\x00\x00\x00\x00F\x01\x00\x00\x00\x00\x00\x00\xbd\x01\x00\x00\x00\x00\x00\x00\xc3\x01\x00\x00\x00\x00\x00\x00\x8d\x01\x00\x00\x00\x00\x00\x00-\x00\x00\x00\x00\x00\x00\x00a\x01\x00\x00\x00\x00\x00\x00S\x01\x00\x00\x00\x00\x00\x00\x8f\x01\x00\x00\x00\x00\x00\x00T\x01\x00\x00\x00\x00\x00\x00\x8e\x01\x00\x00\x00\x00\x00\x00T\x01\x00\x00\x00\x00\x00\x00U\x01\x00\x00\x00\x00\x00\x00\x8e\x01\x00\x00\x00\x00\x00\x00]\x01\x00\x00\x00\x00\x00\x00o\x01\x00\x00\x00\x00\x00\x00\\\x01\x00\x00\x00\x00\x00\x00J\x01\x00\x00\x00\x00\x00\x00a\x01\x00\x00\x00\x00\x00\x00b\x01\x00\x00\x00\x00\x00\x00u\x01\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00[\x00\x00\x00\x00\x00\x00\x00j\x01\x00\x00\x00\x00\x00\x00+\x00\x00\x00\x00\x00\x00\x00,\x00\x00\x00\x00\x00\x00\x00g\x01\x00\x00\x00\x00\x00\x00\x97\x01\x00\x00\x00\x00\x00\x00z\x01\x00\x00\x00\x00\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00N\x01\x00\x00\x00\x00\x00\x00@\x01\x00\x00\x00\x00\x00\x00N\x01\x00\x00\x00\x00\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00\x8f\x01\x00\x00\x00\x00\x00\x00t\x01\x00\x00\x00\x00\x00\x00u\x01\x00\x00\x00\x00\x00\x00[\x00\x00\x00\x00\x00\x00\x00\xa7\x01\x00\x00\x00\x00\x00\x00\x83\x01\x00\x00\x00\x00\x00\x00\x9f\x01\x00\x00\x00\x00\x00\x00\x97\x01\x00\x00\x00\x00\x00\x00g\x01\x00\x00\x00\x00\x00\x00h\x01\x00\x00\x00\x00\x00\x00r\x01\x00\x00\x00\x00\x00\x00s\x01\x00\x00\x00\x00\x00\x00\x82\x01\x00\x00\x00\x00\x00\x00c\x00\x00\x00\x00\x00\x00\x00\x89\x01\x00\x00\x00\x00\x00\x00b\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00u\x01\x00\x00\x00\x00\x00\x000\x00\x00\x00\x00\x00\x00\x00\xb3\x01\x00\x00\x00\x00\x00\x00K\x01\x00\x00\x00\x00\x00\x00W\x01\x00\x00\x00\x00\x00\x00\x85\x01\x00\x00\x00\x00\x00\x00z\x01\x00\x00\x00\x00\x00\x00\x97\x01\x00\x00\x00\x00\x00\x00x\x01\x00\x00\x00\x00\x00\x00Z\x01\x00\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00o\x01\x00\x00\x00\x00\x00\x00p\x01\x00\x00\x00\x00\x00\x00\xbb\x01\x00\x00\x00\x00\x00\x00p\x01\x00\x00\x00\x00\x00\x00\xa5\x01\x00\x00\x00\x00\x00\x00\xbb\x01\x00\x00\x00\x00\x00\x00D\x01\x00\x00\x00\x00\x00\x00\x8a\x01\x00\x00\x00\x00\x00\x00F\x01\x00\x00\x00\x00\x00\x00K\x01\x00\x00\x00\x00\x00\x00\xb3\x01\x00\x00\x00\x00\x00\x00M\x01\x00\x00\x00\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\xb3\x01\x00\x00\x00\x00\x00\x00W\x01\x00\x00\x00\x00\x00\x00z\x01\x00\x00\x00\x00\x00\x00\x85\x01\x00\x00\x00\x00\x00\x00\xa8\x01\x00\x00\x00\x00\x00\x00\x93\x01\x00\x00\x00\x00\x00\x00a\x00\x00\x00\x00\x00\x00\x00b\x00\x00\x00\x00\x00\x00\x00\xbe\x01\x00\x00\x00\x00\x00\x00?\x01\x00\x00\x00\x00\x00\x00{\x01\x00\x00\x00\x00\x00\x00|\x01\x00\x00\x00\x00\x00\x00n\x01\x00\x00\x00\x00\x00\x00\x81\x01\x00\x00\x00\x00\x00\x00|\x01\x00\x00\x00\x00\x00\x00s\x01\x00\x00\x00\x00\x00\x00{\x01\x00\x00\x00\x00\x00\x00_\x01\x00\x00\x00\x00\x00\x00\xae\x01\x00\x00\x00\x00\x00\x00\xad\x01\x00\x00\x00\x00\x00\x00\x93\x01\x00\x00\x00\x00\x00\x00\x9a\x01\x00\x00\x00\x00\x00\x00\x95\x01\x00\x00\x00\x00\x00\x00L\x01\x00\x00\x00\x00\x00\x00`\x01\x00\x00\x00\x00\x00\x00k\x01\x00\x00\x00\x00\x00\x00Z\x01\x00\x00\x00\x00\x00\x00x\x01\x00\x00\x00\x00\x00\x00y\x01\x00\x00\x00\x00\x00\x00\xc0\x01\x00\x00\x00\x00\x00\x00\xa5\x01\x00\x00\x00\x00\x00\x00\x96\x01\x00\x00\x00\x00\x00\x00f\x00\x00\x00\x00\x00\x00\x00x\x01\x00\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00`\x00\x00\x00\x00\x00\x00\x00\xa0\x01\x00\x00\x00\x00\x00\x00_\x00\x00\x00\x00\x00\x00\x00`\x01\x00\x00\x00\x00\x00\x00L\x01\x00\x00\x00\x00\x00\x00M\x01\x00\x00\x00\x00\x00\x00N\x01\x00\x00\x00\x00\x00\x00L\x01\x00\x00\x00\x00\x00\x00k\x01\x00\x00\x00\x00\x00\x00\xa1\x01\x00\x00\x00\x00\x00\x00_\x00\x00\x00\x00\x00\x00\x00\xa0\x01\x00\x00\x00\x00\x00\x00s\x01\x00\x00\x00\x00\x00\x00^\x01\x00\x00\x00\x00\x00\x00\\\x01\x00\x00\x00\x00\x00\x00\xba\x01\x00\x00\x00\x00\x00\x00\xbb\x01\x00\x00\x00\x00\x00\x00\xa5\x01\x00\x00\x00\x00\x00\x00o\x01\x00\x00\x00\x00\x00\x00\xbb\x01\x00\x00\x00\x00\x00\x00\xb0\x01\x00\x00\x00\x00\x00\x00s\x01\x00\x00\x00\x00\x00\x00\\\x01\x00\x00\x00\x00\x00\x00{\x01\x00\x00\x00\x00\x00\x00c\x00\x00\x00\x00\x00\x00\x00[\x01\x00\x00\x00\x00\x00\x00\x89\x01\x00\x00\x00\x00\x00\x00\x86\x01\x00\x00\x00\x00\x00\x00\xb7\x01\x00\x00\x00\x00\x00\x00\x81\x01\x00\x00\x00\x00\x00\x00c\x01\x00\x00\x00\x00\x00\x00\x8d\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x00\x00\x9e\x01\x00\x00\x00\x00\x00\x00\xa6\x01\x00\x00\x00\x00\x00\x00\xb1\x01\x00\x00\x00\x00\x00\x00[\x01\x00\x00\x00\x00\x00\x00Y\x01\x00\x00\x00\x00\x00\x00\x89\x01\x00\x00\x00\x00\x00\x00[\x01\x00\x00\x00\x00\x00\x00c\x00\x00\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00n\x01\x00\x00\x00\x00\x00\x00F\x01\x00\x00\x00\x00\x00\x00\x81\x01\x00\x00\x00\x00\x00\x00b\x01\x00\x00\x00\x00\x00\x00B\x01\x00\x00\x00\x00\x00\x00J\x01\x00\x00\x00\x00\x00\x00j\x01\x00\x00\x00\x00\x00\x00,\x00\x00\x00\x00\x00\x00\x00S\x01\x00\x00\x00\x00\x00\x00S\x01\x00\x00\x00\x00\x00\x00\xa3\x01\x00\x00\x00\x00\x00\x00q\x01\x00\x00\x00\x00\x00\x00\xa3\x01\x00\x00\x00\x00\x00\x00\xa2\x01\x00\x00\x00\x00\x00\x00q\x01\x00\x00\x00\x00\x00\x00i\x01\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00k\x01\x00\x00\x00\x00\x00\x00Q\x01\x00\x00\x00\x00\x00\x00K\x01\x00\x00\x00\x00\x00\x00\x8f\x01\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00i\x01\x00\x00\x00\x00\x00\x00v\x01\x00\x00\x00\x00\x00\x00\xa2\x01\x00\x00\x00\x00\x00\x00\xa3\x01\x00\x00\x00\x00\x00\x00\x98\x01\x00\x00\x00\x00\x00\x00K\x01\x00\x00\x00\x00\x00\x00Q\x01\x00\x00\x00\x00\x00\x00W\x01\x00\x00\x00\x00\x00\x00\xc4\x01\x00\x00\x00\x00\x00\x00\xc6\x01\x00\x00\x00\x00\x00\x00\xc5\x01\x00\x00\x00\x00\x00\x00\xc5\x01\x00\x00\x00\x00\x00\x00\xc6\x01\x00\x00\x00\x00\x00\x00k\x00\x00\x00\x00\x00\x00\x00\xc5\x01\x00\x00\x00\x00\x00\x00k\x00\x00\x00\x00\x00\x00\x00j\x00\x00\x00\x00\x00\x00\x00\r\x00\x00\x00\x00\x00\x00\x00\xc8\x01\x00\x00\x00\x00\x00\x00\xc7\x01\x00\x00\x00\x00\x00\x00\r\x00\x00\x00\x00\x00\x00\x00\xc7\x01\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xc9\x01\x00\x00\x00\x00\x00\x00\xca\x01\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\xcb\x01\x00\x00\x00\x00\x00\x00\xcd\x01\x00\x00\x00\x00\x00\x00\xcc\x01\x00\x00\x00\x00\x00\x00l\x00\x00\x00\x00\x00\x00\x00\xc6\x01\x00\x00\x00\x00\x00\x00\xce\x01\x00\x00\x00\x00\x00\x00l\x00\x00\x00\x00\x00\x00\x00\xce\x01\x00\x00\x00\x00\x00\x00m\x00\x00\x00\x00\x00\x00\x00\xc7\x01\x00\x00\x00\x00\x00\x00\xd0\x01\x00\x00\x00\x00\x00\x00\xcf\x01\x00\x00\x00\x00\x00\x00\xcf\x01\x00\x00\x00\x00\x00\x00\xd0\x01\x00\x00\x00\x00\x00\x00\xd1\x01\x00\x00\x00\x00\x00\x00\xd2\x01\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\xca\x01\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\xd3\x01\x00\x00\x00\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\xd4\x01\x00\x00\x00\x00\x00\x00\xd4\x01\x00\x00\x00\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\xd5\x01\x00\x00\x00\x00\x00\x00\xd7\x01\x00\x00\x00\x00\x00\x00\xd6\x01\x00\x00\x00\x00\x00\x00\xd8\x01\x00\x00\x00\x00\x00\x00\xda\x01\x00\x00\x00\x00\x00\x00\xd9\x01\x00\x00\x00\x00\x00\x00\xd9\x01\x00\x00\x00\x00\x00\x00\xda\x01\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\xdc\x01\x00\x00\x00\x00\x00\x00\xcf\x01\x00\x00\x00\x00\x00\x00\xd1\x01\x00\x00\x00\x00\x00\x00\xdc\x01\x00\x00\x00\x00\x00\x00\xd1\x01\x00\x00\x00\x00\x00\x00\xdd\x01\x00\x00\x00\x00\x00\x00\xde\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xdf\x01\x00\x00\x00\x00\x00\x00m\x00\x00\x00\x00\x00\x00\x00\xce\x01\x00\x00\x00\x00\x00\x00\xe1\x01\x00\x00\x00\x00\x00\x00\xe2\x01\x00\x00\x00\x00\x00\x00\xe4\x01\x00\x00\x00\x00\x00\x00\xe3\x01\x00\x00\x00\x00\x00\x00\xe2\x01\x00\x00\x00\x00\x00\x00\xe3\x01\x00\x00\x00\x00\x00\x00\xe5\x01\x00\x00\x00\x00\x00\x00y\x00\x00\x00\x00\x00\x00\x00\xe7\x01\x00\x00\x00\x00\x00\x00\xe6\x01\x00\x00\x00\x00\x00\x00y\x00\x00\x00\x00\x00\x00\x00\xe6\x01\x00\x00\x00\x00\x00\x00z\x00\x00\x00\x00\x00\x00\x00\xcc\x01\x00\x00\x00\x00\x00\x00\xcd\x01\x00\x00\x00\x00\x00\x00\xe8\x01\x00\x00\x00\x00\x00\x00\xe9\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xea\x01\x00\x00\x00\x00\x00\x00\xc4\x01\x00\x00\x00\x00\x00\x00\xc5\x01\x00\x00\x00\x00\x00\x00\xeb\x01\x00\x00\x00\x00\x00\x00\xea\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\xea\x01\x00\x00\x00\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\xec\x01\x00\x00\x00\x00\x00\x00\xec\x01\x00\x00\x00\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\xed\x01\x00\x00\x00\x00\x00\x00\xd6\x01\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\xd6\x01\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\xe5\x01\x00\x00\x00\x00\x00\x00\xc8\x01\x00\x00\x00\x00\x00\x00\xee\x01\x00\x00\x00\x00\x00\x00\xd4\x01\x00\x00\x00\x00\x00\x00\xef\x01\x00\x00\x00\x00\x00\x00\xd3\x01\x00\x00\x00\x00\x00\x00\xc5\x01\x00\x00\x00\x00\x00\x00\xf0\x01\x00\x00\x00\x00\x00\x00\xeb\x01\x00\x00\x00\x00\x00\x00\xe5\x01\x00\x00\x00\x00\x00\x00\xee\x01\x00\x00\x00\x00\x00\x00\xf1\x01\x00\x00\x00\x00\x00\x00\xc8\x01\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\xee\x01\x00\x00\x00\x00\x00\x00\xee\x01\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00o\x00\x00\x00\x00\x00\x00\x00\xf3\x01\x00\x00\x00\x00\x00\x00\xf2\x01\x00\x00\x00\x00\x00\x00o\x00\x00\x00\x00\x00\x00\x00\xf2\x01\x00\x00\x00\x00\x00\x00p\x00\x00\x00\x00\x00\x00\x00\xf4\x01\x00\x00\x00\x00\x00\x00\xf5\x01\x00\x00\x00\x00\x00\x00\xcc\x01\x00\x00\x00\x00\x00\x00\xf6\x01\x00\x00\x00\x00\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00~\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\xfa\x01\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\xfb\x01\x00\x00\x00\x00\x00\x00\xfc\x01\x00\x00\x00\x00\x00\x00\xfd\x01\x00\x00\x00\x00\x00\x00\xd9\x01\x00\x00\x00\x00\x00\x00\xfc\x01\x00\x00\x00\x00\x00\x00\xd9\x01\x00\x00\x00\x00\x00\x00\xfe\x01\x00\x00\x00\x00\x00\x00\xc5\x01\x00\x00\x00\x00\x00\x00j\x00\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x01\x02\x00\x00\x00\x00\x00\x00\xd0\x01\x00\x00\x00\x00\x00\x00k\x00\x00\x00\x00\x00\x00\x00\xc6\x01\x00\x00\x00\x00\x00\x00l\x00\x00\x00\x00\x00\x00\x00\xd0\x01\x00\x00\x00\x00\x00\x00\x01\x02\x00\x00\x00\x00\x00\x00\xd1\x01\x00\x00\x00\x00\x00\x00\xed\x01\x00\x00\x00\x00\x00\x00\x03\x02\x00\x00\x00\x00\x00\x00\x02\x02\x00\x00\x00\x00\x00\x00\x04\x02\x00\x00\x00\x00\x00\x00\x05\x02\x00\x00\x00\x00\x00\x00\x02\x02\x00\x00\x00\x00\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00\x01\x02\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x07\x02\x00\x00\x00\x00\x00\x00\xfc\x01\x00\x00\x00\x00\x00\x00\x08\x02\x00\x00\x00\x00\x00\x00\x07\x02\x00\x00\x00\x00\x00\x00\x08\x02\x00\x00\x00\x00\x00\x00\t\x02\x00\x00\x00\x00\x00\x00\n\x02\x00\x00\x00\x00\x00\x00\x0c\x02\x00\x00\x00\x00\x00\x00\x0b\x02\x00\x00\x00\x00\x00\x00\xe9\x01\x00\x00\x00\x00\x00\x00\xea\x01\x00\x00\x00\x00\x00\x00\r\x02\x00\x00\x00\x00\x00\x00\xcc\x01\x00\x00\x00\x00\x00\x00\xf5\x01\x00\x00\x00\x00\x00\x00\xcb\x01\x00\x00\x00\x00\x00\x00\xca\x01\x00\x00\x00\x00\x00\x00\x0f\x02\x00\x00\x00\x00\x00\x00\x0e\x02\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x00\x00\x00\x00\x12\x02\x00\x00\x00\x00\x00\x00\x11\x02\x00\x00\x00\x00\x00\x00\x12\x02\x00\x00\x00\x00\x00\x00\x13\x02\x00\x00\x00\x00\x00\x00\x11\x02\x00\x00\x00\x00\x00\x00\xef\x01\x00\x00\x00\x00\x00\x00\xd4\x01\x00\x00\x00\x00\x00\x00\xca\x01\x00\x00\x00\x00\x00\x00\x13\x02\x00\x00\x00\x00\x00\x00\x14\x02\x00\x00\x00\x00\x00\x00\x11\x02\x00\x00\x00\x00\x00\x00\x11\x02\x00\x00\x00\x00\x00\x00\x14\x02\x00\x00\x00\x00\x00\x00\x15\x02\x00\x00\x00\x00\x00\x00\xe9\x01\x00\x00\x00\x00\x00\x00\x17\x02\x00\x00\x00\x00\x00\x00\x16\x02\x00\x00\x00\x00\x00\x00\n\x02\x00\x00\x00\x00\x00\x00\x18\x02\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x19\x02\x00\x00\x00\x00\x00\x00\x1b\x02\x00\x00\x00\x00\x00\x00\x1a\x02\x00\x00\x00\x00\x00\x00\n\x02\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\xe4\x01\x00\x00\x00\x00\x00\x00\x02\x02\x00\x00\x00\x00\x00\x00\x03\x02\x00\x00\x00\x00\x00\x00\x1c\x02\x00\x00\x00\x00\x00\x00\xca\x01\x00\x00\x00\x00\x00\x00\x0e\x02\x00\x00\x00\x00\x00\x00\xef\x01\x00\x00\x00\x00\x00\x00\xcc\x01\x00\x00\x00\x00\x00\x00\x1d\x02\x00\x00\x00\x00\x00\x00\xf4\x01\x00\x00\x00\x00\x00\x00\xeb\x01\x00\x00\x00\x00\x00\x00\xef\x01\x00\x00\x00\x00\x00\x00\x1e\x02\x00\x00\x00\x00\x00\x00\xeb\x01\x00\x00\x00\x00\x00\x00\x1e\x02\x00\x00\x00\x00\x00\x00\xc4\x01\x00\x00\x00\x00\x00\x00\x1f\x02\x00\x00\x00\x00\x00\x00!\x02\x00\x00\x00\x00\x00\x00 \x02\x00\x00\x00\x00\x00\x00\x18\x02\x00\x00\x00\x00\x00\x00\n\x02\x00\x00\x00\x00\x00\x00"\x02\x00\x00\x00\x00\x00\x00\xe4\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00#\x02\x00\x00\x00\x00\x00\x00$\x02\x00\x00\x00\x00\x00\x00\x1a\x02\x00\x00\x00\x00\x00\x00\xdf\x01\x00\x00\x00\x00\x00\x00%\x02\x00\x00\x00\x00\x00\x00\x1b\x02\x00\x00\x00\x00\x00\x00&\x02\x00\x00\x00\x00\x00\x00$\x02\x00\x00\x00\x00\x00\x00\xdf\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x1d\x02\x00\x00\x00\x00\x00\x00\xcc\x01\x00\x00\x00\x00\x00\x00\xe8\x01\x00\x00\x00\x00\x00\x00\'\x02\x00\x00\x00\x00\x00\x00(\x02\x00\x00\x00\x00\x00\x00%\x02\x00\x00\x00\x00\x00\x00\'\x02\x00\x00\x00\x00\x00\x00%\x02\x00\x00\x00\x00\x00\x00&\x02\x00\x00\x00\x00\x00\x00\n\x02\x00\x00\x00\x00\x00\x00\x0b\x02\x00\x00\x00\x00\x00\x00"\x02\x00\x00\x00\x00\x00\x00\x11\x02\x00\x00\x00\x00\x00\x00\x15\x02\x00\x00\x00\x00\x00\x00)\x02\x00\x00\x00\x00\x00\x00)\x02\x00\x00\x00\x00\x00\x00\x15\x02\x00\x00\x00\x00\x00\x00*\x02\x00\x00\x00\x00\x00\x00\xca\x01\x00\x00\x00\x00\x00\x00\xd4\x01\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00+\x02\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\xd2\x01\x00\x00\x00\x00\x00\x00\xd2\x01\x00\x00\x00\x00\x00\x00!\x02\x00\x00\x00\x00\x00\x00+\x02\x00\x00\x00\x00\x00\x00+\x02\x00\x00\x00\x00\x00\x00!\x02\x00\x00\x00\x00\x00\x00\x03\x02\x00\x00\x00\x00\x00\x00\xed\x01\x00\x00\x00\x00\x00\x00+\x02\x00\x00\x00\x00\x00\x00\x03\x02\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00,\x02\x00\x00\x00\x00\x00\x00$\x02\x00\x00\x00\x00\x00\x00-\x02\x00\x00\x00\x00\x00\x00.\x02\x00\x00\x00\x00\x00\x00\xf6\x01\x00\x00\x00\x00\x00\x00.\x02\x00\x00\x00\x00\x00\x000\x02\x00\x00\x00\x00\x00\x00/\x02\x00\x00\x00\x00\x00\x00$\x02\x00\x00\x00\x00\x00\x00,\x02\x00\x00\x00\x00\x00\x00s\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xc7\x01\x00\x00\x00\x00\x00\x00\xcf\x01\x00\x00\x00\x00\x00\x001\x02\x00\x00\x00\x00\x00\x000\x02\x00\x00\x00\x00\x00\x00.\x02\x00\x00\x00\x00\x00\x00\xce\x01\x00\x00\x00\x00\x00\x00\xc4\x01\x00\x00\x00\x00\x00\x002\x02\x00\x00\x00\x00\x00\x003\x02\x00\x00\x00\x00\x00\x005\x02\x00\x00\x00\x00\x00\x004\x02\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xcf\x01\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\xd6\x01\x00\x00\x00\x00\x00\x00\xd7\x01\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\xd7\x01\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00#\x02\x00\x00\x00\x00\x00\x00\xd0\x01\x00\x00\x00\x00\x00\x00\xc7\x01\x00\x00\x00\x00\x00\x006\x02\x00\x00\x00\x00\x00\x007\x02\x00\x00\x00\x00\x00\x00\x05\x02\x00\x00\x00\x00\x00\x00\x05\x02\x00\x00\x00\x00\x00\x007\x02\x00\x00\x00\x00\x00\x00\xd5\x01\x00\x00\x00\x00\x00\x00z\x00\x00\x00\x00\x00\x00\x00\xf5\x01\x00\x00\x00\x00\x00\x00{\x00\x00\x00\x00\x00\x00\x00\xec\x01\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x008\x02\x00\x00\x00\x00\x00\x00\xe8\x01\x00\x00\x00\x00\x00\x00\xdd\x01\x00\x00\x00\x00\x00\x009\x02\x00\x00\x00\x00\x00\x008\x02\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00 \x02\x00\x00\x00\x00\x00\x00!\x02\x00\x00\x00\x00\x00\x00\xd2\x01\x00\x00\x00\x00\x00\x00\xc8\x01\x00\x00\x00\x00\x00\x00\xe3\x01\x00\x00\x00\x00\x00\x00\xc7\x01\x00\x00\x00\x00\x00\x00\xe3\x01\x00\x00\x00\x00\x00\x00\xc8\x01\x00\x00\x00\x00\x00\x00\xe5\x01\x00\x00\x00\x00\x00\x00\xc7\x01\x00\x00\x00\x00\x00\x00\xe3\x01\x00\x00\x00\x00\x00\x00#\x02\x00\x00\x00\x00\x00\x00\xe7\x01\x00\x00\x00\x00\x00\x00\x17\x02\x00\x00\x00\x00\x00\x00\r\x02\x00\x00\x00\x00\x00\x00\r\x02\x00\x00\x00\x00\x00\x00\x17\x02\x00\x00\x00\x00\x00\x00\xe9\x01\x00\x00\x00\x00\x00\x00:\x02\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\x00\x00\x00\x00;\x02\x00\x00\x00\x00\x00\x00\xfe\x01\x00\x00\x00\x00\x00\x00\x08\x02\x00\x00\x00\x00\x00\x00\xfc\x01\x00\x00\x00\x00\x00\x00\xde\x01\x00\x00\x00\x00\x00\x00<\x02\x00\x00\x00\x00\x00\x00\x04\x02\x00\x00\x00\x00\x00\x00\x03\x02\x00\x00\x00\x00\x00\x00!\x02\x00\x00\x00\x00\x00\x00=\x02\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\x00\x00\x00\x00:\x02\x00\x00\x00\x00\x00\x00\xf0\x01\x00\x00\x00\x00\x00\x00\xc5\x01\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\x00\x00\x00\x00\xf0\x01\x00\x00\x00\x00\x00\x00\x03\x02\x00\x00\x00\x00\x00\x00=\x02\x00\x00\x00\x00\x00\x00\x1c\x02\x00\x00\x00\x00\x00\x00>\x02\x00\x00\x00\x00\x00\x00\x04\x02\x00\x00\x00\x00\x00\x00<\x02\x00\x00\x00\x00\x00\x00?\x02\x00\x00\x00\x00\x00\x00\x0c\x02\x00\x00\x00\x00\x00\x00@\x02\x00\x00\x00\x00\x00\x00@\x02\x00\x00\x00\x00\x00\x00\x0c\x02\x00\x00\x00\x00\x00\x00A\x02\x00\x00\x00\x00\x00\x00\xde\x01\x00\x00\x00\x00\x00\x00\x04\x02\x00\x00\x00\x00\x00\x00\x1c\x02\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\xcf\x01\x00\x00\x00\x00\x00\x008\x02\x00\x00\x00\x00\x00\x00\xda\x01\x00\x00\x00\x00\x00\x00\x0f\x02\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x00\x00\x00\x00\x17\x02\x00\x00\x00\x00\x00\x00\xe7\x01\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x00\x00\x00\x00\xe7\x01\x00\x00\x00\x00\x00\x00y\x00\x00\x00\x00\x00\x00\x003\x02\x00\x00\x00\x00\x00\x00B\x02\x00\x00\x00\x00\x00\x00\x1d\x02\x00\x00\x00\x00\x00\x00\xf4\x01\x00\x00\x00\x00\x00\x00\x1d\x02\x00\x00\x00\x00\x00\x00B\x02\x00\x00\x00\x00\x00\x00B\x02\x00\x00\x00\x00\x00\x00.\x02\x00\x00\x00\x00\x00\x00C\x02\x00\x00\x00\x00\x00\x00\xe1\x01\x00\x00\x00\x00\x00\x002\x02\x00\x00\x00\x00\x00\x00*\x02\x00\x00\x00\x00\x00\x002\x02\x00\x00\x00\x00\x00\x00\xe1\x01\x00\x00\x00\x00\x00\x00\xce\x01\x00\x00\x00\x00\x00\x002\x02\x00\x00\x00\x00\x00\x00\xc4\x01\x00\x00\x00\x00\x00\x00D\x02\x00\x00\x00\x00\x00\x002\x02\x00\x00\x00\x00\x00\x00D\x02\x00\x00\x00\x00\x00\x00*\x02\x00\x00\x00\x00\x00\x00D\x02\x00\x00\x00\x00\x00\x00\xc4\x01\x00\x00\x00\x00\x00\x00\x1e\x02\x00\x00\x00\x00\x00\x00\x1e\x02\x00\x00\x00\x00\x00\x00\xda\x01\x00\x00\x00\x00\x00\x00D\x02\x00\x00\x00\x00\x00\x00\xd8\x01\x00\x00\x00\x00\x00\x00)\x02\x00\x00\x00\x00\x00\x00D\x02\x00\x00\x00\x00\x00\x00\xd3\x01\x00\x00\x00\x00\x00\x00\xef\x01\x00\x00\x00\x00\x00\x00\xf0\x01\x00\x00\x00\x00\x00\x00\xd3\x01\x00\x00\x00\x00\x00\x00\xf0\x01\x00\x00\x00\x00\x00\x00:\x02\x00\x00\x00\x00\x00\x00)\x02\x00\x00\x00\x00\x00\x00\xd8\x01\x00\x00\x00\x00\x00\x00\x11\x02\x00\x00\x00\x00\x00\x00)\x02\x00\x00\x00\x00\x00\x00*\x02\x00\x00\x00\x00\x00\x00D\x02\x00\x00\x00\x00\x00\x00:\x02\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\xe9\x01\x00\x00\x00\x00\x00\x00\x16\x02\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00&\x02\x00\x00\x00\x00\x00\x00E\x02\x00\x00\x00\x00\x00\x00\x13\x02\x00\x00\x00\x00\x00\x00\x12\x02\x00\x00\x00\x00\x00\x00&\x02\x00\x00\x00\x00\x00\x00\x13\x02\x00\x00\x00\x00\x00\x00w\x00\x00\x00\x00\x00\x00\x00\x17\x02\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x00\x00\x00\x00\xce\x01\x00\x00\x00\x00\x00\x00\xc6\x01\x00\x00\x00\x00\x00\x00\xc4\x01\x00\x00\x00\x00\x00\x00&\x02\x00\x00\x00\x00\x00\x00\x12\x02\x00\x00\x00\x00\x00\x00\'\x02\x00\x00\x00\x00\x00\x00;\x02\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\x00\x00\x00\x00i\x00\x00\x00\x00\x00\x00\x00 \x02\x00\x00\x00\x00\x00\x00v\x00\x00\x00\x00\x00\x00\x00u\x00\x00\x00\x00\x00\x00\x00,\x02\x00\x00\x00\x00\x00\x00=\x02\x00\x00\x00\x00\x00\x00\x1f\x02\x00\x00\x00\x00\x00\x00\x1f\x02\x00\x00\x00\x00\x00\x00t\x00\x00\x00\x00\x00\x00\x00,\x02\x00\x00\x00\x00\x00\x00=\x02\x00\x00\x00\x00\x00\x00,\x02\x00\x00\x00\x00\x00\x00\x1c\x02\x00\x00\x00\x00\x00\x00\xd3\x01\x00\x00\x00\x00\x00\x00:\x02\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00,\x02\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x1c\x02\x00\x00\x00\x00\x00\x009\x02\x00\x00\x00\x00\x00\x00\x01\x02\x00\x00\x00\x00\x00\x00F\x02\x00\x00\x00\x00\x00\x00\xe8\x01\x00\x00\x00\x00\x00\x009\x02\x00\x00\x00\x00\x00\x00F\x02\x00\x00\x00\x00\x00\x00\x1f\x02\x00\x00\x00\x00\x00\x00 \x02\x00\x00\x00\x00\x00\x00u\x00\x00\x00\x00\x00\x00\x00\xf0\x01\x00\x00\x00\x00\x00\x00\xef\x01\x00\x00\x00\x00\x00\x00\xeb\x01\x00\x00\x00\x00\x00\x003\x02\x00\x00\x00\x00\x00\x00\x1d\x02\x00\x00\x00\x00\x00\x00F\x02\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\x00\x00\x00\x00j\x00\x00\x00\x00\x00\x00\x00i\x00\x00\x00\x00\x00\x00\x00\xe8\x01\x00\x00\x00\x00\x00\x00F\x02\x00\x00\x00\x00\x00\x00\x1d\x02\x00\x00\x00\x00\x00\x00;\x02\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00:\x02\x00\x00\x00\x00\x00\x00w\x00\x00\x00\x00\x00\x00\x00\x16\x02\x00\x00\x00\x00\x00\x00\x17\x02\x00\x00\x00\x00\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00G\x02\x00\x00\x00\x00\x00\x00\xc9\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xe9\x01\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00C\x02\x00\x00\x00\x00\x00\x00.\x02\x00\x00\x00\x00\x00\x00-\x02\x00\x00\x00\x00\x00\x00H\x02\x00\x00\x00\x00\x00\x003\x02\x00\x00\x00\x00\x00\x00F\x02\x00\x00\x00\x00\x00\x00C\x02\x00\x00\x00\x00\x00\x00-\x02\x00\x00\x00\x00\x00\x00|\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x12\x02\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x00\x00\x00\x00\xfb\x01\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x00\x00\x00\x00\xfb\x01\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x00\x00\x00\x00\xfd\x01\x00\x00\x00\x00\x00\x00\xd2\x01\x00\x00\x00\x00\x00\x00v\x00\x00\x00\x00\x00\x00\x00 \x02\x00\x00\x00\x00\x00\x00v\x00\x00\x00\x00\x00\x00\x00\xd2\x01\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xd2\x01\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xc8\x01\x00\x00\x00\x00\x00\x00\r\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x11\x02\x00\x00\x00\x00\x00\x00\xd8\x01\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x00\x00\x00\x00\x10\x02\x00\x00\x00\x00\x00\x00\xd8\x01\x00\x00\x00\x00\x00\x00\xfd\x01\x00\x00\x00\x00\x00\x00s\x00\x00\x00\x00\x00\x00\x00,\x02\x00\x00\x00\x00\x00\x00t\x00\x00\x00\x00\x00\x00\x00t\x00\x00\x00\x00\x00\x00\x00\x1f\x02\x00\x00\x00\x00\x00\x00u\x00\x00\x00\x00\x00\x00\x00C\x02\x00\x00\x00\x00\x00\x00{\x00\x00\x00\x00\x00\x00\x00\xf5\x01\x00\x00\x00\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\xd3\x01\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x18\x02\x00\x00\x00\x00\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00{\x00\x00\x00\x00\x00\x00\x00C\x02\x00\x00\x00\x00\x00\x00|\x00\x00\x00\x00\x00\x00\x000\x02\x00\x00\x00\x00\x00\x00\x08\x02\x00\x00\x00\x00\x00\x00I\x02\x00\x00\x00\x00\x00\x00\xcb\x01\x00\x00\x00\x00\x00\x00\xe6\x01\x00\x00\x00\x00\x00\x00\xe7\x01\x00\x00\x00\x00\x00\x00~\x00\x00\x00\x00\x00\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x00\xe7\x01\x00\x00\x00\x00\x00\x00\r\x02\x00\x00\x00\x00\x00\x00\xcb\x01\x00\x00\x00\x00\x00\x00=\x02\x00\x00\x00\x00\x00\x00!\x02\x00\x00\x00\x00\x00\x00\x1f\x02\x00\x00\x00\x00\x00\x008\x02\x00\x00\x00\x00\x00\x00\xcf\x01\x00\x00\x00\x00\x00\x00\xdc\x01\x00\x00\x00\x00\x00\x00<\x02\x00\x00\x00\x00\x00\x00\xde\x01\x00\x00\x00\x00\x00\x00%\x02\x00\x00\x00\x00\x00\x00\xd8\x01\x00\x00\x00\x00\x00\x00\xd9\x01\x00\x00\x00\x00\x00\x00\xfd\x01\x00\x00\x00\x00\x00\x00D\x02\x00\x00\x00\x00\x00\x00\xda\x01\x00\x00\x00\x00\x00\x00\xd8\x01\x00\x00\x00\x00\x00\x00\xcb\x01\x00\x00\x00\x00\x00\x00\xf5\x01\x00\x00\x00\x00\x00\x00\xe6\x01\x00\x00\x00\x00\x00\x00z\x00\x00\x00\x00\x00\x00\x00\xe6\x01\x00\x00\x00\x00\x00\x00\xf5\x01\x00\x00\x00\x00\x00\x00\x16\x02\x00\x00\x00\x00\x00\x00w\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x16\x02\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00;\x02\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00;\x02\x00\x00\x00\x00\x00\x00i\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00B\x02\x00\x00\x00\x00\x00\x003\x02\x00\x00\x00\x00\x00\x001\x02\x00\x00\x00\x00\x00\x00\xdd\x01\x00\x00\x00\x00\x00\x00\xec\x01\x00\x00\x00\x00\x00\x00\xdc\x01\x00\x00\x00\x00\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00\x18\x02\x00\x00\x00\x00\x00\x00"\x02\x00\x00\x00\x00\x00\x00F\x02\x00\x00\x00\x00\x00\x00\x01\x02\x00\x00\x00\x00\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00+\x02\x00\x00\x00\x00\x00\x00\xed\x01\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00+\x02\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00J\x02\x00\x00\x00\x00\x00\x00\x0c\x02\x00\x00\x00\x00\x00\x00K\x02\x00\x00\x00\x00\x00\x00\x0c\x02\x00\x00\x00\x00\x00\x00?\x02\x00\x00\x00\x00\x00\x00K\x02\x00\x00\x00\x00\x00\x00#\x02\x00\x00\x00\x00\x00\x00\xe3\x01\x00\x00\x00\x00\x00\x00\xe4\x01\x00\x00\x00\x00\x00\x00\x08\x02\x00\x00\x00\x00\x00\x00\xfe\x01\x00\x00\x00\x00\x00\x00I\x02\x00\x00\x00\x00\x00\x00C\x02\x00\x00\x00\x00\x00\x00\xf4\x01\x00\x00\x00\x00\x00\x00B\x02\x00\x00\x00\x00\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00H\x02\x00\x00\x00\x00\x00\x00F\x02\x00\x00\x00\x00\x00\x001\x02\x00\x00\x00\x00\x00\x003\x02\x00\x00\x00\x00\x00\x004\x02\x00\x00\x00\x00\x00\x00\x0e\x02\x00\x00\x00\x00\x00\x00\x1e\x02\x00\x00\x00\x00\x00\x00\xef\x01\x00\x00\x00\x00\x00\x00L\x02\x00\x00\x00\x00\x00\x00\xe1\x01\x00\x00\x00\x00\x00\x00M\x02\x00\x00\x00\x00\x00\x00M\x02\x00\x00\x00\x00\x00\x00*\x02\x00\x00\x00\x00\x00\x00\x15\x02\x00\x00\x00\x00\x00\x00*\x02\x00\x00\x00\x00\x00\x00M\x02\x00\x00\x00\x00\x00\x00\xe1\x01\x00\x00\x00\x00\x00\x00B\x02\x00\x00\x00\x00\x00\x001\x02\x00\x00\x00\x00\x00\x00.\x02\x00\x00\x00\x00\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00\xc9\x01\x00\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x00%\x02\x00\x00\x00\x00\x00\x00(\x02\x00\x00\x00\x00\x00\x00<\x02\x00\x00\x00\x00\x00\x00\xc9\x01\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x1b\x02\x00\x00\x00\x00\x00\x00\x19\x02\x00\x00\x00\x00\x00\x00\xf2\x01\x00\x00\x00\x00\x00\x00\x19\x02\x00\x00\x00\x00\x00\x00p\x00\x00\x00\x00\x00\x00\x00\xf2\x01\x00\x00\x00\x00\x00\x00>\x02\x00\x00\x00\x00\x00\x00\x05\x02\x00\x00\x00\x00\x00\x00\x04\x02\x00\x00\x00\x00\x00\x00\xd5\x01\x00\x00\x00\x00\x00\x00\xed\x01\x00\x00\x00\x00\x00\x00\x02\x02\x00\x00\x00\x00\x00\x006\x02\x00\x00\x00\x00\x00\x00\x05\x02\x00\x00\x00\x00\x00\x00>\x02\x00\x00\x00\x00\x00\x00\xed\x01\x00\x00\x00\x00\x00\x00\xd5\x01\x00\x00\x00\x00\x00\x00\xd6\x01\x00\x00\x00\x00\x00\x00p\x00\x00\x00\x00\x00\x00\x00\x19\x02\x00\x00\x00\x00\x00\x00q\x00\x00\x00\x00\x00\x00\x00M\x02\x00\x00\x00\x00\x00\x00\xf3\x01\x00\x00\x00\x00\x00\x00L\x02\x00\x00\x00\x00\x00\x00\x14\x02\x00\x00\x00\x00\x00\x00\xf3\x01\x00\x00\x00\x00\x00\x00M\x02\x00\x00\x00\x00\x00\x00\xdf\x01\x00\x00\x00\x00\x00\x00\x1a\x02\x00\x00\x00\x00\x00\x00\x1b\x02\x00\x00\x00\x00\x00\x00L\x02\x00\x00\x00\x00\x00\x00\xf3\x01\x00\x00\x00\x00\x00\x00n\x00\x00\x00\x00\x00\x00\x00?\x02\x00\x00\x00\x00\x00\x00<\x02\x00\x00\x00\x00\x00\x00(\x02\x00\x00\x00\x00\x00\x00n\x00\x00\x00\x00\x00\x00\x00\xf3\x01\x00\x00\x00\x00\x00\x00o\x00\x00\x00\x00\x00\x00\x00%\x02\x00\x00\x00\x00\x00\x00\xdf\x01\x00\x00\x00\x00\x00\x00\x1b\x02\x00\x00\x00\x00\x00\x00E\x02\x00\x00\x00\x00\x00\x00\xf2\x01\x00\x00\x00\x00\x00\x00\xf3\x01\x00\x00\x00\x00\x00\x00E\x02\x00\x00\x00\x00\x00\x00\xf3\x01\x00\x00\x00\x00\x00\x00\x14\x02\x00\x00\x00\x00\x00\x00\xdf\x01\x00\x00\x00\x00\x00\x00%\x02\x00\x00\x00\x00\x00\x00\xde\x01\x00\x00\x00\x00\x00\x00?\x02\x00\x00\x00\x00\x00\x00>\x02\x00\x00\x00\x00\x00\x00<\x02\x00\x00\x00\x00\x00\x00J\x02\x00\x00\x00\x00\x00\x00N\x02\x00\x00\x00\x00\x00\x00"\x02\x00\x00\x00\x00\x00\x00\xf1\x01\x00\x00\x00\x00\x00\x006\x02\x00\x00\x00\x00\x00\x00O\x02\x00\x00\x00\x00\x00\x00N\x02\x00\x00\x00\x00\x00\x00\t\x02\x00\x00\x00\x00\x00\x00"\x02\x00\x00\x00\x00\x00\x00\x04\x02\x00\x00\x00\x00\x00\x00\x02\x02\x00\x00\x00\x00\x00\x00\x1c\x02\x00\x00\x00\x00\x00\x00\xdd\x01\x00\x00\x00\x00\x00\x00P\x02\x00\x00\x00\x00\x00\x00\xec\x01\x00\x00\x00\x00\x00\x00P\x02\x00\x00\x00\x00\x00\x00\xea\x01\x00\x00\x00\x00\x00\x00\xec\x01\x00\x00\x00\x00\x00\x00\xf1\x01\x00\x00\x00\x00\x00\x00\xee\x01\x00\x00\x00\x00\x00\x00\xd7\x01\x00\x00\x00\x00\x00\x00\xee\x01\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xd7\x01\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xee\x01\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x1a\x02\x00\x00\x00\x00\x00\x00q\x00\x00\x00\x00\x00\x00\x00\x19\x02\x00\x00\x00\x00\x00\x00\x12\x02\x00\x00\x00\x00\x00\x00\xfa\x01\x00\x00\x00\x00\x00\x00\'\x02\x00\x00\x00\x00\x00\x00q\x00\x00\x00\x00\x00\x00\x00\x1a\x02\x00\x00\x00\x00\x00\x00r\x00\x00\x00\x00\x00\x00\x00J\x02\x00\x00\x00\x00\x00\x00K\x02\x00\x00\x00\x00\x00\x00\xfa\x01\x00\x00\x00\x00\x00\x00\t\x02\x00\x00\x00\x00\x00\x00\x08\x02\x00\x00\x00\x00\x00\x004\x02\x00\x00\x00\x00\x00\x00K\x02\x00\x00\x00\x00\x00\x00\'\x02\x00\x00\x00\x00\x00\x00\xfa\x01\x00\x00\x00\x00\x00\x00\x1e\x02\x00\x00\x00\x00\x00\x00\x0e\x02\x00\x00\x00\x00\x00\x00\xda\x01\x00\x00\x00\x00\x00\x00\x08\x02\x00\x00\x00\x00\x00\x000\x02\x00\x00\x00\x00\x00\x004\x02\x00\x00\x00\x00\x00\x00\t\x02\x00\x00\x00\x00\x00\x004\x02\x00\x00\x00\x00\x00\x005\x02\x00\x00\x00\x00\x00\x00\xea\x01\x00\x00\x00\x00\x00\x00P\x02\x00\x00\x00\x00\x00\x00\r\x02\x00\x00\x00\x00\x00\x00\xc9\x01\x00\x00\x00\x00\x00\x00\x0f\x02\x00\x00\x00\x00\x00\x00\xca\x01\x00\x00\x00\x00\x00\x00\xd0\x01\x00\x00\x00\x00\x00\x00#\x02\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x07\x02\x00\x00\x00\x00\x00\x00\xfb\x01\x00\x00\x00\x00\x00\x00\xfc\x01\x00\x00\x00\x00\x00\x00\x07\x02\x00\x00\x00\x00\x00\x00\t\x02\x00\x00\x00\x00\x00\x00N\x02\x00\x00\x00\x00\x00\x00\x0f\x02\x00\x00\x00\x00\x00\x00\xc9\x01\x00\x00\x00\x00\x00\x00G\x02\x00\x00\x00\x00\x00\x00\xfb\x01\x00\x00\x00\x00\x00\x00\x07\x02\x00\x00\x00\x00\x00\x00N\x02\x00\x00\x00\x00\x00\x00\x12\x02\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\xfa\x01\x00\x00\x00\x00\x00\x00\xf6\x01\x00\x00\x00\x00\x00\x00~\x00\x00\x00\x00\x00\x00\x00}\x00\x00\x00\x00\x00\x00\x00?\x02\x00\x00\x00\x00\x00\x00(\x02\x00\x00\x00\x00\x00\x00K\x02\x00\x00\x00\x00\x00\x00\t\x02\x00\x00\x00\x00\x00\x005\x02\x00\x00\x00\x00\x00\x00"\x02\x00\x00\x00\x00\x00\x00(\x02\x00\x00\x00\x00\x00\x00\'\x02\x00\x00\x00\x00\x00\x00K\x02\x00\x00\x00\x00\x00\x005\x02\x00\x00\x00\x00\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00"\x02\x00\x00\x00\x00\x00\x008\x02\x00\x00\x00\x00\x00\x00\xdc\x01\x00\x00\x00\x00\x00\x00\xec\x01\x00\x00\x00\x00\x00\x00E\x02\x00\x00\x00\x00\x00\x00&\x02\x00\x00\x00\x00\x00\x00\x1b\x02\x00\x00\x00\x00\x00\x00I\x02\x00\x00\x00\x00\x00\x00\xfe\x01\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00G\x02\x00\x00\x00\x00\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00/\x02\x00\x00\x00\x00\x00\x00\xf2\x01\x00\x00\x00\x00\x00\x00E\x02\x00\x00\x00\x00\x00\x00\x1b\x02\x00\x00\x00\x00\x00\x00G\x02\x00\x00\x00\x00\x00\x00I\x02\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00M\x02\x00\x00\x00\x00\x00\x00\x15\x02\x00\x00\x00\x00\x00\x00\x14\x02\x00\x00\x00\x00\x00\x00/\x02\x00\x00\x00\x00\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00\xf6\x01\x00\x00\x00\x00\x00\x00\xe2\x01\x00\x00\x00\x00\x00\x00A\x02\x00\x00\x00\x00\x00\x00\xe4\x01\x00\x00\x00\x00\x00\x00\xf1\x01\x00\x00\x00\x00\x00\x00O\x02\x00\x00\x00\x00\x00\x00\xe5\x01\x00\x00\x00\x00\x00\x00\xe2\x01\x00\x00\x00\x00\x00\x00\xe5\x01\x00\x00\x00\x00\x00\x00O\x02\x00\x00\x00\x00\x00\x00\xfe\x01\x00\x00\x00\x00\x00\x00\xd9\x01\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00A\x02\x00\x00\x00\x00\x00\x00\xe2\x01\x00\x00\x00\x00\x00\x00O\x02\x00\x00\x00\x00\x00\x00\x14\x02\x00\x00\x00\x00\x00\x00\x13\x02\x00\x00\x00\x00\x00\x00E\x02\x00\x00\x00\x00\x00\x00J\x02\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00N\x02\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00J\x02\x00\x00\x00\x00\x00\x00\xfa\x01\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\xfb\x01\x00\x00\x00\x00\x00\x00N\x02\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x0f\x02\x00\x00\x00\x00\x00\x00G\x02\x00\x00\x00\x00\x00\x00L\x02\x00\x00\x00\x00\x00\x00n\x00\x00\x00\x00\x00\x00\x00m\x00\x00\x00\x00\x00\x00\x00P\x02\x00\x00\x00\x00\x00\x00\xdd\x01\x00\x00\x00\x00\x00\x00\xe8\x01\x00\x00\x00\x00\x00\x00\xe1\x01\x00\x00\x00\x00\x00\x00L\x02\x00\x00\x00\x00\x00\x00m\x00\x00\x00\x00\x00\x00\x00\xfc\x01\x00\x00\x00\x00\x00\x00\xfb\x01\x00\x00\x00\x00\x00\x00\xfd\x01\x00\x00\x00\x00\x00\x00>\x02\x00\x00\x00\x00\x00\x00?\x02\x00\x00\x00\x00\x00\x00@\x02\x00\x00\x00\x00\x00\x000\x02\x00\x00\x00\x00\x00\x001\x02\x00\x00\x00\x00\x00\x004\x02\x00\x00\x00\x00\x00\x00J\x02\x00\x00\x00\x00\x00\x00\x0b\x02\x00\x00\x00\x00\x00\x00\x0c\x02\x00\x00\x00\x00\x00\x006\x02\x00\x00\x00\x00\x00\x00>\x02\x00\x00\x00\x00\x00\x00@\x02\x00\x00\x00\x00\x00\x00\x0e\x02\x00\x00\x00\x00\x00\x00\x0f\x02\x00\x00\x00\x00\x00\x00\xda\x01\x00\x00\x00\x00\x00\x00\x0b\x02\x00\x00\x00\x00\x00\x00J\x02\x00\x00\x00\x00\x00\x00"\x02\x00\x00\x00\x00\x00\x00r\x00\x00\x00\x00\x00\x00\x00$\x02\x00\x00\x00\x00\x00\x00s\x00\x00\x00\x00\x00\x00\x00.\x02\x00\x00\x00\x00\x00\x00/\x02\x00\x00\x00\x00\x00\x00\xf6\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xde\x01\x00\x00\x00\x00\x00\x00\x1c\x02\x00\x00\x00\x00\x00\x00}\x00\x00\x00\x00\x00\x00\x00-\x02\x00\x00\x00\x00\x00\x00\xf6\x01\x00\x00\x00\x00\x00\x00I\x02\x00\x00\x00\x00\x00\x00G\x02\x00\x00\x00\x00\x00\x00/\x02\x00\x00\x00\x00\x00\x00\x01\x02\x00\x00\x00\x00\x00\x009\x02\x00\x00\x00\x00\x00\x00\xd1\x01\x00\x00\x00\x00\x00\x00\x02\x02\x00\x00\x00\x00\x00\x00\x05\x02\x00\x00\x00\x00\x00\x00\xd5\x01\x00\x00\x00\x00\x00\x00$\x02\x00\x00\x00\x00\x00\x00r\x00\x00\x00\x00\x00\x00\x00\x1a\x02\x00\x00\x00\x00\x00\x00C\x02\x00\x00\x00\x00\x00\x00\xf5\x01\x00\x00\x00\x00\x00\x00\xf4\x01\x00\x00\x00\x00\x00\x009\x02\x00\x00\x00\x00\x00\x00\xdd\x01\x00\x00\x00\x00\x00\x00\xd1\x01\x00\x00\x00\x00\x00\x007\x02\x00\x00\x00\x00\x00\x00\xd7\x01\x00\x00\x00\x00\x00\x00\xd5\x01\x00\x00\x00\x00\x00\x006\x02\x00\x00\x00\x00\x00\x00@\x02\x00\x00\x00\x00\x00\x00O\x02\x00\x00\x00\x00\x00\x007\x02\x00\x00\x00\x00\x00\x006\x02\x00\x00\x00\x00\x00\x00\xf1\x01\x00\x00\x00\x00\x00\x00@\x02\x00\x00\x00\x00\x00\x00A\x02\x00\x00\x00\x00\x00\x00O\x02\x00\x00\x00\x00\x00\x00A\x02\x00\x00\x00\x00\x00\x00\n\x02\x00\x00\x00\x00\x00\x00\xe4\x01\x00\x00\x00\x00\x00\x00\xd7\x01\x00\x00\x00\x00\x00\x007\x02\x00\x00\x00\x00\x00\x00\xf1\x01\x00\x00\x00\x00\x00\x00-\x02\x00\x00\x00\x00\x00\x00}\x00\x00\x00\x00\x00\x00\x00|\x00\x00\x00\x00\x00\x00\x00\n\x02\x00\x00\x00\x00\x00\x00A\x02\x00\x00\x00\x00\x00\x00\x0c\x02\x00\x00\x00\x00\x00\x000\x02\x00\x00\x00\x00\x00\x00I\x02\x00\x00\x00\x00\x00\x00/\x02\x00\x00\x00\x00\x00\x00\xcd\x01\x00\x00\x00\x00\x00\x00\r\x02\x00\x00\x00\x00\x00\x00P\x02\x00\x00\x00\x00\x00\x00\r\x02\x00\x00\x00\x00\x00\x00\xcd\x01\x00\x00\x00\x00\x00\x00\xcb\x01\x00\x00\x00\x00\x00\x00\xe8\x01\x00\x00\x00\x00\x00\x00\xcd\x01\x00\x00\x00\x00\x00\x00P\x02\x00\x00\x00\x00\x00\x00H\x02\x00\x00\x00\x00\x00\x00\x06\x02\x00\x00\x00\x00\x00\x005\x02\x00\x00\x00\x00\x00\x003\x02\x00\x00\x00\x00\x00\x00H\x02\x00\x00\x00\x00\x00\x005\x02\x00\x00\x00\x00\x00\x00Q\x02\x00\x00\x00\x00\x00\x00S\x02\x00\x00\x00\x00\x00\x00R\x02\x00\x00\x00\x00\x00\x00R\x02\x00\x00\x00\x00\x00\x00S\x02\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00R\x02\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00T\x02\x00\x00\x00\x00\x00\x00V\x02\x00\x00\x00\x00\x00\x00U\x02\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00X\x02\x00\x00\x00\x00\x00\x00W\x02\x00\x00\x00\x00\x00\x00Y\x02\x00\x00\x00\x00\x00\x00[\x02\x00\x00\x00\x00\x00\x00Z\x02\x00\x00\x00\x00\x00\x00\\\x02\x00\x00\x00\x00\x00\x00^\x02\x00\x00\x00\x00\x00\x00]\x02\x00\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00S\x02\x00\x00\x00\x00\x00\x00_\x02\x00\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00_\x02\x00\x00\x00\x00\x00\x00\x97\x00\x00\x00\x00\x00\x00\x00`\x02\x00\x00\x00\x00\x00\x00b\x02\x00\x00\x00\x00\x00\x00a\x02\x00\x00\x00\x00\x00\x00Z\x02\x00\x00\x00\x00\x00\x00[\x02\x00\x00\x00\x00\x00\x00c\x02\x00\x00\x00\x00\x00\x00`\x02\x00\x00\x00\x00\x00\x00a\x02\x00\x00\x00\x00\x00\x00d\x02\x00\x00\x00\x00\x00\x00_\x02\x00\x00\x00\x00\x00\x00f\x02\x00\x00\x00\x00\x00\x00e\x02\x00\x00\x00\x00\x00\x00_\x02\x00\x00\x00\x00\x00\x00e\x02\x00\x00\x00\x00\x00\x00\x97\x00\x00\x00\x00\x00\x00\x00g\x02\x00\x00\x00\x00\x00\x00i\x02\x00\x00\x00\x00\x00\x00h\x02\x00\x00\x00\x00\x00\x00j\x02\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00k\x02\x00\x00\x00\x00\x00\x00k\x02\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00l\x02\x00\x00\x00\x00\x00\x00K\x00\x00\x00\x00\x00\x00\x00L\x00\x00\x00\x00\x00\x00\x00m\x02\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00n\x02\x00\x00\x00\x00\x00\x00p\x02\x00\x00\x00\x00\x00\x00o\x02\x00\x00\x00\x00\x00\x00h\x02\x00\x00\x00\x00\x00\x00i\x02\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x00\x00\x00\x00q\x02\x00\x00\x00\x00\x00\x00s\x02\x00\x00\x00\x00\x00\x00r\x02\x00\x00\x00\x00\x00\x00t\x02\x00\x00\x00\x00\x00\x00v\x02\x00\x00\x00\x00\x00\x00u\x02\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00w\x02\x00\x00\x00\x00\x00\x00X\x02\x00\x00\x00\x00\x00\x00u\x02\x00\x00\x00\x00\x00\x00v\x02\x00\x00\x00\x00\x00\x00x\x02\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00X\x02\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00y\x02\x00\x00\x00\x00\x00\x00Z\x02\x00\x00\x00\x00\x00\x00z\x02\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00|\x02\x00\x00\x00\x00\x00\x00{\x02\x00\x00\x00\x00\x00\x00Q\x02\x00\x00\x00\x00\x00\x00R\x02\x00\x00\x00\x00\x00\x00}\x02\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00{\x02\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00~\x02\x00\x00\x00\x00\x00\x00A\x00\x00\x00\x00\x00\x00\x00\x7f\x02\x00\x00\x00\x00\x00\x00\x7f\x02\x00\x00\x00\x00\x00\x00A\x00\x00\x00\x00\x00\x00\x00B\x00\x00\x00\x00\x00\x00\x00U\x02\x00\x00\x00\x00\x00\x00X\x02\x00\x00\x00\x00\x00\x00\x80\x02\x00\x00\x00\x00\x00\x00U\x02\x00\x00\x00\x00\x00\x00\x80\x02\x00\x00\x00\x00\x00\x00\x81\x02\x00\x00\x00\x00\x00\x00k\x02\x00\x00\x00\x00\x00\x00\x82\x02\x00\x00\x00\x00\x00\x00j\x02\x00\x00\x00\x00\x00\x00b\x02\x00\x00\x00\x00\x00\x00`\x02\x00\x00\x00\x00\x00\x00\x83\x02\x00\x00\x00\x00\x00\x00R\x02\x00\x00\x00\x00\x00\x00\x84\x02\x00\x00\x00\x00\x00\x00}\x02\x00\x00\x00\x00\x00\x00q\x02\x00\x00\x00\x00\x00\x00\x86\x02\x00\x00\x00\x00\x00\x00\x85\x02\x00\x00\x00\x00\x00\x00z\x02\x00\x00\x00\x00\x00\x00Z\x02\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00w\x02\x00\x00\x00\x00\x00\x00\x88\x02\x00\x00\x00\x00\x00\x00\x87\x02\x00\x00\x00\x00\x00\x00w\x02\x00\x00\x00\x00\x00\x00\x87\x02\x00\x00\x00\x00\x00\x00\x89\x02\x00\x00\x00\x00\x00\x00u\x02\x00\x00\x00\x00\x00\x00\x8b\x02\x00\x00\x00\x00\x00\x00\x8a\x02\x00\x00\x00\x00\x00\x00\x88\x02\x00\x00\x00\x00\x00\x00\x8c\x02\x00\x00\x00\x00\x00\x00\x87\x02\x00\x00\x00\x00\x00\x00\x8d\x02\x00\x00\x00\x00\x00\x00v\x02\x00\x00\x00\x00\x00\x00\x8e\x02\x00\x00\x00\x00\x00\x00\x8c\x02\x00\x00\x00\x00\x00\x00\x88\x02\x00\x00\x00\x00\x00\x00m\x02\x00\x00\x00\x00\x00\x00\x8f\x02\x00\x00\x00\x00\x00\x00\x90\x02\x00\x00\x00\x00\x00\x00g\x02\x00\x00\x00\x00\x00\x00\x87\x02\x00\x00\x00\x00\x00\x00\x8c\x02\x00\x00\x00\x00\x00\x00\x91\x02\x00\x00\x00\x00\x00\x00\x92\x02\x00\x00\x00\x00\x00\x00\x94\x02\x00\x00\x00\x00\x00\x00\x93\x02\x00\x00\x00\x00\x00\x00[\x02\x00\x00\x00\x00\x00\x00~\x02\x00\x00\x00\x00\x00\x00\x95\x02\x00\x00\x00\x00\x00\x00R\x02\x00\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x96\x02\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00S\x02\x00\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x97\x02\x00\x00\x00\x00\x00\x00\x99\x02\x00\x00\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x9a\x02\x00\x00\x00\x00\x00\x00b\x02\x00\x00\x00\x00\x00\x00\x9b\x02\x00\x00\x00\x00\x00\x00\x94\x02\x00\x00\x00\x00\x00\x00\x9d\x02\x00\x00\x00\x00\x00\x00\x9c\x02\x00\x00\x00\x00\x00\x00s\x02\x00\x00\x00\x00\x00\x00\x97\x02\x00\x00\x00\x00\x00\x00\x9e\x02\x00\x00\x00\x00\x00\x00\x9b\x02\x00\x00\x00\x00\x00\x00b\x02\x00\x00\x00\x00\x00\x00\x83\x02\x00\x00\x00\x00\x00\x00\x9f\x02\x00\x00\x00\x00\x00\x00\x9a\x02\x00\x00\x00\x00\x00\x00t\x02\x00\x00\x00\x00\x00\x00\x9f\x02\x00\x00\x00\x00\x00\x00t\x02\x00\x00\x00\x00\x00\x00\x8a\x02\x00\x00\x00\x00\x00\x00`\x02\x00\x00\x00\x00\x00\x00d\x02\x00\x00\x00\x00\x00\x00\xa0\x02\x00\x00\x00\x00\x00\x00\xa0\x02\x00\x00\x00\x00\x00\x00d\x02\x00\x00\x00\x00\x00\x00\x89\x02\x00\x00\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\xa1\x02\x00\x00\x00\x00\x00\x00\x97\x02\x00\x00\x00\x00\x00\x00\xa2\x02\x00\x00\x00\x00\x00\x00\xa3\x02\x00\x00\x00\x00\x00\x00\x9b\x02\x00\x00\x00\x00\x00\x00V\x02\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x82\x02\x00\x00\x00\x00\x00\x00k\x02\x00\x00\x00\x00\x00\x00\xa4\x02\x00\x00\x00\x00\x00\x00\x9b\x02\x00\x00\x00\x00\x00\x00\xa3\x02\x00\x00\x00\x00\x00\x00\x8e\x02\x00\x00\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\xa2\x02\x00\x00\x00\x00\x00\x00^\x02\x00\x00\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00^\x02\x00\x00\x00\x00\x00\x00\xa1\x02\x00\x00\x00\x00\x00\x00f\x02\x00\x00\x00\x00\x00\x00\xa5\x02\x00\x00\x00\x00\x00\x00e\x02\x00\x00\x00\x00\x00\x00e\x02\x00\x00\x00\x00\x00\x00\xa5\x02\x00\x00\x00\x00\x00\x00\x98\x00\x00\x00\x00\x00\x00\x00\x9e\x02\x00\x00\x00\x00\x00\x00\x97\x02\x00\x00\x00\x00\x00\x00\xa1\x02\x00\x00\x00\x00\x00\x00\x9c\x02\x00\x00\x00\x00\x00\x00\x9d\x02\x00\x00\x00\x00\x00\x00\xa6\x02\x00\x00\x00\x00\x00\x00Y\x02\x00\x00\x00\x00\x00\x00Z\x02\x00\x00\x00\x00\x00\x00y\x02\x00\x00\x00\x00\x00\x00\x92\x02\x00\x00\x00\x00\x00\x00\x93\x02\x00\x00\x00\x00\x00\x00J\x00\x00\x00\x00\x00\x00\x00}\x02\x00\x00\x00\x00\x00\x00\x82\x02\x00\x00\x00\x00\x00\x00\xa7\x02\x00\x00\x00\x00\x00\x00}\x02\x00\x00\x00\x00\x00\x00\xa7\x02\x00\x00\x00\x00\x00\x00Q\x02\x00\x00\x00\x00\x00\x00\xa8\x02\x00\x00\x00\x00\x00\x00\xaa\x02\x00\x00\x00\x00\x00\x00\xa9\x02\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00Q\x02\x00\x00\x00\x00\x00\x00\xa7\x02\x00\x00\x00\x00\x00\x00\xa8\x02\x00\x00\x00\x00\x00\x00\xa9\x02\x00\x00\x00\x00\x00\x00E\x00\x00\x00\x00\x00\x00\x00\xac\x02\x00\x00\x00\x00\x00\x00\xad\x02\x00\x00\x00\x00\x00\x00\x8b\x02\x00\x00\x00\x00\x00\x00\xae\x02\x00\x00\x00\x00\x00\x00\xb0\x02\x00\x00\x00\x00\x00\x00\xaf\x02\x00\x00\x00\x00\x00\x00\xb1\x02\x00\x00\x00\x00\x00\x00\x8b\x02\x00\x00\x00\x00\x00\x00\xad\x02\x00\x00\x00\x00\x00\x00x\x02\x00\x00\x00\x00\x00\x00\xac\x02\x00\x00\x00\x00\x00\x00\x8b\x02\x00\x00\x00\x00\x00\x00\x90\x02\x00\x00\x00\x00\x00\x00\xb2\x02\x00\x00\x00\x00\x00\x00\xa8\x02\x00\x00\x00\x00\x00\x00\x90\x02\x00\x00\x00\x00\x00\x00\xa8\x02\x00\x00\x00\x00\x00\x00F\x00\x00\x00\x00\x00\x00\x00u\x02\x00\x00\x00\x00\x00\x00x\x02\x00\x00\x00\x00\x00\x00\x8b\x02\x00\x00\x00\x00\x00\x00\xb3\x02\x00\x00\x00\x00\x00\x00\x85\x02\x00\x00\x00\x00\x00\x00\xa9\x02\x00\x00\x00\x00\x00\x00\xa9\x02\x00\x00\x00\x00\x00\x00\x85\x02\x00\x00\x00\x00\x00\x00D\x00\x00\x00\x00\x00\x00\x00\xb4\x02\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x00\x00\x00\x00\xb5\x02\x00\x00\x00\x00\x00\x00\xb6\x02\x00\x00\x00\x00\x00\x00{\x02\x00\x00\x00\x00\x00\x00c\x02\x00\x00\x00\x00\x00\x00\x82\x02\x00\x00\x00\x00\x00\x00\xa4\x02\x00\x00\x00\x00\x00\x00\xb7\x02\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\xba\x02\x00\x00\x00\x00\x00\x00\xb9\x02\x00\x00\x00\x00\x00\x00\x82\x02\x00\x00\x00\x00\x00\x00\xb7\x02\x00\x00\x00\x00\x00\x00\xa7\x02\x00\x00\x00\x00\x00\x00\x8c\x02\x00\x00\x00\x00\x00\x00\xbb\x02\x00\x00\x00\x00\x00\x00\x91\x02\x00\x00\x00\x00\x00\x00\xbc\x02\x00\x00\x00\x00\x00\x00\xb9\x02\x00\x00\x00\x00\x00\x00\xba\x02\x00\x00\x00\x00\x00\x00\xbc\x02\x00\x00\x00\x00\x00\x00\xbd\x02\x00\x00\x00\x00\x00\x00\xb9\x02\x00\x00\x00\x00\x00\x00c\x02\x00\x00\x00\x00\x00\x00[\x02\x00\x00\x00\x00\x00\x00\xbe\x02\x00\x00\x00\x00\x00\x00\x86\x02\x00\x00\x00\x00\x00\x00q\x02\x00\x00\x00\x00\x00\x00\x7f\x02\x00\x00\x00\x00\x00\x00c\x02\x00\x00\x00\x00\x00\x00\xbe\x02\x00\x00\x00\x00\x00\x00\xb6\x02\x00\x00\x00\x00\x00\x00\x7f\x02\x00\x00\x00\x00\x00\x00B\x00\x00\x00\x00\x00\x00\x00\x86\x02\x00\x00\x00\x00\x00\x00\x86\x02\x00\x00\x00\x00\x00\x00B\x00\x00\x00\x00\x00\x00\x00C\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00W\x02\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\xaf\x02\x00\x00\x00\x00\x00\x00\xb0\x02\x00\x00\x00\x00\x00\x00l\x02\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00W\x02\x00\x00\x00\x00\x00\x00V\x02\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xa7\x02\x00\x00\x00\x00\x00\x00\xbf\x02\x00\x00\x00\x00\x00\x00\xbf\x02\x00\x00\x00\x00\x00\x00\xa7\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00q\x02\x00\x00\x00\x00\x00\x00r\x02\x00\x00\x00\x00\x00\x00\x7f\x02\x00\x00\x00\x00\x00\x00\xc1\x02\x00\x00\x00\x00\x00\x00\xc2\x02\x00\x00\x00\x00\x00\x00f\x02\x00\x00\x00\x00\x00\x00\xc2\x02\x00\x00\x00\x00\x00\x00\xa5\x02\x00\x00\x00\x00\x00\x00f\x02\x00\x00\x00\x00\x00\x00\xc3\x02\x00\x00\x00\x00\x00\x00\x96\x02\x00\x00\x00\x00\x00\x00\xc4\x02\x00\x00\x00\x00\x00\x00\x9e\x02\x00\x00\x00\x00\x00\x00\xa1\x02\x00\x00\x00\x00\x00\x00\xc5\x02\x00\x00\x00\x00\x00\x00]\x02\x00\x00\x00\x00\x00\x00\x91\x02\x00\x00\x00\x00\x00\x00\\\x02\x00\x00\x00\x00\x00\x00o\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\xc6\x02\x00\x00\x00\x00\x00\x00\xc1\x02\x00\x00\x00\x00\x00\x00f\x02\x00\x00\x00\x00\x00\x00\xc7\x02\x00\x00\x00\x00\x00\x00\x9d\x02\x00\x00\x00\x00\x00\x00\xb0\x02\x00\x00\x00\x00\x00\x00\xc8\x02\x00\x00\x00\x00\x00\x00\x91\x02\x00\x00\x00\x00\x00\x00\xbb\x02\x00\x00\x00\x00\x00\x00\\\x02\x00\x00\x00\x00\x00\x00\x9d\x02\x00\x00\x00\x00\x00\x00\xc8\x02\x00\x00\x00\x00\x00\x00\xa6\x02\x00\x00\x00\x00\x00\x00\x96\x02\x00\x00\x00\x00\x00\x00\xc3\x02\x00\x00\x00\x00\x00\x00\x84\x02\x00\x00\x00\x00\x00\x00R\x02\x00\x00\x00\x00\x00\x00\x96\x02\x00\x00\x00\x00\x00\x00\x84\x02\x00\x00\x00\x00\x00\x00\x92\x02\x00\x00\x00\x00\x00\x00K\x00\x00\x00\x00\x00\x00\x00l\x02\x00\x00\x00\x00\x00\x00l\x02\x00\x00\x00\x00\x00\x00\xb0\x02\x00\x00\x00\x00\x00\x00\x92\x02\x00\x00\x00\x00\x00\x00\xc7\x02\x00\x00\x00\x00\x00\x00\xc9\x02\x00\x00\x00\x00\x00\x00\xc1\x02\x00\x00\x00\x00\x00\x00\xc1\x02\x00\x00\x00\x00\x00\x00\xc9\x02\x00\x00\x00\x00\x00\x00\xca\x02\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00Z\x02\x00\x00\x00\x00\x00\x00|\x02\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00|\x02\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x92\x02\x00\x00\x00\x00\x00\x00\xb0\x02\x00\x00\x00\x00\x00\x00\x9d\x02\x00\x00\x00\x00\x00\x00j\x02\x00\x00\x00\x00\x00\x00\x82\x02\x00\x00\x00\x00\x00\x00\x84\x02\x00\x00\x00\x00\x00\x00T\x02\x00\x00\x00\x00\x00\x00\xcb\x02\x00\x00\x00\x00\x00\x00\xc6\x02\x00\x00\x00\x00\x00\x00\x94\x02\x00\x00\x00\x00\x00\x00\x92\x02\x00\x00\x00\x00\x00\x00\x9d\x02\x00\x00\x00\x00\x00\x00\xcc\x02\x00\x00\x00\x00\x00\x00V\x02\x00\x00\x00\x00\x00\x00T\x02\x00\x00\x00\x00\x00\x00\xcc\x02\x00\x00\x00\x00\x00\x00T\x02\x00\x00\x00\x00\x00\x00\xc6\x02\x00\x00\x00\x00\x00\x00\xa4\x02\x00\x00\x00\x00\x00\x00\xcc\x02\x00\x00\x00\x00\x00\x00\xc6\x02\x00\x00\x00\x00\x00\x00\xcc\x02\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00V\x02\x00\x00\x00\x00\x00\x00\x90\x02\x00\x00\x00\x00\x00\x00\x8f\x02\x00\x00\x00\x00\x00\x00\xb2\x02\x00\x00\x00\x00\x00\x00\x9e\x02\x00\x00\x00\x00\x00\x00\xc5\x02\x00\x00\x00\x00\x00\x00\xcd\x02\x00\x00\x00\x00\x00\x00\xbb\x02\x00\x00\x00\x00\x00\x00\xc5\x02\x00\x00\x00\x00\x00\x00\\\x02\x00\x00\x00\x00\x00\x00\xc5\x02\x00\x00\x00\x00\x00\x00\xbb\x02\x00\x00\x00\x00\x00\x00\xcd\x02\x00\x00\x00\x00\x00\x00\x99\x02\x00\x00\x00\x00\x00\x00\xaa\x02\x00\x00\x00\x00\x00\x00\xce\x02\x00\x00\x00\x00\x00\x00\xc5\x02\x00\x00\x00\x00\x00\x00\xa1\x02\x00\x00\x00\x00\x00\x00\\\x02\x00\x00\x00\x00\x00\x00\xb2\x02\x00\x00\x00\x00\x00\x00\xce\x02\x00\x00\x00\x00\x00\x00\xaa\x02\x00\x00\x00\x00\x00\x00\x99\x02\x00\x00\x00\x00\x00\x00\xce\x02\x00\x00\x00\x00\x00\x00\xcf\x02\x00\x00\x00\x00\x00\x00\xb5\x02\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x00\x00\x00\x00j\x02\x00\x00\x00\x00\x00\x00\x84\x02\x00\x00\x00\x00\x00\x00\xc3\x02\x00\x00\x00\x00\x00\x00\x97\x02\x00\x00\x00\x00\x00\x00s\x02\x00\x00\x00\x00\x00\x00q\x02\x00\x00\x00\x00\x00\x00Y\x02\x00\x00\x00\x00\x00\x00~\x02\x00\x00\x00\x00\x00\x00[\x02\x00\x00\x00\x00\x00\x00\xc3\x02\x00\x00\x00\x00\x00\x00"\x00\x00\x00\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\xb7\x02\x00\x00\x00\x00\x00\x00\xc6\x02\x00\x00\x00\x00\x00\x00\xb7\x02\x00\x00\x00\x00\x00\x00\xa4\x02\x00\x00\x00\x00\x00\x00\xc6\x02\x00\x00\x00\x00\x00\x00\xb7\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\xa7\x02\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00Z\x02\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\xd0\x02\x00\x00\x00\x00\x00\x00\xd1\x02\x00\x00\x00\x00\x00\x00g\x02\x00\x00\x00\x00\x00\x00\xaf\x02\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x00\x00_\x02\x00\x00\x00\x00\x00\x00S\x02\x00\x00\x00\x00\x00\x00Q\x02\x00\x00\x00\x00\x00\x00_\x02\x00\x00\x00\x00\x00\x00Q\x02\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc4\x02\x00\x00\x00\x00\x00\x00\x96\x02\x00\x00\x00\x00\x00\x00\x93\x00\x00\x00\x00\x00\x00\x00j\x02\x00\x00\x00\x00\x00\x00\xc3\x02\x00\x00\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00\x00I\x00\x00\x00\x00\x00\x00\x00h\x02\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x00\x00\x00\x00\xd1\x02\x00\x00\x00\x00\x00\x00\xd0\x02\x00\x00\x00\x00\x00\x00\xb9\x02\x00\x00\x00\x00\x00\x00\xb4\x02\x00\x00\x00\x00\x00\x00\xc8\x02\x00\x00\x00\x00\x00\x00\xae\x02\x00\x00\x00\x00\x00\x00\xae\x02\x00\x00\x00\x00\x00\x00\xaf\x02\x00\x00\x00\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x00\x00\xae\x02\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x00\x00\x00\x00\xb4\x02\x00\x00\x00\x00\x00\x00\xbd\x02\x00\x00\x00\x00\x00\x00\xd1\x02\x00\x00\x00\x00\x00\x00\xb9\x02\x00\x00\x00\x00\x00\x00\x96\x02\x00\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x93\x00\x00\x00\x00\x00\x00\x00\x84\x02\x00\x00\x00\x00\x00\x00\x82\x02\x00\x00\x00\x00\x00\x00}\x02\x00\x00\x00\x00\x00\x00\xc8\x02\x00\x00\x00\x00\x00\x00\xb4\x02\x00\x00\x00\x00\x00\x00\xa6\x02\x00\x00\x00\x00\x00\x00\xb4\x02\x00\x00\x00\x00\x00\x00\xd2\x02\x00\x00\x00\x00\x00\x00\xa6\x02\x00\x00\x00\x00\x00\x00\xc4\x02\x00\x00\x00\x00\x00\x00"\x00\x00\x00\x00\x00\x00\x00\xc3\x02\x00\x00\x00\x00\x00\x00\xc2\x02\x00\x00\x00\x00\x00\x00\xc1\x02\x00\x00\x00\x00\x00\x00\xd3\x02\x00\x00\x00\x00\x00\x00\xc1\x02\x00\x00\x00\x00\x00\x00\xca\x02\x00\x00\x00\x00\x00\x00\xd3\x02\x00\x00\x00\x00\x00\x00o\x02\x00\x00\x00\x00\x00\x00p\x02\x00\x00\x00\x00\x00\x00\xc9\x02\x00\x00\x00\x00\x00\x00\xc9\x02\x00\x00\x00\x00\x00\x00p\x02\x00\x00\x00\x00\x00\x00\xca\x02\x00\x00\x00\x00\x00\x00\xca\x02\x00\x00\x00\x00\x00\x00p\x02\x00\x00\x00\x00\x00\x00\x9f\x02\x00\x00\x00\x00\x00\x00p\x02\x00\x00\x00\x00\x00\x00\xd4\x02\x00\x00\x00\x00\x00\x00\x9f\x02\x00\x00\x00\x00\x00\x00m\x02\x00\x00\x00\x00\x00\x00{\x02\x00\x00\x00\x00\x00\x00\xd5\x02\x00\x00\x00\x00\x00\x00\x8d\x02\x00\x00\x00\x00\x00\x00\xbc\x02\x00\x00\x00\x00\x00\x00v\x02\x00\x00\x00\x00\x00\x00x\x02\x00\x00\x00\x00\x00\x00v\x02\x00\x00\x00\x00\x00\x00\xbc\x02\x00\x00\x00\x00\x00\x00\x8d\x02\x00\x00\x00\x00\x00\x00\xbd\x02\x00\x00\x00\x00\x00\x00\xbc\x02\x00\x00\x00\x00\x00\x00\xd4\x02\x00\x00\x00\x00\x00\x00a\x02\x00\x00\x00\x00\x00\x00b\x02\x00\x00\x00\x00\x00\x00\xd5\x02\x00\x00\x00\x00\x00\x00{\x02\x00\x00\x00\x00\x00\x00\xb6\x02\x00\x00\x00\x00\x00\x00\x99\x02\x00\x00\x00\x00\x00\x00\xcf\x02\x00\x00\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00_\x02\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00f\x02\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x00\x00\x00\x00\xae\x02\x00\x00\x00\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x00\x00\xc7\x02\x00\x00\x00\x00\x00\x00f\x02\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00j\x02\x00\x00\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00\x00l\x02\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\xaf\x02\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00l\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\xc8\x02\x00\x00\x00\x00\x00\x00\xb0\x02\x00\x00\x00\x00\x00\x00\xae\x02\x00\x00\x00\x00\x00\x00l\x02\x00\x00\x00\x00\x00\x00L\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00d\x02\x00\x00\x00\x00\x00\x00a\x02\x00\x00\x00\x00\x00\x00\xd6\x02\x00\x00\x00\x00\x00\x00a\x02\x00\x00\x00\x00\x00\x00\xd4\x02\x00\x00\x00\x00\x00\x00\xd6\x02\x00\x00\x00\x00\x00\x00\xb9\x02\x00\x00\x00\x00\x00\x00\xd0\x02\x00\x00\x00\x00\x00\x00\x9c\x02\x00\x00\x00\x00\x00\x00\xbe\x02\x00\x00\x00\x00\x00\x00\x95\x02\x00\x00\x00\x00\x00\x00\xcd\x02\x00\x00\x00\x00\x00\x00\xb6\x02\x00\x00\x00\x00\x00\x00\xbe\x02\x00\x00\x00\x00\x00\x00\xcd\x02\x00\x00\x00\x00\x00\x00\x95\x02\x00\x00\x00\x00\x00\x00\xbe\x02\x00\x00\x00\x00\x00\x00[\x02\x00\x00\x00\x00\x00\x00\xcd\x02\x00\x00\x00\x00\x00\x00\xbb\x02\x00\x00\x00\x00\x00\x00\xb6\x02\x00\x00\x00\x00\x00\x00\xcd\x02\x00\x00\x00\x00\x00\x00\x95\x02\x00\x00\x00\x00\x00\x00\x9e\x02\x00\x00\x00\x00\x00\x00\xb9\x02\x00\x00\x00\x00\x00\x00\x9c\x02\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00w\x02\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xac\x02\x00\x00\x00\x00\x00\x00x\x02\x00\x00\x00\x00\x00\x00\xba\x02\x00\x00\x00\x00\x00\x00\xc4\x02\x00\x00\x00\x00\x00\x00\x93\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00"\x00\x00\x00\x00\x00\x00\x00\xc4\x02\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xad\x02\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\xd7\x02\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00\xd7\x02\x00\x00\x00\x00\x00\x00q\x02\x00\x00\x00\x00\x00\x00\x85\x02\x00\x00\x00\x00\x00\x00\xb3\x02\x00\x00\x00\x00\x00\x00K\x00\x00\x00\x00\x00\x00\x00\x92\x02\x00\x00\x00\x00\x00\x00J\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\x9b\x00\x00\x00\x00\x00\x00\x00\x8f\x02\x00\x00\x00\x00\x00\x00\xd1\x02\x00\x00\x00\x00\x00\x00\xd9\x02\x00\x00\x00\x00\x00\x00\xce\x02\x00\x00\x00\x00\x00\x00\xb2\x02\x00\x00\x00\x00\x00\x00\xd9\x02\x00\x00\x00\x00\x00\x00\xd9\x02\x00\x00\x00\x00\x00\x00\xb2\x02\x00\x00\x00\x00\x00\x00\x8f\x02\x00\x00\x00\x00\x00\x00\xda\x02\x00\x00\x00\x00\x00\x00\xdb\x02\x00\x00\x00\x00\x00\x00\xac\x02\x00\x00\x00\x00\x00\x00\xba\x02\x00\x00\x00\x00\x00\x00\xda\x02\x00\x00\x00\x00\x00\x00\xac\x02\x00\x00\x00\x00\x00\x00U\x02\x00\x00\x00\x00\x00\x00\xcb\x02\x00\x00\x00\x00\x00\x00T\x02\x00\x00\x00\x00\x00\x00\xcb\x02\x00\x00\x00\x00\x00\x00U\x02\x00\x00\x00\x00\x00\x00\x81\x02\x00\x00\x00\x00\x00\x00\xcf\x02\x00\x00\x00\x00\x00\x00\xce\x02\x00\x00\x00\x00\x00\x00\xa3\x02\x00\x00\x00\x00\x00\x00\xd1\x02\x00\x00\x00\x00\x00\x00\xbd\x02\x00\x00\x00\x00\x00\x00\xd9\x02\x00\x00\x00\x00\x00\x00h\x02\x00\x00\x00\x00\x00\x00\xd0\x02\x00\x00\x00\x00\x00\x00g\x02\x00\x00\x00\x00\x00\x00\xd0\x02\x00\x00\x00\x00\x00\x00\x94\x02\x00\x00\x00\x00\x00\x00\x9c\x02\x00\x00\x00\x00\x00\x00\x94\x02\x00\x00\x00\x00\x00\x00\xd0\x02\x00\x00\x00\x00\x00\x00h\x02\x00\x00\x00\x00\x00\x00~\x02\x00\x00\x00\x00\x00\x00Y\x02\x00\x00\x00\x00\x00\x00A\x00\x00\x00\x00\x00\x00\x00\xb3\x02\x00\x00\x00\x00\x00\x00\xa9\x02\x00\x00\x00\x00\x00\x00\xaa\x02\x00\x00\x00\x00\x00\x00\x89\x02\x00\x00\x00\x00\x00\x00d\x02\x00\x00\x00\x00\x00\x00\x81\x02\x00\x00\x00\x00\x00\x00E\x00\x00\x00\x00\x00\x00\x00\xa9\x02\x00\x00\x00\x00\x00\x00D\x00\x00\x00\x00\x00\x00\x00y\x02\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00Y\x02\x00\x00\x00\x00\x00\x00Y\x02\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00A\x00\x00\x00\x00\x00\x00\x00\xa0\x02\x00\x00\x00\x00\x00\x00\x91\x02\x00\x00\x00\x00\x00\x00]\x02\x00\x00\x00\x00\x00\x00\xa0\x02\x00\x00\x00\x00\x00\x00]\x02\x00\x00\x00\x00\x00\x00`\x02\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\xdc\x02\x00\x00\x00\x00\x00\x00\xba\x02\x00\x00\x00\x00\x00\x00\x97\x02\x00\x00\x00\x00\x00\x00q\x02\x00\x00\x00\x00\x00\x00\xb3\x02\x00\x00\x00\x00\x00\x00n\x02\x00\x00\x00\x00\x00\x00\xcb\x02\x00\x00\x00\x00\x00\x00\xd6\x02\x00\x00\x00\x00\x00\x00\xd4\x02\x00\x00\x00\x00\x00\x00p\x02\x00\x00\x00\x00\x00\x00n\x02\x00\x00\x00\x00\x00\x00\xd4\x02\x00\x00\x00\x00\x00\x00n\x02\x00\x00\x00\x00\x00\x00\xd6\x02\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x88\x02\x00\x00\x00\x00\x00\x00w\x02\x00\x00\x00\x00\x00\x00\xb5\x02\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x00\x00\x00\x00\xdd\x02\x00\x00\x00\x00\x00\x00\xb5\x02\x00\x00\x00\x00\x00\x00\xd2\x02\x00\x00\x00\x00\x00\x00\xb4\x02\x00\x00\x00\x00\x00\x00\xa3\x02\x00\x00\x00\x00\x00\x00\xd9\x02\x00\x00\x00\x00\x00\x00\x8d\x02\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00y\x02\x00\x00\x00\x00\x00\x00?\x00\x00\x00\x00\x00\x00\x00\xd9\x02\x00\x00\x00\x00\x00\x00\xa3\x02\x00\x00\x00\x00\x00\x00\xce\x02\x00\x00\x00\x00\x00\x00\xdc\x02\x00\x00\x00\x00\x00\x00\xda\x02\x00\x00\x00\x00\x00\x00\xba\x02\x00\x00\x00\x00\x00\x00\xd9\x02\x00\x00\x00\x00\x00\x00\xbd\x02\x00\x00\x00\x00\x00\x00\x8d\x02\x00\x00\x00\x00\x00\x00\xdc\x02\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\xa6\x02\x00\x00\x00\x00\x00\x00\x99\x02\x00\x00\x00\x00\x00\x00\xb3\x02\x00\x00\x00\x00\x00\x00\xaa\x02\x00\x00\x00\x00\x00\x00\xcf\x02\x00\x00\x00\x00\x00\x00\xa3\x02\x00\x00\x00\x00\x00\x00\xa2\x02\x00\x00\x00\x00\x00\x00\x8f\x02\x00\x00\x00\x00\x00\x00g\x02\x00\x00\x00\x00\x00\x00\xd1\x02\x00\x00\x00\x00\x00\x00\xdc\x02\x00\x00\x00\x00\x00\x00\xd2\x02\x00\x00\x00\x00\x00\x00\xda\x02\x00\x00\x00\x00\x00\x00]\x02\x00\x00\x00\x00\x00\x00\x83\x02\x00\x00\x00\x00\x00\x00`\x02\x00\x00\x00\x00\x00\x00\x83\x02\x00\x00\x00\x00\x00\x00]\x02\x00\x00\x00\x00\x00\x00^\x02\x00\x00\x00\x00\x00\x00\xd2\x02\x00\x00\x00\x00\x00\x00\xdc\x02\x00\x00\x00\x00\x00\x00\xa6\x02\x00\x00\x00\x00\x00\x00\x99\x02\x00\x00\x00\x00\x00\x00\x97\x02\x00\x00\x00\x00\x00\x00\xb3\x02\x00\x00\x00\x00\x00\x00\x9f\x02\x00\x00\x00\x00\x00\x00\x8a\x02\x00\x00\x00\x00\x00\x00\xca\x02\x00\x00\x00\x00\x00\x00\x9f\x02\x00\x00\x00\x00\x00\x00\xd4\x02\x00\x00\x00\x00\x00\x00\x9a\x02\x00\x00\x00\x00\x00\x00\xd7\x02\x00\x00\x00\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00\xde\x02\x00\x00\x00\x00\x00\x00\xb1\x02\x00\x00\x00\x00\x00\x00\xd7\x02\x00\x00\x00\x00\x00\x00\xde\x02\x00\x00\x00\x00\x00\x00\xb1\x02\x00\x00\x00\x00\x00\x00\xde\x02\x00\x00\x00\x00\x00\x00\xc2\x02\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x00\x00\x00\x00\xde\x02\x00\x00\x00\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00\xda\x02\x00\x00\x00\x00\x00\x00\xdf\x02\x00\x00\x00\x00\x00\x00\xdb\x02\x00\x00\x00\x00\x00\x00\xd2\x02\x00\x00\x00\x00\x00\x00\xdf\x02\x00\x00\x00\x00\x00\x00\xda\x02\x00\x00\x00\x00\x00\x00\xd2\x02\x00\x00\x00\x00\x00\x00\xb5\x02\x00\x00\x00\x00\x00\x00\xdd\x02\x00\x00\x00\x00\x00\x00k\x02\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\xcc\x02\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\xcc\x02\x00\x00\x00\x00\x00\x00\xc2\x02\x00\x00\x00\x00\x00\x00\xde\x02\x00\x00\x00\x00\x00\x00\xa5\x02\x00\x00\x00\x00\x00\x00\x98\x00\x00\x00\x00\x00\x00\x00\xa5\x02\x00\x00\x00\x00\x00\x00\xde\x02\x00\x00\x00\x00\x00\x00\x98\x00\x00\x00\x00\x00\x00\x00\xde\x02\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x00\x00\x00\x00\xdb\x02\x00\x00\x00\x00\x00\x00\xdf\x02\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\xdf\x02\x00\x00\x00\x00\x00\x00\x9b\x00\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\\\x02\x00\x00\x00\x00\x00\x00\xa1\x02\x00\x00\x00\x00\x00\x00^\x02\x00\x00\x00\x00\x00\x00z\x02\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00?\x00\x00\x00\x00\x00\x00\x00y\x02\x00\x00\x00\x00\x00\x00z\x02\x00\x00\x00\x00\x00\x00?\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x00\x00\x00\x00\x00\x00\xdf\x02\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00z\x02\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00x\x02\x00\x00\x00\x00\x00\x00\xbc\x02\x00\x00\x00\x00\x00\x00\xba\x02\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x9c\x02\x00\x00\x00\x00\x00\x00\xa6\x02\x00\x00\x00\x00\x00\x00\xd6\x02\x00\x00\x00\x00\x00\x00\x81\x02\x00\x00\x00\x00\x00\x00d\x02\x00\x00\x00\x00\x00\x00\x81\x02\x00\x00\x00\x00\x00\x00\xd6\x02\x00\x00\x00\x00\x00\x00\xcb\x02\x00\x00\x00\x00\x00\x00s\x02\x00\x00\x00\x00\x00\x00\x95\x02\x00\x00\x00\x00\x00\x00r\x02\x00\x00\x00\x00\x00\x00\x95\x02\x00\x00\x00\x00\x00\x00s\x02\x00\x00\x00\x00\x00\x00\x9e\x02\x00\x00\x00\x00\x00\x00\xdd\x02\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x8d\x02\x00\x00\x00\x00\x00\x00\x8e\x02\x00\x00\x00\x00\x00\x00\xa3\x02\x00\x00\x00\x00\x00\x00o\x02\x00\x00\x00\x00\x00\x00\xc9\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\xcb\x02\x00\x00\x00\x00\x00\x00n\x02\x00\x00\x00\x00\x00\x00\xc6\x02\x00\x00\x00\x00\x00\x00n\x02\x00\x00\x00\x00\x00\x00o\x02\x00\x00\x00\x00\x00\x00\xc6\x02\x00\x00\x00\x00\x00\x00\x80\x02\x00\x00\x00\x00\x00\x00w\x02\x00\x00\x00\x00\x00\x00\x89\x02\x00\x00\x00\x00\x00\x00w\x02\x00\x00\x00\x00\x00\x00\x80\x02\x00\x00\x00\x00\x00\x00X\x02\x00\x00\x00\x00\x00\x00\xbf\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\xc9\x02\x00\x00\x00\x00\x00\x00u\x02\x00\x00\x00\x00\x00\x00\x8a\x02\x00\x00\x00\x00\x00\x00t\x02\x00\x00\x00\x00\x00\x00\xbf\x02\x00\x00\x00\x00\x00\x00\xc7\x02\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc7\x02\x00\x00\x00\x00\x00\x00\xbf\x02\x00\x00\x00\x00\x00\x00\xc9\x02\x00\x00\x00\x00\x00\x00\x81\x02\x00\x00\x00\x00\x00\x00\x80\x02\x00\x00\x00\x00\x00\x00\x89\x02\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00{\x02\x00\x00\x00\x00\x00\x00m\x02\x00\x00\x00\x00\x00\x00\x88\x02\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xd4\x02\x00\x00\x00\x00\x00\x00b\x02\x00\x00\x00\x00\x00\x00\x9a\x02\x00\x00\x00\x00\x00\x00~\x02\x00\x00\x00\x00\x00\x00r\x02\x00\x00\x00\x00\x00\x00\x95\x02\x00\x00\x00\x00\x00\x00\xcc\x02\x00\x00\x00\x00\x00\x00\xa4\x02\x00\x00\x00\x00\x00\x00k\x02\x00\x00\x00\x00\x00\x00r\x02\x00\x00\x00\x00\x00\x00~\x02\x00\x00\x00\x00\x00\x00\x7f\x02\x00\x00\x00\x00\x00\x00c\x02\x00\x00\x00\x00\x00\x00{\x02\x00\x00\x00\x00\x00\x00|\x02\x00\x00\x00\x00\x00\x00\x9b\x02\x00\x00\x00\x00\x00\x00\x83\x02\x00\x00\x00\x00\x00\x00\xa2\x02\x00\x00\x00\x00\x00\x00\x9b\x02\x00\x00\x00\x00\x00\x00\x8e\x02\x00\x00\x00\x00\x00\x00\x9a\x02\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\xad\x02\x00\x00\x00\x00\x00\x00\xdb\x02\x00\x00\x00\x00\x00\x00\xad\x02\x00\x00\x00\x00\x00\x00\xac\x02\x00\x00\x00\x00\x00\x00\xdb\x02\x00\x00\x00\x00\x00\x00G\x00\x00\x00\x00\x00\x00\x00i\x02\x00\x00\x00\x00\x00\x00\x90\x02\x00\x00\x00\x00\x00\x00G\x00\x00\x00\x00\x00\x00\x00\x90\x02\x00\x00\x00\x00\x00\x00F\x00\x00\x00\x00\x00\x00\x00\xd7\x02\x00\x00\x00\x00\x00\x00\xb1\x02\x00\x00\x00\x00\x00\x00\xad\x02\x00\x00\x00\x00\x00\x00i\x02\x00\x00\x00\x00\x00\x00g\x02\x00\x00\x00\x00\x00\x00\x90\x02\x00\x00\x00\x00\x00\x00D\x00\x00\x00\x00\x00\x00\x00\x85\x02\x00\x00\x00\x00\x00\x00C\x00\x00\x00\x00\x00\x00\x00\xd5\x02\x00\x00\x00\x00\x00\x00\xbb\x02\x00\x00\x00\x00\x00\x00\x8c\x02\x00\x00\x00\x00\x00\x00\x8a\x02\x00\x00\x00\x00\x00\x00\x8b\x02\x00\x00\x00\x00\x00\x00\xd3\x02\x00\x00\x00\x00\x00\x00\x8b\x02\x00\x00\x00\x00\x00\x00\xb1\x02\x00\x00\x00\x00\x00\x00\xd3\x02\x00\x00\x00\x00\x00\x00i\x02\x00\x00\x00\x00\x00\x00G\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\xcf\x02\x00\x00\x00\x00\x00\x00\xa2\x02\x00\x00\x00\x00\x00\x00\xa8\x02\x00\x00\x00\x00\x00\x00E\x00\x00\x00\x00\x00\x00\x00F\x00\x00\x00\x00\x00\x00\x00\x8e\x02\x00\x00\x00\x00\x00\x00v\x02\x00\x00\x00\x00\x00\x00t\x02\x00\x00\x00\x00\x00\x00\xa8\x02\x00\x00\x00\x00\x00\x00\xb2\x02\x00\x00\x00\x00\x00\x00\xaa\x02\x00\x00\x00\x00\x00\x00m\x02\x00\x00\x00\x00\x00\x00\xd5\x02\x00\x00\x00\x00\x00\x00\x8c\x02\x00\x00\x00\x00\x00\x00\xc2\x02\x00\x00\x00\x00\x00\x00\xd3\x02\x00\x00\x00\x00\x00\x00\xb1\x02\x00\x00\x00\x00\x00\x00\x8a\x02\x00\x00\x00\x00\x00\x00\xd3\x02\x00\x00\x00\x00\x00\x00\xca\x02\x00\x00\x00\x00\x00\x00\xbb\x02\x00\x00\x00\x00\x00\x00\xd5\x02\x00\x00\x00\x00\x00\x00\xb6\x02\x00\x00\x00\x00\x00\x00\x86\x02\x00\x00\x00\x00\x00\x00C\x00\x00\x00\x00\x00\x00\x00\x85\x02\x00\x00\x00\x00\x00\x00\x8e\x02\x00\x00\x00\x00\x00\x00t\x02\x00\x00\x00\x00\x00\x00\x9a\x02\x00\x00\x00\x00\x00\x00e\x02\x00\x00\x00\x00\x00\x00\x98\x00\x00\x00\x00\x00\x00\x00\x97\x00\x00\x00\x00\x00\x00\x00\x83\x02\x00\x00\x00\x00\x00\x00^\x02\x00\x00\x00\x00\x00\x00\xa2\x02\x00\x00\x00\x00\x00\x00|\x02\x00\x00\x00\x00\x00\x00Z\x02\x00\x00\x00\x00\x00\x00c\x02\x00\x00\x00\x00\x00\x00\x88\x02\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00m\x02\x00\x00\x00\x00\x00\x00W\x02\x00\x00\x00\x00\x00\x00U\x02\x00\x00\x00\x00\x00\x00V\x02\x00\x00\x00\x00\x00\x00\xdd\x02\x00\x00\x00\x00\x00\x00\xdf\x02\x00\x00\x00\x00\x00\x00\xd2\x02\x00\x00\x00\x00\x00\x00U\x02\x00\x00\x00\x00\x00\x00W\x02\x00\x00\x00\x00\x00\x00X\x02\x00\x00\x00\x00\x00\x00\x87\x02\x00\x00\x00\x00\x00\x00\xa0\x02\x00\x00\x00\x00\x00\x00\x89\x02\x00\x00\x00\x00\x00\x00\xdf\x02\x00\x00\x00\x00\x00\x00\xdd\x02\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x93\x02\x00\x00\x00\x00\x00\x00h\x02\x00\x00\x00\x00\x00\x00I\x00\x00\x00\x00\x00\x00\x00\xa0\x02\x00\x00\x00\x00\x00\x00\x87\x02\x00\x00\x00\x00\x00\x00\x91\x02\x00\x00\x00\x00\x00\x00J\x00\x00\x00\x00\x00\x00\x00\x93\x02\x00\x00\x00\x00\x00\x00I\x00\x00\x00\x00\x00\x00\x00h\x02\x00\x00\x00\x00\x00\x00\x93\x02\x00\x00\x00\x00\x00\x00\x94\x02\x00\x00\x00\x00\x00\x00\xe0\x02\x00\x00\x00\x00\x00\x00\xe2\x02\x00\x00\x00\x00\x00\x00\xe1\x02\x00\x00\x00\x00\x00\x00\xe3\x02\x00\x00\x00\x00\x00\x00J\x00\x00\x00\x00\x00\x00\x00\xe4\x02\x00\x00\x00\x00\x00\x00\xe5\x02\x00\x00\x00\x00\x00\x00\xe0\x02\x00\x00\x00\x00\x00\x00\xe6\x02\x00\x00\x00\x00\x00\x00\xe0\x02\x00\x00\x00\x00\x00\x00\xe1\x02\x00\x00\x00\x00\x00\x00G\x00\x00\x00\x00\x00\x00\x00\xe4\x02\x00\x00\x00\x00\x00\x00J\x00\x00\x00\x00\x00\x00\x00I\x00\x00\x00\x00\x00\x00\x00\xe7\x02\x00\x00\x00\x00\x00\x00\xe9\x02\x00\x00\x00\x00\x00\x00\xe8\x02\x00\x00\x00\x00\x00\x00\xe7\x02\x00\x00\x00\x00\x00\x00\xe8\x02\x00\x00\x00\x00\x00\x00\xea\x02\x00\x00\x00\x00\x00\x00\xe4\x02\x00\x00\x00\x00\x00\x00I\x00\x00\x00\x00\x00\x00\x00\xeb\x02\x00\x00\x00\x00\x00\x00\xeb\x02\x00\x00\x00\x00\x00\x00I\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x00\x00\x00\x00\xec\x02\x00\x00\x00\x00\x00\x00\xee\x02\x00\x00\x00\x00\x00\x00\xed\x02\x00\x00\x00\x00\x00\x00\xef\x02\x00\x00\x00\x00\x00\x00\xe8\x02\x00\x00\x00\x00\x00\x00\xf0\x02\x00\x00\x00\x00\x00\x00\xed\x02\x00\x00\x00\x00\x00\x00\xf1\x02\x00\x00\x00\x00\x00\x00\xec\x02\x00\x00\x00\x00\x00\x00\xec\x02\x00\x00\x00\x00\x00\x00\xf1\x02\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\xf2\x02\x00\x00\x00\x00\x00\x00\xf4\x02\x00\x00\x00\x00\x00\x00\xf3\x02\x00\x00\x00\x00\x00\x00\xf2\x02\x00\x00\x00\x00\x00\x00\xf3\x02\x00\x00\x00\x00\x00\x00\xf5\x02\x00\x00\x00\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\xf7\x02\x00\x00\x00\x00\x00\x00\xf6\x02\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\xf1\x02\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\xf8\x02\x00\x00\x00\x00\x00\x00\xfa\x02\x00\x00\x00\x00\x00\x00\xf9\x02\x00\x00\x00\x00\x00\x00\xfb\x02\x00\x00\x00\x00\x00\x00\xfd\x02\x00\x00\x00\x00\x00\x00\xfc\x02\x00\x00\x00\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\xf6\x02\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\xfe\x02\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\xff\x02\x00\x00\x00\x00\x00\x00\xe5\x02\x00\x00\x00\x00\x00\x00\xe6\x02\x00\x00\x00\x00\x00\x00\x01\x03\x00\x00\x00\x00\x00\x00\xfb\x02\x00\x00\x00\x00\x00\x00\xfc\x02\x00\x00\x00\x00\x00\x00\x02\x03\x00\x00\x00\x00\x00\x00\xec\x02\x00\x00\x00\x00\x00\x00\x03\x03\x00\x00\x00\x00\x00\x00\xee\x02\x00\x00\x00\x00\x00\x00\xee\x02\x00\x00\x00\x00\x00\x00\x03\x03\x00\x00\x00\x00\x00\x00L\x00\x00\x00\x00\x00\x00\x00\xff\x02\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x04\x03\x00\x00\x00\x00\x00\x00\xf8\x02\x00\x00\x00\x00\x00\x00\xf9\x02\x00\x00\x00\x00\x00\x00C\x00\x00\x00\x00\x00\x00\x00\x05\x03\x00\x00\x00\x00\x00\x00\x06\x03\x00\x00\x00\x00\x00\x00\xf1\x02\x00\x00\x00\x00\x00\x00\x07\x03\x00\x00\x00\x00\x00\x00\t\x03\x00\x00\x00\x00\x00\x00\x08\x03\x00\x00\x00\x00\x00\x00\xe0\x02\x00\x00\x00\x00\x00\x00\xe5\x02\x00\x00\x00\x00\x00\x00\xe2\x02\x00\x00\x00\x00\x00\x00\x08\x03\x00\x00\x00\x00\x00\x00\t\x03\x00\x00\x00\x00\x00\x00\n\x03\x00\x00\x00\x00\x00\x00\xeb\x02\x00\x00\x00\x00\x00\x00\x0b\x03\x00\x00\x00\x00\x00\x00\xe4\x02\x00\x00\x00\x00\x00\x00\x0c\x03\x00\x00\x00\x00\x00\x00\x0e\x03\x00\x00\x00\x00\x00\x00\r\x03\x00\x00\x00\x00\x00\x00\x0c\x03\x00\x00\x00\x00\x00\x00\r\x03\x00\x00\x00\x00\x00\x00\x0f\x03\x00\x00\x00\x00\x00\x00\x07\x03\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\t\x03\x00\x00\x00\x00\x00\x00\x06\x03\x00\x00\x00\x00\x00\x00\x10\x03\x00\x00\x00\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x00\x00\x0c\x03\x00\x00\x00\x00\x00\x00\x12\x03\x00\x00\x00\x00\x00\x00\x11\x03\x00\x00\x00\x00\x00\x00\t\x03\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x13\x03\x00\x00\x00\x00\x00\x00\x15\x03\x00\x00\x00\x00\x00\x00\x14\x03\x00\x00\x00\x00\x00\x00\x13\x03\x00\x00\x00\x00\x00\x00\x14\x03\x00\x00\x00\x00\x00\x00\x16\x03\x00\x00\x00\x00\x00\x00\x11\x03\x00\x00\x00\x00\x00\x00\x17\x03\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x1a\x03\x00\x00\x00\x00\x00\x00\x19\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x19\x03\x00\x00\x00\x00\x00\x00\x1b\x03\x00\x00\x00\x00\x00\x00\x1c\x03\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\xe3\x02\x00\x00\x00\x00\x00\x00\xe4\x02\x00\x00\x00\x00\x00\x00\x0b\x03\x00\x00\x00\x00\x00\x00\xe3\x02\x00\x00\x00\x00\x00\x00\x0b\x03\x00\x00\x00\x00\x00\x00\x1d\x03\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\xf1\x02\x00\x00\x00\x00\x00\x00\x06\x03\x00\x00\x00\x00\x00\x00\x1e\x03\x00\x00\x00\x00\x00\x00 \x03\x00\x00\x00\x00\x00\x00\x1f\x03\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x06\x03\x00\x00\x00\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x00\x00!\x03\x00\x00\x00\x00\x00\x00#\x03\x00\x00\x00\x00\x00\x00"\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00$\x03\x00\x00\x00\x00\x00\x00\xfe\x02\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\xfe\x02\x00\x00\x00\x00\x00\x00\xf0\x02\x00\x00\x00\x00\x00\x00\xfb\x02\x00\x00\x00\x00\x00\x00!\x03\x00\x00\x00\x00\x00\x00%\x03\x00\x00\x00\x00\x00\x00&\x03\x00\x00\x00\x00\x00\x00\'\x03\x00\x00\x00\x00\x00\x00\r\x03\x00\x00\x00\x00\x00\x00(\x03\x00\x00\x00\x00\x00\x00*\x03\x00\x00\x00\x00\x00\x00)\x03\x00\x00\x00\x00\x00\x00+\x03\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\r\x00\x00\x00\x00\x00\x00\x00\xe2\x02\x00\x00\x00\x00\x00\x00-\x03\x00\x00\x00\x00\x00\x00,\x03\x00\x00\x00\x00\x00\x00\'\x03\x00\x00\x00\x00\x00\x00+\x03\x00\x00\x00\x00\x00\x00.\x03\x00\x00\x00\x00\x00\x00\x1f\x03\x00\x00\x00\x00\x00\x000\x03\x00\x00\x00\x00\x00\x00/\x03\x00\x00\x00\x00\x00\x00,\x03\x00\x00\x00\x00\x00\x00-\x03\x00\x00\x00\x00\x00\x001\x03\x00\x00\x00\x00\x00\x00#\x03\x00\x00\x00\x00\x00\x002\x03\x00\x00\x00\x00\x00\x00"\x03\x00\x00\x00\x00\x00\x00\xfb\x02\x00\x00\x00\x00\x00\x00#\x03\x00\x00\x00\x00\x00\x00!\x03\x00\x00\x00\x00\x00\x003\x03\x00\x00\x00\x00\x00\x00\xe5\x02\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x05\x03\x00\x00\x00\x00\x00\x00\xf1\x02\x00\x00\x00\x00\x00\x004\x03\x00\x00\x00\x00\x00\x00\x0e\x03\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x003\x03\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x005\x03\x00\x00\x00\x00\x00\x00\x05\x03\x00\x00\x00\x00\x00\x004\x03\x00\x00\x00\x00\x00\x006\x03\x00\x00\x00\x00\x00\x006\x03\x00\x00\x00\x00\x00\x004\x03\x00\x00\x00\x00\x00\x00\x1d\x03\x00\x00\x00\x00\x00\x00\n\x03\x00\x00\x00\x00\x00\x00\t\x03\x00\x00\x00\x00\x00\x00\xf6\x02\x00\x00\x00\x00\x00\x00\x11\x03\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\n\x03\x00\x00\x00\x00\x00\x00\xf6\x02\x00\x00\x00\x00\x00\x00%\x03\x00\x00\x00\x00\x00\x00.\x03\x00\x00\x00\x00\x00\x008\x03\x00\x00\x00\x00\x00\x007\x03\x00\x00\x00\x00\x00\x007\x03\x00\x00\x00\x00\x00\x008\x03\x00\x00\x00\x00\x00\x009\x03\x00\x00\x00\x00\x00\x00:\x03\x00\x00\x00\x00\x00\x00<\x03\x00\x00\x00\x00\x00\x00;\x03\x00\x00\x00\x00\x00\x00\x0b\x03\x00\x00\x00\x00\x00\x00\xeb\x02\x00\x00\x00\x00\x00\x001\x03\x00\x00\x00\x00\x00\x00\x0b\x03\x00\x00\x00\x00\x00\x001\x03\x00\x00\x00\x00\x00\x00=\x03\x00\x00\x00\x00\x00\x009\x03\x00\x00\x00\x00\x00\x00?\x03\x00\x00\x00\x00\x00\x00>\x03\x00\x00\x00\x00\x00\x00@\x03\x00\x00\x00\x00\x00\x00\xf5\x02\x00\x00\x00\x00\x00\x00>\x03\x00\x00\x00\x00\x00\x00\xf5\x02\x00\x00\x00\x00\x00\x009\x03\x00\x00\x00\x00\x00\x00>\x03\x00\x00\x00\x00\x00\x00"\x03\x00\x00\x00\x00\x00\x002\x03\x00\x00\x00\x00\x00\x00A\x03\x00\x00\x00\x00\x00\x00\x1f\x03\x00\x00\x00\x00\x00\x00@\x03\x00\x00\x00\x00\x00\x00>\x03\x00\x00\x00\x00\x00\x005\x03\x00\x00\x00\x00\x00\x00;\x03\x00\x00\x00\x00\x00\x00<\x03\x00\x00\x00\x00\x00\x00\x1d\x03\x00\x00\x00\x00\x00\x00\x0b\x03\x00\x00\x00\x00\x00\x00=\x03\x00\x00\x00\x00\x00\x00\x1d\x03\x00\x00\x00\x00\x00\x00=\x03\x00\x00\x00\x00\x00\x006\x03\x00\x00\x00\x00\x00\x00B\x03\x00\x00\x00\x00\x00\x00\x16\x03\x00\x00\x00\x00\x00\x00;\x03\x00\x00\x00\x00\x00\x00\x12\x03\x00\x00\x00\x00\x00\x00\xe7\x02\x00\x00\x00\x00\x00\x00C\x03\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00D\x03\x00\x00\x00\x00\x00\x00*\x03\x00\x00\x00\x00\x00\x00*\x03\x00\x00\x00\x00\x00\x00D\x03\x00\x00\x00\x00\x00\x00E\x03\x00\x00\x00\x00\x00\x00\x12\x03\x00\x00\x00\x00\x00\x00\x0c\x03\x00\x00\x00\x00\x00\x00\x0f\x03\x00\x00\x00\x00\x00\x00\x08\x03\x00\x00\x00\x00\x00\x00\n\x03\x00\x00\x00\x00\x00\x00F\x03\x00\x00\x00\x00\x00\x00\x16\x03\x00\x00\x00\x00\x00\x00:\x03\x00\x00\x00\x00\x00\x00;\x03\x00\x00\x00\x00\x00\x00%\x03\x00\x00\x00\x00\x00\x00!\x03\x00\x00\x00\x00\x00\x00\n\x03\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00*\x03\x00\x00\x00\x00\x00\x00A\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00&\x03\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00B\x00\x00\x00\x00\x00\x00\x00\xf8\x02\x00\x00\x00\x00\x00\x00C\x00\x00\x00\x00\x00\x00\x00\x1c\x03\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x17\x03\x00\x00\x00\x00\x00\x00G\x03\x00\x00\x00\x00\x00\x006\x03\x00\x00\x00\x00\x00\x00=\x03\x00\x00\x00\x00\x00\x00\x01\x03\x00\x00\x00\x00\x00\x00E\x00\x00\x00\x00\x00\x00\x00H\x03\x00\x00\x00\x00\x00\x00I\x03\x00\x00\x00\x00\x00\x00J\x03\x00\x00\x00\x00\x00\x000\x03\x00\x00\x00\x00\x00\x00C\x03\x00\x00\x00\x00\x00\x00\xe7\x02\x00\x00\x00\x00\x00\x00K\x03\x00\x00\x00\x00\x00\x00E\x00\x00\x00\x00\x00\x00\x00\x01\x03\x00\x00\x00\x00\x00\x00\xe6\x02\x00\x00\x00\x00\x00\x00L\x03\x00\x00\x00\x00\x00\x00\x11\x03\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00I\x03\x00\x00\x00\x00\x00\x00M\x03\x00\x00\x00\x00\x00\x00J\x03\x00\x00\x00\x00\x00\x00N\x03\x00\x00\x00\x00\x00\x001\x03\x00\x00\x00\x00\x00\x00-\x03\x00\x00\x00\x00\x00\x00N\x03\x00\x00\x00\x00\x00\x00-\x03\x00\x00\x00\x00\x00\x00<\x03\x00\x00\x00\x00\x00\x00\x15\x03\x00\x00\x00\x00\x00\x00\x05\x03\x00\x00\x00\x00\x00\x006\x03\x00\x00\x00\x00\x00\x00=\x03\x00\x00\x00\x00\x00\x001\x03\x00\x00\x00\x00\x00\x00N\x03\x00\x00\x00\x00\x00\x00=\x03\x00\x00\x00\x00\x00\x00N\x03\x00\x00\x00\x00\x00\x00G\x03\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf7\x02\x00\x00\x00\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00O\x03\x00\x00\x00\x00\x00\x00B\x03\x00\x00\x00\x00\x00\x00$\x03\x00\x00\x00\x00\x00\x00\x15\x03\x00\x00\x00\x00\x00\x006\x03\x00\x00\x00\x00\x00\x00G\x03\x00\x00\x00\x00\x00\x00>\x03\x00\x00\x00\x00\x00\x00\x1e\x03\x00\x00\x00\x00\x00\x00\x1f\x03\x00\x00\x00\x00\x00\x00\xfd\x02\x00\x00\x00\x00\x00\x00P\x03\x00\x00\x00\x00\x00\x00\xfc\x02\x00\x00\x00\x00\x00\x00B\x03\x00\x00\x00\x00\x00\x00;\x03\x00\x00\x00\x00\x00\x00$\x03\x00\x00\x00\x00\x00\x00K\x03\x00\x00\x00\x00\x00\x00\xe7\x02\x00\x00\x00\x00\x00\x00\xea\x02\x00\x00\x00\x00\x00\x00Q\x03\x00\x00\x00\x00\x00\x00S\x03\x00\x00\x00\x00\x00\x00R\x03\x00\x00\x00\x00\x00\x00Q\x03\x00\x00\x00\x00\x00\x00R\x03\x00\x00\x00\x00\x00\x00T\x03\x00\x00\x00\x00\x00\x00R\x03\x00\x00\x00\x00\x00\x00S\x03\x00\x00\x00\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00R\x03\x00\x00\x00\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x00\x00\xfc\x02\x00\x00\x00\x00\x00\x00P\x03\x00\x00\x00\x00\x00\x00\xae\x00\x00\x00\x00\x00\x00\x00I\x03\x00\x00\x00\x00\x00\x00Q\x03\x00\x00\x00\x00\x00\x00M\x03\x00\x00\x00\x00\x00\x00U\x03\x00\x00\x00\x00\x00\x00D\x03\x00\x00\x00\x00\x00\x00V\x03\x00\x00\x00\x00\x00\x00D\x03\x00\x00\x00\x00\x00\x00U\x03\x00\x00\x00\x00\x00\x00E\x03\x00\x00\x00\x00\x00\x00\xe3\x02\x00\x00\x00\x00\x00\x00K\x00\x00\x00\x00\x00\x00\x00J\x00\x00\x00\x00\x00\x00\x00W\x03\x00\x00\x00\x00\x00\x00\x1e\x03\x00\x00\x00\x00\x00\x00A\x03\x00\x00\x00\x00\x00\x00\x1e\x03\x00\x00\x00\x00\x00\x00W\x03\x00\x00\x00\x00\x00\x00 \x03\x00\x00\x00\x00\x00\x00\xf7\x02\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xfd\x02\x00\x00\x00\x00\x00\x00\xfb\x02\x00\x00\x00\x00\x00\x00\xf7\x02\x00\x00\x00\x00\x00\x00\xfd\x02\x00\x00\x00\x00\x00\x00G\x00\x00\x00\x00\x00\x00\x00F\x00\x00\x00\x00\x00\x00\x00\xe0\x02\x00\x00\x00\x00\x00\x00\xfd\x02\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00I\x03\x00\x00\x00\x00\x00\x00Y\x03\x00\x00\x00\x00\x00\x00X\x03\x00\x00\x00\x00\x00\x00\xe3\x02\x00\x00\x00\x00\x00\x00\xee\x02\x00\x00\x00\x00\x00\x00K\x00\x00\x00\x00\x00\x00\x00E\x00\x00\x00\x00\x00\x00\x00D\x00\x00\x00\x00\x00\x00\x00H\x03\x00\x00\x00\x00\x00\x00\xf9\x02\x00\x00\x00\x00\x00\x00D\x00\x00\x00\x00\x00\x00\x00C\x00\x00\x00\x00\x00\x00\x00\x15\x03\x00\x00\x00\x00\x00\x00[\x03\x00\x00\x00\x00\x00\x00Z\x03\x00\x00\x00\x00\x00\x00Z\x03\x00\x00\x00\x00\x00\x00[\x03\x00\x00\x00\x00\x00\x00\x10\x03\x00\x00\x00\x00\x00\x00Q\x03\x00\x00\x00\x00\x00\x00I\x03\x00\x00\x00\x00\x00\x00X\x03\x00\x00\x00\x00\x00\x00\\\x03\x00\x00\x00\x00\x00\x00\r\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00B\x03\x00\x00\x00\x00\x00\x00O\x03\x00\x00\x00\x00\x00\x00J\x03\x00\x00\x00\x00\x00\x00\xaa\x00\x00\x00\x00\x00\x00\x00]\x03\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00<\x03\x00\x00\x00\x00\x00\x00-\x03\x00\x00\x00\x00\x00\x003\x03\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00L\x03\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00*\x03\x00\x00\x00\x00\x00\x00E\x03\x00\x00\x00\x00\x00\x00)\x03\x00\x00\x00\x00\x00\x00\x10\x03\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x00\x00)\x03\x00\x00\x00\x00\x00\x00E\x03\x00\x00\x00\x00\x00\x00\x1c\x03\x00\x00\x00\x00\x00\x00O\x03\x00\x00\x00\x00\x00\x000\x03\x00\x00\x00\x00\x00\x00J\x03\x00\x00\x00\x00\x00\x00U\x03\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x1c\x03\x00\x00\x00\x00\x00\x00\x17\x03\x00\x00\x00\x00\x00\x00)\x03\x00\x00\x00\x00\x00\x00\x1c\x03\x00\x00\x00\x00\x00\x00E\x03\x00\x00\x00\x00\x00\x00U\x03\x00\x00\x00\x00\x00\x00*\x03\x00\x00\x00\x00\x00\x00^\x03\x00\x00\x00\x00\x00\x00A\x00\x00\x00\x00\x00\x00\x00\xec\x02\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x00\x00\x00\x00\x11\x03\x00\x00\x00\x00\x00\x00\x12\x03\x00\x00\x00\x00\x00\x00\x17\x03\x00\x00\x00\x00\x00\x00S\x03\x00\x00\x00\x00\x00\x00Q\x03\x00\x00\x00\x00\x00\x00X\x03\x00\x00\x00\x00\x00\x00\x08\x03\x00\x00\x00\x00\x00\x008\x03\x00\x00\x00\x00\x00\x00\x07\x03\x00\x00\x00\x00\x00\x00\x1c\x03\x00\x00\x00\x00\x00\x00U\x03\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\xef\x02\x00\x00\x00\x00\x00\x00`\x03\x00\x00\x00\x00\x00\x00_\x03\x00\x00\x00\x00\x00\x00`\x03\x00\x00\x00\x00\x00\x00\xef\x02\x00\x00\x00\x00\x00\x00\xff\x02\x00\x00\x00\x00\x00\x00\xef\x02\x00\x00\x00\x00\x00\x00\xf0\x02\x00\x00\x00\x00\x00\x00\xff\x02\x00\x00\x00\x00\x00\x00%\x03\x00\x00\x00\x00\x00\x00\xf7\x02\x00\x00\x00\x00\x00\x00\xfb\x02\x00\x00\x00\x00\x00\x00S\x03\x00\x00\x00\x00\x00\x00X\x03\x00\x00\x00\x00\x00\x00a\x03\x00\x00\x00\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x00\x00S\x03\x00\x00\x00\x00\x00\x00a\x03\x00\x00\x00\x00\x00\x000\x03\x00\x00\x00\x00\x00\x00\x1f\x03\x00\x00\x00\x00\x00\x00 \x03\x00\x00\x00\x00\x00\x00D\x03\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00?\x00\x00\x00\x00\x00\x00\x00 \x03\x00\x00\x00\x00\x00\x00W\x03\x00\x00\x00\x00\x00\x00Y\x03\x00\x00\x00\x00\x00\x00V\x03\x00\x00\x00\x00\x00\x00D\x03\x00\x00\x00\x00\x00\x00?\x00\x00\x00\x00\x00\x00\x00\x06\x03\x00\x00\x00\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x00\x00\x0c\x03\x00\x00\x00\x00\x00\x00L\x03\x00\x00\x00\x00\x00\x00\x0e\x03\x00\x00\x00\x00\x00\x00L\x03\x00\x00\x00\x00\x00\x00\x0c\x03\x00\x00\x00\x00\x00\x00\x11\x03\x00\x00\x00\x00\x00\x00L\x03\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x0e\x03\x00\x00\x00\x00\x00\x00\xe9\x02\x00\x00\x00\x00\x00\x00\x1a\x03\x00\x00\x00\x00\x00\x00\xe8\x02\x00\x00\x00\x00\x00\x00\xe9\x02\x00\x00\x00\x00\x00\x00b\x03\x00\x00\x00\x00\x00\x00\x1a\x03\x00\x00\x00\x00\x00\x00V\x03\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00U\x03\x00\x00\x00\x00\x00\x00G\x03\x00\x00\x00\x00\x00\x00\x14\x03\x00\x00\x00\x00\x00\x00\x15\x03\x00\x00\x00\x00\x00\x00[\x03\x00\x00\x00\x00\x00\x00\x15\x03\x00\x00\x00\x00\x00\x00\x13\x03\x00\x00\x00\x00\x00\x008\x03\x00\x00\x00\x00\x00\x00\x08\x03\x00\x00\x00\x00\x00\x009\x03\x00\x00\x00\x00\x00\x00?\x03\x00\x00\x00\x00\x00\x00\x08\x03\x00\x00\x00\x00\x00\x00F\x03\x00\x00\x00\x00\x00\x00\x08\x03\x00\x00\x00\x00\x00\x00?\x03\x00\x00\x00\x00\x00\x009\x03\x00\x00\x00\x00\x00\x00\xef\x02\x00\x00\x00\x00\x00\x00\xea\x02\x00\x00\x00\x00\x00\x00\xe8\x02\x00\x00\x00\x00\x00\x00\xef\x02\x00\x00\x00\x00\x00\x00_\x03\x00\x00\x00\x00\x00\x00\xea\x02\x00\x00\x00\x00\x00\x00 \x03\x00\x00\x00\x00\x00\x00Y\x03\x00\x00\x00\x00\x00\x00I\x03\x00\x00\x00\x00\x00\x00\xe3\x02\x00\x00\x00\x00\x00\x00\xed\x02\x00\x00\x00\x00\x00\x00\xee\x02\x00\x00\x00\x00\x00\x00b\x03\x00\x00\x00\x00\x00\x00\xe9\x02\x00\x00\x00\x00\x00\x00c\x03\x00\x00\x00\x00\x00\x00\xe9\x02\x00\x00\x00\x00\x00\x00\x0f\x03\x00\x00\x00\x00\x00\x00c\x03\x00\x00\x00\x00\x00\x00\xed\x02\x00\x00\x00\x00\x00\x00\xe3\x02\x00\x00\x00\x00\x00\x00\x1d\x03\x00\x00\x00\x00\x00\x00\xed\x02\x00\x00\x00\x00\x00\x00\x1d\x03\x00\x00\x00\x00\x00\x004\x03\x00\x00\x00\x00\x00\x00\xe9\x02\x00\x00\x00\x00\x00\x00\xe7\x02\x00\x00\x00\x00\x00\x00\x12\x03\x00\x00\x00\x00\x00\x00\x0f\x03\x00\x00\x00\x00\x00\x00\xe9\x02\x00\x00\x00\x00\x00\x00\x12\x03\x00\x00\x00\x00\x00\x00\x07\x03\x00\x00\x00\x00\x00\x008\x03\x00\x00\x00\x00\x00\x00\\\x03\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x07\x03\x00\x00\x00\x00\x00\x00\\\x03\x00\x00\x00\x00\x00\x00\x07\x03\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x16\x03\x00\x00\x00\x00\x00\x00B\x03\x00\x00\x00\x00\x00\x00J\x03\x00\x00\x00\x00\x00\x000\x03\x00\x00\x00\x00\x00\x00O\x03\x00\x00\x00\x00\x00\x00/\x03\x00\x00\x00\x00\x00\x00d\x03\x00\x00\x00\x00\x00\x00\x02\x03\x00\x00\x00\x00\x00\x00\xac\x00\x00\x00\x00\x00\x00\x00+\x03\x00\x00\x00\x00\x00\x00\'\x03\x00\x00\x00\x00\x00\x00&\x03\x00\x00\x00\x00\x00\x00F\x03\x00\x00\x00\x00\x00\x00!\x03\x00\x00\x00\x00\x00\x00"\x03\x00\x00\x00\x00\x00\x00!\x03\x00\x00\x00\x00\x00\x00F\x03\x00\x00\x00\x00\x00\x00\n\x03\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00+\x03\x00\x00\x00\x00\x00\x00&\x03\x00\x00\x00\x00\x00\x00#\x03\x00\x00\x00\x00\x00\x00\x02\x03\x00\x00\x00\x00\x00\x00d\x03\x00\x00\x00\x00\x00\x00d\x03\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00]\x03\x00\x00\x00\x00\x00\x00I\x03\x00\x00\x00\x00\x00\x000\x03\x00\x00\x00\x00\x00\x00 \x03\x00\x00\x00\x00\x00\x00\xf0\x02\x00\x00\x00\x00\x00\x00\xe8\x02\x00\x00\x00\x00\x00\x00\x1a\x03\x00\x00\x00\x00\x00\x00N\x03\x00\x00\x00\x00\x00\x00\x14\x03\x00\x00\x00\x00\x00\x00G\x03\x00\x00\x00\x00\x00\x00\x14\x03\x00\x00\x00\x00\x00\x00N\x03\x00\x00\x00\x00\x00\x00:\x03\x00\x00\x00\x00\x00\x00\x16\x03\x00\x00\x00\x00\x00\x00\x14\x03\x00\x00\x00\x00\x00\x00:\x03\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00d\x03\x00\x00\x00\x00\x00\x00\xac\x00\x00\x00\x00\x00\x00\x00^\x03\x00\x00\x00\x00\x00\x00(\x03\x00\x00\x00\x00\x00\x00\xf8\x02\x00\x00\x00\x00\x00\x003\x03\x00\x00\x00\x00\x00\x00\xe2\x02\x00\x00\x00\x00\x00\x00\xe5\x02\x00\x00\x00\x00\x00\x00V\x03\x00\x00\x00\x00\x00\x00?\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00V\x03\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00]\x03\x00\x00\x00\x00\x00\x00e\x03\x00\x00\x00\x00\x00\x002\x03\x00\x00\x00\x00\x00\x00e\x03\x00\x00\x00\x00\x00\x00]\x03\x00\x00\x00\x00\x00\x00f\x03\x00\x00\x00\x00\x00\x00]\x03\x00\x00\x00\x00\x00\x00\xaa\x00\x00\x00\x00\x00\x00\x00f\x03\x00\x00\x00\x00\x00\x00R\x03\x00\x00\x00\x00\x00\x00[\x03\x00\x00\x00\x00\x00\x00T\x03\x00\x00\x00\x00\x00\x00[\x03\x00\x00\x00\x00\x00\x00R\x03\x00\x00\x00\x00\x00\x00\x10\x03\x00\x00\x00\x00\x00\x00\xf1\x02\x00\x00\x00\x00\x00\x00\xed\x02\x00\x00\x00\x00\x00\x004\x03\x00\x00\x00\x00\x00\x00\x02\x03\x00\x00\x00\x00\x00\x00#\x03\x00\x00\x00\x00\x00\x00\xfb\x02\x00\x00\x00\x00\x00\x00\x02\x03\x00\x00\x00\x00\x00\x00\xad\x00\x00\x00\x00\x00\x00\x00\xac\x00\x00\x00\x00\x00\x00\x00R\x03\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x00\x00\x10\x03\x00\x00\x00\x00\x00\x00g\x03\x00\x00\x00\x00\x00\x00\xf8\x02\x00\x00\x00\x00\x00\x00(\x03\x00\x00\x00\x00\x00\x00*\x03\x00\x00\x00\x00\x00\x00(\x03\x00\x00\x00\x00\x00\x00^\x03\x00\x00\x00\x00\x00\x00\x04\x03\x00\x00\x00\x00\x00\x00\x01\x03\x00\x00\x00\x00\x00\x00`\x03\x00\x00\x00\x00\x00\x00#\x03\x00\x00\x00\x00\x00\x00d\x03\x00\x00\x00\x00\x00\x002\x03\x00\x00\x00\x00\x00\x00F\x00\x00\x00\x00\x00\x00\x00\xe6\x02\x00\x00\x00\x00\x00\x00\xe0\x02\x00\x00\x00\x00\x00\x00\xfa\x02\x00\x00\x00\x00\x00\x00_\x03\x00\x00\x00\x00\x00\x00`\x03\x00\x00\x00\x00\x00\x00\x01\x03\x00\x00\x00\x00\x00\x00\x04\x03\x00\x00\x00\x00\x00\x00\xe5\x02\x00\x00\x00\x00\x00\x00\xe2\x02\x00\x00\x00\x00\x00\x003\x03\x00\x00\x00\x00\x00\x00-\x03\x00\x00\x00\x00\x00\x00\xfc\x02\x00\x00\x00\x00\x00\x00\xad\x00\x00\x00\x00\x00\x00\x00\x02\x03\x00\x00\x00\x00\x00\x00\xad\x00\x00\x00\x00\x00\x00\x00\xfc\x02\x00\x00\x00\x00\x00\x00\xae\x00\x00\x00\x00\x00\x00\x00Z\x03\x00\x00\x00\x00\x00\x00\x06\x03\x00\x00\x00\x00\x00\x00\x05\x03\x00\x00\x00\x00\x00\x00\x15\x03\x00\x00\x00\x00\x00\x00Z\x03\x00\x00\x00\x00\x00\x00\x05\x03\x00\x00\x00\x00\x00\x00\x06\x03\x00\x00\x00\x00\x00\x00Z\x03\x00\x00\x00\x00\x00\x00\x10\x03\x00\x00\x00\x00\x00\x00,\x03\x00\x00\x00\x00\x00\x00\xeb\x02\x00\x00\x00\x00\x00\x00\xe1\x02\x00\x00\x00\x00\x00\x00P\x03\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xae\x00\x00\x00\x00\x00\x00\x00>\x03\x00\x00\x00\x00\x00\x00?\x03\x00\x00\x00\x00\x00\x00h\x03\x00\x00\x00\x00\x00\x00P\x03\x00\x00\x00\x00\x00\x00\xfd\x02\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x1e\x03\x00\x00\x00\x00\x00\x00>\x03\x00\x00\x00\x00\x00\x00h\x03\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00P\x03\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00e\x03\x00\x00\x00\x00\x00\x00Y\x03\x00\x00\x00\x00\x00\x00W\x03\x00\x00\x00\x00\x00\x00\xe2\x02\x00\x00\x00\x00\x00\x00,\x03\x00\x00\x00\x00\x00\x00\xe1\x02\x00\x00\x00\x00\x00\x007\x03\x00\x00\x00\x00\x00\x00\xf5\x02\x00\x00\x00\x00\x00\x00\xf3\x02\x00\x00\x00\x00\x00\x00.\x03\x00\x00\x00\x00\x00\x007\x03\x00\x00\x00\x00\x00\x00\xf3\x02\x00\x00\x00\x00\x00\x00\xf5\x02\x00\x00\x00\x00\x00\x007\x03\x00\x00\x00\x00\x00\x009\x03\x00\x00\x00\x00\x00\x00.\x03\x00\x00\x00\x00\x00\x00\\\x03\x00\x00\x00\x00\x00\x008\x03\x00\x00\x00\x00\x00\x00\xf3\x02\x00\x00\x00\x00\x00\x00\'\x03\x00\x00\x00\x00\x00\x00.\x03\x00\x00\x00\x00\x00\x00"\x03\x00\x00\x00\x00\x00\x00A\x03\x00\x00\x00\x00\x00\x00h\x03\x00\x00\x00\x00\x00\x00\'\x03\x00\x00\x00\x00\x00\x00\xf3\x02\x00\x00\x00\x00\x00\x00\xf4\x02\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\xf6\x02\x00\x00\x00\x00\x00\x00\t\x03\x00\x00\x00\x00\x00\x00F\x03\x00\x00\x00\x00\x00\x00"\x03\x00\x00\x00\x00\x00\x00h\x03\x00\x00\x00\x00\x00\x00%\x03\x00\x00\x00\x00\x00\x00\xf6\x02\x00\x00\x00\x00\x00\x00\xf7\x02\x00\x00\x00\x00\x00\x00\xeb\x02\x00\x00\x00\x00\x00\x00,\x03\x00\x00\x00\x00\x00\x001\x03\x00\x00\x00\x00\x00\x00c\x03\x00\x00\x00\x00\x00\x00\r\x03\x00\x00\x00\x00\x00\x00\xf4\x02\x00\x00\x00\x00\x00\x00b\x03\x00\x00\x00\x00\x00\x00\xf2\x02\x00\x00\x00\x00\x00\x00i\x03\x00\x00\x00\x00\x00\x00\xf2\x02\x00\x00\x00\x00\x00\x00b\x03\x00\x00\x00\x00\x00\x00\xf4\x02\x00\x00\x00\x00\x00\x00\xf2\x02\x00\x00\x00\x00\x00\x00\xf5\x02\x00\x00\x00\x00\x00\x00i\x03\x00\x00\x00\x00\x00\x00\x16\x03\x00\x00\x00\x00\x00\x00J\x03\x00\x00\x00\x00\x00\x00M\x03\x00\x00\x00\x00\x00\x00\r\x03\x00\x00\x00\x00\x00\x00c\x03\x00\x00\x00\x00\x00\x00\x0f\x03\x00\x00\x00\x00\x00\x00Y\x03\x00\x00\x00\x00\x00\x00e\x03\x00\x00\x00\x00\x00\x00X\x03\x00\x00\x00\x00\x00\x00b\x03\x00\x00\x00\x00\x00\x00c\x03\x00\x00\x00\x00\x00\x00\xf4\x02\x00\x00\x00\x00\x00\x00h\x03\x00\x00\x00\x00\x00\x00?\x03\x00\x00\x00\x00\x00\x00F\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\x1b\x03\x00\x00\x00\x00\x00\x00$\x03\x00\x00\x00\x00\x00\x00\x18\x03\x00\x00\x00\x00\x00\x00\xf0\x02\x00\x00\x00\x00\x00\x00\x1a\x03\x00\x00\x00\x00\x00\x00h\x03\x00\x00\x00\x00\x00\x00A\x03\x00\x00\x00\x00\x00\x00\x1e\x03\x00\x00\x00\x00\x00\x00\xe6\x02\x00\x00\x00\x00\x00\x00F\x00\x00\x00\x00\x00\x00\x00E\x00\x00\x00\x00\x00\x00\x00\xff\x02\x00\x00\x00\x00\x00\x00\xf0\x02\x00\x00\x00\x00\x00\x00\xfe\x02\x00\x00\x00\x00\x00\x00\xff\x02\x00\x00\x00\x00\x00\x00\x04\x03\x00\x00\x00\x00\x00\x00`\x03\x00\x00\x00\x00\x00\x00\'\x03\x00\x00\x00\x00\x00\x00\xf4\x02\x00\x00\x00\x00\x00\x00\r\x03\x00\x00\x00\x00\x00\x00\x13\x03\x00\x00\x00\x00\x00\x00\x16\x03\x00\x00\x00\x00\x00\x00M\x03\x00\x00\x00\x00\x00\x00\x13\x03\x00\x00\x00\x00\x00\x00T\x03\x00\x00\x00\x00\x00\x00[\x03\x00\x00\x00\x00\x00\x00T\x03\x00\x00\x00\x00\x00\x00\x13\x03\x00\x00\x00\x00\x00\x00M\x03\x00\x00\x00\x00\x00\x005\x03\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\xfe\x02\x00\x00\x00\x00\x00\x00M\x03\x00\x00\x00\x00\x00\x00Q\x03\x00\x00\x00\x00\x00\x00T\x03\x00\x00\x00\x00\x00\x00\x04\x03\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\xe5\x02\x00\x00\x00\x00\x00\x00\x19\x03\x00\x00\x00\x00\x00\x00b\x03\x00\x00\x00\x00\x00\x00i\x03\x00\x00\x00\x00\x00\x003\x03\x00\x00\x00\x00\x00\x005\x03\x00\x00\x00\x00\x00\x00<\x03\x00\x00\x00\x00\x00\x00\x1b\x03\x00\x00\x00\x00\x00\x00\x19\x03\x00\x00\x00\x00\x00\x00i\x03\x00\x00\x00\x00\x00\x00e\x03\x00\x00\x00\x00\x00\x00W\x03\x00\x00\x00\x00\x00\x002\x03\x00\x00\x00\x00\x00\x00b\x03\x00\x00\x00\x00\x00\x00\x19\x03\x00\x00\x00\x00\x00\x00\x1a\x03\x00\x00\x00\x00\x00\x00a\x03\x00\x00\x00\x00\x00\x00\xa9\x00\x00\x00\x00\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x00\x00a\x03\x00\x00\x00\x00\x00\x00X\x03\x00\x00\x00\x00\x00\x00e\x03\x00\x00\x00\x00\x00\x00W\x03\x00\x00\x00\x00\x00\x00A\x03\x00\x00\x00\x00\x00\x002\x03\x00\x00\x00\x00\x00\x00\x1f\x03\x00\x00\x00\x00\x00\x00/\x03\x00\x00\x00\x00\x00\x00@\x03\x00\x00\x00\x00\x00\x00/\x03\x00\x00\x00\x00\x00\x00\x1b\x03\x00\x00\x00\x00\x00\x00@\x03\x00\x00\x00\x00\x00\x005\x03\x00\x00\x00\x00\x00\x00\xfe\x02\x00\x00\x00\x00\x00\x00$\x03\x00\x00\x00\x00\x00\x00i\x03\x00\x00\x00\x00\x00\x00\xf5\x02\x00\x00\x00\x00\x00\x00@\x03\x00\x00\x00\x00\x00\x00\x1b\x03\x00\x00\x00\x00\x00\x00i\x03\x00\x00\x00\x00\x00\x00@\x03\x00\x00\x00\x00\x00\x00f\x03\x00\x00\x00\x00\x00\x00\xa9\x00\x00\x00\x00\x00\x00\x00a\x03\x00\x00\x00\x00\x00\x00e\x03\x00\x00\x00\x00\x00\x00f\x03\x00\x00\x00\x00\x00\x00a\x03\x00\x00\x00\x00\x00\x00\xa9\x00\x00\x00\x00\x00\x00\x00f\x03\x00\x00\x00\x00\x00\x00\xaa\x00\x00\x00\x00\x00\x00\x00C\x03\x00\x00\x00\x00\x00\x00K\x03\x00\x00\x00\x00\x00\x00)\x03\x00\x00\x00\x00\x00\x00<\x03\x00\x00\x00\x00\x00\x00:\x03\x00\x00\x00\x00\x00\x00N\x03\x00\x00\x00\x00\x00\x00C\x03\x00\x00\x00\x00\x00\x00\x17\x03\x00\x00\x00\x00\x00\x00\x12\x03\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x00\x00\x00\x00\xe1\x02\x00\x00\x00\x00\x00\x00\xeb\x02\x00\x00\x00\x00\x00\x00S\x03\x00\x00\x00\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00\x03\x03\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00L\x00\x00\x00\x00\x00\x00\x00g\x03\x00\x00\x00\x00\x00\x00K\x03\x00\x00\x00\x00\x00\x00\xea\x02\x00\x00\x00\x00\x00\x00\xf8\x02\x00\x00\x00\x00\x00\x00g\x03\x00\x00\x00\x00\x00\x00\xfa\x02\x00\x00\x00\x00\x00\x00;\x03\x00\x00\x00\x00\x00\x005\x03\x00\x00\x00\x00\x00\x00$\x03\x00\x00\x00\x00\x00\x00_\x03\x00\x00\x00\x00\x00\x00g\x03\x00\x00\x00\x00\x00\x00\xea\x02\x00\x00\x00\x00\x00\x00B\x00\x00\x00\x00\x00\x00\x00^\x03\x00\x00\x00\x00\x00\x00\xf8\x02\x00\x00\x00\x00\x00\x00_\x03\x00\x00\x00\x00\x00\x00\xfa\x02\x00\x00\x00\x00\x00\x00g\x03\x00\x00\x00\x00\x00\x00\x03\x03\x00\x00\x00\x00\x00\x00\xec\x02\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x00\x00\x00\x00\xe1\x02\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x00\x00\x00\x00G\x00\x00\x00\x00\x00\x00\x00+\x03\x00\x00\x00\x00\x00\x00\\\x03\x00\x00\x00\x00\x00\x00.\x03\x00\x00\x00\x00\x00\x00K\x00\x00\x00\x00\x00\x00\x00\xee\x02\x00\x00\x00\x00\x00\x00L\x00\x00\x00\x00\x00\x00\x00\\\x03\x00\x00\x00\x00\x00\x00+\x03\x00\x00\x00\x00\x00\x00\r\x00\x00\x00\x00\x00\x00\x00\x0e\x03\x00\x00\x00\x00\x00\x00&\x03\x00\x00\x00\x00\x00\x00\r\x03\x00\x00\x00\x00\x00\x00\x17\x03\x00\x00\x00\x00\x00\x00C\x03\x00\x00\x00\x00\x00\x00)\x03\x00\x00\x00\x00\x00\x00d\x03\x00\x00\x00\x00\x00\x00]\x03\x00\x00\x00\x00\x00\x002\x03\x00\x00\x00\x00\x00\x00&\x03\x00\x00\x00\x00\x00\x00\x0e\x03\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x1b\x03\x00\x00\x00\x00\x00\x00O\x03\x00\x00\x00\x00\x00\x00$\x03\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x03\x03\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x00\x00\x00\x00(\x03\x00\x00\x00\x00\x00\x00K\x03\x00\x00\x00\x00\x00\x00g\x03\x00\x00\x00\x00\x00\x00O\x03\x00\x00\x00\x00\x00\x00\x1b\x03\x00\x00\x00\x00\x00\x00/\x03\x00\x00\x00\x00\x00\x00K\x03\x00\x00\x00\x00\x00\x00(\x03\x00\x00\x00\x00\x00\x00)\x03\x00\x00\x00\x00\x00\x00^\x03\x00\x00\x00\x00\x00\x00B\x00\x00\x00\x00\x00\x00\x00A\x00\x00\x00\x00\x00\x00\x00\xf9\x02\x00\x00\x00\x00\x00\x00\xfa\x02\x00\x00\x00\x00\x00\x00H\x03\x00\x00\x00\x00\x00\x00`\x03\x00\x00\x00\x00\x00\x00H\x03\x00\x00\x00\x00\x00\x00\xfa\x02\x00\x00\x00\x00\x00\x00H\x03\x00\x00\x00\x00\x00\x00`\x03\x00\x00\x00\x00\x00\x00\x01\x03\x00\x00\x00\x00\x00\x00D\x00\x00\x00\x00\x00\x00\x00\xf9\x02\x00\x00\x00\x00\x00\x00H\x03\x00\x00\x00\x00\x00\x00j\x03\x00\x00\x00\x00\x00\x00l\x03\x00\x00\x00\x00\x00\x00k\x03\x00\x00\x00\x00\x00\x00k\x03\x00\x00\x00\x00\x00\x00l\x03\x00\x00\x00\x00\x00\x00m\x03\x00\x00\x00\x00\x00\x00n\x03\x00\x00\x00\x00\x00\x00p\x03\x00\x00\x00\x00\x00\x00o\x03\x00\x00\x00\x00\x00\x00o\x03\x00\x00\x00\x00\x00\x00p\x03\x00\x00\x00\x00\x00\x00q\x03\x00\x00\x00\x00\x00\x00r\x03\x00\x00\x00\x00\x00\x00t\x03\x00\x00\x00\x00\x00\x00s\x03\x00\x00\x00\x00\x00\x00u\x03\x00\x00\x00\x00\x00\x00w\x03\x00\x00\x00\x00\x00\x00v\x03\x00\x00\x00\x00\x00\x00x\x03\x00\x00\x00\x00\x00\x00z\x03\x00\x00\x00\x00\x00\x00y\x03\x00\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00{\x03\x00\x00\x00\x00\x00\x00\x93\x00\x00\x00\x00\x00\x00\x00|\x03\x00\x00\x00\x00\x00\x00j\x03\x00\x00\x00\x00\x00\x00}\x03\x00\x00\x00\x00\x00\x00|\x03\x00\x00\x00\x00\x00\x00}\x03\x00\x00\x00\x00\x00\x00\x98\x00\x00\x00\x00\x00\x00\x00~\x03\x00\x00\x00\x00\x00\x00.\x00\x00\x00\x00\x00\x00\x00\x7f\x03\x00\x00\x00\x00\x00\x00v\x03\x00\x00\x00\x00\x00\x00w\x03\x00\x00\x00\x00\x00\x00\x80\x03\x00\x00\x00\x00\x00\x00t\x03\x00\x00\x00\x00\x00\x00\x81\x03\x00\x00\x00\x00\x00\x00s\x03\x00\x00\x00\x00\x00\x00\x82\x03\x00\x00\x00\x00\x00\x00\x81\x03\x00\x00\x00\x00\x00\x00t\x03\x00\x00\x00\x00\x00\x00\x83\x03\x00\x00\x00\x00\x00\x00\x85\x03\x00\x00\x00\x00\x00\x00\x84\x03\x00\x00\x00\x00\x00\x00\x86\x03\x00\x00\x00\x00\x00\x00\x88\x03\x00\x00\x00\x00\x00\x00\x87\x03\x00\x00\x00\x00\x00\x00\x87\x03\x00\x00\x00\x00\x00\x00\x88\x03\x00\x00\x00\x00\x00\x00\x89\x03\x00\x00\x00\x00\x00\x00\x8a\x03\x00\x00\x00\x00\x00\x00\x8c\x03\x00\x00\x00\x00\x00\x00\x8b\x03\x00\x00\x00\x00\x00\x00\x8b\x03\x00\x00\x00\x00\x00\x00\x8c\x03\x00\x00\x00\x00\x00\x00-\x00\x00\x00\x00\x00\x00\x00\x8d\x03\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x8e\x03\x00\x00\x00\x00\x00\x00\x8e\x03\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x00\x00\x00\x00\x90\x03\x00\x00\x00\x00\x00\x00\x8f\x03\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x00\x00\x00\x00\x8f\x03\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x00\x00\x00\x00\x91\x03\x00\x00\x00\x00\x00\x00\x92\x03\x00\x00\x00\x00\x00\x00\x85\x03\x00\x00\x00\x00\x00\x00\x93\x03\x00\x00\x00\x00\x00\x00\x95\x03\x00\x00\x00\x00\x00\x00\x94\x03\x00\x00\x00\x00\x00\x00\x96\x03\x00\x00\x00\x00\x00\x00\x97\x03\x00\x00\x00\x00\x00\x00{\x03\x00\x00\x00\x00\x00\x00{\x03\x00\x00\x00\x00\x00\x00\x97\x03\x00\x00\x00\x00\x00\x00\x93\x00\x00\x00\x00\x00\x00\x00\x87\x03\x00\x00\x00\x00\x00\x00\x99\x03\x00\x00\x00\x00\x00\x00\x98\x03\x00\x00\x00\x00\x00\x00\x9a\x03\x00\x00\x00\x00\x00\x00O\x00\x00\x00\x00\x00\x00\x00\x9b\x03\x00\x00\x00\x00\x00\x00\x9b\x03\x00\x00\x00\x00\x00\x00O\x00\x00\x00\x00\x00\x00\x00P\x00\x00\x00\x00\x00\x00\x00\x9c\x03\x00\x00\x00\x00\x00\x00v\x03\x00\x00\x00\x00\x00\x00\x9d\x03\x00\x00\x00\x00\x00\x00\x9d\x03\x00\x00\x00\x00\x00\x00v\x03\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x9e\x03\x00\x00\x00\x00\x00\x00\x96\x03\x00\x00\x00\x00\x00\x00\x9f\x03\x00\x00\x00\x00\x00\x00\x83\x03\x00\x00\x00\x00\x00\x00\x84\x03\x00\x00\x00\x00\x00\x00\xa0\x03\x00\x00\x00\x00\x00\x00\x9f\x03\x00\x00\x00\x00\x00\x00\x96\x03\x00\x00\x00\x00\x00\x00{\x03\x00\x00\x00\x00\x00\x00\xa1\x03\x00\x00\x00\x00\x00\x00\xa2\x03\x00\x00\x00\x00\x00\x00\x99\x03\x00\x00\x00\x00\x00\x00\xa3\x03\x00\x00\x00\x00\x00\x00\x99\x03\x00\x00\x00\x00\x00\x00\xa2\x03\x00\x00\x00\x00\x00\x00\xa4\x03\x00\x00\x00\x00\x00\x00\x88\x03\x00\x00\x00\x00\x00\x00\xa5\x03\x00\x00\x00\x00\x00\x00\x89\x03\x00\x00\x00\x00\x00\x00\xa1\x03\x00\x00\x00\x00\x00\x00\x99\x03\x00\x00\x00\x00\x00\x00\xa6\x03\x00\x00\x00\x00\x00\x00\xa7\x03\x00\x00\x00\x00\x00\x00\x93\x03\x00\x00\x00\x00\x00\x00\x87\x03\x00\x00\x00\x00\x00\x00\x89\x03\x00\x00\x00\x00\x00\x00\x99\x03\x00\x00\x00\x00\x00\x00\xa8\x03\x00\x00\x00\x00\x00\x00\xaa\x03\x00\x00\x00\x00\x00\x00\xa9\x03\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\xad\x03\x00\x00\x00\x00\x00\x00\xac\x03\x00\x00\x00\x00\x00\x00\xae\x03\x00\x00\x00\x00\x00\x00o\x03\x00\x00\x00\x00\x00\x00\xaf\x03\x00\x00\x00\x00\x00\x00\xac\x03\x00\x00\x00\x00\x00\x00\xad\x03\x00\x00\x00\x00\x00\x00\xb0\x03\x00\x00\x00\x00\x00\x00\xb1\x03\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\x86\x03\x00\x00\x00\x00\x00\x00\xb1\x03\x00\x00\x00\x00\x00\x00\x86\x03\x00\x00\x00\x00\x00\x00\x98\x03\x00\x00\x00\x00\x00\x00w\x03\x00\x00\x00\x00\x00\x00\x9a\x03\x00\x00\x00\x00\x00\x00\xb2\x03\x00\x00\x00\x00\x00\x00q\x03\x00\x00\x00\x00\x00\x00\xb4\x03\x00\x00\x00\x00\x00\x00\xb3\x03\x00\x00\x00\x00\x00\x00\x82\x03\x00\x00\x00\x00\x00\x00\xb5\x03\x00\x00\x00\x00\x00\x00\x81\x03\x00\x00\x00\x00\x00\x00\xb0\x03\x00\x00\x00\x00\x00\x00\xb3\x03\x00\x00\x00\x00\x00\x00\xb4\x03\x00\x00\x00\x00\x00\x00\xb6\x03\x00\x00\x00\x00\x00\x00\xb8\x03\x00\x00\x00\x00\x00\x00\xb7\x03\x00\x00\x00\x00\x00\x00q\x03\x00\x00\x00\x00\x00\x00\xb3\x03\x00\x00\x00\x00\x00\x00\xb9\x03\x00\x00\x00\x00\x00\x00\xb4\x03\x00\x00\x00\x00\x00\x00\xba\x03\x00\x00\x00\x00\x00\x00\xac\x03\x00\x00\x00\x00\x00\x00\xac\x03\x00\x00\x00\x00\x00\x00\xba\x03\x00\x00\x00\x00\x00\x00\xa5\x03\x00\x00\x00\x00\x00\x00r\x03\x00\x00\x00\x00\x00\x00\x8d\x03\x00\x00\x00\x00\x00\x00\x8e\x03\x00\x00\x00\x00\x00\x00u\x03\x00\x00\x00\x00\x00\x00v\x03\x00\x00\x00\x00\x00\x00\x9c\x03\x00\x00\x00\x00\x00\x00\xbb\x03\x00\x00\x00\x00\x00\x00\xbd\x03\x00\x00\x00\x00\x00\x00\xbc\x03\x00\x00\x00\x00\x00\x00\x8e\x03\x00\x00\x00\x00\x00\x00\xbe\x03\x00\x00\x00\x00\x00\x00r\x03\x00\x00\x00\x00\x00\x00\x8e\x03\x00\x00\x00\x00\x00\x00\xbf\x03\x00\x00\x00\x00\x00\x00\xbe\x03\x00\x00\x00\x00\x00\x00k\x03\x00\x00\x00\x00\x00\x00}\x03\x00\x00\x00\x00\x00\x00j\x03\x00\x00\x00\x00\x00\x00\xc0\x03\x00\x00\x00\x00\x00\x00\xc2\x03\x00\x00\x00\x00\x00\x00\xc1\x03\x00\x00\x00\x00\x00\x00\xbc\x03\x00\x00\x00\x00\x00\x00\xbd\x03\x00\x00\x00\x00\x00\x00\xc3\x03\x00\x00\x00\x00\x00\x00\xc4\x03\x00\x00\x00\x00\x00\x00\xc6\x03\x00\x00\x00\x00\x00\x00\xc5\x03\x00\x00\x00\x00\x00\x00\xc4\x03\x00\x00\x00\x00\x00\x00\xc5\x03\x00\x00\x00\x00\x00\x00S\x00\x00\x00\x00\x00\x00\x00\xc7\x03\x00\x00\x00\x00\x00\x00\xbb\x03\x00\x00\x00\x00\x00\x00\xbc\x03\x00\x00\x00\x00\x00\x00\xc2\x03\x00\x00\x00\x00\x00\x00\xc8\x03\x00\x00\x00\x00\x00\x00\xc4\x03\x00\x00\x00\x00\x00\x00}\x03\x00\x00\x00\x00\x00\x00\x97\x00\x00\x00\x00\x00\x00\x00\x98\x00\x00\x00\x00\x00\x00\x00\xc2\x03\x00\x00\x00\x00\x00\x00\xc4\x03\x00\x00\x00\x00\x00\x00T\x00\x00\x00\x00\x00\x00\x00\xc3\x03\x00\x00\x00\x00\x00\x00\x95\x03\x00\x00\x00\x00\x00\x00\xbc\x03\x00\x00\x00\x00\x00\x00\x8c\x03\x00\x00\x00\x00\x00\x00\x8a\x03\x00\x00\x00\x00\x00\x00\x7f\x03\x00\x00\x00\x00\x00\x00Y\x00\x00\x00\x00\x00\x00\x00Z\x00\x00\x00\x00\x00\x00\x00\xc9\x03\x00\x00\x00\x00\x00\x00\xbf\x03\x00\x00\x00\x00\x00\x00\x8e\x03\x00\x00\x00\x00\x00\x00\x8f\x03\x00\x00\x00\x00\x00\x00\xbf\x03\x00\x00\x00\x00\x00\x00\x8f\x03\x00\x00\x00\x00\x00\x00\x80\x03\x00\x00\x00\x00\x00\x00Y\x00\x00\x00\x00\x00\x00\x00\xca\x03\x00\x00\x00\x00\x00\x00X\x00\x00\x00\x00\x00\x00\x00\xcb\x03\x00\x00\x00\x00\x00\x00\xcc\x03\x00\x00\x00\x00\x00\x00\xc5\x03\x00\x00\x00\x00\x00\x00\xc5\x03\x00\x00\x00\x00\x00\x00\xcc\x03\x00\x00\x00\x00\x00\x00R\x00\x00\x00\x00\x00\x00\x00\xcd\x03\x00\x00\x00\x00\x00\x00Y\x00\x00\x00\x00\x00\x00\x00\xc9\x03\x00\x00\x00\x00\x00\x00\x95\x03\x00\x00\x00\x00\x00\x00\xc3\x03\x00\x00\x00\x00\x00\x00\xce\x03\x00\x00\x00\x00\x00\x00~\x03\x00\x00\x00\x00\x00\x00\xcd\x03\x00\x00\x00\x00\x00\x00\xcf\x03\x00\x00\x00\x00\x00\x00\xca\x03\x00\x00\x00\x00\x00\x00Y\x00\x00\x00\x00\x00\x00\x00\xcd\x03\x00\x00\x00\x00\x00\x00\xcf\x03\x00\x00\x00\x00\x00\x00\xcd\x03\x00\x00\x00\x00\x00\x00\xc9\x03\x00\x00\x00\x00\x00\x00r\x03\x00\x00\x00\x00\x00\x00\xbe\x03\x00\x00\x00\x00\x00\x00t\x03\x00\x00\x00\x00\x00\x00\xd0\x03\x00\x00\x00\x00\x00\x00k\x03\x00\x00\x00\x00\x00\x00m\x03\x00\x00\x00\x00\x00\x00\xd0\x03\x00\x00\x00\x00\x00\x00m\x03\x00\x00\x00\x00\x00\x00\x92\x03\x00\x00\x00\x00\x00\x00\x8d\x03\x00\x00\x00\x00\x00\x00r\x03\x00\x00\x00\x00\x00\x00s\x03\x00\x00\x00\x00\x00\x00t\x03\x00\x00\x00\x00\x00\x00\xbe\x03\x00\x00\x00\x00\x00\x00\xd1\x03\x00\x00\x00\x00\x00\x00\xb8\x03\x00\x00\x00\x00\x00\x00\xae\x03\x00\x00\x00\x00\x00\x00\xaf\x03\x00\x00\x00\x00\x00\x00}\x03\x00\x00\x00\x00\x00\x00k\x03\x00\x00\x00\x00\x00\x00\xd2\x03\x00\x00\x00\x00\x00\x00}\x03\x00\x00\x00\x00\x00\x00\xd2\x03\x00\x00\x00\x00\x00\x00\x97\x00\x00\x00\x00\x00\x00\x00\xb6\x03\x00\x00\x00\x00\x00\x00\xae\x03\x00\x00\x00\x00\x00\x00\xb8\x03\x00\x00\x00\x00\x00\x00\xbc\x03\x00\x00\x00\x00\x00\x00\x95\x03\x00\x00\x00\x00\x00\x00\x93\x03\x00\x00\x00\x00\x00\x00\xd3\x03\x00\x00\x00\x00\x00\x00W\x00\x00\x00\x00\x00\x00\x00\xd4\x03\x00\x00\x00\x00\x00\x00\x80\x03\x00\x00\x00\x00\x00\x00w\x03\x00\x00\x00\x00\x00\x00\xd5\x03\x00\x00\x00\x00\x00\x00\x80\x03\x00\x00\x00\x00\x00\x00\xd5\x03\x00\x00\x00\x00\x00\x00\xbf\x03\x00\x00\x00\x00\x00\x00\xd4\x03\x00\x00\x00\x00\x00\x00W\x00\x00\x00\x00\x00\x00\x00X\x00\x00\x00\x00\x00\x00\x00o\x03\x00\x00\x00\x00\x00\x00\xae\x03\x00\x00\x00\x00\x00\x00n\x03\x00\x00\x00\x00\x00\x00\x7f\x03\x00\x00\x00\x00\x00\x00\x8a\x03\x00\x00\x00\x00\x00\x00\xce\x03\x00\x00\x00\x00\x00\x00n\x03\x00\x00\x00\x00\x00\x00\xae\x03\x00\x00\x00\x00\x00\x00\xcb\x03\x00\x00\x00\x00\x00\x00\x84\x03\x00\x00\x00\x00\x00\x00\xd6\x03\x00\x00\x00\x00\x00\x00\xa9\x03\x00\x00\x00\x00\x00\x00\xa8\x03\x00\x00\x00\x00\x00\x00\xa9\x03\x00\x00\x00\x00\x00\x00\xd6\x03\x00\x00\x00\x00\x00\x00\x85\x03\x00\x00\x00\x00\x00\x00\x83\x03\x00\x00\x00\x00\x00\x00\x91\x03\x00\x00\x00\x00\x00\x00\x9b\x03\x00\x00\x00\x00\x00\x00P\x00\x00\x00\x00\x00\x00\x00\xd7\x03\x00\x00\x00\x00\x00\x00\xd7\x03\x00\x00\x00\x00\x00\x00P\x00\x00\x00\x00\x00\x00\x00Q\x00\x00\x00\x00\x00\x00\x00\xa7\x03\x00\x00\x00\x00\x00\x00\xc7\x03\x00\x00\x00\x00\x00\x00\x93\x03\x00\x00\x00\x00\x00\x00\xc2\x03\x00\x00\x00\x00\x00\x00\xc0\x03\x00\x00\x00\x00\x00\x00\xc8\x03\x00\x00\x00\x00\x00\x00n\x03\x00\x00\x00\x00\x00\x00\xc6\x03\x00\x00\x00\x00\x00\x00\xd8\x03\x00\x00\x00\x00\x00\x00\xb3\x03\x00\x00\x00\x00\x00\x00\x82\x03\x00\x00\x00\x00\x00\x00\xd1\x03\x00\x00\x00\x00\x00\x00\xd2\x03\x00\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x97\x00\x00\x00\x00\x00\x00\x00\x82\x03\x00\x00\x00\x00\x00\x00t\x03\x00\x00\x00\x00\x00\x00\xd1\x03\x00\x00\x00\x00\x00\x00\xc8\x03\x00\x00\x00\x00\x00\x00\xd8\x03\x00\x00\x00\x00\x00\x00\xc6\x03\x00\x00\x00\x00\x00\x00n\x03\x00\x00\x00\x00\x00\x00\xd8\x03\x00\x00\x00\x00\x00\x00p\x03\x00\x00\x00\x00\x00\x00\x96\x03\x00\x00\x00\x00\x00\x00\xd9\x03\x00\x00\x00\x00\x00\x00$\x00\x00\x00\x00\x00\x00\x00|\x03\x00\x00\x00\x00\x00\x00\x98\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x00\x00\x00\x00\xda\x03\x00\x00\x00\x00\x00\x00\xdc\x03\x00\x00\x00\x00\x00\x00\xdb\x03\x00\x00\x00\x00\x00\x00\x95\x03\x00\x00\x00\x00\x00\x00\x8a\x03\x00\x00\x00\x00\x00\x00\xdd\x03\x00\x00\x00\x00\x00\x00\x8a\x03\x00\x00\x00\x00\x00\x00\x95\x03\x00\x00\x00\x00\x00\x00\xce\x03\x00\x00\x00\x00\x00\x00\xaf\x03\x00\x00\x00\x00\x00\x00\xb9\x03\x00\x00\x00\x00\x00\x00\xde\x03\x00\x00\x00\x00\x00\x00\xde\x03\x00\x00\x00\x00\x00\x00\xb9\x03\x00\x00\x00\x00\x00\x00\xd1\x03\x00\x00\x00\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x00\x00v\x03\x00\x00\x00\x00\x00\x00\x90\x03\x00\x00\x00\x00\x00\x00l\x03\x00\x00\x00\x00\x00\x00x\x03\x00\x00\x00\x00\x00\x00m\x03\x00\x00\x00\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x00\x00\x90\x03\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x00\x00\x00\x00m\x03\x00\x00\x00\x00\x00\x00\xda\x03\x00\x00\x00\x00\x00\x00\xdb\x03\x00\x00\x00\x00\x00\x00\x96\x03\x00\x00\x00\x00\x00\x00\x9e\x03\x00\x00\x00\x00\x00\x00\xd9\x03\x00\x00\x00\x00\x00\x00\xdf\x03\x00\x00\x00\x00\x00\x00\xc1\x03\x00\x00\x00\x00\x00\x00\xc2\x03\x00\x00\x00\x00\x00\x00\xdb\x03\x00\x00\x00\x00\x00\x00\x92\x03\x00\x00\x00\x00\x00\x00m\x03\x00\x00\x00\x00\x00\x00\xb9\x03\x00\x00\x00\x00\x00\x00o\x03\x00\x00\x00\x00\x00\x00q\x03\x00\x00\x00\x00\x00\x00o\x03\x00\x00\x00\x00\x00\x00\xb9\x03\x00\x00\x00\x00\x00\x00\xaf\x03\x00\x00\x00\x00\x00\x00U\x00\x00\x00\x00\x00\x00\x00\xdf\x03\x00\x00\x00\x00\x00\x00\xc2\x03\x00\x00\x00\x00\x00\x00\xdf\x03\x00\x00\x00\x00\x00\x00U\x00\x00\x00\x00\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00\xb9\x03\x00\x00\x00\x00\x00\x00\xb3\x03\x00\x00\x00\x00\x00\x00\xd1\x03\x00\x00\x00\x00\x00\x00\xa4\x03\x00\x00\x00\x00\x00\x00\xa6\x03\x00\x00\x00\x00\x00\x00\x88\x03\x00\x00\x00\x00\x00\x00\xaf\x03\x00\x00\x00\x00\x00\x00\xde\x03\x00\x00\x00\x00\x00\x00\xe0\x03\x00\x00\x00\x00\x00\x00\xbe\x03\x00\x00\x00\x00\x00\x00\xde\x03\x00\x00\x00\x00\x00\x00\xd1\x03\x00\x00\x00\x00\x00\x00\xde\x03\x00\x00\x00\x00\x00\x00\xbe\x03\x00\x00\x00\x00\x00\x00\xe0\x03\x00\x00\x00\x00\x00\x00\x89\x03\x00\x00\x00\x00\x00\x00\x88\x03\x00\x00\x00\x00\x00\x00\xa6\x03\x00\x00\x00\x00\x00\x00\xa4\x03\x00\x00\x00\x00\x00\x00\xa7\x03\x00\x00\x00\x00\x00\x00\xa6\x03\x00\x00\x00\x00\x00\x00\xc0\x03\x00\x00\x00\x00\x00\x00\xe2\x03\x00\x00\x00\x00\x00\x00\xe1\x03\x00\x00\x00\x00\x00\x00\xd8\x03\x00\x00\x00\x00\x00\x00\xc8\x03\x00\x00\x00\x00\x00\x00\xe1\x03\x00\x00\x00\x00\x00\x00\xe1\x03\x00\x00\x00\x00\x00\x00\xc8\x03\x00\x00\x00\x00\x00\x00\xc0\x03\x00\x00\x00\x00\x00\x00\xe2\x03\x00\x00\x00\x00\x00\x00\xa7\x03\x00\x00\x00\x00\x00\x00\xe1\x03\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00v\x03\x00\x00\x00\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x00\x00u\x03\x00\x00\x00\x00\x00\x00\x9a\x03\x00\x00\x00\x00\x00\x00w\x03\x00\x00\x00\x00\x00\x00\xa9\x03\x00\x00\x00\x00\x00\x00\xaa\x03\x00\x00\x00\x00\x00\x00\xe3\x03\x00\x00\x00\x00\x00\x00\xd2\x03\x00\x00\x00\x00\x00\x00\xd0\x03\x00\x00\x00\x00\x00\x00\xe4\x03\x00\x00\x00\x00\x00\x00\x84\x03\x00\x00\x00\x00\x00\x00\xa9\x03\x00\x00\x00\x00\x00\x00\xe5\x03\x00\x00\x00\x00\x00\x00\xa3\x03\x00\x00\x00\x00\x00\x00\xe6\x03\x00\x00\x00\x00\x00\x00\xaa\x03\x00\x00\x00\x00\x00\x00#\x00\x00\x00\x00\x00\x00\x00\x96\x03\x00\x00\x00\x00\x00\x00$\x00\x00\x00\x00\x00\x00\x00\xe6\x03\x00\x00\x00\x00\x00\x00*\x00\x00\x00\x00\x00\x00\x00)\x00\x00\x00\x00\x00\x00\x00\xe3\x03\x00\x00\x00\x00\x00\x00\xaa\x03\x00\x00\x00\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\xa2\x03\x00\x00\x00\x00\x00\x00\xe7\x03\x00\x00\x00\x00\x00\x00\xe6\x03\x00\x00\x00\x00\x00\x00\xcf\x03\x00\x00\x00\x00\x00\x000\x00\x00\x00\x00\x00\x00\x00/\x00\x00\x00\x00\x00\x00\x00\xaa\x03\x00\x00\x00\x00\x00\x00\xe6\x03\x00\x00\x00\x00\x00\x00)\x00\x00\x00\x00\x00\x00\x00\xe6\x03\x00\x00\x00\x00\x00\x00\xa3\x03\x00\x00\x00\x00\x00\x00\xa2\x03\x00\x00\x00\x00\x00\x00\xd3\x03\x00\x00\x00\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00W\x00\x00\x00\x00\x00\x00\x00\xa1\x03\x00\x00\x00\x00\x00\x00\x89\x03\x00\x00\x00\x00\x00\x00\x94\x03\x00\x00\x00\x00\x00\x00\xdf\x03\x00\x00\x00\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00\xd3\x03\x00\x00\x00\x00\x00\x00~\x03\x00\x00\x00\x00\x00\x00\xcf\x03\x00\x00\x00\x00\x00\x00/\x00\x00\x00\x00\x00\x00\x00\xe7\x03\x00\x00\x00\x00\x00\x00*\x00\x00\x00\x00\x00\x00\x00\xe6\x03\x00\x00\x00\x00\x00\x00\xc9\x03\x00\x00\x00\x00\x00\x000\x00\x00\x00\x00\x00\x00\x00\xcf\x03\x00\x00\x00\x00\x00\x00\xe8\x03\x00\x00\x00\x00\x00\x00\xe9\x03\x00\x00\x00\x00\x00\x00\xe4\x03\x00\x00\x00\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\xaa\x03\x00\x00\x00\x00\x00\x00)\x00\x00\x00\x00\x00\x00\x00#\x00\x00\x00\x00\x00\x00\x00\x97\x03\x00\x00\x00\x00\x00\x00\x96\x03\x00\x00\x00\x00\x00\x00\x91\x03\x00\x00\x00\x00\x00\x00\x83\x03\x00\x00\x00\x00\x00\x00\xea\x03\x00\x00\x00\x00\x00\x00\x91\x03\x00\x00\x00\x00\x00\x00\xea\x03\x00\x00\x00\x00\x00\x00\x9e\x03\x00\x00\x00\x00\x00\x00x\x03\x00\x00\x00\x00\x00\x00\xeb\x03\x00\x00\x00\x00\x00\x00z\x03\x00\x00\x00\x00\x00\x00\xb5\x03\x00\x00\x00\x00\x00\x00z\x03\x00\x00\x00\x00\x00\x00\xeb\x03\x00\x00\x00\x00\x00\x00*\x00\x00\x00\x00\x00\x00\x00\xe7\x03\x00\x00\x00\x00\x00\x00+\x00\x00\x00\x00\x00\x00\x00%\x00\x00\x00\x00\x00\x00\x00\xd9\x03\x00\x00\x00\x00\x00\x00\xa0\x03\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00\xe9\x03\x00\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00%\x00\x00\x00\x00\x00\x00\x00\xa0\x03\x00\x00\x00\x00\x00\x00&\x00\x00\x00\x00\x00\x00\x00-\x00\x00\x00\x00\x00\x00\x00\x8c\x03\x00\x00\x00\x00\x00\x00.\x00\x00\x00\x00\x00\x00\x00\x8c\x03\x00\x00\x00\x00\x00\x00\x7f\x03\x00\x00\x00\x00\x00\x00.\x00\x00\x00\x00\x00\x00\x00\xdd\x03\x00\x00\x00\x00\x00\x00\xec\x03\x00\x00\x00\x00\x00\x00\xa1\x03\x00\x00\x00\x00\x00\x00\x94\x03\x00\x00\x00\x00\x00\x00\xdd\x03\x00\x00\x00\x00\x00\x00\xa1\x03\x00\x00\x00\x00\x00\x00,\x00\x00\x00\x00\x00\x00\x00\x8b\x03\x00\x00\x00\x00\x00\x00-\x00\x00\x00\x00\x00\x00\x00x\x03\x00\x00\x00\x00\x00\x00l\x03\x00\x00\x00\x00\x00\x00\xeb\x03\x00\x00\x00\x00\x00\x00p\x03\x00\x00\x00\x00\x00\x00\xd8\x03\x00\x00\x00\x00\x00\x00\xba\x03\x00\x00\x00\x00\x00\x00y\x03\x00\x00\x00\x00\x00\x00z\x03\x00\x00\x00\x00\x00\x00\xad\x03\x00\x00\x00\x00\x00\x00\xed\x03\x00\x00\x00\x00\x00\x00\xeb\x03\x00\x00\x00\x00\x00\x00l\x03\x00\x00\x00\x00\x00\x00.\x00\x00\x00\x00\x00\x00\x00~\x03\x00\x00\x00\x00\x00\x00/\x00\x00\x00\x00\x00\x00\x00\xd5\x03\x00\x00\x00\x00\x00\x00\xb2\x03\x00\x00\x00\x00\x00\x00\xe0\x03\x00\x00\x00\x00\x00\x00\xbf\x03\x00\x00\x00\x00\x00\x00\xd5\x03\x00\x00\x00\x00\x00\x00\xe0\x03\x00\x00\x00\x00\x00\x00\xb2\x03\x00\x00\x00\x00\x00\x00\xd5\x03\x00\x00\x00\x00\x00\x00w\x03\x00\x00\x00\x00\x00\x00\xe0\x03\x00\x00\x00\x00\x00\x00\xbe\x03\x00\x00\x00\x00\x00\x00\xbf\x03\x00\x00\x00\x00\x00\x00\xe0\x03\x00\x00\x00\x00\x00\x00\xb2\x03\x00\x00\x00\x00\x00\x00\xaf\x03\x00\x00\x00\x00\x00\x00\x9a\x03\x00\x00\x00\x00\x00\x00u\x03\x00\x00\x00\x00\x00\x00O\x00\x00\x00\x00\x00\x00\x00\x9c\x03\x00\x00\x00\x00\x00\x00N\x00\x00\x00\x00\x00\x00\x00u\x03\x00\x00\x00\x00\x00\x00z\x03\x00\x00\x00\x00\x00\x00\xb5\x03\x00\x00\x00\x00\x00\x00\xad\x03\x00\x00\x00\x00\x00\x00\xd9\x03\x00\x00\x00\x00\x00\x00%\x00\x00\x00\x00\x00\x00\x00$\x00\x00\x00\x00\x00\x00\x00u\x03\x00\x00\x00\x00\x00\x00N\x00\x00\x00\x00\x00\x00\x00O\x00\x00\x00\x00\x00\x00\x00|\x03\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x00\x00\x00\x00\xee\x03\x00\x00\x00\x00\x00\x00\x93\x00\x00\x00\x00\x00\x00\x00\x97\x03\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x97\x03\x00\x00\x00\x00\x00\x00#\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00\xee\x03\x00\x00\x00\x00\x00\x00\x8d\x03\x00\x00\x00\x00\x00\x00\x9b\x00\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\xc9\x03\x00\x00\x00\x00\x00\x00Z\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x000\x00\x00\x00\x00\x00\x00\x00\xc9\x03\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xb3\x03\x00\x00\x00\x00\x00\x00\xb5\x03\x00\x00\x00\x00\x00\x00\x82\x03\x00\x00\x00\x00\x00\x00\xb3\x03\x00\x00\x00\x00\x00\x00\xb0\x03\x00\x00\x00\x00\x00\x00\xb5\x03\x00\x00\x00\x00\x00\x00\xba\x03\x00\x00\x00\x00\x00\x00\xe1\x03\x00\x00\x00\x00\x00\x00\xa4\x03\x00\x00\x00\x00\x00\x00N\x00\x00\x00\x00\x00\x00\x00\x9c\x03\x00\x00\x00\x00\x00\x00M\x00\x00\x00\x00\x00\x00\x00\xe1\x03\x00\x00\x00\x00\x00\x00\xba\x03\x00\x00\x00\x00\x00\x00\xd8\x03\x00\x00\x00\x00\x00\x00\xe1\x03\x00\x00\x00\x00\x00\x00\xa7\x03\x00\x00\x00\x00\x00\x00\xa4\x03\x00\x00\x00\x00\x00\x00\xbd\x03\x00\x00\x00\x00\x00\x00\xca\x03\x00\x00\x00\x00\x00\x00\xc3\x03\x00\x00\x00\x00\x00\x00|\x03\x00\x00\x00\x00\x00\x00\xee\x03\x00\x00\x00\x00\x00\x00\xef\x03\x00\x00\x00\x00\x00\x00\xee\x03\x00\x00\x00\x00\x00\x00s\x03\x00\x00\x00\x00\x00\x00\xef\x03\x00\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\xe9\x03\x00\x00\x00\x00\x00\x00{\x03\x00\x00\x00\x00\x00\x00\xa0\x03\x00\x00\x00\x00\x00\x00\x84\x03\x00\x00\x00\x00\x00\x00\xe5\x03\x00\x00\x00\x00\x00\x00\xd6\x03\x00\x00\x00\x00\x00\x00\xf0\x03\x00\x00\x00\x00\x00\x00\xa8\x03\x00\x00\x00\x00\x00\x00\xbb\x03\x00\x00\x00\x00\x00\x00\xdf\x03\x00\x00\x00\x00\x00\x00\xd3\x03\x00\x00\x00\x00\x00\x00\xbb\x03\x00\x00\x00\x00\x00\x00\xc1\x03\x00\x00\x00\x00\x00\x00\xdf\x03\x00\x00\x00\x00\x00\x00n\x03\x00\x00\x00\x00\x00\x00\xcb\x03\x00\x00\x00\x00\x00\x00\xc6\x03\x00\x00\x00\x00\x00\x00l\x03\x00\x00\x00\x00\x00\x00j\x03\x00\x00\x00\x00\x00\x00\xed\x03\x00\x00\x00\x00\x00\x00\xc0\x03\x00\x00\x00\x00\x00\x00\xc1\x03\x00\x00\x00\x00\x00\x00\xe2\x03\x00\x00\x00\x00\x00\x00\xbd\x03\x00\x00\x00\x00\x00\x00\xbb\x03\x00\x00\x00\x00\x00\x00\xd3\x03\x00\x00\x00\x00\x00\x00s\x03\x00\x00\x00\x00\x00\x00\xee\x03\x00\x00\x00\x00\x00\x00\x8d\x03\x00\x00\x00\x00\x00\x00\xee\x03\x00\x00\x00\x00\x00\x00\x9b\x00\x00\x00\x00\x00\x00\x00\x8d\x03\x00\x00\x00\x00\x00\x00\xe4\x03\x00\x00\x00\x00\x00\x00\xe9\x03\x00\x00\x00\x00\x00\x00\xd2\x03\x00\x00\x00\x00\x00\x00\xe9\x03\x00\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\xd2\x03\x00\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\xe9\x03\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00\xcb\x03\x00\x00\x00\x00\x00\x00\xc5\x03\x00\x00\x00\x00\x00\x00\xc6\x03\x00\x00\x00\x00\x00\x00S\x00\x00\x00\x00\x00\x00\x00\xc5\x03\x00\x00\x00\x00\x00\x00R\x00\x00\x00\x00\x00\x00\x00\xd6\x03\x00\x00\x00\x00\x00\x00\x84\x03\x00\x00\x00\x00\x00\x00\x85\x03\x00\x00\x00\x00\x00\x00\x9e\x03\x00\x00\x00\x00\x00\x00\xe8\x03\x00\x00\x00\x00\x00\x00\x91\x03\x00\x00\x00\x00\x00\x00\x9b\x00\x00\x00\x00\x00\x00\x00\xee\x03\x00\x00\x00\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00\xca\x03\x00\x00\x00\x00\x00\x00\xcd\x03\x00\x00\x00\x00\x00\x00\xf1\x03\x00\x00\x00\x00\x00\x00\xca\x03\x00\x00\x00\x00\x00\x00\xf1\x03\x00\x00\x00\x00\x00\x00\xc3\x03\x00\x00\x00\x00\x00\x00\xc3\x03\x00\x00\x00\x00\x00\x00\xf1\x03\x00\x00\x00\x00\x00\x00\xce\x03\x00\x00\x00\x00\x00\x00\xe8\x03\x00\x00\x00\x00\x00\x00\x92\x03\x00\x00\x00\x00\x00\x00\x91\x03\x00\x00\x00\x00\x00\x00\xdd\x03\x00\x00\x00\x00\x00\x00\x8b\x03\x00\x00\x00\x00\x00\x00\xec\x03\x00\x00\x00\x00\x00\x00\x8a\x03\x00\x00\x00\x00\x00\x00\x8b\x03\x00\x00\x00\x00\x00\x00\xdd\x03\x00\x00\x00\x00\x00\x00\x85\x03\x00\x00\x00\x00\x00\x00\x92\x03\x00\x00\x00\x00\x00\x00\xdb\x03\x00\x00\x00\x00\x00\x00\xea\x03\x00\x00\x00\x00\x00\x00\xd9\x03\x00\x00\x00\x00\x00\x00\x9e\x03\x00\x00\x00\x00\x00\x00\xea\x03\x00\x00\x00\x00\x00\x00\x83\x03\x00\x00\x00\x00\x00\x00\xa0\x03\x00\x00\x00\x00\x00\x00\xae\x03\x00\x00\x00\x00\x00\x00\xcc\x03\x00\x00\x00\x00\x00\x00\xcb\x03\x00\x00\x00\x00\x00\x00\xaa\x03\x00\x00\x00\x00\x00\x00\xa8\x03\x00\x00\x00\x00\x00\x00\xa3\x03\x00\x00\x00\x00\x00\x00\xec\x03\x00\x00\x00\x00\x00\x00\x8b\x03\x00\x00\x00\x00\x00\x00\xe7\x03\x00\x00\x00\x00\x00\x00p\x03\x00\x00\x00\x00\x00\x00\xba\x03\x00\x00\x00\x00\x00\x00\xb4\x03\x00\x00\x00\x00\x00\x00\x8b\x03\x00\x00\x00\x00\x00\x00+\x00\x00\x00\x00\x00\x00\x00\xe7\x03\x00\x00\x00\x00\x00\x00+\x00\x00\x00\x00\x00\x00\x00\x8b\x03\x00\x00\x00\x00\x00\x00,\x00\x00\x00\x00\x00\x00\x00\xf1\x03\x00\x00\x00\x00\x00\x00\xcd\x03\x00\x00\x00\x00\x00\x00~\x03\x00\x00\x00\x00\x00\x00\x7f\x03\x00\x00\x00\x00\x00\x00\xf1\x03\x00\x00\x00\x00\x00\x00~\x03\x00\x00\x00\x00\x00\x00\xf1\x03\x00\x00\x00\x00\x00\x00\x7f\x03\x00\x00\x00\x00\x00\x00\xce\x03\x00\x00\x00\x00\x00\x00\xc1\x03\x00\x00\x00\x00\x00\x00\xbb\x03\x00\x00\x00\x00\x00\x00\xe2\x03\x00\x00\x00\x00\x00\x00\xb1\x03\x00\x00\x00\x00\x00\x00\x98\x03\x00\x00\x00\x00\x00\x00\xf0\x03\x00\x00\x00\x00\x00\x00\xb1\x03\x00\x00\x00\x00\x00\x00y\x03\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\xbb\x03\x00\x00\x00\x00\x00\x00\xc7\x03\x00\x00\x00\x00\x00\x00\xe2\x03\x00\x00\x00\x00\x00\x00\xe8\x03\x00\x00\x00\x00\x00\x00\xe4\x03\x00\x00\x00\x00\x00\x00\xd0\x03\x00\x00\x00\x00\x00\x00\x87\x03\x00\x00\x00\x00\x00\x00\x98\x03\x00\x00\x00\x00\x00\x00\x86\x03\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x00\x00\x00\x00\x8f\x03\x00\x00\x00\x00\x00\x00\x8e\x03\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x9d\x03\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\xb6\x03\x00\x00\x00\x00\x00\x00\xb7\x03\x00\x00\x00\x00\x00\x00\x9b\x03\x00\x00\x00\x00\x00\x00|\x03\x00\x00\x00\x00\x00\x00\xed\x03\x00\x00\x00\x00\x00\x00j\x03\x00\x00\x00\x00\x00\x00\x9a\x03\x00\x00\x00\x00\x00\x00\xb7\x03\x00\x00\x00\x00\x00\x00\xb2\x03\x00\x00\x00\x00\x00\x00\x9c\x03\x00\x00\x00\x00\x00\x00\x9d\x03\x00\x00\x00\x00\x00\x00M\x00\x00\x00\x00\x00\x00\x00\xb7\x03\x00\x00\x00\x00\x00\x00\x9a\x03\x00\x00\x00\x00\x00\x00\x9b\x03\x00\x00\x00\x00\x00\x00\x80\x03\x00\x00\x00\x00\x00\x00\x8f\x03\x00\x00\x00\x00\x00\x00\x90\x03\x00\x00\x00\x00\x00\x00\xe7\x03\x00\x00\x00\x00\x00\x00\xa2\x03\x00\x00\x00\x00\x00\x00\xec\x03\x00\x00\x00\x00\x00\x00\xa2\x03\x00\x00\x00\x00\x00\x00\xa1\x03\x00\x00\x00\x00\x00\x00\xec\x03\x00\x00\x00\x00\x00\x00\x9d\x03\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00M\x00\x00\x00\x00\x00\x00\x00U\x00\x00\x00\x00\x00\x00\x00\xc2\x03\x00\x00\x00\x00\x00\x00T\x00\x00\x00\x00\x00\x00\x00\xf0\x03\x00\x00\x00\x00\x00\x00\xdc\x03\x00\x00\x00\x00\x00\x00\xb1\x03\x00\x00\x00\x00\x00\x00\xa7\x03\x00\x00\x00\x00\x00\x00\xe2\x03\x00\x00\x00\x00\x00\x00\xc7\x03\x00\x00\x00\x00\x00\x00\xf2\x03\x00\x00\x00\x00\x00\x00\xa8\x03\x00\x00\x00\x00\x00\x00\xf0\x03\x00\x00\x00\x00\x00\x00\xf2\x03\x00\x00\x00\x00\x00\x00\x99\x03\x00\x00\x00\x00\x00\x00\xa3\x03\x00\x00\x00\x00\x00\x00\xa5\x03\x00\x00\x00\x00\x00\x00\x88\x03\x00\x00\x00\x00\x00\x00\x86\x03\x00\x00\x00\x00\x00\x00\x92\x03\x00\x00\x00\x00\x00\x00\xe8\x03\x00\x00\x00\x00\x00\x00\xd0\x03\x00\x00\x00\x00\x00\x00\xf2\x03\x00\x00\x00\x00\x00\x00\x98\x03\x00\x00\x00\x00\x00\x00\x99\x03\x00\x00\x00\x00\x00\x00\xd4\x03\x00\x00\x00\x00\x00\x00X\x00\x00\x00\x00\x00\x00\x00\xca\x03\x00\x00\x00\x00\x00\x00\xd4\x03\x00\x00\x00\x00\x00\x00\xbd\x03\x00\x00\x00\x00\x00\x00\xd3\x03\x00\x00\x00\x00\x00\x00\xbd\x03\x00\x00\x00\x00\x00\x00\xd4\x03\x00\x00\x00\x00\x00\x00\xca\x03\x00\x00\x00\x00\x00\x00\x98\x03\x00\x00\x00\x00\x00\x00\xf2\x03\x00\x00\x00\x00\x00\x00\xf0\x03\x00\x00\x00\x00\x00\x00\xa4\x03\x00\x00\x00\x00\x00\x00\xa5\x03\x00\x00\x00\x00\x00\x00\xba\x03\x00\x00\x00\x00\x00\x00\xc4\x03\x00\x00\x00\x00\x00\x00S\x00\x00\x00\x00\x00\x00\x00T\x00\x00\x00\x00\x00\x00\x00\xc4\x03\x00\x00\x00\x00\x00\x00\xc8\x03\x00\x00\x00\x00\x00\x00\xc6\x03\x00\x00\x00\x00\x00\x00\xb6\x03\x00\x00\x00\x00\x00\x00\xd7\x03\x00\x00\x00\x00\x00\x00\xcc\x03\x00\x00\x00\x00\x00\x00\xd7\x03\x00\x00\x00\x00\x00\x00\xb6\x03\x00\x00\x00\x00\x00\x00\x9b\x03\x00\x00\x00\x00\x00\x00\xb8\x03\x00\x00\x00\x00\x00\x00\xb2\x03\x00\x00\x00\x00\x00\x00\xb7\x03\x00\x00\x00\x00\x00\x00\xb2\x03\x00\x00\x00\x00\x00\x00\xb8\x03\x00\x00\x00\x00\x00\x00\xaf\x03\x00\x00\x00\x00\x00\x00\xd7\x03\x00\x00\x00\x00\x00\x00Q\x00\x00\x00\x00\x00\x00\x00\xcc\x03\x00\x00\x00\x00\x00\x00\xd0\x03\x00\x00\x00\x00\x00\x00\xd2\x03\x00\x00\x00\x00\x00\x00k\x03\x00\x00\x00\x00\x00\x00\xeb\x03\x00\x00\x00\x00\x00\x00\xed\x03\x00\x00\x00\x00\x00\x00\x81\x03\x00\x00\x00\x00\x00\x00\x89\x03\x00\x00\x00\x00\x00\x00\xa6\x03\x00\x00\x00\x00\x00\x00\x94\x03\x00\x00\x00\x00\x00\x00\xa5\x03\x00\x00\x00\x00\x00\x00\x86\x03\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\xdb\x03\x00\x00\x00\x00\x00\x00\xdc\x03\x00\x00\x00\x00\x00\x00\xd6\x03\x00\x00\x00\x00\x00\x00\xa6\x03\x00\x00\x00\x00\x00\x00\x93\x03\x00\x00\x00\x00\x00\x00\x94\x03\x00\x00\x00\x00\x00\x00\x95\x03\x00\x00\x00\x00\x00\x00\xdd\x03\x00\x00\x00\x00\x00\x00\x94\x03\x00\x00\x00\x00\x00\x00\xc7\x03\x00\x00\x00\x00\x00\x00\xbc\x03\x00\x00\x00\x00\x00\x00\x93\x03\x00\x00\x00\x00\x00\x00\xb0\x03\x00\x00\x00\x00\x00\x00\xad\x03\x00\x00\x00\x00\x00\x00\xb5\x03\x00\x00\x00\x00\x00\x00y\x03\x00\x00\x00\x00\x00\x00\xad\x03\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\xac\x03\x00\x00\x00\x00\x00\x00\xb0\x03\x00\x00\x00\x00\x00\x00\xb4\x03\x00\x00\x00\x00\x00\x00\xac\x03\x00\x00\x00\x00\x00\x00\xa5\x03\x00\x00\x00\x00\x00\x00\xab\x03\x00\x00\x00\x00\x00\x00\xb5\x03\x00\x00\x00\x00\x00\x00\xeb\x03\x00\x00\x00\x00\x00\x00\x81\x03\x00\x00\x00\x00\x00\x00m\x03\x00\x00\x00\x00\x00\x00x\x03\x00\x00\x00\x00\x00\x00\xda\x03\x00\x00\x00\x00\x00\x00\xdc\x03\x00\x00\x00\x00\x00\x00\xda\x03\x00\x00\x00\x00\x00\x00\xb1\x03\x00\x00\x00\x00\x00\x00\x9f\x03\x00\x00\x00\x00\x00\x00{\x03\x00\x00\x00\x00\x00\x00\xe9\x03\x00\x00\x00\x00\x00\x00\xd9\x03\x00\x00\x00\x00\x00\x00\xea\x03\x00\x00\x00\x00\x00\x00\xa0\x03\x00\x00\x00\x00\x00\x00\xef\x03\x00\x00\x00\x00\x00\x00\xed\x03\x00\x00\x00\x00\x00\x00|\x03\x00\x00\x00\x00\x00\x00R\x00\x00\x00\x00\x00\x00\x00\xcc\x03\x00\x00\x00\x00\x00\x00Q\x00\x00\x00\x00\x00\x00\x00\xe5\x03\x00\x00\x00\x00\x00\x00&\x00\x00\x00\x00\x00\x00\x00\xa0\x03\x00\x00\x00\x00\x00\x00\x90\x03\x00\x00\x00\x00\x00\x00v\x03\x00\x00\x00\x00\x00\x00\x80\x03\x00\x00\x00\x00\x00\x00\xef\x03\x00\x00\x00\x00\x00\x00s\x03\x00\x00\x00\x00\x00\x00\x81\x03\x00\x00\x00\x00\x00\x00\xed\x03\x00\x00\x00\x00\x00\x00\xef\x03\x00\x00\x00\x00\x00\x00\x81\x03\x00\x00\x00\x00\x00\x00q\x03\x00\x00\x00\x00\x00\x00p\x03\x00\x00\x00\x00\x00\x00\xb4\x03\x00\x00\x00\x00\x00\x00\xda\x03\x00\x00\x00\x00\x00\x00x\x03\x00\x00\x00\x00\x00\x00y\x03\x00\x00\x00\x00\x00\x00\xdc\x03\x00\x00\x00\x00\x00\x00\xf0\x03\x00\x00\x00\x00\x00\x00\xd6\x03\x00\x00\x00\x00\x00\x00&\x00\x00\x00\x00\x00\x00\x00\xe5\x03\x00\x00\x00\x00\x00\x00\'\x00\x00\x00\x00\x00\x00\x00\xcc\x03\x00\x00\x00\x00\x00\x00\xae\x03\x00\x00\x00\x00\x00\x00\xb6\x03\x00\x00\x00\x00\x00\x00\x9f\x03\x00\x00\x00\x00\x00\x00\xe8\x03\x00\x00\x00\x00\x00\x00\x9e\x03\x00\x00\x00\x00\x00\x00\xe8\x03\x00\x00\x00\x00\x00\x00\x9f\x03\x00\x00\x00\x00\x00\x00\xe9\x03\x00\x00\x00\x00\x00\x00\xa8\x03\x00\x00\x00\x00\x00\x00\xf2\x03\x00\x00\x00\x00\x00\x00\xa3\x03\x00\x00\x00\x00\x00\x00\xe3\x03\x00\x00\x00\x00\x00\x00\'\x00\x00\x00\x00\x00\x00\x00\xe5\x03\x00\x00\x00\x00\x00\x00\'\x00\x00\x00\x00\x00\x00\x00\xe3\x03\x00\x00\x00\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\xa9\x03\x00\x00\x00\x00\x00\x00\xe3\x03\x00\x00\x00\x00\x00\x00\xe5\x03\x00\x00\x00\x00\x00\x00\xda\x03\x00\x00\x00\x00\x00\x00y\x03\x00\x00\x00\x00\x00\x00\xb1\x03\x00\x00\x00\x00\x00\x00\x85\x03\x00\x00\x00\x00\x00\x00\xdb\x03\x00\x00\x00\x00\x00\x00\xd6\x03\x00\x00\x00\x00\x00\x00}\x00\x00\x00\x00\x00\x00\x00\xf4\x03\x00\x00\x00\x00\x00\x00\xf3\x03\x00\x00\x00\x00\x00\x00}\x00\x00\x00\x00\x00\x00\x00\xf3\x03\x00\x00\x00\x00\x00\x00|\x00\x00\x00\x00\x00\x00\x00\xf5\x03\x00\x00\x00\x00\x00\x00\xf7\x03\x00\x00\x00\x00\x00\x00\xf6\x03\x00\x00\x00\x00\x00\x00\xf5\x03\x00\x00\x00\x00\x00\x00\xf8\x03\x00\x00\x00\x00\x00\x00\xf7\x03\x00\x00\x00\x00\x00\x00\xf9\x03\x00\x00\x00\x00\x00\x00\xfb\x03\x00\x00\x00\x00\x00\x00\xfa\x03\x00\x00\x00\x00\x00\x00\xf3\x03\x00\x00\x00\x00\x00\x00\xfd\x03\x00\x00\x00\x00\x00\x00\xfc\x03\x00\x00\x00\x00\x00\x00\xfe\x03\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\x00\xfc\x03\x00\x00\x00\x00\x00\x00\xfd\x03\x00\x00\x00\x00\x00\x00\x01\x04\x00\x00\x00\x00\x00\x00\xf9\x03\x00\x00\x00\x00\x00\x00\xfa\x03\x00\x00\x00\x00\x00\x00\x02\x04\x00\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x05\x04\x00\x00\x00\x00\x00\x00\x04\x04\x00\x00\x00\x00\x00\x00\x06\x04\x00\x00\x00\x00\x00\x00\x08\x04\x00\x00\x00\x00\x00\x00\x07\x04\x00\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x04\x04\x00\x00\x00\x00\x00\x00\t\x04\x00\x00\x00\x00\x00\x00\x06\x04\x00\x00\x00\x00\x00\x00\x07\x04\x00\x00\x00\x00\x00\x00\n\x04\x00\x00\x00\x00\x00\x00\x0b\x04\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x0c\x04\x00\x00\x00\x00\x00\x00\r\x04\x00\x00\x00\x00\x00\x00\xfe\x03\x00\x00\x00\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\x00\x0e\x04\x00\x00\x00\x00\x00\x00\x10\x04\x00\x00\x00\x00\x00\x00\x0f\x04\x00\x00\x00\x00\x00\x00\x0f\x04\x00\x00\x00\x00\x00\x00\x10\x04\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00\x00<\x00\x00\x00\x00\x00\x00\x00\x13\x04\x00\x00\x00\x00\x00\x00\x12\x04\x00\x00\x00\x00\x00\x00<\x00\x00\x00\x00\x00\x00\x00\x12\x04\x00\x00\x00\x00\x00\x00;\x00\x00\x00\x00\x00\x00\x00\x0c\x04\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x14\x04\x00\x00\x00\x00\x00\x00\xfb\x03\x00\x00\x00\x00\x00\x00\x16\x04\x00\x00\x00\x00\x00\x00\x15\x04\x00\x00\x00\x00\x00\x00\x17\x04\x00\x00\x00\x00\x00\x00\x19\x04\x00\x00\x00\x00\x00\x00\x18\x04\x00\x00\x00\x00\x00\x00\x18\x04\x00\x00\x00\x00\x00\x00\x19\x04\x00\x00\x00\x00\x00\x00\x1a\x04\x00\x00\x00\x00\x00\x00\x1b\x04\x00\x00\x00\x00\x00\x00\x1d\x04\x00\x00\x00\x00\x00\x00\x1c\x04\x00\x00\x00\x00\x00\x00\x1b\x04\x00\x00\x00\x00\x00\x00\x1c\x04\x00\x00\x00\x00\x00\x00\x1e\x04\x00\x00\x00\x00\x00\x00\x1f\x04\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x00\x00\x00\x00y\x00\x00\x00\x00\x00\x00\x00]\x00\x00\x00\x00\x00\x00\x00\x1a\x04\x00\x00\x00\x00\x00\x00\x19\x04\x00\x00\x00\x00\x00\x00]\x00\x00\x00\x00\x00\x00\x00\x19\x04\x00\x00\x00\x00\x00\x00^\x00\x00\x00\x00\x00\x00\x00\x1f\x04\x00\x00\x00\x00\x00\x00y\x00\x00\x00\x00\x00\x00\x00 \x04\x00\x00\x00\x00\x00\x00 \x04\x00\x00\x00\x00\x00\x00y\x00\x00\x00\x00\x00\x00\x00z\x00\x00\x00\x00\x00\x00\x00\x15\x04\x00\x00\x00\x00\x00\x00\x16\x04\x00\x00\x00\x00\x00\x00!\x04\x00\x00\x00\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00"\x04\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x18\x04\x00\x00\x00\x00\x00\x00\x1a\x04\x00\x00\x00\x00\x00\x00#\x04\x00\x00\x00\x00\x00\x00$\x04\x00\x00\x00\x00\x00\x003\x00\x00\x00\x00\x00\x00\x004\x00\x00\x00\x00\x00\x00\x00%\x04\x00\x00\x00\x00\x00\x00\'\x04\x00\x00\x00\x00\x00\x00&\x04\x00\x00\x00\x00\x00\x00%\x04\x00\x00\x00\x00\x00\x00(\x04\x00\x00\x00\x00\x00\x00!\x04\x00\x00\x00\x00\x00\x00%\x04\x00\x00\x00\x00\x00\x00&\x04\x00\x00\x00\x00\x00\x00)\x04\x00\x00\x00\x00\x00\x00%\x04\x00\x00\x00\x00\x00\x00)\x04\x00\x00\x00\x00\x00\x00$\x04\x00\x00\x00\x00\x00\x00*\x04\x00\x00\x00\x00\x00\x00,\x04\x00\x00\x00\x00\x00\x00+\x04\x00\x00\x00\x00\x00\x00*\x04\x00\x00\x00\x00\x00\x00+\x04\x00\x00\x00\x00\x00\x00-\x04\x00\x00\x00\x00\x00\x00.\x04\x00\x00\x00\x00\x00\x00/\x04\x00\x00\x00\x00\x00\x00\x0b\x04\x00\x00\x00\x00\x00\x00\x0b\x04\x00\x00\x00\x00\x00\x00/\x04\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x000\x04\x00\x00\x00\x00\x00\x00\xfc\x03\x00\x00\x00\x00\x00\x00\x01\x04\x00\x00\x00\x00\x00\x001\x04\x00\x00\x00\x00\x00\x003\x04\x00\x00\x00\x00\x00\x002\x04\x00\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x004\x04\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\n\x04\x00\x00\x00\x00\x00\x00\xf4\x03\x00\x00\x00\x00\x00\x005\x04\x00\x00\x00\x00\x00\x00\n\x04\x00\x00\x00\x00\x00\x005\x04\x00\x00\x00\x00\x00\x006\x04\x00\x00\x00\x00\x00\x00\xf4\x03\x00\x00\x00\x00\x00\x00~\x00\x00\x00\x00\x00\x00\x005\x04\x00\x00\x00\x00\x00\x005\x04\x00\x00\x00\x00\x00\x00~\x00\x00\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x00a\x00\x00\x00\x00\x00\x00\x008\x04\x00\x00\x00\x00\x00\x007\x04\x00\x00\x00\x00\x00\x00a\x00\x00\x00\x00\x00\x00\x007\x04\x00\x00\x00\x00\x00\x00b\x00\x00\x00\x00\x00\x00\x00\t\x04\x00\x00\x00\x00\x00\x009\x04\x00\x00\x00\x00\x00\x00\x08\x04\x00\x00\x00\x00\x00\x00\x08\x04\x00\x00\x00\x00\x00\x009\x04\x00\x00\x00\x00\x00\x00:\x04\x00\x00\x00\x00\x00\x002\x04\x00\x00\x00\x00\x00\x00f\x00\x00\x00\x00\x00\x00\x001\x04\x00\x00\x00\x00\x00\x003\x04\x00\x00\x00\x00\x00\x001\x04\x00\x00\x00\x00\x00\x00\x10\x04\x00\x00\x00\x00\x00\x00;\x04\x00\x00\x00\x00\x00\x00"\x04\x00\x00\x00\x00\x00\x00<\x04\x00\x00\x00\x00\x00\x009\x04\x00\x00\x00\x00\x00\x00=\x04\x00\x00\x00\x00\x00\x00\xfd\x03\x00\x00\x00\x00\x00\x00\xfd\x03\x00\x00\x00\x00\x00\x00=\x04\x00\x00\x00\x00\x00\x00\x01\x04\x00\x00\x00\x00\x00\x00<\x04\x00\x00\x00\x00\x00\x00"\x04\x00\x00\x00\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00>\x04\x00\x00\x00\x00\x00\x00=\x04\x00\x00\x00\x00\x00\x009\x04\x00\x00\x00\x00\x00\x00?\x04\x00\x00\x00\x00\x00\x00\x1f\x04\x00\x00\x00\x00\x00\x00@\x04\x00\x00\x00\x00\x00\x00.\x04\x00\x00\x00\x00\x00\x00B\x04\x00\x00\x00\x00\x00\x00A\x04\x00\x00\x00\x00\x00\x001\x04\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00\x00\x10\x04\x00\x00\x00\x00\x00\x00C\x04\x00\x00\x00\x00\x00\x00\xfe\x03\x00\x00\x00\x00\x00\x00\r\x04\x00\x00\x00\x00\x00\x00@\x04\x00\x00\x00\x00\x00\x00E\x04\x00\x00\x00\x00\x00\x00D\x04\x00\x00\x00\x00\x00\x00F\x04\x00\x00\x00\x00\x00\x00C\x04\x00\x00\x00\x00\x00\x00\r\x04\x00\x00\x00\x00\x00\x00\r\x04\x00\x00\x00\x00\x00\x00\x1e\x04\x00\x00\x00\x00\x00\x00F\x04\x00\x00\x00\x00\x00\x00\xfe\x03\x00\x00\x00\x00\x00\x00\x14\x04\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x16\x04\x00\x00\x00\x00\x00\x00\x0c\x04\x00\x00\x00\x00\x00\x00\x14\x04\x00\x00\x00\x00\x00\x00G\x04\x00\x00\x00\x00\x00\x00I\x04\x00\x00\x00\x00\x00\x00H\x04\x00\x00\x00\x00\x00\x00H\x04\x00\x00\x00\x00\x00\x00I\x04\x00\x00\x00\x00\x00\x00J\x04\x00\x00\x00\x00\x00\x00-\x04\x00\x00\x00\x00\x00\x002\x00\x00\x00\x00\x00\x00\x00*\x04\x00\x00\x00\x00\x00\x00*\x04\x00\x00\x00\x00\x00\x002\x00\x00\x00\x00\x00\x00\x003\x00\x00\x00\x00\x00\x00\x00(\x04\x00\x00\x00\x00\x00\x006\x00\x00\x00\x00\x00\x00\x00\x15\x04\x00\x00\x00\x00\x00\x00K\x04\x00\x00\x00\x00\x00\x00L\x04\x00\x00\x00\x00\x00\x00\x01\x04\x00\x00\x00\x00\x00\x00?\x04\x00\x00\x00\x00\x00\x00N\x04\x00\x00\x00\x00\x00\x00M\x04\x00\x00\x00\x00\x00\x00\x15\x04\x00\x00\x00\x00\x00\x006\x00\x00\x00\x00\x00\x00\x007\x00\x00\x00\x00\x00\x00\x00C\x04\x00\x00\x00\x00\x00\x00F\x04\x00\x00\x00\x00\x00\x00O\x04\x00\x00\x00\x00\x00\x00H\x04\x00\x00\x00\x00\x00\x00J\x04\x00\x00\x00\x00\x00\x00P\x04\x00\x00\x00\x00\x00\x00O\x04\x00\x00\x00\x00\x00\x00F\x04\x00\x00\x00\x00\x00\x00Q\x04\x00\x00\x00\x00\x00\x00R\x04\x00\x00\x00\x00\x00\x00S\x04\x00\x00\x00\x00\x00\x00J\x04\x00\x00\x00\x00\x00\x00\x0f\x04\x00\x00\x00\x00\x00\x004\x04\x00\x00\x00\x00\x00\x00T\x04\x00\x00\x00\x00\x00\x00^\x00\x00\x00\x00\x00\x00\x00\x19\x04\x00\x00\x00\x00\x00\x00U\x04\x00\x00\x00\x00\x00\x00^\x00\x00\x00\x00\x00\x00\x00U\x04\x00\x00\x00\x00\x00\x00_\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00"\x04\x00\x00\x00\x00\x00\x00V\x04\x00\x00\x00\x00\x00\x000\x04\x00\x00\x00\x00\x00\x00\x01\x04\x00\x00\x00\x00\x00\x00L\x04\x00\x00\x00\x00\x00\x002\x04\x00\x00\x00\x00\x00\x00X\x04\x00\x00\x00\x00\x00\x00W\x04\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00V\x04\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00L\x04\x00\x00\x00\x00\x00\x00 \x04\x00\x00\x00\x00\x00\x000\x04\x00\x00\x00\x00\x00\x00H\x04\x00\x00\x00\x00\x00\x00P\x04\x00\x00\x00\x00\x00\x00Y\x04\x00\x00\x00\x00\x00\x00W\x04\x00\x00\x00\x00\x00\x00X\x04\x00\x00\x00\x00\x00\x00Z\x04\x00\x00\x00\x00\x00\x00[\x04\x00\x00\x00\x00\x00\x00\\\x04\x00\x00\x00\x00\x00\x004\x04\x00\x00\x00\x00\x00\x00E\x04\x00\x00\x00\x00\x00\x00L\x04\x00\x00\x00\x00\x00\x00K\x04\x00\x00\x00\x00\x00\x00(\x04\x00\x00\x00\x00\x00\x005\x00\x00\x00\x00\x00\x00\x006\x00\x00\x00\x00\x00\x00\x00 \x04\x00\x00\x00\x00\x00\x00z\x00\x00\x00\x00\x00\x00\x00]\x04\x00\x00\x00\x00\x00\x00]\x04\x00\x00\x00\x00\x00\x00z\x00\x00\x00\x00\x00\x00\x00{\x00\x00\x00\x00\x00\x00\x00^\x04\x00\x00\x00\x00\x00\x00`\x04\x00\x00\x00\x00\x00\x00_\x04\x00\x00\x00\x00\x00\x00_\x04\x00\x00\x00\x00\x00\x00`\x04\x00\x00\x00\x00\x00\x00\x02\x04\x00\x00\x00\x00\x00\x00\\\x04\x00\x00\x00\x00\x00\x00T\x04\x00\x00\x00\x00\x00\x004\x04\x00\x00\x00\x00\x00\x00\xf8\x03\x00\x00\x00\x00\x00\x00\xf5\x03\x00\x00\x00\x00\x00\x00a\x04\x00\x00\x00\x00\x00\x00b\x04\x00\x00\x00\x00\x00\x00`\x04\x00\x00\x00\x00\x00\x00c\x04\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00<\x04\x00\x00\x00\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00)\x04\x00\x00\x00\x00\x00\x00&\x04\x00\x00\x00\x00\x00\x00d\x04\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00Z\x04\x00\x00\x00\x00\x00\x00?\x04\x00\x00\x00\x00\x00\x00M\x04\x00\x00\x00\x00\x00\x00e\x04\x00\x00\x00\x00\x00\x00;\x04\x00\x00\x00\x00\x00\x00<\x04\x00\x00\x00\x00\x00\x00X\x04\x00\x00\x00\x00\x00\x00e\x04\x00\x00\x00\x00\x00\x00M\x04\x00\x00\x00\x00\x00\x00w\x00\x00\x00\x00\x00\x00\x00X\x04\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00Z\x04\x00\x00\x00\x00\x00\x00<\x04\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00X\x04\x00\x00\x00\x00\x00\x00;\x00\x00\x00\x00\x00\x00\x00\x12\x04\x00\x00\x00\x00\x00\x00^\x04\x00\x00\x00\x00\x00\x00;\x00\x00\x00\x00\x00\x00\x00^\x04\x00\x00\x00\x00\x00\x00:\x00\x00\x00\x00\x00\x00\x00f\x04\x00\x00\x00\x00\x00\x00,\x04\x00\x00\x00\x00\x00\x00)\x04\x00\x00\x00\x00\x00\x00T\x04\x00\x00\x00\x00\x00\x00h\x04\x00\x00\x00\x00\x00\x00g\x04\x00\x00\x00\x00\x00\x00T\x04\x00\x00\x00\x00\x00\x00\\\x04\x00\x00\x00\x00\x00\x00i\x04\x00\x00\x00\x00\x00\x00=\x00\x00\x00\x00\x00\x00\x00N\x04\x00\x00\x00\x00\x00\x00\x13\x04\x00\x00\x00\x00\x00\x00=\x00\x00\x00\x00\x00\x00\x00\x13\x04\x00\x00\x00\x00\x00\x00<\x00\x00\x00\x00\x00\x00\x00j\x04\x00\x00\x00\x00\x00\x00h\x04\x00\x00\x00\x00\x00\x00T\x04\x00\x00\x00\x00\x00\x00f\x04\x00\x00\x00\x00\x00\x00)\x04\x00\x00\x00\x00\x00\x00d\x04\x00\x00\x00\x00\x00\x00j\x04\x00\x00\x00\x00\x00\x00T\x04\x00\x00\x00\x00\x00\x00i\x04\x00\x00\x00\x00\x00\x00U\x04\x00\x00\x00\x00\x00\x00k\x04\x00\x00\x00\x00\x00\x00_\x00\x00\x00\x00\x00\x00\x00,\x04\x00\x00\x00\x00\x00\x00f\x04\x00\x00\x00\x00\x00\x00#\x04\x00\x00\x00\x00\x00\x00:\x04\x00\x00\x00\x00\x00\x00\xfd\x03\x00\x00\x00\x00\x00\x00\xf3\x03\x00\x00\x00\x00\x00\x00\x18\x04\x00\x00\x00\x00\x00\x00#\x04\x00\x00\x00\x00\x00\x00f\x04\x00\x00\x00\x00\x00\x00l\x04\x00\x00\x00\x00\x00\x00J\x04\x00\x00\x00\x00\x00\x00S\x04\x00\x00\x00\x00\x00\x00e\x04\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x00\x00\x00\x00\x1f\x04\x00\x00\x00\x00\x00\x00?\x04\x00\x00\x00\x00\x00\x00e\x04\x00\x00\x00\x00\x00\x00\x1f\x04\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x00\x00\x00\x00e\x04\x00\x00\x00\x00\x00\x00w\x00\x00\x00\x00\x00\x00\x00\x14\x04\x00\x00\x00\x00\x00\x00C\x04\x00\x00\x00\x00\x00\x00\'\x04\x00\x00\x00\x00\x00\x00&\x04\x00\x00\x00\x00\x00\x00\'\x04\x00\x00\x00\x00\x00\x00C\x04\x00\x00\x00\x00\x00\x00\xf4\x03\x00\x00\x00\x00\x00\x00\x07\x04\x00\x00\x00\x00\x00\x00\xf3\x03\x00\x00\x00\x00\x00\x00\x07\x04\x00\x00\x00\x00\x00\x00\xf4\x03\x00\x00\x00\x00\x00\x00\n\x04\x00\x00\x00\x00\x00\x00\xf3\x03\x00\x00\x00\x00\x00\x00\x07\x04\x00\x00\x00\x00\x00\x00:\x04\x00\x00\x00\x00\x00\x00-\x04\x00\x00\x00\x00\x00\x00n\x04\x00\x00\x00\x00\x00\x00m\x04\x00\x00\x00\x00\x00\x00\x14\x04\x00\x00\x00\x00\x00\x00\xfe\x03\x00\x00\x00\x00\x00\x00C\x04\x00\x00\x00\x00\x00\x00b\x04\x00\x00\x00\x00\x00\x00\x0b\x04\x00\x00\x00\x00\x00\x00o\x04\x00\x00\x00\x00\x00\x00c\x04\x00\x00\x00\x00\x00\x00D\x04\x00\x00\x00\x00\x00\x00E\x04\x00\x00\x00\x00\x00\x00p\x04\x00\x00\x00\x00\x00\x00\xf7\x03\x00\x00\x00\x00\x00\x00\xf8\x03\x00\x00\x00\x00\x00\x00@\x04\x00\x00\x00\x00\x00\x00L\x04\x00\x00\x00\x00\x00\x00E\x04\x00\x00\x00\x00\x00\x00\x06\x04\x00\x00\x00\x00\x00\x00\n\x04\x00\x00\x00\x00\x00\x00\xf7\x03\x00\x00\x00\x00\x00\x00\x0f\x04\x00\x00\x00\x00\x00\x00g\x04\x00\x00\x00\x00\x00\x00\x0e\x04\x00\x00\x00\x00\x00\x00g\x04\x00\x00\x00\x00\x00\x00a\x04\x00\x00\x00\x00\x00\x00\x0e\x04\x00\x00\x00\x00\x00\x00>\x00\x00\x00\x00\x00\x00\x00N\x04\x00\x00\x00\x00\x00\x00=\x00\x00\x00\x00\x00\x00\x00f\x04\x00\x00\x00\x00\x00\x00d\x04\x00\x00\x00\x00\x00\x00Y\x04\x00\x00\x00\x00\x00\x006\x04\x00\x00\x00\x00\x00\x00\xf7\x03\x00\x00\x00\x00\x00\x00\n\x04\x00\x00\x00\x00\x00\x00\x18\x04\x00\x00\x00\x00\x00\x00f\x04\x00\x00\x00\x00\x00\x00Y\x04\x00\x00\x00\x00\x00\x00k\x04\x00\x00\x00\x00\x00\x00\x17\x04\x00\x00\x00\x00\x00\x00l\x04\x00\x00\x00\x00\x00\x00\x17\x04\x00\x00\x00\x00\x00\x00k\x04\x00\x00\x00\x00\x00\x00U\x04\x00\x00\x00\x00\x00\x00.\x04\x00\x00\x00\x00\x00\x00q\x04\x00\x00\x00\x00\x00\x00/\x04\x00\x00\x00\x00\x00\x00p\x04\x00\x00\x00\x00\x00\x00\x06\x04\x00\x00\x00\x00\x00\x00\xf7\x03\x00\x00\x00\x00\x00\x00W\x04\x00\x00\x00\x00\x00\x00h\x00\x00\x00\x00\x00\x00\x00g\x00\x00\x00\x00\x00\x00\x00.\x04\x00\x00\x00\x00\x00\x00>\x04\x00\x00\x00\x00\x00\x00q\x04\x00\x00\x00\x00\x00\x00\xfb\x03\x00\x00\x00\x00\x00\x00\x0c\x04\x00\x00\x00\x00\x00\x00\x16\x04\x00\x00\x00\x00\x00\x00\x1a\x04\x00\x00\x00\x00\x00\x00]\x00\x00\x00\x00\x00\x00\x00\\\x00\x00\x00\x00\x00\x00\x00\x17\x04\x00\x00\x00\x00\x00\x00U\x04\x00\x00\x00\x00\x00\x00\x19\x04\x00\x00\x00\x00\x00\x00Y\x04\x00\x00\x00\x00\x00\x00\x17\x04\x00\x00\x00\x00\x00\x00\x18\x04\x00\x00\x00\x00\x00\x002\x04\x00\x00\x00\x00\x00\x00W\x04\x00\x00\x00\x00\x00\x00g\x00\x00\x00\x00\x00\x00\x00Y\x04\x00\x00\x00\x00\x00\x00d\x04\x00\x00\x00\x00\x00\x00Q\x04\x00\x00\x00\x00\x00\x00)\x04\x00\x00\x00\x00\x00\x00,\x04\x00\x00\x00\x00\x00\x00$\x04\x00\x00\x00\x00\x00\x00i\x04\x00\x00\x00\x00\x00\x00r\x04\x00\x00\x00\x00\x00\x00R\x04\x00\x00\x00\x00\x00\x00s\x04\x00\x00\x00\x00\x00\x00i\x04\x00\x00\x00\x00\x00\x00R\x04\x00\x00\x00\x00\x00\x00i\x04\x00\x00\x00\x00\x00\x00s\x04\x00\x00\x00\x00\x00\x00j\x04\x00\x00\x00\x00\x00\x00\x15\x04\x00\x00\x00\x00\x00\x007\x00\x00\x00\x00\x00\x00\x00\xfb\x03\x00\x00\x00\x00\x00\x00b\x04\x00\x00\x00\x00\x00\x00o\x04\x00\x00\x00\x00\x00\x00`\x04\x00\x00\x00\x00\x00\x00>\x00\x00\x00\x00\x00\x00\x00M\x04\x00\x00\x00\x00\x00\x00N\x04\x00\x00\x00\x00\x00\x00Z\x04\x00\x00\x00\x00\x00\x00h\x00\x00\x00\x00\x00\x00\x00W\x04\x00\x00\x00\x00\x00\x00(\x04\x00\x00\x00\x00\x00\x00%\x04\x00\x00\x00\x00\x00\x00t\x04\x00\x00\x00\x00\x00\x00\x1c\x04\x00\x00\x00\x00\x00\x00s\x04\x00\x00\x00\x00\x00\x00G\x04\x00\x00\x00\x00\x00\x00\x1e\x04\x00\x00\x00\x00\x00\x00\x1c\x04\x00\x00\x00\x00\x00\x00G\x04\x00\x00\x00\x00\x00\x00\x1e\x04\x00\x00\x00\x00\x00\x00G\x04\x00\x00\x00\x00\x00\x00F\x04\x00\x00\x00\x00\x00\x00b\x04\x00\x00\x00\x00\x00\x00c\x04\x00\x00\x00\x00\x00\x00B\x04\x00\x00\x00\x00\x00\x00(\x04\x00\x00\x00\x00\x00\x00t\x04\x00\x00\x00\x00\x00\x005\x00\x00\x00\x00\x00\x00\x00G\x04\x00\x00\x00\x00\x00\x00Q\x04\x00\x00\x00\x00\x00\x00F\x04\x00\x00\x00\x00\x00\x00\xf4\x03\x00\x00\x00\x00\x00\x00}\x00\x00\x00\x00\x00\x00\x00~\x00\x00\x00\x00\x00\x00\x00]\x04\x00\x00\x00\x00\x00\x00\xfc\x03\x00\x00\x00\x00\x00\x000\x04\x00\x00\x00\x00\x00\x00?\x04\x00\x00\x00\x00\x00\x00@\x04\x00\x00\x00\x00\x00\x00\x13\x04\x00\x00\x00\x00\x00\x00\x13\x04\x00\x00\x00\x00\x00\x00N\x04\x00\x00\x00\x00\x00\x00?\x04\x00\x00\x00\x00\x00\x00D\x04\x00\x00\x00\x00\x00\x00\x12\x04\x00\x00\x00\x00\x00\x00\x13\x04\x00\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x001\x04\x00\x00\x00\x00\x00\x00f\x00\x00\x00\x00\x00\x00\x00\x0e\x04\x00\x00\x00\x00\x00\x00\xf5\x03\x00\x00\x00\x00\x00\x00u\x04\x00\x00\x00\x00\x00\x00f\x00\x00\x00\x00\x00\x00\x002\x04\x00\x00\x00\x00\x00\x00g\x00\x00\x00\x00\x00\x00\x00\x13\x04\x00\x00\x00\x00\x00\x00@\x04\x00\x00\x00\x00\x00\x00D\x04\x00\x00\x00\x00\x00\x00\xf5\x03\x00\x00\x00\x00\x00\x00\x0e\x04\x00\x00\x00\x00\x00\x00a\x04\x00\x00\x00\x00\x00\x00\x0c\x04\x00\x00\x00\x00\x00\x00\xf9\x03\x00\x00\x00\x00\x00\x00\x0b\x04\x00\x00\x00\x00\x00\x00\xf6\x03\x00\x00\x00\x00\x00\x00;\x04\x00\x00\x00\x00\x00\x00u\x04\x00\x00\x00\x00\x00\x00u\x04\x00\x00\x00\x00\x00\x00\xf5\x03\x00\x00\x00\x00\x00\x00\xf6\x03\x00\x00\x00\x00\x00\x00;\x04\x00\x00\x00\x00\x00\x00\xf6\x03\x00\x00\x00\x00\x00\x00"\x04\x00\x00\x00\x00\x00\x00"\x04\x00\x00\x00\x00\x00\x00\xf6\x03\x00\x00\x00\x00\x00\x00V\x04\x00\x00\x00\x00\x00\x00=\x04\x00\x00\x00\x00\x00\x00A\x04\x00\x00\x00\x00\x00\x00K\x04\x00\x00\x00\x00\x00\x00A\x04\x00\x00\x00\x00\x00\x00B\x04\x00\x00\x00\x00\x00\x00K\x04\x00\x00\x00\x00\x00\x00v\x04\x00\x00\x00\x00\x00\x00\x05\x04\x00\x00\x00\x00\x00\x00w\x04\x00\x00\x00\x00\x00\x00\x05\x04\x00\x00\x00\x00\x00\x00\xf8\x03\x00\x00\x00\x00\x00\x00w\x04\x00\x00\x00\x00\x00\x00\xf8\x03\x00\x00\x00\x00\x00\x00\x05\x04\x00\x00\x00\x00\x00\x00p\x04\x00\x00\x00\x00\x00\x00g\x04\x00\x00\x00\x00\x00\x00\x0f\x04\x00\x00\x00\x00\x00\x00T\x04\x00\x00\x00\x00\x00\x00E\x04\x00\x00\x00\x00\x00\x00K\x04\x00\x00\x00\x00\x00\x00B\x04\x00\x00\x00\x00\x00\x00d\x04\x00\x00\x00\x00\x00\x00O\x04\x00\x00\x00\x00\x00\x00Q\x04\x00\x00\x00\x00\x00\x00m\x04\x00\x00\x00\x00\x00\x00[\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x001\x00\x00\x00\x00\x00\x00\x00m\x04\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00w\x00\x00\x00\x00\x00\x00\x00M\x04\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00M\x04\x00\x00\x00\x00\x00\x00>\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00Z\x04\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00h\x00\x00\x00\x00\x00\x00\x00Z\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00v\x04\x00\x00\x00\x00\x00\x00\x04\x04\x00\x00\x00\x00\x00\x00\x05\x04\x00\x00\x00\x00\x00\x00\x0c\x04\x00\x00\x00\x00\x00\x00\xfb\x03\x00\x00\x00\x00\x00\x00\xf9\x03\x00\x00\x00\x00\x00\x00C\x04\x00\x00\x00\x00\x00\x00O\x04\x00\x00\x00\x00\x00\x00&\x04\x00\x00\x00\x00\x00\x00e\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00\x001\x04\x00\x00\x00\x00\x00\x00\\\x04\x00\x00\x00\x00\x00\x00[\x04\x00\x00\x00\x00\x00\x007\x04\x00\x00\x00\x00\x00\x00[\x04\x00\x00\x00\x00\x00\x00b\x00\x00\x00\x00\x00\x00\x007\x04\x00\x00\x00\x00\x00\x00b\x00\x00\x00\x00\x00\x00\x00[\x04\x00\x00\x00\x00\x00\x00c\x00\x00\x00\x00\x00\x00\x00[\x00\x00\x00\x00\x00\x00\x00m\x04\x00\x00\x00\x00\x00\x00n\x04\x00\x00\x00\x00\x00\x00\\\x00\x00\x00\x00\x00\x00\x00n\x04\x00\x00\x00\x00\x00\x00\x1a\x04\x00\x00\x00\x00\x00\x00[\x00\x00\x00\x00\x00\x00\x00n\x04\x00\x00\x00\x00\x00\x00\\\x00\x00\x00\x00\x00\x00\x00\x0e\x04\x00\x00\x00\x00\x00\x00u\x04\x00\x00\x00\x00\x00\x00\x10\x04\x00\x00\x00\x00\x00\x00l\x04\x00\x00\x00\x00\x00\x008\x04\x00\x00\x00\x00\x00\x00k\x04\x00\x00\x00\x00\x00\x00S\x04\x00\x00\x00\x00\x00\x008\x04\x00\x00\x00\x00\x00\x00l\x04\x00\x00\x00\x00\x00\x00k\x04\x00\x00\x00\x00\x00\x008\x04\x00\x00\x00\x00\x00\x00`\x00\x00\x00\x00\x00\x00\x00:\x04\x00\x00\x00\x00\x00\x00\x07\x04\x00\x00\x00\x00\x00\x00\x08\x04\x00\x00\x00\x00\x00\x00`\x00\x00\x00\x00\x00\x00\x008\x04\x00\x00\x00\x00\x00\x00a\x00\x00\x00\x00\x00\x00\x00\t\x04\x00\x00\x00\x00\x00\x00\x04\x04\x00\x00\x00\x00\x00\x00x\x04\x00\x00\x00\x00\x00\x00r\x04\x00\x00\x00\x00\x00\x007\x04\x00\x00\x00\x00\x00\x008\x04\x00\x00\x00\x00\x00\x00r\x04\x00\x00\x00\x00\x00\x008\x04\x00\x00\x00\x00\x00\x00S\x04\x00\x00\x00\x00\x00\x00\x04\x04\x00\x00\x00\x00\x00\x00v\x04\x00\x00\x00\x00\x00\x00x\x04\x00\x00\x00\x00\x00\x00\xf7\x03\x00\x00\x00\x00\x00\x006\x04\x00\x00\x00\x00\x00\x00\xf6\x03\x00\x00\x00\x00\x00\x00]\x04\x00\x00\x00\x00\x00\x00{\x00\x00\x00\x00\x00\x00\x00y\x04\x00\x00\x00\x00\x00\x00x\x04\x00\x00\x00\x00\x00\x00>\x04\x00\x00\x00\x00\x00\x00\t\x04\x00\x00\x00\x00\x00\x00;\x04\x00\x00\x00\x00\x00\x00X\x04\x00\x00\x00\x00\x00\x003\x04\x00\x00\x00\x00\x00\x00;\x04\x00\x00\x00\x00\x00\x003\x04\x00\x00\x00\x00\x00\x00u\x04\x00\x00\x00\x00\x00\x00u\x04\x00\x00\x00\x00\x00\x003\x04\x00\x00\x00\x00\x00\x00\x10\x04\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00\x004\x04\x00\x00\x00\x00\x00\x00\x0f\x04\x00\x00\x00\x00\x00\x00-\x04\x00\x00\x00\x00\x00\x001\x00\x00\x00\x00\x00\x00\x002\x00\x00\x00\x00\x00\x00\x001\x00\x00\x00\x00\x00\x00\x00-\x04\x00\x00\x00\x00\x00\x00m\x04\x00\x00\x00\x00\x00\x006\x04\x00\x00\x00\x00\x00\x005\x04\x00\x00\x00\x00\x00\x00V\x04\x00\x00\x00\x00\x00\x005\x04\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00V\x04\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x005\x04\x00\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x004\x04\x00\x00\x00\x00\x00\x00c\x00\x00\x00\x00\x00\x00\x00[\x04\x00\x00\x00\x00\x00\x00c\x00\x00\x00\x00\x00\x00\x004\x04\x00\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x003\x04\x00\x00\x00\x00\x00\x00X\x04\x00\x00\x00\x00\x00\x002\x04\x00\x00\x00\x00\x00\x00{\x00\x00\x00\x00\x00\x00\x00|\x00\x00\x00\x00\x00\x00\x00y\x04\x00\x00\x00\x00\x00\x00\'\x04\x00\x00\x00\x00\x00\x00%\x04\x00\x00\x00\x00\x00\x00!\x04\x00\x00\x00\x00\x00\x00\x16\x04\x00\x00\x00\x00\x00\x00\x14\x04\x00\x00\x00\x00\x00\x00\'\x04\x00\x00\x00\x00\x00\x00>\x04\x00\x00\x00\x00\x00\x009\x04\x00\x00\x00\x00\x00\x00\t\x04\x00\x00\x00\x00\x00\x00\x16\x04\x00\x00\x00\x00\x00\x00\'\x04\x00\x00\x00\x00\x00\x00!\x04\x00\x00\x00\x00\x00\x00v\x04\x00\x00\x00\x00\x00\x00z\x04\x00\x00\x00\x00\x00\x00x\x04\x00\x00\x00\x00\x00\x00n\x04\x00\x00\x00\x00\x00\x00#\x04\x00\x00\x00\x00\x00\x00\x1a\x04\x00\x00\x00\x00\x00\x00z\x04\x00\x00\x00\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\x00x\x04\x00\x00\x00\x00\x00\x00O\x04\x00\x00\x00\x00\x00\x00d\x04\x00\x00\x00\x00\x00\x00&\x04\x00\x00\x00\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\x00/\x04\x00\x00\x00\x00\x00\x00q\x04\x00\x00\x00\x00\x00\x00/\x04\x00\x00\x00\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00s\x04\x00\x00\x00\x00\x00\x00\x1d\x04\x00\x00\x00\x00\x00\x00j\x04\x00\x00\x00\x00\x00\x009\x00\x00\x00\x00\x00\x00\x00_\x04\x00\x00\x00\x00\x00\x00\x02\x04\x00\x00\x00\x00\x00\x00v\x04\x00\x00\x00\x00\x00\x00w\x04\x00\x00\x00\x00\x00\x00\x1d\x04\x00\x00\x00\x00\x00\x00a\x04\x00\x00\x00\x00\x00\x00g\x04\x00\x00\x00\x00\x00\x00h\x04\x00\x00\x00\x00\x00\x00w\x04\x00\x00\x00\x00\x00\x00j\x04\x00\x00\x00\x00\x00\x00\x1d\x04\x00\x00\x00\x00\x00\x00^\x04\x00\x00\x00\x00\x00\x00_\x04\x00\x00\x00\x00\x00\x00:\x00\x00\x00\x00\x00\x00\x00_\x04\x00\x00\x00\x00\x00\x009\x00\x00\x00\x00\x00\x00\x00:\x00\x00\x00\x00\x00\x00\x00\x17\x04\x00\x00\x00\x00\x00\x00P\x04\x00\x00\x00\x00\x00\x00l\x04\x00\x00\x00\x00\x00\x00\xf8\x03\x00\x00\x00\x00\x00\x00a\x04\x00\x00\x00\x00\x00\x00h\x04\x00\x00\x00\x00\x00\x00P\x04\x00\x00\x00\x00\x00\x00\x17\x04\x00\x00\x00\x00\x00\x00Y\x04\x00\x00\x00\x00\x00\x00k\x04\x00\x00\x00\x00\x00\x00`\x00\x00\x00\x00\x00\x00\x00_\x00\x00\x00\x00\x00\x00\x00\xfd\x03\x00\x00\x00\x00\x00\x00:\x04\x00\x00\x00\x00\x00\x009\x04\x00\x00\x00\x00\x00\x00s\x04\x00\x00\x00\x00\x00\x00\x1c\x04\x00\x00\x00\x00\x00\x00\x1d\x04\x00\x00\x00\x00\x00\x00P\x04\x00\x00\x00\x00\x00\x00J\x04\x00\x00\x00\x00\x00\x00l\x04\x00\x00\x00\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\x00q\x04\x00\x00\x00\x00\x00\x00x\x04\x00\x00\x00\x00\x00\x00o\x04\x00\x00\x00\x00\x00\x00\x02\x04\x00\x00\x00\x00\x00\x00`\x04\x00\x00\x00\x00\x00\x00q\x04\x00\x00\x00\x00\x00\x00>\x04\x00\x00\x00\x00\x00\x00x\x04\x00\x00\x00\x00\x00\x00L\x04\x00\x00\x00\x00\x00\x00\x1f\x04\x00\x00\x00\x00\x00\x00 \x04\x00\x00\x00\x00\x00\x00\xf8\x03\x00\x00\x00\x00\x00\x00h\x04\x00\x00\x00\x00\x00\x00w\x04\x00\x00\x00\x00\x00\x00h\x04\x00\x00\x00\x00\x00\x00j\x04\x00\x00\x00\x00\x00\x00w\x04\x00\x00\x00\x00\x00\x00\x1f\x04\x00\x00\x00\x00\x00\x00L\x04\x00\x00\x00\x00\x00\x00@\x04\x00\x00\x00\x00\x00\x00\r\x04\x00\x00\x00\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\x00z\x04\x00\x00\x00\x00\x00\x00\x1e\x04\x00\x00\x00\x00\x00\x00\r\x04\x00\x00\x00\x00\x00\x00z\x04\x00\x00\x00\x00\x00\x00o\x04\x00\x00\x00\x00\x00\x00\x0b\x04\x00\x00\x00\x00\x00\x00\xf9\x03\x00\x00\x00\x00\x00\x00]\x04\x00\x00\x00\x00\x00\x000\x04\x00\x00\x00\x00\x00\x00 \x04\x00\x00\x00\x00\x00\x00r\x04\x00\x00\x00\x00\x00\x00i\x04\x00\x00\x00\x00\x00\x00\\\x04\x00\x00\x00\x00\x00\x007\x04\x00\x00\x00\x00\x00\x00r\x04\x00\x00\x00\x00\x00\x00\\\x04\x00\x00\x00\x00\x00\x00\x06\x04\x00\x00\x00\x00\x00\x00p\x04\x00\x00\x00\x00\x00\x00\x08\x04\x00\x00\x00\x00\x00\x00\xfb\x03\x00\x00\x00\x00\x00\x007\x00\x00\x00\x00\x00\x00\x008\x00\x00\x00\x00\x00\x00\x00A\x04\x00\x00\x00\x00\x00\x00=\x04\x00\x00\x00\x00\x00\x00>\x04\x00\x00\x00\x00\x00\x00\xfc\x03\x00\x00\x00\x00\x00\x00y\x04\x00\x00\x00\x00\x00\x00\xf3\x03\x00\x00\x00\x00\x00\x00S\x04\x00\x00\x00\x00\x00\x00R\x04\x00\x00\x00\x00\x00\x00r\x04\x00\x00\x00\x00\x00\x00v\x04\x00\x00\x00\x00\x00\x00\x1b\x04\x00\x00\x00\x00\x00\x00z\x04\x00\x00\x00\x00\x00\x00\x1b\x04\x00\x00\x00\x00\x00\x00v\x04\x00\x00\x00\x00\x00\x00\x1d\x04\x00\x00\x00\x00\x00\x00\x1b\x04\x00\x00\x00\x00\x00\x00\x1e\x04\x00\x00\x00\x00\x00\x00z\x04\x00\x00\x00\x00\x00\x00.\x04\x00\x00\x00\x00\x00\x00A\x04\x00\x00\x00\x00\x00\x00>\x04\x00\x00\x00\x00\x00\x00y\x04\x00\x00\x00\x00\x00\x00\xfc\x03\x00\x00\x00\x00\x00\x00]\x04\x00\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00p\x04\x00\x00\x00\x00\x00\x00\x05\x04\x00\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\t\x04\x00\x00\x00\x00\x00\x00\x08\x04\x00\x00\x00\x00\x00\x00y\x04\x00\x00\x00\x00\x00\x00|\x00\x00\x00\x00\x00\x00\x00\xf3\x03\x00\x00\x00\x00\x00\x00p\x04\x00\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x08\x04\x00\x00\x00\x00\x00\x00=\x04\x00\x00\x00\x00\x00\x00K\x04\x00\x00\x00\x00\x00\x00\x01\x04\x00\x00\x00\x00\x00\x00I\x04\x00\x00\x00\x00\x00\x00s\x04\x00\x00\x00\x00\x00\x00R\x04\x00\x00\x00\x00\x00\x00+\x04\x00\x00\x00\x00\x00\x00,\x04\x00\x00\x00\x00\x00\x00#\x04\x00\x00\x00\x00\x00\x00+\x04\x00\x00\x00\x00\x00\x00n\x04\x00\x00\x00\x00\x00\x00-\x04\x00\x00\x00\x00\x00\x00n\x04\x00\x00\x00\x00\x00\x00+\x04\x00\x00\x00\x00\x00\x00#\x04\x00\x00\x00\x00\x00\x00J\x04\x00\x00\x00\x00\x00\x00I\x04\x00\x00\x00\x00\x00\x00R\x04\x00\x00\x00\x00\x00\x00\x15\x04\x00\x00\x00\x00\x00\x00!\x04\x00\x00\x00\x00\x00\x00(\x04\x00\x00\x00\x00\x00\x00V\x04\x00\x00\x00\x00\x00\x00\xf6\x03\x00\x00\x00\x00\x00\x006\x04\x00\x00\x00\x00\x00\x00s\x04\x00\x00\x00\x00\x00\x00I\x04\x00\x00\x00\x00\x00\x00G\x04\x00\x00\x00\x00\x00\x00Q\x04\x00\x00\x00\x00\x00\x00H\x04\x00\x00\x00\x00\x00\x00Y\x04\x00\x00\x00\x00\x00\x00B\x04\x00\x00\x00\x00\x00\x00c\x04\x00\x00\x00\x00\x00\x00E\x04\x00\x00\x00\x00\x00\x00H\x04\x00\x00\x00\x00\x00\x00Q\x04\x00\x00\x00\x00\x00\x00G\x04\x00\x00\x00\x00\x00\x00*\x04\x00\x00\x00\x00\x00\x003\x00\x00\x00\x00\x00\x00\x00$\x04\x00\x00\x00\x00\x00\x00,\x04\x00\x00\x00\x00\x00\x00*\x04\x00\x00\x00\x00\x00\x00$\x04\x00\x00\x00\x00\x00\x00\x02\x04\x00\x00\x00\x00\x00\x00o\x04\x00\x00\x00\x00\x00\x00\xf9\x03\x00\x00\x00\x00\x00\x00\x0b\x04\x00\x00\x00\x00\x00\x00b\x04\x00\x00\x00\x00\x00\x00.\x04\x00\x00\x00\x00\x00\x004\x00\x00\x00\x00\x00\x00\x00t\x04\x00\x00\x00\x00\x00\x00$\x04\x00\x00\x00\x00\x00\x00b\x04\x00\x00\x00\x00\x00\x00B\x04\x00\x00\x00\x00\x00\x00.\x04\x00\x00\x00\x00\x00\x00c\x04\x00\x00\x00\x00\x00\x00^\x04\x00\x00\x00\x00\x00\x00\x12\x04\x00\x00\x00\x00\x00\x00t\x04\x00\x00\x00\x00\x00\x00%\x04\x00\x00\x00\x00\x00\x00$\x04\x00\x00\x00\x00\x00\x00^\x04\x00\x00\x00\x00\x00\x00c\x04\x00\x00\x00\x00\x00\x00`\x04\x00\x00\x00\x00\x00\x00t\x04\x00\x00\x00\x00\x00\x004\x00\x00\x00\x00\x00\x00\x005\x00\x00\x00\x00\x00\x00\x00\xfa\x03\x00\x00\x00\x00\x00\x008\x00\x00\x00\x00\x00\x00\x009\x00\x00\x00\x00\x00\x00\x00D\x04\x00\x00\x00\x00\x00\x00c\x04\x00\x00\x00\x00\x00\x00\x12\x04\x00\x00\x00\x00\x00\x00\x02\x04\x00\x00\x00\x00\x00\x00\xfa\x03\x00\x00\x00\x00\x00\x009\x00\x00\x00\x00\x00\x00\x008\x00\x00\x00\x00\x00\x00\x00\xfa\x03\x00\x00\x00\x00\x00\x00\xfb\x03\x00\x00\x00\x00\x00\x00{\x04\x00\x00\x00\x00\x00\x00}\x04\x00\x00\x00\x00\x00\x00|\x04\x00\x00\x00\x00\x00\x00|\x04\x00\x00\x00\x00\x00\x00}\x04\x00\x00\x00\x00\x00\x003\x00\x00\x00\x00\x00\x00\x00|\x04\x00\x00\x00\x00\x00\x003\x00\x00\x00\x00\x00\x00\x002\x00\x00\x00\x00\x00\x00\x00~\x04\x00\x00\x00\x00\x00\x00\x80\x04\x00\x00\x00\x00\x00\x00\x7f\x04\x00\x00\x00\x00\x00\x00\x81\x04\x00\x00\x00\x00\x00\x00\x83\x04\x00\x00\x00\x00\x00\x00\x82\x04\x00\x00\x00\x00\x00\x00\x84\x04\x00\x00\x00\x00\x00\x00\x86\x04\x00\x00\x00\x00\x00\x00\x85\x04\x00\x00\x00\x00\x00\x00\x7f\x04\x00\x00\x00\x00\x00\x00\x80\x04\x00\x00\x00\x00\x00\x00\x87\x04\x00\x00\x00\x00\x00\x004\x00\x00\x00\x00\x00\x00\x00}\x04\x00\x00\x00\x00\x00\x00\x88\x04\x00\x00\x00\x00\x00\x004\x00\x00\x00\x00\x00\x00\x00\x88\x04\x00\x00\x00\x00\x00\x005\x00\x00\x00\x00\x00\x00\x007\x00\x00\x00\x00\x00\x00\x00\x8a\x04\x00\x00\x00\x00\x00\x00\x89\x04\x00\x00\x00\x00\x00\x007\x00\x00\x00\x00\x00\x00\x00\x89\x04\x00\x00\x00\x00\x00\x008\x00\x00\x00\x00\x00\x00\x00\x8b\x04\x00\x00\x00\x00\x00\x00<\x00\x00\x00\x00\x00\x00\x00\x8c\x04\x00\x00\x00\x00\x00\x00\x82\x04\x00\x00\x00\x00\x00\x00\x83\x04\x00\x00\x00\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x00\x00\x8d\x04\x00\x00\x00\x00\x00\x00\x8f\x04\x00\x00\x00\x00\x00\x00\x8e\x04\x00\x00\x00\x00\x00\x00\x90\x04\x00\x00\x00\x00\x00\x00\x92\x04\x00\x00\x00\x00\x00\x00\x91\x04\x00\x00\x00\x00\x00\x00\x93\x04\x00\x00\x00\x00\x00\x00X\x00\x00\x00\x00\x00\x00\x00\x94\x04\x00\x00\x00\x00\x00\x00\x94\x04\x00\x00\x00\x00\x00\x00X\x00\x00\x00\x00\x00\x00\x00W\x00\x00\x00\x00\x00\x00\x00\x91\x04\x00\x00\x00\x00\x00\x00\x92\x04\x00\x00\x00\x00\x00\x00\x95\x04\x00\x00\x00\x00\x00\x00\x96\x04\x00\x00\x00\x00\x00\x00\x98\x04\x00\x00\x00\x00\x00\x00\x97\x04\x00\x00\x00\x00\x00\x00\x96\x04\x00\x00\x00\x00\x00\x00\x97\x04\x00\x00\x00\x00\x00\x00\x99\x04\x00\x00\x00\x00\x00\x00O\x00\x00\x00\x00\x00\x00\x00\x9b\x04\x00\x00\x00\x00\x00\x00\x9a\x04\x00\x00\x00\x00\x00\x00O\x00\x00\x00\x00\x00\x00\x00\x9a\x04\x00\x00\x00\x00\x00\x00P\x00\x00\x00\x00\x00\x00\x00\x88\x04\x00\x00\x00\x00\x00\x00\x9d\x04\x00\x00\x00\x00\x00\x00\x9c\x04\x00\x00\x00\x00\x00\x00\x88\x04\x00\x00\x00\x00\x00\x00\x9c\x04\x00\x00\x00\x00\x00\x005\x00\x00\x00\x00\x00\x00\x00\x9e\x04\x00\x00\x00\x00\x00\x00\x9d\x04\x00\x00\x00\x00\x00\x00\x88\x04\x00\x00\x00\x00\x00\x00\x9e\x04\x00\x00\x00\x00\x00\x00\x88\x04\x00\x00\x00\x00\x00\x00\x9f\x04\x00\x00\x00\x00\x00\x00T\x00\x00\x00\x00\x00\x00\x00\xa1\x04\x00\x00\x00\x00\x00\x00\xa0\x04\x00\x00\x00\x00\x00\x00T\x00\x00\x00\x00\x00\x00\x00\xa0\x04\x00\x00\x00\x00\x00\x00U\x00\x00\x00\x00\x00\x00\x00{\x04\x00\x00\x00\x00\x00\x00|\x04\x00\x00\x00\x00\x00\x00\xa2\x04\x00\x00\x00\x00\x00\x00\xa3\x04\x00\x00\x00\x00\x00\x00\xa5\x04\x00\x00\x00\x00\x00\x00\xa4\x04\x00\x00\x00\x00\x00\x00\xa6\x04\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\xa7\x04\x00\x00\x00\x00\x00\x00\xa7\x04\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x00\x00\xa8\x04\x00\x00\x00\x00\x00\x00\xaa\x04\x00\x00\x00\x00\x00\x00\xa9\x04\x00\x00\x00\x00\x00\x00\xa8\x04\x00\x00\x00\x00\x00\x00\xa9\x04\x00\x00\x00\x00\x00\x00\x87\x04\x00\x00\x00\x00\x00\x00\x94\x04\x00\x00\x00\x00\x00\x00\xab\x04\x00\x00\x00\x00\x00\x00\x93\x04\x00\x00\x00\x00\x00\x00\xac\x04\x00\x00\x00\x00\x00\x00\xae\x04\x00\x00\x00\x00\x00\x00\xad\x04\x00\x00\x00\x00\x00\x00|\x04\x00\x00\x00\x00\x00\x00\xaf\x04\x00\x00\x00\x00\x00\x00\xa2\x04\x00\x00\x00\x00\x00\x00\xad\x04\x00\x00\x00\x00\x00\x00\xae\x04\x00\x00\x00\x00\x00\x00\xb0\x04\x00\x00\x00\x00\x00\x00\xb1\x04\x00\x00\x00\x00\x00\x00\xb3\x04\x00\x00\x00\x00\x00\x00\xb2\x04\x00\x00\x00\x00\x00\x00\xb1\x04\x00\x00\x00\x00\x00\x00\xb2\x04\x00\x00\x00\x00\x00\x00\xb4\x04\x00\x00\x00\x00\x00\x00\xb5\x04\x00\x00\x00\x00\x00\x00\xb3\x04\x00\x00\x00\x00\x00\x00\xb6\x04\x00\x00\x00\x00\x00\x00\xb5\x04\x00\x00\x00\x00\x00\x00\xb6\x04\x00\x00\x00\x00\x00\x00\xb7\x04\x00\x00\x00\x00\x00\x00\xb8\x04\x00\x00\x00\x00\x00\x00\xba\x04\x00\x00\x00\x00\x00\x00\xb9\x04\x00\x00\x00\x00\x00\x00\xbb\x04\x00\x00\x00\x00\x00\x00\xbc\x04\x00\x00\x00\x00\x00\x00\xb4\x04\x00\x00\x00\x00\x00\x00\xb9\x04\x00\x00\x00\x00\x00\x00\xba\x04\x00\x00\x00\x00\x00\x00M\x00\x00\x00\x00\x00\x00\x00\xbd\x04\x00\x00\x00\x00\x00\x00\xbf\x04\x00\x00\x00\x00\x00\x00\xbe\x04\x00\x00\x00\x00\x00\x00\xc0\x04\x00\x00\x00\x00\x00\x00\x81\x04\x00\x00\x00\x00\x00\x00\xbf\x04\x00\x00\x00\x00\x00\x00:\x00\x00\x00\x00\x00\x00\x00\xc1\x04\x00\x00\x00\x00\x00\x00\x95\x04\x00\x00\x00\x00\x00\x00|\x04\x00\x00\x00\x00\x00\x002\x00\x00\x00\x00\x00\x00\x00\xc2\x04\x00\x00\x00\x00\x00\x00:\x00\x00\x00\x00\x00\x00\x00\x95\x04\x00\x00\x00\x00\x00\x00;\x00\x00\x00\x00\x00\x00\x003\x00\x00\x00\x00\x00\x00\x00}\x04\x00\x00\x00\x00\x00\x004\x00\x00\x00\x00\x00\x00\x00\xc3\x04\x00\x00\x00\x00\x00\x00Q\x00\x00\x00\x00\x00\x00\x00\xc4\x04\x00\x00\x00\x00\x00\x00\x86\x04\x00\x00\x00\x00\x00\x00\xa6\x04\x00\x00\x00\x00\x00\x00\xc5\x04\x00\x00\x00\x00\x00\x00\xc4\x04\x00\x00\x00\x00\x00\x00Q\x00\x00\x00\x00\x00\x00\x00P\x00\x00\x00\x00\x00\x00\x00\x82\x04\x00\x00\x00\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x00\x00\xa9\x00\x00\x00\x00\x00\x00\x00\xc6\x04\x00\x00\x00\x00\x00\x00\xc8\x04\x00\x00\x00\x00\x00\x00\xc7\x04\x00\x00\x00\x00\x00\x00\x85\x04\x00\x00\x00\x00\x00\x00\xba\x04\x00\x00\x00\x00\x00\x00\x84\x04\x00\x00\x00\x00\x00\x00\x83\x04\x00\x00\x00\x00\x00\x00\xca\x04\x00\x00\x00\x00\x00\x00\xc9\x04\x00\x00\x00\x00\x00\x00\x83\x04\x00\x00\x00\x00\x00\x00\xc9\x04\x00\x00\x00\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00\xc6\x04\x00\x00\x00\x00\x00\x00\xc7\x04\x00\x00\x00\x00\x00\x00\xcb\x04\x00\x00\x00\x00\x00\x00\xbe\x04\x00\x00\x00\x00\x00\x00\xbf\x04\x00\x00\x00\x00\x00\x00\x82\x04\x00\x00\x00\x00\x00\x00\xcc\x04\x00\x00\x00\x00\x00\x00\x95\x04\x00\x00\x00\x00\x00\x00\x8c\x04\x00\x00\x00\x00\x00\x00\xa1\x04\x00\x00\x00\x00\x00\x00\xc8\x04\x00\x00\x00\x00\x00\x00\xc6\x04\x00\x00\x00\x00\x00\x00\xab\x04\x00\x00\x00\x00\x00\x00\x94\x04\x00\x00\x00\x00\x00\x00\xcd\x04\x00\x00\x00\x00\x00\x00\xc3\x04\x00\x00\x00\x00\x00\x00\xc7\x04\x00\x00\x00\x00\x00\x00\xce\x04\x00\x00\x00\x00\x00\x00\xcf\x04\x00\x00\x00\x00\x00\x00\xd1\x04\x00\x00\x00\x00\x00\x00\xd0\x04\x00\x00\x00\x00\x00\x00\xd2\x04\x00\x00\x00\x00\x00\x00\xd3\x04\x00\x00\x00\x00\x00\x00\xc9\x04\x00\x00\x00\x00\x00\x00\xc9\x04\x00\x00\x00\x00\x00\x00\xd3\x04\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x00\x00\xc3\x04\x00\x00\x00\x00\x00\x00\xce\x04\x00\x00\x00\x00\x00\x00R\x00\x00\x00\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xc4\x04\x00\x00\x00\x00\x00\x00\x9a\x04\x00\x00\x00\x00\x00\x00\xd5\x04\x00\x00\x00\x00\x00\x00\xc3\x04\x00\x00\x00\x00\x00\x00\xc4\x04\x00\x00\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\x9a\x04\x00\x00\x00\x00\x00\x00\x85\x04\x00\x00\x00\x00\x00\x00\xab\x04\x00\x00\x00\x00\x00\x00\xcd\x04\x00\x00\x00\x00\x00\x00\xd6\x04\x00\x00\x00\x00\x00\x00\xa2\x04\x00\x00\x00\x00\x00\x00\xab\x04\x00\x00\x00\x00\x00\x00\xd7\x04\x00\x00\x00\x00\x00\x00\xa2\x04\x00\x00\x00\x00\x00\x00\xd7\x04\x00\x00\x00\x00\x00\x00{\x04\x00\x00\x00\x00\x00\x00\xc4\x04\x00\x00\x00\x00\x00\x00\xd8\x04\x00\x00\x00\x00\x00\x00\xd5\x04\x00\x00\x00\x00\x00\x00\x9f\x04\x00\x00\x00\x00\x00\x00{\x04\x00\x00\x00\x00\x00\x00\xd7\x04\x00\x00\x00\x00\x00\x00\xab\x04\x00\x00\x00\x00\x00\x00\xd6\x04\x00\x00\x00\x00\x00\x00\xd7\x04\x00\x00\x00\x00\x00\x00\xd5\x04\x00\x00\x00\x00\x00\x00\xd8\x04\x00\x00\x00\x00\x00\x00\x8f\x04\x00\x00\x00\x00\x00\x00\xd0\x04\x00\x00\x00\x00\x00\x00\xda\x04\x00\x00\x00\x00\x00\x00\xd9\x04\x00\x00\x00\x00\x00\x00\xc4\x04\x00\x00\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xd8\x04\x00\x00\x00\x00\x00\x00\x8b\x04\x00\x00\x00\x00\x00\x00\xdc\x04\x00\x00\x00\x00\x00\x00\xdb\x04\x00\x00\x00\x00\x00\x00\xbc\x04\x00\x00\x00\x00\x00\x00\xdd\x04\x00\x00\x00\x00\x00\x00\x8d\x04\x00\x00\x00\x00\x00\x00\xdb\x04\x00\x00\x00\x00\x00\x00\xdc\x04\x00\x00\x00\x00\x00\x00\xde\x04\x00\x00\x00\x00\x00\x00\x85\x04\x00\x00\x00\x00\x00\x00\x86\x04\x00\x00\x00\x00\x00\x00\xdf\x04\x00\x00\x00\x00\x00\x00\x85\x04\x00\x00\x00\x00\x00\x00\xdf\x04\x00\x00\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xa7\x04\x00\x00\x00\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x00\x00\xe0\x04\x00\x00\x00\x00\x00\x00\xe0\x04\x00\x00\x00\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x00\x00\xdd\x04\x00\x00\x00\x00\x00\x00\xbc\x04\x00\x00\x00\x00\x00\x00\xbb\x04\x00\x00\x00\x00\x00\x00\x8d\x04\x00\x00\x00\x00\x00\x00\x8e\x04\x00\x00\x00\x00\x00\x00\xbc\x04\x00\x00\x00\x00\x00\x00\x82\x04\x00\x00\x00\x00\x00\x00\xa9\x00\x00\x00\x00\x00\x00\x00\xbe\x04\x00\x00\x00\x00\x00\x00\xbe\x04\x00\x00\x00\x00\x00\x00\xa9\x00\x00\x00\x00\x00\x00\x00\xaa\x00\x00\x00\x00\x00\x00\x00\xd9\x04\x00\x00\x00\x00\x00\x00\xc5\x04\x00\x00\x00\x00\x00\x00\xd0\x04\x00\x00\x00\x00\x00\x00\xd7\x04\x00\x00\x00\x00\x00\x00\xe1\x04\x00\x00\x00\x00\x00\x00\x9f\x04\x00\x00\x00\x00\x00\x00\x8d\x04\x00\x00\x00\x00\x00\x00\xdd\x04\x00\x00\x00\x00\x00\x00\xcb\x04\x00\x00\x00\x00\x00\x00\x9d\x04\x00\x00\x00\x00\x00\x00\x8a\x04\x00\x00\x00\x00\x00\x00\x9c\x04\x00\x00\x00\x00\x00\x00\x8a\x04\x00\x00\x00\x00\x00\x00\x9d\x04\x00\x00\x00\x00\x00\x00\xe2\x04\x00\x00\x00\x00\x00\x00\xa5\x04\x00\x00\x00\x00\x00\x00\xc0\x04\x00\x00\x00\x00\x00\x00\xb6\x04\x00\x00\x00\x00\x00\x00\xa5\x04\x00\x00\x00\x00\x00\x00\xb6\x04\x00\x00\x00\x00\x00\x00\xa4\x04\x00\x00\x00\x00\x00\x00\x87\x04\x00\x00\x00\x00\x00\x00\xa9\x04\x00\x00\x00\x00\x00\x00\x7f\x04\x00\x00\x00\x00\x00\x00\x7f\x04\x00\x00\x00\x00\x00\x00\xa9\x04\x00\x00\x00\x00\x00\x00\xe3\x04\x00\x00\x00\x00\x00\x00\x8c\x04\x00\x00\x00\x00\x00\x00\x95\x04\x00\x00\x00\x00\x00\x00\x92\x04\x00\x00\x00\x00\x00\x00\xbd\x04\x00\x00\x00\x00\x00\x00\xbe\x04\x00\x00\x00\x00\x00\x00\xe4\x04\x00\x00\x00\x00\x00\x00\xc1\x04\x00\x00\x00\x00\x00\x00\xe6\x04\x00\x00\x00\x00\x00\x00\xe5\x04\x00\x00\x00\x00\x00\x00\xe7\x04\x00\x00\x00\x00\x00\x00\xe6\x04\x00\x00\x00\x00\x00\x00\xc1\x04\x00\x00\x00\x00\x00\x00\xad\x00\x00\x00\x00\x00\x00\x00\xae\x00\x00\x00\x00\x00\x00\x00\xde\x04\x00\x00\x00\x00\x00\x00\xcd\x04\x00\x00\x00\x00\x00\x00\x7f\x04\x00\x00\x00\x00\x00\x00\xe3\x04\x00\x00\x00\x00\x00\x00N\x00\x00\x00\x00\x00\x00\x00\xba\x04\x00\x00\x00\x00\x00\x00\x9b\x04\x00\x00\x00\x00\x00\x00\xad\x00\x00\x00\x00\x00\x00\x00\xe8\x04\x00\x00\x00\x00\x00\x00\xac\x00\x00\x00\x00\x00\x00\x00N\x00\x00\x00\x00\x00\x00\x00\x9b\x04\x00\x00\x00\x00\x00\x00O\x00\x00\x00\x00\x00\x00\x00\xdc\x04\x00\x00\x00\x00\x00\x00\xad\x00\x00\x00\x00\x00\x00\x00\xde\x04\x00\x00\x00\x00\x00\x00\xe9\x04\x00\x00\x00\x00\x00\x00\xe1\x04\x00\x00\x00\x00\x00\x00\xe3\x04\x00\x00\x00\x00\x00\x00\xe8\x04\x00\x00\x00\x00\x00\x00\xad\x00\x00\x00\x00\x00\x00\x00\xdc\x04\x00\x00\x00\x00\x00\x00\xd0\x04\x00\x00\x00\x00\x00\x00\xea\x04\x00\x00\x00\x00\x00\x00\xda\x04\x00\x00\x00\x00\x00\x00\xd0\x04\x00\x00\x00\x00\x00\x00\xd1\x04\x00\x00\x00\x00\x00\x00\xea\x04\x00\x00\x00\x00\x00\x00\xe5\x04\x00\x00\x00\x00\x00\x00\xe6\x04\x00\x00\x00\x00\x00\x00\xeb\x04\x00\x00\x00\x00\x00\x00\xec\x04\x00\x00\x00\x00\x00\x00\xee\x04\x00\x00\x00\x00\x00\x00\xed\x04\x00\x00\x00\x00\x00\x00\xef\x04\x00\x00\x00\x00\x00\x00\xc2\x04\x00\x00\x00\x00\x00\x00\xf0\x04\x00\x00\x00\x00\x00\x00\xf1\x04\x00\x00\x00\x00\x00\x00\xe2\x04\x00\x00\x00\x00\x00\x00\x9d\x04\x00\x00\x00\x00\x00\x00\xc2\x04\x00\x00\x00\x00\x00\x00\xef\x04\x00\x00\x00\x00\x00\x00\xaf\x04\x00\x00\x00\x00\x00\x00|\x04\x00\x00\x00\x00\x00\x00\xc2\x04\x00\x00\x00\x00\x00\x00\xaf\x04\x00\x00\x00\x00\x00\x00\xf1\x04\x00\x00\x00\x00\x00\x00\x9d\x04\x00\x00\x00\x00\x00\x00\x9e\x04\x00\x00\x00\x00\x00\x00\xf2\x04\x00\x00\x00\x00\x00\x00\x89\x04\x00\x00\x00\x00\x00\x00\x8a\x04\x00\x00\x00\x00\x00\x00\xf2\x04\x00\x00\x00\x00\x00\x00\x8a\x04\x00\x00\x00\x00\x00\x00\xe2\x04\x00\x00\x00\x00\x00\x00\xed\x04\x00\x00\x00\x00\x00\x00\x90\x04\x00\x00\x00\x00\x00\x00\xec\x04\x00\x00\x00\x00\x00\x00\xee\x04\x00\x00\x00\x00\x00\x00\xec\x04\x00\x00\x00\x00\x00\x00\xf3\x04\x00\x00\x00\x00\x00\x00\xf4\x04\x00\x00\x00\x00\x00\x00\xea\x04\x00\x00\x00\x00\x00\x00\xb1\x04\x00\x00\x00\x00\x00\x00\xf5\x04\x00\x00\x00\x00\x00\x00\xc6\x04\x00\x00\x00\x00\x00\x00\xcb\x04\x00\x00\x00\x00\x00\x00\x82\x04\x00\x00\x00\x00\x00\x00\xbf\x04\x00\x00\x00\x00\x00\x00\x81\x04\x00\x00\x00\x00\x00\x00\xbc\x04\x00\x00\x00\x00\x00\x00\xf4\x04\x00\x00\x00\x00\x00\x00\xb4\x04\x00\x00\x00\x00\x00\x00\x94\x04\x00\x00\x00\x00\x00\x00W\x00\x00\x00\x00\x00\x00\x00~\x04\x00\x00\x00\x00\x00\x00~\x04\x00\x00\x00\x00\x00\x00\xcd\x04\x00\x00\x00\x00\x00\x00\x94\x04\x00\x00\x00\x00\x00\x00\xec\x04\x00\x00\x00\x00\x00\x00\x99\x04\x00\x00\x00\x00\x00\x00\xf3\x04\x00\x00\x00\x00\x00\x00\x84\x04\x00\x00\x00\x00\x00\x00\xf6\x04\x00\x00\x00\x00\x00\x00\x86\x04\x00\x00\x00\x00\x00\x00\xf6\x04\x00\x00\x00\x00\x00\x00\xa6\x04\x00\x00\x00\x00\x00\x00\x86\x04\x00\x00\x00\x00\x00\x00\xf4\x04\x00\x00\x00\x00\x00\x00\x8e\x04\x00\x00\x00\x00\x00\x00\xda\x04\x00\x00\x00\x00\x00\x00\xf4\x04\x00\x00\x00\x00\x00\x00\xbc\x04\x00\x00\x00\x00\x00\x00\x8e\x04\x00\x00\x00\x00\x00\x00\xda\x04\x00\x00\x00\x00\x00\x00\xd8\x04\x00\x00\x00\x00\x00\x00\xd9\x04\x00\x00\x00\x00\x00\x00W\x00\x00\x00\x00\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00~\x04\x00\x00\x00\x00\x00\x00\xf4\x04\x00\x00\x00\x00\x00\x00\xda\x04\x00\x00\x00\x00\x00\x00\xea\x04\x00\x00\x00\x00\x00\x00\xf4\x04\x00\x00\x00\x00\x00\x00\xb1\x04\x00\x00\x00\x00\x00\x00\xb4\x04\x00\x00\x00\x00\x00\x00\x93\x04\x00\x00\x00\x00\x00\x00\xab\x04\x00\x00\x00\x00\x00\x00\xaf\x04\x00\x00\x00\x00\x00\x00\xef\x04\x00\x00\x00\x00\x00\x00Z\x00\x00\x00\x00\x00\x00\x00Y\x00\x00\x00\x00\x00\x00\x00\x93\x04\x00\x00\x00\x00\x00\x00\xaf\x04\x00\x00\x00\x00\x00\x00\xef\x04\x00\x00\x00\x00\x00\x00\x8f\x04\x00\x00\x00\x00\x00\x00\xd8\x04\x00\x00\x00\x00\x00\x00\x8e\x04\x00\x00\x00\x00\x00\x00\xd8\x04\x00\x00\x00\x00\x00\x00\xda\x04\x00\x00\x00\x00\x00\x00\x8e\x04\x00\x00\x00\x00\x00\x00\xf7\x04\x00\x00\x00\x00\x00\x00\xf9\x04\x00\x00\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\x90\x04\x00\x00\x00\x00\x00\x00\xfa\x04\x00\x00\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00M\x00\x00\x00\x00\x00\x00\x00\xba\x04\x00\x00\x00\x00\x00\x00N\x00\x00\x00\x00\x00\x00\x00\x88\x04\x00\x00\x00\x00\x00\x00}\x04\x00\x00\x00\x00\x00\x00{\x04\x00\x00\x00\x00\x00\x00\x88\x04\x00\x00\x00\x00\x00\x00{\x04\x00\x00\x00\x00\x00\x00\x9f\x04\x00\x00\x00\x00\x00\x00\xf0\x04\x00\x00\x00\x00\x00\x00\xc2\x04\x00\x00\x00\x00\x00\x001\x00\x00\x00\x00\x00\x00\x00\xdb\x04\x00\x00\x00\x00\x00\x00>\x00\x00\x00\x00\x00\x00\x00=\x00\x00\x00\x00\x00\x00\x00\xfa\x04\x00\x00\x00\x00\x00\x00\x90\x04\x00\x00\x00\x00\x00\x00\xed\x04\x00\x00\x00\x00\x00\x00\x93\x04\x00\x00\x00\x00\x00\x00\xef\x04\x00\x00\x00\x00\x00\x00Y\x00\x00\x00\x00\x00\x00\x00;\x00\x00\x00\x00\x00\x00\x00\xcc\x04\x00\x00\x00\x00\x00\x00<\x00\x00\x00\x00\x00\x00\x00\xcc\x04\x00\x00\x00\x00\x00\x00\x8c\x04\x00\x00\x00\x00\x00\x00<\x00\x00\x00\x00\x00\x00\x00\xfb\x04\x00\x00\x00\x00\x00\x00\xfc\x04\x00\x00\x00\x00\x00\x00\x98\x04\x00\x00\x00\x00\x00\x00\x8b\x04\x00\x00\x00\x00\x00\x00\xdb\x04\x00\x00\x00\x00\x00\x00=\x00\x00\x00\x00\x00\x00\x00\xe2\x04\x00\x00\x00\x00\x00\x00\xf1\x04\x00\x00\x00\x00\x00\x00\x98\x04\x00\x00\x00\x00\x00\x00\xfb\x04\x00\x00\x00\x00\x00\x00\xf1\x04\x00\x00\x00\x00\x00\x00\xfd\x04\x00\x00\x00\x00\x00\x00\xc2\x04\x00\x00\x00\x00\x00\x002\x00\x00\x00\x00\x00\x00\x001\x00\x00\x00\x00\x00\x00\x00\xfe\x04\x00\x00\x00\x00\x00\x00\xaa\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xaf\x04\x00\x00\x00\x00\x00\x00\xab\x04\x00\x00\x00\x00\x00\x00\xa2\x04\x00\x00\x00\x00\x00\x00\xcd\x04\x00\x00\x00\x00\x00\x00~\x04\x00\x00\x00\x00\x00\x00\x7f\x04\x00\x00\x00\x00\x00\x00\xf1\x04\x00\x00\x00\x00\x00\x00\xfb\x04\x00\x00\x00\x00\x00\x00\x98\x04\x00\x00\x00\x00\x00\x00\xf0\x04\x00\x00\x00\x00\x00\x00Z\x00\x00\x00\x00\x00\x00\x00\xef\x04\x00\x00\x00\x00\x00\x00\xde\x04\x00\x00\x00\x00\x00\x00>\x00\x00\x00\x00\x00\x00\x00\xdb\x04\x00\x00\x00\x00\x00\x00\xf1\x04\x00\x00\x00\x00\x00\x00\xff\x04\x00\x00\x00\x00\x00\x00\xfd\x04\x00\x00\x00\x00\x00\x00\xe1\x04\x00\x00\x00\x00\x00\x00\xd6\x04\x00\x00\x00\x00\x00\x00\xe3\x04\x00\x00\x00\x00\x00\x00\xd6\x04\x00\x00\x00\x00\x00\x00\xcd\x04\x00\x00\x00\x00\x00\x00\xe3\x04\x00\x00\x00\x00\x00\x00\xd6\x04\x00\x00\x00\x00\x00\x00\xe1\x04\x00\x00\x00\x00\x00\x00\xd7\x04\x00\x00\x00\x00\x00\x00\x9e\x04\x00\x00\x00\x00\x00\x00\xff\x04\x00\x00\x00\x00\x00\x00\xf1\x04\x00\x00\x00\x00\x00\x00\xff\x04\x00\x00\x00\x00\x00\x00\xe9\x04\x00\x00\x00\x00\x00\x00\xfd\x04\x00\x00\x00\x00\x00\x00\xe9\x04\x00\x00\x00\x00\x00\x00\xff\x04\x00\x00\x00\x00\x00\x00\xe1\x04\x00\x00\x00\x00\x00\x00\xdf\x04\x00\x00\x00\x00\x00\x00\xc5\x04\x00\x00\x00\x00\x00\x00\xd9\x04\x00\x00\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xdf\x04\x00\x00\x00\x00\x00\x00\xd9\x04\x00\x00\x00\x00\x00\x00\xc5\x04\x00\x00\x00\x00\x00\x00\xdf\x04\x00\x00\x00\x00\x00\x00\x86\x04\x00\x00\x00\x00\x00\x00\xd9\x04\x00\x00\x00\x00\x00\x00\xd8\x04\x00\x00\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xfa\x04\x00\x00\x00\x00\x00\x00\xf7\x04\x00\x00\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00<\x00\x00\x00\x00\x00\x00\x00\x8b\x04\x00\x00\x00\x00\x00\x00=\x00\x00\x00\x00\x00\x00\x00\xbd\x04\x00\x00\x00\x00\x00\x00\xe4\x04\x00\x00\x00\x00\x00\x00\xfa\x04\x00\x00\x00\x00\x00\x00X\x00\x00\x00\x00\x00\x00\x00\x93\x04\x00\x00\x00\x00\x00\x00Y\x00\x00\x00\x00\x00\x00\x00\xbf\x04\x00\x00\x00\x00\x00\x00\xbd\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\xbd\x04\x00\x00\x00\x00\x00\x00\xfa\x04\x00\x00\x00\x00\x00\x00\xed\x04\x00\x00\x00\x00\x00\x00\xbd\x04\x00\x00\x00\x00\x00\x00\xed\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\xfc\x04\x00\x00\x00\x00\x00\x00\xfb\x04\x00\x00\x00\x00\x00\x00\xfd\x04\x00\x00\x00\x00\x00\x00\xf7\x04\x00\x00\x00\x00\x00\x00\xe8\x04\x00\x00\x00\x00\x00\x00\xf9\x04\x00\x00\x00\x00\x00\x00\xf9\x04\x00\x00\x00\x00\x00\x00\xe8\x04\x00\x00\x00\x00\x00\x00\xdc\x04\x00\x00\x00\x00\x00\x00\xf9\x04\x00\x00\x00\x00\x00\x00\x01\x05\x00\x00\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xa3\x04\x00\x00\x00\x00\x00\x00\xd1\x04\x00\x00\x00\x00\x00\x00\xcf\x04\x00\x00\x00\x00\x00\x00\xd2\x04\x00\x00\x00\x00\x00\x00\xa3\x04\x00\x00\x00\x00\x00\x00\xcf\x04\x00\x00\x00\x00\x00\x00\xd1\x04\x00\x00\x00\x00\x00\x00\xa3\x04\x00\x00\x00\x00\x00\x00\x02\x05\x00\x00\x00\x00\x00\x00\xa3\x04\x00\x00\x00\x00\x00\x00\xa4\x04\x00\x00\x00\x00\x00\x00\x02\x05\x00\x00\x00\x00\x00\x00\x9c\x04\x00\x00\x00\x00\x00\x00\x8a\x04\x00\x00\x00\x00\x00\x006\x00\x00\x00\x00\x00\x00\x006\x00\x00\x00\x00\x00\x00\x00\x8a\x04\x00\x00\x00\x00\x00\x007\x00\x00\x00\x00\x00\x00\x00\xe9\x04\x00\x00\x00\x00\x00\x00\xa9\x04\x00\x00\x00\x00\x00\x00\xaa\x04\x00\x00\x00\x00\x00\x00\x03\x05\x00\x00\x00\x00\x00\x00\xaa\x04\x00\x00\x00\x00\x00\x00\xa8\x04\x00\x00\x00\x00\x00\x00Z\x00\x00\x00\x00\x00\x00\x00\xf0\x04\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xf0\x04\x00\x00\x00\x00\x00\x001\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\xde\x04\x00\x00\x00\x00\x00\x00\xae\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00>\x00\x00\x00\x00\x00\x00\x00\xde\x04\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xd2\x04\x00\x00\x00\x00\x00\x00\xc9\x04\x00\x00\x00\x00\x00\x00\xca\x04\x00\x00\x00\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00\xc9\x04\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x00\x00\xeb\x04\x00\x00\x00\x00\x00\x00\xe6\x04\x00\x00\x00\x00\x00\x00\x96\x04\x00\x00\x00\x00\x00\x00\x99\x04\x00\x00\x00\x00\x00\x00\xeb\x04\x00\x00\x00\x00\x00\x00\x96\x04\x00\x00\x00\x00\x00\x00\x01\x05\x00\x00\x00\x00\x00\x00\xf9\x04\x00\x00\x00\x00\x00\x00\xdc\x04\x00\x00\x00\x00\x00\x00\xa3\x04\x00\x00\x00\x00\x00\x00\xca\x04\x00\x00\x00\x00\x00\x00\xa5\x04\x00\x00\x00\x00\x00\x00\xa3\x04\x00\x00\x00\x00\x00\x00\xd2\x04\x00\x00\x00\x00\x00\x00\xca\x04\x00\x00\x00\x00\x00\x00;\x00\x00\x00\x00\x00\x00\x00\x95\x04\x00\x00\x00\x00\x00\x00\xcc\x04\x00\x00\x00\x00\x00\x00\xe4\x04\x00\x00\x00\x00\x00\x00\xf7\x04\x00\x00\x00\x00\x00\x00\xfa\x04\x00\x00\x00\x00\x00\x00\x87\x04\x00\x00\x00\x00\x00\x00\x80\x04\x00\x00\x00\x00\x00\x00\xf5\x04\x00\x00\x00\x00\x00\x00\xa1\x04\x00\x00\x00\x00\x00\x00\xf5\x04\x00\x00\x00\x00\x00\x00\x80\x04\x00\x00\x00\x00\x00\x00\xf7\x04\x00\x00\x00\x00\x00\x00\xe4\x04\x00\x00\x00\x00\x00\x00\xfe\x04\x00\x00\x00\x00\x00\x00\x8d\x04\x00\x00\x00\x00\x00\x00\xcb\x04\x00\x00\x00\x00\x00\x00\x8f\x04\x00\x00\x00\x00\x00\x00\xd2\x04\x00\x00\x00\x00\x00\x00\xcf\x04\x00\x00\x00\x00\x00\x00\xd3\x04\x00\x00\x00\x00\x00\x00\xe6\x04\x00\x00\x00\x00\x00\x00\xe7\x04\x00\x00\x00\x00\x00\x00\x89\x04\x00\x00\x00\x00\x00\x00\xe7\x04\x00\x00\x00\x00\x00\x008\x00\x00\x00\x00\x00\x00\x00\x89\x04\x00\x00\x00\x00\x00\x008\x00\x00\x00\x00\x00\x00\x00\xe7\x04\x00\x00\x00\x00\x00\x009\x00\x00\x00\x00\x00\x00\x00\xcb\x04\x00\x00\x00\x00\x00\x00\xdd\x04\x00\x00\x00\x00\x00\x00\xf5\x04\x00\x00\x00\x00\x00\x00\xaa\x04\x00\x00\x00\x00\x00\x00\xfd\x04\x00\x00\x00\x00\x00\x00\xe9\x04\x00\x00\x00\x00\x00\x00\xfd\x04\x00\x00\x00\x00\x00\x00\xaa\x04\x00\x00\x00\x00\x00\x00\xac\x04\x00\x00\x00\x00\x00\x00\xaa\x04\x00\x00\x00\x00\x00\x00\x03\x05\x00\x00\x00\x00\x00\x00\xac\x04\x00\x00\x00\x00\x00\x00\xd5\x04\x00\x00\x00\x00\x00\x00\x8f\x04\x00\x00\x00\x00\x00\x00\xc7\x04\x00\x00\x00\x00\x00\x00\xec\x04\x00\x00\x00\x00\x00\x00\xeb\x04\x00\x00\x00\x00\x00\x00\x99\x04\x00\x00\x00\x00\x00\x00\xc3\x04\x00\x00\x00\x00\x00\x00R\x00\x00\x00\x00\x00\x00\x00Q\x00\x00\x00\x00\x00\x00\x00\xcb\x04\x00\x00\x00\x00\x00\x00\xc7\x04\x00\x00\x00\x00\x00\x00\x8f\x04\x00\x00\x00\x00\x00\x00\xb8\x04\x00\x00\x00\x00\x00\x00\xf6\x04\x00\x00\x00\x00\x00\x00\x84\x04\x00\x00\x00\x00\x00\x00\xfc\x04\x00\x00\x00\x00\x00\x00\x97\x04\x00\x00\x00\x00\x00\x00\x98\x04\x00\x00\x00\x00\x00\x00\x99\x04\x00\x00\x00\x00\x00\x00\x97\x04\x00\x00\x00\x00\x00\x00\x04\x05\x00\x00\x00\x00\x00\x00\x97\x04\x00\x00\x00\x00\x00\x00\xfc\x04\x00\x00\x00\x00\x00\x00\x04\x05\x00\x00\x00\x00\x00\x00\xa6\x04\x00\x00\x00\x00\x00\x00\xf6\x04\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\xb8\x04\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\xf6\x04\x00\x00\x00\x00\x00\x00\xf6\x04\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\xb8\x04\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x00\x00\x00\x00\x90\x04\x00\x00\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\x92\x04\x00\x00\x00\x00\x00\x00\xe0\x04\x00\x00\x00\x00\x00\x00\xcf\x04\x00\x00\x00\x00\x00\x00\x05\x05\x00\x00\x00\x00\x00\x00U\x00\x00\x00\x00\x00\x00\x00\xa0\x04\x00\x00\x00\x00\x00\x00\x06\x05\x00\x00\x00\x00\x00\x00\x80\x04\x00\x00\x00\x00\x00\x00\xa0\x04\x00\x00\x00\x00\x00\x00\xa1\x04\x00\x00\x00\x00\x00\x00\x84\x04\x00\x00\x00\x00\x00\x00\xba\x04\x00\x00\x00\x00\x00\x00\xb8\x04\x00\x00\x00\x00\x00\x00\xb1\x04\x00\x00\x00\x00\x00\x00\xa4\x04\x00\x00\x00\x00\x00\x00\xb3\x04\x00\x00\x00\x00\x00\x00\xa0\x04\x00\x00\x00\x00\x00\x00\x80\x04\x00\x00\x00\x00\x00\x00\x06\x05\x00\x00\x00\x00\x00\x00\xcf\x04\x00\x00\x00\x00\x00\x00\xe0\x04\x00\x00\x00\x00\x00\x00\xd3\x04\x00\x00\x00\x00\x00\x00\xe0\x04\x00\x00\x00\x00\x00\x00\x05\x05\x00\x00\x00\x00\x00\x00\xa7\x04\x00\x00\x00\x00\x00\x00\x91\x04\x00\x00\x00\x00\x00\x00\xec\x04\x00\x00\x00\x00\x00\x00\x90\x04\x00\x00\x00\x00\x00\x00\xec\x04\x00\x00\x00\x00\x00\x00\x91\x04\x00\x00\x00\x00\x00\x00\xeb\x04\x00\x00\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\x01\x05\x00\x00\x00\x00\x00\x00\x92\x04\x00\x00\x00\x00\x00\x00\xac\x04\x00\x00\x00\x00\x00\x00\xfc\x04\x00\x00\x00\x00\x00\x00\xfd\x04\x00\x00\x00\x00\x00\x00\x06\x05\x00\x00\x00\x00\x00\x00~\x04\x00\x00\x00\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00\xe8\x04\x00\x00\x00\x00\x00\x00\xf7\x04\x00\x00\x00\x00\x00\x00\xac\x00\x00\x00\x00\x00\x00\x00~\x04\x00\x00\x00\x00\x00\x00\x06\x05\x00\x00\x00\x00\x00\x00\x80\x04\x00\x00\x00\x00\x00\x00\xc1\x04\x00\x00\x00\x00\x00\x009\x00\x00\x00\x00\x00\x00\x00\xe7\x04\x00\x00\x00\x00\x00\x00\x03\x05\x00\x00\x00\x00\x00\x00\xae\x04\x00\x00\x00\x00\x00\x00\xac\x04\x00\x00\x00\x00\x00\x009\x00\x00\x00\x00\x00\x00\x00\xc1\x04\x00\x00\x00\x00\x00\x00:\x00\x00\x00\x00\x00\x00\x00\x01\x05\x00\x00\x00\x00\x00\x00\xdc\x04\x00\x00\x00\x00\x00\x00\x8b\x04\x00\x00\x00\x00\x00\x00\x8c\x04\x00\x00\x00\x00\x00\x00\x01\x05\x00\x00\x00\x00\x00\x00\x8b\x04\x00\x00\x00\x00\x00\x00\x01\x05\x00\x00\x00\x00\x00\x00\x8c\x04\x00\x00\x00\x00\x00\x00\x92\x04\x00\x00\x00\x00\x00\x00P\x00\x00\x00\x00\x00\x00\x00\x9a\x04\x00\x00\x00\x00\x00\x00\xc4\x04\x00\x00\x00\x00\x00\x00\xa4\x04\x00\x00\x00\x00\x00\x00\xb6\x04\x00\x00\x00\x00\x00\x00\xb3\x04\x00\x00\x00\x00\x00\x00\xb7\x04\x00\x00\x00\x00\x00\x00\xb6\x04\x00\x00\x00\x00\x00\x00\xc0\x04\x00\x00\x00\x00\x00\x00\x85\x04\x00\x00\x00\x00\x00\x00\x9a\x04\x00\x00\x00\x00\x00\x00\x9b\x04\x00\x00\x00\x00\x00\x00U\x00\x00\x00\x00\x00\x00\x00\x06\x05\x00\x00\x00\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00\x81\x04\x00\x00\x00\x00\x00\x00\xa5\x04\x00\x00\x00\x00\x00\x00\xca\x04\x00\x00\x00\x00\x00\x00\xa5\x04\x00\x00\x00\x00\x00\x00\x81\x04\x00\x00\x00\x00\x00\x00\xc0\x04\x00\x00\x00\x00\x00\x00\xa9\x04\x00\x00\x00\x00\x00\x00\xe9\x04\x00\x00\x00\x00\x00\x00\xe3\x04\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xf7\x04\x00\x00\x00\x00\x00\x00\xfe\x04\x00\x00\x00\x00\x00\x00\xa8\x04\x00\x00\x00\x00\x00\x00\xf5\x04\x00\x00\x00\x00\x00\x00\xdd\x04\x00\x00\x00\x00\x00\x00\xf5\x04\x00\x00\x00\x00\x00\x00\xa8\x04\x00\x00\x00\x00\x00\x00\x87\x04\x00\x00\x00\x00\x00\x00\x03\x05\x00\x00\x00\x00\x00\x00\xa8\x04\x00\x00\x00\x00\x00\x00\xdd\x04\x00\x00\x00\x00\x00\x00\xa6\x04\x00\x00\x00\x00\x00\x00\x05\x05\x00\x00\x00\x00\x00\x00\xc5\x04\x00\x00\x00\x00\x00\x00\x05\x05\x00\x00\x00\x00\x00\x00\xa6\x04\x00\x00\x00\x00\x00\x00\xa7\x04\x00\x00\x00\x00\x00\x00\xf2\x04\x00\x00\x00\x00\x00\x00\x96\x04\x00\x00\x00\x00\x00\x00\xe6\x04\x00\x00\x00\x00\x00\x00\xf7\x04\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\xac\x00\x00\x00\x00\x00\x00\x00\x96\x04\x00\x00\x00\x00\x00\x00\xf2\x04\x00\x00\x00\x00\x00\x00\x98\x04\x00\x00\x00\x00\x00\x00\x83\x04\x00\x00\x00\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x00\x00\x83\x04\x00\x00\x00\x00\x00\x00\x81\x04\x00\x00\x00\x00\x00\x00\xca\x04\x00\x00\x00\x00\x00\x00\xb8\x04\x00\x00\x00\x00\x00\x00\xb9\x04\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\xb9\x04\x00\x00\x00\x00\x00\x00M\x00\x00\x00\x00\x00\x00\x00\x04\x05\x00\x00\x00\x00\x00\x00\xb0\x04\x00\x00\x00\x00\x00\x00\xf3\x04\x00\x00\x00\x00\x00\x00\xe0\x04\x00\x00\x00\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x00\x00\xd3\x04\x00\x00\x00\x00\x00\x00\x99\x04\x00\x00\x00\x00\x00\x00\x04\x05\x00\x00\x00\x00\x00\x00\xf3\x04\x00\x00\x00\x00\x00\x00\x89\x04\x00\x00\x00\x00\x00\x00\xf2\x04\x00\x00\x00\x00\x00\x00\xe6\x04\x00\x00\x00\x00\x00\x00\xb2\x04\x00\x00\x00\x00\x00\x00\xb0\x04\x00\x00\x00\x00\x00\x00\xae\x04\x00\x00\x00\x00\x00\x00\xb0\x04\x00\x00\x00\x00\x00\x00\xb2\x04\x00\x00\x00\x00\x00\x00\xb3\x04\x00\x00\x00\x00\x00\x00\xb4\x04\x00\x00\x00\x00\x00\x00\xb2\x04\x00\x00\x00\x00\x00\x00\xae\x04\x00\x00\x00\x00\x00\x00\xbb\x04\x00\x00\x00\x00\x00\x00\x03\x05\x00\x00\x00\x00\x00\x00\xdd\x04\x00\x00\x00\x00\x00\x00\xbb\x04\x00\x00\x00\x00\x00\x00\xb4\x04\x00\x00\x00\x00\x00\x00\xae\x04\x00\x00\x00\x00\x00\x00\xfc\x04\x00\x00\x00\x00\x00\x00\xad\x04\x00\x00\x00\x00\x00\x00\x04\x05\x00\x00\x00\x00\x00\x00\x03\x05\x00\x00\x00\x00\x00\x00\xbb\x04\x00\x00\x00\x00\x00\x00\xae\x04\x00\x00\x00\x00\x00\x00\xad\x04\x00\x00\x00\x00\x00\x00\xb0\x04\x00\x00\x00\x00\x00\x00\x04\x05\x00\x00\x00\x00\x00\x00\xad\x04\x00\x00\x00\x00\x00\x00\xfc\x04\x00\x00\x00\x00\x00\x00\xac\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\xb7\x04\x00\x00\x00\x00\x00\x00\xc0\x04\x00\x00\x00\x00\x00\x00\xbf\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\xc0\x04\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x00\x00\xd3\x04\x00\x00\x00\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x00\x00\xff\x04\x00\x00\x00\x00\x00\x00\x9e\x04\x00\x00\x00\x00\x00\x00\x9f\x04\x00\x00\x00\x00\x00\x00\xb7\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\xed\x04\x00\x00\x00\x00\x00\x00\xe1\x04\x00\x00\x00\x00\x00\x00\xff\x04\x00\x00\x00\x00\x00\x00\x9f\x04\x00\x00\x00\x00\x00\x00\x91\x04\x00\x00\x00\x00\x00\x00\xe5\x04\x00\x00\x00\x00\x00\x00\xeb\x04\x00\x00\x00\x00\x00\x00\xb5\x04\x00\x00\x00\x00\x00\x00\xb7\x04\x00\x00\x00\x00\x00\x00\xf3\x04\x00\x00\x00\x00\x00\x00\xb5\x04\x00\x00\x00\x00\x00\x00\xb0\x04\x00\x00\x00\x00\x00\x00\xb3\x04\x00\x00\x00\x00\x00\x00\xc1\x04\x00\x00\x00\x00\x00\x00\xe5\x04\x00\x00\x00\x00\x00\x00\x95\x04\x00\x00\x00\x00\x00\x00\xb0\x04\x00\x00\x00\x00\x00\x00\xb5\x04\x00\x00\x00\x00\x00\x00\xf3\x04\x00\x00\x00\x00\x00\x00\xb9\x04\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x00\x00\x00\x00\x9c\x04\x00\x00\x00\x00\x00\x006\x00\x00\x00\x00\x00\x00\x005\x00\x00\x00\x00\x00\x00\x00\x98\x04\x00\x00\x00\x00\x00\x00\xf2\x04\x00\x00\x00\x00\x00\x00\xe2\x04\x00\x00\x00\x00\x00\x00\xea\x04\x00\x00\x00\x00\x00\x00\x02\x05\x00\x00\x00\x00\x00\x00\xb1\x04\x00\x00\x00\x00\x00\x00\x02\x05\x00\x00\x00\x00\x00\x00\xa4\x04\x00\x00\x00\x00\x00\x00\xb1\x04\x00\x00\x00\x00\x00\x00\x02\x05\x00\x00\x00\x00\x00\x00\xea\x04\x00\x00\x00\x00\x00\x00\xd1\x04\x00\x00\x00\x00\x00\x00\x9b\x04\x00\x00\x00\x00\x00\x00\xba\x04\x00\x00\x00\x00\x00\x00\x85\x04\x00\x00\x00\x00\x00\x00\xc8\x04\x00\x00\x00\x00\x00\x00T\x00\x00\x00\x00\x00\x00\x00S\x00\x00\x00\x00\x00\x00\x00\xe5\x04\x00\x00\x00\x00\x00\x00\x91\x04\x00\x00\x00\x00\x00\x00\x95\x04\x00\x00\x00\x00\x00\x00\xd0\x04\x00\x00\x00\x00\x00\x00\xc5\x04\x00\x00\x00\x00\x00\x00\x05\x05\x00\x00\x00\x00\x00\x00T\x00\x00\x00\x00\x00\x00\x00\xc8\x04\x00\x00\x00\x00\x00\x00\xa1\x04\x00\x00\x00\x00\x00\x00\xee\x04\x00\x00\x00\x00\x00\x00\xb7\x04\x00\x00\x00\x00\x00\x00\xed\x04\x00\x00\x00\x00\x00\x00\xcf\x04\x00\x00\x00\x00\x00\x00\xd0\x04\x00\x00\x00\x00\x00\x00\x05\x05\x00\x00\x00\x00\x00\x00\xd5\x04\x00\x00\x00\x00\x00\x00\xc7\x04\x00\x00\x00\x00\x00\x00\xc3\x04\x00\x00\x00\x00\x00\x00\xb7\x04\x00\x00\x00\x00\x00\x00\xee\x04\x00\x00\x00\x00\x00\x00\xf3\x04\x00\x00\x00\x00\x00\x00S\x00\x00\x00\x00\x00\x00\x00\xce\x04\x00\x00\x00\x00\x00\x00\xc8\x04\x00\x00\x00\x00\x00\x00\xbe\x04\x00\x00\x00\x00\x00\x00\xfe\x04\x00\x00\x00\x00\x00\x00\xe4\x04\x00\x00\x00\x00\x00\x00\xfe\x04\x00\x00\x00\x00\x00\x00\xbe\x04\x00\x00\x00\x00\x00\x00\xaa\x00\x00\x00\x00\x00\x00\x00\xc6\x04\x00\x00\x00\x00\x00\x00\xf5\x04\x00\x00\x00\x00\x00\x00\xa1\x04\x00\x00\x00\x00\x00\x00\xce\x04\x00\x00\x00\x00\x00\x00S\x00\x00\x00\x00\x00\x00\x00R\x00\x00\x00\x00\x00\x00\x00\xce\x04\x00\x00\x00\x00\x00\x00\xc7\x04\x00\x00\x00\x00\x00\x00\xc8\x04\x00\x00\x00\x00\x00\x00'
+p22
+tp23
+bsS'lat'
+p24
+g9
+(g10
+(I0
+tp25
+g12
+tp26
+Rp27
+(I1
+(I1286
+tp28
+g16
+(S'f8'
+p29
+I0
+I1
+tp30
+Rp31
+(I3
+S'<'
+p32
+NNNI-1
+I-1
+I0
+tp33
+bI00
+S'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\xc2\xf5(\\\x7fV\xc0\x8f\xc2\xf5(\\\x7fV@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x85\xda\x00\x00\x00\x18\xc0,\x03\r\x01\x00\x00(\xc0\xa3A\xd1\x00\x00\x002\xc0\xb8\xe4%\x01\x00\x008\xc0oF\\\x01\x00\x00>\xc0\xf3\t\xd8\x00\x00\x00B\xc0\x7f\xca\x07\x01\x00\x00E\xc0\xba\x1f\x10\x01\x00\x00H\xc0:\xe3\xd9\x00\x00\x00K\xc0K\xbb\xc0\x00\x00\x00N\xc0\x1d\xbeQ\x00\x00\x80P\xc0 \xfd=\x00\x00\x00R\xc0\x08\x94*\x00\x00\x80S\xc0\x17G\x14\x00\x00\x00U\xc0\xa3W\xf2\xff\xff\xffT\xc0\x9b_\xde\xff\xff\x7fS\xc0\x97\xaf\xcb\xff\xff\xffQ\xc0\xd2\x86\xb6\xff\xff\x7fP\xc0\xc8\xdcQ\xff\xff\xffM\xc0\x0c\xf6\'\xff\xff\xffJ\xc0\x805\xf8\xfe\xff\xffG\xc0F\xe0\xef\xfe\xff\xffD\xc0\xc6\x1c&\xff\xff\xffA\xc0o\x89~\xfe\xff\xff=\xc0\x8e\x07\xb9\xfe\xff\xff7\xc0\x7f\x0b\x08\xff\xff\xff1\xc0\xcc_\xab\xfe\xff\xff\'\xc0\x8b\x8e\xbb\xfe\xff\xff\x17\xc0\xd4\x85\xda\x00\x00\x00\x18@,\x03\r\x01\x00\x00(@\xa3A\xd1\x00\x00\x002@\xb8\xe4%\x01\x00\x008@oF\\\x01\x00\x00>@\xf3\t\xd8\x00\x00\x00B@\x7f\xca\x07\x01\x00\x00E@\xba\x1f\x10\x01\x00\x00H@:\xe3\xd9\x00\x00\x00K@K\xbb\xc0\x00\x00\x00N@\x1d\xbeQ\x00\x00\x80P@ \xfd=\x00\x00\x00R@\x08\x94*\x00\x00\x80S@\x17G\x14\x00\x00\x00U@\xa3W\xf2\xff\xff\xffT@\x9b_\xde\xff\xff\x7fS@\x97\xaf\xcb\xff\xff\xffQ@\xd2\x86\xb6\xff\xff\x7fP@\xc8\xdcQ\xff\xff\xffM@\x0c\xf6\'\xff\xff\xffJ@\x805\xf8\xfe\xff\xffG@F\xe0\xef\xfe\xff\xffD@\xc6\x1c&\xff\xff\xffA@o\x89~\xfe\xff\xff=@\x8e\x07\xb9\xfe\xff\xff7@\x7f\x0b\x08\xff\xff\xff1@\xcc_\xab\xfe\xff\xff\'@\x8b\x8e\xbb\xfe\xff\xff\x17@\xd4\x85\xda\x00\x00\x00\x18@,\x03\r\x01\x00\x00(@\xa3A\xd1\x00\x00\x002@\xb8\xe4%\x01\x00\x008@oF\\\x01\x00\x00>@\xf3\t\xd8\x00\x00\x00B@\x7f\xca\x07\x01\x00\x00E@\xba\x1f\x10\x01\x00\x00H@:\xe3\xd9\x00\x00\x00K@K\xbb\xc0\x00\x00\x00N@\x1d\xbeQ\x00\x00\x80P@ \xfd=\x00\x00\x00R@\x08\x94*\x00\x00\x80S@\x17G\x14\x00\x00\x00U@\xa3W\xf2\xff\xff\xffT@\x9b_\xde\xff\xff\x7fS@\x97\xaf\xcb\xff\xff\xffQ@\xd2\x86\xb6\xff\xff\x7fP@\xc8\xdcQ\xff\xff\xffM@\x0c\xf6\'\xff\xff\xffJ@\x805\xf8\xfe\xff\xffG@F\xe0\xef\xfe\xff\xffD@\xc6\x1c&\xff\xff\xffA@o\x89~\xfe\xff\xff=@\x8e\x07\xb9\xfe\xff\xff7@\x7f\x0b\x08\xff\xff\xff1@\xcc_\xab\xfe\xff\xff\'@\x8b\x8e\xbb\xfe\xff\xff\x17@\xd4\x85\xda\x00\x00\x00\x18\xc0,\x03\r\x01\x00\x00(\xc0\xa3A\xd1\x00\x00\x002\xc0\xb8\xe4%\x01\x00\x008\xc0oF\\\x01\x00\x00>\xc0\xf3\t\xd8\x00\x00\x00B\xc0\x7f\xca\x07\x01\x00\x00E\xc0\xba\x1f\x10\x01\x00\x00H\xc0:\xe3\xd9\x00\x00\x00K\xc0K\xbb\xc0\x00\x00\x00N\xc0\x1d\xbeQ\x00\x00\x80P\xc0 \xfd=\x00\x00\x00R\xc0\x08\x94*\x00\x00\x80S\xc0\x17G\x14\x00\x00\x00U\xc0\xa3W\xf2\xff\xff\xffT\xc0\x9b_\xde\xff\xff\x7fS\xc0\x97\xaf\xcb\xff\xff\xffQ\xc0\xd2\x86\xb6\xff\xff\x7fP\xc0\xc8\xdcQ\xff\xff\xffM\xc0\x0c\xf6\'\xff\xff\xffJ\xc0\x805\xf8\xfe\xff\xffG\xc0F\xe0\xef\xfe\xff\xffD\xc0\xc6\x1c&\xff\xff\xffA\xc0o\x89~\xfe\xff\xff=\xc0\x8e\x07\xb9\xfe\xff\xff7\xc0\x7f\x0b\x08\xff\xff\xff1\xc0\xcc_\xab\xfe\xff\xff\'\xc0\x8b\x8e\xbb\xfe\xff\xff\x17\xc0\xa3\xf5\xbe\xa6\x11\xf6A@\x97\x02\xb6\xa9\x84`>@PU<Z\xba0A@\x0e%y\xd5\xb5\x1f<@\x7f*\xa1\xd3\x98\xd4E@\x05\xa6$\xc8\x93-F@lm=&<`C@{7\xa1\x08\x8e\xdf?@2\xacp\x80iK@@C\x00l\x8a\x948B@\xa0\x8b:"\xd3\xd9+@\xc0\t\x1ad\xce}4@\x96\xc1\x8a\x18\xba{3@\xd9\xde"v\x1f\xa2@@\xab\xc1\xa8i\x06\x10$@\x0b\x9e\xa3Q8\xeb>@\xe6jAN\x0f\xe49@d\xce6a\x13\x1a@@\x17\x82}\xc87\xf6%@\x80\x97.+\xe9\x80$@\x9b\x0c\xef-d\x96-@\xcb\x87\xcf\xfc\x86@3@4\xf1H5\rB9@\xe6o\xe6&\x8d66@\xe7Dbb\x1d\xf6\x18@\x1ap\x03\x02\xc2>L@\x9b\xb1\xe8\xc3\xc8\xbbH@\x9b\xd44[v;\x1a@\x06\xf4\x90\xd6%v\x11@mu;\x81\xa4\x0eI@\xa0\x90\xef)\xa4\xbcK@i\x14D\xb8\xa8KJ@s1]D\x0c\xa7\x15@\xf5y%G~\x1e<@\xbaX\xe1\x06\xa1\xdc6@\xd2\\i\xbf/Z;@\xc0\x16%[l`5@\xa3\x0e\xd4\x07\\\xe2P@\\>\xa4\xe8&3R@\xcb\xdbd\x0bQ\x81H@\xb7\x94w\x10F>H@\xe19\x82f\xd6\xd4E@\xa1\x17Y=\xd68E@\xd9\x10\xbc\xfe\xd42K@)\x99\x03\xbd\x17\x84Q@\x94\x1b\xf9\x11\xec\xc4P@\x9a\n\xe2\x83|T\x19@\xfaZ\xfe\x91y\xb0\x0f@\xa2\x0e\xd4|\x83CM@\x1b\x8b\x97]\xe0DN@v/\x15\xc2c$K@\xc7\xc5\x93\xcc\xc5\xa6*@\xe1\xde\xb4\xf3\x81\xbe"@*t\x833\xcaU\x1b@\x03\xf8<\x93d\xd8-@M\x9fS\rJ?1@\xa8\xbbmq<\xa9$@\x7fB\'\xae\xe7\xbd\'@\xe5\xc5\xfc\ny\xb9P@\xb9q\xe7\x07o\xc2Q@\xab\xe5\x1e\x96i\xfe5@N\xcb\x7fV\x87;S@MU\xf0\xf8\x8f\x08@@ \xb5\xfc\xc7m\xd5@@\xbb`\xcf<\x8d\x1cH@wa|W\xeb\xebM@m\xa0\xaf\xc8>\x96&@\xfe\x0f\xee\x03\xaa\xfa)@\x1e5\xf2\xee\xf3\x8bP@g\x8a\x94\xec\xd4\xcd@@+\t\xe7\x1d\xa24C@\x0e\x9e\x94\xc0\xf3\xeeB@\x90\x0b\xd0\x04\x95\rO@\xda.\nT\'\x19P@\x1e\xc6L0\xf492@\xc2V\x11\x8e6**@_N\x93v\x85//@\x18\x7f\x91;x\xdd;@\xed\x01\xc0N\xa2\x84L@7\xbc\xd09\xa7\xc3F@\x7f\xd3\x81\xa4\x05\xb6E@\x95\x9a\x8f\x87\x10qC@\xb2\xf6\xec>\x9b\xe6R@:\x03B\x8d&\x92T@\xc94\xe43\xf5\xd8A@<\x91\x94\xc2|\xe2B@\xa7UT\xb8\xf4XM@)\x9f3\x1d\xb12F@\xb1"\x7f[D1I@4\x18m42/G@Q\x0c\xa7\xd8X(J@\x81l\xc9\xe3\x84TD@\n\xcfM\x1c\xd8\x1a)@\x8f\xd0!\'\x19\xf3S@3W\xaa\xb8N\x01P@\xaa\x95O3\x85JN@[UDl\xd3\\1@\xb38f\xcax?7@\n\x1a:\x05\x80\xe92@\xeb\xf8\xc7S\x7f\xf3\x10@e\xcdE\x1eMb\n@\'N\xa9\x91\xdb\xf2 @6\xa4\x1d\xa3\xee\x8e9@\x1ep\x9aY\xe1\x8e8@\xc0c\xc2G\x95}=@3\xbd\xa4\x8ex=8@F\xcb\x1a\xbaI(>@\x86\xf7Z\x14QfK@\t\xcfR1\xbf\x13:@\xf0E\x01\xed+ E@\x1f\x88\xe8P\x1e\xfbE@\x8fT\x83\xb4h\\.@\xfa\x8d?@\xbb-\x15@i\x02\x1d\xc7\xe8\xd7\x13@\xd1}/\xd4\xc5\xa0O@Op\xd1\xffw\x07O@5gn$\xb3oM@\xc3\xa1\xf4\x8c\x1f\xe9 @\xf5\x07\x10\x91\x08\xc7\x17@Fk\x0b\x10p\xc8\x12@g\xde<8X\x15B@\xdb\x8b,\x02\x1e\xba @\xaf\xc6\xb0Ea\xeb5@\xbeF\xf4}.4\x12@)\xe1\xc6\xb1\xb1"2@\xd6}\x8cA\x84\xf31@J\xd1\xb8\x161\x1f\r@\x1dZ\x9d6\xd7}C@\xb3\xf7#F\x04\xc6\'@t|%{9\xa0"@\xdc\xaa!\xbf\xd4\xdaC@\xb1\x8d\xb2\x81\xea\xaa"@\xa3\xc1\x06\xfe\xea\xfe1@W2\x9d\x1d*\xe9+@\x84\xb5\xa2\x1e\xa7\xc7\x15@\xa3]x\x14bA6@\xca\xbd!C\xd5\xc90@x\xd2;[O\x9f;@\xc9\xed\xeaH.\x05\x0c@(m\xb2\x10\xcf\xa0 @/>\x97\xca\x95\x04\n@\xc9\xe1t\xe1a\xfa-@w\x9ee@\x16\x057@X\xe2\x1aq+M7@\xb7OK\x0f\xc1(<@,\xa6\xa6\xbe\xb9\x7f2@,\xf99\xe5<\xad)@\xee\xa3~\x9a\r\xf0\x19@\x98\xd6\x97\xa1\xdf\x8c*@)\xbc&\xbc\xe4\xc35@\x80\xad\xe8A\xa3W6@X]\x95\xe5$%<@\'o\xce\x8eY\xfb5@\xd8{=\xa6\nU<@\xac\xbb\xae\x17\xe0\xf99@<\xa6p\xd3\xe6\x1b"@\x96da8\x14\x1b"@\x86|\x80\xdf\x90\xed"@\xb9U\xca\x085\xe3\x13@G\x96\\\xc2\x04\x9d,@s\xc1B\xa9P\xcc"@yg\xdaS\xbdl,@\x96v\x04\x0f5\xc5$@\xb9F\xa1\xd4\xad\x9bT@\xdf\xe5;<\xf7\xbf\x16@\xbf\x13(\x115v4@\x05\x8b!\xa6 36@\x90Bl\x80\x84\xe4:@\x96\xa2U\xc9\xc2j\x13@YR\\\xc7\xc0\x95\x13@\x13\xc2\x1a$\x95kL@\xf0\xa9\xbf\x89\xee\xa8O@\x03C\x815\xd9\xa3L@x\x04\xa7;\xe0\x81C@gA\xa0\xa3\xbe\xccE@}kL\xc2*GF@#\xdf\x16\xfdw\x90H@\xeb\x11\xfb>\x18b\x1b@\x191R(\xe7^\x17@Y\xac\xd8\x84\x83@\x10@\xdf\x12*$ \xa6@@\xe2\xfeg\x15\xaa\xd2C@V\xe9sn\xe09@@\xa5\xffB\xfbNV\x17@\x87\xd2\x8e\xb5\x92\x142@\xfa\xa6\xa8\xce\xa6r7@\xc4\xcf^lik(@L\xb6\xef\xf1\xa3\xee\x1a@\xe1,\x88kf\xe8)@\xf2\xf3\xfb\x19\nT\x15@P\xc8\xf2\x91m\xb6%@\xdc\xe2\xc8iiq<@\x88_W\x96\xa4VC@\xc6\x11\xed\x10\x8b\xb9F@\x04n,\r\xff\x8e\'@\xb7\x11zPg\xa9F@\xab\x16P\xac\xa2\xeeC@\x8b\xab\x1c\x9b\x03\x16 @\xe2\x14@w\xf3\xa6\x0e@\xfc\xa1\xe5\x97R\xcd0@I\x1dY\xae\xd9\xb9R@n.6m\xd5=Q@:\x1e\x91\x8b\xd2\x0bQ@\xbcQi\x03~\x083@2\xbc/1\xa1\xb8@@\x81\xaf\x87\xfb\x9b\x05A@\xca\x0b\x17;\xcflP@b\x7f:\x16\xc9\x02R@\xfb[\x0b\xd6\xb5V@@\x95\xed\xfa\xb0o\x021@==m\x89\xfa\x9b@@\xc9\x98\xe9\x8d\x0e\tD@#N\xe9\xd0\xe4I>@\xdc\x9cNM\x11\x0f=@\xb5\\\xed\xe3k\x019@n\xeb\x95\x1c\xad!@@\x96\xa5}\xe2\xb9\xf8(@GI[\xbb\xc6\xabI@\xe0\x81\x16\t\\\xc1I@ \x1f\x0f%\x98\x83:@\xb4t\xbaI\x83U1@\xf4\xb5\xb0\x0c\x96E3@\xae\xbf\x18N\n\xdbP@\xb9\ty\x99\x05 1@\xc3\xef\x89)v\xed,@\x81\xdd\xcf\x10\xa6RM@\xc5\x12p\x95a\x88J@\xf3z\xf8_TNL@;\xb1\xb38Q{F@\xed)m~\x94\x93C@r\xedm*y\x9fD@8\xda\x95\xd1\x03\nI@\x8a6\x0c[\xf6\xf16@>q\xd8xP\x03(@\x9bv\xa11\x10\xa2I@g\x10d|\xacNG@\x80\x1f\x97\x15\xdf\xe2R@$!\x02\x7f\x15!T@\x92\x11\xac\xb5?GS@`\xd7g]\x86\x007@|Bn\xfb\x9c\xb8A@\x9d\x93\x84\xc5\xb6\x93@@\xd6\x17\x0b%k\x89<@\x87\xc0"\xcd\x1a\xf6.@\x16D_\xe8\xc7\x8a$@\x03\x89W#\xde\xed+@\x17M\x02\x05\x93\xd4E@\x1d[#B\xb7\xed3@\xb9\xb1~\xdf-sB@\xf8`\xda4V\x177@\xfb\xb8\xf59\xab\xb44@\x10<\xf9i!TR@\x94\xc4i\x9d9(O@ \xacBi\x926M@7,\x9c\xe7\x93-L@i4\xea\x05\x14\x97I@Z\xaa\xa2\x85\x07o@@\xe7\x8a9\xcd\xf5Y@@M*F\x92\x9c\x89:@9\xaf\xec\xf1C\xe5I@\x8dn\x84\xb0\'\x9c\x10@\xa7G\x0bz\xcf\x03E@\xac\xa4U\x94\x81#O@\xee\x1d0\x01acK@\xe8\xc4\x17\xc5\x99\xb3B@\xdah\xb36\xc5\xcb0@\x8b\xdeI\xca\xd3\x9a<@\xf9\xd9j\xdeS\xf5B@\xe4\x13\x0c\xb4Y\x1aC@ve\x9eb1\x8cQ@\x99\xbd\x89\xb5\xd5\xeeO@\xe1\xdaU\x85\x8cP:@"\x0c"\x17n\xcb3@a\x86\x9b\xf2.\xf2F@!\x83\xb8\x03l\x8dG@\re\xd61\x14\xfbN@\x01}\xceU\x11\xf0N@\x93$\xe4\xfah\xf2P@\x8fL\x92\xbf\x83\xaaR@\x00\xcae\xe8\xb6qQ@D\x03k\x07\xbb-\x1c@\xe9\xbe\xf60Vn\x17@\x80\x9d\x9d\xaf\x0c\xb7L@L\x80ia\x05\x08P@\xb3fx\xc8F^3@\x97?g\x03\xa6\xf36@\xa4\xef\x9d\x0e\xd5\x841@tN\x1d\xe7+)P@\x03\xcfn\xec7\xaf\x1b@?D\x04\x92\xb5\x00+@\xb8\x1a|.^q*@\xf1\xbb\xd3\x81Q\x18\x11@L\x8b\xb7\xc9\x89\xa6R@9\x1f\x1ek\x0fgQ@\xc7\xa6\xeb\xd4\x9f\xc5#@vH\xa0\xc2\xa25\x12@\xcd\x9f\xb2\xebQw\x17@-M\x0b\xddA\xd5J@\x7f\xa4^Y\x98DJ@>\x03\xac\xbf\xc8\xa2M@f\xee\xdd%O\xd0J@\x03\x9d\xdcBN\x1b"@\x1e\x00\x17L\xffa*@/\xd5:f\x99\xb39@\x15\xcc\xe9} &?@\x8d\x8cWE\xce\x0b8@\xff\xd0X\\\\\xc3M@\xf9\x1b\xe2_\xc5\xe7.@\xcfnZ\x95\xa6\xaa\'@\xf6\x02n\xd8\xc6|2@\x84Uxj\xea/%@\x96M\xc6\xe6\x8a\x025@j\xc0\x11\x84\xca\x86/@g\xa0aN\xf8?3@1s\x84\x06\x1c\xf7\x14@\r\xdf\x1a\xe53\xeb\x18@\xe9(\xc9\xee\xaf\xcdQ@\xee\xe5\xdb\x0c\xf6\xd2\x1a@-J{\xd8\xc0Y\x1e@\x1dU\n\xe2\xb3\xdf\x12@\xb0\x9f\xdegsqQ@h;v\xaa\xb8\xe8R@0\xb4\x8a\xfb\xcd0%@\x96\xc3\x1am~\xaaE@\xd2\xec80m\xceH@\xa8ms/\xd2\x9d<@\xc8\xf8\xd2Y\xc2\xb39@\x94\xc6\xdbJ\xd4\'F@D`c\xebG\x15I@\x0fm\xf2\xf2\xd5\x1eC@\xbdN\xaa\x96y\x12E@\xce\x05\xb16\xdf\xb9B@*5]Z3\x98E@=\x11\xb6\xb7\xa2AG@\xa8<_G\x9e.H@\xbfgM\xad\xf1\x90H@f\xd0\xb2\x02o"T@\xc9\xe4\x90\xdf[,4@\xa0\t\xbd\xf0\x04i3@\x82Q\xc4W\xe21+@\xa6l\xc5\xb5\x9e\x9d\'@8M\xfc\xaaz.4@X\xb8\xbb\xd8\xc3K-@\x7f\xdc\x843\xe4\xb99@(\xbc\xda\xfc\xfb\xdaD@\xb7\xd3l\x05d\xa1E@1\xd7\x99\x92\xb1bB@\x9eol\xbc\xfaW8@\x17!aGB\x88<@z\x8f\xf7\xdd\xf1A:@\xee%B\x9b8\x99(@$\xc3\x11=R\x00P@\xfar\xd9ZS\x82M@\xd8wy\xcf\x02\x9bG@E\xfeHK^\xf1H@6}\t\xd5\x1eUE@>\x8b-\n:\xb8F@\x12\xf2\x88\xfbG\xc9H@\xe5B\xaa/\xf4\xe9J@=\x0b\xd1-\xb8\xe6\x0e@\xf9\xb3a\x9b\xa9\xdc"@7\x8a\x1a2\xc7q9@jyC?\xeb\'C@\xd7\x1d\xaaJq\xbe@@\xdee\xcbN\xd8\xc7B@\xac\x10\x05\xee\x06\xc72@\x9a\xb8\x1b\x06\x17\x82:@\xb4u\xe5\x99DqP@+Y\xd5b\xeb<,@\xcav\x96r\x8d\xc1!@\xff\xdc\xd6=\xedX#@\xc5\xf4\x04\xfc\xa7\x97>@&zJ\xe6Y\x1b,@\xe9\x97G\xe5\x84\x18;@\x04\xd2\xee=8h@@W/\xd4\xbf \xfeC@S\x87\x18Y\xc5\xf7A@\xfe\x0f\xb3Jpo>@A\xbdSTY\xefK@+\xb2\x1c\xd5X M@\x173_\x15\xf0\x9d\x16@Li\xeci\xb0W4@\xb0\xa7E\xed\x99cC@F\xd3\xa4t\x0c\xc0C@\x82\xe5zMd\x15G@\x8f\xe3\xa0\xd4\x9d\xf8D@\x0fwL\xd3\xc4 B@\xf8*x\xad\xe0zO@]\x82\xa4@I\xe3>@\x93?\x98T\xbb\x80B@\x93O\xef\x81\x00\x9b?@\x08\x8a\xb2\xa3\x9c:/@\xadt\xdf\x98]\xe3%@\x00g{S#/\x13@TLxgD\xcd1@pP\xab\x8e\x90\x1aT@\x92\x03c4\x9f6U@\x9b\xc9\t\xd1\x93\xbe9@\xd3#k\xf3\xc2v.@\x07\xb1\xae\x99\xcb\xae4@\x97\xd6}H\xb9\x999@\xafN\x82`\x99\xaa4@\x90\x007\xfa\xbcL4@a\x82c\xd6\x93V@@\x887f\xb1\xd3\xa6@@\x18\xc9\xd0L9\xd2N@\xb0\xf68\xf3\x97\xf4E@\xd4\xd9\xc6\xbc\x8b\x8c7@l\r\xa6\x16\xbaVJ@\'\xce3\xb5\x11\x08<@\x08\xceC\x9c\xe7\xeeG@\xcb\xb0\xfad\x90\x83@@,vv\n{[?@\x14\xf3\x8f%M\xd1K@\xbe\x8cvY;\x18K@Iz#\xc9\xa0\xb2B@\x12f\x03\x19\xc5\x8b.@S\xc6\xb5zq[)@\xed\xe0B(\xb0(3\xc0\x8e}\xce\xed\x00\xa1+\xc0{m\\?\x02\x9e3\xc0h\xf3f\x00\xc0\x87#\xc0\x83\x91\x9b\xb3\xfd1!\xc0\xd4\xad\x7f\x9bOi\x13\xc0\x84\x0b\x9bt\x92\xc9\x0e\xc0\x02\x16\xbf\x8c\xfa\x1b\x13\xc0\x8c\xa9\xda]=\xad)\xc0v\xaa"A\x10\xf0\x19\xc0\x01QIr\xdf\x8c*\xc0\xeb\xb3g\xe16\xc25\xc0\x9d\xf5\xa3\x83XS6\xc0\x08N\xa4\xfc$%<\xc0U\x1e\xf8\xda\xd5\xde9\xc0\x88\xa9\xc5\xb4\xa8\xf66\xc0&\r\x8b+\xfb&7\xc0\xfa.e\xe6j\xc3;\xc0;\xcf\xd0\xad\x8a\x1b"\xc0\x85\\=\xfa\x88\x012\xc0?&\xfe\x84\x99\xcb?\xc0\xd7=\xc2\x83\x1b\xd4>\xc0\x9b\x13\xd11DiL\xc0\xeb\x9f\xdeA\xed\xa8O\xc0\xd8\x19\xcb\xc9\xd9\xa3L\xc0\xb9o\xa3\xc8\xd3w\x11\xc0\x06Q\xf4V\x0b\xe7\x14\xc0\xf2$\xdd\xd2\xad\x9bT\xc0\xc6\x80P\xa8\xcf\xa2\x16\xc0\xado7\x8a\xf2z4\xc0\x0f\xd1\xabo\xb5`5\xc0\x940\xbe\x80.Z:\xc0a\xae\xd3\x84\x10\x0f=\xc0(\xce\xe0?\xf6\xf16\xc0\xfd\x8c$\xf4i\x019\xc0\x81\xa7\xe9]\xf2\x81C\xc0#\xc7\xdd\xf8\xb9\xccE\xc0\ruJ\xab*GF\xc0)\xc0\xf6=~5\x1a\xc0\x08\xa9e\xd3V\x81H\xc0\x9c\x95\x8d\xa5\x03\x16 \xc0\xfd\x01\x08\xaf\xf3\xa6\x0e\xc0\xe1b\x04\x8e\x8eZ\x17\xc0b\x12C\xfa\x80@\x10\xc0\xbb\x90s\xb4\xa2i+\xc0\x12\xd7\x92\xba\x92\x142\xc0\x8b\xed\xf1\xc7\xa6r7\xc0\x855\xf9\x10V\xae"\xc0\x0f.X\xe1\xcd\x10+\xc0SvX9b\x96%\xc0\xfb\xb8\xaf\x07oq<\xc0\xac\xba\x80\xec7k"\xc0\x17\x04\x13\xac\xb6\x93@\xc0\xb8\x97\x02 k\x89<\xc0\xf3\xe7rMF\x18(\xc0,TS\xe8\xb2\x90\x1a\xc0@\x9c&\x0f\x9b\xf6(\xc0\x1e\x94\xb8\x8d\xd8AC\xc0Kc[\x81\x19\x99F\xc0E\xda\xf6\xaa\x0fx\'\xc0\xa5(\x84\xd1d\xa9F\xc0\x9cU.\xa7\x9e\xeeC\xc0\x9c\xa8\xbc\x84\x7f\xbdI\xc0\xaa)\x8a\x07\\\xc1I\xc0\xba\xd6\xd6\xf1\xa4\xc50\xc0F\xacj\x92\xa9\xbbR\xc0\xadt[\xd98=Q\xc0\r \xef\xad[\x0cQ\xc0Z\xaa\xa3=~\x083\xc0\xab"{v\xac\x06 \xc0\x160\xfbf\xe2I>\xc0\xb9\xfc\x85\x9d\xab!@\xc0\\\xa2\xe0\x1a-sB\xc0\xaaFhY\xbf\xb8@\xc0\xabU\xa9\x03p\xfd@\xc0(\t#t\x88mP\xc0[\x8c]G\xbc\x14R\xc0;oo\'P\x177\xc0>\xcf\xf0\xf2\x9fW@\xc0\x93B"\xfe\xe0\xfa0\xc0\x7f\xa1\x16g\x91\x83:\xc0\x97F\x0f\xfc\xf6\x9b@\xc0\xe4tr\x89\t\tD\xc0\xd1\x88%C\xa4\xf1$\xc0\x1e9\xc0\xace\xd2A\xc0C|\xf8d\xde\xdeP\xc0y\r3\x14\x8a\x9b1\xc0\xbd\xa9$5Q{F\xc0v3\x15y\x94\x93C\xc0\x12\'A\'y\x9fD\xc0s\x8b8:\x80\x188\xc0\xb1\xd7\xe7\x92\xb6^J\xc0\xc7o\x83\xed\xcb\xdaH\xc0\xb8\x1eD\x14\xdf\xe2R\xc0\xeeF6\x7f\x15!T\xc0\x98H\x93\xb4?GS\xc0$a\x81\xee\xfc\xa9E\xc0&\xea\xd1\xcd\xdbRG\xc0=7D\x86\x9c\xb8A\xc0\xb7\x9f%Qw\x90Q\xc0\x95Y\x90\xc1:\xccP\xc0\x17\xd5s\x18\x1f\x01(\xc0k\xae]Y\xc1H-\xc0\xca\xc4\xb7F\xb0 O\xc0\xdb\xd7\xac\x14Z6M\xc0D\xc5\x95\xd7*-L\xc0\x15|\xa8\xcc\xe1\xf2.\xc0Nl\x10\xe3J\x96I\xc0\xb1\xf1\x93aB\xe5I\xc0\xb2l,\xbc\x81\xed+\xc0(\xc1\xa2\x17\xd5$7\xc0\x1b\x98T\xa6\xb9\xa73\xc0\xedbO\x1a\xd4"@\xc0\xa7-\x90<\xa0\xa4B\xc0\xb3\xed\x9dD\xa9\xe6\x10\xc0h\xe65~\x8c\x0c\r\xc0~\x93!\xf6\x93\xb44\xc0\xd4\xf3*\x17\x05\xfe,\xc0>+O\xd0D`;\xc0o0]I!TR\xc0{ybS\x0f6:\xc0\x10i\xd7p\xb2^@\xc0\x1d\x96->\xc6\x07-\xc0L\xc2\xe8\xca~\xd5\x19\xc0\x94}\xc2f\xc5\xcb0\xc0\xa9\x10\xe7\xa3\xce\x03E\xc0\x89\x02\xea\x99\x99\xb3B\xc0X\xb8\x15xv#O\xc0>\xbb9b[cK\xc0\xd1\xb2\xf7+\x95\xfbO\xc0\xd0]L\xd0\x19\x03C\xc0\xec\xa9J[\xdaB:\xc0\xb7\xa1Pe\xcb\x84$\xc03F\xc6\xd0Mb3\xc0\r\x17\xbd\t`\xc9G\xc02@\x94\xa4\xc1dJ\xc0\x14*^rj\x8dG\xc0T$W\xec{\'M\xc0\xafl\xc5t\x0e\x93K\xc0\xef\x8b\xe9\x8a\xbd\xdcN\xc0MI\x99#QoO\xc0Z\x99\xdcJ\xe8\xbfD\xc0\\\x95\xc5\xa2\x880M\xc0&\xcb(X};I\xc0\xc2\xa5\x14Il\x1bL\xc0@\xc9\xf8\x02\x882J\xc0"E\xe0"\xfa{R\xc0\xb5\xaf\x00\xbd-\x1bQ\xc0\xc8)\n\x00\xae\nG\xc0\xdb\xb8\xe6\xa9\x8a\x95F\xc0Q\x89%\x12\x1a\x933\xc0[\x81\xbf\xbf1\x13:\xc0\x8b\xa4*\x97>#4\xc0a%\xc2\xa7\xac\x8b8\xc0b}\x90\x1d\x86EO\xc0\xb2g,\x92\xd6\x0fT\xc0\x18\x9bW\xe0\x8a\xcbR\xc0TBmd\xa6\xfaS\xc0\x07\xf32=\x7f\xd3>\xc0\x01s\xd8\xfc\xc9:@\xc0\xb3\xfa\xf4u\xfeVR\xc0\'\x12n\xf7\x19\xda3\xc0\xcf4\xbeB\xca\x81.\xc0\xd68\xf0\xf8\xed\xe6/\xc0V\x02a|\xca\xf74\xc0K\xa9NN\xb9\xf5\x12\xc0\xb2\xb7?\x11\x1c=\x13\xc0\t4\xe9\xec(\x0e:\xc0_\xcb\x80(\x1e\xed?\xc0\xc4\x01\xfd\x97T\xba>\xc0\xcbI=K=+%\xc08\x8f\x15w)\x07!\xc0\xbf\x7f\xa4-\x85j\x12\xc0\x06`\xa3\xe4\xd5MC\xc0kY\xbe\xb3\xb3\xadB\xc0\'\x00i\xac@bE\xc0\x00\x8d\x80\x83\xd8\x9aD\xc0a8\xe6\x03\x12/-\xc0\xff\xea\xbbLu,U\xc0\xbb\xd7\xb2*v|D\xc0\x82\x1d\xdch\xc0\xb7P\xc0\x9b\xfb3,\x08qP\xc0\xe4\xff\xae\xd6\x97\x13\x15\xc0y\xef\xa6\xf8i\xc3\'\xc0\xed\xa2\xff$\xca\xd1\x14\xc0\x99:\t\x946\xe2#\xc0Zvv\xba\xfb\xb0P\xc0\x05e\xc1[\xe5\xd1"\xc0>\x9e(\xa5-.&\xc0\x97}r\x18{\x8d\x14\xc07Zi2+\xb8,\xc0KtX\xd4\x94BM\xc0\x81\r5;q4\x18\xc0\x88\x18\x8e\xbfu\x91+\xc0\r^\x07jJ\xd7J\xc07\xa7\xb9\x13f\xe4K\xc0\x90\x88\x00-WBN\xc0%,1\x96\xf7\x89H\xc0H\xea\r\xb6\xc1t"\xc0\xb5W\xbeK\xdf\x8b@\xc0\xbf\x05\xed\x1d{\x19<\xc0LW\x99w\x94\x02;\xc0\x8e\xb9\x1a#U#@\xc0vR\xd2\xed]\xe1\x18\xc09jX)l\x8aQ\xc0\xd5"\xd6\x9b\xaf\xed:\xc0\xb3E\xd4\x809\xe8>\xc0yn*\xc3K\x97@\xc0\x92\x19R\xaaM\xf6+\xc0\xb9o\x84\x03}\xa53\xc0\xa822\x1eo\xbc1\xc0=\xfd\xb3\xd0\x8d\xb4C\xc0\xf1\xc9\x81\xe5(\x81!\xc0j(\x10\xee\x03:\x15\xc0\xb9\\\x14\xe6\xb1?#\xc0\x08\x87=\xb56\xf83\xc0\x8a\x10\xdaZ6%+\xc0\xe6=\xa4\xc0EX.\xc0i\x8d\xd5$\x1c\xc0\x13\xc0G\x1b\x93\x1f\xfb\xe0L\xc0\x13\x91\xd6\xa4t:K\xc0\xa7\xf9h\x91p\xc0$\xc0\x18ET\xf0g\xb9@\xc0\xc1{\xda\xbdFaB\xc0\xf1\xf0&\x8f\xf8FN\xc0\xd3\xe1\xdfI\x98\xba8\xc0s\xda\xa7\xe1\xdbuH\xc0\xb3\x16\x9cR\xdb\xc8Q\xc0\xe6=a\x01P\x0fF\xc0\xc5\x02\x03\xe8\xdbpP\xc0%\x10*\xb9\xe4{-\xc0\xff>\xf5\xc1\x9fl%\xc0\xe6\x04z\xbd,\xe50\xc0\x900`x \xe4I\xc0V\x0b\xfflEHG\xc0\x8f}\xd1\xab\x87UI\xc0\xa3\xe4\x88\\$\x85O\xc0\xedP^\x90M\x8e7\xc0\xf8\x1c\x16\x1a\x11\x112\xc0\xb0\xc9\xda\xa1ZH;\xc0\xb5\x8b\xc4\xfc\x95\xfe7\xc0\x7f^\xbc&\x9c\x8bE\xc0w\xd9yS\xad\xc3.\xc01\x8c\xe2+\xa5\xdd!\xc0$\x8e\x86d\x7f[#\xc0c\xe3\xd4\x11\xa2L/\xc0[\xe9La\xb1cN\xc0O\x0e\xaf\x81@,B\xc0\x83\xa0-\xd2B\xfaC\xc0fc\x9b\xe6;\\E\xc0\x84S\x9a\xe6\x16\x873\xc0\x98\xd6\x925\x82\r\x12\xc0C_\xe5\x8f\xdc\xafG\xc0\xa3\xa3\x84k\xf1\x98L\xc0\xbeX\xc8\xde}\x11C\xc0Y\x89y\'V\xf1\r\xc0\x1doJe\x99\xc0F\xc0\xd2@Gt\xc3\xb9I\xc0C0\xacTOAF\xc0\xe2\xef\xea\xd2\xda\x85I\xc0S\xbd3\\\x18\xed\x12\xc0;W\x90\x8c(\xc9\x10\xc0R\x9d\xf9Y&\xc6=\xc0D\xdbo\xb5\xb5yC\xc0#\xc9I\x87\x0fhA\xc0\xce\x8c\xc8(a\xf5N\xc0]E+H\x823L\xc0i7d6\xba\xf5\x14\xc0\x93l\xbf\xff\xb3x;\xc0\x9e\xc3,\xb3\xf1~4\xc0\xfd\xbe\x06\xc6\x16\xbc<\xc0\xf1r\xf2\x06$\x8bA\xc04}?3\x86\x17C\xc0U\xfe\xa3\xb3u\x156\xc0\x1a\x84\x80|-\xfd0\xc0O\x0c6%\xb7\x905\xc0\x0b\'\xd6\xc0v$@\xc0r\x14\x7fc\x81y@\xc0\x81]\xa8\xa8\xdd\xaa8\xc0v(-,\xd1S5\xc0\x83\xe0/-\x07-9\xc0Aa/\x11l\xf6A\xc0\xf5\xa6\xb2\x1c{\x80>\xc0\xd6\x9b\x7f\xa6\xc1UA\xc0\x02\xe2lU\xe6\x0b<\xc0\xc0A\xcb;\x03\x9aH\xc0\x90~\xf5\nQ\tJ\xc0\xa5?\x05\xf2p\xd4F\xc0\x10\xd3\xfa=\xb3}H\xc0\x16\xacZ\xe7\xb9{L\xc0T\xe4\xc2\xde\xb7\xa8I\xc0\x8c\xba]\x82[\xb7J\xc0\xc8\xb8L/D\x02S\xc0\xa8\xfd4\t\xd7\xb4S\xc0\xa52\xf4\xa9a"R\xc0M[\xe8\xcdi\xa3@\xc0\xaa\xeet\xb9\xbdy@\xc0\xc1\xcb\x9cp\x95zB\xc0\xa2\xe19\x9by\x0e$\xc0\xe8\x86\xb6\xa3\xf0&D\xc0s\x03\xa1\x8d\x91\xa5@\xc0M\x133;\xff{\x14\xc0\xea\xa15W\'\xcf\x19\xc0\xf7\xba+\xdb\xe07R\xc0]QP\nE:G\xc0\xb1\xcb\nm\x9a\xd5H\xc05\xae\xd6\x8e\x1d\xdd&\xc0\xe8\r\xaev\x14\x0b%\xc0\t~\x0bn\x9a\xe7/\xc0\x0cv\xd7\x1d~\x1e<\xc0QG\xb1\xe0\xa0\xdc6\xc0b\xfc\x9b\x198Z;\xc0\xdd\xf1\xba]nZ5\xc0"\xcb\xd2\x01\x88\x1e#\xc0\xfe\xee\x9f4oH\x14\xc04g\xa7\xbc\xb1\xfe\x10\xc0\x89T\x0f^i\xc2K\xc0i\x96\xaa\xc4\xaefO\xc0\xda\xf8\xfe\x10\xfcdQ\xc0S/8\xd7Z\xb7R\xc0\\3`\xda\x16b-\xc0\x87\xc9Q\xa0\x0f\xf34\xc0\xb9<\xc1\xda\xdc\xb77\xc0\x07\xf5i7h\x0f3\xc0\'n\xa7@\xa6\xf30\xc0i\xc42\x8d\xd4=\x1a\xc0R\x87\xd3\xe8Lv\x11\xc0\xf1\x11C5\x19!6\xc0\x9e\x06\xf8\x89\xdf71\xc0\x03\x17\xabs\x9f\x96Q\xc0\xbbN5\x05\xc9\xa0P\xc0h^\x92\x9d\x993T\xc0J\x0faY\xc6\x1bU\xc0\x08\xf8\xdb\x9d\xb3Y&\xc0\xe3\x96V\xceM\xfc)\xc0\x18\xda\xea\x0f\xa6\xa7\x15\xc0\xfa\\\xc9,C\x98-\xc0u4\x8d\n\xb5\xdd#\xc0\x98X\x94@\xbcz\'\xc0\xd6\xd9\xbd\xe1\x9b\x08@\xc0k]\xf3\xbem\xd5@\xc0z\xb1:}\xa1\x03:\xc0w\x0f\xac\xcd\xb1\x96=\xc0\xb4so\xc0\xcb~*\xc0\'v\\n\xb0\xb7"\xc0,j~rb)\x1b\xc0\xa6\xa0\x9a\xdf\xd4\xcd@\xc0Zu/\x04\x824C\xc0\x06\xf5\xf1/\xda\xeeB\xc0\xe5\x8e\xfa\'f\xeeK\xc0\xd9\xdcnl\xfe\x80M\xc0\xe2\xccZ\x8ax8E\xc0yd\xc1\xe6n\xea:\xc0\xfe\x9c\xcf\x97\x1c\x84P\xc0\xa9\xed\xd2\xae\xa9CH\xc0\x14\xe1}\x9b\xbc\xd4E\xc0\x8c\x84\x0c|\x11\xb8E\xc0J\xf0q\x1b\xe5\xbfN\xc0*mf[N\\P\xc0g\x0f\x9f\xf8\x16\xb9N\xc0\xea\xb7\x078\xaf\xfdJ\xc0\x10\xea?t\xf6pC\xc0\xa77\xa2B\xc6\xc2:\xc0I\xb1\\\xfbc\x0b6\xc0\x18\xd5>\xb9\xac\xd24\xc0\x10i:,\x87CN\xc0\xd1\xe1JL2\xb0P\xc0#\xda\x84\xcby\xebA\xc0\x97\xd5\xe3\xc0RC@\xc0%\x82\xcbE6\xcdB\xc0>5b3w\xab0\xc0\x86G.\xb6\xaf2F\xc0\xea\xe0\xdf\xca@1I\xc0\xd8\x87!\x82G/G\xc03dJ\xeb\x89\xd4:\xc0\xb9\xe6\xe1\xe2\nOD\xc0\r>::\x89{\x15\xc0\x04E\xd5\xdb\xcd\x0c/\xc0\xb9\x14~\xb4\x11\xddI\xc0[\x93\x844\xaeRL\xc0>\xc6\x83h3\xd8!\xc0\x96E\r\xc2&@(\xc0\x7f\xa9\xd74@)\x10\xc0Z\x0f\xe8e\xdeW8\xc0Ob\x08\xb1tIK\xc0\x87`:$\xc7\x15:\xc0\xc7\x91\xcd\x0c\xcc\xa79\xc0W\x7f\xf3\x1e;\x904\xc0*\x93\xa0\x0e\xac\x16Q\xc0\xc0\xbc\x981\xdf\x8a/\xc0\xa6#\xbe%\x8f\xedN\xc0\xe8MD~! E\xc0\x9e\x953\x81\xf7/\x15\xc0\x10]\xf20\xc1\x1d<\xc0-\\if\x07\x0f6\xc0H\xcaR\xdbz\xb96\xc0\x06\x8eIr\xa9\xa1(\xc0\xb1it\xb3U2M\xc0\xb3z\x99&|\x80?\xc0\xc4\xea\xf3\xa7\x16\xc2O\xc0~c\xe9\x1d\xeb\x14B\xc0 \xb1\x16\xb3_q?\xc0*np*q%\x12\xc0\x05\xc0\xd0O\xdb\xec5\xc0u\xb9\x9f\x19\xdc\xd2\x13\xc0\xad\xad\xadS\x93p\x17\xc0\xf6\x8dut\x8a\xb1\x13\xc0\xda\xbb;\x84\x96\xe31\xc0\x12\x03\xd7\xb9e\xed1\xc0\x8b\xa5\x08\x86\xbc\xac"\xc0c\xda\xad\xd3\xab\x86C\xc0\xd8\xfb\x99[t\xcd!\xc0\x968\x96\x94r;D\xc0\x04j\xbf\x9b|\x0fH\xc0\xccY\tb\x12\x95F\xc0\xa2\x1bA\x1a\x7f\x064\xc0\xc6\xe8#J\xaf5&\xc0\xbe\x14\x9b\xaf\xe2\xea0\xc0\xff\xa5\xa9\x87,JC@)\xcd\x03;\x88\x07G@b~n"\xe8rM@\x11&!\xe1\xc3\x11O@\xe9q\xea\xf7\xa6\xeeJ@T\x8fi\n8\xe0I@\xed\x80[\xebk3$@0\xd5\xed\xd7\x91.\x12@Uau\xeb\xe6y\x19@</6\xcdSp?@\xfd\xac\x84^:\xe4@@\xe3]_\x18Ml6@\xbf\xce\x07\x0b\xca\x18;@I\x001\x01\x08\x8e3@^D\xaa\x8ah!;@\x92\x91\x92\xa3\x8f\xad\x1a@=\xab\xdc\x8ckSE@/\x17 ~\x03\x98C@J\x85\x04r\xdanF@\x90\xb7\xfc\xc4s\x1fH@7\xb3\xc5\x07,4F@\xc4\xcdf]\xfeWE@\xa4\xd1z\x99\xe0\xc0B@\xf2+\xfb>\x11cI@\x9aTJ\xab\xa6\xe20@\x7f\xd1\xb6\x8c\x03\xe4*@(y\x12\xe1\x17\x10;@\xa1U\xcaF9\xb3N@s\x91\rda\xf3M@\xb2|\x96m\xa8lP@\xad1\xdb\r\x8a\x99O@ +\x19#\x86\x04\x15@/\xedJ\x96)\xc8\x16@5\xa1E\xfe\xd2\xad0@h\xda\xa1\x12A{\x13@\xba\xec\x8c\x0fM\x10%@d\xe3\xa1P\x91h;@\x11\x1e\x18_\x03\xab4@X\xf3\x83\x19\x90A6@\x93M\xe8\xc8A(0@\xa3\xc7A\x86\xb0\x1bB@\xb6v#\x1c\x98\\B@ \xea\xf1\x0c\xfb\\D@j\xee*\xc5\x86\x1a@@\xd3ef\tl\xc4-@N\x12\x85\x98h\x875@c0\xa4.{j @p\xc3\x93\xb2f\xf9P@\xca\xbbR\xc4l\xf1+@\x84\xf4\xb4\xb9\x13\x82\x17@\xd3F\xee3\x95\x80"@\x9e\xab\x11\x1c\x1840@\x1d4\xdaC\xae\r+@\xb6\xe5\x0b\x06av\x10@\xe3\xa3\xa3\xae\xedb(@98\x9e9L\x00\x14@"At\xcaz\xb0"@<B\x86R\n\x11%@\x8f\x98u\x0b\xb7\'\x12@IY\xae4\xe4f6@\x85\xad[\xb6\xb8{6@\x84n\xa9{+\xcb9@\x84@P\xa3\x06nQ@E\x03\xc6\xb2\xa9\xe4R@*m\x87\xcbn\xddQ@}`\xa2\xceJJL@\xf1A\x91r%\xfdJ@\xca{)Na\x1fL@7"\x92\x0e1\x14G@D/MaN\xd6C@\xe6g\xdb?*\xeaA@A\xc2CG\xf3\x83C@\x91\xfa\xfc\x94\x98\x8dQ@\x951P\x84R\x90R@,\x83\xf4C\xf1\n=@A\xee\xbf\xafZN>@R\xa9\xfc>\x87d!@\xd7\xbf#\xdaxw)@\xc9W\xcb.b\xf28@\x1a\x07\xab>>\xef2@\xddZ\xc1\x1f2\xb34@\x02\xeazb6\xac$@-8A\x97\xf4\xed/@H\x8bXR\x1c\xc9:@5\x82\xfezdF@@\xe3\xde\x10\x15\xa0}>@\xda\xa7o\\\x01\xccA@\x0f\x86\xd0L\xc1^A@\xb5:\xd1\xce\x8c\xac6@?\x7f\x80\x81\xc6 4@S\x05&\xcc\x82*\x13@\x1f\xf3\xd80\xbf\xbd\x0e@\xc3\xe0\xd6\x9a\xd7\xee5@;\xbd>\x0b\xb9>>@\xb3\xbf\x13_;\xee9@\xa7Rk\xdbI\tD@nQ\x96_\xefAC@6z\xe9\\1\x96J@9\n\x99\x8d\x98\xc9:@\xa6WY$r\xb1N@\xaf\xf0\x8d\xb7\xab*T@3\xecS[\xbf`S@r4C\xbb\xd5\x0b9@\x82\xd1\xca\xd7\xf3\xd9T@\xf3\xe9\xcb\x7f\xf7\xc4I@\xe9\'n!\xe8NI@\xb7,fG\x84\x08<@\x98\t\x98\x18\x02T\x13@\xe97\x17\xa9\xbbk\x10@\x19\xa6\x02\x92)\xee!@\xc5]\x02h\x156L@\x86\xb2\xf5\xfbIy.@\x84\x81\x84\x00\xc4\xdc%@\x7f\xa3\x1f[\x1c\xb43@s\xe7\xafB\xde\xd2#@\x84\x0f7\xb5\xa011@\xb8\x82\x02$\t^L@\x13{\xe3\xe2x\xf0I@\xb2ZG\x8a\xac\x9fG@\x07Uzt\xde;G@\xf46\xb6d\x039@@\x07C\xf7-O\x0fA@R\\Eb\xc0<\x10@\x143\x89\x96\xe4-#@\xbaYK\xd8:g(@\x9b\x8b\xe5\xaa\x8d\xc7G@\x91o8\xacf\xbc;@\xa9$8\x1a1\'F@[\xc5\xe4\x94\x86\xfbC@\x97D\xba/j\xbc\x0f@{Fv\xc1<YP@b\x90\x02\x04\xaf\x8eC@\xef1\x19}{\xe3F@jL\x16\xe2q\xca@@e\xb3z\xd5\x17\x98@@W\xffF)\x9eN@@7\x01+\xe9\x86\x03$\xc0\xceSR\xd1\xa2\xee\x18\xc0@\x10\xfb[\x00|\x12\xc0\x1at\x93\xc4\xa82<\xc0\x04\xcf\xbdv\xfe>=\xc0\xf2ni\x8ansA\xc0\xb0g|\x06iuD\xc0\xea\xed\xfd\xc6X\x1cC\xc0UE\xa0\xd8\xc4\x19F\xc0\xd0\x19(/F\x0fS\xc0\x1a\x04\xb3X\x801R\xc0\x85 6\x9f\xf9\xffQ\xc0\n\x8f\x8d\\\x91\x17A\xc0\xa4XM\xbf}[\x1b\xc0"\x945i\xa4\x9f\x14\xc0=[u\xa26-\x16\xc0\xc5\xcc$\xc4?\xf8\x14\xc0K&\x86)m\xda\x19\xc0TPPZ\x01oH\xc0\xd9\x0fJ\'CbJ\xc0\x0f\xdd&\xe9W\xb8J\xc0s\xb1\xad\xd9hH3\xc0\x84<\x95\xfc\xcfH+\xc0@W\x92\x04\x0e\xa6(\xc0]R\xd2\x0eW{-\xc0\xac\xec\x98\xf1\x9f\x8b5\xc0\xdf!\x88h&\xd7\x19\xc0\xf5gA\x05\xd1\xcf/\xc0z\xba\x134\n\xc04\xc0VT!\xa5P:1\xc0_c\xfe\xc8\x11!5\xc0\xe3\t\n\xc1\xb0`Q\xc0\xfd\x10\x1cO\xa3\x9dR\xc0\x95\x93S"\x9c\x9a\x11\xc0\x1e\xe9\x16\xfb\xc6o#\xc0d\x0e\xd0\x04\xae[)\xc0\xdc\xeb\x83\x9d\x8d\x03,\xc0$\xe14e\x94\xb2B\xc0\x92\xd2\r\xf7\x8f\x99D\xc0R.\xfcZ\xb9P(\xc0k\x8eC\xe2\xa1\xedH\xc0E\xfe\xc6\xb0\xb3?F\xc0i-^S(\xa7E\xc0\x848\xa0\x06\x9e~Q\xc0\xdf\xdcq_\x1b\xc5P\xc0\xc6)\xd3\x9f\x94\xb4A\xc0\xb2N+\xb5\xb8\xfb<\xc0\xa0\xba\xf9\xe0+\xe4=\xc0\xa5\x15+4e\'1\xc0\xc9\xe7F\t~f=\xc0\'!b\xdbGD=\xc0\xa5t-\xb3\xfc\x97A\xc0Bi1\xfb\xd3z%\xc0m\x06Icq\x85@\xc0\x81\xf4oZc\x85F\xc0\xdc\x95s\x8a\xce\x86C\xc0~\xa4(\x8c\'\xa9C\xc0\\`\xcd\xc6\x99SE\xc0a\xa0a\xdb\x1e\xd9@\xc0\xa3N\xeds\xa8@C\xc0\x0e%76%\r@\xc0\xf4l \x85\xd4\x10T\xc0\xaa\xea\xe1\xd3."U\xc0\xba\x1bq\xb0+\xccS\xc0\xb2i11fAD\xc0\xf65\xb0\xf9\xa9\x14G\xc0\xff\xbe\x130/y=\xc0\x1a`S\xa4A\xd3?\xc0\xe3\x7f\xd6k1\xb1A\xc0\x9a\xfd\x05\xeb\xea\xa7B\xc0\xf9%\x9e\xc9~\x98\x14\xc0\'\x9d\x1e\xa0;\xbf\x13\xc0~\x05kUf\\L\xc0\xc4\x84\xb5\xd7^bO\xc0\x95\x11\xe6\xc6\xa9xP\xc0\x18\xb7:\xff\xea\xa0F\xc0\xdf.`]\xf0\xb2I\xc0\xb7&x2\xff,G\xc0\x04^(\x05\xac<I\xc0\xf0\xa2JNppG\xc08uKD\xd1\x8eG\xc0Z\x14\xe4\xa1\xbd\xde\x08\xc0\xa3u\xee\xbb\x98\x0f8\xc0\x1dA:_\xd7\x9dI\xc0\x88c,\xde\xb5\xb9L\xc00Q\xdf\x8dm\xb4M\xc0A\xa7U}N5K\xc09\x9e\xa1\x84\xa2\x17J\xc0\x88\x17\xea\xe2\xf1]L\xc0\x12\xf9,\x06o\x91P\xc0^,\xf4\x1e\xc9\x9cL\xc0\x9a#\xa7\xf5\xeaP4\xc0V\x13\xe7\xc8*I/\xc0\xb6\x01\xb7m\xfe\xb3M\xc0\x03z\x1c\\\x16\x9cO\xc0`\xe2$\xdbvUL\xc0\x8b_\x84\xa6\x12&\x10\xc0\xdbv\xaa)\xc7^#\xc0\xe8\xfb\xe8\x15\xb6aE\xc0\xcc\x0e\xce\x16\x15\x97\x15\xc0\xaauH`\x03\x14Q\xc0\xb0\xd3:\x06]\x0eO\xc0|\x8dz\xac\xb4\xb53\xc0\x8b%\xb2\xe2n\x17(\xc0\xddB\x0fp\xff\xb58\xc0\x06\x950\xdcd\x82:\xc0\xbbM\xb0\xe8*\x17$\xc0\xb7\x11\xac\xf5\xe3W#\xc0\x9d_\x88\xcb\x14,\x10\xc0:c\xb9\xf0\x82\x9f.\xc0\xfd}\x92\x87\xf3\x8e8\xc0\xbd\x990m\r4J\xc0\x90\x19_@\x15\xcc.\xc0Pc\xd2\x98\x1aQ5\xc0)\xb1\xa5\xc2\\|:\xc0_\x8aY\x14\x97n:\xc0\xa6`\xa2BL+!\xc0\xee!\xa9\xce\xcc\x1e\r\xc0\xfb\xd0\xd9\xd5\xeb60\xc0\xb9\x8c67\xb9j&\xc0\x1c\x0f\xf3\xc1\xdd\xb2;\xc0\xf1\xc8\xee\xeb\xe7\x99H\xc0\x9bK\x86_O"D\xc0b\x9bO\xc5\xce\xdbR\xc0\xeb\x17\x05\xc2\xba\xcb4\xc0\x1cdb\x9f\x07\x0b1\xc0\x08\xc9pH\xb3\xb3,\xc0\xe3\x19\xa8K\xaa\x8d7\xc0\xa2ez\xb5_\n4\xc0t\xec\'\x9a\xd7\xd97\xc0p#\xd5\x95\xa7L7\xc0\x1e@\xea\x90\xf2\x7f:\xc0 j\xf7\x99\x89\xa42\xc0\x10F\x8bo+@@\xc0<\xe7\xbc\xc7\xac\xaa%\xc0\xa2\xd7"G\xe5wH\xc0\xc5\xf4\x94\xbbO\xcdA\xc0\xef\xbb\xc9\xa3/\x03:\xc0\x9aR\xc9u\xa6\x04P\xc0\x9c2\xe16\xf6\x8a@\xc0'
+p34
+tp35
+bsS'numberofedges'
+p36
+I0
+sS'edges'
+p37
+Fnan
+sS'long'
+p38
+g9
+(g10
+(I0
+tp39
+g12
+tp40
+Rp41
+(I1
+(I1286
+tp42
+g31
+I00
+S'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x85\xda\x00\x00\x00\x18@+\x03\r\x01\x00\x00(@\xa3A\xd1\x00\x00\x002@\xb9\xe4%\x01\x00\x008@qF\\\x01\x00\x00>@\xf3\t\xd8\x00\x00\x00B@\x7f\xca\x07\x01\x00\x00E@\xba\x1f\x10\x01\x00\x00H@:\xe3\xd9\x00\x00\x00K@J\xbb\xc0\x00\x00\x00N@\x1d\xbeQ\x00\x00\x80P@ \xfd=\x00\x00\x00R@\x07\x94*\x00\x00\x80S@\x17G\x14\x00\x00\x00U@^\xa8\r\x00\x00\x00X@f\xa0!\x00\x00\x80Y@iP4\x00\x00\x00[@.yI\x00\x00\x80\\@\x9c\x11W\x00\x00\x00^@\xfa\x04l\x00\x00\x80_@\xa0\xf2A\x00\x00\x80`@\xef\x07D\x00\x00@a@\xcfx6\x00\x00\x00b@\xd3.0\x00\x00\xc0b@\x0e\xdf(\x00\x00\x80c@\x90\xfe\x1e\x00\x00@d@\x04J\x15\x00\x00\x00e@\x8c#\n\x00\x00\xc0e@\xd2+\xf9\xff\xff\xbfe\xc0\xcd/\xef\xff\xff\xffd\xc0\xcc\xd7\xe5\xff\xff?d\xc0iC\xdb\xff\xff\x7fc\xc02w\xd4\xff\xff\xbfb\xc0\x83\xfd\xc9\xff\xff\xffa\xc0`\r\xbe\xff\xff?a\xc0\x11\xf8\xbb\xff\xff\x7f`\xc0d\x0e\x93\xff\xff\x7f_\xc0\\\xa2\x9f\xff\xff\xff]\xc0\xe4A\xae\xff\xff\x7f\\\xc0\xe0\x02\xc2\xff\xff\xffZ\xc0\xfak\xd5\xff\xff\x7fY\xc0\xe9\xb8\xeb\xff\xff\xffW\xc0\xa3W\xf2\xff\xff\xffT\xc0\x9b_\xde\xff\xff\x7fS\xc0\x97\xaf\xcb\xff\xff\xffQ\xc0\xd2\x86\xb6\xff\xff\x7fP\xc0\xc8\xdcQ\xff\xff\xffM\xc0\r\xf6\'\xff\xff\xffJ\xc0\x815\xf8\xfe\xff\xffG\xc0F\xe0\xef\xfe\xff\xffD\xc0\xc6\x1c&\xff\xff\xffA\xc0m\x89~\xfe\xff\xff=\xc0\x8e\x07\xb9\xfe\xff\xff7\xc0\x7f\x0b\x08\xff\xff\xff1\xc0\xcc_\xab\xfe\xff\xff\'\xc0\x8b\x8e\xbb\xfe\xff\xff\x17\xc0\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V\xc0\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x80V@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x80f@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x003\xd0*c\x18\xf6d@]\xa6M\xae\xeb\x03e@)\xe0\xf8\xb1:;d@\x80\xfd:\x05;\x12d@\xf0\x8f\xd8S\xf8\xfdd@\xc4\xf2X\xc5{\xc0e@!\x06\x9b\xab\xcb\x96e@\x95`S\xdf\xd8=c@\xf5\x00d\xac\xb3Bb@\x81!\x838a\xbdb@\x10%\x9dM\x08\xf4W@5\xaaE\x93J\xb9W@\xbe\x18cb\x93\xffX@\xd5\xe5\xac\xcb3\xc4e@\xd5<\\K\x8c\xe8e@\t~\xf5\xb60\xa8Y@\xd3\xf0\x0c\x15a+X@K\xf7\xf7h2\x08X@\x17\x0ez\xdbN\x9bc@\xdbhO\x08\xbb\x0bc@x\x02\x01\x94w5c@\x98\n\nPN.c@\xfb;\x81\xbf\xe92c@\xe9;:)\xe1\xf9c@d\xc7^&\x84\x92W@\xb8t\x16V\x9cAe@we\x98\xbauFe@b\'\x9c6+Pe@\xe5\x89\x1aZ\xbc\xf4e@\x82\xd8\x86J\x9b\xe0b@\xdf\x85\xe2\xdc\xb58c@\xe61+\xd1\xcd.d@\x87%\xebW\x95\xacc@I\xce\xe4$F\xd4`@\x12\x84\x0e\xf1\x86q`@\xd1\x0e~:\xe7\xf7_@\xd0\xb0\xc1\x10\x90x_@7\xba\xa8\xcf\xb4\xb0d@\x8a.\x14\xd1S|c@^U\x97{\xbe\xea_@v\xb8\x0f\xc5/va@\x11\xfb\xee?\rx`@\x01\xd3H\xef\xb0\x8aa@Q7\x18\xf17\x96`@\xddbH\xf8mZ\\@@d\xaa\x8aDTY@\xdbL\xc3\xfd\xac/[@\xfc\xder\xa3\xe0\x1e\\@8P\xd6w\xec\xc8[@#\xf2\x13\xb6\x88\xe3]@\x19\xfa\xf8\xf4\x1aN^@R5\x10\x15J\xbfa@\x7fNE\xb3a[b@o\xc2\xe0\x99`\xa4a@\xdfJ\x9e\xffUC_@\xedd\x0b\xda)\x81`@(\xdd\x1d\x85\x14J`@\x08\xa7\xf7\x8d\xb4\x08a@|*\x13\x89\xe4\xadb@\xcb\xe5a\xda\xea\xa0`@\x1cR\xb2\xde\x18Ba@\xa5T\xb6\xefx\x0fa@X6\xbb\xce\x01\xbe^@\x95\xa6\x98e@4`@\xf7\xe1,\x99\xf8\x01]@N\xbe%\xd9\x1a\x1f`@`b+%\xc7\xadd@\xcc\x0et_\x9fWe@%\xfe\xf32\xe5t_@\x99\x82((\xcdTa@\'\xaf&\xaa\x88\xd7`@?\xe7[\x14)\xe4a@En\xacB\x9e\x84Y@\xed\x8b\xdf\xc6\x16S\\@\x03\xf3\xc8\x12\xc6\x95Z@\x7f\xbd2\x8b\x83\x7fY@"\xf6\x972\tvb@K_o\xcb\x95\xbaa@\xca\x96\xdbj\xd7FY@Tv\x8b=\xca\xf1c@\xb1\xad\x08\xe4\x0f\x99b@r\xf5Si=\x1c_@\xb7\xaf\xb4\xd9\xaeN\\@\r\xd4\xb2\x13\x8e\x05_@\x82\xf2\xc8x\n\x8aZ@\xcb\xd4A\xe3\xfe\x81X@\xdc\xa4\x9c\x0f\xa7\nd@\xdcw\xc5\xb3\x9e\xa0X@\x95\x1e\xc0o=\x81X@s\xe3\xf4|\r\xc6Z@\xe4\xaf\xc9\xf2\x1a\\[@c\xac\x1c[\xe4\xacZ@\x12\xad\xbe\x80W6[@9\x8f\xf1\x0cN;c@\xe9"\xee\xba((a@\xab\xf5d`\xcd\x98b@\xc4}\xa5j\xa7\xff[@D\n\r\xee\x07\x00\\@}\x9e{\xfb?\x98]@\xfd:\x16HJ\xf5Y@M\xda\x06wX\xb9X@\xbfZo\x19\xa0\xefX@_\x84\xb1\x986\x13^@\xab#m`\xad\xd1d@\\7:jt\xdf\\@\xa9j\xa3\xda\x8c\xf8Y@\x8b}\xbcr\x82H[@\xbb2\xbe\x86\xb7\xfea@\x07\x12\xcc\xf2\x9f\xb2e@\xe6&\x98\x8fb\xd3\\@s\xd1\xf6D\xbd\x9c^@u\x8c\xfe\xd9\x97\xf1c@\xd8d;\xef\x90\x84d@S\x97\xfe\tS\xf0b@\x04B!m\xa6\xe8c@\x9a\xd0,\xa5\xce0e@\x7f\x0fy\x94q9a@\xca\xbb\\\x92\xfc\x1bZ@,XK5U\xc8`@t\xabr\xa7\x1c\x05`@"\x9d\xcdI+\xb6\\@\xc5\\\xc1\x91\xf8\xb1\\@*7\xa3+\xbdSe@\x18\xc9(\xc0\x00Wb@\x01\x9e\xe4\xe7\xfa\xd7d@\xa7\r?h\x08\xd8e@\x87K\xab\x0c\x06:]@\x87\x85\x83\xd6\xe7\x8fc@n\xe7\x9c\xd5T\xec]@\x80L/\x18\x128_@\xd6b\xd1\xef{\x8fd@t\x04\xf6\x05($d@\x12\xc4\x0c;Q\xc4a@\xf6\x05\x14C\x97\xb6\\@k\xb09\xc7ce^@k\xe1\x96\xd5;Lb@\xf7\x95\x9b\x9c,.a@\x0c\xde.\xe3\'\x8bb@q\xc3:jF\xf3e\xc0\xdcr\xab\x04\x1f\xa9e\xc0\x94\x8d\xc2Y\xf3\\e\xc0hd ~\x1d\xc3e\xc0\x1b\xc5L:"M`\xc0w\xb8\xf2d:\x07a\xc0\x9e\x16r\xd3\x89\xc7`\xc0\x1da\xe9\xd4\x13\xc7`\xc0v\xe3q\x9an\xe2W\xc0\xf9h\xdd\xfe3\xd3X\xc0\xd3\x86\xcb\xe5\xbf\\Y\xc0\x84\x98\xdfnb\xc7]\xc0\x0f\xeaKT\x02H_\xc0,\xb2H\x19\xaei^\xc04[WN\xad\xc1e\xc0\xe2\xfd\x16T\xf0\xd2e\xc0\xc3=\x9a\x1c\xd0\x16e\xc0\xbc\xb1V\x90\x0fmZ\xc0w](g>\xb9a\xc0{\xd8\xe1^\xd1\xfb`\xc0\xbaX\x85b}\x0fa\xc05b\x1a\xd5\xe4Aa\xc0-y!\xcdi\x83c\xc0/\xe4W\xcc\x03\x81c\xc0\x86\xd1\xde\xcd\xee\xb1b\xc0:H\xa5-\xcc\x17_\xc0,-\xf9\x0e,i]\xc0\xcd6&\x13\xe7Db\xc0&\x90L{A\xfeb\xc0\x1c\x01\x8f\xb2/\xa2b\xc0\x08\x92\x01\xd0mGb\xc0\xc7\x81&\xb5n\tc\xc0/(M\r\xcd\x82[\xc0V\xdd\x1b=\xec\xddY\xc0P;\xf2So\xe7X\xc0\x9fd\xa4\xed\xe7\xcca\xc0\xbb\xf2\x90\xf8\xc3qb\xc0 \x96\xab\x90\x83ya\xc0\xce\xb7\x06\x7f\xefFb\xc0q\xa3\rhEO`\xc0i\xbd\xa9\x87q\xb1[\xc0.O\xf2(\xe3%Z\xc0\xe3>\xd4\xb9v\xe6e\xc0\xd80\x12SG\x8de\xc0\xb7(\xff\x97\x8f\x13e\xc0\x0ea\xe2Dp\xb7d\xc0\xdbk\x9d\x08o\x7fX\xc0\xa5\x87Z\x08\x94\xf1W\xc0\xed\xf1\x1c\xbd\xf2\xa4_\xc0\x8b\x06\xcb\xb9\xce\x00_\xc0\xd7\xfe\xc6z\xb4\x86`\xc0D\xef\xff\xa3D\xddc\xc0\xf2\xba\n9?#d\xc0>\xc1\x9c\x14^\xee_\xc0\x81\x93\x0c\xd7\x01\xc1b\xc0P\xfb\xb5\xf4\x95Vc\xc0T`$\x1bV,^\xc0Y\xa6I\x82*^`\xc0\xe0\x05rLL\xb8`\xc0\x84\xf9l\xef\xff\x9dW\xc0\x87\xa9\x9fW\x96\x82W\xc0X\\\xb3 f\xae^\xc0\'\xba\xe4_\xff$\\\xc0\x8e\x01\x95\xb9\x99\xc0Y\xc0\xb8U;\xa9\xa0"]\xc0\xd3\x8e\x8e\x1c\x0f=Z\xc0^\t6\xb6\xe6Ia\xc0\x1bj\\\xdd{W`\xc0\xfa\x0c\xceR\xf4^`\xc0\xc0x\xbf\xc7U\x9f`\xc0\xe1\xd4V\x14\xd8)b\xc0cDg\xec\x87\r`\xc0\xd4\x8bu\xf2\x98\x1f_\xc0<dq\xf8F4_\xc0\xee\x14Yp\x03G[\xc0\xc3\x8buNPRY\xc0W\xde\x05)\xaa_Z\xc0l:&\xa5\x91"]\xc0\xa2\xb6\xd4_\xe7\xe4d\xc0\xb2\xf9\xf3\xf3s\xc5[\xc0\xfcD\xec\xe5\x18\x0eY\xc05e\x8f\xe5\xf2\xa5\\\xc0\x0fC\xa13\xfcFd\xc0\xa3\xd7O\x8d\x97\xfdd\xc0\xca\xd9\xbd\xe4\x9enb\xc0x\xc7\x06\x85}\xd1b\xc0\x19\x01\xc0h\xbd&b\xc0\xc9\xa1\x1f\x100yc\xc0\x13S\xb9\xf4Tcc\xc0\x87]\xe2\x86\xaf\xead\xc0\xd5\xf7\xb1!\x05\xa6X\xc0\x9aX\xdd\xe7\x90%X\xc0\xe0{2\xb0\x8amZ\xc0\xba\x83\xf8:\x88zd\xc0\xd7\x91\xdf\xd2\x9c?Y\xc0\x8a\xbf\xdf\xf7\xd9\xb8[\xc0\x83#\xf6\xc7\x7f\x9fe\xc0\x18\xf2\x05`\x9d\x1f[\xc0\r\xa5T\x8d\xfaXd\xc0\xde8\x8c\xd0\x03\xf2c\xc0Z\xcd\x9c\x84\x8aTa\xc0y\x9b3\xc6\xeaUd\xc0\xf9\'\x10\x8f\r\xf5Y\xc04\xbbU]\x84\xfdW\xc0&\xf6\xea\xf2\xfb\xbaW\xc0e\xdc\xd7\xa2\xa6\x14]\xc0\x15\x81\xbbw6\xca\\\xc0 \n\xdc\x89\xfd\xb8Z\xc0\x0e\x14\xbf\xc65yd\xc0\xe5\x89\x8b*\xfa\x9bc\xc0\xb0\xb0kh\x14\xcf[\xc0p\x1f\xa9\x8d\x10u[\xc0\x90\x18\x89\x81b\x83\\\xc0\xa9r\x94\xc5;\xa6b\xc0T\xb1\xb9\x93\x1d{a\xc0\xb5w\xb2\xba\xcfa`\xc0\xc2\xff\x0cz\xfb\x04b\xc0Ud[\x81\x11\x0fa\xc0\x0c\x9e=e\xed\x16d\xc0*\x0b+/\x1c\x1ec\xc0\x8c\r\x88\x96\xfa\x96c\xc0/\xc5\xdd\x9f\xcc\xcf_\xc0S\xea\xaa4\x02\xa5a\xc0#\x14a$\xcc\xca\\\xc0 \xb1_J}\x82]\xc0)\xadf\xcbG\xda]\xc0\x8e\x05\xd1\xa0\xb9\xc5]\xc0\xd6\xf0,\x07\xd5\xaa[\xc0%\x02\xacX^qd\xc0V\x1a\xe0;%\x9ed\xc0\xef\x05\xee\xdf\xbd\xb3c\xc0\xa5\xff\xce\xe1\xd7pd\xc0\xfb\x03*\xe5\xaf:d\xc0f\xd5\xc5\xbc\xc5\xb2a\xc0\xd0Z\xcdT\x8c\x8ea\xc0\xba\x8d\xef\xf8@\x88e\xc0\xb6T\xf9\xd4\x8a\xf8]\xc0\x87\xf67R2\x80e\xc0\xd3\x7f\x97\xe0l\xb3b\xc0"\x18\xc2n^\x06O@\xcfH%\xc1=vP@\x1b\xde\xf1\xf4YJS@\xbc\x93\xadO\xdb=C@\xae\x9a\xb0>\x9aBG@\xdd\xd8\x8e\x9ako&@H\xe2\xcb%(\xc8.@\x11\xba\x15\xbe\xbd\xa0#@c\xb7)\xc7\t.-@\'\xaf\t\x83eT.@Z:\x84Y1hS@8\xe6\xac\xe9\xc9\xe6?@\xadW9\x8b#\x89A@hfuJ8\x1f=@\xe9_\xb1"\x89\xeeT@+\xe4S\xd0<\xc90@\x1f&\x0f\x1e=K(@\xbfL\xbb\xeb\xb0\xbaP@\xc1M\x9aG\xee\xf1P@#\x12 t\xd0\xfaN@\x9a\x8b\x01\xe1\x17\x1cI@L\x8f\xb7\xa6\xc4+C@\xf382\xf8\xea\xc3C@w\x05\xaf\x96\x96\xa4=@]\x02\x0f\x10\'\x07;@\xdf[\x9d\xec\x91E7@\xd4U\xfb\x8e\xb5nR@\x9eG\xbe\xb1\xd7sS@$\xcefJ?\xecS@\x90\xf0\x1c-\xf6/S@\xa7e\xfe\xcb\xac\xfbH@\xca1w\xe8\xa9\xb4F@\xf7\xddw\x18\\\xd0F@\x99\xffl\xd4\xfaiI@<\xc3\xcd\x81\xb6\xb8\x10@-\xb1=\xc9\xb05\x16@\x8b\xa9\xd1\xf9\xea>4@\xa6\xf0\xe4\x11\xcat"@\x1f\xd4O1\x80v/@l4\xf6\xd29\x9aG@\x00\xb5m\x98\xd9\xf45@\x12\xfc+\xae\x03\x05R@;\x1f\x076\xd2\rK@\x04\xe1_\xe4\x1a\xaf=@1p\x13j\xeb\xd3C@\xd3;O\xed\xeb\xb1L@\xaa\ns\x97\xdc\xc2T@\xa2\xb9\xef\nFRT@\xd1\xff\x8aa\x8f\xd7*@\xc5\xab6\xaf\xbb\x0e\x1d@\xe3\x89Y\xd6X\x02\x1d@\x1c\x1cKQ#\xbb#@Y\xf4\x8a\x17zjH@\xf3\x90\x10\x17\xed\xf0J@\xdfXI\x0b\xd4\xd0K@P\xe3\x1d?\xcc\x10G@\x0f\x18\x8f\xba\xf6\x1cC@\xa0|8\xcb\xce\xd8F@vX:0\x8f @@\xc5\x8a"y\xc4=M@7\xb3\xc1\x99\xecAC@\xe7\xb8|i\x1fn?@\xc4\x80\xceX\x18\xe0Q@n\xca\xd4u])S@\xc9\xc8$\x10\xbb\x8aQ@\x94]\xe6\xba7\x85P@\xc2B\xbe\xea\x0f\xc4@@9Se;\xf1BC@\xc7\xd1\x9c\x012\x0c?@\xe3\xf85\xd9\xaa\x93A@\x9b\xbdq\xe4\xd3\x7fF@\xa41\x14R\xbfoG@P\x0b\xe6\xc0NyJ@V\xec\xbe\\GH\'@\xdbD^$J\x15?@\x0b=h\xbf\xd4\xd58@\x8f\x9c\x99\x9eS\x9fJ@\x94J\x80\x7f\x13\xd4N@\xc4\x13\xed\xa6\x16\x83N@\x83\xc4\xf0U\xec#Q@\x0c\xbeO\xe4c\x06R@\xe8\xf9\xa4\x86X\xccP@\xbe\xff7\x9f\xc6\xe0\x10@\xf1\x94Y\t\xf5\xd9\x14@\np\xf2a\xcd\x85C@\x02T_\x85\xbb.U@\x12H#\xbby\tU@Y\xc0]\xa3\x13iS@\x92(n\xf9M(S@\xcc\xe0\xab\x9c\x17]3@6\x05\x9e\x80\xf3\x0bF@\x14\x0e/\x03\xa5bU@\xebs\xa1tQ\xaaU@\x04NWK\x93YT@a\xf33yXFD@\xb0S\xb4qB<D@\xc7r\n\x12\xd5\x1cU@\x9bs!FJ\xacQ@\x963\x86k\x1d\x84Q@Z\xbc\x94E\xa0\xccO@\xaa\xeb\x0eM\xd1\x06P@\xe9\xe3=\xfd\x1c\xf3L@\xd7\xa9\x979T\xaaP@\xc4u\x98\x86\xb7GS@B6\xa5[e\x11U@^U\x16\xd1\xb3\x10\x18@\xbb\x91\xbek\xa4\xf1*@ITz"\x96\xad/@k"g\xa0X\x046@\xf3p\xae\rv)5@\x1bu\xf1\x11\x94\xe3P@\x14\x07\xff\xd0,m8@\xa6\x01K\x12\x85\x82;@U\xf4\x87\xbcM\xb0?@\xde5\xc4\x8a\xdb\x98N@\xa6\xd8\xb6\x12\xe0\x06O@\'\xe4\\\xd9+U;@\x87~\xe1c/\x159@\xc6,\xab\xc2\xc5U:@\xe1\xfcj\xcc\xdbxF@5\xe0\x02\xf3p\xe0P@%\x0fz+\xafAT@\xc6\xca\xcf\xd5\x85\x1cP@F\xc5\x04E\x908N@\xd5\x0bW\xd8\xa2\xa6L@\xde"\x14`\xd8\x9bI@ln\xef\x1c\xb4\xd50@n\x198U\x97\xc1 @\xdd\x86\x1c\xf4\x1cLK@\xc4\xf3\xc1\x83\xa5\xf2R@<\xedx\xc80\x999@2\x83\xc6\xdb\xb3/3@\x0c2l\xf3\x05\xde<@\xb1\x02\xa9\xe0\xc0\xd28@<tw\xaa\xbb\xa5H@\xd18\x86\xc2&\x87L@\xbea\xacu\x94\xb8T@\xd3:.Q\xf2\xb7R@g\xe3&\x8e\xc3\x82E@\xa8\t\xf2\xb7&vK@\xa04\xfe\x02\x14.2@\x9b\xe0\xfe(*@e@?\xbf\xe3\xbd\xd4\xbbe@\xed9\xbc\xbf\xb5\xefe@\xcf@\xb0\x08N}b@OGv\xee"\xbba@Rq\xcfj\xa3Pb@8\x1c\xca\x1b\x1b\xb0a@K\xf7\x10\xef0\x12a@)U,\x95n\xe2W@H\xbc\xd0\xc23\xd3X@\x81\xd4\xdb\x0f\xc0\\Y@R\x8a\x95\xc2\xf2\xc6]@\xfa\xfe\x9e\x7f\x92G_@\x8b!\x94\xad\xb4i^@sj\xf9\xd7\xbd\xb9e@\xc2\x03\x07\xb1;N`@|r-\x8f\x7f\ta@\x85\xba\x03\xf6\xed\xc7`@c\xa2\xa7\xaf\'mZ@\x0b\xc0\xee\xd5\x8c\xc7`@,yZf.\xdee@\x9be\xbe\xbe\xa4\x0ce@&ry\x90&#[@\xfd\xf8Vi\xf5\xddY@\x00i,\xafs\xe7X@R\t\xfb\xad\xdf\xa8d@+T\xf0\xc3|\xe8c@Dg\xa33\xcc\x17_@\xdf\xff\xdc\xebTg]@\xfaM9\\\xadUb@\xe2\x8e/!\xda\xffb@\xd1S:\x0e\xfe\x9eb@\xffJ\xf3xQRY@*A>\\\x9d?Y@\xdfH\x85\xdc\xab_Z@\x90F>\xfc\xea\xcca@\x1f\xc1\xd5\xda\xc5qb@!\xa7\xe7\xeb\x84ya@4t\x13\xf0\xa8Q`@3z@v\xa4Fb@\x85\x80h\xf5\xff\x9dW@\xf5Q\xdb_\x96\x82W@\xc2\x0c[\xc8W\xb1[@\xaa\xbe\xd6\xd6\xe3%Z@\'\x00\r\xcf\n\xf3d@\x10\xff5 o\x7fX@\xa5\x11\xd3l\x94\xf1W@\x81\x18 ]\xba\xf6`@\xb9\xf5]\xa5\xb9Ea@\x12\x19A\x08\xe2Jd@nd\xf3mp\xee_@\x989?\xeb\x93&e@=\xdc\xc3\xff\x84\xfdW@3\r\x88w\xfc\xbaW@\n8\xfe\x98\xbf\xa3_@\x19R\xe8\x16\xa4\x01_@NQ\xba<\x9d|`@\x8c\xbaq\xddY\xc2b@\x99s\x9b\xfc\xd7Wc@a\x8f$gm+^@\x1f\xfa\xba\xdb,^`@\x17K&\xfbP\xb8`@V\x85\xee\xe3&\xdd[@\xef\xb9j\xd7\x19\x0eY@x\xff\xb5I,\xad^@7\xb7\xcd?\xf2\r\\@\xc5\x1b\xa1\x1f\x0c\xb7Y@\xdcM\x05\xa9\xa4\x07]@=\xa7\x9f.\x0f=Z@\xee\xc1\xbe\x92\xae\xe2e@\x82q\x8f(\x06G[@\xc7\x11\xf4\x17\x96"]@\xb5\x1a\x0bN\x16\xcf[@\x14\xf0\xc0\xb7\x15Ja@Y\x9a\x10\x14&W`@N\x85\x08\xd0\xc5O`@\xd0i1\xb4\x91y`@@\xe1i\t\x14u[@~\xc9[\xba\xf9)b@\xba=?\xbb\x13\x0b`@\xcf\x08X\xd0\xf7\xa5\\@\xa1\x8a\xc9b\xa0\x1f_@\x15\xae&t\x8f4_@\x0f=\x8f\x12\xa3\x8ac@\x1d\x02\xc0Z\xce\x95e@\xae\x82\xe5\xf2\x87-b@\xb5\x9bX\xe3\xdc]d@\xcdj\x02)\x05\xa6X@\xb8\x9c\xeb\xef\x90%X@<\xb3!\x9b\x8bmZ@\xb9HQ\xe9\x8f\xced@\xa3w\x98;\x9cMc@\x9e\xafg\xb6\x8fYd@\xd0\xe3\x91\x8b\xfaXd@v\xadP\xd0\x03\xf2c@"\xed\x11\x82\x8aTa@\xc01\xc8>Z\x89d@\x13\xd2\xaf\xc5\x90 [@\xd9l\xff\xda\x0e\xf5Y@\xf6Rr\xfc-\x1ed@\xe7\x9f\x17\x83n7e@`1\xc2\xde\xeb\xb8[@sSmB\xe8\xc1c@\x00\xd0\x1cB\xb9\x83a@\xac\x92\xaax\xf9a`@\x93w\x15\xd0-\x05b@t\xa5:\x83\xfc\x14]@\xfb\xb7\xcb\xcf\x96\x0fa@\xac\xe1_b\xce\xcf_@f\x81\x18\xf0\x0e\xb9Z@?\xa0\xae\xad\x0e$d@=+\xe1\x17M\xa3c@\xa6\xa7\xbc\xbc6#d@\x0f\xbc\xc1\x08\xe3\xd0d@\x83\xdc(\xbd\x17me@\xe0\x85\x1f\x96Y\x0bf@\xcbr\xd8rk\x83\\@y\x9b\xce\xc7\xec\xfdb@8\xec\x89\x83\x88`d@X7D\x0f<\xa6b@\xcel\x94\x97\x02\x8fc@\xf5\xbfA5o\x1ec@\x17\xe9\xb8\x1f\xc7\tb@\x8dc;I.\x13c@]\x876$\xd5\xaa[@h\xd6\xd6\x9f\xcf\xca\\@Q\x17\xbb\x1a\xba\xc5]@\xd2\x89\x82\r\x9c\x82]@\x1bp\x02\xe4]\xda]@\xd9S\xd8\r\xbd\x14d@\xc7G\xe6\xa7\x00\xbdc@z\xf4-\xf6\xef\xb7a@\x0b\x9a\x8c\xbd\xd4\xc9\\@\xd0t\xba\xdcb\x93a@\xf2\x80?_A=e@=\x1f\x9a\xf0\x84le@h2B\xfe\x8d\xf8]@\xc1T\xcf\x1b\xaa\x9bc@I\x81(\xe0\r]d@\xe5\xe3NR/\xacb@\xca:s\xa1\xc3\x7fe@X\x80\x8ff\xe6\xa8e@tV\x83O\xf1.e@\xc5%\xc5\xe1\xfa_T@(\xd9y\x0e^;T@3F\xfc\x08_HR@\x166\x8e_\xf3\xf8P@\xfe\xbf\x0b\x9ed\xa3S@\x1a\xcf\xa2\xee\xba\x93R@\xb9Y\x06/\t\xbcT@*F\xf2\x8cY\xebP@\xfe\xaapa\x85\x1bP@S\xc9\x03\xab\x85\x1dN@7\x17$,\xf8\xb4Q@\x7f8\xba\x07\xc5xS@\xe4\xa6J\xb2G\xc2<@2q1\xbe\x0c}G@\xcb\x0eA&\xc8BN@\t\x86Wl\x0f\x16Q@\x98\x0f\x01\x88\xfd\xafN@\xa7>\xa6\x98\x1b\x1c5@0b)\xe7]AG@o\x8fn-u\x03F@\xbf\xf0\x7f\xa7w\xc7H@]\x12\x9e]\t\xd1C@G\xd5=\xab\xf4\x9e3@\xc7S_\xde0\xbf,@\xa1\x12\x89oZ\x0fU@,t\xad3~UU@SdN?7\xf9S@vY\n\x8b\x0c\x97&@\xad\xc1\xcd\x103~\x13@\x82P%\x80\xa1\x18!@,\x08\xba\xa7>\x06N@j\x8f\xbfk\xbc\xe5P@"V\x19K\x0f\x89P@\xb9u\xb8\x068\xe8S@\xbb\x85t|hM\x17@%\xf01\x14\x12\xe0H@,`\xd0\x7f\xa5;R@\xdaG\x0b^\xc7\xd2:@n\xf7H\xc8\xedn&@\x1d\x8aN\xc3\x83?@@\xa3t\xc2\x12\'\xa8<@\xa2\xebZ\x12\xf1\xcb9@c\x1c*"\xfa/6@-\xef2\x9e\xedoP@\xbd\xcb\xb5\xe0\x1b7N@{6\xed\xbd\x15\xd2J@r:t\xcc\xebsL@[\x10g$\xfc\x88M@\xce]\xdc\x0cv\xfa#@\xbc/?\x01\xb4\x8aP@\xe3\x8b\x9aj\xecJP@\xf6\xa6\x8c4\x86\xb5=@\x88\x8aNE\xd7\xa1D@p\xff\xa2Zd\xbc?@\x16!_),\x94C@\xfd\xde\xfe\xab4\xaeQ@,;1\x7f\x10BK@\x0e\xfb\xd0\xc8\xe4dI@\x9e\x98y\xd7\xa9\xabL@\x98\xe5=\x16\x9d\x0eG@\x90PH\xea\x1a\x15S@\x0fc\xc2p\xedQJ@\xec&A]d\x109@Tk\x91\xb9\xcb\xc6?@\xe3\xa02L\x8e\x8f9@\xd3EQm \xe30@\xc1\xa7\xbe\'>\xad2@<B\x96#\t$(@\xa4\x08\xf3\xdc\xb9QI@xn\xfc\rN!0@(\xce\x92m/\xa6I@\xf1\xacy<s\xceG@\x1f\xf2\xf3t\x93\x08T@\x0c\x0f\x0ez|\x0cS@nj2\xaa\xef\xddT@6yn\xab\xdc\x0cF@\x10\xb7\xd1\xbb\x0e\xfbQ@\xe4\xf3[\\\x9d\xc3O@\x0c\x17\x03\x99FmD@\x03U\xc3\xb4A#C@\xfc2W\xb2l\x8f@@\x0cR\x99]w\x0bP@\xf8\xf7\xe1\xf3r\xae+@\xa0\x9d\xc4f~+P@K2\xda.h\xf8A@\xbf\x80n%\xd8\x1cM@}\xa5) \xb2\xa1D@|\xbb\x9a\xfa"=C@N\xce\x12&\xb09A@\x0c8%\x1fa\xce@@\xc36\x10\x876\x11H@*\x0er\xd09HH@\xcaO\xc2\xcd\x9d\x06L@/x\xa3h\xee\x08K@\x10]\xcc\xcf\xeb\xb7?@\xb42\x91\xbb\xf7k<@\xa4\xcc\r\xc2\xe7kC@\x87B\xccP*\xf93@\xce\xe0>?0zE@\x89\xf4e3\xa3\xbcQ@jWP\x8e\xd1XU@\x18\xa4L\xb5\xce\x15T@? \xcd\xaaR\x8c7@;\xb4KQ\xf4\x9bE@$\xf7\xd4\xf5\xe3\xcdT@\xfeq\xd2\xb7_\x8e8@Y<\x8a\x11\x8e!A@\x87/\x8e\xa1\xcbtR@\xe3\x99\xa1t\x7f\xedN@\xfczF\xb0\x7f\xe7;@\x07M\x8f~!\x90J@\r\xeb\xe9J\x1e}D@\xa2\xb0\x87=\xf5Z\r@\x12#]_qL2@\x95\xeb)t\xf9\xff&@\x0b\x8b(>)\xda"@\xbc\xc0\xfbe.r5@\xfe\x93:\xefReT@\xc3$\x92M\x89\x97U@\xcb\x80 7\xca\xde2@:\x82U|\x88]/@\x95\xea\xb0\xc8\x10\xb63@\xdb\xfe%4\x85K5@\xa1\x88_\xfcz\xe04@\x92\xbe9h\xd9,C@\x0e\xeb2\x92\xb8#\x1c@\x14\x04\x12\x9f\xde\x84U@\x81c\x94L\xbd\xb8R@\xdc\x1aW!\xab\xdeR@i\xd1q\x180\xd7\x1a@\xff\x18\xbe3\xed J@\xae\xb1K\xed\xe5\x8fK@\xb0\x8fFm6\xd8\x18@N7\x10\t\xdc\xb6(@l\xf2W\x98\x83Q\x15@5\t\xb8\xce\x98YS@P\xf3.\xa4+\x988@\xc2=\nHk\xddF@\xc3\xb26\tR\xf1d\xc0Gl\xd2K3\xdfd\xc0\xcci<`\x16"d\xc0\xf5\xedp\xc1\xe4\xddc\xc0\xcf\rr2\xdf\x9f\\\xc0\xb7YxS\xcf\xfa^\xc0\xcd\x03\xdf\x7f\xeb\xc2^\xc0\xdd\xa1"\x17\xdcM`\xc0k\x0bT\x85b"d\xc0?9\xfct\x12wd\xc0\xb4\xe3\nL\xe1Qc\xc0\\\xa0\x0e\xdc\x93-\\\xc0\xa6\xaaN\xf4\xe8\x05b\xc0s\x9f?\xf1gB`\xc0\xda\xcaI\xb0t2c\xc0\xb4\x8cC\x93[/b\xc0c!\xa3\xde\xed\xaeb\xc0\xf0\xdc\x1b\xd6;\xe8e\xc0\xe9j\x10\xe9\xda\x82e\xc02r\xa9\xe8\xd3\xc0e\xc0\x07\x0c\xfb\xb7\x01\xb8Y\xc0v\xdd\xe7Y\x93\xf1Z\xc0\xde)\x0ci\xdceb\xc0\xb0\xc5\xc2\x13j\xb6c\xc0\xd1/\x1d\xa79\x9eb\xc0\xae\x14\xf3\xdc\x82\xabc\xc0\x88\x0b\xacD\xd1\x19c\xc0\xb7S=\xdc\xa7sc\xc0{\x96\x15\rF\xd4`\xc0U\xa0\x04\xc9\x86q`\xc0IL\x8eq\xe2\xf7_\xc0\x9dT\xa0\xfa\xea\xa8_\xc0\xebQ\xf0\xf2\xbci\\\xc0\x8f\xfa\xa32)\xdc]\xc0P\xf4\xba\xc7\x82,\\\xc0<\xfac\xfa\x1d_e\xc0\xb1\xc4\x90v\xe0\xccd\xc0\x83\xd58te\xafd\xc0\x15m\xd4k&\x88d\xc0\xd9\xa0\xa3\x1cq d\xc0\x86s\x9d\xbc\x1f\x19d\xc0}t]R\x15\xd2\\\xc0\xa8\x05\xc7_5\x1a^\xc0{\xde\x95K\x006\\\xc0\xd0\x1a{@\xfdOe\xc0pau\xef\xba\xf4e\xc0#\x9a~A\x07\'a\xc0\xba\xde%\xe5j\x84`\xc0\\gx\x9eb<\\\xc0\xe3\x02\x9a\xa9\xfa\xa6Y\xc0\x9d\x14\x93\xc3\xd6\xb7]\xc0\x83&a\xd2\x89\x0ea\xc0\xc9\xcb\x0f\xe6\xd9\xb5d\xc0\xe4 m\xcc\x8dVe\xc0)=\x8b\xc5\x90\xacc\xc0\x15\x08g\xaa\xc2P_\xc0D\xf6\xe1\x00\xb9>`\xc0\x9bz=\xbbF\x06a\xc0\xa6\xd7\x18\x1d\xff\xbd^\xc0]\xa1\xf9U@4`\xc0 gM\xb6Ae^\xc0$,Q\xe4\xd7\xed\\\xc0\x88\xa8\\\xe8\xa4\xd9a\xc0\xbb\x7f2\x13)[b\xc0\x1fu\xd2\xc8\t\xa3a\xc0\xc7\x1d\xa6\x16\xcdTa\xc0\x8a\x03\x81\x80a\xd7`\xc0\x1a\xe8\xa8`v\xe3a\xc0p\x8a\xab\x83G\x83\\\xc0\x15\xeb\xb8\xa4\xd5\xea_\xc0\t\xfe\xb2\xb3i\x8aa\xc0\x19\x12\x13\xeb\xe9\xc5a\xc0\xd7\xaf\xc1\x99D\x92_\xc0\xdc\x9c\xab\x8b\xbeha\xc0\x03\xb8\x853\x02x`\xc0\xf9\\\x82\xc5\x9d\x94b\xc09\x81t\xc0\x8b\n[\xc0\xbc\xe5\x05\xbd\x17\x9f\\\xc0\\N!\x86av]\xc0\x9c,\x0f\x92\x17\xd2`\xc0\xdc`\x10\x9aT\x1c_\xc0\xe9t%G2\xcbY\xc0 \xf1\x9e\xab\xc1*[\xc0\xaa\xdc\xc9\x80\x84XY\xc0\x83\x8cA\xb2>\xddb\xc0\xc9\x9b\xad\xbf\xdd\x01c\xc0\xb1\xf0\xfc\x84\x18tZ\xc0\xb7\x16\xa6\x11=\x93Y\xc0h\x99\xd5\xc0\xbadX\xc0B\xc6$\xed\x15kZ\xc0{#\x8a\xbc\x9e\xa0X\xc0xm\xa0\xaa=\x81X\xc0\xfc\xa6\x0b3n\xcaZ\xc0\xa8\xc5+8\x04{[\xc0\x96rg\x96\xf3\xa4Z\xc0\xf6lW\xa6\x1djW\xc0\xa7>D5\xa5_X\xc0O\xba0\xbc\xe9\x96Z\xc0\x10/\xa6\xfa\x8f2Y\xc0\x94\xf4N^\xe2bX\xc0\x9aW\xc2\xfb3X[\xc0\xeb\xdb\x18zk\x9bX\xc0:\x8c\xb0=\xd6\xcad\xc0\x1e]?V\xe1\x07b\xc0n\'\xc0\xf7\x0f\xb2e\xc0\x85 t\x96+\x0eX\xc0\x93\xd7\xf1P\x89\xbfW\xc0\xa6y[\xb4V\x8fa\xc0&s\xd5`\x95\x86b\xc0\xb11\x1a\xe7\xae\x9cX\xc0\xa1\xd9.\xed\xfc\xd3\\\xc0\x9c\x99\x8f\xa6{\x84d\xc0\x01k\x9e\xb9\x0e\xceb\xc0\x17y\x88\xee^3c\xc0W4"\x17\x01\x84b\xc0\\-\tM]\x99]\xc0\xc8\x8b\xc2\x12\xfaRa\xc0\xcaH\xa2\xf4\xee\x1cX\xc0\xffK\xbc_9ea\xc0 l<\xa2I\xb6\\\xc0.\x1ct\x1a\x01,[\xc0\x8b\xaeq%\xdfVb\xc0a\x91\xc1\xcfmSe\xc0\xbd~\xfeOE\xf0b\xc0\xc2\x11\xd2t\xdb\xc0`\xc0\xbb$\x82\xe8\xd2\xd9_\xc0X\x13%6\xc2\xd8d\xc0\xf4`\xc9\xae\x0f\xd6e\xc0\xa1\xf6\xa1q\n$d\xc0\t\xf7\\\x19\xb5\x89c\xc0\x87\xd9\x1e\xf4k\xbb^\xc0`*\xd4#5td\xc0 \x08d\xfd\x7f\xa7e\xc0\x1aS\xf2L\xff\xcfd\xc0\x83\xd7\\\x95\xc8\xe5a\xc0\xc3#\xfayB\xc9Y\xc0\xea{\xa8x{Va\xc0[J\'K,\xbf#\xc0\x97\xefB\xe8g\x82"\xc0_\xfc\xeb\xd2\xfc\x14D\xc0\x19x\xf9"\xee\x9c;\xc0\x81\xb4Ur\'\xc5<\xc0J\xbaN\xc3\x01qD\xc0\x91\x94Vl\x85\xc9C\xc0\xa17~\xd6\xb3\xb3C\xc0\xfbeb\xb0\xb8\'F\xc0\xe0\x1b\xd1:&\xaa%\xc0[\xba\\WM\x0c1\xc0\x1d0/\xca\xeb=H\xc0fJ\xe6\\\x86AE\xc0\xb7\xe4\x14\xdf\x0b\xc8E\xc0\xb7;\xa3.\xea//\xc0v`p\x9b\xd1\xd3A\xc0\xa55Lq\xbb\x06A\xc0\xa32&O69C\xc0\xb5\xea\x87~\xab\x10D\xc0\x93\xe0F\x89\xac\xc77\xc0x\x8d\xcfw\x8fj1\xc0\xc7\xb1*\xbc\xd7\x8f9\xc0\x8a\xbf]u\x13)@\xc0\xdd\xa3\xdbs\xf8[1\xc0\xdd\xc4\x9b\x96K\x04C\xc0\x85\xf2\xf7\xe6=&F\xc0\xa6\xf7)(\nhI\xc0\xfa\xae)\xad\x11\x1eJ\xc0\xb7\x1d\xf3\x06GGP\xc0(\xf7\xc5\x98\xe0\xe7N\xc0~\x13o]8fS\xc0\xc6\xd5J\x11\xb2\xa75\xc0\xd3\x1eL\x9f\x88\x92.\xc0,\t\x01\xd8\t\x12I\xc0`3\x1dq\xaa\xc2I\xc0\xedP\xd0P\xd9\x15I\xc0\x9f\xbcq\x9a\xc8\xdbS\xc0\xd3\x10\xd6\x99\xfczS\xc0\x80\x0e\x9f\xd6a\x15U\xc0\xc7\xbf\xafq\xc4\xe0T\xc0\xf2\xac\xd1\xf1(\x03I\xc0\xd4\xfaS^:pL\xc0gpb\xa4@\xa6J\xc0=\xec\xeb\x8f\xb5\xc0J\xc0b\x8b\x16\xd3\x18\xd0\x1a\xc0\xab\t\x18\xfd\xc7C\x19\xc0\xd65\x01k\xda\x89K\xc0\xdc\xb4\xf0\x0b\x04\xf2-\xc0\x7f\x90X\xd0\xfb\x85S\xc0r\x00O\xad\xfd\x05Q\xc0\x08\xc7c\x01\x15sN\xc0\xcf>D\x04~wN\xc0\xe0\x1a\x19\x11\xb5\xcfK\xc0\x81\xa8\xad\xe1r\xc1L\xc0\x0f\xf6\xd6a\x1f\x90P\xc0\\\xfe\x9aZ\xbe\xbeR\xc0\x9c[\x07\\\x15\x8aS\xc0J\x89*=\xb07R\xc0x\xe2\x1c\xbd\xc3#T\xc0\x03<\x9f\xee\xba^@\xc0o\xe7\xb2\xbb\x97@C\xc0jf\xe8\xbb>\xa3$\xc0\x1a#\xef-~\xa1R\xc0\x98\x91qm\xd8[Q\xc0\x9d\xc2Umn\xedJ\xc0N\x82\x98N\x8dyS\xc00v\xe8\xf7\x07\xa5 \xc0\xddg\x90\xc6\xb4\xc42\xc0\x81\xf8g9\xde\xcaT\xc0\x89\x86\x08J\xc9\x93T\xc0\x18\xaa\x07\x9f<\xcc8\xc0\xca\xb4\xddm482\xc0\x03\xa4\x81\xa7dA@\xc04FQ+\x96@1\xc0\xb5\xd1\xac\xfd,<6\xc0\xff\x15I\xfdK\xa5>\xc0s\x9b\xb9\xf6\xca>"\xc0\xf9d\xe66\x02\xd0+\xc0E`\xd6a\x9f\xde:\xc0^\xab\xa6\\je:\xc0mrH\xce\xa3\x94K\xc0\xf3D33\xc2k3\xc0\n\x0b\x02\xfa{P4\xc0\x0c`Q\x06\x80\xdcL\xc0\xe8\xd4c[\r\xacN\xc0"\x12\xf5\x1b\x1a\x12Q\xc0\xd5p\xd5\x0c\x81\xa5P\xc0\xcc\x8e\x14]\xab\xfeQ\xc0\x14.\x81w\xf5\xd24\xc0\xc7\xe9\xa7J\xa3%*\xc0p\xd7\x9f%\x0f\xec\x12\xc0\x97G\x95\x1f+\xbf"\xc0Qx\xeb\xb8[\\N\xc0\xb9\xcc\xdbg\xea\xa2R\xc0\xe2\xe4\xd3\x81\xf8\x16P\xc0I2z\x11\xf4rQ\xc0! \x11\x96\x0b\xd8R\xc0/\x0b\xb4\xe4\xd1.P\xc0\xed\xdd\xd91\x84DU\xc0\xc9\xac\xa4\x7f:u(\xc0\xea\xa4\xca\xd4\xa6\x0eP\xc0~\xe2Y\xb0\x18\xfcB\xc0\xa92\x17r\xab\xe8Q\xc0bv|d\x94\xc0@\xc0\xe5\x02\x05L\xf5\xefT\xc0\x96\x7f9\xe1\xf8\xd6R\xc0\xe0{\x15;M\xe1\x15\xc0\xc9\xfd\xceI\xfe\x8f;\xc0h\xc0\xf4\xce\x85\x17@\xc0\xcb\xf5\xb4\xbfi\x8d?\xc0\xd8\x91\x10\xe2\x8a"H\xc0F?\x0e\xe7\xa5\xa8?\xc0\xdc\xe4\xcc\xcb\xce\xd69\xc0w\xf3]|m|P\xc0\x8c\x84\xd7\x1a*`\x10\xc0\xba\xcd\x9c\x97\xca\x15R\xc0\xb1@-g\x11EL\xc0r\x135q\xa7QJ\xc00 `\x05\x1b\xedP\xc0\xbdS\xdd\xed\xcd2M\xc0l\xf5J\xdb#\x0bU\xc0\x128\xdc\xa2\xc4\x98S\xc0\xe5\xf34\x82\xa2hU\xc0\x0e\x17\xcc\x14\xc8\xe8T\xc0b]\x18\x02\xb3\xb5A\xc0h\xd1k|F\x11@\xc0\x97\xd3\xe6\x86.\x17B\xc0\xd7=1\x8a\xb2\xebR\xc0\x8d\xb4\xe9\x0f_\xf9N\xc0\xb0\x82B\xde\xb5JO\xc0|#F\xad\xee\\F\xc0\x98}\x06\x10\xa0\x81F\xc0\x8e\xcd\xe1\x11\x93\x1bH\xc0\xba*\xea\xbe\xearC\xc0\rC\xea\xca\xf8"\x14\xc0*\x82\xcb\xb8\xcfoG\xc0\xcde\xb7\xb6\x9f\xa0Q\xc0\x8c\x13g\xdag\xfaR\xc0\xda\xc9\xc1\xef*cQ\xc0t,\xff[h\xcaT\xc0\x110\x90\xaf=\xdfR\xc0\xb2\xe7\xc8x\xdf\xc5S\xc0\xa2\xd9\xb2\x999\\.\xc0\xc0j@6\x7f\xdf\x1d\xc0I\xb4=\x98\t\x13!\xc0\x90\xa6s\xb3\xba\xecE\xc0\x83\x07\xbcR\xe8\xa8M\xc0$\xff\x04\xb3\xb0\x9dC\xc0\xb7)\x9d\x9b^\xfdQ\xc0\xbe?Si\x9b\x9cO\xc0\xff\xddc=k\x9fE\xc0g\x16V\xff\xae\xa2H\xc0\x12\xcekq{P*\xc0A)\xb9\xfe\x11e2\xc0\xb7\xa0\x94lO\xf4N\xc0\x90l\xe8\x89\x7f\x1dL\xc0f\x8a\xd4\xe3x\xc9P\xc0j\x99X\xa2\xb7:5\xc0\xe4<)\xe7F(:\xc0N\xd3\xa5\xf4\xd6\xda3\xc0[P\x97\xbc9ZU\xc0\x91e1`\xb2\x13U\xc05lIeY\x829\xc0\xe56B\xa3BHD\xc0\x03<\x82<o\x88E\xc0\xf0DU\x94J\xd0G\xc0x\x04Cfw\x8bB\xc0\x14N\x04\xa4\xba\x1dS\xc0/\xc2C+RFS\xc0\xdd\x8a\xcc\xbc\xf1?L\xc0\xa6\x9a\x1d\xee\xef\xf0K\xc0\xcc\x13\x91\xe5pdN\xc0eUW\x8e<\x84P\xc0a\x9e\x15\xc7v8U\xc0YC\xa5\xf7\x185T\xc0} +9V\xfcR\xc0\xe9\xcf\xbe,HJ9\xc0q\\\xbb8;\xde>\xc0{\xea*\xef\x03\x1e6\xc0K\x02-\x1b\xedu6\xc0G\x94\x86\xa3h\xed%\xc0\x19\x85\x995\x17[P\xc0\x00\xb9p\t\xb7\x19Q\xc0z\x10\x80v\x11uN\xc0pO5\xfc\xdd\xfbS\xc0Wv\x84[\xfcSJ\xc0\xb1\x83\xc4\xf0\xe1\xb1F\xc0\xb5as\x95c[H\xc0\xc4:j\xb3\x9a;T\xc0p\x171\x99~\tD\xc0R\xf7\x1fp\xd4\xe9C\xc0\xde\xf7\x9e\xfb\xb8DE\xc0F\xe4\xaf\xce\x83\xefA\xc0\x9b\xce\xc3\xc8\x9b\xd1G\xc0|\xf6@\xf60\xe4@\xc0O\xf5\x83\xd1\xf5\xdb<\xc0\n\xfa%v\xaf\x0e;\xc0\x8e[\xf4\xbc\x96\x7f>\xc0_i\x08q\xff9H\xc0\x10\xa1D\xbbk\x12P\xc0\xd25"\xd7\xad\xd9J\xc0\x138P\rI$K\xc0,\xfd-\xac<F.\xc0\x97\x99\xc9\x13\x91\xec\x1e\xc0\x92\x13\\\xb3\xa0\xfd,\xc0\xb8=z\xae\x16{5\xc0\x95C\xa1\xff?q@\xc0\x07\x1f.\x9a\xa1yT\xc0zVg\xa4\x14|T\xc0\xb7Q\xbe\xc9\xef\x16S\xc0R\xd4]b\xe6OB\xc0\x0b(\'\x94\x9f\x11S\xc0\xf3\x8c%\xd6Z%S\xc0\x8b\x8b\x1cf\x8e\xcbT\xc0\x8c\xb7\x13\x17\x9cb\x1f\xc0q\xe8\xaa\x8f\xb8\xf2.\xc0\xa5\xa9\x0e\xb0<UQ\xc0\x89\x14\xbd\x13\x1a\x005\xc0V;\x0fe\xa7tS\xc0\x1e\xdb\xa1\xcb\xa0\rU\xc0H\xe2\xe472\xee5\xc0\t\x8d\xcd\xfb\xbc[B\xc0\xdbQ\x10\xc2\xd0\x0b?\xc0\xd0\xb0\x10\xbbR\x031\xc0u\xff:51\xbf&\xc0\xa0\xbfM%\x9a`O\xc0\xca-O\x00\xbd*R\xc0\x84\x83\xb7O\x86\x86R\xc0\xa46\x971\xf1 R\xc0s\xc0N]\rpN\xc0Y\x1a_\x10\x1f\x02H\xc0"\xd6_\xd2 YG\xc0\xeda\xc7\xc0\x90\xd3 \xc0\xf8\x03\x89\xb0M\xed\x1e\xc0T\x8a\xda\x1a\x0c\xeaN\xc0\xd6\xad\xb4\x91\x96\xe6\x0e\xc0]:\x9b\xc5\x0e-I\xc0G8\xfd\x04\xdb](\xc0{\xa3Q\x0b\xf4\x1eQ\xc0\xf4z*Sf"I\xc0\x16H3\xb9\x1f\xd9Q\xc0\xf4\xa8Y@\x93k$\xc0L\xd5\x0f\x86\xd2\xe9>\xc0\xe0\x17\x8e#\xfb\xb8B\xc0\x16\x0fH\x96\x1a\x17C\xc0\x01k\x8b\x82^\n\x14\xc0\x10\xa6@\x98x&P\xc0\xee\x1f$&\xe8\xb3C\xc0\x96p:\xb3\x9c\xc6@\xc0PK\xa6\xf6\xf01=\xc0\xfa\x0b\xb2\x1c\xa9\x8d6\xc0u\x80\xcc<r\xb0<\xc0\xe4\x1dy\x9cZmU\xc0/1\xfe\x17\xfb\x96U\xc0\x9a_4\xa0\x14tK\xc0\xd3(\xe4A/<F\xc0\xb7j\xa0\xb7\x1a\x00A\xc0\x9a\xbc\x86i\xb9\xcbG\xc0\xc9\xad\n\xc2\xd4\nR\xc0\x02\xa6\xf0\x00!-6\xc0\xb0\xa657\xe5^\x1e\xc0\xde\xd3\xb1\x8f4"-\xc0\xd5r\x02\x99\x16\xdb#\xc0\xc2+\xc6\xbfb\x89.\xc0r\xd4{Vy\xe7I\xc0T\xcfc\x1eu-H\xc0\x93\xd2\x93V\xcb^L\xc0A\x874td\xf7\x14\xc0\xcb\x0fy=v\xb3N\xc0\xaap\xdb"\xc6I4\xc0\xc3\xc6\x14FD\x03,\xc0E\xf8\xfc\xdeg\x0cA\xc0\xf4p\xa5DW\x9aL\xc0\xae\x11\xce#\xec\xb2D\xc0Y\xca\x89\xa4\xf268\xc0"(\xe8Q\x11PU\xc0'
+p43
+tp44
+bsS'vertexconnectivity'
+p45
+Fnan
+sS'numberofvertices'
+p46
+I1286
+sS'r'
+p47
+g9
+(g10
+(I0
+tp48
+g12
+tp49
+Rp50
+(I1
+(I1286
+tp51
+g31
+I00
+S'\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA\x01\x00\x00\x00\xb1MXA'
+p52
+tp53
+bsS'average_vertex_connectivity'
+p54
+I25
+sS'segmentmarkers'
+p55
+Fnan
+sS'elementconnectivity'
+p56
+Fnan
+sS'y'
+p57
+g9
+(g10
+(I0
+tp58
+g12
+tp59
+Rp60
+(I1
+(I1286
+tp61
+g31
+I00
+S'\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xb1MXA\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xb1MX\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x83\xc10\xc0R$A\x0e~k\xe1?64ACr\t\xfcn\n>A\x82\xce9\x05.\xc5CA-\xe0\xff\x00\xb1MHA\xffi\xd1s\t\x92LA\xdaI\x80\xc8\x1fCPA\x1f\xdf\x0e\'\x9e\x0fRA\xff\x97\x1a?t\xa9SA\xa9\xe3\xaa\x8f$\x0cUA\xca\x7f\xe7D\xcc3VA\x17\xf7\xb7\x1e.\x1dWAI\xf2\x96\x86\xbb\xc5WA6\x0c\x83\xbb\x9b+XAv\x07}\xbb\x9b+XAh\x10|\x86\xbb\xc5WA\xf8\x08|\x1e.\x1dWA\x04b|D\xcc3VA\xb5E\x0f\x8f$\x0cUA\x887B>t\xa9SA\xb8\xa7\xde%\x9e\x0fRA\x04l.\xc7\x1fCPA\xa1\xc7}q\t\x92LAq\xcd\xe4\xfe\xb0MHA\xe0\xa1X\x03.\xc5CA\x88\xa9\'\xf9n\n>AC\x9bq\xdf?64A\x81i\xf7.\xc0R$A\xbc\x83\xc10\xc0R$\xc1\x0f~k\xe1?64\xc1@r\t\xfcn\n>\xc1\x85\xce9\x05.\xc5C\xc1-\xe0\xff\x00\xb1MH\xc1\x01j\xd1s\t\x92L\xc1\xdaI\x80\xc8\x1fCP\xc1!\xdf\x0e\'\x9e\x0fR\xc1\xfe\x97\x1a?t\xa9S\xc1\xa9\xe3\xaa\x8f$\x0cU\xc1\xca\x7f\xe7D\xcc3V\xc1\x17\xf7\xb7\x1e.\x1dW\xc1I\xf2\x96\x86\xbb\xc5W\xc16\x0c\x83\xbb\x9b+X\xc1v\x07}\xbb\x9b+X\xc1h\x10|\x86\xbb\xc5W\xc1\xf8\x08|\x1e.\x1dW\xc1\x04b|D\xcc3V\xc1\xb5E\x0f\x8f$\x0cU\xc1\x897B>t\xa9S\xc1\xb9\xa7\xde%\x9e\x0fR\xc1\x05l.\xc7\x1fCP\xc1\xa1\xc7}q\t\x92L\xc1r\xcd\xe4\xfe\xb0MH\xc1\xe0\xa1X\x03.\xc5C\xc1\x85\xa9\'\xf9n\n>\xc1Q\x9bq\xdf?64\xc1}i\xf7.\xc0R$\xc1v\x07}\xbb\x9b+XAh\x10|\x86\xbb\xc5WA\xf8\x08|\x1e.\x1dWA\x04b|D\xcc3VA\xb5E\x0f\x8f$\x0cUA\x897B>t\xa9SA\xb9\xa7\xde%\x9e\x0fRA\x04l.\xc7\x1fCPA\xa1\xc7}q\t\x92LAp\xcd\xe4\xfe\xb0MHA\xe0\xa1X\x03.\xc5CA\x85\xa9\'\xf9n\n>AH\x9bq\xdf?64A}i\xf7.\xc0R$A\xc5\x83\xc10\xc0R$\xc1\r~k\xe1?64\xc1Er\t\xfcn\n>\xc1\x81\xce9\x05.\xc5C\xc1,\xe0\xff\x00\xb1MH\xc1\x01j\xd1s\t\x92L\xc1\xdbI\x80\xc8\x1fCP\xc1\x1f\xdf\x0e\'\x9e\x0fR\xc1\xff\x97\x1a?t\xa9S\xc1\xa9\xe3\xaa\x8f$\x0cU\xc1\xca\x7f\xe7D\xcc3V\xc1\x17\xf7\xb7\x1e.\x1dW\xc1I\xf2\x96\x86\xbb\xc5W\xc16\x0c\x83\xbb\x9b+X\xc1v\x07}\xbb\x9b+X\xc1h\x10|\x86\xbb\xc5W\xc1\xf8\x08|\x1e.\x1dW\xc1\x04b|D\xcc3V\xc1\xb5E\x0f\x8f$\x0cU\xc1\x897B>t\xa9S\xc1\xb9\xa7\xde%\x9e\x0fR\xc1\x04l.\xc7\x1fCP\xc1\xa1\xc7}q\t\x92L\xc1p\xcd\xe4\xfe\xb0MH\xc1\xe0\xa1X\x03.\xc5C\xc1\x85\xa9\'\xf9n\n>\xc1H\x9bq\xdf?64\xc1}i\xf7.\xc0R$\xc1\xc5\x83\xc10\xc0R$A\r~k\xe1?64AEr\t\xfcn\n>A\x81\xce9\x05.\xc5CA,\xe0\xff\x00\xb1MHA\x01j\xd1s\t\x92LA\xdbI\x80\xc8\x1fCPA\x1f\xdf\x0e\'\x9e\x0fRA\xff\x97\x1a?t\xa9SA\xa9\xe3\xaa\x8f$\x0cUA\xca\x7f\xe7D\xcc3VA\x17\xf7\xb7\x1e.\x1dWAI\xf2\x96\x86\xbb\xc5WA6\x0c\x83\xbb\x9b+XA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\xd2\x1ep\x9a\xc80A9Y\xc5\t\xfeB1A\xd8\x1eI4\xc0\xfd8A\xf9\x17\x1d\xc0Y\x85<A\t\x06\xbd\xee}e-A\xe1\xe0\xed\x00\\\xfd\x1cA\x82\xd3\\\xde\xe8;#A}Xa<{#BA\xc4\xd1]\xd7\xe3\xd9FA\xd3\xee\xb3\x92y\x99CAG\x8ad\xec\xc7wWAfD^\xdc\xc0\xaeVA\x96\x9d^!p\x90VA\xc9#\xddsI\x9f A\x0c\xab\xe2\xb9\x18\x98\x1fA\xbb0_+sXTA\x07\x07\x9fT;\xb7UAv\x90\xc6ntrTA\xa1\xea\x11\xc3\xc1\xc1BA<\xa8\\\xeeB/FA\x075\x03j\x08\xd8DA\xbaI\xf4<m\x83DA\x87\x01\xbf\xbbb\x8dCA\xc0]\xf2\xcdK\x10?A_\x0e*\xb2\x80\x17XA\xeeS<\xf8\xe1\x8b"Ay\x1b\xc7\xfc\xbc\x80%A\xc7uF\x14\xc2\xdc/A3o\x17v\x19l\x1dA\xa8\xae\x9b\xa8]4>A_\xa7\x07\xf1\xc2Y8Aka\xcf\x92\x95\xc62AX\xcbp\x99\xf5\x99BA\xa3k\xf6M\xbf\x81NA\x89O\x16\x07\x8e\xc2PA\x1fo\xbe\xd5\x1f\nQA\x81R9h\x12VRA\x0b\x05\xeb\xa8\x9c\x92"A\xc1\xe2\xc4\xbf\xb3}\'A\xca\xd2\xaa\xd6\xb0<IAL\x86\x18\xa0\x15\xd7DAY+\x96\xc5\xa4;JA\xe48\xffO<\xe5FA\xa13\xafnE\xccDA]\xab\xca\xb2\xffj>A+\xad$9h\x90BA\xd0O\xbdi\xbc\xdfVAO\xa5\xb0\xaa\x16gVAd\x0f\xd2\rb\xabGA\x10\x87\x88\xcb\xda\xcbDA\x1b\xa3\r\xe3\x05DHA\xbd+\x10\xb2W"MA\xa4\xc0<d\x9a8JAcb\xf3hKHNAXn\xeb>}9SA\xe9\xf9\x0f\x8f0=QA\x01\xfe\xc2Y!;RA\xab\xc7\xbc\x0f\xadpPAJS\xf2\xe3\xace3A\xbf\x1f\xca\xe5}\x177A\xd2\x9e\x97\xf3|\x1eNA\xe8\x03\x9dvIF.A&{\xa8\x9cfGQA\xca\xf8\xde\xe2\xd6\'OA8\x8bL\xc56\x19MA\xcf\xb4\xd7\xb6\xfe\xfbBA\xba\x08\x9eT \xfb7A\xd0\xad\xebJ\xd9}.ARdo\xd2\x02\xd3?A\x1e\x03\xc0\xc7\xa3\xbeJA\x10^\x1b\x99A\x0eKAJ\x82R\x1f\xfe\x05GA\xb5\x8f\xfb!\xb7<FA\x1e9\xbb\x0crKCAs|\xa3\x01\xd7&VA\xf7f\x99M\xf2\'WA\xd4\xcae\xecr\x06IA1\x05\xeb\t4\x8eJA\x06YH\x92\xbd\xf3IA\x88\x12\x19b\xc0\xc97A\xdc\xbbG\xd9\x11LBAi\xb3z\xd2P4OAF\xfc\xb0\xd8\x1b66A/\xc8=\x90\xdb\x9e%A\xff\xe2\xa0\xbcG\xf5RAc>p\xf0\xe5\x05SA\x08#\xb7\xb4\xfe\xff0AC\nv\xb3\x96,QA)\xcbq\xef\xa5\xb0NA\xde\xb4\xaf>e\x07PA(V}\xe99\x05LA\x17I(\xc0\x96\xa8QA\xe5\xf8\x94\x05MsVA\x7fA\x9c\x1exY\x1eA\x17\x87R\xd7\\\xe7<A\xd4\xb3kw\xc7\xc08Aa`\x93\xd2\x03\x82UA\x90l\x14 @\xb4TA$\x0e\x95\xea|:TA8e\xc8\xdc\xbb\x88WA\x87\x9a\xbe\xfd\xaa\xf8WAZ\x86{\x16\xfc\xb0WA\xe0t\x1c\x85\x1f\xeeRAR\x8b)\xa5\x04\x904A\xdf\x1b\xc8\xb9`\x18SA|\x18)(g\x83UA\x1ce\x83\xaai\xdaSA>\x8bj\xd5,|@A\xf9:\xc8\xabY\x85#A\xf89m^{CPA\xb0rz]W\x86MA\xc3\xac\xf9q\xedc@A\xb3\xecq\xd7\x1bs:A\x10\\f\xcaL\x19GAM\x14\x0es\x17\xf8.A\xefJ\x07\xf3\x16\x90 A\xc4E\xe7\xd8@\xe1@A\x0bw\xf5d\xbaGWA\x87\xe5\xde\xb3\xdcOQA\x8a\xb06\xfd\xa3\x0bSAD(A\x1e\xde\xcdQA[\xe6N9\xb6\xd4UAR\x94\x03I?h-AYEb\x8b\xc0\x96JA\x11\xdc\xeb\x07\xf2,5A\x92\xdc\xe8\xdb\xcd\xeb A\x8eX\x90C\xf8\xa0UA\xc9\\!O\xd1">A\x00.\xdd\xe7\xda\xa8TA\xe4\x98j9\xf0\xacSA\xeaI\xa0\xaf\x85\x014A\xf6\x96\xc3Mh\x06?A\xd0~\'\x87\'`LAl\r\x13\xa1\xdcfUA\xec\xd3\xb7>*\x9cTA\xbaH\xda\xe8\x0b\xe8HA\xef\xeb\xc6\xde\x0fyOA\xaa\xaa\x19\xcfm\x99FA`\x08?2\xd5\xc2\x1d\xc1.\xb7\xbc\x9c\xdb~&\xc1\xcesK\x84`\xaf.\xc1\x8f\xfe.@zP#\xc1\xa4\xb7\xab\x03\x16\x08Q\xc1\x07\x95\n\xbef\xe2N\xc1\xdd\x15U\xf8,\xb4N\xc1\xac\xce\xe8\xe5g\x84P\xc1\x8d2\x8b\x06\xd7\x95W\xc1#\x99R\x9f\xa1\xd4W\xc1"\xc2\xec*\xf1.W\xc1\x19\xbd#8\t\xb8S\xc1Ck\xb3\xe7\xb0bR\xc1?\xa3\xd0\x08\x03>R\xc1\xb7\t`\xa3\x89\xae"\xc1q \xec]6! \xc1{\xa4]\xaf\xe3\x1a1\xc1\x8d\xc6\xe79\xd1\x1aW\xc1\xa3\xc5\x15c\x1d\xb1M\xc1\xb4\xf6d\xdf.\xb1P\xc1\xd2\x18\x15\xc8\xdd\xabP\xc1\xd29x\x0f\xc4zO\xc1U\xa8\x14yXlC\xc1\xf6\x9bz%+$C\xc1}0D\xef\xe98H\xc1\xfa\xceF\x01Z"%\xc1\xe0BCv_lU\xc1\x18\xcb\x8c\xbe[]I\xc1\\\xc3\xfd$s*E\xc1\xb4\xd7\xef\x13dHF\xc1X\xd5\x8aU\x96\xebJ\xc1\xc4\xf4\x0e{\x1a\x84F\xc1\xd7\x89\'\xb5\xef\xf9H\xc1b\xc51\xbf\x929E\xc1\xb0\xdf\xaf+\x8d\xe7I\xc1\x87\x06\xff\x02\xa3\nG\xc1\xb3\xd5\xbe}f\xe2B\xc1\n\xb0><i[F\xc1\xd1\xe5\xfe\xe5\xa6\xafA\xc1\x0f\xb1\xd9S\xe0ZR\xc1\xaa\xa8\x9f\xe9\x08\x9bV\xc1\xecz\xfb\xeb\xdfuW\xc1\xe1\xf0\x87\x14w/\x1b\xc1a\x02\xb1\xab\xe9\xc2#\xc1\xe9\xfc\xe4\xd4\xd620\xc1n\xa3n7\x93\xd57\xc19\xb3\xb3\xa0\x0b\xe1V\xc1\x87\xf8HG\xf4.V\xc1\x8d\xc5\xc5\x10U\x13S\xc1\xda`p[\xae\x01T\xc1\xe1+k2\x15\x8bQ\xc1j\x04\x18+>iA\xc1\xe4\xd3\xd2\xa9c\xec>\xc1\x12\xc8^n\x19\xe7P\xc1\xdbQ\x00\x06\x8b\xf4B\xc1\xa6VV\xab\xa2#=\xc1|j\\GxuT\xc1\xa8\xe3s\x95\xae\xd0I\xc1\xab(:\'K\xf2J\xc1\xc57\xfeG\xc3\xfdW\xc1#\xec\xc8*[0X\xc1QZj;\xb4\x92S\xc1VI[2\xb7`7\xc1\xac\x8bC\x17\x8a\xff@\xc1\x97\x95J>\xd5(@\xc1\x0f\x862r\\2V\xc1^(\xd1\xf7\xfb\xf9J\xc1^\xbc\xb0\xc5\xec\x84N\xc1\xd3V\x19\xd6\xf64>\xc1\x85H\x1bc,\xed5\xc1\xf6\x9f\xdd\x91lIG\xc1\xafW\xa8}"5R\xc1\x18d\x7f(\xe3\xc1P\xc1V\xbe\xf0\xbd\xa1\x89N\xc1\x1c\xb6&\rZ\xd4S\xc1n/D\xacW\xd5T\xc1\xbe\xaf\x95\x84\x949U\xc1iB\xaa1\xb1bR\xc1\x0bv\xb6l\x8f\x1a5\xc1\xa5g\xcf\xfe\x94TL\xc1 (\xbbl\x80\xc5M\xc1\xe2c\xf5JL\xc6S\xc1\x9e\xc1\xa6\x91\x08W<\xc1\xac\x14/6z23\xc1:\x13\xc1\xcd\xdf\x134\xc1X\xbe\xd5\x0bV\xd7F\xc1\x89\x93DH\xb1\xdaJ\xc1-\xb4\x7f;\xdf\xbe4\xc1\xe9\x97\x990h\x978\xc16\x11\xf8A\xebu\'\xc1\x99\xaa$\x9f\xc7\x00Q\xc1\x86\x031\xe0\xd7\xb8R\xc1U}\x9a\xaf9\x97Q\xc1Q\xef\x9c\xc9\xed_1\xc1\xbal\xc9]E\xf8U\xc1\xeb\xf6\xad\x02\xa05V\xc1\x84\xa6\xbc\x86\xc3\xb7\x1d\xc1\xdf\xb0\xe5W\xf8\xa9O\xc1~c>\xa4 \xbc\x1c\xc1[\xbb\xc1\xbd\xdb^\x16\xc1\x93V\xe5"\xf1\xa6,\xc1\xe7s\xecC\t\xa2:\xc1Z\xf6\xa4\xae\xe29S\xc1\x07\xc9T\xa7\xa7<T\xc1\x88\xf3\xde:\xabEU\xc1\xec\xcdjzA\xfeT\xc1\xcaq\xaa\x1e.\xa5U\xc1Uf\xc9\xa1Y\x91V\xc15\xdfF\x93\xa8\xa23\xc1\xda\xc4\xcf\x88|\xf2A\xc1\x8a\x14\x83\xe6\x90\x1dR\xc1\x87u\x16\x11\xe2\x07U\xc1k\xd2\x8a\x81|\xc2T\xc1%\x1cbp\xa4\x96,\xc1AbH\x80\x14 =\xc1\x8b\xdc\xf0\xe9\xeb0C\xc1\x9f\xefI]\x0c\x8a?\xc1\xdd\x14,\xa8Q\xfcD\xc1\x8f\xfdPm\x1a\xf7:\xc1\xc6\xc7\x83\xebN\x9bB\xc1\xd1\xd7Us!0A\xc1  \xf5\x9e\xc4\xeeG\xc1\x07\xd9R\xc1\xf0gN\xc1uh\xb1\xd0\xb0VP\xc1x\xfc\xf3\xde$\xf5C\xc1\\z\xaf^\x02lH\xc1m\x1b\x15\x86\xf8\xdeP\xc1\xc0\xf1\x04\x89\xe3\xc4U\xc1C\x8c+\x96\xdb-8\xc1\x8bV&\xd9\xa7\xec3\xc1Q\xdb\r=\xd1\x16=\xc1\xf6Y\xb6-P\xaf"\xc1\x93\x98\xd1\x0bB\xb3*\xc15E\xff{D\x12K\xc1`\xc1\xb1\xa4p\x1eM\xc1\x95\xd4[P\xe3:"\xc1\x8e\x814\x11\x92\xafL\xc1 \x16\x14\x19mk\x19\xc1\xf3\x94m\x9c5/7\xc1\xf6\xb3j\xb0c;@A\x01H\x0e{\xb9u7A\x04a\xdb\xcf\xe0a@A\xa837\xd2\xe2\x04NA\x86`,^\x00\x8bQA\x9e\r\x85\x0b\x7f\\$AXh\xd7\xba\xed\x84&A\xb0\xe2\xfe;\xbcC/A\xcb\x84#\x9f\xa9\x8c6A\xaa\xfe\xa4\xaeV@8A\xe25>\x88\'UDA\x84\xee\xb1\x1f\xec\x7fIA\xa9\xderzU(KA \xe0#\xc5M\x07GA\x01\x97`\x86>\x17XAW\x81\xfe\xb2u\xd1\x1dA\xa8P\xf4#\xe3\x81\x1cA\'\xfc\xd7\x92\x95\x06VA\x8a\x97\x92\x13\x7fmVA\xab#\x94\xd1\x99VUA\x8f/x\xaf\xd6!FA\xa2\x87z\xc0^WBA\xbe\xcfN\x19\xcf\x9d?A\xc9\x8db\xe6\x8b\x83<A\xb5\xa5\xe7\xee#\xd0EA(z\x8f\x97\x90\xb2BA\x9e;\xees\xa1\x05UA\xdc\x05Yy\xa0TTA"i\xcer\x0b\xd6UA\xa3FU\xa2\x92\xfeGA\n\x84\x15%\x87\xefQA\xf1\xc2\xe9\xf7\xb6\xf0PA\x13(\x02 \xd4yPAC\x851\x9c,\x85RAs\xc3\xac\xc38v\x1aA\x97\xbbq\x96\xcd\x1a"A\xa9PL\xe5\x82\xc2?A\xd4\xc1\x87\x90\x93\x0c/AS\x93\xa2a\xac3:A\x96\xe1}\xff\xe7\xf86A\xd7OG0\xc5\x0cBA\xfc\xeb\xc9U\xf8\xebVA\x01\x9f\xf1GA\x9fSA\xa9\x15\xe1\xcc\x15\xa50A\x00\x1a\xb9\x0b\xec\xc7.A\x1e\x83\x1a\x03\x8a\x1fTA\xb48\xeewJ\x8cQA\xac\xec\xa4\x9c\x9f!OA\x9b\x1b\x89_\xba\xce3A\x82x\xd0\x99\x10\'&A2\x00[\x85\x16\x90!A\n\xb5p\xe3\xb5V%AS#\x19q\x18\xbdLA\x92\xf8\xc3\x08\x04\x1dMA\x81&\xd2\xcd\xcd\xd9OA\t4c\x9f\x99\x8cIA\xe2\xff\x0f\x0c\xcb\xb2DA\x16,\xc7\xf88\x1cGA\xa1\xfbN\xce%\xf9@AV\x1d\xcc\xb7[?+A@\x9cO]ciLA\x88\xdf\xcc\xa6\xea\xe7GAZk\xdf\xa3\xdafVAm\xf2\xc8:a%WA7\xbd\xe9]YuUA\x7f"07\x8a~UA\xb4\xdc\x07\x97a0HA\xbb\xbf\x16\x04\x8b\x99FA\xac;\xf3\x87\x9eABAJ\x06\xffW\nkFA\x8d\xed\xce\x1aNPOA\x0bc\xa7\xed\xb2*OA\x06\xb8\x06\xb5\x14eQA\x17\xdc\xd6>p*3A\xbfr\x8b}o\xff5A\x17y\x0f;\xb4\x045A\xffh\x83\xf7]tJA\x9a\xccxYR\x90KA\xb1\x8cs\xf2\x9dDOA\x1a\xb6H\'\xf9\xbeOA\xa3\xbb[\xd1\xbd\xfeMA\xad7\xd2,\x0erJA\xe2P\x1c\x92\xcf\x8b\x1cA\xe8\xedz\x83\x18m!Aej\xb2>4\xa6KA\xfc\xf5]\x0b4\xfdRA\xa43\xeeJ\xde)TA\xc5J\x9d\x85\xaa\xd1RAL\xc3o:\xe4bVA\xe8L0\xff\n\xd8<A\xe4\x07p\x16\xf0\xc2;A\x8c\x03$Q{\x7fWA\xa0:_L\xb7\xf8WAm\x83\xf9\x00B\xb0WA\xf1X\x1b\xe8\x873KA\xe1\xe4\xf7\x9e\xc5\x9aNAAr\xa5\xb9\xe0\x88UA\xf5D\x90;\xcfFSArR!\x94r\x81QA\xbb\x85_\xbf$\xa0QAAq\x19\xe2\xcf\xd9RA\\\xfe\xa8\xf4D\x1aGA\xf8|\x81\xe9\xab{GAT\x10\xd3\xf8\xa6\x93WAs\xa0\xbf\x88\x85\xacVA\x7fL\xffl\xdc\xc5\x1fA\xc7J\x89M\xbey1A\x12&\x8b\xc2/`2AR\xdc\x18T\x83\x1b;A\r\xc6\xbe\xe7\xbfL<A\xeev\xf45llDA\x92,\xac\xe1\xdc?AAX\xbdY\xa4\xe6\xedAA\xcf\xaf\xb7*\x08\xbfEA\xbc\x0e\x12\xeb\x9a\x82TA\xaf(\xd3R4\x14UAv\xbc\xfe\xfdt=FA\xcaf{\xd3\x82\x9eCA\xa3\xc6\xbf\xf58\xb9\x1cA71T\xdb\x17\xa4\x18AII\x938\xcc9TAuj\x85x\xa5)WA\xeb\x08\x1d\xacM\x83TA1\xc2a\xf0\xac\x10SA\x82\xd0C\xc1\xd0"SA\x91<E.\xc3\xc4QAcn\xba\xeb\xd0\xb27An\xbbGPA\xad\'A\xc1\xa4\x9e\x8aO\xd1BA\xe4\x10_\xa2\x1b\xf9PA\x9bB\xee\xd5\x8c@CAkI\x99\xf9\xd1^3A4\xfbu\xfe\xb4\xb6DA\x99L\xde\xa4#a;A\xa4{@_\xb2\xe4NA\r\xd0W\x88\xa0jQA\x8a\xeb\xcdh\xb29KA\xa1IR\x8f~tKAS\xd8\x13\xea\xd1XJA\x00\xc6\xdc7\xe2/SA\xd2\x1f5;k\x97=A\x7fYn\x023\xe0/Am\'\xed%\x8b)$Ac\x97\x03\xd5\xd1\xcb\x1cA\xc8I\x86\xf4\xbaqIA\xc7\xa8a\x91\x83\xb0MA\x04\xb3\xbcA\xbe\xb7JA\x17P\n\xed(0NAj\x18r+y\xa6PA\xbb\'\xba\x01\xd7\x95WA\xa8~\xa9\xa7\xa1\xd4WAp\x06e\x1f\xf1.WA\xd9\xf7\xbf\xe4\x99\xb8SA\xc7v\x06\xbd\xa6cRA\n)\x9a\xda\xfd=RA\xb5@\xbe~Z\xe1"A\xb6\xab[\xab\xad\x07QA\x9fwuS\x01\xe1NA@e\xc2\xbej\xcfNA[\x0b\x10?\xc9\x1aWA\x87\xc9\xe2=[\x8fPAo\xb1l\xae\xbb!\x1dA\xb9\xd9D\x04\xe6\xca0A\xb6f\x8a\xb1\xb87IAE+Na\x919EAcKD\x05\x8b\xe7IA\xb7\x16\x0b\tc\xa28Ad\x9b\xc8\xec,#AA\xb0\xf2\xd7\x0eZ"%A\xec\x1d\x08\xac\x15nUA>\xba{\x89\xba\x03IA\xc9\x90\x85\x15\xb5@EA\xb4?\xa4=\x13tFA\xa4\x8a!~W\xd5TAk\xe7C9E\xf8UA%\xd9Y\'\x949UA\x93J\rl\x8a\nGA\xab\xd7k\x9ba\xe2BAQ\xde_Kd[FAt\xfdq!yXRA\x1f\xe2\xae>\x85\xbbAA\xa1\xaa\xe6F\xc3\xfdWA\xa2\x0b\x9b)[0XAv\xaf\x05\x8d#\x9bVA\x0ek\x91\xa6\xdfuWA9\xb3\xe0\xb1\xeaI4AP\xd6\xc1\x9a\x0b\xe1VA\xedD\xad8\xf4.VAu\xbb\xed\xb8\xec\xbePA\xa5\xd3\xb7)\xf7\x82OAQ9\xba0<\xf8<A?\xb5\xa1\xc8\x07\xe7PA\x90(\xebM\xdd\xf81A3\x0b\x1c\x9b\xa7<TA\xc5\xa4\xed*\xabEUA_\xf3\x19Q~\x17SA\xaa2fX\xdb\x01TA\xab/\xa9\x9a\xd6\xa9QA\xc6q\xf0\xf2Z\xf9BA\xd9\xd4\xd1/4:=AG\x94M\xbf\x17wTAE\x1a\r\x83\xa9\xd0IA\\\x18\xb8p=\xf2JA\xd4/\x94\xd2{,LA\x97aB\x14\x80\xc5MA\xe1\xd6\xcf^\x92\x94SAW\xdd\x13m?e7A\x9b2}N\x08\x04AA|0B\'i6@A@\x15\xf0b\\2VA&-\xc7#\xde\x7f Av\x07"<Y\xd4SA\x12r\xca\xf2\xaebRA\xeb\xba3U\x90\x1dRA=\xae=k"\xf9JA\x08J\x07?\x08\x8cNAW\x07lw\xe4h>AJwA\xb1@\x016AOEo+\xe1\x07UAE(\xf2sTHGA\x8f\xfd*]\xd0:RA\x97\xa7\xc5XJ\xc6SA\xdfS\x05\x8a\xde\xc1PA\x14\xba[\xc4:\x89NA\xd7E\xc2\x17\xf2/CAse\x10\x8b\x9a $A%\xb0z\x12\xe7 5A\xc0\x9a\xe7\x1d\xbd1;A!\xc7\xf0\x9f\xc7\x00QA1\xa9\xd1\xe1\xd7\xb8RA\x18\xe8&`9\x97QA\xd0v\x95\xf5\xca\xc84A\xba\xb3\xb7zZh9A\xf7_\x89:F\x972A\xd0\xd2W\xc5 \xbc\x1cA\xdfI\xcd\xbd\xdb^\x16A\x0e%\n8\xf1\xa6,A\x1c\xc6\xb3\xe3.%3A\x0f \x1bH_\xa4OA\xd8e\xf0x\xe29SAr \xb1u\xacq%A9rt\xfb\xaa\xde\x1aA]\x1ay\x8d\xac5VAWS\x0c\xec_\x92AAi\xc4\xaa\x8e\x05\x05=A\x1d\xe8@\xe1\xc70CA\xfbM\x9aG\x87\x89?AI\xf7[\x0e-\xfeTA^+\xc5wm\xfbDA\xdaD\x85\x0b\xc4\xeeGA\xc7\x13G\xd5U\x91VA\xad4\x0fb^\xea<A8\x1a\x8a.L\xcfAA^\xc6H\xd3\xd1\x9f:A\xeb\x1a\x93\x1a\x00\x052A\xd3\t\xff8\xd6\xf6,A\xac\xd0_sz\xac\x18A\xe1\xcbI\xe8y\xc2TA{\x9cWj\xdf#FA\xa7\xcd\xe7|)79Afm4\\\xa3\x96,AX\xd3\xa9\xce\x1aiAAY\x11,\xe3\xae\x97BA\x8fN\xb41\x82tKA\xc8\xa8\x7f\xfa6:FA\xff\x03\xdcr\xe3\xc4UA\x1d\xa1\xf5`\xafVPA\x11Q\xa3I\xf8\xdePA\xbd\xd4z\xc5\x1c\xf5CA\xee=N\xeb\xf3kHA\x82j\x87\x1c,G,A%k\xb63\xb4\xcd<A\xeb5\xe6Z\xce\xfcJA\xcf\x82\xd6\xe7\xa7\xa5UA\x94I\xa8F\x91\x19MA\x18\xc7\xdf_\x87\xf8&Ab\xa1\xdcu\xdb\x99!A\xac\xcal\x1e\x90\xafLA\xb6y\xf4\xd4\xec\x104A\x8f\xe8n\x02\xcbS0A\x05oPU\x90t7Aj\rX\xfd\x8d\xb3\x18A]"g\x90t\x0b!A\xfd\xcf\xef,l\xa2"AX\xd1\xc0\xaa\xdb\x99NA^\xeeTN\x10\xb1JAc\xb0\xc0\xbbnbLA\xb0\x8cTL\x95\xeb8A\x0f\x18\xb7h\xb7\x84AA\x16\xd1\xd7\x88\x98:PA\x8c\xd9\xc3\xb6.\x01QA\x93\xa2\x832\xce.UA{\xd5s%\x1b\xb1SA:\xbd\x82\xa9x\xceSA,\xb5\xee\xa4\x8a\xe1TAf\x8a\xd0(\xa9\xe9EA\x86\xb6X\xe7\x01\xb1\x1fA\x8f\xbc\xcd\xbf\xa9-2A\x06\xea\x9d\x8ak\xa2-A}q\xa4i\xa4eSA\xdf_\xe1\xf5\n\x00RA(,\ts\x87\r$A\xc9\x9a\x17\x15\x9c\x95PA\xff?\xdb~\xbaKPA\xf1\x97%a\xce\xc8QA\r\xea\x08r\xa6\xf3LA\x06(\xdf[$D@A\x00\xd1\x97E&\x0c8A\x9bd\xe5p)\xb9UA\x84\xa9g\xf0\x0b\x8fTA\x97\xf2\xdbb6\x91TA\x1b\xc1{`h\xb72A\xa6Qxd\xbeU A\x84\xa4)\x10t\xce,A}of\xa1\x89tPA\x07vD\xb4\xf0\xdbQA\xb6\x96\xd5\xf2!QPA\x8bV}\xd1\x1e\xfcQA\xe4\xa9\x19\xb2\x17\x19#A\x8a\x01\xd9)3q\x1bA\xb7K\\#\xa5\x8aQAo\x96\x92\xa4 ;1A\x13\xb5o\n!\x0c\x1fAR\x006\x88\xe1\x00JA\x10\xd1\xed\xdf\x87\xcfFA\xcf1\xe3s\xc3\x10EA\xa3\xa9{\xbe\x85\x14BA\xa6\xf4U\x93\xb1{AA\xdd\xe7\xad\xbd\x8c\xdaTAKt>\x8e\xe44SA\x825\xed\x8bjGTAb\x9c\xc9\xd762TA\x07\xe20=\x92\x9c!A\x02u\x16\x05s\x1bVA\xa1\x8a\xfb\xc8\xf4kUA\xcbx\xf33\xe5\x88<A\xad\xb6\n\xda\xc7\x06BA\xec\xd3\xceHv*9A$\x9a\x9d\x0e\xe2\x1aDA\xd2\xe8\x87\xc8\xd1\xa4VAPcK\xe4d\x94PA\x9684:s\x9cPA\x9c\\\x04\xa7\xb3:RA\xfe\x9a,\xe5\x80\x9eMA\xfe\x8d\x95\xb3\xdayWA?i\x82\xaa\xa18:A1F\xe5C\xd6[BA\x9b\x87#fK\xf6EA\x8e\x8cS<r\x8dAA\xe9\x05P\xb9(g;A\xfenB\xa5\x81Q=A\x04)[t\xcb\\3A\xb1\xfeD\xb9 \tMA\x8b\xec"~\x83\xb1:A\x93\xd5\xd5&\xac\xe2RAF\xc0\x1bd\xb4\xb2QAm\xe3;\x88 \x81VA\xbc\xc0\xe2\x9a<\xf1VA\t(\x0b\x1b\xd6MWA\x1c\xba2\x82\xb9\xd9PA\xdcI\xa0~\xe0\xa6HA.\xd7\x82\x0c(KIA\x12\x8c\x11\xbc|FOAi\x8aI\xe5a\x1fIA\xd1\xa4\t\xdb\x15GEA\xfa\x9bv(c\x82EA\xaa\x11\xee\xc4\x8c\x1f5A\x1a\xbd\xbc\xf0\x0c\xdfLA\xb7\xe29\xfcEr2Aj\'\xf2 "\xaaMA\x03%\r\x15\xc0Q:A\x95\xa8\xbe\x9e\x84?MAdZ\xfe\x0f\x83\x04KA/+\xef1\xfb\xbeIA\xa2%\x86\xf1\xe4dFA$\xa2\x9f@\xe0\rIAd\xc4L\xf5a\x8eIA\x08\x7fj\x7f\x06\xd8AA\xd7c7\x85\xe8lGA\xe1\xa3\xb2\xad\x86\xfeEA\x12\xf8\x9c\xce)\x18KA\x0e=\x13_EV>A.\x1d\xed\xea\x180HA\x05r\xc5A3&VA]\x8f\x0c"S\xeeWA\x89\xdct\xc7.\x9eWA\xb9z\xe2E\x14\xb3BA\x0cw}O\xcb?@A\xbf\'o\x808pSAN\x88\xbe\xac\x0f\xf8>A\xcd\xab\x08\xd6\xa5\x1aDA \xb84V\xb3\xffUAZI0\xb6\x07]UA\x9d\xed]\xd4i\xcf>A\x12\xef+\xf0\x01\x11EAKvwS\x17\x12IA\xfb\x87\x02ba\xd5\x18A>\x8e\xa2\xed9d5A5\x8e\xa5\xf3\xf0\'(A\x83\xa9\x146*\xb5&A\xa56\xa7\x0c\xacX6A\x9d\xdf\xec\xb3\xb4\xf5WA>B\xb0\xf8\x8b0XA\xe1\xd8\xeb\xdb}J;A\x08\xc0\x1f\xe9\x96o4A\xab\xf9\x13\xaaw\xeb:A\x8b\xd9\x8d\xde\xb1\x9e0A\xa9\xc3\xdf^\x89+3Az\x15Syw\x08NAjk:\x86\x91 %A\xe4\x00\x7f8.\xb6VA~}\xf1\x96\xd2\x92TAk\x03\xddEu@SA\xb8e8\xf5t\xdb!Ac\xefN)\xf5\xceQAU\xbd\x8b\xd0}\x11SA\x10\xd0\xd9\xd8+\x90#A3\xf9\xc95\x85\x961Af}v\x0f+O\x1eA;Fh\x8b\xc4\x8dUAlR\x87\x8c-\xd8BA\xdf.\x07\x92\xc0\x7fOA"\xc0\x9b\'\xb7\xfb0\xc1b\x0c\xba:\xae\xe02\xc1^yR\x06\xab\xf19\xc1-\x0b\xbb\xa6\xd3\xd6>\xc1\x80~\xa9\x90P\xe6L\xc1Qn\x8b\x0c\xe6\xcaH\xc1]dw\xbb\x11zL\xc1\xed\xc7\xceG\x12HH\xc1\xd8\xf2\'\xc7\x1e01\xc1^S\xfb\x88\r\x081\xc1\x80\x19\xce\x13^\xe18\xc1.~\xd0o\x05\xa45\xc1`\x0f\xab\x7f\x87\x0c&\xc1\xbd\xca\xa8\xf1\xa6R6\xc1v\xc7FCX\x15B\xc1\x08\x0e>\x08?\x1dG\xc1~P\x1f\x1a\x96\xbbC\xc1\xc3\xdd_\x10\xeb\xa8\x1f\xc1\x089*\xaf<h$\xc1<#\x7f\xe7#\xea \xc1o%\n0\x0e\x99W\xc1$\xfa\x873+\xffV\xc1\xd7\xb9\xd4\xc4\xd9\x07/\xc1Z\xdc\x1e\xa3\xa8i9\xc1\x13\x9a\xd7\x02\x80:@\xc1\x82\xbf\xc2\xb8\xfaVB\xc1\x19\x03\x90$\xeb\xd6E\xc1]\\$\x03\xc1KC\xc1C\xf3\xd7\xbd\xbf\x81N\xc1j\xcd\xd4^\x8e\xc2P\xc1\x80\xb9\x15\xfa"\nQ\xc1\xec\xc5Xq\xa0)R\xc1\x98\x9a\x9aG\xea\xf3U\xc16\xe9[q\x15\x15U\xc1x1\xf2\x8c)\\V\xc1\xfe\xd7\x10t\x7fE!\xc1(\xcc\x0b\xc1z\xe4$\xc1ZAZ\x80\r\x02!\xc1\x9d%G\xcc\n\x8d\x1b\xc1\xf4\x9e8y\xf2\x97>\xc1}\x1aV\x90\x1a\xe1=\xc1\x02V\x85\xa8\x8d\x1eT\xc1O\xebbE\x99\xcfS\xc1\x02d\x1b\x1f\x94lU\xc1Du\\\xf4~\xe1/\xc1\x15\xf5\xf7\x8bel\x1d\xc1\xc7\xd0)\xdf\xda\x94N\xc1\xd6\xe4\xd6\xef\xcf6Q\xc17\xf9\x94\x94d\x19>\xc1|\x0b6P\xbc\xe7B\xc1"\x1c\xfb\xf5\xf73+\xc1\'x\xf4f\xdf\xfb\x19\xc1\x08^\t$\x89\x957\xc1\xc0|?~\xa5\x99.\xc1a&\xb2\xee\x10\x9aB\xc1\xe7\xb5\x16\x03\xaa/S\xc1\xb2\xaa\r[dYR\xc1M#\xea\xc7\x84xP\xc1\xcd?48dGQ\xc1\xcd\x10\xb3!\xd7\'O\xc1(\x9b[ 6\x9bR\xc1\x82\xe0\xc9\x99v\nS\xc1YK\x91e\xd2\x9aL\xc1\x01j\xdd\xbf\x19:J\xc1\x85\xb3\xba;\x05PN\xc1|\x94\x18\x1a\xa4\xbeJ\xc1\x15~P7\xec\x0eK\xc1\xe7\x10\xb2\xf3\x0b\tG\xc1X\xe4\x86P\xbc\xe8H\xc1|\xc1\xe9\x01\xc3\xcfC\xc1\x95n\xeeh\x93\xe6F\xc1T\xbc\x14\xbe\xca\x92J\xc1X%\xaeI\xdd\xca?\xc1\xcd\x84\xaep\x95\x00E\xc1\x0c\x18>o\xdf;J\xc1,\xe0\\A\x8e]B\xc1xz\xb5\xaa\xb7\tF\xc1eo\x06?zbB\xc1\xf42cL\xe0\x8aD\xc1{\xc7\xe5\xc1&]D\xc1\x97\x92\x84\x14E4O\xc1\x87\xa3\xe3#\x16!U\xc1\xf8\xdfN\x93pWU\xc1q9\x1b\xda\xebDV\xc1\x06\xec\xef\xecJ@7\xc1UE\x07\xa4\xa2\xfa1\xc1:\x94\xfd\xef\xc5\xf4R\xc1\x87\xa1\xc87a\x05T\xc1\x04N\xe5/*\x16S\xc1P*""\x9bjV\xc1\x08\xae\xa0\x84\x97,Q\xc1Y\xb8\xd8z\xaa\xb0N\xc1\xda;jP\xd6\x05P\xc1;\xc1\xad\xce\xaacT\xc1\x81\x8f\x90aj\xaeQ\xc1\xdc\x89\x86\x0e\xc2%X\xc1Gk-\xaey7W\xc11g\xae\x12\x88\xe3L\xc1uqm3\x8d@J\xc1\xfcH\xd4\xc90\xcdW\xc1\xe1\xba\xe8\xc7IjV\xc1\xf5\x14\xaa/3\xfbW\xc1\xe3&\x00z=\xeb4\xc1B\xfc+\x97{v@\xc1\x93IAs\xa3\x92#\xc1\x81\xe5T\xfdI\xc7U\xc1T\xa9\xc9\xf9*\xabV\xc1\x91\xd0;\xbf\xb0\xd16\xc1\x11\x0c`\xab?\xa5H\xc1\xd4AY\xe0\xbb\xadF\xc1\xaa\xed\xbf\xdf-CP\xc1\xf2\xb5\xcbo*t:\xc1\x8e5n\xe5t&E\xc1\x90\xf4\xff`\xcd\x06D\xc1C\xbb\xea\xd9\xd7\xacG\xc17jq\xc5#\xe3T\xc1\xe8\x11d\x8fG\xd9@\xc1b\x00\x898(\x97T\xc1\x97o\xabY\x19Y<\xc1\xa1\xe2\x187\xfe\xcdQ\xc1\x91\x17\xdaCB\xa4S\xc13\xff\xa6d\xa1\x97J\xc1 nd\xfc\xa4o-\xc1\xbc\xcdL\xaa\xa9\x19G\xc1\x9d\xde\xc2\xd0\x1cbQ\xc1\x96h\xa9\xe6"<S\xc1\x08\x9aK\xb5\xbe*5\xc1\xb4\x94\x9e\xf5\x18\x1f!\xc1\x83u\xe4q\xca\x07?\xc1\x15w\xeb#*W>\xc1:=\xdeMH\'T\xc1`\xb8\x9c5\xe4\xd74\xc1\xc9\xaf\xb9\x95\xc8\x94\x1e\xc1U\x1b\xe7\x8aH\x000\xc1\x17\x9e\xeb\x94_^K\xc1\x06\x97\xa3_<9W\xc1g\x01Q\xab\xd8\xb0N\xc1|@z\x1c\xfb\x0f*\xc1)"R\x15\xa7\xb2%\xc1\x1d\x9b\x9d\xb9\xd01@\xc1\x9bw\xc9\x87\xa4\x0e5\xc1\xdf\x01U\xf3X\x97;\xc1\xbc\xb1o\xaa\xf1\xb1C\xc1\xa2ka%\x90|N\xc1i\x9dZw\x02\xc2N\xc1\xa0\x9c^eM\xdfP\xc1B\xef\x94@\xfe,/\xc1\xdf\xb2\xcf?/\xb07\xc1\xb1I\x9b\xbf`\xd2P\xc1\x85\xf13\xdf\x98=M\xc1\xfa>R\xe3\xbe\x90O\xc1\xaa\x05\x9e\xa5\xc6A7\xc1T/]V,$L\xc1\x13\xd1,\\\xa8\x04D\xc1\xfe~\x81\x97\xeflG\xc1\xe2\x98\xfb7O4F\xc1\xaf]\x11\xe9\xaa\x1a:\xc1\r\x04\xa3\x1fW\xc94\xc1O\xdee\x19Q\xd5>\xc13q\xf1\x95\xaf\x9dD\xc1\x1e\x80\xa1I\x9aW2\xc1b\xf9\xc8\x89 \xa8L\xc1\x84\xc5\x1b\x97"\x82P\xc1\xaa\xa5H\xf4U\xc6P\xc1\x83\x05\x94c\xcadB\xc1\xb4B\xb6\x97\xc9\x1cF\xc1\xcc\x17\x12C\xb4\xa1A\xc1R\xec\xd6\xff\x97gE\xc1\xee\x9e\xbe\x10\x89\xdcA\xc1\xa9\xe9\x89J\xc6\x809\xc1m\xa4\x00\x15\xfb\xdeQ\xc1d\xbbE\xd2\xf7\xf4R\xc1\x1a\xaa\x965~YR\xc15|\xb3%\xa45U\xc1\xbf7l\xe5f<V\xc1\xedn\xebu\x0bbV\xc1\xa3\xdf\x0e\xe9\xab1W\xc1\xffE2\x10E\rN\xc1\x90\xcc\x0c&\x80PP\xc1\x84#\xafy\xa4\x88M\xc1u\xf2\n\xdf\x12\x88P\xc1\xe9\x1c3\xaf\xf7\xee%\xc1\xef\x7f\x07\x07\xcf\xe5#\xc1\xc3\xa4\xcc\x9b\x0b\xb9S\xc1\x0b\x8b\x12\xca\xab\xe6"\xc1\x89\x815E\xbb\x13W\xc1\xd2S\xea\x93\x1cnV\xc1\xb92\x90c\x95\xf5T\xc1\xdd)\xf3\\\x17fT\xc1R\xae&\x01\x8e\x80S\xc1\x178\xf0\xcerrT\xc1\x9df\xf3\xeee\xbeU\xc1h\x13CdEbW\xc1/X\xe3MuxW\xc1\x10\xbd\x19\xcc\x80\xd5V\xc1\x7f[\xb5.+\xe6W\xc16\xea\xfcj\xdeMH\xc1\xc2\xf7}\xd3"\xf6K\xc1\xef\x9awqk[/\xc1A(\xd4\xb4\xc0<@\xc1?\x98 \x7f`\xad6\xc1\xf4\xd0HK\x1f\xf68\xc1\x01\xd9!\x89\x1d-J\xc1\x00\xcf\t\xbc\xda\x8c \xc1\x7f\xdf\x8c\xba\x18a1\xc1\xb0}\x83\xba\x06\xb7P\xc1\xd5-\x84\xa2\xac\x89R\xc1\x87<\xa0cY\x87@\xc1\xc2X\x9a\xf3c\x9c7\xc1VN\x00l\x1a\xb01\xc1\xdcG\xeb\xe2iK\x1f\xc1\x0b\xc4\xab\xae\x96\x14@\xc1\xf0\xa6o\x83\xf3cE\xc1\xa7G\xb4P\xc8x.\xc1`\x99\xd91\x0b\xca6\xc1\xb6\x85\xaf\t8\xebC\xc1\xaa\xe0\xb2\xf8\xadpD\xc1~i\xd0\xa5\xe0\xa8R\xc1\x9a8V)\xb3\xcc?\xc1_\xb2\x85\x01^9@\xc1\xb9?[Q\xd7WR\xc1E\xeas\xbe\x0c\xfaQ\xc1\xaa\xdcf4\xc4tS\xc1\xd4Uf\xc2\xa9"R\xc1h\x07\xe8\xf0\xd4\xfdR\xc1\x0e\x97(\x8ct\xe3?\xc1\xbf\xd2\x81\xcc\x99\xa54\xc13\xad\xeb\xc1\xe7\xf4\x1f\xc1+\xc7x/D\x98/\xc1\x17\x831\x9c\x19\xaaS\xc1\xeb\xc9\x1a\xdbs<T\xc1?\x89\xdeLN\xb4S\xc1\xc8\xe5\x16\x94\x13tQ\xc1t\xc5ujhfR\xc1$7#\xa0\xdcXJ\xc1\xc0\xdc\x03\xa8v\x9dU\xc1]\xdd\x91e\x0c\xb9#\xc1OU}{?e,\xc1\x90\xbe#\x89\xe2\xdd)\xc1:\xdd^\x94\x93\xe5T\xc1\xe1\x1e\x0e[\x94\xa6\x18\xc1\xe3\xdf\xb8q\x94\rN\xc1\n\x88\x14\xd4\r\xd7M\xc1<\xaf\xady\xfd[ \xc1T\xa2p`HiF\xc1e\xe3"\xb1\xcb\xd2I\xc1\xb3m\x0bC\xcd\x1fI\xc1\x15m\xbe\x17\xf2\x0fD\xc1\xf3\xa5\xfd\xe1q\x9dH\xc1!@\x9fb\xfc\xccD\xc1lF\x1a\x94\xaf\xe4T\xc1\x0c\xdd\x93\xcd\xbaX\x1b\xc1\x94<\x82\x80\x8e\x1fV\xc1\xdb2/\xd16>F\xc1\xb1\x85\\\x84\x81\xd9G\xc1f\xb8)\x9c\x7f\x87N\xc1\xe0:\xe0\x00\x85\x83L\xc1{\xe4ZPbgT\xc1#\xe2"\xecM\xb5S\xc1\x18\x1f\x11\xc4\x14,X\xc1\xb8\x98J\x15\xf6\xd0W\xc1;\xber\xdd\xc2\x88K\xc1\x13\xbeK#\x96rA\xc12\xf57\xc0\xcceI\xc1\x18M\xff\x04\x11\xdaP\xc1\x1f)E\x82VpP\xc1\x84R^1\xaa\x85U\xc1\xc8\x7f\x86\xac\x01|<\xc1\x11|\x89X]\xacJ\xc1\xe7\xdf\x90~FGI\xc1sm\xee\xc3\x82mI\xc1\xb2\xfa:\xedJ\x8e\x1c\xc1\x0cs`\xa3\xbc\xe1M\xc1c\x0f\x9c3\xf3\x8fV\xc1\xd1\xed\xaeh\xe7nW\xc1^[\xbax\x9d\xb2V\xc1U\x0c\xdf:ODU\xc1\xb63\x84\xf6i\x87T\xc1c\xb4\xe3<l\x92S\xc1\xe6*\nUd<3\xc1Sm\xda.\x88\xda#\xc1\x80\xe3\x85k\x17\xb1$\xc1\x897v\xa1/\x050\xc1\xfd\xaa\xae#\x98\xc28\xc1\xf8\xebx\x0c\x01\x003\xc1\xef\xcb\r\x97\xc3\x1dS\xc1rq\x17U\x04\x8bU\xc1\x1ae\xba\x0cd\x95P\xc1 \rp\xfd\xc3TR\xc1\xd5=\x1cJ\x1d\t6\xc1\x0b\x02\xf0\x98m{>\xc1\x16@\xf8\x1c\x165L\xc15\xfa\xc9\xf8\x94rH\xc1\xae\xaa,yH\xaeJ\xc1\xd6\x14\'\xd4\x00\x9d@\xc1+M\x83\x16\xc0\xd2D\xc1\xb1\xc3 :\xdb @\xc1\xf2\x89\xd3-\x9dmW\xc1\x8e\xc8\xaa2m~V\xc1[\x9fsw\xc9\xccD\xc1\xc0)\xc1\x8b*fN\xc1\x02UR\x9c\xac\tO\xc1,\x85\x1e\xc57&Q\xc1H<\x8d\xe3\xa3WK\xc1\x82\x9647\x98\x8a@\xc1\xc4\x90l$\xdea9\xc1U*\x15F\xdb4T\xc1\xab\xae\xf5:\xf1\xd4S\xc1\x0e\xa6\x86\xca\xd2\xb1T\xc1\x91\xb3I\x9e\xa1\x8dU\xc1w7R\x987;S\xc1\xa1\x1c\xd6]{\rR\xc1U\x9e9\xdf\x02\x0cW\xc1X\xb4\xed\xcbK\xc6:\xc1F\x1c8\x02\xbf\xc9A\xc1X\x9e\xba\t\x87\xa2:\xc1\xebi=\x9b\x90n)\xc1\r\xe4W]A\xcd\x1c\xc1\x80\xe50^h\x03R\xc1\xaf\xff\x82\x86]\xc4S\xc1X\xb6\x18\x85\xd3iR\xc1DK\xcc"q\xddV\xc1\xa6\xfa3\xa6E\xd5P\xc1~\xa7\xadN\xb1/N\xc1$\xa4\x1c\xf9\xb5\xd9M\xc1\xac\xa5r\xacL\x94W\xc1@\x0e;\xae+;J\xc1\xd4\xec\x0bo7\xffE\xc1^\xdc\xca\x94\xd9\x84I\xc1\x9d\xbdO\xc3\xa2\x08F\xc1\xa9~(\x0f/jJ\xc1\xe4\xd0T\xb2\x9c|F\xc1!?\xd3\xcf\xf0[B\xc10\x9f15\xcd\xbaB\xc1\x01\'\xecgC\xb0 \xc1X\xf4\x8ew\x95\xb8\x1b\xc1f\xeb\xec*[m0\xc1Z\xa0.{\x87\xc8M\xc1\xbeV\xd4\x00\x9cUK\xc1M\x05\xa1\x04\xac\x196\xc1a\xad\xe7T\x0c9&\xc1\xdf\xce\xc8\xd5\x94\xd63\xc1\xc7/,\x04:P<\xc1\r\x1f\xc0\x13\xe3HJ\xc15\x9e8_\xc7\xf8W\xc1I3m\x83ChJ\xc1\x9d\xb9HsL\x9dE\xc1\x8d\x11\x15\x01\xc3\xb17\xc1\xbc\xbf\xce$\x8f\x9eP\xc1\x9b\x8d`\x96\xa6\x7fM\xc1\xe2\xc5#\x15\x07\xa8P\xc1H\xa7\x12\xb4u\xe4 \xc1G\xed\xc9\xc5\xa7\xba1\xc12W\xfeq\xf7\xf2N\xc1V\xa3M\xe9\xd3dA\xc1\xf6F\xe1\xdaF\xb1U\xc1x\x86\xb6\x9a\xc0GN\xc1Tk\xba\xce\xc6\x883\xc1\xe1\x14\xc4\x88\xc4\x93=\xc1\x7f]\x99\xd0p,=\xc1\xfc0\x14\xd8xp1\xc1"\xa2AC\x0e\x08%\xc1\x1df;\xf2\x90cA\xc1\xae\xfb<\x1cF\x1eI\xc1\x92\xca7Dz\xebU\xc19\xc3\rPjRV\xc1\xcdv ^O\x9cE\xc1\xd8\x9f\xc6\xfa\xa7G@\xc1R\x9e.N\xe4oC\xc1v\xb5(^Z`,\xc1E\x1d1y\xd9\xc8)\xc1\xa3\xda6\xc4GuO\xc1D\x94\x8c\xd2$\x14\x1a\xc1\x01\xc7\x08\xf9>\xa9;\xc1z\xa8\x9b!A1#\xc1igG\xce\x02IU\xc1\xfc \x1bRqGR\xc1\xdb~\xcc7\x84\xecT\xc1w\xbb\xbb`)\xd7.\xc19\xb5\x8f\x03\xaf\x96H\xc1\x14>\xaaO\x11"M\xc1s5\x91#\x9f\xf8M\xc1?l\xf3\xce\x84` \xc1^R\xc9X\xe6\xf7S\xc1\x11\x9c{\x1e\xe2\xd2B\xc1\xb2\xa1t\xd8n\xe6I\xc1\xee\x87\xc0\x90n\x16F\xc1\xe1\x9a\x00\xc7\xac\xaf@\xc1{[\x82\x9c\x19\xe5D\xc1\x96 `t\xbd\xf6W\xc1\xc8\xacf\x80\x9b4X\xc1\x1a\xad\xcb\x026\x18S\xc1\xc7\x94hGf\xb3P\xc1\x80\x10\x10\xb7\xfe\x10H\xc1a\x8c(Z\x1csG\xc1e\xeb\xb3\xffJ\xa7Q\xc1\x05\xba\xa2\x9a\xc7t"\xc1V \'\xcb\x1a\x04(\xc1\'\x8f\xfa~\\`7\xc1Q\x82i\x99\xcf<0\xc1\x94\x97u\xd6\xadw7\xc1\xb9u\x99\r\xd7\xf1Q\xc1\xb0\xd0\xe9DH\x9cP\xc1~\xca\x04mI\xaaR\xc1-\xdcg\x0b\xb4\xca\x1f\xc1\xaf\xde\xfc\xa9\x058T\xc1\x93\x84\xce>\xc3m<\xc1\x1a\x0f~\x9b\xfe\x1b7\xc1\xd98\r\xcdG\xe6A\xc1\x18\xb9\x05\xfd_\x9cP\xc1`l\xd09\t\xe3L\xc1;\xfa\x9c[\x04o1\xc1\xe2Zk\xaf\xfbJT\xc1'
+p62
+tp63
+bsS'x'
+p64
+g9
+(g10
+(I0
+tp65
+g12
+tp66
+Rp67
+(I1
+(I1286
+tp68
+g31
+I00
+S'\x01\x00\x00\x00\xb1MXA\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xb1MX\xc1\x18\xf1z"\xec\xce\xfa=Tq\x0e0\xce_\x91@Tq\x0e0\xce_\x91@v\x07}\xbb\x9b+XAh\x10|\x86\xbb\xc5WA\xf8\x08|\x1e.\x1dWA\x04b|D\xcc3VA\xb5E\x0f\x8f$\x0cUA\x897B>t\xa9SA\xb9\xa7\xde%\x9e\x0fRA\x04l.\xc7\x1fCPA\xa1\xc7}q\t\x92LAr\xcd\xe4\xfe\xb0MHA\xe0\xa1X\x03.\xc5CA\x85\xa9\'\xf9n\n>AN\x9bq\xdf?64A}i\xf7.\xc0R$A\xca\x83\xc10\xc0R$\xc1\x10~k\xe1?64\xc1Br\t\xfcn\n>\xc1\x82\xce9\x05.\xc5C\xc1*\xe0\xff\x00\xb1MH\xc1\xffi\xd1s\t\x92L\xc1\xdbI\x80\xc8\x1fCP\xc1\x1f\xdf\x0e\'\x9e\x0fR\xc1\xff\x97\x1a?t\xa9S\xc1\xaa\xe3\xaa\x8f$\x0cU\xc1\xca\x7f\xe7D\xcc3V\xc1\x17\xf7\xb7\x1e.\x1dW\xc1I\xf2\x96\x86\xbb\xc5W\xc16\x0c\x83\xbb\x9b+X\xc1v\x07}\xbb\x9b+X\xc1h\x10|\x86\xbb\xc5W\xc1\xf8\x08|\x1e.\x1dW\xc1\x03b|D\xcc3V\xc1\xb5E\x0f\x8f$\x0cU\xc1\x877B>t\xa9S\xc1\xb9\xa7\xde%\x9e\x0fR\xc1\x03l.\xc7\x1fCP\xc1\xa4\xc7}q\t\x92L\xc1t\xcd\xe4\xfe\xb0MH\xc1\xe1\xa1X\x03.\xc5C\xc1\x88\xa9\'\xf9n\n>\xc1P\x9bq\xdf?64\xc1\x83i\xf7.\xc0R$\xc1\xc5\x83\xc10\xc0R$A\r~k\xe1?64AEr\t\xfcn\n>A\x81\xce9\x05.\xc5CA,\xe0\xff\x00\xb1MHA\xfei\xd1s\t\x92LA\xdaI\x80\xc8\x1fCPA\x1f\xdf\x0e\'\x9e\x0fRA\xff\x97\x1a?t\xa9SA\xa9\xe3\xaa\x8f$\x0cUA\xca\x7f\xe7D\xcc3VA\x17\xf7\xb7\x1e.\x1dWAI\xf2\x96\x86\xbb\xc5WA6\x0c\x83\xbb\x9b+XA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00t\x881C\xf7j\xc6=8L\xa3\xf7\x86K\xd6=\xcc\xfe\xf7\xf1\x84\x91\xe0=q\x9an\xd6\xcd\xce\xe5=^0\x95#\xec\xce\xea=_i,c\xd9\x83\xef=h\xa4\x1e\x021\xf0\xf1=\xa3g\x151%\xec\xf3=\xb82T\x8a8\xb0\xf5=\xdap\x00\x14w7\xf7=\xc9Xgr\x97}\xf8=\x8e :\xee\x06\x7f\xf9=\xc9\xa4\x16z\xf38\xfa=\xddK\xb0\x9bS\xa9\xfa=Q\xa8\xa9\x9bS\xa9\xfa=\xa2\xfd\xf8y\xf38\xfa=8\x05\xf8\xed\x06\x7f\xf9=\xd20\xf1q\x97}\xf8=\r\xc9T\x13w7\xf7=N\x85e\x898\xb0\xf5=\xb2\xd5\xc5/%\xec\xf3=/\xf4\xa9\x001\xf0\xf1=\x97c\x9b`\xd9\x83\xef=\x8d\x8eB!\xec\xce\xea=[\xd6[\xd4\xcd\xce\xe5=t\x15a\xf0\x84\x91\xe0=\xfeEu\xf5\x86K\xd6=r78A\xf7j\xc6=\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00v\x07}\xbb\x9b+XAh\x10|\x86\xbb\xc5WA\xf8\x08|\x1e.\x1dWA\x04b|D\xcc3VA\xb5E\x0f\x8f$\x0cUA\x897B>t\xa9SA\xb9\xa7\xde%\x9e\x0fRA\x04l.\xc7\x1fCPA\xa1\xc7}q\t\x92LAp\xcd\xe4\xfe\xb0MHA\xe0\xa1X\x03.\xc5CA\x85\xa9\'\xf9n\n>AH\x9bq\xdf?64A}i\xf7.\xc0R$A\xc5\x83\xc10\xc0R$\xc1\r~k\xe1?64\xc1Er\t\xfcn\n>\xc1\x81\xce9\x05.\xc5C\xc1,\xe0\xff\x00\xb1MH\xc1\x01j\xd1s\t\x92L\xc1\xdbI\x80\xc8\x1fCP\xc1\x1f\xdf\x0e\'\x9e\x0fR\xc1\xff\x97\x1a?t\xa9S\xc1\xa9\xe3\xaa\x8f$\x0cU\xc1\xca\x7f\xe7D\xcc3V\xc1\x17\xf7\xb7\x1e.\x1dW\xc1I\xf2\x96\x86\xbb\xc5W\xc16\x0c\x83\xbb\x9b+X\xc1v\x07}\xbb\x9b+X\xc1h\x10|\x86\xbb\xc5W\xc1\xf8\x08|\x1e.\x1dW\xc1\x04b|D\xcc3V\xc1\xb5E\x0f\x8f$\x0cU\xc1\x897B>t\xa9S\xc1\xb9\xa7\xde%\x9e\x0fR\xc1\x04l.\xc7\x1fCP\xc1\xa1\xc7}q\t\x92L\xc1p\xcd\xe4\xfe\xb0MH\xc1\xe0\xa1X\x03.\xc5C\xc1\x85\xa9\'\xf9n\n>\xc1H\x9bq\xdf?64\xc1}i\xf7.\xc0R$\xc1\xc5\x83\xc10\xc0R$A\r~k\xe1?64AEr\t\xfcn\n>A\x81\xce9\x05.\xc5CA,\xe0\xff\x00\xb1MHA\x01j\xd1s\t\x92LA\xdbI\x80\xc8\x1fCPA\x1f\xdf\x0e\'\x9e\x0fRA\xff\x97\x1a?t\xa9SA\xa9\xe3\xaa\x8f$\x0cUA\xca\x7f\xe7D\xcc3VA\x17\xf7\xb7\x1e.\x1dWAI\xf2\x96\x86\xbb\xc5WA6\x0c\x83\xbb\x9b+XA\x89\xb5\x16\xca\x91:S\xc1\xf7x\x17\xe8\xa2\x84T\xc1(\xd4\x82\x97S\x0fS\xc1Ax8\xae\x976T\xc1\x10\xebI\xf3\x9c1Q\xc1\xd6b/BQHQ\xc1\xe0\x8aoD\xe1\xccR\xc1HB\x9e"\x1f\x8aR\xc1\x1a\x1aPF9\xfeP\xc1\xb9\xd3\xd8|\xf4\xeaP\xc1PD72\x02\x1d#\xc1r\x80u\xba&\x15\x1f\xc1\xafF\x88m\xd2\xce/\xc1\x84G\xb8\x95\xdc6T\xc1\xf5\xf5\xb8@\xb0\xd9W\xc1\x84h\xa3@\x96;2\xc1\xd3\x8e\x93+\x02W$\xc1m\xad\xd9z\xf8\x8f!\xc1\xcb\x9c\xa6\xd9\x1c\xf0U\xc1\xd10S;\x010U\xc1\xc1\xc4\xa0\xb8i\x0fU\xc1o\x9e\x93\xf23\x86T\xc1\xd6ik`\xa9\xafS\xc1\xfaas`\xf8\x1dU\xc1\xdb\xee%\xdeH\xe9\x1c\xc1\xa9\xd9\x93AfnJ\xc1?\xad\xd2y\xcf O\xc1\xb7\x03\xeaRN\xd0W\xc1\x84\xb9\x9c0\xc1)X\xc1\x1a\x08\xfa\\9DK\xc1\x0f9\xea^\x96\xb6H\xc1[\x13\xd7d$\xffK\xc1pBE0\x08VV\xc1\x03\xb0\x89S|\x1eN\xc1\x1cO\x08\xf7\xac\xb4M\xc1\x9eU~J)\x81J\xc1\xdb^\x85#\xd6\x87J\xc1\xdan\xea\xbe~\xfbA\xc16ba\nA=:\xc1\xa9\xdc\x85\x0e\x9b{C\xc1U\xb0\x17yn\x91H\xc1\xa1I\xc1\x1eHjG\xc1\xdc\xb1\xa2\x91r\x9cK\xc1\x88:\xc6\xd3\x1e0C\xc1\xb1G\xbfr\xa7W*\xc1\xef\x0f1\xa8\x82\xb8\x1d\xc1\xee\x97\x0cR\xb5\x0c?\xc1ZO\x88c\xfd\x8aB\xc1\xdf\xd5\x14\xdc\xd3M2\xc1\xb2\xc1\xc3\xf2\xbc\x957\xc1\x8d\xb4\xca\xccPj=\xc1\xca\xdf\xe1lO\xa1R\xc1}\x9c\x82>\xdc\x13T\xc1\xfb\\\xf67\x14\xcaR\xc1,W}%{\xf9J\xc1i7\x95\x99t\x15O\xc1\x93\xd0\x8cn;\xf0N\xc1\xabn\xc4\xcb\xd3/Q\xc1RNG-\xf7k@\xc1\xc8\xd3@~\x16\x8e5\xc1\x11\xb7M/\x8b\xc3P\xc1 \xca\x16\xa0d\xe2/\xc1\x0f\xb5\xed\xc0XjF\xc1\x93\xe4Y\x98\xe5\xcdI\xc1\x9a\xc9\xd1d]l<\xc1\xcf\xc8\x02\x0f=\xb7>\xc1\xf6+Y\xf1\x06\x11W\xc1g\x9d\xd3\x02s_W\xc1\x18\xa9\xe9\x8f\x89\xf96\xc1\x84\xc3\xbd\x01\xadcN\xc1\xfatP\xb8\x95\xceJ\xc1\x9dA<\xbe\xa1\xb2N\xc1\x12S\x06\xec\x13\x06#\xc1\x15\xea\x8b\x04+\x9e0\xc1F\xeb\xa6C]\xfa9\xc1\xbd\xe3ba\xcf\xac3\xc1\x95B\xd4\xe9\xc5\xc8S\xc1\x95\xc4^CD\xe4P\xc1\xad\xe8\x95y\x1fa$\xc1\x80P\xe7\x161\xe8O\xc1\xc0T~ 31N\xc1\xf3\x1c\xfeM*fE\xc1\x974\x1f~\r\x11#\xc1\xceD\x97\x82\nC\x1d\xc1\xb6\x8e\x18T2\xf85\xc1\xccZ\xe6\xcc\xfax%\xc1\xecn\x7f\x1fV\xc8G\xc1\xd2\xa9\xe0\x07\xad\x8e$\xc1\x82\r\x9a\x98\x8eK!\xc1p\x14\xaf\x83\xc6\xb73\xc1\x9d\x01\xf6\x034\xc73\xc1\x9dPi\x12v15\xc1\xb6\x18\x8e?&\xa8>\xc1\xb3\x10\x1a\xc9c\xe9.\xc1\x9f\xe8\x15\xa5\xfaE?\xc1\xe0\xee\xfc\xdf\x7fjD\xc1\xd1\xe6\xba\xac\xf0_A\xc1B\x9d\x98\x0c\xfc\xba@\xc1|\xac\xb8\xa9\x11\xdbE\xc1s\xa1\xa9`\xd5-7\xc1\xcbv\xf0\x91R\x04.\xc1\x9d)R\x82\x11F0\xc1m\xe8\xb3\x0b\xbd\x1fF\xc1V\xf9%\x90\xba\x7fU\xc1\xaa>\x1e\'}5B\xc1uKT\xd1\x15E5\xc1\xec|\xbb\x97\xdf\x8c;\xc1\xc5J\xcd[\x08\xa8F\xc1\xea\xd8e\xcfQ\xb1U\xc1\xc1+c\xb3M\xc1>\xc1\xd8:\xc6G\xc0\xc5B\xc1\'\xab\xf5Z(\xfaU\xc1H\xba\xd6\xe1cGW\xc1\xd7\xa2\x94!\xc5GU\xc1HO\xbfh\x10uD\xc1K+\xee\x91teF\xc1\xf9Br\xa6\xdc\x9cB\xc1\xef\x9c\xdb]U\xf97\xc1\x11Z\xa2\xb3\xe5\xdeP\xc1_\x04\xe88j\xeeM\xc1rKCo\x05}@\xc1\x93C)=&(D\xc1&\x1f\x1e\xee\xb1>V\xc1\x05\xdf~\x18\xdc@T\xc1]\xf3{\xfb3{V\xc1\x0b\xfbZ\x80\xfe\x05W\xc1\xc8\xc2A)\xbd\xf3E\xc1A\x92\xf9\x92\x17SQ\xc1\xb6)X\xc0\xa0\x8fG\xc1\x9f\x18\x1d\xbacmK\xc1)\x92>#\xdd\x03R\xc1L{\'\xc5Z\xb1V\xc1\xb4\x07\xfb\x94z?R\xc1F\xfe\x9b\x07{\xd3C\xc1\xdf\xe5\x8fx\xd4WI\xc1(\x87=\xa4%\xbbR\xc1\x88?\xed-\x97#Q\xc1+\x8fp\x1b\x9bTR\xc1\xadh\x1dl\xc9/X\xc1\xb33oe\x12\xe2W\xc1"k\n\n\x92\xf5W\xc1\xf5\x84\x19\xd2"ZW\xc15\xf7bi/\x00M\xc1\xeb\x07\xd9\x9f\x16\x1eP\xc1\xd7u\xce%0\xe5M\xc1h+\x9cl\xfc\x12P\xc1N\xcb[\xaf[K"\xc1\xf6\xdc\xd4\x0f-8/\xc1\xa7\x1a9\r\x00\xc82\xc10\xed\xc4\xd5\xf3\xf6E\xc11\x02\xf99\x02\xdeI\xc1\xf2\xe4\x91A\x8b}F\xc1\xbb:\t\x95UjV\xc1d\x9cE\xb0\x05LU\xc1\x10$\xda\x9e\xfalU\xc1\x94\x85\x17\xe4"\xfc9\xc1}X\xa6m\xb7\xdbR\xc1f\x9a\x12\xe3\xdb4Q\xc1*\x06\x9d\x0f\xe3\x8eQ\xc13\r\xdf\xc8c\x84Q\xc15\x12\xbdY!\xecU\xc1\t\x0b\xea\xdf/\x87U\xc1\xed\xda\x87\x17>\x9cT\xc1B\xeb\xde\xc3G\xe9\x1c\xc1\x9f~\x8b_\xe2pF\xc1\xe0.Q\x1aF\xe9R\xc1\xe8\xf9\x97Z\xa3\xdbS\xc1\x89\xf8U\x8d\xb2\x97R\xc1\x9a\x95\xc4\xe8\x84!T\xc1\xd0nT\xebGpU\xc1\x91\xc7\xb2Zx92\xc1F\x9dD\'\xecT$\xc1\x89\xber\xc8E\x8e!\xc1\x03\xaf\xb7\xa9s\xecM\xc1|\xe7Cb\xa3\xb4M\xc1\x0c8\xba\xf5\x18tJ\xc1\xf6\x81\x8f\xdb\x99oJ\xc1\xdd\xbf\x9f\xd9\xfaSO\xc1\xdd\x87\xd4\xcb;&A\xc1\xf2\x98e\xfc\x10n8\xc1\xabgJV\n>T\xc1\x1c\x162\xdf\xcd\x8cR\xc1\x11\xd8\xae{\xbc\x1aT\xc1lA\x9ak\x8dnW\xc1\xf15\x1d\x8f\xda\xb1)\xc1{~\xb2Yz\xf2!\xc1\xcacD\x12^OL\xc1\x80\x15:\x7f\x84\x00K\xc1\x82\x86\x10\xe7@\xd3O\xc1!P\xbf@\x00\x94V\xc1\xec\xdcV\x16\xf4\x94V\xc1\x88\x81\x9f\xd5\xa2&J\xc1\xe6F\xd6\x11\xc3oP\xc1\xedmp[\x8f\xd4N\xc1\xa8]?\xd5\xc5IH\xc1\xbb\xff;w>eF\xc1\xc7\x07w+\xd4\xcdI\xc1\xb2^\x1a&\xf1\xff\x1d\xc1TA\x1fgpV\x1b\xc1\xe5\xad:W\xcd\'I\xc1\x9d9\x11\xf0\x05q#\xc1\xeb\t\x97\xa6\x0fk\x1f\xc1\x1a\x0c&\xaf\x80$0\xc1\x81\xe3dT\xcd\xb67\xc1\xe9_\xb2\xcd\xabIN\xc1\xbby~\x197HJ\xc1\x9df\xdb\xacl::\xc1\xa82\x81v\x90n4\xc1\x15\x0c\xe8_\xeb\xd1P\xc1Tc\xa1\xfa\xca\xe2L\xc1\xae]W?T\x07G\xc1\x9dS\xfba\xcd<E\xc1\xa8c\x1a\x98.{;\xc1pA\xebLw\xa10\xc1\x04\x1a\x94\x00R\x897\xc1\x8eF\xa5\xc3\x93]B\xc1\x88\xc1[U}"W\xc1s\x0b\xe4\xfa\xc5\xd85\xc1\xad\x12\xf5\xefnx%\xc12,e+\xe5\x19B\xc17\x9e\xde\x82e\x17V\xc1\xa1\x1a@\x9c\x19oV\xc1\x94w\x90\xb1\x9bv?\xc1\x18\xcb\xafka9T\xc1N\xc2\xf9b\xa6SS\xc1c\xa4\xc0\xc5\x0f\x11G\xc1\xe9\x90\xcd\x84l~J\xc1.\xa4%\xd6\x08\x19J\xc1Gae\x81\xad\x8e$\xc1_\x83\xf8\x03\x92K!\xc1I\xfd\xcdG!\xcb3\xc1\x12o\xe0\xda|\xf5M\xc1\xdc\x80r\x08\x86\x121\xc1\x82\xbc\xc5;\x99\xf3@\xc1\x1e/\'\xa7\x94/N\xc19\xf7\x81\xa1\x8b.5\xc1)\x8b~V\xd5-7\xc1\x8fV\xe9\x91R\x04.\xc1\xb7\x8a\xb8y\x11F0\xc1\x14\xfa\xb9\xdcy[U\xc1s\xd9\xa5)F\xee2\xc1\xe6\xd3#\xe3\xb2\xe7 \xc1w\x00H^\xdeN\x1d\xc1\x19\xcfY\xc1\x89\xc5D\xc1l\xf2\x88WjUD\xc1\x1f\x15W\xf6\xf9h;\xc1Up}n\t\xe2P\xc12\x13\xdc\xfd\x1e\x03U\xc1O\xb9\x83\xb2q(<\xc1\x9d\xac\x071\xa4U>\xc1E;\x98\x9a\x15\x88B\xc1`X\xe1\rM\xf97\xc1\xd4N\x83\x8f\xf1BA\xc1\xd8.\x17ED\xb7@\xc1\xae\x8b\xc9\xf9[\xd4E\xc1\xc8\xd9\xcf&|\x17F\xc1\x95\xff\xa8\xed\x96DS\xc1%9\x08S_6R\xc1\x0f\x8em\xf9\xef\xf8S\xc1\xb6\xe1j\x9e_2B\xc1\xa6r&\x8f\x1e\xe1R\xc1\xa7\xb0\x1f\xf8\xbd\xb5>\xc1BZ\xfc\xc2\x0fB5\xc1\xd7\xa3{\xaa\xb5\x88;\xc1Q\x07\xae\t\xbc\xc5B\xc1\x1f\xf2\xf5\xe9\xcdl@\xc1j\x02\xce\x04\x82vT\xc1zC\xc6F\xcb\x83R\xc1\xf4:\x18\xb0\x9f\xa8Q\xc1V\x99\xedm\xc1\x97?\xc1\x9f\xf9g&\xcbWD\xc1`8\xeb\x1c\xd1\x11Q\xc1\xb9\xae\xb8\x141\xa2Q\xc1\x01L\x01\x93\xe6\xc2P\xc1\xb6\xd9C\x1a\xec{@\xc1?\x87\xd7GY\xa0F\xc1dX\xa4\x8b\x95\xc3C\xc1{k\xd5\x83\xaa91A\x9a\nw\x930\n%An\x9a\x1dv+\xde\x1dA4w\xf6\x00\x83\xe1RA\x10\xd4\x9f\xfc\xc5\xa2PAl=/)\xa7\xaaIA\x1eg\xd2\xd3\x98sDA\x9b\xa3\xfa\xe6\xb0\x97VA\x10NH\xc2e\xa8UA\xe5\xdb \x1f\x82^VA\x1c\x1bI\x1d\n\xd7!AC\x11T\x92v{TAG\xf3~lVWSA\xbf\'\xea\x10\x1d\xabTA\x18%z\xf4R/%A\r\x11\xcb\xc2\\\xb68A=\xe2\xa3\xae@\x8e@A\xfe\x9d\x94\x8d\'\xc6BAd\xec8{\xc2RBA|\xff\xec\x17\xf2\xbaFA\t+\x98\x1cVmBA\xdc\xcc\x8cIn0GAo\xef\xb9\xa1\xf2\'CA\xf1NE \x92\rIA\xee\xd3\xd2\x8b%aUA\x02\x18\xd33\xb0\xbcUA\xf9\x7f\xef\x9b\xa1\x8a8A\xcd\xae\xda]M\x911A\x01\xee\xf5\xd4\x07\xc6/A\x19Z\x8a\x95\xce\x99&Am\x17\xb0\\\xbb"NAs\xd8\xcb\xec\xdf\xb2PA\xd4\xb5V\xf0d\x1ePA\xb5h\x03\x18\xe9-NA\x19\xe9$?\x9c\xa0VA\x85s\x1eM\x9dGWAc\x9b\xbdK\xee\x86UA\x0fL6\xb1}\xe3WA\x94\xb8\xb7BHAWA8a\x03\xc3\xd8D5A 4\x06c\xf1bVA\xcf\xe5\x03\xad\x01\xa7=A\x93\xbaI+TfLAJO\xf0tS3=A /\x8201\x912A\x86\x98,\xce\x9f\xbfIA\x9e\xeeB\x884 !A&=\xeckV\x16#A\xd8ZO\x18\x87\xc0TA\xf6\x98\xf4\t\x1f\xb9UA\x12\xe8\xab.[@QA\xf7\x80\xd9w\xe4\xacNA\xfd\t\xfe\xf3m!IA\xb7L\x16z_>EA\xb6\xf6\xc6:s\xc8EA\xc0\x91\xa8\xe6K\x8fHAe\x9f\x00\xaf6GJA \x84\xba\xc6\xa5\x8eFAO\xc37\x85z\xe5JA\xb0e\xcf&m\xb5 A\x00]\xbcW}\xd9QA?\x80s\x1f\x16\x8fSA\x8c4?\x7f\xc2\xfa=A^V\xd4\xdd?\xfa5AD\xf4kY\xeb\xf4>Al\xd3A\x9a\x06\x11CA\x02\xcf\xd3x5@RA\x87.\x06\x14pcLA\xee/\x02x\x94SNA\x94\xe16\xac\x98\xd5OA\x98\x13\xf3\x87\xaePOA\x02\x8b\x8c\x0fb1MAr\xc6Wo\x06DJAc\xee{|\xdaAWA\x88hF\x80\xc5>BAC\xb3\x8a\x81\r\xb5FAA<\xe0\x8b"\xc2CAe\x1d!\xaa\x97\xbc=Az\xf0\xe8>\xa0PAA\xddXm\'\x85\xee8A-\xd0\xf9\x8c``3A\xe33\x81G\xb6=6Aow\xca\x85\xbb.XA\xbe7\xef]6\xe0WAl\xb8\x040]\x0bQA\x1a\x93\xff\xa4\x05\x06\x1cA/\xdd2\x82j\x88 A\x10\xbc@\x98/~0A\xb6\xa0\x98J\x95H5AG\xa2W\x10\xab\x84TA\xfb\xcfqV}\xa7<A\xc5\x8c\xa4\xee\x04Q\x1dA\xa4\x92s\x81!`\x16A\x9dC>>e\xa9,AP\xccj\xff\xf9\xcaOA(\x8f,\xd2h\xefQAG\x9e\xd7\xd5\x17\xbd A\x92\x93t\n\xaa\x03;A\xf3\x03\x15\xc9\xaee9A\xb3W\xd67\xf6\x7fAA9"\xb9\xfa7MBA\xf4Y^-9\xfc<A\x0b\xad\xabY\xadC4A7\xe7\x8bpE\x905A\xdc\xe9BU\x052"A~h-\xa3\x92\xd7RA\xe5-V\x8a\xaf<RA\xa4^\x0bgG1PA\x1e\xa4\x07UP\xc2PAc\xfb\x83F\xbbFRA\xe3}T\xb5j\xdf0A\xda\xe2\xe8Dc\xfdRA\xe7\xd2\x90\xd7\xb56QA\xcf\xbf\xe3;\xe3\x9cQA\xb1\x8c\x84?y\x8eFAq\xe5t;t]FA\xfes\x8fp\xb8\x83UA\xb1>\xf7\xe4(\xf5TA,\xcd6\x80\x9d\x03-A\xf3hN\xeac\xb0\x18AK\xc9\x99\xe8\xf7\xbf@A\xd9\xd8I\xf9\xf9B-A\\\x94\x95\x8d\xb7\x9dCA9\x80\x01\xca\xc7\x9fEA[\x83\xac\x95\x85\x91HA\xf5\xf69g\x03\x8eLA,\x9f\xd7D\x91\x94SA\x01e]|q\x18TA\x83\x13\xa9\xc8S\xc0:A\x99\x9f{y\xb701A[\x11\x01\x12\xb5\x17TA{;M\xb5]\xd5KA\x9fD@\x89h\xc9RA\xf1P\xa4y\x81\x98MA\xd8P\x8e\xc4\xcd\x93JAl*\x81\xee\x93\x92FA\xc3\xff\xd3\xa3\xb90\x1bA4\xb9\xec\xaeU\xaf-A \xafU\x99x;LA\x8a\x0c\xe4\xe7Z\xf2JA\xf6\x06pd\xfa\x86VAM[\xf7\x85\xe3\x9bV\xc1\xf2\xaa\xe3\xa1,wW\xc1\xa3\x04\xe9\x97l\xd2V\xc1\\"N\x9c\x10KT\xc1\x9f\xf5L\xf8\x99\xe5R\xc1\x18\x9e\xa9\xe1\xc52T\xc1\x90?D\xe3c\xfaR\xc1\xfd\xe4\xc9Ry\x96Q\xc1\xa6/\x87e[K"\xc1\x80.\x18\xe6)8/\xc1\xd3\x95_\x1f\x01\xc82\xc1~\x92\xf9 \x02\xf6E\xc1\x8ax\r\xe6\xae\xddI\xc1\x7f\x83\xc7\xfe\x9b}F\xc1\x86\xc3\xcaxy\xbdU\xc1\x8fAA\xb6\x83\x08M\xc1\x9b\xff\x10+\x99\'P\xc1\xf3\xe3\xbc\x9b\xfd\x02N\xc1w\n\xfb\xdb\xc1\xfc9\xc1\x02\xd3\x86y\xc5\x1fP\xc1]\xeai\xbbt\x93T\xc1\xc5\x15i\xf9aqT\xc1\xd5\xe8w\x8cr\xec0\xc1\xf0t\x8fT$U$\xc1\xb5\x83q\xbed\x8e!\xc1\x1bJL\x0f\xf2oW\xc1\xcf\xcfpC\x86\xa2V\xc1\x8e\x17c\xf0G\xe9\x1c\xc1\xb11\x03m\xa9kF\xc1w\x9fc\xfa/\x06S\xc1\xc1t\x9d\xd6>\xfbS\xc1G\xcc\x1c\xc2@\xa9R\xc1\x01\xc1\xce5~\xa10\xc15\xfc\xa7V\x89\x121\xc1\xa5B\xd1t\\\x897\xc1\xd2\xde\xc3&n\xecM\xc1\xd0\xd8\xa1\xf5\xac\xb4M\xc1\xce\xa0\x95F\x1dtJ\xc1n%\xcaj\reO\xc1.\xaaG\xa6\xfe~J\xc1]\x1e\n\xc6\xf1\xff\x1d\xc1\xc8\x8dYEqV\x1b\xc1i+R\x0b\xf3%A\xc1VL\x8ft\x15n8\xc1\xb1\x15HUf\x0fW\xc1Q<\xe4\xbb\xdb\xb1)\xc1\xd0\x0ef7\x7f\xf2!\xc1\x9a\xae\xb3"\x8c*Q\xc1\x14\xa1\x1f_\xdd\x9bQ\xc15\xb5\\\x90\x99\xbfV\xc11C\x12\xc0\xcc&J\xc1zx\xca\x94\xd2\x90W\xc1\x91\xf8\xcd\x18\xba\xe7 \xc1h\xf3\xbd\xae\xeaN\x1d\xc1a\x84\x11\xbc\x95PL\xc1\x1e\xf5`\xd2$\x04K\xc1x\x15\x9c\xda\xc5\xb0O\xc16\xee\xcf\xef\x13{P\xc1\xcfAF\xc9\x84\xfaN\xc1\x95\x91\x9c\xf6/HH\xc1\x88CL\xe8HeF\xc1+\xce\x95\xcf\xe8\xcdI\xc1y\xb7\x17\x1d5%6\xc1@5$\xc9vx%\xc1\xbf\x1f\x06\xc8w%I\xc13\xb3x\xbe\xb3\x1c#\xc1u\xaa:+\xca\x13\x1f\xc1\xf2\xaan\x9c\n\xcc/\xc1\xb9*\x11\xbc\xcd\xb67\xc1\x18#\xcc\xa1G\xfaW\xc1\xa8=sT>{;\xc1\x95\xf0\x17\xca\x9f]B\xc1\xd5\x11H\xdc{(<\xc1\xbe\xcf\xe2\xc9GJN\xc1W\xb4p\xd3\xd8KJ\xc1KU"\xe3A\xf79\xc1g.\xf2\xe7\x89\xac3\xc1\xb9\xe7\xf4\x03\xbaU>\xc1\xbf7\xfa\xe4\xc9\xd1P\xc1h\nR\xddx\xd7L\xc1\x12:\xff\xce\xf3\x19B\xc1\xed\xaa\xb6\x85g\x07G\xc1F&t\tk=E\xc12\x03u\xa4x\xe3U\xc1\x9c\x07t\xd2\xe7\x96S\xc1\xde\xcfw\xd1W\xa7>\xc1\xb8 w\x05\x10%V\xc1\xa9\x9cg\xc9\xad\x8e$\xc1\xea\xbd\xd4Z\x92K!\xc19H\xc9\xcb%\xcb3\xc1\xf6\x7f\xaa;\x98\x91U\xc1\x0cx8\x9c\x85\x8bJ\xc1\xd9$U\xd9\xca\x06N\xc1\x18z\n]\xd5-7\xc1!!\xfe\x8eR\x04.\xc1_\xee\x14z\x11F0\xc1\x04K\xd2\xfb\xde\x04Q\xc1.\xa9c\xbax/5\xc1&\xea\xe4VM\xee2\xc1\xc9>5\xaa\xf2\t?\xc1\xee\x14;\xeb\x89\x8aB\xc1\xe7\xd1#h\xe2\xf3@\xc1\xe1$\x8ai\xa6\xcfU\xc1\x1798\x9f\x15]A\xc1\x11\xce\x98\x9a\xe9\xb7@\xc1\x11!N\x1aC\xd5E\xc13f\x80\xe3\xae\xc6D\xc1\x17\xe6J\x85\xc3\x19F\xc1\x7f\xd3.\xd2c2B\xc1%~t\x1cmi;\xc1\x90n=le%U\xc1\xdc\xf3\xbb\xe2\x83\x15U\xc1\xd4mg\xa8\xf7pS\xc1\x14\xa7\xda\x9a\xe3\xcdR\xc1\xb3.mR*\xf7W\xc1\xd2G\xc6p\xa34X\xc1\x02\x1f\x83^2\x88B\xc1\x87:\x87qV\xc3T\xc1\x848\xe5\x8e\xf7\xa3T\xc1/\xc8\x08WN\xf97\xc1\xe0\xdb\x86\x04\xc3\xfdS\xc1\xa22?\xe3\xdb4R\xc1\xfa\x9d\xe0z\x9a\x1bS\xc16\x82m\xbe\xa0pU\xc1\xf7\r\x10>\xcel@\xc1B\x9bi\xaa\xce\xb5>\xc1\xcd\r\x80>\xbd\xc5B\xc1\xf9\xbe\x1d,uB5\xc1\x15\xa3\xf9\xa9\x08\x89;\xc1\xab\xd6+\xb1\xfb D\xc1L\x1d\xc3\xfe?\xbdQ\xc1\'\xd6\x1a\xd7\x94\x1dQ\xc1\x07\xb7\xaf7tTD\xc1\t"\x1d\x9c\x90\xb7Q\xc1\x10l \x04\x95$P\xc1\xcd\x13\xb8|\xb1\x10M\xc1\xfb@\x8ag\xf3{@\xc1\x1f\xf4\x04h[{G\xc1\xa9k\'\xe7\xaa\x8cJ\xc1\xf7e\xe8@\xb2\xd0C\xc1\r[8B\x0f\xf3E\xc1\x11K\xd6\xbd\xca\x13R\xc1\x9b\xcam\xf8\x13\x0eI\xc1P.-QIK"A\xae\x88\xe6>h\x0c!A\x16\xd5\xa0\xcb\xe361A\n\xda\xa5\x9e\x97?$Aq\xad\xc3e\xd7`\x1cAJ\x11\xff\xd0\x9f<2AC[\xb2\xdb?\xda A\x02\xedO\xe6\x1eeAA\xc6\x07\t\x0e\x18\xd8BA\xc6\xb46\x99\x92\xa8FA-\xd2\n\xbf}\n=A6\x14~=\xbe\xcf"A\xc3\x9a"\x18N\xdf,A\x17c\x86\xbf\x1c\xf70A\x00V\x8b[d\xc0 A\x87M\xd3\xcfU\xce>A\xcc\xaf\x12\xb2\x01\xa6CA}\xaf\x13\x83\x8a\xf89A\x9cfy\xf8\xdbvOA\x0f\xc0#\x99\xe0\xdbPA8\xdf\xfc5\xe8PNA|\x01x\xd2NzQA\x813Y\xb5b\xd0VA\xf5W\x13W\xb8uWA\xa8@BA\xc3\x87!A\\1\xa2\x8f5\xd6\x1aAQ\x17\x8e\x1b\x92S-A\x0b\xb7\xaa\xa2`mWA\x94\xea\x17<\xe2\xf2WA\xb6-\x10m\xb9\xf4WAYz8\xb0\xa8\xf6BA\x11\xbeI\xa0\x8bu=A\xa2\xd2\xc9\x03\xb5\xdd<A\xd9\x9eT\xf7:U*ADX\xaa\xb0\xe9eWA\xd3f\xa8\x90\';\x17A\xce\xedO#\n\x8b5A[E\xc0\xf6\xda\tAA\xf5mR`\xfa\x91CA)\xe2Z8^iTA\xde(\xa1\t\x9c\xdeTAB\xed\x8b\x0c\x91\xcaUA\x13\xba\xb8\xe1|*VA$\xcc4\x9c\x08\x81/AW\xc9Wc\xe9\xa9GAk?"\xd6(GLAQ\xe8\x1bW\x07oJAU\xc6\xe6E\xed3HA\x05\xa9\x85\xech\xffHAS\xfd=m\xf6\x87CA\xb0\xe8\x1a\x1a\xb3\xd2CAU)\x9a\xbc\x10\x01IA,\x9bw,|\x8bDA\xf7^\xf8bPXDA\x10;\x99\x00?\xb0HA\x92\x07\xe2e\x17\xae?AF\xeac\xa2c\xa3GA&\xa2\x9d,V\x1bKAyy\x88\xd0{^GA\xcakB\x082}LA\xf6e\xc9\xb8\xf2\xd66Avy\x14\x01\xc3\x044A\xfe\xa52v\xbf\xa0SA>\xf42.\x10\xbaQA\x9f,Xz\x86YRA2tF^\t\x91VAd\'KD\xf0\xaeUA3g\xa1\x88\xf5\xa2VA\xc3r\xed\x85H\xd1GA\x01\xab\xaa\xf4*\x13WA\x8f\xb0\xe7%\x12CNA\x8a"\xc3\x9a;\'PA]\xa8X\x1f\xa4O/A)\xde\x17\x80\x8d\x8c6A\x87{\n;\xfbX%A\xa3O\x9d\xddWcQA\x0c\xf0\x04s\xdf\x170A9f]\xf7\xd109A[\xf5\xdbx\x05\x15RA\xb7\xfb\xa7\xfb\xb8\xd6OA\xd9\td\xbb\xa3NPA~J\r\xcc\xb9\xd04A\xe6\x06\xa4\xef\x0foUAn\xc6v\x1b\xe9Q;A\xde\xdd\xee\xbd\xd2q9A\xc0\x17\xfa\x97\xe9_BA\xae\x13\xa3XY\xff=A|\x989\xe6RfRAc\x91\x9e1\x15\xb1SA\xb6\x014\xa1\xcb]SA\xff!\xd0\xc1\x9b\x11DA\x84\x94\xdc\xb4\xb4\x1dFA\r\xa1\xc5pO4AA\x90\xa2\xfe\xd1\xbe\xdc9AB/\xcf\xe2j\xf3RA \x0b\xca\xdb\xffQTA\x16\xd1Z\x9b\xcc\xd2PA\xd9njQ(\xdeTA;L\x89\x14\xc5\xfaIA&\xb5w\xa3\xe5\x98>A.\xa3\t>\x9f\xe3\x1eA\xa2\x9c8;F\x140A&\x98\x0c6$tUA\x07\xc4\xc9\xd1\xe1JAA\x7f\x03\xd9H\x05\x7f"A\xcbiW\x8d\xdd\xf1PA\x9b\x18\x86\xb6k\x83MA\xbe\xb6P\x93\x03\x869A,\x1d\x91XP\xdbFA\xf8\xb9rJ\x04\x17MA[4\x06*\xb6\x9a?A\xaa0\x9d\xf0\x07\xddLA\x8c\x91\x84\x80\xb13XA\x11\xadQ\x97\xfb+PA\xaf\xb7\xa4`\xcb\xaeMA\x01\xb6\x97\xff\xef\x18QA\xb4\xe1\x15\xff~qLA!\xeb\xebW\xb0\\,AWP\x8b\x82\x9d\x91\x18A\xd0\xfc\xcc9\x1e\xf6SA.\xaa\'\xcde2RA\x08\x8d&\xf1\xd1\xc8RA\xf5\x96\xfeS\xc5QEA\xc8c2\xe0\x92!IAm\x00\rV\xda\xfaRA\xc7rdN\x94fUA\x8c\xa5\x18s\xf1\xec\x18A\xe6\xc6U\x0f\xb296A\xa9p\x91K\xfb\xf13AX\x880\xbe\xf2\xf8RA\xbd1\xd6~\x00\x92KA$w)\x1f\x9f\x94JA\xd3\xbf\x12\x164xVA\xf6\xcb\xf5\xa6\xfa\x11TA!\xab\xc9\x90`NTA\x82\xe9l\n}E3A4\xd8\xf2\xec\xd0\x95TA\x03\xbb\xdep\xe4\xb4NA\xbd8\xddr\x957S\xc1\xd1\x1f\xeeG\xc4fT\xc1\x98\xc3\x0eY\x18\xe8R\xc1\xcb\xdaX\x04\x14\x04T\xc1\xe4%<\x8d\x96V:\xc1.\x07)\xaf\xfa\xab@\xc1[Xj\xd4{\x86B\xc1]\xff\x06[}\xb0D\xc1\x8c\xf3-\x12\x8a\x10I\xc1\xa1\xa5$6D)M\xc1S\x9b\xedh|&J\xc1K\xd8\x9e\xa0\xa4\x1d"\xc1\xa5\xb3W\xfa\xec\x8d.\xc1.\tU\xb9\xf4\xc72\xc1?\x9b\x87\x07!2R\xc1H\x1a\x07\'\x98\xcdP\xc1}\x16\xa9\x919\xbaP\xc1\x84\xb5I\xa7\xa8\xd9W\xc1"b\x1f\'\xa3[R\xc1M\xd6eQG4T\xc1\x80\x97i\xe9K\x935\xc1\xa3)\xd7\x9b%}=\xc1\xae\xea\xc3\x84>\x0f8\xc1\t\x14f\xffd\xfbN\xc19\xe0X\xed\x1c\xf3J\xc1\x82\xba\xe9\xb8S\xfcU\xc1aj`o\xf6@U\xc1\xde\xfc\xa1\xaaiHU\xc1\x9f\x1d\xb9\xf9{\x1eN\xc1\xce\x1c\xfdC\xac\xb4M\xc1\xb9\xd6~\xe8\x1b\x81J\xc1\xaf\xee5\xb5%\x04K\xc1;\xae&4\xc0:C\xc1V\xcbo\xfd"\xccG\xc1:8E\x96\xe0\xb3B\xc1\xc6\x81\x97\xdd_-K\xc1\x8e\x0eg \x01\x98E\xc1u\x00I Bk@\xc1\xbfH\xe2\x83\x02n8\xc1\xe2V\xba~\xdc:V\xc1\x1c\xfbK\xa7\xb8nU\xc1\xb9\x1b\xf6.y\x01C\xc1\xdd\xff\xad\xc8=AG\xc1\xe6\xbb\xe8I\xdf\x0cB\xc1\x16\xbe\xc5\x83-\xd0W\xc1\xb4\xa0\xfe\x82\xc0)X\xc1\xa1\xd3\xb6\xab\x1a\x86P\xc1a\xc2\xfb\xd2[&O\xc1\x03\xfa\xe4\xb5\x91{)\xc1\xf2\xdc\xd7[r\xea \xc1`\xc3\xc6\xc7\xe8\xff\x1d\xc1\xd9Rm\xdemV\x1b\xc1x^\xb1\xdf&\x1aW\xc10S\x9bh\xcd^W\xc1\x16\x98\xc1\xd4\x00VV\xc1\x8f\xd3\x0e9\x7f!K\xc1A\x01\x91K\x03\xc0N\xc1\xd4y\xd3\xe8Y,Q\xc15\xf9\x9ajLjF\xc1\xf2\x86\xd1Y\xe5\xcdI\xc1Z]\x97\xcf\x99\xe0F\xc1\xcc\xf2\xe0\x1bBWB\xc1*|"\xda\xf8\xd7R\xc1\r\xa2\xe6\x03\xa7\x13T\xc1\xea\xd6\x8bh\xae\xc7R\xc1\x8dG\x81\xc9\xaccN\xc1\x08\xa5\x99\x95\x19\xceJ\xc1\x1b\xa5@lx\xb0N\xc1\xc1R\x97\x0f\xe2;6\xc1.\x8e\xce\xf5\x1f\x97>\xc1\x012wh\xe1\x9bK\xc1\xa7\xe1l\x18\xa7\x1eQ\xc1)\x93\x7f\xecgW7\xc1\xb7\x1e\xfb"\xf5dH\xc1\xa0\xa0>\xc53jG\xc1\x81s\x8e\xe6\xc7#N\xc1\xe3\xfd\xf9\xa2=\xec,\xc1U\xb1&\x1e\xeb\xbe0\xc1j\x01\x0b\x13\x0c\xb55\xc1\xe8\x94\xb0\xd4\xa7\x0eD\xc1\xc4v\x06\x88lfE\xc1z\x9b\xa0\x19\xc7\xc83\xc1\xd2)Y\xa3\x84\xd7<\xc1=\x83\xd0f\x06\xef1\xc1sy6c"\xe6D\xc1$\x10\x9e\x18\xcc\xf2@\xc1I+\xf7Q\xe8y5\xc1\xb3vV\xa2Gv1\xc1\x7f"yZ\x81M$\xc1\xbf\x96\x14\xa0\x9e(9\xc1\x13\x1b<X\xae\x8e$\xc1\xe1\x8e\xd4*\x93K!\xc1U)4\x94N\xcb3\xc1\r\x80\x99\x8b\x18\x8f=\xc1\xa9\xb5\x95\xe3\xbe\r5\xc1Y\x851\xe9f\xb3\x18\xc1\xac\xe8\xbf\xcd\x1bo(\xc1\x99{+\xd7x\xf50\xc1\x08\x0f\xf9\x086\x03$\xc1UE^\xd5z8)\xc1\xa5.\x15\xfd@\x89?\xc1\x9cz\x13x_m,\xc1\x81fzr*\x84U\xc1\xc3\x04\xce\xb7z\xddF\xc1\xe4\xca\x1bV\xc0\xb0U\xc1\xd7\xdb\x16\xe39\xfe"\xc1\x1e\xae*\xba\x8d\xaf\x1f\xc1\x81k]\xe8T\xa9;\xc1V\tB\x85\x06\xe1S\xc1% \xe0Ap\xf2\x1a\xc1\xc1\x92\x05\xed\x14\xc4>\xc1O-\x9a\xd7JGW\xc1X;e\x124\xa5R\xc1\x00\x07\xfey%-T\xc1\x16\x9d\x02\xeeV\tS\xc1zX\xf9\xd2|\x95F\xc1\x84\xf3\x0cKA\x1bC\xc1\x08\x82\xb88\xdc\xa0"\xc1\x9b2\xec\xc1Df@\xc1\x16\x93U\xc6~}@\xc1o\xa6:\xdb\x05\x93:\xc1\x8b\x90\x836\xb8@T\xc1\x9c1\xbe\x1cN>V\xc1\x8dP\x86h\xb9GU\xc1Eo\x8bTr\xcdP\xc1&\xc3\x03\x95\x86jM\xc1:\xbf\xbb\xef\xd5\x83V\xc1\xbbP\x9a[4\x06W\xc1\r\xfe\xf9\x8f+\xb1V\xc1\x92Y\xf4[:HQ\xc1$\ty"\xa7\x1aJ\xc1\'\x93@\r\xaa\xbdQ\xc1Vd\x19\xc9m\x1cP\xc1A-\x01\xb7\x88\xa9P\xc14s\x81r\x86GR\xc1\xdb\xf9\x85j\x8d\xb15\xc1\xac+\xe8\xff\x08xQ\xc1\xde\xee\x03_\xbb\xb7RA\xbc\x85J-\'\xa5PA.\xc8\x9aO,0CA\xa1\xec\x08\r\xd3 DA)\xedg\xcc\x07 IA\x91\x01\r\x03\x19\xc0FA\xf7/\xbb\x1fXqRA\xe6E\x93\x90Q\xb8RAL})\xee\x8eHQA\xc5\xc8?Q\xbf]TA4\x82\xbe\xda\xedOSA\xad\x9c\xe8\xbbF\xc8MA\xf1\xb7\\\xc3\xaf\xe5OA\xc6\x04j\xe7Q\x98PA\xb5\xf2\x8a-P\xd5TA7W\xdf\x89.\x9dSA&\xe1\x9b\x01\x98\x9eMAG=\x86q\x85\x81MA\xf8\xb2\x9f\n\x1cWJA\xc1j\x14\x80\xfe\x9eMA\xb0@~z\xe3\x90PAl\xc8|Y\xb2\x1dPA\xd1\x1d\xa0\xd3\xddJPA;\xe1-\xc4\x8dVMA\xc5\xa30f>QRA\xa8\xb0}R\xde\xeaPA\\\xfd\x8cz\x8dYKAi\xbf\x83]\xd6\x7f<A\x8daI\xf5\x01\x844A\xe0\x05\x1e\xe1\x1c\xe62A=\x15\xf8\xb11\xd4"A\x12\n^\x8fG~VA\xa1\r\xecU\xf2SWA\xcef\xd2\tu\xd7MA\xce\xc7 \x0c\xb1"NA+\xe4bs\xc0\x9bNAu\xeb*\xc9D\xa6/A\xe0\x03m\t`\x083A\xcc\x95\xe4\'\xed\xc3!A\x07\x154P\x07\x1a%A\x1d\x8c\'\xee\xc51IAJ\x02\xb8\xe5\x13JEA\xb5\xaa\xc2\x08\xc4\x03FA\'\xab\x88}\xdfuHA\xd8\xa0\xc1\xae\xd8SWA\x95\xb5\x9a\xb2|xVA\x02]\xd37\x8f\x8aKA\x8fi\x93K*\xabAA\xd5\x8f*\x99\x9ev3A\x1a\xd1\xf7\xcc\x1d\nBA\xf5\nA\xf6\x1dUGA\x01\xa3\x03\\\'\xadFA\x0e5\xc5t"\xafJA\xe9A\xdd\x0f\x84\nJA\xb5\x8d0y\x1a"CA\x14b\xd4?\xdc\x189A*N\xce\xa0\x83\xaf3A\xf6oCN\x97&<A\xb1\x03\x91\xbe\xfe\xca/A\xd5\x92\xa0\x8aT\xe6RA\xfbN\xefB\xc2\x92QA\xf7\xb6\xf564\x87UA\xb2d\x95\x0b\xca\xfb!A\x8e_\xf6D\x15\x04!A\x97E\xa5\xf5u;2A\xb3!:\xeb\xber&AG\xd5m=\xe4HLA\xbc \x11\x15h\x92IA\xedJ!\xa6<\x04 A\xb8\xa4\xb8\x1d\xf1\x06$AK\xe38z3\xe3QA\xd5i`\xe5\xbf\xeeQAi\xb3\xe76\xb8\xc0;A\xa0\xadM\xd2T19A\xbd\xa3\xb8\x05\xe3\xaaSAi`l\xc6?\rRA{\x96\x1b7_\xb8WA@\xbce]\xce\x02WA\xb2/\xc9\x84*\xa8SA\xe2\xc1\x89\x81x\x97TA\xd47-\xb9\x9e\xf9IAUsf\xe8u\x8cVAe\xa1\xa9\xa9\xac\xe9UA\x84|\xecn\xfa+GAL\xc0Y\xa5\xe1\xa5CA\x02\x8c\x9b\x13C\xff>A\xbf![U\xa0i?A~\xd2\x9dT\x9f\xb68A\x06\xae]\xe0\xd2\xf5TA4^\xa6oK:VA\xf5\x028\x1a\xd4"XA\x1b{\xc0\x8e\xd1\xecWA_;\xdaA\x08\rFA:\xc6\xb6O\xed`6A\xec\xdc\xee\xd9\x8c\xeaBA\xec\xcfP\xc8\x17\xb19A\xb4\r\x19\xb6h43A\xa7@\xaawy\xdf8A\xa1w\x808\xfa\xd3\x1dA\x8b\xba\xf4z\xf0\xbfFAG\xf1\xf1\xec k\x1bA}/\x884w\x920AA\xde\xe5\xbb\x8f\xbf;A7\xd8\xbc\xe3M\x9e"A\xc0B\xbd\xe5aU\x1aA\xab\xb7=\x81\xaf./Ao\x19=\xeb\xb8ZUA\x9b\x07b\x15\xf8wUA\xdbu\xa3k.\x84TAa\x90\xf9\x07\x1euTAz%\t\x0f\xcf\xe4AA\xf5XC:\xac\xf5SA\x80^\xcc\xf7\rzUA\x19\x15;\xf4D\xa7BAv\x02\xee\xb5/\xe1WAb&h\xf7?,<Aw\xfc:\x1a\x86f=A;\x98\n\x9b\x9c5BA\x96uu\xb17\t9A7s\x97\xb6<\x8bAA@\xe4\x91(\xb0\xa7 A0<Bja30A"C\x0b\xaa\xa7\x85\x1dA;\xc3-\xde\xfe>%As% 4\xb5[SA\xc5\x1bf\xc2\xb4\xc6KA\xc8<\x04\xae\xdd\\QA\xc6\xaf\n\xdd\x1741A\xe1R\x8c\x1b\xfd\x84AA\xc9XA\x9d\xdcSFAD0\xf4\xc3\x13\xc2<A\xd2\x11^\xbfV\xa9JAD\xdeB\x89\xda\x96FA\x0b\xf0\xf8U\xf6\x83OA\xb0K}S\xb4BTA\x08\xd8!5!\xfdKA\x16\xf0D\xab\x0f\xf1?A\xa8.\xb1u\xad\x857A\x99\xdaP\xa6\x8f\xed@A\xdf\x8et\xe7`f$A\x00\xe6\xd2e6A5A\x03H~g\xd1,.A\xc3\x942\xb3i\xb9QA$\xfe!\x1et\xeeRA\xf0\x1a\x94\x18\xe0:QAW\xd2\xe4\xb1K\xad0A\x13\xbdljMa-A\xf5\x00\xf2e\x12E7Aje5n\xd9\xe78A\xbe\x90\xc9\xde\xfe\xbdEAK\xc2\xbc-\xb3\xa1QA\xee\x0c!\xda\x1b\x91OA\xf8Opr\x06\x91WA\xd7PA\xa3D\xeaVA\xa4\xed]\xb6\x97\x1c>A\xc4@\xda\x8b\xf0X@Ay\xbc\x9ao\xf7|6A\x01\n\xc8" bUA\x00\x0e\xb3\xaf\xf42UAJ}\x86\x83\xfeTVA\xd1\x8d\x13\xe9m\x18\x1eA\xb4\x1e\x1c\x00\xd6\xef!A\xdf\x83\x08+\x86\xcbUAx\x83G\xf5~\xc1QA\x1a_\xf8\xf0\x88\x9aPAJ\xf5DH\xfaIOA\xf9\x83\x86UW\x15RAv\x03\r=H\xdb\x1fA\x944\xd9YnA\x17A@2~\x87\xca\xbfJA\x12T$AD\xdfJA\x020\xd4\xf4k%GAF\xcf\xf8P\xf2!CA\xe4\xbc\xc2\xf7\xc3\x8e\x1bA\xc0\xf1(v\x80P\'AL\xfbw*3\x157A\x0b\x156\x0eiULA5\xb9\x9dla\xc2MA\x82\x1ao%abPAC\xca\xb7\'=\xc2>A\x0b\xd98\xfe\x9b\x95BAA\xdc\xde\x13\x00z@A=g\xc1`mM?A\xe8`\xab\x0b8|DA\xb8S\xbd\x96\xb1;0A0\x1f\x18\xfa\x00\xb0IA\xd8\xb5\xc7PG\xc7MA\xab\xdb/\xdb\x1a6JA\xf6`ni\xcc\x1b.A7\xe6$\xff\xd1-OA\xb1\x85\xc5J_`JA\x7f\x188\xee$\xd0KA\xf8\xc2UT{xNA\x8f\xd9\xfd\xc0\x98\x16HA\x07:\xa6Z]\xcePA~\xff\x15i"\xa8PAt\x83\x06\x7f\x8aURAv\x93W,TU,Ai\x00m\x7f\xe3\x90\x18A7cR\xef\x01\xa4\x1fAg\n\xd4\x9f\xa5\xe0EA\x8d\x13\x1cCZ\xa7CAv@\xc8\xb3\x92lTA(\xb4C\xc1FvTA\xfb\x03:\x19\xfe.SAU\xca\x8b\xde\xb1\xfcQA\xe2\x0e\x06\xd1\xabSTA\xb6\x9dby\xb7J+A|\xc1\xcd_\xb3\xeb\x1dA\x13\x12}K\x9a\xfb$A\xde4\x08\xc2X\xe0?A\x1e\xce\x19\rZ<0A\xbf\xc6\xcb\xa9S%,A\x8a\x14O!\xbe\xde\x1fAm@ \xe3-\xa5NA\xd2\xd9)W\xab\x02PAP\xd1\xbb"\x9fY7A\xff\xd6u\xd6\xe2\xa7VAKL(\xf8l\xb92A\xacare\x01\x8d\x18Ad43\xf6^BHA\x12[?E\x10\xd4CA\x8c\x89\xb1)v;HAY:C+g\x7fLA\x87PE\xec\x80#JAJ\x1bgZ}\xe81A\xa30\x9a\xad\x18[/AJ\x18P\x93\x0f\xf98Ax\x1cq_\x89 <AD`)\xd9\xb5\x148A\xb5\xc2_\xcd\xc8L=A\xe6\xfa\x9c\xcb\xa5QBA\xcaN\xd1\x01w\xfbWA\xad\x93\xf64B\xbdWA\x10\'\xd1\xd1\xf9\xd8@A2"\x0b\xcc\x08$XAOU\xc2\xd7\x1c\xec6A{\x85\x0c\x8e29FA\xc8\xa9\x0eYp\xc8@A\x046\xd9\x0b\x86bNAw\x0c\xa8\xc8\xc3-<A6\x7f\xc7\xeebgUA\x03\x1dg\xa0\n\x88TA\x89\xd7m\xf5i\x05SA,\x05\xf2I\x7f\x0eSA\xe58\x94\x8a\xebYWA\x84q\xf6\xc6_\xf6BAz:\x04\xads\xe9FA\x91\xbc\x8c\x8e\xf2\x86SAw\xae\xab\x12\xba\xc3SAH=\xfb\xb1\xd0\x16TA\x05\x90\xb8\xf9W\x17SA\x87)l\x89v\xc5\x1cA\\\x00z\xe4\xd1\xa4\x18Av\x82\xb7\x1d;\xd5JA\xf5\xefFE5\x03QA\xe5\x9c\x90\x99\xe2\xd6QA\xa8;bU5kEA\xf1%\xdbU\xa7\xb66A\xda\xb1;:\xb7\xa36A\xbd\x1cW\xe6\\\x85VA9\xec%\x19@}VAB\xee\xea\x98I1WA\xc7\xeb\x9a\\\n~UA`\x93*\x1d\xd0;LA\xde#\xffW\x9f\x8aMA|\xc2\x9a\x9a\xcf{HA\x04\xb9cX\xbb\xa8UAZ\x14\xf3b\xa3\x0bFAh\xec\' \xb59SA\xa0\x9a3r )WA\xd5\x04\x08\xa4\xc8pJA\xa0\x0fp\xab\xb8gEA\njI\xb9TbPA4RT\xba\xf0aCA\xd3\x9f\x15=,\xf9\x1aA'
+p69
+tp70
+bsS'z'
+p71
+g9
+(g10
+(I0
+tp72
+g12
+tp73
+Rp74
+(I1
+(I1286
+tp75
+g31
+I00
+S'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00D)\xca\xf9\xb0MX\xc1D)\xca\xf9\xb0MXA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x83\xc10\xc0R$\xc1\x0f~k\xe1?64\xc1Cr\t\xfcn\n>\xc1\x81\xce9\x05.\xc5C\xc1,\xe0\xff\x00\xb1MH\xc1\xffi\xd1s\t\x92L\xc1\xdaI\x80\xc8\x1fCP\xc1\x1f\xdf\x0e\'\x9e\x0fR\xc1\xff\x97\x1a?t\xa9S\xc1\xaa\xe3\xaa\x8f$\x0cU\xc1\xca\x7f\xe7D\xcc3V\xc1\x17\xf7\xb7\x1e.\x1dW\xc1I\xf2\x96\x86\xbb\xc5W\xc16\x0c\x83\xbb\x9b+X\xc1v\x07}\xbb\x9b+X\xc1h\x10|\x86\xbb\xc5W\xc1\xf8\x08|\x1e.\x1dW\xc1\x04b|D\xcc3V\xc1\xb5E\x0f\x8f$\x0cU\xc1\x887B>t\xa9S\xc1\xb9\xa7\xde%\x9e\x0fR\xc1\x05l.\xc7\x1fCP\xc1\xa1\xc7}q\t\x92L\xc1s\xcd\xe4\xfe\xb0MH\xc1\xe0\xa1X\x03.\xc5C\xc1\x85\xa9\'\xf9n\n>\xc1Q\x9bq\xdf?64\xc1}i\xf7.\xc0R$\xc1\xc5\x83\xc10\xc0R$A\x0f~k\xe1?64ACr\t\xfcn\n>A\x81\xce9\x05.\xc5CA,\xe0\xff\x00\xb1MHA\xffi\xd1s\t\x92LA\xdaI\x80\xc8\x1fCPA\x1f\xdf\x0e\'\x9e\x0fRA\xff\x97\x1a?t\xa9SA\xaa\xe3\xaa\x8f$\x0cUA\xca\x7f\xe7D\xcc3VA\x17\xf7\xb7\x1e.\x1dWAI\xf2\x96\x86\xbb\xc5WA6\x0c\x83\xbb\x9b+XAv\x07}\xbb\x9b+XAh\x10|\x86\xbb\xc5WA\xf8\x08|\x1e.\x1dWA\x04b|D\xcc3VA\xb5E\x0f\x8f$\x0cUA\x887B>t\xa9SA\xb9\xa7\xde%\x9e\x0fRA\x05l.\xc7\x1fCPA\xa1\xc7}q\t\x92LAs\xcd\xe4\xfe\xb0MHA\xe0\xa1X\x03.\xc5CA\x85\xa9\'\xf9n\n>AQ\x9bq\xdf?64A}i\xf7.\xc0R$A\xc5\x83\xc10\xc0R$A\x0f~k\xe1?64ACr\t\xfcn\n>A\x81\xce9\x05.\xc5CA,\xe0\xff\x00\xb1MHA\xffi\xd1s\t\x92LA\xdaI\x80\xc8\x1fCPA\x1f\xdf\x0e\'\x9e\x0fRA\xff\x97\x1a?t\xa9SA\xaa\xe3\xaa\x8f$\x0cUA\xca\x7f\xe7D\xcc3VA\x17\xf7\xb7\x1e.\x1dWAI\xf2\x96\x86\xbb\xc5WA6\x0c\x83\xbb\x9b+XAv\x07}\xbb\x9b+XAh\x10|\x86\xbb\xc5WA\xf8\x08|\x1e.\x1dWA\x04b|D\xcc3VA\xb5E\x0f\x8f$\x0cUA\x887B>t\xa9SA\xb9\xa7\xde%\x9e\x0fRA\x05l.\xc7\x1fCPA\xa1\xc7}q\t\x92LAs\xcd\xe4\xfe\xb0MHA\xe0\xa1X\x03.\xc5CA\x85\xa9\'\xf9n\n>AQ\x9bq\xdf?64A}i\xf7.\xc0R$A\xc5\x83\xc10\xc0R$\xc1\x0f~k\xe1?64\xc1Cr\t\xfcn\n>\xc1\x81\xce9\x05.\xc5C\xc1,\xe0\xff\x00\xb1MH\xc1\xffi\xd1s\t\x92L\xc1\xdaI\x80\xc8\x1fCP\xc1\x1f\xdf\x0e\'\x9e\x0fR\xc1\xff\x97\x1a?t\xa9S\xc1\xaa\xe3\xaa\x8f$\x0cU\xc1\xca\x7f\xe7D\xcc3V\xc1\x17\xf7\xb7\x1e.\x1dW\xc1I\xf2\x96\x86\xbb\xc5W\xc16\x0c\x83\xbb\x9b+X\xc1v\x07}\xbb\x9b+X\xc1h\x10|\x86\xbb\xc5W\xc1\xf8\x08|\x1e.\x1dW\xc1\x04b|D\xcc3V\xc1\xb5E\x0f\x8f$\x0cU\xc1\x887B>t\xa9S\xc1\xb9\xa7\xde%\x9e\x0fR\xc1\x05l.\xc7\x1fCP\xc1\xa1\xc7}q\t\x92L\xc1s\xcd\xe4\xfe\xb0MH\xc1\xe0\xa1X\x03.\xc5C\xc1\x85\xa9\'\xf9n\n>\xc1Q\x9bq\xdf?64\xc1}i\xf7.\xc0R$\xc1\x9e\t\x9f\xf2e\x84LA\xc9\x15.\xb1w\x94HAF\x830\xb5\xa3rKA\xb0\x00\xc9\xa4\x8d\xe9FA\x87\xecc=c\xc7PAf\xa3Z\x17\xae\xfdPAyp\x17\x91\xealNA\xbc\xfc\xb93\xa1\xaaIA\xe1\xc9Y\xad%.JA\xf3&\xee\xe6{\xdfLAC*\x97q9e7AyV\x93n\x05\x04AA\xb4\x81\x0f\xecD6@A\xe4\x00\xc1n\xa2\xa9JA\xa4E\x91\xdf\xed\xee0A\x84n\x02\xdf\xb2\xf9HA )\xa1\x81\x819EAp\x82<jw\xe7IA\xc7\xf3]\xe8x\x842A\x8f\xd8w\x1d3M1A>\xa7\xc7>\x96\xd28A\xb3\x05`\xa4\xe3\x06@A-\x94\xd4A\x88\xbdDA\x9b*\xc3\xf3?`BA\x96N\x8b8Z"%A\x96\xf0\xea:\x99CTA\x13UA\x11\xb0xRA.Z\x918\xa44&A\xf3\xd5\xd2\x8c-\x99\x1dA\xef\x01\x94?\x11\xa6RA\x81\x1e\x0f)\xd8\x05TA\xd7iP\xc1\x03NSA\xaf,T\xfcuW"AJ\xe3M\x89\xa4\xe8FA!\x81t\x9ba\xe2BA\xd1Q\xaf\xbc=UFA;I\x91\x90\x94\xb7AA(D \xca\x9fuVAk\xffbOl7WA\xb9}_\x84MXRA=\xa0\xbd\x02\xcd2RA\xd0\x07d\x07\x89\xc7PA\x0f\xc7\xa4\xda\xd4fPA\xe7R\xf6&\xae\xc2SA\x0f\x1fhQ\xd9\xd8VAo\xceN\xeaZbVA\xe9\x1c\x1cj\xeeq%A[\xadW\xe2\xbf\xdc\x1aA\x8f\x07\xa1\xbbk\xbaTAt9\x86\xd7\x1e)UAEk\x13\xa7\x89\xbbSA\x15s\x90\x91\x11h6A\x95\x11\xfevb\xa9/A\xef\xd4\xcf@\x85"\'A+WB\x0b\xb5\x089A\x94\xe9\xcb\x1a\xcf\xd2<AN\x14\xa9\xfd\xdbn1A\xb5\xec+\xd3c\xff3A\x16\x9f\x9e\xc6\xc2ZVA\xce\x1d\xac_\x11\xfcVA\xff\xd07\xde\x1f4BA.{\x12\xcd\x84\xacWAn\xaa\xb6\xd7M\xceIA\x10L\xf9\xa7@\xf2JA\x0e\xe6 Q\xca\x1fRA\xd3un\xd9\x9a\x03UA\x04\xd1 \xc6\xac\t3A\xb7~f\xb5\xe4\xd95Acd\xa8:\x04<VA\n\n;Y\x85\xe7JA\xa6\xa9\xa6\xd4\x153NA\x1bV@\xf1\x18\xd6MA%)\xce\xd4\xd3zUA\x15\x87\x1f\xad\x98\xeaUA\x82\xf9M\x1f\xe4g>A\r\xde"+1\x016Al`\xa9\xe5\x89!:A\x99y$\xea\xee\xb7FA7\xd0\xa2\xec\x16dTA\xa2\x1e\xd8\xc0\xcbWQA\xdd\xd2\x85\xeb\x95\xb4PA\x14\xb0G\'*\x83NA\xf0\x19\x19\x08P\x8aWA\xa3\xb3\x9aSZ\x15XA\x9fps\x81W\\LA\xd8 F\xf6c\xc5MAF\x9c\x041\xe5\xc3TAHH\xa1\x08\xc8\x00QA\xab\xf4;\xa5\xd9\xb8RA#\xf3\xe7\x11;\x97QA*&G3\xc2;SAU;\r\xbd\xc5\xabOA\xf7ab\x92\xb6 5A\x13\xbf1\xaeT\xebWA\x1d\xde\x97\xc8\xfd\xd8UA\x96\xf5\x8aLy+UA\xe4\xc0\x00\xc9\xa7\x02=A\x8a\xf59\x88\x89/CA\'b\x01\xa7;\x82?A\x06\x84\xc5\x9e \xbc\x1cAI\xea\xcf\xbd\xdb^\x16A\x96\x1b\x0c#\xf1\xa6,Ad\x1a<\x00r\xf8DA\xf2\x1f:\xd3\xab3DA>qdW\xa1\xedGA\x9a\xeff\x8e\xc6\xf4CA\x14\xf1gjDkHA\x04\x00\xe5\x8f\xfb\xdbSA/\xfa\xce3\xdf]EA\xe0\x1fN\xd5]WPA\xd1f\xc5U\xf8\xdePA\xea\xa2\xe2c\xdct9A\xe1-g\xaa\xfd\xf0!A/\xc8c\x9e*\xd0 A\xfc\xc2&l"\xb4UA*F\x044fxUA\x91\xf4\x88(\xe5\xcdTA^\xe2`\xfb\x9a\x96,A\x10\xeb,u\xaf"$A?\xe1\x1a{\\\xd5\x1fA\xef\xdd6\x08N\xafLAs\xa3\r(\xb5G,A\x9d\xbf!>&%BA\xf43\xd4\x17\xa2\xda\x1eA\xffA\xa8\x7feB>A\xda\xc4\xc5kI\xf6=A6-\xb3\x95^\xb0\x18A}W\xe2\xe5\x06\x94NA\xac\xa7\xb9\xc7\x1f\x064A\xe4\xaf\xb7L\xafv/A\xaf\xdb\xaa\x17\n\x0eOA\xc8\xe25\xdf\x95\x88/A\x11\x8cC\xfa\xaf\x08>A$\xd6]\xc8\xdaq7At\xdeDI\xffr"A\xf0Zvt\xc1hBAz\x0b?M?\x14<A\xc8\xb2p\'C\x89FA\ri\xad\xf7\x96\xc1\x17AJ\xe2%\x888\x1d,A\xf2,\x94\xe7{\x0f\x16A\xf5\x95\xb2\xc0\x90$9A\xa7K\x0b9\xfd\x01CAyf\x1bP6:CA\xb7f\x99\x94Q\xf0FAj\xeb\x19\xbb>\xd8>AJ\x1f\x97\xbf\xde\x995A\xf6\xa1\xf9\xf7\x14\xf5%A\xa8"\xfa\xb9\xafR6AO\x16\x84H\x0e\x06BAV\x9f\x1999zBA\x8a\xbc\xeaP\x9e\xedFA)\x8f\x94\x1d\xb71BAl\xed\x9e\x8ej\x11GAy|\x11G&JEA\xd0#\xfd\xd9\x0c\x99.Ab*\xd5\xf7\xab\x97.A\xf8\xf8T\xfe&\xf8/AA\xb7\xab\x0e\xb7\xd9 A7`\x1d\x1a\xd1\x058AJ\xe9-\x88\x7f\xc0/A\xca\x9c\xf8\x01\x1f\xde7AK\xabc\xb73\x861A\x84\xbb>\xb4\x80\x17XA:\xeb\x86\x12\xa9D#An\x11jc\xfb\xfd@A\'\xfb\xb2\x85\x8f]BA4\x10\xa2\xe2d\xfcEA9\x1c\x02\xe4\xe8s A_\x0b\xa1\x0f@\x98 A\xf6\x7f\xf5\xd7~XTA\xcbO\x81\xee>\xb7UA`\xf5\xfd_srTA\x0c\x85g\x0bY\x99NA\x1f\x07\xba\xe5\x90\xc2PAV|>\xfd,\rQA\xba\xeb\x11g\xb9`RA\xef\xd7b\x94\xe2,\'A6\x15k#\xd0\xca#A\xfa8\xdf\xea=\x8d\x1bA9\x0e4\xd8O\xafJA\xb5_\x91\xf8_\x03OA\xe9\xb3\xe9\\\x0f\x15JA9\nHL\x8f\xc3#A\xa7\x06\x91\xb8\x9f+>A\xdd?\x83|fWCA\x88\xbe\xe2\xaaX\x8f4A?\x8b\x1dI\xa0\xcb&AV\\\x03b\xcb\xca5A\x1f\xc2\xed\x92Y\x11"A\xd5~}\xf0UO2A\xd3"d\t\x97&GAm\xf9\x94\xaa7`NAG~7}\xc8QQAP\xa0b}p\xd83AF0\x0b\xbb*HQA\x9e\x19U=\xdc\'OA\'H\xe4b\x1f4+A`\x83*?\x03\xfc\x19AyRE]\xea\x19<A\xbd\xa5\xd9\xbf\xfbvWAr3\x80\x8f!\xafVA\x1f\x1c\x0e\xd9"\x90VA\x1b\xae\x89\xf6\xf5\xb3?A_\xc5\xd1 \x88\xc9JAM\x01\x98\xb9#6KA\xab-\x14\x00z&VA\xc1\xc5\xa0\x8f\xa3\x1eWA\xc0\x19\x18kJ>JA\xb6\x91\xeb\x97#p<A=\xc8\xd8_\xea\xa0JA\xb7\xc4)\xc47JOAVK\xf4\xcc\xe6\x83HAN\xae\xf02\xd9\x9bGAs^!\xc9\xe4\x8bDA\xa9I{\xf3_\xf2IA\xa0k\x82\ru\x045A\xba\x1e\x84\x94r\xfaRA\x03\x1d\x0bE\xdd\x05SA\xe7j\t\\\xf0\xb2EA\xdf\xeay\xd3\xcf\xf6<A\xabf\x8f\xce\xf0\n@AS\x80]#\xdepVA\x10MxT \xa0<A5\xf7\x97\xcb\xebG8A\x96\xa3x\xf3\x1c\xc1TAs\xe0\xf5\xb3#mSA\n"\x99F\xe1JTA\xa3\xbf\x9f\x19\x97,QA\xcec\x1a"\xaa\xb0NAN\xa9\x90\x05\xe9\x05PA\x88\xff\xc1\x85\x8c\xa3RA\xa1\x85/w\r\xf3BAy\xf1\x1d\xf1\xff84A#e\x07\xc6K\xf5RA\xfax\xd9\x8d\x9d\xa9QA\xc4\xf3a\xdd\xbb\x88WAt\xcb\xbe\xfd\xaa\xf8WA\xc5\xc6\xda\x16\xfc\xb0WAQY\xceGm\xfeBAe\xe6\xb7\xb9\xb3/LA\xda\x85\x13\x11.\x95JAf\xf94f}8GA\xae9\xb2\xeb\x9b\xf29A\xc8WldpU1A\xa5u\\\x0c\xbau7A\x19^\x01\xad_\xc7PA\xe2\xc1!\xefN\x91@A\xc5:\xa4\x00;/MAH\xae\xd1\x1a<\x10CA\xe5\xf7\x9d\xa3\x96/AAt\x8fw\xbf\xbaGWA\x83PN\x8e]\x85UA\x11\xacV4\xae\xb4TA"\x0cV\xb5\x89;TAV\xf0\xde\xa1u\xefRAIq\xe00\xfc`JAeU\xdbl\xeeBJAb[5\x9e\x81\xb7EA"(I\x87\xc3\x18SAX\xec}\x9aT(\x1cA<\xc7\xcc\x9f\x86EPA\xc3\xf1\x03\x1a\x81\x83UA+\x0f\x96\xac\x8b\xdaSA\xc8O\x9d\xa1Y\x86MA\xf9\xd7\xff\xe6d\x17<A \xfc\x17\xcduEGA\x06\x1c]U\xa2\xdeMA\xc5J\x9c\xc9\x17\x10NA\x9c=\xfaR\x85\xddVA4\xbe\xe4\xc9\x9e\xd1UA\xc0\xef\xe8\xca\'\x8cEA\x10%\xaf\xbc\xf3u@A\xebF\x1f(\\sQA\x04\xde"\xd7\x03\xceQA\xb9\xc5\x01\\wsUA\\\xdb\x08\xac\x11oUAT\xe99z\xf9\x7fVA\xdc,\xd4|\'pWA\xad\xfcQ\xa7$\xceVAl&\xe0E_\xd8\'A\xe9\xcd\xf3\x8b\xd6\xd7#A1z\xbb\xd4<{TApa?\xc3\xf8\xddUA\x9dw\x12\n\xb5\x1e@A\x9e\xc9?\xae^\xf4BA\xd8\xf2i\xediC=A\x11\x96\r\xf2I\xf6UALZUm\xd7m\'Ak\\X\xfeH\xb26A}"J\x15\xf9;6A\xd2\xc2L\xf3m\xfa\x1cA\xc5f\x81\xca]nWA\x87\xcbI\xa3\xde\xc7VA\xa6\xe8\x8f#\xc3\xb00A\x14\x1f\xd0\xba\x17\xdd\x1eA\x0b9\xbaRk\xdf#A\x9e\x06i\x1c\x0e\x94SA\x83\xd0\xcd._JSAE%c3+\xe4TA\x04\x81\xf3\x1d\x91\x91SA\xda=78\r\x98.A\x8e\xac\x823G/6A\xa4VY\xbd}\x14EA.\xfd5\xf4\x84$IA\x98\xbaW\xe1S\xceCA\xdf\xd6\x7f\xbb<\xf2TA\xf3=\xc6\xb0\xe3\xe69A\xc7j\x94]g\xef3A&"\x13\x08\x80\xd3>AU\x88m%7\xdf1Ah>\xcf\xc0RmAA\x10\x80\xe2\xd0\xd1h:A\xa0\x92\xd2]q\x06@A\x0e\xca\xc0\x14\xd9\xc2!AJ\x9d\xc9`&\x19%A\xff\xff=\x99>\x02WA\x07d\xa5?N\xb4&A\x10\xfbE\x9a;\xac)A6I/\xa8\xb3\xfc\x1fAr*\x11\x0f\xfd\xcdVA\xce\xd1\xbf-4\x8bWA\x84\x85h\xe9\xf4\xdf1A\x00\xdc\xb2 z\xadPA\xaeJ\xa1V\xf3\x82RA\xad\xb0p\x95\xb0GGA\xfe\xaf2\x0b\x9d\x14EAX\x05\xc5,1\xfaPAs)\x8f?\xad\xa9RAt\x80\xc9S\x12\x16NA\x1f\xd4\xe4\'\xc2NPA{\x99\xba\xc9\xcc\x8eMA\x97G\x98\xe3,\xa2PA\xba6\xa7\xb1\x02\xa2QA\x03\xb2\xb9\xc7\xfc)RA\xe0\xba\xef\xf3\xfc`RA\xf3pyx\x0b\xf9WAe\xba\xfe\x01;\xc3@A\xdd\x1eS\xd1M\'@A\xcc\x8eWv\xd7\xda6A\xc3P\xa6b\x95\xe43AS_r:\xeb\xc4@A\x96\xaa\x00\x0e[\x958AT\x82\x1b\xf1L\x19EA\x9c\xe9\xf5\x18\xbc+PA\x98\xcf\x06<\xdb\xa7PA\x8aY\x8a\xf1\xd7\x18MA\xf69\x1e\xe6E\tDA)\xc3\x02%\xa07GA9\xd9\xa6\x12\x0c\x81EA\x88\xb3[\xc0R\xb54Ab\x1bt\x13B\xd8UA\xfc\xed\xf8\xd9\x0b\xd6TAU\x18\xf2\x9f\xda\xd5QA\x92Pl\x96\x1a\x96RA\x9b\xfe0\xad\x81xPA\xfb\xdc\xbd\xe3\xffPQA\xb5\x06\x16\xfc\x1e\x80RA\xcda\xc4%p\x9eSA\x0e\x8f\xc6"\xfd1\x1aA?\'\x0e~\xdc\xdb/A\x9f\xe5"=\x1f\xe2DA\xf3rq\x8b+"NA8yll\xc2\xd1JA\xc2\xa1\x89m\x9b\xa1MA\xda\x93\x0c\xb9\xe0J?A\xa7h&\xff\xcb\xb1EA\x92\xdd\xf6\xd8\x95)VA4\x0e\xc4V\xc9\xb67A\x9a\x80\xa9\xb9\xa0\x01.A\xd27\xe6z\xe3U0An\xd5\xe8\x1a\xc7\xbcHA\xe1\xfa\x8eA*\x9b7A\xafuz\x0f\xb4#FA\xda_\xbc\x14GWJA\x96\xfe\x8a\xd0\x04<OA\xa7\xa8\xa4\x8c\xbc\x86LA#\xcd\x01eb\x9fHA\xb4\xbfg\x80\x1a\x1eTAf`E\xb6\xc8\xaaTA\xa8\xe9\xe5\x1e\xef\'#A\xadQTI\xb7\xe5@A8\xb5\xc4\xa8^qNA\xa7\xffTK\x07\xebNAMR\xd8\x02\x19\x88QA\x8cCK\x96w>PA\xbd\x8b\xeb\xbc\xf1\xbeLA\x90\x1c\xc3\xeb\x97\xa5UA\xee-=m\xec\xf3HA\xc9\x9b\x003\x9bAMA\x9f\xf3\xc9\x92+yIA \xc2\x85\xbf\x99*:A\x85\xaf\x89Q\xc5t2A \xf1/\x00\x82A A+qm\xac\x85\xb8=A\r\xc6Q\xf8\xd5\xf6WA\xb6\x13\xc3\xe1\x9b4XA\xe5\r\x1e\xb1\xe1\x1cEA\xbf\xd9\xac2o\x8a9A~\x00\x9bV\xed*AA4\xc92\xfc\xb3\x00EA\x06e&\xb5\x98\'AA\xb8S\xa2\x02\x01\xdd@A\xc1/\xda\xdc\x19>JA\x10k\xd6wN\xb0JA\xff\xe9o\xc6\x16cUA\x19\xf6\x8c\xe5\xfb\xdaPA6\x82\xba\xc8\x8bkCAW\xb5J\x8e\xb6SSA\xa87t\x92\xdb\xd7FA\x1e\x1d\xea\xa4\xe6\x05RAb\x16\xff\x059~JA\xe5=\xa6\xb26KIA\xec6\xa7\x0f\xc2\x0fTA\x13r%\x7f\x82\xb5SA\x92\x94\xab\x06\n\x85MA\xc4\xf4\xa1\x0b\xa1\x9b9A\xf0\xfb\xd9]1V5A\xa0\x02\xed\xe2\x94\xe7?\xc1\xe9\xc7\xd1\xf6l67\xc1\xb87I\xf3\xacQ@\xc1\xa3\xb2\xda\x80\n}0\xc1\x95\x15\xf7\xb5\xdf\x10-\xc1hn$!\xafr \xc1I\x92;LQ\x19\x1a\xc1\x0c;\xd3\x89O1 \xc1\xe6\xe1]#\xdf\x995\xc1#\x94\x044\x17\xf5%\xc1\xc6\xb0\xea\x92\xafR6\xc1\x01\xad\xc3\x9a\xbb\x04B\xc1\xfe\x90\x9b\x06\xdbvB\xc1\xa7]*b\x9e\xedF\xc1\xf5M\xf2\xac\x845E\xc1\x9b\xb4e\xb6\xb8\xf6B\xc1E\t\xed\xccp\x1cC\xc1\xb4\xabw\xaab\xa4F\xc1\xa1[\x1atr\x98.\xc1\xa3\x07\xd3\x19\xe9\x0c>\xc1\x98N\x81J?\x9cI\xc1\x9e\xba\x05\x9b\xde\xe8H\xc1\x80}\xb0\xa2kWT\xc1\xba\x17\x9cq>\xb7U\xc1N\xd0\xfd\xa3srT\xc1\x0f\x9aK\xec\x04\x9c\x1d\xc1:\x8dQ\x9fF\xb5!\xc1\x8d\xb4\xd9\xb3\x80\x17X\xc1s\x8f&Y\x0c,#\xc1+\xd7P\xd4\xbf\x01A\xc1\xaa7\tL\xce\xb7A\xc1\xb0\x12\xe2\xb7z\x93E\xc1\xa0\x89E\x9e\xd8\x9bG\xc1\'\xc2\xf5a\r\xf3B\xc1\xdfv\xf4K\xe3\x8bD\xc1\x11\xe9T\xf3p\x99N\xc1R\x96\xb7\x07\x8e\xc2P\xc1$\xf8U\xef,\rQ\xc1\xa1`kQ\x9c/&\xc1\x12\xc3\xec\xbbPXR\xc17\xd0nt\x1f4+\xc1a\xd5an\x03\xfc\x19\xc1bl\xe9(%\xc7#\xc1U3\xcc\x9d9\x8d\x1b\xc1\xdc\x8a\xea\\\xcd\x087\xc1h\x0c\xa8\xc0\x9f+>\xc1X\x92IwfWC\xc1"c\t\xc1O\x8e/\xc1\x88:\x14\xa4\x8f\xbf6\xc1\xf1\xb5\xf6t\xa242\xc1\x89\xa3\xfd9\x9b&G\xc1\xc6aw\xe7\xeb\x1d/\xc1+\x1a\xef\xec-\x95J\xc1S\xactb}8G\xc1k\xd5\xe2!dJ4\xc1#\xeb\xb5\x0cy|&\xc1V\xe4\xf4n\xb3\x025\xc1a\xb1\x81\x87\xa3DN\xc1u\x8a5Xn>Q\xc1dk*\xfdc\xc53\xc1\x15\xb9\xea=)HQ\xc1\xc66\x10\x01\xd7\'O\xc1[\x17\xf0+\xd3\x03S\xc1\x1c\xd99D\xdd\x05S\xc1_\xf5s^q\r<\xc1\x7f\xc4\x8a\x8c\xc8wW\xc1\x0f\x16\xf4/\xc2\xaeV\xc1\x0b\x92PLy\x90V\xc1\xb8\xa0\xeeS\xf6\xb3?\xc1\x89\xc6\x8a}Y\x1a+\xc1\x04uJ\x08\xe5\x83H\xc1\x97\xcd\xe2\xcd]\xf2I\xc1Vp\xdd\xf59/M\xc1\xd7\x19\x07\xd3\xb2\xc9J\xc1VP\xc8\x82\xa5*K\xc1\x0e~\x13L\xfb&V\xc1\xfa\xcd\x06\x12\xf5\'W\xc1\xc4\xc7\xada7\x10C\xc1\xcar#\xc1\x98?J\xc1\x1b\x84\xb3T\xe0c<\xc1a\x82\xce=\xeb\xb2E\xc1V\x04\x0eU\xe5\xa0J\xc1\x90\x9ch@1JO\xc1\x15\x15\xbfzF\xab1\xc1\x0f\x88]tLSL\xc1\x11\xa1;\xc9[sV\xc1S\xe1\xba!%h=\xc1\\\xe5|\x17\x97,Q\xc1\xfc\x84\x12\x1b\xaa\xb0N\xc1\x918\x8a\x03\xe9\x05P\xc1~\x91S;)\xd8C\xc1\xb3D\xa2e\xd1WS\xc1m\xdbkV\xbe\x89R\xc1s_\xd2\xdc\xbb\x88W\xc1H_\xcd\xfd\xaa\xf8W\xc1\x8e\x86p\x16\xfc\xb0W\xc1\x9d\xbcb7*\xadP\xc1\xde*\xcc\xa8\r\xacQ\xc1\'\x02\xc3\x17\xb3/L\xc1N\x81\xc6Q\xf9\xdfV\xc1b\xaaAB,gV\xc1Y}\x9d\x1c.74\xc1C\xab|\xa3\xe2\x928\xc1\x08\xa2\x99Vd\x82U\xc1Cq\xac.\x95\xb4T\xc1\xbd\xa1XSX;T\xc1\x8f0\x16i\xf9\xef9\xc1\x08\n\xd2\xa8\n\xefR\xc1\x8b\x1f6\xb5\xc2\x18S\xc1\xab\x9e\x89\xf9mu7\xc1x\x93\x02\xb6\xc3\x1aC\xc1#P\xa3lpY@\xc1&`\x90*\x07\xf4I\xc1\xbe-\xf3\xa6&rM\xc1<\x0f\x0eZh\xa6\x1c\xc1^G\xee\xe4\x95\xa0\x18\xc1j\xe8T-\x84/A\xc1\xb6`\xc0\xaa\x85U8\xc1\xa4\xc4\x04\xde\xd2YF\xc1\x8d\xc8\x94\xaf\xbaGW\xc1\x1c\xcc\xb4\xcd\x00xE\xc1@=\ri\xb1IJ\xc1*6\x84\x99\x88]8\xc1\x00 ?\xf0\xb1\xde%\xc1R\x00\x105e\x17<\xc1L\xa5\xdb\x18\x86EP\xc1\x8b\xbajgY\x86M\xc1\xe9\xad\x89\xb7|\x83U\xc1\x03\x11\x7f\xec\x88\xdaS\xc1\xc1\xe6f\x1b`\xd6U\xc1\xa5\x89G~\x0e\xf1M\xc1\xa8d\x8d\xf3\xbc\x81E\xc1H\xcb\xfa\x17qP1\xc1lD\'-\xee!@\xc1\xdd\x83\x7fH{\xf0Q\xc1`\xa9\xb2\x92\xebZS\xc1G4a\xef\x02\xceQ\xc1\xdb\xa5\xd3\xa5\xf7\xadT\xc1\xf0\\lL\xc4\xf1S\xc1\xb0;{(RgU\xc1\x8b\x98\xdb\xbf \xa1U\xc1\xf3g\x9d\x01\x8f\x1aP\xc1\nc\xa1\x1f\xff\xb1T\xc1\x88\xee\x94\x10`\xbeR\xc1\xea\t\xda5\xfd2T\xc1\x9a\xa8H\x17\tAS\xc1\x9b6.\xe3\xc9ZW\xc1 \x9a\xf0\x92\xc4\x99V\xc1\xcc-z\x98\xcc\x81Q\xc1\xdc\'\x8b\xb1M<Q\xc1F\xe1\xcce\xf5H@\xc1\xa0\xff%ls]E\xc1\xf8\xb7a\xc8\xf8\xbb@\xc1s\x86\x95\x8921D\xc1pu\x9a\xb5\xde\x90U\xc1@\x87\xd3v\xc7\xf3W\xc1\xcb\xe1A<\xbb~W\xc1\x07\x08\x98N\x96\xedW\xc1!\x0c\x8b\xc2l\xe8H\xc1\x9d\x08(\xbe]\x16J\xc1z \x83c\x1fIW\xc18\xca\xb2:\xa9\x81@\xc1\x80&\xe6\x18v\x939\xc1\xcf\x8d\xf3oF\xb7:\xc1\xf8\xf0\x92\xaa\xcedA\xc1g\xe1\x15\x10\xf8\x10 \xc1*\x16\'\xaeQM \xc1\x82\xd5\xa8?\x9dYE\xc1\xf9\x99\xb6\xece\xb4I\xc1\x0c\xcc\xdd\xe1\x14\xd6H\xc1\xf7\xe2Q\xdcP\xdb1\xc1\xd0]\x1b\xaf\x03\xc9,\xc1^\xa4\xf1\x1c\x896\x1f\xc1\xaa\xc3\xc6\xb1\x8bTN\xc1A\xd0\x1a\xb1e~M\xc16\xbc\x94\x1e\xb1\x80P\xc1\xb7\xbfB*\xf5\x02P\xc1$\xdb\x86\xfc\xcc}8\xc1@\xf1\xa0\xc7\t3X\xc1\xeetO\xcb\x0f\xdfO\xc1\xea\xa4\x1fE\x9dYV\xc13\xda"\xc4k)V\xc1\x15b\x81\x19\xe9\xda!\xc1jI\x1b\xa3\xf6\x034\xc1\x1f6o\xafQ\xa3!\xc1\xec2\x96K\xa7\xc80\xc1U\xd3\x89\x00\x18UV\xc14\xfb\x9b\x06\xd7\xc9/\xc1\xc10t\x8a\x11\xb32\xc1\xe4\x04\xeb\xe8\x9ai!\xc1\xd7\x13\xcb\xf9!\x1c8\xc1\x8c\x9f7\x04\x02\xbaT\xc1|f\x01\x94\xfe~$\xc1\xff\n9\xa7\x9e)7\xc1\xaf^\x18\xb6\x13\x95S\xc1\xeb\x83\xf5\xb7\xe2\x18T\xc1\x96A=\xe1\x0f(U\xc1\x87\\\x83\xf8\x1c]R\xc1\x00L\x9da\xe5-/\xc1w\xb2\x0b{\t\x8aJ\xc1\xa9\x84\x8b\\\xe4\xe4F\xc1\xe9XI\xad \x13F\xc1\xd7\xae_F\xc0\xf4I\xc1\x1c\xbf5\xda\xda\x10%\xc1:$\x82\x8b\x80\xdcV\xc1 \xbf\x07qT\x03F\xc1j\x89\x1f\xc0\x84\xf7H\xc1@winD\x9aJ\xc1_W\x94\xe0\xab|7\xc1\x8f\xdf\xb3\xeb\xa6W@\xc14\xcc\xd8\xe4R\x9d=\xc1\x0f\xc7RE\xf8\xdbN\xc1\xa0\xae\xfb\xb7\xa9\x95-\xc1\xfd[\xed\x0c^\xfb!\xc1\xfe\xcd\xb05\xc9@0\xc1\xac\xb6\x8a\x08\xae\x99@\xc1\x87\x83ujd\xd06\xc16\xe6s[yq9\xc1\xb5\xc4\xcc1\r\xbc \xc1R \xe21M\x8eT\xc1\xf3\xe6\xeeTq\xc6S\xc1\xb1\x06\x05B9\x821\xc14\x04\xd8\x80\xa1\xcaJ\xc1\x82\x1f2\xc7\xea\x16M\xc1"h\x18\x84\xfe)U\xc1\x88\xc2L\xf8`UD\xc1\x02\xce\x85\xe1\xebQR\xc10&#\x9b\x99\xffV\xc1`!?\xfcH\xebP\xc1\x9e\x8c\x9d\xefL)V\xc1\xd6g\xda\x96\xd9\xbc8\xc1P\x02\xc4n\xd4\x112\xc1\x8b\xa7\xf7\xf3\xa5@<\xc1`MK\x91*\x18S\xc1\xee}\x03\xfa\xe1\xa5Q\xc1\xf9J;Dh\xccR\xc1\xc3\xa1$\xf4\x8b\xa9U\xc1\xa8\xa0\xdc\x9a\xe9lC\xc1$Ez\xe4\xf7%>\xc1V\xa8X\xd2\xccGF\xc1\x89G\xc6r\x15\xc4C\xc1\xf3\xdc\xf0\xa0a\x9aP\xc1\'J\xde\xf6^\xc99\xc1\x07\x0f9\xd9\xb70.\xc1\x9e,Y\xe1\tX0\xc1\xce\x10U\xcbR9:\xc1\xdd\xb5\x84V\xee5U\xc1i\xd0\x99y\xa5\xceL\xc1\xe3@b\x98\xfd6O\xc1\xf7|\xbd.\xf1|P\xc18\x9e;\xfdZ?@\xc1j#y\xc68\x99\x1e\xc1R\xe3\xf3\xf6\xd9\xe1Q\xc10\xf7v\xafqmT\xc1E\x80G\xbeF\x04N\xc1\xb9)\x89\xb5Fb\x19\xc1\xd7\xe0&\x00\xfbUQ\xc1\xdea\x9f\xe2\xd9\x01S\xc1\x98 O8\xa2\tQ\xc1\xd0\xe3\xd4]I\xe6R\xc12\x17t\x7f\xac\t \xc18X\xe38|t\x1c\xc1\xcf\xe9\x86\x14$#H\xc1\xa1\xdfF\xd6\x93\x8eN\xc1%\x94\x99\xc1\xeb\xbfK\xc1\x06\xfc\x02\x1a1qU\xc1\xe9\xfa+\xeeR>T\xc1\x14\x14\x8f-\xae\xc1!\xc1\xe1\xb1|!9lF\xc1Psk\xec\xec\x04A\xc1Y\xd9\xc1\xde7^G\xc1\xf8\xebf\xfb\xb4\xf0K\xc1\xe9OL\x06S\x0cN\xc1hV\x18\x7f?FB\xc1\x1fbyG\x9bg<\xc1\xcc%\xd1\xb7\xb4\xddA\xc1;\x14I\xb8_\xf6I\xc1F\x00+a\xe8oJ\xc1*%kvAID\xc1|f\x99\xb2\x9e\xadA\xc1\x88\x0e\x18\x86e\xadD\xc1;\x92\x86-\xe2\x84L\xc1%\xe3y}\xd8\xabH\xc19\xd1\x1f\x8bf\xa6K\xc1\x1a\x92\x05\xd8\xb9\xdaF\xc1\xd7N*\xb3\x04fR\xc1fB,.\x9f+S\xc1\xa7\x85\x04\xfa\xc2aQ\xc1O\rh4JVR\xc1\xd1\x01oP\xf9_T\xc1T\xb7+\x9a\xd3\xf8R\xc1$\x01\xb2\x12\xfc\x84S\xc1\xfdv.H\xcf\x95W\xc1)3yx\xbd\xd7W\xc1\xc7\x8d\x0eE\xf2.W\xc1\x89\x1e\xbe\x0cw\xabJ\xc1\xb4\x0e\xc9H>pJ\xc1\x97\xc0h\xfdE9M\xc1GX\xf9b\xa2\xed0\xc1\xc4\x05K\x9a\xf3pO\xc1gr\xc6\xa0\x85\xaeJ\xc1\xde\x80\xce\x02\xd5Z!\xc1\xd6\x9f\xa7iY\xd9%\xc1CS\x1e#\xca9W\xc1\x11\x1f\x872\xb5\x9dQ\xc1\xa6\xa8>\xab\xe4\x86R\xc1\xb5\x17\x9b\x8b\x9eD3\xc1\xf2FB\xa9~\xc01\xc1\xb6\x0c\xb4\x1b\xd3\xb7:\xc1\xbb1fj\xa4\xe8F\xc1Aw\x9a}a\xe2B\xc1\xe9G\xd3\x07DUF\xc1\x14K\x15\xa2\xd8\xb2A\xc1kH\t~\x0b%0\xc1b\xf9\xd8\x02C/!\xc1\x10\xd37\xbc\x12\xcf\x1c\xc1\xc3\x9ba\n\x9e\x08T\xc1\xdb\xd9\x9f\xa8\xc8\x9dU\xc1\x8d.\x00L\xa4\xc6V\xc1bX\x1d\x19\xe1uW\xc1\xc8\xda0W\xad\xa78\xc1\xa5\x02 e\x0faA\xc1\xdd\xba\x9096\x8dC\xc14a\x06\n\r\xbf?\xc1\xfdq\x82\xd6$X<\xc1&u\x17\x1f\xa36&\xc1o@t\xa6o\x99\x1d\xc1M\xacWXeOB\xc1\x99_\x89~\xca\xc6<\xc1;Q\xd6\x8d~\xe3V\xc1yA;\'2JV\xc1o\xd1E\x05\xc4\xfdW\xc1eP\'T[0X\xc1\xb5\x07@\xfbK\xd72\xc1\xe9T0\xb9?\xdb5\xc1\x1b\x94F\xe0\xf7W"\xc18\xc6\xda \x1f\xd48\xc1\x97W[_\xe3\xc40\xc1\x91R4\x9d\x9c\xc73\xc1\x12ra\xf7^\xceI\xc1\xc0\x976\x9b@\xf2J\xc1[n\xd6\x9a\x96QE\xc1%\xe8\xbb\x18*\x00H\xc1\xee\x85\xf1\xe5\x0fG6\xc1\x89\x0f\xa0O\xf8\x9d/\xc1\xaf\xc2\x80{\x1d\xfd&\xc1=\xe2\xe4F\x85\xe7J\xc1\xac\x156\'\xeb2N\xc1\x8a\xc4\x06\xb3\xf6\xd5M\xc1\x03\x917\xbe\xa6\x1dT\xc1\x17:|\xf1v\xd5T\xc1\xe5\xf9\xb91\x9afP\xc1D\xa9\xd9\x92\xde\x00F\xc1C<\x82\xc2\xa16V\xc1\xd0B/m\xd45R\xc1\xddz\x053y\xc7P\xc1\xc5\x0e\xb6\xa6\xd8\xb5P\xc1g\xc6\xd2\xb4\xaf[U\xc1g\xe4\x96q\xe5\x1aV\xc1\xadl\x13\xdf\xedXU\xc1\x028W\x97L\xa8S\xc1o\xee\xc2\xb6\x07\x83N\xc1wK\xdeR\xd9\xe2E\xc1z\x04v\xd6T>B\xc1\xefH\xb6\xf8cGA\xc1\xea&\xc4\xc8\x8e(U\xc1\xdd\xd2Y$\x91TV\xc1\xfd\xa8\x19\xe1\xd5uL\xc1\xc0F\xa5]\x94"J\xc1\xea*\xb9\xdc\xd2\xa8M\xc1\xbb\xcb\xfeI\xe7\xe2;\xc1\xcb\x05\x01/\xc7\x00Q\xc1\xb35\x91\xb7\xd7\xb8R\xc1\xca\xa9Y\x8aG\x97Q\xc1\xdaS3\x11M\xf0E\xc1\x1d\xbd\xe5\xa5\xb8\xa4O\xc1E\xa5\x1e\xfa\xb52"\xc1\xd6\x1f,a*\x05:\xc1\xff\x00`\xbcu\x14S\xc1\x92+\x88\t\xe9LT\xc1K\xb6\xf5\xb1\x97\'.\xc1G\xfd\x92\x84xk4\xc1-\xf0\xfb\xc5\xdee\x1b\xc1\x88\xe1\xea\xfe/\tD\xc1\x7f\x0c\xddb\xd4\xcdS\xc16\x9d\xc3bk_E\xc1i\xc5j\xb6w\x0bE\xc1x4\x99\xcd\xa8\x12A\xc1\x97\x16\xf5\xa6\xf3\x96V\xc1\xfe\x07/\xb9&l:\xc1\xd72\xe1\xc6\x10nU\xc1\xe4\xb84HWWP\xc1\xd4\xb8\xd5\x10\xe1\xf2!\xc1\xf3\x15P\x0e\x17\xe8F\xc1\x10\xa4*41AB\xc1+\xb7\x91\x1c\xe4\xc6B\xc12Q\xf3\xc5Q\xbc4\xc1\xf0\xdb\x8d(\xcc\xb2T\xc1\xbd\x14s\x1d\x00fI\xc1\xb2\xf3X\xb7\xcb\xc0U\xc1\xbc\xd1\xbe\x95\xb8\xaeL\xc1(\xf0\xb7\x16\x11[I\xc1\xd3K\x06\x00\xb4\xc1\x1e\xc1$<H\xc3O&B\xc1\x93\x00\xd7\x13\xe6\xcb \xc1\xda\xb83:\xba\xd9#\xc1\xed\x93\xae\xd0\xbc\xaf \xc1\x95\xea\x18\\\x92\xdc=\xc1\xfbCF\xb4h\xec=\xc1Z\xd2x\x17\xa2\x8b/\xc1\x85\x15\xee\xf7\xaa\x9fN\xc1)(\xe4S\x94\x15.\xc1<\x8b\xc3\xa6t\x8bO\xc1\xe0\xec\x17\rf\x18R\xc1\xe4\xcd\x02\xc0\x05<Q\xc1(\xd5\x85\xeb\x10\xa5@\xc1\xf3>\x87IQ\xb92\xc1hi\xcb<\xebI<\xc1\xccw\xb4\xa2\xb0ONA\x99\x19\xd3Z\xf2\x7fQA\xd8[\xa7\x12M\xcfTA\xe5\x11w\x9d||UA\x9a\x9d\xc8 \xca\xa0SA\xfb\xe7\x83T\x1d\x16SA\x83wz\xe3~\x0c1Aa\xfe\xf93$\xd1\x1eA\x14W0gz\x91%A\x00Hm/OZIA\xd7\xff\xff\xf9"\x07KA\xb3\x07S\xc5n\x8aBA\xd0\xf2\x84H\xe8#FA\x173\xd9\xc2\xe7D@AwK\x07uj*FA\xdd\xe8\x01\r\xcb\x94&A:(t\x1crwPA\xaf\xc1B\x1e\x7f\xb6NAA\xab\xc0/\x1a%QA\r\xa3\x0b\xe7m!RA\x10\x89e\xb2\xad\x01QA,\x00\x80nLzPA\x84\x949\x80;\x98MA\x04\xc0\xc8\x95\xad\xd3RAh\xa0|\x0c\x8d<<A\xd0\x9b3\x80\x9c\x9a6A\x10\x8e\x80\xc0V\x1dFA\x15{X|\x8cVUA\xb25!,\xc8\x06UA\xe3\xd8\r\xe8^&VA\xce\x940\xcb^\xb1UA\xafK\x0c4.\xce!AP\x02\xdao\x94K#A\x8a\x88\x0c\xab\xbc\xe6;A\xb9\x9d\xb5\xfb\xd9\x81 A\x91}G{\xd9\xc41A\x04u8\x1c\x13`FAz\xe9i\xd7\xec\'AA\x02\t^\x96\xe5hBA\x8d\xd4J\xc0Z\r;A\xa6\x95\x9e9\xfe\xb7LA&\xd3\xe8\x12\x8d\x10MA\x9a\xb9Li\xa8\xb6OA\xdf\x9aU\x13\x1d\xe8IAm\x14\xbb\xb5U\xf88A:\xfd"\xbb\\\xd6AA^\xbf(\xd7\xff\xc1+A\xfd\xa5\xd9\xc2r\x84VA\x96!\xfb\xbc\xa7x7AG=\xadB\x7f\xe8#A\xb52H}\xb3A/A\xee\xca\xb9\xa6\xa4 ;A\x8d\xe8\x8a\x1c\xfc\xbc6A\x9d\xc1\n\x0cg\xe8\x1bA\xc1\xf4\xff\xe2O\x884A\xd9$C\xfcL\xf2 Ag\xc1Lm\xe6\x91/Ac\xbe1Vw\xc51A~Dp.\x8c\xc5\x1eA#H\xe5\xa40\x86BA\xddf\xfe\xdb\x85\x96BAT\xeaW\x87\x80&EA\x18f\x0b\x12\xfa\xcbVAV_\\\xeb}\x89WA/\xa6\xf2\'\xcb\nWA\xfc\xa5\xb2\x8c\xfeHTA\xea\xaa\xbe\xdb\x07\xa8SA\x17d;\xeb\xda4TA\x8c\x9b\xa1zd\x87QA\xb6\xcc!\xbc!\x08OA^\xcf\x04S\x08tLA\xaa\x7fX\x0c\x15\x9cNA\xebO\xd6\xc0S\xdeVA\xfcMwv?dWA5\x1ei\x05\xca\x98GA\x16Bq3+\x87HA\xad\xac\xc3^\xa5e-A\xab\xec\xda\x89cm5A\xb4\xad\xf8KT\x80DAT\xbb\x95]s\x8b?A6\x97\xc0ak.AAc-\xa9\xe6Wq1A\xbf\x86Z\x7f\x01\xbd:A\xa2$\xb1\xe1\xa5\xe7EA\x85\x93\'A\xf8&JA&\x08\xef\x1c\xc2\xa9HA\xa7\rv\x8a{JLA<\xb3\xcc\xc8\xf3\xb2KA\r\x15T\x88\xc5\xbcBA8\xd8gQ\x01\xba@A{\xf2\x82\x9e\x98= A\xcb\x887\xe5N\x0f\x1aA\x05^D\xc6\xdf\'BAm\x05Jj\xb7{HA\x9cDy\x98DAEA\xb8<\x9a\xc3\x84JOA?8\x0f\xd3\xc1DNA@\x1fc\xe6+tSA\xed@\xd1\xf6\x03\xe8EAo\x1b\xb6\x9d\xd3UUA\x17\xb9\xf8\xadS\xfbWA\xb0\xe2s\xa2|\xbaWA\xf3\x04P\x08\xe6\x93DA\x88Q;\x0b\x87$XAp8a\xb2\xc4\x07SA^\x94\x1a\x15\xd8\xc8RA\x85\xfe\xa0]1\xd8FA-,\xfe%\xad` A\x98\r)\xcfb\xd6\x1bA4\xaf\x8b\xdafL.A\xc8_\xbbD\x88?TAO\xbf\xfe\xd1\x80\x8c9A\xe8\x15j\xfcEo2A\xdd\x96\xf9/Uc@A\xfe\x9a\x16\x98\xd4\xbb0AqX\xdb\'\xab\xbc<A\xfd\xa5EU3RTAR\xe3\x1b}\xa3\x1eSA\xe3M@Q\x8a\xd8QAG!\x85s\xa4\x9eQAH)\x7f\xe1\xd2\x13JA\xf1\xd6VM\xc5CKA\xc3j\xd5\xdd\xdf\x86\x1bA"\'\xb2:\xe510A\xb4\xf0\xa3\xf8\xe0\x8b4Al\xccLSp\xefQA\x90\xcd\xbf\x16\x1e\x9fFA\xeb\x1dt\x1b\xce\xf9PA\xdc\xdf\x1b\xa6\xa28OAb+\xf7\xc3\xda\xe6\x1aA\xf4{\xf9\xf4\xba\x18VA\x14\xdd\x0er8\xaaNA\x9429\xad\xabjQA\x19x\x94\xf4\xbb\xe2JA\xe7\x10\x8e5f\x9bJA\xd6\x00\xf1\xb2\xba2JA\xcd1\xe6\xf6|\xe40\xc1\x8c*\xac\x9b\x0b\x1c%\xc1\xe3\xd9\'\x93\x19T\x1f\xc1\x06\xf5\xd8\xcb\xb9\xf7F\xc1\x0e\xd5\xd4D[\xbfG\xc1\xfc\xd4\x05\xb0\xc0\xcfK\xc1\x9ex\xf4W\x06\xd6O\xc1\xa2\x86\xb8\x1b\xc1\x12N\xc1v\x98[\x1c\xa6\xf1P\xc1\xd0\xf1w\x07\x19\x9bW\xc1\xc1\xce\xa5"\x986W\xc1P\xc3~\xc6*\x1dW\xc1\xe4\xe9\x14\xd9]OK\xc1)eI\xa8R\'\'\xc1\x0e\xeezB\xf3x!\xc1\x83\x9c\x14\xab\xc2\xc8"\xc1u\xb2q\x8b\xcf\xc3!\xc1k\xca\xee\x11\xda\xe2%\xc1\xd2\xbf\xe5I\x19NR\xc1"\xff\xea\xe9\xa3YS\xc1\xec\x8ez\xa1{\x85S\xc1-\x8f\x90\x9d3\r@\xc1w\x03\x1f\xf5\xbe\xed6\xc1\xde\x82\xb4\xd5\xf5\xbf4\xc1\x08\x8e\xf5\\e\xbc8\xc1&M\x1ew\xb0\xd9A\xc1\xdf\xe7>\x08\x17\xe0%\xc1!\xc2\xe0\x82k\xa4:\xc1\xb5\x13hR\x9c8A\xc1\xfc\x99\x14\x8e\xbf\xca<\xc1eF\x1dI}\x85A\xc1\xf7\x10\x9dp\x18\xc4V\xc1I\xc2\x99\xcbVjW\xc1-\x98\xfd\xc1\xdc\xd6\x1d\xc1*k\xac9\xffh0\xc1\xbd\x1d\x17ycV5\xc16\xe3H\n\x94\x877\xc1S\xa4\x00S\xf9\x84M\xc19w\xabv#\x02P\xc1.)\xd187y4\xc1\x1b\xfd\x8e\xa6\x0f\x94R\xc1\x01\xf0\x9c(\xa9\x08Q\xc1\x8f\x05\xdf\xf6j\xabP\xc1\x91\xfc\x8c\xb8\xac\xd5V\xc1\xf2\xecw,zbV\xc1\xca\xbb\xf3i *L\xc1\x88f\xb02\x7f\x8dG\xc1\xff\xd2\\\x16<9H\xc1}\xcbh\xcd\x14\xac<\xc1\xbf\xc4lR\x92\xdcG\xc15\xe8\x1d\xf7D\xc3G\xc10\x9bP\x17\x88\x02L\xc1\xfe\xf0\x06U\xab\x1d2\xc1@8 1\xe5\x80J\xc1\xbb/0\x95\xa12Q\xc1\x16\xe1-\xb5\xd8\x9fN\xc1\xbb\x8d-E\x04\xcdN\xc1,\xc3)\xf4\x8ewP\xc1\x8b\x9c\xc6\xfcv\xf7J\xc1\xfdZh\xc8\x0fCN\xc1~[\xe5o\xe4\xd4I\xc10U\xe5d\x10\xf4W\xc1>8\xb5\xe0f1X\xc1\xc6\xd1k\xb8I\xdfW\xc1\xe5\x1c \xc0"\x93O\xc1i3>\x88\xab\x87Q\xc1\x9d\xe2\x1e\xb9a\xeaG\xc1&\xdb\xc3e\xc4\xa1I\xc1\x1fR}\x02q%L\xc1z\xe6\x04\x05\x98vM\xc1\xc8q\x1a^\xe9r!\xc1\xdf\xd1AnO\xbb \xc19\xe4\njpQT\xc1\x04\x8b\xae]\x1c\x9cU\xc1\x10\xb1w,\xb9.V\xc1[\xf0+;\x1aCQ\xc1\xac\xe6\xce\xb3=\xfeR\xc1\x93\x85\x8br\xf1\x95Q\xc1yW\xfa\x7f\x03\xbfR\xc1\xbe!\x85Q>\xbdQ\xc1U\x8e8\x1c\xd2\xceQ\xc1\x11\xc0F\xaf\x95\x16\x15\xc1e\x88\x01\xafC\xd1C\xc11\xc4\\\xd9\r\xf3R\xc1\x13\x034\xd5s|T\xc1\xc3W\xdc-\xcd\xebT\xc1\x8d5\xce\xf2\xe6\xc3S\xc1\x84Rq#\x143S\xc1\x98K\x0f\x83(RT\xc1\x11\x8c\xb3\xcb\xc3?V\xc1\xc8\xbe\x11\xa25oT\xc1Z\xc0\xeaNT\xe0@\xc1\xef\xdf\x07\xf5}6:\xc1\xf5\xb8\x7f3\x9d\xebT\xc1\xe1\x96|8X\xb2U\xc1\x06\rkX5NT\xc1Od\x9d\xd6}`\x1b\xc1\xd4\x83;\'\xc8Z0\xc1\xbb\x8bI\xceZ\x80P\xc1GZa\n\xfaI"\xc1>X\xf2@I\x95V\xc1:\x94\n4#{U\xc1\xc4s\xe1K\x9bd@\xc1_\xc4Ph\xb1I4\xc1I\xb8Y\x13\xd6QD\xc1\xb1\x83A\x16\x07\xb2E\xc1\xde\xb8\x95U\xe5\xf40\xc1\xea\xed\x8d\xa0\x05U0\xc1\x0c\x05\xb1 \xa9j\x1b\xc1B\x7f\xef\xac\xc8\xab9\xc1\xc3^E\xda\xb93D\xc1\xfa(\xdb\xa7\xd2AS\xc1\x19\x15{\x16?\xd09\xc1\x86\x89[\xc9y\xabA\xc1\x8a\xfa\x98\xc0r\xadE\xc1*\x98%\x08\xfd\xa2E\xc1L6,!\xa5\x05-\xc1S\xa2\xb4\xae\t\xb0\x18\xc1yN\xaa\xc9?%;\xc1[\x96\x8dtv\xe52\xc1cN\x89\xf2\xf4\x97F\xc1o\x86\x95\x8f\xf5eR\xc1k^\x0c\x87\xf5jO\xc1\x1fr\x04\x1f\xbb\x85W\xc1\xf9\xc79\x06\xe2AA\xc1\xb4\x8b\xc6\x9f\x14~<\xc1\x9fz\xbe\xd5u\x188\xc1\x15\xc7\xf5\xa2jlC\xc1E\x08\xc0\x0c(\xa8@\xc17\x02\xb5\x0e\x97\xa7C\xc1i\xa4@\x93\xcf9C\xc1\x84h\x8e\x9c+\xb0E\xc1\xf9\x12\x0b\xa7s\x13?\xc1\x9d\x0b\x16H\x11\x1eJ\xc1_\x13\xca\x03\x8bE2\xc1*\x9f(}\x0eSR\xc1?\xdd\xde\xd7HLL\xc1\x9f\xfc&\xce?QE\xc1N\xf3\x9e5y\xdbU\xc1g\xe6\xaf%\xbe\x88J\xc1'
+p76
+tp77
+bsS'extractedvertices'
+p78
+Fnan
+sS'segments'
+p79
+Fnan
+sS'numberofelements'
+p80
+I2568
+sb.
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/SquareShelfConstrained.data.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/SquareShelfConstrained.data.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/SquareShelfConstrained.data.js	(revision 27955)
@@ -0,0 +1,1974 @@
+var x =[ 0, //{{{
+    1000000.00,
+    1000000.00,
+             0,
+     500000.00,
+     500000.00,
+    1000000.00,
+     500000.00,
+             0,
+     750000.00,
+     250000.00,
+     250000.00,
+     750000.00,
+    1000000.00,
+     750000.00,
+     625000.00,
+     875000.00,
+     750000.00,
+     625000.00,
+     562500.00,
+     625000.00,
+     687500.00,
+     687500.00,
+     718750.00,
+     875000.00,
+     792968.75,
+     687500.00,
+     750651.04,
+     812500.00,
+     784376.26,
+     812500.00,
+     737044.20,
+     711415.45,
+     619808.98,
+     679903.16,
+     875000.00,
+     816565.05,
+     790340.66,
+     879033.53,
+     820390.62,
+     759468.98,
+    1000000.00,
+     702320.86,
+     894268.51,
+     743370.58,
+     756140.79,
+     870143.86,
+    1000000.00,
+     941365.26,
+     927759.20,
+     835259.33,
+    1000000.00,
+     683743.63,
+     843782.67,
+     943774.60,
+     728886.91,
+     703008.76,
+     617381.75,
+     725024.94,
+     815309.94,
+     864434.02,
+     923153.03,
+     839208.76,
+     790417.28,
+     811985.49,
+     904485.58,
+    1000000.00,
+     764145.24,
+    1000000.00,
+     803825.28,
+     805004.84,
+    1000000.00,
+     897809.81,
+     856709.28,
+     849378.44,
+     880439.03,
+     874923.01,
+     926298.65,
+     850818.89,
+     773165.13,
+     821586.23,
+     750000.00,
+     838262.90,
+     843656.20,
+    1000000.00,
+     923364.60,
+    1000000.00,
+     947000.54,
+     951408.71,
+    1000000.00,
+     941348.21,
+     955296.62,
+     908023.58,
+     562500.00,
+     250000.00,
+     631606.65,
+     528507.30,
+     576013.63,
+     577293.44,
+     535671.78,
+     502260.83,
+     455537.02,
+     492730.44,
+     375000.00,
+     558796.01,
+     437500.00,
+     406250.00,
+     523391.71,
+     471037.47,
+     357447.01,
+     414577.09,
+     371858.37,
+     406507.82,
+     333442.08,
+     431668.11,
+     282518.77,
+     329423.36,
+     292139.49,
+     532046.01,
+     612510.98,
+     455486.33,
+     312500.00,
+             0,
+     327477.57,
+     528654.71,
+     440987.54,
+     576170.41,
+     490525.44,
+     445996.32,
+     603292.83,
+     638938.30,
+     678235.71,
+     661669.03,
+     215117.76,
+     332210.28,
+     669283.27,
+     667292.83,
+     568893.78,
+     608536.87,
+     555812.71,
+     660330.04,
+     676819.27,
+     727629.11,
+     620541.50,
+     590910.90,
+     569641.27,
+     551966.23,
+     498954.02,
+     483275.96,
+     760325.72,
+     700090.45,
+     772962.54,
+     508900.23,
+     442063.96,
+     645432.38,
+     599915.31,
+     609769.65,
+     512359.02,
+     672668.03,
+     449356.47,
+     352874.69,
+     404046.43,
+     385658.72,
+     382051.86,
+     268990.07,
+     382316.37,
+     322143.60,
+     398597.44,
+     246074.32,
+     325043.39,
+     272789.22,
+     169268.75,
+     224121.33,
+             0,
+     190250.64,
+     220642.79,
+     262363.99,
+     727971.89,
+     731757.70,
+     782353.48,
+     714788.34,
+     793570.57,
+     648067.15,
+     875000.00,
+     785216.54,
+     886603.37,
+     847230.22,
+     835381.89,
+     902841.78,
+     812500.00,
+     873594.69,
+     937500.00,
+     934993.85,
+    1000000.00,
+     956423.95,
+     934982.86,
+     431714.85,
+     375712.88,
+     208581.66,
+     543451.44,
+     625000.00,
+     292441.32,
+     219943.28,
+     173276.46,
+     255248.48,
+             0,
+     133383.78,
+     322294.88,
+     102245.78,
+     588925.13,
+     536316.75,
+     608474.93,
+     720734.45,
+     682677.77,
+     687500.00,
+     326922.57,
+     278769.51,
+     340100.93,
+     182890.39,
+     302010.56,
+     226879.14,
+     175206.51,
+     233160.67,
+     166331.80,
+     299277.36,
+     250000.00,
+     396132.12,
+     348745.04,
+     343516.37,
+     562500.00,
+     531250.00,
+     375000.00,
+     437500.00,
+     480127.31,
+     486755.23,
+     437500.00,
+     418753.58,
+     348418.56,
+     215190.87,
+             0,
+     475106.46,
+     450403.05,
+     462691.02,
+     490774.65,
+     444026.71,
+     442305.62,
+     106797.52,
+     156735.92,
+     125000.00,
+      88484.21,
+     175049.24,
+    1000000.00,
+     949486.27,
+     910659.68,
+     264470.56,
+     187500.00,
+     156250.00,
+      70150.11,
+     210176.80,
+     121372.74,
+     230344.80,
+     446594.38,
+     635173.42,
+    1000000.00,
+     191736.12,
+     143967.18,
+     208897.91,
+     154003.12,
+             0,
+      70969.18,
+     214394.01,
+     280158.83,
+     192618.72,
+     125000.00,
+     249231.59,
+     140263.51,
+     291112.70,
+     313365.54,
+     364113.09,
+     295977.82,
+      76015.00,
+     187500.00,
+     218750.00,
+     156250.00,
+     102877.29,
+      62500.00,
+             0,
+      50433.46,
+     312500.00,
+     400218.61,
+     401492.48,
+     363132.76,
+      98732.17,
+             0,
+      39542.29,
+     330682.47,
+      43070.27,
+     106669.47,
+      57457.06,
+             0,
+             0,
+      50794.52,
+      97418.47,
+      62039.94,
+     143821.44,
+     119380.50,
+      44732.05,
+             0,
+             0,
+      66521.34,
+      69603.39,
+      43959.82,
+      43762.58,
+      93564.32,
+      44263.93,
+     117747.91,
+     139478.83,
+     124387.95,
+             0,
+      48631.61,
+      53659.39,
+      99563.52,
+     659034.30,
+     194316.29,
+     213251.06,
+     400950.40,
+     535853.28,
+     517149.04,
+             0,
+      41128.00,
+      50958.58,
+      72804.35,
+      62500.00,
+             0,
+     857793.90,
+     937500.00,
+     937500.00,
+     901657.70,
+     937500.00,
+    1000000.00]; //}}}
+var y=[ 0, //{{{
+             0,
+    1000000.00,
+    1000000.00,
+     500000.00,
+             0,
+     500000.00,
+    1000000.00,
+     500000.00,
+     750000.00,
+     250000.00,
+     750000.00,
+     500000.00,
+     750000.00,
+    1000000.00,
+     875000.00,
+     875000.00,
+     875000.00,
+    1000000.00,
+     937500.00,
+     937500.00,
+     906250.00,
+    1000000.00,
+     953125.00,
+    1000000.00,
+     937500.00,
+     828125.00,
+     920572.92,
+     878051.76,
+     812500.00,
+    1000000.00,
+     827170.23,
+     783194.86,
+     763264.44,
+     707543.97,
+     721951.29,
+     754091.69,
+     637221.80,
+     798475.65,
+     691856.09,
+     689783.04,
+     625000.00,
+     620870.45,
+     615640.57,
+     644980.88,
+     576238.43,
+     666169.59,
+     687500.00,
+     718750.00,
+     662653.98,
+     829478.44,
+     875000.00,
+     543703.29,
+     530812.60,
+     784862.85,
+     540067.13,
+     500834.56,
+     488117.17,
+     417114.77,
+     583137.43,
+     575959.28,
+     521802.97,
+     626976.87,
+     535111.03,
+     469465.03,
+     758765.61,
+     812500.00,
+     450532.37,
+     250000.00,
+     364474.06,
+     417194.98,
+     375000.00,
+     431402.06,
+     389664.51,
+     437988.85,
+     485024.68,
+     283320.55,
+     362242.64,
+     333923.92,
+     265892.28,
+     288956.91,
+             0,
+     191587.33,
+     242623.96,
+     125000.00,
+     213744.02,
+     437500.00,
+     466364.65,
+     411369.19,
+     312500.00,
+     281250.00,
+     325736.34,
+     317956.14,
+    1000000.00,
+    1000000.00,
+     818704.70,
+     835140.58,
+     801559.48,
+     853763.55,
+     889585.37,
+     939760.83,
+     872436.66,
+     734134.40,
+    1000000.00,
+     737678.54,
+    1000000.00,
+     930524.50,
+     780113.29,
+     812731.80,
+     815106.21,
+     829938.20,
+     877039.54,
+     743576.31,
+     939541.44,
+     784783.37,
+     865184.74,
+     854270.44,
+     800285.94,
+     618790.44,
+     695127.75,
+     922347.37,
+    1000000.00,
+     750000.00,
+     727873.35,
+     682006.93,
+     660032.60,
+     652856.74,
+     648262.24,
+     570982.80,
+     572117.19,
+     635651.50,
+     660876.82,
+     589837.26,
+     822030.59,
+     775011.93,
+     756356.32,
+     446687.43,
+     378923.73,
+     426682.39,
+     465627.29,
+     343357.76,
+     394146.07,
+     349578.94,
+     376385.08,
+     300208.01,
+     523291.43,
+     571482.87,
+     577008.32,
+     410345.02,
+     384657.84,
+     280362.49,
+     320014.02,
+     451952.45,
+     464419.94,
+     289909.55,
+     198407.22,
+     250577.47,
+     241961.37,
+     211680.91,
+     517504.82,
+     538287.18,
+     541502.43,
+     612254.76,
+     482738.10,
+     458789.56,
+     376142.77,
+     486708.47,
+     429481.16,
+     566975.56,
+     416629.96,
+     516114.28,
+     494186.76,
+     490551.45,
+     250000.00,
+     395130.61,
+     438064.38,
+     376306.64,
+     229415.05,
+     122509.49,
+     208273.89,
+     175428.37,
+     143850.07,
+     140502.99,
+             0,
+      67856.86,
+     101540.82,
+     138402.56,
+      86288.28,
+     158344.27,
+             0,
+      51593.97,
+             0,
+      62270.01,
+     187500.00,
+     156250.00,
+     111705.85,
+     614845.27,
+     679697.99,
+     317812.85,
+     102480.06,
+             0,
+     644558.17,
+     361338.44,
+     350274.35,
+     328876.94,
+     375000.00,
+     271457.22,
+     343067.08,
+     402793.01,
+     140294.94,
+     180339.60,
+      70536.35,
+      58255.14,
+      97856.74,
+             0,
+     679082.32,
+     704028.74,
+     631439.06,
+     676013.97,
+     586192.29,
+     703542.79,
+     758241.27,
+     644595.87,
+     593593.21,
+     286334.17,
+             0,
+     280074.28,
+     299300.04,
+     218400.54,
+             0,
+      47201.74,
+             0,
+      75323.67,
+      47102.18,
+     103417.45,
+             0,
+     165415.80,
+     584511.32,
+     777604.49,
+     875000.00,
+     192009.96,
+     249299.90,
+     145315.40,
+     324936.76,
+     301296.02,
+     362740.14,
+     845423.29,
+     814178.18,
+    1000000.00,
+     760623.21,
+     898978.26,
+     562500.00,
+     593750.00,
+     567168.26,
+     932160.89,
+    1000000.00,
+     952573.37,
+     929849.89,
+     941394.35,
+     910245.08,
+     887045.13,
+     711233.62,
+     534282.83,
+      62500.00,
+     260968.98,
+     162770.50,
+     191902.67,
+     218606.39,
+     125000.00,
+     204711.03,
+      92726.84,
+     185075.65,
+     141260.30,
+             0,
+     137508.90,
+      88618.69,
+      68986.34,
+     129647.50,
+      76619.17,
+     231890.83,
+     128996.12,
+             0,
+      41199.93,
+      40241.38,
+      49434.20,
+             0,
+      65536.00,
+      51062.77,
+             0,
+      42666.40,
+     114827.65,
+     156155.21,
+     168535.63,
+     187500.00,
+      97803.02,
+      43445.41,
+     164826.19,
+     334482.71,
+     365594.16,
+     437500.00,
+     312500.00,
+     419179.12,
+     476605.37,
+     281250.00,
+     442576.08,
+     542459.43,
+     471741.14,
+     625000.00,
+     562500.00,
+     523498.57,
+     598067.34,
+     322564.20,
+     240327.37,
+     246137.38,
+     561766.58,
+     591080.84,
+     641861.77,
+     705710.88,
+     687500.00,
+     718750.00,
+     657460.18,
+     666135.63,
+      47644.44,
+     544673.40,
+     601399.14,
+     220045.66,
+     292367.99,
+     370285.70,
+     812500.00,
+     781250.00,
+     836877.18,
+     880834.88,
+    1000000.00,
+     937500.00,
+     937500.00,
+     925824.50,
+    1000000.00,
+     959042.80,
+     861983.44,
+     937500.00]; //}}}
+var vx =[ 0, //{{{
+             0,
+             0,
+             0,
+          1.06,
+             0,
+             0,
+             0,
+             0,
+         98.52,
+         99.38,
+        -94.27,
+         -4.26,
+             0,
+             0,
+        106.36,
+        210.00,
+        192.06,
+             0,
+         48.30,
+         90.18,
+        158.39,
+             0,
+        122.10,
+             0,
+        204.38,
+        126.53,
+        201.33,
+        220.43,
+        160.49,
+             0,
+        151.85,
+        107.37,
+         54.44,
+         51.59,
+         97.47,
+        118.15,
+         45.15,
+        158.09,
+         74.73,
+         61.60,
+             0,
+         23.73,
+         47.66,
+         41.24,
+         17.36,
+         65.43,
+             0,
+         80.82,
+         58.32,
+        186.32,
+             0,
+          3.32,
+          1.41,
+        100.86,
+          5.30,
+         -1.51,
+         -1.87,
+        -22.02,
+         24.52,
+         24.83,
+         -2.09,
+         48.43,
+          2.90,
+        -11.16,
+        118.64,
+             0,
+        -15.04,
+             0,
+        -53.63,
+        -29.86,
+             0,
+        -34.85,
+        -45.14,
+        -26.83,
+         -9.00,
+        -95.11,
+        -51.45,
+        -72.33,
+        -95.02,
+        -92.08,
+             0,
+       -141.64,
+       -114.80,
+             0,
+       -108.28,
+             0,
+        -22.46,
+        -23.52,
+             0,
+        -63.36,
+        -45.08,
+        -68.59,
+             0,
+             0,
+         88.53,
+         24.42,
+         47.17,
+         65.40,
+         30.32,
+          2.87,
+        -32.11,
+         -1.11,
+             0,
+         19.72,
+             0,
+        -74.71,
+         13.31,
+        -12.68,
+        -85.39,
+        -52.31,
+        -98.96,
+        -31.91,
+       -126.23,
+        -33.15,
+       -168.78,
+       -127.85,
+       -113.05,
+          3.73,
+         25.88,
+        -28.14,
+             0,
+             0,
+        -54.29,
+          6.07,
+         -7.19,
+         11.34,
+         -0.16,
+         -0.22,
+          4.96,
+         16.50,
+         30.60,
+         11.89,
+       -167.77,
+        -80.40,
+         72.66,
+         -9.43,
+         -8.40,
+         -7.51,
+         -1.21,
+        -35.04,
+        -23.15,
+        -46.83,
+        -19.97,
+        -28.94,
+          0.88,
+          1.90,
+          1.58,
+          2.34,
+        -37.84,
+        -70.28,
+        -69.67,
+          0.93,
+          3.98,
+        -48.82,
+        -56.57,
+        -51.69,
+         -4.61,
+        -92.92,
+          1.22,
+         -1.98,
+         -0.14,
+         -6.83,
+          3.66,
+         13.06,
+         18.74,
+          5.90,
+          9.75,
+        -11.42,
+         18.20,
+          0.40,
+          4.48,
+          5.15,
+             0,
+         42.78,
+         23.87,
+         38.99,
+       -103.80,
+       -132.41,
+       -130.63,
+       -126.64,
+       -157.32,
+        -94.57,
+             0,
+       -125.29,
+       -139.68,
+       -152.66,
+       -151.02,
+       -127.20,
+             0,
+       -104.08,
+             0,
+        -69.03,
+             0,
+        -80.34,
+       -107.03,
+         -3.11,
+        -20.48,
+         74.88,
+        -27.50,
+             0,
+        -28.90,
+         51.47,
+         62.66,
+         59.36,
+             0,
+         99.89,
+         39.70,
+         45.08,
+        -58.14,
+        -21.77,
+        -58.26,
+        -97.48,
+       -107.06,
+             0,
+        -33.93,
+        -56.70,
+        -15.90,
+        -61.45,
+         -9.79,
+        -68.57,
+       -118.40,
+        -38.45,
+        -24.30,
+         67.95,
+             0,
+         37.44,
+         45.71,
+         81.87,
+             0,
+        -11.23,
+             0,
+         33.96,
+          6.22,
+          7.93,
+             0,
+         55.37,
+         -6.11,
+       -126.14,
+             0,
+         16.31,
+         20.66,
+         28.64,
+          0.85,
+         20.30,
+          8.57,
+       -180.75,
+       -174.45,
+             0,
+       -117.58,
+       -227.43,
+             0,
+         22.05,
+          6.36,
+       -175.77,
+             0,
+       -177.70,
+       -178.91,
+       -193.64,
+       -213.47,
+       -208.14,
+        -11.05,
+          2.37,
+             0,
+        104.62,
+        143.06,
+        136.85,
+        125.74,
+             0,
+         93.48,
+        147.01,
+        121.98,
+        154.33,
+             0,
+        148.01,
+        145.90,
+        112.62,
+        119.04,
+         78.25,
+         92.46,
+        118.43,
+             0,
+         93.51,
+        102.75,
+        109.77,
+             0,
+             0,
+         68.45,
+             0,
+         38.61,
+         64.65,
+         88.59,
+        123.38,
+             0,
+         75.40,
+         62.22,
+         79.75,
+         64.80,
+         44.90,
+             0,
+             0,
+         30.65,
+         16.75,
+         82.29,
+         29.52,
+         -7.98,
+         14.13,
+             0,
+             0,
+        -17.43,
+        -19.78,
+         39.27,
+         70.57,
+        103.88,
+         -7.47,
+        -23.11,
+        -49.25,
+        -87.42,
+             0,
+        -69.20,
+        -50.66,
+        -65.04,
+        -63.82,
+         -8.68,
+        -23.77,
+         53.60,
+        -14.42,
+         -1.64,
+             0,
+        -82.69,
+       -127.73,
+       -157.86,
+             0,
+             0,
+        220.71,
+        162.18,
+             0,
+        150.08,
+        150.12,
+             0]; //}}}
+var vy =[ 0, //{{{
+             0,
+             0,
+             0,
+       1619.49,
+             0,
+             0,
+             0,
+             0,
+       1392.27,
+       1188.56,
+       1395.65,
+       1452.44,
+             0,
+             0,
+       1298.38,
+        766.39,
+       1138.53,
+             0,
+        927.25,
+        877.20,
+       1081.21,
+             0,
+        638.61,
+             0,
+        705.43,
+       1382.70,
+        907.94,
+        979.15,
+       1227.77,
+             0,
+       1297.35,
+       1416.22,
+       1538.22,
+       1525.45,
+       1029.03,
+       1223.08,
+       1373.30,
+        909.03,
+       1262.65,
+       1419.06,
+             0,
+       1531.61,
+        995.93,
+       1462.65,
+       1455.20,
+       1092.03,
+             0,
+        616.34,
+        761.96,
+       1029.65,
+             0,
+       1552.90,
+       1226.70,
+        543.19,
+       1500.29,
+       1529.54,
+       1595.18,
+       1456.50,
+       1320.62,
+       1139.39,
+        816.26,
+       1233.00,
+       1380.17,
+       1306.29,
+        809.95,
+             0,
+       1405.50,
+             0,
+       1230.93,
+       1284.81,
+             0,
+        899.64,
+       1065.17,
+       1141.21,
+       1041.37,
+        838.78,
+        673.32,
+       1023.09,
+       1162.13,
+       1059.53,
+             0,
+        798.03,
+        892.42,
+             0,
+        495.54,
+             0,
+        580.56,
+        503.81,
+             0,
+        465.65,
+        395.83,
+        716.40,
+             0,
+             0,
+       1455.92,
+       1470.71,
+       1521.05,
+       1405.51,
+       1256.40,
+        917.14,
+       1352.49,
+       1600.45,
+             0,
+       1589.29,
+             0,
+        967.30,
+       1563.03,
+       1519.27,
+       1462.17,
+       1464.61,
+       1283.29,
+       1576.28,
+        852.51,
+       1551.33,
+       1237.14,
+       1332.92,
+       1407.55,
+       1619.57,
+       1588.68,
+       1029.47,
+             0,
+             0,
+       1524.91,
+       1613.84,
+       1611.70,
+       1609.22,
+       1619.00,
+       1616.90,
+       1605.97,
+       1585.52,
+       1547.54,
+       1573.97,
+       1205.85,
+       1491.46,
+       1506.09,
+       1546.38,
+       1582.85,
+       1584.62,
+       1611.28,
+       1486.20,
+       1509.30,
+       1393.33,
+       1547.02,
+       1494.59,
+       1614.65,
+       1618.48,
+       1621.38,
+       1602.99,
+       1364.42,
+       1345.20,
+       1256.72,
+       1614.07,
+       1610.59,
+       1432.10,
+       1265.45,
+       1397.92,
+       1424.33,
+       1236.84,
+       1616.96,
+       1586.97,
+       1607.97,
+       1601.76,
+       1597.01,
+       1476.70,
+       1554.73,
+       1549.11,
+       1591.19,
+       1462.44,
+       1529.48,
+       1500.68,
+       1250.40,
+       1407.74,
+             0,
+       1244.07,
+       1375.30,
+       1408.15,
+       1183.64,
+        803.25,
+       1006.75,
+       1054.70,
+        783.42,
+        997.80,
+             0,
+        449.58,
+        386.59,
+        619.74,
+        465.23,
+        474.56,
+             0,
+        247.34,
+             0,
+        167.10,
+             0,
+        235.10,
+        263.31,
+       1613.80,
+       1587.70,
+       1203.52,
+        837.02,
+             0,
+       1516.37,
+       1295.49,
+       1132.67,
+       1338.28,
+             0,
+        871.64,
+       1466.21,
+        907.04,
+       1032.52,
+       1232.40,
+        616.06,
+        456.63,
+        739.98,
+             0,
+       1546.05,
+       1474.90,
+       1573.91,
+       1287.44,
+       1540.92,
+       1386.17,
+       1191.36,
+       1429.80,
+       1258.43,
+       1353.32,
+             0,
+       1459.16,
+       1442.41,
+       1274.50,
+             0,
+        438.29,
+             0,
+        659.04,
+        435.91,
+        850.65,
+             0,
+       1151.04,
+       1584.37,
+       1284.45,
+             0,
+       1276.03,
+       1429.12,
+       1078.90,
+       1554.86,
+       1512.96,
+       1574.04,
+        745.50,
+       1027.16,
+             0,
+        780.09,
+        862.57,
+             0,
+        567.30,
+        891.65,
+        834.83,
+             0,
+        490.02,
+        361.35,
+        687.58,
+        615.29,
+       1042.57,
+       1603.74,
+       1590.74,
+             0,
+       1051.03,
+        666.22,
+        941.56,
+        841.37,
+             0,
+        453.67,
+        588.49,
+       1080.39,
+        738.85,
+             0,
+        849.76,
+        429.99,
+        548.42,
+        904.98,
+        639.96,
+       1232.98,
+        337.14,
+             0,
+        301.78,
+        239.88,
+        213.59,
+             0,
+             0,
+        113.54,
+             0,
+        393.37,
+        898.54,
+       1084.03,
+        510.41,
+             0,
+        162.78,
+        376.10,
+        250.47,
+        844.66,
+        556.31,
+             0,
+             0,
+        538.12,
+        938.17,
+        509.26,
+       1117.10,
+       1080.94,
+        497.80,
+             0,
+             0,
+        715.37,
+        751.00,
+        408.31,
+        337.32,
+        629.18,
+        528.73,
+       1065.63,
+       1144.69,
+       1037.25,
+             0,
+        541.72,
+        600.74,
+        924.29,
+        412.98,
+       1347.97,
+       1393.51,
+       1329.15,
+       1512.89,
+       1586.47,
+             0,
+        420.92,
+        435.64,
+        492.18,
+             0,
+             0,
+        584.82,
+        331.77,
+             0,
+        306.87,
+        481.10,
+             0]; //}}}
+var index=[[32,33,10], //{{{
+	[68,57,59],
+	[148,5,147],
+	[154,160,164],
+	[74,75,71],
+	[185,213,82],
+	[23,19,21],
+	[49,36,50],
+	[97,108,98],
+	[51,37,39],
+	[233,235,243],
+	[272,229,280],
+	[306,324,224],
+	[222,248,250],
+	[137,57,58],
+	[10,33,136],
+	[17,29,51],
+	[15,24,28],
+	[96,98,34],
+	[19,20,21],
+	[15,26,31],
+	[335,17,336],
+	[29,18,30],
+	[27,18,22],
+	[21,22,24],
+	[102,100,101],
+	[8,101,94],
+	[22,21,16],
+	[20,16,21],
+	[15,28,26],
+	[27,22,16],
+	[18,28,22],
+	[24,15,23],
+	[21,24,23],
+	[29,26,28],
+	[25,335,338],
+	[26,29,335],
+	[136,27,96],
+	[32,10,30],
+	[22,28,24],
+	[29,28,18],
+	[18,32,30],
+	[335,29,17],
+	[30,10,37],
+	[29,30,51],
+	[18,27,32],
+	[335,31,26],
+	[32,27,33],
+	[96,27,16],
+	[136,35,10],
+	[96,99,98],
+	[38,45,46],
+	[34,98,105],
+	[45,38,41],
+	[36,37,40],
+	[48,14,49],
+	[41,40,37],
+	[37,36,39],
+	[38,40,41],
+	[63,44,47],
+	[66,49,55],
+	[66,55,39],
+	[41,37,10],
+	[47,40,63],
+	[10,35,41],
+	[132,45,41],
+	[120,35,136],
+	[36,40,47],
+	[64,56,13],
+	[38,46,60],
+	[62,252,253],
+	[132,41,35],
+	[46,45,43],
+	[56,43,53],
+	[56,64,46],
+	[63,40,38],
+	[50,48,49],
+	[49,14,55],
+	[47,44,50],
+	[50,36,47],
+	[253,50,44],
+	[48,50,42],
+	[37,51,30],
+	[17,51,39],
+	[131,132,120],
+	[339,39,55],
+	[13,56,57],
+	[65,13,68],
+	[254,61,54],
+	[52,339,67],
+	[339,52,336],
+	[43,56,46],
+	[57,56,53],
+	[132,131,43],
+	[53,263,57],
+	[59,137,142],
+	[58,139,137],
+	[72,78,92],
+	[75,73,76],
+	[64,60,46],
+	[61,60,54],
+	[254,54,62],
+	[63,61,44],
+	[54,64,65],
+	[252,42,253],
+	[38,60,63],
+	[63,60,61],
+	[65,64,13],
+	[60,64,54],
+	[76,88,62],
+	[75,76,65],
+	[39,36,66],
+	[49,66,36],
+	[57,68,13],
+	[55,14,67],
+	[150,71,68],
+	[59,57,137],
+	[65,68,71],
+	[151,155,159],
+	[150,68,59],
+	[75,74,73],
+	[74,71,70],
+	[72,87,89],
+	[88,7,62],
+	[74,70,79],
+	[73,74,78],
+	[88,76,73],
+	[71,75,65],
+	[62,54,76],
+	[65,76,54],
+	[77,79,81],
+	[84,86,77],
+	[79,78,74],
+	[92,91,90],
+	[70,152,81],
+	[79,77,93],
+	[59,142,143],
+	[84,77,81],
+	[70,81,79],
+	[80,180,84],
+	[187,83,182],
+	[178,151,159],
+	[69,91,86],
+	[80,84,81],
+	[84,83,86],
+	[83,187,189],
+	[188,187,182],
+	[194,69,86],
+	[89,73,78],
+	[89,78,72],
+	[7,88,87],
+	[87,88,89],
+	[73,89,88],
+	[86,91,77],
+	[93,91,92],
+	[69,90,91],
+	[72,92,90],
+	[93,92,78],
+	[79,93,78],
+	[91,93,77],
+	[20,19,94],
+	[20,100,99],
+	[102,97,100],
+	[96,34,136],
+	[97,99,100],
+	[105,103,125],
+	[99,96,16],
+	[108,105,98],
+	[20,99,16],
+	[97,98,99],
+	[101,20,94],
+	[100,20,101],
+	[114,116,117],
+	[121,107,102],
+	[104,107,106],
+	[108,109,103],
+	[97,109,108],
+	[198,113,124],
+	[128,103,262],
+	[121,106,107],
+	[34,105,120],
+	[107,114,112],
+	[101,8,106],
+	[109,115,103],
+	[109,97,102],
+	[103,105,108],
+	[111,109,102],
+	[111,115,109],
+	[111,102,112],
+	[110,111,112],
+	[112,102,107],
+	[110,113,115],
+	[114,107,104],
+	[110,112,117],
+	[135,110,118],
+	[135,113,110],
+	[95,255,122],
+	[116,118,117],
+	[110,115,111],
+	[115,113,262],
+	[255,114,122],
+	[260,251,257],
+	[114,117,112],
+	[116,134,118],
+	[12,124,135],
+	[110,117,118],
+	[146,140,58],
+	[147,127,119],
+	[125,120,105],
+	[120,125,127],
+	[102,101,121],
+	[106,121,101],
+	[162,164,160],
+	[114,104,122],
+	[239,118,134],
+	[128,119,125],
+	[103,115,262],
+	[125,119,127],
+	[238,162,163],
+	[148,128,197],
+	[147,5,146],
+	[120,127,131],
+	[103,128,125],
+	[126,197,128],
+	[217,221,223],
+	[154,149,153],
+	[263,130,146],
+	[133,53,43],
+	[127,130,131],
+	[130,263,133],
+	[45,132,43],
+	[120,132,35],
+	[43,131,133],
+	[130,133,131],
+	[114,255,116],
+	[221,222,219],
+	[12,135,118],
+	[113,135,124],
+	[136,33,27],
+	[120,136,34],
+	[140,138,139],
+	[142,139,144],
+	[140,153,138],
+	[152,151,80],
+	[140,139,58],
+	[139,138,144],
+	[58,263,146],
+	[140,5,153],
+	[141,144,145],
+	[143,152,150],
+	[139,142,137],
+	[143,142,141],
+	[151,143,141],
+	[152,143,151],
+	[145,144,138],
+	[142,144,141],
+	[328,138,153],
+	[157,159,155],
+	[147,146,130],
+	[5,140,146],
+	[127,147,130],
+	[147,119,148],
+	[128,148,119],
+	[148,129,160],
+	[154,5,160],
+	[166,227,245],
+	[71,150,70],
+	[59,143,150],
+	[145,155,141],
+	[141,155,151],
+	[81,152,80],
+	[150,152,70],
+	[154,153,5],
+	[153,149,328],
+	[160,129,162],
+	[154,164,168],
+	[157,158,156],
+	[155,145,157],
+	[179,214,213],
+	[83,84,180],
+	[157,145,327],
+	[157,156,159],
+	[328,327,138],
+	[235,234,231],
+	[214,181,183],
+	[80,151,178],
+	[148,160,5],
+	[129,163,162],
+	[167,171,165],
+	[168,170,166],
+	[163,129,197],
+	[162,161,164],
+	[126,198,163],
+	[218,198,216],
+	[167,164,161],
+	[168,149,154],
+	[218,220,238],
+	[173,176,165],
+	[170,168,164],
+	[225,228,208],
+	[161,220,171],
+	[167,165,170],
+	[170,164,167],
+	[168,166,246],
+	[223,202,217],
+	[165,171,173],
+	[165,176,177],
+	[170,177,208],
+	[161,171,167],
+	[169,324,173],
+	[223,325,169],
+	[298,299,312],
+	[169,173,171],
+	[172,305,176],
+	[206,299,302],
+	[165,177,170],
+	[177,203,205],
+	[172,176,173],
+	[175,203,176],
+	[177,176,203],
+	[205,208,177],
+	[181,178,159],
+	[80,178,180],
+	[159,183,181],
+	[180,182,83],
+	[181,180,178],
+	[180,181,182],
+	[183,159,156],
+	[181,179,182],
+	[185,179,213],
+	[193,186,191],
+	[210,183,156],
+	[212,210,200],
+	[191,190,184],
+	[179,185,182],
+	[190,191,188],
+	[192,193,191],
+	[194,86,195],
+	[188,182,185],
+	[189,187,186],
+	[188,185,190],
+	[186,187,188],
+	[186,193,196],
+	[83,189,86],
+	[85,196,264],
+	[185,82,190],
+	[186,188,191],
+	[264,192,2],
+	[191,184,192],
+	[85,195,196],
+	[189,186,196],
+	[195,86,189],
+	[85,194,195],
+	[196,193,264],
+	[189,196,195],
+	[197,129,148],
+	[126,163,197],
+	[198,126,262],
+	[216,198,124],
+	[204,199,203],
+	[207,199,204],
+	[211,210,156],
+	[272,278,292],
+	[216,124,217],
+	[230,201,212],
+	[220,218,202],
+	[204,203,175],
+	[205,203,199],
+	[207,204,298],
+	[298,204,209],
+	[199,11,205],
+	[208,166,170],
+	[276,281,285],
+	[209,204,175],
+	[11,199,265],
+	[11,225,205],
+	[208,205,225],
+	[172,303,305],
+	[209,303,302],
+	[211,156,158],
+	[230,212,231],
+	[326,229,292],
+	[200,210,211],
+	[215,82,213],
+	[183,210,212],
+	[179,181,214],
+	[212,323,214],
+	[183,212,214],
+	[323,201,215],
+	[217,124,12],
+	[323,213,214],
+	[218,216,202],
+	[217,12,221],
+	[202,216,217],
+	[223,220,202],
+	[198,218,163],
+	[239,221,12],
+	[310,9,307],
+	[171,220,169],
+	[238,220,161],
+	[221,239,222],
+	[221,219,223],
+	[222,239,248],
+	[222,250,318],
+	[325,219,224],
+	[220,223,169],
+	[321,322,320],
+	[172,306,303],
+	[228,229,227],
+	[228,166,208],
+	[11,280,225],
+	[268,267,265],
+	[242,245,227],
+	[229,228,225],
+	[166,228,227],
+	[267,11,265],
+	[234,6,231],
+	[236,6,234],
+	[231,212,200],
+	[6,230,231],
+	[233,234,235],
+	[275,278,272],
+	[275,277,278],
+	[235,231,200],
+	[233,290,236],
+	[200,211,235],
+	[211,158,241],
+	[243,211,241],
+	[233,236,234],
+	[242,326,241],
+	[162,238,161],
+	[218,238,163],
+	[118,239,12],
+	[248,239,134],
+	[242,241,158],
+	[334,240,258],
+	[243,241,237],
+	[244,242,158],
+	[227,229,326],
+	[243,237,291],
+	[211,243,235],
+	[244,158,327],
+	[246,166,245],
+	[242,244,245],
+	[245,244,246],
+	[328,246,244],
+	[168,246,149],
+	[257,256,249],
+	[330,329,123],
+	[251,248,134],
+	[250,248,247],
+	[330,331,329],
+	[251,247,248],
+	[308,311,321],
+	[134,116,261],
+	[257,258,260],
+	[50,253,42],
+	[62,7,252],
+	[44,61,254],
+	[62,253,254],
+	[44,254,253],
+	[259,95,256],
+	[261,255,259],
+	[257,249,258],
+	[257,259,256],
+	[259,257,251],
+	[334,333,4],
+	[240,331,332],
+	[261,259,251],
+	[259,255,95],
+	[332,260,258],
+	[247,251,260],
+	[134,261,251],
+	[116,255,261],
+	[198,262,113],
+	[128,262,126],
+	[57,263,58],
+	[133,263,53],
+	[199,207,265],
+	[192,264,193],
+	[265,207,268],
+	[314,268,207],
+	[226,283,282],
+	[273,267,266],
+	[11,267,272],
+	[304,313,314],
+	[267,268,266],
+	[297,269,295],
+	[270,293,268],
+	[266,281,276],
+	[274,284,285],
+	[277,275,271],
+	[275,267,273],
+	[275,272,267],
+	[276,273,266],
+	[273,271,275],
+	[271,283,277],
+	[276,271,273],
+	[279,291,292],
+	[266,293,281],
+	[276,285,284],
+	[296,232,290],
+	[296,290,279],
+	[279,278,277],
+	[279,292,278],
+	[279,277,296],
+	[279,290,291],
+	[225,280,229],
+	[11,272,280],
+	[281,293,297],
+	[1,286,288],
+	[277,283,226],
+	[271,284,283],
+	[284,271,276],
+	[274,282,284],
+	[283,284,282],
+	[295,287,288],
+	[286,274,285],
+	[285,288,286],
+	[295,281,297],
+	[295,285,281],
+	[1,288,287],
+	[236,290,232],
+	[277,226,289],
+	[291,290,233],
+	[243,291,233],
+	[291,237,292],
+	[326,292,237],
+	[272,292,229],
+	[268,293,266],
+	[297,293,270],
+	[287,295,269],
+	[313,294,270],
+	[285,295,288],
+	[277,289,296],
+	[232,296,289],
+	[270,294,297],
+	[269,297,294],
+	[209,299,298],
+	[312,299,206],
+	[302,299,209],
+	[301,174,304],
+	[305,303,209],
+	[300,302,307],
+	[206,301,312],
+	[206,302,300],
+	[172,324,306],
+	[300,307,9],
+	[313,304,174],
+	[207,298,304],
+	[209,175,305],
+	[176,305,175],
+	[322,317,318],
+	[310,307,303],
+	[302,303,307],
+	[310,303,306],
+	[306,311,315],
+	[308,309,315],
+	[9,315,309],
+	[310,315,9],
+	[306,224,316],
+	[316,224,317],
+	[301,304,312],
+	[298,312,304],
+	[294,313,174],
+	[314,313,270],
+	[268,314,270],
+	[207,304,314],
+	[306,315,310],
+	[308,315,311],
+	[317,224,219],
+	[311,306,316],
+	[318,317,219],
+	[316,317,322],
+	[222,318,219],
+	[319,320,123],
+	[321,320,319],
+	[320,250,330],
+	[318,250,320],
+	[308,321,319],
+	[316,322,311],
+	[320,322,318],
+	[311,322,321],
+	[201,323,212],
+	[213,323,215],
+	[173,324,172],
+	[325,324,169],
+	[219,325,223],
+	[324,325,224],
+	[241,326,237],
+	[227,326,242],
+	[157,327,158],
+	[138,327,145],
+	[246,328,149],
+	[327,328,244],
+	[320,330,123],
+	[250,331,330],
+	[331,250,247],
+	[332,331,247],
+	[240,329,331],
+	[260,332,247],
+	[240,332,258],
+	[339,336,17],
+	[258,249,333],
+	[333,334,258],
+	[31,335,25],
+	[3,337,340],
+	[338,337,25],
+	[335,336,338],
+	[340,337,336],
+	[337,338,336],
+	[39,339,17],
+	[67,339,55],
+	[336,52,340]]; //}}}
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/convertmattoarch.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/convertmattoarch.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/convertmattoarch.m	(revision 27955)
@@ -0,0 +1,47 @@
+function []=convertmattoarch(matfile,archfile);
+%    convertmattoarch -- function to convert mat-format file to arch-format file
+%
+%    usage:
+%        convertmattoarch(matfile,archfile);
+%    where:
+%        matfile		name of mat-format file
+%        archfile		name of arch-format file (optional)
+%
+
+	if ~exist('matfile','var') || isempty(matfile)
+		help convertmattoarch
+		error('convertmattoarch usage error.');
+	end
+
+	[pathstr,name,ext]=fileparts(matfile);
+	if isempty(ext)
+		ext='.mat';
+	end
+	matfile=fullfile(pathstr,[name ext]);
+
+	if ~exist('archfile','var') || isempty(archfile)
+		archfile=fullfile(pathstr,[name '.arch']);
+	end
+
+	if exist(archfile,'file')
+		delete(archfile);
+	end
+
+	a=load(matfile,'-mat');
+	disp(sprintf('mat-format file ''%s'' read.',matfile));
+	fnames=fieldnames(a);
+
+	for i=1:length(fnames)
+		if isstruct(a.(fnames{i})) || iscell(a.(fnames{i}))
+			warning('field ''%s'' is of class ''%s'' and will not be written.',fnames{i},class(a.(fnames{i})));
+		else
+			% matlab writes the dimensions reversed and matrices transposed into binary files, so compensate for that
+			archwrite(archfile,fnames{i},transpose(a.(fnames{i})));
+			disp(sprintf('field ''%s'' of class ''%s'' and size [%dx%d] written.',...
+			             fnames{i},class(a.(fnames{i})),size(a.(fnames{i}),1),size(a.(fnames{i}),2)));
+		end
+	end
+	disp(sprintf('arch-format  file ''%s'' written.',archfile));
+
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/delta18o.data
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/delta18o.data	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/delta18o.data	(revision 27955)
@@ -0,0 +1,2 @@
+  -3.9010000e1  -3.9180000e1  -3.9280000e1  -3.9320000e1  -3.9050000e1  -3.8880000e1  -3.8680000e1  -3.8560000e1  -3.8500000e1  -3.8520000e1  -3.8560000e1
+   0.0000000e+00   2.0000000e+01   4.0000000e+01   6.0000000e+01   8.0000000e+01   1.0000000e+02   1.2000000e+02   1.4000000e+02   1.6000000e+02   1.8000000e+02   2.0000000e+02
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/loadarch.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/loadarch.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/loadarch.m	(revision 27955)
@@ -0,0 +1,67 @@
+function [s]=loadarch(archfile);
+%LOADARCH - Function to read the variables from an arch-formatted file
+%
+%	Usage:
+%		s=loadarch(archfile);
+%	where:
+%		archfile			name of an arch-format file
+	
+	if ~exist('archfile','var') || isempty(archfile)
+		help loadarch
+		error('loadarch usage error.');
+	end
+
+	[pathstr,name,ext]=fileparts(archfile);
+	if isempty(ext)
+		ext='.arch';
+	end
+	archfile=fullfile(pathstr,[name ext]);
+
+	% Fields for our structure 's'
+	variable_names={};
+	variable_sizes={};
+	variable_types={};
+	variable_data={};
+
+	% Read file and gather variable names and sizes
+	fid=fopen(archfile,'rb');
+	while ~feof(fid)
+		[reclen,count]=fread(fid,1,'int','ieee-be');
+		if count == 0, % reached eof
+			break;
+		end
+		% Read variable traits
+		fread(fid,1,'int','ieee-be');
+		variable_name_len=fread(fid,1,'int','ieee-be');
+		variable_names{end+1}=char(fread(fid,variable_name_len,'char','ieee-be')');
+		variable_reclen=fread(fid,1,'int','ieee-be');
+		variable_type=fread(fid,1,'int','ieee-be');
+		% set related data type
+		if variable_type==2
+			variable_types{end+1}='double';
+			variable_sizes{end+1}='1x1';
+			variable_data{end+1}=fread(fid,1,'double','ieee-be'); % read data
+		elseif variable_type==3
+			variable_types{end+1}='double vector / matrix';
+			rows=fread(fid,1,'int','ieee-be');
+			cols=fread(fid,1,'int','ieee-be');
+			variable_data{end+1}=fread(fid,[rows,cols],'double','ieee-be');
+			variable_size_cat=strcat(num2str(rows),'x',num2str(cols));
+			variable_sizes{end+1}=variable_size_cat;
+		else
+			fclose(fid);
+			error('Error: Encountered invalid data type while loading arch information.');
+		end
+	end
+	fclose(fid);
+	disp(sprintf('arch-format file ''%s'' read.',archfile));	
+
+	% Relate the variable fields to the structure
+	% Access fields by doing (for example): s(1).Name -> 'VelocityXObservation'
+	s=struct('FileName',archfile,'Name',variable_names,'Size',variable_sizes,'Type',variable_types,'Data',variable_data);
+	% Let user know data has been successfully read
+	for i=1:numel(variable_names)
+		disp(sprintf('field ''%s'' of class ''%s'' and size [%s] read.',...
+			variable_names{i},variable_types{i},variable_sizes{i}));
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/love_numbers_10k.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/love_numbers_10k.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/love_numbers_10k.txt	(revision 27955)
@@ -0,0 +1,10001 @@
+0 0 0 0 0 0 0 0 
+1	 -1.28740059	 -1.00000000	  -0.89858519	  1.28740059	  0.42519882	  0.89858519  0.00000000
+2	 -1.00025365	 -0.30922675	  0.02060926	  1.69102690	  0.46358648	  0.67016399  0.61829668
+3	 -1.06243501	 -0.19927948	  0.06801636	  1.86315553	  0.55741597	  0.73270416  0.56270589
+4	 -1.06779588	 -0.13649834	  0.05667027	  1.93129754	  0.63672498	  0.80683140  0.51132745
+5	 -1.10365923	 -0.10736896	  0.04401221	  1.99629027	  0.68737906	  0.84861883  0.48642259
+6	 -1.16440348	 -0.09295485	  0.03638747	  2.07144863	  0.72031283	  0.87065768  0.47898268
+7	 -1.23634156	 -0.08469861	  0.03202759	  2.15164295	  0.74355796	  0.88327380  0.47955214
+8	 -1.31140380	 -0.07921412	  0.02937593	  2.23218968	  0.76126493	  0.89140995  0.48323250
+9	 -1.38582399	 -0.07513541	  0.02762338	  2.31068858	  0.77552290	  0.89724121  0.48795424
+10	 -1.45807465	 -0.07187005	  0.02638627	  2.38620460	  0.78744212	  0.90174369  0.49291061
+11	 -1.52763314	 -0.06913154	  0.02547640	  2.45850160	  0.79766475	  0.90539206  0.49779422
+12	 -1.59437866	 -0.06676258	  0.02479080	  2.52761607	  0.80659635	  0.90844662  0.50248477
+13	 -1.65833071	 -0.06466619	  0.02426511	  2.59366452	  0.81451271	  0.91106870  0.50693175
+14	 -1.71954820	 -0.06277732	  0.02385464	  2.65677088	  0.82161167	  0.91336804  0.51111243
+15	 -1.77809640	 -0.06105001	  0.02352654	  2.71704639	  0.82804049	  0.91542346  0.51501712
+16	 -1.83403970	 -0.05945081	  0.02325609	  2.77458889	  0.83391153	  0.91729309  0.51864363
+17	 -1.88744242	 -0.05795502	  0.02302469	  2.82948740	  0.83931209	  0.91902029  0.52199490
+18	 -1.93837115	 -0.05654418	  0.02281843	  2.88182697	  0.84431095	  0.92063739  0.52507761
+19	 -1.98689666	 -0.05520447	  0.02262706	  2.93169219	  0.84896295	  0.92216847  0.52790108
+20	 -2.03309477	 -0.05392545	  0.02244322	  2.97916932	  0.85331225	  0.92363132  0.53047654
+21	 -2.07704643	 -0.05269926	  0.02226173	  3.02434717	  0.85739480	  0.92503902  0.53281639
+22	 -2.11883714	 -0.05151988	  0.02207909	  3.06731726	  0.86124014	  0.92640103  0.53493369
+23	 -2.15855611	 -0.05038274	  0.02189307	  3.10817337	  0.86487276	  0.92772419  0.53684176
+24	 -2.19629514	 -0.04928430	  0.02170238	  3.14701084	  0.86831322	  0.92901331  0.53855386
+25	 -2.23214747	 -0.04822179	  0.02150643	  3.18392568	  0.87157886	  0.93027178  0.54008294
+26	 -2.26620674	 -0.04719301	  0.02130509	  3.21901373	  0.87468453	  0.93150190  0.54144148
+27	 -2.29856595	 -0.04619619	  0.02109858	  3.25236976	  0.87764301	  0.93270523  0.54264140
+28	 -2.32931659	 -0.04522983	  0.02088735	  3.28408675	  0.88046543	  0.93388282  0.54369397
+29	 -2.35854794	 -0.04429270	  0.02067197	  3.31425524	  0.88316156	  0.93503533  0.54460979
+30	 -2.38634650	 -0.04338368	  0.02045310	  3.34296281	  0.88574004	  0.93616321  0.54539877
+31	 -2.41279547	 -0.04250179	  0.02023142	  3.37029367	  0.88820859	  0.93726678  0.54607015
+32	 -2.43797451	 -0.04164613	  0.02000761	  3.39632839	  0.89057416	  0.93834626  0.54663248
+33	 -2.46195951	 -0.04081583	  0.01978231	  3.42114367	  0.89284301	  0.93940185  0.54709369
+34	 -2.48482241	 -0.04001011	  0.01955614	  3.44481230	  0.89502085	  0.94043375  0.54746112
+35	 -2.50663126	 -0.03922817	  0.01932966	  3.46740309	  0.89711291	  0.94144217  0.54774153
+36	 -2.52745016	 -0.03846928	  0.01910337	  3.48898088	  0.89912397	  0.94242735  0.54794114
+37	 -2.54733938	 -0.03773269	  0.01887774	  3.50960670	  0.90105847	  0.94338957  0.54806571
+38	 -2.56635547	 -0.03701769	  0.01865317	  3.52933779	  0.90292050	  0.94432915  0.54812051
+39	 -2.58455138	 -0.03632358	  0.01843000	  3.54822780	  0.90471386	  0.94524642  0.54811044
+40	 -2.60197665	 -0.03564968	  0.01820854	  3.56632697	  0.90644209	  0.94614178  0.54803997
+41	 -2.61867756	 -0.03499532	  0.01798905	  3.58368224	  0.90810850	  0.94701563  0.54791326
+42	 -2.63469733	 -0.03435985	  0.01777176	  3.60033748	  0.90971616	  0.94786840  0.54773413
+43	 -2.65007629	 -0.03374263	  0.01755683	  3.61633367	  0.91126798	  0.94870054  0.54750610
+44	 -2.66485208	 -0.03314303	  0.01734443	  3.63170905	  0.91276665	  0.94951253  0.54723245
+45	 -2.67905981	 -0.03256047	  0.01713468	  3.64649934	  0.91421471	  0.95030485  0.54691620
+46	 -2.69273222	 -0.03199435	  0.01692767	  3.66073787	  0.91561457	  0.95107798  0.54656015
+47	 -2.70589990	 -0.03144411	  0.01672347	  3.67445580	  0.91696845	  0.95183242  0.54616691
+48	 -2.71859139	 -0.03090919	  0.01652215	  3.68768220	  0.91827849	  0.95256866  0.54573889
+49	 -2.73083334	 -0.03038907	  0.01632374	  3.70044427	  0.91954667	  0.95328719  0.54527835
+50	 -2.74265068	 -0.02988323	  0.01612826	  3.71276745	  0.92077487	  0.95398851  0.54478739
+51	 -2.75406669	 -0.02939118	  0.01593573	  3.72467551	  0.92196486	  0.95467309  0.54426797
+52	 -2.76510320	 -0.02891245	  0.01574615	  3.73619076	  0.92311833	  0.95534141  0.54372191
+53	 -2.77578063	 -0.02844656	  0.01555950	  3.74733406	  0.92423685	  0.95599393  0.54315095
+54	 -2.78611812	 -0.02799309	  0.01537578	  3.75812503	  0.92532192	  0.95663113  0.54255669
+55	 -2.79613364	 -0.02755161	  0.01519496	  3.76858203	  0.92637496	  0.95725343  0.54194065
+56	 -2.80584405	 -0.02712170	  0.01501701	  3.77872235	  0.92739730	  0.95786128  0.54130424
+57	 -2.81526521	 -0.02670298	  0.01484191	  3.78856223	  0.92839022	  0.95845511  0.54064880
+58	 -2.82441204	 -0.02629506	  0.01466961	  3.79811697	  0.92935491	  0.95903532  0.53997561
+59	 -2.83329857	 -0.02589759	  0.01450009	  3.80740098	  0.93029251	  0.95960232  0.53928586
+60	 -2.84193804	 -0.02551021	  0.01433329	  3.81642782	  0.93120412	  0.96015649  0.53858067
+61	 -2.85034293	 -0.02513260	  0.01416919	  3.82521033	  0.93209074	  0.96069821  0.53786112
+62	 -2.85852503	 -0.02476443	  0.01400773	  3.83376061	  0.93295337	  0.96122784  0.53712821
+63	 -2.86649548	 -0.02440538	  0.01384888	  3.84209010	  0.93379291	  0.96174574  0.53638291
+64	 -2.87426481	 -0.02405518	  0.01369258	  3.85020963	  0.93461026	  0.96225224  0.53562612
+65	 -2.88184299	 -0.02371352	  0.01353880	  3.85812947	  0.93540625	  0.96274768  0.53485873
+66	 -2.88923945	 -0.02338014	  0.01338749	  3.86585931	  0.93618168	  0.96323236  0.53408154
+67	 -2.89646316	 -0.02305478	  0.01323861	  3.87340838	  0.93693730	  0.96370661  0.53329534
+68	 -2.90352261	 -0.02273718	  0.01309211	  3.88078542	  0.93767383	  0.96417071  0.53250089
+69	 -2.91042585	 -0.02242710	  0.01294795	  3.88799874	  0.93839197	  0.96462494  0.53169888
+70	 -2.91718054	 -0.02212431	  0.01280609	  3.89505623	  0.93909236	  0.96506960  0.53089002
+71	 -2.92379397	 -0.02182859	  0.01266648	  3.90196538	  0.93977564	  0.96550493  0.53007493
+72	 -2.93027306	 -0.02153971	  0.01252908	  3.90873334	  0.94044240	  0.96593120  0.52925424
+73	 -2.93662439	 -0.02125748	  0.01239386	  3.91536691	  0.94109322	  0.96634866  0.52842854
+74	 -2.94285425	 -0.02098169	  0.01226077	  3.92187256	  0.94172863	  0.96675754  0.52759839
+75	 -2.94896860	 -0.02071215	  0.01212977	  3.92825645	  0.94234915	  0.96715808  0.52676434
+76	 -2.95497314	 -0.02044868	  0.01200082	  3.93452446	  0.94295529	  0.96755050  0.52592690
+77	 -2.96087331	 -0.02019110	  0.01187388	  3.94068220	  0.94354752	  0.96793501  0.52508656
+78	 -2.96667427	 -0.01993924	  0.01174893	  3.94673503	  0.94412630	  0.96831183  0.52424380
+79	 -2.97238097	 -0.01969293	  0.01162591	  3.95268804	  0.94469206	  0.96868116  0.52339906
+80	 -2.97799813	 -0.01945201	  0.01150481	  3.95854612	  0.94524521	  0.96904318  0.52255277
+81	 -2.98353025	 -0.01921634	  0.01138557	  3.96431391	  0.94578617	  0.96939809  0.52170535
+82	 -2.98898162	 -0.01898576	  0.01126817	  3.96999586	  0.94631531	  0.96974607  0.52085719
+83	 -2.99435636	 -0.01876014	  0.01115257	  3.97559622	  0.94683300	  0.97008729  0.52000868
+84	 -2.99965838	 -0.01853932	  0.01103875	  3.98111905	  0.94733959	  0.97042193  0.51916016
+85	 -3.00489143	 -0.01832319	  0.01092666	  3.98656824	  0.94783543	  0.97075015  0.51831198
+86	 -3.01005909	 -0.01811161	  0.01081628	  3.99194748	  0.94832084	  0.97107211  0.51746448
+87	 -3.01516479	 -0.01790446	  0.01070757	  3.99726033	  0.94879613	  0.97138796  0.51661796
+88	 -3.02021180	 -0.01770162	  0.01060052	  4.00251017	  0.94926160	  0.97169786  0.51577273
+89	 -3.02520323	 -0.01750298	  0.01049508	  4.00770025	  0.94971755	  0.97200194  0.51492908
+90	 -3.03014209	 -0.01730842	  0.01039123	  4.01283367	  0.95016424	  0.97230035  0.51408727
+91	 -3.03503122	 -0.01711783	  0.01028894	  4.01791339	  0.95060195	  0.97259323  0.51324758
+92	 -3.03987336	 -0.01693111	  0.01018819	  4.02294225	  0.95103094	  0.97288070  0.51241024
+93	 -3.04467112	 -0.01674816	  0.01008894	  4.02792295	  0.95145145	  0.97316290  0.51157550
+94	 -3.04942699	 -0.01656889	  0.00999117	  4.03285810	  0.95186373	  0.97343995  0.51074358
+95	 -3.05414335	 -0.01639319	  0.00989485	  4.03775017	  0.95226799	  0.97371196  0.50991471
+96	 -3.05882250	 -0.01622097	  0.00979997	  4.04260153	  0.95266447	  0.97397906  0.50908908
+97	 -3.06346660	 -0.01605215	  0.00970649	  4.04741445	  0.95305338	  0.97424136  0.50826689
+98	 -3.06807773	 -0.01588664	  0.00961439	  4.05219109	  0.95343492	  0.97449897  0.50744832
+99	 -3.07265789	 -0.01572436	  0.00952364	  4.05693353	  0.95380929	  0.97475200  0.50663356
+100	 -3.07720897	 -0.01556522	  0.00943423	  4.06164375	  0.95417670	  0.97500055  0.50582277
+101	 -3.08173279	 -0.01540916	  0.00934613	  4.06632364	  0.95453731	  0.97524472  0.50501611
+102	 -3.08623109	 -0.01525608	  0.00925931	  4.07097501	  0.95489131	  0.97548461  0.50421372
+103	 -3.09070551	 -0.01510592	  0.00917376	  4.07559959	  0.95523888	  0.97572032  0.50341576
+104	 -3.09515765	 -0.01495861	  0.00908946	  4.08019904	  0.95558018	  0.97595193  0.50262236
+105	 -3.09958899	 -0.01481408	  0.00900637	  4.08477492	  0.95591537	  0.97617955  0.50183364
+106	 -3.10400100	 -0.01467225	  0.00892449	  4.08932875	  0.95624461	  0.97640325  0.50104973
+107	 -3.10839504	 -0.01453308	  0.00884379	  4.09386196	  0.95656806	  0.97662313  0.50027073
+108	 -3.11277241	 -0.01439648	  0.00876425	  4.09837593	  0.95688585	  0.97683927  0.49949676
+109	 -3.11713438	 -0.01426240	  0.00868586	  4.10287198	  0.95719812	  0.97705174  0.49872791
+110	 -3.12148213	 -0.01413079	  0.00860858	  4.10735134	  0.95750503	  0.97726063  0.49796429
+111	 -3.12581680	 -0.01400157	  0.00853241	  4.11181522	  0.95780669	  0.97746601  0.49720597
+112	 -3.13013947	 -0.01387471	  0.00845733	  4.11626476	  0.95810324	  0.97766796  0.49645304
+113	 -3.13445117	 -0.01375013	  0.00838331	  4.12070104	  0.95839480	  0.97786656  0.49570558
+114	 -3.13875289	 -0.01362779	  0.00831034	  4.12512510	  0.95868150	  0.97806186  0.49496366
+115	 -3.14304556	 -0.01350764	  0.00823841	  4.12953792	  0.95896344	  0.97825395  0.49422734
+116	 -3.14733008	 -0.01338963	  0.00816748	  4.13394045	  0.95924075	  0.97844289  0.49349669
+117	 -3.15160728	 -0.01327370	  0.00809756	  4.13833358	  0.95951352	  0.97862874  0.49277177
+118	 -3.15587797	 -0.01315981	  0.00802862	  4.14271816	  0.95978188	  0.97881157  0.49205262
+119	 -3.16014293	 -0.01304792	  0.00796064	  4.14709501	  0.96004592	  0.97899144  0.49133930
+120	 -3.16440288	 -0.01293797	  0.00789361	  4.15146491	  0.96030574	  0.97916842  0.49063185
+121	 -3.16865852	 -0.01282993	  0.00782751	  4.15582858	  0.96056144	  0.97934256  0.48993030
+122	 -3.17291049	 -0.01272375	  0.00776233	  4.16018673	  0.96081312	  0.97951392  0.48923471
+123	 -3.17715942	 -0.01261940	  0.00769805	  4.16454003	  0.96106086	  0.97968255  0.48854509
+124	 -3.18140591	 -0.01251682	  0.00763466	  4.16888910	  0.96130476	  0.97984852  0.48786148
+125	 -3.18565052	 -0.01241598	  0.00757215	  4.17323454	  0.96154490	  0.98001187  0.48718390
+126	 -3.18989378	 -0.01231685	  0.00751049	  4.17757693	  0.96178137	  0.98017266  0.48651237
+127	 -3.19413619	 -0.01221938	  0.00744968	  4.18191681	  0.96201424	  0.98033094  0.48584692
+128	 -3.19837823	 -0.01212354	  0.00738970	  4.18625469	  0.96224360	  0.98048676  0.48518756
+129	 -3.20262035	 -0.01202930	  0.00733053	  4.19059105	  0.96246952	  0.98064017  0.48453431
+130	 -3.20686298	 -0.01193661	  0.00727217	  4.19492637	  0.96269208	  0.98079121  0.48388717
+131	 -3.21110653	 -0.01184546	  0.00721461	  4.19926107	  0.96291135	  0.98093994  0.48324615
+132	 -3.21535137	 -0.01175579	  0.00715782	  4.20359557	  0.96312741	  0.98108639  0.48261126
+133	 -3.21959786	 -0.01166759	  0.00710179	  4.20793027	  0.96334031	  0.98123062  0.48198250
+134	 -3.22384634	 -0.01158082	  0.00704652	  4.21226552	  0.96355014	  0.98137266  0.48135988
+135	 -3.22809714	 -0.01149545	  0.00699199	  4.21660169	  0.96375694	  0.98151256  0.48074338
+136	 -3.23235055	 -0.01141146	  0.00693819	  4.22093909	  0.96396080	  0.98165035  0.48013301
+137	 -3.23660685	 -0.01132880	  0.00688511	  4.22527805	  0.96416176	  0.98178609  0.47952876
+138	 -3.24086631	 -0.01124746	  0.00683273	  4.22961885	  0.96435989	  0.98191980  0.47893063
+139	 -3.24512918	 -0.01116741	  0.00678105	  4.23396177	  0.96455525	  0.98205153  0.47833860
+140	 -3.24939569	 -0.01108862	  0.00673005	  4.23830707	  0.96474789	  0.98218132  0.47775267
+141	 -3.25366606	 -0.01101107	  0.00667973	  4.24265499	  0.96493787	  0.98230920  0.47717282
+142	 -3.25794050	 -0.01093473	  0.00663007	  4.24700577	  0.96512525	  0.98243520  0.47659903
+143	 -3.26221918	 -0.01085957	  0.00658106	  4.25135961	  0.96531007	  0.98255937  0.47603130
+144	 -3.26650230	 -0.01078557	  0.00653269	  4.25571672	  0.96549239	  0.98268174  0.47546960
+145	 -3.27079000	 -0.01071272	  0.00648495	  4.26007729	  0.96567225	  0.98280233  0.47491391
+146	 -3.27508246	 -0.01064097	  0.00643784	  4.26444149	  0.96584971	  0.98292119  0.47436422
+147	 -3.27937980	 -0.01057032	  0.00639134	  4.26880948	  0.96602482	  0.98303834  0.47382051
+148	 -3.28368216	 -0.01050074	  0.00634544	  4.27318141	  0.96619761	  0.98315382  0.47328275
+149	 -3.28798965	 -0.01043222	  0.00630013	  4.27755743	  0.96636814	  0.98326765  0.47275091
+150	 -3.29230239	 -0.01036472	  0.00625541	  4.28193767	  0.96653645	  0.98337988  0.47222499
+151	 -3.29662047	 -0.01029823	  0.00621126	  4.28632224	  0.96670258	  0.98349051  0.47170494
+152	 -3.30094399	 -0.01023273	  0.00616768	  4.29071126	  0.96686657	  0.98359960  0.47119074
+153	 -3.30527303	 -0.01016819	  0.00612465	  4.29510483	  0.96702847	  0.98370715  0.47068237
+154	 -3.30960766	 -0.01010461	  0.00608218	  4.29950304	  0.96718831	  0.98381321  0.47017979
+155	 -3.31394795	 -0.01004197	  0.00604024	  4.30390598	  0.96734614	  0.98391779  0.46968299
+156	 -3.31829395	 -0.00998024	  0.00599883	  4.30831372	  0.96750198	  0.98402093  0.46919192
+157	 -3.32264573	 -0.00991940	  0.00595795	  4.31272633	  0.96765588	  0.98412265  0.46870656
+158	 -3.32700331	 -0.00985945	  0.00591759	  4.31714387	  0.96780788	  0.98422297  0.46822687
+159	 -3.33136675	 -0.00980035	  0.00587773	  4.32156640	  0.96795801	  0.98432191  0.46775284
+160	 -3.33573607	 -0.00974211	  0.00583838	  4.32599396	  0.96810630	  0.98441951  0.46728441
+161	 -3.34011130	 -0.00968470	  0.00579951	  4.33042660	  0.96825278	  0.98451579  0.46682157
+162	 -3.34449246	 -0.00962810	  0.00576113	  4.33486436	  0.96839750	  0.98461077  0.46636427
+163	 -3.34887956	 -0.00957230	  0.00572323	  4.33930726	  0.96854048	  0.98470447  0.46591248
+164	 -3.35327261	 -0.00951729	  0.00568581	  4.34375533	  0.96868175	  0.98479691  0.46546617
+165	 -3.35767163	 -0.00946304	  0.00564884	  4.34820858	  0.96882135	  0.98488812  0.46502531
+166	 -3.36207660	 -0.00940956	  0.00561233	  4.35266704	  0.96895930	  0.98497811  0.46458986
+167	 -3.36648753	 -0.00935681	  0.00557627	  4.35713071	  0.96909563	  0.98506691  0.46415977
+168	 -3.37090440	 -0.00930480	  0.00554066	  4.36159960	  0.96923037	  0.98515454  0.46373503
+169	 -3.37532721	 -0.00925350	  0.00550548	  4.36607371	  0.96936355	  0.98524102  0.46331559
+170	 -3.37975593	 -0.00920290	  0.00547073	  4.37055303	  0.96949520	  0.98532636  0.46290141
+171	 -3.38419056	 -0.00915300	  0.00543641	  4.37503756	  0.96962535	  0.98541059  0.46249246
+172	 -3.38863105	 -0.00910377	  0.00540251	  4.37952729	  0.96975401	  0.98549373  0.46208870
+173	 -3.39307740	 -0.00905520	  0.00536901	  4.38402220	  0.96988122	  0.98557578  0.46169009
+174	 -3.39752956	 -0.00900729	  0.00533593	  4.38852227	  0.97000699	  0.98565678  0.46129660
+175	 -3.40198751	 -0.00896002	  0.00530324	  4.39302749	  0.97013137	  0.98573674  0.46090819
+176	 -3.40645121	 -0.00891338	  0.00527095	  4.39753783	  0.97025435	  0.98581567  0.46052482
+177	 -3.41092063	 -0.00886736	  0.00523904	  4.40205326	  0.97037598	  0.98589360  0.46014645
+178	 -3.41539571	 -0.00882195	  0.00520752	  4.40657376	  0.97049628	  0.98597053  0.45977305
+179	 -3.41987643	 -0.00877713	  0.00517637	  4.41109929	  0.97061526	  0.98604649  0.45940458
+180	 -3.42436272	 -0.00873290	  0.00514560	  4.41562982	  0.97073295	  0.98612149  0.45904100
+181	 -3.42885456	 -0.00868925	  0.00511520	  4.42016531	  0.97084936	  0.98619555  0.45868227
+182	 -3.43335188	 -0.00864617	  0.00508515	  4.42470571	  0.97096453	  0.98626868  0.45832835
+183	 -3.43785464	 -0.00860364	  0.00505546	  4.42925100	  0.97107847	  0.98634090  0.45797921
+184	 -3.44236278	 -0.00856166	  0.00502613	  4.43380112	  0.97119120	  0.98641222  0.45763480
+185	 -3.44687625	 -0.00852021	  0.00499714	  4.43835604	  0.97130274	  0.98648265  0.45729509
+186	 -3.45139500	 -0.00847930	  0.00496849	  4.44291570	  0.97141311	  0.98655221  0.45696005
+187	 -3.45591895	 -0.00843890	  0.00494017	  4.44748005	  0.97152233	  0.98662092  0.45662962
+188	 -3.46044807	 -0.00839902	  0.00491219	  4.45204905	  0.97163042	  0.98668879  0.45630378
+189	 -3.46498227	 -0.00835964	  0.00488454	  4.45662264	  0.97173739	  0.98675583  0.45598249
+190	 -3.46952151	 -0.00832075	  0.00485721	  4.46120077	  0.97184326	  0.98682205  0.45566570
+191	 -3.47406572	 -0.00828234	  0.00483019	  4.46578338	  0.97194805	  0.98688746  0.45535338
+192	 -3.47861484	 -0.00824442	  0.00480349	  4.47037042	  0.97205179	  0.98695209  0.45504550
+193	 -3.48316880	 -0.00820696	  0.00477710	  4.47496184	  0.97215447	  0.98701594  0.45474201
+194	 -3.48772753	 -0.00816996	  0.00475102	  4.47955756	  0.97225612	  0.98707902  0.45444287
+195	 -3.49229097	 -0.00813342	  0.00472523	  4.48415755	  0.97235676	  0.98714134  0.45414806
+196	 -3.49685904	 -0.00809733	  0.00469975	  4.48876172	  0.97245640	  0.98720293  0.45385753
+197	 -3.50143169	 -0.00806167	  0.00467455	  4.49337002	  0.97255506	  0.98726378  0.45357123
+198	 -3.50600884	 -0.00802644	  0.00464964	  4.49798240	  0.97265275	  0.98732391  0.45328915
+199	 -3.51059042	 -0.00799164	  0.00462502	  4.50259878	  0.97274949	  0.98738333  0.45301123
+200	 -3.51517637	 -0.00795726	  0.00460068	  4.50721911	  0.97284528	  0.98744206  0.45273745
+201	 -3.51976660	 -0.00792329	  0.00457662	  4.51184331	  0.97294015	  0.98750009  0.45246776
+202	 -3.52436105	 -0.00788972	  0.00455283	  4.51647133	  0.97303411	  0.98755745  0.45220214
+203	 -3.52895964	 -0.00785655	  0.00452930	  4.52110309	  0.97312718	  0.98761414  0.45194053
+204	 -3.53356231	 -0.00782377	  0.00450605	  4.52573854	  0.97321936	  0.98767018  0.45168291
+205	 -3.53816898	 -0.00779138	  0.00448306	  4.53037760	  0.97331067	  0.98772556  0.45142923
+206	 -3.54277957	 -0.00775937	  0.00446032	  4.53502021	  0.97340111	  0.98778031  0.45117947
+207	 -3.54739402	 -0.00772773	  0.00443784	  4.53966629	  0.97349072	  0.98783443  0.45093359
+208	 -3.55201224	 -0.00769645	  0.00441562	  4.54431579	  0.97357949	  0.98788793  0.45069155
+209	 -3.55663417	 -0.00766554	  0.00439364	  4.54896864	  0.97366744	  0.98794082  0.45045331
+210	 -3.56125973	 -0.00763498	  0.00437190	  4.55362475	  0.97375458	  0.98799311  0.45021885
+211	 -3.56588885	 -0.00760478	  0.00435041	  4.55828407	  0.97384092	  0.98804481  0.44998812
+212	 -3.57052145	 -0.00757491	  0.00432916	  4.56294653	  0.97392648	  0.98809593  0.44976109
+213	 -3.57515745	 -0.00754539	  0.00430814	  4.56761206	  0.97401126	  0.98814646  0.44953772
+214	 -3.57979678	 -0.00751620	  0.00428736	  4.57228058	  0.97409528	  0.98819644  0.44931799
+215	 -3.58443937	 -0.00748734	  0.00426681	  4.57695203	  0.97417854	  0.98824585  0.44910185
+216	 -3.58908514	 -0.00745880	  0.00424648	  4.58162633	  0.97426107	  0.98829472  0.44888928
+217	 -3.59373401	 -0.00743059	  0.00422637	  4.58630343	  0.97434286	  0.98834304  0.44868023
+218	 -3.59838592	 -0.00740268	  0.00420649	  4.59098323	  0.97442393	  0.98839083  0.44847468
+219	 -3.60304078	 -0.00737509	  0.00418682	  4.59566569	  0.97450428	  0.98843809  0.44827259
+220	 -3.60769852	 -0.00734780	  0.00416737	  4.60035072	  0.97458394	  0.98848483  0.44807392
+221	 -3.61235907	 -0.00732081	  0.00414813	  4.60503826	  0.97466290	  0.98853106  0.44787865
+222	 -3.61702235	 -0.00729411	  0.00412910	  4.60972823	  0.97474118	  0.98857678  0.44768674
+223	 -3.62168828	 -0.00726771	  0.00411028	  4.61442057	  0.97481879	  0.98862201  0.44749816
+224	 -3.62635680	 -0.00724159	  0.00409166	  4.61911521	  0.97489573	  0.98866675  0.44731288
+225	 -3.63102782	 -0.00721575	  0.00407325	  4.62381207	  0.97497202	  0.98871100  0.44713086
+226	 -3.63570128	 -0.00719020	  0.00405503	  4.62851108	  0.97504766	  0.98875478  0.44695207
+227	 -3.64037709	 -0.00716491	  0.00403700	  4.63321218	  0.97512267	  0.98879808  0.44677649
+228	 -3.64505519	 -0.00713990	  0.00401918	  4.63791530	  0.97519704	  0.98884093  0.44660407
+229	 -3.64973550	 -0.00711515	  0.00400154	  4.64262036	  0.97527080	  0.98888331  0.44643478
+230	 -3.65441795	 -0.00709066	  0.00398409	  4.64732729	  0.97534394	  0.98892525  0.44626861
+231	 -3.65910247	 -0.00706643	  0.00396683	  4.65203604	  0.97541648	  0.98896674  0.44610551
+232	 -3.66378898	 -0.00704246	  0.00394975	  4.65674652	  0.97548842	  0.98900779  0.44594545
+233	 -3.66847740	 -0.00701873	  0.00393286	  4.66145867	  0.97555978	  0.98904841  0.44578841
+234	 -3.67316767	 -0.00699526	  0.00391614	  4.66617242	  0.97563055	  0.98908860  0.44563435
+235	 -3.67785972	 -0.00697202	  0.00389960	  4.67088770	  0.97570076	  0.98912838  0.44548324
+236	 -3.68255347	 -0.00694903	  0.00388324	  4.67560444	  0.97577039	  0.98916773  0.44533506
+237	 -3.68724885	 -0.00692627	  0.00386705	  4.68032258	  0.97583947	  0.98920668  0.44518977
+238	 -3.69194579	 -0.00690374	  0.00385103	  4.68504204	  0.97590800	  0.98924523  0.44504735
+239	 -3.69664421	 -0.00688145	  0.00383518	  4.68976277	  0.97597598	  0.98928338  0.44490776
+240	 -3.70134406	 -0.00685938	  0.00381949	  4.69448468	  0.97604342	  0.98932113  0.44477099
+241	 -3.70604525	 -0.00683753	  0.00380397	  4.69920772	  0.97611034	  0.98935850  0.44463698
+242	 -3.71074772	 -0.00681590	  0.00378861	  4.70393182	  0.97617673	  0.98939548  0.44450573
+243	 -3.71545140	 -0.00679449	  0.00377342	  4.70865691	  0.97624261	  0.98943209  0.44437720
+244	 -3.72015622	 -0.00677330	  0.00375838	  4.71338292	  0.97630797	  0.98946833  0.44425137
+245	 -3.72486211	 -0.00675231	  0.00374349	  4.71810980	  0.97637283	  0.98950420  0.44412820
+246	 -3.72956899	 -0.00673153	  0.00372877	  4.72283746	  0.97643720	  0.98953970  0.44400767
+247	 -3.73427682	 -0.00671096	  0.00371419	  4.72756585	  0.97650107	  0.98957485  0.44388975
+248	 -3.73898550	 -0.00669059	  0.00369976	  4.73229491	  0.97656446	  0.98960965  0.44377441
+249	 -3.74369498	 -0.00667042	  0.00368549	  4.73702457	  0.97662737	  0.98964409  0.44366163
+250	 -3.74840519	 -0.00665044	  0.00367136	  4.74175475	  0.97668980	  0.98967820  0.44355139
+251	 -3.75311607	 -0.00663066	  0.00365738	  4.74648541	  0.97675177	  0.98971196  0.44344364
+252	 -3.75782754	 -0.00661107	  0.00364354	  4.75121648	  0.97681327	  0.98974540  0.44333838
+253	 -3.76253955	 -0.00659167	  0.00362984	  4.75594788	  0.97687432	  0.98977850  0.44323557
+254	 -3.76725202	 -0.00657245	  0.00361628	  4.76067957	  0.97693492	  0.98981127  0.44313518
+255	 -3.77196489	 -0.00655341	  0.00360286	  4.76541147	  0.97699508	  0.98984372  0.44303720
+256	 -3.77667809	 -0.00653456	  0.00358958	  4.77014353	  0.97705479	  0.98987586  0.44294159
+257	 -3.78139156	 -0.00651589	  0.00357643	  4.77487568	  0.97711407	  0.98990768  0.44284833
+258	 -3.78610525	 -0.00649739	  0.00356342	  4.77960786	  0.97717292	  0.98993920  0.44275740
+259	 -3.79081907	 -0.00647906	  0.00355053	  4.78434001	  0.97723134	  0.98997040  0.44266877
+260	 -3.79553298	 -0.00646091	  0.00353778	  4.78907207	  0.97728935	  0.99000131  0.44258241
+261	 -3.80024690	 -0.00644292	  0.00352516	  4.79380398	  0.97734694	  0.99003192  0.44249831
+262	 -3.80496078	 -0.00642510	  0.00351266	  4.79853567	  0.97740413	  0.99006223  0.44241644
+263	 -3.80967455	 -0.00640745	  0.00350029	  4.80326710	  0.97746090	  0.99009226  0.44233677
+264	 -3.81438815	 -0.00638996	  0.00348804	  4.80799819	  0.97751728	  0.99012200  0.44225928
+265	 -3.81910152	 -0.00637262	  0.00347592	  4.81272889	  0.97757326	  0.99015145  0.44218395
+266	 -3.82381460	 -0.00635545	  0.00346392	  4.81745915	  0.97762886	  0.99018063  0.44211076
+267	 -3.82852732	 -0.00633843	  0.00345204	  4.82218889	  0.97768406	  0.99020953  0.44203968
+268	 -3.83323964	 -0.00632157	  0.00344027	  4.82691808	  0.97773889	  0.99023816  0.44197068
+269	 -3.83795149	 -0.00630485	  0.00342863	  4.83164664	  0.97779333	  0.99026652  0.44190376
+270	 -3.84266280	 -0.00628829	  0.00341709	  4.83637452	  0.97784741	  0.99029462  0.44183887
+271	 -3.84737353	 -0.00627187	  0.00340568	  4.84110166	  0.97790111	  0.99032245  0.44177601
+272	 -3.85208361	 -0.00625560	  0.00339437	  4.84582801	  0.97795446	  0.99035003  0.44171515
+273	 -3.85679299	 -0.00623948	  0.00338318	  4.85055351	  0.97800744	  0.99037735  0.44165627
+274	 -3.86150160	 -0.00622349	  0.00337210	  4.85527811	  0.97806006	  0.99040441  0.44159934
+275	 -3.86620939	 -0.00620765	  0.00336112	  4.86000175	  0.97811233	  0.99043123  0.44154435
+276	 -3.87091631	 -0.00619194	  0.00335026	  4.86472437	  0.97816426	  0.99045780  0.44149127
+277	 -3.87562229	 -0.00617637	  0.00333950	  4.86944592	  0.97821584	  0.99048413  0.44144009
+278	 -3.88032729	 -0.00616094	  0.00332885	  4.87416635	  0.97826708	  0.99051022  0.44139078
+279	 -3.88503124	 -0.00614564	  0.00331830	  4.87888561	  0.97831798	  0.99053607  0.44134332
+280	 -3.88973410	 -0.00613047	  0.00330785	  4.88360363	  0.97836855	  0.99056168  0.44129769
+281	 -3.89443580	 -0.00611543	  0.00329750	  4.88832037	  0.97841879	  0.99058707  0.44125387
+282	 -3.89913629	 -0.00610051	  0.00328726	  4.89303577	  0.97846870	  0.99061223  0.44121185
+283	 -3.90383552	 -0.00608573	  0.00327711	  4.89774979	  0.97851829	  0.99063716  0.44117159
+284	 -3.90853343	 -0.00607107	  0.00326707	  4.90246236	  0.97856756	  0.99066187  0.44113309
+285	 -3.91322998	 -0.00605653	  0.00325712	  4.90717345	  0.97861652	  0.99068635  0.44109632
+286	 -3.91792511	 -0.00604212	  0.00324726	  4.91188299	  0.97866516	  0.99071062  0.44106126
+287	 -3.92261876	 -0.00602782	  0.00323750	  4.91659094	  0.97871350	  0.99073468  0.44102790
+288	 -3.92731089	 -0.00601364	  0.00322784	  4.92129724	  0.97876153	  0.99075852  0.44099621
+289	 -3.93200144	 -0.00599958	  0.00321826	  4.92600186	  0.97880926	  0.99078215  0.44096618
+290	 -3.93669036	 -0.00598564	  0.00320878	  4.93070472	  0.97885669	  0.99080558  0.44093779
+291	 -3.94137761	 -0.00597181	  0.00319939	  4.93540580	  0.97890383	  0.99082880  0.44091101
+292	 -3.94606313	 -0.00595809	  0.00319009	  4.94010504	  0.97895067	  0.99085182  0.44088584
+293	 -3.95074687	 -0.00594449	  0.00318088	  4.94480238	  0.97899722	  0.99087463  0.44086225
+294	 -3.95542878	 -0.00593099	  0.00317175	  4.94949779	  0.97904349	  0.99089725  0.44084022
+295	 -3.96010882	 -0.00591761	  0.00316271	  4.95419121	  0.97908947	  0.99091968  0.44081975
+296	 -3.96478693	 -0.00590433	  0.00315376	  4.95888260	  0.97913517	  0.99094191  0.44080080
+297	 -3.96946306	 -0.00589116	  0.00314489	  4.96357191	  0.97918060	  0.99096395  0.44078336
+298	 -3.97413718	 -0.00587809	  0.00313611	  4.96825909	  0.97922575	  0.99098581  0.44076742
+299	 -3.97880922	 -0.00586512	  0.00312740	  4.97294410	  0.97927063	  0.99100747  0.44075296
+300	 -3.98347915	 -0.00585226	  0.00311878	  4.97762689	  0.97931524	  0.99102895  0.44073996
+301	 -3.98814692	 -0.00583950	  0.00311024	  4.98230742	  0.97935959	  0.99105026  0.44072841
+302	 -3.99281247	 -0.00582684	  0.00310178	  4.98698564	  0.97940367	  0.99107138  0.44071828
+303	 -3.99747577	 -0.00581428	  0.00309340	  4.99166150	  0.97944749	  0.99109232  0.44070956
+304	 -4.00213677	 -0.00580181	  0.00308510	  4.99633496	  0.97949105	  0.99111309  0.44070224
+305	 -4.00679542	 -0.00578944	  0.00307688	  5.00100598	  0.97953436	  0.99113368  0.44069630
+306	 -4.01145168	 -0.00577717	  0.00306873	  5.00567451	  0.97957741	  0.99115410  0.44069173
+307	 -4.01610551	 -0.00576499	  0.00306065	  5.01034052	  0.97962021	  0.99117436  0.44068850
+308	 -4.02075685	 -0.00575290	  0.00305266	  5.01500395	  0.97966277	  0.99119444  0.44068660
+309	 -4.02540567	 -0.00574091	  0.00304473	  5.01966476	  0.97970508	  0.99121436  0.44068602
+310	 -4.03005191	 -0.00572900	  0.00303688	  5.02432291	  0.97974715	  0.99123412  0.44068674
+311	 -4.03469555	 -0.00571719	  0.00302910	  5.02897837	  0.97978897	  0.99125371  0.44068875
+312	 -4.03933654	 -0.00570546	  0.00302139	  5.03363108	  0.97983056	  0.99127315  0.44069203
+313	 -4.04397482	 -0.00569382	  0.00301375	  5.03828100	  0.97987192	  0.99129242  0.44069657
+314	 -4.04861037	 -0.00568227	  0.00300619	  5.04292810	  0.97991304	  0.99131154  0.44070234
+315	 -4.05324314	 -0.00567080	  0.00299869	  5.04757234	  0.97995393	  0.99133051  0.44070935
+316	 -4.05787308	 -0.00565942	  0.00299126	  5.05221367	  0.97999459	  0.99134932  0.44071756
+317	 -4.06250017	 -0.00564812	  0.00298390	  5.05685205	  0.98003502	  0.99136799  0.44072698
+318	 -4.06712435	 -0.00563690	  0.00297660	  5.06148744	  0.98007523	  0.99138650  0.44073757
+319	 -4.07174558	 -0.00562577	  0.00296937	  5.06611981	  0.98011522	  0.99140486  0.44074934
+320	 -4.07636383	 -0.00561471	  0.00296221	  5.07074912	  0.98015498	  0.99142308  0.44076227
+321	 -4.08097906	 -0.00560374	  0.00295511	  5.07537532	  0.98019453	  0.99144116  0.44077633
+322	 -4.08559122	 -0.00559284	  0.00294807	  5.07999838	  0.98023386	  0.99145909  0.44079153
+323	 -4.09020028	 -0.00558202	  0.00294110	  5.08461826	  0.98027298	  0.99147688  0.44080784
+324	 -4.09480620	 -0.00557128	  0.00293419	  5.08923492	  0.98031189	  0.99149453  0.44082525
+325	 -4.09940894	 -0.00556061	  0.00292734	  5.09384833	  0.98035059	  0.99151204  0.44084375
+326	 -4.10400846	 -0.00555002	  0.00292056	  5.09845844	  0.98038908	  0.99152942  0.44086333
+327	 -4.10860473	 -0.00553950	  0.00291383	  5.10306522	  0.98042736	  0.99154666  0.44088396
+328	 -4.11319770	 -0.00552906	  0.00290717	  5.10766864	  0.98046544	  0.99156377  0.44090565
+329	 -4.11778734	 -0.00551869	  0.00290056	  5.11226865	  0.98050332	  0.99158075  0.44092838
+330	 -4.12237362	 -0.00550839	  0.00289401	  5.11686523	  0.98054100	  0.99159760  0.44095213
+331	 -4.12695649	 -0.00549816	  0.00288752	  5.12145833	  0.98057848	  0.99161431  0.44097689
+332	 -4.13153592	 -0.00548801	  0.00288109	  5.12604792	  0.98061577	  0.99163090  0.44100265
+333	 -4.13611188	 -0.00547792	  0.00287471	  5.13063396	  0.98065286	  0.99164737  0.44102940
+334	 -4.14068433	 -0.00546790	  0.00286839	  5.13521643	  0.98068975	  0.99166371  0.44105712
+335	 -4.14525323	 -0.00545795	  0.00286213	  5.13979528	  0.98072646	  0.99167992  0.44108581
+336	 -4.14981854	 -0.00544806	  0.00285592	  5.14437048	  0.98076298	  0.99169602  0.44111544
+337	 -4.15438025	 -0.00543824	  0.00284976	  5.14894200	  0.98079931	  0.99171199  0.44114602
+338	 -4.15893830	 -0.00542849	  0.00284366	  5.15350981	  0.98083545	  0.99172785  0.44117753
+339	 -4.16349267	 -0.00541880	  0.00283761	  5.15807386	  0.98087141	  0.99174358  0.44120995
+340	 -4.16804332	 -0.00540918	  0.00283162	  5.16263414	  0.98090719	  0.99175920  0.44124328
+341	 -4.17259021	 -0.00539962	  0.00282567	  5.16719060	  0.98094278	  0.99177471  0.44127750
+342	 -4.17713333	 -0.00539012	  0.00281978	  5.17174321	  0.98097820	  0.99179010  0.44131260
+343	 -4.18167262	 -0.00538069	  0.00281394	  5.17629194	  0.98101344	  0.99180537  0.44134857
+344	 -4.18620807	 -0.00537131	  0.00280815	  5.18083676	  0.98104851	  0.99182054  0.44138541
+345	 -4.19073963	 -0.00536200	  0.00280241	  5.18537763	  0.98108340	  0.99183560  0.44142309
+346	 -4.19526728	 -0.00535274	  0.00279671	  5.18991453	  0.98111811	  0.99185054  0.44146162
+347	 -4.19979098	 -0.00534355	  0.00279107	  5.19444743	  0.98115266	  0.99186538  0.44150097
+348	 -4.20431070	 -0.00533441	  0.00278548	  5.19897629	  0.98118704	  0.99188011  0.44154114
+349	 -4.20882641	 -0.00532534	  0.00277993	  5.20350108	  0.98122125	  0.99189474  0.44158211
+350	 -4.21333809	 -0.00531632	  0.00277443	  5.20802177	  0.98125529	  0.99190926  0.44162389
+351	 -4.21784569	 -0.00530735	  0.00276897	  5.21253834	  0.98128916	  0.99192367  0.44166645
+352	 -4.22234919	 -0.00529845	  0.00276357	  5.21705075	  0.98132288	  0.99193799  0.44170979
+353	 -4.22684856	 -0.00528959	  0.00275820	  5.22155897	  0.98135643	  0.99195220  0.44175389
+354	 -4.23134377	 -0.00528080	  0.00275289	  5.22606297	  0.98138982	  0.99196631  0.44179875
+355	 -4.23583479	 -0.00527206	  0.00274762	  5.23056273	  0.98142305	  0.99198033  0.44184436
+356	 -4.24032159	 -0.00526337	  0.00274239	  5.23505822	  0.98145612	  0.99199424  0.44189070
+357	 -4.24480413	 -0.00525473	  0.00273720	  5.23954940	  0.98148904	  0.99200806  0.44193777
+358	 -4.24928241	 -0.00524615	  0.00273206	  5.24403626	  0.98152180	  0.99202179  0.44198557
+359	 -4.25375637	 -0.00523762	  0.00272697	  5.24851875	  0.98155440	  0.99203541  0.44203406
+360	 -4.25822600	 -0.00522914	  0.00272191	  5.25299686	  0.98158685	  0.99204895  0.44208326
+361	 -4.26269127	 -0.00522071	  0.00271690	  5.25747055	  0.98161916	  0.99206239  0.44213315
+362	 -4.26715214	 -0.00521233	  0.00271193	  5.26193981	  0.98165131	  0.99207574  0.44218372
+363	 -4.27160860	 -0.00520401	  0.00270700	  5.26640459	  0.98168331	  0.99208900  0.44223496
+364	 -4.27606061	 -0.00519573	  0.00270211	  5.27086489	  0.98171516	  0.99210217  0.44228686
+365	 -4.28050816	 -0.00518750	  0.00269726	  5.27532066	  0.98174687	  0.99211524  0.44233942
+366	 -4.28495120	 -0.00517932	  0.00269245	  5.27977188	  0.98177844	  0.99212824  0.44239262
+367	 -4.28938971	 -0.00517119	  0.00268767	  5.28421853	  0.98180986	  0.99214114  0.44244646
+368	 -4.29382368	 -0.00516310	  0.00268294	  5.28866058	  0.98184113	  0.99215396  0.44250093
+369	 -4.29825306	 -0.00515506	  0.00267825	  5.29309800	  0.98187227	  0.99216669  0.44255601
+370	 -4.30267785	 -0.00514707	  0.00267359	  5.29753078	  0.98190326	  0.99217934  0.44261171
+371	 -4.30709800	 -0.00513912	  0.00266898	  5.30195888	  0.98193412	  0.99219190  0.44266801
+372	 -4.31151350	 -0.00513122	  0.00266440	  5.30638227	  0.98196483	  0.99220438  0.44272490
+373	 -4.31592431	 -0.00512337	  0.00265985	  5.31080095	  0.98199542	  0.99221678  0.44278238
+374	 -4.32033043	 -0.00511555	  0.00265535	  5.31521487	  0.98202586	  0.99222910  0.44284044
+375	 -4.32473181	 -0.00510779	  0.00265088	  5.31962403	  0.98205617	  0.99224134  0.44289907
+376	 -4.32912844	 -0.00510006	  0.00264644	  5.32402838	  0.98208635	  0.99225350  0.44295825
+377	 -4.33352030	 -0.00509238	  0.00264204	  5.32842792	  0.98211639	  0.99226558  0.44301800
+378	 -4.33790735	 -0.00508474	  0.00263768	  5.33282261	  0.98214630	  0.99227758  0.44307829
+379	 -4.34228957	 -0.00507715	  0.00263335	  5.33721243	  0.98217609	  0.99228950  0.44313911
+380	 -4.34666695	 -0.00506959	  0.00262906	  5.34159736	  0.98220574	  0.99230135  0.44320047
+381	 -4.35103946	 -0.00506208	  0.00262479	  5.34597738	  0.98223526	  0.99231313  0.44326235
+382	 -4.35540706	 -0.00505461	  0.00262057	  5.35035246	  0.98226466	  0.99232483  0.44332475
+383	 -4.35976976	 -0.00504718	  0.00261637	  5.35472258	  0.98229393	  0.99233645  0.44338766
+384	 -4.36412751	 -0.00503978	  0.00261221	  5.35908772	  0.98232308	  0.99234800  0.44345107
+385	 -4.36848029	 -0.00503243	  0.00260808	  5.36344786	  0.98235210	  0.99235949  0.44351497
+386	 -4.37282810	 -0.00502512	  0.00260399	  5.36780298	  0.98238100	  0.99237089  0.44357936
+387	 -4.37717089	 -0.00501785	  0.00259992	  5.37215304	  0.98240977	  0.99238223  0.44364422
+388	 -4.38150866	 -0.00501061	  0.00259589	  5.37649804	  0.98243843	  0.99239350  0.44370956
+389	 -4.38584137	 -0.00500341	  0.00259189	  5.38083796	  0.98246696	  0.99240470  0.44377537
+390	 -4.39016901	 -0.00499626	  0.00258792	  5.38517276	  0.98249538	  0.99241583  0.44384163
+391	 -4.39449156	 -0.00498913	  0.00258397	  5.38950243	  0.98252368	  0.99242689  0.44390835
+392	 -4.39880900	 -0.00498205	  0.00258006	  5.39382695	  0.98255186	  0.99243789  0.44397551
+393	 -4.40312130	 -0.00497500	  0.00257618	  5.39814630	  0.98257992	  0.99244881  0.44404311
+394	 -4.40742845	 -0.00496799	  0.00257233	  5.40246046	  0.98260787	  0.99245968  0.44411114
+395	 -4.41173042	 -0.00496101	  0.00256851	  5.40676940	  0.98263570	  0.99247047  0.44417960
+396	 -4.41602719	 -0.00495407	  0.00256472	  5.41107312	  0.98266342	  0.99248121  0.44424847
+397	 -4.42031875	 -0.00494717	  0.00256096	  5.41537158	  0.98269102	  0.99249187  0.44431776
+398	 -4.42460508	 -0.00494030	  0.00255722	  5.41966478	  0.98271852	  0.99250248  0.44438745
+399	 -4.42888615	 -0.00493346	  0.00255351	  5.42395268	  0.98274590	  0.99251302  0.44445755
+400	 -4.43316194	 -0.00492666	  0.00254984	  5.42823528	  0.98277317	  0.99252350  0.44452803
+401	 -4.43743244	 -0.00491989	  0.00254618	  5.43251255	  0.98280033	  0.99253392  0.44459891
+402	 -4.44169763	 -0.00491316	  0.00254256	  5.43678447	  0.98282738	  0.99254428  0.44467016
+403	 -4.44595749	 -0.00490646	  0.00253896	  5.44105103	  0.98285433	  0.99255458  0.44474179
+404	 -4.45021200	 -0.00489979	  0.00253539	  5.44531221	  0.98288117	  0.99256482  0.44481379
+405	 -4.45446115	 -0.00489316	  0.00253185	  5.44956799	  0.98290790	  0.99257500  0.44488616
+406	 -4.45870490	 -0.00488655	  0.00252833	  5.45381835	  0.98293452	  0.99258512  0.44495888
+407	 -4.46294326	 -0.00487998	  0.00252484	  5.45806327	  0.98296105	  0.99259518  0.44503195
+408	 -4.46717619	 -0.00487344	  0.00252137	  5.46230275	  0.98298746	  0.99260519  0.44510537
+409	 -4.47140368	 -0.00486693	  0.00251793	  5.46653675	  0.98301378	  0.99261514  0.44517912
+410	 -4.47562571	 -0.00486046	  0.00251451	  5.47076526	  0.98303999	  0.99262503  0.44525322
+411	 -4.47984227	 -0.00485401	  0.00251112	  5.47498827	  0.98306610	  0.99263487  0.44532764
+412	 -4.48405334	 -0.00484759	  0.00250775	  5.47920575	  0.98309211	  0.99264465  0.44540238
+413	 -4.48825891	 -0.00484121	  0.00250441	  5.48341770	  0.98311802	  0.99265438  0.44547744
+414	 -4.49245894	 -0.00483485	  0.00250109	  5.48762409	  0.98314383	  0.99266406  0.44555282
+415	 -4.49665344	 -0.00482852	  0.00249780	  5.49182492	  0.98316954	  0.99267368  0.44562850
+416	 -4.50084238	 -0.00482223	  0.00249453	  5.49602015	  0.98319515	  0.99268325  0.44570449
+417	 -4.50502575	 -0.00481596	  0.00249128	  5.50020979	  0.98322067	  0.99269277  0.44578077
+418	 -4.50920352	 -0.00480972	  0.00248805	  5.50439380	  0.98324609	  0.99270223  0.44585734
+419	 -4.51337569	 -0.00480350	  0.00248485	  5.50857219	  0.98327141	  0.99271164  0.44593420
+420	 -4.51754224	 -0.00479732	  0.00248167	  5.51274492	  0.98329664	  0.99272101  0.44601134
+421	 -4.52170315	 -0.00479117	  0.00247851	  5.51691199	  0.98332177	  0.99273032  0.44608876
+422	 -4.52585842	 -0.00478504	  0.00247538	  5.52107338	  0.98334681	  0.99273958  0.44616645
+423	 -4.53000801	 -0.00477894	  0.00247227	  5.52522907	  0.98337176	  0.99274880  0.44624440
+424	 -4.53415192	 -0.00477286	  0.00246917	  5.52937906	  0.98339661	  0.99275796  0.44632262
+425	 -4.53829014	 -0.00476682	  0.00246610	  5.53352332	  0.98342137	  0.99276708  0.44640109
+426	 -4.54242264	 -0.00476080	  0.00246306	  5.53766184	  0.98344605	  0.99277615  0.44647982
+427	 -4.54654942	 -0.00475480	  0.00246003	  5.54179461	  0.98347063	  0.99278517  0.44655879
+428	 -4.55067046	 -0.00474884	  0.00245702	  5.54592162	  0.98349512	  0.99279414  0.44663801
+429	 -4.55478574	 -0.00474290	  0.00245404	  5.55004285	  0.98351952	  0.99280307  0.44671746
+430	 -4.55889526	 -0.00473698	  0.00245107	  5.55415828	  0.98354383	  0.99281195  0.44679715
+431	 -4.56299899	 -0.00473109	  0.00244812	  5.55826790	  0.98356806	  0.99282079  0.44687706
+432	 -4.56709693	 -0.00472522	  0.00244520	  5.56237170	  0.98359219	  0.99282958  0.44695720
+433	 -4.57118906	 -0.00471938	  0.00244229	  5.56646967	  0.98361625	  0.99283832  0.44703756
+434	 -4.57527536	 -0.00471357	  0.00243940	  5.57056179	  0.98364021	  0.99284703  0.44711814
+435	 -4.57935583	 -0.00470778	  0.00243654	  5.57464806	  0.98366409	  0.99285569  0.44719893
+436	 -4.58343045	 -0.00470201	  0.00243369	  5.57872844	  0.98368788	  0.99286430  0.44727992
+437	 -4.58749921	 -0.00469627	  0.00243086	  5.58280295	  0.98371159	  0.99287287  0.44736112
+438	 -4.59156210	 -0.00469055	  0.00242805	  5.58687155	  0.98373522	  0.99288140  0.44744252
+439	 -4.59561910	 -0.00468485	  0.00242526	  5.59093424	  0.98375876	  0.99288989  0.44752411
+440	 -4.59967020	 -0.00467918	  0.00242248	  5.59499102	  0.98378222	  0.99289833  0.44760589
+441	 -4.60371538	 -0.00467353	  0.00241973	  5.59904185	  0.98380560	  0.99290674  0.44768785
+442	 -4.60775465	 -0.00466791	  0.00241699	  5.60308674	  0.98382890	  0.99291510  0.44777000
+443	 -4.61178797	 -0.00466230	  0.00241427	  5.60712567	  0.98385211	  0.99292343  0.44785233
+444	 -4.61581536	 -0.00465672	  0.00241157	  5.61115863	  0.98387525	  0.99293171  0.44793483
+445	 -4.61983678	 -0.00465116	  0.00240889	  5.61518561	  0.98389830	  0.99293995  0.44801750
+446	 -4.62385223	 -0.00464563	  0.00240622	  5.61920660	  0.98392128	  0.99294815  0.44810034
+447	 -4.62786170	 -0.00464011	  0.00240357	  5.62322158	  0.98394418	  0.99295632  0.44818334
+448	 -4.63186517	 -0.00463462	  0.00240093	  5.62723055	  0.98396700	  0.99296444  0.44826650
+449	 -4.63586264	 -0.00462915	  0.00239832	  5.63123349	  0.98398974	  0.99297253  0.44834982
+450	 -4.63985410	 -0.00462370	  0.00239572	  5.63523040	  0.98401240	  0.99298058  0.44843328
+451	 -4.64383953	 -0.00461827	  0.00239313	  5.63922126	  0.98403499	  0.99298859  0.44851690
+452	 -4.64781892	 -0.00461286	  0.00239057	  5.64320606	  0.98405750	  0.99299657  0.44860066
+453	 -4.65179227	 -0.00460748	  0.00238802	  5.64718479	  0.98407993	  0.99300451  0.44868455
+454	 -4.65575956	 -0.00460211	  0.00238548	  5.65115744	  0.98410229	  0.99301241  0.44876859
+455	 -4.65972078	 -0.00459677	  0.00238296	  5.65512401	  0.98412458	  0.99302027  0.44885276
+456	 -4.66367592	 -0.00459144	  0.00238046	  5.65908448	  0.98414679	  0.99302810  0.44893706
+457	 -4.66762497	 -0.00458614	  0.00237797	  5.66303884	  0.98416893	  0.99303590  0.44902148
+458	 -4.67156793	 -0.00458085	  0.00237549	  5.66698708	  0.98419099	  0.99304366  0.44910603
+459	 -4.67550478	 -0.00457558	  0.00237303	  5.67092920	  0.98421298	  0.99305138  0.44919070
+460	 -4.67943552	 -0.00457034	  0.00237059	  5.67486518	  0.98423490	  0.99305907  0.44927549
+461	 -4.68336012	 -0.00456511	  0.00236816	  5.67879501	  0.98425675	  0.99306673  0.44936038
+462	 -4.68727860	 -0.00455990	  0.00236575	  5.68271869	  0.98427852	  0.99307435  0.44944539
+463	 -4.69119092	 -0.00455472	  0.00236335	  5.68663621	  0.98430023	  0.99308194  0.44953051
+464	 -4.69509710	 -0.00454955	  0.00236096	  5.69054755	  0.98432186	  0.99308949  0.44961572
+465	 -4.69899711	 -0.00454440	  0.00235859	  5.69445271	  0.98434343	  0.99309701  0.44970104
+466	 -4.70289095	 -0.00453926	  0.00235623	  5.69835168	  0.98436492	  0.99310450  0.44978646
+467	 -4.70677861	 -0.00453415	  0.00235389	  5.70224446	  0.98438635	  0.99311196  0.44987197
+468	 -4.71066008	 -0.00452905	  0.00235156	  5.70613103	  0.98440771	  0.99311939  0.44995757
+469	 -4.71453535	 -0.00452398	  0.00234924	  5.71001138	  0.98442899	  0.99312678  0.45004326
+470	 -4.71840442	 -0.00451892	  0.00234694	  5.71388551	  0.98445021	  0.99313414  0.45012903
+471	 -4.72226728	 -0.00451387	  0.00234465	  5.71775341	  0.98447137	  0.99314147  0.45021488
+472	 -4.72612392	 -0.00450885	  0.00234237	  5.72161507	  0.98449245	  0.99314877  0.45030082
+473	 -4.72997433	 -0.00450384	  0.00234011	  5.72547048	  0.98451347	  0.99315604  0.45038683
+474	 -4.73381850	 -0.00449885	  0.00233786	  5.72931964	  0.98453443	  0.99316328  0.45047291
+475	 -4.73765643	 -0.00449388	  0.00233562	  5.73316254	  0.98455532	  0.99317049  0.45055907
+476	 -4.74148810	 -0.00448893	  0.00233340	  5.73699917	  0.98457614	  0.99317767  0.45064529
+477	 -4.74531352	 -0.00448399	  0.00233119	  5.74082953	  0.98459690	  0.99318483  0.45073158
+478	 -4.74913267	 -0.00447907	  0.00232899	  5.74465360	  0.98461759	  0.99319195  0.45081792
+479	 -4.75294555	 -0.00447416	  0.00232680	  5.74847138	  0.98463822	  0.99319904  0.45090433
+480	 -4.75675214	 -0.00446927	  0.00232462	  5.75228287	  0.98465878	  0.99320610  0.45099080
+481	 -4.76055246	 -0.00446440	  0.00232246	  5.75608805	  0.98467929	  0.99321314  0.45107732
+482	 -4.76434647	 -0.00445955	  0.00232031	  5.75988693	  0.98469973	  0.99322015  0.45116389
+483	 -4.76813419	 -0.00445471	  0.00231816	  5.76367948	  0.98472010	  0.99322713  0.45125051
+484	 -4.77191560	 -0.00444988	  0.00231604	  5.76746572	  0.98474042	  0.99323408  0.45133717
+485	 -4.77569070	 -0.00444507	  0.00231392	  5.77124562	  0.98476067	  0.99324101  0.45142388
+486	 -4.77945947	 -0.00444028	  0.00231181	  5.77501919	  0.98478086	  0.99324791  0.45151063
+487	 -4.78322192	 -0.00443550	  0.00230972	  5.77878642	  0.98480099	  0.99325478  0.45159742
+488	 -4.78697804	 -0.00443074	  0.00230763	  5.78254730	  0.98482106	  0.99326162  0.45168425
+489	 -4.79072783	 -0.00442600	  0.00230556	  5.78630183	  0.98484107	  0.99326844  0.45177111
+490	 -4.79447127	 -0.00442127	  0.00230350	  5.79005000	  0.98486102	  0.99327523  0.45185800
+491	 -4.79820836	 -0.00441655	  0.00230145	  5.79379181	  0.98488091	  0.99328200  0.45194492
+492	 -4.80193909	 -0.00441185	  0.00229941	  5.79752724	  0.98490074	  0.99328874  0.45203187
+493	 -4.80566347	 -0.00440716	  0.00229738	  5.80125630	  0.98492051	  0.99329546  0.45211884
+494	 -4.80938148	 -0.00440249	  0.00229536	  5.80497899	  0.98494022	  0.99330215  0.45220583
+495	 -4.81309312	 -0.00439783	  0.00229335	  5.80869528	  0.98495988	  0.99330881  0.45229285
+496	 -4.81679838	 -0.00439319	  0.00229135	  5.81240519	  0.98497947	  0.99331546  0.45237988
+497	 -4.82049726	 -0.00438856	  0.00228937	  5.81610870	  0.98499901	  0.99332207  0.45246692
+498	 -4.82418976	 -0.00438395	  0.00228739	  5.81980581	  0.98501850	  0.99332866  0.45255398
+499	 -4.82787587	 -0.00437935	  0.00228542	  5.82349652	  0.98503792	  0.99333523  0.45264105
+500	 -4.83155558	 -0.00437476	  0.00228346	  5.82718082	  0.98505729	  0.99334178  0.45272813
+501	 -4.83522889	 -0.00437019	  0.00228151	  5.83085870	  0.98507660	  0.99334830  0.45281521
+502	 -4.83889580	 -0.00436563	  0.00227957	  5.83453017	  0.98509586	  0.99335480  0.45290231
+503	 -4.84255630	 -0.00436109	  0.00227764	  5.83819521	  0.98511506	  0.99336127  0.45298940
+504	 -4.84621038	 -0.00435656	  0.00227572	  5.84185383	  0.98513421	  0.99336772  0.45307649
+505	 -4.84985805	 -0.00435204	  0.00227381	  5.84550601	  0.98515330	  0.99337415  0.45316358
+506	 -4.85349930	 -0.00434753	  0.00227191	  5.84915177	  0.98517233	  0.99338056  0.45325067
+507	 -4.85713412	 -0.00434304	  0.00227002	  5.85279108	  0.98519132	  0.99338694  0.45333775
+508	 -4.86076252	 -0.00433856	  0.00226813	  5.85642396	  0.98521024	  0.99339330  0.45342482
+509	 -4.86438448	 -0.00433410	  0.00226626	  5.86005038	  0.98522912	  0.99339964  0.45351189
+510	 -4.86800001	 -0.00432965	  0.00226439	  5.86367036	  0.98524794	  0.99340596  0.45359894
+511	 -4.87160909	 -0.00432521	  0.00226253	  5.86728389	  0.98526671	  0.99341226  0.45368598
+512	 -4.87521174	 -0.00432078	  0.00226069	  5.87089096	  0.98528542	  0.99341853  0.45377301
+513	 -4.87880793	 -0.00431637	  0.00225885	  5.87449157	  0.98530409	  0.99342479  0.45386001
+514	 -4.88239768	 -0.00431196	  0.00225701	  5.87808572	  0.98532270	  0.99343102  0.45394700
+515	 -4.88598098	 -0.00430758	  0.00225519	  5.88167340	  0.98534126	  0.99343723  0.45403397
+516	 -4.88955781	 -0.00430320	  0.00225338	  5.88525462	  0.98535976	  0.99344342  0.45412092
+517	 -4.89312819	 -0.00429883	  0.00225157	  5.88882936	  0.98537822	  0.99344960  0.45420784
+518	 -4.89669211	 -0.00429448	  0.00224977	  5.89239763	  0.98539662	  0.99345575  0.45429473
+519	 -4.90024957	 -0.00429014	  0.00224798	  5.89595942	  0.98541498	  0.99346188  0.45438160
+520	 -4.90380055	 -0.00428581	  0.00224620	  5.89951474	  0.98543328	  0.99346799  0.45446844
+521	 -4.90734507	 -0.00428150	  0.00224442	  5.90306357	  0.98545154	  0.99347408  0.45455524
+522	 -4.91088312	 -0.00427719	  0.00224266	  5.90660592	  0.98546974	  0.99348015  0.45464201
+523	 -4.91441469	 -0.00427290	  0.00224090	  5.91014179	  0.98548790	  0.99348620  0.45472875
+524	 -4.91793978	 -0.00426862	  0.00223915	  5.91367116	  0.98550600	  0.99349224  0.45481546
+525	 -4.92145840	 -0.00426435	  0.00223740	  5.91719405	  0.98552406	  0.99349825  0.45490212
+526	 -4.92497053	 -0.00426009	  0.00223566	  5.92071044	  0.98554206	  0.99350425  0.45498875
+527	 -4.92847618	 -0.00425584	  0.00223394	  5.92422034	  0.98556002	  0.99351022  0.45507533
+528	 -4.93197535	 -0.00425160	  0.00223221	  5.92772375	  0.98557793	  0.99351618  0.45516187
+529	 -4.93546803	 -0.00424738	  0.00223050	  5.93122065	  0.98559579	  0.99352212  0.45524837
+530	 -4.93895423	 -0.00424317	  0.00222879	  5.93471106	  0.98561361	  0.99352804  0.45533482
+531	 -4.94243393	 -0.00423896	  0.00222709	  5.93819497	  0.98563138	  0.99353395  0.45542123
+532	 -4.94590714	 -0.00423477	  0.00222540	  5.94167237	  0.98564910	  0.99353983  0.45550758
+533	 -4.94937386	 -0.00423059	  0.00222371	  5.94514327	  0.98566677	  0.99354570  0.45559389
+534	 -4.95283409	 -0.00422642	  0.00222203	  5.94860767	  0.98568439	  0.99355155  0.45568014
+535	 -4.95628782	 -0.00422226	  0.00222036	  5.95206556	  0.98570197	  0.99355738  0.45576634
+536	 -4.95973505	 -0.00421811	  0.00221869	  5.95551694	  0.98571951	  0.99356320  0.45585249
+537	 -4.96317579	 -0.00421397	  0.00221703	  5.95896181	  0.98573699	  0.99356900  0.45593858
+538	 -4.96661002	 -0.00420984	  0.00221538	  5.96240018	  0.98575444	  0.99357478  0.45602462
+539	 -4.97003776	 -0.00420573	  0.00221373	  5.96583204	  0.98577183	  0.99358054  0.45611059
+540	 -4.97345900	 -0.00420162	  0.00221209	  5.96925738	  0.98578918	  0.99358629  0.45619651
+541	 -4.97687374	 -0.00419752	  0.00221046	  5.97267622	  0.98580649	  0.99359202  0.45628236
+542	 -4.98028197	 -0.00419344	  0.00220883	  5.97608854	  0.98582375	  0.99359774  0.45636816
+543	 -4.98368371	 -0.00418936	  0.00220721	  5.97949435	  0.98584096	  0.99360343  0.45645388
+544	 -4.98707894	 -0.00418529	  0.00220559	  5.98289365	  0.98585814	  0.99360912  0.45653955
+545	 -4.99046767	 -0.00418123	  0.00220398	  5.98628643	  0.98587526	  0.99361478  0.45662514
+546	 -4.99384989	 -0.00417719	  0.00220238	  5.98967270	  0.98589235	  0.99362043  0.45671067
+547	 -4.99722561	 -0.00417315	  0.00220078	  5.99305246	  0.98590939	  0.99362607  0.45679613
+548	 -5.00059483	 -0.00416912	  0.00219919	  5.99642571	  0.98592638	  0.99363169  0.45688152
+549	 -5.00395754	 -0.00416511	  0.00219761	  5.99979244	  0.98594334	  0.99363729  0.45696684
+550	 -5.00731375	 -0.00416110	  0.00219603	  6.00315266	  0.98596025	  0.99364288  0.45705209
+551	 -5.01066346	 -0.00415710	  0.00219445	  6.00650636	  0.98597712	  0.99364845  0.45713726
+552	 -5.01400667	 -0.00415311	  0.00219288	  6.00985356	  0.98599394	  0.99365401  0.45722236
+553	 -5.01734337	 -0.00414913	  0.00219132	  6.01319424	  0.98601072	  0.99365955  0.45730738
+554	 -5.02067356	 -0.00414516	  0.00218976	  6.01652841	  0.98602746	  0.99366508  0.45739233
+555	 -5.02399726	 -0.00414120	  0.00218821	  6.01985606	  0.98604416	  0.99367059  0.45747719
+556	 -5.02731445	 -0.00413724	  0.00218666	  6.02317721	  0.98606082	  0.99367609  0.45756198
+557	 -5.03062515	 -0.00413330	  0.00218512	  6.02649184	  0.98607744	  0.99368157  0.45764669
+558	 -5.03392934	 -0.00412937	  0.00218359	  6.02979997	  0.98609401	  0.99368704  0.45773131
+559	 -5.03722703	 -0.00412544	  0.00218206	  6.03310159	  0.98611054	  0.99369250  0.45781585
+560	 -5.04051822	 -0.00412153	  0.00218053	  6.03639670	  0.98612704	  0.99369794  0.45790031
+561	 -5.04380292	 -0.00411762	  0.00217901	  6.03968530	  0.98614349	  0.99370337  0.45798469
+562	 -5.04708112	 -0.00411372	  0.00217750	  6.04296739	  0.98615990	  0.99370878  0.45806897
+563	 -5.05035282	 -0.00410983	  0.00217599	  6.04624299	  0.98617627	  0.99371418  0.45815318
+564	 -5.05361802	 -0.00410595	  0.00217448	  6.04951207	  0.98619260	  0.99371957  0.45823729
+565	 -5.05687674	 -0.00410208	  0.00217298	  6.05277466	  0.98620889	  0.99372494  0.45832131
+566	 -5.06012896	 -0.00409821	  0.00217148	  6.05603074	  0.98622514	  0.99373030  0.45840525
+567	 -5.06337469	 -0.00409436	  0.00216999	  6.05928033	  0.98624135	  0.99373565  0.45848909
+568	 -5.06661393	 -0.00409051	  0.00216851	  6.06252341	  0.98625753	  0.99374098  0.45857285
+569	 -5.06984668	 -0.00408668	  0.00216703	  6.06576000	  0.98627366	  0.99374630  0.45865651
+570	 -5.07307294	 -0.00408285	  0.00216555	  6.06899010	  0.98628975	  0.99375161  0.45874007
+571	 -5.07629272	 -0.00407902	  0.00216408	  6.07221370	  0.98630581	  0.99375690  0.45882355
+572	 -5.07950602	 -0.00407521	  0.00216261	  6.07543081	  0.98632182	  0.99376218  0.45890693
+573	 -5.08271283	 -0.00407141	  0.00216115	  6.07864143	  0.98633780	  0.99376745  0.45899021
+574	 -5.08591317	 -0.00406761	  0.00215969	  6.08184556	  0.98635374	  0.99377270  0.45907339
+575	 -5.08910703	 -0.00406382	  0.00215823	  6.08504321	  0.98636965	  0.99377795  0.45915648
+576	 -5.09229441	 -0.00406004	  0.00215678	  6.08823437	  0.98638551	  0.99378318  0.45923947
+577	 -5.09547532	 -0.00405627	  0.00215534	  6.09141905	  0.98640134	  0.99378840  0.45932235
+578	 -5.09864975	 -0.00405250	  0.00215390	  6.09459725	  0.98641713	  0.99379360  0.45940514
+579	 -5.10181772	 -0.00404874	  0.00215246	  6.09776897	  0.98643288	  0.99379880  0.45948783
+580	 -5.10497922	 -0.00404500	  0.00215102	  6.10093422	  0.98644859	  0.99380398  0.45957041
+581	 -5.10813425	 -0.00404125	  0.00214960	  6.10409300	  0.98646427	  0.99380915  0.45965289
+582	 -5.11128282	 -0.00403752	  0.00214817	  6.10724530	  0.98647991	  0.99381431  0.45973527
+583	 -5.11442494	 -0.00403379	  0.00214675	  6.11039114	  0.98649552	  0.99381946  0.45981755
+584	 -5.11756059	 -0.00403008	  0.00214533	  6.11353051	  0.98651108	  0.99382459  0.45989972
+585	 -5.12068979	 -0.00402637	  0.00214392	  6.11666343	  0.98652662	  0.99382971  0.45998178
+586	 -5.12381254	 -0.00402266	  0.00214251	  6.11978988	  0.98654211	  0.99383483  0.46006373
+587	 -5.12692884	 -0.00401897	  0.00214110	  6.12290987	  0.98655757	  0.99383993  0.46014558
+588	 -5.13003869	 -0.00401528	  0.00213970	  6.12602341	  0.98657300	  0.99384502  0.46022732
+589	 -5.13314210	 -0.00401160	  0.00213831	  6.12913050	  0.98658838	  0.99385010  0.46030896
+590	 -5.13623906	 -0.00400792	  0.00213691	  6.13223114	  0.98660374	  0.99385516  0.46039048
+591	 -5.13932959	 -0.00400426	  0.00213552	  6.13532533	  0.98661906	  0.99386022  0.46047189
+592	 -5.14241368	 -0.00400060	  0.00213413	  6.13841308	  0.98663434	  0.99386527  0.46055319
+593	 -5.14549135	 -0.00399695	  0.00213275	  6.14149440	  0.98664959	  0.99387030  0.46063438
+594	 -5.14856258	 -0.00399330	  0.00213137	  6.14456928	  0.98666480	  0.99387532  0.46071546
+595	 -5.15162739	 -0.00398967	  0.00213000	  6.14763772	  0.98667998	  0.99388034  0.46079643
+596	 -5.15468577	 -0.00398604	  0.00212862	  6.15069974	  0.98669512	  0.99388534  0.46087728
+597	 -5.15773774	 -0.00398241	  0.00212725	  6.15375533	  0.98671023	  0.99389033  0.46095802
+598	 -5.16078329	 -0.00397880	  0.00212589	  6.15680449	  0.98672531	  0.99389532  0.46103864
+599	 -5.16382243	 -0.00397519	  0.00212453	  6.15984724	  0.98674035	  0.99390029  0.46111915
+600	 -5.16685516	 -0.00397159	  0.00212317	  6.16288358	  0.98675535	  0.99390525  0.46119954
+601	 -5.16988149	 -0.00396799	  0.00212181	  6.16591350	  0.98677033	  0.99391020  0.46127982
+602	 -5.17290141	 -0.00396440	  0.00212046	  6.16893701	  0.98678527	  0.99391514  0.46135997
+603	 -5.17591494	 -0.00396082	  0.00211911	  6.17195412	  0.98680017	  0.99392007  0.46144001
+604	 -5.17892208	 -0.00395724	  0.00211776	  6.17496483	  0.98681505	  0.99392499  0.46151994
+605	 -5.18192282	 -0.00395368	  0.00211642	  6.17796914	  0.98682989	  0.99392990  0.46159974
+606	 -5.18491718	 -0.00395011	  0.00211508	  6.18096706	  0.98684470	  0.99393481  0.46167943
+607	 -5.18790516	 -0.00394656	  0.00211374	  6.18395860	  0.98685947	  0.99393970  0.46175899
+608	 -5.19088675	 -0.00394301	  0.00211241	  6.18694374	  0.98687421	  0.99394458  0.46183843
+609	 -5.19386198	 -0.00393947	  0.00211108	  6.18992251	  0.98688892	  0.99394945  0.46191776
+610	 -5.19683083	 -0.00393593	  0.00210975	  6.19289490	  0.98690360	  0.99395432  0.46199696
+611	 -5.19979332	 -0.00393241	  0.00210843	  6.19586092	  0.98691824	  0.99395917  0.46207604
+612	 -5.20274945	 -0.00392888	  0.00210710	  6.19882057	  0.98693285	  0.99396401  0.46215500
+613	 -5.20569922	 -0.00392537	  0.00210578	  6.20177385	  0.98694743	  0.99396885  0.46223383
+614	 -5.20864264	 -0.00392186	  0.00210447	  6.20472078	  0.98696198	  0.99397367  0.46231254
+615	 -5.21157971	 -0.00391835	  0.00210315	  6.20766135	  0.98697650	  0.99397849  0.46239113
+616	 -5.21451043	 -0.00391486	  0.00210184	  6.21059558	  0.98699098	  0.99398330  0.46246959
+617	 -5.21743482	 -0.00391137	  0.00210054	  6.21352345	  0.98700544	  0.99398810  0.46254793
+618	 -5.22035287	 -0.00390788	  0.00209923	  6.21644499	  0.98701986	  0.99399289  0.46262614
+619	 -5.22326459	 -0.00390440	  0.00209793	  6.21936019	  0.98703425	  0.99399767  0.46270423
+620	 -5.22616999	 -0.00390093	  0.00209663	  6.22226905	  0.98704861	  0.99400244  0.46278219
+621	 -5.22906906	 -0.00389747	  0.00209533	  6.22517159	  0.98706294	  0.99400720  0.46286003
+622	 -5.23196182	 -0.00389401	  0.00209404	  6.22806781	  0.98707724	  0.99401196  0.46293774
+623	 -5.23484826	 -0.00389055	  0.00209274	  6.23095771	  0.98709151	  0.99401670  0.46301532
+624	 -5.23772840	 -0.00388711	  0.00209145	  6.23384129	  0.98710574	  0.99402144  0.46309277
+625	 -5.24060224	 -0.00388366	  0.00209017	  6.23671857	  0.98711995	  0.99402617  0.46317009
+626	 -5.24346978	 -0.00388023	  0.00208888	  6.23958955	  0.98713413	  0.99403089  0.46324729
+627	 -5.24633103	 -0.00387680	  0.00208760	  6.24245423	  0.98714827	  0.99403560  0.46332436
+628	 -5.24918599	 -0.00387338	  0.00208632	  6.24531261	  0.98716239	  0.99404030  0.46340129
+629	 -5.25203467	 -0.00386996	  0.00208504	  6.24816471	  0.98717648	  0.99404500  0.46347810
+630	 -5.25487707	 -0.00386655	  0.00208377	  6.25101053	  0.98719053	  0.99404969  0.46355478
+631	 -5.25771320	 -0.00386314	  0.00208250	  6.25385007	  0.98720456	  0.99405436  0.46363133
+632	 -5.26054307	 -0.00385974	  0.00208123	  6.25668333	  0.98721856	  0.99405904  0.46370775
+633	 -5.26336668	 -0.00385634	  0.00207996	  6.25951033	  0.98723253	  0.99406370  0.46378403
+634	 -5.26618402	 -0.00385295	  0.00207869	  6.26233107	  0.98724646	  0.99406835  0.46386019
+635	 -5.26899512	 -0.00384957	  0.00207743	  6.26514555	  0.98726037	  0.99407300  0.46393621
+636	 -5.27179998	 -0.00384619	  0.00207617	  6.26795379	  0.98727425	  0.99407764  0.46401210
+637	 -5.27459860	 -0.00384282	  0.00207491	  6.27075577	  0.98728810	  0.99408227  0.46408786
+638	 -5.27739098	 -0.00383945	  0.00207365	  6.27355152	  0.98730193	  0.99408689  0.46416348
+639	 -5.28017713	 -0.00383609	  0.00207240	  6.27634104	  0.98731572	  0.99409151  0.46423898
+640	 -5.28295706	 -0.00383274	  0.00207115	  6.27912432	  0.98732949	  0.99409612  0.46431433
+641	 -5.28573078	 -0.00382939	  0.00206989	  6.28190139	  0.98734322	  0.99410072  0.46438956
+642	 -5.28849828	 -0.00382604	  0.00206865	  6.28467224	  0.98735693	  0.99410531  0.46446465
+643	 -5.29125958	 -0.00382271	  0.00206740	  6.28743687	  0.98737061	  0.99410989  0.46453961
+644	 -5.29401468	 -0.00381937	  0.00206616	  6.29019530	  0.98738426	  0.99411447  0.46461443
+645	 -5.29676358	 -0.00381604	  0.00206491	  6.29294754	  0.98739789	  0.99411904  0.46468912
+646	 -5.29950630	 -0.00381272	  0.00206367	  6.29569358	  0.98741148	  0.99412361  0.46476368
+647	 -5.30224283	 -0.00380940	  0.00206243	  6.29843343	  0.98742505	  0.99412816  0.46483809
+648	 -5.30497319	 -0.00380609	  0.00206120	  6.30116710	  0.98743859	  0.99413271  0.46491238
+649	 -5.30769738	 -0.00380279	  0.00205996	  6.30389459	  0.98745210	  0.99413725  0.46498652
+650	 -5.31041540	 -0.00379948	  0.00205873	  6.30661592	  0.98746559	  0.99414179  0.46506054
+651	 -5.31312727	 -0.00379619	  0.00205750	  6.30933108	  0.98747905	  0.99414631  0.46513441
+652	 -5.31583299	 -0.00379290	  0.00205627	  6.31204009	  0.98749248	  0.99415083  0.46520815
+653	 -5.31853255	 -0.00378961	  0.00205504	  6.31474294	  0.98750588	  0.99415535  0.46528175
+654	 -5.32122598	 -0.00378633	  0.00205382	  6.31743965	  0.98751926	  0.99415985  0.46535522
+655	 -5.32391328	 -0.00378306	  0.00205259	  6.32013023	  0.98753261	  0.99416435  0.46542855
+656	 -5.32659445	 -0.00377979	  0.00205137	  6.32281466	  0.98754593	  0.99416884  0.46550174
+657	 -5.32926950	 -0.00377652	  0.00205015	  6.32549298	  0.98755923	  0.99417333  0.46557479
+658	 -5.33193843	 -0.00377326	  0.00204893	  6.32816517	  0.98757249	  0.99417781  0.46564771
+659	 -5.33460126	 -0.00377000	  0.00204772	  6.33083125	  0.98758574	  0.99418228  0.46572049
+660	 -5.33725798	 -0.00376675	  0.00204650	  6.33349123	  0.98759895	  0.99418674  0.46579313
+661	 -5.33990861	 -0.00376351	  0.00204529	  6.33614511	  0.98761214	  0.99419120  0.46586563
+662	 -5.34255316	 -0.00376027	  0.00204408	  6.33879289	  0.98762531	  0.99419565  0.46593799
+663	 -5.34519162	 -0.00375703	  0.00204287	  6.34143458	  0.98763844	  0.99420010  0.46601022
+664	 -5.34782400	 -0.00375380	  0.00204166	  6.34407020	  0.98765155	  0.99420454  0.46608230
+665	 -5.35045032	 -0.00375058	  0.00204045	  6.34669974	  0.98766464	  0.99420897  0.46615425
+666	 -5.35307057	 -0.00374736	  0.00203925	  6.34932321	  0.98767770	  0.99421340  0.46622606
+667	 -5.35568477	 -0.00374414	  0.00203804	  6.35194063	  0.98769073	  0.99421781  0.46629773
+668	 -5.35829292	 -0.00374093	  0.00203684	  6.35455199	  0.98770374	  0.99422223  0.46636926
+669	 -5.36089503	 -0.00373773	  0.00203564	  6.35715730	  0.98771672	  0.99422663  0.46644065
+670	 -5.36349110	 -0.00373453	  0.00203444	  6.35975657	  0.98772968	  0.99423103  0.46651190
+671	 -5.36608114	 -0.00373133	  0.00203324	  6.36234981	  0.98774261	  0.99423543  0.46658301
+672	 -5.36866517	 -0.00372814	  0.00203205	  6.36493703	  0.98775552	  0.99423982  0.46665398
+673	 -5.37124318	 -0.00372495	  0.00203085	  6.36751823	  0.98776840	  0.99424420  0.46672482
+674	 -5.37381518	 -0.00372177	  0.00202966	  6.37009341	  0.98778125	  0.99424857  0.46679551
+675	 -5.37638118	 -0.00371859	  0.00202847	  6.37266259	  0.98779408	  0.99425294  0.46686606
+676	 -5.37894119	 -0.00371542	  0.00202728	  6.37522577	  0.98780689	  0.99425730  0.46693647
+677	 -5.38149521	 -0.00371225	  0.00202609	  6.37778296	  0.98781967	  0.99426166  0.46700674
+678	 -5.38404325	 -0.00370909	  0.00202490	  6.38033416	  0.98783243	  0.99426601  0.46707687
+679	 -5.38658532	 -0.00370593	  0.00202371	  6.38287939	  0.98784516	  0.99427036  0.46714686
+680	 -5.38912142	 -0.00370278	  0.00202253	  6.38541865	  0.98785786	  0.99427470  0.46721671
+681	 -5.39165157	 -0.00369963	  0.00202134	  6.38795194	  0.98787055	  0.99427903  0.46728642
+682	 -5.39417576	 -0.00369648	  0.00202016	  6.39047928	  0.98788320	  0.99428336  0.46735598
+683	 -5.39669401	 -0.00369334	  0.00201898	  6.39300067	  0.98789584	  0.99428768  0.46742541
+684	 -5.39920633	 -0.00369021	  0.00201780	  6.39551612	  0.98790845	  0.99429200  0.46749470
+685	 -5.40171272	 -0.00368707	  0.00201662	  6.39802564	  0.98792103	  0.99429631  0.46756384
+686	 -5.40421318	 -0.00368395	  0.00201544	  6.40052923	  0.98793359	  0.99430061  0.46763284
+687	 -5.40670773	 -0.00368082	  0.00201427	  6.40302690	  0.98794613	  0.99430491  0.46770170
+688	 -5.40919637	 -0.00367771	  0.00201309	  6.40551867	  0.98795864	  0.99430920  0.46777042
+689	 -5.41167912	 -0.00367459	  0.00201192	  6.40800452	  0.98797113	  0.99431349  0.46783900
+690	 -5.41415597	 -0.00367148	  0.00201075	  6.41048448	  0.98798360	  0.99431777  0.46790744
+691	 -5.41662693	 -0.00366838	  0.00200957	  6.41295855	  0.98799604	  0.99432205  0.46797574
+692	 -5.41909202	 -0.00366528	  0.00200840	  6.41542674	  0.98800846	  0.99432632  0.46804389
+693	 -5.42155124	 -0.00366218	  0.00200724	  6.41788906	  0.98802085	  0.99433058  0.46811190
+694	 -5.42400460	 -0.00365909	  0.00200607	  6.42034551	  0.98803323	  0.99433484  0.46817978
+695	 -5.42645210	 -0.00365600	  0.00200490	  6.42279610	  0.98804557	  0.99433910  0.46824751
+696	 -5.42889376	 -0.00365292	  0.00200374	  6.42524084	  0.98805790	  0.99434334  0.46831509
+697	 -5.43132958	 -0.00364984	  0.00200257	  6.42767973	  0.98807020	  0.99434759  0.46838254
+698	 -5.43375956	 -0.00364677	  0.00200141	  6.43011279	  0.98808248	  0.99435183  0.46844985
+699	 -5.43618372	 -0.00364370	  0.00200024	  6.43254002	  0.98809474	  0.99435606  0.46851701
+700	 -5.43860207	 -0.00364063	  0.00199908	  6.43496143	  0.98810697	  0.99436029  0.46858403
+701	 -5.44101460	 -0.00363757	  0.00199792	  6.43737703	  0.98811918	  0.99436451  0.46865091
+702	 -5.44342134	 -0.00363451	  0.00199676	  6.43978683	  0.98813137	  0.99436872  0.46871765
+703	 -5.44582228	 -0.00363146	  0.00199561	  6.44219082	  0.98814353	  0.99437294  0.46878424
+704	 -5.44821744	 -0.00362841	  0.00199445	  6.44458903	  0.98815567	  0.99437714  0.46885070
+705	 -5.45060682	 -0.00362536	  0.00199329	  6.44698145	  0.98816779	  0.99438134  0.46891701
+706	 -5.45299043	 -0.00362232	  0.00199214	  6.44936811	  0.98817989	  0.99438554  0.46898318
+707	 -5.45536828	 -0.00361929	  0.00199098	  6.45174899	  0.98819196	  0.99438973  0.46904921
+708	 -5.45774037	 -0.00361625	  0.00198983	  6.45412412	  0.98820402	  0.99439392  0.46911510
+709	 -5.46010672	 -0.00361323	  0.00198868	  6.45649350	  0.98821605	  0.99439810  0.46918084
+710	 -5.46246734	 -0.00361020	  0.00198753	  6.45885714	  0.98822805	  0.99440227  0.46924645
+711	 -5.46482222	 -0.00360718	  0.00198638	  6.46121504	  0.98824004	  0.99440644  0.46931191
+712	 -5.46717138	 -0.00360417	  0.00198523	  6.46356722	  0.98825200	  0.99441061  0.46937723
+713	 -5.46951483	 -0.00360115	  0.00198408	  6.46591367	  0.98826395	  0.99441477  0.46944241
+714	 -5.47185257	 -0.00359814	  0.00198293	  6.46825442	  0.98827587	  0.99441892  0.46950744
+715	 -5.47418461	 -0.00359514	  0.00198178	  6.47058947	  0.98828776	  0.99442308  0.46957234
+716	 -5.47651097	 -0.00359214	  0.00198064	  6.47291883	  0.98829964	  0.99442722  0.46963709
+717	 -5.47883164	 -0.00358914	  0.00197949	  6.47524250	  0.98831150	  0.99443136  0.46970170
+718	 -5.48114664	 -0.00358615	  0.00197835	  6.47756049	  0.98832333	  0.99443550  0.46976617
+719	 -5.48345598	 -0.00358316	  0.00197721	  6.47987281	  0.98833514	  0.99443963  0.46983050
+720	 -5.48575966	 -0.00358018	  0.00197606	  6.48217948	  0.98834693	  0.99444376  0.46989469
+721	 -5.48805769	 -0.00357720	  0.00197492	  6.48448049	  0.98835870	  0.99444788  0.46995873
+722	 -5.49035007	 -0.00357422	  0.00197378	  6.48677585	  0.98837045	  0.99445200  0.47002264
+723	 -5.49263683	 -0.00357125	  0.00197264	  6.48906558	  0.98838217	  0.99445611  0.47008640
+724	 -5.49491797	 -0.00356828	  0.00197150	  6.49134968	  0.98839388	  0.99446022  0.47015002
+725	 -5.49719348	 -0.00356532	  0.00197036	  6.49362817	  0.98840556	  0.99446432  0.47021350
+726	 -5.49946339	 -0.00356236	  0.00196923	  6.49590104	  0.98841723	  0.99446842  0.47027684
+727	 -5.50172771	 -0.00355940	  0.00196809	  6.49816831	  0.98842887	  0.99447251  0.47034004
+728	 -5.50398643	 -0.00355645	  0.00196695	  6.50042998	  0.98844049	  0.99447660  0.47040310
+729	 -5.50623957	 -0.00355350	  0.00196582	  6.50268607	  0.98845209	  0.99448068  0.47046602
+730	 -5.50848713	 -0.00355055	  0.00196468	  6.50493658	  0.98846367	  0.99448476  0.47052879
+731	 -5.51072913	 -0.00354761	  0.00196355	  6.50718152	  0.98847523	  0.99448884  0.47059143
+732	 -5.51296557	 -0.00354467	  0.00196242	  6.50942090	  0.98848677	  0.99449291  0.47065392
+733	 -5.51519647	 -0.00354174	  0.00196129	  6.51165473	  0.98849828	  0.99449698  0.47071627
+734	 -5.51742182	 -0.00353881	  0.00196016	  6.51388301	  0.98850978	  0.99450104  0.47077849
+735	 -5.51964164	 -0.00353588	  0.00195902	  6.51610576	  0.98852126	  0.99450510  0.47084056
+736	 -5.52185594	 -0.00353296	  0.00195789	  6.51832298	  0.98853271	  0.99450915  0.47090249
+737	 -5.52406473	 -0.00353004	  0.00195677	  6.52053469	  0.98854415	  0.99451320  0.47096428
+738	 -5.52626800	 -0.00352712	  0.00195564	  6.52274088	  0.98855556	  0.99451724  0.47102593
+739	 -5.52846578	 -0.00352421	  0.00195451	  6.52494157	  0.98856696	  0.99452128  0.47108744
+740	 -5.53065808	 -0.00352130	  0.00195338	  6.52713677	  0.98857834	  0.99452532  0.47114881
+741	 -5.53284489	 -0.00351840	  0.00195226	  6.52932649	  0.98858969	  0.99452935  0.47121004
+742	 -5.53502623	 -0.00351550	  0.00195113	  6.53151073	  0.98860103	  0.99453337  0.47127113
+743	 -5.53720210	 -0.00351260	  0.00195001	  6.53368950	  0.98861234	  0.99453740  0.47133208
+744	 -5.53937252	 -0.00350971	  0.00194888	  6.53586282	  0.98862364	  0.99454141  0.47139289
+745	 -5.54153750	 -0.00350682	  0.00194776	  6.53803068	  0.98863491	  0.99454543  0.47145356
+746	 -5.54369704	 -0.00350393	  0.00194663	  6.54019311	  0.98864617	  0.99454944  0.47151409
+747	 -5.54585115	 -0.00350105	  0.00194551	  6.54235010	  0.98865740	  0.99455344  0.47157449
+748	 -5.54799984	 -0.00349817	  0.00194439	  6.54450167	  0.98866862	  0.99455744  0.47163474
+749	 -5.55014311	 -0.00349529	  0.00194327	  6.54664782	  0.98867982	  0.99456144  0.47169485
+750	 -5.55228099	 -0.00349242	  0.00194215	  6.54878857	  0.98869099	  0.99456543  0.47175483
+751	 -5.55441347	 -0.00348955	  0.00194103	  6.55092392	  0.98870215	  0.99456942  0.47181466
+752	 -5.55654057	 -0.00348669	  0.00193991	  6.55305388	  0.98871329	  0.99457340  0.47187436
+753	 -5.55866229	 -0.00348383	  0.00193879	  6.55517846	  0.98872441	  0.99457738  0.47193391
+754	 -5.56077864	 -0.00348097	  0.00193767	  6.55729767	  0.98873551	  0.99458136  0.47199333
+755	 -5.56288964	 -0.00347811	  0.00193655	  6.55941152	  0.98874659	  0.99458533  0.47205261
+756	 -5.56499528	 -0.00347526	  0.00193544	  6.56152002	  0.98875765	  0.99458930  0.47211176
+757	 -5.56709558	 -0.00347242	  0.00193432	  6.56362317	  0.98876869	  0.99459326  0.47217076
+758	 -5.56919055	 -0.00346957	  0.00193321	  6.56572098	  0.98877972	  0.99459722  0.47222962
+759	 -5.57128020	 -0.00346673	  0.00193209	  6.56781347	  0.98879072	  0.99460118  0.47228835
+760	 -5.57336453	 -0.00346390	  0.00193098	  6.56990064	  0.98880171	  0.99460513  0.47234694
+761	 -5.57544356	 -0.00346106	  0.00192986	  6.57198250	  0.98881267	  0.99460907  0.47240539
+762	 -5.57751729	 -0.00345823	  0.00192875	  6.57405906	  0.98882362	  0.99461302  0.47246371
+763	 -5.57958573	 -0.00345541	  0.00192764	  6.57613032	  0.98883455	  0.99461696  0.47252188
+764	 -5.58164889	 -0.00345259	  0.00192652	  6.57819631	  0.98884546	  0.99462089  0.47257992
+765	 -5.58370679	 -0.00344977	  0.00192541	  6.58025702	  0.98885635	  0.99462482  0.47263782
+766	 -5.58575942	 -0.00344695	  0.00192430	  6.58231247	  0.98886722	  0.99462875  0.47269559
+767	 -5.58780679	 -0.00344414	  0.00192319	  6.58436266	  0.98887808	  0.99463267  0.47275321
+768	 -5.58984893	 -0.00344133	  0.00192208	  6.58640760	  0.98888891	  0.99463659  0.47281070
+769	 -5.59188583	 -0.00343852	  0.00192097	  6.58844731	  0.98889973	  0.99464051  0.47286806
+770	 -5.59391750	 -0.00343572	  0.00191986	  6.59048178	  0.98891053	  0.99464442  0.47292528
+771	 -5.59594396	 -0.00343292	  0.00191875	  6.59251104	  0.98892131	  0.99464833  0.47298236
+772	 -5.59796521	 -0.00343013	  0.00191764	  6.59453508	  0.98893207	  0.99465223  0.47303930
+773	 -5.59998126	 -0.00342733	  0.00191653	  6.59655393	  0.98894281	  0.99465613  0.47309611
+774	 -5.60199212	 -0.00342455	  0.00191543	  6.59856758	  0.98895354	  0.99466003  0.47315278
+775	 -5.60399781	 -0.00342176	  0.00191432	  6.60057605	  0.98896425	  0.99466392  0.47320932
+776	 -5.60599831	 -0.00341898	  0.00191321	  6.60257934	  0.98897493	  0.99466781  0.47326572
+777	 -5.60799366	 -0.00341620	  0.00191211	  6.60457746	  0.98898561	  0.99467169  0.47332198
+778	 -5.60998385	 -0.00341342	  0.00191100	  6.60657043	  0.98899626	  0.99467557  0.47337811
+779	 -5.61196890	 -0.00341065	  0.00190990	  6.60855825	  0.98900689	  0.99467945  0.47343411
+780	 -5.61394881	 -0.00340788	  0.00190879	  6.61054093	  0.98901751	  0.99468332  0.47348997
+781	 -5.61592360	 -0.00340512	  0.00190769	  6.61251848	  0.98902811	  0.99468719  0.47354569
+782	 -5.61789327	 -0.00340235	  0.00190659	  6.61449091	  0.98903869	  0.99469106  0.47360128
+783	 -5.61985783	 -0.00339960	  0.00190548	  6.61645823	  0.98904926	  0.99469492  0.47365674
+784	 -5.62181729	 -0.00339684	  0.00190438	  6.61842045	  0.98905980	  0.99469878  0.47371206
+785	 -5.62377166	 -0.00339409	  0.00190328	  6.62037757	  0.98907033	  0.99470263  0.47376724
+786	 -5.62572095	 -0.00339134	  0.00190218	  6.62232961	  0.98908084	  0.99470648  0.47382230
+787	 -5.62766517	 -0.00338859	  0.00190108	  6.62427658	  0.98909133	  0.99471033  0.47387721
+788	 -5.62960432	 -0.00338585	  0.00189998	  6.62621847	  0.98910181	  0.99471417  0.47393200
+789	 -5.63153842	 -0.00338311	  0.00189888	  6.62815531	  0.98911227	  0.99471801  0.47398665
+790	 -5.63346748	 -0.00338037	  0.00189778	  6.63008711	  0.98912271	  0.99472185  0.47404117
+791	 -5.63539150	 -0.00337764	  0.00189668	  6.63201386	  0.98913313	  0.99472568  0.47409555
+792	 -5.63731050	 -0.00337491	  0.00189558	  6.63393558	  0.98914354	  0.99472951  0.47414980
+793	 -5.63922447	 -0.00337218	  0.00189448	  6.63585229	  0.98915393	  0.99473333  0.47420392
+794	 -5.64113344	 -0.00336946	  0.00189338	  6.63776398	  0.98916430	  0.99473716  0.47425791
+795	 -5.64303741	 -0.00336674	  0.00189229	  6.63967067	  0.98917466	  0.99474097  0.47431176
+796	 -5.64493639	 -0.00336402	  0.00189119	  6.64157237	  0.98918499	  0.99474479  0.47436548
+797	 -5.64683039	 -0.00336131	  0.00189009	  6.64346908	  0.98919531	  0.99474860  0.47441907
+798	 -5.64871942	 -0.00335860	  0.00188899	  6.64536082	  0.98920562	  0.99475241  0.47447252
+799	 -5.65060348	 -0.00335589	  0.00188790	  6.64724759	  0.98921590	  0.99475621  0.47452585
+800	 -5.65248259	 -0.00335319	  0.00188680	  6.64912941	  0.98922617	  0.99476001  0.47457904
+801	 -5.65435676	 -0.00335049	  0.00188571	  6.65100628	  0.98923642	  0.99476381  0.47463210
+802	 -5.65622600	 -0.00334779	  0.00188461	  6.65287821	  0.98924666	  0.99476760  0.47468503
+803	 -5.65809030	 -0.00334509	  0.00188352	  6.65474521	  0.98925688	  0.99477139  0.47473783
+804	 -5.65994970	 -0.00334240	  0.00188243	  6.65660729	  0.98926708	  0.99477517  0.47479050
+805	 -5.66180418	 -0.00333971	  0.00188133	  6.65846447	  0.98927727	  0.99477896  0.47484303
+806	 -5.66365377	 -0.00333703	  0.00188024	  6.66031674	  0.98928744	  0.99478273  0.47489544
+807	 -5.66549846	 -0.00333434	  0.00187915	  6.66216412	  0.98929759	  0.99478651  0.47494772
+808	 -5.66733828	 -0.00333166	  0.00187805	  6.66400662	  0.98930772	  0.99479028  0.47499986
+809	 -5.66917323	 -0.00332899	  0.00187696	  6.66584424	  0.98931784	  0.99479405  0.47505187
+810	 -5.67100331	 -0.00332631	  0.00187587	  6.66767700	  0.98932794	  0.99479781  0.47510376
+811	 -5.67282855	 -0.00332364	  0.00187478	  6.66950490	  0.98933803	  0.99480158  0.47515552
+812	 -5.67464894	 -0.00332098	  0.00187369	  6.67132796	  0.98934810	  0.99480533  0.47520714
+813	 -5.67646450	 -0.00331831	  0.00187260	  6.67314618	  0.98935815	  0.99480909  0.47525864
+814	 -5.67827523	 -0.00331565	  0.00187151	  6.67495958	  0.98936819	  0.99481284  0.47531001
+815	 -5.68008115	 -0.00331299	  0.00187042	  6.67676816	  0.98937821	  0.99481659  0.47536125
+816	 -5.68188226	 -0.00331034	  0.00186933	  6.67857192	  0.98938821	  0.99482033  0.47541236
+817	 -5.68367858	 -0.00330769	  0.00186824	  6.68037089	  0.98939820	  0.99482407  0.47546334
+818	 -5.68547011	 -0.00330504	  0.00186715	  6.68216507	  0.98940817	  0.99482781  0.47551419
+819	 -5.68725686	 -0.00330239	  0.00186606	  6.68395447	  0.98941813	  0.99483154  0.47556492
+820	 -5.68903884	 -0.00329975	  0.00186498	  6.68573909	  0.98942807	  0.99483527  0.47561551
+821	 -5.69081606	 -0.00329711	  0.00186389	  6.68751895	  0.98943799	  0.99483900  0.47566598
+822	 -5.69258853	 -0.00329447	  0.00186280	  6.68929406	  0.98944790	  0.99484272  0.47571632
+823	 -5.69435627	 -0.00329184	  0.00186172	  6.69106443	  0.98945779	  0.99484644  0.47576654
+824	 -5.69611926	 -0.00328921	  0.00186063	  6.69283005	  0.98946767	  0.99485016  0.47581663
+825	 -5.69787754	 -0.00328658	  0.00185954	  6.69459096	  0.98947753	  0.99485388  0.47586659
+826	 -5.69963110	 -0.00328396	  0.00185846	  6.69634715	  0.98948737	  0.99485759  0.47591642
+827	 -5.70137996	 -0.00328133	  0.00185737	  6.69809863	  0.98949720	  0.99486129  0.47596613
+828	 -5.70312413	 -0.00327872	  0.00185629	  6.69984541	  0.98950701	  0.99486500  0.47601571
+829	 -5.70486360	 -0.00327610	  0.00185520	  6.70158750	  0.98951681	  0.99486870  0.47606516
+830	 -5.70659840	 -0.00327349	  0.00185412	  6.70332492	  0.98952659	  0.99487239  0.47611449
+831	 -5.70832854	 -0.00327088	  0.00185304	  6.70505766	  0.98953636	  0.99487609  0.47616370
+832	 -5.71005402	 -0.00326827	  0.00185195	  6.70678575	  0.98954611	  0.99487978  0.47621277
+833	 -5.71177484	 -0.00326567	  0.00185087	  6.70850918	  0.98955584	  0.99488347  0.47626172
+834	 -5.71349103	 -0.00326306	  0.00184979	  6.71022797	  0.98956556	  0.99488715  0.47631055
+835	 -5.71520259	 -0.00326047	  0.00184870	  6.71194212	  0.98957526	  0.99489083  0.47635925
+836	 -5.71690953	 -0.00325787	  0.00184762	  6.71365166	  0.98958495	  0.99489451  0.47640783
+837	 -5.71861185	 -0.00325528	  0.00184654	  6.71535658	  0.98959462	  0.99489818  0.47645628
+838	 -5.72030958	 -0.00325269	  0.00184546	  6.71705689	  0.98960428	  0.99490185  0.47650461
+839	 -5.72200271	 -0.00325010	  0.00184438	  6.71875261	  0.98961392	  0.99490552  0.47655282
+840	 -5.72369126	 -0.00324752	  0.00184330	  6.72044374	  0.98962355	  0.99490918  0.47660090
+841	 -5.72537523	 -0.00324494	  0.00184222	  6.72213029	  0.98963316	  0.99491284  0.47664886
+842	 -5.72705463	 -0.00324236	  0.00184114	  6.72381227	  0.98964276	  0.99491650  0.47669669
+843	 -5.72872948	 -0.00323979	  0.00184006	  6.72548970	  0.98965234	  0.99492016  0.47674440
+844	 -5.73039979	 -0.00323721	  0.00183898	  6.72716257	  0.98966190	  0.99492381  0.47679198
+845	 -5.73206555	 -0.00323464	  0.00183790	  6.72883091	  0.98967145	  0.99492746  0.47683945
+846	 -5.73372679	 -0.00323208	  0.00183682	  6.73049471	  0.98968099	  0.99493110  0.47688679
+847	 -5.73538351	 -0.00322952	  0.00183574	  6.73215399	  0.98969051	  0.99493474  0.47693401
+848	 -5.73703572	 -0.00322695	  0.00183466	  6.73380876	  0.98970002	  0.99493838  0.47698111
+849	 -5.73868343	 -0.00322440	  0.00183359	  6.73545903	  0.98970951	  0.99494202  0.47702808
+850	 -5.74032664	 -0.00322184	  0.00183251	  6.73710480	  0.98971898	  0.99494565  0.47707494
+851	 -5.74196538	 -0.00321929	  0.00183143	  6.73874609	  0.98972844	  0.99494928  0.47712167
+852	 -5.74359964	 -0.00321674	  0.00183036	  6.74038290	  0.98973789	  0.99495290  0.47716828
+853	 -5.74522943	 -0.00321419	  0.00182928	  6.74201524	  0.98974732	  0.99495653  0.47721477
+854	 -5.74685478	 -0.00321165	  0.00182820	  6.74364312	  0.98975674	  0.99496014  0.47726113
+855	 -5.74847567	 -0.00320911	  0.00182713	  6.74526656	  0.98976614	  0.99496376  0.47730738
+856	 -5.75009213	 -0.00320657	  0.00182605	  6.74688556	  0.98977552	  0.99496737  0.47735351
+857	 -5.75170417	 -0.00320404	  0.00182498	  6.74850013	  0.98978490	  0.99497098  0.47739952
+858	 -5.75331179	 -0.00320151	  0.00182390	  6.75011028	  0.98979425	  0.99497459  0.47744540
+859	 -5.75491499	 -0.00319898	  0.00182283	  6.75171602	  0.98980360	  0.99497819  0.47749117
+860	 -5.75651380	 -0.00319645	  0.00182176	  6.75331735	  0.98981293	  0.99498179  0.47753682
+861	 -5.75810822	 -0.00319393	  0.00182068	  6.75491429	  0.98982224	  0.99498539  0.47758234
+862	 -5.75969826	 -0.00319141	  0.00181961	  6.75650685	  0.98983154	  0.99498899  0.47762775
+863	 -5.76128392	 -0.00318889	  0.00181854	  6.75809504	  0.98984082	  0.99499258  0.47767304
+864	 -5.76286523	 -0.00318637	  0.00181746	  6.75967886	  0.98985009	  0.99499616  0.47771821
+865	 -5.76444218	 -0.00318386	  0.00181639	  6.76125832	  0.98985935	  0.99499975  0.47776327
+866	 -5.76601479	 -0.00318135	  0.00181532	  6.76283343	  0.98986859	  0.99500333  0.47780820
+867	 -5.76758306	 -0.00317884	  0.00181425	  6.76440421	  0.98987782	  0.99500691  0.47785302
+868	 -5.76914700	 -0.00317634	  0.00181318	  6.76597066	  0.98988703	  0.99501049  0.47789772
+869	 -5.77070663	 -0.00317384	  0.00181210	  6.76753279	  0.98989623	  0.99501406  0.47794230
+870	 -5.77226195	 -0.00317134	  0.00181103	  6.76909061	  0.98990542	  0.99501763  0.47798676
+871	 -5.77381298	 -0.00316884	  0.00180996	  6.77064413	  0.98991459	  0.99502119  0.47803110
+872	 -5.77535971	 -0.00316635	  0.00180889	  6.77219336	  0.98992374	  0.99502476  0.47807533
+873	 -5.77690216	 -0.00316386	  0.00180782	  6.77373830	  0.98993289	  0.99502832  0.47811945
+874	 -5.77844035	 -0.00316137	  0.00180675	  6.77527898	  0.98994201	  0.99503187  0.47816344
+875	 -5.77997427	 -0.00315889	  0.00180569	  6.77681538	  0.98995113	  0.99503543  0.47820732
+876	 -5.78150394	 -0.00315640	  0.00180462	  6.77834753	  0.98996023	  0.99503898  0.47825108
+877	 -5.78302936	 -0.00315393	  0.00180355	  6.77987544	  0.98996931	  0.99504253  0.47829473
+878	 -5.78455056	 -0.00315145	  0.00180248	  6.78139911	  0.98997839	  0.99504607  0.47833826
+879	 -5.78606752	 -0.00314897	  0.00180141	  6.78291855	  0.98998744	  0.99504961  0.47838168
+880	 -5.78758027	 -0.00314650	  0.00180035	  6.78443377	  0.98999649	  0.99505315  0.47842498
+881	 -5.78908882	 -0.00314403	  0.00179928	  6.78594478	  0.99000552	  0.99505669  0.47846816
+882	 -5.79059316	 -0.00314157	  0.00179821	  6.78745159	  0.99001453	  0.99506022  0.47851123
+883	 -5.79209332	 -0.00313911	  0.00179715	  6.78895421	  0.99002354	  0.99506375  0.47855419
+884	 -5.79358930	 -0.00313665	  0.00179608	  6.79045265	  0.99003253	  0.99506727  0.47859703
+885	 -5.79508110	 -0.00313419	  0.00179501	  6.79194692	  0.99004150	  0.99507080  0.47863976
+886	 -5.79656875	 -0.00313173	  0.00179395	  6.79343702	  0.99005046	  0.99507432  0.47868238
+887	 -5.79805224	 -0.00312928	  0.00179288	  6.79492296	  0.99005941	  0.99507784  0.47872487
+888	 -5.79953159	 -0.00312683	  0.00179182	  6.79640476	  0.99006834	  0.99508135  0.47876726
+889	 -5.80100681	 -0.00312438	  0.00179075	  6.79788243	  0.99007726	  0.99508486  0.47880954
+890	 -5.80247790	 -0.00312194	  0.00178969	  6.79935596	  0.99008617	  0.99508837  0.47885170
+891	 -5.80394487	 -0.00311950	  0.00178863	  6.80082538	  0.99009506	  0.99509187  0.47889374
+892	 -5.80540774	 -0.00311706	  0.00178756	  6.80229068	  0.99010394	  0.99509538  0.47893568
+893	 -5.80686651	 -0.00311462	  0.00178650	  6.80375189	  0.99011281	  0.99509888  0.47897750
+894	 -5.80832119	 -0.00311219	  0.00178544	  6.80520900	  0.99012166	  0.99510237  0.47901921
+895	 -5.80977179	 -0.00310976	  0.00178438	  6.80666204	  0.99013050	  0.99510587  0.47906081
+896	 -5.81121832	 -0.00310733	  0.00178331	  6.80811099	  0.99013933	  0.99510936  0.47910230
+897	 -5.81266079	 -0.00310490	  0.00178225	  6.80955589	  0.99014814	  0.99511284  0.47914367
+898	 -5.81409921	 -0.00310248	  0.00178119	  6.81099673	  0.99015694	  0.99511633  0.47918494
+899	 -5.81553358	 -0.00310006	  0.00178013	  6.81243352	  0.99016573	  0.99511981  0.47922609
+900	 -5.81696392	 -0.00309764	  0.00177907	  6.81386627	  0.99017450	  0.99512329  0.47926714
+901	 -5.81839023	 -0.00309523	  0.00177801	  6.81529500	  0.99018326	  0.99512676  0.47930807
+902	 -5.81981252	 -0.00309282	  0.00177695	  6.81671970	  0.99019200	  0.99513024  0.47934889
+903	 -5.82123081	 -0.00309041	  0.00177589	  6.81814040	  0.99020074	  0.99513370  0.47938960
+904	 -5.82264509	 -0.00308800	  0.00177483	  6.81955709	  0.99020946	  0.99513717  0.47943020
+905	 -5.82405539	 -0.00308560	  0.00177377	  6.82096980	  0.99021816	  0.99514063  0.47947070
+906	 -5.82546171	 -0.00308319	  0.00177271	  6.82237851	  0.99022686	  0.99514410  0.47951108
+907	 -5.82686405	 -0.00308079	  0.00177165	  6.82378326	  0.99023554	  0.99514755  0.47955135
+908	 -5.82826243	 -0.00307840	  0.00177059	  6.82518403	  0.99024421	  0.99515101  0.47959152
+909	 -5.82965686	 -0.00307600	  0.00176954	  6.82658086	  0.99025286	  0.99515446  0.47963157
+910	 -5.83104734	 -0.00307361	  0.00176848	  6.82797373	  0.99026150	  0.99515791  0.47967152
+911	 -5.83243389	 -0.00307122	  0.00176742	  6.82936266	  0.99027013	  0.99516135  0.47971136
+912	 -5.83381650	 -0.00306884	  0.00176637	  6.83074767	  0.99027875	  0.99516480  0.47975109
+913	 -5.83519520	 -0.00306645	  0.00176531	  6.83212875	  0.99028735	  0.99516824  0.47979072
+914	 -5.83656999	 -0.00306407	  0.00176425	  6.83350592	  0.99029594	  0.99517167  0.47983023
+915	 -5.83794088	 -0.00306169	  0.00176320	  6.83487918	  0.99030451	  0.99517511  0.47986964
+916	 -5.83930788	 -0.00305932	  0.00176214	  6.83624856	  0.99031308	  0.99517854  0.47990894
+917	 -5.84067099	 -0.00305695	  0.00176109	  6.83761404	  0.99032163	  0.99518197  0.47994814
+918	 -5.84203023	 -0.00305458	  0.00176003	  6.83897565	  0.99033017	  0.99518539  0.47998722
+919	 -5.84338560	 -0.00305221	  0.00175898	  6.84033340	  0.99033869	  0.99518881  0.48002620
+920	 -5.84473712	 -0.00304984	  0.00175793	  6.84168728	  0.99034721	  0.99519223  0.48006508
+921	 -5.84608479	 -0.00304748	  0.00175687	  6.84303731	  0.99035571	  0.99519565  0.48010385
+922	 -5.84742862	 -0.00304512	  0.00175582	  6.84438350	  0.99036419	  0.99519906  0.48014251
+923	 -5.84876862	 -0.00304276	  0.00175477	  6.84572586	  0.99037267	  0.99520247  0.48018107
+924	 -5.85010480	 -0.00304041	  0.00175371	  6.84706439	  0.99038113	  0.99520588  0.48021952
+925	 -5.85143717	 -0.00303805	  0.00175266	  6.84839911	  0.99038958	  0.99520929  0.48025787
+926	 -5.85276573	 -0.00303570	  0.00175161	  6.84973003	  0.99039802	  0.99521269  0.48029611
+927	 -5.85409050	 -0.00303336	  0.00175056	  6.85105714	  0.99040644	  0.99521609  0.48033425
+928	 -5.85541148	 -0.00303101	  0.00174951	  6.85238047	  0.99041485	  0.99521948  0.48037228
+929	 -5.85672868	 -0.00302867	  0.00174846	  6.85370002	  0.99042325	  0.99522288  0.48041021
+930	 -5.85804212	 -0.00302633	  0.00174741	  6.85501579	  0.99043164	  0.99522627  0.48044803
+931	 -5.85935180	 -0.00302399	  0.00174636	  6.85632781	  0.99044002	  0.99522965  0.48048575
+932	 -5.86065772	 -0.00302166	  0.00174531	  6.85763607	  0.99044838	  0.99523304  0.48052337
+933	 -5.86195991	 -0.00301932	  0.00174426	  6.85894058	  0.99045673	  0.99523642  0.48056088
+934	 -5.86325835	 -0.00301699	  0.00174321	  6.86024136	  0.99046507	  0.99523980  0.48059829
+935	 -5.86455308	 -0.00301467	  0.00174216	  6.86153841	  0.99047339	  0.99524317  0.48063560
+936	 -5.86584409	 -0.00301234	  0.00174111	  6.86283174	  0.99048171	  0.99524655  0.48067281
+937	 -5.86713139	 -0.00301002	  0.00174006	  6.86412137	  0.99049001	  0.99524992  0.48070991
+938	 -5.86841499	 -0.00300770	  0.00173902	  6.86540729	  0.99049829	  0.99525328  0.48074691
+939	 -5.86969490	 -0.00300538	  0.00173797	  6.86668952	  0.99050657	  0.99525665  0.48078381
+940	 -5.87097113	 -0.00300307	  0.00173692	  6.86796806	  0.99051483	  0.99526001  0.48082060
+941	 -5.87224368	 -0.00300076	  0.00173588	  6.86924293	  0.99052309	  0.99526337  0.48085730
+942	 -5.87351257	 -0.00299845	  0.00173483	  6.87051413	  0.99053133	  0.99526672  0.48089389
+943	 -5.87477781	 -0.00299614	  0.00173378	  6.87178167	  0.99053955	  0.99527008  0.48093038
+944	 -5.87603940	 -0.00299383	  0.00173274	  6.87304557	  0.99054777	  0.99527343  0.48096678
+945	 -5.87729735	 -0.00299153	  0.00173169	  6.87430582	  0.99055597	  0.99527677  0.48100307
+946	 -5.87855167	 -0.00298923	  0.00173065	  6.87556244	  0.99056416	  0.99528012  0.48103926
+947	 -5.87980237	 -0.00298694	  0.00172961	  6.87681543	  0.99057234	  0.99528346  0.48107535
+948	 -5.88104946	 -0.00298464	  0.00172856	  6.87806482	  0.99058051	  0.99528680  0.48111134
+949	 -5.88229294	 -0.00298235	  0.00172752	  6.87931059	  0.99058867	  0.99529013  0.48114723
+950	 -5.88353283	 -0.00298006	  0.00172648	  6.88055277	  0.99059681	  0.99529347  0.48118302
+951	 -5.88476913	 -0.00297777	  0.00172543	  6.88179135	  0.99060494	  0.99529680  0.48121871
+952	 -5.88600185	 -0.00297549	  0.00172439	  6.88302636	  0.99061306	  0.99530012  0.48125430
+953	 -5.88723100	 -0.00297320	  0.00172335	  6.88425779	  0.99062117	  0.99530345  0.48128980
+954	 -5.88845659	 -0.00297093	  0.00172231	  6.88548566	  0.99062927	  0.99530677  0.48132519
+955	 -5.88967862	 -0.00296865	  0.00172127	  6.88670998	  0.99063735	  0.99531009  0.48136049
+956	 -5.89089712	 -0.00296637	  0.00172022	  6.88793074	  0.99064542	  0.99531340  0.48139569
+957	 -5.89211207	 -0.00296410	  0.00171918	  6.88914797	  0.99065348	  0.99531671  0.48143079
+958	 -5.89332350	 -0.00296183	  0.00171814	  6.89036167	  0.99066153	  0.99532002  0.48146579
+959	 -5.89453141	 -0.00295956	  0.00171710	  6.89157185	  0.99066957	  0.99532333  0.48150069
+960	 -5.89573581	 -0.00295730	  0.00171607	  6.89277851	  0.99067760	  0.99532664  0.48153550
+961	 -5.89693670	 -0.00295504	  0.00171503	  6.89398167	  0.99068561	  0.99532994  0.48157021
+962	 -5.89813411	 -0.00295278	  0.00171399	  6.89518133	  0.99069361	  0.99533324  0.48160482
+963	 -5.89932802	 -0.00295052	  0.00171295	  6.89637751	  0.99070160	  0.99533653  0.48163934
+964	 -5.90051846	 -0.00294826	  0.00171191	  6.89757020	  0.99070958	  0.99533983  0.48167376
+965	 -5.90170544	 -0.00294601	  0.00171088	  6.89875943	  0.99071755	  0.99534312  0.48170809
+966	 -5.90288895	 -0.00294376	  0.00170984	  6.89994519	  0.99072550	  0.99534640  0.48174231
+967	 -5.90406901	 -0.00294151	  0.00170880	  6.90112750	  0.99073345	  0.99534969  0.48177645
+968	 -5.90524562	 -0.00293927	  0.00170777	  6.90230636	  0.99074138	  0.99535297  0.48181048
+969	 -5.90641881	 -0.00293702	  0.00170673	  6.90348178	  0.99074930	  0.99535625  0.48184443
+970	 -5.90758856	 -0.00293478	  0.00170569	  6.90465378	  0.99075721	  0.99535952  0.48187827
+971	 -5.90875490	 -0.00293254	  0.00170466	  6.90582235	  0.99076511	  0.99536280  0.48191202
+972	 -5.90991782	 -0.00293031	  0.00170363	  6.90698751	  0.99077300	  0.99536607  0.48194568
+973	 -5.91107735	 -0.00292807	  0.00170259	  6.90814927	  0.99078087	  0.99536933  0.48197924
+974	 -5.91223348	 -0.00292584	  0.00170156	  6.90930763	  0.99078874	  0.99537260  0.48201271
+975	 -5.91338622	 -0.00292362	  0.00170052	  6.91046261	  0.99079659	  0.99537586  0.48204608
+976	 -5.91453559	 -0.00292139	  0.00169949	  6.91161420	  0.99080443	  0.99537912  0.48207936
+977	 -5.91568159	 -0.00291917	  0.00169846	  6.91276243	  0.99081226	  0.99538238  0.48211255
+978	 -5.91682423	 -0.00291694	  0.00169743	  6.91390729	  0.99082008	  0.99538563  0.48214564
+979	 -5.91796352	 -0.00291472	  0.00169639	  6.91504879	  0.99082789	  0.99538888  0.48217864
+980	 -5.91909946	 -0.00291251	  0.00169536	  6.91618695	  0.99083569	  0.99539213  0.48221155
+981	 -5.92023207	 -0.00291029	  0.00169433	  6.91732177	  0.99084347	  0.99539537  0.48224436
+982	 -5.92136135	 -0.00290808	  0.00169330	  6.91845327	  0.99085124	  0.99539862  0.48227709
+983	 -5.92248731	 -0.00290587	  0.00169227	  6.91958144	  0.99085901	  0.99540186  0.48230971
+984	 -5.92360996	 -0.00290367	  0.00169124	  6.92070629	  0.99086676	  0.99540509  0.48234225
+985	 -5.92472930	 -0.00290146	  0.00169021	  6.92182784	  0.99087450	  0.99540833  0.48237470
+986	 -5.92584536	 -0.00289926	  0.00168918	  6.92294610	  0.99088223	  0.99541156  0.48240705
+987	 -5.92695812	 -0.00289706	  0.00168816	  6.92406106	  0.99088995	  0.99541479  0.48243931
+988	 -5.92806761	 -0.00289486	  0.00168713	  6.92517274	  0.99089766	  0.99541801  0.48247148
+989	 -5.92917382	 -0.00289267	  0.00168610	  6.92628115	  0.99090535	  0.99542123  0.48250356
+990	 -5.93027677	 -0.00289047	  0.00168507	  6.92738630	  0.99091304	  0.99542445  0.48253555
+991	 -5.93137647	 -0.00288828	  0.00168405	  6.92848819	  0.99092071	  0.99542767  0.48256745
+992	 -5.93247293	 -0.00288610	  0.00168302	  6.92958683	  0.99092837	  0.99543089  0.48259926
+993	 -5.93356614	 -0.00288391	  0.00168199	  6.93068223	  0.99093603	  0.99543410  0.48263098
+994	 -5.93465613	 -0.00288173	  0.00168097	  6.93177440	  0.99094367	  0.99543731  0.48266260
+995	 -5.93574289	 -0.00287955	  0.00167994	  6.93286334	  0.99095130	  0.99544051  0.48269414
+996	 -5.93682644	 -0.00287737	  0.00167892	  6.93394907	  0.99095892	  0.99544371  0.48272559
+997	 -5.93790678	 -0.00287519	  0.00167789	  6.93503159	  0.99096653	  0.99544692  0.48275695
+998	 -5.93898392	 -0.00287302	  0.00167687	  6.93611091	  0.99097412	  0.99545011  0.48278822
+999	 -5.94005788	 -0.00287085	  0.00167585	  6.93718703	  0.99098171	  0.99545331  0.48281940
+1000	 -5.94112865	 -0.00286868	  0.00167482	  6.93825997	  0.99098929	  0.99545650  0.48285049
+1001	 -5.94219625	 -0.00286651	  0.00167380	  6.93932974	  0.99099685	  0.99545969  0.48288150
+1002	 -5.94326068	 -0.00286435	  0.00167278	  6.94039634	  0.99100441	  0.99546288  0.48291241
+1003	 -5.94432196	 -0.00286218	  0.00167176	  6.94145977	  0.99101195	  0.99546606  0.48294324
+1004	 -5.94538008	 -0.00286002	  0.00167074	  6.94252006	  0.99101949	  0.99546924  0.48297398
+1005	 -5.94643506	 -0.00285787	  0.00166971	  6.94357720	  0.99102701	  0.99547242  0.48300463
+1006	 -5.94748691	 -0.00285571	  0.00166869	  6.94463120	  0.99103452	  0.99547559  0.48303520
+1007	 -5.94853563	 -0.00285356	  0.00166767	  6.94568207	  0.99104202	  0.99547877  0.48306568
+1008	 -5.94958124	 -0.00285141	  0.00166666	  6.94672983	  0.99104951	  0.99548194  0.48309607
+1009	 -5.95062373	 -0.00284926	  0.00166564	  6.94777447	  0.99105699	  0.99548510  0.48312637
+1010	 -5.95166312	 -0.00284711	  0.00166462	  6.94881600	  0.99106446	  0.99548827  0.48315659
+1011	 -5.95269941	 -0.00284497	  0.00166360	  6.94985444	  0.99107192	  0.99549143  0.48318672
+1012	 -5.95373262	 -0.00284283	  0.00166258	  6.95088979	  0.99107937	  0.99549459  0.48321676
+1013	 -5.95476275	 -0.00284069	  0.00166156	  6.95192206	  0.99108681	  0.99549775  0.48324672
+1014	 -5.95578980	 -0.00283855	  0.00166055	  6.95295125	  0.99109423	  0.99550090  0.48327660
+1015	 -5.95681380	 -0.00283642	  0.00165953	  6.95397738	  0.99110165	  0.99550405  0.48330638
+1016	 -5.95783474	 -0.00283429	  0.00165852	  6.95500045	  0.99110906	  0.99550720  0.48333609
+1017	 -5.95885262	 -0.00283216	  0.00165750	  6.95602047	  0.99111645	  0.99551034  0.48336571
+1018	 -5.95986747	 -0.00283003	  0.00165648	  6.95703744	  0.99112384	  0.99551348  0.48339524
+1019	 -5.96087929	 -0.00282791	  0.00165547	  6.95805138	  0.99113121	  0.99551662  0.48342469
+1020	 -5.96188808	 -0.00282578	  0.00165446	  6.95906230	  0.99113858	  0.99551976  0.48345405
+1021	 -5.96289385	 -0.00282366	  0.00165344	  6.96007019	  0.99114593	  0.99552290  0.48348333
+1022	 -5.96389662	 -0.00282154	  0.00165243	  6.96107507	  0.99115327	  0.99552603  0.48351252
+1023	 -5.96489638	 -0.00281943	  0.00165142	  6.96207695	  0.99116061	  0.99552916  0.48354163
+1024	 -5.96589315	 -0.00281732	  0.00165040	  6.96307584	  0.99116793	  0.99553228  0.48357066
+1025	 -5.96688693	 -0.00281520	  0.00164939	  6.96407173	  0.99117524	  0.99553540  0.48359961
+1026	 -5.96787774	 -0.00281310	  0.00164838	  6.96506464	  0.99118255	  0.99553852  0.48362846
+1027	 -5.96886557	 -0.00281099	  0.00164737	  6.96605458	  0.99118984	  0.99554164  0.48365724
+1028	 -5.96985044	 -0.00280888	  0.00164636	  6.96704156	  0.99119712	  0.99554476  0.48368594
+1029	 -5.97083235	 -0.00280678	  0.00164535	  6.96802557	  0.99120439	  0.99554787  0.48371455
+1030	 -5.97181132	 -0.00280468	  0.00164434	  6.96900664	  0.99121165	  0.99555098  0.48374308
+1031	 -5.97278734	 -0.00280258	  0.00164333	  6.96998476	  0.99121891	  0.99555409  0.48377153
+1032	 -5.97376044	 -0.00280049	  0.00164232	  6.97095995	  0.99122615	  0.99555719  0.48379989
+1033	 -5.97473060	 -0.00279840	  0.00164131	  6.97193221	  0.99123338	  0.99556029  0.48382818
+1034	 -5.97569785	 -0.00279631	  0.00164031	  6.97290155	  0.99124060	  0.99556339  0.48385638
+1035	 -5.97666219	 -0.00279422	  0.00163930	  6.97386797	  0.99124781	  0.99556648  0.48388450
+1036	 -5.97762362	 -0.00279213	  0.00163829	  6.97483149	  0.99125501	  0.99556958  0.48391254
+1037	 -5.97858216	 -0.00279005	  0.00163729	  6.97579212	  0.99126220	  0.99557267  0.48394050
+1038	 -5.97953782	 -0.00278796	  0.00163628	  6.97674985	  0.99126938	  0.99557576  0.48396837
+1039	 -5.98049059	 -0.00278589	  0.00163527	  6.97770470	  0.99127655	  0.99557884  0.48399617
+1040	 -5.98144049	 -0.00278381	  0.00163427	  6.97865668	  0.99128371	  0.99558192  0.48402389
+1041	 -5.98238752	 -0.00278173	  0.00163326	  6.97960579	  0.99129087	  0.99558500  0.48405152
+1042	 -5.98333170	 -0.00277966	  0.00163226	  6.98055204	  0.99129801	  0.99558808  0.48407908
+1043	 -5.98427302	 -0.00277759	  0.00163126	  6.98149543	  0.99130514	  0.99559115  0.48410655
+1044	 -5.98521150	 -0.00277552	  0.00163025	  6.98243598	  0.99131226	  0.99559422  0.48413395
+1045	 -5.98614715	 -0.00277346	  0.00162925	  6.98337369	  0.99131937	  0.99559729  0.48416127
+1046	 -5.98707997	 -0.00277139	  0.00162825	  6.98430858	  0.99132647	  0.99560036  0.48418851
+1047	 -5.98800996	 -0.00276933	  0.00162725	  6.98524063	  0.99133356	  0.99560342  0.48421567
+1048	 -5.98893715	 -0.00276727	  0.00162625	  6.98616988	  0.99134064	  0.99560648  0.48424275
+1049	 -5.98986153	 -0.00276521	  0.00162525	  6.98709631	  0.99134771	  0.99560954  0.48426975
+1050	 -5.99078310	 -0.00276316	  0.00162425	  6.98801995	  0.99135477	  0.99561259  0.48429667
+1051	 -5.99170189	 -0.00276111	  0.00162325	  6.98894079	  0.99136183	  0.99561565  0.48432352
+1052	 -5.99261789	 -0.00275906	  0.00162225	  6.98985884	  0.99136887	  0.99561870  0.48435028
+1053	 -5.99353112	 -0.00275701	  0.00162125	  6.99077411	  0.99137590	  0.99562174  0.48437697
+1054	 -5.99444158	 -0.00275496	  0.00162025	  6.99168662	  0.99138292	  0.99562479  0.48440358
+1055	 -5.99534927	 -0.00275292	  0.00161925	  6.99259635	  0.99138994	  0.99562783  0.48443012
+1056	 -5.99625421	 -0.00275088	  0.00161826	  6.99350334	  0.99139694	  0.99563087  0.48445657
+1057	 -5.99715640	 -0.00274884	  0.00161726	  6.99440757	  0.99140393	  0.99563390  0.48448295
+1058	 -5.99805585	 -0.00274680	  0.00161626	  6.99530906	  0.99141092	  0.99563694  0.48450926
+1059	 -5.99895257	 -0.00274476	  0.00161527	  6.99620781	  0.99141789	  0.99563997  0.48453548
+1060	 -5.99984656	 -0.00274273	  0.00161427	  6.99710383	  0.99142485	  0.99564299  0.48456163
+1061	 -6.00073784	 -0.00274070	  0.00161328	  6.99799714	  0.99143181	  0.99564602  0.48458771
+1062	 -6.00162640	 -0.00273867	  0.00161228	  6.99888773	  0.99143875	  0.99564904  0.48461370
+1063	 -6.00251225	 -0.00273665	  0.00161129	  6.99977561	  0.99144569	  0.99565206  0.48463962
+1064	 -6.00339541	 -0.00273462	  0.00161030	  7.00066079	  0.99145261	  0.99565508  0.48466547
+1065	 -6.00427588	 -0.00273260	  0.00160931	  7.00154328	  0.99145953	  0.99565809  0.48469124
+1066	 -6.00515367	 -0.00273058	  0.00160831	  7.00242309	  0.99146644	  0.99566111  0.48471693
+1067	 -6.00602878	 -0.00272856	  0.00160732	  7.00330021	  0.99147334	  0.99566411  0.48474255
+1068	 -6.00690122	 -0.00272655	  0.00160633	  7.00417467	  0.99148022	  0.99566712  0.48476810
+1069	 -6.00777100	 -0.00272454	  0.00160534	  7.00504646	  0.99148710	  0.99567012  0.48479357
+1070	 -6.00863812	 -0.00272252	  0.00160435	  7.00591560	  0.99149397	  0.99567313  0.48481896
+1071	 -6.00950260	 -0.00272052	  0.00160336	  7.00678208	  0.99150083	  0.99567612  0.48484429
+1072	 -6.01036444	 -0.00271851	  0.00160237	  7.00764593	  0.99150768	  0.99567912  0.48486953
+1073	 -6.01122364	 -0.00271651	  0.00160138	  7.00850713	  0.99151452	  0.99568211  0.48489471
+1074	 -6.01208022	 -0.00271450	  0.00160039	  7.00936571	  0.99152135	  0.99568510  0.48491980
+1075	 -6.01293417	 -0.00271250	  0.00159941	  7.01022167	  0.99152817	  0.99568809  0.48494483
+1076	 -6.01378552	 -0.00271051	  0.00159842	  7.01107501	  0.99153498	  0.99569107  0.48496978
+1077	 -6.01463426	 -0.00270851	  0.00159743	  7.01192575	  0.99154179	  0.99569406  0.48499466
+1078	 -6.01548040	 -0.00270652	  0.00159645	  7.01277388	  0.99154858	  0.99569704  0.48501947
+1079	 -6.01632394	 -0.00270453	  0.00159546	  7.01361942	  0.99155537	  0.99570001  0.48504420
+1080	 -6.01716491	 -0.00270254	  0.00159448	  7.01446237	  0.99156214	  0.99570299  0.48506886
+1081	 -6.01800329	 -0.00270055	  0.00159349	  7.01530274	  0.99156891	  0.99570596  0.48509345
+1082	 -6.01883911	 -0.00269856	  0.00159251	  7.01614055	  0.99157566	  0.99570893  0.48511797
+1083	 -6.01967236	 -0.00269658	  0.00159153	  7.01697578	  0.99158241	  0.99571189  0.48514241
+1084	 -6.02050306	 -0.00269460	  0.00159054	  7.01780845	  0.99158915	  0.99571486  0.48516678
+1085	 -6.02133120	 -0.00269262	  0.00158956	  7.01863858	  0.99159588	  0.99571782  0.48519108
+1086	 -6.02215680	 -0.00269065	  0.00158858	  7.01946615	  0.99160260	  0.99572077  0.48521531
+1087	 -6.02297987	 -0.00268867	  0.00158760	  7.02029119	  0.99160931	  0.99572373  0.48523947
+1088	 -6.02380040	 -0.00268670	  0.00158662	  7.02111370	  0.99161601	  0.99572668  0.48526355
+1089	 -6.02461841	 -0.00268473	  0.00158564	  7.02193368	  0.99162270	  0.99572963  0.48528757
+1090	 -6.02543391	 -0.00268276	  0.00158466	  7.02275115	  0.99162938	  0.99573258  0.48531151
+1091	 -6.02624690	 -0.00268080	  0.00158368	  7.02356610	  0.99163606	  0.99573552  0.48533539
+1092	 -6.02705738	 -0.00267883	  0.00158270	  7.02437855	  0.99164272	  0.99573847  0.48535919
+1093	 -6.02786537	 -0.00267687	  0.00158172	  7.02518850	  0.99164938	  0.99574141  0.48538292
+1094	 -6.02867087	 -0.00267491	  0.00158074	  7.02599596	  0.99165602	  0.99574434  0.48540659
+1095	 -6.02947389	 -0.00267296	  0.00157977	  7.02680093	  0.99166266	  0.99574728  0.48543018
+1096	 -6.03027443	 -0.00267100	  0.00157879	  7.02760343	  0.99166929	  0.99575021  0.48545370
+1097	 -6.03107251	 -0.00266905	  0.00157781	  7.02840346	  0.99167591	  0.99575314  0.48547716
+1098	 -6.03186812	 -0.00266710	  0.00157684	  7.02920102	  0.99168252	  0.99575606  0.48550054
+1099	 -6.03266127	 -0.00266515	  0.00157586	  7.02999612	  0.99168912	  0.99575899  0.48552386
+1100	 -6.03345198	 -0.00266320	  0.00157489	  7.03078878	  0.99169571	  0.99576191  0.48554710
+1101	 -6.03424025	 -0.00266126	  0.00157391	  7.03157899	  0.99170230	  0.99576483  0.48557028
+1102	 -6.03502608	 -0.00265932	  0.00157294	  7.03236676	  0.99170887	  0.99576774  0.48559339
+1103	 -6.03580948	 -0.00265738	  0.00157197	  7.03315210	  0.99171544	  0.99577065  0.48561643
+1104	 -6.03659046	 -0.00265544	  0.00157100	  7.03393502	  0.99172199	  0.99577356  0.48563940
+1105	 -6.03736903	 -0.00265350	  0.00157002	  7.03471552	  0.99172854	  0.99577647  0.48566231
+1106	 -6.03814518	 -0.00265157	  0.00156905	  7.03549361	  0.99173508	  0.99577938  0.48568514
+1107	 -6.03891894	 -0.00264964	  0.00156808	  7.03626930	  0.99174161	  0.99578228  0.48570791
+1108	 -6.03969029	 -0.00264771	  0.00156711	  7.03704258	  0.99174813	  0.99578518  0.48573061
+1109	 -6.04045926	 -0.00264578	  0.00156614	  7.03781348	  0.99175464	  0.99578807  0.48575324
+1110	 -6.04122585	 -0.00264386	  0.00156517	  7.03858199	  0.99176115	  0.99579097  0.48577581
+1111	 -6.04199006	 -0.00264193	  0.00156421	  7.03934813	  0.99176764	  0.99579386  0.48579831
+1112	 -6.04275190	 -0.00264001	  0.00156324	  7.04011189	  0.99177413	  0.99579675  0.48582075
+1113	 -6.04351138	 -0.00263809	  0.00156227	  7.04087328	  0.99178061	  0.99579964  0.48584311
+1114	 -6.04426850	 -0.00263618	  0.00156130	  7.04163232	  0.99178707	  0.99580252  0.48586541
+1115	 -6.04502327	 -0.00263426	  0.00156034	  7.04238901	  0.99179353	  0.99580540  0.48588765
+1116	 -6.04577570	 -0.00263235	  0.00155937	  7.04314335	  0.99179998	  0.99580828  0.48590981
+1117	 -6.04652579	 -0.00263044	  0.00155841	  7.04389535	  0.99180643	  0.99581115  0.48593191
+1118	 -6.04727354	 -0.00262853	  0.00155744	  7.04464502	  0.99181286	  0.99581403  0.48595395
+1119	 -6.04801898	 -0.00262662	  0.00155648	  7.04539236	  0.99181929	  0.99581690  0.48597592
+1120	 -6.04876210	 -0.00262472	  0.00155552	  7.04613738	  0.99182570	  0.99581977  0.48599782
+1121	 -6.04950290	 -0.00262282	  0.00155455	  7.04688009	  0.99183211	  0.99582263  0.48601966
+1122	 -6.05024140	 -0.00262092	  0.00155359	  7.04762049	  0.99183851	  0.99582549  0.48604144
+1123	 -6.05097760	 -0.00261902	  0.00155263	  7.04835858	  0.99184490	  0.99582835  0.48606315
+1124	 -6.05171151	 -0.00261712	  0.00155167	  7.04909439	  0.99185128	  0.99583121  0.48608479
+1125	 -6.05244313	 -0.00261523	  0.00155071	  7.04982791	  0.99185765	  0.99583407  0.48610637
+1126	 -6.05317248	 -0.00261334	  0.00154975	  7.05055914	  0.99186402	  0.99583692  0.48612789
+1127	 -6.05389955	 -0.00261145	  0.00154879	  7.05128810	  0.99187037	  0.99583977  0.48614934
+1128	 -6.05462435	 -0.00260956	  0.00154783	  7.05201479	  0.99187672	  0.99584261  0.48617073
+1129	 -6.05534689	 -0.00260767	  0.00154687	  7.05273922	  0.99188306	  0.99584546  0.48619205
+1130	 -6.05606718	 -0.00260579	  0.00154591	  7.05346139	  0.99188939	  0.99584830  0.48621331
+1131	 -6.05678521	 -0.00260391	  0.00154495	  7.05418131	  0.99189571	  0.99585114  0.48623450
+1132	 -6.05750101	 -0.00260203	  0.00154400	  7.05489898	  0.99190203	  0.99585398  0.48625564
+1133	 -6.05821457	 -0.00260015	  0.00154304	  7.05561442	  0.99190833	  0.99585681  0.48627671
+1134	 -6.05892590	 -0.00259827	  0.00154209	  7.05632763	  0.99191463	  0.99585964  0.48629772
+1135	 -6.05963501	 -0.00259640	  0.00154113	  7.05703861	  0.99192092	  0.99586247  0.48631866
+1136	 -6.06034190	 -0.00259453	  0.00154018	  7.05774737	  0.99192720	  0.99586529  0.48633954
+1137	 -6.06104657	 -0.00259266	  0.00153922	  7.05845392	  0.99193347	  0.99586812  0.48636036
+1138	 -6.06174905	 -0.00259079	  0.00153827	  7.05915826	  0.99193973	  0.99587094  0.48638112
+1139	 -6.06244932	 -0.00258893	  0.00153732	  7.05986040	  0.99194598	  0.99587376  0.48640181
+1140	 -6.06314740	 -0.00258706	  0.00153637	  7.06056034	  0.99195223	  0.99587657  0.48642244
+1141	 -6.06384330	 -0.00258520	  0.00153541	  7.06125810	  0.99195847	  0.99587938  0.48644301
+1142	 -6.06453701	 -0.00258334	  0.00153446	  7.06195367	  0.99196470	  0.99588220  0.48646352
+1143	 -6.06522855	 -0.00258148	  0.00153351	  7.06264707	  0.99197092	  0.99588500  0.48648397
+1144	 -6.06591793	 -0.00257963	  0.00153256	  7.06333830	  0.99197713	  0.99588781  0.48650436
+1145	 -6.06660514	 -0.00257778	  0.00153161	  7.06402736	  0.99198334	  0.99589061  0.48652468
+1146	 -6.06729019	 -0.00257592	  0.00153067	  7.06471427	  0.99198953	  0.99589341  0.48654494
+1147	 -6.06797309	 -0.00257408	  0.00152972	  7.06539902	  0.99199572	  0.99589621  0.48656515
+1148	 -6.06865385	 -0.00257223	  0.00152877	  7.06608163	  0.99200190	  0.99589900  0.48658529
+1149	 -6.06933248	 -0.00257038	  0.00152782	  7.06676209	  0.99200807	  0.99590179  0.48660537
+1150	 -6.07000896	 -0.00256854	  0.00152688	  7.06744043	  0.99201424	  0.99590458  0.48662539
+1151	 -6.07068333	 -0.00256670	  0.00152593	  7.06811663	  0.99202039	  0.99590737  0.48664535
+1152	 -6.07135557	 -0.00256486	  0.00152499	  7.06879071	  0.99202654	  0.99591015  0.48666525
+1153	 -6.07202570	 -0.00256302	  0.00152404	  7.06946268	  0.99203268	  0.99591294  0.48668509
+1154	 -6.07269372	 -0.00256119	  0.00152310	  7.07013254	  0.99203881	  0.99591572  0.48670487
+1155	 -6.07335964	 -0.00255935	  0.00152215	  7.07080029	  0.99204493	  0.99591849  0.48672460
+1156	 -6.07402346	 -0.00255752	  0.00152121	  7.07146594	  0.99205104	  0.99592127  0.48674426
+1157	 -6.07468520	 -0.00255569	  0.00152027	  7.07212950	  0.99205715	  0.99592404  0.48676386
+1158	 -6.07534484	 -0.00255387	  0.00151933	  7.07279098	  0.99206325	  0.99592681  0.48678341
+1159	 -6.07600241	 -0.00255204	  0.00151839	  7.07345037	  0.99206934	  0.99592957  0.48680289
+1160	 -6.07665791	 -0.00255022	  0.00151745	  7.07410769	  0.99207542	  0.99593234  0.48682232
+1161	 -6.07731134	 -0.00254840	  0.00151651	  7.07476294	  0.99208149	  0.99593510  0.48684169
+1162	 -6.07796271	 -0.00254658	  0.00151557	  7.07541613	  0.99208756	  0.99593786  0.48686100
+1163	 -6.07861202	 -0.00254476	  0.00151463	  7.07606726	  0.99209362	  0.99594061  0.48688025
+1164	 -6.07925928	 -0.00254294	  0.00151369	  7.07671634	  0.99209967	  0.99594336  0.48689944
+1165	 -6.07990450	 -0.00254113	  0.00151275	  7.07736337	  0.99210571	  0.99594612  0.48691858
+1166	 -6.08054769	 -0.00253932	  0.00151182	  7.07800837	  0.99211174	  0.99594886  0.48693766
+1167	 -6.08118884	 -0.00253751	  0.00151088	  7.07865133	  0.99211777	  0.99595161  0.48695668
+1168	 -6.08182796	 -0.00253570	  0.00150994	  7.07929226	  0.99212379	  0.99595435  0.48697564
+1169	 -6.08246507	 -0.00253390	  0.00150901	  7.07993117	  0.99212980	  0.99595709  0.48699454
+1170	 -6.08310016	 -0.00253210	  0.00150807	  7.08056806	  0.99213580	  0.99595983  0.48701339
+1171	 -6.08373324	 -0.00253029	  0.00150714	  7.08120294	  0.99214179	  0.99596257  0.48703218
+1172	 -6.08436431	 -0.00252849	  0.00150621	  7.08183582	  0.99214778	  0.99596530  0.48705092
+1173	 -6.08499339	 -0.00252670	  0.00150527	  7.08246669	  0.99215376	  0.99596803  0.48706960
+1174	 -6.08562048	 -0.00252490	  0.00150434	  7.08309558	  0.99215973	  0.99597076  0.48708821
+1175	 -6.08624558	 -0.00252311	  0.00150341	  7.08372247	  0.99216569	  0.99597348  0.48710678
+1176	 -6.08686870	 -0.00252132	  0.00150248	  7.08434738	  0.99217164	  0.99597620  0.48712529
+1177	 -6.08748985	 -0.00251953	  0.00150155	  7.08497032	  0.99217759	  0.99597892  0.48714374
+1178	 -6.08810902	 -0.00251774	  0.00150062	  7.08559128	  0.99218353	  0.99598164  0.48716214
+1179	 -6.08872624	 -0.00251595	  0.00149969	  7.08621028	  0.99218946	  0.99598436  0.48718048
+1180	 -6.08934149	 -0.00251417	  0.00149876	  7.08682732	  0.99219538	  0.99598707  0.48719876
+1181	 -6.08995479	 -0.00251239	  0.00149784	  7.08744241	  0.99220130	  0.99598978  0.48721699
+1182	 -6.09056615	 -0.00251061	  0.00149691	  7.08805554	  0.99220721	  0.99599248  0.48723517
+1183	 -6.09117556	 -0.00250883	  0.00149598	  7.08866673	  0.99221310	  0.99599519  0.48725329
+1184	 -6.09178304	 -0.00250705	  0.00149506	  7.08927599	  0.99221900	  0.99599789  0.48727135
+1185	 -6.09238859	 -0.00250528	  0.00149413	  7.08988331	  0.99222488	  0.99600059  0.48728936
+1186	 -6.09299221	 -0.00250351	  0.00149320	  7.09048871	  0.99223076	  0.99600329  0.48730732
+1187	 -6.09359392	 -0.00250174	  0.00149228	  7.09109218	  0.99223663	  0.99600598  0.48732522
+1188	 -6.09419371	 -0.00249997	  0.00149136	  7.09169374	  0.99224249	  0.99600867  0.48734306
+1189	 -6.09479159	 -0.00249820	  0.00149043	  7.09229339	  0.99224834	  0.99601136  0.48736085
+1190	 -6.09538757	 -0.00249644	  0.00148951	  7.09289113	  0.99225419	  0.99601405  0.48737859
+1191	 -6.09598165	 -0.00249468	  0.00148859	  7.09348698	  0.99226003	  0.99601673  0.48739628
+1192	 -6.09657385	 -0.00249292	  0.00148767	  7.09408093	  0.99226586	  0.99601942  0.48741390
+1193	 -6.09716415	 -0.00249116	  0.00148675	  7.09467299	  0.99227168	  0.99602210  0.48743148
+1194	 -6.09775257	 -0.00248940	  0.00148583	  7.09526317	  0.99227749	  0.99602477  0.48744900
+1195	 -6.09833912	 -0.00248765	  0.00148491	  7.09585148	  0.99228330	  0.99602745  0.48746647
+1196	 -6.09892380	 -0.00248589	  0.00148399	  7.09643791	  0.99228910	  0.99603012  0.48748389
+1197	 -6.09950662	 -0.00248414	  0.00148307	  7.09702248	  0.99229489	  0.99603279  0.48750125
+1198	 -6.10008757	 -0.00248239	  0.00148215	  7.09760518	  0.99230068	  0.99603545  0.48751856
+1199	 -6.10066667	 -0.00248065	  0.00148124	  7.09818603	  0.99230646	  0.99603812  0.48753582
+1200	 -6.10124393	 -0.00247890	  0.00148032	  7.09876503	  0.99231223	  0.99604078  0.48755302
+1201	 -6.10181934	 -0.00247716	  0.00147941	  7.09934218	  0.99231799	  0.99604344  0.48757018
+1202	 -6.10239291	 -0.00247542	  0.00147849	  7.09991749	  0.99232374	  0.99604609  0.48758728
+1203	 -6.10296465	 -0.00247368	  0.00147758	  7.10049097	  0.99232949	  0.99604875  0.48760432
+1204	 -6.10353456	 -0.00247194	  0.00147666	  7.10106262	  0.99233523	  0.99605140  0.48762132
+1205	 -6.10410265	 -0.00247020	  0.00147575	  7.10163245	  0.99234096	  0.99605405  0.48763826
+1206	 -6.10466892	 -0.00246847	  0.00147484	  7.10220045	  0.99234669	  0.99605669  0.48765516
+1207	 -6.10523338	 -0.00246674	  0.00147393	  7.10276665	  0.99235240	  0.99605934  0.48767200
+1208	 -6.10579604	 -0.00246501	  0.00147301	  7.10333103	  0.99235811	  0.99606198  0.48768879
+1209	 -6.10635689	 -0.00246328	  0.00147210	  7.10389362	  0.99236382	  0.99606462  0.48770552
+1210	 -6.10691595	 -0.00246155	  0.00147119	  7.10445440	  0.99236951	  0.99606725  0.48772221
+1211	 -6.10747322	 -0.00245983	  0.00147028	  7.10501339	  0.99237520	  0.99606989  0.48773885
+1212	 -6.10802871	 -0.00245811	  0.00146937	  7.10557060	  0.99238088	  0.99607252  0.48775543
+1213	 -6.10858241	 -0.00245639	  0.00146847	  7.10612603	  0.99238655	  0.99607515  0.48777197
+1214	 -6.10913434	 -0.00245467	  0.00146756	  7.10667967	  0.99239222	  0.99607777  0.48778845
+1215	 -6.10968450	 -0.00245295	  0.00146665	  7.10723155	  0.99239787	  0.99608040  0.48780488
+1216	 -6.11023289	 -0.00245123	  0.00146575	  7.10778166	  0.99240353	  0.99608302  0.48782127
+1217	 -6.11077953	 -0.00244952	  0.00146484	  7.10833001	  0.99240917	  0.99608564  0.48783760
+1218	 -6.11132441	 -0.00244781	  0.00146393	  7.10887660	  0.99241480	  0.99608825  0.48785388
+1219	 -6.11186754	 -0.00244610	  0.00146303	  7.10942144	  0.99242043	  0.99609087  0.48787012
+1220	 -6.11240893	 -0.00244439	  0.00146213	  7.10996454	  0.99242605	  0.99609348  0.48788630
+1221	 -6.11294858	 -0.00244269	  0.00146122	  7.11050589	  0.99243167	  0.99609609  0.48790243
+1222	 -6.11348649	 -0.00244098	  0.00146032	  7.11104551	  0.99243728	  0.99609869  0.48791852
+1223	 -6.11402268	 -0.00243928	  0.00145942	  7.11158340	  0.99244288	  0.99610130  0.48793455
+1224	 -6.11455714	 -0.00243758	  0.00145852	  7.11211956	  0.99244847	  0.99610390  0.48795053
+1225	 -6.11508989	 -0.00243588	  0.00145762	  7.11265400	  0.99245405	  0.99610650  0.48796647
+1226	 -6.11562092	 -0.00243419	  0.00145672	  7.11318673	  0.99245963	  0.99610909  0.48798236
+1227	 -6.11615024	 -0.00243249	  0.00145582	  7.11371775	  0.99246520	  0.99611169  0.48799820
+1228	 -6.11667786	 -0.00243080	  0.00145492	  7.11424706	  0.99247077	  0.99611428  0.48801399
+1229	 -6.11720378	 -0.00242911	  0.00145402	  7.11477467	  0.99247632	  0.99611687  0.48802973
+1230	 -6.11772800	 -0.00242742	  0.00145312	  7.11530058	  0.99248187	  0.99611945  0.48804543
+1231	 -6.11825054	 -0.00242574	  0.00145223	  7.11582481	  0.99248741	  0.99612204  0.48806107
+1232	 -6.11877140	 -0.00242405	  0.00145133	  7.11634735	  0.99249295	  0.99612462  0.48807667
+1233	 -6.11929057	 -0.00242237	  0.00145043	  7.11686820	  0.99249847	  0.99612720  0.48809222
+1234	 -6.11980807	 -0.00242069	  0.00144954	  7.11738739	  0.99250400	  0.99612978  0.48810772
+1235	 -6.12032390	 -0.00241901	  0.00144864	  7.11790490	  0.99250951	  0.99613235  0.48812317
+1236	 -6.12083807	 -0.00241733	  0.00144775	  7.11842074	  0.99251501	  0.99613492  0.48813858
+1237	 -6.12135058	 -0.00241565	  0.00144686	  7.11893493	  0.99252051	  0.99613749  0.48815394
+1238	 -6.12186144	 -0.00241398	  0.00144597	  7.11944746	  0.99252601	  0.99614006  0.48816925
+1239	 -6.12237064	 -0.00241231	  0.00144507	  7.11995834	  0.99253149	  0.99614262  0.48818451
+1240	 -6.12287820	 -0.00241064	  0.00144418	  7.12046757	  0.99253697	  0.99614518  0.48819973
+1241	 -6.12338412	 -0.00240897	  0.00144329	  7.12097516	  0.99254244	  0.99614774  0.48821490
+1242	 -6.12388841	 -0.00240730	  0.00144240	  7.12148111	  0.99254790	  0.99615030  0.48823002
+1243	 -6.12439107	 -0.00240563	  0.00144151	  7.12198543	  0.99255336	  0.99615285  0.48824510
+1244	 -6.12489210	 -0.00240397	  0.00144062	  7.12248813	  0.99255881	  0.99615540  0.48826013
+1245	 -6.12539151	 -0.00240231	  0.00143974	  7.12298920	  0.99256425	  0.99615795  0.48827512
+1246	 -6.12588931	 -0.00240065	  0.00143885	  7.12348866	  0.99256969	  0.99616050  0.48829005
+1247	 -6.12638549	 -0.00239899	  0.00143796	  7.12398650	  0.99257512	  0.99616304  0.48830495
+1248	 -6.12688007	 -0.00239734	  0.00143708	  7.12448273	  0.99258054	  0.99616559  0.48831979
+1249	 -6.12737305	 -0.00239568	  0.00143619	  7.12497736	  0.99258596	  0.99616813  0.48833460
+1250	 -6.12786443	 -0.00239403	  0.00143531	  7.12547040	  0.99259136	  0.99617066  0.48834935
+1251	 -6.12835422	 -0.00239238	  0.00143442	  7.12596184	  0.99259676	  0.99617320  0.48836406
+1252	 -6.12884242	 -0.00239073	  0.00143354	  7.12645169	  0.99260216	  0.99617573  0.48837872
+1253	 -6.12932904	 -0.00238908	  0.00143266	  7.12693996	  0.99260755	  0.99617826  0.48839334
+1254	 -6.12981408	 -0.00238744	  0.00143177	  7.12742664	  0.99261293	  0.99618079  0.48840792
+1255	 -6.13029755	 -0.00238580	  0.00143089	  7.12791176	  0.99261830	  0.99618331  0.48842244
+1256	 -6.13077945	 -0.00238416	  0.00143001	  7.12839530	  0.99262367	  0.99618583  0.48843693
+1257	 -6.13125979	 -0.00238252	  0.00142913	  7.12887728	  0.99262903	  0.99618835  0.48845136
+1258	 -6.13173857	 -0.00238088	  0.00142825	  7.12935769	  0.99263438	  0.99619087  0.48846576
+1259	 -6.13221579	 -0.00237924	  0.00142737	  7.12983655	  0.99263972	  0.99619339  0.48848011
+1260	 -6.13269147	 -0.00237761	  0.00142649	  7.13031386	  0.99264506	  0.99619590  0.48849441
+1261	 -6.13316560	 -0.00237598	  0.00142562	  7.13078962	  0.99265040	  0.99619841  0.48850867
+1262	 -6.13363819	 -0.00237434	  0.00142474	  7.13126384	  0.99265572	  0.99620092  0.48852289
+1263	 -6.13410924	 -0.00237272	  0.00142386	  7.13173652	  0.99266104	  0.99620342  0.48853706
+1264	 -6.13457876	 -0.00237109	  0.00142299	  7.13220767	  0.99266635	  0.99620593  0.48855119
+1265	 -6.13504676	 -0.00236946	  0.00142211	  7.13267729	  0.99267166	  0.99620843  0.48856528
+1266	 -6.13551323	 -0.00236784	  0.00142124	  7.13314539	  0.99267696	  0.99621092  0.48857932
+1267	 -6.13597818	 -0.00236622	  0.00142036	  7.13361197	  0.99268225	  0.99621342  0.48859332
+1268	 -6.13644163	 -0.00236460	  0.00141949	  7.13407703	  0.99268753	  0.99621591  0.48860727
+1269	 -6.13690356	 -0.00236298	  0.00141862	  7.13454058	  0.99269281	  0.99621840  0.48862118
+1270	 -6.13736399	 -0.00236136	  0.00141774	  7.13500263	  0.99269808	  0.99622089  0.48863505
+1271	 -6.13782292	 -0.00235975	  0.00141687	  7.13546317	  0.99270335	  0.99622338  0.48864888
+1272	 -6.13828035	 -0.00235814	  0.00141600	  7.13592222	  0.99270861	  0.99622586  0.48866266
+1273	 -6.13873630	 -0.00235652	  0.00141513	  7.13637977	  0.99271386	  0.99622834  0.48867640
+1274	 -6.13919076	 -0.00235492	  0.00141426	  7.13683584	  0.99271910	  0.99623082  0.48869010
+1275	 -6.13964373	 -0.00235331	  0.00141339	  7.13729042	  0.99272434	  0.99623330  0.48870375
+1276	 -6.14009523	 -0.00235170	  0.00141253	  7.13774353	  0.99272957	  0.99623577  0.48871736
+1277	 -6.14054526	 -0.00235010	  0.00141166	  7.13819516	  0.99273480	  0.99623824  0.48873093
+1278	 -6.14099381	 -0.00234850	  0.00141079	  7.13864532	  0.99274001	  0.99624071  0.48874446
+1279	 -6.14144091	 -0.00234689	  0.00140993	  7.13909401	  0.99274523	  0.99624318  0.48875794
+1280	 -6.14188654	 -0.00234530	  0.00140906	  7.13954125	  0.99275043	  0.99624564  0.48877139
+1281	 -6.14233072	 -0.00234370	  0.00140820	  7.13998702	  0.99275563	  0.99624811  0.48878479
+1282	 -6.14277345	 -0.00234210	  0.00140733	  7.14043134	  0.99276082	  0.99625057  0.48879815
+1283	 -6.14321473	 -0.00234051	  0.00140647	  7.14087422	  0.99276601	  0.99625302  0.48881147
+1284	 -6.14365457	 -0.00233892	  0.00140561	  7.14131565	  0.99277118	  0.99625548  0.48882475
+1285	 -6.14409297	 -0.00233733	  0.00140474	  7.14175564	  0.99277636	  0.99625793  0.48883798
+1286	 -6.14452994	 -0.00233574	  0.00140388	  7.14219420	  0.99278152	  0.99626038  0.48885118
+1287	 -6.14496548	 -0.00233415	  0.00140302	  7.14263132	  0.99278668	  0.99626283  0.48886433
+1288	 -6.14539959	 -0.00233257	  0.00140216	  7.14306702	  0.99279183	  0.99626527  0.48887745
+1289	 -6.14583228	 -0.00233098	  0.00140130	  7.14350130	  0.99279698	  0.99626772  0.48889052
+1290	 -6.14626356	 -0.00232940	  0.00140044	  7.14393416	  0.99280212	  0.99627016  0.48890355
+1291	 -6.14669342	 -0.00232782	  0.00139958	  7.14436560	  0.99280725	  0.99627259  0.48891654
+1292	 -6.14712188	 -0.00232625	  0.00139873	  7.14479564	  0.99281238	  0.99627503  0.48892949
+1293	 -6.14754894	 -0.00232467	  0.00139787	  7.14522427	  0.99281750	  0.99627746  0.48894240
+1294	 -6.14797459	 -0.00232309	  0.00139701	  7.14565150	  0.99282261	  0.99627989  0.48895527
+1295	 -6.14839885	 -0.00232152	  0.00139616	  7.14607733	  0.99282772	  0.99628232  0.48896810
+1296	 -6.14882172	 -0.00231995	  0.00139530	  7.14650177	  0.99283282	  0.99628475  0.48898089
+1297	 -6.14924320	 -0.00231838	  0.00139445	  7.14692482	  0.99283791	  0.99628717  0.48899364
+1298	 -6.14966330	 -0.00231681	  0.00139359	  7.14734649	  0.99284300	  0.99628959  0.48900634
+1299	 -6.15008202	 -0.00231525	  0.00139274	  7.14776677	  0.99284808	  0.99629201  0.48901902
+1300	 -6.15049937	 -0.00231368	  0.00139189	  7.14818569	  0.99285316	  0.99629443  0.48903165
+1301	 -6.15091535	 -0.00231212	  0.00139104	  7.14860323	  0.99285823	  0.99629684  0.48904424
+1302	 -6.15132996	 -0.00231056	  0.00139018	  7.14901940	  0.99286329	  0.99629926  0.48905679
+1303	 -6.15174321	 -0.00230900	  0.00138933	  7.14943421	  0.99286834	  0.99630166  0.48906930
+1304	 -6.15215510	 -0.00230744	  0.00138848	  7.14984766	  0.99287339	  0.99630407  0.48908178
+1305	 -6.15256564	 -0.00230589	  0.00138763	  7.15025975	  0.99287844	  0.99630648  0.48909421
+1306	 -6.15297483	 -0.00230433	  0.00138679	  7.15067050	  0.99288347	  0.99630888  0.48910661
+1307	 -6.15338268	 -0.00230278	  0.00138594	  7.15107989	  0.99288850	  0.99631128  0.48911897
+1308	 -6.15378918	 -0.00230123	  0.00138509	  7.15148795	  0.99289353	  0.99631368  0.48913128
+1309	 -6.15419435	 -0.00229968	  0.00138424	  7.15189467	  0.99289855	  0.99631607  0.48914356
+1310	 -6.15459818	 -0.00229814	  0.00138340	  7.15230005	  0.99290356	  0.99631847  0.48915581
+1311	 -6.15500069	 -0.00229659	  0.00138255	  7.15270410	  0.99290856	  0.99632086  0.48916801
+1312	 -6.15540187	 -0.00229505	  0.00138171	  7.15310682	  0.99291356	  0.99632324  0.48918017
+1313	 -6.15580173	 -0.00229350	  0.00138087	  7.15350822	  0.99291855	  0.99632563  0.48919230
+1314	 -6.15620027	 -0.00229196	  0.00138002	  7.15390831	  0.99292354	  0.99632801  0.48920439
+1315	 -6.15659750	 -0.00229042	  0.00137918	  7.15430708	  0.99292852	  0.99633040  0.48921644
+1316	 -6.15699342	 -0.00228889	  0.00137834	  7.15470454	  0.99293349	  0.99633278  0.48922846
+1317	 -6.15738804	 -0.00228735	  0.00137750	  7.15510069	  0.99293846	  0.99633515  0.48924043
+1318	 -6.15778136	 -0.00228582	  0.00137666	  7.15549554	  0.99294342	  0.99633753  0.48925237
+1319	 -6.15817338	 -0.00228429	  0.00137582	  7.15588909	  0.99294838	  0.99633990  0.48926427
+1320	 -6.15856410	 -0.00228276	  0.00137498	  7.15628135	  0.99295333	  0.99634227  0.48927613
+1321	 -6.15895354	 -0.00228123	  0.00137414	  7.15667231	  0.99295827	  0.99634464  0.48928796
+1322	 -6.15934170	 -0.00227970	  0.00137330	  7.15706199	  0.99296321	  0.99634700  0.48929975
+1323	 -6.15972857	 -0.00227818	  0.00137246	  7.15745039	  0.99296814	  0.99634936  0.48931151
+1324	 -6.16011416	 -0.00227665	  0.00137162	  7.15783751	  0.99297306	  0.99635172  0.48932322
+1325	 -6.16049848	 -0.00227513	  0.00137079	  7.15822335	  0.99297798	  0.99635408  0.48933490
+1326	 -6.16088154	 -0.00227361	  0.00136995	  7.15860793	  0.99298289	  0.99635644  0.48934654
+1327	 -6.16126332	 -0.00227209	  0.00136912	  7.15899123	  0.99298780	  0.99635879  0.48935815
+1328	 -6.16164385	 -0.00227057	  0.00136828	  7.15937328	  0.99299270	  0.99636114  0.48936972
+1329	 -6.16202312	 -0.00226906	  0.00136745	  7.15975406	  0.99299759	  0.99636349  0.48938125
+1330	 -6.16240113	 -0.00226754	  0.00136662	  7.16013359	  0.99300248	  0.99636584  0.48939275
+1331	 -6.16277790	 -0.00226603	  0.00136579	  7.16051186	  0.99300736	  0.99636818  0.48940421
+1332	 -6.16315341	 -0.00226452	  0.00136495	  7.16088889	  0.99301224	  0.99637052  0.48941563
+1333	 -6.16352769	 -0.00226301	  0.00136412	  7.16126468	  0.99301711	  0.99637286  0.48942702
+1334	 -6.16390073	 -0.00226151	  0.00136329	  7.16163922	  0.99302197	  0.99637520  0.48943837
+1335	 -6.16427253	 -0.00226000	  0.00136246	  7.16201253	  0.99302683	  0.99637753  0.48944969
+1336	 -6.16464310	 -0.00225850	  0.00136164	  7.16238461	  0.99303168	  0.99637987  0.48946098
+1337	 -6.16501245	 -0.00225700	  0.00136081	  7.16275545	  0.99303653	  0.99638220  0.48947222
+1338	 -6.16538057	 -0.00225549	  0.00135998	  7.16312507	  0.99304136	  0.99638453  0.48948343
+1339	 -6.16574747	 -0.00225400	  0.00135915	  7.16349348	  0.99304620	  0.99638685  0.48949461
+1340	 -6.16611316	 -0.00225250	  0.00135833	  7.16386066	  0.99305103	  0.99638918  0.48950575
+1341	 -6.16647763	 -0.00225100	  0.00135750	  7.16422663	  0.99305585	  0.99639150  0.48951685
+1342	 -6.16684090	 -0.00224951	  0.00135668	  7.16459139	  0.99306066	  0.99639382  0.48952792
+1343	 -6.16720296	 -0.00224802	  0.00135585	  7.16495494	  0.99306547	  0.99639613  0.48953896
+1344	 -6.16756382	 -0.00224653	  0.00135503	  7.16531729	  0.99307027	  0.99639845  0.48954996
+1345	 -6.16792348	 -0.00224504	  0.00135421	  7.16567845	  0.99307507	  0.99640076  0.48956093
+1346	 -6.16828195	 -0.00224355	  0.00135338	  7.16603840	  0.99307986	  0.99640307  0.48957186
+1347	 -6.16863923	 -0.00224206	  0.00135256	  7.16639717	  0.99308465	  0.99640538  0.48958276
+1348	 -6.16899533	 -0.00224058	  0.00135174	  7.16675475	  0.99308943	  0.99640768  0.48959363
+1349	 -6.16935024	 -0.00223910	  0.00135092	  7.16711114	  0.99309420	  0.99640998  0.48960445
+1350	 -6.16970397	 -0.00223762	  0.00135010	  7.16746636	  0.99309897	  0.99641228  0.48961525
+1351	 -6.17005653	 -0.00223614	  0.00134928	  7.16782039	  0.99310373	  0.99641458  0.48962601
+1352	 -6.17040791	 -0.00223466	  0.00134846	  7.16817326	  0.99310849	  0.99641688  0.48963673
+1353	 -6.17075813	 -0.00223318	  0.00134765	  7.16852495	  0.99311324	  0.99641917  0.48964743
+1354	 -6.17110719	 -0.00223171	  0.00134683	  7.16887548	  0.99311798	  0.99642146  0.48965809
+1355	 -6.17145508	 -0.00223024	  0.00134601	  7.16922484	  0.99312272	  0.99642375  0.48966871
+1356	 -6.17180182	 -0.00222876	  0.00134520	  7.16957305	  0.99312745	  0.99642604  0.48967931
+1357	 -6.17214740	 -0.00222729	  0.00134438	  7.16992010	  0.99313218	  0.99642832  0.48968987
+1358	 -6.17249183	 -0.00222583	  0.00134357	  7.17026601	  0.99313690	  0.99643061  0.48970039
+1359	 -6.17283512	 -0.00222436	  0.00134275	  7.17061076	  0.99314162	  0.99643289  0.48971088
+1360	 -6.17317726	 -0.00222289	  0.00134194	  7.17095437	  0.99314633	  0.99643517  0.48972134
+1361	 -6.17351827	 -0.00222143	  0.00134113	  7.17129683	  0.99315103	  0.99643744  0.48973177
+1362	 -6.17385813	 -0.00221997	  0.00134032	  7.17163816	  0.99315573	  0.99643971  0.48974217
+1363	 -6.17419687	 -0.00221851	  0.00133950	  7.17197836	  0.99316042	  0.99644199  0.48975252
+1364	 -6.17453448	 -0.00221705	  0.00133869	  7.17231743	  0.99316511	  0.99644425  0.48976285
+1365	 -6.17487096	 -0.00221559	  0.00133788	  7.17265537	  0.99316979	  0.99644652  0.48977314
+1366	 -6.17520632	 -0.00221414	  0.00133708	  7.17299218	  0.99317446	  0.99644879  0.48978341
+1367	 -6.17554056	 -0.00221269	  0.00133627	  7.17332788	  0.99317913	  0.99645105  0.48979364
+1368	 -6.17587369	 -0.00221123	  0.00133546	  7.17366246	  0.99318379	  0.99645331  0.48980384
+1369	 -6.17620571	 -0.00220978	  0.00133465	  7.17399593	  0.99318845	  0.99645557  0.48981400
+1370	 -6.17653662	 -0.00220833	  0.00133385	  7.17432829	  0.99319310	  0.99645782  0.48982414
+1371	 -6.17686642	 -0.00220689	  0.00133304	  7.17465954	  0.99319775	  0.99646007  0.48983424
+1372	 -6.17719513	 -0.00220544	  0.00133223	  7.17498969	  0.99320239	  0.99646233  0.48984431
+1373	 -6.17752273	 -0.00220400	  0.00133143	  7.17531874	  0.99320702	  0.99646457  0.48985434
+1374	 -6.17784925	 -0.00220255	  0.00133063	  7.17564669	  0.99321165	  0.99646682  0.48986435
+1375	 -6.17817467	 -0.00220111	  0.00132982	  7.17597356	  0.99321628	  0.99646906  0.48987432
+1376	 -6.17849900	 -0.00219967	  0.00132902	  7.17629933	  0.99322089	  0.99647131  0.48988427
+1377	 -6.17882225	 -0.00219823	  0.00132822	  7.17662402	  0.99322551	  0.99647355  0.48989418
+1378	 -6.17914442	 -0.00219680	  0.00132742	  7.17694762	  0.99323011	  0.99647578  0.48990406
+1379	 -6.17946552	 -0.00219536	  0.00132662	  7.17727015	  0.99323471	  0.99647802  0.48991391
+1380	 -6.17978554	 -0.00219393	  0.00132582	  7.17759161	  0.99323931	  0.99648025  0.48992373
+1381	 -6.18010448	 -0.00219250	  0.00132502	  7.17791199	  0.99324390	  0.99648248  0.48993351
+1382	 -6.18042237	 -0.00219107	  0.00132422	  7.17823130	  0.99324848	  0.99648471  0.48994327
+1383	 -6.18073919	 -0.00218964	  0.00132342	  7.17854955	  0.99325306	  0.99648694  0.48995299
+1384	 -6.18105494	 -0.00218821	  0.00132262	  7.17886673	  0.99325763	  0.99648916  0.48996269
+1385	 -6.18136964	 -0.00218679	  0.00132183	  7.17918286	  0.99326220	  0.99649139  0.48997235
+1386	 -6.18168329	 -0.00218536	  0.00132103	  7.17949793	  0.99326676	  0.99649361  0.48998198
+1387	 -6.18199589	 -0.00218394	  0.00132024	  7.17981195	  0.99327132	  0.99649582  0.48999158
+1388	 -6.18230744	 -0.00218252	  0.00131944	  7.18012492	  0.99327587	  0.99649804  0.49000115
+1389	 -6.18261795	 -0.00218110	  0.00131865	  7.18043684	  0.99328041	  0.99650025  0.49001070
+1390	 -6.18292741	 -0.00217968	  0.00131785	  7.18074773	  0.99328495	  0.99650246  0.49002020
+1391	 -6.18323584	 -0.00217827	  0.00131706	  7.18105757	  0.99328949	  0.99650467  0.49002969
+1392	 -6.18354323	 -0.00217685	  0.00131627	  7.18136638	  0.99329401	  0.99650688  0.49003913
+1393	 -6.18384960	 -0.00217544	  0.00131548	  7.18167416	  0.99329854	  0.99650908  0.49004855
+1394	 -6.18415493	 -0.00217403	  0.00131469	  7.18198091	  0.99330305	  0.99651129  0.49005794
+1395	 -6.18445924	 -0.00217262	  0.00131390	  7.18228663	  0.99330757	  0.99651349  0.49006730
+1396	 -6.18476253	 -0.00217121	  0.00131311	  7.18259133	  0.99331207	  0.99651568  0.49007664
+1397	 -6.18506481	 -0.00216980	  0.00131232	  7.18289501	  0.99331657	  0.99651788  0.49008594
+1398	 -6.18536606	 -0.00216840	  0.00131153	  7.18319767	  0.99332107	  0.99652007  0.49009521
+1399	 -6.18566631	 -0.00216699	  0.00131074	  7.18349932	  0.99332556	  0.99652226  0.49010445
+1400	 -6.18596555	 -0.00216559	  0.00130996	  7.18379996	  0.99333004	  0.99652445  0.49011367
+1401	 -6.18626378	 -0.00216419	  0.00130917	  7.18409959	  0.99333452	  0.99652664  0.49012285
+1402	 -6.18656101	 -0.00216279	  0.00130839	  7.18439822	  0.99333900	  0.99652882  0.49013200
+1403	 -6.18685724	 -0.00216139	  0.00130760	  7.18469585	  0.99334346	  0.99653101  0.49014113
+1404	 -6.18715248	 -0.00216000	  0.00130682	  7.18499249	  0.99334793	  0.99653319  0.49015022
+1405	 -6.18744673	 -0.00215860	  0.00130603	  7.18528812	  0.99335238	  0.99653537  0.49015929
+1406	 -6.18773998	 -0.00215721	  0.00130525	  7.18558277	  0.99335684	  0.99653754  0.49016833
+1407	 -6.18803225	 -0.00215582	  0.00130447	  7.18587643	  0.99336128	  0.99653972  0.49017734
+1408	 -6.18832353	 -0.00215443	  0.00130369	  7.18616911	  0.99336572	  0.99654189  0.49018632
+1409	 -6.18861384	 -0.00215304	  0.00130291	  7.18646080	  0.99337016	  0.99654406  0.49019527
+1410	 -6.18890316	 -0.00215165	  0.00130213	  7.18675152	  0.99337459	  0.99654622  0.49020420
+1411	 -6.18919152	 -0.00215026	  0.00130135	  7.18704125	  0.99337901	  0.99654839  0.49021309
+1412	 -6.18947890	 -0.00214888	  0.00130057	  7.18733002	  0.99338343	  0.99655055  0.49022196
+1413	 -6.18976532	 -0.00214750	  0.00129979	  7.18761782	  0.99338785	  0.99655271  0.49023080
+1414	 -6.19005077	 -0.00214612	  0.00129901	  7.18790465	  0.99339226	  0.99655487  0.49023961
+1415	 -6.19033526	 -0.00214474	  0.00129823	  7.18819052	  0.99339666	  0.99655703  0.49024839
+1416	 -6.19061879	 -0.00214336	  0.00129746	  7.18847543	  0.99340106	  0.99655918  0.49025714
+1417	 -6.19090136	 -0.00214198	  0.00129668	  7.18875938	  0.99340545	  0.99656134  0.49026588
+1418	 -6.19118298	 -0.00214061	  0.00129591	  7.18904238	  0.99340984	  0.99656349  0.49027457
+1419	 -6.19146366	 -0.00213923	  0.00129513	  7.18932442	  0.99341422	  0.99656563  0.49028324
+1420	 -6.19174338	 -0.00213786	  0.00129436	  7.18960552	  0.99341860	  0.99656778  0.49029189
+1421	 -6.19202217	 -0.00213649	  0.00129359	  7.18988568	  0.99342297	  0.99656992  0.49030051
+1422	 -6.19230001	 -0.00213512	  0.00129281	  7.19016489	  0.99342734	  0.99657207  0.49030909
+1423	 -6.19257691	 -0.00213375	  0.00129204	  7.19044316	  0.99343170	  0.99657421  0.49031766
+1424	 -6.19285288	 -0.00213239	  0.00129127	  7.19072050	  0.99343606	  0.99657634  0.49032619
+1425	 -6.19312792	 -0.00213102	  0.00129050	  7.19099690	  0.99344041	  0.99657848  0.49033470
+1426	 -6.19340203	 -0.00212966	  0.00128973	  7.19127237	  0.99344475	  0.99658061  0.49034317
+1427	 -6.19367521	 -0.00212830	  0.00128896	  7.19154692	  0.99344909	  0.99658274  0.49035163
+1428	 -6.19394748	 -0.00212694	  0.00128819	  7.19182054	  0.99345343	  0.99658487  0.49036006
+1429	 -6.19421882	 -0.00212558	  0.00128743	  7.19209324	  0.99345776	  0.99658700  0.49036845
+1430	 -6.19448924	 -0.00212422	  0.00128666	  7.19236502	  0.99346208	  0.99658912  0.49037683
+1431	 -6.19475875	 -0.00212286	  0.00128589	  7.19263589	  0.99346640	  0.99659124  0.49038517
+1432	 -6.19502735	 -0.00212151	  0.00128513	  7.19290584	  0.99347072	  0.99659336  0.49039349
+1433	 -6.19529504	 -0.00212016	  0.00128436	  7.19317489	  0.99347503	  0.99659548  0.49040178
+1434	 -6.19556183	 -0.00211880	  0.00128360	  7.19344302	  0.99347933	  0.99659760  0.49041005
+1435	 -6.19582771	 -0.00211745	  0.00128283	  7.19371026	  0.99348363	  0.99659971  0.49041829
+1436	 -6.19609270	 -0.00211611	  0.00128207	  7.19397659	  0.99348792	  0.99660182  0.49042650
+1437	 -6.19635678	 -0.00211476	  0.00128131	  7.19424203	  0.99349221	  0.99660393  0.49043469
+1438	 -6.19661998	 -0.00211341	  0.00128054	  7.19450656	  0.99349650	  0.99660604  0.49044285
+1439	 -6.19688228	 -0.00211207	  0.00127978	  7.19477021	  0.99350077	  0.99660815  0.49045099
+1440	 -6.19714369	 -0.00211073	  0.00127902	  7.19503297	  0.99350505	  0.99661025  0.49045909
+1441	 -6.19740422	 -0.00210938	  0.00127826	  7.19529484	  0.99350932	  0.99661235  0.49046717
+1442	 -6.19766387	 -0.00210804	  0.00127750	  7.19555583	  0.99351358	  0.99661445  0.49047523
+1443	 -6.19792264	 -0.00210671	  0.00127674	  7.19581593	  0.99351784	  0.99661655  0.49048326
+1444	 -6.19818053	 -0.00210537	  0.00127599	  7.19607516	  0.99352209	  0.99661864  0.49049127
+1445	 -6.19843754	 -0.00210403	  0.00127523	  7.19633351	  0.99352634	  0.99662074  0.49049925
+1446	 -6.19869369	 -0.00210270	  0.00127447	  7.19659099	  0.99353058	  0.99662283  0.49050720
+1447	 -6.19894896	 -0.00210137	  0.00127372	  7.19684760	  0.99353482	  0.99662492  0.49051513
+1448	 -6.19920337	 -0.00210004	  0.00127296	  7.19710334	  0.99353905	  0.99662700  0.49052303
+1449	 -6.19945692	 -0.00209871	  0.00127221	  7.19735822	  0.99354328	  0.99662909  0.49053091
+1450	 -6.19970961	 -0.00209738	  0.00127145	  7.19761223	  0.99354750	  0.99663117  0.49053876
+1451	 -6.19996144	 -0.00209605	  0.00127070	  7.19786539	  0.99355172	  0.99663325  0.49054659
+1452	 -6.20021242	 -0.00209473	  0.00126995	  7.19811769	  0.99355593	  0.99663533  0.49055439
+1453	 -6.20046254	 -0.00209340	  0.00126919	  7.19836914	  0.99356014	  0.99663741  0.49056217
+1454	 -6.20071181	 -0.00209208	  0.00126844	  7.19861973	  0.99356434	  0.99663948  0.49056992
+1455	 -6.20096024	 -0.00209076	  0.00126769	  7.19886948	  0.99356854	  0.99664155  0.49057765
+1456	 -6.20120782	 -0.00208944	  0.00126694	  7.19911839	  0.99357273	  0.99664362  0.49058536
+1457	 -6.20145457	 -0.00208812	  0.00126619	  7.19936645	  0.99357692	  0.99664569  0.49059304
+1458	 -6.20170047	 -0.00208680	  0.00126544	  7.19961367	  0.99358110	  0.99664776  0.49060069
+1459	 -6.20194554	 -0.00208549	  0.00126469	  7.19986005	  0.99358528	  0.99664982  0.49060832
+1460	 -6.20218978	 -0.00208417	  0.00126395	  7.20010560	  0.99358945	  0.99665188  0.49061593
+1461	 -6.20243318	 -0.00208286	  0.00126320	  7.20035032	  0.99359362	  0.99665394  0.49062351
+1462	 -6.20267576	 -0.00208155	  0.00126245	  7.20059421	  0.99359778	  0.99665600  0.49063106
+1463	 -6.20291751	 -0.00208024	  0.00126171	  7.20083727	  0.99360194	  0.99665805  0.49063859
+1464	 -6.20315844	 -0.00207893	  0.00126096	  7.20107951	  0.99360609	  0.99666011  0.49064611
+1465	 -6.20339855	 -0.00207762	  0.00126022	  7.20132093	  0.99361024	  0.99666216  0.49065358
+1466	 -6.20363785	 -0.00207632	  0.00125947	  7.20156153	  0.99361438	  0.99666421  0.49066104
+1467	 -6.20387633	 -0.00207501	  0.00125873	  7.20180131	  0.99361852	  0.99666626  0.49066848
+1468	 -6.20411399	 -0.00207371	  0.00125799	  7.20204028	  0.99362265	  0.99666830  0.49067589
+1469	 -6.20435085	 -0.00207241	  0.00125725	  7.20227844	  0.99362678	  0.99667034  0.49068328
+1470	 -6.20458690	 -0.00207111	  0.00125650	  7.20251579	  0.99363090	  0.99667238  0.49069064
+1471	 -6.20482215	 -0.00206981	  0.00125576	  7.20275234	  0.99363502	  0.99667442  0.49069799
+1472	 -6.20505660	 -0.00206852	  0.00125502	  7.20298808	  0.99363914	  0.99667646  0.49070530
+1473	 -6.20529024	 -0.00206722	  0.00125428	  7.20322302	  0.99364325	  0.99667850  0.49071260
+1474	 -6.20552310	 -0.00206593	  0.00125355	  7.20345717	  0.99364735	  0.99668053  0.49071987
+1475	 -6.20575515	 -0.00206463	  0.00125281	  7.20369052	  0.99365145	  0.99668256  0.49072711
+1476	 -6.20598642	 -0.00206334	  0.00125207	  7.20392308	  0.99365554	  0.99668459  0.49073434
+1477	 -6.20621690	 -0.00206205	  0.00125133	  7.20415485	  0.99365963	  0.99668662  0.49074154
+1478	 -6.20644659	 -0.00206076	  0.00125060	  7.20438583	  0.99366372	  0.99668864  0.49074872
+1479	 -6.20667550	 -0.00205947	  0.00124986	  7.20461602	  0.99366780	  0.99669066  0.49075587
+1480	 -6.20690362	 -0.00205819	  0.00124913	  7.20484543	  0.99367187	  0.99669268  0.49076300
+1481	 -6.20713097	 -0.00205690	  0.00124839	  7.20507407	  0.99367594	  0.99669470  0.49077011
+1482	 -6.20735754	 -0.00205562	  0.00124766	  7.20530192	  0.99368001	  0.99669672  0.49077720
+1483	 -6.20758334	 -0.00205434	  0.00124693	  7.20552900	  0.99368407	  0.99669873  0.49078426
+1484	 -6.20780837	 -0.00205306	  0.00124619	  7.20575531	  0.99368812	  0.99670075  0.49079130
+1485	 -6.20803263	 -0.00205178	  0.00124546	  7.20598085	  0.99369217	  0.99670276  0.49079832
+1486	 -6.20825612	 -0.00205050	  0.00124473	  7.20620562	  0.99369622	  0.99670477  0.49080531
+1487	 -6.20847885	 -0.00204923	  0.00124400	  7.20642963	  0.99370026	  0.99670677  0.49081228
+1488	 -6.20870082	 -0.00204795	  0.00124327	  7.20665287	  0.99370430	  0.99670878  0.49081924
+1489	 -6.20892203	 -0.00204668	  0.00124254	  7.20687536	  0.99370833	  0.99671078  0.49082617
+1490	 -6.20914249	 -0.00204540	  0.00124181	  7.20709708	  0.99371236	  0.99671278  0.49083307
+1491	 -6.20936219	 -0.00204413	  0.00124109	  7.20731805	  0.99371638	  0.99671478  0.49083996
+1492	 -6.20958114	 -0.00204286	  0.00124036	  7.20753827	  0.99372040	  0.99671678  0.49084681
+1493	 -6.20979934	 -0.00204160	  0.00123963	  7.20775774	  0.99372441	  0.99671877  0.49085365
+1494	 -6.21001679	 -0.00204033	  0.00123891	  7.20797646	  0.99372842	  0.99672076  0.49086047
+1495	 -6.21023350	 -0.00203906	  0.00123818	  7.20819444	  0.99373242	  0.99672275  0.49086727
+1496	 -6.21044947	 -0.00203780	  0.00123746	  7.20841167	  0.99373642	  0.99672474  0.49087404
+1497	 -6.21066470	 -0.00203654	  0.00123673	  7.20862816	  0.99374042	  0.99672673  0.49088079
+1498	 -6.21087920	 -0.00203528	  0.00123601	  7.20884392	  0.99374441	  0.99672871  0.49088752
+1499	 -6.21109295	 -0.00203402	  0.00123529	  7.20905894	  0.99374839	  0.99673070  0.49089423
+1500	 -6.21130598	 -0.00203276	  0.00123456	  7.20927322	  0.99375237	  0.99673268  0.49090092
+1501	 -6.21151828	 -0.00203150	  0.00123384	  7.20948678	  0.99375635	  0.99673466  0.49090759
+1502	 -6.21172985	 -0.00203024	  0.00123312	  7.20969960	  0.99376032	  0.99673663  0.49091423
+1503	 -6.21194069	 -0.00202899	  0.00123240	  7.20991170	  0.99376428	  0.99673861  0.49092085
+1504	 -6.21215082	 -0.00202774	  0.00123168	  7.21012308	  0.99376825	  0.99674058  0.49092745
+1505	 -6.21236022	 -0.00202648	  0.00123096	  7.21033373	  0.99377220	  0.99674255  0.49093403
+1506	 -6.21256890	 -0.00202523	  0.00123025	  7.21054367	  0.99377616	  0.99674452  0.49094059
+1507	 -6.21277687	 -0.00202398	  0.00122953	  7.21075289	  0.99378010	  0.99674649  0.49094712
+1508	 -6.21298413	 -0.00202274	  0.00122881	  7.21096139	  0.99378405	  0.99674845  0.49095364
+1509	 -6.21319067	 -0.00202149	  0.00122809	  7.21116918	  0.99378798	  0.99675042  0.49096013
+1510	 -6.21339651	 -0.00202025	  0.00122738	  7.21137627	  0.99379192	  0.99675238  0.49096661
+1511	 -6.21360164	 -0.00201900	  0.00122666	  7.21158264	  0.99379585	  0.99675434  0.49097306
+1512	 -6.21380607	 -0.00201776	  0.00122595	  7.21178831	  0.99379977	  0.99675629  0.49097950
+1513	 -6.21400979	 -0.00201652	  0.00122523	  7.21199328	  0.99380369	  0.99675825  0.49098591
+1514	 -6.21421282	 -0.00201528	  0.00122452	  7.21219754	  0.99380761	  0.99676020  0.49099230
+1515	 -6.21441515	 -0.00201404	  0.00122381	  7.21240111	  0.99381152	  0.99676215  0.49099867
+1516	 -6.21461678	 -0.00201280	  0.00122310	  7.21260398	  0.99381543	  0.99676410  0.49100502
+1517	 -6.21481773	 -0.00201157	  0.00122239	  7.21280616	  0.99381933	  0.99676605  0.49101135
+1518	 -6.21501798	 -0.00201033	  0.00122167	  7.21300765	  0.99382323	  0.99676799  0.49101767
+1519	 -6.21521754	 -0.00200910	  0.00122096	  7.21320844	  0.99382712	  0.99676994  0.49102395
+1520	 -6.21541642	 -0.00200787	  0.00122026	  7.21340855	  0.99383101	  0.99677188  0.49103022
+1521	 -6.21561461	 -0.00200664	  0.00121955	  7.21360798	  0.99383489	  0.99677382  0.49103647
+1522	 -6.21581213	 -0.00200541	  0.00121884	  7.21380672	  0.99383877	  0.99677575  0.49104269
+1523	 -6.21600896	 -0.00200418	  0.00121813	  7.21400478	  0.99384265	  0.99677769  0.49104891
+1524	 -6.21620512	 -0.00200295	  0.00121742	  7.21420217	  0.99384652	  0.99677962  0.49105509
+1525	 -6.21640060	 -0.00200173	  0.00121672	  7.21439887	  0.99385038	  0.99678156  0.49106126
+1526	 -6.21659541	 -0.00200050	  0.00121601	  7.21459491	  0.99385424	  0.99678349  0.49106741
+1527	 -6.21678955	 -0.00199928	  0.00121531	  7.21479027	  0.99385810	  0.99678541  0.49107353
+1528	 -6.21698302	 -0.00199806	  0.00121460	  7.21498497	  0.99386195	  0.99678734  0.49107964
+1529	 -6.21717583	 -0.00199684	  0.00121390	  7.21517899	  0.99386580	  0.99678926  0.49108574
+1530	 -6.21736797	 -0.00199562	  0.00121320	  7.21537235	  0.99386965	  0.99679119  0.49109180
+1531	 -6.21755945	 -0.00199440	  0.00121249	  7.21556505	  0.99387349	  0.99679311  0.49109786
+1532	 -6.21775028	 -0.00199319	  0.00121179	  7.21575709	  0.99387732	  0.99679502  0.49110388
+1533	 -6.21794044	 -0.00199197	  0.00121109	  7.21594847	  0.99388115	  0.99679694  0.49110989
+1534	 -6.21812995	 -0.00199076	  0.00121039	  7.21613919	  0.99388498	  0.99679885  0.49111588
+1535	 -6.21831881	 -0.00198955	  0.00120969	  7.21632926	  0.99388880	  0.99680077  0.49112186
+1536	 -6.21850702	 -0.00198833	  0.00120899	  7.21651868	  0.99389261	  0.99680268  0.49112781
+1537	 -6.21869457	 -0.00198712	  0.00120829	  7.21670745	  0.99389643	  0.99680459  0.49113374
+1538	 -6.21888149	 -0.00198592	  0.00120759	  7.21689557	  0.99390024	  0.99680649  0.49113965
+1539	 -6.21906775	 -0.00198471	  0.00120689	  7.21708304	  0.99390404	  0.99680840  0.49114555
+1540	 -6.21925338	 -0.00198350	  0.00120620	  7.21726987	  0.99390784	  0.99681030  0.49115142
+1541	 -6.21943836	 -0.00198230	  0.00120550	  7.21745606	  0.99391163	  0.99681220  0.49115728
+1542	 -6.21962271	 -0.00198110	  0.00120481	  7.21764161	  0.99391542	  0.99681410  0.49116312
+1543	 -6.21980642	 -0.00197989	  0.00120411	  7.21782653	  0.99391921	  0.99681600  0.49116895
+1544	 -6.21998950	 -0.00197869	  0.00120342	  7.21801081	  0.99392299	  0.99681789  0.49117474
+1545	 -6.22017194	 -0.00197749	  0.00120272	  7.21819445	  0.99392677	  0.99681979  0.49118052
+1546	 -6.22035376	 -0.00197630	  0.00120203	  7.21837746	  0.99393054	  0.99682168  0.49118629
+1547	 -6.22053495	 -0.00197510	  0.00120134	  7.21855985	  0.99393431	  0.99682357  0.49119203
+1548	 -6.22071551	 -0.00197390	  0.00120064	  7.21874161	  0.99393808	  0.99682545  0.49119776
+1549	 -6.22089545	 -0.00197271	  0.00119995	  7.21892274	  0.99394184	  0.99682734  0.49120347
+1550	 -6.22107477	 -0.00197152	  0.00119926	  7.21910325	  0.99394559	  0.99682922  0.49120916
+1551	 -6.22125347	 -0.00197032	  0.00119857	  7.21928314	  0.99394935	  0.99683111  0.49121482
+1552	 -6.22143155	 -0.00196913	  0.00119788	  7.21946242	  0.99395309	  0.99683299  0.49122047
+1553	 -6.22160902	 -0.00196794	  0.00119719	  7.21964107	  0.99395684	  0.99683486  0.49122611
+1554	 -6.22178587	 -0.00196676	  0.00119650	  7.21981911	  0.99396058	  0.99683674  0.49123173
+1555	 -6.22196211	 -0.00196557	  0.00119582	  7.21999654	  0.99396431	  0.99683861  0.49123732
+1556	 -6.22213774	 -0.00196438	  0.00119513	  7.22017336	  0.99396804	  0.99684049  0.49124290
+1557	 -6.22231277	 -0.00196320	  0.00119444	  7.22034957	  0.99397177	  0.99684236  0.49124846
+1558	 -6.22248719	 -0.00196202	  0.00119376	  7.22052517	  0.99397549	  0.99684423  0.49125400
+1559	 -6.22266101	 -0.00196083	  0.00119307	  7.22070017	  0.99397920	  0.99684609  0.49125953
+1560	 -6.22283422	 -0.00195965	  0.00119239	  7.22087457	  0.99398292	  0.99684796  0.49126504
+1561	 -6.22300684	 -0.00195848	  0.00119170	  7.22104836	  0.99398663	  0.99684982  0.49127053
+1562	 -6.22317886	 -0.00195730	  0.00119102	  7.22122156	  0.99399033	  0.99685168  0.49127600
+1563	 -6.22335028	 -0.00195612	  0.00119034	  7.22139416	  0.99399403	  0.99685354  0.49128145
+1564	 -6.22352111	 -0.00195495	  0.00118965	  7.22156617	  0.99399773	  0.99685540  0.49128689
+1565	 -6.22369135	 -0.00195377	  0.00118897	  7.22173758	  0.99400142	  0.99685726  0.49129231
+1566	 -6.22386100	 -0.00195260	  0.00118829	  7.22190841	  0.99400511	  0.99685911  0.49129771
+1567	 -6.22403007	 -0.00195143	  0.00118761	  7.22207864	  0.99400879	  0.99686096  0.49130310
+1568	 -6.22419854	 -0.00195026	  0.00118693	  7.22224829	  0.99401247	  0.99686281  0.49130846
+1569	 -6.22436644	 -0.00194909	  0.00118625	  7.22241735	  0.99401615	  0.99686466  0.49131381
+1570	 -6.22453375	 -0.00194792	  0.00118557	  7.22258583	  0.99401982	  0.99686651  0.49131914
+1571	 -6.22470048	 -0.00194675	  0.00118490	  7.22275373	  0.99402348	  0.99686835  0.49132446
+1572	 -6.22486664	 -0.00194559	  0.00118422	  7.22292105	  0.99402715	  0.99687019  0.49132975
+1573	 -6.22503222	 -0.00194442	  0.00118354	  7.22308780	  0.99403081	  0.99687204  0.49133503
+1574	 -6.22519722	 -0.00194326	  0.00118287	  7.22325396	  0.99403446	  0.99687387  0.49134030
+1575	 -6.22536166	 -0.00194210	  0.00118219	  7.22341956	  0.99403811	  0.99687571  0.49134554
+1576	 -6.22552552	 -0.00194094	  0.00118152	  7.22358458	  0.99404176	  0.99687755  0.49135077
+1577	 -6.22568881	 -0.00193978	  0.00118084	  7.22374904	  0.99404540	  0.99687938  0.49135598
+1578	 -6.22585154	 -0.00193862	  0.00118017	  7.22391292	  0.99404904	  0.99688121  0.49136117
+1579	 -6.22601370	 -0.00193746	  0.00117950	  7.22407624	  0.99405267	  0.99688304  0.49136635
+1580	 -6.22617531	 -0.00193631	  0.00117882	  7.22423900	  0.99405630	  0.99688487  0.49137152
+1581	 -6.22633635	 -0.00193515	  0.00117815	  7.22440119	  0.99405992	  0.99688670  0.49137666
+1582	 -6.22649683	 -0.00193400	  0.00117748	  7.22456283	  0.99406354	  0.99688852  0.49138179
+1583	 -6.22665675	 -0.00193285	  0.00117681	  7.22472390	  0.99406716	  0.99689034  0.49138690
+1584	 -6.22681612	 -0.00193170	  0.00117614	  7.22488442	  0.99407077	  0.99689216  0.49139199
+1585	 -6.22697494	 -0.00193055	  0.00117547	  7.22504439	  0.99407438	  0.99689398  0.49139707
+1586	 -6.22713320	 -0.00192940	  0.00117480	  7.22520380	  0.99407799	  0.99689580  0.49140214
+1587	 -6.22729092	 -0.00192825	  0.00117413	  7.22536266	  0.99408159	  0.99689762  0.49140718
+1588	 -6.22744808	 -0.00192711	  0.00117346	  7.22552098	  0.99408519	  0.99689943  0.49141221
+1589	 -6.22760470	 -0.00192596	  0.00117280	  7.22567874	  0.99408878	  0.99690124  0.49141723
+1590	 -6.22776078	 -0.00192482	  0.00117213	  7.22583596	  0.99409237	  0.99690305  0.49142222
+1591	 -6.22791631	 -0.00192368	  0.00117147	  7.22599264	  0.99409595	  0.99690486  0.49142719
+1592	 -6.22807131	 -0.00192253	  0.00117080	  7.22614877	  0.99409953	  0.99690667  0.49143216
+1593	 -6.22822576	 -0.00192139	  0.00117014	  7.22630437	  0.99410311	  0.99690847  0.49143711
+1594	 -6.22837968	 -0.00192026	  0.00116947	  7.22645942	  0.99410668	  0.99691027  0.49144204
+1595	 -6.22853306	 -0.00191912	  0.00116881	  7.22661394	  0.99411025	  0.99691207  0.49144696
+1596	 -6.22868591	 -0.00191798	  0.00116815	  7.22676793	  0.99411381	  0.99691387  0.49145186
+1597	 -6.22883823	 -0.00191685	  0.00116748	  7.22692138	  0.99411737	  0.99691567  0.49145674
+1598	 -6.22899002	 -0.00191571	  0.00116682	  7.22707430	  0.99412093	  0.99691747  0.49146161
+1599	 -6.22914128	 -0.00191458	  0.00116616	  7.22722670	  0.99412448	  0.99691926  0.49146647
+1600	 -6.22929201	 -0.00191345	  0.00116550	  7.22737856	  0.99412803	  0.99692105  0.49147130
+1601	 -6.22944222	 -0.00191232	  0.00116484	  7.22752990	  0.99413157	  0.99692284  0.49147613
+1602	 -6.22959190	 -0.00191119	  0.00116418	  7.22768071	  0.99413511	  0.99692463  0.49148093
+1603	 -6.22974107	 -0.00191006	  0.00116352	  7.22783101	  0.99413865	  0.99692642  0.49148571
+1604	 -6.22988971	 -0.00190893	  0.00116286	  7.22798078	  0.99414218	  0.99692820  0.49149049
+1605	 -6.23003784	 -0.00190781	  0.00116221	  7.22813003	  0.99414571	  0.99692998  0.49149525
+1606	 -6.23018545	 -0.00190669	  0.00116155	  7.22827877	  0.99414924	  0.99693176  0.49149999
+1607	 -6.23033255	 -0.00190556	  0.00116089	  7.22842699	  0.99415276	  0.99693354  0.49150472
+1608	 -6.23047913	 -0.00190444	  0.00116024	  7.22857469	  0.99415627	  0.99693532  0.49150944
+1609	 -6.23062521	 -0.00190332	  0.00115958	  7.22872189	  0.99415978	  0.99693710  0.49151413
+1610	 -6.23077077	 -0.00190220	  0.00115893	  7.22886857	  0.99416329	  0.99693887  0.49151881
+1611	 -6.23091583	 -0.00190108	  0.00115828	  7.22901475	  0.99416680	  0.99694064  0.49152348
+1612	 -6.23106038	 -0.00189996	  0.00115762	  7.22916042	  0.99417030	  0.99694241  0.49152813
+1613	 -6.23120443	 -0.00189885	  0.00115697	  7.22930558	  0.99417379	  0.99694418  0.49153277
+1614	 -6.23134798	 -0.00189773	  0.00115632	  7.22945024	  0.99417729	  0.99694595  0.49153739
+1615	 -6.23149102	 -0.00189662	  0.00115567	  7.22959440	  0.99418078	  0.99694772  0.49154200
+1616	 -6.23163357	 -0.00189551	  0.00115501	  7.22973806	  0.99418426	  0.99694948  0.49154659
+1617	 -6.23177562	 -0.00189439	  0.00115436	  7.22988122	  0.99418774	  0.99695124  0.49155116
+1618	 -6.23191717	 -0.00189328	  0.00115371	  7.23002389	  0.99419122	  0.99695300  0.49155572
+1619	 -6.23205823	 -0.00189218	  0.00115307	  7.23016606	  0.99419469	  0.99695476  0.49156028
+1620	 -6.23219880	 -0.00189107	  0.00115242	  7.23030773	  0.99419816	  0.99695652  0.49156481
+1621	 -6.23233888	 -0.00188996	  0.00115177	  7.23044891	  0.99420163	  0.99695827  0.49156932
+1622	 -6.23247846	 -0.00188886	  0.00115112	  7.23058961	  0.99420509	  0.99696002  0.49157383
+1623	 -6.23261756	 -0.00188775	  0.00115047	  7.23072981	  0.99420855	  0.99696177  0.49157832
+1624	 -6.23275618	 -0.00188665	  0.00114983	  7.23086953	  0.99421200	  0.99696352  0.49158279
+1625	 -6.23289431	 -0.00188555	  0.00114918	  7.23100876	  0.99421545	  0.99696527  0.49158725
+1626	 -6.23303196	 -0.00188444	  0.00114854	  7.23114751	  0.99421890	  0.99696702  0.49159170
+1627	 -6.23316912	 -0.00188334	  0.00114789	  7.23128578	  0.99422234	  0.99696876  0.49159612
+1628	 -6.23330581	 -0.00188225	  0.00114725	  7.23142357	  0.99422578	  0.99697050  0.49160053
+1629	 -6.23344202	 -0.00188115	  0.00114661	  7.23156087	  0.99422921	  0.99697225  0.49160494
+1630	 -6.23357776	 -0.00188005	  0.00114596	  7.23169771	  0.99423264	  0.99697398  0.49160932
+1631	 -6.23371302	 -0.00187896	  0.00114532	  7.23183406	  0.99423607	  0.99697572  0.49161370
+1632	 -6.23384781	 -0.00187786	  0.00114468	  7.23196994	  0.99423949	  0.99697746  0.49161806
+1633	 -6.23398212	 -0.00187677	  0.00114404	  7.23210535	  0.99424291	  0.99697919  0.49162241
+1634	 -6.23411597	 -0.00187568	  0.00114340	  7.23224029	  0.99424633	  0.99698092  0.49162674
+1635	 -6.23424935	 -0.00187459	  0.00114276	  7.23237476	  0.99424974	  0.99698265  0.49163105
+1636	 -6.23438226	 -0.00187350	  0.00114212	  7.23250876	  0.99425315	  0.99698438  0.49163535
+1637	 -6.23451471	 -0.00187241	  0.00114148	  7.23264230	  0.99425655	  0.99698611  0.49163964
+1638	 -6.23464669	 -0.00187132	  0.00114084	  7.23277537	  0.99425995	  0.99698783  0.49164392
+1639	 -6.23477821	 -0.00187024	  0.00114021	  7.23290797	  0.99426335	  0.99698956  0.49164818
+1640	 -6.23490927	 -0.00186915	  0.00113957	  7.23304012	  0.99426674	  0.99699128  0.49165242
+1641	 -6.23503988	 -0.00186807	  0.00113893	  7.23317181	  0.99427013	  0.99699300  0.49165666
+1642	 -6.23517002	 -0.00186698	  0.00113830	  7.23330304	  0.99427352	  0.99699472  0.49166087
+1643	 -6.23529971	 -0.00186590	  0.00113766	  7.23343381	  0.99427690	  0.99699644  0.49166508
+1644	 -6.23542895	 -0.00186482	  0.00113703	  7.23356413	  0.99428028	  0.99699815  0.49166927
+1645	 -6.23555773	 -0.00186374	  0.00113639	  7.23369399	  0.99428365	  0.99699986  0.49167345
+1646	 -6.23568606	 -0.00186267	  0.00113576	  7.23382340	  0.99428702	  0.99700157  0.49167762
+1647	 -6.23581395	 -0.00186159	  0.00113513	  7.23395236	  0.99429039	  0.99700328  0.49168176
+1648	 -6.23594138	 -0.00186051	  0.00113449	  7.23408087	  0.99429375	  0.99700499  0.49168591
+1649	 -6.23606837	 -0.00185944	  0.00113386	  7.23420893	  0.99429711	  0.99700670  0.49169003
+1650	 -6.23619491	 -0.00185836	  0.00113323	  7.23433655	  0.99430047	  0.99700840  0.49169415
+1651	 -6.23632102	 -0.00185729	  0.00113260	  7.23446372	  0.99430382	  0.99701011  0.49169823
+1652	 -6.23644667	 -0.00185622	  0.00113197	  7.23459045	  0.99430717	  0.99701181  0.49170232
+1653	 -6.23657189	 -0.00185515	  0.00113134	  7.23471674	  0.99431051	  0.99701351  0.49170640
+1654	 -6.23669667	 -0.00185408	  0.00113071	  7.23484259	  0.99431385	  0.99701521  0.49171044
+1655	 -6.23682101	 -0.00185301	  0.00113009	  7.23496800	  0.99431719	  0.99701690  0.49171449
+1656	 -6.23694492	 -0.00185195	  0.00112946	  7.23509297	  0.99432052	  0.99701860  0.49171853
+1657	 -6.23706839	 -0.00185088	  0.00112883	  7.23521751	  0.99432385	  0.99702029  0.49172254
+1658	 -6.23719143	 -0.00184981	  0.00112820	  7.23534161	  0.99432718	  0.99702198  0.49172655
+1659	 -6.23731403	 -0.00184875	  0.00112758	  7.23546528	  0.99433050	  0.99702367  0.49173054
+1660	 -6.23743621	 -0.00184769	  0.00112695	  7.23558852	  0.99433382	  0.99702536  0.49173452
+1661	 -6.23755795	 -0.00184663	  0.00112633	  7.23571133	  0.99433713	  0.99702705  0.49173848
+1662	 -6.23767927	 -0.00184557	  0.00112570	  7.23583371	  0.99434044	  0.99702873  0.49174243
+1663	 -6.23780017	 -0.00184451	  0.00112508	  7.23595566	  0.99434375	  0.99703041  0.49174639
+1664	 -6.23792064	 -0.00184345	  0.00112446	  7.23607719	  0.99434706	  0.99703209  0.49175031
+1665	 -6.23804068	 -0.00184239	  0.00112383	  7.23619829	  0.99435036	  0.99703377  0.49175422
+1666	 -6.23816031	 -0.00184134	  0.00112321	  7.23631897	  0.99435365	  0.99703545  0.49175813
+1667	 -6.23827952	 -0.00184028	  0.00112259	  7.23643923	  0.99435695	  0.99703713  0.49176201
+1668	 -6.23839830	 -0.00183923	  0.00112197	  7.23655907	  0.99436024	  0.99703880  0.49176589
+1669	 -6.23851667	 -0.00183817	  0.00112135	  7.23667850	  0.99436352	  0.99704048  0.49176975
+1670	 -6.23863462	 -0.00183712	  0.00112073	  7.23679750	  0.99436680	  0.99704215  0.49177361
+1671	 -6.23875216	 -0.00183607	  0.00112011	  7.23691609	  0.99437008	  0.99704382  0.49177744
+1672	 -6.23886929	 -0.00183502	  0.00111949	  7.23703427	  0.99437336	  0.99704548  0.49178127
+1673	 -6.23898600	 -0.00183398	  0.00111887	  7.23715203	  0.99437663	  0.99704715  0.49178508
+1674	 -6.23910231	 -0.00183293	  0.00111826	  7.23726938	  0.99437990	  0.99704881  0.49178889
+1675	 -6.23921820	 -0.00183188	  0.00111764	  7.23738632	  0.99438316	  0.99705048  0.49179268
+1676	 -6.23933369	 -0.00183084	  0.00111702	  7.23750286	  0.99438642	  0.99705214  0.49179645
+1677	 -6.23944877	 -0.00182979	  0.00111641	  7.23761898	  0.99438968	  0.99705380  0.49180022
+1678	 -6.23956345	 -0.00182875	  0.00111579	  7.23773470	  0.99439293	  0.99705546  0.49180397
+1679	 -6.23967773	 -0.00182771	  0.00111518	  7.23785002	  0.99439618	  0.99705711  0.49180771
+1680	 -6.23979160	 -0.00182667	  0.00111456	  7.23796493	  0.99439943	  0.99705877  0.49181144
+1681	 -6.23990507	 -0.00182563	  0.00111395	  7.23807944	  0.99440267	  0.99706042  0.49181516
+1682	 -6.24001814	 -0.00182459	  0.00111334	  7.23819355	  0.99440591	  0.99706207  0.49181886
+1683	 -6.24013082	 -0.00182355	  0.00111273	  7.23830726	  0.99440915	  0.99706372  0.49182255
+1684	 -6.24024309	 -0.00182251	  0.00111211	  7.23842058	  0.99441238	  0.99706537  0.49182623
+1685	 -6.24035498	 -0.00182148	  0.00111150	  7.23853350	  0.99441561	  0.99706702  0.49182990
+1686	 -6.24046647	 -0.00182045	  0.00111089	  7.23864602	  0.99441884	  0.99706866  0.49183355
+1687	 -6.24057756	 -0.00181941	  0.00111028	  7.23875815	  0.99442206	  0.99707031  0.49183719
+1688	 -6.24068827	 -0.00181838	  0.00110967	  7.23886989	  0.99442528	  0.99707195  0.49184083
+1689	 -6.24079858	 -0.00181735	  0.00110906	  7.23898123	  0.99442849	  0.99707359  0.49184446
+1690	 -6.24090851	 -0.00181632	  0.00110846	  7.23909219	  0.99443170	  0.99707523  0.49184806
+1691	 -6.24101805	 -0.00181529	  0.00110785	  7.23920276	  0.99443491	  0.99707686  0.49185165
+1692	 -6.24112720	 -0.00181426	  0.00110724	  7.23931294	  0.99443812	  0.99707850  0.49185524
+1693	 -6.24123597	 -0.00181324	  0.00110663	  7.23942274	  0.99444132	  0.99708013  0.49185881
+1694	 -6.24134436	 -0.00181221	  0.00110603	  7.23953215	  0.99444451	  0.99708176  0.49186237
+1695	 -6.24145237	 -0.00181118	  0.00110542	  7.23964118	  0.99444771	  0.99708339  0.49186593
+1696	 -6.24155999	 -0.00181016	  0.00110482	  7.23974983	  0.99445090	  0.99708502  0.49186947
+1697	 -6.24166723	 -0.00180914	  0.00110421	  7.23985810	  0.99445408	  0.99708665  0.49187299
+1698	 -6.24177410	 -0.00180812	  0.00110361	  7.23996598	  0.99445727	  0.99708828  0.49187651
+1699	 -6.24188059	 -0.00180710	  0.00110300	  7.24007349	  0.99446045	  0.99708990  0.49188001
+1700	 -6.24198671	 -0.00180608	  0.00110240	  7.24018063	  0.99446363	  0.99709152  0.49188351
+1701	 -6.24209245	 -0.00180506	  0.00110180	  7.24028739	  0.99446680	  0.99709314  0.49188699
+1702	 -6.24219781	 -0.00180404	  0.00110120	  7.24039377	  0.99446997	  0.99709476  0.49189046
+1703	 -6.24230281	 -0.00180302	  0.00110060	  7.24049978	  0.99447313	  0.99709638  0.49189392
+1704	 -6.24240743	 -0.00180201	  0.00110000	  7.24060543	  0.99447630	  0.99709800  0.49189737
+1705	 -6.24251169	 -0.00180100	  0.00109940	  7.24071070	  0.99447946	  0.99709961  0.49190081
+1706	 -6.24261558	 -0.00179998	  0.00109880	  7.24081560	  0.99448261	  0.99710122  0.49190424
+1707	 -6.24271910	 -0.00179897	  0.00109820	  7.24092013	  0.99448577	  0.99710283  0.49190765
+1708	 -6.24282226	 -0.00179796	  0.00109760	  7.24102430	  0.99448891	  0.99710444  0.49191105
+1709	 -6.24292505	 -0.00179695	  0.00109700	  7.24112810	  0.99449206	  0.99710605  0.49191444
+1710	 -6.24302748	 -0.00179594	  0.00109640	  7.24123154	  0.99449520	  0.99710766  0.49191782
+1711	 -6.24312955	 -0.00179493	  0.00109581	  7.24133462	  0.99449834	  0.99710926  0.49192119
+1712	 -6.24323126	 -0.00179392	  0.00109521	  7.24143733	  0.99450148	  0.99711087  0.49192455
+1713	 -6.24333261	 -0.00179292	  0.00109461	  7.24153969	  0.99450461	  0.99711247  0.49192789
+1714	 -6.24343360	 -0.00179191	  0.00109402	  7.24164168	  0.99450774	  0.99711407  0.49193123
+1715	 -6.24353423	 -0.00179091	  0.00109342	  7.24174332	  0.99451086	  0.99711567  0.49193456
+1716	 -6.24363451	 -0.00178991	  0.00109283	  7.24184460	  0.99451399	  0.99711726  0.49193787
+1717	 -6.24373444	 -0.00178891	  0.00109224	  7.24194553	  0.99451711	  0.99711886  0.49194119
+1718	 -6.24383401	 -0.00178790	  0.00109164	  7.24204610	  0.99452022	  0.99712045  0.49194448
+1719	 -6.24393323	 -0.00178690	  0.00109105	  7.24214632	  0.99452333	  0.99712204  0.49194776
+1720	 -6.24403210	 -0.00178591	  0.00109046	  7.24224619	  0.99452644	  0.99712364  0.49195103
+1721	 -6.24413062	 -0.00178491	  0.00108987	  7.24234571	  0.99452955	  0.99712522  0.49195429
+1722	 -6.24422879	 -0.00178391	  0.00108928	  7.24244488	  0.99453265	  0.99712681  0.49195755
+1723	 -6.24432661	 -0.00178292	  0.00108869	  7.24254370	  0.99453575	  0.99712840  0.49196079
+1724	 -6.24442409	 -0.00178192	  0.00108810	  7.24264217	  0.99453884	  0.99712998  0.49196402
+1725	 -6.24452123	 -0.00178093	  0.00108751	  7.24274030	  0.99454194	  0.99713157  0.49196723
+1726	 -6.24461802	 -0.00177993	  0.00108692	  7.24283808	  0.99454502	  0.99713315  0.49197045
+1727	 -6.24471446	 -0.00177894	  0.00108633	  7.24293552	  0.99454811	  0.99713473  0.49197365
+1728	 -6.24481057	 -0.00177795	  0.00108574	  7.24303262	  0.99455119	  0.99713630  0.49197684
+1729	 -6.24490634	 -0.00177696	  0.00108516	  7.24312938	  0.99455427	  0.99713788  0.49198002
+1730	 -6.24500177	 -0.00177597	  0.00108457	  7.24322579	  0.99455735	  0.99713946  0.49198318
+1731	 -6.24509686	 -0.00177499	  0.00108398	  7.24332187	  0.99456042	  0.99714103  0.49198634
+1732	 -6.24519161	 -0.00177400	  0.00108340	  7.24341761	  0.99456349	  0.99714260  0.49198949
+1733	 -6.24528603	 -0.00177301	  0.00108281	  7.24351302	  0.99456655	  0.99714417  0.49199263
+1734	 -6.24538012	 -0.00177203	  0.00108223	  7.24360809	  0.99456961	  0.99714574  0.49199575
+1735	 -6.24547387	 -0.00177105	  0.00108164	  7.24370283	  0.99457267	  0.99714731  0.49199887
+1736	 -6.24556729	 -0.00177006	  0.00108106	  7.24379723	  0.99457573	  0.99714887  0.49200198
+1737	 -6.24566038	 -0.00176908	  0.00108048	  7.24389130	  0.99457878	  0.99715044  0.49200507
+1738	 -6.24575314	 -0.00176810	  0.00107990	  7.24398504	  0.99458183	  0.99715200  0.49200817
+1739	 -6.24584557	 -0.00176712	  0.00107931	  7.24407845	  0.99458488	  0.99715356  0.49201123
+1740	 -6.24593768	 -0.00176614	  0.00107873	  7.24417153	  0.99458792	  0.99715512  0.49201431
+1741	 -6.24602946	 -0.00176517	  0.00107815	  7.24426429	  0.99459096	  0.99715668  0.49201737
+1742	 -6.24612091	 -0.00176419	  0.00107757	  7.24435672	  0.99459400	  0.99715824  0.49202041
+1743	 -6.24621204	 -0.00176321	  0.00107699	  7.24444883	  0.99459703	  0.99715979  0.49202344
+1744	 -6.24630285	 -0.00176224	  0.00107641	  7.24454061	  0.99460006	  0.99716135  0.49202647
+1745	 -6.24639333	 -0.00176127	  0.00107584	  7.24463206	  0.99460309	  0.99716290  0.49202949
+1746	 -6.24648350	 -0.00176029	  0.00107526	  7.24472320	  0.99460611	  0.99716445  0.49203250
+1747	 -6.24657334	 -0.00175932	  0.00107468	  7.24481402	  0.99460913	  0.99716600  0.49203550
+1748	 -6.24666287	 -0.00175835	  0.00107410	  7.24490451	  0.99461215	  0.99716755  0.49203848
+1749	 -6.24675208	 -0.00175738	  0.00107353	  7.24499469	  0.99461516	  0.99716909  0.49204146
+1750	 -6.24684097	 -0.00175641	  0.00107295	  7.24508455	  0.99461817	  0.99717064  0.49204443
+1751	 -6.24692955	 -0.00175545	  0.00107238	  7.24517410	  0.99462118	  0.99717218  0.49204739
+1752	 -6.24701781	 -0.00175448	  0.00107180	  7.24526333	  0.99462418	  0.99717372  0.49205033
+1753	 -6.24710576	 -0.00175351	  0.00107123	  7.24535225	  0.99462718	  0.99717526  0.49205328
+1754	 -6.24719340	 -0.00175255	  0.00107065	  7.24544085	  0.99463018	  0.99717680  0.49205621
+1755	 -6.24728073	 -0.00175158	  0.00107008	  7.24552914	  0.99463317	  0.99717834  0.49205913
+1756	 -6.24736775	 -0.00175062	  0.00106951	  7.24561712	  0.99463617	  0.99717987  0.49206204
+1757	 -6.24745446	 -0.00174966	  0.00106893	  7.24570479	  0.99463915	  0.99718141  0.49206494
+1758	 -6.24754086	 -0.00174870	  0.00106836	  7.24579216	  0.99464214	  0.99718294  0.49206783
+1759	 -6.24762695	 -0.00174774	  0.00106779	  7.24587921	  0.99464512	  0.99718447  0.49207072
+1760	 -6.24771274	 -0.00174678	  0.00106722	  7.24596596	  0.99464810	  0.99718600  0.49207359
+1761	 -6.24779823	 -0.00174582	  0.00106665	  7.24605241	  0.99465108	  0.99718753  0.49207645
+1762	 -6.24788341	 -0.00174487	  0.00106608	  7.24613854	  0.99465405	  0.99718905  0.49207931
+1763	 -6.24796829	 -0.00174391	  0.00106551	  7.24622438	  0.99465702	  0.99719058  0.49208216
+1764	 -6.24805287	 -0.00174296	  0.00106494	  7.24630991	  0.99465998	  0.99719210  0.49208499
+1765	 -6.24813715	 -0.00174200	  0.00106438	  7.24639515	  0.99466295	  0.99719362  0.49208783
+1766	 -6.24822113	 -0.00174105	  0.00106381	  7.24648008	  0.99466591	  0.99719514  0.49209064
+1767	 -6.24830481	 -0.00174010	  0.00106324	  7.24656471	  0.99466886	  0.99719666  0.49209345
+1768	 -6.24838819	 -0.00173915	  0.00106267	  7.24664905	  0.99467182	  0.99719818  0.49209625
+1769	 -6.24847128	 -0.00173819	  0.00106211	  7.24673309	  0.99467477	  0.99719970  0.49209904
+1770	 -6.24855407	 -0.00173725	  0.00106154	  7.24681683	  0.99467771	  0.99720121  0.49210182
+1771	 -6.24863657	 -0.00173630	  0.00106098	  7.24690027	  0.99468066	  0.99720272  0.49210459
+1772	 -6.24871878	 -0.00173535	  0.00106041	  7.24698343	  0.99468360	  0.99720424  0.49210735
+1773	 -6.24880069	 -0.00173440	  0.00105985	  7.24706629	  0.99468654	  0.99720575  0.49211010
+1774	 -6.24888231	 -0.00173346	  0.00105929	  7.24714886	  0.99468947	  0.99720725  0.49211286
+1775	 -6.24896365	 -0.00173251	  0.00105872	  7.24723113	  0.99469240	  0.99720876  0.49211559
+1776	 -6.24904469	 -0.00173157	  0.00105816	  7.24731312	  0.99469533	  0.99721027  0.49211832
+1777	 -6.24912545	 -0.00173063	  0.00105760	  7.24739482	  0.99469826	  0.99721177  0.49212104
+1778	 -6.24920591	 -0.00172969	  0.00105704	  7.24747623	  0.99470118	  0.99721327  0.49212375
+1779	 -6.24928610	 -0.00172875	  0.00105648	  7.24755735	  0.99470410	  0.99721478  0.49212645
+1780	 -6.24936599	 -0.00172781	  0.00105592	  7.24763819	  0.99470702	  0.99721628  0.49212915
+1781	 -6.24944561	 -0.00172687	  0.00105536	  7.24771874	  0.99470993	  0.99721777  0.49213183
+1782	 -6.24952494	 -0.00172593	  0.00105480	  7.24779901	  0.99471284	  0.99721927  0.49213451
+1783	 -6.24960399	 -0.00172499	  0.00105424	  7.24787899	  0.99471575	  0.99722077  0.49213717
+1784	 -6.24968275	 -0.00172406	  0.00105368	  7.24795870	  0.99471865	  0.99722226  0.49213983
+1785	 -6.24976124	 -0.00172312	  0.00105312	  7.24803812	  0.99472155	  0.99722375  0.49214248
+1786	 -6.24983945	 -0.00172219	  0.00105257	  7.24811726	  0.99472445	  0.99722524  0.49214512
+1787	 -6.24991738	 -0.00172126	  0.00105201	  7.24819612	  0.99472735	  0.99722673  0.49214776
+1788	 -6.24999503	 -0.00172032	  0.00105145	  7.24827471	  0.99473024	  0.99722822  0.49215038
+1789	 -6.25007241	 -0.00171939	  0.00105090	  7.24835302	  0.99473313	  0.99722971  0.49215299
+1790	 -6.25014951	 -0.00171846	  0.00105034	  7.24843105	  0.99473601	  0.99723119  0.49215561
+1791	 -6.25022634	 -0.00171753	  0.00104979	  7.24850880	  0.99473890	  0.99723268  0.49215820
+1792	 -6.25030289	 -0.00171660	  0.00104923	  7.24858628	  0.99474178	  0.99723416  0.49216079
+1793	 -6.25037917	 -0.00171568	  0.00104868	  7.24866349	  0.99474465	  0.99723564  0.49216338
+1794	 -6.25045518	 -0.00171475	  0.00104813	  7.24874043	  0.99474753	  0.99723712  0.49216595
+1795	 -6.25053092	 -0.00171382	  0.00104758	  7.24881709	  0.99475040	  0.99723860  0.49216851
+1796	 -6.25060639	 -0.00171290	  0.00104702	  7.24889349	  0.99475327	  0.99724008  0.49217106
+1797	 -6.25068159	 -0.00171198	  0.00104647	  7.24896961	  0.99475613	  0.99724155  0.49217362
+1798	 -6.25075652	 -0.00171105	  0.00104592	  7.24904547	  0.99475899	  0.99724303  0.49217616
+1799	 -6.25083119	 -0.00171013	  0.00104537	  7.24912106	  0.99476185	  0.99724450  0.49217869
+1800	 -6.25090559	 -0.00170921	  0.00104482	  7.24919638	  0.99476471	  0.99724597  0.49218121
+1801	 -6.25097972	 -0.00170829	  0.00104427	  7.24927143	  0.99476756	  0.99724744  0.49218373
+1802	 -6.25105359	 -0.00170737	  0.00104372	  7.24934622	  0.99477041	  0.99724891  0.49218624
+1803	 -6.25112720	 -0.00170645	  0.00104317	  7.24942075	  0.99477326	  0.99725037  0.49218873
+1804	 -6.25120055	 -0.00170554	  0.00104262	  7.24949501	  0.99477610	  0.99725184  0.49219122
+1805	 -6.25127363	 -0.00170462	  0.00104208	  7.24956901	  0.99477894	  0.99725330  0.49219371
+1806	 -6.25134646	 -0.00170370	  0.00104153	  7.24964275	  0.99478178	  0.99725477  0.49219618
+1807	 -6.25141902	 -0.00170279	  0.00104098	  7.24971623	  0.99478462	  0.99725623  0.49219865
+1808	 -6.25149133	 -0.00170188	  0.00104044	  7.24978945	  0.99478745	  0.99725769  0.49220112
+1809	 -6.25156338	 -0.00170096	  0.00103989	  7.24986241	  0.99479028	  0.99725915  0.49220356
+1810	 -6.25163517	 -0.00170005	  0.00103935	  7.24993512	  0.99479311	  0.99726060  0.49220600
+1811	 -6.25170670	 -0.00169914	  0.00103880	  7.25000756	  0.99479593	  0.99726206  0.49220844
+1812	 -6.25177798	 -0.00169823	  0.00103826	  7.25007975	  0.99479875	  0.99726351  0.49221087
+1813	 -6.25184901	 -0.00169732	  0.00103771	  7.25015169	  0.99480157	  0.99726496  0.49221329
+1814	 -6.25191978	 -0.00169641	  0.00103717	  7.25022337	  0.99480438	  0.99726642  0.49221570
+1815	 -6.25199031	 -0.00169551	  0.00103663	  7.25029480	  0.99480719	  0.99726787  0.49221811
+1816	 -6.25206057	 -0.00169460	  0.00103609	  7.25036598	  0.99481000	  0.99726931  0.49222050
+1817	 -6.25213059	 -0.00169369	  0.00103555	  7.25043690	  0.99481281	  0.99727076  0.49222289
+1818	 -6.25220036	 -0.00169279	  0.00103500	  7.25050757	  0.99481561	  0.99727221  0.49222527
+1819	 -6.25226988	 -0.00169189	  0.00103446	  7.25057800	  0.99481841	  0.99727365  0.49222765
+1820	 -6.25233916	 -0.00169098	  0.00103392	  7.25064817	  0.99482121	  0.99727509  0.49223001
+1821	 -6.25240818	 -0.00169008	  0.00103338	  7.25071810	  0.99482400	  0.99727653  0.49223237
+1822	 -6.25247696	 -0.00168918	  0.00103285	  7.25078778	  0.99482680	  0.99727797  0.49223472
+1823	 -6.25254550	 -0.00168828	  0.00103231	  7.25085722	  0.99482958	  0.99727941  0.49223706
+1824	 -6.25261379	 -0.00168738	  0.00103177	  7.25092640	  0.99483237	  0.99728085  0.49223939
+1825	 -6.25268183	 -0.00168648	  0.00103123	  7.25099535	  0.99483515	  0.99728229  0.49224172
+1826	 -6.25274963	 -0.00168559	  0.00103069	  7.25106405	  0.99483793	  0.99728372  0.49224404
+1827	 -6.25281720	 -0.00168469	  0.00103016	  7.25113251	  0.99484071	  0.99728515  0.49224636
+1828	 -6.25288452	 -0.00168379	  0.00102962	  7.25120072	  0.99484348	  0.99728659  0.49224866
+1829	 -6.25295160	 -0.00168290	  0.00102909	  7.25126870	  0.99484626	  0.99728802  0.49225097
+1830	 -6.25301844	 -0.00168200	  0.00102855	  7.25133643	  0.99484902	  0.99728945  0.49225325
+1831	 -6.25308504	 -0.00168111	  0.00102802	  7.25140393	  0.99485179	  0.99729087  0.49225553
+1832	 -6.25315140	 -0.00168022	  0.00102748	  7.25147118	  0.99485455	  0.99729230  0.49225780
+1833	 -6.25321753	 -0.00167933	  0.00102695	  7.25153820	  0.99485731	  0.99729372  0.49226008
+1834	 -6.25328342	 -0.00167844	  0.00102641	  7.25160498	  0.99486007	  0.99729515  0.49226233
+1835	 -6.25334907	 -0.00167755	  0.00102588	  7.25167153	  0.99486282	  0.99729657  0.49226459
+1836	 -6.25341450	 -0.00167666	  0.00102535	  7.25173784	  0.99486558	  0.99729799  0.49226684
+1837	 -6.25347968	 -0.00167577	  0.00102482	  7.25180391	  0.99486832	  0.99729941  0.49226907
+1838	 -6.25354464	 -0.00167489	  0.00102429	  7.25186975	  0.99487107	  0.99730083  0.49227131
+1839	 -6.25360936	 -0.00167400	  0.00102376	  7.25193536	  0.99487381	  0.99730224  0.49227354
+1840	 -6.25367385	 -0.00167312	  0.00102323	  7.25200074	  0.99487655	  0.99730366  0.49227575
+1841	 -6.25373811	 -0.00167223	  0.00102270	  7.25206588	  0.99487929	  0.99730507  0.49227796
+1842	 -6.25380215	 -0.00167135	  0.00102217	  7.25213080	  0.99488202	  0.99730649  0.49228016
+1843	 -6.25386595	 -0.00167047	  0.00102164	  7.25219548	  0.99488476	  0.99730790  0.49228236
+1844	 -6.25392952	 -0.00166958	  0.00102111	  7.25225994	  0.99488749	  0.99730931  0.49228455
+1845	 -6.25399287	 -0.00166870	  0.00102058	  7.25232417	  0.99489021	  0.99731072  0.49228673
+1846	 -6.25405599	 -0.00166782	  0.00102005	  7.25238817	  0.99489294	  0.99731212  0.49228892
+1847	 -6.25411889	 -0.00166694	  0.00101953	  7.25245194	  0.99489566	  0.99731353  0.49229108
+1848	 -6.25418156	 -0.00166607	  0.00101900	  7.25251549	  0.99489837	  0.99731493  0.49229324
+1849	 -6.25424401	 -0.00166519	  0.00101847	  7.25257882	  0.99490109	  0.99731634  0.49229539
+1850	 -6.25430623	 -0.00166431	  0.00101795	  7.25264192	  0.99490380	  0.99731774  0.49229754
+1851	 -6.25436823	 -0.00166344	  0.00101742	  7.25270479	  0.99490651	  0.99731914  0.49229968
+1852	 -6.25443001	 -0.00166256	  0.00101690	  7.25276745	  0.99490922	  0.99732054  0.49230182
+1853	 -6.25449157	 -0.00166169	  0.00101638	  7.25282988	  0.99491192	  0.99732194  0.49230394
+1854	 -6.25455291	 -0.00166082	  0.00101585	  7.25289209	  0.99491462	  0.99732333  0.49230606
+1855	 -6.25461403	 -0.00165994	  0.00101533	  7.25295408	  0.99491732	  0.99732473  0.49230817
+1856	 -6.25467493	 -0.00165907	  0.00101481	  7.25301586	  0.99492002	  0.99732612  0.49231027
+1857	 -6.25473561	 -0.00165820	  0.00101428	  7.25307741	  0.99492271	  0.99732751  0.49231238
+1858	 -6.25479608	 -0.00165733	  0.00101376	  7.25313874	  0.99492540	  0.99732890  0.49231446
+1859	 -6.25485633	 -0.00165647	  0.00101324	  7.25319986	  0.99492809	  0.99733029  0.49231656
+1860	 -6.25491636	 -0.00165560	  0.00101272	  7.25326076	  0.99493077	  0.99733168  0.49231863
+1861	 -6.25497618	 -0.00165473	  0.00101220	  7.25332145	  0.99493345	  0.99733307  0.49232070
+1862	 -6.25503579	 -0.00165386	  0.00101168	  7.25338192	  0.99493613	  0.99733445  0.49232277
+1863	 -6.25509518	 -0.00165300	  0.00101116	  7.25344218	  0.99493881	  0.99733584  0.49232483
+1864	 -6.25515436	 -0.00165214	  0.00101064	  7.25350222	  0.99494148	  0.99733722  0.49232688
+1865	 -6.25521333	 -0.00165127	  0.00101012	  7.25356206	  0.99494415	  0.99733860  0.49232894
+1866	 -6.25527209	 -0.00165041	  0.00100961	  7.25362168	  0.99494682	  0.99733998  0.49233097
+1867	 -6.25533063	 -0.00164955	  0.00100909	  7.25368108	  0.99494949	  0.99734136  0.49233301
+1868	 -6.25538897	 -0.00164869	  0.00100857	  7.25374028	  0.99495215	  0.99734274  0.49233504
+1869	 -6.25544710	 -0.00164783	  0.00100806	  7.25379927	  0.99495481	  0.99734412  0.49233704
+1870	 -6.25550502	 -0.00164697	  0.00100754	  7.25385805	  0.99495747	  0.99734549  0.49233906
+1871	 -6.25556273	 -0.00164611	  0.00100702	  7.25391662	  0.99496012	  0.99734687  0.49234107
+1872	 -6.25562024	 -0.00164525	  0.00100651	  7.25397499	  0.99496278	  0.99734824  0.49234308
+1873	 -6.25567754	 -0.00164440	  0.00100599	  7.25403314	  0.99496543	  0.99734961  0.49234506
+1874	 -6.25573464	 -0.00164354	  0.00100548	  7.25409110	  0.99496807	  0.99735098  0.49234706
+1875	 -6.25579153	 -0.00164268	  0.00100497	  7.25414884	  0.99497072	  0.99735235  0.49234904
+1876	 -6.25584821	 -0.00164183	  0.00100445	  7.25420638	  0.99497336	  0.99735372  0.49235101
+1877	 -6.25590470	 -0.00164098	  0.00100394	  7.25426372	  0.99497600	  0.99735508  0.49235297
+1878	 -6.25596098	 -0.00164012	  0.00100343	  7.25432086	  0.99497863	  0.99735645  0.49235495
+1879	 -6.25601706	 -0.00163927	  0.00100292	  7.25437779	  0.99498127	  0.99735781  0.49235690
+1880	 -6.25607294	 -0.00163842	  0.00100241	  7.25443452	  0.99498390	  0.99735917  0.49235884
+1881	 -6.25612862	 -0.00163757	  0.00100189	  7.25449105	  0.99498652	  0.99736053  0.49236079
+1882	 -6.25618410	 -0.00163672	  0.00100138	  7.25454738	  0.99498915	  0.99736189  0.49236272
+1883	 -6.25623938	 -0.00163587	  0.00100087	  7.25460351	  0.99499177	  0.99736325  0.49236466
+1884	 -6.25629447	 -0.00163503	  0.00100036	  7.25465944	  0.99499439	  0.99736461  0.49236658
+1885	 -6.25634936	 -0.00163418	  0.00099986	  7.25471518	  0.99499701	  0.99736596  0.49236850
+1886	 -6.25640405	 -0.00163333	  0.00099935	  7.25477071	  0.99499963	  0.99736732  0.49237042
+1887	 -6.25645854	 -0.00163249	  0.00099884	  7.25482605	  0.99500224	  0.99736867  0.49237232
+1888	 -6.25651284	 -0.00163164	  0.00099833	  7.25488119	  0.99500485	  0.99737002  0.49237422
+1889	 -6.25656694	 -0.00163080	  0.00099782	  7.25493614	  0.99500745	  0.99737137  0.49237612
+1890	 -6.25662085	 -0.00162996	  0.00099732	  7.25499089	  0.99501006	  0.99737272  0.49237800
+1891	 -6.25667457	 -0.00162912	  0.00099681	  7.25504545	  0.99501266	  0.99737407  0.49237989
+1892	 -6.25672809	 -0.00162828	  0.00099631	  7.25509982	  0.99501526	  0.99737542  0.49238176
+1893	 -6.25678143	 -0.00162744	  0.00099580	  7.25515399	  0.99501786	  0.99737676  0.49238364
+1894	 -6.25683457	 -0.00162660	  0.00099530	  7.25520797	  0.99502045	  0.99737811  0.49238550
+1895	 -6.25688752	 -0.00162576	  0.00099479	  7.25526176	  0.99502304	  0.99737945  0.49238736
+1896	 -6.25694028	 -0.00162492	  0.00099429	  7.25531536	  0.99502563	  0.99738079  0.49238921
+1897	 -6.25699285	 -0.00162408	  0.00099378	  7.25536877	  0.99502822	  0.99738213  0.49239105
+1898	 -6.25704524	 -0.00162325	  0.00099328	  7.25542199	  0.99503080	  0.99738347  0.49239289
+1899	 -6.25709743	 -0.00162241	  0.00099278	  7.25547502	  0.99503338	  0.99738481  0.49239473
+1900	 -6.25714944	 -0.00162158	  0.00099228	  7.25552786	  0.99503596	  0.99738615  0.49239656
+1901	 -6.25720127	 -0.00162074	  0.00099177	  7.25558052	  0.99503853	  0.99738748  0.49239838
+1902	 -6.25725290	 -0.00161991	  0.00099127	  7.25563299	  0.99504111	  0.99738881  0.49240020
+1903	 -6.25730435	 -0.00161908	  0.00099077	  7.25568527	  0.99504368	  0.99739015  0.49240201
+1904	 -6.25735562	 -0.00161825	  0.00099027	  7.25573737	  0.99504625	  0.99739148  0.49240381
+1905	 -6.25740670	 -0.00161742	  0.00098977	  7.25578929	  0.99504881	  0.99739281  0.49240561
+1906	 -6.25745761	 -0.00161659	  0.00098927	  7.25584102	  0.99505137	  0.99739414  0.49240741
+1907	 -6.25750832	 -0.00161576	  0.00098877	  7.25589256	  0.99505393	  0.99739547  0.49240919
+1908	 -6.25755886	 -0.00161493	  0.00098828	  7.25594393	  0.99505649	  0.99739679  0.49241098
+1909	 -6.25760921	 -0.00161411	  0.00098778	  7.25599511	  0.99505905	  0.99739812  0.49241276
+1910	 -6.25765939	 -0.00161328	  0.00098728	  7.25604611	  0.99506160	  0.99739944  0.49241453
+1911	 -6.25770938	 -0.00161245	  0.00098678	  7.25609693	  0.99506415	  0.99740076  0.49241630
+1912	 -6.25775920	 -0.00161163	  0.00098629	  7.25614757	  0.99506670	  0.99740209  0.49241806
+1913	 -6.25780883	 -0.00161080	  0.00098579	  7.25619803	  0.99506924	  0.99740341  0.49241981
+1914	 -6.25785829	 -0.00160998	  0.00098529	  7.25624831	  0.99507179	  0.99740472  0.49242156
+1915	 -6.25790757	 -0.00160916	  0.00098480	  7.25629841	  0.99507433	  0.99740604  0.49242330
+1916	 -6.25795667	 -0.00160834	  0.00098430	  7.25634834	  0.99507686	  0.99740736  0.49242504
+1917	 -6.25800560	 -0.00160752	  0.00098381	  7.25639808	  0.99507940	  0.99740867  0.49242678
+1918	 -6.25805435	 -0.00160670	  0.00098332	  7.25644766	  0.99508193	  0.99740999  0.49242849
+1919	 -6.25810293	 -0.00160588	  0.00098282	  7.25649705	  0.99508446	  0.99741130  0.49243022
+1920	 -6.25815133	 -0.00160506	  0.00098233	  7.25654627	  0.99508699	  0.99741261  0.49243193
+1921	 -6.25819956	 -0.00160424	  0.00098184	  7.25659532	  0.99508951	  0.99741392  0.49243365
+1922	 -6.25824762	 -0.00160342	  0.00098134	  7.25664419	  0.99509203	  0.99741523  0.49243535
+1923	 -6.25829550	 -0.00160261	  0.00098085	  7.25669289	  0.99509455	  0.99741654  0.49243704
+1924	 -6.25834321	 -0.00160179	  0.00098036	  7.25674142	  0.99509707	  0.99741784  0.49243875
+1925	 -6.25839075	 -0.00160098	  0.00097987	  7.25678978	  0.99509959	  0.99741915  0.49244043
+1926	 -6.25843812	 -0.00160017	  0.00097938	  7.25683796	  0.99510210	  0.99742045  0.49244213
+1927	 -6.25848532	 -0.00159935	  0.00097889	  7.25688597	  0.99510461	  0.99742176  0.49244379
+1928	 -6.25853235	 -0.00159854	  0.00097840	  7.25693381	  0.99510712	  0.99742306  0.49244547
+1929	 -6.25857922	 -0.00159773	  0.00097791	  7.25698149	  0.99510962	  0.99742436  0.49244714
+1930	 -6.25862591	 -0.00159692	  0.00097742	  7.25702899	  0.99511212	  0.99742566  0.49244880
+1931	 -6.25867244	 -0.00159611	  0.00097693	  7.25707633	  0.99511462	  0.99742696  0.49245046
+1932	 -6.25871879	 -0.00159530	  0.00097645	  7.25712350	  0.99511712	  0.99742825  0.49245210
+1933	 -6.25876499	 -0.00159449	  0.00097596	  7.25717050	  0.99511962	  0.99742955  0.49245376
+1934	 -6.25881101	 -0.00159368	  0.00097547	  7.25721733	  0.99512211	  0.99743084  0.49245539
+1935	 -6.25885688	 -0.00159288	  0.00097499	  7.25726400	  0.99512460	  0.99743214  0.49245702
+1936	 -6.25890257	 -0.00159207	  0.00097450	  7.25731050	  0.99512709	  0.99743343  0.49245866
+1937	 -6.25894810	 -0.00159127	  0.00097402	  7.25735684	  0.99512957	  0.99743472  0.49246028
+1938	 -6.25899347	 -0.00159046	  0.00097353	  7.25740301	  0.99513205	  0.99743601  0.49246190
+1939	 -6.25903868	 -0.00158966	  0.00097305	  7.25744902	  0.99513453	  0.99743730  0.49246352
+1940	 -6.25908372	 -0.00158886	  0.00097256	  7.25749487	  0.99513701	  0.99743858  0.49246513
+1941	 -6.25912861	 -0.00158805	  0.00097208	  7.25754055	  0.99513949	  0.99743987  0.49246673
+1942	 -6.25917333	 -0.00158725	  0.00097159	  7.25758607	  0.99514196	  0.99744115  0.49246833
+1943	 -6.25921789	 -0.00158645	  0.00097111	  7.25763144	  0.99514443	  0.99744244  0.49246993
+1944	 -6.25926229	 -0.00158565	  0.00097063	  7.25767664	  0.99514690	  0.99744372  0.49247152
+1945	 -6.25930653	 -0.00158485	  0.00097015	  7.25772168	  0.99514936	  0.99744500  0.49247309
+1946	 -6.25935061	 -0.00158406	  0.00096966	  7.25776656	  0.99515183	  0.99744628  0.49247468
+1947	 -6.25939453	 -0.00158326	  0.00096918	  7.25781128	  0.99515429	  0.99744756  0.49247625
+1948	 -6.25943830	 -0.00158246	  0.00096870	  7.25785584	  0.99515675	  0.99744884  0.49247782
+1949	 -6.25948191	 -0.00158167	  0.00096822	  7.25790024	  0.99515920	  0.99745011  0.49247939
+1950	 -6.25952536	 -0.00158087	  0.00096774	  7.25794449	  0.99516165	  0.99745139  0.49248095
+1951	 -6.25956866	 -0.00158008	  0.00096726	  7.25798858	  0.99516411	  0.99745266  0.49248251
+1952	 -6.25961180	 -0.00157928	  0.00096678	  7.25803252	  0.99516655	  0.99745393  0.49248405
+1953	 -6.25965478	 -0.00157849	  0.00096631	  7.25807629	  0.99516900	  0.99745521  0.49248560
+1954	 -6.25969761	 -0.00157770	  0.00096583	  7.25811992	  0.99517144	  0.99745648  0.49248715
+1955	 -6.25974029	 -0.00157691	  0.00096535	  7.25816339	  0.99517389	  0.99745774  0.49248867
+1956	 -6.25978282	 -0.00157612	  0.00096487	  7.25820670	  0.99517633	  0.99745901  0.49249021
+1957	 -6.25982519	 -0.00157533	  0.00096440	  7.25824986	  0.99517876	  0.99746028  0.49249174
+1958	 -6.25986741	 -0.00157454	  0.00096392	  7.25829287	  0.99518120	  0.99746154  0.49249325
+1959	 -6.25990947	 -0.00157375	  0.00096344	  7.25833572	  0.99518363	  0.99746281  0.49249477
+1960	 -6.25995139	 -0.00157296	  0.00096297	  7.25837843	  0.99518606	  0.99746407  0.49249628
+1961	 -6.25999315	 -0.00157217	  0.00096249	  7.25842098	  0.99518848	  0.99746533  0.49249779
+1962	 -6.26003477	 -0.00157139	  0.00096202	  7.25846338	  0.99519091	  0.99746659  0.49249929
+1963	 -6.26007624	 -0.00157060	  0.00096154	  7.25850563	  0.99519333	  0.99746785  0.49250079
+1964	 -6.26011755	 -0.00156982	  0.00096107	  7.25854773	  0.99519575	  0.99746911  0.49250228
+1965	 -6.26015872	 -0.00156903	  0.00096060	  7.25858969	  0.99519817	  0.99747037  0.49250377
+1966	 -6.26019974	 -0.00156825	  0.00096012	  7.25863149	  0.99520058	  0.99747163  0.49250524
+1967	 -6.26024061	 -0.00156747	  0.00095965	  7.25867315	  0.99520300	  0.99747288  0.49250672
+1968	 -6.26028134	 -0.00156669	  0.00095918	  7.25871465	  0.99520541	  0.99747414  0.49250819
+1969	 -6.26032192	 -0.00156591	  0.00095871	  7.25875601	  0.99520782	  0.99747539  0.49250967
+1970	 -6.26036235	 -0.00156513	  0.00095823	  7.25879723	  0.99521022	  0.99747664  0.49251114
+1971	 -6.26040264	 -0.00156435	  0.00095776	  7.25883830	  0.99521263	  0.99747789  0.49251259
+1972	 -6.26044279	 -0.00156357	  0.00095729	  7.25887922	  0.99521503	  0.99747914  0.49251404
+1973	 -6.26048279	 -0.00156279	  0.00095682	  7.25892000	  0.99521743	  0.99748039  0.49251549
+1974	 -6.26052264	 -0.00156201	  0.00095635	  7.25896063	  0.99521982	  0.99748163  0.49251694
+1975	 -6.26056235	 -0.00156124	  0.00095588	  7.25900112	  0.99522222	  0.99748288  0.49251838
+1976	 -6.26060192	 -0.00156046	  0.00095542	  7.25904146	  0.99522461	  0.99748412  0.49251982
+1977	 -6.26064135	 -0.00155969	  0.00095495	  7.25908167	  0.99522700	  0.99748537  0.49252125
+1978	 -6.26068064	 -0.00155891	  0.00095448	  7.25912173	  0.99522939	  0.99748661  0.49252269
+1979	 -6.26071978	 -0.00155814	  0.00095401	  7.25916164	  0.99523177	  0.99748785  0.49252410
+1980	 -6.26075879	 -0.00155737	  0.00095354	  7.25920142	  0.99523415	  0.99748909  0.49252552
+1981	 -6.26079765	 -0.00155659	  0.00095308	  7.25924106	  0.99523653	  0.99749033  0.49252694
+1982	 -6.26083637	 -0.00155582	  0.00095261	  7.25928055	  0.99523891	  0.99749157  0.49252834
+1983	 -6.26087496	 -0.00155505	  0.00095215	  7.25931991	  0.99524129	  0.99749280  0.49252975
+1984	 -6.26091341	 -0.00155428	  0.00095168	  7.25935912	  0.99524366	  0.99749404  0.49253116
+1985	 -6.26095171	 -0.00155351	  0.00095122	  7.25939820	  0.99524603	  0.99749527  0.49253255
+1986	 -6.26098988	 -0.00155274	  0.00095075	  7.25943714	  0.99524840	  0.99749651  0.49253394
+1987	 -6.26102792	 -0.00155198	  0.00095029	  7.25947594	  0.99525077	  0.99749774  0.49253533
+1988	 -6.26106581	 -0.00155121	  0.00094982	  7.25951460	  0.99525313	  0.99749897  0.49253672
+1989	 -6.26110357	 -0.00155044	  0.00094936	  7.25955313	  0.99525549	  0.99750020  0.49253810
+1990	 -6.26114120	 -0.00154968	  0.00094890	  7.25959152	  0.99525785	  0.99750143  0.49253947
+1991	 -6.26117869	 -0.00154891	  0.00094843	  7.25962977	  0.99526021	  0.99750265  0.49254085
+1992	 -6.26121604	 -0.00154815	  0.00094797	  7.25966789	  0.99526256	  0.99750388  0.49254220
+1993	 -6.26125326	 -0.00154739	  0.00094751	  7.25970587	  0.99526492	  0.99750510  0.49254357
+1994	 -6.26129035	 -0.00154662	  0.00094705	  7.25974372	  0.99526727	  0.99750633  0.49254493
+1995	 -6.26132730	 -0.00154586	  0.00094659	  7.25978144	  0.99526962	  0.99750755  0.49254628
+1996	 -6.26136412	 -0.00154510	  0.00094613	  7.25981902	  0.99527196	  0.99750877  0.49254763
+1997	 -6.26140081	 -0.00154434	  0.00094567	  7.25985647	  0.99527431	  0.99750999  0.49254897
+1998	 -6.26143736	 -0.00154358	  0.00094521	  7.25989378	  0.99527665	  0.99751121  0.49255032
+1999	 -6.26147379	 -0.00154282	  0.00094475	  7.25993097	  0.99527899	  0.99751243  0.49255166
+2000	 -6.26151008	 -0.00154206	  0.00094429	  7.25996802	  0.99528132	  0.99751365  0.49255299
+2001	 -6.26154624	 -0.00154131	  0.00094383	  7.26000494	  0.99528366	  0.99751486  0.49255432
+2002	 -6.26158228	 -0.00154055	  0.00094337	  7.26004173	  0.99528599	  0.99751608  0.49255564
+2003	 -6.26161818	 -0.00153979	  0.00094292	  7.26007839	  0.99528832	  0.99751729  0.49255696
+2004	 -6.26165395	 -0.00153904	  0.00094246	  7.26011492	  0.99529065	  0.99751851  0.49255828
+2005	 -6.26168960	 -0.00153828	  0.00094200	  7.26015132	  0.99529297	  0.99751972  0.49255958
+2006	 -6.26172512	 -0.00153753	  0.00094155	  7.26018759	  0.99529530	  0.99752093  0.49256090
+2007	 -6.26176051	 -0.00153677	  0.00094109	  7.26022373	  0.99529762	  0.99752214  0.49256219
+2008	 -6.26179577	 -0.00153602	  0.00094063	  7.26025975	  0.99529994	  0.99752334  0.49256349
+2009	 -6.26183090	 -0.00153527	  0.00094018	  7.26029563	  0.99530226	  0.99752455  0.49256478
+2010	 -6.26186591	 -0.00153452	  0.00093972	  7.26033139	  0.99530457	  0.99752576  0.49256609
+2011	 -6.26190080	 -0.00153377	  0.00093927	  7.26036703	  0.99530688	  0.99752696  0.49256738
+2012	 -6.26193555	 -0.00153302	  0.00093882	  7.26040254	  0.99530919	  0.99752817  0.49256866
+2013	 -6.26197019	 -0.00153227	  0.00093836	  7.26043792	  0.99531150	  0.99752937  0.49256993
+2014	 -6.26200470	 -0.00153152	  0.00093791	  7.26047317	  0.99531381	  0.99753057  0.49257121
+2015	 -6.26203908	 -0.00153077	  0.00093746	  7.26050831	  0.99531611	  0.99753177  0.49257249
+2016	 -6.26207334	 -0.00153003	  0.00093700	  7.26054331	  0.99531841	  0.99753297  0.49257375
+2017	 -6.26210748	 -0.00152928	  0.00093655	  7.26057820	  0.99532071	  0.99753417  0.49257501
+2018	 -6.26214149	 -0.00152853	  0.00093610	  7.26061296	  0.99532301	  0.99753537  0.49257629
+2019	 -6.26217539	 -0.00152779	  0.00093565	  7.26064760	  0.99532530	  0.99753656  0.49257754
+2020	 -6.26220916	 -0.00152705	  0.00093520	  7.26068211	  0.99532759	  0.99753776  0.49257879
+2021	 -6.26224280	 -0.00152630	  0.00093475	  7.26071650	  0.99532988	  0.99753895  0.49258003
+2022	 -6.26227633	 -0.00152556	  0.00093430	  7.26075077	  0.99533217	  0.99754014  0.49258128
+2023	 -6.26230974	 -0.00152482	  0.00093385	  7.26078492	  0.99533446	  0.99754133  0.49258252
+2024	 -6.26234303	 -0.00152408	  0.00093340	  7.26081895	  0.99533674	  0.99754253  0.49258376
+2025	 -6.26237620	 -0.00152333	  0.00093295	  7.26085286	  0.99533902	  0.99754372  0.49258498
+2026	 -6.26240924	 -0.00152259	  0.00093250	  7.26088665	  0.99534130	  0.99754490  0.49258622
+2027	 -6.26244217	 -0.00152186	  0.00093205	  7.26092032	  0.99534358	  0.99754609  0.49258745
+2028	 -6.26247499	 -0.00152112	  0.00093161	  7.26095387	  0.99534586	  0.99754728  0.49258868
+2029	 -6.26250768	 -0.00152038	  0.00093116	  7.26098730	  0.99534813	  0.99754846  0.49258989
+2030	 -6.26254025	 -0.00151964	  0.00093071	  7.26102061	  0.99535040	  0.99754965  0.49259110
+2031	 -6.26257271	 -0.00151890	  0.00093027	  7.26105381	  0.99535267	  0.99755083  0.49259230
+2032	 -6.26260505	 -0.00151817	  0.00092982	  7.26108689	  0.99535493	  0.99755201  0.49259351
+2033	 -6.26263728	 -0.00151743	  0.00092937	  7.26111985	  0.99535720	  0.99755319  0.49259471
+2034	 -6.26266939	 -0.00151670	  0.00092893	  7.26115269	  0.99535946	  0.99755437  0.49259592
+2035	 -6.26270138	 -0.00151596	  0.00092848	  7.26118542	  0.99536172	  0.99755555  0.49259711
+2036	 -6.26273326	 -0.00151523	  0.00092804	  7.26121803	  0.99536398	  0.99755673  0.49259829
+2037	 -6.26276503	 -0.00151450	  0.00092760	  7.26125053	  0.99536623	  0.99755790  0.49259950
+2038	 -6.26279668	 -0.00151377	  0.00092715	  7.26128291	  0.99536849	  0.99755908  0.49260067
+2039	 -6.26282822	 -0.00151304	  0.00092671	  7.26131518	  0.99537074	  0.99756025  0.49260186
+2040	 -6.26285964	 -0.00151231	  0.00092627	  7.26134733	  0.99537299	  0.99756143  0.49260303
+2041	 -6.26289095	 -0.00151158	  0.00092582	  7.26137937	  0.99537524	  0.99756260  0.49260421
+2042	 -6.26292215	 -0.00151085	  0.00092538	  7.26141130	  0.99537748	  0.99756377  0.49260538
+2043	 -6.26295323	 -0.00151012	  0.00092494	  7.26144311	  0.99537972	  0.99756494  0.49260653
+2044	 -6.26298421	 -0.00150939	  0.00092450	  7.26147481	  0.99538196	  0.99756611  0.49260770
+2045	 -6.26301507	 -0.00150866	  0.00092406	  7.26150640	  0.99538420	  0.99756728  0.49260887
+2046	 -6.26304582	 -0.00150794	  0.00092362	  7.26153788	  0.99538644	  0.99756844  0.49261002
+2047	 -6.26307646	 -0.00150721	  0.00092318	  7.26156925	  0.99538867	  0.99756961  0.49261117
+2048	 -6.26310699	 -0.00150649	  0.00092274	  7.26160050	  0.99539091	  0.99757078  0.49261231
+2049	 -6.26313741	 -0.00150576	  0.00092230	  7.26163165	  0.99539314	  0.99757194  0.49261347
+2050	 -6.26316772	 -0.00150504	  0.00092186	  7.26166269	  0.99539536	  0.99757310  0.49261461
+2051	 -6.26319793	 -0.00150431	  0.00092142	  7.26169361	  0.99539759	  0.99757426  0.49261575
+2052	 -6.26322802	 -0.00150359	  0.00092098	  7.26172443	  0.99539981	  0.99757542  0.49261688
+2053	 -6.26325801	 -0.00150287	  0.00092055	  7.26175513	  0.99540204	  0.99757658  0.49261801
+2054	 -6.26328788	 -0.00150215	  0.00092011	  7.26178573	  0.99540426	  0.99757774  0.49261913
+2055	 -6.26331765	 -0.00150143	  0.00091967	  7.26181623	  0.99540647	  0.99757890  0.49262025
+2056	 -6.26334732	 -0.00150071	  0.00091924	  7.26184661	  0.99540869	  0.99758006  0.49262138
+2057	 -6.26337687	 -0.00149999	  0.00091880	  7.26187688	  0.99541090	  0.99758121  0.49262250
+2058	 -6.26340633	 -0.00149927	  0.00091836	  7.26190705	  0.99541311	  0.99758236  0.49262361
+2059	 -6.26343567	 -0.00149855	  0.00091793	  7.26193712	  0.99541532	  0.99758352  0.49262472
+2060	 -6.26346491	 -0.00149784	  0.00091749	  7.26196707	  0.99541753	  0.99758467  0.49262583
+2061	 -6.26349404	 -0.00149712	  0.00091706	  7.26199692	  0.99541974	  0.99758582  0.49262693
+2062	 -6.26352307	 -0.00149640	  0.00091662	  7.26202667	  0.99542194	  0.99758697  0.49262803
+2063	 -6.26355200	 -0.00149569	  0.00091619	  7.26205631	  0.99542414	  0.99758812  0.49262913
+2064	 -6.26358082	 -0.00149498	  0.00091576	  7.26208585	  0.99542634	  0.99758927  0.49263021
+2065	 -6.26360954	 -0.00149426	  0.00091532	  7.26211528	  0.99542854	  0.99759042  0.49263131
+2066	 -6.26363815	 -0.00149355	  0.00091489	  7.26214460	  0.99543073	  0.99759156  0.49263239
+2067	 -6.26366666	 -0.00149284	  0.00091446	  7.26217383	  0.99543292	  0.99759271  0.49263348
+2068	 -6.26369507	 -0.00149212	  0.00091403	  7.26220295	  0.99543511	  0.99759385  0.49263456
+2069	 -6.26372338	 -0.00149141	  0.00091359	  7.26223197	  0.99543730	  0.99759499  0.49263563
+2070	 -6.26375159	 -0.00149070	  0.00091316	  7.26226088	  0.99543949	  0.99759613  0.49263671
+2071	 -6.26377969	 -0.00148999	  0.00091273	  7.26228970	  0.99544167	  0.99759728  0.49263778
+2072	 -6.26380769	 -0.00148928	  0.00091230	  7.26231841	  0.99544386	  0.99759841  0.49263884
+2073	 -6.26383560	 -0.00148857	  0.00091187	  7.26234702	  0.99544604	  0.99759955  0.49263991
+2074	 -6.26386340	 -0.00148787	  0.00091144	  7.26237553	  0.99544821	  0.99760069  0.49264097
+2075	 -6.26389110	 -0.00148716	  0.00091101	  7.26240394	  0.99545039	  0.99760183  0.49264203
+2076	 -6.26391870	 -0.00148645	  0.00091058	  7.26243225	  0.99545257	  0.99760296  0.49264308
+2077	 -6.26394621	 -0.00148575	  0.00091016	  7.26246046	  0.99545474	  0.99760410  0.49264413
+2078	 -6.26397361	 -0.00148504	  0.00090973	  7.26248857	  0.99545691	  0.99760523  0.49264518
+2079	 -6.26400092	 -0.00148434	  0.00090930	  7.26251658	  0.99545908	  0.99760636  0.49264622
+2080	 -6.26402813	 -0.00148363	  0.00090887	  7.26254449	  0.99546124	  0.99760750  0.49264726
+2081	 -6.26405524	 -0.00148293	  0.00090844	  7.26257231	  0.99546341	  0.99760863  0.49264830
+2082	 -6.26408225	 -0.00148223	  0.00090802	  7.26260002	  0.99546557	  0.99760976  0.49264934
+2083	 -6.26410916	 -0.00148152	  0.00090759	  7.26262764	  0.99546773	  0.99761088  0.49265036
+2084	 -6.26413598	 -0.00148082	  0.00090717	  7.26265516	  0.99546989	  0.99761201  0.49265140
+2085	 -6.26416271	 -0.00148012	  0.00090674	  7.26268258	  0.99547204	  0.99761314  0.49265242
+2086	 -6.26418933	 -0.00147942	  0.00090631	  7.26270991	  0.99547420	  0.99761426  0.49265345
+2087	 -6.26421586	 -0.00147872	  0.00090589	  7.26273714	  0.99547635	  0.99761539  0.49265447
+2088	 -6.26424230	 -0.00147802	  0.00090547	  7.26276428	  0.99547850	  0.99761651  0.49265547
+2089	 -6.26426864	 -0.00147733	  0.00090504	  7.26279132	  0.99548065	  0.99761763  0.49265649
+2090	 -6.26429489	 -0.00147663	  0.00090462	  7.26281826	  0.99548279	  0.99761875  0.49265751
+2091	 -6.26432104	 -0.00147593	  0.00090419	  7.26284511	  0.99548494	  0.99761987  0.49265851
+2092	 -6.26434710	 -0.00147523	  0.00090377	  7.26287186	  0.99548708	  0.99762099  0.49265951
+2093	 -6.26437306	 -0.00147454	  0.00090335	  7.26289852	  0.99548922	  0.99762211  0.49266051
+2094	 -6.26439893	 -0.00147384	  0.00090293	  7.26292509	  0.99549136	  0.99762323  0.49266151
+2095	 -6.26442471	 -0.00147315	  0.00090250	  7.26295156	  0.99549349	  0.99762435  0.49266249
+2096	 -6.26445040	 -0.00147246	  0.00090208	  7.26297794	  0.99549563	  0.99762546  0.49266350
+2097	 -6.26447599	 -0.00147176	  0.00090166	  7.26300423	  0.99549776	  0.99762658  0.49266448
+2098	 -6.26450150	 -0.00147107	  0.00090124	  7.26303043	  0.99549989	  0.99762769  0.49266547
+2099	 -6.26452691	 -0.00147038	  0.00090082	  7.26305653	  0.99550202	  0.99762880  0.49266646
+2100	 -6.26455222	 -0.00146969	  0.00090040	  7.26308254	  0.99550415	  0.99762991  0.49266744
+2101	 -6.26457745	 -0.00146900	  0.00089998	  7.26310846	  0.99550627	  0.99763102  0.49266841
+2102	 -6.26460259	 -0.00146831	  0.00089956	  7.26313428	  0.99550839	  0.99763213  0.49266939
+2103	 -6.26462764	 -0.00146762	  0.00089914	  7.26316002	  0.99551051	  0.99763324  0.49267035
+2104	 -6.26465259	 -0.00146693	  0.00089872	  7.26318567	  0.99551263	  0.99763435  0.49267132
+2105	 -6.26467746	 -0.00146624	  0.00089831	  7.26321122	  0.99551475	  0.99763545  0.49267230
+2106	 -6.26470224	 -0.00146555	  0.00089789	  7.26323669	  0.99551686	  0.99763656  0.49267325
+2107	 -6.26472693	 -0.00146486	  0.00089747	  7.26326207	  0.99551898	  0.99763766  0.49267421
+2108	 -6.26475153	 -0.00146418	  0.00089705	  7.26328735	  0.99552109	  0.99763877  0.49267517
+2109	 -6.26477604	 -0.00146349	  0.00089664	  7.26331255	  0.99552319	  0.99763987  0.49267611
+2110	 -6.26480047	 -0.00146281	  0.00089622	  7.26333766	  0.99552530	  0.99764097  0.49267707
+2111	 -6.26482481	 -0.00146212	  0.00089580	  7.26336268	  0.99552741	  0.99764207  0.49267802
+2112	 -6.26484906	 -0.00146144	  0.00089539	  7.26338762	  0.99552951	  0.99764317  0.49267897
+2113	 -6.26487322	 -0.00146076	  0.00089497	  7.26341246	  0.99553161	  0.99764427  0.49267991
+2114	 -6.26489730	 -0.00146007	  0.00089456	  7.26343722	  0.99553371	  0.99764537  0.49268085
+2115	 -6.26492129	 -0.00145939	  0.00089414	  7.26346189	  0.99553581	  0.99764646  0.49268179
+2116	 -6.26494519	 -0.00145871	  0.00089373	  7.26348648	  0.99553790	  0.99764756  0.49268272
+2117	 -6.26496901	 -0.00145803	  0.00089332	  7.26351098	  0.99553999	  0.99764865  0.49268365
+2118	 -6.26499274	 -0.00145735	  0.00089290	  7.26353539	  0.99554209	  0.99764975  0.49268458
+2119	 -6.26501639	 -0.00145667	  0.00089249	  7.26355972	  0.99554417	  0.99765084  0.49268549
+2120	 -6.26503995	 -0.00145599	  0.00089208	  7.26358396	  0.99554626	  0.99765193  0.49268643
+2121	 -6.26506343	 -0.00145531	  0.00089166	  7.26360811	  0.99554835	  0.99765302  0.49268735
+2122	 -6.26508682	 -0.00145463	  0.00089125	  7.26363219	  0.99555043	  0.99765411  0.49268826
+2123	 -6.26511013	 -0.00145396	  0.00089084	  7.26365617	  0.99555251	  0.99765520  0.49268918
+2124	 -6.26513336	 -0.00145328	  0.00089043	  7.26368008	  0.99555459	  0.99765629  0.49269008
+2125	 -6.26515650	 -0.00145261	  0.00089002	  7.26370389	  0.99555667	  0.99765738  0.49269099
+2126	 -6.26517956	 -0.00145193	  0.00088961	  7.26372763	  0.99555875	  0.99765846  0.49269190
+2127	 -6.26520254	 -0.00145126	  0.00088920	  7.26375128	  0.99556082	  0.99765955  0.49269281
+2128	 -6.26522543	 -0.00145058	  0.00088879	  7.26377485	  0.99556289	  0.99766063  0.49269370
+2129	 -6.26524824	 -0.00144991	  0.00088838	  7.26379834	  0.99556496	  0.99766171  0.49269460
+2130	 -6.26527098	 -0.00144924	  0.00088797	  7.26382174	  0.99556703	  0.99766280  0.49269550
+2131	 -6.26529363	 -0.00144856	  0.00088756	  7.26384506	  0.99556910	  0.99766388  0.49269640
+2132	 -6.26531619	 -0.00144789	  0.00088715	  7.26386830	  0.99557116	  0.99766496  0.49269728
+2133	 -6.26533868	 -0.00144722	  0.00088674	  7.26389146	  0.99557323	  0.99766604  0.49269817
+2134	 -6.26536109	 -0.00144655	  0.00088634	  7.26391454	  0.99557529	  0.99766711  0.49269905
+2135	 -6.26538341	 -0.00144588	  0.00088593	  7.26393753	  0.99557735	  0.99766819  0.49269994
+2136	 -6.26540566	 -0.00144521	  0.00088552	  7.26396045	  0.99557940	  0.99766927  0.49270083
+2137	 -6.26542783	 -0.00144454	  0.00088511	  7.26398329	  0.99558146	  0.99767034  0.49270168
+2138	 -6.26544992	 -0.00144387	  0.00088471	  7.26400604	  0.99558351	  0.99767142  0.49270256
+2139	 -6.26547192	 -0.00144321	  0.00088430	  7.26402872	  0.99558556	  0.99767249  0.49270344
+2140	 -6.26549385	 -0.00144254	  0.00088390	  7.26405131	  0.99558761	  0.99767356  0.49270431
+2141	 -6.26551570	 -0.00144187	  0.00088349	  7.26407383	  0.99558966	  0.99767463  0.49270518
+2142	 -6.26553748	 -0.00144121	  0.00088309	  7.26409627	  0.99559171	  0.99767571  0.49270604
+2143	 -6.26555917	 -0.00144054	  0.00088268	  7.26411863	  0.99559375	  0.99767678  0.49270690
+2144	 -6.26558079	 -0.00143988	  0.00088228	  7.26414091	  0.99559579	  0.99767784  0.49270776
+2145	 -6.26560233	 -0.00143922	  0.00088187	  7.26416311	  0.99559783	  0.99767891  0.49270862
+2146	 -6.26562379	 -0.00143855	  0.00088147	  7.26418524	  0.99559987	  0.99767998  0.49270947
+2147	 -6.26564518	 -0.00143789	  0.00088107	  7.26420729	  0.99560191	  0.99768104  0.49271032
+2148	 -6.26566648	 -0.00143723	  0.00088066	  7.26422926	  0.99560394	  0.99768211  0.49271118
+2149	 -6.26568772	 -0.00143657	  0.00088026	  7.26425115	  0.99560598	  0.99768317  0.49271202
+2150	 -6.26570887	 -0.00143590	  0.00087986	  7.26427297	  0.99560801	  0.99768424  0.49271286
+2151	 -6.26572995	 -0.00143524	  0.00087946	  7.26429471	  0.99561004	  0.99768530  0.49271371
+2152	 -6.26575096	 -0.00143458	  0.00087906	  7.26431637	  0.99561206	  0.99768636  0.49271455
+2153	 -6.26577189	 -0.00143393	  0.00087865	  7.26433796	  0.99561409	  0.99768742  0.49271537
+2154	 -6.26579274	 -0.00143327	  0.00087825	  7.26435948	  0.99561611	  0.99768848  0.49271621
+2155	 -6.26581352	 -0.00143261	  0.00087785	  7.26438092	  0.99561813	  0.99768954  0.49271704
+2156	 -6.26583423	 -0.00143195	  0.00087745	  7.26440228	  0.99562015	  0.99769059  0.49271787
+2157	 -6.26585486	 -0.00143130	  0.00087705	  7.26442357	  0.99562217	  0.99769165  0.49271871
+2158	 -6.26587542	 -0.00143064	  0.00087665	  7.26444478	  0.99562419	  0.99769271  0.49271954
+2159	 -6.26589591	 -0.00142998	  0.00087626	  7.26446592	  0.99562620	  0.99769376  0.49272035
+2160	 -6.26591632	 -0.00142933	  0.00087586	  7.26448699	  0.99562822	  0.99769482  0.49272117
+2161	 -6.26593666	 -0.00142867	  0.00087546	  7.26450798	  0.99563023	  0.99769587  0.49272198
+2162	 -6.26595692	 -0.00142802	  0.00087506	  7.26452890	  0.99563224	  0.99769692  0.49272279
+2163	 -6.26597711	 -0.00142737	  0.00087466	  7.26454975	  0.99563424	  0.99769797  0.49272362
+2164	 -6.26599724	 -0.00142671	  0.00087426	  7.26457052	  0.99563625	  0.99769902  0.49272441
+2165	 -6.26601728	 -0.00142606	  0.00087387	  7.26459122	  0.99563825	  0.99770007  0.49272522
+2166	 -6.26603726	 -0.00142541	  0.00087347	  7.26461185	  0.99564025	  0.99770112  0.49272604
+2167	 -6.26605717	 -0.00142476	  0.00087307	  7.26463241	  0.99564225	  0.99770217  0.49272683
+2168	 -6.26607700	 -0.00142411	  0.00087268	  7.26465289	  0.99564425	  0.99770321  0.49272764
+2169	 -6.26609676	 -0.00142346	  0.00087228	  7.26467331	  0.99564625	  0.99770426  0.49272843
+2170	 -6.26611646	 -0.00142281	  0.00087189	  7.26469365	  0.99564824	  0.99770530  0.49272921
+2171	 -6.26613608	 -0.00142216	  0.00087149	  7.26471392	  0.99565024	  0.99770635  0.49273003
+2172	 -6.26615563	 -0.00142151	  0.00087110	  7.26473412	  0.99565223	  0.99770739  0.49273081
+2173	 -6.26617512	 -0.00142087	  0.00087070	  7.26475425	  0.99565422	  0.99770843  0.49273160
+2174	 -6.26619453	 -0.00142022	  0.00087031	  7.26477431	  0.99565620	  0.99770947  0.49273238
+2175	 -6.26621387	 -0.00141957	  0.00086992	  7.26479430	  0.99565819	  0.99771051  0.49273317
+2176	 -6.26623315	 -0.00141893	  0.00086952	  7.26481422	  0.99566017	  0.99771155  0.49273396
+2177	 -6.26625235	 -0.00141828	  0.00086913	  7.26483407	  0.99566216	  0.99771259  0.49273473
+2178	 -6.26627149	 -0.00141764	  0.00086874	  7.26485385	  0.99566414	  0.99771362  0.49273551
+2179	 -6.26629056	 -0.00141699	  0.00086835	  7.26487356	  0.99566612	  0.99771466  0.49273628
+2180	 -6.26630956	 -0.00141635	  0.00086795	  7.26489321	  0.99566809	  0.99771570  0.49273706
+2181	 -6.26632849	 -0.00141571	  0.00086756	  7.26491278	  0.99567007	  0.99771673  0.49273783
+2182	 -6.26634735	 -0.00141506	  0.00086717	  7.26493229	  0.99567204	  0.99771776  0.49273859
+2183	 -6.26636615	 -0.00141442	  0.00086678	  7.26495173	  0.99567401	  0.99771880  0.49273935
+2184	 -6.26638488	 -0.00141378	  0.00086639	  7.26497110	  0.99567598	  0.99771983  0.49274013
+2185	 -6.26640355	 -0.00141314	  0.00086600	  7.26499041	  0.99567795	  0.99772086  0.49274089
+2186	 -6.26642214	 -0.00141250	  0.00086561	  7.26500964	  0.99567992	  0.99772189  0.49274164
+2187	 -6.26644067	 -0.00141186	  0.00086522	  7.26502881	  0.99568188	  0.99772292  0.49274241
+2188	 -6.26645914	 -0.00141122	  0.00086483	  7.26504792	  0.99568384	  0.99772395  0.49274316
+2189	 -6.26647754	 -0.00141058	  0.00086444	  7.26506695	  0.99568580	  0.99772497  0.49274392
+2190	 -6.26649587	 -0.00140995	  0.00086405	  7.26508592	  0.99568776	  0.99772600  0.49274466
+2191	 -6.26651414	 -0.00140931	  0.00086366	  7.26510483	  0.99568972	  0.99772703  0.49274542
+2192	 -6.26653234	 -0.00140867	  0.00086328	  7.26512367	  0.99569168	  0.99772805  0.49274618
+2193	 -6.26655048	 -0.00140804	  0.00086289	  7.26514244	  0.99569363	  0.99772908  0.49274690
+2194	 -6.26656855	 -0.00140740	  0.00086250	  7.26516115	  0.99569558	  0.99773010  0.49274765
+2195	 -6.26658656	 -0.00140677	  0.00086211	  7.26517979	  0.99569753	  0.99773112  0.49274839
+2196	 -6.26660450	 -0.00140613	  0.00086173	  7.26519837	  0.99569948	  0.99773214  0.49274912
+2197	 -6.26662238	 -0.00140550	  0.00086134	  7.26521688	  0.99570143	  0.99773316  0.49274986
+2198	 -6.26664020	 -0.00140486	  0.00086096	  7.26523533	  0.99570337	  0.99773418  0.49275059
+2199	 -6.26665795	 -0.00140423	  0.00086057	  7.26525372	  0.99570532	  0.99773520  0.49275132
+2200	 -6.26667564	 -0.00140360	  0.00086018	  7.26527204	  0.99570726	  0.99773622  0.49275206
+2201	 -6.26669326	 -0.00140297	  0.00085980	  7.26529030	  0.99570920	  0.99773723  0.49275276
+2202	 -6.26671083	 -0.00140234	  0.00085942	  7.26530849	  0.99571114	  0.99773825  0.49275350
+2203	 -6.26672833	 -0.00140171	  0.00085903	  7.26532662	  0.99571307	  0.99773926  0.49275423
+2204	 -6.26674577	 -0.00140108	  0.00085865	  7.26534469	  0.99571501	  0.99774028  0.49275495
+2205	 -6.26676314	 -0.00140045	  0.00085826	  7.26536270	  0.99571694	  0.99774129  0.49275567
+2206	 -6.26678046	 -0.00139982	  0.00085788	  7.26538064	  0.99571887	  0.99774230  0.49275639
+2207	 -6.26679771	 -0.00139919	  0.00085750	  7.26539852	  0.99572080	  0.99774331  0.49275711
+2208	 -6.26681490	 -0.00139856	  0.00085711	  7.26541634	  0.99572273	  0.99774433  0.49275782
+2209	 -6.26683203	 -0.00139793	  0.00085673	  7.26543410	  0.99572466	  0.99774533  0.49275852
+2210	 -6.26684910	 -0.00139731	  0.00085635	  7.26545179	  0.99572658	  0.99774634  0.49275924
+2211	 -6.26686611	 -0.00139668	  0.00085597	  7.26546943	  0.99572851	  0.99774735  0.49275995
+2212	 -6.26688306	 -0.00139605	  0.00085559	  7.26548700	  0.99573043	  0.99774836  0.49276065
+2213	 -6.26689994	 -0.00139543	  0.00085521	  7.26550451	  0.99573235	  0.99774936  0.49276134
+2214	 -6.26691677	 -0.00139481	  0.00085482	  7.26552196	  0.99573426	  0.99775037  0.49276204
+2215	 -6.26693354	 -0.00139418	  0.00085444	  7.26553936	  0.99573618	  0.99775137  0.49276274
+2216	 -6.26695024	 -0.00139356	  0.00085406	  7.26555669	  0.99573809	  0.99775238  0.49276344
+2217	 -6.26696689	 -0.00139293	  0.00085368	  7.26557396	  0.99574001	  0.99775338  0.49276413
+2218	 -6.26698348	 -0.00139231	  0.00085331	  7.26559117	  0.99574192	  0.99775438  0.49276484
+2219	 -6.26700001	 -0.00139169	  0.00085293	  7.26560832	  0.99574383	  0.99775538  0.49276553
+2220	 -6.26701648	 -0.00139107	  0.00085255	  7.26562541	  0.99574574	  0.99775638  0.49276621
+2221	 -6.26703289	 -0.00139045	  0.00085217	  7.26564245	  0.99574764	  0.99775738  0.49276691
+2222	 -6.26704925	 -0.00138983	  0.00085179	  7.26565942	  0.99574955	  0.99775838  0.49276759
+2223	 -6.26706554	 -0.00138921	  0.00085141	  7.26567633	  0.99575145	  0.99775938  0.49276826
+2224	 -6.26708178	 -0.00138859	  0.00085104	  7.26569319	  0.99575335	  0.99776038  0.49276895
+2225	 -6.26709796	 -0.00138797	  0.00085066	  7.26570999	  0.99575525	  0.99776137  0.49276963
+2226	 -6.26711408	 -0.00138735	  0.00085028	  7.26572673	  0.99575715	  0.99776237  0.49277030
+2227	 -6.26713015	 -0.00138674	  0.00084990	  7.26574341	  0.99575904	  0.99776336  0.49277097
+2228	 -6.26714616	 -0.00138612	  0.00084953	  7.26576004	  0.99576094	  0.99776435  0.49277165
+2229	 -6.26716211	 -0.00138550	  0.00084915	  7.26577661	  0.99576283	  0.99776535  0.49277232
+2230	 -6.26717800	 -0.00138489	  0.00084878	  7.26579312	  0.99576472	  0.99776634  0.49277298
+2231	 -6.26719384	 -0.00138427	  0.00084840	  7.26580957	  0.99576661	  0.99776733  0.49277366
+2232	 -6.26720962	 -0.00138366	  0.00084803	  7.26582597	  0.99576850	  0.99776832  0.49277432
+2233	 -6.26722535	 -0.00138304	  0.00084765	  7.26584231	  0.99577038	  0.99776931  0.49277499
+2234	 -6.26724102	 -0.00138243	  0.00084728	  7.26585859	  0.99577227	  0.99777029  0.49277565
+2235	 -6.26725663	 -0.00138181	  0.00084690	  7.26587482	  0.99577415	  0.99777128  0.49277630
+2236	 -6.26727219	 -0.00138120	  0.00084653	  7.26589099	  0.99577603	  0.99777227  0.49277698
+2237	 -6.26728769	 -0.00138059	  0.00084616	  7.26590710	  0.99577791	  0.99777325  0.49277763
+2238	 -6.26730314	 -0.00137998	  0.00084578	  7.26592316	  0.99577979	  0.99777424  0.49277828
+2239	 -6.26731854	 -0.00137937	  0.00084541	  7.26593917	  0.99578166	  0.99777522  0.49277893
+2240	 -6.26733388	 -0.00137876	  0.00084504	  7.26595512	  0.99578354	  0.99777621  0.49277959
+2241	 -6.26734916	 -0.00137815	  0.00084467	  7.26597101	  0.99578541	  0.99777719  0.49278024
+2242	 -6.26736439	 -0.00137754	  0.00084429	  7.26598685	  0.99578728	  0.99777817  0.49278088
+2243	 -6.26737957	 -0.00137693	  0.00084392	  7.26600264	  0.99578915	  0.99777915  0.49278153
+2244	 -6.26739469	 -0.00137632	  0.00084355	  7.26601837	  0.99579102	  0.99778013  0.49278219
+2245	 -6.26740976	 -0.00137571	  0.00084318	  7.26603405	  0.99579289	  0.99778111  0.49278281
+2246	 -6.26742477	 -0.00137510	  0.00084281	  7.26604967	  0.99579475	  0.99778209  0.49278347
+2247	 -6.26743974	 -0.00137450	  0.00084244	  7.26606524	  0.99579661	  0.99778306  0.49278410
+2248	 -6.26745464	 -0.00137389	  0.00084207	  7.26608075	  0.99579847	  0.99778404  0.49278472
+2249	 -6.26746950	 -0.00137328	  0.00084170	  7.26609622	  0.99580033	  0.99778502  0.49278536
+2250	 -6.26748430	 -0.00137268	  0.00084133	  7.26611162	  0.99580219	  0.99778599  0.49278600
+2251	 -6.26749906	 -0.00137207	  0.00084096	  7.26612698	  0.99580405	  0.99778696  0.49278663
+2252	 -6.26751375	 -0.00137147	  0.00084059	  7.26614228	  0.99580590	  0.99778794  0.49278724
+2253	 -6.26752840	 -0.00137087	  0.00084022	  7.26615753	  0.99580776	  0.99778891  0.49278789
+2254	 -6.26754300	 -0.00137026	  0.00083986	  7.26617273	  0.99580961	  0.99778988  0.49278852
+2255	 -6.26755754	 -0.00136966	  0.00083949	  7.26618788	  0.99581146	  0.99779085  0.49278914
+2256	 -6.26757203	 -0.00136906	  0.00083912	  7.26620297	  0.99581331	  0.99779182  0.49278975
+2257	 -6.26758647	 -0.00136846	  0.00083875	  7.26621801	  0.99581515	  0.99779279  0.49279037
+2258	 -6.26760086	 -0.00136786	  0.00083839	  7.26623300	  0.99581700	  0.99779376  0.49279099
+2259	 -6.26761520	 -0.00136725	  0.00083802	  7.26624794	  0.99581884	  0.99779472  0.49279161
+2260	 -6.26762949	 -0.00136665	  0.00083765	  7.26626283	  0.99582068	  0.99779569  0.49279223
+2261	 -6.26764372	 -0.00136605	  0.00083729	  7.26627767	  0.99582252	  0.99779666  0.49279284
+2262	 -6.26765791	 -0.00136546	  0.00083692	  7.26629245	  0.99582436	  0.99779762  0.49279345
+2263	 -6.26767205	 -0.00136486	  0.00083656	  7.26630719	  0.99582620	  0.99779859  0.49279407
+2264	 -6.26768613	 -0.00136426	  0.00083619	  7.26632187	  0.99582804	  0.99779955  0.49279468
+2265	 -6.26770017	 -0.00136366	  0.00083583	  7.26633651	  0.99582987	  0.99780051  0.49279528
+2266	 -6.26771416	 -0.00136306	  0.00083546	  7.26635109	  0.99583170	  0.99780147  0.49279588
+2267	 -6.26772809	 -0.00136247	  0.00083510	  7.26636562	  0.99583353	  0.99780243  0.49279649
+2268	 -6.26774198	 -0.00136187	  0.00083474	  7.26638011	  0.99583536	  0.99780339  0.49279710
+2269	 -6.26775582	 -0.00136128	  0.00083437	  7.26639454	  0.99583719	  0.99780435  0.49279770
+2270	 -6.26776961	 -0.00136068	  0.00083401	  7.26640893	  0.99583902	  0.99780531  0.49279829
+2271	 -6.26778335	 -0.00136009	  0.00083365	  7.26642326	  0.99584084	  0.99780627  0.49279888
+2272	 -6.26779704	 -0.00135949	  0.00083328	  7.26643755	  0.99584266	  0.99780722  0.49279946
+2273	 -6.26781069	 -0.00135890	  0.00083292	  7.26645179	  0.99584449	  0.99780818  0.49280008
+2274	 -6.26782428	 -0.00135831	  0.00083256	  7.26646598	  0.99584631	  0.99780913  0.49280067
+2275	 -6.26783783	 -0.00135771	  0.00083220	  7.26648012	  0.99584812	  0.99781009  0.49280125
+2276	 -6.26785133	 -0.00135712	  0.00083184	  7.26649421	  0.99584994	  0.99781104  0.49280185
+2277	 -6.26786479	 -0.00135653	  0.00083148	  7.26650826	  0.99585175	  0.99781199  0.49280244
+2278	 -6.26787819	 -0.00135594	  0.00083111	  7.26652225	  0.99585357	  0.99781295  0.49280301
+2279	 -6.26789155	 -0.00135535	  0.00083075	  7.26653620	  0.99585538	  0.99781390  0.49280360
+2280	 -6.26790486	 -0.00135476	  0.00083039	  7.26655010	  0.99585719	  0.99781485  0.49280419
+2281	 -6.26791812	 -0.00135417	  0.00083003	  7.26656395	  0.99585900	  0.99781580  0.49280476
+2282	 -6.26793134	 -0.00135358	  0.00082967	  7.26657776	  0.99586081	  0.99781675  0.49280534
+2283	 -6.26794451	 -0.00135299	  0.00082931	  7.26659152	  0.99586261	  0.99781769  0.49280594
+2284	 -6.26795764	 -0.00135240	  0.00082896	  7.26660523	  0.99586442	  0.99781864  0.49280650
+2285	 -6.26797071	 -0.00135182	  0.00082860	  7.26661890	  0.99586622	  0.99781959  0.49280708
+2286	 -6.26798374	 -0.00135123	  0.00082824	  7.26663252	  0.99586802	  0.99782053  0.49280764
+2287	 -6.26799673	 -0.00135064	  0.00082788	  7.26664609	  0.99586982	  0.99782148  0.49280822
+2288	 -6.26800967	 -0.00135006	  0.00082752	  7.26665961	  0.99587162	  0.99782242  0.49280878
+2289	 -6.26802256	 -0.00134947	  0.00082717	  7.26667309	  0.99587341	  0.99782336  0.49280935
+2290	 -6.26803541	 -0.00134889	  0.00082681	  7.26668653	  0.99587521	  0.99782431  0.49280992
+2291	 -6.26804822	 -0.00134830	  0.00082645	  7.26669991	  0.99587700	  0.99782525  0.49281048
+2292	 -6.26806098	 -0.00134772	  0.00082609	  7.26671326	  0.99587879	  0.99782619  0.49281107
+2293	 -6.26807369	 -0.00134713	  0.00082574	  7.26672655	  0.99588058	  0.99782713  0.49281162
+2294	 -6.26808636	 -0.00134655	  0.00082538	  7.26673981	  0.99588237	  0.99782807  0.49281218
+2295	 -6.26809898	 -0.00134597	  0.00082503	  7.26675301	  0.99588416	  0.99782900  0.49281274
+2296	 -6.26811156	 -0.00134539	  0.00082467	  7.26676617	  0.99588595	  0.99782994  0.49281329
+2297	 -6.26812410	 -0.00134481	  0.00082432	  7.26677929	  0.99588773	  0.99783088  0.49281384
+2298	 -6.26813659	 -0.00134422	  0.00082396	  7.26679236	  0.99588951	  0.99783181  0.49281439
+2299	 -6.26814904	 -0.00134364	  0.00082361	  7.26680539	  0.99589129	  0.99783275  0.49281496
+2300	 -6.26816144	 -0.00134306	  0.00082325	  7.26681838	  0.99589307	  0.99783368  0.49281552
+2301	 -6.26817380	 -0.00134248	  0.00082290	  7.26683132	  0.99589485	  0.99783462  0.49281605
+2302	 -6.26818612	 -0.00134191	  0.00082255	  7.26684421	  0.99589663	  0.99783555  0.49281661
+2303	 -6.26819839	 -0.00134133	  0.00082219	  7.26685706	  0.99589840	  0.99783648  0.49281716
+2304	 -6.26821062	 -0.00134075	  0.00082184	  7.26686987	  0.99590018	  0.99783741  0.49281769
+2305	 -6.26822281	 -0.00134017	  0.00082149	  7.26688264	  0.99590195	  0.99783834  0.49281824
+2306	 -6.26823495	 -0.00133959	  0.00082113	  7.26689536	  0.99590372	  0.99783927  0.49281878
+2307	 -6.26824705	 -0.00133902	  0.00082078	  7.26690804	  0.99590549	  0.99784020  0.49281933
+2308	 -6.26825911	 -0.00133844	  0.00082043	  7.26692067	  0.99590725	  0.99784113  0.49281987
+2309	 -6.26827113	 -0.00133787	  0.00082008	  7.26693326	  0.99590902	  0.99784206  0.49282040
+2310	 -6.26828310	 -0.00133729	  0.00081973	  7.26694581	  0.99591078	  0.99784298  0.49282094
+2311	 -6.26829504	 -0.00133672	  0.00081938	  7.26695832	  0.99591255	  0.99784391  0.49282147
+2312	 -6.26830693	 -0.00133614	  0.00081902	  7.26697079	  0.99591431	  0.99784483  0.49282201
+2313	 -6.26831878	 -0.00133557	  0.00081867	  7.26698321	  0.99591607	  0.99784576  0.49282254
+2314	 -6.26833058	 -0.00133499	  0.00081832	  7.26699559	  0.99591783	  0.99784668  0.49282308
+2315	 -6.26834235	 -0.00133442	  0.00081797	  7.26700793	  0.99591958	  0.99784760  0.49282360
+2316	 -6.26835407	 -0.00133385	  0.00081762	  7.26702023	  0.99592134	  0.99784853  0.49282414
+2317	 -6.26836576	 -0.00133328	  0.00081728	  7.26703248	  0.99592309	  0.99784945  0.49282465
+2318	 -6.26837740	 -0.00133271	  0.00081693	  7.26704469	  0.99592485	  0.99785037  0.49282520
+2319	 -6.26838900	 -0.00133214	  0.00081658	  7.26705687	  0.99592660	  0.99785129  0.49282572
+2320	 -6.26840056	 -0.00133157	  0.00081623	  7.26706900	  0.99592835	  0.99785221  0.49282624
+2321	 -6.26841209	 -0.00133100	  0.00081588	  7.26708109	  0.99593009	  0.99785312  0.49282676
+2322	 -6.26842357	 -0.00133043	  0.00081553	  7.26709314	  0.99593184	  0.99785404  0.49282728
+2323	 -6.26843501	 -0.00132986	  0.00081519	  7.26710515	  0.99593359	  0.99785496  0.49282780
+2324	 -6.26844641	 -0.00132929	  0.00081484	  7.26711712	  0.99593533	  0.99785587  0.49282829
+2325	 -6.26845777	 -0.00132872	  0.00081449	  7.26712905	  0.99593707	  0.99785679  0.49282883
+2326	 -6.26846909	 -0.00132815	  0.00081414	  7.26714093	  0.99593881	  0.99785770  0.49282934
+2327	 -6.26848037	 -0.00132759	  0.00081380	  7.26715278	  0.99594055	  0.99785862  0.49282986
+2328	 -6.26849161	 -0.00132702	  0.00081345	  7.26716459	  0.99594229	  0.99785953  0.49283037
+2329	 -6.26850281	 -0.00132645	  0.00081311	  7.26717636	  0.99594402	  0.99786044  0.49283087
+2330	 -6.26851397	 -0.00132589	  0.00081276	  7.26718809	  0.99594576	  0.99786135  0.49283138
+2331	 -6.26852510	 -0.00132532	  0.00081242	  7.26719977	  0.99594749	  0.99786226  0.49283189
+2332	 -6.26853618	 -0.00132476	  0.00081207	  7.26721142	  0.99594922	  0.99786317  0.49283239
+2333	 -6.26854723	 -0.00132419	  0.00081173	  7.26722303	  0.99595095	  0.99786408  0.49283291
+2334	 -6.26855824	 -0.00132363	  0.00081138	  7.26723461	  0.99595268	  0.99786499  0.49283341
+2335	 -6.26856921	 -0.00132307	  0.00081104	  7.26724614	  0.99595441	  0.99786590  0.49283391
+2336	 -6.26858014	 -0.00132251	  0.00081069	  7.26725763	  0.99595614	  0.99786680  0.49283441
+2337	 -6.26859103	 -0.00132194	  0.00081035	  7.26726909	  0.99595786	  0.99786771  0.49283490
+2338	 -6.26860188	 -0.00132138	  0.00081001	  7.26728050	  0.99595958	  0.99786861  0.49283543
+2339	 -6.26861270	 -0.00132082	  0.00080966	  7.26729188	  0.99596131	  0.99786952  0.49283590
+2340	 -6.26862348	 -0.00132026	  0.00080932	  7.26730322	  0.99596303	  0.99787042  0.49283641
+2341	 -6.26863422	 -0.00131970	  0.00080898	  7.26731452	  0.99596474	  0.99787132  0.49283690
+2342	 -6.26864493	 -0.00131914	  0.00080864	  7.26732579	  0.99596646	  0.99787223  0.49283740
+2343	 -6.26865559	 -0.00131858	  0.00080829	  7.26733701	  0.99596818	  0.99787313  0.49283789
+2344	 -6.26866622	 -0.00131802	  0.00080795	  7.26734820	  0.99596989	  0.99787403  0.49283838
+2345	 -6.26867681	 -0.00131746	  0.00080761	  7.26735935	  0.99597160	  0.99787493  0.49283886
+2346	 -6.26868737	 -0.00131690	  0.00080727	  7.26737047	  0.99597332	  0.99787583  0.49283935
+2347	 -6.26869789	 -0.00131635	  0.00080693	  7.26738154	  0.99597503	  0.99787673  0.49283983
+2348	 -6.26870837	 -0.00131579	  0.00080659	  7.26739258	  0.99597673	  0.99787762  0.49284032
+2349	 -6.26871882	 -0.00131523	  0.00080625	  7.26740358	  0.99597844	  0.99787852  0.49284083
+2350	 -6.26872923	 -0.00131468	  0.00080591	  7.26741455	  0.99598015	  0.99787942  0.49284129
+2351	 -6.26873960	 -0.00131412	  0.00080557	  7.26742548	  0.99598185	  0.99788031  0.49284178
+2352	 -6.26874993	 -0.00131357	  0.00080523	  7.26743637	  0.99598355	  0.99788121  0.49284226
+2353	 -6.26876024	 -0.00131301	  0.00080489	  7.26744723	  0.99598526	  0.99788210  0.49284273
+2354	 -6.26877050	 -0.00131246	  0.00080455	  7.26745804	  0.99598696	  0.99788299  0.49284320
+2355	 -6.26878073	 -0.00131190	  0.00080421	  7.26746883	  0.99598865	  0.99788389  0.49284369
+2356	 -6.26879092	 -0.00131135	  0.00080387	  7.26747958	  0.99599035	  0.99788478  0.49284417
+2357	 -6.26880108	 -0.00131080	  0.00080354	  7.26749029	  0.99599205	  0.99788567  0.49284465
+2358	 -6.26881120	 -0.00131024	  0.00080320	  7.26750096	  0.99599374	  0.99788656  0.49284510
+2359	 -6.26882129	 -0.00130969	  0.00080286	  7.26751160	  0.99599543	  0.99788745  0.49284559
+2360	 -6.26883135	 -0.00130914	  0.00080252	  7.26752221	  0.99599713	  0.99788834  0.49284606
+2361	 -6.26884136	 -0.00130859	  0.00080219	  7.26753278	  0.99599882	  0.99788923  0.49284653
+2362	 -6.26885135	 -0.00130804	  0.00080185	  7.26754331	  0.99600050	  0.99789011  0.49284699
+2363	 -6.26886129	 -0.00130749	  0.00080151	  7.26755381	  0.99600219	  0.99789100  0.49284746
+2364	 -6.26887121	 -0.00130694	  0.00080118	  7.26756427	  0.99600388	  0.99789189  0.49284793
+2365	 -6.26888109	 -0.00130639	  0.00080084	  7.26757470	  0.99600556	  0.99789277  0.49284838
+2366	 -6.26889093	 -0.00130584	  0.00080051	  7.26758509	  0.99600724	  0.99789365  0.49284885
+2367	 -6.26890074	 -0.00130529	  0.00080017	  7.26759545	  0.99600893	  0.99789454  0.49284932
+2368	 -6.26891052	 -0.00130474	  0.00079984	  7.26760578	  0.99601061	  0.99789542  0.49284977
+2369	 -6.26892026	 -0.00130420	  0.00079950	  7.26761607	  0.99601228	  0.99789630  0.49285024
+2370	 -6.26892997	 -0.00130365	  0.00079917	  7.26762633	  0.99601396	  0.99789719  0.49285069
+2371	 -6.26893965	 -0.00130310	  0.00079883	  7.26763655	  0.99601564	  0.99789807  0.49285114
+2372	 -6.26894929	 -0.00130256	  0.00079850	  7.26764674	  0.99601731	  0.99789895  0.49285162
+2373	 -6.26895890	 -0.00130201	  0.00079816	  7.26765689	  0.99601899	  0.99789983  0.49285206
+2374	 -6.26896848	 -0.00130146	  0.00079783	  7.26766701	  0.99602066	  0.99790070  0.49285251
+2375	 -6.26897802	 -0.00130092	  0.00079750	  7.26767710	  0.99602233	  0.99790158  0.49285297
+2376	 -6.26898753	 -0.00130038	  0.00079717	  7.26768715	  0.99602400	  0.99790246  0.49285344
+2377	 -6.26899700	 -0.00129983	  0.00079683	  7.26769717	  0.99602566	  0.99790334  0.49285388
+2378	 -6.26900645	 -0.00129929	  0.00079650	  7.26770716	  0.99602733	  0.99790421  0.49285432
+2379	 -6.26901586	 -0.00129875	  0.00079617	  7.26771711	  0.99602900	  0.99790509  0.49285477
+2380	 -6.26902524	 -0.00129820	  0.00079584	  7.26772703	  0.99603066	  0.99790596  0.49285523
+2381	 -6.26903458	 -0.00129766	  0.00079550	  7.26773692	  0.99603232	  0.99790683  0.49285566
+2382	 -6.26904390	 -0.00129712	  0.00079517	  7.26774678	  0.99603398	  0.99790771  0.49285611
+2383	 -6.26905318	 -0.00129658	  0.00079484	  7.26775660	  0.99603564	  0.99790858  0.49285655
+2384	 -6.26906243	 -0.00129604	  0.00079451	  7.26776639	  0.99603730	  0.99790945  0.49285701
+2385	 -6.26907164	 -0.00129550	  0.00079418	  7.26777615	  0.99603896	  0.99791032  0.49285743
+2386	 -6.26908083	 -0.00129496	  0.00079385	  7.26778587	  0.99604061	  0.99791119  0.49285787
+2387	 -6.26908998	 -0.00129442	  0.00079352	  7.26779557	  0.99604227	  0.99791206  0.49285833
+2388	 -6.26909911	 -0.00129388	  0.00079319	  7.26780523	  0.99604392	  0.99791293  0.49285876
+2389	 -6.26910820	 -0.00129334	  0.00079286	  7.26781486	  0.99604557	  0.99791380  0.49285921
+2390	 -6.26911726	 -0.00129280	  0.00079253	  7.26782446	  0.99604722	  0.99791467  0.49285963
+2391	 -6.26912629	 -0.00129226	  0.00079220	  7.26783402	  0.99604887	  0.99791553  0.49286007
+2392	 -6.26913528	 -0.00129173	  0.00079188	  7.26784356	  0.99605051	  0.99791640  0.49286049
+2393	 -6.26914425	 -0.00129119	  0.00079155	  7.26785306	  0.99605216	  0.99791726  0.49286093
+2394	 -6.26915318	 -0.00129065	  0.00079122	  7.26786253	  0.99605380	  0.99791813  0.49286138
+2395	 -6.26916209	 -0.00129012	  0.00079089	  7.26787197	  0.99605545	  0.99791899  0.49286178
+2396	 -6.26917096	 -0.00128958	  0.00079056	  7.26788138	  0.99605709	  0.99791985  0.49286223
+2397	 -6.26917981	 -0.00128905	  0.00079024	  7.26789076	  0.99605873	  0.99792072  0.49286266
+2398	 -6.26918862	 -0.00128851	  0.00078991	  7.26790011	  0.99606037	  0.99792158  0.49286308
+2399	 -6.26919740	 -0.00128798	  0.00078958	  7.26790942	  0.99606201	  0.99792244  0.49286350
+2400	 -6.26920615	 -0.00128744	  0.00078926	  7.26791871	  0.99606364	  0.99792330  0.49286392
+2401	 -6.26921488	 -0.00128691	  0.00078893	  7.26792797	  0.99606528	  0.99792416  0.49286436
+2402	 -6.26922357	 -0.00128638	  0.00078860	  7.26793719	  0.99606691	  0.99792502  0.49286478
+2403	 -6.26923223	 -0.00128585	  0.00078828	  7.26794639	  0.99606854	  0.99792588  0.49286521
+2404	 -6.26924086	 -0.00128531	  0.00078795	  7.26795555	  0.99607017	  0.99792673  0.49286564
+2405	 -6.26924947	 -0.00128478	  0.00078763	  7.26796468	  0.99607180	  0.99792759  0.49286605
+2406	 -6.26925804	 -0.00128425	  0.00078730	  7.26797379	  0.99607343	  0.99792845  0.49286646
+2407	 -6.26926658	 -0.00128372	  0.00078698	  7.26798286	  0.99607506	  0.99792930  0.49286689
+2408	 -6.26927510	 -0.00128319	  0.00078665	  7.26799191	  0.99607668	  0.99793016  0.49286730
+2409	 -6.26928358	 -0.00128266	  0.00078633	  7.26800092	  0.99607831	  0.99793101  0.49286770
+2410	 -6.26929204	 -0.00128213	  0.00078601	  7.26800991	  0.99607993	  0.99793186  0.49286812
+2411	 -6.26930047	 -0.00128160	  0.00078568	  7.26801887	  0.99608155	  0.99793272  0.49286854
+2412	 -6.26930887	 -0.00128107	  0.00078536	  7.26802779	  0.99608317	  0.99793357  0.49286895
+2413	 -6.26931724	 -0.00128054	  0.00078504	  7.26803669	  0.99608479	  0.99793442  0.49286937
+2414	 -6.26932558	 -0.00128002	  0.00078471	  7.26804556	  0.99608641	  0.99793527  0.49286977
+2415	 -6.26933389	 -0.00127949	  0.00078439	  7.26805440	  0.99608802	  0.99793612  0.49287019
+2416	 -6.26934217	 -0.00127896	  0.00078407	  7.26806321	  0.99608964	  0.99793697  0.49287058
+2417	 -6.26935043	 -0.00127844	  0.00078375	  7.26807199	  0.99609125	  0.99793782  0.49287100
+2418	 -6.26935866	 -0.00127791	  0.00078342	  7.26808075	  0.99609287	  0.99793867  0.49287142
+2419	 -6.26936686	 -0.00127738	  0.00078310	  7.26808947	  0.99609448	  0.99793951  0.49287182
+2420	 -6.26937503	 -0.00127686	  0.00078278	  7.26809817	  0.99609609	  0.99794036  0.49287224
+2421	 -6.26938317	 -0.00127634	  0.00078246	  7.26810683	  0.99609769	  0.99794120  0.49287263
+2422	 -6.26939129	 -0.00127581	  0.00078214	  7.26811547	  0.99609930	  0.99794205  0.49287302
+2423	 -6.26939937	 -0.00127529	  0.00078182	  7.26812409	  0.99610091	  0.99794289  0.49287345
+2424	 -6.26940743	 -0.00127476	  0.00078150	  7.26813267	  0.99610251	  0.99794374  0.49287384
+2425	 -6.26941547	 -0.00127424	  0.00078118	  7.26814123	  0.99610411	  0.99794458  0.49287423
+2426	 -6.26942347	 -0.00127372	  0.00078086	  7.26814975	  0.99610572	  0.99794542  0.49287464
+2427	 -6.26943145	 -0.00127320	  0.00078054	  7.26815825	  0.99610732	  0.99794626  0.49287504
+2428	 -6.26943940	 -0.00127267	  0.00078022	  7.26816673	  0.99610892	  0.99794711  0.49287543
+2429	 -6.26944732	 -0.00127215	  0.00077990	  7.26817517	  0.99611051	  0.99794795  0.49287581
+2430	 -6.26945522	 -0.00127163	  0.00077958	  7.26818359	  0.99611211	  0.99794879  0.49287621
+2431	 -6.26946309	 -0.00127111	  0.00077926	  7.26819198	  0.99611370	  0.99794962  0.49287661
+2432	 -6.26947093	 -0.00127059	  0.00077895	  7.26820034	  0.99611530	  0.99795046  0.49287701
+2433	 -6.26947875	 -0.00127007	  0.00077863	  7.26820868	  0.99611689	  0.99795130  0.49287739
+2434	 -6.26948654	 -0.00126955	  0.00077831	  7.26821698	  0.99611848	  0.99795214  0.49287779
+2435	 -6.26949430	 -0.00126903	  0.00077799	  7.26822527	  0.99612007	  0.99795297  0.49287817
+2436	 -6.26950204	 -0.00126852	  0.00077768	  7.26823352	  0.99612166	  0.99795381  0.49287857
+2437	 -6.26950975	 -0.00126800	  0.00077736	  7.26824175	  0.99612325	  0.99795464  0.49287896
+2438	 -6.26951743	 -0.00126748	  0.00077704	  7.26824995	  0.99612484	  0.99795548  0.49287934
+2439	 -6.26952509	 -0.00126696	  0.00077673	  7.26825813	  0.99612642	  0.99795631  0.49287973
+2440	 -6.26953272	 -0.00126645	  0.00077641	  7.26826627	  0.99612800	  0.99795714  0.49288012
+2441	 -6.26954033	 -0.00126593	  0.00077609	  7.26827440	  0.99612959	  0.99795798  0.49288050
+2442	 -6.26954791	 -0.00126541	  0.00077578	  7.26828249	  0.99613117	  0.99795881  0.49288087
+2443	 -6.26955546	 -0.00126490	  0.00077546	  7.26829056	  0.99613275	  0.99795964  0.49288126
+2444	 -6.26956299	 -0.00126438	  0.00077515	  7.26829860	  0.99613433	  0.99796047  0.49288164
+2445	 -6.26957049	 -0.00126387	  0.00077483	  7.26830662	  0.99613590	  0.99796130  0.49288203
+2446	 -6.26957797	 -0.00126335	  0.00077452	  7.26831461	  0.99613748	  0.99796213  0.49288240
+2447	 -6.26958542	 -0.00126284	  0.00077420	  7.26832258	  0.99613905	  0.99796296  0.49288278
+2448	 -6.26959285	 -0.00126233	  0.00077389	  7.26833052	  0.99614063	  0.99796378  0.49288317
+2449	 -6.26960025	 -0.00126181	  0.00077357	  7.26833844	  0.99614220	  0.99796461  0.49288354
+2450	 -6.26960763	 -0.00126130	  0.00077326	  7.26834632	  0.99614377	  0.99796544  0.49288392
+2451	 -6.26961498	 -0.00126079	  0.00077295	  7.26835419	  0.99614534	  0.99796626  0.49288432
+2452	 -6.26962230	 -0.00126028	  0.00077263	  7.26836203	  0.99614691	  0.99796709  0.49288467
+2453	 -6.26962961	 -0.00125977	  0.00077232	  7.26836984	  0.99614847	  0.99796791  0.49288504
+2454	 -6.26963688	 -0.00125926	  0.00077201	  7.26837763	  0.99615004	  0.99796874  0.49288540
+2455	 -6.26964414	 -0.00125874	  0.00077170	  7.26838539	  0.99615160	  0.99796956  0.49288580
+2456	 -6.26965137	 -0.00125823	  0.00077138	  7.26839313	  0.99615317	  0.99797038  0.49288618
+2457	 -6.26965857	 -0.00125772	  0.00077107	  7.26840084	  0.99615473	  0.99797120  0.49288651
+2458	 -6.26966575	 -0.00125722	  0.00077076	  7.26840853	  0.99615629	  0.99797202  0.49288691
+2459	 -6.26967290	 -0.00125671	  0.00077045	  7.26841620	  0.99615785	  0.99797284  0.49288729
+2460	 -6.26968003	 -0.00125620	  0.00077014	  7.26842384	  0.99615941	  0.99797366  0.49288765
+2461	 -6.26968714	 -0.00125569	  0.00076983	  7.26843145	  0.99616097	  0.99797448  0.49288801
+2462	 -6.26969422	 -0.00125518	  0.00076952	  7.26843904	  0.99616252	  0.99797530  0.49288835
+2463	 -6.26970128	 -0.00125468	  0.00076920	  7.26844661	  0.99616408	  0.99797612  0.49288872
+2464	 -6.26970832	 -0.00125417	  0.00076889	  7.26845415	  0.99616563	  0.99797694  0.49288910
+2465	 -6.26971533	 -0.00125366	  0.00076858	  7.26846167	  0.99616718	  0.99797775  0.49288946
+2466	 -6.26972232	 -0.00125316	  0.00076827	  7.26846916	  0.99616873	  0.99797857  0.49288983
+2467	 -6.26972928	 -0.00125265	  0.00076797	  7.26847663	  0.99617028	  0.99797938  0.49289019
+2468	 -6.26973622	 -0.00125214	  0.00076766	  7.26848408	  0.99617183	  0.99798020  0.49289056
+2469	 -6.26974314	 -0.00125164	  0.00076735	  7.26849150	  0.99617338	  0.99798101  0.49289092
+2470	 -6.26975003	 -0.00125114	  0.00076704	  7.26849890	  0.99617492	  0.99798183  0.49289126
+2471	 -6.26975691	 -0.00125063	  0.00076673	  7.26850627	  0.99617647	  0.99798264  0.49289162
+2472	 -6.26976375	 -0.00125013	  0.00076642	  7.26851363	  0.99617801	  0.99798345  0.49289199
+2473	 -6.26977058	 -0.00124962	  0.00076611	  7.26852095	  0.99617955	  0.99798426  0.49289234
+2474	 -6.26977738	 -0.00124912	  0.00076581	  7.26852826	  0.99618109	  0.99798507  0.49289269
+2475	 -6.26978416	 -0.00124862	  0.00076550	  7.26853554	  0.99618263	  0.99798588  0.49289304
+2476	 -6.26979092	 -0.00124812	  0.00076519	  7.26854280	  0.99618417	  0.99798669  0.49289341
+2477	 -6.26979765	 -0.00124762	  0.00076488	  7.26855003	  0.99618571	  0.99798750  0.49289376
+2478	 -6.26980436	 -0.00124711	  0.00076458	  7.26855725	  0.99618724	  0.99798831  0.49289409
+2479	 -6.26981105	 -0.00124661	  0.00076427	  7.26856444	  0.99618878	  0.99798912  0.49289444
+2480	 -6.26981772	 -0.00124611	  0.00076396	  7.26857160	  0.99619031	  0.99798992  0.49289482
+2481	 -6.26982436	 -0.00124561	  0.00076366	  7.26857875	  0.99619184	  0.99799073  0.49289516
+2482	 -6.26983098	 -0.00124511	  0.00076335	  7.26858587	  0.99619337	  0.99799154  0.49289554
+2483	 -6.26983758	 -0.00124461	  0.00076305	  7.26859297	  0.99619490	  0.99799234  0.49289586
+2484	 -6.26984416	 -0.00124412	  0.00076274	  7.26860004	  0.99619643	  0.99799314  0.49289620
+2485	 -6.26985071	 -0.00124362	  0.00076244	  7.26860710	  0.99619796	  0.99799395  0.49289657
+2486	 -6.26985725	 -0.00124312	  0.00076213	  7.26861413	  0.99619949	  0.99799475  0.49289690
+2487	 -6.26986376	 -0.00124262	  0.00076183	  7.26862114	  0.99620101	  0.99799555  0.49289724
+2488	 -6.26987025	 -0.00124212	  0.00076152	  7.26862812	  0.99620253	  0.99799636  0.49289757
+2489	 -6.26987672	 -0.00124163	  0.00076122	  7.26863509	  0.99620406	  0.99799716  0.49289792
+2490	 -6.26988316	 -0.00124113	  0.00076091	  7.26864203	  0.99620558	  0.99799796  0.49289828
+2491	 -6.26988959	 -0.00124063	  0.00076061	  7.26864895	  0.99620710	  0.99799876  0.49289862
+2492	 -6.26989599	 -0.00124014	  0.00076031	  7.26865585	  0.99620862	  0.99799956  0.49289895
+2493	 -6.26990237	 -0.00123964	  0.00076000	  7.26866273	  0.99621013	  0.99800035  0.49289931
+2494	 -6.26990873	 -0.00123915	  0.00075970	  7.26866958	  0.99621165	  0.99800115  0.49289965
+2495	 -6.26991507	 -0.00123865	  0.00075940	  7.26867642	  0.99621317	  0.99800195  0.49289998
+2496	 -6.26992139	 -0.00123816	  0.00075909	  7.26868323	  0.99621468	  0.99800275  0.49290032
+2497	 -6.26992769	 -0.00123767	  0.00075879	  7.26869002	  0.99621619	  0.99800354  0.49290066
+2498	 -6.26993396	 -0.00123717	  0.00075849	  7.26869679	  0.99621770	  0.99800434  0.49290100
+2499	 -6.26994022	 -0.00123668	  0.00075819	  7.26870354	  0.99621921	  0.99800513  0.49290132
+2500	 -6.26994645	 -0.00123619	  0.00075789	  7.26871027	  0.99622072	  0.99800593  0.49290166
+2501	 -6.26995267	 -0.00123569	  0.00075758	  7.26871697	  0.99622223	  0.99800672  0.49290199
+2502	 -6.26995886	 -0.00123520	  0.00075728	  7.26872366	  0.99622374	  0.99800751  0.49290231
+2503	 -6.26996503	 -0.00123471	  0.00075698	  7.26873032	  0.99622524	  0.99800831  0.49290268
+2504	 -6.26997119	 -0.00123422	  0.00075668	  7.26873697	  0.99622675	  0.99800910  0.49290298
+2505	 -6.26997732	 -0.00123373	  0.00075638	  7.26874359	  0.99622825	  0.99800989  0.49290333
+2506	 -6.26998343	 -0.00123324	  0.00075608	  7.26875019	  0.99622975	  0.99801068  0.49290366
+2507	 -6.26998952	 -0.00123275	  0.00075578	  7.26875677	  0.99623126	  0.99801147  0.49290397
+2508	 -6.26999559	 -0.00123226	  0.00075548	  7.26876333	  0.99623275	  0.99801226  0.49290432
+2509	 -6.27000164	 -0.00123177	  0.00075518	  7.26876987	  0.99623425	  0.99801305  0.49290464
+2510	 -6.27000767	 -0.00123128	  0.00075488	  7.26877639	  0.99623575	  0.99801384  0.49290499
+2511	 -6.27001368	 -0.00123079	  0.00075458	  7.26878289	  0.99623725	  0.99801462  0.49290530
+2512	 -6.27001968	 -0.00123031	  0.00075428	  7.26878937	  0.99623874	  0.99801541  0.49290562
+2513	 -6.27002565	 -0.00122982	  0.00075399	  7.26879583	  0.99624024	  0.99801620  0.49290596
+2514	 -6.27003160	 -0.00122933	  0.00075369	  7.26880227	  0.99624173	  0.99801698  0.49290628
+2515	 -6.27003753	 -0.00122884	  0.00075339	  7.26880869	  0.99624322	  0.99801777  0.49290660
+2516	 -6.27004344	 -0.00122836	  0.00075309	  7.26881508	  0.99624471	  0.99801855  0.49290693
+2517	 -6.27004933	 -0.00122787	  0.00075279	  7.26882146	  0.99624620	  0.99801934  0.49290725
+2518	 -6.27005521	 -0.00122739	  0.00075250	  7.26882782	  0.99624769	  0.99802012  0.49290756
+2519	 -6.27006106	 -0.00122690	  0.00075220	  7.26883416	  0.99624917	  0.99802090  0.49290790
+2520	 -6.27006690	 -0.00122642	  0.00075190	  7.26884048	  0.99625066	  0.99802168  0.49290821
+2521	 -6.27007271	 -0.00122593	  0.00075160	  7.26884678	  0.99625214	  0.99802246  0.49290851
+2522	 -6.27007851	 -0.00122545	  0.00075131	  7.26885306	  0.99625363	  0.99802324  0.49290885
+2523	 -6.27008428	 -0.00122496	  0.00075101	  7.26885932	  0.99625511	  0.99802402  0.49290916
+2524	 -6.27009004	 -0.00122448	  0.00075072	  7.26886556	  0.99625659	  0.99802480  0.49290948
+2525	 -6.27009578	 -0.00122400	  0.00075042	  7.26887178	  0.99625807	  0.99802558  0.49290980
+2526	 -6.27010150	 -0.00122351	  0.00075012	  7.26887799	  0.99625955	  0.99802636  0.49291012
+2527	 -6.27010720	 -0.00122303	  0.00074983	  7.26888417	  0.99626102	  0.99802714  0.49291045
+2528	 -6.27011288	 -0.00122255	  0.00074953	  7.26889033	  0.99626250	  0.99802792  0.49291075
+2529	 -6.27011855	 -0.00122207	  0.00074924	  7.26889648	  0.99626398	  0.99802869  0.49291108
+2530	 -6.27012419	 -0.00122159	  0.00074894	  7.26890260	  0.99626545	  0.99802947  0.49291137
+2531	 -6.27012982	 -0.00122111	  0.00074865	  7.26890871	  0.99626692	  0.99803024  0.49291169
+2532	 -6.27013543	 -0.00122063	  0.00074836	  7.26891480	  0.99626839	  0.99803102  0.49291199
+2533	 -6.27014102	 -0.00122015	  0.00074806	  7.26892087	  0.99626986	  0.99803179  0.49291232
+2534	 -6.27014659	 -0.00121967	  0.00074777	  7.26892692	  0.99627133	  0.99803257  0.49291262
+2535	 -6.27015214	 -0.00121919	  0.00074747	  7.26893295	  0.99627280	  0.99803334  0.49291295
+2536	 -6.27015767	 -0.00121871	  0.00074718	  7.26893897	  0.99627427	  0.99803411  0.49291325
+2537	 -6.27016319	 -0.00121823	  0.00074689	  7.26894496	  0.99627574	  0.99803488  0.49291356
+2538	 -6.27016869	 -0.00121775	  0.00074659	  7.26895094	  0.99627720	  0.99803565  0.49291386
+2539	 -6.27017417	 -0.00121727	  0.00074630	  7.26895690	  0.99627866	  0.99803642  0.49291418
+2540	 -6.27017963	 -0.00121680	  0.00074601	  7.26896284	  0.99628013	  0.99803719  0.49291448
+2541	 -6.27018508	 -0.00121632	  0.00074572	  7.26896876	  0.99628159	  0.99803796  0.49291478
+2542	 -6.27019050	 -0.00121584	  0.00074543	  7.26897466	  0.99628305	  0.99803873  0.49291509
+2543	 -6.27019591	 -0.00121537	  0.00074513	  7.26898055	  0.99628451	  0.99803950  0.49291539
+2544	 -6.27020130	 -0.00121489	  0.00074484	  7.26898641	  0.99628596	  0.99804027  0.49291571
+2545	 -6.27020668	 -0.00121441	  0.00074455	  7.26899226	  0.99628742	  0.99804103  0.49291599
+2546	 -6.27021203	 -0.00121394	  0.00074426	  7.26899810	  0.99628888	  0.99804180  0.49291629
+2547	 -6.27021737	 -0.00121346	  0.00074397	  7.26900391	  0.99629033	  0.99804257  0.49291660
+2548	 -6.27022270	 -0.00121299	  0.00074368	  7.26900971	  0.99629178	  0.99804333  0.49291688
+2549	 -6.27022800	 -0.00121252	  0.00074339	  7.26901548	  0.99629324	  0.99804410  0.49291722
+2550	 -6.27023329	 -0.00121204	  0.00074310	  7.26902124	  0.99629469	  0.99804486  0.49291750
+2551	 -6.27023856	 -0.00121157	  0.00074281	  7.26902699	  0.99629614	  0.99804562  0.49291781
+2552	 -6.27024381	 -0.00121110	  0.00074252	  7.26903271	  0.99629759	  0.99804639  0.49291812
+2553	 -6.27024904	 -0.00121062	  0.00074223	  7.26903842	  0.99629903	  0.99804715  0.49291840
+2554	 -6.27025426	 -0.00121015	  0.00074194	  7.26904411	  0.99630048	  0.99804791  0.49291870
+2555	 -6.27025946	 -0.00120968	  0.00074165	  7.26904979	  0.99630193	  0.99804867  0.49291902
+2556	 -6.27026465	 -0.00120921	  0.00074136	  7.26905544	  0.99630337	  0.99804943  0.49291932
+2557	 -6.27026982	 -0.00120874	  0.00074107	  7.26906108	  0.99630481	  0.99805019  0.49291960
+2558	 -6.27027497	 -0.00120827	  0.00074078	  7.26906670	  0.99630626	  0.99805095  0.49291988
+2559	 -6.27028010	 -0.00120780	  0.00074050	  7.26907231	  0.99630770	  0.99805171  0.49292018
+2560	 -6.27028522	 -0.00120732	  0.00074021	  7.26907789	  0.99630914	  0.99805247  0.49292047
+2561	 -6.27029032	 -0.00120686	  0.00073992	  7.26908347	  0.99631057	  0.99805322  0.49292077
+2562	 -6.27029541	 -0.00120639	  0.00073963	  7.26908902	  0.99631201	  0.99805398  0.49292106
+2563	 -6.27030047	 -0.00120592	  0.00073934	  7.26909456	  0.99631345	  0.99805474  0.49292137
+2564	 -6.27030552	 -0.00120545	  0.00073906	  7.26910008	  0.99631488	  0.99805549  0.49292164
+2565	 -6.27031056	 -0.00120498	  0.00073877	  7.26910558	  0.99631632	  0.99805625  0.49292193
+2566	 -6.27031558	 -0.00120451	  0.00073848	  7.26911107	  0.99631775	  0.99805700  0.49292223
+2567	 -6.27032058	 -0.00120404	  0.00073820	  7.26911654	  0.99631918	  0.99805776  0.49292252
+2568	 -6.27032557	 -0.00120358	  0.00073791	  7.26912199	  0.99632061	  0.99805851  0.49292278
+2569	 -6.27033054	 -0.00120311	  0.00073763	  7.26912743	  0.99632204	  0.99805926  0.49292312
+2570	 -6.27033549	 -0.00120264	  0.00073734	  7.26913285	  0.99632347	  0.99806002  0.49292338
+2571	 -6.27034043	 -0.00120218	  0.00073705	  7.26913825	  0.99632490	  0.99806077  0.49292367
+2572	 -6.27034536	 -0.00120171	  0.00073677	  7.26914364	  0.99632633	  0.99806152  0.49292394
+2573	 -6.27035026	 -0.00120125	  0.00073648	  7.26914902	  0.99632775	  0.99806227  0.49292425
+2574	 -6.27035515	 -0.00120078	  0.00073620	  7.26915437	  0.99632918	  0.99806302  0.49292452
+2575	 -6.27036003	 -0.00120032	  0.00073591	  7.26915971	  0.99633060	  0.99806377  0.49292480
+2576	 -6.27036489	 -0.00119985	  0.00073563	  7.26916504	  0.99633202	  0.99806452  0.49292511
+2577	 -6.27036973	 -0.00119939	  0.00073535	  7.26917034	  0.99633344	  0.99806527  0.49292536
+2578	 -6.27037456	 -0.00119892	  0.00073506	  7.26917564	  0.99633486	  0.99806601  0.49292567
+2579	 -6.27037937	 -0.00119846	  0.00073478	  7.26918091	  0.99633628	  0.99806676  0.49292595
+2580	 -6.27038417	 -0.00119800	  0.00073449	  7.26918617	  0.99633770	  0.99806751  0.49292622
+2581	 -6.27038895	 -0.00119754	  0.00073421	  7.26919142	  0.99633912	  0.99806825  0.49292651
+2582	 -6.27039372	 -0.00119707	  0.00073393	  7.26919664	  0.99634053	  0.99806900  0.49292678
+2583	 -6.27039847	 -0.00119661	  0.00073364	  7.26920186	  0.99634195	  0.99806974  0.49292707
+2584	 -6.27040321	 -0.00119615	  0.00073336	  7.26920706	  0.99634336	  0.99807049  0.49292736
+2585	 -6.27040793	 -0.00119569	  0.00073308	  7.26921224	  0.99634477	  0.99807123  0.49292762
+2586	 -6.27041263	 -0.00119523	  0.00073280	  7.26921740	  0.99634618	  0.99807198  0.49292790
+2587	 -6.27041732	 -0.00119477	  0.00073251	  7.26922256	  0.99634759	  0.99807272  0.49292816
+2588	 -6.27042200	 -0.00119431	  0.00073223	  7.26922769	  0.99634900	  0.99807346  0.49292845
+2589	 -6.27042666	 -0.00119385	  0.00073195	  7.26923281	  0.99635041	  0.99807420  0.49292873
+2590	 -6.27043131	 -0.00119339	  0.00073167	  7.26923792	  0.99635182	  0.99807494  0.49292902
+2591	 -6.27043594	 -0.00119293	  0.00073139	  7.26924301	  0.99635322	  0.99807568  0.49292929
+2592	 -6.27044055	 -0.00119247	  0.00073111	  7.26924808	  0.99635463	  0.99807642  0.49292955
+2593	 -6.27044516	 -0.00119201	  0.00073083	  7.26925314	  0.99635603	  0.99807716  0.49292983
+2594	 -6.27044974	 -0.00119155	  0.00073054	  7.26925819	  0.99635743	  0.99807790  0.49293011
+2595	 -6.27045432	 -0.00119110	  0.00073026	  7.26926322	  0.99635884	  0.99807864  0.49293037
+2596	 -6.27045887	 -0.00119064	  0.00072998	  7.26926823	  0.99636024	  0.99807938  0.49293066
+2597	 -6.27046342	 -0.00119018	  0.00072970	  7.26927323	  0.99636164	  0.99808011  0.49293095
+2598	 -6.27046795	 -0.00118973	  0.00072942	  7.26927822	  0.99636303	  0.99808085  0.49293118
+2599	 -6.27047246	 -0.00118927	  0.00072914	  7.26928319	  0.99636443	  0.99808158  0.49293146
+2600	 -6.27047696	 -0.00118881	  0.00072887	  7.26928815	  0.99636583	  0.99808232  0.49293175
+2601	 -6.27048145	 -0.00118836	  0.00072859	  7.26929309	  0.99636722	  0.99808305  0.49293201
+2602	 -6.27048592	 -0.00118790	  0.00072831	  7.26929802	  0.99636862	  0.99808379  0.49293228
+2603	 -6.27049038	 -0.00118745	  0.00072803	  7.26930293	  0.99637001	  0.99808452  0.49293255
+2604	 -6.27049482	 -0.00118699	  0.00072775	  7.26930783	  0.99637140	  0.99808526  0.49293281
+2605	 -6.27049925	 -0.00118654	  0.00072747	  7.26931271	  0.99637279	  0.99808599  0.49293309
+2606	 -6.27050366	 -0.00118609	  0.00072719	  7.26931758	  0.99637418	  0.99808672  0.49293334
+2607	 -6.27050807	 -0.00118563	  0.00072692	  7.26932243	  0.99637557	  0.99808745  0.49293360
+2608	 -6.27051245	 -0.00118518	  0.00072664	  7.26932727	  0.99637696	  0.99808818  0.49293390
+2609	 -6.27051683	 -0.00118473	  0.00072636	  7.26933210	  0.99637835	  0.99808891  0.49293415
+2610	 -6.27052119	 -0.00118427	  0.00072608	  7.26933691	  0.99637973	  0.99808964  0.49293444
+2611	 -6.27052553	 -0.00118382	  0.00072581	  7.26934171	  0.99638112	  0.99809037  0.49293467
+2612	 -6.27052986	 -0.00118337	  0.00072553	  7.26934649	  0.99638250	  0.99809110  0.49293494
+2613	 -6.27053418	 -0.00118292	  0.00072525	  7.26935126	  0.99638388	  0.99809183  0.49293521
+2614	 -6.27053849	 -0.00118247	  0.00072498	  7.26935602	  0.99638526	  0.99809256  0.49293547
+2615	 -6.27054278	 -0.00118202	  0.00072470	  7.26936076	  0.99638664	  0.99809328  0.49293575
+2616	 -6.27054706	 -0.00118157	  0.00072442	  7.26936549	  0.99638802	  0.99809401  0.49293600
+2617	 -6.27055132	 -0.00118112	  0.00072415	  7.26937020	  0.99638940	  0.99809474  0.49293625
+2618	 -6.27055557	 -0.00118067	  0.00072387	  7.26937491	  0.99639078	  0.99809546  0.49293651
+2619	 -6.27055981	 -0.00118022	  0.00072360	  7.26937959	  0.99639215	  0.99809619  0.49293677
+2620	 -6.27056403	 -0.00117977	  0.00072332	  7.26938427	  0.99639353	  0.99809691  0.49293703
+2621	 -6.27056825	 -0.00117932	  0.00072305	  7.26938893	  0.99639490	  0.99809763  0.49293729
+2622	 -6.27057244	 -0.00117887	  0.00072277	  7.26939357	  0.99639628	  0.99809836  0.49293754
+2623	 -6.27057663	 -0.00117842	  0.00072250	  7.26939820	  0.99639765	  0.99809908  0.49293783
+2624	 -6.27058080	 -0.00117798	  0.00072222	  7.26940282	  0.99639902	  0.99809980  0.49293807
+2625	 -6.27058496	 -0.00117753	  0.00072195	  7.26940743	  0.99640039	  0.99810052  0.49293833
+2626	 -6.27058910	 -0.00117708	  0.00072167	  7.26941202	  0.99640176	  0.99810124  0.49293858
+2627	 -6.27059324	 -0.00117663	  0.00072140	  7.26941660	  0.99640312	  0.99810196  0.49293885
+2628	 -6.27059736	 -0.00117619	  0.00072113	  7.26942117	  0.99640449	  0.99810268  0.49293910
+2629	 -6.27060146	 -0.00117574	  0.00072085	  7.26942572	  0.99640586	  0.99810340  0.49293936
+2630	 -6.27060556	 -0.00117530	  0.00072058	  7.26943026	  0.99640722	  0.99810412  0.49293961
+2631	 -6.27060964	 -0.00117485	  0.00072031	  7.26943479	  0.99640859	  0.99810484  0.49293988
+2632	 -6.27061371	 -0.00117441	  0.00072004	  7.26943930	  0.99640995	  0.99810556  0.49294014
+2633	 -6.27061776	 -0.00117396	  0.00071976	  7.26944380	  0.99641131	  0.99810628  0.49294037
+2634	 -6.27062180	 -0.00117352	  0.00071949	  7.26944829	  0.99641267	  0.99810699  0.49294061
+2635	 -6.27062583	 -0.00117307	  0.00071922	  7.26945276	  0.99641403	  0.99810771  0.49294091
+2636	 -6.27062985	 -0.00117263	  0.00071895	  7.26945722	  0.99641539	  0.99810842  0.49294113
+2637	 -6.27063386	 -0.00117219	  0.00071867	  7.26946167	  0.99641675	  0.99810914  0.49294137
+2638	 -6.27063785	 -0.00117174	  0.00071840	  7.26946611	  0.99641810	  0.99810985  0.49294161
+2639	 -6.27064183	 -0.00117130	  0.00071813	  7.26947053	  0.99641946	  0.99811057  0.49294187
+2640	 -6.27064580	 -0.00117086	  0.00071786	  7.26947494	  0.99642081	  0.99811128  0.49294216
+2641	 -6.27064976	 -0.00117042	  0.00071759	  7.26947934	  0.99642217	  0.99811199  0.49294239
+2642	 -6.27065370	 -0.00116997	  0.00071732	  7.26948372	  0.99642352	  0.99811271  0.49294263
+2643	 -6.27065763	 -0.00116953	  0.00071705	  7.26948810	  0.99642487	  0.99811342  0.49294289
+2644	 -6.27066155	 -0.00116909	  0.00071678	  7.26949246	  0.99642622	  0.99811413  0.49294314
+2645	 -6.27066546	 -0.00116865	  0.00071651	  7.26949680	  0.99642757	  0.99811484  0.49294338
+2646	 -6.27066935	 -0.00116821	  0.00071624	  7.26950114	  0.99642892	  0.99811555  0.49294362
+2647	 -6.27067323	 -0.00116777	  0.00071597	  7.26950546	  0.99643026	  0.99811626  0.49294387
+2648	 -6.27067711	 -0.00116733	  0.00071570	  7.26950977	  0.99643161	  0.99811697  0.49294414
+2649	 -6.27068096	 -0.00116689	  0.00071543	  7.26951407	  0.99643296	  0.99811768  0.49294435
+2650	 -6.27068481	 -0.00116645	  0.00071516	  7.26951836	  0.99643430	  0.99811839  0.49294462
+2651	 -6.27068865	 -0.00116601	  0.00071489	  7.26952263	  0.99643564	  0.99811909  0.49294486
+2652	 -6.27069247	 -0.00116558	  0.00071462	  7.26952689	  0.99643699	  0.99811980  0.49294512
+2653	 -6.27069628	 -0.00116514	  0.00071435	  7.26953114	  0.99643833	  0.99812051  0.49294533
+2654	 -6.27070008	 -0.00116470	  0.00071409	  7.26953538	  0.99643967	  0.99812121  0.49294559
+2655	 -6.27070387	 -0.00116426	  0.00071382	  7.26953961	  0.99644101	  0.99812192  0.49294582
+2656	 -6.27070765	 -0.00116383	  0.00071355	  7.26954382	  0.99644235	  0.99812262  0.49294607
+2657	 -6.27071141	 -0.00116339	  0.00071328	  7.26954802	  0.99644368	  0.99812333  0.49294633
+2658	 -6.27071516	 -0.00116295	  0.00071301	  7.26955221	  0.99644502	  0.99812403  0.49294657
+2659	 -6.27071891	 -0.00116252	  0.00071275	  7.26955639	  0.99644635	  0.99812474  0.49294678
+2660	 -6.27072264	 -0.00116208	  0.00071248	  7.26956056	  0.99644769	  0.99812544  0.49294701
+2661	 -6.27072636	 -0.00116165	  0.00071221	  7.26956471	  0.99644902	  0.99812614  0.49294726
+2662	 -6.27073006	 -0.00116121	  0.00071195	  7.26956885	  0.99645035	  0.99812684  0.49294753
+2663	 -6.27073376	 -0.00116078	  0.00071168	  7.26957298	  0.99645169	  0.99812755  0.49294774
+2664	 -6.27073744	 -0.00116034	  0.00071141	  7.26957710	  0.99645302	  0.99812825  0.49294799
+2665	 -6.27074112	 -0.00115991	  0.00071115	  7.26958121	  0.99645434	  0.99812895  0.49294824
+2666	 -6.27074478	 -0.00115947	  0.00071088	  7.26958531	  0.99645567	  0.99812965  0.49294849
+2667	 -6.27074843	 -0.00115904	  0.00071062	  7.26958939	  0.99645700	  0.99813035  0.49294867
+2668	 -6.27075207	 -0.00115861	  0.00071035	  7.26959347	  0.99645833	  0.99813104  0.49294894
+2669	 -6.27075570	 -0.00115817	  0.00071008	  7.26959753	  0.99645965	  0.99813174  0.49294918
+2670	 -6.27075932	 -0.00115774	  0.00070982	  7.26960158	  0.99646098	  0.99813244  0.49294940
+2671	 -6.27076293	 -0.00115731	  0.00070955	  7.26960562	  0.99646230	  0.99813314  0.49294966
+2672	 -6.27076652	 -0.00115688	  0.00070929	  7.26960965	  0.99646362	  0.99813383  0.49294988
+2673	 -6.27077011	 -0.00115644	  0.00070902	  7.26961366	  0.99646494	  0.99813453  0.49295014
+2674	 -6.27077368	 -0.00115601	  0.00070876	  7.26961767	  0.99646626	  0.99813523  0.49295035
+2675	 -6.27077724	 -0.00115558	  0.00070850	  7.26962166	  0.99646758	  0.99813592  0.49295058
+2676	 -6.27078080	 -0.00115515	  0.00070823	  7.26962565	  0.99646890	  0.99813662  0.49295081
+2677	 -6.27078434	 -0.00115472	  0.00070797	  7.26962962	  0.99647022	  0.99813731  0.49295107
+2678	 -6.27078787	 -0.00115429	  0.00070770	  7.26963358	  0.99647154	  0.99813800  0.49295129
+2679	 -6.27079139	 -0.00115386	  0.00070744	  7.26963753	  0.99647285	  0.99813870  0.49295151
+2680	 -6.27079490	 -0.00115343	  0.00070718	  7.26964147	  0.99647417	  0.99813939  0.49295175
+2681	 -6.27079840	 -0.00115300	  0.00070692	  7.26964540	  0.99647548	  0.99814008  0.49295200
+2682	 -6.27080189	 -0.00115257	  0.00070665	  7.26964931	  0.99647679	  0.99814077  0.49295221
+2683	 -6.27080537	 -0.00115215	  0.00070639	  7.26965322	  0.99647810	  0.99814146  0.49295246
+2684	 -6.27080883	 -0.00115172	  0.00070613	  7.26965711	  0.99647941	  0.99814215  0.49295267
+2685	 -6.27081229	 -0.00115129	  0.00070586	  7.26966100	  0.99648072	  0.99814284  0.49295289
+2686	 -6.27081574	 -0.00115086	  0.00070560	  7.26966487	  0.99648203	  0.99814353  0.49295314
+2687	 -6.27081917	 -0.00115044	  0.00070534	  7.26966874	  0.99648334	  0.99814422  0.49295337
+2688	 -6.27082260	 -0.00115001	  0.00070508	  7.26967259	  0.99648465	  0.99814491  0.49295357
+2689	 -6.27082601	 -0.00114958	  0.00070482	  7.26967643	  0.99648595	  0.99814560  0.49295381
+2690	 -6.27082942	 -0.00114916	  0.00070456	  7.26968026	  0.99648726	  0.99814629  0.49295404
+2691	 -6.27083281	 -0.00114873	  0.00070430	  7.26968408	  0.99648856	  0.99814697  0.49295428
+2692	 -6.27083620	 -0.00114830	  0.00070403	  7.26968789	  0.99648986	  0.99814766  0.49295451
+2693	 -6.27083957	 -0.00114788	  0.00070377	  7.26969169	  0.99649117	  0.99814835  0.49295473
+2694	 -6.27084294	 -0.00114745	  0.00070351	  7.26969548	  0.99649247	  0.99814903  0.49295497
+2695	 -6.27084629	 -0.00114703	  0.00070325	  7.26969926	  0.99649377	  0.99814972  0.49295518
+2696	 -6.27084964	 -0.00114661	  0.00070299	  7.26970303	  0.99649507	  0.99815040  0.49295540
+2697	 -6.27085297	 -0.00114618	  0.00070273	  7.26970679	  0.99649636	  0.99815109  0.49295563
+2698	 -6.27085630	 -0.00114576	  0.00070247	  7.26971054	  0.99649766	  0.99815177  0.49295584
+2699	 -6.27085961	 -0.00114533	  0.00070221	  7.26971428	  0.99649896	  0.99815245  0.49295609
+2700	 -6.27086292	 -0.00114491	  0.00070195	  7.26971800	  0.99650025	  0.99815313  0.49295629
+2701	 -6.27086621	 -0.00114449	  0.00070169	  7.26972172	  0.99650155	  0.99815382  0.49295653
+2702	 -6.27086950	 -0.00114407	  0.00070144	  7.26972543	  0.99650284	  0.99815450  0.49295673
+2703	 -6.27087277	 -0.00114364	  0.00070118	  7.26972913	  0.99650413	  0.99815518  0.49295696
+2704	 -6.27087604	 -0.00114322	  0.00070092	  7.26973281	  0.99650542	  0.99815586  0.49295720
+2705	 -6.27087929	 -0.00114280	  0.00070066	  7.26973649	  0.99650671	  0.99815654  0.49295739
+2706	 -6.27088254	 -0.00114238	  0.00070040	  7.26974016	  0.99650800	  0.99815722  0.49295764
+2707	 -6.27088577	 -0.00114196	  0.00070014	  7.26974382	  0.99650929	  0.99815790  0.49295785
+2708	 -6.27088900	 -0.00114154	  0.00069989	  7.26974746	  0.99651058	  0.99815858  0.49295811
+2709	 -6.27089222	 -0.00114112	  0.00069963	  7.26975110	  0.99651187	  0.99815925  0.49295829
+2710	 -6.27089543	 -0.00114070	  0.00069937	  7.26975473	  0.99651315	  0.99815993  0.49295850
+2711	 -6.27089862	 -0.00114028	  0.00069911	  7.26975835	  0.99651444	  0.99816061  0.49295875
+2712	 -6.27090181	 -0.00113986	  0.00069886	  7.26976195	  0.99651572	  0.99816129  0.49295895
+2713	 -6.27090499	 -0.00113944	  0.00069860	  7.26976555	  0.99651700	  0.99816196  0.49295918
+2714	 -6.27090816	 -0.00113902	  0.00069834	  7.26976914	  0.99651829	  0.99816264  0.49295938
+2715	 -6.27091132	 -0.00113860	  0.00069809	  7.26977272	  0.99651957	  0.99816331  0.49295963
+2716	 -6.27091447	 -0.00113818	  0.00069783	  7.26977629	  0.99652085	  0.99816399  0.49295982
+2717	 -6.27091762	 -0.00113777	  0.00069757	  7.26977985	  0.99652213	  0.99816466  0.49296003
+2718	 -6.27092075	 -0.00113735	  0.00069732	  7.26978340	  0.99652340	  0.99816533  0.49296028
+2719	 -6.27092387	 -0.00113693	  0.00069706	  7.26978694	  0.99652468	  0.99816601  0.49296049
+2720	 -6.27092699	 -0.00113651	  0.00069681	  7.26979047	  0.99652596	  0.99816668  0.49296071
+2721	 -6.27093009	 -0.00113610	  0.00069655	  7.26979399	  0.99652723	  0.99816735  0.49296091
+2722	 -6.27093319	 -0.00113568	  0.00069629	  7.26979751	  0.99652851	  0.99816802  0.49296112
+2723	 -6.27093627	 -0.00113527	  0.00069604	  7.26980101	  0.99652978	  0.99816869  0.49296137
+2724	 -6.27093935	 -0.00113485	  0.00069578	  7.26980450	  0.99653105	  0.99816937  0.49296155
+2725	 -6.27094242	 -0.00113443	  0.00069553	  7.26980799	  0.99653232	  0.99817004  0.49296176
+2726	 -6.27094548	 -0.00113402	  0.00069528	  7.26981146	  0.99653360	  0.99817070  0.49296198
+2727	 -6.27094853	 -0.00113360	  0.00069502	  7.26981493	  0.99653487	  0.99817137  0.49296221
+2728	 -6.27095157	 -0.00113319	  0.00069477	  7.26981838	  0.99653613	  0.99817204  0.49296241
+2729	 -6.27095461	 -0.00113278	  0.00069451	  7.26982183	  0.99653740	  0.99817271  0.49296261
+2730	 -6.27095763	 -0.00113236	  0.00069426	  7.26982527	  0.99653867	  0.99817338  0.49296284
+2731	 -6.27096065	 -0.00113195	  0.00069401	  7.26982870	  0.99653994	  0.99817405  0.49296306
+2732	 -6.27096365	 -0.00113154	  0.00069375	  7.26983212	  0.99654120	  0.99817471  0.49296324
+2733	 -6.27096665	 -0.00113112	  0.00069350	  7.26983553	  0.99654246	  0.99817538  0.49296349
+2734	 -6.27096964	 -0.00113071	  0.00069325	  7.26983893	  0.99654373	  0.99817604  0.49296367
+2735	 -6.27097262	 -0.00113030	  0.00069299	  7.26984232	  0.99654499	  0.99817671  0.49296390
+2736	 -6.27097559	 -0.00112989	  0.00069274	  7.26984571	  0.99654625	  0.99817737  0.49296411
+2737	 -6.27097856	 -0.00112947	  0.00069249	  7.26984908	  0.99654751	  0.99817804  0.49296432
+2738	 -6.27098151	 -0.00112906	  0.00069224	  7.26985245	  0.99654877	  0.99817870  0.49296451
+2739	 -6.27098446	 -0.00112865	  0.00069198	  7.26985581	  0.99655003	  0.99817937  0.49296475
+2740	 -6.27098739	 -0.00112824	  0.00069173	  7.26985915	  0.99655129	  0.99818003  0.49296493
+2741	 -6.27099032	 -0.00112783	  0.00069148	  7.26986249	  0.99655255	  0.99818069  0.49296516
+2742	 -6.27099324	 -0.00112742	  0.00069123	  7.26986583	  0.99655380	  0.99818135  0.49296535
+2743	 -6.27099616	 -0.00112701	  0.00069098	  7.26986915	  0.99655506	  0.99818202  0.49296556
+2744	 -6.27099906	 -0.00112660	  0.00069072	  7.26987246	  0.99655631	  0.99818268  0.49296577
+2745	 -6.27100196	 -0.00112619	  0.00069047	  7.26987577	  0.99655756	  0.99818334  0.49296597
+2746	 -6.27100484	 -0.00112578	  0.00069022	  7.26987906	  0.99655882	  0.99818400  0.49296619
+2747	 -6.27100772	 -0.00112537	  0.00068997	  7.26988235	  0.99656007	  0.99818466  0.49296639
+2748	 -6.27101059	 -0.00112496	  0.00068972	  7.26988563	  0.99656132	  0.99818532  0.49296663
+2749	 -6.27101345	 -0.00112455	  0.00068947	  7.26988890	  0.99656257	  0.99818597  0.49296681
+2750	 -6.27101631	 -0.00112415	  0.00068922	  7.26989216	  0.99656382	  0.99818663  0.49296699
+2751	 -6.27101915	 -0.00112374	  0.00068897	  7.26989541	  0.99656506	  0.99818729  0.49296722
+2752	 -6.27102199	 -0.00112333	  0.00068872	  7.26989866	  0.99656631	  0.99818795  0.49296743
+2753	 -6.27102482	 -0.00112292	  0.00068847	  7.26990189	  0.99656756	  0.99818860  0.49296764
+2754	 -6.27102764	 -0.00112252	  0.00068822	  7.26990512	  0.99656880	  0.99818926  0.49296783
+2755	 -6.27103045	 -0.00112211	  0.00068797	  7.26990834	  0.99657005	  0.99818992  0.49296802
+2756	 -6.27103326	 -0.00112171	  0.00068772	  7.26991155	  0.99657129	  0.99819057  0.49296822
+2757	 -6.27103606	 -0.00112130	  0.00068747	  7.26991476	  0.99657253	  0.99819123  0.49296843
+2758	 -6.27103885	 -0.00112089	  0.00068723	  7.26991795	  0.99657377	  0.99819188  0.49296863
+2759	 -6.27104163	 -0.00112049	  0.00068698	  7.26992114	  0.99657501	  0.99819253  0.49296882
+2760	 -6.27104440	 -0.00112008	  0.00068673	  7.26992432	  0.99657625	  0.99819319  0.49296903
+2761	 -6.27104717	 -0.00111968	  0.00068648	  7.26992749	  0.99657749	  0.99819384  0.49296925
+2762	 -6.27104992	 -0.00111927	  0.00068623	  7.26993065	  0.99657873	  0.99819449  0.49296948
+2763	 -6.27105267	 -0.00111887	  0.00068599	  7.26993380	  0.99657997	  0.99819514  0.49296966
+2764	 -6.27105541	 -0.00111847	  0.00068574	  7.26993695	  0.99658120	  0.99819580  0.49296986
+2765	 -6.27105815	 -0.00111806	  0.00068549	  7.26994009	  0.99658244	  0.99819645  0.49297006
+2766	 -6.27106088	 -0.00111766	  0.00068524	  7.26994322	  0.99658367	  0.99819710  0.49297025
+2767	 -6.27106359	 -0.00111726	  0.00068500	  7.26994634	  0.99658491	  0.99819775  0.49297043
+2768	 -6.27106630	 -0.00111685	  0.00068475	  7.26994945	  0.99658614	  0.99819840  0.49297064
+2769	 -6.27106901	 -0.00111645	  0.00068450	  7.26995256	  0.99658737	  0.99819905  0.49297085
+2770	 -6.27107170	 -0.00111605	  0.00068426	  7.26995565	  0.99658860	  0.99819970  0.49297106
+2771	 -6.27107439	 -0.00111565	  0.00068401	  7.26995874	  0.99658983	  0.99820034  0.49297123
+2772	 -6.27107707	 -0.00111525	  0.00068376	  7.26996183	  0.99659106	  0.99820099  0.49297145
+2773	 -6.27107974	 -0.00111484	  0.00068352	  7.26996490	  0.99659229	  0.99820164  0.49297165
+2774	 -6.27108241	 -0.00111444	  0.00068327	  7.26996797	  0.99659352	  0.99820229  0.49297182
+2775	 -6.27108507	 -0.00111404	  0.00068302	  7.26997103	  0.99659474	  0.99820293  0.49297202
+2776	 -6.27108772	 -0.00111364	  0.00068278	  7.26997408	  0.99659597	  0.99820358  0.49297222
+2777	 -6.27109036	 -0.00111324	  0.00068253	  7.26997712	  0.99659719	  0.99820422  0.49297241
+2778	 -6.27109300	 -0.00111284	  0.00068229	  7.26998015	  0.99659842	  0.99820487  0.49297262
+2779	 -6.27109562	 -0.00111244	  0.00068204	  7.26998318	  0.99659964	  0.99820551  0.49297281
+2780	 -6.27109825	 -0.00111204	  0.00068180	  7.26998620	  0.99660086	  0.99820616  0.49297301
+2781	 -6.27110086	 -0.00111164	  0.00068155	  7.26998921	  0.99660208	  0.99820680  0.49297320
+2782	 -6.27110347	 -0.00111125	  0.00068131	  7.26999222	  0.99660330	  0.99820744  0.49297339
+2783	 -6.27110606	 -0.00111085	  0.00068106	  7.26999522	  0.99660452	  0.99820809  0.49297359
+2784	 -6.27110866	 -0.00111045	  0.00068082	  7.26999821	  0.99660574	  0.99820873  0.49297380
+2785	 -6.27111124	 -0.00111005	  0.00068058	  7.27000119	  0.99660696	  0.99820937  0.49297397
+2786	 -6.27111382	 -0.00110965	  0.00068033	  7.27000416	  0.99660818	  0.99821001  0.49297417
+2787	 -6.27111639	 -0.00110926	  0.00068009	  7.27000713	  0.99660939	  0.99821065  0.49297437
+2788	 -6.27111895	 -0.00110886	  0.00067985	  7.27001009	  0.99661061	  0.99821129  0.49297456
+2789	 -6.27112151	 -0.00110846	  0.00067960	  7.27001304	  0.99661182	  0.99821193  0.49297477
+2790	 -6.27112405	 -0.00110807	  0.00067936	  7.27001599	  0.99661303	  0.99821257  0.49297493
+2791	 -6.27112660	 -0.00110767	  0.00067912	  7.27001892	  0.99661425	  0.99821321  0.49297516
+2792	 -6.27112913	 -0.00110728	  0.00067887	  7.27002185	  0.99661546	  0.99821385  0.49297533
+2793	 -6.27113166	 -0.00110688	  0.00067863	  7.27002478	  0.99661667	  0.99821449  0.49297550
+2794	 -6.27113418	 -0.00110648	  0.00067839	  7.27002769	  0.99661788	  0.99821513  0.49297572
+2795	 -6.27113669	 -0.00110609	  0.00067815	  7.27003060	  0.99661909	  0.99821576  0.49297589
+2796	 -6.27113920	 -0.00110569	  0.00067790	  7.27003350	  0.99662030	  0.99821640  0.49297607
+2797	 -6.27114170	 -0.00110530	  0.00067766	  7.27003640	  0.99662150	  0.99821704  0.49297628
+2798	 -6.27114419	 -0.00110491	  0.00067742	  7.27003928	  0.99662271	  0.99821767  0.49297646
+2799	 -6.27114668	 -0.00110451	  0.00067718	  7.27004216	  0.99662392	  0.99821831  0.49297664
+2800	 -6.27114915	 -0.00110412	  0.00067694	  7.27004504	  0.99662512	  0.99821894  0.49297684
+2801	 -6.27115163	 -0.00110372	  0.00067670	  7.27004790	  0.99662632	  0.99821958  0.49297702
+2802	 -6.27115409	 -0.00110333	  0.00067646	  7.27005076	  0.99662753	  0.99822021  0.49297723
+2803	 -6.27115655	 -0.00110294	  0.00067621	  7.27005361	  0.99662873	  0.99822085  0.49297742
+2804	 -6.27115900	 -0.00110255	  0.00067597	  7.27005646	  0.99662993	  0.99822148  0.49297759
+2805	 -6.27116145	 -0.00110215	  0.00067573	  7.27005929	  0.99663113	  0.99822211  0.49297781
+2806	 -6.27116389	 -0.00110176	  0.00067549	  7.27006212	  0.99663233	  0.99822274  0.49297799
+2807	 -6.27116632	 -0.00110137	  0.00067525	  7.27006495	  0.99663353	  0.99822338  0.49297818
+2808	 -6.27116874	 -0.00110098	  0.00067501	  7.27006776	  0.99663473	  0.99822401  0.49297837
+2809	 -6.27117116	 -0.00110059	  0.00067477	  7.27007057	  0.99663592	  0.99822464  0.49297853
+2810	 -6.27117357	 -0.00110020	  0.00067453	  7.27007338	  0.99663712	  0.99822527  0.49297873
+2811	 -6.27117598	 -0.00109981	  0.00067429	  7.27007617	  0.99663832	  0.99822590  0.49297890
+2812	 -6.27117838	 -0.00109942	  0.00067405	  7.27007896	  0.99663951	  0.99822653  0.49297910
+2813	 -6.27118077	 -0.00109903	  0.00067381	  7.27008174	  0.99664070	  0.99822716  0.49297929
+2814	 -6.27118315	 -0.00109864	  0.00067358	  7.27008452	  0.99664190	  0.99822779  0.49297945
+2815	 -6.27118553	 -0.00109825	  0.00067334	  7.27008729	  0.99664309	  0.99822842  0.49297965
+2816	 -6.27118791	 -0.00109786	  0.00067310	  7.27009005	  0.99664428	  0.99822904  0.49297987
+2817	 -6.27119027	 -0.00109747	  0.00067286	  7.27009280	  0.99664547	  0.99822967  0.49298005
+2818	 -6.27119263	 -0.00109708	  0.00067262	  7.27009555	  0.99664666	  0.99823030  0.49298023
+2819	 -6.27119499	 -0.00109669	  0.00067238	  7.27009829	  0.99664785	  0.99823092  0.49298041
+2820	 -6.27119733	 -0.00109630	  0.00067214	  7.27010103	  0.99664904	  0.99823155  0.49298056
+2821	 -6.27119968	 -0.00109592	  0.00067191	  7.27010376	  0.99665022	  0.99823218  0.49298074
+2822	 -6.27120201	 -0.00109553	  0.00067167	  7.27010648	  0.99665141	  0.99823280  0.49298095
+2823	 -6.27120434	 -0.00109514	  0.00067143	  7.27010920	  0.99665259	  0.99823343  0.49298115
+2824	 -6.27120666	 -0.00109475	  0.00067119	  7.27011190	  0.99665378	  0.99823405  0.49298131
+2825	 -6.27120898	 -0.00109437	  0.00067096	  7.27011461	  0.99665496	  0.99823467  0.49298149
+2826	 -6.27121129	 -0.00109398	  0.00067072	  7.27011730	  0.99665614	  0.99823530  0.49298166
+2827	 -6.27121359	 -0.00109360	  0.00067048	  7.27011999	  0.99665733	  0.99823592  0.49298185
+2828	 -6.27121589	 -0.00109321	  0.00067025	  7.27012268	  0.99665851	  0.99823654  0.49298202
+2829	 -6.27121818	 -0.00109282	  0.00067001	  7.27012535	  0.99665969	  0.99823717  0.49298224
+2830	 -6.27122046	 -0.00109244	  0.00066977	  7.27012802	  0.99666087	  0.99823779  0.49298236
+2831	 -6.27122274	 -0.00109205	  0.00066954	  7.27013069	  0.99666205	  0.99823841  0.49298260
+2832	 -6.27122501	 -0.00109167	  0.00066930	  7.27013334	  0.99666322	  0.99823903  0.49298275
+2833	 -6.27122728	 -0.00109128	  0.00066907	  7.27013600	  0.99666440	  0.99823965  0.49298294
+2834	 -6.27122954	 -0.00109090	  0.00066883	  7.27013864	  0.99666558	  0.99824027  0.49298313
+2835	 -6.27123179	 -0.00109052	  0.00066859	  7.27014128	  0.99666675	  0.99824089  0.49298330
+2836	 -6.27123404	 -0.00109013	  0.00066836	  7.27014391	  0.99666793	  0.99824151  0.49298351
+2837	 -6.27123629	 -0.00108975	  0.00066812	  7.27014654	  0.99666910	  0.99824213  0.49298363
+2838	 -6.27123852	 -0.00108937	  0.00066789	  7.27014916	  0.99667027	  0.99824275  0.49298382
+2839	 -6.27124075	 -0.00108898	  0.00066765	  7.27015177	  0.99667144	  0.99824336  0.49298401
+2840	 -6.27124298	 -0.00108860	  0.00066742	  7.27015438	  0.99667261	  0.99824398  0.49298420
+2841	 -6.27124520	 -0.00108822	  0.00066718	  7.27015698	  0.99667379	  0.99824460  0.49298438
+2842	 -6.27124741	 -0.00108784	  0.00066695	  7.27015957	  0.99667495	  0.99824521  0.49298453
+2843	 -6.27124962	 -0.00108745	  0.00066672	  7.27016216	  0.99667612	  0.99824583  0.49298471
+2844	 -6.27125182	 -0.00108707	  0.00066648	  7.27016475	  0.99667729	  0.99824645  0.49298491
+2845	 -6.27125401	 -0.00108669	  0.00066625	  7.27016732	  0.99667846	  0.99824706  0.49298510
+2846	 -6.27125620	 -0.00108631	  0.00066601	  7.27016989	  0.99667962	  0.99824768  0.49298524
+2847	 -6.27125839	 -0.00108593	  0.00066578	  7.27017246	  0.99668079	  0.99824829  0.49298544
+2848	 -6.27126057	 -0.00108555	  0.00066555	  7.27017502	  0.99668195	  0.99824890  0.49298562
+2849	 -6.27126274	 -0.00108517	  0.00066531	  7.27017757	  0.99668312	  0.99824952  0.49298575
+2850	 -6.27126490	 -0.00108479	  0.00066508	  7.27018012	  0.99668428	  0.99825013  0.49298596
+2851	 -6.27126707	 -0.00108441	  0.00066485	  7.27018266	  0.99668544	  0.99825074  0.49298614
+2852	 -6.27126922	 -0.00108403	  0.00066461	  7.27018519	  0.99668660	  0.99825136  0.49298629
+2853	 -6.27127137	 -0.00108365	  0.00066438	  7.27018772	  0.99668776	  0.99825197  0.49298647
+2854	 -6.27127351	 -0.00108327	  0.00066415	  7.27019024	  0.99668892	  0.99825258  0.49298665
+2855	 -6.27127565	 -0.00108289	  0.00066392	  7.27019276	  0.99669008	  0.99825319  0.49298685
+2856	 -6.27127779	 -0.00108251	  0.00066369	  7.27019527	  0.99669124	  0.99825380  0.49298701
+2857	 -6.27127991	 -0.00108214	  0.00066345	  7.27019778	  0.99669240	  0.99825441  0.49298719
+2858	 -6.27128204	 -0.00108176	  0.00066322	  7.27020028	  0.99669356	  0.99825502  0.49298735
+2859	 -6.27128415	 -0.00108138	  0.00066299	  7.27020277	  0.99669471	  0.99825563  0.49298754
+2860	 -6.27128626	 -0.00108100	  0.00066276	  7.27020526	  0.99669587	  0.99825624  0.49298772
+2861	 -6.27128837	 -0.00108063	  0.00066253	  7.27020774	  0.99669702	  0.99825685  0.49298787
+2862	 -6.27129047	 -0.00108025	  0.00066230	  7.27021022	  0.99669817	  0.99825746  0.49298806
+2863	 -6.27129256	 -0.00107987	  0.00066206	  7.27021269	  0.99669933	  0.99825806  0.49298822
+2864	 -6.27129465	 -0.00107950	  0.00066183	  7.27021516	  0.99670048	  0.99825867  0.49298838
+2865	 -6.27129674	 -0.00107912	  0.00066160	  7.27021762	  0.99670163	  0.99825928  0.49298857
+2866	 -6.27129881	 -0.00107874	  0.00066137	  7.27022007	  0.99670278	  0.99825988  0.49298872
+2867	 -6.27130089	 -0.00107837	  0.00066114	  7.27022252	  0.99670393	  0.99826049  0.49298890
+2868	 -6.27130295	 -0.00107799	  0.00066091	  7.27022496	  0.99670508	  0.99826109  0.49298906
+2869	 -6.27130502	 -0.00107762	  0.00066068	  7.27022740	  0.99670622	  0.99826170  0.49298921
+2870	 -6.27130707	 -0.00107724	  0.00066045	  7.27022983	  0.99670737	  0.99826230  0.49298942
+2871	 -6.27130913	 -0.00107687	  0.00066022	  7.27023226	  0.99670852	  0.99826291  0.49298958
+2872	 -6.27131117	 -0.00107649	  0.00065999	  7.27023468	  0.99670966	  0.99826351  0.49298977
+2873	 -6.27131321	 -0.00107612	  0.00065976	  7.27023709	  0.99671081	  0.99826412  0.49298992
+2874	 -6.27131525	 -0.00107575	  0.00065953	  7.27023950	  0.99671195	  0.99826472  0.49299011
+2875	 -6.27131728	 -0.00107537	  0.00065931	  7.27024191	  0.99671309	  0.99826532  0.49299028
+2876	 -6.27131930	 -0.00107500	  0.00065908	  7.27024430	  0.99671423	  0.99826592  0.49299042
+2877	 -6.27132133	 -0.00107463	  0.00065885	  7.27024670	  0.99671538	  0.99826653  0.49299058
+2878	 -6.27132334	 -0.00107425	  0.00065862	  7.27024909	  0.99671652	  0.99826713  0.49299077
+2879	 -6.27132535	 -0.00107388	  0.00065839	  7.27025147	  0.99671766	  0.99826773  0.49299096
+2880	 -6.27132736	 -0.00107351	  0.00065816	  7.27025385	  0.99671879	  0.99826833  0.49299111
+2881	 -6.27132936	 -0.00107314	  0.00065793	  7.27025622	  0.99671993	  0.99826893  0.49299126
+2882	 -6.27133135	 -0.00107277	  0.00065771	  7.27025858	  0.99672107	  0.99826953  0.49299144
+2883	 -6.27133334	 -0.00107239	  0.00065748	  7.27026094	  0.99672221	  0.99827013  0.49299160
+2884	 -6.27133532	 -0.00107202	  0.00065725	  7.27026330	  0.99672334	  0.99827073  0.49299180
+2885	 -6.27133730	 -0.00107165	  0.00065702	  7.27026565	  0.99672448	  0.99827132  0.49299193
+2886	 -6.27133928	 -0.00107128	  0.00065680	  7.27026800	  0.99672561	  0.99827192  0.49299212
+2887	 -6.27134125	 -0.00107091	  0.00065657	  7.27027034	  0.99672674	  0.99827252  0.49299227
+2888	 -6.27134321	 -0.00107054	  0.00065634	  7.27027267	  0.99672788	  0.99827312  0.49299243
+2889	 -6.27134517	 -0.00107017	  0.00065611	  7.27027500	  0.99672901	  0.99827371  0.49299259
+2890	 -6.27134713	 -0.00106980	  0.00065589	  7.27027733	  0.99673014	  0.99827431  0.49299280
+2891	 -6.27134908	 -0.00106943	  0.00065566	  7.27027964	  0.99673127	  0.99827491  0.49299296
+2892	 -6.27135102	 -0.00106906	  0.00065543	  7.27028196	  0.99673240	  0.99827550  0.49299309
+2893	 -6.27135296	 -0.00106870	  0.00065521	  7.27028427	  0.99673353	  0.99827610  0.49299327
+2894	 -6.27135490	 -0.00106833	  0.00065498	  7.27028657	  0.99673466	  0.99827669  0.49299344
+2895	 -6.27135683	 -0.00106796	  0.00065476	  7.27028887	  0.99673578	  0.99827729  0.49299361
+2896	 -6.27135875	 -0.00106759	  0.00065453	  7.27029116	  0.99673691	  0.99827788  0.49299378
+2897	 -6.27136067	 -0.00106722	  0.00065430	  7.27029345	  0.99673804	  0.99827847  0.49299395
+2898	 -6.27136259	 -0.00106685	  0.00065408	  7.27029574	  0.99673916	  0.99827907  0.49299413
+2899	 -6.27136450	 -0.00106649	  0.00065385	  7.27029801	  0.99674028	  0.99827966  0.49299427
+2900	 -6.27136641	 -0.00106612	  0.00065363	  7.27030029	  0.99674141	  0.99828025  0.49299442
+2901	 -6.27136831	 -0.00106575	  0.00065340	  7.27030256	  0.99674253	  0.99828084  0.49299460
+2902	 -6.27137021	 -0.00106539	  0.00065318	  7.27030482	  0.99674365	  0.99828143  0.49299474
+2903	 -6.27137210	 -0.00106502	  0.00065295	  7.27030708	  0.99674477	  0.99828203  0.49299490
+2904	 -6.27137399	 -0.00106465	  0.00065273	  7.27030933	  0.99674589	  0.99828262  0.49299509
+2905	 -6.27137587	 -0.00106429	  0.00065250	  7.27031158	  0.99674701	  0.99828321  0.49299525
+2906	 -6.27137775	 -0.00106392	  0.00065228	  7.27031382	  0.99674813	  0.99828380  0.49299541
+2907	 -6.27137962	 -0.00106356	  0.00065206	  7.27031606	  0.99674925	  0.99828439  0.49299561
+2908	 -6.27138149	 -0.00106319	  0.00065183	  7.27031830	  0.99675037	  0.99828497  0.49299573
+2909	 -6.27138335	 -0.00106283	  0.00065161	  7.27032053	  0.99675148	  0.99828556  0.49299589
+2910	 -6.27138521	 -0.00106246	  0.00065139	  7.27032275	  0.99675260	  0.99828615  0.49299603
+2911	 -6.27138707	 -0.00106210	  0.00065116	  7.27032497	  0.99675371	  0.99828674  0.49299621
+2912	 -6.27138892	 -0.00106173	  0.00065094	  7.27032719	  0.99675483	  0.99828733  0.49299635
+2913	 -6.27139077	 -0.00106137	  0.00065072	  7.27032940	  0.99675594	  0.99828791  0.49299653
+2914	 -6.27139261	 -0.00106101	  0.00065049	  7.27033160	  0.99675705	  0.99828850  0.49299670
+2915	 -6.27139445	 -0.00106064	  0.00065027	  7.27033380	  0.99675816	  0.99828909  0.49299687
+2916	 -6.27139628	 -0.00106028	  0.00065005	  7.27033600	  0.99675928	  0.99828967  0.49299705
+2917	 -6.27139811	 -0.00105992	  0.00064982	  7.27033819	  0.99676039	  0.99829026  0.49299718
+2918	 -6.27139993	 -0.00105956	  0.00064960	  7.27034037	  0.99676150	  0.99829084  0.49299736
+2919	 -6.27140175	 -0.00105919	  0.00064938	  7.27034256	  0.99676260	  0.99829143  0.49299751
+2920	 -6.27140356	 -0.00105883	  0.00064916	  7.27034473	  0.99676371	  0.99829201  0.49299765
+2921	 -6.27140537	 -0.00105847	  0.00064893	  7.27034690	  0.99676482	  0.99829260  0.49299782
+2922	 -6.27140718	 -0.00105811	  0.00064871	  7.27034907	  0.99676593	  0.99829318  0.49299800
+2923	 -6.27140898	 -0.00105775	  0.00064849	  7.27035123	  0.99676703	  0.99829376  0.49299816
+2924	 -6.27141078	 -0.00105739	  0.00064827	  7.27035339	  0.99676814	  0.99829434  0.49299833
+2925	 -6.27141257	 -0.00105702	  0.00064805	  7.27035555	  0.99676924	  0.99829493  0.49299845
+2926	 -6.27141436	 -0.00105666	  0.00064783	  7.27035770	  0.99677034	  0.99829551  0.49299862
+2927	 -6.27141614	 -0.00105630	  0.00064761	  7.27035984	  0.99677145	  0.99829609  0.49299878
+2928	 -6.27141792	 -0.00105594	  0.00064739	  7.27036198	  0.99677255	  0.99829667  0.49299891
+2929	 -6.27141970	 -0.00105558	  0.00064716	  7.27036412	  0.99677365	  0.99829725  0.49299912
+2930	 -6.27142147	 -0.00105522	  0.00064694	  7.27036625	  0.99677475	  0.99829783  0.49299926
+2931	 -6.27142324	 -0.00105486	  0.00064672	  7.27036837	  0.99677585	  0.99829841  0.49299943
+2932	 -6.27142500	 -0.00105451	  0.00064650	  7.27037050	  0.99677695	  0.99829899  0.49299955
+2933	 -6.27142676	 -0.00105415	  0.00064628	  7.27037261	  0.99677805	  0.99829957  0.49299971
+2934	 -6.27142851	 -0.00105379	  0.00064606	  7.27037473	  0.99677914	  0.99830015  0.49299984
+2935	 -6.27143026	 -0.00105343	  0.00064584	  7.27037683	  0.99678024	  0.99830073  0.49300001
+2936	 -6.27143201	 -0.00105307	  0.00064562	  7.27037894	  0.99678134	  0.99830131  0.49300017
+2937	 -6.27143375	 -0.00105271	  0.00064540	  7.27038104	  0.99678243	  0.99830188  0.49300033
+2938	 -6.27143549	 -0.00105236	  0.00064518	  7.27038313	  0.99678353	  0.99830246  0.49300050
+2939	 -6.27143722	 -0.00105200	  0.00064496	  7.27038522	  0.99678462	  0.99830304  0.49300065
+2940	 -6.27143895	 -0.00105164	  0.00064475	  7.27038731	  0.99678571	  0.99830361  0.49300081
+2941	 -6.27144068	 -0.00105128	  0.00064453	  7.27038939	  0.99678681	  0.99830419  0.49300096
+2942	 -6.27144240	 -0.00105093	  0.00064431	  7.27039147	  0.99678790	  0.99830477  0.49300112
+2943	 -6.27144412	 -0.00105057	  0.00064409	  7.27039355	  0.99678899	  0.99830534  0.49300126
+2944	 -6.27144583	 -0.00105021	  0.00064387	  7.27039561	  0.99679008	  0.99830592  0.49300141
+2945	 -6.27144754	 -0.00104986	  0.00064365	  7.27039768	  0.99679117	  0.99830649  0.49300158
+2946	 -6.27144924	 -0.00104950	  0.00064343	  7.27039974	  0.99679226	  0.99830706  0.49300174
+2947	 -6.27145094	 -0.00104915	  0.00064322	  7.27040180	  0.99679334	  0.99830764  0.49300191
+2948	 -6.27145264	 -0.00104879	  0.00064300	  7.27040385	  0.99679443	  0.99830821  0.49300203
+2949	 -6.27145433	 -0.00104844	  0.00064278	  7.27040590	  0.99679552	  0.99830878  0.49300220
+2950	 -6.27145602	 -0.00104808	  0.00064256	  7.27040794	  0.99679660	  0.99830936  0.49300234
+2951	 -6.27145771	 -0.00104773	  0.00064234	  7.27040998	  0.99679769	  0.99830993  0.49300248
+2952	 -6.27145939	 -0.00104737	  0.00064213	  7.27041202	  0.99679877	  0.99831050  0.49300264
+2953	 -6.27146107	 -0.00104702	  0.00064191	  7.27041405	  0.99679986	  0.99831107  0.49300280
+2954	 -6.27146274	 -0.00104667	  0.00064169	  7.27041607	  0.99680094	  0.99831164  0.49300294
+2955	 -6.27146441	 -0.00104631	  0.00064148	  7.27041810	  0.99680202	  0.99831221  0.49300310
+2956	 -6.27146607	 -0.00104596	  0.00064126	  7.27042012	  0.99680310	  0.99831278  0.49300325
+2957	 -6.27146774	 -0.00104561	  0.00064104	  7.27042213	  0.99680418	  0.99831335  0.49300340
+2958	 -6.27146939	 -0.00104525	  0.00064083	  7.27042414	  0.99680526	  0.99831392  0.49300357
+2959	 -6.27147105	 -0.00104490	  0.00064061	  7.27042615	  0.99680634	  0.99831449  0.49300370
+2960	 -6.27147270	 -0.00104455	  0.00064039	  7.27042815	  0.99680742	  0.99831506  0.49300390
+2961	 -6.27147434	 -0.00104420	  0.00064018	  7.27043015	  0.99680850	  0.99831563  0.49300402
+2962	 -6.27147599	 -0.00104384	  0.00063996	  7.27043214	  0.99680957	  0.99831620  0.49300417
+2963	 -6.27147762	 -0.00104349	  0.00063975	  7.27043413	  0.99681065	  0.99831676  0.49300431
+2964	 -6.27147926	 -0.00104314	  0.00063953	  7.27043612	  0.99681172	  0.99831733  0.49300449
+2965	 -6.27148089	 -0.00104279	  0.00063931	  7.27043810	  0.99681280	  0.99831790  0.49300460
+2966	 -6.27148252	 -0.00104244	  0.00063910	  7.27044008	  0.99681387	  0.99831846  0.49300478
+2967	 -6.27148414	 -0.00104209	  0.00063888	  7.27044205	  0.99681495	  0.99831903  0.49300494
+2968	 -6.27148576	 -0.00104174	  0.00063867	  7.27044402	  0.99681602	  0.99831959  0.49300507
+2969	 -6.27148738	 -0.00104139	  0.00063845	  7.27044599	  0.99681709	  0.99832016  0.49300523
+2970	 -6.27148899	 -0.00104104	  0.00063824	  7.27044795	  0.99681816	  0.99832072  0.49300537
+2971	 -6.27149060	 -0.00104069	  0.00063802	  7.27044991	  0.99681923	  0.99832129  0.49300552
+2972	 -6.27149220	 -0.00104034	  0.00063781	  7.27045186	  0.99682030	  0.99832185  0.49300567
+2973	 -6.27149380	 -0.00103999	  0.00063760	  7.27045382	  0.99682137	  0.99832242  0.49300583
+2974	 -6.27149540	 -0.00103964	  0.00063738	  7.27045576	  0.99682244	  0.99832298  0.49300595
+2975	 -6.27149699	 -0.00103929	  0.00063717	  7.27045771	  0.99682351	  0.99832354  0.49300609
+2976	 -6.27149859	 -0.00103894	  0.00063695	  7.27045964	  0.99682457	  0.99832411  0.49300627
+2977	 -6.27150017	 -0.00103859	  0.00063674	  7.27046158	  0.99682564	  0.99832467  0.49300642
+2978	 -6.27150175	 -0.00103824	  0.00063653	  7.27046351	  0.99682670	  0.99832523  0.49300653
+2979	 -6.27150333	 -0.00103790	  0.00063631	  7.27046544	  0.99682777	  0.99832579  0.49300671
+2980	 -6.27150491	 -0.00103755	  0.00063610	  7.27046736	  0.99682883	  0.99832635  0.49300686
+2981	 -6.27150648	 -0.00103720	  0.00063589	  7.27046928	  0.99682990	  0.99832691  0.49300700
+2982	 -6.27150805	 -0.00103685	  0.00063567	  7.27047120	  0.99683096	  0.99832747  0.49300717
+2983	 -6.27150962	 -0.00103651	  0.00063546	  7.27047311	  0.99683202	  0.99832803  0.49300731
+2984	 -6.27151118	 -0.00103616	  0.00063525	  7.27047502	  0.99683308	  0.99832859  0.49300742
+2985	 -6.27151274	 -0.00103581	  0.00063503	  7.27047692	  0.99683414	  0.99832915  0.49300759
+2986	 -6.27151429	 -0.00103547	  0.00063482	  7.27047882	  0.99683520	  0.99832971  0.49300775
+2987	 -6.27151584	 -0.00103512	  0.00063461	  7.27048072	  0.99683626	  0.99833027  0.49300787
+2988	 -6.27151739	 -0.00103478	  0.00063440	  7.27048262	  0.99683732	  0.99833083  0.49300803
+2989	 -6.27151893	 -0.00103443	  0.00063419	  7.27048451	  0.99683838	  0.99833138  0.49300818
+2990	 -6.27152048	 -0.00103408	  0.00063397	  7.27048639	  0.99683943	  0.99833194  0.49300831
+2991	 -6.27152201	 -0.00103374	  0.00063376	  7.27048827	  0.99684049	  0.99833250  0.49300846
+2992	 -6.27152355	 -0.00103339	  0.00063355	  7.27049015	  0.99684154	  0.99833306  0.49300863
+2993	 -6.27152508	 -0.00103305	  0.00063334	  7.27049203	  0.99684260	  0.99833361  0.49300877
+2994	 -6.27152660	 -0.00103270	  0.00063313	  7.27049390	  0.99684365	  0.99833417  0.49300891
+2995	 -6.27152813	 -0.00103236	  0.00063292	  7.27049577	  0.99684471	  0.99833472  0.49300907
+2996	 -6.27152965	 -0.00103202	  0.00063271	  7.27049763	  0.99684576	  0.99833528  0.49300922
+2997	 -6.27153117	 -0.00103167	  0.00063249	  7.27049949	  0.99684681	  0.99833583  0.49300935
+2998	 -6.27153268	 -0.00103133	  0.00063228	  7.27050135	  0.99684786	  0.99833639  0.49300949
+2999	 -6.27153419	 -0.00103099	  0.00063207	  7.27050320	  0.99684891	  0.99833694  0.49300966
+3000	 -6.27153570	 -0.00103064	  0.00063186	  7.27050505	  0.99684996	  0.99833749  0.49300980
+3001	 -6.27153720	 -0.00103030	  0.00063165	  7.27050690	  0.99685101	  0.99833805  0.49300992
+3002	 -6.27153870	 -0.00102996	  0.00063144	  7.27050874	  0.99685206	  0.99833860  0.49301003
+3003	 -6.27154020	 -0.00102961	  0.00063123	  7.27051058	  0.99685311	  0.99833915  0.49301024
+3004	 -6.27154169	 -0.00102927	  0.00063102	  7.27051242	  0.99685415	  0.99833971  0.49301036
+3005	 -6.27154318	 -0.00102893	  0.00063081	  7.27051425	  0.99685520	  0.99834026  0.49301051
+3006	 -6.27154467	 -0.00102859	  0.00063060	  7.27051608	  0.99685625	  0.99834081  0.49301064
+3007	 -6.27154615	 -0.00102825	  0.00063039	  7.27051791	  0.99685729	  0.99834136  0.49301076
+3008	 -6.27154763	 -0.00102791	  0.00063018	  7.27051973	  0.99685834	  0.99834191  0.49301089
+3009	 -6.27154911	 -0.00102756	  0.00062997	  7.27052155	  0.99685938	  0.99834246  0.49301105
+3010	 -6.27155059	 -0.00102722	  0.00062976	  7.27052336	  0.99686042	  0.99834301  0.49301119
+3011	 -6.27155206	 -0.00102688	  0.00062956	  7.27052517	  0.99686146	  0.99834356  0.49301134
+3012	 -6.27155352	 -0.00102654	  0.00062935	  7.27052698	  0.99686251	  0.99834411  0.49301148
+3013	 -6.27155499	 -0.00102620	  0.00062914	  7.27052879	  0.99686355	  0.99834466  0.49301163
+3014	 -6.27155645	 -0.00102586	  0.00062893	  7.27053059	  0.99686459	  0.99834521  0.49301176
+3015	 -6.27155791	 -0.00102552	  0.00062872	  7.27053239	  0.99686563	  0.99834576  0.49301188
+3016	 -6.27155936	 -0.00102518	  0.00062851	  7.27053418	  0.99686666	  0.99834630  0.49301206
+3017	 -6.27156082	 -0.00102484	  0.00062830	  7.27053597	  0.99686770	  0.99834685  0.49301220
+3018	 -6.27156226	 -0.00102451	  0.00062810	  7.27053776	  0.99686874	  0.99834740  0.49301233
+3019	 -6.27156371	 -0.00102417	  0.00062789	  7.27053954	  0.99686978	  0.99834794  0.49301246
+3020	 -6.27156515	 -0.00102383	  0.00062768	  7.27054132	  0.99687081	  0.99834849  0.49301262
+3021	 -6.27156659	 -0.00102349	  0.00062747	  7.27054310	  0.99687185	  0.99834904  0.49301280
+3022	 -6.27156803	 -0.00102315	  0.00062727	  7.27054488	  0.99687288	  0.99834958  0.49301294
+3023	 -6.27156946	 -0.00102281	  0.00062706	  7.27054665	  0.99687392	  0.99835013  0.49301309
+3024	 -6.27157089	 -0.00102248	  0.00062685	  7.27054842	  0.99687495	  0.99835067  0.49301319
+3025	 -6.27157232	 -0.00102214	  0.00062664	  7.27055018	  0.99687598	  0.99835122  0.49301335
+3026	 -6.27157374	 -0.00102180	  0.00062644	  7.27055194	  0.99687701	  0.99835176  0.49301345
+3027	 -6.27157517	 -0.00102146	  0.00062623	  7.27055370	  0.99687805	  0.99835231  0.49301362
+3028	 -6.27157658	 -0.00102113	  0.00062602	  7.27055546	  0.99687908	  0.99835285  0.49301372
+3029	 -6.27157800	 -0.00102079	  0.00062582	  7.27055721	  0.99688011	  0.99835339  0.49301383
+3030	 -6.27157941	 -0.00102045	  0.00062561	  7.27055896	  0.99688113	  0.99835393  0.49301405
+3031	 -6.27158082	 -0.00102012	  0.00062540	  7.27056070	  0.99688216	  0.99835448  0.49301418
+3032	 -6.27158223	 -0.00101978	  0.00062520	  7.27056244	  0.99688319	  0.99835502  0.49301433
+3033	 -6.27158363	 -0.00101945	  0.00062499	  7.27056418	  0.99688422	  0.99835556  0.49301444
+3034	 -6.27158503	 -0.00101911	  0.00062479	  7.27056592	  0.99688524	  0.99835610  0.49301454
+3035	 -6.27158643	 -0.00101878	  0.00062458	  7.27056765	  0.99688627	  0.99835664  0.49301468
+3036	 -6.27158782	 -0.00101844	  0.00062438	  7.27056938	  0.99688730	  0.99835718  0.49301483
+3037	 -6.27158921	 -0.00101811	  0.00062417	  7.27057111	  0.99688832	  0.99835772  0.49301499
+3038	 -6.27159060	 -0.00101777	  0.00062396	  7.27057283	  0.99688934	  0.99835826  0.49301513
+3039	 -6.27159199	 -0.00101744	  0.00062376	  7.27057455	  0.99689037	  0.99835880  0.49301528
+3040	 -6.27159337	 -0.00101710	  0.00062355	  7.27057627	  0.99689139	  0.99835934  0.49301541
+3041	 -6.27159475	 -0.00101677	  0.00062335	  7.27057798	  0.99689241	  0.99835988  0.49301553
+3042	 -6.27159613	 -0.00101644	  0.00062314	  7.27057969	  0.99689343	  0.99836042  0.49301569
+3043	 -6.27159750	 -0.00101610	  0.00062294	  7.27058140	  0.99689445	  0.99836096  0.49301584
+3044	 -6.27159887	 -0.00101577	  0.00062274	  7.27058310	  0.99689547	  0.99836150  0.49301593
+3045	 -6.27160024	 -0.00101544	  0.00062253	  7.27058480	  0.99689649	  0.99836203  0.49301608
+3046	 -6.27160160	 -0.00101510	  0.00062233	  7.27058650	  0.99689751	  0.99836257  0.49301621
+3047	 -6.27160297	 -0.00101477	  0.00062212	  7.27058820	  0.99689853	  0.99836311  0.49301634
+3048	 -6.27160433	 -0.00101444	  0.00062192	  7.27058989	  0.99689954	  0.99836364  0.49301647
+3049	 -6.27160568	 -0.00101410	  0.00062171	  7.27059158	  0.99690056	  0.99836418  0.49301663
+3050	 -6.27160704	 -0.00101377	  0.00062151	  7.27059327	  0.99690158	  0.99836472  0.49301679
+3051	 -6.27160839	 -0.00101344	  0.00062131	  7.27059495	  0.99690259	  0.99836525  0.49301693
+3052	 -6.27160974	 -0.00101311	  0.00062110	  7.27059663	  0.99690361	  0.99836579  0.49301706
+3053	 -6.27161108	 -0.00101278	  0.00062090	  7.27059831	  0.99690462	  0.99836632  0.49301722
+3054	 -6.27161243	 -0.00101245	  0.00062070	  7.27059998	  0.99690563	  0.99836686  0.49301730
+3055	 -6.27161377	 -0.00101212	  0.00062049	  7.27060165	  0.99690664	  0.99836739  0.49301748
+3056	 -6.27161511	 -0.00101179	  0.00062029	  7.27060332	  0.99690766	  0.99836792  0.49301757
+3057	 -6.27161644	 -0.00101146	  0.00062009	  7.27060499	  0.99690867	  0.99836846  0.49301772
+3058	 -6.27161777	 -0.00101112	  0.00061989	  7.27060665	  0.99690968	  0.99836899  0.49301787
+3059	 -6.27161910	 -0.00101079	  0.00061968	  7.27060831	  0.99691069	  0.99836952  0.49301798
+3060	 -6.27162043	 -0.00101046	  0.00061948	  7.27060996	  0.99691170	  0.99837005  0.49301811
+3061	 -6.27162175	 -0.00101014	  0.00061928	  7.27061162	  0.99691271	  0.99837059  0.49301825
+3062	 -6.27162307	 -0.00100981	  0.00061908	  7.27061327	  0.99691371	  0.99837112  0.49301840
+3063	 -6.27162439	 -0.00100948	  0.00061887	  7.27061492	  0.99691472	  0.99837165  0.49301855
+3064	 -6.27162571	 -0.00100915	  0.00061867	  7.27061656	  0.99691573	  0.99837218  0.49301866
+3065	 -6.27162702	 -0.00100882	  0.00061847	  7.27061820	  0.99691673	  0.99837271  0.49301881
+3066	 -6.27162833	 -0.00100849	  0.00061827	  7.27061984	  0.99691774	  0.99837324  0.49301892
+3067	 -6.27162964	 -0.00100816	  0.00061807	  7.27062148	  0.99691874	  0.99837377  0.49301906
+3068	 -6.27163095	 -0.00100783	  0.00061787	  7.27062311	  0.99691975	  0.99837430  0.49301923
+3069	 -6.27163225	 -0.00100751	  0.00061767	  7.27062474	  0.99692075	  0.99837483  0.49301935
+3070	 -6.27163355	 -0.00100718	  0.00061746	  7.27062637	  0.99692175	  0.99837536  0.49301944
+3071	 -6.27163485	 -0.00100685	  0.00061726	  7.27062800	  0.99692275	  0.99837589  0.49301961
+3072	 -6.27163614	 -0.00100652	  0.00061706	  7.27062962	  0.99692375	  0.99837641  0.49301974
+3073	 -6.27163743	 -0.00100620	  0.00061686	  7.27063124	  0.99692476	  0.99837694  0.49301990
+3074	 -6.27163872	 -0.00100587	  0.00061666	  7.27063285	  0.99692576	  0.99837747  0.49301996
+3075	 -6.27164001	 -0.00100554	  0.00061646	  7.27063447	  0.99692675	  0.99837800  0.49302013
+3076	 -6.27164130	 -0.00100522	  0.00061626	  7.27063608	  0.99692775	  0.99837852  0.49302024
+3077	 -6.27164258	 -0.00100489	  0.00061606	  7.27063769	  0.99692875	  0.99837905  0.49302039
+3078	 -6.27164386	 -0.00100456	  0.00061586	  7.27063929	  0.99692975	  0.99837957  0.49302050
+3079	 -6.27164513	 -0.00100424	  0.00061566	  7.27064090	  0.99693075	  0.99838010  0.49302064
+3080	 -6.27164641	 -0.00100391	  0.00061546	  7.27064250	  0.99693174	  0.99838063  0.49302080
+3081	 -6.27164768	 -0.00100359	  0.00061526	  7.27064409	  0.99693274	  0.99838115  0.49302092
+3082	 -6.27164895	 -0.00100326	  0.00061506	  7.27064569	  0.99693373	  0.99838168  0.49302106
+3083	 -6.27165022	 -0.00100294	  0.00061486	  7.27064728	  0.99693473	  0.99838220  0.49302117
+3084	 -6.27165148	 -0.00100261	  0.00061466	  7.27064887	  0.99693572	  0.99838272  0.49302135
+3085	 -6.27165274	 -0.00100229	  0.00061446	  7.27065045	  0.99693671	  0.99838325  0.49302147
+3086	 -6.27165400	 -0.00100196	  0.00061427	  7.27065204	  0.99693770	  0.99838377  0.49302161
+3087	 -6.27165526	 -0.00100164	  0.00061407	  7.27065362	  0.99693870	  0.99838429  0.49302174
+3088	 -6.27165651	 -0.00100132	  0.00061387	  7.27065520	  0.99693969	  0.99838482  0.49302182
+3089	 -6.27165777	 -0.00100099	  0.00061367	  7.27065677	  0.99694068	  0.99838534  0.49302200
+3090	 -6.27165902	 -0.00100067	  0.00061347	  7.27065835	  0.99694167	  0.99838586  0.49302214
+3091	 -6.27166026	 -0.00100035	  0.00061327	  7.27065992	  0.99694266	  0.99838638  0.49302227
+3092	 -6.27166151	 -0.00100002	  0.00061307	  7.27066149	  0.99694364	  0.99838690  0.49302237
+3093	 -6.27166275	 -0.00099970	  0.00061288	  7.27066305	  0.99694463	  0.99838742  0.49302253
+3094	 -6.27166399	 -0.00099938	  0.00061268	  7.27066461	  0.99694562	  0.99838795  0.49302264
+3095	 -6.27166523	 -0.00099905	  0.00061248	  7.27066617	  0.99694660	  0.99838847  0.49302277
+3096	 -6.27166646	 -0.00099873	  0.00061228	  7.27066773	  0.99694759	  0.99838899  0.49302290
+3097	 -6.27166770	 -0.00099841	  0.00061208	  7.27066928	  0.99694858	  0.99838951  0.49302301
+3098	 -6.27166893	 -0.00099809	  0.00061189	  7.27067084	  0.99694956	  0.99839002  0.49302315
+3099	 -6.27167015	 -0.00099777	  0.00061169	  7.27067239	  0.99695054	  0.99839054  0.49302331
+3100	 -6.27167138	 -0.00099745	  0.00061149	  7.27067393	  0.99695153	  0.99839106  0.49302343
+3101	 -6.27167260	 -0.00099712	  0.00061130	  7.27067548	  0.99695251	  0.99839158  0.49302354
+3102	 -6.27167382	 -0.00099680	  0.00061110	  7.27067702	  0.99695349	  0.99839210  0.49302367
+3103	 -6.27167504	 -0.00099648	  0.00061090	  7.27067856	  0.99695447	  0.99839262  0.49302378
+3104	 -6.27167626	 -0.00099616	  0.00061070	  7.27068010	  0.99695545	  0.99839313  0.49302391
+3105	 -6.27167747	 -0.00099584	  0.00061051	  7.27068163	  0.99695643	  0.99839365  0.49302405
+3106	 -6.27167868	 -0.00099552	  0.00061031	  7.27068316	  0.99695741	  0.99839417  0.49302418
+3107	 -6.27167989	 -0.00099520	  0.00061012	  7.27068469	  0.99695839	  0.99839468  0.49302428
+3108	 -6.27168110	 -0.00099488	  0.00060992	  7.27068622	  0.99695937	  0.99839520  0.49302442
+3109	 -6.27168231	 -0.00099456	  0.00060972	  7.27068774	  0.99696035	  0.99839571  0.49302457
+3110	 -6.27168351	 -0.00099424	  0.00060953	  7.27068927	  0.99696133	  0.99839623  0.49302469
+3111	 -6.27168471	 -0.00099392	  0.00060933	  7.27069078	  0.99696230	  0.99839674  0.49302483
+3112	 -6.27168591	 -0.00099360	  0.00060914	  7.27069230	  0.99696328	  0.99839726  0.49302493
+3113	 -6.27168710	 -0.00099329	  0.00060894	  7.27069382	  0.99696425	  0.99839777  0.49302510
+3114	 -6.27168829	 -0.00099297	  0.00060874	  7.27069533	  0.99696523	  0.99839829  0.49302519
+3115	 -6.27168949	 -0.00099265	  0.00060855	  7.27069684	  0.99696620	  0.99839880  0.49302531
+3116	 -6.27169067	 -0.00099233	  0.00060835	  7.27069834	  0.99696717	  0.99839931  0.49302546
+3117	 -6.27169186	 -0.00099201	  0.00060816	  7.27069985	  0.99696815	  0.99839983  0.49302559
+3118	 -6.27169305	 -0.00099170	  0.00060796	  7.27070135	  0.99696912	  0.99840034  0.49302572
+3119	 -6.27169423	 -0.00099138	  0.00060777	  7.27070285	  0.99697009	  0.99840085  0.49302581
+3120	 -6.27169541	 -0.00099106	  0.00060757	  7.27070435	  0.99697106	  0.99840137  0.49302594
+3121	 -6.27169659	 -0.00099074	  0.00060738	  7.27070584	  0.99697203	  0.99840188  0.49302606
+3122	 -6.27169776	 -0.00099043	  0.00060719	  7.27070734	  0.99697300	  0.99840239  0.49302620
+3123	 -6.27169893	 -0.00099011	  0.00060699	  7.27070883	  0.99697397	  0.99840290  0.49302635
+3124	 -6.27170011	 -0.00098979	  0.00060680	  7.27071031	  0.99697494	  0.99840341  0.49302644
+3125	 -6.27170128	 -0.00098948	  0.00060660	  7.27071180	  0.99697590	  0.99840392  0.49302662
+3126	 -6.27170244	 -0.00098916	  0.00060641	  7.27071328	  0.99697687	  0.99840443  0.49302676
+3127	 -6.27170361	 -0.00098884	  0.00060622	  7.27071476	  0.99697784	  0.99840494  0.49302682
+3128	 -6.27170477	 -0.00098853	  0.00060602	  7.27071624	  0.99697880	  0.99840545  0.49302696
+3129	 -6.27170593	 -0.00098821	  0.00060583	  7.27071772	  0.99697977	  0.99840596  0.49302711
+3130	 -6.27170709	 -0.00098790	  0.00060563	  7.27071919	  0.99698073	  0.99840647  0.49302721
+3131	 -6.27170825	 -0.00098758	  0.00060544	  7.27072066	  0.99698170	  0.99840698  0.49302733
+3132	 -6.27170940	 -0.00098727	  0.00060525	  7.27072213	  0.99698266	  0.99840748  0.49302748
+3133	 -6.27171055	 -0.00098695	  0.00060505	  7.27072360	  0.99698362	  0.99840799  0.49302765
+3134	 -6.27171170	 -0.00098664	  0.00060486	  7.27072506	  0.99698459	  0.99840850  0.49302773
+3135	 -6.27171285	 -0.00098633	  0.00060467	  7.27072652	  0.99698555	  0.99840901  0.49302786
+3136	 -6.27171399	 -0.00098601	  0.00060448	  7.27072798	  0.99698651	  0.99840951  0.49302797
+3137	 -6.27171514	 -0.00098570	  0.00060428	  7.27072944	  0.99698747	  0.99841002  0.49302811
+3138	 -6.27171628	 -0.00098538	  0.00060409	  7.27073090	  0.99698843	  0.99841053  0.49302824
+3139	 -6.27171742	 -0.00098507	  0.00060390	  7.27073235	  0.99698939	  0.99841103  0.49302835
+3140	 -6.27171856	 -0.00098476	  0.00060371	  7.27073380	  0.99699035	  0.99841154  0.49302848
+3141	 -6.27171969	 -0.00098444	  0.00060351	  7.27073525	  0.99699130	  0.99841204  0.49302858
+3142	 -6.27172082	 -0.00098413	  0.00060332	  7.27073669	  0.99699226	  0.99841255  0.49302871
+3143	 -6.27172196	 -0.00098382	  0.00060313	  7.27073814	  0.99699322	  0.99841305  0.49302887
+3144	 -6.27172309	 -0.00098351	  0.00060294	  7.27073958	  0.99699417	  0.99841356  0.49302895
+3145	 -6.27172421	 -0.00098319	  0.00060275	  7.27074102	  0.99699513	  0.99841406  0.49302912
+3146	 -6.27172534	 -0.00098288	  0.00060256	  7.27074246	  0.99699608	  0.99841456  0.49302925
+3147	 -6.27172646	 -0.00098257	  0.00060236	  7.27074389	  0.99699704	  0.99841507  0.49302935
+3148	 -6.27172758	 -0.00098226	  0.00060217	  7.27074532	  0.99699799	  0.99841557  0.49302945
+3149	 -6.27172870	 -0.00098195	  0.00060198	  7.27074676	  0.99699894	  0.99841607  0.49302959
+3150	 -6.27172982	 -0.00098163	  0.00060179	  7.27074818	  0.99699990	  0.99841657  0.49302970
+3151	 -6.27173093	 -0.00098132	  0.00060160	  7.27074961	  0.99700085	  0.99841708  0.49302981
+3152	 -6.27173205	 -0.00098101	  0.00060141	  7.27075103	  0.99700180	  0.99841758  0.49302992
+3153	 -6.27173316	 -0.00098070	  0.00060122	  7.27075246	  0.99700275	  0.99841808  0.49303009
+3154	 -6.27173427	 -0.00098039	  0.00060103	  7.27075388	  0.99700370	  0.99841858  0.49303019
+3155	 -6.27173537	 -0.00098008	  0.00060084	  7.27075529	  0.99700465	  0.99841908  0.49303031
+3156	 -6.27173648	 -0.00097977	  0.00060065	  7.27075671	  0.99700560	  0.99841958  0.49303044
+3157	 -6.27173758	 -0.00097946	  0.00060046	  7.27075812	  0.99700655	  0.99842008  0.49303056
+3158	 -6.27173868	 -0.00097915	  0.00060027	  7.27075953	  0.99700749	  0.99842058  0.49303069
+3159	 -6.27173978	 -0.00097884	  0.00060008	  7.27076094	  0.99700844	  0.99842108  0.49303080
+3160	 -6.27174088	 -0.00097853	  0.00059989	  7.27076235	  0.99700939	  0.99842158  0.49303094
+3161	 -6.27174198	 -0.00097822	  0.00059970	  7.27076375	  0.99701033	  0.99842208  0.49303107
+3162	 -6.27174307	 -0.00097791	  0.00059951	  7.27076516	  0.99701128	  0.99842258  0.49303120
+3163	 -6.27174416	 -0.00097761	  0.00059932	  7.27076656	  0.99701222	  0.99842308  0.49303132
+3164	 -6.27174525	 -0.00097730	  0.00059913	  7.27076795	  0.99701317	  0.99842357  0.49303142
+3165	 -6.27174634	 -0.00097699	  0.00059894	  7.27076935	  0.99701411	  0.99842407  0.49303154
+3166	 -6.27174743	 -0.00097668	  0.00059875	  7.27077075	  0.99701505	  0.99842457  0.49303168
+3167	 -6.27174851	 -0.00097637	  0.00059856	  7.27077214	  0.99701599	  0.99842507  0.49303176
+3168	 -6.27174959	 -0.00097606	  0.00059837	  7.27077353	  0.99701693	  0.99842556  0.49303192
+3169	 -6.27175067	 -0.00097576	  0.00059818	  7.27077491	  0.99701788	  0.99842606  0.49303205
+3170	 -6.27175175	 -0.00097545	  0.00059800	  7.27077630	  0.99701882	  0.99842656  0.49303212
+3171	 -6.27175283	 -0.00097514	  0.00059781	  7.27077769	  0.99701976	  0.99842705  0.49303223
+3172	 -6.27175390	 -0.00097484	  0.00059762	  7.27077907	  0.99702070	  0.99842755  0.49303239
+3173	 -6.27175497	 -0.00097453	  0.00059743	  7.27078045	  0.99702163	  0.99842804  0.49303247
+3174	 -6.27175605	 -0.00097422	  0.00059724	  7.27078182	  0.99702257	  0.99842854  0.49303263
+3175	 -6.27175712	 -0.00097392	  0.00059705	  7.27078320	  0.99702351	  0.99842903  0.49303277
+3176	 -6.27175818	 -0.00097361	  0.00059687	  7.27078457	  0.99702445	  0.99842952  0.49303287
+3177	 -6.27175925	 -0.00097330	  0.00059668	  7.27078595	  0.99702538	  0.99843002  0.49303298
+3178	 -6.27176031	 -0.00097300	  0.00059649	  7.27078731	  0.99702632	  0.99843051  0.49303309
+3179	 -6.27176137	 -0.00097269	  0.00059630	  7.27078868	  0.99702725	  0.99843101  0.49303324
+3180	 -6.27176243	 -0.00097239	  0.00059612	  7.27079005	  0.99702819	  0.99843150  0.49303337
+3181	 -6.27176349	 -0.00097208	  0.00059593	  7.27079141	  0.99702912	  0.99843199  0.49303342
+3182	 -6.27176455	 -0.00097178	  0.00059574	  7.27079277	  0.99703005	  0.99843248  0.49303355
+3183	 -6.27176560	 -0.00097147	  0.00059555	  7.27079413	  0.99703099	  0.99843298  0.49303367
+3184	 -6.27176666	 -0.00097117	  0.00059537	  7.27079549	  0.99703192	  0.99843347  0.49303384
+3185	 -6.27176771	 -0.00097086	  0.00059518	  7.27079685	  0.99703285	  0.99843396  0.49303391
+3186	 -6.27176876	 -0.00097056	  0.00059499	  7.27079820	  0.99703378	  0.99843445  0.49303404
+3187	 -6.27176980	 -0.00097025	  0.00059481	  7.27079955	  0.99703471	  0.99843494  0.49303417
+3188	 -6.27177085	 -0.00096995	  0.00059462	  7.27080090	  0.99703564	  0.99843543  0.49303426
+3189	 -6.27177189	 -0.00096965	  0.00059443	  7.27080225	  0.99703657	  0.99843592  0.49303442
+3190	 -6.27177294	 -0.00096934	  0.00059425	  7.27080359	  0.99703750	  0.99843641  0.49303454
+3191	 -6.27177398	 -0.00096904	  0.00059406	  7.27080494	  0.99703843	  0.99843690  0.49303464
+3192	 -6.27177502	 -0.00096874	  0.00059388	  7.27080628	  0.99703936	  0.99843739  0.49303476
+3193	 -6.27177605	 -0.00096843	  0.00059369	  7.27080762	  0.99704028	  0.99843788  0.49303487
+3194	 -6.27177709	 -0.00096813	  0.00059350	  7.27080896	  0.99704121	  0.99843837  0.49303501
+3195	 -6.27177812	 -0.00096783	  0.00059332	  7.27081030	  0.99704213	  0.99843886  0.49303512
+3196	 -6.27177915	 -0.00096752	  0.00059313	  7.27081163	  0.99704306	  0.99843934  0.49303521
+3197	 -6.27178018	 -0.00096722	  0.00059295	  7.27081296	  0.99704398	  0.99843983  0.49303537
+3198	 -6.27178121	 -0.00096692	  0.00059276	  7.27081429	  0.99704491	  0.99844032  0.49303546
+3199	 -6.27178224	 -0.00096662	  0.00059258	  7.27081562	  0.99704583	  0.99844081  0.49303558
+3200	 -6.27178326	 -0.00096632	  0.00059239	  7.27081695	  0.99704675	  0.99844129  0.49303575
+3201	 -6.27178429	 -0.00096602	  0.00059221	  7.27081827	  0.99704768	  0.99844178  0.49303581
+3202	 -6.27178531	 -0.00096571	  0.00059202	  7.27081960	  0.99704860	  0.99844227  0.49303591
+3203	 -6.27178633	 -0.00096541	  0.00059184	  7.27082092	  0.99704952	  0.99844275  0.49303609
+3204	 -6.27178735	 -0.00096511	  0.00059165	  7.27082224	  0.99705044	  0.99844324  0.49303618
+3205	 -6.27178836	 -0.00096481	  0.00059147	  7.27082355	  0.99705136	  0.99844372  0.49303628
+3206	 -6.27178938	 -0.00096451	  0.00059128	  7.27082487	  0.99705228	  0.99844421  0.49303641
+3207	 -6.27179039	 -0.00096421	  0.00059110	  7.27082618	  0.99705320	  0.99844469  0.49303652
+3208	 -6.27179140	 -0.00096391	  0.00059091	  7.27082749	  0.99705412	  0.99844518  0.49303666
+3209	 -6.27179242	 -0.00096361	  0.00059073	  7.27082881	  0.99705503	  0.99844566  0.49303673
+3210	 -6.27179342	 -0.00096331	  0.00059055	  7.27083011	  0.99705595	  0.99844614  0.49303690
+3211	 -6.27179443	 -0.00096301	  0.00059036	  7.27083142	  0.99705687	  0.99844663  0.49303700
+3212	 -6.27179544	 -0.00096271	  0.00059018	  7.27083272	  0.99705778	  0.99844711  0.49303712
+3213	 -6.27179644	 -0.00096241	  0.00058999	  7.27083403	  0.99705870	  0.99844759  0.49303722
+3214	 -6.27179744	 -0.00096211	  0.00058981	  7.27083533	  0.99705961	  0.99844808  0.49303732
+3215	 -6.27179844	 -0.00096181	  0.00058963	  7.27083663	  0.99706053	  0.99844856  0.49303745
+3216	 -6.27179944	 -0.00096152	  0.00058944	  7.27083792	  0.99706144	  0.99844904  0.49303757
+3217	 -6.27180044	 -0.00096122	  0.00058926	  7.27083922	  0.99706235	  0.99844952  0.49303771
+3218	 -6.27180143	 -0.00096092	  0.00058908	  7.27084051	  0.99706327	  0.99845000  0.49303777
+3219	 -6.27180243	 -0.00096062	  0.00058890	  7.27084181	  0.99706418	  0.99845048  0.49303795
+3220	 -6.27180342	 -0.00096032	  0.00058871	  7.27084310	  0.99706509	  0.99845097  0.49303802
+3221	 -6.27180441	 -0.00096002	  0.00058853	  7.27084438	  0.99706600	  0.99845145  0.49303815
+3222	 -6.27180540	 -0.00095973	  0.00058835	  7.27084567	  0.99706691	  0.99845193  0.49303827
+3223	 -6.27180639	 -0.00095943	  0.00058816	  7.27084696	  0.99706782	  0.99845241  0.49303836
+3224	 -6.27180737	 -0.00095913	  0.00058798	  7.27084824	  0.99706873	  0.99845289  0.49303844
+3225	 -6.27180836	 -0.00095884	  0.00058780	  7.27084952	  0.99706964	  0.99845336  0.49303861
+3226	 -6.27180934	 -0.00095854	  0.00058762	  7.27085080	  0.99707055	  0.99845384  0.49303868
+3227	 -6.27181032	 -0.00095824	  0.00058744	  7.27085208	  0.99707145	  0.99845432  0.49303884
+3228	 -6.27181130	 -0.00095795	  0.00058725	  7.27085335	  0.99707236	  0.99845480  0.49303895
+3229	 -6.27181228	 -0.00095765	  0.00058707	  7.27085463	  0.99707327	  0.99845528  0.49303908
+3230	 -6.27181325	 -0.00095735	  0.00058689	  7.27085590	  0.99707417	  0.99845576  0.49303915
+3231	 -6.27181423	 -0.00095706	  0.00058671	  7.27085717	  0.99707508	  0.99845623  0.49303928
+3232	 -6.27181520	 -0.00095676	  0.00058653	  7.27085844	  0.99707598	  0.99845671  0.49303940
+3233	 -6.27181618	 -0.00095647	  0.00058635	  7.27085971	  0.99707689	  0.99845719  0.49303950
+3234	 -6.27181715	 -0.00095617	  0.00058616	  7.27086098	  0.99707779	  0.99845766  0.49303965
+3235	 -6.27181811	 -0.00095588	  0.00058598	  7.27086224	  0.99707869	  0.99845814  0.49303979
+3236	 -6.27181908	 -0.00095558	  0.00058580	  7.27086350	  0.99707960	  0.99845862  0.49303989
+3237	 -6.27182005	 -0.00095529	  0.00058562	  7.27086476	  0.99708050	  0.99845909  0.49303994
+3238	 -6.27182101	 -0.00095499	  0.00058544	  7.27086602	  0.99708140	  0.99845957  0.49304006
+3239	 -6.27182198	 -0.00095470	  0.00058526	  7.27086728	  0.99708230	  0.99846004  0.49304023
+3240	 -6.27182294	 -0.00095440	  0.00058508	  7.27086854	  0.99708320	  0.99846052  0.49304031
+3241	 -6.27182390	 -0.00095411	  0.00058490	  7.27086979	  0.99708410	  0.99846099  0.49304040
+3242	 -6.27182486	 -0.00095381	  0.00058472	  7.27087104	  0.99708500	  0.99846147  0.49304052
+3243	 -6.27182581	 -0.00095352	  0.00058454	  7.27087229	  0.99708590	  0.99846194  0.49304066
+3244	 -6.27182677	 -0.00095323	  0.00058436	  7.27087354	  0.99708680	  0.99846242  0.49304078
+3245	 -6.27182772	 -0.00095293	  0.00058418	  7.27087479	  0.99708769	  0.99846289  0.49304090
+3246	 -6.27182867	 -0.00095264	  0.00058400	  7.27087603	  0.99708859	  0.99846336  0.49304102
+3247	 -6.27182963	 -0.00095235	  0.00058382	  7.27087728	  0.99708949	  0.99846383  0.49304112
+3248	 -6.27183058	 -0.00095205	  0.00058364	  7.27087852	  0.99709038	  0.99846431  0.49304120
+3249	 -6.27183152	 -0.00095176	  0.00058346	  7.27087976	  0.99709128	  0.99846478  0.49304129
+3250	 -6.27183247	 -0.00095147	  0.00058328	  7.27088100	  0.99709217	  0.99846525  0.49304145
+3251	 -6.27183342	 -0.00095118	  0.00058310	  7.27088224	  0.99709307	  0.99846572  0.49304157
+3252	 -6.27183436	 -0.00095088	  0.00058292	  7.27088348	  0.99709396	  0.99846619  0.49304165
+3253	 -6.27183530	 -0.00095059	  0.00058274	  7.27088471	  0.99709485	  0.99846667  0.49304175
+3254	 -6.27183624	 -0.00095030	  0.00058256	  7.27088594	  0.99709575	  0.99846714  0.49304190
+3255	 -6.27183718	 -0.00095001	  0.00058238	  7.27088717	  0.99709664	  0.99846761  0.49304204
+3256	 -6.27183812	 -0.00094972	  0.00058221	  7.27088840	  0.99709753	  0.99846808  0.49304212
+3257	 -6.27183906	 -0.00094943	  0.00058203	  7.27088963	  0.99709842	  0.99846855  0.49304222
+3258	 -6.27183999	 -0.00094914	  0.00058185	  7.27089086	  0.99709931	  0.99846902  0.49304233
+3259	 -6.27184093	 -0.00094884	  0.00058167	  7.27089208	  0.99710020	  0.99846949  0.49304245
+3260	 -6.27184186	 -0.00094855	  0.00058149	  7.27089331	  0.99710109	  0.99846996  0.49304255
+3261	 -6.27184279	 -0.00094826	  0.00058131	  7.27089453	  0.99710198	  0.99847042  0.49304263
+3262	 -6.27184372	 -0.00094797	  0.00058113	  7.27089575	  0.99710287	  0.99847089  0.49304277
+3263	 -6.27184465	 -0.00094768	  0.00058096	  7.27089697	  0.99710375	  0.99847136  0.49304288
+3264	 -6.27184558	 -0.00094739	  0.00058078	  7.27089818	  0.99710464	  0.99847183  0.49304302
+3265	 -6.27184650	 -0.00094710	  0.00058060	  7.27089940	  0.99710553	  0.99847230  0.49304309
+3266	 -6.27184743	 -0.00094681	  0.00058042	  7.27090061	  0.99710641	  0.99847276  0.49304322
+3267	 -6.27184835	 -0.00094652	  0.00058025	  7.27090182	  0.99710730	  0.99847323  0.49304332
+3268	 -6.27184927	 -0.00094623	  0.00058007	  7.27090304	  0.99710818	  0.99847370  0.49304348
+3269	 -6.27185019	 -0.00094595	  0.00057989	  7.27090424	  0.99710907	  0.99847416  0.49304351
+3270	 -6.27185111	 -0.00094566	  0.00057971	  7.27090545	  0.99710995	  0.99847463  0.49304363
+3271	 -6.27185203	 -0.00094537	  0.00057954	  7.27090666	  0.99711083	  0.99847510  0.49304378
+3272	 -6.27185294	 -0.00094508	  0.00057936	  7.27090786	  0.99711172	  0.99847556  0.49304390
+3273	 -6.27185386	 -0.00094479	  0.00057918	  7.27090907	  0.99711260	  0.99847603  0.49304399
+3274	 -6.27185477	 -0.00094450	  0.00057901	  7.27091027	  0.99711348	  0.99847649  0.49304412
+3275	 -6.27185568	 -0.00094421	  0.00057883	  7.27091147	  0.99711436	  0.99847696  0.49304419
+3276	 -6.27185659	 -0.00094393	  0.00057865	  7.27091267	  0.99711524	  0.99847742  0.49304433
+3277	 -6.27185750	 -0.00094364	  0.00057848	  7.27091386	  0.99711612	  0.99847789  0.49304445
+3278	 -6.27185841	 -0.00094335	  0.00057830	  7.27091506	  0.99711700	  0.99847835  0.49304453
+3279	 -6.27185932	 -0.00094306	  0.00057812	  7.27091625	  0.99711788	  0.99847881  0.49304463
+3280	 -6.27186022	 -0.00094278	  0.00057795	  7.27091745	  0.99711876	  0.99847928  0.49304471
+3281	 -6.27186113	 -0.00094249	  0.00057777	  7.27091864	  0.99711964	  0.99847974  0.49304488
+3282	 -6.27186203	 -0.00094220	  0.00057759	  7.27091983	  0.99712051	  0.99848020  0.49304496
+3283	 -6.27186293	 -0.00094192	  0.00057742	  7.27092101	  0.99712139	  0.99848067  0.49304509
+3284	 -6.27186383	 -0.00094163	  0.00057724	  7.27092220	  0.99712227	  0.99848113  0.49304521
+3285	 -6.27186473	 -0.00094134	  0.00057707	  7.27092339	  0.99712314	  0.99848159  0.49304528
+3286	 -6.27186563	 -0.00094106	  0.00057689	  7.27092457	  0.99712402	  0.99848205  0.49304542
+3287	 -6.27186652	 -0.00094077	  0.00057672	  7.27092575	  0.99712489	  0.99848251  0.49304552
+3288	 -6.27186742	 -0.00094049	  0.00057654	  7.27092693	  0.99712577	  0.99848297  0.49304562
+3289	 -6.27186831	 -0.00094020	  0.00057636	  7.27092811	  0.99712664	  0.99848344  0.49304571
+3290	 -6.27186920	 -0.00093991	  0.00057619	  7.27092929	  0.99712751	  0.99848390  0.49304585
+3291	 -6.27187010	 -0.00093963	  0.00057601	  7.27093047	  0.99712839	  0.99848436  0.49304595
+3292	 -6.27187098	 -0.00093934	  0.00057584	  7.27093164	  0.99712926	  0.99848482  0.49304606
+3293	 -6.27187187	 -0.00093906	  0.00057567	  7.27093281	  0.99713013	  0.99848528  0.49304619
+3294	 -6.27187276	 -0.00093877	  0.00057549	  7.27093399	  0.99713100	  0.99848574  0.49304625
+3295	 -6.27187365	 -0.00093849	  0.00057532	  7.27093516	  0.99713187	  0.99848619  0.49304638
+3296	 -6.27187453	 -0.00093821	  0.00057514	  7.27093633	  0.99713274	  0.99848665  0.49304650
+3297	 -6.27187541	 -0.00093792	  0.00057497	  7.27093749	  0.99713361	  0.99848711  0.49304662
+3298	 -6.27187630	 -0.00093764	  0.00057479	  7.27093866	  0.99713448	  0.99848757  0.49304675
+3299	 -6.27187718	 -0.00093735	  0.00057462	  7.27093983	  0.99713535	  0.99848803  0.49304680
+3300	 -6.27187806	 -0.00093707	  0.00057444	  7.27094099	  0.99713622	  0.99848849  0.49304696
+3301	 -6.27187894	 -0.00093679	  0.00057427	  7.27094215	  0.99713708	  0.99848894  0.49304701
+3302	 -6.27187981	 -0.00093650	  0.00057410	  7.27094331	  0.99713795	  0.99848940  0.49304717
+3303	 -6.27188069	 -0.00093622	  0.00057392	  7.27094447	  0.99713882	  0.99848986  0.49304726
+3304	 -6.27188156	 -0.00093594	  0.00057375	  7.27094563	  0.99713968	  0.99849031  0.49304734
+3305	 -6.27188244	 -0.00093565	  0.00057358	  7.27094678	  0.99714055	  0.99849077  0.49304749
+3306	 -6.27188331	 -0.00093537	  0.00057340	  7.27094794	  0.99714141	  0.99849123  0.49304756
+3307	 -6.27188418	 -0.00093509	  0.00057323	  7.27094909	  0.99714228	  0.99849168  0.49304769
+3308	 -6.27188505	 -0.00093481	  0.00057306	  7.27095025	  0.99714314	  0.99849214  0.49304781
+3309	 -6.27188592	 -0.00093452	  0.00057288	  7.27095140	  0.99714400	  0.99849259  0.49304789
+3310	 -6.27188679	 -0.00093424	  0.00057271	  7.27095255	  0.99714486	  0.99849305  0.49304797
+3311	 -6.27188765	 -0.00093396	  0.00057254	  7.27095369	  0.99714573	  0.99849350  0.49304811
+3312	 -6.27188852	 -0.00093368	  0.00057236	  7.27095484	  0.99714659	  0.99849396  0.49304819
+3313	 -6.27188938	 -0.00093340	  0.00057219	  7.27095599	  0.99714745	  0.99849441  0.49304832
+3314	 -6.27189025	 -0.00093312	  0.00057202	  7.27095713	  0.99714831	  0.99849487  0.49304841
+3315	 -6.27189111	 -0.00093283	  0.00057185	  7.27095827	  0.99714917	  0.99849532  0.49304852
+3316	 -6.27189197	 -0.00093255	  0.00057167	  7.27095942	  0.99715003	  0.99849577  0.49304861
+3317	 -6.27189283	 -0.00093227	  0.00057150	  7.27096056	  0.99715089	  0.99849623  0.49304875
+3318	 -6.27189369	 -0.00093199	  0.00057133	  7.27096169	  0.99715175	  0.99849668  0.49304884
+3319	 -6.27189454	 -0.00093171	  0.00057116	  7.27096283	  0.99715260	  0.99849713  0.49304894
+3320	 -6.27189540	 -0.00093143	  0.00057098	  7.27096397	  0.99715346	  0.99849758  0.49304909
+3321	 -6.27189625	 -0.00093115	  0.00057081	  7.27096510	  0.99715432	  0.99849804  0.49304918
+3322	 -6.27189711	 -0.00093087	  0.00057064	  7.27096624	  0.99715517	  0.99849849  0.49304926
+3323	 -6.27189796	 -0.00093059	  0.00057047	  7.27096737	  0.99715603	  0.99849894  0.49304941
+3324	 -6.27189881	 -0.00093031	  0.00057030	  7.27096850	  0.99715689	  0.99849939  0.49304950
+3325	 -6.27189966	 -0.00093003	  0.00057013	  7.27096963	  0.99715774	  0.99849984  0.49304958
+3326	 -6.27190051	 -0.00092975	  0.00056995	  7.27097076	  0.99715860	  0.99850029  0.49304964
+3327	 -6.27190136	 -0.00092947	  0.00056978	  7.27097188	  0.99715945	  0.99850074  0.49304982
+3328	 -6.27190220	 -0.00092919	  0.00056961	  7.27097301	  0.99716030	  0.99850119  0.49304989
+3329	 -6.27190305	 -0.00092892	  0.00056944	  7.27097413	  0.99716115	  0.99850164  0.49305004
+3330	 -6.27190389	 -0.00092864	  0.00056927	  7.27097525	  0.99716201	  0.99850209  0.49305011
+3331	 -6.27190474	 -0.00092836	  0.00056910	  7.27097638	  0.99716286	  0.99850254  0.49305025
+3332	 -6.27190558	 -0.00092808	  0.00056893	  7.27097750	  0.99716371	  0.99850299  0.49305033
+3333	 -6.27190642	 -0.00092780	  0.00056876	  7.27097862	  0.99716456	  0.99850344  0.49305045
+3334	 -6.27190726	 -0.00092752	  0.00056859	  7.27097973	  0.99716541	  0.99850389  0.49305056
+3335	 -6.27190810	 -0.00092725	  0.00056842	  7.27098085	  0.99716626	  0.99850434  0.49305065
+3336	 -6.27190893	 -0.00092697	  0.00056825	  7.27098197	  0.99716711	  0.99850478  0.49305076
+3337	 -6.27190977	 -0.00092669	  0.00056808	  7.27098308	  0.99716796	  0.99850523  0.49305085
+3338	 -6.27191061	 -0.00092641	  0.00056791	  7.27098419	  0.99716881	  0.99850568  0.49305094
+3339	 -6.27191144	 -0.00092614	  0.00056774	  7.27098530	  0.99716965	  0.99850613  0.49305108
+3340	 -6.27191227	 -0.00092586	  0.00056757	  7.27098641	  0.99717050	  0.99850657  0.49305115
+3341	 -6.27191311	 -0.00092558	  0.00056740	  7.27098752	  0.99717135	  0.99850702  0.49305125
+3342	 -6.27191394	 -0.00092531	  0.00056723	  7.27098863	  0.99717219	  0.99850747  0.49305139
+3343	 -6.27191477	 -0.00092503	  0.00056706	  7.27098974	  0.99717304	  0.99850791  0.49305148
+3344	 -6.27191559	 -0.00092475	  0.00056689	  7.27099084	  0.99717389	  0.99850836  0.49305158
+3345	 -6.27191642	 -0.00092448	  0.00056672	  7.27099194	  0.99717473	  0.99850880  0.49305167
+3346	 -6.27191725	 -0.00092420	  0.00056655	  7.27099305	  0.99717557	  0.99850925  0.49305181
+3347	 -6.27191807	 -0.00092393	  0.00056638	  7.27099415	  0.99717642	  0.99850969  0.49305190
+3348	 -6.27191890	 -0.00092365	  0.00056621	  7.27099525	  0.99717726	  0.99851014  0.49305201
+3349	 -6.27191972	 -0.00092338	  0.00056604	  7.27099635	  0.99717810	  0.99851058  0.49305208
+3350	 -6.27192054	 -0.00092310	  0.00056587	  7.27099744	  0.99717895	  0.99851103  0.49305223
+3351	 -6.27192136	 -0.00092282	  0.00056570	  7.27099854	  0.99717979	  0.99851147  0.49305232
+3352	 -6.27192218	 -0.00092255	  0.00056553	  7.27099964	  0.99718063	  0.99851192  0.49305243
+3353	 -6.27192300	 -0.00092227	  0.00056537	  7.27100073	  0.99718147	  0.99851236  0.49305250
+3354	 -6.27192382	 -0.00092200	  0.00056520	  7.27100182	  0.99718231	  0.99851280  0.49305258
+3355	 -6.27192464	 -0.00092173	  0.00056503	  7.27100291	  0.99718315	  0.99851325  0.49305275
+3356	 -6.27192545	 -0.00092145	  0.00056486	  7.27100400	  0.99718399	  0.99851369  0.49305278
+3357	 -6.27192627	 -0.00092118	  0.00056469	  7.27100509	  0.99718483	  0.99851413  0.49305295
+3358	 -6.27192708	 -0.00092090	  0.00056452	  7.27100618	  0.99718566	  0.99851457  0.49305299
+3359	 -6.27192790	 -0.00092063	  0.00056436	  7.27100727	  0.99718650	  0.99851502  0.49305314
+3360	 -6.27192871	 -0.00092036	  0.00056419	  7.27100835	  0.99718734	  0.99851546  0.49305323
+3361	 -6.27192952	 -0.00092008	  0.00056402	  7.27100944	  0.99718818	  0.99851590  0.49305333
+3362	 -6.27193033	 -0.00091981	  0.00056385	  7.27101052	  0.99718901	  0.99851634  0.49305345
+3363	 -6.27193114	 -0.00091954	  0.00056368	  7.27101160	  0.99718985	  0.99851678  0.49305349
+3364	 -6.27193194	 -0.00091926	  0.00056352	  7.27101268	  0.99719068	  0.99851722  0.49305365
+3365	 -6.27193275	 -0.00091899	  0.00056335	  7.27101376	  0.99719152	  0.99851766  0.49305371
+3366	 -6.27193356	 -0.00091872	  0.00056318	  7.27101484	  0.99719235	  0.99851810  0.49305382
+3367	 -6.27193436	 -0.00091844	  0.00056301	  7.27101592	  0.99719318	  0.99851854  0.49305392
+3368	 -6.27193516	 -0.00091817	  0.00056285	  7.27101699	  0.99719402	  0.99851898  0.49305400
+3369	 -6.27193597	 -0.00091790	  0.00056268	  7.27101807	  0.99719485	  0.99851942  0.49305415
+3370	 -6.27193677	 -0.00091763	  0.00056251	  7.27101914	  0.99719568	  0.99851986  0.49305427
+3371	 -6.27193757	 -0.00091736	  0.00056235	  7.27102021	  0.99719651	  0.99852030  0.49305437
+3372	 -6.27193837	 -0.00091708	  0.00056218	  7.27102128	  0.99719735	  0.99852074  0.49305443
+3373	 -6.27193917	 -0.00091681	  0.00056201	  7.27102235	  0.99719818	  0.99852117  0.49305458
+3374	 -6.27193996	 -0.00091654	  0.00056185	  7.27102342	  0.99719901	  0.99852161  0.49305464
+3375	 -6.27194076	 -0.00091627	  0.00056168	  7.27102449	  0.99719984	  0.99852205  0.49305472
+3376	 -6.27194155	 -0.00091600	  0.00056151	  7.27102556	  0.99720066	  0.99852249  0.49305485
+3377	 -6.27194235	 -0.00091573	  0.00056135	  7.27102662	  0.99720149	  0.99852292  0.49305488
+3378	 -6.27194314	 -0.00091546	  0.00056118	  7.27102769	  0.99720232	  0.99852336  0.49305501
+3379	 -6.27194394	 -0.00091519	  0.00056102	  7.27102875	  0.99720315	  0.99852380  0.49305520
+3380	 -6.27194473	 -0.00091492	  0.00056085	  7.27102981	  0.99720398	  0.99852423  0.49305527
+3381	 -6.27194552	 -0.00091465	  0.00056068	  7.27103087	  0.99720480	  0.99852467  0.49305537
+3382	 -6.27194631	 -0.00091438	  0.00056052	  7.27103193	  0.99720563	  0.99852511  0.49305541
+3383	 -6.27194710	 -0.00091411	  0.00056035	  7.27103299	  0.99720646	  0.99852554  0.49305558
+3384	 -6.27194788	 -0.00091384	  0.00056019	  7.27103405	  0.99720728	  0.99852598  0.49305568
+3385	 -6.27194867	 -0.00091357	  0.00056002	  7.27103510	  0.99720811	  0.99852641  0.49305582
+3386	 -6.27194946	 -0.00091330	  0.00055986	  7.27103616	  0.99720893	  0.99852685  0.49305585
+3387	 -6.27195024	 -0.00091303	  0.00055969	  7.27103721	  0.99720975	  0.99852728  0.49305599
+3388	 -6.27195102	 -0.00091276	  0.00055953	  7.27103827	  0.99721058	  0.99852772  0.49305606
+3389	 -6.27195181	 -0.00091249	  0.00055936	  7.27103932	  0.99721140	  0.99852815  0.49305614
+3390	 -6.27195259	 -0.00091222	  0.00055920	  7.27104037	  0.99721222	  0.99852858  0.49305629
+3391	 -6.27195337	 -0.00091195	  0.00055903	  7.27104142	  0.99721304	  0.99852902  0.49305636
+3392	 -6.27195415	 -0.00091168	  0.00055887	  7.27104247	  0.99721387	  0.99852945  0.49305643
+3393	 -6.27195493	 -0.00091141	  0.00055870	  7.27104351	  0.99721469	  0.99852988  0.49305655
+3394	 -6.27195571	 -0.00091115	  0.00055854	  7.27104456	  0.99721551	  0.99853032  0.49305663
+3395	 -6.27195648	 -0.00091088	  0.00055837	  7.27104561	  0.99721633	  0.99853075  0.49305679
+3396	 -6.27195726	 -0.00091061	  0.00055821	  7.27104665	  0.99721715	  0.99853118  0.49305682
+3397	 -6.27195803	 -0.00091034	  0.00055804	  7.27104769	  0.99721796	  0.99853161  0.49305696
+3398	 -6.27195881	 -0.00091007	  0.00055788	  7.27104873	  0.99721878	  0.99853205  0.49305711
+3399	 -6.27195958	 -0.00090981	  0.00055771	  7.27104978	  0.99721960	  0.99853248  0.49305719
+3400	 -6.27196035	 -0.00090954	  0.00055755	  7.27105081	  0.99722042	  0.99853291  0.49305721
+3401	 -6.27196113	 -0.00090927	  0.00055739	  7.27105185	  0.99722124	  0.99853334  0.49305736
+3402	 -6.27196190	 -0.00090901	  0.00055722	  7.27105289	  0.99722205	  0.99853377  0.49305741
+3403	 -6.27196267	 -0.00090874	  0.00055706	  7.27105393	  0.99722287	  0.99853420  0.49305756
+3404	 -6.27196344	 -0.00090847	  0.00055690	  7.27105496	  0.99722368	  0.99853463  0.49305766
+3405	 -6.27196420	 -0.00090821	  0.00055673	  7.27105600	  0.99722450	  0.99853506  0.49305779
+3406	 -6.27196497	 -0.00090794	  0.00055657	  7.27105703	  0.99722531	  0.99853549  0.49305788
+3407	 -6.27196574	 -0.00090767	  0.00055641	  7.27105806	  0.99722613	  0.99853592  0.49305797
+3408	 -6.27196650	 -0.00090741	  0.00055624	  7.27105909	  0.99722694	  0.99853635  0.49305806
+3409	 -6.27196726	 -0.00090714	  0.00055608	  7.27106012	  0.99722776	  0.99853678  0.49305817
+3410	 -6.27196803	 -0.00090688	  0.00055592	  7.27106115	  0.99722857	  0.99853721  0.49305825
+3411	 -6.27196879	 -0.00090661	  0.00055575	  7.27106218	  0.99722938	  0.99853764  0.49305840
+3412	 -6.27196955	 -0.00090634	  0.00055559	  7.27106321	  0.99723019	  0.99853807  0.49305847
+3413	 -6.27197031	 -0.00090608	  0.00055543	  7.27106423	  0.99723100	  0.99853849  0.49305859
+3414	 -6.27197107	 -0.00090581	  0.00055526	  7.27106526	  0.99723181	  0.99853892  0.49305865
+3415	 -6.27197183	 -0.00090555	  0.00055510	  7.27106628	  0.99723262	  0.99853935  0.49305875
+3416	 -6.27197259	 -0.00090528	  0.00055494	  7.27106730	  0.99723343	  0.99853978  0.49305889
+3417	 -6.27197335	 -0.00090502	  0.00055478	  7.27106833	  0.99723424	  0.99854020  0.49305896
+3418	 -6.27197410	 -0.00090476	  0.00055461	  7.27106935	  0.99723505	  0.99854063  0.49305906
+3419	 -6.27197486	 -0.00090449	  0.00055445	  7.27107037	  0.99723586	  0.99854106  0.49305911
+3420	 -6.27197561	 -0.00090423	  0.00055429	  7.27107138	  0.99723667	  0.99854148  0.49305929
+3421	 -6.27197637	 -0.00090396	  0.00055413	  7.27107240	  0.99723748	  0.99854191  0.49305933
+3422	 -6.27197712	 -0.00090370	  0.00055397	  7.27107342	  0.99723828	  0.99854233  0.49305943
+3423	 -6.27197787	 -0.00090344	  0.00055380	  7.27107443	  0.99723909	  0.99854276  0.49305954
+3424	 -6.27197862	 -0.00090317	  0.00055364	  7.27107545	  0.99723990	  0.99854319  0.49305965
+3425	 -6.27197937	 -0.00090291	  0.00055348	  7.27107646	  0.99724070	  0.99854361  0.49305972
+3426	 -6.27198012	 -0.00090264	  0.00055332	  7.27107748	  0.99724151	  0.99854404  0.49305986
+3427	 -6.27198087	 -0.00090238	  0.00055316	  7.27107849	  0.99724231	  0.99854446  0.49305996
+3428	 -6.27198162	 -0.00090212	  0.00055300	  7.27107950	  0.99724312	  0.99854488  0.49306003
+3429	 -6.27198236	 -0.00090186	  0.00055284	  7.27108051	  0.99724392	  0.99854531  0.49306014
+3430	 -6.27198311	 -0.00090159	  0.00055267	  7.27108151	  0.99724472	  0.99854573  0.49306027
+3431	 -6.27198385	 -0.00090133	  0.00055251	  7.27108252	  0.99724553	  0.99854616  0.49306036
+3432	 -6.27198460	 -0.00090107	  0.00055235	  7.27108353	  0.99724633	  0.99854658  0.49306043
+3433	 -6.27198534	 -0.00090081	  0.00055219	  7.27108453	  0.99724713	  0.99854700  0.49306047
+3434	 -6.27198608	 -0.00090054	  0.00055203	  7.27108554	  0.99724793	  0.99854742  0.49306066
+3435	 -6.27198682	 -0.00090028	  0.00055187	  7.27108654	  0.99724873	  0.99854785  0.49306072
+3436	 -6.27198756	 -0.00090002	  0.00055171	  7.27108754	  0.99724953	  0.99854827  0.49306079
+3437	 -6.27198830	 -0.00089976	  0.00055155	  7.27108855	  0.99725033	  0.99854869  0.49306090
+3438	 -6.27198904	 -0.00089950	  0.00055139	  7.27108955	  0.99725113	  0.99854911  0.49306100
+3439	 -6.27198978	 -0.00089924	  0.00055123	  7.27109054	  0.99725193	  0.99854954  0.49306107
+3440	 -6.27199052	 -0.00089898	  0.00055107	  7.27109154	  0.99725273	  0.99854996  0.49306122
+3441	 -6.27199126	 -0.00089871	  0.00055091	  7.27109254	  0.99725353	  0.99855038  0.49306129
+3442	 -6.27199199	 -0.00089845	  0.00055075	  7.27109354	  0.99725433	  0.99855080  0.49306135
+3443	 -6.27199273	 -0.00089819	  0.00055059	  7.27109453	  0.99725512	  0.99855122  0.49306146
+3444	 -6.27199346	 -0.00089793	  0.00055043	  7.27109553	  0.99725592	  0.99855164  0.49306163
+3445	 -6.27199419	 -0.00089767	  0.00055027	  7.27109652	  0.99725672	  0.99855206  0.49306163
+3446	 -6.27199493	 -0.00089741	  0.00055011	  7.27109751	  0.99725751	  0.99855248  0.49306178
+3447	 -6.27199566	 -0.00089715	  0.00054995	  7.27109851	  0.99725831	  0.99855290  0.49306188
+3448	 -6.27199639	 -0.00089689	  0.00054979	  7.27109950	  0.99725910	  0.99855332  0.49306196
+3449	 -6.27199712	 -0.00089663	  0.00054963	  7.27110049	  0.99725990	  0.99855374  0.49306206
+3450	 -6.27199785	 -0.00089637	  0.00054947	  7.27110147	  0.99726069	  0.99855416  0.49306218
+3451	 -6.27199857	 -0.00089611	  0.00054931	  7.27110246	  0.99726149	  0.99855458  0.49306227
+3452	 -6.27199930	 -0.00089585	  0.00054915	  7.27110345	  0.99726228	  0.99855499  0.49306238
+3453	 -6.27200003	 -0.00089559	  0.00054899	  7.27110443	  0.99726307	  0.99855541  0.49306244
+3454	 -6.27200076	 -0.00089534	  0.00054883	  7.27110542	  0.99726386	  0.99855583  0.49306254
+3455	 -6.27200148	 -0.00089508	  0.00054868	  7.27110640	  0.99726465	  0.99855625  0.49306260
+3456	 -6.27200220	 -0.00089482	  0.00054852	  7.27110739	  0.99726545	  0.99855667  0.49306270
+3457	 -6.27200293	 -0.00089456	  0.00054836	  7.27110837	  0.99726624	  0.99855708  0.49306284
+3458	 -6.27200365	 -0.00089430	  0.00054820	  7.27110935	  0.99726703	  0.99855750  0.49306289
+3459	 -6.27200437	 -0.00089404	  0.00054804	  7.27111033	  0.99726782	  0.99855792  0.49306299
+3460	 -6.27200509	 -0.00089378	  0.00054788	  7.27111131	  0.99726861	  0.99855833  0.49306315
+3461	 -6.27200581	 -0.00089353	  0.00054772	  7.27111229	  0.99726940	  0.99855875  0.49306325
+3462	 -6.27200653	 -0.00089327	  0.00054757	  7.27111326	  0.99727018	  0.99855916  0.49306334
+3463	 -6.27200725	 -0.00089301	  0.00054741	  7.27111424	  0.99727097	  0.99855958  0.49306342
+3464	 -6.27200797	 -0.00089275	  0.00054725	  7.27111522	  0.99727176	  0.99856000  0.49306348
+3465	 -6.27200869	 -0.00089250	  0.00054709	  7.27111619	  0.99727255	  0.99856041  0.49306360
+3466	 -6.27200940	 -0.00089224	  0.00054693	  7.27111717	  0.99727333	  0.99856083  0.49306368
+3467	 -6.27201012	 -0.00089198	  0.00054678	  7.27111814	  0.99727412	  0.99856124  0.49306382
+3468	 -6.27201083	 -0.00089172	  0.00054662	  7.27111911	  0.99727491	  0.99856166  0.49306389
+3469	 -6.27201155	 -0.00089147	  0.00054646	  7.27112008	  0.99727569	  0.99856207  0.49306395
+3470	 -6.27201226	 -0.00089121	  0.00054630	  7.27112105	  0.99727648	  0.99856248  0.49306405
+3471	 -6.27201297	 -0.00089095	  0.00054615	  7.27112202	  0.99727726	  0.99856290  0.49306415
+3472	 -6.27201369	 -0.00089070	  0.00054599	  7.27112299	  0.99727804	  0.99856331  0.49306425
+3473	 -6.27201440	 -0.00089044	  0.00054583	  7.27112395	  0.99727883	  0.99856373  0.49306438
+3474	 -6.27201511	 -0.00089019	  0.00054568	  7.27112492	  0.99727961	  0.99856414  0.49306445
+3475	 -6.27201582	 -0.00088993	  0.00054552	  7.27112589	  0.99728039	  0.99856455  0.49306454
+3476	 -6.27201653	 -0.00088967	  0.00054536	  7.27112685	  0.99728118	  0.99856496  0.49306460
+3477	 -6.27201723	 -0.00088942	  0.00054520	  7.27112782	  0.99728196	  0.99856538  0.49306473
+3478	 -6.27201794	 -0.00088916	  0.00054505	  7.27112878	  0.99728274	  0.99856579  0.49306481
+3479	 -6.27201865	 -0.00088891	  0.00054489	  7.27112974	  0.99728352	  0.99856620  0.49306490
+3480	 -6.27201935	 -0.00088865	  0.00054473	  7.27113070	  0.99728430	  0.99856661  0.49306499
+3481	 -6.27202006	 -0.00088840	  0.00054458	  7.27113166	  0.99728508	  0.99856702  0.49306507
+3482	 -6.27202076	 -0.00088814	  0.00054442	  7.27113262	  0.99728586	  0.99856744  0.49306519
+3483	 -6.27202147	 -0.00088789	  0.00054427	  7.27113358	  0.99728664	  0.99856785  0.49306522
+3484	 -6.27202217	 -0.00088763	  0.00054411	  7.27113454	  0.99728742	  0.99856826  0.49306541
+3485	 -6.27202287	 -0.00088738	  0.00054395	  7.27113549	  0.99728820	  0.99856867  0.49306548
+3486	 -6.27202357	 -0.00088713	  0.00054380	  7.27113645	  0.99728897	  0.99856908  0.49306558
+3487	 -6.27202427	 -0.00088687	  0.00054364	  7.27113740	  0.99728975	  0.99856949  0.49306563
+3488	 -6.27202497	 -0.00088662	  0.00054349	  7.27113836	  0.99729053	  0.99856990  0.49306575
+3489	 -6.27202567	 -0.00088636	  0.00054333	  7.27113931	  0.99729130	  0.99857031  0.49306582
+3490	 -6.27202637	 -0.00088611	  0.00054317	  7.27114026	  0.99729208	  0.99857072  0.49306593
+3491	 -6.27202707	 -0.00088586	  0.00054302	  7.27114121	  0.99729285	  0.99857113  0.49306602
+3492	 -6.27202777	 -0.00088560	  0.00054286	  7.27114216	  0.99729363	  0.99857153  0.49306615
+3493	 -6.27202846	 -0.00088535	  0.00054271	  7.27114311	  0.99729440	  0.99857194  0.49306620
+3494	 -6.27202916	 -0.00088510	  0.00054255	  7.27114406	  0.99729518	  0.99857235  0.49306631
+3495	 -6.27202985	 -0.00088484	  0.00054240	  7.27114501	  0.99729595	  0.99857276  0.49306638
+3496	 -6.27203055	 -0.00088459	  0.00054224	  7.27114596	  0.99729673	  0.99857317  0.49306650
+3497	 -6.27203124	 -0.00088434	  0.00054209	  7.27114690	  0.99729750	  0.99857358  0.49306661
+3498	 -6.27203193	 -0.00088409	  0.00054193	  7.27114785	  0.99729827	  0.99857398  0.49306664
+3499	 -6.27203262	 -0.00088383	  0.00054178	  7.27114879	  0.99729904	  0.99857439  0.49306674
+3500	 -6.27203332	 -0.00088358	  0.00054162	  7.27114973	  0.99729981	  0.99857480  0.49306687
+3501	 -6.27203401	 -0.00088333	  0.00054147	  7.27115068	  0.99730059	  0.99857520  0.49306699
+3502	 -6.27203470	 -0.00088308	  0.00054131	  7.27115162	  0.99730136	  0.99857561  0.49306701
+3503	 -6.27203539	 -0.00088282	  0.00054116	  7.27115256	  0.99730213	  0.99857602  0.49306713
+3504	 -6.27203607	 -0.00088257	  0.00054100	  7.27115350	  0.99730290	  0.99857642  0.49306721
+3505	 -6.27203676	 -0.00088232	  0.00054085	  7.27115444	  0.99730366	  0.99857683  0.49306728
+3506	 -6.27203745	 -0.00088207	  0.00054069	  7.27115538	  0.99730443	  0.99857724  0.49306742
+3507	 -6.27203813	 -0.00088182	  0.00054054	  7.27115632	  0.99730520	  0.99857764  0.49306753
+3508	 -6.27203882	 -0.00088157	  0.00054039	  7.27115725	  0.99730597	  0.99857805  0.49306761
+3509	 -6.27203950	 -0.00088132	  0.00054023	  7.27115819	  0.99730674	  0.99857845  0.49306769
+3510	 -6.27204019	 -0.00088107	  0.00054008	  7.27115912	  0.99730750	  0.99857886  0.49306776
+3511	 -6.27204087	 -0.00088082	  0.00053992	  7.27116006	  0.99730827	  0.99857926  0.49306785
+3512	 -6.27204156	 -0.00088056	  0.00053977	  7.27116099	  0.99730904	  0.99857966  0.49306801
+3513	 -6.27204224	 -0.00088031	  0.00053962	  7.27116192	  0.99730980	  0.99858007  0.49306813
+3514	 -6.27204292	 -0.00088006	  0.00053946	  7.27116286	  0.99731057	  0.99858047  0.49306816
+3515	 -6.27204360	 -0.00087981	  0.00053931	  7.27116379	  0.99731133	  0.99858088  0.49306827
+3516	 -6.27204428	 -0.00087956	  0.00053916	  7.27116472	  0.99731210	  0.99858128  0.49306833
+3517	 -6.27204496	 -0.00087931	  0.00053900	  7.27116565	  0.99731286	  0.99858168  0.49306842
+3518	 -6.27204564	 -0.00087906	  0.00053885	  7.27116657	  0.99731363	  0.99858209  0.49306852
+3519	 -6.27204632	 -0.00087881	  0.00053870	  7.27116750	  0.99731439	  0.99858249  0.49306865
+3520	 -6.27204699	 -0.00087857	  0.00053854	  7.27116843	  0.99731515	  0.99858289  0.49306872
+3521	 -6.27204767	 -0.00087832	  0.00053839	  7.27116935	  0.99731591	  0.99858329  0.49306875
+3522	 -6.27204835	 -0.00087807	  0.00053824	  7.27117028	  0.99731668	  0.99858369  0.49306889
+3523	 -6.27204902	 -0.00087782	  0.00053809	  7.27117120	  0.99731744	  0.99858410  0.49306899
+3524	 -6.27204970	 -0.00087757	  0.00053793	  7.27117213	  0.99731820	  0.99858450  0.49306909
+3525	 -6.27205037	 -0.00087732	  0.00053778	  7.27117305	  0.99731896	  0.99858490  0.49306915
+3526	 -6.27205104	 -0.00087707	  0.00053763	  7.27117397	  0.99731972	  0.99858530  0.49306931
+3527	 -6.27205172	 -0.00087682	  0.00053748	  7.27117489	  0.99732048	  0.99858570  0.49306931
+3528	 -6.27205239	 -0.00087658	  0.00053732	  7.27117581	  0.99732124	  0.99858610  0.49306947
+3529	 -6.27205306	 -0.00087633	  0.00053717	  7.27117673	  0.99732200	  0.99858650  0.49306949
+3530	 -6.27205373	 -0.00087608	  0.00053702	  7.27117765	  0.99732276	  0.99858690  0.49306961
+3531	 -6.27205440	 -0.00087583	  0.00053687	  7.27117857	  0.99732351	  0.99858730  0.49306974
+3532	 -6.27205507	 -0.00087558	  0.00053671	  7.27117949	  0.99732427	  0.99858770  0.49306982
+3533	 -6.27205574	 -0.00087534	  0.00053656	  7.27118040	  0.99732503	  0.99858810  0.49306986
+3534	 -6.27205641	 -0.00087509	  0.00053641	  7.27118132	  0.99732579	  0.99858850  0.49306997
+3535	 -6.27205707	 -0.00087484	  0.00053626	  7.27118223	  0.99732654	  0.99858890  0.49307002
+3536	 -6.27205774	 -0.00087459	  0.00053611	  7.27118315	  0.99732730	  0.99858930  0.49307020
+3537	 -6.27205841	 -0.00087435	  0.00053596	  7.27118406	  0.99732805	  0.99858970  0.49307021
+3538	 -6.27205907	 -0.00087410	  0.00053580	  7.27118497	  0.99732881	  0.99859010  0.49307035
+3539	 -6.27205974	 -0.00087385	  0.00053565	  7.27118588	  0.99732956	  0.99859049  0.49307047
+3540	 -6.27206040	 -0.00087361	  0.00053550	  7.27118679	  0.99733032	  0.99859089  0.49307051
+3541	 -6.27206106	 -0.00087336	  0.00053535	  7.27118770	  0.99733107	  0.99859129  0.49307062
+3542	 -6.27206173	 -0.00087311	  0.00053520	  7.27118861	  0.99733182	  0.99859169  0.49307069
+3543	 -6.27206239	 -0.00087287	  0.00053505	  7.27118952	  0.99733258	  0.99859208  0.49307080
+3544	 -6.27206305	 -0.00087262	  0.00053490	  7.27119043	  0.99733333	  0.99859248  0.49307089
+3545	 -6.27206371	 -0.00087238	  0.00053475	  7.27119134	  0.99733408	  0.99859288  0.49307096
+3546	 -6.27206437	 -0.00087213	  0.00053460	  7.27119224	  0.99733483	  0.99859327  0.49307103
+3547	 -6.27206503	 -0.00087188	  0.00053445	  7.27119315	  0.99733558	  0.99859367  0.49307121
+3548	 -6.27206569	 -0.00087164	  0.00053429	  7.27119405	  0.99733633	  0.99859407  0.49307121
+3549	 -6.27206635	 -0.00087139	  0.00053414	  7.27119496	  0.99733709	  0.99859446  0.49307131
+3550	 -6.27206701	 -0.00087115	  0.00053399	  7.27119586	  0.99733783	  0.99859486  0.49307143
+3551	 -6.27206767	 -0.00087090	  0.00053384	  7.27119676	  0.99733858	  0.99859525  0.49307152
+3552	 -6.27206832	 -0.00087066	  0.00053369	  7.27119766	  0.99733933	  0.99859565  0.49307163
+3553	 -6.27206898	 -0.00087041	  0.00053354	  7.27119856	  0.99734008	  0.99859604  0.49307170
+3554	 -6.27206963	 -0.00087017	  0.00053339	  7.27119946	  0.99734083	  0.99859644  0.49307178
+3555	 -6.27207029	 -0.00086992	  0.00053324	  7.27120036	  0.99734158	  0.99859683  0.49307182
+3556	 -6.27207094	 -0.00086968	  0.00053309	  7.27120126	  0.99734233	  0.99859723  0.49307196
+3557	 -6.27207160	 -0.00086944	  0.00053294	  7.27120216	  0.99734307	  0.99859762  0.49307197
+3558	 -6.27207225	 -0.00086919	  0.00053279	  7.27120306	  0.99734382	  0.99859802  0.49307220
+3559	 -6.27207290	 -0.00086895	  0.00053264	  7.27120395	  0.99734457	  0.99859841  0.49307226
+3560	 -6.27207355	 -0.00086870	  0.00053249	  7.27120485	  0.99734531	  0.99859880  0.49307233
+3561	 -6.27207420	 -0.00086846	  0.00053234	  7.27120574	  0.99734606	  0.99859920  0.49307241
+3562	 -6.27207485	 -0.00086822	  0.00053219	  7.27120664	  0.99734680	  0.99859959  0.49307252
+3563	 -6.27207550	 -0.00086797	  0.00053205	  7.27120753	  0.99734755	  0.99859998  0.49307258
+3564	 -6.27207615	 -0.00086773	  0.00053190	  7.27120842	  0.99734829	  0.99860037  0.49307271
+3565	 -6.27207680	 -0.00086749	  0.00053175	  7.27120931	  0.99734903	  0.99860077  0.49307274
+3566	 -6.27207745	 -0.00086724	  0.00053160	  7.27121021	  0.99734978	  0.99860116  0.49307287
+3567	 -6.27207810	 -0.00086700	  0.00053145	  7.27121110	  0.99735052	  0.99860155  0.49307293
+3568	 -6.27207874	 -0.00086676	  0.00053130	  7.27121199	  0.99735126	  0.99860194  0.49307303
+3569	 -6.27207939	 -0.00086652	  0.00053115	  7.27121287	  0.99735200	  0.99860233  0.49307313
+3570	 -6.27208004	 -0.00086627	  0.00053100	  7.27121376	  0.99735275	  0.99860273  0.49307325
+3571	 -6.27208068	 -0.00086603	  0.00053085	  7.27121465	  0.99735349	  0.99860312  0.49307329
+3572	 -6.27208132	 -0.00086579	  0.00053070	  7.27121554	  0.99735423	  0.99860351  0.49307333
+3573	 -6.27208197	 -0.00086555	  0.00053056	  7.27121642	  0.99735497	  0.99860390  0.49307349
+3574	 -6.27208261	 -0.00086530	  0.00053041	  7.27121731	  0.99735571	  0.99860429  0.49307355
+3575	 -6.27208325	 -0.00086506	  0.00053026	  7.27121819	  0.99735645	  0.99860468  0.49307366
+3576	 -6.27208390	 -0.00086482	  0.00053011	  7.27121907	  0.99735719	  0.99860507  0.49307376
+3577	 -6.27208454	 -0.00086458	  0.00052996	  7.27121996	  0.99735792	  0.99860546  0.49307384
+3578	 -6.27208518	 -0.00086434	  0.00052981	  7.27122084	  0.99735866	  0.99860585  0.49307389
+3579	 -6.27208582	 -0.00086410	  0.00052967	  7.27122172	  0.99735940	  0.99860624  0.49307398
+3580	 -6.27208646	 -0.00086386	  0.00052952	  7.27122260	  0.99736014	  0.99860663  0.49307410
+3581	 -6.27208710	 -0.00086361	  0.00052937	  7.27122348	  0.99736088	  0.99860701  0.49307418
+3582	 -6.27208774	 -0.00086337	  0.00052922	  7.27122436	  0.99736161	  0.99860740  0.49307431
+3583	 -6.27208837	 -0.00086313	  0.00052908	  7.27122524	  0.99736235	  0.99860779  0.49307430
+3584	 -6.27208901	 -0.00086289	  0.00052893	  7.27122612	  0.99736308	  0.99860818  0.49307450
+3585	 -6.27208965	 -0.00086265	  0.00052878	  7.27122700	  0.99736382	  0.99860857  0.49307452
+3586	 -6.27209028	 -0.00086241	  0.00052863	  7.27122787	  0.99736455	  0.99860896  0.49307461
+3587	 -6.27209092	 -0.00086217	  0.00052849	  7.27122875	  0.99736529	  0.99860934  0.49307473
+3588	 -6.27209155	 -0.00086193	  0.00052834	  7.27122962	  0.99736602	  0.99860973  0.49307476
+3589	 -6.27209219	 -0.00086169	  0.00052819	  7.27123050	  0.99736676	  0.99861012  0.49307493
+3590	 -6.27209282	 -0.00086145	  0.00052804	  7.27123137	  0.99736749	  0.99861050  0.49307491
+3591	 -6.27209346	 -0.00086121	  0.00052790	  7.27123224	  0.99736822	  0.99861089  0.49307506
+3592	 -6.27209409	 -0.00086097	  0.00052775	  7.27123312	  0.99736896	  0.99861128  0.49307515
+3593	 -6.27209472	 -0.00086073	  0.00052760	  7.27123399	  0.99736969	  0.99861166  0.49307527
+3594	 -6.27209535	 -0.00086049	  0.00052746	  7.27123486	  0.99737042	  0.99861205  0.49307528
+3595	 -6.27209598	 -0.00086025	  0.00052731	  7.27123573	  0.99737115	  0.99861244  0.49307544
+3596	 -6.27209661	 -0.00086002	  0.00052716	  7.27123660	  0.99737188	  0.99861282  0.49307551
+3597	 -6.27209724	 -0.00085978	  0.00052702	  7.27123747	  0.99737261	  0.99861321  0.49307555
+3598	 -6.27209787	 -0.00085954	  0.00052687	  7.27123833	  0.99737334	  0.99861359  0.49307566
+3599	 -6.27209850	 -0.00085930	  0.00052672	  7.27123920	  0.99737407	  0.99861398  0.49307570
+3600	 -6.27209913	 -0.00085906	  0.00052658	  7.27124007	  0.99737480	  0.99861436  0.49307581
+3601	 -6.27209976	 -0.00085882	  0.00052643	  7.27124094	  0.99737553	  0.99861475  0.49307599
+3602	 -6.27210038	 -0.00085858	  0.00052628	  7.27124180	  0.99737626	  0.99861513  0.49307598
+3603	 -6.27210101	 -0.00085835	  0.00052614	  7.27124266	  0.99737699	  0.99861551  0.49307614
+3604	 -6.27210164	 -0.00085811	  0.00052599	  7.27124353	  0.99737771	  0.99861590  0.49307614
+3605	 -6.27210226	 -0.00085787	  0.00052585	  7.27124439	  0.99737844	  0.99861628  0.49307625
+3606	 -6.27210289	 -0.00085763	  0.00052570	  7.27124525	  0.99737917	  0.99861667  0.49307637
+3607	 -6.27210351	 -0.00085740	  0.00052555	  7.27124612	  0.99737989	  0.99861705  0.49307645
+3608	 -6.27210414	 -0.00085716	  0.00052541	  7.27124698	  0.99738062	  0.99861743  0.49307653
+3609	 -6.27210476	 -0.00085692	  0.00052526	  7.27124784	  0.99738135	  0.99861782  0.49307663
+3610	 -6.27210538	 -0.00085668	  0.00052512	  7.27124870	  0.99738207	  0.99861820  0.49307669
+3611	 -6.27210600	 -0.00085645	  0.00052497	  7.27124956	  0.99738280	  0.99861858  0.49307677
+3612	 -6.27210663	 -0.00085621	  0.00052483	  7.27125042	  0.99738352	  0.99861896  0.49307688
+3613	 -6.27210725	 -0.00085597	  0.00052468	  7.27125127	  0.99738424	  0.99861934  0.49307699
+3614	 -6.27210787	 -0.00085574	  0.00052454	  7.27125213	  0.99738497	  0.99861973  0.49307706
+3615	 -6.27210849	 -0.00085550	  0.00052439	  7.27125299	  0.99738569	  0.99862011  0.49307704
+3616	 -6.27210911	 -0.00085526	  0.00052425	  7.27125384	  0.99738641	  0.99862049  0.49307723
+3617	 -6.27210973	 -0.00085503	  0.00052410	  7.27125470	  0.99738714	  0.99862087  0.49307731
+3618	 -6.27211034	 -0.00085479	  0.00052396	  7.27125555	  0.99738786	  0.99862125  0.49307742
+3619	 -6.27211096	 -0.00085456	  0.00052381	  7.27125641	  0.99738858	  0.99862163  0.49307753
+3620	 -6.27211158	 -0.00085432	  0.00052367	  7.27125726	  0.99738930	  0.99862201  0.49307753
+3621	 -6.27211220	 -0.00085408	  0.00052352	  7.27125811	  0.99739002	  0.99862239  0.49307764
+3622	 -6.27211281	 -0.00085385	  0.00052338	  7.27125896	  0.99739074	  0.99862277  0.49307770
+3623	 -6.27211343	 -0.00085361	  0.00052323	  7.27125981	  0.99739146	  0.99862315  0.49307780
+3624	 -6.27211404	 -0.00085338	  0.00052309	  7.27126067	  0.99739218	  0.99862353  0.49307792
+3625	 -6.27211466	 -0.00085314	  0.00052295	  7.27126152	  0.99739290	  0.99862391  0.49307794
+3626	 -6.27211527	 -0.00085291	  0.00052280	  7.27126236	  0.99739362	  0.99862429  0.49307803
+3627	 -6.27211589	 -0.00085267	  0.00052266	  7.27126321	  0.99739434	  0.99862467  0.49307820
+3628	 -6.27211650	 -0.00085244	  0.00052251	  7.27126406	  0.99739506	  0.99862505  0.49307827
+3629	 -6.27211711	 -0.00085220	  0.00052237	  7.27126491	  0.99739577	  0.99862543  0.49307830
+3630	 -6.27211772	 -0.00085197	  0.00052222	  7.27126575	  0.99739649	  0.99862581  0.49307839
+3631	 -6.27211833	 -0.00085173	  0.00052208	  7.27126660	  0.99739721	  0.99862618  0.49307851
+3632	 -6.27211895	 -0.00085150	  0.00052194	  7.27126745	  0.99739792	  0.99862656  0.49307861
+3633	 -6.27211956	 -0.00085127	  0.00052179	  7.27126829	  0.99739864	  0.99862694  0.49307868
+3634	 -6.27212017	 -0.00085103	  0.00052165	  7.27126913	  0.99739936	  0.99862732  0.49307878
+3635	 -6.27212078	 -0.00085080	  0.00052151	  7.27126998	  0.99740007	  0.99862770  0.49307884
+3636	 -6.27212138	 -0.00085056	  0.00052136	  7.27127082	  0.99740079	  0.99862807  0.49307888
+3637	 -6.27212199	 -0.00085033	  0.00052122	  7.27127166	  0.99740150	  0.99862845  0.49307902
+3638	 -6.27212260	 -0.00085010	  0.00052108	  7.27127250	  0.99740221	  0.99862883  0.49307911
+3639	 -6.27212321	 -0.00084986	  0.00052093	  7.27127334	  0.99740293	  0.99862920  0.49307920
+3640	 -6.27212381	 -0.00084963	  0.00052079	  7.27127418	  0.99740364	  0.99862958  0.49307926
+3641	 -6.27212442	 -0.00084940	  0.00052065	  7.27127502	  0.99740435	  0.99862996  0.49307935
+3642	 -6.27212503	 -0.00084916	  0.00052050	  7.27127586	  0.99740507	  0.99863033  0.49307944
+3643	 -6.27212563	 -0.00084893	  0.00052036	  7.27127670	  0.99740578	  0.99863071  0.49307944
+3644	 -6.27212624	 -0.00084870	  0.00052022	  7.27127754	  0.99740649	  0.99863108  0.49307954
+3645	 -6.27212684	 -0.00084847	  0.00052008	  7.27127837	  0.99740720	  0.99863146  0.49307961
+3646	 -6.27212744	 -0.00084823	  0.00051993	  7.27127921	  0.99740791	  0.99863183  0.49307978
+3647	 -6.27212805	 -0.00084800	  0.00051979	  7.27128005	  0.99740862	  0.99863221  0.49307983
+3648	 -6.27212865	 -0.00084777	  0.00051965	  7.27128088	  0.99740933	  0.99863258  0.49307996
+3649	 -6.27212925	 -0.00084754	  0.00051951	  7.27128172	  0.99741004	  0.99863296  0.49308005
+3650	 -6.27212986	 -0.00084730	  0.00051936	  7.27128255	  0.99741075	  0.99863333  0.49308014
+3651	 -6.27213046	 -0.00084707	  0.00051922	  7.27128338	  0.99741146	  0.99863371  0.49308018
+3652	 -6.27213106	 -0.00084684	  0.00051908	  7.27128422	  0.99741217	  0.99863408  0.49308030
+3653	 -6.27213166	 -0.00084661	  0.00051894	  7.27128505	  0.99741288	  0.99863445  0.49308040
+3654	 -6.27213226	 -0.00084638	  0.00051879	  7.27128588	  0.99741359	  0.99863483  0.49308040
+3655	 -6.27213286	 -0.00084615	  0.00051865	  7.27128671	  0.99741429	  0.99863520  0.49308050
+3656	 -6.27213345	 -0.00084592	  0.00051851	  7.27128754	  0.99741500	  0.99863557  0.49308061
+3657	 -6.27213405	 -0.00084568	  0.00051837	  7.27128837	  0.99741571	  0.99863595  0.49308064
+3658	 -6.27213465	 -0.00084545	  0.00051823	  7.27128920	  0.99741641	  0.99863632  0.49308083
+3659	 -6.27213525	 -0.00084522	  0.00051809	  7.27129003	  0.99741712	  0.99863669  0.49308089
+3660	 -6.27213585	 -0.00084499	  0.00051794	  7.27129085	  0.99741783	  0.99863706  0.49308103
+3661	 -6.27213644	 -0.00084476	  0.00051780	  7.27129168	  0.99741853	  0.99863744  0.49308104
+3662	 -6.27213704	 -0.00084453	  0.00051766	  7.27129251	  0.99741924	  0.99863781  0.49308114
+3663	 -6.27213763	 -0.00084430	  0.00051752	  7.27129333	  0.99741994	  0.99863818  0.49308122
+3664	 -6.27213823	 -0.00084407	  0.00051738	  7.27129416	  0.99742064	  0.99863855  0.49308125
+3665	 -6.27213882	 -0.00084384	  0.00051724	  7.27129498	  0.99742135	  0.99863892  0.49308128
+3666	 -6.27213942	 -0.00084361	  0.00051710	  7.27129581	  0.99742205	  0.99863929  0.49308149
+3667	 -6.27214001	 -0.00084338	  0.00051696	  7.27129663	  0.99742275	  0.99863966  0.49308153
+3668	 -6.27214060	 -0.00084315	  0.00051681	  7.27129745	  0.99742346	  0.99864003  0.49308160
+3669	 -6.27214120	 -0.00084292	  0.00051667	  7.27129827	  0.99742416	  0.99864041  0.49308174
+3670	 -6.27214179	 -0.00084269	  0.00051653	  7.27129910	  0.99742486	  0.99864078  0.49308171
+3671	 -6.27214238	 -0.00084246	  0.00051639	  7.27129992	  0.99742556	  0.99864115  0.49308189
+3672	 -6.27214297	 -0.00084223	  0.00051625	  7.27130074	  0.99742626	  0.99864152  0.49308189
+3673	 -6.27214356	 -0.00084200	  0.00051611	  7.27130156	  0.99742696	  0.99864188  0.49308208
+3674	 -6.27214415	 -0.00084178	  0.00051597	  7.27130237	  0.99742766	  0.99864225  0.49308218
+3675	 -6.27214474	 -0.00084155	  0.00051583	  7.27130319	  0.99742836	  0.99864262  0.49308217
+3676	 -6.27214533	 -0.00084132	  0.00051569	  7.27130401	  0.99742906	  0.99864299  0.49308225
+3677	 -6.27214592	 -0.00084109	  0.00051555	  7.27130483	  0.99742976	  0.99864336  0.49308239
+3678	 -6.27214651	 -0.00084086	  0.00051541	  7.27130564	  0.99743046	  0.99864373  0.49308247
+3679	 -6.27214709	 -0.00084063	  0.00051527	  7.27130646	  0.99743116	  0.99864410  0.49308255
+3680	 -6.27214768	 -0.00084040	  0.00051513	  7.27130728	  0.99743186	  0.99864447  0.49308258
+3681	 -6.27214827	 -0.00084018	  0.00051499	  7.27130809	  0.99743255	  0.99864483  0.49308266
+3682	 -6.27214885	 -0.00083995	  0.00051485	  7.27130891	  0.99743325	  0.99864520  0.49308274
+3683	 -6.27214944	 -0.00083972	  0.00051471	  7.27130972	  0.99743395	  0.99864557  0.49308290
+3684	 -6.27215002	 -0.00083949	  0.00051457	  7.27131053	  0.99743464	  0.99864594  0.49308290
+3685	 -6.27215061	 -0.00083926	  0.00051443	  7.27131134	  0.99743534	  0.99864631  0.49308300
+3686	 -6.27215119	 -0.00083904	  0.00051429	  7.27131216	  0.99743604	  0.99864667  0.49308315
+3687	 -6.27215178	 -0.00083881	  0.00051415	  7.27131297	  0.99743673	  0.99864704  0.49308314
+3688	 -6.27215236	 -0.00083858	  0.00051401	  7.27131378	  0.99743743	  0.99864741  0.49308324
+3689	 -6.27215294	 -0.00083836	  0.00051387	  7.27131459	  0.99743812	  0.99864777  0.49308338
+3690	 -6.27215353	 -0.00083813	  0.00051373	  7.27131540	  0.99743881	  0.99864814  0.49308338
+3691	 -6.27215411	 -0.00083790	  0.00051359	  7.27131621	  0.99743951	  0.99864850  0.49308350
+3692	 -6.27215469	 -0.00083768	  0.00051345	  7.27131702	  0.99744020	  0.99864887  0.49308357
+3693	 -6.27215527	 -0.00083745	  0.00051332	  7.27131782	  0.99744089	  0.99864924  0.49308374
+3694	 -6.27215585	 -0.00083722	  0.00051318	  7.27131863	  0.99744159	  0.99864960  0.49308379
+3695	 -6.27215643	 -0.00083700	  0.00051304	  7.27131944	  0.99744228	  0.99864997  0.49308384
+3696	 -6.27215701	 -0.00083677	  0.00051290	  7.27132024	  0.99744297	  0.99865033  0.49308393
+3697	 -6.27215759	 -0.00083654	  0.00051276	  7.27132105	  0.99744366	  0.99865070  0.49308399
+3698	 -6.27215817	 -0.00083632	  0.00051262	  7.27132185	  0.99744435	  0.99865106  0.49308412
+3699	 -6.27215875	 -0.00083609	  0.00051248	  7.27132266	  0.99744504	  0.99865143  0.49308421
+3700	 -6.27215933	 -0.00083587	  0.00051234	  7.27132346	  0.99744574	  0.99865179  0.49308425
+3701	 -6.27215990	 -0.00083564	  0.00051221	  7.27132426	  0.99744643	  0.99865215  0.49308434
+3702	 -6.27216048	 -0.00083541	  0.00051207	  7.27132507	  0.99744711	  0.99865252  0.49308442
+3703	 -6.27216106	 -0.00083519	  0.00051193	  7.27132587	  0.99744780	  0.99865288  0.49308450
+3704	 -6.27216164	 -0.00083496	  0.00051179	  7.27132667	  0.99744849	  0.99865324  0.49308461
+3705	 -6.27216221	 -0.00083474	  0.00051165	  7.27132747	  0.99744918	  0.99865361  0.49308467
+3706	 -6.27216279	 -0.00083451	  0.00051151	  7.27132827	  0.99744987	  0.99865397  0.49308473
+3707	 -6.27216336	 -0.00083429	  0.00051138	  7.27132907	  0.99745056	  0.99865433  0.49308483
+3708	 -6.27216394	 -0.00083406	  0.00051124	  7.27132987	  0.99745124	  0.99865470  0.49308489
+3709	 -6.27216451	 -0.00083384	  0.00051110	  7.27133067	  0.99745193	  0.99865506  0.49308501
+3710	 -6.27216508	 -0.00083361	  0.00051096	  7.27133147	  0.99745262	  0.99865542  0.49308509
+3711	 -6.27216566	 -0.00083339	  0.00051083	  7.27133227	  0.99745330	  0.99865578  0.49308519
+3712	 -6.27216623	 -0.00083317	  0.00051069	  7.27133306	  0.99745399	  0.99865615  0.49308520
+3713	 -6.27216680	 -0.00083294	  0.00051055	  7.27133386	  0.99745468	  0.99865651  0.49308532
+3714	 -6.27216737	 -0.00083272	  0.00051041	  7.27133465	  0.99745536	  0.99865687  0.49308537
+3715	 -6.27216794	 -0.00083249	  0.00051028	  7.27133545	  0.99745605	  0.99865723  0.49308548
+3716	 -6.27216851	 -0.00083227	  0.00051014	  7.27133624	  0.99745673	  0.99865759  0.49308555
+3717	 -6.27216909	 -0.00083205	  0.00051000	  7.27133704	  0.99745741	  0.99865795  0.49308568
+3718	 -6.27216966	 -0.00083182	  0.00050986	  7.27133783	  0.99745810	  0.99865831  0.49308575
+3719	 -6.27217022	 -0.00083160	  0.00050973	  7.27133863	  0.99745878	  0.99865867  0.49308580
+3720	 -6.27217079	 -0.00083138	  0.00050959	  7.27133942	  0.99745946	  0.99865903  0.49308589
+3721	 -6.27217136	 -0.00083115	  0.00050945	  7.27134021	  0.99746015	  0.99865939  0.49308593
+3722	 -6.27217193	 -0.00083093	  0.00050932	  7.27134100	  0.99746083	  0.99865975  0.49308603
+3723	 -6.27217250	 -0.00083071	  0.00050918	  7.27134179	  0.99746151	  0.99866011  0.49308603
+3724	 -6.27217307	 -0.00083048	  0.00050904	  7.27134258	  0.99746219	  0.99866047  0.49308626
+3725	 -6.27217363	 -0.00083026	  0.00050891	  7.27134337	  0.99746287	  0.99866083  0.49308628
+3726	 -6.27217420	 -0.00083004	  0.00050877	  7.27134416	  0.99746355	  0.99866119  0.49308633
+3727	 -6.27217477	 -0.00082982	  0.00050863	  7.27134495	  0.99746424	  0.99866155  0.49308648
+3728	 -6.27217533	 -0.00082959	  0.00050850	  7.27134574	  0.99746492	  0.99866191  0.49308650
+3729	 -6.27217590	 -0.00082937	  0.00050836	  7.27134653	  0.99746559	  0.99866227  0.49308659
+3730	 -6.27217646	 -0.00082915	  0.00050822	  7.27134731	  0.99746627	  0.99866263  0.49308664
+3731	 -6.27217703	 -0.00082893	  0.00050809	  7.27134810	  0.99746695	  0.99866299  0.49308674
+3732	 -6.27217759	 -0.00082871	  0.00050795	  7.27134888	  0.99746763	  0.99866334  0.49308688
+3733	 -6.27217815	 -0.00082848	  0.00050782	  7.27134967	  0.99746831	  0.99866370  0.49308691
+3734	 -6.27217872	 -0.00082826	  0.00050768	  7.27135045	  0.99746899	  0.99866406  0.49308700
+3735	 -6.27217928	 -0.00082804	  0.00050754	  7.27135124	  0.99746967	  0.99866442  0.49308706
+3736	 -6.27217984	 -0.00082782	  0.00050741	  7.27135202	  0.99747034	  0.99866477  0.49308711
+3737	 -6.27218040	 -0.00082760	  0.00050727	  7.27135281	  0.99747102	  0.99866513  0.49308731
+3738	 -6.27218097	 -0.00082738	  0.00050714	  7.27135359	  0.99747170	  0.99866549  0.49308733
+3739	 -6.27218153	 -0.00082716	  0.00050700	  7.27135437	  0.99747237	  0.99866584  0.49308746
+3740	 -6.27218209	 -0.00082693	  0.00050686	  7.27135515	  0.99747305	  0.99866620  0.49308753
+3741	 -6.27218265	 -0.00082671	  0.00050673	  7.27135593	  0.99747372	  0.99866656  0.49308759
+3742	 -6.27218321	 -0.00082649	  0.00050659	  7.27135671	  0.99747440	  0.99866691  0.49308757
+3743	 -6.27218377	 -0.00082627	  0.00050646	  7.27135749	  0.99747507	  0.99866727  0.49308770
+3744	 -6.27218433	 -0.00082605	  0.00050632	  7.27135827	  0.99747575	  0.99866763  0.49308772
+3745	 -6.27218488	 -0.00082583	  0.00050619	  7.27135905	  0.99747642	  0.99866798  0.49308784
+3746	 -6.27218544	 -0.00082561	  0.00050605	  7.27135983	  0.99747709	  0.99866834  0.49308794
+3747	 -6.27218600	 -0.00082539	  0.00050592	  7.27136061	  0.99747777	  0.99866869  0.49308810
+3748	 -6.27218656	 -0.00082517	  0.00050578	  7.27136139	  0.99747844	  0.99866905  0.49308812
+3749	 -6.27218711	 -0.00082495	  0.00050565	  7.27136216	  0.99747911	  0.99866940  0.49308821
+3750	 -6.27218767	 -0.00082473	  0.00050551	  7.27136294	  0.99747978	  0.99866976  0.49308825
+3751	 -6.27218823	 -0.00082451	  0.00050538	  7.27136371	  0.99748046	  0.99867011  0.49308833
+3752	 -6.27218878	 -0.00082429	  0.00050524	  7.27136449	  0.99748113	  0.99867046  0.49308847
+3753	 -6.27218934	 -0.00082407	  0.00050511	  7.27136526	  0.99748180	  0.99867082  0.49308860
+3754	 -6.27218989	 -0.00082385	  0.00050497	  7.27136604	  0.99748247	  0.99867117  0.49308859
+3755	 -6.27219045	 -0.00082363	  0.00050484	  7.27136681	  0.99748314	  0.99867153  0.49308869
+3756	 -6.27219100	 -0.00082341	  0.00050471	  7.27136759	  0.99748381	  0.99867188  0.49308873
+3757	 -6.27219155	 -0.00082320	  0.00050457	  7.27136836	  0.99748448	  0.99867223  0.49308878
+3758	 -6.27219211	 -0.00082298	  0.00050444	  7.27136913	  0.99748515	  0.99867259  0.49308888
+3759	 -6.27219266	 -0.00082276	  0.00050430	  7.27136990	  0.99748582	  0.99867294  0.49308897
+3760	 -6.27219321	 -0.00082254	  0.00050417	  7.27137067	  0.99748649	  0.99867329  0.49308901
+3761	 -6.27219376	 -0.00082232	  0.00050403	  7.27137144	  0.99748715	  0.99867364  0.49308913
+3762	 -6.27219432	 -0.00082210	  0.00050390	  7.27137221	  0.99748782	  0.99867400  0.49308916
+3763	 -6.27219487	 -0.00082188	  0.00050377	  7.27137298	  0.99748849	  0.99867435  0.49308935
+3764	 -6.27219542	 -0.00082167	  0.00050363	  7.27137375	  0.99748916	  0.99867470  0.49308938
+3765	 -6.27219597	 -0.00082145	  0.00050350	  7.27137452	  0.99748982	  0.99867505  0.49308944
+3766	 -6.27219652	 -0.00082123	  0.00050337	  7.27137529	  0.99749049	  0.99867540  0.49308959
+3767	 -6.27219707	 -0.00082101	  0.00050323	  7.27137606	  0.99749116	  0.99867576  0.49308961
+3768	 -6.27219762	 -0.00082080	  0.00050310	  7.27137682	  0.99749182	  0.99867611  0.49308966
+3769	 -6.27219817	 -0.00082058	  0.00050296	  7.27137759	  0.99749249	  0.99867646  0.49308979
+3770	 -6.27219872	 -0.00082036	  0.00050283	  7.27137836	  0.99749315	  0.99867681  0.49308985
+3771	 -6.27219926	 -0.00082014	  0.00050270	  7.27137912	  0.99749382	  0.99867716  0.49308989
+3772	 -6.27219981	 -0.00081993	  0.00050256	  7.27137989	  0.99749448	  0.99867751  0.49309002
+3773	 -6.27220036	 -0.00081971	  0.00050243	  7.27138065	  0.99749514	  0.99867786  0.49309006
+3774	 -6.27220091	 -0.00081949	  0.00050230	  7.27138141	  0.99749581	  0.99867821  0.49309016
+3775	 -6.27220145	 -0.00081927	  0.00050216	  7.27138218	  0.99749647	  0.99867856  0.49309022
+3776	 -6.27220200	 -0.00081906	  0.00050203	  7.27138294	  0.99749713	  0.99867891  0.49309028
+3777	 -6.27220254	 -0.00081884	  0.00050190	  7.27138370	  0.99749780	  0.99867926  0.49309037
+3778	 -6.27220309	 -0.00081862	  0.00050177	  7.27138446	  0.99749846	  0.99867961  0.49309053
+3779	 -6.27220363	 -0.00081841	  0.00050163	  7.27138523	  0.99749912	  0.99867996  0.49309055
+3780	 -6.27220418	 -0.00081819	  0.00050150	  7.27138599	  0.99749978	  0.99868031  0.49309069
+3781	 -6.27220472	 -0.00081798	  0.00050137	  7.27138675	  0.99750044	  0.99868066  0.49309070
+3782	 -6.27220527	 -0.00081776	  0.00050124	  7.27138751	  0.99750110	  0.99868100  0.49309083
+3783	 -6.27220581	 -0.00081754	  0.00050110	  7.27138827	  0.99750176	  0.99868135  0.49309090
+3784	 -6.27220635	 -0.00081733	  0.00050097	  7.27138902	  0.99750242	  0.99868170  0.49309098
+3785	 -6.27220690	 -0.00081711	  0.00050084	  7.27138978	  0.99750308	  0.99868205  0.49309101
+3786	 -6.27220744	 -0.00081690	  0.00050071	  7.27139054	  0.99750374	  0.99868240  0.49309113
+3787	 -6.27220798	 -0.00081668	  0.00050057	  7.27139130	  0.99750440	  0.99868275  0.49309116
+3788	 -6.27220852	 -0.00081647	  0.00050044	  7.27139205	  0.99750506	  0.99868309  0.49309123
+3789	 -6.27220906	 -0.00081625	  0.00050031	  7.27139281	  0.99750572	  0.99868344  0.49309142
+3790	 -6.27220960	 -0.00081604	  0.00050018	  7.27139357	  0.99750638	  0.99868379  0.49309142
+3791	 -6.27221014	 -0.00081582	  0.00050005	  7.27139432	  0.99750703	  0.99868413  0.49309146
+3792	 -6.27221068	 -0.00081561	  0.00049991	  7.27139508	  0.99750769	  0.99868448  0.49309158
+3793	 -6.27221122	 -0.00081539	  0.00049978	  7.27139583	  0.99750835	  0.99868483  0.49309166
+3794	 -6.27221176	 -0.00081518	  0.00049965	  7.27139659	  0.99750901	  0.99868517  0.49309171
+3795	 -6.27221230	 -0.00081496	  0.00049952	  7.27139734	  0.99750966	  0.99868552  0.49309183
+3796	 -6.27221284	 -0.00081475	  0.00049939	  7.27139809	  0.99751032	  0.99868587  0.49309186
+3797	 -6.27221338	 -0.00081453	  0.00049926	  7.27139884	  0.99751097	  0.99868621  0.49309196
+3798	 -6.27221391	 -0.00081432	  0.00049912	  7.27139960	  0.99751163	  0.99868656  0.49309197
+3799	 -6.27221445	 -0.00081410	  0.00049899	  7.27140035	  0.99751228	  0.99868690  0.49309212
+3800	 -6.27221499	 -0.00081389	  0.00049886	  7.27140110	  0.99751294	  0.99868725  0.49309226
+3801	 -6.27221552	 -0.00081368	  0.00049873	  7.27140185	  0.99751359	  0.99868759  0.49309233
+3802	 -6.27221606	 -0.00081346	  0.00049860	  7.27140260	  0.99751425	  0.99868794  0.49309240
+3803	 -6.27221660	 -0.00081325	  0.00049847	  7.27140335	  0.99751490	  0.99868828  0.49309241
+3804	 -6.27221713	 -0.00081303	  0.00049834	  7.27140410	  0.99751555	  0.99868863  0.49309250
+3805	 -6.27221767	 -0.00081282	  0.00049821	  7.27140485	  0.99751621	  0.99868897  0.49309252
+3806	 -6.27221820	 -0.00081261	  0.00049807	  7.27140559	  0.99751686	  0.99868932  0.49309262
+3807	 -6.27221874	 -0.00081239	  0.00049794	  7.27140634	  0.99751751	  0.99868966  0.49309274
+3808	 -6.27221927	 -0.00081218	  0.00049781	  7.27140709	  0.99751816	  0.99869001  0.49309277
+3809	 -6.27221980	 -0.00081197	  0.00049768	  7.27140784	  0.99751881	  0.99869035  0.49309287
+3810	 -6.27222034	 -0.00081176	  0.00049755	  7.27140858	  0.99751946	  0.99869069  0.49309295
+3811	 -6.27222087	 -0.00081154	  0.00049742	  7.27140933	  0.99752012	  0.99869104  0.49309305
+3812	 -6.27222140	 -0.00081133	  0.00049729	  7.27141007	  0.99752077	  0.99869138  0.49309311
+3813	 -6.27222193	 -0.00081112	  0.00049716	  7.27141082	  0.99752142	  0.99869172  0.49309317
+3814	 -6.27222247	 -0.00081090	  0.00049703	  7.27141156	  0.99752207	  0.99869207  0.49309328
+3815	 -6.27222300	 -0.00081069	  0.00049690	  7.27141230	  0.99752271	  0.99869241  0.49309332
+3816	 -6.27222353	 -0.00081048	  0.00049677	  7.27141305	  0.99752336	  0.99869275  0.49309344
+3817	 -6.27222406	 -0.00081027	  0.00049664	  7.27141379	  0.99752401	  0.99869309  0.49309341
+3818	 -6.27222459	 -0.00081006	  0.00049651	  7.27141453	  0.99752466	  0.99869344  0.49309354
+3819	 -6.27222512	 -0.00080984	  0.00049638	  7.27141527	  0.99752531	  0.99869378  0.49309361
+3820	 -6.27222565	 -0.00080963	  0.00049625	  7.27141602	  0.99752596	  0.99869412  0.49309375
+3821	 -6.27222618	 -0.00080942	  0.00049612	  7.27141676	  0.99752660	  0.99869446  0.49309380
+3822	 -6.27222671	 -0.00080921	  0.00049599	  7.27141750	  0.99752725	  0.99869480  0.49309382
+3823	 -6.27222723	 -0.00080900	  0.00049586	  7.27141824	  0.99752790	  0.99869514  0.49309395
+3824	 -6.27222776	 -0.00080879	  0.00049573	  7.27141898	  0.99752854	  0.99869548  0.49309403
+3825	 -6.27222829	 -0.00080857	  0.00049560	  7.27141972	  0.99752919	  0.99869582  0.49309409
+3826	 -6.27222882	 -0.00080836	  0.00049547	  7.27142045	  0.99752984	  0.99869617  0.49309410
+3827	 -6.27222934	 -0.00080815	  0.00049534	  7.27142119	  0.99753048	  0.99869651  0.49309425
+3828	 -6.27222987	 -0.00080794	  0.00049521	  7.27142193	  0.99753113	  0.99869685  0.49309434
+3829	 -6.27223040	 -0.00080773	  0.00049508	  7.27142267	  0.99753177	  0.99869719  0.49309443
+3830	 -6.27223092	 -0.00080752	  0.00049495	  7.27142340	  0.99753241	  0.99869753  0.49309447
+3831	 -6.27223145	 -0.00080731	  0.00049482	  7.27142414	  0.99753306	  0.99869787  0.49309457
+3832	 -6.27223197	 -0.00080710	  0.00049469	  7.27142488	  0.99753370	  0.99869821  0.49309459
+3833	 -6.27223250	 -0.00080689	  0.00049457	  7.27142561	  0.99753435	  0.99869855  0.49309463
+3834	 -6.27223302	 -0.00080668	  0.00049444	  7.27142635	  0.99753499	  0.99869888  0.49309473
+3835	 -6.27223355	 -0.00080647	  0.00049431	  7.27142708	  0.99753563	  0.99869922  0.49309486
+3836	 -6.27223407	 -0.00080626	  0.00049418	  7.27142781	  0.99753627	  0.99869956  0.49309496
+3837	 -6.27223460	 -0.00080605	  0.00049405	  7.27142855	  0.99753692	  0.99869990  0.49309501
+3838	 -6.27223512	 -0.00080584	  0.00049392	  7.27142928	  0.99753756	  0.99870024  0.49309506
+3839	 -6.27223564	 -0.00080563	  0.00049379	  7.27143001	  0.99753820	  0.99870058  0.49309510
+3840	 -6.27223616	 -0.00080542	  0.00049366	  7.27143074	  0.99753884	  0.99870092  0.49309524
+3841	 -6.27223669	 -0.00080521	  0.00049354	  7.27143148	  0.99753948	  0.99870125  0.49309538
+3842	 -6.27223721	 -0.00080500	  0.00049341	  7.27143221	  0.99754012	  0.99870159  0.49309541
+3843	 -6.27223773	 -0.00080479	  0.00049328	  7.27143294	  0.99754076	  0.99870193  0.49309547
+3844	 -6.27223825	 -0.00080458	  0.00049315	  7.27143367	  0.99754140	  0.99870227  0.49309552
+3845	 -6.27223877	 -0.00080437	  0.00049302	  7.27143440	  0.99754204	  0.99870260  0.49309562
+3846	 -6.27223929	 -0.00080416	  0.00049289	  7.27143513	  0.99754268	  0.99870294  0.49309564
+3847	 -6.27223981	 -0.00080395	  0.00049277	  7.27143586	  0.99754332	  0.99870328  0.49309575
+3848	 -6.27224033	 -0.00080375	  0.00049264	  7.27143658	  0.99754395	  0.99870362  0.49309585
+3849	 -6.27224085	 -0.00080354	  0.00049251	  7.27143731	  0.99754459	  0.99870395  0.49309591
+3850	 -6.27224137	 -0.00080333	  0.00049238	  7.27143804	  0.99754523	  0.99870429  0.49309595
+3851	 -6.27224189	 -0.00080312	  0.00049225	  7.27143877	  0.99754587	  0.99870463  0.49309610
+3852	 -6.27224241	 -0.00080291	  0.00049213	  7.27143949	  0.99754650	  0.99870496  0.49309609
+3853	 -6.27224292	 -0.00080270	  0.00049200	  7.27144022	  0.99754714	  0.99870530  0.49309625
+3854	 -6.27224344	 -0.00080250	  0.00049187	  7.27144094	  0.99754778	  0.99870563  0.49309625
+3855	 -6.27224396	 -0.00080229	  0.00049174	  7.27144167	  0.99754841	  0.99870597  0.49309632
+3856	 -6.27224447	 -0.00080208	  0.00049162	  7.27144239	  0.99754905	  0.99870630  0.49309639
+3857	 -6.27224499	 -0.00080187	  0.00049149	  7.27144312	  0.99754968	  0.99870664  0.49309648
+3858	 -6.27224551	 -0.00080166	  0.00049136	  7.27144384	  0.99755032	  0.99870697  0.49309655
+3859	 -6.27224602	 -0.00080146	  0.00049123	  7.27144457	  0.99755095	  0.99870731  0.49309667
+3860	 -6.27224654	 -0.00080125	  0.00049111	  7.27144529	  0.99755159	  0.99870764  0.49309666
+3861	 -6.27224705	 -0.00080104	  0.00049098	  7.27144601	  0.99755222	  0.99870798  0.49309679
+3862	 -6.27224757	 -0.00080084	  0.00049085	  7.27144673	  0.99755286	  0.99870831  0.49309687
+3863	 -6.27224808	 -0.00080063	  0.00049072	  7.27144746	  0.99755349	  0.99870865  0.49309695
+3864	 -6.27224860	 -0.00080042	  0.00049060	  7.27144818	  0.99755412	  0.99870898  0.49309704
+3865	 -6.27224911	 -0.00080021	  0.00049047	  7.27144890	  0.99755476	  0.99870932  0.49309706
+3866	 -6.27224962	 -0.00080001	  0.00049034	  7.27144962	  0.99755539	  0.99870965  0.49309713
+3867	 -6.27225014	 -0.00079980	  0.00049022	  7.27145034	  0.99755602	  0.99870998  0.49309722
+3868	 -6.27225065	 -0.00079959	  0.00049009	  7.27145106	  0.99755665	  0.99871032  0.49309728
+3869	 -6.27225116	 -0.00079939	  0.00048996	  7.27145178	  0.99755728	  0.99871065  0.49309738
+3870	 -6.27225168	 -0.00079918	  0.00048984	  7.27145249	  0.99755791	  0.99871098  0.49309747
+3871	 -6.27225219	 -0.00079897	  0.00048971	  7.27145321	  0.99755854	  0.99871131  0.49309753
+3872	 -6.27225270	 -0.00079877	  0.00048958	  7.27145393	  0.99755918	  0.99871165  0.49309771
+3873	 -6.27225321	 -0.00079856	  0.00048946	  7.27145465	  0.99755981	  0.99871198  0.49309765
+3874	 -6.27225372	 -0.00079836	  0.00048933	  7.27145536	  0.99756044	  0.99871231  0.49309782
+3875	 -6.27225423	 -0.00079815	  0.00048921	  7.27145608	  0.99756106	  0.99871264  0.49309784
+3876	 -6.27225474	 -0.00079795	  0.00048908	  7.27145680	  0.99756169	  0.99871298  0.49309793
+3877	 -6.27225525	 -0.00079774	  0.00048895	  7.27145751	  0.99756232	  0.99871331  0.49309799
+3878	 -6.27225576	 -0.00079753	  0.00048883	  7.27145823	  0.99756295	  0.99871364  0.49309812
+3879	 -6.27225627	 -0.00079733	  0.00048870	  7.27145894	  0.99756358	  0.99871397  0.49309805
+3880	 -6.27225678	 -0.00079712	  0.00048857	  7.27145966	  0.99756421	  0.99871430  0.49309821
+3881	 -6.27225729	 -0.00079692	  0.00048845	  7.27146037	  0.99756483	  0.99871463  0.49309831
+3882	 -6.27225780	 -0.00079671	  0.00048832	  7.27146108	  0.99756546	  0.99871496  0.49309836
+3883	 -6.27225830	 -0.00079651	  0.00048820	  7.27146180	  0.99756609	  0.99871529  0.49309842
+3884	 -6.27225881	 -0.00079630	  0.00048807	  7.27146251	  0.99756671	  0.99871563  0.49309856
+3885	 -6.27225932	 -0.00079610	  0.00048795	  7.27146322	  0.99756734	  0.99871596  0.49309861
+3886	 -6.27225983	 -0.00079589	  0.00048782	  7.27146393	  0.99756797	  0.99871629  0.49309861
+3887	 -6.27226033	 -0.00079569	  0.00048769	  7.27146464	  0.99756859	  0.99871662  0.49309873
+3888	 -6.27226084	 -0.00079548	  0.00048757	  7.27146535	  0.99756922	  0.99871695  0.49309877
+3889	 -6.27226134	 -0.00079528	  0.00048744	  7.27146606	  0.99756984	  0.99871728  0.49309886
+3890	 -6.27226185	 -0.00079508	  0.00048732	  7.27146677	  0.99757047	  0.99871761  0.49309893
+3891	 -6.27226235	 -0.00079487	  0.00048719	  7.27146748	  0.99757109	  0.99871793  0.49309902
+3892	 -6.27226286	 -0.00079467	  0.00048707	  7.27146819	  0.99757172	  0.99871826  0.49309912
+3893	 -6.27226336	 -0.00079446	  0.00048694	  7.27146890	  0.99757234	  0.99871859  0.49309921
+3894	 -6.27226387	 -0.00079426	  0.00048682	  7.27146961	  0.99757296	  0.99871892  0.49309921
+3895	 -6.27226437	 -0.00079406	  0.00048669	  7.27147032	  0.99757359	  0.99871925  0.49309928
+3896	 -6.27226488	 -0.00079385	  0.00048657	  7.27147102	  0.99757421	  0.99871958  0.49309939
+3897	 -6.27226538	 -0.00079365	  0.00048644	  7.27147173	  0.99757483	  0.99871991  0.49309945
+3898	 -6.27226588	 -0.00079345	  0.00048632	  7.27147244	  0.99757545	  0.99872024  0.49309958
+3899	 -6.27226639	 -0.00079324	  0.00048619	  7.27147314	  0.99757607	  0.99872056  0.49309958
+3900	 -6.27226689	 -0.00079304	  0.00048607	  7.27147385	  0.99757670	  0.99872089  0.49309961
+3901	 -6.27226739	 -0.00079284	  0.00048594	  7.27147455	  0.99757732	  0.99872122  0.49309967
+3902	 -6.27226789	 -0.00079263	  0.00048582	  7.27147526	  0.99757794	  0.99872155  0.49309986
+3903	 -6.27226839	 -0.00079243	  0.00048570	  7.27147596	  0.99757856	  0.99872187  0.49309996
+3904	 -6.27226889	 -0.00079223	  0.00048557	  7.27147667	  0.99757918	  0.99872220  0.49309999
+3905	 -6.27226939	 -0.00079202	  0.00048545	  7.27147737	  0.99757980	  0.99872253  0.49310010
+3906	 -6.27226990	 -0.00079182	  0.00048532	  7.27147807	  0.99758042	  0.99872286  0.49310015
+3907	 -6.27227040	 -0.00079162	  0.00048520	  7.27147878	  0.99758104	  0.99872318  0.49310022
+3908	 -6.27227090	 -0.00079142	  0.00048507	  7.27147948	  0.99758166	  0.99872351  0.49310023
+3909	 -6.27227139	 -0.00079121	  0.00048495	  7.27148018	  0.99758227	  0.99872384  0.49310029
+3910	 -6.27227189	 -0.00079101	  0.00048483	  7.27148088	  0.99758289	  0.99872416  0.49310038
+3911	 -6.27227239	 -0.00079081	  0.00048470	  7.27148158	  0.99758351	  0.99872449  0.49310046
+3912	 -6.27227289	 -0.00079061	  0.00048458	  7.27148228	  0.99758413	  0.99872481  0.49310052
+3913	 -6.27227339	 -0.00079041	  0.00048445	  7.27148298	  0.99758474	  0.99872514  0.49310058
+3914	 -6.27227389	 -0.00079020	  0.00048433	  7.27148368	  0.99758536	  0.99872546  0.49310064
+3915	 -6.27227439	 -0.00079000	  0.00048421	  7.27148438	  0.99758598	  0.99872579  0.49310077
+3916	 -6.27227488	 -0.00078980	  0.00048408	  7.27148508	  0.99758659	  0.99872612  0.49310085
+3917	 -6.27227538	 -0.00078960	  0.00048396	  7.27148578	  0.99758721	  0.99872644  0.49310092
+3918	 -6.27227588	 -0.00078940	  0.00048384	  7.27148648	  0.99758783	  0.99872677  0.49310100
+3919	 -6.27227637	 -0.00078920	  0.00048371	  7.27148717	  0.99758844	  0.99872709  0.49310112
+3920	 -6.27227687	 -0.00078900	  0.00048359	  7.27148787	  0.99758906	  0.99872741  0.49310113
+3921	 -6.27227736	 -0.00078880	  0.00048347	  7.27148857	  0.99758967	  0.99872774  0.49310122
+3922	 -6.27227786	 -0.00078859	  0.00048334	  7.27148927	  0.99759029	  0.99872806  0.49310127
+3923	 -6.27227836	 -0.00078839	  0.00048322	  7.27148996	  0.99759090	  0.99872839  0.49310130
+3924	 -6.27227885	 -0.00078819	  0.00048310	  7.27149066	  0.99759151	  0.99872871  0.49310141
+3925	 -6.27227934	 -0.00078799	  0.00048297	  7.27149135	  0.99759213	  0.99872903  0.49310152
+3926	 -6.27227984	 -0.00078779	  0.00048285	  7.27149205	  0.99759274	  0.99872936  0.49310152
+3927	 -6.27228033	 -0.00078759	  0.00048273	  7.27149274	  0.99759335	  0.99872968  0.49310163
+3928	 -6.27228083	 -0.00078739	  0.00048260	  7.27149344	  0.99759397	  0.99873001  0.49310168
+3929	 -6.27228132	 -0.00078719	  0.00048248	  7.27149413	  0.99759458	  0.99873033  0.49310178
+3930	 -6.27228181	 -0.00078699	  0.00048236	  7.27149482	  0.99759519	  0.99873065  0.49310189
+3931	 -6.27228231	 -0.00078679	  0.00048224	  7.27149552	  0.99759580	  0.99873097  0.49310191
+3932	 -6.27228280	 -0.00078659	  0.00048211	  7.27149621	  0.99759641	  0.99873130  0.49310203
+3933	 -6.27228329	 -0.00078639	  0.00048199	  7.27149690	  0.99759702	  0.99873162  0.49310202
+3934	 -6.27228378	 -0.00078619	  0.00048187	  7.27149759	  0.99759763	  0.99873194  0.49310216
+3935	 -6.27228427	 -0.00078599	  0.00048175	  7.27149828	  0.99759825	  0.99873226  0.49310220
+3936	 -6.27228476	 -0.00078579	  0.00048162	  7.27149897	  0.99759886	  0.99873259  0.49310228
+3937	 -6.27228526	 -0.00078559	  0.00048150	  7.27149966	  0.99759946	  0.99873291  0.49310231
+3938	 -6.27228575	 -0.00078539	  0.00048138	  7.27150035	  0.99760007	  0.99873323  0.49310245
+3939	 -6.27228624	 -0.00078519	  0.00048126	  7.27150104	  0.99760068	  0.99873355  0.49310250
+3940	 -6.27228673	 -0.00078500	  0.00048113	  7.27150173	  0.99760129	  0.99873387  0.49310256
+3941	 -6.27228722	 -0.00078480	  0.00048101	  7.27150242	  0.99760190	  0.99873419  0.49310269
+3942	 -6.27228771	 -0.00078460	  0.00048089	  7.27150311	  0.99760251	  0.99873451  0.49310278
+3943	 -6.27228819	 -0.00078440	  0.00048077	  7.27150380	  0.99760312	  0.99873483  0.49310277
+3944	 -6.27228868	 -0.00078420	  0.00048065	  7.27150448	  0.99760372	  0.99873515  0.49310291
+3945	 -6.27228917	 -0.00078400	  0.00048052	  7.27150517	  0.99760433	  0.99873548  0.49310291
+3946	 -6.27228966	 -0.00078380	  0.00048040	  7.27150586	  0.99760494	  0.99873580  0.49310301
+3947	 -6.27229015	 -0.00078360	  0.00048028	  7.27150654	  0.99760555	  0.99873612  0.49310307
+3948	 -6.27229064	 -0.00078341	  0.00048016	  7.27150723	  0.99760615	  0.99873644  0.49310321
+3949	 -6.27229112	 -0.00078321	  0.00048004	  7.27150792	  0.99760676	  0.99873676  0.49310322
+3950	 -6.27229161	 -0.00078301	  0.00047992	  7.27150860	  0.99760736	  0.99873707  0.49310330
+3951	 -6.27229210	 -0.00078281	  0.00047979	  7.27150929	  0.99760797	  0.99873739  0.49310330
+3952	 -6.27229258	 -0.00078261	  0.00047967	  7.27150997	  0.99760857	  0.99873771  0.49310340
+3953	 -6.27229307	 -0.00078242	  0.00047955	  7.27151065	  0.99760918	  0.99873803  0.49310344
+3954	 -6.27229356	 -0.00078222	  0.00047943	  7.27151134	  0.99760978	  0.99873835  0.49310362
+3955	 -6.27229404	 -0.00078202	  0.00047931	  7.27151202	  0.99761039	  0.99873867  0.49310362
+3956	 -6.27229453	 -0.00078182	  0.00047919	  7.27151270	  0.99761099	  0.99873899  0.49310369
+3957	 -6.27229501	 -0.00078163	  0.00047907	  7.27151339	  0.99761160	  0.99873931  0.49310382
+3958	 -6.27229550	 -0.00078143	  0.00047895	  7.27151407	  0.99761220	  0.99873963  0.49310378
+3959	 -6.27229598	 -0.00078123	  0.00047882	  7.27151475	  0.99761280	  0.99873994  0.49310395
+3960	 -6.27229646	 -0.00078103	  0.00047870	  7.27151543	  0.99761340	  0.99874026  0.49310398
+3961	 -6.27229695	 -0.00078084	  0.00047858	  7.27151611	  0.99761401	  0.99874058  0.49310409
+3962	 -6.27229743	 -0.00078064	  0.00047846	  7.27151679	  0.99761461	  0.99874090  0.49310410
+3963	 -6.27229791	 -0.00078044	  0.00047834	  7.27151747	  0.99761521	  0.99874122  0.49310419
+3964	 -6.27229840	 -0.00078025	  0.00047822	  7.27151815	  0.99761581	  0.99874153  0.49310426
+3965	 -6.27229888	 -0.00078005	  0.00047810	  7.27151883	  0.99761641	  0.99874185  0.49310431
+3966	 -6.27229936	 -0.00077985	  0.00047798	  7.27151951	  0.99761701	  0.99874217  0.49310439
+3967	 -6.27229984	 -0.00077966	  0.00047786	  7.27152019	  0.99761762	  0.99874248  0.49310456
+3968	 -6.27230033	 -0.00077946	  0.00047774	  7.27152087	  0.99761822	  0.99874280  0.49310453
+3969	 -6.27230081	 -0.00077926	  0.00047762	  7.27152154	  0.99761882	  0.99874312  0.49310456
+3970	 -6.27230129	 -0.00077907	  0.00047750	  7.27152222	  0.99761942	  0.99874343  0.49310472
+3971	 -6.27230177	 -0.00077887	  0.00047738	  7.27152290	  0.99762001	  0.99874375  0.49310478
+3972	 -6.27230225	 -0.00077868	  0.00047726	  7.27152357	  0.99762061	  0.99874407  0.49310482
+3973	 -6.27230273	 -0.00077848	  0.00047714	  7.27152425	  0.99762121	  0.99874438  0.49310485
+3974	 -6.27230321	 -0.00077828	  0.00047702	  7.27152493	  0.99762181	  0.99874470  0.49310496
+3975	 -6.27230369	 -0.00077809	  0.00047690	  7.27152560	  0.99762241	  0.99874501  0.49310508
+3976	 -6.27230417	 -0.00077789	  0.00047678	  7.27152628	  0.99762301	  0.99874533  0.49310514
+3977	 -6.27230465	 -0.00077770	  0.00047666	  7.27152695	  0.99762360	  0.99874564  0.49310512
+3978	 -6.27230513	 -0.00077750	  0.00047654	  7.27152763	  0.99762420	  0.99874596  0.49310522
+3979	 -6.27230561	 -0.00077731	  0.00047642	  7.27152830	  0.99762480	  0.99874627  0.49310530
+3980	 -6.27230609	 -0.00077711	  0.00047630	  7.27152897	  0.99762540	  0.99874659  0.49310543
+3981	 -6.27230656	 -0.00077692	  0.00047618	  7.27152965	  0.99762599	  0.99874690  0.49310543
+3982	 -6.27230704	 -0.00077672	  0.00047606	  7.27153032	  0.99762659	  0.99874722  0.49310556
+3983	 -6.27230752	 -0.00077653	  0.00047594	  7.27153099	  0.99762718	  0.99874753  0.49310555
+3984	 -6.27230800	 -0.00077633	  0.00047582	  7.27153166	  0.99762778	  0.99874785  0.49310570
+3985	 -6.27230847	 -0.00077614	  0.00047570	  7.27153233	  0.99762837	  0.99874816  0.49310570
+3986	 -6.27230895	 -0.00077594	  0.00047558	  7.27153301	  0.99762897	  0.99874848  0.49310582
+3987	 -6.27230943	 -0.00077575	  0.00047546	  7.27153368	  0.99762956	  0.99874879  0.49310585
+3988	 -6.27230990	 -0.00077556	  0.00047534	  7.27153435	  0.99763016	  0.99874910  0.49310599
+3989	 -6.27231038	 -0.00077536	  0.00047522	  7.27153502	  0.99763075	  0.99874942  0.49310605
+3990	 -6.27231085	 -0.00077517	  0.00047510	  7.27153569	  0.99763135	  0.99874973  0.49310608
+3991	 -6.27231133	 -0.00077497	  0.00047498	  7.27153636	  0.99763194	  0.99875004  0.49310612
+3992	 -6.27231180	 -0.00077478	  0.00047487	  7.27153702	  0.99763253	  0.99875036  0.49310624
+3993	 -6.27231228	 -0.00077458	  0.00047475	  7.27153769	  0.99763312	  0.99875067  0.49310622
+3994	 -6.27231275	 -0.00077439	  0.00047463	  7.27153836	  0.99763372	  0.99875098  0.49310639
+3995	 -6.27231323	 -0.00077420	  0.00047451	  7.27153903	  0.99763431	  0.99875129  0.49310643
+3996	 -6.27231370	 -0.00077400	  0.00047439	  7.27153970	  0.99763490	  0.99875161  0.49310644
+3997	 -6.27231417	 -0.00077381	  0.00047427	  7.27154036	  0.99763549	  0.99875192  0.49310654
+3998	 -6.27231465	 -0.00077362	  0.00047415	  7.27154103	  0.99763608	  0.99875223  0.49310665
+3999	 -6.27231512	 -0.00077342	  0.00047403	  7.27154170	  0.99763668	  0.99875254  0.49310674
+4000	 -6.27231559	 -0.00077323	  0.00047392	  7.27154236	  0.99763727	  0.99875285  0.49310670
+4001	 -6.27231607	 -0.00077304	  0.00047380	  7.27154303	  0.99763786	  0.99875317  0.49310684
+4002	 -6.27231654	 -0.00077284	  0.00047368	  7.27154369	  0.99763845	  0.99875348  0.49310692
+4003	 -6.27231701	 -0.00077265	  0.00047356	  7.27154436	  0.99763904	  0.99875379  0.49310699
+4004	 -6.27231748	 -0.00077246	  0.00047344	  7.27154502	  0.99763963	  0.99875410  0.49310700
+4005	 -6.27231795	 -0.00077227	  0.00047332	  7.27154569	  0.99764021	  0.99875441  0.49310703
+4006	 -6.27231842	 -0.00077207	  0.00047321	  7.27154635	  0.99764080	  0.99875472  0.49310722
+4007	 -6.27231889	 -0.00077188	  0.00047309	  7.27154701	  0.99764139	  0.99875503  0.49310725
+4008	 -6.27231936	 -0.00077169	  0.00047297	  7.27154768	  0.99764198	  0.99875534  0.49310729
+4009	 -6.27231984	 -0.00077150	  0.00047285	  7.27154834	  0.99764257	  0.99875565  0.49310745
+4010	 -6.27232031	 -0.00077130	  0.00047273	  7.27154900	  0.99764316	  0.99875596  0.49310751
+4011	 -6.27232077	 -0.00077111	  0.00047262	  7.27154966	  0.99764374	  0.99875627  0.49310749
+4012	 -6.27232124	 -0.00077092	  0.00047250	  7.27155032	  0.99764433	  0.99875658  0.49310765
+4013	 -6.27232171	 -0.00077073	  0.00047238	  7.27155099	  0.99764492	  0.99875689  0.49310767
+4014	 -6.27232218	 -0.00077054	  0.00047226	  7.27155165	  0.99764550	  0.99875720  0.49310775
+4015	 -6.27232265	 -0.00077034	  0.00047215	  7.27155231	  0.99764609	  0.99875751  0.49310781
+4016	 -6.27232312	 -0.00077015	  0.00047203	  7.27155297	  0.99764668	  0.99875782  0.49310787
+4017	 -6.27232359	 -0.00076996	  0.00047191	  7.27155363	  0.99764726	  0.99875813  0.49310796
+4018	 -6.27232406	 -0.00076977	  0.00047179	  7.27155429	  0.99764785	  0.99875844  0.49310787
+4019	 -6.27232452	 -0.00076958	  0.00047168	  7.27155494	  0.99764843	  0.99875875  0.49310807
+4020	 -6.27232499	 -0.00076939	  0.00047156	  7.27155560	  0.99764902	  0.99875906  0.49310819
+4021	 -6.27232546	 -0.00076920	  0.00047144	  7.27155626	  0.99764960	  0.99875936  0.49310824
+4022	 -6.27232592	 -0.00076900	  0.00047132	  7.27155692	  0.99765019	  0.99875967  0.49310831
+4023	 -6.27232639	 -0.00076881	  0.00047121	  7.27155758	  0.99765077	  0.99875998  0.49310826
+4024	 -6.27232686	 -0.00076862	  0.00047109	  7.27155823	  0.99765135	  0.99876029  0.49310841
+4025	 -6.27232732	 -0.00076843	  0.00047097	  7.27155889	  0.99765194	  0.99876060  0.49310851
+4026	 -6.27232779	 -0.00076824	  0.00047086	  7.27155955	  0.99765252	  0.99876090  0.49310855
+4027	 -6.27232825	 -0.00076805	  0.00047074	  7.27156020	  0.99765310	  0.99876121  0.49310862
+4028	 -6.27232872	 -0.00076786	  0.00047062	  7.27156086	  0.99765369	  0.99876152  0.49310868
+4029	 -6.27232918	 -0.00076767	  0.00047050	  7.27156151	  0.99765427	  0.99876183  0.49310870
+4030	 -6.27232965	 -0.00076748	  0.00047039	  7.27156217	  0.99765485	  0.99876213  0.49310885
+4031	 -6.27233011	 -0.00076729	  0.00047027	  7.27156282	  0.99765543	  0.99876244  0.49310881
+4032	 -6.27233058	 -0.00076710	  0.00047015	  7.27156348	  0.99765601	  0.99876275  0.49310901
+4033	 -6.27233104	 -0.00076691	  0.00047004	  7.27156413	  0.99765660	  0.99876305  0.49310905
+4034	 -6.27233150	 -0.00076672	  0.00046992	  7.27156478	  0.99765718	  0.99876336  0.49310906
+4035	 -6.27233197	 -0.00076653	  0.00046981	  7.27156544	  0.99765776	  0.99876367  0.49310915
+4036	 -6.27233243	 -0.00076634	  0.00046969	  7.27156609	  0.99765834	  0.99876397  0.49310926
+4037	 -6.27233289	 -0.00076615	  0.00046957	  7.27156674	  0.99765892	  0.99876428  0.49310922
+4038	 -6.27233336	 -0.00076596	  0.00046946	  7.27156740	  0.99765950	  0.99876458  0.49310945
+4039	 -6.27233382	 -0.00076577	  0.00046934	  7.27156805	  0.99766008	  0.99876489  0.49310949
+4040	 -6.27233428	 -0.00076558	  0.00046922	  7.27156870	  0.99766065	  0.99876520  0.49310955
+4041	 -6.27233474	 -0.00076539	  0.00046911	  7.27156935	  0.99766123	  0.99876550  0.49310960
+4042	 -6.27233520	 -0.00076520	  0.00046899	  7.27157000	  0.99766181	  0.99876581  0.49310966
+4043	 -6.27233566	 -0.00076501	  0.00046888	  7.27157065	  0.99766239	  0.99876611  0.49310976
+4044	 -6.27233612	 -0.00076482	  0.00046876	  7.27157130	  0.99766297	  0.99876642  0.49310982
+4045	 -6.27233658	 -0.00076464	  0.00046864	  7.27157195	  0.99766355	  0.99876672  0.49310988
+4046	 -6.27233705	 -0.00076445	  0.00046853	  7.27157260	  0.99766412	  0.99876703  0.49310995
+4047	 -6.27233751	 -0.00076426	  0.00046841	  7.27157325	  0.99766470	  0.99876733  0.49310998
+4048	 -6.27233797	 -0.00076407	  0.00046830	  7.27157390	  0.99766528	  0.99876763  0.49311004
+4049	 -6.27233843	 -0.00076388	  0.00046818	  7.27157454	  0.99766585	  0.99876794  0.49311017
+4050	 -6.27233888	 -0.00076369	  0.00046806	  7.27157519	  0.99766643	  0.99876824  0.49311019
+4051	 -6.27233934	 -0.00076350	  0.00046795	  7.27157584	  0.99766701	  0.99876855  0.49311023
+4052	 -6.27233980	 -0.00076332	  0.00046783	  7.27157649	  0.99766758	  0.99876885  0.49311028
+4053	 -6.27234026	 -0.00076313	  0.00046772	  7.27157713	  0.99766816	  0.99876915  0.49311042
+4054	 -6.27234072	 -0.00076294	  0.00046760	  7.27157778	  0.99766873	  0.99876946  0.49311047
+4055	 -6.27234118	 -0.00076275	  0.00046749	  7.27157843	  0.99766931	  0.99876976  0.49311045
+4056	 -6.27234163	 -0.00076256	  0.00046737	  7.27157907	  0.99766988	  0.99877006  0.49311061
+4057	 -6.27234209	 -0.00076238	  0.00046726	  7.27157972	  0.99767046	  0.99877037  0.49311059
+4058	 -6.27234255	 -0.00076219	  0.00046714	  7.27158036	  0.99767103	  0.99877067  0.49311072
+4059	 -6.27234301	 -0.00076200	  0.00046703	  7.27158101	  0.99767160	  0.99877097  0.49311081
+4060	 -6.27234346	 -0.00076181	  0.00046691	  7.27158165	  0.99767218	  0.99877128  0.49311088
+4061	 -6.27234392	 -0.00076163	  0.00046680	  7.27158229	  0.99767275	  0.99877158  0.49311099
+4062	 -6.27234438	 -0.00076144	  0.00046668	  7.27158294	  0.99767332	  0.99877188  0.49311100
+4063	 -6.27234483	 -0.00076125	  0.00046657	  7.27158358	  0.99767389	  0.99877218  0.49311108
+4064	 -6.27234529	 -0.00076106	  0.00046645	  7.27158422	  0.99767447	  0.99877248  0.49311114
+4065	 -6.27234574	 -0.00076088	  0.00046634	  7.27158487	  0.99767504	  0.99877279  0.49311126
+4066	 -6.27234620	 -0.00076069	  0.00046622	  7.27158551	  0.99767561	  0.99877309  0.49311118
+4067	 -6.27234665	 -0.00076050	  0.00046611	  7.27158615	  0.99767618	  0.99877339  0.49311132
+4068	 -6.27234711	 -0.00076032	  0.00046599	  7.27158679	  0.99767675	  0.99877369  0.49311134
+4069	 -6.27234756	 -0.00076013	  0.00046588	  7.27158743	  0.99767732	  0.99877399  0.49311138
+4070	 -6.27234802	 -0.00075994	  0.00046576	  7.27158807	  0.99767789	  0.99877429  0.49311158
+4071	 -6.27234847	 -0.00075976	  0.00046565	  7.27158872	  0.99767846	  0.99877459  0.49311152
+4072	 -6.27234892	 -0.00075957	  0.00046554	  7.27158935	  0.99767903	  0.99877489  0.49311170
+4073	 -6.27234938	 -0.00075938	  0.00046542	  7.27158999	  0.99767960	  0.99877519  0.49311176
+4074	 -6.27234983	 -0.00075920	  0.00046531	  7.27159063	  0.99768017	  0.99877550  0.49311184
+4075	 -6.27235028	 -0.00075901	  0.00046519	  7.27159127	  0.99768074	  0.99877580  0.49311180
+4076	 -6.27235074	 -0.00075882	  0.00046508	  7.27159191	  0.99768131	  0.99877610  0.49311187
+4077	 -6.27235119	 -0.00075864	  0.00046496	  7.27159255	  0.99768188	  0.99877640  0.49311206
+4078	 -6.27235164	 -0.00075845	  0.00046485	  7.27159319	  0.99768245	  0.99877670  0.49311212
+4079	 -6.27235209	 -0.00075827	  0.00046474	  7.27159383	  0.99768302	  0.99877700  0.49311212
+4080	 -6.27235255	 -0.00075808	  0.00046462	  7.27159446	  0.99768358	  0.99877730  0.49311214
+4081	 -6.27235300	 -0.00075790	  0.00046451	  7.27159510	  0.99768415	  0.99877759  0.49311223
+4082	 -6.27235345	 -0.00075771	  0.00046440	  7.27159574	  0.99768472	  0.99877789  0.49311231
+4083	 -6.27235390	 -0.00075753	  0.00046428	  7.27159637	  0.99768529	  0.99877819  0.49311242
+4084	 -6.27235435	 -0.00075734	  0.00046417	  7.27159701	  0.99768585	  0.99877849  0.49311242
+4085	 -6.27235480	 -0.00075715	  0.00046405	  7.27159765	  0.99768642	  0.99877879  0.49311257
+4086	 -6.27235525	 -0.00075697	  0.00046394	  7.27159828	  0.99768699	  0.99877909  0.49311263
+4087	 -6.27235570	 -0.00075678	  0.00046383	  7.27159892	  0.99768755	  0.99877939  0.49311265
+4088	 -6.27235615	 -0.00075660	  0.00046371	  7.27159955	  0.99768812	  0.99877969  0.49311271
+4089	 -6.27235660	 -0.00075641	  0.00046360	  7.27160019	  0.99768868	  0.99877999  0.49311273
+4090	 -6.27235705	 -0.00075623	  0.00046349	  7.27160082	  0.99768925	  0.99878028  0.49311292
+4091	 -6.27235750	 -0.00075605	  0.00046337	  7.27160145	  0.99768981	  0.99878058  0.49311290
+4092	 -6.27235795	 -0.00075586	  0.00046326	  7.27160209	  0.99769038	  0.99878088  0.49311294
+4093	 -6.27235840	 -0.00075568	  0.00046315	  7.27160272	  0.99769094	  0.99878118  0.49311305
+4094	 -6.27235884	 -0.00075549	  0.00046303	  7.27160335	  0.99769150	  0.99878147  0.49311309
+4095	 -6.27235929	 -0.00075531	  0.00046292	  7.27160398	  0.99769207	  0.99878177  0.49311327
+4096	 -6.27235974	 -0.00075512	  0.00046281	  7.27160462	  0.99769263	  0.99878207  0.49311324
+4097	 -6.27236019	 -0.00075494	  0.00046269	  7.27160525	  0.99769319	  0.99878237  0.49311327
+4098	 -6.27236063	 -0.00075475	  0.00046258	  7.27160588	  0.99769376	  0.99878266  0.49311333
+4099	 -6.27236108	 -0.00075457	  0.00046247	  7.27160651	  0.99769432	  0.99878296  0.49311348
+4100	 -6.27236153	 -0.00075439	  0.00046236	  7.27160714	  0.99769488	  0.99878326  0.49311361
+4101	 -6.27236197	 -0.00075420	  0.00046224	  7.27160777	  0.99769544	  0.99878355  0.49311357
+4102	 -6.27236242	 -0.00075402	  0.00046213	  7.27160840	  0.99769601	  0.99878385  0.49311362
+4103	 -6.27236287	 -0.00075384	  0.00046202	  7.27160903	  0.99769657	  0.99878415  0.49311367
+4104	 -6.27236331	 -0.00075365	  0.00046191	  7.27160966	  0.99769713	  0.99878444  0.49311366
+4105	 -6.27236376	 -0.00075347	  0.00046179	  7.27161029	  0.99769769	  0.99878474  0.49311384
+4106	 -6.27236420	 -0.00075329	  0.00046168	  7.27161092	  0.99769825	  0.99878503  0.49311393
+4107	 -6.27236465	 -0.00075310	  0.00046157	  7.27161155	  0.99769881	  0.99878533  0.49311405
+4108	 -6.27236509	 -0.00075292	  0.00046146	  7.27161217	  0.99769937	  0.99878563  0.49311410
+4109	 -6.27236554	 -0.00075274	  0.00046134	  7.27161280	  0.99769993	  0.99878592  0.49311401
+4110	 -6.27236598	 -0.00075255	  0.00046123	  7.27161343	  0.99770049	  0.99878622  0.49311424
+4111	 -6.27236643	 -0.00075237	  0.00046112	  7.27161406	  0.99770105	  0.99878651  0.49311425
+4112	 -6.27236687	 -0.00075219	  0.00046101	  7.27161468	  0.99770161	  0.99878681  0.49311423
+4113	 -6.27236731	 -0.00075200	  0.00046089	  7.27161531	  0.99770217	  0.99878710  0.49311442
+4114	 -6.27236776	 -0.00075182	  0.00046078	  7.27161594	  0.99770272	  0.99878740  0.49311431
+4115	 -6.27236820	 -0.00075164	  0.00046067	  7.27161656	  0.99770328	  0.99878769  0.49311449
+4116	 -6.27236864	 -0.00075146	  0.00046056	  7.27161719	  0.99770384	  0.99878798  0.49311451
+4117	 -6.27236909	 -0.00075127	  0.00046045	  7.27161781	  0.99770440	  0.99878828  0.49311462
+4118	 -6.27236953	 -0.00075109	  0.00046034	  7.27161844	  0.99770496	  0.99878857  0.49311465
+4119	 -6.27236997	 -0.00075091	  0.00046022	  7.27161906	  0.99770551	  0.99878887  0.49311479
+4120	 -6.27237041	 -0.00075073	  0.00046011	  7.27161968	  0.99770607	  0.99878916  0.49311488
+4121	 -6.27237085	 -0.00075055	  0.00046000	  7.27162031	  0.99770663	  0.99878945  0.49311489
+4122	 -6.27237130	 -0.00075036	  0.00045989	  7.27162093	  0.99770718	  0.99878975  0.49311496
+4123	 -6.27237174	 -0.00075018	  0.00045978	  7.27162155	  0.99770774	  0.99879004  0.49311494
+4124	 -6.27237218	 -0.00075000	  0.00045967	  7.27162218	  0.99770829	  0.99879033  0.49311510
+4125	 -6.27237262	 -0.00074982	  0.00045955	  7.27162280	  0.99770885	  0.99879063  0.49311504
+4126	 -6.27237306	 -0.00074964	  0.00045944	  7.27162342	  0.99770941	  0.99879092  0.49311523
+4127	 -6.27237350	 -0.00074946	  0.00045933	  7.27162404	  0.99770996	  0.99879121  0.49311526
+4128	 -6.27237394	 -0.00074927	  0.00045922	  7.27162466	  0.99771051	  0.99879151  0.49311531
+4129	 -6.27237438	 -0.00074909	  0.00045911	  7.27162529	  0.99771107	  0.99879180  0.49311549
+4130	 -6.27237482	 -0.00074891	  0.00045900	  7.27162591	  0.99771162	  0.99879209  0.49311546
+4131	 -6.27237526	 -0.00074873	  0.00045889	  7.27162653	  0.99771218	  0.99879238  0.49311554
+4132	 -6.27237570	 -0.00074855	  0.00045878	  7.27162715	  0.99771273	  0.99879268  0.49311557
+4133	 -6.27237614	 -0.00074837	  0.00045866	  7.27162777	  0.99771328	  0.99879297  0.49311573
+4134	 -6.27237657	 -0.00074819	  0.00045855	  7.27162839	  0.99771384	  0.99879326  0.49311571
+4135	 -6.27237701	 -0.00074801	  0.00045844	  7.27162901	  0.99771439	  0.99879355  0.49311580
+4136	 -6.27237745	 -0.00074783	  0.00045833	  7.27162962	  0.99771494	  0.99879384  0.49311585
+4137	 -6.27237789	 -0.00074765	  0.00045822	  7.27163024	  0.99771549	  0.99879413  0.49311592
+4138	 -6.27237833	 -0.00074747	  0.00045811	  7.27163086	  0.99771605	  0.99879442  0.49311607
+4139	 -6.27237876	 -0.00074728	  0.00045800	  7.27163148	  0.99771660	  0.99879472  0.49311608
+4140	 -6.27237920	 -0.00074710	  0.00045789	  7.27163210	  0.99771715	  0.99879501  0.49311612
+4141	 -6.27237964	 -0.00074692	  0.00045778	  7.27163271	  0.99771770	  0.99879530  0.49311622
+4142	 -6.27238007	 -0.00074674	  0.00045767	  7.27163333	  0.99771825	  0.99879559  0.49311623
+4143	 -6.27238051	 -0.00074656	  0.00045756	  7.27163395	  0.99771880	  0.99879588  0.49311629
+4144	 -6.27238095	 -0.00074638	  0.00045745	  7.27163456	  0.99771935	  0.99879617  0.49311629
+4145	 -6.27238138	 -0.00074620	  0.00045734	  7.27163518	  0.99771990	  0.99879646  0.49311644
+4146	 -6.27238182	 -0.00074602	  0.00045723	  7.27163580	  0.99772045	  0.99879675  0.49311641
+4147	 -6.27238225	 -0.00074584	  0.00045712	  7.27163641	  0.99772100	  0.99879704  0.49311653
+4148	 -6.27238269	 -0.00074566	  0.00045701	  7.27163703	  0.99772155	  0.99879733  0.49311671
+4149	 -6.27238312	 -0.00074548	  0.00045690	  7.27163764	  0.99772210	  0.99879762  0.49311673
+4150	 -6.27238356	 -0.00074531	  0.00045679	  7.27163825	  0.99772265	  0.99879791  0.49311683
+4151	 -6.27238399	 -0.00074513	  0.00045668	  7.27163887	  0.99772320	  0.99879820  0.49311676
+4152	 -6.27238443	 -0.00074495	  0.00045657	  7.27163948	  0.99772375	  0.99879849  0.49311684
+4153	 -6.27238486	 -0.00074477	  0.00045646	  7.27164010	  0.99772429	  0.99879878  0.49311690
+4154	 -6.27238530	 -0.00074459	  0.00045635	  7.27164071	  0.99772484	  0.99879907  0.49311703
+4155	 -6.27238573	 -0.00074441	  0.00045624	  7.27164132	  0.99772539	  0.99879936  0.49311710
+4156	 -6.27238616	 -0.00074423	  0.00045613	  7.27164193	  0.99772594	  0.99879964  0.49311708
+4157	 -6.27238660	 -0.00074405	  0.00045602	  7.27164255	  0.99772648	  0.99879993  0.49311725
+4158	 -6.27238703	 -0.00074387	  0.00045591	  7.27164316	  0.99772703	  0.99880022  0.49311732
+4159	 -6.27238746	 -0.00074369	  0.00045580	  7.27164377	  0.99772758	  0.99880051  0.49311738
+4160	 -6.27238790	 -0.00074352	  0.00045569	  7.27164438	  0.99772812	  0.99880080  0.49311739
+4161	 -6.27238833	 -0.00074334	  0.00045558	  7.27164499	  0.99772867	  0.99880109  0.49311746
+4162	 -6.27238876	 -0.00074316	  0.00045547	  7.27164560	  0.99772921	  0.99880137  0.49311752
+4163	 -6.27238919	 -0.00074298	  0.00045536	  7.27164621	  0.99772976	  0.99880166  0.49311758
+4164	 -6.27238962	 -0.00074280	  0.00045525	  7.27164682	  0.99773030	  0.99880195  0.49311766
+4165	 -6.27239006	 -0.00074262	  0.00045514	  7.27164743	  0.99773085	  0.99880224  0.49311772
+4166	 -6.27239049	 -0.00074245	  0.00045503	  7.27164804	  0.99773139	  0.99880252  0.49311777
+4167	 -6.27239092	 -0.00074227	  0.00045492	  7.27164865	  0.99773194	  0.99880281  0.49311785
+4168	 -6.27239135	 -0.00074209	  0.00045481	  7.27164926	  0.99773248	  0.99880310  0.49311791
+4169	 -6.27239178	 -0.00074191	  0.00045470	  7.27164987	  0.99773303	  0.99880339  0.49311797
+4170	 -6.27239221	 -0.00074173	  0.00045459	  7.27165048	  0.99773357	  0.99880367  0.49311806
+4171	 -6.27239264	 -0.00074156	  0.00045449	  7.27165108	  0.99773411	  0.99880396  0.49311809
+4172	 -6.27239307	 -0.00074138	  0.00045438	  7.27165169	  0.99773466	  0.99880425  0.49311816
+4173	 -6.27239350	 -0.00074120	  0.00045427	  7.27165230	  0.99773520	  0.99880453  0.49311824
+4174	 -6.27239393	 -0.00074102	  0.00045416	  7.27165291	  0.99773574	  0.99880482  0.49311829
+4175	 -6.27239436	 -0.00074085	  0.00045405	  7.27165351	  0.99773628	  0.99880510  0.49311835
+4176	 -6.27239479	 -0.00074067	  0.00045394	  7.27165412	  0.99773683	  0.99880539  0.49311839
+4177	 -6.27239522	 -0.00074049	  0.00045383	  7.27165472	  0.99773737	  0.99880568  0.49311849
+4178	 -6.27239564	 -0.00074031	  0.00045372	  7.27165533	  0.99773791	  0.99880596  0.49311853
+4179	 -6.27239607	 -0.00074014	  0.00045362	  7.27165593	  0.99773845	  0.99880625  0.49311862
+4180	 -6.27239650	 -0.00073996	  0.00045351	  7.27165654	  0.99773899	  0.99880653  0.49311867
+4181	 -6.27239693	 -0.00073978	  0.00045340	  7.27165714	  0.99773953	  0.99880682  0.49311873
+4182	 -6.27239736	 -0.00073961	  0.00045329	  7.27165775	  0.99774007	  0.99880710  0.49311878
+4183	 -6.27239778	 -0.00073943	  0.00045318	  7.27165835	  0.99774061	  0.99880739  0.49311885
+4184	 -6.27239821	 -0.00073925	  0.00045307	  7.27165896	  0.99774115	  0.99880767  0.49311891
+4185	 -6.27239864	 -0.00073908	  0.00045296	  7.27165956	  0.99774169	  0.99880796  0.49311897
+4186	 -6.27239906	 -0.00073890	  0.00045286	  7.27166016	  0.99774223	  0.99880824  0.49311905
+4187	 -6.27239949	 -0.00073872	  0.00045275	  7.27166077	  0.99774277	  0.99880853  0.49311912
+4188	 -6.27239992	 -0.00073855	  0.00045264	  7.27166137	  0.99774331	  0.99880881  0.49311918
+4189	 -6.27240034	 -0.00073837	  0.00045253	  7.27166197	  0.99774385	  0.99880910  0.49311924
+4190	 -6.27240077	 -0.00073820	  0.00045242	  7.27166257	  0.99774439	  0.99880938  0.49311929
+4191	 -6.27240119	 -0.00073802	  0.00045232	  7.27166317	  0.99774492	  0.99880966  0.49311935
+4192	 -6.27240162	 -0.00073784	  0.00045221	  7.27166378	  0.99774546	  0.99880995  0.49311941
+4193	 -6.27240205	 -0.00073767	  0.00045210	  7.27166438	  0.99774600	  0.99881023  0.49311949
+4194	 -6.27240247	 -0.00073749	  0.00045199	  7.27166498	  0.99774654	  0.99881051  0.49311956
+4195	 -6.27240289	 -0.00073732	  0.00045188	  7.27166558	  0.99774707	  0.99881080  0.49311961
+4196	 -6.27240332	 -0.00073714	  0.00045178	  7.27166618	  0.99774761	  0.99881108  0.49311968
+4197	 -6.27240374	 -0.00073697	  0.00045167	  7.27166678	  0.99774815	  0.99881136  0.49311975
+4198	 -6.27240417	 -0.00073679	  0.00045156	  7.27166738	  0.99774868	  0.99881165  0.49311980
+4199	 -6.27240459	 -0.00073662	  0.00045145	  7.27166798	  0.99774922	  0.99881193  0.49311987
+4200	 -6.27240502	 -0.00073644	  0.00045135	  7.27166858	  0.99774976	  0.99881221  0.49311992
+4201	 -6.27240544	 -0.00073626	  0.00045124	  7.27166917	  0.99775029	  0.99881250  0.49312000
+4202	 -6.27240586	 -0.00073609	  0.00045113	  7.27166977	  0.99775083	  0.99881278  0.49312006
+4203	 -6.27240628	 -0.00073591	  0.00045102	  7.27167037	  0.99775136	  0.99881306  0.49312011
+4204	 -6.27240671	 -0.00073574	  0.00045092	  7.27167097	  0.99775190	  0.99881334  0.49312017
+4205	 -6.27240713	 -0.00073556	  0.00045081	  7.27167157	  0.99775243	  0.99881362  0.49312022
+4206	 -6.27240755	 -0.00073539	  0.00045070	  7.27167216	  0.99775297	  0.99881391  0.49312031
+4207	 -6.27240797	 -0.00073522	  0.00045060	  7.27167276	  0.99775350	  0.99881419  0.49312033
+4208	 -6.27240840	 -0.00073504	  0.00045049	  7.27167336	  0.99775403	  0.99881447  0.49312043
+4209	 -6.27240882	 -0.00073487	  0.00045038	  7.27167395	  0.99775457	  0.99881475  0.49312049
+4210	 -6.27240924	 -0.00073469	  0.00045027	  7.27167455	  0.99775510	  0.99881503  0.49312054
+4211	 -6.27240966	 -0.00073452	  0.00045017	  7.27167514	  0.99775563	  0.99881531  0.49312061
+4212	 -6.27241008	 -0.00073434	  0.00045006	  7.27167574	  0.99775617	  0.99881560  0.49312068
+4213	 -6.27241050	 -0.00073417	  0.00044995	  7.27167633	  0.99775670	  0.99881588  0.49312074
+4214	 -6.27241092	 -0.00073400	  0.00044985	  7.27167693	  0.99775723	  0.99881616  0.49312080
+4215	 -6.27241134	 -0.00073382	  0.00044974	  7.27167752	  0.99775776	  0.99881644  0.49312087
+4216	 -6.27241176	 -0.00073365	  0.00044963	  7.27167812	  0.99775829	  0.99881672  0.49312093
+4217	 -6.27241218	 -0.00073347	  0.00044953	  7.27167871	  0.99775883	  0.99881700  0.49312099
+4218	 -6.27241260	 -0.00073330	  0.00044942	  7.27167930	  0.99775936	  0.99881728  0.49312106
+4219	 -6.27241302	 -0.00073313	  0.00044931	  7.27167990	  0.99775989	  0.99881756  0.49312110
+4220	 -6.27241344	 -0.00073295	  0.00044921	  7.27168049	  0.99776042	  0.99881784  0.49312117
+4221	 -6.27241386	 -0.00073278	  0.00044910	  7.27168108	  0.99776095	  0.99881812  0.49312124
+4222	 -6.27241428	 -0.00073261	  0.00044899	  7.27168167	  0.99776148	  0.99881840  0.49312129
+4223	 -6.27241470	 -0.00073243	  0.00044889	  7.27168227	  0.99776201	  0.99881868  0.49312137
+4224	 -6.27241512	 -0.00073226	  0.00044878	  7.27168286	  0.99776254	  0.99881896  0.49312141
+4225	 -6.27241554	 -0.00073209	  0.00044868	  7.27168345	  0.99776307	  0.99881924  0.49312147
+4226	 -6.27241595	 -0.00073191	  0.00044857	  7.27168404	  0.99776360	  0.99881952  0.49312156
+4227	 -6.27241637	 -0.00073174	  0.00044846	  7.27168463	  0.99776413	  0.99881980  0.49312161
+4228	 -6.27241679	 -0.00073157	  0.00044836	  7.27168522	  0.99776466	  0.99882008  0.49312166
+4229	 -6.27241721	 -0.00073139	  0.00044825	  7.27168581	  0.99776518	  0.99882035  0.49312172
+4230	 -6.27241762	 -0.00073122	  0.00044815	  7.27168640	  0.99776571	  0.99882063  0.49312178
+4231	 -6.27241804	 -0.00073105	  0.00044804	  7.27168699	  0.99776624	  0.99882091  0.49312185
+4232	 -6.27241846	 -0.00073088	  0.00044793	  7.27168758	  0.99776677	  0.99882119  0.49312193
+4233	 -6.27241887	 -0.00073070	  0.00044783	  7.27168817	  0.99776730	  0.99882147  0.49312197
+4234	 -6.27241929	 -0.00073053	  0.00044772	  7.27168876	  0.99776782	  0.99882175  0.49312203
+4235	 -6.27241971	 -0.00073036	  0.00044762	  7.27168935	  0.99776835	  0.99882202  0.49312211
+4236	 -6.27242012	 -0.00073019	  0.00044751	  7.27168994	  0.99776888	  0.99882230  0.49312215
+4237	 -6.27242054	 -0.00073001	  0.00044741	  7.27169052	  0.99776940	  0.99882258  0.49312222
+4238	 -6.27242095	 -0.00072984	  0.00044730	  7.27169111	  0.99776993	  0.99882286  0.49312230
+4239	 -6.27242137	 -0.00072967	  0.00044719	  7.27169170	  0.99777045	  0.99882314  0.49312233
+4240	 -6.27242178	 -0.00072950	  0.00044709	  7.27169229	  0.99777098	  0.99882341  0.49312241
+4241	 -6.27242220	 -0.00072933	  0.00044698	  7.27169287	  0.99777151	  0.99882369  0.49312246
+4242	 -6.27242261	 -0.00072915	  0.00044688	  7.27169346	  0.99777203	  0.99882397  0.49312253
+4243	 -6.27242303	 -0.00072898	  0.00044677	  7.27169405	  0.99777256	  0.99882424  0.49312260
+4244	 -6.27242344	 -0.00072881	  0.00044667	  7.27169463	  0.99777308	  0.99882452  0.49312265
+4245	 -6.27242386	 -0.00072864	  0.00044656	  7.27169522	  0.99777361	  0.99882480  0.49312272
+4246	 -6.27242427	 -0.00072847	  0.00044646	  7.27169580	  0.99777413	  0.99882508  0.49312276
+4247	 -6.27242468	 -0.00072830	  0.00044635	  7.27169639	  0.99777465	  0.99882535  0.49312285
+4248	 -6.27242510	 -0.00072813	  0.00044625	  7.27169697	  0.99777518	  0.99882563  0.49312291
+4249	 -6.27242551	 -0.00072795	  0.00044614	  7.27169756	  0.99777570	  0.99882590  0.49312295
+4250	 -6.27242592	 -0.00072778	  0.00044604	  7.27169814	  0.99777622	  0.99882618  0.49312303
+4251	 -6.27242634	 -0.00072761	  0.00044593	  7.27169872	  0.99777675	  0.99882646  0.49312307
+4252	 -6.27242675	 -0.00072744	  0.00044583	  7.27169931	  0.99777727	  0.99882673  0.49312312
+4253	 -6.27242716	 -0.00072727	  0.00044572	  7.27169989	  0.99777779	  0.99882701  0.49312319
+4254	 -6.27242757	 -0.00072710	  0.00044562	  7.27170047	  0.99777831	  0.99882728  0.49312326
+4255	 -6.27242798	 -0.00072693	  0.00044551	  7.27170106	  0.99777884	  0.99882756  0.49312335
+4256	 -6.27242840	 -0.00072676	  0.00044541	  7.27170164	  0.99777936	  0.99882783  0.49312338
+4257	 -6.27242881	 -0.00072659	  0.00044530	  7.27170222	  0.99777988	  0.99882811  0.49312345
+4258	 -6.27242922	 -0.00072642	  0.00044520	  7.27170280	  0.99778040	  0.99882838  0.49312349
+4259	 -6.27242963	 -0.00072625	  0.00044509	  7.27170338	  0.99778092	  0.99882866  0.49312358
+4260	 -6.27243004	 -0.00072608	  0.00044499	  7.27170397	  0.99778144	  0.99882893  0.49312364
+4261	 -6.27243045	 -0.00072591	  0.00044488	  7.27170455	  0.99778196	  0.99882921  0.49312368
+4262	 -6.27243086	 -0.00072574	  0.00044478	  7.27170513	  0.99778248	  0.99882948  0.49312376
+4263	 -6.27243127	 -0.00072557	  0.00044468	  7.27170571	  0.99778300	  0.99882976  0.49312381
+4264	 -6.27243168	 -0.00072540	  0.00044457	  7.27170629	  0.99778352	  0.99883003  0.49312388
+4265	 -6.27243209	 -0.00072523	  0.00044447	  7.27170687	  0.99778404	  0.99883031  0.49312394
+4266	 -6.27243250	 -0.00072506	  0.00044436	  7.27170745	  0.99778456	  0.99883058  0.49312397
+4267	 -6.27243291	 -0.00072489	  0.00044426	  7.27170803	  0.99778508	  0.99883086  0.49312405
+4268	 -6.27243332	 -0.00072472	  0.00044416	  7.27170860	  0.99778560	  0.99883113  0.49312410
+4269	 -6.27243373	 -0.00072455	  0.00044405	  7.27170918	  0.99778612	  0.99883140  0.49312419
+4270	 -6.27243414	 -0.00072438	  0.00044395	  7.27170976	  0.99778664	  0.99883168  0.49312424
+4271	 -6.27243455	 -0.00072421	  0.00044384	  7.27171034	  0.99778716	  0.99883195  0.49312429
+4272	 -6.27243496	 -0.00072404	  0.00044374	  7.27171092	  0.99778767	  0.99883222  0.49312436
+4273	 -6.27243536	 -0.00072387	  0.00044364	  7.27171150	  0.99778819	  0.99883250  0.49312441
+4274	 -6.27243577	 -0.00072370	  0.00044353	  7.27171207	  0.99778871	  0.99883277  0.49312447
+4275	 -6.27243618	 -0.00072353	  0.00044343	  7.27171265	  0.99778923	  0.99883304  0.49312454
+4276	 -6.27243659	 -0.00072336	  0.00044332	  7.27171323	  0.99778974	  0.99883331  0.49312460
+4277	 -6.27243700	 -0.00072319	  0.00044322	  7.27171380	  0.99779026	  0.99883359  0.49312464
+4278	 -6.27243740	 -0.00072302	  0.00044312	  7.27171438	  0.99779078	  0.99883386  0.49312471
+4279	 -6.27243781	 -0.00072285	  0.00044301	  7.27171495	  0.99779129	  0.99883413  0.49312476
+4280	 -6.27243822	 -0.00072269	  0.00044291	  7.27171553	  0.99779181	  0.99883440  0.49312483
+4281	 -6.27243862	 -0.00072252	  0.00044281	  7.27171611	  0.99779232	  0.99883468  0.49312489
+4282	 -6.27243903	 -0.00072235	  0.00044270	  7.27171668	  0.99779284	  0.99883495  0.49312495
+4283	 -6.27243944	 -0.00072218	  0.00044260	  7.27171726	  0.99779336	  0.99883522  0.49312500
+4284	 -6.27243984	 -0.00072201	  0.00044250	  7.27171783	  0.99779387	  0.99883549  0.49312508
+4285	 -6.27244025	 -0.00072184	  0.00044239	  7.27171840	  0.99779438	  0.99883576  0.49312514
+4286	 -6.27244065	 -0.00072167	  0.00044229	  7.27171898	  0.99779490	  0.99883604  0.49312518
+4287	 -6.27244106	 -0.00072151	  0.00044219	  7.27171955	  0.99779541	  0.99883631  0.49312525
+4288	 -6.27244146	 -0.00072134	  0.00044208	  7.27172012	  0.99779593	  0.99883658  0.49312531
+4289	 -6.27244187	 -0.00072117	  0.00044198	  7.27172070	  0.99779644	  0.99883685  0.49312537
+4290	 -6.27244227	 -0.00072100	  0.00044188	  7.27172127	  0.99779696	  0.99883712  0.49312544
+4291	 -6.27244268	 -0.00072083	  0.00044177	  7.27172184	  0.99779747	  0.99883739  0.49312550
+4292	 -6.27244308	 -0.00072067	  0.00044167	  7.27172242	  0.99779798	  0.99883766  0.49312555
+4293	 -6.27244349	 -0.00072050	  0.00044157	  7.27172299	  0.99779849	  0.99883793  0.49312563
+4294	 -6.27244389	 -0.00072033	  0.00044147	  7.27172356	  0.99779901	  0.99883820  0.49312567
+4295	 -6.27244429	 -0.00072016	  0.00044136	  7.27172413	  0.99779952	  0.99883847  0.49312573
+4296	 -6.27244470	 -0.00072000	  0.00044126	  7.27172470	  0.99780003	  0.99883874  0.49312578
+4297	 -6.27244510	 -0.00071983	  0.00044116	  7.27172527	  0.99780054	  0.99883901  0.49312585
+4298	 -6.27244550	 -0.00071966	  0.00044105	  7.27172584	  0.99780105	  0.99883928  0.49312592
+4299	 -6.27244591	 -0.00071949	  0.00044095	  7.27172641	  0.99780157	  0.99883955  0.49312598
+4300	 -6.27244631	 -0.00071933	  0.00044085	  7.27172698	  0.99780208	  0.99883982  0.49312604
+4301	 -6.27244671	 -0.00071916	  0.00044075	  7.27172755	  0.99780259	  0.99884009  0.49312608
+4302	 -6.27244712	 -0.00071899	  0.00044064	  7.27172812	  0.99780310	  0.99884036  0.49312614
+4303	 -6.27244752	 -0.00071883	  0.00044054	  7.27172869	  0.99780361	  0.99884063  0.49312622
+4304	 -6.27244792	 -0.00071866	  0.00044044	  7.27172926	  0.99780412	  0.99884090  0.49312626
+4305	 -6.27244832	 -0.00071849	  0.00044034	  7.27172983	  0.99780463	  0.99884117  0.49312632
+4306	 -6.27244872	 -0.00071833	  0.00044024	  7.27173040	  0.99780514	  0.99884144  0.49312638
+4307	 -6.27244912	 -0.00071816	  0.00044013	  7.27173097	  0.99780565	  0.99884171  0.49312645
+4308	 -6.27244953	 -0.00071799	  0.00044003	  7.27173153	  0.99780616	  0.99884198  0.49312649
+4309	 -6.27244993	 -0.00071783	  0.00043993	  7.27173210	  0.99780667	  0.99884225  0.49312657
+4310	 -6.27245033	 -0.00071766	  0.00043983	  7.27173267	  0.99780718	  0.99884251  0.49312664
+4311	 -6.27245073	 -0.00071749	  0.00043972	  7.27173323	  0.99780768	  0.99884278  0.49312669
+4312	 -6.27245113	 -0.00071733	  0.00043962	  7.27173380	  0.99780819	  0.99884305  0.49312674
+4313	 -6.27245153	 -0.00071716	  0.00043952	  7.27173437	  0.99780870	  0.99884332  0.49312680
+4314	 -6.27245193	 -0.00071699	  0.00043942	  7.27173493	  0.99780921	  0.99884359  0.49312685
+4315	 -6.27245233	 -0.00071683	  0.00043932	  7.27173550	  0.99780972	  0.99884385  0.49312691
+4316	 -6.27245273	 -0.00071666	  0.00043922	  7.27173607	  0.99781022	  0.99884412  0.49312701
+4317	 -6.27245313	 -0.00071650	  0.00043911	  7.27173663	  0.99781073	  0.99884439  0.49312703
+4318	 -6.27245353	 -0.00071633	  0.00043901	  7.27173720	  0.99781124	  0.99884466  0.49312710
+4319	 -6.27245393	 -0.00071617	  0.00043891	  7.27173776	  0.99781174	  0.99884492  0.49312716
+4320	 -6.27245432	 -0.00071600	  0.00043881	  7.27173833	  0.99781225	  0.99884519  0.49312722
+4321	 -6.27245472	 -0.00071583	  0.00043871	  7.27173889	  0.99781276	  0.99884546  0.49312728
+4322	 -6.27245512	 -0.00071567	  0.00043861	  7.27173945	  0.99781326	  0.99884573  0.49312736
+4323	 -6.27245552	 -0.00071550	  0.00043850	  7.27174002	  0.99781377	  0.99884599  0.49312741
+4324	 -6.27245592	 -0.00071534	  0.00043840	  7.27174058	  0.99781427	  0.99884626  0.49312745
+4325	 -6.27245632	 -0.00071517	  0.00043830	  7.27174114	  0.99781478	  0.99884653  0.49312752
+4326	 -6.27245671	 -0.00071501	  0.00043820	  7.27174171	  0.99781528	  0.99884679  0.49312756
+4327	 -6.27245711	 -0.00071484	  0.00043810	  7.27174227	  0.99781579	  0.99884706  0.49312763
+4328	 -6.27245751	 -0.00071468	  0.00043800	  7.27174283	  0.99781629	  0.99884733  0.49312770
+4329	 -6.27245791	 -0.00071451	  0.00043790	  7.27174339	  0.99781680	  0.99884759  0.49312773
+4330	 -6.27245830	 -0.00071435	  0.00043779	  7.27174396	  0.99781730	  0.99884786  0.49312781
+4331	 -6.27245870	 -0.00071418	  0.00043769	  7.27174452	  0.99781781	  0.99884812  0.49312788
+4332	 -6.27245910	 -0.00071402	  0.00043759	  7.27174508	  0.99781831	  0.99884839  0.49312794
+4333	 -6.27245949	 -0.00071385	  0.00043749	  7.27174564	  0.99781881	  0.99884866  0.49312798
+4334	 -6.27245989	 -0.00071369	  0.00043739	  7.27174620	  0.99781932	  0.99884892  0.49312802
+4335	 -6.27246028	 -0.00071352	  0.00043729	  7.27174676	  0.99781982	  0.99884919  0.49312810
+4336	 -6.27246068	 -0.00071336	  0.00043719	  7.27174732	  0.99782032	  0.99884945  0.49312816
+4337	 -6.27246108	 -0.00071320	  0.00043709	  7.27174788	  0.99782083	  0.99884972  0.49312820
+4338	 -6.27246147	 -0.00071303	  0.00043699	  7.27174844	  0.99782133	  0.99884998  0.49312828
+4339	 -6.27246187	 -0.00071287	  0.00043689	  7.27174900	  0.99782183	  0.99885025  0.49312834
+4340	 -6.27246226	 -0.00071270	  0.00043679	  7.27174956	  0.99782233	  0.99885051  0.49312839
+4341	 -6.27246266	 -0.00071254	  0.00043669	  7.27175012	  0.99782283	  0.99885078  0.49312847
+4342	 -6.27246305	 -0.00071237	  0.00043658	  7.27175068	  0.99782333	  0.99885104  0.49312849
+4343	 -6.27246345	 -0.00071221	  0.00043648	  7.27175123	  0.99782384	  0.99885131  0.49312857
+4344	 -6.27246384	 -0.00071205	  0.00043638	  7.27175179	  0.99782434	  0.99885157  0.49312862
+4345	 -6.27246423	 -0.00071188	  0.00043628	  7.27175235	  0.99782484	  0.99885183  0.49312870
+4346	 -6.27246463	 -0.00071172	  0.00043618	  7.27175291	  0.99782534	  0.99885210  0.49312875
+4347	 -6.27246502	 -0.00071156	  0.00043608	  7.27175347	  0.99782584	  0.99885236  0.49312878
+4348	 -6.27246541	 -0.00071139	  0.00043598	  7.27175402	  0.99782634	  0.99885263  0.49312886
+4349	 -6.27246581	 -0.00071123	  0.00043588	  7.27175458	  0.99782684	  0.99885289  0.49312892
+4350	 -6.27246620	 -0.00071107	  0.00043578	  7.27175514	  0.99782734	  0.99885315  0.49312899
+4351	 -6.27246659	 -0.00071090	  0.00043568	  7.27175569	  0.99782784	  0.99885342  0.49312906
+4352	 -6.27246699	 -0.00071074	  0.00043558	  7.27175625	  0.99782833	  0.99885368  0.49312908
+4353	 -6.27246738	 -0.00071058	  0.00043548	  7.27175680	  0.99782883	  0.99885394  0.49312914
+4354	 -6.27246777	 -0.00071041	  0.00043538	  7.27175736	  0.99782933	  0.99885421  0.49312922
+4355	 -6.27246816	 -0.00071025	  0.00043528	  7.27175791	  0.99782983	  0.99885447  0.49312926
+4356	 -6.27246856	 -0.00071009	  0.00043518	  7.27175847	  0.99783033	  0.99885473  0.49312934
+4357	 -6.27246895	 -0.00070992	  0.00043508	  7.27175902	  0.99783083	  0.99885499  0.49312938
+4358	 -6.27246934	 -0.00070976	  0.00043498	  7.27175958	  0.99783132	  0.99885526  0.49312944
+4359	 -6.27246973	 -0.00070960	  0.00043488	  7.27176013	  0.99783182	  0.99885552  0.49312948
+4360	 -6.27247012	 -0.00070944	  0.00043478	  7.27176069	  0.99783232	  0.99885578  0.49312957
+4361	 -6.27247051	 -0.00070927	  0.00043468	  7.27176124	  0.99783282	  0.99885604  0.49312962
+4362	 -6.27247090	 -0.00070911	  0.00043458	  7.27176179	  0.99783331	  0.99885631  0.49312968
+4363	 -6.27247129	 -0.00070895	  0.00043448	  7.27176235	  0.99783381	  0.99885657  0.49312972
+4364	 -6.27247168	 -0.00070879	  0.00043438	  7.27176290	  0.99783431	  0.99885683  0.49312980
+4365	 -6.27247207	 -0.00070862	  0.00043428	  7.27176345	  0.99783480	  0.99885709  0.49312985
+4366	 -6.27247246	 -0.00070846	  0.00043418	  7.27176400	  0.99783530	  0.99885735  0.49312992
+4367	 -6.27247285	 -0.00070830	  0.00043409	  7.27176456	  0.99783579	  0.99885762  0.49312999
+4368	 -6.27247324	 -0.00070814	  0.00043399	  7.27176511	  0.99783629	  0.99885788  0.49313003
+4369	 -6.27247363	 -0.00070798	  0.00043389	  7.27176566	  0.99783678	  0.99885814  0.49313009
+4370	 -6.27247402	 -0.00070781	  0.00043379	  7.27176621	  0.99783728	  0.99885840  0.49313014
+4371	 -6.27247441	 -0.00070765	  0.00043369	  7.27176676	  0.99783777	  0.99885866  0.49313021
+4372	 -6.27247480	 -0.00070749	  0.00043359	  7.27176731	  0.99783827	  0.99885892  0.49313025
+4373	 -6.27247519	 -0.00070733	  0.00043349	  7.27176786	  0.99783876	  0.99885918  0.49313031
+4374	 -6.27247558	 -0.00070717	  0.00043339	  7.27176841	  0.99783926	  0.99885944  0.49313036
+4375	 -6.27247597	 -0.00070701	  0.00043329	  7.27176896	  0.99783975	  0.99885970  0.49313043
+4376	 -6.27247636	 -0.00070684	  0.00043319	  7.27176951	  0.99784024	  0.99885996  0.49313047
+4377	 -6.27247674	 -0.00070668	  0.00043309	  7.27177006	  0.99784074	  0.99886022  0.49313056
+4378	 -6.27247713	 -0.00070652	  0.00043299	  7.27177061	  0.99784123	  0.99886048  0.49313062
+4379	 -6.27247752	 -0.00070636	  0.00043290	  7.27177116	  0.99784172	  0.99886074  0.49313067
+4380	 -6.27247791	 -0.00070620	  0.00043280	  7.27177171	  0.99784222	  0.99886100  0.49313072
+4381	 -6.27247829	 -0.00070604	  0.00043270	  7.27177226	  0.99784271	  0.99886126  0.49313077
+4382	 -6.27247868	 -0.00070588	  0.00043260	  7.27177280	  0.99784320	  0.99886152  0.49313084
+4383	 -6.27247907	 -0.00070572	  0.00043250	  7.27177335	  0.99784369	  0.99886178  0.49313089
+4384	 -6.27247945	 -0.00070556	  0.00043240	  7.27177390	  0.99784418	  0.99886204  0.49313094
+4385	 -6.27247984	 -0.00070539	  0.00043230	  7.27177445	  0.99784468	  0.99886230  0.49313101
+4386	 -6.27248023	 -0.00070523	  0.00043220	  7.27177499	  0.99784517	  0.99886256  0.49313105
+4387	 -6.27248061	 -0.00070507	  0.00043211	  7.27177554	  0.99784566	  0.99886282  0.49313111
+4388	 -6.27248100	 -0.00070491	  0.00043201	  7.27177609	  0.99784615	  0.99886308  0.49313117
+4389	 -6.27248139	 -0.00070475	  0.00043191	  7.27177663	  0.99784664	  0.99886334  0.49313123
+4390	 -6.27248177	 -0.00070459	  0.00043181	  7.27177718	  0.99784713	  0.99886360  0.49313129
+4391	 -6.27248216	 -0.00070443	  0.00043171	  7.27177773	  0.99784762	  0.99886386  0.49313133
+4392	 -6.27248254	 -0.00070427	  0.00043161	  7.27177827	  0.99784811	  0.99886411  0.49313142
+4393	 -6.27248293	 -0.00070411	  0.00043152	  7.27177882	  0.99784860	  0.99886437  0.49313147
+4394	 -6.27248331	 -0.00070395	  0.00043142	  7.27177936	  0.99784909	  0.99886463  0.49313152
+4395	 -6.27248370	 -0.00070379	  0.00043132	  7.27177991	  0.99784958	  0.99886489  0.49313157
+4396	 -6.27248408	 -0.00070363	  0.00043122	  7.27178045	  0.99785007	  0.99886515  0.49313161
+4397	 -6.27248447	 -0.00070347	  0.00043112	  7.27178099	  0.99785056	  0.99886541  0.49313168
+4398	 -6.27248485	 -0.00070331	  0.00043103	  7.27178154	  0.99785104	  0.99886566  0.49313174
+4399	 -6.27248523	 -0.00070315	  0.00043093	  7.27178208	  0.99785153	  0.99886592  0.49313183
+4400	 -6.27248562	 -0.00070299	  0.00043083	  7.27178263	  0.99785202	  0.99886618  0.49313186
+4401	 -6.27248600	 -0.00070283	  0.00043073	  7.27178317	  0.99785251	  0.99886644  0.49313191
+4402	 -6.27248638	 -0.00070267	  0.00043063	  7.27178371	  0.99785300	  0.99886669  0.49313198
+4403	 -6.27248677	 -0.00070251	  0.00043054	  7.27178425	  0.99785348	  0.99886695  0.49313204
+4404	 -6.27248715	 -0.00070235	  0.00043044	  7.27178480	  0.99785397	  0.99886721  0.49313208
+4405	 -6.27248753	 -0.00070219	  0.00043034	  7.27178534	  0.99785446	  0.99886747  0.49313214
+4406	 -6.27248792	 -0.00070203	  0.00043024	  7.27178588	  0.99785495	  0.99886772  0.49313220
+4407	 -6.27248830	 -0.00070188	  0.00043014	  7.27178642	  0.99785543	  0.99886798  0.49313224
+4408	 -6.27248868	 -0.00070172	  0.00043005	  7.27178696	  0.99785592	  0.99886824  0.49313233
+4409	 -6.27248906	 -0.00070156	  0.00042995	  7.27178751	  0.99785641	  0.99886849  0.49313235
+4410	 -6.27248945	 -0.00070140	  0.00042985	  7.27178805	  0.99785689	  0.99886875  0.49313243
+4411	 -6.27248983	 -0.00070124	  0.00042975	  7.27178859	  0.99785738	  0.99886901  0.49313250
+4412	 -6.27249021	 -0.00070108	  0.00042966	  7.27178913	  0.99785786	  0.99886926  0.49313254
+4413	 -6.27249059	 -0.00070092	  0.00042956	  7.27178967	  0.99785835	  0.99886952  0.49313259
+4414	 -6.27249097	 -0.00070076	  0.00042946	  7.27179021	  0.99785883	  0.99886977  0.49313265
+4415	 -6.27249135	 -0.00070060	  0.00042937	  7.27179075	  0.99785932	  0.99887003  0.49313270
+4416	 -6.27249173	 -0.00070045	  0.00042927	  7.27179129	  0.99785980	  0.99887029  0.49313277
+4417	 -6.27249211	 -0.00070029	  0.00042917	  7.27179183	  0.99786029	  0.99887054  0.49313282
+4418	 -6.27249250	 -0.00070013	  0.00042907	  7.27179237	  0.99786077	  0.99887080  0.49313289
+4419	 -6.27249288	 -0.00069997	  0.00042898	  7.27179290	  0.99786126	  0.99887105  0.49313291
+4420	 -6.27249326	 -0.00069981	  0.00042888	  7.27179344	  0.99786174	  0.99887131  0.49313301
+4421	 -6.27249364	 -0.00069965	  0.00042878	  7.27179398	  0.99786222	  0.99887156  0.49313305
+4422	 -6.27249402	 -0.00069950	  0.00042869	  7.27179452	  0.99786271	  0.99887182  0.49313311
+4423	 -6.27249440	 -0.00069934	  0.00042859	  7.27179506	  0.99786319	  0.99887207  0.49313316
+4424	 -6.27249477	 -0.00069918	  0.00042849	  7.27179559	  0.99786367	  0.99887233  0.49313322
+4425	 -6.27249515	 -0.00069902	  0.00042840	  7.27179613	  0.99786415	  0.99887258  0.49313329
+4426	 -6.27249553	 -0.00069887	  0.00042830	  7.27179667	  0.99786464	  0.99887284  0.49313333
+4427	 -6.27249591	 -0.00069871	  0.00042820	  7.27179720	  0.99786512	  0.99887309  0.49313340
+4428	 -6.27249629	 -0.00069855	  0.00042810	  7.27179774	  0.99786560	  0.99887335  0.49313343
+4429	 -6.27249667	 -0.00069839	  0.00042801	  7.27179828	  0.99786608	  0.99887360  0.49313349
+4430	 -6.27249705	 -0.00069823	  0.00042791	  7.27179881	  0.99786656	  0.99887385  0.49313355
+4431	 -6.27249743	 -0.00069808	  0.00042781	  7.27179935	  0.99786705	  0.99887411  0.49313361
+4432	 -6.27249780	 -0.00069792	  0.00042772	  7.27179988	  0.99786753	  0.99887436  0.49313365
+4433	 -6.27249818	 -0.00069776	  0.00042762	  7.27180042	  0.99786801	  0.99887462  0.49313373
+4434	 -6.27249856	 -0.00069761	  0.00042753	  7.27180095	  0.99786849	  0.99887487  0.49313378
+4435	 -6.27249894	 -0.00069745	  0.00042743	  7.27180149	  0.99786897	  0.99887512  0.49313382
+4436	 -6.27249931	 -0.00069729	  0.00042733	  7.27180202	  0.99786945	  0.99887538  0.49313387
+4437	 -6.27249969	 -0.00069713	  0.00042724	  7.27180256	  0.99786993	  0.99887563  0.49313395
+4438	 -6.27250007	 -0.00069698	  0.00042714	  7.27180309	  0.99787041	  0.99887588  0.49313401
+4439	 -6.27250045	 -0.00069682	  0.00042704	  7.27180363	  0.99787089	  0.99887614  0.49313405
+4440	 -6.27250082	 -0.00069666	  0.00042695	  7.27180416	  0.99787137	  0.99887639  0.49313411
+4441	 -6.27250120	 -0.00069651	  0.00042685	  7.27180469	  0.99787185	  0.99887664  0.49313417
+4442	 -6.27250158	 -0.00069635	  0.00042676	  7.27180523	  0.99787233	  0.99887689  0.49313425
+4443	 -6.27250195	 -0.00069619	  0.00042666	  7.27180576	  0.99787281	  0.99887715  0.49313428
+4444	 -6.27250233	 -0.00069604	  0.00042656	  7.27180629	  0.99787328	  0.99887740  0.49313433
+4445	 -6.27250270	 -0.00069588	  0.00042647	  7.27180682	  0.99787376	  0.99887765  0.49313436
+4446	 -6.27250308	 -0.00069572	  0.00042637	  7.27180736	  0.99787424	  0.99887790  0.49313447
+4447	 -6.27250345	 -0.00069557	  0.00042628	  7.27180789	  0.99787472	  0.99887816  0.49313453
+4448	 -6.27250383	 -0.00069541	  0.00042618	  7.27180842	  0.99787520	  0.99887841  0.49313456
+4449	 -6.27250420	 -0.00069525	  0.00042608	  7.27180895	  0.99787567	  0.99887866  0.49313463
+4450	 -6.27250458	 -0.00069510	  0.00042599	  7.27180948	  0.99787615	  0.99887891  0.49313466
+4451	 -6.27250495	 -0.00069494	  0.00042589	  7.27181001	  0.99787663	  0.99887916  0.49313471
+4452	 -6.27250533	 -0.00069479	  0.00042580	  7.27181054	  0.99787711	  0.99887942  0.49313478
+4453	 -6.27250570	 -0.00069463	  0.00042570	  7.27181107	  0.99787758	  0.99887967  0.49313484
+4454	 -6.27250608	 -0.00069447	  0.00042561	  7.27181160	  0.99787806	  0.99887992  0.49313489
+4455	 -6.27250645	 -0.00069432	  0.00042551	  7.27181213	  0.99787854	  0.99888017  0.49313499
+4456	 -6.27250683	 -0.00069416	  0.00042541	  7.27181266	  0.99787901	  0.99888042  0.49313500
+4457	 -6.27250720	 -0.00069401	  0.00042532	  7.27181319	  0.99787949	  0.99888067  0.49313506
+4458	 -6.27250757	 -0.00069385	  0.00042522	  7.27181372	  0.99787996	  0.99888092  0.49313510
+4459	 -6.27250795	 -0.00069370	  0.00042513	  7.27181425	  0.99788044	  0.99888117  0.49313518
+4460	 -6.27250832	 -0.00069354	  0.00042503	  7.27181478	  0.99788091	  0.99888143  0.49313523
+4461	 -6.27250869	 -0.00069339	  0.00042494	  7.27181531	  0.99788139	  0.99888168  0.49313528
+4462	 -6.27250906	 -0.00069323	  0.00042484	  7.27181583	  0.99788186	  0.99888193  0.49313532
+4463	 -6.27250944	 -0.00069308	  0.00042475	  7.27181636	  0.99788234	  0.99888218  0.49313537
+4464	 -6.27250981	 -0.00069292	  0.00042465	  7.27181689	  0.99788281	  0.99888243  0.49313545
+4465	 -6.27251018	 -0.00069277	  0.00042456	  7.27181742	  0.99788329	  0.99888268  0.49313551
+4466	 -6.27251055	 -0.00069261	  0.00042446	  7.27181794	  0.99788376	  0.99888293  0.49313557
+4467	 -6.27251093	 -0.00069246	  0.00042437	  7.27181847	  0.99788423	  0.99888318  0.49313560
+4468	 -6.27251130	 -0.00069230	  0.00042427	  7.27181900	  0.99788471	  0.99888343  0.49313566
+4469	 -6.27251167	 -0.00069215	  0.00042418	  7.27181952	  0.99788518	  0.99888368  0.49313574
+4470	 -6.27251204	 -0.00069199	  0.00042408	  7.27182005	  0.99788565	  0.99888393  0.49313579
+4471	 -6.27251241	 -0.00069184	  0.00042399	  7.27182058	  0.99788613	  0.99888418  0.49313583
+4472	 -6.27251278	 -0.00069168	  0.00042389	  7.27182110	  0.99788660	  0.99888443  0.49313587
+4473	 -6.27251315	 -0.00069153	  0.00042380	  7.27182163	  0.99788707	  0.99888468  0.49313593
+4474	 -6.27251353	 -0.00069137	  0.00042370	  7.27182215	  0.99788754	  0.99888492  0.49313600
+4475	 -6.27251390	 -0.00069122	  0.00042361	  7.27182268	  0.99788801	  0.99888517  0.49313604
+4476	 -6.27251427	 -0.00069106	  0.00042351	  7.27182320	  0.99788849	  0.99888542  0.49313613
+4477	 -6.27251464	 -0.00069091	  0.00042342	  7.27182373	  0.99788896	  0.99888567  0.49313616
+4478	 -6.27251501	 -0.00069076	  0.00042332	  7.27182425	  0.99788943	  0.99888592  0.49313621
+4479	 -6.27251538	 -0.00069060	  0.00042323	  7.27182478	  0.99788990	  0.99888617  0.49313628
+4480	 -6.27251575	 -0.00069045	  0.00042314	  7.27182530	  0.99789037	  0.99888642  0.49313634
+4481	 -6.27251612	 -0.00069029	  0.00042304	  7.27182582	  0.99789084	  0.99888667  0.49313637
+4482	 -6.27251649	 -0.00069014	  0.00042295	  7.27182635	  0.99789131	  0.99888691  0.49313644
+4483	 -6.27251685	 -0.00068999	  0.00042285	  7.27182687	  0.99789178	  0.99888716  0.49313651
+4484	 -6.27251722	 -0.00068983	  0.00042276	  7.27182739	  0.99789225	  0.99888741  0.49313656
+4485	 -6.27251759	 -0.00068968	  0.00042266	  7.27182791	  0.99789272	  0.99888766  0.49313664
+4486	 -6.27251796	 -0.00068952	  0.00042257	  7.27182844	  0.99789319	  0.99888791  0.49313666
+4487	 -6.27251833	 -0.00068937	  0.00042248	  7.27182896	  0.99789366	  0.99888815  0.49313670
+4488	 -6.27251870	 -0.00068922	  0.00042238	  7.27182948	  0.99789413	  0.99888840  0.49313677
+4489	 -6.27251907	 -0.00068906	  0.00042229	  7.27183000	  0.99789460	  0.99888865  0.49313683
+4490	 -6.27251943	 -0.00068891	  0.00042219	  7.27183052	  0.99789507	  0.99888890  0.49313687
+4491	 -6.27251980	 -0.00068876	  0.00042210	  7.27183104	  0.99789554	  0.99888914  0.49313691
+4492	 -6.27252017	 -0.00068860	  0.00042200	  7.27183157	  0.99789601	  0.99888939  0.49313700
+4493	 -6.27252054	 -0.00068845	  0.00042191	  7.27183209	  0.99789647	  0.99888964  0.49313706
+4494	 -6.27252091	 -0.00068830	  0.00042182	  7.27183261	  0.99789694	  0.99888988  0.49313707
+4495	 -6.27252127	 -0.00068815	  0.00042172	  7.27183313	  0.99789741	  0.99889013  0.49313711
+4496	 -6.27252164	 -0.00068799	  0.00042163	  7.27183365	  0.99789788	  0.99889038  0.49313720
+4497	 -6.27252201	 -0.00068784	  0.00042154	  7.27183417	  0.99789835	  0.99889062  0.49313727
+4498	 -6.27252237	 -0.00068769	  0.00042144	  7.27183469	  0.99789881	  0.99889087  0.49313733
+4499	 -6.27252274	 -0.00068753	  0.00042135	  7.27183521	  0.99789928	  0.99889112  0.49313737
+4500	 -6.27252311	 -0.00068738	  0.00042125	  7.27183572	  0.99789975	  0.99889136  0.49313744
+4501	 -6.27252347	 -0.00068723	  0.00042116	  7.27183624	  0.99790021	  0.99889161  0.49313749
+4502	 -6.27252384	 -0.00068708	  0.00042107	  7.27183676	  0.99790068	  0.99889186  0.49313754
+4503	 -6.27252420	 -0.00068692	  0.00042097	  7.27183728	  0.99790115	  0.99889210  0.49313760
+4504	 -6.27252457	 -0.00068677	  0.00042088	  7.27183780	  0.99790161	  0.99889235  0.49313767
+4505	 -6.27252494	 -0.00068662	  0.00042079	  7.27183832	  0.99790208	  0.99889259  0.49313771
+4506	 -6.27252530	 -0.00068647	  0.00042069	  7.27183883	  0.99790254	  0.99889284  0.49313775
+4507	 -6.27252567	 -0.00068631	  0.00042060	  7.27183935	  0.99790301	  0.99889309  0.49313782
+4508	 -6.27252603	 -0.00068616	  0.00042051	  7.27183987	  0.99790347	  0.99889333  0.49313786
+4509	 -6.27252640	 -0.00068601	  0.00042041	  7.27184039	  0.99790394	  0.99889358  0.49313791
+4510	 -6.27252676	 -0.00068586	  0.00042032	  7.27184090	  0.99790440	  0.99889382  0.49313797
+4511	 -6.27252712	 -0.00068571	  0.00042023	  7.27184142	  0.99790487	  0.99889407  0.49313801
+4512	 -6.27252749	 -0.00068555	  0.00042013	  7.27184193	  0.99790533	  0.99889431  0.49313810
+4513	 -6.27252785	 -0.00068540	  0.00042004	  7.27184245	  0.99790579	  0.99889456  0.49313815
+4514	 -6.27252822	 -0.00068525	  0.00041995	  7.27184297	  0.99790626	  0.99889480  0.49313818
+4515	 -6.27252858	 -0.00068510	  0.00041985	  7.27184348	  0.99790672	  0.99889505  0.49313824
+4516	 -6.27252895	 -0.00068495	  0.00041976	  7.27184400	  0.99790719	  0.99889529  0.49313828
+4517	 -6.27252931	 -0.00068480	  0.00041967	  7.27184451	  0.99790765	  0.99889553  0.49313835
+4518	 -6.27252967	 -0.00068464	  0.00041958	  7.27184503	  0.99790811	  0.99889578  0.49313842
+4519	 -6.27253004	 -0.00068449	  0.00041948	  7.27184554	  0.99790857	  0.99889602  0.49313845
+4520	 -6.27253040	 -0.00068434	  0.00041939	  7.27184606	  0.99790904	  0.99889627  0.49313853
+4521	 -6.27253076	 -0.00068419	  0.00041930	  7.27184657	  0.99790950	  0.99889651  0.49313854
+4522	 -6.27253112	 -0.00068404	  0.00041920	  7.27184708	  0.99790996	  0.99889676  0.49313861
+4523	 -6.27253149	 -0.00068389	  0.00041911	  7.27184760	  0.99791042	  0.99889700  0.49313867
+4524	 -6.27253185	 -0.00068374	  0.00041902	  7.27184811	  0.99791089	  0.99889724  0.49313874
+4525	 -6.27253221	 -0.00068359	  0.00041893	  7.27184862	  0.99791135	  0.99889749  0.49313876
+4526	 -6.27253257	 -0.00068344	  0.00041883	  7.27184914	  0.99791181	  0.99889773  0.49313881
+4527	 -6.27253293	 -0.00068328	  0.00041874	  7.27184965	  0.99791227	  0.99889797  0.49313886
+4528	 -6.27253330	 -0.00068313	  0.00041865	  7.27185016	  0.99791273	  0.99889822  0.49313893
+4529	 -6.27253366	 -0.00068298	  0.00041856	  7.27185068	  0.99791319	  0.99889846  0.49313897
+4530	 -6.27253402	 -0.00068283	  0.00041846	  7.27185119	  0.99791365	  0.99889870  0.49313904
+4531	 -6.27253438	 -0.00068268	  0.00041837	  7.27185170	  0.99791411	  0.99889895  0.49313909
+4532	 -6.27253474	 -0.00068253	  0.00041828	  7.27185221	  0.99791457	  0.99889919  0.49313915
+4533	 -6.27253510	 -0.00068238	  0.00041819	  7.27185272	  0.99791503	  0.99889943  0.49313920
+4534	 -6.27253546	 -0.00068223	  0.00041810	  7.27185323	  0.99791549	  0.99889967  0.49313924
+4535	 -6.27253582	 -0.00068208	  0.00041800	  7.27185374	  0.99791595	  0.99889992  0.49313932
+4536	 -6.27253618	 -0.00068193	  0.00041791	  7.27185425	  0.99791641	  0.99890016  0.49313937
+4537	 -6.27253654	 -0.00068178	  0.00041782	  7.27185477	  0.99791687	  0.99890040  0.49313944
+4538	 -6.27253690	 -0.00068163	  0.00041773	  7.27185528	  0.99791733	  0.99890064  0.49313947
+4539	 -6.27253726	 -0.00068148	  0.00041763	  7.27185579	  0.99791779	  0.99890089  0.49313953
+4540	 -6.27253762	 -0.00068133	  0.00041754	  7.27185630	  0.99791825	  0.99890113  0.49313960
+4541	 -6.27253798	 -0.00068118	  0.00041745	  7.27185680	  0.99791871	  0.99890137  0.49313964
+4542	 -6.27253834	 -0.00068103	  0.00041736	  7.27185731	  0.99791916	  0.99890161  0.49313969
+4543	 -6.27253870	 -0.00068088	  0.00041727	  7.27185782	  0.99791962	  0.99890185  0.49313973
+4544	 -6.27253906	 -0.00068073	  0.00041718	  7.27185833	  0.99792008	  0.99890209  0.49313978
+4545	 -6.27253942	 -0.00068058	  0.00041708	  7.27185884	  0.99792054	  0.99890234  0.49313983
+4546	 -6.27253978	 -0.00068043	  0.00041699	  7.27185935	  0.99792099	  0.99890258  0.49313991
+4547	 -6.27254014	 -0.00068028	  0.00041690	  7.27185986	  0.99792145	  0.99890282  0.49313998
+4548	 -6.27254050	 -0.00068013	  0.00041681	  7.27186036	  0.99792191	  0.99890306  0.49314002
+4549	 -6.27254086	 -0.00067998	  0.00041672	  7.27186087	  0.99792237	  0.99890330  0.49314008
+4550	 -6.27254121	 -0.00067983	  0.00041662	  7.27186138	  0.99792282	  0.99890354  0.49314012
+4551	 -6.27254157	 -0.00067968	  0.00041653	  7.27186189	  0.99792328	  0.99890378  0.49314018
+4552	 -6.27254193	 -0.00067953	  0.00041644	  7.27186239	  0.99792373	  0.99890402  0.49314019
+4553	 -6.27254229	 -0.00067939	  0.00041635	  7.27186290	  0.99792419	  0.99890426  0.49314025
+4554	 -6.27254264	 -0.00067924	  0.00041626	  7.27186341	  0.99792465	  0.99890450  0.49314034
+4555	 -6.27254300	 -0.00067909	  0.00041617	  7.27186391	  0.99792510	  0.99890474  0.49314040
+4556	 -6.27254336	 -0.00067894	  0.00041608	  7.27186442	  0.99792556	  0.99890499  0.49314044
+4557	 -6.27254372	 -0.00067879	  0.00041598	  7.27186493	  0.99792601	  0.99890523  0.49314049
+4558	 -6.27254407	 -0.00067864	  0.00041589	  7.27186543	  0.99792647	  0.99890547  0.49314054
+4559	 -6.27254443	 -0.00067849	  0.00041580	  7.27186594	  0.99792692	  0.99890571  0.49314058
+4560	 -6.27254479	 -0.00067834	  0.00041571	  7.27186644	  0.99792738	  0.99890595  0.49314062
+4561	 -6.27254514	 -0.00067819	  0.00041562	  7.27186695	  0.99792783	  0.99890618  0.49314070
+4562	 -6.27254550	 -0.00067805	  0.00041553	  7.27186745	  0.99792828	  0.99890642  0.49314075
+4563	 -6.27254585	 -0.00067790	  0.00041544	  7.27186796	  0.99792874	  0.99890666  0.49314079
+4564	 -6.27254621	 -0.00067775	  0.00041535	  7.27186846	  0.99792919	  0.99890690  0.49314085
+4565	 -6.27254657	 -0.00067760	  0.00041526	  7.27186897	  0.99792965	  0.99890714  0.49314090
+4566	 -6.27254692	 -0.00067745	  0.00041516	  7.27186947	  0.99793010	  0.99890738  0.49314094
+4567	 -6.27254728	 -0.00067730	  0.00041507	  7.27186997	  0.99793055	  0.99890762  0.49314100
+4568	 -6.27254763	 -0.00067716	  0.00041498	  7.27187048	  0.99793101	  0.99890786  0.49314106
+4569	 -6.27254799	 -0.00067701	  0.00041489	  7.27187098	  0.99793146	  0.99890810  0.49314111
+4570	 -6.27254834	 -0.00067686	  0.00041480	  7.27187148	  0.99793191	  0.99890834  0.49314118
+4571	 -6.27254870	 -0.00067671	  0.00041471	  7.27187199	  0.99793236	  0.99890858  0.49314123
+4572	 -6.27254905	 -0.00067656	  0.00041462	  7.27187249	  0.99793282	  0.99890882  0.49314127
+4573	 -6.27254941	 -0.00067642	  0.00041453	  7.27187299	  0.99793327	  0.99890905  0.49314132
+4574	 -6.27254976	 -0.00067627	  0.00041444	  7.27187349	  0.99793372	  0.99890929  0.49314138
+4575	 -6.27255012	 -0.00067612	  0.00041435	  7.27187399	  0.99793417	  0.99890953  0.49314144
+4576	 -6.27255047	 -0.00067597	  0.00041426	  7.27187450	  0.99793462	  0.99890977  0.49314149
+4577	 -6.27255082	 -0.00067583	  0.00041417	  7.27187500	  0.99793507	  0.99891001  0.49314155
+4578	 -6.27255118	 -0.00067568	  0.00041408	  7.27187550	  0.99793552	  0.99891025  0.49314159
+4579	 -6.27255153	 -0.00067553	  0.00041399	  7.27187600	  0.99793597	  0.99891048  0.49314164
+4580	 -6.27255188	 -0.00067538	  0.00041390	  7.27187650	  0.99793643	  0.99891072  0.49314169
+4581	 -6.27255224	 -0.00067524	  0.00041381	  7.27187700	  0.99793688	  0.99891096  0.49314176
+4582	 -6.27255259	 -0.00067509	  0.00041372	  7.27187750	  0.99793733	  0.99891120  0.49314181
+4583	 -6.27255294	 -0.00067494	  0.00041362	  7.27187800	  0.99793778	  0.99891143  0.49314185
+4584	 -6.27255330	 -0.00067479	  0.00041353	  7.27187850	  0.99793823	  0.99891167  0.49314190
+4585	 -6.27255365	 -0.00067465	  0.00041344	  7.27187900	  0.99793868	  0.99891191  0.49314197
+4586	 -6.27255400	 -0.00067450	  0.00041335	  7.27187950	  0.99793912	  0.99891215  0.49314200
+4587	 -6.27255435	 -0.00067435	  0.00041326	  7.27188000	  0.99793957	  0.99891238  0.49314208
+4588	 -6.27255470	 -0.00067421	  0.00041317	  7.27188050	  0.99794002	  0.99891262  0.49314213
+4589	 -6.27255506	 -0.00067406	  0.00041308	  7.27188100	  0.99794047	  0.99891286  0.49314217
+4590	 -6.27255541	 -0.00067391	  0.00041299	  7.27188150	  0.99794092	  0.99891309  0.49314220
+4591	 -6.27255576	 -0.00067377	  0.00041290	  7.27188199	  0.99794137	  0.99891333  0.49314225
+4592	 -6.27255611	 -0.00067362	  0.00041281	  7.27188249	  0.99794182	  0.99891357  0.49314232
+4593	 -6.27255646	 -0.00067347	  0.00041272	  7.27188299	  0.99794227	  0.99891380  0.49314238
+4594	 -6.27255681	 -0.00067333	  0.00041263	  7.27188349	  0.99794271	  0.99891404  0.49314241
+4595	 -6.27255717	 -0.00067318	  0.00041254	  7.27188398	  0.99794316	  0.99891428  0.49314247
+4596	 -6.27255752	 -0.00067303	  0.00041245	  7.27188448	  0.99794361	  0.99891451  0.49314253
+4597	 -6.27255787	 -0.00067289	  0.00041236	  7.27188498	  0.99794406	  0.99891475  0.49314258
+4598	 -6.27255822	 -0.00067274	  0.00041228	  7.27188548	  0.99794450	  0.99891498  0.49314263
+4599	 -6.27255857	 -0.00067260	  0.00041219	  7.27188597	  0.99794495	  0.99891522  0.49314268
+4600	 -6.27255892	 -0.00067245	  0.00041210	  7.27188647	  0.99794540	  0.99891545  0.49314274
+4601	 -6.27255927	 -0.00067230	  0.00041201	  7.27188696	  0.99794584	  0.99891569  0.49314280
+4602	 -6.27255962	 -0.00067216	  0.00041192	  7.27188746	  0.99794629	  0.99891593  0.49314284
+4603	 -6.27255997	 -0.00067201	  0.00041183	  7.27188796	  0.99794673	  0.99891616  0.49314287
+4604	 -6.27256032	 -0.00067187	  0.00041174	  7.27188845	  0.99794718	  0.99891640  0.49314297
+4605	 -6.27256067	 -0.00067172	  0.00041165	  7.27188895	  0.99794763	  0.99891663  0.49314303
+4606	 -6.27256102	 -0.00067157	  0.00041156	  7.27188944	  0.99794807	  0.99891687  0.49314307
+4607	 -6.27256137	 -0.00067143	  0.00041147	  7.27188994	  0.99794852	  0.99891710  0.49314312
+4608	 -6.27256171	 -0.00067128	  0.00041138	  7.27189043	  0.99794896	  0.99891734  0.49314315
+4609	 -6.27256206	 -0.00067114	  0.00041129	  7.27189093	  0.99794941	  0.99891757  0.49314322
+4610	 -6.27256241	 -0.00067099	  0.00041120	  7.27189142	  0.99794985	  0.99891781  0.49314325
+4611	 -6.27256276	 -0.00067085	  0.00041111	  7.27189191	  0.99795030	  0.99891804  0.49314333
+4612	 -6.27256311	 -0.00067070	  0.00041102	  7.27189241	  0.99795074	  0.99891828  0.49314337
+4613	 -6.27256346	 -0.00067056	  0.00041093	  7.27189290	  0.99795119	  0.99891851  0.49314340
+4614	 -6.27256381	 -0.00067041	  0.00041085	  7.27189339	  0.99795163	  0.99891874  0.49314348
+4615	 -6.27256415	 -0.00067027	  0.00041076	  7.27189389	  0.99795207	  0.99891898  0.49314353
+4616	 -6.27256450	 -0.00067012	  0.00041067	  7.27189438	  0.99795252	  0.99891921  0.49314358
+4617	 -6.27256485	 -0.00066998	  0.00041058	  7.27189487	  0.99795296	  0.99891945  0.49314365
+4618	 -6.27256520	 -0.00066983	  0.00041049	  7.27189537	  0.99795340	  0.99891968  0.49314368
+4619	 -6.27256554	 -0.00066969	  0.00041040	  7.27189586	  0.99795385	  0.99891991  0.49314376
+4620	 -6.27256589	 -0.00066954	  0.00041031	  7.27189635	  0.99795429	  0.99892015  0.49314379
+4621	 -6.27256624	 -0.00066940	  0.00041022	  7.27189684	  0.99795473	  0.99892038  0.49314383
+4622	 -6.27256658	 -0.00066925	  0.00041013	  7.27189733	  0.99795517	  0.99892061  0.49314389
+4623	 -6.27256693	 -0.00066911	  0.00041005	  7.27189782	  0.99795562	  0.99892085  0.49314395
+4624	 -6.27256728	 -0.00066896	  0.00040996	  7.27189832	  0.99795606	  0.99892108  0.49314398
+4625	 -6.27256762	 -0.00066882	  0.00040987	  7.27189881	  0.99795650	  0.99892131  0.49314403
+4626	 -6.27256797	 -0.00066867	  0.00040978	  7.27189930	  0.99795694	  0.99892155  0.49314409
+4627	 -6.27256832	 -0.00066853	  0.00040969	  7.27189979	  0.99795738	  0.99892178  0.49314415
+4628	 -6.27256866	 -0.00066838	  0.00040960	  7.27190028	  0.99795782	  0.99892201  0.49314419
+4629	 -6.27256901	 -0.00066824	  0.00040951	  7.27190077	  0.99795827	  0.99892225  0.49314425
+4630	 -6.27256935	 -0.00066810	  0.00040943	  7.27190126	  0.99795871	  0.99892248  0.49314428
+4631	 -6.27256970	 -0.00066795	  0.00040934	  7.27190175	  0.99795915	  0.99892271  0.49314436
+4632	 -6.27257004	 -0.00066781	  0.00040925	  7.27190224	  0.99795959	  0.99892294  0.49314439
+4633	 -6.27257039	 -0.00066766	  0.00040916	  7.27190273	  0.99796003	  0.99892318  0.49314446
+4634	 -6.27257073	 -0.00066752	  0.00040907	  7.27190322	  0.99796047	  0.99892341  0.49314452
+4635	 -6.27257108	 -0.00066738	  0.00040898	  7.27190370	  0.99796091	  0.99892364  0.49314453
+4636	 -6.27257142	 -0.00066723	  0.00040890	  7.27190419	  0.99796135	  0.99892387  0.49314460
+4637	 -6.27257177	 -0.00066709	  0.00040881	  7.27190468	  0.99796179	  0.99892410  0.49314466
+4638	 -6.27257211	 -0.00066694	  0.00040872	  7.27190517	  0.99796223	  0.99892434  0.49314470
+4639	 -6.27257246	 -0.00066680	  0.00040863	  7.27190566	  0.99796267	  0.99892457  0.49314476
+4640	 -6.27257280	 -0.00066666	  0.00040854	  7.27190615	  0.99796311	  0.99892480  0.49314482
+4641	 -6.27257315	 -0.00066651	  0.00040846	  7.27190663	  0.99796354	  0.99892503  0.49314486
+4642	 -6.27257349	 -0.00066637	  0.00040837	  7.27190712	  0.99796398	  0.99892526  0.49314490
+4643	 -6.27257383	 -0.00066623	  0.00040828	  7.27190761	  0.99796442	  0.99892549  0.49314498
+4644	 -6.27257418	 -0.00066608	  0.00040819	  7.27190809	  0.99796486	  0.99892573  0.49314501
+4645	 -6.27257452	 -0.00066594	  0.00040810	  7.27190858	  0.99796530	  0.99892596  0.49314505
+4646	 -6.27257486	 -0.00066580	  0.00040802	  7.27190907	  0.99796574	  0.99892619  0.49314512
+4647	 -6.27257521	 -0.00066565	  0.00040793	  7.27190955	  0.99796617	  0.99892642  0.49314515
+4648	 -6.27257555	 -0.00066551	  0.00040784	  7.27191004	  0.99796661	  0.99892665  0.49314521
+4649	 -6.27257589	 -0.00066537	  0.00040775	  7.27191053	  0.99796705	  0.99892688  0.49314528
+4650	 -6.27257623	 -0.00066522	  0.00040766	  7.27191101	  0.99796748	  0.99892711  0.49314532
+4651	 -6.27257658	 -0.00066508	  0.00040758	  7.27191150	  0.99796792	  0.99892734  0.49314537
+4652	 -6.27257692	 -0.00066494	  0.00040749	  7.27191198	  0.99796836	  0.99892757  0.49314541
+4653	 -6.27257726	 -0.00066480	  0.00040740	  7.27191247	  0.99796880	  0.99892780  0.49314547
+4654	 -6.27257760	 -0.00066465	  0.00040731	  7.27191295	  0.99796923	  0.99892803  0.49314555
+4655	 -6.27257795	 -0.00066451	  0.00040723	  7.27191344	  0.99796967	  0.99892826  0.49314558
+4656	 -6.27257829	 -0.00066437	  0.00040714	  7.27191392	  0.99797010	  0.99892849  0.49314564
+4657	 -6.27257863	 -0.00066422	  0.00040705	  7.27191440	  0.99797054	  0.99892872  0.49314568
+4658	 -6.27257897	 -0.00066408	  0.00040696	  7.27191489	  0.99797098	  0.99892895  0.49314573
+4659	 -6.27257931	 -0.00066394	  0.00040688	  7.27191537	  0.99797141	  0.99892918  0.49314579
+4660	 -6.27257965	 -0.00066380	  0.00040679	  7.27191586	  0.99797185	  0.99892941  0.49314582
+4661	 -6.27257999	 -0.00066366	  0.00040670	  7.27191634	  0.99797228	  0.99892964  0.49314588
+4662	 -6.27258033	 -0.00066351	  0.00040662	  7.27191682	  0.99797272	  0.99892987  0.49314593
+4663	 -6.27258068	 -0.00066337	  0.00040653	  7.27191730	  0.99797315	  0.99893010  0.49314598
+4664	 -6.27258102	 -0.00066323	  0.00040644	  7.27191779	  0.99797358	  0.99893033  0.49314603
+4665	 -6.27258136	 -0.00066309	  0.00040635	  7.27191827	  0.99797402	  0.99893056  0.49314608
+4666	 -6.27258170	 -0.00066294	  0.00040627	  7.27191875	  0.99797445	  0.99893079  0.49314611
+4667	 -6.27258204	 -0.00066280	  0.00040618	  7.27191923	  0.99797489	  0.99893102  0.49314621
+4668	 -6.27258238	 -0.00066266	  0.00040609	  7.27191972	  0.99797532	  0.99893125  0.49314623
+4669	 -6.27258272	 -0.00066252	  0.00040601	  7.27192020	  0.99797575	  0.99893148  0.49314626
+4670	 -6.27258306	 -0.00066238	  0.00040592	  7.27192068	  0.99797619	  0.99893170  0.49314635
+4671	 -6.27258340	 -0.00066224	  0.00040583	  7.27192116	  0.99797662	  0.99893193  0.49314639
+4672	 -6.27258373	 -0.00066209	  0.00040574	  7.27192164	  0.99797705	  0.99893216  0.49314644
+4673	 -6.27258407	 -0.00066195	  0.00040566	  7.27192212	  0.99797749	  0.99893239  0.49314649
+4674	 -6.27258441	 -0.00066181	  0.00040557	  7.27192260	  0.99797792	  0.99893262  0.49314651
+4675	 -6.27258475	 -0.00066167	  0.00040548	  7.27192308	  0.99797835	  0.99893285  0.49314660
+4676	 -6.27258509	 -0.00066153	  0.00040540	  7.27192356	  0.99797878	  0.99893307  0.49314663
+4677	 -6.27258543	 -0.00066139	  0.00040531	  7.27192404	  0.99797922	  0.99893330  0.49314669
+4678	 -6.27258577	 -0.00066125	  0.00040522	  7.27192452	  0.99797965	  0.99893353  0.49314673
+4679	 -6.27258611	 -0.00066110	  0.00040514	  7.27192500	  0.99798008	  0.99893376  0.49314679
+4680	 -6.27258644	 -0.00066096	  0.00040505	  7.27192548	  0.99798051	  0.99893399  0.49314686
+4681	 -6.27258678	 -0.00066082	  0.00040496	  7.27192596	  0.99798094	  0.99893421  0.49314689
+4682	 -6.27258712	 -0.00066068	  0.00040488	  7.27192644	  0.99798137	  0.99893444  0.49314694
+4683	 -6.27258746	 -0.00066054	  0.00040479	  7.27192692	  0.99798181	  0.99893467  0.49314700
+4684	 -6.27258780	 -0.00066040	  0.00040471	  7.27192740	  0.99798224	  0.99893490  0.49314705
+4685	 -6.27258813	 -0.00066026	  0.00040462	  7.27192788	  0.99798267	  0.99893512  0.49314708
+4686	 -6.27258847	 -0.00066012	  0.00040453	  7.27192835	  0.99798310	  0.99893535  0.49314712
+4687	 -6.27258881	 -0.00065998	  0.00040445	  7.27192883	  0.99798353	  0.99893558  0.49314719
+4688	 -6.27258914	 -0.00065984	  0.00040436	  7.27192931	  0.99798396	  0.99893580  0.49314727
+4689	 -6.27258948	 -0.00065970	  0.00040427	  7.27192979	  0.99798439	  0.99893603  0.49314727
+4690	 -6.27258982	 -0.00065955	  0.00040419	  7.27193026	  0.99798482	  0.99893626  0.49314731
+4691	 -6.27259015	 -0.00065941	  0.00040410	  7.27193074	  0.99798525	  0.99893648  0.49314740
+4692	 -6.27259049	 -0.00065927	  0.00040401	  7.27193122	  0.99798568	  0.99893671  0.49314745
+4693	 -6.27259083	 -0.00065913	  0.00040393	  7.27193169	  0.99798610	  0.99893694  0.49314746
+4694	 -6.27259116	 -0.00065899	  0.00040384	  7.27193217	  0.99798653	  0.99893716  0.49314754
+4695	 -6.27259150	 -0.00065885	  0.00040376	  7.27193265	  0.99798696	  0.99893739  0.49314761
+4696	 -6.27259184	 -0.00065871	  0.00040367	  7.27193312	  0.99798739	  0.99893762  0.49314766
+4697	 -6.27259217	 -0.00065857	  0.00040358	  7.27193360	  0.99798782	  0.99893784  0.49314769
+4698	 -6.27259251	 -0.00065843	  0.00040350	  7.27193407	  0.99798825	  0.99893807  0.49314775
+4699	 -6.27259284	 -0.00065829	  0.00040341	  7.27193455	  0.99798868	  0.99893829  0.49314778
+4700	 -6.27259318	 -0.00065815	  0.00040333	  7.27193502	  0.99798910	  0.99893852  0.49314784
+4701	 -6.27259351	 -0.00065801	  0.00040324	  7.27193550	  0.99798953	  0.99893875  0.49314788
+4702	 -6.27259385	 -0.00065787	  0.00040316	  7.27193597	  0.99798996	  0.99893897  0.49314794
+4703	 -6.27259418	 -0.00065773	  0.00040307	  7.27193645	  0.99799039	  0.99893920  0.49314799
+4704	 -6.27259452	 -0.00065759	  0.00040298	  7.27193692	  0.99799081	  0.99893942  0.49314805
+4705	 -6.27259485	 -0.00065745	  0.00040290	  7.27193740	  0.99799124	  0.99893965  0.49314807
+4706	 -6.27259519	 -0.00065731	  0.00040281	  7.27193787	  0.99799167	  0.99893987  0.49314813
+4707	 -6.27259552	 -0.00065717	  0.00040273	  7.27193835	  0.99799209	  0.99894010  0.49314822
+4708	 -6.27259585	 -0.00065703	  0.00040264	  7.27193882	  0.99799252	  0.99894032  0.49314825
+4709	 -6.27259619	 -0.00065690	  0.00040256	  7.27193929	  0.99799295	  0.99894055  0.49314830
+4710	 -6.27259652	 -0.00065676	  0.00040247	  7.27193977	  0.99799337	  0.99894077  0.49314836
+4711	 -6.27259686	 -0.00065662	  0.00040239	  7.27194024	  0.99799380	  0.99894100  0.49314839
+4712	 -6.27259719	 -0.00065648	  0.00040230	  7.27194071	  0.99799422	  0.99894122  0.49314844
+4713	 -6.27259752	 -0.00065634	  0.00040221	  7.27194118	  0.99799465	  0.99894145  0.49314848
+4714	 -6.27259786	 -0.00065620	  0.00040213	  7.27194166	  0.99799507	  0.99894167  0.49314852
+4715	 -6.27259819	 -0.00065606	  0.00040204	  7.27194213	  0.99799550	  0.99894190  0.49314858
+4716	 -6.27259852	 -0.00065592	  0.00040196	  7.27194260	  0.99799593	  0.99894212  0.49314864
+4717	 -6.27259885	 -0.00065578	  0.00040187	  7.27194307	  0.99799635	  0.99894234  0.49314867
+4718	 -6.27259919	 -0.00065564	  0.00040179	  7.27194354	  0.99799677	  0.99894257  0.49314872
+4719	 -6.27259952	 -0.00065550	  0.00040170	  7.27194402	  0.99799720	  0.99894279  0.49314880
+4720	 -6.27259985	 -0.00065537	  0.00040162	  7.27194449	  0.99799762	  0.99894302  0.49314880
+4721	 -6.27260018	 -0.00065523	  0.00040153	  7.27194496	  0.99799805	  0.99894324  0.49314888
+4722	 -6.27260052	 -0.00065509	  0.00040145	  7.27194543	  0.99799847	  0.99894346  0.49314897
+4723	 -6.27260085	 -0.00065495	  0.00040136	  7.27194590	  0.99799889	  0.99894369  0.49314899
+4724	 -6.27260118	 -0.00065481	  0.00040128	  7.27194637	  0.99799932	  0.99894391  0.49314902
+4725	 -6.27260151	 -0.00065467	  0.00040119	  7.27194684	  0.99799974	  0.99894413  0.49314908
+4726	 -6.27260184	 -0.00065453	  0.00040111	  7.27194731	  0.99800016	  0.99894436  0.49314911
+4727	 -6.27260217	 -0.00065440	  0.00040102	  7.27194778	  0.99800059	  0.99894458  0.49314920
+4728	 -6.27260251	 -0.00065426	  0.00040094	  7.27194825	  0.99800101	  0.99894480  0.49314922
+4729	 -6.27260284	 -0.00065412	  0.00040085	  7.27194872	  0.99800143	  0.99894503  0.49314928
+4730	 -6.27260317	 -0.00065398	  0.00040077	  7.27194919	  0.99800186	  0.99894525  0.49314931
+4731	 -6.27260350	 -0.00065384	  0.00040068	  7.27194966	  0.99800228	  0.99894547  0.49314937
+4732	 -6.27260383	 -0.00065370	  0.00040060	  7.27195013	  0.99800270	  0.99894570  0.49314942
+4733	 -6.27260416	 -0.00065357	  0.00040051	  7.27195059	  0.99800312	  0.99894592  0.49314947
+4734	 -6.27260449	 -0.00065343	  0.00040043	  7.27195106	  0.99800354	  0.99894614  0.49314952
+4735	 -6.27260482	 -0.00065329	  0.00040035	  7.27195153	  0.99800397	  0.99894636  0.49314960
+4736	 -6.27260515	 -0.00065315	  0.00040026	  7.27195200	  0.99800439	  0.99894659  0.49314963
+4737	 -6.27260548	 -0.00065302	  0.00040018	  7.27195247	  0.99800481	  0.99894681  0.49314965
+4738	 -6.27260581	 -0.00065288	  0.00040009	  7.27195293	  0.99800523	  0.99894703  0.49314972
+4739	 -6.27260614	 -0.00065274	  0.00040001	  7.27195340	  0.99800565	  0.99894725  0.49314975
+4740	 -6.27260647	 -0.00065260	  0.00039992	  7.27195387	  0.99800607	  0.99894747  0.49314983
+4741	 -6.27260680	 -0.00065246	  0.00039984	  7.27195434	  0.99800649	  0.99894770  0.49314987
+4742	 -6.27260713	 -0.00065233	  0.00039975	  7.27195480	  0.99800691	  0.99894792  0.49314994
+4743	 -6.27260746	 -0.00065219	  0.00039967	  7.27195527	  0.99800733	  0.99894814  0.49314996
+4744	 -6.27260779	 -0.00065205	  0.00039959	  7.27195573	  0.99800775	  0.99894836  0.49314998
+4745	 -6.27260812	 -0.00065192	  0.00039950	  7.27195620	  0.99800817	  0.99894858  0.49315004
+4746	 -6.27260844	 -0.00065178	  0.00039942	  7.27195667	  0.99800859	  0.99894880  0.49315011
+4747	 -6.27260877	 -0.00065164	  0.00039933	  7.27195713	  0.99800901	  0.99894903  0.49315016
+4748	 -6.27260910	 -0.00065150	  0.00039925	  7.27195760	  0.99800943	  0.99894925  0.49315020
+4749	 -6.27260943	 -0.00065137	  0.00039917	  7.27195806	  0.99800985	  0.99894947  0.49315028
+4750	 -6.27260976	 -0.00065123	  0.00039908	  7.27195853	  0.99801027	  0.99894969  0.49315027
+4751	 -6.27261009	 -0.00065109	  0.00039900	  7.27195899	  0.99801069	  0.99894991  0.49315035
+4752	 -6.27261041	 -0.00065096	  0.00039891	  7.27195946	  0.99801110	  0.99895013  0.49315041
+4753	 -6.27261074	 -0.00065082	  0.00039883	  7.27195992	  0.99801152	  0.99895035  0.49315047
+4754	 -6.27261107	 -0.00065068	  0.00039875	  7.27196039	  0.99801194	  0.99895057  0.49315053
+4755	 -6.27261140	 -0.00065055	  0.00039866	  7.27196085	  0.99801236	  0.99895079  0.49315055
+4756	 -6.27261172	 -0.00065041	  0.00039858	  7.27196132	  0.99801278	  0.99895101  0.49315059
+4757	 -6.27261205	 -0.00065027	  0.00039849	  7.27196178	  0.99801320	  0.99895123  0.49315063
+4758	 -6.27261238	 -0.00065014	  0.00039841	  7.27196224	  0.99801361	  0.99895145  0.49315070
+4759	 -6.27261271	 -0.00065000	  0.00039833	  7.27196271	  0.99801403	  0.99895167  0.49315074
+4760	 -6.27261303	 -0.00064986	  0.00039824	  7.27196317	  0.99801445	  0.99895189  0.49315081
+4761	 -6.27261336	 -0.00064973	  0.00039816	  7.27196363	  0.99801486	  0.99895212  0.49315083
+4762	 -6.27261369	 -0.00064959	  0.00039808	  7.27196410	  0.99801528	  0.99895233  0.49315088
+4763	 -6.27261401	 -0.00064945	  0.00039799	  7.27196456	  0.99801570	  0.99895255  0.49315095
+4764	 -6.27261434	 -0.00064932	  0.00039791	  7.27196502	  0.99801611	  0.99895277  0.49315102
+4765	 -6.27261466	 -0.00064918	  0.00039782	  7.27196548	  0.99801653	  0.99895299  0.49315101
+4766	 -6.27261499	 -0.00064904	  0.00039774	  7.27196595	  0.99801695	  0.99895321  0.49315109
+4767	 -6.27261532	 -0.00064891	  0.00039766	  7.27196641	  0.99801736	  0.99895343  0.49315112
+4768	 -6.27261564	 -0.00064877	  0.00039757	  7.27196687	  0.99801778	  0.99895365  0.49315120
+4769	 -6.27261597	 -0.00064864	  0.00039749	  7.27196733	  0.99801819	  0.99895387  0.49315122
+4770	 -6.27261629	 -0.00064850	  0.00039741	  7.27196779	  0.99801861	  0.99895409  0.49315129
+4771	 -6.27261662	 -0.00064836	  0.00039732	  7.27196825	  0.99801902	  0.99895431  0.49315134
+4772	 -6.27261694	 -0.00064823	  0.00039724	  7.27196871	  0.99801944	  0.99895453  0.49315136
+4773	 -6.27261727	 -0.00064809	  0.00039716	  7.27196917	  0.99801985	  0.99895475  0.49315141
+4774	 -6.27261759	 -0.00064796	  0.00039707	  7.27196963	  0.99802027	  0.99895497  0.49315149
+4775	 -6.27261792	 -0.00064782	  0.00039699	  7.27197009	  0.99802068	  0.99895519  0.49315153
+4776	 -6.27261824	 -0.00064769	  0.00039691	  7.27197056	  0.99802110	  0.99895540  0.49315156
+4777	 -6.27261857	 -0.00064755	  0.00039683	  7.27197101	  0.99802151	  0.99895562  0.49315162
+4778	 -6.27261889	 -0.00064742	  0.00039674	  7.27197147	  0.99802193	  0.99895584  0.49315167
+4779	 -6.27261921	 -0.00064728	  0.00039666	  7.27197193	  0.99802234	  0.99895606  0.49315173
+4780	 -6.27261954	 -0.00064715	  0.00039658	  7.27197239	  0.99802275	  0.99895628  0.49315176
+4781	 -6.27261986	 -0.00064701	  0.00039649	  7.27197285	  0.99802317	  0.99895650  0.49315180
+4782	 -6.27262019	 -0.00064687	  0.00039641	  7.27197331	  0.99802358	  0.99895671  0.49315186
+4783	 -6.27262051	 -0.00064674	  0.00039633	  7.27197377	  0.99802399	  0.99895693  0.49315191
+4784	 -6.27262083	 -0.00064660	  0.00039624	  7.27197423	  0.99802441	  0.99895715  0.49315198
+4785	 -6.27262116	 -0.00064647	  0.00039616	  7.27197469	  0.99802482	  0.99895737  0.49315200
+4786	 -6.27262148	 -0.00064633	  0.00039608	  7.27197515	  0.99802523	  0.99895759  0.49315204
+4787	 -6.27262180	 -0.00064620	  0.00039600	  7.27197560	  0.99802564	  0.99895780  0.49315211
+4788	 -6.27262213	 -0.00064606	  0.00039591	  7.27197606	  0.99802606	  0.99895802  0.49315216
+4789	 -6.27262245	 -0.00064593	  0.00039583	  7.27197652	  0.99802647	  0.99895824  0.49315219
+4790	 -6.27262277	 -0.00064579	  0.00039575	  7.27197698	  0.99802688	  0.99895846  0.49315225
+4791	 -6.27262309	 -0.00064566	  0.00039567	  7.27197743	  0.99802729	  0.99895867  0.49315226
+4792	 -6.27262342	 -0.00064553	  0.00039558	  7.27197789	  0.99802770	  0.99895889  0.49315233
+4793	 -6.27262374	 -0.00064539	  0.00039550	  7.27197835	  0.99802812	  0.99895911  0.49315238
+4794	 -6.27262406	 -0.00064526	  0.00039542	  7.27197880	  0.99802853	  0.99895933  0.49315244
+4795	 -6.27262438	 -0.00064512	  0.00039534	  7.27197926	  0.99802894	  0.99895954  0.49315248
+4796	 -6.27262470	 -0.00064499	  0.00039525	  7.27197972	  0.99802935	  0.99895976  0.49315254
+4797	 -6.27262503	 -0.00064485	  0.00039517	  7.27198017	  0.99802976	  0.99895998  0.49315255
+4798	 -6.27262535	 -0.00064472	  0.00039509	  7.27198063	  0.99803017	  0.99896019  0.49315260
+4799	 -6.27262567	 -0.00064458	  0.00039501	  7.27198108	  0.99803058	  0.99896041  0.49315266
+4800	 -6.27262599	 -0.00064445	  0.00039492	  7.27198154	  0.99803099	  0.99896063  0.49315272
+4801	 -6.27262631	 -0.00064432	  0.00039484	  7.27198199	  0.99803140	  0.99896084  0.49315276
+4802	 -6.27262663	 -0.00064418	  0.00039476	  7.27198245	  0.99803181	  0.99896106  0.49315283
+4803	 -6.27262695	 -0.00064405	  0.00039468	  7.27198290	  0.99803222	  0.99896127  0.49315287
+4804	 -6.27262727	 -0.00064391	  0.00039460	  7.27198336	  0.99803263	  0.99896149  0.49315291
+4805	 -6.27262759	 -0.00064378	  0.00039451	  7.27198381	  0.99803304	  0.99896171  0.49315298
+4806	 -6.27262792	 -0.00064365	  0.00039443	  7.27198427	  0.99803345	  0.99896192  0.49315301
+4807	 -6.27262824	 -0.00064351	  0.00039435	  7.27198472	  0.99803386	  0.99896214  0.49315305
+4808	 -6.27262856	 -0.00064338	  0.00039427	  7.27198518	  0.99803427	  0.99896235  0.49315310
+4809	 -6.27262888	 -0.00064325	  0.00039418	  7.27198563	  0.99803468	  0.99896257  0.49315315
+4810	 -6.27262920	 -0.00064311	  0.00039410	  7.27198608	  0.99803508	  0.99896279  0.49315320
+4811	 -6.27262952	 -0.00064298	  0.00039402	  7.27198654	  0.99803549	  0.99896300  0.49315324
+4812	 -6.27262984	 -0.00064284	  0.00039394	  7.27198699	  0.99803590	  0.99896322  0.49315329
+4813	 -6.27263015	 -0.00064271	  0.00039386	  7.27198744	  0.99803631	  0.99896343  0.49315335
+4814	 -6.27263047	 -0.00064258	  0.00039378	  7.27198790	  0.99803672	  0.99896365  0.49315341
+4815	 -6.27263079	 -0.00064244	  0.00039369	  7.27198835	  0.99803712	  0.99896386  0.49315341
+4816	 -6.27263111	 -0.00064231	  0.00039361	  7.27198880	  0.99803753	  0.99896408  0.49315348
+4817	 -6.27263143	 -0.00064218	  0.00039353	  7.27198925	  0.99803794	  0.99896429  0.49315355
+4818	 -6.27263175	 -0.00064204	  0.00039345	  7.27198971	  0.99803835	  0.99896451  0.49315360
+4819	 -6.27263207	 -0.00064191	  0.00039337	  7.27199016	  0.99803875	  0.99896472  0.49315362
+4820	 -6.27263239	 -0.00064178	  0.00039329	  7.27199061	  0.99803916	  0.99896494  0.49315366
+4821	 -6.27263271	 -0.00064165	  0.00039320	  7.27199106	  0.99803957	  0.99896515  0.49315370
+4822	 -6.27263302	 -0.00064151	  0.00039312	  7.27199151	  0.99803997	  0.99896537  0.49315378
+4823	 -6.27263334	 -0.00064138	  0.00039304	  7.27199196	  0.99804038	  0.99896558  0.49315382
+4824	 -6.27263366	 -0.00064125	  0.00039296	  7.27199241	  0.99804079	  0.99896579  0.49315384
+4825	 -6.27263398	 -0.00064111	  0.00039288	  7.27199287	  0.99804119	  0.99896601  0.49315390
+4826	 -6.27263430	 -0.00064098	  0.00039280	  7.27199332	  0.99804160	  0.99896622  0.49315398
+4827	 -6.27263461	 -0.00064085	  0.00039271	  7.27199377	  0.99804200	  0.99896644  0.49315398
+4828	 -6.27263493	 -0.00064072	  0.00039263	  7.27199422	  0.99804241	  0.99896665  0.49315402
+4829	 -6.27263525	 -0.00064058	  0.00039255	  7.27199467	  0.99804281	  0.99896686  0.49315410
+4830	 -6.27263557	 -0.00064045	  0.00039247	  7.27199512	  0.99804322	  0.99896708  0.49315415
+4831	 -6.27263588	 -0.00064032	  0.00039239	  7.27199557	  0.99804362	  0.99896729  0.49315420
+4832	 -6.27263620	 -0.00064019	  0.00039231	  7.27199602	  0.99804403	  0.99896751  0.49315423
+4833	 -6.27263652	 -0.00064005	  0.00039223	  7.27199646	  0.99804443	  0.99896772  0.49315429
+4834	 -6.27263683	 -0.00063992	  0.00039215	  7.27199691	  0.99804484	  0.99896793  0.49315433
+4835	 -6.27263715	 -0.00063979	  0.00039206	  7.27199736	  0.99804524	  0.99896815  0.49315438
+4836	 -6.27263747	 -0.00063966	  0.00039198	  7.27199781	  0.99804565	  0.99896836  0.49315441
+4837	 -6.27263778	 -0.00063952	  0.00039190	  7.27199826	  0.99804605	  0.99896857  0.49315445
+4838	 -6.27263810	 -0.00063939	  0.00039182	  7.27199871	  0.99804645	  0.99896879  0.49315452
+4839	 -6.27263842	 -0.00063926	  0.00039174	  7.27199916	  0.99804686	  0.99896900  0.49315453
+4840	 -6.27263873	 -0.00063913	  0.00039166	  7.27199960	  0.99804726	  0.99896921  0.49315461
+4841	 -6.27263905	 -0.00063900	  0.00039158	  7.27200005	  0.99804766	  0.99896942  0.49315465
+4842	 -6.27263936	 -0.00063886	  0.00039150	  7.27200050	  0.99804807	  0.99896964  0.49315471
+4843	 -6.27263968	 -0.00063873	  0.00039142	  7.27200095	  0.99804847	  0.99896985  0.49315476
+4844	 -6.27263999	 -0.00063860	  0.00039134	  7.27200139	  0.99804887	  0.99897006  0.49315480
+4845	 -6.27264031	 -0.00063847	  0.00039126	  7.27200184	  0.99804928	  0.99897028  0.49315486
+4846	 -6.27264063	 -0.00063834	  0.00039117	  7.27200229	  0.99804968	  0.99897049  0.49315489
+4847	 -6.27264094	 -0.00063821	  0.00039109	  7.27200273	  0.99805008	  0.99897070  0.49315491
+4848	 -6.27264126	 -0.00063807	  0.00039101	  7.27200318	  0.99805048	  0.99897091  0.49315503
+4849	 -6.27264157	 -0.00063794	  0.00039093	  7.27200363	  0.99805088	  0.99897112  0.49315504
+4850	 -6.27264188	 -0.00063781	  0.00039085	  7.27200407	  0.99805129	  0.99897134  0.49315507
+4851	 -6.27264220	 -0.00063768	  0.00039077	  7.27200452	  0.99805169	  0.99897155  0.49315512
+4852	 -6.27264251	 -0.00063755	  0.00039069	  7.27200496	  0.99805209	  0.99897176  0.49315517
+4853	 -6.27264283	 -0.00063742	  0.00039061	  7.27200541	  0.99805249	  0.99897197  0.49315521
+4854	 -6.27264314	 -0.00063729	  0.00039053	  7.27200586	  0.99805289	  0.99897218  0.49315529
+4855	 -6.27264346	 -0.00063716	  0.00039045	  7.27200630	  0.99805329	  0.99897240  0.49315533
+4856	 -6.27264377	 -0.00063702	  0.00039037	  7.27200675	  0.99805369	  0.99897261  0.49315538
+4857	 -6.27264408	 -0.00063689	  0.00039029	  7.27200719	  0.99805409	  0.99897282  0.49315540
+4858	 -6.27264440	 -0.00063676	  0.00039021	  7.27200764	  0.99805450	  0.99897303  0.49315545
+4859	 -6.27264471	 -0.00063663	  0.00039013	  7.27200808	  0.99805490	  0.99897324  0.49315550
+4860	 -6.27264502	 -0.00063650	  0.00039005	  7.27200852	  0.99805530	  0.99897345  0.49315556
+4861	 -6.27264534	 -0.00063637	  0.00038997	  7.27200897	  0.99805570	  0.99897366  0.49315563
+4862	 -6.27264565	 -0.00063624	  0.00038989	  7.27200941	  0.99805610	  0.99897387  0.49315563
+4863	 -6.27264596	 -0.00063611	  0.00038981	  7.27200986	  0.99805649	  0.99897409  0.49315568
+4864	 -6.27264628	 -0.00063598	  0.00038973	  7.27201030	  0.99805689	  0.99897430  0.49315572
+4865	 -6.27264659	 -0.00063585	  0.00038965	  7.27201074	  0.99805729	  0.99897451  0.49315579
+4866	 -6.27264690	 -0.00063572	  0.00038957	  7.27201119	  0.99805769	  0.99897472  0.49315582
+4867	 -6.27264721	 -0.00063559	  0.00038949	  7.27201163	  0.99805809	  0.99897493  0.49315589
+4868	 -6.27264753	 -0.00063545	  0.00038941	  7.27201207	  0.99805849	  0.99897514  0.49315595
+4869	 -6.27264784	 -0.00063532	  0.00038933	  7.27201251	  0.99805889	  0.99897535  0.49315600
+4870	 -6.27264815	 -0.00063519	  0.00038925	  7.27201296	  0.99805929	  0.99897556  0.49315603
+4871	 -6.27264846	 -0.00063506	  0.00038917	  7.27201340	  0.99805969	  0.99897577  0.49315606
+4872	 -6.27264877	 -0.00063493	  0.00038909	  7.27201384	  0.99806008	  0.99897598  0.49315609
+4873	 -6.27264909	 -0.00063480	  0.00038901	  7.27201428	  0.99806048	  0.99897619  0.49315614
+4874	 -6.27264940	 -0.00063467	  0.00038893	  7.27201472	  0.99806088	  0.99897640  0.49315621
+4875	 -6.27264971	 -0.00063454	  0.00038885	  7.27201517	  0.99806128	  0.99897661  0.49315622
+4876	 -6.27265002	 -0.00063441	  0.00038877	  7.27201561	  0.99806168	  0.99897682  0.49315632
+4877	 -6.27265033	 -0.00063428	  0.00038869	  7.27201605	  0.99806207	  0.99897703  0.49315636
+4878	 -6.27265064	 -0.00063415	  0.00038861	  7.27201649	  0.99806247	  0.99897724  0.49315639
+4879	 -6.27265095	 -0.00063402	  0.00038853	  7.27201693	  0.99806287	  0.99897745  0.49315644
+4880	 -6.27265126	 -0.00063389	  0.00038845	  7.27201737	  0.99806326	  0.99897766  0.49315648
+4881	 -6.27265157	 -0.00063376	  0.00038837	  7.27201781	  0.99806366	  0.99897787  0.49315654
+4882	 -6.27265189	 -0.00063363	  0.00038829	  7.27201825	  0.99806406	  0.99897808  0.49315656
+4883	 -6.27265220	 -0.00063350	  0.00038821	  7.27201869	  0.99806445	  0.99897829  0.49315663
+4884	 -6.27265251	 -0.00063337	  0.00038813	  7.27201913	  0.99806485	  0.99897849  0.49315664
+4885	 -6.27265282	 -0.00063324	  0.00038805	  7.27201957	  0.99806525	  0.99897870  0.49315672
+4886	 -6.27265313	 -0.00063312	  0.00038797	  7.27202001	  0.99806564	  0.99897891  0.49315678
+4887	 -6.27265344	 -0.00063299	  0.00038789	  7.27202045	  0.99806604	  0.99897912  0.49315679
+4888	 -6.27265375	 -0.00063286	  0.00038781	  7.27202089	  0.99806643	  0.99897933  0.49315682
+4889	 -6.27265406	 -0.00063273	  0.00038773	  7.27202133	  0.99806683	  0.99897954  0.49315688
+4890	 -6.27265436	 -0.00063260	  0.00038765	  7.27202177	  0.99806722	  0.99897975  0.49315697
+4891	 -6.27265467	 -0.00063247	  0.00038758	  7.27202221	  0.99806762	  0.99897996  0.49315698
+4892	 -6.27265498	 -0.00063234	  0.00038750	  7.27202264	  0.99806801	  0.99898016  0.49315705
+4893	 -6.27265529	 -0.00063221	  0.00038742	  7.27202308	  0.99806841	  0.99898037  0.49315710
+4894	 -6.27265560	 -0.00063208	  0.00038734	  7.27202352	  0.99806880	  0.99898058  0.49315714
+4895	 -6.27265591	 -0.00063195	  0.00038726	  7.27202396	  0.99806920	  0.99898079  0.49315716
+4896	 -6.27265622	 -0.00063182	  0.00038718	  7.27202440	  0.99806959	  0.99898100  0.49315722
+4897	 -6.27265653	 -0.00063169	  0.00038710	  7.27202483	  0.99806999	  0.99898121  0.49315726
+4898	 -6.27265684	 -0.00063157	  0.00038702	  7.27202527	  0.99807038	  0.99898141  0.49315731
+4899	 -6.27265714	 -0.00063144	  0.00038694	  7.27202571	  0.99807077	  0.99898162  0.49315737
+4900	 -6.27265745	 -0.00063131	  0.00038686	  7.27202614	  0.99807117	  0.99898183  0.49315740
+4901	 -6.27265776	 -0.00063118	  0.00038678	  7.27202658	  0.99807156	  0.99898204  0.49315744
+4902	 -6.27265807	 -0.00063105	  0.00038671	  7.27202702	  0.99807195	  0.99898224  0.49315747
+4903	 -6.27265838	 -0.00063092	  0.00038663	  7.27202745	  0.99807235	  0.99898245  0.49315751
+4904	 -6.27265868	 -0.00063079	  0.00038655	  7.27202789	  0.99807274	  0.99898266  0.49315758
+4905	 -6.27265899	 -0.00063066	  0.00038647	  7.27202833	  0.99807313	  0.99898287  0.49315760
+4906	 -6.27265930	 -0.00063054	  0.00038639	  7.27202876	  0.99807353	  0.99898307  0.49315770
+4907	 -6.27265961	 -0.00063041	  0.00038631	  7.27202920	  0.99807392	  0.99898328  0.49315771
+4908	 -6.27265991	 -0.00063028	  0.00038623	  7.27202963	  0.99807431	  0.99898349  0.49315780
+4909	 -6.27266022	 -0.00063015	  0.00038615	  7.27203007	  0.99807470	  0.99898369  0.49315780
+4910	 -6.27266053	 -0.00063002	  0.00038608	  7.27203051	  0.99807510	  0.99898390  0.49315786
+4911	 -6.27266083	 -0.00062989	  0.00038600	  7.27203094	  0.99807549	  0.99898411  0.49315792
+4912	 -6.27266114	 -0.00062977	  0.00038592	  7.27203138	  0.99807588	  0.99898432  0.49315794
+4913	 -6.27266145	 -0.00062964	  0.00038584	  7.27203181	  0.99807627	  0.99898452  0.49315802
+4914	 -6.27266175	 -0.00062951	  0.00038576	  7.27203224	  0.99807666	  0.99898473  0.49315805
+4915	 -6.27266206	 -0.00062938	  0.00038568	  7.27203268	  0.99807705	  0.99898493  0.49315808
+4916	 -6.27266237	 -0.00062925	  0.00038560	  7.27203311	  0.99807744	  0.99898514  0.49315812
+4917	 -6.27266267	 -0.00062913	  0.00038553	  7.27203355	  0.99807784	  0.99898535  0.49315818
+4918	 -6.27266298	 -0.00062900	  0.00038545	  7.27203398	  0.99807823	  0.99898555  0.49315821
+4919	 -6.27266329	 -0.00062887	  0.00038537	  7.27203441	  0.99807862	  0.99898576  0.49315828
+4920	 -6.27266359	 -0.00062874	  0.00038529	  7.27203485	  0.99807901	  0.99898597  0.49315830
+4921	 -6.27266390	 -0.00062862	  0.00038521	  7.27203528	  0.99807940	  0.99898617  0.49315836
+4922	 -6.27266420	 -0.00062849	  0.00038513	  7.27203571	  0.99807979	  0.99898638  0.49315841
+4923	 -6.27266451	 -0.00062836	  0.00038506	  7.27203615	  0.99808018	  0.99898658  0.49315847
+4924	 -6.27266481	 -0.00062823	  0.00038498	  7.27203658	  0.99808057	  0.99898679  0.49315850
+4925	 -6.27266512	 -0.00062811	  0.00038490	  7.27203701	  0.99808096	  0.99898700  0.49315856
+4926	 -6.27266542	 -0.00062798	  0.00038482	  7.27203744	  0.99808135	  0.99898720  0.49315859
+4927	 -6.27266573	 -0.00062785	  0.00038474	  7.27203788	  0.99808174	  0.99898741  0.49315862
+4928	 -6.27266603	 -0.00062772	  0.00038467	  7.27203831	  0.99808213	  0.99898761  0.49315867
+4929	 -6.27266634	 -0.00062760	  0.00038459	  7.27203874	  0.99808251	  0.99898782  0.49315875
+4930	 -6.27266664	 -0.00062747	  0.00038451	  7.27203917	  0.99808290	  0.99898802  0.49315880
+4931	 -6.27266695	 -0.00062734	  0.00038443	  7.27203960	  0.99808329	  0.99898823  0.49315883
+4932	 -6.27266725	 -0.00062721	  0.00038435	  7.27204004	  0.99808368	  0.99898843  0.49315887
+4933	 -6.27266755	 -0.00062709	  0.00038428	  7.27204047	  0.99808407	  0.99898864  0.49315892
+4934	 -6.27266786	 -0.00062696	  0.00038420	  7.27204090	  0.99808446	  0.99898884  0.49315895
+4935	 -6.27266816	 -0.00062683	  0.00038412	  7.27204133	  0.99808485	  0.99898905  0.49315899
+4936	 -6.27266847	 -0.00062671	  0.00038404	  7.27204176	  0.99808523	  0.99898925  0.49315906
+4937	 -6.27266877	 -0.00062658	  0.00038396	  7.27204219	  0.99808562	  0.99898946  0.49315910
+4938	 -6.27266907	 -0.00062645	  0.00038389	  7.27204262	  0.99808601	  0.99898966  0.49315911
+4939	 -6.27266938	 -0.00062633	  0.00038381	  7.27204305	  0.99808640	  0.99898987  0.49315917
+4940	 -6.27266968	 -0.00062620	  0.00038373	  7.27204348	  0.99808678	  0.99899007  0.49315922
+4941	 -6.27266998	 -0.00062607	  0.00038365	  7.27204391	  0.99808717	  0.99899027  0.49315926
+4942	 -6.27267028	 -0.00062595	  0.00038358	  7.27204434	  0.99808756	  0.99899048  0.49315930
+4943	 -6.27267059	 -0.00062582	  0.00038350	  7.27204477	  0.99808794	  0.99899068  0.49315934
+4944	 -6.27267089	 -0.00062569	  0.00038342	  7.27204520	  0.99808833	  0.99899089  0.49315940
+4945	 -6.27267119	 -0.00062557	  0.00038334	  7.27204563	  0.99808872	  0.99899109  0.49315945
+4946	 -6.27267150	 -0.00062544	  0.00038327	  7.27204606	  0.99808910	  0.99899129  0.49315950
+4947	 -6.27267180	 -0.00062531	  0.00038319	  7.27204648	  0.99808949	  0.99899150  0.49315953
+4948	 -6.27267210	 -0.00062519	  0.00038311	  7.27204691	  0.99808988	  0.99899170  0.49315956
+4949	 -6.27267240	 -0.00062506	  0.00038303	  7.27204734	  0.99809026	  0.99899191  0.49315961
+4950	 -6.27267270	 -0.00062494	  0.00038296	  7.27204777	  0.99809065	  0.99899211  0.49315968
+4951	 -6.27267301	 -0.00062481	  0.00038288	  7.27204820	  0.99809103	  0.99899231  0.49315973
+4952	 -6.27267331	 -0.00062468	  0.00038280	  7.27204863	  0.99809142	  0.99899252  0.49315977
+4953	 -6.27267361	 -0.00062456	  0.00038272	  7.27204905	  0.99809180	  0.99899272  0.49315980
+4954	 -6.27267391	 -0.00062443	  0.00038265	  7.27204948	  0.99809219	  0.99899292  0.49315984
+4955	 -6.27267421	 -0.00062431	  0.00038257	  7.27204991	  0.99809257	  0.99899313  0.49315989
+4956	 -6.27267451	 -0.00062418	  0.00038249	  7.27205033	  0.99809296	  0.99899333  0.49315993
+4957	 -6.27267481	 -0.00062405	  0.00038241	  7.27205076	  0.99809334	  0.99899353  0.49315999
+4958	 -6.27267512	 -0.00062393	  0.00038234	  7.27205119	  0.99809373	  0.99899373  0.49316004
+4959	 -6.27267542	 -0.00062380	  0.00038226	  7.27205162	  0.99809411	  0.99899394  0.49316007
+4960	 -6.27267572	 -0.00062368	  0.00038218	  7.27205204	  0.99809450	  0.99899414  0.49316011
+4961	 -6.27267602	 -0.00062355	  0.00038211	  7.27205247	  0.99809488	  0.99899434  0.49316016
+4962	 -6.27267632	 -0.00062342	  0.00038203	  7.27205289	  0.99809527	  0.99899455  0.49316020
+4963	 -6.27267662	 -0.00062330	  0.00038195	  7.27205332	  0.99809565	  0.99899475  0.49316023
+4964	 -6.27267692	 -0.00062317	  0.00038188	  7.27205375	  0.99809603	  0.99899495  0.49316033
+4965	 -6.27267722	 -0.00062305	  0.00038180	  7.27205417	  0.99809642	  0.99899515  0.49316032
+4966	 -6.27267752	 -0.00062292	  0.00038172	  7.27205460	  0.99809680	  0.99899536  0.49316037
+4967	 -6.27267782	 -0.00062280	  0.00038164	  7.27205502	  0.99809718	  0.99899556  0.49316043
+4968	 -6.27267812	 -0.00062267	  0.00038157	  7.27205545	  0.99809757	  0.99899576  0.49316049
+4969	 -6.27267842	 -0.00062255	  0.00038149	  7.27205587	  0.99809795	  0.99899596  0.49316053
+4970	 -6.27267872	 -0.00062242	  0.00038141	  7.27205630	  0.99809833	  0.99899616  0.49316060
+4971	 -6.27267902	 -0.00062230	  0.00038134	  7.27205672	  0.99809871	  0.99899637  0.49316061
+4972	 -6.27267932	 -0.00062217	  0.00038126	  7.27205715	  0.99809910	  0.99899657  0.49316068
+4973	 -6.27267962	 -0.00062205	  0.00038118	  7.27205757	  0.99809948	  0.99899677  0.49316072
+4974	 -6.27267992	 -0.00062192	  0.00038111	  7.27205799	  0.99809986	  0.99899697  0.49316074
+4975	 -6.27268021	 -0.00062180	  0.00038103	  7.27205842	  0.99810024	  0.99899717  0.49316079
+4976	 -6.27268051	 -0.00062167	  0.00038095	  7.27205884	  0.99810062	  0.99899737  0.49316083
+4977	 -6.27268081	 -0.00062155	  0.00038088	  7.27205927	  0.99810100	  0.99899757  0.49316088
+4978	 -6.27268111	 -0.00062142	  0.00038080	  7.27205969	  0.99810139	  0.99899778  0.49316090
+4979	 -6.27268141	 -0.00062130	  0.00038072	  7.27206011	  0.99810177	  0.99899798  0.49316099
+4980	 -6.27268171	 -0.00062117	  0.00038065	  7.27206053	  0.99810215	  0.99899818  0.49316102
+4981	 -6.27268201	 -0.00062105	  0.00038057	  7.27206096	  0.99810253	  0.99899838  0.49316107
+4982	 -6.27268230	 -0.00062092	  0.00038050	  7.27206138	  0.99810291	  0.99899858  0.49316107
+4983	 -6.27268260	 -0.00062080	  0.00038042	  7.27206180	  0.99810329	  0.99899878  0.49316112
+4984	 -6.27268290	 -0.00062067	  0.00038034	  7.27206223	  0.99810367	  0.99899898  0.49316121
+4985	 -6.27268320	 -0.00062055	  0.00038027	  7.27206265	  0.99810405	  0.99899918  0.49316122
+4986	 -6.27268350	 -0.00062043	  0.00038019	  7.27206307	  0.99810443	  0.99899938  0.49316127
+4987	 -6.27268379	 -0.00062030	  0.00038011	  7.27206349	  0.99810481	  0.99899958  0.49316133
+4988	 -6.27268409	 -0.00062018	  0.00038004	  7.27206391	  0.99810519	  0.99899978  0.49316137
+4989	 -6.27268439	 -0.00062005	  0.00037996	  7.27206433	  0.99810557	  0.99899999  0.49316141
+4990	 -6.27268468	 -0.00061993	  0.00037989	  7.27206476	  0.99810595	  0.99900019  0.49316145
+4991	 -6.27268498	 -0.00061980	  0.00037981	  7.27206518	  0.99810633	  0.99900039  0.49316150
+4992	 -6.27268528	 -0.00061968	  0.00037973	  7.27206560	  0.99810671	  0.99900059  0.49316152
+4993	 -6.27268558	 -0.00061956	  0.00037966	  7.27206602	  0.99810709	  0.99900079  0.49316158
+4994	 -6.27268587	 -0.00061943	  0.00037958	  7.27206644	  0.99810747	  0.99900099  0.49316160
+4995	 -6.27268617	 -0.00061931	  0.00037951	  7.27206686	  0.99810785	  0.99900119  0.49316174
+4996	 -6.27268647	 -0.00061919	  0.00037943	  7.27206728	  0.99810823	  0.99900139  0.49316174
+4997	 -6.27268676	 -0.00061906	  0.00037935	  7.27206770	  0.99810860	  0.99900159  0.49316173
+4998	 -6.27268706	 -0.00061894	  0.00037928	  7.27206812	  0.99810898	  0.99900179  0.49316182
+4999	 -6.27268735	 -0.00061881	  0.00037920	  7.27206854	  0.99810936	  0.99900198  0.49316185
+5000	 -6.27268765	 -0.00061869	  0.00037913	  7.27206896	  0.99810974	  0.99900218  0.49316190
+5001	 -6.27268795	 -0.00061857	  0.00037905	  7.27206938	  0.99811012	  0.99900238  0.49316194
+5002	 -6.27268824	 -0.00061844	  0.00037897	  7.27206980	  0.99811049	  0.99900258  0.49316199
+5003	 -6.27268854	 -0.00061832	  0.00037890	  7.27207022	  0.99811087	  0.99900278  0.49316201
+5004	 -6.27268883	 -0.00061820	  0.00037882	  7.27207064	  0.99811125	  0.99900298  0.49316207
+5005	 -6.27268913	 -0.00061807	  0.00037875	  7.27207106	  0.99811163	  0.99900318  0.49316215
+5006	 -6.27268942	 -0.00061795	  0.00037867	  7.27207147	  0.99811200	  0.99900338  0.49316215
+5007	 -6.27268972	 -0.00061783	  0.00037860	  7.27207189	  0.99811238	  0.99900358  0.49316222
+5008	 -6.27269001	 -0.00061770	  0.00037852	  7.27207231	  0.99811276	  0.99900378  0.49316225
+5009	 -6.27269031	 -0.00061758	  0.00037844	  7.27207273	  0.99811313	  0.99900398  0.49316226
+5010	 -6.27269060	 -0.00061746	  0.00037837	  7.27207315	  0.99811351	  0.99900418  0.49316232
+5011	 -6.27269090	 -0.00061733	  0.00037829	  7.27207356	  0.99811389	  0.99900437  0.49316241
+5012	 -6.27269119	 -0.00061721	  0.00037822	  7.27207398	  0.99811426	  0.99900457  0.49316240
+5013	 -6.27269149	 -0.00061709	  0.00037814	  7.27207440	  0.99811464	  0.99900477  0.49316244
+5014	 -6.27269178	 -0.00061696	  0.00037807	  7.27207482	  0.99811502	  0.99900497  0.49316250
+5015	 -6.27269208	 -0.00061684	  0.00037799	  7.27207523	  0.99811539	  0.99900517  0.49316255
+5016	 -6.27269237	 -0.00061672	  0.00037792	  7.27207565	  0.99811577	  0.99900537  0.49316260
+5017	 -6.27269266	 -0.00061660	  0.00037784	  7.27207607	  0.99811614	  0.99900556  0.49316268
+5018	 -6.27269296	 -0.00061647	  0.00037777	  7.27207648	  0.99811652	  0.99900576  0.49316264
+5019	 -6.27269325	 -0.00061635	  0.00037769	  7.27207690	  0.99811689	  0.99900596  0.49316274
+5020	 -6.27269354	 -0.00061623	  0.00037762	  7.27207732	  0.99811727	  0.99900616  0.49316275
+5021	 -6.27269384	 -0.00061610	  0.00037754	  7.27207773	  0.99811764	  0.99900636  0.49316280
+5022	 -6.27269413	 -0.00061598	  0.00037746	  7.27207815	  0.99811802	  0.99900655  0.49316280
+5023	 -6.27269442	 -0.00061586	  0.00037739	  7.27207857	  0.99811839	  0.99900675  0.49316288
+5024	 -6.27269472	 -0.00061574	  0.00037731	  7.27207898	  0.99811877	  0.99900695  0.49316293
+5025	 -6.27269501	 -0.00061561	  0.00037724	  7.27207940	  0.99811914	  0.99900715  0.49316299
+5026	 -6.27269530	 -0.00061549	  0.00037716	  7.27207981	  0.99811952	  0.99900734  0.49316305
+5027	 -6.27269560	 -0.00061537	  0.00037709	  7.27208023	  0.99811989	  0.99900754  0.49316305
+5028	 -6.27269589	 -0.00061525	  0.00037701	  7.27208064	  0.99812026	  0.99900774  0.49316309
+5029	 -6.27269618	 -0.00061512	  0.00037694	  7.27208106	  0.99812064	  0.99900794  0.49316319
+5030	 -6.27269647	 -0.00061500	  0.00037686	  7.27208147	  0.99812101	  0.99900813  0.49316320
+5031	 -6.27269677	 -0.00061488	  0.00037679	  7.27208189	  0.99812138	  0.99900833  0.49316326
+5032	 -6.27269706	 -0.00061476	  0.00037671	  7.27208230	  0.99812176	  0.99900853  0.49316331
+5033	 -6.27269735	 -0.00061464	  0.00037664	  7.27208271	  0.99812213	  0.99900872  0.49316334
+5034	 -6.27269764	 -0.00061451	  0.00037656	  7.27208313	  0.99812250	  0.99900892  0.49316337
+5035	 -6.27269793	 -0.00061439	  0.00037649	  7.27208354	  0.99812288	  0.99900912  0.49316343
+5036	 -6.27269823	 -0.00061427	  0.00037642	  7.27208396	  0.99812325	  0.99900931  0.49316350
+5037	 -6.27269852	 -0.00061415	  0.00037634	  7.27208437	  0.99812362	  0.99900951  0.49316348
+5038	 -6.27269881	 -0.00061403	  0.00037627	  7.27208478	  0.99812399	  0.99900971  0.49316356
+5039	 -6.27269910	 -0.00061390	  0.00037619	  7.27208520	  0.99812437	  0.99900990  0.49316359
+5040	 -6.27269939	 -0.00061378	  0.00037612	  7.27208561	  0.99812474	  0.99901010  0.49316364
+5041	 -6.27269968	 -0.00061366	  0.00037604	  7.27208602	  0.99812511	  0.99901030  0.49316368
+5042	 -6.27269997	 -0.00061354	  0.00037597	  7.27208643	  0.99812548	  0.99901049  0.49316372
+5043	 -6.27270027	 -0.00061342	  0.00037589	  7.27208685	  0.99812585	  0.99901069  0.49316379
+5044	 -6.27270056	 -0.00061330	  0.00037582	  7.27208726	  0.99812623	  0.99901089  0.49316380
+5045	 -6.27270085	 -0.00061318	  0.00037574	  7.27208767	  0.99812660	  0.99901108  0.49316383
+5046	 -6.27270114	 -0.00061305	  0.00037567	  7.27208808	  0.99812697	  0.99901128  0.49316392
+5047	 -6.27270143	 -0.00061293	  0.00037559	  7.27208850	  0.99812734	  0.99901147  0.49316393
+5048	 -6.27270172	 -0.00061281	  0.00037552	  7.27208891	  0.99812771	  0.99901167  0.49316398
+5049	 -6.27270201	 -0.00061269	  0.00037545	  7.27208932	  0.99812808	  0.99901186  0.49316403
+5050	 -6.27270230	 -0.00061257	  0.00037537	  7.27208973	  0.99812845	  0.99901206  0.49316407
+5051	 -6.27270259	 -0.00061245	  0.00037530	  7.27209014	  0.99812882	  0.99901226  0.49316411
+5052	 -6.27270288	 -0.00061233	  0.00037522	  7.27209055	  0.99812919	  0.99901245  0.49316419
+5053	 -6.27270317	 -0.00061221	  0.00037515	  7.27209096	  0.99812956	  0.99901265  0.49316420
+5054	 -6.27270346	 -0.00061208	  0.00037507	  7.27209137	  0.99812993	  0.99901284  0.49316424
+5055	 -6.27270375	 -0.00061196	  0.00037500	  7.27209178	  0.99813030	  0.99901304  0.49316431
+5056	 -6.27270404	 -0.00061184	  0.00037493	  7.27209219	  0.99813067	  0.99901323  0.49316432
+5057	 -6.27270433	 -0.00061172	  0.00037485	  7.27209260	  0.99813104	  0.99901343  0.49316435
+5058	 -6.27270462	 -0.00061160	  0.00037478	  7.27209301	  0.99813141	  0.99901362  0.49316437
+5059	 -6.27270490	 -0.00061148	  0.00037470	  7.27209342	  0.99813178	  0.99901382  0.49316447
+5060	 -6.27270519	 -0.00061136	  0.00037463	  7.27209383	  0.99813215	  0.99901401  0.49316452
+5061	 -6.27270548	 -0.00061124	  0.00037456	  7.27209424	  0.99813252	  0.99901421  0.49316453
+5062	 -6.27270577	 -0.00061112	  0.00037448	  7.27209465	  0.99813289	  0.99901440  0.49316460
+5063	 -6.27270606	 -0.00061100	  0.00037441	  7.27209506	  0.99813326	  0.99901460  0.49316462
+5064	 -6.27270635	 -0.00061088	  0.00037433	  7.27209547	  0.99813362	  0.99901479  0.49316468
+5065	 -6.27270664	 -0.00061076	  0.00037426	  7.27209588	  0.99813399	  0.99901498  0.49316472
+5066	 -6.27270692	 -0.00061064	  0.00037419	  7.27209629	  0.99813436	  0.99901518  0.49316476
+5067	 -6.27270721	 -0.00061051	  0.00037411	  7.27209670	  0.99813473	  0.99901537  0.49316483
+5068	 -6.27270750	 -0.00061039	  0.00037404	  7.27209711	  0.99813510	  0.99901557  0.49316482
+5069	 -6.27270779	 -0.00061027	  0.00037396	  7.27209751	  0.99813547	  0.99901576  0.49316493
+5070	 -6.27270808	 -0.00061015	  0.00037389	  7.27209792	  0.99813583	  0.99901596  0.49316495
+5071	 -6.27270836	 -0.00061003	  0.00037382	  7.27209833	  0.99813620	  0.99901615  0.49316498
+5072	 -6.27270865	 -0.00060991	  0.00037374	  7.27209874	  0.99813657	  0.99901634  0.49316501
+5073	 -6.27270894	 -0.00060979	  0.00037367	  7.27209915	  0.99813694	  0.99901654  0.49316504
+5074	 -6.27270923	 -0.00060967	  0.00037360	  7.27209955	  0.99813730	  0.99901673  0.49316509
+5075	 -6.27270951	 -0.00060955	  0.00037352	  7.27209996	  0.99813767	  0.99901692  0.49316516
+5076	 -6.27270980	 -0.00060943	  0.00037345	  7.27210037	  0.99813804	  0.99901712  0.49316521
+5077	 -6.27271009	 -0.00060931	  0.00037338	  7.27210078	  0.99813840	  0.99901731  0.49316522
+5078	 -6.27271038	 -0.00060919	  0.00037330	  7.27210118	  0.99813877	  0.99901751  0.49316529
+5079	 -6.27271066	 -0.00060907	  0.00037323	  7.27210159	  0.99813914	  0.99901770  0.49316533
+5080	 -6.27271095	 -0.00060895	  0.00037315	  7.27210200	  0.99813950	  0.99901789  0.49316538
+5081	 -6.27271124	 -0.00060883	  0.00037308	  7.27210240	  0.99813987	  0.99901808  0.49316545
+5082	 -6.27271152	 -0.00060871	  0.00037301	  7.27210281	  0.99814023	  0.99901828  0.49316550
+5083	 -6.27271181	 -0.00060859	  0.00037293	  7.27210321	  0.99814060	  0.99901847  0.49316550
+5084	 -6.27271209	 -0.00060847	  0.00037286	  7.27210362	  0.99814097	  0.99901866  0.49316554
+5085	 -6.27271238	 -0.00060836	  0.00037279	  7.27210403	  0.99814133	  0.99901886  0.49316555
+5086	 -6.27271267	 -0.00060824	  0.00037271	  7.27210443	  0.99814170	  0.99901905  0.49316564
+5087	 -6.27271295	 -0.00060812	  0.00037264	  7.27210484	  0.99814206	  0.99901924  0.49316569
+5088	 -6.27271324	 -0.00060800	  0.00037257	  7.27210524	  0.99814243	  0.99901944  0.49316569
+5089	 -6.27271352	 -0.00060788	  0.00037249	  7.27210565	  0.99814279	  0.99901963  0.49316572
+5090	 -6.27271381	 -0.00060776	  0.00037242	  7.27210605	  0.99814316	  0.99901982  0.49316582
+5091	 -6.27271410	 -0.00060764	  0.00037235	  7.27210646	  0.99814352	  0.99902001  0.49316585
+5092	 -6.27271438	 -0.00060752	  0.00037228	  7.27210686	  0.99814389	  0.99902021  0.49316587
+5093	 -6.27271467	 -0.00060740	  0.00037220	  7.27210727	  0.99814425	  0.99902040  0.49316592
+5094	 -6.27271495	 -0.00060728	  0.00037213	  7.27210767	  0.99814461	  0.99902059  0.49316598
+5095	 -6.27271524	 -0.00060716	  0.00037206	  7.27210807	  0.99814498	  0.99902078  0.49316599
+5096	 -6.27271552	 -0.00060704	  0.00037198	  7.27210848	  0.99814534	  0.99902097  0.49316604
+5097	 -6.27271581	 -0.00060692	  0.00037191	  7.27210888	  0.99814571	  0.99902117  0.49316608
+5098	 -6.27271609	 -0.00060680	  0.00037184	  7.27210929	  0.99814607	  0.99902136  0.49316611
+5099	 -6.27271637	 -0.00060669	  0.00037176	  7.27210969	  0.99814643	  0.99902155  0.49316616
+5100	 -6.27271666	 -0.00060657	  0.00037169	  7.27211009	  0.99814680	  0.99902174  0.49316618
+5101	 -6.27271694	 -0.00060645	  0.00037162	  7.27211050	  0.99814716	  0.99902193  0.49316624
+5102	 -6.27271723	 -0.00060633	  0.00037155	  7.27211090	  0.99814752	  0.99902213  0.49316630
+5103	 -6.27271751	 -0.00060621	  0.00037147	  7.27211130	  0.99814789	  0.99902232  0.49316633
+5104	 -6.27271780	 -0.00060609	  0.00037140	  7.27211170	  0.99814825	  0.99902251  0.49316640
+5105	 -6.27271808	 -0.00060597	  0.00037133	  7.27211211	  0.99814861	  0.99902270  0.49316642
+5106	 -6.27271836	 -0.00060585	  0.00037125	  7.27211251	  0.99814897	  0.99902289  0.49316649
+5107	 -6.27271865	 -0.00060574	  0.00037118	  7.27211291	  0.99814934	  0.99902308  0.49316653
+5108	 -6.27271893	 -0.00060562	  0.00037111	  7.27211331	  0.99814970	  0.99902327  0.49316657
+5109	 -6.27271921	 -0.00060550	  0.00037104	  7.27211371	  0.99815006	  0.99902346  0.49316659
+5110	 -6.27271950	 -0.00060538	  0.00037096	  7.27211412	  0.99815042	  0.99902366  0.49316664
+5111	 -6.27271978	 -0.00060526	  0.00037089	  7.27211452	  0.99815079	  0.99902385  0.49316670
+5112	 -6.27272006	 -0.00060514	  0.00037082	  7.27211492	  0.99815115	  0.99902404  0.49316670
+5113	 -6.27272035	 -0.00060503	  0.00037075	  7.27211532	  0.99815151	  0.99902423  0.49316673
+5114	 -6.27272063	 -0.00060491	  0.00037067	  7.27211572	  0.99815187	  0.99902442  0.49316679
+5115	 -6.27272091	 -0.00060479	  0.00037060	  7.27211612	  0.99815223	  0.99902461  0.49316685
+5116	 -6.27272120	 -0.00060467	  0.00037053	  7.27211652	  0.99815259	  0.99902480  0.49316688
+5117	 -6.27272148	 -0.00060455	  0.00037046	  7.27211692	  0.99815295	  0.99902499  0.49316692
+5118	 -6.27272176	 -0.00060444	  0.00037038	  7.27211732	  0.99815331	  0.99902518  0.49316699
+5119	 -6.27272204	 -0.00060432	  0.00037031	  7.27211773	  0.99815367	  0.99902537  0.49316698
+5120	 -6.27272232	 -0.00060420	  0.00037024	  7.27211813	  0.99815404	  0.99902556  0.49316707
+5121	 -6.27272261	 -0.00060408	  0.00037017	  7.27211853	  0.99815440	  0.99902575  0.49316710
+5122	 -6.27272289	 -0.00060396	  0.00037009	  7.27211893	  0.99815476	  0.99902594  0.49316715
+5123	 -6.27272317	 -0.00060385	  0.00037002	  7.27211933	  0.99815512	  0.99902613  0.49316718
+5124	 -6.27272345	 -0.00060373	  0.00036995	  7.27211972	  0.99815548	  0.99902632  0.49316722
+5125	 -6.27272373	 -0.00060361	  0.00036988	  7.27212012	  0.99815584	  0.99902651  0.49316726
+5126	 -6.27272402	 -0.00060349	  0.00036981	  7.27212052	  0.99815620	  0.99902670  0.49316729
+5127	 -6.27272430	 -0.00060337	  0.00036973	  7.27212092	  0.99815656	  0.99902689  0.49316735
+5128	 -6.27272458	 -0.00060326	  0.00036966	  7.27212132	  0.99815691	  0.99902708  0.49316741
+5129	 -6.27272486	 -0.00060314	  0.00036959	  7.27212172	  0.99815727	  0.99902727  0.49316741
+5130	 -6.27272514	 -0.00060302	  0.00036952	  7.27212212	  0.99815763	  0.99902746  0.49316748
+5131	 -6.27272542	 -0.00060290	  0.00036945	  7.27212252	  0.99815799	  0.99902765  0.49316753
+5132	 -6.27272570	 -0.00060279	  0.00036937	  7.27212292	  0.99815835	  0.99902784  0.49316756
+5133	 -6.27272598	 -0.00060267	  0.00036930	  7.27212331	  0.99815871	  0.99902803  0.49316761
+5134	 -6.27272626	 -0.00060255	  0.00036923	  7.27212371	  0.99815907	  0.99902822  0.49316767
+5135	 -6.27272654	 -0.00060244	  0.00036916	  7.27212411	  0.99815943	  0.99902841  0.49316768
+5136	 -6.27272683	 -0.00060232	  0.00036909	  7.27212451	  0.99815978	  0.99902860  0.49316772
+5137	 -6.27272711	 -0.00060220	  0.00036901	  7.27212490	  0.99816014	  0.99902879  0.49316778
+5138	 -6.27272739	 -0.00060208	  0.00036894	  7.27212530	  0.99816050	  0.99902897  0.49316778
+5139	 -6.27272767	 -0.00060197	  0.00036887	  7.27212570	  0.99816086	  0.99902916  0.49316783
+5140	 -6.27272795	 -0.00060185	  0.00036880	  7.27212610	  0.99816122	  0.99902935  0.49316788
+5141	 -6.27272823	 -0.00060173	  0.00036873	  7.27212649	  0.99816157	  0.99902954  0.49316787
+5142	 -6.27272851	 -0.00060162	  0.00036865	  7.27212689	  0.99816193	  0.99902973  0.49316799
+5143	 -6.27272879	 -0.00060150	  0.00036858	  7.27212729	  0.99816229	  0.99902992  0.49316801
+5144	 -6.27272907	 -0.00060138	  0.00036851	  7.27212768	  0.99816265	  0.99903011  0.49316805
+5145	 -6.27272934	 -0.00060127	  0.00036844	  7.27212808	  0.99816300	  0.99903029  0.49316810
+5146	 -6.27272962	 -0.00060115	  0.00036837	  7.27212848	  0.99816336	  0.99903048  0.49316812
+5147	 -6.27272990	 -0.00060103	  0.00036830	  7.27212887	  0.99816372	  0.99903067  0.49316815
+5148	 -6.27273018	 -0.00060092	  0.00036823	  7.27212927	  0.99816407	  0.99903086  0.49316824
+5149	 -6.27273046	 -0.00060080	  0.00036815	  7.27212966	  0.99816443	  0.99903105  0.49316825
+5150	 -6.27273074	 -0.00060068	  0.00036808	  7.27213006	  0.99816479	  0.99903124  0.49316832
+5151	 -6.27273102	 -0.00060057	  0.00036801	  7.27213045	  0.99816514	  0.99903142  0.49316835
+5152	 -6.27273130	 -0.00060045	  0.00036794	  7.27213085	  0.99816550	  0.99903161  0.49316839
+5153	 -6.27273158	 -0.00060033	  0.00036787	  7.27213124	  0.99816585	  0.99903180  0.49316844
+5154	 -6.27273186	 -0.00060022	  0.00036780	  7.27213164	  0.99816621	  0.99903199  0.49316848
+5155	 -6.27273213	 -0.00060010	  0.00036773	  7.27213203	  0.99816657	  0.99903218  0.49316850
+5156	 -6.27273241	 -0.00059998	  0.00036765	  7.27213243	  0.99816692	  0.99903236  0.49316856
+5157	 -6.27273269	 -0.00059987	  0.00036758	  7.27213282	  0.99816728	  0.99903255  0.49316861
+5158	 -6.27273297	 -0.00059975	  0.00036751	  7.27213322	  0.99816763	  0.99903274  0.49316864
+5159	 -6.27273325	 -0.00059963	  0.00036744	  7.27213361	  0.99816799	  0.99903293  0.49316869
+5160	 -6.27273352	 -0.00059952	  0.00036737	  7.27213401	  0.99816834	  0.99903311  0.49316872
+5161	 -6.27273380	 -0.00059940	  0.00036730	  7.27213440	  0.99816870	  0.99903330  0.49316876
+5162	 -6.27273408	 -0.00059929	  0.00036723	  7.27213479	  0.99816905	  0.99903349  0.49316877
+5163	 -6.27273436	 -0.00059917	  0.00036716	  7.27213519	  0.99816941	  0.99903367  0.49316887
+5164	 -6.27273463	 -0.00059905	  0.00036708	  7.27213558	  0.99816976	  0.99903386  0.49316888
+5165	 -6.27273491	 -0.00059894	  0.00036701	  7.27213597	  0.99817012	  0.99903405  0.49316895
+5166	 -6.27273519	 -0.00059882	  0.00036694	  7.27213637	  0.99817047	  0.99903424  0.49316897
+5167	 -6.27273547	 -0.00059871	  0.00036687	  7.27213676	  0.99817082	  0.99903442  0.49316901
+5168	 -6.27273574	 -0.00059859	  0.00036680	  7.27213715	  0.99817118	  0.99903461  0.49316906
+5169	 -6.27273602	 -0.00059848	  0.00036673	  7.27213754	  0.99817153	  0.99903480  0.49316911
+5170	 -6.27273630	 -0.00059836	  0.00036666	  7.27213794	  0.99817189	  0.99903498  0.49316913
+5171	 -6.27273657	 -0.00059824	  0.00036659	  7.27213833	  0.99817224	  0.99903517  0.49316914
+5172	 -6.27273685	 -0.00059813	  0.00036652	  7.27213872	  0.99817259	  0.99903535  0.49316924
+5173	 -6.27273713	 -0.00059801	  0.00036645	  7.27213911	  0.99817295	  0.99903554  0.49316926
+5174	 -6.27273740	 -0.00059790	  0.00036637	  7.27213951	  0.99817330	  0.99903573  0.49316930
+5175	 -6.27273768	 -0.00059778	  0.00036630	  7.27213990	  0.99817365	  0.99903591  0.49316938
+5176	 -6.27273796	 -0.00059767	  0.00036623	  7.27214029	  0.99817400	  0.99903610  0.49316938
+5177	 -6.27273823	 -0.00059755	  0.00036616	  7.27214068	  0.99817436	  0.99903629  0.49316938
+5178	 -6.27273851	 -0.00059744	  0.00036609	  7.27214107	  0.99817471	  0.99903647  0.49316946
+5179	 -6.27273878	 -0.00059732	  0.00036602	  7.27214146	  0.99817506	  0.99903666  0.49316948
+5180	 -6.27273906	 -0.00059721	  0.00036595	  7.27214185	  0.99817541	  0.99903684  0.49316954
+5181	 -6.27273933	 -0.00059709	  0.00036588	  7.27214224	  0.99817577	  0.99903703  0.49316961
+5182	 -6.27273961	 -0.00059698	  0.00036581	  7.27214263	  0.99817612	  0.99903722  0.49316964
+5183	 -6.27273989	 -0.00059686	  0.00036574	  7.27214303	  0.99817647	  0.99903740  0.49316966
+5184	 -6.27274016	 -0.00059674	  0.00036567	  7.27214342	  0.99817682	  0.99903759  0.49316973
+5185	 -6.27274044	 -0.00059663	  0.00036560	  7.27214381	  0.99817717	  0.99903777  0.49316976
+5186	 -6.27274071	 -0.00059651	  0.00036553	  7.27214420	  0.99817752	  0.99903796  0.49316978
+5187	 -6.27274099	 -0.00059640	  0.00036546	  7.27214459	  0.99817788	  0.99903814  0.49316985
+5188	 -6.27274126	 -0.00059629	  0.00036539	  7.27214498	  0.99817823	  0.99903833  0.49316985
+5189	 -6.27274154	 -0.00059617	  0.00036532	  7.27214537	  0.99817858	  0.99903851  0.49316990
+5190	 -6.27274181	 -0.00059606	  0.00036525	  7.27214575	  0.99817893	  0.99903870  0.49316996
+5191	 -6.27274208	 -0.00059594	  0.00036517	  7.27214614	  0.99817928	  0.99903888  0.49317001
+5192	 -6.27274236	 -0.00059583	  0.00036510	  7.27214653	  0.99817963	  0.99903907  0.49317000
+5193	 -6.27274263	 -0.00059571	  0.00036503	  7.27214692	  0.99817998	  0.99903925  0.49317004
+5194	 -6.27274291	 -0.00059560	  0.00036496	  7.27214731	  0.99818033	  0.99903944  0.49317008
+5195	 -6.27274318	 -0.00059548	  0.00036489	  7.27214770	  0.99818068	  0.99903962  0.49317014
+5196	 -6.27274346	 -0.00059537	  0.00036482	  7.27214809	  0.99818103	  0.99903981  0.49317022
+5197	 -6.27274373	 -0.00059525	  0.00036475	  7.27214848	  0.99818138	  0.99903999  0.49317024
+5198	 -6.27274400	 -0.00059514	  0.00036468	  7.27214886	  0.99818173	  0.99904018  0.49317029
+5199	 -6.27274428	 -0.00059502	  0.00036461	  7.27214925	  0.99818208	  0.99904036  0.49317032
+5200	 -6.27274455	 -0.00059491	  0.00036454	  7.27214964	  0.99818243	  0.99904055  0.49317037
+5201	 -6.27274482	 -0.00059480	  0.00036447	  7.27215003	  0.99818278	  0.99904073  0.49317042
+5202	 -6.27274510	 -0.00059468	  0.00036440	  7.27215042	  0.99818313	  0.99904092  0.49317048
+5203	 -6.27274537	 -0.00059457	  0.00036433	  7.27215080	  0.99818348	  0.99904110  0.49317047
+5204	 -6.27274564	 -0.00059445	  0.00036426	  7.27215119	  0.99818383	  0.99904128  0.49317056
+5205	 -6.27274592	 -0.00059434	  0.00036419	  7.27215158	  0.99818418	  0.99904147  0.49317055
+5206	 -6.27274619	 -0.00059422	  0.00036412	  7.27215197	  0.99818452	  0.99904165  0.49317062
+5207	 -6.27274646	 -0.00059411	  0.00036405	  7.27215235	  0.99818487	  0.99904184  0.49317064
+5208	 -6.27274674	 -0.00059400	  0.00036398	  7.27215274	  0.99818522	  0.99904202  0.49317066
+5209	 -6.27274701	 -0.00059388	  0.00036391	  7.27215313	  0.99818557	  0.99904220  0.49317073
+5210	 -6.27274728	 -0.00059377	  0.00036384	  7.27215351	  0.99818592	  0.99904239  0.49317076
+5211	 -6.27274755	 -0.00059365	  0.00036377	  7.27215390	  0.99818627	  0.99904257  0.49317082
+5212	 -6.27274783	 -0.00059354	  0.00036370	  7.27215428	  0.99818661	  0.99904276  0.49317086
+5213	 -6.27274810	 -0.00059343	  0.00036363	  7.27215467	  0.99818696	  0.99904294  0.49317091
+5214	 -6.27274837	 -0.00059331	  0.00036356	  7.27215506	  0.99818731	  0.99904312  0.49317096
+5215	 -6.27274864	 -0.00059320	  0.00036349	  7.27215544	  0.99818766	  0.99904331  0.49317092
+5216	 -6.27274891	 -0.00059309	  0.00036342	  7.27215583	  0.99818800	  0.99904349  0.49317097
+5217	 -6.27274919	 -0.00059297	  0.00036335	  7.27215621	  0.99818835	  0.99904367  0.49317108
+5218	 -6.27274946	 -0.00059286	  0.00036329	  7.27215660	  0.99818870	  0.99904386  0.49317108
+5219	 -6.27274973	 -0.00059275	  0.00036322	  7.27215698	  0.99818905	  0.99904404  0.49317113
+5220	 -6.27275000	 -0.00059263	  0.00036315	  7.27215737	  0.99818939	  0.99904422  0.49317119
+5221	 -6.27275027	 -0.00059252	  0.00036308	  7.27215775	  0.99818974	  0.99904440  0.49317125
+5222	 -6.27275054	 -0.00059241	  0.00036301	  7.27215814	  0.99819009	  0.99904459  0.49317124
+5223	 -6.27275081	 -0.00059229	  0.00036294	  7.27215852	  0.99819043	  0.99904477  0.49317130
+5224	 -6.27275109	 -0.00059218	  0.00036287	  7.27215891	  0.99819078	  0.99904495  0.49317131
+5225	 -6.27275136	 -0.00059207	  0.00036280	  7.27215929	  0.99819113	  0.99904514  0.49317136
+5226	 -6.27275163	 -0.00059195	  0.00036273	  7.27215968	  0.99819147	  0.99904532  0.49317137
+5227	 -6.27275190	 -0.00059184	  0.00036266	  7.27216006	  0.99819182	  0.99904550  0.49317148
+5228	 -6.27275217	 -0.00059173	  0.00036259	  7.27216044	  0.99819216	  0.99904568  0.49317152
+5229	 -6.27275244	 -0.00059161	  0.00036252	  7.27216083	  0.99819251	  0.99904587  0.49317157
+5230	 -6.27275271	 -0.00059150	  0.00036245	  7.27216121	  0.99819285	  0.99904605  0.49317157
+5231	 -6.27275298	 -0.00059139	  0.00036238	  7.27216159	  0.99819320	  0.99904623  0.49317163
+5232	 -6.27275325	 -0.00059127	  0.00036231	  7.27216198	  0.99819355	  0.99904641  0.49317168
+5233	 -6.27275352	 -0.00059116	  0.00036224	  7.27216236	  0.99819389	  0.99904660  0.49317166
+5234	 -6.27275379	 -0.00059105	  0.00036217	  7.27216274	  0.99819424	  0.99904678  0.49317177
+5235	 -6.27275406	 -0.00059094	  0.00036211	  7.27216313	  0.99819458	  0.99904696  0.49317179
+5236	 -6.27275433	 -0.00059082	  0.00036204	  7.27216351	  0.99819493	  0.99904714  0.49317185
+5237	 -6.27275460	 -0.00059071	  0.00036197	  7.27216389	  0.99819527	  0.99904732  0.49317189
+5238	 -6.27275487	 -0.00059060	  0.00036190	  7.27216427	  0.99819561	  0.99904751  0.49317188
+5239	 -6.27275514	 -0.00059048	  0.00036183	  7.27216466	  0.99819596	  0.99904769  0.49317197
+5240	 -6.27275541	 -0.00059037	  0.00036176	  7.27216504	  0.99819630	  0.99904787  0.49317199
+5241	 -6.27275568	 -0.00059026	  0.00036169	  7.27216542	  0.99819665	  0.99904805  0.49317206
+5242	 -6.27275595	 -0.00059015	  0.00036162	  7.27216580	  0.99819699	  0.99904823  0.49317206
+5243	 -6.27275622	 -0.00059003	  0.00036155	  7.27216618	  0.99819733	  0.99904841  0.49317210
+5244	 -6.27275649	 -0.00058992	  0.00036148	  7.27216656	  0.99819768	  0.99904859  0.49317215
+5245	 -6.27275675	 -0.00058981	  0.00036141	  7.27216695	  0.99819802	  0.99904878  0.49317218
+5246	 -6.27275702	 -0.00058970	  0.00036135	  7.27216733	  0.99819837	  0.99904896  0.49317220
+5247	 -6.27275729	 -0.00058958	  0.00036128	  7.27216771	  0.99819871	  0.99904914  0.49317224
+5248	 -6.27275756	 -0.00058947	  0.00036121	  7.27216809	  0.99819905	  0.99904932  0.49317231
+5249	 -6.27275783	 -0.00058936	  0.00036114	  7.27216847	  0.99819939	  0.99904950  0.49317228
+5250	 -6.27275810	 -0.00058925	  0.00036107	  7.27216885	  0.99819974	  0.99904968  0.49317238
+5251	 -6.27275837	 -0.00058914	  0.00036100	  7.27216923	  0.99820008	  0.99904986  0.49317241
+5252	 -6.27275863	 -0.00058902	  0.00036093	  7.27216961	  0.99820042	  0.99905004  0.49317245
+5253	 -6.27275890	 -0.00058891	  0.00036086	  7.27216999	  0.99820077	  0.99905022  0.49317253
+5254	 -6.27275917	 -0.00058880	  0.00036080	  7.27217037	  0.99820111	  0.99905040  0.49317256
+5255	 -6.27275944	 -0.00058869	  0.00036073	  7.27217075	  0.99820145	  0.99905059  0.49317260
+5256	 -6.27275971	 -0.00058858	  0.00036066	  7.27217113	  0.99820179	  0.99905077  0.49317263
+5257	 -6.27275997	 -0.00058846	  0.00036059	  7.27217151	  0.99820213	  0.99905095  0.49317270
+5258	 -6.27276024	 -0.00058835	  0.00036052	  7.27217189	  0.99820248	  0.99905113  0.49317272
+5259	 -6.27276051	 -0.00058824	  0.00036045	  7.27217227	  0.99820282	  0.99905131  0.49317275
+5260	 -6.27276078	 -0.00058813	  0.00036038	  7.27217265	  0.99820316	  0.99905149  0.49317277
+5261	 -6.27276104	 -0.00058802	  0.00036032	  7.27217303	  0.99820350	  0.99905167  0.49317281
+5262	 -6.27276131	 -0.00058790	  0.00036025	  7.27217341	  0.99820384	  0.99905185  0.49317287
+5263	 -6.27276158	 -0.00058779	  0.00036018	  7.27217378	  0.99820418	  0.99905203  0.49317289
+5264	 -6.27276184	 -0.00058768	  0.00036011	  7.27217416	  0.99820453	  0.99905221  0.49317299
+5265	 -6.27276211	 -0.00058757	  0.00036004	  7.27217454	  0.99820487	  0.99905239  0.49317296
+5266	 -6.27276238	 -0.00058746	  0.00035997	  7.27217492	  0.99820521	  0.99905257  0.49317302
+5267	 -6.27276265	 -0.00058735	  0.00035991	  7.27217530	  0.99820555	  0.99905275  0.49317307
+5268	 -6.27276291	 -0.00058724	  0.00035984	  7.27217568	  0.99820589	  0.99905293  0.49317310
+5269	 -6.27276318	 -0.00058712	  0.00035977	  7.27217605	  0.99820623	  0.99905311  0.49317316
+5270	 -6.27276344	 -0.00058701	  0.00035970	  7.27217643	  0.99820657	  0.99905329  0.49317319
+5271	 -6.27276371	 -0.00058690	  0.00035963	  7.27217681	  0.99820691	  0.99905347  0.49317321
+5272	 -6.27276398	 -0.00058679	  0.00035956	  7.27217719	  0.99820725	  0.99905365  0.49317328
+5273	 -6.27276424	 -0.00058668	  0.00035950	  7.27217756	  0.99820759	  0.99905383  0.49317329
+5274	 -6.27276451	 -0.00058657	  0.00035943	  7.27217794	  0.99820793	  0.99905400  0.49317335
+5275	 -6.27276478	 -0.00058646	  0.00035936	  7.27217832	  0.99820827	  0.99905418  0.49317337
+5276	 -6.27276504	 -0.00058635	  0.00035929	  7.27217870	  0.99820861	  0.99905436  0.49317339
+5277	 -6.27276531	 -0.00058623	  0.00035922	  7.27217907	  0.99820895	  0.99905454  0.49317346
+5278	 -6.27276557	 -0.00058612	  0.00035916	  7.27217945	  0.99820929	  0.99905472  0.49317350
+5279	 -6.27276584	 -0.00058601	  0.00035909	  7.27217982	  0.99820963	  0.99905490  0.49317354
+5280	 -6.27276610	 -0.00058590	  0.00035902	  7.27218020	  0.99820997	  0.99905508  0.49317358
+5281	 -6.27276637	 -0.00058579	  0.00035895	  7.27218058	  0.99821030	  0.99905526  0.49317361
+5282	 -6.27276663	 -0.00058568	  0.00035888	  7.27218095	  0.99821064	  0.99905544  0.49317361
+5283	 -6.27276690	 -0.00058557	  0.00035882	  7.27218133	  0.99821098	  0.99905562  0.49317370
+5284	 -6.27276716	 -0.00058546	  0.00035875	  7.27218170	  0.99821132	  0.99905579  0.49317372
+5285	 -6.27276743	 -0.00058535	  0.00035868	  7.27218208	  0.99821166	  0.99905597  0.49317378
+5286	 -6.27276769	 -0.00058524	  0.00035861	  7.27218246	  0.99821200	  0.99905615  0.49317376
+5287	 -6.27276796	 -0.00058513	  0.00035854	  7.27218283	  0.99821233	  0.99905633  0.49317387
+5288	 -6.27276822	 -0.00058502	  0.00035848	  7.27218321	  0.99821267	  0.99905651  0.49317387
+5289	 -6.27276849	 -0.00058491	  0.00035841	  7.27218358	  0.99821301	  0.99905669  0.49317394
+5290	 -6.27276875	 -0.00058480	  0.00035834	  7.27218396	  0.99821335	  0.99905686  0.49317397
+5291	 -6.27276902	 -0.00058468	  0.00035827	  7.27218433	  0.99821369	  0.99905704  0.49317398
+5292	 -6.27276928	 -0.00058457	  0.00035820	  7.27218471	  0.99821402	  0.99905722  0.49317402
+5293	 -6.27276954	 -0.00058446	  0.00035814	  7.27218508	  0.99821436	  0.99905740  0.49317408
+5294	 -6.27276981	 -0.00058435	  0.00035807	  7.27218545	  0.99821470	  0.99905758  0.49317410
+5295	 -6.27277007	 -0.00058424	  0.00035800	  7.27218583	  0.99821504	  0.99905775  0.49317417
+5296	 -6.27277034	 -0.00058413	  0.00035793	  7.27218620	  0.99821537	  0.99905793  0.49317422
+5297	 -6.27277060	 -0.00058402	  0.00035787	  7.27218658	  0.99821571	  0.99905811  0.49317425
+5298	 -6.27277086	 -0.00058391	  0.00035780	  7.27218695	  0.99821605	  0.99905829  0.49317429
+5299	 -6.27277113	 -0.00058380	  0.00035773	  7.27218732	  0.99821638	  0.99905847  0.49317428
+5300	 -6.27277139	 -0.00058369	  0.00035766	  7.27218770	  0.99821672	  0.99905864  0.49317437
+5301	 -6.27277165	 -0.00058358	  0.00035760	  7.27218807	  0.99821706	  0.99905882  0.49317446
+5302	 -6.27277192	 -0.00058347	  0.00035753	  7.27218844	  0.99821739	  0.99905900  0.49317445
+5303	 -6.27277218	 -0.00058336	  0.00035746	  7.27218882	  0.99821773	  0.99905918  0.49317449
+5304	 -6.27277244	 -0.00058325	  0.00035739	  7.27218919	  0.99821806	  0.99905935  0.49317453
+5305	 -6.27277270	 -0.00058314	  0.00035733	  7.27218956	  0.99821840	  0.99905953  0.49317457
+5306	 -6.27277297	 -0.00058303	  0.00035726	  7.27218993	  0.99821874	  0.99905971  0.49317458
+5307	 -6.27277323	 -0.00058292	  0.00035719	  7.27219031	  0.99821907	  0.99905988  0.49317467
+5308	 -6.27277349	 -0.00058281	  0.00035712	  7.27219068	  0.99821941	  0.99906006  0.49317464
+5309	 -6.27277376	 -0.00058270	  0.00035706	  7.27219105	  0.99821974	  0.99906024  0.49317472
+5310	 -6.27277402	 -0.00058259	  0.00035699	  7.27219142	  0.99822008	  0.99906042  0.49317476
+5311	 -6.27277428	 -0.00058248	  0.00035692	  7.27219180	  0.99822041	  0.99906059  0.49317478
+5312	 -6.27277454	 -0.00058237	  0.00035686	  7.27219217	  0.99822075	  0.99906077  0.49317481
+5313	 -6.27277480	 -0.00058227	  0.00035679	  7.27219254	  0.99822108	  0.99906095  0.49317486
+5314	 -6.27277507	 -0.00058216	  0.00035672	  7.27219291	  0.99822142	  0.99906112  0.49317492
+5315	 -6.27277533	 -0.00058205	  0.00035665	  7.27219328	  0.99822175	  0.99906130  0.49317497
+5316	 -6.27277559	 -0.00058194	  0.00035659	  7.27219365	  0.99822209	  0.99906148  0.49317500
+5317	 -6.27277585	 -0.00058183	  0.00035652	  7.27219402	  0.99822242	  0.99906165  0.49317504
+5318	 -6.27277611	 -0.00058172	  0.00035645	  7.27219440	  0.99822275	  0.99906183  0.49317502
+5319	 -6.27277637	 -0.00058161	  0.00035639	  7.27219477	  0.99822309	  0.99906200  0.49317510
+5320	 -6.27277664	 -0.00058150	  0.00035632	  7.27219514	  0.99822342	  0.99906218  0.49317515
+5321	 -6.27277690	 -0.00058139	  0.00035625	  7.27219551	  0.99822376	  0.99906236  0.49317515
+5322	 -6.27277716	 -0.00058128	  0.00035619	  7.27219588	  0.99822409	  0.99906253  0.49317527
+5323	 -6.27277742	 -0.00058117	  0.00035612	  7.27219625	  0.99822442	  0.99906271  0.49317521
+5324	 -6.27277768	 -0.00058106	  0.00035605	  7.27219662	  0.99822476	  0.99906289  0.49317533
+5325	 -6.27277794	 -0.00058095	  0.00035598	  7.27219699	  0.99822509	  0.99906306  0.49317536
+5326	 -6.27277820	 -0.00058084	  0.00035592	  7.27219736	  0.99822542	  0.99906324  0.49317532
+5327	 -6.27277846	 -0.00058074	  0.00035585	  7.27219773	  0.99822576	  0.99906341  0.49317542
+5328	 -6.27277872	 -0.00058063	  0.00035578	  7.27219810	  0.99822609	  0.99906359  0.49317544
+5329	 -6.27277898	 -0.00058052	  0.00035572	  7.27219847	  0.99822642	  0.99906376  0.49317549
+5330	 -6.27277924	 -0.00058041	  0.00035565	  7.27219884	  0.99822675	  0.99906394  0.49317552
+5331	 -6.27277950	 -0.00058030	  0.00035558	  7.27219920	  0.99822709	  0.99906412  0.49317558
+5332	 -6.27277977	 -0.00058019	  0.00035552	  7.27219957	  0.99822742	  0.99906429  0.49317562
+5333	 -6.27278003	 -0.00058008	  0.00035545	  7.27219994	  0.99822775	  0.99906447  0.49317566
+5334	 -6.27278029	 -0.00057997	  0.00035538	  7.27220031	  0.99822808	  0.99906464  0.49317568
+5335	 -6.27278055	 -0.00057987	  0.00035532	  7.27220068	  0.99822842	  0.99906482  0.49317573
+5336	 -6.27278080	 -0.00057976	  0.00035525	  7.27220105	  0.99822875	  0.99906499  0.49317574
+5337	 -6.27278106	 -0.00057965	  0.00035518	  7.27220142	  0.99822908	  0.99906517  0.49317581
+5338	 -6.27278132	 -0.00057954	  0.00035512	  7.27220178	  0.99822941	  0.99906534  0.49317584
+5339	 -6.27278158	 -0.00057943	  0.00035505	  7.27220215	  0.99822974	  0.99906552  0.49317591
+5340	 -6.27278184	 -0.00057932	  0.00035498	  7.27220252	  0.99823008	  0.99906569  0.49317591
+5341	 -6.27278210	 -0.00057921	  0.00035492	  7.27220289	  0.99823041	  0.99906587  0.49317595
+5342	 -6.27278236	 -0.00057911	  0.00035485	  7.27220326	  0.99823074	  0.99906604  0.49317597
+5343	 -6.27278262	 -0.00057900	  0.00035479	  7.27220362	  0.99823107	  0.99906622  0.49317601
+5344	 -6.27278288	 -0.00057889	  0.00035472	  7.27220399	  0.99823140	  0.99906639  0.49317609
+5345	 -6.27278314	 -0.00057878	  0.00035465	  7.27220436	  0.99823173	  0.99906657  0.49317610
+5346	 -6.27278340	 -0.00057867	  0.00035459	  7.27220472	  0.99823206	  0.99906674  0.49317615
+5347	 -6.27278366	 -0.00057857	  0.00035452	  7.27220509	  0.99823239	  0.99906691  0.49317621
+5348	 -6.27278392	 -0.00057846	  0.00035445	  7.27220546	  0.99823272	  0.99906709  0.49317622
+5349	 -6.27278417	 -0.00057835	  0.00035439	  7.27220582	  0.99823305	  0.99906726  0.49317632
+5350	 -6.27278443	 -0.00057824	  0.00035432	  7.27220619	  0.99823338	  0.99906744  0.49317629
+5351	 -6.27278469	 -0.00057813	  0.00035425	  7.27220656	  0.99823371	  0.99906761  0.49317636
+5352	 -6.27278495	 -0.00057802	  0.00035419	  7.27220692	  0.99823404	  0.99906779  0.49317638
+5353	 -6.27278521	 -0.00057792	  0.00035412	  7.27220729	  0.99823437	  0.99906796  0.49317641
+5354	 -6.27278547	 -0.00057781	  0.00035406	  7.27220766	  0.99823470	  0.99906813  0.49317644
+5355	 -6.27278572	 -0.00057770	  0.00035399	  7.27220802	  0.99823503	  0.99906831  0.49317646
+5356	 -6.27278598	 -0.00057759	  0.00035392	  7.27220839	  0.99823536	  0.99906848  0.49317651
+5357	 -6.27278624	 -0.00057749	  0.00035386	  7.27220875	  0.99823569	  0.99906866  0.49317654
+5358	 -6.27278650	 -0.00057738	  0.00035379	  7.27220912	  0.99823602	  0.99906883  0.49317660
+5359	 -6.27278675	 -0.00057727	  0.00035373	  7.27220948	  0.99823635	  0.99906900  0.49317666
+5360	 -6.27278701	 -0.00057716	  0.00035366	  7.27220985	  0.99823668	  0.99906918  0.49317668
+5361	 -6.27278727	 -0.00057706	  0.00035359	  7.27221021	  0.99823701	  0.99906935  0.49317676
+5362	 -6.27278753	 -0.00057695	  0.00035353	  7.27221058	  0.99823734	  0.99906952  0.49317676
+5363	 -6.27278778	 -0.00057684	  0.00035346	  7.27221094	  0.99823766	  0.99906970  0.49317678
+5364	 -6.27278804	 -0.00057673	  0.00035340	  7.27221131	  0.99823799	  0.99906987  0.49317683
+5365	 -6.27278830	 -0.00057663	  0.00035333	  7.27221167	  0.99823832	  0.99907004  0.49317687
+5366	 -6.27278855	 -0.00057652	  0.00035326	  7.27221204	  0.99823865	  0.99907022  0.49317691
+5367	 -6.27278881	 -0.00057641	  0.00035320	  7.27221240	  0.99823898	  0.99907039  0.49317697
+5368	 -6.27278907	 -0.00057630	  0.00035313	  7.27221277	  0.99823931	  0.99907056  0.49317699
+5369	 -6.27278933	 -0.00057620	  0.00035307	  7.27221313	  0.99823963	  0.99907074  0.49317702
+5370	 -6.27278958	 -0.00057609	  0.00035300	  7.27221349	  0.99823996	  0.99907091  0.49317708
+5371	 -6.27278984	 -0.00057598	  0.00035294	  7.27221386	  0.99824029	  0.99907108  0.49317710
+5372	 -6.27279009	 -0.00057587	  0.00035287	  7.27221422	  0.99824062	  0.99907126  0.49317717
+5373	 -6.27279035	 -0.00057577	  0.00035280	  7.27221458	  0.99824094	  0.99907143  0.49317720
+5374	 -6.27279061	 -0.00057566	  0.00035274	  7.27221495	  0.99824127	  0.99907160  0.49317720
+5375	 -6.27279086	 -0.00057555	  0.00035267	  7.27221531	  0.99824160	  0.99907177  0.49317727
+5376	 -6.27279112	 -0.00057545	  0.00035261	  7.27221567	  0.99824193	  0.99907195  0.49317735
+5377	 -6.27279137	 -0.00057534	  0.00035254	  7.27221604	  0.99824225	  0.99907212  0.49317732
+5378	 -6.27279163	 -0.00057523	  0.00035248	  7.27221640	  0.99824258	  0.99907229  0.49317739
+5379	 -6.27279189	 -0.00057513	  0.00035241	  7.27221676	  0.99824291	  0.99907246  0.49317738
+5380	 -6.27279214	 -0.00057502	  0.00035235	  7.27221712	  0.99824323	  0.99907264  0.49317745
+5381	 -6.27279240	 -0.00057491	  0.00035228	  7.27221749	  0.99824356	  0.99907281  0.49317748
+5382	 -6.27279265	 -0.00057480	  0.00035221	  7.27221785	  0.99824389	  0.99907298  0.49317752
+5383	 -6.27279291	 -0.00057470	  0.00035215	  7.27221821	  0.99824421	  0.99907315  0.49317757
+5384	 -6.27279316	 -0.00057459	  0.00035208	  7.27221857	  0.99824454	  0.99907332  0.49317760
+5385	 -6.27279342	 -0.00057448	  0.00035202	  7.27221893	  0.99824486	  0.99907350  0.49317764
+5386	 -6.27279367	 -0.00057438	  0.00035195	  7.27221930	  0.99824519	  0.99907367  0.49317766
+5387	 -6.27279393	 -0.00057427	  0.00035189	  7.27221966	  0.99824551	  0.99907384  0.49317770
+5388	 -6.27279418	 -0.00057417	  0.00035182	  7.27222002	  0.99824584	  0.99907401  0.49317777
+5389	 -6.27279444	 -0.00057406	  0.00035176	  7.27222038	  0.99824617	  0.99907418  0.49317774
+5390	 -6.27279469	 -0.00057395	  0.00035169	  7.27222074	  0.99824649	  0.99907436  0.49317781
+5391	 -6.27279495	 -0.00057385	  0.00035163	  7.27222110	  0.99824682	  0.99907453  0.49317792
+5392	 -6.27279520	 -0.00057374	  0.00035156	  7.27222146	  0.99824714	  0.99907470  0.49317788
+5393	 -6.27279546	 -0.00057363	  0.00035150	  7.27222182	  0.99824747	  0.99907487  0.49317793
+5394	 -6.27279571	 -0.00057353	  0.00035143	  7.27222218	  0.99824779	  0.99907504  0.49317800
+5395	 -6.27279596	 -0.00057342	  0.00035137	  7.27222254	  0.99824812	  0.99907521  0.49317798
+5396	 -6.27279622	 -0.00057331	  0.00035130	  7.27222290	  0.99824844	  0.99907538  0.49317810
+5397	 -6.27279647	 -0.00057321	  0.00035124	  7.27222326	  0.99824877	  0.99907556  0.49317811
+5398	 -6.27279673	 -0.00057310	  0.00035117	  7.27222362	  0.99824909	  0.99907573  0.49317808
+5399	 -6.27279698	 -0.00057300	  0.00035111	  7.27222398	  0.99824941	  0.99907590  0.49317818
+5400	 -6.27279723	 -0.00057289	  0.00035104	  7.27222434	  0.99824974	  0.99907607  0.49317820
+5401	 -6.27279749	 -0.00057278	  0.00035098	  7.27222470	  0.99825006	  0.99907624  0.49317824
+5402	 -6.27279774	 -0.00057268	  0.00035091	  7.27222506	  0.99825039	  0.99907641  0.49317828
+5403	 -6.27279799	 -0.00057257	  0.00035085	  7.27222542	  0.99825071	  0.99907658  0.49317828
+5404	 -6.27279825	 -0.00057247	  0.00035078	  7.27222578	  0.99825103	  0.99907675  0.49317836
+5405	 -6.27279850	 -0.00057236	  0.00035072	  7.27222614	  0.99825136	  0.99907692  0.49317841
+5406	 -6.27279875	 -0.00057225	  0.00035065	  7.27222650	  0.99825168	  0.99907709  0.49317844
+5407	 -6.27279901	 -0.00057215	  0.00035059	  7.27222686	  0.99825200	  0.99907727  0.49317846
+5408	 -6.27279926	 -0.00057204	  0.00035052	  7.27222722	  0.99825233	  0.99907744  0.49317853
+5409	 -6.27279951	 -0.00057194	  0.00035046	  7.27222758	  0.99825265	  0.99907761  0.49317855
+5410	 -6.27279977	 -0.00057183	  0.00035039	  7.27222793	  0.99825297	  0.99907778  0.49317862
+5411	 -6.27280002	 -0.00057173	  0.00035033	  7.27222829	  0.99825330	  0.99907795  0.49317862
+5412	 -6.27280027	 -0.00057162	  0.00035026	  7.27222865	  0.99825362	  0.99907812  0.49317865
+5413	 -6.27280052	 -0.00057152	  0.00035020	  7.27222901	  0.99825394	  0.99907829  0.49317872
+5414	 -6.27280078	 -0.00057141	  0.00035013	  7.27222937	  0.99825426	  0.99907846  0.49317874
+5415	 -6.27280103	 -0.00057130	  0.00035007	  7.27222972	  0.99825459	  0.99907863  0.49317875
+5416	 -6.27280128	 -0.00057120	  0.00035000	  7.27223008	  0.99825491	  0.99907880  0.49317879
+5417	 -6.27280153	 -0.00057109	  0.00034994	  7.27223044	  0.99825523	  0.99907897  0.49317885
+5418	 -6.27280178	 -0.00057099	  0.00034987	  7.27223080	  0.99825555	  0.99907914  0.49317886
+5419	 -6.27280204	 -0.00057088	  0.00034981	  7.27223115	  0.99825587	  0.99907931  0.49317891
+5420	 -6.27280229	 -0.00057078	  0.00034974	  7.27223151	  0.99825620	  0.99907948  0.49317896
+5421	 -6.27280254	 -0.00057067	  0.00034968	  7.27223187	  0.99825652	  0.99907965  0.49317901
+5422	 -6.27280279	 -0.00057057	  0.00034962	  7.27223222	  0.99825684	  0.99907982  0.49317904
+5423	 -6.27280304	 -0.00057046	  0.00034955	  7.27223258	  0.99825716	  0.99907999  0.49317904
+5424	 -6.27280329	 -0.00057036	  0.00034949	  7.27223294	  0.99825748	  0.99908016  0.49317910
+5425	 -6.27280355	 -0.00057025	  0.00034942	  7.27223329	  0.99825780	  0.99908033  0.49317919
+5426	 -6.27280380	 -0.00057015	  0.00034936	  7.27223365	  0.99825812	  0.99908050  0.49317919
+5427	 -6.27280405	 -0.00057004	  0.00034929	  7.27223401	  0.99825844	  0.99908066  0.49317919
+5428	 -6.27280430	 -0.00056994	  0.00034923	  7.27223436	  0.99825877	  0.99908083  0.49317929
+5429	 -6.27280455	 -0.00056983	  0.00034916	  7.27223472	  0.99825909	  0.99908100  0.49317932
+5430	 -6.27280480	 -0.00056973	  0.00034910	  7.27223507	  0.99825941	  0.99908117  0.49317933
+5431	 -6.27280505	 -0.00056962	  0.00034904	  7.27223543	  0.99825973	  0.99908134  0.49317936
+5432	 -6.27280530	 -0.00056952	  0.00034897	  7.27223579	  0.99826005	  0.99908151  0.49317942
+5433	 -6.27280555	 -0.00056941	  0.00034891	  7.27223614	  0.99826037	  0.99908168  0.49317941
+5434	 -6.27280580	 -0.00056931	  0.00034884	  7.27223650	  0.99826069	  0.99908185  0.49317944
+5435	 -6.27280606	 -0.00056920	  0.00034878	  7.27223685	  0.99826101	  0.99908202  0.49317951
+5436	 -6.27280631	 -0.00056910	  0.00034872	  7.27223721	  0.99826133	  0.99908219  0.49317958
+5437	 -6.27280656	 -0.00056899	  0.00034865	  7.27223756	  0.99826165	  0.99908235  0.49317962
+5438	 -6.27280681	 -0.00056889	  0.00034859	  7.27223792	  0.99826197	  0.99908252  0.49317961
+5439	 -6.27280706	 -0.00056878	  0.00034852	  7.27223827	  0.99826229	  0.99908269  0.49317963
+5440	 -6.27280731	 -0.00056868	  0.00034846	  7.27223863	  0.99826261	  0.99908286  0.49317970
+5441	 -6.27280756	 -0.00056858	  0.00034839	  7.27223898	  0.99826293	  0.99908303  0.49317974
+5442	 -6.27280781	 -0.00056847	  0.00034833	  7.27223933	  0.99826324	  0.99908320  0.49317978
+5443	 -6.27280806	 -0.00056837	  0.00034827	  7.27223969	  0.99826356	  0.99908337  0.49317977
+5444	 -6.27280830	 -0.00056826	  0.00034820	  7.27224004	  0.99826388	  0.99908353  0.49317984
+5445	 -6.27280855	 -0.00056816	  0.00034814	  7.27224040	  0.99826420	  0.99908370  0.49317991
+5446	 -6.27280880	 -0.00056805	  0.00034807	  7.27224075	  0.99826452	  0.99908387  0.49317993
+5447	 -6.27280905	 -0.00056795	  0.00034801	  7.27224110	  0.99826484	  0.99908404  0.49317997
+5448	 -6.27280930	 -0.00056785	  0.00034795	  7.27224146	  0.99826516	  0.99908421  0.49317999
+5449	 -6.27280955	 -0.00056774	  0.00034788	  7.27224181	  0.99826547	  0.99908438  0.49318004
+5450	 -6.27280980	 -0.00056764	  0.00034782	  7.27224216	  0.99826579	  0.99908454  0.49318009
+5451	 -6.27281005	 -0.00056753	  0.00034776	  7.27224252	  0.99826611	  0.99908471  0.49318013
+5452	 -6.27281030	 -0.00056743	  0.00034769	  7.27224287	  0.99826643	  0.99908488  0.49318014
+5453	 -6.27281055	 -0.00056733	  0.00034763	  7.27224322	  0.99826675	  0.99908505  0.49318020
+5454	 -6.27281080	 -0.00056722	  0.00034756	  7.27224357	  0.99826706	  0.99908521  0.49318023
+5455	 -6.27281104	 -0.00056712	  0.00034750	  7.27224393	  0.99826738	  0.99908538  0.49318021
+5456	 -6.27281129	 -0.00056701	  0.00034744	  7.27224428	  0.99826770	  0.99908555  0.49318033
+5457	 -6.27281154	 -0.00056691	  0.00034737	  7.27224463	  0.99826802	  0.99908572  0.49318033
+5458	 -6.27281179	 -0.00056681	  0.00034731	  7.27224498	  0.99826833	  0.99908588  0.49318036
+5459	 -6.27281204	 -0.00056670	  0.00034725	  7.27224534	  0.99826865	  0.99908605  0.49318042
+5460	 -6.27281229	 -0.00056660	  0.00034718	  7.27224569	  0.99826897	  0.99908622  0.49318046
+5461	 -6.27281253	 -0.00056649	  0.00034712	  7.27224604	  0.99826929	  0.99908639  0.49318048
+5462	 -6.27281278	 -0.00056639	  0.00034706	  7.27224639	  0.99826960	  0.99908655  0.49318053
+5463	 -6.27281303	 -0.00056629	  0.00034699	  7.27224674	  0.99826992	  0.99908672  0.49318056
+5464	 -6.27281328	 -0.00056618	  0.00034693	  7.27224709	  0.99827024	  0.99908689  0.49318059
+5465	 -6.27281353	 -0.00056608	  0.00034686	  7.27224745	  0.99827055	  0.99908705  0.49318066
+5466	 -6.27281377	 -0.00056598	  0.00034680	  7.27224780	  0.99827087	  0.99908722  0.49318067
+5467	 -6.27281402	 -0.00056587	  0.00034674	  7.27224815	  0.99827119	  0.99908739  0.49318073
+5468	 -6.27281427	 -0.00056577	  0.00034667	  7.27224850	  0.99827150	  0.99908756  0.49318072
+5469	 -6.27281452	 -0.00056567	  0.00034661	  7.27224885	  0.99827182	  0.99908772  0.49318077
+5470	 -6.27281476	 -0.00056556	  0.00034655	  7.27224920	  0.99827213	  0.99908789  0.49318079
+5471	 -6.27281501	 -0.00056546	  0.00034648	  7.27224955	  0.99827245	  0.99908806  0.49318086
+5472	 -6.27281526	 -0.00056536	  0.00034642	  7.27224990	  0.99827276	  0.99908822  0.49318086
+5473	 -6.27281550	 -0.00056525	  0.00034636	  7.27225025	  0.99827308	  0.99908839  0.49318091
+5474	 -6.27281575	 -0.00056515	  0.00034629	  7.27225060	  0.99827340	  0.99908856  0.49318093
+5475	 -6.27281600	 -0.00056505	  0.00034623	  7.27225095	  0.99827371	  0.99908872  0.49318097
+5476	 -6.27281624	 -0.00056494	  0.00034617	  7.27225130	  0.99827403	  0.99908889  0.49318102
+5477	 -6.27281649	 -0.00056484	  0.00034610	  7.27225165	  0.99827434	  0.99908905  0.49318109
+5478	 -6.27281674	 -0.00056474	  0.00034604	  7.27225200	  0.99827466	  0.99908922  0.49318111
+5479	 -6.27281698	 -0.00056463	  0.00034598	  7.27225235	  0.99827497	  0.99908939  0.49318114
+5480	 -6.27281723	 -0.00056453	  0.00034592	  7.27225270	  0.99827529	  0.99908955  0.49318118
+5481	 -6.27281748	 -0.00056443	  0.00034585	  7.27225305	  0.99827560	  0.99908972  0.49318122
+5482	 -6.27281772	 -0.00056433	  0.00034579	  7.27225340	  0.99827591	  0.99908988  0.49318124
+5483	 -6.27281797	 -0.00056422	  0.00034573	  7.27225375	  0.99827623	  0.99909005  0.49318128
+5484	 -6.27281822	 -0.00056412	  0.00034566	  7.27225409	  0.99827654	  0.99909022  0.49318131
+5485	 -6.27281846	 -0.00056402	  0.00034560	  7.27225444	  0.99827686	  0.99909038  0.49318135
+5486	 -6.27281871	 -0.00056391	  0.00034554	  7.27225479	  0.99827717	  0.99909055  0.49318140
+5487	 -6.27281895	 -0.00056381	  0.00034547	  7.27225514	  0.99827749	  0.99909071  0.49318139
+5488	 -6.27281920	 -0.00056371	  0.00034541	  7.27225549	  0.99827780	  0.99909088  0.49318148
+5489	 -6.27281944	 -0.00056361	  0.00034535	  7.27225584	  0.99827811	  0.99909105  0.49318152
+5490	 -6.27281969	 -0.00056350	  0.00034528	  7.27225619	  0.99827843	  0.99909121  0.49318156
+5491	 -6.27281993	 -0.00056340	  0.00034522	  7.27225653	  0.99827874	  0.99909138  0.49318159
+5492	 -6.27282018	 -0.00056330	  0.00034516	  7.27225688	  0.99827905	  0.99909154  0.49318163
+5493	 -6.27282043	 -0.00056320	  0.00034510	  7.27225723	  0.99827937	  0.99909171  0.49318166
+5494	 -6.27282067	 -0.00056309	  0.00034503	  7.27225758	  0.99827968	  0.99909187  0.49318168
+5495	 -6.27282092	 -0.00056299	  0.00034497	  7.27225792	  0.99827999	  0.99909204  0.49318179
+5496	 -6.27282116	 -0.00056289	  0.00034491	  7.27225827	  0.99828031	  0.99909220  0.49318171
+5497	 -6.27282141	 -0.00056279	  0.00034485	  7.27225862	  0.99828062	  0.99909237  0.49318177
+5498	 -6.27282165	 -0.00056268	  0.00034478	  7.27225897	  0.99828093	  0.99909253  0.49318188
+5499	 -6.27282189	 -0.00056258	  0.00034472	  7.27225931	  0.99828124	  0.99909270  0.49318185
+5500	 -6.27282214	 -0.00056248	  0.00034466	  7.27225966	  0.99828156	  0.99909286  0.49318190
+5501	 -6.27282238	 -0.00056238	  0.00034459	  7.27226001	  0.99828187	  0.99909303  0.49318196
+5502	 -6.27282263	 -0.00056228	  0.00034453	  7.27226035	  0.99828218	  0.99909319  0.49318197
+5503	 -6.27282287	 -0.00056217	  0.00034447	  7.27226070	  0.99828249	  0.99909336  0.49318203
+5504	 -6.27282312	 -0.00056207	  0.00034441	  7.27226104	  0.99828281	  0.99909352  0.49318204
+5505	 -6.27282336	 -0.00056197	  0.00034434	  7.27226139	  0.99828312	  0.99909369  0.49318210
+5506	 -6.27282360	 -0.00056187	  0.00034428	  7.27226174	  0.99828343	  0.99909385  0.49318213
+5507	 -6.27282385	 -0.00056177	  0.00034422	  7.27226208	  0.99828374	  0.99909402  0.49318217
+5508	 -6.27282409	 -0.00056166	  0.00034416	  7.27226243	  0.99828405	  0.99909418  0.49318219
+5509	 -6.27282434	 -0.00056156	  0.00034409	  7.27226277	  0.99828436	  0.99909434  0.49318217
+5510	 -6.27282458	 -0.00056146	  0.00034403	  7.27226312	  0.99828467	  0.99909451  0.49318229
+5511	 -6.27282482	 -0.00056136	  0.00034397	  7.27226347	  0.99828499	  0.99909467  0.49318235
+5512	 -6.27282507	 -0.00056126	  0.00034391	  7.27226381	  0.99828530	  0.99909484  0.49318234
+5513	 -6.27282531	 -0.00056115	  0.00034384	  7.27226416	  0.99828561	  0.99909500  0.49318238
+5514	 -6.27282555	 -0.00056105	  0.00034378	  7.27226450	  0.99828592	  0.99909516  0.49318244
+5515	 -6.27282580	 -0.00056095	  0.00034372	  7.27226485	  0.99828623	  0.99909533  0.49318245
+5516	 -6.27282604	 -0.00056085	  0.00034366	  7.27226519	  0.99828654	  0.99909549  0.49318251
+5517	 -6.27282628	 -0.00056075	  0.00034360	  7.27226554	  0.99828685	  0.99909566  0.49318249
+5518	 -6.27282653	 -0.00056065	  0.00034353	  7.27226588	  0.99828716	  0.99909582  0.49318260
+5519	 -6.27282677	 -0.00056055	  0.00034347	  7.27226622	  0.99828747	  0.99909598  0.49318256
+5520	 -6.27282701	 -0.00056044	  0.00034341	  7.27226657	  0.99828778	  0.99909615  0.49318268
+5521	 -6.27282725	 -0.00056034	  0.00034335	  7.27226691	  0.99828809	  0.99909631  0.49318269
+5522	 -6.27282750	 -0.00056024	  0.00034328	  7.27226726	  0.99828840	  0.99909648  0.49318273
+5523	 -6.27282774	 -0.00056014	  0.00034322	  7.27226760	  0.99828871	  0.99909664  0.49318276
+5524	 -6.27282798	 -0.00056004	  0.00034316	  7.27226794	  0.99828902	  0.99909680  0.49318278
+5525	 -6.27282822	 -0.00055994	  0.00034310	  7.27226829	  0.99828933	  0.99909697  0.49318281
+5526	 -6.27282847	 -0.00055984	  0.00034304	  7.27226863	  0.99828964	  0.99909713  0.49318285
+5527	 -6.27282871	 -0.00055973	  0.00034297	  7.27226898	  0.99828995	  0.99909729  0.49318289
+5528	 -6.27282895	 -0.00055963	  0.00034291	  7.27226932	  0.99829026	  0.99909746  0.49318294
+5529	 -6.27282919	 -0.00055953	  0.00034285	  7.27226966	  0.99829057	  0.99909762  0.49318296
+5530	 -6.27282944	 -0.00055943	  0.00034279	  7.27227000	  0.99829088	  0.99909778  0.49318295
+5531	 -6.27282968	 -0.00055933	  0.00034273	  7.27227035	  0.99829119	  0.99909794  0.49318302
+5532	 -6.27282992	 -0.00055923	  0.00034266	  7.27227069	  0.99829150	  0.99909811  0.49318310
+5533	 -6.27283016	 -0.00055913	  0.00034260	  7.27227103	  0.99829180	  0.99909827  0.49318311
+5534	 -6.27283040	 -0.00055903	  0.00034254	  7.27227138	  0.99829211	  0.99909843  0.49318314
+5535	 -6.27283064	 -0.00055893	  0.00034248	  7.27227172	  0.99829242	  0.99909860  0.49318318
+5536	 -6.27283089	 -0.00055882	  0.00034242	  7.27227206	  0.99829273	  0.99909876  0.49318320
+5537	 -6.27283113	 -0.00055872	  0.00034235	  7.27227240	  0.99829304	  0.99909892  0.49318320
+5538	 -6.27283137	 -0.00055862	  0.00034229	  7.27227274	  0.99829335	  0.99909908  0.49318327
+5539	 -6.27283161	 -0.00055852	  0.00034223	  7.27227309	  0.99829365	  0.99909925  0.49318333
+5540	 -6.27283185	 -0.00055842	  0.00034217	  7.27227343	  0.99829396	  0.99909941  0.49318333
+5541	 -6.27283209	 -0.00055832	  0.00034211	  7.27227377	  0.99829427	  0.99909957  0.49318336
+5542	 -6.27283233	 -0.00055822	  0.00034204	  7.27227411	  0.99829458	  0.99909973  0.49318343
+5543	 -6.27283257	 -0.00055812	  0.00034198	  7.27227445	  0.99829489	  0.99909990  0.49318344
+5544	 -6.27283281	 -0.00055802	  0.00034192	  7.27227479	  0.99829519	  0.99910006  0.49318351
+5545	 -6.27283305	 -0.00055792	  0.00034186	  7.27227514	  0.99829550	  0.99910022  0.49318353
+5546	 -6.27283329	 -0.00055782	  0.00034180	  7.27227548	  0.99829581	  0.99910038  0.49318358
+5547	 -6.27283353	 -0.00055772	  0.00034174	  7.27227582	  0.99829611	  0.99910055  0.49318362
+5548	 -6.27283378	 -0.00055762	  0.00034168	  7.27227616	  0.99829642	  0.99910071  0.49318360
+5549	 -6.27283402	 -0.00055752	  0.00034161	  7.27227650	  0.99829673	  0.99910087  0.49318367
+5550	 -6.27283426	 -0.00055742	  0.00034155	  7.27227684	  0.99829704	  0.99910103  0.49318371
+5551	 -6.27283450	 -0.00055732	  0.00034149	  7.27227718	  0.99829734	  0.99910119  0.49318374
+5552	 -6.27283474	 -0.00055722	  0.00034143	  7.27227752	  0.99829765	  0.99910136  0.49318380
+5553	 -6.27283498	 -0.00055712	  0.00034137	  7.27227786	  0.99829796	  0.99910152  0.49318376
+5554	 -6.27283522	 -0.00055701	  0.00034131	  7.27227820	  0.99829826	  0.99910168  0.49318386
+5555	 -6.27283546	 -0.00055691	  0.00034124	  7.27227854	  0.99829857	  0.99910184  0.49318389
+5556	 -6.27283570	 -0.00055681	  0.00034118	  7.27227888	  0.99829887	  0.99910200  0.49318390
+5557	 -6.27283593	 -0.00055671	  0.00034112	  7.27227922	  0.99829918	  0.99910216  0.49318396
+5558	 -6.27283617	 -0.00055661	  0.00034106	  7.27227956	  0.99829949	  0.99910233  0.49318401
+5559	 -6.27283641	 -0.00055651	  0.00034100	  7.27227990	  0.99829979	  0.99910249  0.49318410
+5560	 -6.27283665	 -0.00055641	  0.00034094	  7.27228024	  0.99830010	  0.99910265  0.49318407
+5561	 -6.27283689	 -0.00055631	  0.00034088	  7.27228058	  0.99830040	  0.99910281  0.49318407
+5562	 -6.27283713	 -0.00055621	  0.00034081	  7.27228092	  0.99830071	  0.99910297  0.49318414
+5563	 -6.27283737	 -0.00055611	  0.00034075	  7.27228126	  0.99830101	  0.99910313  0.49318415
+5564	 -6.27283761	 -0.00055601	  0.00034069	  7.27228159	  0.99830132	  0.99910329  0.49318423
+5565	 -6.27283785	 -0.00055591	  0.00034063	  7.27228193	  0.99830163	  0.99910345  0.49318423
+5566	 -6.27283809	 -0.00055581	  0.00034057	  7.27228227	  0.99830193	  0.99910362  0.49318427
+5567	 -6.27283833	 -0.00055571	  0.00034051	  7.27228261	  0.99830224	  0.99910378  0.49318428
+5568	 -6.27283856	 -0.00055562	  0.00034045	  7.27228295	  0.99830254	  0.99910394  0.49318433
+5569	 -6.27283880	 -0.00055552	  0.00034039	  7.27228329	  0.99830285	  0.99910410  0.49318443
+5570	 -6.27283904	 -0.00055542	  0.00034033	  7.27228363	  0.99830315	  0.99910426  0.49318443
+5571	 -6.27283928	 -0.00055532	  0.00034026	  7.27228396	  0.99830345	  0.99910442  0.49318449
+5572	 -6.27283952	 -0.00055522	  0.00034020	  7.27228430	  0.99830376	  0.99910458  0.49318449
+5573	 -6.27283976	 -0.00055512	  0.00034014	  7.27228464	  0.99830406	  0.99910474  0.49318454
+5574	 -6.27283999	 -0.00055502	  0.00034008	  7.27228498	  0.99830437	  0.99910490  0.49318457
+5575	 -6.27284023	 -0.00055492	  0.00034002	  7.27228531	  0.99830467	  0.99910506  0.49318459
+5576	 -6.27284047	 -0.00055482	  0.00033996	  7.27228565	  0.99830498	  0.99910522  0.49318460
+5577	 -6.27284071	 -0.00055472	  0.00033990	  7.27228599	  0.99830528	  0.99910538  0.49318465
+5578	 -6.27284095	 -0.00055462	  0.00033984	  7.27228633	  0.99830558	  0.99910554  0.49318472
+5579	 -6.27284118	 -0.00055452	  0.00033978	  7.27228666	  0.99830589	  0.99910570  0.49318477
+5580	 -6.27284142	 -0.00055442	  0.00033972	  7.27228700	  0.99830619	  0.99910586  0.49318479
+5581	 -6.27284166	 -0.00055432	  0.00033965	  7.27228734	  0.99830649	  0.99910602  0.49318483
+5582	 -6.27284190	 -0.00055422	  0.00033959	  7.27228767	  0.99830680	  0.99910618  0.49318487
+5583	 -6.27284213	 -0.00055412	  0.00033953	  7.27228801	  0.99830710	  0.99910634  0.49318489
+5584	 -6.27284237	 -0.00055402	  0.00033947	  7.27228835	  0.99830740	  0.99910650  0.49318490
+5585	 -6.27284261	 -0.00055393	  0.00033941	  7.27228868	  0.99830771	  0.99910666  0.49318496
+5586	 -6.27284285	 -0.00055383	  0.00033935	  7.27228902	  0.99830801	  0.99910682  0.49318499
+5587	 -6.27284308	 -0.00055373	  0.00033929	  7.27228936	  0.99830831	  0.99910698  0.49318499
+5588	 -6.27284332	 -0.00055363	  0.00033923	  7.27228969	  0.99830861	  0.99910714  0.49318509
+5589	 -6.27284356	 -0.00055353	  0.00033917	  7.27229003	  0.99830892	  0.99910730  0.49318511
+5590	 -6.27284379	 -0.00055343	  0.00033911	  7.27229036	  0.99830922	  0.99910746  0.49318515
+5591	 -6.27284403	 -0.00055333	  0.00033905	  7.27229070	  0.99830952	  0.99910762  0.49318516
+5592	 -6.27284427	 -0.00055323	  0.00033899	  7.27229103	  0.99830982	  0.99910778  0.49318524
+5593	 -6.27284450	 -0.00055313	  0.00033893	  7.27229137	  0.99831013	  0.99910794  0.49318524
+5594	 -6.27284474	 -0.00055303	  0.00033887	  7.27229170	  0.99831043	  0.99910810  0.49318528
+5595	 -6.27284498	 -0.00055294	  0.00033880	  7.27229204	  0.99831073	  0.99910826  0.49318529
+5596	 -6.27284521	 -0.00055284	  0.00033874	  7.27229237	  0.99831103	  0.99910842  0.49318533
+5597	 -6.27284545	 -0.00055274	  0.00033868	  7.27229271	  0.99831133	  0.99910858  0.49318539
+5598	 -6.27284568	 -0.00055264	  0.00033862	  7.27229304	  0.99831164	  0.99910874  0.49318542
+5599	 -6.27284592	 -0.00055254	  0.00033856	  7.27229338	  0.99831194	  0.99910890  0.49318543
+5600	 -6.27284616	 -0.00055244	  0.00033850	  7.27229371	  0.99831224	  0.99910906  0.49318547
+5601	 -6.27284639	 -0.00055234	  0.00033844	  7.27229405	  0.99831254	  0.99910921  0.49318555
+5602	 -6.27284663	 -0.00055225	  0.00033838	  7.27229438	  0.99831284	  0.99910937  0.49318557
+5603	 -6.27284686	 -0.00055215	  0.00033832	  7.27229472	  0.99831314	  0.99910953  0.49318561
+5604	 -6.27284710	 -0.00055205	  0.00033826	  7.27229505	  0.99831344	  0.99910969  0.49318565
+5605	 -6.27284733	 -0.00055195	  0.00033820	  7.27229538	  0.99831374	  0.99910985  0.49318570
+5606	 -6.27284757	 -0.00055185	  0.00033814	  7.27229572	  0.99831404	  0.99911001  0.49318569
+5607	 -6.27284781	 -0.00055175	  0.00033808	  7.27229605	  0.99831435	  0.99911017  0.49318574
+5608	 -6.27284804	 -0.00055165	  0.00033802	  7.27229639	  0.99831465	  0.99911033  0.49318575
+5609	 -6.27284828	 -0.00055156	  0.00033796	  7.27229672	  0.99831495	  0.99911048  0.49318581
+5610	 -6.27284851	 -0.00055146	  0.00033790	  7.27229705	  0.99831525	  0.99911064  0.49318582
+5611	 -6.27284875	 -0.00055136	  0.00033784	  7.27229739	  0.99831555	  0.99911080  0.49318586
+5612	 -6.27284898	 -0.00055126	  0.00033778	  7.27229772	  0.99831585	  0.99911096  0.49318588
+5613	 -6.27284922	 -0.00055116	  0.00033772	  7.27229805	  0.99831615	  0.99911112  0.49318595
+5614	 -6.27284945	 -0.00055107	  0.00033766	  7.27229838	  0.99831645	  0.99911128  0.49318599
+5615	 -6.27284968	 -0.00055097	  0.00033760	  7.27229872	  0.99831675	  0.99911143  0.49318604
+5616	 -6.27284992	 -0.00055087	  0.00033754	  7.27229905	  0.99831705	  0.99911159  0.49318604
+5617	 -6.27285015	 -0.00055077	  0.00033748	  7.27229938	  0.99831735	  0.99911175  0.49318612
+5618	 -6.27285039	 -0.00055067	  0.00033742	  7.27229971	  0.99831765	  0.99911191  0.49318613
+5619	 -6.27285062	 -0.00055058	  0.00033736	  7.27230005	  0.99831794	  0.99911207  0.49318622
+5620	 -6.27285086	 -0.00055048	  0.00033730	  7.27230038	  0.99831824	  0.99911223  0.49318623
+5621	 -6.27285109	 -0.00055038	  0.00033724	  7.27230071	  0.99831854	  0.99911238  0.49318626
+5622	 -6.27285133	 -0.00055028	  0.00033718	  7.27230104	  0.99831884	  0.99911254  0.49318626
+5623	 -6.27285156	 -0.00055018	  0.00033712	  7.27230138	  0.99831914	  0.99911270  0.49318628
+5624	 -6.27285179	 -0.00055009	  0.00033706	  7.27230171	  0.99831944	  0.99911286  0.49318633
+5625	 -6.27285203	 -0.00054999	  0.00033700	  7.27230204	  0.99831974	  0.99911301  0.49318637
+5626	 -6.27285226	 -0.00054989	  0.00033694	  7.27230237	  0.99832004	  0.99911317  0.49318637
+5627	 -6.27285249	 -0.00054979	  0.00033688	  7.27230270	  0.99832034	  0.99911333  0.49318644
+5628	 -6.27285273	 -0.00054970	  0.00033682	  7.27230303	  0.99832063	  0.99911349  0.49318645
+5629	 -6.27285296	 -0.00054960	  0.00033676	  7.27230336	  0.99832093	  0.99911364  0.49318646
+5630	 -6.27285319	 -0.00054950	  0.00033670	  7.27230369	  0.99832123	  0.99911380  0.49318651
+5631	 -6.27285343	 -0.00054940	  0.00033664	  7.27230403	  0.99832153	  0.99911396  0.49318650
+5632	 -6.27285366	 -0.00054931	  0.00033658	  7.27230436	  0.99832183	  0.99911412  0.49318659
+5633	 -6.27285389	 -0.00054921	  0.00033652	  7.27230469	  0.99832212	  0.99911427  0.49318666
+5634	 -6.27285413	 -0.00054911	  0.00033646	  7.27230502	  0.99832242	  0.99911443  0.49318665
+5635	 -6.27285436	 -0.00054901	  0.00033640	  7.27230535	  0.99832272	  0.99911459  0.49318670
+5636	 -6.27285459	 -0.00054892	  0.00033634	  7.27230568	  0.99832302	  0.99911474  0.49318673
+5637	 -6.27285483	 -0.00054882	  0.00033628	  7.27230601	  0.99832332	  0.99911490  0.49318677
+5638	 -6.27285506	 -0.00054872	  0.00033622	  7.27230634	  0.99832361	  0.99911506  0.49318685
+5639	 -6.27285529	 -0.00054862	  0.00033616	  7.27230667	  0.99832391	  0.99911522  0.49318683
+5640	 -6.27285552	 -0.00054853	  0.00033610	  7.27230700	  0.99832421	  0.99911537  0.49318692
+5641	 -6.27285576	 -0.00054843	  0.00033604	  7.27230733	  0.99832450	  0.99911553  0.49318690
+5642	 -6.27285599	 -0.00054833	  0.00033598	  7.27230766	  0.99832480	  0.99911569  0.49318694
+5643	 -6.27285622	 -0.00054824	  0.00033592	  7.27230799	  0.99832510	  0.99911584  0.49318700
+5644	 -6.27285645	 -0.00054814	  0.00033586	  7.27230832	  0.99832539	  0.99911600  0.49318701
+5645	 -6.27285669	 -0.00054804	  0.00033580	  7.27230865	  0.99832569	  0.99911616  0.49318705
+5646	 -6.27285692	 -0.00054794	  0.00033574	  7.27230897	  0.99832599	  0.99911631  0.49318711
+5647	 -6.27285715	 -0.00054785	  0.00033568	  7.27230930	  0.99832628	  0.99911647  0.49318708
+5648	 -6.27285738	 -0.00054775	  0.00033563	  7.27230963	  0.99832658	  0.99911662  0.49318719
+5649	 -6.27285761	 -0.00054765	  0.00033557	  7.27230996	  0.99832688	  0.99911678  0.49318717
+5650	 -6.27285785	 -0.00054756	  0.00033551	  7.27231029	  0.99832717	  0.99911694  0.49318724
+5651	 -6.27285808	 -0.00054746	  0.00033545	  7.27231062	  0.99832747	  0.99911709  0.49318723
+5652	 -6.27285831	 -0.00054736	  0.00033539	  7.27231095	  0.99832776	  0.99911725  0.49318729
+5653	 -6.27285854	 -0.00054727	  0.00033533	  7.27231127	  0.99832806	  0.99911741  0.49318737
+5654	 -6.27285877	 -0.00054717	  0.00033527	  7.27231160	  0.99832836	  0.99911756  0.49318736
+5655	 -6.27285900	 -0.00054707	  0.00033521	  7.27231193	  0.99832865	  0.99911772  0.49318737
+5656	 -6.27285923	 -0.00054698	  0.00033515	  7.27231226	  0.99832895	  0.99911787  0.49318744
+5657	 -6.27285947	 -0.00054688	  0.00033509	  7.27231259	  0.99832924	  0.99911803  0.49318747
+5658	 -6.27285970	 -0.00054678	  0.00033503	  7.27231291	  0.99832954	  0.99911819  0.49318750
+5659	 -6.27285993	 -0.00054669	  0.00033497	  7.27231324	  0.99832983	  0.99911834  0.49318752
+5660	 -6.27286016	 -0.00054659	  0.00033491	  7.27231357	  0.99833013	  0.99911850  0.49318756
+5661	 -6.27286039	 -0.00054649	  0.00033485	  7.27231390	  0.99833042	  0.99911865  0.49318760
+5662	 -6.27286062	 -0.00054640	  0.00033480	  7.27231422	  0.99833072	  0.99911881  0.49318765
+5663	 -6.27286085	 -0.00054630	  0.00033474	  7.27231455	  0.99833101	  0.99911896  0.49318766
+5664	 -6.27286108	 -0.00054620	  0.00033468	  7.27231488	  0.99833131	  0.99911912  0.49318767
+5665	 -6.27286131	 -0.00054611	  0.00033462	  7.27231521	  0.99833160	  0.99911927  0.49318769
+5666	 -6.27286154	 -0.00054601	  0.00033456	  7.27231553	  0.99833190	  0.99911943  0.49318777
+5667	 -6.27286177	 -0.00054591	  0.00033450	  7.27231586	  0.99833219	  0.99911959  0.49318778
+5668	 -6.27286200	 -0.00054582	  0.00033444	  7.27231619	  0.99833248	  0.99911974  0.49318783
+5669	 -6.27286223	 -0.00054572	  0.00033438	  7.27231651	  0.99833278	  0.99911990  0.49318785
+5670	 -6.27286246	 -0.00054563	  0.00033432	  7.27231684	  0.99833307	  0.99912005  0.49318790
+5671	 -6.27286269	 -0.00054553	  0.00033426	  7.27231716	  0.99833337	  0.99912021  0.49318796
+5672	 -6.27286292	 -0.00054543	  0.00033420	  7.27231749	  0.99833366	  0.99912036  0.49318798
+5673	 -6.27286315	 -0.00054534	  0.00033415	  7.27231782	  0.99833395	  0.99912052  0.49318802
+5674	 -6.27286338	 -0.00054524	  0.00033409	  7.27231814	  0.99833425	  0.99912067  0.49318801
+5675	 -6.27286361	 -0.00054515	  0.00033403	  7.27231847	  0.99833454	  0.99912083  0.49318810
+5676	 -6.27286384	 -0.00054505	  0.00033397	  7.27231879	  0.99833483	  0.99912098  0.49318815
+5677	 -6.27286407	 -0.00054495	  0.00033391	  7.27231912	  0.99833513	  0.99912114  0.49318815
+5678	 -6.27286430	 -0.00054486	  0.00033385	  7.27231944	  0.99833542	  0.99912129  0.49318821
+5679	 -6.27286453	 -0.00054476	  0.00033379	  7.27231977	  0.99833571	  0.99912145  0.49318820
+5680	 -6.27286476	 -0.00054467	  0.00033373	  7.27232010	  0.99833601	  0.99912160  0.49318828
+5681	 -6.27286499	 -0.00054457	  0.00033368	  7.27232042	  0.99833630	  0.99912175  0.49318827
+5682	 -6.27286522	 -0.00054447	  0.00033362	  7.27232075	  0.99833659	  0.99912191  0.49318830
+5683	 -6.27286545	 -0.00054438	  0.00033356	  7.27232107	  0.99833689	  0.99912206  0.49318834
+5684	 -6.27286568	 -0.00054428	  0.00033350	  7.27232139	  0.99833718	  0.99912222  0.49318840
+5685	 -6.27286591	 -0.00054419	  0.00033344	  7.27232172	  0.99833747	  0.99912237  0.49318849
+5686	 -6.27286614	 -0.00054409	  0.00033338	  7.27232204	  0.99833776	  0.99912253  0.49318845
+5687	 -6.27286636	 -0.00054400	  0.00033332	  7.27232237	  0.99833805	  0.99912268  0.49318852
+5688	 -6.27286659	 -0.00054390	  0.00033326	  7.27232269	  0.99833835	  0.99912283  0.49318851
+5689	 -6.27286682	 -0.00054380	  0.00033321	  7.27232302	  0.99833864	  0.99912299  0.49318855
+5690	 -6.27286705	 -0.00054371	  0.00033315	  7.27232334	  0.99833893	  0.99912314  0.49318857
+5691	 -6.27286728	 -0.00054361	  0.00033309	  7.27232366	  0.99833922	  0.99912330  0.49318863
+5692	 -6.27286751	 -0.00054352	  0.00033303	  7.27232399	  0.99833951	  0.99912345  0.49318865
+5693	 -6.27286774	 -0.00054342	  0.00033297	  7.27232431	  0.99833981	  0.99912360  0.49318871
+5694	 -6.27286796	 -0.00054333	  0.00033291	  7.27232464	  0.99834010	  0.99912376  0.49318871
+5695	 -6.27286819	 -0.00054323	  0.00033286	  7.27232496	  0.99834039	  0.99912391  0.49318882
+5696	 -6.27286842	 -0.00054314	  0.00033280	  7.27232528	  0.99834068	  0.99912407  0.49318885
+5697	 -6.27286865	 -0.00054304	  0.00033274	  7.27232561	  0.99834097	  0.99912422  0.49318882
+5698	 -6.27286888	 -0.00054295	  0.00033268	  7.27232593	  0.99834126	  0.99912437  0.49318888
+5699	 -6.27286910	 -0.00054285	  0.00033262	  7.27232625	  0.99834155	  0.99912453  0.49318890
+5700	 -6.27286933	 -0.00054276	  0.00033256	  7.27232657	  0.99834184	  0.99912468  0.49318892
+5701	 -6.27286956	 -0.00054266	  0.00033250	  7.27232690	  0.99834214	  0.99912483  0.49318896
+5702	 -6.27286979	 -0.00054257	  0.00033245	  7.27232722	  0.99834243	  0.99912499  0.49318900
+5703	 -6.27287001	 -0.00054247	  0.00033239	  7.27232754	  0.99834272	  0.99912514  0.49318899
+5704	 -6.27287024	 -0.00054238	  0.00033233	  7.27232787	  0.99834301	  0.99912529  0.49318908
+5705	 -6.27287047	 -0.00054228	  0.00033227	  7.27232819	  0.99834330	  0.99912545  0.49318910
+5706	 -6.27287070	 -0.00054219	  0.00033221	  7.27232851	  0.99834359	  0.99912560  0.49318913
+5707	 -6.27287092	 -0.00054209	  0.00033216	  7.27232883	  0.99834388	  0.99912575  0.49318913
+5708	 -6.27287115	 -0.00054200	  0.00033210	  7.27232915	  0.99834417	  0.99912591  0.49318919
+5709	 -6.27287138	 -0.00054190	  0.00033204	  7.27232948	  0.99834446	  0.99912606  0.49318918
+5710	 -6.27287160	 -0.00054181	  0.00033198	  7.27232980	  0.99834475	  0.99912621  0.49318924
+5711	 -6.27287183	 -0.00054171	  0.00033192	  7.27233012	  0.99834504	  0.99912637  0.49318928
+5712	 -6.27287206	 -0.00054162	  0.00033186	  7.27233044	  0.99834533	  0.99912652  0.49318937
+5713	 -6.27287228	 -0.00054152	  0.00033181	  7.27233076	  0.99834562	  0.99912667  0.49318939
+5714	 -6.27287251	 -0.00054143	  0.00033175	  7.27233108	  0.99834591	  0.99912682  0.49318942
+5715	 -6.27287274	 -0.00054133	  0.00033169	  7.27233140	  0.99834620	  0.99912698  0.49318944
+5716	 -6.27287296	 -0.00054124	  0.00033163	  7.27233173	  0.99834649	  0.99912713  0.49318945
+5717	 -6.27287319	 -0.00054114	  0.00033157	  7.27233205	  0.99834677	  0.99912728  0.49318948
+5718	 -6.27287342	 -0.00054105	  0.00033152	  7.27233237	  0.99834706	  0.99912744  0.49318948
+5719	 -6.27287364	 -0.00054095	  0.00033146	  7.27233269	  0.99834735	  0.99912759  0.49318960
+5720	 -6.27287387	 -0.00054086	  0.00033140	  7.27233301	  0.99834764	  0.99912774  0.49318965
+5721	 -6.27287409	 -0.00054076	  0.00033134	  7.27233333	  0.99834793	  0.99912789  0.49318963
+5722	 -6.27287432	 -0.00054067	  0.00033128	  7.27233365	  0.99834822	  0.99912805  0.49318967
+5723	 -6.27287455	 -0.00054058	  0.00033123	  7.27233397	  0.99834851	  0.99912820  0.49318974
+5724	 -6.27287477	 -0.00054048	  0.00033117	  7.27233429	  0.99834880	  0.99912835  0.49318975
+5725	 -6.27287500	 -0.00054039	  0.00033111	  7.27233461	  0.99834908	  0.99912850  0.49318982
+5726	 -6.27287522	 -0.00054029	  0.00033105	  7.27233493	  0.99834937	  0.99912865  0.49318976
+5727	 -6.27287545	 -0.00054020	  0.00033100	  7.27233525	  0.99834966	  0.99912881  0.49318982
+5728	 -6.27287568	 -0.00054010	  0.00033094	  7.27233557	  0.99834995	  0.99912896  0.49318990
+5729	 -6.27287590	 -0.00054001	  0.00033088	  7.27233589	  0.99835024	  0.99912911  0.49318991
+5730	 -6.27287613	 -0.00053992	  0.00033082	  7.27233621	  0.99835052	  0.99912926  0.49318988
+5731	 -6.27287635	 -0.00053982	  0.00033076	  7.27233653	  0.99835081	  0.99912941  0.49319001
+5732	 -6.27287658	 -0.00053973	  0.00033071	  7.27233685	  0.99835110	  0.99912957  0.49318998
+5733	 -6.27287680	 -0.00053963	  0.00033065	  7.27233717	  0.99835139	  0.99912972  0.49319007
+5734	 -6.27287703	 -0.00053954	  0.00033059	  7.27233749	  0.99835168	  0.99912987  0.49319009
+5735	 -6.27287725	 -0.00053945	  0.00033053	  7.27233781	  0.99835196	  0.99913002  0.49319013
+5736	 -6.27287748	 -0.00053935	  0.00033048	  7.27233812	  0.99835225	  0.99913017  0.49319012
+5737	 -6.27287770	 -0.00053926	  0.00033042	  7.27233844	  0.99835254	  0.99913032  0.49319022
+5738	 -6.27287793	 -0.00053916	  0.00033036	  7.27233876	  0.99835282	  0.99913048  0.49319019
+5739	 -6.27287815	 -0.00053907	  0.00033030	  7.27233908	  0.99835311	  0.99913063  0.49319021
+5740	 -6.27287838	 -0.00053898	  0.00033025	  7.27233940	  0.99835340	  0.99913078  0.49319029
+5741	 -6.27287860	 -0.00053888	  0.00033019	  7.27233972	  0.99835368	  0.99913093  0.49319029
+5742	 -6.27287882	 -0.00053879	  0.00033013	  7.27234004	  0.99835397	  0.99913108  0.49319033
+5743	 -6.27287905	 -0.00053869	  0.00033007	  7.27234035	  0.99835426	  0.99913123  0.49319038
+5744	 -6.27287927	 -0.00053860	  0.00033002	  7.27234067	  0.99835454	  0.99913138  0.49319044
+5745	 -6.27287950	 -0.00053851	  0.00032996	  7.27234099	  0.99835483	  0.99913153  0.49319044
+5746	 -6.27287972	 -0.00053841	  0.00032990	  7.27234131	  0.99835512	  0.99913169  0.49319052
+5747	 -6.27287994	 -0.00053832	  0.00032984	  7.27234162	  0.99835540	  0.99913184  0.49319053
+5748	 -6.27288017	 -0.00053823	  0.00032979	  7.27234194	  0.99835569	  0.99913199  0.49319055
+5749	 -6.27288039	 -0.00053813	  0.00032973	  7.27234226	  0.99835598	  0.99913214  0.49319059
+5750	 -6.27288062	 -0.00053804	  0.00032967	  7.27234258	  0.99835626	  0.99913229  0.49319064
+5751	 -6.27288084	 -0.00053795	  0.00032961	  7.27234289	  0.99835655	  0.99913244  0.49319065
+5752	 -6.27288106	 -0.00053785	  0.00032956	  7.27234321	  0.99835683	  0.99913259  0.49319063
+5753	 -6.27288129	 -0.00053776	  0.00032950	  7.27234353	  0.99835712	  0.99913274  0.49319073
+5754	 -6.27288151	 -0.00053767	  0.00032944	  7.27234385	  0.99835740	  0.99913289  0.49319071
+5755	 -6.27288173	 -0.00053757	  0.00032938	  7.27234416	  0.99835769	  0.99913304  0.49319080
+5756	 -6.27288196	 -0.00053748	  0.00032933	  7.27234448	  0.99835797	  0.99913319  0.49319079
+5757	 -6.27288218	 -0.00053739	  0.00032927	  7.27234480	  0.99835826	  0.99913334  0.49319084
+5758	 -6.27288240	 -0.00053729	  0.00032921	  7.27234511	  0.99835854	  0.99913349  0.49319094
+5759	 -6.27288263	 -0.00053720	  0.00032916	  7.27234543	  0.99835883	  0.99913365  0.49319090
+5760	 -6.27288285	 -0.00053711	  0.00032910	  7.27234574	  0.99835911	  0.99913380  0.49319093
+5761	 -6.27288307	 -0.00053701	  0.00032904	  7.27234606	  0.99835940	  0.99913395  0.49319095
+5762	 -6.27288330	 -0.00053692	  0.00032898	  7.27234638	  0.99835968	  0.99913410  0.49319102
+5763	 -6.27288352	 -0.00053683	  0.00032893	  7.27234669	  0.99835997	  0.99913425  0.49319110
+5764	 -6.27288374	 -0.00053673	  0.00032887	  7.27234701	  0.99836025	  0.99913440  0.49319107
+5765	 -6.27288396	 -0.00053664	  0.00032881	  7.27234732	  0.99836054	  0.99913455  0.49319115
+5766	 -6.27288419	 -0.00053655	  0.00032876	  7.27234764	  0.99836082	  0.99913470  0.49319113
+5767	 -6.27288441	 -0.00053645	  0.00032870	  7.27234795	  0.99836111	  0.99913485  0.49319119
+5768	 -6.27288463	 -0.00053636	  0.00032864	  7.27234827	  0.99836139	  0.99913500  0.49319119
+5769	 -6.27288485	 -0.00053627	  0.00032859	  7.27234859	  0.99836167	  0.99913515  0.49319124
+5770	 -6.27288508	 -0.00053618	  0.00032853	  7.27234890	  0.99836196	  0.99913530  0.49319131
+5771	 -6.27288530	 -0.00053608	  0.00032847	  7.27234922	  0.99836224	  0.99913545  0.49319132
+5772	 -6.27288552	 -0.00053599	  0.00032841	  7.27234953	  0.99836253	  0.99913560  0.49319134
+5773	 -6.27288574	 -0.00053590	  0.00032836	  7.27234985	  0.99836281	  0.99913575  0.49319141
+5774	 -6.27288596	 -0.00053580	  0.00032830	  7.27235016	  0.99836309	  0.99913590  0.49319142
+5775	 -6.27288619	 -0.00053571	  0.00032824	  7.27235047	  0.99836338	  0.99913604  0.49319138
+5776	 -6.27288641	 -0.00053562	  0.00032819	  7.27235079	  0.99836366	  0.99913619  0.49319145
+5777	 -6.27288663	 -0.00053553	  0.00032813	  7.27235110	  0.99836394	  0.99913634  0.49319149
+5778	 -6.27288685	 -0.00053543	  0.00032807	  7.27235142	  0.99836423	  0.99913649  0.49319155
+5779	 -6.27288707	 -0.00053534	  0.00032802	  7.27235173	  0.99836451	  0.99913664  0.49319156
+5780	 -6.27288729	 -0.00053525	  0.00032796	  7.27235205	  0.99836479	  0.99913679  0.49319156
+5781	 -6.27288752	 -0.00053516	  0.00032790	  7.27235236	  0.99836507	  0.99913694  0.49319162
+5782	 -6.27288774	 -0.00053506	  0.00032785	  7.27235267	  0.99836536	  0.99913709  0.49319169
+5783	 -6.27288796	 -0.00053497	  0.00032779	  7.27235299	  0.99836564	  0.99913724  0.49319169
+5784	 -6.27288818	 -0.00053488	  0.00032773	  7.27235330	  0.99836592	  0.99913739  0.49319176
+5785	 -6.27288840	 -0.00053479	  0.00032768	  7.27235361	  0.99836620	  0.99913754  0.49319177
+5786	 -6.27288862	 -0.00053469	  0.00032762	  7.27235393	  0.99836649	  0.99913769  0.49319182
+5787	 -6.27288884	 -0.00053460	  0.00032756	  7.27235424	  0.99836677	  0.99913784  0.49319183
+5788	 -6.27288906	 -0.00053451	  0.00032751	  7.27235455	  0.99836705	  0.99913798  0.49319186
+5789	 -6.27288928	 -0.00053442	  0.00032745	  7.27235487	  0.99836733	  0.99913813  0.49319195
+5790	 -6.27288950	 -0.00053432	  0.00032739	  7.27235518	  0.99836762	  0.99913828  0.49319191
+5791	 -6.27288973	 -0.00053423	  0.00032734	  7.27235549	  0.99836790	  0.99913843  0.49319195
+5792	 -6.27288995	 -0.00053414	  0.00032728	  7.27235581	  0.99836818	  0.99913858  0.49319198
+5793	 -6.27289017	 -0.00053405	  0.00032722	  7.27235612	  0.99836846	  0.99913873  0.49319204
+5794	 -6.27289039	 -0.00053396	  0.00032717	  7.27235643	  0.99836874	  0.99913888  0.49319208
+5795	 -6.27289061	 -0.00053386	  0.00032711	  7.27235674	  0.99836902	  0.99913903  0.49319213
+5796	 -6.27289083	 -0.00053377	  0.00032705	  7.27235706	  0.99836931	  0.99913917  0.49319212
+5797	 -6.27289105	 -0.00053368	  0.00032700	  7.27235737	  0.99836959	  0.99913932  0.49319218
+5798	 -6.27289127	 -0.00053359	  0.00032694	  7.27235768	  0.99836987	  0.99913947  0.49319222
+5799	 -6.27289149	 -0.00053350	  0.00032689	  7.27235799	  0.99837015	  0.99913962  0.49319223
+5800	 -6.27289171	 -0.00053340	  0.00032683	  7.27235830	  0.99837043	  0.99913977  0.49319229
+5801	 -6.27289193	 -0.00053331	  0.00032677	  7.27235862	  0.99837071	  0.99913992  0.49319228
+5802	 -6.27289215	 -0.00053322	  0.00032672	  7.27235893	  0.99837099	  0.99914006  0.49319230
+5803	 -6.27289237	 -0.00053313	  0.00032666	  7.27235924	  0.99837127	  0.99914021  0.49319236
+5804	 -6.27289259	 -0.00053304	  0.00032660	  7.27235955	  0.99837155	  0.99914036  0.49319240
+5805	 -6.27289281	 -0.00053294	  0.00032655	  7.27235986	  0.99837183	  0.99914051  0.49319244
+5806	 -6.27289303	 -0.00053285	  0.00032649	  7.27236017	  0.99837211	  0.99914066  0.49319243
+5807	 -6.27289325	 -0.00053276	  0.00032643	  7.27236048	  0.99837239	  0.99914080  0.49319249
+5808	 -6.27289346	 -0.00053267	  0.00032638	  7.27236080	  0.99837267	  0.99914095  0.49319257
+5809	 -6.27289368	 -0.00053258	  0.00032632	  7.27236111	  0.99837295	  0.99914110  0.49319253
+5810	 -6.27289390	 -0.00053249	  0.00032627	  7.27236142	  0.99837323	  0.99914125  0.49319261
+5811	 -6.27289412	 -0.00053239	  0.00032621	  7.27236173	  0.99837351	  0.99914140  0.49319263
+5812	 -6.27289434	 -0.00053230	  0.00032615	  7.27236204	  0.99837379	  0.99914154  0.49319267
+5813	 -6.27289456	 -0.00053221	  0.00032610	  7.27236235	  0.99837407	  0.99914169  0.49319271
+5814	 -6.27289478	 -0.00053212	  0.00032604	  7.27236266	  0.99837435	  0.99914184  0.49319271
+5815	 -6.27289500	 -0.00053203	  0.00032599	  7.27236297	  0.99837463	  0.99914199  0.49319270
+5816	 -6.27289522	 -0.00053194	  0.00032593	  7.27236328	  0.99837491	  0.99914213  0.49319278
+5817	 -6.27289544	 -0.00053185	  0.00032587	  7.27236359	  0.99837519	  0.99914228  0.49319281
+5818	 -6.27289565	 -0.00053175	  0.00032582	  7.27236390	  0.99837547	  0.99914243  0.49319284
+5819	 -6.27289587	 -0.00053166	  0.00032576	  7.27236421	  0.99837575	  0.99914258  0.49319286
+5820	 -6.27289609	 -0.00053157	  0.00032571	  7.27236452	  0.99837603	  0.99914272  0.49319287
+5821	 -6.27289631	 -0.00053148	  0.00032565	  7.27236483	  0.99837631	  0.99914287  0.49319297
+5822	 -6.27289653	 -0.00053139	  0.00032559	  7.27236514	  0.99837659	  0.99914302  0.49319300
+5823	 -6.27289675	 -0.00053130	  0.00032554	  7.27236545	  0.99837687	  0.99914316  0.49319302
+5824	 -6.27289696	 -0.00053121	  0.00032548	  7.27236576	  0.99837714	  0.99914331  0.49319305
+5825	 -6.27289718	 -0.00053112	  0.00032543	  7.27236607	  0.99837742	  0.99914346  0.49319306
+5826	 -6.27289740	 -0.00053102	  0.00032537	  7.27236638	  0.99837770	  0.99914361  0.49319318
+5827	 -6.27289762	 -0.00053093	  0.00032531	  7.27236668	  0.99837798	  0.99914375  0.49319313
+5828	 -6.27289784	 -0.00053084	  0.00032526	  7.27236699	  0.99837826	  0.99914390  0.49319318
+5829	 -6.27289805	 -0.00053075	  0.00032520	  7.27236730	  0.99837854	  0.99914405  0.49319320
+5830	 -6.27289827	 -0.00053066	  0.00032515	  7.27236761	  0.99837881	  0.99914419  0.49319315
+5831	 -6.27289849	 -0.00053057	  0.00032509	  7.27236792	  0.99837909	  0.99914434  0.49319329
+5832	 -6.27289871	 -0.00053048	  0.00032504	  7.27236823	  0.99837937	  0.99914449  0.49319329
+5833	 -6.27289892	 -0.00053039	  0.00032498	  7.27236854	  0.99837965	  0.99914463  0.49319336
+5834	 -6.27289914	 -0.00053030	  0.00032492	  7.27236884	  0.99837993	  0.99914478  0.49319338
+5835	 -6.27289936	 -0.00053021	  0.00032487	  7.27236915	  0.99838020	  0.99914493  0.49319340
+5836	 -6.27289958	 -0.00053012	  0.00032481	  7.27236946	  0.99838048	  0.99914507  0.49319339
+5837	 -6.27289979	 -0.00053002	  0.00032476	  7.27236977	  0.99838076	  0.99914522  0.49319350
+5838	 -6.27290001	 -0.00052993	  0.00032470	  7.27237008	  0.99838104	  0.99914536  0.49319352
+5839	 -6.27290023	 -0.00052984	  0.00032465	  7.27237038	  0.99838131	  0.99914551  0.49319359
+5840	 -6.27290044	 -0.00052975	  0.00032459	  7.27237069	  0.99838159	  0.99914566  0.49319354
+5841	 -6.27290066	 -0.00052966	  0.00032453	  7.27237100	  0.99838187	  0.99914580  0.49319355
+5842	 -6.27290088	 -0.00052957	  0.00032448	  7.27237131	  0.99838214	  0.99914595  0.49319365
+5843	 -6.27290109	 -0.00052948	  0.00032442	  7.27237161	  0.99838242	  0.99914610  0.49319372
+5844	 -6.27290131	 -0.00052939	  0.00032437	  7.27237192	  0.99838270	  0.99914624  0.49319371
+5845	 -6.27290153	 -0.00052930	  0.00032431	  7.27237223	  0.99838297	  0.99914639  0.49319369
+5846	 -6.27290174	 -0.00052921	  0.00032426	  7.27237254	  0.99838325	  0.99914653  0.49319379
+5847	 -6.27290196	 -0.00052912	  0.00032420	  7.27237284	  0.99838353	  0.99914668  0.49319379
+5848	 -6.27290218	 -0.00052903	  0.00032415	  7.27237315	  0.99838380	  0.99914683  0.49319387
+5849	 -6.27290239	 -0.00052894	  0.00032409	  7.27237346	  0.99838408	  0.99914697  0.49319384
+5850	 -6.27290261	 -0.00052885	  0.00032404	  7.27237376	  0.99838436	  0.99914712  0.49319390
+5851	 -6.27290283	 -0.00052876	  0.00032398	  7.27237407	  0.99838463	  0.99914726  0.49319391
+5852	 -6.27290304	 -0.00052867	  0.00032392	  7.27237438	  0.99838491	  0.99914741  0.49319397
+5853	 -6.27290326	 -0.00052858	  0.00032387	  7.27237468	  0.99838518	  0.99914755  0.49319399
+5854	 -6.27290347	 -0.00052849	  0.00032381	  7.27237499	  0.99838546	  0.99914770  0.49319399
+5855	 -6.27290369	 -0.00052840	  0.00032376	  7.27237529	  0.99838574	  0.99914785  0.49319402
+5856	 -6.27290391	 -0.00052831	  0.00032370	  7.27237560	  0.99838601	  0.99914799  0.49319410
+5857	 -6.27290412	 -0.00052822	  0.00032365	  7.27237591	  0.99838629	  0.99914814  0.49319411
+5858	 -6.27290434	 -0.00052813	  0.00032359	  7.27237621	  0.99838656	  0.99914828  0.49319417
+5859	 -6.27290455	 -0.00052804	  0.00032354	  7.27237652	  0.99838684	  0.99914843  0.49319421
+5860	 -6.27290477	 -0.00052795	  0.00032348	  7.27237682	  0.99838711	  0.99914857  0.49319423
+5861	 -6.27290498	 -0.00052786	  0.00032343	  7.27237713	  0.99838739	  0.99914872  0.49319424
+5862	 -6.27290520	 -0.00052777	  0.00032337	  7.27237743	  0.99838766	  0.99914886  0.49319429
+5863	 -6.27290541	 -0.00052768	  0.00032332	  7.27237774	  0.99838794	  0.99914901  0.49319426
+5864	 -6.27290563	 -0.00052759	  0.00032326	  7.27237804	  0.99838821	  0.99914915  0.49319434
+5865	 -6.27290584	 -0.00052750	  0.00032321	  7.27237835	  0.99838849	  0.99914930  0.49319436
+5866	 -6.27290606	 -0.00052741	  0.00032315	  7.27237865	  0.99838876	  0.99914944  0.49319441
+5867	 -6.27290627	 -0.00052732	  0.00032310	  7.27237896	  0.99838904	  0.99914959  0.49319443
+5868	 -6.27290649	 -0.00052723	  0.00032304	  7.27237926	  0.99838931	  0.99914973  0.49319450
+5869	 -6.27290670	 -0.00052714	  0.00032299	  7.27237957	  0.99838959	  0.99914988  0.49319447
+5870	 -6.27290692	 -0.00052705	  0.00032293	  7.27237987	  0.99838986	  0.99915002  0.49319454
+5871	 -6.27290713	 -0.00052696	  0.00032288	  7.27238018	  0.99839013	  0.99915017  0.49319453
+5872	 -6.27290735	 -0.00052687	  0.00032282	  7.27238048	  0.99839041	  0.99915031  0.49319457
+5873	 -6.27290756	 -0.00052678	  0.00032277	  7.27238078	  0.99839068	  0.99915046  0.49319463
+5874	 -6.27290778	 -0.00052669	  0.00032271	  7.27238109	  0.99839096	  0.99915060  0.49319468
+5875	 -6.27290799	 -0.00052660	  0.00032266	  7.27238139	  0.99839123	  0.99915075  0.49319471
+5876	 -6.27290821	 -0.00052651	  0.00032260	  7.27238170	  0.99839150	  0.99915089  0.49319472
+5877	 -6.27290842	 -0.00052642	  0.00032255	  7.27238200	  0.99839178	  0.99915103  0.49319477
+5878	 -6.27290863	 -0.00052633	  0.00032249	  7.27238230	  0.99839205	  0.99915118  0.49319479
+5879	 -6.27290885	 -0.00052624	  0.00032244	  7.27238261	  0.99839232	  0.99915132  0.49319479
+5880	 -6.27290906	 -0.00052615	  0.00032238	  7.27238291	  0.99839260	  0.99915147  0.49319486
+5881	 -6.27290928	 -0.00052606	  0.00032233	  7.27238321	  0.99839287	  0.99915161  0.49319496
+5882	 -6.27290949	 -0.00052597	  0.00032227	  7.27238352	  0.99839314	  0.99915176  0.49319494
+5883	 -6.27290970	 -0.00052588	  0.00032222	  7.27238382	  0.99839342	  0.99915190  0.49319490
+5884	 -6.27290992	 -0.00052579	  0.00032216	  7.27238412	  0.99839369	  0.99915204  0.49319495
+5885	 -6.27291013	 -0.00052570	  0.00032211	  7.27238443	  0.99839396	  0.99915219  0.49319503
+5886	 -6.27291034	 -0.00052561	  0.00032205	  7.27238473	  0.99839424	  0.99915233  0.49319499
+5887	 -6.27291056	 -0.00052553	  0.00032200	  7.27238503	  0.99839451	  0.99915248  0.49319506
+5888	 -6.27291077	 -0.00052544	  0.00032194	  7.27238534	  0.99839478	  0.99915262  0.49319516
+5889	 -6.27291098	 -0.00052535	  0.00032189	  7.27238564	  0.99839505	  0.99915276  0.49319515
+5890	 -6.27291120	 -0.00052526	  0.00032183	  7.27238594	  0.99839533	  0.99915291  0.49319519
+5891	 -6.27291141	 -0.00052517	  0.00032178	  7.27238624	  0.99839560	  0.99915305  0.49319519
+5892	 -6.27291162	 -0.00052508	  0.00032173	  7.27238654	  0.99839587	  0.99915320  0.49319522
+5893	 -6.27291184	 -0.00052499	  0.00032167	  7.27238685	  0.99839614	  0.99915334  0.49319528
+5894	 -6.27291205	 -0.00052490	  0.00032162	  7.27238715	  0.99839642	  0.99915348  0.49319533
+5895	 -6.27291226	 -0.00052481	  0.00032156	  7.27238745	  0.99839669	  0.99915363  0.49319536
+5896	 -6.27291248	 -0.00052472	  0.00032151	  7.27238775	  0.99839696	  0.99915377  0.49319537
+5897	 -6.27291269	 -0.00052463	  0.00032145	  7.27238805	  0.99839723	  0.99915391  0.49319544
+5898	 -6.27291290	 -0.00052455	  0.00032140	  7.27238836	  0.99839750	  0.99915406  0.49319545
+5899	 -6.27291311	 -0.00052446	  0.00032134	  7.27238866	  0.99839777	  0.99915420  0.49319547
+5900	 -6.27291333	 -0.00052437	  0.00032129	  7.27238896	  0.99839805	  0.99915434  0.49319547
+5901	 -6.27291354	 -0.00052428	  0.00032123	  7.27238926	  0.99839832	  0.99915449  0.49319552
+5902	 -6.27291375	 -0.00052419	  0.00032118	  7.27238956	  0.99839859	  0.99915463  0.49319555
+5903	 -6.27291396	 -0.00052410	  0.00032113	  7.27238986	  0.99839886	  0.99915477  0.49319555
+5904	 -6.27291418	 -0.00052401	  0.00032107	  7.27239016	  0.99839913	  0.99915492  0.49319565
+5905	 -6.27291439	 -0.00052392	  0.00032102	  7.27239046	  0.99839940	  0.99915506  0.49319563
+5906	 -6.27291460	 -0.00052384	  0.00032096	  7.27239077	  0.99839967	  0.99915520  0.49319565
+5907	 -6.27291481	 -0.00052375	  0.00032091	  7.27239107	  0.99839994	  0.99915534  0.49319571
+5908	 -6.27291503	 -0.00052366	  0.00032085	  7.27239137	  0.99840021	  0.99915549  0.49319576
+5909	 -6.27291524	 -0.00052357	  0.00032080	  7.27239167	  0.99840049	  0.99915563  0.49319577
+5910	 -6.27291545	 -0.00052348	  0.00032075	  7.27239197	  0.99840076	  0.99915577  0.49319579
+5911	 -6.27291566	 -0.00052339	  0.00032069	  7.27239227	  0.99840103	  0.99915592  0.49319582
+5912	 -6.27291587	 -0.00052330	  0.00032064	  7.27239257	  0.99840130	  0.99915606  0.49319587
+5913	 -6.27291608	 -0.00052322	  0.00032058	  7.27239287	  0.99840157	  0.99915620  0.49319592
+5914	 -6.27291630	 -0.00052313	  0.00032053	  7.27239317	  0.99840184	  0.99915634  0.49319593
+5915	 -6.27291651	 -0.00052304	  0.00032047	  7.27239347	  0.99840211	  0.99915649  0.49319594
+5916	 -6.27291672	 -0.00052295	  0.00032042	  7.27239377	  0.99840238	  0.99915663  0.49319596
+5917	 -6.27291693	 -0.00052286	  0.00032037	  7.27239407	  0.99840265	  0.99915677  0.49319602
+5918	 -6.27291714	 -0.00052277	  0.00032031	  7.27239437	  0.99840292	  0.99915691  0.49319607
+5919	 -6.27291735	 -0.00052269	  0.00032026	  7.27239467	  0.99840319	  0.99915706  0.49319609
+5920	 -6.27291756	 -0.00052260	  0.00032020	  7.27239497	  0.99840346	  0.99915720  0.49319609
+5921	 -6.27291777	 -0.00052251	  0.00032015	  7.27239526	  0.99840373	  0.99915734  0.49319619
+5922	 -6.27291799	 -0.00052242	  0.00032010	  7.27239556	  0.99840400	  0.99915748  0.49319624
+5923	 -6.27291820	 -0.00052233	  0.00032004	  7.27239586	  0.99840427	  0.99915763  0.49319616
+5924	 -6.27291841	 -0.00052225	  0.00031999	  7.27239616	  0.99840453	  0.99915777  0.49319625
+5925	 -6.27291862	 -0.00052216	  0.00031993	  7.27239646	  0.99840480	  0.99915791  0.49319632
+5926	 -6.27291883	 -0.00052207	  0.00031988	  7.27239676	  0.99840507	  0.99915805  0.49319625
+5927	 -6.27291904	 -0.00052198	  0.00031983	  7.27239706	  0.99840534	  0.99915819  0.49319634
+5928	 -6.27291925	 -0.00052189	  0.00031977	  7.27239736	  0.99840561	  0.99915834  0.49319638
+5929	 -6.27291946	 -0.00052180	  0.00031972	  7.27239766	  0.99840588	  0.99915848  0.49319640
+5930	 -6.27291967	 -0.00052172	  0.00031966	  7.27239795	  0.99840615	  0.99915862  0.49319643
+5931	 -6.27291988	 -0.00052163	  0.00031961	  7.27239825	  0.99840642	  0.99915876  0.49319646
+5932	 -6.27292009	 -0.00052154	  0.00031956	  7.27239855	  0.99840669	  0.99915890  0.49319643
+5933	 -6.27292030	 -0.00052145	  0.00031950	  7.27239885	  0.99840695	  0.99915904  0.49319651
+5934	 -6.27292051	 -0.00052137	  0.00031945	  7.27239915	  0.99840722	  0.99915919  0.49319652
+5935	 -6.27292072	 -0.00052128	  0.00031939	  7.27239944	  0.99840749	  0.99915933  0.49319657
+5936	 -6.27292093	 -0.00052119	  0.00031934	  7.27239974	  0.99840776	  0.99915947  0.49319663
+5937	 -6.27292114	 -0.00052110	  0.00031929	  7.27240004	  0.99840803	  0.99915961  0.49319665
+5938	 -6.27292135	 -0.00052101	  0.00031923	  7.27240034	  0.99840830	  0.99915975  0.49319671
+5939	 -6.27292156	 -0.00052093	  0.00031918	  7.27240063	  0.99840856	  0.99915989  0.49319676
+5940	 -6.27292177	 -0.00052084	  0.00031913	  7.27240093	  0.99840883	  0.99916004  0.49319677
+5941	 -6.27292198	 -0.00052075	  0.00031907	  7.27240123	  0.99840910	  0.99916018  0.49319672
+5942	 -6.27292219	 -0.00052066	  0.00031902	  7.27240153	  0.99840937	  0.99916032  0.49319676
+5943	 -6.27292240	 -0.00052058	  0.00031896	  7.27240182	  0.99840964	  0.99916046  0.49319684
+5944	 -6.27292261	 -0.00052049	  0.00031891	  7.27240212	  0.99840990	  0.99916060  0.49319683
+5945	 -6.27292282	 -0.00052040	  0.00031886	  7.27240242	  0.99841017	  0.99916074  0.49319688
+5946	 -6.27292303	 -0.00052031	  0.00031880	  7.27240271	  0.99841044	  0.99916088  0.49319696
+5947	 -6.27292324	 -0.00052023	  0.00031875	  7.27240301	  0.99841070	  0.99916102  0.49319696
+5948	 -6.27292345	 -0.00052014	  0.00031870	  7.27240331	  0.99841097	  0.99916117  0.49319698
+5949	 -6.27292366	 -0.00052005	  0.00031864	  7.27240360	  0.99841124	  0.99916131  0.49319702
+5950	 -6.27292386	 -0.00051996	  0.00031859	  7.27240390	  0.99841151	  0.99916145  0.49319705
+5951	 -6.27292407	 -0.00051988	  0.00031854	  7.27240420	  0.99841177	  0.99916159  0.49319708
+5952	 -6.27292428	 -0.00051979	  0.00031848	  7.27240449	  0.99841204	  0.99916173  0.49319705
+5953	 -6.27292449	 -0.00051970	  0.00031843	  7.27240479	  0.99841231	  0.99916187  0.49319715
+5954	 -6.27292470	 -0.00051962	  0.00031837	  7.27240508	  0.99841257	  0.99916201  0.49319716
+5955	 -6.27292491	 -0.00051953	  0.00031832	  7.27240538	  0.99841284	  0.99916215  0.49319722
+5956	 -6.27292512	 -0.00051944	  0.00031827	  7.27240568	  0.99841311	  0.99916229  0.49319725
+5957	 -6.27292533	 -0.00051935	  0.00031821	  7.27240597	  0.99841337	  0.99916243  0.49319725
+5958	 -6.27292553	 -0.00051927	  0.00031816	  7.27240627	  0.99841364	  0.99916257  0.49319734
+5959	 -6.27292574	 -0.00051918	  0.00031811	  7.27240656	  0.99841390	  0.99916271  0.49319744
+5960	 -6.27292595	 -0.00051909	  0.00031805	  7.27240686	  0.99841417	  0.99916285  0.49319739
+5961	 -6.27292616	 -0.00051901	  0.00031800	  7.27240715	  0.99841444	  0.99916299  0.49319736
+5962	 -6.27292637	 -0.00051892	  0.00031795	  7.27240745	  0.99841470	  0.99916313  0.49319748
+5963	 -6.27292658	 -0.00051883	  0.00031789	  7.27240774	  0.99841497	  0.99916327  0.49319747
+5964	 -6.27292678	 -0.00051874	  0.00031784	  7.27240804	  0.99841523	  0.99916341  0.49319748
+5965	 -6.27292699	 -0.00051866	  0.00031779	  7.27240833	  0.99841550	  0.99916355  0.49319753
+5966	 -6.27292720	 -0.00051857	  0.00031773	  7.27240863	  0.99841577	  0.99916369  0.49319759
+5967	 -6.27292741	 -0.00051848	  0.00031768	  7.27240892	  0.99841603	  0.99916384  0.49319759
+5968	 -6.27292762	 -0.00051840	  0.00031763	  7.27240922	  0.99841630	  0.99916398  0.49319759
+5969	 -6.27292782	 -0.00051831	  0.00031757	  7.27240951	  0.99841656	  0.99916412  0.49319764
+5970	 -6.27292803	 -0.00051822	  0.00031752	  7.27240981	  0.99841683	  0.99916426  0.49319769
+5971	 -6.27292824	 -0.00051814	  0.00031747	  7.27241010	  0.99841709	  0.99916440  0.49319768
+5972	 -6.27292845	 -0.00051805	  0.00031742	  7.27241040	  0.99841736	  0.99916453  0.49319773
+5973	 -6.27292865	 -0.00051796	  0.00031736	  7.27241069	  0.99841762	  0.99916467  0.49319777
+5974	 -6.27292886	 -0.00051788	  0.00031731	  7.27241098	  0.99841789	  0.99916481  0.49319789
+5975	 -6.27292907	 -0.00051779	  0.00031726	  7.27241128	  0.99841815	  0.99916495  0.49319781
+5976	 -6.27292927	 -0.00051770	  0.00031720	  7.27241157	  0.99841842	  0.99916509  0.49319785
+5977	 -6.27292948	 -0.00051762	  0.00031715	  7.27241186	  0.99841868	  0.99916523  0.49319784
+5978	 -6.27292969	 -0.00051753	  0.00031710	  7.27241216	  0.99841895	  0.99916537  0.49319795
+5979	 -6.27292990	 -0.00051744	  0.00031704	  7.27241245	  0.99841921	  0.99916551  0.49319794
+5980	 -6.27293010	 -0.00051736	  0.00031699	  7.27241275	  0.99841947	  0.99916565  0.49319797
+5981	 -6.27293031	 -0.00051727	  0.00031694	  7.27241304	  0.99841974	  0.99916579  0.49319807
+5982	 -6.27293052	 -0.00051718	  0.00031688	  7.27241333	  0.99842000	  0.99916593  0.49319800
+5983	 -6.27293072	 -0.00051710	  0.00031683	  7.27241363	  0.99842027	  0.99916607  0.49319809
+5984	 -6.27293093	 -0.00051701	  0.00031678	  7.27241392	  0.99842053	  0.99916621  0.49319811
+5985	 -6.27293114	 -0.00051693	  0.00031673	  7.27241421	  0.99842079	  0.99916635  0.49319811
+5986	 -6.27293134	 -0.00051684	  0.00031667	  7.27241450	  0.99842106	  0.99916649  0.49319817
+5987	 -6.27293155	 -0.00051675	  0.00031662	  7.27241480	  0.99842132	  0.99916663  0.49319820
+5988	 -6.27293176	 -0.00051667	  0.00031657	  7.27241509	  0.99842159	  0.99916677  0.49319821
+5989	 -6.27293196	 -0.00051658	  0.00031651	  7.27241538	  0.99842185	  0.99916691  0.49319833
+5990	 -6.27293217	 -0.00051649	  0.00031646	  7.27241567	  0.99842211	  0.99916704  0.49319829
+5991	 -6.27293237	 -0.00051641	  0.00031641	  7.27241597	  0.99842238	  0.99916718  0.49319831
+5992	 -6.27293258	 -0.00051632	  0.00031636	  7.27241626	  0.99842264	  0.99916732  0.49319838
+5993	 -6.27293279	 -0.00051624	  0.00031630	  7.27241655	  0.99842290	  0.99916746  0.49319843
+5994	 -6.27293299	 -0.00051615	  0.00031625	  7.27241684	  0.99842316	  0.99916760  0.49319840
+5995	 -6.27293320	 -0.00051606	  0.00031620	  7.27241713	  0.99842343	  0.99916774  0.49319841
+5996	 -6.27293340	 -0.00051598	  0.00031614	  7.27241743	  0.99842369	  0.99916788  0.49319849
+5997	 -6.27293361	 -0.00051589	  0.00031609	  7.27241772	  0.99842395	  0.99916802  0.49319850
+5998	 -6.27293382	 -0.00051581	  0.00031604	  7.27241801	  0.99842422	  0.99916816  0.49319856
+5999	 -6.27293402	 -0.00051572	  0.00031599	  7.27241830	  0.99842448	  0.99916829  0.49319860
+6000	 -6.27293423	 -0.00051563	  0.00031593	  7.27241859	  0.99842474	  0.99916843  0.49319855
+6001	 -6.27293443	 -0.00051555	  0.00031588	  7.27241888	  0.99842500	  0.99916857  0.49319861
+6002	 -6.27293464	 -0.00051546	  0.00031583	  7.27241918	  0.99842527	  0.99916871  0.49319870
+6003	 -6.27293484	 -0.00051538	  0.00031578	  7.27241947	  0.99842553	  0.99916885  0.49319866
+6004	 -6.27293505	 -0.00051529	  0.00031572	  7.27241976	  0.99842579	  0.99916899  0.49319873
+6005	 -6.27293525	 -0.00051520	  0.00031567	  7.27242005	  0.99842605	  0.99916912  0.49319872
+6006	 -6.27293546	 -0.00051512	  0.00031562	  7.27242034	  0.99842632	  0.99916926  0.49319875
+6007	 -6.27293566	 -0.00051503	  0.00031557	  7.27242063	  0.99842658	  0.99916940  0.49319885
+6008	 -6.27293587	 -0.00051495	  0.00031551	  7.27242092	  0.99842684	  0.99916954  0.49319881
+6009	 -6.27293607	 -0.00051486	  0.00031546	  7.27242121	  0.99842710	  0.99916968  0.49319885
+6010	 -6.27293628	 -0.00051478	  0.00031541	  7.27242150	  0.99842736	  0.99916982  0.49319897
+6011	 -6.27293648	 -0.00051469	  0.00031536	  7.27242179	  0.99842762	  0.99916995  0.49319898
+6012	 -6.27293669	 -0.00051461	  0.00031530	  7.27242208	  0.99842789	  0.99917009  0.49319895
+6013	 -6.27293689	 -0.00051452	  0.00031525	  7.27242237	  0.99842815	  0.99917023  0.49319902
+6014	 -6.27293710	 -0.00051443	  0.00031520	  7.27242266	  0.99842841	  0.99917037  0.49319899
+6015	 -6.27293730	 -0.00051435	  0.00031515	  7.27242295	  0.99842867	  0.99917051  0.49319907
+6016	 -6.27293751	 -0.00051426	  0.00031509	  7.27242324	  0.99842893	  0.99917064  0.49319910
+6017	 -6.27293771	 -0.00051418	  0.00031504	  7.27242353	  0.99842919	  0.99917078  0.49319911
+6018	 -6.27293792	 -0.00051409	  0.00031499	  7.27242382	  0.99842945	  0.99917092  0.49319911
+6019	 -6.27293812	 -0.00051401	  0.00031494	  7.27242411	  0.99842971	  0.99917106  0.49319918
+6020	 -6.27293832	 -0.00051392	  0.00031488	  7.27242440	  0.99842997	  0.99917119  0.49319923
+6021	 -6.27293853	 -0.00051384	  0.00031483	  7.27242469	  0.99843024	  0.99917133  0.49319919
+6022	 -6.27293873	 -0.00051375	  0.00031478	  7.27242498	  0.99843050	  0.99917147  0.49319924
+6023	 -6.27293894	 -0.00051367	  0.00031473	  7.27242527	  0.99843076	  0.99917161  0.49319925
+6024	 -6.27293914	 -0.00051358	  0.00031467	  7.27242556	  0.99843102	  0.99917174  0.49319934
+6025	 -6.27293934	 -0.00051350	  0.00031462	  7.27242585	  0.99843128	  0.99917188  0.49319932
+6026	 -6.27293955	 -0.00051341	  0.00031457	  7.27242614	  0.99843154	  0.99917202  0.49319938
+6027	 -6.27293975	 -0.00051333	  0.00031452	  7.27242643	  0.99843180	  0.99917216  0.49319942
+6028	 -6.27293995	 -0.00051324	  0.00031447	  7.27242671	  0.99843206	  0.99917229  0.49319947
+6029	 -6.27294016	 -0.00051315	  0.00031441	  7.27242700	  0.99843232	  0.99917243  0.49319948
+6030	 -6.27294036	 -0.00051307	  0.00031436	  7.27242729	  0.99843258	  0.99917257  0.49319954
+6031	 -6.27294057	 -0.00051298	  0.00031431	  7.27242758	  0.99843284	  0.99917271  0.49319956
+6032	 -6.27294077	 -0.00051290	  0.00031426	  7.27242787	  0.99843310	  0.99917284  0.49319957
+6033	 -6.27294097	 -0.00051281	  0.00031421	  7.27242816	  0.99843336	  0.99917298  0.49319962
+6034	 -6.27294118	 -0.00051273	  0.00031415	  7.27242845	  0.99843362	  0.99917312  0.49319969
+6035	 -6.27294138	 -0.00051265	  0.00031410	  7.27242873	  0.99843388	  0.99917325  0.49319972
+6036	 -6.27294158	 -0.00051256	  0.00031405	  7.27242902	  0.99843414	  0.99917339  0.49319967
+6037	 -6.27294178	 -0.00051248	  0.00031400	  7.27242931	  0.99843439	  0.99917353  0.49319971
+6038	 -6.27294199	 -0.00051239	  0.00031395	  7.27242960	  0.99843465	  0.99917366  0.49319975
+6039	 -6.27294219	 -0.00051231	  0.00031389	  7.27242988	  0.99843491	  0.99917380  0.49319976
+6040	 -6.27294239	 -0.00051222	  0.00031384	  7.27243017	  0.99843517	  0.99917394  0.49319985
+6041	 -6.27294260	 -0.00051214	  0.00031379	  7.27243046	  0.99843543	  0.99917407  0.49319980
+6042	 -6.27294280	 -0.00051205	  0.00031374	  7.27243075	  0.99843569	  0.99917421  0.49319987
+6043	 -6.27294300	 -0.00051197	  0.00031369	  7.27243103	  0.99843595	  0.99917435  0.49319991
+6044	 -6.27294320	 -0.00051188	  0.00031363	  7.27243132	  0.99843621	  0.99917448  0.49319996
+6045	 -6.27294341	 -0.00051180	  0.00031358	  7.27243161	  0.99843647	  0.99917462  0.49320001
+6046	 -6.27294361	 -0.00051171	  0.00031353	  7.27243190	  0.99843673	  0.99917476  0.49319998
+6047	 -6.27294381	 -0.00051163	  0.00031348	  7.27243218	  0.99843698	  0.99917489  0.49320000
+6048	 -6.27294401	 -0.00051154	  0.00031343	  7.27243247	  0.99843724	  0.99917503  0.49320003
+6049	 -6.27294422	 -0.00051146	  0.00031337	  7.27243276	  0.99843750	  0.99917517  0.49320007
+6050	 -6.27294442	 -0.00051137	  0.00031332	  7.27243304	  0.99843776	  0.99917530  0.49320006
+6051	 -6.27294462	 -0.00051129	  0.00031327	  7.27243333	  0.99843802	  0.99917544  0.49320012
+6052	 -6.27294482	 -0.00051121	  0.00031322	  7.27243362	  0.99843827	  0.99917558  0.49320018
+6053	 -6.27294502	 -0.00051112	  0.00031317	  7.27243390	  0.99843853	  0.99917571  0.49320018
+6054	 -6.27294523	 -0.00051104	  0.00031312	  7.27243419	  0.99843879	  0.99917585  0.49320017
+6055	 -6.27294543	 -0.00051095	  0.00031306	  7.27243448	  0.99843905	  0.99917598  0.49320022
+6056	 -6.27294563	 -0.00051087	  0.00031301	  7.27243476	  0.99843931	  0.99917612  0.49320033
+6057	 -6.27294583	 -0.00051078	  0.00031296	  7.27243505	  0.99843956	  0.99917626  0.49320035
+6058	 -6.27294603	 -0.00051070	  0.00031291	  7.27243533	  0.99843982	  0.99917639  0.49320035
+6059	 -6.27294623	 -0.00051062	  0.00031286	  7.27243562	  0.99844008	  0.99917653  0.49320037
+6060	 -6.27294644	 -0.00051053	  0.00031281	  7.27243590	  0.99844034	  0.99917666  0.49320040
+6061	 -6.27294664	 -0.00051045	  0.00031275	  7.27243619	  0.99844059	  0.99917680  0.49320046
+6062	 -6.27294684	 -0.00051036	  0.00031270	  7.27243648	  0.99844085	  0.99917693  0.49320050
+6063	 -6.27294704	 -0.00051028	  0.00031265	  7.27243676	  0.99844111	  0.99917707  0.49320049
+6064	 -6.27294724	 -0.00051019	  0.00031260	  7.27243705	  0.99844136	  0.99917721  0.49320054
+6065	 -6.27294744	 -0.00051011	  0.00031255	  7.27243733	  0.99844162	  0.99917734  0.49320055
+6066	 -6.27294764	 -0.00051003	  0.00031250	  7.27243762	  0.99844188	  0.99917748  0.49320064
+6067	 -6.27294784	 -0.00050994	  0.00031244	  7.27243790	  0.99844214	  0.99917761  0.49320065
+6068	 -6.27294805	 -0.00050986	  0.00031239	  7.27243819	  0.99844239	  0.99917775  0.49320067
+6069	 -6.27294825	 -0.00050977	  0.00031234	  7.27243847	  0.99844265	  0.99917788  0.49320073
+6070	 -6.27294845	 -0.00050969	  0.00031229	  7.27243876	  0.99844291	  0.99917802  0.49320072
+6071	 -6.27294865	 -0.00050961	  0.00031224	  7.27243904	  0.99844316	  0.99917815  0.49320076
+6072	 -6.27294885	 -0.00050952	  0.00031219	  7.27243933	  0.99844342	  0.99917829  0.49320077
+6073	 -6.27294905	 -0.00050944	  0.00031214	  7.27243961	  0.99844367	  0.99917843  0.49320076
+6074	 -6.27294925	 -0.00050936	  0.00031208	  7.27243989	  0.99844393	  0.99917856  0.49320084
+6075	 -6.27294945	 -0.00050927	  0.00031203	  7.27244018	  0.99844419	  0.99917870  0.49320087
+6076	 -6.27294965	 -0.00050919	  0.00031198	  7.27244046	  0.99844444	  0.99917883  0.49320088
+6077	 -6.27294985	 -0.00050910	  0.00031193	  7.27244075	  0.99844470	  0.99917897  0.49320097
+6078	 -6.27295005	 -0.00050902	  0.00031188	  7.27244103	  0.99844495	  0.99917910  0.49320091
+6079	 -6.27295025	 -0.00050894	  0.00031183	  7.27244132	  0.99844521	  0.99917924  0.49320097
+6080	 -6.27295045	 -0.00050885	  0.00031178	  7.27244160	  0.99844547	  0.99917937  0.49320101
+6081	 -6.27295065	 -0.00050877	  0.00031173	  7.27244188	  0.99844572	  0.99917951  0.49320102
+6082	 -6.27295085	 -0.00050869	  0.00031167	  7.27244217	  0.99844598	  0.99917964  0.49320101
+6083	 -6.27295105	 -0.00050860	  0.00031162	  7.27244245	  0.99844623	  0.99917978  0.49320112
+6084	 -6.27295125	 -0.00050852	  0.00031157	  7.27244273	  0.99844649	  0.99917991  0.49320117
+6085	 -6.27295145	 -0.00050844	  0.00031152	  7.27244302	  0.99844674	  0.99918004  0.49320117
+6086	 -6.27295165	 -0.00050835	  0.00031147	  7.27244330	  0.99844700	  0.99918018  0.49320119
+6087	 -6.27295185	 -0.00050827	  0.00031142	  7.27244358	  0.99844725	  0.99918031  0.49320122
+6088	 -6.27295205	 -0.00050818	  0.00031137	  7.27244387	  0.99844751	  0.99918045  0.49320128
+6089	 -6.27295225	 -0.00050810	  0.00031132	  7.27244415	  0.99844776	  0.99918058  0.49320130
+6090	 -6.27295245	 -0.00050802	  0.00031126	  7.27244443	  0.99844802	  0.99918072  0.49320132
+6091	 -6.27295265	 -0.00050793	  0.00031121	  7.27244472	  0.99844827	  0.99918085  0.49320130
+6092	 -6.27295285	 -0.00050785	  0.00031116	  7.27244500	  0.99844853	  0.99918099  0.49320137
+6093	 -6.27295305	 -0.00050777	  0.00031111	  7.27244528	  0.99844878	  0.99918112  0.49320141
+6094	 -6.27295325	 -0.00050768	  0.00031106	  7.27244556	  0.99844904	  0.99918126  0.49320145
+6095	 -6.27295345	 -0.00050760	  0.00031101	  7.27244585	  0.99844929	  0.99918139  0.49320144
+6096	 -6.27295365	 -0.00050752	  0.00031096	  7.27244613	  0.99844955	  0.99918152  0.49320149
+6097	 -6.27295385	 -0.00050743	  0.00031091	  7.27244641	  0.99844980	  0.99918166  0.49320154
+6098	 -6.27295404	 -0.00050735	  0.00031086	  7.27244669	  0.99845005	  0.99918179  0.49320156
+6099	 -6.27295424	 -0.00050727	  0.00031081	  7.27244697	  0.99845031	  0.99918193  0.49320161
+6100	 -6.27295444	 -0.00050719	  0.00031075	  7.27244726	  0.99845056	  0.99918206  0.49320163
+6101	 -6.27295464	 -0.00050710	  0.00031070	  7.27244754	  0.99845082	  0.99918219  0.49320168
+6102	 -6.27295484	 -0.00050702	  0.00031065	  7.27244782	  0.99845107	  0.99918233  0.49320163
+6103	 -6.27295504	 -0.00050694	  0.00031060	  7.27244810	  0.99845132	  0.99918246  0.49320171
+6104	 -6.27295524	 -0.00050685	  0.00031055	  7.27244838	  0.99845158	  0.99918260  0.49320174
+6105	 -6.27295544	 -0.00050677	  0.00031050	  7.27244867	  0.99845183	  0.99918273  0.49320177
+6106	 -6.27295563	 -0.00050669	  0.00031045	  7.27244895	  0.99845208	  0.99918286  0.49320176
+6107	 -6.27295583	 -0.00050660	  0.00031040	  7.27244923	  0.99845234	  0.99918300  0.49320182
+6108	 -6.27295603	 -0.00050652	  0.00031035	  7.27244951	  0.99845259	  0.99918313  0.49320186
+6109	 -6.27295623	 -0.00050644	  0.00031030	  7.27244979	  0.99845284	  0.99918327  0.49320185
+6110	 -6.27295643	 -0.00050636	  0.00031025	  7.27245007	  0.99845310	  0.99918340  0.49320186
+6111	 -6.27295663	 -0.00050627	  0.00031019	  7.27245035	  0.99845335	  0.99918353  0.49320197
+6112	 -6.27295682	 -0.00050619	  0.00031014	  7.27245063	  0.99845360	  0.99918367  0.49320197
+6113	 -6.27295702	 -0.00050611	  0.00031009	  7.27245091	  0.99845386	  0.99918380  0.49320194
+6114	 -6.27295722	 -0.00050602	  0.00031004	  7.27245120	  0.99845411	  0.99918393  0.49320202
+6115	 -6.27295742	 -0.00050594	  0.00030999	  7.27245148	  0.99845436	  0.99918407  0.49320205
+6116	 -6.27295762	 -0.00050586	  0.00030994	  7.27245176	  0.99845462	  0.99918420  0.49320207
+6117	 -6.27295781	 -0.00050578	  0.00030989	  7.27245204	  0.99845487	  0.99918433  0.49320207
+6118	 -6.27295801	 -0.00050569	  0.00030984	  7.27245232	  0.99845512	  0.99918447  0.49320217
+6119	 -6.27295821	 -0.00050561	  0.00030979	  7.27245260	  0.99845537	  0.99918460  0.49320221
+6120	 -6.27295841	 -0.00050553	  0.00030974	  7.27245288	  0.99845563	  0.99918473  0.49320219
+6121	 -6.27295860	 -0.00050545	  0.00030969	  7.27245316	  0.99845588	  0.99918487  0.49320222
+6122	 -6.27295880	 -0.00050536	  0.00030964	  7.27245344	  0.99845613	  0.99918500  0.49320228
+6123	 -6.27295900	 -0.00050528	  0.00030959	  7.27245372	  0.99845638	  0.99918513  0.49320230
+6124	 -6.27295920	 -0.00050520	  0.00030954	  7.27245400	  0.99845663	  0.99918526  0.49320235
+6125	 -6.27295939	 -0.00050512	  0.00030949	  7.27245428	  0.99845689	  0.99918540  0.49320231
+6126	 -6.27295959	 -0.00050503	  0.00030944	  7.27245456	  0.99845714	  0.99918553  0.49320239
+6127	 -6.27295979	 -0.00050495	  0.00030938	  7.27245484	  0.99845739	  0.99918566  0.49320239
+6128	 -6.27295998	 -0.00050487	  0.00030933	  7.27245512	  0.99845764	  0.99918580  0.49320243
+6129	 -6.27296018	 -0.00050479	  0.00030928	  7.27245539	  0.99845789	  0.99918593  0.49320240
+6130	 -6.27296038	 -0.00050470	  0.00030923	  7.27245567	  0.99845814	  0.99918606  0.49320248
+6131	 -6.27296058	 -0.00050462	  0.00030918	  7.27245595	  0.99845840	  0.99918619  0.49320254
+6132	 -6.27296077	 -0.00050454	  0.00030913	  7.27245623	  0.99845865	  0.99918633  0.49320254
+6133	 -6.27296097	 -0.00050446	  0.00030908	  7.27245651	  0.99845890	  0.99918646  0.49320257
+6134	 -6.27296117	 -0.00050438	  0.00030903	  7.27245679	  0.99845915	  0.99918659  0.49320260
+6135	 -6.27296136	 -0.00050429	  0.00030898	  7.27245707	  0.99845940	  0.99918673  0.49320260
+6136	 -6.27296156	 -0.00050421	  0.00030893	  7.27245735	  0.99845965	  0.99918686  0.49320264
+6137	 -6.27296176	 -0.00050413	  0.00030888	  7.27245763	  0.99845990	  0.99918699  0.49320270
+6138	 -6.27296195	 -0.00050405	  0.00030883	  7.27245790	  0.99846015	  0.99918712  0.49320271
+6139	 -6.27296215	 -0.00050397	  0.00030878	  7.27245818	  0.99846040	  0.99918726  0.49320271
+6140	 -6.27296234	 -0.00050388	  0.00030873	  7.27245846	  0.99846066	  0.99918739  0.49320279
+6141	 -6.27296254	 -0.00050380	  0.00030868	  7.27245874	  0.99846091	  0.99918752  0.49320285
+6142	 -6.27296274	 -0.00050372	  0.00030863	  7.27245902	  0.99846116	  0.99918765  0.49320278
+6143	 -6.27296293	 -0.00050364	  0.00030858	  7.27245930	  0.99846141	  0.99918778  0.49320286
+6144	 -6.27296313	 -0.00050356	  0.00030853	  7.27245957	  0.99846166	  0.99918792  0.49320284
+6145	 -6.27296332	 -0.00050347	  0.00030848	  7.27245985	  0.99846191	  0.99918805  0.49320294
+6146	 -6.27296352	 -0.00050339	  0.00030843	  7.27246013	  0.99846216	  0.99918818  0.49320297
+6147	 -6.27296372	 -0.00050331	  0.00030838	  7.27246041	  0.99846241	  0.99918831  0.49320295
+6148	 -6.27296391	 -0.00050323	  0.00030833	  7.27246068	  0.99846266	  0.99918844  0.49320301
+6149	 -6.27296411	 -0.00050315	  0.00030828	  7.27246096	  0.99846291	  0.99918858  0.49320303
+6150	 -6.27296430	 -0.00050306	  0.00030823	  7.27246124	  0.99846316	  0.99918871  0.49320305
+6151	 -6.27296450	 -0.00050298	  0.00030818	  7.27246152	  0.99846341	  0.99918884  0.49320310
+6152	 -6.27296469	 -0.00050290	  0.00030813	  7.27246179	  0.99846366	  0.99918897  0.49320314
+6153	 -6.27296489	 -0.00050282	  0.00030808	  7.27246207	  0.99846391	  0.99918910  0.49320318
+6154	 -6.27296509	 -0.00050274	  0.00030803	  7.27246235	  0.99846416	  0.99918924  0.49320319
+6155	 -6.27296528	 -0.00050266	  0.00030798	  7.27246263	  0.99846441	  0.99918937  0.49320326
+6156	 -6.27296548	 -0.00050257	  0.00030793	  7.27246290	  0.99846466	  0.99918950  0.49320325
+6157	 -6.27296567	 -0.00050249	  0.00030788	  7.27246318	  0.99846490	  0.99918963  0.49320329
+6158	 -6.27296587	 -0.00050241	  0.00030783	  7.27246346	  0.99846515	  0.99918976  0.49320330
+6159	 -6.27296606	 -0.00050233	  0.00030778	  7.27246373	  0.99846540	  0.99918989  0.49320333
+6160	 -6.27296626	 -0.00050225	  0.00030773	  7.27246401	  0.99846565	  0.99919002  0.49320339
+6161	 -6.27296645	 -0.00050217	  0.00030768	  7.27246429	  0.99846590	  0.99919016  0.49320339
+6162	 -6.27296665	 -0.00050209	  0.00030763	  7.27246456	  0.99846615	  0.99919029  0.49320338
+6163	 -6.27296684	 -0.00050200	  0.00030758	  7.27246484	  0.99846640	  0.99919042  0.49320344
+6164	 -6.27296704	 -0.00050192	  0.00030753	  7.27246511	  0.99846665	  0.99919055  0.49320353
+6165	 -6.27296723	 -0.00050184	  0.00030748	  7.27246539	  0.99846690	  0.99919068  0.49320349
+6166	 -6.27296743	 -0.00050176	  0.00030743	  7.27246567	  0.99846715	  0.99919081  0.49320357
+6167	 -6.27296762	 -0.00050168	  0.00030738	  7.27246594	  0.99846739	  0.99919094  0.49320354
+6168	 -6.27296781	 -0.00050160	  0.00030733	  7.27246622	  0.99846764	  0.99919108  0.49320360
+6169	 -6.27296801	 -0.00050152	  0.00030728	  7.27246649	  0.99846789	  0.99919121  0.49320366
+6170	 -6.27296820	 -0.00050143	  0.00030723	  7.27246677	  0.99846814	  0.99919134  0.49320363
+6171	 -6.27296840	 -0.00050135	  0.00030718	  7.27246704	  0.99846839	  0.99919147  0.49320369
+6172	 -6.27296859	 -0.00050127	  0.00030713	  7.27246732	  0.99846864	  0.99919160  0.49320376
+6173	 -6.27296879	 -0.00050119	  0.00030708	  7.27246760	  0.99846888	  0.99919173  0.49320377
+6174	 -6.27296898	 -0.00050111	  0.00030703	  7.27246787	  0.99846913	  0.99919186  0.49320381
+6175	 -6.27296917	 -0.00050103	  0.00030698	  7.27246815	  0.99846938	  0.99919199  0.49320377
+6176	 -6.27296937	 -0.00050095	  0.00030693	  7.27246842	  0.99846963	  0.99919212  0.49320384
+6177	 -6.27296956	 -0.00050087	  0.00030688	  7.27246870	  0.99846987	  0.99919225  0.49320380
+6178	 -6.27296976	 -0.00050079	  0.00030683	  7.27246897	  0.99847012	  0.99919238  0.49320387
+6179	 -6.27296995	 -0.00050070	  0.00030678	  7.27246925	  0.99847037	  0.99919251  0.49320387
+6180	 -6.27297014	 -0.00050062	  0.00030673	  7.27246952	  0.99847062	  0.99919265  0.49320397
+6181	 -6.27297034	 -0.00050054	  0.00030668	  7.27246980	  0.99847086	  0.99919278  0.49320397
+6182	 -6.27297053	 -0.00050046	  0.00030663	  7.27247007	  0.99847111	  0.99919291  0.49320399
+6183	 -6.27297073	 -0.00050038	  0.00030658	  7.27247034	  0.99847136	  0.99919304  0.49320405
+6184	 -6.27297092	 -0.00050030	  0.00030653	  7.27247062	  0.99847161	  0.99919317  0.49320409
+6185	 -6.27297111	 -0.00050022	  0.00030648	  7.27247089	  0.99847185	  0.99919330  0.49320412
+6186	 -6.27297131	 -0.00050014	  0.00030643	  7.27247117	  0.99847210	  0.99919343  0.49320414
+6187	 -6.27297150	 -0.00050006	  0.00030638	  7.27247144	  0.99847235	  0.99919356  0.49320414
+6188	 -6.27297169	 -0.00049998	  0.00030633	  7.27247172	  0.99847259	  0.99919369  0.49320417
+6189	 -6.27297189	 -0.00049990	  0.00030629	  7.27247199	  0.99847284	  0.99919382  0.49320418
+6190	 -6.27297208	 -0.00049982	  0.00030624	  7.27247226	  0.99847309	  0.99919395  0.49320420
+6191	 -6.27297227	 -0.00049973	  0.00030619	  7.27247254	  0.99847333	  0.99919408  0.49320426
+6192	 -6.27297246	 -0.00049965	  0.00030614	  7.27247281	  0.99847358	  0.99919421  0.49320420
+6193	 -6.27297266	 -0.00049957	  0.00030609	  7.27247308	  0.99847383	  0.99919434  0.49320435
+6194	 -6.27297285	 -0.00049949	  0.00030604	  7.27247336	  0.99847407	  0.99919447  0.49320431
+6195	 -6.27297304	 -0.00049941	  0.00030599	  7.27247363	  0.99847432	  0.99919460  0.49320437
+6196	 -6.27297324	 -0.00049933	  0.00030594	  7.27247390	  0.99847457	  0.99919473  0.49320437
+6197	 -6.27297343	 -0.00049925	  0.00030589	  7.27247418	  0.99847481	  0.99919486  0.49320443
+6198	 -6.27297362	 -0.00049917	  0.00030584	  7.27247445	  0.99847506	  0.99919499  0.49320448
+6199	 -6.27297381	 -0.00049909	  0.00030579	  7.27247472	  0.99847530	  0.99919512  0.49320448
+6200	 -6.27297401	 -0.00049901	  0.00030574	  7.27247500	  0.99847555	  0.99919525  0.49320449
+6201	 -6.27297420	 -0.00049893	  0.00030569	  7.27247527	  0.99847580	  0.99919538  0.49320451
+6202	 -6.27297439	 -0.00049885	  0.00030564	  7.27247554	  0.99847604	  0.99919551  0.49320453
+6203	 -6.27297458	 -0.00049877	  0.00030559	  7.27247582	  0.99847629	  0.99919564  0.49320461
+6204	 -6.27297478	 -0.00049869	  0.00030554	  7.27247609	  0.99847653	  0.99919577  0.49320461
+6205	 -6.27297497	 -0.00049861	  0.00030550	  7.27247636	  0.99847678	  0.99919590  0.49320465
+6206	 -6.27297516	 -0.00049853	  0.00030545	  7.27247663	  0.99847702	  0.99919603  0.49320475
+6207	 -6.27297535	 -0.00049845	  0.00030540	  7.27247691	  0.99847727	  0.99919616  0.49320473
+6208	 -6.27297554	 -0.00049837	  0.00030535	  7.27247718	  0.99847751	  0.99919629  0.49320474
+6209	 -6.27297574	 -0.00049829	  0.00030530	  7.27247745	  0.99847776	  0.99919641  0.49320475
+6210	 -6.27297593	 -0.00049821	  0.00030525	  7.27247772	  0.99847800	  0.99919654  0.49320486
+6211	 -6.27297612	 -0.00049813	  0.00030520	  7.27247799	  0.99847825	  0.99919667  0.49320483
+6212	 -6.27297631	 -0.00049805	  0.00030515	  7.27247827	  0.99847849	  0.99919680  0.49320494
+6213	 -6.27297650	 -0.00049797	  0.00030510	  7.27247854	  0.99847874	  0.99919693  0.49320494
+6214	 -6.27297670	 -0.00049789	  0.00030505	  7.27247881	  0.99847898	  0.99919706  0.49320488
+6215	 -6.27297689	 -0.00049781	  0.00030500	  7.27247908	  0.99847923	  0.99919719  0.49320497
+6216	 -6.27297708	 -0.00049773	  0.00030495	  7.27247935	  0.99847947	  0.99919732  0.49320498
+6217	 -6.27297727	 -0.00049765	  0.00030491	  7.27247962	  0.99847972	  0.99919745  0.49320504
+6218	 -6.27297746	 -0.00049757	  0.00030486	  7.27247990	  0.99847996	  0.99919758  0.49320498
+6219	 -6.27297765	 -0.00049749	  0.00030481	  7.27248017	  0.99848021	  0.99919771  0.49320508
+6220	 -6.27297784	 -0.00049741	  0.00030476	  7.27248044	  0.99848045	  0.99919784  0.49320506
+6221	 -6.27297804	 -0.00049733	  0.00030471	  7.27248071	  0.99848070	  0.99919796  0.49320512
+6222	 -6.27297823	 -0.00049725	  0.00030466	  7.27248098	  0.99848094	  0.99919809  0.49320520
+6223	 -6.27297842	 -0.00049717	  0.00030461	  7.27248125	  0.99848118	  0.99919822  0.49320518
+6224	 -6.27297861	 -0.00049709	  0.00030456	  7.27248152	  0.99848143	  0.99919835  0.49320519
+6225	 -6.27297880	 -0.00049701	  0.00030451	  7.27248179	  0.99848167	  0.99919848  0.49320524
+6226	 -6.27297899	 -0.00049693	  0.00030446	  7.27248206	  0.99848192	  0.99919861  0.49320527
+6227	 -6.27297918	 -0.00049685	  0.00030442	  7.27248233	  0.99848216	  0.99919874  0.49320529
+6228	 -6.27297937	 -0.00049677	  0.00030437	  7.27248260	  0.99848240	  0.99919887  0.49320530
+6229	 -6.27297956	 -0.00049669	  0.00030432	  7.27248288	  0.99848265	  0.99919899  0.49320533
+6230	 -6.27297975	 -0.00049661	  0.00030427	  7.27248315	  0.99848289	  0.99919912  0.49320533
+6231	 -6.27297994	 -0.00049653	  0.00030422	  7.27248342	  0.99848313	  0.99919925  0.49320545
+6232	 -6.27298013	 -0.00049645	  0.00030417	  7.27248369	  0.99848338	  0.99919938  0.49320550
+6233	 -6.27298033	 -0.00049637	  0.00030412	  7.27248396	  0.99848362	  0.99919951  0.49320544
+6234	 -6.27298052	 -0.00049629	  0.00030407	  7.27248423	  0.99848386	  0.99919964  0.49320542
+6235	 -6.27298071	 -0.00049621	  0.00030403	  7.27248450	  0.99848411	  0.99919976  0.49320549
+6236	 -6.27298090	 -0.00049613	  0.00030398	  7.27248477	  0.99848435	  0.99919989  0.49320553
+6237	 -6.27298109	 -0.00049605	  0.00030393	  7.27248504	  0.99848459	  0.99920002  0.49320549
+6238	 -6.27298128	 -0.00049597	  0.00030388	  7.27248531	  0.99848484	  0.99920015  0.49320559
+6239	 -6.27298147	 -0.00049589	  0.00030383	  7.27248557	  0.99848508	  0.99920028  0.49320560
+6240	 -6.27298166	 -0.00049581	  0.00030378	  7.27248584	  0.99848532	  0.99920041  0.49320562
+6241	 -6.27298185	 -0.00049573	  0.00030373	  7.27248611	  0.99848556	  0.99920053  0.49320572
+6242	 -6.27298204	 -0.00049565	  0.00030368	  7.27248638	  0.99848581	  0.99920066  0.49320570
+6243	 -6.27298223	 -0.00049557	  0.00030364	  7.27248665	  0.99848605	  0.99920079  0.49320571
+6244	 -6.27298242	 -0.00049550	  0.00030359	  7.27248692	  0.99848629	  0.99920092  0.49320573
+6245	 -6.27298261	 -0.00049542	  0.00030354	  7.27248719	  0.99848653	  0.99920105  0.49320576
+6246	 -6.27298280	 -0.00049534	  0.00030349	  7.27248746	  0.99848678	  0.99920117  0.49320585
+6247	 -6.27298299	 -0.00049526	  0.00030344	  7.27248773	  0.99848702	  0.99920130  0.49320584
+6248	 -6.27298318	 -0.00049518	  0.00030339	  7.27248800	  0.99848726	  0.99920143  0.49320590
+6249	 -6.27298336	 -0.00049510	  0.00030334	  7.27248827	  0.99848750	  0.99920156  0.49320592
+6250	 -6.27298355	 -0.00049502	  0.00030330	  7.27248853	  0.99848774	  0.99920168  0.49320594
+6251	 -6.27298374	 -0.00049494	  0.00030325	  7.27248880	  0.99848799	  0.99920181  0.49320595
+6252	 -6.27298393	 -0.00049486	  0.00030320	  7.27248907	  0.99848823	  0.99920194  0.49320597
+6253	 -6.27298412	 -0.00049478	  0.00030315	  7.27248934	  0.99848847	  0.99920207  0.49320596
+6254	 -6.27298431	 -0.00049470	  0.00030310	  7.27248961	  0.99848871	  0.99920220  0.49320603
+6255	 -6.27298450	 -0.00049462	  0.00030305	  7.27248988	  0.99848895	  0.99920232  0.49320613
+6256	 -6.27298469	 -0.00049455	  0.00030300	  7.27249014	  0.99848919	  0.99920245  0.49320607
+6257	 -6.27298488	 -0.00049447	  0.00030296	  7.27249041	  0.99848944	  0.99920258  0.49320616
+6258	 -6.27298507	 -0.00049439	  0.00030291	  7.27249068	  0.99848968	  0.99920270  0.49320618
+6259	 -6.27298526	 -0.00049431	  0.00030286	  7.27249095	  0.99848992	  0.99920283  0.49320613
+6260	 -6.27298545	 -0.00049423	  0.00030281	  7.27249122	  0.99849016	  0.99920296  0.49320620
+6261	 -6.27298563	 -0.00049415	  0.00030276	  7.27249148	  0.99849040	  0.99920309  0.49320622
+6262	 -6.27298582	 -0.00049407	  0.00030271	  7.27249175	  0.99849064	  0.99920321  0.49320626
+6263	 -6.27298601	 -0.00049399	  0.00030267	  7.27249202	  0.99849088	  0.99920334  0.49320625
+6264	 -6.27298620	 -0.00049391	  0.00030262	  7.27249229	  0.99849112	  0.99920347  0.49320640
+6265	 -6.27298639	 -0.00049384	  0.00030257	  7.27249255	  0.99849136	  0.99920360  0.49320640
+6266	 -6.27298658	 -0.00049376	  0.00030252	  7.27249282	  0.99849161	  0.99920372  0.49320636
+6267	 -6.27298677	 -0.00049368	  0.00030247	  7.27249309	  0.99849185	  0.99920385  0.49320641
+6268	 -6.27298695	 -0.00049360	  0.00030242	  7.27249336	  0.99849209	  0.99920398  0.49320644
+6269	 -6.27298714	 -0.00049352	  0.00030238	  7.27249362	  0.99849233	  0.99920410  0.49320643
+6270	 -6.27298733	 -0.00049344	  0.00030233	  7.27249389	  0.99849257	  0.99920423  0.49320647
+6271	 -6.27298752	 -0.00049336	  0.00030228	  7.27249416	  0.99849281	  0.99920436  0.49320649
+6272	 -6.27298771	 -0.00049328	  0.00030223	  7.27249442	  0.99849305	  0.99920448  0.49320659
+6273	 -6.27298790	 -0.00049321	  0.00030218	  7.27249469	  0.99849329	  0.99920461  0.49320657
+6274	 -6.27298808	 -0.00049313	  0.00030214	  7.27249496	  0.99849353	  0.99920474  0.49320661
+6275	 -6.27298827	 -0.00049305	  0.00030209	  7.27249522	  0.99849377	  0.99920486  0.49320660
+6276	 -6.27298846	 -0.00049297	  0.00030204	  7.27249549	  0.99849401	  0.99920499  0.49320663
+6277	 -6.27298865	 -0.00049289	  0.00030199	  7.27249576	  0.99849425	  0.99920512  0.49320673
+6278	 -6.27298883	 -0.00049281	  0.00030194	  7.27249602	  0.99849449	  0.99920524  0.49320673
+6279	 -6.27298902	 -0.00049273	  0.00030189	  7.27249629	  0.99849473	  0.99920537  0.49320669
+6280	 -6.27298921	 -0.00049266	  0.00030185	  7.27249655	  0.99849497	  0.99920550  0.49320677
+6281	 -6.27298940	 -0.00049258	  0.00030180	  7.27249682	  0.99849521	  0.99920562  0.49320680
+6282	 -6.27298959	 -0.00049250	  0.00030175	  7.27249709	  0.99849545	  0.99920575  0.49320687
+6283	 -6.27298977	 -0.00049242	  0.00030170	  7.27249735	  0.99849569	  0.99920588  0.49320693
+6284	 -6.27298996	 -0.00049234	  0.00030165	  7.27249762	  0.99849593	  0.99920600  0.49320681
+6285	 -6.27299015	 -0.00049226	  0.00030161	  7.27249788	  0.99849616	  0.99920613  0.49320699
+6286	 -6.27299033	 -0.00049219	  0.00030156	  7.27249815	  0.99849640	  0.99920626  0.49320687
+6287	 -6.27299052	 -0.00049211	  0.00030151	  7.27249841	  0.99849664	  0.99920638  0.49320699
+6288	 -6.27299071	 -0.00049203	  0.00030146	  7.27249868	  0.99849688	  0.99920651  0.49320705
+6289	 -6.27299090	 -0.00049195	  0.00030141	  7.27249894	  0.99849712	  0.99920663  0.49320709
+6290	 -6.27299108	 -0.00049187	  0.00030137	  7.27249921	  0.99849736	  0.99920676  0.49320704
+6291	 -6.27299127	 -0.00049180	  0.00030132	  7.27249948	  0.99849760	  0.99920689  0.49320700
+6292	 -6.27299146	 -0.00049172	  0.00030127	  7.27249974	  0.99849784	  0.99920701  0.49320709
+6293	 -6.27299164	 -0.00049164	  0.00030122	  7.27250001	  0.99849808	  0.99920714  0.49320722
+6294	 -6.27299183	 -0.00049156	  0.00030118	  7.27250027	  0.99849831	  0.99920726  0.49320713
+6295	 -6.27299202	 -0.00049148	  0.00030113	  7.27250053	  0.99849855	  0.99920739  0.49320717
+6296	 -6.27299220	 -0.00049140	  0.00030108	  7.27250080	  0.99849879	  0.99920752  0.49320720
+6297	 -6.27299239	 -0.00049133	  0.00030103	  7.27250106	  0.99849903	  0.99920764  0.49320724
+6298	 -6.27299258	 -0.00049125	  0.00030098	  7.27250133	  0.99849927	  0.99920777  0.49320731
+6299	 -6.27299276	 -0.00049117	  0.00030094	  7.27250159	  0.99849951	  0.99920789  0.49320733
+6300	 -6.27299295	 -0.00049109	  0.00030089	  7.27250186	  0.99849974	  0.99920802  0.49320736
+6301	 -6.27299314	 -0.00049102	  0.00030084	  7.27250212	  0.99849998	  0.99920814  0.49320742
+6302	 -6.27299332	 -0.00049094	  0.00030079	  7.27250239	  0.99850022	  0.99920827  0.49320737
+6303	 -6.27299351	 -0.00049086	  0.00030075	  7.27250265	  0.99850046	  0.99920840  0.49320741
+6304	 -6.27299370	 -0.00049078	  0.00030070	  7.27250291	  0.99850070	  0.99920852  0.49320747
+6305	 -6.27299388	 -0.00049070	  0.00030065	  7.27250318	  0.99850093	  0.99920865  0.49320746
+6306	 -6.27299407	 -0.00049063	  0.00030060	  7.27250344	  0.99850117	  0.99920877  0.49320747
+6307	 -6.27299425	 -0.00049055	  0.00030055	  7.27250371	  0.99850141	  0.99920890  0.49320753
+6308	 -6.27299444	 -0.00049047	  0.00030051	  7.27250397	  0.99850165	  0.99920902  0.49320754
+6309	 -6.27299463	 -0.00049039	  0.00030046	  7.27250423	  0.99850188	  0.99920915  0.49320761
+6310	 -6.27299481	 -0.00049032	  0.00030041	  7.27250450	  0.99850212	  0.99920927  0.49320761
+6311	 -6.27299500	 -0.00049024	  0.00030036	  7.27250476	  0.99850236	  0.99920940  0.49320763
+6312	 -6.27299518	 -0.00049016	  0.00030032	  7.27250502	  0.99850260	  0.99920952  0.49320763
+6313	 -6.27299537	 -0.00049008	  0.00030027	  7.27250529	  0.99850283	  0.99920965  0.49320764
+6314	 -6.27299556	 -0.00049000	  0.00030022	  7.27250555	  0.99850307	  0.99920977  0.49320768
+6315	 -6.27299574	 -0.00048993	  0.00030017	  7.27250581	  0.99850331	  0.99920990  0.49320774
+6316	 -6.27299593	 -0.00048985	  0.00030013	  7.27250608	  0.99850354	  0.99921002  0.49320770
+6317	 -6.27299611	 -0.00048977	  0.00030008	  7.27250634	  0.99850378	  0.99921015  0.49320782
+6318	 -6.27299630	 -0.00048969	  0.00030003	  7.27250660	  0.99850402	  0.99921027  0.49320781
+6319	 -6.27299648	 -0.00048962	  0.00029998	  7.27250687	  0.99850426	  0.99921040  0.49320784
+6320	 -6.27299667	 -0.00048954	  0.00029994	  7.27250713	  0.99850449	  0.99921052  0.49320787
+6321	 -6.27299685	 -0.00048946	  0.00029989	  7.27250739	  0.99850473	  0.99921065  0.49320791
+6322	 -6.27299704	 -0.00048938	  0.00029984	  7.27250765	  0.99850496	  0.99921077  0.49320794
+6323	 -6.27299722	 -0.00048931	  0.00029979	  7.27250792	  0.99850520	  0.99921090  0.49320795
+6324	 -6.27299741	 -0.00048923	  0.00029975	  7.27250818	  0.99850544	  0.99921102  0.49320801
+6325	 -6.27299759	 -0.00048915	  0.00029970	  7.27250844	  0.99850567	  0.99921115  0.49320802
+6326	 -6.27299778	 -0.00048908	  0.00029965	  7.27250870	  0.99850591	  0.99921127  0.49320805
+6327	 -6.27299796	 -0.00048900	  0.00029960	  7.27250896	  0.99850615	  0.99921140  0.49320810
+6328	 -6.27299815	 -0.00048892	  0.00029956	  7.27250923	  0.99850638	  0.99921152  0.49320806
+6329	 -6.27299833	 -0.00048884	  0.00029951	  7.27250949	  0.99850662	  0.99921165  0.49320815
+6330	 -6.27299852	 -0.00048877	  0.00029946	  7.27250975	  0.99850685	  0.99921177  0.49320816
+6331	 -6.27299870	 -0.00048869	  0.00029941	  7.27251001	  0.99850709	  0.99921190  0.49320817
+6332	 -6.27299889	 -0.00048861	  0.00029937	  7.27251027	  0.99850733	  0.99921202  0.49320820
+6333	 -6.27299907	 -0.00048854	  0.00029932	  7.27251054	  0.99850756	  0.99921214  0.49320826
+6334	 -6.27299926	 -0.00048846	  0.00029927	  7.27251080	  0.99850780	  0.99921227  0.49320827
+6335	 -6.27299944	 -0.00048838	  0.00029923	  7.27251106	  0.99850803	  0.99921239  0.49320823
+6336	 -6.27299962	 -0.00048830	  0.00029918	  7.27251132	  0.99850827	  0.99921252  0.49320833
+6337	 -6.27299981	 -0.00048823	  0.00029913	  7.27251158	  0.99850850	  0.99921264  0.49320833
+6338	 -6.27299999	 -0.00048815	  0.00029908	  7.27251184	  0.99850874	  0.99921277  0.49320839
+6339	 -6.27300018	 -0.00048807	  0.00029904	  7.27251210	  0.99850897	  0.99921289  0.49320841
+6340	 -6.27300036	 -0.00048800	  0.00029899	  7.27251236	  0.99850921	  0.99921301  0.49320850
+6341	 -6.27300055	 -0.00048792	  0.00029894	  7.27251263	  0.99850944	  0.99921314  0.49320846
+6342	 -6.27300073	 -0.00048784	  0.00029890	  7.27251289	  0.99850968	  0.99921326  0.49320848
+6343	 -6.27300091	 -0.00048777	  0.00029885	  7.27251315	  0.99850991	  0.99921339  0.49320847
+6344	 -6.27300110	 -0.00048769	  0.00029880	  7.27251341	  0.99851015	  0.99921351  0.49320858
+6345	 -6.27300128	 -0.00048761	  0.00029875	  7.27251367	  0.99851038	  0.99921363  0.49320864
+6346	 -6.27300146	 -0.00048754	  0.00029871	  7.27251393	  0.99851062	  0.99921376  0.49320855
+6347	 -6.27300165	 -0.00048746	  0.00029866	  7.27251419	  0.99851085	  0.99921388  0.49320856
+6348	 -6.27300183	 -0.00048738	  0.00029861	  7.27251445	  0.99851109	  0.99921401  0.49320863
+6349	 -6.27300202	 -0.00048730	  0.00029857	  7.27251471	  0.99851132	  0.99921413  0.49320867
+6350	 -6.27300220	 -0.00048723	  0.00029852	  7.27251497	  0.99851156	  0.99921425  0.49320861
+6351	 -6.27300238	 -0.00048715	  0.00029847	  7.27251523	  0.99851179	  0.99921438  0.49320874
+6352	 -6.27300257	 -0.00048707	  0.00029842	  7.27251549	  0.99851202	  0.99921450  0.49320874
+6353	 -6.27300275	 -0.00048700	  0.00029838	  7.27251575	  0.99851226	  0.99921462  0.49320881
+6354	 -6.27300293	 -0.00048692	  0.00029833	  7.27251601	  0.99851249	  0.99921475  0.49320880
+6355	 -6.27300312	 -0.00048685	  0.00029828	  7.27251627	  0.99851273	  0.99921487  0.49320887
+6356	 -6.27300330	 -0.00048677	  0.00029824	  7.27251653	  0.99851296	  0.99921499  0.49320886
+6357	 -6.27300348	 -0.00048669	  0.00029819	  7.27251679	  0.99851320	  0.99921512  0.49320893
+6358	 -6.27300367	 -0.00048662	  0.00029814	  7.27251705	  0.99851343	  0.99921524  0.49320893
+6359	 -6.27300385	 -0.00048654	  0.00029810	  7.27251731	  0.99851366	  0.99921536  0.49320895
+6360	 -6.27300403	 -0.00048646	  0.00029805	  7.27251757	  0.99851390	  0.99921549  0.49320892
+6361	 -6.27300421	 -0.00048639	  0.00029800	  7.27251783	  0.99851413	  0.99921561  0.49320898
+6362	 -6.27300440	 -0.00048631	  0.00029796	  7.27251809	  0.99851436	  0.99921573  0.49320901
+6363	 -6.27300458	 -0.00048623	  0.00029791	  7.27251835	  0.99851460	  0.99921586  0.49320901
+6364	 -6.27300476	 -0.00048616	  0.00029786	  7.27251861	  0.99851483	  0.99921598  0.49320912
+6365	 -6.27300495	 -0.00048608	  0.00029782	  7.27251886	  0.99851506	  0.99921610  0.49320910
+6366	 -6.27300513	 -0.00048600	  0.00029777	  7.27251912	  0.99851530	  0.99921623  0.49320913
+6367	 -6.27300531	 -0.00048593	  0.00029772	  7.27251938	  0.99851553	  0.99921635  0.49320917
+6368	 -6.27300549	 -0.00048585	  0.00029768	  7.27251964	  0.99851576	  0.99921647  0.49320916
+6369	 -6.27300568	 -0.00048578	  0.00029763	  7.27251990	  0.99851600	  0.99921660  0.49320920
+6370	 -6.27300586	 -0.00048570	  0.00029758	  7.27252016	  0.99851623	  0.99921672  0.49320924
+6371	 -6.27300604	 -0.00048562	  0.00029753	  7.27252042	  0.99851646	  0.99921684  0.49320926
+6372	 -6.27300622	 -0.00048555	  0.00029749	  7.27252068	  0.99851669	  0.99921696  0.49320930
+6373	 -6.27300640	 -0.00048547	  0.00029744	  7.27252093	  0.99851693	  0.99921709  0.49320931
+6374	 -6.27300659	 -0.00048539	  0.00029739	  7.27252119	  0.99851716	  0.99921721  0.49320938
+6375	 -6.27300677	 -0.00048532	  0.00029735	  7.27252145	  0.99851739	  0.99921733  0.49320939
+6376	 -6.27300695	 -0.00048524	  0.00029730	  7.27252171	  0.99851763	  0.99921746  0.49320948
+6377	 -6.27300713	 -0.00048517	  0.00029725	  7.27252197	  0.99851786	  0.99921758  0.49320954
+6378	 -6.27300732	 -0.00048509	  0.00029721	  7.27252222	  0.99851809	  0.99921770  0.49320950
+6379	 -6.27300750	 -0.00048501	  0.00029716	  7.27252248	  0.99851832	  0.99921782  0.49320952
+6380	 -6.27300768	 -0.00048494	  0.00029712	  7.27252274	  0.99851855	  0.99921795  0.49320954
+6381	 -6.27300786	 -0.00048486	  0.00029707	  7.27252300	  0.99851879	  0.99921807  0.49320960
+6382	 -6.27300804	 -0.00048479	  0.00029702	  7.27252326	  0.99851902	  0.99921819  0.49320959
+6383	 -6.27300822	 -0.00048471	  0.00029698	  7.27252351	  0.99851925	  0.99921831  0.49320958
+6384	 -6.27300841	 -0.00048463	  0.00029693	  7.27252377	  0.99851948	  0.99921844  0.49320965
+6385	 -6.27300859	 -0.00048456	  0.00029688	  7.27252403	  0.99851971	  0.99921856  0.49320967
+6386	 -6.27300877	 -0.00048448	  0.00029684	  7.27252429	  0.99851995	  0.99921868  0.49320972
+6387	 -6.27300895	 -0.00048441	  0.00029679	  7.27252454	  0.99852018	  0.99921880  0.49320973
+6388	 -6.27300913	 -0.00048433	  0.00029674	  7.27252480	  0.99852041	  0.99921893  0.49320972
+6389	 -6.27300931	 -0.00048426	  0.00029670	  7.27252506	  0.99852064	  0.99921905  0.49320980
+6390	 -6.27300949	 -0.00048418	  0.00029665	  7.27252531	  0.99852087	  0.99921917  0.49320981
+6391	 -6.27300968	 -0.00048410	  0.00029660	  7.27252557	  0.99852110	  0.99921929  0.49320974
+6392	 -6.27300986	 -0.00048403	  0.00029656	  7.27252583	  0.99852134	  0.99921941  0.49320985
+6393	 -6.27301004	 -0.00048395	  0.00029651	  7.27252608	  0.99852157	  0.99921954  0.49320992
+6394	 -6.27301022	 -0.00048388	  0.00029646	  7.27252634	  0.99852180	  0.99921966  0.49320992
+6395	 -6.27301040	 -0.00048380	  0.00029642	  7.27252660	  0.99852203	  0.99921978  0.49320993
+6396	 -6.27301058	 -0.00048373	  0.00029637	  7.27252685	  0.99852226	  0.99921990  0.49320993
+6397	 -6.27301076	 -0.00048365	  0.00029633	  7.27252711	  0.99852249	  0.99922002  0.49321001
+6398	 -6.27301094	 -0.00048357	  0.00029628	  7.27252737	  0.99852272	  0.99922015  0.49321003
+6399	 -6.27301112	 -0.00048350	  0.00029623	  7.27252762	  0.99852295	  0.99922027  0.49321005
+6400	 -6.27301130	 -0.00048342	  0.00029619	  7.27252788	  0.99852318	  0.99922039  0.49321008
+6401	 -6.27301148	 -0.00048335	  0.00029614	  7.27252814	  0.99852341	  0.99922051  0.49321008
+6402	 -6.27301166	 -0.00048327	  0.00029609	  7.27252839	  0.99852364	  0.99922063  0.49321010
+6403	 -6.27301185	 -0.00048320	  0.00029605	  7.27252865	  0.99852388	  0.99922075  0.49321017
+6404	 -6.27301203	 -0.00048312	  0.00029600	  7.27252890	  0.99852411	  0.99922088  0.49321023
+6405	 -6.27301221	 -0.00048305	  0.00029596	  7.27252916	  0.99852434	  0.99922100  0.49321020
+6406	 -6.27301239	 -0.00048297	  0.00029591	  7.27252942	  0.99852457	  0.99922112  0.49321023
+6407	 -6.27301257	 -0.00048290	  0.00029586	  7.27252967	  0.99852480	  0.99922124  0.49321024
+6408	 -6.27301275	 -0.00048282	  0.00029582	  7.27252993	  0.99852503	  0.99922136  0.49321030
+6409	 -6.27301293	 -0.00048275	  0.00029577	  7.27253018	  0.99852526	  0.99922148  0.49321031
+6410	 -6.27301311	 -0.00048267	  0.00029572	  7.27253044	  0.99852549	  0.99922161  0.49321030
+6411	 -6.27301329	 -0.00048259	  0.00029568	  7.27253069	  0.99852572	  0.99922173  0.49321030
+6412	 -6.27301347	 -0.00048252	  0.00029563	  7.27253095	  0.99852595	  0.99922185  0.49321039
+6413	 -6.27301365	 -0.00048244	  0.00029559	  7.27253120	  0.99852618	  0.99922197  0.49321037
+6414	 -6.27301383	 -0.00048237	  0.00029554	  7.27253146	  0.99852641	  0.99922209  0.49321046
+6415	 -6.27301401	 -0.00048229	  0.00029549	  7.27253171	  0.99852664	  0.99922221  0.49321048
+6416	 -6.27301419	 -0.00048222	  0.00029545	  7.27253197	  0.99852687	  0.99922233  0.49321049
+6417	 -6.27301437	 -0.00048214	  0.00029540	  7.27253222	  0.99852710	  0.99922245  0.49321046
+6418	 -6.27301455	 -0.00048207	  0.00029536	  7.27253248	  0.99852732	  0.99922258  0.49321053
+6419	 -6.27301473	 -0.00048199	  0.00029531	  7.27253273	  0.99852755	  0.99922270  0.49321060
+6420	 -6.27301491	 -0.00048192	  0.00029526	  7.27253299	  0.99852778	  0.99922282  0.49321066
+6421	 -6.27301509	 -0.00048184	  0.00029522	  7.27253324	  0.99852801	  0.99922294  0.49321062
+6422	 -6.27301526	 -0.00048177	  0.00029517	  7.27253350	  0.99852824	  0.99922306  0.49321065
+6423	 -6.27301544	 -0.00048169	  0.00029513	  7.27253375	  0.99852847	  0.99922318  0.49321069
+6424	 -6.27301562	 -0.00048162	  0.00029508	  7.27253400	  0.99852870	  0.99922330  0.49321066
+6425	 -6.27301580	 -0.00048154	  0.00029503	  7.27253426	  0.99852893	  0.99922342  0.49321075
+6426	 -6.27301598	 -0.00048147	  0.00029499	  7.27253451	  0.99852916	  0.99922354  0.49321074
+6427	 -6.27301616	 -0.00048139	  0.00029494	  7.27253477	  0.99852939	  0.99922366  0.49321082
+6428	 -6.27301634	 -0.00048132	  0.00029490	  7.27253502	  0.99852962	  0.99922378  0.49321081
+6429	 -6.27301652	 -0.00048124	  0.00029485	  7.27253528	  0.99852984	  0.99922391  0.49321083
+6430	 -6.27301670	 -0.00048117	  0.00029480	  7.27253553	  0.99853007	  0.99922403  0.49321094
+6431	 -6.27301688	 -0.00048109	  0.00029476	  7.27253578	  0.99853030	  0.99922415  0.49321096
+6432	 -6.27301706	 -0.00048102	  0.00029471	  7.27253604	  0.99853053	  0.99922427  0.49321093
+6433	 -6.27301724	 -0.00048095	  0.00029467	  7.27253629	  0.99853076	  0.99922439  0.49321094
+6434	 -6.27301741	 -0.00048087	  0.00029462	  7.27253654	  0.99853099	  0.99922451  0.49321098
+6435	 -6.27301759	 -0.00048080	  0.00029458	  7.27253680	  0.99853121	  0.99922463  0.49321102
+6436	 -6.27301777	 -0.00048072	  0.00029453	  7.27253705	  0.99853144	  0.99922475  0.49321101
+6437	 -6.27301795	 -0.00048065	  0.00029448	  7.27253730	  0.99853167	  0.99922487  0.49321109
+6438	 -6.27301813	 -0.00048057	  0.00029444	  7.27253756	  0.99853190	  0.99922499  0.49321107
+6439	 -6.27301831	 -0.00048050	  0.00029439	  7.27253781	  0.99853213	  0.99922511  0.49321107
+6440	 -6.27301849	 -0.00048042	  0.00029435	  7.27253806	  0.99853235	  0.99922523  0.49321110
+6441	 -6.27301866	 -0.00048035	  0.00029430	  7.27253832	  0.99853258	  0.99922535  0.49321118
+6442	 -6.27301884	 -0.00048027	  0.00029426	  7.27253857	  0.99853281	  0.99922547  0.49321119
+6443	 -6.27301902	 -0.00048020	  0.00029421	  7.27253882	  0.99853304	  0.99922559  0.49321116
+6444	 -6.27301920	 -0.00048012	  0.00029416	  7.27253907	  0.99853327	  0.99922571  0.49321127
+6445	 -6.27301938	 -0.00048005	  0.00029412	  7.27253933	  0.99853349	  0.99922583  0.49321123
+6446	 -6.27301956	 -0.00047998	  0.00029407	  7.27253958	  0.99853372	  0.99922595  0.49321129
+6447	 -6.27301973	 -0.00047990	  0.00029403	  7.27253983	  0.99853395	  0.99922607  0.49321135
+6448	 -6.27301991	 -0.00047983	  0.00029398	  7.27254008	  0.99853418	  0.99922619  0.49321135
+6449	 -6.27302009	 -0.00047975	  0.00029394	  7.27254034	  0.99853440	  0.99922631  0.49321139
+6450	 -6.27302027	 -0.00047968	  0.00029389	  7.27254059	  0.99853463	  0.99922643  0.49321146
+6451	 -6.27302044	 -0.00047960	  0.00029384	  7.27254084	  0.99853486	  0.99922655  0.49321142
+6452	 -6.27302062	 -0.00047953	  0.00029380	  7.27254109	  0.99853508	  0.99922667  0.49321144
+6453	 -6.27302080	 -0.00047946	  0.00029375	  7.27254135	  0.99853531	  0.99922679  0.49321144
+6454	 -6.27302098	 -0.00047938	  0.00029371	  7.27254160	  0.99853554	  0.99922691  0.49321157
+6455	 -6.27302116	 -0.00047931	  0.00029366	  7.27254185	  0.99853577	  0.99922703  0.49321152
+6456	 -6.27302133	 -0.00047923	  0.00029362	  7.27254210	  0.99853599	  0.99922715  0.49321153
+6457	 -6.27302151	 -0.00047916	  0.00029357	  7.27254235	  0.99853622	  0.99922727  0.49321157
+6458	 -6.27302169	 -0.00047908	  0.00029353	  7.27254260	  0.99853645	  0.99922739  0.49321160
+6459	 -6.27302187	 -0.00047901	  0.00029348	  7.27254286	  0.99853667	  0.99922751  0.49321170
+6460	 -6.27302204	 -0.00047894	  0.00029344	  7.27254311	  0.99853690	  0.99922763  0.49321172
+6461	 -6.27302222	 -0.00047886	  0.00029339	  7.27254336	  0.99853712	  0.99922775  0.49321163
+6462	 -6.27302240	 -0.00047879	  0.00029334	  7.27254361	  0.99853735	  0.99922787  0.49321166
+6463	 -6.27302257	 -0.00047871	  0.00029330	  7.27254386	  0.99853758	  0.99922799  0.49321175
+6464	 -6.27302275	 -0.00047864	  0.00029325	  7.27254411	  0.99853780	  0.99922811  0.49321177
+6465	 -6.27302293	 -0.00047857	  0.00029321	  7.27254436	  0.99853803	  0.99922823  0.49321185
+6466	 -6.27302311	 -0.00047849	  0.00029316	  7.27254461	  0.99853826	  0.99922834  0.49321182
+6467	 -6.27302328	 -0.00047842	  0.00029312	  7.27254486	  0.99853848	  0.99922846  0.49321190
+6468	 -6.27302346	 -0.00047834	  0.00029307	  7.27254512	  0.99853871	  0.99922858  0.49321191
+6469	 -6.27302364	 -0.00047827	  0.00029303	  7.27254537	  0.99853893	  0.99922870  0.49321187
+6470	 -6.27302381	 -0.00047820	  0.00029298	  7.27254562	  0.99853916	  0.99922882  0.49321186
+6471	 -6.27302399	 -0.00047812	  0.00029294	  7.27254587	  0.99853939	  0.99922894  0.49321193
+6472	 -6.27302417	 -0.00047805	  0.00029289	  7.27254612	  0.99853961	  0.99922906  0.49321201
+6473	 -6.27302434	 -0.00047797	  0.00029285	  7.27254637	  0.99853984	  0.99922918  0.49321205
+6474	 -6.27302452	 -0.00047790	  0.00029280	  7.27254662	  0.99854006	  0.99922930  0.49321210
+6475	 -6.27302470	 -0.00047783	  0.00029276	  7.27254687	  0.99854029	  0.99922942  0.49321211
+6476	 -6.27302487	 -0.00047775	  0.00029271	  7.27254712	  0.99854051	  0.99922954  0.49321206
+6477	 -6.27302505	 -0.00047768	  0.00029267	  7.27254737	  0.99854074	  0.99922965  0.49321212
+6478	 -6.27302523	 -0.00047761	  0.00029262	  7.27254762	  0.99854096	  0.99922977  0.49321212
+6479	 -6.27302540	 -0.00047753	  0.00029257	  7.27254787	  0.99854119	  0.99922989  0.49321221
+6480	 -6.27302558	 -0.00047746	  0.00029253	  7.27254812	  0.99854141	  0.99923001  0.49321218
+6481	 -6.27302575	 -0.00047739	  0.00029248	  7.27254837	  0.99854164	  0.99923013  0.49321223
+6482	 -6.27302593	 -0.00047731	  0.00029244	  7.27254862	  0.99854186	  0.99923025  0.49321227
+6483	 -6.27302611	 -0.00047724	  0.00029239	  7.27254887	  0.99854209	  0.99923037  0.49321227
+6484	 -6.27302628	 -0.00047716	  0.00029235	  7.27254912	  0.99854231	  0.99923049  0.49321226
+6485	 -6.27302646	 -0.00047709	  0.00029230	  7.27254937	  0.99854254	  0.99923060  0.49321229
+6486	 -6.27302664	 -0.00047702	  0.00029226	  7.27254962	  0.99854276	  0.99923072  0.49321232
+6487	 -6.27302681	 -0.00047694	  0.00029221	  7.27254987	  0.99854299	  0.99923084  0.49321239
+6488	 -6.27302699	 -0.00047687	  0.00029217	  7.27255012	  0.99854321	  0.99923096  0.49321240
+6489	 -6.27302716	 -0.00047680	  0.00029212	  7.27255037	  0.99854344	  0.99923108  0.49321246
+6490	 -6.27302734	 -0.00047672	  0.00029208	  7.27255061	  0.99854366	  0.99923120  0.49321244
+6491	 -6.27302751	 -0.00047665	  0.00029203	  7.27255086	  0.99854388	  0.99923132  0.49321242
+6492	 -6.27302769	 -0.00047658	  0.00029199	  7.27255111	  0.99854411	  0.99923143  0.49321242
+6493	 -6.27302787	 -0.00047650	  0.00029194	  7.27255136	  0.99854433	  0.99923155  0.49321258
+6494	 -6.27302804	 -0.00047643	  0.00029190	  7.27255161	  0.99854456	  0.99923167  0.49321251
+6495	 -6.27302822	 -0.00047636	  0.00029185	  7.27255186	  0.99854478	  0.99923179  0.49321261
+6496	 -6.27302839	 -0.00047628	  0.00029181	  7.27255211	  0.99854501	  0.99923191  0.49321264
+6497	 -6.27302857	 -0.00047621	  0.00029176	  7.27255236	  0.99854523	  0.99923203  0.49321265
+6498	 -6.27302874	 -0.00047614	  0.00029172	  7.27255261	  0.99854545	  0.99923214  0.49321268
+6499	 -6.27302892	 -0.00047606	  0.00029167	  7.27255285	  0.99854568	  0.99923226  0.49321269
+6500	 -6.27302909	 -0.00047599	  0.00029163	  7.27255310	  0.99854590	  0.99923238  0.49321277
+6501	 -6.27302927	 -0.00047592	  0.00029158	  7.27255335	  0.99854612	  0.99923250  0.49321272
+6502	 -6.27302944	 -0.00047584	  0.00029154	  7.27255360	  0.99854635	  0.99923262  0.49321278
+6503	 -6.27302962	 -0.00047577	  0.00029150	  7.27255385	  0.99854657	  0.99923273  0.49321287
+6504	 -6.27302979	 -0.00047570	  0.00029145	  7.27255410	  0.99854679	  0.99923285  0.49321280
+6505	 -6.27302997	 -0.00047562	  0.00029141	  7.27255434	  0.99854702	  0.99923297  0.49321291
+6506	 -6.27303014	 -0.00047555	  0.00029136	  7.27255459	  0.99854724	  0.99923309  0.49321279
+6507	 -6.27303032	 -0.00047548	  0.00029132	  7.27255484	  0.99854746	  0.99923321  0.49321284
+6508	 -6.27303049	 -0.00047541	  0.00029127	  7.27255509	  0.99854769	  0.99923332  0.49321288
+6509	 -6.27303067	 -0.00047533	  0.00029123	  7.27255533	  0.99854791	  0.99923344  0.49321294
+6510	 -6.27303084	 -0.00047526	  0.00029118	  7.27255558	  0.99854813	  0.99923356  0.49321292
+6511	 -6.27303102	 -0.00047519	  0.00029114	  7.27255583	  0.99854836	  0.99923368  0.49321300
+6512	 -6.27303119	 -0.00047511	  0.00029109	  7.27255608	  0.99854858	  0.99923379  0.49321302
+6513	 -6.27303137	 -0.00047504	  0.00029105	  7.27255632	  0.99854880	  0.99923391  0.49321303
+6514	 -6.27303154	 -0.00047497	  0.00029100	  7.27255657	  0.99854903	  0.99923403  0.49321311
+6515	 -6.27303171	 -0.00047490	  0.00029096	  7.27255682	  0.99854925	  0.99923415  0.49321311
+6516	 -6.27303189	 -0.00047482	  0.00029091	  7.27255707	  0.99854947	  0.99923426  0.49321315
+6517	 -6.27303206	 -0.00047475	  0.00029087	  7.27255731	  0.99854969	  0.99923438  0.49321319
+6518	 -6.27303224	 -0.00047468	  0.00029082	  7.27255756	  0.99854992	  0.99923450  0.49321317
+6519	 -6.27303241	 -0.00047460	  0.00029078	  7.27255781	  0.99855014	  0.99923462  0.49321321
+6520	 -6.27303259	 -0.00047453	  0.00029073	  7.27255805	  0.99855036	  0.99923473  0.49321326
+6521	 -6.27303276	 -0.00047446	  0.00029069	  7.27255830	  0.99855058	  0.99923485  0.49321318
+6522	 -6.27303293	 -0.00047439	  0.00029065	  7.27255855	  0.99855081	  0.99923497  0.49321326
+6523	 -6.27303311	 -0.00047431	  0.00029060	  7.27255879	  0.99855103	  0.99923509  0.49321333
+6524	 -6.27303328	 -0.00047424	  0.00029056	  7.27255904	  0.99855125	  0.99923520  0.49321333
+6525	 -6.27303345	 -0.00047417	  0.00029051	  7.27255929	  0.99855147	  0.99923532  0.49321344
+6526	 -6.27303363	 -0.00047410	  0.00029047	  7.27255953	  0.99855169	  0.99923544  0.49321337
+6527	 -6.27303380	 -0.00047402	  0.00029042	  7.27255978	  0.99855192	  0.99923555  0.49321345
+6528	 -6.27303398	 -0.00047395	  0.00029038	  7.27256003	  0.99855214	  0.99923567  0.49321337
+6529	 -6.27303415	 -0.00047388	  0.00029033	  7.27256027	  0.99855236	  0.99923579  0.49321344
+6530	 -6.27303432	 -0.00047380	  0.00029029	  7.27256052	  0.99855258	  0.99923591  0.49321346
+6531	 -6.27303450	 -0.00047373	  0.00029025	  7.27256076	  0.99855280	  0.99923602  0.49321354
+6532	 -6.27303467	 -0.00047366	  0.00029020	  7.27256101	  0.99855302	  0.99923614  0.49321353
+6533	 -6.27303484	 -0.00047359	  0.00029016	  7.27256126	  0.99855325	  0.99923626  0.49321361
+6534	 -6.27303502	 -0.00047351	  0.00029011	  7.27256150	  0.99855347	  0.99923637  0.49321358
+6535	 -6.27303519	 -0.00047344	  0.00029007	  7.27256175	  0.99855369	  0.99923649  0.49321363
+6536	 -6.27303536	 -0.00047337	  0.00029002	  7.27256199	  0.99855391	  0.99923661  0.49321367
+6537	 -6.27303554	 -0.00047330	  0.00028998	  7.27256224	  0.99855413	  0.99923672  0.49321364
+6538	 -6.27303571	 -0.00047323	  0.00028993	  7.27256248	  0.99855435	  0.99923684  0.49321377
+6539	 -6.27303588	 -0.00047315	  0.00028989	  7.27256273	  0.99855457	  0.99923696  0.49321375
+6540	 -6.27303606	 -0.00047308	  0.00028985	  7.27256298	  0.99855479	  0.99923707  0.49321379
+6541	 -6.27303623	 -0.00047301	  0.00028980	  7.27256322	  0.99855501	  0.99923719  0.49321377
+6542	 -6.27303640	 -0.00047294	  0.00028976	  7.27256347	  0.99855524	  0.99923731  0.49321372
+6543	 -6.27303658	 -0.00047286	  0.00028971	  7.27256371	  0.99855546	  0.99923742  0.49321383
+6544	 -6.27303675	 -0.00047279	  0.00028967	  7.27256396	  0.99855568	  0.99923754  0.49321384
+6545	 -6.27303692	 -0.00047272	  0.00028962	  7.27256420	  0.99855590	  0.99923766  0.49321394
+6546	 -6.27303709	 -0.00047265	  0.00028958	  7.27256445	  0.99855612	  0.99923777  0.49321386
+6547	 -6.27303727	 -0.00047258	  0.00028954	  7.27256469	  0.99855634	  0.99923789  0.49321390
+6548	 -6.27303744	 -0.00047250	  0.00028949	  7.27256494	  0.99855656	  0.99923801  0.49321401
+6549	 -6.27303761	 -0.00047243	  0.00028945	  7.27256518	  0.99855678	  0.99923812  0.49321394
+6550	 -6.27303778	 -0.00047236	  0.00028940	  7.27256543	  0.99855700	  0.99923824  0.49321395
+6551	 -6.27303796	 -0.00047229	  0.00028936	  7.27256567	  0.99855722	  0.99923835  0.49321400
+6552	 -6.27303813	 -0.00047221	  0.00028931	  7.27256591	  0.99855744	  0.99923847  0.49321392
+6553	 -6.27303830	 -0.00047214	  0.00028927	  7.27256616	  0.99855766	  0.99923859  0.49321409
+6554	 -6.27303847	 -0.00047207	  0.00028923	  7.27256640	  0.99855788	  0.99923870  0.49321404
+6555	 -6.27303865	 -0.00047200	  0.00028918	  7.27256665	  0.99855810	  0.99923882  0.49321416
+6556	 -6.27303882	 -0.00047193	  0.00028914	  7.27256689	  0.99855832	  0.99923893  0.49321409
+6557	 -6.27303899	 -0.00047185	  0.00028909	  7.27256714	  0.99855854	  0.99923905  0.49321418
+6558	 -6.27303916	 -0.00047178	  0.00028905	  7.27256738	  0.99855876	  0.99923917  0.49321418
+6559	 -6.27303933	 -0.00047171	  0.00028901	  7.27256762	  0.99855898	  0.99923928  0.49321424
+6560	 -6.27303951	 -0.00047164	  0.00028896	  7.27256787	  0.99855920	  0.99923940  0.49321434
+6561	 -6.27303968	 -0.00047157	  0.00028892	  7.27256811	  0.99855942	  0.99923951  0.49321431
+6562	 -6.27303985	 -0.00047150	  0.00028887	  7.27256835	  0.99855964	  0.99923963  0.49321429
+6563	 -6.27304002	 -0.00047142	  0.00028883	  7.27256860	  0.99855986	  0.99923975  0.49321428
+6564	 -6.27304019	 -0.00047135	  0.00028879	  7.27256884	  0.99856008	  0.99923986  0.49321434
+6565	 -6.27304037	 -0.00047128	  0.00028874	  7.27256909	  0.99856030	  0.99923998  0.49321435
+6566	 -6.27304054	 -0.00047121	  0.00028870	  7.27256933	  0.99856052	  0.99924009  0.49321437
+6567	 -6.27304071	 -0.00047114	  0.00028865	  7.27256957	  0.99856073	  0.99924021  0.49321446
+6568	 -6.27304088	 -0.00047106	  0.00028861	  7.27256982	  0.99856095	  0.99924032  0.49321442
+6569	 -6.27304105	 -0.00047099	  0.00028857	  7.27257006	  0.99856117	  0.99924044  0.49321442
+6570	 -6.27304122	 -0.00047092	  0.00028852	  7.27257030	  0.99856139	  0.99924056  0.49321451
+6571	 -6.27304139	 -0.00047085	  0.00028848	  7.27257054	  0.99856161	  0.99924067  0.49321455
+6572	 -6.27304157	 -0.00047078	  0.00028843	  7.27257079	  0.99856183	  0.99924079  0.49321455
+6573	 -6.27304174	 -0.00047071	  0.00028839	  7.27257103	  0.99856205	  0.99924090  0.49321459
+6574	 -6.27304191	 -0.00047064	  0.00028835	  7.27257127	  0.99856227	  0.99924102  0.49321464
+6575	 -6.27304208	 -0.00047056	  0.00028830	  7.27257152	  0.99856249	  0.99924113  0.49321460
+6576	 -6.27304225	 -0.00047049	  0.00028826	  7.27257176	  0.99856270	  0.99924125  0.49321463
+6577	 -6.27304242	 -0.00047042	  0.00028822	  7.27257200	  0.99856292	  0.99924136  0.49321476
+6578	 -6.27304259	 -0.00047035	  0.00028817	  7.27257224	  0.99856314	  0.99924148  0.49321475
+6579	 -6.27304276	 -0.00047028	  0.00028813	  7.27257249	  0.99856336	  0.99924159  0.49321471
+6580	 -6.27304294	 -0.00047021	  0.00028808	  7.27257273	  0.99856358	  0.99924171  0.49321475
+6581	 -6.27304311	 -0.00047013	  0.00028804	  7.27257297	  0.99856380	  0.99924183  0.49321476
+6582	 -6.27304328	 -0.00047006	  0.00028800	  7.27257321	  0.99856401	  0.99924194  0.49321484
+6583	 -6.27304345	 -0.00046999	  0.00028795	  7.27257346	  0.99856423	  0.99924206  0.49321477
+6584	 -6.27304362	 -0.00046992	  0.00028791	  7.27257370	  0.99856445	  0.99924217  0.49321483
+6585	 -6.27304379	 -0.00046985	  0.00028787	  7.27257394	  0.99856467	  0.99924229  0.49321495
+6586	 -6.27304396	 -0.00046978	  0.00028782	  7.27257418	  0.99856489	  0.99924240  0.49321491
+6587	 -6.27304413	 -0.00046971	  0.00028778	  7.27257442	  0.99856510	  0.99924252  0.49321493
+6588	 -6.27304430	 -0.00046964	  0.00028773	  7.27257467	  0.99856532	  0.99924263  0.49321498
+6589	 -6.27304447	 -0.00046956	  0.00028769	  7.27257491	  0.99856554	  0.99924275  0.49321496
+6590	 -6.27304464	 -0.00046949	  0.00028765	  7.27257515	  0.99856576	  0.99924286  0.49321502
+6591	 -6.27304481	 -0.00046942	  0.00028760	  7.27257539	  0.99856597	  0.99924298  0.49321503
+6592	 -6.27304498	 -0.00046935	  0.00028756	  7.27257563	  0.99856619	  0.99924309  0.49321507
+6593	 -6.27304515	 -0.00046928	  0.00028752	  7.27257587	  0.99856641	  0.99924320  0.49321515
+6594	 -6.27304532	 -0.00046921	  0.00028747	  7.27257611	  0.99856663	  0.99924332  0.49321508
+6595	 -6.27304549	 -0.00046914	  0.00028743	  7.27257636	  0.99856684	  0.99924343  0.49321514
+6596	 -6.27304566	 -0.00046907	  0.00028738	  7.27257660	  0.99856706	  0.99924355  0.49321526
+6597	 -6.27304583	 -0.00046900	  0.00028734	  7.27257684	  0.99856728	  0.99924366  0.49321521
+6598	 -6.27304600	 -0.00046892	  0.00028730	  7.27257708	  0.99856750	  0.99924378  0.49321521
+6599	 -6.27304617	 -0.00046885	  0.00028725	  7.27257732	  0.99856771	  0.99924389  0.49321523
+6600	 -6.27304634	 -0.00046878	  0.00028721	  7.27257756	  0.99856793	  0.99924401  0.49321526
+6601	 -6.27304651	 -0.00046871	  0.00028717	  7.27257780	  0.99856815	  0.99924412  0.49321530
+6602	 -6.27304668	 -0.00046864	  0.00028712	  7.27257804	  0.99856836	  0.99924424  0.49321535
+6603	 -6.27304685	 -0.00046857	  0.00028708	  7.27257828	  0.99856858	  0.99924435  0.49321541
+6604	 -6.27304702	 -0.00046850	  0.00028704	  7.27257852	  0.99856880	  0.99924446  0.49321529
+6605	 -6.27304719	 -0.00046843	  0.00028699	  7.27257876	  0.99856901	  0.99924458  0.49321541
+6606	 -6.27304736	 -0.00046836	  0.00028695	  7.27257901	  0.99856923	  0.99924469  0.49321535
+6607	 -6.27304753	 -0.00046829	  0.00028691	  7.27257925	  0.99856945	  0.99924481  0.49321543
+6608	 -6.27304770	 -0.00046821	  0.00028686	  7.27257949	  0.99856966	  0.99924492  0.49321548
+6609	 -6.27304787	 -0.00046814	  0.00028682	  7.27257973	  0.99856988	  0.99924504  0.49321551
+6610	 -6.27304804	 -0.00046807	  0.00028678	  7.27257997	  0.99857010	  0.99924515  0.49321545
+6611	 -6.27304821	 -0.00046800	  0.00028673	  7.27258021	  0.99857031	  0.99924526  0.49321554
+6612	 -6.27304838	 -0.00046793	  0.00028669	  7.27258045	  0.99857053	  0.99924538  0.49321557
+6613	 -6.27304855	 -0.00046786	  0.00028665	  7.27258069	  0.99857074	  0.99924549  0.49321561
+6614	 -6.27304872	 -0.00046779	  0.00028660	  7.27258093	  0.99857096	  0.99924561  0.49321567
+6615	 -6.27304889	 -0.00046772	  0.00028656	  7.27258117	  0.99857118	  0.99924572  0.49321567
+6616	 -6.27304906	 -0.00046765	  0.00028652	  7.27258141	  0.99857139	  0.99924583  0.49321571
+6617	 -6.27304922	 -0.00046758	  0.00028647	  7.27258165	  0.99857161	  0.99924595  0.49321566
+6618	 -6.27304939	 -0.00046751	  0.00028643	  7.27258189	  0.99857182	  0.99924606  0.49321576
+6619	 -6.27304956	 -0.00046744	  0.00028639	  7.27258213	  0.99857204	  0.99924618  0.49321567
+6620	 -6.27304973	 -0.00046737	  0.00028634	  7.27258236	  0.99857226	  0.99924629  0.49321585
+6621	 -6.27304990	 -0.00046730	  0.00028630	  7.27258260	  0.99857247	  0.99924640  0.49321576
+6622	 -6.27305007	 -0.00046723	  0.00028626	  7.27258284	  0.99857269	  0.99924652  0.49321581
+6623	 -6.27305024	 -0.00046715	  0.00028621	  7.27258308	  0.99857290	  0.99924663  0.49321580
+6624	 -6.27305041	 -0.00046708	  0.00028617	  7.27258332	  0.99857312	  0.99924675  0.49321590
+6625	 -6.27305057	 -0.00046701	  0.00028613	  7.27258356	  0.99857333	  0.99924686  0.49321582
+6626	 -6.27305074	 -0.00046694	  0.00028608	  7.27258380	  0.99857355	  0.99924697  0.49321587
+6627	 -6.27305091	 -0.00046687	  0.00028604	  7.27258404	  0.99857376	  0.99924709  0.49321595
+6628	 -6.27305108	 -0.00046680	  0.00028600	  7.27258428	  0.99857398	  0.99924720  0.49321595
+6629	 -6.27305125	 -0.00046673	  0.00028595	  7.27258452	  0.99857419	  0.99924731  0.49321600
+6630	 -6.27305142	 -0.00046666	  0.00028591	  7.27258476	  0.99857441	  0.99924743  0.49321598
+6631	 -6.27305159	 -0.00046659	  0.00028587	  7.27258499	  0.99857462	  0.99924754  0.49321613
+6632	 -6.27305175	 -0.00046652	  0.00028582	  7.27258523	  0.99857484	  0.99924765  0.49321611
+6633	 -6.27305192	 -0.00046645	  0.00028578	  7.27258547	  0.99857505	  0.99924777  0.49321600
+6634	 -6.27305209	 -0.00046638	  0.00028574	  7.27258571	  0.99857527	  0.99924788  0.49321621
+6635	 -6.27305226	 -0.00046631	  0.00028570	  7.27258595	  0.99857548	  0.99924799  0.49321615
+6636	 -6.27305243	 -0.00046624	  0.00028565	  7.27258619	  0.99857570	  0.99924811  0.49321620
+6637	 -6.27305259	 -0.00046617	  0.00028561	  7.27258642	  0.99857591	  0.99924822  0.49321625
+6638	 -6.27305276	 -0.00046610	  0.00028557	  7.27258666	  0.99857613	  0.99924833  0.49321621
+6639	 -6.27305293	 -0.00046603	  0.00028552	  7.27258690	  0.99857634	  0.99924845  0.49321630
+6640	 -6.27305310	 -0.00046596	  0.00028548	  7.27258714	  0.99857656	  0.99924856  0.49321623
+6641	 -6.27305327	 -0.00046589	  0.00028544	  7.27258738	  0.99857677	  0.99924867  0.49321633
+6642	 -6.27305343	 -0.00046582	  0.00028539	  7.27258761	  0.99857698	  0.99924879  0.49321637
+6643	 -6.27305360	 -0.00046575	  0.00028535	  7.27258785	  0.99857720	  0.99924890  0.49321640
+6644	 -6.27305377	 -0.00046568	  0.00028531	  7.27258809	  0.99857741	  0.99924901  0.49321641
+6645	 -6.27305394	 -0.00046561	  0.00028527	  7.27258833	  0.99857763	  0.99924913  0.49321644
+6646	 -6.27305410	 -0.00046554	  0.00028522	  7.27258857	  0.99857784	  0.99924924  0.49321640
+6647	 -6.27305427	 -0.00046547	  0.00028518	  7.27258880	  0.99857805	  0.99924935  0.49321644
+6648	 -6.27305444	 -0.00046540	  0.00028514	  7.27258904	  0.99857827	  0.99924946  0.49321647
+6649	 -6.27305461	 -0.00046533	  0.00028509	  7.27258928	  0.99857848	  0.99924958  0.49321655
+6650	 -6.27305477	 -0.00046526	  0.00028505	  7.27258952	  0.99857870	  0.99924969  0.49321652
+6651	 -6.27305494	 -0.00046519	  0.00028501	  7.27258975	  0.99857891	  0.99924980  0.49321651
+6652	 -6.27305511	 -0.00046512	  0.00028497	  7.27258999	  0.99857912	  0.99924992  0.49321656
+6653	 -6.27305528	 -0.00046505	  0.00028492	  7.27259023	  0.99857934	  0.99925003  0.49321656
+6654	 -6.27305544	 -0.00046498	  0.00028488	  7.27259046	  0.99857955	  0.99925014  0.49321665
+6655	 -6.27305561	 -0.00046491	  0.00028484	  7.27259070	  0.99857976	  0.99925025  0.49321668
+6656	 -6.27305578	 -0.00046484	  0.00028479	  7.27259094	  0.99857998	  0.99925037  0.49321665
+6657	 -6.27305594	 -0.00046477	  0.00028475	  7.27259117	  0.99858019	  0.99925048  0.49321672
+6658	 -6.27305611	 -0.00046470	  0.00028471	  7.27259141	  0.99858040	  0.99925059  0.49321675
+6659	 -6.27305628	 -0.00046463	  0.00028467	  7.27259165	  0.99858062	  0.99925070  0.49321677
+6660	 -6.27305645	 -0.00046456	  0.00028462	  7.27259188	  0.99858083	  0.99925082  0.49321675
+6661	 -6.27305661	 -0.00046449	  0.00028458	  7.27259212	  0.99858104	  0.99925093  0.49321677
+6662	 -6.27305678	 -0.00046442	  0.00028454	  7.27259236	  0.99858126	  0.99925104  0.49321687
+6663	 -6.27305695	 -0.00046435	  0.00028449	  7.27259259	  0.99858147	  0.99925115  0.49321692
+6664	 -6.27305711	 -0.00046428	  0.00028445	  7.27259283	  0.99858168	  0.99925127  0.49321690
+6665	 -6.27305728	 -0.00046421	  0.00028441	  7.27259307	  0.99858189	  0.99925138  0.49321690
+6666	 -6.27305745	 -0.00046414	  0.00028437	  7.27259330	  0.99858211	  0.99925149  0.49321703
+6667	 -6.27305761	 -0.00046407	  0.00028432	  7.27259354	  0.99858232	  0.99925160  0.49321695
+6668	 -6.27305778	 -0.00046400	  0.00028428	  7.27259377	  0.99858253	  0.99925171  0.49321702
+6669	 -6.27305795	 -0.00046393	  0.00028424	  7.27259401	  0.99858275	  0.99925183  0.49321702
+6670	 -6.27305811	 -0.00046386	  0.00028420	  7.27259425	  0.99858296	  0.99925194  0.49321707
+6671	 -6.27305828	 -0.00046380	  0.00028415	  7.27259448	  0.99858317	  0.99925205  0.49321711
+6672	 -6.27305844	 -0.00046373	  0.00028411	  7.27259472	  0.99858338	  0.99925216  0.49321702
+6673	 -6.27305861	 -0.00046366	  0.00028407	  7.27259495	  0.99858359	  0.99925227  0.49321714
+6674	 -6.27305878	 -0.00046359	  0.00028403	  7.27259519	  0.99858381	  0.99925239  0.49321714
+6675	 -6.27305894	 -0.00046352	  0.00028398	  7.27259543	  0.99858402	  0.99925250  0.49321712
+6676	 -6.27305911	 -0.00046345	  0.00028394	  7.27259566	  0.99858423	  0.99925261  0.49321724
+6677	 -6.27305927	 -0.00046338	  0.00028390	  7.27259590	  0.99858444	  0.99925272  0.49321723
+6678	 -6.27305944	 -0.00046331	  0.00028386	  7.27259613	  0.99858465	  0.99925283  0.49321718
+6679	 -6.27305961	 -0.00046324	  0.00028381	  7.27259637	  0.99858487	  0.99925295  0.49321725
+6680	 -6.27305977	 -0.00046317	  0.00028377	  7.27259660	  0.99858508	  0.99925306  0.49321729
+6681	 -6.27305994	 -0.00046310	  0.00028373	  7.27259684	  0.99858529	  0.99925317  0.49321728
+6682	 -6.27306010	 -0.00046303	  0.00028369	  7.27259707	  0.99858550	  0.99925328  0.49321728
+6683	 -6.27306027	 -0.00046296	  0.00028364	  7.27259731	  0.99858571	  0.99925339  0.49321738
+6684	 -6.27306044	 -0.00046289	  0.00028360	  7.27259754	  0.99858593	  0.99925351  0.49321730
+6685	 -6.27306060	 -0.00046282	  0.00028356	  7.27259778	  0.99858614	  0.99925362  0.49321736
+6686	 -6.27306077	 -0.00046276	  0.00028352	  7.27259801	  0.99858635	  0.99925373  0.49321743
+6687	 -6.27306093	 -0.00046269	  0.00028347	  7.27259825	  0.99858656	  0.99925384  0.49321740
+6688	 -6.27306110	 -0.00046262	  0.00028343	  7.27259848	  0.99858677	  0.99925395  0.49321757
+6689	 -6.27306126	 -0.00046255	  0.00028339	  7.27259872	  0.99858698	  0.99925406  0.49321754
+6690	 -6.27306143	 -0.00046248	  0.00028335	  7.27259895	  0.99858719	  0.99925417  0.49321760
+6691	 -6.27306159	 -0.00046241	  0.00028330	  7.27259918	  0.99858740	  0.99925429  0.49321757
+6692	 -6.27306176	 -0.00046234	  0.00028326	  7.27259942	  0.99858762	  0.99925440  0.49321761
+6693	 -6.27306192	 -0.00046227	  0.00028322	  7.27259965	  0.99858783	  0.99925451  0.49321757
+6694	 -6.27306209	 -0.00046220	  0.00028318	  7.27259989	  0.99858804	  0.99925462  0.49321764
+6695	 -6.27306225	 -0.00046213	  0.00028314	  7.27260012	  0.99858825	  0.99925473  0.49321769
+6696	 -6.27306242	 -0.00046206	  0.00028309	  7.27260036	  0.99858846	  0.99925484  0.49321767
+6697	 -6.27306259	 -0.00046200	  0.00028305	  7.27260059	  0.99858867	  0.99925495  0.49321773
+6698	 -6.27306275	 -0.00046193	  0.00028301	  7.27260082	  0.99858888	  0.99925506  0.49321772
+6699	 -6.27306292	 -0.00046186	  0.00028297	  7.27260106	  0.99858909	  0.99925518  0.49321771
+6700	 -6.27306308	 -0.00046179	  0.00028292	  7.27260129	  0.99858930	  0.99925529  0.49321779
+6701	 -6.27306324	 -0.00046172	  0.00028288	  7.27260152	  0.99858951	  0.99925540  0.49321779
+6702	 -6.27306341	 -0.00046165	  0.00028284	  7.27260176	  0.99858972	  0.99925551  0.49321780
+6703	 -6.27306357	 -0.00046158	  0.00028280	  7.27260199	  0.99858993	  0.99925562  0.49321791
+6704	 -6.27306374	 -0.00046151	  0.00028275	  7.27260223	  0.99859014	  0.99925573  0.49321791
+6705	 -6.27306390	 -0.00046144	  0.00028271	  7.27260246	  0.99859035	  0.99925584  0.49321788
+6706	 -6.27306407	 -0.00046138	  0.00028267	  7.27260269	  0.99859056	  0.99925595  0.49321791
+6707	 -6.27306423	 -0.00046131	  0.00028263	  7.27260293	  0.99859077	  0.99925606  0.49321799
+6708	 -6.27306440	 -0.00046124	  0.00028259	  7.27260316	  0.99859098	  0.99925618  0.49321795
+6709	 -6.27306456	 -0.00046117	  0.00028254	  7.27260339	  0.99859119	  0.99925629  0.49321797
+6710	 -6.27306473	 -0.00046110	  0.00028250	  7.27260363	  0.99859140	  0.99925640  0.49321800
+6711	 -6.27306489	 -0.00046103	  0.00028246	  7.27260386	  0.99859161	  0.99925651  0.49321804
+6712	 -6.27306505	 -0.00046096	  0.00028242	  7.27260409	  0.99859182	  0.99925662  0.49321800
+6713	 -6.27306522	 -0.00046090	  0.00028238	  7.27260432	  0.99859203	  0.99925673  0.49321804
+6714	 -6.27306538	 -0.00046083	  0.00028233	  7.27260456	  0.99859224	  0.99925684  0.49321806
+6715	 -6.27306555	 -0.00046076	  0.00028229	  7.27260479	  0.99859245	  0.99925695  0.49321814
+6716	 -6.27306571	 -0.00046069	  0.00028225	  7.27260502	  0.99859266	  0.99925706  0.49321818
+6717	 -6.27306588	 -0.00046062	  0.00028221	  7.27260525	  0.99859287	  0.99925717  0.49321811
+6718	 -6.27306604	 -0.00046055	  0.00028217	  7.27260549	  0.99859308	  0.99925728  0.49321821
+6719	 -6.27306620	 -0.00046048	  0.00028212	  7.27260572	  0.99859329	  0.99925739  0.49321828
+6720	 -6.27306637	 -0.00046042	  0.00028208	  7.27260595	  0.99859350	  0.99925750  0.49321829
+6721	 -6.27306653	 -0.00046035	  0.00028204	  7.27260618	  0.99859371	  0.99925761  0.49321826
+6722	 -6.27306670	 -0.00046028	  0.00028200	  7.27260642	  0.99859392	  0.99925772  0.49321833
+6723	 -6.27306686	 -0.00046021	  0.00028196	  7.27260665	  0.99859413	  0.99925783  0.49321833
+6724	 -6.27306702	 -0.00046014	  0.00028191	  7.27260688	  0.99859434	  0.99925794  0.49321830
+6725	 -6.27306719	 -0.00046007	  0.00028187	  7.27260711	  0.99859455	  0.99925805  0.49321842
+6726	 -6.27306735	 -0.00046000	  0.00028183	  7.27260735	  0.99859475	  0.99925817  0.49321838
+6727	 -6.27306751	 -0.00045994	  0.00028179	  7.27260758	  0.99859496	  0.99925828  0.49321849
+6728	 -6.27306768	 -0.00045987	  0.00028175	  7.27260781	  0.99859517	  0.99925839  0.49321848
+6729	 -6.27306784	 -0.00045980	  0.00028170	  7.27260804	  0.99859538	  0.99925850  0.49321848
+6730	 -6.27306800	 -0.00045973	  0.00028166	  7.27260827	  0.99859559	  0.99925861  0.49321852
+6731	 -6.27306817	 -0.00045966	  0.00028162	  7.27260850	  0.99859580	  0.99925872  0.49321855
+6732	 -6.27306833	 -0.00045959	  0.00028158	  7.27260874	  0.99859601	  0.99925883  0.49321849
+6733	 -6.27306849	 -0.00045953	  0.00028154	  7.27260897	  0.99859622	  0.99925894  0.49321861
+6734	 -6.27306866	 -0.00045946	  0.00028150	  7.27260920	  0.99859642	  0.99925905  0.49321858
+6735	 -6.27306882	 -0.00045939	  0.00028145	  7.27260943	  0.99859663	  0.99925916  0.49321869
+6736	 -6.27306898	 -0.00045932	  0.00028141	  7.27260966	  0.99859684	  0.99925927  0.49321873
+6737	 -6.27306915	 -0.00045925	  0.00028137	  7.27260989	  0.99859705	  0.99925938  0.49321868
+6738	 -6.27306931	 -0.00045919	  0.00028133	  7.27261012	  0.99859726	  0.99925949  0.49321872
+6739	 -6.27306947	 -0.00045912	  0.00028129	  7.27261035	  0.99859746	  0.99925960  0.49321879
+6740	 -6.27306964	 -0.00045905	  0.00028124	  7.27261059	  0.99859767	  0.99925971  0.49321873
+6741	 -6.27306980	 -0.00045898	  0.00028120	  7.27261082	  0.99859788	  0.99925982  0.49321881
+6742	 -6.27306996	 -0.00045891	  0.00028116	  7.27261105	  0.99859809	  0.99925993  0.49321869
+6743	 -6.27307012	 -0.00045885	  0.00028112	  7.27261128	  0.99859830	  0.99926003  0.49321889
+6744	 -6.27307029	 -0.00045878	  0.00028108	  7.27261151	  0.99859850	  0.99926014  0.49321883
+6745	 -6.27307045	 -0.00045871	  0.00028104	  7.27261174	  0.99859871	  0.99926025  0.49321889
+6746	 -6.27307061	 -0.00045864	  0.00028099	  7.27261197	  0.99859892	  0.99926036  0.49321886
+6747	 -6.27307078	 -0.00045857	  0.00028095	  7.27261220	  0.99859913	  0.99926047  0.49321894
+6748	 -6.27307094	 -0.00045851	  0.00028091	  7.27261243	  0.99859934	  0.99926058  0.49321894
+6749	 -6.27307110	 -0.00045844	  0.00028087	  7.27261266	  0.99859954	  0.99926069  0.49321891
+6750	 -6.27307126	 -0.00045837	  0.00028083	  7.27261289	  0.99859975	  0.99926080  0.49321907
+6751	 -6.27307142	 -0.00045830	  0.00028079	  7.27261312	  0.99859996	  0.99926091  0.49321892
+6752	 -6.27307159	 -0.00045823	  0.00028074	  7.27261335	  0.99860016	  0.99926102  0.49321904
+6753	 -6.27307175	 -0.00045817	  0.00028070	  7.27261358	  0.99860037	  0.99926113  0.49321907
+6754	 -6.27307191	 -0.00045810	  0.00028066	  7.27261381	  0.99860058	  0.99926124  0.49321903
+6755	 -6.27307207	 -0.00045803	  0.00028062	  7.27261404	  0.99860079	  0.99926135  0.49321912
+6756	 -6.27307224	 -0.00045796	  0.00028058	  7.27261427	  0.99860099	  0.99926146  0.49321912
+6757	 -6.27307240	 -0.00045790	  0.00028054	  7.27261450	  0.99860120	  0.99926157  0.49321912
+6758	 -6.27307256	 -0.00045783	  0.00028050	  7.27261473	  0.99860141	  0.99926168  0.49321924
+6759	 -6.27307272	 -0.00045776	  0.00028045	  7.27261496	  0.99860161	  0.99926179  0.49321924
+6760	 -6.27307288	 -0.00045769	  0.00028041	  7.27261519	  0.99860182	  0.99926190  0.49321921
+6761	 -6.27307305	 -0.00045762	  0.00028037	  7.27261542	  0.99860203	  0.99926200  0.49321927
+6762	 -6.27307321	 -0.00045756	  0.00028033	  7.27261565	  0.99860223	  0.99926211  0.49321925
+6763	 -6.27307337	 -0.00045749	  0.00028029	  7.27261588	  0.99860244	  0.99926222  0.49321926
+6764	 -6.27307353	 -0.00045742	  0.00028025	  7.27261611	  0.99860265	  0.99926233  0.49321932
+6765	 -6.27307369	 -0.00045735	  0.00028021	  7.27261634	  0.99860285	  0.99926244  0.49321935
+6766	 -6.27307386	 -0.00045729	  0.00028016	  7.27261657	  0.99860306	  0.99926255  0.49321931
+6767	 -6.27307402	 -0.00045722	  0.00028012	  7.27261680	  0.99860327	  0.99926266  0.49321940
+6768	 -6.27307418	 -0.00045715	  0.00028008	  7.27261703	  0.99860347	  0.99926277  0.49321940
+6769	 -6.27307434	 -0.00045708	  0.00028004	  7.27261726	  0.99860368	  0.99926288  0.49321938
+6770	 -6.27307450	 -0.00045702	  0.00028000	  7.27261749	  0.99860389	  0.99926299  0.49321955
+6771	 -6.27307466	 -0.00045695	  0.00027996	  7.27261771	  0.99860409	  0.99926309  0.49321946
+6772	 -6.27307482	 -0.00045688	  0.00027992	  7.27261794	  0.99860430	  0.99926320  0.49321952
+6773	 -6.27307499	 -0.00045681	  0.00027987	  7.27261817	  0.99860450	  0.99926331  0.49321956
+6774	 -6.27307515	 -0.00045675	  0.00027983	  7.27261840	  0.99860471	  0.99926342  0.49321950
+6775	 -6.27307531	 -0.00045668	  0.00027979	  7.27261863	  0.99860492	  0.99926353  0.49321959
+6776	 -6.27307547	 -0.00045661	  0.00027975	  7.27261886	  0.99860512	  0.99926364  0.49321954
+6777	 -6.27307563	 -0.00045654	  0.00027971	  7.27261909	  0.99860533	  0.99926375  0.49321964
+6778	 -6.27307579	 -0.00045648	  0.00027967	  7.27261931	  0.99860553	  0.99926385  0.49321960
+6779	 -6.27307595	 -0.00045641	  0.00027963	  7.27261954	  0.99860574	  0.99926396  0.49321972
+6780	 -6.27307611	 -0.00045634	  0.00027959	  7.27261977	  0.99860595	  0.99926407  0.49321973
+6781	 -6.27307628	 -0.00045628	  0.00027954	  7.27262000	  0.99860615	  0.99926418  0.49321968
+6782	 -6.27307644	 -0.00045621	  0.00027950	  7.27262023	  0.99860636	  0.99926429  0.49321967
+6783	 -6.27307660	 -0.00045614	  0.00027946	  7.27262046	  0.99860656	  0.99926440  0.49321972
+6784	 -6.27307676	 -0.00045607	  0.00027942	  7.27262068	  0.99860677	  0.99926451  0.49321981
+6785	 -6.27307692	 -0.00045601	  0.00027938	  7.27262091	  0.99860697	  0.99926461  0.49321979
+6786	 -6.27307708	 -0.00045594	  0.00027934	  7.27262114	  0.99860718	  0.99926472  0.49321986
+6787	 -6.27307724	 -0.00045587	  0.00027930	  7.27262137	  0.99860738	  0.99926483  0.49321988
+6788	 -6.27307740	 -0.00045581	  0.00027926	  7.27262160	  0.99860759	  0.99926494  0.49321990
+6789	 -6.27307756	 -0.00045574	  0.00027921	  7.27262182	  0.99860779	  0.99926505  0.49321998
+6790	 -6.27307772	 -0.00045567	  0.00027917	  7.27262205	  0.99860800	  0.99926516  0.49322003
+6791	 -6.27307788	 -0.00045560	  0.00027913	  7.27262228	  0.99860820	  0.99926526  0.49321994
+6792	 -6.27307804	 -0.00045554	  0.00027909	  7.27262251	  0.99860841	  0.99926537  0.49322002
+6793	 -6.27307820	 -0.00045547	  0.00027905	  7.27262273	  0.99860861	  0.99926548  0.49321999
+6794	 -6.27307836	 -0.00045540	  0.00027901	  7.27262296	  0.99860882	  0.99926559  0.49322005
+6795	 -6.27307852	 -0.00045534	  0.00027897	  7.27262319	  0.99860902	  0.99926570  0.49322007
+6796	 -6.27307868	 -0.00045527	  0.00027893	  7.27262342	  0.99860923	  0.99926580  0.49322002
+6797	 -6.27307884	 -0.00045520	  0.00027889	  7.27262364	  0.99860943	  0.99926591  0.49322013
+6798	 -6.27307900	 -0.00045514	  0.00027884	  7.27262387	  0.99860964	  0.99926602  0.49322009
+6799	 -6.27307916	 -0.00045507	  0.00027880	  7.27262410	  0.99860984	  0.99926613  0.49322010
+6800	 -6.27307932	 -0.00045500	  0.00027876	  7.27262432	  0.99861004	  0.99926624  0.49322020
+6801	 -6.27307949	 -0.00045493	  0.00027872	  7.27262455	  0.99861025	  0.99926634  0.49322020
+6802	 -6.27307964	 -0.00045487	  0.00027868	  7.27262478	  0.99861045	  0.99926645  0.49322021
+6803	 -6.27307980	 -0.00045480	  0.00027864	  7.27262500	  0.99861066	  0.99926656  0.49322031
+6804	 -6.27307996	 -0.00045473	  0.00027860	  7.27262523	  0.99861086	  0.99926667  0.49322031
+6805	 -6.27308012	 -0.00045467	  0.00027856	  7.27262546	  0.99861107	  0.99926677  0.49322033
+6806	 -6.27308028	 -0.00045460	  0.00027852	  7.27262568	  0.99861127	  0.99926688  0.49322029
+6807	 -6.27308044	 -0.00045453	  0.00027848	  7.27262591	  0.99861147	  0.99926699  0.49322034
+6808	 -6.27308060	 -0.00045447	  0.00027844	  7.27262614	  0.99861168	  0.99926710  0.49322033
+6809	 -6.27308076	 -0.00045440	  0.00027839	  7.27262636	  0.99861188	  0.99926721  0.49322036
+6810	 -6.27308092	 -0.00045433	  0.00027835	  7.27262659	  0.99861209	  0.99926731  0.49322047
+6811	 -6.27308108	 -0.00045427	  0.00027831	  7.27262682	  0.99861229	  0.99926742  0.49322045
+6812	 -6.27308124	 -0.00045420	  0.00027827	  7.27262704	  0.99861249	  0.99926753  0.49322049
+6813	 -6.27308140	 -0.00045413	  0.00027823	  7.27262727	  0.99861270	  0.99926764  0.49322055
+6814	 -6.27308156	 -0.00045407	  0.00027819	  7.27262749	  0.99861290	  0.99926774  0.49322054
+6815	 -6.27308172	 -0.00045400	  0.00027815	  7.27262772	  0.99861310	  0.99926785  0.49322056
+6816	 -6.27308188	 -0.00045393	  0.00027811	  7.27262795	  0.99861331	  0.99926796  0.49322059
+6817	 -6.27308204	 -0.00045387	  0.00027807	  7.27262817	  0.99861351	  0.99926807  0.49322050
+6818	 -6.27308220	 -0.00045380	  0.00027803	  7.27262840	  0.99861371	  0.99926817  0.49322063
+6819	 -6.27308236	 -0.00045373	  0.00027799	  7.27262862	  0.99861392	  0.99926828  0.49322066
+6820	 -6.27308252	 -0.00045367	  0.00027795	  7.27262885	  0.99861412	  0.99926839  0.49322063
+6821	 -6.27308268	 -0.00045360	  0.00027790	  7.27262907	  0.99861432	  0.99926849  0.49322070
+6822	 -6.27308284	 -0.00045353	  0.00027786	  7.27262930	  0.99861453	  0.99926860  0.49322066
+6823	 -6.27308299	 -0.00045347	  0.00027782	  7.27262953	  0.99861473	  0.99926871  0.49322073
+6824	 -6.27308315	 -0.00045340	  0.00027778	  7.27262975	  0.99861493	  0.99926882  0.49322074
+6825	 -6.27308331	 -0.00045334	  0.00027774	  7.27262998	  0.99861514	  0.99926892  0.49322073
+6826	 -6.27308347	 -0.00045327	  0.00027770	  7.27263020	  0.99861534	  0.99926903  0.49322080
+6827	 -6.27308363	 -0.00045320	  0.00027766	  7.27263043	  0.99861554	  0.99926914  0.49322087
+6828	 -6.27308379	 -0.00045314	  0.00027762	  7.27263065	  0.99861574	  0.99926924  0.49322079
+6829	 -6.27308395	 -0.00045307	  0.00027758	  7.27263088	  0.99861595	  0.99926935  0.49322088
+6830	 -6.27308411	 -0.00045300	  0.00027754	  7.27263110	  0.99861615	  0.99926946  0.49322089
+6831	 -6.27308426	 -0.00045294	  0.00027750	  7.27263133	  0.99861635	  0.99926956  0.49322091
+6832	 -6.27308442	 -0.00045287	  0.00027746	  7.27263155	  0.99861655	  0.99926967  0.49322099
+6833	 -6.27308458	 -0.00045281	  0.00027742	  7.27263178	  0.99861676	  0.99926978  0.49322093
+6834	 -6.27308474	 -0.00045274	  0.00027738	  7.27263200	  0.99861696	  0.99926989  0.49322094
+6835	 -6.27308490	 -0.00045267	  0.00027734	  7.27263223	  0.99861716	  0.99926999  0.49322104
+6836	 -6.27308506	 -0.00045261	  0.00027729	  7.27263245	  0.99861736	  0.99927010  0.49322101
+6837	 -6.27308522	 -0.00045254	  0.00027725	  7.27263268	  0.99861757	  0.99927021  0.49322100
+6838	 -6.27308537	 -0.00045247	  0.00027721	  7.27263290	  0.99861777	  0.99927031  0.49322109
+6839	 -6.27308553	 -0.00045241	  0.00027717	  7.27263312	  0.99861797	  0.99927042  0.49322112
+6840	 -6.27308569	 -0.00045234	  0.00027713	  7.27263335	  0.99861817	  0.99927053  0.49322118
+6841	 -6.27308585	 -0.00045228	  0.00027709	  7.27263357	  0.99861837	  0.99927063  0.49322108
+6842	 -6.27308601	 -0.00045221	  0.00027705	  7.27263380	  0.99861858	  0.99927074  0.49322119
+6843	 -6.27308616	 -0.00045214	  0.00027701	  7.27263402	  0.99861878	  0.99927085  0.49322124
+6844	 -6.27308632	 -0.00045208	  0.00027697	  7.27263424	  0.99861898	  0.99927095  0.49322120
+6845	 -6.27308648	 -0.00045201	  0.00027693	  7.27263447	  0.99861918	  0.99927106  0.49322125
+6846	 -6.27308664	 -0.00045195	  0.00027689	  7.27263469	  0.99861938	  0.99927116  0.49322131
+6847	 -6.27308680	 -0.00045188	  0.00027685	  7.27263492	  0.99861959	  0.99927127  0.49322139
+6848	 -6.27308695	 -0.00045181	  0.00027681	  7.27263514	  0.99861979	  0.99927138  0.49322128
+6849	 -6.27308711	 -0.00045175	  0.00027677	  7.27263536	  0.99861999	  0.99927148  0.49322133
+6850	 -6.27308727	 -0.00045168	  0.00027673	  7.27263559	  0.99862019	  0.99927159  0.49322134
+6851	 -6.27308743	 -0.00045162	  0.00027669	  7.27263581	  0.99862039	  0.99927170  0.49322141
+6852	 -6.27308759	 -0.00045155	  0.00027665	  7.27263604	  0.99862059	  0.99927180  0.49322137
+6853	 -6.27308774	 -0.00045148	  0.00027661	  7.27263626	  0.99862079	  0.99927191  0.49322148
+6854	 -6.27308790	 -0.00045142	  0.00027657	  7.27263648	  0.99862099	  0.99927202  0.49322145
+6855	 -6.27308806	 -0.00045135	  0.00027653	  7.27263671	  0.99862120	  0.99927212  0.49322138
+6856	 -6.27308822	 -0.00045129	  0.00027649	  7.27263693	  0.99862140	  0.99927223  0.49322155
+6857	 -6.27308837	 -0.00045122	  0.00027645	  7.27263715	  0.99862160	  0.99927233  0.49322147
+6858	 -6.27308853	 -0.00045116	  0.00027641	  7.27263737	  0.99862180	  0.99927244  0.49322164
+6859	 -6.27308869	 -0.00045109	  0.00027636	  7.27263760	  0.99862200	  0.99927255  0.49322155
+6860	 -6.27308884	 -0.00045102	  0.00027632	  7.27263782	  0.99862220	  0.99927265  0.49322156
+6861	 -6.27308900	 -0.00045096	  0.00027628	  7.27263804	  0.99862240	  0.99927276  0.49322154
+6862	 -6.27308916	 -0.00045089	  0.00027624	  7.27263827	  0.99862260	  0.99927286  0.49322167
+6863	 -6.27308932	 -0.00045083	  0.00027620	  7.27263849	  0.99862280	  0.99927297  0.49322165
+6864	 -6.27308947	 -0.00045076	  0.00027616	  7.27263871	  0.99862300	  0.99927308  0.49322177
+6865	 -6.27308963	 -0.00045070	  0.00027612	  7.27263894	  0.99862320	  0.99927318  0.49322172
+6866	 -6.27308979	 -0.00045063	  0.00027608	  7.27263916	  0.99862340	  0.99927329  0.49322177
+6867	 -6.27308994	 -0.00045056	  0.00027604	  7.27263938	  0.99862360	  0.99927339  0.49322171
+6868	 -6.27309010	 -0.00045050	  0.00027600	  7.27263960	  0.99862381	  0.99927350  0.49322172
+6869	 -6.27309026	 -0.00045043	  0.00027596	  7.27263983	  0.99862401	  0.99927360  0.49322182
+6870	 -6.27309042	 -0.00045037	  0.00027592	  7.27264005	  0.99862421	  0.99927371  0.49322183
+6871	 -6.27309057	 -0.00045030	  0.00027588	  7.27264027	  0.99862441	  0.99927382  0.49322187
+6872	 -6.27309073	 -0.00045024	  0.00027584	  7.27264049	  0.99862461	  0.99927392  0.49322184
+6873	 -6.27309089	 -0.00045017	  0.00027580	  7.27264071	  0.99862481	  0.99927403  0.49322189
+6874	 -6.27309104	 -0.00045011	  0.00027576	  7.27264094	  0.99862501	  0.99927413  0.49322190
+6875	 -6.27309120	 -0.00045004	  0.00027572	  7.27264116	  0.99862521	  0.99927424  0.49322188
+6876	 -6.27309136	 -0.00044997	  0.00027568	  7.27264138	  0.99862541	  0.99927434  0.49322197
+6877	 -6.27309151	 -0.00044991	  0.00027564	  7.27264160	  0.99862561	  0.99927445  0.49322195
+6878	 -6.27309167	 -0.00044984	  0.00027560	  7.27264182	  0.99862581	  0.99927455  0.49322198
+6879	 -6.27309183	 -0.00044978	  0.00027556	  7.27264205	  0.99862601	  0.99927466  0.49322195
+6880	 -6.27309198	 -0.00044971	  0.00027552	  7.27264227	  0.99862621	  0.99927477  0.49322211
+6881	 -6.27309214	 -0.00044965	  0.00027548	  7.27264249	  0.99862641	  0.99927487  0.49322215
+6882	 -6.27309229	 -0.00044958	  0.00027544	  7.27264271	  0.99862660	  0.99927498  0.49322209
+6883	 -6.27309245	 -0.00044952	  0.00027540	  7.27264293	  0.99862680	  0.99927508  0.49322211
+6884	 -6.27309261	 -0.00044945	  0.00027536	  7.27264315	  0.99862700	  0.99927519  0.49322213
+6885	 -6.27309276	 -0.00044939	  0.00027532	  7.27264338	  0.99862720	  0.99927529  0.49322220
+6886	 -6.27309292	 -0.00044932	  0.00027528	  7.27264360	  0.99862740	  0.99927540  0.49322206
+6887	 -6.27309307	 -0.00044926	  0.00027524	  7.27264382	  0.99862760	  0.99927550  0.49322222
+6888	 -6.27309323	 -0.00044919	  0.00027520	  7.27264404	  0.99862780	  0.99927561  0.49322230
+6889	 -6.27309339	 -0.00044913	  0.00027516	  7.27264426	  0.99862800	  0.99927571  0.49322233
+6890	 -6.27309354	 -0.00044906	  0.00027512	  7.27264448	  0.99862820	  0.99927582  0.49322226
+6891	 -6.27309370	 -0.00044900	  0.00027508	  7.27264470	  0.99862840	  0.99927592  0.49322237
+6892	 -6.27309385	 -0.00044893	  0.00027504	  7.27264492	  0.99862860	  0.99927603  0.49322238
+6893	 -6.27309401	 -0.00044887	  0.00027500	  7.27264514	  0.99862880	  0.99927613  0.49322229
+6894	 -6.27309417	 -0.00044880	  0.00027496	  7.27264537	  0.99862899	  0.99927624  0.49322245
+6895	 -6.27309432	 -0.00044874	  0.00027492	  7.27264559	  0.99862919	  0.99927634  0.49322245
+6896	 -6.27309448	 -0.00044867	  0.00027488	  7.27264581	  0.99862939	  0.99927645  0.49322246
+6897	 -6.27309463	 -0.00044861	  0.00027484	  7.27264603	  0.99862959	  0.99927655  0.49322247
+6898	 -6.27309479	 -0.00044854	  0.00027480	  7.27264625	  0.99862979	  0.99927666  0.49322254
+6899	 -6.27309494	 -0.00044848	  0.00027476	  7.27264647	  0.99862999	  0.99927676  0.49322253
+6900	 -6.27309510	 -0.00044841	  0.00027472	  7.27264669	  0.99863019	  0.99927687  0.49322258
+6901	 -6.27309526	 -0.00044835	  0.00027468	  7.27264691	  0.99863039	  0.99927697  0.49322250
+6902	 -6.27309541	 -0.00044828	  0.00027464	  7.27264713	  0.99863058	  0.99927708  0.49322253
+6903	 -6.27309557	 -0.00044822	  0.00027460	  7.27264735	  0.99863078	  0.99927718  0.49322260
+6904	 -6.27309572	 -0.00044815	  0.00027456	  7.27264757	  0.99863098	  0.99927729  0.49322265
+6905	 -6.27309588	 -0.00044809	  0.00027452	  7.27264779	  0.99863118	  0.99927739  0.49322261
+6906	 -6.27309603	 -0.00044802	  0.00027448	  7.27264801	  0.99863138	  0.99927750  0.49322265
+6907	 -6.27309619	 -0.00044796	  0.00027444	  7.27264823	  0.99863158	  0.99927760  0.49322274
+6908	 -6.27309634	 -0.00044789	  0.00027440	  7.27264845	  0.99863177	  0.99927770  0.49322271
+6909	 -6.27309650	 -0.00044783	  0.00027436	  7.27264867	  0.99863197	  0.99927781  0.49322271
+6910	 -6.27309665	 -0.00044776	  0.00027432	  7.27264889	  0.99863217	  0.99927791  0.49322277
+6911	 -6.27309681	 -0.00044770	  0.00027429	  7.27264911	  0.99863237	  0.99927802  0.49322282
+6912	 -6.27309696	 -0.00044763	  0.00027425	  7.27264933	  0.99863256	  0.99927812  0.49322277
+6913	 -6.27309712	 -0.00044757	  0.00027421	  7.27264955	  0.99863276	  0.99927823  0.49322279
+6914	 -6.27309727	 -0.00044750	  0.00027417	  7.27264977	  0.99863296	  0.99927833  0.49322290
+6915	 -6.27309743	 -0.00044744	  0.00027413	  7.27264999	  0.99863316	  0.99927844  0.49322286
+6916	 -6.27309758	 -0.00044737	  0.00027409	  7.27265021	  0.99863336	  0.99927854  0.49322289
+6917	 -6.27309774	 -0.00044731	  0.00027405	  7.27265043	  0.99863355	  0.99927864  0.49322292
+6918	 -6.27309789	 -0.00044724	  0.00027401	  7.27265065	  0.99863375	  0.99927875  0.49322303
+6919	 -6.27309805	 -0.00044718	  0.00027397	  7.27265087	  0.99863395	  0.99927885  0.49322297
+6920	 -6.27309820	 -0.00044712	  0.00027393	  7.27265108	  0.99863415	  0.99927896  0.49322299
+6921	 -6.27309835	 -0.00044705	  0.00027389	  7.27265130	  0.99863434	  0.99927906  0.49322300
+6922	 -6.27309851	 -0.00044699	  0.00027385	  7.27265152	  0.99863454	  0.99927916  0.49322302
+6923	 -6.27309866	 -0.00044692	  0.00027381	  7.27265174	  0.99863474	  0.99927927  0.49322302
+6924	 -6.27309882	 -0.00044686	  0.00027377	  7.27265196	  0.99863493	  0.99927937  0.49322309
+6925	 -6.27309897	 -0.00044679	  0.00027373	  7.27265218	  0.99863513	  0.99927948  0.49322304
+6926	 -6.27309913	 -0.00044673	  0.00027369	  7.27265240	  0.99863533	  0.99927958  0.49322317
+6927	 -6.27309928	 -0.00044666	  0.00027365	  7.27265262	  0.99863553	  0.99927968  0.49322317
+6928	 -6.27309944	 -0.00044660	  0.00027361	  7.27265284	  0.99863572	  0.99927979  0.49322320
+6929	 -6.27309959	 -0.00044653	  0.00027357	  7.27265305	  0.99863592	  0.99927989  0.49322325
+6930	 -6.27309974	 -0.00044647	  0.00027353	  7.27265327	  0.99863612	  0.99928000  0.49322322
+6931	 -6.27309990	 -0.00044641	  0.00027349	  7.27265349	  0.99863631	  0.99928010  0.49322331
+6932	 -6.27310005	 -0.00044634	  0.00027345	  7.27265371	  0.99863651	  0.99928020  0.49322327
+6933	 -6.27310021	 -0.00044628	  0.00027341	  7.27265393	  0.99863671	  0.99928031  0.49322319
+6934	 -6.27310036	 -0.00044621	  0.00027338	  7.27265415	  0.99863690	  0.99928041  0.49322336
+6935	 -6.27310051	 -0.00044615	  0.00027334	  7.27265436	  0.99863710	  0.99928052  0.49322341
+6936	 -6.27310067	 -0.00044608	  0.00027330	  7.27265458	  0.99863730	  0.99928062  0.49322335
+6937	 -6.27310082	 -0.00044602	  0.00027326	  7.27265480	  0.99863749	  0.99928072  0.49322336
+6938	 -6.27310097	 -0.00044596	  0.00027322	  7.27265502	  0.99863769	  0.99928083  0.49322343
+6939	 -6.27310113	 -0.00044589	  0.00027318	  7.27265524	  0.99863789	  0.99928093  0.49322345
+6940	 -6.27310128	 -0.00044583	  0.00027314	  7.27265546	  0.99863808	  0.99928103  0.49322341
+6941	 -6.27310144	 -0.00044576	  0.00027310	  7.27265567	  0.99863828	  0.99928114  0.49322343
+6942	 -6.27310159	 -0.00044570	  0.00027306	  7.27265589	  0.99863847	  0.99928124  0.49322353
+6943	 -6.27310174	 -0.00044563	  0.00027302	  7.27265611	  0.99863867	  0.99928134  0.49322355
+6944	 -6.27310190	 -0.00044557	  0.00027298	  7.27265633	  0.99863887	  0.99928145  0.49322359
+6945	 -6.27310205	 -0.00044551	  0.00027294	  7.27265654	  0.99863906	  0.99928155  0.49322357
+6946	 -6.27310220	 -0.00044544	  0.00027290	  7.27265676	  0.99863926	  0.99928165  0.49322365
+6947	 -6.27310236	 -0.00044538	  0.00027286	  7.27265698	  0.99863945	  0.99928176  0.49322365
+6948	 -6.27310251	 -0.00044531	  0.00027282	  7.27265720	  0.99863965	  0.99928186  0.49322366
+6949	 -6.27310266	 -0.00044525	  0.00027279	  7.27265741	  0.99863984	  0.99928196  0.49322350
+6950	 -6.27310282	 -0.00044519	  0.00027275	  7.27265763	  0.99864004	  0.99928207  0.49322363
+6951	 -6.27310297	 -0.00044512	  0.00027271	  7.27265785	  0.99864024	  0.99928217  0.49322376
+6952	 -6.27310312	 -0.00044506	  0.00027267	  7.27265807	  0.99864043	  0.99928227  0.49322376
+6953	 -6.27310328	 -0.00044499	  0.00027263	  7.27265828	  0.99864063	  0.99928238  0.49322386
+6954	 -6.27310343	 -0.00044493	  0.00027259	  7.27265850	  0.99864082	  0.99928248  0.49322387
+6955	 -6.27310358	 -0.00044487	  0.00027255	  7.27265872	  0.99864102	  0.99928258  0.49322377
+6956	 -6.27310374	 -0.00044480	  0.00027251	  7.27265893	  0.99864121	  0.99928269  0.49322371
+6957	 -6.27310389	 -0.00044474	  0.00027247	  7.27265915	  0.99864141	  0.99928279  0.49322385
+6958	 -6.27310404	 -0.00044467	  0.00027243	  7.27265937	  0.99864160	  0.99928289  0.49322391
+6959	 -6.27310419	 -0.00044461	  0.00027239	  7.27265958	  0.99864180	  0.99928300  0.49322388
+6960	 -6.27310435	 -0.00044455	  0.00027235	  7.27265980	  0.99864199	  0.99928310  0.49322387
+6961	 -6.27310450	 -0.00044448	  0.00027231	  7.27266002	  0.99864219	  0.99928320  0.49322394
+6962	 -6.27310465	 -0.00044442	  0.00027228	  7.27266023	  0.99864238	  0.99928330  0.49322403
+6963	 -6.27310481	 -0.00044436	  0.00027224	  7.27266045	  0.99864258	  0.99928341  0.49322393
+6964	 -6.27310496	 -0.00044429	  0.00027220	  7.27266067	  0.99864277	  0.99928351  0.49322396
+6965	 -6.27310511	 -0.00044423	  0.00027216	  7.27266088	  0.99864297	  0.99928361  0.49322397
+6966	 -6.27310526	 -0.00044416	  0.00027212	  7.27266110	  0.99864316	  0.99928372  0.49322408
+6967	 -6.27310542	 -0.00044410	  0.00027208	  7.27266132	  0.99864336	  0.99928382  0.49322399
+6968	 -6.27310557	 -0.00044404	  0.00027204	  7.27266153	  0.99864355	  0.99928392  0.49322405
+6969	 -6.27310572	 -0.00044397	  0.00027200	  7.27266175	  0.99864375	  0.99928402  0.49322411
+6970	 -6.27310587	 -0.00044391	  0.00027196	  7.27266196	  0.99864394	  0.99928413  0.49322415
+6971	 -6.27310603	 -0.00044385	  0.00027192	  7.27266218	  0.99864414	  0.99928423  0.49322414
+6972	 -6.27310618	 -0.00044378	  0.00027189	  7.27266240	  0.99864433	  0.99928433  0.49322429
+6973	 -6.27310633	 -0.00044372	  0.00027185	  7.27266261	  0.99864453	  0.99928444  0.49322422
+6974	 -6.27310648	 -0.00044365	  0.00027181	  7.27266283	  0.99864472	  0.99928454  0.49322422
+6975	 -6.27310663	 -0.00044359	  0.00027177	  7.27266304	  0.99864491	  0.99928464  0.49322418
+6976	 -6.27310679	 -0.00044353	  0.00027173	  7.27266326	  0.99864511	  0.99928474  0.49322426
+6977	 -6.27310694	 -0.00044346	  0.00027169	  7.27266347	  0.99864530	  0.99928485  0.49322432
+6978	 -6.27310709	 -0.00044340	  0.00027165	  7.27266369	  0.99864550	  0.99928495  0.49322429
+6979	 -6.27310724	 -0.00044334	  0.00027161	  7.27266391	  0.99864569	  0.99928505  0.49322440
+6980	 -6.27310739	 -0.00044327	  0.00027157	  7.27266412	  0.99864589	  0.99928515  0.49322431
+6981	 -6.27310755	 -0.00044321	  0.00027153	  7.27266434	  0.99864608	  0.99928526  0.49322435
+6982	 -6.27310770	 -0.00044315	  0.00027150	  7.27266455	  0.99864627	  0.99928536  0.49322446
+6983	 -6.27310785	 -0.00044308	  0.00027146	  7.27266477	  0.99864647	  0.99928546  0.49322440
+6984	 -6.27310800	 -0.00044302	  0.00027142	  7.27266498	  0.99864666	  0.99928556  0.49322441
+6985	 -6.27310815	 -0.00044296	  0.00027138	  7.27266520	  0.99864685	  0.99928566  0.49322447
+6986	 -6.27310831	 -0.00044289	  0.00027134	  7.27266541	  0.99864705	  0.99928577  0.49322449
+6987	 -6.27310846	 -0.00044283	  0.00027130	  7.27266563	  0.99864724	  0.99928587  0.49322455
+6988	 -6.27310861	 -0.00044277	  0.00027126	  7.27266584	  0.99864744	  0.99928597  0.49322455
+6989	 -6.27310876	 -0.00044270	  0.00027122	  7.27266606	  0.99864763	  0.99928607  0.49322448
+6990	 -6.27310891	 -0.00044264	  0.00027119	  7.27266627	  0.99864782	  0.99928618  0.49322460
+6991	 -6.27310906	 -0.00044258	  0.00027115	  7.27266649	  0.99864802	  0.99928628  0.49322463
+6992	 -6.27310921	 -0.00044251	  0.00027111	  7.27266670	  0.99864821	  0.99928638  0.49322466
+6993	 -6.27310937	 -0.00044245	  0.00027107	  7.27266692	  0.99864840	  0.99928648  0.49322476
+6994	 -6.27310952	 -0.00044239	  0.00027103	  7.27266713	  0.99864860	  0.99928658  0.49322465
+6995	 -6.27310967	 -0.00044232	  0.00027099	  7.27266735	  0.99864879	  0.99928669  0.49322471
+6996	 -6.27310982	 -0.00044226	  0.00027095	  7.27266756	  0.99864898	  0.99928679  0.49322475
+6997	 -6.27310997	 -0.00044220	  0.00027091	  7.27266777	  0.99864917	  0.99928689  0.49322474
+6998	 -6.27311012	 -0.00044213	  0.00027088	  7.27266799	  0.99864937	  0.99928699  0.49322474
+6999	 -6.27311027	 -0.00044207	  0.00027084	  7.27266820	  0.99864956	  0.99928709  0.49322480
+7000	 -6.27311042	 -0.00044201	  0.00027080	  7.27266842	  0.99864975	  0.99928719  0.49322485
+7001	 -6.27311058	 -0.00044194	  0.00027076	  7.27266863	  0.99864995	  0.99928730  0.49322481
+7002	 -6.27311073	 -0.00044188	  0.00027072	  7.27266884	  0.99865014	  0.99928740  0.49322488
+7003	 -6.27311088	 -0.00044182	  0.00027068	  7.27266906	  0.99865033	  0.99928750  0.49322485
+7004	 -6.27311103	 -0.00044176	  0.00027064	  7.27266927	  0.99865052	  0.99928760  0.49322488
+7005	 -6.27311118	 -0.00044169	  0.00027060	  7.27266949	  0.99865072	  0.99928770  0.49322494
+7006	 -6.27311133	 -0.00044163	  0.00027057	  7.27266970	  0.99865091	  0.99928780  0.49322492
+7007	 -6.27311148	 -0.00044157	  0.00027053	  7.27266991	  0.99865110	  0.99928791  0.49322499
+7008	 -6.27311163	 -0.00044150	  0.00027049	  7.27267013	  0.99865129	  0.99928801  0.49322490
+7009	 -6.27311178	 -0.00044144	  0.00027045	  7.27267034	  0.99865149	  0.99928811  0.49322494
+7010	 -6.27311193	 -0.00044138	  0.00027041	  7.27267056	  0.99865168	  0.99928821  0.49322503
+7011	 -6.27311208	 -0.00044131	  0.00027037	  7.27267077	  0.99865187	  0.99928831  0.49322507
+7012	 -6.27311223	 -0.00044125	  0.00027033	  7.27267098	  0.99865206	  0.99928841  0.49322506
+7013	 -6.27311238	 -0.00044119	  0.00027030	  7.27267120	  0.99865226	  0.99928852  0.49322507
+7014	 -6.27311253	 -0.00044113	  0.00027026	  7.27267141	  0.99865245	  0.99928862  0.49322511
+7015	 -6.27311269	 -0.00044106	  0.00027022	  7.27267162	  0.99865264	  0.99928872  0.49322515
+7016	 -6.27311284	 -0.00044100	  0.00027018	  7.27267184	  0.99865283	  0.99928882  0.49322525
+7017	 -6.27311299	 -0.00044094	  0.00027014	  7.27267205	  0.99865302	  0.99928892  0.49322511
+7018	 -6.27311314	 -0.00044087	  0.00027010	  7.27267226	  0.99865322	  0.99928902  0.49322518
+7019	 -6.27311329	 -0.00044081	  0.00027006	  7.27267247	  0.99865341	  0.99928912  0.49322526
+7020	 -6.27311344	 -0.00044075	  0.00027003	  7.27267269	  0.99865360	  0.99928922  0.49322521
+7021	 -6.27311359	 -0.00044069	  0.00026999	  7.27267290	  0.99865379	  0.99928933  0.49322528
+7022	 -6.27311374	 -0.00044062	  0.00026995	  7.27267311	  0.99865398	  0.99928943  0.49322529
+7023	 -6.27311389	 -0.00044056	  0.00026991	  7.27267333	  0.99865418	  0.99928953  0.49322527
+7024	 -6.27311404	 -0.00044050	  0.00026987	  7.27267354	  0.99865437	  0.99928963  0.49322539
+7025	 -6.27311419	 -0.00044044	  0.00026983	  7.27267375	  0.99865456	  0.99928973  0.49322538
+7026	 -6.27311434	 -0.00044037	  0.00026980	  7.27267396	  0.99865475	  0.99928983  0.49322547
+7027	 -6.27311449	 -0.00044031	  0.00026976	  7.27267418	  0.99865494	  0.99928993  0.49322544
+7028	 -6.27311464	 -0.00044025	  0.00026972	  7.27267439	  0.99865513	  0.99929003  0.49322545
+7029	 -6.27311479	 -0.00044018	  0.00026968	  7.27267460	  0.99865532	  0.99929013  0.49322545
+7030	 -6.27311494	 -0.00044012	  0.00026964	  7.27267481	  0.99865551	  0.99929024  0.49322537
+7031	 -6.27311509	 -0.00044006	  0.00026960	  7.27267503	  0.99865571	  0.99929034  0.49322549
+7032	 -6.27311524	 -0.00044000	  0.00026957	  7.27267524	  0.99865590	  0.99929044  0.49322552
+7033	 -6.27311539	 -0.00043993	  0.00026953	  7.27267545	  0.99865609	  0.99929054  0.49322561
+7034	 -6.27311554	 -0.00043987	  0.00026949	  7.27267566	  0.99865628	  0.99929064  0.49322551
+7035	 -6.27311569	 -0.00043981	  0.00026945	  7.27267588	  0.99865647	  0.99929074  0.49322559
+7036	 -6.27311583	 -0.00043975	  0.00026941	  7.27267609	  0.99865666	  0.99929084  0.49322564
+7037	 -6.27311598	 -0.00043968	  0.00026937	  7.27267630	  0.99865685	  0.99929094  0.49322558
+7038	 -6.27311613	 -0.00043962	  0.00026934	  7.27267651	  0.99865704	  0.99929104  0.49322567
+7039	 -6.27311628	 -0.00043956	  0.00026930	  7.27267672	  0.99865723	  0.99929114  0.49322564
+7040	 -6.27311643	 -0.00043950	  0.00026926	  7.27267693	  0.99865742	  0.99929124  0.49322573
+7041	 -6.27311658	 -0.00043944	  0.00026922	  7.27267715	  0.99865762	  0.99929134  0.49322571
+7042	 -6.27311673	 -0.00043937	  0.00026918	  7.27267736	  0.99865781	  0.99929144  0.49322569
+7043	 -6.27311688	 -0.00043931	  0.00026914	  7.27267757	  0.99865800	  0.99929155  0.49322578
+7044	 -6.27311703	 -0.00043925	  0.00026911	  7.27267778	  0.99865819	  0.99929165  0.49322578
+7045	 -6.27311718	 -0.00043919	  0.00026907	  7.27267799	  0.99865838	  0.99929175  0.49322584
+7046	 -6.27311733	 -0.00043912	  0.00026903	  7.27267820	  0.99865857	  0.99929185  0.49322586
+7047	 -6.27311748	 -0.00043906	  0.00026899	  7.27267842	  0.99865876	  0.99929195  0.49322590
+7048	 -6.27311763	 -0.00043900	  0.00026895	  7.27267863	  0.99865895	  0.99929205  0.49322588
+7049	 -6.27311777	 -0.00043894	  0.00026892	  7.27267884	  0.99865914	  0.99929215  0.49322594
+7050	 -6.27311792	 -0.00043887	  0.00026888	  7.27267905	  0.99865933	  0.99929225  0.49322584
+7051	 -6.27311807	 -0.00043881	  0.00026884	  7.27267926	  0.99865952	  0.99929235  0.49322593
+7052	 -6.27311822	 -0.00043875	  0.00026880	  7.27267947	  0.99865971	  0.99929245  0.49322593
+7053	 -6.27311837	 -0.00043869	  0.00026876	  7.27267968	  0.99865990	  0.99929255  0.49322599
+7054	 -6.27311852	 -0.00043863	  0.00026872	  7.27267989	  0.99866009	  0.99929265  0.49322601
+7055	 -6.27311867	 -0.00043856	  0.00026869	  7.27268010	  0.99866028	  0.99929275  0.49322609
+7056	 -6.27311882	 -0.00043850	  0.00026865	  7.27268032	  0.99866047	  0.99929285  0.49322605
+7057	 -6.27311897	 -0.00043844	  0.00026861	  7.27268053	  0.99866066	  0.99929295  0.49322609
+7058	 -6.27311911	 -0.00043838	  0.00026857	  7.27268074	  0.99866085	  0.99929305  0.49322609
+7059	 -6.27311926	 -0.00043832	  0.00026853	  7.27268095	  0.99866104	  0.99929315  0.49322617
+7060	 -6.27311941	 -0.00043825	  0.00026850	  7.27268116	  0.99866123	  0.99929325  0.49322622
+7061	 -6.27311956	 -0.00043819	  0.00026846	  7.27268137	  0.99866142	  0.99929335  0.49322614
+7062	 -6.27311971	 -0.00043813	  0.00026842	  7.27268158	  0.99866161	  0.99929345  0.49322631
+7063	 -6.27311986	 -0.00043807	  0.00026838	  7.27268179	  0.99866180	  0.99929355  0.49322620
+7064	 -6.27312000	 -0.00043800	  0.00026834	  7.27268200	  0.99866199	  0.99929365  0.49322616
+7065	 -6.27312015	 -0.00043794	  0.00026831	  7.27268221	  0.99866217	  0.99929375  0.49322624
+7066	 -6.27312030	 -0.00043788	  0.00026827	  7.27268242	  0.99866236	  0.99929385  0.49322623
+7067	 -6.27312045	 -0.00043782	  0.00026823	  7.27268263	  0.99866255	  0.99929395  0.49322635
+7068	 -6.27312060	 -0.00043776	  0.00026819	  7.27268284	  0.99866274	  0.99929405  0.49322632
+7069	 -6.27312075	 -0.00043770	  0.00026815	  7.27268305	  0.99866293	  0.99929415  0.49322635
+7070	 -6.27312089	 -0.00043763	  0.00026812	  7.27268326	  0.99866312	  0.99929425  0.49322639
+7071	 -6.27312104	 -0.00043757	  0.00026808	  7.27268347	  0.99866331	  0.99929435  0.49322639
+7072	 -6.27312119	 -0.00043751	  0.00026804	  7.27268368	  0.99866350	  0.99929445  0.49322638
+7073	 -6.27312134	 -0.00043745	  0.00026800	  7.27268389	  0.99866369	  0.99929455  0.49322647
+7074	 -6.27312149	 -0.00043739	  0.00026796	  7.27268410	  0.99866388	  0.99929465  0.49322642
+7075	 -6.27312163	 -0.00043732	  0.00026793	  7.27268431	  0.99866407	  0.99929475  0.49322644
+7076	 -6.27312178	 -0.00043726	  0.00026789	  7.27268452	  0.99866425	  0.99929485  0.49322646
+7077	 -6.27312193	 -0.00043720	  0.00026785	  7.27268473	  0.99866444	  0.99929495  0.49322653
+7078	 -6.27312208	 -0.00043714	  0.00026781	  7.27268494	  0.99866463	  0.99929505  0.49322663
+7079	 -6.27312223	 -0.00043708	  0.00026778	  7.27268515	  0.99866482	  0.99929515  0.49322655
+7080	 -6.27312237	 -0.00043702	  0.00026774	  7.27268536	  0.99866501	  0.99929525  0.49322658
+7081	 -6.27312252	 -0.00043695	  0.00026770	  7.27268557	  0.99866520	  0.99929535  0.49322660
+7082	 -6.27312267	 -0.00043689	  0.00026766	  7.27268578	  0.99866539	  0.99929545  0.49322666
+7083	 -6.27312282	 -0.00043683	  0.00026762	  7.27268599	  0.99866557	  0.99929555  0.49322663
+7084	 -6.27312296	 -0.00043677	  0.00026759	  7.27268619	  0.99866576	  0.99929564  0.49322672
+7085	 -6.27312311	 -0.00043671	  0.00026755	  7.27268640	  0.99866595	  0.99929574  0.49322669
+7086	 -6.27312326	 -0.00043665	  0.00026751	  7.27268661	  0.99866614	  0.99929584  0.49322667
+7087	 -6.27312341	 -0.00043658	  0.00026747	  7.27268682	  0.99866633	  0.99929594  0.49322665
+7088	 -6.27312355	 -0.00043652	  0.00026744	  7.27268703	  0.99866652	  0.99929604  0.49322678
+7089	 -6.27312370	 -0.00043646	  0.00026740	  7.27268724	  0.99866670	  0.99929614  0.49322680
+7090	 -6.27312385	 -0.00043640	  0.00026736	  7.27268745	  0.99866689	  0.99929624  0.49322677
+7091	 -6.27312399	 -0.00043634	  0.00026732	  7.27268766	  0.99866708	  0.99929634  0.49322687
+7092	 -6.27312414	 -0.00043628	  0.00026728	  7.27268787	  0.99866727	  0.99929644  0.49322695
+7093	 -6.27312429	 -0.00043622	  0.00026725	  7.27268807	  0.99866746	  0.99929654  0.49322684
+7094	 -6.27312444	 -0.00043615	  0.00026721	  7.27268828	  0.99866764	  0.99929664  0.49322695
+7095	 -6.27312458	 -0.00043609	  0.00026717	  7.27268849	  0.99866783	  0.99929674  0.49322694
+7096	 -6.27312473	 -0.00043603	  0.00026713	  7.27268870	  0.99866802	  0.99929684  0.49322694
+7097	 -6.27312488	 -0.00043597	  0.00026710	  7.27268891	  0.99866821	  0.99929693  0.49322692
+7098	 -6.27312502	 -0.00043591	  0.00026706	  7.27268912	  0.99866839	  0.99929703  0.49322694
+7099	 -6.27312517	 -0.00043585	  0.00026702	  7.27268932	  0.99866858	  0.99929713  0.49322699
+7100	 -6.27312532	 -0.00043579	  0.00026698	  7.27268953	  0.99866877	  0.99929723  0.49322697
+7101	 -6.27312546	 -0.00043572	  0.00026695	  7.27268974	  0.99866896	  0.99929733  0.49322709
+7102	 -6.27312561	 -0.00043566	  0.00026691	  7.27268995	  0.99866914	  0.99929743  0.49322698
+7103	 -6.27312576	 -0.00043560	  0.00026687	  7.27269016	  0.99866933	  0.99929753  0.49322713
+7104	 -6.27312590	 -0.00043554	  0.00026683	  7.27269037	  0.99866952	  0.99929763  0.49322708
+7105	 -6.27312605	 -0.00043548	  0.00026680	  7.27269057	  0.99866971	  0.99929773  0.49322723
+7106	 -6.27312620	 -0.00043542	  0.00026676	  7.27269078	  0.99866989	  0.99929782  0.49322717
+7107	 -6.27312634	 -0.00043536	  0.00026672	  7.27269099	  0.99867008	  0.99929792  0.49322722
+7108	 -6.27312649	 -0.00043529	  0.00026668	  7.27269120	  0.99867027	  0.99929802  0.49322714
+7109	 -6.27312664	 -0.00043523	  0.00026665	  7.27269140	  0.99867045	  0.99929812  0.49322725
+7110	 -6.27312678	 -0.00043517	  0.00026661	  7.27269161	  0.99867064	  0.99929822  0.49322739
+7111	 -6.27312693	 -0.00043511	  0.00026657	  7.27269182	  0.99867083	  0.99929832  0.49322721
+7112	 -6.27312708	 -0.00043505	  0.00026653	  7.27269203	  0.99867101	  0.99929842  0.49322728
+7113	 -6.27312722	 -0.00043499	  0.00026650	  7.27269223	  0.99867120	  0.99929852  0.49322731
+7114	 -6.27312737	 -0.00043493	  0.00026646	  7.27269244	  0.99867139	  0.99929861  0.49322735
+7115	 -6.27312752	 -0.00043487	  0.00026642	  7.27269265	  0.99867158	  0.99929871  0.49322737
+7116	 -6.27312766	 -0.00043481	  0.00026638	  7.27269286	  0.99867176	  0.99929881  0.49322735
+7117	 -6.27312781	 -0.00043474	  0.00026635	  7.27269306	  0.99867195	  0.99929891  0.49322744
+7118	 -6.27312795	 -0.00043468	  0.00026631	  7.27269327	  0.99867214	  0.99929901  0.49322745
+7119	 -6.27312810	 -0.00043462	  0.00026627	  7.27269348	  0.99867232	  0.99929911  0.49322747
+7120	 -6.27312825	 -0.00043456	  0.00026623	  7.27269368	  0.99867251	  0.99929920  0.49322750
+7121	 -6.27312839	 -0.00043450	  0.00026620	  7.27269389	  0.99867269	  0.99929930  0.49322745
+7122	 -6.27312854	 -0.00043444	  0.00026616	  7.27269410	  0.99867288	  0.99929940  0.49322761
+7123	 -6.27312868	 -0.00043438	  0.00026612	  7.27269431	  0.99867307	  0.99929950  0.49322746
+7124	 -6.27312883	 -0.00043432	  0.00026608	  7.27269451	  0.99867325	  0.99929960  0.49322757
+7125	 -6.27312898	 -0.00043426	  0.00026605	  7.27269472	  0.99867344	  0.99929970  0.49322765
+7126	 -6.27312912	 -0.00043420	  0.00026601	  7.27269493	  0.99867363	  0.99929979  0.49322763
+7127	 -6.27312927	 -0.00043413	  0.00026597	  7.27269513	  0.99867381	  0.99929989  0.49322751
+7128	 -6.27312941	 -0.00043407	  0.00026593	  7.27269534	  0.99867400	  0.99929999  0.49322758
+7129	 -6.27312956	 -0.00043401	  0.00026590	  7.27269555	  0.99867418	  0.99930009  0.49322771
+7130	 -6.27312970	 -0.00043395	  0.00026586	  7.27269575	  0.99867437	  0.99930019  0.49322770
+7131	 -6.27312985	 -0.00043389	  0.00026582	  7.27269596	  0.99867456	  0.99930029  0.49322772
+7132	 -6.27313000	 -0.00043383	  0.00026579	  7.27269616	  0.99867474	  0.99930038  0.49322775
+7133	 -6.27313014	 -0.00043377	  0.00026575	  7.27269637	  0.99867493	  0.99930048  0.49322776
+7134	 -6.27313029	 -0.00043371	  0.00026571	  7.27269658	  0.99867511	  0.99930058  0.49322779
+7135	 -6.27313043	 -0.00043365	  0.00026567	  7.27269678	  0.99867530	  0.99930068  0.49322775
+7136	 -6.27313058	 -0.00043359	  0.00026564	  7.27269699	  0.99867548	  0.99930078  0.49322782
+7137	 -6.27313072	 -0.00043353	  0.00026560	  7.27269720	  0.99867567	  0.99930087  0.49322777
+7138	 -6.27313087	 -0.00043347	  0.00026556	  7.27269740	  0.99867586	  0.99930097  0.49322785
+7139	 -6.27313101	 -0.00043341	  0.00026552	  7.27269761	  0.99867604	  0.99930107  0.49322785
+7140	 -6.27313116	 -0.00043335	  0.00026549	  7.27269781	  0.99867623	  0.99930117  0.49322792
+7141	 -6.27313130	 -0.00043328	  0.00026545	  7.27269802	  0.99867641	  0.99930127  0.49322802
+7142	 -6.27313145	 -0.00043322	  0.00026541	  7.27269823	  0.99867660	  0.99930136  0.49322800
+7143	 -6.27313159	 -0.00043316	  0.00026538	  7.27269843	  0.99867678	  0.99930146  0.49322801
+7144	 -6.27313174	 -0.00043310	  0.00026534	  7.27269864	  0.99867697	  0.99930156  0.49322793
+7145	 -6.27313188	 -0.00043304	  0.00026530	  7.27269884	  0.99867715	  0.99930166  0.49322797
+7146	 -6.27313203	 -0.00043298	  0.00026526	  7.27269905	  0.99867734	  0.99930175  0.49322808
+7147	 -6.27313217	 -0.00043292	  0.00026523	  7.27269925	  0.99867752	  0.99930185  0.49322805
+7148	 -6.27313232	 -0.00043286	  0.00026519	  7.27269946	  0.99867771	  0.99930195  0.49322811
+7149	 -6.27313246	 -0.00043280	  0.00026515	  7.27269966	  0.99867789	  0.99930205  0.49322809
+7150	 -6.27313261	 -0.00043274	  0.00026512	  7.27269987	  0.99867808	  0.99930214  0.49322806
+7151	 -6.27313275	 -0.00043268	  0.00026508	  7.27270007	  0.99867826	  0.99930224  0.49322819
+7152	 -6.27313290	 -0.00043262	  0.00026504	  7.27270028	  0.99867845	  0.99930234  0.49322820
+7153	 -6.27313304	 -0.00043256	  0.00026501	  7.27270049	  0.99867863	  0.99930244  0.49322821
+7154	 -6.27313319	 -0.00043250	  0.00026497	  7.27270069	  0.99867882	  0.99930253  0.49322826
+7155	 -6.27313333	 -0.00043244	  0.00026493	  7.27270090	  0.99867900	  0.99930263  0.49322825
+7156	 -6.27313348	 -0.00043238	  0.00026489	  7.27270110	  0.99867919	  0.99930273  0.49322828
+7157	 -6.27313362	 -0.00043232	  0.00026486	  7.27270131	  0.99867937	  0.99930283  0.49322824
+7158	 -6.27313377	 -0.00043226	  0.00026482	  7.27270151	  0.99867955	  0.99930292  0.49322829
+7159	 -6.27313391	 -0.00043220	  0.00026478	  7.27270171	  0.99867974	  0.99930302  0.49322833
+7160	 -6.27313405	 -0.00043214	  0.00026475	  7.27270192	  0.99867992	  0.99930312  0.49322832
+7161	 -6.27313420	 -0.00043207	  0.00026471	  7.27270212	  0.99868011	  0.99930322  0.49322832
+7162	 -6.27313434	 -0.00043201	  0.00026467	  7.27270233	  0.99868029	  0.99930331  0.49322841
+7163	 -6.27313449	 -0.00043195	  0.00026464	  7.27270253	  0.99868048	  0.99930341  0.49322842
+7164	 -6.27313463	 -0.00043189	  0.00026460	  7.27270274	  0.99868066	  0.99930351  0.49322850
+7165	 -6.27313478	 -0.00043183	  0.00026456	  7.27270294	  0.99868084	  0.99930360  0.49322849
+7166	 -6.27313492	 -0.00043177	  0.00026452	  7.27270315	  0.99868103	  0.99930370  0.49322832
+7167	 -6.27313506	 -0.00043171	  0.00026449	  7.27270335	  0.99868121	  0.99930380  0.49322850
+7168	 -6.27313521	 -0.00043165	  0.00026445	  7.27270356	  0.99868140	  0.99930390  0.49322849
+7169	 -6.27313535	 -0.00043159	  0.00026441	  7.27270376	  0.99868158	  0.99930399  0.49322851
+7170	 -6.27313550	 -0.00043153	  0.00026438	  7.27270396	  0.99868176	  0.99930409  0.49322842
+7171	 -6.27313564	 -0.00043147	  0.00026434	  7.27270417	  0.99868195	  0.99930419  0.49322856
+7172	 -6.27313578	 -0.00043141	  0.00026430	  7.27270437	  0.99868213	  0.99930428  0.49322852
+7173	 -6.27313593	 -0.00043135	  0.00026427	  7.27270458	  0.99868232	  0.99930438  0.49322857
+7174	 -6.27313607	 -0.00043129	  0.00026423	  7.27270478	  0.99868250	  0.99930448  0.49322857
+7175	 -6.27313622	 -0.00043123	  0.00026419	  7.27270498	  0.99868268	  0.99930458  0.49322862
+7176	 -6.27313636	 -0.00043117	  0.00026416	  7.27270519	  0.99868287	  0.99930467  0.49322867
+7177	 -6.27313650	 -0.00043111	  0.00026412	  7.27270539	  0.99868305	  0.99930477  0.49322876
+7178	 -6.27313665	 -0.00043105	  0.00026408	  7.27270560	  0.99868323	  0.99930487  0.49322877
+7179	 -6.27313679	 -0.00043099	  0.00026405	  7.27270580	  0.99868342	  0.99930496  0.49322873
+7180	 -6.27313693	 -0.00043093	  0.00026401	  7.27270600	  0.99868360	  0.99930506  0.49322870
+7181	 -6.27313708	 -0.00043087	  0.00026397	  7.27270621	  0.99868378	  0.99930516  0.49322877
+7182	 -6.27313722	 -0.00043081	  0.00026394	  7.27270641	  0.99868397	  0.99930525  0.49322879
+7183	 -6.27313737	 -0.00043075	  0.00026390	  7.27270661	  0.99868415	  0.99930535  0.49322891
+7184	 -6.27313751	 -0.00043069	  0.00026386	  7.27270682	  0.99868433	  0.99930545  0.49322887
+7185	 -6.27313765	 -0.00043063	  0.00026382	  7.27270702	  0.99868452	  0.99930554  0.49322881
+7186	 -6.27313780	 -0.00043057	  0.00026379	  7.27270722	  0.99868470	  0.99930564  0.49322892
+7187	 -6.27313794	 -0.00043051	  0.00026375	  7.27270743	  0.99868488	  0.99930574  0.49322891
+7188	 -6.27313808	 -0.00043045	  0.00026371	  7.27270763	  0.99868507	  0.99930583  0.49322891
+7189	 -6.27313823	 -0.00043039	  0.00026368	  7.27270783	  0.99868525	  0.99930593  0.49322893
+7190	 -6.27313837	 -0.00043033	  0.00026364	  7.27270804	  0.99868543	  0.99930603  0.49322886
+7191	 -6.27313851	 -0.00043027	  0.00026360	  7.27270824	  0.99868561	  0.99930612  0.49322902
+7192	 -6.27313865	 -0.00043021	  0.00026357	  7.27270844	  0.99868580	  0.99930622  0.49322900
+7193	 -6.27313880	 -0.00043015	  0.00026353	  7.27270864	  0.99868598	  0.99930632  0.49322904
+7194	 -6.27313894	 -0.00043009	  0.00026349	  7.27270885	  0.99868616	  0.99930641  0.49322903
+7195	 -6.27313908	 -0.00043003	  0.00026346	  7.27270905	  0.99868634	  0.99930651  0.49322900
+7196	 -6.27313923	 -0.00042997	  0.00026342	  7.27270925	  0.99868653	  0.99930660  0.49322904
+7197	 -6.27313937	 -0.00042991	  0.00026338	  7.27270946	  0.99868671	  0.99930670  0.49322912
+7198	 -6.27313951	 -0.00042985	  0.00026335	  7.27270966	  0.99868689	  0.99930680  0.49322917
+7199	 -6.27313966	 -0.00042980	  0.00026331	  7.27270986	  0.99868707	  0.99930689  0.49322903
+7200	 -6.27313980	 -0.00042974	  0.00026328	  7.27271006	  0.99868726	  0.99930699  0.49322919
+7201	 -6.27313994	 -0.00042968	  0.00026324	  7.27271027	  0.99868744	  0.99930709  0.49322915
+7202	 -6.27314008	 -0.00042962	  0.00026320	  7.27271047	  0.99868762	  0.99930718  0.49322921
+7203	 -6.27314023	 -0.00042956	  0.00026317	  7.27271067	  0.99868780	  0.99930728  0.49322918
+7204	 -6.27314037	 -0.00042950	  0.00026313	  7.27271087	  0.99868799	  0.99930737  0.49322930
+7205	 -6.27314051	 -0.00042944	  0.00026309	  7.27271107	  0.99868817	  0.99930747  0.49322927
+7206	 -6.27314065	 -0.00042938	  0.00026306	  7.27271128	  0.99868835	  0.99930757  0.49322931
+7207	 -6.27314080	 -0.00042932	  0.00026302	  7.27271148	  0.99868853	  0.99930766  0.49322934
+7208	 -6.27314094	 -0.00042926	  0.00026298	  7.27271168	  0.99868871	  0.99930776  0.49322928
+7209	 -6.27314108	 -0.00042920	  0.00026295	  7.27271188	  0.99868890	  0.99930785  0.49322942
+7210	 -6.27314122	 -0.00042914	  0.00026291	  7.27271208	  0.99868908	  0.99930795  0.49322942
+7211	 -6.27314137	 -0.00042908	  0.00026287	  7.27271229	  0.99868926	  0.99930805  0.49322944
+7212	 -6.27314151	 -0.00042902	  0.00026284	  7.27271249	  0.99868944	  0.99930814  0.49322951
+7213	 -6.27314165	 -0.00042896	  0.00026280	  7.27271269	  0.99868962	  0.99930824  0.49322944
+7214	 -6.27314179	 -0.00042890	  0.00026276	  7.27271289	  0.99868980	  0.99930833  0.49322951
+7215	 -6.27314194	 -0.00042884	  0.00026273	  7.27271309	  0.99868999	  0.99930843  0.49322954
+7216	 -6.27314208	 -0.00042878	  0.00026269	  7.27271329	  0.99869017	  0.99930853  0.49322961
+7217	 -6.27314222	 -0.00042872	  0.00026265	  7.27271350	  0.99869035	  0.99930862  0.49322958
+7218	 -6.27314236	 -0.00042866	  0.00026262	  7.27271370	  0.99869053	  0.99930872  0.49322958
+7219	 -6.27314250	 -0.00042861	  0.00026258	  7.27271390	  0.99869071	  0.99930881  0.49322960
+7220	 -6.27314265	 -0.00042855	  0.00026255	  7.27271410	  0.99869089	  0.99930891  0.49322954
+7221	 -6.27314279	 -0.00042849	  0.00026251	  7.27271430	  0.99869107	  0.99930900  0.49322960
+7222	 -6.27314293	 -0.00042843	  0.00026247	  7.27271450	  0.99869125	  0.99930910  0.49322964
+7223	 -6.27314307	 -0.00042837	  0.00026244	  7.27271470	  0.99869144	  0.99930920  0.49322967
+7224	 -6.27314321	 -0.00042831	  0.00026240	  7.27271491	  0.99869162	  0.99930929  0.49322963
+7225	 -6.27314336	 -0.00042825	  0.00026236	  7.27271511	  0.99869180	  0.99930939  0.49322972
+7226	 -6.27314350	 -0.00042819	  0.00026233	  7.27271531	  0.99869198	  0.99930948  0.49322962
+7227	 -6.27314364	 -0.00042813	  0.00026229	  7.27271551	  0.99869216	  0.99930958  0.49322977
+7228	 -6.27314378	 -0.00042807	  0.00026226	  7.27271571	  0.99869234	  0.99930967  0.49322982
+7229	 -6.27314392	 -0.00042801	  0.00026222	  7.27271591	  0.99869252	  0.99930977  0.49322974
+7230	 -6.27314406	 -0.00042795	  0.00026218	  7.27271611	  0.99869270	  0.99930986  0.49322983
+7231	 -6.27314421	 -0.00042789	  0.00026215	  7.27271631	  0.99869288	  0.99930996  0.49322981
+7232	 -6.27314435	 -0.00042783	  0.00026211	  7.27271651	  0.99869306	  0.99931005  0.49322987
+7233	 -6.27314449	 -0.00042778	  0.00026207	  7.27271671	  0.99869325	  0.99931015  0.49322991
+7234	 -6.27314463	 -0.00042772	  0.00026204	  7.27271691	  0.99869343	  0.99931025  0.49322985
+7235	 -6.27314477	 -0.00042766	  0.00026200	  7.27271711	  0.99869361	  0.99931034  0.49322989
+7236	 -6.27314491	 -0.00042760	  0.00026197	  7.27271731	  0.99869379	  0.99931044  0.49322995
+7237	 -6.27314505	 -0.00042754	  0.00026193	  7.27271752	  0.99869397	  0.99931053  0.49322998
+7238	 -6.27314520	 -0.00042748	  0.00026189	  7.27271772	  0.99869415	  0.99931063  0.49322992
+7239	 -6.27314534	 -0.00042742	  0.00026186	  7.27271792	  0.99869433	  0.99931072  0.49322999
+7240	 -6.27314548	 -0.00042736	  0.00026182	  7.27271812	  0.99869451	  0.99931082  0.49323014
+7241	 -6.27314562	 -0.00042730	  0.00026178	  7.27271832	  0.99869469	  0.99931091  0.49323001
+7242	 -6.27314576	 -0.00042724	  0.00026175	  7.27271852	  0.99869487	  0.99931101  0.49323007
+7243	 -6.27314590	 -0.00042719	  0.00026171	  7.27271872	  0.99869505	  0.99931110  0.49323010
+7244	 -6.27314604	 -0.00042713	  0.00026168	  7.27271892	  0.99869523	  0.99931120  0.49323018
+7245	 -6.27314618	 -0.00042707	  0.00026164	  7.27271912	  0.99869541	  0.99931129  0.49323018
+7246	 -6.27314633	 -0.00042701	  0.00026160	  7.27271932	  0.99869559	  0.99931139  0.49323016
+7247	 -6.27314647	 -0.00042695	  0.00026157	  7.27271952	  0.99869577	  0.99931148  0.49323007
+7248	 -6.27314661	 -0.00042689	  0.00026153	  7.27271972	  0.99869595	  0.99931158  0.49323022
+7249	 -6.27314675	 -0.00042683	  0.00026150	  7.27271992	  0.99869613	  0.99931167  0.49323025
+7250	 -6.27314689	 -0.00042677	  0.00026146	  7.27272012	  0.99869631	  0.99931177  0.49323030
+7251	 -6.27314703	 -0.00042671	  0.00026142	  7.27272032	  0.99869649	  0.99931186  0.49323027
+7252	 -6.27314717	 -0.00042666	  0.00026139	  7.27272051	  0.99869667	  0.99931196  0.49323031
+7253	 -6.27314731	 -0.00042660	  0.00026135	  7.27272071	  0.99869685	  0.99931205  0.49323029
+7254	 -6.27314745	 -0.00042654	  0.00026132	  7.27272091	  0.99869703	  0.99931215  0.49323033
+7255	 -6.27314759	 -0.00042648	  0.00026128	  7.27272111	  0.99869721	  0.99931224  0.49323043
+7256	 -6.27314773	 -0.00042642	  0.00026124	  7.27272131	  0.99869739	  0.99931234  0.49323035
+7257	 -6.27314787	 -0.00042636	  0.00026121	  7.27272151	  0.99869757	  0.99931243  0.49323032
+7258	 -6.27314801	 -0.00042630	  0.00026117	  7.27272171	  0.99869775	  0.99931253  0.49323043
+7259	 -6.27314815	 -0.00042624	  0.00026114	  7.27272191	  0.99869792	  0.99931262  0.49323038
+7260	 -6.27314830	 -0.00042619	  0.00026110	  7.27272211	  0.99869810	  0.99931272  0.49323055
+7261	 -6.27314844	 -0.00042613	  0.00026106	  7.27272231	  0.99869828	  0.99931281  0.49323047
+7262	 -6.27314858	 -0.00042607	  0.00026103	  7.27272251	  0.99869846	  0.99931290  0.49323039
+7263	 -6.27314872	 -0.00042601	  0.00026099	  7.27272271	  0.99869864	  0.99931300  0.49323039
+7264	 -6.27314886	 -0.00042595	  0.00026096	  7.27272291	  0.99869882	  0.99931309  0.49323057
+7265	 -6.27314900	 -0.00042589	  0.00026092	  7.27272310	  0.99869900	  0.99931319  0.49323051
+7266	 -6.27314914	 -0.00042583	  0.00026088	  7.27272330	  0.99869918	  0.99931328  0.49323056
+7267	 -6.27314928	 -0.00042578	  0.00026085	  7.27272350	  0.99869936	  0.99931338  0.49323064
+7268	 -6.27314942	 -0.00042572	  0.00026081	  7.27272370	  0.99869954	  0.99931347  0.49323065
+7269	 -6.27314956	 -0.00042566	  0.00026078	  7.27272390	  0.99869972	  0.99931357  0.49323065
+7270	 -6.27314970	 -0.00042560	  0.00026074	  7.27272410	  0.99869989	  0.99931366  0.49323070
+7271	 -6.27314984	 -0.00042554	  0.00026070	  7.27272430	  0.99870007	  0.99931375  0.49323062
+7272	 -6.27314998	 -0.00042548	  0.00026067	  7.27272450	  0.99870025	  0.99931385  0.49323063
+7273	 -6.27315012	 -0.00042542	  0.00026063	  7.27272469	  0.99870043	  0.99931394  0.49323075
+7274	 -6.27315026	 -0.00042537	  0.00026060	  7.27272489	  0.99870061	  0.99931404  0.49323074
+7275	 -6.27315040	 -0.00042531	  0.00026056	  7.27272509	  0.99870079	  0.99931413  0.49323081
+7276	 -6.27315054	 -0.00042525	  0.00026052	  7.27272529	  0.99870097	  0.99931423  0.49323082
+7277	 -6.27315068	 -0.00042519	  0.00026049	  7.27272549	  0.99870115	  0.99931432  0.49323079
+7278	 -6.27315082	 -0.00042513	  0.00026045	  7.27272569	  0.99870132	  0.99931441  0.49323072
+7279	 -6.27315096	 -0.00042507	  0.00026042	  7.27272588	  0.99870150	  0.99931451  0.49323088
+7280	 -6.27315110	 -0.00042502	  0.00026038	  7.27272608	  0.99870168	  0.99931460  0.49323096
+7281	 -6.27315124	 -0.00042496	  0.00026035	  7.27272628	  0.99870186	  0.99931470  0.49323088
+7282	 -6.27315138	 -0.00042490	  0.00026031	  7.27272648	  0.99870204	  0.99931479  0.49323085
+7283	 -6.27315152	 -0.00042484	  0.00026027	  7.27272668	  0.99870222	  0.99931489  0.49323089
+7284	 -6.27315165	 -0.00042478	  0.00026024	  7.27272687	  0.99870239	  0.99931498  0.49323085
+7285	 -6.27315179	 -0.00042472	  0.00026020	  7.27272707	  0.99870257	  0.99931507  0.49323101
+7286	 -6.27315193	 -0.00042467	  0.00026017	  7.27272727	  0.99870275	  0.99931517  0.49323094
+7287	 -6.27315207	 -0.00042461	  0.00026013	  7.27272747	  0.99870293	  0.99931526  0.49323104
+7288	 -6.27315221	 -0.00042455	  0.00026010	  7.27272766	  0.99870311	  0.99931535  0.49323100
+7289	 -6.27315235	 -0.00042449	  0.00026006	  7.27272786	  0.99870328	  0.99931545  0.49323105
+7290	 -6.27315249	 -0.00042443	  0.00026002	  7.27272806	  0.99870346	  0.99931554  0.49323112
+7291	 -6.27315263	 -0.00042437	  0.00025999	  7.27272826	  0.99870364	  0.99931564  0.49323100
+7292	 -6.27315277	 -0.00042432	  0.00025995	  7.27272845	  0.99870382	  0.99931573  0.49323104
+7293	 -6.27315291	 -0.00042426	  0.00025992	  7.27272865	  0.99870399	  0.99931582  0.49323113
+7294	 -6.27315305	 -0.00042420	  0.00025988	  7.27272885	  0.99870417	  0.99931592  0.49323100
+7295	 -6.27315319	 -0.00042414	  0.00025985	  7.27272905	  0.99870435	  0.99931601  0.49323118
+7296	 -6.27315333	 -0.00042408	  0.00025981	  7.27272924	  0.99870453	  0.99931611  0.49323122
+7297	 -6.27315347	 -0.00042403	  0.00025978	  7.27272944	  0.99870470	  0.99931620  0.49323123
+7298	 -6.27315360	 -0.00042397	  0.00025974	  7.27272964	  0.99870488	  0.99931629  0.49323124
+7299	 -6.27315374	 -0.00042391	  0.00025970	  7.27272983	  0.99870506	  0.99931639  0.49323127
+7300	 -6.27315388	 -0.00042385	  0.00025967	  7.27273003	  0.99870524	  0.99931648  0.49323133
+7301	 -6.27315402	 -0.00042379	  0.00025963	  7.27273023	  0.99870541	  0.99931657  0.49323140
+7302	 -6.27315416	 -0.00042374	  0.00025960	  7.27273042	  0.99870559	  0.99931667  0.49323133
+7303	 -6.27315430	 -0.00042368	  0.00025956	  7.27273062	  0.99870577	  0.99931676  0.49323138
+7304	 -6.27315444	 -0.00042362	  0.00025953	  7.27273082	  0.99870595	  0.99931685  0.49323140
+7305	 -6.27315458	 -0.00042356	  0.00025949	  7.27273101	  0.99870612	  0.99931695  0.49323145
+7306	 -6.27315472	 -0.00042350	  0.00025946	  7.27273121	  0.99870630	  0.99931704  0.49323139
+7307	 -6.27315485	 -0.00042345	  0.00025942	  7.27273141	  0.99870648	  0.99931713  0.49323136
+7308	 -6.27315499	 -0.00042339	  0.00025938	  7.27273160	  0.99870665	  0.99931723  0.49323144
+7309	 -6.27315513	 -0.00042333	  0.00025935	  7.27273180	  0.99870683	  0.99931732  0.49323141
+7310	 -6.27315527	 -0.00042327	  0.00025931	  7.27273200	  0.99870701	  0.99931741  0.49323140
+7311	 -6.27315541	 -0.00042321	  0.00025928	  7.27273219	  0.99870719	  0.99931751  0.49323155
+7312	 -6.27315555	 -0.00042316	  0.00025924	  7.27273239	  0.99870736	  0.99931760  0.49323157
+7313	 -6.27315569	 -0.00042310	  0.00025921	  7.27273259	  0.99870754	  0.99931769  0.49323161
+7314	 -6.27315582	 -0.00042304	  0.00025917	  7.27273278	  0.99870772	  0.99931779  0.49323157
+7315	 -6.27315596	 -0.00042298	  0.00025914	  7.27273298	  0.99870789	  0.99931788  0.49323162
+7316	 -6.27315610	 -0.00042292	  0.00025910	  7.27273318	  0.99870807	  0.99931797  0.49323164
+7317	 -6.27315624	 -0.00042287	  0.00025907	  7.27273337	  0.99870825	  0.99931807  0.49323172
+7318	 -6.27315638	 -0.00042281	  0.00025903	  7.27273357	  0.99870842	  0.99931816  0.49323163
+7319	 -6.27315652	 -0.00042275	  0.00025899	  7.27273376	  0.99870860	  0.99931825  0.49323158
+7320	 -6.27315665	 -0.00042269	  0.00025896	  7.27273396	  0.99870877	  0.99931835  0.49323168
+7321	 -6.27315679	 -0.00042264	  0.00025892	  7.27273416	  0.99870895	  0.99931844  0.49323175
+7322	 -6.27315693	 -0.00042258	  0.00025889	  7.27273435	  0.99870913	  0.99931853  0.49323172
+7323	 -6.27315707	 -0.00042252	  0.00025885	  7.27273455	  0.99870930	  0.99931863  0.49323175
+7324	 -6.27315721	 -0.00042246	  0.00025882	  7.27273474	  0.99870948	  0.99931872  0.49323179
+7325	 -6.27315734	 -0.00042241	  0.00025878	  7.27273494	  0.99870966	  0.99931881  0.49323178
+7326	 -6.27315748	 -0.00042235	  0.00025875	  7.27273513	  0.99870983	  0.99931891  0.49323183
+7327	 -6.27315762	 -0.00042229	  0.00025871	  7.27273533	  0.99871001	  0.99931900  0.49323180
+7328	 -6.27315776	 -0.00042223	  0.00025868	  7.27273552	  0.99871018	  0.99931909  0.49323181
+7329	 -6.27315790	 -0.00042218	  0.00025864	  7.27273572	  0.99871036	  0.99931918  0.49323188
+7330	 -6.27315803	 -0.00042212	  0.00025861	  7.27273592	  0.99871054	  0.99931928  0.49323197
+7331	 -6.27315817	 -0.00042206	  0.00025857	  7.27273611	  0.99871071	  0.99931937  0.49323190
+7332	 -6.27315831	 -0.00042200	  0.00025854	  7.27273631	  0.99871089	  0.99931946  0.49323185
+7333	 -6.27315845	 -0.00042194	  0.00025850	  7.27273650	  0.99871106	  0.99931956  0.49323199
+7334	 -6.27315858	 -0.00042189	  0.00025846	  7.27273670	  0.99871124	  0.99931965  0.49323204
+7335	 -6.27315872	 -0.00042183	  0.00025843	  7.27273689	  0.99871141	  0.99931974  0.49323191
+7336	 -6.27315886	 -0.00042177	  0.00025839	  7.27273709	  0.99871159	  0.99931983  0.49323202
+7337	 -6.27315900	 -0.00042171	  0.00025836	  7.27273728	  0.99871177	  0.99931993  0.49323199
+7338	 -6.27315913	 -0.00042166	  0.00025832	  7.27273748	  0.99871194	  0.99932002  0.49323200
+7339	 -6.27315927	 -0.00042160	  0.00025829	  7.27273767	  0.99871212	  0.99932011  0.49323212
+7340	 -6.27315941	 -0.00042154	  0.00025825	  7.27273787	  0.99871229	  0.99932020  0.49323215
+7341	 -6.27315955	 -0.00042149	  0.00025822	  7.27273806	  0.99871247	  0.99932030  0.49323211
+7342	 -6.27315968	 -0.00042143	  0.00025818	  7.27273826	  0.99871264	  0.99932039  0.49323217
+7343	 -6.27315982	 -0.00042137	  0.00025815	  7.27273845	  0.99871282	  0.99932048  0.49323219
+7344	 -6.27315996	 -0.00042131	  0.00025811	  7.27273864	  0.99871299	  0.99932057  0.49323223
+7345	 -6.27316010	 -0.00042126	  0.00025808	  7.27273884	  0.99871317	  0.99932067  0.49323224
+7346	 -6.27316023	 -0.00042120	  0.00025804	  7.27273903	  0.99871334	  0.99932076  0.49323221
+7347	 -6.27316037	 -0.00042114	  0.00025801	  7.27273923	  0.99871352	  0.99932085  0.49323224
+7348	 -6.27316051	 -0.00042108	  0.00025797	  7.27273942	  0.99871369	  0.99932094  0.49323220
+7349	 -6.27316064	 -0.00042103	  0.00025794	  7.27273962	  0.99871387	  0.99932104  0.49323229
+7350	 -6.27316078	 -0.00042097	  0.00025790	  7.27273981	  0.99871404	  0.99932113  0.49323228
+7351	 -6.27316092	 -0.00042091	  0.00025787	  7.27274001	  0.99871422	  0.99932122  0.49323228
+7352	 -6.27316105	 -0.00042085	  0.00025783	  7.27274020	  0.99871439	  0.99932131  0.49323234
+7353	 -6.27316119	 -0.00042080	  0.00025780	  7.27274039	  0.99871457	  0.99932141  0.49323243
+7354	 -6.27316133	 -0.00042074	  0.00025776	  7.27274059	  0.99871474	  0.99932150  0.49323241
+7355	 -6.27316147	 -0.00042068	  0.00025773	  7.27274078	  0.99871492	  0.99932159  0.49323242
+7356	 -6.27316160	 -0.00042063	  0.00025769	  7.27274098	  0.99871509	  0.99932168  0.49323234
+7357	 -6.27316174	 -0.00042057	  0.00025766	  7.27274117	  0.99871527	  0.99932177  0.49323243
+7358	 -6.27316188	 -0.00042051	  0.00025762	  7.27274136	  0.99871544	  0.99932187  0.49323249
+7359	 -6.27316201	 -0.00042045	  0.00025759	  7.27274156	  0.99871562	  0.99932196  0.49323249
+7360	 -6.27316215	 -0.00042040	  0.00025755	  7.27274175	  0.99871579	  0.99932205  0.49323255
+7361	 -6.27316229	 -0.00042034	  0.00025752	  7.27274195	  0.99871597	  0.99932214  0.49323261
+7362	 -6.27316242	 -0.00042028	  0.00025748	  7.27274214	  0.99871614	  0.99932223  0.49323266
+7363	 -6.27316256	 -0.00042023	  0.00025745	  7.27274233	  0.99871631	  0.99932233  0.49323261
+7364	 -6.27316270	 -0.00042017	  0.00025741	  7.27274253	  0.99871649	  0.99932242  0.49323265
+7365	 -6.27316283	 -0.00042011	  0.00025738	  7.27274272	  0.99871666	  0.99932251  0.49323261
+7366	 -6.27316297	 -0.00042006	  0.00025734	  7.27274291	  0.99871684	  0.99932260  0.49323268
+7367	 -6.27316311	 -0.00042000	  0.00025731	  7.27274311	  0.99871701	  0.99932269  0.49323261
+7368	 -6.27316324	 -0.00041994	  0.00025727	  7.27274330	  0.99871719	  0.99932279  0.49323277
+7369	 -6.27316338	 -0.00041988	  0.00025724	  7.27274349	  0.99871736	  0.99932288  0.49323278
+7370	 -6.27316351	 -0.00041983	  0.00025720	  7.27274369	  0.99871753	  0.99932297  0.49323270
+7371	 -6.27316365	 -0.00041977	  0.00025717	  7.27274388	  0.99871771	  0.99932306  0.49323262
+7372	 -6.27316379	 -0.00041971	  0.00025713	  7.27274407	  0.99871788	  0.99932315  0.49323267
+7373	 -6.27316392	 -0.00041966	  0.00025710	  7.27274427	  0.99871806	  0.99932325  0.49323282
+7374	 -6.27316406	 -0.00041960	  0.00025706	  7.27274446	  0.99871823	  0.99932334  0.49323274
+7375	 -6.27316420	 -0.00041954	  0.00025703	  7.27274465	  0.99871840	  0.99932343  0.49323276
+7376	 -6.27316433	 -0.00041949	  0.00025699	  7.27274485	  0.99871858	  0.99932352  0.49323279
+7377	 -6.27316447	 -0.00041943	  0.00025696	  7.27274504	  0.99871875	  0.99932361  0.49323285
+7378	 -6.27316460	 -0.00041937	  0.00025692	  7.27274523	  0.99871892	  0.99932370  0.49323286
+7379	 -6.27316474	 -0.00041932	  0.00025689	  7.27274542	  0.99871910	  0.99932380  0.49323296
+7380	 -6.27316488	 -0.00041926	  0.00025685	  7.27274562	  0.99871927	  0.99932389  0.49323294
+7381	 -6.27316501	 -0.00041920	  0.00025682	  7.27274581	  0.99871944	  0.99932398  0.49323292
+7382	 -6.27316515	 -0.00041915	  0.00025678	  7.27274600	  0.99871962	  0.99932407  0.49323285
+7383	 -6.27316528	 -0.00041909	  0.00025675	  7.27274619	  0.99871979	  0.99932416  0.49323292
+7384	 -6.27316542	 -0.00041903	  0.00025671	  7.27274639	  0.99871996	  0.99932425  0.49323303
+7385	 -6.27316555	 -0.00041898	  0.00025668	  7.27274658	  0.99872014	  0.99932435  0.49323312
+7386	 -6.27316569	 -0.00041892	  0.00025664	  7.27274677	  0.99872031	  0.99932444  0.49323326
+7387	 -6.27316583	 -0.00041886	  0.00025661	  7.27274696	  0.99872048	  0.99932453  0.49323308
+7388	 -6.27316596	 -0.00041881	  0.00025658	  7.27274716	  0.99872066	  0.99932462  0.49323307
+7389	 -6.27316610	 -0.00041875	  0.00025654	  7.27274735	  0.99872083	  0.99932471  0.49323314
+7390	 -6.27316623	 -0.00041869	  0.00025651	  7.27274754	  0.99872100	  0.99932480  0.49323312
+7391	 -6.27316637	 -0.00041864	  0.00025647	  7.27274773	  0.99872118	  0.99932489  0.49323320
+7392	 -6.27316650	 -0.00041858	  0.00025644	  7.27274793	  0.99872135	  0.99932498  0.49323311
+7393	 -6.27316664	 -0.00041852	  0.00025640	  7.27274812	  0.99872152	  0.99932508  0.49323311
+7394	 -6.27316677	 -0.00041847	  0.00025637	  7.27274831	  0.99872170	  0.99932517  0.49323317
+7395	 -6.27316691	 -0.00041841	  0.00025633	  7.27274850	  0.99872187	  0.99932526  0.49323323
+7396	 -6.27316705	 -0.00041835	  0.00025630	  7.27274869	  0.99872204	  0.99932535  0.49323325
+7397	 -6.27316718	 -0.00041830	  0.00025626	  7.27274888	  0.99872221	  0.99932544  0.49323334
+7398	 -6.27316732	 -0.00041824	  0.00025623	  7.27274908	  0.99872239	  0.99932553  0.49323332
+7399	 -6.27316745	 -0.00041818	  0.00025619	  7.27274927	  0.99872256	  0.99932562  0.49323331
+7400	 -6.27316759	 -0.00041813	  0.00025616	  7.27274946	  0.99872273	  0.99932571  0.49323331
+7401	 -6.27316772	 -0.00041807	  0.00025612	  7.27274965	  0.99872290	  0.99932581  0.49323346
+7402	 -6.27316786	 -0.00041801	  0.00025609	  7.27274984	  0.99872308	  0.99932590  0.49323331
+7403	 -6.27316799	 -0.00041796	  0.00025606	  7.27275003	  0.99872325	  0.99932599  0.49323339
+7404	 -6.27316813	 -0.00041790	  0.00025602	  7.27275023	  0.99872342	  0.99932608  0.49323343
+7405	 -6.27316826	 -0.00041784	  0.00025599	  7.27275042	  0.99872359	  0.99932617  0.49323337
+7406	 -6.27316840	 -0.00041779	  0.00025595	  7.27275061	  0.99872377	  0.99932626  0.49323342
+7407	 -6.27316853	 -0.00041773	  0.00025592	  7.27275080	  0.99872394	  0.99932635  0.49323347
+7408	 -6.27316867	 -0.00041768	  0.00025588	  7.27275099	  0.99872411	  0.99932644  0.49323353
+7409	 -6.27316880	 -0.00041762	  0.00025585	  7.27275118	  0.99872428	  0.99932653  0.49323349
+7410	 -6.27316894	 -0.00041756	  0.00025581	  7.27275137	  0.99872446	  0.99932662  0.49323358
+7411	 -6.27316907	 -0.00041751	  0.00025578	  7.27275157	  0.99872463	  0.99932671  0.49323354
+7412	 -6.27316921	 -0.00041745	  0.00025574	  7.27275176	  0.99872480	  0.99932681  0.49323350
+7413	 -6.27316934	 -0.00041739	  0.00025571	  7.27275195	  0.99872497	  0.99932690  0.49323356
+7414	 -6.27316948	 -0.00041734	  0.00025568	  7.27275214	  0.99872514	  0.99932699  0.49323355
+7415	 -6.27316961	 -0.00041728	  0.00025564	  7.27275233	  0.99872532	  0.99932708  0.49323359
+7416	 -6.27316974	 -0.00041722	  0.00025561	  7.27275252	  0.99872549	  0.99932717  0.49323360
+7417	 -6.27316988	 -0.00041717	  0.00025557	  7.27275271	  0.99872566	  0.99932726  0.49323362
+7418	 -6.27317001	 -0.00041711	  0.00025554	  7.27275290	  0.99872583	  0.99932735  0.49323369
+7419	 -6.27317015	 -0.00041706	  0.00025550	  7.27275309	  0.99872600	  0.99932744  0.49323369
+7420	 -6.27317028	 -0.00041700	  0.00025547	  7.27275328	  0.99872617	  0.99932753  0.49323368
+7421	 -6.27317042	 -0.00041694	  0.00025543	  7.27275347	  0.99872635	  0.99932762  0.49323375
+7422	 -6.27317055	 -0.00041689	  0.00025540	  7.27275366	  0.99872652	  0.99932771  0.49323378
+7423	 -6.27317069	 -0.00041683	  0.00025537	  7.27275385	  0.99872669	  0.99932780  0.49323373
+7424	 -6.27317082	 -0.00041678	  0.00025533	  7.27275405	  0.99872686	  0.99932789  0.49323370
+7425	 -6.27317095	 -0.00041672	  0.00025530	  7.27275424	  0.99872703	  0.99932798  0.49323379
+7426	 -6.27317109	 -0.00041666	  0.00025526	  7.27275443	  0.99872720	  0.99932807  0.49323375
+7427	 -6.27317122	 -0.00041661	  0.00025523	  7.27275462	  0.99872738	  0.99932816  0.49323392
+7428	 -6.27317136	 -0.00041655	  0.00025519	  7.27275481	  0.99872755	  0.99932826  0.49323391
+7429	 -6.27317149	 -0.00041649	  0.00025516	  7.27275500	  0.99872772	  0.99932835  0.49323391
+7430	 -6.27317163	 -0.00041644	  0.00025512	  7.27275519	  0.99872789	  0.99932844  0.49323388
+7431	 -6.27317176	 -0.00041638	  0.00025509	  7.27275538	  0.99872806	  0.99932853  0.49323395
+7432	 -6.27317189	 -0.00041633	  0.00025506	  7.27275557	  0.99872823	  0.99932862  0.49323385
+7433	 -6.27317203	 -0.00041627	  0.00025502	  7.27275576	  0.99872840	  0.99932871  0.49323392
+7434	 -6.27317216	 -0.00041621	  0.00025499	  7.27275595	  0.99872857	  0.99932880  0.49323402
+7435	 -6.27317230	 -0.00041616	  0.00025495	  7.27275614	  0.99872874	  0.99932889  0.49323405
+7436	 -6.27317243	 -0.00041610	  0.00025492	  7.27275633	  0.99872892	  0.99932898  0.49323405
+7437	 -6.27317256	 -0.00041605	  0.00025488	  7.27275652	  0.99872909	  0.99932907  0.49323408
+7438	 -6.27317270	 -0.00041599	  0.00025485	  7.27275671	  0.99872926	  0.99932916  0.49323410
+7439	 -6.27317283	 -0.00041594	  0.00025482	  7.27275690	  0.99872943	  0.99932925  0.49323410
+7440	 -6.27317297	 -0.00041588	  0.00025478	  7.27275709	  0.99872960	  0.99932934  0.49323416
+7441	 -6.27317310	 -0.00041582	  0.00025475	  7.27275728	  0.99872977	  0.99932943  0.49323413
+7442	 -6.27317323	 -0.00041577	  0.00025471	  7.27275746	  0.99872994	  0.99932952  0.49323409
+7443	 -6.27317337	 -0.00041571	  0.00025468	  7.27275765	  0.99873011	  0.99932961  0.49323425
+7444	 -6.27317350	 -0.00041566	  0.00025465	  7.27275784	  0.99873028	  0.99932970  0.49323426
+7445	 -6.27317363	 -0.00041560	  0.00025461	  7.27275803	  0.99873045	  0.99932979  0.49323421
+7446	 -6.27317377	 -0.00041554	  0.00025458	  7.27275822	  0.99873062	  0.99932988  0.49323430
+7447	 -6.27317390	 -0.00041549	  0.00025454	  7.27275841	  0.99873079	  0.99932997  0.49323422
+7448	 -6.27317403	 -0.00041543	  0.00025451	  7.27275860	  0.99873096	  0.99933006  0.49323429
+7449	 -6.27317417	 -0.00041538	  0.00025447	  7.27275879	  0.99873113	  0.99933015  0.49323420
+7450	 -6.27317430	 -0.00041532	  0.00025444	  7.27275898	  0.99873130	  0.99933024  0.49323427
+7451	 -6.27317443	 -0.00041527	  0.00025441	  7.27275917	  0.99873147	  0.99933033  0.49323431
+7452	 -6.27317457	 -0.00041521	  0.00025437	  7.27275936	  0.99873164	  0.99933042  0.49323443
+7453	 -6.27317470	 -0.00041515	  0.00025434	  7.27275955	  0.99873181	  0.99933051  0.49323428
+7454	 -6.27317483	 -0.00041510	  0.00025430	  7.27275974	  0.99873198	  0.99933060  0.49323443
+7455	 -6.27317497	 -0.00041504	  0.00025427	  7.27275992	  0.99873215	  0.99933069  0.49323437
+7456	 -6.27317510	 -0.00041499	  0.00025424	  7.27276011	  0.99873232	  0.99933078  0.49323454
+7457	 -6.27317523	 -0.00041493	  0.00025420	  7.27276030	  0.99873249	  0.99933087  0.49323446
+7458	 -6.27317537	 -0.00041488	  0.00025417	  7.27276049	  0.99873266	  0.99933096  0.49323436
+7459	 -6.27317550	 -0.00041482	  0.00025413	  7.27276068	  0.99873283	  0.99933105  0.49323455
+7460	 -6.27317563	 -0.00041476	  0.00025410	  7.27276087	  0.99873300	  0.99933114  0.49323443
+7461	 -6.27317577	 -0.00041471	  0.00025406	  7.27276106	  0.99873317	  0.99933123  0.49323444
+7462	 -6.27317590	 -0.00041465	  0.00025403	  7.27276124	  0.99873334	  0.99933132  0.49323452
+7463	 -6.27317603	 -0.00041460	  0.00025400	  7.27276143	  0.99873351	  0.99933140  0.49323465
+7464	 -6.27317616	 -0.00041454	  0.00025396	  7.27276162	  0.99873368	  0.99933149  0.49323452
+7465	 -6.27317630	 -0.00041449	  0.00025393	  7.27276181	  0.99873385	  0.99933158  0.49323459
+7466	 -6.27317643	 -0.00041443	  0.00025389	  7.27276200	  0.99873402	  0.99933167  0.49323462
+7467	 -6.27317656	 -0.00041438	  0.00025386	  7.27276219	  0.99873419	  0.99933176  0.49323457
+7468	 -6.27317670	 -0.00041432	  0.00025383	  7.27276237	  0.99873436	  0.99933185  0.49323468
+7469	 -6.27317683	 -0.00041427	  0.00025379	  7.27276256	  0.99873453	  0.99933194  0.49323479
+7470	 -6.27317696	 -0.00041421	  0.00025376	  7.27276275	  0.99873470	  0.99933203  0.49323481
+7471	 -6.27317709	 -0.00041415	  0.00025372	  7.27276294	  0.99873487	  0.99933212  0.49323465
+7472	 -6.27317723	 -0.00041410	  0.00025369	  7.27276313	  0.99873504	  0.99933221  0.49323467
+7473	 -6.27317736	 -0.00041404	  0.00025366	  7.27276332	  0.99873521	  0.99933230  0.49323474
+7474	 -6.27317749	 -0.00041399	  0.00025362	  7.27276350	  0.99873538	  0.99933239  0.49323475
+7475	 -6.27317762	 -0.00041393	  0.00025359	  7.27276369	  0.99873555	  0.99933248  0.49323489
+7476	 -6.27317776	 -0.00041388	  0.00025355	  7.27276388	  0.99873572	  0.99933257  0.49323478
+7477	 -6.27317789	 -0.00041382	  0.00025352	  7.27276407	  0.99873588	  0.99933266  0.49323490
+7478	 -6.27317802	 -0.00041377	  0.00025349	  7.27276425	  0.99873605	  0.99933275  0.49323500
+7479	 -6.27317815	 -0.00041371	  0.00025345	  7.27276444	  0.99873622	  0.99933283  0.49323486
+7480	 -6.27317829	 -0.00041366	  0.00025342	  7.27276463	  0.99873639	  0.99933292  0.49323491
+7481	 -6.27317842	 -0.00041360	  0.00025339	  7.27276482	  0.99873656	  0.99933301  0.49323473
+7482	 -6.27317855	 -0.00041355	  0.00025335	  7.27276500	  0.99873673	  0.99933310  0.49323495
+7483	 -6.27317868	 -0.00041349	  0.00025332	  7.27276519	  0.99873690	  0.99933319  0.49323495
+7484	 -6.27317882	 -0.00041344	  0.00025328	  7.27276538	  0.99873707	  0.99933328  0.49323487
+7485	 -6.27317895	 -0.00041338	  0.00025325	  7.27276557	  0.99873724	  0.99933337  0.49323500
+7486	 -6.27317908	 -0.00041333	  0.00025322	  7.27276575	  0.99873740	  0.99933346  0.49323493
+7487	 -6.27317921	 -0.00041327	  0.00025318	  7.27276594	  0.99873757	  0.99933355  0.49323497
+7488	 -6.27317934	 -0.00041321	  0.00025315	  7.27276613	  0.99873774	  0.99933364  0.49323507
+7489	 -6.27317948	 -0.00041316	  0.00025311	  7.27276632	  0.99873791	  0.99933373  0.49323512
+7490	 -6.27317961	 -0.00041310	  0.00025308	  7.27276650	  0.99873808	  0.99933381  0.49323500
+7491	 -6.27317974	 -0.00041305	  0.00025305	  7.27276669	  0.99873825	  0.99933390  0.49323510
+7492	 -6.27317987	 -0.00041299	  0.00025301	  7.27276688	  0.99873842	  0.99933399  0.49323520
+7493	 -6.27318000	 -0.00041294	  0.00025298	  7.27276706	  0.99873858	  0.99933408  0.49323515
+7494	 -6.27318014	 -0.00041288	  0.00025295	  7.27276725	  0.99873875	  0.99933417  0.49323523
+7495	 -6.27318027	 -0.00041283	  0.00025291	  7.27276744	  0.99873892	  0.99933426  0.49323516
+7496	 -6.27318040	 -0.00041277	  0.00025288	  7.27276762	  0.99873909	  0.99933435  0.49323517
+7497	 -6.27318053	 -0.00041272	  0.00025284	  7.27276781	  0.99873926	  0.99933444  0.49323519
+7498	 -6.27318066	 -0.00041266	  0.00025281	  7.27276800	  0.99873942	  0.99933453  0.49323515
+7499	 -6.27318079	 -0.00041261	  0.00025278	  7.27276818	  0.99873959	  0.99933461  0.49323538
+7500	 -6.27318093	 -0.00041255	  0.00025274	  7.27276837	  0.99873976	  0.99933470  0.49323529
+7501	 -6.27318106	 -0.00041250	  0.00025271	  7.27276856	  0.99873993	  0.99933479  0.49323537
+7502	 -6.27318119	 -0.00041244	  0.00025268	  7.27276874	  0.99874010	  0.99933488  0.49323534
+7503	 -6.27318132	 -0.00041239	  0.00025264	  7.27276893	  0.99874026	  0.99933497  0.49323537
+7504	 -6.27318145	 -0.00041233	  0.00025261	  7.27276912	  0.99874043	  0.99933506  0.49323540
+7505	 -6.27318158	 -0.00041228	  0.00025258	  7.27276930	  0.99874060	  0.99933515  0.49323539
+7506	 -6.27318171	 -0.00041222	  0.00025254	  7.27276949	  0.99874077	  0.99933523  0.49323536
+7507	 -6.27318185	 -0.00041217	  0.00025251	  7.27276968	  0.99874094	  0.99933532  0.49323541
+7508	 -6.27318198	 -0.00041211	  0.00025247	  7.27276986	  0.99874110	  0.99933541  0.49323529
+7509	 -6.27318211	 -0.00041206	  0.00025244	  7.27277005	  0.99874127	  0.99933550  0.49323554
+7510	 -6.27318224	 -0.00041200	  0.00025241	  7.27277023	  0.99874144	  0.99933559  0.49323556
+7511	 -6.27318237	 -0.00041195	  0.00025237	  7.27277042	  0.99874161	  0.99933568  0.49323548
+7512	 -6.27318250	 -0.00041190	  0.00025234	  7.27277061	  0.99874177	  0.99933577  0.49323555
+7513	 -6.27318263	 -0.00041184	  0.00025231	  7.27277079	  0.99874194	  0.99933585  0.49323555
+7514	 -6.27318276	 -0.00041179	  0.00025227	  7.27277098	  0.99874211	  0.99933594  0.49323566
+7515	 -6.27318290	 -0.00041173	  0.00025224	  7.27277117	  0.99874228	  0.99933603  0.49323552
+7516	 -6.27318303	 -0.00041168	  0.00025221	  7.27277135	  0.99874244	  0.99933612  0.49323561
+7517	 -6.27318316	 -0.00041162	  0.00025217	  7.27277154	  0.99874261	  0.99933621  0.49323566
+7518	 -6.27318329	 -0.00041157	  0.00025214	  7.27277172	  0.99874278	  0.99933630  0.49323555
+7519	 -6.27318342	 -0.00041151	  0.00025210	  7.27277191	  0.99874294	  0.99933638  0.49323560
+7520	 -6.27318355	 -0.00041146	  0.00025207	  7.27277209	  0.99874311	  0.99933647  0.49323570
+7521	 -6.27318368	 -0.00041140	  0.00025204	  7.27277228	  0.99874328	  0.99933656  0.49323566
+7522	 -6.27318381	 -0.00041135	  0.00025200	  7.27277246	  0.99874345	  0.99933665  0.49323580
+7523	 -6.27318394	 -0.00041129	  0.00025197	  7.27277265	  0.99874361	  0.99933674  0.49323573
+7524	 -6.27318407	 -0.00041124	  0.00025194	  7.27277284	  0.99874378	  0.99933682  0.49323588
+7525	 -6.27318420	 -0.00041118	  0.00025190	  7.27277302	  0.99874395	  0.99933691  0.49323574
+7526	 -6.27318434	 -0.00041113	  0.00025187	  7.27277321	  0.99874411	  0.99933700  0.49323584
+7527	 -6.27318447	 -0.00041107	  0.00025184	  7.27277339	  0.99874428	  0.99933709  0.49323574
+7528	 -6.27318460	 -0.00041102	  0.00025180	  7.27277358	  0.99874445	  0.99933718  0.49323586
+7529	 -6.27318473	 -0.00041097	  0.00025177	  7.27277376	  0.99874461	  0.99933726  0.49323593
+7530	 -6.27318486	 -0.00041091	  0.00025174	  7.27277395	  0.99874478	  0.99933735  0.49323592
+7531	 -6.27318499	 -0.00041086	  0.00025170	  7.27277413	  0.99874495	  0.99933744  0.49323598
+7532	 -6.27318512	 -0.00041080	  0.00025167	  7.27277432	  0.99874511	  0.99933753  0.49323589
+7533	 -6.27318525	 -0.00041075	  0.00025164	  7.27277450	  0.99874528	  0.99933762  0.49323587
+7534	 -6.27318538	 -0.00041069	  0.00025160	  7.27277469	  0.99874545	  0.99933770  0.49323605
+7535	 -6.27318551	 -0.00041064	  0.00025157	  7.27277487	  0.99874561	  0.99933779  0.49323594
+7536	 -6.27318564	 -0.00041058	  0.00025154	  7.27277506	  0.99874578	  0.99933788  0.49323599
+7537	 -6.27318577	 -0.00041053	  0.00025150	  7.27277524	  0.99874595	  0.99933797  0.49323604
+7538	 -6.27318590	 -0.00041048	  0.00025147	  7.27277543	  0.99874611	  0.99933806  0.49323602
+7539	 -6.27318603	 -0.00041042	  0.00025144	  7.27277561	  0.99874628	  0.99933814  0.49323601
+7540	 -6.27318616	 -0.00041037	  0.00025140	  7.27277580	  0.99874645	  0.99933823  0.49323601
+7541	 -6.27318629	 -0.00041031	  0.00025137	  7.27277598	  0.99874661	  0.99933832  0.49323608
+7542	 -6.27318642	 -0.00041026	  0.00025134	  7.27277616	  0.99874678	  0.99933841  0.49323616
+7543	 -6.27318655	 -0.00041020	  0.00025130	  7.27277635	  0.99874694	  0.99933849  0.49323617
+7544	 -6.27318668	 -0.00041015	  0.00025127	  7.27277653	  0.99874711	  0.99933858  0.49323615
+7545	 -6.27318681	 -0.00041009	  0.00025124	  7.27277672	  0.99874728	  0.99933867  0.49323614
+7546	 -6.27318694	 -0.00041004	  0.00025120	  7.27277690	  0.99874744	  0.99933876  0.49323615
+7547	 -6.27318707	 -0.00040999	  0.00025117	  7.27277709	  0.99874761	  0.99933884  0.49323610
+7548	 -6.27318720	 -0.00040993	  0.00025114	  7.27277727	  0.99874777	  0.99933893  0.49323628
+7549	 -6.27318733	 -0.00040988	  0.00025110	  7.27277746	  0.99874794	  0.99933902  0.49323634
+7550	 -6.27318746	 -0.00040982	  0.00025107	  7.27277764	  0.99874811	  0.99933911  0.49323627
+7551	 -6.27318759	 -0.00040977	  0.00025104	  7.27277782	  0.99874827	  0.99933919  0.49323622
+7552	 -6.27318772	 -0.00040971	  0.00025100	  7.27277801	  0.99874844	  0.99933928  0.49323631
+7553	 -6.27318785	 -0.00040966	  0.00025097	  7.27277819	  0.99874860	  0.99933937  0.49323628
+7554	 -6.27318798	 -0.00040961	  0.00025094	  7.27277838	  0.99874877	  0.99933946  0.49323627
+7555	 -6.27318811	 -0.00040955	  0.00025090	  7.27277856	  0.99874893	  0.99933954  0.49323637
+7556	 -6.27318824	 -0.00040950	  0.00025087	  7.27277874	  0.99874910	  0.99933963  0.49323632
+7557	 -6.27318837	 -0.00040944	  0.00025084	  7.27277893	  0.99874927	  0.99933972  0.49323640
+7558	 -6.27318850	 -0.00040939	  0.00025080	  7.27277911	  0.99874943	  0.99933981  0.49323651
+7559	 -6.27318863	 -0.00040934	  0.00025077	  7.27277929	  0.99874960	  0.99933989  0.49323644
+7560	 -6.27318876	 -0.00040928	  0.00025074	  7.27277948	  0.99874976	  0.99933998  0.49323637
+7561	 -6.27318889	 -0.00040923	  0.00025070	  7.27277966	  0.99874993	  0.99934007  0.49323647
+7562	 -6.27318902	 -0.00040917	  0.00025067	  7.27277985	  0.99875009	  0.99934016  0.49323644
+7563	 -6.27318915	 -0.00040912	  0.00025064	  7.27278003	  0.99875026	  0.99934024  0.49323643
+7564	 -6.27318928	 -0.00040906	  0.00025060	  7.27278021	  0.99875042	  0.99934033  0.49323648
+7565	 -6.27318941	 -0.00040901	  0.00025057	  7.27278040	  0.99875059	  0.99934042  0.49323655
+7566	 -6.27318954	 -0.00040896	  0.00025054	  7.27278058	  0.99875075	  0.99934050  0.49323657
+7567	 -6.27318967	 -0.00040890	  0.00025051	  7.27278076	  0.99875092	  0.99934059  0.49323664
+7568	 -6.27318979	 -0.00040885	  0.00025047	  7.27278095	  0.99875108	  0.99934068  0.49323657
+7569	 -6.27318992	 -0.00040879	  0.00025044	  7.27278113	  0.99875125	  0.99934077  0.49323666
+7570	 -6.27319005	 -0.00040874	  0.00025041	  7.27278131	  0.99875141	  0.99934085  0.49323663
+7571	 -6.27319018	 -0.00040869	  0.00025037	  7.27278150	  0.99875158	  0.99934094  0.49323672
+7572	 -6.27319031	 -0.00040863	  0.00025034	  7.27278168	  0.99875174	  0.99934103  0.49323665
+7573	 -6.27319044	 -0.00040858	  0.00025031	  7.27278186	  0.99875191	  0.99934111  0.49323670
+7574	 -6.27319057	 -0.00040852	  0.00025027	  7.27278204	  0.99875207	  0.99934120  0.49323671
+7575	 -6.27319070	 -0.00040847	  0.00025024	  7.27278223	  0.99875224	  0.99934129  0.49323673
+7576	 -6.27319083	 -0.00040842	  0.00025021	  7.27278241	  0.99875240	  0.99934137  0.49323684
+7577	 -6.27319096	 -0.00040836	  0.00025017	  7.27278259	  0.99875257	  0.99934146  0.49323687
+7578	 -6.27319109	 -0.00040831	  0.00025014	  7.27278278	  0.99875273	  0.99934155  0.49323685
+7579	 -6.27319121	 -0.00040826	  0.00025011	  7.27278296	  0.99875290	  0.99934164  0.49323688
+7580	 -6.27319134	 -0.00040820	  0.00025008	  7.27278314	  0.99875306	  0.99934172  0.49323675
+7581	 -6.27319147	 -0.00040815	  0.00025004	  7.27278332	  0.99875322	  0.99934181  0.49323678
+7582	 -6.27319160	 -0.00040809	  0.00025001	  7.27278351	  0.99875339	  0.99934190  0.49323687
+7583	 -6.27319173	 -0.00040804	  0.00024998	  7.27278369	  0.99875355	  0.99934198  0.49323686
+7584	 -6.27319186	 -0.00040799	  0.00024994	  7.27278387	  0.99875372	  0.99934207  0.49323698
+7585	 -6.27319199	 -0.00040793	  0.00024991	  7.27278405	  0.99875388	  0.99934216  0.49323692
+7586	 -6.27319212	 -0.00040788	  0.00024988	  7.27278424	  0.99875405	  0.99934224  0.49323708
+7587	 -6.27319224	 -0.00040783	  0.00024985	  7.27278442	  0.99875421	  0.99934233  0.49323704
+7588	 -6.27319237	 -0.00040777	  0.00024981	  7.27278460	  0.99875437	  0.99934242  0.49323700
+7589	 -6.27319250	 -0.00040772	  0.00024978	  7.27278478	  0.99875454	  0.99934250  0.49323693
+7590	 -6.27319263	 -0.00040766	  0.00024975	  7.27278497	  0.99875470	  0.99934259  0.49323702
+7591	 -6.27319276	 -0.00040761	  0.00024971	  7.27278515	  0.99875487	  0.99934268  0.49323716
+7592	 -6.27319289	 -0.00040756	  0.00024968	  7.27278533	  0.99875503	  0.99934276  0.49323703
+7593	 -6.27319302	 -0.00040750	  0.00024965	  7.27278551	  0.99875519	  0.99934285  0.49323706
+7594	 -6.27319314	 -0.00040745	  0.00024961	  7.27278569	  0.99875536	  0.99934294  0.49323706
+7595	 -6.27319327	 -0.00040740	  0.00024958	  7.27278588	  0.99875552	  0.99934302  0.49323714
+7596	 -6.27319340	 -0.00040734	  0.00024955	  7.27278606	  0.99875569	  0.99934311  0.49323706
+7597	 -6.27319353	 -0.00040729	  0.00024952	  7.27278624	  0.99875585	  0.99934320  0.49323708
+7598	 -6.27319366	 -0.00040724	  0.00024948	  7.27278642	  0.99875601	  0.99934328  0.49323729
+7599	 -6.27319379	 -0.00040718	  0.00024945	  7.27278660	  0.99875618	  0.99934337  0.49323724
+7600	 -6.27319391	 -0.00040713	  0.00024942	  7.27278679	  0.99875634	  0.99934345  0.49323721
+7601	 -6.27319404	 -0.00040707	  0.00024938	  7.27278697	  0.99875650	  0.99934354  0.49323728
+7602	 -6.27319417	 -0.00040702	  0.00024935	  7.27278715	  0.99875667	  0.99934363  0.49323732
+7603	 -6.27319430	 -0.00040697	  0.00024932	  7.27278733	  0.99875683	  0.99934371  0.49323735
+7604	 -6.27319443	 -0.00040691	  0.00024929	  7.27278751	  0.99875700	  0.99934380  0.49323736
+7605	 -6.27319455	 -0.00040686	  0.00024925	  7.27278769	  0.99875716	  0.99934389  0.49323725
+7606	 -6.27319468	 -0.00040681	  0.00024922	  7.27278788	  0.99875732	  0.99934397  0.49323738
+7607	 -6.27319481	 -0.00040675	  0.00024919	  7.27278806	  0.99875749	  0.99934406  0.49323735
+7608	 -6.27319494	 -0.00040670	  0.00024916	  7.27278824	  0.99875765	  0.99934414  0.49323731
+7609	 -6.27319507	 -0.00040665	  0.00024912	  7.27278842	  0.99875781	  0.99934423  0.49323743
+7610	 -6.27319519	 -0.00040659	  0.00024909	  7.27278860	  0.99875798	  0.99934432  0.49323750
+7611	 -6.27319532	 -0.00040654	  0.00024906	  7.27278878	  0.99875814	  0.99934440  0.49323738
+7612	 -6.27319545	 -0.00040649	  0.00024902	  7.27278896	  0.99875830	  0.99934449  0.49323751
+7613	 -6.27319558	 -0.00040643	  0.00024899	  7.27278914	  0.99875846	  0.99934457  0.49323752
+7614	 -6.27319571	 -0.00040638	  0.00024896	  7.27278933	  0.99875863	  0.99934466  0.49323741
+7615	 -6.27319583	 -0.00040633	  0.00024893	  7.27278951	  0.99875879	  0.99934475  0.49323749
+7616	 -6.27319596	 -0.00040627	  0.00024889	  7.27278969	  0.99875895	  0.99934483  0.49323755
+7617	 -6.27319609	 -0.00040622	  0.00024886	  7.27278987	  0.99875912	  0.99934492  0.49323762
+7618	 -6.27319622	 -0.00040617	  0.00024883	  7.27279005	  0.99875928	  0.99934501  0.49323759
+7619	 -6.27319634	 -0.00040611	  0.00024880	  7.27279023	  0.99875944	  0.99934509  0.49323760
+7620	 -6.27319647	 -0.00040606	  0.00024876	  7.27279041	  0.99875960	  0.99934518  0.49323757
+7621	 -6.27319660	 -0.00040601	  0.00024873	  7.27279059	  0.99875977	  0.99934526  0.49323761
+7622	 -6.27319673	 -0.00040595	  0.00024870	  7.27279077	  0.99875993	  0.99934535  0.49323762
+7623	 -6.27319685	 -0.00040590	  0.00024867	  7.27279095	  0.99876009	  0.99934543  0.49323771
+7624	 -6.27319698	 -0.00040585	  0.00024863	  7.27279113	  0.99876026	  0.99934552  0.49323775
+7625	 -6.27319711	 -0.00040579	  0.00024860	  7.27279131	  0.99876042	  0.99934561  0.49323777
+7626	 -6.27319724	 -0.00040574	  0.00024857	  7.27279149	  0.99876058	  0.99934569  0.49323761
+7627	 -6.27319736	 -0.00040569	  0.00024853	  7.27279168	  0.99876074	  0.99934578  0.49323772
+7628	 -6.27319749	 -0.00040563	  0.00024850	  7.27279186	  0.99876091	  0.99934586  0.49323767
+7629	 -6.27319762	 -0.00040558	  0.00024847	  7.27279204	  0.99876107	  0.99934595  0.49323779
+7630	 -6.27319774	 -0.00040553	  0.00024844	  7.27279222	  0.99876123	  0.99934603  0.49323782
+7631	 -6.27319787	 -0.00040547	  0.00024840	  7.27279240	  0.99876139	  0.99934612  0.49323776
+7632	 -6.27319800	 -0.00040542	  0.00024837	  7.27279258	  0.99876156	  0.99934621  0.49323782
+7633	 -6.27319813	 -0.00040537	  0.00024834	  7.27279276	  0.99876172	  0.99934629  0.49323787
+7634	 -6.27319825	 -0.00040532	  0.00024831	  7.27279294	  0.99876188	  0.99934638  0.49323783
+7635	 -6.27319838	 -0.00040526	  0.00024827	  7.27279312	  0.99876204	  0.99934646  0.49323795
+7636	 -6.27319851	 -0.00040521	  0.00024824	  7.27279330	  0.99876220	  0.99934655  0.49323788
+7637	 -6.27319863	 -0.00040516	  0.00024821	  7.27279348	  0.99876237	  0.99934663  0.49323798
+7638	 -6.27319876	 -0.00040510	  0.00024818	  7.27279366	  0.99876253	  0.99934672  0.49323799
+7639	 -6.27319889	 -0.00040505	  0.00024814	  7.27279384	  0.99876269	  0.99934681  0.49323794
+7640	 -6.27319901	 -0.00040500	  0.00024811	  7.27279402	  0.99876285	  0.99934689  0.49323812
+7641	 -6.27319914	 -0.00040494	  0.00024808	  7.27279420	  0.99876301	  0.99934698  0.49323800
+7642	 -6.27319927	 -0.00040489	  0.00024805	  7.27279438	  0.99876318	  0.99934706  0.49323799
+7643	 -6.27319939	 -0.00040484	  0.00024801	  7.27279456	  0.99876334	  0.99934715  0.49323807
+7644	 -6.27319952	 -0.00040479	  0.00024798	  7.27279474	  0.99876350	  0.99934723  0.49323804
+7645	 -6.27319965	 -0.00040473	  0.00024795	  7.27279492	  0.99876366	  0.99934732  0.49323807
+7646	 -6.27319977	 -0.00040468	  0.00024792	  7.27279510	  0.99876382	  0.99934740  0.49323796
+7647	 -6.27319990	 -0.00040463	  0.00024788	  7.27279527	  0.99876398	  0.99934749  0.49323820
+7648	 -6.27320003	 -0.00040457	  0.00024785	  7.27279545	  0.99876415	  0.99934757  0.49323815
+7649	 -6.27320015	 -0.00040452	  0.00024782	  7.27279563	  0.99876431	  0.99934766  0.49323813
+7650	 -6.27320028	 -0.00040447	  0.00024779	  7.27279581	  0.99876447	  0.99934774  0.49323819
+7651	 -6.27320041	 -0.00040442	  0.00024776	  7.27279599	  0.99876463	  0.99934783  0.49323817
+7652	 -6.27320053	 -0.00040436	  0.00024772	  7.27279617	  0.99876479	  0.99934791  0.49323809
+7653	 -6.27320066	 -0.00040431	  0.00024769	  7.27279635	  0.99876495	  0.99934800  0.49323823
+7654	 -6.27320079	 -0.00040426	  0.00024766	  7.27279653	  0.99876511	  0.99934809  0.49323818
+7655	 -6.27320091	 -0.00040420	  0.00024763	  7.27279671	  0.99876528	  0.99934817  0.49323822
+7656	 -6.27320104	 -0.00040415	  0.00024759	  7.27279689	  0.99876544	  0.99934826  0.49323828
+7657	 -6.27320117	 -0.00040410	  0.00024756	  7.27279707	  0.99876560	  0.99934834  0.49323852
+7658	 -6.27320129	 -0.00040405	  0.00024753	  7.27279725	  0.99876576	  0.99934843  0.49323826
+7659	 -6.27320142	 -0.00040399	  0.00024750	  7.27279743	  0.99876592	  0.99934851  0.49323833
+7660	 -6.27320154	 -0.00040394	  0.00024746	  7.27279760	  0.99876608	  0.99934860  0.49323832
+7661	 -6.27320167	 -0.00040389	  0.00024743	  7.27279778	  0.99876624	  0.99934868  0.49323839
+7662	 -6.27320180	 -0.00040383	  0.00024740	  7.27279796	  0.99876640	  0.99934877  0.49323831
+7663	 -6.27320192	 -0.00040378	  0.00024737	  7.27279814	  0.99876656	  0.99934885  0.49323847
+7664	 -6.27320205	 -0.00040373	  0.00024733	  7.27279832	  0.99876673	  0.99934894  0.49323846
+7665	 -6.27320217	 -0.00040368	  0.00024730	  7.27279850	  0.99876689	  0.99934902  0.49323853
+7666	 -6.27320230	 -0.00040362	  0.00024727	  7.27279868	  0.99876705	  0.99934911  0.49323849
+7667	 -6.27320243	 -0.00040357	  0.00024724	  7.27279886	  0.99876721	  0.99934919  0.49323847
+7668	 -6.27320255	 -0.00040352	  0.00024721	  7.27279903	  0.99876737	  0.99934928  0.49323843
+7669	 -6.27320268	 -0.00040347	  0.00024717	  7.27279921	  0.99876753	  0.99934936  0.49323854
+7670	 -6.27320280	 -0.00040341	  0.00024714	  7.27279939	  0.99876769	  0.99934944  0.49323862
+7671	 -6.27320293	 -0.00040336	  0.00024711	  7.27279957	  0.99876785	  0.99934953  0.49323861
+7672	 -6.27320306	 -0.00040331	  0.00024708	  7.27279975	  0.99876801	  0.99934961  0.49323862
+7673	 -6.27320318	 -0.00040326	  0.00024704	  7.27279993	  0.99876817	  0.99934970  0.49323859
+7674	 -6.27320331	 -0.00040320	  0.00024701	  7.27280010	  0.99876833	  0.99934978  0.49323864
+7675	 -6.27320343	 -0.00040315	  0.00024698	  7.27280028	  0.99876849	  0.99934987  0.49323872
+7676	 -6.27320356	 -0.00040310	  0.00024695	  7.27280046	  0.99876865	  0.99934995  0.49323853
+7677	 -6.27320368	 -0.00040305	  0.00024692	  7.27280064	  0.99876881	  0.99935004  0.49323874
+7678	 -6.27320381	 -0.00040299	  0.00024688	  7.27280082	  0.99876897	  0.99935012  0.49323866
+7679	 -6.27320394	 -0.00040294	  0.00024685	  7.27280099	  0.99876913	  0.99935021  0.49323878
+7680	 -6.27320406	 -0.00040289	  0.00024682	  7.27280117	  0.99876929	  0.99935029  0.49323872
+7681	 -6.27320419	 -0.00040284	  0.00024679	  7.27280135	  0.99876945	  0.99935038  0.49323872
+7682	 -6.27320431	 -0.00040278	  0.00024676	  7.27280153	  0.99876961	  0.99935046  0.49323876
+7683	 -6.27320444	 -0.00040273	  0.00024672	  7.27280171	  0.99876978	  0.99935055  0.49323884
+7684	 -6.27320456	 -0.00040268	  0.00024669	  7.27280188	  0.99876994	  0.99935063  0.49323875
+7685	 -6.27320469	 -0.00040263	  0.00024666	  7.27280206	  0.99877010	  0.99935071  0.49323881
+7686	 -6.27320481	 -0.00040257	  0.00024663	  7.27280224	  0.99877026	  0.99935080  0.49323883
+7687	 -6.27320494	 -0.00040252	  0.00024659	  7.27280242	  0.99877042	  0.99935088  0.49323893
+7688	 -6.27320506	 -0.00040247	  0.00024656	  7.27280259	  0.99877058	  0.99935097  0.49323897
+7689	 -6.27320519	 -0.00040242	  0.00024653	  7.27280277	  0.99877073	  0.99935105  0.49323888
+7690	 -6.27320532	 -0.00040237	  0.00024650	  7.27280295	  0.99877089	  0.99935114  0.49323894
+7691	 -6.27320544	 -0.00040231	  0.00024647	  7.27280313	  0.99877105	  0.99935122  0.49323891
+7692	 -6.27320557	 -0.00040226	  0.00024643	  7.27280330	  0.99877121	  0.99935130  0.49323883
+7693	 -6.27320569	 -0.00040221	  0.00024640	  7.27280348	  0.99877137	  0.99935139  0.49323900
+7694	 -6.27320582	 -0.00040216	  0.00024637	  7.27280366	  0.99877153	  0.99935147  0.49323894
+7695	 -6.27320594	 -0.00040210	  0.00024634	  7.27280384	  0.99877169	  0.99935156  0.49323913
+7696	 -6.27320607	 -0.00040205	  0.00024631	  7.27280401	  0.99877185	  0.99935164  0.49323892
+7697	 -6.27320619	 -0.00040200	  0.00024627	  7.27280419	  0.99877201	  0.99935173  0.49323905
+7698	 -6.27320632	 -0.00040195	  0.00024624	  7.27280437	  0.99877217	  0.99935181  0.49323908
+7699	 -6.27320644	 -0.00040190	  0.00024621	  7.27280455	  0.99877233	  0.99935189  0.49323912
+7700	 -6.27320657	 -0.00040184	  0.00024618	  7.27280472	  0.99877249	  0.99935198  0.49323907
+7701	 -6.27320669	 -0.00040179	  0.00024615	  7.27280490	  0.99877265	  0.99935206  0.49323901
+7702	 -6.27320682	 -0.00040174	  0.00024611	  7.27280508	  0.99877281	  0.99935215  0.49323923
+7703	 -6.27320694	 -0.00040169	  0.00024608	  7.27280525	  0.99877297	  0.99935223  0.49323914
+7704	 -6.27320706	 -0.00040163	  0.00024605	  7.27280543	  0.99877313	  0.99935231  0.49323921
+7705	 -6.27320719	 -0.00040158	  0.00024602	  7.27280561	  0.99877329	  0.99935240  0.49323926
+7706	 -6.27320731	 -0.00040153	  0.00024599	  7.27280578	  0.99877345	  0.99935248  0.49323926
+7707	 -6.27320744	 -0.00040148	  0.00024595	  7.27280596	  0.99877361	  0.99935257  0.49323918
+7708	 -6.27320756	 -0.00040143	  0.00024592	  7.27280614	  0.99877376	  0.99935265  0.49323936
+7709	 -6.27320769	 -0.00040137	  0.00024589	  7.27280631	  0.99877392	  0.99935273  0.49323929
+7710	 -6.27320781	 -0.00040132	  0.00024586	  7.27280649	  0.99877408	  0.99935282  0.49323934
+7711	 -6.27320794	 -0.00040127	  0.00024583	  7.27280667	  0.99877424	  0.99935290  0.49323932
+7712	 -6.27320806	 -0.00040122	  0.00024580	  7.27280684	  0.99877440	  0.99935299  0.49323931
+7713	 -6.27320819	 -0.00040117	  0.00024576	  7.27280702	  0.99877456	  0.99935307  0.49323926
+7714	 -6.27320831	 -0.00040111	  0.00024573	  7.27280720	  0.99877472	  0.99935315  0.49323938
+7715	 -6.27320843	 -0.00040106	  0.00024570	  7.27280737	  0.99877488	  0.99935324  0.49323939
+7716	 -6.27320856	 -0.00040101	  0.00024567	  7.27280755	  0.99877504	  0.99935332  0.49323934
+7717	 -6.27320868	 -0.00040096	  0.00024564	  7.27280773	  0.99877519	  0.99935341  0.49323939
+7718	 -6.27320881	 -0.00040091	  0.00024560	  7.27280790	  0.99877535	  0.99935349  0.49323943
+7719	 -6.27320893	 -0.00040085	  0.00024557	  7.27280808	  0.99877551	  0.99935357  0.49323942
+7720	 -6.27320906	 -0.00040080	  0.00024554	  7.27280825	  0.99877567	  0.99935366  0.49323947
+7721	 -6.27320918	 -0.00040075	  0.00024551	  7.27280843	  0.99877583	  0.99935374  0.49323951
+7722	 -6.27320930	 -0.00040070	  0.00024548	  7.27280861	  0.99877599	  0.99935382  0.49323953
+7723	 -6.27320943	 -0.00040065	  0.00024545	  7.27280878	  0.99877615	  0.99935391  0.49323955
+7724	 -6.27320955	 -0.00040059	  0.00024541	  7.27280896	  0.99877630	  0.99935399  0.49323962
+7725	 -6.27320968	 -0.00040054	  0.00024538	  7.27280913	  0.99877646	  0.99935408  0.49323956
+7726	 -6.27320980	 -0.00040049	  0.00024535	  7.27280931	  0.99877662	  0.99935416  0.49323962
+7727	 -6.27320993	 -0.00040044	  0.00024532	  7.27280949	  0.99877678	  0.99935424  0.49323958
+7728	 -6.27321005	 -0.00040039	  0.00024529	  7.27280966	  0.99877694	  0.99935433  0.49323965
+7729	 -6.27321017	 -0.00040034	  0.00024525	  7.27280984	  0.99877710	  0.99935441  0.49323969
+7730	 -6.27321030	 -0.00040028	  0.00024522	  7.27281001	  0.99877725	  0.99935449  0.49323976
+7731	 -6.27321042	 -0.00040023	  0.00024519	  7.27281019	  0.99877741	  0.99935458  0.49323970
+7732	 -6.27321054	 -0.00040018	  0.00024516	  7.27281036	  0.99877757	  0.99935466  0.49323974
+7733	 -6.27321067	 -0.00040013	  0.00024513	  7.27281054	  0.99877773	  0.99935474  0.49323974
+7734	 -6.27321079	 -0.00040008	  0.00024510	  7.27281072	  0.99877789	  0.99935483  0.49323966
+7735	 -6.27321092	 -0.00040003	  0.00024506	  7.27281089	  0.99877804	  0.99935491  0.49323980
+7736	 -6.27321104	 -0.00039997	  0.00024503	  7.27281107	  0.99877820	  0.99935499  0.49323982
+7737	 -6.27321116	 -0.00039992	  0.00024500	  7.27281124	  0.99877836	  0.99935508  0.49323984
+7738	 -6.27321129	 -0.00039987	  0.00024497	  7.27281142	  0.99877852	  0.99935516  0.49323979
+7739	 -6.27321141	 -0.00039982	  0.00024494	  7.27281159	  0.99877868	  0.99935524  0.49323984
+7740	 -6.27321153	 -0.00039977	  0.00024491	  7.27281177	  0.99877883	  0.99935533  0.49323987
+7741	 -6.27321166	 -0.00039972	  0.00024487	  7.27281194	  0.99877899	  0.99935541  0.49323994
+7742	 -6.27321178	 -0.00039966	  0.00024484	  7.27281212	  0.99877915	  0.99935549  0.49323989
+7743	 -6.27321191	 -0.00039961	  0.00024481	  7.27281229	  0.99877931	  0.99935558  0.49323986
+7744	 -6.27321203	 -0.00039956	  0.00024478	  7.27281247	  0.99877946	  0.99935566  0.49323995
+7745	 -6.27321215	 -0.00039951	  0.00024475	  7.27281264	  0.99877962	  0.99935574  0.49323997
+7746	 -6.27321228	 -0.00039946	  0.00024472	  7.27281282	  0.99877978	  0.99935583  0.49323996
+7747	 -6.27321240	 -0.00039941	  0.00024468	  7.27281299	  0.99877994	  0.99935591  0.49323998
+7748	 -6.27321252	 -0.00039935	  0.00024465	  7.27281317	  0.99878009	  0.99935599  0.49323996
+7749	 -6.27321265	 -0.00039930	  0.00024462	  7.27281334	  0.99878025	  0.99935608  0.49324002
+7750	 -6.27321277	 -0.00039925	  0.00024459	  7.27281352	  0.99878041	  0.99935616  0.49323998
+7751	 -6.27321289	 -0.00039920	  0.00024456	  7.27281369	  0.99878057	  0.99935624  0.49324001
+7752	 -6.27321302	 -0.00039915	  0.00024453	  7.27281387	  0.99878072	  0.99935632  0.49324014
+7753	 -6.27321314	 -0.00039910	  0.00024450	  7.27281404	  0.99878088	  0.99935641  0.49324019
+7754	 -6.27321326	 -0.00039905	  0.00024446	  7.27281422	  0.99878104	  0.99935649  0.49324012
+7755	 -6.27321338	 -0.00039899	  0.00024443	  7.27281439	  0.99878120	  0.99935657  0.49324003
+7756	 -6.27321351	 -0.00039894	  0.00024440	  7.27281457	  0.99878135	  0.99935666  0.49324013
+7757	 -6.27321363	 -0.00039889	  0.00024437	  7.27281474	  0.99878151	  0.99935674  0.49324013
+7758	 -6.27321375	 -0.00039884	  0.00024434	  7.27281491	  0.99878167	  0.99935682  0.49324017
+7759	 -6.27321388	 -0.00039879	  0.00024431	  7.27281509	  0.99878182	  0.99935690  0.49324022
+7760	 -6.27321400	 -0.00039874	  0.00024427	  7.27281526	  0.99878198	  0.99935699  0.49324015
+7761	 -6.27321412	 -0.00039869	  0.00024424	  7.27281544	  0.99878214	  0.99935707  0.49324036
+7762	 -6.27321425	 -0.00039863	  0.00024421	  7.27281561	  0.99878229	  0.99935715  0.49324026
+7763	 -6.27321437	 -0.00039858	  0.00024418	  7.27281579	  0.99878245	  0.99935724  0.49324022
+7764	 -6.27321449	 -0.00039853	  0.00024415	  7.27281596	  0.99878261	  0.99935732  0.49324031
+7765	 -6.27321461	 -0.00039848	  0.00024412	  7.27281613	  0.99878277	  0.99935740  0.49324028
+7766	 -6.27321474	 -0.00039843	  0.00024409	  7.27281631	  0.99878292	  0.99935748  0.49324030
+7767	 -6.27321486	 -0.00039838	  0.00024405	  7.27281648	  0.99878308	  0.99935757  0.49324023
+7768	 -6.27321498	 -0.00039833	  0.00024402	  7.27281666	  0.99878324	  0.99935765  0.49324037
+7769	 -6.27321511	 -0.00039828	  0.00024399	  7.27281683	  0.99878339	  0.99935773  0.49324036
+7770	 -6.27321523	 -0.00039822	  0.00024396	  7.27281700	  0.99878355	  0.99935782  0.49324044
+7771	 -6.27321535	 -0.00039817	  0.00024393	  7.27281718	  0.99878370	  0.99935790  0.49324039
+7772	 -6.27321547	 -0.00039812	  0.00024390	  7.27281735	  0.99878386	  0.99935798  0.49324042
+7773	 -6.27321560	 -0.00039807	  0.00024387	  7.27281752	  0.99878402	  0.99935806  0.49324055
+7774	 -6.27321572	 -0.00039802	  0.00024383	  7.27281770	  0.99878417	  0.99935815  0.49324042
+7775	 -6.27321584	 -0.00039797	  0.00024380	  7.27281787	  0.99878433	  0.99935823  0.49324044
+7776	 -6.27321596	 -0.00039792	  0.00024377	  7.27281805	  0.99878449	  0.99935831  0.49324041
+7777	 -6.27321609	 -0.00039787	  0.00024374	  7.27281822	  0.99878464	  0.99935839  0.49324060
+7778	 -6.27321621	 -0.00039781	  0.00024371	  7.27281839	  0.99878480	  0.99935848  0.49324044
+7779	 -6.27321633	 -0.00039776	  0.00024368	  7.27281857	  0.99878496	  0.99935856  0.49324054
+7780	 -6.27321645	 -0.00039771	  0.00024365	  7.27281874	  0.99878511	  0.99935864  0.49324046
+7781	 -6.27321658	 -0.00039766	  0.00024362	  7.27281891	  0.99878527	  0.99935872  0.49324052
+7782	 -6.27321670	 -0.00039761	  0.00024358	  7.27281909	  0.99878542	  0.99935881  0.49324063
+7783	 -6.27321682	 -0.00039756	  0.00024355	  7.27281926	  0.99878558	  0.99935889  0.49324081
+7784	 -6.27321694	 -0.00039751	  0.00024352	  7.27281943	  0.99878574	  0.99935897  0.49324067
+7785	 -6.27321706	 -0.00039746	  0.00024349	  7.27281961	  0.99878589	  0.99935905  0.49324080
+7786	 -6.27321719	 -0.00039741	  0.00024346	  7.27281978	  0.99878605	  0.99935913  0.49324070
+7787	 -6.27321731	 -0.00039736	  0.00024343	  7.27281995	  0.99878620	  0.99935922  0.49324061
+7788	 -6.27321743	 -0.00039730	  0.00024340	  7.27282013	  0.99878636	  0.99935930  0.49324072
+7789	 -6.27321755	 -0.00039725	  0.00024337	  7.27282030	  0.99878652	  0.99935938  0.49324071
+7790	 -6.27321767	 -0.00039720	  0.00024333	  7.27282047	  0.99878667	  0.99935946  0.49324076
+7791	 -6.27321780	 -0.00039715	  0.00024330	  7.27282064	  0.99878683	  0.99935955  0.49324084
+7792	 -6.27321792	 -0.00039710	  0.00024327	  7.27282082	  0.99878698	  0.99935963  0.49324086
+7793	 -6.27321804	 -0.00039705	  0.00024324	  7.27282099	  0.99878714	  0.99935971  0.49324068
+7794	 -6.27321816	 -0.00039700	  0.00024321	  7.27282116	  0.99878729	  0.99935979  0.49324078
+7795	 -6.27321828	 -0.00039695	  0.00024318	  7.27282134	  0.99878745	  0.99935987  0.49324088
+7796	 -6.27321841	 -0.00039690	  0.00024315	  7.27282151	  0.99878760	  0.99935996  0.49324077
+7797	 -6.27321853	 -0.00039685	  0.00024312	  7.27282168	  0.99878776	  0.99936004  0.49324091
+7798	 -6.27321865	 -0.00039680	  0.00024308	  7.27282185	  0.99878792	  0.99936012  0.49324089
+7799	 -6.27321877	 -0.00039674	  0.00024305	  7.27282203	  0.99878807	  0.99936020  0.49324098
+7800	 -6.27321889	 -0.00039669	  0.00024302	  7.27282220	  0.99878823	  0.99936028  0.49324089
+7801	 -6.27321901	 -0.00039664	  0.00024299	  7.27282237	  0.99878838	  0.99936037  0.49324096
+7802	 -6.27321914	 -0.00039659	  0.00024296	  7.27282254	  0.99878854	  0.99936045  0.49324110
+7803	 -6.27321926	 -0.00039654	  0.00024293	  7.27282272	  0.99878869	  0.99936053  0.49324104
+7804	 -6.27321938	 -0.00039649	  0.00024290	  7.27282289	  0.99878885	  0.99936061  0.49324115
+7805	 -6.27321950	 -0.00039644	  0.00024287	  7.27282306	  0.99878900	  0.99936069  0.49324105
+7806	 -6.27321962	 -0.00039639	  0.00024284	  7.27282323	  0.99878916	  0.99936078  0.49324108
+7807	 -6.27321974	 -0.00039634	  0.00024280	  7.27282341	  0.99878931	  0.99936086  0.49324101
+7808	 -6.27321987	 -0.00039629	  0.00024277	  7.27282358	  0.99878947	  0.99936094  0.49324102
+7809	 -6.27321999	 -0.00039624	  0.00024274	  7.27282375	  0.99878962	  0.99936102  0.49324113
+7810	 -6.27322011	 -0.00039619	  0.00024271	  7.27282392	  0.99878978	  0.99936110  0.49324108
+7811	 -6.27322023	 -0.00039613	  0.00024268	  7.27282409	  0.99878993	  0.99936119  0.49324117
+7812	 -6.27322035	 -0.00039608	  0.00024265	  7.27282427	  0.99879009	  0.99936127  0.49324125
+7813	 -6.27322047	 -0.00039603	  0.00024262	  7.27282444	  0.99879024	  0.99936135  0.49324106
+7814	 -6.27322059	 -0.00039598	  0.00024259	  7.27282461	  0.99879040	  0.99936143  0.49324119
+7815	 -6.27322071	 -0.00039593	  0.00024256	  7.27282478	  0.99879055	  0.99936151  0.49324110
+7816	 -6.27322084	 -0.00039588	  0.00024252	  7.27282495	  0.99879071	  0.99936159  0.49324126
+7817	 -6.27322096	 -0.00039583	  0.00024249	  7.27282513	  0.99879086	  0.99936168  0.49324122
+7818	 -6.27322108	 -0.00039578	  0.00024246	  7.27282530	  0.99879102	  0.99936176  0.49324129
+7819	 -6.27322120	 -0.00039573	  0.00024243	  7.27282547	  0.99879117	  0.99936184  0.49324129
+7820	 -6.27322132	 -0.00039568	  0.00024240	  7.27282564	  0.99879133	  0.99936192  0.49324124
+7821	 -6.27322144	 -0.00039563	  0.00024237	  7.27282581	  0.99879148	  0.99936200  0.49324135
+7822	 -6.27322156	 -0.00039558	  0.00024234	  7.27282598	  0.99879163	  0.99936208  0.49324138
+7823	 -6.27322168	 -0.00039553	  0.00024231	  7.27282616	  0.99879179	  0.99936216  0.49324133
+7824	 -6.27322180	 -0.00039548	  0.00024228	  7.27282633	  0.99879194	  0.99936225  0.49324140
+7825	 -6.27322193	 -0.00039543	  0.00024225	  7.27282650	  0.99879210	  0.99936233  0.49324130
+7826	 -6.27322205	 -0.00039538	  0.00024221	  7.27282667	  0.99879225	  0.99936241  0.49324149
+7827	 -6.27322217	 -0.00039533	  0.00024218	  7.27282684	  0.99879241	  0.99936249  0.49324143
+7828	 -6.27322229	 -0.00039528	  0.00024215	  7.27282701	  0.99879256	  0.99936257  0.49324140
+7829	 -6.27322241	 -0.00039522	  0.00024212	  7.27282718	  0.99879271	  0.99936265  0.49324158
+7830	 -6.27322253	 -0.00039517	  0.00024209	  7.27282736	  0.99879287	  0.99936273  0.49324147
+7831	 -6.27322265	 -0.00039512	  0.00024206	  7.27282753	  0.99879302	  0.99936282  0.49324156
+7832	 -6.27322277	 -0.00039507	  0.00024203	  7.27282770	  0.99879318	  0.99936290  0.49324153
+7833	 -6.27322289	 -0.00039502	  0.00024200	  7.27282787	  0.99879333	  0.99936298  0.49324143
+7834	 -6.27322301	 -0.00039497	  0.00024197	  7.27282804	  0.99879349	  0.99936306  0.49324134
+7835	 -6.27322313	 -0.00039492	  0.00024194	  7.27282821	  0.99879364	  0.99936314  0.49324161
+7836	 -6.27322325	 -0.00039487	  0.00024191	  7.27282838	  0.99879379	  0.99936322  0.49324161
+7837	 -6.27322337	 -0.00039482	  0.00024187	  7.27282855	  0.99879395	  0.99936330  0.49324164
+7838	 -6.27322349	 -0.00039477	  0.00024184	  7.27282872	  0.99879410	  0.99936339  0.49324176
+7839	 -6.27322362	 -0.00039472	  0.00024181	  7.27282889	  0.99879425	  0.99936347  0.49324160
+7840	 -6.27322374	 -0.00039467	  0.00024178	  7.27282907	  0.99879441	  0.99936355  0.49324157
+7841	 -6.27322386	 -0.00039462	  0.00024175	  7.27282924	  0.99879456	  0.99936363  0.49324158
+7842	 -6.27322398	 -0.00039457	  0.00024172	  7.27282941	  0.99879472	  0.99936371  0.49324166
+7843	 -6.27322410	 -0.00039452	  0.00024169	  7.27282958	  0.99879487	  0.99936379  0.49324172
+7844	 -6.27322422	 -0.00039447	  0.00024166	  7.27282975	  0.99879502	  0.99936387  0.49324177
+7845	 -6.27322434	 -0.00039442	  0.00024163	  7.27282992	  0.99879518	  0.99936395  0.49324175
+7846	 -6.27322446	 -0.00039437	  0.00024160	  7.27283009	  0.99879533	  0.99936403  0.49324173
+7847	 -6.27322458	 -0.00039432	  0.00024157	  7.27283026	  0.99879548	  0.99936412  0.49324183
+7848	 -6.27322470	 -0.00039427	  0.00024154	  7.27283043	  0.99879564	  0.99936420  0.49324189
+7849	 -6.27322482	 -0.00039422	  0.00024150	  7.27283060	  0.99879579	  0.99936428  0.49324183
+7850	 -6.27322494	 -0.00039417	  0.00024147	  7.27283077	  0.99879594	  0.99936436  0.49324176
+7851	 -6.27322506	 -0.00039412	  0.00024144	  7.27283094	  0.99879610	  0.99936444  0.49324183
+7852	 -6.27322518	 -0.00039407	  0.00024141	  7.27283111	  0.99879625	  0.99936452  0.49324186
+7853	 -6.27322530	 -0.00039402	  0.00024138	  7.27283128	  0.99879640	  0.99936460  0.49324198
+7854	 -6.27322542	 -0.00039397	  0.00024135	  7.27283145	  0.99879656	  0.99936468  0.49324210
+7855	 -6.27322554	 -0.00039392	  0.00024132	  7.27283162	  0.99879671	  0.99936476  0.49324198
+7856	 -6.27322566	 -0.00039387	  0.00024129	  7.27283179	  0.99879686	  0.99936484  0.49324205
+7857	 -6.27322578	 -0.00039382	  0.00024126	  7.27283196	  0.99879702	  0.99936492  0.49324207
+7858	 -6.27322590	 -0.00039377	  0.00024123	  7.27283213	  0.99879717	  0.99936501  0.49324191
+7859	 -6.27322602	 -0.00039372	  0.00024120	  7.27283230	  0.99879732	  0.99936509  0.49324201
+7860	 -6.27322614	 -0.00039367	  0.00024117	  7.27283247	  0.99879748	  0.99936517  0.49324194
+7861	 -6.27322626	 -0.00039362	  0.00024114	  7.27283264	  0.99879763	  0.99936525  0.49324211
+7862	 -6.27322638	 -0.00039357	  0.00024111	  7.27283281	  0.99879778	  0.99936533  0.49324210
+7863	 -6.27322650	 -0.00039352	  0.00024107	  7.27283298	  0.99879793	  0.99936541  0.49324195
+7864	 -6.27322662	 -0.00039347	  0.00024104	  7.27283315	  0.99879809	  0.99936549  0.49324205
+7865	 -6.27322674	 -0.00039342	  0.00024101	  7.27283332	  0.99879824	  0.99936557  0.49324210
+7866	 -6.27322686	 -0.00039337	  0.00024098	  7.27283349	  0.99879839	  0.99936565  0.49324214
+7867	 -6.27322698	 -0.00039332	  0.00024095	  7.27283366	  0.99879855	  0.99936573  0.49324202
+7868	 -6.27322710	 -0.00039327	  0.00024092	  7.27283383	  0.99879870	  0.99936581  0.49324209
+7869	 -6.27322722	 -0.00039322	  0.00024089	  7.27283400	  0.99879885	  0.99936589  0.49324208
+7870	 -6.27322734	 -0.00039317	  0.00024086	  7.27283417	  0.99879900	  0.99936597  0.49324207
+7871	 -6.27322746	 -0.00039312	  0.00024083	  7.27283434	  0.99879916	  0.99936605  0.49324215
+7872	 -6.27322757	 -0.00039307	  0.00024080	  7.27283451	  0.99879931	  0.99936613  0.49324220
+7873	 -6.27322769	 -0.00039302	  0.00024077	  7.27283468	  0.99879946	  0.99936621  0.49324229
+7874	 -6.27322781	 -0.00039297	  0.00024074	  7.27283485	  0.99879961	  0.99936630  0.49324226
+7875	 -6.27322793	 -0.00039292	  0.00024071	  7.27283502	  0.99879977	  0.99936638  0.49324230
+7876	 -6.27322805	 -0.00039287	  0.00024068	  7.27283519	  0.99879992	  0.99936646  0.49324236
+7877	 -6.27322817	 -0.00039282	  0.00024065	  7.27283535	  0.99880007	  0.99936654  0.49324229
+7878	 -6.27322829	 -0.00039277	  0.00024062	  7.27283552	  0.99880022	  0.99936662  0.49324245
+7879	 -6.27322841	 -0.00039272	  0.00024059	  7.27283569	  0.99880038	  0.99936670  0.49324230
+7880	 -6.27322853	 -0.00039267	  0.00024055	  7.27283586	  0.99880053	  0.99936678  0.49324241
+7881	 -6.27322865	 -0.00039262	  0.00024052	  7.27283603	  0.99880068	  0.99936686  0.49324234
+7882	 -6.27322877	 -0.00039257	  0.00024049	  7.27283620	  0.99880083	  0.99936694  0.49324231
+7883	 -6.27322889	 -0.00039252	  0.00024046	  7.27283637	  0.99880098	  0.99936702  0.49324244
+7884	 -6.27322901	 -0.00039247	  0.00024043	  7.27283654	  0.99880114	  0.99936710  0.49324243
+7885	 -6.27322913	 -0.00039242	  0.00024040	  7.27283671	  0.99880129	  0.99936718  0.49324251
+7886	 -6.27322924	 -0.00039237	  0.00024037	  7.27283688	  0.99880144	  0.99936726  0.49324242
+7887	 -6.27322936	 -0.00039232	  0.00024034	  7.27283704	  0.99880159	  0.99936734  0.49324245
+7888	 -6.27322948	 -0.00039227	  0.00024031	  7.27283721	  0.99880174	  0.99936742  0.49324248
+7889	 -6.27322960	 -0.00039222	  0.00024028	  7.27283738	  0.99880190	  0.99936750  0.49324240
+7890	 -6.27322972	 -0.00039217	  0.00024025	  7.27283755	  0.99880205	  0.99936758  0.49324256
+7891	 -6.27322984	 -0.00039212	  0.00024022	  7.27283772	  0.99880220	  0.99936766  0.49324270
+7892	 -6.27322996	 -0.00039207	  0.00024019	  7.27283789	  0.99880235	  0.99936774  0.49324265
+7893	 -6.27323008	 -0.00039202	  0.00024016	  7.27283806	  0.99880250	  0.99936782  0.49324254
+7894	 -6.27323020	 -0.00039197	  0.00024013	  7.27283822	  0.99880265	  0.99936790  0.49324268
+7895	 -6.27323032	 -0.00039192	  0.00024010	  7.27283839	  0.99880281	  0.99936798  0.49324263
+7896	 -6.27323043	 -0.00039187	  0.00024007	  7.27283856	  0.99880296	  0.99936806  0.49324257
+7897	 -6.27323055	 -0.00039182	  0.00024004	  7.27283873	  0.99880311	  0.99936814  0.49324271
+7898	 -6.27323067	 -0.00039177	  0.00024001	  7.27283890	  0.99880326	  0.99936822  0.49324263
+7899	 -6.27323079	 -0.00039172	  0.00023998	  7.27283907	  0.99880341	  0.99936830  0.49324259
+7900	 -6.27323091	 -0.00039167	  0.00023995	  7.27283923	  0.99880356	  0.99936838  0.49324272
+7901	 -6.27323103	 -0.00039162	  0.00023992	  7.27283940	  0.99880372	  0.99936846  0.49324266
+7902	 -6.27323115	 -0.00039158	  0.00023989	  7.27283957	  0.99880387	  0.99936854  0.49324277
+7903	 -6.27323126	 -0.00039153	  0.00023985	  7.27283974	  0.99880402	  0.99936862  0.49324283
+7904	 -6.27323138	 -0.00039148	  0.00023982	  7.27283991	  0.99880417	  0.99936870  0.49324288
+7905	 -6.27323150	 -0.00039143	  0.00023979	  7.27284008	  0.99880432	  0.99936878  0.49324274
+7906	 -6.27323162	 -0.00039138	  0.00023976	  7.27284024	  0.99880447	  0.99936886  0.49324289
+7907	 -6.27323174	 -0.00039133	  0.00023973	  7.27284041	  0.99880462	  0.99936894  0.49324287
+7908	 -6.27323186	 -0.00039128	  0.00023970	  7.27284058	  0.99880477	  0.99936902  0.49324285
+7909	 -6.27323198	 -0.00039123	  0.00023967	  7.27284075	  0.99880493	  0.99936910  0.49324283
+7910	 -6.27323209	 -0.00039118	  0.00023964	  7.27284091	  0.99880508	  0.99936918  0.49324290
+7911	 -6.27323221	 -0.00039113	  0.00023961	  7.27284108	  0.99880523	  0.99936926  0.49324280
+7912	 -6.27323233	 -0.00039108	  0.00023958	  7.27284125	  0.99880538	  0.99936934  0.49324296
+7913	 -6.27323245	 -0.00039103	  0.00023955	  7.27284142	  0.99880553	  0.99936942  0.49324284
+7914	 -6.27323257	 -0.00039098	  0.00023952	  7.27284159	  0.99880568	  0.99936950  0.49324285
+7915	 -6.27323268	 -0.00039093	  0.00023949	  7.27284175	  0.99880583	  0.99936958  0.49324302
+7916	 -6.27323280	 -0.00039088	  0.00023946	  7.27284192	  0.99880598	  0.99936966  0.49324295
+7917	 -6.27323292	 -0.00039083	  0.00023943	  7.27284209	  0.99880613	  0.99936974  0.49324320
+7918	 -6.27323304	 -0.00039078	  0.00023940	  7.27284226	  0.99880628	  0.99936982  0.49324315
+7919	 -6.27323316	 -0.00039073	  0.00023937	  7.27284242	  0.99880643	  0.99936990  0.49324296
+7920	 -6.27323328	 -0.00039069	  0.00023934	  7.27284259	  0.99880658	  0.99936997  0.49324298
+7921	 -6.27323339	 -0.00039064	  0.00023931	  7.27284276	  0.99880674	  0.99937005  0.49324310
+7922	 -6.27323351	 -0.00039059	  0.00023928	  7.27284292	  0.99880689	  0.99937013  0.49324316
+7923	 -6.27323363	 -0.00039054	  0.00023925	  7.27284309	  0.99880704	  0.99937021  0.49324305
+7924	 -6.27323375	 -0.00039049	  0.00023922	  7.27284326	  0.99880719	  0.99937029  0.49324317
+7925	 -6.27323387	 -0.00039044	  0.00023919	  7.27284343	  0.99880734	  0.99937037  0.49324316
+7926	 -6.27323398	 -0.00039039	  0.00023916	  7.27284359	  0.99880749	  0.99937045  0.49324322
+7927	 -6.27323410	 -0.00039034	  0.00023913	  7.27284376	  0.99880764	  0.99937053  0.49324310
+7928	 -6.27323422	 -0.00039029	  0.00023910	  7.27284393	  0.99880779	  0.99937061  0.49324325
+7929	 -6.27323434	 -0.00039024	  0.00023907	  7.27284409	  0.99880794	  0.99937069  0.49324319
+7930	 -6.27323445	 -0.00039019	  0.00023904	  7.27284426	  0.99880809	  0.99937077  0.49324326
+7931	 -6.27323457	 -0.00039014	  0.00023901	  7.27284443	  0.99880824	  0.99937085  0.49324329
+7932	 -6.27323469	 -0.00039009	  0.00023898	  7.27284460	  0.99880839	  0.99937093  0.49324333
+7933	 -6.27323481	 -0.00039005	  0.00023895	  7.27284476	  0.99880854	  0.99937101  0.49324318
+7934	 -6.27323493	 -0.00039000	  0.00023892	  7.27284493	  0.99880869	  0.99937109  0.49324318
+7935	 -6.27323504	 -0.00038995	  0.00023889	  7.27284510	  0.99880884	  0.99937117  0.49324337
+7936	 -6.27323516	 -0.00038990	  0.00023886	  7.27284526	  0.99880899	  0.99937124  0.49324337
+7937	 -6.27323528	 -0.00038985	  0.00023883	  7.27284543	  0.99880914	  0.99937132  0.49324350
+7938	 -6.27323540	 -0.00038980	  0.00023880	  7.27284560	  0.99880929	  0.99937140  0.49324334
+7939	 -6.27323551	 -0.00038975	  0.00023877	  7.27284576	  0.99880944	  0.99937148  0.49324341
+7940	 -6.27323563	 -0.00038970	  0.00023874	  7.27284593	  0.99880959	  0.99937156  0.49324338
+7941	 -6.27323575	 -0.00038965	  0.00023871	  7.27284609	  0.99880974	  0.99937164  0.49324344
+7942	 -6.27323587	 -0.00038960	  0.00023868	  7.27284626	  0.99880989	  0.99937172  0.49324362
+7943	 -6.27323598	 -0.00038955	  0.00023865	  7.27284643	  0.99881004	  0.99937180  0.49324347
+7944	 -6.27323610	 -0.00038951	  0.00023862	  7.27284659	  0.99881019	  0.99937188  0.49324345
+7945	 -6.27323622	 -0.00038946	  0.00023859	  7.27284676	  0.99881034	  0.99937196  0.49324353
+7946	 -6.27323633	 -0.00038941	  0.00023856	  7.27284693	  0.99881049	  0.99937204  0.49324361
+7947	 -6.27323645	 -0.00038936	  0.00023853	  7.27284709	  0.99881064	  0.99937211  0.49324364
+7948	 -6.27323657	 -0.00038931	  0.00023850	  7.27284726	  0.99881079	  0.99937219  0.49324360
+7949	 -6.27323669	 -0.00038926	  0.00023847	  7.27284743	  0.99881094	  0.99937227  0.49324354
+7950	 -6.27323680	 -0.00038921	  0.00023844	  7.27284759	  0.99881109	  0.99937235  0.49324359
+7951	 -6.27323692	 -0.00038916	  0.00023841	  7.27284776	  0.99881124	  0.99937243  0.49324355
+7952	 -6.27323704	 -0.00038911	  0.00023838	  7.27284792	  0.99881139	  0.99937251  0.49324369
+7953	 -6.27323715	 -0.00038907	  0.00023835	  7.27284809	  0.99881154	  0.99937259  0.49324366
+7954	 -6.27323727	 -0.00038902	  0.00023832	  7.27284826	  0.99881169	  0.99937267  0.49324363
+7955	 -6.27323739	 -0.00038897	  0.00023829	  7.27284842	  0.99881184	  0.99937275  0.49324368
+7956	 -6.27323751	 -0.00038892	  0.00023826	  7.27284859	  0.99881198	  0.99937282  0.49324385
+7957	 -6.27323762	 -0.00038887	  0.00023823	  7.27284875	  0.99881213	  0.99937290  0.49324375
+7958	 -6.27323774	 -0.00038882	  0.00023820	  7.27284892	  0.99881228	  0.99937298  0.49324381
+7959	 -6.27323786	 -0.00038877	  0.00023817	  7.27284908	  0.99881243	  0.99937306  0.49324383
+7960	 -6.27323797	 -0.00038872	  0.00023814	  7.27284925	  0.99881258	  0.99937314  0.49324389
+7961	 -6.27323809	 -0.00038867	  0.00023811	  7.27284942	  0.99881273	  0.99937322  0.49324387
+7962	 -6.27323821	 -0.00038863	  0.00023808	  7.27284958	  0.99881288	  0.99937330  0.49324385
+7963	 -6.27323832	 -0.00038858	  0.00023805	  7.27284975	  0.99881303	  0.99937338  0.49324378
+7964	 -6.27323844	 -0.00038853	  0.00023802	  7.27284991	  0.99881318	  0.99937345  0.49324377
+7965	 -6.27323856	 -0.00038848	  0.00023799	  7.27285008	  0.99881333	  0.99937353  0.49324388
+7966	 -6.27323867	 -0.00038843	  0.00023796	  7.27285024	  0.99881348	  0.99937361  0.49324392
+7967	 -6.27323879	 -0.00038838	  0.00023793	  7.27285041	  0.99881362	  0.99937369  0.49324396
+7968	 -6.27323891	 -0.00038833	  0.00023790	  7.27285057	  0.99881377	  0.99937377  0.49324387
+7969	 -6.27323902	 -0.00038828	  0.00023787	  7.27285074	  0.99881392	  0.99937385  0.49324395
+7970	 -6.27323914	 -0.00038824	  0.00023784	  7.27285090	  0.99881407	  0.99937393  0.49324401
+7971	 -6.27323926	 -0.00038819	  0.00023781	  7.27285107	  0.99881422	  0.99937400  0.49324397
+7972	 -6.27323937	 -0.00038814	  0.00023778	  7.27285124	  0.99881437	  0.99937408  0.49324409
+7973	 -6.27323949	 -0.00038809	  0.00023775	  7.27285140	  0.99881452	  0.99937416  0.49324390
+7974	 -6.27323961	 -0.00038804	  0.00023772	  7.27285157	  0.99881467	  0.99937424  0.49324412
+7975	 -6.27323972	 -0.00038799	  0.00023769	  7.27285173	  0.99881481	  0.99937432  0.49324405
+7976	 -6.27323984	 -0.00038794	  0.00023766	  7.27285190	  0.99881496	  0.99937440  0.49324413
+7977	 -6.27323996	 -0.00038789	  0.00023763	  7.27285206	  0.99881511	  0.99937448  0.49324398
+7978	 -6.27324007	 -0.00038785	  0.00023760	  7.27285223	  0.99881526	  0.99937455  0.49324408
+7979	 -6.27324019	 -0.00038780	  0.00023757	  7.27285239	  0.99881541	  0.99937463  0.49324411
+7980	 -6.27324030	 -0.00038775	  0.00023754	  7.27285256	  0.99881556	  0.99937471  0.49324404
+7981	 -6.27324042	 -0.00038770	  0.00023751	  7.27285272	  0.99881571	  0.99937479  0.49324417
+7982	 -6.27324054	 -0.00038765	  0.00023748	  7.27285289	  0.99881585	  0.99937487  0.49324417
+7983	 -6.27324065	 -0.00038760	  0.00023745	  7.27285305	  0.99881600	  0.99937495  0.49324417
+7984	 -6.27324077	 -0.00038755	  0.00023742	  7.27285321	  0.99881615	  0.99937502  0.49324410
+7985	 -6.27324089	 -0.00038751	  0.00023739	  7.27285338	  0.99881630	  0.99937510  0.49324415
+7986	 -6.27324100	 -0.00038746	  0.00023736	  7.27285354	  0.99881645	  0.99937518  0.49324415
+7987	 -6.27324112	 -0.00038741	  0.00023733	  7.27285371	  0.99881660	  0.99937526  0.49324428
+7988	 -6.27324123	 -0.00038736	  0.00023730	  7.27285387	  0.99881674	  0.99937534  0.49324427
+7989	 -6.27324135	 -0.00038731	  0.00023727	  7.27285404	  0.99881689	  0.99937541  0.49324429
+7990	 -6.27324147	 -0.00038726	  0.00023724	  7.27285420	  0.99881704	  0.99937549  0.49324429
+7991	 -6.27324158	 -0.00038722	  0.00023721	  7.27285437	  0.99881719	  0.99937557  0.49324431
+7992	 -6.27324170	 -0.00038717	  0.00023718	  7.27285453	  0.99881734	  0.99937565  0.49324418
+7993	 -6.27324181	 -0.00038712	  0.00023715	  7.27285469	  0.99881748	  0.99937573  0.49324436
+7994	 -6.27324193	 -0.00038707	  0.00023712	  7.27285486	  0.99881763	  0.99937581  0.49324427
+7995	 -6.27324205	 -0.00038702	  0.00023709	  7.27285502	  0.99881778	  0.99937588  0.49324438
+7996	 -6.27324216	 -0.00038697	  0.00023706	  7.27285519	  0.99881793	  0.99937596  0.49324441
+7997	 -6.27324228	 -0.00038693	  0.00023704	  7.27285535	  0.99881807	  0.99937604  0.49324425
+7998	 -6.27324239	 -0.00038688	  0.00023701	  7.27285552	  0.99881822	  0.99937612  0.49324444
+7999	 -6.27324251	 -0.00038683	  0.00023698	  7.27285568	  0.99881837	  0.99937620  0.49324437
+8000	 -6.27324262	 -0.00038678	  0.00023695	  7.27285584	  0.99881852	  0.99937627  0.49324451
+8001	 -6.27324274	 -0.00038673	  0.00023692	  7.27285601	  0.99881867	  0.99937635  0.49324443
+8002	 -6.27324286	 -0.00038668	  0.00023689	  7.27285617	  0.99881881	  0.99937643  0.49324463
+8003	 -6.27324297	 -0.00038664	  0.00023686	  7.27285634	  0.99881896	  0.99937651  0.49324464
+8004	 -6.27324309	 -0.00038659	  0.00023683	  7.27285650	  0.99881911	  0.99937659  0.49324460
+8005	 -6.27324320	 -0.00038654	  0.00023680	  7.27285666	  0.99881926	  0.99937666  0.49324474
+8006	 -6.27324332	 -0.00038649	  0.00023677	  7.27285683	  0.99881940	  0.99937674  0.49324457
+8007	 -6.27324343	 -0.00038644	  0.00023674	  7.27285699	  0.99881955	  0.99937682  0.49324464
+8008	 -6.27324355	 -0.00038639	  0.00023671	  7.27285716	  0.99881970	  0.99937690  0.49324452
+8009	 -6.27324366	 -0.00038635	  0.00023668	  7.27285732	  0.99881985	  0.99937697  0.49324451
+8010	 -6.27324378	 -0.00038630	  0.00023665	  7.27285748	  0.99881999	  0.99937705  0.49324463
+8011	 -6.27324390	 -0.00038625	  0.00023662	  7.27285765	  0.99882014	  0.99937713  0.49324460
+8012	 -6.27324401	 -0.00038620	  0.00023659	  7.27285781	  0.99882029	  0.99937721  0.49324461
+8013	 -6.27324413	 -0.00038615	  0.00023656	  7.27285797	  0.99882043	  0.99937729  0.49324473
+8014	 -6.27324424	 -0.00038610	  0.00023653	  7.27285814	  0.99882058	  0.99937736  0.49324474
+8015	 -6.27324436	 -0.00038606	  0.00023650	  7.27285830	  0.99882073	  0.99937744  0.49324465
+8016	 -6.27324447	 -0.00038601	  0.00023647	  7.27285846	  0.99882088	  0.99937752  0.49324475
+8017	 -6.27324459	 -0.00038596	  0.00023644	  7.27285863	  0.99882102	  0.99937760  0.49324482
+8018	 -6.27324470	 -0.00038591	  0.00023641	  7.27285879	  0.99882117	  0.99937767  0.49324468
+8019	 -6.27324482	 -0.00038586	  0.00023638	  7.27285895	  0.99882132	  0.99937775  0.49324472
+8020	 -6.27324493	 -0.00038582	  0.00023636	  7.27285912	  0.99882146	  0.99937783  0.49324478
+8021	 -6.27324505	 -0.00038577	  0.00023633	  7.27285928	  0.99882161	  0.99937791  0.49324486
+8022	 -6.27324516	 -0.00038572	  0.00023630	  7.27285944	  0.99882176	  0.99937798  0.49324500
+8023	 -6.27324528	 -0.00038567	  0.00023627	  7.27285961	  0.99882190	  0.99937806  0.49324482
+8024	 -6.27324539	 -0.00038562	  0.00023624	  7.27285977	  0.99882205	  0.99937814  0.49324496
+8025	 -6.27324551	 -0.00038558	  0.00023621	  7.27285993	  0.99882220	  0.99937822  0.49324495
+8026	 -6.27324562	 -0.00038553	  0.00023618	  7.27286009	  0.99882234	  0.99937829  0.49324492
+8027	 -6.27324574	 -0.00038548	  0.00023615	  7.27286026	  0.99882249	  0.99937837  0.49324476
+8028	 -6.27324585	 -0.00038543	  0.00023612	  7.27286042	  0.99882264	  0.99937845  0.49324499
+8029	 -6.27324597	 -0.00038538	  0.00023609	  7.27286058	  0.99882278	  0.99937853  0.49324495
+8030	 -6.27324608	 -0.00038534	  0.00023606	  7.27286075	  0.99882293	  0.99937860  0.49324497
+8031	 -6.27324620	 -0.00038529	  0.00023603	  7.27286091	  0.99882308	  0.99937868  0.49324499
+8032	 -6.27324631	 -0.00038524	  0.00023600	  7.27286107	  0.99882322	  0.99937876  0.49324496
+8033	 -6.27324643	 -0.00038519	  0.00023597	  7.27286123	  0.99882337	  0.99937884  0.49324507
+8034	 -6.27324654	 -0.00038514	  0.00023594	  7.27286140	  0.99882352	  0.99937891  0.49324506
+8035	 -6.27324666	 -0.00038510	  0.00023591	  7.27286156	  0.99882366	  0.99937899  0.49324519
+8036	 -6.27324677	 -0.00038505	  0.00023588	  7.27286172	  0.99882381	  0.99937907  0.49324510
+8037	 -6.27324689	 -0.00038500	  0.00023586	  7.27286188	  0.99882396	  0.99937914  0.49324509
+8038	 -6.27324700	 -0.00038495	  0.00023583	  7.27286205	  0.99882410	  0.99937922  0.49324510
+8039	 -6.27324711	 -0.00038490	  0.00023580	  7.27286221	  0.99882425	  0.99937930  0.49324517
+8040	 -6.27324723	 -0.00038486	  0.00023577	  7.27286237	  0.99882440	  0.99937938  0.49324527
+8041	 -6.27324734	 -0.00038481	  0.00023574	  7.27286253	  0.99882454	  0.99937945  0.49324519
+8042	 -6.27324746	 -0.00038476	  0.00023571	  7.27286270	  0.99882469	  0.99937953  0.49324516
+8043	 -6.27324757	 -0.00038471	  0.00023568	  7.27286286	  0.99882483	  0.99937961  0.49324513
+8044	 -6.27324769	 -0.00038467	  0.00023565	  7.27286302	  0.99882498	  0.99937968  0.49324519
+8045	 -6.27324780	 -0.00038462	  0.00023562	  7.27286318	  0.99882513	  0.99937976  0.49324509
+8046	 -6.27324792	 -0.00038457	  0.00023559	  7.27286335	  0.99882527	  0.99937984  0.49324532
+8047	 -6.27324803	 -0.00038452	  0.00023556	  7.27286351	  0.99882542	  0.99937992  0.49324518
+8048	 -6.27324814	 -0.00038447	  0.00023553	  7.27286367	  0.99882556	  0.99937999  0.49324537
+8049	 -6.27324826	 -0.00038443	  0.00023550	  7.27286383	  0.99882571	  0.99938007  0.49324536
+8050	 -6.27324837	 -0.00038438	  0.00023547	  7.27286399	  0.99882586	  0.99938015  0.49324540
+8051	 -6.27324849	 -0.00038433	  0.00023545	  7.27286416	  0.99882600	  0.99938022  0.49324531
+8052	 -6.27324860	 -0.00038428	  0.00023542	  7.27286432	  0.99882615	  0.99938030  0.49324544
+8053	 -6.27324872	 -0.00038424	  0.00023539	  7.27286448	  0.99882629	  0.99938038  0.49324534
+8054	 -6.27324883	 -0.00038419	  0.00023536	  7.27286464	  0.99882644	  0.99938045  0.49324551
+8055	 -6.27324894	 -0.00038414	  0.00023533	  7.27286480	  0.99882658	  0.99938053  0.49324541
+8056	 -6.27324906	 -0.00038409	  0.00023530	  7.27286497	  0.99882673	  0.99938061  0.49324551
+8057	 -6.27324917	 -0.00038405	  0.00023527	  7.27286513	  0.99882688	  0.99938068  0.49324541
+8058	 -6.27324929	 -0.00038400	  0.00023524	  7.27286529	  0.99882702	  0.99938076  0.49324543
+8059	 -6.27324940	 -0.00038395	  0.00023521	  7.27286545	  0.99882717	  0.99938084  0.49324548
+8060	 -6.27324951	 -0.00038390	  0.00023518	  7.27286561	  0.99882731	  0.99938092  0.49324547
+8061	 -6.27324963	 -0.00038385	  0.00023515	  7.27286577	  0.99882746	  0.99938099  0.49324552
+8062	 -6.27324974	 -0.00038381	  0.00023512	  7.27286594	  0.99882760	  0.99938107  0.49324561
+8063	 -6.27324986	 -0.00038376	  0.00023509	  7.27286610	  0.99882775	  0.99938115  0.49324575
+8064	 -6.27324997	 -0.00038371	  0.00023507	  7.27286626	  0.99882789	  0.99938122  0.49324555
+8065	 -6.27325008	 -0.00038366	  0.00023504	  7.27286642	  0.99882804	  0.99938130  0.49324561
+8066	 -6.27325020	 -0.00038362	  0.00023501	  7.27286658	  0.99882818	  0.99938138  0.49324560
+8067	 -6.27325031	 -0.00038357	  0.00023498	  7.27286674	  0.99882833	  0.99938145  0.49324567
+8068	 -6.27325043	 -0.00038352	  0.00023495	  7.27286690	  0.99882847	  0.99938153  0.49324557
+8069	 -6.27325054	 -0.00038347	  0.00023492	  7.27286706	  0.99882862	  0.99938161  0.49324572
+8070	 -6.27325065	 -0.00038343	  0.00023489	  7.27286723	  0.99882877	  0.99938168  0.49324570
+8071	 -6.27325077	 -0.00038338	  0.00023486	  7.27286739	  0.99882891	  0.99938176  0.49324576
+8072	 -6.27325088	 -0.00038333	  0.00023483	  7.27286755	  0.99882906	  0.99938184  0.49324591
+8073	 -6.27325099	 -0.00038328	  0.00023480	  7.27286771	  0.99882920	  0.99938191  0.49324569
+8074	 -6.27325111	 -0.00038324	  0.00023477	  7.27286787	  0.99882935	  0.99938199  0.49324559
+8075	 -6.27325122	 -0.00038319	  0.00023475	  7.27286803	  0.99882949	  0.99938207  0.49324564
+8076	 -6.27325133	 -0.00038314	  0.00023472	  7.27286819	  0.99882964	  0.99938214  0.49324576
+8077	 -6.27325145	 -0.00038309	  0.00023469	  7.27286835	  0.99882978	  0.99938222  0.49324581
+8078	 -6.27325156	 -0.00038305	  0.00023466	  7.27286851	  0.99882993	  0.99938229  0.49324590
+8079	 -6.27325168	 -0.00038300	  0.00023463	  7.27286868	  0.99883007	  0.99938237  0.49324573
+8080	 -6.27325179	 -0.00038295	  0.00023460	  7.27286884	  0.99883021	  0.99938245  0.49324578
+8081	 -6.27325190	 -0.00038291	  0.00023457	  7.27286900	  0.99883036	  0.99938252  0.49324585
+8082	 -6.27325202	 -0.00038286	  0.00023454	  7.27286916	  0.99883050	  0.99938260  0.49324579
+8083	 -6.27325213	 -0.00038281	  0.00023451	  7.27286932	  0.99883065	  0.99938268  0.49324589
+8084	 -6.27325224	 -0.00038276	  0.00023448	  7.27286948	  0.99883079	  0.99938275  0.49324588
+8085	 -6.27325236	 -0.00038272	  0.00023446	  7.27286964	  0.99883094	  0.99938283  0.49324586
+8086	 -6.27325247	 -0.00038267	  0.00023443	  7.27286980	  0.99883108	  0.99938291  0.49324588
+8087	 -6.27325258	 -0.00038262	  0.00023440	  7.27286996	  0.99883123	  0.99938298  0.49324600
+8088	 -6.27325269	 -0.00038257	  0.00023437	  7.27287012	  0.99883137	  0.99938306  0.49324602
+8089	 -6.27325281	 -0.00038253	  0.00023434	  7.27287028	  0.99883152	  0.99938313  0.49324593
+8090	 -6.27325292	 -0.00038248	  0.00023431	  7.27287044	  0.99883166	  0.99938321  0.49324600
+8091	 -6.27325303	 -0.00038243	  0.00023428	  7.27287060	  0.99883180	  0.99938329  0.49324594
+8092	 -6.27325315	 -0.00038238	  0.00023425	  7.27287076	  0.99883195	  0.99938336  0.49324594
+8093	 -6.27325326	 -0.00038234	  0.00023422	  7.27287092	  0.99883209	  0.99938344  0.49324616
+8094	 -6.27325337	 -0.00038229	  0.00023419	  7.27287108	  0.99883224	  0.99938352  0.49324609
+8095	 -6.27325349	 -0.00038224	  0.00023417	  7.27287124	  0.99883238	  0.99938359  0.49324615
+8096	 -6.27325360	 -0.00038220	  0.00023414	  7.27287140	  0.99883253	  0.99938367  0.49324616
+8097	 -6.27325371	 -0.00038215	  0.00023411	  7.27287156	  0.99883267	  0.99938374  0.49324616
+8098	 -6.27325383	 -0.00038210	  0.00023408	  7.27287172	  0.99883281	  0.99938382  0.49324603
+8099	 -6.27325394	 -0.00038205	  0.00023405	  7.27287188	  0.99883296	  0.99938390  0.49324614
+8100	 -6.27325405	 -0.00038201	  0.00023402	  7.27287204	  0.99883310	  0.99938397  0.49324629
+8101	 -6.27325416	 -0.00038196	  0.00023399	  7.27287220	  0.99883325	  0.99938405  0.49324628
+8102	 -6.27325428	 -0.00038191	  0.00023396	  7.27287236	  0.99883339	  0.99938412  0.49324634
+8103	 -6.27325439	 -0.00038187	  0.00023393	  7.27287252	  0.99883353	  0.99938420  0.49324618
+8104	 -6.27325450	 -0.00038182	  0.00023391	  7.27287268	  0.99883368	  0.99938428  0.49324620
+8105	 -6.27325462	 -0.00038177	  0.00023388	  7.27287284	  0.99883382	  0.99938435  0.49324621
+8106	 -6.27325473	 -0.00038172	  0.00023385	  7.27287300	  0.99883397	  0.99938443  0.49324620
+8107	 -6.27325484	 -0.00038168	  0.00023382	  7.27287316	  0.99883411	  0.99938450  0.49324631
+8108	 -6.27325495	 -0.00038163	  0.00023379	  7.27287332	  0.99883425	  0.99938458  0.49324616
+8109	 -6.27325507	 -0.00038158	  0.00023376	  7.27287348	  0.99883440	  0.99938466  0.49324629
+8110	 -6.27325518	 -0.00038154	  0.00023373	  7.27287364	  0.99883454	  0.99938473  0.49324635
+8111	 -6.27325529	 -0.00038149	  0.00023370	  7.27287380	  0.99883469	  0.99938481  0.49324648
+8112	 -6.27325540	 -0.00038144	  0.00023367	  7.27287396	  0.99883483	  0.99938488  0.49324638
+8113	 -6.27325552	 -0.00038140	  0.00023365	  7.27287412	  0.99883497	  0.99938496  0.49324637
+8114	 -6.27325563	 -0.00038135	  0.00023362	  7.27287428	  0.99883512	  0.99938503  0.49324641
+8115	 -6.27325574	 -0.00038130	  0.00023359	  7.27287444	  0.99883526	  0.99938511  0.49324645
+8116	 -6.27325585	 -0.00038125	  0.00023356	  7.27287460	  0.99883540	  0.99938519  0.49324647
+8117	 -6.27325597	 -0.00038121	  0.00023353	  7.27287476	  0.99883555	  0.99938526  0.49324642
+8118	 -6.27325608	 -0.00038116	  0.00023350	  7.27287492	  0.99883569	  0.99938534  0.49324651
+8119	 -6.27325619	 -0.00038111	  0.00023347	  7.27287508	  0.99883583	  0.99938541  0.49324649
+8120	 -6.27325630	 -0.00038107	  0.00023344	  7.27287524	  0.99883598	  0.99938549  0.49324647
+8121	 -6.27325642	 -0.00038102	  0.00023342	  7.27287540	  0.99883612	  0.99938556  0.49324658
+8122	 -6.27325653	 -0.00038097	  0.00023339	  7.27287555	  0.99883626	  0.99938564  0.49324664
+8123	 -6.27325664	 -0.00038093	  0.00023336	  7.27287571	  0.99883641	  0.99938572  0.49324649
+8124	 -6.27325675	 -0.00038088	  0.00023333	  7.27287587	  0.99883655	  0.99938579  0.49324658
+8125	 -6.27325686	 -0.00038083	  0.00023330	  7.27287603	  0.99883669	  0.99938587  0.49324653
+8126	 -6.27325698	 -0.00038079	  0.00023327	  7.27287619	  0.99883684	  0.99938594  0.49324658
+8127	 -6.27325709	 -0.00038074	  0.00023324	  7.27287635	  0.99883698	  0.99938602  0.49324649
+8128	 -6.27325720	 -0.00038069	  0.00023321	  7.27287651	  0.99883712	  0.99938609  0.49324663
+8129	 -6.27325731	 -0.00038065	  0.00023319	  7.27287667	  0.99883727	  0.99938617  0.49324670
+8130	 -6.27325742	 -0.00038060	  0.00023316	  7.27287683	  0.99883741	  0.99938624  0.49324665
+8131	 -6.27325754	 -0.00038055	  0.00023313	  7.27287699	  0.99883755	  0.99938632  0.49324681
+8132	 -6.27325765	 -0.00038050	  0.00023310	  7.27287714	  0.99883769	  0.99938640  0.49324678
+8133	 -6.27325776	 -0.00038046	  0.00023307	  7.27287730	  0.99883784	  0.99938647  0.49324668
+8134	 -6.27325787	 -0.00038041	  0.00023304	  7.27287746	  0.99883798	  0.99938655  0.49324676
+8135	 -6.27325798	 -0.00038036	  0.00023301	  7.27287762	  0.99883812	  0.99938662  0.49324679
+8136	 -6.27325810	 -0.00038032	  0.00023299	  7.27287778	  0.99883827	  0.99938670  0.49324680
+8137	 -6.27325821	 -0.00038027	  0.00023296	  7.27287794	  0.99883841	  0.99938677  0.49324686
+8138	 -6.27325832	 -0.00038022	  0.00023293	  7.27287810	  0.99883855	  0.99938685  0.49324703
+8139	 -6.27325843	 -0.00038018	  0.00023290	  7.27287825	  0.99883869	  0.99938692  0.49324683
+8140	 -6.27325854	 -0.00038013	  0.00023287	  7.27287841	  0.99883884	  0.99938700  0.49324688
+8141	 -6.27325866	 -0.00038008	  0.00023284	  7.27287857	  0.99883898	  0.99938707  0.49324687
+8142	 -6.27325877	 -0.00038004	  0.00023281	  7.27287873	  0.99883912	  0.99938715  0.49324692
+8143	 -6.27325888	 -0.00037999	  0.00023279	  7.27287889	  0.99883926	  0.99938722  0.49324678
+8144	 -6.27325899	 -0.00037994	  0.00023276	  7.27287905	  0.99883941	  0.99938730  0.49324693
+8145	 -6.27325910	 -0.00037990	  0.00023273	  7.27287920	  0.99883955	  0.99938737  0.49324693
+8146	 -6.27325921	 -0.00037985	  0.00023270	  7.27287936	  0.99883969	  0.99938745  0.49324695
+8147	 -6.27325932	 -0.00037980	  0.00023267	  7.27287952	  0.99883983	  0.99938752  0.49324704
+8148	 -6.27325944	 -0.00037976	  0.00023264	  7.27287968	  0.99883998	  0.99938760  0.49324699
+8149	 -6.27325955	 -0.00037971	  0.00023261	  7.27287984	  0.99884012	  0.99938768  0.49324702
+8150	 -6.27325966	 -0.00037966	  0.00023259	  7.27287999	  0.99884026	  0.99938775  0.49324694
+8151	 -6.27325977	 -0.00037962	  0.00023256	  7.27288015	  0.99884040	  0.99938783  0.49324708
+8152	 -6.27325988	 -0.00037957	  0.00023253	  7.27288031	  0.99884055	  0.99938790  0.49324716
+8153	 -6.27325999	 -0.00037953	  0.00023250	  7.27288047	  0.99884069	  0.99938798  0.49324712
+8154	 -6.27326011	 -0.00037948	  0.00023247	  7.27288063	  0.99884083	  0.99938805  0.49324715
+8155	 -6.27326022	 -0.00037943	  0.00023244	  7.27288078	  0.99884097	  0.99938813  0.49324707
+8156	 -6.27326033	 -0.00037939	  0.00023241	  7.27288094	  0.99884111	  0.99938820  0.49324704
+8157	 -6.27326044	 -0.00037934	  0.00023239	  7.27288110	  0.99884126	  0.99938828  0.49324718
+8158	 -6.27326055	 -0.00037929	  0.00023236	  7.27288126	  0.99884140	  0.99938835  0.49324714
+8159	 -6.27326066	 -0.00037925	  0.00023233	  7.27288142	  0.99884154	  0.99938843  0.49324726
+8160	 -6.27326077	 -0.00037920	  0.00023230	  7.27288157	  0.99884168	  0.99938850  0.49324702
+8161	 -6.27326088	 -0.00037915	  0.00023227	  7.27288173	  0.99884182	  0.99938858  0.49324721
+8162	 -6.27326100	 -0.00037911	  0.00023224	  7.27288189	  0.99884197	  0.99938865  0.49324723
+8163	 -6.27326111	 -0.00037906	  0.00023221	  7.27288205	  0.99884211	  0.99938873  0.49324718
+8164	 -6.27326122	 -0.00037901	  0.00023219	  7.27288220	  0.99884225	  0.99938880  0.49324712
+8165	 -6.27326133	 -0.00037897	  0.00023216	  7.27288236	  0.99884239	  0.99938887  0.49324742
+8166	 -6.27326144	 -0.00037892	  0.00023213	  7.27288252	  0.99884253	  0.99938895  0.49324731
+8167	 -6.27326155	 -0.00037887	  0.00023210	  7.27288268	  0.99884267	  0.99938902  0.49324731
+8168	 -6.27326166	 -0.00037883	  0.00023207	  7.27288283	  0.99884282	  0.99938910  0.49324735
+8169	 -6.27326177	 -0.00037878	  0.00023204	  7.27288299	  0.99884296	  0.99938917  0.49324724
+8170	 -6.27326188	 -0.00037874	  0.00023202	  7.27288315	  0.99884310	  0.99938925  0.49324733
+8171	 -6.27326199	 -0.00037869	  0.00023199	  7.27288331	  0.99884324	  0.99938932  0.49324726
+8172	 -6.27326211	 -0.00037864	  0.00023196	  7.27288346	  0.99884338	  0.99938940  0.49324734
+8173	 -6.27326222	 -0.00037860	  0.00023193	  7.27288362	  0.99884352	  0.99938947  0.49324737
+8174	 -6.27326233	 -0.00037855	  0.00023190	  7.27288378	  0.99884367	  0.99938955  0.49324746
+8175	 -6.27326244	 -0.00037850	  0.00023187	  7.27288393	  0.99884381	  0.99938962  0.49324742
+8176	 -6.27326255	 -0.00037846	  0.00023185	  7.27288409	  0.99884395	  0.99938970  0.49324750
+8177	 -6.27326266	 -0.00037841	  0.00023182	  7.27288425	  0.99884409	  0.99938977  0.49324754
+8178	 -6.27326277	 -0.00037837	  0.00023179	  7.27288441	  0.99884423	  0.99938985  0.49324741
+8179	 -6.27326288	 -0.00037832	  0.00023176	  7.27288456	  0.99884437	  0.99938992  0.49324760
+8180	 -6.27326299	 -0.00037827	  0.00023173	  7.27288472	  0.99884451	  0.99939000  0.49324751
+8181	 -6.27326310	 -0.00037823	  0.00023170	  7.27288488	  0.99884466	  0.99939007  0.49324747
+8182	 -6.27326321	 -0.00037818	  0.00023168	  7.27288503	  0.99884480	  0.99939014  0.49324756
+8183	 -6.27326332	 -0.00037813	  0.00023165	  7.27288519	  0.99884494	  0.99939022  0.49324744
+8184	 -6.27326343	 -0.00037809	  0.00023162	  7.27288535	  0.99884508	  0.99939029  0.49324765
+8185	 -6.27326354	 -0.00037804	  0.00023159	  7.27288550	  0.99884522	  0.99939037  0.49324755
+8186	 -6.27326366	 -0.00037800	  0.00023156	  7.27288566	  0.99884536	  0.99939044  0.49324760
+8187	 -6.27326377	 -0.00037795	  0.00023153	  7.27288582	  0.99884550	  0.99939052  0.49324764
+8188	 -6.27326388	 -0.00037790	  0.00023151	  7.27288597	  0.99884564	  0.99939059  0.49324764
+8189	 -6.27326399	 -0.00037786	  0.00023148	  7.27288613	  0.99884578	  0.99939067  0.49324768
+8190	 -6.27326410	 -0.00037781	  0.00023145	  7.27288629	  0.99884592	  0.99939074  0.49324772
+8191	 -6.27326421	 -0.00037777	  0.00023142	  7.27288644	  0.99884607	  0.99939081  0.49324775
+8192	 -6.27326432	 -0.00037772	  0.00023139	  7.27288660	  0.99884621	  0.99939089  0.49324763
+8193	 -6.27326443	 -0.00037767	  0.00023136	  7.27288676	  0.99884635	  0.99939096  0.49324773
+8194	 -6.27326454	 -0.00037763	  0.00023134	  7.27288691	  0.99884649	  0.99939104  0.49324770
+8195	 -6.27326465	 -0.00037758	  0.00023131	  7.27288707	  0.99884663	  0.99939111  0.49324772
+8196	 -6.27326476	 -0.00037753	  0.00023128	  7.27288722	  0.99884677	  0.99939119  0.49324778
+8197	 -6.27326487	 -0.00037749	  0.00023125	  7.27288738	  0.99884691	  0.99939126  0.49324783
+8198	 -6.27326498	 -0.00037744	  0.00023122	  7.27288754	  0.99884705	  0.99939133  0.49324780
+8199	 -6.27326509	 -0.00037740	  0.00023120	  7.27288769	  0.99884719	  0.99939141  0.49324776
+8200	 -6.27326520	 -0.00037735	  0.00023117	  7.27288785	  0.99884733	  0.99939148  0.49324786
+8201	 -6.27326531	 -0.00037730	  0.00023114	  7.27288801	  0.99884747	  0.99939156  0.49324788
+8202	 -6.27326542	 -0.00037726	  0.00023111	  7.27288816	  0.99884761	  0.99939163  0.49324776
+8203	 -6.27326553	 -0.00037721	  0.00023108	  7.27288832	  0.99884775	  0.99939171  0.49324788
+8204	 -6.27326564	 -0.00037717	  0.00023105	  7.27288847	  0.99884789	  0.99939178  0.49324801
+8205	 -6.27326575	 -0.00037712	  0.00023103	  7.27288863	  0.99884803	  0.99939185  0.49324790
+8206	 -6.27326586	 -0.00037707	  0.00023100	  7.27288879	  0.99884817	  0.99939193  0.49324783
+8207	 -6.27326597	 -0.00037703	  0.00023097	  7.27288894	  0.99884831	  0.99939200  0.49324795
+8208	 -6.27326608	 -0.00037698	  0.00023094	  7.27288910	  0.99884846	  0.99939208  0.49324808
+8209	 -6.27326619	 -0.00037694	  0.00023091	  7.27288925	  0.99884860	  0.99939215  0.49324796
+8210	 -6.27326630	 -0.00037689	  0.00023089	  7.27288941	  0.99884874	  0.99939222  0.49324802
+8211	 -6.27326641	 -0.00037685	  0.00023086	  7.27288956	  0.99884888	  0.99939230  0.49324786
+8212	 -6.27326652	 -0.00037680	  0.00023083	  7.27288972	  0.99884902	  0.99939237  0.49324795
+8213	 -6.27326663	 -0.00037675	  0.00023080	  7.27288988	  0.99884916	  0.99939245  0.49324822
+8214	 -6.27326674	 -0.00037671	  0.00023077	  7.27289003	  0.99884930	  0.99939252  0.49324803
+8215	 -6.27326685	 -0.00037666	  0.00023074	  7.27289019	  0.99884944	  0.99939259  0.49324799
+8216	 -6.27326696	 -0.00037662	  0.00023072	  7.27289034	  0.99884958	  0.99939267  0.49324798
+8217	 -6.27326707	 -0.00037657	  0.00023069	  7.27289050	  0.99884972	  0.99939274  0.49324802
+8218	 -6.27326718	 -0.00037652	  0.00023066	  7.27289065	  0.99884986	  0.99939282  0.49324803
+8219	 -6.27326729	 -0.00037648	  0.00023063	  7.27289081	  0.99885000	  0.99939289  0.49324811
+8220	 -6.27326740	 -0.00037643	  0.00023060	  7.27289096	  0.99885014	  0.99939296  0.49324817
+8221	 -6.27326751	 -0.00037639	  0.00023058	  7.27289112	  0.99885028	  0.99939304  0.49324821
+8222	 -6.27326762	 -0.00037634	  0.00023055	  7.27289127	  0.99885042	  0.99939311  0.49324821
+8223	 -6.27326773	 -0.00037630	  0.00023052	  7.27289143	  0.99885056	  0.99939318  0.49324827
+8224	 -6.27326783	 -0.00037625	  0.00023049	  7.27289159	  0.99885070	  0.99939326  0.49324820
+8225	 -6.27326794	 -0.00037620	  0.00023046	  7.27289174	  0.99885084	  0.99939333  0.49324832
+8226	 -6.27326805	 -0.00037616	  0.00023044	  7.27289190	  0.99885097	  0.99939341  0.49324834
+8227	 -6.27326816	 -0.00037611	  0.00023041	  7.27289205	  0.99885111	  0.99939348  0.49324841
+8228	 -6.27326827	 -0.00037607	  0.00023038	  7.27289221	  0.99885125	  0.99939355  0.49324834
+8229	 -6.27326838	 -0.00037602	  0.00023035	  7.27289236	  0.99885139	  0.99939363  0.49324834
+8230	 -6.27326849	 -0.00037598	  0.00023032	  7.27289252	  0.99885153	  0.99939370  0.49324836
+8231	 -6.27326860	 -0.00037593	  0.00023030	  7.27289267	  0.99885167	  0.99939377  0.49324838
+8232	 -6.27326871	 -0.00037588	  0.00023027	  7.27289283	  0.99885181	  0.99939385  0.49324843
+8233	 -6.27326882	 -0.00037584	  0.00023024	  7.27289298	  0.99885195	  0.99939392  0.49324818
+8234	 -6.27326893	 -0.00037579	  0.00023021	  7.27289314	  0.99885209	  0.99939399  0.49324852
+8235	 -6.27326904	 -0.00037575	  0.00023018	  7.27289329	  0.99885223	  0.99939407  0.49324850
+8236	 -6.27326915	 -0.00037570	  0.00023016	  7.27289345	  0.99885237	  0.99939414  0.49324851
+8237	 -6.27326926	 -0.00037566	  0.00023013	  7.27289360	  0.99885251	  0.99939422  0.49324838
+8238	 -6.27326937	 -0.00037561	  0.00023010	  7.27289375	  0.99885265	  0.99939429  0.49324847
+8239	 -6.27326947	 -0.00037557	  0.00023007	  7.27289391	  0.99885279	  0.99939436  0.49324849
+8240	 -6.27326958	 -0.00037552	  0.00023004	  7.27289406	  0.99885293	  0.99939444  0.49324851
+8241	 -6.27326969	 -0.00037547	  0.00023002	  7.27289422	  0.99885307	  0.99939451  0.49324844
+8242	 -6.27326980	 -0.00037543	  0.00022999	  7.27289437	  0.99885321	  0.99939458  0.49324862
+8243	 -6.27326991	 -0.00037538	  0.00022996	  7.27289453	  0.99885334	  0.99939466  0.49324845
+8244	 -6.27327002	 -0.00037534	  0.00022993	  7.27289468	  0.99885348	  0.99939473  0.49324866
+8245	 -6.27327013	 -0.00037529	  0.00022991	  7.27289484	  0.99885362	  0.99939480  0.49324850
+8246	 -6.27327024	 -0.00037525	  0.00022988	  7.27289499	  0.99885376	  0.99939488  0.49324874
+8247	 -6.27327035	 -0.00037520	  0.00022985	  7.27289514	  0.99885390	  0.99939495  0.49324863
+8248	 -6.27327045	 -0.00037516	  0.00022982	  7.27289530	  0.99885404	  0.99939502  0.49324861
+8249	 -6.27327056	 -0.00037511	  0.00022979	  7.27289545	  0.99885418	  0.99939510  0.49324863
+8250	 -6.27327067	 -0.00037506	  0.00022977	  7.27289561	  0.99885432	  0.99939517  0.49324878
+8251	 -6.27327078	 -0.00037502	  0.00022974	  7.27289576	  0.99885446	  0.99939524  0.49324852
+8252	 -6.27327089	 -0.00037497	  0.00022971	  7.27289592	  0.99885459	  0.99939532  0.49324868
+8253	 -6.27327100	 -0.00037493	  0.00022968	  7.27289607	  0.99885473	  0.99939539  0.49324870
+8254	 -6.27327111	 -0.00037488	  0.00022965	  7.27289622	  0.99885487	  0.99939546  0.49324867
+8255	 -6.27327122	 -0.00037484	  0.00022963	  7.27289638	  0.99885501	  0.99939554  0.49324861
+8256	 -6.27327132	 -0.00037479	  0.00022960	  7.27289653	  0.99885515	  0.99939561  0.49324879
+8257	 -6.27327143	 -0.00037475	  0.00022957	  7.27289669	  0.99885529	  0.99939568  0.49324878
+8258	 -6.27327154	 -0.00037470	  0.00022954	  7.27289684	  0.99885543	  0.99939576  0.49324873
+8259	 -6.27327165	 -0.00037466	  0.00022952	  7.27289699	  0.99885557	  0.99939583  0.49324877
+8260	 -6.27327176	 -0.00037461	  0.00022949	  7.27289715	  0.99885570	  0.99939590  0.49324893
+8261	 -6.27327187	 -0.00037457	  0.00022946	  7.27289730	  0.99885584	  0.99939597  0.49324876
+8262	 -6.27327198	 -0.00037452	  0.00022943	  7.27289746	  0.99885598	  0.99939605  0.49324876
+8263	 -6.27327208	 -0.00037447	  0.00022940	  7.27289761	  0.99885612	  0.99939612  0.49324883
+8264	 -6.27327219	 -0.00037443	  0.00022938	  7.27289776	  0.99885626	  0.99939619  0.49324897
+8265	 -6.27327230	 -0.00037438	  0.00022935	  7.27289792	  0.99885640	  0.99939627  0.49324903
+8266	 -6.27327241	 -0.00037434	  0.00022932	  7.27289807	  0.99885653	  0.99939634  0.49324897
+8267	 -6.27327252	 -0.00037429	  0.00022929	  7.27289822	  0.99885667	  0.99939641  0.49324915
+8268	 -6.27327263	 -0.00037425	  0.00022927	  7.27289838	  0.99885681	  0.99939649  0.49324899
+8269	 -6.27327273	 -0.00037420	  0.00022924	  7.27289853	  0.99885695	  0.99939656  0.49324895
+8270	 -6.27327284	 -0.00037416	  0.00022921	  7.27289869	  0.99885709	  0.99939663  0.49324901
+8271	 -6.27327295	 -0.00037411	  0.00022918	  7.27289884	  0.99885723	  0.99939671  0.49324899
+8272	 -6.27327306	 -0.00037407	  0.00022915	  7.27289899	  0.99885736	  0.99939678  0.49324910
+8273	 -6.27327317	 -0.00037402	  0.00022913	  7.27289915	  0.99885750	  0.99939685  0.49324893
+8274	 -6.27327328	 -0.00037398	  0.00022910	  7.27289930	  0.99885764	  0.99939692  0.49324897
+8275	 -6.27327338	 -0.00037393	  0.00022907	  7.27289945	  0.99885778	  0.99939700  0.49324903
+8276	 -6.27327349	 -0.00037389	  0.00022904	  7.27289961	  0.99885792	  0.99939707  0.49324907
+8277	 -6.27327360	 -0.00037384	  0.00022902	  7.27289976	  0.99885805	  0.99939714  0.49324912
+8278	 -6.27327371	 -0.00037380	  0.00022899	  7.27289991	  0.99885819	  0.99939722  0.49324911
+8279	 -6.27327382	 -0.00037375	  0.00022896	  7.27290007	  0.99885833	  0.99939729  0.49324918
+8280	 -6.27327392	 -0.00037371	  0.00022893	  7.27290022	  0.99885847	  0.99939736  0.49324911
+8281	 -6.27327403	 -0.00037366	  0.00022891	  7.27290037	  0.99885861	  0.99939743  0.49324922
+8282	 -6.27327414	 -0.00037362	  0.00022888	  7.27290052	  0.99885874	  0.99939751  0.49324912
+8283	 -6.27327425	 -0.00037357	  0.00022885	  7.27290068	  0.99885888	  0.99939758  0.49324914
+8284	 -6.27327436	 -0.00037353	  0.00022882	  7.27290083	  0.99885902	  0.99939765  0.49324919
+8285	 -6.27327446	 -0.00037348	  0.00022880	  7.27290098	  0.99885916	  0.99939772  0.49324915
+8286	 -6.27327457	 -0.00037344	  0.00022877	  7.27290114	  0.99885929	  0.99939780  0.49324920
+8287	 -6.27327468	 -0.00037339	  0.00022874	  7.27290129	  0.99885943	  0.99939787  0.49324914
+8288	 -6.27327479	 -0.00037335	  0.00022871	  7.27290144	  0.99885957	  0.99939794  0.49324927
+8289	 -6.27327490	 -0.00037330	  0.00022868	  7.27290160	  0.99885971	  0.99939801  0.49324924
+8290	 -6.27327500	 -0.00037326	  0.00022866	  7.27290175	  0.99885984	  0.99939809  0.49324926
+8291	 -6.27327511	 -0.00037321	  0.00022863	  7.27290190	  0.99885998	  0.99939816  0.49324920
+8292	 -6.27327522	 -0.00037317	  0.00022860	  7.27290205	  0.99886012	  0.99939823  0.49324932
+8293	 -6.27327533	 -0.00037312	  0.00022857	  7.27290221	  0.99886026	  0.99939831  0.49324939
+8294	 -6.27327543	 -0.00037308	  0.00022855	  7.27290236	  0.99886039	  0.99939838  0.49324946
+8295	 -6.27327554	 -0.00037303	  0.00022852	  7.27290251	  0.99886053	  0.99939845  0.49324935
+8296	 -6.27327565	 -0.00037299	  0.00022849	  7.27290266	  0.99886067	  0.99939852  0.49324930
+8297	 -6.27327576	 -0.00037294	  0.00022846	  7.27290282	  0.99886081	  0.99939860  0.49324950
+8298	 -6.27327586	 -0.00037290	  0.00022844	  7.27290297	  0.99886094	  0.99939867  0.49324938
+8299	 -6.27327597	 -0.00037285	  0.00022841	  7.27290312	  0.99886108	  0.99939874  0.49324942
+8300	 -6.27327608	 -0.00037281	  0.00022838	  7.27290327	  0.99886122	  0.99939881  0.49324944
+8301	 -6.27327619	 -0.00037276	  0.00022835	  7.27290343	  0.99886136	  0.99939888  0.49324942
+8302	 -6.27327629	 -0.00037272	  0.00022833	  7.27290358	  0.99886149	  0.99939896  0.49324940
+8303	 -6.27327640	 -0.00037267	  0.00022830	  7.27290373	  0.99886163	  0.99939903  0.49324954
+8304	 -6.27327651	 -0.00037263	  0.00022827	  7.27290388	  0.99886177	  0.99939910  0.49324936
+8305	 -6.27327662	 -0.00037258	  0.00022824	  7.27290404	  0.99886190	  0.99939917  0.49324945
+8306	 -6.27327672	 -0.00037254	  0.00022822	  7.27290419	  0.99886204	  0.99939925  0.49324953
+8307	 -6.27327683	 -0.00037249	  0.00022819	  7.27290434	  0.99886218	  0.99939932  0.49324957
+8308	 -6.27327694	 -0.00037245	  0.00022816	  7.27290449	  0.99886231	  0.99939939  0.49324952
+8309	 -6.27327705	 -0.00037240	  0.00022813	  7.27290464	  0.99886245	  0.99939946  0.49324959
+8310	 -6.27327715	 -0.00037236	  0.00022811	  7.27290480	  0.99886259	  0.99939954  0.49324957
+8311	 -6.27327726	 -0.00037231	  0.00022808	  7.27290495	  0.99886273	  0.99939961  0.49324964
+8312	 -6.27327737	 -0.00037227	  0.00022805	  7.27290510	  0.99886286	  0.99939968  0.49324963
+8313	 -6.27327747	 -0.00037222	  0.00022802	  7.27290525	  0.99886300	  0.99939975  0.49324974
+8314	 -6.27327758	 -0.00037218	  0.00022800	  7.27290540	  0.99886314	  0.99939982  0.49324966
+8315	 -6.27327769	 -0.00037213	  0.00022797	  7.27290556	  0.99886327	  0.99939990  0.49324952
+8316	 -6.27327780	 -0.00037209	  0.00022794	  7.27290571	  0.99886341	  0.99939997  0.49324969
+8317	 -6.27327790	 -0.00037204	  0.00022791	  7.27290586	  0.99886355	  0.99940004  0.49324970
+8318	 -6.27327801	 -0.00037200	  0.00022789	  7.27290601	  0.99886368	  0.99940011  0.49324976
+8319	 -6.27327812	 -0.00037195	  0.00022786	  7.27290616	  0.99886382	  0.99940019  0.49324984
+8320	 -6.27327822	 -0.00037191	  0.00022783	  7.27290631	  0.99886396	  0.99940026  0.49324963
+8321	 -6.27327833	 -0.00037187	  0.00022781	  7.27290647	  0.99886409	  0.99940033  0.49324968
+8322	 -6.27327844	 -0.00037182	  0.00022778	  7.27290662	  0.99886423	  0.99940040  0.49324978
+8323	 -6.27327855	 -0.00037178	  0.00022775	  7.27290677	  0.99886436	  0.99940047  0.49324985
+8324	 -6.27327865	 -0.00037173	  0.00022772	  7.27290692	  0.99886450	  0.99940055  0.49325000
+8325	 -6.27327876	 -0.00037169	  0.00022770	  7.27290707	  0.99886464	  0.99940062  0.49324984
+8326	 -6.27327887	 -0.00037164	  0.00022767	  7.27290722	  0.99886477	  0.99940069  0.49324982
+8327	 -6.27327897	 -0.00037160	  0.00022764	  7.27290737	  0.99886491	  0.99940076  0.49324988
+8328	 -6.27327908	 -0.00037155	  0.00022761	  7.27290753	  0.99886505	  0.99940083  0.49325015
+8329	 -6.27327919	 -0.00037151	  0.00022759	  7.27290768	  0.99886518	  0.99940091  0.49324977
+8330	 -6.27327929	 -0.00037146	  0.00022756	  7.27290783	  0.99886532	  0.99940098  0.49324993
+8331	 -6.27327940	 -0.00037142	  0.00022753	  7.27290798	  0.99886546	  0.99940105  0.49325002
+8332	 -6.27327951	 -0.00037137	  0.00022750	  7.27290813	  0.99886559	  0.99940112  0.49324999
+8333	 -6.27327961	 -0.00037133	  0.00022748	  7.27290828	  0.99886573	  0.99940119  0.49325000
+8334	 -6.27327972	 -0.00037129	  0.00022745	  7.27290843	  0.99886586	  0.99940126  0.49325006
+8335	 -6.27327983	 -0.00037124	  0.00022742	  7.27290858	  0.99886600	  0.99940134  0.49324994
+8336	 -6.27327993	 -0.00037120	  0.00022740	  7.27290874	  0.99886614	  0.99940141  0.49324986
+8337	 -6.27328004	 -0.00037115	  0.00022737	  7.27290889	  0.99886627	  0.99940148  0.49325009
+8338	 -6.27328015	 -0.00037111	  0.00022734	  7.27290904	  0.99886641	  0.99940155  0.49325012
+8339	 -6.27328025	 -0.00037106	  0.00022731	  7.27290919	  0.99886654	  0.99940162  0.49325015
+8340	 -6.27328036	 -0.00037102	  0.00022729	  7.27290934	  0.99886668	  0.99940170  0.49325010
+8341	 -6.27328047	 -0.00037097	  0.00022726	  7.27290949	  0.99886682	  0.99940177  0.49325020
+8342	 -6.27328057	 -0.00037093	  0.00022723	  7.27290964	  0.99886695	  0.99940184  0.49325004
+8343	 -6.27328068	 -0.00037089	  0.00022720	  7.27290979	  0.99886709	  0.99940191  0.49325014
+8344	 -6.27328078	 -0.00037084	  0.00022718	  7.27290994	  0.99886722	  0.99940198  0.49325025
+8345	 -6.27328089	 -0.00037080	  0.00022715	  7.27291009	  0.99886736	  0.99940205  0.49325008
+8346	 -6.27328100	 -0.00037075	  0.00022712	  7.27291024	  0.99886749	  0.99940213  0.49325032
+8347	 -6.27328110	 -0.00037071	  0.00022710	  7.27291040	  0.99886763	  0.99940220  0.49325016
+8348	 -6.27328121	 -0.00037066	  0.00022707	  7.27291055	  0.99886777	  0.99940227  0.49325010
+8349	 -6.27328132	 -0.00037062	  0.00022704	  7.27291070	  0.99886790	  0.99940234  0.49325006
+8350	 -6.27328142	 -0.00037057	  0.00022701	  7.27291085	  0.99886804	  0.99940241  0.49325022
+8351	 -6.27328153	 -0.00037053	  0.00022699	  7.27291100	  0.99886817	  0.99940248  0.49325031
+8352	 -6.27328163	 -0.00037049	  0.00022696	  7.27291115	  0.99886831	  0.99940255  0.49325037
+8353	 -6.27328174	 -0.00037044	  0.00022693	  7.27291130	  0.99886844	  0.99940263  0.49325027
+8354	 -6.27328185	 -0.00037040	  0.00022691	  7.27291145	  0.99886858	  0.99940270  0.49325034
+8355	 -6.27328195	 -0.00037035	  0.00022688	  7.27291160	  0.99886871	  0.99940277  0.49325020
+8356	 -6.27328206	 -0.00037031	  0.00022685	  7.27291175	  0.99886885	  0.99940284  0.49325035
+8357	 -6.27328217	 -0.00037026	  0.00022682	  7.27291190	  0.99886898	  0.99940291  0.49325022
+8358	 -6.27328227	 -0.00037022	  0.00022680	  7.27291205	  0.99886912	  0.99940298  0.49325038
+8359	 -6.27328238	 -0.00037018	  0.00022677	  7.27291220	  0.99886926	  0.99940305  0.49325045
+8360	 -6.27328248	 -0.00037013	  0.00022674	  7.27291235	  0.99886939	  0.99940313  0.49325055
+8361	 -6.27328259	 -0.00037009	  0.00022672	  7.27291250	  0.99886953	  0.99940320  0.49325042
+8362	 -6.27328269	 -0.00037004	  0.00022669	  7.27291265	  0.99886966	  0.99940327  0.49325036
+8363	 -6.27328280	 -0.00037000	  0.00022666	  7.27291280	  0.99886980	  0.99940334  0.49325057
+8364	 -6.27328291	 -0.00036995	  0.00022663	  7.27291295	  0.99886993	  0.99940341  0.49325047
+8365	 -6.27328301	 -0.00036991	  0.00022661	  7.27291310	  0.99887007	  0.99940348  0.49325050
+8366	 -6.27328312	 -0.00036987	  0.00022658	  7.27291325	  0.99887020	  0.99940355  0.49325044
+8367	 -6.27328322	 -0.00036982	  0.00022655	  7.27291340	  0.99887034	  0.99940363  0.49325060
+8368	 -6.27328333	 -0.00036978	  0.00022653	  7.27291355	  0.99887047	  0.99940370  0.49325046
+8369	 -6.27328344	 -0.00036973	  0.00022650	  7.27291370	  0.99887061	  0.99940377  0.49325049
+8370	 -6.27328354	 -0.00036969	  0.00022647	  7.27291385	  0.99887074	  0.99940384  0.49325054
+8371	 -6.27328365	 -0.00036965	  0.00022644	  7.27291400	  0.99887088	  0.99940391  0.49325051
+8372	 -6.27328375	 -0.00036960	  0.00022642	  7.27291415	  0.99887101	  0.99940398  0.49325068
+8373	 -6.27328386	 -0.00036956	  0.00022639	  7.27291430	  0.99887115	  0.99940405  0.49325059
+8374	 -6.27328396	 -0.00036951	  0.00022636	  7.27291445	  0.99887128	  0.99940412  0.49325082
+8375	 -6.27328407	 -0.00036947	  0.00022634	  7.27291460	  0.99887142	  0.99940419  0.49325077
+8376	 -6.27328418	 -0.00036942	  0.00022631	  7.27291475	  0.99887155	  0.99940427  0.49325076
+8377	 -6.27328428	 -0.00036938	  0.00022628	  7.27291490	  0.99887168	  0.99940434  0.49325073
+8378	 -6.27328439	 -0.00036934	  0.00022626	  7.27291505	  0.99887182	  0.99940441  0.49325073
+8379	 -6.27328449	 -0.00036929	  0.00022623	  7.27291520	  0.99887195	  0.99940448  0.49325059
+8380	 -6.27328460	 -0.00036925	  0.00022620	  7.27291535	  0.99887209	  0.99940455  0.49325071
+8381	 -6.27328470	 -0.00036920	  0.00022617	  7.27291550	  0.99887222	  0.99940462  0.49325075
+8382	 -6.27328481	 -0.00036916	  0.00022615	  7.27291565	  0.99887236	  0.99940469  0.49325074
+8383	 -6.27328491	 -0.00036912	  0.00022612	  7.27291580	  0.99887249	  0.99940476  0.49325076
+8384	 -6.27328502	 -0.00036907	  0.00022609	  7.27291595	  0.99887263	  0.99940483  0.49325069
+8385	 -6.27328512	 -0.00036903	  0.00022607	  7.27291610	  0.99887276	  0.99940491  0.49325089
+8386	 -6.27328523	 -0.00036898	  0.00022604	  7.27291624	  0.99887290	  0.99940498  0.49325087
+8387	 -6.27328533	 -0.00036894	  0.00022601	  7.27291639	  0.99887303	  0.99940505  0.49325089
+8388	 -6.27328544	 -0.00036890	  0.00022599	  7.27291654	  0.99887316	  0.99940512  0.49325087
+8389	 -6.27328555	 -0.00036885	  0.00022596	  7.27291669	  0.99887330	  0.99940519  0.49325085
+8390	 -6.27328565	 -0.00036881	  0.00022593	  7.27291684	  0.99887343	  0.99940526  0.49325080
+8391	 -6.27328576	 -0.00036876	  0.00022590	  7.27291699	  0.99887357	  0.99940533  0.49325071
+8392	 -6.27328586	 -0.00036872	  0.00022588	  7.27291714	  0.99887370	  0.99940540  0.49325095
+8393	 -6.27328597	 -0.00036868	  0.00022585	  7.27291729	  0.99887384	  0.99940547  0.49325080
+8394	 -6.27328607	 -0.00036863	  0.00022582	  7.27291744	  0.99887397	  0.99940554  0.49325088
+8395	 -6.27328618	 -0.00036859	  0.00022580	  7.27291759	  0.99887410	  0.99940561  0.49325100
+8396	 -6.27328628	 -0.00036855	  0.00022577	  7.27291774	  0.99887424	  0.99940568  0.49325106
+8397	 -6.27328639	 -0.00036850	  0.00022574	  7.27291789	  0.99887437	  0.99940576  0.49325085
+8398	 -6.27328649	 -0.00036846	  0.00022572	  7.27291803	  0.99887451	  0.99940583  0.49325087
+8399	 -6.27328660	 -0.00036841	  0.00022569	  7.27291818	  0.99887464	  0.99940590  0.49325084
+8400	 -6.27328670	 -0.00036837	  0.00022566	  7.27291833	  0.99887477	  0.99940597  0.49325118
+8401	 -6.27328681	 -0.00036833	  0.00022564	  7.27291848	  0.99887491	  0.99940604  0.49325112
+8402	 -6.27328691	 -0.00036828	  0.00022561	  7.27291863	  0.99887504	  0.99940611  0.49325104
+8403	 -6.27328702	 -0.00036824	  0.00022558	  7.27291878	  0.99887518	  0.99940618  0.49325104
+8404	 -6.27328712	 -0.00036819	  0.00022556	  7.27291893	  0.99887531	  0.99940625  0.49325116
+8405	 -6.27328723	 -0.00036815	  0.00022553	  7.27291907	  0.99887544	  0.99940632  0.49325111
+8406	 -6.27328733	 -0.00036811	  0.00022550	  7.27291922	  0.99887558	  0.99940639  0.49325116
+8407	 -6.27328744	 -0.00036806	  0.00022547	  7.27291937	  0.99887571	  0.99940646  0.49325108
+8408	 -6.27328754	 -0.00036802	  0.00022545	  7.27291952	  0.99887584	  0.99940653  0.49325111
+8409	 -6.27328764	 -0.00036798	  0.00022542	  7.27291967	  0.99887598	  0.99940660  0.49325113
+8410	 -6.27328775	 -0.00036793	  0.00022539	  7.27291982	  0.99887611	  0.99940667  0.49325130
+8411	 -6.27328785	 -0.00036789	  0.00022537	  7.27291997	  0.99887625	  0.99940674  0.49325114
+8412	 -6.27328796	 -0.00036784	  0.00022534	  7.27292011	  0.99887638	  0.99940681  0.49325125
+8413	 -6.27328806	 -0.00036780	  0.00022531	  7.27292026	  0.99887651	  0.99940689  0.49325120
+8414	 -6.27328817	 -0.00036776	  0.00022529	  7.27292041	  0.99887665	  0.99940696  0.49325118
+8415	 -6.27328827	 -0.00036771	  0.00022526	  7.27292056	  0.99887678	  0.99940703  0.49325120
+8416	 -6.27328838	 -0.00036767	  0.00022523	  7.27292071	  0.99887691	  0.99940710  0.49325135
+8417	 -6.27328848	 -0.00036763	  0.00022521	  7.27292086	  0.99887705	  0.99940717  0.49325134
+8418	 -6.27328859	 -0.00036758	  0.00022518	  7.27292100	  0.99887718	  0.99940724  0.49325139
+8419	 -6.27328869	 -0.00036754	  0.00022515	  7.27292115	  0.99887731	  0.99940731  0.49325135
+8420	 -6.27328880	 -0.00036749	  0.00022513	  7.27292130	  0.99887745	  0.99940738  0.49325126
+8421	 -6.27328890	 -0.00036745	  0.00022510	  7.27292145	  0.99887758	  0.99940745  0.49325131
+8422	 -6.27328900	 -0.00036741	  0.00022507	  7.27292160	  0.99887771	  0.99940752  0.49325136
+8423	 -6.27328911	 -0.00036736	  0.00022505	  7.27292174	  0.99887785	  0.99940759  0.49325152
+8424	 -6.27328921	 -0.00036732	  0.00022502	  7.27292189	  0.99887798	  0.99940766  0.49325159
+8425	 -6.27328932	 -0.00036728	  0.00022499	  7.27292204	  0.99887811	  0.99940773  0.49325140
+8426	 -6.27328942	 -0.00036723	  0.00022497	  7.27292219	  0.99887825	  0.99940780  0.49325141
+8427	 -6.27328953	 -0.00036719	  0.00022494	  7.27292234	  0.99887838	  0.99940787  0.49325131
+8428	 -6.27328963	 -0.00036715	  0.00022491	  7.27292248	  0.99887851	  0.99940794  0.49325145
+8429	 -6.27328973	 -0.00036710	  0.00022489	  7.27292263	  0.99887864	  0.99940801  0.49325145
+8430	 -6.27328984	 -0.00036706	  0.00022486	  7.27292278	  0.99887878	  0.99940808  0.49325157
+8431	 -6.27328994	 -0.00036702	  0.00022483	  7.27292293	  0.99887891	  0.99940815  0.49325149
+8432	 -6.27329005	 -0.00036697	  0.00022481	  7.27292307	  0.99887904	  0.99940822  0.49325164
+8433	 -6.27329015	 -0.00036693	  0.00022478	  7.27292322	  0.99887918	  0.99940829  0.49325155
+8434	 -6.27329025	 -0.00036689	  0.00022475	  7.27292337	  0.99887931	  0.99940836  0.49325164
+8435	 -6.27329036	 -0.00036684	  0.00022473	  7.27292352	  0.99887944	  0.99940843  0.49325151
+8436	 -6.27329046	 -0.00036680	  0.00022470	  7.27292366	  0.99887958	  0.99940850  0.49325168
+8437	 -6.27329057	 -0.00036675	  0.00022467	  7.27292381	  0.99887971	  0.99940857  0.49325138
+8438	 -6.27329067	 -0.00036671	  0.00022465	  7.27292396	  0.99887984	  0.99940864  0.49325171
+8439	 -6.27329078	 -0.00036667	  0.00022462	  7.27292411	  0.99887997	  0.99940871  0.49325159
+8440	 -6.27329088	 -0.00036662	  0.00022459	  7.27292425	  0.99888011	  0.99940878  0.49325160
+8441	 -6.27329098	 -0.00036658	  0.00022457	  7.27292440	  0.99888024	  0.99940885  0.49325177
+8442	 -6.27329109	 -0.00036654	  0.00022454	  7.27292455	  0.99888037	  0.99940892  0.49325177
+8443	 -6.27329119	 -0.00036649	  0.00022451	  7.27292470	  0.99888050	  0.99940899  0.49325164
+8444	 -6.27329129	 -0.00036645	  0.00022449	  7.27292484	  0.99888064	  0.99940906  0.49325172
+8445	 -6.27329140	 -0.00036641	  0.00022446	  7.27292499	  0.99888077	  0.99940913  0.49325179
+8446	 -6.27329150	 -0.00036636	  0.00022443	  7.27292514	  0.99888090	  0.99940920  0.49325181
+8447	 -6.27329161	 -0.00036632	  0.00022441	  7.27292529	  0.99888103	  0.99940927  0.49325178
+8448	 -6.27329171	 -0.00036628	  0.00022438	  7.27292543	  0.99888117	  0.99940934  0.49325178
+8449	 -6.27329181	 -0.00036623	  0.00022435	  7.27292558	  0.99888130	  0.99940941  0.49325183
+8450	 -6.27329192	 -0.00036619	  0.00022433	  7.27292573	  0.99888143	  0.99940948  0.49325179
+8451	 -6.27329202	 -0.00036615	  0.00022430	  7.27292587	  0.99888156	  0.99940955  0.49325183
+8452	 -6.27329212	 -0.00036610	  0.00022427	  7.27292602	  0.99888170	  0.99940962  0.49325178
+8453	 -6.27329223	 -0.00036606	  0.00022425	  7.27292617	  0.99888183	  0.99940969  0.49325167
+8454	 -6.27329233	 -0.00036602	  0.00022422	  7.27292631	  0.99888196	  0.99940976  0.49325180
+8455	 -6.27329244	 -0.00036597	  0.00022419	  7.27292646	  0.99888209	  0.99940983  0.49325201
+8456	 -6.27329254	 -0.00036593	  0.00022417	  7.27292661	  0.99888222	  0.99940990  0.49325190
+8457	 -6.27329264	 -0.00036589	  0.00022414	  7.27292675	  0.99888236	  0.99940997  0.49325201
+8458	 -6.27329275	 -0.00036584	  0.00022412	  7.27292690	  0.99888249	  0.99941004  0.49325203
+8459	 -6.27329285	 -0.00036580	  0.00022409	  7.27292705	  0.99888262	  0.99941011  0.49325195
+8460	 -6.27329295	 -0.00036576	  0.00022406	  7.27292720	  0.99888275	  0.99941018  0.49325194
+8461	 -6.27329306	 -0.00036571	  0.00022404	  7.27292734	  0.99888289	  0.99941025  0.49325187
+8462	 -6.27329316	 -0.00036567	  0.00022401	  7.27292749	  0.99888302	  0.99941032  0.49325203
+8463	 -6.27329326	 -0.00036563	  0.00022398	  7.27292764	  0.99888315	  0.99941039  0.49325193
+8464	 -6.27329337	 -0.00036559	  0.00022396	  7.27292778	  0.99888328	  0.99941046  0.49325192
+8465	 -6.27329347	 -0.00036554	  0.00022393	  7.27292793	  0.99888341	  0.99941053  0.49325212
+8466	 -6.27329357	 -0.00036550	  0.00022390	  7.27292807	  0.99888355	  0.99941060  0.49325192
+8467	 -6.27329368	 -0.00036546	  0.00022388	  7.27292822	  0.99888368	  0.99941067  0.49325204
+8468	 -6.27329378	 -0.00036541	  0.00022385	  7.27292837	  0.99888381	  0.99941074  0.49325210
+8469	 -6.27329388	 -0.00036537	  0.00022382	  7.27292851	  0.99888394	  0.99941081  0.49325200
+8470	 -6.27329399	 -0.00036533	  0.00022380	  7.27292866	  0.99888407	  0.99941088  0.49325216
+8471	 -6.27329409	 -0.00036528	  0.00022377	  7.27292881	  0.99888420	  0.99941095  0.49325212
+8472	 -6.27329419	 -0.00036524	  0.00022374	  7.27292895	  0.99888434	  0.99941102  0.49325214
+8473	 -6.27329430	 -0.00036520	  0.00022372	  7.27292910	  0.99888447	  0.99941108  0.49325208
+8474	 -6.27329440	 -0.00036515	  0.00022369	  7.27292925	  0.99888460	  0.99941115  0.49325230
+8475	 -6.27329450	 -0.00036511	  0.00022367	  7.27292939	  0.99888473	  0.99941122  0.49325225
+8476	 -6.27329461	 -0.00036507	  0.00022364	  7.27292954	  0.99888486	  0.99941129  0.49325212
+8477	 -6.27329471	 -0.00036502	  0.00022361	  7.27292968	  0.99888499	  0.99941136  0.49325221
+8478	 -6.27329481	 -0.00036498	  0.00022359	  7.27292983	  0.99888513	  0.99941143  0.49325215
+8479	 -6.27329491	 -0.00036494	  0.00022356	  7.27292998	  0.99888526	  0.99941150  0.49325228
+8480	 -6.27329502	 -0.00036490	  0.00022353	  7.27293012	  0.99888539	  0.99941157  0.49325236
+8481	 -6.27329512	 -0.00036485	  0.00022351	  7.27293027	  0.99888552	  0.99941164  0.49325238
+8482	 -6.27329522	 -0.00036481	  0.00022348	  7.27293041	  0.99888565	  0.99941171  0.49325230
+8483	 -6.27329533	 -0.00036477	  0.00022345	  7.27293056	  0.99888578	  0.99941178  0.49325233
+8484	 -6.27329543	 -0.00036472	  0.00022343	  7.27293071	  0.99888591	  0.99941185  0.49325243
+8485	 -6.27329553	 -0.00036468	  0.00022340	  7.27293085	  0.99888605	  0.99941192  0.49325248
+8486	 -6.27329564	 -0.00036464	  0.00022338	  7.27293100	  0.99888618	  0.99941199  0.49325226
+8487	 -6.27329574	 -0.00036460	  0.00022335	  7.27293114	  0.99888631	  0.99941206  0.49325247
+8488	 -6.27329584	 -0.00036455	  0.00022332	  7.27293129	  0.99888644	  0.99941213  0.49325235
+8489	 -6.27329594	 -0.00036451	  0.00022330	  7.27293143	  0.99888657	  0.99941219  0.49325238
+8490	 -6.27329605	 -0.00036447	  0.00022327	  7.27293158	  0.99888670	  0.99941226  0.49325236
+8491	 -6.27329615	 -0.00036442	  0.00022324	  7.27293173	  0.99888683	  0.99941233  0.49325251
+8492	 -6.27329625	 -0.00036438	  0.00022322	  7.27293187	  0.99888696	  0.99941240  0.49325244
+8493	 -6.27329635	 -0.00036434	  0.00022319	  7.27293202	  0.99888709	  0.99941247  0.49325243
+8494	 -6.27329646	 -0.00036429	  0.00022317	  7.27293216	  0.99888723	  0.99941254  0.49325235
+8495	 -6.27329656	 -0.00036425	  0.00022314	  7.27293231	  0.99888736	  0.99941261  0.49325265
+8496	 -6.27329666	 -0.00036421	  0.00022311	  7.27293245	  0.99888749	  0.99941268  0.49325266
+8497	 -6.27329677	 -0.00036417	  0.00022309	  7.27293260	  0.99888762	  0.99941275  0.49325241
+8498	 -6.27329687	 -0.00036412	  0.00022306	  7.27293274	  0.99888775	  0.99941282  0.49325251
+8499	 -6.27329697	 -0.00036408	  0.00022303	  7.27293289	  0.99888788	  0.99941289  0.49325244
+8500	 -6.27329707	 -0.00036404	  0.00022301	  7.27293304	  0.99888801	  0.99941295  0.49325256
+8501	 -6.27329718	 -0.00036399	  0.00022298	  7.27293318	  0.99888814	  0.99941302  0.49325261
+8502	 -6.27329728	 -0.00036395	  0.00022296	  7.27293333	  0.99888827	  0.99941309  0.49325262
+8503	 -6.27329738	 -0.00036391	  0.00022293	  7.27293347	  0.99888840	  0.99941316  0.49325272
+8504	 -6.27329748	 -0.00036387	  0.00022290	  7.27293362	  0.99888853	  0.99941323  0.49325264
+8505	 -6.27329758	 -0.00036382	  0.00022288	  7.27293376	  0.99888866	  0.99941330  0.49325271
+8506	 -6.27329769	 -0.00036378	  0.00022285	  7.27293391	  0.99888879	  0.99941337  0.49325250
+8507	 -6.27329779	 -0.00036374	  0.00022282	  7.27293405	  0.99888893	  0.99941344  0.49325276
+8508	 -6.27329789	 -0.00036370	  0.00022280	  7.27293420	  0.99888906	  0.99941351  0.49325279
+8509	 -6.27329799	 -0.00036365	  0.00022277	  7.27293434	  0.99888919	  0.99941358  0.49325256
+8510	 -6.27329810	 -0.00036361	  0.00022275	  7.27293449	  0.99888932	  0.99941364  0.49325269
+8511	 -6.27329820	 -0.00036357	  0.00022272	  7.27293463	  0.99888945	  0.99941371  0.49325274
+8512	 -6.27329830	 -0.00036352	  0.00022269	  7.27293478	  0.99888958	  0.99941378  0.49325276
+8513	 -6.27329840	 -0.00036348	  0.00022267	  7.27293492	  0.99888971	  0.99941385  0.49325275
+8514	 -6.27329851	 -0.00036344	  0.00022264	  7.27293507	  0.99888984	  0.99941392  0.49325266
+8515	 -6.27329861	 -0.00036340	  0.00022261	  7.27293521	  0.99888997	  0.99941399  0.49325274
+8516	 -6.27329871	 -0.00036335	  0.00022259	  7.27293536	  0.99889010	  0.99941406  0.49325275
+8517	 -6.27329881	 -0.00036331	  0.00022256	  7.27293550	  0.99889023	  0.99941413  0.49325279
+8518	 -6.27329891	 -0.00036327	  0.00022254	  7.27293565	  0.99889036	  0.99941420  0.49325277
+8519	 -6.27329902	 -0.00036323	  0.00022251	  7.27293579	  0.99889049	  0.99941426  0.49325299
+8520	 -6.27329912	 -0.00036318	  0.00022248	  7.27293593	  0.99889062	  0.99941433  0.49325298
+8521	 -6.27329922	 -0.00036314	  0.00022246	  7.27293608	  0.99889075	  0.99941440  0.49325274
+8522	 -6.27329932	 -0.00036310	  0.00022243	  7.27293622	  0.99889088	  0.99941447  0.49325294
+8523	 -6.27329942	 -0.00036306	  0.00022241	  7.27293637	  0.99889101	  0.99941454  0.49325297
+8524	 -6.27329953	 -0.00036301	  0.00022238	  7.27293651	  0.99889114	  0.99941461  0.49325278
+8525	 -6.27329963	 -0.00036297	  0.00022235	  7.27293666	  0.99889127	  0.99941468  0.49325281
+8526	 -6.27329973	 -0.00036293	  0.00022233	  7.27293680	  0.99889140	  0.99941474  0.49325304
+8527	 -6.27329983	 -0.00036289	  0.00022230	  7.27293695	  0.99889153	  0.99941481  0.49325295
+8528	 -6.27329993	 -0.00036284	  0.00022228	  7.27293709	  0.99889166	  0.99941488  0.49325311
+8529	 -6.27330004	 -0.00036280	  0.00022225	  7.27293723	  0.99889179	  0.99941495  0.49325291
+8530	 -6.27330014	 -0.00036276	  0.00022222	  7.27293738	  0.99889192	  0.99941502  0.49325317
+8531	 -6.27330024	 -0.00036272	  0.00022220	  7.27293752	  0.99889205	  0.99941509  0.49325298
+8532	 -6.27330034	 -0.00036267	  0.00022217	  7.27293767	  0.99889218	  0.99941516  0.49325316
+8533	 -6.27330044	 -0.00036263	  0.00022215	  7.27293781	  0.99889231	  0.99941522  0.49325310
+8534	 -6.27330054	 -0.00036259	  0.00022212	  7.27293796	  0.99889244	  0.99941529  0.49325314
+8535	 -6.27330065	 -0.00036255	  0.00022209	  7.27293810	  0.99889257	  0.99941536  0.49325310
+8536	 -6.27330075	 -0.00036250	  0.00022207	  7.27293824	  0.99889270	  0.99941543  0.49325300
+8537	 -6.27330085	 -0.00036246	  0.00022204	  7.27293839	  0.99889283	  0.99941550  0.49325323
+8538	 -6.27330095	 -0.00036242	  0.00022202	  7.27293853	  0.99889296	  0.99941557  0.49325313
+8539	 -6.27330105	 -0.00036238	  0.00022199	  7.27293868	  0.99889309	  0.99941564  0.49325318
+8540	 -6.27330115	 -0.00036233	  0.00022196	  7.27293882	  0.99889322	  0.99941570  0.49325325
+8541	 -6.27330126	 -0.00036229	  0.00022194	  7.27293896	  0.99889335	  0.99941577  0.49325315
+8542	 -6.27330136	 -0.00036225	  0.00022191	  7.27293911	  0.99889348	  0.99941584  0.49325312
+8543	 -6.27330146	 -0.00036221	  0.00022189	  7.27293925	  0.99889361	  0.99941591  0.49325327
+8544	 -6.27330156	 -0.00036216	  0.00022186	  7.27293940	  0.99889374	  0.99941598  0.49325334
+8545	 -6.27330166	 -0.00036212	  0.00022183	  7.27293954	  0.99889387	  0.99941605  0.49325318
+8546	 -6.27330176	 -0.00036208	  0.00022181	  7.27293968	  0.99889400	  0.99941611  0.49325339
+8547	 -6.27330186	 -0.00036204	  0.00022178	  7.27293983	  0.99889412	  0.99941618  0.49325320
+8548	 -6.27330197	 -0.00036199	  0.00022176	  7.27293997	  0.99889425	  0.99941625  0.49325327
+8549	 -6.27330207	 -0.00036195	  0.00022173	  7.27294011	  0.99889438	  0.99941632  0.49325329
+8550	 -6.27330217	 -0.00036191	  0.00022170	  7.27294026	  0.99889451	  0.99941639  0.49325333
+8551	 -6.27330227	 -0.00036187	  0.00022168	  7.27294040	  0.99889464	  0.99941646  0.49325330
+8552	 -6.27330237	 -0.00036182	  0.00022165	  7.27294055	  0.99889477	  0.99941652  0.49325321
+8553	 -6.27330247	 -0.00036178	  0.00022163	  7.27294069	  0.99889490	  0.99941659  0.49325343
+8554	 -6.27330257	 -0.00036174	  0.00022160	  7.27294083	  0.99889503	  0.99941666  0.49325334
+8555	 -6.27330267	 -0.00036170	  0.00022157	  7.27294098	  0.99889516	  0.99941673  0.49325333
+8556	 -6.27330278	 -0.00036166	  0.00022155	  7.27294112	  0.99889529	  0.99941680  0.49325328
+8557	 -6.27330288	 -0.00036161	  0.00022152	  7.27294126	  0.99889542	  0.99941686  0.49325344
+8558	 -6.27330298	 -0.00036157	  0.00022150	  7.27294141	  0.99889555	  0.99941693  0.49325340
+8559	 -6.27330308	 -0.00036153	  0.00022147	  7.27294155	  0.99889568	  0.99941700  0.49325337
+8560	 -6.27330318	 -0.00036149	  0.00022144	  7.27294169	  0.99889580	  0.99941707  0.49325346
+8561	 -6.27330328	 -0.00036144	  0.00022142	  7.27294184	  0.99889593	  0.99941714  0.49325350
+8562	 -6.27330338	 -0.00036140	  0.00022139	  7.27294198	  0.99889606	  0.99941720  0.49325355
+8563	 -6.27330348	 -0.00036136	  0.00022137	  7.27294212	  0.99889619	  0.99941727  0.49325362
+8564	 -6.27330358	 -0.00036132	  0.00022134	  7.27294227	  0.99889632	  0.99941734  0.49325356
+8565	 -6.27330368	 -0.00036128	  0.00022132	  7.27294241	  0.99889645	  0.99941741  0.49325360
+8566	 -6.27330379	 -0.00036123	  0.00022129	  7.27294255	  0.99889658	  0.99941748  0.49325348
+8567	 -6.27330389	 -0.00036119	  0.00022126	  7.27294269	  0.99889671	  0.99941754  0.49325378
+8568	 -6.27330399	 -0.00036115	  0.00022124	  7.27294284	  0.99889684	  0.99941761  0.49325364
+8569	 -6.27330409	 -0.00036111	  0.00022121	  7.27294298	  0.99889696	  0.99941768  0.49325361
+8570	 -6.27330419	 -0.00036107	  0.00022119	  7.27294312	  0.99889709	  0.99941775  0.49325386
+8571	 -6.27330429	 -0.00036102	  0.00022116	  7.27294327	  0.99889722	  0.99941782  0.49325359
+8572	 -6.27330439	 -0.00036098	  0.00022113	  7.27294341	  0.99889735	  0.99941788  0.49325371
+8573	 -6.27330449	 -0.00036094	  0.00022111	  7.27294355	  0.99889748	  0.99941795  0.49325375
+8574	 -6.27330459	 -0.00036090	  0.00022108	  7.27294370	  0.99889761	  0.99941802  0.49325371
+8575	 -6.27330469	 -0.00036085	  0.00022106	  7.27294384	  0.99889774	  0.99941809  0.49325378
+8576	 -6.27330479	 -0.00036081	  0.00022103	  7.27294398	  0.99889786	  0.99941816  0.49325370
+8577	 -6.27330489	 -0.00036077	  0.00022101	  7.27294412	  0.99889799	  0.99941822  0.49325364
+8578	 -6.27330499	 -0.00036073	  0.00022098	  7.27294427	  0.99889812	  0.99941829  0.49325373
+8579	 -6.27330510	 -0.00036069	  0.00022095	  7.27294441	  0.99889825	  0.99941836  0.49325372
+8580	 -6.27330520	 -0.00036064	  0.00022093	  7.27294455	  0.99889838	  0.99941843  0.49325391
+8581	 -6.27330530	 -0.00036060	  0.00022090	  7.27294469	  0.99889851	  0.99941849  0.49325378
+8582	 -6.27330540	 -0.00036056	  0.00022088	  7.27294484	  0.99889863	  0.99941856  0.49325387
+8583	 -6.27330550	 -0.00036052	  0.00022085	  7.27294498	  0.99889876	  0.99941863  0.49325370
+8584	 -6.27330560	 -0.00036048	  0.00022083	  7.27294512	  0.99889889	  0.99941870  0.49325386
+8585	 -6.27330570	 -0.00036043	  0.00022080	  7.27294526	  0.99889902	  0.99941877  0.49325387
+8586	 -6.27330580	 -0.00036039	  0.00022077	  7.27294541	  0.99889915	  0.99941883  0.49325384
+8587	 -6.27330590	 -0.00036035	  0.00022075	  7.27294555	  0.99889928	  0.99941890  0.49325392
+8588	 -6.27330600	 -0.00036031	  0.00022072	  7.27294569	  0.99889940	  0.99941897  0.49325387
+8589	 -6.27330610	 -0.00036027	  0.00022070	  7.27294583	  0.99889953	  0.99941904  0.49325390
+8590	 -6.27330620	 -0.00036023	  0.00022067	  7.27294598	  0.99889966	  0.99941910  0.49325400
+8591	 -6.27330630	 -0.00036018	  0.00022065	  7.27294612	  0.99889979	  0.99941917  0.49325409
+8592	 -6.27330640	 -0.00036014	  0.00022062	  7.27294626	  0.99889992	  0.99941924  0.49325386
+8593	 -6.27330650	 -0.00036010	  0.00022059	  7.27294640	  0.99890004	  0.99941931  0.49325408
+8594	 -6.27330660	 -0.00036006	  0.00022057	  7.27294654	  0.99890017	  0.99941937  0.49325391
+8595	 -6.27330670	 -0.00036002	  0.00022054	  7.27294669	  0.99890030	  0.99941944  0.49325389
+8596	 -6.27330680	 -0.00035997	  0.00022052	  7.27294683	  0.99890043	  0.99941951  0.49325379
+8597	 -6.27330690	 -0.00035993	  0.00022049	  7.27294697	  0.99890056	  0.99941958  0.49325409
+8598	 -6.27330700	 -0.00035989	  0.00022047	  7.27294711	  0.99890068	  0.99941964  0.49325388
+8599	 -6.27330710	 -0.00035985	  0.00022044	  7.27294726	  0.99890081	  0.99941971  0.49325402
+8600	 -6.27330720	 -0.00035981	  0.00022041	  7.27294740	  0.99890094	  0.99941978  0.49325423
+8601	 -6.27330730	 -0.00035976	  0.00022039	  7.27294754	  0.99890107	  0.99941985  0.49325405
+8602	 -6.27330740	 -0.00035972	  0.00022036	  7.27294768	  0.99890119	  0.99941991  0.49325402
+8603	 -6.27330750	 -0.00035968	  0.00022034	  7.27294782	  0.99890132	  0.99941998  0.49325409
+8604	 -6.27330760	 -0.00035964	  0.00022031	  7.27294796	  0.99890145	  0.99942005  0.49325408
+8605	 -6.27330770	 -0.00035960	  0.00022029	  7.27294811	  0.99890158	  0.99942012  0.49325430
+8606	 -6.27330780	 -0.00035956	  0.00022026	  7.27294825	  0.99890171	  0.99942018  0.49325412
+8607	 -6.27330790	 -0.00035951	  0.00022024	  7.27294839	  0.99890183	  0.99942025  0.49325410
+8608	 -6.27330800	 -0.00035947	  0.00022021	  7.27294853	  0.99890196	  0.99942032  0.49325444
+8609	 -6.27330810	 -0.00035943	  0.00022018	  7.27294867	  0.99890209	  0.99942039  0.49325431
+8610	 -6.27330820	 -0.00035939	  0.00022016	  7.27294882	  0.99890222	  0.99942045  0.49325422
+8611	 -6.27330830	 -0.00035935	  0.00022013	  7.27294896	  0.99890234	  0.99942052  0.49325435
+8612	 -6.27330840	 -0.00035931	  0.00022011	  7.27294910	  0.99890247	  0.99942059  0.49325426
+8613	 -6.27330850	 -0.00035926	  0.00022008	  7.27294924	  0.99890260	  0.99942065  0.49325433
+8614	 -6.27330860	 -0.00035922	  0.00022006	  7.27294938	  0.99890273	  0.99942072  0.49325432
+8615	 -6.27330870	 -0.00035918	  0.00022003	  7.27294952	  0.99890285	  0.99942079  0.49325444
+8616	 -6.27330880	 -0.00035914	  0.00022001	  7.27294966	  0.99890298	  0.99942086  0.49325435
+8617	 -6.27330890	 -0.00035910	  0.00021998	  7.27294981	  0.99890311	  0.99942092  0.49325422
+8618	 -6.27330900	 -0.00035906	  0.00021995	  7.27294995	  0.99890323	  0.99942099  0.49325439
+8619	 -6.27330910	 -0.00035901	  0.00021993	  7.27295009	  0.99890336	  0.99942106  0.49325438
+8620	 -6.27330920	 -0.00035897	  0.00021990	  7.27295023	  0.99890349	  0.99942113  0.49325454
+8621	 -6.27330930	 -0.00035893	  0.00021988	  7.27295037	  0.99890362	  0.99942119  0.49325448
+8622	 -6.27330940	 -0.00035889	  0.00021985	  7.27295051	  0.99890374	  0.99942126  0.49325441
+8623	 -6.27330950	 -0.00035885	  0.00021983	  7.27295065	  0.99890387	  0.99942133  0.49325438
+8624	 -6.27330960	 -0.00035881	  0.00021980	  7.27295079	  0.99890400	  0.99942139  0.49325444
+8625	 -6.27330970	 -0.00035876	  0.00021978	  7.27295094	  0.99890412	  0.99942146  0.49325455
+8626	 -6.27330980	 -0.00035872	  0.00021975	  7.27295108	  0.99890425	  0.99942153  0.49325435
+8627	 -6.27330990	 -0.00035868	  0.00021972	  7.27295122	  0.99890438	  0.99942159  0.49325446
+8628	 -6.27331000	 -0.00035864	  0.00021970	  7.27295136	  0.99890451	  0.99942166  0.49325463
+8629	 -6.27331010	 -0.00035860	  0.00021967	  7.27295150	  0.99890463	  0.99942173  0.49325459
+8630	 -6.27331020	 -0.00035856	  0.00021965	  7.27295164	  0.99890476	  0.99942180  0.49325444
+8631	 -6.27331030	 -0.00035851	  0.00021962	  7.27295178	  0.99890489	  0.99942186  0.49325446
+8632	 -6.27331040	 -0.00035847	  0.00021960	  7.27295192	  0.99890501	  0.99942193  0.49325470
+8633	 -6.27331050	 -0.00035843	  0.00021957	  7.27295206	  0.99890514	  0.99942200  0.49325447
+8634	 -6.27331059	 -0.00035839	  0.00021955	  7.27295220	  0.99890527	  0.99942206  0.49325451
+8635	 -6.27331069	 -0.00035835	  0.00021952	  7.27295235	  0.99890539	  0.99942213  0.49325471
+8636	 -6.27331079	 -0.00035831	  0.00021950	  7.27295249	  0.99890552	  0.99942220  0.49325479
+8637	 -6.27331089	 -0.00035827	  0.00021947	  7.27295263	  0.99890565	  0.99942226  0.49325465
+8638	 -6.27331099	 -0.00035822	  0.00021944	  7.27295277	  0.99890577	  0.99942233  0.49325460
+8639	 -6.27331109	 -0.00035818	  0.00021942	  7.27295291	  0.99890590	  0.99942240  0.49325463
+8640	 -6.27331119	 -0.00035814	  0.00021939	  7.27295305	  0.99890603	  0.99942246  0.49325475
+8641	 -6.27331129	 -0.00035810	  0.00021937	  7.27295319	  0.99890615	  0.99942253  0.49325484
+8642	 -6.27331139	 -0.00035806	  0.00021934	  7.27295333	  0.99890628	  0.99942260  0.49325478
+8643	 -6.27331149	 -0.00035802	  0.00021932	  7.27295347	  0.99890641	  0.99942267  0.49325476
+8644	 -6.27331159	 -0.00035798	  0.00021929	  7.27295361	  0.99890653	  0.99942273  0.49325474
+8645	 -6.27331169	 -0.00035793	  0.00021927	  7.27295375	  0.99890666	  0.99942280  0.49325471
+8646	 -6.27331179	 -0.00035789	  0.00021924	  7.27295389	  0.99890679	  0.99942287  0.49325479
+8647	 -6.27331188	 -0.00035785	  0.00021922	  7.27295403	  0.99890691	  0.99942293  0.49325475
+8648	 -6.27331198	 -0.00035781	  0.00021919	  7.27295417	  0.99890704	  0.99942300  0.49325483
+8649	 -6.27331208	 -0.00035777	  0.00021917	  7.27295431	  0.99890717	  0.99942307  0.49325488
+8650	 -6.27331218	 -0.00035773	  0.00021914	  7.27295445	  0.99890729	  0.99942313  0.49325468
+8651	 -6.27331228	 -0.00035769	  0.00021911	  7.27295459	  0.99890742	  0.99942320  0.49325487
+8652	 -6.27331238	 -0.00035764	  0.00021909	  7.27295473	  0.99890754	  0.99942327  0.49325491
+8653	 -6.27331248	 -0.00035760	  0.00021906	  7.27295487	  0.99890767	  0.99942333  0.49325485
+8654	 -6.27331258	 -0.00035756	  0.00021904	  7.27295501	  0.99890780	  0.99942340  0.49325494
+8655	 -6.27331268	 -0.00035752	  0.00021901	  7.27295515	  0.99890792	  0.99942347  0.49325489
+8656	 -6.27331277	 -0.00035748	  0.00021899	  7.27295529	  0.99890805	  0.99942353  0.49325507
+8657	 -6.27331287	 -0.00035744	  0.00021896	  7.27295544	  0.99890818	  0.99942360  0.49325487
+8658	 -6.27331297	 -0.00035740	  0.00021894	  7.27295558	  0.99890830	  0.99942367  0.49325485
+8659	 -6.27331307	 -0.00035736	  0.00021891	  7.27295572	  0.99890843	  0.99942373  0.49325494
+8660	 -6.27331317	 -0.00035731	  0.00021889	  7.27295586	  0.99890855	  0.99942380  0.49325502
+8661	 -6.27331327	 -0.00035727	  0.00021886	  7.27295600	  0.99890868	  0.99942386  0.49325506
+8662	 -6.27331337	 -0.00035723	  0.00021884	  7.27295614	  0.99890881	  0.99942393  0.49325501
+8663	 -6.27331347	 -0.00035719	  0.00021881	  7.27295628	  0.99890893	  0.99942400  0.49325503
+8664	 -6.27331356	 -0.00035715	  0.00021879	  7.27295642	  0.99890906	  0.99942406  0.49325490
+8665	 -6.27331366	 -0.00035711	  0.00021876	  7.27295655	  0.99890918	  0.99942413  0.49325500
+8666	 -6.27331376	 -0.00035707	  0.00021874	  7.27295669	  0.99890931	  0.99942420  0.49325510
+8667	 -6.27331386	 -0.00035703	  0.00021871	  7.27295683	  0.99890943	  0.99942426  0.49325499
+8668	 -6.27331396	 -0.00035698	  0.00021869	  7.27295697	  0.99890956	  0.99942433  0.49325505
+8669	 -6.27331406	 -0.00035694	  0.00021866	  7.27295711	  0.99890969	  0.99942440  0.49325506
+8670	 -6.27331416	 -0.00035690	  0.00021863	  7.27295725	  0.99890981	  0.99942446  0.49325523
+8671	 -6.27331425	 -0.00035686	  0.00021861	  7.27295739	  0.99890994	  0.99942453  0.49325511
+8672	 -6.27331435	 -0.00035682	  0.00021858	  7.27295753	  0.99891006	  0.99942460  0.49325502
+8673	 -6.27331445	 -0.00035678	  0.00021856	  7.27295767	  0.99891019	  0.99942466  0.49325512
+8674	 -6.27331455	 -0.00035674	  0.00021853	  7.27295781	  0.99891032	  0.99942473  0.49325535
+8675	 -6.27331465	 -0.00035670	  0.00021851	  7.27295795	  0.99891044	  0.99942479  0.49325526
+8676	 -6.27331475	 -0.00035666	  0.00021848	  7.27295809	  0.99891057	  0.99942486  0.49325504
+8677	 -6.27331485	 -0.00035661	  0.00021846	  7.27295823	  0.99891069	  0.99942493  0.49325512
+8678	 -6.27331494	 -0.00035657	  0.00021843	  7.27295837	  0.99891082	  0.99942499  0.49325533
+8679	 -6.27331504	 -0.00035653	  0.00021841	  7.27295851	  0.99891094	  0.99942506  0.49325523
+8680	 -6.27331514	 -0.00035649	  0.00021838	  7.27295865	  0.99891107	  0.99942513  0.49325528
+8681	 -6.27331524	 -0.00035645	  0.00021836	  7.27295879	  0.99891119	  0.99942519  0.49325526
+8682	 -6.27331534	 -0.00035641	  0.00021833	  7.27295893	  0.99891132	  0.99942526  0.49325527
+8683	 -6.27331543	 -0.00035637	  0.00021831	  7.27295907	  0.99891144	  0.99942532  0.49325541
+8684	 -6.27331553	 -0.00035633	  0.00021828	  7.27295921	  0.99891157	  0.99942539  0.49325526
+8685	 -6.27331563	 -0.00035629	  0.00021826	  7.27295935	  0.99891169	  0.99942546  0.49325518
+8686	 -6.27331573	 -0.00035625	  0.00021823	  7.27295948	  0.99891182	  0.99942552  0.49325527
+8687	 -6.27331583	 -0.00035620	  0.00021821	  7.27295962	  0.99891195	  0.99942559  0.49325543
+8688	 -6.27331593	 -0.00035616	  0.00021818	  7.27295976	  0.99891207	  0.99942566  0.49325535
+8689	 -6.27331602	 -0.00035612	  0.00021816	  7.27295990	  0.99891220	  0.99942572  0.49325531
+8690	 -6.27331612	 -0.00035608	  0.00021813	  7.27296004	  0.99891232	  0.99942579  0.49325537
+8691	 -6.27331622	 -0.00035604	  0.00021811	  7.27296018	  0.99891245	  0.99942585  0.49325536
+8692	 -6.27331632	 -0.00035600	  0.00021808	  7.27296032	  0.99891257	  0.99942592  0.49325546
+8693	 -6.27331642	 -0.00035596	  0.00021806	  7.27296046	  0.99891270	  0.99942599  0.49325549
+8694	 -6.27331651	 -0.00035592	  0.00021803	  7.27296060	  0.99891282	  0.99942605  0.49325546
+8695	 -6.27331661	 -0.00035588	  0.00021801	  7.27296074	  0.99891295	  0.99942612  0.49325542
+8696	 -6.27331671	 -0.00035584	  0.00021798	  7.27296087	  0.99891307	  0.99942618  0.49325537
+8697	 -6.27331681	 -0.00035579	  0.00021796	  7.27296101	  0.99891320	  0.99942625  0.49325535
+8698	 -6.27331691	 -0.00035575	  0.00021793	  7.27296115	  0.99891332	  0.99942632  0.49325540
+8699	 -6.27331700	 -0.00035571	  0.00021791	  7.27296129	  0.99891345	  0.99942638  0.49325546
+8700	 -6.27331710	 -0.00035567	  0.00021788	  7.27296143	  0.99891357	  0.99942645  0.49325545
+8701	 -6.27331720	 -0.00035563	  0.00021786	  7.27296157	  0.99891370	  0.99942651  0.49325569
+8702	 -6.27331730	 -0.00035559	  0.00021783	  7.27296171	  0.99891382	  0.99942658  0.49325550
+8703	 -6.27331740	 -0.00035555	  0.00021781	  7.27296185	  0.99891395	  0.99942664  0.49325563
+8704	 -6.27331749	 -0.00035551	  0.00021778	  7.27296198	  0.99891407	  0.99942671  0.49325568
+8705	 -6.27331759	 -0.00035547	  0.00021776	  7.27296212	  0.99891420	  0.99942678  0.49325547
+8706	 -6.27331769	 -0.00035543	  0.00021773	  7.27296226	  0.99891432	  0.99942684  0.49325550
+8707	 -6.27331779	 -0.00035539	  0.00021771	  7.27296240	  0.99891444	  0.99942691  0.49325571
+8708	 -6.27331788	 -0.00035535	  0.00021768	  7.27296254	  0.99891457	  0.99942697  0.49325568
+8709	 -6.27331798	 -0.00035530	  0.00021766	  7.27296268	  0.99891469	  0.99942704  0.49325562
+8710	 -6.27331808	 -0.00035526	  0.00021763	  7.27296281	  0.99891482	  0.99942711  0.49325569
+8711	 -6.27331818	 -0.00035522	  0.00021761	  7.27296295	  0.99891494	  0.99942717  0.49325576
+8712	 -6.27331827	 -0.00035518	  0.00021758	  7.27296309	  0.99891507	  0.99942724  0.49325584
+8713	 -6.27331837	 -0.00035514	  0.00021756	  7.27296323	  0.99891519	  0.99942730  0.49325572
+8714	 -6.27331847	 -0.00035510	  0.00021753	  7.27296337	  0.99891532	  0.99942737  0.49325557
+8715	 -6.27331857	 -0.00035506	  0.00021751	  7.27296351	  0.99891544	  0.99942743  0.49325555
+8716	 -6.27331866	 -0.00035502	  0.00021748	  7.27296364	  0.99891557	  0.99942750  0.49325590
+8717	 -6.27331876	 -0.00035498	  0.00021746	  7.27296378	  0.99891569	  0.99942757  0.49325582
+8718	 -6.27331886	 -0.00035494	  0.00021743	  7.27296392	  0.99891581	  0.99942763  0.49325599
+8719	 -6.27331896	 -0.00035490	  0.00021741	  7.27296406	  0.99891594	  0.99942770  0.49325596
+8720	 -6.27331905	 -0.00035486	  0.00021738	  7.27296420	  0.99891606	  0.99942776  0.49325600
+8721	 -6.27331915	 -0.00035482	  0.00021736	  7.27296434	  0.99891619	  0.99942783  0.49325578
+8722	 -6.27331925	 -0.00035478	  0.00021733	  7.27296447	  0.99891631	  0.99942789  0.49325597
+8723	 -6.27331935	 -0.00035473	  0.00021731	  7.27296461	  0.99891644	  0.99942796  0.49325578
+8724	 -6.27331944	 -0.00035469	  0.00021728	  7.27296475	  0.99891656	  0.99942802  0.49325601
+8725	 -6.27331954	 -0.00035465	  0.00021726	  7.27296489	  0.99891668	  0.99942809  0.49325574
+8726	 -6.27331964	 -0.00035461	  0.00021723	  7.27296503	  0.99891681	  0.99942816  0.49325598
+8727	 -6.27331974	 -0.00035457	  0.00021721	  7.27296516	  0.99891693	  0.99942822  0.49325602
+8728	 -6.27331983	 -0.00035453	  0.00021718	  7.27296530	  0.99891706	  0.99942829  0.49325595
+8729	 -6.27331993	 -0.00035449	  0.00021716	  7.27296544	  0.99891718	  0.99942835  0.49325608
+8730	 -6.27332003	 -0.00035445	  0.00021713	  7.27296558	  0.99891730	  0.99942842  0.49325597
+8731	 -6.27332012	 -0.00035441	  0.00021711	  7.27296571	  0.99891743	  0.99942848  0.49325598
+8732	 -6.27332022	 -0.00035437	  0.00021708	  7.27296585	  0.99891755	  0.99942855  0.49325613
+8733	 -6.27332032	 -0.00035433	  0.00021706	  7.27296599	  0.99891768	  0.99942861  0.49325588
+8734	 -6.27332042	 -0.00035429	  0.00021703	  7.27296613	  0.99891780	  0.99942868  0.49325598
+8735	 -6.27332051	 -0.00035425	  0.00021701	  7.27296626	  0.99891792	  0.99942874  0.49325592
+8736	 -6.27332061	 -0.00035421	  0.00021698	  7.27296640	  0.99891805	  0.99942881  0.49325612
+8737	 -6.27332071	 -0.00035417	  0.00021696	  7.27296654	  0.99891817	  0.99942888  0.49325620
+8738	 -6.27332080	 -0.00035413	  0.00021693	  7.27296668	  0.99891830	  0.99942894  0.49325610
+8739	 -6.27332090	 -0.00035409	  0.00021691	  7.27296681	  0.99891842	  0.99942901  0.49325614
+8740	 -6.27332100	 -0.00035405	  0.00021688	  7.27296695	  0.99891854	  0.99942907  0.49325612
+8741	 -6.27332109	 -0.00035400	  0.00021686	  7.27296709	  0.99891867	  0.99942914  0.49325613
+8742	 -6.27332119	 -0.00035396	  0.00021683	  7.27296723	  0.99891879	  0.99942920  0.49325604
+8743	 -6.27332129	 -0.00035392	  0.00021681	  7.27296736	  0.99891891	  0.99942927  0.49325626
+8744	 -6.27332139	 -0.00035388	  0.00021678	  7.27296750	  0.99891904	  0.99942933  0.49325625
+8745	 -6.27332148	 -0.00035384	  0.00021676	  7.27296764	  0.99891916	  0.99942940  0.49325605
+8746	 -6.27332158	 -0.00035380	  0.00021673	  7.27296778	  0.99891928	  0.99942946  0.49325626
+8747	 -6.27332168	 -0.00035376	  0.00021671	  7.27296791	  0.99891941	  0.99942953  0.49325629
+8748	 -6.27332177	 -0.00035372	  0.00021669	  7.27296805	  0.99891953	  0.99942959  0.49325630
+8749	 -6.27332187	 -0.00035368	  0.00021666	  7.27296819	  0.99891966	  0.99942966  0.49325628
+8750	 -6.27332197	 -0.00035364	  0.00021664	  7.27296833	  0.99891978	  0.99942972  0.49325635
+8751	 -6.27332206	 -0.00035360	  0.00021661	  7.27296846	  0.99891990	  0.99942979  0.49325625
+8752	 -6.27332216	 -0.00035356	  0.00021659	  7.27296860	  0.99892003	  0.99942985  0.49325617
+8753	 -6.27332226	 -0.00035352	  0.00021656	  7.27296874	  0.99892015	  0.99942992  0.49325641
+8754	 -6.27332235	 -0.00035348	  0.00021654	  7.27296887	  0.99892027	  0.99942998  0.49325636
+8755	 -6.27332245	 -0.00035344	  0.00021651	  7.27296901	  0.99892040	  0.99943005  0.49325630
+8756	 -6.27332255	 -0.00035340	  0.00021649	  7.27296915	  0.99892052	  0.99943011  0.49325637
+8757	 -6.27332264	 -0.00035336	  0.00021646	  7.27296928	  0.99892064	  0.99943018  0.49325631
+8758	 -6.27332274	 -0.00035332	  0.00021644	  7.27296942	  0.99892077	  0.99943024  0.49325656
+8759	 -6.27332284	 -0.00035328	  0.00021641	  7.27296956	  0.99892089	  0.99943031  0.49325631
+8760	 -6.27332293	 -0.00035324	  0.00021639	  7.27296970	  0.99892101	  0.99943037  0.49325638
+8761	 -6.27332303	 -0.00035320	  0.00021636	  7.27296983	  0.99892114	  0.99943044  0.49325647
+8762	 -6.27332313	 -0.00035316	  0.00021634	  7.27296997	  0.99892126	  0.99943050  0.49325639
+8763	 -6.27332322	 -0.00035312	  0.00021631	  7.27297011	  0.99892138	  0.99943057  0.49325638
+8764	 -6.27332332	 -0.00035308	  0.00021629	  7.27297024	  0.99892150	  0.99943063  0.49325638
+8765	 -6.27332341	 -0.00035304	  0.00021626	  7.27297038	  0.99892163	  0.99943070  0.49325643
+8766	 -6.27332351	 -0.00035300	  0.00021624	  7.27297052	  0.99892175	  0.99943076  0.49325659
+8767	 -6.27332361	 -0.00035296	  0.00021622	  7.27297065	  0.99892187	  0.99943083  0.49325672
+8768	 -6.27332370	 -0.00035291	  0.00021619	  7.27297079	  0.99892200	  0.99943089  0.49325654
+8769	 -6.27332380	 -0.00035287	  0.00021617	  7.27297093	  0.99892212	  0.99943096  0.49325642
+8770	 -6.27332390	 -0.00035283	  0.00021614	  7.27297106	  0.99892224	  0.99943102  0.49325660
+8771	 -6.27332399	 -0.00035279	  0.00021612	  7.27297120	  0.99892237	  0.99943109  0.49325667
+8772	 -6.27332409	 -0.00035275	  0.00021609	  7.27297133	  0.99892249	  0.99943115  0.49325649
+8773	 -6.27332418	 -0.00035271	  0.00021607	  7.27297147	  0.99892261	  0.99943122  0.49325655
+8774	 -6.27332428	 -0.00035267	  0.00021604	  7.27297161	  0.99892273	  0.99943128  0.49325662
+8775	 -6.27332438	 -0.00035263	  0.00021602	  7.27297174	  0.99892286	  0.99943135  0.49325664
+8776	 -6.27332447	 -0.00035259	  0.00021599	  7.27297188	  0.99892298	  0.99943141  0.49325657
+8777	 -6.27332457	 -0.00035255	  0.00021597	  7.27297202	  0.99892310	  0.99943148  0.49325670
+8778	 -6.27332467	 -0.00035251	  0.00021594	  7.27297215	  0.99892322	  0.99943154  0.49325664
+8779	 -6.27332476	 -0.00035247	  0.00021592	  7.27297229	  0.99892335	  0.99943161  0.49325680
+8780	 -6.27332486	 -0.00035243	  0.00021590	  7.27297243	  0.99892347	  0.99943167  0.49325677
+8781	 -6.27332495	 -0.00035239	  0.00021587	  7.27297256	  0.99892359	  0.99943174  0.49325674
+8782	 -6.27332505	 -0.00035235	  0.00021585	  7.27297270	  0.99892371	  0.99943180  0.49325673
+8783	 -6.27332515	 -0.00035231	  0.00021582	  7.27297283	  0.99892384	  0.99943187  0.49325687
+8784	 -6.27332524	 -0.00035227	  0.00021580	  7.27297297	  0.99892396	  0.99943193  0.49325676
+8785	 -6.27332534	 -0.00035223	  0.00021577	  7.27297311	  0.99892408	  0.99943200  0.49325694
+8786	 -6.27332543	 -0.00035219	  0.00021575	  7.27297324	  0.99892420	  0.99943206  0.49325684
+8787	 -6.27332553	 -0.00035215	  0.00021572	  7.27297338	  0.99892433	  0.99943212  0.49325673
+8788	 -6.27332563	 -0.00035211	  0.00021570	  7.27297351	  0.99892445	  0.99943219  0.49325679
+8789	 -6.27332572	 -0.00035207	  0.00021567	  7.27297365	  0.99892457	  0.99943225  0.49325687
+8790	 -6.27332582	 -0.00035203	  0.00021565	  7.27297379	  0.99892469	  0.99943232  0.49325682
+8791	 -6.27332591	 -0.00035199	  0.00021563	  7.27297392	  0.99892482	  0.99943238  0.49325693
+8792	 -6.27332601	 -0.00035195	  0.00021560	  7.27297406	  0.99892494	  0.99943245  0.49325706
+8793	 -6.27332611	 -0.00035191	  0.00021558	  7.27297419	  0.99892506	  0.99943251  0.49325679
+8794	 -6.27332620	 -0.00035187	  0.00021555	  7.27297433	  0.99892518	  0.99943258  0.49325693
+8795	 -6.27332630	 -0.00035183	  0.00021553	  7.27297446	  0.99892531	  0.99943264  0.49325690
+8796	 -6.27332639	 -0.00035179	  0.00021550	  7.27297460	  0.99892543	  0.99943271  0.49325679
+8797	 -6.27332649	 -0.00035175	  0.00021548	  7.27297474	  0.99892555	  0.99943277  0.49325703
+8798	 -6.27332658	 -0.00035171	  0.00021545	  7.27297487	  0.99892567	  0.99943283  0.49325709
+8799	 -6.27332668	 -0.00035167	  0.00021543	  7.27297501	  0.99892579	  0.99943290  0.49325716
+8800	 -6.27332678	 -0.00035163	  0.00021540	  7.27297514	  0.99892592	  0.99943296  0.49325688
+8801	 -6.27332687	 -0.00035159	  0.00021538	  7.27297528	  0.99892604	  0.99943303  0.49325701
+8802	 -6.27332697	 -0.00035155	  0.00021536	  7.27297541	  0.99892616	  0.99943309  0.49325699
+8803	 -6.27332706	 -0.00035151	  0.00021533	  7.27297555	  0.99892628	  0.99943316  0.49325716
+8804	 -6.27332716	 -0.00035147	  0.00021531	  7.27297569	  0.99892640	  0.99943322  0.49325705
+8805	 -6.27332725	 -0.00035143	  0.00021528	  7.27297582	  0.99892653	  0.99943329  0.49325714
+8806	 -6.27332735	 -0.00035139	  0.00021526	  7.27297596	  0.99892665	  0.99943335  0.49325697
+8807	 -6.27332744	 -0.00035135	  0.00021523	  7.27297609	  0.99892677	  0.99943341  0.49325706
+8808	 -6.27332754	 -0.00035131	  0.00021521	  7.27297623	  0.99892689	  0.99943348  0.49325710
+8809	 -6.27332763	 -0.00035127	  0.00021518	  7.27297636	  0.99892701	  0.99943354  0.49325718
+8810	 -6.27332773	 -0.00035123	  0.00021516	  7.27297650	  0.99892714	  0.99943361  0.49325714
+8811	 -6.27332783	 -0.00035119	  0.00021514	  7.27297663	  0.99892726	  0.99943367  0.49325704
+8812	 -6.27332792	 -0.00035115	  0.00021511	  7.27297677	  0.99892738	  0.99943374  0.49325724
+8813	 -6.27332802	 -0.00035111	  0.00021509	  7.27297690	  0.99892750	  0.99943380  0.49325727
+8814	 -6.27332811	 -0.00035107	  0.00021506	  7.27297704	  0.99892762	  0.99943386  0.49325718
+8815	 -6.27332821	 -0.00035103	  0.00021504	  7.27297717	  0.99892774	  0.99943393  0.49325715
+8816	 -6.27332830	 -0.00035099	  0.00021501	  7.27297731	  0.99892787	  0.99943399  0.49325736
+8817	 -6.27332840	 -0.00035095	  0.00021499	  7.27297744	  0.99892799	  0.99943406  0.49325725
+8818	 -6.27332849	 -0.00035091	  0.00021496	  7.27297758	  0.99892811	  0.99943412  0.49325737
+8819	 -6.27332859	 -0.00035087	  0.00021494	  7.27297771	  0.99892823	  0.99943418  0.49325733
+8820	 -6.27332868	 -0.00035084	  0.00021492	  7.27297785	  0.99892835	  0.99943425  0.49325727
+8821	 -6.27332878	 -0.00035080	  0.00021489	  7.27297798	  0.99892847	  0.99943431  0.49325722
+8822	 -6.27332887	 -0.00035076	  0.00021487	  7.27297812	  0.99892859	  0.99943438  0.49325726
+8823	 -6.27332897	 -0.00035072	  0.00021484	  7.27297825	  0.99892872	  0.99943444  0.49325746
+8824	 -6.27332906	 -0.00035068	  0.00021482	  7.27297839	  0.99892884	  0.99943451  0.49325735
+8825	 -6.27332916	 -0.00035064	  0.00021479	  7.27297852	  0.99892896	  0.99943457  0.49325729
+8826	 -6.27332925	 -0.00035060	  0.00021477	  7.27297866	  0.99892908	  0.99943463  0.49325733
+8827	 -6.27332935	 -0.00035056	  0.00021475	  7.27297879	  0.99892920	  0.99943470  0.49325743
+8828	 -6.27332944	 -0.00035052	  0.00021472	  7.27297893	  0.99892932	  0.99943476  0.49325745
+8829	 -6.27332954	 -0.00035048	  0.00021470	  7.27297906	  0.99892944	  0.99943483  0.49325763
+8830	 -6.27332963	 -0.00035044	  0.00021467	  7.27297920	  0.99892956	  0.99943489  0.49325734
+8831	 -6.27332973	 -0.00035040	  0.00021465	  7.27297933	  0.99892969	  0.99943495  0.49325743
+8832	 -6.27332982	 -0.00035036	  0.00021462	  7.27297947	  0.99892981	  0.99943502  0.49325746
+8833	 -6.27332992	 -0.00035032	  0.00021460	  7.27297960	  0.99892993	  0.99943508  0.49325750
+8834	 -6.27333001	 -0.00035028	  0.00021458	  7.27297973	  0.99893005	  0.99943515  0.49325754
+8835	 -6.27333011	 -0.00035024	  0.00021455	  7.27297987	  0.99893017	  0.99943521  0.49325751
+8836	 -6.27333020	 -0.00035020	  0.00021453	  7.27298000	  0.99893029	  0.99943527  0.49325761
+8837	 -6.27333030	 -0.00035016	  0.00021450	  7.27298014	  0.99893041	  0.99943534  0.49325752
+8838	 -6.27333039	 -0.00035012	  0.00021448	  7.27298027	  0.99893053	  0.99943540  0.49325748
+8839	 -6.27333049	 -0.00035008	  0.00021445	  7.27298041	  0.99893065	  0.99943546  0.49325770
+8840	 -6.27333058	 -0.00035004	  0.00021443	  7.27298054	  0.99893078	  0.99943553  0.49325749
+8841	 -6.27333068	 -0.00035000	  0.00021441	  7.27298068	  0.99893090	  0.99943559  0.49325754
+8842	 -6.27333077	 -0.00034996	  0.00021438	  7.27298081	  0.99893102	  0.99943566  0.49325757
+8843	 -6.27333087	 -0.00034992	  0.00021436	  7.27298094	  0.99893114	  0.99943572  0.49325772
+8844	 -6.27333096	 -0.00034988	  0.00021433	  7.27298108	  0.99893126	  0.99943578  0.49325749
+8845	 -6.27333106	 -0.00034984	  0.00021431	  7.27298121	  0.99893138	  0.99943585  0.49325746
+8846	 -6.27333115	 -0.00034980	  0.00021428	  7.27298135	  0.99893150	  0.99943591  0.49325763
+8847	 -6.27333125	 -0.00034976	  0.00021426	  7.27298148	  0.99893162	  0.99943597  0.49325780
+8848	 -6.27333134	 -0.00034973	  0.00021424	  7.27298162	  0.99893174	  0.99943604  0.49325773
+8849	 -6.27333144	 -0.00034969	  0.00021421	  7.27298175	  0.99893186	  0.99943610  0.49325774
+8850	 -6.27333153	 -0.00034965	  0.00021419	  7.27298188	  0.99893198	  0.99943617  0.49325768
+8851	 -6.27333162	 -0.00034961	  0.00021416	  7.27298202	  0.99893210	  0.99943623  0.49325772
+8852	 -6.27333172	 -0.00034957	  0.00021414	  7.27298215	  0.99893223	  0.99943629  0.49325780
+8853	 -6.27333181	 -0.00034953	  0.00021412	  7.27298229	  0.99893235	  0.99943636  0.49325790
+8854	 -6.27333191	 -0.00034949	  0.00021409	  7.27298242	  0.99893247	  0.99943642  0.49325769
+8855	 -6.27333200	 -0.00034945	  0.00021407	  7.27298255	  0.99893259	  0.99943648  0.49325784
+8856	 -6.27333210	 -0.00034941	  0.00021404	  7.27298269	  0.99893271	  0.99943655  0.49325781
+8857	 -6.27333219	 -0.00034937	  0.00021402	  7.27298282	  0.99893283	  0.99943661  0.49325781
+8858	 -6.27333229	 -0.00034933	  0.00021399	  7.27298296	  0.99893295	  0.99943668  0.49325775
+8859	 -6.27333238	 -0.00034929	  0.00021397	  7.27298309	  0.99893307	  0.99943674  0.49325777
+8860	 -6.27333247	 -0.00034925	  0.00021395	  7.27298322	  0.99893319	  0.99943680  0.49325794
+8861	 -6.27333257	 -0.00034921	  0.00021392	  7.27298336	  0.99893331	  0.99943687  0.49325786
+8862	 -6.27333266	 -0.00034917	  0.00021390	  7.27298349	  0.99893343	  0.99943693  0.49325783
+8863	 -6.27333276	 -0.00034913	  0.00021387	  7.27298362	  0.99893355	  0.99943699  0.49325777
+8864	 -6.27333285	 -0.00034909	  0.00021385	  7.27298376	  0.99893367	  0.99943706  0.49325800
+8865	 -6.27333295	 -0.00034905	  0.00021383	  7.27298389	  0.99893379	  0.99943712  0.49325788
+8866	 -6.27333304	 -0.00034902	  0.00021380	  7.27298402	  0.99893391	  0.99943718  0.49325796
+8867	 -6.27333313	 -0.00034898	  0.00021378	  7.27298416	  0.99893403	  0.99943725  0.49325777
+8868	 -6.27333323	 -0.00034894	  0.00021375	  7.27298429	  0.99893415	  0.99943731  0.49325803
+8869	 -6.27333332	 -0.00034890	  0.00021373	  7.27298443	  0.99893427	  0.99943737  0.49325799
+8870	 -6.27333342	 -0.00034886	  0.00021370	  7.27298456	  0.99893439	  0.99943744  0.49325815
+8871	 -6.27333351	 -0.00034882	  0.00021368	  7.27298469	  0.99893451	  0.99943750  0.49325810
+8872	 -6.27333360	 -0.00034878	  0.00021366	  7.27298483	  0.99893463	  0.99943756  0.49325805
+8873	 -6.27333370	 -0.00034874	  0.00021363	  7.27298496	  0.99893475	  0.99943763  0.49325805
+8874	 -6.27333379	 -0.00034870	  0.00021361	  7.27298509	  0.99893487	  0.99943769  0.49325810
+8875	 -6.27333389	 -0.00034866	  0.00021358	  7.27298523	  0.99893499	  0.99943775  0.49325812
+8876	 -6.27333398	 -0.00034862	  0.00021356	  7.27298536	  0.99893511	  0.99943782  0.49325800
+8877	 -6.27333408	 -0.00034858	  0.00021354	  7.27298549	  0.99893523	  0.99943788  0.49325798
+8878	 -6.27333417	 -0.00034854	  0.00021351	  7.27298563	  0.99893535	  0.99943794  0.49325819
+8879	 -6.27333426	 -0.00034850	  0.00021349	  7.27298576	  0.99893547	  0.99943801  0.49325809
+8880	 -6.27333436	 -0.00034847	  0.00021346	  7.27298589	  0.99893559	  0.99943807  0.49325811
+8881	 -6.27333445	 -0.00034843	  0.00021344	  7.27298602	  0.99893571	  0.99943813  0.49325804
+8882	 -6.27333454	 -0.00034839	  0.00021342	  7.27298616	  0.99893583	  0.99943820  0.49325814
+8883	 -6.27333464	 -0.00034835	  0.00021339	  7.27298629	  0.99893595	  0.99943826  0.49325817
+8884	 -6.27333473	 -0.00034831	  0.00021337	  7.27298642	  0.99893607	  0.99943832  0.49325810
+8885	 -6.27333483	 -0.00034827	  0.00021334	  7.27298656	  0.99893619	  0.99943839  0.49325810
+8886	 -6.27333492	 -0.00034823	  0.00021332	  7.27298669	  0.99893631	  0.99943845  0.49325813
+8887	 -6.27333501	 -0.00034819	  0.00021330	  7.27298682	  0.99893643	  0.99943851  0.49325821
+8888	 -6.27333511	 -0.00034815	  0.00021327	  7.27298696	  0.99893655	  0.99943858  0.49325825
+8889	 -6.27333520	 -0.00034811	  0.00021325	  7.27298709	  0.99893667	  0.99943864  0.49325802
+8890	 -6.27333530	 -0.00034807	  0.00021322	  7.27298722	  0.99893679	  0.99943870  0.49325839
+8891	 -6.27333539	 -0.00034803	  0.00021320	  7.27298735	  0.99893691	  0.99943877  0.49325824
+8892	 -6.27333548	 -0.00034800	  0.00021318	  7.27298749	  0.99893703	  0.99943883  0.49325827
+8893	 -6.27333558	 -0.00034796	  0.00021315	  7.27298762	  0.99893715	  0.99943889  0.49325830
+8894	 -6.27333567	 -0.00034792	  0.00021313	  7.27298775	  0.99893727	  0.99943895  0.49325817
+8895	 -6.27333576	 -0.00034788	  0.00021310	  7.27298789	  0.99893739	  0.99943902  0.49325841
+8896	 -6.27333586	 -0.00034784	  0.00021308	  7.27298802	  0.99893751	  0.99943908  0.49325836
+8897	 -6.27333595	 -0.00034780	  0.00021306	  7.27298815	  0.99893763	  0.99943914  0.49325836
+8898	 -6.27333604	 -0.00034776	  0.00021303	  7.27298828	  0.99893774	  0.99943921  0.49325838
+8899	 -6.27333614	 -0.00034772	  0.00021301	  7.27298842	  0.99893786	  0.99943927  0.49325845
+8900	 -6.27333623	 -0.00034768	  0.00021298	  7.27298855	  0.99893798	  0.99943933  0.49325848
+8901	 -6.27333632	 -0.00034764	  0.00021296	  7.27298868	  0.99893810	  0.99943940  0.49325833
+8902	 -6.27333642	 -0.00034760	  0.00021294	  7.27298881	  0.99893822	  0.99943946  0.49325843
+8903	 -6.27333651	 -0.00034757	  0.00021291	  7.27298895	  0.99893834	  0.99943952  0.49325849
+8904	 -6.27333661	 -0.00034753	  0.00021289	  7.27298908	  0.99893846	  0.99943958  0.49325841
+8905	 -6.27333670	 -0.00034749	  0.00021286	  7.27298921	  0.99893858	  0.99943965  0.49325856
+8906	 -6.27333679	 -0.00034745	  0.00021284	  7.27298934	  0.99893870	  0.99943971  0.49325841
+8907	 -6.27333689	 -0.00034741	  0.00021282	  7.27298948	  0.99893882	  0.99943977  0.49325845
+8908	 -6.27333698	 -0.00034737	  0.00021279	  7.27298961	  0.99893894	  0.99943984  0.49325852
+8909	 -6.27333707	 -0.00034733	  0.00021277	  7.27298974	  0.99893906	  0.99943990  0.49325863
+8910	 -6.27333717	 -0.00034729	  0.00021275	  7.27298987	  0.99893918	  0.99943996  0.49325866
+8911	 -6.27333726	 -0.00034725	  0.00021272	  7.27299000	  0.99893929	  0.99944002  0.49325856
+8912	 -6.27333735	 -0.00034721	  0.00021270	  7.27299014	  0.99893941	  0.99944009  0.49325854
+8913	 -6.27333745	 -0.00034718	  0.00021267	  7.27299027	  0.99893953	  0.99944015  0.49325858
+8914	 -6.27333754	 -0.00034714	  0.00021265	  7.27299040	  0.99893965	  0.99944021  0.49325856
+8915	 -6.27333763	 -0.00034710	  0.00021263	  7.27299053	  0.99893977	  0.99944028  0.49325873
+8916	 -6.27333772	 -0.00034706	  0.00021260	  7.27299067	  0.99893989	  0.99944034  0.49325877
+8917	 -6.27333782	 -0.00034702	  0.00021258	  7.27299080	  0.99894001	  0.99944040  0.49325864
+8918	 -6.27333791	 -0.00034698	  0.00021255	  7.27299093	  0.99894013	  0.99944046  0.49325857
+8919	 -6.27333800	 -0.00034694	  0.00021253	  7.27299106	  0.99894025	  0.99944053  0.49325852
+8920	 -6.27333810	 -0.00034690	  0.00021251	  7.27299119	  0.99894036	  0.99944059  0.49325872
+8921	 -6.27333819	 -0.00034686	  0.00021248	  7.27299133	  0.99894048	  0.99944065  0.49325865
+8922	 -6.27333828	 -0.00034683	  0.00021246	  7.27299146	  0.99894060	  0.99944072  0.49325884
+8923	 -6.27333838	 -0.00034679	  0.00021244	  7.27299159	  0.99894072	  0.99944078  0.49325864
+8924	 -6.27333847	 -0.00034675	  0.00021241	  7.27299172	  0.99894084	  0.99944084  0.49325865
+8925	 -6.27333856	 -0.00034671	  0.00021239	  7.27299185	  0.99894096	  0.99944090  0.49325871
+8926	 -6.27333866	 -0.00034667	  0.00021236	  7.27299199	  0.99894108	  0.99944097  0.49325862
+8927	 -6.27333875	 -0.00034663	  0.00021234	  7.27299212	  0.99894120	  0.99944103  0.49325892
+8928	 -6.27333884	 -0.00034659	  0.00021232	  7.27299225	  0.99894131	  0.99944109  0.49325886
+8929	 -6.27333893	 -0.00034655	  0.00021229	  7.27299238	  0.99894143	  0.99944115  0.49325892
+8930	 -6.27333903	 -0.00034652	  0.00021227	  7.27299251	  0.99894155	  0.99944122  0.49325878
+8931	 -6.27333912	 -0.00034648	  0.00021225	  7.27299264	  0.99894167	  0.99944128  0.49325893
+8932	 -6.27333921	 -0.00034644	  0.00021222	  7.27299278	  0.99894179	  0.99944134  0.49325882
+8933	 -6.27333931	 -0.00034640	  0.00021220	  7.27299291	  0.99894191	  0.99944140  0.49325880
+8934	 -6.27333940	 -0.00034636	  0.00021217	  7.27299304	  0.99894202	  0.99944147  0.49325884
+8935	 -6.27333949	 -0.00034632	  0.00021215	  7.27299317	  0.99894214	  0.99944153  0.49325871
+8936	 -6.27333958	 -0.00034628	  0.00021213	  7.27299330	  0.99894226	  0.99944159  0.49325888
+8937	 -6.27333968	 -0.00034624	  0.00021210	  7.27299343	  0.99894238	  0.99944165  0.49325907
+8938	 -6.27333977	 -0.00034620	  0.00021208	  7.27299356	  0.99894250	  0.99944172  0.49325884
+8939	 -6.27333986	 -0.00034617	  0.00021206	  7.27299370	  0.99894262	  0.99944178  0.49325906
+8940	 -6.27333995	 -0.00034613	  0.00021203	  7.27299383	  0.99894273	  0.99944184  0.49325903
+8941	 -6.27334005	 -0.00034609	  0.00021201	  7.27299396	  0.99894285	  0.99944190  0.49325895
+8942	 -6.27334014	 -0.00034605	  0.00021198	  7.27299409	  0.99894297	  0.99944197  0.49325883
+8943	 -6.27334023	 -0.00034601	  0.00021196	  7.27299422	  0.99894309	  0.99944203  0.49325893
+8944	 -6.27334033	 -0.00034597	  0.00021194	  7.27299435	  0.99894321	  0.99944209  0.49325903
+8945	 -6.27334042	 -0.00034593	  0.00021191	  7.27299448	  0.99894333	  0.99944215  0.49325919
+8946	 -6.27334051	 -0.00034590	  0.00021189	  7.27299461	  0.99894344	  0.99944222  0.49325911
+8947	 -6.27334060	 -0.00034586	  0.00021187	  7.27299475	  0.99894356	  0.99944228  0.49325916
+8948	 -6.27334070	 -0.00034582	  0.00021184	  7.27299488	  0.99894368	  0.99944234  0.49325910
+8949	 -6.27334079	 -0.00034578	  0.00021182	  7.27299501	  0.99894380	  0.99944240  0.49325905
+8950	 -6.27334088	 -0.00034574	  0.00021179	  7.27299514	  0.99894392	  0.99944246  0.49325907
+8951	 -6.27334097	 -0.00034570	  0.00021177	  7.27299527	  0.99894403	  0.99944253  0.49325918
+8952	 -6.27334107	 -0.00034566	  0.00021175	  7.27299540	  0.99894415	  0.99944259  0.49325910
+8953	 -6.27334116	 -0.00034563	  0.00021172	  7.27299553	  0.99894427	  0.99944265  0.49325909
+8954	 -6.27334125	 -0.00034559	  0.00021170	  7.27299566	  0.99894439	  0.99944271  0.49325903
+8955	 -6.27334134	 -0.00034555	  0.00021168	  7.27299579	  0.99894451	  0.99944278  0.49325934
+8956	 -6.27334143	 -0.00034551	  0.00021165	  7.27299593	  0.99894462	  0.99944284  0.49325921
+8957	 -6.27334153	 -0.00034547	  0.00021163	  7.27299606	  0.99894474	  0.99944290  0.49325916
+8958	 -6.27334162	 -0.00034543	  0.00021161	  7.27299619	  0.99894486	  0.99944296  0.49325905
+8959	 -6.27334171	 -0.00034539	  0.00021158	  7.27299632	  0.99894498	  0.99944302  0.49325932
+8960	 -6.27334180	 -0.00034536	  0.00021156	  7.27299645	  0.99894509	  0.99944309  0.49325918
+8961	 -6.27334190	 -0.00034532	  0.00021153	  7.27299658	  0.99894521	  0.99944315  0.49325928
+8962	 -6.27334199	 -0.00034528	  0.00021151	  7.27299671	  0.99894533	  0.99944321  0.49325927
+8963	 -6.27334208	 -0.00034524	  0.00021149	  7.27299684	  0.99894545	  0.99944327  0.49325910
+8964	 -6.27334217	 -0.00034520	  0.00021146	  7.27299697	  0.99894557	  0.99944334  0.49325933
+8965	 -6.27334226	 -0.00034516	  0.00021144	  7.27299710	  0.99894568	  0.99944340  0.49325931
+8966	 -6.27334236	 -0.00034512	  0.00021142	  7.27299723	  0.99894580	  0.99944346  0.49325913
+8967	 -6.27334245	 -0.00034509	  0.00021139	  7.27299736	  0.99894592	  0.99944352  0.49325935
+8968	 -6.27334254	 -0.00034505	  0.00021137	  7.27299749	  0.99894604	  0.99944358  0.49325926
+8969	 -6.27334263	 -0.00034501	  0.00021135	  7.27299762	  0.99894615	  0.99944365  0.49325931
+8970	 -6.27334273	 -0.00034497	  0.00021132	  7.27299776	  0.99894627	  0.99944371  0.49325923
+8971	 -6.27334282	 -0.00034493	  0.00021130	  7.27299789	  0.99894639	  0.99944377  0.49325932
+8972	 -6.27334291	 -0.00034489	  0.00021128	  7.27299802	  0.99894651	  0.99944383  0.49325937
+8973	 -6.27334300	 -0.00034486	  0.00021125	  7.27299815	  0.99894662	  0.99944389  0.49325925
+8974	 -6.27334309	 -0.00034482	  0.00021123	  7.27299828	  0.99894674	  0.99944396  0.49325938
+8975	 -6.27334319	 -0.00034478	  0.00021120	  7.27299841	  0.99894686	  0.99944402  0.49325937
+8976	 -6.27334328	 -0.00034474	  0.00021118	  7.27299854	  0.99894697	  0.99944408  0.49325933
+8977	 -6.27334337	 -0.00034470	  0.00021116	  7.27299867	  0.99894709	  0.99944414  0.49325964
+8978	 -6.27334346	 -0.00034466	  0.00021113	  7.27299880	  0.99894721	  0.99944420  0.49325932
+8979	 -6.27334355	 -0.00034462	  0.00021111	  7.27299893	  0.99894733	  0.99944426  0.49325939
+8980	 -6.27334364	 -0.00034459	  0.00021109	  7.27299906	  0.99894744	  0.99944433  0.49325953
+8981	 -6.27334374	 -0.00034455	  0.00021106	  7.27299919	  0.99894756	  0.99944439  0.49325955
+8982	 -6.27334383	 -0.00034451	  0.00021104	  7.27299932	  0.99894768	  0.99944445  0.49325952
+8983	 -6.27334392	 -0.00034447	  0.00021102	  7.27299945	  0.99894780	  0.99944451  0.49325957
+8984	 -6.27334401	 -0.00034443	  0.00021099	  7.27299958	  0.99894791	  0.99944457  0.49325952
+8985	 -6.27334410	 -0.00034439	  0.00021097	  7.27299971	  0.99894803	  0.99944464  0.49325948
+8986	 -6.27334420	 -0.00034436	  0.00021095	  7.27299984	  0.99894815	  0.99944470  0.49325953
+8987	 -6.27334429	 -0.00034432	  0.00021092	  7.27299997	  0.99894826	  0.99944476  0.49325969
+8988	 -6.27334438	 -0.00034428	  0.00021090	  7.27300010	  0.99894838	  0.99944482  0.49325951
+8989	 -6.27334447	 -0.00034424	  0.00021088	  7.27300023	  0.99894850	  0.99944488  0.49325964
+8990	 -6.27334456	 -0.00034420	  0.00021085	  7.27300036	  0.99894861	  0.99944494  0.49325959
+8991	 -6.27334465	 -0.00034417	  0.00021083	  7.27300049	  0.99894873	  0.99944501  0.49325984
+8992	 -6.27334475	 -0.00034413	  0.00021081	  7.27300062	  0.99894885	  0.99944507  0.49325961
+8993	 -6.27334484	 -0.00034409	  0.00021078	  7.27300075	  0.99894897	  0.99944513  0.49325970
+8994	 -6.27334493	 -0.00034405	  0.00021076	  7.27300088	  0.99894908	  0.99944519  0.49325973
+8995	 -6.27334502	 -0.00034401	  0.00021073	  7.27300101	  0.99894920	  0.99944525  0.49325965
+8996	 -6.27334511	 -0.00034397	  0.00021071	  7.27300114	  0.99894932	  0.99944531  0.49325961
+8997	 -6.27334520	 -0.00034394	  0.00021069	  7.27300127	  0.99894943	  0.99944538  0.49325970
+8998	 -6.27334529	 -0.00034390	  0.00021066	  7.27300140	  0.99894955	  0.99944544  0.49325947
+8999	 -6.27334539	 -0.00034386	  0.00021064	  7.27300153	  0.99894967	  0.99944550  0.49325970
+9000	 -6.27334548	 -0.00034382	  0.00021062	  7.27300166	  0.99894978	  0.99944556  0.49325986
+9001	 -6.27334557	 -0.00034378	  0.00021059	  7.27300179	  0.99894990	  0.99944562  0.49325975
+9002	 -6.27334566	 -0.00034374	  0.00021057	  7.27300192	  0.99895002	  0.99944568  0.49325973
+9003	 -6.27334575	 -0.00034371	  0.00021055	  7.27300205	  0.99895013	  0.99944575  0.49325990
+9004	 -6.27334584	 -0.00034367	  0.00021052	  7.27300217	  0.99895025	  0.99944581  0.49325987
+9005	 -6.27334593	 -0.00034363	  0.00021050	  7.27300230	  0.99895037	  0.99944587  0.49325975
+9006	 -6.27334603	 -0.00034359	  0.00021048	  7.27300243	  0.99895048	  0.99944593  0.49325986
+9007	 -6.27334612	 -0.00034355	  0.00021045	  7.27300256	  0.99895060	  0.99944599  0.49325980
+9008	 -6.27334621	 -0.00034352	  0.00021043	  7.27300269	  0.99895072	  0.99944605  0.49325999
+9009	 -6.27334630	 -0.00034348	  0.00021041	  7.27300282	  0.99895083	  0.99944611  0.49326005
+9010	 -6.27334639	 -0.00034344	  0.00021038	  7.27300295	  0.99895095	  0.99944618  0.49325989
+9011	 -6.27334648	 -0.00034340	  0.00021036	  7.27300308	  0.99895106	  0.99944624  0.49325982
+9012	 -6.27334657	 -0.00034336	  0.00021034	  7.27300321	  0.99895118	  0.99944630  0.49326004
+9013	 -6.27334666	 -0.00034333	  0.00021031	  7.27300334	  0.99895130	  0.99944636  0.49325987
+9014	 -6.27334676	 -0.00034329	  0.00021029	  7.27300347	  0.99895141	  0.99944642  0.49326003
+9015	 -6.27334685	 -0.00034325	  0.00021027	  7.27300360	  0.99895153	  0.99944648  0.49325986
+9016	 -6.27334694	 -0.00034321	  0.00021024	  7.27300373	  0.99895165	  0.99944654  0.49326013
+9017	 -6.27334703	 -0.00034317	  0.00021022	  7.27300386	  0.99895176	  0.99944661  0.49326001
+9018	 -6.27334712	 -0.00034313	  0.00021020	  7.27300399	  0.99895188	  0.99944667  0.49325997
+9019	 -6.27334721	 -0.00034310	  0.00021017	  7.27300411	  0.99895199	  0.99944673  0.49325982
+9020	 -6.27334730	 -0.00034306	  0.00021015	  7.27300424	  0.99895211	  0.99944679  0.49326004
+9021	 -6.27334739	 -0.00034302	  0.00021013	  7.27300437	  0.99895223	  0.99944685  0.49326000
+9022	 -6.27334748	 -0.00034298	  0.00021010	  7.27300450	  0.99895234	  0.99944691  0.49326002
+9023	 -6.27334758	 -0.00034294	  0.00021008	  7.27300463	  0.99895246	  0.99944697  0.49326019
+9024	 -6.27334767	 -0.00034291	  0.00021006	  7.27300476	  0.99895258	  0.99944704  0.49326022
+9025	 -6.27334776	 -0.00034287	  0.00021003	  7.27300489	  0.99895269	  0.99944710  0.49325991
+9026	 -6.27334785	 -0.00034283	  0.00021001	  7.27300502	  0.99895281	  0.99944716  0.49326017
+9027	 -6.27334794	 -0.00034279	  0.00020999	  7.27300515	  0.99895292	  0.99944722  0.49326012
+9028	 -6.27334803	 -0.00034276	  0.00020996	  7.27300527	  0.99895304	  0.99944728  0.49326022
+9029	 -6.27334812	 -0.00034272	  0.00020994	  7.27300540	  0.99895316	  0.99944734  0.49326001
+9030	 -6.27334821	 -0.00034268	  0.00020992	  7.27300553	  0.99895327	  0.99944740  0.49326024
+9031	 -6.27334830	 -0.00034264	  0.00020989	  7.27300566	  0.99895339	  0.99944746  0.49326021
+9032	 -6.27334839	 -0.00034260	  0.00020987	  7.27300579	  0.99895350	  0.99944753  0.49326029
+9033	 -6.27334848	 -0.00034257	  0.00020985	  7.27300592	  0.99895362	  0.99944759  0.49326016
+9034	 -6.27334857	 -0.00034253	  0.00020983	  7.27300605	  0.99895373	  0.99944765  0.49326016
+9035	 -6.27334867	 -0.00034249	  0.00020980	  7.27300618	  0.99895385	  0.99944771  0.49326045
+9036	 -6.27334876	 -0.00034245	  0.00020978	  7.27300630	  0.99895397	  0.99944777  0.49326011
+9037	 -6.27334885	 -0.00034241	  0.00020976	  7.27300643	  0.99895408	  0.99944783  0.49326023
+9038	 -6.27334894	 -0.00034238	  0.00020973	  7.27300656	  0.99895420	  0.99944789  0.49326007
+9039	 -6.27334903	 -0.00034234	  0.00020971	  7.27300669	  0.99895431	  0.99944795  0.49326021
+9040	 -6.27334912	 -0.00034230	  0.00020969	  7.27300682	  0.99895443	  0.99944801  0.49326027
+9041	 -6.27334921	 -0.00034226	  0.00020966	  7.27300695	  0.99895454	  0.99944807  0.49326040
+9042	 -6.27334930	 -0.00034222	  0.00020964	  7.27300708	  0.99895466	  0.99944814  0.49326032
+9043	 -6.27334939	 -0.00034219	  0.00020962	  7.27300720	  0.99895478	  0.99944820  0.49326028
+9044	 -6.27334948	 -0.00034215	  0.00020959	  7.27300733	  0.99895489	  0.99944826  0.49326022
+9045	 -6.27334957	 -0.00034211	  0.00020957	  7.27300746	  0.99895501	  0.99944832  0.49326044
+9046	 -6.27334966	 -0.00034207	  0.00020955	  7.27300759	  0.99895512	  0.99944838  0.49326036
+9047	 -6.27334975	 -0.00034204	  0.00020952	  7.27300772	  0.99895524	  0.99944844  0.49326052
+9048	 -6.27334984	 -0.00034200	  0.00020950	  7.27300785	  0.99895535	  0.99944850  0.49326050
+9049	 -6.27334993	 -0.00034196	  0.00020948	  7.27300797	  0.99895547	  0.99944856  0.49326047
+9050	 -6.27335002	 -0.00034192	  0.00020945	  7.27300810	  0.99895558	  0.99944862  0.49326049
+9051	 -6.27335011	 -0.00034188	  0.00020943	  7.27300823	  0.99895570	  0.99944868  0.49326038
+9052	 -6.27335021	 -0.00034185	  0.00020941	  7.27300836	  0.99895582	  0.99944875  0.49326054
+9053	 -6.27335030	 -0.00034181	  0.00020938	  7.27300849	  0.99895593	  0.99944881  0.49326041
+9054	 -6.27335039	 -0.00034177	  0.00020936	  7.27300861	  0.99895605	  0.99944887  0.49326059
+9055	 -6.27335048	 -0.00034173	  0.00020934	  7.27300874	  0.99895616	  0.99944893  0.49326058
+9056	 -6.27335057	 -0.00034170	  0.00020932	  7.27300887	  0.99895628	  0.99944899  0.49326043
+9057	 -6.27335066	 -0.00034166	  0.00020929	  7.27300900	  0.99895639	  0.99944905  0.49326062
+9058	 -6.27335075	 -0.00034162	  0.00020927	  7.27300913	  0.99895651	  0.99944911  0.49326067
+9059	 -6.27335084	 -0.00034158	  0.00020925	  7.27300925	  0.99895662	  0.99944917  0.49326078
+9060	 -6.27335093	 -0.00034154	  0.00020922	  7.27300938	  0.99895674	  0.99944923  0.49326065
+9061	 -6.27335102	 -0.00034151	  0.00020920	  7.27300951	  0.99895685	  0.99944929  0.49326059
+9062	 -6.27335111	 -0.00034147	  0.00020918	  7.27300964	  0.99895697	  0.99944935  0.49326055
+9063	 -6.27335120	 -0.00034143	  0.00020915	  7.27300977	  0.99895708	  0.99944941  0.49326066
+9064	 -6.27335129	 -0.00034139	  0.00020913	  7.27300989	  0.99895720	  0.99944948  0.49326077
+9065	 -6.27335138	 -0.00034136	  0.00020911	  7.27301002	  0.99895731	  0.99944954  0.49326066
+9066	 -6.27335147	 -0.00034132	  0.00020908	  7.27301015	  0.99895743	  0.99944960  0.49326075
+9067	 -6.27335156	 -0.00034128	  0.00020906	  7.27301028	  0.99895754	  0.99944966  0.49326055
+9068	 -6.27335165	 -0.00034124	  0.00020904	  7.27301040	  0.99895766	  0.99944972  0.49326086
+9069	 -6.27335174	 -0.00034121	  0.00020902	  7.27301053	  0.99895777	  0.99944978  0.49326055
+9070	 -6.27335183	 -0.00034117	  0.00020899	  7.27301066	  0.99895789	  0.99944984  0.49326069
+9071	 -6.27335192	 -0.00034113	  0.00020897	  7.27301079	  0.99895800	  0.99944990  0.49326076
+9072	 -6.27335201	 -0.00034109	  0.00020895	  7.27301092	  0.99895812	  0.99944996  0.49326064
+9073	 -6.27335210	 -0.00034106	  0.00020892	  7.27301104	  0.99895823	  0.99945002  0.49326064
+9074	 -6.27335219	 -0.00034102	  0.00020890	  7.27301117	  0.99895835	  0.99945008  0.49326079
+9075	 -6.27335228	 -0.00034098	  0.00020888	  7.27301130	  0.99895846	  0.99945014  0.49326094
+9076	 -6.27335237	 -0.00034094	  0.00020885	  7.27301143	  0.99895858	  0.99945020  0.49326073
+9077	 -6.27335246	 -0.00034091	  0.00020883	  7.27301155	  0.99895869	  0.99945026  0.49326067
+9078	 -6.27335255	 -0.00034087	  0.00020881	  7.27301168	  0.99895881	  0.99945032  0.49326096
+9079	 -6.27335264	 -0.00034083	  0.00020878	  7.27301181	  0.99895892	  0.99945038  0.49326074
+9080	 -6.27335273	 -0.00034079	  0.00020876	  7.27301194	  0.99895903	  0.99945045  0.49326072
+9081	 -6.27335282	 -0.00034076	  0.00020874	  7.27301206	  0.99895915	  0.99945051  0.49326097
+9082	 -6.27335291	 -0.00034072	  0.00020872	  7.27301219	  0.99895926	  0.99945057  0.49326095
+9083	 -6.27335300	 -0.00034068	  0.00020869	  7.27301232	  0.99895938	  0.99945063  0.49326083
+9084	 -6.27335309	 -0.00034064	  0.00020867	  7.27301244	  0.99895949	  0.99945069  0.49326094
+9085	 -6.27335318	 -0.00034061	  0.00020865	  7.27301257	  0.99895961	  0.99945075  0.49326071
+9086	 -6.27335327	 -0.00034057	  0.00020862	  7.27301270	  0.99895972	  0.99945081  0.49326094
+9087	 -6.27335336	 -0.00034053	  0.00020860	  7.27301283	  0.99895984	  0.99945087  0.49326119
+9088	 -6.27335345	 -0.00034049	  0.00020858	  7.27301295	  0.99895995	  0.99945093  0.49326102
+9089	 -6.27335354	 -0.00034046	  0.00020856	  7.27301308	  0.99896007	  0.99945099  0.49326095
+9090	 -6.27335363	 -0.00034042	  0.00020853	  7.27301321	  0.99896018	  0.99945105  0.49326111
+9091	 -6.27335372	 -0.00034038	  0.00020851	  7.27301333	  0.99896029	  0.99945111  0.49326093
+9092	 -6.27335380	 -0.00034034	  0.00020849	  7.27301346	  0.99896041	  0.99945117  0.49326092
+9093	 -6.27335389	 -0.00034031	  0.00020846	  7.27301359	  0.99896052	  0.99945123  0.49326086
+9094	 -6.27335398	 -0.00034027	  0.00020844	  7.27301372	  0.99896064	  0.99945129  0.49326111
+9095	 -6.27335407	 -0.00034023	  0.00020842	  7.27301384	  0.99896075	  0.99945135  0.49326085
+9096	 -6.27335416	 -0.00034019	  0.00020839	  7.27301397	  0.99896087	  0.99945141  0.49326107
+9097	 -6.27335425	 -0.00034016	  0.00020837	  7.27301410	  0.99896098	  0.99945147  0.49326138
+9098	 -6.27335434	 -0.00034012	  0.00020835	  7.27301422	  0.99896109	  0.99945153  0.49326107
+9099	 -6.27335443	 -0.00034008	  0.00020833	  7.27301435	  0.99896121	  0.99945159  0.49326110
+9100	 -6.27335452	 -0.00034004	  0.00020830	  7.27301448	  0.99896132	  0.99945165  0.49326107
+9101	 -6.27335461	 -0.00034001	  0.00020828	  7.27301460	  0.99896144	  0.99945171  0.49326111
+9102	 -6.27335470	 -0.00033997	  0.00020826	  7.27301473	  0.99896155	  0.99945177  0.49326094
+9103	 -6.27335479	 -0.00033993	  0.00020823	  7.27301486	  0.99896166	  0.99945183  0.49326116
+9104	 -6.27335488	 -0.00033989	  0.00020821	  7.27301498	  0.99896178	  0.99945189  0.49326119
+9105	 -6.27335497	 -0.00033986	  0.00020819	  7.27301511	  0.99896189	  0.99945195  0.49326130
+9106	 -6.27335506	 -0.00033982	  0.00020817	  7.27301524	  0.99896201	  0.99945201  0.49326119
+9107	 -6.27335515	 -0.00033978	  0.00020814	  7.27301536	  0.99896212	  0.99945207  0.49326105
+9108	 -6.27335524	 -0.00033975	  0.00020812	  7.27301549	  0.99896223	  0.99945213  0.49326119
+9109	 -6.27335533	 -0.00033971	  0.00020810	  7.27301562	  0.99896235	  0.99945219  0.49326118
+9110	 -6.27335541	 -0.00033967	  0.00020807	  7.27301574	  0.99896246	  0.99945225  0.49326126
+9111	 -6.27335550	 -0.00033963	  0.00020805	  7.27301587	  0.99896258	  0.99945231  0.49326104
+9112	 -6.27335559	 -0.00033960	  0.00020803	  7.27301600	  0.99896269	  0.99945237  0.49326124
+9113	 -6.27335568	 -0.00033956	  0.00020801	  7.27301612	  0.99896280	  0.99945243  0.49326121
+9114	 -6.27335577	 -0.00033952	  0.00020798	  7.27301625	  0.99896292	  0.99945249  0.49326126
+9115	 -6.27335586	 -0.00033948	  0.00020796	  7.27301638	  0.99896303	  0.99945255  0.49326146
+9116	 -6.27335595	 -0.00033945	  0.00020794	  7.27301650	  0.99896315	  0.99945261  0.49326123
+9117	 -6.27335604	 -0.00033941	  0.00020791	  7.27301663	  0.99896326	  0.99945267  0.49326137
+9118	 -6.27335613	 -0.00033937	  0.00020789	  7.27301675	  0.99896337	  0.99945274  0.49326124
+9119	 -6.27335622	 -0.00033934	  0.00020787	  7.27301688	  0.99896349	  0.99945279  0.49326144
+9120	 -6.27335631	 -0.00033930	  0.00020785	  7.27301701	  0.99896360	  0.99945286  0.49326118
+9121	 -6.27335639	 -0.00033926	  0.00020782	  7.27301713	  0.99896371	  0.99945291  0.49326131
+9122	 -6.27335648	 -0.00033922	  0.00020780	  7.27301726	  0.99896383	  0.99945297  0.49326131
+9123	 -6.27335657	 -0.00033919	  0.00020778	  7.27301739	  0.99896394	  0.99945303  0.49326137
+9124	 -6.27335666	 -0.00033915	  0.00020776	  7.27301751	  0.99896405	  0.99945309  0.49326160
+9125	 -6.27335675	 -0.00033911	  0.00020773	  7.27301764	  0.99896417	  0.99945315  0.49326160
+9126	 -6.27335684	 -0.00033908	  0.00020771	  7.27301776	  0.99896428	  0.99945321  0.49326123
+9127	 -6.27335693	 -0.00033904	  0.00020769	  7.27301789	  0.99896439	  0.99945327  0.49326161
+9128	 -6.27335702	 -0.00033900	  0.00020766	  7.27301802	  0.99896451	  0.99945333  0.49326152
+9129	 -6.27335711	 -0.00033896	  0.00020764	  7.27301814	  0.99896462	  0.99945339  0.49326143
+9130	 -6.27335720	 -0.00033893	  0.00020762	  7.27301827	  0.99896473	  0.99945345  0.49326145
+9131	 -6.27335728	 -0.00033889	  0.00020760	  7.27301839	  0.99896485	  0.99945351  0.49326173
+9132	 -6.27335737	 -0.00033885	  0.00020757	  7.27301852	  0.99896496	  0.99945357  0.49326144
+9133	 -6.27335746	 -0.00033882	  0.00020755	  7.27301865	  0.99896507	  0.99945363  0.49326151
+9134	 -6.27335755	 -0.00033878	  0.00020753	  7.27301877	  0.99896519	  0.99945369  0.49326137
+9135	 -6.27335764	 -0.00033874	  0.00020751	  7.27301890	  0.99896530	  0.99945375  0.49326159
+9136	 -6.27335773	 -0.00033870	  0.00020748	  7.27301902	  0.99896541	  0.99945381  0.49326170
+9137	 -6.27335782	 -0.00033867	  0.00020746	  7.27301915	  0.99896553	  0.99945387  0.49326167
+9138	 -6.27335791	 -0.00033863	  0.00020744	  7.27301927	  0.99896564	  0.99945393  0.49326166
+9139	 -6.27335799	 -0.00033859	  0.00020741	  7.27301940	  0.99896575	  0.99945399  0.49326169
+9140	 -6.27335808	 -0.00033856	  0.00020739	  7.27301953	  0.99896587	  0.99945405  0.49326162
+9141	 -6.27335817	 -0.00033852	  0.00020737	  7.27301965	  0.99896598	  0.99945411  0.49326183
+9142	 -6.27335826	 -0.00033848	  0.00020735	  7.27301978	  0.99896609	  0.99945417  0.49326173
+9143	 -6.27335835	 -0.00033845	  0.00020732	  7.27301990	  0.99896621	  0.99945423  0.49326171
+9144	 -6.27335844	 -0.00033841	  0.00020730	  7.27302003	  0.99896632	  0.99945429  0.49326166
+9145	 -6.27335853	 -0.00033837	  0.00020728	  7.27302015	  0.99896643	  0.99945435  0.49326165
+9146	 -6.27335861	 -0.00033833	  0.00020726	  7.27302028	  0.99896655	  0.99945441  0.49326181
+9147	 -6.27335870	 -0.00033830	  0.00020723	  7.27302041	  0.99896666	  0.99945447  0.49326156
+9148	 -6.27335879	 -0.00033826	  0.00020721	  7.27302053	  0.99896677	  0.99945453  0.49326193
+9149	 -6.27335888	 -0.00033822	  0.00020719	  7.27302066	  0.99896688	  0.99945459  0.49326181
+9150	 -6.27335897	 -0.00033819	  0.00020716	  7.27302078	  0.99896700	  0.99945465  0.49326163
+9151	 -6.27335906	 -0.00033815	  0.00020714	  7.27302091	  0.99896711	  0.99945471  0.49326173
+9152	 -6.27335915	 -0.00033811	  0.00020712	  7.27302103	  0.99896722	  0.99945477  0.49326188
+9153	 -6.27335923	 -0.00033808	  0.00020710	  7.27302116	  0.99896734	  0.99945483  0.49326193
+9154	 -6.27335932	 -0.00033804	  0.00020707	  7.27302128	  0.99896745	  0.99945489  0.49326203
+9155	 -6.27335941	 -0.00033800	  0.00020705	  7.27302141	  0.99896756	  0.99945495  0.49326181
+9156	 -6.27335950	 -0.00033797	  0.00020703	  7.27302153	  0.99896767	  0.99945501  0.49326178
+9157	 -6.27335959	 -0.00033793	  0.00020701	  7.27302166	  0.99896779	  0.99945507  0.49326183
+9158	 -6.27335968	 -0.00033789	  0.00020698	  7.27302178	  0.99896790	  0.99945512  0.49326183
+9159	 -6.27335976	 -0.00033785	  0.00020696	  7.27302191	  0.99896801	  0.99945518  0.49326190
+9160	 -6.27335985	 -0.00033782	  0.00020694	  7.27302203	  0.99896813	  0.99945524  0.49326204
+9161	 -6.27335994	 -0.00033778	  0.00020692	  7.27302216	  0.99896824	  0.99945530  0.49326197
+9162	 -6.27336003	 -0.00033774	  0.00020689	  7.27302228	  0.99896835	  0.99945536  0.49326200
+9163	 -6.27336012	 -0.00033771	  0.00020687	  7.27302241	  0.99896846	  0.99945542  0.49326187
+9164	 -6.27336021	 -0.00033767	  0.00020685	  7.27302253	  0.99896858	  0.99945548  0.49326214
+9165	 -6.27336029	 -0.00033763	  0.00020683	  7.27302266	  0.99896869	  0.99945554  0.49326210
+9166	 -6.27336038	 -0.00033760	  0.00020680	  7.27302278	  0.99896880	  0.99945560  0.49326210
+9167	 -6.27336047	 -0.00033756	  0.00020678	  7.27302291	  0.99896891	  0.99945566  0.49326201
+9168	 -6.27336056	 -0.00033752	  0.00020676	  7.27302303	  0.99896903	  0.99945572  0.49326223
+9169	 -6.27336065	 -0.00033749	  0.00020674	  7.27302316	  0.99896914	  0.99945578  0.49326214
+9170	 -6.27336073	 -0.00033745	  0.00020671	  7.27302328	  0.99896925	  0.99945584  0.49326184
+9171	 -6.27336082	 -0.00033741	  0.00020669	  7.27302341	  0.99896936	  0.99945590  0.49326190
+9172	 -6.27336091	 -0.00033738	  0.00020667	  7.27302353	  0.99896948	  0.99945596  0.49326192
+9173	 -6.27336100	 -0.00033734	  0.00020665	  7.27302366	  0.99896959	  0.99945602  0.49326215
+9174	 -6.27336109	 -0.00033730	  0.00020662	  7.27302378	  0.99896970	  0.99945607  0.49326198
+9175	 -6.27336117	 -0.00033727	  0.00020660	  7.27302391	  0.99896981	  0.99945613  0.49326211
+9176	 -6.27336126	 -0.00033723	  0.00020658	  7.27302403	  0.99896992	  0.99945619  0.49326202
+9177	 -6.27336135	 -0.00033719	  0.00020656	  7.27302416	  0.99897004	  0.99945625  0.49326208
+9178	 -6.27336144	 -0.00033716	  0.00020653	  7.27302428	  0.99897015	  0.99945631  0.49326216
+9179	 -6.27336153	 -0.00033712	  0.00020651	  7.27302441	  0.99897026	  0.99945637  0.49326199
+9180	 -6.27336161	 -0.00033708	  0.00020649	  7.27302453	  0.99897037	  0.99945643  0.49326218
+9181	 -6.27336170	 -0.00033705	  0.00020647	  7.27302466	  0.99897049	  0.99945649  0.49326214
+9182	 -6.27336179	 -0.00033701	  0.00020644	  7.27302478	  0.99897060	  0.99945655  0.49326240
+9183	 -6.27336188	 -0.00033697	  0.00020642	  7.27302491	  0.99897071	  0.99945661  0.49326199
+9184	 -6.27336197	 -0.00033694	  0.00020640	  7.27302503	  0.99897082	  0.99945667  0.49326203
+9185	 -6.27336205	 -0.00033690	  0.00020638	  7.27302515	  0.99897093	  0.99945673  0.49326224
+9186	 -6.27336214	 -0.00033686	  0.00020635	  7.27302528	  0.99897105	  0.99945679  0.49326220
+9187	 -6.27336223	 -0.00033683	  0.00020633	  7.27302540	  0.99897116	  0.99945684  0.49326222
+9188	 -6.27336232	 -0.00033679	  0.00020631	  7.27302553	  0.99897127	  0.99945690  0.49326242
+9189	 -6.27336240	 -0.00033675	  0.00020629	  7.27302565	  0.99897138	  0.99945696  0.49326213
+9190	 -6.27336249	 -0.00033672	  0.00020626	  7.27302578	  0.99897149	  0.99945702  0.49326219
+9191	 -6.27336258	 -0.00033668	  0.00020624	  7.27302590	  0.99897161	  0.99945708  0.49326219
+9192	 -6.27336267	 -0.00033664	  0.00020622	  7.27302603	  0.99897172	  0.99945714  0.49326250
+9193	 -6.27336275	 -0.00033661	  0.00020620	  7.27302615	  0.99897183	  0.99945720  0.49326244
+9194	 -6.27336284	 -0.00033657	  0.00020617	  7.27302627	  0.99897194	  0.99945726  0.49326221
+9195	 -6.27336293	 -0.00033653	  0.00020615	  7.27302640	  0.99897205	  0.99945732  0.49326264
+9196	 -6.27336302	 -0.00033650	  0.00020613	  7.27302652	  0.99897216	  0.99945738  0.49326232
+9197	 -6.27336311	 -0.00033646	  0.00020611	  7.27302665	  0.99897228	  0.99945743  0.49326230
+9198	 -6.27336319	 -0.00033642	  0.00020608	  7.27302677	  0.99897239	  0.99945749  0.49326227
+9199	 -6.27336328	 -0.00033639	  0.00020606	  7.27302689	  0.99897250	  0.99945755  0.49326245
+9200	 -6.27336337	 -0.00033635	  0.00020604	  7.27302702	  0.99897261	  0.99945761  0.49326242
+9201	 -6.27336346	 -0.00033631	  0.00020602	  7.27302714	  0.99897272	  0.99945767  0.49326246
+9202	 -6.27336354	 -0.00033628	  0.00020599	  7.27302727	  0.99897283	  0.99945773  0.49326241
+9203	 -6.27336363	 -0.00033624	  0.00020597	  7.27302739	  0.99897295	  0.99945779  0.49326240
+9204	 -6.27336372	 -0.00033620	  0.00020595	  7.27302751	  0.99897306	  0.99945785  0.49326249
+9205	 -6.27336381	 -0.00033617	  0.00020593	  7.27302764	  0.99897317	  0.99945791  0.49326270
+9206	 -6.27336389	 -0.00033613	  0.00020590	  7.27302776	  0.99897328	  0.99945797  0.49326235
+9207	 -6.27336398	 -0.00033609	  0.00020588	  7.27302789	  0.99897339	  0.99945802  0.49326239
+9208	 -6.27336407	 -0.00033606	  0.00020586	  7.27302801	  0.99897350	  0.99945808  0.49326248
+9209	 -6.27336415	 -0.00033602	  0.00020584	  7.27302813	  0.99897362	  0.99945814  0.49326264
+9210	 -6.27336424	 -0.00033598	  0.00020582	  7.27302826	  0.99897373	  0.99945820  0.49326263
+9211	 -6.27336433	 -0.00033595	  0.00020579	  7.27302838	  0.99897384	  0.99945826  0.49326243
+9212	 -6.27336442	 -0.00033591	  0.00020577	  7.27302851	  0.99897395	  0.99945832  0.49326267
+9213	 -6.27336450	 -0.00033587	  0.00020575	  7.27302863	  0.99897406	  0.99945838  0.49326234
+9214	 -6.27336459	 -0.00033584	  0.00020573	  7.27302875	  0.99897417	  0.99945844  0.49326251
+9215	 -6.27336468	 -0.00033580	  0.00020570	  7.27302888	  0.99897428	  0.99945849  0.49326259
+9216	 -6.27336477	 -0.00033577	  0.00020568	  7.27302900	  0.99897439	  0.99945855  0.49326266
+9217	 -6.27336485	 -0.00033573	  0.00020566	  7.27302912	  0.99897451	  0.99945861  0.49326257
+9218	 -6.27336494	 -0.00033569	  0.00020564	  7.27302925	  0.99897462	  0.99945867  0.49326257
+9219	 -6.27336503	 -0.00033566	  0.00020561	  7.27302937	  0.99897473	  0.99945873  0.49326264
+9220	 -6.27336511	 -0.00033562	  0.00020559	  7.27302949	  0.99897484	  0.99945879  0.49326274
+9221	 -6.27336520	 -0.00033558	  0.00020557	  7.27302962	  0.99897495	  0.99945885  0.49326286
+9222	 -6.27336529	 -0.00033555	  0.00020555	  7.27302974	  0.99897506	  0.99945891  0.49326289
+9223	 -6.27336538	 -0.00033551	  0.00020553	  7.27302986	  0.99897517	  0.99945896  0.49326274
+9224	 -6.27336546	 -0.00033547	  0.00020550	  7.27302999	  0.99897528	  0.99945902  0.49326267
+9225	 -6.27336555	 -0.00033544	  0.00020548	  7.27303011	  0.99897540	  0.99945908  0.49326282
+9226	 -6.27336564	 -0.00033540	  0.00020546	  7.27303023	  0.99897551	  0.99945914  0.49326268
+9227	 -6.27336572	 -0.00033537	  0.00020544	  7.27303036	  0.99897562	  0.99945920  0.49326305
+9228	 -6.27336581	 -0.00033533	  0.00020541	  7.27303048	  0.99897573	  0.99945926  0.49326276
+9229	 -6.27336590	 -0.00033529	  0.00020539	  7.27303060	  0.99897584	  0.99945932  0.49326281
+9230	 -6.27336598	 -0.00033526	  0.00020537	  7.27303073	  0.99897595	  0.99945937  0.49326294
+9231	 -6.27336607	 -0.00033522	  0.00020535	  7.27303085	  0.99897606	  0.99945943  0.49326286
+9232	 -6.27336616	 -0.00033518	  0.00020532	  7.27303097	  0.99897617	  0.99945949  0.49326281
+9233	 -6.27336625	 -0.00033515	  0.00020530	  7.27303110	  0.99897628	  0.99945955  0.49326286
+9234	 -6.27336633	 -0.00033511	  0.00020528	  7.27303122	  0.99897639	  0.99945961  0.49326297
+9235	 -6.27336642	 -0.00033508	  0.00020526	  7.27303134	  0.99897650	  0.99945967  0.49326279
+9236	 -6.27336651	 -0.00033504	  0.00020524	  7.27303147	  0.99897662	  0.99945973  0.49326311
+9237	 -6.27336659	 -0.00033500	  0.00020521	  7.27303159	  0.99897673	  0.99945978  0.49326289
+9238	 -6.27336668	 -0.00033497	  0.00020519	  7.27303171	  0.99897684	  0.99945984  0.49326305
+9239	 -6.27336677	 -0.00033493	  0.00020517	  7.27303184	  0.99897695	  0.99945990  0.49326297
+9240	 -6.27336685	 -0.00033489	  0.00020515	  7.27303196	  0.99897706	  0.99945996  0.49326277
+9241	 -6.27336694	 -0.00033486	  0.00020512	  7.27303208	  0.99897717	  0.99946002  0.49326308
+9242	 -6.27336703	 -0.00033482	  0.00020510	  7.27303221	  0.99897728	  0.99946008  0.49326289
+9243	 -6.27336711	 -0.00033479	  0.00020508	  7.27303233	  0.99897739	  0.99946013  0.49326298
+9244	 -6.27336720	 -0.00033475	  0.00020506	  7.27303245	  0.99897750	  0.99946019  0.49326300
+9245	 -6.27336729	 -0.00033471	  0.00020504	  7.27303257	  0.99897761	  0.99946025  0.49326304
+9246	 -6.27336737	 -0.00033468	  0.00020501	  7.27303270	  0.99897772	  0.99946031  0.49326311
+9247	 -6.27336746	 -0.00033464	  0.00020499	  7.27303282	  0.99897783	  0.99946037  0.49326309
+9248	 -6.27336755	 -0.00033460	  0.00020497	  7.27303294	  0.99897794	  0.99946043  0.49326303
+9249	 -6.27336763	 -0.00033457	  0.00020495	  7.27303306	  0.99897805	  0.99946048  0.49326308
+9250	 -6.27336772	 -0.00033453	  0.00020493	  7.27303319	  0.99897816	  0.99946054  0.49326287
+9251	 -6.27336781	 -0.00033450	  0.00020490	  7.27303331	  0.99897827	  0.99946060  0.49326314
+9252	 -6.27336789	 -0.00033446	  0.00020488	  7.27303343	  0.99897839	  0.99946066  0.49326307
+9253	 -6.27336798	 -0.00033442	  0.00020486	  7.27303356	  0.99897850	  0.99946072  0.49326307
+9254	 -6.27336807	 -0.00033439	  0.00020484	  7.27303368	  0.99897861	  0.99946078  0.49326322
+9255	 -6.27336815	 -0.00033435	  0.00020481	  7.27303380	  0.99897872	  0.99946083  0.49326311
+9256	 -6.27336824	 -0.00033432	  0.00020479	  7.27303392	  0.99897883	  0.99946089  0.49326322
+9257	 -6.27336833	 -0.00033428	  0.00020477	  7.27303405	  0.99897894	  0.99946095  0.49326339
+9258	 -6.27336841	 -0.00033424	  0.00020475	  7.27303417	  0.99897905	  0.99946101  0.49326319
+9259	 -6.27336850	 -0.00033421	  0.00020473	  7.27303429	  0.99897916	  0.99946107  0.49326315
+9260	 -6.27336858	 -0.00033417	  0.00020470	  7.27303441	  0.99897927	  0.99946113  0.49326326
+9261	 -6.27336867	 -0.00033413	  0.00020468	  7.27303454	  0.99897938	  0.99946118  0.49326320
+9262	 -6.27336876	 -0.00033410	  0.00020466	  7.27303466	  0.99897949	  0.99946124  0.49326335
+9263	 -6.27336884	 -0.00033406	  0.00020464	  7.27303478	  0.99897960	  0.99946130  0.49326321
+9264	 -6.27336893	 -0.00033403	  0.00020462	  7.27303490	  0.99897971	  0.99946136  0.49326341
+9265	 -6.27336902	 -0.00033399	  0.00020459	  7.27303503	  0.99897982	  0.99946142  0.49326319
+9266	 -6.27336910	 -0.00033395	  0.00020457	  7.27303515	  0.99897993	  0.99946147  0.49326349
+9267	 -6.27336919	 -0.00033392	  0.00020455	  7.27303527	  0.99898004	  0.99946153  0.49326330
+9268	 -6.27336927	 -0.00033388	  0.00020453	  7.27303539	  0.99898015	  0.99946159  0.49326316
+9269	 -6.27336936	 -0.00033385	  0.00020451	  7.27303551	  0.99898026	  0.99946165  0.49326319
+9270	 -6.27336945	 -0.00033381	  0.00020448	  7.27303564	  0.99898037	  0.99946171  0.49326337
+9271	 -6.27336953	 -0.00033377	  0.00020446	  7.27303576	  0.99898048	  0.99946176  0.49326350
+9272	 -6.27336962	 -0.00033374	  0.00020444	  7.27303588	  0.99898059	  0.99946182  0.49326333
+9273	 -6.27336971	 -0.00033370	  0.00020442	  7.27303600	  0.99898070	  0.99946188  0.49326343
+9274	 -6.27336979	 -0.00033367	  0.00020439	  7.27303613	  0.99898081	  0.99946194  0.49326342
+9275	 -6.27336988	 -0.00033363	  0.00020437	  7.27303625	  0.99898092	  0.99946200  0.49326348
+9276	 -6.27336996	 -0.00033359	  0.00020435	  7.27303637	  0.99898103	  0.99946205  0.49326358
+9277	 -6.27337005	 -0.00033356	  0.00020433	  7.27303649	  0.99898114	  0.99946211  0.49326344
+9278	 -6.27337014	 -0.00033352	  0.00020431	  7.27303661	  0.99898125	  0.99946217  0.49326333
+9279	 -6.27337022	 -0.00033349	  0.00020428	  7.27303674	  0.99898136	  0.99946223  0.49326344
+9280	 -6.27337031	 -0.00033345	  0.00020426	  7.27303686	  0.99898147	  0.99946229  0.49326346
+9281	 -6.27337039	 -0.00033342	  0.00020424	  7.27303698	  0.99898158	  0.99946234  0.49326354
+9282	 -6.27337048	 -0.00033338	  0.00020422	  7.27303710	  0.99898169	  0.99946240  0.49326336
+9283	 -6.27337057	 -0.00033334	  0.00020420	  7.27303722	  0.99898180	  0.99946246  0.49326349
+9284	 -6.27337065	 -0.00033331	  0.00020417	  7.27303734	  0.99898191	  0.99946252  0.49326348
+9285	 -6.27337074	 -0.00033327	  0.00020415	  7.27303747	  0.99898202	  0.99946258  0.49326342
+9286	 -6.27337082	 -0.00033324	  0.00020413	  7.27303759	  0.99898213	  0.99946263  0.49326343
+9287	 -6.27337091	 -0.00033320	  0.00020411	  7.27303771	  0.99898224	  0.99946269  0.49326362
+9288	 -6.27337100	 -0.00033316	  0.00020409	  7.27303783	  0.99898234	  0.99946275  0.49326356
+9289	 -6.27337108	 -0.00033313	  0.00020406	  7.27303795	  0.99898245	  0.99946281  0.49326362
+9290	 -6.27337117	 -0.00033309	  0.00020404	  7.27303808	  0.99898256	  0.99946287  0.49326353
+9291	 -6.27337125	 -0.00033306	  0.00020402	  7.27303820	  0.99898267	  0.99946292  0.49326384
+9292	 -6.27337134	 -0.00033302	  0.00020400	  7.27303832	  0.99898278	  0.99946298  0.49326355
+9293	 -6.27337142	 -0.00033298	  0.00020398	  7.27303844	  0.99898289	  0.99946304  0.49326361
+9294	 -6.27337151	 -0.00033295	  0.00020395	  7.27303856	  0.99898300	  0.99946310  0.49326362
+9295	 -6.27337160	 -0.00033291	  0.00020393	  7.27303868	  0.99898311	  0.99946315  0.49326349
+9296	 -6.27337168	 -0.00033288	  0.00020391	  7.27303880	  0.99898322	  0.99946321  0.49326369
+9297	 -6.27337177	 -0.00033284	  0.00020389	  7.27303893	  0.99898333	  0.99946327  0.49326369
+9298	 -6.27337185	 -0.00033281	  0.00020387	  7.27303905	  0.99898344	  0.99946333  0.49326369
+9299	 -6.27337194	 -0.00033277	  0.00020385	  7.27303917	  0.99898355	  0.99946338  0.49326367
+9300	 -6.27337202	 -0.00033273	  0.00020382	  7.27303929	  0.99898366	  0.99946344  0.49326359
+9301	 -6.27337211	 -0.00033270	  0.00020380	  7.27303941	  0.99898377	  0.99946350  0.49326376
+9302	 -6.27337220	 -0.00033266	  0.00020378	  7.27303953	  0.99898388	  0.99946356  0.49326382
+9303	 -6.27337228	 -0.00033263	  0.00020376	  7.27303965	  0.99898399	  0.99946362  0.49326384
+9304	 -6.27337237	 -0.00033259	  0.00020374	  7.27303978	  0.99898409	  0.99946367  0.49326379
+9305	 -6.27337245	 -0.00033256	  0.00020371	  7.27303990	  0.99898420	  0.99946373  0.49326389
+9306	 -6.27337254	 -0.00033252	  0.00020369	  7.27304002	  0.99898431	  0.99946379  0.49326390
+9307	 -6.27337262	 -0.00033248	  0.00020367	  7.27304014	  0.99898442	  0.99946385  0.49326379
+9308	 -6.27337271	 -0.00033245	  0.00020365	  7.27304026	  0.99898453	  0.99946390  0.49326384
+9309	 -6.27337279	 -0.00033241	  0.00020363	  7.27304038	  0.99898464	  0.99946396  0.49326381
+9310	 -6.27337288	 -0.00033238	  0.00020360	  7.27304050	  0.99898475	  0.99946402  0.49326372
+9311	 -6.27337297	 -0.00033234	  0.00020358	  7.27304062	  0.99898486	  0.99946408  0.49326377
+9312	 -6.27337305	 -0.00033231	  0.00020356	  7.27304075	  0.99898497	  0.99946413  0.49326406
+9313	 -6.27337314	 -0.00033227	  0.00020354	  7.27304087	  0.99898508	  0.99946419  0.49326380
+9314	 -6.27337322	 -0.00033223	  0.00020352	  7.27304099	  0.99898519	  0.99946425  0.49326407
+9315	 -6.27337331	 -0.00033220	  0.00020350	  7.27304111	  0.99898529	  0.99946431  0.49326377
+9316	 -6.27337339	 -0.00033216	  0.00020347	  7.27304123	  0.99898540	  0.99946436  0.49326399
+9317	 -6.27337348	 -0.00033213	  0.00020345	  7.27304135	  0.99898551	  0.99946442  0.49326392
+9318	 -6.27337356	 -0.00033209	  0.00020343	  7.27304147	  0.99898562	  0.99946448  0.49326402
+9319	 -6.27337365	 -0.00033206	  0.00020341	  7.27304159	  0.99898573	  0.99946454  0.49326407
+9320	 -6.27337373	 -0.00033202	  0.00020339	  7.27304171	  0.99898584	  0.99946459  0.49326397
+9321	 -6.27337382	 -0.00033198	  0.00020336	  7.27304183	  0.99898595	  0.99946465  0.49326388
+9322	 -6.27337390	 -0.00033195	  0.00020334	  7.27304196	  0.99898606	  0.99946471  0.49326400
+9323	 -6.27337399	 -0.00033191	  0.00020332	  7.27304208	  0.99898616	  0.99946477  0.49326405
+9324	 -6.27337407	 -0.00033188	  0.00020330	  7.27304220	  0.99898627	  0.99946482  0.49326405
+9325	 -6.27337416	 -0.00033184	  0.00020328	  7.27304232	  0.99898638	  0.99946488  0.49326395
+9326	 -6.27337425	 -0.00033181	  0.00020326	  7.27304244	  0.99898649	  0.99946494  0.49326406
+9327	 -6.27337433	 -0.00033177	  0.00020323	  7.27304256	  0.99898660	  0.99946500  0.49326412
+9328	 -6.27337442	 -0.00033174	  0.00020321	  7.27304268	  0.99898671	  0.99946505  0.49326418
+9329	 -6.27337450	 -0.00033170	  0.00020319	  7.27304280	  0.99898682	  0.99946511  0.49326405
+9330	 -6.27337459	 -0.00033166	  0.00020317	  7.27304292	  0.99898693	  0.99946517  0.49326394
+9331	 -6.27337467	 -0.00033163	  0.00020315	  7.27304304	  0.99898703	  0.99946522  0.49326407
+9332	 -6.27337476	 -0.00033159	  0.00020312	  7.27304316	  0.99898714	  0.99946528  0.49326381
+9333	 -6.27337484	 -0.00033156	  0.00020310	  7.27304328	  0.99898725	  0.99946534  0.49326400
+9334	 -6.27337493	 -0.00033152	  0.00020308	  7.27304340	  0.99898736	  0.99946540  0.49326414
+9335	 -6.27337501	 -0.00033149	  0.00020306	  7.27304352	  0.99898747	  0.99946545  0.49326426
+9336	 -6.27337510	 -0.00033145	  0.00020304	  7.27304364	  0.99898758	  0.99946551  0.49326422
+9337	 -6.27337518	 -0.00033142	  0.00020302	  7.27304376	  0.99898768	  0.99946557  0.49326412
+9338	 -6.27337527	 -0.00033138	  0.00020299	  7.27304389	  0.99898779	  0.99946563  0.49326410
+9339	 -6.27337535	 -0.00033135	  0.00020297	  7.27304401	  0.99898790	  0.99946568  0.49326415
+9340	 -6.27337544	 -0.00033131	  0.00020295	  7.27304413	  0.99898801	  0.99946574  0.49326422
+9341	 -6.27337552	 -0.00033127	  0.00020293	  7.27304425	  0.99898812	  0.99946580  0.49326416
+9342	 -6.27337561	 -0.00033124	  0.00020291	  7.27304437	  0.99898823	  0.99946585  0.49326449
+9343	 -6.27337569	 -0.00033120	  0.00020289	  7.27304449	  0.99898833	  0.99946591  0.49326425
+9344	 -6.27337578	 -0.00033117	  0.00020286	  7.27304461	  0.99898844	  0.99946597  0.49326435
+9345	 -6.27337586	 -0.00033113	  0.00020284	  7.27304473	  0.99898855	  0.99946603  0.49326445
+9346	 -6.27337594	 -0.00033110	  0.00020282	  7.27304485	  0.99898866	  0.99946608  0.49326455
+9347	 -6.27337603	 -0.00033106	  0.00020280	  7.27304497	  0.99898877	  0.99946614  0.49326433
+9348	 -6.27337611	 -0.00033103	  0.00020278	  7.27304509	  0.99898888	  0.99946620  0.49326418
+9349	 -6.27337620	 -0.00033099	  0.00020275	  7.27304521	  0.99898898	  0.99946625  0.49326429
+9350	 -6.27337628	 -0.00033096	  0.00020273	  7.27304533	  0.99898909	  0.99946631  0.49326433
+9351	 -6.27337637	 -0.00033092	  0.00020271	  7.27304545	  0.99898920	  0.99946637  0.49326438
+9352	 -6.27337645	 -0.00033088	  0.00020269	  7.27304557	  0.99898931	  0.99946643  0.49326440
+9353	 -6.27337654	 -0.00033085	  0.00020267	  7.27304569	  0.99898942	  0.99946648  0.49326448
+9354	 -6.27337662	 -0.00033081	  0.00020265	  7.27304581	  0.99898952	  0.99946654  0.49326440
+9355	 -6.27337671	 -0.00033078	  0.00020262	  7.27304593	  0.99898963	  0.99946660  0.49326441
+9356	 -6.27337679	 -0.00033074	  0.00020260	  7.27304605	  0.99898974	  0.99946665  0.49326439
+9357	 -6.27337688	 -0.00033071	  0.00020258	  7.27304617	  0.99898985	  0.99946671  0.49326444
+9358	 -6.27337696	 -0.00033067	  0.00020256	  7.27304629	  0.99898996	  0.99946677  0.49326437
+9359	 -6.27337705	 -0.00033064	  0.00020254	  7.27304641	  0.99899006	  0.99946682  0.49326463
+9360	 -6.27337713	 -0.00033060	  0.00020252	  7.27304653	  0.99899017	  0.99946688  0.49326433
+9361	 -6.27337721	 -0.00033057	  0.00020250	  7.27304665	  0.99899028	  0.99946694  0.49326452
+9362	 -6.27337730	 -0.00033053	  0.00020247	  7.27304677	  0.99899039	  0.99946700  0.49326464
+9363	 -6.27337738	 -0.00033050	  0.00020245	  7.27304689	  0.99899050	  0.99946705  0.49326462
+9364	 -6.27337747	 -0.00033046	  0.00020243	  7.27304701	  0.99899060	  0.99946711  0.49326446
+9365	 -6.27337755	 -0.00033043	  0.00020241	  7.27304713	  0.99899071	  0.99946717  0.49326448
+9366	 -6.27337764	 -0.00033039	  0.00020239	  7.27304725	  0.99899082	  0.99946722  0.49326479
+9367	 -6.27337772	 -0.00033035	  0.00020237	  7.27304737	  0.99899093	  0.99946728  0.49326445
+9368	 -6.27337781	 -0.00033032	  0.00020234	  7.27304749	  0.99899103	  0.99946734  0.49326446
+9369	 -6.27337789	 -0.00033028	  0.00020232	  7.27304761	  0.99899114	  0.99946739  0.49326446
+9370	 -6.27337797	 -0.00033025	  0.00020230	  7.27304773	  0.99899125	  0.99946745  0.49326456
+9371	 -6.27337806	 -0.00033021	  0.00020228	  7.27304785	  0.99899136	  0.99946751  0.49326462
+9372	 -6.27337814	 -0.00033018	  0.00020226	  7.27304796	  0.99899146	  0.99946756  0.49326466
+9373	 -6.27337823	 -0.00033014	  0.00020224	  7.27304808	  0.99899157	  0.99946762  0.49326469
+9374	 -6.27337831	 -0.00033011	  0.00020221	  7.27304820	  0.99899168	  0.99946768  0.49326455
+9375	 -6.27337840	 -0.00033007	  0.00020219	  7.27304832	  0.99899179	  0.99946773  0.49326445
+9376	 -6.27337848	 -0.00033004	  0.00020217	  7.27304844	  0.99899190	  0.99946779  0.49326466
+9377	 -6.27337856	 -0.00033000	  0.00020215	  7.27304856	  0.99899200	  0.99946785  0.49326467
+9378	 -6.27337865	 -0.00032997	  0.00020213	  7.27304868	  0.99899211	  0.99946790  0.49326472
+9379	 -6.27337873	 -0.00032993	  0.00020211	  7.27304880	  0.99899222	  0.99946796  0.49326465
+9380	 -6.27337882	 -0.00032990	  0.00020208	  7.27304892	  0.99899233	  0.99946802  0.49326487
+9381	 -6.27337890	 -0.00032986	  0.00020206	  7.27304904	  0.99899243	  0.99946807  0.49326453
+9382	 -6.27337899	 -0.00032983	  0.00020204	  7.27304916	  0.99899254	  0.99946813  0.49326462
+9383	 -6.27337907	 -0.00032979	  0.00020202	  7.27304928	  0.99899265	  0.99946819  0.49326466
+9384	 -6.27337915	 -0.00032976	  0.00020200	  7.27304940	  0.99899275	  0.99946824  0.49326470
+9385	 -6.27337924	 -0.00032972	  0.00020198	  7.27304952	  0.99899286	  0.99946830  0.49326485
+9386	 -6.27337932	 -0.00032969	  0.00020196	  7.27304964	  0.99899297	  0.99946836  0.49326493
+9387	 -6.27337941	 -0.00032965	  0.00020193	  7.27304976	  0.99899308	  0.99946841  0.49326472
+9388	 -6.27337949	 -0.00032962	  0.00020191	  7.27304987	  0.99899318	  0.99946847  0.49326466
+9389	 -6.27337957	 -0.00032958	  0.00020189	  7.27304999	  0.99899329	  0.99946853  0.49326475
+9390	 -6.27337966	 -0.00032955	  0.00020187	  7.27305011	  0.99899340	  0.99946858  0.49326474
+9391	 -6.27337974	 -0.00032951	  0.00020185	  7.27305023	  0.99899351	  0.99946864  0.49326494
+9392	 -6.27337983	 -0.00032948	  0.00020183	  7.27305035	  0.99899361	  0.99946870  0.49326475
+9393	 -6.27337991	 -0.00032944	  0.00020181	  7.27305047	  0.99899372	  0.99946875  0.49326504
+9394	 -6.27337999	 -0.00032941	  0.00020178	  7.27305059	  0.99899383	  0.99946881  0.49326510
+9395	 -6.27338008	 -0.00032937	  0.00020176	  7.27305071	  0.99899393	  0.99946887  0.49326506
+9396	 -6.27338016	 -0.00032934	  0.00020174	  7.27305083	  0.99899404	  0.99946892  0.49326491
+9397	 -6.27338025	 -0.00032930	  0.00020172	  7.27305095	  0.99899415	  0.99946898  0.49326495
+9398	 -6.27338033	 -0.00032927	  0.00020170	  7.27305106	  0.99899425	  0.99946904  0.49326488
+9399	 -6.27338041	 -0.00032923	  0.00020168	  7.27305118	  0.99899436	  0.99946909  0.49326492
+9400	 -6.27338050	 -0.00032920	  0.00020165	  7.27305130	  0.99899447	  0.99946915  0.49326492
+9401	 -6.27338058	 -0.00032916	  0.00020163	  7.27305142	  0.99899458	  0.99946921  0.49326493
+9402	 -6.27338067	 -0.00032913	  0.00020161	  7.27305154	  0.99899468	  0.99946926  0.49326498
+9403	 -6.27338075	 -0.00032909	  0.00020159	  7.27305166	  0.99899479	  0.99946932  0.49326509
+9404	 -6.27338083	 -0.00032906	  0.00020157	  7.27305178	  0.99899490	  0.99946938  0.49326511
+9405	 -6.27338092	 -0.00032902	  0.00020155	  7.27305190	  0.99899500	  0.99946943  0.49326491
+9406	 -6.27338100	 -0.00032899	  0.00020153	  7.27305201	  0.99899511	  0.99946949  0.49326497
+9407	 -6.27338108	 -0.00032895	  0.00020150	  7.27305213	  0.99899522	  0.99946954  0.49326517
+9408	 -6.27338117	 -0.00032892	  0.00020148	  7.27305225	  0.99899532	  0.99946960  0.49326501
+9409	 -6.27338125	 -0.00032888	  0.00020146	  7.27305237	  0.99899543	  0.99946966  0.49326506
+9410	 -6.27338134	 -0.00032885	  0.00020144	  7.27305249	  0.99899554	  0.99946971  0.49326507
+9411	 -6.27338142	 -0.00032881	  0.00020142	  7.27305261	  0.99899564	  0.99946977  0.49326497
+9412	 -6.27338150	 -0.00032878	  0.00020140	  7.27305273	  0.99899575	  0.99946983  0.49326508
+9413	 -6.27338159	 -0.00032874	  0.00020138	  7.27305284	  0.99899586	  0.99946988  0.49326522
+9414	 -6.27338167	 -0.00032871	  0.00020135	  7.27305296	  0.99899596	  0.99946994  0.49326525
+9415	 -6.27338175	 -0.00032867	  0.00020133	  7.27305308	  0.99899607	  0.99946999  0.49326527
+9416	 -6.27338184	 -0.00032864	  0.00020131	  7.27305320	  0.99899618	  0.99947005  0.49326512
+9417	 -6.27338192	 -0.00032860	  0.00020129	  7.27305332	  0.99899628	  0.99947011  0.49326544
+9418	 -6.27338200	 -0.00032857	  0.00020127	  7.27305344	  0.99899639	  0.99947016  0.49326511
+9419	 -6.27338209	 -0.00032853	  0.00020125	  7.27305356	  0.99899650	  0.99947022  0.49326525
+9420	 -6.27338217	 -0.00032850	  0.00020123	  7.27305367	  0.99899660	  0.99947028  0.49326517
+9421	 -6.27338225	 -0.00032846	  0.00020121	  7.27305379	  0.99899671	  0.99947033  0.49326515
+9422	 -6.27338234	 -0.00032843	  0.00020118	  7.27305391	  0.99899682	  0.99947039  0.49326512
+9423	 -6.27338242	 -0.00032839	  0.00020116	  7.27305403	  0.99899692	  0.99947045  0.49326510
+9424	 -6.27338250	 -0.00032836	  0.00020114	  7.27305415	  0.99899703	  0.99947050  0.49326538
+9425	 -6.27338259	 -0.00032832	  0.00020112	  7.27305427	  0.99899714	  0.99947056  0.49326526
+9426	 -6.27338267	 -0.00032829	  0.00020110	  7.27305438	  0.99899724	  0.99947061  0.49326555
+9427	 -6.27338275	 -0.00032825	  0.00020108	  7.27305450	  0.99899735	  0.99947067  0.49326559
+9428	 -6.27338284	 -0.00032822	  0.00020106	  7.27305462	  0.99899745	  0.99947073  0.49326528
+9429	 -6.27338292	 -0.00032818	  0.00020103	  7.27305474	  0.99899756	  0.99947078  0.49326542
+9430	 -6.27338300	 -0.00032815	  0.00020101	  7.27305486	  0.99899767	  0.99947084  0.49326519
+9431	 -6.27338309	 -0.00032811	  0.00020099	  7.27305497	  0.99899777	  0.99947089  0.49326536
+9432	 -6.27338317	 -0.00032808	  0.00020097	  7.27305509	  0.99899788	  0.99947095  0.49326533
+9433	 -6.27338325	 -0.00032804	  0.00020095	  7.27305521	  0.99899799	  0.99947101  0.49326540
+9434	 -6.27338334	 -0.00032801	  0.00020093	  7.27305533	  0.99899809	  0.99947106  0.49326552
+9435	 -6.27338342	 -0.00032797	  0.00020091	  7.27305545	  0.99899820	  0.99947112  0.49326543
+9436	 -6.27338350	 -0.00032794	  0.00020089	  7.27305556	  0.99899830	  0.99947117  0.49326548
+9437	 -6.27338359	 -0.00032791	  0.00020086	  7.27305568	  0.99899841	  0.99947123  0.49326555
+9438	 -6.27338367	 -0.00032787	  0.00020084	  7.27305580	  0.99899852	  0.99947129  0.49326550
+9439	 -6.27338375	 -0.00032784	  0.00020082	  7.27305592	  0.99899862	  0.99947134  0.49326539
+9440	 -6.27338384	 -0.00032780	  0.00020080	  7.27305604	  0.99899873	  0.99947140  0.49326537
+9441	 -6.27338392	 -0.00032777	  0.00020078	  7.27305615	  0.99899884	  0.99947145  0.49326540
+9442	 -6.27338400	 -0.00032773	  0.00020076	  7.27305627	  0.99899894	  0.99947151  0.49326552
+9443	 -6.27338409	 -0.00032770	  0.00020074	  7.27305639	  0.99899905	  0.99947157  0.49326544
+9444	 -6.27338417	 -0.00032766	  0.00020072	  7.27305651	  0.99899915	  0.99947162  0.49326541
+9445	 -6.27338425	 -0.00032763	  0.00020069	  7.27305662	  0.99899926	  0.99947168  0.49326544
+9446	 -6.27338433	 -0.00032759	  0.00020067	  7.27305674	  0.99899937	  0.99947173  0.49326555
+9447	 -6.27338442	 -0.00032756	  0.00020065	  7.27305686	  0.99899947	  0.99947179  0.49326592
+9448	 -6.27338450	 -0.00032752	  0.00020063	  7.27305698	  0.99899958	  0.99947185  0.49326555
+9449	 -6.27338458	 -0.00032749	  0.00020061	  7.27305709	  0.99899968	  0.99947190  0.49326556
+9450	 -6.27338467	 -0.00032745	  0.00020059	  7.27305721	  0.99899979	  0.99947196  0.49326577
+9451	 -6.27338475	 -0.00032742	  0.00020057	  7.27305733	  0.99899989	  0.99947201  0.49326572
+9452	 -6.27338483	 -0.00032739	  0.00020055	  7.27305745	  0.99900000	  0.99947207  0.49326564
+9453	 -6.27338492	 -0.00032735	  0.00020052	  7.27305756	  0.99900011	  0.99947213  0.49326574
+9454	 -6.27338500	 -0.00032732	  0.00020050	  7.27305768	  0.99900021	  0.99947218  0.49326570
+9455	 -6.27338508	 -0.00032728	  0.00020048	  7.27305780	  0.99900032	  0.99947224  0.49326585
+9456	 -6.27338516	 -0.00032725	  0.00020046	  7.27305792	  0.99900042	  0.99947229  0.49326561
+9457	 -6.27338525	 -0.00032721	  0.00020044	  7.27305804	  0.99900053	  0.99947235  0.49326554
+9458	 -6.27338533	 -0.00032718	  0.00020042	  7.27305815	  0.99900063	  0.99947240  0.49326565
+9459	 -6.27338541	 -0.00032714	  0.00020040	  7.27305827	  0.99900074	  0.99947246  0.49326560
+9460	 -6.27338550	 -0.00032711	  0.00020038	  7.27305839	  0.99900085	  0.99947252  0.49326561
+9461	 -6.27338558	 -0.00032707	  0.00020035	  7.27305850	  0.99900095	  0.99947257  0.49326588
+9462	 -6.27338566	 -0.00032704	  0.00020033	  7.27305862	  0.99900106	  0.99947263  0.49326567
+9463	 -6.27338574	 -0.00032700	  0.00020031	  7.27305874	  0.99900116	  0.99947268  0.49326573
+9464	 -6.27338583	 -0.00032697	  0.00020029	  7.27305886	  0.99900127	  0.99947274  0.49326588
+9465	 -6.27338591	 -0.00032694	  0.00020027	  7.27305897	  0.99900137	  0.99947279  0.49326587
+9466	 -6.27338599	 -0.00032690	  0.00020025	  7.27305909	  0.99900148	  0.99947285  0.49326591
+9467	 -6.27338607	 -0.00032687	  0.00020023	  7.27305921	  0.99900158	  0.99947291  0.49326568
+9468	 -6.27338616	 -0.00032683	  0.00020021	  7.27305932	  0.99900169	  0.99947296  0.49326586
+9469	 -6.27338624	 -0.00032680	  0.00020019	  7.27305944	  0.99900180	  0.99947302  0.49326595
+9470	 -6.27338632	 -0.00032676	  0.00020016	  7.27305956	  0.99900190	  0.99947307  0.49326594
+9471	 -6.27338640	 -0.00032673	  0.00020014	  7.27305968	  0.99900201	  0.99947313  0.49326576
+9472	 -6.27338649	 -0.00032669	  0.00020012	  7.27305979	  0.99900211	  0.99947318  0.49326600
+9473	 -6.27338657	 -0.00032666	  0.00020010	  7.27305991	  0.99900222	  0.99947324  0.49326567
+9474	 -6.27338665	 -0.00032663	  0.00020008	  7.27306003	  0.99900232	  0.99947330  0.49326591
+9475	 -6.27338674	 -0.00032659	  0.00020006	  7.27306014	  0.99900243	  0.99947335  0.49326584
+9476	 -6.27338682	 -0.00032656	  0.00020004	  7.27306026	  0.99900253	  0.99947341  0.49326591
+9477	 -6.27338690	 -0.00032652	  0.00020002	  7.27306038	  0.99900264	  0.99947346  0.49326598
+9478	 -6.27338698	 -0.00032649	  0.00020000	  7.27306050	  0.99900274	  0.99947352  0.49326605
+9479	 -6.27338706	 -0.00032645	  0.00019997	  7.27306061	  0.99900285	  0.99947357  0.49326584
+9480	 -6.27338715	 -0.00032642	  0.00019995	  7.27306073	  0.99900295	  0.99947363  0.49326610
+9481	 -6.27338723	 -0.00032638	  0.00019993	  7.27306085	  0.99900306	  0.99947368  0.49326584
+9482	 -6.27338731	 -0.00032635	  0.00019991	  7.27306096	  0.99900316	  0.99947374  0.49326595
+9483	 -6.27338739	 -0.00032632	  0.00019989	  7.27306108	  0.99900327	  0.99947379  0.49326574
+9484	 -6.27338748	 -0.00032628	  0.00019987	  7.27306120	  0.99900337	  0.99947385  0.49326593
+9485	 -6.27338756	 -0.00032625	  0.00019985	  7.27306131	  0.99900348	  0.99947391  0.49326617
+9486	 -6.27338764	 -0.00032621	  0.00019983	  7.27306143	  0.99900358	  0.99947396  0.49326608
+9487	 -6.27338772	 -0.00032618	  0.00019981	  7.27306155	  0.99900369	  0.99947402  0.49326601
+9488	 -6.27338781	 -0.00032614	  0.00019978	  7.27306166	  0.99900379	  0.99947407  0.49326595
+9489	 -6.27338789	 -0.00032611	  0.00019976	  7.27306178	  0.99900390	  0.99947413  0.49326615
+9490	 -6.27338797	 -0.00032607	  0.00019974	  7.27306190	  0.99900400	  0.99947418  0.49326594
+9491	 -6.27338805	 -0.00032604	  0.00019972	  7.27306201	  0.99900411	  0.99947424  0.49326623
+9492	 -6.27338814	 -0.00032601	  0.00019970	  7.27306213	  0.99900421	  0.99947429  0.49326628
+9493	 -6.27338822	 -0.00032597	  0.00019968	  7.27306225	  0.99900432	  0.99947435  0.49326618
+9494	 -6.27338830	 -0.00032594	  0.00019966	  7.27306236	  0.99900442	  0.99947440  0.49326621
+9495	 -6.27338838	 -0.00032590	  0.00019964	  7.27306248	  0.99900453	  0.99947446  0.49326598
+9496	 -6.27338846	 -0.00032587	  0.00019962	  7.27306260	  0.99900463	  0.99947452  0.49326615
+9497	 -6.27338855	 -0.00032583	  0.00019960	  7.27306271	  0.99900474	  0.99947457  0.49326647
+9498	 -6.27338863	 -0.00032580	  0.00019957	  7.27306283	  0.99900484	  0.99947463  0.49326621
+9499	 -6.27338871	 -0.00032577	  0.00019955	  7.27306294	  0.99900495	  0.99947468  0.49326643
+9500	 -6.27338879	 -0.00032573	  0.00019953	  7.27306306	  0.99900505	  0.99947474  0.49326629
+9501	 -6.27338887	 -0.00032570	  0.00019951	  7.27306318	  0.99900516	  0.99947479  0.49326635
+9502	 -6.27338896	 -0.00032566	  0.00019949	  7.27306329	  0.99900526	  0.99947485  0.49326632
+9503	 -6.27338904	 -0.00032563	  0.00019947	  7.27306341	  0.99900537	  0.99947490  0.49326626
+9504	 -6.27338912	 -0.00032559	  0.00019945	  7.27306353	  0.99900547	  0.99947496  0.49326639
+9505	 -6.27338920	 -0.00032556	  0.00019943	  7.27306364	  0.99900558	  0.99947501  0.49326627
+9506	 -6.27338928	 -0.00032553	  0.00019941	  7.27306376	  0.99900568	  0.99947507  0.49326645
+9507	 -6.27338937	 -0.00032549	  0.00019939	  7.27306387	  0.99900578	  0.99947512  0.49326623
+9508	 -6.27338945	 -0.00032546	  0.00019936	  7.27306399	  0.99900589	  0.99947518  0.49326607
+9509	 -6.27338953	 -0.00032542	  0.00019934	  7.27306411	  0.99900599	  0.99947523  0.49326641
+9510	 -6.27338961	 -0.00032539	  0.00019932	  7.27306422	  0.99900610	  0.99947529  0.49326644
+9511	 -6.27338969	 -0.00032536	  0.00019930	  7.27306434	  0.99900620	  0.99947534  0.49326635
+9512	 -6.27338978	 -0.00032532	  0.00019928	  7.27306446	  0.99900631	  0.99947540  0.49326617
+9513	 -6.27338986	 -0.00032529	  0.00019926	  7.27306457	  0.99900641	  0.99947545  0.49326647
+9514	 -6.27338994	 -0.00032525	  0.00019924	  7.27306469	  0.99900652	  0.99947551  0.49326638
+9515	 -6.27339002	 -0.00032522	  0.00019922	  7.27306480	  0.99900662	  0.99947556  0.49326625
+9516	 -6.27339010	 -0.00032518	  0.00019920	  7.27306492	  0.99900673	  0.99947562  0.49326654
+9517	 -6.27339019	 -0.00032515	  0.00019918	  7.27306504	  0.99900683	  0.99947567  0.49326643
+9518	 -6.27339027	 -0.00032512	  0.00019915	  7.27306515	  0.99900693	  0.99947573  0.49326639
+9519	 -6.27339035	 -0.00032508	  0.00019913	  7.27306527	  0.99900704	  0.99947578  0.49326643
+9520	 -6.27339043	 -0.00032505	  0.00019911	  7.27306538	  0.99900714	  0.99947584  0.49326613
+9521	 -6.27339051	 -0.00032501	  0.00019909	  7.27306550	  0.99900725	  0.99947589  0.49326635
+9522	 -6.27339059	 -0.00032498	  0.00019907	  7.27306561	  0.99900735	  0.99947595  0.49326654
+9523	 -6.27339068	 -0.00032495	  0.00019905	  7.27306573	  0.99900746	  0.99947600  0.49326649
+9524	 -6.27339076	 -0.00032491	  0.00019903	  7.27306585	  0.99900756	  0.99947606  0.49326645
+9525	 -6.27339084	 -0.00032488	  0.00019901	  7.27306596	  0.99900766	  0.99947611  0.49326635
+9526	 -6.27339092	 -0.00032484	  0.00019899	  7.27306608	  0.99900777	  0.99947617  0.49326646
+9527	 -6.27339100	 -0.00032481	  0.00019897	  7.27306619	  0.99900787	  0.99947622  0.49326660
+9528	 -6.27339108	 -0.00032477	  0.00019895	  7.27306631	  0.99900798	  0.99947628  0.49326653
+9529	 -6.27339117	 -0.00032474	  0.00019892	  7.27306642	  0.99900808	  0.99947633  0.49326655
+9530	 -6.27339125	 -0.00032471	  0.00019890	  7.27306654	  0.99900818	  0.99947639  0.49326642
+9531	 -6.27339133	 -0.00032467	  0.00019888	  7.27306666	  0.99900829	  0.99947644  0.49326648
+9532	 -6.27339141	 -0.00032464	  0.00019886	  7.27306677	  0.99900839	  0.99947650  0.49326679
+9533	 -6.27339149	 -0.00032460	  0.00019884	  7.27306689	  0.99900850	  0.99947655  0.49326686
+9534	 -6.27339157	 -0.00032457	  0.00019882	  7.27306700	  0.99900860	  0.99947661  0.49326656
+9535	 -6.27339165	 -0.00032454	  0.00019880	  7.27306712	  0.99900870	  0.99947666  0.49326662
+9536	 -6.27339174	 -0.00032450	  0.00019878	  7.27306723	  0.99900881	  0.99947672  0.49326679
+9537	 -6.27339182	 -0.00032447	  0.00019876	  7.27306735	  0.99900891	  0.99947677  0.49326673
+9538	 -6.27339190	 -0.00032443	  0.00019874	  7.27306746	  0.99900902	  0.99947683  0.49326675
+9539	 -6.27339198	 -0.00032440	  0.00019872	  7.27306758	  0.99900912	  0.99947688  0.49326682
+9540	 -6.27339206	 -0.00032437	  0.00019870	  7.27306770	  0.99900922	  0.99947694  0.49326647
+9541	 -6.27339214	 -0.00032433	  0.00019867	  7.27306781	  0.99900933	  0.99947699  0.49326653
+9542	 -6.27339222	 -0.00032430	  0.00019865	  7.27306793	  0.99900943	  0.99947705  0.49326669
+9543	 -6.27339231	 -0.00032426	  0.00019863	  7.27306804	  0.99900954	  0.99947710  0.49326657
+9544	 -6.27339239	 -0.00032423	  0.00019861	  7.27306816	  0.99900964	  0.99947716  0.49326679
+9545	 -6.27339247	 -0.00032420	  0.00019859	  7.27306827	  0.99900974	  0.99947721  0.49326690
+9546	 -6.27339255	 -0.00032416	  0.00019857	  7.27306839	  0.99900985	  0.99947727  0.49326680
+9547	 -6.27339263	 -0.00032413	  0.00019855	  7.27306850	  0.99900995	  0.99947732  0.49326670
+9548	 -6.27339271	 -0.00032409	  0.00019853	  7.27306862	  0.99901005	  0.99947738  0.49326690
+9549	 -6.27339279	 -0.00032406	  0.00019851	  7.27306873	  0.99901016	  0.99947743  0.49326682
+9550	 -6.27339287	 -0.00032403	  0.00019849	  7.27306885	  0.99901026	  0.99947749  0.49326670
+9551	 -6.27339296	 -0.00032399	  0.00019847	  7.27306896	  0.99901036	  0.99947754  0.49326689
+9552	 -6.27339304	 -0.00032396	  0.00019845	  7.27306908	  0.99901047	  0.99947760  0.49326683
+9553	 -6.27339312	 -0.00032393	  0.00019843	  7.27306919	  0.99901057	  0.99947765  0.49326682
+9554	 -6.27339320	 -0.00032389	  0.00019840	  7.27306931	  0.99901068	  0.99947770  0.49326694
+9555	 -6.27339328	 -0.00032386	  0.00019838	  7.27306942	  0.99901078	  0.99947776  0.49326682
+9556	 -6.27339336	 -0.00032382	  0.00019836	  7.27306954	  0.99901088	  0.99947781  0.49326696
+9557	 -6.27339344	 -0.00032379	  0.00019834	  7.27306965	  0.99901099	  0.99947787  0.49326703
+9558	 -6.27339352	 -0.00032376	  0.00019832	  7.27306977	  0.99901109	  0.99947792  0.49326705
+9559	 -6.27339360	 -0.00032372	  0.00019830	  7.27306988	  0.99901119	  0.99947798  0.49326683
+9560	 -6.27339369	 -0.00032369	  0.00019828	  7.27307000	  0.99901130	  0.99947803  0.49326692
+9561	 -6.27339377	 -0.00032365	  0.00019826	  7.27307011	  0.99901140	  0.99947809  0.49326694
+9562	 -6.27339385	 -0.00032362	  0.00019824	  7.27307023	  0.99901150	  0.99947814  0.49326688
+9563	 -6.27339393	 -0.00032359	  0.00019822	  7.27307034	  0.99901161	  0.99947820  0.49326687
+9564	 -6.27339401	 -0.00032355	  0.00019820	  7.27307046	  0.99901171	  0.99947825  0.49326697
+9565	 -6.27339409	 -0.00032352	  0.00019818	  7.27307057	  0.99901181	  0.99947830  0.49326717
+9566	 -6.27339417	 -0.00032349	  0.00019816	  7.27307069	  0.99901192	  0.99947836  0.49326712
+9567	 -6.27339425	 -0.00032345	  0.00019813	  7.27307080	  0.99901202	  0.99947841  0.49326703
+9568	 -6.27339433	 -0.00032342	  0.00019811	  7.27307092	  0.99901212	  0.99947847  0.49326706
+9569	 -6.27339441	 -0.00032338	  0.00019809	  7.27307103	  0.99901223	  0.99947852  0.49326716
+9570	 -6.27339450	 -0.00032335	  0.00019807	  7.27307115	  0.99901233	  0.99947858  0.49326689
+9571	 -6.27339458	 -0.00032332	  0.00019805	  7.27307126	  0.99901243	  0.99947863  0.49326699
+9572	 -6.27339466	 -0.00032328	  0.00019803	  7.27307137	  0.99901254	  0.99947869  0.49326696
+9573	 -6.27339474	 -0.00032325	  0.00019801	  7.27307149	  0.99901264	  0.99947874  0.49326718
+9574	 -6.27339482	 -0.00032321	  0.00019799	  7.27307160	  0.99901274	  0.99947880  0.49326717
+9575	 -6.27339490	 -0.00032318	  0.00019797	  7.27307172	  0.99901285	  0.99947885  0.49326705
+9576	 -6.27339498	 -0.00032315	  0.00019795	  7.27307183	  0.99901295	  0.99947890  0.49326716
+9577	 -6.27339506	 -0.00032311	  0.00019793	  7.27307195	  0.99901305	  0.99947896  0.49326730
+9578	 -6.27339514	 -0.00032308	  0.00019791	  7.27307206	  0.99901315	  0.99947901  0.49326718
+9579	 -6.27339522	 -0.00032305	  0.00019789	  7.27307218	  0.99901326	  0.99947907  0.49326722
+9580	 -6.27339530	 -0.00032301	  0.00019787	  7.27307229	  0.99901336	  0.99947912  0.49326715
+9581	 -6.27339538	 -0.00032298	  0.00019785	  7.27307241	  0.99901346	  0.99947918  0.49326728
+9582	 -6.27339546	 -0.00032295	  0.00019782	  7.27307252	  0.99901357	  0.99947923  0.49326724
+9583	 -6.27339555	 -0.00032291	  0.00019780	  7.27307263	  0.99901367	  0.99947928  0.49326701
+9584	 -6.27339563	 -0.00032288	  0.00019778	  7.27307275	  0.99901377	  0.99947934  0.49326708
+9585	 -6.27339571	 -0.00032284	  0.00019776	  7.27307286	  0.99901388	  0.99947939  0.49326726
+9586	 -6.27339579	 -0.00032281	  0.00019774	  7.27307298	  0.99901398	  0.99947945  0.49326720
+9587	 -6.27339587	 -0.00032278	  0.00019772	  7.27307309	  0.99901408	  0.99947950  0.49326714
+9588	 -6.27339595	 -0.00032274	  0.00019770	  7.27307321	  0.99901418	  0.99947956  0.49326729
+9589	 -6.27339603	 -0.00032271	  0.00019768	  7.27307332	  0.99901429	  0.99947961  0.49326744
+9590	 -6.27339611	 -0.00032268	  0.00019766	  7.27307343	  0.99901439	  0.99947966  0.49326726
+9591	 -6.27339619	 -0.00032264	  0.00019764	  7.27307355	  0.99901449	  0.99947972  0.49326746
+9592	 -6.27339627	 -0.00032261	  0.00019762	  7.27307366	  0.99901459	  0.99947977  0.49326747
+9593	 -6.27339635	 -0.00032258	  0.00019760	  7.27307378	  0.99901470	  0.99947983  0.49326746
+9594	 -6.27339643	 -0.00032254	  0.00019758	  7.27307389	  0.99901480	  0.99947988  0.49326737
+9595	 -6.27339651	 -0.00032251	  0.00019756	  7.27307400	  0.99901490	  0.99947994  0.49326725
+9596	 -6.27339659	 -0.00032247	  0.00019754	  7.27307412	  0.99901501	  0.99947999  0.49326744
+9597	 -6.27339667	 -0.00032244	  0.00019752	  7.27307423	  0.99901511	  0.99948004  0.49326734
+9598	 -6.27339675	 -0.00032241	  0.00019749	  7.27307435	  0.99901521	  0.99948010  0.49326748
+9599	 -6.27339683	 -0.00032237	  0.00019747	  7.27307446	  0.99901531	  0.99948015  0.49326735
+9600	 -6.27339691	 -0.00032234	  0.00019745	  7.27307457	  0.99901542	  0.99948021  0.49326718
+9601	 -6.27339699	 -0.00032231	  0.00019743	  7.27307469	  0.99901552	  0.99948026  0.49326726
+9602	 -6.27339708	 -0.00032227	  0.00019741	  7.27307480	  0.99901562	  0.99948031  0.49326739
+9603	 -6.27339716	 -0.00032224	  0.00019739	  7.27307492	  0.99901572	  0.99948037  0.49326736
+9604	 -6.27339724	 -0.00032221	  0.00019737	  7.27307503	  0.99901583	  0.99948042  0.49326751
+9605	 -6.27339732	 -0.00032217	  0.00019735	  7.27307514	  0.99901593	  0.99948048  0.49326746
+9606	 -6.27339740	 -0.00032214	  0.00019733	  7.27307526	  0.99901603	  0.99948053  0.49326750
+9607	 -6.27339748	 -0.00032210	  0.00019731	  7.27307537	  0.99901613	  0.99948059  0.49326720
+9608	 -6.27339756	 -0.00032207	  0.00019729	  7.27307549	  0.99901624	  0.99948064  0.49326742
+9609	 -6.27339764	 -0.00032204	  0.00019727	  7.27307560	  0.99901634	  0.99948069  0.49326770
+9610	 -6.27339772	 -0.00032200	  0.00019725	  7.27307571	  0.99901644	  0.99948075  0.49326757
+9611	 -6.27339780	 -0.00032197	  0.00019723	  7.27307583	  0.99901654	  0.99948080  0.49326750
+9612	 -6.27339788	 -0.00032194	  0.00019721	  7.27307594	  0.99901664	  0.99948086  0.49326781
+9613	 -6.27339796	 -0.00032190	  0.00019719	  7.27307605	  0.99901675	  0.99948091  0.49326776
+9614	 -6.27339804	 -0.00032187	  0.00019717	  7.27307617	  0.99901685	  0.99948096  0.49326747
+9615	 -6.27339812	 -0.00032184	  0.00019715	  7.27307628	  0.99901695	  0.99948102  0.49326778
+9616	 -6.27339820	 -0.00032180	  0.00019713	  7.27307639	  0.99901705	  0.99948107  0.49326749
+9617	 -6.27339828	 -0.00032177	  0.00019710	  7.27307651	  0.99901716	  0.99948113  0.49326751
+9618	 -6.27339836	 -0.00032174	  0.00019708	  7.27307662	  0.99901726	  0.99948118  0.49326780
+9619	 -6.27339844	 -0.00032170	  0.00019706	  7.27307674	  0.99901736	  0.99948123  0.49326747
+9620	 -6.27339852	 -0.00032167	  0.00019704	  7.27307685	  0.99901746	  0.99948129  0.49326772
+9621	 -6.27339860	 -0.00032164	  0.00019702	  7.27307696	  0.99901756	  0.99948134  0.49326768
+9622	 -6.27339868	 -0.00032160	  0.00019700	  7.27307708	  0.99901767	  0.99948139  0.49326756
+9623	 -6.27339876	 -0.00032157	  0.00019698	  7.27307719	  0.99901777	  0.99948145  0.49326753
+9624	 -6.27339884	 -0.00032154	  0.00019696	  7.27307730	  0.99901787	  0.99948150  0.49326754
+9625	 -6.27339892	 -0.00032150	  0.00019694	  7.27307742	  0.99901797	  0.99948156  0.49326763
+9626	 -6.27339900	 -0.00032147	  0.00019692	  7.27307753	  0.99901807	  0.99948161  0.49326773
+9627	 -6.27339908	 -0.00032144	  0.00019690	  7.27307764	  0.99901818	  0.99948166  0.49326760
+9628	 -6.27339916	 -0.00032140	  0.00019688	  7.27307776	  0.99901828	  0.99948172  0.49326795
+9629	 -6.27339924	 -0.00032137	  0.00019686	  7.27307787	  0.99901838	  0.99948177  0.49326781
+9630	 -6.27339932	 -0.00032134	  0.00019684	  7.27307798	  0.99901848	  0.99948183  0.49326791
+9631	 -6.27339940	 -0.00032130	  0.00019682	  7.27307810	  0.99901858	  0.99948188  0.49326782
+9632	 -6.27339948	 -0.00032127	  0.00019680	  7.27307821	  0.99901869	  0.99948193  0.49326774
+9633	 -6.27339956	 -0.00032124	  0.00019678	  7.27307832	  0.99901879	  0.99948199  0.49326801
+9634	 -6.27339964	 -0.00032120	  0.00019676	  7.27307843	  0.99901889	  0.99948204  0.49326796
+9635	 -6.27339972	 -0.00032117	  0.00019674	  7.27307855	  0.99901899	  0.99948209  0.49326796
+9636	 -6.27339980	 -0.00032114	  0.00019672	  7.27307866	  0.99901909	  0.99948215  0.49326764
+9637	 -6.27339988	 -0.00032110	  0.00019670	  7.27307877	  0.99901920	  0.99948220  0.49326786
+9638	 -6.27339996	 -0.00032107	  0.00019668	  7.27307889	  0.99901930	  0.99948226  0.49326797
+9639	 -6.27340004	 -0.00032104	  0.00019665	  7.27307900	  0.99901940	  0.99948231  0.49326772
+9640	 -6.27340012	 -0.00032100	  0.00019663	  7.27307911	  0.99901950	  0.99948236  0.49326808
+9641	 -6.27340020	 -0.00032097	  0.00019661	  7.27307923	  0.99901960	  0.99948242  0.49326793
+9642	 -6.27340028	 -0.00032094	  0.00019659	  7.27307934	  0.99901970	  0.99948247  0.49326800
+9643	 -6.27340036	 -0.00032090	  0.00019657	  7.27307945	  0.99901981	  0.99948252  0.49326818
+9644	 -6.27340043	 -0.00032087	  0.00019655	  7.27307956	  0.99901991	  0.99948258  0.49326800
+9645	 -6.27340051	 -0.00032084	  0.00019653	  7.27307968	  0.99902001	  0.99948263  0.49326833
+9646	 -6.27340059	 -0.00032080	  0.00019651	  7.27307979	  0.99902011	  0.99948268  0.49326799
+9647	 -6.27340067	 -0.00032077	  0.00019649	  7.27307990	  0.99902021	  0.99948274  0.49326805
+9648	 -6.27340075	 -0.00032074	  0.00019647	  7.27308002	  0.99902031	  0.99948279  0.49326790
+9649	 -6.27340083	 -0.00032070	  0.00019645	  7.27308013	  0.99902042	  0.99948285  0.49326822
+9650	 -6.27340091	 -0.00032067	  0.00019643	  7.27308024	  0.99902052	  0.99948290  0.49326817
+9651	 -6.27340099	 -0.00032064	  0.00019641	  7.27308035	  0.99902062	  0.99948295  0.49326820
+9652	 -6.27340107	 -0.00032060	  0.00019639	  7.27308047	  0.99902072	  0.99948301  0.49326814
+9653	 -6.27340115	 -0.00032057	  0.00019637	  7.27308058	  0.99902082	  0.99948306  0.49326794
+9654	 -6.27340123	 -0.00032054	  0.00019635	  7.27308069	  0.99902092	  0.99948311  0.49326788
+9655	 -6.27340131	 -0.00032050	  0.00019633	  7.27308081	  0.99902102	  0.99948317  0.49326824
+9656	 -6.27340139	 -0.00032047	  0.00019631	  7.27308092	  0.99902113	  0.99948322  0.49326821
+9657	 -6.27340147	 -0.00032044	  0.00019629	  7.27308103	  0.99902123	  0.99948327  0.49326804
+9658	 -6.27340155	 -0.00032040	  0.00019627	  7.27308114	  0.99902133	  0.99948333  0.49326826
+9659	 -6.27340163	 -0.00032037	  0.00019625	  7.27308126	  0.99902143	  0.99948338  0.49326837
+9660	 -6.27340171	 -0.00032034	  0.00019623	  7.27308137	  0.99902153	  0.99948343  0.49326808
+9661	 -6.27340179	 -0.00032031	  0.00019621	  7.27308148	  0.99902163	  0.99948349  0.49326814
+9662	 -6.27340187	 -0.00032027	  0.00019619	  7.27308159	  0.99902173	  0.99948354  0.49326823
+9663	 -6.27340194	 -0.00032024	  0.00019617	  7.27308171	  0.99902183	  0.99948359  0.49326820
+9664	 -6.27340202	 -0.00032021	  0.00019615	  7.27308182	  0.99902194	  0.99948365  0.49326819
+9665	 -6.27340210	 -0.00032017	  0.00019613	  7.27308193	  0.99902204	  0.99948370  0.49326828
+9666	 -6.27340218	 -0.00032014	  0.00019611	  7.27308204	  0.99902214	  0.99948376  0.49326815
+9667	 -6.27340226	 -0.00032011	  0.00019608	  7.27308216	  0.99902224	  0.99948381  0.49326833
+9668	 -6.27340234	 -0.00032007	  0.00019606	  7.27308227	  0.99902234	  0.99948386  0.49326820
+9669	 -6.27340242	 -0.00032004	  0.00019604	  7.27308238	  0.99902244	  0.99948392  0.49326839
+9670	 -6.27340250	 -0.00032001	  0.00019602	  7.27308249	  0.99902254	  0.99948397  0.49326825
+9671	 -6.27340258	 -0.00031997	  0.00019600	  7.27308261	  0.99902264	  0.99948402  0.49326820
+9672	 -6.27340266	 -0.00031994	  0.00019598	  7.27308272	  0.99902274	  0.99948408  0.49326829
+9673	 -6.27340274	 -0.00031991	  0.00019596	  7.27308283	  0.99902285	  0.99948413  0.49326838
+9674	 -6.27340282	 -0.00031987	  0.00019594	  7.27308294	  0.99902295	  0.99948418  0.49326829
+9675	 -6.27340290	 -0.00031984	  0.00019592	  7.27308305	  0.99902305	  0.99948424  0.49326812
+9676	 -6.27340297	 -0.00031981	  0.00019590	  7.27308317	  0.99902315	  0.99948429  0.49326825
+9677	 -6.27340305	 -0.00031978	  0.00019588	  7.27308328	  0.99902325	  0.99948434  0.49326844
+9678	 -6.27340313	 -0.00031974	  0.00019586	  7.27308339	  0.99902335	  0.99948440  0.49326822
+9679	 -6.27340321	 -0.00031971	  0.00019584	  7.27308350	  0.99902345	  0.99948445  0.49326848
+9680	 -6.27340329	 -0.00031968	  0.00019582	  7.27308361	  0.99902355	  0.99948450  0.49326823
+9681	 -6.27340337	 -0.00031964	  0.00019580	  7.27308373	  0.99902365	  0.99948455  0.49326831
+9682	 -6.27340345	 -0.00031961	  0.00019578	  7.27308384	  0.99902375	  0.99948461  0.49326842
+9683	 -6.27340353	 -0.00031958	  0.00019576	  7.27308395	  0.99902385	  0.99948466  0.49326833
+9684	 -6.27340361	 -0.00031954	  0.00019574	  7.27308406	  0.99902396	  0.99948471  0.49326844
+9685	 -6.27340369	 -0.00031951	  0.00019572	  7.27308417	  0.99902406	  0.99948477  0.49326841
+9686	 -6.27340377	 -0.00031948	  0.00019570	  7.27308429	  0.99902416	  0.99948482  0.49326813
+9687	 -6.27340384	 -0.00031945	  0.00019568	  7.27308440	  0.99902426	  0.99948487  0.49326861
+9688	 -6.27340392	 -0.00031941	  0.00019566	  7.27308451	  0.99902436	  0.99948493  0.49326836
+9689	 -6.27340400	 -0.00031938	  0.00019564	  7.27308462	  0.99902446	  0.99948498  0.49326869
+9690	 -6.27340408	 -0.00031935	  0.00019562	  7.27308473	  0.99902456	  0.99948503  0.49326883
+9691	 -6.27340416	 -0.00031931	  0.00019560	  7.27308485	  0.99902466	  0.99948509  0.49326857
+9692	 -6.27340424	 -0.00031928	  0.00019558	  7.27308496	  0.99902476	  0.99948514  0.49326861
+9693	 -6.27340432	 -0.00031925	  0.00019556	  7.27308507	  0.99902486	  0.99948519  0.49326841
+9694	 -6.27340440	 -0.00031922	  0.00019554	  7.27308518	  0.99902496	  0.99948525  0.49326856
+9695	 -6.27340448	 -0.00031918	  0.00019552	  7.27308529	  0.99902506	  0.99948530  0.49326867
+9696	 -6.27340455	 -0.00031915	  0.00019550	  7.27308540	  0.99902516	  0.99948535  0.49326859
+9697	 -6.27340463	 -0.00031912	  0.00019548	  7.27308552	  0.99902526	  0.99948541  0.49326854
+9698	 -6.27340471	 -0.00031908	  0.00019546	  7.27308563	  0.99902536	  0.99948546  0.49326869
+9699	 -6.27340479	 -0.00031905	  0.00019544	  7.27308574	  0.99902546	  0.99948551  0.49326853
+9700	 -6.27340487	 -0.00031902	  0.00019542	  7.27308585	  0.99902557	  0.99948556  0.49326880
+9701	 -6.27340495	 -0.00031899	  0.00019540	  7.27308596	  0.99902567	  0.99948562  0.49326872
+9702	 -6.27340503	 -0.00031895	  0.00019538	  7.27308607	  0.99902577	  0.99948567  0.49326861
+9703	 -6.27340511	 -0.00031892	  0.00019536	  7.27308619	  0.99902587	  0.99948572  0.49326878
+9704	 -6.27340518	 -0.00031889	  0.00019534	  7.27308630	  0.99902597	  0.99948578  0.49326876
+9705	 -6.27340526	 -0.00031885	  0.00019532	  7.27308641	  0.99902607	  0.99948583  0.49326873
+9706	 -6.27340534	 -0.00031882	  0.00019530	  7.27308652	  0.99902617	  0.99948588  0.49326869
+9707	 -6.27340542	 -0.00031879	  0.00019528	  7.27308663	  0.99902627	  0.99948594  0.49326868
+9708	 -6.27340550	 -0.00031876	  0.00019526	  7.27308674	  0.99902637	  0.99948599  0.49326886
+9709	 -6.27340558	 -0.00031872	  0.00019524	  7.27308685	  0.99902647	  0.99948604  0.49326868
+9710	 -6.27340566	 -0.00031869	  0.00019522	  7.27308697	  0.99902657	  0.99948609  0.49326883
+9711	 -6.27340573	 -0.00031866	  0.00019520	  7.27308708	  0.99902667	  0.99948615  0.49326876
+9712	 -6.27340581	 -0.00031862	  0.00019518	  7.27308719	  0.99902677	  0.99948620  0.49326874
+9713	 -6.27340589	 -0.00031859	  0.00019516	  7.27308730	  0.99902687	  0.99948625  0.49326882
+9714	 -6.27340597	 -0.00031856	  0.00019514	  7.27308741	  0.99902697	  0.99948631  0.49326866
+9715	 -6.27340605	 -0.00031853	  0.00019512	  7.27308752	  0.99902707	  0.99948636  0.49326860
+9716	 -6.27340613	 -0.00031849	  0.00019510	  7.27308763	  0.99902717	  0.99948641  0.49326865
+9717	 -6.27340621	 -0.00031846	  0.00019508	  7.27308775	  0.99902727	  0.99948646  0.49326872
+9718	 -6.27340628	 -0.00031843	  0.00019506	  7.27308786	  0.99902737	  0.99948652  0.49326863
+9719	 -6.27340636	 -0.00031839	  0.00019504	  7.27308797	  0.99902747	  0.99948657  0.49326869
+9720	 -6.27340644	 -0.00031836	  0.00019502	  7.27308808	  0.99902757	  0.99948662  0.49326888
+9721	 -6.27340652	 -0.00031833	  0.00019500	  7.27308819	  0.99902767	  0.99948668  0.49326895
+9722	 -6.27340660	 -0.00031830	  0.00019498	  7.27308830	  0.99902777	  0.99948673  0.49326876
+9723	 -6.27340668	 -0.00031826	  0.00019496	  7.27308841	  0.99902787	  0.99948678  0.49326889
+9724	 -6.27340675	 -0.00031823	  0.00019494	  7.27308852	  0.99902797	  0.99948683  0.49326878
+9725	 -6.27340683	 -0.00031820	  0.00019492	  7.27308863	  0.99902807	  0.99948689  0.49326887
+9726	 -6.27340691	 -0.00031817	  0.00019490	  7.27308875	  0.99902817	  0.99948694  0.49326916
+9727	 -6.27340699	 -0.00031813	  0.00019488	  7.27308886	  0.99902827	  0.99948699  0.49326908
+9728	 -6.27340707	 -0.00031810	  0.00019486	  7.27308897	  0.99902837	  0.99948704  0.49326893
+9729	 -6.27340715	 -0.00031807	  0.00019484	  7.27308908	  0.99902847	  0.99948710  0.49326890
+9730	 -6.27340722	 -0.00031803	  0.00019482	  7.27308919	  0.99902857	  0.99948715  0.49326887
+9731	 -6.27340730	 -0.00031800	  0.00019480	  7.27308930	  0.99902867	  0.99948720  0.49326878
+9732	 -6.27340738	 -0.00031797	  0.00019478	  7.27308941	  0.99902877	  0.99948726  0.49326894
+9733	 -6.27340746	 -0.00031794	  0.00019476	  7.27308952	  0.99902887	  0.99948731  0.49326894
+9734	 -6.27340754	 -0.00031790	  0.00019474	  7.27308963	  0.99902897	  0.99948736  0.49326908
+9735	 -6.27340761	 -0.00031787	  0.00019472	  7.27308974	  0.99902907	  0.99948741  0.49326876
+9736	 -6.27340769	 -0.00031784	  0.00019470	  7.27308985	  0.99902917	  0.99948747  0.49326912
+9737	 -6.27340777	 -0.00031781	  0.00019468	  7.27308996	  0.99902927	  0.99948752  0.49326904
+9738	 -6.27340785	 -0.00031777	  0.00019466	  7.27309008	  0.99902937	  0.99948757  0.49326901
+9739	 -6.27340793	 -0.00031774	  0.00019464	  7.27309019	  0.99902947	  0.99948762  0.49326930
+9740	 -6.27340801	 -0.00031771	  0.00019462	  7.27309030	  0.99902957	  0.99948768  0.49326907
+9741	 -6.27340808	 -0.00031768	  0.00019460	  7.27309041	  0.99902967	  0.99948773  0.49326924
+9742	 -6.27340816	 -0.00031764	  0.00019458	  7.27309052	  0.99902977	  0.99948778  0.49326904
+9743	 -6.27340824	 -0.00031761	  0.00019456	  7.27309063	  0.99902987	  0.99948783  0.49326893
+9744	 -6.27340832	 -0.00031758	  0.00019454	  7.27309074	  0.99902997	  0.99948789  0.49326909
+9745	 -6.27340840	 -0.00031755	  0.00019452	  7.27309085	  0.99903006	  0.99948794  0.49326930
+9746	 -6.27340847	 -0.00031751	  0.00019450	  7.27309096	  0.99903016	  0.99948799  0.49326922
+9747	 -6.27340855	 -0.00031748	  0.00019448	  7.27309107	  0.99903026	  0.99948804  0.49326913
+9748	 -6.27340863	 -0.00031745	  0.00019446	  7.27309118	  0.99903036	  0.99948810  0.49326905
+9749	 -6.27340871	 -0.00031742	  0.00019444	  7.27309129	  0.99903046	  0.99948815  0.49326923
+9750	 -6.27340879	 -0.00031738	  0.00019442	  7.27309140	  0.99903056	  0.99948820  0.49326938
+9751	 -6.27340886	 -0.00031735	  0.00019440	  7.27309151	  0.99903066	  0.99948825  0.49326909
+9752	 -6.27340894	 -0.00031732	  0.00019438	  7.27309162	  0.99903076	  0.99948831  0.49326912
+9753	 -6.27340902	 -0.00031728	  0.00019436	  7.27309173	  0.99903086	  0.99948836  0.49326920
+9754	 -6.27340910	 -0.00031725	  0.00019434	  7.27309184	  0.99903096	  0.99948841  0.49326917
+9755	 -6.27340917	 -0.00031722	  0.00019432	  7.27309196	  0.99903106	  0.99948846  0.49326921
+9756	 -6.27340925	 -0.00031719	  0.00019430	  7.27309207	  0.99903116	  0.99948852  0.49326919
+9757	 -6.27340933	 -0.00031715	  0.00019428	  7.27309218	  0.99903126	  0.99948857  0.49326928
+9758	 -6.27340941	 -0.00031712	  0.00019426	  7.27309229	  0.99903136	  0.99948862  0.49326918
+9759	 -6.27340949	 -0.00031709	  0.00019424	  7.27309240	  0.99903146	  0.99948867  0.49326958
+9760	 -6.27340956	 -0.00031706	  0.00019422	  7.27309251	  0.99903156	  0.99948873  0.49326936
+9761	 -6.27340964	 -0.00031702	  0.00019420	  7.27309262	  0.99903165	  0.99948878  0.49326927
+9762	 -6.27340972	 -0.00031699	  0.00019418	  7.27309273	  0.99903175	  0.99948883  0.49326942
+9763	 -6.27340980	 -0.00031696	  0.00019416	  7.27309284	  0.99903185	  0.99948888  0.49326912
+9764	 -6.27340987	 -0.00031693	  0.00019414	  7.27309295	  0.99903195	  0.99948894  0.49326924
+9765	 -6.27340995	 -0.00031690	  0.00019412	  7.27309306	  0.99903205	  0.99948899  0.49326951
+9766	 -6.27341003	 -0.00031686	  0.00019410	  7.27309317	  0.99903215	  0.99948904  0.49326942
+9767	 -6.27341011	 -0.00031683	  0.00019408	  7.27309328	  0.99903225	  0.99948909  0.49326925
+9768	 -6.27341019	 -0.00031680	  0.00019406	  7.27309339	  0.99903235	  0.99948914  0.49326927
+9769	 -6.27341026	 -0.00031677	  0.00019404	  7.27309350	  0.99903245	  0.99948920  0.49326936
+9770	 -6.27341034	 -0.00031673	  0.00019402	  7.27309361	  0.99903255	  0.99948925  0.49326944
+9771	 -6.27341042	 -0.00031670	  0.00019400	  7.27309372	  0.99903265	  0.99948930  0.49326949
+9772	 -6.27341050	 -0.00031667	  0.00019398	  7.27309383	  0.99903274	  0.99948935  0.49326915
+9773	 -6.27341057	 -0.00031664	  0.00019396	  7.27309394	  0.99903284	  0.99948941  0.49326929
+9774	 -6.27341065	 -0.00031660	  0.00019394	  7.27309405	  0.99903294	  0.99948946  0.49326955
+9775	 -6.27341073	 -0.00031657	  0.00019392	  7.27309416	  0.99903304	  0.99948951  0.49326921
+9776	 -6.27341081	 -0.00031654	  0.00019390	  7.27309427	  0.99903314	  0.99948956  0.49326941
+9777	 -6.27341088	 -0.00031651	  0.00019388	  7.27309438	  0.99903324	  0.99948961  0.49326954
+9778	 -6.27341096	 -0.00031647	  0.00019386	  7.27309449	  0.99903334	  0.99948967  0.49326935
+9779	 -6.27341104	 -0.00031644	  0.00019384	  7.27309460	  0.99903344	  0.99948972  0.49326969
+9780	 -6.27341112	 -0.00031641	  0.00019382	  7.27309471	  0.99903354	  0.99948977  0.49326971
+9781	 -6.27341119	 -0.00031638	  0.00019380	  7.27309482	  0.99903363	  0.99948982  0.49326945
+9782	 -6.27341127	 -0.00031634	  0.00019378	  7.27309493	  0.99903373	  0.99948988  0.49326964
+9783	 -6.27341135	 -0.00031631	  0.00019376	  7.27309504	  0.99903383	  0.99948993  0.49326955
+9784	 -6.27341143	 -0.00031628	  0.00019374	  7.27309515	  0.99903393	  0.99948998  0.49326931
+9785	 -6.27341150	 -0.00031625	  0.00019372	  7.27309526	  0.99903403	  0.99949003  0.49326939
+9786	 -6.27341158	 -0.00031622	  0.00019370	  7.27309537	  0.99903413	  0.99949008  0.49326953
+9787	 -6.27341166	 -0.00031618	  0.00019368	  7.27309547	  0.99903423	  0.99949014  0.49326974
+9788	 -6.27341173	 -0.00031615	  0.00019366	  7.27309558	  0.99903433	  0.99949019  0.49326980
+9789	 -6.27341181	 -0.00031612	  0.00019364	  7.27309569	  0.99903442	  0.99949024  0.49326965
+9790	 -6.27341189	 -0.00031609	  0.00019362	  7.27309580	  0.99903452	  0.99949029  0.49326969
+9791	 -6.27341197	 -0.00031605	  0.00019360	  7.27309591	  0.99903462	  0.99949034  0.49326954
+9792	 -6.27341204	 -0.00031602	  0.00019358	  7.27309602	  0.99903472	  0.99949040  0.49326953
+9793	 -6.27341212	 -0.00031599	  0.00019356	  7.27309613	  0.99903482	  0.99949045  0.49326986
+9794	 -6.27341220	 -0.00031596	  0.00019354	  7.27309624	  0.99903492	  0.99949050  0.49326990
+9795	 -6.27341228	 -0.00031592	  0.00019352	  7.27309635	  0.99903502	  0.99949055  0.49326950
+9796	 -6.27341235	 -0.00031589	  0.00019350	  7.27309646	  0.99903511	  0.99949060  0.49326968
+9797	 -6.27341243	 -0.00031586	  0.00019348	  7.27309657	  0.99903521	  0.99949066  0.49326946
+9798	 -6.27341251	 -0.00031583	  0.00019346	  7.27309668	  0.99903531	  0.99949071  0.49326958
+9799	 -6.27341258	 -0.00031580	  0.00019344	  7.27309679	  0.99903541	  0.99949076  0.49326990
+9800	 -6.27341266	 -0.00031576	  0.00019342	  7.27309690	  0.99903551	  0.99949081  0.49326972
+9801	 -6.27341274	 -0.00031573	  0.00019340	  7.27309701	  0.99903561	  0.99949086  0.49326980
+9802	 -6.27341282	 -0.00031570	  0.00019338	  7.27309712	  0.99903570	  0.99949092  0.49327001
+9803	 -6.27341289	 -0.00031567	  0.00019336	  7.27309723	  0.99903580	  0.99949097  0.49326985
+9804	 -6.27341297	 -0.00031563	  0.00019334	  7.27309734	  0.99903590	  0.99949102  0.49326983
+9805	 -6.27341305	 -0.00031560	  0.00019333	  7.27309744	  0.99903600	  0.99949107  0.49326985
+9806	 -6.27341312	 -0.00031557	  0.00019331	  7.27309755	  0.99903610	  0.99949112  0.49327005
+9807	 -6.27341320	 -0.00031554	  0.00019329	  7.27309766	  0.99903620	  0.99949118  0.49326985
+9808	 -6.27341328	 -0.00031551	  0.00019327	  7.27309777	  0.99903629	  0.99949123  0.49326980
+9809	 -6.27341336	 -0.00031547	  0.00019325	  7.27309788	  0.99903639	  0.99949128  0.49326990
+9810	 -6.27341343	 -0.00031544	  0.00019323	  7.27309799	  0.99903649	  0.99949133  0.49326985
+9811	 -6.27341351	 -0.00031541	  0.00019321	  7.27309810	  0.99903659	  0.99949138  0.49326999
+9812	 -6.27341359	 -0.00031538	  0.00019319	  7.27309821	  0.99903669	  0.99949144  0.49326989
+9813	 -6.27341366	 -0.00031535	  0.00019317	  7.27309832	  0.99903679	  0.99949149  0.49326987
+9814	 -6.27341374	 -0.00031531	  0.00019315	  7.27309843	  0.99903688	  0.99949154  0.49327012
+9815	 -6.27341382	 -0.00031528	  0.00019313	  7.27309854	  0.99903698	  0.99949159  0.49326994
+9816	 -6.27341389	 -0.00031525	  0.00019311	  7.27309864	  0.99903708	  0.99949164  0.49327001
+9817	 -6.27341397	 -0.00031522	  0.00019309	  7.27309875	  0.99903718	  0.99949169  0.49327008
+9818	 -6.27341405	 -0.00031519	  0.00019307	  7.27309886	  0.99903728	  0.99949175  0.49327008
+9819	 -6.27341412	 -0.00031515	  0.00019305	  7.27309897	  0.99903737	  0.99949180  0.49326970
+9820	 -6.27341420	 -0.00031512	  0.00019303	  7.27309908	  0.99903747	  0.99949185  0.49326989
+9821	 -6.27341428	 -0.00031509	  0.00019301	  7.27309919	  0.99903757	  0.99949190  0.49326992
+9822	 -6.27341435	 -0.00031506	  0.00019299	  7.27309930	  0.99903767	  0.99949195  0.49327000
+9823	 -6.27341443	 -0.00031502	  0.00019297	  7.27309941	  0.99903777	  0.99949200  0.49327006
+9824	 -6.27341451	 -0.00031499	  0.00019295	  7.27309952	  0.99903786	  0.99949206  0.49327023
+9825	 -6.27341459	 -0.00031496	  0.00019293	  7.27309962	  0.99903796	  0.99949211  0.49327002
+9826	 -6.27341466	 -0.00031493	  0.00019291	  7.27309973	  0.99903806	  0.99949216  0.49327004
+9827	 -6.27341474	 -0.00031490	  0.00019289	  7.27309984	  0.99903816	  0.99949221  0.49327010
+9828	 -6.27341482	 -0.00031486	  0.00019287	  7.27309995	  0.99903826	  0.99949226  0.49327000
+9829	 -6.27341489	 -0.00031483	  0.00019285	  7.27310006	  0.99903835	  0.99949231  0.49326994
+9830	 -6.27341497	 -0.00031480	  0.00019283	  7.27310017	  0.99903845	  0.99949237  0.49327008
+9831	 -6.27341505	 -0.00031477	  0.00019281	  7.27310028	  0.99903855	  0.99949242  0.49327002
+9832	 -6.27341512	 -0.00031474	  0.00019279	  7.27310039	  0.99903865	  0.99949247  0.49327015
+9833	 -6.27341520	 -0.00031470	  0.00019277	  7.27310049	  0.99903874	  0.99949252  0.49326998
+9834	 -6.27341528	 -0.00031467	  0.00019275	  7.27310060	  0.99903884	  0.99949257  0.49327030
+9835	 -6.27341535	 -0.00031464	  0.00019274	  7.27310071	  0.99903894	  0.99949262  0.49326995
+9836	 -6.27341543	 -0.00031461	  0.00019272	  7.27310082	  0.99903904	  0.99949268  0.49327013
+9837	 -6.27341550	 -0.00031458	  0.00019270	  7.27310093	  0.99903914	  0.99949273  0.49327030
+9838	 -6.27341558	 -0.00031454	  0.00019268	  7.27310104	  0.99903923	  0.99949278  0.49327016
+9839	 -6.27341566	 -0.00031451	  0.00019266	  7.27310115	  0.99903933	  0.99949283  0.49327003
+9840	 -6.27341573	 -0.00031448	  0.00019264	  7.27310125	  0.99903943	  0.99949288  0.49327020
+9841	 -6.27341581	 -0.00031445	  0.00019262	  7.27310136	  0.99903953	  0.99949293  0.49327016
+9842	 -6.27341589	 -0.00031442	  0.00019260	  7.27310147	  0.99903962	  0.99949298  0.49327038
+9843	 -6.27341596	 -0.00031438	  0.00019258	  7.27310158	  0.99903972	  0.99949304  0.49327020
+9844	 -6.27341604	 -0.00031435	  0.00019256	  7.27310169	  0.99903982	  0.99949309  0.49326989
+9845	 -6.27341612	 -0.00031432	  0.00019254	  7.27310180	  0.99903992	  0.99949314  0.49327033
+9846	 -6.27341619	 -0.00031429	  0.00019252	  7.27310190	  0.99904001	  0.99949319  0.49327021
+9847	 -6.27341627	 -0.00031426	  0.00019250	  7.27310201	  0.99904011	  0.99949324  0.49327047
+9848	 -6.27341635	 -0.00031423	  0.00019248	  7.27310212	  0.99904021	  0.99949329  0.49327024
+9849	 -6.27341642	 -0.00031419	  0.00019246	  7.27310223	  0.99904031	  0.99949335  0.49327034
+9850	 -6.27341650	 -0.00031416	  0.00019244	  7.27310234	  0.99904040	  0.99949340  0.49327024
+9851	 -6.27341658	 -0.00031413	  0.00019242	  7.27310245	  0.99904050	  0.99949345  0.49327049
+9852	 -6.27341665	 -0.00031410	  0.00019240	  7.27310255	  0.99904060	  0.99949350  0.49327029
+9853	 -6.27341673	 -0.00031407	  0.00019238	  7.27310266	  0.99904070	  0.99949355  0.49327027
+9854	 -6.27341680	 -0.00031403	  0.00019236	  7.27310277	  0.99904079	  0.99949360  0.49327052
+9855	 -6.27341688	 -0.00031400	  0.00019234	  7.27310288	  0.99904089	  0.99949365  0.49327062
+9856	 -6.27341696	 -0.00031397	  0.00019232	  7.27310299	  0.99904099	  0.99949370  0.49327051
+9857	 -6.27341703	 -0.00031394	  0.00019231	  7.27310309	  0.99904108	  0.99949376  0.49327035
+9858	 -6.27341711	 -0.00031391	  0.00019229	  7.27310320	  0.99904118	  0.99949381  0.49327029
+9859	 -6.27341719	 -0.00031387	  0.00019227	  7.27310331	  0.99904128	  0.99949386  0.49327040
+9860	 -6.27341726	 -0.00031384	  0.00019225	  7.27310342	  0.99904138	  0.99949391  0.49327054
+9861	 -6.27341734	 -0.00031381	  0.00019223	  7.27310353	  0.99904147	  0.99949396  0.49327057
+9862	 -6.27341741	 -0.00031378	  0.00019221	  7.27310363	  0.99904157	  0.99949401  0.49327065
+9863	 -6.27341749	 -0.00031375	  0.00019219	  7.27310374	  0.99904167	  0.99949406  0.49327055
+9864	 -6.27341757	 -0.00031372	  0.00019217	  7.27310385	  0.99904177	  0.99949412  0.49327044
+9865	 -6.27341764	 -0.00031368	  0.00019215	  7.27310396	  0.99904186	  0.99949417  0.49327060
+9866	 -6.27341772	 -0.00031365	  0.00019213	  7.27310407	  0.99904196	  0.99949422  0.49327062
+9867	 -6.27341779	 -0.00031362	  0.00019211	  7.27310417	  0.99904206	  0.99949427  0.49327057
+9868	 -6.27341787	 -0.00031359	  0.00019209	  7.27310428	  0.99904215	  0.99949432  0.49327068
+9869	 -6.27341795	 -0.00031356	  0.00019207	  7.27310439	  0.99904225	  0.99949437  0.49327087
+9870	 -6.27341802	 -0.00031353	  0.00019205	  7.27310450	  0.99904235	  0.99949442  0.49327065
+9871	 -6.27341810	 -0.00031349	  0.00019203	  7.27310461	  0.99904244	  0.99949447  0.49327040
+9872	 -6.27341817	 -0.00031346	  0.00019201	  7.27310471	  0.99904254	  0.99949453  0.49327056
+9873	 -6.27341825	 -0.00031343	  0.00019199	  7.27310482	  0.99904264	  0.99949458  0.49327057
+9874	 -6.27341833	 -0.00031340	  0.00019197	  7.27310493	  0.99904274	  0.99949463  0.49327059
+9875	 -6.27341840	 -0.00031337	  0.00019195	  7.27310504	  0.99904283	  0.99949468  0.49327075
+9876	 -6.27341848	 -0.00031333	  0.00019194	  7.27310514	  0.99904293	  0.99949473  0.49327058
+9877	 -6.27341855	 -0.00031330	  0.00019192	  7.27310525	  0.99904303	  0.99949478  0.49327073
+9878	 -6.27341863	 -0.00031327	  0.00019190	  7.27310536	  0.99904312	  0.99949483  0.49327054
+9879	 -6.27341871	 -0.00031324	  0.00019188	  7.27310547	  0.99904322	  0.99949488  0.49327048
+9880	 -6.27341878	 -0.00031321	  0.00019186	  7.27310557	  0.99904332	  0.99949493  0.49327086
+9881	 -6.27341886	 -0.00031318	  0.00019184	  7.27310568	  0.99904341	  0.99949499  0.49327056
+9882	 -6.27341893	 -0.00031314	  0.00019182	  7.27310579	  0.99904351	  0.99949504  0.49327071
+9883	 -6.27341901	 -0.00031311	  0.00019180	  7.27310590	  0.99904361	  0.99949509  0.49327045
+9884	 -6.27341909	 -0.00031308	  0.00019178	  7.27310600	  0.99904370	  0.99949514  0.49327067
+9885	 -6.27341916	 -0.00031305	  0.00019176	  7.27310611	  0.99904380	  0.99949519  0.49327067
+9886	 -6.27341924	 -0.00031302	  0.00019174	  7.27310622	  0.99904390	  0.99949524  0.49327074
+9887	 -6.27341931	 -0.00031299	  0.00019172	  7.27310633	  0.99904399	  0.99949529  0.49327107
+9888	 -6.27341939	 -0.00031295	  0.00019170	  7.27310643	  0.99904409	  0.99949534  0.49327064
+9889	 -6.27341946	 -0.00031292	  0.00019168	  7.27310654	  0.99904419	  0.99949539  0.49327063
+9890	 -6.27341954	 -0.00031289	  0.00019166	  7.27310665	  0.99904428	  0.99949545  0.49327050
+9891	 -6.27341962	 -0.00031286	  0.00019164	  7.27310676	  0.99904438	  0.99949550  0.49327069
+9892	 -6.27341969	 -0.00031283	  0.00019162	  7.27310686	  0.99904448	  0.99949555  0.49327081
+9893	 -6.27341977	 -0.00031280	  0.00019161	  7.27310697	  0.99904457	  0.99949560  0.49327077
+9894	 -6.27341984	 -0.00031276	  0.00019159	  7.27310708	  0.99904467	  0.99949565  0.49327081
+9895	 -6.27341992	 -0.00031273	  0.00019157	  7.27310719	  0.99904477	  0.99949570  0.49327088
+9896	 -6.27341999	 -0.00031270	  0.00019155	  7.27310729	  0.99904486	  0.99949575  0.49327082
+9897	 -6.27342007	 -0.00031267	  0.00019153	  7.27310740	  0.99904496	  0.99949580  0.49327067
+9898	 -6.27342015	 -0.00031264	  0.00019151	  7.27310751	  0.99904506	  0.99949585  0.49327061
+9899	 -6.27342022	 -0.00031261	  0.00019149	  7.27310761	  0.99904515	  0.99949590  0.49327079
+9900	 -6.27342030	 -0.00031258	  0.00019147	  7.27310772	  0.99904525	  0.99949595  0.49327103
+9901	 -6.27342037	 -0.00031254	  0.00019145	  7.27310783	  0.99904535	  0.99949601  0.49327107
+9902	 -6.27342045	 -0.00031251	  0.00019143	  7.27310794	  0.99904544	  0.99949606  0.49327084
+9903	 -6.27342052	 -0.00031248	  0.00019141	  7.27310804	  0.99904554	  0.99949611  0.49327096
+9904	 -6.27342060	 -0.00031245	  0.00019139	  7.27310815	  0.99904563	  0.99949616  0.49327062
+9905	 -6.27342067	 -0.00031242	  0.00019137	  7.27310826	  0.99904573	  0.99949621  0.49327088
+9906	 -6.27342075	 -0.00031239	  0.00019135	  7.27310836	  0.99904583	  0.99949626  0.49327094
+9907	 -6.27342083	 -0.00031235	  0.00019133	  7.27310847	  0.99904592	  0.99949631  0.49327095
+9908	 -6.27342090	 -0.00031232	  0.00019132	  7.27310858	  0.99904602	  0.99949636  0.49327111
+9909	 -6.27342098	 -0.00031229	  0.00019130	  7.27310869	  0.99904612	  0.99949641  0.49327066
+9910	 -6.27342105	 -0.00031226	  0.00019128	  7.27310879	  0.99904621	  0.99949646  0.49327112
+9911	 -6.27342113	 -0.00031223	  0.00019126	  7.27310890	  0.99904631	  0.99949651  0.49327094
+9912	 -6.27342120	 -0.00031220	  0.00019124	  7.27310901	  0.99904641	  0.99949656  0.49327097
+9913	 -6.27342128	 -0.00031217	  0.00019122	  7.27310911	  0.99904650	  0.99949662  0.49327094
+9914	 -6.27342135	 -0.00031213	  0.00019120	  7.27310922	  0.99904660	  0.99949667  0.49327120
+9915	 -6.27342143	 -0.00031210	  0.00019118	  7.27310933	  0.99904669	  0.99949672  0.49327123
+9916	 -6.27342150	 -0.00031207	  0.00019116	  7.27310943	  0.99904679	  0.99949677  0.49327124
+9917	 -6.27342158	 -0.00031204	  0.00019114	  7.27310954	  0.99904689	  0.99949682  0.49327089
+9918	 -6.27342166	 -0.00031201	  0.00019112	  7.27310965	  0.99904698	  0.99949687  0.49327096
+9919	 -6.27342173	 -0.00031198	  0.00019110	  7.27310975	  0.99904708	  0.99949692  0.49327093
+9920	 -6.27342181	 -0.00031195	  0.00019108	  7.27310986	  0.99904717	  0.99949697  0.49327128
+9921	 -6.27342188	 -0.00031191	  0.00019106	  7.27310997	  0.99904727	  0.99949702  0.49327122
+9922	 -6.27342196	 -0.00031188	  0.00019105	  7.27311007	  0.99904737	  0.99949707  0.49327128
+9923	 -6.27342203	 -0.00031185	  0.00019103	  7.27311018	  0.99904746	  0.99949712  0.49327113
+9924	 -6.27342211	 -0.00031182	  0.00019101	  7.27311029	  0.99904756	  0.99949717  0.49327121
+9925	 -6.27342218	 -0.00031179	  0.00019099	  7.27311039	  0.99904765	  0.99949722  0.49327115
+9926	 -6.27342226	 -0.00031176	  0.00019097	  7.27311050	  0.99904775	  0.99949727  0.49327114
+9927	 -6.27342233	 -0.00031173	  0.00019095	  7.27311061	  0.99904785	  0.99949733  0.49327102
+9928	 -6.27342241	 -0.00031169	  0.00019093	  7.27311071	  0.99904794	  0.99949738  0.49327120
+9929	 -6.27342248	 -0.00031166	  0.00019091	  7.27311082	  0.99904804	  0.99949743  0.49327130
+9930	 -6.27342256	 -0.00031163	  0.00019089	  7.27311093	  0.99904813	  0.99949748  0.49327109
+9931	 -6.27342263	 -0.00031160	  0.00019087	  7.27311103	  0.99904823	  0.99949753  0.49327132
+9932	 -6.27342271	 -0.00031157	  0.00019085	  7.27311114	  0.99904833	  0.99949758  0.49327146
+9933	 -6.27342278	 -0.00031154	  0.00019083	  7.27311125	  0.99904842	  0.99949763  0.49327090
+9934	 -6.27342286	 -0.00031151	  0.00019081	  7.27311135	  0.99904852	  0.99949768  0.49327123
+9935	 -6.27342293	 -0.00031147	  0.00019080	  7.27311146	  0.99904861	  0.99949773  0.49327134
+9936	 -6.27342301	 -0.00031144	  0.00019078	  7.27311156	  0.99904871	  0.99949778  0.49327133
+9937	 -6.27342308	 -0.00031141	  0.00019076	  7.27311167	  0.99904880	  0.99949783  0.49327117
+9938	 -6.27342316	 -0.00031138	  0.00019074	  7.27311178	  0.99904890	  0.99949788  0.49327124
+9939	 -6.27342323	 -0.00031135	  0.00019072	  7.27311188	  0.99904900	  0.99949793  0.49327116
+9940	 -6.27342331	 -0.00031132	  0.00019070	  7.27311199	  0.99904909	  0.99949798  0.49327125
+9941	 -6.27342338	 -0.00031129	  0.00019068	  7.27311210	  0.99904919	  0.99949803  0.49327132
+9942	 -6.27342346	 -0.00031126	  0.00019066	  7.27311220	  0.99904928	  0.99949808  0.49327161
+9943	 -6.27342353	 -0.00031122	  0.00019064	  7.27311231	  0.99904938	  0.99949813  0.49327137
+9944	 -6.27342361	 -0.00031119	  0.00019062	  7.27311242	  0.99904947	  0.99949818  0.49327141
+9945	 -6.27342368	 -0.00031116	  0.00019060	  7.27311252	  0.99904957	  0.99949824  0.49327151
+9946	 -6.27342376	 -0.00031113	  0.00019058	  7.27311263	  0.99904966	  0.99949829  0.49327147
+9947	 -6.27342383	 -0.00031110	  0.00019057	  7.27311273	  0.99904976	  0.99949834  0.49327157
+9948	 -6.27342391	 -0.00031107	  0.00019055	  7.27311284	  0.99904986	  0.99949839  0.49327158
+9949	 -6.27342398	 -0.00031104	  0.00019053	  7.27311295	  0.99904995	  0.99949844  0.49327140
+9950	 -6.27342406	 -0.00031101	  0.00019051	  7.27311305	  0.99905005	  0.99949849  0.49327149
+9951	 -6.27342413	 -0.00031097	  0.00019049	  7.27311316	  0.99905014	  0.99949854  0.49327130
+9952	 -6.27342421	 -0.00031094	  0.00019047	  7.27311326	  0.99905024	  0.99949859  0.49327138
+9953	 -6.27342428	 -0.00031091	  0.00019045	  7.27311337	  0.99905033	  0.99949864  0.49327154
+9954	 -6.27342436	 -0.00031088	  0.00019043	  7.27311348	  0.99905043	  0.99949869  0.49327144
+9955	 -6.27342443	 -0.00031085	  0.00019041	  7.27311358	  0.99905052	  0.99949874  0.49327149
+9956	 -6.27342451	 -0.00031082	  0.00019039	  7.27311369	  0.99905062	  0.99949879  0.49327160
+9957	 -6.27342458	 -0.00031079	  0.00019037	  7.27311379	  0.99905071	  0.99949884  0.49327162
+9958	 -6.27342466	 -0.00031076	  0.00019035	  7.27311390	  0.99905081	  0.99949889  0.49327146
+9959	 -6.27342473	 -0.00031072	  0.00019034	  7.27311401	  0.99905091	  0.99949894  0.49327178
+9960	 -6.27342480	 -0.00031069	  0.00019032	  7.27311411	  0.99905100	  0.99949899  0.49327156
+9961	 -6.27342488	 -0.00031066	  0.00019030	  7.27311422	  0.99905110	  0.99949904  0.49327151
+9962	 -6.27342495	 -0.00031063	  0.00019028	  7.27311432	  0.99905119	  0.99949909  0.49327157
+9963	 -6.27342503	 -0.00031060	  0.00019026	  7.27311443	  0.99905129	  0.99949914  0.49327162
+9964	 -6.27342510	 -0.00031057	  0.00019024	  7.27311453	  0.99905138	  0.99949919  0.49327180
+9965	 -6.27342518	 -0.00031054	  0.00019022	  7.27311464	  0.99905148	  0.99949924  0.49327153
+9966	 -6.27342525	 -0.00031051	  0.00019020	  7.27311475	  0.99905157	  0.99949929  0.49327170
+9967	 -6.27342533	 -0.00031047	  0.00019018	  7.27311485	  0.99905167	  0.99949934  0.49327164
+9968	 -6.27342540	 -0.00031044	  0.00019016	  7.27311496	  0.99905176	  0.99949939  0.49327177
+9969	 -6.27342548	 -0.00031041	  0.00019014	  7.27311506	  0.99905186	  0.99949944  0.49327171
+9970	 -6.27342555	 -0.00031038	  0.00019013	  7.27311517	  0.99905195	  0.99949949  0.49327163
+9971	 -6.27342563	 -0.00031035	  0.00019011	  7.27311527	  0.99905205	  0.99949954  0.49327148
+9972	 -6.27342570	 -0.00031032	  0.00019009	  7.27311538	  0.99905214	  0.99949959  0.49327177
+9973	 -6.27342577	 -0.00031029	  0.00019007	  7.27311549	  0.99905224	  0.99949964  0.49327190
+9974	 -6.27342585	 -0.00031026	  0.00019005	  7.27311559	  0.99905233	  0.99949969  0.49327174
+9975	 -6.27342592	 -0.00031023	  0.00019003	  7.27311570	  0.99905243	  0.99949974  0.49327179
+9976	 -6.27342600	 -0.00031019	  0.00019001	  7.27311580	  0.99905252	  0.99949979  0.49327165
+9977	 -6.27342607	 -0.00031016	  0.00018999	  7.27311591	  0.99905262	  0.99949984  0.49327180
+9978	 -6.27342615	 -0.00031013	  0.00018997	  7.27311601	  0.99905271	  0.99949989  0.49327176
+9979	 -6.27342622	 -0.00031010	  0.00018995	  7.27311612	  0.99905281	  0.99949994  0.49327155
+9980	 -6.27342630	 -0.00031007	  0.00018993	  7.27311622	  0.99905290	  0.99949999  0.49327169
+9981	 -6.27342637	 -0.00031004	  0.00018992	  7.27311633	  0.99905300	  0.99950004  0.49327184
+9982	 -6.27342644	 -0.00031001	  0.00018990	  7.27311644	  0.99905309	  0.99950009  0.49327184
+9983	 -6.27342652	 -0.00030998	  0.00018988	  7.27311654	  0.99905319	  0.99950014  0.49327176
+9984	 -6.27342659	 -0.00030995	  0.00018986	  7.27311665	  0.99905328	  0.99950019  0.49327184
+9985	 -6.27342667	 -0.00030992	  0.00018984	  7.27311675	  0.99905338	  0.99950024  0.49327166
+9986	 -6.27342674	 -0.00030988	  0.00018982	  7.27311686	  0.99905347	  0.99950029  0.49327222
+9987	 -6.27342682	 -0.00030985	  0.00018980	  7.27311696	  0.99905357	  0.99950034  0.49327211
+9988	 -6.27342689	 -0.00030982	  0.00018978	  7.27311707	  0.99905366	  0.99950039  0.49327202
+9989	 -6.27342696	 -0.00030979	  0.00018976	  7.27311717	  0.99905376	  0.99950044  0.49327179
+9990	 -6.27342704	 -0.00030976	  0.00018974	  7.27311728	  0.99905385	  0.99950049  0.49327176
+9991	 -6.27342711	 -0.00030973	  0.00018973	  7.27311738	  0.99905394	  0.99950054  0.49327202
+9992	 -6.27342719	 -0.00030970	  0.00018971	  7.27311749	  0.99905404	  0.99950059  0.49327184
+9993	 -6.27342726	 -0.00030967	  0.00018969	  7.27311759	  0.99905413	  0.99950064  0.49327198
+9994	 -6.27342733	 -0.00030964	  0.00018967	  7.27311770	  0.99905423	  0.99950069  0.49327205
+9995	 -6.27342741	 -0.00030961	  0.00018965	  7.27311780	  0.99905432	  0.99950074  0.49327200
+9996	 -6.27342748	 -0.00030957	  0.00018963	  7.27311791	  0.99905442	  0.99950079  0.49327197
+9997	 -6.27342756	 -0.00030954	  0.00018961	  7.27311801	  0.99905451	  0.99950084  0.49327183
+9998	 -6.27342763	 -0.00030951	  0.00018959	  7.27311812	  0.99905461	  0.99950089  0.49327208
+9999	 -6.27342771	 -0.00030948	  0.00018957	  7.27311822	  0.99905470	  0.99950094  0.49327205
+10000	 -6.27342778	 -0.00030945	  0.00018956	  7.27311833	  0.99905480	  0.99950099  0.49327194
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/EastAntarctica2.cpg
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/EastAntarctica2.cpg	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/EastAntarctica2.cpg	(revision 27955)
@@ -0,0 +1,1 @@
+UTF-8
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/EastAntarctica2.prj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/EastAntarctica2.prj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/EastAntarctica2.prj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS_84_Antarctic_Polar_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic_South_Pole"],PARAMETER["standard_parallel_1",-71],PARAMETER["central_meridian",0],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter",1]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/EastAntarctica2.qpj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/EastAntarctica2.qpj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/EastAntarctica2.qpj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS 84 / Antarctic Polar Stereographic",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Polar_Stereographic"],PARAMETER["latitude_of_origin",-71],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","3031"]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/GSHHS_c_L1-NightlyRun.cpg
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/GSHHS_c_L1-NightlyRun.cpg	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/GSHHS_c_L1-NightlyRun.cpg	(revision 27955)
@@ -0,0 +1,1 @@
+UTF-8
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/GSHHS_c_L1-NightlyRun.prj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/GSHHS_c_L1-NightlyRun.prj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/GSHHS_c_L1-NightlyRun.prj	(revision 27955)
@@ -0,0 +1,1 @@
+GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/GSHHS_c_L1-NightlyRun.qpj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/GSHHS_c_L1-NightlyRun.qpj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/GSHHS_c_L1-NightlyRun.qpj	(revision 27955)
@@ -0,0 +1,1 @@
+GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/HemisphereSplit.prj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/HemisphereSplit.prj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/HemisphereSplit.prj	(revision 27955)
@@ -0,0 +1,1 @@
+GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/HemisphereSplit.qpj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/HemisphereSplit.qpj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/HemisphereSplit.qpj	(revision 27955)
@@ -0,0 +1,1 @@
+GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/NorthAntarctica.prj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/NorthAntarctica.prj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/NorthAntarctica.prj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS_84_Antarctic_Polar_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic_South_Pole"],PARAMETER["standard_parallel_1",-71],PARAMETER["central_meridian",0],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter",1]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/NorthAntarctica.qpj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/NorthAntarctica.qpj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/NorthAntarctica.qpj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS 84 / Antarctic Polar Stereographic",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Polar_Stereographic"],PARAMETER["latitude_of_origin",-71],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","3031"]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneBrunt.cpg
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneBrunt.cpg	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneBrunt.cpg	(revision 27955)
@@ -0,0 +1,1 @@
+UTF-8
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneBrunt.prj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneBrunt.prj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneBrunt.prj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS_84_Antarctic_Polar_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic_South_Pole"],PARAMETER["standard_parallel_1",-71],PARAMETER["central_meridian",0],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter",1]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneBrunt.qpj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneBrunt.qpj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneBrunt.qpj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS 84 / Antarctic Polar Stereographic",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Polar_Stereographic"],PARAMETER["latitude_of_origin",-71],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","3031"]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneEastSummit.cpg
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneEastSummit.cpg	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneEastSummit.cpg	(revision 27955)
@@ -0,0 +1,1 @@
+UTF-8
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneEastSummit.prj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneEastSummit.prj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneEastSummit.prj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS_84_Antarctic_Polar_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic_South_Pole"],PARAMETER["standard_parallel_1",-71],PARAMETER["central_meridian",0],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter",1]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneEastSummit.qpj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneEastSummit.qpj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneEastSummit.qpj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS 84 / Antarctic Polar Stereographic",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Polar_Stereographic"],PARAMETER["latitude_of_origin",-71],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","3031"]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneFront.cpg
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneFront.cpg	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneFront.cpg	(revision 27955)
@@ -0,0 +1,1 @@
+UTF-8
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneFront.prj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneFront.prj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneFront.prj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS_84_Antarctic_Polar_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic_South_Pole"],PARAMETER["standard_parallel_1",-71],PARAMETER["central_meridian",0],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter",1]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneFront.qpj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneFront.qpj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneFront.qpj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS 84 / Antarctic Polar Stereographic",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Polar_Stereographic"],PARAMETER["latitude_of_origin",-71],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","3031"]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneIceShelf.cpg
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneIceShelf.cpg	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneIceShelf.cpg	(revision 27955)
@@ -0,0 +1,1 @@
+UTF-8
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneIceShelf.prj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneIceShelf.prj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneIceShelf.prj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS_84_Antarctic_Polar_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic_South_Pole"],PARAMETER["standard_parallel_1",-71],PARAMETER["central_meridian",0],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter",1]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneIceShelf.qpj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneIceShelf.qpj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneIceShelf.qpj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS 84 / Antarctic Polar Stereographic",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Polar_Stereographic"],PARAMETER["latitude_of_origin",-71],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","3031"]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneWestSummit.cpg
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneWestSummit.cpg	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneWestSummit.cpg	(revision 27955)
@@ -0,0 +1,1 @@
+UTF-8
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneWestSummit.prj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneWestSummit.prj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneWestSummit.prj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS_84_Antarctic_Polar_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic_South_Pole"],PARAMETER["standard_parallel_1",-71],PARAMETER["central_meridian",0],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter",1]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneWestSummit.qpj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneWestSummit.qpj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RonneWestSummit.qpj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS 84 / Antarctic Polar Stereographic",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Polar_Stereographic"],PARAMETER["latitude_of_origin",-71],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","3031"]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossFront.cpg
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossFront.cpg	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossFront.cpg	(revision 27955)
@@ -0,0 +1,1 @@
+UTF-8
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossFront.prj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossFront.prj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossFront.prj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS_84_Antarctic_Polar_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic_South_Pole"],PARAMETER["standard_parallel_1",-71],PARAMETER["central_meridian",0],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter",1]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossFront.qpj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossFront.qpj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossFront.qpj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS 84 / Antarctic Polar Stereographic",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Polar_Stereographic"],PARAMETER["latitude_of_origin",-71],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","3031"]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossIceShelf.cpg
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossIceShelf.cpg	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossIceShelf.cpg	(revision 27955)
@@ -0,0 +1,1 @@
+UTF-8
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossIceShelf.prj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossIceShelf.prj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossIceShelf.prj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS_84_Antarctic_Polar_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic_South_Pole"],PARAMETER["standard_parallel_1",-71],PARAMETER["central_meridian",0],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter",1]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossIceShelf.qpj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossIceShelf.qpj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossIceShelf.qpj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS 84 / Antarctic Polar Stereographic",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Polar_Stereographic"],PARAMETER["latitude_of_origin",-71],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","3031"]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossWestFront.cpg
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossWestFront.cpg	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossWestFront.cpg	(revision 27955)
@@ -0,0 +1,1 @@
+UTF-8
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossWestFront.prj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossWestFront.prj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossWestFront.prj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS_84_Antarctic_Polar_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic_South_Pole"],PARAMETER["standard_parallel_1",-71],PARAMETER["central_meridian",0],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter",1]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossWestFront.qpj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossWestFront.qpj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/RossWestFront.qpj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS 84 / Antarctic Polar Stereographic",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Polar_Stereographic"],PARAMETER["latitude_of_origin",-71],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","3031"]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/SouthAntarctica.prj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/SouthAntarctica.prj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/SouthAntarctica.prj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS_84_Antarctic_Polar_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic_South_Pole"],PARAMETER["standard_parallel_1",-71],PARAMETER["central_meridian",0],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter",1]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/SouthAntarctica.qpj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/SouthAntarctica.qpj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/SouthAntarctica.qpj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS 84 / Antarctic Polar Stereographic",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Polar_Stereographic"],PARAMETER["latitude_of_origin",-71],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","3031"]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/WestAntarctica2.cpg
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/WestAntarctica2.cpg	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/WestAntarctica2.cpg	(revision 27955)
@@ -0,0 +1,1 @@
+UTF-8
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/WestAntarctica2.prj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/WestAntarctica2.prj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/WestAntarctica2.prj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS_84_Antarctic_Polar_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic_South_Pole"],PARAMETER["standard_parallel_1",-71],PARAMETER["central_meridian",0],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter",1]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Data/shp/WestAntarctica2.qpj
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Data/shp/WestAntarctica2.qpj	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Data/shp/WestAntarctica2.qpj	(revision 27955)
@@ -0,0 +1,1 @@
+PROJCS["WGS 84 / Antarctic Polar Stereographic",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Polar_Stereographic"],PARAMETER["latitude_of_origin",-71],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","3031"]]
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/79North.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/79North.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/79North.exp	(revision 27955)
@@ -0,0 +1,24 @@
+## Name:DomainOutline
+## Icon:0
+# Points Count Value
+18 1.000000
+# X pos Y pos
+464009.1397656691 -1027407.4008438819
+434858.8796422836 -1057322.8251592305
+420709.3008232680 -1062000.9573566925
+409964.1319456697 -1051906.0405095378
+408368.3147856303 -1063478.2622611541
+403368.0876841737 -1083544.9872134251
+426135.0791674018 -1101272.6460669651
+444221.0069811812 -1107551.1919109272
+462838.8738483069 -1083298.7697293481
+451455.3781066929 -1081082.8123726556
+474328.7574005903 -1040333.8187579215
+490074.1533796453 -1041072.4712101523
+491111.0844876733 -1038645.7820016426
+489754.9899476374 -1026299.4221655356
+477094.8404779918 -1020390.2025476890
+471001.4291198556 -1014587.7884811594
+468158.2643817714 -1015096.5266400346
+464009.1397656691 -1027407.4008438819
+
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/79NorthShelf.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/79NorthShelf.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/79NorthShelf.exp	(revision 27955)
@@ -0,0 +1,13 @@
+## Name:IceShelf
+## Icon:0
+# Points Count Value
+7 1.000000
+# X pos Y pos
+434007.7771569293 -1056707.2814490383
+452306.4805920472 -1080467.2686624634
+493584.9511317319 -1048458.9957324605
+496457.4220198027 -1015096.5266400346
+460179.1785815747 -1009310.4157642265
+441667.6995251182 -1023714.1385827276
+434007.7771569293 -1056707.2814490383
+
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/Ais.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/Ais.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/Ais.exp	(revision 27955)
@@ -0,0 +1,371 @@
+## Name:Antarctica
+## Icon:0
+# Points Count	Value
+366	25000.
+# X pos	Y pos
+-1016913.83085	878162.517102
+-1065362.784298	896183.164421
+-1121788.089839	882889.244268
+-1175850.031797	870777.005905
+-1240842.530326	864573.1765
+-1289586.904222	847734.210973
+-1347784.73245	830008.984101
+-1399778.731273	805193.666481
+-1457976.559501	786877.598714
+-1493427.013244	838280.756641
+-1542171.387141	859255.608439
+-1581757.727154	899728.209796
+-1624002.851198	937542.027121
+-1670088.441063	968856.594594
+-1722082.439886	981855.0943
+-1774962.700053	1003420.786994
+-1825479.596637	1024691.059239
+-1868906.402472	1054233.104025
+-1927399.651148	1063686.558357
+-1989437.945198	1079343.842093
+-2010412.796996	1125724.852407
+-2055612.125518	1149063.067788
+-2098448.090457	1183627.260187
+-2147192.464354	1195444.078101
+-2170826.100183	1240938.827071
+-2211889.542435	1275207.599023
+-2263016.65255	1280909.637672
+-2317350.604004	1293306.895593
+-2375534.184324	1279993.703486
+-2419418.410159	1314016.305538
+-2383423.483351	1367269.073967
+-2433224.683456	1375158.372994
+-2440620.901293	1426931.897855
+-2444072.469617	1482156.991041
+-2468233.447886	1532944.353524
+-2464781.879562	1584224.797197
+-2498804.481614	1541819.814929
+-2499790.643992	1483143.153419
+-2502256.049938	1428411.141423
+-2485984.370696	1381075.347263
+-2471191.935021	1325357.172889
+-2458864.905292	1273090.566838
+-2470205.772643	1221317.041976
+-2429773.115132	1188280.602303
+-2407625.063831	1139607.242244
+-2396364.68495	1083693.636763
+-2338897.923762	1058066.567585
+-2325307.811319	1007200.718155
+-2311717.698876	954005.135163
+-2260463.560519	964488.936191
+-2206879.6886	938861.867013
+-2152242.420374	914986.967648
+-2109443.190091	885575.174326
+-2108023.310413	827157.267588
+-2053256.522847	813972.670581
+-2101735.271841	786792.116752
+-2157921.939085	785372.237074
+-2199504.129645	750483.764995
+-2178611.614388	702410.695909
+-2125873.226361	700787.976277
+-2093621.673683	654743.30673
+-2078408.677136	605453.19792
+-2130944.225209	589631.681512
+-2134798.184334	539530.212887
+-2089767.714558	579489.683815
+-2040883.285656	566710.766716
+-2038652.046162	506061.620485
+-2008428.893024	553120.489801
+-2004980.613806	603424.798381
+-1959138.784214	567319.286578
+-1948996.786516	510118.419564
+-1893824.319042	516406.458136
+-1877191.442818	567522.126532
+-1824250.214837	562045.447775
+-1774757.266073	571376.085657
+-1776582.825659	516609.29809
+-1817962.176264	480909.466195
+-1858935.846962	446426.674024
+-1873540.323647	392674.086227
+-1841638.366983	347862.375138
+-1819355.95276	393260.191031
+-1781038.530172	360148.939989
+-1825811.605479	333909.835391
+-1805819.906737	274767.726613
+-1752925.203816	250611.090633
+-1780622.036448	206462.755911
+-1804986.91929	151069.090648
+-1851842.463216	130660.898182
+-1870376.433924	76933.207813
+-1900572.228899	28619.935854
+-1887244.429738	-22192.298448
+-1898281.513418	-81126.160364
+-1908902.103375	-139643.528557
+-1949926.735168	-186915.566207
+-1974262.594748	-234407.84861
+-1973612.520371	-288364.021891
+-1952810.140311	-336469.52578
+-1944359.173411	-393025.996568
+-1894953.520768	-425529.715412
+-1844897.793749	-420329.120397
+-1793541.917975	-423579.492281
+-1784440.876699	-368323.170247
+-1738935.670317	-400826.889091
+-1703831.653966	-346870.71581
+-1653125.852569	-364422.723985
+-1608270.720565	-329968.782011
+-1575952.847614	-401284.225807
+-1596047.631389	-452525.924435
+-1563561.064285	-502762.883873
+-1551839.107083	-553669.669438
+-1594038.153012	-582807.105913
+-1609818.336911	-637074.794991
+-1598286.506136	-694548.066946
+-1574241.707797	-738434.62511
+-1563195.194103	-792114.084796
+-1540274.279307	-848097.912086
+-1518570.404234	-916860.656475
+-1496258.0093	-974264.363443
+-1462586.576944	-1028625.471102
+-1472728.574641	-1086840.537885
+-1407819.789377	-1071424.701385
+-1355689.921212	-1064528.142951
+-1310659.451435	-1090694.49701
+-1279016.418619	-1134710.767018
+-1228306.430131	-1167976.519465
+-1175568.042104	-1200836.592005
+-1125170.672365	-1198245.774992
+-1078002.024254	-1216252.428506
+-1027089.195813	-1229234.185558
+-980030.326496	-1250938.060631
+-942099.255108	-1288666.292066
+-898082.985101	-1317875.245435
+-843316.197534	-1308341.767599
+-783478.411119	-1288057.772204
+-733985.462355	-1278321.454414
+-694228.831381	-1240593.22298
+-641287.6034	-1226800.106111
+-611470.130169	-1271627.735934
+-557311.862464	-1289274.811928
+-504979.154345	-1267165.256947
+-457311.765167	-1221729.107262
+-408427.336265	-1207935.990394
+-349198.069712	-1191505.954124
+-298285.24127	-1209153.030117
+-243721.293658	-1227002.946065
+-189157.346045	-1245461.381874
+-122828.681103	-1260268.698513
+-69481.773214	-1287043.572434
+-29522.302286	-1318483.765296
+28287.08459	-1324568.963915
+80619.792709	-1333291.081935
+133763.860644	-1348504.078481
+200701.045447	-1351546.67779
+264189.951034	-1347084.198803
+313682.899797	-1360471.635764
+308003.381087	-1310370.167138
+335792.454778	-1264528.337546
+381025.764509	-1297388.410086
+406786.43866	-1345461.479172
+436198.231983	-1395765.787751
+462364.586043	-1448301.335825
+462161.746089	-1508747.642102
+402932.479535	-1523352.118786
+451411.228529	-1541607.714642
+456685.067332	-1603879.580504
+439849.351154	-1653981.04913
+416522.75645	-1700228.558631
+408206.318338	-1750330.027256
+357902.009758	-1759863.505092
+341877.653396	-1807328.054316
+323216.377633	-1864123.241422
+345123.09266	-1917875.829219
+316725.499107	-1967774.457891
+344717.412752	-2020512.845918
+397658.640733	-2013007.767622
+441674.91074	-2041202.521221
+487313.900379	-2062095.036478
+545123.287254	-2055401.317997
+597861.675281	-2054792.798135
+654454.022434	-2061283.676662
+714900.328711	-2056212.677813
+755468.319501	-2094143.749202
+808815.22739	-2120310.103261
+861350.775463	-2112196.505103
+915103.363259	-2114427.744597
+972101.390319	-2106314.146439
+1013683.580879	-2137145.819439
+1064596.409321	-2123758.382478
+1114292.198038	-2099011.908096
+1160742.547493	-2077713.712932
+1212263.895796	-2050330.319148
+1262771.04433	-2018687.286332
+1317537.831896	-2030046.323753
+1381229.577437	-2045665.000208
+1441675.883714	-2064123.436017
+1490357.472662	-2041405.361175
+1531331.14336	-2012196.407806
+1590966.089821	-1998403.290937
+1637822.119184	-1970817.0572
+1689951.987349	-1951141.581667
+1739242.096159	-1925178.067561
+1785286.765705	-1898403.19364
+1838633.673594	-1873859.559212
+1883055.623509	-1848301.725014
+1918552.615451	-1807125.214362
+1946950.209004	-1751547.06698
+1989343.759379	-1715847.235085
+1996240.317814	-1658240.688163
+1968248.404168	-1606110.819998
+1994820.438136	-1554995.151602
+2045124.746716	-1561891.710037
+2105571.052993	-1552561.072155
+2117741.45023	-1503473.803299
+2137214.085809	-1452763.814811
+2146139.043783	-1394345.908074
+2193400.753053	-1363717.075027
+2187924.074296	-1307327.567829
+2205368.310336	-1251140.900585
+2231940.344304	-1201242.271913
+2272508.335094	-1158443.04163
+2318147.324732	-1134102.247156
+2351210.237226	-1084000.77853
+2404759.985069	-1078929.779681
+2448167.735214	-1052560.585668
+2462163.692037	-985014.881002
+2453644.413971	-927814.013989
+2413482.103089	-889071.582784
+2404557.145115	-835116.155033
+2452224.534293	-799010.64323
+2483664.727156	-746880.775065
+2516524.799696	-705501.424459
+2544719.553295	-660470.954682
+2597863.62123	-651140.316801
+2649384.969533	-620105.803846
+2599486.340861	-601241.688129
+2613482.297684	-548097.620194
+2664597.966079	-515846.067516
+2634171.972987	-469801.397969
+2652630.408796	-420916.969067
+2652021.888934	-367367.221224
+2709425.595902	-351951.384724
+2742894.188304	-309354.994395
+2714496.594751	-262904.64494
+2655064.488244	-255805.246552
+2608005.618927	-233898.531525
+2569871.707584	-199821.419262
+2574896.697294	-146121.254432
+2586855.25443	-86328.468753
+2567450.803229	-29694.547224
+2550302.683562	17688.415012
+2572189.099452	68004.608244
+2590465.384886	115161.937327
+2603326.474636	173149.657778
+2578958.094057	219404.454246
+2547369.452567	268141.215403
+2496376.359874	290027.631293
+2476746.27552	348240.984898
+2425527.549674	370804.300248
+2387846.813039	414802.765182
+2357611.970469	456319.265427
+2305039.445702	469180.355176
+2256528.317698	484072.143308
+2210724.787537	524234.844632
+2168305.754678	565074.445416
+2140101.61049	607267.845122
+2188161.472186	621257.100639
+2223585.877287	657809.671507
+2239831.464339	714669.22619
+2218170.681603	765887.952036
+2240282.730646	822973.139872
+2259010.282387	899011.512604
+2254948.885624	949102.072682
+2236898.233344	998515.733299
+2222908.977826	1063046.815202
+2203955.792932	1119003.837271
+2174849.11613	1169545.663656
+2167854.488371	1220087.490042
+2144388.640406	1268372.984892
+2139199.077876	1323653.1075
+2119343.360367	1377353.798035
+2169208.287292	1392922.485627
+2168531.387831	1451587.105538
+2179136.146046	1515215.654826
+2153413.966547	1559665.386067
+2116861.395679	1596443.590088
+2060540.583216	1638517.083388
+2005773.795649	1661843.678093
+1972305.203247	1616610.368362
+1923826.454253	1651093.160533
+1872710.785858	1633243.244586
+1825246.236634	1670971.47602
+1811655.959719	1723912.704001
+1754252.252751	1708496.867501
+1705570.663803	1733243.341883
+1651818.076006	1760221.055758
+1596848.448486	1759206.855989
+1549383.899261	1775028.372397
+1496036.991373	1783547.650463
+1458917.2798	1748659.178383
+1409627.17099	1725738.263587
+1365408.061029	1754338.697094
+1343298.506048	1778679.491568
+1346746.785265	1834257.63895
+1325854.270008	1880302.308497
+1320783.27116	1934460.576202
+1270884.642488	1962249.649893
+1215712.175014	1941357.134636
+1175347.024177	1976854.126577
+1123217.156012	1975839.926807
+1074941.246972	1947442.333254
+1017740.379958	1947036.653346
+961148.032806	1957178.651044
+916117.563029	1984967.724735
+862567.815186	1997340.961926
+806786.82785	2020667.55663
+785082.952777	2073000.264749
+731938.884842	2077259.903782
+682648.776033	2116610.854849
+630518.907867	2135880.650474
+576969.160025	2169349.242876
+522810.89232	2162047.004534
+480011.662036	2133649.410981
+431532.913042	2152919.206606
+380620.084601	2167118.003382
+327273.176712	2183142.359744
+283662.586613	2155961.805915
+228084.43923	2183142.359744
+170477.892309	2164481.083981
+114696.904972	2176854.321172
+63175.556669	2197746.836429
+13276.927997	2183750.879606
+3743.450162	2239734.706896
+-45343.818694	2226144.429982
+-76175.491695	2172797.522093
+-124654.240689	2147848.207757
+-182666.467519	2145414.12831
+-237027.575177	2127361.372408
+-282058.044954	2100383.658533
+-333376.553304	2102614.898026
+-365628.105982	2058801.467973
+-409441.536035	2019856.196815
+-426885.772075	1971377.44782
+-449401.006963	1915799.300438
+-505181.994299	1889835.786333
+-538650.586701	1852513.234806
+-577393.017906	1815596.363187
+-623640.527406	1789835.689035
+-632565.48538	1739328.540502
+-632971.165288	1679896.433994
+-648792.681696	1619855.807625
+-696865.750782	1599774.652184
+-745953.019638	1579693.496743
+-721206.545256	1528983.508255
+-696865.750782	1481924.638939
+-703762.309216	1423303.892247
+-682058.434144	1365494.505371
+-705587.868802	1319449.835825
+-726277.544105	1270768.246877
+-741287.700697	1221680.978021
+-760557.496322	1169956.789764
+-768468.254527	1118638.281414
+-757312.057059	1062654.454124
+-782261.371395	1017015.464485
+-841490.637949	989226.390794
+-880435.909107	947644.200234
+-1016913.83085	878162.517102
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/CrossLineEISMINT.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/CrossLineEISMINT.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/CrossLineEISMINT.exp	(revision 27955)
@@ -0,0 +1,7 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+2 1.
+# X pos Y pos
+10000 199999 
+10000 1
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP10000.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP10000.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP10000.exp	(revision 27955)
@@ -0,0 +1,7 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+2 1.
+# X pos Y pos
+0 2500
+10000 2500
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP100000.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP100000.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP100000.exp	(revision 27955)
@@ -0,0 +1,7 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+2 1.
+# X pos Y pos
+0 50000
+100000 50000
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP160000.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP160000.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP160000.exp	(revision 27955)
@@ -0,0 +1,7 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+2 1.
+# X pos Y pos
+0 40000
+160000 40000
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP20000.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP20000.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP20000.exp	(revision 27955)
@@ -0,0 +1,7 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+2 1.
+# X pos Y pos
+0 5000
+20000 5000
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP40000.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP40000.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP40000.exp	(revision 27955)
@@ -0,0 +1,7 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+2 1.
+# X pos Y pos
+0 10000
+40000 10000
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP5000.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP5000.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP5000.exp	(revision 27955)
@@ -0,0 +1,7 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+2 1.
+# X pos Y pos
+0 1225
+5000 1225
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP80000.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP80000.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIP80000.exp	(revision 27955)
@@ -0,0 +1,7 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+2 1.
+# X pos Y pos
+0 20000
+80000 20000
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIPE.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIPE.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/ISMIPE.exp	(revision 27955)
@@ -0,0 +1,7 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+2 1.
+# X pos Y pos
+5 0 
+5 5000
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/MassFlux1.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/MassFlux1.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/MassFlux1.exp	(revision 27955)
@@ -0,0 +1,7 @@
+## Name:MassFlux1
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+200000 400000
+500000 800000
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/MassFlux2.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/MassFlux2.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/MassFlux2.exp	(revision 27955)
@@ -0,0 +1,7 @@
+## Name:MassFlux2
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+500000 800000
+800000 400000
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/MassFlux3.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/MassFlux3.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/MassFlux3.exp	(revision 27955)
@@ -0,0 +1,7 @@
+## Name:MassFlux3
+## Icon:0
+# Points Count Value
+2 1.000000
+# X pos Y pos
+200000 400000
+800000 400000
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/MassFlux4.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/MassFlux4.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/MassFlux4.exp	(revision 27955)
@@ -0,0 +1,17 @@
+## Name:circle
+## Icon:0
+# Points Count Value
+11 1.000000
+# X pos Y pos
+800000.0000000000 500000.0000000000
+742705.0983124842 676335.5756877420
+592705.0983124842 785316.9548885461
+407294.9016875158 785316.9548885461
+257294.9016875158 676335.5756877420
+200000.0000000000 500000.0000000001
+257294.9016875158 323664.4243122581
+407294.9016875157 214683.0451114539
+592705.0983124842 214683.0451114539
+742705.0983124842 323664.4243122580
+800000.0000000000 500000.0000000000
+
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/MassFlux5.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/MassFlux5.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/MassFlux5.exp	(revision 27955)
@@ -0,0 +1,107 @@
+## Name:circle
+## Icon:0
+# Points Count Value
+101 1.000000
+# X pos Y pos
+700000.0000000000 500000.0000000000
+699605.3456856543 512558.1039058627
+698422.9402628955 525066.6467128609
+696457.4501457377 537476.2629171449
+693716.6322257263 549737.9774329710
+690211.3032590307 561803.3988749895
+685955.2971776503 573624.9105369356
+680965.4104932039 585155.8583130145
+675261.3360087727 596350.7348203431
+668865.5851004031 607165.3589957993
+661803.3988749895 617557.0504584946
+654102.6485551578 627484.7979497380
+645793.7254842822 636909.4211857377
+636909.4211857377 645793.7254842822
+627484.7979497379 654102.6485551578
+617557.0504584946 661803.3988749895
+607165.3589957993 668865.5851004031
+596350.7348203431 675261.3360087727
+585155.8583130145 680965.4104932039
+573624.9105369356 685955.2971776503
+561803.3988749895 690211.3032590307
+549737.9774329709 693716.6322257263
+537476.2629171449 696457.4501457377
+525066.6467128609 698422.9402628955
+512558.1039058627 699605.3456856543
+499999.9999999999 700000.0000000000
+487441.8960941373 699605.3456856543
+474933.3532871392 698422.9402628955
+462523.7370828550 696457.4501457377
+450262.0225670291 693716.6322257263
+438196.6011250105 690211.3032590307
+426375.0894630644 685955.2971776503
+414844.1416869854 680965.4104932039
+403649.2651796569 675261.3360087727
+392834.6410042006 668865.5851004031
+382442.9495415054 661803.3988749895
+372515.2020502621 654102.6485551578
+363090.5788142623 645793.7254842822
+354206.2745157176 636909.4211857377
+345897.3514448421 627484.7979497379
+338196.6011250105 617557.0504584947
+331134.4148995969 607165.3589957993
+324738.6639912273 596350.7348203431
+319034.5895067961 585155.8583130145
+314044.7028223497 573624.9105369356
+309788.6967409693 561803.3988749895
+306283.3677742738 549737.9774329710
+303542.5498542623 537476.2629171449
+301577.0597371045 525066.6467128608
+300394.6543143457 512558.1039058626
+300000.0000000000 500000.0000000000
+300394.6543143457 487441.8960941373
+301577.0597371045 474933.3532871392
+303542.5498542623 462523.7370828551
+306283.3677742737 450262.0225670291
+309788.6967409693 438196.6011250105
+314044.7028223497 426375.0894630644
+319034.5895067961 414844.1416869855
+324738.6639912273 403649.2651796569
+331134.4148995970 392834.6410042007
+338196.6011250105 382442.9495415054
+345897.3514448422 372515.2020502621
+354206.2745157177 363090.5788142623
+363090.5788142623 354206.2745157177
+372515.2020502621 345897.3514448421
+382442.9495415054 338196.6011250105
+392834.6410042006 331134.4148995971
+403649.2651796569 324738.6639912273
+414844.1416869856 319034.5895067960
+426375.0894630644 314044.7028223497
+438196.6011250105 309788.6967409693
+450262.0225670289 306283.3677742738
+462523.7370828551 303542.5498542623
+474933.3532871393 301577.0597371045
+487441.8960941373 300394.6543143457
+499999.9999999999 300000.0000000000
+512558.1039058627 300394.6543143457
+525066.6467128608 301577.0597371045
+537476.2629171450 303542.5498542623
+549737.9774329710 306283.3677742738
+561803.3988749895 309788.6967409693
+573624.9105369357 314044.7028223497
+585155.8583130145 319034.5895067961
+596350.7348203431 324738.6639912273
+607165.3589957993 331134.4148995970
+617557.0504584946 338196.6011250105
+627484.7979497380 345897.3514448422
+636909.4211857377 354206.2745157177
+645793.7254842824 363090.5788142623
+654102.6485551579 372515.2020502621
+661803.3988749895 382442.9495415053
+668865.5851004031 392834.6410042007
+675261.3360087727 403649.2651796569
+680965.4104932039 414844.1416869856
+685955.2971776503 426375.0894630644
+690211.3032590307 438196.6011250105
+693716.6322257263 450262.0225670291
+696457.4501457377 462523.7370828551
+698422.9402628955 474933.3532871393
+699605.3456856543 487441.8960941373
+700000.0000000000 500000.0000000000
+
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/MassFlux6.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/MassFlux6.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/MassFlux6.exp	(revision 27955)
@@ -0,0 +1,507 @@
+## Name:circle
+## Icon:0
+# Points Count Value
+501 1.000000
+# X pos Y pos
+900000.0000000000 500000.0000000000
+899968.4176815264 505026.4159533411
+899873.6757133200 510052.0381773350
+899715.7890562357 515076.0730679738
+899494.7826424070 520097.7272719078
+899210.6913713086 525116.2078117253
+898863.5601042456 530130.7222111730
+898453.4436572690 535140.4786202973
+897980.4067925201 540144.6859404859
+897444.5242080034 545142.5539493926
+896845.8805257911 550133.2934257217
+896184.5702786604 555116.1162738552
+895460.6978951656 560090.2356483028
+894674.3776831472 565054.8660779535
+893825.7338116821 570009.2235901104
+892914.9002914755 574952.5258342898
+891942.0209536988 579883.9922057628
+890907.2494272774 584802.8439688219
+889810.7491146309 589708.3043797525
+888652.6931658696 594599.5988094899
+887433.2644514524 599475.9548659419
+886152.6555333096 604336.6025159587
+884811.0686344344 609180.7742069301
+883408.7156069503 614007.7049879904
+881945.8178986572 618816.6326308140
+880422.6065180614 623606.7977499790
+878839.3219978977 628377.4439228838
+877196.2143571458 633127.8178091947
+875493.5430615495 637857.1692698068
+873731.5769826449 642564.7514853003
+871910.5943553005 647249.8210738712
+870030.8827337832 651911.6382087205
+868092.7389463482 656549.4667348809
+866096.4690483670 661162.5742854651
+864042.3882739983 665750.2323973137
+861930.8209864078 670311.7166260290
+859762.1006265484 674846.3066603731
+857536.5696605055 679353.2864360129
+855254.5795254178 683831.9442485952
+852916.4905739813 688281.5728661331
+850522.6720175454 692701.4696406862
+848073.5018678103 697090.9366193167
+845569.3668771342 701449.2806543043
+843010.6624774609 705775.8135126026
+840397.7927178767 710069.8519845183
+837731.1702008061 714330.7179915986
+835011.2160168567 718557.7386937076
+832238.3596783250 722750.2465952751
+829413.0390513709 726907.5796507027
+826535.7002868736 731029.0813689070
+823606.7977499790 735114.1009169893
+820626.7939483507 739161.9932230075
+817596.1594591341 743172.1190778422
+814515.3728546476 747143.8452361338
+811384.9206268094 751076.5445162802
+808205.2971103156 754969.5958994759
+804977.0044045792 758822.3846277777
+801700.5522944415 762634.3023011826
+798376.4581696729 766404.7469737006
+795005.2469432696 770133.1232484097
+791587.4509685646 773818.8423714754
+788123.6099551627 777461.3223251220
+784614.2708837141 781059.9879195397
+781059.9879195397 784614.2708837141
+777461.3223251220 788123.6099551627
+773818.8423714754 791587.4509685646
+770133.1232484097 795005.2469432696
+766404.7469737006 798376.4581696729
+762634.3023011826 801700.5522944415
+758822.3846277777 804977.0044045792
+754969.5958994759 808205.2971103156
+751076.5445162802 811384.9206268094
+747143.8452361338 814515.3728546476
+743172.1190778422 817596.1594591341
+739161.9932230075 820626.7939483506
+735114.1009169891 823606.7977499790
+731029.0813689070 826535.7002868736
+726907.5796507025 829413.0390513709
+722750.2465952751 832238.3596783250
+718557.7386937076 835011.2160168567
+714330.7179915986 837731.1702008061
+710069.8519845183 840397.7927178767
+705775.8135126026 843010.6624774609
+701449.2806543044 845569.3668771342
+697090.9366193167 848073.5018678103
+692701.4696406862 850522.6720175454
+688281.5728661331 852916.4905739813
+683831.9442485950 855254.5795254179
+679353.2864360129 857536.5696605055
+674846.3066603731 859762.1006265484
+670311.7166260290 861930.8209864078
+665750.2323973136 864042.3882739983
+661162.5742854651 866096.4690483670
+656549.4667348809 868092.7389463482
+651911.6382087205 870030.8827337832
+647249.8210738711 871910.5943553005
+642564.7514853003 873731.5769826449
+637857.1692698068 875493.5430615495
+633127.8178091947 877196.2143571458
+628377.4439228838 878839.3219978977
+623606.7977499790 880422.6065180614
+618816.6326308140 881945.8178986572
+614007.7049879904 883408.7156069503
+609180.7742069301 884811.0686344344
+604336.6025159588 886152.6555333096
+599475.9548659419 887433.2644514524
+594599.5988094899 888652.6931658696
+589708.3043797525 889810.7491146309
+584802.8439688218 890907.2494272774
+579883.9922057628 891942.0209536988
+574952.5258342898 892914.9002914755
+570009.2235901104 893825.7338116821
+565054.8660779534 894674.3776831472
+560090.2356483028 895460.6978951656
+555116.1162738552 896184.5702786604
+550133.2934257217 896845.8805257911
+545142.5539493926 897444.5242080034
+540144.6859404859 897980.4067925201
+535140.4786202973 898453.4436572690
+530130.7222111732 898863.5601042456
+525116.2078117253 899210.6913713086
+520097.7272719078 899494.7826424070
+515076.0730679738 899715.7890562357
+510052.0381773350 899873.6757133200
+505026.4159533410 899968.4176815264
+500000.0000000000 900000.0000000000
+494973.5840466589 899968.4176815264
+489947.9618226651 899873.6757133200
+484923.9269320262 899715.7890562357
+479902.2727280921 899494.7826424070
+474883.7921882746 899210.6913713086
+469869.2777888268 898863.5601042456
+464859.5213797027 898453.4436572690
+459855.3140595140 897980.4067925201
+454857.4460506073 897444.5242080034
+449866.7065742782 896845.8805257911
+444883.8837261448 896184.5702786604
+439909.7643516972 895460.6978951655
+434945.1339220466 894674.3776831472
+429990.7764098896 893825.7338116821
+425047.4741657102 892914.9002914755
+420116.0077942372 891942.0209536988
+415197.1560311782 890907.2494272774
+410291.6956202475 889810.7491146309
+405400.4011905101 888652.6931658696
+400524.0451340580 887433.2644514524
+395663.3974840412 886152.6555333096
+390819.2257930699 884811.0686344344
+385992.2950120096 883408.7156069505
+381183.3673691860 881945.8178986572
+376393.2022500210 880422.6065180614
+371622.5560771162 878839.3219978977
+366872.1821908053 877196.2143571458
+362142.8307301932 875493.5430615495
+357435.2485146997 873731.5769826449
+352750.1789261288 871910.5943553005
+348088.3617912795 870030.8827337832
+343450.5332651191 868092.7389463482
+338837.4257145349 866096.4690483670
+334249.7676026863 864042.3882739983
+329688.2833739709 861930.8209864078
+325153.6933396268 859762.1006265484
+320646.7135639872 857536.5696605055
+316168.0557514048 855254.5795254179
+311718.4271338669 852916.4905739813
+307298.5303593138 850522.6720175454
+302909.0633806834 848073.5018678103
+298550.7193456957 845569.3668771342
+294224.1864873974 843010.6624774609
+289930.1480154817 840397.7927178766
+285669.2820084015 837731.1702008061
+281442.2613062924 835011.2160168567
+277249.7534047248 832238.3596783250
+273092.4203492973 829413.0390513709
+268970.9186310929 826535.7002868736
+264885.8990830108 823606.7977499790
+260838.0067769924 820626.7939483506
+256827.8809221578 817596.1594591341
+252856.1547638662 814515.3728546475
+248923.4554837199 811384.9206268094
+245030.4041005241 808205.2971103156
+241177.6153722222 804977.0044045791
+237365.6976988174 801700.5522944415
+233595.2530262994 798376.4581696729
+229866.8767515902 795005.2469432696
+226181.1576285245 791587.4509685646
+222538.6776748779 788123.6099551627
+218940.0120804604 784614.2708837142
+215385.7291162859 781059.9879195397
+211876.3900448372 777461.3223251220
+208412.5490314353 773818.8423714754
+204994.7530567305 770133.1232484098
+201623.5418303271 766404.7469737006
+198299.4477055584 762634.3023011826
+195022.9955954208 758822.3846277777
+191794.7028896842 754969.5958994757
+188615.0793731906 751076.5445162803
+185484.6271453524 747143.8452361338
+182403.8405408658 743172.1190778421
+179373.2060516493 739161.9932230075
+176393.2022500210 735114.1009169893
+173464.2997131264 731029.0813689071
+170586.9609486290 726907.5796507025
+167761.6403216749 722750.2465952751
+164988.7839831433 718557.7386937076
+162268.8297991939 714330.7179915986
+159602.2072821232 710069.8519845182
+156989.3375225391 705775.8135126026
+154430.6331228659 701449.2806543044
+151926.4981321897 697090.9366193167
+149477.3279824546 692701.4696406861
+147083.5094260186 688281.5728661329
+144745.4204745822 683831.9442485952
+142463.4303394945 679353.2864360129
+140237.8993734516 674846.3066603731
+138069.1790135922 670311.7166260290
+135957.6117260017 665750.2323973136
+133903.5309516330 661162.5742854651
+131907.2610536519 656549.4667348809
+129969.1172662167 651911.6382087204
+128089.4056446994 647249.8210738711
+126268.4230173552 642564.7514853003
+124506.4569384504 637857.1692698068
+122803.7856428542 633127.8178091946
+121160.6780021022 628377.4439228837
+119577.3934819386 623606.7977499790
+118054.1821013428 618816.6326308140
+116591.2843930496 614007.7049879904
+115188.9313655656 609180.7742069301
+113847.3444666904 604336.6025159588
+112566.7355485476 599475.9548659419
+111347.3068341304 594599.5988094899
+110189.2508853691 589708.3043797524
+109092.7505727226 584802.8439688219
+108057.9790463013 579883.9922057628
+107085.0997085245 574952.5258342898
+106174.2661883179 570009.2235901103
+105325.6223168527 565054.8660779534
+104539.3021048344 560090.2356483028
+103815.4297213395 555116.1162738552
+103154.1194742089 550133.2934257216
+102555.4757919966 545142.5539493926
+102019.5932074799 540144.6859404860
+101546.5563427310 535140.4786202973
+101136.4398957544 530130.7222111730
+100789.3086286914 525116.2078117252
+100505.2173575930 520097.7272719078
+100284.2109437643 515076.0730679738
+100126.3242866800 510052.0381773349
+100031.5823184735 505026.4159533409
+100000.0000000000 500000.0000000002
+100031.5823184735 494973.5840466591
+100126.3242866800 489947.9618226651
+100284.2109437643 484923.9269320263
+100505.2173575929 479902.2727280924
+100789.3086286914 474883.7921882748
+101136.4398957544 469869.2777888271
+101546.5563427310 464859.5213797028
+102019.5932074799 459855.3140595143
+102555.4757919966 454857.4460506075
+103154.1194742089 449866.7065742785
+103815.4297213395 444883.8837261449
+104539.3021048344 439909.7643516974
+105325.6223168527 434945.1339220467
+106174.2661883179 429990.7764098897
+107085.0997085245 425047.4741657103
+108057.9790463013 420116.0077942373
+109092.7505727226 415197.1560311784
+110189.2508853691 410291.6956202477
+111347.3068341304 405400.4011905103
+112566.7355485475 400524.0451340582
+113847.3444666904 395663.3974840415
+115188.9313655656 390819.2257930701
+116591.2843930496 385992.2950120097
+118054.1821013428 381183.3673691861
+119577.3934819385 376393.2022500213
+121160.6780021022 371622.5560771164
+122803.7856428542 366872.1821908055
+124506.4569384503 362142.8307301933
+126268.4230173551 357435.2485147000
+128089.4056446993 352750.1789261290
+129969.1172662167 348088.3617912797
+131907.2610536518 343450.5332651191
+133903.5309516328 338837.4257145352
+135957.6117260017 334249.7676026865
+138069.1790135921 329688.2833739711
+140237.8993734515 325153.6933396269
+142463.4303394944 320646.7135639872
+144745.4204745821 316168.0557514051
+147083.5094260186 311718.4271338672
+149477.3279824545 307298.5303593140
+151926.4981321897 302909.0633806834
+154430.6331228658 298550.7193456959
+156989.3375225390 294224.1864873975
+159602.2072821232 289930.1480154819
+162268.8297991939 285669.2820084015
+164988.7839831432 281442.2613062926
+167761.6403216748 277249.7534047250
+170586.9609486290 273092.4203492975
+173464.2997131264 268970.9186310930
+176393.2022500209 264885.8990830109
+179373.2060516492 260838.0067769926
+182403.8405408658 256827.8809221580
+185484.6271453524 252856.1547638664
+188615.0793731905 248923.4554837200
+191794.7028896842 245030.4041005243
+195022.9955954208 241177.6153722224
+198299.4477055584 237365.6976988175
+201623.5418303271 233595.2530262994
+204994.7530567303 229866.8767515904
+208412.5490314353 226181.1576285246
+211876.3900448372 222538.6776748781
+215385.7291162858 218940.0120804604
+218940.0120804601 215385.7291162860
+222538.6776748779 211876.3900448374
+226181.1576285244 208412.5490314355
+229866.8767515902 204994.7530567305
+233595.2530262992 201623.5418303273
+237365.6976988173 198299.4477055586
+241177.6153722220 195022.9955954211
+245030.4041005242 191794.7028896842
+248923.4554837196 188615.0793731908
+252856.1547638661 185484.6271453525
+256827.8809221577 182403.8405408660
+260838.0067769924 179373.2060516494
+264885.8990830107 176393.2022500210
+268970.9186310926 173464.2997131267
+273092.4203492975 170586.9609486290
+277249.7534047245 167761.6403216751
+281442.2613062924 164988.7839831432
+285669.2820084011 162268.8297991941
+289930.1480154816 159602.2072821233
+294224.1864873973 156989.3375225391
+298550.7193456956 154430.6331228659
+302909.0633806833 151926.4981321898
+307298.5303593136 149477.3279824547
+311718.4271338671 147083.5094260186
+316168.0557514046 144745.4204745823
+320646.7135639869 142463.4303394946
+325153.6933396267 140237.8993734517
+329688.2833739708 138069.1790135922
+334249.7676026862 135957.6117260018
+338837.4257145349 133903.5309516330
+343450.5332651191 131907.2610536519
+348088.3617912793 129969.1172662169
+352750.1789261285 128089.4056446995
+357435.2485146995 126268.4230173553
+362142.8307301930 124506.4569384504
+366872.1821908052 122803.7856428543
+371622.5560771161 121160.6780021023
+376393.2022500210 119577.3934819386
+381183.3673691860 118054.1821013428
+385992.2950120096 116591.2843930496
+390819.2257930696 115188.9313655657
+395663.3974840410 113847.3444666906
+400524.0451340579 112566.7355485476
+405400.4011905100 111347.3068341304
+410291.6956202474 110189.2508853691
+415197.1560311781 109092.7505727226
+420116.0077942372 108057.9790463013
+425047.4741657098 107085.0997085246
+429990.7764098896 106174.2661883179
+434945.1339220463 105325.6223168529
+439909.7643516969 104539.3021048344
+444883.8837261446 103815.4297213395
+449866.7065742782 103154.1194742089
+454857.4460506073 102555.4757919966
+459855.3140595140 102019.5932074799
+464859.5213797027 101546.5563427310
+469869.2777888266 101136.4398957544
+474883.7921882744 100789.3086286914
+479902.2727280919 100505.2173575930
+484923.9269320260 100284.2109437643
+489947.9618226648 100126.3242866800
+494973.5840466588 100031.5823184735
+499999.9999999999 100000.0000000000
+505026.4159533410 100031.5823184735
+510052.0381773350 100126.3242866800
+515076.0730679735 100284.2109437643
+520097.7272719076 100505.2173575929
+525116.2078117251 100789.3086286914
+530130.7222111729 101136.4398957544
+535140.4786202972 101546.5563427310
+540144.6859404859 102019.5932074799
+545142.5539493926 102555.4757919966
+550133.2934257213 103154.1194742088
+555116.1162738553 103815.4297213395
+560090.2356483026 104539.3021048344
+565054.8660779533 105325.6223168527
+570009.2235901102 106174.2661883179
+574952.5258342897 107085.0997085245
+579883.9922057627 108057.9790463013
+584802.8439688218 109092.7505727226
+589708.3043797525 110189.2508853691
+594599.5988094895 111347.3068341304
+599475.9548659420 112566.7355485476
+604336.6025159585 113847.3444666904
+609180.7742069298 115188.9313655656
+614007.7049879903 116591.2843930496
+618816.6326308139 118054.1821013428
+623606.7977499790 119577.3934819385
+628377.4439228838 121160.6780021022
+633127.8178091947 122803.7856428542
+637857.1692698065 124506.4569384502
+642564.7514853000 126268.4230173551
+647249.8210738710 128089.4056446993
+651911.6382087203 129969.1172662167
+656549.4667348808 131907.2610536518
+661162.5742854651 133903.5309516329
+665750.2323973136 135957.6117260017
+670311.7166260288 138069.1790135920
+674846.3066603732 140237.8993734516
+679353.2864360127 142463.4303394944
+683831.9442485949 144745.4204745821
+688281.5728661328 147083.5094260186
+692701.4696406859 149477.3279824545
+697090.9366193166 151926.4981321897
+701449.2806543043 154430.6331228659
+705775.8135126026 156989.3375225391
+710069.8519845180 159602.2072821231
+714330.7179915984 162268.8297991938
+718557.7386937074 164988.7839831432
+722750.2465952750 167761.6403216748
+726907.5796507024 170586.9609486290
+731029.0813689069 173464.2997131263
+735114.1009169891 176393.2022500210
+739161.9932230075 179373.2060516494
+743172.1190778422 182403.8405408658
+747143.8452361336 185484.6271453522
+751076.5445162799 188615.0793731905
+754969.5958994757 191794.7028896842
+758822.3846277776 195022.9955954208
+762634.3023011824 198299.4477055584
+766404.7469737006 201623.5418303271
+770133.1232484097 204994.7530567304
+773818.8423714754 208412.5490314354
+777461.3223251221 211876.3900448373
+781059.9879195394 215385.7291162857
+784614.2708837140 218940.0120804601
+788123.6099551626 222538.6776748779
+791587.4509685645 226181.1576285244
+795005.2469432695 229866.8767515901
+798376.4581696729 233595.2530262993
+801700.5522944415 237365.6976988174
+804977.0044045789 241177.6153722220
+808205.2971103155 245030.4041005239
+811384.9206268091 248923.4554837196
+814515.3728546475 252856.1547638661
+817596.1594591341 256827.8809221577
+820626.7939483506 260838.0067769923
+823606.7977499790 264885.8990830106
+826535.7002868736 268970.9186310929
+829413.0390513709 273092.4203492974
+832238.3596783249 277249.7534047245
+835011.2160168565 281442.2613062921
+837731.1702008059 285669.2820084011
+840397.7927178766 289930.1480154815
+843010.6624774609 294224.1864873973
+845569.3668771341 298550.7193456956
+848073.5018678103 302909.0633806833
+850522.6720175454 307298.5303593139
+852916.4905739813 311718.4271338670
+855254.5795254176 316168.0557514046
+857536.5696605054 320646.7135639869
+859762.1006265483 325153.6933396267
+861930.8209864078 329688.2833739708
+864042.3882739982 334249.7676026862
+866096.4690483670 338837.4257145348
+868092.7389463481 343450.5332651190
+870030.8827337832 348088.3617912795
+871910.5943553005 352750.1789261285
+873731.5769826447 357435.2485146995
+875493.5430615495 362142.8307301929
+877196.2143571457 366872.1821908052
+878839.3219978977 371622.5560771161
+880422.6065180614 376393.2022500209
+881945.8178986572 381183.3673691860
+883408.7156069503 385992.2950120096
+884811.0686344344 390819.2257930696
+886152.6555333094 395663.3974840409
+887433.2644514524 400524.0451340579
+888652.6931658696 405400.4011905100
+889810.7491146307 410291.6956202474
+890907.2494272774 415197.1560311780
+891942.0209536988 420116.0077942371
+892914.9002914755 425047.4741657102
+893825.7338116821 429990.7764098896
+894674.3776831471 434945.1339220463
+895460.6978951655 439909.7643516969
+896184.5702786604 444883.8837261446
+896845.8805257911 449866.7065742781
+897444.5242080034 454857.4460506072
+897980.4067925201 459855.3140595140
+898453.4436572690 464859.5213797027
+898863.5601042456 469869.2777888269
+899210.6913713086 474883.7921882743
+899494.7826424070 479902.2727280919
+899715.7890562357 484923.9269320259
+899873.6757133200 489947.9618226648
+899968.4176815264 494973.5840466588
+900000.0000000000 500000.0000000000
+
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/Pig.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/Pig.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/Pig.exp	(revision 27955)
@@ -0,0 +1,14 @@
+## Name:Pig
+## Icon:0
+# Points Count Value
+8 1.000000
+# X pos Y pos
+-1630726.5154549279 -324668.7721082006
+-1596284.8605673832 -324668.7721082006
+-1538422.8803563081 -314529.3627584913
+-1512247.2226417740 -243553.4973105265
+-1556332.5408978313 -148496.5346570023
+-1611439.1887179029 -151031.3869944296
+-1670678.8351244798 -235948.9402982446
+-1630726.5154549279 -324668.7721082006
+
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/PigIslands.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/PigIslands.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/PigIslands.exp	(revision 27955)
@@ -0,0 +1,68 @@
+## Name:Island
+## Icon:0
+# Points Count  Value
+7 1.000000
+# X pos Y pos
+-1788144.703034 -331058.869467
+-1790984.462389 -330247.509651
+-1790984.462389 -332073.069237
+-1789767.422665 -334507.148684
+-1787739.023126 -336129.868316
+-1786521.983402 -334912.828592
+-1788144.703034 -331058.869467
+
+## Name:Island
+## Icon:0
+# Points Count  Value
+9 1.000000
+# X pos Y pos
+-1751633.511323 -319902.672000
+-1753053.391000 -318279.952368
+-1756095.990310 -318077.112414
+-1754878.950586 -320916.871770
+-1754067.590770 -326190.710572
+-1752647.711092 -326190.710572
+-1751430.671369 -324365.150987
+-1752039.191231 -322133.911493
+-1751633.511323 -319902.672000
+
+## Name:Island
+## Icon:0
+# Points Count  Value
+7 1.000000
+# X pos Y pos
+-1644331.175683 -296576.077296
+-1645548.215407 -297995.956973
+-1645345.375453 -299415.836651
+-1643722.655821 -300024.356513
+-1641694.256282 -298807.316789
+-1642302.776144 -296576.077296
+-1644331.175683 -296576.077296
+
+## Name:Island
+## Icon:0
+# Points Count  Value
+8 1.000000
+# X pos Y pos
+-1641694.256282 -318077.112414
+-1641694.256282 -320105.511954
+-1639868.696696 -321728.231586
+-1637434.617249 -320916.871770
+-1637434.617249 -318685.632276
+-1638043.137111 -316454.392783
+-1640477.216558 -316657.232737
+-1641694.256282 -318077.112414
+
+## Name:Island
+## Icon:0
+# Points Count  Value
+7 1.000000
+# X pos Y pos
+-1658732.812414 -359253.623066
+-1660558.371999 -362499.062330
+-1658327.132506 -366961.541316
+-1652039.093933 -367164.381270
+-1652444.773841 -360673.502744
+-1655081.693242 -359050.783112
+-1658732.812414 -359253.623066
+
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/PigShelves.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/PigShelves.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/PigShelves.exp	(revision 27955)
@@ -0,0 +1,1079 @@
+## Name:
+## Icon:0
+# Points Count Value
+1073 1.000000
+# X pos Y pos
+-1623288.8833276688 -348485.9928101762
+-1596095.2358279999 -341730.0242330000
+-1594724.3783690000 -336371.2178050000
+-1593384.6767620000 -335716.9449280000
+-1591337.9871720001 -334447.5913790000
+-1590800.5631190001 -334607.4475730000
+-1590553.6222590001 -334563.9052400000
+-1590306.6813990001 -334520.3629080000
+-1590059.7405389999 -334476.8205750000
+-1589565.8588200000 -334389.7359090000
+-1589318.9179600000 -334346.1935760000
+-1589071.9771000000 -334302.6512440000
+-1588825.0362400000 -334259.1089110000
+-1588578.0953800001 -334215.5665780000
+-1588287.6121870000 -334418.9651060000
+-1588040.6713280000 -334375.4227730000
+-1587503.2472750000 -334535.2789670000
+-1587256.3064150000 -334491.7366350000
+-1586965.8232219999 -334695.1351620000
+-1586675.3400300001 -334898.5336890000
+-1586384.8568370000 -335101.9322170000
+-1586094.3736439999 -335305.3307440000
+-1585760.3481190000 -335755.6701320000
+-1585469.8649259999 -335959.0686590000
+-1585179.3817330000 -336162.4671860000
+-1584888.8985400000 -336365.8657140000
+-1584598.4153479999 -336569.2642410000
+-1584307.9321550000 -336772.6627680000
+-1584220.8474890001 -337266.5444890000
+-1583930.3642960000 -337469.9430160000
+-1583639.8811039999 -337673.3415440000
+-1583392.9402439999 -337629.7992110000
+-1583145.9993840000 -337586.2568780000
+-1582899.0585240000 -337542.7145450000
+-1582405.1768040000 -337455.6298800000
+-1582158.2359440001 -337412.0875470000
+-1581911.2950850001 -337368.5452140000
+-1581664.3542249999 -337325.0028810000
+-1581417.4133649999 -337281.4605480000
+-1581170.4725050000 -337237.9182160000
+-1580676.5907850000 -337150.8335500000
+-1580429.6499250000 -337107.2912170000
+-1580182.7090660001 -337063.7488850000
+-1579935.7682060001 -337020.2065520000
+-1579601.7426799999 -337470.5459390000
+-1579558.2003470000 -337717.4867990000
+-1579514.6580139999 -337964.4276600000
+-1579471.1156810001 -338211.3685200000
+-1579427.5733490000 -338458.3093800000
+-1579384.0310160001 -338705.2502400000
+-1579296.9463500001 -339199.1319600000
+-1579253.4040170000 -339446.0728210000
+-1579209.8616839999 -339693.0136810000
+-1579166.3193520000 -339939.9545410000
+-1579122.7770189999 -340186.8954010000
+-1578832.2938260001 -340390.2939280000
+-1578788.7514930000 -340637.2347890000
+-1578498.2683000001 -340840.6333160000
+-1578164.2427749999 -341290.9727040000
+-1578120.7004420001 -341537.9135640000
+-1577830.2172490000 -341741.3120910000
+-1577583.2763890000 -341697.7697580000
+-1577292.7931969999 -341901.1682860000
+-1577045.8523370000 -341857.6259530000
+-1576755.3691440001 -342061.0244800000
+-1576261.4874239999 -341973.9398150000
+-1575971.0042310001 -342177.3383420000
+-1575724.0633719999 -342133.7960090000
+-1575433.5801790000 -342337.1945370000
+-1575186.6393190001 -342293.6522040000
+-1574896.1561260000 -342497.0507310000
+-1574649.2152660000 -342453.5083980000
+-1574402.2744070000 -342409.9660660000
+-1573864.8503540000 -342569.8222600000
+-1573617.9094940000 -342526.2799280000
+-1573327.4263009999 -342729.6784550000
+-1573080.4854410000 -342686.1361220000
+-1572833.5445820000 -342642.5937890000
+-1572630.1460549999 -342352.1105960000
+-1572383.2051949999 -342308.5682640000
+-1571932.8658080001 -341974.5427380000
+-1571685.9249480001 -341931.0004050000
+-1571482.5264210000 -341640.5172120000
+-1571235.5855610000 -341596.9748790000
+-1571032.1870339999 -341306.4916860000
+-1570828.7885070001 -341016.0084940000
+-1570421.9914530001 -340435.0421080000
+-1570218.5929260000 -340144.5589150000
+-1570015.1943989999 -339854.0757220000
+-1570058.7367320000 -339607.1348620000
+-1569855.3382049999 -339316.6516690000
+-1569898.8805380000 -339069.7108080000
+-1569695.4820109999 -338779.2276160000
+-1569739.0243430000 -338532.2867550000
+-1569535.6258159999 -338241.8035620000
+-1569579.1681490000 -337994.8627020000
+-1569419.3119550000 -337457.4386490000
+-1569462.8542879999 -337210.4977890000
+-1569259.4557610000 -336920.0145960000
+-1569302.9980939999 -336673.0737360000
+-1569099.5995670001 -336382.5905430000
+-1569143.1418999999 -336135.6496830000
+-1568939.7433730001 -335845.1664900000
+-1568983.2857049999 -335598.2256300000
+-1568779.8871780001 -335307.7424370000
+-1568823.4295109999 -335060.8015770000
+-1568620.0309840001 -334770.3183840000
+-1568663.5733169999 -334523.3775230000
+-1568707.1156500001 -334276.4366630000
+-1568503.7171230000 -333985.9534700000
+-1568547.2594560001 -333739.0126100000
+-1568634.3441210000 -333245.1308900000
+-1568430.9455939999 -332954.6476970000
+-1568474.4879270000 -332707.7068370000
+-1568271.0893999999 -332417.2236440000
+-1568314.6317330000 -332170.2827840000
+-1568358.1740659999 -331923.3419240000
+-1568154.7755390001 -331632.8587310000
+-1568198.3178719999 -331385.9178700000
+-1567994.9193450001 -331095.4346770000
+-1568038.4616779999 -330848.4938170000
+-1567835.0631510001 -330558.0106240000
+-1567878.6054839999 -330311.0697640000
+-1567675.2069560001 -330020.5865710000
+-1567718.7492889999 -329773.6457110000
+-1567515.3507620001 -329483.1625180000
+-1567558.8930949999 -329236.2216580000
+-1567399.0369010000 -328698.7976050000
+-1567442.5792340001 -328451.8567450000
+-1567239.1807070000 -328161.3735520000
+-1567282.7230400001 -327914.4326920000
+-1567079.3245130000 -327623.9494990000
+-1567122.8668460001 -327377.0086390000
+-1566919.4683180000 -327086.5254460000
+-1566963.0106510001 -326839.5845850000
+-1566759.6121240000 -326549.1013920000
+-1566556.2135970001 -326258.6181990000
+-1566599.7559300000 -326011.6773390000
+-1566396.3574029999 -325721.1941460000
+-1566439.8997360000 -325474.2532860000
+-1566236.5012089999 -325183.7700930000
+-1566280.0435420000 -324936.8292330000
+-1566120.1873480000 -324399.4051800000
+-1566163.7296810001 -324152.4643200000
+-1565960.3311530000 -323861.9811270000
+-1566003.8734860001 -323615.0402670000
+-1565800.4749590000 -323324.5570740000
+-1565844.0172919999 -323077.6162140000
+-1565640.6187650000 -322787.1330210000
+-1565684.1610979999 -322540.1921610000
+-1565727.7034310000 -322293.2513000000
+-1565814.7880970000 -321799.3695800000
+-1565858.3304290001 -321552.4287200000
+-1565901.8727620000 -321305.4878600000
+-1565945.4150950001 -321058.5470000000
+-1565988.9574279999 -320811.6061390000
+-1566322.9829539999 -320361.2667520000
+-1566366.5252860000 -320114.3258920000
+-1566410.0676190001 -319867.3850320000
+-1566497.1522850001 -319373.5033110000
+-1566540.6946180000 -319126.5624510000
+-1566337.2960910001 -318836.0792580000
+-1566177.4398970001 -318298.6552050000
+-1565974.0413700000 -318008.1720120000
+-1565770.6428429999 -317717.6888190000
+-1565814.1851750000 -317470.7479590000
+-1565857.7275080001 -317223.8070990000
+-1565944.8121740001 -316729.9253780000
+-1565988.3545070000 -316482.9845180000
+-1566031.8968400001 -316236.0436580000
+-1566075.4391729999 -315989.1027980000
+-1566118.9815050000 -315742.1619380000
+-1566162.5238379999 -315495.2210780000
+-1566249.6085039999 -315001.3393570000
+-1566293.1508370000 -314754.3984970000
+-1566336.6931700001 -314507.4576370000
+-1566380.2355020000 -314260.5167770000
+-1566423.7778350001 -314013.5759170000
+-1566467.3201679999 -313766.6350560000
+-1566510.8625010001 -313519.6941960000
+-1566597.9471670000 -313025.8124760000
+-1566641.4894999999 -312778.8716160000
+-1566685.0318320000 -312531.9307560000
+-1566728.5741650001 -312284.9898950000
+-1566772.1164980000 -312038.0490350000
+-1566815.6588310001 -311791.1081750000
+-1566859.2011640000 -311544.1673150000
+-1566902.7434970001 -311297.2264550000
+-1566699.3449700000 -311006.7432620000
+-1566786.4296349999 -310512.8615420000
+-1566829.9719680001 -310265.9206810000
+-1566873.5143009999 -310018.9798210000
+-1566670.1157740001 -309728.4966280000
+-1566713.6581069999 -309481.5557680000
+-1566466.7172470000 -309438.0134350000
+-1566016.3778599999 -309103.9879100000
+-1565769.4369999999 -309060.4455770000
+-1565522.4961399999 -309016.9032440000
+-1565275.5552800000 -308973.3609110000
+-1565028.6144210000 -308929.8185780000
+-1564781.6735610000 -308886.2762460000
+-1564244.2495080000 -309046.1324400000
+-1563997.3086480000 -309002.5901070000
+-1563750.3677880000 -308959.0477750000
+-1563503.4269290001 -308915.5054420000
+-1563546.9692609999 -308668.5645820000
+-1563343.5707340001 -308378.0813890000
+-1563387.1130669999 -308131.1405290000
+-1563183.7145400001 -307840.6573360000
+-1563227.2568729999 -307593.7164750000
+-1563067.4006790000 -307056.2924220000
+-1563110.9430120001 -306809.3515620000
+-1562907.5444850000 -306518.8683690000
+-1562951.0868180001 -306271.9275090000
+-1562747.6882900000 -305981.4443160000
+-1562791.2306230001 -305734.5034560000
+-1562834.7729559999 -305487.5625960000
+-1562878.3152890000 -305240.6217360000
+-1562921.8576219999 -304993.6808750000
+-1562965.3999550000 -304746.7400150000
+-1563008.9422879999 -304499.7991550000
+-1563052.4846200000 -304252.8582950000
+-1563096.0269530001 -304005.9174350000
+-1563139.5692860000 -303758.9765750000
+-1562979.7130920000 -303221.5525220000
+-1563023.2554250001 -302974.6116610000
+-1563066.7977580000 -302727.6708010000
+-1563110.3400910001 -302480.7299410000
+-1563153.8824229999 -302233.7890810000
+-1563197.4247560001 -301986.8482210000
+-1563240.9670889999 -301739.9073610000
+-1563284.5094220000 -301492.9665000000
+-1563328.0517549999 -301246.0256400000
+-1563371.5940880000 -300999.0847800000
+-1563415.1364200001 -300752.1439200000
+-1563458.6787530000 -300505.2030600000
+-1563792.7042789999 -300054.8636720000
+-1563836.2466120000 -299807.9228120000
+-1563879.7889449999 -299560.9819520000
+-1563923.3312770000 -299314.0410920000
+-1563966.8736099999 -299067.1002320000
+-1564257.3568030000 -298863.7017040000
+-1564547.8399960001 -298660.3031770000
+-1564881.8655210000 -298209.9637890000
+-1565172.3487140001 -298006.5652620000
+-1565462.8319069999 -297803.1667340000
+-1565753.3150990000 -297599.7682070000
+-1566000.2559590000 -297643.3105400000
+-1566537.6800120000 -297483.4543450000
+-1566784.6208720000 -297526.9966780000
+-1567075.1040650001 -297323.5981510000
+-1567162.1887300001 -296829.7164300000
+-1567205.7310629999 -296582.7755700000
+-1567292.8157289999 -296088.8938500000
+-1567583.2989210000 -295885.4953230000
+-1567670.3835870000 -295391.6136020000
+-1567960.8667800000 -295188.2150750000
+-1568004.4091129999 -294941.2742150000
+-1568294.8923050000 -294737.8756870000
+-1568832.3163580000 -294578.0194930000
+-1569122.7995509999 -294374.6209650000
+-1569413.2827430000 -294171.2224380000
+-1569950.7067960000 -294011.3662430000
+-1570241.1899890001 -293807.9677160000
+-1570778.6140409999 -293648.1115210000
+-1571069.0972340000 -293444.7129940000
+-1571359.5804270001 -293241.3144670000
+-1571693.6059520000 -292790.9750790000
+-1571737.1482849999 -292544.0342190000
+-1572027.6314780000 -292340.6356920000
+-1572318.1146710000 -292137.2371640000
+-1572652.1401960000 -291686.8977770000
+-1572695.6825290001 -291439.9569160000
+-1572986.1657219999 -291236.5583890000
+-1573276.6489150000 -291033.1598620000
+-1573857.6152999999 -290626.3628070000
+-1574148.0984930000 -290422.9642800000
+-1574438.5816850001 -290219.5657520000
+-1574772.6072110001 -289769.2263650000
+-1574816.1495439999 -289522.2855050000
+-1574859.6918770000 -289275.3446440000
+-1574946.7765420000 -288781.4629240000
+-1574990.3188750001 -288534.5220640000
+-1575033.8612080000 -288287.5812040000
+-1575077.4035410001 -288040.6403440000
+-1574874.0050140000 -287750.1571510000
+-1574961.0896800000 -287256.2754300000
+-1574757.6911530001 -286965.7922370000
+-1574801.2334850000 -286718.8513770000
+-1574844.7758180001 -286471.9105170000
+-1574684.9196240001 -285934.4864640000
+-1574728.4619570000 -285687.5456040000
+-1574772.0042900001 -285440.6047440000
+-1574815.5466229999 -285193.6638830000
+-1574902.6312879999 -284699.7821630000
+-1574946.1736210000 -284452.8413030000
+-1574989.7159539999 -284205.9004430000
+-1575570.6823390000 -283799.1033880000
+-1575817.6231990000 -283842.6457210000
+-1576311.5049190000 -283929.7303860000
+-1576558.4457789999 -283973.2727190000
+-1576805.3866389999 -284016.8150520000
+-1577299.2683590001 -284103.8997180000
+-1577546.2092180001 -284147.4420500000
+-1577749.6077449999 -284437.9252430000
+-1578199.9471320000 -284771.9507690000
+-1578403.3456590001 -285062.4339620000
+-1578693.8288519999 -284859.0354350000
+-1578780.9135179999 -284365.1537140000
+-1579071.3967100000 -284161.7551870000
+-1579114.9390430001 -283914.8143270000
+-1578664.5996560000 -283580.7888010000
+-1578461.2011289999 -283290.3056080000
+-1577967.3194100000 -283203.2209420000
+-1577763.9208829999 -282912.7377490000
+-1577313.5814960001 -282578.7122240000
+-1577066.6406360001 -282535.1698910000
+-1576616.3012490000 -282201.1443650000
+-1576369.3603890000 -282157.6020320000
+-1575919.0210020000 -281823.5765070000
+-1575715.6224750001 -281533.0933140000
+-1575308.8254209999 -280952.1269280000
+-1575105.4268940000 -280661.6437350000
+-1574902.0283669999 -280371.1605420000
+-1574989.1130329999 -279877.2788220000
+-1574785.7145060000 -279586.7956290000
+-1574582.3159789999 -279296.3124360000
+-1574625.8583110000 -279049.3715750000
+-1574916.3415039999 -278845.9730480000
+-1574959.8838370000 -278599.0321880000
+-1575046.9685030000 -278105.1504680000
+-1575090.5108360001 -277858.2096070000
+-1575380.9940279999 -277654.8110800000
+-1575424.5363610000 -277407.8702200000
+-1575715.0195540001 -277204.4716930000
+-1576252.4436059999 -277044.6154980000
+-1576542.9267990000 -276841.2169710000
+-1576833.4099920001 -276637.8184430000
+-1577123.8931849999 -276434.4199160000
+-1577167.4355170000 -276187.4790560000
+-1577457.9187100001 -275984.0805280000
+-1577791.9442360001 -275533.7411410000
+-1578082.4274279999 -275330.3426130000
+-1578125.9697610000 -275083.4017530000
+-1578416.4529540001 -274880.0032260000
+-1578706.9361469999 -274676.6046980000
+-1578750.4784800000 -274429.6638380000
+-1579084.5040050000 -273979.3244510000
+-1579128.0463380001 -273732.3835910000
+-1579418.5295309999 -273528.9850630000
+-1579462.0718640001 -273282.0442030000
+-1579505.6141959999 -273035.1033430000
+-1579796.0973890000 -272831.7048160000
+-1579839.6397220001 -272584.7639550000
+-1580173.6652470001 -272134.4245680000
+-1580217.2075799999 -271887.4837080000
+-1580507.6907730000 -271684.0851800000
+-1580551.2331060001 -271437.1443200000
+-1580841.7162990000 -271233.7457930000
+-1581132.1994910000 -271030.3472650000
+-1581219.2841570000 -270536.4655450000
+-1581509.7673500001 -270333.0670180000
+-1581800.2505419999 -270129.6684900000
+-1582090.7337350000 -269926.2699630000
+-1582134.2760679999 -269679.3291030000
+-1582424.7592610000 -269475.9305750000
+-1582468.3015940001 -269228.9897150000
+-1582802.3271190000 -268778.6503280000
+-1582845.8694519999 -268531.7094680000
+-1583136.3526450000 -268328.3109400000
+-1583179.8949770001 -268081.3700800000
+-1583470.3781699999 -267877.9715530000
+-1583760.8613630000 -267674.5730250000
+-1583804.4036960001 -267427.6321650000
+-1584138.4292210001 -266977.2927780000
+-1584428.9124139999 -266773.8942500000
+-1584472.4547470000 -266526.9533900000
+-1584762.9379400001 -266323.5548630000
+-1585009.8787990001 -266367.0971960000
+-1585256.8196590000 -266410.6395280000
+-1585750.7013790000 -266497.7241940000
+-1585997.6422389999 -266541.2665270000
+-1586244.5830989999 -266584.8088590000
+-1586491.5239589999 -266628.3511920000
+-1586738.4648190001 -266671.8935250000
+-1586985.4056780001 -266715.4358580000
+-1587479.2873980000 -266802.5205230000
+-1587726.2282580000 -266846.0628560000
+-1587973.1691180000 -266889.6051890000
+-1588220.1099779999 -266933.1475220000
+-1588423.5085050000 -267223.6307150000
+-1588873.8478920001 -267557.6562410000
+-1589077.2464190000 -267848.1394340000
+-1589280.6449460001 -268138.6226260000
+-1589484.0434729999 -268429.1058190000
+-1589440.5011400001 -268676.0466800000
+-1589600.3573340001 -269213.4707330000
+-1589556.8150010000 -269460.4115930000
+-1589760.2135280001 -269750.8947860000
+-1589716.6711960000 -269997.8356460000
+-1589920.0697230001 -270288.3188390000
+-1590123.4682499999 -270578.8020320000
+-1590036.3835839999 -271072.6837520000
+-1590239.7821110000 -271363.1669450000
+-1590443.1806379999 -271653.6501380000
+-1590399.6383050000 -271900.5909980000
+-1590603.0368319999 -272191.0741910000
+-1590806.4353590000 -272481.5573840000
+-1590762.8930259999 -272728.4982440000
+-1590966.2915530000 -273018.9814370000
+-1590922.7492209999 -273265.9222970000
+-1591082.6054150001 -273803.3463510000
+-1591039.0630820000 -274050.2872110000
+-1591242.4616090001 -274340.7704040000
+-1591198.9192760000 -274587.7112640000
+-1591402.3178030001 -274878.1944570000
+-1591605.7163300000 -275168.6776500000
+-1591562.1739970001 -275415.6185100000
+-1591765.5725240000 -275706.1017030000
+-1591722.0301910001 -275953.0425630000
+-1591881.8863860001 -276490.4666160000
+-1591838.3440530000 -276737.4074760000
+-1592041.7425800001 -277027.8906690000
+-1591998.2002470000 -277274.8315290000
+-1592201.5987740001 -277565.3147220000
+-1592695.4804940000 -277652.3993880000
+-1592898.8790209999 -277942.8825810000
+-1593102.2775480000 -278233.3657740000
+-1593392.7607410001 -278029.9672470000
+-1593886.6424600000 -278117.0519120000
+-1594177.1256530001 -277913.6533850000
+-1594467.6088459999 -277710.2548570000
+-1595048.5752310001 -277303.4578030000
+-1595339.0584239999 -277100.0592750000
+-1595629.5416170000 -276896.6607480000
+-1595920.0248090001 -276693.2622210000
+-1595963.5671420000 -276446.3213600000
+-1596297.5926679999 -275995.9819730000
+-1596341.1350010000 -275749.0411130000
+-1596631.6181930001 -275545.6425850000
+-1596675.1605260000 -275298.7017250000
+-1596718.7028590001 -275051.7608650000
+-1596762.2451919999 -274804.8200050000
+-1596805.7875250001 -274557.8791450000
+-1596892.8721900000 -274063.9974240000
+-1596936.4145229999 -273817.0565640000
+-1596979.9568560000 -273570.1157040000
+-1597023.4991890001 -273323.1748440000
+-1597067.0415220000 -273076.2339840000
+-1597648.0079069999 -272669.4369290000
+-1597938.4911000000 -272466.0384020000
+-1598228.9742930001 -272262.6398740000
+-1598316.0589580000 -271768.7581540000
+-1598606.5421509999 -271565.3596270000
+-1598650.0844840000 -271318.4187660000
+-1598693.6268170001 -271071.4779060000
+-1598737.1691490000 -270824.5370460000
+-1598533.7706220001 -270534.0538530000
+-1598577.3129550000 -270287.1129930000
+-1598620.8552880001 -270040.1721330000
+-1598707.9399540001 -269546.2904130000
+-1598751.4822869999 -269299.3495520000
+-1598795.0246190000 -269052.4086920000
+-1598591.6260919999 -268761.9254990000
+-1598635.1684250000 -268514.9846390000
+-1598678.7107579999 -268268.0437790000
+-1598722.2530910000 -268021.1029190000
+-1598518.8545639999 -267730.6197260000
+-1598605.9392299999 -267236.7380050000
+-1598402.5407030000 -266946.2548130000
+-1598446.0830349999 -266699.3139520000
+-1598736.5662280000 -266495.9154250000
+-1599027.0494210001 -266292.5168980000
+-1599608.0158060000 -265885.7198430000
+-1599898.4989990001 -265682.3213160000
+-1600188.9821919999 -265478.9227880000
+-1600479.4653840000 -265275.5242610000
+-1601060.4317699999 -264868.7272060000
+-1601350.9149630000 -264665.3286790000
+-1601641.3981550001 -264461.9301510000
+-1601888.3390150000 -264505.4724840000
+-1602425.7630680001 -264345.6162900000
+-1602716.2462599999 -264142.2177620000
+-1602963.1871199999 -264185.7600950000
+-1603253.6703130000 -263982.3615680000
+-1603500.6111730000 -264025.9039000000
+-1603791.0943660000 -263822.5053730000
+-1604038.0352250000 -263866.0477060000
+-1604531.9169449999 -263953.1323710000
+-1604778.8578049999 -263996.6747040000
+-1605069.3409980000 -263793.2761770000
+-1605316.2818580000 -263836.8185100000
+-1605563.2227179999 -263880.3608420000
+-1605810.1635769999 -263923.9031750000
+-1606057.1044369999 -263967.4455080000
+-1606304.0452970001 -264010.9878410000
+-1606797.9270170000 -264098.0725060000
+-1607044.8678770000 -264141.6148390000
+-1607291.8087370000 -264185.1571720000
+-1607538.7495960000 -264228.6995050000
+-1607785.6904559999 -264272.2418380000
+-1607989.0889830000 -264562.7250310000
+-1608236.0298430000 -264606.2673630000
+-1608686.3692300001 -264940.2928890000
+-1608933.3100900000 -264983.8352220000
+-1609136.7086169999 -265274.3184150000
+-1609383.6494770001 -265317.8607480000
+-1609587.0480040000 -265608.3439410000
+-1609790.4465310001 -265898.8271340000
+-1609993.8450579999 -266189.3103270000
+-1610444.1844450000 -266523.3358520000
+-1610604.0406390000 -267060.7599050000
+-1610807.4391660001 -267351.2430980000
+-1611010.8376930000 -267641.7262910000
+-1611257.7785530000 -267685.2686240000
+-1611461.1770800001 -267975.7518170000
+-1611955.0588000000 -268062.8364830000
+-1612158.4573270001 -268353.3196760000
+-1612405.3981870001 -268396.8620080000
+-1612652.3390470000 -268440.4043410000
+-1612899.2799060000 -268483.9466740000
+-1613436.7039590001 -268324.0904790000
+-1613683.6448190000 -268367.6328120000
+-1613930.5856790000 -268411.1751450000
+-1614177.5265390000 -268454.7174780000
+-1614380.9250660001 -268745.2006710000
+-1614627.8659260001 -268788.7430040000
+-1615078.2053119999 -269122.7685290000
+-1615281.6038400000 -269413.2517220000
+-1615528.5446990000 -269456.7940550000
+-1615731.9432260001 -269747.2772480000
+-1615935.3417529999 -270037.7604410000
+-1615848.2570880000 -270531.6421610000
+-1616051.6556150001 -270822.1253540000
+-1616008.1132819999 -271069.0662140000
+-1615717.6300890001 -271272.4647420000
+-1615674.0877560000 -271519.4056020000
+-1615340.0622310000 -271969.7449890000
+-1615296.5198979999 -272216.6858500000
+-1615006.0367050001 -272420.0843770000
+-1614962.4943720000 -272667.0252370000
+-1614918.9520399999 -272913.9660970000
+-1615122.3505670000 -273204.4492900000
+-1615078.8082340001 -273451.3901500000
+-1614991.7235679999 -273945.2718710000
+-1615195.1220950000 -274235.7550640000
+-1615151.5797619999 -274482.6959240000
+-1615442.0629550000 -274279.2973960000
+-1615935.9446749999 -274366.3820620000
+-1616226.4278670000 -274162.9835350000
+-1616473.3687270000 -274206.5258670000
+-1616763.8519200000 -274003.1273400000
+-1616807.3942529999 -273756.1864800000
+-1617141.4197780001 -273305.8470920000
+-1617431.9029709999 -273102.4485650000
+-1617475.4453040001 -272855.5077050000
+-1617765.9284969999 -272652.1091780000
+-1618012.8693570001 -272695.6515100000
+-1618550.2934089999 -272535.7953160000
+-1618797.2342689999 -272579.3376490000
+-1619044.1751290001 -272622.8799810000
+-1619538.0568490000 -272709.9646470000
+-1619741.4553759999 -273000.4478400000
+-1619988.3962359999 -273043.9901730000
+-1619944.8539030000 -273290.9310330000
+-1620148.2524300001 -273581.4142260000
+-1620104.7100970000 -273828.3550860000
+-1620308.1086240001 -274118.8382790000
+-1620221.0239579999 -274612.7199990000
+-1620424.4224850000 -274903.2031920000
+-1620380.8801520001 -275150.1440520000
+-1620584.2786790000 -275440.6272450000
+-1620540.7363470001 -275687.5681050000
+-1620497.1940140000 -275934.5089660000
+-1620700.5925410001 -276224.9921590000
+-1620657.0502080000 -276471.9330190000
+-1620860.4487350001 -276762.4162120000
+-1620816.9064020000 -277009.3570720000
+-1620976.7625960000 -277546.7811250000
+-1620933.2202639999 -277793.7219850000
+-1621136.6187910000 -278084.2051780000
+-1621093.0764580001 -278331.1460380000
+-1621296.4749850000 -278621.6292310000
+-1621252.9326520001 -278868.5700910000
+-1621456.3311790000 -279159.0532840000
+-1621412.7888460001 -279405.9941440000
+-1621616.1873730000 -279696.4773370000
+-1621529.1027070000 -280190.3590580000
+-1621732.5012340001 -280480.8422510000
+-1621688.9589020000 -280727.7831110000
+-1621645.4165690001 -280974.7239710000
+-1621848.8150960000 -281265.2071640000
+-1621761.7304300000 -281759.0888840000
+-1621965.1289570001 -282049.5720770000
+-1621921.5866240000 -282296.5129370000
+-1621878.0442910001 -282543.4537970000
+-1622081.4428190000 -282833.9369900000
+-1622037.9004860001 -283080.8778510000
+-1621950.8158199999 -283574.7595710000
+-1621907.2734870000 -283821.7004310000
+-1622110.6720139999 -284112.1836240000
+-1622067.1296810000 -284359.1244840000
+-1621776.6464889999 -284562.5230110000
+-1621733.1041560001 -284809.4638720000
+-1621442.6209630000 -285012.8623990000
+-1621108.5954370000 -285463.2017870000
+-1621065.0531049999 -285710.1426470000
+-1620774.5699120001 -285913.5411740000
+-1620731.0275790000 -286160.4820340000
+-1620687.4852460001 -286407.4228940000
+-1620643.9429130000 -286654.3637540000
+-1620600.4005809999 -286901.3046150000
+-1620556.8582480000 -287148.2454750000
+-1620222.8327220001 -287598.5848620000
+-1620179.2903890000 -287845.5257220000
+-1620135.7480560001 -288092.4665830000
+-1620092.2057240000 -288339.4074430000
+-1620048.6633909999 -288586.3483030000
+-1620005.1210580000 -288833.2891630000
+-1619961.5787249999 -289080.2300230000
+-1619918.0363920000 -289327.1708830000
+-1619584.0108670001 -289777.5102710000
+-1619540.4685340000 -290024.4511310000
+-1619496.9262010001 -290271.3919910000
+-1619700.3247280000 -290561.8751840000
+-1619656.7823950001 -290808.8160440000
+-1619613.2400620000 -291055.7569050000
+-1619569.6977299999 -291302.6977650000
+-1619729.5539239999 -291840.1218180000
+-1619686.0115910000 -292087.0626780000
+-1619642.4692579999 -292334.0035380000
+-1619598.9269250000 -292580.9443980000
+-1619802.3254519999 -292871.4275910000
+-1619758.7831190000 -293118.3684510000
+-1619962.1816459999 -293408.8516440000
+-1619918.6393140000 -293655.7925040000
+-1620122.0378409999 -293946.2756970000
+-1620078.4955080000 -294193.2165580000
+-1620281.8940349999 -294483.6997500000
+-1620441.7502290001 -295021.1238040000
+-1620398.2078960000 -295268.0646640000
+-1620601.6064230001 -295558.5478570000
+-1620558.0640900000 -295805.4887170000
+-1620761.4626170001 -296095.9719100000
+-1620964.8611440000 -296386.4551030000
+-1621168.2596710001 -296676.9382960000
+-1621124.7173390000 -296923.8791560000
+-1621328.1158660001 -297214.3623490000
+-1621487.9720600001 -297751.7864020000
+-1621691.3705869999 -298042.2695950000
+-1621647.8282540001 -298289.2104550000
+-1621851.2267809999 -298579.6936480000
+-1622054.6253080000 -298870.1768410000
+-1622258.0238350001 -299160.6600340000
+-1622461.4223620000 -299451.1432270000
+-1622374.3376960000 -299945.0249470000
+-1622577.7362230001 -300235.5081400000
+-1622781.1347500000 -300525.9913330000
+-1622984.5332770001 -300816.4745260000
+-1623187.9318039999 -301106.9577190000
+-1623391.3303310000 -301397.4409120000
+-1623594.7288579999 -301687.9241050000
+-1623754.5850529999 -302225.3481580000
+-1623957.9835800000 -302515.8313510000
+-1624161.3821070001 -302806.3145440000
+-1624408.3229670001 -302849.8568770000
+-1624858.6623529999 -303183.8824020000
+-1625105.6032130001 -303227.4247350000
+-1625396.0864060000 -303024.0262080000
+-1625599.4849330001 -303314.5094010000
+-1625889.9681259999 -303111.1108730000
+-1626427.3921780000 -302951.2546790000
+-1626674.3330379999 -302994.7970110000
+-1626964.8162310000 -302791.3984840000
+-1627008.3585640001 -302544.4576240000
+-1627298.8417570000 -302341.0590970000
+-1627385.9264219999 -301847.1773760000
+-1627676.4096150000 -301643.7788490000
+-1627719.9519479999 -301396.8379890000
+-1627763.4942810000 -301149.8971290000
+-1628097.5198059999 -300699.5577410000
+-1628141.0621390000 -300452.6168810000
+-1628184.6044719999 -300205.6760210000
+-1628765.5708570001 -299798.8789660000
+-1629056.0540499999 -299595.4804390000
+-1629346.5372430000 -299392.0819110000
+-1629433.6219080000 -298898.2001910000
+-1629724.1051010001 -298694.8016640000
+-1629767.6474339999 -298447.8608040000
+-1629811.1897670000 -298200.9199430000
+-1629854.7320999999 -297953.9790830000
+-1629694.8759059999 -297416.5550300000
+-1629738.4182380000 -297169.6141700000
+-1629781.9605709999 -296922.6733100000
+-1629825.5029040000 -296675.7324500000
+-1629622.1043769999 -296385.2492570000
+-1629665.6467100000 -296138.3083970000
+-1629462.2481829999 -295847.8252040000
+-1629549.3328490001 -295353.9434830000
+-1629345.9343220000 -295063.4602900000
+-1629389.4766540001 -294816.5194300000
+-1629186.0781270000 -294526.0362370000
+-1628982.6795999999 -294235.5530440000
+-1628532.3402130001 -293901.5275190000
+-1628328.9416860000 -293611.0443260000
+-1628416.0263520000 -293117.1626050000
+-1628212.6278250001 -292826.6794120000
+-1628793.5942100000 -292419.8823580000
+-1629084.0774030001 -292216.4838300000
+-1629127.6197360000 -291969.5429700000
+-1629461.6452619999 -291519.2035830000
+-1629505.1875940000 -291272.2627220000
+-1629548.7299269999 -291025.3218620000
+-1629592.2722600000 -290778.3810020000
+-1629679.3569260000 -290284.4992820000
+-1629722.8992590001 -290037.5584220000
+-1629766.4415910000 -289790.6175620000
+-1630100.4671169999 -289340.2781740000
+-1630390.9503100000 -289136.8796470000
+-1630928.3743620000 -288977.0234520000
+-1631218.8575550001 -288773.6249250000
+-1631465.7984150001 -288817.1672580000
+-1631669.1969420000 -289107.6504500000
+-1632163.0786619999 -289194.7351160000
+-1632366.4771890000 -289485.2183090000
+-1632613.4180490000 -289528.7606420000
+-1632816.8165760001 -289819.2438350000
+-1633020.2151029999 -290109.7270280000
+-1633514.0968220001 -290196.8116930000
+-1633717.4953490000 -290487.2948860000
+-1633920.8938760001 -290777.7780790000
+-1634167.8347360000 -290821.3204120000
+-1634618.1741229999 -291155.3459380000
+-1634865.1149830001 -291198.8882700000
+-1634908.6573160000 -290951.9474100000
+-1635199.1405090000 -290748.5488830000
+-1635242.6828409999 -290501.6080230000
+-1635329.7675069999 -290007.7263020000
+-1635373.3098400000 -289760.7854420000
+-1635663.7930330001 -289557.3869150000
+-1635707.3353660000 -289310.4460550000
+-1635750.8776980001 -289063.5051950000
+-1636041.3608909999 -288860.1066670000
+-1636375.3864170001 -288409.7672800000
+-1636665.8696089999 -288206.3687520000
+-1636956.3528020000 -288002.9702250000
+-1637246.8359950001 -287799.5716980000
+-1637493.7768550001 -287843.1140300000
+-1637784.2600469999 -287639.7155030000
+-1638278.1417670001 -287726.8001690000
+-1638568.6249599999 -287523.4016410000
+-1638815.5658199999 -287566.9439740000
+-1639106.0490120000 -287363.5454470000
+-1639352.9898719999 -287407.0877800000
+-1639599.9307319999 -287450.6301120000
+-1639890.4139250000 -287247.2315850000
+-1640137.3547850000 -287290.7739180000
+-1640631.2365039999 -287377.8585830000
+-1640878.1773639999 -287421.4009160000
+-1641125.1182240001 -287464.9432490000
+-1641415.6014169999 -287261.5447220000
+-1641662.5422769999 -287305.0870540000
+-1641909.4831369999 -287348.6293870000
+-1642156.4239970001 -287392.1717200000
+-1642359.8225240000 -287682.6549130000
+-1642606.7633829999 -287726.1972460000
+-1643100.6451030001 -287813.2819110000
+-1643347.5859630001 -287856.8242440000
+-1643550.9844899999 -288147.3074370000
+-1643797.9253499999 -288190.8497700000
+-1644001.3238770000 -288481.3329630000
+-1643957.7815439999 -288728.2738230000
+-1644117.6377379999 -289265.6978760000
+-1644074.0954050000 -289512.6387360000
+-1644030.5530729999 -289759.5795960000
+-1643740.0698800001 -289962.9781240000
+-1643652.9852140001 -290456.8598440000
+-1643362.5020220000 -290660.2583710000
+-1643318.9596889999 -290907.1992320000
+-1643275.4173560000 -291154.1400920000
+-1643231.8750229999 -291401.0809520000
+-1643144.7903570000 -291894.9626720000
+-1643101.2480240001 -292141.9035320000
+-1643057.7056920000 -292388.8443920000
+-1643261.1042190001 -292679.3275850000
+-1643217.5618860000 -292926.2684460000
+-1643377.4180800000 -293463.6924990000
+-1643333.8757470001 -293710.6333590000
+-1643537.2742740000 -294001.1165520000
+-1643740.6728010001 -294291.5997450000
+-1643653.5881360001 -294785.4814650000
+-1643856.9866630000 -295075.9646580000
+-1643813.4443300001 -295322.9055180000
+-1643522.9611370000 -295526.3040450000
+-1643435.8764710000 -296020.1857660000
+-1643145.3932790000 -296223.5842930000
+-1643101.8509460001 -296470.5251530000
+-1642811.3677530000 -296673.9236810000
+-1642520.8845599999 -296877.3222080000
+-1642186.8590350000 -297327.6615950000
+-1641896.3758419999 -297531.0601230000
+-1641852.8335090000 -297778.0009830000
+-1641809.2911759999 -298024.9418430000
+-1641765.7488440000 -298271.8827030000
+-1641678.6641780001 -298765.7644240000
+-1641635.1218450000 -299012.7052840000
+-1641591.5795120001 -299259.6461440000
+-1641794.9780390000 -299550.1293370000
+-1641998.3765660000 -299840.6125300000
+-1641911.2919010001 -300334.4942500000
+-1642114.6904279999 -300624.9774430000
+-1642318.0889550000 -300915.4606360000
+-1642811.9706740000 -301002.5453020000
+-1643015.3692010001 -301293.0284940000
+-1643218.7677279999 -301583.5116870000
+-1643509.2509210000 -301380.1131600000
+-1644090.2173070000 -300973.3161050000
+-1644380.7004990000 -300769.9175780000
+-1644424.2428319999 -300522.9767180000
+-1644467.7851650000 -300276.0358580000
+-1644511.3274980001 -300029.0949980000
+-1644554.8698310000 -299782.1541370000
+-1644598.4121630001 -299535.2132770000
+-1644641.9544960000 -299288.2724170000
+-1644685.4968290001 -299041.3315570000
+-1644729.0391619999 -298794.3906970000
+-1644569.1829680000 -298256.9666440000
+-1644612.7253010001 -298010.0257840000
+-1644656.2676339999 -297763.0849230000
+-1644699.8099660000 -297516.1440630000
+-1644743.3522989999 -297269.2032030000
+-1644786.8946320000 -297022.2623430000
+-1644830.4369649999 -296775.3214830000
+-1644873.9792980000 -296528.3806230000
+-1644917.5216310001 -296281.4397620000
+-1644961.0639630000 -296034.4989020000
+-1645004.6062960001 -295787.5580420000
+-1645048.1486289999 -295540.6171820000
+-1644888.2924350000 -295003.1931290000
+-1644931.8347680001 -294756.2522690000
+-1644975.3771009999 -294509.3114090000
+-1645018.9194330000 -294262.3705480000
+-1645062.4617659999 -294015.4296880000
+-1645352.9449590000 -293812.0311610000
+-1645396.4872920001 -293565.0903010000
+-1645440.0296250000 -293318.1494410000
+-1645774.0551499999 -292867.8100530000
+-1645817.5974830000 -292620.8691930000
+-1645861.1398159999 -292373.9283330000
+-1646151.6230090000 -292170.5298050000
+-1646195.1653410001 -291923.5889450000
+-1646529.1908670000 -291473.2495580000
+-1646819.6740600001 -291269.8510300000
+-1647313.5557790000 -291356.9356960000
+-1647807.4374990000 -291444.0203620000
+-1648054.3783590000 -291487.5626940000
+-1648344.8615520000 -291284.1641670000
+-1648882.2856040001 -291124.3079720000
+-1649129.2264640001 -291167.8503050000
+-1649419.7096569999 -290964.4517780000
+-1649957.1337100000 -290804.5955830000
+-1650247.6169020000 -290601.1970560000
+-1650741.4986220000 -290688.2817220000
+-1650944.8971490001 -290978.7649150000
+-1651148.2956760000 -291269.2481070000
+-1651642.1773959999 -291356.3327730000
+-1651845.5759230000 -291646.8159660000
+-1652092.5167830000 -291690.3582990000
+-1652542.8561700000 -292024.3838250000
+-1652789.7970290000 -292067.9261570000
+-1652993.1955560001 -292358.4093500000
+-1653574.1619420000 -291951.6122960000
+-1653864.6451350001 -291748.2137680000
+-1653908.1874670000 -291501.2729080000
+-1653995.2721330000 -291007.3911880000
+-1654038.8144660001 -290760.4503280000
+-1654082.3567989999 -290513.5094670000
+-1654372.8399920000 -290310.1109400000
+-1654706.8655170000 -289859.7715530000
+-1654997.3487100000 -289656.3730250000
+-1655578.3150950000 -289249.5759700000
+-1655868.7982880000 -289046.1774430000
+-1656406.2223410001 -288886.3212490000
+-1656696.7055329999 -288682.9227210000
+-1656987.1887260000 -288479.5241940000
+-1657234.1295860000 -288523.0665270000
+-1657771.5536380000 -288363.2103320000
+-1658018.4944980000 -288406.7526650000
+-1658265.4353580000 -288450.2949980000
+-1658308.9776910001 -288203.3541380000
+-1658599.4608839999 -287999.9556100000
+-1658686.5455489999 -287506.0738900000
+-1658977.0287420000 -287302.6753620000
+-1659020.5710750001 -287055.7345020000
+-1658817.1725480000 -286765.2513090000
+-1658323.2908280001 -286678.1666440000
+-1658119.8923010000 -286387.6834510000
+-1657960.0361070000 -285850.2593980000
+-1657756.6375800001 -285559.7762050000
+-1657553.2390530000 -285269.2930120000
+-1657596.7813860001 -285022.3521520000
+-1657683.8660510001 -284528.4704310000
+-1657727.4083840000 -284281.5295710000
+-1658017.8915770000 -284078.1310440000
+-1658104.9762430000 -283584.2493240000
+-1658395.4594350001 -283380.8507960000
+-1658439.0017680000 -283133.9099360000
+-1659019.9681539999 -282727.1128810000
+-1659310.4513460000 -282523.7143540000
+-1659353.9936790001 -282276.7734940000
+-1659644.4768719999 -282073.3749670000
+-1659731.5615379999 -281579.4932460000
+-1660022.0447300000 -281376.0947190000
+-1660065.5870630001 -281129.1538590000
+-1660646.5534490000 -280722.3568040000
+-1660937.0366410001 -280518.9582770000
+-1661183.9775010000 -280562.5006090000
+-1661677.8592210000 -280649.5852750000
+-1661924.8000810000 -280693.1276080000
+-1662171.7409409999 -280736.6699410000
+-1662375.1394680000 -281027.1531340000
+-1662869.0211870000 -281114.2377990000
+-1663072.4197140001 -281404.7209920000
+-1663028.8773820000 -281651.6618520000
+-1663188.7335760000 -282189.0859050000
+-1663145.1912430001 -282436.0267660000
+-1663101.6489100000 -282682.9676260000
+-1663058.1065770001 -282929.9084860000
+-1662971.0219119999 -283423.7902060000
+-1662927.4795790000 -283670.7310660000
+-1662883.9372459999 -283917.6719260000
+-1662840.3949130001 -284164.6127870000
+-1663043.7934399999 -284455.0959790000
+-1662956.7087739999 -284948.9777000000
+-1663160.1073010000 -285239.4608930000
+-1663116.5649689999 -285486.4017530000
+-1663319.9634960000 -285776.8849460000
+-1663523.3620229999 -286067.3681390000
+-1663726.7605500000 -286357.8513320000
+-1663886.6167440000 -286895.2753850000
+-1664090.0152710001 -287185.7585780000
+-1664293.4137980000 -287476.2417710000
+-1664540.3546579999 -287519.7841030000
+-1664787.2955179999 -287563.3264360000
+-1665324.7195700000 -287403.4702420000
+-1665571.6604299999 -287447.0125750000
+-1665818.6012899999 -287490.5549070000
+-1666109.0844830000 -287287.1563800000
+-1666196.1691480000 -286793.2746600000
+-1666486.6523410000 -286589.8761320000
+-1666690.0508679999 -286880.3593250000
+-1666893.4493950000 -287170.8425180000
+-1667343.7887820001 -287504.8680440000
+-1667547.1873089999 -287795.3512370000
+-1667750.5858360000 -288085.8344300000
+-1667707.0435029999 -288332.7752900000
+-1667663.5011700001 -288579.7161500000
+-1667619.9588380000 -288826.6570100000
+-1667779.8150320000 -289364.0810630000
+-1667736.2726990001 -289611.0219230000
+-1667692.7303660000 -289857.9627840000
+-1667649.1880330001 -290104.9036440000
+-1667605.6457000000 -290351.8445040000
+-1667809.0442270001 -290642.3276970000
+-1667765.5018950000 -290889.2685570000
+-1667721.9595619999 -291136.2094170000
+-1667925.3580890000 -291426.6926100000
+-1667881.8157560001 -291673.6334700000
+-1667838.2734230000 -291920.5743300000
+-1668041.6719500001 -292211.0575230000
+-1667954.5872839999 -292704.9392440000
+-1667911.0449520000 -292951.8801040000
+-1667867.5026189999 -293198.8209640000
+-1668070.9011460000 -293489.3041570000
+-1668027.3588129999 -293736.2450170000
+-1667983.8164800000 -293983.1858770000
+-1668187.2150069999 -294273.6690700000
+-1668143.6726740000 -294520.6099300000
+-1668390.6135340000 -294564.1522630000
+-1668594.0120610001 -294854.6354560000
+-1669087.8937810000 -294941.7201220000
+-1669291.2923079999 -295232.2033150000
+-1669538.2331679999 -295275.7456470000
+-1669741.6316950000 -295566.2288400000
+-1669945.0302220001 -295856.7120330000
+-1670148.4287490000 -296147.1952260000
+-1670642.3104689999 -296234.2798920000
+-1670845.7089960000 -296524.7630850000
+-1671049.1075230001 -296815.2462780000
+-1671005.5651900000 -297062.1871380000
+-1670715.0819969999 -297265.5856650000
+-1670671.5396640000 -297512.5265250000
+-1670584.4549990001 -298006.4082460000
+-1670293.9718060000 -298209.8067730000
+-1670250.4294730001 -298456.7476330000
+-1670206.8871400000 -298703.6884930000
+-1669916.4039469999 -298907.0870210000
+-1669872.8616150001 -299154.0278810000
+-1669829.3192820000 -299400.9687410000
+-1669495.2937560000 -299851.3081280000
+-1669451.7514229999 -300098.2489880000
+-1669161.2682310001 -300301.6475160000
+-1669117.7258979999 -300548.5883760000
+-1669074.1835650001 -300795.5292360000
+-1669030.6412320000 -301042.4700960000
+-1668943.5565660000 -301536.3518170000
+-1668900.0142339999 -301783.2926770000
+-1668856.4719010000 -302030.2335370000
+-1669059.8704280001 -302320.7167300000
+-1669263.2689550000 -302611.1999230000
+-1669176.1842890000 -303105.0816430000
+-1669379.5828160001 -303395.5648360000
+-1669336.0404830000 -303642.5056960000
+-1669292.4981509999 -303889.4465560000
+-1669248.9558180000 -304136.3874160000
+-1669205.4134849999 -304383.3282770000
+-1669118.3288189999 -304877.2099970000
+-1669074.7864860001 -305124.1508570000
+-1669031.2441529999 -305371.0917170000
+-1668987.7018210001 -305618.0325770000
+-1668944.1594880000 -305864.9734370000
+-1669147.5580150001 -306155.4566300000
+-1669104.0156820000 -306402.3974910000
+-1669060.4733490001 -306649.3383510000
+-1668973.3886830001 -307143.2200710000
+-1669176.7872100000 -307433.7032640000
+-1669133.2448780001 -307680.6441240000
+-1669089.7025450000 -307927.5849840000
+-1669046.1602119999 -308174.5258440000
+-1669002.6178790000 -308421.4667050000
+-1668959.0755459999 -308668.4075650000
+-1668871.9908809999 -309162.2892850000
+-1668828.4485480001 -309409.2301450000
+-1668784.9062150000 -309656.1710050000
+-1668741.3638820001 -309903.1118650000
+-1668697.8215490000 -310150.0527260000
+-1668654.2792160001 -310396.9935860000
+-1668363.7960240000 -310600.3921130000
+-1668320.2536909999 -310847.3329730000
+-1668233.1690250000 -311341.2146930000
+-1668189.6266920001 -311588.1555540000
+-1667899.1435000000 -311791.5540810000
+-1667855.6011669999 -312038.4949410000
+-1667565.1179740001 -312241.8934680000
+-1667274.6347810000 -312445.2919960000
+-1666984.1515889999 -312648.6905230000
+-1666737.2107289999 -312605.1481900000
+-1666199.7866760001 -312765.0043850000
+-1665909.3034830000 -312968.4029120000
+-1665618.8202910000 -313171.8014400000
+-1665328.3370980001 -313375.1999670000
+-1665037.8539050000 -313578.5984940000
+-1664747.3707130000 -313781.9970220000
+-1664456.8875200001 -313985.3955490000
+-1664166.4043270000 -314188.7940770000
+-1663875.9211339999 -314392.1926040000
+-1663294.9547490000 -314798.9896590000
+-1663004.4715559999 -315002.3881860000
+-1662713.9883640001 -315205.7867130000
+-1662423.5051710000 -315409.1852410000
+-1662133.0219779999 -315612.5837680000
+-1661842.5387850001 -315815.9822950000
+-1661552.0555930000 -316019.3808230000
+-1661508.5132599999 -316266.3216830000
+-1661218.0300670001 -316469.7202100000
+-1660927.5468740000 -316673.1187380000
+-1660637.0636819999 -316876.5172650000
+-1660549.9790159999 -317370.3989850000
+-1660259.4958230001 -317573.7975130000
+-1659969.0126310000 -317777.1960400000
+-1659678.5294379999 -317980.5945670000
+-1659634.9871050001 -318227.5354270000
+-1623288.8833276688 -348485.9928101762
+
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/Rifts.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/Rifts.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/Rifts.exp	(revision 27955)
@@ -0,0 +1,126 @@
+## Name:Rifts
+## Icon:0
+# Points Count  Value
+120 1.000000
+# X pos Y pos
+240000.0000000000 210000.0000000000
+243333.3333333333 213763.4408602151
+246666.6666666667 217526.8817204301
+250000.0000000000 221290.3225806452
+253333.3333333333 225053.7634408602
+256666.6666666667 228817.2043010753
+260000.0000000000 232580.6451612903
+263333.3333333334 236344.0860215054
+266666.6666666667 240107.5268817204
+270000.0000000000 243870.9677419355
+273333.3333333333 247634.4086021505
+276666.6666666666 251397.8494623656
+280000.0000000000 255161.2903225806
+283333.3333333334 258924.7311827957
+286666.6666666667 262688.1720430108
+290000.0000000000 266451.6129032259
+293333.3333333333 270215.0537634409
+296666.6666666666 273978.4946236560
+300000.0000000000 277741.9354838710
+304733.3333333334 280394.7772657451
+309466.6666666667 283047.6190476191
+314133.3333333334 284952.3809523809
+318800.0000000000 286857.1428571428
+323466.6666666666 288761.9047619047
+328133.3333333333 290666.6666666667
+332800.0000000000 292571.4285714286
+337466.6666666667 294476.1904761905
+342133.3333333334 296380.9523809524
+346800.0000000000 298285.7142857143
+351466.6666666666 300190.4761904762
+356133.3333333333 302095.2380952381
+360800.0000000000 304000.0000000000
+365466.6666666667 305904.7619047619
+370133.3333333334 307809.5238095238
+374800.0000000000 309714.2857142857
+379466.6666666666 311619.0476190476
+384133.3333333333 313523.8095238095
+388800.0000000000 315428.5714285714
+393466.6666666667 317333.3333333333
+398733.3333333334 318666.6666666666
+404000.0000000000 320000.0000000000
+409000.0000000000 320000.0000000000
+414000.0000000000 320000.0000000000
+419000.0000000000 320000.0000000000
+424000.0000000000 320000.0000000000
+429000.0000000000 320000.0000000000
+434000.0000000000 320000.0000000000
+439000.0000000000 320000.0000000000
+444000.0000000000 320000.0000000000
+449000.0000000000 320000.0000000000
+454000.0000000000 320000.0000000000
+459000.0000000000 320000.0000000000
+464000.0000000000 320000.0000000000
+469000.0000000000 320000.0000000000
+474000.0000000000 320000.0000000000
+479000.0000000000 320000.0000000000
+484000.0000000000 320000.0000000000
+489000.0000000000 320000.0000000000
+494000.0000000000 320000.0000000000
+499000.0000000000 320000.0000000000
+504000.0000000000 320000.0000000000
+509000.0000000000 320000.0000000000
+514000.0000000000 320000.0000000000
+519000.0000000000 320000.0000000000
+524000.0000000000 320000.0000000000
+529000.0000000000 320000.0000000000
+534000.0000000000 320000.0000000000
+539000.0000000000 320000.0000000000
+544000.0000000000 320000.0000000000
+549000.0000000000 320000.0000000000
+554000.0000000000 320000.0000000000
+559000.0000000000 320000.0000000000
+564000.0000000000 320000.0000000000
+569000.0000000000 320000.0000000000
+574000.0000000000 320000.0000000000
+579000.0000000000 320000.0000000000
+584000.0000000000 320000.0000000000
+589000.0000000000 320000.0000000000
+594000.0000000000 320000.0000000000
+599333.3333333333 319047.6190476191
+604666.6666666666 318095.2380952381
+609333.3333333333 316190.4761904762
+614000.0000000000 314285.7142857143
+618666.6666666667 312380.9523809524
+623333.3333333334 310476.1904761905
+628000.0000000000 308571.4285714286
+632666.6666666666 306666.6666666667
+637333.3333333333 304761.9047619047
+642000.0000000000 302857.1428571428
+646666.6666666667 300952.3809523809
+651333.3333333334 299047.6190476191
+656000.0000000000 297142.8571428572
+660666.6666666666 295238.0952380953
+665333.3333333333 293333.3333333334
+670000.0000000000 291428.5714285714
+674666.6666666667 289523.8095238095
+679333.3333333334 287619.0476190476
+684000.0000000000 285714.2857142857
+688666.6666666666 283809.5238095238
+693333.3333333333 281904.7619047619
+698000.0000000000 280000.0000000000
+701333.3333333333 276236.5591397849
+704666.6666666666 272473.1182795699
+708000.0000000000 268709.6774193548
+711333.3333333334 264946.2365591398
+714666.6666666667 261182.7956989247
+718000.0000000000 257419.3548387097
+721333.3333333333 253655.9139784946
+724666.6666666666 249892.4731182796
+728000.0000000000 246129.0322580645
+731333.3333333334 242365.5913978495
+734666.6666666667 238602.1505376344
+738000.0000000000 234838.7096774194
+741333.3333333333 231075.2688172043
+744666.6666666666 227311.8279569892
+748000.0000000000 223548.3870967742
+751333.3333333334 219784.9462365591
+754666.6666666667 216021.5053763441
+758000.0000000000 212258.0645161290
+760000.0000000000 210000.0000000000
+
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/RoundFrontEISMINT.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/RoundFrontEISMINT.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/RoundFrontEISMINT.exp	(revision 27955)
@@ -0,0 +1,47 @@
+## Name:
+## Icon:0
+# Points Count Value
+41 1
+# X pos Y pos
+1000000.000000 0.000000
+987688.340595 156434.465040
+951056.516295 309016.994375
+891006.524188 453990.499740
+809016.994375 587785.252292
+707106.781187 707106.781187
+587785.252292 809016.994375
+453990.499740 891006.524188
+309016.994375 951056.516295
+156434.465040 987688.340595
+0.000000 1000000.000000
+-156434.465040 987688.340595
+-309016.994375 951056.516295
+-453990.499740 891006.524188
+-587785.252292 809016.994375
+-707106.781187 707106.781187
+-809016.994375 587785.252292
+-891006.524188 453990.499740
+-951056.516295 309016.994375
+-987688.340595 156434.465040
+-1000000.000000 0.000000
+-987688.340595 -156434.465040
+-951056.516295 -309016.994375
+-891006.524188 -453990.499740
+-809016.994375 -587785.252292
+-707106.781187 -707106.781187
+-587785.252292 -809016.994375
+-453990.499740 -891006.524188
+-309016.994375 -951056.516295
+-156434.465040 -987688.340595
+-0.000000 -1000000.000000
+156434.465040 -987688.340595
+309016.994375 -951056.516295
+453990.499740 -891006.524188
+587785.252292 -809016.994375
+707106.781187 -707106.781187
+809016.994375 -587785.252292
+891006.524188 -453990.499740
+951056.516295 -309016.994375
+987688.340595 -156434.465040
+1000000.000000 0.000000
+
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/Square.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/Square.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/Square.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+1000000 0
+1000000 1000000
+0 1000000
+0 0
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/Square.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/Square.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/Square.js	(revision 27955)
@@ -0,0 +1,9 @@
+// Name:domainoutline
+// Icon:0
+// Points Count  Value
+var square={}
+square[0]={};
+square[0]["nods"]=5;
+// X pos Y pos
+square[0]["x"]=[0,1000000,1000000,0,0];
+square[0]["y"]=[0, 0, 1000000,  1000000, 0];
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareEISMINT.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareEISMINT.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareEISMINT.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+200000 0
+200000 200000
+0 200000 
+0 0
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareEISMINT750000.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareEISMINT750000.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareEISMINT750000.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+-750000 -750000
+750000 -750000
+750000 750000
+-750000 750000 
+-750000 -750000
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareFront.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareFront.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareFront.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+-1000 999999
+-1000 1100000
+1100000 1100000
+1100000 999999
+-1000 999999
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareFront2.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareFront2.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareFront2.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+1000 999000
+1000 1100000
+999000 1100000
+999000 999000
+-1000 999000
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareFrontEISMINT.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareFrontEISMINT.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareFrontEISMINT.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:icefront
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+-1000 -1000
+-1000 1000
+201000 1000
+201000 -1000
+-1000 -1000
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareHalfRight.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareHalfRight.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareHalfRight.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+500000 0
+500000 1000000
+1000000 1000000
+1000000 0 
+500000 0
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareHole.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareHole.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareHole.exp	(revision 27955)
@@ -0,0 +1,21 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+1000000 0
+1000000 1000000
+0 1000000
+0 0
+
+## Name:domainoutline
+## Icon:1
+# Points Count  Value
+5 1.
+# X pos Y pos
+400000 400000 
+600000 400000
+600000 600000
+400000 600000
+400000 400000 
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareISMIP.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareISMIP.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareISMIP.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+-100000 -100000
+100000 -100000
+100000 100000
+-100000 100000
+-100000 -100000
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareOne.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareOne.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareOne.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+1 0
+1 1
+0 1
+0 0
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareRifts.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareRifts.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareRifts.exp	(revision 27955)
@@ -0,0 +1,126 @@
+## Name:Rifts
+## Icon:0
+# Points Count  Value
+120 1.000000
+# X pos Y pos
+240000.0000000000 210000.0000000000
+243333.3333333333 213763.4408602151
+246666.6666666667 217526.8817204301
+250000.0000000000 221290.3225806452
+253333.3333333333 225053.7634408602
+256666.6666666667 228817.2043010753
+260000.0000000000 232580.6451612903
+263333.3333333334 236344.0860215054
+266666.6666666667 240107.5268817204
+270000.0000000000 243870.9677419355
+273333.3333333333 247634.4086021505
+276666.6666666666 251397.8494623656
+280000.0000000000 255161.2903225806
+283333.3333333334 258924.7311827957
+286666.6666666667 262688.1720430108
+290000.0000000000 266451.6129032259
+293333.3333333333 270215.0537634409
+296666.6666666666 273978.4946236560
+300000.0000000000 277741.9354838710
+304733.3333333334 280394.7772657451
+309466.6666666667 283047.6190476191
+314133.3333333334 284952.3809523809
+318800.0000000000 286857.1428571428
+323466.6666666666 288761.9047619047
+328133.3333333333 290666.6666666667
+332800.0000000000 292571.4285714286
+337466.6666666667 294476.1904761905
+342133.3333333334 296380.9523809524
+346800.0000000000 298285.7142857143
+351466.6666666666 300190.4761904762
+356133.3333333333 302095.2380952381
+360800.0000000000 304000.0000000000
+365466.6666666667 305904.7619047619
+370133.3333333334 307809.5238095238
+374800.0000000000 309714.2857142857
+379466.6666666666 311619.0476190476
+384133.3333333333 313523.8095238095
+388800.0000000000 315428.5714285714
+393466.6666666667 317333.3333333333
+398733.3333333334 318666.6666666666
+404000.0000000000 320000.0000000000
+409000.0000000000 320000.0000000000
+414000.0000000000 320000.0000000000
+419000.0000000000 320000.0000000000
+424000.0000000000 320000.0000000000
+429000.0000000000 320000.0000000000
+434000.0000000000 320000.0000000000
+439000.0000000000 320000.0000000000
+444000.0000000000 320000.0000000000
+449000.0000000000 320000.0000000000
+454000.0000000000 320000.0000000000
+459000.0000000000 320000.0000000000
+464000.0000000000 320000.0000000000
+469000.0000000000 320000.0000000000
+474000.0000000000 320000.0000000000
+479000.0000000000 320000.0000000000
+484000.0000000000 320000.0000000000
+489000.0000000000 320000.0000000000
+494000.0000000000 320000.0000000000
+499000.0000000000 320000.0000000000
+504000.0000000000 320000.0000000000
+509000.0000000000 320000.0000000000
+514000.0000000000 320000.0000000000
+519000.0000000000 320000.0000000000
+524000.0000000000 320000.0000000000
+529000.0000000000 320000.0000000000
+534000.0000000000 320000.0000000000
+539000.0000000000 320000.0000000000
+544000.0000000000 320000.0000000000
+549000.0000000000 320000.0000000000
+554000.0000000000 320000.0000000000
+559000.0000000000 320000.0000000000
+564000.0000000000 320000.0000000000
+569000.0000000000 320000.0000000000
+574000.0000000000 320000.0000000000
+579000.0000000000 320000.0000000000
+584000.0000000000 320000.0000000000
+589000.0000000000 320000.0000000000
+594000.0000000000 320000.0000000000
+599333.3333333333 319047.6190476191
+604666.6666666666 318095.2380952381
+609333.3333333333 316190.4761904762
+614000.0000000000 314285.7142857143
+618666.6666666667 312380.9523809524
+623333.3333333334 310476.1904761905
+628000.0000000000 308571.4285714286
+632666.6666666666 306666.6666666667
+637333.3333333333 304761.9047619047
+642000.0000000000 302857.1428571428
+646666.6666666667 300952.3809523809
+651333.3333333334 299047.6190476191
+656000.0000000000 297142.8571428572
+660666.6666666666 295238.0952380953
+665333.3333333333 293333.3333333334
+670000.0000000000 291428.5714285714
+674666.6666666667 289523.8095238095
+679333.3333333334 287619.0476190476
+684000.0000000000 285714.2857142857
+688666.6666666666 283809.5238095238
+693333.3333333333 281904.7619047619
+698000.0000000000 280000.0000000000
+701333.3333333333 276236.5591397849
+704666.6666666666 272473.1182795699
+708000.0000000000 268709.6774193548
+711333.3333333334 264946.2365591398
+714666.6666666667 261182.7956989247
+718000.0000000000 257419.3548387097
+721333.3333333333 253655.9139784946
+724666.6666666666 249892.4731182796
+728000.0000000000 246129.0322580645
+731333.3333333334 242365.5913978495
+734666.6666666667 238602.1505376344
+738000.0000000000 234838.7096774194
+741333.3333333333 231075.2688172043
+744666.6666666666 227311.8279569892
+748000.0000000000 223548.3870967742
+751333.3333333334 219784.9462365591
+754666.6666666667 216021.5053763441
+758000.0000000000 212258.0645161290
+760000.0000000000 210000.0000000000
+
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareRiftsLateral.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareRiftsLateral.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareRiftsLateral.exp	(revision 27955)
@@ -0,0 +1,11 @@
+## Name:RiftsLateral
+## Icon:0
+# Points Count  Value
+5 1.000000
+# X pos Y pos
+162237.7622377622 351796.4071856287
+204195.8041958041 474550.8982035927
+226573.4265734265 594311.3772455089
+201398.6013986013 645209.5808383233
+128671.3286713285 696107.7844311377
+
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareShelf.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareShelf.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/SquareShelf.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 500000
+1000000 500000
+1000000 1000000
+0 1000000 
+0 500000
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/Square_10000.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/Square_10000.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/Square_10000.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+30000 0
+30000 30000
+0 30000
+0 0
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/Square_160000.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/Square_160000.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/Square_160000.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+480000 0
+480000 480000
+0 480000
+0 0
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/Square_20000.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/Square_20000.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/Square_20000.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+60000 0
+60000 60000
+0 60000
+0 0
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/Square_40000.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/Square_40000.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/Square_40000.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+120000 0
+120000 120000
+0 120000
+0 0
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/Square_5000.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/Square_5000.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/Square_5000.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+15000 0
+15000 15000
+0 15000
+0 0
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/Square_80000.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/Square_80000.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/Square_80000.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+240000 0
+240000 240000
+0 240000
+0 0
Index: /issm/branches/trunk-dlcheng-ASE/test/Exp/Strip.exp
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Exp/Strip.exp	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Exp/Strip.exp	(revision 27955)
@@ -0,0 +1,10 @@
+## Name:domainoutline
+## Icon:0
+# Points Count  Value
+5 1.
+# X pos Y pos
+0 0
+100000 0
+100000 20000
+0 20000
+0 0
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/build.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/build.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/build.sh	(revision 27955)
@@ -0,0 +1,56 @@
+#!/bin/bash
+#This script compiles and links MITgcm
+
+#recover hostname and model path:
+hostname="$1"
+modelpath="$2"
+
+if [ -e ~/.bashrc ]; then
+    source ~/.bashrc
+fi
+
+# Get MITgcm code, if needed
+if [ ! -d "$modelpath/../MITgcm/install" ]; then
+    cd $modelpath/../MITgcm
+    source install.sh
+    cd $modelpath
+fi
+
+# Create build directory, if needed
+cd $modelpath
+if [ ! -d "build" ]; then mkdir build; fi
+cd build
+
+#create MITgcm makefile for this run, if needed
+if [ ! -f Makefile ]; then
+	case $hostname in
+		"pleiades")
+			$modelpath/../MITgcm/install/tools/genmake2 -of $SLR_DIR/models/ice-ocean/configs/linux_amd64_gfortran+mpi_ice_nas -mo ../code -rd $modelpath/../MITgcm/install
+			;;
+		"babylon")
+			$modelpath/../MITgcm/install/tools/genmake2 -of $modelpath/../MITgcm/install/tools/build_options/linux_amd64_ifort -mpi -mo $modelpath/../MITgcm/code -rd $modelpath/../MITgcm/install
+			export LD_LIBRARY_PATH="$ISSM_DIR/externalpackages/petsc/install/lib:/dartfs-hpc/admin/opt/el7/intel/compilers_and_libraries_2019.3.199/linux/compiler/lib/intel64:$ISSM_DIR/externalpackages/triangle/install/lib"
+			;;
+		"amundsen")
+			export LDADD="-L$ISSM_DIR/externalpackages/petsc/install/lib -lmpi -lmpifort"
+			$modelpath/../MITgcm/install/tools/genmake2 -mpi -mo $modelpath/../MITgcm/code -rd $modelpath/../MITgcm/install
+			;;
+		*)
+			$modelpath/../MITgcm/install/tools/genmake2 -mpi -mo $modelpath/../MITgcm/code -rd $modelpath/../MITgcm/install
+			;;
+	esac
+fi
+
+#create MITgcm code links for this run, if needed
+if [ ! -f BUILD_INFO.h ]; then
+    make depend
+fi
+
+#run make command
+STR=`uname -v`
+SUB='ARM64'
+if [[ "$STR" == *"$SUB"* ]]; then
+    arch -arm64 make -j &> Makefile.log
+else
+    make -j 4 &> Makefile.log   
+fi
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/build_4003.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/build_4003.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/build_4003.sh	(revision 27955)
@@ -0,0 +1,52 @@
+#!/bin/bash
+#This script compiles and links MITgcm
+
+#recover hostname and model path:
+hostname="$1"
+modelpath="$2"
+
+if [ -e ~/.bashrc ]; then
+    source ~/.bashrc
+fi
+
+# Get MITgcm code, if needed
+if [ ! -d "$modelpath/../MITgcm/install" ]; then
+    cd $modelpath/../MITgcm
+    source install.sh
+    cd $modelpath
+fi
+
+# Create build directory, if needed
+cd $modelpath
+if [ ! -d "build" ]; then mkdir build; fi
+cd build
+
+#create MITgcm makefile for this run, if needed
+if [ ! -f Makefile ]; then
+	case $hostname in
+		"pleiades")
+			$modelpath/../MITgcm/install/tools/genmake2 -of $SLR_DIR/models/ice-ocean/configs/linux_amd64_gfortran+mpi_ice_nas -mo ../code_4003 -rd $modelpath/../MITgcm/install
+			;;
+		"babylon")
+			$modelpath/../MITgcm/install/tools/genmake2 -of $modelpath/../MITgcm/install/tools/build_options/linux_amd64_ifort -mpi -mo $modelpath/../MITgcm/code_4003 -rd $modelpath/../MITgcm/install
+			export LD_LIBRARY_PATH="$ISSM_DIR/externalpackages/petsc/install/lib:/dartfs-hpc/admin/opt/el7/intel/compilers_and_libraries_2019.3.199/linux/compiler/lib/intel64:$ISSM_DIR/externalpackages/triangle/install/lib"
+			;;
+		*)
+			$modelpath/../MITgcm/install/tools/genmake2 -mpi -mo $modelpath/../MITgcm/code_4003 -rd $modelpath/../MITgcm/install
+			;;
+	esac
+fi
+
+#create MITgcm code links for this run, if needed
+if [ ! -f BUILD_INFO.h ]; then
+    make depend
+fi
+
+#run make command
+STR=`uname -v`
+SUB='ARM64'
+if [[ "$STR" == *"$SUB"* ]]; then
+    arch -arm64 make -j &> Makefile.log
+else
+    make -j 4 &> Makefile.log   
+fi
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/build_remesh.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/build_remesh.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/build_remesh.sh	(revision 27955)
@@ -0,0 +1,56 @@
+#!/bin/bash
+#This script compiles and links MITgcm
+
+#recover hostname and model path:
+hostname="$1"
+modelpath="$2"
+
+if [ -e ~/.bashrc ]; then
+    source ~/.bashrc
+fi
+
+# Get MITgcm code, if needed
+if [ ! -d "$modelpath/../MITgcm/install" ]; then
+    cd $modelpath/../MITgcm
+    source install.sh
+    cd $modelpath
+fi
+
+# Create build directory, if needed
+cd $modelpath
+if [ ! -d "build" ]; then mkdir build; fi
+cd build
+
+#create MITgcm makefile for this run, if needed
+if [ ! -f Makefile ]; then
+	case $hostname in
+		"pleiades")
+			$modelpath/../MITgcm/install/tools/genmake2 -of $SLR_DIR/models/ice-ocean/configs/linux_amd64_gfortran+mpi_ice_nas -mo ../code_remesh -rd $modelpath/../MITgcm/install
+			;;
+		"babylon")
+			$modelpath/../MITgcm/install/tools/genmake2 -of $modelpath/../MITgcm/install/tools/build_options/linux_amd64_ifort -mpi -mo $modelpath/../MITgcm/code_remesh -rd $modelpath/../MITgcm/install
+			export LD_LIBRARY_PATH="$ISSM_DIR/externalpackages/petsc/install/lib:/dartfs-hpc/admin/opt/el7/intel/compilers_and_libraries_2019.3.199/linux/compiler/lib/intel64:$ISSM_DIR/externalpackages/triangle/install/lib"
+			;;
+		"amundsen")
+			export LDADD="-L$ISSM_DIR/externalpackages/petsc/install/lib -lmpi -lmpifort"
+			$modelpath/../MITgcm/install/tools/genmake2 -mpi -mo $modelpath/../MITgcm/code_remesh -rd $modelpath/../MITgcm/install
+			;;
+		*)
+			$modelpath/../MITgcm/install/tools/genmake2 -mpi -mo $modelpath/../MITgcm/code_remesh -rd $modelpath/../MITgcm/install
+			;;
+	esac
+fi
+
+#create MITgcm code links for this run, if needed
+if [ ! -f BUILD_INFO.h ]; then
+    make depend
+fi
+
+#run make command
+STR=`uname -v`
+SUB='ARM64'
+if [[ "$STR" == *"$SUB"* ]]; then
+    arch -arm64 make -j &> Makefile.log
+else
+    make -j 4 &> Makefile.log   
+fi
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/CPP_EEOPTIONS.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/CPP_EEOPTIONS.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/CPP_EEOPTIONS.h	(revision 27955)
@@ -0,0 +1,161 @@
+CBOP
+C     !ROUTINE: CPP_EEOPTIONS.h
+C     !INTERFACE:
+C     include "CPP_EEOPTIONS.h"
+C
+C     !DESCRIPTION:
+C     *==========================================================*
+C     | CPP\_EEOPTIONS.h                                         |
+C     *==========================================================*
+C     | C preprocessor "execution environment" supporting        |
+C     | flags. Use this file to set flags controlling the        |
+C     | execution environment in which a model runs - as opposed |
+C     | to the dynamical problem the model solves.               |
+C     | Note: Many options are implemented with both compile time|
+C     |       and run-time switches. This allows options to be   |
+C     |       removed altogether, made optional at run-time or   |
+C     |       to be permanently enabled. This convention helps   |
+C     |       with the data-dependence analysis performed by the |
+C     |       adjoint model compiler. This data dependency       |
+C     |       analysis can be upset by runtime switches that it  |
+C     |       is unable to recoginise as being fixed for the     |
+C     |       duration of an integration.                        |
+C     |       A reasonable way to use these flags is to          |
+C     |       set all options as selectable at runtime but then  |
+C     |       once an experimental configuration has been        |
+C     |       identified, rebuild the code with the appropriate  |
+C     |       options set at compile time.                       |
+C     *==========================================================*
+CEOP
+
+#ifndef _CPP_EEOPTIONS_H_
+#define _CPP_EEOPTIONS_H_
+
+C     In general the following convention applies:
+C     ALLOW  - indicates an feature will be included but it may
+C     CAN      have a run-time flag to allow it to be switched
+C              on and off.
+C              If ALLOW or CAN directives are "undef'd" this generally
+C              means that the feature will not be available i.e. it
+C              will not be included in the compiled code and so no
+C              run-time option to use the feature will be available.
+C
+C     ALWAYS - indicates the choice will be fixed at compile time
+C              so no run-time option will be present
+
+C=== Macro related options ===
+C--   Control storage of floating point operands
+C     On many systems it improves performance only to use
+C     8-byte precision for time stepped variables.
+C     Constant in time terms ( geometric factors etc.. )
+C     can use 4-byte precision, reducing memory utilisation and
+C     boosting performance because of a smaller working set size.
+C     However, on vector CRAY systems this degrades performance.
+C     Enable to switch REAL4_IS_SLOW from genmake2 (with LET_RS_BE_REAL4):
+#ifdef LET_RS_BE_REAL4
+#undef REAL4_IS_SLOW
+#else /* LET_RS_BE_REAL4 */
+#define REAL4_IS_SLOW
+#endif /* LET_RS_BE_REAL4 */
+
+C--   Control use of "double" precision constants.
+C     Use D0 where it means REAL*8 but not where it means REAL*16
+#define D0 d0
+
+C=== IO related options ===
+C--   Flag used to indicate whether Fortran formatted write
+C     and read are threadsafe. On SGI the routines can be thread
+C     safe, on Sun it is not possible - if you are unsure then
+C     undef this option.
+#undef FMTFTN_IO_THREAD_SAFE
+
+C--   Flag used to indicate whether Binary write to Local file (i.e.,
+C     a different file for each tile) and read are thread-safe.
+#undef LOCBIN_IO_THREAD_SAFE
+
+C--   Flag to turn off the writing of error message to ioUnit zero
+#undef DISABLE_WRITE_TO_UNIT_ZERO
+
+C--   Alternative formulation of BYTESWAP, faster than
+C     compiler flag -byteswapio on the Altix.
+#undef FAST_BYTESWAP
+
+C--   Flag to turn on old default of opening scratch files with the
+C     STATUS='SCRATCH' option. This method, while perfectly FORTRAN-standard,
+C     caused filename conflicts on some multi-node/multi-processor platforms
+C     in the past and has been replace by something (hopefully) more robust.
+#undef USE_FORTRAN_SCRATCH_FILES
+
+C--   Flag defined for eeboot_minimal.F, eeset_parms.F and open_copy_data_file.F
+C     to write STDOUT, STDERR and scratch files from process 0 only.
+C WARNING: to use only when absolutely confident that the setup is working
+C     since any message (error/warning/print) from any proc <> 0 will be lost.
+#undef SINGLE_DISK_IO
+
+C=== MPI, EXCH and GLOBAL_SUM related options ===
+C--   Flag turns off MPI_SEND ready_to_receive polling in the
+C     gather_* subroutines to speed up integrations.
+#undef DISABLE_MPI_READY_TO_RECEIVE
+
+C--   Control MPI based parallel processing
+CXXX We no longer select the use of MPI via this file (CPP_EEOPTIONS.h)
+CXXX To use MPI, use an appropriate genmake2 options file or use
+CXXX genmake2 -mpi .
+CXXX #undef  ALLOW_USE_MPI
+
+C--   Control use of communication that might overlap computation.
+C     Under MPI selects/deselects "non-blocking" sends and receives.
+#define ALLOW_ASYNC_COMMUNICATION
+#undef  ALLOW_ASYNC_COMMUNICATION
+#undef  ALWAYS_USE_ASYNC_COMMUNICATION
+C--   Control use of communication that is atomic to computation.
+C     Under MPI selects/deselects "blocking" sends and receives.
+#define ALLOW_SYNC_COMMUNICATION
+#undef  ALWAYS_USE_SYNC_COMMUNICATION
+
+C--   Control XY periodicity in processor to grid mappings
+C     Note: Model code does not need to know whether a domain is
+C           periodic because it has overlap regions for every box.
+C           Model assume that these values have been
+C           filled in some way.
+#undef  ALWAYS_PREVENT_X_PERIODICITY
+#undef  ALWAYS_PREVENT_Y_PERIODICITY
+#define CAN_PREVENT_X_PERIODICITY
+#define CAN_PREVENT_Y_PERIODICITY
+
+C--   disconnect tiles (no exchange between tiles, just fill-in edges
+C     assuming locally periodic subdomain)
+#undef DISCONNECTED_TILES
+
+C--   Always cumulate tile local-sum in the same order by applying MPI allreduce
+C     to array of tiles ; can get slower with large number of tiles (big set-up)
+#define GLOBAL_SUM_ORDER_TILES
+
+C--   Alternative way of doing global sum without MPI allreduce call
+C     but instead, explicit MPI send & recv calls. Expected to be slower.
+#undef GLOBAL_SUM_SEND_RECV
+
+C--   Alternative way of doing global sum on a single CPU
+C     to eliminate tiling-dependent roundoff errors. Note: This is slow.
+#undef  CG2D_SINGLECPU_SUM
+
+C=== Other options (to add/remove pieces of code) ===
+C--   Flag to turn on checking for errors from all threads and procs
+C     (calling S/R STOP_IF_ERROR) before stopping.
+#define USE_ERROR_STOP
+
+C--   Control use of communication with other component:
+C     allow to import and export from/to Coupler interface.
+#undef COMPONENT_MODULE
+
+C--   Options used to couple MITgcm and ISSM
+C     Eventually this option can probably be merged with COMPONENT_MODULE
+#define ALLOW_CPL_ISSM
+
+C--   Activate some pieces of code for coupling to GEOS AGCM
+#undef HACK_FOR_GMAO_CPL
+
+#endif /* _CPP_EEOPTIONS_H_ */
+
+#include "CPP_EEMACROS.h"
+
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/SIZE.h.bak
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/SIZE.h.bak	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/SIZE.h.bak	(revision 27955)
@@ -0,0 +1,64 @@
+CBOP
+C    !ROUTINE: SIZE.h
+C    !INTERFACE:
+C    include SIZE.h
+C    !DESCRIPTION: \bv
+C     *==========================================================*
+C     | SIZE.h Declare size of underlying computational grid.
+C     *==========================================================*
+C     | The design here supports a three-dimensional model grid
+C     | with indices I,J and K. The three-dimensional domain
+C     | is comprised of nPx*nSx blocks (or tiles) of size sNx
+C     | along the first (left-most index) axis, nPy*nSy blocks
+C     | of size sNy along the second axis and one block of size
+C     | Nr along the vertical (third) axis.
+C     | Blocks/tiles have overlap regions of size OLx and OLy
+C     | along the dimensions that are subdivided.
+C     *==========================================================*
+C     \ev
+C
+C     Voodoo numbers controlling data layout:
+C     sNx :: Number of X points in tile.
+C     sNy :: Number of Y points in tile.
+C     OLx :: Tile overlap extent in X.
+C     OLy :: Tile overlap extent in Y.
+C     nSx :: Number of tiles per process in X.
+C     nSy :: Number of tiles per process in Y.
+C     nPx :: Number of processes to use in X.
+C     nPy :: Number of processes to use in Y.
+C     Nx  :: Number of points in X for the full domain.
+C     Ny  :: Number of points in Y for the full domain.
+C     Nr  :: Number of points in vertical direction.
+CEOP
+      INTEGER sNx
+      INTEGER sNy
+      INTEGER OLx
+      INTEGER OLy
+      INTEGER nSx
+      INTEGER nSy
+      INTEGER nPx
+      INTEGER nPy
+      INTEGER Nx
+      INTEGER Ny
+      INTEGER Nr
+      PARAMETER (
+     &           sNx =  20,
+     &           sNy =  20,
+     &           OLx =   3,
+     &           OLy =   3,
+     &           nSx =   1,
+     &           nSy =   1,
+     &           nPx =   1,
+     &           nPy =   2,
+     &           Nx  = sNx*nSx*nPx,
+     &           Ny  = sNy*nSy*nPy,
+     &           Nr  =  30)
+
+C     MAX_OLX :: Set to the maximum overlap region size of any array
+C     MAX_OLY    that will be exchanged. Controls the sizing of exch
+C                routine buffers.
+      INTEGER MAX_OLX
+      INTEGER MAX_OLY
+      PARAMETER ( MAX_OLX = OLx,
+     &            MAX_OLY = OLy )
+
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/cpl_issm.F
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/cpl_issm.F	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/cpl_issm.F	(revision 27955)
@@ -0,0 +1,220 @@
+#include "PACKAGES_CONFIG.h"
+#include "CPP_OPTIONS.h"
+
+CBOP
+C     !ROUTINE: CPL_ISSM
+C     !INTERFACE:
+      SUBROUTINE CPL_ISSM( myTime, myIter, myThid )
+
+C     !DESCRIPTION: \bv
+C     *==================================================================
+C     | SUBROUTINE cpl_issm
+C     | o Couple MITgcm ocean model with ISSM ice sheet model
+C     *==================================================================
+C     \ev
+
+C     !USES:
+      IMPLICIT NONE
+C     == Global variables ==
+#include "SIZE.h"
+#include "EEPARAMS.h"
+#include "PARAMS.h"
+#include "DYNVARS.h"
+#include "GRID.h"
+#include "FFIELDS.h"
+#include "SHELFICE_OPTIONS.h"
+#include "SHELFICE.h"
+#ifdef ALLOW_EXF
+# include "EXF_OPTIONS.h"
+# include "EXF_FIELDS.h"
+#endif
+
+      LOGICAL  DIFFERENT_MULTIPLE
+      EXTERNAL DIFFERENT_MULTIPLE
+
+C     !LOCAL VARIABLES:
+C     mytime - time counter for this thread (seconds)
+C     myiter - iteration counter for this thread
+C     mythid - thread number for this instance of the routine.
+      _RL     mytime
+      INTEGER myiter, mythid 
+CEOP
+
+#ifdef ALLOW_CPL_ISSM
+#include "EESUPPORT.h"
+      COMMON /CPL_MPI_ID/ mpiMyWid, toissmcomm
+      INTEGER mpiMyWid, toissmcomm, mpiRC
+      INTEGER mpistatus(MPI_STATUS_SIZE)
+      INTEGER i, j, bi, bj, buffsize
+      COMMON /CPL_ISSM_TIME/ CouplingTime
+      _R8 CouplingTime, IceModelTime
+      _R8 xfer_array(Nx,Ny)
+      _R8 local(1:sNx,1:sNy,nSx,nSy)
+      CHARACTER*(MAX_LEN_MBUF) suff
+
+C Initialization steps I1, I2, and I3:
+      IF( myTime .EQ. startTime ) THEN
+
+C   I1. ISSM sends CouplingTime, the interval at which we couple
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            call MPI_Recv(CouplingTime,1,MPI_DOUBLE,0,10001000,
+     &           toissmcomm,mpistatus,mpiRC)
+            _END_MASTER( myThid )
+         ENDIF
+         _BEGIN_MASTER( myThid )
+         CALL MPI_BCAST(CouplingTime,1,MPI_DOUBLE,0,
+     &        MPI_COMM_MODEL,mpiRC)
+         _END_MASTER( myThid )
+C        print*, 'Ocean received CouplingTime: ', CouplingTime
+
+C   I2. MITgcm sends grid size (NX and NY)
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            call MPI_Send(Nx,1,MPI_INT,0,10001003,
+     &           toissmcomm,mpistatus)
+            call MPI_Send(Ny,1,MPI_INT,0,10001004,
+     &           toissmcomm,mpistatus)
+            _END_MASTER( myThid )
+         ENDIF
+
+C   I3. MITgcm sends grid coordinates of center of cells
+C       (longitude -180 <= XC < 180 and latitude YC)
+C     Send longitude East of center of cell
+         DO bj=1,nSy
+            DO bi=1,nSx
+               DO j=1,sNy
+                  DO i=1,sNx
+                     local(i,j,bi,bj) = xC(i,j,bi,bj)
+                  ENDDO
+               ENDDO
+            ENDDO
+         ENDDO
+         CALL BAR2( myThid ) 
+         CALL GATHER_2D_R8( xfer_array, local, Nx, Ny,
+     &        .FALSE., .FALSE., myThid )
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            buffsize = Nx*Ny
+            CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
+     &           0,10001005,toissmcomm,mpistatus)
+            _END_MASTER( myThid )
+         ENDIF
+         CALL BAR2( myThid )
+C     Send latitude North of center of cell
+         DO bj=1,nSy
+            DO bi=1,nSx
+               DO j=1,sNy
+                  DO i=1,sNx
+                     local(i,j,bi,bj) = yC(i,j,bi,bj)
+                  ENDDO
+               ENDDO
+            ENDDO
+         ENDDO
+         CALL BAR2( myThid ) 
+         CALL GATHER_2D_R8( xfer_array, local, Nx, Ny,
+     &        .FALSE., .FALSE., myThid )
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            buffsize = Nx*Ny
+            CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
+     &           0,10001006,toissmcomm,mpistatus)
+            _END_MASTER( myThid )
+         ENDIF
+         CALL BAR2( myThid )
+
+      ENDIF
+C End initialization steps I1, I2, and I3.
+
+C Recurring steps C1 and C2:
+      IF( MOD(myTime,CouplingTime) .LT. deltaT/2. ) THEN
+
+C   C1. ISSM sends ice model time IceTimeTag
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            call MPI_Recv(IceModelTime,1,MPI_DOUBLE,0,10001001,
+     &           toissmcomm,mpistatus,mpiRC)
+C           print*, 'Ocean received IceModelTime: ', IceModelTime
+            _END_MASTER( myThid )
+         ENDIF
+
+C   C2. MITgcm sends ocean model time OceanTimeTag
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            call MPI_Send(myTime,1,MPI_DOUBLE,0,10001002,
+     &           toissmcomm,mpistatus)
+            _END_MASTER( myThid )
+         ENDIF
+
+      ENDIF
+C End recurring steps C1 and C2.
+
+C Recurring step C3 except during Initialization:
+C  C3. MITgcm sends
+C      (N-1)*CouplingTime <= OceanModelTime < N*CouplingTime
+C      time-mean melt rate to ISSM
+      IF( myTime .NE. startTime .AND.
+     &     MOD(myTime,CouplingTime) .LT. deltaT/2. ) THEN
+         DO bj=1,nSy
+            DO bi=1,nSx
+               DO j=1,sNy
+                  DO i=1,sNx
+                     local(i,j,bi,bj)=shelficeFreshWaterFlux(i,j,bi,bj)
+                  ENDDO
+               ENDDO
+            ENDDO
+         ENDDO
+         CALL BAR2( myThid ) 
+         CALL GATHER_2D_R8( xfer_array, local, Nx, Ny,
+     &        .FALSE., .FALSE., myThid )
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            buffsize = Nx*Ny
+            CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
+     &           0,10001007,toissmcomm,mpistatus)
+            _END_MASTER( myThid )
+         ENDIF
+         CALL BAR2( myThid )
+C        print*,'Done Sending shelficeFreshWaterFlux array.'
+         
+      ENDIF
+C End recurring step C3.
+
+C Recurring step C4 except during Termination:
+C  C4. ISSM sends IceModelTime=(N-1)*CouplingTime base to MITgcm
+      IF( myTime .NE. endtime .AND.
+     &     MOD(myTime,CouplingTime) .LT. deltaT/2. ) THEN
+         WRITE(suff,'(I10.10)') myIter
+         CALL WRITE_FLD_XY_RS( 'R_shelfIce1_',suff,R_shelfIce,-1,myThid)
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )         
+            call MPI_Recv(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
+     &           0,10001008,toissmcomm,mpistatus,mpiRC)
+            _END_MASTER( myThid )
+         ENDIF
+         CALL BAR2( myThid ) 
+         CALL SCATTER_2D_R8( xfer_array, local, Nx, Ny,
+     &        .FALSE., .FALSE., myThid )
+         DO bj = myByLo(myThid), myByHi(myThid)
+            DO bi = myBxLo(myThid), myBxHi(myThid)
+               DO j=1,sNy
+                  DO i=1,sNx
+                     IF( local(i,j,bi,bj).LT.9998 ) THEN
+                        R_shelfIce(i,j,bi,bj) = local(i,j,bi,bj)
+                     ELSE
+                        R_shelfIce(i,j,bi,bj) = 0. _d 0
+                     ENDIF
+                  ENDDO
+               ENDDO
+            ENDDO
+         ENDDO
+C- fill in the overlap (+ BARRIER):
+         _EXCH_XY_RS( R_shelfIce, myThid )
+         CALL WRITE_FLD_XY_RS( 'R_shelfIce2_',suff,R_shelfIce,-1,myThid)
+      ENDIF
+C End recurring step C4.
+
+#endif /* ALLOW_CPL_ISSM */
+
+      RETURN
+      END
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/do_oceanic_phys.F
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/do_oceanic_phys.F	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/do_oceanic_phys.F	(revision 27955)
@@ -0,0 +1,1111 @@
+#include "PACKAGES_CONFIG.h"
+#include "CPP_OPTIONS.h"
+#ifdef ALLOW_MOM_COMMON
+# include "MOM_COMMON_OPTIONS.h"
+#endif
+#ifdef ALLOW_AUTODIFF
+# include "AUTODIFF_OPTIONS.h"
+#endif
+#ifdef ALLOW_CTRL
+# include "CTRL_OPTIONS.h"
+#endif
+#ifdef ALLOW_SALT_PLUME
+# include "SALT_PLUME_OPTIONS.h"
+#endif
+#ifdef ALLOW_ECCO
+# include "ECCO_OPTIONS.h"
+#endif
+
+#ifdef ALLOW_AUTODIFF
+# ifdef ALLOW_GGL90
+#  include "GGL90_OPTIONS.h"
+# endif
+# ifdef ALLOW_GMREDI
+#  include "GMREDI_OPTIONS.h"
+# endif
+# ifdef ALLOW_KPP
+#  include "KPP_OPTIONS.h"
+# endif
+# ifdef ALLOW_SEAICE
+#  include "SEAICE_OPTIONS.h"
+# endif
+# ifdef ALLOW_EXF
+#  include "EXF_OPTIONS.h"
+# endif
+#endif /* ALLOW_AUTODIFF */
+
+CBOP
+C     !ROUTINE: DO_OCEANIC_PHYS
+C     !INTERFACE:
+      SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
+C     !DESCRIPTION: \bv
+C     *==========================================================*
+C     | SUBROUTINE DO_OCEANIC_PHYS
+C     | o Controlling routine for oceanic physics and
+C     |   parameterization
+C     *==========================================================*
+C     | o originally, part of S/R thermodynamics
+C     *==========================================================*
+C     \ev
+
+C     !CALLING SEQUENCE:
+C     DO_OCEANIC_PHYS
+C       |
+C       |-- OBCS_CALC
+C       |
+C       |-- OCN_APPLY_IMPORT
+C       |
+C       |-- FRAZIL_CALC_RHS
+C       |
+C       |-- THSICE_MAIN
+C       |
+C       |-- SEAICE_FAKE
+C       |-- SEAICE_MODEL
+C       |-- SEAICE_COST_SENSI
+C       |
+C       |-- OCN_EXPORT_DATA
+C       |
+C       |-- SHELFICE_THERMODYNAMICS
+C       |
+C       |-- ICEFRONT_THERMODYNAMICS
+C       |
+C       |-- SALT_PLUME_DO_EXCH
+C       |
+C       |-- FREEZE_SURFACE
+C       |
+C       |-- EXTERNAL_FORCING_SURF
+C       |
+C       |-- OBCS_ADJUST
+C       |
+C       |- k loop (Nr:1):
+C       | - DWNSLP_CALC_RHO
+C       | - BBL_CALC_RHO
+C       | - FIND_RHO_2D @ p(k)
+C       | - FIND_RHO_2D @ p(k-1)
+C       | - GRAD_SIGMA
+C       | - CALC_IVDC
+C       | - DIAGS_RHO_L
+C       |- end k loop.
+C       |
+C       |-- CALC_OCE_MXLAYER
+C       |
+C       |-- SALT_PLUME_CALC_DEPTH
+C       |-- SALT_PLUME_VOLFRAC
+C       |-- SALT_PLUME_APPLY
+C       |-- SALT_PLUME_APPLY
+C       |-- SALT_PLUME_FORCING_SURF
+C       |
+C       |-- KPP_CALC
+C       |-- KPP_CALC_DUMMY
+C       |
+C       |-- PP81_CALC
+C       |
+C       |-- KL10_CALC
+C       |
+C       |-- MY82_CALC
+C       |
+C       |-- GGL90_CALC
+C       |
+C       |-- TIMEAVE_SURF_FLUX
+C       |
+C       |-- GMREDI_CALC_TENSOR
+C       |-- GMREDI_CALC_TENSOR_DUMMY
+C       |
+C       |-- DWNSLP_CALC_FLOW
+C       |-- DWNSLP_CALC_FLOW
+C       |
+C       |-- OFFLINE_GET_DIFFUS
+C       |
+C       |-- BBL_CALC_RHS
+C       |
+C       |-- MYPACKAGE_CALC_RHS
+C       |
+C       |-- GMREDI_DO_EXCH
+C       |
+C       |-- KPP_DO_EXCH
+C       |
+C       |-- GGL90_EXCHANGES
+C       |
+C       |-- DIAGS_RHO_G
+C       |-- DIAGS_OCEANIC_SURF_FLUX
+C       |-- SALT_PLUME_DIAGNOSTICS_FILL
+C       |
+C       |-- ECCO_PHYS
+
+C     !USES:
+      IMPLICIT NONE
+C     == Global variables ===
+#include "SIZE.h"
+#include "EEPARAMS.h"
+#include "PARAMS.h"
+#include "GRID.h"
+#include "DYNVARS.h"
+#ifdef ALLOW_TIMEAVE
+# include "TIMEAVE_STATV.h"
+#endif
+#ifdef ALLOW_OFFLINE
+# include "OFFLINE_SWITCH.h"
+#endif
+
+#ifdef ALLOW_AUTODIFF
+# include "AUTODIFF_MYFIELDS.h"
+# ifdef ALLOW_AUTODIFF_TAMC
+#  include "tamc.h"
+# endif
+# include "FFIELDS.h"
+# include "SURFACE.h"
+# include "EOS.h"
+# ifdef ALLOW_GMREDI
+#  include "GMREDI.h"
+# endif
+# ifdef ALLOW_KPP
+#  include "KPP.h"
+# endif
+# ifdef ALLOW_GGL90
+#  include "GGL90.h"
+# endif
+# ifdef ALLOW_EBM
+#  include "EBM.h"
+# endif
+# ifdef ALLOW_EXF
+#  include "ctrl.h"
+#  include "EXF_FIELDS.h"
+#  ifdef ALLOW_BULKFORMULAE
+#   include "EXF_CONSTANTS.h"
+#  endif
+# endif
+# ifdef ALLOW_SEAICE
+#  include "SEAICE_SIZE.h"
+#  include "SEAICE.h"
+#  include "SEAICE_PARAMS.h"
+# endif
+# ifdef ALLOW_THSICE
+#  include "THSICE_VARS.h"
+# endif
+# ifdef ALLOW_SALT_PLUME
+#  include "SALT_PLUME.h"
+# endif
+# ifdef ALLOW_ECCO
+#  ifdef ALLOW_SIGMAR_COST_CONTRIBUTION
+#   include "ecco_cost.h"
+#  endif
+# endif
+#endif /* ALLOW_AUTODIFF */
+
+C     !INPUT/OUTPUT PARAMETERS:
+C     == Routine arguments ==
+C     myTime :: Current time in simulation
+C     myIter :: Current iteration number in simulation
+C     myThid :: Thread number for this instance of the routine.
+      _RL myTime
+      INTEGER myIter
+      INTEGER myThid
+
+C     !LOCAL VARIABLES:
+C     == Local variables
+C     rhoKp1,rhoKm1 :: Density at current level, and @ level minus one
+C     iMin, iMax    :: Ranges and sub-block indices on which calculations
+C     jMin, jMax       are applied.
+C     bi, bj        :: tile indices
+C     msgBuf        :: Temp. for building output string
+C     i,j,k         :: loop indices
+C     kSrf          :: surface index
+      _RL rhoKp1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
+      _RL rhoKm1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
+      _RL sigmaX  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
+      _RL sigmaY  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
+      _RL sigmaR  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
+      INTEGER iMin, iMax
+      INTEGER jMin, jMax
+      INTEGER bi, bj
+      INTEGER i, j, k, kSrf
+      CHARACTER*(MAX_LEN_MBUF) msgBuf
+      INTEGER doDiagsRho
+      LOGICAL calcGMRedi, calcKPP, calcConvect
+#ifdef ALLOW_DIAGNOSTICS
+      LOGICAL  DIAGNOSTICS_IS_ON
+      EXTERNAL DIAGNOSTICS_IS_ON
+#endif /* ALLOW_DIAGNOSTICS */
+#ifdef ALLOW_AUTODIFF
+      _RL thetaRef
+#endif /* ALLOW_AUTODIFF */
+#ifdef ALLOW_AUTODIFF_TAMC
+      INTEGER act1, act2, act3, act4
+      INTEGER max1, max2, max3
+      INTEGER kkey, itdkey
+#endif
+CEOP
+
+#ifdef ALLOW_AUTODIFF_TAMC
+C--   dummy statement to end declaration part
+      itdkey = 1
+#endif /* ALLOW_AUTODIFF_TAMC */
+
+      kSrf = 1
+      IF ( usingPCoords ) kSrf = Nr
+
+#ifdef ALLOW_DEBUG
+      IF (debugMode) CALL DEBUG_ENTER('DO_OCEANIC_PHYS',myThid)
+#endif
+
+      doDiagsRho = 0
+#ifdef ALLOW_DIAGNOSTICS
+      IF ( useDiagnostics .AND. fluidIsWater ) THEN
+        IF ( DIAGNOSTICS_IS_ON('MXLDEPTH',myThid) )
+     &       doDiagsRho = doDiagsRho + 1
+        IF ( DIAGNOSTICS_IS_ON('DRHODR  ',myThid) )
+     &       doDiagsRho = doDiagsRho + 2
+        IF ( DIAGNOSTICS_IS_ON('WdRHO_P ',myThid) )
+     &       doDiagsRho = doDiagsRho + 4
+        IF ( DIAGNOSTICS_IS_ON('WdRHOdP ',myThid) )
+     &       doDiagsRho = doDiagsRho + 8
+      ENDIF
+#endif /* ALLOW_DIAGNOSTICS */
+
+      calcGMRedi  = useGMRedi
+      calcKPP     = useKPP
+      calcConvect = ivdc_kappa.NE.0.
+#ifdef ALLOW_OFFLINE
+      IF ( useOffLine ) THEN
+        calcGMRedi = useGMRedi .AND. .NOT.offlineLoadGMRedi
+        calcKPP    = useKPP    .AND. .NOT.offlineLoadKPP
+        calcConvect=calcConvect.AND. .NOT.offlineLoadConvec
+      ENDIF
+#endif /* ALLOW_OFFLINE */
+
+#ifdef  ALLOW_OBCS
+      IF (useOBCS) THEN
+C--   Calculate future values on open boundaries
+C--   moved before SEAICE_MODEL call since SEAICE_MODEL needs seaice-obcs fields
+# ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE theta = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE salt  = comlev1, key=ikey_dynamics, kind=isbyte
+# endif
+# ifdef ALLOW_DEBUG
+       IF (debugMode) CALL DEBUG_CALL('OBCS_CALC',myThid)
+# endif
+       CALL OBCS_CALC( myTime+deltaTClock, myIter+1,
+     I                 uVel, vVel, wVel, theta, salt, myThid )
+      ENDIF
+#endif  /* ALLOW_OBCS */
+
+#ifdef ALLOW_OCN_COMPON_INTERF
+C--    Apply imported data (from coupled interface) to forcing fields
+C jmc: moved here before any freezing/seaice pkg adjustment of surf-fluxes
+      IF ( useCoupler ) THEN
+         CALL OCN_APPLY_IMPORT( .TRUE., myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_OCN_COMPON_INTERF */
+
+#ifdef ALLOW_AUTODIFF
+      DO bj=myByLo(myThid),myByHi(myThid)
+       DO bi=myBxLo(myThid),myBxHi(myThid)
+        DO j=1-OLy,sNy+OLy
+         DO i=1-OLx,sNx+OLx
+          adjustColdSST_diag(i,j,bi,bj) = 0. _d 0
+# ifdef ALLOW_SALT_PLUME
+          saltPlumeDepth(i,j,bi,bj) = 0. _d 0
+          saltPlumeFlux(i,j,bi,bj)  = 0. _d 0
+# endif
+         ENDDO
+        ENDDO
+       ENDDO
+      ENDDO
+#endif /* ALLOW_AUTODIFF */
+
+#ifdef ALLOW_FRAZIL
+      IF ( useFRAZIL ) THEN
+C--   Freeze water in the ocean interior and let it rise to the surface
+CADJ STORE theta = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE salt  = comlev1, key=ikey_dynamics, kind=isbyte
+       CALL FRAZIL_CALC_RHS( myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_FRAZIL */
+
+#if (defined ALLOW_THSICE) && !(defined ALLOW_ATM2D)
+      IF ( useThSIce .AND. fluidIsWater ) THEN
+# ifdef ALLOW_AUTODIFF_TAMC
+#  ifdef ALLOW_SEAICE
+CADJ STORE uice,vice         = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif
+CADJ STORE iceMask,iceHeight = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE snowHeight, Tsrf  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE Qice1, Qice2      = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE sHeating,snowAge  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE hocemxl, icflxsw  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE salt,theta        = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE uvel,vvel         = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE qnet,qsw, empmr   = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE atemp,aqh,precip  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE swdown,lwdown     = comlev1, key=ikey_dynamics, kind=isbyte
+#  ifdef NONLIN_FRSURF
+CADJ STORE hFac_surfC        = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif
+# endif /* ALLOW_AUTODIFF_TAMC */
+# ifdef ALLOW_DEBUG
+        IF (debugMode) CALL DEBUG_CALL('THSICE_MAIN',myThid)
+# endif
+C--     Step forward Therm.Sea-Ice variables
+C       and modify forcing terms including effects from ice
+        CALL TIMER_START('THSICE_MAIN     [DO_OCEANIC_PHYS]', myThid)
+        CALL THSICE_MAIN( myTime, myIter, myThid )
+        CALL TIMER_STOP( 'THSICE_MAIN     [DO_OCEANIC_PHYS]', myThid)
+      ENDIF
+#endif /* ALLOW_THSICE */
+
+#ifdef ALLOW_SEAICE
+# ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE qnet  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE qsw   = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE theta = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE salt  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE fu,fv = comlev1, key=ikey_dynamics, kind=isbyte
+#if (defined ALLOW_EXF) && (defined ALLOW_ATM_TEMP)
+CADJ STORE evap  = comlev1, key=ikey_dynamics, kind=isbyte
+#endif
+# endif /* ALLOW_AUTODIFF_TAMC */
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE phiHydLow= comlev1, key=ikey_dynamics, byte=isbyte
+#endif
+      IF ( useSEAICE ) THEN
+# ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE uvel,vvel         = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE uice,vice         = comlev1, key=ikey_dynamics, kind=isbyte
+#  ifdef ALLOW_EXF
+CADJ STORE atemp,aqh,precip  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE swdown,lwdown     = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE uwind,vwind       = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif
+#  ifdef SEAICE_VARIABLE_SALINITY
+CADJ STORE hsalt             = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif
+#  ifdef ATMOSPHERIC_LOADING
+CADJ STORE pload, siceload   = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif
+#  ifdef NONLIN_FRSURF
+CADJ STORE recip_hfacc       = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif
+#  ifdef ANNUAL_BALANCE
+CADJ STORE balance_itcount   = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif /* ANNUAL_BALANCE */
+#  ifdef ALLOW_THSICE
+C-- store thSIce vars before advection (called from SEAICE_MODEL) updates them:
+CADJ STORE iceMask,iceHeight = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE snowHeight,hOceMxL= comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE Qice1, Qice2      = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif /* ALLOW_THSICE */
+# endif /* ALLOW_AUTODIFF_TAMC */
+# ifdef ALLOW_DEBUG
+        IF (debugMode) CALL DEBUG_CALL('SEAICE_MODEL',myThid)
+# endif
+        CALL TIMER_START('SEAICE_MODEL    [DO_OCEANIC_PHYS]', myThid)
+        CALL SEAICE_MODEL( myTime, myIter, myThid )
+        CALL TIMER_STOP ('SEAICE_MODEL    [DO_OCEANIC_PHYS]', myThid)
+# ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE tices = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE heff  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE hsnow = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE area  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE uIce  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE vIce  = comlev1, key=ikey_dynamics, kind=isbyte
+# endif
+# ifdef ALLOW_COST
+        CALL SEAICE_COST_SENSI ( myTime, myIter, myThid )
+# endif
+# ifdef ALLOW_AUTODIFF
+      ELSEIF ( SEAICEadjMODE .EQ. -1 ) THEN
+CADJ STORE area = comlev1, key=ikey_dynamics, kind=isbyte
+        CALL SEAICE_FAKE( myTime, myIter, myThid )
+# endif /* ALLOW_AUTODIFF */
+      ENDIF
+#endif /* ALLOW_SEAICE */
+
+#if (defined ALLOW_OCN_COMPON_INTERF) && (defined ALLOW_THSICE)
+C--   After seaice-dyn and advection of pkg/thsice fields,
+C     Export ocean coupling fields to coupled interface (only with pkg/thsice)
+      IF ( useCoupler ) THEN
+# ifdef ALLOW_DEBUG
+        IF (debugMode) CALL DEBUG_CALL('OCN_EXPORT_DATA',myThid)
+# endif
+         CALL TIMER_START('OCN_EXPORT_DATA [DO_OCEANIC_PHYS]', myThid)
+         CALL OCN_EXPORT_DATA( myTime, myIter, myThid )
+         CALL TIMER_STOP ('OCN_EXPORT_DATA [DO_OCEANIC_PHYS]', myThid)
+      ENDIF
+#endif /* ALLOW_OCN_COMPON_INTERF & ALLOW_THSICE */
+
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE sst, sss          = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE qsw               = comlev1, key=ikey_dynamics, kind=isbyte
+# ifdef ALLOW_SEAICE
+CADJ STORE area              = comlev1, key=ikey_dynamics, kind=isbyte
+# endif
+#endif
+
+#ifdef ALLOW_CPL_ISSM
+      IF ( useCoupler) CALL CPL_ISSM( myTime, myIter, myThid )
+#endif
+
+#ifdef ALLOW_SHELFICE
+      IF ( useShelfIce .AND. fluidIsWater ) THEN
+#ifdef ALLOW_DEBUG
+       IF (debugMode) CALL DEBUG_CALL('SHELFICE_THERMODYNAMICS',myThid)
+#endif
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE salt, theta       = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE uvel, vvel        = comlev1, key=ikey_dynamics, kind=isbyte
+#endif
+C     compute temperature and (virtual) salt flux at the
+C     shelf-ice ocean interface
+       CALL TIMER_START('SHELFICE_THERMODYNAMICS [DO_OCEANIC_PHYS]',
+     &       myThid)
+       CALL SHELFICE_THERMODYNAMICS( myTime, myIter, myThid )
+       CALL TIMER_STOP( 'SHELFICE_THERMODYNAMICS [DO_OCEANIC_PHYS]',
+     &      myThid)
+      ENDIF
+#endif /* ALLOW_SHELFICE */
+
+#ifdef ALLOW_ICEFRONT
+      IF ( useICEFRONT .AND. fluidIsWater ) THEN
+#ifdef ALLOW_DEBUG
+       IF (debugMode) CALL DEBUG_CALL('ICEFRONT_THERMODYNAMICS',myThid)
+#endif
+C     compute temperature and (virtual) salt flux at the
+C     ice-front ocean interface
+       CALL TIMER_START('ICEFRONT_THERMODYNAMICS [DO_OCEANIC_PHYS]',
+     &       myThid)
+       CALL ICEFRONT_THERMODYNAMICS( myTime, myIter, myThid )
+       CALL TIMER_STOP( 'ICEFRONT_THERMODYNAMICS [DO_OCEANIC_PHYS]',
+     &      myThid)
+      ENDIF
+#endif /* ALLOW_ICEFRONT */
+
+#ifdef ALLOW_SALT_PLUME
+      IF ( useSALT_PLUME ) THEN
+Catn: exchanging saltPlumeFlux:
+        CALL SALT_PLUME_DO_EXCH( myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_SALT_PLUME */
+
+C--   Freeze water at the surface
+      IF ( allowFreezing ) THEN
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE theta             = comlev1, key=ikey_dynamics, kind=isbyte
+#endif
+        CALL FREEZE_SURFACE( myTime, myIter, myThid )
+      ENDIF
+
+      iMin = 1-OLx
+      iMax = sNx+OLx
+      jMin = 1-OLy
+      jMax = sNy+OLy
+
+C---  Determines forcing terms based on external fields
+C     relaxation terms, etc.
+#ifdef ALLOW_AUTODIFF
+CADJ STORE salt, theta       = comlev1, key=ikey_dynamics, kind=isbyte
+#else  /* ALLOW_AUTODIFF */
+C--   if fluid is not water, by-pass surfaceForcing, find_rho, gmredi
+C     and all vertical mixing schemes, but keep OBCS_CALC
+      IF ( fluidIsWater ) THEN
+#endif /* ALLOW_AUTODIFF */
+#ifdef ALLOW_DEBUG
+      IF (debugMode) CALL DEBUG_CALL('EXTERNAL_FORCING_SURF',myThid)
+#endif
+        CALL EXTERNAL_FORCING_SURF(
+     I             iMin, iMax, jMin, jMax,
+     I             myTime, myIter, myThid )
+
+#ifdef  ALLOW_OBCS
+      IF (useOBCS) THEN
+C--   After all surface fluxes are known apply balancing fluxes and
+C--   apply tidal forcing to open boundaries
+# ifdef ALLOW_DEBUG
+       IF (debugMode) CALL DEBUG_CALL('OBCS_ADJUST',myThid)
+# endif
+       CALL OBCS_ADJUST(
+     I      myTime+deltaTClock, myIter+1, myThid )
+      ENDIF
+#endif  /* ALLOW_OBCS */
+
+#ifdef ALLOW_AUTODIFF_TAMC
+C--   HPF directive to help TAMC
+CHPF$ INDEPENDENT
+#endif /* ALLOW_AUTODIFF_TAMC */
+      DO bj=myByLo(myThid),myByHi(myThid)
+#ifdef ALLOW_AUTODIFF_TAMC
+C--   HPF directive to help TAMC
+CHPF$ INDEPENDENT
+#endif /* ALLOW_AUTODIFF_TAMC */
+       DO bi=myBxLo(myThid),myBxHi(myThid)
+
+#ifdef ALLOW_AUTODIFF_TAMC
+          act1 = bi - myBxLo(myThid)
+          max1 = myBxHi(myThid) - myBxLo(myThid) + 1
+          act2 = bj - myByLo(myThid)
+          max2 = myByHi(myThid) - myByLo(myThid) + 1
+          act3 = myThid - 1
+          max3 = nTx*nTy
+          act4 = ikey_dynamics - 1
+          itdkey = (act1 + 1) + act2*max1
+     &                      + act3*max1*max2
+     &                      + act4*max1*max2*max3
+#endif /* ALLOW_AUTODIFF_TAMC */
+
+C--   Set up work arrays with valid (i.e. not NaN) values
+C     These inital values do not alter the numerical results. They
+C     just ensure that all memory references are to valid floating
+C     point numbers. This prevents spurious hardware signals due to
+C     uninitialised but inert locations.
+        DO k=1,Nr
+         DO j=1-OLy,sNy+OLy
+          DO i=1-OLx,sNx+OLx
+C This is currently used by GMRedi, IVDC, MXL-depth  and Diagnostics
+           sigmaX(i,j,k) = 0. _d 0
+           sigmaY(i,j,k) = 0. _d 0
+           sigmaR(i,j,k) = 0. _d 0
+#if (defined (ALLOW_SIGMAR_COST_CONTRIBUTION) || defined (ALLOW_LEITH_QG))
+           sigmaRfield(i,j,k,bi,bj) = 0. _d 0
+#endif
+          ENDDO
+         ENDDO
+        ENDDO
+
+        DO j=1-OLy,sNy+OLy
+         DO i=1-OLx,sNx+OLx
+          rhoKm1 (i,j)   = 0. _d 0
+          rhoKp1 (i,j)   = 0. _d 0
+         ENDDO
+        ENDDO
+#ifdef ALLOW_AUTODIFF
+cph all the following init. are necessary for TAF
+cph although some of these are re-initialised later.
+        DO k=1,Nr
+         DO j=1-OLy,sNy+OLy
+          DO i=1-OLx,sNx+OLx
+           rhoInSitu(i,j,k,bi,bj) = 0.
+# ifdef ALLOW_GGL90
+           GGL90viscArU(i,j,k,bi,bj)  = 0. _d 0
+           GGL90viscArV(i,j,k,bi,bj)  = 0. _d 0
+           GGL90diffKr(i,j,k,bi,bj)  = 0. _d 0
+# endif /* ALLOW_GGL90 */
+# ifdef ALLOW_SALT_PLUME
+#  ifdef SALT_PLUME_VOLUME
+           SPforcingS(i,j,k,bi,bj) = 0. _d 0
+           SPforcingT(i,j,k,bi,bj) = 0. _d 0
+#  endif
+# endif /* ALLOW_SALT_PLUME */
+          ENDDO
+         ENDDO
+        ENDDO
+#ifdef ALLOW_OFFLINE
+       IF ( calcConvect ) THEN
+#endif
+        DO k=1,Nr
+         DO j=1-OLy,sNy+OLy
+          DO i=1-OLx,sNx+OLx
+           IVDConvCount(i,j,k,bi,bj) = 0.
+          ENDDO
+         ENDDO
+        ENDDO
+#ifdef ALLOW_OFFLINE
+       ENDIF
+       IF ( calcGMRedi ) THEN
+#endif
+# ifdef ALLOW_GMREDI
+        DO k=1,Nr
+         DO j=1-OLy,sNy+OLy
+          DO i=1-OLx,sNx+OLx
+           Kwx(i,j,k,bi,bj)  = 0. _d 0
+           Kwy(i,j,k,bi,bj)  = 0. _d 0
+           Kwz(i,j,k,bi,bj)  = 0. _d 0
+           Kux(i,j,k,bi,bj)  = 0. _d 0
+           Kvy(i,j,k,bi,bj)  = 0. _d 0
+#  ifdef GM_EXTRA_DIAGONAL
+           Kuz(i,j,k,bi,bj)  = 0. _d 0
+           Kvz(i,j,k,bi,bj)  = 0. _d 0
+#  endif
+#  ifdef GM_BOLUS_ADVEC
+           GM_PsiX(i,j,k,bi,bj)  = 0. _d 0
+           GM_PsiY(i,j,k,bi,bj)  = 0. _d 0
+#  endif
+#  ifdef GM_VISBECK_VARIABLE_K
+           VisbeckK(i,j,bi,bj)   = 0. _d 0
+#  endif
+          ENDDO
+         ENDDO
+        ENDDO
+# endif /* ALLOW_GMREDI */
+#ifdef ALLOW_OFFLINE
+       ENDIF
+       IF ( calcKPP ) THEN
+#endif
+# ifdef ALLOW_KPP
+        DO k=1,Nr
+         DO j=1-OLy,sNy+OLy
+          DO i=1-OLx,sNx+OLx
+           KPPdiffKzS(i,j,k,bi,bj)  = 0. _d 0
+           KPPdiffKzT(i,j,k,bi,bj)  = 0. _d 0
+          ENDDO
+         ENDDO
+        ENDDO
+# endif /* ALLOW_KPP */
+#ifdef ALLOW_OFFLINE
+       ENDIF
+#endif
+#endif /* ALLOW_AUTODIFF */
+
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE theta(:,:,:,bi,bj)  = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE salt (:,:,:,bi,bj)  = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE totphihyd(:,:,:,bi,bj)
+CADJ &                         = comlev1_bibj, key=itdkey, kind=isbyte
+# ifdef ALLOW_KPP
+CADJ STORE uvel (:,:,:,bi,bj)  = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE vvel (:,:,:,bi,bj)  = comlev1_bibj, key=itdkey, kind=isbyte
+# endif
+# ifdef ALLOW_SALT_PLUME
+CADJ STORE saltplumedepth(:,:,bi,bj)
+CADJ &                         = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE saltplumeflux(:,:,bi,bj)
+CADJ &                         = comlev1_bibj, key=itdkey, kind=isbyte
+# endif
+#endif /* ALLOW_AUTODIFF_TAMC */
+
+C--   Always compute density (stored in common block) here; even when it is not
+C     needed here, will be used anyway in calc_phi_hyd (data flow easier this way)
+#ifdef ALLOW_DEBUG
+        IF (debugMode) CALL DEBUG_CALL('FIND_RHO_2D (xNr)',myThid)
+#endif
+#ifdef ALLOW_AUTODIFF
+        IF ( fluidIsWater ) THEN
+#endif /* ALLOW_AUTODIFF */
+#ifdef ALLOW_DOWN_SLOPE
+         IF ( useDOWN_SLOPE ) THEN
+           DO k=1,Nr
+            CALL DWNSLP_CALC_RHO(
+     I                  theta, salt,
+     O                  rhoInSitu(1-OLx,1-OLy,k,bi,bj),
+     I                  k, bi, bj, myTime, myIter, myThid )
+           ENDDO
+         ENDIF
+#endif /* ALLOW_DOWN_SLOPE */
+#ifdef ALLOW_BBL
+         IF ( useBBL ) THEN
+C     pkg/bbl requires in-situ bbl density for depths equal to and deeper than the bbl.
+C     To reduce computation and storage requirement, these densities are stored in the
+C     dry grid boxes of rhoInSitu.  See BBL_CALC_RHO for details.
+           DO k=Nr,1,-1
+            CALL BBL_CALC_RHO(
+     I                  theta, salt,
+     O                  rhoInSitu,
+     I                  k, bi, bj, myTime, myIter, myThid )
+
+           ENDDO
+         ENDIF
+#endif /* ALLOW_BBL */
+         IF ( .NOT. ( useDOWN_SLOPE .OR. useBBL ) ) THEN
+           DO k=1,Nr
+            CALL FIND_RHO_2D(
+     I                iMin, iMax, jMin, jMax, k,
+     I                theta(1-OLx,1-OLy,k,bi,bj),
+     I                salt (1-OLx,1-OLy,k,bi,bj),
+     O                rhoInSitu(1-OLx,1-OLy,k,bi,bj),
+     I                k, bi, bj, myThid )
+           ENDDO
+         ENDIF
+#ifdef ALLOW_AUTODIFF
+        ELSE
+C-        fluid is not water:
+          DO k=1,Nr
+           IF ( select_rStar.GE.1 .OR. selectSigmaCoord.GE.1 ) THEN
+C-    isothermal (theta=const) reference state
+             thetaRef = thetaConst
+           ELSE
+C-    horizontally uniform (tRef) reference state
+             thetaRef = tRef(k)
+           ENDIF
+           DO j=1-OLy,sNy+OLy
+            DO i=1-OLx,sNx+OLx
+             rhoInSitu(i,j,k,bi,bj) =
+     &         ( theta(i,j,k,bi,bj)
+     &              *( salt(i,j,k,bi,bj)*atm_Rq + oneRL )
+     &         - thetaRef )*maskC(i,j,k,bi,bj)
+            ENDDO
+           ENDDO
+          ENDDO
+        ENDIF
+#endif /* ALLOW_AUTODIFF */
+
+#ifdef ALLOW_DEBUG
+        IF (debugMode) THEN
+          WRITE(msgBuf,'(A,2(I4,A))')
+     &         'ENTERING UPWARD K LOOP (bi=', bi, ', bj=', bj,')'
+          CALL DEBUG_MSG(msgBuf(1:43),myThid)
+        ENDIF
+#endif
+
+C--     Start of diagnostic loop
+        DO k=Nr,1,-1
+
+#ifdef ALLOW_AUTODIFF_TAMC
+C? Patrick, is this formula correct now that we change the loop range?
+C? Do we still need this?
+cph kkey formula corrected.
+cph Needed for rhoK, rhoKm1, in the case useGMREDI.
+          kkey = (itdkey-1)*Nr + k
+#endif /* ALLOW_AUTODIFF_TAMC */
+
+c#ifdef ALLOW_AUTODIFF_TAMC
+cCADJ STORE theta(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey,
+cCADJ &     kind = isbyte
+cCADJ STORE salt(:,:,k,bi,bj)  = comlev1_bibj_k, key=kkey,
+cCADJ &     kind = isbyte
+c#endif /* ALLOW_AUTODIFF_TAMC */
+
+C--       Calculate gradients of potential density for isoneutral
+C         slope terms (e.g. GM/Redi tensor or IVDC diffusivity)
+          IF ( calcGMRedi .OR. (k.GT.1 .AND. calcConvect)
+     &         .OR. usePP81 .OR. useKL10
+     &         .OR. useMY82 .OR. useGGL90
+     &         .OR. useSALT_PLUME .OR. doDiagsRho.GE.1 ) THEN
+            IF (k.GT.1) THEN
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE theta(:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey,kind=isbyte
+CADJ STORE salt (:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey,kind=isbyte
+CADJ STORE rhokm1 (bi,bj)       = comlev1_bibj_k, key=kkey,kind=isbyte
+#endif /* ALLOW_AUTODIFF_TAMC */
+             IF ( usingZCoords ) THEN
+              DO j=jMin,jMax
+               DO i=iMin,iMax
+                rhoKp1(i,j) = rhoInSitu(i,j,k,bi,bj)
+               ENDDO
+              ENDDO
+              CALL FIND_RHO_2D(
+     I                 iMin, iMax, jMin, jMax, k,
+     I                 theta(1-OLx,1-OLy,k-1,bi,bj),
+     I                 salt (1-OLx,1-OLy,k-1,bi,bj),
+     O                 rhoKm1,
+     I                 k-1, bi, bj, myThid )
+             ELSE
+              CALL FIND_RHO_2D(
+     I                 iMin, iMax, jMin, jMax, k-1,
+     I                 theta(1-OLx,1-OLy,k,bi,bj),
+     I                 salt (1-OLx,1-OLy,k,bi,bj),
+     O                 rhoKp1,
+     I                 k, bi, bj, myThid )
+              DO j=jMin,jMax
+               DO i=iMin,iMax
+                rhoKm1(i,j) = rhoInSitu(i,j,k-1,bi,bj)
+               ENDDO
+              ENDDO
+             ENDIF
+            ENDIF
+#ifdef ALLOW_DEBUG
+            IF (debugMode) CALL DEBUG_CALL('GRAD_SIGMA',myThid)
+#endif
+            CALL GRAD_SIGMA(
+     I             bi, bj, iMin, iMax, jMin, jMax, k,
+     I             rhoInSitu(1-OLx,1-OLy,k,bi,bj), rhoKm1, rhoKp1,
+     O             sigmaX, sigmaY, sigmaR,
+     I             myThid )
+
+#if (defined (ALLOW_SIGMAR_COST_CONTRIBUTION) || defined (ALLOW_LEITH_QG))
+            DO j=jMin,jMax
+             DO i=iMin,iMax
+              sigmaRfield(i,j,k,bi,bj)=sigmaR(i,j,k)
+             ENDDO
+            ENDDO
+#endif /* ALLOW_SIGMAR_COST_CONTRIBUTION or ALLOW_LEITH_QG */
+
+#ifdef ALLOW_AUTODIFF
+#ifdef GMREDI_WITH_STABLE_ADJOINT
+cgf zero out adjoint fields to stabilize pkg/gmredi adjoint
+cgf -> cuts adjoint dependency from slope to state
+            CALL ZERO_ADJ_LOC( Nr, sigmaX, myThid)
+            CALL ZERO_ADJ_LOC( Nr, sigmaY, myThid)
+            CALL ZERO_ADJ_LOC( Nr, sigmaR, myThid)
+#endif
+#endif /* ALLOW_AUTODIFF */
+          ENDIF
+
+C--       Implicit Vertical Diffusion for Convection
+          IF (k.GT.1 .AND. calcConvect) THEN
+#ifdef ALLOW_DEBUG
+            IF (debugMode) CALL DEBUG_CALL('CALC_IVDC',myThid)
+#endif
+            CALL CALC_IVDC(
+     I        bi, bj, iMin, iMax, jMin, jMax, k,
+     I        sigmaR,
+     I        myTime, myIter, myThid)
+          ENDIF
+
+#ifdef ALLOW_DIAGNOSTICS
+          IF ( doDiagsRho.GE.4 ) THEN
+            CALL DIAGS_RHO_L( doDiagsRho, k, bi, bj,
+     I                        rhoInSitu(1-OLx,1-OLy,1,bi,bj),
+     I                        rhoKm1, wVel,
+     I                        myTime, myIter, myThid )
+          ENDIF
+#endif
+
+C--     end of diagnostic k loop (Nr:1)
+        ENDDO
+
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE IVDConvCount(:,:,:,bi,bj)
+CADJ &     = comlev1_bibj, key=itdkey, kind=isbyte
+#endif
+
+C--     Diagnose Mixed Layer Depth:
+        IF ( calcGMRedi .OR. MOD(doDiagsRho,2).EQ.1 ) THEN
+          CALL CALC_OCE_MXLAYER(
+     I              rhoInSitu(1-OLx,1-OLy,kSrf,bi,bj), sigmaR,
+     I              bi, bj, myTime, myIter, myThid )
+        ENDIF
+
+#ifdef ALLOW_SALT_PLUME
+        IF ( useSALT_PLUME ) THEN
+          CALL SALT_PLUME_CALC_DEPTH(
+     I              rhoInSitu(1-OLx,1-OLy,kSrf,bi,bj), sigmaR,
+     I              bi, bj, myTime, myIter, myThid )
+#ifdef SALT_PLUME_VOLUME
+          CALL SALT_PLUME_VOLFRAC(
+     I              bi, bj, myTime, myIter, myThid )
+C-- get forcings for kpp
+          CALL SALT_PLUME_APPLY(
+     I              1, bi, bj, recip_hFacC(1-OLx,1-OLy,kSrf,bi,bj),
+     I              theta, 0,
+     I              myTime, myIter, myThid )
+          CALL SALT_PLUME_APPLY(
+     I              2, bi, bj, recip_hFacC(1-OLx,1-OLy,kSrf,bi,bj),
+     I              salt, 0,
+     I              myTime, myIter, myThid )
+C-- need to call this S/R from here to apply just before kpp
+          CALL SALT_PLUME_FORCING_SURF(
+     I              bi, bj, iMin, iMax, jMin, jMax,
+     I              myTime, myIter, myThid )
+#endif /* SALT_PLUME_VOLUME */
+        ENDIF
+#endif /* ALLOW_SALT_PLUME */
+
+#ifdef ALLOW_DIAGNOSTICS
+        IF ( MOD(doDiagsRho,4).GE.2 ) THEN
+          CALL DIAGNOSTICS_FILL (sigmaR, 'DRHODR  ', 0, Nr,
+     &         2, bi, bj, myThid)
+        ENDIF
+#endif /* ALLOW_DIAGNOSTICS */
+
+C--    This is where EXTERNAL_FORCING_SURF(bi,bj) used to be called;
+C      now called earlier, before bi,bj loop.
+
+#ifdef ALLOW_AUTODIFF_TAMC
+cph needed for KPP
+CADJ STORE surfaceForcingU(:,:,bi,bj)
+CADJ &     = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE surfaceForcingV(:,:,bi,bj)
+CADJ &     = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE surfaceForcingS(:,:,bi,bj)
+CADJ &     = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE surfaceForcingT(:,:,bi,bj)
+CADJ &     = comlev1_bibj, key=itdkey, kind=isbyte
+#endif /* ALLOW_AUTODIFF_TAMC */
+
+#ifdef  ALLOW_KPP
+C--     Compute KPP mixing coefficients
+        IF ( calcKPP ) THEN
+#ifdef ALLOW_DEBUG
+          IF (debugMode) CALL DEBUG_CALL('KPP_CALC',myThid)
+#endif
+          CALL TIMER_START('KPP_CALC [DO_OCEANIC_PHYS]', myThid)
+          CALL KPP_CALC(
+     I                  bi, bj, myTime, myIter, myThid )
+          CALL TIMER_STOP ('KPP_CALC [DO_OCEANIC_PHYS]', myThid)
+#if (defined ALLOW_AUTODIFF) && !(defined ALLOW_OFFLINE)
+        ELSE
+          CALL KPP_CALC_DUMMY(
+     I                  bi, bj, myTime, myIter, myThid )
+#endif /* ALLOW_AUTODIFF and not ALLOW_OFFLINE */
+        ENDIF
+#endif  /* ALLOW_KPP */
+
+#ifdef  ALLOW_PP81
+C--     Compute PP81 mixing coefficients
+        IF (usePP81) THEN
+#ifdef ALLOW_DEBUG
+          IF (debugMode) CALL DEBUG_CALL('PP81_CALC',myThid)
+#endif
+          CALL PP81_CALC(
+     I                     bi, bj, sigmaR, myTime, myIter, myThid )
+        ENDIF
+#endif /* ALLOW_PP81 */
+
+#ifdef  ALLOW_KL10
+C--     Compute KL10 mixing coefficients
+        IF (useKL10) THEN
+#ifdef ALLOW_DEBUG
+          IF (debugMode) CALL DEBUG_CALL('KL10_CALC',myThid)
+#endif
+          CALL KL10_CALC(
+     I                     bi, bj, sigmaR, myTime, myIter, myThid )
+        ENDIF
+#endif /* ALLOW_KL10 */
+
+#ifdef  ALLOW_MY82
+C--     Compute MY82 mixing coefficients
+        IF (useMY82) THEN
+#ifdef ALLOW_DEBUG
+          IF (debugMode) CALL DEBUG_CALL('MY82_CALC',myThid)
+#endif
+          CALL MY82_CALC(
+     I                     bi, bj, sigmaR, myTime, myIter, myThid )
+        ENDIF
+#endif /* ALLOW_MY82 */
+
+#ifdef  ALLOW_GGL90
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE GGL90TKE(:,:,:,bi,bj)
+CADJ &     = comlev1_bibj, key=itdkey, kind=isbyte
+#endif /* ALLOW_AUTODIFF_TAMC */
+C--     Compute GGL90 mixing coefficients
+        IF ( useGGL90 .AND. Nr.GT.1 ) THEN
+#ifdef ALLOW_DEBUG
+          IF (debugMode) CALL DEBUG_CALL('GGL90_CALC',myThid)
+#endif
+          CALL TIMER_START('GGL90_CALC [DO_OCEANIC_PHYS]', myThid)
+          CALL GGL90_CALC(
+     I                     bi, bj, sigmaR, myTime, myIter, myThid )
+          CALL TIMER_STOP ('GGL90_CALC [DO_OCEANIC_PHYS]', myThid)
+        ENDIF
+#endif /* ALLOW_GGL90 */
+
+#ifdef ALLOW_TIMEAVE
+        IF ( taveFreq.GT. 0. _d 0 ) THEN
+          CALL TIMEAVE_SURF_FLUX( bi, bj, myTime, myIter, myThid)
+        ENDIF
+        IF ( taveFreq.GT.0. .AND. calcConvect ) THEN
+          CALL TIMEAVE_CUMULATE(ConvectCountTave, IVDConvCount,
+     I                           Nr, deltaTClock, bi, bj, myThid)
+        ENDIF
+#endif /* ALLOW_TIMEAVE */
+
+#ifdef ALLOW_GMREDI
+#ifdef ALLOW_AUTODIFF_TAMC
+# ifndef GM_EXCLUDE_CLIPPING
+cph storing here is needed only for one GMREDI_OPTIONS:
+cph define GM_BOLUS_ADVEC
+cph keep it although TAF says you dont need to.
+cph but I have avoided the #ifdef for now, in case more things change
+CADJ STORE sigmaX(:,:,:)       = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE sigmaY(:,:,:)       = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE sigmaR(:,:,:)       = comlev1_bibj, key=itdkey, kind=isbyte
+# endif
+#endif /* ALLOW_AUTODIFF_TAMC */
+
+C--     Calculate iso-neutral slopes for the GM/Redi parameterisation
+        IF ( calcGMRedi ) THEN
+#ifdef ALLOW_DEBUG
+          IF (debugMode) CALL DEBUG_CALL('GMREDI_CALC_TENSOR',myThid)
+#endif
+          CALL GMREDI_CALC_TENSOR(
+     I             iMin, iMax, jMin, jMax,
+     I             sigmaX, sigmaY, sigmaR,
+     I             bi, bj, myTime, myIter, myThid )
+#if (defined ALLOW_AUTODIFF) && !(defined ALLOW_OFFLINE)
+        ELSE
+          CALL GMREDI_CALC_TENSOR_DUMMY(
+     I             iMin, iMax, jMin, jMax,
+     I             sigmaX, sigmaY, sigmaR,
+     I             bi, bj, myTime, myIter, myThid )
+#endif /* ALLOW_AUTODIFF and not ALLOW_OFFLINE */
+        ENDIF
+#endif /* ALLOW_GMREDI */
+
+#ifdef ALLOW_DOWN_SLOPE
+        IF ( useDOWN_SLOPE ) THEN
+C--     Calculate Downsloping Flow for Down_Slope parameterization
+         IF ( usingPCoords ) THEN
+          CALL DWNSLP_CALC_FLOW(
+     I                bi, bj, kSurfC, rhoInSitu,
+     I                myTime, myIter, myThid )
+         ELSE
+          CALL DWNSLP_CALC_FLOW(
+     I                bi, bj, kLowC, rhoInSitu,
+     I                myTime, myIter, myThid )
+         ENDIF
+        ENDIF
+#endif /* ALLOW_DOWN_SLOPE */
+
+C--   end bi,bj loops.
+       ENDDO
+      ENDDO
+
+#ifndef ALLOW_AUTODIFF
+C---  if fluid Is Water: end
+      ENDIF
+#endif
+
+#ifdef ALLOW_OFFLINE
+      IF ( useOffLine ) THEN
+#ifdef ALLOW_DEBUG
+        IF (debugMode) CALL DEBUG_CALL('OFFLINE_GET_DIFFUS',myThid)
+#endif /* ALLOW_DEBUG */
+        CALL OFFLINE_GET_DIFFUS( myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_OFFLINE */
+
+#ifdef ALLOW_BBL
+      IF ( useBBL ) THEN
+       CALL BBL_CALC_RHS(
+     I                          myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_BBL */
+
+#ifdef ALLOW_MYPACKAGE
+      IF ( useMYPACKAGE ) THEN
+       CALL MYPACKAGE_CALC_RHS(
+     I                          myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_MYPACKAGE */
+
+#ifdef ALLOW_GMREDI
+      IF ( calcGMRedi ) THEN
+        CALL GMREDI_DO_EXCH( myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_GMREDI */
+
+#ifdef ALLOW_KPP
+      IF ( calcKPP ) THEN
+        CALL KPP_DO_EXCH( myThid )
+      ENDIF
+#endif /* ALLOW_KPP */
+
+#ifdef ALLOW_GGL90
+      IF ( useGGL90 )
+     &  CALL GGL90_EXCHANGES( myThid )
+#endif /* ALLOW_GGL90 */
+
+#ifdef ALLOW_DIAGNOSTICS
+      IF ( fluidIsWater .AND. useDiagnostics ) THEN
+        CALL DIAGS_RHO_G(
+     I                    rhoInSitu, uVel, vVel, wVel,
+     I                    myTime, myIter, myThid )
+      ENDIF
+      IF ( useDiagnostics ) THEN
+        CALL DIAGS_OCEANIC_SURF_FLUX( myTime, myIter, myThid )
+      ENDIF
+      IF ( calcConvect .AND. useDiagnostics ) THEN
+        CALL DIAGNOSTICS_FILL( IVDConvCount, 'CONVADJ ',
+     &                               0, Nr, 0, 1, 1, myThid )
+      ENDIF
+#ifdef ALLOW_SALT_PLUME
+      IF ( useDiagnostics )
+     &      CALL SALT_PLUME_DIAGNOSTICS_FILL(bi,bj,myThid)
+#endif
+#endif
+
+#ifdef ALLOW_DEBUG
+      IF (debugMode) CALL DEBUG_LEAVE('DO_OCEANIC_PHYS',myThid)
+#endif
+
+      RETURN
+      END
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/eeboot_minimal.F
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/eeboot_minimal.F	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/eeboot_minimal.F	(revision 27955)
@@ -0,0 +1,328 @@
+#include "PACKAGES_CONFIG.h"
+#include "CPP_EEOPTIONS.h"
+
+CBOP
+C     !ROUTINE: EEBOOT_MINIMAL
+
+C     !INTERFACE:
+      SUBROUTINE EEBOOT_MINIMAL( myComm )
+
+C     !DESCRIPTION:
+C     *==========================================================*
+C     | SUBROUTINE EEBOOT\_MINIMAL
+C     | o Set an initial environment that is predictable i.e.
+C     | behaves in a similar way on all machines and stable.
+C     *==========================================================*
+C     | Under MPI this routine calls MPI\_INIT to setup the
+C     | mpi environment ( on some systems the code is running as
+C     | a single process prior to MPI\_INIT, on others the mpirun
+C     | script has already created multiple processes). Until
+C     | MPI\_Init is called it is unclear what state the
+C     | application is in. Once this routine has been run it is
+C     | "safe" to do things like I/O to report erros and to get
+C     | run parameters.
+C     | Note: This routine can also be compiled with CPP
+C     | directives set so that no multi-processing is initialise.
+C     | This is OK and will work fine.
+C     *==========================================================*
+
+C     !USES:
+      IMPLICIT NONE
+C     == Global data ==
+#include "SIZE.h"
+#include "EEPARAMS.h"
+#include "EESUPPORT.h"
+
+C     !ROUTINE ARGUMENTS
+C     == Routine arguments ==
+C     myComm     :: Communicator that is passed down from
+C                   upper level driver (if there is one).
+      INTEGER myComm
+
+C     !FUNCTIONS:
+c     INTEGER  IFNBLNK
+c     EXTERNAL IFNBLNK
+      INTEGER  ILNBLNK
+      EXTERNAL ILNBLNK
+
+C     !LOCAL VARIABLES:
+C     == Local variables ==
+C     myThid     :: Temp. dummy thread number.
+C     fNam       :: Used to build file name for standard and error output.
+C     msgBuf     :: Used to build messages for printing.
+      INTEGER myThid
+#ifdef USE_PDAF
+      CHARACTER*18 fNam
+#else
+      CHARACTER*13 fNam
+#endif /* USE_PDAF */
+      CHARACTER*(MAX_LEN_MBUF) msgBuf
+#ifdef ALLOW_USE_MPI
+C     mpiRC      :: Error code reporting variable used with MPI.
+      INTEGER mpiRC
+      INTEGER mpiIsInitialized
+      LOGICAL doReport
+#if defined(ALLOW_OASIS) || defined(COMPONENT_MODULE)
+      INTEGER mpiMyWId
+#elif defined(ALLOW_NEST2W_COMMON)
+      INTEGER mpiMyWId
+#endif
+#ifdef ALLOW_CPL_ISSM
+      COMMON /CPL_MPI_ID/ mpiMyWid, toissmcomm
+      INTEGER             mpiMyWid, toissmcomm
+      INTEGER my_local_rank,my_local_size, numprocsworld
+      INTEGER status(MPI_STATUS_SIZE)
+#endif /* ALLOW_CPL_ISSM */
+#if defined(ALLOW_NEST_PARENT) || defined(ALLOW_NEST_CHILD)
+      INTEGER mpiMyWId, color
+#endif
+#ifdef USE_PDAF
+      INTEGER mpi_task_id
+      CHARACTER*(14) fmtStr
+#else
+      CHARACTER*(6) fmtStr
+#endif /* USE_PDAF */
+      INTEGER iTmp
+#endif /* ALLOW_USE_MPI */
+CEOP
+
+C--   Default values set to single processor case
+      numberOfProcs = 1
+      myProcId      = 0
+      pidIO         = myProcId
+      myProcessStr  = '------'
+C     Set a dummy value for myThid because we are not multi-threading yet.
+      myThid        = 1
+
+C     Annoyingly there is no universal way to have the usingMPI
+C     parameter work as one might expect. This is because, on some
+C     systems I/O does not work until MPI_Init has been called.
+C     The solution for now is that the parameter below may need to
+C     be changed manually!
+#ifdef ALLOW_USE_MPI
+      usingMPI = .TRUE.
+#else
+      usingMPI = .FALSE.
+#endif
+
+      IF ( .NOT.usingMPI ) THEN
+
+        WRITE(myProcessStr,'(I4.4)') myProcId
+        WRITE(fNam,'(A,A)') 'STDERR.', myProcessStr(1:4)
+        OPEN(errorMessageUnit,FILE=fNam,STATUS='unknown')
+c       WRITE(fNam,'(A,A)') 'STDOUT.', myProcessStr(1:4)
+c       OPEN(standardMessageUnit,FILE=fNam,STATUS='unknown')
+
+#ifdef ALLOW_USE_MPI
+      ELSE
+C--   MPI style multiple-process initialisation
+C--   =========================================
+
+       CALL MPI_Initialized( mpiIsInitialized, mpiRC )
+
+       IF ( mpiIsInitialized .EQ. 0 ) THEN
+C--     Initialise MPI multi-process parallel environment.
+C       On some systems program forks at this point. Others have already
+C       forked within mpirun - now thats an open standard!
+        CALL MPI_INIT( mpiRC )
+        IF ( mpiRC .NE. MPI_SUCCESS ) THEN
+         eeBootError = .TRUE.
+         WRITE(msgBuf,'(A,I5)')
+     &        'EEBOOT_MINIMAL: MPI_INIT return code', mpiRC
+         CALL PRINT_ERROR( msgBuf, myThid )
+         GOTO 999
+        ENDIF
+
+C--     MPI has now been initialized ; now we need to either
+C       ask for a communicator or pretend that we have:
+C       Pretend that we have asked for a communicator
+        MPI_COMM_MODEL = MPI_COMM_WORLD
+
+       ELSE
+C--     MPI was already initialized and communicator has been passed
+C       down from upper level driver
+        MPI_COMM_MODEL = myComm
+
+       ENDIF
+
+       doReport = .FALSE.
+#ifdef USE_PDAF
+C     initialize PDAF
+C     for more output increase second parameter from 1 to 2
+       CALL INIT_PARALLEL_PDAF(0, 1, MPI_COMM_MODEL, MPI_COMM_MODEL,
+     &      mpi_task_id)
+#endif /* USE_PDAF */
+
+#ifdef ALLOW_OASIS
+C      add a 1rst preliminary call EESET_PARAMS to set useOASIS
+C      (needed to decide either to call OASIS_INIT or not)
+       CALL MPI_COMM_RANK( MPI_COMM_WORLD, mpiMyWId, mpiRC )
+       CALL EESET_PARMS ( mpiMyWId, doReport )
+       IF ( useOASIS ) CALL OASIS_INIT(MPI_COMM_MODEL)
+#endif /* ALLOW_OASIS */
+
+#ifdef COMPONENT_MODULE
+C--    Set the running directory
+       CALL MPI_COMM_RANK( MPI_COMM_WORLD, mpiMyWId, mpiRC )
+       CALL SETDIR( mpiMyWId )
+
+C- jmc: test:
+C      add a 1rst preliminary call EESET_PARAMS to set useCoupler
+C      (needed to decide either to call CPL_INIT or not)
+       CALL EESET_PARMS ( mpiMyWId, doReport )
+C- jmc: test end ; otherwise, uncomment next line:
+c      useCoupler = .TRUE.
+
+C--    Ask coupler interface for a communicator
+       IF ( useCoupler) CALL CPL_INIT
+#endif /* COMPONENT_MODULE */
+
+C--    Case with Nest(ing)
+#if defined(ALLOW_NEST_PARENT) || defined(ALLOW_NEST_CHILD)
+C--    Set the running directory
+       CALL MPI_COMM_RANK( MPI_COMM_WORLD, mpiMyWId, mpiRC )
+       CALL SETDIR( mpiMyWId )
+
+C--    Setup Nesting Execution Environment
+       CALL NEST_EEINIT( mpiMyWId, color )
+#endif /* ALLOW_NEST_PARENT | ALLOW_NEST_CHILD */
+
+#ifdef ALLOW_NEST2W_COMMON
+C--    Case with 2-Ways Nest(ing)
+C-     Set the running directory
+       CALL MPI_COMM_RANK( MPI_COMM_WORLD, mpiMyWId, mpiRC )
+       CALL SETDIR( mpiMyWId )
+
+C-     Setup Nesting Execution Environment
+       CALL NEST2W_EEINIT( mpiMyWId )
+       IF ( eeBootError ) GOTO 999
+#endif /* ALLOW_NEST2W_COMMON */
+
+#ifdef ALLOW_CPL_ISSM
+C     add a 1rst preliminary call EESET_PARAMS to set useCoupler
+       CALL MPI_COMM_RANK(MPI_COMM_WORLD, mpiMyWid, mpiRC)
+       CALL EESET_PARMS ( mpiMyWId, doReport )
+
+       IF ( useCoupler ) THEN
+          CALL MPI_COMM_SIZE(MPI_COMM_WORLD, numprocsworld, mpiRC)
+
+c     Split world into sub-communicators for each and every model:*/
+          CALL MPI_COMM_SPLIT(MPI_COMM_WORLD,1,MPIMYWID,
+     &         MPI_COMM_MODEL,mpiRC)
+
+          print*,'Oc My global rank',mpiMyWid
+          print*,'Oc My world size:',numprocsworld
+
+          CALL MPI_INTERCOMM_CREATE(MPI_COMM_MODEL,0,MPI_COMM_WORLD,
+     &         0,0,toissmcomm,mpiRC)
+
+          CALL MPI_COMM_RANK(MPI_COMM_MODEL, my_local_rank, mpiRC)
+          CALL MPI_COMM_SIZE(MPI_COMM_MODEL, my_local_size, mpiRC)
+
+          print*,'Oc My global rank',mpiMyWid,'MyLocal rank: ',
+     &         my_local_rank
+          print*,'Oc My world size:',numprocsworld,'My local size: ',
+     &         my_local_size
+       ENDIF
+#endif /* ALLOW_CPL_ISSM */
+
+C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
+
+C--    Get my process number
+       CALL MPI_COMM_RANK( MPI_COMM_MODEL, mpiMyId, mpiRC )
+       IF ( mpiRC .NE. MPI_SUCCESS ) THEN
+        eeBootError = .TRUE.
+        WRITE(msgBuf,'(A,I5)')
+     &        'EEBOOT_MINIMAL: MPI_COMM_RANK return code', mpiRC
+        CALL PRINT_ERROR( msgBuf, myThid )
+        GOTO 999
+       ENDIF
+       myProcId = mpiMyId
+       iTmp = MAX(4,1 + INT(LOG10(DFLOAT(nPx*nPy))))
+#ifdef USE_PDAF
+       WRITE(fmtStr,'(4(A,I1),A)')
+     &      '(I',iTmp,'.',iTmp,',A1,I',iTmp,'.',iTmp,')'
+       WRITE(myProcessStr,fmtStr) mpi_task_id,'.',myProcId
+#else
+       WRITE(fmtStr,'(2(A,I1),A)') '(I',iTmp,'.',iTmp,')'
+       WRITE(myProcessStr,fmtStr) myProcId
+#endif /* USE_PDAF */
+       iTmp = ILNBLNK( myProcessStr )
+       mpiPidIo = myProcId
+       pidIO    = mpiPidIo
+       IF ( mpiPidIo .EQ. myProcId ) THEN
+#ifdef SINGLE_DISK_IO
+        IF( myProcId .EQ. 0 ) THEN
+#endif
+         WRITE(fNam,'(A,A)') 'STDERR.', myProcessStr(1:iTmp)
+         OPEN(errorMessageUnit,FILE=fNam,STATUS='unknown')
+         WRITE(fNam,'(A,A)') 'STDOUT.', myProcessStr(1:iTmp)
+         OPEN(standardMessageUnit,FILE=fNam,STATUS='unknown')
+#ifdef SINGLE_DISK_IO
+        ELSE
+         OPEN(errorMessageUnit,FILE='/dev/null',STATUS='unknown')
+         standardMessageUnit=errorMessageUnit
+        ENDIF
+        IF( myProcId .EQ. 0 ) THEN
+          WRITE(msgBuf,'(2A)') '** WARNING ** EEBOOT_MINIMAL: ',
+     &     'defined SINGLE_DISK_IO will result in losing'
+          CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
+     &                        SQUEEZE_RIGHT, myThid )
+          WRITE(msgBuf,'(2A)') '** WARNING ** EEBOOT_MINIMAL: ',
+     &     'any message (error/warning) from any proc <> 0'
+          CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
+     &                        SQUEEZE_RIGHT, myThid )
+        ENDIF
+#endif
+       ENDIF
+
+#if defined(ALLOW_NEST_PARENT) || defined(ALLOW_NEST_CHILD)
+       WRITE(standardMessageUnit,'(2(A,I6))')
+     &           ' mpiMyWId =', mpiMyWId, ' , color =',color
+#endif /* ALLOW_NEST_PARENT | ALLOW_NEST_CHILD */
+
+C--    Synchronise all processes
+C      Strictly this is superfluous, but by using it we can guarantee to
+C      find out about processes that did not start up.
+       CALL MPI_BARRIER( MPI_COMM_MODEL, mpiRC )
+       IF ( mpiRC .NE. MPI_SUCCESS ) THEN
+        eeBootError = .TRUE.
+        WRITE(msgBuf,'(A,I6)')
+     &        'EEBOOT_MINIMAL: MPI_BARRIER return code', mpiRC
+        CALL PRINT_ERROR( msgBuf, myThid )
+        GOTO 999
+       ENDIF
+
+C--    Get number of MPI processes
+       CALL MPI_COMM_SIZE ( MPI_COMM_MODEL, mpiNProcs, mpiRC )
+       IF ( mpiRC .NE. MPI_SUCCESS ) THEN
+        eeBootError = .TRUE.
+        WRITE(msgBuf,'(A,I6)')
+     &        'EEBOOT_MINIMAL: MPI_COMM_SIZE return code', mpiRC
+        CALL PRINT_ERROR( msgBuf, myThid )
+        GOTO 999
+       ENDIF
+       numberOfProcs = mpiNProcs
+
+#endif /* ALLOW_USE_MPI */
+      ENDIF
+
+C--    Under MPI only allow same number of processes as proc grid size.
+C      Strictly we are allowed more procs but knowing there
+C      is an exact match makes things easier.
+       IF ( numberOfProcs .NE. nPx*nPy ) THEN
+        eeBootError = .TRUE.
+        WRITE(msgBuf,'(2(A,I6))')
+     &  'EEBOOT_MINIMAL: No. of procs=', numberOfProcs,
+     &  ' not equal to nPx*nPy=', nPx*nPy
+        CALL PRINT_ERROR( msgBuf, myThid )
+        GOTO 999
+       ENDIF
+
+#ifdef USE_LIBHPM
+       CALL F_HPMINIT(myProcId, "mitgcmuv")
+#endif
+
+ 999  CONTINUE
+      RETURN
+      END
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/eedie.F
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/eedie.F	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/eedie.F	(revision 27955)
@@ -0,0 +1,107 @@
+#include "CPP_EEOPTIONS.h"
+#ifdef USE_LIBHPM
+# include "f_hpm.h"
+#endif
+
+CBOP
+      SUBROUTINE EEDIE
+C     *==========================================================*
+C     | SUBROUTINE EEDIE                                         |
+C     | o Close execution "environment", particularly perform    |
+C     |   steps to terminate parallel processing.                |
+C     *==========================================================*
+C     | Note: This routine can also be compiled with CPP         |
+C     | directives set so that no multi-processing is initialised|
+C     | This is OK and should work fine.                         |
+C     *==========================================================*
+      IMPLICIT NONE
+
+C     == Global variables ==
+#include "SIZE.h"
+#include "EEPARAMS.h"
+#include "EESUPPORT.h"
+CEOP
+
+C     == Local variables ==
+C     msgBuf       :: I/O Buffer
+C     nThreadsDone :: Used to count number of completed threads.
+C     I            :: Loop counter.
+      CHARACTER*(MAX_LEN_MBUF) msgBuf
+      INTEGER nThreadsDone
+      INTEGER I
+#ifdef ALLOW_USE_MPI
+C     mpiRC        :: Error code reporting variable used with MPI.
+      INTEGER mpiRC
+#endif /* ALLOW_USE_MPI */
+
+      IF ( eeBootError ) THEN
+C--   Skip ended threads counting if earlier error was found
+        WRITE(msgBuf,'(2A)')
+     &   'EEDIE: earlier error in multi-proc/thread setting'
+        CALL PRINT_ERROR( msgBuf, 1 )
+        fatalError = .TRUE.
+
+      ELSE
+C--   Check that all the threads have ended
+C     No thread should reach this loop before all threads have set
+C     threadIsComplete to TRUE. If they do then either there is a bug
+C     in the code or the behaviour of the parallel compiler directives
+C     are not right for this code. In the latter case different
+C     directives may be available or the compiler itself may have a
+C     bug or you may need a different parallel compiler for main.F
+        nThreadsDone = 0
+        DO I = 1, nThreads
+         IF ( threadIsComplete(I) ) nThreadsDone = nThreadsDone+1
+        ENDDO
+        IF ( nThreadsDone .LT. nThreads ) THEN
+         WRITE(msgBuf,'(A,I5,A)')
+     &    'S/R EEDIE: Only',nThreadsDone,' threads have completed,'
+         CALL PRINT_ERROR( msgBuf, 1 )
+         WRITE(msgBuf,'(A,I5,A)')
+     &    'S/R EEDIE:',nThreads,' are expected for this config !'
+         CALL PRINT_ERROR( msgBuf, 1 )
+         eeEndError = .TRUE.
+         fatalError = .TRUE.
+        ENDIF
+
+C--   end if/else eebootError
+      ENDIF
+
+#ifdef USE_LIBHPM
+      CALL F_HPMTERMINATE(myProcId)
+#endif
+
+C--   Flush IO-unit before MPI termination
+      CALL MDS_FLUSH( errorMessageUnit, 1 )
+c#ifdef ALLOW_USE_MPI
+      CALL MDS_FLUSH( standardMessageUnit, 1 )
+c#endif /* ALLOW_USE_MPI */
+
+#ifdef ALLOW_USE_MPI
+C- Note: since MPI_INIT is always called, better to also always terminate MPI
+C        (even if usingMPI=F) --> comment out test on usingMPI
+c     IF ( usingMPI ) THEN
+
+C--   MPI style multiple-process termination
+C--   ======================================
+#if (defined COMPONENT_MODULE) || (defined ALLOW_CPL_ISSM)
+       IF ( useCoupler) CALL MPI_BARRIER( MPI_COMM_WORLD, mpiRC )
+#endif
+#ifdef ALLOW_OASIS
+       IF ( useOASIS ) CALL OASIS_FINALIZE
+#endif
+       CALL MPI_FINALIZE  ( mpiRC )
+       IF ( mpiRC .NE. MPI_SUCCESS ) THEN
+        eeEndError = .TRUE.
+        fatalError = .TRUE.
+        WRITE(msgBuf,'(A,I5)')
+     &       'S/R FIN_PROCS: MPI_FINALIZE return code',
+     &       mpiRC
+        CALL PRINT_ERROR( msgBuf, 1 )
+       ENDIF
+
+c     ENDIF
+#endif /* ALLOW_USE_MPI */
+
+      RETURN
+      END
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/packages.conf
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/packages.conf	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code/packages.conf	(revision 27955)
@@ -0,0 +1,6 @@
+#-- list of packages (or group of packages) to compile for this experiment:
+gfd
+obcs
+shelfice
+diagnostics
+timeave
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/CPP_EEOPTIONS.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/CPP_EEOPTIONS.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/CPP_EEOPTIONS.h	(revision 27955)
@@ -0,0 +1,161 @@
+CBOP
+C     !ROUTINE: CPP_EEOPTIONS.h
+C     !INTERFACE:
+C     include "CPP_EEOPTIONS.h"
+C
+C     !DESCRIPTION:
+C     *==========================================================*
+C     | CPP\_EEOPTIONS.h                                         |
+C     *==========================================================*
+C     | C preprocessor "execution environment" supporting        |
+C     | flags. Use this file to set flags controlling the        |
+C     | execution environment in which a model runs - as opposed |
+C     | to the dynamical problem the model solves.               |
+C     | Note: Many options are implemented with both compile time|
+C     |       and run-time switches. This allows options to be   |
+C     |       removed altogether, made optional at run-time or   |
+C     |       to be permanently enabled. This convention helps   |
+C     |       with the data-dependence analysis performed by the |
+C     |       adjoint model compiler. This data dependency       |
+C     |       analysis can be upset by runtime switches that it  |
+C     |       is unable to recoginise as being fixed for the     |
+C     |       duration of an integration.                        |
+C     |       A reasonable way to use these flags is to          |
+C     |       set all options as selectable at runtime but then  |
+C     |       once an experimental configuration has been        |
+C     |       identified, rebuild the code with the appropriate  |
+C     |       options set at compile time.                       |
+C     *==========================================================*
+CEOP
+
+#ifndef _CPP_EEOPTIONS_H_
+#define _CPP_EEOPTIONS_H_
+
+C     In general the following convention applies:
+C     ALLOW  - indicates an feature will be included but it may
+C     CAN      have a run-time flag to allow it to be switched
+C              on and off.
+C              If ALLOW or CAN directives are "undef'd" this generally
+C              means that the feature will not be available i.e. it
+C              will not be included in the compiled code and so no
+C              run-time option to use the feature will be available.
+C
+C     ALWAYS - indicates the choice will be fixed at compile time
+C              so no run-time option will be present
+
+C=== Macro related options ===
+C--   Control storage of floating point operands
+C     On many systems it improves performance only to use
+C     8-byte precision for time stepped variables.
+C     Constant in time terms ( geometric factors etc.. )
+C     can use 4-byte precision, reducing memory utilisation and
+C     boosting performance because of a smaller working set size.
+C     However, on vector CRAY systems this degrades performance.
+C     Enable to switch REAL4_IS_SLOW from genmake2 (with LET_RS_BE_REAL4):
+#ifdef LET_RS_BE_REAL4
+#undef REAL4_IS_SLOW
+#else /* LET_RS_BE_REAL4 */
+#define REAL4_IS_SLOW
+#endif /* LET_RS_BE_REAL4 */
+
+C--   Control use of "double" precision constants.
+C     Use D0 where it means REAL*8 but not where it means REAL*16
+#define D0 d0
+
+C=== IO related options ===
+C--   Flag used to indicate whether Fortran formatted write
+C     and read are threadsafe. On SGI the routines can be thread
+C     safe, on Sun it is not possible - if you are unsure then
+C     undef this option.
+#undef FMTFTN_IO_THREAD_SAFE
+
+C--   Flag used to indicate whether Binary write to Local file (i.e.,
+C     a different file for each tile) and read are thread-safe.
+#undef LOCBIN_IO_THREAD_SAFE
+
+C--   Flag to turn off the writing of error message to ioUnit zero
+#undef DISABLE_WRITE_TO_UNIT_ZERO
+
+C--   Alternative formulation of BYTESWAP, faster than
+C     compiler flag -byteswapio on the Altix.
+#undef FAST_BYTESWAP
+
+C--   Flag to turn on old default of opening scratch files with the
+C     STATUS='SCRATCH' option. This method, while perfectly FORTRAN-standard,
+C     caused filename conflicts on some multi-node/multi-processor platforms
+C     in the past and has been replace by something (hopefully) more robust.
+#undef USE_FORTRAN_SCRATCH_FILES
+
+C--   Flag defined for eeboot_minimal.F, eeset_parms.F and open_copy_data_file.F
+C     to write STDOUT, STDERR and scratch files from process 0 only.
+C WARNING: to use only when absolutely confident that the setup is working
+C     since any message (error/warning/print) from any proc <> 0 will be lost.
+#undef SINGLE_DISK_IO
+
+C=== MPI, EXCH and GLOBAL_SUM related options ===
+C--   Flag turns off MPI_SEND ready_to_receive polling in the
+C     gather_* subroutines to speed up integrations.
+#undef DISABLE_MPI_READY_TO_RECEIVE
+
+C--   Control MPI based parallel processing
+CXXX We no longer select the use of MPI via this file (CPP_EEOPTIONS.h)
+CXXX To use MPI, use an appropriate genmake2 options file or use
+CXXX genmake2 -mpi .
+CXXX #undef  ALLOW_USE_MPI
+
+C--   Control use of communication that might overlap computation.
+C     Under MPI selects/deselects "non-blocking" sends and receives.
+#define ALLOW_ASYNC_COMMUNICATION
+#undef  ALLOW_ASYNC_COMMUNICATION
+#undef  ALWAYS_USE_ASYNC_COMMUNICATION
+C--   Control use of communication that is atomic to computation.
+C     Under MPI selects/deselects "blocking" sends and receives.
+#define ALLOW_SYNC_COMMUNICATION
+#undef  ALWAYS_USE_SYNC_COMMUNICATION
+
+C--   Control XY periodicity in processor to grid mappings
+C     Note: Model code does not need to know whether a domain is
+C           periodic because it has overlap regions for every box.
+C           Model assume that these values have been
+C           filled in some way.
+#undef  ALWAYS_PREVENT_X_PERIODICITY
+#undef  ALWAYS_PREVENT_Y_PERIODICITY
+#define CAN_PREVENT_X_PERIODICITY
+#define CAN_PREVENT_Y_PERIODICITY
+
+C--   disconnect tiles (no exchange between tiles, just fill-in edges
+C     assuming locally periodic subdomain)
+#undef DISCONNECTED_TILES
+
+C--   Always cumulate tile local-sum in the same order by applying MPI allreduce
+C     to array of tiles ; can get slower with large number of tiles (big set-up)
+#define GLOBAL_SUM_ORDER_TILES
+
+C--   Alternative way of doing global sum without MPI allreduce call
+C     but instead, explicit MPI send & recv calls. Expected to be slower.
+#undef GLOBAL_SUM_SEND_RECV
+
+C--   Alternative way of doing global sum on a single CPU
+C     to eliminate tiling-dependent roundoff errors. Note: This is slow.
+#undef  CG2D_SINGLECPU_SUM
+
+C=== Other options (to add/remove pieces of code) ===
+C--   Flag to turn on checking for errors from all threads and procs
+C     (calling S/R STOP_IF_ERROR) before stopping.
+#define USE_ERROR_STOP
+
+C--   Control use of communication with other component:
+C     allow to import and export from/to Coupler interface.
+#undef COMPONENT_MODULE
+
+C--   Options used to couple MITgcm and ISSM
+C     Eventually this option can probably be merged with COMPONENT_MODULE
+#define ALLOW_CPL_ISSM
+
+C--   Activate some pieces of code for coupling to GEOS AGCM
+#undef HACK_FOR_GMAO_CPL
+
+#endif /* _CPP_EEOPTIONS_H_ */
+
+#include "CPP_EEMACROS.h"
+
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/CPP_OPTIONS.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/CPP_OPTIONS.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/CPP_OPTIONS.h	(revision 27955)
@@ -0,0 +1,139 @@
+#ifndef CPP_OPTIONS_H
+#define CPP_OPTIONS_H
+
+CBOP
+C !ROUTINE: CPP_OPTIONS.h
+C !INTERFACE:
+C #include "CPP_OPTIONS.h"
+
+C !DESCRIPTION:
+C *==================================================================*
+C | main CPP options file for the model:
+C | Control which optional features to compile in model/src code.
+C *==================================================================*
+CEOP
+
+C CPP flags controlling particular source code features
+
+C-- Forcing code options:
+
+C o Shortwave heating as extra term in external_forcing.F
+C Note: this should be a run-time option
+#define SHORTWAVE_HEATING
+
+C o Include/exclude Geothermal Heat Flux at the bottom of the ocean
+#undef ALLOW_GEOTHERMAL_FLUX
+
+C o Allow to account for heating due to friction (and momentum dissipation)
+#undef ALLOW_FRICTION_HEATING
+
+C o Allow mass source or sink of Fluid in the interior
+C   (3-D generalisation of oceanic real-fresh water flux)
+#undef ALLOW_ADDFLUID
+
+C o Include pressure loading code
+#define ATMOSPHERIC_LOADING
+
+C o Include/exclude balancing surface forcing fluxes code
+#undef ALLOW_BALANCE_FLUXES
+
+C o Include/exclude balancing surface forcing relaxation code
+#undef ALLOW_BALANCE_RELAX
+
+C o Include/exclude checking for negative salinity
+#undef CHECK_SALINITY_FOR_NEGATIVE_VALUES
+
+C-- Options to discard parts of the main code:
+
+C o Exclude/allow external forcing-fields load
+C   this allows to read & do simple linear time interpolation of oceanic
+C   forcing fields, if no specific pkg (e.g., EXF) is used to compute them.
+#undef EXCLUDE_FFIELDS_LOAD
+
+C o Include/exclude phi_hyd calculation code
+#define INCLUDE_PHIHYD_CALCULATION_CODE
+
+C-- Vertical mixing code options:
+
+C o Include/exclude call to S/R CONVECT
+#define INCLUDE_CONVECT_CALL
+
+C o Include/exclude call to S/R CALC_DIFFUSIVITY
+#define INCLUDE_CALC_DIFFUSIVITY_CALL
+
+C o Allow full 3D specification of vertical diffusivity
+#undef ALLOW_3D_DIFFKR
+
+C o Allow latitudinally varying BryanLewis79 vertical diffusivity
+#undef ALLOW_BL79_LAT_VARY
+
+C o Exclude/allow partial-cell effect (physical or enhanced) in vertical mixing
+C   this allows to account for partial-cell in vertical viscosity and diffusion,
+C   either from grid-spacing reduction effect or as artificially enhanced mixing
+C   near surface & bottom for too thin grid-cell
+#undef EXCLUDE_PCELL_MIX_CODE
+
+C-- Time-stepping code options:
+
+C o Include/exclude combined Surf.Pressure and Drag Implicit solver code
+#define ALLOW_SOLVE4_PS_AND_DRAG
+
+C o Include/exclude Implicit vertical advection code
+#define INCLUDE_IMPLVERTADV_CODE
+
+C o Include/exclude AdamsBashforth-3rd-Order code
+#undef ALLOW_ADAMSBASHFORTH_3
+
+C-- Model formulation options:
+
+C o Allow/exclude "Exact Convervation" of fluid in Free-Surface formulation
+C   that ensures that d/dt(eta) is exactly equal to - Div.Transport
+#define EXACT_CONSERV
+
+C o Allow the use of Non-Linear Free-Surface formulation
+C   this implies that grid-cell thickness (hFactors) varies with time
+#define NONLIN_FRSURF
+
+C o Include/exclude nonHydrostatic code
+#undef ALLOW_NONHYDROSTATIC
+
+C o Include/exclude GM-like eddy stress in momentum code
+#undef ALLOW_EDDYPSI
+
+C-- Algorithm options:
+
+C o Use Non Self-Adjoint (NSA) conjugate-gradient solver
+#undef ALLOW_CG2D_NSA
+
+C o Include/exclude code for single reduction Conjugate-Gradient solver
+#define ALLOW_SRCG
+
+C o Choices for implicit solver routines solve_*diagonal.F
+C   The following has low memory footprint, but not suitable for AD
+#define SOLVE_DIAGONAL_LOWMEMORY
+C   The following one suitable for AD but does not vectorize
+#undef SOLVE_DIAGONAL_KINNER
+
+C-- Retired code options:
+
+C o Use LONG.bin, LATG.bin, etc., initialization for ini_curviliear_grid.F
+C   Default is to use "new" grid files (OLD_GRID_IO undef) but OLD_GRID_IO
+C   is still useful with, e.g., single-domain curvilinear configurations.
+#undef OLD_GRID_IO
+
+C-- Other option files:
+
+C o Execution environment support options
+#include "CPP_EEOPTIONS.h"
+
+C o Include/exclude single header file containing multiple packages options
+C   (AUTODIFF, COST, CTRL, ECCO, EXF ...) instead of the standard way where
+C   each of the above pkg get its own options from its specific option file.
+C   Although this method, inherited from ECCO setup, has been traditionally
+C   used for all adjoint built, work is in progress to allow to use the
+C   standard method also for adjoint built.
+c#ifdef PACKAGES_CONFIG_H
+c# include "ECCO_CPPOPTIONS.h"
+c#endif
+
+#endif /* CPP_OPTIONS_H */
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/DIAGNOSTICS_SIZE.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/DIAGNOSTICS_SIZE.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/DIAGNOSTICS_SIZE.h	(revision 27955)
@@ -0,0 +1,27 @@
+C     Diagnostics Array Dimension
+C     ---------------------------
+C     ndiagMax   :: maximum total number of available diagnostics
+C     numlists   :: maximum number of diagnostics list (in data.diagnostics)
+C     numperlist :: maximum number of active diagnostics per list (data.diagnostics)
+C     numLevels  :: maximum number of levels to write    (data.diagnostics)
+C     numDiags   :: maximum size of the storage array for active 2D/3D diagnostics
+C     nRegions   :: maximum number of regions (statistics-diagnostics)
+C     sizRegMsk  :: maximum size of the regional-mask (statistics-diagnostics)
+C     nStats     :: maximum number of statistics (e.g.: aver,min,max ...)
+C     diagSt_size:: maximum size of the storage array for statistics-diagnostics
+C Note : may need to increase "numDiags" when using several 2D/3D diagnostics,
+C  and "diagSt_size" (statistics-diags) since values here are deliberately small.
+      INTEGER    ndiagMax
+      INTEGER    numlists, numperlist, numLevels
+      INTEGER    numDiags
+      INTEGER    nRegions, sizRegMsk, nStats
+      INTEGER    diagSt_size
+      PARAMETER( ndiagMax = 500 )
+      PARAMETER( numlists = 10, numperlist = 50, numLevels=2*Nr )
+      PARAMETER( numDiags = 20*Nr )
+      PARAMETER( nRegions = 2 , sizRegMsk = 1 , nStats = 4 )
+      PARAMETER( diagSt_size = 10*Nr )
+
+CEH3 ;;; Local Variables: ***
+CEH3 ;;; mode:fortran ***
+CEH3 ;;; End: ***
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/DIAG_OPTIONS.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/DIAG_OPTIONS.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/DIAG_OPTIONS.h	(revision 27955)
@@ -0,0 +1,25 @@
+#ifndef DIAG_OPTIONS_H
+#define DIAG_OPTIONS_H
+#include "PACKAGES_CONFIG.h"
+#include "CPP_OPTIONS.h"
+
+#ifdef ALLOW_DIAGNOSTICS
+C     Package-specific Options & Macros go here
+
+C allow to define specific regions and the corresponding mask ;
+C  used to perform regional statistics over a limited area
+#define DIAGSTATS_REGION_MASK
+
+C allow to stop & restart at any time (i.e. not at a multiple of
+C  the diagnostics frequency) reading diagnostics storage arrays
+C  from pickup file.
+C Note: Use with cautious since it does not work for all restart
+C  cases (e.g., changing data.diagnostics).
+#undef  DIAGNOSTICS_HAS_PICKUP
+
+#endif /* ALLOW_DIAGNOSTICS */
+#endif /* DIAG_OPTIONS_H */
+
+CEH3 ;;; Local Variables: ***
+CEH3 ;;; mode:fortran ***
+CEH3 ;;; End: ***
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/OBCS_OPTIONS.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/OBCS_OPTIONS.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/OBCS_OPTIONS.h	(revision 27955)
@@ -0,0 +1,70 @@
+C CPP options file for OBCS package
+C Use this file for selecting options within the OBCS package
+
+#ifndef OBCS_OPTIONS_H
+#define OBCS_OPTIONS_H
+#include "PACKAGES_CONFIG.h"
+#include "CPP_OPTIONS.h"
+
+#ifdef ALLOW_OBCS
+C Package-specific Options & Macros go here
+
+C Enable individual open boundaries
+#define ALLOW_OBCS_NORTH
+#undef ALLOW_OBCS_SOUTH
+#undef ALLOW_OBCS_EAST
+#undef ALLOW_OBCS_WEST
+
+C This include hooks to the Orlanski Open Boundary Radiation code
+#undef ALLOW_ORLANSKI
+
+C Enable OB values to be prescribed via external fields that are read
+C from a file
+#define ALLOW_OBCS_PRESCRIBE
+
+C Enable OB conditions following Stevens (1990)
+#undef ALLOW_OBCS_STEVENS
+
+C Allow sponge layer treatment of open boundary conditions
+#define ALLOW_OBCS_SPONGE
+
+C Include hooks to sponge layer treatment of pkg/seaice variables
+#undef ALLOW_OBCS_SEAICE_SPONGE
+
+C balance barotropic velocity
+#define ALLOW_OBCS_BALANCE
+
+C add tidal contributions to normal OB flow
+C NOTE that at the moment tidal forcing is applied
+C only to "normal" flow.
+#undef ALLOW_OBCS_TIDES
+
+C Use older implementation of obcs in seaice-dynamics
+C note: most of the "experimental" options listed below have not yet
+C       been implementated in new version.
+#undef OBCS_UVICE_OLD
+
+#ifdef OBCS_UVICE_OLD
+C     The following five CPP options are experimental and aim to deal
+C     with artifacts due to the low-frequency specification of sea-ice
+C     boundary conditions compared to the model forcing frequency.
+C     Ice convergence at edges can cause model to blow up.  The
+C     following CPP option fixes this problem at the expense of less
+C     accurate boundary conditions.
+#undef OBCS_SEAICE_AVOID_CONVERGENCE
+
+C     Smooth the component of sea-ice velocity perpendicular to the edge.
+#undef OBCS_SEAICE_SMOOTH_UVICE_PERP
+
+C     Smooth the component of sea ice velocity parallel to the edge.
+#undef OBCS_SEAICE_SMOOTH_UVICE_PAR
+
+C     Compute rather than specify seaice velocities at the edges.
+#undef OBCS_SEAICE_COMPUTE_UVICE
+#endif /* OBCS_UVICE_OLD */
+
+C     Smooth the tracer sea-ice variables near the edges.
+#undef OBCS_SEAICE_SMOOTH_EDGE
+
+#endif /* ALLOW_OBCS */
+#endif /* OBCS_OPTIONS_H */
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/SHELFICE_OPTIONS.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/SHELFICE_OPTIONS.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/SHELFICE_OPTIONS.h	(revision 27955)
@@ -0,0 +1,31 @@
+C     *==========================================================*
+C     | SHELFICE_OPTIONS.h
+C     | o CPP options file for SHELFICE package.
+C     *==========================================================*
+C     | Use this file for selecting options within the SHELFICE
+C     | package.
+C     *==========================================================*
+
+#ifndef SHELFICE_OPTIONS_H
+#define SHELFICE_OPTIONS_H
+#include "PACKAGES_CONFIG.h"
+#include "CPP_OPTIONS.h"
+
+#ifdef ALLOW_SHELFICE
+C     Package-specific Options & Macros go here
+
+C     allow code for simple ISOMIP thermodynamics
+#undef ALLOW_ISOMIP_TD
+
+C     allow friction velocity-dependent transfer coefficient
+C     following Holland and Jenkins, JPO, 1999
+#define SHI_ALLOW_GAMMAFRICT
+
+C     allow (vertical) remeshing whenever ocean top thickness factor
+C     exceeds thresholds
+#define ALLOW_SHELFICE_REMESHING
+C     and allow to print message to STDOUT when this happens
+#define SHELFICE_REMESH_PRINT
+
+#endif /* ALLOW_SHELFICE */
+#endif /* SHELFICE_OPTIONS_H */
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/SIZE.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/SIZE.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/SIZE.h	(revision 27955)
@@ -0,0 +1,64 @@
+CBOP
+C    !ROUTINE: SIZE.h
+C    !INTERFACE:
+C    include SIZE.h
+C    !DESCRIPTION: \bv
+C     *==========================================================*
+C     | SIZE.h Declare size of underlying computational grid.
+C     *==========================================================*
+C     | The design here supports a three-dimensional model grid
+C     | with indices I,J and K. The three-dimensional domain
+C     | is comprised of nPx*nSx blocks (or tiles) of size sNx
+C     | along the first (left-most index) axis, nPy*nSy blocks
+C     | of size sNy along the second axis and one block of size
+C     | Nr along the vertical (third) axis.
+C     | Blocks/tiles have overlap regions of size OLx and OLy
+C     | along the dimensions that are subdivided.
+C     *==========================================================*
+C     \ev
+C
+C     Voodoo numbers controlling data layout:
+C     sNx :: Number of X points in tile.
+C     sNy :: Number of Y points in tile.
+C     OLx :: Tile overlap extent in X.
+C     OLy :: Tile overlap extent in Y.
+C     nSx :: Number of tiles per process in X.
+C     nSy :: Number of tiles per process in Y.
+C     nPx :: Number of processes to use in X.
+C     nPy :: Number of processes to use in Y.
+C     Nx  :: Number of points in X for the full domain.
+C     Ny  :: Number of points in Y for the full domain.
+C     Nr  :: Number of points in vertical direction.
+CEOP
+      INTEGER sNx
+      INTEGER sNy
+      INTEGER OLx
+      INTEGER OLy
+      INTEGER nSx
+      INTEGER nSy
+      INTEGER nPx
+      INTEGER nPy
+      INTEGER Nx
+      INTEGER Ny
+      INTEGER Nr
+      PARAMETER (
+     &           sNx =   3,
+     &           sNy =  25,
+     &           OLx =   3,
+     &           OLy =   3,
+     &           nSx =   1,
+     &           nSy =   1,
+     &           nPx =   1,
+     &           nPy =   8,
+     &           Nx  = sNx*nSx*nPx,
+     &           Ny  = sNy*nSy*nPy,
+     &           Nr  =  90)
+
+C     MAX_OLX :: Set to the maximum overlap region size of any array
+C     MAX_OLY    that will be exchanged. Controls the sizing of exch
+C                routine buffers.
+      INTEGER MAX_OLX
+      INTEGER MAX_OLY
+      PARAMETER ( MAX_OLX = OLx,
+     &            MAX_OLY = OLy )
+
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/cpl_issm.F
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/cpl_issm.F	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/cpl_issm.F	(revision 27955)
@@ -0,0 +1,231 @@
+#include "PACKAGES_CONFIG.h"
+#include "CPP_OPTIONS.h"
+
+CBOP
+C     !ROUTINE: CPL_ISSM
+C     !INTERFACE:
+      SUBROUTINE CPL_ISSM( myTime, myIter, myThid )
+
+C     !DESCRIPTION: \bv
+C     *==================================================================
+C     | SUBROUTINE cpl_issm
+C     | o Couple MITgcm ocean model with ISSM ice sheet model
+C     *==================================================================
+C     \ev
+
+C     !USES:
+      IMPLICIT NONE
+C     == Global variables ==
+#include "SIZE.h"
+#include "EEPARAMS.h"
+#include "PARAMS.h"
+#include "DYNVARS.h"
+#include "GRID.h"
+#include "FFIELDS.h"
+#include "SHELFICE_OPTIONS.h"
+#include "SHELFICE.h"
+#ifdef ALLOW_EXF
+# include "EXF_OPTIONS.h"
+# include "EXF_FIELDS.h"
+#endif
+
+      LOGICAL  DIFFERENT_MULTIPLE
+      EXTERNAL DIFFERENT_MULTIPLE
+
+C     !LOCAL VARIABLES:
+C     mytime - time counter for this thread (seconds)
+C     myiter - iteration counter for this thread
+C     mythid - thread number for this instance of the routine.
+      _RL     mytime
+      INTEGER myiter, mythid 
+CEOP
+
+#ifdef ALLOW_CPL_ISSM
+#include "EESUPPORT.h"
+      COMMON /CPL_MPI_ID/ mpiMyWid, toissmcomm
+      INTEGER mpiMyWid, toissmcomm, mpiRC
+      INTEGER mpistatus(MPI_STATUS_SIZE)
+      INTEGER i, j, bi, bj, buffsize
+      COMMON /CPL_ISSM_TIME/ CouplingTime
+      _R8 CouplingTime, IceModelTime
+      _R8 xfer_array(Nx,Ny)
+      _R8 local(1:sNx,1:sNy,nSx,nSy)
+      CHARACTER*(MAX_LEN_MBUF) suff
+
+C Initialization steps I1, I2, and I3:
+      IF( myTime .EQ. startTime ) THEN
+
+C   I1. ISSM sends CouplingTime, the interval at which we couple
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            call MPI_Recv(CouplingTime,1,MPI_DOUBLE,0,10001000,
+     &           toissmcomm,mpistatus,mpiRC)
+            _END_MASTER( myThid )
+         ENDIF
+         _BEGIN_MASTER( myThid )
+         CALL MPI_BCAST(CouplingTime,1,MPI_DOUBLE,0,
+     &        MPI_COMM_MODEL,mpiRC)
+         _END_MASTER( myThid )
+#ifdef ALLOW_DEBUG
+         IF ( debugLevel .GE. debLevD ) THEN
+            print*, 'Ocean received CouplingTime: ', CouplingTime
+         ENDIF
+#endif
+
+C   I2. MITgcm sends grid size (NX and NY)
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            call MPI_Send(Nx,1,MPI_INT,0,10001003,
+     &           toissmcomm,mpistatus)
+            call MPI_Send(Ny,1,MPI_INT,0,10001004,
+     &           toissmcomm,mpistatus)
+            _END_MASTER( myThid )
+         ENDIF
+
+C   I3. MITgcm sends grid coordinates of center of cells
+C       (longitude -180 <= XC < 180 and latitude YC)
+C     Send longitude East of center of cell
+         DO bj=1,nSy
+            DO bi=1,nSx
+               DO j=1,sNy
+                  DO i=1,sNx
+                     local(i,j,bi,bj) = xC(i,j,bi,bj)
+                  ENDDO
+               ENDDO
+            ENDDO
+         ENDDO
+         CALL BAR2( myThid ) 
+         CALL GATHER_2D_R8( xfer_array, local, Nx, Ny,
+     &        .FALSE., .FALSE., myThid )
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            buffsize = Nx*Ny
+            CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
+     &           0,10001005,toissmcomm,mpistatus)
+            _END_MASTER( myThid )
+         ENDIF
+         CALL BAR2( myThid )
+C     Send latitude North of center of cell
+         DO bj=1,nSy
+            DO bi=1,nSx
+               DO j=1,sNy
+                  DO i=1,sNx
+                     local(i,j,bi,bj) = yC(i,j,bi,bj)
+                  ENDDO
+               ENDDO
+            ENDDO
+         ENDDO
+         CALL BAR2( myThid ) 
+         CALL GATHER_2D_R8( xfer_array, local, Nx, Ny,
+     &        .FALSE., .FALSE., myThid )
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            buffsize = Nx*Ny
+            CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
+     &           0,10001006,toissmcomm,mpistatus)
+            _END_MASTER( myThid )
+         ENDIF
+         CALL BAR2( myThid )
+
+      ENDIF
+C End initialization steps I1, I2, and I3.
+
+C Recurring steps C1 and C2:
+      IF( MOD(myTime,CouplingTime) .LT. deltaT/2. ) THEN
+
+C   C1. ISSM sends ice model time IceTimeTag
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            call MPI_Recv(IceModelTime,1,MPI_DOUBLE,0,10001001,
+     &           toissmcomm,mpistatus,mpiRC)
+#ifdef ALLOW_DEBUG
+            IF ( debugLevel .GE. debLevD ) THEN
+               print*, 'Ocean received IceModelTime: ', IceModelTime
+            ENDIF
+#endif
+            _END_MASTER( myThid )
+         ENDIF
+
+C   C2. MITgcm sends ocean model time OceanTimeTag
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            call MPI_Send(myTime,1,MPI_DOUBLE,0,10001002,
+     &           toissmcomm,mpistatus)
+            _END_MASTER( myThid )
+         ENDIF
+
+      ENDIF
+C End recurring steps C1 and C2.
+
+C Recurring step C3 except during Initialization:
+C  C3. MITgcm sends
+C      (N-1)*CouplingTime <= OceanModelTime < N*CouplingTime
+C      time-mean melt rate to ISSM
+      IF( myTime .NE. startTime .AND.
+     &     MOD(myTime,CouplingTime) .LT. deltaT/2. ) THEN
+         DO bj=1,nSy
+            DO bi=1,nSx
+               DO j=1,sNy
+                  DO i=1,sNx
+                     local(i,j,bi,bj)=shelficeFreshWaterFlux(i,j,bi,bj)
+                  ENDDO
+               ENDDO
+            ENDDO
+         ENDDO
+         CALL BAR2( myThid ) 
+         CALL GATHER_2D_R8( xfer_array, local, Nx, Ny,
+     &        .FALSE., .FALSE., myThid )
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            buffsize = Nx*Ny
+            CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
+     &           0,10001007,toissmcomm,mpistatus)
+            _END_MASTER( myThid )
+         ENDIF
+         CALL BAR2( myThid )
+#ifdef ALLOW_DEBUG
+         IF ( debugLevel .GE. debLevD ) THEN
+            print*,'Done Sending shelficeFreshWaterFlux array.'
+         ENDIF
+#endif
+      ENDIF
+C End recurring step C3.
+
+C Recurring step C4 except during Termination:
+C  C4. ISSM sends IceModelTime=(N-1)*CouplingTime base to MITgcm
+      IF( myTime .NE. endtime .AND.
+     &     MOD(myTime,CouplingTime) .LT. deltaT/2. ) THEN
+         WRITE(suff,'(I10.10)') myIter
+         CALL WRITE_FLD_XY_RS( 'R_shelfIce1_',suff,R_shelfIce,-1,myThid)
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )         
+            call MPI_Recv(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
+     &           0,10001008,toissmcomm,mpistatus,mpiRC)
+            _END_MASTER( myThid )
+         ENDIF
+         CALL BAR2( myThid ) 
+         CALL SCATTER_2D_R8( xfer_array, local, Nx, Ny,
+     &        .FALSE., .FALSE., myThid )
+         DO bj = myByLo(myThid), myByHi(myThid)
+            DO bi = myBxLo(myThid), myBxHi(myThid)
+               DO j=1,sNy
+                  DO i=1,sNx
+                     IF( local(i,j,bi,bj).LT.9998 ) THEN
+                        R_shelfIce(i,j,bi,bj) = local(i,j,bi,bj)
+                     ELSE
+                        R_shelfIce(i,j,bi,bj) = 0. _d 0
+                     ENDIF
+                  ENDDO
+               ENDDO
+            ENDDO
+         ENDDO
+C- fill in the overlap (+ BARRIER):
+         _EXCH_XY_RS( R_shelfIce, myThid )
+         CALL WRITE_FLD_XY_RS( 'R_shelfIce2_',suff,R_shelfIce,-1,myThid)
+      ENDIF
+C End recurring step C4.
+
+#endif /* ALLOW_CPL_ISSM */
+
+      RETURN
+      END
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/do_oceanic_phys.F
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/do_oceanic_phys.F	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/do_oceanic_phys.F	(revision 27955)
@@ -0,0 +1,1111 @@
+#include "PACKAGES_CONFIG.h"
+#include "CPP_OPTIONS.h"
+#ifdef ALLOW_MOM_COMMON
+# include "MOM_COMMON_OPTIONS.h"
+#endif
+#ifdef ALLOW_AUTODIFF
+# include "AUTODIFF_OPTIONS.h"
+#endif
+#ifdef ALLOW_CTRL
+# include "CTRL_OPTIONS.h"
+#endif
+#ifdef ALLOW_SALT_PLUME
+# include "SALT_PLUME_OPTIONS.h"
+#endif
+#ifdef ALLOW_ECCO
+# include "ECCO_OPTIONS.h"
+#endif
+
+#ifdef ALLOW_AUTODIFF
+# ifdef ALLOW_GGL90
+#  include "GGL90_OPTIONS.h"
+# endif
+# ifdef ALLOW_GMREDI
+#  include "GMREDI_OPTIONS.h"
+# endif
+# ifdef ALLOW_KPP
+#  include "KPP_OPTIONS.h"
+# endif
+# ifdef ALLOW_SEAICE
+#  include "SEAICE_OPTIONS.h"
+# endif
+# ifdef ALLOW_EXF
+#  include "EXF_OPTIONS.h"
+# endif
+#endif /* ALLOW_AUTODIFF */
+
+CBOP
+C     !ROUTINE: DO_OCEANIC_PHYS
+C     !INTERFACE:
+      SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
+C     !DESCRIPTION: \bv
+C     *==========================================================*
+C     | SUBROUTINE DO_OCEANIC_PHYS
+C     | o Controlling routine for oceanic physics and
+C     |   parameterization
+C     *==========================================================*
+C     | o originally, part of S/R thermodynamics
+C     *==========================================================*
+C     \ev
+
+C     !CALLING SEQUENCE:
+C     DO_OCEANIC_PHYS
+C       |
+C       |-- OBCS_CALC
+C       |
+C       |-- OCN_APPLY_IMPORT
+C       |
+C       |-- FRAZIL_CALC_RHS
+C       |
+C       |-- THSICE_MAIN
+C       |
+C       |-- SEAICE_FAKE
+C       |-- SEAICE_MODEL
+C       |-- SEAICE_COST_SENSI
+C       |
+C       |-- OCN_EXPORT_DATA
+C       |
+C       |-- SHELFICE_THERMODYNAMICS
+C       |
+C       |-- ICEFRONT_THERMODYNAMICS
+C       |
+C       |-- SALT_PLUME_DO_EXCH
+C       |
+C       |-- FREEZE_SURFACE
+C       |
+C       |-- EXTERNAL_FORCING_SURF
+C       |
+C       |-- OBCS_ADJUST
+C       |
+C       |- k loop (Nr:1):
+C       | - DWNSLP_CALC_RHO
+C       | - BBL_CALC_RHO
+C       | - FIND_RHO_2D @ p(k)
+C       | - FIND_RHO_2D @ p(k-1)
+C       | - GRAD_SIGMA
+C       | - CALC_IVDC
+C       | - DIAGS_RHO_L
+C       |- end k loop.
+C       |
+C       |-- CALC_OCE_MXLAYER
+C       |
+C       |-- SALT_PLUME_CALC_DEPTH
+C       |-- SALT_PLUME_VOLFRAC
+C       |-- SALT_PLUME_APPLY
+C       |-- SALT_PLUME_APPLY
+C       |-- SALT_PLUME_FORCING_SURF
+C       |
+C       |-- KPP_CALC
+C       |-- KPP_CALC_DUMMY
+C       |
+C       |-- PP81_CALC
+C       |
+C       |-- KL10_CALC
+C       |
+C       |-- MY82_CALC
+C       |
+C       |-- GGL90_CALC
+C       |
+C       |-- TIMEAVE_SURF_FLUX
+C       |
+C       |-- GMREDI_CALC_TENSOR
+C       |-- GMREDI_CALC_TENSOR_DUMMY
+C       |
+C       |-- DWNSLP_CALC_FLOW
+C       |-- DWNSLP_CALC_FLOW
+C       |
+C       |-- OFFLINE_GET_DIFFUS
+C       |
+C       |-- BBL_CALC_RHS
+C       |
+C       |-- MYPACKAGE_CALC_RHS
+C       |
+C       |-- GMREDI_DO_EXCH
+C       |
+C       |-- KPP_DO_EXCH
+C       |
+C       |-- GGL90_EXCHANGES
+C       |
+C       |-- DIAGS_RHO_G
+C       |-- DIAGS_OCEANIC_SURF_FLUX
+C       |-- SALT_PLUME_DIAGNOSTICS_FILL
+C       |
+C       |-- ECCO_PHYS
+
+C     !USES:
+      IMPLICIT NONE
+C     == Global variables ===
+#include "SIZE.h"
+#include "EEPARAMS.h"
+#include "PARAMS.h"
+#include "GRID.h"
+#include "DYNVARS.h"
+#ifdef ALLOW_TIMEAVE
+# include "TIMEAVE_STATV.h"
+#endif
+#ifdef ALLOW_OFFLINE
+# include "OFFLINE_SWITCH.h"
+#endif
+
+#ifdef ALLOW_AUTODIFF
+# include "AUTODIFF_MYFIELDS.h"
+# ifdef ALLOW_AUTODIFF_TAMC
+#  include "tamc.h"
+# endif
+# include "FFIELDS.h"
+# include "SURFACE.h"
+# include "EOS.h"
+# ifdef ALLOW_GMREDI
+#  include "GMREDI.h"
+# endif
+# ifdef ALLOW_KPP
+#  include "KPP.h"
+# endif
+# ifdef ALLOW_GGL90
+#  include "GGL90.h"
+# endif
+# ifdef ALLOW_EBM
+#  include "EBM.h"
+# endif
+# ifdef ALLOW_EXF
+#  include "ctrl.h"
+#  include "EXF_FIELDS.h"
+#  ifdef ALLOW_BULKFORMULAE
+#   include "EXF_CONSTANTS.h"
+#  endif
+# endif
+# ifdef ALLOW_SEAICE
+#  include "SEAICE_SIZE.h"
+#  include "SEAICE.h"
+#  include "SEAICE_PARAMS.h"
+# endif
+# ifdef ALLOW_THSICE
+#  include "THSICE_VARS.h"
+# endif
+# ifdef ALLOW_SALT_PLUME
+#  include "SALT_PLUME.h"
+# endif
+# ifdef ALLOW_ECCO
+#  ifdef ALLOW_SIGMAR_COST_CONTRIBUTION
+#   include "ecco_cost.h"
+#  endif
+# endif
+#endif /* ALLOW_AUTODIFF */
+
+C     !INPUT/OUTPUT PARAMETERS:
+C     == Routine arguments ==
+C     myTime :: Current time in simulation
+C     myIter :: Current iteration number in simulation
+C     myThid :: Thread number for this instance of the routine.
+      _RL myTime
+      INTEGER myIter
+      INTEGER myThid
+
+C     !LOCAL VARIABLES:
+C     == Local variables
+C     rhoKp1,rhoKm1 :: Density at current level, and @ level minus one
+C     iMin, iMax    :: Ranges and sub-block indices on which calculations
+C     jMin, jMax       are applied.
+C     bi, bj        :: tile indices
+C     msgBuf        :: Temp. for building output string
+C     i,j,k         :: loop indices
+C     kSrf          :: surface index
+      _RL rhoKp1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
+      _RL rhoKm1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
+      _RL sigmaX  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
+      _RL sigmaY  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
+      _RL sigmaR  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
+      INTEGER iMin, iMax
+      INTEGER jMin, jMax
+      INTEGER bi, bj
+      INTEGER i, j, k, kSrf
+      CHARACTER*(MAX_LEN_MBUF) msgBuf
+      INTEGER doDiagsRho
+      LOGICAL calcGMRedi, calcKPP, calcConvect
+#ifdef ALLOW_DIAGNOSTICS
+      LOGICAL  DIAGNOSTICS_IS_ON
+      EXTERNAL DIAGNOSTICS_IS_ON
+#endif /* ALLOW_DIAGNOSTICS */
+#ifdef ALLOW_AUTODIFF
+      _RL thetaRef
+#endif /* ALLOW_AUTODIFF */
+#ifdef ALLOW_AUTODIFF_TAMC
+      INTEGER act1, act2, act3, act4
+      INTEGER max1, max2, max3
+      INTEGER kkey, itdkey
+#endif
+CEOP
+
+#ifdef ALLOW_AUTODIFF_TAMC
+C--   dummy statement to end declaration part
+      itdkey = 1
+#endif /* ALLOW_AUTODIFF_TAMC */
+
+      kSrf = 1
+      IF ( usingPCoords ) kSrf = Nr
+
+#ifdef ALLOW_DEBUG
+      IF (debugMode) CALL DEBUG_ENTER('DO_OCEANIC_PHYS',myThid)
+#endif
+
+      doDiagsRho = 0
+#ifdef ALLOW_DIAGNOSTICS
+      IF ( useDiagnostics .AND. fluidIsWater ) THEN
+        IF ( DIAGNOSTICS_IS_ON('MXLDEPTH',myThid) )
+     &       doDiagsRho = doDiagsRho + 1
+        IF ( DIAGNOSTICS_IS_ON('DRHODR  ',myThid) )
+     &       doDiagsRho = doDiagsRho + 2
+        IF ( DIAGNOSTICS_IS_ON('WdRHO_P ',myThid) )
+     &       doDiagsRho = doDiagsRho + 4
+        IF ( DIAGNOSTICS_IS_ON('WdRHOdP ',myThid) )
+     &       doDiagsRho = doDiagsRho + 8
+      ENDIF
+#endif /* ALLOW_DIAGNOSTICS */
+
+      calcGMRedi  = useGMRedi
+      calcKPP     = useKPP
+      calcConvect = ivdc_kappa.NE.0.
+#ifdef ALLOW_OFFLINE
+      IF ( useOffLine ) THEN
+        calcGMRedi = useGMRedi .AND. .NOT.offlineLoadGMRedi
+        calcKPP    = useKPP    .AND. .NOT.offlineLoadKPP
+        calcConvect=calcConvect.AND. .NOT.offlineLoadConvec
+      ENDIF
+#endif /* ALLOW_OFFLINE */
+
+#ifdef  ALLOW_OBCS
+      IF (useOBCS) THEN
+C--   Calculate future values on open boundaries
+C--   moved before SEAICE_MODEL call since SEAICE_MODEL needs seaice-obcs fields
+# ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE theta = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE salt  = comlev1, key=ikey_dynamics, kind=isbyte
+# endif
+# ifdef ALLOW_DEBUG
+       IF (debugMode) CALL DEBUG_CALL('OBCS_CALC',myThid)
+# endif
+       CALL OBCS_CALC( myTime+deltaTClock, myIter+1,
+     I                 uVel, vVel, wVel, theta, salt, myThid )
+      ENDIF
+#endif  /* ALLOW_OBCS */
+
+#ifdef ALLOW_OCN_COMPON_INTERF
+C--    Apply imported data (from coupled interface) to forcing fields
+C jmc: moved here before any freezing/seaice pkg adjustment of surf-fluxes
+      IF ( useCoupler ) THEN
+         CALL OCN_APPLY_IMPORT( .TRUE., myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_OCN_COMPON_INTERF */
+
+#ifdef ALLOW_AUTODIFF
+      DO bj=myByLo(myThid),myByHi(myThid)
+       DO bi=myBxLo(myThid),myBxHi(myThid)
+        DO j=1-OLy,sNy+OLy
+         DO i=1-OLx,sNx+OLx
+          adjustColdSST_diag(i,j,bi,bj) = 0. _d 0
+# ifdef ALLOW_SALT_PLUME
+          saltPlumeDepth(i,j,bi,bj) = 0. _d 0
+          saltPlumeFlux(i,j,bi,bj)  = 0. _d 0
+# endif
+         ENDDO
+        ENDDO
+       ENDDO
+      ENDDO
+#endif /* ALLOW_AUTODIFF */
+
+#ifdef ALLOW_FRAZIL
+      IF ( useFRAZIL ) THEN
+C--   Freeze water in the ocean interior and let it rise to the surface
+CADJ STORE theta = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE salt  = comlev1, key=ikey_dynamics, kind=isbyte
+       CALL FRAZIL_CALC_RHS( myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_FRAZIL */
+
+#if (defined ALLOW_THSICE) && !(defined ALLOW_ATM2D)
+      IF ( useThSIce .AND. fluidIsWater ) THEN
+# ifdef ALLOW_AUTODIFF_TAMC
+#  ifdef ALLOW_SEAICE
+CADJ STORE uice,vice         = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif
+CADJ STORE iceMask,iceHeight = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE snowHeight, Tsrf  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE Qice1, Qice2      = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE sHeating,snowAge  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE hocemxl, icflxsw  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE salt,theta        = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE uvel,vvel         = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE qnet,qsw, empmr   = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE atemp,aqh,precip  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE swdown,lwdown     = comlev1, key=ikey_dynamics, kind=isbyte
+#  ifdef NONLIN_FRSURF
+CADJ STORE hFac_surfC        = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif
+# endif /* ALLOW_AUTODIFF_TAMC */
+# ifdef ALLOW_DEBUG
+        IF (debugMode) CALL DEBUG_CALL('THSICE_MAIN',myThid)
+# endif
+C--     Step forward Therm.Sea-Ice variables
+C       and modify forcing terms including effects from ice
+        CALL TIMER_START('THSICE_MAIN     [DO_OCEANIC_PHYS]', myThid)
+        CALL THSICE_MAIN( myTime, myIter, myThid )
+        CALL TIMER_STOP( 'THSICE_MAIN     [DO_OCEANIC_PHYS]', myThid)
+      ENDIF
+#endif /* ALLOW_THSICE */
+
+#ifdef ALLOW_SEAICE
+# ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE qnet  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE qsw   = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE theta = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE salt  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE fu,fv = comlev1, key=ikey_dynamics, kind=isbyte
+#if (defined ALLOW_EXF) && (defined ALLOW_ATM_TEMP)
+CADJ STORE evap  = comlev1, key=ikey_dynamics, kind=isbyte
+#endif
+# endif /* ALLOW_AUTODIFF_TAMC */
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE phiHydLow= comlev1, key=ikey_dynamics, byte=isbyte
+#endif
+      IF ( useSEAICE ) THEN
+# ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE uvel,vvel         = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE uice,vice         = comlev1, key=ikey_dynamics, kind=isbyte
+#  ifdef ALLOW_EXF
+CADJ STORE atemp,aqh,precip  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE swdown,lwdown     = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE uwind,vwind       = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif
+#  ifdef SEAICE_VARIABLE_SALINITY
+CADJ STORE hsalt             = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif
+#  ifdef ATMOSPHERIC_LOADING
+CADJ STORE pload, siceload   = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif
+#  ifdef NONLIN_FRSURF
+CADJ STORE recip_hfacc       = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif
+#  ifdef ANNUAL_BALANCE
+CADJ STORE balance_itcount   = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif /* ANNUAL_BALANCE */
+#  ifdef ALLOW_THSICE
+C-- store thSIce vars before advection (called from SEAICE_MODEL) updates them:
+CADJ STORE iceMask,iceHeight = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE snowHeight,hOceMxL= comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE Qice1, Qice2      = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif /* ALLOW_THSICE */
+# endif /* ALLOW_AUTODIFF_TAMC */
+# ifdef ALLOW_DEBUG
+        IF (debugMode) CALL DEBUG_CALL('SEAICE_MODEL',myThid)
+# endif
+        CALL TIMER_START('SEAICE_MODEL    [DO_OCEANIC_PHYS]', myThid)
+        CALL SEAICE_MODEL( myTime, myIter, myThid )
+        CALL TIMER_STOP ('SEAICE_MODEL    [DO_OCEANIC_PHYS]', myThid)
+# ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE tices = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE heff  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE hsnow = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE area  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE uIce  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE vIce  = comlev1, key=ikey_dynamics, kind=isbyte
+# endif
+# ifdef ALLOW_COST
+        CALL SEAICE_COST_SENSI ( myTime, myIter, myThid )
+# endif
+# ifdef ALLOW_AUTODIFF
+      ELSEIF ( SEAICEadjMODE .EQ. -1 ) THEN
+CADJ STORE area = comlev1, key=ikey_dynamics, kind=isbyte
+        CALL SEAICE_FAKE( myTime, myIter, myThid )
+# endif /* ALLOW_AUTODIFF */
+      ENDIF
+#endif /* ALLOW_SEAICE */
+
+#if (defined ALLOW_OCN_COMPON_INTERF) && (defined ALLOW_THSICE)
+C--   After seaice-dyn and advection of pkg/thsice fields,
+C     Export ocean coupling fields to coupled interface (only with pkg/thsice)
+      IF ( useCoupler ) THEN
+# ifdef ALLOW_DEBUG
+        IF (debugMode) CALL DEBUG_CALL('OCN_EXPORT_DATA',myThid)
+# endif
+         CALL TIMER_START('OCN_EXPORT_DATA [DO_OCEANIC_PHYS]', myThid)
+         CALL OCN_EXPORT_DATA( myTime, myIter, myThid )
+         CALL TIMER_STOP ('OCN_EXPORT_DATA [DO_OCEANIC_PHYS]', myThid)
+      ENDIF
+#endif /* ALLOW_OCN_COMPON_INTERF & ALLOW_THSICE */
+
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE sst, sss          = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE qsw               = comlev1, key=ikey_dynamics, kind=isbyte
+# ifdef ALLOW_SEAICE
+CADJ STORE area              = comlev1, key=ikey_dynamics, kind=isbyte
+# endif
+#endif
+
+#ifdef ALLOW_CPL_ISSM
+      IF ( useCoupler) CALL CPL_ISSM( myTime, myIter, myThid )
+#endif
+
+#ifdef ALLOW_SHELFICE
+      IF ( useShelfIce .AND. fluidIsWater ) THEN
+#ifdef ALLOW_DEBUG
+       IF (debugMode) CALL DEBUG_CALL('SHELFICE_THERMODYNAMICS',myThid)
+#endif
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE salt, theta       = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE uvel, vvel        = comlev1, key=ikey_dynamics, kind=isbyte
+#endif
+C     compute temperature and (virtual) salt flux at the
+C     shelf-ice ocean interface
+       CALL TIMER_START('SHELFICE_THERMODYNAMICS [DO_OCEANIC_PHYS]',
+     &       myThid)
+       CALL SHELFICE_THERMODYNAMICS( myTime, myIter, myThid )
+       CALL TIMER_STOP( 'SHELFICE_THERMODYNAMICS [DO_OCEANIC_PHYS]',
+     &      myThid)
+      ENDIF
+#endif /* ALLOW_SHELFICE */
+
+#ifdef ALLOW_ICEFRONT
+      IF ( useICEFRONT .AND. fluidIsWater ) THEN
+#ifdef ALLOW_DEBUG
+       IF (debugMode) CALL DEBUG_CALL('ICEFRONT_THERMODYNAMICS',myThid)
+#endif
+C     compute temperature and (virtual) salt flux at the
+C     ice-front ocean interface
+       CALL TIMER_START('ICEFRONT_THERMODYNAMICS [DO_OCEANIC_PHYS]',
+     &       myThid)
+       CALL ICEFRONT_THERMODYNAMICS( myTime, myIter, myThid )
+       CALL TIMER_STOP( 'ICEFRONT_THERMODYNAMICS [DO_OCEANIC_PHYS]',
+     &      myThid)
+      ENDIF
+#endif /* ALLOW_ICEFRONT */
+
+#ifdef ALLOW_SALT_PLUME
+      IF ( useSALT_PLUME ) THEN
+Catn: exchanging saltPlumeFlux:
+        CALL SALT_PLUME_DO_EXCH( myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_SALT_PLUME */
+
+C--   Freeze water at the surface
+      IF ( allowFreezing ) THEN
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE theta             = comlev1, key=ikey_dynamics, kind=isbyte
+#endif
+        CALL FREEZE_SURFACE( myTime, myIter, myThid )
+      ENDIF
+
+      iMin = 1-OLx
+      iMax = sNx+OLx
+      jMin = 1-OLy
+      jMax = sNy+OLy
+
+C---  Determines forcing terms based on external fields
+C     relaxation terms, etc.
+#ifdef ALLOW_AUTODIFF
+CADJ STORE salt, theta       = comlev1, key=ikey_dynamics, kind=isbyte
+#else  /* ALLOW_AUTODIFF */
+C--   if fluid is not water, by-pass surfaceForcing, find_rho, gmredi
+C     and all vertical mixing schemes, but keep OBCS_CALC
+      IF ( fluidIsWater ) THEN
+#endif /* ALLOW_AUTODIFF */
+#ifdef ALLOW_DEBUG
+      IF (debugMode) CALL DEBUG_CALL('EXTERNAL_FORCING_SURF',myThid)
+#endif
+        CALL EXTERNAL_FORCING_SURF(
+     I             iMin, iMax, jMin, jMax,
+     I             myTime, myIter, myThid )
+
+#ifdef  ALLOW_OBCS
+      IF (useOBCS) THEN
+C--   After all surface fluxes are known apply balancing fluxes and
+C--   apply tidal forcing to open boundaries
+# ifdef ALLOW_DEBUG
+       IF (debugMode) CALL DEBUG_CALL('OBCS_ADJUST',myThid)
+# endif
+       CALL OBCS_ADJUST(
+     I      myTime+deltaTClock, myIter+1, myThid )
+      ENDIF
+#endif  /* ALLOW_OBCS */
+
+#ifdef ALLOW_AUTODIFF_TAMC
+C--   HPF directive to help TAMC
+CHPF$ INDEPENDENT
+#endif /* ALLOW_AUTODIFF_TAMC */
+      DO bj=myByLo(myThid),myByHi(myThid)
+#ifdef ALLOW_AUTODIFF_TAMC
+C--   HPF directive to help TAMC
+CHPF$ INDEPENDENT
+#endif /* ALLOW_AUTODIFF_TAMC */
+       DO bi=myBxLo(myThid),myBxHi(myThid)
+
+#ifdef ALLOW_AUTODIFF_TAMC
+          act1 = bi - myBxLo(myThid)
+          max1 = myBxHi(myThid) - myBxLo(myThid) + 1
+          act2 = bj - myByLo(myThid)
+          max2 = myByHi(myThid) - myByLo(myThid) + 1
+          act3 = myThid - 1
+          max3 = nTx*nTy
+          act4 = ikey_dynamics - 1
+          itdkey = (act1 + 1) + act2*max1
+     &                      + act3*max1*max2
+     &                      + act4*max1*max2*max3
+#endif /* ALLOW_AUTODIFF_TAMC */
+
+C--   Set up work arrays with valid (i.e. not NaN) values
+C     These inital values do not alter the numerical results. They
+C     just ensure that all memory references are to valid floating
+C     point numbers. This prevents spurious hardware signals due to
+C     uninitialised but inert locations.
+        DO k=1,Nr
+         DO j=1-OLy,sNy+OLy
+          DO i=1-OLx,sNx+OLx
+C This is currently used by GMRedi, IVDC, MXL-depth  and Diagnostics
+           sigmaX(i,j,k) = 0. _d 0
+           sigmaY(i,j,k) = 0. _d 0
+           sigmaR(i,j,k) = 0. _d 0
+#if (defined (ALLOW_SIGMAR_COST_CONTRIBUTION) || defined (ALLOW_LEITH_QG))
+           sigmaRfield(i,j,k,bi,bj) = 0. _d 0
+#endif
+          ENDDO
+         ENDDO
+        ENDDO
+
+        DO j=1-OLy,sNy+OLy
+         DO i=1-OLx,sNx+OLx
+          rhoKm1 (i,j)   = 0. _d 0
+          rhoKp1 (i,j)   = 0. _d 0
+         ENDDO
+        ENDDO
+#ifdef ALLOW_AUTODIFF
+cph all the following init. are necessary for TAF
+cph although some of these are re-initialised later.
+        DO k=1,Nr
+         DO j=1-OLy,sNy+OLy
+          DO i=1-OLx,sNx+OLx
+           rhoInSitu(i,j,k,bi,bj) = 0.
+# ifdef ALLOW_GGL90
+           GGL90viscArU(i,j,k,bi,bj)  = 0. _d 0
+           GGL90viscArV(i,j,k,bi,bj)  = 0. _d 0
+           GGL90diffKr(i,j,k,bi,bj)  = 0. _d 0
+# endif /* ALLOW_GGL90 */
+# ifdef ALLOW_SALT_PLUME
+#  ifdef SALT_PLUME_VOLUME
+           SPforcingS(i,j,k,bi,bj) = 0. _d 0
+           SPforcingT(i,j,k,bi,bj) = 0. _d 0
+#  endif
+# endif /* ALLOW_SALT_PLUME */
+          ENDDO
+         ENDDO
+        ENDDO
+#ifdef ALLOW_OFFLINE
+       IF ( calcConvect ) THEN
+#endif
+        DO k=1,Nr
+         DO j=1-OLy,sNy+OLy
+          DO i=1-OLx,sNx+OLx
+           IVDConvCount(i,j,k,bi,bj) = 0.
+          ENDDO
+         ENDDO
+        ENDDO
+#ifdef ALLOW_OFFLINE
+       ENDIF
+       IF ( calcGMRedi ) THEN
+#endif
+# ifdef ALLOW_GMREDI
+        DO k=1,Nr
+         DO j=1-OLy,sNy+OLy
+          DO i=1-OLx,sNx+OLx
+           Kwx(i,j,k,bi,bj)  = 0. _d 0
+           Kwy(i,j,k,bi,bj)  = 0. _d 0
+           Kwz(i,j,k,bi,bj)  = 0. _d 0
+           Kux(i,j,k,bi,bj)  = 0. _d 0
+           Kvy(i,j,k,bi,bj)  = 0. _d 0
+#  ifdef GM_EXTRA_DIAGONAL
+           Kuz(i,j,k,bi,bj)  = 0. _d 0
+           Kvz(i,j,k,bi,bj)  = 0. _d 0
+#  endif
+#  ifdef GM_BOLUS_ADVEC
+           GM_PsiX(i,j,k,bi,bj)  = 0. _d 0
+           GM_PsiY(i,j,k,bi,bj)  = 0. _d 0
+#  endif
+#  ifdef GM_VISBECK_VARIABLE_K
+           VisbeckK(i,j,bi,bj)   = 0. _d 0
+#  endif
+          ENDDO
+         ENDDO
+        ENDDO
+# endif /* ALLOW_GMREDI */
+#ifdef ALLOW_OFFLINE
+       ENDIF
+       IF ( calcKPP ) THEN
+#endif
+# ifdef ALLOW_KPP
+        DO k=1,Nr
+         DO j=1-OLy,sNy+OLy
+          DO i=1-OLx,sNx+OLx
+           KPPdiffKzS(i,j,k,bi,bj)  = 0. _d 0
+           KPPdiffKzT(i,j,k,bi,bj)  = 0. _d 0
+          ENDDO
+         ENDDO
+        ENDDO
+# endif /* ALLOW_KPP */
+#ifdef ALLOW_OFFLINE
+       ENDIF
+#endif
+#endif /* ALLOW_AUTODIFF */
+
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE theta(:,:,:,bi,bj)  = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE salt (:,:,:,bi,bj)  = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE totphihyd(:,:,:,bi,bj)
+CADJ &                         = comlev1_bibj, key=itdkey, kind=isbyte
+# ifdef ALLOW_KPP
+CADJ STORE uvel (:,:,:,bi,bj)  = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE vvel (:,:,:,bi,bj)  = comlev1_bibj, key=itdkey, kind=isbyte
+# endif
+# ifdef ALLOW_SALT_PLUME
+CADJ STORE saltplumedepth(:,:,bi,bj)
+CADJ &                         = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE saltplumeflux(:,:,bi,bj)
+CADJ &                         = comlev1_bibj, key=itdkey, kind=isbyte
+# endif
+#endif /* ALLOW_AUTODIFF_TAMC */
+
+C--   Always compute density (stored in common block) here; even when it is not
+C     needed here, will be used anyway in calc_phi_hyd (data flow easier this way)
+#ifdef ALLOW_DEBUG
+        IF (debugMode) CALL DEBUG_CALL('FIND_RHO_2D (xNr)',myThid)
+#endif
+#ifdef ALLOW_AUTODIFF
+        IF ( fluidIsWater ) THEN
+#endif /* ALLOW_AUTODIFF */
+#ifdef ALLOW_DOWN_SLOPE
+         IF ( useDOWN_SLOPE ) THEN
+           DO k=1,Nr
+            CALL DWNSLP_CALC_RHO(
+     I                  theta, salt,
+     O                  rhoInSitu(1-OLx,1-OLy,k,bi,bj),
+     I                  k, bi, bj, myTime, myIter, myThid )
+           ENDDO
+         ENDIF
+#endif /* ALLOW_DOWN_SLOPE */
+#ifdef ALLOW_BBL
+         IF ( useBBL ) THEN
+C     pkg/bbl requires in-situ bbl density for depths equal to and deeper than the bbl.
+C     To reduce computation and storage requirement, these densities are stored in the
+C     dry grid boxes of rhoInSitu.  See BBL_CALC_RHO for details.
+           DO k=Nr,1,-1
+            CALL BBL_CALC_RHO(
+     I                  theta, salt,
+     O                  rhoInSitu,
+     I                  k, bi, bj, myTime, myIter, myThid )
+
+           ENDDO
+         ENDIF
+#endif /* ALLOW_BBL */
+         IF ( .NOT. ( useDOWN_SLOPE .OR. useBBL ) ) THEN
+           DO k=1,Nr
+            CALL FIND_RHO_2D(
+     I                iMin, iMax, jMin, jMax, k,
+     I                theta(1-OLx,1-OLy,k,bi,bj),
+     I                salt (1-OLx,1-OLy,k,bi,bj),
+     O                rhoInSitu(1-OLx,1-OLy,k,bi,bj),
+     I                k, bi, bj, myThid )
+           ENDDO
+         ENDIF
+#ifdef ALLOW_AUTODIFF
+        ELSE
+C-        fluid is not water:
+          DO k=1,Nr
+           IF ( select_rStar.GE.1 .OR. selectSigmaCoord.GE.1 ) THEN
+C-    isothermal (theta=const) reference state
+             thetaRef = thetaConst
+           ELSE
+C-    horizontally uniform (tRef) reference state
+             thetaRef = tRef(k)
+           ENDIF
+           DO j=1-OLy,sNy+OLy
+            DO i=1-OLx,sNx+OLx
+             rhoInSitu(i,j,k,bi,bj) =
+     &         ( theta(i,j,k,bi,bj)
+     &              *( salt(i,j,k,bi,bj)*atm_Rq + oneRL )
+     &         - thetaRef )*maskC(i,j,k,bi,bj)
+            ENDDO
+           ENDDO
+          ENDDO
+        ENDIF
+#endif /* ALLOW_AUTODIFF */
+
+#ifdef ALLOW_DEBUG
+        IF (debugMode) THEN
+          WRITE(msgBuf,'(A,2(I4,A))')
+     &         'ENTERING UPWARD K LOOP (bi=', bi, ', bj=', bj,')'
+          CALL DEBUG_MSG(msgBuf(1:43),myThid)
+        ENDIF
+#endif
+
+C--     Start of diagnostic loop
+        DO k=Nr,1,-1
+
+#ifdef ALLOW_AUTODIFF_TAMC
+C? Patrick, is this formula correct now that we change the loop range?
+C? Do we still need this?
+cph kkey formula corrected.
+cph Needed for rhoK, rhoKm1, in the case useGMREDI.
+          kkey = (itdkey-1)*Nr + k
+#endif /* ALLOW_AUTODIFF_TAMC */
+
+c#ifdef ALLOW_AUTODIFF_TAMC
+cCADJ STORE theta(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey,
+cCADJ &     kind = isbyte
+cCADJ STORE salt(:,:,k,bi,bj)  = comlev1_bibj_k, key=kkey,
+cCADJ &     kind = isbyte
+c#endif /* ALLOW_AUTODIFF_TAMC */
+
+C--       Calculate gradients of potential density for isoneutral
+C         slope terms (e.g. GM/Redi tensor or IVDC diffusivity)
+          IF ( calcGMRedi .OR. (k.GT.1 .AND. calcConvect)
+     &         .OR. usePP81 .OR. useKL10
+     &         .OR. useMY82 .OR. useGGL90
+     &         .OR. useSALT_PLUME .OR. doDiagsRho.GE.1 ) THEN
+            IF (k.GT.1) THEN
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE theta(:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey,kind=isbyte
+CADJ STORE salt (:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey,kind=isbyte
+CADJ STORE rhokm1 (bi,bj)       = comlev1_bibj_k, key=kkey,kind=isbyte
+#endif /* ALLOW_AUTODIFF_TAMC */
+             IF ( usingZCoords ) THEN
+              DO j=jMin,jMax
+               DO i=iMin,iMax
+                rhoKp1(i,j) = rhoInSitu(i,j,k,bi,bj)
+               ENDDO
+              ENDDO
+              CALL FIND_RHO_2D(
+     I                 iMin, iMax, jMin, jMax, k,
+     I                 theta(1-OLx,1-OLy,k-1,bi,bj),
+     I                 salt (1-OLx,1-OLy,k-1,bi,bj),
+     O                 rhoKm1,
+     I                 k-1, bi, bj, myThid )
+             ELSE
+              CALL FIND_RHO_2D(
+     I                 iMin, iMax, jMin, jMax, k-1,
+     I                 theta(1-OLx,1-OLy,k,bi,bj),
+     I                 salt (1-OLx,1-OLy,k,bi,bj),
+     O                 rhoKp1,
+     I                 k, bi, bj, myThid )
+              DO j=jMin,jMax
+               DO i=iMin,iMax
+                rhoKm1(i,j) = rhoInSitu(i,j,k-1,bi,bj)
+               ENDDO
+              ENDDO
+             ENDIF
+            ENDIF
+#ifdef ALLOW_DEBUG
+            IF (debugMode) CALL DEBUG_CALL('GRAD_SIGMA',myThid)
+#endif
+            CALL GRAD_SIGMA(
+     I             bi, bj, iMin, iMax, jMin, jMax, k,
+     I             rhoInSitu(1-OLx,1-OLy,k,bi,bj), rhoKm1, rhoKp1,
+     O             sigmaX, sigmaY, sigmaR,
+     I             myThid )
+
+#if (defined (ALLOW_SIGMAR_COST_CONTRIBUTION) || defined (ALLOW_LEITH_QG))
+            DO j=jMin,jMax
+             DO i=iMin,iMax
+              sigmaRfield(i,j,k,bi,bj)=sigmaR(i,j,k)
+             ENDDO
+            ENDDO
+#endif /* ALLOW_SIGMAR_COST_CONTRIBUTION or ALLOW_LEITH_QG */
+
+#ifdef ALLOW_AUTODIFF
+#ifdef GMREDI_WITH_STABLE_ADJOINT
+cgf zero out adjoint fields to stabilize pkg/gmredi adjoint
+cgf -> cuts adjoint dependency from slope to state
+            CALL ZERO_ADJ_LOC( Nr, sigmaX, myThid)
+            CALL ZERO_ADJ_LOC( Nr, sigmaY, myThid)
+            CALL ZERO_ADJ_LOC( Nr, sigmaR, myThid)
+#endif
+#endif /* ALLOW_AUTODIFF */
+          ENDIF
+
+C--       Implicit Vertical Diffusion for Convection
+          IF (k.GT.1 .AND. calcConvect) THEN
+#ifdef ALLOW_DEBUG
+            IF (debugMode) CALL DEBUG_CALL('CALC_IVDC',myThid)
+#endif
+            CALL CALC_IVDC(
+     I        bi, bj, iMin, iMax, jMin, jMax, k,
+     I        sigmaR,
+     I        myTime, myIter, myThid)
+          ENDIF
+
+#ifdef ALLOW_DIAGNOSTICS
+          IF ( doDiagsRho.GE.4 ) THEN
+            CALL DIAGS_RHO_L( doDiagsRho, k, bi, bj,
+     I                        rhoInSitu(1-OLx,1-OLy,1,bi,bj),
+     I                        rhoKm1, wVel,
+     I                        myTime, myIter, myThid )
+          ENDIF
+#endif
+
+C--     end of diagnostic k loop (Nr:1)
+        ENDDO
+
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE IVDConvCount(:,:,:,bi,bj)
+CADJ &     = comlev1_bibj, key=itdkey, kind=isbyte
+#endif
+
+C--     Diagnose Mixed Layer Depth:
+        IF ( calcGMRedi .OR. MOD(doDiagsRho,2).EQ.1 ) THEN
+          CALL CALC_OCE_MXLAYER(
+     I              rhoInSitu(1-OLx,1-OLy,kSrf,bi,bj), sigmaR,
+     I              bi, bj, myTime, myIter, myThid )
+        ENDIF
+
+#ifdef ALLOW_SALT_PLUME
+        IF ( useSALT_PLUME ) THEN
+          CALL SALT_PLUME_CALC_DEPTH(
+     I              rhoInSitu(1-OLx,1-OLy,kSrf,bi,bj), sigmaR,
+     I              bi, bj, myTime, myIter, myThid )
+#ifdef SALT_PLUME_VOLUME
+          CALL SALT_PLUME_VOLFRAC(
+     I              bi, bj, myTime, myIter, myThid )
+C-- get forcings for kpp
+          CALL SALT_PLUME_APPLY(
+     I              1, bi, bj, recip_hFacC(1-OLx,1-OLy,kSrf,bi,bj),
+     I              theta, 0,
+     I              myTime, myIter, myThid )
+          CALL SALT_PLUME_APPLY(
+     I              2, bi, bj, recip_hFacC(1-OLx,1-OLy,kSrf,bi,bj),
+     I              salt, 0,
+     I              myTime, myIter, myThid )
+C-- need to call this S/R from here to apply just before kpp
+          CALL SALT_PLUME_FORCING_SURF(
+     I              bi, bj, iMin, iMax, jMin, jMax,
+     I              myTime, myIter, myThid )
+#endif /* SALT_PLUME_VOLUME */
+        ENDIF
+#endif /* ALLOW_SALT_PLUME */
+
+#ifdef ALLOW_DIAGNOSTICS
+        IF ( MOD(doDiagsRho,4).GE.2 ) THEN
+          CALL DIAGNOSTICS_FILL (sigmaR, 'DRHODR  ', 0, Nr,
+     &         2, bi, bj, myThid)
+        ENDIF
+#endif /* ALLOW_DIAGNOSTICS */
+
+C--    This is where EXTERNAL_FORCING_SURF(bi,bj) used to be called;
+C      now called earlier, before bi,bj loop.
+
+#ifdef ALLOW_AUTODIFF_TAMC
+cph needed for KPP
+CADJ STORE surfaceForcingU(:,:,bi,bj)
+CADJ &     = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE surfaceForcingV(:,:,bi,bj)
+CADJ &     = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE surfaceForcingS(:,:,bi,bj)
+CADJ &     = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE surfaceForcingT(:,:,bi,bj)
+CADJ &     = comlev1_bibj, key=itdkey, kind=isbyte
+#endif /* ALLOW_AUTODIFF_TAMC */
+
+#ifdef  ALLOW_KPP
+C--     Compute KPP mixing coefficients
+        IF ( calcKPP ) THEN
+#ifdef ALLOW_DEBUG
+          IF (debugMode) CALL DEBUG_CALL('KPP_CALC',myThid)
+#endif
+          CALL TIMER_START('KPP_CALC [DO_OCEANIC_PHYS]', myThid)
+          CALL KPP_CALC(
+     I                  bi, bj, myTime, myIter, myThid )
+          CALL TIMER_STOP ('KPP_CALC [DO_OCEANIC_PHYS]', myThid)
+#if (defined ALLOW_AUTODIFF) && !(defined ALLOW_OFFLINE)
+        ELSE
+          CALL KPP_CALC_DUMMY(
+     I                  bi, bj, myTime, myIter, myThid )
+#endif /* ALLOW_AUTODIFF and not ALLOW_OFFLINE */
+        ENDIF
+#endif  /* ALLOW_KPP */
+
+#ifdef  ALLOW_PP81
+C--     Compute PP81 mixing coefficients
+        IF (usePP81) THEN
+#ifdef ALLOW_DEBUG
+          IF (debugMode) CALL DEBUG_CALL('PP81_CALC',myThid)
+#endif
+          CALL PP81_CALC(
+     I                     bi, bj, sigmaR, myTime, myIter, myThid )
+        ENDIF
+#endif /* ALLOW_PP81 */
+
+#ifdef  ALLOW_KL10
+C--     Compute KL10 mixing coefficients
+        IF (useKL10) THEN
+#ifdef ALLOW_DEBUG
+          IF (debugMode) CALL DEBUG_CALL('KL10_CALC',myThid)
+#endif
+          CALL KL10_CALC(
+     I                     bi, bj, sigmaR, myTime, myIter, myThid )
+        ENDIF
+#endif /* ALLOW_KL10 */
+
+#ifdef  ALLOW_MY82
+C--     Compute MY82 mixing coefficients
+        IF (useMY82) THEN
+#ifdef ALLOW_DEBUG
+          IF (debugMode) CALL DEBUG_CALL('MY82_CALC',myThid)
+#endif
+          CALL MY82_CALC(
+     I                     bi, bj, sigmaR, myTime, myIter, myThid )
+        ENDIF
+#endif /* ALLOW_MY82 */
+
+#ifdef  ALLOW_GGL90
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE GGL90TKE(:,:,:,bi,bj)
+CADJ &     = comlev1_bibj, key=itdkey, kind=isbyte
+#endif /* ALLOW_AUTODIFF_TAMC */
+C--     Compute GGL90 mixing coefficients
+        IF ( useGGL90 .AND. Nr.GT.1 ) THEN
+#ifdef ALLOW_DEBUG
+          IF (debugMode) CALL DEBUG_CALL('GGL90_CALC',myThid)
+#endif
+          CALL TIMER_START('GGL90_CALC [DO_OCEANIC_PHYS]', myThid)
+          CALL GGL90_CALC(
+     I                     bi, bj, sigmaR, myTime, myIter, myThid )
+          CALL TIMER_STOP ('GGL90_CALC [DO_OCEANIC_PHYS]', myThid)
+        ENDIF
+#endif /* ALLOW_GGL90 */
+
+#ifdef ALLOW_TIMEAVE
+        IF ( taveFreq.GT. 0. _d 0 ) THEN
+          CALL TIMEAVE_SURF_FLUX( bi, bj, myTime, myIter, myThid)
+        ENDIF
+        IF ( taveFreq.GT.0. .AND. calcConvect ) THEN
+          CALL TIMEAVE_CUMULATE(ConvectCountTave, IVDConvCount,
+     I                           Nr, deltaTClock, bi, bj, myThid)
+        ENDIF
+#endif /* ALLOW_TIMEAVE */
+
+#ifdef ALLOW_GMREDI
+#ifdef ALLOW_AUTODIFF_TAMC
+# ifndef GM_EXCLUDE_CLIPPING
+cph storing here is needed only for one GMREDI_OPTIONS:
+cph define GM_BOLUS_ADVEC
+cph keep it although TAF says you dont need to.
+cph but I have avoided the #ifdef for now, in case more things change
+CADJ STORE sigmaX(:,:,:)       = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE sigmaY(:,:,:)       = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE sigmaR(:,:,:)       = comlev1_bibj, key=itdkey, kind=isbyte
+# endif
+#endif /* ALLOW_AUTODIFF_TAMC */
+
+C--     Calculate iso-neutral slopes for the GM/Redi parameterisation
+        IF ( calcGMRedi ) THEN
+#ifdef ALLOW_DEBUG
+          IF (debugMode) CALL DEBUG_CALL('GMREDI_CALC_TENSOR',myThid)
+#endif
+          CALL GMREDI_CALC_TENSOR(
+     I             iMin, iMax, jMin, jMax,
+     I             sigmaX, sigmaY, sigmaR,
+     I             bi, bj, myTime, myIter, myThid )
+#if (defined ALLOW_AUTODIFF) && !(defined ALLOW_OFFLINE)
+        ELSE
+          CALL GMREDI_CALC_TENSOR_DUMMY(
+     I             iMin, iMax, jMin, jMax,
+     I             sigmaX, sigmaY, sigmaR,
+     I             bi, bj, myTime, myIter, myThid )
+#endif /* ALLOW_AUTODIFF and not ALLOW_OFFLINE */
+        ENDIF
+#endif /* ALLOW_GMREDI */
+
+#ifdef ALLOW_DOWN_SLOPE
+        IF ( useDOWN_SLOPE ) THEN
+C--     Calculate Downsloping Flow for Down_Slope parameterization
+         IF ( usingPCoords ) THEN
+          CALL DWNSLP_CALC_FLOW(
+     I                bi, bj, kSurfC, rhoInSitu,
+     I                myTime, myIter, myThid )
+         ELSE
+          CALL DWNSLP_CALC_FLOW(
+     I                bi, bj, kLowC, rhoInSitu,
+     I                myTime, myIter, myThid )
+         ENDIF
+        ENDIF
+#endif /* ALLOW_DOWN_SLOPE */
+
+C--   end bi,bj loops.
+       ENDDO
+      ENDDO
+
+#ifndef ALLOW_AUTODIFF
+C---  if fluid Is Water: end
+      ENDIF
+#endif
+
+#ifdef ALLOW_OFFLINE
+      IF ( useOffLine ) THEN
+#ifdef ALLOW_DEBUG
+        IF (debugMode) CALL DEBUG_CALL('OFFLINE_GET_DIFFUS',myThid)
+#endif /* ALLOW_DEBUG */
+        CALL OFFLINE_GET_DIFFUS( myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_OFFLINE */
+
+#ifdef ALLOW_BBL
+      IF ( useBBL ) THEN
+       CALL BBL_CALC_RHS(
+     I                          myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_BBL */
+
+#ifdef ALLOW_MYPACKAGE
+      IF ( useMYPACKAGE ) THEN
+       CALL MYPACKAGE_CALC_RHS(
+     I                          myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_MYPACKAGE */
+
+#ifdef ALLOW_GMREDI
+      IF ( calcGMRedi ) THEN
+        CALL GMREDI_DO_EXCH( myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_GMREDI */
+
+#ifdef ALLOW_KPP
+      IF ( calcKPP ) THEN
+        CALL KPP_DO_EXCH( myThid )
+      ENDIF
+#endif /* ALLOW_KPP */
+
+#ifdef ALLOW_GGL90
+      IF ( useGGL90 )
+     &  CALL GGL90_EXCHANGES( myThid )
+#endif /* ALLOW_GGL90 */
+
+#ifdef ALLOW_DIAGNOSTICS
+      IF ( fluidIsWater .AND. useDiagnostics ) THEN
+        CALL DIAGS_RHO_G(
+     I                    rhoInSitu, uVel, vVel, wVel,
+     I                    myTime, myIter, myThid )
+      ENDIF
+      IF ( useDiagnostics ) THEN
+        CALL DIAGS_OCEANIC_SURF_FLUX( myTime, myIter, myThid )
+      ENDIF
+      IF ( calcConvect .AND. useDiagnostics ) THEN
+        CALL DIAGNOSTICS_FILL( IVDConvCount, 'CONVADJ ',
+     &                               0, Nr, 0, 1, 1, myThid )
+      ENDIF
+#ifdef ALLOW_SALT_PLUME
+      IF ( useDiagnostics )
+     &      CALL SALT_PLUME_DIAGNOSTICS_FILL(bi,bj,myThid)
+#endif
+#endif
+
+#ifdef ALLOW_DEBUG
+      IF (debugMode) CALL DEBUG_LEAVE('DO_OCEANIC_PHYS',myThid)
+#endif
+
+      RETURN
+      END
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/eeboot_minimal.F
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/eeboot_minimal.F	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/eeboot_minimal.F	(revision 27955)
@@ -0,0 +1,328 @@
+#include "PACKAGES_CONFIG.h"
+#include "CPP_EEOPTIONS.h"
+
+CBOP
+C     !ROUTINE: EEBOOT_MINIMAL
+
+C     !INTERFACE:
+      SUBROUTINE EEBOOT_MINIMAL( myComm )
+
+C     !DESCRIPTION:
+C     *==========================================================*
+C     | SUBROUTINE EEBOOT\_MINIMAL
+C     | o Set an initial environment that is predictable i.e.
+C     | behaves in a similar way on all machines and stable.
+C     *==========================================================*
+C     | Under MPI this routine calls MPI\_INIT to setup the
+C     | mpi environment ( on some systems the code is running as
+C     | a single process prior to MPI\_INIT, on others the mpirun
+C     | script has already created multiple processes). Until
+C     | MPI\_Init is called it is unclear what state the
+C     | application is in. Once this routine has been run it is
+C     | "safe" to do things like I/O to report erros and to get
+C     | run parameters.
+C     | Note: This routine can also be compiled with CPP
+C     | directives set so that no multi-processing is initialise.
+C     | This is OK and will work fine.
+C     *==========================================================*
+
+C     !USES:
+      IMPLICIT NONE
+C     == Global data ==
+#include "SIZE.h"
+#include "EEPARAMS.h"
+#include "EESUPPORT.h"
+
+C     !ROUTINE ARGUMENTS
+C     == Routine arguments ==
+C     myComm     :: Communicator that is passed down from
+C                   upper level driver (if there is one).
+      INTEGER myComm
+
+C     !FUNCTIONS:
+c     INTEGER  IFNBLNK
+c     EXTERNAL IFNBLNK
+      INTEGER  ILNBLNK
+      EXTERNAL ILNBLNK
+
+C     !LOCAL VARIABLES:
+C     == Local variables ==
+C     myThid     :: Temp. dummy thread number.
+C     fNam       :: Used to build file name for standard and error output.
+C     msgBuf     :: Used to build messages for printing.
+      INTEGER myThid
+#ifdef USE_PDAF
+      CHARACTER*18 fNam
+#else
+      CHARACTER*13 fNam
+#endif /* USE_PDAF */
+      CHARACTER*(MAX_LEN_MBUF) msgBuf
+#ifdef ALLOW_USE_MPI
+C     mpiRC      :: Error code reporting variable used with MPI.
+      INTEGER mpiRC
+      INTEGER mpiIsInitialized
+      LOGICAL doReport
+#if defined(ALLOW_OASIS) || defined(COMPONENT_MODULE)
+      INTEGER mpiMyWId
+#elif defined(ALLOW_NEST2W_COMMON)
+      INTEGER mpiMyWId
+#endif
+#ifdef ALLOW_CPL_ISSM
+      COMMON /CPL_MPI_ID/ mpiMyWid, toissmcomm
+      INTEGER             mpiMyWid, toissmcomm
+      INTEGER my_local_rank,my_local_size, numprocsworld
+      INTEGER status(MPI_STATUS_SIZE)
+#endif /* ALLOW_CPL_ISSM */
+#if defined(ALLOW_NEST_PARENT) || defined(ALLOW_NEST_CHILD)
+      INTEGER mpiMyWId, color
+#endif
+#ifdef USE_PDAF
+      INTEGER mpi_task_id
+      CHARACTER*(14) fmtStr
+#else
+      CHARACTER*(6) fmtStr
+#endif /* USE_PDAF */
+      INTEGER iTmp
+#endif /* ALLOW_USE_MPI */
+CEOP
+
+C--   Default values set to single processor case
+      numberOfProcs = 1
+      myProcId      = 0
+      pidIO         = myProcId
+      myProcessStr  = '------'
+C     Set a dummy value for myThid because we are not multi-threading yet.
+      myThid        = 1
+
+C     Annoyingly there is no universal way to have the usingMPI
+C     parameter work as one might expect. This is because, on some
+C     systems I/O does not work until MPI_Init has been called.
+C     The solution for now is that the parameter below may need to
+C     be changed manually!
+#ifdef ALLOW_USE_MPI
+      usingMPI = .TRUE.
+#else
+      usingMPI = .FALSE.
+#endif
+
+      IF ( .NOT.usingMPI ) THEN
+
+        WRITE(myProcessStr,'(I4.4)') myProcId
+        WRITE(fNam,'(A,A)') 'STDERR.', myProcessStr(1:4)
+        OPEN(errorMessageUnit,FILE=fNam,STATUS='unknown')
+c       WRITE(fNam,'(A,A)') 'STDOUT.', myProcessStr(1:4)
+c       OPEN(standardMessageUnit,FILE=fNam,STATUS='unknown')
+
+#ifdef ALLOW_USE_MPI
+      ELSE
+C--   MPI style multiple-process initialisation
+C--   =========================================
+
+       CALL MPI_Initialized( mpiIsInitialized, mpiRC )
+
+       IF ( mpiIsInitialized .EQ. 0 ) THEN
+C--     Initialise MPI multi-process parallel environment.
+C       On some systems program forks at this point. Others have already
+C       forked within mpirun - now thats an open standard!
+        CALL MPI_INIT( mpiRC )
+        IF ( mpiRC .NE. MPI_SUCCESS ) THEN
+         eeBootError = .TRUE.
+         WRITE(msgBuf,'(A,I5)')
+     &        'EEBOOT_MINIMAL: MPI_INIT return code', mpiRC
+         CALL PRINT_ERROR( msgBuf, myThid )
+         GOTO 999
+        ENDIF
+
+C--     MPI has now been initialized ; now we need to either
+C       ask for a communicator or pretend that we have:
+C       Pretend that we have asked for a communicator
+        MPI_COMM_MODEL = MPI_COMM_WORLD
+
+       ELSE
+C--     MPI was already initialized and communicator has been passed
+C       down from upper level driver
+        MPI_COMM_MODEL = myComm
+
+       ENDIF
+
+       doReport = .FALSE.
+#ifdef USE_PDAF
+C     initialize PDAF
+C     for more output increase second parameter from 1 to 2
+       CALL INIT_PARALLEL_PDAF(0, 1, MPI_COMM_MODEL, MPI_COMM_MODEL,
+     &      mpi_task_id)
+#endif /* USE_PDAF */
+
+#ifdef ALLOW_OASIS
+C      add a 1rst preliminary call EESET_PARAMS to set useOASIS
+C      (needed to decide either to call OASIS_INIT or not)
+       CALL MPI_COMM_RANK( MPI_COMM_WORLD, mpiMyWId, mpiRC )
+       CALL EESET_PARMS ( mpiMyWId, doReport )
+       IF ( useOASIS ) CALL OASIS_INIT(MPI_COMM_MODEL)
+#endif /* ALLOW_OASIS */
+
+#ifdef COMPONENT_MODULE
+C--    Set the running directory
+       CALL MPI_COMM_RANK( MPI_COMM_WORLD, mpiMyWId, mpiRC )
+       CALL SETDIR( mpiMyWId )
+
+C- jmc: test:
+C      add a 1rst preliminary call EESET_PARAMS to set useCoupler
+C      (needed to decide either to call CPL_INIT or not)
+       CALL EESET_PARMS ( mpiMyWId, doReport )
+C- jmc: test end ; otherwise, uncomment next line:
+c      useCoupler = .TRUE.
+
+C--    Ask coupler interface for a communicator
+       IF ( useCoupler) CALL CPL_INIT
+#endif /* COMPONENT_MODULE */
+
+C--    Case with Nest(ing)
+#if defined(ALLOW_NEST_PARENT) || defined(ALLOW_NEST_CHILD)
+C--    Set the running directory
+       CALL MPI_COMM_RANK( MPI_COMM_WORLD, mpiMyWId, mpiRC )
+       CALL SETDIR( mpiMyWId )
+
+C--    Setup Nesting Execution Environment
+       CALL NEST_EEINIT( mpiMyWId, color )
+#endif /* ALLOW_NEST_PARENT | ALLOW_NEST_CHILD */
+
+#ifdef ALLOW_NEST2W_COMMON
+C--    Case with 2-Ways Nest(ing)
+C-     Set the running directory
+       CALL MPI_COMM_RANK( MPI_COMM_WORLD, mpiMyWId, mpiRC )
+       CALL SETDIR( mpiMyWId )
+
+C-     Setup Nesting Execution Environment
+       CALL NEST2W_EEINIT( mpiMyWId )
+       IF ( eeBootError ) GOTO 999
+#endif /* ALLOW_NEST2W_COMMON */
+
+#ifdef ALLOW_CPL_ISSM
+C     add a 1rst preliminary call EESET_PARAMS to set useCoupler
+       CALL MPI_COMM_RANK(MPI_COMM_WORLD, mpiMyWid, mpiRC)
+       CALL EESET_PARMS ( mpiMyWId, doReport )
+
+       IF ( useCoupler ) THEN
+          CALL MPI_COMM_SIZE(MPI_COMM_WORLD, numprocsworld, mpiRC)
+
+c     Split world into sub-communicators for each and every model:*/
+          CALL MPI_COMM_SPLIT(MPI_COMM_WORLD,1,MPIMYWID,
+     &         MPI_COMM_MODEL,mpiRC)
+
+          print*,'Oc My global rank',mpiMyWid
+          print*,'Oc My world size:',numprocsworld
+
+          CALL MPI_INTERCOMM_CREATE(MPI_COMM_MODEL,0,MPI_COMM_WORLD,
+     &         0,0,toissmcomm,mpiRC)
+
+          CALL MPI_COMM_RANK(MPI_COMM_MODEL, my_local_rank, mpiRC)
+          CALL MPI_COMM_SIZE(MPI_COMM_MODEL, my_local_size, mpiRC)
+
+          print*,'Oc My global rank',mpiMyWid,'MyLocal rank: ',
+     &         my_local_rank
+          print*,'Oc My world size:',numprocsworld,'My local size: ',
+     &         my_local_size
+       ENDIF
+#endif /* ALLOW_CPL_ISSM */
+
+C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
+
+C--    Get my process number
+       CALL MPI_COMM_RANK( MPI_COMM_MODEL, mpiMyId, mpiRC )
+       IF ( mpiRC .NE. MPI_SUCCESS ) THEN
+        eeBootError = .TRUE.
+        WRITE(msgBuf,'(A,I5)')
+     &        'EEBOOT_MINIMAL: MPI_COMM_RANK return code', mpiRC
+        CALL PRINT_ERROR( msgBuf, myThid )
+        GOTO 999
+       ENDIF
+       myProcId = mpiMyId
+       iTmp = MAX(4,1 + INT(LOG10(DFLOAT(nPx*nPy))))
+#ifdef USE_PDAF
+       WRITE(fmtStr,'(4(A,I1),A)')
+     &      '(I',iTmp,'.',iTmp,',A1,I',iTmp,'.',iTmp,')'
+       WRITE(myProcessStr,fmtStr) mpi_task_id,'.',myProcId
+#else
+       WRITE(fmtStr,'(2(A,I1),A)') '(I',iTmp,'.',iTmp,')'
+       WRITE(myProcessStr,fmtStr) myProcId
+#endif /* USE_PDAF */
+       iTmp = ILNBLNK( myProcessStr )
+       mpiPidIo = myProcId
+       pidIO    = mpiPidIo
+       IF ( mpiPidIo .EQ. myProcId ) THEN
+#ifdef SINGLE_DISK_IO
+        IF( myProcId .EQ. 0 ) THEN
+#endif
+         WRITE(fNam,'(A,A)') 'STDERR.', myProcessStr(1:iTmp)
+         OPEN(errorMessageUnit,FILE=fNam,STATUS='unknown')
+         WRITE(fNam,'(A,A)') 'STDOUT.', myProcessStr(1:iTmp)
+         OPEN(standardMessageUnit,FILE=fNam,STATUS='unknown')
+#ifdef SINGLE_DISK_IO
+        ELSE
+         OPEN(errorMessageUnit,FILE='/dev/null',STATUS='unknown')
+         standardMessageUnit=errorMessageUnit
+        ENDIF
+        IF( myProcId .EQ. 0 ) THEN
+          WRITE(msgBuf,'(2A)') '** WARNING ** EEBOOT_MINIMAL: ',
+     &     'defined SINGLE_DISK_IO will result in losing'
+          CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
+     &                        SQUEEZE_RIGHT, myThid )
+          WRITE(msgBuf,'(2A)') '** WARNING ** EEBOOT_MINIMAL: ',
+     &     'any message (error/warning) from any proc <> 0'
+          CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
+     &                        SQUEEZE_RIGHT, myThid )
+        ENDIF
+#endif
+       ENDIF
+
+#if defined(ALLOW_NEST_PARENT) || defined(ALLOW_NEST_CHILD)
+       WRITE(standardMessageUnit,'(2(A,I6))')
+     &           ' mpiMyWId =', mpiMyWId, ' , color =',color
+#endif /* ALLOW_NEST_PARENT | ALLOW_NEST_CHILD */
+
+C--    Synchronise all processes
+C      Strictly this is superfluous, but by using it we can guarantee to
+C      find out about processes that did not start up.
+       CALL MPI_BARRIER( MPI_COMM_MODEL, mpiRC )
+       IF ( mpiRC .NE. MPI_SUCCESS ) THEN
+        eeBootError = .TRUE.
+        WRITE(msgBuf,'(A,I6)')
+     &        'EEBOOT_MINIMAL: MPI_BARRIER return code', mpiRC
+        CALL PRINT_ERROR( msgBuf, myThid )
+        GOTO 999
+       ENDIF
+
+C--    Get number of MPI processes
+       CALL MPI_COMM_SIZE ( MPI_COMM_MODEL, mpiNProcs, mpiRC )
+       IF ( mpiRC .NE. MPI_SUCCESS ) THEN
+        eeBootError = .TRUE.
+        WRITE(msgBuf,'(A,I6)')
+     &        'EEBOOT_MINIMAL: MPI_COMM_SIZE return code', mpiRC
+        CALL PRINT_ERROR( msgBuf, myThid )
+        GOTO 999
+       ENDIF
+       numberOfProcs = mpiNProcs
+
+#endif /* ALLOW_USE_MPI */
+      ENDIF
+
+C--    Under MPI only allow same number of processes as proc grid size.
+C      Strictly we are allowed more procs but knowing there
+C      is an exact match makes things easier.
+       IF ( numberOfProcs .NE. nPx*nPy ) THEN
+        eeBootError = .TRUE.
+        WRITE(msgBuf,'(2(A,I6))')
+     &  'EEBOOT_MINIMAL: No. of procs=', numberOfProcs,
+     &  ' not equal to nPx*nPy=', nPx*nPy
+        CALL PRINT_ERROR( msgBuf, myThid )
+        GOTO 999
+       ENDIF
+
+#ifdef USE_LIBHPM
+       CALL F_HPMINIT(myProcId, "mitgcmuv")
+#endif
+
+ 999  CONTINUE
+      RETURN
+      END
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/eedie.F
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/eedie.F	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/eedie.F	(revision 27955)
@@ -0,0 +1,107 @@
+#include "CPP_EEOPTIONS.h"
+#ifdef USE_LIBHPM
+# include "f_hpm.h"
+#endif
+
+CBOP
+      SUBROUTINE EEDIE
+C     *==========================================================*
+C     | SUBROUTINE EEDIE                                         |
+C     | o Close execution "environment", particularly perform    |
+C     |   steps to terminate parallel processing.                |
+C     *==========================================================*
+C     | Note: This routine can also be compiled with CPP         |
+C     | directives set so that no multi-processing is initialised|
+C     | This is OK and should work fine.                         |
+C     *==========================================================*
+      IMPLICIT NONE
+
+C     == Global variables ==
+#include "SIZE.h"
+#include "EEPARAMS.h"
+#include "EESUPPORT.h"
+CEOP
+
+C     == Local variables ==
+C     msgBuf       :: I/O Buffer
+C     nThreadsDone :: Used to count number of completed threads.
+C     I            :: Loop counter.
+      CHARACTER*(MAX_LEN_MBUF) msgBuf
+      INTEGER nThreadsDone
+      INTEGER I
+#ifdef ALLOW_USE_MPI
+C     mpiRC        :: Error code reporting variable used with MPI.
+      INTEGER mpiRC
+#endif /* ALLOW_USE_MPI */
+
+      IF ( eeBootError ) THEN
+C--   Skip ended threads counting if earlier error was found
+        WRITE(msgBuf,'(2A)')
+     &   'EEDIE: earlier error in multi-proc/thread setting'
+        CALL PRINT_ERROR( msgBuf, 1 )
+        fatalError = .TRUE.
+
+      ELSE
+C--   Check that all the threads have ended
+C     No thread should reach this loop before all threads have set
+C     threadIsComplete to TRUE. If they do then either there is a bug
+C     in the code or the behaviour of the parallel compiler directives
+C     are not right for this code. In the latter case different
+C     directives may be available or the compiler itself may have a
+C     bug or you may need a different parallel compiler for main.F
+        nThreadsDone = 0
+        DO I = 1, nThreads
+         IF ( threadIsComplete(I) ) nThreadsDone = nThreadsDone+1
+        ENDDO
+        IF ( nThreadsDone .LT. nThreads ) THEN
+         WRITE(msgBuf,'(A,I5,A)')
+     &    'S/R EEDIE: Only',nThreadsDone,' threads have completed,'
+         CALL PRINT_ERROR( msgBuf, 1 )
+         WRITE(msgBuf,'(A,I5,A)')
+     &    'S/R EEDIE:',nThreads,' are expected for this config !'
+         CALL PRINT_ERROR( msgBuf, 1 )
+         eeEndError = .TRUE.
+         fatalError = .TRUE.
+        ENDIF
+
+C--   end if/else eebootError
+      ENDIF
+
+#ifdef USE_LIBHPM
+      CALL F_HPMTERMINATE(myProcId)
+#endif
+
+C--   Flush IO-unit before MPI termination
+      CALL MDS_FLUSH( errorMessageUnit, 1 )
+c#ifdef ALLOW_USE_MPI
+      CALL MDS_FLUSH( standardMessageUnit, 1 )
+c#endif /* ALLOW_USE_MPI */
+
+#ifdef ALLOW_USE_MPI
+C- Note: since MPI_INIT is always called, better to also always terminate MPI
+C        (even if usingMPI=F) --> comment out test on usingMPI
+c     IF ( usingMPI ) THEN
+
+C--   MPI style multiple-process termination
+C--   ======================================
+#if (defined COMPONENT_MODULE) || (defined ALLOW_CPL_ISSM)
+       IF ( useCoupler) CALL MPI_BARRIER( MPI_COMM_WORLD, mpiRC )
+#endif
+#ifdef ALLOW_OASIS
+       IF ( useOASIS ) CALL OASIS_FINALIZE
+#endif
+       CALL MPI_FINALIZE  ( mpiRC )
+       IF ( mpiRC .NE. MPI_SUCCESS ) THEN
+        eeEndError = .TRUE.
+        fatalError = .TRUE.
+        WRITE(msgBuf,'(A,I5)')
+     &       'S/R FIN_PROCS: MPI_FINALIZE return code',
+     &       mpiRC
+        CALL PRINT_ERROR( msgBuf, 1 )
+       ENDIF
+
+c     ENDIF
+#endif /* ALLOW_USE_MPI */
+
+      RETURN
+      END
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/packages.conf
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/packages.conf	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/packages.conf	(revision 27955)
@@ -0,0 +1,5 @@
+#-- list of packages (or group of packages) to compile for this experiment:
+gfd
+obcs
+shelfice
+diagnostics
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/shelfice_step_icemass.F
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/shelfice_step_icemass.F	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_4003/shelfice_step_icemass.F	(revision 27955)
@@ -0,0 +1,236 @@
+#include "SHELFICE_OPTIONS.h"
+#ifdef ALLOW_STREAMICE
+# include "STREAMICE_OPTIONS.h"
+#endif
+
+C--   File shelfice_step_icemass.F:
+C--    Contents:
+C--    o SHELFICE_STEP_ICEMASS
+C--    o SHELFICE_NETMASSFLUX_SURF
+
+C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
+CBOP
+C !ROUTINE: SHELFICE_STEP_ICEMASS
+
+C !INTERFACE: ==========================================================
+      SUBROUTINE SHELFICE_STEP_ICEMASS(
+     I                        myTime, myIter, myThid )
+
+C !DESCRIPTION:
+C Serves as a "stub" for ice dynamics
+C will later be used to
+
+C !USES: ===============================================================
+      IMPLICIT NONE
+#include "SIZE.h"
+#include "EEPARAMS.h"
+#include "PARAMS.h"
+#include "GRID.h"
+#include "SHELFICE.h"
+#ifdef ALLOW_STREAMICE
+# include "STREAMICE.h"
+#endif
+
+C     !INPUT/OUTPUT PARAMETERS:
+C     myTime      :: current time in simulation
+C     myIter      :: current iteration number insimulation
+C     myThid      :: my thread Id number
+      _RL  myTime
+      INTEGER myIter
+      INTEGER myThid
+CEOP
+
+#ifdef ALLOW_SHELFICE
+C !LOCAL VARIABLES : ====================================================
+C     i,j, bi,bj  :: loop indices
+      INTEGER bi,bj,i,j
+
+      IF ( SHELFICEMassStepping ) THEN
+
+       IF (useStreamIce) THEN
+
+#ifdef ALLOW_STREAMICE
+        DO bj = myByLo(myThid), myByHi(myThid)
+         DO bi = myBxLo(myThid), myBxHi(myThid)
+          DO j=1-OLy,sNy+OLy-1
+           DO i=1-OLx+1,sNx+OLx-1
+            IF ( streamice_hmask(i,j,bi,bj).EQ.1 .OR.
+     &           streamice_hmask(i,j,bi,bj).EQ.2 ) THEN
+             shelficeMass(i,j,bi,bj) =
+     &        H_streamice(i,j,bi,bj) * streamice_density
+            ENDIF
+           ENDDO
+          ENDDO
+         ENDDO
+        ENDDO
+#endif /* ALLOW_STREAMICE */
+
+       ELSEIF (useCoupler) THEN
+
+#ifdef ALLOW_CPL_ISSM
+        DO bj = myByLo(myThid), myByHi(myThid)
+         DO bi = myBxLo(myThid), myBxHi(myThid)
+          DO j=1-OLy,sNy+OLy-1
+           DO i=1-OLx+1,sNx+OLx-1
+             shelficeMass(i,j,bi,bj) = -R_shelfIce(i,j,bi,bj) * rhoConst
+           ENDDO
+          ENDDO
+         ENDDO
+        ENDDO
+#endif /* ALLOW_CPL_ISSM */
+
+       ELSE
+
+        DO bj = myByLo(myThid), myByHi(myThid)
+         DO bi = myBxLo(myThid), myBxHi(myThid)
+
+           IF ( .NOT.SHELFICEDynMassOnly ) THEN
+            DO j=1-OLy,sNy+OLy
+             DO i=1-OLx,sNx+OLx
+              shelficeMass(i,j,bi,bj) = shelficeMass(i,j,bi,bj)
+     &              + shelfIceFreshWaterFlux(i,j,bi,bj)*deltaT
+             ENDDO
+            ENDDO
+           ENDIF
+
+           DO j=1-OLy,sNy+OLy
+            DO i=1-OLx,sNx+OLx
+              shelficeMass(i,j,bi,bj) = shelficeMass(i,j,bi,bj)
+     &              + shelfIceMassDynTendency(i,j,bi,bj)*deltaT
+            ENDDO
+           ENDDO
+
+C--    quick fix to prevent ice-shelf mass to become negative
+           DO j=1-OLy,sNy+OLy
+            DO i=1-OLx,sNx+OLx
+              shelficeMass(i,j,bi,bj) =
+     &              MAX( shelficeMass(i,j,bi,bj), zeroRL )
+            ENDDO
+           ENDDO
+
+         ENDDO
+        ENDDO
+       ENDIF
+
+       _EXCH_XY_RL( shelficeMass, myThid )
+
+      ENDIF
+
+#ifdef ALLOW_DIAGNOSTICS
+      IF (useDiagnostics) THEN
+        CALL DIAGNOSTICS_FILL( shelficeMass, 'SHI_mass',
+     I                         0, 1, 0, 1, 1, myThid )
+      ENDIF
+#endif /* ALLOW_DIAGNOSTICS */
+#endif /* ALLOW_SHELFICE */
+
+      RETURN
+      END
+
+C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
+CBOP
+C !ROUTINE: SHELFICE_NETMASSFLUX_SURF
+
+C !INTERFACE: ==========================================================
+      SUBROUTINE SHELFICE_NETMASSFLUX_SURF(
+     O                        shelfIceNetMassFlux,
+     I                        myTime, myIter, myThid )
+
+C !DESCRIPTION:
+C compute the net mass flux implied by S/R SHELFICE_STEP_MASS
+
+C !USES: ===============================================================
+      IMPLICIT NONE
+#include "SIZE.h"
+#include "EEPARAMS.h"
+#include "PARAMS.h"
+#include "GRID.h"
+#include "SHELFICE.h"
+#ifdef ALLOW_STREAMICE
+# include "STREAMICE.h"
+#endif
+#include "DYNVARS.h"
+
+C     !INPUT/OUTPUT PARAMETERS:
+C     myTime      :: current time in simulation
+C     myIter      :: current iteration number insimulation
+C     myThid      :: my thread Id number
+      _RL  myTime
+      INTEGER myIter
+      INTEGER myThid
+C     net mass flux in m^3/s
+      _RL shelfIceNetMassFlux
+CEOP
+
+#ifdef ALLOW_SHELFICE
+C !LOCAL VARIABLES : ====================================================
+C     i,j, bi,bj  :: loop indices
+      INTEGER bi,bj,i,j
+      _RL shelfIceNetMassFluxTile(nSx,nSy)
+
+      shelfIceNetMassFlux = 0. _d 0
+
+      IF ( SHELFICEMassStepping ) THEN
+
+       IF (useStreamIce) THEN
+
+#ifdef ALLOW_STREAMICE
+        DO bj = myByLo(myThid), myByHi(myThid)
+         DO bi = myBxLo(myThid), myBxHi(myThid)
+          shelfIceNetMassFluxTile(bi,bj) = 0. _d 0
+          DO j=1,sNy
+           DO i=1,sNx
+            IF ( streamice_hmask(i,j,bi,bj).EQ.1 .OR.
+     &           streamice_hmask(i,j,bi,bj).EQ.2 ) THEN
+C--   this assumes that the change in H_streamice include the melting flux
+CML             shelfIceNetMassFluxTile(bi,bj) =
+CML     &              shelfIceNetMassFluxTile(bi,bj)
+CML     &            +(H_streamice(i,j,bi,bj)-H_streamice_prev(i,j,bi,bj))
+CML     &            /deltaT * streamice_density * mass2rUnit
+CML     &            * _rA(i,j,bi,bj) * maskInC(i,j,bi,bj)
+            ENDIF
+           ENDDO
+          ENDDO
+         ENDDO
+        ENDDO
+#endif /* ALLOW_STREAMICE */
+
+       ELSE
+
+        DO bj = myByLo(myThid), myByHi(myThid)
+         DO bi = myBxLo(myThid), myBxHi(myThid)
+          shelfIceNetMassFluxTile(bi,bj) = 0. _d 0
+          DO j=1,sNy
+           DO i=1,sNx
+C--   Flux of new ice will raise the sea level
+            shelfIceNetMassFluxTile(bi,bj) =
+     &             shelfIceNetMassFluxTile(bi,bj)
+     &           + shelfIceMassDynTendency(i,j,bi,bj)
+     &           * _rA(i,j,bi,bj) * maskInC(i,j,bi,bj)
+            IF ( .NOT.SHELFICEDynMassOnly ) THEN
+C--   Freshwater flux by thermodynamic processes. In the case of
+C     melting this will be negative (positive upward) so it will reduce
+C     the amount of added ice mass. The same freshwater flux is added
+C     to the ocean in EmPmR and will raise the sea level, so that this
+C     contribution is canceled.
+             shelfIceNetMassFluxTile(bi,bj) =
+     &              shelfIceNetMassFluxTile(bi,bj)
+     &            + shelfIceFreshWaterFlux(i,j,bi,bj)
+     &            * _rA(i,j,bi,bj) * maskInC(i,j,bi,bj)
+            ENDIF
+           ENDDO
+          ENDDO
+         ENDDO
+        ENDDO
+
+       ENDIF
+
+       CALL GLOBAL_SUM_TILE_RL( shelficeNetMassFluxTile,
+     &      shelficeNetMassFlux, myThid )
+
+      ENDIF
+
+#endif /* ALLOW_SHELFICE */
+
+      RETURN
+      END
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/CPP_EEOPTIONS.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/CPP_EEOPTIONS.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/CPP_EEOPTIONS.h	(revision 27955)
@@ -0,0 +1,161 @@
+CBOP
+C     !ROUTINE: CPP_EEOPTIONS.h
+C     !INTERFACE:
+C     include "CPP_EEOPTIONS.h"
+C
+C     !DESCRIPTION:
+C     *==========================================================*
+C     | CPP\_EEOPTIONS.h                                         |
+C     *==========================================================*
+C     | C preprocessor "execution environment" supporting        |
+C     | flags. Use this file to set flags controlling the        |
+C     | execution environment in which a model runs - as opposed |
+C     | to the dynamical problem the model solves.               |
+C     | Note: Many options are implemented with both compile time|
+C     |       and run-time switches. This allows options to be   |
+C     |       removed altogether, made optional at run-time or   |
+C     |       to be permanently enabled. This convention helps   |
+C     |       with the data-dependence analysis performed by the |
+C     |       adjoint model compiler. This data dependency       |
+C     |       analysis can be upset by runtime switches that it  |
+C     |       is unable to recoginise as being fixed for the     |
+C     |       duration of an integration.                        |
+C     |       A reasonable way to use these flags is to          |
+C     |       set all options as selectable at runtime but then  |
+C     |       once an experimental configuration has been        |
+C     |       identified, rebuild the code with the appropriate  |
+C     |       options set at compile time.                       |
+C     *==========================================================*
+CEOP
+
+#ifndef _CPP_EEOPTIONS_H_
+#define _CPP_EEOPTIONS_H_
+
+C     In general the following convention applies:
+C     ALLOW  - indicates an feature will be included but it may
+C     CAN      have a run-time flag to allow it to be switched
+C              on and off.
+C              If ALLOW or CAN directives are "undef'd" this generally
+C              means that the feature will not be available i.e. it
+C              will not be included in the compiled code and so no
+C              run-time option to use the feature will be available.
+C
+C     ALWAYS - indicates the choice will be fixed at compile time
+C              so no run-time option will be present
+
+C=== Macro related options ===
+C--   Control storage of floating point operands
+C     On many systems it improves performance only to use
+C     8-byte precision for time stepped variables.
+C     Constant in time terms ( geometric factors etc.. )
+C     can use 4-byte precision, reducing memory utilisation and
+C     boosting performance because of a smaller working set size.
+C     However, on vector CRAY systems this degrades performance.
+C     Enable to switch REAL4_IS_SLOW from genmake2 (with LET_RS_BE_REAL4):
+#ifdef LET_RS_BE_REAL4
+#undef REAL4_IS_SLOW
+#else /* LET_RS_BE_REAL4 */
+#define REAL4_IS_SLOW
+#endif /* LET_RS_BE_REAL4 */
+
+C--   Control use of "double" precision constants.
+C     Use D0 where it means REAL*8 but not where it means REAL*16
+#define D0 d0
+
+C=== IO related options ===
+C--   Flag used to indicate whether Fortran formatted write
+C     and read are threadsafe. On SGI the routines can be thread
+C     safe, on Sun it is not possible - if you are unsure then
+C     undef this option.
+#undef FMTFTN_IO_THREAD_SAFE
+
+C--   Flag used to indicate whether Binary write to Local file (i.e.,
+C     a different file for each tile) and read are thread-safe.
+#undef LOCBIN_IO_THREAD_SAFE
+
+C--   Flag to turn off the writing of error message to ioUnit zero
+#undef DISABLE_WRITE_TO_UNIT_ZERO
+
+C--   Alternative formulation of BYTESWAP, faster than
+C     compiler flag -byteswapio on the Altix.
+#undef FAST_BYTESWAP
+
+C--   Flag to turn on old default of opening scratch files with the
+C     STATUS='SCRATCH' option. This method, while perfectly FORTRAN-standard,
+C     caused filename conflicts on some multi-node/multi-processor platforms
+C     in the past and has been replace by something (hopefully) more robust.
+#undef USE_FORTRAN_SCRATCH_FILES
+
+C--   Flag defined for eeboot_minimal.F, eeset_parms.F and open_copy_data_file.F
+C     to write STDOUT, STDERR and scratch files from process 0 only.
+C WARNING: to use only when absolutely confident that the setup is working
+C     since any message (error/warning/print) from any proc <> 0 will be lost.
+#undef SINGLE_DISK_IO
+
+C=== MPI, EXCH and GLOBAL_SUM related options ===
+C--   Flag turns off MPI_SEND ready_to_receive polling in the
+C     gather_* subroutines to speed up integrations.
+#undef DISABLE_MPI_READY_TO_RECEIVE
+
+C--   Control MPI based parallel processing
+CXXX We no longer select the use of MPI via this file (CPP_EEOPTIONS.h)
+CXXX To use MPI, use an appropriate genmake2 options file or use
+CXXX genmake2 -mpi .
+CXXX #undef  ALLOW_USE_MPI
+
+C--   Control use of communication that might overlap computation.
+C     Under MPI selects/deselects "non-blocking" sends and receives.
+#define ALLOW_ASYNC_COMMUNICATION
+#undef  ALLOW_ASYNC_COMMUNICATION
+#undef  ALWAYS_USE_ASYNC_COMMUNICATION
+C--   Control use of communication that is atomic to computation.
+C     Under MPI selects/deselects "blocking" sends and receives.
+#define ALLOW_SYNC_COMMUNICATION
+#undef  ALWAYS_USE_SYNC_COMMUNICATION
+
+C--   Control XY periodicity in processor to grid mappings
+C     Note: Model code does not need to know whether a domain is
+C           periodic because it has overlap regions for every box.
+C           Model assume that these values have been
+C           filled in some way.
+#undef  ALWAYS_PREVENT_X_PERIODICITY
+#undef  ALWAYS_PREVENT_Y_PERIODICITY
+#define CAN_PREVENT_X_PERIODICITY
+#define CAN_PREVENT_Y_PERIODICITY
+
+C--   disconnect tiles (no exchange between tiles, just fill-in edges
+C     assuming locally periodic subdomain)
+#undef DISCONNECTED_TILES
+
+C--   Always cumulate tile local-sum in the same order by applying MPI allreduce
+C     to array of tiles ; can get slower with large number of tiles (big set-up)
+#define GLOBAL_SUM_ORDER_TILES
+
+C--   Alternative way of doing global sum without MPI allreduce call
+C     but instead, explicit MPI send & recv calls. Expected to be slower.
+#undef GLOBAL_SUM_SEND_RECV
+
+C--   Alternative way of doing global sum on a single CPU
+C     to eliminate tiling-dependent roundoff errors. Note: This is slow.
+#undef  CG2D_SINGLECPU_SUM
+
+C=== Other options (to add/remove pieces of code) ===
+C--   Flag to turn on checking for errors from all threads and procs
+C     (calling S/R STOP_IF_ERROR) before stopping.
+#define USE_ERROR_STOP
+
+C--   Control use of communication with other component:
+C     allow to import and export from/to Coupler interface.
+#undef COMPONENT_MODULE
+
+C--   Options used to couple MITgcm and ISSM
+C     Eventually this option can probably be merged with COMPONENT_MODULE
+#define ALLOW_CPL_ISSM
+
+C--   Activate some pieces of code for coupling to GEOS AGCM
+#undef HACK_FOR_GMAO_CPL
+
+#endif /* _CPP_EEOPTIONS_H_ */
+
+#include "CPP_EEMACROS.h"
+
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/CPP_OPTIONS.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/CPP_OPTIONS.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/CPP_OPTIONS.h	(revision 27955)
@@ -0,0 +1,141 @@
+#ifndef CPP_OPTIONS_H
+#define CPP_OPTIONS_H
+
+CBOP
+C !ROUTINE: CPP_OPTIONS.h
+C !INTERFACE:
+C #include "CPP_OPTIONS.h"
+
+C !DESCRIPTION:
+C *==================================================================*
+C | main CPP options file for the model:
+C | Control which optional features to compile in model/src code.
+C *==================================================================*
+CEOP
+
+C CPP flags controlling particular source code features
+
+C-- Forcing code options:
+
+C o Shortwave heating as extra term in external_forcing.F
+C Note: this should be a run-time option
+#define SHORTWAVE_HEATING
+
+C o Include/exclude Geothermal Heat Flux at the bottom of the ocean
+#undef ALLOW_GEOTHERMAL_FLUX
+
+C o Allow to account for heating due to friction (and momentum dissipation)
+#undef ALLOW_FRICTION_HEATING
+
+C o Allow mass source or sink of Fluid in the interior
+C   (3-D generalisation of oceanic real-fresh water flux)
+#undef ALLOW_ADDFLUID
+
+C o Include pressure loading code
+#define ATMOSPHERIC_LOADING
+
+C o Include/exclude balancing surface forcing fluxes code
+#undef ALLOW_BALANCE_FLUXES
+
+C o Include/exclude balancing surface forcing relaxation code
+#undef ALLOW_BALANCE_RELAX
+
+C o Include/exclude checking for negative salinity
+#undef CHECK_SALINITY_FOR_NEGATIVE_VALUES
+
+C-- Options to discard parts of the main code:
+
+C o Exclude/allow external forcing-fields load
+C   this allows to read & do simple linear time interpolation of oceanic
+C   forcing fields, if no specific pkg (e.g., EXF) is used to compute them.
+#undef EXCLUDE_FFIELDS_LOAD
+
+C o Include/exclude phi_hyd calculation code
+#define INCLUDE_PHIHYD_CALCULATION_CODE
+
+C-- Vertical mixing code options:
+
+C o Include/exclude call to S/R CONVECT
+#define INCLUDE_CONVECT_CALL
+
+C o Include/exclude call to S/R CALC_DIFFUSIVITY
+#define INCLUDE_CALC_DIFFUSIVITY_CALL
+
+C o Allow full 3D specification of vertical diffusivity
+#undef ALLOW_3D_DIFFKR
+
+C o Allow latitudinally varying BryanLewis79 vertical diffusivity
+#undef ALLOW_BL79_LAT_VARY
+
+C o Exclude/allow partial-cell effect (physical or enhanced) in vertical mixing
+C   this allows to account for partial-cell in vertical viscosity and diffusion,
+C   either from grid-spacing reduction effect or as artificially enhanced mixing
+C   near surface & bottom for too thin grid-cell
+#undef EXCLUDE_PCELL_MIX_CODE
+
+C-- Time-stepping code options:
+
+C o Include/exclude combined Surf.Pressure and Drag Implicit solver code
+#define ALLOW_SOLVE4_PS_AND_DRAG
+
+C o Include/exclude Implicit vertical advection code
+#define INCLUDE_IMPLVERTADV_CODE
+
+C o Include/exclude AdamsBashforth-3rd-Order code
+#undef ALLOW_ADAMSBASHFORTH_3
+
+C-- Model formulation options:
+
+C o Allow/exclude "Exact Convervation" of fluid in Free-Surface formulation
+C   that ensures that d/dt(eta) is exactly equal to - Div.Transport
+#define EXACT_CONSERV
+
+C o Allow the use of Non-Linear Free-Surface formulation
+C   this implies that grid-cell thickness (hFactors) varies with time
+#define NONLIN_FRSURF
+
+C o Include/exclude nonHydrostatic code
+#undef ALLOW_NONHYDROSTATIC
+
+C o Include/exclude GM-like eddy stress in momentum code
+#undef ALLOW_EDDYPSI
+
+C-- Algorithm options:
+
+C o Use Non Self-Adjoint (NSA) conjugate-gradient solver
+#undef ALLOW_CG2D_NSA
+
+C o Include/exclude code for single reduction Conjugate-Gradient solver
+#define ALLOW_SRCG
+
+C o Choices for implicit solver routines solve_*diagonal.F
+C   The following has low memory footprint, but not suitable for AD
+#define SOLVE_DIAGONAL_LOWMEMORY
+C   The following one suitable for AD but does not vectorize
+#undef SOLVE_DIAGONAL_KINNER
+
+C-- Retired code options:
+
+C o Use LONG.bin, LATG.bin, etc., initialization for ini_curviliear_grid.F
+C   Default is to use "new" grid files (OLD_GRID_IO undef) but OLD_GRID_IO
+C   is still useful with, e.g., single-domain curvilinear configurations.
+#undef OLD_GRID_IO
+#define ALLOW_SOLVE4_PS_AND_DRAG
+
+
+C-- Other option files:
+
+C o Execution environment support options
+#include "CPP_EEOPTIONS.h"
+
+C o Include/exclude single header file containing multiple packages options
+C   (AUTODIFF, COST, CTRL, ECCO, EXF ...) instead of the standard way where
+C   each of the above pkg get its own options from its specific option file.
+C   Although this method, inherited from ECCO setup, has been traditionally
+C   used for all adjoint built, work is in progress to allow to use the
+C   standard method also for adjoint built.
+c#ifdef PACKAGES_CONFIG_H
+c# include "ECCO_CPPOPTIONS.h"
+c#endif
+
+#endif /* CPP_OPTIONS_H */
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/DIAGNOSTICS_SIZE.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/DIAGNOSTICS_SIZE.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/DIAGNOSTICS_SIZE.h	(revision 27955)
@@ -0,0 +1,28 @@
+C     Diagnostics Array Dimension
+C     ---------------------------
+C     ndiagMax   :: maximum total number of available diagnostics
+C     numlists   :: maximum number of diagnostics list (in data.diagnostics)
+C     numperlist :: maximum number of active diagnostics per list (data.diagnostics)
+C     numLevels  :: maximum number of levels to write    (data.diagnostics)
+C     numDiags   :: maximum size of the storage array for active 2D/3D diagnostics
+C     nRegions   :: maximum number of regions (statistics-diagnostics)
+C     sizRegMsk  :: maximum size of the regional-mask (statistics-diagnostics)
+C     nStats     :: maximum number of statistics (e.g.: aver,min,max ...)
+C     diagSt_size:: maximum size of the storage array for statistics-diagnostics
+C Note : may need to increase "numDiags" when using several 2D/3D diagnostics,
+C  and "diagSt_size" (statistics-diags) since values here are deliberately small.
+      INTEGER    ndiagMax
+      INTEGER    numlists, numperlist, numLevels
+      INTEGER    numDiags
+      INTEGER    nRegions, sizRegMsk, nStats
+      INTEGER    diagSt_size
+      PARAMETER( ndiagMax = 500 )
+      PARAMETER( numlists = 10, numperlist = 50, numLevels=2*Nr )
+      PARAMETER( numDiags = 4*Nr )
+      PARAMETER( nRegions = 0 , sizRegMsk = 1 , nStats = 4 )
+      PARAMETER( diagSt_size = 10*Nr )
+
+
+CEH3 ;;; Local Variables: ***
+CEH3 ;;; mode:fortran ***
+CEH3 ;;; End: ***
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/SHELFICE_OPTIONS.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/SHELFICE_OPTIONS.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/SHELFICE_OPTIONS.h	(revision 27955)
@@ -0,0 +1,31 @@
+C     *==========================================================*
+C     | SHELFICE_OPTIONS.h
+C     | o CPP options file for SHELFICE package.
+C     *==========================================================*
+C     | Use this file for selecting options within the SHELFICE
+C     | package.
+C     *==========================================================*
+
+#ifndef SHELFICE_OPTIONS_H
+#define SHELFICE_OPTIONS_H
+#include "PACKAGES_CONFIG.h"
+#include "CPP_OPTIONS.h"
+
+#ifdef ALLOW_SHELFICE
+C     Package-specific Options & Macros go here
+
+C     allow code for simple ISOMIP thermodynamics
+#define ALLOW_ISOMIP_TD
+
+C     allow friction velocity-dependent transfer coefficient
+C     following Holland and Jenkins, JPO, 1999
+#define SHI_ALLOW_GAMMAFRICT
+
+C     allow (vertical) remeshing whenever ocean top thickness factor
+C     exceeds thresholds
+#define ALLOW_SHELFICE_REMESHING
+C     and allow to print message to STDOUT when this happens
+#define SHELFICE_REMESH_PRINT
+
+#endif /* ALLOW_SHELFICE */
+#endif /* SHELFICE_OPTIONS_H */
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/SIZE.h
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/SIZE.h	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/SIZE.h	(revision 27955)
@@ -0,0 +1,64 @@
+CBOP
+C    !ROUTINE: SIZE.h
+C    !INTERFACE:
+C    include SIZE.h
+C    !DESCRIPTION: \bv
+C     *==========================================================*
+C     | SIZE.h Declare size of underlying computational grid.
+C     *==========================================================*
+C     | The design here supports a three-dimensional model grid
+C     | with indices I,J and K. The three-dimensional domain
+C     | is comprised of nPx*nSx blocks (or tiles) of size sNx
+C     | along the first (left-most index) axis, nPy*nSy blocks
+C     | of size sNy along the second axis and one block of size
+C     | Nr along the vertical (third) axis.
+C     | Blocks/tiles have overlap regions of size OLx and OLy
+C     | along the dimensions that are subdivided.
+C     *==========================================================*
+C     \ev
+C
+C     Voodoo numbers controlling data layout:
+C     sNx :: Number of X points in tile.
+C     sNy :: Number of Y points in tile.
+C     OLx :: Tile overlap extent in X.
+C     OLy :: Tile overlap extent in Y.
+C     nSx :: Number of tiles per process in X.
+C     nSy :: Number of tiles per process in Y.
+C     nPx :: Number of processes to use in X.
+C     nPy :: Number of processes to use in Y.
+C     Nx  :: Number of points in X for the full domain.
+C     Ny  :: Number of points in Y for the full domain.
+C     Nr  :: Number of points in vertical direction.
+CEOP
+      INTEGER sNx
+      INTEGER sNy
+      INTEGER OLx
+      INTEGER OLy
+      INTEGER nSx
+      INTEGER nSy
+      INTEGER nPx
+      INTEGER nPy
+      INTEGER Nx
+      INTEGER Ny
+      INTEGER Nr
+      PARAMETER (
+     &           sNx =  20,
+     &           sNy =  20,
+     &           OLx =   3,
+     &           OLy =   3,
+     &           nSx =   1,
+     &           nSy =   1,
+     &           nPx = 1,
+     &           nPy = 2,
+     &           Nx  = sNx*nSx*nPx,
+     &           Ny  = sNy*nSy*nPy,
+     &           Nr  =  30)
+
+C     MAX_OLX :: Set to the maximum overlap region size of any array
+C     MAX_OLY    that will be exchanged. Controls the sizing of exch
+C                routine buffers.
+      INTEGER MAX_OLX
+      INTEGER MAX_OLY
+      PARAMETER ( MAX_OLX = OLx,
+     &            MAX_OLY = OLy )
+
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/SIZE.h.bak
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/SIZE.h.bak	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/SIZE.h.bak	(revision 27955)
@@ -0,0 +1,64 @@
+CBOP
+C    !ROUTINE: SIZE.h
+C    !INTERFACE:
+C    include SIZE.h
+C    !DESCRIPTION: \bv
+C     *==========================================================*
+C     | SIZE.h Declare size of underlying computational grid.
+C     *==========================================================*
+C     | The design here supports a three-dimensional model grid
+C     | with indices I,J and K. The three-dimensional domain
+C     | is comprised of nPx*nSx blocks (or tiles) of size sNx
+C     | along the first (left-most index) axis, nPy*nSy blocks
+C     | of size sNy along the second axis and one block of size
+C     | Nr along the vertical (third) axis.
+C     | Blocks/tiles have overlap regions of size OLx and OLy
+C     | along the dimensions that are subdivided.
+C     *==========================================================*
+C     \ev
+C
+C     Voodoo numbers controlling data layout:
+C     sNx :: Number of X points in tile.
+C     sNy :: Number of Y points in tile.
+C     OLx :: Tile overlap extent in X.
+C     OLy :: Tile overlap extent in Y.
+C     nSx :: Number of tiles per process in X.
+C     nSy :: Number of tiles per process in Y.
+C     nPx :: Number of processes to use in X.
+C     nPy :: Number of processes to use in Y.
+C     Nx  :: Number of points in X for the full domain.
+C     Ny  :: Number of points in Y for the full domain.
+C     Nr  :: Number of points in vertical direction.
+CEOP
+      INTEGER sNx
+      INTEGER sNy
+      INTEGER OLx
+      INTEGER OLy
+      INTEGER nSx
+      INTEGER nSy
+      INTEGER nPx
+      INTEGER nPy
+      INTEGER Nx
+      INTEGER Ny
+      INTEGER Nr
+      PARAMETER (
+     &           sNx =  20,
+     &           sNy =  20,
+     &           OLx =   3,
+     &           OLy =   3,
+     &           nSx =   1,
+     &           nSy =   1,
+     &           nPx =   1,
+     &           nPy =   2,
+     &           Nx  = sNx*nSx*nPx,
+     &           Ny  = sNy*nSy*nPy,
+     &           Nr  =  30)
+
+C     MAX_OLX :: Set to the maximum overlap region size of any array
+C     MAX_OLY    that will be exchanged. Controls the sizing of exch
+C                routine buffers.
+      INTEGER MAX_OLX
+      INTEGER MAX_OLY
+      PARAMETER ( MAX_OLX = OLx,
+     &            MAX_OLY = OLy )
+
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/cpl_issm.F
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/cpl_issm.F	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/cpl_issm.F	(revision 27955)
@@ -0,0 +1,220 @@
+#include "PACKAGES_CONFIG.h"
+#include "CPP_OPTIONS.h"
+
+CBOP
+C     !ROUTINE: CPL_ISSM
+C     !INTERFACE:
+      SUBROUTINE CPL_ISSM( myTime, myIter, myThid )
+
+C     !DESCRIPTION: \bv
+C     *==================================================================
+C     | SUBROUTINE cpl_issm
+C     | o Couple MITgcm ocean model with ISSM ice sheet model
+C     *==================================================================
+C     \ev
+
+C     !USES:
+      IMPLICIT NONE
+C     == Global variables ==
+#include "SIZE.h"
+#include "EEPARAMS.h"
+#include "PARAMS.h"
+#include "DYNVARS.h"
+#include "GRID.h"
+#include "FFIELDS.h"
+#include "SHELFICE_OPTIONS.h"
+#include "SHELFICE.h"
+#ifdef ALLOW_EXF
+# include "EXF_OPTIONS.h"
+# include "EXF_FIELDS.h"
+#endif
+
+      LOGICAL  DIFFERENT_MULTIPLE
+      EXTERNAL DIFFERENT_MULTIPLE
+
+C     !LOCAL VARIABLES:
+C     mytime - time counter for this thread (seconds)
+C     myiter - iteration counter for this thread
+C     mythid - thread number for this instance of the routine.
+      _RL     mytime
+      INTEGER myiter, mythid 
+CEOP
+
+#ifdef ALLOW_CPL_ISSM
+#include "EESUPPORT.h"
+      COMMON /CPL_MPI_ID/ mpiMyWid, toissmcomm
+      INTEGER mpiMyWid, toissmcomm, mpiRC
+      INTEGER mpistatus(MPI_STATUS_SIZE)
+      INTEGER i, j, bi, bj, buffsize
+      COMMON /CPL_ISSM_TIME/ CouplingTime
+      _R8 CouplingTime, IceModelTime
+      _R8 xfer_array(Nx,Ny)
+      _R8 local(1:sNx,1:sNy,nSx,nSy)
+      CHARACTER*(MAX_LEN_MBUF) suff
+
+C Initialization steps I1, I2, and I3:
+      IF( myTime .EQ. startTime ) THEN
+
+C   I1. ISSM sends CouplingTime, the interval at which we couple
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            call MPI_Recv(CouplingTime,1,MPI_DOUBLE,0,10001000,
+     &           toissmcomm,mpistatus,mpiRC)
+            _END_MASTER( myThid )
+         ENDIF
+         _BEGIN_MASTER( myThid )
+         CALL MPI_BCAST(CouplingTime,1,MPI_DOUBLE,0,
+     &        MPI_COMM_MODEL,mpiRC)
+         _END_MASTER( myThid )
+C        print*, 'Ocean received CouplingTime: ', CouplingTime
+
+C   I2. MITgcm sends grid size (NX and NY)
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            call MPI_Send(Nx,1,MPI_INT,0,10001003,
+     &           toissmcomm,mpistatus)
+            call MPI_Send(Ny,1,MPI_INT,0,10001004,
+     &           toissmcomm,mpistatus)
+            _END_MASTER( myThid )
+         ENDIF
+
+C   I3. MITgcm sends grid coordinates of center of cells
+C       (longitude -180 <= XC < 180 and latitude YC)
+C     Send longitude East of center of cell
+         DO bj=1,nSy
+            DO bi=1,nSx
+               DO j=1,sNy
+                  DO i=1,sNx
+                     local(i,j,bi,bj) = xC(i,j,bi,bj)
+                  ENDDO
+               ENDDO
+            ENDDO
+         ENDDO
+         CALL BAR2( myThid ) 
+         CALL GATHER_2D_R8( xfer_array, local, Nx, Ny,
+     &        .FALSE., .FALSE., myThid )
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            buffsize = Nx*Ny
+            CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
+     &           0,10001005,toissmcomm,mpistatus)
+            _END_MASTER( myThid )
+         ENDIF
+         CALL BAR2( myThid )
+C     Send latitude North of center of cell
+         DO bj=1,nSy
+            DO bi=1,nSx
+               DO j=1,sNy
+                  DO i=1,sNx
+                     local(i,j,bi,bj) = yC(i,j,bi,bj)
+                  ENDDO
+               ENDDO
+            ENDDO
+         ENDDO
+         CALL BAR2( myThid ) 
+         CALL GATHER_2D_R8( xfer_array, local, Nx, Ny,
+     &        .FALSE., .FALSE., myThid )
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            buffsize = Nx*Ny
+            CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
+     &           0,10001006,toissmcomm,mpistatus)
+            _END_MASTER( myThid )
+         ENDIF
+         CALL BAR2( myThid )
+
+      ENDIF
+C End initialization steps I1, I2, and I3.
+
+C Recurring steps C1 and C2:
+      IF( MOD(myTime,CouplingTime) .LT. deltaT/2. ) THEN
+
+C   C1. ISSM sends ice model time IceTimeTag
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            call MPI_Recv(IceModelTime,1,MPI_DOUBLE,0,10001001,
+     &           toissmcomm,mpistatus,mpiRC)
+C           print*, 'Ocean received IceModelTime: ', IceModelTime
+            _END_MASTER( myThid )
+         ENDIF
+
+C   C2. MITgcm sends ocean model time OceanTimeTag
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            call MPI_Send(myTime,1,MPI_DOUBLE,0,10001002,
+     &           toissmcomm,mpistatus)
+            _END_MASTER( myThid )
+         ENDIF
+
+      ENDIF
+C End recurring steps C1 and C2.
+
+C Recurring step C3 except during Initialization:
+C  C3. MITgcm sends
+C      (N-1)*CouplingTime <= OceanModelTime < N*CouplingTime
+C      time-mean melt rate to ISSM
+      IF( myTime .NE. startTime .AND.
+     &     MOD(myTime,CouplingTime) .LT. deltaT/2. ) THEN
+         DO bj=1,nSy
+            DO bi=1,nSx
+               DO j=1,sNy
+                  DO i=1,sNx
+                     local(i,j,bi,bj)=shelficeFreshWaterFlux(i,j,bi,bj)
+                  ENDDO
+               ENDDO
+            ENDDO
+         ENDDO
+         CALL BAR2( myThid ) 
+         CALL GATHER_2D_R8( xfer_array, local, Nx, Ny,
+     &        .FALSE., .FALSE., myThid )
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )
+            buffsize = Nx*Ny
+            CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
+     &           0,10001007,toissmcomm,mpistatus)
+            _END_MASTER( myThid )
+         ENDIF
+         CALL BAR2( myThid )
+C        print*,'Done Sending shelficeFreshWaterFlux array.'
+         
+      ENDIF
+C End recurring step C3.
+
+C Recurring step C4 except during Termination:
+C  C4. ISSM sends IceModelTime=(N-1)*CouplingTime base to MITgcm
+      IF( myTime .NE. endtime .AND.
+     &     MOD(myTime,CouplingTime) .LT. deltaT/2. ) THEN
+         WRITE(suff,'(I10.10)') myIter
+         CALL WRITE_FLD_XY_RS( 'R_shelfIce1_',suff,R_shelfIce,-1,myThid)
+         IF( myProcId .EQ. 0 ) THEN
+            _BEGIN_MASTER( myThid )         
+            call MPI_Recv(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
+     &           0,10001008,toissmcomm,mpistatus,mpiRC)
+            _END_MASTER( myThid )
+         ENDIF
+         CALL BAR2( myThid ) 
+         CALL SCATTER_2D_R8( xfer_array, local, Nx, Ny,
+     &        .FALSE., .FALSE., myThid )
+         DO bj = myByLo(myThid), myByHi(myThid)
+            DO bi = myBxLo(myThid), myBxHi(myThid)
+               DO j=1,sNy
+                  DO i=1,sNx
+                     IF( local(i,j,bi,bj).LT.9998 ) THEN
+                        R_shelfIce(i,j,bi,bj) = local(i,j,bi,bj)
+                     ELSE
+                        R_shelfIce(i,j,bi,bj) = 0. _d 0
+                     ENDIF
+                  ENDDO
+               ENDDO
+            ENDDO
+         ENDDO
+C- fill in the overlap (+ BARRIER):
+         _EXCH_XY_RS( R_shelfIce, myThid )
+         CALL WRITE_FLD_XY_RS( 'R_shelfIce2_',suff,R_shelfIce,-1,myThid)
+      ENDIF
+C End recurring step C4.
+
+#endif /* ALLOW_CPL_ISSM */
+
+      RETURN
+      END
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/do_oceanic_phys.F
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/do_oceanic_phys.F	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/do_oceanic_phys.F	(revision 27955)
@@ -0,0 +1,1111 @@
+#include "PACKAGES_CONFIG.h"
+#include "CPP_OPTIONS.h"
+#ifdef ALLOW_MOM_COMMON
+# include "MOM_COMMON_OPTIONS.h"
+#endif
+#ifdef ALLOW_AUTODIFF
+# include "AUTODIFF_OPTIONS.h"
+#endif
+#ifdef ALLOW_CTRL
+# include "CTRL_OPTIONS.h"
+#endif
+#ifdef ALLOW_SALT_PLUME
+# include "SALT_PLUME_OPTIONS.h"
+#endif
+#ifdef ALLOW_ECCO
+# include "ECCO_OPTIONS.h"
+#endif
+
+#ifdef ALLOW_AUTODIFF
+# ifdef ALLOW_GGL90
+#  include "GGL90_OPTIONS.h"
+# endif
+# ifdef ALLOW_GMREDI
+#  include "GMREDI_OPTIONS.h"
+# endif
+# ifdef ALLOW_KPP
+#  include "KPP_OPTIONS.h"
+# endif
+# ifdef ALLOW_SEAICE
+#  include "SEAICE_OPTIONS.h"
+# endif
+# ifdef ALLOW_EXF
+#  include "EXF_OPTIONS.h"
+# endif
+#endif /* ALLOW_AUTODIFF */
+
+CBOP
+C     !ROUTINE: DO_OCEANIC_PHYS
+C     !INTERFACE:
+      SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
+C     !DESCRIPTION: \bv
+C     *==========================================================*
+C     | SUBROUTINE DO_OCEANIC_PHYS
+C     | o Controlling routine for oceanic physics and
+C     |   parameterization
+C     *==========================================================*
+C     | o originally, part of S/R thermodynamics
+C     *==========================================================*
+C     \ev
+
+C     !CALLING SEQUENCE:
+C     DO_OCEANIC_PHYS
+C       |
+C       |-- OBCS_CALC
+C       |
+C       |-- OCN_APPLY_IMPORT
+C       |
+C       |-- FRAZIL_CALC_RHS
+C       |
+C       |-- THSICE_MAIN
+C       |
+C       |-- SEAICE_FAKE
+C       |-- SEAICE_MODEL
+C       |-- SEAICE_COST_SENSI
+C       |
+C       |-- OCN_EXPORT_DATA
+C       |
+C       |-- SHELFICE_THERMODYNAMICS
+C       |
+C       |-- ICEFRONT_THERMODYNAMICS
+C       |
+C       |-- SALT_PLUME_DO_EXCH
+C       |
+C       |-- FREEZE_SURFACE
+C       |
+C       |-- EXTERNAL_FORCING_SURF
+C       |
+C       |-- OBCS_ADJUST
+C       |
+C       |- k loop (Nr:1):
+C       | - DWNSLP_CALC_RHO
+C       | - BBL_CALC_RHO
+C       | - FIND_RHO_2D @ p(k)
+C       | - FIND_RHO_2D @ p(k-1)
+C       | - GRAD_SIGMA
+C       | - CALC_IVDC
+C       | - DIAGS_RHO_L
+C       |- end k loop.
+C       |
+C       |-- CALC_OCE_MXLAYER
+C       |
+C       |-- SALT_PLUME_CALC_DEPTH
+C       |-- SALT_PLUME_VOLFRAC
+C       |-- SALT_PLUME_APPLY
+C       |-- SALT_PLUME_APPLY
+C       |-- SALT_PLUME_FORCING_SURF
+C       |
+C       |-- KPP_CALC
+C       |-- KPP_CALC_DUMMY
+C       |
+C       |-- PP81_CALC
+C       |
+C       |-- KL10_CALC
+C       |
+C       |-- MY82_CALC
+C       |
+C       |-- GGL90_CALC
+C       |
+C       |-- TIMEAVE_SURF_FLUX
+C       |
+C       |-- GMREDI_CALC_TENSOR
+C       |-- GMREDI_CALC_TENSOR_DUMMY
+C       |
+C       |-- DWNSLP_CALC_FLOW
+C       |-- DWNSLP_CALC_FLOW
+C       |
+C       |-- OFFLINE_GET_DIFFUS
+C       |
+C       |-- BBL_CALC_RHS
+C       |
+C       |-- MYPACKAGE_CALC_RHS
+C       |
+C       |-- GMREDI_DO_EXCH
+C       |
+C       |-- KPP_DO_EXCH
+C       |
+C       |-- GGL90_EXCHANGES
+C       |
+C       |-- DIAGS_RHO_G
+C       |-- DIAGS_OCEANIC_SURF_FLUX
+C       |-- SALT_PLUME_DIAGNOSTICS_FILL
+C       |
+C       |-- ECCO_PHYS
+
+C     !USES:
+      IMPLICIT NONE
+C     == Global variables ===
+#include "SIZE.h"
+#include "EEPARAMS.h"
+#include "PARAMS.h"
+#include "GRID.h"
+#include "DYNVARS.h"
+#ifdef ALLOW_TIMEAVE
+# include "TIMEAVE_STATV.h"
+#endif
+#ifdef ALLOW_OFFLINE
+# include "OFFLINE_SWITCH.h"
+#endif
+
+#ifdef ALLOW_AUTODIFF
+# include "AUTODIFF_MYFIELDS.h"
+# ifdef ALLOW_AUTODIFF_TAMC
+#  include "tamc.h"
+# endif
+# include "FFIELDS.h"
+# include "SURFACE.h"
+# include "EOS.h"
+# ifdef ALLOW_GMREDI
+#  include "GMREDI.h"
+# endif
+# ifdef ALLOW_KPP
+#  include "KPP.h"
+# endif
+# ifdef ALLOW_GGL90
+#  include "GGL90.h"
+# endif
+# ifdef ALLOW_EBM
+#  include "EBM.h"
+# endif
+# ifdef ALLOW_EXF
+#  include "ctrl.h"
+#  include "EXF_FIELDS.h"
+#  ifdef ALLOW_BULKFORMULAE
+#   include "EXF_CONSTANTS.h"
+#  endif
+# endif
+# ifdef ALLOW_SEAICE
+#  include "SEAICE_SIZE.h"
+#  include "SEAICE.h"
+#  include "SEAICE_PARAMS.h"
+# endif
+# ifdef ALLOW_THSICE
+#  include "THSICE_VARS.h"
+# endif
+# ifdef ALLOW_SALT_PLUME
+#  include "SALT_PLUME.h"
+# endif
+# ifdef ALLOW_ECCO
+#  ifdef ALLOW_SIGMAR_COST_CONTRIBUTION
+#   include "ecco_cost.h"
+#  endif
+# endif
+#endif /* ALLOW_AUTODIFF */
+
+C     !INPUT/OUTPUT PARAMETERS:
+C     == Routine arguments ==
+C     myTime :: Current time in simulation
+C     myIter :: Current iteration number in simulation
+C     myThid :: Thread number for this instance of the routine.
+      _RL myTime
+      INTEGER myIter
+      INTEGER myThid
+
+C     !LOCAL VARIABLES:
+C     == Local variables
+C     rhoKp1,rhoKm1 :: Density at current level, and @ level minus one
+C     iMin, iMax    :: Ranges and sub-block indices on which calculations
+C     jMin, jMax       are applied.
+C     bi, bj        :: tile indices
+C     msgBuf        :: Temp. for building output string
+C     i,j,k         :: loop indices
+C     kSrf          :: surface index
+      _RL rhoKp1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
+      _RL rhoKm1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
+      _RL sigmaX  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
+      _RL sigmaY  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
+      _RL sigmaR  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
+      INTEGER iMin, iMax
+      INTEGER jMin, jMax
+      INTEGER bi, bj
+      INTEGER i, j, k, kSrf
+      CHARACTER*(MAX_LEN_MBUF) msgBuf
+      INTEGER doDiagsRho
+      LOGICAL calcGMRedi, calcKPP, calcConvect
+#ifdef ALLOW_DIAGNOSTICS
+      LOGICAL  DIAGNOSTICS_IS_ON
+      EXTERNAL DIAGNOSTICS_IS_ON
+#endif /* ALLOW_DIAGNOSTICS */
+#ifdef ALLOW_AUTODIFF
+      _RL thetaRef
+#endif /* ALLOW_AUTODIFF */
+#ifdef ALLOW_AUTODIFF_TAMC
+      INTEGER act1, act2, act3, act4
+      INTEGER max1, max2, max3
+      INTEGER kkey, itdkey
+#endif
+CEOP
+
+#ifdef ALLOW_AUTODIFF_TAMC
+C--   dummy statement to end declaration part
+      itdkey = 1
+#endif /* ALLOW_AUTODIFF_TAMC */
+
+      kSrf = 1
+      IF ( usingPCoords ) kSrf = Nr
+
+#ifdef ALLOW_DEBUG
+      IF (debugMode) CALL DEBUG_ENTER('DO_OCEANIC_PHYS',myThid)
+#endif
+
+      doDiagsRho = 0
+#ifdef ALLOW_DIAGNOSTICS
+      IF ( useDiagnostics .AND. fluidIsWater ) THEN
+        IF ( DIAGNOSTICS_IS_ON('MXLDEPTH',myThid) )
+     &       doDiagsRho = doDiagsRho + 1
+        IF ( DIAGNOSTICS_IS_ON('DRHODR  ',myThid) )
+     &       doDiagsRho = doDiagsRho + 2
+        IF ( DIAGNOSTICS_IS_ON('WdRHO_P ',myThid) )
+     &       doDiagsRho = doDiagsRho + 4
+        IF ( DIAGNOSTICS_IS_ON('WdRHOdP ',myThid) )
+     &       doDiagsRho = doDiagsRho + 8
+      ENDIF
+#endif /* ALLOW_DIAGNOSTICS */
+
+      calcGMRedi  = useGMRedi
+      calcKPP     = useKPP
+      calcConvect = ivdc_kappa.NE.0.
+#ifdef ALLOW_OFFLINE
+      IF ( useOffLine ) THEN
+        calcGMRedi = useGMRedi .AND. .NOT.offlineLoadGMRedi
+        calcKPP    = useKPP    .AND. .NOT.offlineLoadKPP
+        calcConvect=calcConvect.AND. .NOT.offlineLoadConvec
+      ENDIF
+#endif /* ALLOW_OFFLINE */
+
+#ifdef  ALLOW_OBCS
+      IF (useOBCS) THEN
+C--   Calculate future values on open boundaries
+C--   moved before SEAICE_MODEL call since SEAICE_MODEL needs seaice-obcs fields
+# ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE theta = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE salt  = comlev1, key=ikey_dynamics, kind=isbyte
+# endif
+# ifdef ALLOW_DEBUG
+       IF (debugMode) CALL DEBUG_CALL('OBCS_CALC',myThid)
+# endif
+       CALL OBCS_CALC( myTime+deltaTClock, myIter+1,
+     I                 uVel, vVel, wVel, theta, salt, myThid )
+      ENDIF
+#endif  /* ALLOW_OBCS */
+
+#ifdef ALLOW_OCN_COMPON_INTERF
+C--    Apply imported data (from coupled interface) to forcing fields
+C jmc: moved here before any freezing/seaice pkg adjustment of surf-fluxes
+      IF ( useCoupler ) THEN
+         CALL OCN_APPLY_IMPORT( .TRUE., myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_OCN_COMPON_INTERF */
+
+#ifdef ALLOW_AUTODIFF
+      DO bj=myByLo(myThid),myByHi(myThid)
+       DO bi=myBxLo(myThid),myBxHi(myThid)
+        DO j=1-OLy,sNy+OLy
+         DO i=1-OLx,sNx+OLx
+          adjustColdSST_diag(i,j,bi,bj) = 0. _d 0
+# ifdef ALLOW_SALT_PLUME
+          saltPlumeDepth(i,j,bi,bj) = 0. _d 0
+          saltPlumeFlux(i,j,bi,bj)  = 0. _d 0
+# endif
+         ENDDO
+        ENDDO
+       ENDDO
+      ENDDO
+#endif /* ALLOW_AUTODIFF */
+
+#ifdef ALLOW_FRAZIL
+      IF ( useFRAZIL ) THEN
+C--   Freeze water in the ocean interior and let it rise to the surface
+CADJ STORE theta = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE salt  = comlev1, key=ikey_dynamics, kind=isbyte
+       CALL FRAZIL_CALC_RHS( myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_FRAZIL */
+
+#if (defined ALLOW_THSICE) && !(defined ALLOW_ATM2D)
+      IF ( useThSIce .AND. fluidIsWater ) THEN
+# ifdef ALLOW_AUTODIFF_TAMC
+#  ifdef ALLOW_SEAICE
+CADJ STORE uice,vice         = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif
+CADJ STORE iceMask,iceHeight = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE snowHeight, Tsrf  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE Qice1, Qice2      = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE sHeating,snowAge  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE hocemxl, icflxsw  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE salt,theta        = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE uvel,vvel         = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE qnet,qsw, empmr   = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE atemp,aqh,precip  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE swdown,lwdown     = comlev1, key=ikey_dynamics, kind=isbyte
+#  ifdef NONLIN_FRSURF
+CADJ STORE hFac_surfC        = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif
+# endif /* ALLOW_AUTODIFF_TAMC */
+# ifdef ALLOW_DEBUG
+        IF (debugMode) CALL DEBUG_CALL('THSICE_MAIN',myThid)
+# endif
+C--     Step forward Therm.Sea-Ice variables
+C       and modify forcing terms including effects from ice
+        CALL TIMER_START('THSICE_MAIN     [DO_OCEANIC_PHYS]', myThid)
+        CALL THSICE_MAIN( myTime, myIter, myThid )
+        CALL TIMER_STOP( 'THSICE_MAIN     [DO_OCEANIC_PHYS]', myThid)
+      ENDIF
+#endif /* ALLOW_THSICE */
+
+#ifdef ALLOW_SEAICE
+# ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE qnet  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE qsw   = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE theta = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE salt  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE fu,fv = comlev1, key=ikey_dynamics, kind=isbyte
+#if (defined ALLOW_EXF) && (defined ALLOW_ATM_TEMP)
+CADJ STORE evap  = comlev1, key=ikey_dynamics, kind=isbyte
+#endif
+# endif /* ALLOW_AUTODIFF_TAMC */
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE phiHydLow= comlev1, key=ikey_dynamics, byte=isbyte
+#endif
+      IF ( useSEAICE ) THEN
+# ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE uvel,vvel         = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE uice,vice         = comlev1, key=ikey_dynamics, kind=isbyte
+#  ifdef ALLOW_EXF
+CADJ STORE atemp,aqh,precip  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE swdown,lwdown     = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE uwind,vwind       = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif
+#  ifdef SEAICE_VARIABLE_SALINITY
+CADJ STORE hsalt             = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif
+#  ifdef ATMOSPHERIC_LOADING
+CADJ STORE pload, siceload   = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif
+#  ifdef NONLIN_FRSURF
+CADJ STORE recip_hfacc       = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif
+#  ifdef ANNUAL_BALANCE
+CADJ STORE balance_itcount   = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif /* ANNUAL_BALANCE */
+#  ifdef ALLOW_THSICE
+C-- store thSIce vars before advection (called from SEAICE_MODEL) updates them:
+CADJ STORE iceMask,iceHeight = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE snowHeight,hOceMxL= comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE Qice1, Qice2      = comlev1, key=ikey_dynamics, kind=isbyte
+#  endif /* ALLOW_THSICE */
+# endif /* ALLOW_AUTODIFF_TAMC */
+# ifdef ALLOW_DEBUG
+        IF (debugMode) CALL DEBUG_CALL('SEAICE_MODEL',myThid)
+# endif
+        CALL TIMER_START('SEAICE_MODEL    [DO_OCEANIC_PHYS]', myThid)
+        CALL SEAICE_MODEL( myTime, myIter, myThid )
+        CALL TIMER_STOP ('SEAICE_MODEL    [DO_OCEANIC_PHYS]', myThid)
+# ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE tices = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE heff  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE hsnow = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE area  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE uIce  = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE vIce  = comlev1, key=ikey_dynamics, kind=isbyte
+# endif
+# ifdef ALLOW_COST
+        CALL SEAICE_COST_SENSI ( myTime, myIter, myThid )
+# endif
+# ifdef ALLOW_AUTODIFF
+      ELSEIF ( SEAICEadjMODE .EQ. -1 ) THEN
+CADJ STORE area = comlev1, key=ikey_dynamics, kind=isbyte
+        CALL SEAICE_FAKE( myTime, myIter, myThid )
+# endif /* ALLOW_AUTODIFF */
+      ENDIF
+#endif /* ALLOW_SEAICE */
+
+#if (defined ALLOW_OCN_COMPON_INTERF) && (defined ALLOW_THSICE)
+C--   After seaice-dyn and advection of pkg/thsice fields,
+C     Export ocean coupling fields to coupled interface (only with pkg/thsice)
+      IF ( useCoupler ) THEN
+# ifdef ALLOW_DEBUG
+        IF (debugMode) CALL DEBUG_CALL('OCN_EXPORT_DATA',myThid)
+# endif
+         CALL TIMER_START('OCN_EXPORT_DATA [DO_OCEANIC_PHYS]', myThid)
+         CALL OCN_EXPORT_DATA( myTime, myIter, myThid )
+         CALL TIMER_STOP ('OCN_EXPORT_DATA [DO_OCEANIC_PHYS]', myThid)
+      ENDIF
+#endif /* ALLOW_OCN_COMPON_INTERF & ALLOW_THSICE */
+
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE sst, sss          = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE qsw               = comlev1, key=ikey_dynamics, kind=isbyte
+# ifdef ALLOW_SEAICE
+CADJ STORE area              = comlev1, key=ikey_dynamics, kind=isbyte
+# endif
+#endif
+
+#ifdef ALLOW_CPL_ISSM
+      IF ( useCoupler) CALL CPL_ISSM( myTime, myIter, myThid )
+#endif
+
+#ifdef ALLOW_SHELFICE
+      IF ( useShelfIce .AND. fluidIsWater ) THEN
+#ifdef ALLOW_DEBUG
+       IF (debugMode) CALL DEBUG_CALL('SHELFICE_THERMODYNAMICS',myThid)
+#endif
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE salt, theta       = comlev1, key=ikey_dynamics, kind=isbyte
+CADJ STORE uvel, vvel        = comlev1, key=ikey_dynamics, kind=isbyte
+#endif
+C     compute temperature and (virtual) salt flux at the
+C     shelf-ice ocean interface
+       CALL TIMER_START('SHELFICE_THERMODYNAMICS [DO_OCEANIC_PHYS]',
+     &       myThid)
+       CALL SHELFICE_THERMODYNAMICS( myTime, myIter, myThid )
+       CALL TIMER_STOP( 'SHELFICE_THERMODYNAMICS [DO_OCEANIC_PHYS]',
+     &      myThid)
+      ENDIF
+#endif /* ALLOW_SHELFICE */
+
+#ifdef ALLOW_ICEFRONT
+      IF ( useICEFRONT .AND. fluidIsWater ) THEN
+#ifdef ALLOW_DEBUG
+       IF (debugMode) CALL DEBUG_CALL('ICEFRONT_THERMODYNAMICS',myThid)
+#endif
+C     compute temperature and (virtual) salt flux at the
+C     ice-front ocean interface
+       CALL TIMER_START('ICEFRONT_THERMODYNAMICS [DO_OCEANIC_PHYS]',
+     &       myThid)
+       CALL ICEFRONT_THERMODYNAMICS( myTime, myIter, myThid )
+       CALL TIMER_STOP( 'ICEFRONT_THERMODYNAMICS [DO_OCEANIC_PHYS]',
+     &      myThid)
+      ENDIF
+#endif /* ALLOW_ICEFRONT */
+
+#ifdef ALLOW_SALT_PLUME
+      IF ( useSALT_PLUME ) THEN
+Catn: exchanging saltPlumeFlux:
+        CALL SALT_PLUME_DO_EXCH( myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_SALT_PLUME */
+
+C--   Freeze water at the surface
+      IF ( allowFreezing ) THEN
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE theta             = comlev1, key=ikey_dynamics, kind=isbyte
+#endif
+        CALL FREEZE_SURFACE( myTime, myIter, myThid )
+      ENDIF
+
+      iMin = 1-OLx
+      iMax = sNx+OLx
+      jMin = 1-OLy
+      jMax = sNy+OLy
+
+C---  Determines forcing terms based on external fields
+C     relaxation terms, etc.
+#ifdef ALLOW_AUTODIFF
+CADJ STORE salt, theta       = comlev1, key=ikey_dynamics, kind=isbyte
+#else  /* ALLOW_AUTODIFF */
+C--   if fluid is not water, by-pass surfaceForcing, find_rho, gmredi
+C     and all vertical mixing schemes, but keep OBCS_CALC
+      IF ( fluidIsWater ) THEN
+#endif /* ALLOW_AUTODIFF */
+#ifdef ALLOW_DEBUG
+      IF (debugMode) CALL DEBUG_CALL('EXTERNAL_FORCING_SURF',myThid)
+#endif
+        CALL EXTERNAL_FORCING_SURF(
+     I             iMin, iMax, jMin, jMax,
+     I             myTime, myIter, myThid )
+
+#ifdef  ALLOW_OBCS
+      IF (useOBCS) THEN
+C--   After all surface fluxes are known apply balancing fluxes and
+C--   apply tidal forcing to open boundaries
+# ifdef ALLOW_DEBUG
+       IF (debugMode) CALL DEBUG_CALL('OBCS_ADJUST',myThid)
+# endif
+       CALL OBCS_ADJUST(
+     I      myTime+deltaTClock, myIter+1, myThid )
+      ENDIF
+#endif  /* ALLOW_OBCS */
+
+#ifdef ALLOW_AUTODIFF_TAMC
+C--   HPF directive to help TAMC
+CHPF$ INDEPENDENT
+#endif /* ALLOW_AUTODIFF_TAMC */
+      DO bj=myByLo(myThid),myByHi(myThid)
+#ifdef ALLOW_AUTODIFF_TAMC
+C--   HPF directive to help TAMC
+CHPF$ INDEPENDENT
+#endif /* ALLOW_AUTODIFF_TAMC */
+       DO bi=myBxLo(myThid),myBxHi(myThid)
+
+#ifdef ALLOW_AUTODIFF_TAMC
+          act1 = bi - myBxLo(myThid)
+          max1 = myBxHi(myThid) - myBxLo(myThid) + 1
+          act2 = bj - myByLo(myThid)
+          max2 = myByHi(myThid) - myByLo(myThid) + 1
+          act3 = myThid - 1
+          max3 = nTx*nTy
+          act4 = ikey_dynamics - 1
+          itdkey = (act1 + 1) + act2*max1
+     &                      + act3*max1*max2
+     &                      + act4*max1*max2*max3
+#endif /* ALLOW_AUTODIFF_TAMC */
+
+C--   Set up work arrays with valid (i.e. not NaN) values
+C     These inital values do not alter the numerical results. They
+C     just ensure that all memory references are to valid floating
+C     point numbers. This prevents spurious hardware signals due to
+C     uninitialised but inert locations.
+        DO k=1,Nr
+         DO j=1-OLy,sNy+OLy
+          DO i=1-OLx,sNx+OLx
+C This is currently used by GMRedi, IVDC, MXL-depth  and Diagnostics
+           sigmaX(i,j,k) = 0. _d 0
+           sigmaY(i,j,k) = 0. _d 0
+           sigmaR(i,j,k) = 0. _d 0
+#if (defined (ALLOW_SIGMAR_COST_CONTRIBUTION) || defined (ALLOW_LEITH_QG))
+           sigmaRfield(i,j,k,bi,bj) = 0. _d 0
+#endif
+          ENDDO
+         ENDDO
+        ENDDO
+
+        DO j=1-OLy,sNy+OLy
+         DO i=1-OLx,sNx+OLx
+          rhoKm1 (i,j)   = 0. _d 0
+          rhoKp1 (i,j)   = 0. _d 0
+         ENDDO
+        ENDDO
+#ifdef ALLOW_AUTODIFF
+cph all the following init. are necessary for TAF
+cph although some of these are re-initialised later.
+        DO k=1,Nr
+         DO j=1-OLy,sNy+OLy
+          DO i=1-OLx,sNx+OLx
+           rhoInSitu(i,j,k,bi,bj) = 0.
+# ifdef ALLOW_GGL90
+           GGL90viscArU(i,j,k,bi,bj)  = 0. _d 0
+           GGL90viscArV(i,j,k,bi,bj)  = 0. _d 0
+           GGL90diffKr(i,j,k,bi,bj)  = 0. _d 0
+# endif /* ALLOW_GGL90 */
+# ifdef ALLOW_SALT_PLUME
+#  ifdef SALT_PLUME_VOLUME
+           SPforcingS(i,j,k,bi,bj) = 0. _d 0
+           SPforcingT(i,j,k,bi,bj) = 0. _d 0
+#  endif
+# endif /* ALLOW_SALT_PLUME */
+          ENDDO
+         ENDDO
+        ENDDO
+#ifdef ALLOW_OFFLINE
+       IF ( calcConvect ) THEN
+#endif
+        DO k=1,Nr
+         DO j=1-OLy,sNy+OLy
+          DO i=1-OLx,sNx+OLx
+           IVDConvCount(i,j,k,bi,bj) = 0.
+          ENDDO
+         ENDDO
+        ENDDO
+#ifdef ALLOW_OFFLINE
+       ENDIF
+       IF ( calcGMRedi ) THEN
+#endif
+# ifdef ALLOW_GMREDI
+        DO k=1,Nr
+         DO j=1-OLy,sNy+OLy
+          DO i=1-OLx,sNx+OLx
+           Kwx(i,j,k,bi,bj)  = 0. _d 0
+           Kwy(i,j,k,bi,bj)  = 0. _d 0
+           Kwz(i,j,k,bi,bj)  = 0. _d 0
+           Kux(i,j,k,bi,bj)  = 0. _d 0
+           Kvy(i,j,k,bi,bj)  = 0. _d 0
+#  ifdef GM_EXTRA_DIAGONAL
+           Kuz(i,j,k,bi,bj)  = 0. _d 0
+           Kvz(i,j,k,bi,bj)  = 0. _d 0
+#  endif
+#  ifdef GM_BOLUS_ADVEC
+           GM_PsiX(i,j,k,bi,bj)  = 0. _d 0
+           GM_PsiY(i,j,k,bi,bj)  = 0. _d 0
+#  endif
+#  ifdef GM_VISBECK_VARIABLE_K
+           VisbeckK(i,j,bi,bj)   = 0. _d 0
+#  endif
+          ENDDO
+         ENDDO
+        ENDDO
+# endif /* ALLOW_GMREDI */
+#ifdef ALLOW_OFFLINE
+       ENDIF
+       IF ( calcKPP ) THEN
+#endif
+# ifdef ALLOW_KPP
+        DO k=1,Nr
+         DO j=1-OLy,sNy+OLy
+          DO i=1-OLx,sNx+OLx
+           KPPdiffKzS(i,j,k,bi,bj)  = 0. _d 0
+           KPPdiffKzT(i,j,k,bi,bj)  = 0. _d 0
+          ENDDO
+         ENDDO
+        ENDDO
+# endif /* ALLOW_KPP */
+#ifdef ALLOW_OFFLINE
+       ENDIF
+#endif
+#endif /* ALLOW_AUTODIFF */
+
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE theta(:,:,:,bi,bj)  = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE salt (:,:,:,bi,bj)  = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE totphihyd(:,:,:,bi,bj)
+CADJ &                         = comlev1_bibj, key=itdkey, kind=isbyte
+# ifdef ALLOW_KPP
+CADJ STORE uvel (:,:,:,bi,bj)  = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE vvel (:,:,:,bi,bj)  = comlev1_bibj, key=itdkey, kind=isbyte
+# endif
+# ifdef ALLOW_SALT_PLUME
+CADJ STORE saltplumedepth(:,:,bi,bj)
+CADJ &                         = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE saltplumeflux(:,:,bi,bj)
+CADJ &                         = comlev1_bibj, key=itdkey, kind=isbyte
+# endif
+#endif /* ALLOW_AUTODIFF_TAMC */
+
+C--   Always compute density (stored in common block) here; even when it is not
+C     needed here, will be used anyway in calc_phi_hyd (data flow easier this way)
+#ifdef ALLOW_DEBUG
+        IF (debugMode) CALL DEBUG_CALL('FIND_RHO_2D (xNr)',myThid)
+#endif
+#ifdef ALLOW_AUTODIFF
+        IF ( fluidIsWater ) THEN
+#endif /* ALLOW_AUTODIFF */
+#ifdef ALLOW_DOWN_SLOPE
+         IF ( useDOWN_SLOPE ) THEN
+           DO k=1,Nr
+            CALL DWNSLP_CALC_RHO(
+     I                  theta, salt,
+     O                  rhoInSitu(1-OLx,1-OLy,k,bi,bj),
+     I                  k, bi, bj, myTime, myIter, myThid )
+           ENDDO
+         ENDIF
+#endif /* ALLOW_DOWN_SLOPE */
+#ifdef ALLOW_BBL
+         IF ( useBBL ) THEN
+C     pkg/bbl requires in-situ bbl density for depths equal to and deeper than the bbl.
+C     To reduce computation and storage requirement, these densities are stored in the
+C     dry grid boxes of rhoInSitu.  See BBL_CALC_RHO for details.
+           DO k=Nr,1,-1
+            CALL BBL_CALC_RHO(
+     I                  theta, salt,
+     O                  rhoInSitu,
+     I                  k, bi, bj, myTime, myIter, myThid )
+
+           ENDDO
+         ENDIF
+#endif /* ALLOW_BBL */
+         IF ( .NOT. ( useDOWN_SLOPE .OR. useBBL ) ) THEN
+           DO k=1,Nr
+            CALL FIND_RHO_2D(
+     I                iMin, iMax, jMin, jMax, k,
+     I                theta(1-OLx,1-OLy,k,bi,bj),
+     I                salt (1-OLx,1-OLy,k,bi,bj),
+     O                rhoInSitu(1-OLx,1-OLy,k,bi,bj),
+     I                k, bi, bj, myThid )
+           ENDDO
+         ENDIF
+#ifdef ALLOW_AUTODIFF
+        ELSE
+C-        fluid is not water:
+          DO k=1,Nr
+           IF ( select_rStar.GE.1 .OR. selectSigmaCoord.GE.1 ) THEN
+C-    isothermal (theta=const) reference state
+             thetaRef = thetaConst
+           ELSE
+C-    horizontally uniform (tRef) reference state
+             thetaRef = tRef(k)
+           ENDIF
+           DO j=1-OLy,sNy+OLy
+            DO i=1-OLx,sNx+OLx
+             rhoInSitu(i,j,k,bi,bj) =
+     &         ( theta(i,j,k,bi,bj)
+     &              *( salt(i,j,k,bi,bj)*atm_Rq + oneRL )
+     &         - thetaRef )*maskC(i,j,k,bi,bj)
+            ENDDO
+           ENDDO
+          ENDDO
+        ENDIF
+#endif /* ALLOW_AUTODIFF */
+
+#ifdef ALLOW_DEBUG
+        IF (debugMode) THEN
+          WRITE(msgBuf,'(A,2(I4,A))')
+     &         'ENTERING UPWARD K LOOP (bi=', bi, ', bj=', bj,')'
+          CALL DEBUG_MSG(msgBuf(1:43),myThid)
+        ENDIF
+#endif
+
+C--     Start of diagnostic loop
+        DO k=Nr,1,-1
+
+#ifdef ALLOW_AUTODIFF_TAMC
+C? Patrick, is this formula correct now that we change the loop range?
+C? Do we still need this?
+cph kkey formula corrected.
+cph Needed for rhoK, rhoKm1, in the case useGMREDI.
+          kkey = (itdkey-1)*Nr + k
+#endif /* ALLOW_AUTODIFF_TAMC */
+
+c#ifdef ALLOW_AUTODIFF_TAMC
+cCADJ STORE theta(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey,
+cCADJ &     kind = isbyte
+cCADJ STORE salt(:,:,k,bi,bj)  = comlev1_bibj_k, key=kkey,
+cCADJ &     kind = isbyte
+c#endif /* ALLOW_AUTODIFF_TAMC */
+
+C--       Calculate gradients of potential density for isoneutral
+C         slope terms (e.g. GM/Redi tensor or IVDC diffusivity)
+          IF ( calcGMRedi .OR. (k.GT.1 .AND. calcConvect)
+     &         .OR. usePP81 .OR. useKL10
+     &         .OR. useMY82 .OR. useGGL90
+     &         .OR. useSALT_PLUME .OR. doDiagsRho.GE.1 ) THEN
+            IF (k.GT.1) THEN
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE theta(:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey,kind=isbyte
+CADJ STORE salt (:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey,kind=isbyte
+CADJ STORE rhokm1 (bi,bj)       = comlev1_bibj_k, key=kkey,kind=isbyte
+#endif /* ALLOW_AUTODIFF_TAMC */
+             IF ( usingZCoords ) THEN
+              DO j=jMin,jMax
+               DO i=iMin,iMax
+                rhoKp1(i,j) = rhoInSitu(i,j,k,bi,bj)
+               ENDDO
+              ENDDO
+              CALL FIND_RHO_2D(
+     I                 iMin, iMax, jMin, jMax, k,
+     I                 theta(1-OLx,1-OLy,k-1,bi,bj),
+     I                 salt (1-OLx,1-OLy,k-1,bi,bj),
+     O                 rhoKm1,
+     I                 k-1, bi, bj, myThid )
+             ELSE
+              CALL FIND_RHO_2D(
+     I                 iMin, iMax, jMin, jMax, k-1,
+     I                 theta(1-OLx,1-OLy,k,bi,bj),
+     I                 salt (1-OLx,1-OLy,k,bi,bj),
+     O                 rhoKp1,
+     I                 k, bi, bj, myThid )
+              DO j=jMin,jMax
+               DO i=iMin,iMax
+                rhoKm1(i,j) = rhoInSitu(i,j,k-1,bi,bj)
+               ENDDO
+              ENDDO
+             ENDIF
+            ENDIF
+#ifdef ALLOW_DEBUG
+            IF (debugMode) CALL DEBUG_CALL('GRAD_SIGMA',myThid)
+#endif
+            CALL GRAD_SIGMA(
+     I             bi, bj, iMin, iMax, jMin, jMax, k,
+     I             rhoInSitu(1-OLx,1-OLy,k,bi,bj), rhoKm1, rhoKp1,
+     O             sigmaX, sigmaY, sigmaR,
+     I             myThid )
+
+#if (defined (ALLOW_SIGMAR_COST_CONTRIBUTION) || defined (ALLOW_LEITH_QG))
+            DO j=jMin,jMax
+             DO i=iMin,iMax
+              sigmaRfield(i,j,k,bi,bj)=sigmaR(i,j,k)
+             ENDDO
+            ENDDO
+#endif /* ALLOW_SIGMAR_COST_CONTRIBUTION or ALLOW_LEITH_QG */
+
+#ifdef ALLOW_AUTODIFF
+#ifdef GMREDI_WITH_STABLE_ADJOINT
+cgf zero out adjoint fields to stabilize pkg/gmredi adjoint
+cgf -> cuts adjoint dependency from slope to state
+            CALL ZERO_ADJ_LOC( Nr, sigmaX, myThid)
+            CALL ZERO_ADJ_LOC( Nr, sigmaY, myThid)
+            CALL ZERO_ADJ_LOC( Nr, sigmaR, myThid)
+#endif
+#endif /* ALLOW_AUTODIFF */
+          ENDIF
+
+C--       Implicit Vertical Diffusion for Convection
+          IF (k.GT.1 .AND. calcConvect) THEN
+#ifdef ALLOW_DEBUG
+            IF (debugMode) CALL DEBUG_CALL('CALC_IVDC',myThid)
+#endif
+            CALL CALC_IVDC(
+     I        bi, bj, iMin, iMax, jMin, jMax, k,
+     I        sigmaR,
+     I        myTime, myIter, myThid)
+          ENDIF
+
+#ifdef ALLOW_DIAGNOSTICS
+          IF ( doDiagsRho.GE.4 ) THEN
+            CALL DIAGS_RHO_L( doDiagsRho, k, bi, bj,
+     I                        rhoInSitu(1-OLx,1-OLy,1,bi,bj),
+     I                        rhoKm1, wVel,
+     I                        myTime, myIter, myThid )
+          ENDIF
+#endif
+
+C--     end of diagnostic k loop (Nr:1)
+        ENDDO
+
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE IVDConvCount(:,:,:,bi,bj)
+CADJ &     = comlev1_bibj, key=itdkey, kind=isbyte
+#endif
+
+C--     Diagnose Mixed Layer Depth:
+        IF ( calcGMRedi .OR. MOD(doDiagsRho,2).EQ.1 ) THEN
+          CALL CALC_OCE_MXLAYER(
+     I              rhoInSitu(1-OLx,1-OLy,kSrf,bi,bj), sigmaR,
+     I              bi, bj, myTime, myIter, myThid )
+        ENDIF
+
+#ifdef ALLOW_SALT_PLUME
+        IF ( useSALT_PLUME ) THEN
+          CALL SALT_PLUME_CALC_DEPTH(
+     I              rhoInSitu(1-OLx,1-OLy,kSrf,bi,bj), sigmaR,
+     I              bi, bj, myTime, myIter, myThid )
+#ifdef SALT_PLUME_VOLUME
+          CALL SALT_PLUME_VOLFRAC(
+     I              bi, bj, myTime, myIter, myThid )
+C-- get forcings for kpp
+          CALL SALT_PLUME_APPLY(
+     I              1, bi, bj, recip_hFacC(1-OLx,1-OLy,kSrf,bi,bj),
+     I              theta, 0,
+     I              myTime, myIter, myThid )
+          CALL SALT_PLUME_APPLY(
+     I              2, bi, bj, recip_hFacC(1-OLx,1-OLy,kSrf,bi,bj),
+     I              salt, 0,
+     I              myTime, myIter, myThid )
+C-- need to call this S/R from here to apply just before kpp
+          CALL SALT_PLUME_FORCING_SURF(
+     I              bi, bj, iMin, iMax, jMin, jMax,
+     I              myTime, myIter, myThid )
+#endif /* SALT_PLUME_VOLUME */
+        ENDIF
+#endif /* ALLOW_SALT_PLUME */
+
+#ifdef ALLOW_DIAGNOSTICS
+        IF ( MOD(doDiagsRho,4).GE.2 ) THEN
+          CALL DIAGNOSTICS_FILL (sigmaR, 'DRHODR  ', 0, Nr,
+     &         2, bi, bj, myThid)
+        ENDIF
+#endif /* ALLOW_DIAGNOSTICS */
+
+C--    This is where EXTERNAL_FORCING_SURF(bi,bj) used to be called;
+C      now called earlier, before bi,bj loop.
+
+#ifdef ALLOW_AUTODIFF_TAMC
+cph needed for KPP
+CADJ STORE surfaceForcingU(:,:,bi,bj)
+CADJ &     = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE surfaceForcingV(:,:,bi,bj)
+CADJ &     = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE surfaceForcingS(:,:,bi,bj)
+CADJ &     = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE surfaceForcingT(:,:,bi,bj)
+CADJ &     = comlev1_bibj, key=itdkey, kind=isbyte
+#endif /* ALLOW_AUTODIFF_TAMC */
+
+#ifdef  ALLOW_KPP
+C--     Compute KPP mixing coefficients
+        IF ( calcKPP ) THEN
+#ifdef ALLOW_DEBUG
+          IF (debugMode) CALL DEBUG_CALL('KPP_CALC',myThid)
+#endif
+          CALL TIMER_START('KPP_CALC [DO_OCEANIC_PHYS]', myThid)
+          CALL KPP_CALC(
+     I                  bi, bj, myTime, myIter, myThid )
+          CALL TIMER_STOP ('KPP_CALC [DO_OCEANIC_PHYS]', myThid)
+#if (defined ALLOW_AUTODIFF) && !(defined ALLOW_OFFLINE)
+        ELSE
+          CALL KPP_CALC_DUMMY(
+     I                  bi, bj, myTime, myIter, myThid )
+#endif /* ALLOW_AUTODIFF and not ALLOW_OFFLINE */
+        ENDIF
+#endif  /* ALLOW_KPP */
+
+#ifdef  ALLOW_PP81
+C--     Compute PP81 mixing coefficients
+        IF (usePP81) THEN
+#ifdef ALLOW_DEBUG
+          IF (debugMode) CALL DEBUG_CALL('PP81_CALC',myThid)
+#endif
+          CALL PP81_CALC(
+     I                     bi, bj, sigmaR, myTime, myIter, myThid )
+        ENDIF
+#endif /* ALLOW_PP81 */
+
+#ifdef  ALLOW_KL10
+C--     Compute KL10 mixing coefficients
+        IF (useKL10) THEN
+#ifdef ALLOW_DEBUG
+          IF (debugMode) CALL DEBUG_CALL('KL10_CALC',myThid)
+#endif
+          CALL KL10_CALC(
+     I                     bi, bj, sigmaR, myTime, myIter, myThid )
+        ENDIF
+#endif /* ALLOW_KL10 */
+
+#ifdef  ALLOW_MY82
+C--     Compute MY82 mixing coefficients
+        IF (useMY82) THEN
+#ifdef ALLOW_DEBUG
+          IF (debugMode) CALL DEBUG_CALL('MY82_CALC',myThid)
+#endif
+          CALL MY82_CALC(
+     I                     bi, bj, sigmaR, myTime, myIter, myThid )
+        ENDIF
+#endif /* ALLOW_MY82 */
+
+#ifdef  ALLOW_GGL90
+#ifdef ALLOW_AUTODIFF_TAMC
+CADJ STORE GGL90TKE(:,:,:,bi,bj)
+CADJ &     = comlev1_bibj, key=itdkey, kind=isbyte
+#endif /* ALLOW_AUTODIFF_TAMC */
+C--     Compute GGL90 mixing coefficients
+        IF ( useGGL90 .AND. Nr.GT.1 ) THEN
+#ifdef ALLOW_DEBUG
+          IF (debugMode) CALL DEBUG_CALL('GGL90_CALC',myThid)
+#endif
+          CALL TIMER_START('GGL90_CALC [DO_OCEANIC_PHYS]', myThid)
+          CALL GGL90_CALC(
+     I                     bi, bj, sigmaR, myTime, myIter, myThid )
+          CALL TIMER_STOP ('GGL90_CALC [DO_OCEANIC_PHYS]', myThid)
+        ENDIF
+#endif /* ALLOW_GGL90 */
+
+#ifdef ALLOW_TIMEAVE
+        IF ( taveFreq.GT. 0. _d 0 ) THEN
+          CALL TIMEAVE_SURF_FLUX( bi, bj, myTime, myIter, myThid)
+        ENDIF
+        IF ( taveFreq.GT.0. .AND. calcConvect ) THEN
+          CALL TIMEAVE_CUMULATE(ConvectCountTave, IVDConvCount,
+     I                           Nr, deltaTClock, bi, bj, myThid)
+        ENDIF
+#endif /* ALLOW_TIMEAVE */
+
+#ifdef ALLOW_GMREDI
+#ifdef ALLOW_AUTODIFF_TAMC
+# ifndef GM_EXCLUDE_CLIPPING
+cph storing here is needed only for one GMREDI_OPTIONS:
+cph define GM_BOLUS_ADVEC
+cph keep it although TAF says you dont need to.
+cph but I have avoided the #ifdef for now, in case more things change
+CADJ STORE sigmaX(:,:,:)       = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE sigmaY(:,:,:)       = comlev1_bibj, key=itdkey, kind=isbyte
+CADJ STORE sigmaR(:,:,:)       = comlev1_bibj, key=itdkey, kind=isbyte
+# endif
+#endif /* ALLOW_AUTODIFF_TAMC */
+
+C--     Calculate iso-neutral slopes for the GM/Redi parameterisation
+        IF ( calcGMRedi ) THEN
+#ifdef ALLOW_DEBUG
+          IF (debugMode) CALL DEBUG_CALL('GMREDI_CALC_TENSOR',myThid)
+#endif
+          CALL GMREDI_CALC_TENSOR(
+     I             iMin, iMax, jMin, jMax,
+     I             sigmaX, sigmaY, sigmaR,
+     I             bi, bj, myTime, myIter, myThid )
+#if (defined ALLOW_AUTODIFF) && !(defined ALLOW_OFFLINE)
+        ELSE
+          CALL GMREDI_CALC_TENSOR_DUMMY(
+     I             iMin, iMax, jMin, jMax,
+     I             sigmaX, sigmaY, sigmaR,
+     I             bi, bj, myTime, myIter, myThid )
+#endif /* ALLOW_AUTODIFF and not ALLOW_OFFLINE */
+        ENDIF
+#endif /* ALLOW_GMREDI */
+
+#ifdef ALLOW_DOWN_SLOPE
+        IF ( useDOWN_SLOPE ) THEN
+C--     Calculate Downsloping Flow for Down_Slope parameterization
+         IF ( usingPCoords ) THEN
+          CALL DWNSLP_CALC_FLOW(
+     I                bi, bj, kSurfC, rhoInSitu,
+     I                myTime, myIter, myThid )
+         ELSE
+          CALL DWNSLP_CALC_FLOW(
+     I                bi, bj, kLowC, rhoInSitu,
+     I                myTime, myIter, myThid )
+         ENDIF
+        ENDIF
+#endif /* ALLOW_DOWN_SLOPE */
+
+C--   end bi,bj loops.
+       ENDDO
+      ENDDO
+
+#ifndef ALLOW_AUTODIFF
+C---  if fluid Is Water: end
+      ENDIF
+#endif
+
+#ifdef ALLOW_OFFLINE
+      IF ( useOffLine ) THEN
+#ifdef ALLOW_DEBUG
+        IF (debugMode) CALL DEBUG_CALL('OFFLINE_GET_DIFFUS',myThid)
+#endif /* ALLOW_DEBUG */
+        CALL OFFLINE_GET_DIFFUS( myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_OFFLINE */
+
+#ifdef ALLOW_BBL
+      IF ( useBBL ) THEN
+       CALL BBL_CALC_RHS(
+     I                          myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_BBL */
+
+#ifdef ALLOW_MYPACKAGE
+      IF ( useMYPACKAGE ) THEN
+       CALL MYPACKAGE_CALC_RHS(
+     I                          myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_MYPACKAGE */
+
+#ifdef ALLOW_GMREDI
+      IF ( calcGMRedi ) THEN
+        CALL GMREDI_DO_EXCH( myTime, myIter, myThid )
+      ENDIF
+#endif /* ALLOW_GMREDI */
+
+#ifdef ALLOW_KPP
+      IF ( calcKPP ) THEN
+        CALL KPP_DO_EXCH( myThid )
+      ENDIF
+#endif /* ALLOW_KPP */
+
+#ifdef ALLOW_GGL90
+      IF ( useGGL90 )
+     &  CALL GGL90_EXCHANGES( myThid )
+#endif /* ALLOW_GGL90 */
+
+#ifdef ALLOW_DIAGNOSTICS
+      IF ( fluidIsWater .AND. useDiagnostics ) THEN
+        CALL DIAGS_RHO_G(
+     I                    rhoInSitu, uVel, vVel, wVel,
+     I                    myTime, myIter, myThid )
+      ENDIF
+      IF ( useDiagnostics ) THEN
+        CALL DIAGS_OCEANIC_SURF_FLUX( myTime, myIter, myThid )
+      ENDIF
+      IF ( calcConvect .AND. useDiagnostics ) THEN
+        CALL DIAGNOSTICS_FILL( IVDConvCount, 'CONVADJ ',
+     &                               0, Nr, 0, 1, 1, myThid )
+      ENDIF
+#ifdef ALLOW_SALT_PLUME
+      IF ( useDiagnostics )
+     &      CALL SALT_PLUME_DIAGNOSTICS_FILL(bi,bj,myThid)
+#endif
+#endif
+
+#ifdef ALLOW_DEBUG
+      IF (debugMode) CALL DEBUG_LEAVE('DO_OCEANIC_PHYS',myThid)
+#endif
+
+      RETURN
+      END
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/eeboot_minimal.F
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/eeboot_minimal.F	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/eeboot_minimal.F	(revision 27955)
@@ -0,0 +1,328 @@
+#include "PACKAGES_CONFIG.h"
+#include "CPP_EEOPTIONS.h"
+
+CBOP
+C     !ROUTINE: EEBOOT_MINIMAL
+
+C     !INTERFACE:
+      SUBROUTINE EEBOOT_MINIMAL( myComm )
+
+C     !DESCRIPTION:
+C     *==========================================================*
+C     | SUBROUTINE EEBOOT\_MINIMAL
+C     | o Set an initial environment that is predictable i.e.
+C     | behaves in a similar way on all machines and stable.
+C     *==========================================================*
+C     | Under MPI this routine calls MPI\_INIT to setup the
+C     | mpi environment ( on some systems the code is running as
+C     | a single process prior to MPI\_INIT, on others the mpirun
+C     | script has already created multiple processes). Until
+C     | MPI\_Init is called it is unclear what state the
+C     | application is in. Once this routine has been run it is
+C     | "safe" to do things like I/O to report erros and to get
+C     | run parameters.
+C     | Note: This routine can also be compiled with CPP
+C     | directives set so that no multi-processing is initialise.
+C     | This is OK and will work fine.
+C     *==========================================================*
+
+C     !USES:
+      IMPLICIT NONE
+C     == Global data ==
+#include "SIZE.h"
+#include "EEPARAMS.h"
+#include "EESUPPORT.h"
+
+C     !ROUTINE ARGUMENTS
+C     == Routine arguments ==
+C     myComm     :: Communicator that is passed down from
+C                   upper level driver (if there is one).
+      INTEGER myComm
+
+C     !FUNCTIONS:
+c     INTEGER  IFNBLNK
+c     EXTERNAL IFNBLNK
+      INTEGER  ILNBLNK
+      EXTERNAL ILNBLNK
+
+C     !LOCAL VARIABLES:
+C     == Local variables ==
+C     myThid     :: Temp. dummy thread number.
+C     fNam       :: Used to build file name for standard and error output.
+C     msgBuf     :: Used to build messages for printing.
+      INTEGER myThid
+#ifdef USE_PDAF
+      CHARACTER*18 fNam
+#else
+      CHARACTER*13 fNam
+#endif /* USE_PDAF */
+      CHARACTER*(MAX_LEN_MBUF) msgBuf
+#ifdef ALLOW_USE_MPI
+C     mpiRC      :: Error code reporting variable used with MPI.
+      INTEGER mpiRC
+      INTEGER mpiIsInitialized
+      LOGICAL doReport
+#if defined(ALLOW_OASIS) || defined(COMPONENT_MODULE)
+      INTEGER mpiMyWId
+#elif defined(ALLOW_NEST2W_COMMON)
+      INTEGER mpiMyWId
+#endif
+#ifdef ALLOW_CPL_ISSM
+      COMMON /CPL_MPI_ID/ mpiMyWid, toissmcomm
+      INTEGER             mpiMyWid, toissmcomm
+      INTEGER my_local_rank,my_local_size, numprocsworld
+      INTEGER status(MPI_STATUS_SIZE)
+#endif /* ALLOW_CPL_ISSM */
+#if defined(ALLOW_NEST_PARENT) || defined(ALLOW_NEST_CHILD)
+      INTEGER mpiMyWId, color
+#endif
+#ifdef USE_PDAF
+      INTEGER mpi_task_id
+      CHARACTER*(14) fmtStr
+#else
+      CHARACTER*(6) fmtStr
+#endif /* USE_PDAF */
+      INTEGER iTmp
+#endif /* ALLOW_USE_MPI */
+CEOP
+
+C--   Default values set to single processor case
+      numberOfProcs = 1
+      myProcId      = 0
+      pidIO         = myProcId
+      myProcessStr  = '------'
+C     Set a dummy value for myThid because we are not multi-threading yet.
+      myThid        = 1
+
+C     Annoyingly there is no universal way to have the usingMPI
+C     parameter work as one might expect. This is because, on some
+C     systems I/O does not work until MPI_Init has been called.
+C     The solution for now is that the parameter below may need to
+C     be changed manually!
+#ifdef ALLOW_USE_MPI
+      usingMPI = .TRUE.
+#else
+      usingMPI = .FALSE.
+#endif
+
+      IF ( .NOT.usingMPI ) THEN
+
+        WRITE(myProcessStr,'(I4.4)') myProcId
+        WRITE(fNam,'(A,A)') 'STDERR.', myProcessStr(1:4)
+        OPEN(errorMessageUnit,FILE=fNam,STATUS='unknown')
+c       WRITE(fNam,'(A,A)') 'STDOUT.', myProcessStr(1:4)
+c       OPEN(standardMessageUnit,FILE=fNam,STATUS='unknown')
+
+#ifdef ALLOW_USE_MPI
+      ELSE
+C--   MPI style multiple-process initialisation
+C--   =========================================
+
+       CALL MPI_Initialized( mpiIsInitialized, mpiRC )
+
+       IF ( mpiIsInitialized .EQ. 0 ) THEN
+C--     Initialise MPI multi-process parallel environment.
+C       On some systems program forks at this point. Others have already
+C       forked within mpirun - now thats an open standard!
+        CALL MPI_INIT( mpiRC )
+        IF ( mpiRC .NE. MPI_SUCCESS ) THEN
+         eeBootError = .TRUE.
+         WRITE(msgBuf,'(A,I5)')
+     &        'EEBOOT_MINIMAL: MPI_INIT return code', mpiRC
+         CALL PRINT_ERROR( msgBuf, myThid )
+         GOTO 999
+        ENDIF
+
+C--     MPI has now been initialized ; now we need to either
+C       ask for a communicator or pretend that we have:
+C       Pretend that we have asked for a communicator
+        MPI_COMM_MODEL = MPI_COMM_WORLD
+
+       ELSE
+C--     MPI was already initialized and communicator has been passed
+C       down from upper level driver
+        MPI_COMM_MODEL = myComm
+
+       ENDIF
+
+       doReport = .FALSE.
+#ifdef USE_PDAF
+C     initialize PDAF
+C     for more output increase second parameter from 1 to 2
+       CALL INIT_PARALLEL_PDAF(0, 1, MPI_COMM_MODEL, MPI_COMM_MODEL,
+     &      mpi_task_id)
+#endif /* USE_PDAF */
+
+#ifdef ALLOW_OASIS
+C      add a 1rst preliminary call EESET_PARAMS to set useOASIS
+C      (needed to decide either to call OASIS_INIT or not)
+       CALL MPI_COMM_RANK( MPI_COMM_WORLD, mpiMyWId, mpiRC )
+       CALL EESET_PARMS ( mpiMyWId, doReport )
+       IF ( useOASIS ) CALL OASIS_INIT(MPI_COMM_MODEL)
+#endif /* ALLOW_OASIS */
+
+#ifdef COMPONENT_MODULE
+C--    Set the running directory
+       CALL MPI_COMM_RANK( MPI_COMM_WORLD, mpiMyWId, mpiRC )
+       CALL SETDIR( mpiMyWId )
+
+C- jmc: test:
+C      add a 1rst preliminary call EESET_PARAMS to set useCoupler
+C      (needed to decide either to call CPL_INIT or not)
+       CALL EESET_PARMS ( mpiMyWId, doReport )
+C- jmc: test end ; otherwise, uncomment next line:
+c      useCoupler = .TRUE.
+
+C--    Ask coupler interface for a communicator
+       IF ( useCoupler) CALL CPL_INIT
+#endif /* COMPONENT_MODULE */
+
+C--    Case with Nest(ing)
+#if defined(ALLOW_NEST_PARENT) || defined(ALLOW_NEST_CHILD)
+C--    Set the running directory
+       CALL MPI_COMM_RANK( MPI_COMM_WORLD, mpiMyWId, mpiRC )
+       CALL SETDIR( mpiMyWId )
+
+C--    Setup Nesting Execution Environment
+       CALL NEST_EEINIT( mpiMyWId, color )
+#endif /* ALLOW_NEST_PARENT | ALLOW_NEST_CHILD */
+
+#ifdef ALLOW_NEST2W_COMMON
+C--    Case with 2-Ways Nest(ing)
+C-     Set the running directory
+       CALL MPI_COMM_RANK( MPI_COMM_WORLD, mpiMyWId, mpiRC )
+       CALL SETDIR( mpiMyWId )
+
+C-     Setup Nesting Execution Environment
+       CALL NEST2W_EEINIT( mpiMyWId )
+       IF ( eeBootError ) GOTO 999
+#endif /* ALLOW_NEST2W_COMMON */
+
+#ifdef ALLOW_CPL_ISSM
+C     add a 1rst preliminary call EESET_PARAMS to set useCoupler
+       CALL MPI_COMM_RANK(MPI_COMM_WORLD, mpiMyWid, mpiRC)
+       CALL EESET_PARMS ( mpiMyWId, doReport )
+
+       IF ( useCoupler ) THEN
+          CALL MPI_COMM_SIZE(MPI_COMM_WORLD, numprocsworld, mpiRC)
+
+c     Split world into sub-communicators for each and every model:*/
+          CALL MPI_COMM_SPLIT(MPI_COMM_WORLD,1,MPIMYWID,
+     &         MPI_COMM_MODEL,mpiRC)
+
+          print*,'Oc My global rank',mpiMyWid
+          print*,'Oc My world size:',numprocsworld
+
+          CALL MPI_INTERCOMM_CREATE(MPI_COMM_MODEL,0,MPI_COMM_WORLD,
+     &         0,0,toissmcomm,mpiRC)
+
+          CALL MPI_COMM_RANK(MPI_COMM_MODEL, my_local_rank, mpiRC)
+          CALL MPI_COMM_SIZE(MPI_COMM_MODEL, my_local_size, mpiRC)
+
+          print*,'Oc My global rank',mpiMyWid,'MyLocal rank: ',
+     &         my_local_rank
+          print*,'Oc My world size:',numprocsworld,'My local size: ',
+     &         my_local_size
+       ENDIF
+#endif /* ALLOW_CPL_ISSM */
+
+C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
+
+C--    Get my process number
+       CALL MPI_COMM_RANK( MPI_COMM_MODEL, mpiMyId, mpiRC )
+       IF ( mpiRC .NE. MPI_SUCCESS ) THEN
+        eeBootError = .TRUE.
+        WRITE(msgBuf,'(A,I5)')
+     &        'EEBOOT_MINIMAL: MPI_COMM_RANK return code', mpiRC
+        CALL PRINT_ERROR( msgBuf, myThid )
+        GOTO 999
+       ENDIF
+       myProcId = mpiMyId
+       iTmp = MAX(4,1 + INT(LOG10(DFLOAT(nPx*nPy))))
+#ifdef USE_PDAF
+       WRITE(fmtStr,'(4(A,I1),A)')
+     &      '(I',iTmp,'.',iTmp,',A1,I',iTmp,'.',iTmp,')'
+       WRITE(myProcessStr,fmtStr) mpi_task_id,'.',myProcId
+#else
+       WRITE(fmtStr,'(2(A,I1),A)') '(I',iTmp,'.',iTmp,')'
+       WRITE(myProcessStr,fmtStr) myProcId
+#endif /* USE_PDAF */
+       iTmp = ILNBLNK( myProcessStr )
+       mpiPidIo = myProcId
+       pidIO    = mpiPidIo
+       IF ( mpiPidIo .EQ. myProcId ) THEN
+#ifdef SINGLE_DISK_IO
+        IF( myProcId .EQ. 0 ) THEN
+#endif
+         WRITE(fNam,'(A,A)') 'STDERR.', myProcessStr(1:iTmp)
+         OPEN(errorMessageUnit,FILE=fNam,STATUS='unknown')
+         WRITE(fNam,'(A,A)') 'STDOUT.', myProcessStr(1:iTmp)
+         OPEN(standardMessageUnit,FILE=fNam,STATUS='unknown')
+#ifdef SINGLE_DISK_IO
+        ELSE
+         OPEN(errorMessageUnit,FILE='/dev/null',STATUS='unknown')
+         standardMessageUnit=errorMessageUnit
+        ENDIF
+        IF( myProcId .EQ. 0 ) THEN
+          WRITE(msgBuf,'(2A)') '** WARNING ** EEBOOT_MINIMAL: ',
+     &     'defined SINGLE_DISK_IO will result in losing'
+          CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
+     &                        SQUEEZE_RIGHT, myThid )
+          WRITE(msgBuf,'(2A)') '** WARNING ** EEBOOT_MINIMAL: ',
+     &     'any message (error/warning) from any proc <> 0'
+          CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
+     &                        SQUEEZE_RIGHT, myThid )
+        ENDIF
+#endif
+       ENDIF
+
+#if defined(ALLOW_NEST_PARENT) || defined(ALLOW_NEST_CHILD)
+       WRITE(standardMessageUnit,'(2(A,I6))')
+     &           ' mpiMyWId =', mpiMyWId, ' , color =',color
+#endif /* ALLOW_NEST_PARENT | ALLOW_NEST_CHILD */
+
+C--    Synchronise all processes
+C      Strictly this is superfluous, but by using it we can guarantee to
+C      find out about processes that did not start up.
+       CALL MPI_BARRIER( MPI_COMM_MODEL, mpiRC )
+       IF ( mpiRC .NE. MPI_SUCCESS ) THEN
+        eeBootError = .TRUE.
+        WRITE(msgBuf,'(A,I6)')
+     &        'EEBOOT_MINIMAL: MPI_BARRIER return code', mpiRC
+        CALL PRINT_ERROR( msgBuf, myThid )
+        GOTO 999
+       ENDIF
+
+C--    Get number of MPI processes
+       CALL MPI_COMM_SIZE ( MPI_COMM_MODEL, mpiNProcs, mpiRC )
+       IF ( mpiRC .NE. MPI_SUCCESS ) THEN
+        eeBootError = .TRUE.
+        WRITE(msgBuf,'(A,I6)')
+     &        'EEBOOT_MINIMAL: MPI_COMM_SIZE return code', mpiRC
+        CALL PRINT_ERROR( msgBuf, myThid )
+        GOTO 999
+       ENDIF
+       numberOfProcs = mpiNProcs
+
+#endif /* ALLOW_USE_MPI */
+      ENDIF
+
+C--    Under MPI only allow same number of processes as proc grid size.
+C      Strictly we are allowed more procs but knowing there
+C      is an exact match makes things easier.
+       IF ( numberOfProcs .NE. nPx*nPy ) THEN
+        eeBootError = .TRUE.
+        WRITE(msgBuf,'(2(A,I6))')
+     &  'EEBOOT_MINIMAL: No. of procs=', numberOfProcs,
+     &  ' not equal to nPx*nPy=', nPx*nPy
+        CALL PRINT_ERROR( msgBuf, myThid )
+        GOTO 999
+       ENDIF
+
+#ifdef USE_LIBHPM
+       CALL F_HPMINIT(myProcId, "mitgcmuv")
+#endif
+
+ 999  CONTINUE
+      RETURN
+      END
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/eedie.F
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/eedie.F	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/eedie.F	(revision 27955)
@@ -0,0 +1,107 @@
+#include "CPP_EEOPTIONS.h"
+#ifdef USE_LIBHPM
+# include "f_hpm.h"
+#endif
+
+CBOP
+      SUBROUTINE EEDIE
+C     *==========================================================*
+C     | SUBROUTINE EEDIE                                         |
+C     | o Close execution "environment", particularly perform    |
+C     |   steps to terminate parallel processing.                |
+C     *==========================================================*
+C     | Note: This routine can also be compiled with CPP         |
+C     | directives set so that no multi-processing is initialised|
+C     | This is OK and should work fine.                         |
+C     *==========================================================*
+      IMPLICIT NONE
+
+C     == Global variables ==
+#include "SIZE.h"
+#include "EEPARAMS.h"
+#include "EESUPPORT.h"
+CEOP
+
+C     == Local variables ==
+C     msgBuf       :: I/O Buffer
+C     nThreadsDone :: Used to count number of completed threads.
+C     I            :: Loop counter.
+      CHARACTER*(MAX_LEN_MBUF) msgBuf
+      INTEGER nThreadsDone
+      INTEGER I
+#ifdef ALLOW_USE_MPI
+C     mpiRC        :: Error code reporting variable used with MPI.
+      INTEGER mpiRC
+#endif /* ALLOW_USE_MPI */
+
+      IF ( eeBootError ) THEN
+C--   Skip ended threads counting if earlier error was found
+        WRITE(msgBuf,'(2A)')
+     &   'EEDIE: earlier error in multi-proc/thread setting'
+        CALL PRINT_ERROR( msgBuf, 1 )
+        fatalError = .TRUE.
+
+      ELSE
+C--   Check that all the threads have ended
+C     No thread should reach this loop before all threads have set
+C     threadIsComplete to TRUE. If they do then either there is a bug
+C     in the code or the behaviour of the parallel compiler directives
+C     are not right for this code. In the latter case different
+C     directives may be available or the compiler itself may have a
+C     bug or you may need a different parallel compiler for main.F
+        nThreadsDone = 0
+        DO I = 1, nThreads
+         IF ( threadIsComplete(I) ) nThreadsDone = nThreadsDone+1
+        ENDDO
+        IF ( nThreadsDone .LT. nThreads ) THEN
+         WRITE(msgBuf,'(A,I5,A)')
+     &    'S/R EEDIE: Only',nThreadsDone,' threads have completed,'
+         CALL PRINT_ERROR( msgBuf, 1 )
+         WRITE(msgBuf,'(A,I5,A)')
+     &    'S/R EEDIE:',nThreads,' are expected for this config !'
+         CALL PRINT_ERROR( msgBuf, 1 )
+         eeEndError = .TRUE.
+         fatalError = .TRUE.
+        ENDIF
+
+C--   end if/else eebootError
+      ENDIF
+
+#ifdef USE_LIBHPM
+      CALL F_HPMTERMINATE(myProcId)
+#endif
+
+C--   Flush IO-unit before MPI termination
+      CALL MDS_FLUSH( errorMessageUnit, 1 )
+c#ifdef ALLOW_USE_MPI
+      CALL MDS_FLUSH( standardMessageUnit, 1 )
+c#endif /* ALLOW_USE_MPI */
+
+#ifdef ALLOW_USE_MPI
+C- Note: since MPI_INIT is always called, better to also always terminate MPI
+C        (even if usingMPI=F) --> comment out test on usingMPI
+c     IF ( usingMPI ) THEN
+
+C--   MPI style multiple-process termination
+C--   ======================================
+#if (defined COMPONENT_MODULE) || (defined ALLOW_CPL_ISSM)
+       IF ( useCoupler) CALL MPI_BARRIER( MPI_COMM_WORLD, mpiRC )
+#endif
+#ifdef ALLOW_OASIS
+       IF ( useOASIS ) CALL OASIS_FINALIZE
+#endif
+       CALL MPI_FINALIZE  ( mpiRC )
+       IF ( mpiRC .NE. MPI_SUCCESS ) THEN
+        eeEndError = .TRUE.
+        fatalError = .TRUE.
+        WRITE(msgBuf,'(A,I5)')
+     &       'S/R FIN_PROCS: MPI_FINALIZE return code',
+     &       mpiRC
+        CALL PRINT_ERROR( msgBuf, 1 )
+       ENDIF
+
+c     ENDIF
+#endif /* ALLOW_USE_MPI */
+
+      RETURN
+      END
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/packages.conf
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/packages.conf	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/code_remesh/packages.conf	(revision 27955)
@@ -0,0 +1,6 @@
+#-- list of packages (or group of packages) to compile for this experiment:
+gfd
+obcs
+shelfice
+diagnostics
+timeave
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/coupling_rules.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/coupling_rules.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/coupling_rules.txt	(revision 27955)
@@ -0,0 +1,125 @@
+Rules for coupling ISSM and MITgcm:
+
+* 
+>>>> CREATE A FILE WITH ALL THE NAMES AND TAGS FOR THE INFORMATION EXCHANGE INCLUDING:
+CouplingTime           1           Real*8  10001000
+IceModelTime           1           Real*8  10001001
+OceanModelTime         1           Real*8  10001002
+Nx                     1           Integer 10001003
+Ny                     1           Integer 10001004
+xC                     Nx*Ny       Real*8  10001005
+yC                     Nx*Ny       Real*8  10001006
+OceanMelt              Nx*Ny       Real*8  10001007
+    melt_mesh[i]=-melt_mesh[i]/rho_ice; //heat flux provided by ocean is in kg/m^2/s
+IceBase                Nx*Ny       Real*8  10001008
+    in m, 0 is sea level, negative is below sea level, 9999 is no ice
+
+>>>> INITIALIZATION FROM SCRATCH
+IceModelTime   = 0
+OceanModelTime = 0
+
+Initialization:
+  I1. ISSM sends CouplingTime, the interval at which we couple
+  I2. MITgcm sends grid size (NX and NY)
+  I3. MITgcm sends grid coordinates of center of cells
+      (longitude -180 <= XC < 180 and latitude YC)
+  C1. ISSM sends ice model time IceTimeTag
+  C2. MITgcm sends ocean model time OceanTimeTag
+  C4. ISSM sends IceModelTime=0 base to MITgcm
+      (base should be 9999 in areas not covered by ice grid)
+  C5o. MITgcm integrates from OceanModelTime=0
+                           to OceanModelTime=CouplingTime
+
+First Recurrent Coupling Exchange:
+IceModelTime   = 0
+OceanModelTime = CouplingTime
+  C1. ISSM sends ice model time IceTimeTag
+  C2. MITgcm sends ocean model time OceanTimeTag
+  C3. MITgcm sends
+      0 <= OceanModelTime < CouplingTime
+      time-mean melt rate to ISSM
+  C4. ISSM sends IceModelTime=0 base to MITgcm
+      (this is duplicate of Initialization)
+  C5i. ISSM integrates from IceModelTime=0
+                         to IceModelTime=CouplingTime
+  C5o. MITgcm integrates from OceanModelTime=CouplingTime
+                           to OceanModelTime=2*CouplingTime
+
+...
+
+Coupling Exchange N:
+IceModelTime   = (N-1) * CouplingTime
+OceanModelTime =   N   * CouplingTime
+  C1. ISSM sends ice model time IceTimeTag
+  C2. MITgcm sends ocean model time OceanTimeTag
+  C3. MITgcm sends
+      (N-1)*CouplingTime <= OceanModelTime < N*CouplingTime
+      time-mean melt rate to ISSM
+  C4. ISSM sends IceModelTime=(N-1)*CouplingTime base to MITgcm
+  C5i. ISSM integrates from IceModelTime=(N-1)*CouplingTime
+                         to IceModelTime=N*CouplingTime
+  C5o. MITgcm integrates from OceanModelTime=N*CouplingTime
+                           to OceanModelTime=(N+1)*CouplingTime
+
+Termination:
+IceModelTime   =   N   * CouplingTime
+OceanModelTime = (N+1) * CouplingTime
+  C1. ISSM sends ice model time IceTimeTag
+  C2. MITgcm sends ocean model time OceanTimeTag
+  C3. MITgcm sends
+      N*CouplingTime <= OceanModelTime < (N+1)*CouplingTime
+      time-mean melt rate to ISSM
+  Ti. ISSM saves to restart files the IceModelTime=N state and
+       the N*CouplingTime to (N+1)*CouplingTime mean melt rate
+  To. MITgcm saves to restart files
+       the OceanModelTime=(N+1)*CouplingTime state
+
+
+>>>> RESTART FROM SAVED STATE
+IceModelTime   =   N   * CouplingTime
+OceanModelTime = (N+1) * CouplingTime
+
+  - ISSM reads from restart files the IceModelTime=N state and
+      the N*CouplingTime to (N+1)*CouplingTime mean melt rate
+      
+  - MITgcm reads from restart files
+      the OceanModelTime=(N+1)*CouplingTime state
+
+Initialization:
+  I1. ISSM sends CouplingTime
+  I2. MITgcm sends grid size (NX and NY)
+  I3. MITgcm sends grid coordinates (XC and YC)
+  C1. ISSM sends ice model time IceTimeTag
+  C2. MITgcm sends ocean model time OceanTimeTag
+  C4. ISSM sends IceModelTime=N base to MITgcm
+  C5i. ISSM integrates from IceModelTime=N*CouplingTime
+                         to IceModelTime=(N+1)*CouplingTime
+  C5o. MITgcm integrates from OceanModelTime=(N+1)*CouplingTime
+                          to OceanModelTime=(N+2)*CouplingTime
+
+First Recurrent Coupling Exchange:
+IceModelTime   = (N+1)   * CouplingTime
+OceanModelTime = (N+2) * CouplingTime
+  C1. ISSM sends ice model time IceTimeTag
+  C2. MITgcm sends ocean model time OceanTimeTag
+  C3. MITgcm sends
+      (N+1)*CouplingTime <= OceanModelTime < (N+2)*CouplingTime
+      time-mean melt rate to ISSM
+  C4. ISSM sends IceModelTime=(N+1)*CouplingTime base to MITgcm
+  C5i. ISSM integrates from IceModelTime=(N+1)*CouplingTime
+                         to IceModelTime=(N+2)*CouplingTime
+  C5o. MITgcm integrates from OceanModelTime=(N+2)*CouplingTime
+                           to OceanModelTime=(N+3)*CouplingTime
+
+...
+
+
+TODO/WISH LIST
+* finish initialization 
+   - MITgcm runs 1 time step with ocean ice base, not from ISSM
+* do other time steps (coupling time = N)
+* ISSM works on interpolation
+* 1 + 1 = 2 (so pickup working)
+* change MITgcm to include new base and changes in ocean
+* make sure that RunCoupledMITgcmISSM and RunCoupledMITgcmISSM2
+  can produce the same results!
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/get_mitgcm.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/get_mitgcm.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/get_mitgcm.sh	(revision 27955)
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+if [ -e ~/.bashrc ]; then 
+	source ~/.bashrc
+fi
+
+# Download fresh copy of MITgcm
+cd ../MITgcm/
+if [ ! -d install ]; then
+    source install.sh
+else
+    cd install
+    git pull
+    cd ..
+fi
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input/data
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input/data	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input/data	(revision 27955)
@@ -0,0 +1,74 @@
+# ====================
+# | Model parameters |
+# ====================
+#
+# Continuous equation parameters
+ &PARM01
+ Tref = 30*-1.9,
+ Sref = 30*34.4,
+ viscAz=1.E-3,
+ viscAh=600.0,
+ no_slip_sides=.FALSE.,
+ no_slip_bottom=.FALSE.,
+ diffKhT=100.0,
+ diffKzT=5.E-5,
+ diffKhS=100.0,
+ diffKzS=5.E-5,
+ bottomDragQuadratic=2.5E-3,
+ eosType='JMD95Z', 
+ HeatCapacity_cp = 3974.0,
+ rhoConst=1030.,
+ rhoNil=1030.,
+ gravity=9.81,
+ convertFW2Salt = 33.4,
+ rigidLid=.FALSE.,
+ implicitFreeSurface=.TRUE.,
+ exactConserv=.TRUE.,
+ hFacMin=0.05,
+ nonHydrostatic=.FALSE.,
+ globalfiles = .TRUE.,
+ useSingleCpuIO = .TRUE.,
+ &
+
+# Elliptic solver parameters
+ &PARM02
+ cg2dMaxIters=1000,
+ cg2dTargetResidual=1.E-13,
+ cg3dMaxIters=400,
+ cg3dTargetResidual=1.E-13,
+ &
+
+# Time stepping parameters
+ &PARM03
+ startTime=0.,
+ endTime=2592000.,
+ deltaT=1200.0,
+ abEps=0.1,
+ cAdjFreq = 1.,
+ pChkptFreq=2592000.,
+ chkptFreq=0.,
+ dumpFreq=0.,
+ taveFreq=2592000.,
+ monitorFreq=1200.,
+ monitorSelect=2,
+ &
+
+# Gridding parameters
+ &PARM04
+ usingSphericalPolarGrid=.TRUE.,
+ xgOrigin = 0.0,
+ ygOrigin = -80.0,
+ delX = 20*0.25,
+ delY = 40*0.05,
+ delZ = 30*30.0,
+ &
+
+# Input datasets
+ &PARM05
+ bathyFile       = 'bathymetry.bin',
+ hydrogSaltFile  = 'Salt.bin',
+ hydrogThetaFile = 'Theta.bin',
+ uVelInitFile    = 'Uvel.bin',
+ vVelInitFile    = 'Vvel.bin',
+ pSurfInitFile   = 'Etan.bin',
+ &
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input/data.obcs
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input/data.obcs	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input/data.obcs	(revision 27955)
@@ -0,0 +1,18 @@
+# ***************
+# Open boundaries
+# ***************
+ &OBCS_PARM01
+ OB_Iwest = 40*1,
+ OB_Ieast = 40*-1,
+#
+ useOBCSprescribe = .TRUE.,
+#
+ OBWsFile = 'OBs.bin',
+ OBWtFile = 'OBt.bin',
+ OBWuFile = 'OBu.bin',
+ OBWvFile = 'zeros.bin',
+ OBEsFile = 'OBs.bin',
+ OBEtFile = 'OBt.bin',
+ OBEuFile = 'OBu.bin',
+ OBEvFile = 'zeros.bin',
+ &
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input/data.pkg
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input/data.pkg	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input/data.pkg	(revision 27955)
@@ -0,0 +1,5 @@
+# Packages
+ &PACKAGES
+ useShelfIce = .TRUE.,
+ useOBCS     = .TRUE.,
+ &
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input/data.shelfice
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input/data.shelfice	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input/data.shelfice	(revision 27955)
@@ -0,0 +1,9 @@
+# ===================================
+# | Parameters for SHELFICE package |
+# ===================================
+ &SHELFICE_PARM01
+ SHELFICEconserve = .TRUE.,
+ SHELFICEboundaryLayer = .TRUE.,
+ SHELFICEtopoFile='icetopo.bin',
+ SHELFICEwriteState = .TRUE.,
+ &
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input/eedata
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input/eedata	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input/eedata	(revision 27955)
@@ -0,0 +1,10 @@
+# Example "eedata" file
+# Lines beginning "#" are comments
+# nTx - No. threads per process in X
+# nTy - No. threads per process in Y
+ &EEPARMS
+ useCoupler=.TRUE.,
+ &
+# Note: Some systems use & as the
+# namelist terminator. Other systems
+# use a / character (as shown here).
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input/eedata_uncoupled
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input/eedata_uncoupled	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input/eedata_uncoupled	(revision 27955)
@@ -0,0 +1,10 @@
+# Example "eedata" file
+# Lines beginning "#" are comments
+# nTx - No. threads per process in X
+# nTy - No. threads per process in Y
+ &EEPARMS
+ useCoupler=.FALSE.,
+ &
+# Note: Some systems use & as the
+# namelist terminator. Other systems
+# use a / character (as shown here).
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/data
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/data	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/data	(revision 27955)
@@ -0,0 +1,100 @@
+# ====================
+# | Model parameters |
+# ====================
+#
+# Continuous equation parameters
+ &PARM01
+ tRef = 90*-1.9,
+ sRef = 90*34.4,
+ eosType='JMD95Z',
+ HeatCapacity_Cp = 3974.0,
+ rhoConst=1030.,
+ gravity=9.81,
+ viscAr=1.E-3,
+ viscAh= 300.,
+ no_slip_sides=.FALSE.,
+ no_slip_bottom=.FALSE.,
+ diffKhT= 10.,
+ diffKrT=5.E-5,
+ diffKhS= 10.,
+ diffKrS=5.E-5,
+ bottomDragQuadratic=2.5E-3,
+ staggerTimestep = .TRUE.,
+ tempAdvScheme=77,
+ saltAdvScheme=77,
+ vectorInvariantMomentum = .TRUE.,
+# momImplVertAdv=.TRUE.,
+#tempImplVertAdv=.TRUE.,
+#saltImplVertAdv=.TRUE.,
+ implicitDiffusion = .TRUE.,
+ implicitViscosity = .TRUE.,
+ selectImplicitDrag = 2,
+ implicitFreeSurface=.TRUE.,
+ useRealFreshWaterFlux = .TRUE.,
+ exactConserv=.TRUE.,
+# start NLFS (without rstar)
+ nonlinFreeSurf=4,
+ hFacInf=0.05,
+ hFacSup=2.0,
+# end NLFS
+ hFacMin=0.10,
+#integr_GeoPot = 1,
+ ivdc_kappa = 1.,
+ useJamartWetPoints=.TRUE.,
+ selectBotDragQuadr=1,
+#bottomVisc_pCell=.TRUE.,
+#-
+ readBinaryPrec=64,
+#writeBinaryPrec=64,
+ useSingleCpuIO=.TRUE.,
+#globalFiles=.TRUE.,
+ debuglevel = 2,
+ plotLevel = 0,
+ &
+
+# Elliptic solver parameters
+ &PARM02
+ cg2dMaxIters=300,
+ cg2dTargetResidual=1.E-11,
+#printResidualFreq=100,
+ &
+
+#Time stepping parameters
+ &PARM03
+ startTime=0.,
+ nTimeSteps=192,
+#endTime=2592000.,
+ deltaT=450.0,
+ forcing_In_AB  = .FALSE.,
+ abEps=0.1,
+ pChkptFreq= 2592000.,
+ chkptFreq = 2592000.,
+ dumpFreq =  86400.,
+ monitorFreq=1.,
+ &
+
+# Gridding parameters
+ &PARM04
+ usingCartesianGrid=.FALSE.,
+ usingSphericalPolarGrid=.TRUE.,
+ delR=90*10.,
+ delX=3*.125,
+ delY=200*.0078125,
+ xgOrigin = 0.,
+ ygOrigin = -75.5,
+ pCellMix_select=20,
+ pcellMix_delR = 10.,
+#interViscAr_pCell = .TRUE.,
+#interDiffKr_pCell = .TRUE.,
+ pCellMix_viscAr = 90*1.E-3,
+ pCellMix_diffKr = 90*1.E-4,
+# current default: diffKzT=5.E-5, viscAz=1.E-3,
+ &
+
+# Input datasets
+ &PARM05
+ bathyFile='bathy_flat.bin',
+ hydrogThetaFile='temp_ini.bin',	
+ hydrogSaltFile ='salt_ini.bin',
+# pSurfInitFile ='etai_ini.bin'
+ &
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/data.diagnostics
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/data.diagnostics	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/data.diagnostics	(revision 27955)
@@ -0,0 +1,69 @@
+# Diagnostic Package Choices
+#-----------------
+# for each output-stream:
+#  filename(n) : prefix of the output file name (only 8.c long) for outp.stream n
+#  frequency(n):< 0 : write snap-shot output every |frequency| seconds
+#               > 0 : write time-average output every frequency seconds
+#  timePhase(n)     : write at time = timePhase + multiple of |frequency|
+#  averagingFreq(n) : frequency (in s) for periodic averaging interval
+#  averagingPhase(n): phase     (in s) for periodic averaging interval
+#  repeatCycle(n)   : number of averaging intervals in 1 cycle
+#  levels(:,n) : list of levels to write to file (Notes: declared as REAL)
+#                 when this entry is missing, select all common levels of this list
+#  fields(:,n) : list of diagnostics fields (8.c) (see "available_diagnostics.log"
+#                 file for the list of all available diag. in this particular config)
+#-----------------
+ &DIAGNOSTICS_LIST
+# diag_mnc     = .FALSE.,
+  dumpAtLast   = .TRUE.,
+  fields(1:13,1) = 'ETAN    ','RSURF   ','oceTAUX ','oceTAUY ',
+                   'oceQnet ','oceFWflx','MXLDEPTH',
+                   'SHIfwFlx','SHIhtFlx','SHIgammT','SHIgammS',
+                   'SHI_mass','SHIuStar',
+#                  'surForcT','surForcS','TFLUX   ','SFLUX   ','oceFreez',
+#                  'TRELAX  ','SRELAX  ',
+#  fields(1,1)='ETAN'
+   filename(1) = 'surfDiag',
+   frequency(1) =  86400.,
+#-
+  fields(1:10,2) = 'UVEL    ','VVEL    ','WVEL    ',
+                   'THETA   ','SALT    ','RHOAnoma', 'CONVADJ'
+                   'hFactorC','hFactorW','hFactorS',
+   filename(2) = 'dynDiag',
+  fileFlags(2) = '  h     ',
+  frequency(2) =  86400.,
+#-
+  fields(1:7,3) =  'ETAN    ','RSURF   ',
+                   'oceQnet ','oceFWflx',
+                   'SHIfwFlx','SHIhtFlx','SHIuStar',
+#  filename(3) = 'surfInst',
+  frequency(3) =  -86400.,
+  timePhase(3) = 0.,
+#-
+  fields(1:8,4)  = 'UVEL    ','VVEL    ','WVEL    ',
+                   'THETA   ','SALT    ',
+                   'hFactorC','hFactorW','hFactorS',
+#  filename(4) = 'dynInst',
+  frequency(4) =  -86400.,
+  timePhase(4) = 0.,
+ &
+
+#--------------------
+# Parameter for Diagnostics of per level statistics:
+#--------------------
+#  diagSt_mnc (logical): write stat-diags to NetCDF files (default=diag_mnc)
+#  diagSt_regMaskFile : file containing the region-mask to read-in
+#  nSetRegMskFile   : number of region-mask sets within the region-mask file
+#  set_regMask(i)   : region-mask set-index that identifies the region "i"
+#  val_regMask(i)   : region "i" identifier value in the region mask
+#--for each output-stream:
+#  stat_fName(n) : prefix of the output file name (max 80c long) for outp.stream n
+#  stat_freq(n):< 0 : write snap-shot output every |stat_freq| seconds
+#               > 0 : write time-average output every stat_freq seconds
+#  stat_phase(n)    : write at time = stat_phase + multiple of |stat_freq|
+#  stat_region(:,n) : list of "regions" (default: 1 region only=global)
+#  stat_fields(:,n) : list of selected diagnostics fields (8.c) in outp.stream n
+#                (see "available_diagnostics.log" file for the full list of diags)
+#--------------------
+ &DIAG_STATIS_PARMS
+ &
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/data.obcs
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/data.obcs	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/data.obcs	(revision 27955)
@@ -0,0 +1,32 @@
+# Open-boundaries
+ &OBCS_PARM01
+ OB_Jnorth=3*200,
+ useOBCSprescribe=.TRUE.,
+#OBWuFile='uVel_obc.bin',
+ OBNvFile='vVel_obc.bin',
+ OBNtFile='temp_obc.bin',
+ OBNsFile='salt_obc.bin',
+ OBCS_u1_adv_T=1,
+ OBCS_u1_adv_S=1,
+#--
+ useOBCSsponge=.TRUE.,
+ useLinearSponge = .TRUE.,
+#- default is =T for these specific switches:
+#OBCSsponge_VatNS=.TRUE.,
+ OBCSsponge_UatNS=.FALSE.,
+#--
+ OBCSprintDiags = .FALSE.,
+ &
+
+# Orlanski parameters (skipped with #undef ALLOW_ORLANSKI)
+#&OBCS_PARM02
+#Cmax=0.45,
+#cVelTimeScale=1000.,
+#&
+
+# Sponge layer parameters
+ &OBCS_PARM03
+ spongeThickness = 10,
+ Vrelaxobcsbound = 864000.,
+ Urelaxobcsbound = 864000.,
+ &
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/data.pkg
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/data.pkg	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/data.pkg	(revision 27955)
@@ -0,0 +1,6 @@
+# Packages (lines beginning "#" are comments)
+ &PACKAGES
+ useOBCS=.TRUE.,
+ useShelfIce=.TRUE.,
+ useDiagnostics = .TRUE.,
+ &
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/data.shelfice
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/data.shelfice	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/data.shelfice	(revision 27955)
@@ -0,0 +1,20 @@
+# ===================================
+# | Parameters for SHELFICE package |
+# ===================================
+ &SHELFICE_PARM01
+ SHELFICEconserve = .TRUE.,
+ SHELFICEuseGammaFrict = .TRUE.,
+ SHELFICEDragQuadratic = 0.0015,
+ shiCdrag = 0.0015,
+ SHELFICEselectDragQuadr= 2,
+ SHELFICEMassStepping = .TRUE.,
+#--
+ SHELFICEremeshFrequency = 600.0,
+#- need to satisfy: splitThrs > 1 + mergeThrs / Sdz
+#       with: Sdz = min{ delR(k+1)/delR(k) }_[k=1:Nr-1]
+ SHELFICEsplitThreshold = 1.12,
+ SHELFICEmergeThreshold = 0.10,
+#--
+ SHELFICEtopoFile='shelficeTopo.Lin.bin',
+ SHELFICEwriteState = .TRUE.,
+ &
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/eedata
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/eedata	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/eedata	(revision 27955)
@@ -0,0 +1,11 @@
+# Example "eedata" file
+# Lines beginning "#" are comments
+#  nTx      :: No. threads per process in X
+#  nTy      :: No. threads per process in Y
+# debugMode :: print debug msg (sequence of S/R calls)
+ &EEPARMS
+ useCoupler=.TRUE.,
+ debugMode=.TRUE.,
+ &
+# Note: Some systems use & as the namelist terminator (as shown here).
+#       Other systems use a / character.
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/eedata_uncoupled
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/eedata_uncoupled	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4003/eedata_uncoupled	(revision 27955)
@@ -0,0 +1,10 @@
+# Example "eedata" file
+# Lines beginning "#" are comments
+#  nTx      :: No. threads per process in X
+#  nTy      :: No. threads per process in Y
+# debugMode :: print debug msg (sequence of S/R calls)
+ &EEPARMS
+ useCoupler=.FALSE.,
+ &
+# Note: Some systems use & as the namelist terminator (as shown here).
+#       Other systems use a / character.
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/data
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/data	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/data	(revision 27955)
@@ -0,0 +1,100 @@
+# ====================
+# | Model parameters |
+# ====================
+#
+# Continuous equation parameters
+ &PARM01
+ tRef = 90*-1.9,
+ sRef = 90*34.4,
+ eosType='JMD95Z',
+ HeatCapacity_Cp = 3974.0,
+ rhoConst=1030.,
+ gravity=9.81,
+ viscAr=1.E-3,
+ viscAh= 300.,
+ no_slip_sides=.FALSE.,
+ no_slip_bottom=.FALSE.,
+ diffKhT= 10.,
+ diffKrT=5.E-5,
+ diffKhS= 10.,
+ diffKrS=5.E-5,
+ bottomDragQuadratic=2.5E-3,
+ staggerTimestep = .TRUE.,
+ tempAdvScheme=77,
+ saltAdvScheme=77,
+ vectorInvariantMomentum = .TRUE.,
+# momImplVertAdv=.TRUE.,
+#tempImplVertAdv=.TRUE.,
+#saltImplVertAdv=.TRUE.,
+ implicitDiffusion = .TRUE.,
+ implicitViscosity = .TRUE.,
+ selectImplicitDrag = 2,
+ implicitFreeSurface=.TRUE.,
+ useRealFreshWaterFlux = .TRUE.,
+ exactConserv=.TRUE.,
+# start NLFS (without rstar)
+ nonlinFreeSurf=4,
+ hFacInf=0.05,
+ hFacSup=2.0,
+# end NLFS
+ hFacMin=0.10,
+#integr_GeoPot = 1,
+ ivdc_kappa = 1.,
+ useJamartWetPoints=.TRUE.,
+ selectBotDragQuadr=1,
+#bottomVisc_pCell=.TRUE.,
+#-
+ readBinaryPrec=64,
+#writeBinaryPrec=64,
+ useSingleCpuIO=.TRUE.,
+#globalFiles=.TRUE.,
+ debuglevel = 5,
+ plotLevel = 0,
+ &
+
+# Elliptic solver parameters
+ &PARM02
+ cg2dMaxIters=300,
+ cg2dTargetResidual=1.E-11,
+#printResidualFreq=100,
+ &
+
+#Time stepping parameters
+ &PARM03
+ startTime=0.,
+ nTimeSteps=192,
+#endTime=2592000.,
+ deltaT=450.0,
+ forcing_In_AB  = .FALSE.,
+ abEps=0.1,
+ pChkptFreq= 2592000.,
+ chkptFreq = 2592000.,
+ dumpFreq =  450.,
+ monitorFreq=1.,
+ &
+
+# Gridding parameters
+ &PARM04
+ usingCartesianGrid=.FALSE.,
+ usingSphericalPolarGrid=.TRUE.,
+ delR=90*10.,
+ delX=3*.125,
+ delY=200*.0078125,
+ xgOrigin = 0.,
+ ygOrigin = -75.5,
+ pCellMix_select=20,
+ pcellMix_delR = 10.,
+#interViscAr_pCell = .TRUE.,
+#interDiffKr_pCell = .TRUE.,
+ pCellMix_viscAr = 90*1.E-3,
+ pCellMix_diffKr = 90*1.E-4,
+# current default: diffKzT=5.E-5, viscAz=1.E-3,
+ &
+
+# Input datasets
+ &PARM05
+ bathyFile='bathy_flat.bin',
+ hydrogThetaFile='temp_ini.bin',	
+ hydrogSaltFile ='salt_ini.bin',
+# pSurfInitFile ='etai_ini.bin'
+ &
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/data.diagnostics
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/data.diagnostics	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/data.diagnostics	(revision 27955)
@@ -0,0 +1,69 @@
+# Diagnostic Package Choices
+#-----------------
+# for each output-stream:
+#  filename(n) : prefix of the output file name (only 8.c long) for outp.stream n
+#  frequency(n):< 0 : write snap-shot output every |frequency| seconds
+#               > 0 : write time-average output every frequency seconds
+#  timePhase(n)     : write at time = timePhase + multiple of |frequency|
+#  averagingFreq(n) : frequency (in s) for periodic averaging interval
+#  averagingPhase(n): phase     (in s) for periodic averaging interval
+#  repeatCycle(n)   : number of averaging intervals in 1 cycle
+#  levels(:,n) : list of levels to write to file (Notes: declared as REAL)
+#                 when this entry is missing, select all common levels of this list
+#  fields(:,n) : list of diagnostics fields (8.c) (see "available_diagnostics.log"
+#                 file for the list of all available diag. in this particular config)
+#-----------------
+ &DIAGNOSTICS_LIST
+# diag_mnc     = .FALSE.,
+  dumpAtLast   = .TRUE.,
+  fields(1:13,1) = 'ETAN    ','RSURF   ','oceTAUX ','oceTAUY ',
+                   'oceQnet ','oceFWflx','MXLDEPTH',
+                   'SHIfwFlx','SHIhtFlx','SHIgammT','SHIgammS',
+                   'SHI_mass','SHIuStar',
+#                  'surForcT','surForcS','TFLUX   ','SFLUX   ','oceFreez',
+#                  'TRELAX  ','SRELAX  ',
+#  fields(1,1)='ETAN'
+   filename(1) = 'surfDiag',
+   frequency(1) =  450.,
+#-
+  fields(1:10,2) = 'UVEL    ','VVEL    ','WVEL    ',
+                   'THETA   ','SALT    ','RHOAnoma', 'CONVADJ'
+                   'hFactorC','hFactorW','hFactorS',
+   filename(2) = 'dynDiag',
+  fileFlags(2) = '  h     ',
+  frequency(2) =  450.,
+#-
+  fields(1:7,3) =  'ETAN    ','RSURF   ',
+                   'oceQnet ','oceFWflx',
+                   'SHIfwFlx','SHIhtFlx','SHIuStar',
+#  filename(3) = 'surfInst',
+  frequency(3) =  -450.,
+  timePhase(3) = 0.,
+#-
+  fields(1:8,4)  = 'UVEL    ','VVEL    ','WVEL    ',
+                   'THETA   ','SALT    ',
+                   'hFactorC','hFactorW','hFactorS',
+#  filename(4) = 'dynInst',
+  frequency(4) =  -450.,
+  timePhase(4) = 0.,
+ &
+
+#--------------------
+# Parameter for Diagnostics of per level statistics:
+#--------------------
+#  diagSt_mnc (logical): write stat-diags to NetCDF files (default=diag_mnc)
+#  diagSt_regMaskFile : file containing the region-mask to read-in
+#  nSetRegMskFile   : number of region-mask sets within the region-mask file
+#  set_regMask(i)   : region-mask set-index that identifies the region "i"
+#  val_regMask(i)   : region "i" identifier value in the region mask
+#--for each output-stream:
+#  stat_fName(n) : prefix of the output file name (max 80c long) for outp.stream n
+#  stat_freq(n):< 0 : write snap-shot output every |stat_freq| seconds
+#               > 0 : write time-average output every stat_freq seconds
+#  stat_phase(n)    : write at time = stat_phase + multiple of |stat_freq|
+#  stat_region(:,n) : list of "regions" (default: 1 region only=global)
+#  stat_fields(:,n) : list of selected diagnostics fields (8.c) in outp.stream n
+#                (see "available_diagnostics.log" file for the full list of diags)
+#--------------------
+ &DIAG_STATIS_PARMS
+ &
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/data.obcs
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/data.obcs	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/data.obcs	(revision 27955)
@@ -0,0 +1,32 @@
+# Open-boundaries
+ &OBCS_PARM01
+ OB_Jnorth=3*200,
+ useOBCSprescribe=.TRUE.,
+#OBWuFile='uVel_obc.bin',
+ OBNvFile='vVel_obc.bin',
+ OBNtFile='temp_obc.bin',
+ OBNsFile='salt_obc.bin',
+ OBCS_u1_adv_T=1,
+ OBCS_u1_adv_S=1,
+#--
+ useOBCSsponge=.TRUE.,
+ useLinearSponge = .TRUE.,
+#- default is =T for these specific switches:
+#OBCSsponge_VatNS=.TRUE.,
+ OBCSsponge_UatNS=.FALSE.,
+#--
+ OBCSprintDiags = .FALSE.,
+ &
+
+# Orlanski parameters (skipped with #undef ALLOW_ORLANSKI)
+#&OBCS_PARM02
+#Cmax=0.45,
+#cVelTimeScale=1000.,
+#&
+
+# Sponge layer parameters
+ &OBCS_PARM03
+ spongeThickness = 10,
+ Vrelaxobcsbound = 864000.,
+ Urelaxobcsbound = 864000.,
+ &
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/data.pkg
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/data.pkg	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/data.pkg	(revision 27955)
@@ -0,0 +1,6 @@
+# Packages (lines beginning "#" are comments)
+ &PACKAGES
+ useOBCS=.TRUE.,
+ useShelfIce=.TRUE.,
+ useDiagnostics = .TRUE.,
+ &
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/data.shelfice
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/data.shelfice	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/data.shelfice	(revision 27955)
@@ -0,0 +1,20 @@
+# ===================================
+# | Parameters for SHELFICE package |
+# ===================================
+ &SHELFICE_PARM01
+ SHELFICEconserve = .TRUE.,
+ SHELFICEuseGammaFrict = .TRUE.,
+ SHELFICEDragQuadratic = 0.0015,
+ shiCdrag = 0.0015,
+ SHELFICEselectDragQuadr= 2,
+ SHELFICEMassStepping = .TRUE.,
+#--
+ SHELFICEremeshFrequency = 450.0,
+#- need to satisfy: splitThrs > 1 + mergeThrs / Sdz
+#       with: Sdz = min{ delR(k+1)/delR(k) }_[k=1:Nr-1]
+ SHELFICEsplitThreshold = 1.12,
+ SHELFICEmergeThreshold = 0.10,
+#--
+ SHELFICEtopoFile='shelficeTopo.Lin.bin',
+ SHELFICEwriteState = .TRUE.,
+ &
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/eedata
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/eedata	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/eedata	(revision 27955)
@@ -0,0 +1,11 @@
+# Example "eedata" file
+# Lines beginning "#" are comments
+#  nTx      :: No. threads per process in X
+#  nTy      :: No. threads per process in Y
+# debugMode :: print debug msg (sequence of S/R calls)
+ &EEPARMS
+ useCoupler=.TRUE.,
+ debugMode=.TRUE.,
+ &
+# Note: Some systems use & as the namelist terminator (as shown here).
+#       Other systems use a / character.
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/eedata_uncoupled
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/eedata_uncoupled	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_4004/eedata_uncoupled	(revision 27955)
@@ -0,0 +1,10 @@
+# Example "eedata" file
+# Lines beginning "#" are comments
+#  nTx      :: No. threads per process in X
+#  nTy      :: No. threads per process in Y
+# debugMode :: print debug msg (sequence of S/R calls)
+ &EEPARMS
+ useCoupler=.FALSE.,
+ &
+# Note: Some systems use & as the namelist terminator (as shown here).
+#       Other systems use a / character.
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/data
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/data	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/data	(revision 27955)
@@ -0,0 +1,79 @@
+# ====================
+# | Model parameters |
+# ====================
+#
+# Continuous equation parameters
+ &PARM01
+ Tref = 30*-1.9,
+ Sref = 30*34.4,
+ viscAz=1.E-3,
+ viscAh=600.0,
+ no_slip_sides=.FALSE.,
+ no_slip_bottom=.FALSE.,
+ diffKhT=100.0,
+ diffKzT=5.E-5,
+ diffKhS=100.0,
+ diffKzS=5.E-5,
+ bottomDragQuadratic=2.5E-3,
+ eosType='JMD95Z', 
+ HeatCapacity_cp = 3974.0,
+ rhoConst=1030.,
+ rhoNil=1030.,
+ gravity=9.81,
+ convertFW2Salt = 33.4,
+ rigidLid=.FALSE.,
+ implicitFreeSurface=.TRUE.,
+ exactConserv=.TRUE.,
+ hFacMin=0.05,
+ hFacInf=0.025,
+ nonHydrostatic=.FALSE.,
+ globalfiles = .TRUE.,
+ useSingleCpuIO = .TRUE.,
+ vectorInvariantMomentum = .TRUE.,
+ selectImplicitDrag = 2,  
+ nonlinfreesurf = 4, 
+ &
+
+# Elliptic solver parameters
+ &PARM02
+ cg2dMaxIters=1000,
+ cg2dTargetResidual=1.E-13,
+ cg3dMaxIters=400,
+ cg3dTargetResidual=1.E-13,
+ &
+
+# Time stepping parameters
+ &PARM03
+ niter0=0
+# endTime=2592000.,
+ nTimesteps=4380,
+ deltaT=600.0,
+ abEps=0.1,
+ cAdjFreq = 1.,
+ pChkptFreq=2628000.,
+ chkptFreq=0.,
+ dumpFreq=0.,
+ taveFreq=2628000.,
+ monitorFreq=1200.,
+ monitorSelect=2,
+ &
+
+# Gridding parameters
+ &PARM04
+ usingSphericalPolarGrid=.TRUE.,
+ xgOrigin = 0.0,
+ ygOrigin = -80.0,
+ delX = 20*0.25,
+ delY = 40*0.05,
+ delZ = 30*30.0,
+ &
+
+# Input datasets
+ &PARM05
+ bathyFile       = 'bathymetry.bin',
+# hydrogSaltFile  = 'Salt.bin',
+# hydrogThetaFile = 'Theta.bin',
+# uVelInitFile    = 'Uvel.bin',
+# vVelInitFile    = 'Vvel.bin',
+# pSurfInitFile   = 'Etan.bin',
+ &
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/data.diagnostics
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/data.diagnostics	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/data.diagnostics	(revision 27955)
@@ -0,0 +1,49 @@
+# Diagnostic Package Choices
+#-----------------
+# for each output-stream:
+#  filename(n) : prefix of the output file name (only 8.c long) for outp.stream n
+#  frequency(n):< 0 : write snap-shot output every |frequency| seconds
+#               > 0 : write time-average output every frequency seconds
+#  timePhase(n)     : write at time = timePhase + multiple of |frequency|
+#  averagingFreq(n) : frequency (in s) for periodic averaging interval
+#  averagingPhase(n): phase     (in s) for periodic averaging interval
+#  repeatCycle(n)   : number of averaging intervals in 1 cycle
+#  levels(:,n) : list of levels to write to file (Notes: declared as REAL)
+#                 when this entry is missing, select all common levels of this list
+#  fields(:,n) : list of diagnostics fields (8.c) (see "available_diagnostics.log"
+#                 file for the list of all available diag. in this particular config)
+#-----------------
+ &DIAGNOSTICS_LIST
+# diag_mnc     = .FALSE.,
+  dumpAtLast   = .FALSE.,
+  fields(1:4,1) = 'ETAN    ','SHIfwFlx',
+                   'SHI_mass','SHIRshel'
+#                  'surForcT','surForcS','TFLUX   ','SFLUX   ','oceFreez',
+#                  'TRELAX  ','SRELAX  ',
+#  fields(1,1)='ETAN'
+   filename(1) = 'surfDiag',
+# frequency(1) =  2592000.,
+# frequency(1) =  86400.,
+  frequency(1) =  86400.,
+ &
+
+#--------------------
+# Parameter for Diagnostics of per level statistics:
+#--------------------
+#  diagSt_mnc (logical): write stat-diags to NetCDF files (default=diag_mnc)
+#  diagSt_regMaskFile : file containing the region-mask to read-in
+#  nSetRegMskFile   : number of region-mask sets within the region-mask file
+#  set_regMask(i)   : region-mask set-index that identifies the region "i"
+#  val_regMask(i)   : region "i" identifier value in the region mask
+#--for each output-stream:
+#  stat_fName(n) : prefix of the output file name (max 80c long) for outp.stream n
+#  stat_freq(n):< 0 : write snap-shot output every |stat_freq| seconds
+#               > 0 : write time-average output every stat_freq seconds
+#  stat_phase(n)    : write at time = stat_phase + multiple of |stat_freq|
+#  stat_region(:,n) : list of "regions" (default: 1 region only=global)
+#  stat_fields(:,n) : list of selected diagnostics fields (8.c) in outp.stream n
+#                (see "available_diagnostics.log" file for the full list of diags)
+#--------------------
+ &DIAG_STATIS_PARMS
+ &
+
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/data.obcs
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/data.obcs	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/data.obcs	(revision 27955)
@@ -0,0 +1,18 @@
+# ***************
+# Open boundaries
+# ***************
+ &OBCS_PARM01
+ OB_Iwest = 40*1,
+ OB_Ieast = 40*-1,
+#
+ useOBCSprescribe = .TRUE.,
+#
+ OBWsFile = 'OBs.bin',
+ OBWtFile = 'OBt.bin',
+ OBWuFile = 'OBu.bin',
+ OBWvFile = 'zeros.bin',
+ OBEsFile = 'OBs.bin',
+ OBEtFile = 'OBt.bin',
+ OBEuFile = 'OBu.bin',
+ OBEvFile = 'zeros.bin',
+ &
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/data.pkg
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/data.pkg	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/data.pkg	(revision 27955)
@@ -0,0 +1,5 @@
+# Packages
+ &PACKAGES
+ useShelfIce = .TRUE.,
+ useOBCS     = .TRUE.,
+ &
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/data.shelfice
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/data.shelfice	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/data.shelfice	(revision 27955)
@@ -0,0 +1,16 @@
+# ===================================
+# | Parameters for SHELFICE package |
+# ===================================
+ &SHELFICE_PARM01
+ SHELFICEconserve = .TRUE.,
+ SHELFICEboundaryLayer = .TRUE.,
+ SHELFICEMassStepping = .TRUE.,
+ SHELFICEtopoFile='icetopo.bin',
+ SHELFICEwriteState = .TRUE.,
+ SHELFICEMassStepping = .TRUE.,
+ SHELFICEremeshFrequency = 600.0,
+ SHELFICEsplitThreshold = 1.12,
+ SHELFICEmergeThreshold = 0.10,
+ SHELFICEmassFile='shelficemass.bin',
+ SHELFICEMassDynTendFile='shelfice_dmdt.bin',
+ &
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/eedata
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/eedata	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/eedata	(revision 27955)
@@ -0,0 +1,10 @@
+# Example "eedata" file
+# Lines beginning "#" are comments
+# nTx - No. threads per process in X
+# nTy - No. threads per process in Y
+ &EEPARMS
+ useCoupler=.TRUE.,
+ &
+# Note: Some systems use & as the
+# namelist terminator. Other systems
+# use a / character (as shown here).
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/eedata_uncoupled
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/eedata_uncoupled	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/input_remesh/eedata_uncoupled	(revision 27955)
@@ -0,0 +1,10 @@
+# Example "eedata" file
+# Lines beginning "#" are comments
+# nTx - No. threads per process in X
+# nTy - No. threads per process in Y
+ &EEPARMS
+ useCoupler=.FALSE.,
+ &
+# Note: Some systems use & as the
+# namelist terminator. Other systems
+# use a / character (as shown here).
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/install.sh
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/install.sh	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/install.sh	(revision 27955)
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+
+# Cleanup
+rm -rf build/* checkpoint* install
+
+################################################################################
+
+# # Download source
+# git clone --depth=1 https://github.com/MITgcm/MITgcm.git
+
+# # Move source to 'install' directory
+# mv MITgcm install
+
+################################################################################
+
+# Comment out the above, uncomment the following and set to a specific tagged release if the MITgcm repo head is buggy
+#
+
+# Constants
+#
+VER="68h"
+
+# Download source
+wget https://github.com/MITgcm/MITgcm/archive/refs/tags/checkpoint${VER}.tar.gz
+
+# Uncompress source
+tar -xvzf checkpoint${VER}.tar.gz
+
+# Move source to 'install' directory
+mv MITgcm-checkpoint${VER} install
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/tools/lookat_4003.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/tools/lookat_4003.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/tools/lookat_4003.m	(revision 27955)
@@ -0,0 +1,124 @@
+pn='~/mitgcm/slr/components/issm/trunk-jpl/test/NightlyRun/';
+p1=[pn 'RunUncoupled/'];
+p2=[pn 'run/'];
+
+for ts=30:34
+    v1=readbin([p2 'R_shelfIce1_' myint2str(ts,10) '.data'],[3 200]);
+    v2=readbin([p2 'R_shelfIce2_' myint2str(ts,10) '.data'],[3 200]);
+    u=readbin([p2 'U.' myint2str(ts,10) '.data'],[3 200 90]);
+    v=readbin([p2 'V.' myint2str(ts,10) '.data'],[3 200 90]);
+    w=readbin([p2 'W.' myint2str(ts,10) '.data'],[3 200 90]);
+    clf, subplot(511), plot(v1(2,:)), title(ts)
+    subplot(512), plot(v2(2,:)-v1(2,:)), title('draft change')
+    subplot(513), mypcolor(1:200,-1:-1:-90,squeeze(u(2,:,:))'); title('U'), colorbar
+    subplot(514), mypcolor(1:200,-1:-1:-90,squeeze(v(2,:,:))'); title('V'), colorbar
+    subplot(515), mypcolor(1:200,-1:-1:-90,squeeze(w(2,:,:))'); title('W'), colorbar
+    pause
+end
+
+
+    clf
+    subplot(311), mypcolor(v1), title(ts)
+    subplot(312), mypcolor(v2), title(ts)
+    subplot(313), mypcolor(v2-v1)
+    
+for ts=1:10  
+    v1=readbin([p2 'SHICE_fwFlux.' myint2str(ts,10) '.data'],[3 200]);
+    clf
+    subplot(311), mypcolor(v1), title(ts), colorbar
+pause
+end
+
+
+    v2=readbin([p2 'SHICE_fwFlux.' myint2str(ts,10) '.data'],[3 200]);
+
+
+clf
+for ts=5, disp(ts)
+    T=readbin([p2 'T.' myint2str(ts,10) '.data'],[3 200 90]);
+    S=readbin([p2 'S.' myint2str(ts,10) '.data'],[3 200 90]);
+    U=readbin([p2 'U.' myint2str(ts,10) '.data'],[3 200 90]);
+    V=readbin([p2 'V.' myint2str(ts,10) '.data'],[3 200 90]);
+    W=readbin([p2 'W.' myint2str(ts,10) '.data'],[3 200 90]);
+    for k=1:90, disp(k)
+        clf
+        subplot(321), plot(S(2,:,k)), title('S')
+        subplot(322), plot(T(2,:,k)), title('T')
+        subplot(323), plot(U(2,:,k)), title('U')
+        subplot(324), plot(V(2,:,k)), title('V')
+        subplot(325), plot(W(2,:,k)), title('W')
+        pause
+    end
+end
+
+
+clf
+for ts=1:8, disp(ts)
+    T=readbin([p2 'T.' myint2str(ts,10) '.data'],[3 200 90]);
+    S=readbin([p2 'S.' myint2str(ts,10) '.data'],[3 200 90]);
+    U=readbin([p2 'U.' myint2str(ts,10) '.data'],[3 200 90]);
+    V=readbin([p2 'V.' myint2str(ts,10) '.data'],[3 200 90]);
+    W=readbin([p2 'W.' myint2str(ts,10) '.data'],[3 200 90]);
+    clf
+    subplot(321), mypcolor(squeeze(S(2,:,:))'), title('S'), colorbar
+    subplot(322), mypcolor(squeeze(T(2,:,:))'), title('T'), colorbar
+    subplot(323), mypcolor(squeeze(U(2,:,:))'), title('U'), colorbar
+    subplot(324), mypcolor(squeeze(V(2,:,:))'), title('V'), colorbar
+    subplot(325), mypcolor(squeeze(W(2,:,:))'), title('W'), colorbar
+    pause
+end
+
+
+
+
+
+
+ts=8;
+v1=readbin([p2 'R_shelfIce1_' myint2str(ts,10) '.data'],[3 200]);
+v2=readbin([p2 'R_shelfIce2_' myint2str(ts,10) '.data'],[3 200]);
+clf
+subplot(311), mypcolor(v1); title('R_shelfIce1'), colorbar
+subplot(312), mypcolor(v2); title('R_shelfIce2'), colorbar
+subplot(313), mypcolor(v2-v1); title('diff'), colorbar
+
+figure(2)
+clf
+plot(1:200,v1(2,:),'o-',1:200,v2(2,:),'o-',1:200,v2(2,:)-v1(2,:),'o-')
+
+ts=0;
+fld='R_shelfIce1_';
+v1=readbin([p2 fld myint2str(ts,10) '.data'],[3 200]);
+fld='R_shelfIce2_';
+for ts=0:8:184
+    v2=readbin([p2 fld myint2str(ts,10) '.data'],[3 200]);
+    clf
+    subplot(311), mypcolor(v1); title(ts-8), colorbar
+    subplot(312), mypcolor(v2); title(ts), colorbar
+    subplot(313), mypcolor(v2-v1); title('diff'), colorbar
+    pause
+    v1=v2;
+end
+
+fld='surfDiag';
+ts=2;
+v1=rdmds([p1 fld],ts);
+v2=rdmds([p2 fld],ts);
+clf
+fld={'ETAN','RSURF','oceTAUX','oceTAUY','oceQnet','oceFWflx', ...
+     'MXLDEPTH','SHIfwFlx','SHIhtFlx','SHIgammT','SHIgammS', ...
+     'SHI_mass','SHIuStar'};
+for i=1:length(fld)
+    subplot(311), mypcolor(v1(:,:,i)); title(fld{i}), colorbar
+    subplot(312), mypcolor(v2(:,:,i)); title('coupled'), colorbar
+    subplot(313), mypcolor(v2(:,:,i)-v1(:,:,i)); title('coupled-uncoupled'), colorbar
+    pause
+end
+
+fld='Eta';
+ts=1;
+v1=rdmds([p1 fld],ts);
+v2=rdmds([p2 fld],ts);
+clf
+subplot(311), mypcolor(v1); title(fld), colorbar
+subplot(312), mypcolor(v2); title('coupled'), colorbar
+subplot(313), mypcolor(v2-v1); title('coupled-uncoupled'), colorbar
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/tools/lookat_4004.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/tools/lookat_4004.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/tools/lookat_4004.m	(revision 27955)
@@ -0,0 +1,44 @@
+clear, close all
+pn='~/mitgcm/slr/components/issm/trunk-jpl/test/NightlyRun/run/';
+figure(1), clf, orient tall, wysiwyg
+for ts=0:4
+    r1=readbin([pn 'R_shelfIce1_' myint2str(ts+1,10) '.data'],[3 200]);
+    r2=readbin([pn 'R_shelfIce2_' myint2str(ts,10) '.data'],[3 200]);
+    subplot(5,1,ts+1), mypcolor(r2-r1); colorbar
+end
+
+for ts=1:5
+    figure(ts+1), clf, orient tall, wysiwyg
+    e=readbin([pn 'Eta.' myint2str(ts,10) '.data'],[3 200]);
+    p=readbin([pn 'PHL.' myint2str(ts,10) '.data'],[3 200]);
+    f=readbin([pn 'SHICE_fwFlux.' myint2str(ts,10) '.data'],[3 200]);
+    h=readbin([pn 'SHICE_heatFlux.' myint2str(ts,10) '.data'],[3 200]);
+    ph=readbin([pn 'PH.' myint2str(ts,10) '.data'],[3 200 90]);
+    clf, subplot(511), mypcolor(e); title(['Eta @ ts=' int2str(ts)]), colorbar
+    subplot(512), mypcolor(p); title('PHL'), colorbar
+    subplot(513), mypcolor(f); title('SHICE fwFlux'), colorbar
+    subplot(514), mypcolor(h); title('SHICE heatFlux'), colorbar
+    subplot(515), mypcolor(1:200,-1:-1:-90,squeeze(ph(2,:,:))'); title('PH'), colorbar
+end
+
+for ts=0:5
+    figure(ts+7), clf, orient tall, wysiwyg
+    r2=readbin([pn 'R_shelfIce2_' myint2str(ts,10) '.data'],[3 200]);
+    if ts<5
+        r1=readbin([pn 'R_shelfIce1_' myint2str(ts+1,10) '.data'],[3 200]);
+    end
+    s =readbin([pn 'S.' myint2str(ts,10) '.data'],[3 200 90]);
+    t =readbin([pn 'T.' myint2str(ts,10) '.data'],[3 200 90]);
+    u =readbin([pn 'U.' myint2str(ts,10) '.data'],[3 200 90]);
+    v =readbin([pn 'V.' myint2str(ts,10) '.data'],[3 200 90]);
+    w =readbin([pn 'W.' myint2str(ts,10) '.data'],[3 200 90]);
+    in=find(~s); s(in)=nan; t(in)=nan;
+    clf,
+    subplot(711), mypcolor(r2); title(['draft @ ts=' int2str(ts)]), colorbar
+    subplot(712), mypcolor(r2-r1); title('draft change'), colorbar
+    subplot(713), pcolorcen(1:200,-1:-1:-90,squeeze(s(2,:,:))'); title('S'), colorbar
+    subplot(714), pcolorcen(1:200,-1:-1:-90,squeeze(t(2,:,:))'); title('T'), colorbar
+    subplot(715), pcolorcen(1:200,-1:-1:-90,squeeze(u(2,:,:))'); title('U'), colorbar
+    subplot(716), pcolorcen(1:200,-1:-1:-90,squeeze(v(2,:,:))'); title('V'), colorbar
+    subplot(717), pcolorcen(1:200,-1:-1:-90,squeeze(w(2,:,:))'); title('W'), colorbar
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/tools/myint2str.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/tools/myint2str.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/tools/myint2str.m	(revision 27955)
@@ -0,0 +1,12 @@
+function s=myint2str(x,n);
+%MYIN2STR(X,N)   convert integer to string with leading zeros
+%                padds integer X with zeros to N locations
+
+if nargin < 2, n=2;  end
+if nargin < 1, help myint2str, return, end
+
+s=int2str(x);
+n=n-length(s);
+for i=1:n
+  s=['0' s];
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/tools/pcolorcen.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/tools/pcolorcen.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/tools/pcolorcen.m	(revision 27955)
@@ -0,0 +1,48 @@
+function h=pcolorcen(x,y,z)
+
+% h = pcolorcen(x,y,z);
+% h = pcolorcen(z);
+%
+% like pcolor.m, except it fixes the problem wherein the last row and column of z
+% don't get displayed and values are plotted above and to the right of the corresponding
+% values in x and y. "cen" is for centered.
+%
+% in other words: use pcolor when you're specifying the corners of your grid cells, and
+% pcolorcen when you're specifying the centers.
+%
+% x and y can be vectors; pcolorcen will call meshgrid to save you the trouble.
+%
+% sets shading flat for good measure.
+%
+% neil banas jul 2002
+% (neil@ocean.washington.edu)
+
+if nargin==1
+	z = x;
+	x = 1:size(z,2);
+	y = 1:size(z,1);
+end
+if ~isempty(find(size(x)==1))
+	[x,y] = meshgrid(x,y);
+end
+
+% add a border to the x values
+xnew = [   x(:,1)-(x(:,2)-x(:,1))            x      x(:,end)+(x(:,end)-x(:,end-1))      ];
+xnew = [xnew(1,:)-(xnew(2,:)-xnew(1,:));  xnew;  xnew(end,:)+(xnew(end,:)-xnew(end-1,:))];
+% interpolate to add the grid centers
+xnew = interp2(xnew,1);
+% keep only the grid centers
+xnew = xnew(2:2:end,2:2:end);
+
+% repeat for y
+ynew = [   y(:,1)-(y(:,2)-y(:,1))            y      y(:,end)+(y(:,end)-y(:,end-1))      ];
+ynew = [ynew(1,:)-(ynew(2,:)-ynew(1,:));  ynew;  ynew(end,:)+(ynew(end,:)-ynew(end-1,:))];
+ynew = interp2(ynew,1);
+ynew = ynew(2:2:end,2:2:end);
+
+% add a border of nans to z
+znew = [[z nan.*ones(size(z,1),1)]; nan.*ones(1,size(z,2)+1)];
+
+% now pcolor
+h = pcolor(xnew,ynew,znew);
+shading flat;
Index: /issm/branches/trunk-dlcheng-ASE/test/MITgcm/tools/readbin.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/MITgcm/tools/readbin.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/MITgcm/tools/readbin.m	(revision 27955)
@@ -0,0 +1,68 @@
+function fld=readbin(fnam,siz,typ,prec,skip,mform)
+
+% Function fld=readbin(fnam,siz,typ,prec,skip,mform)
+% read in N-D binary field
+%
+% INPUTS
+% fnam  input path and file name
+% siz   grid dimension (default [360 224 46])
+% typ   0: sequential FORTRAN;  1: plain binary (the default)
+% prec  numeric precision (see fread; default: 'real*4')
+% skip  records to skip before reading (default 0)
+% mform machine format (see fopen; default: 'ieee-be')
+%
+% OUTPUTS
+% fld    output array of dimension siz
+%
+% SEE ALSO
+% read_ijk read_ijkt writebin
+
+if nargin < 6, mform='ieee-be'; end
+if nargin < 5, skip=0; end
+if nargin < 4, prec='real*4'; end
+if nargin < 3, typ=1; end
+if nargin < 2, siz=[360 224 46]; end
+if nargin < 1, error('please specify input file name'); end
+
+fid=fopen(fnam,'r',mform);
+
+if skip>0
+  if typ==0
+    for n=1:skip
+      tmp=read_record(fid,prec);
+    end
+  else
+    switch prec
+      case {'int8','integer*1'}
+        reclength=prod(siz);
+      case {'int16','integer*2','uint16','integer*2'}
+        reclength=2*prod(siz);
+      case {'int32','integer*4','uint32','single','real*4','float32'}
+        reclength=4*prod(siz);
+      case {'int64','integer*8','uint64','double','real*8','float64'}
+        reclength=8*prod(siz);
+    end
+    if(fseek(fid,skip*reclength,'bof')<0), error('past end of file'); end
+  end
+end
+
+switch typ
+  case 0
+    tmp=read_record(fid,prec);
+  case 1
+    tmp=fread(fid,[siz(1),prod(siz(2:length(siz)))],prec);
+end
+fid=fclose(fid);
+
+switch length(siz)
+  case 2
+    fld=reshape(tmp,siz(1),siz(2));
+  case 3
+    fld=reshape(tmp,siz(1),siz(2),siz(3));
+  case 4
+    fld=reshape(tmp,siz(1),siz(2),siz(3),siz(4));
+  case 5
+    fld=reshape(tmp,siz(1),siz(2),siz(3),siz(4),siz(5));
+  otherwise
+    fld=tmp;
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/GetIds.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/GetIds.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/GetIds.py	(revision 27955)
@@ -0,0 +1,80 @@
+#!/usr/bin/env python
+from IdToName import *
+from IdFromString import *
+import numpy as np
+
+
+def GetIds(ids_names):
+    """GETIDS - Output ids from a given array of IDs and test names
+
+    The test names can be any string or substring present in the test's name 
+    (first line of corresponding file). Test names are case sensitive.
+
+    Usage:
+        ids = GetIds(101)
+        ids = GetIds('Dakota')
+        ids = GetIds([101, 102...])
+        ids = GetIds([\'Dakota\', \'Slc\'...])
+        ids = GetIds([[101, 102...], [\'Dakota\', \'Slc\'...]])
+    """
+
+    ids = []
+
+    # Non-list input: either an ID or a test name
+    if type(ids_names) == str:
+        ids = IdFromString(ids_names)
+        if len(ids) == 0:
+            # fail silently
+            return []
+        #raise RuntimeError('runme.py: GetIds.py: No tests with names matching "' + ids_names + '" were found. Note that name checking is case sensitive. Test names are in the first line of a given test eg: "Square" would include test101.py: "SquareShelfConstrainedStressSSA2d"')
+
+    # Non-list input: ID
+    if type(ids_names) == int:
+        ids = [ids_names]
+        if len(ids) == 0:
+            # fail silently
+            return []
+        #raise RuntimeError('runme.py: GetIds.py: No tests with ids matching "' + ids_names + '" were found. Check that there is a test file named "test' + str(ids_names) + '.py"')
+
+    # many inputs of either ids or test names
+    if type(ids_names) == list and len(ids_names) > 0:
+        # is everything a string or int?
+        if np.array([type(i) == int for i in ids_names]).all():
+            ids = ids_names
+        elif np.array([type(i) == np.int64 for i in ids_names]).all():
+            ids = ids_names
+        elif np.array([type(i) == str for i in ids_names]).all():
+            ids = np.concatenate([IdFromString(i) for i in ids_names])
+            if len(ids) == 0:
+                raise RuntimeError('runme.py: GetIds.py: No tests with names matching "' + ids_names + '" were found. Note that name checking is case sensitive.')
+
+    # many inputs of both ids and test names
+    # ids_names[0] -> ids_names by id
+    # ids_names[1] -> ids_names by test name
+    #
+    # NOTE: ID inclusion/exclusion lists will always hit this condition 
+    #       because of the way their respective arguments are gathered at the 
+    #       end of __main__ in the call to function runme.
+    if type(ids_names) == list and len(ids_names) == 2:
+        if type(ids_names[0]) == list and len(ids_names[0]) > 0:
+            ids_expanded = []
+            for i in ids_names[0]:
+                # Handle case where list element follows MATLAB range syntax
+                if ':' in i:
+                    i_range = i.split(':')
+                    for j in range(int(i_range[0]), int(i_range[1]) + 1):
+                        ids_expanded.append(j)
+                else:
+                    ids_expanded.append(int(i))
+            unique_ids = list(set(ids_expanded))
+            ids += unique_ids
+        if type(ids_names[1]) == list and len(ids_names[1]) > 0 and type(ids_names[1][0]) == str:
+            ids = np.concatenate([ids, np.concatenate([IdFromString(i) for i in ids_names[1]])])
+            if len(ids) == 0:
+                raise RuntimeError('runme.py: GetIds.py: No tests with names matching "' + ids_names + '" were found. Note that name checking is case sensitive.')
+
+    # no recognizable ids or id formats
+    if np.size(ids) == 0 and not np.all(np.equal(ids_names, None)):
+        raise RuntimeError('runme.py: GetIds.py: include and exclude options (-i/--id; -in/--include_name; -e/--exclude; -en/--exclude_name) options must follow GetIds usage format:\n' + GetIds.__doc__)
+
+    return np.array(ids).astype(int)
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/IdFromString.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/IdFromString.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/IdFromString.m	(revision 27955)
@@ -0,0 +1,48 @@
+function ids=IdFromString(string),
+%IDFROMSTRING - output ids from a given string
+%
+%   Usage:
+%      ids=IdFromString(string);
+%
+%   Examples:
+%      ids=IdFromString('Parallel');
+%      ids=IdFromString('79North');
+%      ids=IdFromString('*');          %Print all tests
+
+%Check input
+if ~ischar(string)
+	error('IdFromString error message: input argument is not a string');
+end
+
+%Initialize output
+ids=[];
+
+%Grep string
+if strcmp(string,'*'),
+	[dummy ids_raw]=system(['find ./ -name "test[0-9]*.m" | xargs grep "%Test Name:" | sed -e "s/test/ /g" -e "s/\.m:/ /g" | cut -d" " -f 2']);
+else
+	[dummy ids_raw]=system(['find ./ -name "test[0-9]*.m" | xargs grep "%Test Name:" | grep ' string ' | sed -e "s/test/ /g" -e "s/\.m:/ /g" | cut -d" " -f 2']);
+end
+
+%Check for error
+if dummy~=0,
+	error(['system call failed:' newline ids_raw]);
+end
+
+%return if no test found
+if isempty(ids_raw),
+	disp(['No test matches ''' string '''' ]);
+	return
+end
+
+%Process string (delete return carriage);
+ids_raw=strsplit_strict(ids_raw,char(10));
+ids_raw=ids_raw(1:end-1);
+ids=cellfun(@str2num,ids_raw);
+ids=sort(ids);
+
+%Display names
+disp([ num2str(length(ids)) ' tests match ''' string '''']);
+for i=1:length(ids)
+	disp([ '   ' num2str(ids(i)) ' : ' IdToName(ids(i)) ]);
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/IdFromString.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/IdFromString.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/IdFromString.py	(revision 27955)
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+from IdToName import IdToName
+import os
+import re
+
+# use verbose = False to print output when this is called by command line
+
+
+def IdFromString(string, verbose=False):
+    """
+    IDFROMSTRING - output ids from a given string
+        Usage:
+            ids = IdFromString(string)
+        Examples:
+            ids = IdFromString('Parallel')
+            ids = IdFromString('79North')
+            ids = IdFromString(' * ')
+    """
+
+#Check input
+    if not isinstance(string, str):
+        raise TypeError('IdFromString error message: input argument is not a string.')
+    string = string.replace("'", '')
+    string = string.replace('"', '')
+
+#Get the test ids and names and scan for matches
+
+    ids = []
+    idnames = []
+    flist = [f for f in os.listdir('.') if re.match('test[0-9]+.py', f)] # File name must follow the format "test<integer>.py"
+    list_ids = [int(re.search(r'\d+',file.split('.')[0]).group()) for file in flist] # Retrieve test IDs
+    for i in list_ids:
+        name = IdToName(i)
+        if (string == ' * ') or (name is not None and string in name):
+            ids.append(i)
+            idnames.append(name)
+
+#Return if no test found
+    if not ids:
+        print("No test matches '%s'." % string)
+        return ids
+
+#Display names
+    if verbose:
+        idnames = [i for _, i in sorted(zip(ids, idnames), key=lambda pair: pair[0])]
+
+    ids.sort()
+
+    if verbose:
+        print("{} tests match '{}':".format(len(ids), string))
+        for i in range(len(ids)):
+            print("   {} : {}".format(ids[i], idnames[i]))
+    return ids
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/IdToName.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/IdToName.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/IdToName.m	(revision 27955)
@@ -0,0 +1,46 @@
+function name=IdToName(id);
+%IDTONAME- return name of test
+%  
+%   if id=0, the full list of test is returned
+%
+%   Usage:
+%      name=IdToName();
+%      name=IdToName(id);
+
+if nargin==0 | id==0,
+	flist=dir;%use dir, as it seems to act OS independent
+	list_ids=[];
+	for i=1:numel(flist),
+		if ( strncmp(flist(i).name,'test',4) &...                         %File name must start with 'test'
+				strncmp(fliplr(flist(i).name),fliplr('.m'),2)&...           %File name must end by '.m'
+				~strcmp(flist(i).name,'test.m'))                            %File name must be different than 'test.m'
+			id=str2num(flist(i).name(5:end-2));
+			if isempty(id),
+				disp(['WARNING: ignore file ' flist(i).name ]);
+			else
+				list_ids(end+1)=eval(flist(i).name(5:end-2));                  %Keep test id only (skip 'test' and '.m')
+			end
+		end
+	end
+	list_ids=sort(list_ids);
+	for i=list_ids,
+		name=IdToName(i);
+		disp(['test ' num2str(i,'%5i\n') ' : ' name]);
+	end
+	return;
+end
+
+filename = ['test' num2str(id) '.m'];
+
+if ~exist(filename,'file')
+	error(['file ' filename ' does not exist']);
+end
+
+string='%TestName:';
+fid=fopen(filename,'r');
+A=fscanf(fid,'%s',3);
+if ~strncmp(A,string,numel(string)) | numel(A)<numel(string)+2,
+	error(['Test file ' filename ' does to start with a test name']);
+end
+name = A(numel(string)+1:end);
+fclose(fid);
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/IdToName.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/IdToName.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/IdToName.py	(revision 27955)
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+
+
+def IdToName(test_id):
+    """
+        IDTONAME - return name of test
+
+            Usage:
+               name = IdToName(test_id)
+        """
+    infile = open('test' + str(test_id) + '.py', 'r')
+    file_text = infile.readline()
+
+    string = '#Test Name:'
+    name = file_text[len(string) + 1:-1]
+    return name
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/Makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/Makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/Makefile	(revision 27955)
@@ -0,0 +1,2 @@
+clean: 
+	rm -rf *.tar.gz *.bin *.errlog *.outlog  *.outbin *.petsc *.queue *.toolkits *.run valgrind.log* *.bat *.lock qmu* dakota_tabular.dat *.qmu.err *.qmu.in *.qmu.out 
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/README
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/README	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/README	(revision 27955)
@@ -0,0 +1,1 @@
+For more info: https://issm.ess.uci.edu/trac/issm/wiki/addnewNR
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/python_skipped_tests.txt
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/python_skipped_tests.txt	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/python_skipped_tests.txt	(revision 27955)
@@ -0,0 +1,22 @@
+%Get full list with:
+%  for i in test*.m; do NAME=$(echo $i | sed -e "s/\.m//"); %if [ ! -f $NAME.py ]; then echo $NAME; fi; done
+
+test218    needs Dakota
+test234    needs Dakota
+test235    needs Dakota
+test412    needs Dakota
+test413    needs Dakota
+test414    needs Dakota
+test417    needs Dakota
+test418    needs Dakota
+test420    needs Dakota
+
+test1401,test1402
+Roundoff error in ComputeHessian and ComputeMetric causes different meshes
+from matlab, specifically in the handling of 0/0=nan, eps/0=inf, etc.  Since
+the mesh is of a different size, NR fails.  (Note Matlab test1402 currently
+fails.)
+
+test1109,test1110
+Ugly crashes in solver, but same behavior as Matlab.
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/runme.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/runme.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/runme.m	(revision 27955)
@@ -0,0 +1,285 @@
+function varargout=runme(varargin)
+%RUNME - test deck for ISSM nightly runs
+%
+%   In a test deck directory (for example, test/NightlyRun) the following
+%   command will launch all existing tests,
+%
+%      >> runme
+%
+%   To run tests 101 and 102,
+%
+%      >> runme('id',[101 102])
+%
+%   Available options:
+%      'id'            followed by the list of ids requested
+%      'exclude'       ids to be excluded from the test
+%      'benchmark'     'all'         : (all of them)
+%                      'nightly'     : (nightly run
+%                      'validation'  : (validation)
+%                      'adolc'       : validation of adolc tests
+%                      'eismint'     : validation of eismint tests
+%                      'ismip'       : validation of ismip-hom tests
+%                      'mesh'        : validation of mesh tests
+%                      'qmu'         : validation of dakota tests
+%                      'referential' : validation of referential tests
+%                      'slc'         : validation of slc tests
+%                      'thermal'     : validation of thermal tests
+%                      'tranforcing' : validation of transient forcing tests
+%      'procedure'     'check' :   run the test (default)
+%                      'update':   update the archive
+%                      'valgrind': check for memory leaks (default value of md.debug.valgrind needs to be changed manually)
+%                      'ncExport': export netCDF file
+%      'stoponerror'   1 or 0
+%
+%   Usage:
+%      runme(varargin);
+%
+%   Examples:
+%      runme;
+%      runme('exclude',101);
+%      runme('id',102,'procedure','update');
+%      runme('procedure','valgrind','stoponerror',1,'exclude','IdFromString('Dak'));
+%
+%   NOTE:
+%   - Will only run test scripts whose names explicitly follow the convention,
+%
+%         test<id>.m
+%
+%   where <id> is any integer.
+%
+
+%Check inputs
+% {{{
+if nargout>1
+	help runme
+	error('runme error message: bad usage');
+end
+
+%recover options
+options=pairoptions(varargin{:});
+% }}}
+
+%Process options
+%GET benchmark {{{
+benchmark=getfieldvalue(options,'benchmark','nightly');
+if ~ismember(benchmark,{'all','nightly','ismip','eismint','thermal','mesh','validation','tranforcing','adolc','slc','qmu'})
+	disp('runme warning: benchmark not supported, defaulting to test ''nightly''')
+	benchmark='nightly';
+end
+% }}}
+%GET procedure {{{
+procedure=getfieldvalue(options,'procedure','check');
+if ~ismember(procedure,{'check','update','valgrind','ncExport'})
+	disp('runme warning: procedure not supported, defaulting to test ''check''')
+	procedure='check';
+end
+% }}}
+%GET output {{{
+output=getfieldvalue(options,'output','none');
+if ~ismember(output,{'nightly','none'})
+	disp('runme warning: output not supported, defaulting to test ''none''')
+	output='none';
+end
+% }}}
+%GET RANK and NUMPROCS for multithreaded runs  {{{
+rank=getfieldvalue(options,'rank',1);
+numprocs=getfieldvalue(options,'numprocs',1);
+if (numprocs<rank), numprocs=1; end
+% }}}
+%GET ids  {{{
+flist=dir; %use dir, as it seems to act OS independent
+list_ids=[];
+for i=1:numel(flist),
+	fname=flist(i).name;
+	if (any(fname=='.')), %Before split, check that file name contains '.'
+		ftokens=strsplit(fname,'.'); %Tokenize file name on '.'
+		if (regexp(ftokens{1},'^test[0-9]+$') &... %Basename must start with 'test' and end with a number
+			strcmp(ftokens{end},'m') ... %Extension (less '.') must be 'm'
+		),
+			id=sscanf(ftokens{1},'test%d');
+			if isempty(id),
+				disp(['WARNING: ignore file ' flist(i).name]);
+			else
+				list_ids(end+1)=id; %Keep test id only (strip 'test' and '.m')
+			end
+		end
+	end
+end
+[i1,i2]=parallelrange(rank,numprocs,length(list_ids)); %Get tests for this cpu only
+list_ids=list_ids(i1:i2);
+
+test_ids=getfieldvalue(options,'id',list_ids);
+test_ids=intersect(test_ids,list_ids);
+% }}}
+%GET exclude {{{
+exclude_ids=getfieldvalue(options,'exclude',[]);
+exclude_ids=[exclude_ids];
+pos=find(ismember(test_ids,exclude_ids));
+test_ids(pos)=[];
+% }}}
+%Process Ids according to benchmarks{{{
+if strcmpi(benchmark,'nightly'),
+	test_ids=intersect(test_ids,[1:999]);
+elseif strcmpi(benchmark,'validation'),
+	test_ids=intersect(test_ids,[1001:1999]);
+elseif strcmpi(benchmark,'ismip'),
+	test_ids=intersect(test_ids,[1101:1199]);
+elseif strcmpi(benchmark,'eismint'),
+	test_ids=intersect(test_ids,[1201:1299]);
+elseif strcmpi(benchmark,'thermal'),
+	test_ids=intersect(test_ids,[1301:1399]);
+elseif strcmpi(benchmark,'mesh'),
+	test_ids=intersect(test_ids,[1401:1499]);
+elseif strcmpi(benchmark,'tranforcing'),
+	test_ids=intersect(test_ids,[1501:1502]);
+elseif strcmpi(benchmark,'referential'),
+	test_ids=intersect(test_ids,[1601:1602]);
+elseif strcmpi(benchmark,'slc'),
+	test_ids=intersect(test_ids,[2001:2500]);
+elseif strcmpi(benchmark,'adolc'),
+	test_ids=intersect(test_ids,[3001:3200]);
+elseif strcmpi(benchmark,'qmu'),
+	test_ids=intersect(test_ids,[218 234 235 412:414 417 418 420]);
+end
+% }}}
+
+%Loop over tests and launch sequence
+root=pwd;
+for id=test_ids,
+	disp(sprintf('%s%i%s','----------------starting:',id,'-----------------------'));
+	try,
+		%Execute test
+		cd(root);
+		id_string='N/A';
+		id_string=IdToName(id);
+		run(['test' num2str(id)]);
+
+		%UPDATE ARCHIVE?
+		archive_name=['Archive' num2str(id) ];
+		if strcmpi(procedure,'update'),
+			delete(['../Archives/' archive_name '.arch'])
+			for k=1:length(field_names),
+				field=field_values{k};
+				archwrite(['../Archives/' archive_name '.arch'],[archive_name '_field' num2str(k)], field);
+			end
+			disp(sprintf(['File ./../Archives/' archive_name '.arch saved\n']));
+
+		%CHECK for memory leaks?
+		elseif strcmpi(procedure,'valgrind'),
+			fields = fieldnames(md.results);
+			for i=1:numel(fields)
+				if ~isfield(md.results.(fields{i}),'errlog'),
+					disp(['Skipping ' fields{i}]);
+					continue;
+				else
+					disp(['Extracting results of ' fields{i}]);
+				end
+				results = md.results.(fields{i});
+				errlog  = cellstr(results(1).errlog);
+
+				%Check leaks
+				lines  = strfind(errlog,'definitely lost:');
+				lines  = find(~cellfun(@isempty,lines));
+				leaks   = 0;
+				for j=1:numel(lines)
+					Line    = errlog(lines(j));
+					Numbers = sscanf(Line{1},'==%i==   definitely lost: %s bytes in %i blocks',[1 Inf]);
+					leaks   = leaks + str2num(strrep(char(Numbers(2:end-1)),',',''));
+				end
+				%Check conditional jumps
+				lines  = strfind(errlog,'Conditional jump or move depends on uninitialised value');
+				lines  = find(~cellfun(@isempty,lines));
+				jumps   = numel(lines);
+				%Check invalid read/write
+				lines  = strfind(errlog,'Invalid');
+				lines  = find(~cellfun(@isempty,lines));
+				inval  = numel(lines);
+				if leaks==0,
+					disp(sprintf(['SUCCESS difference: 0 < 0 test id: %i test name: %s field: valgrind mem. leaks'],id,id_string));
+				else
+					disp(sprintf(['ERROR   difference: %i > 0 test id: %i test name: %s field: valgrind mem. leaks'],leaks,id,id_string));
+					disp('STOP');
+					return;
+				end
+				if jumps==0,
+					disp(sprintf(['SUCCESS difference: 0 < 0 test id: %i test name: %s field: valgrind cond. jumps'],id,id_string));
+				else
+					disp(sprintf(['ERROR   difference: %i > 0 test id: %i test name: %s field: valgrind cond. jumps'],jumps,id,id_string));
+					disp('STOP');
+					return;
+				end
+				if inval==0,
+					disp(sprintf(['SUCCESS difference: 0 < 0 test id: %i test name: %s field: valgrind invalid read/write'],id,id_string));
+				else
+					disp(sprintf(['ERROR   difference: %i > 0 test id: %i test name: %s field: valgrind invalid read/write'],inval,id,id_string));
+					disp('STOP');
+					return;
+				end
+			end
+		%PRODUCE nc files?
+		elseif strcmpi(procedure,'ncExport'),
+			export_netCDF(md, ['test' num2str(id) 'ma.nc'])
+
+		%ELSE: CHECK TEST
+		else,
+			for k=1:length(field_names),
+
+				try,
+					%Get field and tolerance
+					field=field_values{k};
+					fieldname=field_names{k};
+					tolerance=field_tolerances{k};
+
+					%compare to archive
+					%our output is in the correct order (n,1) or (1,1), so we do not need to transpose again
+					archive_cell=archread(['../Archives/' archive_name '.arch'],[archive_name '_field' num2str(k)]);
+					archive=archive_cell{1};
+					error_diff=full(max(abs(archive(:)-field(:)))/(max(abs(archive(:)))+eps)); %disp test result
+					if (error_diff>tolerance | isnan(error_diff));
+						disp(sprintf(['ERROR   difference: %-7.2g > %7.2g test id: %i test name: %s field: %s'],...
+							error_diff,tolerance,id,id_string,fieldname));
+						if(getfieldvalue(options,'stoponerror',0)), disp('STOP'); return; end
+					else
+						disp(sprintf(['SUCCESS difference: %-7.2g < %7.2g test id: %i test name: %s field: %s'],...
+							error_diff,tolerance,id,id_string,fieldname));
+					end
+
+				catch me2
+
+					%something went wrong, print failure message:
+					message=getReport(me2);
+					fprintf('%s',message);
+					if strcmpi(output,'nightly')
+						fid=fopen([issmdir() '/nightlylog/matlaberror.log'], 'at');
+						fprintf(fid,'%s',message);
+						fprintf(fid,'\n------------------------------------------------------------------\n');
+						fclose(fid);
+						disp(sprintf(['FAILURE difference: N/A test id: %i test name: %s field: %s'],id,id_string,fieldname));
+					else
+						disp(sprintf(['FAILURE difference: N/A test id: %i test name: %s field: %s'],id,id_string,fieldname));
+						fprintf('%s',message);
+						if(getfieldvalue(options,'stoponerror',0)), disp('STOP'); return; end
+					end
+					continue;
+				end
+			end
+		end
+	catch me,
+
+		%something went wrong, print failure message:
+		message=getReport(me);
+		fprintf('%s',message);
+		if strcmpi(output,'nightly')
+			fid=fopen([issmdir() '/nightlylog/matlaberror.log'], 'at');
+			fprintf(fid,'%s',message);
+			fprintf(fid,'\n------------------------------------------------------------------\n');
+			fclose(fid);
+			disp(sprintf(['FAILURE difference: N/A test id: %i test name: %s field: %s'],id,id_string,'N/A'));
+		else
+			disp(sprintf(['FAILURE difference: N/A test id: %i test name: %s field: %s'],id,id_string,'N/A'));
+			rethrow(me);
+			if(getfieldvalue(options,'stoponerror',0)), disp('STOP'); return; end
+		end
+	end
+	disp(sprintf('%s%i%s','----------------finished:',id,'-----------------------'));
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/runme.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/runme.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/runme.py	(revision 27955)
@@ -0,0 +1,450 @@
+#!/usr/bin/env python3
+
+
+import argparse
+import os
+import re
+from sys import float_info
+from traceback import format_exc
+
+import numpy as np
+
+# Avoid the following error on Jenkins, 
+#
+#   "Unable to init server: Could not connect: Connection refused
+#
+#   (runme.py:28445): Gdk-CRITICAL **: 02:23:15.525: gdk_cursor_new_for_display: assertion 'GDK_IS_DISPLAY (display)' failed"
+#
+import matplotlib
+matplotlib.use('Agg')
+
+try:
+    from arch import archread
+except:  # ISSM_DIR is not on path
+    import devpath
+
+from arch import archread
+from arch import archwrite
+from GetIds import *
+from IdToName import IdToName
+from parallelrange import parallelrange
+from loadmodel import loadmodel
+from solve import solve
+from importlib import import_module
+
+
+def runme(id=None, exclude=None, benchmark='nightly', procedure='check', output='none', rank=1, numprocs=1):
+    """runme - test deck for ISSM nightly runs
+
+    In a test deck directory (for example, test/NightlyRun) the following
+    command will launch all existing tests,
+
+        ./runme.py
+
+    To run tests 101 and 102,
+
+        ./runme.py -i [101, 102]
+
+    Options:
+        -i/--id         Followed by the list of ids or (parts of) test names
+                        requested
+        -e/--exclude    Ids or (parts of) test names to be excluded (same
+                        format as id). Does nothing if 'id' is specified with
+                        different values.
+        -b/--benchmark  'all'           : (all of the tests)
+                        'nightly'       : (nightly run/daily run)
+                        'validation'    : (validation)
+                        'adolc'         : validation of adolc tests
+                        'eismint'       : validation of eismint tests
+                        'ismip'         : validation of ismip-hom tests
+                        'mesh'          : validation of mesh tests
+                        'qmu'           : validation of qmu tests
+                        'referential'   : validation of referential tests
+                        'slc'           : validation of slc tests
+                        'thermal'       : validation of thermal tests
+                        'tranforcing'   : validation of transient forcing tests
+        -p/--procedure  'check'         : run the test (default)
+                        'update'        : update the archive
+                        'runFromNC'     : run from an existing nc file
+
+
+    Usage:
+        ./runme.py [option [args]]
+
+    Examples:
+        ./runme.py
+        ./runme.py -i 101
+        ./runme.py -i 'SquareShelf'
+        ./runme.py -e 2001
+        ./runme.py -e 'Dakota' --benchmark 'all'
+        ./runme.py -i [[101, 102], ['Dakota', 'Slc']]
+
+    NOTE:
+    - Will only run test scripts whose names explicitly follow the convention,
+
+        test<id>.py
+
+    where <id> is any integer.
+
+    TODO:
+    - At '#disp test result', make sure precision of output matches that of
+    MATLAB.
+    - Check for failures that do not raise exceptions (for example, 'Standard
+    exception'; see also jenkins/jenkins.sh). These should be counted as
+    failures.
+    """
+
+    # Get ISSM_DIR variable
+    ISSM_DIR = os.environ['ISSM_DIR']
+
+    # Process options
+    # Get benchmark {{{
+    if benchmark not in ['all', 'nightly', 'validation', 'adolc', 'eismint', 'ismip', 'mesh', 'slc', 'thermal', 'tranforcing', 'qmu']:
+        print(('runme warning: benchmark \'{}\' not supported, defaulting to test \'nightly\'.'.format(benchmark)))
+        benchmark = 'nightly'
+    # }}}
+    # Get procedure {{{
+    if procedure not in ['check', 'update', 'runFromNC']:
+        print(('runme warning: procedure \'{}\' not supported, defaulting to test \'check\'.'.format(procedure)))
+        procedure = 'check'
+    # }}}
+    # Get output {{{
+    if output not in ['nightly', 'none']:
+        print(('runme warning: output \'{}\' not supported, defaulting to test \'none\'.'.format(output)))
+        output = 'none'
+    # }}}
+    # Get rank and numprocs for multi-threaded runs {{{
+    if (numprocs < rank):
+        numprocs = 1
+    # }}}
+    # Get ids  {{{
+    flist = [f for f in os.listdir('.') if re.match('test[0-9]+.py', f)] # File name must follow the format "test<integer>.py"
+    list_ids = [int(re.search(r'\d+',f.split('.')[0]).group()) for f in flist] # Retrieve test IDs
+    i1, i2 = parallelrange(rank, numprocs, len(list_ids))  # Get tests for this CPU only
+    list_ids = list_ids[i1:i2 + 1]
+    # Check if we are calling runme as a function with a single integer or string argument and, if so, convert to the proper protocol
+    if isinstance(id, int):
+        id = str(id)
+    if isinstance(id, str):
+        id = [[id], []]
+    if len(id[0]) > 0 or len(id[1]) > 0:
+        test_ids = set(GetIds(id)).intersection(set(list_ids))
+        benchmark = None
+    else:
+        # If no tests are specifically provided, do them all
+        test_ids = set(list_ids)
+
+    # }}}
+    # Get excluded tests {{{
+    exclude_ids = GetIds(exclude)
+    test_ids = test_ids.difference(exclude_ids)
+
+    # }}}
+    if procedure == 'runFromNC':
+        # bamg test
+        test_ids = test_ids.difference([119, 514])
+        # smbGEMB format is weird for the test
+        test_ids = test_ids.difference([243, 244, 252, 253])
+        # AMR runs where the index is missing from fieldnames
+        test_ids = test_ids.difference([462, 463, 464, 465])
+        # test247 solves for thermal and transient which makes it complex to check
+        test_ids = test_ids.difference([247])
+        # test 902 is running two models with different stepping
+        test_ids = test_ids.difference([902])
+        # size issue in 517 needs investigation
+        test_ids = test_ids.difference([517])
+
+    # Process IDs according to benchmarks {{{
+    if benchmark == 'nightly':
+        test_ids = test_ids.intersection(set(range(1, 1000)))
+    elif benchmark == 'validation':
+        test_ids = test_ids.intersection(set(range(1001, 2000)))
+    elif benchmark == 'ismip':
+        test_ids = test_ids.intersection(set(range(1101, 1200)))
+    elif benchmark == 'eismint':
+        test_ids = test_ids.intersection(set(range(1201, 1300)))
+    elif benchmark == 'thermal':
+        test_ids = test_ids.intersection(set(range(1301, 1400)))
+    elif benchmark == 'mesh':
+        test_ids = test_ids.intersection(set(range(1401, 1500)))
+    elif benchmark == 'tranforcing':
+        test_ids = test_ids.intersection(set(range(1501, 1503)))
+    elif benchmark == 'referential':
+        test_ids = test_ids.intersection(set(range(1601, 1603)))
+    elif benchmark == 'slc':
+        test_ids = test_ids.intersection(set(range(2001, 2500)))
+    elif benchmark == 'adolc':
+        test_ids = test_ids.intersection(set(range(3001, 3200)))
+    elif benchmark == 'qmu':
+        test_ids = test_ids.intersection(set((218, 234, 235, 417, 418, 420)).union(set(range(412, 414))))
+    test_ids = list(test_ids)
+    test_ids.sort()
+
+    # }}}
+
+    # Loop over tests and launch sequence
+    root = os.getcwd()
+    errorcount = 0
+    erroredtest_list = []
+    for id in test_ids:
+        print(("----------------starting:{}-----------------------".format(id)))
+        try:
+            # Execute test
+            os.chdir(root)
+            id_string = IdToName(id)
+            print(("----------------running-----------------------"))
+            if procedure == 'runFromNC':
+                Tmod = import_module('test{}'.format(id))
+            else:
+                exec(compile(open('test{}.py'.format(id)).read(), 'test{}.py'.format(id), 'exec'), globals())
+
+            # Update archive?
+            archive_name = 'Archive' + str(id)
+            if procedure == 'update':
+                archive_file = os.path.join('..', 'Archives', archive_name + '.arch')
+                if os.path.isfile(archive_file):
+                    os.remove(archive_file)
+                for k, fieldname in enumerate(field_names):
+                    field = np.array(field_values[k], dtype=float)
+                    if len(field.shape) == 1:
+                        if np.size(field):
+                            field = field.reshape(np.size(field), 1)
+                        else:
+                            field = field.reshape(0, 0)
+                    elif len(field.shape) == 0:
+                        field = field.reshape(1, 1)
+                        # Matlab uses base 1, so use base 1 in labels
+                    archwrite(archive_file, archive_name + '_field' + str(k + 1), field)
+                print(("File {} saved. \n".format(os.path.join('..', 'Archives', archive_name + '.arch'))))
+            elif procedure == 'runFromNC':
+                print(("----------------loadingNC-----------------------"))
+                mdl = loadmodel('test{}ma.nc'.format(id))
+                for key in mdl.results.__dict__.keys():
+                    if 'Solution' in key:
+                        solvetype = re.split('Solution', key)[0]
+
+                # Save the results, scrap them and solve
+                loaded_res = mdl.results
+                mdl.results = []
+                mdl = solve(mdl, solvetype)
+
+                # Loop on the field_names from the nightly test
+                for k, fieldname in enumerate(Tmod.field_names):
+                    try:
+                        # First, look for indexing
+                        if re.search(r'\d+$', fieldname):
+                            index = int(re.search(r'\d+$', fieldname).group()) - 1
+                            fieldname = fieldname[:re.search(r'\d+$', fieldname).start()]
+                        elif 'FirstStep' in fieldname:
+                            index = 0
+                            fieldname = fieldname[:re.search('FirstStep', fieldname).start()]
+                        elif 'SecondStep' in fieldname:
+                            index = 1
+                            fieldname = fieldname[:re.search('SecondStep', fieldname).start()]
+                        elif 'ThirdStep' in fieldname:
+                            index = 2
+                            fieldname = fieldname[:re.search('ThirdStep', fieldname).start()]
+                        else:
+                            index = 0
+
+                        # Then, check if the key exists in the loaded results
+                        try:
+                            reskeys = mdl.results.__dict__[solvetype + 'Solution'][index].__dict__.keys()
+                        except TypeError:
+                            # Most likely a steady state so no subscripting
+                            reskeys = mdl.results.__dict__[solvetype + 'Solution'].__dict__.keys()
+                        if fieldname not in reskeys:
+                            sufixes = ["P1bubble", "P1bubbleCondensed", "LliboutryDuval", "CuffeyTemperate", "SSA", "HO", "FS", "P1xP", "P2xP",
+                                       'MINI', 'MINIcondensed', 'TaylorHood', 'XTaylorHood', 'LATaylorHood', 'CrouzeixRaviart', 'LACrouzeixRaviart']
+                            namedifs = {'Misfits': 'J',
+                                        'D': 'DamageDbar',
+                                        'F': 'DamageF',
+                                        'MaterialsRheologyB': 'MaterialsRheologyBbar',
+                                        'SedimentWaterHead': 'SedimentHead',
+                                        'EplWaterHead': 'EplHead',
+                                        'SedimentWaterHeadSubstep': 'SedimentHeadSubstep',
+                                        'EplWaterHeadSubstep': 'EplHeadSubstep',
+                                        'Volume': 'IceVolume',
+                                        'Bed': 'Base',
+                                        'SMB': 'SmbMassBalance'}
+
+                            if fieldname in namedifs.keys():
+                                # Some fields are not consistent
+                                fieldname = namedifs[fieldname]
+                            elif any([suf in fieldname for suf in sufixes]):
+                                # Some tests have loops that mess up naming
+                                try:
+                                    sufix = sufixes[np.squeeze(np.where([suf in fieldname for suf in sufixes]))]
+                                except TypeError:
+                                    # Probably several matches; we take the last one which should be the one we're want to run (needs to be controlled in the list above)
+                                    sufix = sufixes[np.squeeze(np.where([suf in fieldname for suf in sufixes]))[-1]]
+                                fieldname = fieldname[:re.search(sufix, fieldname).start()]
+                            elif fieldname.endswith("P") and index == 1:
+                                # Looking for P2 but 2 refers to an index, so shift by -1
+                                fieldname = fieldname[:-1]
+                            else:
+                                # Handle case where index selected above is part of the name
+                                fieldname = fieldname + str(index + 1)
+                        try:
+                            field = mdl.results.__dict__[solvetype + 'Solution'][index].__dict__[fieldname]
+                            loaded_field = loaded_res.__dict__[solvetype + 'Solution'][index].__dict__[fieldname]
+                        except TypeError:
+                            # Most likely a steady state so no subscripting
+                            try:
+                                field = mdl.results.__dict__[solvetype + 'Solution'].__dict__[fieldname]
+                                loaded_field = loaded_res.__dict__[solvetype + 'Solution'].__dict__[fieldname]
+                            except KeyError:
+                                print("WARNING: {}{} does not exist and checking will be skipped".format(fieldname, index + 1))
+                                continue
+                        except KeyError:
+                            print("WARNING: {}{} does not exist and checking will be skipped".format(fieldname, index + 1))
+                            continue
+
+                        ref = Tmod.field_values[k]
+                        # Get tolerance
+                        tolerance = Tmod.field_tolerances[k]
+                        # Compute differences for the results computed from the nc file
+                        error_diff = np.amax(np.abs(ref - field), axis=0) / (np.amax(np.abs(ref), axis=0) + float_info.epsilon)
+                        if not np.isscalar(error_diff):
+                            error_diff = error_diff[0]
+
+                        # Compute the differences for the results of the nc file
+                        load_diff = np.amax(np.abs(np.squeeze(ref) - loaded_field), axis=0) / (np.amax(np.abs(np.squeeze(ref)), axis=0) + float_info.epsilon)
+                        if not np.isscalar(load_diff):
+                            load_diff = load_diff[0]
+
+                        # Display test result
+                        if (np.any(error_diff > tolerance) or np.isnan(error_diff)) and (np.any(load_diff > tolerance) or np.isnan(load_diff)):
+                            if abs(error_diff - load_diff) < tolerance:
+                                print(('WARNING difference: {:7.2g} > {:7.2g} test id: {} field: {}{} differs from computation but equal to saved results'.format(error_diff, tolerance, id, fieldname, index + 1)))
+                            else:
+                                print(('ERROR difference: {:7.2g} > {:7.2g} test id: {} field: {}{} is false in both loaded and computed results'.format(error_diff, tolerance, id, fieldname, index + 1)))
+                                errorcount += 1
+                                erroredtest_list.append(id)
+                        elif (np.any(error_diff > tolerance) or np.isnan(error_diff)):
+                            print(('ERROR   difference: {:7.2g} > {:7.2g} test id: {} test name: {} field: {}{}'.format(error_diff, tolerance, id, id_string, fieldname, index + 1)))
+                            errorcount += 1
+                            erroredtest_list.append(id)
+                        elif (np.any(load_diff > tolerance) or np.isnan(load_diff)):
+                            print(('SAVEERROR difference: {:7.2g} > {:7.2g} test id: {} test name: {} saved result : {}{}'.format(load_diff, tolerance, id, id_string, fieldname, index + 1)))
+                            errorcount += 1
+                            erroredtest_list.append(id)
+                        else:
+                            print(('SUCCESS difference: {:7.2g} < {:7.2g} test id: {} test name: {} field: {}{}'.format(error_diff, tolerance, id, id_string, fieldname, index + 1)))
+                        # Display only if there are errors in the results
+
+                    except Exception as message:
+                        # Something went wrong; print failure message
+                        print((format_exc()))
+                        if output == 'nightly':
+                            fid = open(os.path.join(ISSM_DIR, 'nightlylog', 'pythonerror.log'), 'a')
+                            fid.write('%s' % message)
+                            fid.write('\n------------------------------------------------------------------\n')
+                            fid.close()
+                            print(('FAILURE difference: N/A test id: {} test name: {} field: {}'.format(id, id_string, fieldname)))
+                        else:
+                            print(('FAILURE difference: N/A test id: {} test name: {} field: {}'.format(id, id_string, fieldname)))
+                            raise RuntimeError(message)
+            # Check test
+            else:
+                # Load archive
+                if os.path.exists(os.path.join('..', 'Archives', archive_name + '.arch')):
+                    archive_file = os.path.join('..', 'Archives', archive_name + '.arch')
+                else:
+                    raise IOError("Archive file '../Archives/{}.arch' does not exist.".format(archive_name))
+
+                for k, fieldname in enumerate(field_names):
+                    try:
+                        # Get field and tolerance
+                        field = np.array(field_values[k])
+                        if len(field.shape) == 1:
+                            if np.size(field):
+                                field = field.reshape(np.size(field), 1)
+                            else:
+                                field = field.reshape(0, 0)
+                        tolerance = field_tolerances[k]
+
+                        # Compare to archive
+                        # Matlab uses base 1, so use base 1 in labels
+                        archive = np.array(archread(archive_file, archive_name + '_field' + str(k + 1)))
+                        # NOTE: str(np.array(None)) becomes 'None' but np.array(None) is never equal to None: it basically becomes a type of string in an array
+                        if str(archive) == 'None':
+                            raise NameError("Field name '" + archive_name + '_field' + str(k + 1) + "' does not exist in archive file.")
+                        if np.shape(field) != np.shape(archive) and not np.shape(field) in [(1, 1), (0, 0), (1, 0), (0, 1)]:
+                            field = field.T
+                            if np.shape(field) != np.shape(archive):
+                                raise RuntimeError("Field '{}' from test {} is malformed; shape is {}, should be {} or {}".format(fieldname, archive_name[7:], np.shape(field.T), np.shape(archive), np.shape(archive.T)))
+
+                        error_diff = np.amax(np.abs(archive - field), axis=0) / (np.amax(np.abs(archive), axis=0) + float_info.epsilon)
+                        if not np.isscalar(error_diff):
+                            error_diff = error_diff[0]
+
+                        # Display test result
+                        if (np.any(error_diff > tolerance) or np.isnan(error_diff)):
+                            print(('ERROR   difference: {:7.2g} > {:7.2g} test id: {} test name: {} field: {}'.format(error_diff, tolerance, id, id_string, fieldname)))
+                            errorcount += 1
+                            erroredtest_list.append(id)
+                        else:
+                            print(('SUCCESS difference: {:7.2g} < {:7.2g} test id: {} test name: {} field: {}'.format(error_diff, tolerance, id, id_string, fieldname)))
+
+                    except Exception as message:
+                        # Something went wrong; print failure message
+                        print((format_exc()))
+                        if output == 'nightly':
+                            fid = open(os.path.join(ISSM_DIR, 'nightlylog', 'pythonerror.log'), 'a')
+                            fid.write('%s' % message)
+                            fid.write('\n------------------------------------------------------------------\n')
+                            fid.close()
+                            print(('FAILURE difference: N/A test id: {} test name: {} field: {}'.format(id, id_string, fieldname)))
+                        else:
+                            print(('FAILURE difference: N/A test id: {} test name: {} field: {}'.format(id, id_string, fieldname)))
+                            raise RuntimeError(message)
+
+        except Exception as message:
+            # Something went wrong; print failure message
+            print((format_exc()))
+            if output == 'nightly':
+                fid = open(os.path.join(ISSM_DIR, 'nightlylog', 'pythonerror.log'), 'a')
+                fid.write('%s' % message)
+                fid.write('\n------------------------------------------------------------------\n')
+                fid.close()
+                print(('FAILURE difference: N/A test id: {} test name: {} field: {}'.format(id, id_string, 'N/A')))
+            else:
+                print(('FAILURE difference: N/A test id: {} test name: {} field: {}'.format(id, id_string, 'N/A')))
+                raise RuntimeError(message)
+
+        print(("----------------finished:{}-----------------------".format(id)))
+
+    if errorcount > 0:
+        print("{} errors were detected in test {}".format(errorcount, np.unique(erroredtest_list)))
+    return
+
+if __name__ == '__main__':
+    if 'PYTHONSTARTUP' in os.environ:
+        PYTHONSTARTUP = os.environ['PYTHONSTARTUP']
+        if os.path.exists(PYTHONSTARTUP):
+            try:
+                exec(compile(open(PYTHONSTARTUP).read(), PYTHONSTARTUP, 'exec'))
+            except Exception as e:
+                print("PYTHONSTARTUP error: ", e)
+        else:
+            print(("PYTHONSTARTUP file '{}' does not exist.".format(PYTHONSTARTUP)))
+
+        parser = argparse.ArgumentParser(description='runme - test deck for ISSM nightly runs')
+        parser.add_argument('-i', '--id', nargs='*', type=str, help='followed by the list of ids requested', default=[])
+        parser.add_argument('-in', '--include_name', nargs='*', type=str, help='followed by the list of test names requested', default=[])
+        parser.add_argument('-e', '--exclude', nargs='+', type=str, help='ids to be excluded from the test', default=[])
+        parser.add_argument('-en', '--exclude_name', nargs='+', type=str, help='test names to be excluded from the test', default=[])
+        parser.add_argument('-b', '--benchmark', help='nightly/ismip/eismint/thermal/mesh/...', default='nightly')
+        parser.add_argument('-p', '--procedure', help='check/update', default='check')
+        parser.add_argument('-o', '--output', help='nightly/daily/none', default='none')
+        parser.add_argument('-r', '--rank', type=int, help='rank', default=1)
+        parser.add_argument('-n', '--numprocs', type=int, help='numprocs', default=1)
+        args = parser.parse_args()
+
+        md = runme([args.id, args.include_name], [args.exclude, args.exclude_name], args.benchmark, args.procedure, args.output, args.rank, args.numprocs)
+
+        exit(md)
+    else:
+        print("PYTHONSTARTUP not defined in environment")
+        raise RuntimeError()
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test101.html
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test101.html	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test101.html	(revision 27955)
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head><title>ISSM Web APP &mdash; Beta</title>
+<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
+<!-- Includes {{{-->
+<script type="text/javascript" src="../../../ext/jquery-1.11.3/jquery-1-11-3.min.js"></script>
+<script type="text/javascript" src="../../../ext/gl-matrix-2.3.2/gl-matrix-min.js"></script>
+<script type="text/javascript" src="../../../ext/litegl-0.99.0/litegl.min.js"></script>
+<script type="text/javascript" src="../../../ext/hammer-2.0.8/hammer.min.js"></script>
+<script type="text/javascript" src="../../../js/vesl.js"></script>
+<script type="text/javascript" src="../../../js/helpers.js"></script>
+<script type="text/javascript" src="../../bin/issm-bin.js"> </script>
+<script type="text/javascript" src="../../bin/issm-prebin.js"> </script>
+<script type="text/javascript" src="../../bin/IssmModule.js"></script>
+<script type="text/javascript" src="../Exp/Square.js"></script>
+<script type="text/javascript" src="../Par/SquareShelfConstrained.js"></script>
+<script type="text/javascript" src="../Data/SquareShelfConstrained.data.js"></script>
+<!-- Includes }}}-->
+</head>
+<script type="text/javascript" async>
+function run() {
+
+	console.log('creating model'); 
+	var md = new model();
+
+	console.log('meshing');
+	triangle(md,square[0],50000); 
+	
+	console.log('parameterization');
+	setmask(md,'all','');
+	parameterize(md);
+	setflowequation(md,'SSA','all');
+	md.verbose.solution=1;  md.verbose.convergence=0;
+
+	console.log('solve');
+	md=solve(md,'Stressbalance','checkconsistency','no');
+	
+	console.log(md.results[0]['Vel']);
+	
+	plotmodel(md,
+		'canvasid#all', 'issm-sim-canvas',
+		'colorbarid', 'issm-sim-canvas-colorbar',
+		'colorbar','on',
+		'caxis', [ArrayMin(md.results[0]['Vel']), ArrayMax(md.results[0]['Vel'])],
+		'data',md.results[0]['Vel'],
+		'data','mesh');
+}
+</script>
+<body onload="run()"> 
+
+<canvas id="issm-sim-canvas"></canvas>
+<canvas id="issm-sim-canvas-colorbar"></canvas>
+<canvas id="issm-sim-canvas-overlay"></canvas>
+</body> 
+</html>
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test101.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test101.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test101.js	(revision 27955)
@@ -0,0 +1,15 @@
+console.log('creating model'); 
+var md = new model();
+
+console.log('meshing');
+triangle(md,square[0],40000); 
+
+console.log('parameterization');
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+md.verbose.solution=1;  md.verbose.convergence=0;
+
+md=solve(md,'Stressbalance','checkconsistency','no');
+
+console.log(md.results['StressbalanceSolution'][0]['Vel']);
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test101.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test101.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test101.m	(revision 27955)
@@ -0,0 +1,41 @@
+%Test Name: SquareShelfConstrainedStressSSA2d
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',2);
+
+%output
+md.stressbalance.requested_outputs={'default','DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy','MassFlux1','MassFlux2','MassFlux3','MassFlux4','MassFlux5','MassFlux6'};
+md.outputdefinition.definitions={...
+	massfluxatgate('name','MassFlux1','profilename',['../Exp/MassFlux1.exp'],'definitionstring','Outputdefinition1'),...
+	massfluxatgate('name','MassFlux2','profilename',['../Exp/MassFlux2.exp'],'definitionstring','Outputdefinition2'),...
+	massfluxatgate('name','MassFlux3','profilename',['../Exp/MassFlux3.exp'],'definitionstring','Outputdefinition3'),...
+	massfluxatgate('name','MassFlux4','profilename',['../Exp/MassFlux4.exp'],'definitionstring','Outputdefinition4'),...
+	massfluxatgate('name','MassFlux5','profilename',['../Exp/MassFlux5.exp'],'definitionstring','Outputdefinition5'),...
+	massfluxatgate('name','MassFlux6','profilename',['../Exp/MassFlux6.exp'],'definitionstring','Outputdefinition6')...
+	};
+
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure',...
+	'DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy','MassFlux1','MassFlux2','MassFlux3','MassFlux4','MassFlux5','MassFlux6'};
+field_tolerances={3e-13,1e-13,1e-13,1e-13,...
+	2e-13,1e-13,2e-13,...
+	1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13 };
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.DeviatoricStressxx),...
+	(md.results.StressbalanceSolution.DeviatoricStressyy),...
+	(md.results.StressbalanceSolution.DeviatoricStressxy),...
+	(md.results.StressbalanceSolution.MassFlux1),...
+	(md.results.StressbalanceSolution.MassFlux2),...
+	(md.results.StressbalanceSolution.MassFlux3),...
+	(md.results.StressbalanceSolution.MassFlux4),...
+	(md.results.StressbalanceSolution.MassFlux5),...
+	(md.results.StressbalanceSolution.MassFlux6)...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test101.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test101.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test101.py	(revision 27955)
@@ -0,0 +1,48 @@
+#Test Name: SquareShelfConstrainedStressSSA2d
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from massfluxatgate import massfluxatgate
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 50000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 2)
+#outputs
+md.stressbalance.requested_outputs = ['default', 'DeviatoricStressxx', 'DeviatoricStressyy', 'DeviatoricStressxy', 'MassFlux1', 'MassFlux2', 'MassFlux3', 'MassFlux4', 'MassFlux5', 'MassFlux6']
+md.outputdefinition.definitions = [massfluxatgate('name', 'MassFlux1', 'profilename', '../Exp/MassFlux1.exp', 'definitionstring', 'Outputdefinition1'),
+                                   massfluxatgate('name', 'MassFlux2', 'profilename', '../Exp/MassFlux2.exp', 'definitionstring', 'Outputdefinition2'),
+                                   massfluxatgate('name', 'MassFlux3', 'profilename', '../Exp/MassFlux3.exp', 'definitionstring', 'Outputdefinition3'),
+                                   massfluxatgate('name', 'MassFlux4', 'profilename', '../Exp/MassFlux4.exp', 'definitionstring', 'Outputdefinition4'),
+                                   massfluxatgate('name', 'MassFlux5', 'profilename', '../Exp/MassFlux5.exp', 'definitionstring', 'Outputdefinition5'),
+                                   massfluxatgate('name', 'MassFlux6', 'profilename', '../Exp/MassFlux6.exp', 'definitionstring', 'Outputdefinition6')]
+
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure',
+               'DeviatoricStressxx', 'DeviatoricStressyy', 'DeviatoricStressxy',
+               'MassFlux1', 'MassFlux2', 'MassFlux3', 'MassFlux4', 'MassFlux5', 'MassFlux6']
+field_tolerances = [3e-13, 1e-13, 1e-13, 1e-13,
+                    2e-13, 1e-13, 2e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.DeviatoricStressxx,
+                md.results.StressbalanceSolution.DeviatoricStressyy,
+                md.results.StressbalanceSolution.DeviatoricStressxy,
+                md.results.StressbalanceSolution.MassFlux1,
+                md.results.StressbalanceSolution.MassFlux2,
+                md.results.StressbalanceSolution.MassFlux3,
+                md.results.StressbalanceSolution.MassFlux4,
+                md.results.StressbalanceSolution.MassFlux5,
+                md.results.StressbalanceSolution.MassFlux6]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test101awsissmsolutionserver.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test101awsissmsolutionserver.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test101awsissmsolutionserver.m	(revision 27955)
@@ -0,0 +1,94 @@
+%Test Name: SquareShelfConstrainedStressSSA2d
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',2);
+
+if true
+	cluster=aws_issm_solution_server;
+	cluster.login='';
+	cluster.idfile='';
+	cluster.executionpath='~/issm-exec';
+	md.cluster=cluster;
+end
+
+%output
+md.stressbalance.requested_outputs={'default','DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy','MassFlux1','MassFlux2','MassFlux3','MassFlux4','MassFlux5','MassFlux6'};
+md.outputdefinition.definitions={...
+	massfluxatgate('name','MassFlux1','profilename',['../Exp/MassFlux1.exp'],'definitionstring','Outputdefinition1'),...
+	massfluxatgate('name','MassFlux2','profilename',['../Exp/MassFlux2.exp'],'definitionstring','Outputdefinition2'),...
+	massfluxatgate('name','MassFlux3','profilename',['../Exp/MassFlux3.exp'],'definitionstring','Outputdefinition3'),...
+	massfluxatgate('name','MassFlux4','profilename',['../Exp/MassFlux4.exp'],'definitionstring','Outputdefinition4'),...
+	massfluxatgate('name','MassFlux5','profilename',['../Exp/MassFlux5.exp'],'definitionstring','Outputdefinition5'),...
+	massfluxatgate('name','MassFlux6','profilename',['../Exp/MassFlux6.exp'],'definitionstring','Outputdefinition6')...
+	};
+
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure',...
+	'DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy','MassFlux1','MassFlux2','MassFlux3','MassFlux4','MassFlux5','MassFlux6'};
+field_tolerances={3e-13,1e-13,1e-13,1e-13,...
+	2e-13,1e-13,2e-13,...
+	1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13 };
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.DeviatoricStressxx),...
+	(md.results.StressbalanceSolution.DeviatoricStressyy),...
+	(md.results.StressbalanceSolution.DeviatoricStressxy),...
+	(md.results.StressbalanceSolution.MassFlux1),...
+	(md.results.StressbalanceSolution.MassFlux2),...
+	(md.results.StressbalanceSolution.MassFlux3),...
+	(md.results.StressbalanceSolution.MassFlux4),...
+	(md.results.StressbalanceSolution.MassFlux5),...
+	(md.results.StressbalanceSolution.MassFlux6)...
+	};
+
+id=101;
+id_string='test101';
+archive_name=['Archive101'];
+for k=1:length(field_names),
+
+	try,
+		%Get field and tolerance
+		field=field_values{k};
+		fieldname=field_names{k};
+		tolerance=field_tolerances{k};
+
+		%compare to archive
+		%our output is in the correct order (n,1) or (1,1), so we do not need to transpose again
+		archive_cell=archread(['../Archives/' archive_name '.arch'],[archive_name '_field' num2str(k)]);
+		archive=archive_cell{1};
+		error_diff=full(max(abs(archive(:)-field(:)))/(max(abs(archive(:)))+eps)); %disp test result
+		if (error_diff>tolerance | isnan(error_diff));
+			disp(sprintf(['ERROR   difference: %-7.2g > %7.2g test id: %i test name: %s field: %s'],...
+				error_diff,tolerance,id,id_string,fieldname));
+			if(getfieldvalue(options,'stoponerror',0)), disp('STOP'); return; end
+		else
+			disp(sprintf(['SUCCESS difference: %-7.2g < %7.2g test id: %i test name: %s field: %s'],...
+				error_diff,tolerance,id,id_string,fieldname));
+		end
+
+	catch me2
+
+		%something went wrong, print failure message:
+		message=getReport(me2);
+		fprintf('%s',message);
+		if strcmpi(output,'nightly')
+			fid=fopen([issmdir() '/nightlylog/matlaberror.log'], 'at');
+			fprintf(fid,'%s',message);
+			fprintf(fid,'\n------------------------------------------------------------------\n');
+			fclose(fid);
+			disp(sprintf(['FAILURE difference: N/A test id: %i test name: %s field: %s'],id,id_string,fieldname));
+		else
+			disp(sprintf(['FAILURE difference: N/A test id: %i test name: %s field: %s'],id,id_string,fieldname));
+			fprintf('%s',message);
+			if(getfieldvalue(options,'stoponerror',0)), disp('STOP'); return; end
+		end
+		continue;
+	end
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test101eisnasasmce.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test101eisnasasmce.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test101eisnasasmce.py	(revision 27955)
@@ -0,0 +1,55 @@
+#Test Name: SquareShelfConstrainedStressSSA2d
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from massfluxatgate import massfluxatgate
+from generic import generic
+from eis_nasa_smce import eis_nasa_smce
+
+md = triangle(model(), '../Exp/Square.exp', 50000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 2)
+
+if True:
+    cluster = eis_nasa_smce()
+    cluster.partition = 'sealevel-c5xl-spot'
+    md.cluster = cluster
+
+#outputs
+md.stressbalance.requested_outputs = ['default', 'DeviatoricStressxx', 'DeviatoricStressyy', 'DeviatoricStressxy', 'MassFlux1', 'MassFlux2', 'MassFlux3', 'MassFlux4', 'MassFlux5', 'MassFlux6']
+md.outputdefinition.definitions = [massfluxatgate('name', 'MassFlux1', 'profilename', '../Exp/MassFlux1.exp', 'definitionstring', 'Outputdefinition1'),
+                                   massfluxatgate('name', 'MassFlux2', 'profilename', '../Exp/MassFlux2.exp', 'definitionstring', 'Outputdefinition2'),
+                                   massfluxatgate('name', 'MassFlux3', 'profilename', '../Exp/MassFlux3.exp', 'definitionstring', 'Outputdefinition3'),
+                                   massfluxatgate('name', 'MassFlux4', 'profilename', '../Exp/MassFlux4.exp', 'definitionstring', 'Outputdefinition4'),
+                                   massfluxatgate('name', 'MassFlux5', 'profilename', '../Exp/MassFlux5.exp', 'definitionstring', 'Outputdefinition5'),
+                                   massfluxatgate('name', 'MassFlux6', 'profilename', '../Exp/MassFlux6.exp', 'definitionstring', 'Outputdefinition6')]
+
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure',
+               'DeviatoricStressxx', 'DeviatoricStressyy', 'DeviatoricStressxy',
+               'MassFlux1', 'MassFlux2', 'MassFlux3', 'MassFlux4', 'MassFlux5', 'MassFlux6']
+field_tolerances = [3e-13, 1e-13, 1e-13, 1e-13,
+                    2e-13, 1e-13, 2e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.DeviatoricStressxx,
+                md.results.StressbalanceSolution.DeviatoricStressyy,
+                md.results.StressbalanceSolution.DeviatoricStressxy,
+                md.results.StressbalanceSolution.MassFlux1,
+                md.results.StressbalanceSolution.MassFlux2,
+                md.results.StressbalanceSolution.MassFlux3,
+                md.results.StressbalanceSolution.MassFlux4,
+                md.results.StressbalanceSolution.MassFlux5,
+                md.results.StressbalanceSolution.MassFlux6]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test102.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test102.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test102.js	(revision 27955)
@@ -0,0 +1,20 @@
+//Test Name: SquareShelfConstrainedStressSSA3d
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,2.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance', 'checkconsistency', 'no');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test102.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test102.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test102.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: SquareShelfConstrainedStressSSA3d
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test102.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test102.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test102.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: SquareShelfConstrainedStressSSA3d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test103.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test103.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test103.js	(revision 27955)
@@ -0,0 +1,29 @@
+//Test Name: SquareShelfConstrainedStressHO
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,2.);
+setflowequation(md,'HO','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.stressbalance.requested_outputs=['default','StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz'];
+md=solve(md,'Stressbalance', 'checkconsistency', 'no');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure',
+	'StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz'];
+field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-09,
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-08];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	(md.results.StressbalanceSolution[0].StressTensorxx),
+	(md.results.StressbalanceSolution[0].StressTensoryy),
+	(md.results.StressbalanceSolution[0].StressTensorzz),
+	(md.results.StressbalanceSolution[0].StressTensorxy),
+	(md.results.StressbalanceSolution[0].StressTensorxz),
+	(md.results.StressbalanceSolution[0].StressTensoryz),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test103.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test103.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test103.m	(revision 27955)
@@ -0,0 +1,28 @@
+%Test Name: SquareShelfConstrainedStressHO
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.stressbalance.requested_outputs={'default','StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz'};
+md=solve(md,'sb');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure',...
+	'StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-09,...
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-08};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.StressTensorxx),...
+	(md.results.StressbalanceSolution.StressTensoryy),...
+	(md.results.StressbalanceSolution.StressTensorzz),...
+	(md.results.StressbalanceSolution.StressTensorxy),...
+	(md.results.StressbalanceSolution.StressTensorxz),...
+	(md.results.StressbalanceSolution.StressTensoryz),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test103.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test103.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test103.py	(revision 27955)
@@ -0,0 +1,39 @@
+#Test Name: SquareShelfConstrainedStressHO
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.stressbalance.requested_outputs = ['default', 'StressTensorxx', 'StressTensoryy', 'StressTensorzz', 'StressTensorxy', 'StressTensorxz', 'StressTensoryz']
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz',
+               'Vel', 'Pressure',
+               'StressTensorxx', 'StressTensoryy', 'StressTensorzz',
+               'StressTensorxy', 'StressTensorxz', 'StressTensoryz']
+field_tolerances = [1e-09, 1e-09, 1e-09,
+                    1e-09, 1e-09,
+                    1e-09, 1e-09, 1e-09,
+                    1e-09, 1e-09, 1e-08]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.StressTensorxx,
+                md.results.StressbalanceSolution.StressTensoryy,
+                md.results.StressbalanceSolution.StressTensorzz,
+                md.results.StressbalanceSolution.StressTensorxy,
+                md.results.StressbalanceSolution.StressTensorxz,
+                md.results.StressbalanceSolution.StressTensoryz]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test104.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test104.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test104.js	(revision 27955)
@@ -0,0 +1,20 @@
+//Test Name: SquareShelfConstrainedStressFS
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,2.);
+setflowequation(md,'FS','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure'];
+field_tolerances=[1e-08,1e-08,4e-06,1e-08,1e-08];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test104.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test104.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test104.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: SquareShelfConstrainedStressFS
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'FS','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-08,1e-08,4e-06,1e-08,1e-08};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test104.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test104.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test104.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: SquareShelfConstrainedStressFS
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'FS', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [1e-08, 1e-08, 4e-06, 1e-08, 1e-08]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test105.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test105.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test105.js	(revision 27955)
@@ -0,0 +1,15 @@
+//Test Name: SquareShelfConstrainedMasstransp2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+//Fields and tolerances to track changes
+field_names     =['Thickness'];
+field_tolerances=[1e-13];
+field_values=[
+	(md.results.MasstransportSolution[0].Thickness),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test105.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test105.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test105.m	(revision 27955)
@@ -0,0 +1,14 @@
+%Test Name: SquareShelfConstrainedMasstransp2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test105.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test105.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test105.py	(revision 27955)
@@ -0,0 +1,21 @@
+#Test Name: SquareShelfConstrainedMasstransp2d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Masstransport')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-13]
+field_values = [md.results.MasstransportSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test106.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test106.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test106.js	(revision 27955)
@@ -0,0 +1,18 @@
+//Test Name: SquareShelfConstrainedMasstransp2dDG
+var md = new model();
+triangle(md,square[0],150000.);
+meshconvert(md);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.stabilization=3;
+md.masstransport.spcthickness=md.geometry.thickness;
+md=solve(md,'Masstransport');
+
+//Fields and tolerances to track changes
+field_names     =['Thickness'];
+field_tolerances=[1e-13];
+field_values=[
+	(md.results.MasstransportSolution[0].Thickness),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test106.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test106.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test106.m	(revision 27955)
@@ -0,0 +1,17 @@
+%Test Name: SquareShelfConstrainedMasstransp2dDG
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=meshconvert(md);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.stabilization=3;
+md.masstransport.spcthickness=md.geometry.thickness;
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test106.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test106.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test106.py	(revision 27955)
@@ -0,0 +1,25 @@
+#Test Name: SquareShelfConstrainedMasstransp2dDG
+from model import *
+from socket import gethostname
+from triangle import *
+from meshconvert import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = meshconvert(md)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.masstransport.stabilization = 3
+md.masstransport.spcthickness = md.geometry.thickness
+md = solve(md, 'Masstransport')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-13]
+field_values = [md.results.MasstransportSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test107.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test107.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test107.js	(revision 27955)
@@ -0,0 +1,16 @@
+//Test Name: SquareShelfConstrainedMasstransp3d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+md.extrude(md,5,3.);
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+//Fields and tolerances to track changes
+field_names     =['Thickness'];
+field_tolerances=[1e-13];
+field_values=[
+	(md.results.MasstransportSolution[0].Thickness),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test107.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test107.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test107.m	(revision 27955)
@@ -0,0 +1,15 @@
+%Test Name: SquareShelfConstrainedMasstransp3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md=extrude(md,5,3.);
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test107.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test107.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test107.py	(revision 27955)
@@ -0,0 +1,22 @@
+#Test Name: SquareShelfConstrainedMasstransp3d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.extrude(5, 3.)
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Masstransport')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-13]
+field_values = [md.results.MasstransportSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test108.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test108.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test108.js	(revision 27955)
@@ -0,0 +1,18 @@
+//Test Name: SquareShelfConstrainedTherStea
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+md.timestepping.time_step=0;
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Thermal');
+
+//Fields and tolerances to track changes
+field_names     =['Temperature','BasalforcingsGroundediceMeltingRate'];
+field_tolerances=[1e-13,1e-5];
+field_values=[
+	(md.results.ThermalSolution[0].Temperature),
+	(md.results.ThermalSolution[0].BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test108.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test108.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test108.m	(revision 27955)
@@ -0,0 +1,17 @@
+%Test Name: SquareShelfConstrainedTherStea
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=0;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-5};
+field_values={...
+	(md.results.ThermalSolution.Temperature),...
+	(md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test108.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test108.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test108.py	(revision 27955)
@@ -0,0 +1,24 @@
+#Test Name: SquareShelfConstrainedTherStea
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.timestepping.time_step = 0
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Thermal')
+
+#Fields and tolerances to track changes
+field_names = ['Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-13, 1e-5]
+field_values = [md.results.ThermalSolution.Temperature,
+                md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test109.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test109.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test109.js	(revision 27955)
@@ -0,0 +1,22 @@
+//Test Name: SquareShelfConstrainedTherTran
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Temperature','BasalforcingsGroundediceMeltingRate'];
+field_tolerances=[1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test109.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test109.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test109.m	(revision 27955)
@@ -0,0 +1,21 @@
+%Test Name: SquareShelfConstrainedTherTran
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test109.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test109.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test109.py	(revision 27955)
@@ -0,0 +1,28 @@
+#Test Name: SquareShelfConstrainedTherTran
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.isstressbalance = False
+md.transient.ismasstransport = False
+md.transient.issmb = True
+md.transient.isthermal = True
+md.transient.isgroundingline = False
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test110.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test110.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test110.js	(revision 27955)
@@ -0,0 +1,42 @@
+//Test Name: SquareShelfConstrainedTranSSA2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.trans.requested_outputs=['IceVolume'];
+
+md=solve(md,'transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Volume3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).IceVolume),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).IceVolume),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).IceVolume),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test110.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test110.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test110.m	(revision 27955)
@@ -0,0 +1,41 @@
+%Test Name: SquareShelfConstrainedTranSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'IceVolume'};
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Volume3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).IceVolume),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test110.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test110.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test110.py	(revision 27955)
@@ -0,0 +1,48 @@
+#Test Name: SquareShelfConstrainedTranSSA2d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.requested_outputs = ['IceVolume']
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Volume1', 'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Volume2', 'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'Volume3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].IceVolume,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].IceVolume,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].IceVolume]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1101.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1101.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1101.m	(revision 27955)
@@ -0,0 +1,129 @@
+%Test Name: ISMIPAHO
+%This test is a test from the ISMP-HOM Intercomparison project.
+%Pattyn and Payne 2006
+printingflag=false;
+
+%L_list={5000.,10000.,20000.,40000.,80000.,160000.};
+L_list={80000.};
+results={};
+minvx=[];
+maxvx=[];
+
+for i=1:length(L_list),
+	L=L_list{i};
+	nx=20; %numberof nodes in x direction
+	ny=20;
+	md=model();
+	md=squaremesh(md,L,L,nx,ny);
+	md=setmask(md,'',''); %ice sheet test
+	md=parameterize(md,'../Par/ISMIPA.par');
+	md=extrude(md,9,1.);
+
+	md=setflowequation(md,'HO','all');
+
+	%Create dirichlet on the bed only
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+
+	pos=find(md.mesh.vertexonbase);
+	md.stressbalance.spcvx(pos)=0.;
+	md.stressbalance.spcvy(pos)=0.;
+
+	%Create MPCs to have periodic boundary conditions
+	posx=find(md.mesh.x==0.);
+	posx2=find(md.mesh.x==max(md.mesh.x));
+
+	posy=find(md.mesh.y==0. & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x)); %Don't take the same nodes two times
+	posy2=find(md.mesh.y==max(md.mesh.y) & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x));
+
+	md.stressbalance.vertex_pairing=[posx,posx2;posy,posy2];
+
+	%Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8);
+	md=solve(md,'Stressbalance');
+
+	%Plot the results and save them
+	vx=(md.results.StressbalanceSolution.Vx);
+	vy=(md.results.StressbalanceSolution.Vy);
+	vz=(md.results.StressbalanceSolution.Vz);
+	results{i}=md.results.StressbalanceSolution;
+	minvx(i)=min(vx(end-md.mesh.numberofvertices2d+1:end));
+	maxvx(i)=max(vx(end-md.mesh.numberofvertices2d+1:end));
+
+	%Now plot vx, vy, vz and vx on a cross section
+	plotmodel(md,'data',vx,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km')
+	if printingflag, 
+		set(gcf,'Color','w')
+		printmodel(['ismipaHOvx' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipaHOvx' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+	end
+	plotmodel(md,'data',vy,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km')
+	if printingflag, 
+		set(gcf,'Color','w')
+		printmodel(['ismipaHOvy' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipaHOvy' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+	end
+	plotmodel(md,'data',vz,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km')
+	if printingflag, 
+		set(gcf,'Color','w')
+		printmodel(['ismipaHOvz' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipaHOvz' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+	end
+
+	if(L==5000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP5000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[10 18],'xlim',[0 5000],'title','','xlabel','')
+	elseif(L==10000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP10000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[10 30],'xlim',[0 10000],'title','','xlabel','')
+	elseif(L==20000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP20000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 50],'xlim',[0 20000],'title','','xlabel','')
+	elseif(L==40000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP40000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 80],'xlim',[0 40000],'title','','xlabel','')
+	elseif(L==80000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP80000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 100],'xlim',[0 80000],'title','','xlabel','')
+	elseif(L==160000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP160000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 120],'xlim',[0 160000],'title','','xlabel','')
+	end
+	if printingflag, 
+		set(gcf,'Color','w')
+		printmodel(['ismipaHOvxsec' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipaHOvxsec' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+	end
+end
+
+%Now plot the min and max values of vx for each size of the square
+plot([5 10 20 40 80 160],minvx);ylim([0 18]);xlim([0 160])
+if printingflag, 
+	set(gcf,'Color','w')
+	printmodel('ismipaHOminvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipaHOminvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+end
+plot([5 10 20 40 80 160],maxvx);ylim([0 120]);xlim([0 160])
+if printingflag, 
+	set(gcf,'Color','w')
+	printmodel('ismipaHOmaxvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipaHOmaxvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx80km','Vy80km','Vz80km'
+};
+field_tolerances={...
+	1e-08,1e-08,1e-08,...
+};
+field_values={};
+for i=1:1,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1101.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1101.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1101.py	(revision 27955)
@@ -0,0 +1,133 @@
+#Test Name: ISMIPAHO
+import numpy as np
+from model import *
+from socket import gethostname
+from squaremesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+"""
+This test is a test from the ISMP - HOM Intercomparison project.
+Pattyn and Payne 2006
+"""
+
+printingflag = False
+
+L_list = [80000.]
+results = []
+minvx = []
+maxvx = []
+
+for L in L_list:
+    nx = 20  #numberof nodes in x direction
+    ny = 20
+    md = model()
+    md = squaremesh(md, L, L, nx, ny)
+    md = setmask(md, '', '')  #ice sheet test
+    md = parameterize(md, '../Par/ISMIPA.py')
+    md.extrude(9, 1.)
+
+    md = setflowequation(md, 'HO', 'all')
+
+#Create dirichlet on the bed only
+    md.stressbalance.spcvx = np.nan * np.ones((md.mesh.numberofvertices))
+    md.stressbalance.spcvy = np.nan * np.ones((md.mesh.numberofvertices))
+    md.stressbalance.spcvz = np.nan * np.ones((md.mesh.numberofvertices))
+
+    pos = np.where(md.mesh.vertexonbase)
+    md.stressbalance.spcvx[pos] = 0.
+    md.stressbalance.spcvy[pos] = 0.
+
+#Create MPCs to have periodic boundary conditions this is done on matlab indexing
+    posx = np.where(md.mesh.x == 0.)[0]
+    posx2 = np.where(md.mesh.x == np.max(md.mesh.x))[0]
+
+    posy = np.where(np.logical_and.reduce((md.mesh.y == 0., md.mesh.x != 0., md.mesh.x != np.max(md.mesh.x))))[0]  #Don't take the same nodes two times
+    posy2 = np.where(np.logical_and.reduce((md.mesh.y == np.max(md.mesh.y), md.mesh.x != 0., md.mesh.x != np.max(md.mesh.x))))[0]
+
+    md.stressbalance.vertex_pairing = np.vstack((np.vstack((posx + 1, posx2 + 1)).T, np.vstack((posy + 1, posy2 + 1)).T))
+
+#Compute the stressbalance
+    md.cluster = generic('name', gethostname(), 'np', 8)
+    md = solve(md, 'Stressbalance')
+
+#Plot the results and save them
+    vx = md.results.StressbalanceSolution.Vx
+    vy = md.results.StressbalanceSolution.Vy
+    vz = md.results.StressbalanceSolution.Vz
+    results.append(md.results.StressbalanceSolution)
+    minvx.append(np.min(vx[-md.mesh.numberofvertices2d:]))
+    maxvx.append(np.max(vx[-md.mesh.numberofvertices2d:]))
+
+#Now plot vx, vy, vz and vx on a cross section
+#   plotmodel(md, 'data', vx, 'layer  #all', md.mesh.numberoflayers, 'xlim', [0 L / 1.0e3], 'ylim', [0 L / 1.0e3], 'unit', 'km')
+    if printingflag:
+        pass
+#           set(gcf, 'Color', 'w')
+#           printmodel(['ismipaHOvx' num2str(L)], 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#           shutil.move("ismipaHOvx%d.png" % L, ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestA')
+#   plotmodel(md, 'data', vy, 'layer  #all', md.mesh.numberoflayers, 'xlim', [0 L / 1.0e3], 'ylim', [0 L / 1.0e3], 'unit', 'km')
+    if printingflag:
+        pass
+#           set(gcf, 'Color', 'w')
+#           printmodel(['ismipaHOvy' num2str(L)], 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#           shutil.move("ismipaHOvy%d.png" % L, ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestA')
+#   plotmodel(md, 'data', vz, 'layer  #all', md.mesh.numberoflayers, 'xlim', [0 L / 1.0e3], 'ylim', [0 L / 1.0e3], 'unit', 'km')
+    if printingflag:
+        pass
+#           set(gcf, 'Color', 'w')
+#           printmodel(['ismipaHOvz' num2str(L)], 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#           shutil.move("ismipaHOvz%d.png" % L, ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestA')
+
+    if (L == 5000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP5000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [10 18], 'xlim', [0 5000], 'title', '', 'xlabel', '')
+    elif (L == 10000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP10000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [10 30], 'xlim', [0 10000], 'title', '', 'xlabel', '')
+    elif (L == 20000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP20000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [0 50], 'xlim', [0 20000], 'title', '', 'xlabel', '')
+    elif (L == 40000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP40000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [0 80], 'xlim', [0 40000], 'title', '', 'xlabel', '')
+    elif (L == 80000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP80000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [0 100], 'xlim', [0 80000], 'title', '', 'xlabel', '')
+    elif (L == 160000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP160000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [0 120], 'xlim', [0 160000], 'title', '', 'xlabel', '')
+    if printingflag:
+        pass
+#           set(gcf, 'Color', 'w')
+#           printmodel(['ismipaHOvxsec' num2str(L)], 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#           shutil.move("ismipaHOvxsec%d.png" % L, ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestA')
+
+#Now plot the min and max values of vx for each size of the square
+#plot([5 10 20 40 80 160], minvx)ylim([0 18])xlim([0 160])
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('ismipaHOminvx', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#       shutil.move('ismipaHOminvx.png', ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestA')
+#plot([5 10 20 40 80 160], maxvx)ylim([0 120])xlim([0 160])
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('ismipaHOmaxvx', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#       shutil.move('ismipaHOmaxvx.png', ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestA')
+
+#Fields and tolerances to track changes
+field_names = ['Vx80km', 'Vy80km', 'Vz80km']
+field_tolerances = [1e-08, 1e-08, 1e-08]
+field_values = []
+for result in results:
+    field_values = field_values + [result.Vx, result.Vy, result.Vz]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1102.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1102.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1102.m	(revision 27955)
@@ -0,0 +1,139 @@
+%Test Name: ISMIPAFS
+%This test is a test from the ISMP-HOM Intercomparison project.
+%Pattyn and Payne 2006
+printingflag=false;
+
+%L_list={5000.,10000.,20000.,40000.,80000.,160000.};
+L_list={80000.};
+results={};
+minvx=[];
+maxvx=[];
+
+for i=1:length(L_list),
+	L=L_list{i};
+	nx=20; %numberof nodes in x direction
+	ny=20;
+	md=model();
+	md=squaremesh(md,L,L,nx,ny);
+	md=setmask(md,'',''); %ice sheet test
+
+%	%Find elements at the corner and extract model
+%	posnodes=find((md.mesh.x==0. | md.mesh.x==max(md.mesh.x)) & (md.mesh.y==0. | md.mesh.y==max(md.mesh.y)));
+%	[a,b]=find(ismember(md.mesh.elements,posnodes));
+%	elements=ones(md.mesh.numberofelements,1);
+%	elements(a)=0;
+%	md=modelextract(md,elements);
+
+	md=parameterize(md,'../Par/ISMIPA.par');
+	md=extrude(md,10,1.);
+	md=setflowequation(md,'FS','all');
+
+	%Create dirichlet on the bed only
+	pos=find(md.mesh.vertexonbase);
+	md.stressbalance.spcvx(pos)=0.;
+	md.stressbalance.spcvy(pos)=0.;
+	md.stressbalance.spcvz(pos)=0.;
+
+%	%Create MPCs to have periodic boundary conditions
+%	posx=find(md.mesh.x==0.);
+%	posx2=find(md.mesh.x==max(md.mesh.x));
+%	posx=find(md.mesh.x==0. & md.mesh.y~=0. & md.mesh.y~=max(md.mesh.y) & ~md.mesh.vertexonbase);
+%	posx2=find(md.mesh.x==max(md.mesh.x) &  md.mesh.y~=0. & md.mesh.y~=max(md.mesh.y) & ~md.mesh.vertexonbase);
+
+%	posy=find(md.mesh.y==0. & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x) & ~md.mesh.vertexonbase); %Don't take the same nodes two times
+%	posy2=find(md.mesh.y==max(md.mesh.y) & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x) & ~md.mesh.vertexonbase);
+
+%	md.stressbalance.vertex_pairing=[posx,posx2;posy,posy2];
+
+	%Compute the stressbalance
+	md.stressbalance.abstol=NaN;
+	md.stressbalance.reltol=NaN;
+	md.stressbalance.restol=1.;
+	md.cluster=generic('name',oshostname(),'np',8);
+	md=solve(md,'Stressbalance');
+
+	%Plot the results and save them
+	vx=(md.results.StressbalanceSolution.Vx);
+	vy=(md.results.StressbalanceSolution.Vy);
+	vz=(md.results.StressbalanceSolution.Vz);
+	pressure=(md.results.StressbalanceSolution.Pressure);
+	results{i}=md.results.StressbalanceSolution;
+	minvx(i)=min(vx(end-md.mesh.numberofvertices2d+1:end));
+	maxvx(i)=max(vx(end-md.mesh.numberofvertices2d+1:end));
+
+	%Now plot vx, vy, vz and vx on a cross section
+	plotmodel(md,'data',vx,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',2)
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipaFSvx' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipaFSvx' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+	end
+	plotmodel(md,'data',vy,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',3)
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipaFSvy' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipaFSvy' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+	end
+	plotmodel(md,'data',vz,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',4)
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipaFSvz' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipaFSvz' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+	end
+
+	if(L==5000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP5000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[10 18],'xlim',[0 5000],'title','','xlabel','')
+	elseif(L==10000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP10000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[10 30],'xlim',[0 10000],'title','','xlabel','')
+	elseif(L==20000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP20000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 50],'xlim',[0 20000],'title','','xlabel','')
+	elseif(L==40000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP40000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 80],'xlim',[0 40000],'title','','xlabel','')
+	elseif(L==80000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP80000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 100],'xlim',[0 80000],'title','','xlabel','')
+	elseif(L==160000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP160000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 120],'xlim',[0 160000],'title','','xlabel','')
+	end
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipaFSvxsec' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipaFSvxsec' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+	end
+end
+
+%Now plot the min and max values of vx for each size of the square
+plot([5 10 20 40 80 160],minvx);ylim([0 18])
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('ismipaFSminvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipaFSminvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+end
+plot([5 10 20 40 80 160],maxvx);ylim([0 120])
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('ismipaFSmaxvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipaFSmaxvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestA']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx80km','Vy80km','Vz80km'
+};
+field_tolerances={...
+	1e-12,1e-11,1e-12,...
+};
+field_values={};
+for i=1:1,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1102.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1102.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1102.py	(revision 27955)
@@ -0,0 +1,132 @@
+#Test Name: ISMIPAFS
+import numpy as np
+from model import *
+from socket import gethostname
+from squaremesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+"""
+This test is a test from the ISMP - HOM Intercomparison project.
+Pattyn and Payne 2006
+"""
+
+printingflag = False
+
+L_list = [80000.]
+results = []
+minvx = []
+maxvx = []
+
+for L in L_list:
+    nx = 20  #numberof nodes in x direction
+    ny = 20
+    md = model()
+    md = squaremesh(md, L, L, nx, ny)
+    md = setmask(md, '', '')  #ice sheet test
+
+    #  #Find elements at the corner and extract model
+    #   posnodes = np.nonzero(np.logical_and.reduce(np.logical_or.reduce(md.mesh.x = 0., md.mesh.x = np.max(md.mesh.x)), np.logical_or.reduce(md.mesh.y = 0., md.mesh.y = np.max(md.mesh.y))))
+    #   a = np.nonzero(ismember(md.mesh.elements, posnodes))[0]
+    #   elements = np.ones((md.mesh.numberofelements), int)
+    #   elements[a] = 0
+    #   md.modelextract(elements)
+
+    md = parameterize(md, '../Par/ISMIPA.py')
+    md.extrude(10, 1.)
+    md = setflowequation(md, 'FS', 'all')
+
+    #Create dirichlet on the bed only
+    pos = np.nonzero(md.mesh.vertexonbase)
+    md.stressbalance.spcvx[pos] = 0.
+    md.stressbalance.spcvy[pos] = 0.
+    md.stressbalance.spcvz[pos] = 0.
+
+    #Compute the stressbalance
+    md.stressbalance.abstol = np.nan
+    md.stressbalance.reltol = np.nan
+    md.stressbalance.restol = 1.
+    md.cluster = generic('name', gethostname(), 'np', 8)
+    md = solve(md, 'Stressbalance')
+
+#Plot the results and save them
+    vx = md.results.StressbalanceSolution.Vx
+    vy = md.results.StressbalanceSolution.Vy
+    vz = md.results.StressbalanceSolution.Vz
+    pressure = md.results.StressbalanceSolution.Pressure
+    results.append(md.results.StressbalanceSolution)
+    minvx.append(np.min(vx[-md.mesh.numberofvertices2d:]))
+    maxvx.append(np.max(vx[-md.mesh.numberofvertices2d:]))
+
+    #Now plot vx, vy, vz and vx on a cross section
+    #   plotmodel(md, 'data', vx, 'layer  #all', md.mesh.numberoflayers, 'xlim', [0 L / 1.0e3], 'ylim', [0 L / 1.0e3], 'unit', 'km', 'figure', 2)
+    if printingflag:
+        pass
+    #           set(gcf, 'Color', 'w')
+    #           printmodel(['ismipaFSvx' num2str(L)], 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+    #           shutil.move("ismipaFSvx%d.png" % L, ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestA')
+    #   plotmodel(md, 'data', vy, 'layer  #all', md.mesh.numberoflayers, 'xlim', [0 L / 1.0e3], 'ylim', [0 L / 1.0e3], 'unit', 'km', 'figure', 3)
+    if printingflag:
+        pass
+    #           set(gcf, 'Color', 'w')
+    #           printmodel(['ismipaFSvy' num2str(L)], 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+    #           shutil.move("ismipaFSvy%d.png" % L, ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestA')
+    #   plotmodel(md, 'data', vz, 'layer  #all', md.mesh.numberoflayers, 'xlim', [0 L / 1.0e3], 'ylim', [0 L / 1.0e3], 'unit', 'km', 'figure', 4)
+    if printingflag:
+        pass
+    #           set(gcf, 'Color', 'w')
+    #           printmodel(['ismipaFSvz' num2str(L)], 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+    #           shutil.move("ismipaFSvz%d.png" % L, ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestA')
+
+    if (L == 5000.):
+        pass
+    #           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP5000.exp', 'layer', md.mesh.numberoflayers, ...
+    #                   'resolution', [10 10], 'ylim', [10 18], 'xlim', [0 5000], 'title', '', 'xlabel', '')
+    elif (L == 10000.):
+        pass
+    #           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP10000.exp', 'layer', md.mesh.numberoflayers, ...
+    #                   'resolution', [10 10], 'ylim', [10 30], 'xlim', [0 10000], 'title', '', 'xlabel', '')
+    elif (L == 20000.):
+        pass
+    #           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP20000.exp', 'layer', md.mesh.numberoflayers, ...
+    #                   'resolution', [10 10], 'ylim', [0 50], 'xlim', [0 20000], 'title', '', 'xlabel', '')
+    elif (L == 40000.):
+        pass
+    #           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP40000.exp', 'layer', md.mesh.numberoflayers, ...
+    #                   'resolution', [10 10], 'ylim', [0 80], 'xlim', [0 40000], 'title', '', 'xlabel', '')
+    elif (L == 80000.):
+        pass
+    #           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP80000.exp', 'layer', md.mesh.numberoflayers, ...
+    #                   'resolution', [10 10], 'ylim', [0 100], 'xlim', [0 80000], 'title', '', 'xlabel', '')
+    elif (L == 160000.):
+        pass
+    #           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP160000.exp', 'layer', md.mesh.numberoflayers, ...
+    #                   'resolution', [10 10], 'ylim', [0 120], 'xlim', [0 160000], 'title', '', 'xlabel', '')
+    if printingflag:
+        pass
+    # set(gcf, 'Color', 'w')
+    # printmodel(['ismipaFSvxsec' num2str(L)], 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+    # shutil.move("ismipaFSvxsec.png" % L, ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestA')
+
+    #Now plot the min and max values of vx for each size of the square
+    #plot([5 10 20 40 80 160], minvx)ylim([0 18])
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('ismipaFSminvx', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#       shutil.move('ismipaFSminvx.png', ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestA')
+#plot([5 10 20 40 80 160], maxvx)ylim([0 120])
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('ismipaFSmaxvx', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#       shutil.move('ismipaFSmaxvx.png', ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestA')
+
+#Fields and tolerances to track changes
+field_names = ['Vx80km', 'Vy80km', 'Vz80km']
+field_tolerances = [1e-12, 1e-11, 1e-12]
+field_values = []
+for result in results:
+    field_values = field_values + [result.Vx, result.Vy, result.Vz]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1103.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1103.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1103.m	(revision 27955)
@@ -0,0 +1,122 @@
+%Test Name: ISMIPBHO
+%This test is a test from the ISMP-HOM Intercomparison project.
+%Pattyn and Payne 2006
+printingflag=false;
+
+%L_list={5000.,10000.,20000.,40000.,80000.,160000.};
+L_list={80000.};
+results={};
+minvx=[];
+maxvx=[];
+
+for i=1:length(L_list),
+	L=L_list{i};
+	nx=20; %numberof nodes in x direction
+	ny=20;
+	md=model();
+	md=squaremesh(md,L,L,nx,ny);
+	md=setmask(md,'',''); %ice sheet test
+	md=parameterize(md,'../Par/ISMIPB.par');
+	md=extrude(md,10,1.);
+
+	md=setflowequation(md,'HO','all');
+
+	%Create dirichlet on the bed only
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+	pos=find(md.mesh.vertexonbase);
+	md.stressbalance.spcvx(pos)=0.;
+	md.stressbalance.spcvy(pos)=0.;
+
+	%Create MPCs to have periodic boundary conditions
+	posx=find(md.mesh.x==0.);
+	posx2=find(md.mesh.x==max(md.mesh.x));
+
+	posy=find(md.mesh.y==0. & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x)); %Don't take the same nodes two times
+	posy2=find(md.mesh.y==max(md.mesh.y) & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x));
+
+	md.stressbalance.vertex_pairing=[posx,posx2;posy,posy2];
+
+	%Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8);
+	md=solve(md,'Stressbalance');
+
+	%Plot the results and save them
+	vx=(md.results.StressbalanceSolution.Vx);
+	vy=(md.results.StressbalanceSolution.Vy);
+	vz=(md.results.StressbalanceSolution.Vz);
+	results{i}=md.results.StressbalanceSolution;
+	minvx(i)=min(vx(end-md.mesh.numberofvertices2d+1:end));
+	maxvx(i)=max(vx(end-md.mesh.numberofvertices2d+1:end));
+
+	%Now plot vx, vy, vz and vx on a cross section
+	plotmodel(md,'data',vx,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km')
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipbHOvx' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipbHOvx' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestB']);
+	end
+	plotmodel(md,'data',vz,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km')
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipbHOvz' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipbHOvz' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestB']);
+	end
+
+	if(L==5000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP5000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[6 16],'xlim',[0 5000],'title','','xlabel','')
+	elseif(L==10000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP10000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 40],'xlim',[0 10000],'title','','xlabel','')
+	elseif(L==20000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP20000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 60],'xlim',[0 20000],'title','','xlabel','')
+	elseif(L==40000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP40000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 100],'xlim',[0 40000],'title','','xlabel','')
+	elseif(L==80000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP80000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 120],'xlim',[0 80000],'title','','xlabel','')
+	elseif(L==160000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP160000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 120],'xlim',[0 160000],'title','','xlabel','')
+	end
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipbHOvxsec' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipbHOvxsec' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestB']);
+	end
+end
+
+%Now plot the min and max values of vx for each size of the square
+plot([5 10 20 40 80 160],minvx);ylim([0 14]);xlim([0 160])
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('ismipbHOminvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipbHOminvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestB']);
+end
+plot([5 10 20 40 80 160],maxvx);ylim([0 120]);xlim([0 160])
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('ismipbHOmaxvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipbHOmaxvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestB']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx80km','Vy80km','Vz80km'
+};
+field_tolerances={...
+	1e-08,1e-07,1e-07,...
+};
+field_values={};
+for i=1:1,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1103.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1103.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1103.py	(revision 27955)
@@ -0,0 +1,126 @@
+#Test Name: ISMIPBHO
+import numpy as np
+from model import *
+from socket import gethostname
+from squaremesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+"""
+This test is a test from the ISMP - HOM Intercomparison project.
+Pattyn and Payne 2006
+"""
+
+printingflag = False
+
+L_list = [80000.]
+results = []
+minvx = []
+maxvx = []
+
+for L in L_list:
+    nx = 20  #numberof nodes in x direction
+    ny = 20
+    md = model()
+    md = squaremesh(md, L, L, nx, ny)
+    md = setmask(md, '', '')  #ice sheet test
+    md = parameterize(md, '../Par/ISMIPB.py')
+    md.extrude(10, 1.)
+
+    md = setflowequation(md, 'HO', 'all')
+
+#Create dirichlet on the bed only
+    md.stressbalance.spcvx = np.nan * np.ones((md.mesh.numberofvertices))
+    md.stressbalance.spcvy = np.nan * np.ones((md.mesh.numberofvertices))
+    md.stressbalance.spcvz = np.nan * np.ones((md.mesh.numberofvertices))
+    pos = np.nonzero(md.mesh.vertexonbase)
+    md.stressbalance.spcvx[pos] = 0.
+    md.stressbalance.spcvy[pos] = 0.
+
+#Create MPCs to have periodic boundary conditions
+    posx = np.where(md.mesh.x == 0.)[0]
+    posx2 = np.where(md.mesh.x == np.max(md.mesh.x))[0]
+
+    posy = np.where(np.logical_and.reduce((md.mesh.y == 0., md.mesh.x != 0., md.mesh.x != np.max(md.mesh.x))))[0]  #Don't take the same nodes two times
+    posy2 = np.where(np.logical_and.reduce((md.mesh.y == np.max(md.mesh.y), md.mesh.x != 0., md.mesh.x != np.max(md.mesh.x))))[0]
+
+    md.stressbalance.vertex_pairing = np.vstack((np.vstack((posx + 1, posx2 + 1)).T, np.vstack((posy + 1, posy2 + 1)).T))
+
+#Compute the stressbalance
+    md.cluster = generic('name', gethostname(), 'np', 8)
+    md = solve(md, 'Stressbalance')
+
+#Plot the results and save them
+    vx = md.results.StressbalanceSolution.Vx
+    vy = md.results.StressbalanceSolution.Vy
+    vz = md.results.StressbalanceSolution.Vz
+    results.append(md.results.StressbalanceSolution)
+    minvx.append(np.min(vx[md.mesh.numberofvertices2d:]))
+    maxvx.append(np.max(vx[md.mesh.numberofvertices2d:]))
+
+#Now plot vx, vy, vz and vx on a cross section
+#   plotmodel(md, 'data', vx, 'layer  #all', md.mesh.numberoflayers, 'xlim', [0 L / 1.0e3], 'ylim', [0 L / 1.0e3], 'unit', 'km')
+    if printingflag:
+        pass
+#           set(gcf, 'Color', 'w')
+#           printmodel(['ismipbHOvx' num2str(L)], 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#           shutil.move("ismipbHOvx%d.png" % L, ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestB')
+#   plotmodel(md, 'data', vz, 'layer  #all', md.mesh.numberoflayers, 'xlim', [0 L / 1.0e3], 'ylim', [0 L / 1.0e3], 'unit', 'km')
+    if printingflag:
+        pass
+#           set(gcf, 'Color', 'w')
+#           printmodel(['ismipbHOvz' num2str(L)], 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#           shutil.move("ismipbHOvz%d.png" % L, ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestB')
+
+    if (L == 5000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP5000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [6 16], 'xlim', [0 5000], 'title', '', 'xlabel', '')
+    elif (L == 10000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP10000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [0 40], 'xlim', [0 10000], 'title', '', 'xlabel', '')
+    elif (L == 20000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP20000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [0 60], 'xlim', [0 20000], 'title', '', 'xlabel', '')
+    elif (L == 40000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP40000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [0 100], 'xlim', [0 40000], 'title', '', 'xlabel', '')
+    elif (L == 80000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP80000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [0 120], 'xlim', [0 80000], 'title', '', 'xlabel', '')
+    elif (L == 160000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP160000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [0 120], 'xlim', [0 160000], 'title', '', 'xlabel', '')
+    if printingflag:
+        pass
+#           set(gcf, 'Color', 'w')
+#           printmodel(['ismipbHOvxsec' num2str(L)], 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#           shutil.move("ismipbHOvxsec%d.png" % L, ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestB')
+
+#Now plot the min and max values of vx for each size of the square
+#plot([5 10 20 40 80 160], minvx)ylim([0 14])xlim([0 160])
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('ismipbHOminvx', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#       shutil.move('ismipbHOminvx.png', ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestB')
+#plot([5 10 20 40 80 160], maxvx)ylim([0 120])xlim([0 160])
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('ismipbHOmaxvx', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#       shutil.move('ismipbHOmaxvx.png', ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestB')
+
+#Fields and tolerances to track changes
+field_names = ['Vx80km', 'Vy80km', 'Vz80km']
+field_tolerances = [1e-08, 1e-07, 1e-07]
+field_values = []
+for result in results:
+    field_values = field_values + [result.Vx, result.Vy, result.Vz]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1104.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1104.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1104.m	(revision 27955)
@@ -0,0 +1,73 @@
+%Test Name: ISMIPBFS
+%This test is a test from the ISMP-HOM Intercomparison project.
+%Pattyn and Payne 2006
+
+%L_list={5000.,10000.,20000.,40000.,80000.,160000.};
+L_list={80000.};
+results={};
+
+for i=1:length(L_list),
+	L=L_list{i};
+	nx=20; %numberof nodes in x direction
+	ny=20;
+	md=model();
+	md=squaremesh(md,L,L,nx,ny);
+	md=setmask(md,'',''); %ice sheet test
+	md=parameterize(md,'../Par/ISMIPB.par');
+	md=extrude(md,10,1.);
+	md=setflowequation(md,'HO','all');
+
+	%Create dirichlet on the bed only
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+
+	pos=find(md.mesh.vertexonbase);
+	md.stressbalance.spcvx(pos)=0.;
+	md.stressbalance.spcvy(pos)=0.;
+
+	%Create MPCs to have periodic boundary conditions
+	posx=find(md.mesh.x==0.);
+	posx2=find(md.mesh.x==max(md.mesh.x));
+
+	posy=find(md.mesh.y==0. & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x)); %Don't take the same nodes two times
+	posy2=find(md.mesh.y==max(md.mesh.y) & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x));
+
+	md.stressbalance.vertex_pairing=[posx,posx2;posy,posy2];
+
+	%Compute the stressbalance
+	md.stressbalance.abstol=NaN;
+	md.cluster=generic('name',oshostname(),'np',8);
+	md=solve(md,'Stressbalance');
+	pos=find(md.mesh.x==0. | md.mesh.y==0. | md.mesh.x==max(md.mesh.x) | md.mesh.y==max(md.mesh.y));
+	md.stressbalance.spcvx(pos)=md.results.StressbalanceSolution.Vx(pos);
+	md.stressbalance.spcvy(pos)=md.results.StressbalanceSolution.Vy(pos);
+	md.stressbalance.vertex_pairing=[];
+	md=setflowequation(md,'FS','all');
+	md=solve(md,'Stressbalance');
+
+	%Plot the results and save them
+	vx=(md.results.StressbalanceSolution.Vx);
+	vy=(md.results.StressbalanceSolution.Vy);
+	vz=(md.results.StressbalanceSolution.Vz);
+	results{i}=md.results.StressbalanceSolution;
+
+	plotmodel(md,'data',vx,'data',vy,'data',vz,'layer#all',md.mesh.numberoflayers)
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx80km','Vy80km','Vz80km'
+};
+field_tolerances={...
+	1e-08,1e-07,1e-08,...
+};
+field_values={};
+for i=1:1,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1104.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1104.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1104.py	(revision 27955)
@@ -0,0 +1,71 @@
+#Test Name: ISMIPBFS
+import numpy as np
+from model import *
+from socket import gethostname
+from squaremesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+"""
+This test is a test from the ISMP - HOM Intercomparison project.
+Pattyn and Payne 2006
+"""
+
+L_list = [80000.]
+results = []
+
+for L in L_list:
+    nx = 20  #numberof nodes in x direction
+    ny = 20
+    md = model()
+    md = squaremesh(md, L, L, nx, ny)
+    md = setmask(md, '', '')  #ice sheet test
+    md = parameterize(md, '../Par/ISMIPB.py')
+    md.extrude(10, 1.)
+    md = setflowequation(md, 'HO', 'all')
+
+#Create dirichlet on the bed only
+    md.stressbalance.spcvx = np.nan * np.ones((md.mesh.numberofvertices))
+    md.stressbalance.spcvy = np.nan * np.ones((md.mesh.numberofvertices))
+    md.stressbalance.spcvz = np.nan * np.ones((md.mesh.numberofvertices))
+
+    pos = np.where(md.mesh.vertexonbase)
+    md.stressbalance.spcvx[pos] = 0.
+    md.stressbalance.spcvy[pos] = 0.
+
+#Create MPCs to have periodic boundary conditions
+    posx = np.where(md.mesh.x == 0.)[0]
+    posx2 = np.where(md.mesh.x == np.max(md.mesh.x))[0]
+
+    posy = np.where(np.logical_and.reduce((md.mesh.y == 0., md.mesh.x != 0., md.mesh.x != np.max(md.mesh.x))))[0]  #Don't take the same nodes two times
+    posy2 = np.where(np.logical_and.reduce((md.mesh.y == np.max(md.mesh.y), md.mesh.x != 0., md.mesh.x != np.max(md.mesh.x))))[0]
+
+    md.stressbalance.vertex_pairing = np.vstack((np.vstack((posx + 1, posx2 + 1)).T, np.vstack((posy + 1, posy2 + 1)).T))
+
+#Compute the stressbalance
+    md.stressbalance.abstol = np.nan
+    md.cluster = generic('name', gethostname(), 'np', 8)
+    md = solve(md, 'Stressbalance')
+    pos = np.where(np.logical_or.reduce((md.mesh.x == 0., md.mesh.y == 0., md.mesh.x == np.max(md.mesh.x), md.mesh.y == np.max(md.mesh.y))))
+    md.stressbalance.spcvx[pos] = md.results.StressbalanceSolution.Vx[pos][:, 0]
+    md.stressbalance.spcvy[pos] = md.results.StressbalanceSolution.Vy[pos][:, 0]
+    md.stressbalance.vertex_pairing = np.empty((0, 2), int)
+    md = setflowequation(md, 'FS', 'all')
+    md = solve(md, 'Stressbalance')
+
+#Plot the results and save them
+    vx = md.results.StressbalanceSolution.Vx
+    vy = md.results.StressbalanceSolution.Vy
+    vz = md.results.StressbalanceSolution.Vz
+    results.append(md.results.StressbalanceSolution)
+
+#       plotmodel(md, 'data', vx, 'data', vy, 'data', vz, 'layer#all', md.mesh.numberoflayers)
+
+#Fields and tolerances to track changes
+field_names = ['Vx80km', 'Vy80km', 'Vz80km']
+field_tolerances = [1e-08, 1e-07, 1e-08]
+field_values = []
+for result in results:
+    field_values = field_values + [result.Vx, result.Vy, result.Vz]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1105.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1105.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1105.m	(revision 27955)
@@ -0,0 +1,152 @@
+%Test Name: ISMIPCHO
+%This test is a test from the ISMP-HOM Intercomparison project.
+%Pattyn and Payne 2006
+printingflag=false;
+
+%L_list={5000.,10000.,20000.,40000.,80000.,160000.};
+L_list={80000.};
+results={};
+minvx=[];
+maxvx=[];
+
+for i=1:length(L_list),
+	L=L_list{i};  %in m (3 times the desired length for BC problems)  
+	nx=30; %number of nodes in x direction
+	ny=30;
+	md=model();
+	md=squaremesh(md,L,L,nx,ny);
+	md=setmask(md,'',''); %ice sheet test
+	md=parameterize(md,'../Par/ISMIPC.par');
+	md=extrude(md,10,1.);
+
+	md=setflowequation(md,'HO','all');
+
+	%Create MPCs to have periodic boundary conditions
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+
+	posx=find(md.mesh.x==0. & md.mesh.y~=0. & md.mesh.y~=L);
+	posx2=find(md.mesh.x==L & md.mesh.y~=0. & md.mesh.y~=L);
+
+	posy=find(md.mesh.y==0. & md.mesh.x~=0. & md.mesh.x~=L); %Don't take the same nodes two times
+	posy2=find(md.mesh.y==L & md.mesh.x~=0. & md.mesh.x~=L);
+
+	md.stressbalance.vertex_pairing=[posx,posx2;posy,posy2];
+
+	%Add spc on the corners
+	pos=find((md.mesh.x==0. | md.mesh.x==L) & (md.mesh.y==0. | md.mesh.y==L) & md.mesh.vertexonbase);
+	md.stressbalance.spcvx(pos)=0.;
+	md.stressbalance.spcvy(pos)=0.;
+	if(L==5000.),
+		md.stressbalance.spcvx(pos)=15.66;
+		md.stressbalance.spcvy(pos)=-0.1967;
+	elseif(L==10000.),
+		md.stressbalance.spcvx(pos)=16.04;
+		md.stressbalance.spcvy(pos)=-0.1977;
+	elseif(L==20000.),
+		md.stressbalance.spcvx(pos)=16.53;
+		md.stressbalance.spcvy(pos)=-1.27;
+	elseif(L==40000.),
+		md.stressbalance.spcvx(pos)=17.23;
+		md.stressbalance.spcvy(pos)=-3.17;
+	elseif(L==80000.),
+		md.stressbalance.spcvx(pos)=16.68;
+		md.stressbalance.spcvy(pos)=-2.69;
+	elseif(L==160000.),
+		md.stressbalance.spcvx(pos)=16.03;
+		md.stressbalance.spcvy(pos)=-1.27;
+	end
+	
+	%Spc the bed at zero for vz
+	pos=find(md.mesh.vertexonbase);
+	md.stressbalance.spcvz(pos)=0.;
+
+	%Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8);
+	md=solve(md,'Stressbalance');
+
+	%Plot the results and save them
+	vx=(md.results.StressbalanceSolution.Vx);
+	vy=(md.results.StressbalanceSolution.Vy);
+	vz=(md.results.StressbalanceSolution.Vz);
+	results{i}=md.results.StressbalanceSolution;
+	minvx(i)=min(vx(end-md.mesh.numberofvertices2d+1:end));
+	maxvx(i)=max(vx(end-md.mesh.numberofvertices2d+1:end));
+
+	%Now plot vx, vy, vz and vx on a cross section
+	plotmodel(md,'data',vx,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',2)
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipcHOvx' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipcHOvx' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestC']);
+	end
+	plotmodel(md,'data',vy,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',3)
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipcHOvy' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipcHOvy' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestC']);
+	end
+	plotmodel(md,'data',vz,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',4)
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipcHOvz' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipcHOvz' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestC']);
+	end
+
+	if(L==5000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP5000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 20],'xlim',[0 5000],'title','','xlabel','','figure',5)
+	elseif(L==10000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP10000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[13 18],'xlim',[0 10000],'title','','xlabel','')
+	elseif(L==20000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP20000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[14 22],'xlim',[0 20000],'title','','xlabel','')
+	elseif(L==40000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP40000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[10 40],'xlim',[0 40000],'title','','xlabel','')
+	elseif(L==80000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP80000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 80],'xlim',[0 80000],'title','','xlabel','')
+	elseif(L==160000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP160000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 200],'xlim',[0 160000],'title','','xlabel','')
+	end
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipcHOvxsec' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipcHOvxsec' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestC']);
+	end
+end
+
+%Now plot the min and max values of vx for each size of the square
+plot([5 10 20 40 80 160],minvx);ylim([4 18]);xlim([0 160])
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('ismipcHOminvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipcHOminvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestC']);
+end
+plot([5 10 20 40 80 160],maxvx);ylim([0 200]); xlim([0 160])
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('ismipcHOmaxvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipcHOmaxvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestC']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx80km','Vy80km','Vz80km'
+};
+field_tolerances={...
+	1e-09,1e-08,1e-08,...
+};
+field_values={};
+for i=1:1,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1105.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1105.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1105.py	(revision 27955)
@@ -0,0 +1,155 @@
+#Test Name: ISMIPCHO
+import numpy as np
+from model import *
+from socket import gethostname
+from squaremesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+"""
+This test is a test from the ISMP - HOM Intercomparison project.
+Pattyn and Payne 2006
+"""
+
+printingflag = False
+
+L_list = [80000.]
+results = []
+minvx = []
+maxvx = []
+
+for L in L_list:  #in m (3 times the desired length for BC problems)
+    nx = 30  #number of nodes in x direction
+    ny = 30
+    md = model()
+    md = squaremesh(md, L, L, nx, ny)
+    md = setmask(md, '', '')  #ice sheet test
+    md = parameterize(md, '../Par/ISMIPC.py')
+    md.extrude(10, 1.)
+
+    md = setflowequation(md, 'HO', 'all')
+
+#Create MPCs to have periodic boundary conditions
+    md.stressbalance.spcvx = np.nan * np.ones((md.mesh.numberofvertices))
+    md.stressbalance.spcvy = np.nan * np.ones((md.mesh.numberofvertices))
+    md.stressbalance.spcvz = np.nan * np.ones((md.mesh.numberofvertices))
+
+    posx = np.where(np.logical_and.reduce((md.mesh.x == 0., md.mesh.y != 0., md.mesh.y != L)))[0]
+    posx2 = np.where(np.logical_and.reduce((md.mesh.x == L, md.mesh.y != 0., md.mesh.y != L)))[0]
+
+    posy = np.where(np.logical_and.reduce((md.mesh.y == 0., md.mesh.x != 0., md.mesh.x != L)))[0]  #Don't take the same nodes two times
+    posy2 = np.where(np.logical_and.reduce((md.mesh.y == L, md.mesh.x != 0., md.mesh.x != L)))[0]
+
+    md.stressbalance.vertex_pairing = np.vstack((np.vstack((posx + 1, posx2 + 1)).T, np.vstack((posy + 1, posy2 + 1)).T))
+
+#Add spc on the corners
+    pos = np.where(np.logical_and.reduce((np.logical_or(md.mesh.x == 0., md.mesh.x == L), np.logical_or(md.mesh.y == 0., md.mesh.y == L), md.mesh.vertexonbase)))
+    md.stressbalance.spcvx[pos] = 0.
+    md.stressbalance.spcvy[pos] = 0.
+    if (L == 5000.):
+        md.stressbalance.spcvx[pos] = 15.66
+        md.stressbalance.spcvy[pos] = -0.1967
+    elif (L == 10000.):
+        md.stressbalance.spcvx[pos] = 16.04
+        md.stressbalance.spcvy[pos] = -0.1977
+    elif (L == 20000.):
+        md.stressbalance.spcvx[pos] = 16.53
+        md.stressbalance.spcvy[pos] = -1.27
+    elif (L == 40000.):
+        md.stressbalance.spcvx[pos] = 17.23
+        md.stressbalance.spcvy[pos] = -3.17
+    elif (L == 80000.):
+        md.stressbalance.spcvx[pos] = 16.68
+        md.stressbalance.spcvy[pos] = -2.69
+    elif (L == 160000.):
+        md.stressbalance.spcvx[pos] = 16.03
+        md.stressbalance.spcvy[pos] = -1.27
+
+#Spc the bed at zero for vz
+    pos = np.where(md.mesh.vertexonbase)
+    md.stressbalance.spcvz[pos] = 0.
+
+#Compute the stressbalance
+    md.cluster = generic('name', gethostname(), 'np', 8)
+    md = solve(md, 'Stressbalance')
+
+#Plot the results and save them
+    vx = md.results.StressbalanceSolution.Vx
+    vy = md.results.StressbalanceSolution.Vy
+    vz = md.results.StressbalanceSolution.Vz
+    results.append(md.results.StressbalanceSolution)
+    minvx.append(np.min(vx[-md.mesh.numberofvertices2d:]))
+    maxvx.append(np.max(vx[-md.mesh.numberofvertices2d:]))
+
+#Now plot vx, vy, vz and vx on a cross section
+#   plotmodel(md, 'data', vx, 'layer  #all', md.mesh.numberoflayers, 'xlim', [0 L / 1.0e3], 'ylim', [0 L / 1.0e3], 'unit', 'km', 'figure', 2)
+    if printingflag:
+        pass
+#           set(gcf, 'Color', 'w')
+#           printmodel(['ismipcHOvx' num2str(L)], 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#           shutil.move("ismipcHOvx%d.png" % L, ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestC')
+#   plotmodel(md, 'data', vy, 'layer  #all', md.mesh.numberoflayers, 'xlim', [0 L / 1.0e3], 'ylim', [0 L / 1.0e3], 'unit', 'km', 'figure', 3)
+    if printingflag:
+        pass
+#           set(gcf, 'Color', 'w')
+#           printmodel(['ismipcHOvy' num2str(L)], 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#           shutil.move("ismipcHOvy%d.png" % L, ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestC')
+#   plotmodel(md, 'data', vz, 'layer  #all', md.mesh.numberoflayers, 'xlim', [0 L / 1.0e3], 'ylim', [0 L / 1.0e3], 'unit', 'km', 'figure', 4)
+    if printingflag:
+        pass
+#           set(gcf, 'Color', 'w')
+#           printmodel(['ismipcHOvz' num2str(L)], 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#           shutil.move("ismipcHOvz%d.png" % L, ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestC')
+
+    if (L == 5000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP5000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [0 20], 'xlim', [0 5000], 'title', '', 'xlabel', '', 'figure', 5)
+    elif (L == 10000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP10000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [13 18], 'xlim', [0 10000], 'title', '', 'xlabel', '')
+    elif (L == 20000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP20000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [14 22], 'xlim', [0 20000], 'title', '', 'xlabel', '')
+    elif (L == 40000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP40000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [10 40], 'xlim', [0 40000], 'title', '', 'xlabel', '')
+    elif (L == 80000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP80000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [0 80], 'xlim', [0 80000], 'title', '', 'xlabel', '')
+    elif (L == 160000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP160000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [0 200], 'xlim', [0 160000], 'title', '', 'xlabel', '')
+    if printingflag:
+        pass
+#           set(gcf, 'Color', 'w')
+#           printmodel(['ismipcHOvxsec' num2str(L)], 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#           shutil.move("ismipcHOvxsec%d.png" % L, ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestC')
+
+#Now plot the min and max values of vx for each size of the square
+#plot([5 10 20 40 80 160], minvx)ylim([4 18])xlim([0 160])
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('ismipcHOminvx', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#       shutil.move('ismipcHOminvx.png', ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestC')
+#plot([5 10 20 40 80 160], maxvx)ylim([0 200]) xlim([0 160])
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('ismipcHOmaxvx', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#       shutil.move('ismipcHOmaxvx.png', ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestC')
+
+#Fields and tolerances to track changes
+field_names = ['Vx80km', 'Vy80km', 'Vz80km']
+field_tolerances = [1e-09, 1e-08, 1e-08]
+field_values = []
+for result in results:
+    field_values = field_values + [result.Vx, result.Vy, result.Vz]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1106.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1106.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1106.m	(revision 27955)
@@ -0,0 +1,71 @@
+%Test Name: ISMIPCFS
+%This test is a test from the ISMP-HOM Intercomparison project.
+%Pattyn and Payne 2006
+
+%L_list={5000.,10000.,20000.,40000.,80000.,160000.};
+L_list={80000.};
+results={};
+
+for i=1:length(L_list),
+	L=L_list{i};  
+	md=triangle(model(),['../Exp/Square_' num2str(L) '.exp'],L/10.); %size 3*L 
+	md=setmask(md,'',''); %ice sheet test
+	md=parameterize(md,'../Par/ISMIPC.par');
+	md.friction.coefficient=sqrt(md.constants.yts.*(1000.+1000.*sin(md.mesh.x*2.*pi/L).*sin(md.mesh.y*2.*pi/L)));
+	md=extrude(md,10,1.);
+
+	%Add spc on the borders
+	pos=find(md.mesh.x==0. | md.mesh.x==max(md.mesh.x) | md.mesh.y==0. | md.mesh.y==max(md.mesh.y));
+	md.stressbalance.spcvx(pos)=0.;
+	md.stressbalance.spcvy(pos)=0.;
+	if(L==5000.),
+		md.stressbalance.spcvx(pos)=15.66;
+		md.stressbalance.spcvy(pos)=-0.1967;
+	elseif(L==10000.),
+		md.stressbalance.spcvx(pos)=16.04;
+		md.stressbalance.spcvy(pos)=-0.1977;
+	elseif(L==20000.),
+		md.stressbalance.spcvx(pos)=16.53;
+		md.stressbalance.spcvy(pos)=-1.27;
+	elseif(L==40000.),
+		md.stressbalance.spcvx(pos)=17.23;
+		md.stressbalance.spcvy(pos)=-3.17;
+	elseif(L==80000.),
+		md.stressbalance.spcvx(pos)=16.68;
+		md.stressbalance.spcvy(pos)=-2.69;
+	elseif(L==160000.),
+		md.stressbalance.spcvx(pos)=16.03;
+		md.stressbalance.spcvy(pos)=-1.27;
+	end
+
+	md=setflowequation(md,'FS','all');
+
+	%Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8);
+	md=solve(md,'Stressbalance');
+
+	%Plot the results and save them
+	vx=(md.results.StressbalanceSolution.Vx);
+	vy=(md.results.StressbalanceSolution.Vy);
+	vz=(md.results.StressbalanceSolution.Vz);
+	results{i}=md.results.StressbalanceSolution;
+
+	plotmodel(md,'data',vx,'data',vy,'data',vz,'layer#all',md.mesh.numberoflayers)
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx80km','Vy80km','Vz80km'
+};
+field_tolerances={...
+	1e-11,2e-12,3e-12,...
+};
+field_values={};
+for i=1:1,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1106.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1106.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1106.py	(revision 27955)
@@ -0,0 +1,68 @@
+#Test Name: ISMIPCFS
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+"""
+This test is a test from the ISMP - HOM Intercomparison project.
+Pattyn and Payne 2006
+"""
+
+L_list = [80000]
+results = []
+
+for L in L_list:
+    md = triangle(model(), "../Exp/Square_{}.exp".format(L), L / 10.)  #size 3 * L
+    md = setmask(md, '', '')  #ice sheet test
+    md = parameterize(md, '../Par/ISMIPC.py')
+    md.friction.coefficient = np.sqrt(md.constants.yts * (1000. + 1000. * np.sin(md.mesh.x * 2. * np.pi / L) * np.sin(md.mesh.y * 2. * np.pi / L)))
+    md.extrude(10, 1.)
+
+#Add spc on the borders
+    pos = np.where(np.logical_or.reduce((md.mesh.x == 0., md.mesh.x == np.max(md.mesh.x), md.mesh.y == 0., md.mesh.y == np.max(md.mesh.y))))
+    md.stressbalance.spcvx[pos] = 0.
+    md.stressbalance.spcvy[pos] = 0.
+    if (L == 5000.):
+        md.stressbalance.spcvx[pos] = 15.66
+        md.stressbalance.spcvy[pos] = -0.1967
+    elif (L == 10000.):
+        md.stressbalance.spcvx[pos] = 16.04
+        md.stressbalance.spcvy[pos] = -0.1977
+    elif (L == 20000.):
+        md.stressbalance.spcvx[pos] = 16.53
+        md.stressbalance.spcvy[pos] = -1.27
+    elif (L == 40000.):
+        md.stressbalance.spcvx[pos] = 17.23
+        md.stressbalance.spcvy[pos] = -3.17
+    elif (L == 80000.):
+        md.stressbalance.spcvx[pos] = 16.68
+        md.stressbalance.spcvy[pos] = -2.69
+    elif (L == 160000.):
+        md.stressbalance.spcvx[pos] = 16.03
+        md.stressbalance.spcvy[pos] = -1.27
+
+    md = setflowequation(md, 'FS', 'all')
+
+#Compute the stressbalance
+    md.cluster = generic('name', gethostname(), 'np', 8)
+    md = solve(md, 'Stressbalance')
+
+#Plot the results and save them
+    vx = md.results.StressbalanceSolution.Vx
+    vy = md.results.StressbalanceSolution.Vy
+    vz = md.results.StressbalanceSolution.Vz
+    results.append(md.results.StressbalanceSolution)
+
+#   plotmodel(md, 'data', vx, 'data', vy, 'data', vz, 'layer  #all', md.mesh.numberoflayers)
+
+#Fields and tolerances to track changes
+field_names = ['Vx80km', 'Vy80km', 'Vz80km']
+field_tolerances = [1e-12, 1e-12, 1e-12]
+field_values = []
+for result in results:
+    field_values = field_values + [result.Vx, result.Vy, result.Vz]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1107.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1107.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1107.m	(revision 27955)
@@ -0,0 +1,141 @@
+%Test Name: ISMIPDHO
+%This test is a test from the ISMP-HOM Intercomparison project.
+%Pattyn and Payne 2006
+printingflag=false;
+
+%L_list={5000.,10000.,20000.,40000.,80000.,160000.};
+L_list={80000.};
+results={};
+minvx=[];
+maxvx=[];
+
+for i=1:length(L_list),
+	L=L_list{i};
+	nx=30; %numberof nodes in x direction
+	ny=30;
+	md=model();
+	md=squaremesh(md,L,L,nx,ny);
+	md=setmask(md,'',''); %ice sheet test
+	md=parameterize(md,'../Par/ISMIPD.par');
+	md=extrude(md,10,1.);
+
+	md=setflowequation(md,'HO','all');
+
+	%We need one grd on dirichlet: the 4 corners are set to zero
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+
+	%Create MPCs to have periodic boundary conditions
+	posx=find(md.mesh.x==0. & ~(md.mesh.y==0. & md.mesh.vertexonbase) & ~(md.mesh.y==L & md.mesh.vertexonbase));
+	posx2=find(md.mesh.x==max(md.mesh.x) & ~(md.mesh.y==0. & md.mesh.vertexonbase) & ~(md.mesh.y==L & md.mesh.vertexonbase));
+
+	posy=find(md.mesh.y==0. & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x)); %Don't take the same nodes two times
+	posy2=find(md.mesh.y==max(md.mesh.y) & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x));
+
+	md.stressbalance.vertex_pairing=[posx,posx2;posy,posy2];
+
+	%Add spc on the corners
+	pos=find((md.mesh.x==0. | md.mesh.x==L) & (md.mesh.y==0. | md.mesh.y==L) & md.mesh.vertexonbase);
+	md.stressbalance.spcvy(:)=0.;
+	md.stressbalance.spcvx(pos)=0.;
+	if(L==5000.),
+		md.stressbalance.spcvx(pos)=16.0912;
+	elseif(L==10000.),
+		md.stressbalance.spcvx(pos)=16.52;
+	elseif(L==20000.),
+		md.stressbalance.spcvx(pos)=17.77;
+	elseif(L==40000.),
+		md.stressbalance.spcvx(pos)=19.88;
+	elseif(L==80000.),
+		md.stressbalance.spcvx(pos)=18.65;
+	elseif(L==160000.),
+		md.stressbalance.spcvx(pos)=16.91;
+	end
+	
+	%Spc the bed at zero for vz
+	pos=find(md.mesh.vertexonbase);
+	md.stressbalance.spcvz(pos)=0.;
+
+	%Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8);
+	md=solve(md,'Stressbalance');
+
+	%Plot the results and save them
+	vx=(md.results.StressbalanceSolution.Vx);
+	vy=(md.results.StressbalanceSolution.Vy);
+	vz=(md.results.StressbalanceSolution.Vz);
+	results{i}=md.results.StressbalanceSolution;
+	minvx(i)=min(vx(end-md.mesh.numberofvertices2d+1:end));
+	maxvx(i)=max(vx(end-md.mesh.numberofvertices2d+1:end));
+
+	%Now plot vx, vy, vz and vx on a cross section
+	plotmodel(md,'data',vx,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',2)
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipdHOvx' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipdHOvx' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestD']);
+	end
+	plotmodel(md,'data',vz,'layer#all',md.mesh.numberoflayers,'xlim',[0 L/10^3],'ylim',[0 L/10^3],'unit','km','figure',3)
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipdHOvz' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipdHOvz' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestD']);
+	end
+
+	if(L==5000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP5000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 20],'xlim',[0 5000],'title','','xlabel','','figure',4)
+	elseif(L==10000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP10000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 20],'xlim',[0 10000],'title','','xlabel','','figure',4)
+	elseif(L==20000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP20000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 30],'xlim',[0 20000],'title','','xlabel','','figure',4)
+	elseif(L==40000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP40000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[10 60],'xlim',[0 40000],'title','','xlabel','','figure',4)
+	elseif(L==80000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP80000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 200],'xlim',[0 80000],'title','','xlabel','','figure',4)
+	elseif(L==160000.),
+		plotmodel(md,'data',vx,'sectionvalue','../Exp/ISMIP160000.exp','layer',md.mesh.numberoflayers,...
+			'resolution',[10 10],'ylim',[0 400],'xlim',[0 160000],'title','','xlabel','','figure',4)
+	end
+	if printingflag,
+		set(gcf,'Color','w')
+		printmodel(['ismipdHOvxsec' num2str(L)],'png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+		system(['mv ismipdHOvxsec' num2str(L) '.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestD']);
+	end
+end
+
+%Now plot the min and max values of vx for each size of the square
+plot([5 10 20 40 80 160],minvx);ylim([2 18]);xlim([0 160])
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('ismipdHOminvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipdHOminvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestD']);
+end
+plot([5 10 20 40 80 160],maxvx);ylim([0 300]);xlim([0 160])
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('ismipdHOmaxvx','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+	system(['mv ismipdHOmaxvx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestD']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx80km','Vy80km','Vz80km'
+};
+field_tolerances={...
+	1e-08,1e-08,1e-07,...
+};
+field_values={};
+for i=1:1,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1107.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1107.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1107.py	(revision 27955)
@@ -0,0 +1,146 @@
+#Test Name: ISMIPDHO
+import numpy as np
+from model import *
+from socket import gethostname
+from squaremesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+"""
+This test is a test from the ISMP - HOM Intercomparison project.
+Pattyn and Payne 2006
+"""
+
+printingflag = False
+
+L_list = [80000.]
+results = []
+minvx = []
+maxvx = []
+
+for L in L_list:
+    nx = 30  #numberof nodes in x direction
+    ny = 30
+    md = model()
+    md = squaremesh(md, L, L, nx, ny)
+    md = setmask(md, '', '')  #ice sheet test
+    md = parameterize(md, '../Par/ISMIPD.py')
+    md.extrude(10, 1.)
+
+    md = setflowequation(md, 'HO', 'all')
+
+#We need one grd on dirichlet: the 4 corners are set to zero
+    md.stressbalance.spcvx = np.nan * np.ones((md.mesh.numberofvertices))
+    md.stressbalance.spcvy = np.nan * np.ones((md.mesh.numberofvertices))
+    md.stressbalance.spcvz = np.nan * np.ones((md.mesh.numberofvertices))
+
+#Create MPCs to have periodic boundary conditions
+#   posx = find(md.mesh.x = 0. & ~(md.mesh.y = 0. & md.mesh.vertexonbase) & ~(md.mesh.y = L & md.mesh.vertexonbase))
+    posx = np.where(np.logical_and.reduce((md.mesh.x == 0., np.logical_not(np.logical_and(md.mesh.y == 0., md.mesh.vertexonbase)), np.logical_not(np.logical_and(md.mesh.y == L, md.mesh.vertexonbase)))))[0]
+#   posx2 = find(md.mesh.x = max(md.mesh.x) & ~(md.mesh.y = 0. & md.mesh.vertexonbase) & ~(md.mesh.y = L & md.mesh.vertexonbase))
+    posx2 = np.where(np.logical_and.reduce((md.mesh.x == np.max(md.mesh.x), np.logical_not(np.logical_and(md.mesh.y == 0., md.mesh.vertexonbase)), np.logical_not(np.logical_and(md.mesh.y == L, md.mesh.vertexonbase)))))[0]
+
+    posy = np.where(np.logical_and.reduce((md.mesh.y == 0., md.mesh.x != 0., md.mesh.x != np.max(md.mesh.x))))[0]  #Don't take the same nodes two times
+    posy2 = np.where(np.logical_and.reduce((md.mesh.y == np.max(md.mesh.y), md.mesh.x != 0., md.mesh.x != np.max(md.mesh.x))))[0]
+
+    md.stressbalance.vertex_pairing = np.vstack((np.vstack((posx + 1, posx2 + 1)).T, np.vstack((posy + 1, posy2 + 1)).T))
+
+#Add spc on the corners
+    pos = np.where(np.logical_and.reduce((np.logical_or(md.mesh.x == 0., md.mesh.x == L), np.logical_or(md.mesh.y == 0., md.mesh.y == L), md.mesh.vertexonbase)))
+    md.stressbalance.spcvy[:] = 0.
+    md.stressbalance.spcvx[pos] = 0.
+    if (L == 5000.):
+        md.stressbalance.spcvx[pos] = 16.0912
+    elif (L == 10000.):
+        md.stressbalance.spcvx[pos] = 16.52
+    elif (L == 20000.):
+        md.stressbalance.spcvx[pos] = 17.77
+    elif (L == 40000.):
+        md.stressbalance.spcvx[pos] = 19.88
+    elif (L == 80000.):
+        md.stressbalance.spcvx[pos] = 18.65
+    elif (L == 160000.):
+        md.stressbalance.spcvx[pos] = 16.91
+
+#Spc the bed at zero for vz
+    pos = np.where(md.mesh.vertexonbase)
+    md.stressbalance.spcvz[pos] = 0.
+
+#Compute the stressbalance
+    md.cluster = generic('name', gethostname(), 'np', 8)
+    md = solve(md, 'Stressbalance')
+
+#Plot the results and save them
+    vx = md.results.StressbalanceSolution.Vx
+    vy = md.results.StressbalanceSolution.Vy
+    vz = md.results.StressbalanceSolution.Vz
+    results.append(md.results.StressbalanceSolution)
+    minvx.append(np.min(vx[-md.mesh.numberofvertices2d:]))
+    maxvx.append(np.max(vx[-md.mesh.numberofvertices2d:]))
+
+#Now plot vx, vy, vz and vx on a cross section
+#   plotmodel(md, 'data', vx, 'layer  #all', md.mesh.numberoflayers, 'xlim', [0 L / 1.0e3], 'ylim', [0 L / 1.0e3], 'unit', 'km', 'figure', 2)
+    if printingflag:
+        pass
+#           set(gcf, 'Color', 'w')
+#           printmodel(['ismipdHOvx' num2str(L)], 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#           shutil.move("ismipdHOvx%d.png" % L, ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestD')
+#   plotmodel(md, 'data', vz, 'layer  #all', md.mesh.numberoflayers, 'xlim', [0 L / 1.0e3], 'ylim', [0 L / 1.0e3], 'unit', 'km', 'figure', 3)
+    if printingflag:
+        pass
+#           set(gcf, 'Color', 'w')
+#           printmodel(['ismipdHOvz' num2str(L)], 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#           shutil.move("ismipdHOvz%d.png" % L, ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestD')
+
+    if (L == 5000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP5000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [0 20], 'xlim', [0 5000], 'title', '', 'xlabel', '', 'figure', 4)
+    elif (L == 10000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP10000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [0 20], 'xlim', [0 10000], 'title', '', 'xlabel', '', 'figure', 4)
+    elif (L == 20000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP20000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [0 30], 'xlim', [0 20000], 'title', '', 'xlabel', '', 'figure', 4)
+    elif (L == 40000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP40000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [10 60], 'xlim', [0 40000], 'title', '', 'xlabel', '', 'figure', 4)
+    elif (L == 80000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP80000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [0 200], 'xlim', [0 80000], 'title', '', 'xlabel', '', 'figure', 4)
+    elif (L == 160000.):
+        pass
+#           plotmodel(md, 'data', vx, 'sectionvalue', '../Exp/ISMIP160000.exp', 'layer', md.mesh.numberoflayers, ...
+#                   'resolution', [10 10], 'ylim', [0 400], 'xlim', [0 160000], 'title', '', 'xlabel', '', 'figure', 4)
+    if printingflag:
+        pass
+#           set(gcf, 'Color', 'w')
+#           printmodel(['ismipdHOvxsec' num2str(L)], 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#           shutil.move("ismipdHOvxsec%d.png" % L, ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestD')
+
+#Now plot the min and max values of vx for each size of the square
+#plot([5 10 20 40 80 160], minvx)ylim([2 18])xlim([0 160])
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('ismipdHOminvx', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#       shutil.move('ismipdHOminvx.png', ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestD')
+#plot([5 10 20 40 80 160], maxvx)ylim([0 300])xlim([0 160])
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('ismipdHOmaxvx', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+#       shutil.move('ismipdHOmaxvx.png', ISSM_DIR + '/website/doc_pdf/validation/Images/ISMIP/TestD')
+
+#Fields and tolerances to track changes
+field_names = ['Vx80km', 'Vy80km', 'Vz80km']
+field_tolerances = [1e-08, 1e-08, 1e-07]
+field_values = []
+for result in results:
+    field_values = field_values + [result.Vx, result.Vy, result.Vz]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1108.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1108.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1108.m	(revision 27955)
@@ -0,0 +1,80 @@
+%Test Name: ISMIPDFS
+%This test is a test from the ISMP-HOM Intercomparison project.
+%Pattyn and Payne 2006
+
+%L_list={5000.,10000.,20000.,40000.,80000.,160000.};
+L_list={80000.};
+results={};
+
+for i=1:length(L_list),
+	L=L_list{i};
+	nx=30; %numberof nodes in x direction
+	ny=30;
+	md=model();
+	md=squaremesh(md,L,L,nx,ny);
+	md=setmask(md,'',''); %ice sheet test
+	md=parameterize(md,'../Par/ISMIPD.par');
+	md=extrude(md,10,1.);
+
+	md=setflowequation(md,'HO','all');
+
+	%We need one grid on dirichlet: the 4 corners are set to zero
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+	
+	pos=find(md.mesh.vertexonbase & (md.mesh.x==0. | md.mesh.x==max(md.mesh.x)) & (md.mesh.y==0. | md.mesh.y==max(md.mesh.y)));
+	md.stressbalance.spcvx(pos)=0.;
+	md.stressbalance.spcvy(pos)=0.;
+	md.stressbalance.spcvz(pos)=0.;
+
+	%Create MPCs to have periodic boundary conditions
+	posx=find(md.mesh.x==0.);
+	posx2=find(md.mesh.x==max(md.mesh.x));
+
+	posy=find(md.mesh.y==0. & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x)); %Don't take the same nodes two times
+	posy2=find(md.mesh.y==max(md.mesh.y) & md.mesh.x~=0. & md.mesh.x~=max(md.mesh.x));
+
+	md.stressbalance.vertex_pairing=[posx,posx2;posy,posy2];
+
+	%Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8);
+	md=solve(md,'Stressbalance');
+	md.stressbalance.reltol=NaN;
+	md.stressbalance.abstol=NaN;
+	md.stressbalance.vertex_pairing=[];
+	%We need one grd on dirichlet: the 4 corners are set to zero
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+	pos=find(md.mesh.y==0. | md.mesh.x==0. | md.mesh.x==max(md.mesh.x) | md.mesh.y==max(md.mesh.y)); %Don't take the same nodes two times
+	md.stressbalance.spcvx(pos)=md.results.StressbalanceSolution.Vx(pos);
+	md.stressbalance.spcvy(pos)=md.results.StressbalanceSolution.Vy(pos);
+	md=setflowequation(md,'FS','all');
+	md=solve(md,'Stressbalance');
+
+	%Plot the results and save them
+	vx=(md.results.StressbalanceSolution.Vx);
+	vy=(md.results.StressbalanceSolution.Vy);
+	vz=(md.results.StressbalanceSolution.Vz);
+	results{i}=md.results.StressbalanceSolution;
+
+	plotmodel(md,'data',vx,'data',vy,'data',vz,'layer#all',md.mesh.numberoflayers)
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx80km','Vy80km','Vz80km'
+};
+field_tolerances={...
+	1e-08,1e-07,1e-07,...
+};
+field_values={};
+for i=1:1,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1108.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1108.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1108.py	(revision 27955)
@@ -0,0 +1,89 @@
+#Test Name: ISMIPDFS
+import numpy as np
+from model import *
+from socket import gethostname
+from bamg import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from squaremesh import *
+
+from PythonFuncs import *
+
+"""
+This test is a test from the ISMP - HOM Intercomparison project.
+Pattyn and Payne 2006
+"""
+
+#L_list = [5000., 10000., 20000., 40000., 80000., 160000.]
+L_list = [80000.]
+results = []
+
+for L in L_list:
+    nx = 30  #numberof nodes in x direction
+    ny = 30
+    md = model()
+    md = squaremesh(md, L, L, nx, ny)
+    md = setmask(md, '', '')  #ice sheet test
+    md = parameterize(md, '../Par/ISMIPD.py')
+    md.extrude(10, 1.)
+
+    md = setflowequation(md, 'HO', 'all')
+
+#We need one grd on dirichlet: the 4 corners are set to zero
+    md.stressbalance.spcvx = np.nan * np.ones((md.mesh.numberofvertices))
+    md.stressbalance.spcvy = np.nan * np.ones((md.mesh.numberofvertices))
+    md.stressbalance.spcvz = np.nan * np.ones((md.mesh.numberofvertices))
+
+    maxx = max(md.mesh.x)
+    maxy = max(md.mesh.y)
+    posA = np.where(md.mesh.vertexonbase)
+    posB = np.unique(np.concatenate((np.where(md.mesh.x == 0.), np.where(md.mesh.x == maxx))))
+    posC = np.unique(np.concatenate((np.where(md.mesh.y == 0.), np.where(md.mesh.y == maxy))))
+    pos = np.intersect1d(np.intersect1d(posA, posB), posC)
+
+    md.stressbalance.spcvx[pos] = 0.
+    md.stressbalance.spcvy[pos] = 0.
+    md.stressbalance.spcvz[pos] = 0.
+
+#Create MPCs to have periodic boundary conditions
+    posx = np.nonzero(md.mesh.x == 0.)[0]
+    posx2 = np.nonzero(md.mesh.x == np.max(md.mesh.x))[0]
+
+    posy = np.intersect1d(np.intersect1d(np.where(md.mesh.y == 0.), np.where(md.mesh.x != 0.)), np.where(md.mesh.x != np.max(md.mesh.x)))[0]  #Don't take the same nodes two times
+    posy2 = np.intersect1d(np.intersect1d(np.where(md.mesh.y == np.max(md.mesh.y)), np.where(md.mesh.x != 0.)), np.where(md.mesh.x != np.max(md.mesh.x)))[0]
+
+    md.stressbalance.vertex_pairing = np.vstack((np.hstack((posx.reshape(-1, 1) + 1, posx2.reshape(-1, 1) + 1)), np.hstack((posy.reshape(-1, 1) + 1, posy2.reshape(-1, 1) + 1))))
+
+#Compute the stressbalance
+    md.cluster = generic('name', gethostname(), 'np', 8)
+    md.verbose = verbose('convergence', True)
+    md = solve(md, 'Stressbalance')
+    md.stressbalance.reltol = np.nan
+    md.stressbalance.abstol = np.nan
+    md.stressbalance.vertex_pairing = np.empty((0, 2))
+#We need one grid on dirichlet: the 4 corners are set to zero
+    md.stressbalance.spcvx = np.nan * np.ones((md.mesh.numberofvertices))
+    md.stressbalance.spcvy = np.nan * np.ones((md.mesh.numberofvertices))
+    md.stressbalance.spcvz = np.nan * np.ones((md.mesh.numberofvertices))
+    pos = np.nonzero(np.logical_or.reduce((md.mesh.y == 0., md.mesh.x == 0., md.mesh.x == np.max(md.mesh.x), md.mesh.y == np.max(md.mesh.y))))  #Don't take the same nodes two times
+    md.stressbalance.spcvx[pos] = np.squeeze(md.results.StressbalanceSolution.Vx[pos])
+    md.stressbalance.spcvy[pos] = np.squeeze(md.results.StressbalanceSolution.Vy[pos])
+    md = setflowequation(md, 'FS', 'all')
+    md = solve(md, 'Stressbalance')
+
+#Plot the results and save them
+    vx = md.results.StressbalanceSolution.Vx
+    vy = md.results.StressbalanceSolution.Vy
+    vz = md.results.StressbalanceSolution.Vz
+    results.append(md.results.StressbalanceSolution)
+
+#       plotmodel(md, 'data', vx, 'data', vy, 'data', vz, 'layer  #all', md.mesh.numberoflayers)
+
+#Fields and tolerances to track changes
+field_names = ['Vx80km', 'Vy80km', 'Vz80km']
+field_tolerances = [1e-08, 1e-07, 1e-07]
+field_values = []
+for result in results:
+    field_values = field_values + [result.Vx, result.Vy, result.Vz]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1109.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1109.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1109.m	(revision 27955)
@@ -0,0 +1,111 @@
+%Test Name: ISMIPE
+%This test is a test from the ISMP-HOM Intercomparison project.
+%TestE 
+%Four tests to run: - Pattyn frozen
+%                   - Stokes frozen
+%                   - Pattyn with some sliding
+%                   - Stokes with some sliding
+printingflag=false;
+results={};
+
+for i=1:4,
+	Lx=10.; %in m
+	Ly=5000.; %in m
+	nx=3; %number of nodes in x direction
+	ny=51;
+	md=model();
+	md=squaremesh(md,Lx,Ly,nx,ny);
+	md=setmask(md,'',''); %ice sheet test
+	md=parameterize(md,'../Par/ISMIPE.par');
+	md=extrude(md,10,1.);
+
+	if i==1 | i==3,
+		md=setflowequation(md,'HO','all');
+	elseif i==2 | i==4,
+		md=setflowequation(md,'FS','all');
+	end
+
+	%Create MPCs to have periodic boundary conditions
+	posx=find(md.mesh.x==0.);
+	posx2=find(md.mesh.x==max(md.mesh.x));
+	md.stressbalance.vertex_pairing=[posx,posx2];
+
+	%Create spcs on the bed 
+	pos=find(md.mesh.vertexonbase);
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvx(pos)=0.;
+	md.stressbalance.spcvy(pos)=0.;
+	md.stressbalance.spcvz(pos)=0.;
+
+	%Remove the spc where there is some sliding (case 3 and 4):
+	if i==3 | i==4,
+		pos=find(md.mesh.y/max(md.mesh.y)>=0.44 & md.mesh.y/max(md.mesh.y)<=0.5);
+		md.stressbalance.spcvx(pos)=NaN;
+		md.stressbalance.spcvy(pos)=NaN;
+		md.stressbalance.spcvz(pos)=NaN;
+	end
+
+	%Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8);
+	md=solve(md,'Stressbalance');
+
+	vx=(md.results.StressbalanceSolution.Vx);
+	vy=(md.results.StressbalanceSolution.Vy);
+	vz=(md.results.StressbalanceSolution.Vz);
+	results{i}=md.results.StressbalanceSolution;
+
+	if i==1,
+		plotmodel(md,'data',vy,'ylim',[-10 80],'layer',md.mesh.numberoflayers,'sectionvalue','../Exp/ISMIPE.exp','resolution',[10 10],'title','','xlabel','')
+		if printingflag,
+			set(gcf,'Color','w')
+			printmodel('ismipeHOvxfrozen','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipeHOvxfrozen.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestE']);
+		end
+	elseif i==2,
+		plotmodel(md,'data',vy,'ylim',[-10 80],'layer',md.mesh.numberoflayers,'sectionvalue','../Exp/ISMIPE.exp','resolution',[10 10],'title','','xlabel','')
+		if printingflag,
+			set(gcf,'Color','w')
+			printmodel('ismipeFSvxfrozen','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipeFSvxfrozen.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestE']);
+		end
+	elseif i==3,
+		plotmodel(md,'data',vy,'ylim',[-50 200],'layer',md.mesh.numberoflayers,'sectionvalue','../Exp/ISMIPE.exp','resolution',[10 10],'title','','xlabel','')
+		if printingflag,
+			set(gcf,'Color','w')
+			printmodel('ismipeHOvxsliding','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipeHOvxsliding.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestE']);
+		end
+	elseif i==4,
+		plotmodel(md,'data',vy,'ylim',[-50 200],'layer',md.mesh.numberoflayers,'sectionvalue','../Exp/ISMIPE.exp','resolution',[10 10],'title','','xlabel','')
+		if printingflag,
+			set(gcf,'Color','w')
+			printmodel('ismipeFSvxsliding','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipeFSvxsliding.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestE']);
+		end
+	end
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'VyPattynSliding','VzPattynSliding',...
+	'VxStokesSliding','VyStokesSliding','VzStokesSliding',...
+	'VyPattynFrozen','VzPattynFrozen',...
+	'VxStokesFrozen','VyStokesFrozen','VzStokesFrozen'
+};
+field_tolerances={...
+	1e-05,1e-05,...
+	1e-05,1e-06,1e-06,...
+	1e-05,1e-04,...
+	1e-05,1e-05,1e-06,...
+};
+field_values={};
+for i=1:4,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1109.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1109.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1109.py	(revision 27955)
@@ -0,0 +1,81 @@
+#Test Name: ISMIPE
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from squaremesh import *
+
+#This test is a test from the ISMP - HOM Intercomparison project.
+#TestE
+#Four tests to run: - Pattyn frozen
+# - Stokes frozen
+# - Pattyn with some sliding
+# - Stokes with some sliding
+printingflag = False
+results = []
+
+for i in range(4):
+    Lx = 10.  #in m
+    Ly = 5000.  #in m
+    nx = 3  #number of nodes in x direction
+    ny = 51
+    md = model()
+    md = squaremesh(md, Lx, Ly, nx, ny)
+    md = setmask(md, '', '')  #ice sheet test
+    md = parameterize(md, '../Par/ISMIPE.py')
+    md = md.extrude(10, 1.)
+
+    if i == 0 or i == 2:
+        md = setflowequation(md, 'HO', 'all')
+    elif i == 1 or i == 3:
+        md = setflowequation(md, 'FS', 'all')
+
+#Create MPCs to have periodic boundary conditions
+    posx = np.where(md.mesh.x == 0.)[0]
+    posx2 = np.where(md.mesh.x == max(md.mesh.x))[0]
+    md.stressbalance.vertex_pairing = np.column_stack((posx, posx2))
+
+#Create spcs on the bed
+    pos = np.where(md.mesh.vertexonbase)[0]
+    md.stressbalance.spcvx = float('NaN') * np.ones((md.mesh.numberofvertices, ))
+    md.stressbalance.spcvy = float('NaN') * np.ones((md.mesh.numberofvertices, ))
+    md.stressbalance.spcvz = float('NaN') * np.ones((md.mesh.numberofvertices, ))
+    md.stressbalance.spcvx[pos] = 0.
+    md.stressbalance.spcvy[pos] = 0.
+    md.stressbalance.spcvz[pos] = 0.
+
+#Remove the spc where there is some sliding (case 3 and 4):
+    if i == 2 or i == 3:
+        pos = np.intersect1d(np.where((md.mesh.y / max(md.mesh.y)) >= 0.44), np.where((md.mesh.y / max(md.mesh.y)) <= 0.5))[0]
+        md.stressbalance.spcvx[pos] = float('NaN')
+        md.stressbalance.spcvy[pos] = float('NaN')
+        md.stressbalance.spcvz[pos] = float('NaN')
+
+#Compute the stressbalance
+    md.cluster = generic('name', gethostname(), 'np', 8)
+    md = solve(md, 'Stressbalance')
+
+    vx = md.results.StressbalanceSolution.Vx
+    vy = md.results.StressbalanceSolution.Vy
+    vz = md.results.StressbalanceSolution.Vz
+    results[i] = md.results.StressbalanceSolution
+
+
+#Fields and tolerances to track changes
+field_names = ['VyPattynSliding', 'VzPattynSliding',
+               'VxStokesSliding', 'VyStokesSliding', 'VzStokesSliding',
+               'VyPattynFrozen', 'VzPattynFrozen',
+               'VxStokesFrozen', 'VyStokesFrozen', 'VzStokesFrozen']
+field_tolerances = [1e-05, 1e-05,
+                    1e-05, 1e-06, 1e-06,
+                    1e-05, 1e-04,
+                    1e-05, 1e-05, 1e-06]
+
+field_values = []
+for i in range(4):
+    result = results[i]
+    field_values += [result.Vx, result.Vy, result.Vz]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test111.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test111.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test111.js	(revision 27955)
@@ -0,0 +1,55 @@
+//Test Name: SquareShelfConstrainedTranHO
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs=['IceVolume'];
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names=[
+	'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface2','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','Volume1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','Volume2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','Volume3'];
+field_tolerances=[
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,1e-13,
+	1e-09,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,2e-11,
+	1e-09,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,1e-11];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](1).IceVolume),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).IceVolume),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).IceVolume),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test111.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test111.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test111.m	(revision 27955)
@@ -0,0 +1,54 @@
+%Test Name: SquareShelfConstrainedTranHO
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'IceVolume'};
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={...
+	'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface2','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','Volume1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','Volume2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','Volume3'};
+field_tolerances={...
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,1e-13,...
+	1e-09,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,2e-11,...
+	1e-09,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,1e-11};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).IceVolume),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test111.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test111.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test111.py	(revision 27955)
@@ -0,0 +1,59 @@
+#Test Name: SquareShelfConstrainedTranHO
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 200000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.requested_outputs = ['IceVolume']
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface2', 'Thickness1', 'Temperature1', 'BasalforcingsGroundediceMeltingRate1', 'Volume1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'BasalforcingsGroundediceMeltingRate2', 'Volume2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'Temperature3', 'BasalforcingsGroundediceMeltingRate3', 'Volume3']
+field_tolerances = [1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-05, 1e-13,
+                    1e-09, 1e-08, 1e-08, 1e-08, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-05, 2e-11,
+                    1e-09, 1e-08, 1e-08, 1e-08, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-05, 1e-11]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[0].IceVolume,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[1].IceVolume,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[2].IceVolume]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1110.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1110.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1110.m	(revision 27955)
@@ -0,0 +1,130 @@
+%Test Name: ISMIPF
+%This test is a test from the ISMP-HOM Intercomparison project.
+%TestF
+printingflag=false;
+results={};
+
+for i=3,  %1:4,
+	L=100000.; %in m
+	nx=30; %numberof nodes in x direction
+	ny=30;
+	md=model();
+	md=squaremesh(md,L,L,nx,ny);
+%	md=triangle(md,'../Exp/SquareISMIP.exp',5500.);
+	md=setmask(md,'',''); %ice sheet test
+	md=parameterize(md,'../Par/ISMIPF.par');
+	md=extrude(md,4,1.);
+
+	if (i==1 | i==2),
+		md=setflowequation(md,'HO','all');
+	else
+		md=setflowequation(md,'FS','all');
+	end
+
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+	if (i==1 | i==3),
+		%Create dirichlet on the bed if no slip
+		pos=find(md.mesh.vertexonbase);
+		md.stressbalance.spcvx(pos)=0.;
+		md.stressbalance.spcvy(pos)=0.;
+		md.stressbalance.spcvz(pos)=0.;
+	else
+		pos=find(md.mesh.vertexonbase & (md.mesh.x==0. | md.mesh.x==max(md.mesh.x)) & (md.mesh.y==0. | md.mesh.y==max(md.mesh.y)));
+		md.stressbalance.spcvx(pos)=100.; %because we need a dirichlet somewhere
+		md.stressbalance.spcvy(pos)=0.;
+		md.stressbalance.spcvz(pos)=0.;
+	end
+	pos=find(~md.mesh.vertexonbase);
+	md.thermal.spctemperature(pos)=255.;
+
+	%Create MPCs to have periodic boundary conditions
+	posx=find(md.mesh.x==0.);
+	posx2=find(md.mesh.x==max(md.mesh.x));
+
+	posy=find(md.mesh.y==0.);
+	posy2=find(md.mesh.y==max(md.mesh.y));
+
+	md.stressbalance.vertex_pairing=[posx,posx2;posy,posy2];
+	md.masstransport.vertex_pairing=[posx,posx2;posy,posy2];
+
+	md.timestepping.time_step=3.;
+	md.timestepping.final_time=300.;
+	md.settings.output_frequency=50;
+	md.masstransport.stabilization=1;
+	md.stressbalance.maxiter=1;
+
+	%Compute the stressbalance
+	md.cluster=generic('name',oshostname(),'np',8);
+	md.verbose=verbose('convergence',true,'solution',true);
+	md=solve(md,'Transient');
+
+	%save the results
+	results{i}=md.results.TransientSolution(end);
+
+	%Now plot vx and delta surface
+	if (i==1 | i==3),
+		plotmodel(md,'data',(md.results.TransientSolution(end).Vx),'layer',md.mesh.numberoflayers,'sectionvalue','../Exp/ISMIP100000.exp','title','','xlabel','','ylabel','Velocity (m/yr)','linewidth',3,'grid','on','unit','km','ylim',[91 100])
+	elseif (i==2 | i==4),
+		plotmodel(md,'data',(md.results.TransientSolution(end).Vx),'layer',md.mesh.numberoflayers,'sectionvalue','../Exp/ISMIP100000.exp','title','','xlabel','','ylabel','Velocity (m/yr)','linewidth',3,'grid','on','unit','km','ylim',[185 200])
+	end
+	if printingflag,
+		set(gcf,'Color','w')
+		if i==1,
+			printmodel('ismipfHOvxfrozen','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipfHOvxfrozen.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF']);
+		elseif i==2,
+			printmodel('ismipfHOvxsliding','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipfHOvxsliding.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF']);
+		elseif i==3,
+			printmodel('ismipfFSvxfrozen','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipfFSvxfrozen.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF']);
+		elseif i==4,
+			printmodel('ismipfFSvxsliding','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipfFSvxsliding.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF']);
+		end
+	end
+
+	plotmodel(md,'data',(md.results.TransientSolution(end).Surface)-md.geometry.surface,'layer',md.mesh.numberoflayers,'sectionvalue','../Exp/ISMIP100000.exp','title','','xlabel','','ylabel','Surface (m)','linewidth',3,'grid','on','unit','km','ylim',[-30 50])
+	if printingflag,
+		set(gcf,'Color','w')
+		if i==1,
+			printmodel('ismipfHOdeltasurfacefrozen','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipfHOdeltasurfacefrozen.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF']);
+		elseif i==2,
+			printmodel('ismipfHOdeltasurfacesliding','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipfHOdeltasurfacesliding.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF']);
+		elseif i==3,
+			printmodel('ismipfFSdeltasurfacefrozen','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipfFSdeltasurfacefrozen.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF']);
+		elseif i==4,
+			printmodel('ismipfFSdeltasurfacesliding','png','margin','on','marginsize',25,'frame','off','resolution',1.5,'hardcopy','off');
+			system(['mv ismipfFSdeltasurfacesliding.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF']);
+		end
+	end
+end
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'VxPattynFrozen','VyPattynFrozen','VzPattynFrozen','SurfacePattynFrozen',...
+	'VxPattynSliding','VyPattynSliding','VzPattynSliding','SurfacePattynSliding',...
+	'VxStokesFrozen','VyStokesFrozen','VzStokesFrozen','SurfaceStokesFrozen',...
+	'VxStokesSliding','VyStokesSliding','VzStokesSliding','SurfaceStokesSliding'
+};
+field_tolerances={...
+	1e-10,1e-09,1e-09,1e-10,...
+	1e-10,1e-09,1e-09,1e-10,...
+	1e-08,1e-09,1e-08,1e-09,...
+	1e-08,2e-09,1e-08,1e-09,...
+};
+field_values={};
+for i=1:4,
+	result=results{i};
+	field_values={field_values{:},...
+		(result.Vx),...
+		(result.Vy),...
+		(result.Vz),...
+		(result.Surface)-md.geometry.surface,...
+		};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1110.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1110.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1110.py	(revision 27955)
@@ -0,0 +1,154 @@
+#Test Name: ISMIPF
+import numpy as np
+from model import *
+from socket import gethostname
+from bamg import *
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from squaremesh import squaremesh
+
+#This test is a test from the ISMP - HOM Intercomparison project.
+#TestF
+printingflag = False
+results = []
+
+for i in [1]:  #range(4):
+    L = 100000.  #in m
+    nx = 30  #numberof nodes in x direction
+    ny = 30
+    md = model()
+    md = squaremesh(md, L, L, nx, ny)
+    #   md = triangle(md, '../Exp/SquareISMIP.exp', 5500.)
+    md = setmask(md, '', '')  #ice sheet test
+    md = parameterize(md, '../Par/ISMIPF.py')
+    md = md.extrude(4, 1.)
+    if (i == 0 or i == 1):
+        md = setflowequation(md, 'HO', 'all')
+    else:
+        md = setflowequation(md, 'FS', 'all')
+
+    md.stressbalance.spcvx = float('NaN') * np.ones((md.mesh.numberofvertices, ))
+    md.stressbalance.spcvy = float('NaN') * np.ones((md.mesh.numberofvertices, ))
+    md.stressbalance.spcvz = float('NaN') * np.ones((md.mesh.numberofvertices, ))
+    if (i == 0 or i == 2):
+        #Create dirichlet on the bed if no slip
+        pos = np.where(md.mesh.vertexonbase)
+        md.stressbalance.spcvx[pos] = 0.
+        md.stressbalance.spcvy[pos] = 0.
+        md.stressbalance.spcvz[pos] = 0.
+    else:
+        posA = np.where(md.mesh.vertexonbase)
+        posB = np.unique(np.hstack((np.where(md.mesh.x == 0.), np.where(md.mesh.x == np.nanmax(md.mesh.x)))))
+        posC = np.unique(np.hstack((np.where(md.mesh.y == 0.), np.where(md.mesh.y == np.nanmax(md.mesh.y)))))
+        pos = np.intersect1d(np.intersect1d(posA, posB), posC)
+        md.stressbalance.spcvx[pos] = 100.  #because we need a dirichlet somewhere
+        md.stressbalance.spcvy[pos] = 0.
+        md.stressbalance.spcvz[pos] = 0.
+
+    pos = np.where(np.logical_not(md.mesh.vertexonbase))
+    md.thermal.spctemperature[pos] = 255.
+
+    #Create MPCs to have periodic boundary conditions
+    posx = np.where(md.mesh.x == 0.)[0]
+    posx2 = np.where(md.mesh.x == max(md.mesh.x))[0]
+    # posy = np.where(np.logical_and.reduce((md.mesh.y == 0., md.mesh.x != 0., md.mesh.x != np.max(md.mesh.x))))[0]  #Don't take the same nodes two times
+    # posy2 = np.where(np.logical_and.reduce((md.mesh.y == np.max(md.mesh.y), md.mesh.x != 0., md.mesh.x != np.max(md.mesh.x))))[0]
+    posy = np.where(md.mesh.y == 0)[0]
+    posy2 = np.where(md.mesh.y == np.max(md.mesh.y))[0]
+
+    md.stressbalance.vertex_pairing = np.vstack((np.vstack((posx + 1, posx2 + 1)).T, np.vstack((posy + 1, posy2 + 1)).T))
+    md.masstransport.vertex_pairing = np.vstack((np.vstack((posx + 1, posx2 + 1)).T, np.vstack((posy + 1, posy2 + 1)).T))
+
+    md.timestepping.time_step = 3.
+    md.timestepping.final_time = 30.  #300.
+    md.settings.output_frequency = 5  #50
+    md.masstransport.stabilization = 1
+    md.stressbalance.maxiter = 1
+
+    #Compute the stressbalance
+    md.cluster = generic('name', gethostname(), 'np', 8)
+    md.verbose = verbose('convergence', True, 'solution', True)
+    md = solve(md, 'Transient')
+
+    #save the results
+    results = np.append(results, md.results.TransientSolution[-1])
+
+    #Now plot vx and delta surface
+    if (i == 0 or i == 2):
+        plotmodel(md, 'data', np.squeeze(md.results.TransientSolution[-1].Vx),
+                  'layer', md.mesh.numberoflayers,
+                  'sectionvalue', '../Exp/ISMIP100000.exp',
+                  'title', '',
+                  'xlabel', '',
+                  'ylabel', 'Velocity (m / yr)',
+                  'linewidth', 3,
+                  'grid', 'on',
+                  'unit', 'km',
+                  'ylim', [91, 100])
+    elif (i == 1 or i == 3):
+        plotmodel(md, 'data', np.squeeze(md.results.TransientSolution[-1].Vx),
+                  'layer', md.mesh.numberoflayers,
+                  'sectionvalue', '../Exp/ISMIP100000.exp',
+                  'title', '',
+                  'xlabel', '',
+                  'ylabel', 'Velocity (m / yr)',
+                  'linewidth', 3,
+                  'grid', 'on',
+                  'unit', 'km',
+                  'ylim', [185, 200])
+
+    if printingflag:
+        #set(gcf, 'Color', 'w')
+        if i == 0:
+            printmodel('ismipfHOvxfrozen', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+            #system(['mv ismipfHOvxfrozen.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF'])
+        elif i == 1:
+            printmodel('ismipfHOvxsliding', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+            #system(['mv ismipfHOvxsliding.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF'])
+        elif i == 2:
+            printmodel('ismipfFSvxfrozen', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+            #system(['mv ismipfFSvxfrozen.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF'])
+        elif i == 3:
+            printmodel('ismipfFSvxsliding', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+            #system(['mv ismipfFSvxsliding.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF'])
+
+    plotmodel(md, 'data', np.squeeze(md.results.TransientSolution[-1].Surface) - md.geometry.surface,
+              'layer', md.mesh.numberoflayers,
+              'sectionvalue', '../Exp/ISMIP100000.exp',
+              'title', '',
+              'xlabel', '',
+              'ylabel', 'Surface (m)',
+              'linewidth', 3,
+              'grid', 'on',
+              'unit', 'km',
+              'ylim', [- 30, 50])
+    if printingflag:
+        #set(gcf, 'Color', 'w')
+        if i == 0:
+            printmodel('ismipfHOdeltasurfacefrozen', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+            #system(['mv ismipfHOdeltasurfacefrozen.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF'])
+        elif i == 1:
+            printmodel('ismipfHOdeltasurfacesliding', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+            #system(['mv ismipfHOdeltasurfacesliding.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF'])
+        elif i == 2:
+            printmodel('ismipfFSdeltasurfacefrozen', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+            #system(['mv ismipfFSdeltasurfacefrozen.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF'])
+        elif i == 3:
+            printmodel('ismipfFSdeltasurfacesliding', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 1.5, 'hardcopy', 'off')
+            #system(['mv ismipfFSdeltasurfacesliding.png ' ISSM_DIR '/website/doc_pdf/validation/Images/ISMIP/TestF'])
+
+#Fields and tolerances to track changes
+field_names = ['VxPattynFrozen', 'VyPattynFrozen', 'VzPattynFrozen', 'SurfacePattynFrozen',
+               'VxPattynSliding', 'VyPattynSliding', 'VzPattynSliding', 'SurfacePattynSliding',
+               'VxStokesFrozen', 'VyStokesFrozen', 'VzStokesFrozen', 'SurfaceStokesFrozen',
+               'VxStokesSliding', 'VyStokesSliding', 'VzStokesSliding', 'SurfaceStokesSliding']
+field_tolerances = [1e-10, 1e-09, 1e-09, 1e-10,
+                    1e-10, 1e-09, 1e-09, 1e-10,
+                    1e-08, 1e-09, 1e-08, 1e-09,
+                    1e-08, 2e-09, 1e-08, 1e-09]
+field_values = []
+for i in range(4):
+    result = results[i]
+    field_values += ([result.Vx, result.Vy, result.Vz, result.Surface] - md.geometry.surface)
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test112.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test112.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test112.js	(revision 27955)
@@ -0,0 +1,16 @@
+//Test Name: SquareShelfConstrainedSurfSlop2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'SurfaceSlope');
+
+//Fields and tolerances to track changes
+field_names     =['SurfaceSlopeX','SurfaceSlopeY'];
+field_tolerances=[1e-13,1e-13];
+field_values=[
+	(md.results.SurfaceSlopeSolution[0].SurfaceSlopeX),
+	(md.results.SurfaceSlopeSolution[0].SurfaceSlopeY),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test112.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test112.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test112.m	(revision 27955)
@@ -0,0 +1,15 @@
+%Test Name: SquareShelfConstrainedSurfSlop2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'SurfaceSlope');
+
+%Fields and tolerances to track changes
+field_names     ={'SurfaceSlopeX','SurfaceSlopeY'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.SurfaceSlopeSolution.SurfaceSlopeX),...
+	(md.results.SurfaceSlopeSolution.SurfaceSlopeY),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test112.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test112.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test112.py	(revision 27955)
@@ -0,0 +1,22 @@
+#Test Name: SquareShelfConstrainedSurfSlop2d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'SurfaceSlope')
+
+#Fields and tolerances to track changes
+field_names = ['SurfaceSlopeX', 'SurfaceSlopeY']
+field_tolerances = [1e-13, 1e-13]
+field_values = [md.results.SurfaceSlopeSolution.SurfaceSlopeX,
+                md.results.SurfaceSlopeSolution.SurfaceSlopeY]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test113.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test113.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test113.js	(revision 27955)
@@ -0,0 +1,17 @@
+//Test Name: SquareShelfConstrainedSurfSlope3d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,5,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'SurfaceSlope');
+
+//Fields and tolerances to track changes
+field_names     =['SurfaceSlopeX','SurfaceSlopeY'];
+field_tolerances=[1e-13,1e-13];
+field_values=[
+	(md.results.SurfaceSlopeSolution[0].SurfaceSlopeX),
+	(md.results.SurfaceSlopeSolution[0].SurfaceSlopeY),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test113.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test113.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test113.m	(revision 27955)
@@ -0,0 +1,16 @@
+%Test Name: SquareShelfConstrainedSurfSlope3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'SurfaceSlope');
+
+%Fields and tolerances to track changes
+field_names     ={'SurfaceSlopeX','SurfaceSlopeY'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.SurfaceSlopeSolution.SurfaceSlopeX),...
+	(md.results.SurfaceSlopeSolution.SurfaceSlopeY),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test113.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test113.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test113.py	(revision 27955)
@@ -0,0 +1,23 @@
+#Test Name: SquareShelfConstrainedSurfSlope3d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(5, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'SurfaceSlope')
+
+#Fields and tolerances to track changes
+field_names = ['SurfaceSlopeX', 'SurfaceSlopeY']
+field_tolerances = [1e-13, 1e-13]
+field_values = [md.results.SurfaceSlopeSolution.SurfaceSlopeX,
+                md.results.SurfaceSlopeSolution.SurfaceSlopeY]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test114.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test114.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test114.js	(revision 27955)
@@ -0,0 +1,16 @@
+//Test Name: SquareShelfConstrainedBedSlop2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'BedSlope');
+
+//Fields and tolerances to track changes
+field_names     =['BedSlopeX','BedSlopeY'];
+field_tolerances=[1e-13,1e-13];
+field_values=[
+	(md.results.BedSlopeSolution[0].BedSlopeX),
+	(md.results.BedSlopeSolution[0].BedSlopeY),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test114.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test114.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test114.m	(revision 27955)
@@ -0,0 +1,15 @@
+%Test Name: SquareShelfConstrainedBedSlop2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'BedSlope');
+
+%Fields and tolerances to track changes
+field_names     ={'BedSlopeX','BedSlopeY'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.BedSlopeSolution.BedSlopeX),...
+	(md.results.BedSlopeSolution.BedSlopeY),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test114.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test114.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test114.py	(revision 27955)
@@ -0,0 +1,22 @@
+#Test Name: SquareShelfConstrainedBedSlop2d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'BedSlope')
+
+#Fields and tolerances to track changes
+field_names = ['BedSlopeX', 'BedSlopeY']
+field_tolerances = [1e-13, 1e-13]
+field_values = [md.results.BedSlopeSolution.BedSlopeX,
+                md.results.BedSlopeSolution.BedSlopeY]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test115.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test115.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test115.js	(revision 27955)
@@ -0,0 +1,17 @@
+//Test Name: SquareShelfConstrainedBedSlop3d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,5,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'BedSlope');
+
+//Fields and tolerances to track changes
+field_names     =['BedSlopeX','BedSlopeY'];
+field_tolerances=[1e-13,1e-13];
+field_values=[
+	(md.results.BedSlopeSolution[0].BedSlopeX),
+	(md.results.BedSlopeSolution[0].BedSlopeY),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test115.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test115.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test115.m	(revision 27955)
@@ -0,0 +1,16 @@
+%Test Name: SquareShelfConstrainedBedSlop3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'BedSlope');
+
+%Fields and tolerances to track changes
+field_names     ={'BedSlopeX','BedSlopeY'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.BedSlopeSolution.BedSlopeX),...
+	(md.results.BedSlopeSolution.BedSlopeY),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test115.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test115.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test115.py	(revision 27955)
@@ -0,0 +1,23 @@
+#Test Name: SquareShelfConstrainedBedSlop3d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(5, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'BedSlope')
+
+#Fields and tolerances to track changes
+field_names = ['BedSlopeX', 'BedSlopeY']
+field_tolerances = [1e-13, 1e-13]
+field_values = [md.results.BedSlopeSolution.BedSlopeX,
+                md.results.BedSlopeSolution.BedSlopeY]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test116.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test116.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test116.js	(revision 27955)
@@ -0,0 +1,26 @@
+//Test Name: SquareShelfConstrainedBalThic2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+//Add boundary conditions on thickness on the border
+pos=[];
+for (var i = 0; i < md.mesh.vertexonboundary.length; ++i) {
+    if ((md.mesh.vertexonboundary[i] !== 0)) {
+            pos.push(i);
+    };
+}
+
+for (var i = 0; i < pos.length; ++i) {
+    md.balancethickness.spcthickness[pos[i]] = md.geometry.thickness[pos[i]];
+}
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Balancethickness');
+
+//Fields and tolerances to track changes
+field_names     =['Thickness'];
+field_tolerances=[1e-13];
+field_values=[
+	(md.results.BalancethicknessSolution[0].Thickness),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test116.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test116.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test116.m	(revision 27955)
@@ -0,0 +1,17 @@
+%Test Name: SquareShelfConstrainedBalThic2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+%Add boundary conditions on thickness on the border
+pos=find(md.mesh.vertexonboundary);
+md.balancethickness.spcthickness(pos)=md.geometry.thickness(pos);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Balancethickness');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.BalancethicknessSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test116.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test116.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test116.py	(revision 27955)
@@ -0,0 +1,25 @@
+#Test Name: SquareShelfConstrainedBalThic2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+#Add boundary conditions on thickness on the border
+pos = np.nonzero(md.mesh.vertexonboundary)
+md.balancethickness.spcthickness[pos] = md.geometry.thickness[pos]
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Balancethickness')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-13]
+field_values = [md.results.BalancethicknessSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test119.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test119.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test119.m	(revision 27955)
@@ -0,0 +1,31 @@
+%Test Name: SquareBamgMesh
+
+%Simple mesh
+md=bamg(model(),'domain','../Exp/Square.exp','hmax',100000.);
+x1=md.mesh.x;
+y1=md.mesh.y;
+
+%hVertices
+md=bamg(model(),'domain','../Exp/Square.exp','hmax',300000.,'hVertices',[10000. 100000. 400000. 100000.]');
+x2=md.mesh.x;
+y2=md.mesh.y;
+
+%big mesh
+t0=clock;
+md=bamg(model(),'domain','../Exp/Square.exp','hmax',3000.);
+nbelements=md.mesh.numberofelements;
+if nbelements>267895-50 & nbelements<267895+50
+	nbewithinrange = 1.;
+else
+	nbewithinrange = 0.;
+end
+elapsedtime=etime(clock,t0);
+
+%Fields and tolerances to track changes
+field_names     ={'x1','y1','x2','y2','nbelements','elapsed time'};
+field_tolerances={2e-9,2e-9,1e-13,1e-13,1e-13,6.0};
+field_values={...
+	x1, y1,...
+	x2, y2,...
+	nbewithinrange,elapsedtime...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test119.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test119.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test119.py	(revision 27955)
@@ -0,0 +1,32 @@
+#Test Name: SquareBamgMesh
+import numpy as np
+import time
+from model import *
+from bamg import *
+
+
+#Simple mesh
+md = bamg(model(), 'domain', '../Exp/Square.exp', 'hmax', 100000.)
+x1 = md.mesh.x
+y1 = md.mesh.y
+
+#hVertices
+md = bamg(model(), 'domain', '../Exp/Square.exp', 'hmax', 300000., 'hVertices', np.array([10000., 100000., 400000., 100000.]).reshape(-1, 1))
+x2 = md.mesh.x
+y2 = md.mesh.y
+
+#big mesh
+t0 = time.time()
+md = bamg(model(), 'domain', '../Exp/Square.exp', 'hmax', 3000.)
+nbelements = md.mesh.numberofelements
+elapsedtime = time.time() - t0
+if nbelements > 267895 - 50 and nbelements < 267895 + 50:
+    nbewithinrange = 1.
+else:
+    nbewithinrange = 0.
+
+#Fields and tolerances to track changes
+field_names = ['x1', 'y1', 'x2', 'y2', 'nbelements', 'elapsed time']
+# NOTE: Elapsed time tolerance has been increased to 7.0 for this test, but not the MATLBAB one
+field_tolerances = [2e-9, 2e-9, 1e-13, 1e-13, 1e-13, 7.0]
+field_values = [x1, y1, x2, y2, nbewithinrange, elapsedtime]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test120.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test120.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test120.js	(revision 27955)
@@ -0,0 +1,31 @@
+//Test Name: SquareShelfConstrainedEnthalpyStea
+var md = new model();
+function zeros(...args) {
+	var array = [];
+	for (var i = 0; i < args[0]; ++i) {
+		array.push(args.length == 1 ? 0 : zeros(args.slice(1)));
+	}
+	return array;
+}
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+md.timestepping.time_step=0;
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.thermal.isenthalpy = 1;
+md.thermal.isdynamicbasalspc = 1;
+
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Thermal');
+
+//Fields and tolerances to track changes
+field_names     =['Enthalpy','Waterfraction','Temperature'];
+field_tolerances=[1e-13,3e-10,1e-13];
+field_values=[
+	(md.results.ThermalSolution[0].Enthalpy),
+	(md.results.ThermalSolution[0].Waterfraction),
+	(md.results.ThermalSolution[0].Temperature),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test120.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test120.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test120.m	(revision 27955)
@@ -0,0 +1,23 @@
+%Test Name: SquareShelfConstrainedEnthalpyStea
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=0;
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.thermal.isenthalpy = 1;
+md.thermal.isdynamicbasalspc = 1;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Enthalpy','Waterfraction','Temperature'};
+field_tolerances={1e-13,3e-10,1e-13};
+field_values={...
+	(md.results.ThermalSolution.Enthalpy),...
+	(md.results.ThermalSolution.Waterfraction),...
+	(md.results.ThermalSolution.Temperature),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test120.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test120.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test120.py	(revision 27955)
@@ -0,0 +1,31 @@
+#Test Name: SquareShelfConstrainedEnthalpyStea
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.timestepping.time_step = 0
+md.initialization.waterfraction = np.zeros(md.mesh.numberofvertices)
+md.initialization.watercolumn = np.zeros(md.mesh.numberofvertices)
+md.thermal.isenthalpy = 1
+md.thermal.isdynamicbasalspc = 1
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Thermal')
+
+#Fields and tolerances to track changes
+field_names = ['Enthalpy', 'Waterfraction', 'Temperature']
+field_tolerances = [1e-13, 2e-10, 1e-13]
+field_values = [md.results.ThermalSolution.Enthalpy,
+                md.results.ThermalSolution.Waterfraction,
+                md.results.ThermalSolution.Temperature]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1201.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1201.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1201.m	(revision 27955)
@@ -0,0 +1,68 @@
+%Test Name: EISMINTMassConservation
+%This test is a test from the EISMINT for Ice shelves Vincent Rommelaere 1996.
+printingflag=false;
+
+results={};
+
+for stabilization=1:3;
+	%The goal is to test the masstransport model
+	md=bamg(model(),'domain','../Exp/SquareEISMINT.exp','hmax',3000.);
+	md=setmask(md,'all','');
+	md=parameterize(md,'../Par/SquareEISMINT.par');
+	md.smb.mass_balance(:)=0.;
+	md=setflowequation(md,'SSA','all');
+	md.cluster=generic('name',oshostname(),'np',8);
+
+	disp('      initial velocity');
+	md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+	md.initialization.vy=-400.*ones(md.mesh.numberofvertices,1);
+
+	%Stabilization
+	if stabilization==2,
+		md.masstransport.stabilization=0;
+	else
+		md.masstransport.stabilization=stabilization;
+	end
+
+	%spc thickness
+	pos=find(md.mesh.y>199999.9);
+	times=0:1:500;
+	md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices+1,length(times));
+	md.masstransport.spcthickness(end,:)=times;
+	md.masstransport.spcthickness(pos,:)=repmat(500.+100.*sin(2.*pi*times/200.),length(pos),1);
+	if stabilization==3,
+		pos=find(isnan(md.masstransport.spcthickness)); md.masstransport.spcthickness(pos)=500.; %No NaN for DG
+	end
+
+	%solve
+	md.transient.isstressbalance=0;
+	md.settings.output_frequency=500; %keep only last step
+	md.verbose=verbose();
+	md=solve(md,'Transient');
+	results{stabilization}=(md.results.TransientSolution(end).Thickness);
+end
+
+%plot results
+[elements,x,y,z,s,h1]=SectionValues(md,results{1},'../Exp/CrossLineEISMINT.exp',100.);
+[elements,x,y,z,s,h2]=SectionValues(md,results{2},'../Exp/CrossLineEISMINT.exp',100.);
+[elements,x,y,z,s,h3]=SectionValues(md,results{3},'../Exp/CrossLineEISMINT.exp',100.);
+[elements,x,y,z,s,hth]=SectionValues(md, 500+100*sin(2*pi/200*(500-md.mesh.y/400)),'../Exp/CrossLineEISMINT.exp',100.);
+plot(s,h1,'r',s,h2,'b',s,h3,'g',s,hth,'k')
+legend('Art. diff.','No Art. diff.','D.G.','Theoretical')
+if printingflag,
+	set(gcf,'Color','w')
+	export_fig([issmdir() '/website/doc_pdf/validation/Images/EISMINT/IceShelf/eismintmasscthickness.pdf']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={ ...
+	'ThicknessArtDiff','ThicknessNoArtDiff','ThicknessDG' ...
+};
+field_tolerances={...
+	1e-13, 1e-13, 1e-13...
+};
+field_values={
+	results{1}, ...
+	results{2}, ...
+	results{3}, ...
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1201.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1201.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1201.py	(revision 27955)
@@ -0,0 +1,70 @@
+#Test Name: EISMINTMassConservation
+import numpy as np
+from model import *
+from socket import gethostname
+from bamg import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+"""
+This test is a test from the EISMINT for Ice shelves Vincent Rommelaere 1996.
+"""
+
+printingflag = False
+results = []
+
+for stabilization in range(1, 4):
+    #The goal is to test the masstransport model
+    md = bamg(model(), 'domain', '../Exp/SquareEISMINT.exp', 'hmax', 3000.)
+    md = setmask(md, 'all', '')
+    md = parameterize(md, '../Par/SquareEISMINT.py')
+    md.smb.mass_balance[:] = 0.
+    md = setflowequation(md, 'SSA', 'all')
+    md.cluster = generic('name', gethostname(), 'np', 8)
+
+    print("      initial velocity")
+    md.initialization.vx = np.zeros((md.mesh.numberofvertices))
+    md.initialization.vy = -400. * np.ones((md.mesh.numberofvertices))
+
+#Stabilization
+    if stabilization == 2:
+        md.masstransport.stabilization = 0
+    else:
+        md.masstransport.stabilization = stabilization
+
+#spc thickness
+    pos = np.where(md.mesh.y > 199999.9)[0]
+    times = np.arange(0, 501)
+    md.masstransport.spcthickness = np.nan * np.ones((md.mesh.numberofvertices + 1, np.size(times)))
+    md.masstransport.spcthickness[-1, :] = times
+    md.masstransport.spcthickness[pos, :] = 500. + 100. * np.sin(2. * np.pi * times / 200.)
+    if stabilization == 3:
+        pos = np.nonzero(np.isnan(md.masstransport.spcthickness))
+        md.masstransport.spcthickness[pos] = 500.  #No NaN for DG
+
+#solve
+    md.transient.isstressbalance = False
+    md.settings.output_frequency = 500  #keep only last step
+    md.verbose = verbose()
+    md = solve(md, 'Transient')
+    results.append(md.results.TransientSolution[-1].Thickness)
+
+#plot results
+#[elements, x, y, z, s, h1] = SectionValues(md, results[0], '../Exp/CrossLineEISMINT.exp', 100.)
+#[elements, x, y, z, s, h2] = SectionValues(md, results[1], '../Exp/CrossLineEISMINT.exp', 100.)
+#[elements, x, y, z, s, h3] = SectionValues(md, results[2], '../Exp/CrossLineEISMINT.exp', 100.)
+#[elements, x, y, z, s, hth] = SectionValues(md, 500 + 100 * sin(2 * pi / 200 * (500 - md.mesh.y / 400)), '../Exp/CrossLineEISMINT.exp', 100.)
+#plot(s, h1, 'r', s, h2, 'b', s, h3, 'g', s, hth, 'k')
+#legend('Art. diff.', 'No Art. diff.', 'D.G.', 'Theoretical')
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       export_fig([issmdir() '/website/doc_pdf/validation/Images/EISMINT/IceShelf/eismintmasscthickness.pdf'])
+
+#Fields and tolerances to track changes
+field_names = ['ThicknessArtDiff', 'ThicknessNoArtDiff', 'ThicknessDG']
+field_tolerances = [1e-13, 1e-13, 1e-13]
+field_values = [results[0], results[1], results[2]]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1202.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1202.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1202.m	(revision 27955)
@@ -0,0 +1,42 @@
+%Test Name: EISMINTStress1
+%Test on the stressbalance model and the masstransport in 2d.
+printingflag=false;
+
+%tests 3 and 4: using Glen's flow law
+md=model();
+md=triangle(md,'../Exp/SquareEISMINT.exp',3550.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareEISMINT.par');
+md=setflowequation(md,'SSA','all'); %SSA's model and 2d
+
+%Compute solution for SSA's model 
+md.cluster=generic('name',oshostname(),'np',8);
+md=solve(md,'Stressbalance');
+
+%plot results
+vx=(md.results.StressbalanceSolution.Vx);
+vy=(md.results.StressbalanceSolution.Vy);
+
+plotmodel(md,'data',vx,'contourlevels',{0,20,40,60,60,100,120,140,160,180,-20,-40,-60,-80,-100,-120,-140,-160,-180}, ...
+	'contourcolor','k')
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('eismintdiag1vx','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+	system(['mv eismintdiag1vx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+end
+
+plotmodel(md,'data',vy,'contourlevels',{-100,-200,-300,-400,-500,-600,-700,-800,-900,-1000},...
+	'contourcolor','k')
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('eismintdiag1vy','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+	system(['mv eismintdiag1vy.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	vx, ...
+	vy, ...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1202.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1202.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1202.py	(revision 27955)
@@ -0,0 +1,51 @@
+#Test Name: EISMINTStress1
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+"""
+Test on the stressbalance model and the masstransport in 2d
+"""
+
+printingflag = False
+
+#tests 3 and 4: using Glen's flow law
+md = model()
+md = triangle(md, '../Exp/SquareEISMINT.exp', 3550.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareEISMINT.py')
+md = setflowequation(md, 'SSA', 'all')  #SSA's model and 2d
+
+#Compute solution for SSA's model
+md.cluster = generic('name', gethostname(), 'np', 8)
+md = solve(md, 'Stressbalance')
+
+#plot results
+vx = md.results.StressbalanceSolution.Vx
+vy = md.results.StressbalanceSolution.Vy
+
+#plotmodel(md, 'data', vx, 'contourlevels', {0, 20, 40, 60, 60, 100, 120, 140, 160, 180, -20, -40, -60, -80, -100, -120, -140, -160, -180}, ...
+#       'contourcolor', 'k')
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('eismintdiag1vx', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 2, 'hardcopy', 'off')
+#       system(['mv eismintdiag1vx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf '])
+
+#plotmodel(md, 'data', vy, 'contourlevels', { -100, -200, -300, -400, -500, -600, -700, -800, -900, -1000}, ...
+#       'contourcolor', 'k')
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('eismintdiag1vy', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 2, 'hardcopy', 'off')
+#       system(['mv eismintdiag1vy.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf '])
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy']
+field_tolerances = [1e-13, 1e-13]
+field_values = [vx, vy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1203.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1203.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1203.m	(revision 27955)
@@ -0,0 +1,45 @@
+%Test Name: EISMINTStress2
+%Test on the stressbalance model and the masstransport in 2d
+printingflag=false;
+
+%test 5 and 6: 
+md=model();
+md=triangle(md,'../Exp/SquareEISMINT.exp',5100.); %test3
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareEISMINT.par');
+md=setflowequation(md,'SSA','all'); %SSA's model and 2d
+
+%Impose a non zero velocity on the upper boundary condition (y=max(y))
+pos=find(md.mesh.y==max(md.mesh.y));
+md.stressbalance.spcvy(pos)=400.*(((md.mesh.x(pos)-100000.)/25000.).^2-ones(size(pos,1),1)).*heaviside((1.+eps)*ones(size(pos,1),1)-((md.mesh.x(pos)-100000.)/25000.).^2);
+
+%Compute solution for SSA's model 
+md.cluster=generic('name',oshostname(),'np',8);
+md=solve(md,'Stressbalance');
+
+vx=(md.results.StressbalanceSolution.Vx);
+vy=(md.results.StressbalanceSolution.Vy);
+
+%plot results
+plotmodel(md,'data',vx,'contourlevels',{0,20,40,60,80,100,-20,-40,-60,-80,-100},...
+	'contourcolor','k')
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('eismintdiag2vx','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+	system(['mv eismintdiag2vx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+end
+plotmodel(md,'data',vy,'contourlevels',{-100,-200,-300,-400,-500,-600,-700,-800,-900,-1000},...
+	'contourcolor','k')
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('eismintdiag2vy','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+	system(['mv eismintdiag2vy.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	vx, ...
+	vy, ...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1203.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1203.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1203.py	(revision 27955)
@@ -0,0 +1,58 @@
+#Test Name: EISMINTStress2
+import numpy as np
+import sys
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+"""
+Test on the stressbalance model and the masstransport in 2d
+"""
+
+printingflag = False
+
+#test 5 and 6:
+md = model()
+md = triangle(md, '../Exp/SquareEISMINT.exp', 5100.)  #test3
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareEISMINT.py')
+md = setflowequation(md, 'SSA', 'all')  #SSA's model and 2d
+
+#Impose a non zero velocity on the upper boundary condition (y = max(y))
+pos = np.where(md.mesh.y == np.max(md.mesh.y))
+heavyside = np.where(np.logical_and(md.mesh.y == np.max(md.mesh.y), ((1. + sys.float_info.epsilon) * np.ones((np.size(md.mesh.y))) - ((md.mesh.x - 100000.) / 25000.)**2) > 0))
+md.stressbalance.spcvy[pos] = np.zeros((np.size(pos)))
+md.stressbalance.spcvy[heavyside] = 400. * (((md.mesh.x[heavyside] - 100000.) / 25000.)**2 - np.ones((np.size(heavyside))))
+
+#Compute solution for SSA's model
+md.cluster = generic('name', gethostname(), 'np', 8)
+md = solve(md, 'Stressbalance')
+
+vx = md.results.StressbalanceSolution.Vx
+vy = md.results.StressbalanceSolution.Vy
+
+#plot results
+#plotmodel(md, 'data', vx, 'contourlevels', {0, 20, 40, 60, 80, 100, -20, -40, -60, -80, -100}, ...
+#       'contourcolor', 'k')
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('eismintdiag2vx', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 2, 'hardcopy', 'off')
+#       system(['mv eismintdiag2vx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf '])
+#plotmodel(md, 'data', vy, 'contourlevels', { -100, -200, -300, -400, -500, -600, -700, -800, -900, -1000}, ...
+#       'contourcolor', 'k')
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('eismintdiag2vy', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 2, 'hardcopy', 'off')
+#       system(['mv eismintdiag2vy.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf '])
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy']
+field_tolerances = [1e-13, 1e-13]
+field_values = [vx, vy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1204.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1204.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1204.m	(revision 27955)
@@ -0,0 +1,57 @@
+%Test Name: EISMINTTran2
+%Test on the stressbalance model and the masstransport in 2d
+printingflag=false;
+
+%tests 3 and 4: using Glen's flow law
+md=model();
+md=triangle(md,'../Exp/SquareEISMINT.exp',3550.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareEISMINT.par');
+md=setflowequation(md,'SSA','all'); %SSA's model and 2d
+
+%Impose a non zero velocity on the upper boundary condition (y=max(y))
+pos=find(md.mesh.y==max(md.mesh.y));
+md.stressbalance.spcvy(pos)=400.*(((md.mesh.x(pos)-100000.)/25000.).^2-ones(size(pos,1),1)).*heaviside((1.+eps)*ones(size(pos,1),1)-((md.mesh.x(pos)-100000.)/25000.).^2);
+
+%Compute solution for SSA's model 
+md.cluster=generic('name',oshostname(),'np',8);
+md=solve(md,'Stressbalance');
+
+%plot results
+md.initialization.vx=(md.results.StressbalanceSolution.Vx);
+md.initialization.vy=(md.results.StressbalanceSolution.Vy);
+
+md.timestepping.time_step=1.;
+md.timestepping.final_time=5000.;
+md.masstransport.stabilization=1;
+md=solve(md,'Transient');
+
+plotmodel(md,'data',(md.results.TransientSolution(end).Vx))
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('eisminttrans2vx','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+	system(['mv eisminttrans2vx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+end
+
+plotmodel(md,'data',(md.results.TransientSolution(end).Vy))
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('eisminttrans2vy','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+	system(['mv eisminttrans2vy.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+end
+
+plotmodel(md,'data',(md.results.TransientSolution(end).Thickness))
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('eisminttrans2thickness','png','margin','on','marginsize',25,'frame','off','resolution',2,'hardcopy','off');
+	system(['mv eisminttrans2thickness.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf ']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Thickness'};
+field_tolerances={1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(end).Vx), ...
+	(md.results.TransientSolution(end).Vy), ...
+	(md.results.TransientSolution(end).Thickness), ...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1204.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1204.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1204.py	(revision 27955)
@@ -0,0 +1,71 @@
+#Test Name: EISMINTTran2
+import numpy as np
+import sys
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+"""
+Test on the stressbalance model and the masstransport in 2d
+"""
+
+printingflag = False
+
+#tests 3 and 4: using Glen's flow law
+md = model()
+md = triangle(md, '../Exp/SquareEISMINT.exp', 3550.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareEISMINT.py')
+md = setflowequation(md, 'SSA', 'all')  #SSA's model and 2d
+
+#Impose a non zero velocity on the upper boundary condition (y = max(y))
+pos = np.where(md.mesh.y == np.max(md.mesh.y))
+heavyside = np.where(np.logical_and(md.mesh.y == np.max(md.mesh.y), ((1. + sys.float_info.epsilon) * np.ones((np.size(md.mesh.y))) - ((md.mesh.x - 100000.) / 25000.)**2) > 0))
+md.stressbalance.spcvy[pos] = np.zeros((np.size(pos)))
+md.stressbalance.spcvy[heavyside] = 400. * (((md.mesh.x[heavyside] - 100000.) / 25000.)**2 - np.ones((np.size(heavyside))))
+
+#Compute solution for SSA's model
+md.cluster = generic('name', gethostname(), 'np', 8)
+md = solve(md, 'Stressbalance')
+
+#plot results
+md.initialization.vx = md.results.StressbalanceSolution.Vx
+md.initialization.vy = md.results.StressbalanceSolution.Vy
+
+md.timestepping.time_step = 1.
+md.timestepping.final_time = 5000.
+md.masstransport.stabilization = 1
+md = solve(md, 'Transient')
+
+#plotmodel(md, 'data', (md.results.TransientSolution(end).Vx))
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('eisminttrans2vx', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 2, 'hardcopy', 'off')
+#       system(['mv eisminttrans2vx.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf '])
+
+#plotmodel(md, 'data', (md.results.TransientSolution(end).Vy))
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('eisminttrans2vy', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 2, 'hardcopy', 'off')
+#       system(['mv eisminttrans2vy.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf '])
+
+#plotmodel(md, 'data', (md.results.TransientSolution(end).Thickness))
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('eisminttrans2thickness', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 2, 'hardcopy', 'off')
+#       system(['mv eisminttrans2thickness.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceShelf '])
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Thickness']
+field_tolerances = [1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[-1].Vx,
+                md.results.TransientSolution[-1].Vy,
+                md.results.TransientSolution[-1].Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1205.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1205.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1205.m	(revision 27955)
@@ -0,0 +1,99 @@
+%Test Name: EISMINTRoundIceSheetStaticSIA
+%The aim of this program is to compare a model with an analytical solution given in SSA EISMINT : Lessons in Ice-Sheet Modeling.
+printingflag=false;
+
+numlayers=10;
+resolution=30000.;
+
+%To begin with the numerical model
+md=model();
+md=roundmesh(md,750000.,resolution);
+md=setmask(md,'',''); %We can not test iceshelves nor ice rises with this analytical solution
+md=parameterize(md,'../Par/RoundSheetStaticEISMINT.par');
+
+%Calculation of the analytical 2d velocity field
+constant=0.3;
+vx_obs=constant/2.*md.mesh.x.*(md.geometry.thickness).^-1;
+vy_obs=constant/2.*md.mesh.y.*(md.geometry.thickness).^-1;
+vel_obs=sqrt((md.inversion.vx_obs).^2+(md.inversion.vy_obs).^2);
+
+%We extrude the model to have a 3d model
+md=extrude(md,numlayers,1.);
+md=setflowequation(md,'SIA','all');
+
+%Spc the nodes on the bed
+pos=find(md.mesh.vertexonbase);
+md.stressbalance.spcvx(pos)=0.;
+md.stressbalance.spcvy(pos)=0.;
+md.stressbalance.spcvz(pos)=0.;
+
+%Now we can solve the problem 
+md.cluster=generic('name',oshostname(),'np',8);
+md=solve(md,'Stressbalance');
+
+%Calculate the depth averaged velocity field (2d):
+vx=(md.results.StressbalanceSolution.Vx);
+vy=(md.results.StressbalanceSolution.Vy);
+vel=zeros(md.mesh.numberofvertices2d,1);
+
+for i=1:md.mesh.numberofvertices2d
+	node_vel=0.;
+	for j=1:md.mesh.numberoflayers-1
+		node_vel=node_vel+1./(2.*(md.mesh.numberoflayers-1))*...
+			(sqrt(vx(i+j*md.mesh.numberofvertices2d,1).^2+vy(i+j*md.mesh.numberofvertices2d,1).^2)+...
+			sqrt(vx(i+(j-1)*md.mesh.numberofvertices2d,1).^2+vy(i+(j-1)*md.mesh.numberofvertices2d,1).^2));
+	end
+	vel(i,1)=node_vel;
+end
+
+%Plot of the velocity from the exact and calculated solutions
+figure(1)
+set(gcf,'Position',[1 1 1580 1150])
+subplot(2,2,1)
+p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+vel,'FaceColor','interp','EdgeColor','none');
+title('Modelled velocity','FontSize',14,'FontWeight','bold')
+colorbar; 
+caxis([0 200]);
+   
+subplot(2,2,2)
+p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+vel_obs,'FaceColor','interp','EdgeColor','none');
+title('Analytical velocity','FontSize',14,'FontWeight','bold')
+colorbar; 
+caxis([0 200]);
+
+subplot(2,2,3)
+hold on;
+plot(sqrt((md.mesh.x(1:md.mesh.numberofvertices2d)).^2+(md.mesh.y(1:md.mesh.numberofvertices2d)).^2),vel,'r.');
+plot(sqrt((md.mesh.x2d).^2+(md.mesh.y2d).^2),vel_obs,'b.');
+title('Analytical vs calculated velocity','FontSize',14,'FontWeight','bold');
+xlabel('distance to the center of the icesheet [m]','FontSize',14,'FontWeight','bold');
+ylabel('velocity [m/yr]','FontSize',14,'FontWeight','bold');
+legend('calculated velocity','exact velocity');
+axis([0 750000 0 200]);
+hold off;
+
+subplot(2,2,4)
+p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+abs(vel-vel_obs)./vel_obs*100,'FaceColor','interp','EdgeColor','none');
+title('Relative misfit [%]','FontSize',14,'FontWeight','bold')
+colorbar;
+caxis([0 100]);
+
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('SIAstatic','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+	system(['mv SIAstatic.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceSheet']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={ ...
+	'Vx','Vy','Vel', ...
+};
+field_tolerances={ ...
+	1e-13,1e-13,1e-13, ...
+};
+field_values={ ...
+	vx,vy,vel, ...
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1205.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1205.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1205.py	(revision 27955)
@@ -0,0 +1,102 @@
+#Test Name: EISMINTRoundIceSheetStaticSIA
+import numpy as np
+from model import *
+from socket import gethostname
+from roundmesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+"""
+The aim of this program is to compare a model with an analytical solution given in SSA EISMINT : Lessons in Ice-Sheet Modeling.
+"""
+
+printingflag = False
+
+numlayers = 10
+resolution = 30000.
+
+#To begin with the numerical model
+md = model()
+md = roundmesh(md, 750000., resolution)
+md = setmask(md, '', '')  #We can not test iceshelves nor ice rises with this analytical solution
+md = parameterize(md, '../Par/RoundSheetStaticEISMINT.py')
+
+#Calculation of the analytical 2d velocity field
+constant = 0.3
+vx_obs = constant / 2. * md.mesh.x * (md.geometry.thickness)**- 1
+vy_obs = constant / 2. * md.mesh.y * (md.geometry.thickness)**- 1
+vel_obs = np.sqrt((md.inversion.vx_obs)**2 + (md.inversion.vy_obs)**2)
+
+#We extrude the model to have a 3d model
+md.extrude(numlayers, 1.)
+md = setflowequation(md, 'SIA', 'all')
+
+#Spc the nodes on the bed
+pos = np.where(md.mesh.vertexonbase)
+md.stressbalance.spcvx[pos] = 0.
+md.stressbalance.spcvy[pos] = 0.
+md.stressbalance.spcvz[pos] = 0.
+
+#Now we can solve the problem
+md.cluster = generic('name', gethostname(), 'np', 8)
+md = solve(md, 'Stressbalance')
+
+#Calculate the depth averaged velocity field (2d):
+vx = md.results.StressbalanceSolution.Vx
+vy = md.results.StressbalanceSolution.Vy
+vel = np.zeros((md.mesh.numberofvertices2d))
+
+for i in range(0, md.mesh.numberofvertices2d):
+    node_vel = 0.
+    for j in range(0, md.mesh.numberoflayers - 1):
+        node_vel = node_vel + 1. / (2. * (md.mesh.numberoflayers - 1)) * (np.sqrt(vx[i + (j + 1) * md.mesh.numberofvertices2d, 0]**2 + vy[i + (j + 1) * md.mesh.numberofvertices2d, 0]**2) + np.sqrt(vx[i + j * md.mesh.numberofvertices2d, 0]**2 + vy[i + j * md.mesh.numberofvertices2d, 0]**2))
+    vel[i] = node_vel
+
+#Plot of the velocity from the exact and calculated solutions
+#figure(1)
+#set(gcf, 'Position', [1 1 1580 1150])
+#subplot(2, 2, 1)
+#p = patch('Faces', md.mesh.elements2d, 'Vertices', [md.mesh.x2d md.mesh.y2d], 'FaceVertexCData', ...
+#vel, 'FaceColor', 'interp', 'EdgeColor', 'none')
+#title('Modelled velocity', 'FontSize', 14, 'FontWeight', 'bold')
+#colorbar
+#caxis([0 200])
+
+#subplot(2, 2, 2)
+#p = patch('Faces', md.mesh.elements2d, 'Vertices', [md.mesh.x2d md.mesh.y2d], 'FaceVertexCData', ...
+#vel_obs, 'FaceColor', 'interp', 'EdgeColor', 'none')
+#title('Analytical velocity', 'FontSize', 14, 'FontWeight', 'bold')
+#colorbar
+#caxis([0 200])
+
+#subplot(2, 2, 3)
+#hold on
+#plot(sqrt((md.mesh.x(1:md.mesh.numberofvertices2d)).^2 + (md.mesh.y(1:md.mesh.numberofvertices2d)).^2), vel, 'r.')
+#plot(sqrt((md.mesh.x2d).^2 + (md.mesh.y2d).^2), vel_obs, 'b.')
+#title('Analytical vs calculated velocity', 'FontSize', 14, 'FontWeight', 'bold')
+#xlabel('distance to the center of the icesheet [m]', 'FontSize', 14, 'FontWeight', 'bold')
+#ylabel('velocity [m / yr]', 'FontSize', 14, 'FontWeight', 'bold')
+#legend('calculated velocity', 'exact velocity')
+#axis([0 750000 0 200])
+#hold off
+
+#subplot(2, 2, 4)
+#p = patch('Faces', md.mesh.elements2d, 'Vertices', [md.mesh.x2d md.mesh.y2d], 'FaceVertexCData', ...
+#abs(vel - vel_obs). / vel_obs * 100, 'FaceColor', 'interp', 'EdgeColor', 'none')
+#title('Relative misfit [%]', 'FontSize', 14, 'FontWeight', 'bold')
+#colorbar
+#caxis([0 100])
+
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('SIAstatic', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 0.7, 'hardcopy', 'off')
+#       system(['mv SIAstatic.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceSheet'])
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel']
+field_tolerances = [1e-13, 1e-13, 1e-13]
+field_values = [vx, vy, vel]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1206.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1206.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1206.m	(revision 27955)
@@ -0,0 +1,98 @@
+%Test Name: EISMINTRoundIceSheetStaticHO
+%The aim of this program is to compare a model with an analytical solution given in SSA EISMINT : Lessons in Ice-Sheet Modeling.
+printingflag=false;
+
+numlayers=10;
+resolution=30000.;
+
+%To begin with the numerical model
+md=model();
+md=roundmesh(md,750000.,resolution);
+md=setmask(md,'',''); %We can not test iceshelves nor ice rises with this analytical solution
+md=parameterize(md,'../Par/RoundSheetStaticEISMINT.par');
+
+%Calculation of the analytical 2d velocity field
+constant=0.3;
+vx_obs=constant/2.*md.mesh.x.*(md.geometry.thickness).^-1;
+vy_obs=constant/2.*md.mesh.y.*(md.geometry.thickness).^-1;
+vel_obs=sqrt((md.inversion.vx_obs).^2+(md.inversion.vy_obs).^2);
+
+%We extrude the model to have a 3d model
+md=extrude(md,numlayers,1.);
+md=setflowequation(md,'HO','all');
+
+%Spc the nodes on the bed
+pos=find(md.mesh.vertexonbase);
+md.stressbalance.spcvx(pos)=0.;
+md.stressbalance.spcvy(pos)=0.;
+md.stressbalance.spcvz(pos)=0.;
+
+%Now we can solve the problem 
+md.cluster=generic('name',oshostname(),'np',8);
+md=solve(md,'Stressbalance');
+
+%Calculate the depth averaged velocity field (2d):
+vx=(md.results.StressbalanceSolution.Vx);
+vy=(md.results.StressbalanceSolution.Vy);
+vel=zeros(md.mesh.numberofvertices2d,1);
+
+for i=1:md.mesh.numberofvertices2d
+	node_vel=0.;
+	for j=1:md.mesh.numberoflayers-1
+		node_vel=node_vel+1./(2.*(md.mesh.numberoflayers-1))*...
+			(sqrt(vx(i+j*md.mesh.numberofvertices2d,1).^2+vy(i+j*md.mesh.numberofvertices2d,1).^2)+...
+			sqrt(vx(i+(j-1)*md.mesh.numberofvertices2d,1).^2+vy(i+(j-1)*md.mesh.numberofvertices2d,1).^2));
+	end
+	vel(i,1)=node_vel;
+end
+
+%Plot of the velocity from the exact and calculated solutions
+figure(1)
+subplot(2,2,1)
+p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+vel,'FaceColor','interp','EdgeColor','none');
+title('Modelled velocity','FontSize',14,'FontWeight','bold')
+colorbar; 
+caxis([0 200]);
+   
+subplot(2,2,2)
+p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+vel_obs,'FaceColor','interp','EdgeColor','none');
+title('Analytical velocity','FontSize',14,'FontWeight','bold')
+colorbar; 
+caxis([0 200]);
+
+subplot(2,2,3)
+hold on;
+plot(sqrt((md.mesh.x(1:md.mesh.numberofvertices2d)).^2+(md.mesh.y(1:md.mesh.numberofvertices2d)).^2),vel,'r.');
+plot(sqrt((md.mesh.x2d).^2+(md.mesh.y2d).^2),vel_obs,'b.');
+title('Analytical vs calculated velocity','FontSize',14,'FontWeight','bold');
+xlabel('distance to the center of the icesheet [m]','FontSize',14,'FontWeight','bold');
+ylabel('velocity [m/yr]','FontSize',14,'FontWeight','bold');
+legend('calculated velocity','exact velocity');
+axis([0 750000 0 200]);
+hold off;
+
+subplot(2,2,4)
+p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+abs(vel-vel_obs)./vel_obs*100,'FaceColor','interp','EdgeColor','none');
+title('Relative misfit [%]','FontSize',14,'FontWeight','bold')
+colorbar;
+caxis([0 100]);
+
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('HOstatic','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+	system(['mv HOstatic.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceSheet']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={ ...
+	'Vx','Vy','Vel', ...
+};
+field_tolerances={ ...
+	1e-12,1e-12,1e-12, ...
+};
+field_values={ ...
+	vx,vy,vel, ...
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1206.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1206.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1206.py	(revision 27955)
@@ -0,0 +1,101 @@
+#Test Name: EISMINTRoundIceSheetStaticHO
+import numpy as np
+from model import *
+from socket import gethostname
+from roundmesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+"""
+The aim of this program is to compare a model with an analytical solution given in SSA EISMINT : Lessons in Ice-Sheet Modeling.
+"""
+
+printingflag = False
+
+numlayers = 10
+resolution = 30000.
+
+#To begin with the numerical model
+md = model()
+md = roundmesh(md, 750000., resolution)
+md = setmask(md, '', '')  #We can not test iceshelves nor ice rises with this analytical solution
+md = parameterize(md, '../Par/RoundSheetStaticEISMINT.py')
+
+#Calculation of the analytical 2d velocity field
+constant = 0.3
+vx_obs = constant / 2. * md.mesh.x * (md.geometry.thickness)**- 1
+vy_obs = constant / 2. * md.mesh.y * (md.geometry.thickness)**- 1
+vel_obs = np.sqrt((md.inversion.vx_obs)**2 + (md.inversion.vy_obs)**2)
+
+#We extrude the model to have a 3d model
+md.extrude(numlayers, 1.)
+md = setflowequation(md, 'HO', 'all')
+
+#Spc the nodes on the bed
+pos = np.where(md.mesh.vertexonbase)
+md.stressbalance.spcvx[pos] = 0.
+md.stressbalance.spcvy[pos] = 0.
+md.stressbalance.spcvz[pos] = 0.
+
+#Now we can solve the problem
+md.cluster = generic('name', gethostname(), 'np', 8)
+md = solve(md, 'Stressbalance')
+
+#Calculate the depth averaged velocity field (2d):
+vx = md.results.StressbalanceSolution.Vx
+vy = md.results.StressbalanceSolution.Vy
+vel = np.zeros((md.mesh.numberofvertices2d))
+
+for i in range(0, md.mesh.numberofvertices2d):
+    node_vel = 0.
+    for j in range(0, md.mesh.numberoflayers - 1):
+        node_vel = node_vel + 1. / (2. * (md.mesh.numberoflayers - 1)) * (np.sqrt(vx[i + (j + 1) * md.mesh.numberofvertices2d, 0]**2 + vy[i + (j + 1) * md.mesh.numberofvertices2d, 0]**2) + np.sqrt(vx[i + j * md.mesh.numberofvertices2d, 0]**2 + vy[i + j * md.mesh.numberofvertices2d, 0]**2))
+    vel[i] = node_vel
+
+#Plot of the velocity from the exact and calculated solutions
+#figure(1)
+#subplot(2, 2, 1)
+#p = patch('Faces', md.mesh.elements2d, 'Vertices', [md.mesh.x2d md.mesh.y2d], 'FaceVertexCData', ...
+#vel, 'FaceColor', 'interp', 'EdgeColor', 'none')
+#title('Modelled velocity', 'FontSize', 14, 'FontWeight', 'bold')
+#colorbar
+#caxis([0 200])
+
+#subplot(2, 2, 2)
+#p = patch('Faces', md.mesh.elements2d, 'Vertices', [md.mesh.x2d md.mesh.y2d], 'FaceVertexCData', ...
+#vel_obs, 'FaceColor', 'interp', 'EdgeColor', 'none')
+#title('Analytical velocity', 'FontSize', 14, 'FontWeight', 'bold')
+#colorbar
+#caxis([0 200])
+
+#subplot(2, 2, 3)
+#hold on
+#plot(sqrt((md.mesh.x(1:md.mesh.numberofvertices2d)).^2 + (md.mesh.y(1:md.mesh.numberofvertices2d)).^2), vel, 'r.')
+#plot(sqrt((md.mesh.x2d).^2 + (md.mesh.y2d).^2), vel_obs, 'b.')
+#title('Analytical vs calculated velocity', 'FontSize', 14, 'FontWeight', 'bold')
+#xlabel('distance to the center of the icesheet [m]', 'FontSize', 14, 'FontWeight', 'bold')
+#ylabel('velocity [m / yr]', 'FontSize', 14, 'FontWeight', 'bold')
+#legend('calculated velocity', 'exact velocity')
+#axis([0 750000 0 200])
+#hold off
+
+#subplot(2, 2, 4)
+#p = patch('Faces', md.mesh.elements2d, 'Vertices', [md.mesh.x2d md.mesh.y2d], 'FaceVertexCData', ...
+#abs(vel - vel_obs). / vel_obs * 100, 'FaceColor', 'interp', 'EdgeColor', 'none')
+#title('Relative misfit [%]', 'FontSize', 14, 'FontWeight', 'bold')
+#colorbar
+#caxis([0 100])
+
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('HOstatic', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 0.7, 'hardcopy', 'off')
+#       system(['mv HOstatic.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceSheet'])
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel']
+field_tolerances = [1e-12, 1e-12, 1e-12]
+field_values = [vx, vy, vel]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1207.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1207.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1207.m	(revision 27955)
@@ -0,0 +1,98 @@
+%Test Name: EISMINTRoundIceSheetStaticFS
+%The aim of this program is to compare a model with an analytical solution given in SSA EISMINT : Lessons in Ice-Sheet Modeling.
+printingflag=false;
+
+numlayers=10;
+resolution=30000.;
+
+%To begin with the numerical model
+md=model();
+md=roundmesh(md,750000.,resolution);
+md=setmask(md,'',''); %We can not test iceshelves nor ice rises with this analytical solution
+md=parameterize(md,'../Par/RoundSheetStaticEISMINT.par');
+
+%Calculation of the analytical 2d velocity field
+constant=0.3;
+vx_obs=constant/2.*md.mesh.x.*(md.geometry.thickness).^-1;
+vy_obs=constant/2.*md.mesh.y.*(md.geometry.thickness).^-1;
+vel_obs=sqrt((md.inversion.vx_obs).^2+(md.inversion.vy_obs).^2);
+
+%We extrude the model to have a 3d model
+md=extrude(md,numlayers,1.);
+md=setflowequation(md,'FS','all');
+
+%Spc the nodes on the bed
+pos=find(md.mesh.vertexonbase);
+md.stressbalance.spcvx(pos)=0.;
+md.stressbalance.spcvy(pos)=0.;
+md.stressbalance.spcvz(pos)=0.;
+
+%Now we can solve the problem 
+md.cluster=generic('name',oshostname(),'np',8);
+md=solve(md,'Stressbalance');
+
+%Calculate the depth averaged velocity field (2d):
+vx=(md.results.StressbalanceSolution.Vx);
+vy=(md.results.StressbalanceSolution.Vy);
+vel=zeros(md.mesh.numberofvertices2d,1);
+
+for i=1:md.mesh.numberofvertices2d
+	node_vel=0.;
+	for j=1:md.mesh.numberoflayers-1
+		node_vel=node_vel+1./(2.*(md.mesh.numberoflayers-1))*...
+			(sqrt(vx(i+j*md.mesh.numberofvertices2d,1).^2+vy(i+j*md.mesh.numberofvertices2d,1).^2)+...
+			sqrt(vx(i+(j-1)*md.mesh.numberofvertices2d,1).^2+vy(i+(j-1)*md.mesh.numberofvertices2d,1).^2));
+	end
+	vel(i,1)=node_vel;
+end
+
+%Plot of the velocity from the exact and calculated solutions
+figure(1)
+subplot(2,2,1)
+p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+vel,'FaceColor','interp','EdgeColor','none');
+title('Modelled velocity','FontSize',14,'FontWeight','bold')
+colorbar; 
+caxis([0 200]);
+   
+subplot(2,2,2)
+p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+vel_obs,'FaceColor','interp','EdgeColor','none');
+title('Analytical velocity','FontSize',14,'FontWeight','bold')
+colorbar; 
+caxis([0 200]);
+
+subplot(2,2,3)
+hold on;
+plot(sqrt((md.mesh.x(1:md.mesh.numberofvertices2d)).^2+(md.mesh.y(1:md.mesh.numberofvertices2d)).^2),vel,'r.');
+plot(sqrt((md.mesh.x2d).^2+(md.mesh.y2d).^2),vel_obs,'b.');
+title('Analytical vs calculated velocity','FontSize',14,'FontWeight','bold');
+xlabel('distance to the center of the icesheet [m]','FontSize',14,'FontWeight','bold');
+ylabel('velocity [m/yr]','FontSize',14,'FontWeight','bold');
+legend('calculated velocity','exact velocity');
+axis([0 750000 0 200]);
+hold off;
+
+subplot(2,2,4)
+p=patch('Faces',md.mesh.elements2d,'Vertices',[md.mesh.x2d md.mesh.y2d],'FaceVertexCData',...
+abs(vel-vel_obs)./vel_obs*100,'FaceColor','interp','EdgeColor','none');
+title('Relative misfit [%]','FontSize',14,'FontWeight','bold')
+colorbar;
+caxis([0 100]);
+
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('FSstatic','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+	system(['mv FSstatic.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceSheet']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={ ...
+	'Vx','Vy','Vel', ...
+};
+field_tolerances={ ...
+	1e-12,1e-12,1e-12, ...
+};
+field_values={ ...
+	vx,vy,vel, ...
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1207.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1207.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1207.py	(revision 27955)
@@ -0,0 +1,101 @@
+#Test Name: EISMINTRoundIceSheetStaticFS
+import numpy as np
+from model import *
+from socket import gethostname
+from roundmesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+"""
+The aim of this program is to compare a model with an analytical solution given in SSA EISMINT : Lessons in Ice-Sheet Modeling.
+"""
+
+printingflag = False
+
+numlayers = 10
+resolution = 30000.
+
+#To begin with the numerical model
+md = model()
+md = roundmesh(md, 750000., resolution)
+md = setmask(md, '', '')  #We can not test iceshelves nor ice rises with this analytical solution
+md = parameterize(md, '../Par/RoundSheetStaticEISMINT.py')
+
+#Calculation of the analytical 2d velocity field
+constant = 0.3
+vx_obs = constant / 2. * md.mesh.x * (md.geometry.thickness)**- 1
+vy_obs = constant / 2. * md.mesh.y * (md.geometry.thickness)**- 1
+vel_obs = np.sqrt((md.inversion.vx_obs)**2 + (md.inversion.vy_obs)**2)
+
+#We extrude the model to have a 3d model
+md.extrude(numlayers, 1.)
+md = setflowequation(md, 'FS', 'all')
+
+#Spc the nodes on the bed
+pos = np.where(md.mesh.vertexonbase)
+md.stressbalance.spcvx[pos] = 0.
+md.stressbalance.spcvy[pos] = 0.
+md.stressbalance.spcvz[pos] = 0.
+
+#Now we can solve the problem
+md.cluster = generic('name', gethostname(), 'np', 8)
+md = solve(md, 'Stressbalance')
+
+#Calculate the depth averaged velocity field (2d):
+vx = md.results.StressbalanceSolution.Vx
+vy = md.results.StressbalanceSolution.Vy
+vel = np.zeros((md.mesh.numberofvertices2d))
+
+for i in range(0, md.mesh.numberofvertices2d):
+    node_vel = 0.
+    for j in range(0, md.mesh.numberoflayers - 1):
+        node_vel = node_vel + (1. / (2. * (md.mesh.numberoflayers - 1)) * (np.sqrt(vx[i + (j + 1) * md.mesh.numberofvertices2d, 0]**2 + vy[i + (j + 1) * md.mesh.numberofvertices2d, 0]**2) + np.sqrt(vx[i + j * md.mesh.numberofvertices2d, 0]**2 + vy[i + j * md.mesh.numberofvertices2d, 0]**2)))
+    vel[i] = node_vel
+
+#Plot of the velocity from the exact and calculated solutions
+#figure(1)
+#subplot(2, 2, 1)
+#p = patch('Faces', md.mesh.elements2d, 'Vertices', [md.mesh.x2d md.mesh.y2d], 'FaceVertexCData', ...
+#vel, 'FaceColor', 'interp', 'EdgeColor', 'none')
+#title('Modelled velocity', 'FontSize', 14, 'FontWeight', 'bold')
+#colorbar
+#caxis([0 200])
+
+#subplot(2, 2, 2)
+#p = patch('Faces', md.mesh.elements2d, 'Vertices', [md.mesh.x2d md.mesh.y2d], 'FaceVertexCData', ...
+#vel_obs, 'FaceColor', 'interp', 'EdgeColor', 'none')
+#title('Analytical velocity', 'FontSize', 14, 'FontWeight', 'bold')
+#colorbar
+#caxis([0 200])
+
+#subplot(2, 2, 3)
+#hold on
+#plot(sqrt((md.mesh.x(1:md.mesh.numberofvertices2d)).^2 + (md.mesh.y(1:md.mesh.numberofvertices2d)).^2), vel, 'r.')
+#plot(sqrt((md.mesh.x2d).^2 + (md.mesh.y2d).^2), vel_obs, 'b.')
+#title('Analytical vs calculated velocity', 'FontSize', 14, 'FontWeight', 'bold')
+#xlabel('distance to the center of the icesheet [m]', 'FontSize', 14, 'FontWeight', 'bold')
+#ylabel('velocity [m / yr]', 'FontSize', 14, 'FontWeight', 'bold')
+#legend('calculated velocity', 'exact velocity')
+#axis([0 750000 0 200])
+#hold off
+
+#subplot(2, 2, 4)
+#p = patch('Faces', md.mesh.elements2d, 'Vertices', [md.mesh.x2d md.mesh.y2d], 'FaceVertexCData', ...
+#abs(vel - vel_obs). / vel_obs * 100, 'FaceColor', 'interp', 'EdgeColor', 'none')
+#title('Relative misfit [%]', 'FontSize', 14, 'FontWeight', 'bold')
+#colorbar
+#caxis([0 100])
+
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('FSstatic', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 0.7, 'hardcopy', 'off')
+#       system(['mv FSstatic.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT/IceSheet'])
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel']
+field_tolerances = [1e-12, 1e-12, 1e-12]
+field_values = [vx, vy, vel]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1208.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1208.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1208.m	(revision 27955)
@@ -0,0 +1,46 @@
+%Test Name: EISMINTA
+%EISMINT benchmark experiment A
+numlayers=8;
+resolution=50000.;
+
+%To begin with the numerical model
+md=triangle(model(),'../Exp/SquareEISMINT750000.exp',resolution);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/RoundSheetEISMINT.par');
+
+%We extrude the model to have a 3d model
+md=extrude(md,numlayers,1.);
+md=setflowequation(md,'SIA','all');
+
+%Spc the nodes on the bed
+pos=find(md.mesh.vertexonbase);
+md.stressbalance.spcvx(pos)=0.;
+md.stressbalance.spcvy(pos)=0.;
+md.stressbalance.spcvz(pos)=0.;
+
+%Adapt the time steps to the resolution
+md.timestepping.time_step=15.;
+md.settings.output_frequency=500;
+md.timestepping.final_time=30000.;
+md.masstransport.stabilization=1;
+md.thermal.stabilization=1;
+
+%Now we can solve the problem 
+md.cluster=generic('name',oshostname(),'np',8);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Thickness','Base','Surface','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-08,1e-08,1e-07,1e-08,1e-08,1e-08,1e-08,1e-08,1e-07,3e-07};
+field_values={...
+	(md.results.TransientSolution(end).Vx),...
+	(md.results.TransientSolution(end).Vy),...
+	(md.results.TransientSolution(end).Vz),...
+	(md.results.TransientSolution(end).Vel),...
+	(md.results.TransientSolution(end).Pressure),...
+	(md.results.TransientSolution(end).Thickness),...
+	(md.results.TransientSolution(end).Base),...
+	(md.results.TransientSolution(end).Surface),...
+	(md.results.TransientSolution(end).Temperature),...
+	(md.results.TransientSolution(end).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1208.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1208.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1208.py	(revision 27955)
@@ -0,0 +1,57 @@
+#Test Name: EISMINTA
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+"""
+EISMINT benchmark experiment A
+"""
+
+numlayers = 8
+resolution = 50000.
+
+#To begin with the numerical model
+md = triangle(model(), '../Exp/SquareEISMINT750000.exp', resolution)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/RoundSheetEISMINT.py')
+
+#We extrude the model to have a 3d model
+md.extrude(numlayers, 1.)
+md = setflowequation(md, 'SIA', 'all')
+
+#Spc the nodes on the bed
+pos = np.where(md.mesh.vertexonbase)
+md.stressbalance.spcvx[pos] = 0.
+md.stressbalance.spcvy[pos] = 0.
+md.stressbalance.spcvz[pos] = 0.
+
+#Adapt the time steps to the resolution
+md.timestepping.time_step = 15.
+md.settings.output_frequency = 500
+md.timestepping.final_time = 30000.
+md.masstransport.stabilization = 1
+md.thermal.stabilization = 1
+
+#Now we can solve the problem
+md.cluster = generic('name', gethostname(), 'np', 8)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure', 'Thickness', 'Base', 'Surface', 'Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-08, 1e-08, 1e-07, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-07, 1e-07]
+field_values = [md.results.TransientSolution[-1].Vx,
+                md.results.TransientSolution[-1].Vy,
+                md.results.TransientSolution[-1].Vz,
+                md.results.TransientSolution[-1].Vel,
+                md.results.TransientSolution[-1].Pressure,
+                md.results.TransientSolution[-1].Thickness,
+                md.results.TransientSolution[-1].Base,
+                md.results.TransientSolution[-1].Surface,
+                md.results.TransientSolution[-1].Temperature,
+                md.results.TransientSolution[-1].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test121.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test121.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test121.js	(revision 27955)
@@ -0,0 +1,42 @@
+//Test Name: SquareShelfConstrainedEnthalpyTran
+function zeros(...args) {
+	var array = [];
+	for (var i = 0; i < args[0]; ++i) {
+		array.push(args.length == 1 ? 0 : zeros(args.slice(1)));
+	}
+	return array;
+}
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Enthalpy1','Waterfraction1','Temperature1',
+	'Enthalpy2','Waterfraction2','Temperature2',
+	'Enthalpy3','Waterfraction3','Temperature3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-9,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).Enthalpy),
+	(md.results.TransientSolution[0](1).Waterfraction),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](2).Enthalpy),
+	(md.results.TransientSolution[0](2).Waterfraction),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](3).Enthalpy),
+	(md.results.TransientSolution[0](3).Waterfraction),
+	(md.results.TransientSolution[0](3).Temperature),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test121.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test121.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test121.m	(revision 27955)
@@ -0,0 +1,34 @@
+%Test Name: SquareShelfConstrainedEnthalpyTran
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Enthalpy1','Waterfraction1','Temperature1',...
+	'Enthalpy2','Waterfraction2','Temperature2',...
+	'Enthalpy3','Waterfraction3','Temperature3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-9,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Enthalpy),...
+	(md.results.TransientSolution(1).Waterfraction),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(2).Enthalpy),...
+	(md.results.TransientSolution(2).Waterfraction),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(3).Enthalpy),...
+	(md.results.TransientSolution(3).Waterfraction),...
+	(md.results.TransientSolution(3).Temperature),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test121.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test121.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test121.py	(revision 27955)
@@ -0,0 +1,41 @@
+#Test Name: SquareShelfConstrainedEnthalpyTran
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.initialization.waterfraction = np.zeros((md.mesh.numberofvertices))
+md.initialization.watercolumn = np.zeros((md.mesh.numberofvertices))
+md.transient.isstressbalance = False
+md.transient.ismasstransport = False
+md.transient.issmb = True
+md.transient.isthermal = True
+md.transient.isgroundingline = False
+md.thermal.isenthalpy = 1
+md.thermal.isdynamicbasalspc = 1
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Enthalpy1', 'Waterfraction1', 'Temperature1',
+               'Enthalpy2', 'Waterfraction2', 'Temperature2',
+               'Enthalpy3', 'Waterfraction3', 'Temperature3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-9, 1e-13]
+field_values = [md.results.TransientSolution[0].Enthalpy,
+                md.results.TransientSolution[0].Waterfraction,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[1].Enthalpy,
+                md.results.TransientSolution[1].Waterfraction,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[2].Enthalpy,
+                md.results.TransientSolution[2].Waterfraction,
+                md.results.TransientSolution[2].Temperature]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test122.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test122.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test122.js	(revision 27955)
@@ -0,0 +1,65 @@
+//Test Name: SquareShelfConstrainedTransHOEnth
+function zeros(...args) {
+	var array = [];
+	for (var i = 0; i < args[0]; ++i) {
+		array.push(args.length == 1 ? 0 : zeros(args.slice(1)));
+	}
+	return array;
+}
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+md.thermal.stabilization=2;
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','Enthalpy1','Waterfraction1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','Enthalpy2','Waterfraction2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','Enthalpy3','Waterfraction3'];
+field_tolerances=[
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).Enthalpy),
+	(md.results.TransientSolution[0](1).Waterfraction),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).Enthalpy),
+	(md.results.TransientSolution[0](2).Waterfraction),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).Enthalpy),
+	(md.results.TransientSolution[0](3).Waterfraction),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test122.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test122.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test122.m	(revision 27955)
@@ -0,0 +1,57 @@
+%Test Name: SquareShelfConstrainedTransHOEnth
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+md.thermal.stabilization=2;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','Enthalpy1','Waterfraction1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','Enthalpy2','Waterfraction2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','Enthalpy3','Waterfraction3'};
+field_tolerances={...
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,...
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,...
+	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).Enthalpy),...
+	(md.results.TransientSolution(1).Waterfraction),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).Enthalpy),...
+	(md.results.TransientSolution(2).Waterfraction),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).Enthalpy),...
+	(md.results.TransientSolution(3).Waterfraction),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test122.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test122.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test122.py	(revision 27955)
@@ -0,0 +1,63 @@
+#Test Name: SquareShelfConstrainedTransHOEnth
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 200000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.initialization.waterfraction = np.zeros((md.mesh.numberofvertices))
+md.initialization.watercolumn = np.zeros((md.mesh.numberofvertices))
+md.thermal.isenthalpy = 1
+md.thermal.isdynamicbasalspc = 1
+md.thermal.stabilization = 2
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Temperature1', 'Enthalpy1', 'Waterfraction1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'Enthalpy2', 'Waterfraction2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'Temperature3', 'Enthalpy3', 'Waterfraction3']
+field_tolerances = [1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09,
+                    1e-09, 1e-09, 1e-08, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09,
+                    1e-09, 1e-09, 1e-08, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].Enthalpy,
+                md.results.TransientSolution[0].Waterfraction,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].Enthalpy,
+                md.results.TransientSolution[1].Waterfraction,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].Enthalpy,
+                md.results.TransientSolution[2].Waterfraction]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test123.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test123.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test123.js	(revision 27955)
@@ -0,0 +1,23 @@
+//Test Name: SquareShelfConstrainedTranMisfitSurface
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+fake_surface=[[md.geometry.surface+100,1.1],[md.geometry.surface+200,2.1],[md.geometry.surface+300,2.5]];
+
+md.transient.requested_outputs=['default','SurfaceMisfit'];
+md.outputdefinition.definitions=[misfit('name','SurfaceMisfit', 'definitionenum',Outputdefinition1Enum,'model_enum',SurfaceEnum,'observation_enum',SurfaceObservationEnum,'observation',fake_surface,'timeinterpolation','nearestneighbor','weights',ones(md.mesh.numberofvertices,1),'weights_enum',WeightsSurfaceObservationEnum)];
+
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['SurfaceMisfitFirstStep','SurfaceMisfitSecondStep','SurfaceMisfitThirdStep'];
+field_tolerances=[1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).SurfaceMisfit),
+	(md.results.TransientSolution[0](2).SurfaceMisfit),
+	(md.results.TransientSolution[0](3).SurfaceMisfit)
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test123.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test123.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test123.m	(revision 27955)
@@ -0,0 +1,25 @@
+%Test Name: SquareShelfConstrainedTranMisfitSurface
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+%md.debug.valgrind=1;
+
+fake_surface=[[md.geometry.surface+100;1.1],...
+[md.geometry.surface+200;2.1],...
+[md.geometry.surface+300;2.5]];
+
+md.transient.requested_outputs={'default','SurfaceMisfit'};
+md.outputdefinition.definitions={misfit('name','SurfaceMisfit', 'definitionstring','Outputdefinition1','model_string','Surface','observation_string','SurfaceObservation','observation',fake_surface,'timeinterpolation','nearestneighbor','weights',ones(md.mesh.numberofvertices,1),'weights_string','WeightsSurfaceObservation')};
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'SurfaceMisfitFirstStep','SurfaceMisfitSecondStep','SurfaceMisfitThirdStep'};
+field_tolerances={1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).SurfaceMisfit),...
+	(md.results.TransientSolution(2).SurfaceMisfit),...
+	(md.results.TransientSolution(3).SurfaceMisfit)
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test123.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test123.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test123.py	(revision 27955)
@@ -0,0 +1,39 @@
+#Test Name: SquareShelfConstrainedTranMisfitSurface
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from misfit import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+fake_surface = np.vstack((np.append(np.array(md.geometry.surface) + 100, 1.1),
+                          np.append(np.array(md.geometry.surface) + 200, 2.1),
+                          np.append(np.array(md.geometry.surface) + 300, 2.5))).T
+
+md.transient.requested_outputs = ['default', 'SurfaceMisfit']
+md.outputdefinition.definitions = [misfit(name='SurfaceMisfit',
+                                          definitionstring='Outputdefinition1',
+                                          model_string='Surface',
+                                          observation=fake_surface,
+                                          observation_string='SurfaceObservation',
+                                          timeinterpolation='nearestneighbor',
+                                          weights=np.ones((md.mesh.numberofvertices, 1)),
+                                          weights_string='WeightsSurfaceObservation')]
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['SurfaceMisfitFirstStep', 'SurfaceMisfitSecondStep', 'SurfaceMisfitThirdStep']
+field_tolerances = [1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].SurfaceMisfit,
+                md.results.TransientSolution[1].SurfaceMisfit,
+                md.results.TransientSolution[2].SurfaceMisfit]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test124.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test124.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test124.js	(revision 27955)
@@ -0,0 +1,49 @@
+//Test Name: SquareShelfConstrainedTranFSFreeSurface
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'FS','all');
+
+//Free surface
+md.masstransport.isfreesurface=1;
+md.timestepping.time_step=0.00001;
+md.timestepping.final_time=0.00005;
+
+//Go solve
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'TransientSolution');
+
+//Fields and tolerances to track changes
+field_names     =[
+	'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1',
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2',
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'];
+field_tolerances=[
+	2e-09,3e-9,3e-9,3e-9,1e-13,1e-12,7e-8,
+	2e-09,3e-9,3e-9,3e-9,1e-10,1e-10,2e-7,
+	3e-09,3e-9,3e-9,3e-9,1e-10,1e-10,3e-7];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test124.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test124.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test124.m	(revision 27955)
@@ -0,0 +1,48 @@
+%Test Name: SquareShelfConstrainedTranFSFreeSurface
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'FS','all');
+
+%Free surface
+md.masstransport.isfreesurface=1;
+md.timestepping.time_step=0.00001;
+md.timestepping.final_time=0.00005;
+
+%Go solve
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={...
+	2e-09,3e-9,3e-9,3e-9,1e-13,1e-12,7e-8,...
+	2e-09,3e-9,3e-9,3e-9,1e-10,1e-10,2e-7,...
+	3e-09,3e-9,3e-9,3e-9,1e-10,1e-10,3e-7};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test124.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test124.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test124.py	(revision 27955)
@@ -0,0 +1,52 @@
+#Test Name: SquareShelfConstrainedTranFSFreeSurface
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 1)
+md = setflowequation(md, 'FS', 'all')
+
+#Free surface
+md.masstransport.isfreesurface = 1
+md.timestepping.time_step = 0.00001
+md.timestepping.final_time = 0.00005
+
+#Go solve
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3']
+field_tolerances = [2e-09, 3e-9, 3e-9, 3e-9, 1e-13, 1e-12, 7e-8,
+                    2e-09, 3e-9, 3e-9, 3e-9, 1e-10, 1e-10, 2e-7,
+                    3e-09, 3e-9, 3e-9, 3e-9, 1e-10, 1e-10, 3e-7]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test125.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test125.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test125.js	(revision 27955)
@@ -0,0 +1,49 @@
+//Test Name: SquareShelfConstrainedRestartTranSSA2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',1);
+md.transient.requested_outputs=['IceVolume','TotalSmb'];
+
+//md.verbose=verbose('solution',true);
+md.settings.checkpoint_frequency=5;
+
+// time steps and resolution
+md.timestepping.final_time=8;
+
+md=solve(md,'TransientSolution');
+md2=solve(md,'TransientSolution','restart',1);
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','TotalSmb1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','TotalSmb2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','TotalSmb3','Bed3','Surface3','Thickness3','Volume3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution(6).Vx)-(md2.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution(6).Vy)-(md2.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution(6).Vel)-(md2.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution(6).TotalSmb)-(md2.results.TransientSolution[0](1).TotalSmb),
+	(md.results.TransientSolution(6).Base)-(md2.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution(6).Surface)-(md2.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution(6).Thickness)-(md2.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution(6).IceVolume)-(md2.results.TransientSolution[0](1).IceVolume),
+	(md.results.TransientSolution(7).Vx)-(md2.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution(7).Vy)-(md2.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution(7).Vel)-(md2.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution(7).TotalSmb)-(md2.results.TransientSolution[0](2).TotalSmb),
+	(md.results.TransientSolution(7).Base)-(md2.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution(7).Surface)-(md2.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution(7).Thickness)-(md2.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution(7).IceVolume)-(md2.results.TransientSolution[0](2).IceVolume),
+	(md.results.TransientSolution(8).Vx)-(md2.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution(8).Vy)-(md2.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution(8).Vel)-(md2.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution(8).TotalSmb)-(md2.results.TransientSolution[0](3).TotalSmb),
+	(md.results.TransientSolution(8).Base)-(md2.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution(8).Surface)-(md2.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution(8).Thickness)-(md2.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution(8).IceVolume)-(md2.results.TransientSolution[0](3).IceVolume),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test125.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test125.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test125.m	(revision 27955)
@@ -0,0 +1,49 @@
+%Test Name: SquareShelfConstrainedRestartTranSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.transient.requested_outputs={'IceVolume','TotalSmb'};
+
+md.verbose=verbose('solution',true);
+md.settings.checkpoint_frequency=4;
+
+% time steps and resolution
+md.timestepping.final_time=19;
+md.settings.output_frequency=2;
+
+md=solve(md,'Transient');
+md2=solve(md,'Transient','restart',1);
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','TotalSmb1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','TotalSmb2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','TotalSmb3','Bed3','Surface3','Thickness3','Volume3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(7).Vx)-(md2.results.TransientSolution(7).Vx),...
+	(md.results.TransientSolution(7).Vy)-(md2.results.TransientSolution(7).Vy),...
+	(md.results.TransientSolution(7).Vel)-(md2.results.TransientSolution(7).Vel),...
+	(md.results.TransientSolution(7).TotalSmb)-(md2.results.TransientSolution(7).TotalSmb),...
+	(md.results.TransientSolution(7).Base)-(md2.results.TransientSolution(7).Base),...
+	(md.results.TransientSolution(7).Surface)-(md2.results.TransientSolution(7).Surface),...
+	(md.results.TransientSolution(7).Thickness)-(md2.results.TransientSolution(7).Thickness),...
+	(md.results.TransientSolution(7).IceVolume)-(md2.results.TransientSolution(7).IceVolume),...
+	(md.results.TransientSolution(8).Vx)-(md2.results.TransientSolution(8).Vx),...
+	(md.results.TransientSolution(8).Vy)-(md2.results.TransientSolution(8).Vy),...
+	(md.results.TransientSolution(8).Vel)-(md2.results.TransientSolution(8).Vel),...
+	(md.results.TransientSolution(8).TotalSmb)-(md2.results.TransientSolution(8).TotalSmb),...
+	(md.results.TransientSolution(8).Base)-(md2.results.TransientSolution(8).Base),...
+	(md.results.TransientSolution(8).Surface)-(md2.results.TransientSolution(8).Surface),...
+	(md.results.TransientSolution(8).Thickness)-(md2.results.TransientSolution(8).Thickness),...
+	(md.results.TransientSolution(8).IceVolume)-(md2.results.TransientSolution(8).IceVolume),...
+	(md.results.TransientSolution(9).Vx)-(md2.results.TransientSolution(9).Vx),...
+	(md.results.TransientSolution(9).Vy)-(md2.results.TransientSolution(9).Vy),...
+	(md.results.TransientSolution(9).Vel)-(md2.results.TransientSolution(9).Vel),...
+	(md.results.TransientSolution(9).TotalSmb)-(md2.results.TransientSolution(9).TotalSmb),...
+	(md.results.TransientSolution(9).Base)-(md2.results.TransientSolution(9).Base),...
+	(md.results.TransientSolution(9).Surface)-(md2.results.TransientSolution(9).Surface),...
+	(md.results.TransientSolution(9).Thickness)-(md2.results.TransientSolution(9).Thickness),...
+	(md.results.TransientSolution(9).IceVolume)-(md2.results.TransientSolution(9).IceVolume),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test125.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test125.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test125.py	(revision 27955)
@@ -0,0 +1,59 @@
+#Test Name: SquareShelfConstrainedRestartTranSSA2d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+import copy
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 1)
+md.transient.requested_outputs = ['IceVolume', 'TotalSmb']
+
+md.verbose = verbose('solution', 1)
+md.settings.checkpoint_frequency = 4
+
+# time steps and resolution
+md.timestepping.final_time = 19
+md.settings.output_frequency = 2
+
+md = solve(md, 'Transient')
+md2 = copy.deepcopy(md)
+md = solve(md, 'Transient', 'restart', 1)
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'TotalSmb1', 'Bed1', 'Surface1', 'Thickness1', 'Volume1', 'Vx2', 'Vy2', 'Vel2', 'TotalSmb2', 'Bed2', 'Surface2', 'Thickness2', 'Volume2', 'Vx3', 'Vy3', 'Vel3', 'TotalSmb3', 'Bed3', 'Surface3', 'Thickness3', 'Volume3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md2.results.TransientSolution[6].Vx - md.results.TransientSolution[6].Vx,
+                md2.results.TransientSolution[6].Vy - md.results.TransientSolution[6].Vy,
+                md2.results.TransientSolution[6].Vel - md.results.TransientSolution[6].Vel,
+                md2.results.TransientSolution[6].TotalSmb - md.results.TransientSolution[6].TotalSmb,
+                md2.results.TransientSolution[6].Base - md.results.TransientSolution[6].Base,
+                md2.results.TransientSolution[6].Surface - md.results.TransientSolution[6].Surface,
+                md2.results.TransientSolution[6].Thickness - md.results.TransientSolution[6].Thickness,
+                md2.results.TransientSolution[6].IceVolume - md.results.TransientSolution[6].IceVolume,
+                md2.results.TransientSolution[7].Vx - md.results.TransientSolution[7].Vx,
+                md2.results.TransientSolution[7].Vy - md.results.TransientSolution[7].Vy,
+                md2.results.TransientSolution[7].Vel - md.results.TransientSolution[7].Vel,
+                md2.results.TransientSolution[7].TotalSmb - md.results.TransientSolution[7].TotalSmb,
+                md2.results.TransientSolution[7].Base - md.results.TransientSolution[7].Base,
+                md2.results.TransientSolution[7].Surface - md.results.TransientSolution[7].Surface,
+                md2.results.TransientSolution[7].Thickness - md.results.TransientSolution[7].Thickness,
+                md2.results.TransientSolution[7].IceVolume - md.results.TransientSolution[7].IceVolume,
+                md2.results.TransientSolution[8].Vx - md.results.TransientSolution[8].Vx,
+                md2.results.TransientSolution[8].Vy - md.results.TransientSolution[8].Vy,
+                md2.results.TransientSolution[8].Vel - md.results.TransientSolution[8].Vel,
+                md2.results.TransientSolution[8].TotalSmb - md.results.TransientSolution[8].TotalSmb,
+                md2.results.TransientSolution[8].Base - md.results.TransientSolution[8].Base,
+                md2.results.TransientSolution[8].Surface - md.results.TransientSolution[8].Surface,
+                md2.results.TransientSolution[8].Thickness - md.results.TransientSolution[8].Thickness,
+                md2.results.TransientSolution[8].IceVolume - md.results.TransientSolution[8].IceVolume]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test126.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test126.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test126.js	(revision 27955)
@@ -0,0 +1,57 @@
+//Test Name: SquareShelfConstrainedRestartTranHO3d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+//md.cluster=generic('name',oshostname(),'np',1);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+md.transient.requested_outputs=['IceVolume','TotalSmb'];
+
+//md.verbose=verbose('solution',true);
+md.settings.checkpoint_frequency=5;
+
+// time steps and resolution
+md.timestepping.final_time=8;
+
+md=solve(md,'TransientSolution');
+md2=solve(md,'TransientSolution','restart',1);
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','TotalSmb1','Bed1','Surface1','Thickness1','Volume1','Temperature1','Pressure1','Vx2','Vy2','Vel2','TotalSmb2','Bed2','Surface2','Thickness2','Volume2','Temperature2','Pressure2','Vx3','Vy3','Vel3','TotalSmb3','Bed3','Surface3','Thickness3','Volume3','Temperature3','Pressure3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution(6).Vx)-(md2.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution(6).Vy)-(md2.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution(6).Vel)-(md2.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution(6).TotalSmb)-(md2.results.TransientSolution[0](1).TotalSmb),
+	(md.results.TransientSolution(6).Base)-(md2.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution(6).Surface)-(md2.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution(6).Thickness)-(md2.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution(6).IceVolume)-(md2.results.TransientSolution[0](1).IceVolume),
+	(md.results.TransientSolution(6).Temperature)-(md2.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution(6).Pressure)-(md2.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution(7).Vx)-(md2.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution(7).Vy)-(md2.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution(7).Vel)-(md2.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution(7).TotalSmb)-(md2.results.TransientSolution[0](2).TotalSmb),
+	(md.results.TransientSolution(7).Base)-(md2.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution(7).Surface)-(md2.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution(7).Thickness)-(md2.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution(7).IceVolume)-(md2.results.TransientSolution[0](2).IceVolume),
+	(md.results.TransientSolution(7).Temperature)-(md2.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution(7).Pressure)-(md2.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution(8).Vx)-(md2.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution(8).Vy)-(md2.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution(8).Vel)-(md2.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution(8).TotalSmb)-(md2.results.TransientSolution[0](3).TotalSmb),
+	(md.results.TransientSolution(8).Base)-(md2.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution(8).Surface)-(md2.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution(8).Thickness)-(md2.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution(8).IceVolume)-(md2.results.TransientSolution[0](3).IceVolume),
+	(md.results.TransientSolution(8).Temperature)-(md2.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution(8).Pressure)-(md2.results.TransientSolution[0](3).Pressure),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test126.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test126.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test126.m	(revision 27955)
@@ -0,0 +1,56 @@
+%Test Name: SquareShelfConstrainedRestartTranHO3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md.cluster=generic('name',oshostname(),'np',1);
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.transient.requested_outputs={'IceVolume','TotalSmb'};
+
+md.verbose=verbose('solution',true);
+md.settings.checkpoint_frequency=5;
+
+% time steps and resolution
+md.timestepping.final_time=8;
+
+md=solve(md,'Transient');
+md2=solve(md,'Transient','restart',1);
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','TotalSmb1','Bed1','Surface1','Thickness1','Volume1','Temperature1','Pressure1','Vx2','Vy2','Vel2','TotalSmb2','Bed2','Surface2','Thickness2','Volume2','Temperature2','Pressure2','Vx3','Vy3','Vel3','TotalSmb3','Bed3','Surface3','Thickness3','Volume3','Temperature3','Pressure3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(6).Vx)-(md2.results.TransientSolution(6).Vx),...
+	(md.results.TransientSolution(6).Vy)-(md2.results.TransientSolution(6).Vy),...
+	(md.results.TransientSolution(6).Vel)-(md2.results.TransientSolution(6).Vel),...
+	(md.results.TransientSolution(6).TotalSmb)-(md2.results.TransientSolution(6).TotalSmb),...
+	(md.results.TransientSolution(6).Base)-(md2.results.TransientSolution(6).Base),...
+	(md.results.TransientSolution(6).Surface)-(md2.results.TransientSolution(6).Surface),...
+	(md.results.TransientSolution(6).Thickness)-(md2.results.TransientSolution(6).Thickness),...
+	(md.results.TransientSolution(6).IceVolume)-(md2.results.TransientSolution(6).IceVolume),...
+	(md.results.TransientSolution(6).Temperature)-(md2.results.TransientSolution(6).Temperature),...
+	(md.results.TransientSolution(6).Pressure)-(md2.results.TransientSolution(6).Pressure),...
+	(md.results.TransientSolution(7).Vx)-(md2.results.TransientSolution(7).Vx),...
+	(md.results.TransientSolution(7).Vy)-(md2.results.TransientSolution(7).Vy),...
+	(md.results.TransientSolution(7).Vel)-(md2.results.TransientSolution(7).Vel),...
+	(md.results.TransientSolution(7).TotalSmb)-(md2.results.TransientSolution(7).TotalSmb),...
+	(md.results.TransientSolution(7).Base)-(md2.results.TransientSolution(7).Base),...
+	(md.results.TransientSolution(7).Surface)-(md2.results.TransientSolution(7).Surface),...
+	(md.results.TransientSolution(7).Thickness)-(md2.results.TransientSolution(7).Thickness),...
+	(md.results.TransientSolution(7).IceVolume)-(md2.results.TransientSolution(7).IceVolume),...
+	(md.results.TransientSolution(7).Temperature)-(md2.results.TransientSolution(7).Temperature),...
+	(md.results.TransientSolution(7).Pressure)-(md2.results.TransientSolution(7).Pressure),...
+	(md.results.TransientSolution(8).Vx)-(md2.results.TransientSolution(8).Vx),...
+	(md.results.TransientSolution(8).Vy)-(md2.results.TransientSolution(8).Vy),...
+	(md.results.TransientSolution(8).Vel)-(md2.results.TransientSolution(8).Vel),...
+	(md.results.TransientSolution(8).TotalSmb)-(md2.results.TransientSolution(8).TotalSmb),...
+	(md.results.TransientSolution(8).Base)-(md2.results.TransientSolution(8).Base),...
+	(md.results.TransientSolution(8).Surface)-(md2.results.TransientSolution(8).Surface),...
+	(md.results.TransientSolution(8).Thickness)-(md2.results.TransientSolution(8).Thickness),...
+	(md.results.TransientSolution(8).IceVolume)-(md2.results.TransientSolution(8).IceVolume),...
+	(md.results.TransientSolution(8).Temperature)-(md2.results.TransientSolution(8).Temperature),...
+	(md.results.TransientSolution(8).Pressure)-(md2.results.TransientSolution(8).Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test126.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test126.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test126.py	(revision 27955)
@@ -0,0 +1,66 @@
+#Test Name: SquareShelfConstrainedRestartTranHO3d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+import copy
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.cluster = generic('name', gethostname(), 'np', 1)
+md.transient.requested_outputs = ['IceVolume', 'TotalSmb']
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+
+md.verbose = verbose('solution', 1)
+md.settings.checkpoint_frequency = 5
+
+# time steps and resolution
+md.timestepping.final_time = 8
+
+md = solve(md, 'Transient')
+md2 = copy.deepcopy(md)
+md = solve(md, 'Transient', 'restart', 1)
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'TotalSmb1', 'Bed1', 'Surface1', 'Thickness1', 'Volume1', 'Temperature1', 'Pressure1', 'Vx2', 'Vy2', 'Vel2', 'TotalSmb2', 'Bed2', 'Surface2', 'Thickness2', 'Volume2', 'Temperature2', 'Pressure2', 'Vx3', 'Vy3', 'Vel3', 'TotalSmb3', 'Bed3', 'Surface3', 'Thickness3', 'Volume3', 'Temperature3', 'Pressure3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md2.results.TransientSolution[5].Vx - md.results.TransientSolution[5].Vx,
+                md2.results.TransientSolution[5].Vy - md.results.TransientSolution[5].Vy,
+                md2.results.TransientSolution[5].Vel - md.results.TransientSolution[5].Vel,
+                md2.results.TransientSolution[5].TotalSmb - md.results.TransientSolution[5].TotalSmb,
+                md2.results.TransientSolution[5].Base - md.results.TransientSolution[5].Base,
+                md2.results.TransientSolution[5].Surface - md.results.TransientSolution[5].Surface,
+                md2.results.TransientSolution[5].Thickness - md.results.TransientSolution[5].Thickness,
+                md2.results.TransientSolution[5].IceVolume - md.results.TransientSolution[5].IceVolume,
+                md2.results.TransientSolution[5].Temperature - md.results.TransientSolution[5].Temperature,
+                md2.results.TransientSolution[5].Pressure - md.results.TransientSolution[5].Pressure,
+                md2.results.TransientSolution[6].Vx - md.results.TransientSolution[6].Vx,
+                md2.results.TransientSolution[6].Vy - md.results.TransientSolution[6].Vy,
+                md2.results.TransientSolution[6].Vel - md.results.TransientSolution[6].Vel,
+                md2.results.TransientSolution[6].TotalSmb - md.results.TransientSolution[6].TotalSmb,
+                md2.results.TransientSolution[6].Base - md.results.TransientSolution[6].Base,
+                md2.results.TransientSolution[6].Surface - md.results.TransientSolution[6].Surface,
+                md2.results.TransientSolution[6].Thickness - md.results.TransientSolution[6].Thickness,
+                md2.results.TransientSolution[6].IceVolume - md.results.TransientSolution[6].IceVolume,
+                md2.results.TransientSolution[6].Temperature - md.results.TransientSolution[6].Temperature,
+                md2.results.TransientSolution[6].Pressure - md.results.TransientSolution[6].Pressure,
+                md2.results.TransientSolution[7].Vx - md.results.TransientSolution[7].Vx,
+                md2.results.TransientSolution[7].Vy - md.results.TransientSolution[7].Vy,
+                md2.results.TransientSolution[7].Vel - md.results.TransientSolution[7].Vel,
+                md2.results.TransientSolution[7].TotalSmb - md.results.TransientSolution[7].TotalSmb,
+                md2.results.TransientSolution[7].Base - md.results.TransientSolution[7].Base,
+                md2.results.TransientSolution[7].Surface - md.results.TransientSolution[7].Surface,
+                md2.results.TransientSolution[7].Thickness - md.results.TransientSolution[7].Thickness,
+                md2.results.TransientSolution[7].IceVolume - md.results.TransientSolution[7].IceVolume,
+                md2.results.TransientSolution[7].Temperature - md.results.TransientSolution[7].Temperature,
+                md2.results.TransientSolution[7].Pressure - md.results.TransientSolution[7].Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test127.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test127.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test127.m	(revision 27955)
@@ -0,0 +1,50 @@
+%Test Name: SquareShelfConstrainedStressMOLHO2d
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'MOLHO','all');
+md.cluster=generic('name',oshostname(),'np',2);
+
+%output
+%FIXME compute the stress components for MOLHO
+md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase','MassFlux1','MassFlux2','MassFlux3','MassFlux4','MassFlux5','MassFlux6'};
+%md.stressbalance.requested_outputs={'default','DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy','MassFlux1','MassFlux2','MassFlux3','MassFlux4','MassFlux5','MassFlux6'};
+md.outputdefinition.definitions={...
+	massfluxatgate('name','MassFlux1','profilename',['../Exp/MassFlux1.exp'],'definitionstring','Outputdefinition1'),...
+	massfluxatgate('name','MassFlux2','profilename',['../Exp/MassFlux2.exp'],'definitionstring','Outputdefinition2'),...
+	massfluxatgate('name','MassFlux3','profilename',['../Exp/MassFlux3.exp'],'definitionstring','Outputdefinition3'),...
+	massfluxatgate('name','MassFlux4','profilename',['../Exp/MassFlux4.exp'],'definitionstring','Outputdefinition4'),...
+	massfluxatgate('name','MassFlux5','profilename',['../Exp/MassFlux5.exp'],'definitionstring','Outputdefinition5'),...
+	massfluxatgate('name','MassFlux6','profilename',['../Exp/MassFlux6.exp'],'definitionstring','Outputdefinition6')...
+	};
+md=SetMOLHOBC(md);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase',...
+	'MassFlux1','MassFlux2','MassFlux3','MassFlux4','MassFlux5','MassFlux6'};
+	%'DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy',...
+field_tolerances={3e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13 };
+	%$2e-13,1e-13,2e-13,...
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.VxSurface),...
+	(md.results.StressbalanceSolution.VySurface),...
+	(md.results.StressbalanceSolution.VxShear),...
+	(md.results.StressbalanceSolution.VyShear),...
+	(md.results.StressbalanceSolution.VxBase),...
+	(md.results.StressbalanceSolution.VyBase),...
+	(md.results.StressbalanceSolution.MassFlux1),...
+	(md.results.StressbalanceSolution.MassFlux2),...
+	(md.results.StressbalanceSolution.MassFlux3),...
+	(md.results.StressbalanceSolution.MassFlux4),...
+	(md.results.StressbalanceSolution.MassFlux5),...
+	(md.results.StressbalanceSolution.MassFlux6)...
+	};
+	%(md.results.StressbalanceSolution.DeviatoricStressxx),...
+	%(md.results.StressbalanceSolution.DeviatoricStressyy),...
+	%(md.results.StressbalanceSolution.DeviatoricStressxy),...
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test127.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test127.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test127.py	(revision 27955)
@@ -0,0 +1,57 @@
+#Test Name: SquareShelfConstrainedStressMOLHO2d
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from massfluxatgate import massfluxatgate
+from generic import generic
+from SetMOLHOBC import SetMOLHOBC
+
+md = triangle(model(), '../Exp/Square.exp', 50000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'MOLHO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 2)
+#outputs
+#FIXME compute the stress components for MOLHO
+md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase', 'MassFlux1', 'MassFlux2', 'MassFlux3', 'MassFlux4', 'MassFlux5', 'MassFlux6']
+#md.stressbalance.requested_outputs = ['default', 'DeviatoricStressxx', 'DeviatoricStressyy', 'DeviatoricStressxy', 'MassFlux1', 'MassFlux2', 'MassFlux3', 'MassFlux4', 'MassFlux5', 'MassFlux6']
+md.outputdefinition.definitions = [massfluxatgate('name', 'MassFlux1', 'profilename', '../Exp/MassFlux1.exp', 'definitionstring', 'Outputdefinition1'),
+                                   massfluxatgate('name', 'MassFlux2', 'profilename', '../Exp/MassFlux2.exp', 'definitionstring', 'Outputdefinition2'),
+                                   massfluxatgate('name', 'MassFlux3', 'profilename', '../Exp/MassFlux3.exp', 'definitionstring', 'Outputdefinition3'),
+                                   massfluxatgate('name', 'MassFlux4', 'profilename', '../Exp/MassFlux4.exp', 'definitionstring', 'Outputdefinition4'),
+                                   massfluxatgate('name', 'MassFlux5', 'profilename', '../Exp/MassFlux5.exp', 'definitionstring', 'Outputdefinition5'),
+                                   massfluxatgate('name', 'MassFlux6', 'profilename', '../Exp/MassFlux6.exp', 'definitionstring', 'Outputdefinition6')]
+md = SetMOLHOBC(md)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase',
+               'MassFlux1', 'MassFlux2', 'MassFlux3', 'MassFlux4', 'MassFlux5', 'MassFlux6']
+#'DeviatoricStressxx', 'DeviatoricStressyy', 'DeviatoricStressxy',
+field_tolerances = [3e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    2e-13, 1e-13, 2e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.VxSurface,
+                md.results.StressbalanceSolution.VySurface,
+                md.results.StressbalanceSolution.VxShear,
+                md.results.StressbalanceSolution.VyShear,
+                md.results.StressbalanceSolution.VxBase,
+                md.results.StressbalanceSolution.VyBase,
+                md.results.StressbalanceSolution.MassFlux1,
+                md.results.StressbalanceSolution.MassFlux2,
+                md.results.StressbalanceSolution.MassFlux3,
+                md.results.StressbalanceSolution.MassFlux4,
+                md.results.StressbalanceSolution.MassFlux5,
+                md.results.StressbalanceSolution.MassFlux6]
+#md.results.StressbalanceSolution.DeviatoricStressxx,
+#md.results.StressbalanceSolution.DeviatoricStressyy,
+#md.results.StressbalanceSolution.DeviatoricStressxy,
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test128.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test128.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test128.m	(revision 27955)
@@ -0,0 +1,62 @@
+%Test Name: SquareShelfConstrainedTranMOLHO2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'MOLHO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'IceVolume','VxShear','VyShear','VxBase','VyBase','VxSurface','VySurface'};
+
+md=SetMOLHOBC(md);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','VxShear1','VyShear1','VxBase1','VyBase1','VxSurface1','VySurface1','Bed1','Surface1','Thickness1','Volume1',...
+						'Vx2','Vy2','Vel2','Pressure2','VxShear2','VyShear2','VxBase2','VyBase2','VxSurface2','VySurface2','Bed2','Surface2','Thickness2','Volume2',...
+						'Vx3','Vy3','Vel3','Pressure3','VxShear3','VyShear3','VxBase3','VyBase3','VxSurface3','VySurface3','Bed3','Surface3','Thickness3','Volume3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).VxShear),...
+	(md.results.TransientSolution(1).VyShear),...
+	(md.results.TransientSolution(1).VxBase),...
+	(md.results.TransientSolution(1).VyBase),...
+	(md.results.TransientSolution(1).VxSurface),...
+	(md.results.TransientSolution(1).VySurface),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).VxShear),...
+	(md.results.TransientSolution(2).VyShear),...
+	(md.results.TransientSolution(2).VxBase),...
+	(md.results.TransientSolution(2).VyBase),...
+	(md.results.TransientSolution(2).VxSurface),...
+	(md.results.TransientSolution(2).VySurface),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).VxShear),...
+	(md.results.TransientSolution(3).VyShear),...
+	(md.results.TransientSolution(3).VxBase),...
+	(md.results.TransientSolution(3).VyBase),...
+	(md.results.TransientSolution(3).VxSurface),...
+	(md.results.TransientSolution(3).VySurface),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).IceVolume),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test128.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test128.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test128.py	(revision 27955)
@@ -0,0 +1,70 @@
+#Test Name: SquareShelfConstrainedTranMOLHO2d
+from model import *
+from SetMOLHOBC import SetMOLHOBC
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'MOLHO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.requested_outputs = ['IceVolume','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase']
+
+md = SetMOLHOBC(md)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'VxShear1', 'VyShear1', 'VxBase1', 'VyBase1', 'VxSurface1', 'VySurface1', 'Bed1', 'Surface1', 'Thickness1', 'Volume1',
+            'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'VxShear2', 'VyShear2', 'VxBase2', 'VyBase2', 'VxSurface2', 'VySurface2', 'Bed2', 'Surface2', 'Thickness2', 'Volume2',
+            'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'VxShear3', 'VyShear3', 'VxBase3', 'VyBase3', 'VxSurface3', 'VySurface3', 'Bed3', 'Surface3', 'Thickness3', 'Volume3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].VxShear,
+                md.results.TransientSolution[0].VyShear,
+                md.results.TransientSolution[0].VxBase,
+                md.results.TransientSolution[0].VyBase,
+                md.results.TransientSolution[0].VxSurface,
+                md.results.TransientSolution[0].VySurface,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].IceVolume,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].VxShear,
+                md.results.TransientSolution[1].VyShear,
+                md.results.TransientSolution[1].VxBase,
+                md.results.TransientSolution[1].VyBase,
+                md.results.TransientSolution[1].VxSurface,
+                md.results.TransientSolution[1].VySurface,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].IceVolume,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].VxShear,
+                md.results.TransientSolution[2].VyShear,
+                md.results.TransientSolution[2].VxBase,
+                md.results.TransientSolution[2].VyBase,
+                md.results.TransientSolution[2].VxSurface,
+                md.results.TransientSolution[2].VySurface,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].IceVolume]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test129.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test129.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test129.m	(revision 27955)
@@ -0,0 +1,70 @@
+%Test Name: SquareShelfConstrainedRestartTranMOLHO2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'MOLHO','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.transient.requested_outputs={'IceVolume','TotalSmb','VxShear','VyShear','VxBase','VyBase','VxSurface','VySurface'};
+
+md.verbose=verbose('solution',true);
+md.settings.checkpoint_frequency=4;
+
+% time steps and resolution
+md.timestepping.final_time=19;
+md.settings.output_frequency=2;
+
+md=SetMOLHOBC(md);
+md=solve(md,'Transient');
+md2=solve(md,'Transient','restart',1);
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','VxShear1','VyShear1','VxBase1','VyBase1','VxSurface1','VySurface1','TotalSmb1','Bed1','Surface1','Thickness1','Volume1',...
+						'Vx2','Vy2','Vel2','VxShear2','VyShear2','VxBase2','VyBase2','VxSurface2','VySurface2','TotalSmb2','Bed2','Surface2','Thickness2','Volume2',...
+						'Vx3','Vy3','Vel3','VxShear3','VyShear3','VxBase3','VyBase3','VxSurface3','VySurface3','TotalSmb3','Bed3','Surface3','Thickness3','Volume3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(7).Vx)-(md2.results.TransientSolution(7).Vx),...
+	(md.results.TransientSolution(7).Vy)-(md2.results.TransientSolution(7).Vy),...
+	(md.results.TransientSolution(7).Vel)-(md2.results.TransientSolution(7).Vel),...
+	(md.results.TransientSolution(7).VxShear)-(md2.results.TransientSolution(7).VxShear),...
+	(md.results.TransientSolution(7).VyShear)-(md2.results.TransientSolution(7).VyShear),...
+	(md.results.TransientSolution(7).VxBase)-(md2.results.TransientSolution(7).VxBase),...
+	(md.results.TransientSolution(7).VyBase)-(md2.results.TransientSolution(7).VyBase),...
+	(md.results.TransientSolution(7).VxSurface)-(md2.results.TransientSolution(7).VxSurface),...
+	(md.results.TransientSolution(7).VySurface)-(md2.results.TransientSolution(7).VySurface),...
+	(md.results.TransientSolution(7).TotalSmb)-(md2.results.TransientSolution(7).TotalSmb),...
+	(md.results.TransientSolution(7).Base)-(md2.results.TransientSolution(7).Base),...
+	(md.results.TransientSolution(7).Surface)-(md2.results.TransientSolution(7).Surface),...
+	(md.results.TransientSolution(7).Thickness)-(md2.results.TransientSolution(7).Thickness),...
+	(md.results.TransientSolution(7).IceVolume)-(md2.results.TransientSolution(7).IceVolume),...
+	(md.results.TransientSolution(8).Vx)-(md2.results.TransientSolution(8).Vx),...
+	(md.results.TransientSolution(8).Vy)-(md2.results.TransientSolution(8).Vy),...
+	(md.results.TransientSolution(8).Vel)-(md2.results.TransientSolution(8).Vel),...
+	(md.results.TransientSolution(8).VxShear)-(md2.results.TransientSolution(8).VxShear),...
+	(md.results.TransientSolution(8).VyShear)-(md2.results.TransientSolution(8).VyShear),...
+	(md.results.TransientSolution(8).VxBase)-(md2.results.TransientSolution(8).VxBase),...
+	(md.results.TransientSolution(8).VyBase)-(md2.results.TransientSolution(8).VyBase),...
+	(md.results.TransientSolution(8).VxSurface)-(md2.results.TransientSolution(8).VxSurface),...
+	(md.results.TransientSolution(8).VySurface)-(md2.results.TransientSolution(8).VySurface),...
+	(md.results.TransientSolution(8).TotalSmb)-(md2.results.TransientSolution(8).TotalSmb),...
+	(md.results.TransientSolution(8).Base)-(md2.results.TransientSolution(8).Base),...
+	(md.results.TransientSolution(8).Surface)-(md2.results.TransientSolution(8).Surface),...
+	(md.results.TransientSolution(8).Thickness)-(md2.results.TransientSolution(8).Thickness),...
+	(md.results.TransientSolution(8).IceVolume)-(md2.results.TransientSolution(8).IceVolume),...
+	(md.results.TransientSolution(9).Vx)-(md2.results.TransientSolution(9).Vx),...
+	(md.results.TransientSolution(9).Vy)-(md2.results.TransientSolution(9).Vy),...
+	(md.results.TransientSolution(9).Vel)-(md2.results.TransientSolution(9).Vel),...
+	(md.results.TransientSolution(9).VxShear)-(md2.results.TransientSolution(9).VxShear),...
+	(md.results.TransientSolution(9).VyShear)-(md2.results.TransientSolution(9).VyShear),...
+	(md.results.TransientSolution(9).VxBase)-(md2.results.TransientSolution(9).VxBase),...
+	(md.results.TransientSolution(9).VyBase)-(md2.results.TransientSolution(9).VyBase),...
+	(md.results.TransientSolution(9).VxSurface)-(md2.results.TransientSolution(9).VxSurface),...
+	(md.results.TransientSolution(9).VySurface)-(md2.results.TransientSolution(9).VySurface),...
+	(md.results.TransientSolution(9).TotalSmb)-(md2.results.TransientSolution(9).TotalSmb),...
+	(md.results.TransientSolution(9).Base)-(md2.results.TransientSolution(9).Base),...
+	(md.results.TransientSolution(9).Surface)-(md2.results.TransientSolution(9).Surface),...
+	(md.results.TransientSolution(9).Thickness)-(md2.results.TransientSolution(9).Thickness),...
+	(md.results.TransientSolution(9).IceVolume)-(md2.results.TransientSolution(9).IceVolume),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test129.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test129.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test129.py	(revision 27955)
@@ -0,0 +1,79 @@
+#Test Name: SquareShelfConstrainedRestartTranMOLHO2d
+from model import *
+from socket import gethostname
+from SetMOLHOBC import SetMOLHOBC
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+import copy
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'MOLHO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 1)
+md.transient.requested_outputs = ['IceVolume', 'TotalSmb', 'VxShear','VyShear','VxBase','VyBase','VxSurface','VySurface']
+
+md.verbose = verbose('solution', 1)
+md.settings.checkpoint_frequency = 4
+
+# time steps and resolution
+md.timestepping.final_time = 19
+md.settings.output_frequency = 2
+md = SetMOLHOBC(md)
+
+md = solve(md, 'Transient')
+md2 = copy.deepcopy(md)
+md = solve(md, 'Transient', 'restart', 1)
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'VxShear1','VyShear1','VxBase1','VyBase1','VxSurface1','VySurface1', 'TotalSmb1', 'Bed1', 'Surface1', 'Thickness1', 'Volume1', 'Vx2', 'Vy2', 'Vel2', 'VxShear2','VyShear2','VxBase2','VyBase2','VxSurface2','VySurface2','TotalSmb2', 'Bed2', 'Surface2', 'Thickness2', 'Volume2', 'Vx3', 'Vy3', 'Vel3', 'VxShear3','VyShear3','VxBase3','VyBase3','VxSurface3','VySurface3','TotalSmb3', 'Bed3', 'Surface3', 'Thickness3', 'Volume3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md2.results.TransientSolution[6].Vx - md.results.TransientSolution[6].Vx,
+                md2.results.TransientSolution[6].Vy - md.results.TransientSolution[6].Vy,
+                md2.results.TransientSolution[6].Vel - md.results.TransientSolution[6].Vel,
+                md2.results.TransientSolution[6].VxShear - md.results.TransientSolution[6].VxShear,
+                md2.results.TransientSolution[6].VyShear - md.results.TransientSolution[6].VyShear,
+                md2.results.TransientSolution[6].VxBase - md.results.TransientSolution[6].VxBase,
+                md2.results.TransientSolution[6].VyBase - md.results.TransientSolution[6].VyBase,
+                md2.results.TransientSolution[6].VxSurface - md.results.TransientSolution[6].VxSurface,
+                md2.results.TransientSolution[6].VySurface - md.results.TransientSolution[6].VySurface,
+                md2.results.TransientSolution[6].TotalSmb - md.results.TransientSolution[6].TotalSmb,
+                md2.results.TransientSolution[6].Base - md.results.TransientSolution[6].Base,
+                md2.results.TransientSolution[6].Surface - md.results.TransientSolution[6].Surface,
+                md2.results.TransientSolution[6].Thickness - md.results.TransientSolution[6].Thickness,
+                md2.results.TransientSolution[6].IceVolume - md.results.TransientSolution[6].IceVolume,
+                md2.results.TransientSolution[7].Vx - md.results.TransientSolution[7].Vx,
+                md2.results.TransientSolution[7].Vy - md.results.TransientSolution[7].Vy,
+                md2.results.TransientSolution[7].Vel - md.results.TransientSolution[7].Vel,
+                md2.results.TransientSolution[7].VxShear - md.results.TransientSolution[7].VxShear,
+                md2.results.TransientSolution[7].VyShear - md.results.TransientSolution[7].VyShear,
+                md2.results.TransientSolution[7].VxBase - md.results.TransientSolution[7].VxBase,
+                md2.results.TransientSolution[7].VyBase - md.results.TransientSolution[7].VyBase,
+                md2.results.TransientSolution[7].VxSurface - md.results.TransientSolution[7].VxSurface,
+                md2.results.TransientSolution[7].VySurface - md.results.TransientSolution[7].VySurface,
+                md2.results.TransientSolution[7].TotalSmb - md.results.TransientSolution[7].TotalSmb,
+                md2.results.TransientSolution[7].Base - md.results.TransientSolution[7].Base,
+                md2.results.TransientSolution[7].Surface - md.results.TransientSolution[7].Surface,
+                md2.results.TransientSolution[7].Thickness - md.results.TransientSolution[7].Thickness,
+                md2.results.TransientSolution[7].IceVolume - md.results.TransientSolution[7].IceVolume,
+                md2.results.TransientSolution[8].Vx - md.results.TransientSolution[8].Vx,
+                md2.results.TransientSolution[8].Vy - md.results.TransientSolution[8].Vy,
+                md2.results.TransientSolution[8].Vel - md.results.TransientSolution[8].Vel,
+                md2.results.TransientSolution[8].VxShear - md.results.TransientSolution[8].VxShear,
+                md2.results.TransientSolution[8].VyShear - md.results.TransientSolution[8].VyShear,
+                md2.results.TransientSolution[8].VxBase - md.results.TransientSolution[8].VxBase,
+                md2.results.TransientSolution[8].VyBase - md.results.TransientSolution[8].VyBase,
+                md2.results.TransientSolution[8].VxSurface - md.results.TransientSolution[8].VxSurface,
+                md2.results.TransientSolution[8].VySurface - md.results.TransientSolution[8].VySurface,
+                md2.results.TransientSolution[8].TotalSmb - md.results.TransientSolution[8].TotalSmb,
+                md2.results.TransientSolution[8].Base - md.results.TransientSolution[8].Base,
+                md2.results.TransientSolution[8].Surface - md.results.TransientSolution[8].Surface,
+                md2.results.TransientSolution[8].Thickness - md.results.TransientSolution[8].Thickness,
+                md2.results.TransientSolution[8].IceVolume - md.results.TransientSolution[8].IceVolume]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1301.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1301.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1301.m	(revision 27955)
@@ -0,0 +1,47 @@
+%Test Name: ThermalMelting
+% This file can be run to check that the melting in simple conduction is correctly modeled.
+% There is no velocity (no advection) the only thermal boundary conditions are an imposed temperature
+% at upper surface and an impose flux at its base. The result must be a linear temperature from the upper to the lower
+% surface with an imposed slope (Geothermal flux). if it is not the case, something is thermal modeling has been changed...
+printingflag=false;
+
+md=model();
+md=triangle(md,'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareThermal.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+
+%Some conditions specific to melting test
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+md.initialization.temperature=273.15*ones(md.mesh.numberofvertices,1);
+pos=find(md.mesh.vertexonsurface);
+md.thermal.spctemperature(pos)=md.initialization.temperature(pos);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+
+%analytical results
+%melting heat = geothermal flux
+%Mb*L*rho=G   => Mb=G/L*rho
+melting=md.basalforcings.geothermalflux/(md.materials.rho_ice*md.materials.latentheat)*md.constants.yts;
+
+%modeled results
+md.cluster=generic('name',oshostname(),'np',2);
+md=solve(md,'Thermal');
+
+%plot results
+comp_melting=md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate;
+relative=abs((comp_melting-melting)./melting)*100.;
+relative(find(comp_melting==melting))=0.;
+plotmodel(md,'data',comp_melting,'title','Modeled melting','data',melting,'title','Analytical melting',...
+	'data',comp_melting-melting,'title','Absolute error','data',relative,'title','Relative error [%]',...
+	'layer#all',1,'caxis#2',[1.02964 1.02966]*10^-4,'FontSize#all',20,'figposition','mathieu')
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('thermalmelting','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+	system(['mv thermalmelting.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal ']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={'BasalMelting'};
+field_tolerances={1e-07};
+field_values    ={comp_melting};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1301.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1301.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1301.py	(revision 27955)
@@ -0,0 +1,61 @@
+#Test Name: ThermalMelting
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from paterson import *
+from solve import *
+
+
+"""
+This file can be run to check that the melting in simple conduction is correctly modeled.
+There is no velocity (no advection) the only thermal boundary conditions are an imposed temperature
+at upper surface and an impose flux at its base. The result must be a linear temperature from the upper to the lower
+surface with an imposed slope (Geothermal flux). if it is not the case, something is thermal modeling has been changed...
+"""
+
+printingflag = False
+
+md = model()
+md = triangle(md, '../Exp/Square.exp', 100000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareThermal.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'HO', 'all')
+
+#Some conditions specific to melting test
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices, 1), int)
+md.initialization.temperature = 273.15 * np.ones((md.mesh.numberofvertices))
+pos = np.nonzero(md.mesh.vertexonsurface)[0]
+md.thermal.spctemperature[pos] = md.initialization.temperature[pos]
+md.materials.rheology_B = paterson(md.initialization.temperature)
+
+#analytical results
+#melting heat = geothermal flux
+#Mb * L * rho = G = > Mb = G / L * rho
+melting = md.basalforcings.geothermalflux / (md.materials.rho_ice * md.materials.latentheat) * md.constants.yts
+
+#modeled results
+md.cluster = generic('name', gethostname(), 'np', 2)
+md = solve(md, 'Thermal')
+
+#plot results
+comp_melting = md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate
+relative = np.abs((comp_melting - melting) / melting) * 100.
+relative[np.nonzero(comp_melting == melting)[0]] = 0.
+#plotmodel(md, 'data', comp_melting, 'title', 'Modeled melting', 'data', melting, 'title', 'Analytical melting', ...
+#       'data', comp_melting - melting, 'title', 'Absolute error', 'data', relative, 'title', 'Relative error [%]', ...
+#       'layer  #all', 1, 'caxis  #2', [1.02964 1.02966] * 1.0e - 4, 'FontSize  #all', 20, 'figposition', 'mathieu')
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('thermalmelting', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 0.7, 'hardcopy', 'off')
+#       system(['mv thermalmelting.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal '])
+
+#Fields and tolerances to track changes
+field_names = ['BasalMelting']
+field_tolerances = [1e-08]
+field_values = [comp_melting]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1302.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1302.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1302.m	(revision 27955)
@@ -0,0 +1,50 @@
+%Test Name: ThermalAdvection
+% This file can be run to check that the advection-diffusion  is correctly modeled.
+% There is u=v=0 and w=cst everywhere the only thermal boundary conditions are an imposed temperature
+% at upper surface and an impose flux at its base.
+printingflag=false;
+
+md=model();
+md=triangle(md,'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareThermal.par');
+md=extrude(md,30,1.);   %NB: the more one extrudes, the better (10-> relative~0.35%, 20->0.1%, 30->0.05%)
+md=setflowequation(md,'HO','all');
+
+%Thermal boundary conditions
+pos1=find(md.mesh.elementonbase);     md.thermal.spctemperature(md.mesh.elements(pos1,1:3))=10.;
+pos2=find(md.mesh.elementonsurface); md.thermal.spctemperature(md.mesh.elements(pos2,4:6))=0.;
+md.initialization.vz=0.1*ones(md.mesh.numberofvertices,1);
+md.initialization.vel=sqrt( md.initialization.vx.^2+ md.initialization.vy.^2+ md.initialization.vz.^2);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+md.thermal.stabilization=2;
+%analytical results
+%d2T/dz2-w*rho_ice*c/k*dT/dz=0   T(surface)=0  T(bed)=10   => T=A exp(alpha z)+B
+alpha=0.1/md.constants.yts*md.materials.rho_ice*md.materials.heatcapacity/md.materials.thermalconductivity;   %alpha=w rho_ice c /k  and w=0.1m/an
+A=10./(exp(alpha*(-1000.))-1.);    %A=T(bed)/(exp(alpha*bed)-1)  with bed=-1000 T(bed)=10
+B=-A;
+md.initialization.temperature=A*exp(alpha*md.mesh.z)+B;
+
+%modeled results
+md.cluster=generic('name',oshostname(),'np',2);
+md=solve(md,'Thermal');
+
+%plot results
+comp_temp=md.results.ThermalSolution.Temperature;
+relative=abs((comp_temp-md.initialization.temperature)./md.initialization.temperature)*100.;
+relative(find(comp_temp==md.initialization.temperature))=0.;
+plotmodel(md,'data',comp_temp,'title','Modeled temperature [K]','data',md.initialization.temperature,'view',3,...
+	'title','Analytical temperature [K]','view',3,'data',comp_temp-md.initialization.temperature,...
+	'title','Absolute error [K]','view',3,'data',relative,'title','Relative error [%]','view',3,...
+	'figposition','mathieu','FontSize#all',20)
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('thermaladvection','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+	system(['mv thermaladvection.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT ']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={'AdvectionTemperature'};
+field_tolerances={1e-13};
+field_values    ={comp_temp};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1302.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1302.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1302.py	(revision 27955)
@@ -0,0 +1,65 @@
+#Test Name: ThermalAdvection
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+"""
+This file can be run to check that the advection - diffusion  is correctly modeled.
+There is u = v = 0 and w = cst everywhere the only thermal boundary conditions are an imposed temperature
+at upper surface and an impose flux at its base.
+"""
+
+printingflag = False
+
+md = model()
+md = triangle(md, '../Exp/Square.exp', 100000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareThermal.py')
+md.extrude(30, 1.)  #NB: the more one extrudes, the better (10 -> relative~0.35%, 20 -> 0.1%, 30 -> 0.05%)
+md = setflowequation(md, 'HO', 'all')
+
+#Thermal boundary conditions
+pos1 = np.where(np.isnan(md.mesh.lowerelements))[0]
+md.thermal.spctemperature[md.mesh.elements[pos1, 0:3] - 1] = 10.
+pos2 = np.where(np.isnan(md.mesh.upperelements))[0]
+md.thermal.spctemperature[md.mesh.elements[pos2, 3:6] - 1] = 0.
+md.initialization.vz = 0.1 * np.ones((md.mesh.numberofvertices))
+md.initialization.vel = np.sqrt(md.initialization.vx**2 + md.initialization.vy**2 + md.initialization.vz**2)
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices), int)
+
+md.thermal.stabilization = 2
+#analytical results
+#d2T / dz2 - w * rho_ice * c / k * dT / dz = 0   T(surface)=0  T(bed)=10 = > T = A exp(alpha z) + B
+alpha = 0.1 / md.constants.yts * md.materials.rho_ice * md.materials.heatcapacity / md.materials.thermalconductivity  #alpha = w rho_ice c / k  and w = 0.1m / an
+A = 10. / (np.exp(alpha * (-1000.)) - 1.)  #A = T(bed) / (exp(alpha * bed) - 1)  with bed= -1000 T(bed)=10
+B = -A
+md.initialization.temperature = A * np.exp(alpha * md.mesh.z) + B
+
+#modeled results
+md.cluster = generic('name', gethostname(), 'np', 2)
+md = solve(md, 'Thermal')
+
+#plot results
+comp_temp = md.results.ThermalSolution.Temperature
+relative = np.abs((comp_temp - md.initialization.temperature) / md.initialization.temperature) * 100.
+relative[np.nonzero(comp_temp == md.initialization.temperature)[0]] = 0.
+#plotmodel(md, 'data', comp_temp, 'title', 'Modeled temperature [K]', 'data', md.initialization.temperature, 'view', 3, ...
+#       'title', 'Analytical temperature [K]', 'view', 3, 'data', comp_temp - md.initialization.temperature, ...
+#       'title', 'Absolute error [K]', 'view', 3, 'data', relative, 'title', 'Relative error [%]', 'view', 3, ...
+#       'figposition', 'mathieu', 'FontSize  #all', 20)
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('thermaladvection', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 0.7, 'hardcopy', 'off')
+#       system(['mv thermaladvection.png ' ISSM_DIR '/website/doc_pdf/validation/Images/EISMINT '])
+
+#Fields and tolerances to track changes
+field_names = ['AdvectionTemperature']
+field_tolerances = [1e-13]
+field_values = [comp_temp]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1303.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1303.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1303.m	(revision 27955)
@@ -0,0 +1,45 @@
+%Test Name: ThermalConduction
+% This file can be run to check that the conduction is correctly modeled.
+% There is no velocity (no advection) the only thermal boundary conditions are an imposed temperature
+% at the lower and upper surface. The result must be a linear temperature from the upper to the lower
+% surface. if it is not the case, something is thermal modeling has been changed...
+printingflag=false;
+
+md=model();
+md=triangle(md,'../Exp/Square.exp',100000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareThermal.par');
+md=extrude(md,11,2.);
+md=setflowequation(md,'HO','all');
+
+pos1=find(md.mesh.elementonbase);     md.thermal.spctemperature(md.mesh.elements(pos1,1:3))=10.;
+pos2=find(md.mesh.elementonsurface); md.thermal.spctemperature(md.mesh.elements(pos2,4:6))=0.;
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%analytical results
+%d2T/dz2=0 T(bed)=10 T(surface)=0  => T=0*(z-bed)/thickness+10*(surface-z)/thickness
+%each layer of the 3d mesh must have a constant value
+md.initialization.temperature=10.*(md.geometry.surface-md.mesh.z)./md.geometry.thickness;
+
+%modeled results
+md.cluster=generic('name',oshostname(),'np',2);
+md=solve(md,'Thermal');
+
+%plot results
+comp_temp=md.results.ThermalSolution.Temperature;
+relative=abs((comp_temp-md.initialization.temperature)./md.initialization.temperature)*100.;
+relative(find(comp_temp==md.initialization.temperature))=0.;
+plotmodel(md,'data',comp_temp,'title','Modeled temperature [K]','data',md.initialization.temperature,'view',3,...
+	'title','Analytical temperature [K]','view',3,'data',comp_temp-md.initialization.temperature,...
+	'title','Absolute error [K]','view',3,'data',relative,'title','Relative error [%]','view',3,...
+	'figposition','mathieu','FontSize#all',20)
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('thermalconduction','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+	system(['mv thermalconduction.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal ']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={'ConductionTemperature'};
+field_tolerances={1e-13};
+field_values    ={comp_temp};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1303.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1303.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1303.py	(revision 27955)
@@ -0,0 +1,61 @@
+#Test Name: ThermalConduction
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+"""
+This file can be run to check that the conduction is correctly modeled.
+There is no velocity (no advection) the only thermal boundary conditions are an imposed temperature
+at the lower and upper surface. The result must be a linear temperature from the upper to the lower
+surface. if it is not the case, something is thermal modeling has been changed...
+"""
+
+printingflag = False
+
+md = model()
+md = triangle(md, '../Exp/Square.exp', 100000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareThermal.py')
+md.extrude(11, 2.)
+md = setflowequation(md, 'HO', 'all')
+
+
+pos1 = np.where(np.isnan(md.mesh.lowerelements))[0]
+md.thermal.spctemperature[md.mesh.elements[pos1, 0:3] - 1] = 10.
+pos2 = np.where(np.isnan(md.mesh.upperelements))[0]
+md.thermal.spctemperature[md.mesh.elements[pos2, 3:6] - 1] = 0.
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices), int)
+
+#analytical results
+#d2T / dz2 = 0 T(bed)=10 T(surface)=0 = > T = 0 * (z - bed) / thickness + 10 * (surface-z) / thickness
+#each layer of the 3d mesh must have a constant value
+md.initialization.temperature = 10. * (md.geometry.surface - md.mesh.z) / md.geometry.thickness
+
+#modeled results
+md.cluster = generic('name', gethostname(), 'np', 2)
+md = solve(md, 'Thermal')
+
+#plot results
+comp_temp = md.results.ThermalSolution.Temperature
+relative = np.abs((comp_temp - md.initialization.temperature) / md.initialization.temperature) * 100.
+relative[np.nonzero(comp_temp == md.initialization.temperature)[0]] = 0.
+#plotmodel(md, 'data', comp_temp, 'title', 'Modeled temperature [K]', 'data', md.initialization.temperature, 'view', 3, ...
+#       'title', 'Analytical temperature [K]', 'view', 3, 'data', comp_temp - md.initialization.temperature, ...
+#       'title', 'Absolute error [K]', 'view', 3, 'data', relative, 'title', 'Relative error [%]', 'view', 3, ...
+#       'figposition', 'mathieu', 'FontSize  #all', 20)
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('thermalconduction', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 0.7, 'hardcopy', 'off')
+#       system(['mv thermalconduction.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal '])
+
+#Fields and tolerances to track changes
+field_names = ['ConductionTemperature']
+field_tolerances = [1e-13]
+field_values = [comp_temp]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1304.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1304.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1304.m	(revision 27955)
@@ -0,0 +1,45 @@
+%Test Name: ThermalGeothermalFlux
+% This file can be run to check that the geothermal flux in simple conduction is correctly modeled.
+% There is no velocity (no advection) the only thermal boundary conditions are an imposed temperature
+% at upper surface and an impose flux at its base. The result must be a linear temperature from the upper to the lower
+% surface with an imposed slope (Geothermal flux). if it is not the case, something is thermal modeling has been changed...
+printingflag=false;
+
+md=model();
+md=triangle(md,'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareThermal.par');
+md=extrude(md,11,1.);
+md=setflowequation(md,'HO','all');
+
+pos2=find(md.mesh.elementonsurface); md.thermal.spctemperature(md.mesh.elements(pos2,4:6))=0.;
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.geothermalflux(:)=0.1; %100mW/m^2
+
+%analytical results
+%the result is linear with depth and is equal to 0 on the upper surface (See BC)
+%d2T/dz2=0  -k*dT/dz(bed)=G  T(surface)=0  => T=-G/k*(z-surface)
+md.initialization.temperature=-0.1/md.materials.thermalconductivity*(md.mesh.z-md.geometry.surface); %G=0.1 W/m2
+
+%modeled results
+md.cluster=generic('name',oshostname(),'np',2);
+md=solve(md,'Thermal');
+
+%plot results
+comp_temp=md.results.ThermalSolution.Temperature;
+relative=abs((comp_temp-md.initialization.temperature)./md.initialization.temperature)*100.;
+relative(find(comp_temp==md.initialization.temperature))=0.;
+plotmodel(md,'data',comp_temp,'title','Modeled temperature [K]','data',md.initialization.temperature,'view',3,...
+	'title','Analytical temperature','view',3,'data',comp_temp-md.initialization.temperature,...
+	'title','Absolute error [K]','view',3,'data',relative,'title','Relative error [%]','view',3,...
+	'figposition','mathieu','FontSize#all',20)
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('thermalgeothermalflux','png','margin','on','marginsize',25,'frame','off','resolution',0.7,'hardcopy','off');
+	system(['mv thermalgeothermalflux.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal ']);
+end
+
+%Fields and tolerances to track changes
+field_names     ={'GeothermalFluxTemperature'};
+field_tolerances={1e-13};
+field_values    ={comp_temp};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1304.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1304.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1304.py	(revision 27955)
@@ -0,0 +1,59 @@
+#Test Name: ThermalGeothermalFlux
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+"""
+This file can be run to check that the geothermal flux in simple conduction is correctly modeled.
+There is no velocity (no advection) the only thermal boundary conditions are an imposed temperature
+at upper surface and an impose flux at its base. The result must be a linear temperature from the upper to the lower
+surface with an imposed slope (Geothermal flux). if it is not the case, something is thermal modeling has been changed...
+"""
+
+printingflag = False
+
+md = model()
+md = triangle(md, '../Exp/Square.exp', 100000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareThermal.py')
+md.extrude(11, 1.)
+md = setflowequation(md, 'HO', 'all')
+
+pos2 = np.where(np.isnan(md.mesh.upperelements))[0]
+md.thermal.spctemperature[md.mesh.elements[pos2, 3:6] - 1] = 0.
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices), int)
+md.basalforcings.geothermalflux[:] = 0.1  #100mW / m^2
+
+#analytical results
+#the result is linear with depth and is equal to 0 on the upper surface (See BC)
+#d2T / dz2 = 0 - k * dT / dz(bed)=G  T(surface)=0 = > T= -G / k * (z - surface)
+md.initialization.temperature = -0.1 / md.materials.thermalconductivity * (md.mesh.z - md.geometry.surface)  #G = 0.1 W / m2
+
+#modeled results
+md.cluster = generic('name', gethostname(), 'np', 2)
+md = solve(md, 'Thermal')
+
+#plot results
+comp_temp = md.results.ThermalSolution.Temperature
+relative = np.abs((comp_temp - md.initialization.temperature) / md.initialization.temperature) * 100.
+relative[np.where(comp_temp == md.initialization.temperature)[0]] = 0.
+#plotmodel(md, 'data', comp_temp, 'title', 'Modeled temperature [K]', 'data', md.initialization.temperature, 'view', 3, ...
+#       'title', 'Analytical temperature', 'view', 3, 'data', comp_temp - md.initialization.temperature, ...
+#       'title', 'Absolute error [K]', 'view', 3, 'data', relative, 'title', 'Relative error [%]', 'view', 3, ...
+#       'figposition', 'mathieu', 'FontSize  #all', 20)
+if printingflag:
+    pass
+#       set(gcf, 'Color', 'w')
+#       printmodel('thermalgeothermalflux', 'png', 'margin', 'on', 'marginsize', 25, 'frame', 'off', 'resolution', 0.7, 'hardcopy', 'off')
+#       system(['mv thermalgeothermalflux.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Thermal '])
+
+#Fields and tolerances to track changes
+field_names = ['GeothermalFluxTemperature']
+field_tolerances = [1e-13]
+field_values = [comp_temp]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test131.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test131.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test131.m	(revision 27955)
@@ -0,0 +1,15 @@
+%Test Name: SquareShelfConstrainedMasstransp2dStreamline
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.stabilization=2;
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test131.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test131.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test131.py	(revision 27955)
@@ -0,0 +1,24 @@
+#Test Name: SquareShelfConstrainedMasstransp2dStreamline 
+from model import *
+from socket import gethostname
+from triangle import *
+from meshconvert import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = meshconvert(md)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.masstransport.stabilization = 2
+md = solve(md, 'Masstransport')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-13]
+field_values = [md.results.MasstransportSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test132.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test132.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test132.m	(revision 27955)
@@ -0,0 +1,15 @@
+%Test Name: SquareShelfConstrainedMasstransp2dFCT
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.stabilization=4;
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test132.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test132.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test132.py	(revision 27955)
@@ -0,0 +1,24 @@
+#Test Name: SquareShelfConstrainedMasstransp2dFCT 
+from model import *
+from socket import gethostname
+from triangle import *
+from meshconvert import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = meshconvert(md)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.masstransport.stabilization = 4
+md = solve(md, 'Masstransport')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-13]
+field_values = [md.results.MasstransportSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test133.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test133.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test133.m	(revision 27955)
@@ -0,0 +1,15 @@
+%Test Name: SquareShelfConstrainedMasstransp2dSUPG
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.stabilization=5;
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test133.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test133.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test133.py	(revision 27955)
@@ -0,0 +1,24 @@
+#Test Name: SquareShelfConstrainedMasstransp2dSUPG
+from model import *
+from socket import gethostname
+from triangle import *
+from meshconvert import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = meshconvert(md)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.masstransport.stabilization = 5
+md = solve(md, 'Masstransport')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-13]
+field_values = [md.results.MasstransportSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test134.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test134.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test134.m	(revision 27955)
@@ -0,0 +1,17 @@
+%Test Name: SquareShelfConstrainedSampling
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md = md.sampling.setparameters(md,2e5,1);
+md.sampling.seed = 100;
+md.sampling.phi = zeros(md.mesh.numberofvertices,1);
+md.cluster=generic('name',oshostname(),'np',1);
+md.cluster.np=1;
+md=solve(md,'smp');
+
+%Fields and tolerances to track changes
+field_names     ={'Sample'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.SamplingSolution.Sample),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1401.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1401.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1401.m	(revision 27955)
@@ -0,0 +1,80 @@
+%Test Name: AdaptiveMeshRefinement1
+%test the anisotropic mesh adaptation
+%function to capture = exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+printingflag=false;
+
+%create square mesh
+L=1.; %in m
+nx=70; %numberof nodes in x direction
+ny=70;
+md=model();
+
+%mesh adaptation loop YAMS
+md=squaremesh(md,L,L,nx,ny);
+md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh1_yams1','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh1_yams1.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+
+md=YamsCall(md,md.inversion.vel_obs,0.001,0.3,1.3,10.^-4);
+md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh1_yams2','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh1_yams2.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+
+md=YamsCall(md,md.inversion.vel_obs,0.001,0.3,2.5,0.008);
+md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh1_yams3','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh1_yams3.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+x1=md.mesh.x;
+y1=md.mesh.y;
+
+%mesh adaptation loop BAMG
+md=squaremesh(md,L,L,nx,ny);
+md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh1_bamg1','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh1_bamg1.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+
+md.private.bamg=NaN;
+md=bamg(md,'field',md.inversion.vel_obs,'hmin',0.001,'hmax',0.3,'gradation',1.3,'err',10.^-4);
+md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh1_bamg2','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh1_bamg2.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+
+md.private.bamg=NaN;
+md=bamg(md,'field',md.inversion.vel_obs,'hmin',0.001,'hmax',0.3,'gradation',2.5,'err',0.008);
+md.inversion.vel_obs=exp(-(sqrt((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)-0.75).^2*10.^6)+((md.mesh.x+0.1).^2+(md.mesh.y+0.1).^2)/2.;
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh1_bamg3','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh1_bamg3.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+x2=md.mesh.x;
+y2=md.mesh.y;
+
+%Fields and tolerances to track changes
+field_names     ={'xyams','yyams','xbamg','ybamg'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	x1, y1,...
+	x2, y2,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1402.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1402.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1402.m	(revision 27955)
@@ -0,0 +1,110 @@
+%Test Name: AdaptiveMeshRefinement2
+%test the anisotropic mesh adaptation
+printingflag=false;
+
+%create square mesh
+L=1.; %in m
+nx=30; %numberof nodes in x direction
+ny=30;
+md=model();
+
+%mesh adaptation loop YAMS
+md=squaremesh(md,L,L,nx,ny);
+u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
+md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
+	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh2_yams1','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh2_yams1.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+
+md=YamsCall(md,md.inversion.vel_obs,0.005,0.3,2.3,10.^-2);
+u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
+md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
+	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh2_yams2','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh2_yams2.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+
+md=YamsCall(md,md.inversion.vel_obs,0.005,0.3,3,0.005);
+u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
+md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
+	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh2_yams3','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh2_yams3.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+x1=md.mesh.x;
+y1=md.mesh.y;
+
+%mesh adaptation loop BAMG
+md=squaremesh(md,L,L,nx,ny);
+u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
+md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
+	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh2_bamg1','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh2_bamg1.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+
+md.private.bamg=NaN;
+md=bamg(md,'field',md.inversion.vel_obs,'hmin',0.005,'hmax',0.3,'gradation',2.3,'err',10.^-2);
+u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
+md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
+	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh2_bamg2','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh2_bamg2.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+
+md.private.bamg=NaN;
+md=bamg(md,'field',md.inversion.vel_obs,'hmin',0.005,'hmax',0.3,'gradation',3,'err',0.005);
+u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
+md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
+	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh2_bamg3','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh2_bamg3.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+
+md.private.bamg=NaN;
+md=bamg(md,'field',md.inversion.vel_obs,'hmin',0.005,'hmax',0.3,'gradation',1.5,'err',0.003,'anisomax',1);
+u=4.*md.mesh.x-2.; v=4.*md.mesh.y-2.;
+md.inversion.vel_obs=tanh(30.*(u.^2+v.^2-0.25)) ...
+	+tanh(30.*((u-0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u-0.75).^2+(v+0.75).^2-0.25)) ...
+	+tanh(30.*((u+0.75).^2+(v-0.75).^2-0.25)) +tanh(30.*((u+0.75).^2+(v+0.75).^2-0.25));
+plotmodel(md,'data',md.inversion.vel_obs,'data',md.inversion.vel_obs,'nlines',1,'ncols',2,'title','','figposition',[500 500 1000 500],'axis#all','equal','xlim#all',[0 1],'ylim#all',[0 1],'edgecolor#1','w'); pause(0.5);
+if printingflag,
+	set(gcf,'Color','w')
+	printmodel('mesh2_bamgiso','png','margin','on','marginsize',25,'frame','off','resolution',1,'hardcopy','off');
+	system(['mv mesh2_bamgiso.png ' ISSM_DIR '/website/doc_pdf/validation/Images/Mesh/ ']);
+end
+x2=md.mesh.x;
+y2=md.mesh.y;
+
+%Fields and tolerances to track changes
+field_names     ={'xyams','yyams','xbamg','ybamg'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	x1, y1,...
+	x2, y2,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1501.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1501.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1501.m	(revision 27955)
@@ -0,0 +1,208 @@
+%Test Name: SquareShelfTranSawTooth2d
+printingflag = false;
+
+md=triangle(model(),'../Exp/Square.exp',350000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isthermal=0;
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=2000.;
+
+%Solve for thinning rate -> -1 * surface mass balance
+smb= 2.*ones(md.mesh.numberofvertices,1);
+md.smb.mass_balance= smb;
+md.basalforcings.groundedice_melting_rate= smb;
+
+md=solve(md,'Masstransport');
+
+for i=1:10
+	 md=solve(md,'Masstransport');
+	 md.smb.mass_balance= md.smb.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness);
+end
+
+%Set up transient
+smb = md.smb.mass_balance;
+
+tooth= [ [ones(400,1)*(smb') - 10.]' [ones(400,1)*(smb')]' ];
+smb=[ [ones(399,1)*(smb')]' smb  tooth tooth];
+
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.:2000.];
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4', ...
+	'Vx5','Vy5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SmbMassBalance5'};
+field_tolerances={1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(400).Vx),...
+	(md.results.TransientSolution(400).Vy),...
+	(md.results.TransientSolution(400).Vel),...
+	(md.results.TransientSolution(400).Pressure),...
+	(md.results.TransientSolution(400).Base),...
+	(md.results.TransientSolution(400).Surface),...
+	(md.results.TransientSolution(400).Thickness),...
+	(md.results.TransientSolution(400).SmbMassBalance),...
+	(md.results.TransientSolution(800).Vx),...
+	(md.results.TransientSolution(800).Vy),...
+	(md.results.TransientSolution(800).Vel),...
+	(md.results.TransientSolution(800).Pressure),...
+	(md.results.TransientSolution(800).Base),...
+	(md.results.TransientSolution(800).Surface),...
+	(md.results.TransientSolution(800).Thickness),...
+	(md.results.TransientSolution(800).SmbMassBalance),...
+	(md.results.TransientSolution(1200).Vx),...
+	(md.results.TransientSolution(1200).Vy),...
+	(md.results.TransientSolution(1200).Vel),...
+	(md.results.TransientSolution(1200).Pressure),...
+	(md.results.TransientSolution(1200).Base),...
+	(md.results.TransientSolution(1200).Surface),...
+	(md.results.TransientSolution(1200).Thickness),...
+	(md.results.TransientSolution(1200).SmbMassBalance),...
+	(md.results.TransientSolution(1600).Vx),...
+	(md.results.TransientSolution(1600).Vy),...
+	(md.results.TransientSolution(1600).Vel),...
+	(md.results.TransientSolution(1600).Pressure),...
+	(md.results.TransientSolution(1600).Base),...
+	(md.results.TransientSolution(1600).Surface),...
+	(md.results.TransientSolution(1600).Thickness),...
+	(md.results.TransientSolution(1600).SmbMassBalance),...
+	(md.results.TransientSolution(2000).Vx),...
+	(md.results.TransientSolution(2000).Vy),...
+	(md.results.TransientSolution(2000).Vel),...
+	(md.results.TransientSolution(2000).Pressure),...
+	(md.results.TransientSolution(2000).Base),...
+	(md.results.TransientSolution(2000).Surface),...
+	(md.results.TransientSolution(2000).Thickness),...
+	(md.results.TransientSolution(2000).SmbMassBalance),...
+	};
+
+if printingflag,
+
+	starttime = 360;
+	endtime = 2000;
+	res = 40;
+	ts = [starttime:res:endtime];
+
+	index = md.mesh.elements;
+	x1=md.mesh.x(index(:,1)); x2=md.mesh.x(index(:,2)); x3=md.mesh.x(index(:,3));
+	y1=md.mesh.y(index(:,1)); y2=md.mesh.y(index(:,2)); y3=md.mesh.y(index(:,3));
+	areas=(0.5*((x2-x1).*(y3-y1)-(y2-y1).*(x3-x1)));
+
+	thickness = [];
+	volume = [];
+	massbal = [];
+	velocity = [];
+	for t=starttime:endtime
+		thickness = [thickness (md.results.TransientSolution(t).Thickness)];
+		volume = [volume mean(md.results.TransientSolution(t).Thickness(md.mesh.elements),2).*areas];
+		massbal = [massbal (md.results.TransientSolution(t).SmbMassBalance)];
+		velocity = [velocity (md.results.TransientSolution(t).Vel)];
+	end
+
+	figure('Position', [0 0 860 932])
+
+	options = plotoptions('data','transient_movie','unit','km');
+	options = options.list{1};
+	options = checkplotoptions(md,options);
+
+	%loop over the time steps
+	results=md.results.TransientSolution;
+	count = 1;
+	for i=ts
+
+		subplot(5,9,[28:31 37:40])
+		set(gca,'pos',get(gca,'pos')+[-0.08 -0.08 0.07 0.08])
+		field = 'Thickness';
+
+		%process data
+		[x y z elements is2d isplanet]=processmesh(md,results(i).(field),options);
+		[data datatype]=processdata(md,results(i).(field),options);
+
+		titlestring=[field ' at time ' num2str(results(i).time) ' year'];
+		plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+		options=changefieldvalue(options,'title',titlestring);
+		options=addfielddefault(options,'colorbar',1);
+		options=changefieldvalue(options,'caxis',[0 max(max(thickness))]);
+		applyoptions(md,[],options);
+
+		subplot(5,9,[33:36 42:45])
+		set(gca,'pos',get(gca,'pos')+[-0.00 -0.08 0.07 0.08])
+		field = 'Vel';
+
+		%process data
+		[x y z elements is2d isplanet]=processmesh(md,results(i).(field),options);
+		[data datatype]=processdata(md,results(i).(field),options);
+
+		titlestring=[field ' at time ' num2str(results(i).time) ' year'];
+		plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+		options=changefieldvalue(options,'title',titlestring);
+		options=addfielddefault(options,'colorbar',1);
+		options=changefieldvalue(options,'caxis',[0 max(max(velocity))]);
+		applyoptions(md,[],options);
+
+		subplot(5,4,1:4)
+		cla
+		set(gca,'pos',get(gca,'pos')+[-0.07 0.03 0.12 0.015])
+		plot(starttime:endtime,mean(massbal),'k','LineWidth', 4)
+		hold on
+		ya = ylim;
+		plot([i i], ya, 'r', 'LineWidth',6)
+		ylim(ya); xlim([starttime endtime]);
+		title('Surface Mass Balance','FontSize',14)
+		ylabel('m/year','FontSize',14)
+
+		subplot(5,4,5:8)
+		cla
+		set(gca,'pos',get(gca,'pos')+[-0.07 0.015 0.12 0.015])
+		plot(starttime:endtime,sum(volume)/1000/1000/1000,'LineWidth',4)
+		hold on
+		ya = ylim;
+		plot([i i], ya, 'r', 'LineWidth',6)
+		ylim(ya); xlim([starttime endtime]);
+		title('Ice Volume','FontSize',14)
+		ylabel('km^3','FontSize',14)
+
+		subplot(5,4,9:12)
+		cla
+		set(gca,'pos',get(gca,'pos')+[-0.07 0 0.12 0.015])
+		plot(starttime:endtime,mean(velocity)/1000, 'LineWidth', 4)
+		hold on
+		ya = ylim;
+		plot([i i], ya, 'r', 'LineWidth',6)
+		ylim(ya); xlim([starttime endtime]);
+		title('Mean Velocity','FontSize', 14)
+		ylabel('km/year','FontSize', 14)
+		xlabel('year','FontSize', 14)
+
+		set(gcf,'Renderer','zbuffer','color','white'); %fixes a bug on Mac OS X (not needed in future Matlab version)
+		if i==starttime,
+			%initialize images and frame
+			frame=getframe(gcf);
+			[images,map]=rgb2ind(frame.cdata,256,'nodither');
+			images(1,1,1,length(ts))=0;
+		else
+			frame=getframe(gcf);
+			images(:,:,1,count) = rgb2ind(frame.cdata,[map; map],'nodither');
+		end
+
+		count = count+1;
+
+	end
+
+	filename='transawtooth2d.gif';
+	imwrite(images,map,filename,'DelayTime',1.0,'LoopCount',inf)
+
+end %printingflag
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1501.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1501.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1501.py	(revision 27955)
@@ -0,0 +1,217 @@
+#Test Name: SquareShelfTranSawTooth2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+printingflag = False
+
+md = triangle(model(), '../Exp/Square.exp', 350000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.isthermal = False
+
+md.timestepping.time_step = 1.
+md.settings.output_frequency = 1
+md.timestepping.final_time = 2000.
+
+#Solve for thinning rate-> -1 * surface mass balance
+smb = 2. * np.ones((md.mesh.numberofvertices))
+md.smb.mass_balance = smb
+md.basalforcings.groundedice_melting_rate = smb
+
+md = solve(md, 'Masstransport')
+
+for i in range(1, 11):
+    md = solve(md, 'Masstransport')
+    md.smb.mass_balance = md.smb.mass_balance - (np.squeeze(md.results.MasstransportSolution.Thickness) - md.geometry.thickness)
+
+#Set up transient
+smb = md.smb.mass_balance
+
+#tooth= [ [ones(400, 1) * (smb') - 10.]' [ones(400, 1) * (smb')]' ]
+tooth = np.vstack((np.tile(smb - 10., (400, 1)), np.tile(smb, (400, 1))))
+#smb = [ [ones(399, 1) * (smb')]' smb  tooth tooth]
+smb = np.vstack((np.tile(smb, (399, 1)), smb, tooth, tooth)).T
+
+#md.smb.mass_balance= smb
+#md.smb.mass_balance(end + 1, :) = [1.:2000.]
+md.smb.mass_balance = np.vstack((smb, np.arange(1, 2001)))
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'SmbMassBalance3',
+               'Vx4', 'Vy4', 'Vel4', 'Pressure4', 'Bed4', 'Surface4', 'Thickness4', 'SmbMassBalance4',
+               'Vx5', 'Vy5', 'Vel5', 'Pressure5', 'Bed5', 'Surface5', 'Thickness5', 'SmbMassBalance5']
+field_tolerances = [1e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10]
+field_values = [md.results.TransientSolution[400 - 1].Vx,
+                md.results.TransientSolution[400 - 1].Vy,
+                md.results.TransientSolution[400 - 1].Vel,
+                md.results.TransientSolution[400 - 1].Pressure,
+                md.results.TransientSolution[400 - 1].Base,
+                md.results.TransientSolution[400 - 1].Surface,
+                md.results.TransientSolution[400 - 1].Thickness,
+                md.results.TransientSolution[400 - 1].SmbMassBalance,
+                md.results.TransientSolution[800 - 1].Vx,
+                md.results.TransientSolution[800 - 1].Vy,
+                md.results.TransientSolution[800 - 1].Vel,
+                md.results.TransientSolution[800 - 1].Pressure,
+                md.results.TransientSolution[800 - 1].Base,
+                md.results.TransientSolution[800 - 1].Surface,
+                md.results.TransientSolution[800 - 1].Thickness,
+                md.results.TransientSolution[800 - 1].SmbMassBalance,
+                md.results.TransientSolution[1200 - 1].Vx,
+                md.results.TransientSolution[1200 - 1].Vy,
+                md.results.TransientSolution[1200 - 1].Vel,
+                md.results.TransientSolution[1200 - 1].Pressure,
+                md.results.TransientSolution[1200 - 1].Base,
+                md.results.TransientSolution[1200 - 1].Surface,
+                md.results.TransientSolution[1200 - 1].Thickness,
+                md.results.TransientSolution[1200 - 1].SmbMassBalance,
+                md.results.TransientSolution[1600 - 1].Vx,
+                md.results.TransientSolution[1600 - 1].Vy,
+                md.results.TransientSolution[1600 - 1].Vel,
+                md.results.TransientSolution[1600 - 1].Pressure,
+                md.results.TransientSolution[1600 - 1].Base,
+                md.results.TransientSolution[1600 - 1].Surface,
+                md.results.TransientSolution[1600 - 1].Thickness,
+                md.results.TransientSolution[1600 - 1].SmbMassBalance,
+                md.results.TransientSolution[2000 - 1].Vx,
+                md.results.TransientSolution[2000 - 1].Vy,
+                md.results.TransientSolution[2000 - 1].Vel,
+                md.results.TransientSolution[2000 - 1].Pressure,
+                md.results.TransientSolution[2000 - 1].Base,
+                md.results.TransientSolution[2000 - 1].Surface,
+                md.results.TransientSolution[2000 - 1].Thickness,
+                md.results.TransientSolution[2000 - 1].SmbMassBalance]
+
+if printingflag:
+    pass
+    """
+    starttime = 360
+    endtime = 2000
+    res = 40
+    ts = [starttime:res:endtime]
+
+    index = md.mesh.elements
+    x1 = md.mesh.x(index(:)) x2 = md.mesh.x(index(:, 2)) x3 = md.mesh.x(index(:, 3))
+    y1 = md.mesh.y(index(:)) y2 = md.mesh.y(index(:, 2)) y3 = md.mesh.y(index(:, 3))
+    areas=(0.5 * ((x2 - x1). * (y3 - y1) - (y2 - y1). * (x3 - x1)))
+
+    thickness = []
+    volume = []
+    massbal = []
+    velocity = []
+    for t = starttime:endtime
+            thickness = [thickness (md.results.TransientSolution(t).Thickness)]
+            volume = [volume mean(md.results.TransientSolution(t).Thickness.value, 2). * areas]
+            massbal = [massbal (md.results.TransientSolution(t).SmbMassBalance)]
+            velocity = [velocity (md.results.TransientSolution(t).Vel)]
+
+    figure('Position', [0 0 860 932])
+
+    options = plotoptions('data', 'transient_movie', 'unit', 'km')
+    options = options.list{1}
+    options = checkplotoptions(md, options)
+
+    %loop over the time steps
+    results = md.results.TransientSolution
+    count = 1
+    for i = ts
+
+        subplot(5, 9, [28:31 37:40])
+        set(gca, 'pos', get(gca, 'pos') + [ -0.08 - 0.08 0.07 0.08])
+        field = 'Thickness'
+
+        %process data
+        [x y z elements is2d isplanet] = processmesh(md, results(i).(field), options)
+        [data datatype] = processdata(md, results(i).(field), options)
+
+        titlestring = [field ' at time ' num2str(results(i).time / md.constants.yts) ' year']
+        plot_unit(x, y, z, elements, data, is2d, isplanet, datatype, options)
+        options = changefieldvalue(options, 'title', titlestring)
+        options = addfielddefault(options, 'colorbar', 1)
+        options = changefieldvalue(options, 'caxis', [0 max(max(thickness))])
+        applyoptions(md, [], options)
+
+        subplot(5, 9, [33:36 42:45])
+        set(gca, 'pos', get(gca, 'pos') + [ -0.00 - 0.08 0.07 0.08])
+        field = 'Vel'
+
+        %process data
+        [x y z elements is2d isplanet] = processmesh(md, results(i).(field), options)
+        [data datatype] = processdata(md, results(i).(field), options)
+
+        titlestring = [field ' at time ' num2str(results(i).time / md.constants.yts) ' year']
+        plot_unit(x, y, z, elements, data, is2d, isplanet, datatype, options)
+        options = changefieldvalue(options, 'title', titlestring)
+        options = addfielddefault(options, 'colorbar', 1)
+        options = changefieldvalue(options, 'caxis', [0 max(max(velocity))])
+        applyoptions(md, [], options)
+
+        subplot(5, 4, 1:4)
+        cla
+        set(gca, 'pos', get(gca, 'pos') + [ -0.07 0.03 0.12 0.015])
+        plot(starttime:endtime, mean(massbal), 'k', 'LineWidth', 4)
+        hold on
+        ya = ylim
+        plot([i i], ya, 'r', 'LineWidth', 6)
+        ylim(ya) xlim([starttime endtime])
+        title('Surface Mass Balance', 'FontSize', 14)
+        ylabel('m/year', 'FontSize', 14)
+
+        subplot(5, 4, 5:8)
+        cla
+        set(gca, 'pos', get(gca, 'pos') + [ -0.07 0.015 0.12 0.015])
+        plot(starttime:endtime, sum(volume) / 1000 / 1000 / 1000, 'LineWidth', 4)
+        hold on
+        ya = ylim
+        plot([i i], ya, 'r', 'LineWidth', 6)
+        ylim(ya) xlim([starttime endtime])
+        title('Ice Volume', 'FontSize', 14)
+        ylabel('km^3', 'FontSize', 14)
+
+        subplot(5, 4, 9:12)
+        cla
+        set(gca, 'pos', get(gca, 'pos') + [ -0.07 0 0.12 0.015])
+        plot(starttime:endtime, mean(velocity) / 1000, 'LineWidth', 4)
+        hold on
+        ya = ylim
+        plot([i i], ya, 'r', 'LineWidth', 6)
+        ylim(ya) xlim([starttime endtime])
+        title('Mean Velocity', 'FontSize', 14)
+        ylabel('km/year', 'FontSize', 14)
+        xlabel('year', 'FontSize', 14)
+
+        set(gcf, 'Renderer', 'zbuffer', 'color', 'white') %fixes a bug on Mac OS X (not needed in future Matlab version)
+        if i = starttime,
+                %initialize images and frame
+                frame = getframe(gcf)
+                [images, map] = rgb2ind(frame.cdata, 256, 'nodither')
+                images(1, 1, 1, length(ts))=0
+        else
+                frame = getframe(gcf)
+                images(:, :, 1, count) = rgb2ind(frame.cdata, map, 'nodither')
+        end
+
+        count = count + 1
+
+        end
+
+        filename = 'transawtooth2d.gif'
+        imwrite(images, map, filename, 'DelayTime', 1.0, 'LoopCount', inf)
+        """
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1502.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1502.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1502.m	(revision 27955)
@@ -0,0 +1,214 @@
+%Test Name: SquareShelfTranSawTooth3d
+printingflag = false;
+
+md=triangle(model(),'../Exp/Square.exp',350000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md=extrude(md,3,1.);
+md.cluster=generic('name',oshostname(),'np',1);
+md.transient.isthermal=0;
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=2000.;
+
+%Solve for thinning rate -> -1 * surface mass balance
+smb= 2.*ones(md.mesh.numberofvertices,1);
+md.smb.mass_balance= smb;
+md.basalforcings.groundedice_melting_rate= smb;
+
+md=solve(md,'Masstransport');
+
+for i=1:10
+	 md=solve(md,'Masstransport');
+	 md.smb.mass_balance= md.smb.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness);
+end
+
+%Set up transient
+smb = md.smb.mass_balance;
+
+tooth= [ [ones(400,1)*(smb') - 10.]' [ones(400,1)*(smb')]' ];
+smb=[ [ones(399,1)*(smb')]' smb  tooth tooth];
+
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.:2000.];
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4', ...
+	'Vx5','Vy5','Vz5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SmbMassBalance5'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(400).Vx),...
+	(md.results.TransientSolution(400).Vy),...
+	(md.results.TransientSolution(400).Vz),...
+	(md.results.TransientSolution(400).Vel),...
+	(md.results.TransientSolution(400).Pressure),...
+	(md.results.TransientSolution(400).Base),...
+	(md.results.TransientSolution(400).Surface),...
+	(md.results.TransientSolution(400).Thickness),...
+	(md.results.TransientSolution(400).SmbMassBalance),...
+	(md.results.TransientSolution(800).Vx),...
+	(md.results.TransientSolution(800).Vy),...
+	(md.results.TransientSolution(800).Vz),...
+	(md.results.TransientSolution(800).Vel),...
+	(md.results.TransientSolution(800).Pressure),...
+	(md.results.TransientSolution(800).Base),...
+	(md.results.TransientSolution(800).Surface),...
+	(md.results.TransientSolution(800).Thickness),...
+	(md.results.TransientSolution(800).SmbMassBalance),...
+	(md.results.TransientSolution(1200).Vx),...
+	(md.results.TransientSolution(1200).Vy),...
+	(md.results.TransientSolution(1200).Vz),...
+	(md.results.TransientSolution(1200).Vel),...
+	(md.results.TransientSolution(1200).Pressure),...
+	(md.results.TransientSolution(1200).Base),...
+	(md.results.TransientSolution(1200).Surface),...
+	(md.results.TransientSolution(1200).Thickness),...
+	(md.results.TransientSolution(1200).SmbMassBalance),...
+	(md.results.TransientSolution(1600).Vx),...
+	(md.results.TransientSolution(1600).Vy),...
+	(md.results.TransientSolution(1600).Vz),...
+	(md.results.TransientSolution(1600).Vel),...
+	(md.results.TransientSolution(1600).Pressure),...
+	(md.results.TransientSolution(1600).Base),...
+	(md.results.TransientSolution(1600).Surface),...
+	(md.results.TransientSolution(1600).Thickness),...
+	(md.results.TransientSolution(1600).SmbMassBalance),...
+	(md.results.TransientSolution(2000).Vx),...
+	(md.results.TransientSolution(2000).Vy),...
+	(md.results.TransientSolution(2000).Vz),...
+	(md.results.TransientSolution(2000).Vel),...
+	(md.results.TransientSolution(2000).Pressure),...
+	(md.results.TransientSolution(2000).Base),...
+	(md.results.TransientSolution(2000).Surface),...
+	(md.results.TransientSolution(2000).Thickness),...
+	(md.results.TransientSolution(2000).SmbMassBalance),...
+	};
+
+if printingflag,
+
+	starttime = 360;
+	endtime = 2000;
+	res = 40;
+	ts = [starttime:res:endtime];
+
+	index = md.mesh.elements;
+	x1=md.mesh.x(index(:,1)); x2=md.mesh.x(index(:,2)); x3=md.mesh.x(index(:,3));
+	y1=md.mesh.y(index(:,1)); y2=md.mesh.y(index(:,2)); y3=md.mesh.y(index(:,3));
+	areas=(0.5*((x2-x1).*(y3-y1)-(y2-y1).*(x3-x1)));
+
+	thickness = [];
+	volume = [];
+	massbal = [];
+	velocity = [];
+	for t=starttime:endtime
+		thickness = [thickness (md.results.TransientSolution(t).Thickness)];
+		volume = [volume mean(md.results.TransientSolution(t).Thickness.value,2).*areas];
+		massbal = [massbal (md.results.TransientSolution(t).SmbMassBalance)];
+		velocity = [velocity (md.results.TransientSolution(t).Vel)];
+	end
+
+	figure('Position', [0 0 1060 1060])
+
+	options = plotoptions('data','transient_movie','unit','km');
+	options = options.list{1};
+	options = checkplotoptions(md,options);
+
+	%loop over the time steps
+	results=md.results.TransientSolution;
+	count = 1;
+	for i=ts
+
+		subplot(5,9,[28:31 37:40])
+		set(gca,'pos',get(gca,'pos')+[-0.08 -0.08 0.07 0.08])
+		field = 'Thickness';
+
+		%process data
+		[x y z elements is2d isplanet]=processmesh(md,results(i).(field),options);
+		[data datatype]=processdata(md,results(i).(field),options);
+
+		titlestring=[field ' at time ' num2str(results(i).time/md.constants.yts) ' year'];
+		plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+		options=changefieldvalue(options,'title',titlestring);
+		options=addfielddefault(options,'colorbar',1);
+		options=changefieldvalue(options,'caxis',[0 max(max(thickness))]);
+		applyoptions(md,[],options);
+
+		subplot(5,9,[33:36 42:45])
+		set(gca,'pos',get(gca,'pos')+[-0.01 -0.08 0.07 0.08])
+		field = 'Vel';
+
+		%process data
+		[x y z elements is2d isplanet]=processmesh(md,results(i).(field),options);
+		[data datatype]=processdata(md,results(i).(field),options);
+
+		titlestring=[field ' at time ' num2str(results(i).time/md.constants.yts) ' year'];
+		plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+		options=changefieldvalue(options,'title',titlestring);
+		options=addfielddefault(options,'colorbar',1);
+		options=changefieldvalue(options,'caxis',[0 max(max(velocity))]);
+		applyoptions(md,[],options);
+
+		subplot(5,4,1:4)
+		cla
+		set(gca,'pos',get(gca,'pos')+[-0.07 0.03 0.12 0.015])
+		plot(starttime:endtime,mean(massbal),'k','LineWidth', 4)
+		hold on
+		ya = ylim;
+		plot([i i], ya, 'r', 'LineWidth',6)
+		ylim(ya); xlim([starttime endtime]);
+		title('Surface Mass Balance','FontSize',14)
+		ylabel('m/year','FontSize',14)
+
+		subplot(5,4,5:8)
+		cla
+		set(gca,'pos',get(gca,'pos')+[-0.07 0.015 0.12 0.015])
+		plot(starttime:endtime,sum(volume)/1000/1000/1000,'LineWidth',4)
+		hold on
+		ya = ylim;
+		plot([i i], ya, 'r', 'LineWidth',6)
+		ylim(ya); xlim([starttime endtime]);
+		title('Ice Volume','FontSize',14)
+		ylabel('km^3','FontSize',14)
+
+		subplot(5,4,9:12)
+		cla
+		set(gca,'pos',get(gca,'pos')+[-0.07 0 0.12 0.015])
+		plot(starttime:endtime,mean(velocity)/1000, 'LineWidth', 4)
+		hold on
+		ya = ylim;
+		plot([i i], ya, 'r', 'LineWidth',6)
+		ylim(ya); xlim([starttime endtime]);
+		title('Mean Velocity','FontSize', 14)
+		ylabel('km/year','FontSize', 14)
+		xlabel('year','FontSize', 14)
+
+		set(gcf,'Renderer','zbuffer','color','white'); %fixes a bug on Mac OS X (not needed in future Matlab version)
+		if i==starttime,
+			%initialize images and frame
+			frame=getframe(gcf);
+			[images,map]=rgb2ind(frame.cdata,256,'nodither');
+			images(1,1,1,length(ts))=0;
+		else
+			frame=getframe(gcf);
+			images(:,:,1,count) = rgb2ind(frame.cdata,map,'nodither');
+		end
+
+		count = count+1;
+
+	end
+
+	filename='transawtooth3d.gif';
+	imwrite(images,map,filename,'DelayTime',1.0,'LoopCount',inf)
+
+end %printingflag
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1502.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1502.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1502.py	(revision 27955)
@@ -0,0 +1,225 @@
+#Test Name: SquareShelfTranSawTooth3d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+printingflag = False
+
+md = triangle(model(), '../Exp/Square.exp', 350000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.extrude(3, 1.)
+md.cluster = generic('name', gethostname(), 'np', 2)
+md.transient.isthermal = False
+
+md.timestepping.time_step = 1.
+md.settings.output_frequency = 1
+md.timestepping.final_time = 2000.
+
+#Solve for thinning rate-> -1 * surface mass balance
+smb = 2. * np.ones((md.mesh.numberofvertices))
+md.smb.mass_balance = smb
+md.basalforcings.groundedice_melting_rate = smb
+
+md = solve(md, 'Masstransport')
+
+for i in range(1, 11):
+    md = solve(md, 'Masstransport')
+    md.smb.mass_balance = md.smb.mass_balance - (np.squeeze(md.results.MasstransportSolution.Thickness) - md.geometry.thickness)
+
+#Set up transient
+smb = md.smb.mass_balance
+
+#tooth= [ [ones(400, 1) * (smb') - 10.]' [ones(400, 1) * (smb')]' ]
+tooth = np.vstack((np.tile(smb - 10., (400, 1)), np.tile(smb, (400, 1))))
+#smb = [ [ones(399, 1) * (smb')]' smb  tooth tooth]
+smb = np.vstack((np.tile(smb, (399, 1)), smb, tooth, tooth)).T
+
+#md.smb.mass_balance= smb
+#md.smb.mass_balance(end + 1, :) = [1.:2000.]
+md.smb.mass_balance = np.vstack((smb, np.arange(1, 2001)))
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'SmbMassBalance3',
+               'Vx4', 'Vy4', 'Vz4', 'Vel4', 'Pressure4', 'Bed4', 'Surface4', 'Thickness4', 'SmbMassBalance4',
+               'Vx5', 'Vy5', 'Vz5', 'Vel5', 'Pressure5', 'Bed5', 'Surface5', 'Thickness5', 'SmbMassBalance5']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[400 - 1].Vx,
+                md.results.TransientSolution[400 - 1].Vy,
+                md.results.TransientSolution[400 - 1].Vz,
+                md.results.TransientSolution[400 - 1].Vel,
+                md.results.TransientSolution[400 - 1].Pressure,
+                md.results.TransientSolution[400 - 1].Base,
+                md.results.TransientSolution[400 - 1].Surface,
+                md.results.TransientSolution[400 - 1].Thickness,
+                md.results.TransientSolution[400 - 1].SmbMassBalance,
+                md.results.TransientSolution[800 - 1].Vx,
+                md.results.TransientSolution[800 - 1].Vy,
+                md.results.TransientSolution[800 - 1].Vz,
+                md.results.TransientSolution[800 - 1].Vel,
+                md.results.TransientSolution[800 - 1].Pressure,
+                md.results.TransientSolution[800 - 1].Base,
+                md.results.TransientSolution[800 - 1].Surface,
+                md.results.TransientSolution[800 - 1].Thickness,
+                md.results.TransientSolution[800 - 1].SmbMassBalance,
+                md.results.TransientSolution[1200 - 1].Vx,
+                md.results.TransientSolution[1200 - 1].Vy,
+                md.results.TransientSolution[1200 - 1].Vz,
+                md.results.TransientSolution[1200 - 1].Vel,
+                md.results.TransientSolution[1200 - 1].Pressure,
+                md.results.TransientSolution[1200 - 1].Base,
+                md.results.TransientSolution[1200 - 1].Surface,
+                md.results.TransientSolution[1200 - 1].Thickness,
+                md.results.TransientSolution[1200 - 1].SmbMassBalance,
+                md.results.TransientSolution[1600 - 1].Vx,
+                md.results.TransientSolution[1600 - 1].Vy,
+                md.results.TransientSolution[1600 - 1].Vz,
+                md.results.TransientSolution[1600 - 1].Vel,
+                md.results.TransientSolution[1600 - 1].Pressure,
+                md.results.TransientSolution[1600 - 1].Base,
+                md.results.TransientSolution[1600 - 1].Surface,
+                md.results.TransientSolution[1600 - 1].Thickness,
+                md.results.TransientSolution[1600 - 1].SmbMassBalance,
+                md.results.TransientSolution[2000 - 1].Vx,
+                md.results.TransientSolution[2000 - 1].Vy,
+                md.results.TransientSolution[2000 - 1].Vz,
+                md.results.TransientSolution[2000 - 1].Vel,
+                md.results.TransientSolution[2000 - 1].Pressure,
+                md.results.TransientSolution[2000 - 1].Base,
+                md.results.TransientSolution[2000 - 1].Surface,
+                md.results.TransientSolution[2000 - 1].Thickness,
+                md.results.TransientSolution[2000 - 1].SmbMassBalance]
+
+if printingflag:
+    pass
+    """
+
+    starttime = 360
+    endtime = 2000
+    res = 40
+    ts = [starttime:res:endtime]
+
+    index = md.mesh.elements
+    x1 = md.mesh.x(index(:)) x2 = md.mesh.x(index(:, 2)) x3 = md.mesh.x(index(:, 3))
+    y1 = md.mesh.y(index(:)) y2 = md.mesh.y(index(:, 2)) y3 = md.mesh.y(index(:, 3))
+    areas=(0.5 * ((x2 - x1). * (y3 - y1) - (y2 - y1). * (x3 - x1)))
+
+    thickness = []
+    volume = []
+    massbal = []
+    velocity = []
+    for t = starttime:endtime
+            thickness = [thickness (md.results.TransientSolution(t).Thickness)]
+            volume = [volume mean(md.results.TransientSolution(t).Thickness.value, 2). * areas]
+            massbal = [massbal (md.results.TransientSolution(t).SmbMassBalance)]
+            velocity = [velocity (md.results.TransientSolution(t).Vel)]
+    end
+
+    figure('Position', [0 0 1060 1060])
+
+    options = plotoptions('data', 'transient_movie', 'unit', 'km')
+    options = options.list{1}
+    options = checkplotoptions(md, options)
+
+    %loop over the time steps
+    results = md.results.TransientSolution
+    count = 1
+    for i = ts
+
+        subplot(5, 9, [28:31 37:40])
+        set(gca, 'pos', get(gca, 'pos') + [ -0.08 - 0.08 0.07 0.08])
+        field = 'Thickness'
+
+        %process data
+        [x y z elements is2d isplanet] = processmesh(md, results(i).(field), options)
+        [data datatype] = processdata(md, results(i).(field), options)
+
+        titlestring = [field ' at time ' num2str(results(i).time / md.constants.yts) ' year']
+        plot_unit(x, y, z, elements, data, is2d, isplanet, datatype, options)
+        options = changefieldvalue(options, 'title', titlestring)
+        options = addfielddefault(options, 'colorbar', 1)
+        options = changefieldvalue(options, 'caxis', [0 max(max(thickness))])
+        applyoptions(md, [], options)
+
+        subplot(5, 9, [33:36 42:45])
+        set(gca, 'pos', get(gca, 'pos') + [ -0.01 - 0.08 0.07 0.08])
+        field = 'Vel'
+
+        %process data
+        [x y z elements is2d isplanet] = processmesh(md, results(i).(field), options)
+        [data datatype] = processdata(md, results(i).(field), options)
+
+        titlestring = [field ' at time ' num2str(results(i).time / md.constants.yts) ' year']
+        plot_unit(x, y, z, elements, data, is2d, isplanet, datatype, options)
+        options = changefieldvalue(options, 'title', titlestring)
+        options = addfielddefault(options, 'colorbar', 1)
+        options = changefieldvalue(options, 'caxis', [0 max(max(velocity))])
+        applyoptions(md, [], options)
+
+        subplot(5, 4, 1:4)
+        cla
+        set(gca, 'pos', get(gca, 'pos') + [ -0.07 0.03 0.12 0.015])
+        plot(starttime:endtime, mean(massbal), 'k', 'LineWidth', 4)
+        hold on
+        ya = ylim
+        plot([i i], ya, 'r', 'LineWidth', 6)
+        ylim(ya) xlim([starttime endtime])
+        title('Surface Mass Balance', 'FontSize', 14)
+        ylabel('m/year', 'FontSize', 14)
+
+        subplot(5, 4, 5:8)
+        cla
+        set(gca, 'pos', get(gca, 'pos') + [ -0.07 0.015 0.12 0.015])
+        plot(starttime:endtime, sum(volume) / 1000 / 1000 / 1000, 'LineWidth', 4)
+        hold on
+        ya = ylim
+        plot([i i], ya, 'r', 'LineWidth', 6)
+        ylim(ya) xlim([starttime endtime])
+        title('Ice Volume', 'FontSize', 14)
+        ylabel('km^3', 'FontSize', 14)
+
+        subplot(5, 4, 9:12)
+        cla
+        set(gca, 'pos', get(gca, 'pos') + [ -0.07 0 0.12 0.015])
+        plot(starttime:endtime, mean(velocity) / 1000, 'LineWidth', 4)
+        hold on
+        ya = ylim
+        plot([i i], ya, 'r', 'LineWidth', 6)
+        ylim(ya) xlim([starttime endtime])
+        title('Mean Velocity', 'FontSize', 14)
+        ylabel('km/year', 'FontSize', 14)
+        xlabel('year', 'FontSize', 14)
+
+        set(gcf, 'Renderer', 'zbuffer', 'color', 'white') %fixes a bug on Mac OS X (not needed in future Matlab version)
+        if i = starttime,
+            %initialize images and frame
+            frame = getframe(gcf)
+            [images, map] = rgb2ind(frame.cdata, 256, 'nodither')
+            images(1, 1, 1, length(ts))=0
+        else
+            frame = getframe(gcf)
+            images(:, :, 1, count) = rgb2ind(frame.cdata, map, 'nodither')
+        end
+
+        count = count + 1
+
+    end
+
+    filename = 'transawtooth3d.gif'
+    imwrite(images, map, filename, 'DelayTime', 1.0, 'LoopCount', inf)
+    """
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1601.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1601.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1601.m	(revision 27955)
@@ -0,0 +1,46 @@
+%Test Name: SquareShelfSSA2dRotation
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.stressbalance.spcvx(find(md.mesh.y>0.))=NaN;
+md.initialization.vx(:)=0.;
+md.initialization.vy(:)=0.;
+md.initialization.vel(:)=0.;
+
+md.cluster=generic('name',oshostname(),'np',2);
+md=solve(md,'Stressbalance');
+vel0=md.results.StressbalanceSolution.Vel;
+
+theta=30.*pi/180.;
+x=md.mesh.x;
+y=md.mesh.y;
+md.mesh.x=cos(theta)*x-sin(theta)*y;
+md.mesh.y=sin(theta)*x+cos(theta)*y;
+
+md.stressbalance.referential(:,1:3)=repmat([cos(theta),sin(theta),0],md.mesh.numberofvertices,1);
+md.stressbalance.referential(:,4:6)=repmat([0,0,1],md.mesh.numberofvertices,1);
+md=solve(md,'Stressbalance');
+vel1=md.results.StressbalanceSolution.Vel;
+
+plotmodel(md,'data',vel0,'data',vel1,'data',vel1-vel0,'title','Cartesian CS','title','Rotated CS','title','difference')
+disp(['Error between Cartesian and rotated CS: ' num2str(max(abs(vel0-vel1))/(max(abs(vel0))+eps)) ]);
+
+%Now, put CS back to normal except on the side where the spc are applied
+pos=find(x==0. | x==1000000.);
+md.stressbalance.referential(:)=NaN;
+md.stressbalance.referential(pos,1:3)=repmat([cos(theta),sin(theta),0],size(pos,1),1);
+md.stressbalance.referential(pos,4:6)=repmat([0,0,1],size(pos,1),1);
+md=solve(md,'Stressbalance');
+vel2=md.results.StressbalanceSolution.Vel;
+
+plotmodel(md,'data',vel0,'data',vel2,'data',vel2-vel0,'title','Cartesian CS','title','Rotated CS','title','difference')
+disp(['Error between Cartesian and rotated CS: ' num2str(max(abs(vel0-vel2))/(max(abs(vel0))+eps)) ]);
+
+%Fields and tolerances to track changes
+field_names     ={'vel1','vel2'};
+field_tolerances={1e-11,1e-11};
+field_values={...
+	vel1, ...
+	vel2, ...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1601.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1601.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1601.py	(revision 27955)
@@ -0,0 +1,53 @@
+#Test Name: SquareShelfSSA2dRotation
+import numpy as np
+import sys
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.stressbalance.spcvx[np.where(md.mesh.y > 0.)] = np.nan
+md.initialization.vx[:] = 0.
+md.initialization.vy[:] = 0.
+md.initialization.vel = np.zeros((md.mesh.numberofvertices))
+
+md.cluster = generic('name', gethostname(), 'np', 2)
+md = solve(md, 'Stressbalance')
+vel0 = md.results.StressbalanceSolution.Vel
+theta = 30. * np.pi / 180.
+x = md.mesh.x
+y = md.mesh.y
+md.mesh.x = np.cos(theta) * x - np.sin(theta) * y
+md.mesh.y = np.sin(theta) * x + np.cos(theta) * y
+
+rotation_array = np.array([np.cos(theta), np.sin(theta), 0])
+md.stressbalance.referential[:, 0:3] = (np.tile(rotation_array, (md.mesh.numberofvertices, 1)))
+md.stressbalance.referential[:, 3:] = np.tile([0, 0, 1], (md.mesh.numberofvertices, 1))
+md = solve(md, 'Stressbalance')
+vel1 = md.results.StressbalanceSolution.Vel
+#plotmodel(md, 'data', vel0, 'data', vel1, 'data', vel1 - vel0, 'title', 'Cartesian CS', 'title', 'Rotated CS', 'title', 'difference')
+print("Error between Cartesian and rotated CS: {}".format(np.max(np.abs(vel0 - vel1)) / (np.max(np.abs(vel0)) + sys.float_info.epsilon)))
+
+#Now, put CS back to normal except on the side where the spc are applied
+pos = np.where(np.logical_or(x == 0., x == 1000000.))[0]
+md.stressbalance.referential[:] = np.nan
+md.stressbalance.referential[pos, 0:3] = np.tile([np.cos(theta), np.sin(theta), 0], (len(pos), 1))
+md.stressbalance.referential[pos, 3:] = np.tile([0, 0, 1], (len(pos), 1))
+md = solve(md, 'Stressbalance')
+vel2 = md.results.StressbalanceSolution.Vel
+
+#plotmodel(md, 'data', vel0, 'data', vel2, 'data', vel2 - vel0, 'title', 'Cartesian CS', 'title', 'Rotated CS', 'title', 'difference')
+print("Error between Cartesian and rotated CS: {}".format(np.max(np.abs(vel0 - vel2)) / (np.max(np.abs(vel0)) + sys.float_info.epsilon)))
+
+#Fields and tolerances to track changes
+field_names = ['vel1', 'vel2']
+field_tolerances = [1e-11, 1e-11]
+field_values = [vel1, vel2]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1602.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1602.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1602.m	(revision 27955)
@@ -0,0 +1,35 @@
+%Test Name: SquareSheetShelfHORotation
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'HO','all');
+md.stressbalance.spcvx(find(md.mesh.y>0.))=NaN;
+md.initialization.vx(:)=0.;
+md.initialization.vy(:)=0.;
+md.initialization.vel(:)=0.;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+vel0=md.results.StressbalanceSolution.Vel;
+
+theta=30.*pi/180.;
+x=md.mesh.x;
+y=md.mesh.y;
+md.mesh.x=cos(theta)*x-sin(theta)*y;
+md.mesh.y=sin(theta)*x+cos(theta)*y;
+
+md.stressbalance.referential(:,1:3)=repmat([cos(theta),sin(theta),0],md.mesh.numberofvertices,1);
+md.stressbalance.referential(:,4:6)=repmat([0,0,1],md.mesh.numberofvertices,1);
+md=solve(md,'Stressbalance');
+vel1=md.results.StressbalanceSolution.Vel;
+
+plotmodel(md,'data',vel0,'data',vel1,'data',vel1-vel0,'title','Cartesian CS','title','Rotated CS','title','difference','view#all',2)
+disp(['Error between Cartesian and rotated CS: ' num2str(max(abs(vel0-vel1))/(max(abs(vel0))+eps)) ]);
+
+%Fields and tolerances to track changes
+field_names     ={'vel1'};
+field_tolerances={1e-9};
+field_values={...
+	vel1, ...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1602.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1602.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test1602.py	(revision 27955)
@@ -0,0 +1,44 @@
+#Test Name: SquareSheetShelfHORotation
+import numpy as np
+import sys
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(5, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.stressbalance.spcvx[np.nonzero(md.mesh.y > 0.)] = np.nan
+md.initialization.vx[:] = 0.
+md.initialization.vy[:] = 0.
+md.initialization.vel = np.zeros_like(md.initialization.vx)
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+vel0 = md.results.StressbalanceSolution.Vel
+
+theta = 30. * np.pi / 180.
+x = md.mesh.x
+y = md.mesh.y
+md.mesh.x = np.cos(theta) * x - np.sin(theta) * y
+md.mesh.y = np.sin(theta) * x + np.cos(theta) * y
+
+md.stressbalance.referential[:, 0:3] = np.tile([np.cos(theta), np.sin(theta), 0], (md.mesh.numberofvertices, 1))
+md.stressbalance.referential[:, 3:] = np.tile([0, 0, 1], (md.mesh.numberofvertices, 1))
+md = solve(md, 'Stressbalance')
+vel1 = md.results.StressbalanceSolution.Vel
+
+#plotmodel(md, 'data', vel0, 'data', vel1, 'data', vel1 - vel0, 'title', 'Cartesian CS', 'title', 'Rotated CS', 'title', 'difference', 'view  #all', 2)
+print("Error between Cartesian and rotated CS: {}".format(np.max(np.abs(vel0 - vel1)) / (np.max(np.abs(vel0)) + sys.float_info.epsilon)))
+
+#Fields and tolerances to track changes
+field_names = ['vel1']
+field_tolerances = [1e-9]
+field_values = [vel1]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2001.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2001.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2001.m	(revision 27955)
@@ -0,0 +1,53 @@
+%Test Name: SquareSheetConstrainedGia2d
+%GIA test, based off of test101. Running default GIA Ivins class.
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+
+%GIA Ivins, 2 layer model.
+md.solidearth.settings.grdmodel=2;
+md.solidearth.settings.isgrd=1;
+
+md.materials=materials('litho','ice');
+md.materials.numlayers=2;
+md.materials.radius =  [10 6271e3 6371e3];
+md.materials.density=  [3.34e3 3.32e3];
+md.materials.lame_mu=  [1.45e11         6.7e10];
+md.materials.viscosity=[1e21            0];
+md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+md.solidearth.settings.cross_section_shape=1;    % for square-edged x-section 
+md.solidearth.settings.grdocean=0;  %do not compute sea level, only deformation
+md.solidearth.settings.sealevelloading=0;  %do not compute sea level, only deformation
+md.solidearth.requested_outputs={'Sealevel','BedGRD'};
+
+%Loading history 
+md.timestepping.start_time=-2400000; %4,800 kyr :: EVALUATION TIME
+md.timestepping.time_step= 2400000; %2,400 kyr :: EVALUATION TIME
+% to get rid of default final_time: make sure final_time>start_time
+md.timestepping.final_time=2400000; %2,500 kyr
+md.masstransport.spcthickness=[...
+	[md.geometry.thickness; 0],...
+	[md.geometry.thickness; 2400000]...
+	];
+
+%geometry at 0 initially: 
+md.geometry.thickness=zeros(md.mesh.numberofvertices,1);
+md.geometry.surface=zeros(md.mesh.numberofvertices,1);
+md.geometry.base=zeros(md.mesh.numberofvertices,1);
+
+%Physics: 
+md.transient.issmb=0; 
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.ismasstransport=1;
+md.transient.isslc=1;
+
+% Solve for GIA deflection 
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose.solver=0;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'UGrd'};
+field_tolerances={1e-13};
+field_values={md.results.TransientSolution(2).BedGRD};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2001.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2001.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2001.py	(revision 27955)
@@ -0,0 +1,65 @@
+#Test Name: SquareSheetConstrainedGia2d
+#GIA test, based off of test101. Running default GIA Ivins class.
+import numpy as np
+from socket import gethostname
+from materials import *
+from MatlabFuncs import *
+from model import *
+from parameterize import *
+from setflowequation import *
+from setmask import *
+from solve import *
+from triangle import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 100000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+
+# GIA Ivins, 2 layer model
+md.solidearth.settings.grdmodel = 2
+md.solidearth.settings.isgrd = 1
+
+md.materials = materials('litho','ice')
+md.materials.numlayers = 2;
+md.materials.radius = [10, 6271e3, 6371e3]
+md.materials.density = [3.34e3, 3.32e3]
+md.materials.lame_mu = [1.45e11, 6.7e10]
+md.materials.viscosity = [1e21, 0]
+md.initialization.sealevel = np.zeros(md.mesh.numberofvertices)
+md.solidearth.settings.cross_section_shape = 1 # for square-edged x-section
+md.solidearth.settings.grdocean = 0 # do not compute sea level, only deformation
+md.solidearth.settings.sealevelloading = 0 # do not compute sea level, only deformation
+md.solidearth.requested_outputs = ['Sealevel', 'BedGRD']
+
+# Loading history
+md.timestepping.start_time = -2400000  # 4,800 kyr :: EVALUATION TIME
+md.timestepping.time_step = 2400000  # 2,400 kyr :: EVALUATION TIME
+# To get rid of default final_time, make sure final_time > start_time
+md.timestepping.final_time = 2400000  # 2,400 kyr
+md.masstransport.spcthickness = np.array([
+    np.append(md.geometry.thickness, 0),
+    np.append(md.geometry.thickness, 2400000)
+    ]).T
+
+# Geometry at 0 initially
+md.geometry.thickness = np.zeros(md.mesh.numberofvertices)
+md.geometry.surface = np.zeros(md.mesh.numberofvertices)
+md.geometry.base = np.zeros(md.mesh.numberofvertices)
+
+# Physics
+md.transient.issmb = 0
+md.transient.isstressbalance = 0
+md.transient.isthermal = 0
+md.transient.ismasstransport = 1
+md.transient.isslc = 1
+
+#Solve for GIA deflection
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.verbose.solver = 0
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['UGrd']
+field_tolerances = [1e-13]
+field_values = [md.results.TransientSolution[1].BedGRD]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2002.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2002.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2002.m	(revision 27955)
@@ -0,0 +1,138 @@
+%Test Name: EarthSlc
+
+%mesh earth:
+md=model;
+
+% %Generate and save mesh
+% SlcMesh=gmshplanet('radius',6.371012*10^3,'resolution',700.);
+% save('../Data/SlcTestMesh.mat','SlcMesh');
+% md.mesh=SlcMesh;
+
+%Load precomputed mesh
+load('../Data/SlcTestMesh.mat');
+md.mesh=SlcMesh; %700 km resolution mesh
+
+%Geometry for the bed, arbitrary thickness of 100: 
+md.geometry.bed=zeros(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.bed;
+md.geometry.thickness=100*ones(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+
+%solidearth loading:  {{{
+md.masstransport.spcthickness=[md.geometry.thickness;0];
+md.smb.mass_balance=zeros(md.mesh.numberofvertices,1);
+
+%antarctica
+xe=md.mesh.x(md.mesh.elements)*[1;1;1]/3;
+ye=md.mesh.y(md.mesh.elements)*[1;1;1]/3;
+ze=md.mesh.z(md.mesh.elements)*[1;1;1]/3;
+re=sqrt(xe.^2+ye.^2+ze.^2);
+
+late=asind(ze./re);
+longe=atan2d(ye,xe);
+pos=find(late < -80);
+md.masstransport.spcthickness(md.mesh.elements(pos,:))=md.masstransport.spcthickness(md.mesh.elements(pos,:))-100;
+posant=pos;
+
+%greenland
+pos=find(late>60 & late<90 & longe>-75 & longe<-15);
+md.masstransport.spcthickness(md.mesh.elements(pos,:))=md.masstransport.spcthickness(md.mesh.elements(pos,:))-100;
+posgre=pos;
+
+%elastic loading from love numbers:
+md.solidearth.lovenumbers=lovenumbers('maxdeg',1000);
+
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+oceanmask=-ones(md.mesh.numberofvertices,1);
+pos=find(mask==0); oceanmask(pos)=1;
+
+icemask=ones(md.mesh.numberofvertices,1);
+icemask(md.mesh.elements(posant))=-1;
+icemask(md.mesh.elements(posgre))=-1;
+
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=oceanmask;
+% }}}
+
+%time stepping: 
+md.timestepping.start_time=0;
+md.timestepping.time_step=1;
+md.timestepping.final_time=1;
+
+%masstransport:
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+md.initialization.str=0;
+
+%Materials: 
+md.materials=materials('hydro');
+
+%Miscellaneous
+md.miscellaneous.name='test2002';
+
+%Solution parameters
+md.cluster.np=3;
+md.solidearth.settings.reltol=NaN;
+md.solidearth.settings.abstol=1e-3;
+md.solidearth.settings.sealevelloading=1;
+md.solidearth.settings.isgrd=1;
+md.solidearth.settings.ocean_area_scaling=0;
+md.solidearth.settings.grdmodel=1;
+
+%Physics: 
+md.transient.issmb=0; 
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.ismasstransport=1;
+md.transient.isslc=1;
+md.solidearth.requested_outputs={'Sealevel','Bed','SealevelBarystaticIceLoad', 'SealevelBarystaticIceArea', 'SealevelBarystaticIceWeights'};
+
+% max number of iteration reverted back to 10 (i.e., the original default value)
+md.solidearth.settings.maxiter=10;
+
+%eustatic run:
+md.solidearth.settings.selfattraction=0;
+md.solidearth.settings.elastic=0;
+md.solidearth.settings.rotation=0;
+md.solidearth.settings.viscous=0;
+
+md=solve(md,'Transient');
+Seustatic=md.results.TransientSolution.Sealevel;
+Beustatic=md.results.TransientSolution.Bed;
+
+%eustatic + selfattraction run:
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=0;
+md.solidearth.settings.rotation=0;
+md.solidearth.settings.viscous=0;
+md=solve(md,'tr');
+Sselfattraction=md.results.TransientSolution.Sealevel;
+Bselfattraction=md.results.TransientSolution.Bed;
+
+%eustatic + selfattraction + elastic run:
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=1;
+md.solidearth.settings.rotation=0;
+md.solidearth.settings.viscous=0;
+md=solve(md,'tr');
+Selastic=md.results.TransientSolution.Sealevel;
+Belastic=md.results.TransientSolution.Bed;
+
+%eustatic + selfattraction + elastic + rotation run:
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=1;
+md.solidearth.settings.rotation=1;
+md.solidearth.settings.viscous=0;
+md=solve(md,'tr');
+Srotation=md.results.TransientSolution.Sealevel;
+Brotation=md.results.TransientSolution.Bed;
+
+%Fields and tolerances to track changes
+field_names={'Seustatic','Sselfattraction','Selastic','Srotation','Beustatic','Bselfattraction','Belastic','Brotation'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={Seustatic,Sselfattraction,Selastic,Srotation,Beustatic,Bselfattraction,Belastic,Brotation};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2002.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2002.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2002.py	(revision 27955)
@@ -0,0 +1,157 @@
+#Test Name: EarthSlc
+import numpy as np
+import pickle
+#from gmshplanet import *
+from gmtmask import *
+from lovenumbers import *
+from materials import *
+from model import *
+from paterson import *
+from solve import *
+
+
+# Mesh earth
+#
+# NOTE: In MATLAB, we currently use cached mesh to account for differences in
+# mesh generated under Linux versus under macOS
+#
+md = model()
+
+# Generate and save mesh (need to uncomment import of gmshplanet as well)
+# md.mesh = gmshplanet('radius', 6.371012 * 1e3, 'resolution', 700.) # 700 km resolution mesh
+# with open('../Data/SlcTestMesh.pkl', 'wb') as slc_test_mesh_file:
+#     pickle.dump(md.mesh, slc_test_mesh_file)
+
+# Load precomputed mesh
+with open('../Data/SlcTestMesh.pkl', 'rb') as slc_test_mesh_file:
+    md.mesh = pickle.load(slc_test_mesh_file, encoding='latin1')
+
+# Geometry for the bed, arbitrary thickness of 100
+md.geometry.bed = np.zeros((md.mesh.numberofvertices, ))
+md.geometry.base = md.geometry.bed
+md.geometry.thickness = 100 * np.ones((md.mesh.numberofvertices, ))
+md.geometry.surface = md.geometry.bed + md.geometry.thickness
+
+# Solidearth loading #{{{
+md.masstransport.spcthickness = np.append(md.geometry.thickness, 0)
+md.smb.mass_balance = np.zeros((md.mesh.numberofvertices, 1))
+
+# Antarctica
+xe = md.mesh.x[md.mesh.elements - 1].sum(axis=1) / 3
+ye = md.mesh.y[md.mesh.elements - 1].sum(axis=1) / 3
+ze = md.mesh.z[md.mesh.elements - 1].sum(axis=1) / 3
+re = pow((pow(xe, 2) + pow(ye, 2) + pow(ze, 2)), 0.5)
+
+late = asind(ze / re)
+longe = atan2d(ye, xe)
+pos = np.where(late < -80)[0]
+md.masstransport.spcthickness[md.mesh.elements[pos, :] - 1] = md.masstransport.spcthickness[md.mesh.elements[pos, :] - 1] - 100
+posant = pos
+
+# Greenland
+pos = np.where(np.logical_and.reduce((late > 60, late < 90, longe > -75, longe < -15)))[0]
+md.masstransport.spcthickness[md.mesh.elements[pos, :] - 1] = md.masstransport.spcthickness[md.mesh.elements[pos, :] - 1] - 100
+posgre = pos
+
+# Elastic loading from love numbers:
+md.solidearth.lovenumbers = lovenumbers('maxdeg', 1000)
+#}}}
+
+# Mask: {{{
+mask = gmtmask(md.mesh.lat, md.mesh.long)
+oceanmask = -1 * np.ones((md.mesh.numberofvertices, ))
+pos = np.where(mask == 0)[0]
+oceanmask[pos] = 1
+
+icemask = np.ones((md.mesh.numberofvertices, ))
+# NOTE: Need to be careful here: when using multidimensional array elements to
+# address a one-dimensional array in MATLAB, only first column is used
+#
+icemask[md.mesh.elements[posant][:, 0] - 1] = -1
+icemask[md.mesh.elements[posgre][:, 0] - 1] = -1
+
+md.mask.ice_levelset = icemask
+md.mask.ocean_levelset = oceanmask
+#}}}
+
+# Time stepping {{{
+md.timestepping.start_time = 0
+md.timestepping.time_step = 1
+md.timestepping.final_time = 1
+#}}}
+
+# Masstransport
+md.basalforcings.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices, ))
+md.basalforcings.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.vx = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.vy = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.sealevel = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.str = 0
+
+# Materials
+md.materials = materials('hydro')
+
+# Miscellaneous
+md.miscellaneous.name = 'test2002'
+
+# Solution parameters
+md.cluster.np = 3
+md.solidearth.settings.reltol = np.nan
+md.solidearth.settings.abstol = 1e-3
+md.solidearth.settings.sealevelloading = 1
+md.solidearth.settings.isgrd = 1
+md.solidearth.settings.ocean_area_scaling = 0
+md.solidearth.settings.grdmodel = 1
+
+# Physics
+md.transient.issmb = 0
+md.transient.isstressbalance = 0
+md.transient.isthermal = 0
+md.transient.ismasstransport = 1
+md.transient.isslc = 1
+md.solidearth.requested_outputs = ['Sealevel', 'Bed', 'SealevelBarystaticIceLoad', 'SealevelBarystaticIceArea', 'SealevelBarystaticIceWeights']
+
+# Max number of iterations reverted back to 10 (i.e., the original default value)
+md.solidearth.settings.maxiter = 10
+
+# Eustatic run
+md.solidearth.settings.selfattraction = 0
+md.solidearth.settings.elastic = 0
+md.solidearth.settings.rotation = 0
+md.solidearth.settings.viscous = 0
+
+md = solve(md, 'Transient')
+Seustatic = md.results.TransientSolution.Sealevel
+Beustatic = md.results.TransientSolution.Bed
+
+# Eustatic + selfattraction run
+md.solidearth.settings.selfattraction = 1
+md.solidearth.settings.elastic = 0
+md.solidearth.settings.rotation = 0
+md.solidearth.settings.viscous = 0
+md = solve(md, 'tr')
+Sselfattraction = md.results.TransientSolution.Sealevel
+Bselfattraction = md.results.TransientSolution.Bed
+
+# Eustatic + selfattraction + elastic run
+md.solidearth.settings.selfattraction = 1
+md.solidearth.settings.elastic = 1
+md.solidearth.settings.rotation = 0
+md.solidearth.settings.viscous = 0
+md = solve(md, 'tr')
+Selastic = md.results.TransientSolution.Sealevel
+Belastic = md.results.TransientSolution.Bed
+
+# Eustatic + selfattraction + elastic + rotation run
+md.solidearth.settings.selfattraction = 1
+md.solidearth.settings.elastic = 1
+md.solidearth.settings.rotation = 1
+md.solidearth.settings.viscous = 0
+md = solve(md, 'tr')
+Srotation = md.results.TransientSolution.Sealevel
+Brotation = md.results.TransientSolution.Bed
+
+# Fields and tolerances to track changes
+field_names = ['Seustatic', 'Sselfattraction', 'Selastic', 'Srotation', 'Beustatic', 'Bselfattraction', 'Belastic', 'Brotation']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [Seustatic, Sselfattraction, Selastic, Srotation, Beustatic, Bselfattraction, Belastic, Brotation]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2003.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2003.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2003.m	(revision 27955)
@@ -0,0 +1,113 @@
+%Test Name: EarthSlc_rotationalFeedback
+
+
+%mesh earth:
+md=model;
+load ../Data/SlcTestMesh.mat;
+md.mesh=SlcMesh; %700 km resolution mesh
+
+%Geometry for the bed, arbitrary thickness of 1000: 
+md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.bed;
+md.geometry.thickness=1000*ones(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+
+%parameterize slc solution:
+%solidearth loading:  {{{
+md.masstransport.spcthickness=[md.geometry.thickness;0];
+md.smb.mass_balance=zeros(md.mesh.numberofvertices,1);
+
+xe=md.mesh.x(md.mesh.elements)*[1;1;1]/3;
+ye=md.mesh.y(md.mesh.elements)*[1;1;1]/3;
+ze=md.mesh.z(md.mesh.elements)*[1;1;1]/3;
+re=sqrt(xe.^2+ye.^2+ze.^2);
+
+late=asind(ze./re);
+longe=atan2d(ye,xe);
+
+%greenland
+pos=find(late>60 & late<90 & longe>-75 & longe<-15);
+md.masstransport.spcthickness(md.mesh.elements(pos,:))= md.masstransport.spcthickness(md.mesh.elements(pos,:))-1000;
+posice=pos;
+
+%elastic loading from love numbers:
+md.solidearth.lovenumbers=lovenumbers('maxdeg',100);
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+icemask=ones(md.mesh.numberofvertices,1);
+icemask(md.mesh.elements(posice,:))=-1;
+md.mask.ice_levelset=icemask;
+oceanmask=-ones(md.mesh.numberofvertices,1);
+pos=find(mask==0); oceanmask(pos)=1;
+md.mask.ocean_levelset=oceanmask;
+
+% use model representation of ocean area (not the true area)
+md.solidearth.settings.ocean_area_scaling = 0;
+
+%materials
+md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1);
+md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+md.initialization.str=0;
+
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+
+%Miscellaneous
+md.miscellaneous.name='test2003';
+
+%Solution parameters
+md.solidearth.settings.reltol=NaN;
+md.solidearth.settings.abstol=1e-3;
+md.solidearth.settings.sealevelloading=0;
+md.solidearth.settings.grdocean=0;
+md.solidearth.settings.isgrd=1;
+md.solidearth.settings.ocean_area_scaling=0;
+md.solidearth.settings.grdmodel=1;
+md.solidearth.settings.horiz=1;
+md.solidearth.requested_outputs={'Sealevel','Bed', 'BedEast', 'BedNorth'};
+
+%Physics: 
+md.transient.issmb=0;
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.ismasstransport=1;
+md.transient.isslc=1;
+
+md.timestepping.start_time=0;
+md.timestepping.time_step=1;
+md.timestepping.final_time=1;
+
+%eustatic + selfattraction + elastic run:
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=1;
+md.solidearth.settings.rotation=0;
+md.solidearth.settings.viscous=0;
+md.cluster=generic('name',oshostname(),'np',3);
+%md.verbose=verbose('111111111');
+md=solve(md,'Transient');
+SnoRotation=md.results.TransientSolution.Sealevel;
+BUnoRotation=md.results.TransientSolution.Bed;
+BEnoRotation=md.results.TransientSolution.BedEast;
+BNnoRotation=md.results.TransientSolution.BedNorth;
+
+%eustatic + selfattraction + elastic + rotation run:
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=1;
+md.solidearth.settings.rotation=1;
+md.solidearth.settings.viscous=0;
+md.cluster=generic('name',oshostname(),'np',3);
+%md.verbose=verbose('111111111');
+md=solve(md,'Transient');
+SRotation=md.results.TransientSolution.Sealevel;
+BURotation=md.results.TransientSolution.Bed;
+BERotation=md.results.TransientSolution.BedEast;
+BNRotation=md.results.TransientSolution.BedNorth;
+
+%Fields and tolerances to track changes
+field_names     ={'Sealevel', 'Uplift', 'NorthDisplacement', 'EastDisplacement'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={SRotation-SnoRotation,BURotation-BUnoRotation,BNRotation-BNnoRotation,BERotation-BEnoRotation};
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2003.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2003.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2003.py	(revision 27955)
@@ -0,0 +1,124 @@
+#Test Name: EarthSlc_rotationalFeedback
+import numpy as np
+import pickle
+from socket import gethostname
+from gmtmask import *
+from lovenumbers import *
+from MatlabFuncs import *
+from model import *
+from paterson import *
+from solve import *
+
+
+md = model()
+
+# Load precomputed mesh
+with open('../Data/SlcTestMesh.pkl', 'rb') as slc_test_mesh_file:
+    md.mesh = pickle.load(slc_test_mesh_file, encoding='latin1')
+
+# Geometry for the bed, arbitrary thickness of 100
+md.geometry.bed = -1 * np.ones((md.mesh.numberofvertices, ))
+md.geometry.base = md.geometry.bed
+md.geometry.thickness = 1000 * np.ones((md.mesh.numberofvertices, ))
+md.geometry.surface = md.geometry.bed + md.geometry.thickness
+
+# Parameterize slc solution:
+#solidearth loading:  {{{
+md.masstransport.spcthickness = np.append(md.geometry.thickness, 0)
+md.smb.mass_balance = np.zeros(md.mesh.numberofvertices)
+
+xe = md.mesh.x[md.mesh.elements - 1].sum(axis=1) / 3
+ye = md.mesh.y[md.mesh.elements - 1].sum(axis=1) / 3
+ze = md.mesh.z[md.mesh.elements - 1].sum(axis=1) / 3
+re = pow((pow(xe, 2) + pow(ye, 2) + pow(ze, 2)), 0.5)
+
+late = asind(ze / re)
+longe = atan2d(ye, xe)
+
+# Greenland
+pos = np.where(np.logical_and.reduce((late > 60, late < 90, longe > -75, longe < -15)))[0]
+md.masstransport.spcthickness[md.mesh.elements[pos, :] - 1] = md.masstransport.spcthickness[md.mesh.elements[pos, :] - 1] - 1000
+posice = pos
+
+# Elastic loading from love numbers
+md.solidearth.lovenumbers = lovenumbers('maxdeg', 100)
+#}}}
+
+# Mask: {{{
+mask = gmtmask(md.mesh.lat, md.mesh.long)
+icemask = np.ones(md.mesh.numberofvertices)
+icemask[md.mesh.elements[posice, :] - 1] = -1
+md.mask.ice_levelset = icemask
+oceanmask = -1 * np.ones(md.mesh.numberofvertices)
+pos = np.where(mask == 0)[0]
+oceanmask[pos] = 1
+md.mask.ocean_levelset = oceanmask
+
+# Use model representation of ocean area (not the true area)
+md.solidearth.settings.ocean_area_scaling = 0
+
+# Materials
+md.initialization.temperature = 273.25 * np.ones(md.mesh.numberofvertices)
+md.initialization.sealevel = np.zeros(md.mesh.numberofvertices)
+md.initialization.str = 0
+
+md.basalforcings.groundedice_melting_rate = np.zeros(md.mesh.numberofvertices)
+md.basalforcings.floatingice_melting_rate = np.zeros(md.mesh.numberofvertices)
+md.initialization.vx = np.zeros(md.mesh.numberofvertices)
+md.initialization.vy = np.zeros(md.mesh.numberofvertices)
+
+# Miscellaneous
+md.miscellaneous.name = 'test2003'
+
+# Solution parameters
+md.solidearth.settings.reltol = np.nan
+md.solidearth.settings.abstol = 1e-3
+md.solidearth.settings.sealevelloading = 0
+md.solidearth.settings.grdocean = 0
+md.solidearth.settings.isgrd = 1
+md.solidearth.settings.ocean_area_scaling = 0
+md.solidearth.settings.grdmodel = 1
+md.solidearth.settings.horiz = 1
+md.solidearth.requested_outputs = ['Sealevel', 'Bed', 'BedEast', 'BedNorth']
+
+# Physics
+md.transient.issmb = 0
+md.transient.isstressbalance = 0
+md.transient.isthermal = 0
+md.transient.ismasstransport = 1
+md.transient.isslc = 1
+
+md.timestepping.start_time = 0
+md.timestepping.time_step = 1
+md.timestepping.final_time = 1
+
+# Eustatic + selfattraction + elastic run:
+md.solidearth.settings.selfattraction = 1
+md.solidearth.settings.elastic = 1
+md.solidearth.settings.rotation = 0
+md.solidearth.settings.viscous = 0
+md.cluster = generic('name', gethostname(), 'np', 3)
+#md.verbose = verbose('111111111')
+md = solve(md, 'Transient')
+SnoRotation = md.results.TransientSolution.Sealevel
+BUnoRotation = md.results.TransientSolution.Bed
+BEnoRotation = md.results.TransientSolution.BedEast
+BNnoRotation = md.results.TransientSolution.BedNorth
+
+# Eustatic + selfattraction + elastic + rotation run
+md.solidearth.settings.selfattraction = 1
+md.solidearth.settings.elastic = 1
+md.solidearth.settings.rotation = 1
+md.solidearth.settings.viscous = 0
+md.cluster = generic('name', gethostname(), 'np', 3)
+#md.verbose = verbose('111111111')
+md = solve(md, 'Transient')
+SRotation = md.results.TransientSolution.Sealevel
+BURotation = md.results.TransientSolution.Bed
+BERotation = md.results.TransientSolution.BedEast
+BNRotation = md.results.TransientSolution.BedNorth
+
+# Fields and tolerances to track changes
+field_names = ['Sealevel', 'Uplift', 'NorthDisplacement', 'EastDisplacement']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [SRotation - SnoRotation, BURotation - BUnoRotation, BNRotation - BNnoRotation,BERotation - BEnoRotation]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2004.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2004.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2004.m	(revision 27955)
@@ -0,0 +1,457 @@
+%Test Name: Sea-Level-Partitions
+testagainst2002=0;
+
+%Data paths: {{{
+shppath='../Data/shp/';
+gshhsshapefile=[shppath 'GSHHS_c_L1-NightlyRun.shp'];
+%}}}
+
+%create sealevel model to hold our information:
+sl=sealevelmodel();
+
+%Create basins using boundaries from shapefile:
+%some projections we'll rely on:  %{{{
+proj4326=epsg2proj(4326);
+proj3031=epsg2proj(3031);
+%}}}
+%HemisphereWest: {{{
+sl.addbasin(basin('continent','hemispherewest','name','hemispherewest','proj',laea(0,-90),'boundaries',{... %Peru projection 3587
+	boundary('shppath',shppath,'shpfilename','HemisphereSplit','proj',proj4326,'orientation','reverse'),...
+	boundary('shppath',shppath,'shpfilename','NorthAntarctica','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','RonneBrunt','proj',proj3031,'orientation','reverse'),...
+	boundary('shppath',shppath,'shpfilename','RonneEastSummit','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','RonneFront','proj',proj3031,'orientation','reverse'),...
+	boundary('shppath',shppath,'shpfilename','RonneWestSummit','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','WestAntarctica2','proj',proj3031,'orientation','reverse'),...
+	boundary('shppath',shppath,'shpfilename','SouthAntarctica','proj',proj3031)...
+	}));
+%}}}
+%Ross: {{{
+sl.addbasin(basin('continent','antarctica','name','ross','proj',proj3031,'boundaries',{...
+	boundary('shppath',shppath,'shpfilename','SouthAntarctica','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','RossIceShelf','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','RossWestFront','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','RossFront','proj',proj3031,'orientation','reverse')...
+	}));
+%}}}
+%HemisphereEast: {{{
+sl.addbasin(basin('continent','hemisphereeast','name','hemisphereeast','proj',laea(0,+90),'boundaries',{... %Australian projection lat,long
+	boundary('shppath',shppath,'shpfilename','HemisphereSplit','proj',proj4326),...
+	boundary('shppath',shppath,'shpfilename','SouthAntarctica','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','RossFront','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','RossWestFront','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','EastAntarctica2','proj',proj3031,'orientation','reverse'),...
+	boundary('shppath',shppath,'shpfilename','NorthAntarctica','proj',proj3031)...
+	}));
+%}}}
+%Antarctica excluding Ronne: {{{
+sl.addbasin(basin('continent','antarctica','name','antarctica-grounded','proj',proj3031,'boundaries',{...
+	boundary('shppath',shppath,'shpfilename','NorthAntarctica','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','EastAntarctica2','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','RossWestFront','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','RossIceShelf','proj',proj3031,'orientation','reverse'),...
+	boundary('shppath',shppath,'shpfilename','SouthAntarctica','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','WestAntarctica2','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','RonneWestSummit','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','RonneIceShelf','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','RonneEastSummit','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','RonneBrunt','proj',proj3031)...
+	}));
+%}}}
+%Ronne: {{{
+sl.addbasin(basin('continent','antarctica','name','ronne','proj',proj3031,'boundaries',{...
+	boundary('shppath',shppath,'shpfilename','RonneWestSummit','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','RonneIceShelf','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','RonneEastSummit','proj',proj3031),...
+	boundary('shppath',shppath,'shpfilename','RonneFront','proj',proj3031,'orientation','reverse')...
+	}));
+%}}}
+
+%Meshing
+%Go through basins and mesh:  %{{{
+%meshing parameters:  {{{
+hmin=500; hmax=700; hmin=hmin*1000; hmax=hmax*1000;
+tolerance=100; %tolerance of 100m on Earth position when merging 3d meshes
+threshold=5;
+defaultoptions={'KeepVertices',0,'MaxCornerAngle',0.0000000001,'NoBoundaryRefinement',1};
+alreadyloaded=0;
+%}}}
+for ind=sl.basinindx('basin','all'),
+
+	bas=sl.basins{ind};
+	disp(sprintf('Meshing basin %s\n',bas.name));
+
+	%recover basin domain:
+	domain=bas.contour();
+
+	%recover coastline inside basin, using GSHHS_c_L1. It's a lat/long file, hence epsg 4326
+	coastline=bas.shapefilecrop('shapefile',gshhsshapefile,'epsgshapefile',4326,'threshold',threshold);
+
+	%mesh:
+	md=bamg(model,'domain',domain,'subdomains',coastline,'hmin',hmin,'hmax',hmax,defaultoptions{:});
+	%plotmodel(md,'data','mesh');pause(1);
+
+	%miscellaneous:
+	md.mesh.proj=bas.proj;
+	md.miscellaneous.name=bas.name;
+
+	%recover mask where we have land:
+	md.private.bamg.landmask=double(md.private.bamg.mesh.Triangles(:,4)>=1);
+
+	%vertex connectivity:
+	md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+
+	%add model to sl icecaps:
+	sl.addicecap(md);
+end
+%}}}
+
+%Parameterization:
+%Parameterize ice sheets : {{{
+for ind=sl.basinindx('continent',{'antarctica'}),
+	disp(sprintf('Parameterizing basin %s\n', sl.icecaps{ind}.miscellaneous.name));
+
+	md=sl.icecaps{ind};
+	bas=sl.basins{ind};
+	%masks :  %{{{
+	%ice levelset from domain outlines:
+	md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
+
+	if bas.isnameany('antarctica-grounded'),
+		md.mask.ocean_levelset=ones(md.mesh.numberofvertices,1);
+	end
+	if bas.isnameany('ronne','ross'),
+		md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1);
+	end
+	%}}}
+	%latlong:  % {{{
+	[md.mesh.long,md.mesh.lat]=gdaltransform(md.mesh.x,md.mesh.y,md.mesh.proj,'EPSG:4326');
+	%}}}
+	%geometry: {{{
+	if bas.iscontinentany('antarctica'),
+		di=md.materials.rho_ice/md.materials.rho_water;
+
+		disp('      reading bedrock');
+		md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+		md.geometry.base=md.geometry.bed;
+		md.geometry.thickness=1000*ones(md.mesh.numberofvertices,1);
+		md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+
+	end % }}}
+	%Slc: {{{
+	if bas.iscontinentany('antarctica'),
+		if testagainst2002,
+			% TODO: Check if the following works as expected: 'pos' is empty, so nothing is assigned to 'md.masstransport.spcthickness(pos)'
+			md.masstransport.spcthickness=zeros(md.mesh.numberofvertices,1);
+			%antarctica
+			late=sum(md.mesh.lat(md.mesh.elements),2)/3;
+			longe=sum(md.mesh.long(md.mesh.elements),2)/3;
+			pos=find(late <-85);
+			ratio=0.225314032985172/0.193045366574523;
+			%ratio=   1.276564103522540/.869956;
+			md.masstransport.spcthickness(md.mesh.elements(pos,:))= md.masstransport.spcthickness(md.mesh.elements(pos,:))-100*ratio;
+		else
+			in_fileID=fopen('../Data/AIS_delH_trend.txt', 'r');
+			delH=textscan(in_fileID, '%f %f %f');
+			fclose(in_fileID);
+			longAIS=delH{:,1};
+			latAIS=delH{:,2};
+			delHAIS=delH{:,3};
+			% points=[longAIS,latAIS];
+			% index=delaunayn(points);
+			index=BamgTriangulate(longAIS, latAIS);
+			lat=md.mesh.lat;
+			long=md.mesh.long+360;
+			pos=find(long>360);
+			long(pos)=long(pos)-360;
+			delHAIS=InterpFromMesh2d(index,longAIS,latAIS,delHAIS,long,lat);
+			northpole=find_point(md.mesh.long,md.mesh.lat,0,90);
+			delHAIS(northpole)=0;
+			md.masstransport.spcthickness=delHAIS/100;
+		end
+
+		md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+
+		md.dsl.global_average_thermosteric_sea_level=[0;0];
+		md.dsl.sea_surface_height_above_geoid=zeros(md.mesh.numberofvertices+1,1);
+		md.dsl.sea_water_pressure_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
+
+	end %}}}
+	% material properties: {{{
+	md.materials=materials('hydro');
+	%}}}
+	%diverse: {{{
+	md.miscellaneous.name=bas.name;
+	% }}}
+
+	sl.icecaps{ind}=md;
+end
+%}}}
+
+% ParameterizeContinents {{{
+for ind=sl.basinindx('continent',{'hemisphereeast','hemispherewest'}),
+	disp(sprintf('Masks for basin %s\n', sl.icecaps{ind}.miscellaneous.name));
+	md=sl.icecaps{ind};
+	bas=sl.basins{ind};
+
+	%recover lat,long:
+	[md.mesh.long,md.mesh.lat]=gdaltransform(md.mesh.x,md.mesh.y,md.mesh.proj,'EPSG:4326');
+
+	%mask:  %{{{
+	%Figure out mask from initial mesh: deal with land and ocean masks (land
+	%includes grounded ice).  %{{{
+	%first, transform land element mask into vertex-driven one
+	land=md.private.bamg.landmask;
+	land_mask=-ones(md.mesh.numberofvertices,1);
+
+	landels=find(land);
+	land_mask(md.mesh.elements(landels,:))=1;
+
+	% Gothrough edges of each land element
+	connectedels=md.mesh.elementconnectivity(landels,:);
+	connectedisonocean=~land(connectedels);
+	sumconnectedisonocean=sum(connectedisonocean,2);
+
+	%figure out which land elements are connected to the ocean:
+	landelsconocean=landels(find(sumconnectedisonocean));
+
+	ind1=[md.mesh.elements(landelsconocean,1);
+	md.mesh.elements(landelsconocean,2);
+	md.mesh.elements(landelsconocean,3)];
+	ind2=[md.mesh.elements(landelsconocean,2);
+	md.mesh.elements(landelsconocean,3);
+	md.mesh.elements(landelsconocean,1)];
+
+	%edge ind1 and ind2:
+	for i=1:length(ind1),
+		els1=md.mesh.vertexconnectivity(ind1(i),1: md.mesh.vertexconnectivity(ind1(i),end));
+		els2=md.mesh.vertexconnectivity(ind2(i),1: md.mesh.vertexconnectivity(ind2(i),end));
+		els=intersect(els1,els2);
+
+		if length(find(land(els)))==1,
+			%this edge is on the beach, 0 the edge:
+			land_mask(ind1(i))=0;
+			land_mask(ind2(i))=0;
+		end
+	end
+
+	md.mask.ocean_levelset=land_mask;
+	md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);   %if there are glaciers, we'll adjust
+
+	if testagainst2002,
+		% {{{
+		%greenland
+		pos=find(md.mesh.lat > 70 & md.mesh.lat < 80 & md.mesh.long>-60 & md.mesh.long<-30);
+		md.mask.ice_levelset(pos)=-1;
+		% }}}
+	end
+	% }}}
+	%}}}
+	%slc loading/calibration:  {{{
+	md.masstransport.spcthickness=zeros(md.mesh.numberofvertices,1);
+
+	if testagainst2002,
+		% {{{
+		%greenland
+		late=sum(md.mesh.lat(md.mesh.elements),2)/3;
+		longe=sum(md.mesh.long(md.mesh.elements),2)/3;
+		pos=find(late > 70 &  late < 80 & longe>-60 & longe<-30);
+		ratio=.3823/.262344;
+		md.masstransport.spcthickness(md.mesh.elements(pos,:))= md.masstransport.spcthickness(md.mesh.elements(pos,:))-100*ratio;
+		%md.masstransport.spcthickness(pos)=-100*ratio;
+
+		%correct mask:
+		md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+		% }}}
+	else
+		delH=textread('../Data/GIS_delH_trend.txt');
+		longGIS=delH(:,1);
+		latGIS=delH(:,2);
+		delHGIS=delH(:,3);
+		index=BamgTriangulate(longGIS, latGIS);
+		lat=md.mesh.lat;
+		long=md.mesh.long+360;
+		pos=find(long>360);
+		long(pos)=long(pos)-360;
+		delHGIS=InterpFromMeshToMesh2d(index,longGIS,latGIS,delHGIS,long,lat);
+
+		delH=textread('../Data/GLA_delH_trend_15regions.txt');
+		longGLA=delH(:,1);
+		latGLA=delH(:,2);
+		delHGLA=sum(delH(:,3:end),2);
+		index=BamgTriangulate(longGLA, latGLA);
+		lat=md.mesh.lat;
+		long=md.mesh.long+360;
+		pos=find(long>360);
+		long(pos)=long(pos)-360;
+		delHGLA=InterpFromMeshToMesh2d(index,longGLA,latGLA,delHGLA,long,lat);
+
+		pos=find(delHGIS);
+		md.masstransport.spcthickness(pos) = md.masstransport.spcthickness(pos)-delHGIS(pos)/100;
+		pos=find(delHGLA);
+		md.masstransport.spcthickness(pos)= md.masstransport.spcthickness(pos)-delHGLA(pos)/100;
+
+		%adjust mask accordingly:
+		pos=find(md.masstransport.spcthickness);
+		md.mask.ice_levelset(pos)=-1;
+		md.mask.ocean_levelset(pos)=1;
+	end
+
+	md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+
+	md.dsl.global_average_thermosteric_sea_level=[0;0];
+	%md.dsl.steric_rate=(1.1+.38)*ones(md.mesh.numberofvertices,1); %steric + water storage.
+	md.dsl.sea_surface_height_above_geoid=zeros(md.mesh.numberofvertices+1,1);
+	md.dsl.sea_water_pressure_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
+
+	%}}}
+	%geometry:  {{{
+	di=md.materials.rho_ice/md.materials.rho_water;
+	md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+	md.geometry.base=md.geometry.bed;
+	md.geometry.thickness=1000*ones(md.mesh.numberofvertices,1);
+	md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+	% }}}
+	%materials:  {{{
+	md.materials=materials('hydro');
+	% }}}
+	sl.icecaps{ind}=md;
+end
+% }}}
+
+%%Assemble Earth in 3D {{{
+
+%parameters:
+plotting=0;
+tolerance=100;
+loneedgesdetect=0;
+
+%create Earth model by concatenating all the icecaps in 3D:
+sl.caticecaps('tolerance',tolerance,'loneedgesdetect',loneedgesdetect);
+
+%figure out how each icecap's mesh connects to the larger Earth mesh:
+sl.intersections('force',1);
+
+%figure out connectivity:
+disp('Mesh connectivity');
+sl.earth.mesh.vertexconnectivity=NodeConnectivity(sl.earth.mesh.elements,sl.earth.mesh.numberofvertices);
+
+%areas:
+disp('Mesh nodal areas');
+sl.earth.mesh.area=averaging(sl.earth,GetAreas3DTria(sl.earth.mesh.elements,sl.earth.mesh.x,sl.earth.mesh.y,sl.earth.mesh.z),4);
+
+%transfer a list of fields from each icecap and continent back to Earth:
+sl.transfer('mask.ice_levelset');
+sl.transfer('mask.ocean_levelset');
+sl.transfer('geometry.bed');
+sl.transfer('geometry.surface');
+sl.transfer('geometry.thickness');
+sl.transfer('geometry.base');
+sl.transfer('mesh.lat');
+sl.transfer('mesh.long');
+sl.transfer('masstransport.spcthickness');
+sl.transfer('initialization.sealevel');
+sl.transfer('dsl.sea_surface_height_above_geoid');
+sl.transfer('dsl.sea_water_pressure_at_sea_floor');
+
+%radius:
+sl.earth.mesh.r=sqrt(sl.earth.mesh.x.^2+sl.earth.mesh.y.^2+sl.earth.mesh.z.^2);
+
+%check on the mesh transitions: {{{
+plotting=0;
+if plotting,
+	flags=ones(sl.earth.mesh.numberofelements,1);
+	for i=1:length(sl.eltransitions)
+		flags(sl.eltransitions{i})=i;
+	end
+	plotmodel(sl.earth,'data',flags,'shading','faceted','coastline','on','coast_color','g')
+end
+%}}}}
+
+% }}}
+%Solve Sea-level eqEricuation on Earth only:  {{{
+md=sl.earth; %we don't do computations on ice sheets or land.
+
+%Materials:
+md.materials=materials('hydro');
+
+%elastic loading from love numbers:
+md.solidearth.lovenumbers=lovenumbers('maxdeg',100);
+md.solidearth.settings.ocean_area_scaling = 0;
+
+%Miscellaneous
+md.miscellaneous.name='test2004';
+
+%New stuff
+md.dsl.global_average_thermosteric_sea_level=[1.1+.38;0]; %steric + water storage AR5.
+
+%Solution parameters
+md.solidearth.settings.reltol=NaN;
+md.solidearth.settings.abstol=1e-3;
+md.solidearth.settings.sealevelloading=1;
+md.solidearth.settings.isgrd=1;
+md.solidearth.settings.ocean_area_scaling=0;
+md.solidearth.settings.grdmodel=1;
+md.timestepping.time_step=1;
+
+%Physics:
+md.transient.issmb=0;
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.ismasstransport=1;
+md.transient.isslc=1;
+
+%Initializations:
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+md.initialization.bottompressure=zeros(md.mesh.numberofvertices,1);
+md.initialization.dsl=zeros(md.mesh.numberofvertices,1);
+md.initialization.str=0;
+md.smb.mass_balance=zeros(md.mesh.numberofvertices,1);
+
+%max number of iterations reverted back to 10 (i.e. the original default value)
+md.solidearth.settings.maxiter=10;
+
+%eustatic run:
+md.solidearth.settings.selfattraction=0;
+md.solidearth.settings.elastic=0;
+md.solidearth.settings.rotation=0;
+md.solidearth.settings.viscous=0;
+md.solidearth.requested_outputs= {'default',...
+	'DeltaIceThickness','Sealevel','Bed',...
+	'SealevelBarystaticIceMask','SealevelBarystaticOceanMask'};
+md=solve(md,'Transient');
+Seustatic=md.results.TransientSolution.Sealevel;
+
+%eustatic + selfattraction run:
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=0;
+md.solidearth.settings.rotation=0;
+md.solidearth.settings.viscous=0;
+md=solve(md,'Transient');
+Sselfattraction=md.results.TransientSolution.Sealevel;
+
+%eustatic + selfattraction + elastic run:
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=1;
+md.solidearth.settings.rotation=0;
+md.solidearth.settings.viscous=0;
+md=solve(md,'Transient');
+Selastic=md.results.TransientSolution.Sealevel;
+
+%eustatic + selfattraction + elastic + rotation run:
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=1;
+md.solidearth.settings.rotation=1;
+md.solidearth.settings.viscous=0;
+md=solve(md,'Transient');
+Srotation=md.results.TransientSolution.Sealevel;
+%}}}
+
+%Fields and tolerances to track changes
+field_names     ={'Eustatic','Rigid','Elastic','Rotation'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={Seustatic,Sselfattraction,Selastic,Srotation};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2004.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2004.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2004.py	(revision 27955)
@@ -0,0 +1,488 @@
+# Test Name: Sea-Level-Partitions
+#
+# TODO:
+# - Save boundaries by name to some data structure with tag so that they can be
+#   copied to basins that use identical shapefiles and projections (will need
+#   to check if the cost of the additional structure, checks, and copying are
+#   greater than the cost of projecting).
+#
+from averaging import averaging
+from BamgTriangulate import BamgTriangulate
+from basin import *
+from epsg2proj import epsg2proj
+from find_point import find_point
+from GetAreas3DTria import GetAreas3DTria
+from InterpFromMesh2d import InterpFromMesh2d
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from intersect import intersect
+from lovenumbers import *
+from materials import materials
+from model import *
+from plotmodel import plotmodel
+from sealevelmodel import *
+from solve import solve
+
+
+testagainst2002 = 0
+
+# Data paths {{{
+shppath = '../Data/shp/'
+gshhsshapefile = shppath + 'GSHHS_c_L1-NightlyRun.shp'
+#}}}
+
+#create sealevel model to hold our information
+sl = sealevelmodel()
+
+#Create basins using boundaries from shapefile
+#some projections we'll rely on #{{{
+proj4326 = epsg2proj(4326)
+proj3031 = epsg2proj(3031)
+#}}}
+#HemisphereWest #{{{
+sl.addbasin(
+    basin('continent', 'hemispherewest', 'name', 'hemispherewest', 'proj', laea(0, -90), 'boundaries', [  # Peru projection 3587
+        boundary('shppath', shppath, 'shpfilename', 'HemisphereSplit', 'proj', proj4326, 'orientation', 'reverse'),
+        boundary('shppath', shppath, 'shpfilename', 'NorthAntarctica', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'RonneBrunt', 'proj', proj3031, 'orientation', 'reverse'),
+        boundary('shppath', shppath, 'shpfilename', 'RonneEastSummit', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'RonneFront', 'proj', proj3031, 'orientation', 'reverse'),
+        boundary('shppath', shppath, 'shpfilename', 'RonneWestSummit', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'WestAntarctica2', 'proj', proj3031, 'orientation', 'reverse'),
+        boundary('shppath', shppath, 'shpfilename', 'SouthAntarctica', 'proj', proj3031)]
+    )
+)
+#}}}
+#Ross: {{{
+sl.addbasin(
+    basin('continent', 'antarctica', 'name', 'ross', 'proj', proj3031, 'boundaries', [
+        boundary('shppath', shppath, 'shpfilename', 'SouthAntarctica', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'RossIceShelf', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'RossWestFront', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'RossFront', 'proj', proj3031, 'orientation', 'reverse')]
+    )
+)
+#}}}
+#HemisphereEast: {{{
+sl.addbasin(
+    basin('continent', 'hemisphereeast', 'name', 'hemisphereeast', 'proj', laea(0, +90), 'boundaries', [  #Australian projection lat, long
+        boundary('shppath', shppath, 'shpfilename', 'HemisphereSplit', 'proj', proj4326),
+        boundary('shppath', shppath, 'shpfilename', 'SouthAntarctica', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'RossFront', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'RossWestFront', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'EastAntarctica2', 'proj', proj3031, 'orientation', 'reverse'),
+        boundary('shppath', shppath, 'shpfilename', 'NorthAntarctica', 'proj', proj3031)]
+    )
+)
+#}}}
+#Antarctica excluding Ronne: {{{
+sl.addbasin(
+    basin('continent', 'antarctica', 'name', 'antarctica-grounded', 'proj', proj3031, 'boundaries', [
+        boundary('shppath', shppath, 'shpfilename', 'NorthAntarctica', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'EastAntarctica2', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'RossWestFront', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'RossIceShelf', 'proj', proj3031, 'orientation', 'reverse'),
+        boundary('shppath', shppath, 'shpfilename', 'SouthAntarctica', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'WestAntarctica2', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'RonneWestSummit', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'RonneIceShelf', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'RonneEastSummit', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'RonneBrunt', 'proj', proj3031)]
+    )
+)
+#}}}
+#Ronne: {{{
+sl.addbasin(
+    basin('continent', 'antarctica', 'name', 'ronne', 'proj', proj3031, 'boundaries', [
+        boundary('shppath', shppath, 'shpfilename', 'RonneWestSummit', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'RonneIceShelf', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'RonneEastSummit', 'proj', proj3031),
+        boundary('shppath', shppath, 'shpfilename', 'RonneFront', 'proj', proj3031, 'orientation', 'reverse')]
+    )
+)
+#}}}
+
+# Meshing
+# Go through basins and mesh #{{{
+# Meshing parameters: {{{
+hmin = 500
+hmax = 700
+hmin = hmin * 1000
+hmax = hmax * 1000
+tolerance = 100  # tolerance of 100m on Earth position when merging 3d meshes
+threshold = 5
+defaultoptions = ['KeepVertices', 0,
+                  'MaxCornerAngle', 0.0000000001,
+                  'NoBoundaryRefinement', 1]
+alreadyloaded = 0
+#}}}
+for ind in sl.basinindx('basin', 'all'):
+    bas = sl.basins[ind]
+    print('Meshing basin {}'.format(bas.name))
+
+    # Recover basin domain
+    domain = bas.contour()
+
+    # Recover coastline inside basin, using GSHHS_c_L1. It's a lat/long file, hence epsg 4326
+    coastline = bas.shapefilecrop('shapefile', gshhsshapefile, 'epsgshapefile', 4326, 'threshold', threshold)
+
+    # Mesh
+    md = bamg(model(), 'domain', domain, 'subdomains', coastline, 'hmin', hmin, 'hmax', hmax, *defaultoptions)  # NOTE: Unpacking defaultoptions with '*'
+
+    # Miscellaneous
+    md.mesh.proj = bas.proj
+    md.miscellaneous.name = bas.name
+
+    # Recover mask where we have land
+    md.private.bamg.landmask = (md.private.bamg['mesh'].Triangles[:, 3] >= 1).astype(int)
+
+    # Vertex connectivity
+    md.mesh.vertexconnectivity = NodeConnectivity(md.mesh.elements, md.mesh.numberofvertices)
+
+    # Add model to sl icecaps
+    sl.addicecap(md)
+#}}}
+
+# Parameterization
+# Parameterize ice sheets #{{{
+for ind in sl.basinindx('continent', ['antarctica']):
+    print('Parameterizing basin {}'.format(sl.icecaps[ind].miscellaneous.name))
+
+    md = sl.icecaps[ind]
+    bas = sl.basins[ind]
+
+    # Masks #{{{
+    # Ice levelset from domain outlines
+    md.mask.ice_levelset = -np.ones((md.mesh.numberofvertices, ))
+
+    if bas.isnameany('antarctica-grounded'):
+        md.mask.ocean_levelset = np.ones((md.mesh.numberofvertices, ))
+
+    if bas.isnameany('ronne', 'ross'):
+        md.mask.ocean_levelset = -np.ones((md.mesh.numberofvertices, ))
+    #}}}
+
+    # Lat/long #{{{
+    md.mesh.long, md.mesh.lat = gdaltransform(md.mesh.x, md.mesh.y, md.mesh.proj, 'EPSG:4326')
+    #}}}
+
+    # Geometry #{{{
+    if bas.iscontinentany('antarctica'):
+        di = md.materials.rho_ice / md.materials.rho_water
+
+        print('      reading bedrock')
+        md.geometry.bed = -np.ones((md.mesh.numberofvertices, ))
+        md.geometry.base = md.geometry.bed
+        md.geometry.thickness = 1000 * np.ones((md.mesh.numberofvertices, ))
+        md.geometry.surface = md.geometry.bed + md.geometry.thickness
+    #}}}
+
+    # SLC #{{{
+    if bas.iscontinentany('antarctica'):
+        if testagainst2002:
+            # TODO: Check if the following works as expected: 'pos' is empty, so nothing is assigned to 'md.solidearth.surfaceload.icethicknesschange[pos]'
+            md.masstransport.spcthickness = np.zeros((md.mesh.numberofvertices, ))
+            # Antarctica
+            late = np.sum(md.mesh.lat[md.mesh.elements - 1], axis=1) / 3
+            longe = np.sum(md.mesh.long[md.mesh.elements - 1], axis=1) / 3
+            pos = np.where(late < -85)[0]
+            ratio = 0.225314032985172 / 0.193045366574523
+            md.masstransport.spcthickness[md.mesh.elements[pos]] = md.masstransport.spcthickness[md.mesh.elements[pos]] - 100 * ratio
+        else:
+            delH = np.loadtxt('../Data/AIS_delH_trend.txt')
+            longAIS = delH[:, 0]
+            latAIS = delH[:, 1]
+            delHAIS = delH[:, 2]
+            index = BamgTriangulate(longAIS, latAIS)
+            late = md.mesh.lat
+            longe = md.mesh.long + 360
+            pos = np.where(longe > 360)[0]
+            longe[pos] = longe[pos] - 360
+            delHAIS = InterpFromMesh2d(index, longAIS, latAIS, delHAIS, longe, late) # NOTE: Compare to corresponding output under MATLAB to understand why we offset triangle indices by 1 (only caught because Triangle.cpp was producing triangles with negative areas)
+            northpole = find_point(md.mesh.long, md.mesh.lat, 0, 90)
+            delHAIS[northpole] = 0
+            md.masstransport.spcthickness = delHAIS / 100
+
+        md.initialization.sealevel = np.zeros((md.mesh.numberofvertices, ))
+
+        md.dsl.global_average_thermosteric_sea_level = np.zeros((2, 1))
+        md.dsl.sea_surface_height_above_geoid = np.zeros((md.mesh.numberofvertices + 1, 1))
+        md.dsl.sea_water_pressure_at_sea_floor = np.zeros((md.mesh.numberofvertices + 1, 1))
+    #}}}
+
+    # Material properties #{{{
+    md.materials = materials('hydro')
+    #}}}
+
+    # Diverse #{{{
+    md.miscellaneous.name = bas.name
+    #}}}
+
+    sl.icecaps[ind] = md
+#}}}
+
+# Parameterize continents #{{{
+for ind in sl.basinindx('continent', ['hemisphereeast', 'hemispherewest']):
+    print('Masks for basin {}'.format(sl.icecaps[ind].miscellaneous.name))
+    md = sl.icecaps[ind]
+    bas = sl.basins[ind]
+
+    # Recover lat, long
+    md.mesh.long, md.mesh.lat = gdaltransform(md.mesh.x, md.mesh.y, md.mesh.proj, 'EPSG:4326')
+
+    # Mask #{{{
+    # Figure out mask from initial mesh: deal with land and ocean masks (land includes grounded ice). #{{{
+    # First, transform land element mask into vertex-driven one
+    land = md.private.bamg.landmask
+    land_mask = -np.ones((md.mesh.numberofvertices, ))
+
+    landels = np.nonzero(land)[0]
+    land_mask[md.mesh.elements[landels, :] - 1] = 1 # NOTE: Need to offset each element of each row of md.mesh.elements[landels, :] by one
+
+    # Go through edges of each land element
+    connectedels = md.mesh.elementconnectivity[landels, :] - 1 # NOTE: Need to offset each element of each row of md.mesh.elementconnectivity[landels, :] by one
+    connectedisonocean = np.logical_not(land[connectedels]).astype(int)
+    sumconnectedisonocean = np.sum(connectedisonocean, axis=1)
+
+    # Figure out which land elements are connected to the ocean
+    landelsconocean = landels[np.nonzero(sumconnectedisonocean)[0]]
+
+    ind1 = np.hstack((md.mesh.elements[landelsconocean, 0],
+                      md.mesh.elements[landelsconocean, 1],
+                      md.mesh.elements[landelsconocean, 2]))
+    ind2 = np.hstack((md.mesh.elements[landelsconocean, 1],
+                      md.mesh.elements[landelsconocean, 2],
+                      md.mesh.elements[landelsconocean, 0]))
+
+    # Edge ind1 and ind2
+    for i in range(len(ind1)):
+        els1 = md.mesh.vertexconnectivity[ind1[i] - 1, 0:md.mesh.vertexconnectivity[ind1[i] - 1, -1]]
+        els2 = md.mesh.vertexconnectivity[ind2[i] - 1, 0:md.mesh.vertexconnectivity[ind2[i] - 1, -1]]
+        els = intersect(els1, els2)[0] # NOTE: Throwing away second- and third- position values returned from call
+
+        if len(np.nonzero(land[els - 1])[0]) == 1:
+            # This edge is on the beach, 0 to the edge
+            land_mask[ind1[i] - 1] = 0
+            land_mask[ind2[i] - 1] = 0
+
+    md.mask.ocean_levelset = land_mask
+    md.mask.ice_levelset = np.ones((md.mesh.numberofvertices, )) # If there are glaciers, we'll adjust
+
+    if testagainst2002:
+        #{{{
+        # Greenland
+        pos = np.where(np.logical_and.reduce((md.mesh.lat > 70, md.mesh.lat < 80, md.mesh.long > -60, md.mesh.long < -30)))[0]
+        md.mask.ice_levelset[pos] = -1
+        #}}}
+    #}}}
+
+    # SLC loading/calibration #{{{
+    md.masstransport.spcthickness = np.zeros((md.mesh.numberofvertices, ))
+
+    if testagainst2002:
+        #{{{
+        # Greenland
+        late = np.sum(md.mesh.lat[md.mesh.elements - 1], axis=1) / 3
+        longe = np.sum(md.mesh.long[md.mesh.elements - 1], axis=1) / 3
+        pos = np.where(np.logical_and.reduce((late > 70, late < 80, longe > -60, longe < -30)))[0]
+        ratio = .3823 / .262344
+        md.masstransport.spcthickness[md.mesh.elements[pos]] = md.masstransport.spcthickness[md.mesh.elements[pos]] - 100 * ratio
+
+        # Correct mask
+        md.mask.ice_levelset[md.mesh.elements[pos, :] - 1] = -1
+        #}}}
+    else:
+        delH = np.loadtxt('../Data/GIS_delH_trend.txt')
+        longGIS = delH[:, 0]
+        latGIS = delH[:, 1]
+        delHGIS = delH[:, 2]
+        index = BamgTriangulate(longGIS, latGIS)
+        late = md.mesh.lat
+        longe = md.mesh.long + 360
+        pos = np.where(longe > 360)[0]
+        longe[pos] = longe[pos] - 360
+        delHGIS = InterpFromMeshToMesh2d(index, longGIS, latGIS, delHGIS, longe, late)
+
+        delH = np.loadtxt('../Data/GLA_delH_trend_15regions.txt')
+        longGLA = delH[:, 0]
+        latGLA = delH[:, 1]
+        delHGLA = np.sum(delH[:, 2:], axis=1)
+        index = BamgTriangulate(longGLA, latGLA)
+        late = md.mesh.lat
+        longe = md.mesh.long + 360
+        pos = np.where(longe > 360)[0]
+        longe[pos] = longe[pos] - 360
+        delHGLA = InterpFromMeshToMesh2d(index, longGLA, latGLA, delHGLA, longe, late)
+
+        # NOTE: For some reason, cannot apply pos to multiple arrays in a
+        #       singlelike we might do in MATLAB. Instead, we iterate over
+        #       elements of pos.
+        #
+        pos = np.nonzero(delHGIS)[0]
+        for p in pos:
+            md.masstransport.spcthickness[p] = md.masstransport.spcthickness[p] - delHGIS[p] / 100
+        pos = np.nonzero(delHGLA)[0]
+        for p in pos:
+            md.masstransport.spcthickness[p] = md.masstransport.spcthickness[p] - delHGLA[p] / 100
+
+        # Adjust mask accordingly
+        pos = np.nonzero(md.masstransport.spcthickness)[0]
+        md.mask.ice_levelset[pos] = -1
+        md.mask.ocean_levelset[pos] = 1
+
+    md.initialization.sealevel = np.zeros((md.mesh.numberofvertices, ))
+
+    md.dsl.global_average_thermosteric_sea_level = np.zeros((2, 1))
+    md.dsl.sea_surface_height_above_geoid = np.zeros((md.mesh.numberofvertices + 1, 1))
+    md.dsl.sea_water_pressure_at_sea_floor = np.zeros((md.mesh.numberofvertices + 1, 1))
+    #}}}
+
+    # Geometry #{{{
+    di = md.materials.rho_ice / md.materials.rho_water
+    md.geometry.bed = -np.ones((md.mesh.numberofvertices, ))
+    md.geometry.base = md.geometry.bed
+    md.geometry.thickness = 1000 * np.ones((md.mesh.numberofvertices, ))
+    md.geometry.surface = md.geometry.bed + md.geometry.thickness
+    #}}}
+    # Materials #{{{
+    md.materials = materials('hydro')
+    #}}}
+    sl.icecaps[ind] = md
+
+# Assemble Earth in 3D #{{{
+
+# Parameters
+plotting = 0
+tolerance = 100
+loneedgesdetect = 0
+
+# Create Earth model by concatenating all the icecaps in 3D
+sl.caticecaps('tolerance', tolerance, 'loneedgesdetect', loneedgesdetect)
+
+# Figure out how each icecap's mesh connects to the larger Earth mesh
+sl.intersections('force', 1)
+
+# Figure out connectivity
+print('Mesh connectivity')
+sl.earth.mesh.vertexconnectivity = NodeConnectivity(sl.earth.mesh.elements, sl.earth.mesh.numberofvertices)
+
+# Areas
+print('Mesh nodal areas')
+sl.earth.mesh.area = averaging(sl.earth, GetAreas3DTria(sl.earth.mesh.elements, sl.earth.mesh.x, sl.earth.mesh.y, sl.earth.mesh.z), 4)
+
+# Transfer a list of fields from each icecap and continent back to Earth
+sl.transfer('mask.ice_levelset')
+sl.transfer('mask.ocean_levelset')
+sl.transfer('geometry.bed')
+sl.transfer('geometry.surface')
+sl.transfer('geometry.thickness')
+sl.transfer('geometry.base')
+sl.transfer('mesh.lat')
+sl.transfer('mesh.long')
+sl.transfer('masstransport.spcthickness') #
+sl.transfer('initialization.sealevel')
+sl.transfer('dsl.sea_surface_height_above_geoid')
+sl.transfer('dsl.sea_water_pressure_at_sea_floor')
+
+# Radius
+sl.earth.mesh.r = (sl.earth.mesh.x ** 2 + sl.earth.mesh.y ** 2 + sl.earth.mesh.z ** 2) ** 0.5 # NOTE: math.sqrt cannot be applied element-wise to a list/numpy.array
+
+# Check on the mesh transitions #{{{
+plotting = 0
+if plotting:
+    flags = np.ones((sl.earth.mesh.numberofelements, ))
+    for i in range(len(sl.eltransitions)):
+        flags[sl.eltransitions[i]] = i
+    # TODO: Reconfigure the following in the process of bringing plotting online
+    plotmodel(sl.earth, 'data', flags, 'shading', 'faceted', 'coastline', 'on', 'coast_color', 'g')
+#}}}
+
+#}}}
+
+# Solve Sea-level equation on Earth only #{{{
+md = sl.earth # we don't do computations on ice sheets or land
+
+#Materials
+md.materials = materials('hydro')
+
+# Elastic loading from love numbers
+md.solidearth.lovenumbers = lovenumbers('maxdeg', 100)
+md.solidearth.settings.ocean_area_scaling = 0
+
+# Miscellaneous
+md.miscellaneous.name = 'test2004'
+
+# New stuff
+md.dsl.global_average_thermosteric_sea_level = np.array([[(1.1 + .38)], [0]]) # steric + water storage AR5
+
+# Solutuion parameters
+md.solidearth.settings.reltol = np.nan
+md.solidearth.settings.abstol = 1e-3
+md.solidearth.settings.sealevelloading = 1
+md.solidearth.settings.isgrd = 1
+md.solidearth.settings.ocean_area_scaling = 1
+md.solidearth.settings.grdmodel = 1
+md.timestepping.time_step = 1
+
+# Physics
+md.transient.issmb = 0
+md.transient.isstressbalance = 0
+md.transient.isthermal = 0
+md.transient.ismasstransport = 1
+md.transient.isslc = 1
+
+# Initializations
+md.basalforcings.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices,))
+md.basalforcings.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices,))
+md.initialization.vx = np.zeros((md.mesh.numberofvertices,))
+md.initialization.vy = np.zeros((md.mesh.numberofvertices,))
+md.initialization.sealevel = np.zeros((md.mesh.numberofvertices,))
+md.initialization.bottompressure = np.zeros((md.mesh.numberofvertices,))
+md.initialization.dsl = np.zeros((md.mesh.numberofvertices,))
+md.initialization.str = 0
+md.smb.mass_balance = np.zeros((md.mesh.numberofvertices,))
+
+# Max number of iterations reverted back to 10 (i.e. the original default value)
+md.solidearth.settings.maxiter = 10
+
+# Eustatic run:
+md.solidearth.settings.selfattraction = 0
+md.solidearth.settings.elastic = 0
+md.solidearth.settings.rotation = 0
+md.solidearth.settings.viscous = 0
+md.solidearth.requested_outputs = ['default',
+                                   'DeltaIceThickness',
+                                   'Sealevel',
+                                   'Bed',
+                                   'SealevelBarystaticIceMask',
+                                   'SealevelBarystaticOceanMask']
+md = solve(md, 'Transient')
+Seustatic = md.results.TransientSolution.Sealevel
+
+# Eustatic + selfattraction run
+md.solidearth.settings.selfattraction = 1
+md.solidearth.settings.elastic = 0
+md.solidearth.settings.rotation = 0
+md.solidearth.settings.viscous = 0
+md = solve(md, 'Transient')
+Sselfattraction = md.results.TransientSolution.Sealevel
+
+# Eustatic + selfattraction + elastic run
+md.solidearth.settings.selfattraction = 1
+md.solidearth.settings.elastic = 1
+md.solidearth.settings.rotation = 0
+md.solidearth.settings.viscous = 0
+md = solve(md, 'Transient')
+Selastic = md.results.TransientSolution.Sealevel
+
+# Eustatic + selfattraction + elastic + rotation run
+md.solidearth.settings.selfattraction = 1
+md.solidearth.settings.elastic = 1
+md.solidearth.settings.rotation = 1
+md.solidearth.settings.viscous = 0
+md = solve(md, 'Transient')
+Srotation = md.results.TransientSolution.Sealevel
+
+#Fields and tolerances to track changes
+field_names = ['Eustatic', 'Rigid', 'Elastic', 'Rotation']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [Seustatic, Sselfattraction, Selastic, Srotation]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2005.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2005.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2005.m	(revision 27955)
@@ -0,0 +1,117 @@
+%Test Name: Earthslc_time
+
+%mesh earth:
+md=model;
+load ../Data/SlcTestMesh.mat;
+md.mesh=SlcMesh; %700 km resolution mesh
+
+%Geometry for the bed, arbitrary thickness of 100: 
+md.geometry.bed=zeros(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.bed;
+md.geometry.thickness=100*ones(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+
+%solidearth loading:  {{{
+md.masstransport.spcthickness=[md.geometry.thickness;0];
+md.smb.mass_balance=zeros(md.mesh.numberofvertices,1);
+%antarctica
+xe=md.mesh.x(md.mesh.elements)*[1;1;1]/3;
+ye=md.mesh.y(md.mesh.elements)*[1;1;1]/3;
+ze=md.mesh.z(md.mesh.elements)*[1;1;1]/3;
+re=sqrt(xe.^2+ye.^2+ze.^2);
+
+late=asind(ze./re);
+longe=atan2d(ye,xe);
+pos=find(late < -80);
+md.masstransport.spcthickness(md.mesh.elements(pos,:))= md.masstransport.spcthickness(md.mesh.elements(pos,:))-100;
+posant=pos;
+%greenland
+pos=find(late>60 & late<90 & longe>-75 & longe<-15);
+md.masstransport.spcthickness(md.mesh.elements(pos,:))= md.masstransport.spcthickness(md.mesh.elements(pos,:))-100;
+posgre=pos;
+
+%elastic loading from love numbers:
+md.solidearth.lovenumbers=lovenumbers('maxdeg',1000);
+
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+oceanmask=-ones(md.mesh.numberofvertices,1);
+pos=find(mask==0); oceanmask(pos)=1;
+
+icemask=ones(md.mesh.numberofvertices,1);
+icemask(md.mesh.elements(posant))=-1;
+icemask(md.mesh.elements(posgre))=-1;
+
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=oceanmask;
+% }}}
+
+%time stepping: 
+md.timestepping.start_time=0;
+md.timestepping.time_step=1;
+md.timestepping.final_time=10;
+
+%masstransport:
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+md.initialization.str=0;
+
+%Materials: 
+md.materials=materials('hydro');
+
+%Miscellaneous
+md.miscellaneous.name='test2005';
+
+%Solution parameters
+md.cluster.np=3;
+md.solidearth.settings.reltol=NaN;
+md.solidearth.settings.abstol=1e-3;
+md.solidearth.settings.sealevelloading=1;
+md.solidearth.settings.isgrd=1;
+md.solidearth.settings.ocean_area_scaling=0;
+md.solidearth.settings.grdmodel=1;
+
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=1;
+md.solidearth.settings.rotation=1;
+md.solidearth.settings.viscous=0;
+
+%Physics: 
+md.transient.issmb=0; 
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.ismasstransport=1;
+md.transient.isslc=1;
+md.solidearth.requested_outputs={'Sealevel'};
+
+dh=md.masstransport.spcthickness;
+deltathickness=zeros(md.mesh.numberofvertices+1,10);
+for i=0:10,
+	deltathickness(1:end-1,i+1)=md.geometry.thickness+dh(1:end-1)*i;
+end
+deltathickness(end,:)=0:1:10;
+md.masstransport.spcthickness=deltathickness;
+%hack: 
+md.geometry.surface=zeros(md.mesh.numberofvertices,1);
+md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+md.geometry.base=-ones(md.mesh.numberofvertices,1);
+md.geometry.bed=md.geometry.base;
+
+
+%run transient solution: 
+md=solve(md,'Transient');
+
+S1=md.results.TransientSolution(1).Sealevel;
+S5=md.results.TransientSolution(5).Sealevel;
+S10=md.results.TransientSolution(10).Sealevel;
+Seus10=md.results.TransientSolution(10).Bslc;
+
+%Fields and tolerances to track changes
+field_names={'Sealevel1','Sealevel5','Sealevel10','Seustatic10'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={S1,S5,S10,Seus10};
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2005.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2005.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2005.py	(revision 27955)
@@ -0,0 +1,129 @@
+#Test Name: EarthSlc
+import numpy as np
+import pickle
+from gmtmask import *
+from lovenumbers import *
+from materials import *
+from model import *
+from parameterize import *
+from paterson import *
+from solve import *
+
+
+# Mesh earth
+md = model()
+
+# Load precomputed mesh
+with open('../Data/SlcTestMesh.pkl', 'rb') as slc_test_mesh_file:
+    md.mesh = pickle.load(slc_test_mesh_file, encoding='latin1')
+
+# Geometry for the bed, arbitrary thickness of 100
+md.geometry.bed = np.zeros((md.mesh.numberofvertices, ))
+md.geometry.base = md.geometry.bed
+md.geometry.thickness = 100 * np.ones((md.mesh.numberofvertices, ))
+md.geometry.surface = md.geometry.bed + md.geometry.thickness
+
+# Solidearth loading #{{{
+md.masstransport.spcthickness = np.append(md.geometry.thickness, 0)
+md.smb.mass_balance = np.zeros((md.mesh.numberofvertices, ))
+# Antarctica
+xe = md.mesh.x[md.mesh.elements - 1].sum(axis=1) / 3
+ye = md.mesh.y[md.mesh.elements - 1].sum(axis=1) / 3
+ze = md.mesh.z[md.mesh.elements - 1].sum(axis=1) / 3
+re = pow((pow(xe, 2) + pow(ye, 2) + pow(ze, 2)), 0.5)
+
+late = asind(ze / re)
+longe = atan2d(ye, xe)
+pos = np.where(late < -80)[0]
+md.masstransport.spcthickness[md.mesh.elements[pos, :] - 1] = md.masstransport.spcthickness[md.mesh.elements[pos, :] - 1] - 100
+posant = pos
+# Greenland
+pos = np.where(np.logical_and.reduce((late > 60, late < 90, longe > -75, longe < -15)))[0]
+md.masstransport.spcthickness[md.mesh.elements[pos, :] - 1] = md.masstransport.spcthickness[md.mesh.elements[pos, :] - 1] - 100
+posgre = pos
+
+# Elastic loading from love numbers
+md.solidearth.lovenumbers = lovenumbers('maxdeg', 1000)
+#}}}
+
+# Mask #{{{
+mask = gmtmask(md.mesh.lat, md.mesh.long)
+oceanmask = -1 * np.ones((md.mesh.numberofvertices, 1))
+pos = np.where(mask == 0)[0]
+oceanmask[pos] = 1
+
+icemask = np.ones((md.mesh.numberofvertices, 1))
+# NOTE: Need to be careful here: when addressing with multidimensional array in 
+# MATLAB, only first column of values are used as indices
+#
+icemask[md.mesh.elements[posant][:,0] - 1] = -1
+icemask[md.mesh.elements[posgre][:,0] - 1] = -1
+
+md.mask.ice_levelset = icemask
+md.mask.ocean_levelset = oceanmask
+
+# Time stepping
+md.timestepping.start_time = 0
+md.timestepping.time_step = 1
+md.timestepping.final_time = 10
+
+# Masstransport
+md.basalforcings.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices, ))
+md.basalforcings.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.vx = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.vy = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.sealevel = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.str = 0
+
+# Materials
+md.materials = materials('hydro')
+
+# Miscellaneous
+md.miscellaneous.name = 'test2005'
+
+# Solution parameters
+md.cluster.np = 3
+md.solidearth.settings.reltol = np.nan
+md.solidearth.settings.abstol = 1e-3
+md.solidearth.settings.sealevelloading = 1
+md.solidearth.settings.isgrd = 1
+md.solidearth.settings.ocean_area_scaling = 0
+md.solidearth.settings.grdmodel = 1
+
+md.solidearth.settings.selfattraction = 1
+md.solidearth.settings.elastic = 1
+md.solidearth.settings.rotation = 1
+md.solidearth.settings.viscous = 0
+
+# Physics
+md.transient.issmb = 0
+md.transient.isstressbalance = 0
+md.transient.isthermal = 0
+md.transient.ismasstransport = 1
+md.transient.isslc = 1
+md.solidearth.requested_outputs = ['Sealevel']
+
+dh = md.masstransport.spcthickness
+deltathickness = np.zeros((md.mesh.numberofvertices + 1, 10 + 1)) # NOTE: Need to add another row as it is added in loop in MATLAB, which causes a RuntimeError in Python
+for i in range(10 + 1):
+    deltathickness[0:-1, i] = md.geometry.thickness + dh[0:-1] * i
+deltathickness[-1, :] = np.arange(0, 10 + 1, 1)
+md.masstransport.spcthickness = deltathickness
+# Hack
+md.geometry.surface = np.zeros((md.mesh.numberofvertices, 1))
+md.geometry.thickness = np.ones((md.mesh.numberofvertices, 1))
+md.geometry.base = -np.ones((md.mesh.numberofvertices, 1))
+md.geometry.bed = md.geometry.base
+
+# Run transient solution
+md = solve(md, 'Transient')
+
+S1 = md.results.TransientSolution[1 - 1].Sealevel
+S5 = md.results.TransientSolution[5 - 1].Sealevel
+S10 = md.results.TransientSolution[10 - 1].Sealevel
+Seus10 = md.results.TransientSolution[10 - 1].Bslc
+
+# Fields and tolerances to track changes
+field_names = ['Sealevel1', 'Sealevel5', 'Sealevel10', 'Seustatic10']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [S1, S5, S10, Seus10]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2006.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2006.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2006.m	(revision 27955)
@@ -0,0 +1,207 @@
+%Test Name: EarthSlc Dakota Sampling glaciers.
+
+%mesh earth:
+md=model;
+load ../Data/SlcTestMesh.mat;
+md.mesh=SlcMesh; %700 km resolution mesh
+
+%Geometry for the bed, arbitrary thickness of 100: 
+md.geometry.bed=zeros(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.bed;
+md.geometry.thickness=100*ones(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+
+%solidearth loading:  {{{
+md.masstransport.spcthickness=[md.geometry.thickness;0];
+md.smb.mass_balance=zeros(md.mesh.numberofvertices,1);
+%antarctica
+xe=md.mesh.x(md.mesh.elements)*[1;1;1]/3;
+ye=md.mesh.y(md.mesh.elements)*[1;1;1]/3;
+ze=md.mesh.z(md.mesh.elements)*[1;1;1]/3;
+re=sqrt(xe.^2+ye.^2+ze.^2);
+
+late=asind(ze./re);
+longe=atan2d(ye,xe);
+pos=find(late < -80);
+md.masstransport.spcthickness(md.mesh.elements(pos,:))= md.masstransport.spcthickness(md.mesh.elements(pos,:))-100;
+posant=pos;
+%greenland
+pos=find(late>60 & late<90 & longe>-75 & longe<-15);
+md.masstransport.spcthickness(md.mesh.elements(pos,:))= md.masstransport.spcthickness(md.mesh.elements(pos,:))-100;
+posgre=pos;
+
+%elastic loading from love numbers:
+md.solidearth.lovenumbers=lovenumbers('maxdeg',100);
+
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+oceanmask=-ones(md.mesh.numberofvertices,1);
+pos=find(mask==0); oceanmask(pos)=1;
+
+icemask=ones(md.mesh.numberofvertices,1);
+icemask(md.mesh.elements(posant))=-1;
+icemask(md.mesh.elements(posgre))=-1;
+
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=oceanmask;
+% }}}
+
+%time stepping: 
+md.timestepping.start_time=0;
+md.timestepping.time_step=1;
+md.timestepping.final_time=10;
+
+%masstransport:
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+md.initialization.str=0;
+
+%Materials: 
+md.materials=materials('hydro');
+
+%Miscellaneous
+md.miscellaneous.name='test2006';
+
+%Solution parameters
+md.cluster.np=3;
+md.solidearth.settings.reltol=NaN;
+md.solidearth.settings.abstol=1e-3;
+md.solidearth.settings.sealevelloading=1;
+md.solidearth.settings.isgrd=1;
+md.solidearth.settings.ocean_area_scaling=0;
+md.solidearth.settings.grdmodel=1;
+
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=1;
+md.solidearth.settings.rotation=1;
+md.solidearth.settings.viscous=0;
+
+%Physics: 
+md.transient.issmb=0; 
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.ismasstransport=1;
+md.transient.isslc=1;
+md.solidearth.requested_outputs={'Sealevel'};
+
+dh=md.masstransport.spcthickness;
+deltathickness=zeros(md.mesh.numberofvertices+1,10);
+for i=0:10,
+	deltathickness(1:end-1,i+1)=md.geometry.thickness+dh(1:end-1)*i;
+end
+deltathickness(end,:)=0:1:10;
+md.masstransport.spcthickness=deltathickness;
+
+%hack: 
+md.geometry.surface=zeros(md.mesh.numberofvertices,1);
+md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+md.geometry.base=-ones(md.mesh.numberofvertices,1);
+md.geometry.bed=md.geometry.base;
+
+
+%Uncertainty Quantification
+%ice sheets {{{
+npart=1; nt=1;
+partition=-ones(md.mesh.numberofelements,1);
+pos=find(late < -80); partition(pos)=0;
+pos=find(late>70 & late<80 & longe>-60 & longe<-30); partition(pos)=0;
+
+%variables: 
+qmuvar.surfaceload=normal_uncertain('descriptor','scaled_SurfaceloadIceThicknessChange',...
+	'mean',1*ones(npart,nt),...
+	'stddev',.1*ones(npart,nt),... %10% standard deviation
+	'partition',partition,...
+	'transient','on',...
+	'nsteps',nt);
+%}}}
+
+%correlation:
+md.qmu.correlation_matrix=[];
+
+%variables final declaration:
+md.qmu.variables=struct();
+md.qmu.variables.surfaceload=qmuvar.surfaceload;
+
+locations=[1 5 10 15 20];
+%responses  % {{{
+md.qmu.responses.sealevel1=response_function('descriptor','Outputdefinition1');
+md.qmu.responses.sealevel2=response_function('descriptor','Outputdefinition2');
+md.qmu.responses.sealevel3=response_function('descriptor','Outputdefinition3');
+md.qmu.responses.sealevel4=response_function('descriptor','Outputdefinition4');
+md.qmu.responses.sealevel5=response_function('descriptor','Outputdefinition5');
+
+%output definitions: 
+for i=1:length(locations),
+	ind=locations(i);
+	if i==1,
+		md.outputdefinition.definitions={nodalvalue('name','SNode','definitionstring','Outputdefinition1', ...
+			'model_string','Sealevel','node',ind)}; 
+	else
+		md.outputdefinition.definitions{end+1}=nodalvalue('name','SNode','definitionstring',['Outputdefinition' num2str(i)], ...
+			'model_string','Sealevel','node',ind); 
+	end
+end 
+% }}}
+
+%algorithm:  % {{{
+md.qmu.method     =dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+'seed',1234,...
+'samples',10,...
+'sample_type','random');
+md.qmu.output=1; 
+%}}}
+%parameters % {{{
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+md.qmu.params.analysis_driver='matlab';
+md.qmu.params.evaluation_scheduling='master';
+md.qmu.params.processors_per_evaluation=2;
+md.qmu.params.tabular_graphics_data=true; 
+md.qmu.isdakota=1;
+md.verbose=verbose(0); md.verbose.qmu=1;
+% }}}
+%qmu statistics %{{{
+md.qmu.statistics.nfiles_per_directory=2;
+md.qmu.statistics.ndirectories=5;
+
+md.qmu.statistics.method(1).name='Histogram';
+md.qmu.statistics.method(1).fields={'Sealevel','BslcIce'};
+md.qmu.statistics.method(1).steps=[1:10];
+md.qmu.statistics.method(1).nbins=20;
+
+md.qmu.statistics.method(2).name='MeanVariance';
+md.qmu.statistics.method(2).fields={'Sealevel','BslcIce'};
+md.qmu.statistics.method(2).steps=[1:10];
+
+md.qmu.statistics.method(3).name='SampleSeries';
+md.qmu.statistics.method(3).fields={'Sealevel','BslcIce'};
+md.qmu.statistics.method(3).steps=[1:10];
+md.qmu.statistics.method(3).indices=locations;
+%}}}
+
+%run transient dakota solution: 
+mds=solve(md,'Transient');
+
+%run without statistics computations:
+md.qmu.statistics.method(1).name='None';
+md=solve(md,'Transient');
+
+%compare statistics with our own here:
+svalues=mds.results.StatisticsSolution(end).SealevelSamples; %all values at locations.
+
+dvalues=zeros(md.qmu.method.params.samples,length(locations));
+for i=1:md.qmu.method.params.samples,
+	dvalues(i,:)=md.results.dakota.modelresults{i}.TransientSolution(end).Sealevel(locations);
+end
+
+samplesnorm=norm(dvalues-svalues,'fro');
+
+%Fields and tolerances to track changes
+field_names={'Samples Norm'};
+field_tolerances={1e-13};
+field_values={samplesnorm};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2006.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2006.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2006.py	(revision 27955)
@@ -0,0 +1,240 @@
+#Test Name: EarthSlc Dakota Sampling glaciers
+import numpy as np
+import pickle
+from socket import gethostname
+from dmeth_params_set import *
+from gmtmask import *
+from lovenumbers import *
+from materials import *
+from MatlabFuncs import *
+from model import *
+from nodalvalue import *
+from normal_uncertain import *
+from response_function import *
+from solve import *
+
+
+# Mesh earth
+md = model()
+md.cluster = generic('name', gethostname(), 'np', 5)
+md.mesh = gmshplanet('radius', 6.371012 * 1e3, 'resolution', 700.)  #700 km resolution mesh
+
+# Load precomputed mesh
+with open('../Data/SlcTestMesh.pkl', 'rb') as slc_test_mesh_file:
+    md.mesh = pickle.load(slc_test_mesh_file)
+
+# Geometry for the bed, arbitrary thickness of 100
+md.geometry.bed = np.zeros((md.mesh.numberofvertices, ))
+md.geometry.base = md.geometry.bed
+md.geometry.thickness = 100 * np.ones((md.mesh.numberofvertices, ))
+md.geometry.surface = md.geometry.bed + md.geometry.thickness
+
+# Solidearth loading #{{{
+md.masstransport.spcthickness = np.append(md.geometry.thickness, 0)
+md.smb.mass_balance = np.zeros((md.mesh.numberofvertices, ))
+# Antarctica
+xe = md.mesh.x[md.mesh.elements - 1].sum(axis=1) / 3
+ye = md.mesh.y[md.mesh.elements - 1].sum(axis=1) / 3
+ze = md.mesh.z[md.mesh.elements - 1].sum(axis=1) / 3
+re = pow((pow(xe, 2) + pow(ye, 2) + pow(ze, 2)), 0.5)
+
+late = asind(ze / re)
+longe = atan2d(ye, xe)
+pos = np.where(late < -80)[0]
+md.masstransport.spcthickness[md.mesh.elements[pos, :] - 1] = md.masstransport.spcthickness[md.mesh.elements[pos, :] - 1] - 100
+posant = pos
+# Greenland
+pos = np.where(np.logical_and.reduce((late > 60, late < 90, longe > -75, longe < -15)))[0]
+md.masstransport.spcthickness[md.mesh.elements[pos, :] - 1] = md.masstransport.spcthickness[md.mesh.elements[pos, :] - 1] - 100
+posgre = pos
+
+# Elastic loading from love numbers
+md.solidearth.lovenumbers = lovenumbers('maxdeg', 100)
+#}}}
+
+# Mask #{{{
+mask = gmtmask(md.mesh.lat, md.mesh.long)
+oceanmask = -1 * np.ones((md.mesh.numberofvertices, 1))
+pos = np.where(mask == 0)[0]
+oceanmask[pos] = 1
+
+icemask = np.ones((md.mesh.numberofvertices, 1))
+# NOTE: Need to be careful here: when addressing with multidimensional array in
+# MATLAB, only first column of values are used as indices
+#
+icemask[md.mesh.elements[posant][:,0] - 1] = -1
+icemask[md.mesh.elements[posgre][:,0] - 1] = -1
+
+md.mask.ice_levelset = icemask
+md.mask.ocean_levelset = oceanmask
+
+# Time stepping
+md.timestepping.start_time = 0
+md.timestepping.time_step = 1
+md.timestepping.final_time = 10
+
+# Masstransport
+md.basalforcings.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices, ))
+md.basalforcings.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.vx = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.vy = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.sealevel = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.str = 0
+
+# Materials
+md.materials = materials('hydro')
+
+# Miscellaneous
+md.miscellaneous.name = 'test2006'
+
+# Solution parameters
+md.cluster.np = 3
+md.solidearth.settings.reltol = np.nan
+md.solidearth.settings.abstol = 1e-3
+md.solidearth.settings.sealevelloading = 1
+md.solidearth.settings.isgrd = 1
+md.solidearth.settings.ocean_area_scaling = 0
+md.solidearth.settings.grdmodel = 1
+
+md.solidearth.settings.selfattraction = 1
+md.solidearth.settings.elastic = 1
+md.solidearth.settings.rotation = 1
+md.solidearth.settings.viscous = 0
+
+# Physics
+md.transient.issmb = 0
+md.transient.isstressbalance = 0
+md.transient.isthermal = 0
+md.transient.ismasstransport = 1
+md.transient.isslc = 1
+md.solidearth.requested_outputs = ['Sealevel']
+
+dh = md.masstransport.spcthickness
+deltathickness = np.zeros((md.mesh.numberofvertices + 1, 10 + 1)) # NOTE: Need to add another row as it is added in loop in MATLAB, which causes a RuntimeError in Python
+for i in range(10 + 1):
+    deltathickness[0:-1, i] = md.geometry.thickness + dh[0:-1] * i
+deltathickness[-1, :] = np.arange(0, 10 + 1, 1)
+md.masstransport.spcthickness = deltathickness
+
+# Hack
+md.geometry.surface = np.zeros((md.mesh.numberofvertices, 1))
+md.geometry.thickness = np.ones((md.mesh.numberofvertices, 1))
+md.geometry.base = -np.ones((md.mesh.numberofvertices, 1))
+md.geometry.bed = md.geometry.base
+
+# Uncertainty quantification
+# Ice sheets #{{{
+npart = 1
+nt = 1
+partition = -1 * np.ones((md.mesh.numberofelements, 1))
+pos = np.where(late < -80)[0]
+partition[pos] = 0
+pos = np.where(np.logical_and.reduce((late > 70, late < 80, longe > -60, longe < -30)))[0]
+partition[pos] = 0
+
+# Variables
+qmuvar = OrderedStruct()
+qmuvar.surfaceload = normal_uncertain.normal_uncertain(
+    'descriptor',   'scaled_SurfaceloadIceThicknessChange',
+    'mean',         1 * np.ones((npart, nt)),
+    'stddev',       1 * np.ones((npart, nt)), # 10% standard deviation
+    'partition',    partition,
+    'transient',    'on',
+    'nsteps',       nt
+)
+#}}}
+
+# Correlation
+md.qmu.correlation_matrix = []
+
+# Variables final declaration
+md.qmu.variables = OrderedStruct()
+md.qmu.variables.surfaceload = qmuvar.surfaceload
+
+locations = np.array([1, 5, 10, 15, 20])
+
+# Responses #{{{
+md.qmu.responses.sealevel1 = response_function.response_function('descriptor', 'Outputdefinition1')
+md.qmu.responses.sealevel2 = response_function.response_function('descriptor', 'Outputdefinition2')
+md.qmu.responses.sealevel3 = response_function.response_function('descriptor', 'Outputdefinition3')
+md.qmu.responses.sealevel4 = response_function.response_function('descriptor', 'Outputdefinition4')
+md.qmu.responses.sealevel5 = response_function.response_function('descriptor', 'Outputdefinition5')
+
+# Output definitions
+for i in range(len(locations)):
+    if i == 0:
+        md.outputdefinition.definitions = [nodalvalue('name', 'SNode',
+                                                      'definitionstring', 'Outputdefinition1',
+                                                      'model_string', 'Sealevel',
+                                                      'node', locations[i])]
+    else:
+        md.outputdefinition.definitions.append(
+            nodalvalue('name', 'SNode',
+                       'definitionstring', 'Outputdefinition' + str(i + 1),
+                       'model_string', 'Sealevel',
+                       'node', locations[i]))
+#}}}
+
+# Algorithm #{{{
+md.qmu.method = dakota_method.dakota_method('nond_samp')
+md.qmu.method = dmeth_params_set(md.qmu.method,
+                                 'seed', 1234,
+                                 'samples', 10,
+                                 'sample_type', 'random')
+md.qmu.output = 1
+#}}}
+# Parameters #{{{
+md.qmu.params.direct = True
+md.qmu.params.interval_type = 'forward'
+md.qmu.params.analysis_driver = 'matlab'
+md.qmu.params.evaluation_scheduling = 'master'
+md.qmu.params.processors_per_evaluation = 2
+md.qmu.params.tabular_graphics_data = True
+md.qmu.isdakota = 1
+md.verbose = verbose(0)
+md.verbose.qmu = 1
+#}}}
+# QMU statistics #{{{
+
+# TODO: Abstract reshaping of arrays away to src/m/classes/qmustatistics.py::marshall or src/m/solve/WriteData.py
+#
+md.qmu.statistics.nfiles_per_directory = 2
+md.qmu.statistics.ndirectories = 5
+
+md.qmu.statistics.method[0]['name'] = 'Histogram'
+md.qmu.statistics.method[0]['fields'] = ['Sealevel', 'BslcIce']
+md.qmu.statistics.method[0]['steps'] = np.arange(1, 10 + 1).reshape(1, -1)
+md.qmu.statistics.method[0]['nbins'] = 20
+
+md.qmu.statistics.addmethod()
+md.qmu.statistics.method[1]['name'] = 'MeanVariance'
+md.qmu.statistics.method[1]['fields'] = ['Sealevel', 'BslcIce']
+md.qmu.statistics.method[1]['steps'] = np.arange(1, 10 + 1).reshape(1, -1)
+
+md.qmu.statistics.addmethod()
+md.qmu.statistics.method[2]['name'] = 'SampleSeries'
+md.qmu.statistics.method[2]['fields'] = ['Sealevel', 'BslcIce']
+md.qmu.statistics.method[2]['steps'] = np.arange(1, 10 + 1).reshape(1, -1)
+md.qmu.statistics.method[2]['indices'] = locations.reshape(1, -1)
+#}}}
+
+# Run transient Dakota solution
+mds = solve(md, 'Transient')
+
+# Run without statistics computations
+md.qmu.statistics.method[0]['name'] = 'None'
+md = solve(md, 'Transient')
+
+# Compare statistics with our own here
+svalues = mds.results.StatisticsSolution[-1].SealevelSamples  # all values at locations
+
+dvalues = np.zeros((md.qmu.method.params.samples, len(locations)))
+for i in range(md.qmu.method.params.samples):
+    dvalues[i, :] = md.results.dakota.modelresults[i].TransientSolution[-1].Sealevel[locations - 1].flatten()
+
+samplesnorm = np.linalg.norm(dvalues - svalues, 'fro')
+
+# Fields and tolerances to track changes
+field_names = ['Samples Norm']
+field_tolerances = [1e-13]
+field_values = [samplesnorm]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2007.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2007.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2007.m	(revision 27955)
@@ -0,0 +1,74 @@
+%Test Name: External_OfflineSolidearthSolution
+
+%mesh earth:
+md=model;
+load ../Data/SlcTestMesh.mat;
+md.mesh=SlcMesh; %700 km resolution mesh
+
+%Geometry for the bed, arbitrary
+md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.bed;
+md.geometry.thickness=zeros(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+
+%parameterize solidearth solution:
+late=md.mesh.lat;
+longe=md.mesh.long;
+time=0:0.5:5;
+%The offline solution pattern is a degree (2,1) spherical harmonic
+md.solidearth.external=offlinesolidearthsolution;
+md.solidearth.external.displacementup=.5*sind(late).*cosd(late).*cosd(longe) .*time;
+md.solidearth.external.displacementup(end+1,:)=time;
+md.solidearth.external.geoid=-.1*sind(late).*cosd(late).*sind(longe) .*time;
+md.solidearth.external.geoid(end+1,:)=time;
+md.solidearth.external.displacementeast=late .*time;
+md.solidearth.external.displacementeast(end+1,:)=time;
+md.solidearth.external.displacementnorth=longe .*time;
+md.solidearth.external.displacementnorth(end+1,:)=time;
+md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+
+
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);
+md.mask.ocean_levelset=ones(md.mesh.numberofvertices,1);
+% }}}
+
+%time stepping: 
+md.timestepping.start_time=time(1);
+md.timestepping.time_step=time(2)-time(1);
+md.timestepping.final_time=time(end);
+
+%Materials: 
+md.materials=materials('hydro');
+
+%Miscellaneous
+md.miscellaneous.name='test2007';
+
+%Solution parameters
+md.cluster.np=3;
+md.solidearth.settings.isgrd=0;
+md.solidearth.settings.horiz=1;
+
+%Physics: bary
+md.transient.issmb=0; 
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.ismasstransport=0;
+md.transient.isslc=1;
+md.solidearth.requested_outputs={'Sealevel', 'Bed', 'BedEast', 'BedNorth'};
+
+%eustatic run:
+md=solve(md,'Transient');
+
+for i=length(time)-1;
+Geoid=md.results.TransientSolution(i).Sealevel;
+BedUp=md.results.TransientSolution(i).Bed;
+BedEast=md.results.TransientSolution(i).BedEast;
+BedNorth=md.results.TransientSolution(i).BedNorth;
+end
+
+%Fields and tolerances to track changes
+field_names={'Geoid','BedUp','BedEast','BedNorth'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={Geoid,BedUp,BedEast,BedNorth};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2008.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2008.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2008.m	(revision 27955)
@@ -0,0 +1,122 @@
+%Test Name: External_AdditionalSolidearthSolution
+
+%mesh earth:
+md=model;
+load ../Data/SlcTestMesh.mat;
+md.mesh=SlcMesh; %700 km resolution mesh
+
+%Geometry for the bed, arbitrary thickness of 100: 
+md.geometry.bed=zeros(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.bed;
+md.geometry.thickness=100*ones(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+
+%solidearth loading:  {{{
+md.masstransport.spcthickness=[md.geometry.thickness;0];
+md.smb.mass_balance=zeros(md.mesh.numberofvertices,1);
+%antarctica
+xe=md.mesh.x(md.mesh.elements)*[1;1;1]/3;
+ye=md.mesh.y(md.mesh.elements)*[1;1;1]/3;
+ze=md.mesh.z(md.mesh.elements)*[1;1;1]/3;
+re=sqrt(xe.^2+ye.^2+ze.^2);
+
+late=asind(ze./re);
+longe=atan2d(ye,xe);
+pos=find(late < -80);
+md.masstransport.spcthickness(md.mesh.elements(pos,:))= md.masstransport.spcthickness(md.mesh.elements(pos,:))-100;
+posant=pos;
+%greenland
+pos=find(late>60 & late<90 & longe>-75 & longe<-15);
+md.masstransport.spcthickness(md.mesh.elements(pos,:))= md.masstransport.spcthickness(md.mesh.elements(pos,:))-100;
+posgre=pos;
+
+%elastic loading from love numbers:
+md.solidearth.lovenumbers=lovenumbers('maxdeg',1000);
+
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+oceanmask=-ones(md.mesh.numberofvertices,1);
+pos=find(mask==0); oceanmask(pos)=1;
+
+icemask=ones(md.mesh.numberofvertices,1);
+icemask(md.mesh.elements(posant))=-1;
+icemask(md.mesh.elements(posgre))=-1;
+
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=oceanmask;
+% }}}
+
+%time stepping: 
+md.timestepping.start_time=0;
+md.timestepping.time_step=1;
+md.timestepping.final_time=1;
+
+%masstransport:
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+md.initialization.str=0;
+
+%Materials: 
+md.materials=materials('hydro');
+
+%Miscellaneous
+md.miscellaneous.name='test2008';
+
+%Solution parameters
+md.cluster.np=3;
+md.solidearth.settings.reltol=NaN;
+md.solidearth.settings.abstol=1e-3;
+md.solidearth.settings.sealevelloading=1;
+md.solidearth.settings.isgrd=1;
+md.solidearth.settings.ocean_area_scaling=0;
+md.solidearth.settings.grdmodel=1;
+
+%Physics: 
+md.transient.issmb=0; 
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.ismasstransport=1;
+md.transient.isslc=1;
+md.solidearth.requested_outputs={'Sealevel','Bed'};
+
+% max number of iteration reverted back to 10 (i.e., the original default value)
+md.solidearth.settings.maxiter=10;
+
+%eustatic + selfattraction + elastic:
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=1;
+md.solidearth.settings.rotation=0;
+md.solidearth.settings.viscous=0;
+md=solve(md,'tr');
+Sgrd=md.results.TransientSolution.Sealevel;
+Bgrd=md.results.TransientSolution.Bed;
+
+%parameterize additional solidearth solution:
+late=md.mesh.lat;
+longe=md.mesh.long;
+time=0:1;
+Y22=1.5*(1.+cosd(2.*late)).*cosd(2.*longe);%The additional solidearth signal is a degree (2,2) spherical harmonic
+md.solidearth.external=additionalsolidearthsolution;
+md.solidearth.external.displacementup=0.5*Y22 .*time;
+md.solidearth.external.displacementup(end+1,:)=time;
+md.solidearth.external.geoid=0.2*Y22 .*time;
+md.solidearth.external.geoid(end+1,:)=time;
+md.solidearth.external.displacementeast=late .*time;
+md.solidearth.external.displacementeast(end+1,:)=time;
+md.solidearth.external.displacementnorth=longe .*time;
+md.solidearth.external.displacementnorth(end+1,:)=time;
+md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+
+md=solve(md,'tr');
+Sadd=md.results.TransientSolution.Sealevel;
+Badd=md.results.TransientSolution.Bed;
+
+
+%Fields and tolerances to track changes
+field_names={'SealevelGrd','BedrockGrd', 'SealevelAdditional','BedrockAdditional'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={Sgrd, Bgrd,Sadd,Badd};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test201.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test201.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test201.js	(revision 27955)
@@ -0,0 +1,18 @@
+//Test Name: SquareShelfStressSSA2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vel','Pressure'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test201.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test201.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test201.m	(revision 27955)
@@ -0,0 +1,17 @@
+%Test Name: SquareShelfStressSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test201.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test201.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test201.py	(revision 27955)
@@ -0,0 +1,25 @@
+#Test Name: SquareShelfStressSSA2d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+from ContourToMesh import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2010.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2010.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2010.m	(revision 27955)
@@ -0,0 +1,122 @@
+%Test Name: MomentOfIntertia
+
+%mesh earth:
+md=model;
+load ../Data/SlcTestMesh.mat;
+md.mesh=SlcMesh; %700 km resolution mesh
+
+%Geometry for the bed, arbitrary thickness of 100:
+md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.bed;
+md.geometry.thickness=100*ones(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+
+%parameterize slc solution:
+%solidearth loading:  {{{
+md.masstransport.spcthickness=[md.geometry.thickness;0];
+md.smb.mass_balance=zeros(md.mesh.numberofvertices,1);
+
+xe=md.mesh.x(md.mesh.elements)*[1;1;1]/3;
+ye=md.mesh.y(md.mesh.elements)*[1;1;1]/3;
+ze=md.mesh.z(md.mesh.elements)*[1;1;1]/3;
+re=sqrt(xe.^2+ye.^2+ze.^2);
+
+late=asind(ze./re);
+longe=atan2d(ye,xe);
+%greenland
+pos=find(late>60 & late<90 & longe>-75 & longe<-15);
+md.masstransport.spcthickness(md.mesh.elements(pos,:))= md.masstransport.spcthickness(md.mesh.elements(pos,:))-100;
+posice=pos;
+
+%elastic loading from love numbers:
+md.solidearth.lovenumbers=lovenumbers('maxdeg',100);
+
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+icemask=ones(md.mesh.numberofvertices,1);
+icemask(md.mesh.elements(posice,:))=-0.5;
+
+oceanmask=-ones(md.mesh.numberofvertices,1);
+pos=find(mask==0); oceanmask(pos)=1; icemask(~pos)=1;
+
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=oceanmask;
+
+% use model representation of ocean area (not the true area)
+md.solidearth.settings.ocean_area_scaling = 0;
+
+%materials
+md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1);
+md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+md.initialization.str=0;
+
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+
+%Miscellaneous
+md.miscellaneous.name='test2010';
+
+%Solution parameters
+md.solidearth.settings.reltol=NaN;
+md.solidearth.settings.abstol=1e-3;
+md.solidearth.settings.sealevelloading=0;
+md.solidearth.settings.grdocean=1;
+md.solidearth.settings.isgrd=1;
+md.solidearth.settings.ocean_area_scaling=0;
+md.solidearth.settings.grdmodel=1;
+md.solidearth.settings.horiz=1;
+md.solidearth.requested_outputs={'Sealevel','SealevelBarystaticIceArea','SealevelBarystaticIceLoad','SealevelBarystaticIceMask','SealevelBarystaticIceLatbar','SealevelBarystaticIceLongbar'};
+
+%Physics: 
+md.transient.issmb=0; 
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.ismasstransport=1;
+md.transient.isslc=1;
+
+md.timestepping.start_time=0;
+md.timestepping.time_step=1;
+md.timestepping.final_time=1;
+
+%eustatic + selfattraction + elastic + rotation run:
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=1;
+md.solidearth.settings.rotation=1;
+md.solidearth.settings.viscous=0;
+md.cluster=generic('name',oshostname(),'np',3);
+%md.verbose=verbose('111111111');
+md=solve(md,'Transient');
+
+moi_p=md.solidearth.rotational.polarmoi;
+moi_e=md.solidearth.rotational.equatorialmoi;
+tide_love_k2=md.solidearth.lovenumbers.tk(3);
+load_love_k2=md.solidearth.lovenumbers.k(3);
+tide_love_k2secular=md.solidearth.lovenumbers.tk2secular;
+% uncomment following 2 lines for
+eus=md.results.TransientSolution.Bslc;
+slc=md.results.TransientSolution.Sealevel;
+moixz=md.results.TransientSolution.SealevelchangePolarMotionX / (1/(1-tide_love_k2/tide_love_k2secular) * (1+load_love_k2)/(moi_p-moi_e) );
+moiyz=md.results.TransientSolution.SealevelchangePolarMotionY / (1/(1-tide_love_k2/tide_love_k2secular) * (1+load_love_k2)/(moi_p-moi_e) );
+moizz=md.results.TransientSolution.SealevelchangePolarMotionZ / ( -(1+load_love_k2)/moi_p);
+
+areaice=md.results.TransientSolution.SealevelBarystaticIceArea;
+areaice(isnan(areaice))=0;
+loadice=md.results.TransientSolution.SealevelBarystaticIceLoad;
+rad_e = md.solidearth.planetradius;
+
+lat=md.results.TransientSolution.SealevelBarystaticIceLatbar*pi/180;
+lon=md.results.TransientSolution.SealevelBarystaticIceLongbar*pi/180;
+moi_xz = sum(-loadice.*rad_e^2.*sin(lat).*cos(lat).*cos(lon));
+moi_yz = sum(-loadice.*rad_e^2.*sin(lat).*cos(lat).*sin(lon));
+moi_zz = sum(-loadice.*rad_e^2.*(-1.0/3.0+sin(lat).^2));
+theoretical_value_check=[moixz/moi_xz moiyz/moi_yz moizz/moi_zz]; % should yield [1.0 1.0 1.0]
+% }}}
+
+%Fields and tolerances to track changes
+field_names     ={'eus','slc','moixz','moiyz','moizz'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={eus,slc,moixz,moiyz,moizz};
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2010.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2010.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2010.py	(revision 27955)
@@ -0,0 +1,140 @@
+#Test Name: MomentOfIntertia
+import numpy as np
+import pickle
+from socket import gethostname
+from gmtmask import *
+from lovenumbers import *
+from model import *
+from paterson import *
+from solve import *
+
+
+# Mesh earth
+md = model()
+
+# Load precomputed mesh
+with open('../Data/SlcTestMesh.pkl', 'rb') as slc_test_mesh_file:
+    md.mesh = pickle.load(slc_test_mesh_file, encoding='latin1')
+
+# Geometry for the bed, arbitrary thickness of 100
+md.geometry.bed = -1 * np.ones((md.mesh.numberofvertices, ))
+md.geometry.base = md.geometry.bed
+md.geometry.thickness = 100 * np.ones((md.mesh.numberofvertices, ))
+md.geometry.surface = md.geometry.bed + md.geometry.thickness
+
+# Parameterize SLC solution
+# Solidearth loading  {{{
+md.masstransport.spcthickness = np.append(md.geometry.thickness, 0)
+md.smb.mass_balance = np.zeros((md.mesh.numberofvertices, ))
+
+xe = md.mesh.x[md.mesh.elements - 1].sum(axis=1) / 3
+ye = md.mesh.y[md.mesh.elements - 1].sum(axis=1) / 3
+ze = md.mesh.z[md.mesh.elements - 1].sum(axis=1) / 3
+re = pow((pow(xe, 2) + pow(ye, 2) + pow(ze, 2)), 0.5)
+
+late = asind(ze / re)
+longe = atan2d(ye, xe)
+# Greenland
+pos = np.where(np.logical_and.reduce((late > 60, late < 90, longe > -75, longe < -15)))[0]
+md.masstransport.spcthickness[md.mesh.elements[pos, :] - 1] = md.masstransport.spcthickness[md.mesh.elements[pos, :] - 1] - 100
+posice = pos
+
+# Elastic loading from love numbers
+md.solidearth.lovenumbers = lovenumbers('maxdeg', 100)
+
+#}}}
+#mask:  {{{
+mask = gmtmask(md.mesh.lat, md.mesh.long)
+icemask = np.ones((md.mesh.numberofvertices, 1))
+icemask[md.mesh.elements[posice, :] - 1] = -0.5
+
+oceanmask = -1 * np.ones((md.mesh.numberofvertices, 1))
+pos = np.where(mask == 0)[0]
+oceanmask[pos] = 1
+icemask[np.logical_not(pos).astype(int)] = 1
+
+md.mask.ice_levelset = icemask
+md.mask.ocean_levelset = oceanmask
+
+# Use model representation of ocean area (not the true area)
+md.solidearth.settings.ocean_area_scaling = 0
+
+# Materials
+md.initialization.temperature = 273.25 * np.ones((md.mesh.numberofvertices, 1))
+md.initialization.sealevel = np.zeros((md.mesh.numberofvertices, 1))
+md.initialization.str = 0
+
+md.basalforcings.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices, ))
+md.basalforcings.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.vx = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.vy = np.zeros((md.mesh.numberofvertices, ))
+
+# Miscellaneous
+md.miscellaneous.name = 'test2010'
+
+# Solution parameters
+md.solidearth.settings.reltol = np.nan
+md.solidearth.settings.abstol = 1e-3
+md.solidearth.settings.sealevelloading = 0
+md.solidearth.settings.grdocean = 1
+md.solidearth.settings.isgrd = 1
+md.solidearth.settings.ocean_area_scaling = 0
+md.solidearth.settings.grdmodel = 1
+md.solidearth.settings.horiz = 1
+md.solidearth.requested_outputs = [
+    'Sealevel',
+    'SealevelBarystaticIceArea',
+    'SealevelBarystaticIceLoad',
+    'SealevelBarystaticIceMask',
+    'SealevelBarystaticIceLatbar',
+    'SealevelBarystaticIceLongbar'
+]
+
+# Physics
+md.transient.issmb = 0
+md.transient.isstressbalance = 0
+md.transient.isthermal = 0
+md.transient.ismasstransport = 1
+md.transient.isslc = 1
+
+md.timestepping.start_time = 0
+md.timestepping.time_step = 1
+md.timestepping.final_time = 1
+
+# Eustatic + selfattraction + elastic + rotation run
+md.solidearth.settings.selfattraction = 1
+md.solidearth.settings.elastic = 1
+md.solidearth.settings.rotation = 1
+md.solidearth.settings.viscous = 0
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+moi_p = md.solidearth.rotational.polarmoi
+moi_e = md.solidearth.rotational.equatorialmoi
+tide_love_k2 = md.solidearth.lovenumbers.tk[2]
+load_love_k2 = md.solidearth.lovenumbers.k[2]
+tide_love_k2secular = md.solidearth.lovenumbers.tk2secular
+# uncomment following 2 lines for
+eus = md.results.TransientSolution.Bslc
+slc = md.results.TransientSolution.Sealevel
+moixz = md.results.TransientSolution.SealevelchangePolarMotionX / (1 / (1 - tide_love_k2 / tide_love_k2secular) * (1 + load_love_k2) / (moi_p - moi_e))
+moiyz = md.results.TransientSolution.SealevelchangePolarMotionY / (1 / (1 - tide_love_k2 / tide_love_k2secular) * (1 + load_love_k2) / (moi_p - moi_e))
+moizz = md.results.TransientSolution.SealevelchangePolarMotionZ / ( -(1 + load_love_k2) / moi_p)
+
+areaice = md.results.TransientSolution.SealevelBarystaticIceArea
+areaice[np.isnan(areaice)] = 0
+loadice = md.results.TransientSolution.SealevelBarystaticIceLoad
+rad_e = md.solidearth.planetradius
+
+lat = md.results.TransientSolution.SealevelBarystaticIceLatbar * np.pi / 180
+lon = md.results.TransientSolution.SealevelBarystaticIceLongbar * np.pi / 180
+moi_xz = sum(-loadice * areaice * pow(rad_e, 2) * np.sin(lat) * np.cos(lat) * np.cos(lon))
+moi_yz = sum(-loadice * areaice * pow(rad_e, 2) * np.sin(lat) * np.cos(lat) * np.sin(lon))
+moi_zz = sum(-loadice * areaice * pow(rad_e, 2) * (-1.0 / 3.0 + np.sin(lat) ** 2))
+theoretical_value_check = [moixz / moi_xz, moiyz / moi_yz, moizz / moi_zz] # Should yield [1.0, 1.0, 1.0]
+# }}}
+
+#Fields and tolerances to track changes
+field_names = ['eus', 'slc', 'moixz', 'moiyz', 'moizz']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [eus, slc, moixz, moiyz, moizz]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2011.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2011.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2011.m	(revision 27955)
@@ -0,0 +1,121 @@
+%Test Name: SlcBarystatic
+
+%mesh earth:
+md=model;
+load ../Data/SlcTestMesh.mat;
+md.mesh=SlcMesh; %700 km resolution mesh
+
+%Geometry for the bed, arbitrary thickness of 1000: 
+md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.bed;
+md.geometry.thickness=1000*ones(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+
+
+%parameterize solidearth solution:
+%solidearth loading:  {{{
+md.masstransport.spcthickness=[md.geometry.thickness;0];
+md.dsl.global_average_thermosteric_sea_level=[0;0];
+md.dsl.sea_surface_height_above_geoid=zeros(md.mesh.numberofvertices+1,1);
+md.dsl.sea_water_pressure_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
+md.smb.mass_balance=zeros(md.mesh.numberofvertices,1);
+%antarctica
+xe=md.mesh.x(md.mesh.elements)*[1;1;1]/3;
+ye=md.mesh.y(md.mesh.elements)*[1;1;1]/3;
+ze=md.mesh.z(md.mesh.elements)*[1;1;1]/3;
+re=sqrt(xe.^2+ye.^2+ze.^2);
+
+late=asind(ze./re);
+longe=atan2d(ye,xe);
+pos=find(late < -80);
+md.masstransport.spcthickness(md.mesh.elements(pos,:))= md.masstransport.spcthickness(md.mesh.elements(pos,:))-100;
+posant=pos;
+%greenland
+pos=find(late>60 & late<90 & longe>-75 & longe<-15);
+md.masstransport.spcthickness(md.mesh.elements(pos,:))= md.masstransport.spcthickness(md.mesh.elements(pos,:))-100;
+posgre=pos;
+
+%elastic loading from love numbers:
+md.solidearth.lovenumbers=lovenumbers('maxdeg',100);
+
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+oceanmask=-ones(md.mesh.numberofvertices,1);
+pos=find(mask==0); oceanmask(pos)=1;
+
+icemask=ones(md.mesh.numberofvertices,1);
+icemask(md.mesh.elements(posant))=-1;
+icemask(md.mesh.elements(posgre))=-1;
+
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=oceanmask;
+% }}}
+
+%time stepping: 
+md.timestepping.start_time=0;
+md.timestepping.time_step=1;
+md.timestepping.final_time=1;
+
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+md.initialization.bottompressure=zeros(md.mesh.numberofvertices,1);
+md.initialization.dsl=zeros(md.mesh.numberofvertices,1);
+md.initialization.str=0;
+
+%Materials: 
+md.materials=materials('hydro');
+
+%Miscellaneous
+md.miscellaneous.name='test2011';
+
+%Solution parameters
+md.cluster.np=3;
+md.solidearth.settings.reltol=NaN;
+md.solidearth.settings.abstol=1e-3;
+md.solidearth.settings.sealevelloading=1;
+md.solidearth.settings.isgrd=1;
+md.solidearth.settings.ocean_area_scaling=0;
+md.solidearth.settings.grdmodel=1;
+
+%Physics: 
+md.transient.issmb=0; 
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.ismasstransport=1;
+md.transient.isslc=1;
+md.solidearth.requested_outputs={'Sealevel','DeltaIceThickness','SealevelBarystaticIceMask','SealevelBarystaticHydroMask','SealevelBarystaticBpMask','Bed','SealevelBarystaticIceWeights','SealevelBarystaticOceanWeights','SealevelBarystaticIceArea','SealevelBarystaticOceanArea','SealevelBarystaticOceanMask','SealevelGRD','SealevelBarystaticOceanLongbar'};
+md.settings.results_on_nodes={'SealevelBarystaticIceWeights','SealevelBarystaticOceanWeights'};
+
+% max number of iteration reverted back to 10 (i.e., the original default value)
+md.solidearth.settings.maxiter=10;
+
+%eustatic + rigid + elastic + rotation run:
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=1;
+md.solidearth.settings.rotation=0;
+md.solidearth.settings.viscous=0;
+md=solve(md,'tr');
+
+%recover barystatic: 
+bslc=md.results.TransientSolution(1).BslcIce; 
+
+%alternative way of computing barystatic: 
+area=md.results.TransientSolution(1).SealevelBarystaticIceArea;
+weights=md.results.TransientSolution(1).SealevelBarystaticIceWeights; 
+dH=md.results.TransientSolution(1).DeltaIceThickness(md.mesh.elements); 
+dHavg=sum(dH.*weights,2);
+oceanarea=sum(md.results.TransientSolution(1).SealevelBarystaticOceanArea);
+bslc2=-sum(dHavg.*area)*md.materials.rho_ice/md.materials.rho_water/oceanarea;
+
+%need to change precision before subtraction because of differences in results 
+%at high precision under macOS versus Linux (print values of bslc and bslc2 to %verify that the difference is negligible)
+bslc_diff=single(bslc2)-single(bslc);
+
+%Fields and tolerances to track changes
+field_names={'BarystaticIce','BarystaticIce2','BarystaticIceDiff'};
+field_tolerances={1e-13,1e-13,1e-13};
+field_values={bslc,bslc2,bslc_diff};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2012.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2012.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2012.m	(revision 27955)
@@ -0,0 +1,134 @@
+%Test Name: EarthSlc Hydrology loading
+
+%mesh earth:
+md=model;
+load ../Data/SlcTestMesh.mat;
+md.mesh=SlcMesh; %700 km resolution mesh
+
+%Geometry for the bed, arbitrary thickness of 100: 
+md.geometry.bed=zeros(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.bed;
+md.geometry.thickness=100*ones(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+
+%solidearth loading:  {{{
+md.hydrology=hydrologytws();
+md.hydrology.spcwatercolumn=[md.geometry.thickness;0];
+md.smb.mass_balance=zeros(md.mesh.numberofvertices,1);
+
+%antarctica
+xe=md.mesh.x(md.mesh.elements)*[1;1;1]/3;
+ye=md.mesh.y(md.mesh.elements)*[1;1;1]/3;
+ze=md.mesh.z(md.mesh.elements)*[1;1;1]/3;
+re=sqrt(xe.^2+ye.^2+ze.^2);
+
+late=asind(ze./re);
+longe=atan2d(ye,xe);
+pos=find(late < -80);
+md.hydrology.spcwatercolumn(md.mesh.elements(pos,:))=md.hydrology.spcwatercolumn(md.mesh.elements(pos,:))-100;
+posant=pos;
+
+%greenland
+pos=find(late>60 & late<90 & longe>-75 & longe<-15);
+md.hydrology.spcwatercolumn(md.mesh.elements(pos,:))=md.hydrology.spcwatercolumn(md.mesh.elements(pos,:))-100;
+posgre=pos;
+
+%elastic loading from love numbers:
+md.solidearth.lovenumbers=lovenumbers('maxdeg',1000);
+
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+oceanmask=-ones(md.mesh.numberofvertices,1);
+pos=find(mask==0); oceanmask(pos)=1;
+
+icemask=ones(md.mesh.numberofvertices,1);
+icemask(md.mesh.elements(posant))=-1;
+icemask(md.mesh.elements(posgre))=-1;
+
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=oceanmask;
+% }}}
+
+%time stepping: 
+md.timestepping.start_time=0;
+md.timestepping.time_step=1;
+md.timestepping.final_time=1;
+
+%masstransport:
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+md.initialization.str=0;
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+
+%Materials: 
+md.materials=materials('hydro');
+
+%Miscellaneous
+md.miscellaneous.name='test2012';
+
+%Solution parameters
+md.cluster.np=3;
+md.solidearth.settings.reltol=NaN;
+md.solidearth.settings.abstol=1e-3;
+md.solidearth.settings.sealevelloading=1;
+md.solidearth.settings.isgrd=1;
+md.solidearth.settings.ocean_area_scaling=0;
+md.solidearth.settings.grdmodel=1;
+
+%Physics: 
+md.transient.issmb=0; 
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.ismasstransport=0;
+md.transient.ishydrology=1;
+md.transient.isslc=1;
+md.solidearth.requested_outputs={'Sealevel','Bed'};
+
+% max number of iteration reverted back to 10 (i.e., the original default value)
+md.solidearth.settings.maxiter=10;
+
+%eustatic run:
+md.solidearth.settings.selfattraction=0;
+md.solidearth.settings.elastic=0;
+md.solidearth.settings.rotation=0;
+md.solidearth.settings.viscous=0;
+
+md=solve(md,'Transient');
+Seustatic=md.results.TransientSolution.Sealevel;
+Beustatic=md.results.TransientSolution.Bed;
+
+%eustatic + selfattraction run:
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=0;
+md.solidearth.settings.rotation=0;
+md.solidearth.settings.viscous=0;
+md=solve(md,'tr');
+Sselfattraction=md.results.TransientSolution.Sealevel;
+Bselfattraction=md.results.TransientSolution.Bed;
+
+%eustatic + selfattraction + elastic run:
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=1;
+md.solidearth.settings.rotation=0;
+md.solidearth.settings.viscous=0;
+md=solve(md,'tr');
+Selastic=md.results.TransientSolution.Sealevel;
+Belastic=md.results.TransientSolution.Bed;
+
+%eustatic + selfattraction + elastic + rotation run:
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=1;
+md.solidearth.settings.rotation=1;
+md.solidearth.settings.viscous=0;
+md=solve(md,'tr');
+Srotation=md.results.TransientSolution.Sealevel;
+Brotation=md.results.TransientSolution.Bed;
+
+%Fields and tolerances to track changes
+field_names={'Seustatic','Sselfattraction','Selastic','Srotation','Beustatic','Bselfattraction','Belastic','Brotation'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={Seustatic,Sselfattraction,Selastic,Srotation,Beustatic,Bselfattraction,Belastic,Brotation};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2013.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2013.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2013.m	(revision 27955)
@@ -0,0 +1,160 @@
+%Test Name: EarthSlc_Geometry
+
+step=[1];
+if any(step==1)
+%mesh earth:
+md=model;
+load ../Data/SlcTestMesh.mat;
+md.mesh=SlcMesh; %700 km resolution mesh
+
+%Geometry for the bed, arbitrary thickness of 1000: 
+md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.bed;
+md.geometry.thickness=1000*ones(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+
+%parameterize slc solution:
+%solidearth loading:  {{{
+md.masstransport.spcthickness=[md.geometry.thickness;0];
+md.smb.mass_balance=zeros(md.mesh.numberofvertices,1);
+
+xe=md.mesh.x(md.mesh.elements)*[1;1;1]/3;
+ye=md.mesh.y(md.mesh.elements)*[1;1;1]/3;
+ze=md.mesh.z(md.mesh.elements)*[1;1;1]/3;
+re=sqrt(xe.^2+ye.^2+ze.^2);
+
+late=asind(ze./re);
+longe=atan2d(ye,xe);
+
+%greenland
+pos=find(late>60 & late<90 & longe>-75 & longe<-15);
+md.masstransport.spcthickness(md.mesh.elements(:,:))= md.masstransport.spcthickness(md.mesh.elements(:,:))-1000;
+posice=pos;
+
+%elastic loading from love numbers:
+md.solidearth.lovenumbers=lovenumbers('maxdeg',100);
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+icemask=ones(md.mesh.numberofvertices,1);
+icemask(md.mesh.elements(posice,:))=-1;
+md.mask.ice_levelset=icemask;
+oceanmask=-ones(md.mesh.numberofvertices,1);
+pos=find(mask==0); oceanmask(pos)=3;
+md.mask.ocean_levelset=oceanmask;
+
+% use model representation of ocean area (not the true area)
+md.solidearth.settings.ocean_area_scaling = 0;
+
+%materials
+md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1);
+md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+md.initialization.str=0;
+
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+
+%Miscellaneous
+md.miscellaneous.name='test2013';
+
+%Solution parameters
+md.solidearth.settings.reltol=NaN;
+md.solidearth.settings.abstol=1e-3;
+md.solidearth.settings.sealevelloading=0;
+md.solidearth.settings.grdocean=0;
+md.solidearth.settings.isgrd=1;
+md.solidearth.settings.ocean_area_scaling=0;
+md.solidearth.settings.grdmodel=1;
+md.solidearth.settings.horiz=1;
+md.settings.results_on_nodes = {'SealevelBarystaticIceWeights'};
+md.solidearth.requested_outputs={'SealevelBarystaticIceLoad', 'SealevelBarystaticIceWeights', 'SealevelBarystaticIceArea', 'SealevelBarystaticIceMask', 'SealevelBarystaticIceLatbar', 'SealevelBarystaticIceLongbar'};
+
+%Physics: 
+md.transient.issmb=0;
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.ismasstransport=1;
+md.transient.isslc=1;
+
+md.timestepping.start_time=0;
+md.timestepping.time_step=1;
+md.timestepping.final_time=1;
+
+%slc:
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=0;
+md.solidearth.settings.rotation=0;
+md.solidearth.settings.viscous=0;
+md.cluster=generic('name',oshostname(),'np',3);
+%md.verbose=verbose('111111111');
+md=solve(md,'Transient');
+
+weights=md.results.TransientSolution.SealevelBarystaticIceWeights;
+mask=md.results.TransientSolution.SealevelBarystaticIceMask;
+loads=md.results.TransientSolution.SealevelBarystaticIceLoad;
+areas=md.results.TransientSolution.SealevelBarystaticIceArea;
+longbar=md.results.TransientSolution.SealevelBarystaticIceLongbar;
+latbar=md.results.TransientSolution.SealevelBarystaticIceLatbar;
+
+loads=loads./areas;
+
+%Fields and tolerances to track changes
+field_names     ={'Mask', 'LoadAreas', 'SurfaceLoad', 'LoadWeights','LatitudeLoadBarycenter', 'LongitudeLoadBarycenter'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={mask,areas,loads,weights,latbar, longbar};
+
+
+end
+if any(step==2)
+%use this to check visually the load-related inputs
+
+	 plotmodel(md,'data',md.mask.ocean_levelset,'contourlevels', {0},'contouronly',1, 'contourcolor', 'b')  
+	 co=get(gca,'children');
+	 coo=struct;
+	for i=1:length(co)
+		coo(i).XData=co(i).XData;
+		coo(i).YData=co(i).YData;
+		coo(i).ZData=co(i).ZData;
+	end	
+
+	 plotmodel(md,'data',md.mask.ice_levelset,'contourlevels', {0},'contouronly',1, 'contourcolor', 'r')  
+	 ci=get(gca,'children');
+	cii=struct;
+	for i=1:length(ci)
+		cii(i).XData=ci(i).XData;
+		cii(i).YData=ci(i).YData;
+		cii(i).ZData=ci(i).ZData;
+	end	
+
+	close all
+
+	subplot(2,2,1)
+	 for i=1:md.mesh.numberofelements
+		patch('XData',md.mesh.x(md.mesh.elements(i,:)), 'YData',md.mesh.y(md.mesh.elements(i,:)), 'ZData',md.mesh.z(md.mesh.elements(i,:)),'facecolor', 'interp', 'facevertexcdata',weights(i,:)')
+		hold on
+	end
+
+	for i=1:length(coo)
+		plot3(coo(i).XData,coo(i).YData,coo(i).ZData, 'color', [0 0 .8],'linewidth',1.5)
+	end
+
+	for i=1:length(cii)
+		plot3(cii(i).XData,cii(i).YData,cii(i).ZData, 'color', [.7 0 .7],'linewidth',1.5)
+	end
+
+	x=md.solidearth.planetradius* (cosd(latbar).*cosd(longbar));
+	y=md.solidearth.planetradius* (cosd(latbar).*sind(longbar));
+	z=md.solidearth.planetradius* (sind(latbar));
+	ind=find(mask>0);
+	plot3(x(ind),y(ind),z(ind), 'kx')
+	axis tight; title('Load weights & barycenters');set(gca,'Fontsize', 14);
+
+	 plotmodel(md,'data', loads,'subplot',[2 2 2]);title('Average load [kg.m^-2]')
+	 plotmodel(md,'data', mask,'subplot',[2 2 3]); title('Phi')
+	 plotmodel(md,'data', areas,'subplot',[2 2 4]); title('Load areas [m^2]') 
+
+
+end
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test202.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test202.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test202.js	(revision 27955)
@@ -0,0 +1,20 @@
+//Test Name: SquareShelfStressSSA3d
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,2.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test202.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test202.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test202.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: SquareShelfStressSSA3d
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test202.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test202.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test202.py	(revision 27955)
@@ -0,0 +1,29 @@
+#Test Name: SquareShelfStressSSA3d
+
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 180000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+
+# Fields and tolerances to track changes
+
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2020.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2020.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2020.m	(revision 27955)
@@ -0,0 +1,125 @@
+%Test Name: SHslc 
+% spherical-harmonic (SH) approach for solving the sea-level equation. 
+% reference: Adhikari et al., 2019, ESSD, https://doi.org/10.5194/essd-11-629-2019 
+
+% parameters {{{ 
+	% MEALpix parameters 
+	num  = 5;   % choose one of [4-7] :: WARNING :: num=7 takes a while to solve!
+	lMax = 60;  % SH of maximum degree
+	nSide = 2^num;
+	nPix  = 12*nSide^2; % number of pixels 
+	num_lm = (1+lMax)^2; % number of SH coefficients 
+
+	% relative tolerance 
+	para.rel_tol = 1.0e-5; 
+
+	% love numbers 
+	love=lovenumbers('maxdeg',10000,'referenceframe','CM');
+	para.loveK = love.k; 
+	para.loveH = love.h; 
+	para.k2 = love.tk(3);		% tidal Love number 
+	para.h2 = love.th(3);		% tidal Love number 
+	para.ks = love.tk2secular; 
+
+	md=model();
+	para.A = md.solidearth.rotational.equatorialmoi;	% mean equatorial moment of inertia, kg m^2 
+	para.C = md.solidearth.rotational.polarmoi;			% polar moment of inertia, kg m^2 
+	para.Omega =  md.solidearth.rotational.angularvelocity; % mean rotational velocity of Earth, 1/s 
+	para.earth_radius = md.solidearth.planetradius;	% mean radius of the Earth, m 
+	para.rho_ocean = md.materials.rho_water;  % ocean water density, kg/m^3
+	para.rho_earth = md.materials.earth_density;  % average density of the Earth, kg/m^3
+	para.g = md.love.g0; % mean surface gravitational acceleration, m/s^2 
+	clearvars md; 
+
+% }}} 
+
+% Compute real spherical harmonics for chosen mealpix resolution {{{
+   disp([' === Computing "real" spherical harmonics for chosen resolution ==== ']); 
+   clearvars sh  % if there is any! 
+   q = 0; 
+	pix_center_gmtdir=pix2ang(nSide);
+	pix_center=cell2mat(pix_center_gmtdir);
+	lat_p=pix_center(1,:)';
+	lon_p=pix_center(2,:)';
+	for l=0:lMax
+		plm = legendre(l,cos(lat_p),'norm'); %nromalized Plm (see Matlab documents) 
+		for m=-l:l 
+			sh(:,1+q)=plm(abs(m)+1,:)'.*(cos(abs(m).*lon_p)*(m>=0)+sin(abs(m).*lon_p)*(m<0)).*sqrt((2-(m==0))*2); %4-pi
+			q=q+1; 
+		end 
+      disp(['     SH computations : degree ', num2str(l), ' (of ', num2str(lMax), ') completed.' ]);  
+	end 
+   disp(['     completed! ']); 
+	
+	% lat,lon for plotting 
+	lat_deg=lat_p'*180/pi; 
+	lon_deg=lon_p'*180/pi; 
+	lat_deg = 90-lat_deg;
+	lon_deg(lon_deg>180) = lon_deg(lon_deg>180)-360; 
+%}}}
+
+% Compute SH coefficients for ocean function {{{ 
+	disp([' === Computing SH coefficients for ocean function ================== ']); 
+	ocean = gmtmask(lat_deg',lon_deg')'; 
+	land = 1-ocean;	% continental function 
+%	oce_lm = funlm(lMax,nPix,ocean,sh);  % compute SH coefficients for ocean function  
+	disp(['     completed! ']); 
+%}}}
+
+% forcing (weh) field {{{ 
+	load('../Data/GRACE_JPL_April2002_WEH.mat');
+	lat = repmat(lat',720,1); 
+	lon = repmat(lon,1,360); 
+
+	F = scatteredInterpolant(lat(:),lon(:),weh(:)); 
+	force = F(lat_deg,lon_deg);
+	force(isnan(force))=0; 
+
+	force = force.*land; % only keep loads on land.  
+
+% }}} 
+
+% solve. 
+disp([' === Solving WOUT rotational feedbacks =========']); 
+rotational_feedback=0; % without rotational feedbacks. 
+[bary_0,rsl_0,geoid_0,bed_0] = SHslr(sh,para,force,ocean,rotational_feedback); 
+
+disp([' === Solving WITH rotational feedbacks =========']); 
+rotational_feedback=1; % with rotational feedbacks. 
+[bary_1,rsl_1,geoid_1,bed_1] = SHslr(sh,para,force,ocean,rotational_feedback); 
+
+%Fields and tolerances to track changes
+field_names={'Barystatic_no_rotation','rsl_no_rotation','geoid_no_rotation','bed_no_rotation'...
+	'Barystatic_with_rotation','rsl_with_rotation','geoid_with_rotation','bed_with_rotation'};
+field_tolerances={3e-7,1e-13,1e-13,1e-13,...
+	2e-7,1e-13,1e-13,1e-13};
+field_values={bary_0,rsl_0,geoid_0,bed_0,...
+	bary_1,rsl_1,geoid_1,bed_1}; 
+
+return; 
+
+% plot. 
+% plot {{{ 
+	field = (rsl_1-rsl_0)'; 
+
+	res = 1.0; 
+	[lat_grid, lon_grid] = meshgrid(linspace(-90,90,180/res), linspace(-180,180,360/res));
+	sol_grid = zeros(size(lat_grid)); 
+
+	F = scatteredInterpolant(lat_deg',lon_deg',field); 
+	F.Method = 'linear';
+	F.ExtrapolationMethod = 'linear'; 
+
+	sol_grid = F(lat_grid, lon_grid);
+	sol_grid(isnan(sol_grid))=0; 
+
+	set(0,'DefaultAxesFontSize',18,'DefaultAxesLineWidth',1,'DefaultTextFontSize',18,'DefaultLineMarkerSize',8)
+	figure1=figure('Position', [100, 100, 1000, 500]); 
+	gcf; load coast; cla; 
+	pcolor(lon_grid,lat_grid,sol_grid); shading flat; hold on;
+	plot(long,lat,'k'); hold off; 
+	c1=colorbar;
+	colormap('haxby');
+% }}} 
+
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2021.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2021.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2021.m	(revision 27955)
@@ -0,0 +1,88 @@
+%Test Name: SESAWslc
+% SESAW method of solving GRD slc
+% reference: Adhikari et al., 2016, GMD, https://doi.org/10.5194/gmd-9-1087-2016
+
+md=model;
+load ../Data/SlcTestMesh.mat;
+md.mesh=SlcMesh; %700 km resolution mesh
+
+% read in love numbers.
+love_numbers = lovenumbers('maxdeg',10000);
+
+% compute Green's functions
+disp(['Computing Greens functions...']);
+[Grigid,Gelastic,Uelastic]=greensfunctions(md.mesh.elements,md.mesh.lat,md.mesh.long,love_numbers);
+greens.Grigid = Grigid;
+greens.Gelast = Gelastic;
+greens.Uelast = Uelastic;
+clearvars Grigid Gelastic Uelastic
+
+% compute lat,long at elemental centroids.
+[late,longe] = latelonge(md.mesh.elements,md.mesh.lat,md.mesh.long);
+
+% load GRACE data. Same as used in test2020.
+load('../Data/GRACE_JPL_April2002_WEH.mat');
+lat = repmat(lat',720,1);
+lon = repmat(lon,1,360);
+F = scatteredInterpolant(lat(:),lon(:),weh(:));
+
+% map GRACE data onto elemental centorids.
+loads_element = F(late,longe);
+loads_element(isnan(loads_element))=0;
+
+% ocean mask mapped onto the elemental centroids.
+ocean_element = gmtmask(late,longe);
+
+% Area of individual elements
+area_element=GetAreasSphericalTria(md.mesh.elements,md.mesh.lat,md.mesh.long,md.solidearth.planetradius);
+
+% Parameters input for SESAWslc solver.
+para.ocean_element = ocean_element;
+para.loads_element = loads_element;
+para.area_element = area_element;
+para.earth_density = md.materials.earth_density;
+para.ocean_density = md.materials.rho_water;
+para.loads_density = md.materials.rho_freshwater; % if land loads are ice, use ice density.
+
+para.rel_tol = 1e-5;
+
+% solid earth rheology.
+para.solidearth = 'rigid'; % 'rigid' or 'elastic';
+
+% rotational feedbacks.
+para.rotational.flag = 0; % Rotational flag on (1) or off (0)
+para.rotational.earth_radius = md.solidearth.planetradius;
+para.rotational.load_love_k2 = love_numbers.k(3);
+para.rotational.tide_love_k2 = love_numbers.tk(3);
+para.rotational.tide_love_h2 = love_numbers.th(3);
+para.rotational.tide_love_k2secular = love_numbers.tk2secular;
+para.rotational.moi_p = md.solidearth.rotational.polarmoi;
+para.rotational.moi_e = md.solidearth.rotational.equatorialmoi;
+para.rotational.omega = md.solidearth.rotational.angularvelocity;
+
+% solve: Rigid without rotational feedbacks.
+disp(['Solving sesaw-slc for Rigid Earth WITHOUT rotational feedback...']);
+[eus_rigid,rsl_rigid] = SESAWslr(md.mesh.elements,md.mesh.lat,md.mesh.long,greens,para);
+
+% solve: Rigid with rotational feedbacks.
+para.rotational.flag = 1;
+disp(['Solving sesaw-slc for Rigid Earth WITH rotational feedback...']);
+[eus_rigid_rot,rsl_rigid_rot] = SESAWslr(md.mesh.elements,md.mesh.lat,md.mesh.long,greens,para);
+
+% solve: Elastic with rotational feedbacks.
+para.solidearth = 'elastic';
+disp(['Solving sesaw-slc for Elastic Earth WITH rotational feedback...']);
+[eus_elast_rot,rsl_elast_rot] = SESAWslr(md.mesh.elements,md.mesh.lat,md.mesh.long,greens,para);
+
+% solve: Elastic with rotational feedbacks.
+para.rotational.flag = 0;
+disp(['Solving sesaw-slc for Elastic Earth WITHOUT rotational feedback...']);
+[eus_elast,rsl_elast] = SESAWslr(md.mesh.elements,md.mesh.lat,md.mesh.long,greens,para);
+
+%Fields and tolerances to track changes
+field_names={'eus_rigid','eus_rigid_rot','eus_elast','eus_elast_rot',...
+             'rsl_rigid','rsl_rigid_rot','rsl_elast','rsl_elast_rot'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={eus_rigid,eus_rigid_rot,eus_elast,eus_elast_rot,...
+             rsl_rigid,rsl_rigid_rot,rsl_elast,rsl_elast_rot};
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test203.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test203.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test203.js	(revision 27955)
@@ -0,0 +1,20 @@
+//Test Name: SquareShelfStressHO
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,2.);
+setflowequation(md,'HO','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure'];
+field_tolerances=[2e-09,2e-09,1e-09,2e-09,1e-09];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test203.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test203.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test203.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: SquareShelfStressHO
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={2e-09,2e-09,1e-09,2e-09,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test203.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test203.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test203.py	(revision 27955)
@@ -0,0 +1,29 @@
+#Test Name: SquareShelfStressHO
+
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 180000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+
+# Fields and tolerances to track changes
+
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [2e-09, 2e-09, 1e-09, 2e-09, 1e-09]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test204.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test204.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test204.js	(revision 27955)
@@ -0,0 +1,29 @@
+//Test Name: SquareShelfStressFS
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,2.);
+setflowequation(md,'FS','all');
+//md.cluster=generic('name',oshostname(),'np',1);
+md.stressbalance.shelf_dampening=1;
+md.timestepping.time_step=0;
+md1=solve(md,'Stressbalance');
+md.stressbalance.shelf_dampening=0;
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure','Vx_damp','Vy_damp','Vz_damp','Vel_damp','Pressure_damp'];
+field_tolerances=[1e-08,1e-08,2e-06,1e-08,1e-08,1e-08,1e-08,2e-07,1e-08,1e-08];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	(md1.results.StressbalanceSolution.Vx),
+	(md1.results.StressbalanceSolution.Vy),
+	(md1.results.StressbalanceSolution.Vz),
+	(md1.results.StressbalanceSolution.Vel),
+	(md1.results.StressbalanceSolution.Pressure),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test204.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test204.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test204.m	(revision 27955)
@@ -0,0 +1,28 @@
+%Test Name: SquareShelfStressFS
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'FS','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.stressbalance.shelf_dampening=1;
+md.timestepping.time_step=0;
+md1=solve(md,'Stressbalance');
+md.stressbalance.shelf_dampening=0;
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Vx_damp','Vy_damp','Vz_damp','Vel_damp','Pressure_damp'};
+field_tolerances={1e-08,1e-08,4e-06,1e-08,1e-08,1e-08,1e-08,2e-07,1e-08,1e-08};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md1.results.StressbalanceSolution.Vx),...
+	(md1.results.StressbalanceSolution.Vy),...
+	(md1.results.StressbalanceSolution.Vz),...
+	(md1.results.StressbalanceSolution.Vel),...
+	(md1.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test204.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test204.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test204.py	(revision 27955)
@@ -0,0 +1,33 @@
+#Test Name: SquareShelfStressFS
+
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 180000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'FS', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.stressbalance.shelf_dampening = 1
+md.timestepping.time_step = 0
+md1 = solve(md, 'Stressbalance')
+md.stressbalance.shelf_dampening = 0
+md = solve(md, 'Stressbalance')
+
+
+# Fields and tolerances to track changes
+
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [1e-08, 1e-08, 4e-06, 1e-08, 1e-08]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test205.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test205.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test205.js	(revision 27955)
@@ -0,0 +1,21 @@
+//Test Name: SquareShelfStressMHOPenalties
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,2.);
+setflowequation(md,'HO','../Exp/SquareHalfRight.exp','fill','SSA','coupling','penalties');
+md.settings.solver_residue_threshold = 1.e-4;
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure'];
+field_tolerances=[2e-05,2e-05,1e-05,1e-05,1e-05];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test205.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test205.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test205.m	(revision 27955)
@@ -0,0 +1,20 @@
+%Test Name: SquareShelfStressMHOPenalties
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','../Exp/SquareHalfRight.exp','fill','SSA','coupling','penalties');
+md.settings.solver_residue_threshold = 1.e-4;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={2e-05,2e-05,1e-05,1e-05,1e-05};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test205.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test205.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test205.py	(revision 27955)
@@ -0,0 +1,30 @@
+#Test Name: SquareShelfStressMHOPenalties
+
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'HO', '../Exp/SquareHalfRight.exp', 'fill', 'SSA', 'coupling', 'penalties')
+md.settings.solver_residue_threshold = 1.e-4
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+
+# Fields and tolerances to track changes
+
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [2e-05, 2e-05, 1e-05, 1e-05, 1e-05]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2051.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2051.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2051.m	(revision 27955)
@@ -0,0 +1,88 @@
+%Test Name: GiaIvinsBenchmarksAB2dA
+% Benchmark experiments (Figure A2a Ivins and James, 1999, Geophys. J. Int.) 
+md=triangle(model(),'../Exp/RoundFrontEISMINT.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/GiaIvinsBenchmarksAB.par');
+
+%GIA Ivins, 2 layer model.
+md.solidearth.settings.grdmodel=2;
+md.solidearth.settings.isgrd=1;
+md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+
+%% indicate what you want to compute 
+md.solidearth.settings.cross_section_shape=1;    % for square-edged x-section 
+md.solidearth.settings.grdocean=0;  %do not compute sea level, only deformation
+md.solidearth.settings.sealevelloading=0;  %do not compute sea level, only deformation
+
+% evaluation time (termed start_time) 
+
+md.timestepping.time_step=2002100; % after 2 kyr of deglaciation 
+md.timestepping.start_time=-md.timestepping.time_step; % need one time step before t=0 to generate a thickness change at t=0
+md.timestepping.final_time=2500000; % 2,500 kyr
+
+%% define loading history {{{ 
+md.masstransport.spcthickness=[...
+	[md.geometry.thickness*0.0; 0.0],...
+	[md.geometry.thickness; 1000],...
+	[md.geometry.thickness; 2000000],...
+	[md.geometry.thickness*0.0; 2000100],...
+	[md.geometry.thickness*0.0; md.timestepping.start_time+2*md.timestepping.time_step],...
+	];
+% }}} 
+
+md.geometry.bed=zeros(md.mesh.numberofvertices,1);
+
+% find out elements that have zero loads throughout the loading history.
+pos = find(sum(abs(md.geometry.thickness(1:end-1,:)),2)==0);
+md.mask.ice_levelset(pos)=1; % no ice
+
+%Physics: 
+md.transient.issmb=0; 
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.ismasstransport=1;
+md.transient.isslc=1;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('1111111');
+md.solidearth.requested_outputs={'Sealevel','BedGRD'};
+
+%% solve for GIA deflection 
+md=solve(md,'Transient');
+
+%Test Name: GiaIvinsBenchmarksAB2dA1
+U_AB2dA1 = md.results.TransientSolution.BedGRD; 
+%URate_AB2dA1 = md.results.TransientSolution.UGiaRate; 
+
+%Test Name: GiaIvinsBenchmarksAB2dA2
+%% different evaluation time. {{{ 
+md.timestepping.time_step=2005100;% after 5 kyr of deglaciation
+md.timestepping.start_time=-md.timestepping.time_step; % need one time step before t=0 to generate a thickness change at t=0
+md.masstransport.spcthickness(end,end) = md.timestepping.start_time+2*md.timestepping.time_step;
+
+md=solve(md,'Transient');
+
+U_AB2dA2 = md.results.TransientSolution.BedGRD; 
+%URate_AB2dA2 = md.results.TransientSolution.BedGRDRate; 
+% }}} 
+
+%Test Name: GiaIvinsBenchmarksAB2dA3
+%% different evaluation time. {{{ 
+md.timestepping.time_step=2010100;% after 10 kyr of deglaciation
+md.timestepping.start_time=-md.timestepping.time_step; % need one time step before t=0 to generate a thickness change at t=0
+md.masstransport.spcthickness(end,end) = md.timestepping.start_time+2*md.timestepping.time_step; 
+
+md=solve(md,'Transient');
+
+U_AB2dA3 = md.results.TransientSolution.BedGRD; 
+%URate_AB2dA3 = md.results.TransientSolution.UGiaRate; 
+% }}} 
+
+%Fields and tolerances to track changes
+field_names     ={'U_AB2dA1','U_AB2dA2','U_AB2dA3'};
+field_tolerances={1e-13,1e-13,1e-13};
+field_values={U_AB2dA1,U_AB2dA2,U_AB2dA3};
+% field_names     ={'U_AB2dA1','URate_AB2dA1','U_AB2dA2','URate_AB2dA2','U_AB2dA3','URate_AB2dA3'};
+% field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+% field_values={U_AB2dA1,URate_AB2dA1,U_AB2dA2,URate_AB2dA2,U_AB2dA3,URate_AB2dA3};
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2051.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2051.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2051.py	(revision 27955)
@@ -0,0 +1,96 @@
+#Test Name: GiaIvinsBenchmarksAB2dA
+from socket import gethostname
+
+import numpy as np
+
+from model import *
+from parameterize import *
+from setmask import *
+from solve import *
+from triangle import *
+
+
+# Benchmark experiments (Figure A2a Ivins and James, 1999, Geophys. J. Int.)
+md = triangle(model(), '../Exp/RoundFrontEISMINT.exp', 200000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/GiaIvinsBenchmarksAB.py')
+
+# GIA Ivins, 2 layer model
+md.solidearth.settings.grdmodel = 2
+md.solidearth.settings.isgrd = 1
+md.initialization.sealevel = np.zeros((md.mesh.numberofvertices,))
+
+# Indicate what you want to compute
+md.solidearth.settings.cross_section_shape = 1 # For square-edged x-section
+md.solidearth.settings.grdocean = 0 # Do not compute sea level, only deformation
+md.solidearth.settings.sealevelloading = 0 # Do not compute sea level, only deformation
+
+# Evaluation time (termed start_time)
+md.timestepping.time_step = 2002100 # after 2 kyr of deglaciation
+md.timestepping.start_time = -md.timestepping.time_step # Need one time step before t = 0 to generate a thickness change at t = 0
+md.timestepping.final_time = 2500000 # 2,500 kyr
+
+# Define loading history
+md.masstransport.spcthickness = np.array([
+    np.append(md.geometry.thickness * 0.0, 0.0),
+    np.append(md.geometry.thickness, 1000),
+    np.append(md.geometry.thickness, 2000000),
+    np.append(md.geometry.thickness * 0.0, 2000100),
+    np.append(md.geometry.thickness * 0.0, md.timestepping.start_time + 2 * md.timestepping.time_step)
+    ]).T
+
+md.geometry.bed = np.zeros((md.mesh.numberofvertices,))
+
+# Find out the elements that have zero loads throughout the loading history
+pos = np.where(np.abs(md.geometry.thickness[0:-2, :].sum(axis=1)) == 0)[0]
+md.mask.ice_levelset[pos] = 1 # No ice
+
+# Physics
+md.transient.issmb = 0
+md.transient.isstressbalance = 0
+md.transient.isthermal = 0
+md.transient.ismasstransport = 1
+md.transient.isslc = 1
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.verbose = verbose('1111111')
+md.solidearth.requested_outputs = ['Sealevel', 'BedGRD']
+
+# Solve for GIA deflection
+md = solve(md, 'Transient')
+
+# Test Name: GiaIvinsBenchmarksAB2dA1
+U_AB2dA1 = md.results.TransientSolution.BedGRD
+#URate_AB2dA1 = md.results.TransientSolution.UGiaRate
+
+# Test Name: GiaIvinsBenchmarksAB2dA2
+# different evaluation time # {{{
+md.timestepping.time_step = 2005100 # After 5 kyr of deglaciation
+md.timestepping.start_time = -md.timestepping.time_step # Need one time step before t = 0 to generate a thickness change at t = 0
+md.masstransport.spcthickness[-1, -1] = md.timestepping.start_time + 2 * md.timestepping.time_step
+
+md = solve(md, 'Transient')
+
+U_AB2dA2 = md.results.TransientSolution.BedGRD
+#URate_AB2dA2 = md.results.TransientSolution.BedGRDRate
+# }}}
+
+# Test Name: GiaIvinsBenchmarksAB2dA3
+# different evaluation time # {{{
+md.timestepping.time_step = 2010100 # After 10 kyr of deglaciation
+md.timestepping.start_time = -md.timestepping.time_step # Need one time step before t = 0 to generate a thickness change at t = 0
+md.masstransport.spcthickness[-1, -1] = md.timestepping.start_time + 2 * md.timestepping.time_step
+
+md = solve(md, 'Transient')
+
+U_AB2dA3 = md.results.TransientSolution.BedGRD
+#URate_AB2dA3 = md.results.TransientSolution.UGiaRate
+# }}}
+
+# Fields and tolerances to track changes
+field_names = ['U_AB2dA1','U_AB2dA2','U_AB2dA3']
+field_tolerances = [1e-13, 1e-13, 1e-13]
+field_values = [U_AB2dA1, U_AB2dA2, U_AB2dA3]
+# field_names = ['U_AB2dA1','URate_AB2dA1','U_AB2dA2','URate_AB2dA2','U_AB2dA3','URate_AB2dA3']
+# field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+# field_values = [U_AB2dA1, URate_AB2dA1, U_AB2dA2, URate_AB2dA2, U_AB2dA3, URate_AB2dA3]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2052.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2052.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2052.m	(revision 27955)
@@ -0,0 +1,63 @@
+%Test Name: GiaIvinsBenchmarksAB2dC
+% Benchmark experiments (Figure A2a Ivins and James, 1999, Geophys. J. Int.) 
+md=triangle(model(),'../Exp/RoundFrontEISMINT.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/GiaIvinsBenchmarksCD.par');
+
+%% indicate what you want to compute 
+md.gia.cross_section_shape=1;    % for square-edged x-section 
+
+% evaluation time (termed start_time) 
+md.timestepping.start_time=0.3;     % for t \approx 0 kyr: to get elastic response!
+md.timestepping.final_time=2500000; % 2,500 kyr
+
+%% define loading history {{{ 
+md.geometry.thickness=[...
+	[md.geometry.thickness*0.0; 0.0],...
+	[md.geometry.thickness/2.0; 0.1],...
+	[md.geometry.thickness; 0.2],...
+	[md.geometry.thickness; md.timestepping.start_time],...
+	];
+% }}} 
+
+% find out elements that have zero loads throughout the loading history.
+pos = find(sum(abs(md.geometry.thickness(1:end-1,:)),2)==0);
+md.mask.ice_levelset(pos)=1; % no ice
+
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('1111111');
+
+%% solve for GIA deflection 
+md=solve(md,'Gia');
+
+%Test Name: GiaIvinsBenchmarksAB2dC1
+U_AB2dC1 = md.results.GiaSolution.UGia; 
+URate_AB2dC1 = md.results.GiaSolution.UGiaRate;
+
+%Test Name: GiaIvinsBenchmarksAB2dC2
+%% different evaluation time. {{{ 
+md.timestepping.start_time=1000.3;  % for t \approx 1 kyr 
+md.geometry.thickness(end,end) = md.timestepping.start_time; 
+
+md=solve(md,'Gia');
+
+U_AB2dC2 = md.results.GiaSolution.UGia; 
+URate_AB2dC2 = md.results.GiaSolution.UGiaRate; 
+% }}} 
+
+%Test Name: GiaIvinsBenchmarksAB2dC3
+%% different evaluation time. {{{ 
+md.timestepping.start_time=2400000; % for t \approx \infty 
+md.geometry.thickness(end,end) = md.timestepping.start_time; 
+
+md=solve(md,'Gia');
+
+U_AB2dC3 = md.results.GiaSolution.UGia; 
+URate_AB2dC3 = md.results.GiaSolution.UGiaRate; 
+% }}} 
+
+%Fields and tolerances to track changes
+field_names     ={'U_AB2dC1','URate_AB2dC1','U_AB2dC2','URate_AB2dC2','U_AB2dC3','URate_AB2dC3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={U_AB2dC1,URate_AB2dC1,U_AB2dC2,URate_AB2dC2,U_AB2dC3,URate_AB2dC3}; 
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2052.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2052.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2052.py	(revision 27955)
@@ -0,0 +1,72 @@
+#Test Name: GiaIvinsBenchmarksAB2dC
+from socket import gethostname
+
+import numpy as np
+
+from model import *
+from parameterize import *
+from setmask import *
+from solve import *
+from triangle import *
+
+
+# Benchmark experiments (Figure A2a Ivins and James, 1999, Geophys. J. Int.)
+md = triangle(model(), '../Exp/RoundFrontEISMINT.exp', 200000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/GiaIvinsBenchmarksCD.py')
+
+# indicate what you want to compute
+md.gia.cross_section_shape = 1  # for square-edged x-section
+
+# evaluation time (termed start_time)
+md.timestepping.start_time = 0.3  # for t \approx 0 kyr : to get elastic response!
+md.timestepping.final_time = 2500000  # 2,500 kyr
+
+# define loading history
+md.geometry.thickness = np.array([
+    np.append(md.geometry.thickness * 0.0, 0.0),
+    np.append(md.geometry.thickness / 2.0, 0.1),
+    np.append(md.geometry.thickness, 0.2),
+    np.append(md.geometry.thickness, md.timestepping.start_time)
+    ]).T
+
+# find out elements that have zero loads throughout the loading history
+pos = np.where(np.abs(md.geometry.thickness[0:-2, :].sum(axis=1)) == 0)[0]
+md.mask.ice_levelset[pos] = 1 # no ice
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.verbose = verbose('1111111')
+
+# solve for GIA deflection
+md = solve(md, 'Gia')
+
+# Test Name: GiaIvinsBenchmarksAB2dC1
+U_AB2dC1 = md.results.GiaSolution.UGia
+URate_AB2dC1 = md.results.GiaSolution.UGiaRate
+
+# Test Name: GiaIvinsBenchmarksAB2dC2
+# different evaluation time # {{{
+md.timestepping.start_time = 1000.3 # for t \approx 1 kyr
+md.geometry.thickness[-1, -1] = md.timestepping.start_time
+
+md = solve(md, 'Gia')
+
+U_AB2dC2 = md.results.GiaSolution.UGia
+URate_AB2dC2 = md.results.GiaSolution.UGiaRate
+# }}}
+
+# Test Name: GiaIvinsBenchmarksAB2dC3
+# different evaluation time # {{{
+md.timestepping.start_time = 2400000 # for t \approx \infty
+md.geometry.thickness[-1, -1] = md.timestepping.start_time
+
+md = solve(md, 'Gia')
+
+U_AB2dC3 = md.results.GiaSolution.UGia
+URate_AB2dC3 = md.results.GiaSolution.UGiaRate
+# }}}
+
+# Fields and tolerances to track changes
+field_names = ['U_AB2dC1', 'URate_AB2dC1', 'U_AB2dC2', 'URate_AB2dC2', 'U_AB2dC3', 'URate_AB2dC3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [U_AB2dC1, URate_AB2dC1, U_AB2dC2, URate_AB2dC2, U_AB2dC3, URate_AB2dC3]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2053.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2053.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2053.m	(revision 27955)
@@ -0,0 +1,63 @@
+%Test Name: GiaIvinsBenchmarksAB2dD
+% Benchmark experiments (Figure A2a Ivins and James, 1999, Geophys. J. Int.) 
+md=triangle(model(),'../Exp/RoundFrontEISMINT.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/GiaIvinsBenchmarksCD.par');
+
+%% indicate what you want to compute 
+md.gia.cross_section_shape=2;    % for elliptical edge  
+
+% evaluation time (termed start_time) 
+md.timestepping.start_time=0.3;     % for t \approx 0 kyr : to get elastic response!   
+md.timestepping.final_time=2500000; % 2,500 kyr
+
+%% define loading history {{{ 
+md.geometry.thickness=[...
+	[md.geometry.thickness*0.0; 0.0],...
+	[md.geometry.thickness/2.0; 0.1],...
+	[md.geometry.thickness; 0.2],...
+	[md.geometry.thickness; md.timestepping.start_time],...
+	];
+% }}} 
+
+% find out elements that have zero loads throughout the loading history.
+pos = find(sum(abs(md.geometry.thickness(1:end-1,:)),2)==0);
+md.mask.ice_levelset(pos)=1; % no ice
+
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('1111111');
+
+%% solve for GIA deflection 
+md=solve(md,'Gia');
+
+%Test Name: GiaIvinsBenchmarksAB2dD1
+U_AB2dD1 = md.results.GiaSolution.UGia; 
+URate_AB2dD1 = md.results.GiaSolution.UGiaRate; 
+
+%Test Name: GiaIvinsBenchmarksAB2dD2
+%% different evaluation time. {{{ 
+md.timestepping.start_time=1000.3;  % for t \approx 1 kyr 
+md.geometry.thickness(end,end) = md.timestepping.start_time; 
+
+md=solve(md,'Gia');
+
+U_AB2dD2 = md.results.GiaSolution.UGia; 
+URate_AB2dD2 = md.results.GiaSolution.UGiaRate; 
+% }}} 
+
+%Test Name: GiaIvinsBenchmarksAB2dD3
+%% different evaluation time. {{{ 
+md.timestepping.start_time=2400000; % for t \approx \infty 
+md.geometry.thickness(end,end) = md.timestepping.start_time; 
+
+md=solve(md,'Gia');
+
+U_AB2dD3 = md.results.GiaSolution.UGia; 
+URate_AB2dD3 = md.results.GiaSolution.UGiaRate; 
+% }}} 
+
+%Fields and tolerances to track changes
+field_names     ={'U_AB2dD1','URate_AB2dD1','U_AB2dD2','URate_AB2dD2','U_AB2dD3','URate_AB2dD3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={U_AB2dD1,URate_AB2dD1,U_AB2dD2,URate_AB2dD2,U_AB2dD3,URate_AB2dD3}; 
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2053.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2053.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2053.py	(revision 27955)
@@ -0,0 +1,73 @@
+#Test Name: GiaIvinsBenchmarksAB2dD
+from socket import gethostname
+
+import numpy as np
+
+from model import *
+from parameterize import *
+from setmask import *
+from solve import *
+from triangle import *
+
+
+# Benchmark experiments (Figure A2a Ivins and James, 1999, Geophys. J. Int.)
+md = triangle(model(), '../Exp/RoundFrontEISMINT.exp', 200000)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/GiaIvinsBenchmarksCD.py')
+
+# indicate what you want to compute
+md.gia.cross_section_shape = 2  # for elliptical edge
+
+# evaluation time (termed start_time)
+md.timestepping.start_time = 0.3  # for t \approx 0 kyr : to get elastic response!
+md.timestepping.final_time = 2500000  # 2,500 kyr
+
+# define loading history
+md.geometry.thickness = np.array([
+    np.append(md.geometry.thickness * 0.0, 0.0),
+    np.append(md.geometry.thickness / 2.0, 0.1),
+    np.append(md.geometry.thickness, 0.2),
+    np.append(md.geometry.thickness, md.timestepping.start_time)
+    ]).T
+
+# find out elements that have zero loads throughout the loading history
+pos = np.where(np.abs(md.geometry.thickness[0:-2, :].sum(axis=1)) == 0)[0]
+md.mask.ice_levelset[pos] = 1 # no ice
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.verbose = verbose('1111111')
+
+# solve for GIA deflection
+md = solve(md, 'Gia')
+
+# Test Name: GiaIvinsBenchmarksAB2dD1
+U_AB2dD1 = md.results.GiaSolution.UGia
+URate_AB2dD1 = md.results.GiaSolution.UGiaRate
+
+# Test Name: GiaIvinsBenchmarksAB2dD2
+# different evaluation time # {{{
+md.timestepping.start_time = 1000.3 # for t \approx 1 kyr
+md.geometry.thickness[-1, -1] = md.timestepping.start_time
+
+md = solve(md, 'Gia')
+
+U_AB2dD2 = md.results.GiaSolution.UGia
+URate_AB2dD2 = md.results.GiaSolution.UGiaRate
+# }}}
+
+# Test Name: GiaIvinsBenchmarksAB2dD3
+# different evaluation time # {{{
+md.timestepping.start_time = 2400000 # for t \approx \infty
+md.geometry.thickness[-1, -1] = md.timestepping.start_time
+
+md = solve(md, 'Gia')
+
+U_AB2dD3 = md.results.GiaSolution.UGia
+URate_AB2dD3 = md.results.GiaSolution.UGiaRate
+# }}}
+
+# Fields and tolerances to track changes
+field_names = ['U_AB2dD1', 'URate_AB2dD1', 'U_AB2dD2', 'URate_AB2dD2', 'U_AB2dD3', 'URate_AB2dD3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [U_AB2dD1, URate_AB2dD1, U_AB2dD2, URate_AB2dD2, U_AB2dD3, URate_AB2dD3]
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test206.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test206.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test206.js	(revision 27955)
@@ -0,0 +1,18 @@
+//Test Name: SquareShelfTherStea
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+md.timestepping.time_step=0;
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Thermal');
+
+//Fields and tolerances to track changes
+field_names     =['Temperature','BasalforcingsGroundediceMeltingRate'];
+field_tolerances=[1e-13,5e-6];
+field_values=[
+	(md.results.ThermalSolution[0].Temperature),
+	(md.results.ThermalSolution[0].BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test206.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test206.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test206.m	(revision 27955)
@@ -0,0 +1,17 @@
+%Test Name: SquareShelfTherStea
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=0;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,5e-6};
+field_values={...
+	(md.results.ThermalSolution.Temperature),...
+	(md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test206.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test206.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test206.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: SquareShelfTherStea
+
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 180000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.timestepping.time_step = 0
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Thermal')
+
+
+# Fields and tolerances to track changes
+
+field_names = ['Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-13, 5e-6]
+field_values = [md.results.ThermalSolution.Temperature, md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test207.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test207.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test207.js	(revision 27955)
@@ -0,0 +1,26 @@
+//Test Name: SquareShelfTherTran
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Temperature1','BasalforcingsGroundediceMeltingRate1','Temperature2','BasalforcingsGroundediceMeltingRate2','Temperature3','BasalforcingsGroundediceMeltingRate3'];
+field_tolerances=[1e-13,1e-6,1e-13,1e-6,1e-13,1e-6];
+field_values=[
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test207.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test207.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test207.m	(revision 27955)
@@ -0,0 +1,25 @@
+%Test Name: SquareShelfTherTran
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature1','BasalforcingsGroundediceMeltingRate1','Temperature2','BasalforcingsGroundediceMeltingRate2','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={1e-13,1e-6,1e-13,1e-6,1e-13,1e-6};
+field_values={...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test207.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test207.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test207.py	(revision 27955)
@@ -0,0 +1,33 @@
+#Test Name: SquareShelfTherTran
+
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 180000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.isstressbalance = False
+md.transient.ismasstransport = False
+md.transient.issmb = True
+md.transient.isthermal = True
+md.transient.isgroundingline = False
+md = solve(md, 'Transient')
+
+# Fields and tolerances to track changes
+field_names = ['Temperature1', 'BasalforcingsGroundediceMeltingRate1', 'Temperature2', 'BasalforcingsGroundediceMeltingRate2', 'Temperature3', 'BasalforcingsGroundediceMeltingRate3']
+field_tolerances = [1e-13, 1e-6, 1e-13, 1e-6, 1e-13, 1e-6]
+field_values = [md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2070.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2070.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2070.m	(revision 27955)
@@ -0,0 +1,71 @@
+%Test Name: ElasticLoveNumbers
+%Forward Love number solution for a viscoelastic earth, model M3-L70-V01 from
+%Spada, G., Barletta, V. R., Klemann, V., Riva, R. E. M., Martinec, Z.,
+%Gasperini, P., Lund, B., Wolf, D., Vermeersen, L. L. A. and King, M. A.
+%(2011), A benchmark study for glacial isostatic adjustment codes. Geophysical
+%Journal International, 185: 106--132. doi:10.1111/j.1365-246X.2011.04952.x
+
+md=model();
+md.cluster=generic('name',oshostname(),'np',2);
+
+md.materials=materials('litho');
+md.miscellaneous.name='test2070';
+md.groundingline.migration='None';
+
+md.verbose=verbose('all');
+md.verbose=verbose('1111111111111111');
+cst=365.25*24*3600*1000;
+
+md.materials.numlayers=6;
+md.materials.radius =  [10 1222.5 3.4800e+03   5.7010e+03   5.9510e+03   6.3010e+03   6.3710e+03]'*1e3;
+md.materials.density=  [1.0750e4 1.0750e+04   4.9780e+03   3.8710e+03   3.4380e+03   3.0370e+03]';
+md.materials.lame_mu=  [1e-5         0   2.2834e+00   1.0549e+00   7.0363e-01   5.0605e-01]'*1e11;
+md.materials.viscosity=[0            0   2.0000e+00   1.0000e+00   1.0000e+00   1.0000e+25]'*1e21;
+md.materials.lame_lambda=md.materials.lame_mu*0+5e17;
+md.materials.issolid=[1 0 1 1 1 1]';
+md.materials.rheologymodel=zeros(md.materials.numlayers,1);
+md.materials.burgers_mu=md.materials.lame_mu/3;
+md.materials.burgers_viscosity=md.materials.viscosity/10;
+md.materials.ebm_alpha= ones(md.materials.numlayers,1)*.9;
+md.materials.ebm_delta= ones(md.materials.numlayers,1)*0.2;
+md.materials.ebm_taul= ones(md.materials.numlayers,1)*54*60; %54min
+md.materials.ebm_tauh= ones(md.materials.numlayers,1)*18.6*cst/1e3; %18.6yr
+
+md.love.allow_layer_deletion=1;
+md.love.frequencies=[0];
+md.love.nfreq=length(md.love.frequencies);
+md.love.sh_nmin=1;
+md.love.sh_nmax=10000;
+md.love.underflow_tol=1e-20;
+md.love.pw_threshold=1e-3;
+md.love.Gravitational_Constant=6.6732e-11;
+md.love.min_integration_steps=100;
+md.love.allow_layer_deletion=1;
+md.love.forcing_type=11;
+md.love.chandler_wobble=0;
+md.love.complex_computation=0;
+md.love.istemporal=0;
+%md.love.time=(linspace(1/12,10, 10*12))'*cst/1e3;
+
+md.love.love_kernels=1;
+
+md=solve(md,'lv');
+
+h=md.results.LoveSolution.LoveHf;
+l=md.results.LoveSolution.LoveLf;
+k=md.results.LoveSolution.LoveKf;
+
+md.love.forcing_type=9;
+md.love.sh_nmin=2;
+md=solve(md,'lv');
+
+th=md.results.LoveSolution.LoveHf;
+tl=md.results.LoveSolution.LoveLf;
+tk=md.results.LoveSolution.LoveKf;
+
+%Fields and tolerances to track changes
+
+field_names     ={'LoveH_loading_elastic','LoveK_loading_elastic','LoveL_loading_elastic','LoveH_tidal_elastic','LoveK_tidal_elastic','LoveL_tidal_elastic'};
+field_tolerances={2.0e-8,2.0e-8,2.0e-8,2.0e-8,2.0e-8,2.0e-8};
+field_values={h,k,l,th,tk,tl};
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2071.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2071.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2071.m	(revision 27955)
@@ -0,0 +1,126 @@
+%Test Name: TemporalLoveNumbers
+%Forward Love number solution for a viscoelastic earth, model M3-L70-V01 from
+%Spada, G., Barletta, V. R., Klemann, V., Riva, R. E. M., Martinec, Z.,
+%Gasperini, P., Lund, B., Wolf, D., Vermeersen, L. L. A. and King, M. A.
+%(2011), A benchmark study for glacial isostatic adjustment codes. Geophysical
+%Journal International, 185: 106--132. doi:10.1111/j.1365-246X.2011.04952.x
+
+md=model();
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.materials=materials('litho');
+md.miscellaneous.name='test2071';
+md.groundingline.migration='None';
+
+md.verbose=verbose('all');
+md.verbose=verbose('1111111111111111');
+yts=365.25*24*3600;
+
+md.materials.numlayers=6;
+md.materials.radius =  [10 1222.5 3.4800e+03   5.7010e+03   5.9510e+03   6.3010e+03   6.3710e+03]'*1e3;
+md.materials.density=  [1.0750e4 1.0750e+04   4.9780e+03   3.8710e+03   3.4380e+03   3.0370e+03]';
+md.materials.lame_mu=  [1e-5         0   2.2834e+00   1.0549e+00   7.0363e-01   5.0605e-01]'*1e11;
+md.materials.viscosity=[0            0   2.0000e+00   1.0000e+00   1.0000e+00   1.0000e+25]'*1e21;
+md.materials.lame_lambda=md.materials.lame_mu*0+5e17;
+md.materials.issolid=[1 0 1 1 1 1]';
+md.materials.rheologymodel=zeros(md.materials.numlayers,1);
+md.materials.burgers_mu=md.materials.lame_mu/3;
+md.materials.burgers_viscosity=md.materials.viscosity/10;
+md.materials.ebm_alpha= ones(md.materials.numlayers,1)*.9;
+md.materials.ebm_delta= ones(md.materials.numlayers,1)*0.2;
+md.materials.ebm_taul= ones(md.materials.numlayers,1)*54*60; %54min
+md.materials.ebm_tauh= ones(md.materials.numlayers,1)*18.6*yts; %18.6yr
+
+md.love.allow_layer_deletion=1;
+md.love.frequencies=[0];
+md.love.nfreq=length(md.love.frequencies);
+md.love.sh_nmin=1;
+md.love.sh_nmax=1000;
+md.love.underflow_tol=1e-20;
+md.love.pw_threshold=1e-3;
+md.love.Gravitational_Constant=6.6732e-11;
+md.love.min_integration_steps=100;
+md.love.allow_layer_deletion=1;
+md.love.forcing_type=11;
+md.love.chandler_wobble=0;
+md.love.complex_computation=0;
+
+md.love.istemporal=1;
+md.love.n_temporal_iterations=8;
+md.love.time=[0; (logspace(0,4.3, 99))'*yts];
+md.love=md.love.build_frequencies_from_time;
+md.love.love_kernels=1;
+md.solidearth.lovenumbers.tk2secular= 0.9668;
+md.solidearth.rotational.equatorialmoi=8.0131e37;
+md.solidearth.rotational.polarmoi=8.0394e37;
+md.solidearth.rotational.angularvelocity=7.292115e-5;
+
+md=solve(md,'lv');
+
+h=md.results.LoveSolution.LoveHt;
+l=md.results.LoveSolution.LoveLt;
+k=md.results.LoveSolution.LoveKt;
+
+%Fields and tolerances to track changes
+field_names     ={'LoveH_loading_temporal','LoveK_loading_temporal','LoveL_loading_temporal'};
+field_tolerances={5e-6,5e-5,4e-5};
+field_values={h,k,l};
+
+spada=0;
+if (spada)
+	t=md.love.time/yts;
+	addpath ../Data/
+	load spada.mat
+	load spada_n1.mat;
+	s_weak=[9 12 15];
+
+	hspada(:,s_weak)=[];
+	kspada(:,s_weak)=[];
+	lspada(:,s_weak)=[];
+
+	hts=zeros(length(t),257);
+	lts=zeros(length(t),257);
+	kts=zeros(length(t),257);
+
+	d=1;
+	hts(:,d+1)=hspada_n1(2);
+	lts(:,d+1)=lspada_n1(2);
+	kts(:,d+1)=-1;
+	for mo=1:9 
+		hts(:,d+1)=hts(:,d+1)-hspada_n1(3+mo)./sspada_n1(1+mo).*(1-exp(t/1e3*sspada_n1(1+mo)));
+		lts(:,d+1)=lts(:,d+1)-lspada_n1(3+mo)./sspada_n1(1+mo).*(1-exp(t/1e3*sspada_n1(1+mo)));
+	end
+
+	for d=2:256
+		hts(:,d+1)=hspada(d-1,2);
+		lts(:,d+1)=lspada(d-1,2);
+		kts(:,d+1)=kspada(d-1,2);
+		for mo=1:9 
+			hts(:,d+1)=hts(:,d+1)-hspada(d-1,3+mo)./sspada(d-1,1+mo).*(1-exp(t/1e3*sspada(d-1,1+mo)));
+			lts(:,d+1)=lts(:,d+1)-lspada(d-1,3+mo)./sspada(d-1,1+mo).*(1-exp(t/1e3*sspada(d-1,1+mo)));
+			kts(:,d+1)=kts(:,d+1)-kspada(d-1,3+mo)./sspada(d-1,1+mo).*(1-exp(t/1e3*sspada(d-1,1+mo)));
+		end
+	end
+end
+
+return
+
+
+h=md.results.LoveSolution.LoveHt;
+l=md.results.LoveSolution.LoveLt;
+k=md.results.LoveSolution.LoveKt;
+ht=h';
+lt=l';
+kt=k';
+th=md.results.LoveSolution.LoveTidalHt';
+tl=md.results.LoveSolution.LoveTidalLt';
+tk=md.results.LoveSolution.LoveTidalKt';
+tht=ht*0;tht(3,:)=th(3,:);
+tkt=kt*0;tkt(3,:)=tk(3,:);
+tlt=lt*0;tlt(3,:)=tl(3,:);
+pmtf1=md.results.LoveSolution.LovePMTF1t(:,3)';
+pmtf2=md.results.LoveSolution.LovePMTF2t(:,3)';
+time=md.love.time/yts;
+
+save ../Data/lnb_temporal ht kt lt tht tkt tlt pmtf1 pmtf2 time;
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2072.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2072.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2072.m	(revision 27955)
@@ -0,0 +1,70 @@
+%Test Name: ElasticLoveNumbers_HighlyLayeredEarth
+%Forward Love number solution for a viscoelastic earth, model M3-L70-V01 from
+%Spada, G., Barletta, V. R., Klemann, V., Riva, R. E. M., Martinec, Z.,
+%Gasperini, P., Lund, B., Wolf, D., Vermeersen, L. L. A. and King, M. A.
+%(2011), A benchmark study for glacial isostatic adjustment codes. Geophysical
+%Journal International, 185: 106--132. doi:10.1111/j.1365-246X.2011.04952.x
+
+md=model();
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.materials=materials('litho');
+md.miscellaneous.name='test2072';
+md.groundingline.migration='None';
+
+md.verbose=verbose('all');
+md.verbose=verbose('1111111111111111');
+cst=365.25*24*3600*1000;
+
+
+%Model VSS96 from Vermeersen, L.L.A., Sabadini, R. & Spada, G., 1996a. Analytical visco-elastic relaxation models, Geophys. Res. Lett., 23, 697–700.
+md.materials.radius=[10, 1222.5, 3480., 3600., 3630.5, 3700., 3900., 4000., 4200., 4300., 4500., 4600., 4800., 4900., 5100., 5200., 5400., 5500., 5600.5, 5650., 5701., 5736., 5771.5, 5821., 5951., 5970.5, 6016., 6061., 6150.5, 6151.5, 6251., 6371.]'*1e3;
+md.materials.lame_mu=[1e-5, 0., 2.933, 2.8990002, 2.8550003, 2.7340002, 2.675, 2.559, 2.502, 2.388, 2.331, 2.215, 2.157, 2.039, 1.979, 1.8560001, 1.794, 1.73, 1.639, 1.2390001, 1.224, 1.21, 1.128, 0.97700006, 0.906, 0.79, 0.773, 0.741, 0.656, 0.665, 0.602]'*1e11;
+md.materials.density=[10925., 10925., 5506.42, 5491.45, 5456.57, 5357.06, 5307.24, 5207.13, 5156.69, 5054.69, 5002.99, 4897.83, 4844.22, 4734.6, 4678.44, 4563.07, 4503.72, 4443.16, 4412.41, 3992.14, 3983.99, 3975.84, 3912.82, 3786.78, 3723.78, 3516.39, 3489.51, 3435.78, 3359.5, 3367.1, 3184.3]';
+md.materials.viscosity=[0., 0., 7.999999999999999E+21, 8.5E+21, 8.999999999999999E+21, 3.E+22, 4.E+22, 5.0000000000000004E+22, 6.E+22, 5.0000000000000004E+22, 4.5E+22, 3.E+22, 2.5000000000000002E+22, 1.7999999999999998E+22, 1.3E+22, 7.999999999999999E+21, 6.999999999999999E+21, 6.5E+21, 6.E+21, 5.5E+21, 5.E+21, 4.4999999999999995E+21, 3.9999999999999995E+21, 2.5E+21, 1.9999999999999997E+21, 1.5E+21, 9.999999999999999E+20, 6.E+20, 5.5000000000000007E+20, 2.E+20, 1.E40]';
+md.materials.lame_lambda=md.materials.lame_mu*0+5e17;
+md.materials.issolid=md.materials.lame_mu>0;
+md.materials.numlayers=length(md.materials.lame_mu);
+md.materials.burgers_mu=md.materials.lame_mu;
+md.materials.burgers_viscosity=md.materials.viscosity;
+md.materials.rheologymodel=md.materials.issolid*0;
+md.materials.burgers_mu=md.materials.lame_mu/3;
+md.materials.burgers_viscosity=md.materials.viscosity/10;
+md.materials.ebm_alpha= ones(md.materials.numlayers,1)*.9;
+md.materials.ebm_delta= ones(md.materials.numlayers,1)*0.2;
+md.materials.ebm_taul= ones(md.materials.numlayers,1)*54*60; %54min
+md.materials.ebm_tauh= ones(md.materials.numlayers,1)*18.6*cst/1e3; %18.6yr
+
+md.love.allow_layer_deletion=1;
+md.love.frequencies=[0];
+md.love.nfreq=length(md.love.frequencies);
+md.love.sh_nmin=1;
+md.love.sh_nmax=256;
+md.love.underflow_tol=1e-20;
+md.love.pw_threshold=1e-3;
+md.love.Gravitational_Constant=6.6732e-11;
+md.love.min_integration_steps=100;
+md.love.allow_layer_deletion=1;
+md.love.forcing_type=11;
+md.love.chandler_wobble=0;
+md.love.complex_computation=0;
+md.love.istemporal=1;
+md.love.n_temporal_iterations=8;
+%md.love.time=[0; (logspace(-3,6, 202))'*cst];
+md.love.time=[0; 10.^([-3.0000e+00  -2.1045e+00  -1.2090e+00  -3.1343e-01   5.8209e-01   1.4776e+00   2.3731e+00   3.2687e+00   4.1642e+00   5.0597e+00   5.9552e+00])'*cst];
+md.love=md.love.build_frequencies_from_time;
+
+md.love.love_kernels=1;
+
+md=solve(md,'lv');
+
+h=md.results.LoveSolution.LoveHt;
+l=md.results.LoveSolution.LoveLt;
+k=md.results.LoveSolution.LoveKt;
+
+%Fields and tolerances to track changes
+
+field_names     ={'LoveH_loading_elastic','LoveK_loading_elastic','LoveL_loading_elastic'};
+field_tolerances={2e-5,2e-5,2e-5};
+field_values={h,k,l};
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2073.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2073.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2073.m	(revision 27955)
@@ -0,0 +1,66 @@
+%Test Name: YiSystemDebug
+%Forward Love number solution for a viscoelastic earth, model M3-L70-V01 from
+%Spada, G., Barletta, V. R., Klemann, V., Riva, R. E. M., Martinec, Z.,
+%Gasperini, P., Lund, B., Wolf, D., Vermeersen, L. L. A. and King, M. A.
+%(2011), A benchmark study for glacial isostatic adjustment codes. Geophysical
+%Journal International, 185: 106--132. doi:10.1111/j.1365-246X.2011.04952.x
+
+md=model();
+md.cluster=generic('name',oshostname(),'np',2);
+
+md.materials=materials('litho');
+md.miscellaneous.name='test2073';
+md.groundingline.migration='None';
+
+md.verbose=verbose('all');
+md.verbose=verbose('1111111111111111');
+cst=365.25*24*3600*1000;
+
+md.materials.numlayers=6;
+md.materials.radius =  [10 1222.5 3.4800e+03   5.7010e+03   5.9510e+03   6.3010e+03   6.3710e+03]'*1e3;
+md.materials.density=  [1.0750e4 1.0750e+04   4.9780e+03   3.8710e+03   3.4380e+03   3.0370e+03]';
+md.materials.lame_mu=  [1e-5         0   2.2834e+00   1.0549e+00   7.0363e-01   5.0605e-01]'*1e11;
+md.materials.viscosity=[0            0   2.0000e+00   1.0000e+00   1.0000e+00   1.0000e+25]'*1e21;
+md.materials.lame_lambda=md.materials.lame_mu*0+5e17;
+md.materials.issolid=[1 0 1 1 1 1]';
+md.materials.rheologymodel=zeros(md.materials.numlayers,1);
+md.materials.burgers_mu=md.materials.lame_mu/3;
+md.materials.burgers_viscosity=md.materials.viscosity/10;
+md.materials.ebm_alpha= ones(md.materials.numlayers,1)*.9;
+md.materials.ebm_delta= ones(md.materials.numlayers,1)*0.2;
+md.materials.ebm_taul= ones(md.materials.numlayers,1)*54*60; %54min
+md.materials.ebm_tauh= ones(md.materials.numlayers,1)*18.6*cst/1e3; %18.6yr
+
+md.love.allow_layer_deletion=1;
+md.love.frequencies=[0];
+md.love.nfreq=length(md.love.frequencies);
+md.love.sh_nmin=2;
+md.love.sh_nmax=2;
+md.love.underflow_tol=1e-20;
+md.love.pw_threshold=1e-3;
+md.love.Gravitational_Constant=6.6732e-11;
+md.love.allow_layer_deletion=1;
+md.love.forcing_type=11;
+md.love.chandler_wobble=0;
+md.love.complex_computation=0;
+md.love.istemporal=0;
+
+md.love.debug=1;
+%make sure we only have one step per layer in the propagator
+md.love.max_integration_dr=md.materials.radius(end);
+md.love.min_integration_steps=1;
+
+md.love.love_kernels=1;
+
+md=solve(md,'lv');
+
+yi=md.results.LoveSolution.LoveYi;
+rhs=md.results.LoveSolution.LoveRhs;
+
+
+%Fields and tolerances to track changes
+
+field_names     ={'LoveYi_loading_elastic','LoveRhs_loading_elastic'};
+field_tolerances={1.0e-13,1.0e-13,1.0e-13};
+field_values={yi,rhs};
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test208.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test208.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test208.m	(revision 27955)
@@ -0,0 +1,46 @@
+%Test Name: SquareShelfTranSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','FloatingArea','GroundedArea','TotalGroundedBmb','TotalFloatingBmb'};
+md.basalforcings.floatingice_melting_rate(:)=1;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','TotalGroundedBmb1','TotalFloatingBmb1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','TotalGroundedBmb2','TotalFloatingBmb2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','TotalGroundedBmb3','TotalFloatingBmb3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).TotalGroundedBmb),...
+	(md.results.TransientSolution(3).TotalFloatingBmb),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test208.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test208.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test208.py	(revision 27955)
@@ -0,0 +1,62 @@
+#Test Name: SquareShelfTranSSA2d
+
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.basalforcings.floatingice_melting_rate[:] = 1.
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.requested_outputs = ['default', 'FloatingArea', 'GroundedArea', 'TotalFloatingBmb', 'TotalGroundedBmb']
+md = solve(md, 'Transient')
+
+
+# Fields and tolerances to track changes
+
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1',
+               'Bed1', 'Surface1', 'Thickness1', 'TotalGroundedBmb1', 'TotalFloatingBmb1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2',
+               'Bed2', 'Surface2', 'Thickness2', 'TotalGroundedBmb2', 'TotalFloatingBmb2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3',
+               'Bed3', 'Surface3', 'Thickness3', 'TotalGroundedBmb3', 'TotalFloatingBmb3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].TotalGroundedBmb,
+                md.results.TransientSolution[0].TotalFloatingBmb,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].TotalGroundedBmb,
+                md.results.TransientSolution[1].TotalFloatingBmb,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].TotalGroundedBmb,
+                md.results.TransientSolution[2].TotalFloatingBmb]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2084.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2084.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2084.m	(revision 27955)
@@ -0,0 +1,186 @@
+%Test Name: GiaCaron
+%Forward Love number solution for a viscoelastic earth, model M3-L70-V01 from
+%Spada, G., Barletta, V. R., Klemann, V., Riva, R. E. M., Martinec, Z.,
+%Gasperini, P., Lund, B., Wolf, D., Vermeersen, L. L. A. and King, M. A.
+%(2011), A benchmark study for glacial isostatic adjustment codes. Geophysical
+%Journal International, 185: 106--132. doi:10.1111/j.1365-246X.2011.04952.x
+
+md=model();
+md.cluster=generic('name',oshostname(),'np',8);
+
+% set validation=1 for comparing against the Spada benchmark.
+validation=0; 
+
+md.materials=materials('litho');
+md.miscellaneous.name='FourierLoveTest';
+md.groundingline.migration='None';
+
+md.verbose=verbose('all');
+md.verbose=verbose('1111111111111111');
+cst=365.25*24*3600*1000;
+
+md.materials.numlayers=6;
+md.materials.radius =  [10 1222.5 3.4800e+03   5.7010e+03   5.9510e+03   6.3010e+03   6.3710e+03]'*1e3;
+md.materials.density=  [1.0750e4 1.0750e+04   4.9780e+03   3.8710e+03   3.4380e+03   3.0370e+03]';
+md.materials.lame_mu=  [1e-5         0   2.2834e+00   1.0549e+00   7.0363e-01   5.0605e-01]'*1e11;
+md.materials.viscosity=[0            0   2.0000e+00   1.0000e+00   1.0000e+00   1.0000e+25]'*1e21;
+md.materials.lame_lambda=md.materials.lame_mu*0+5e17;
+md.materials.issolid=[1 0 1 1 1 1]';
+md.materials.rheologymodel=zeros(md.materials.numlayers,1);
+md.materials.burgers_mu=md.materials.lame_mu/3;
+md.materials.burgers_viscosity=md.materials.viscosity/10;
+md.materials.ebm_alpha= ones(md.materials.numlayers,1)*.9;
+md.materials.ebm_delta= ones(md.materials.numlayers,1)*0.2;
+md.materials.ebm_taul= ones(md.materials.numlayers,1)*54*60; %54min
+md.materials.ebm_tauh= ones(md.materials.numlayers,1)*18.6*cst/1e3; %18.6yr
+%setlitho2prem(md.materials)
+
+md.love.allow_layer_deletion=1;
+md.love.frequencies=[0; (logspace(-6,3, 1000))'/cst];
+md.love.nfreq=length(md.love.frequencies);
+md.love.sh_nmin=1;
+md.love.sh_nmax=1000;
+md.love.underflow_tol=1e-20;
+md.love.pw_threshold=1e-3;
+md.love.Gravitational_Constant=6.6732e-11;
+md.love.allow_layer_deletion=1;
+md.love.forcing_type=11;
+md.love.chandler_wobble=0;
+md.love.complex_computation=0;
+
+md.love.istemporal=1;
+md.love.n_temporal_iterations=8;
+%md.love.time=(logspace(-6,5, 2))'*cst;
+md.love.time=[0; (logspace(-3,5, 24))'*cst];
+
+%md.love.time=(linspace(1/12,10, 10*12))'*cst/1e3;
+md.love.love_kernels=1;
+if md.love.istemporal
+	md.love=md.love.build_frequencies_from_time;
+end
+
+md=solve(md,'lv');
+
+ht=md.results.LoveSolution.LoveHt';
+lt=md.results.LoveSolution.LoveLt';
+kt=md.results.LoveSolution.LoveKt';
+t=md.love.time/cst*1e3;
+
+%hs=reshape(md.results.LoveSolution.LoveHi(:,:), [ md.love.sh_nmax+1, 2*md.love.n_temporal_iterations, length(t)]);
+%hs=permute(hs,[3 2 1]);
+%[ht,h,hsig,hconv]=postwidder_love(md,md.love.n_temporal_iterations,t,hs,1e-5);
+
+%Fields and tolerances to track changes
+%loading love numbers
+field_names     ={'LoveH_loading_elastic','LoveK_loading_elastic','LoveL_loading_elastic'};
+field_tolerances={2.0e-8,2.0e-8,2.0e-8};
+field_values={...
+	(md.results.LoveSolution.LoveHt(:,1)),...
+	(md.results.LoveSolution.LoveKt(:,1)),...
+	(md.results.LoveSolution.LoveLt(:,1)),...
+	};
+
+return
+
+if false
+addpath('../../../../invGIA/Spada_benchmark/')
+load spada.mat
+s_weak=[9 12 15];
+
+hspada(:,s_weak)=[];
+kspada(:,s_weak)=[];
+lspada(:,s_weak)=[];
+
+hts=zeros(length(t),md.love.sh_nmax+1);
+lts=zeros(length(t),md.love.sh_nmax+1);
+kts=zeros(length(t),md.love.sh_nmax+1);
+for d=max(2,md.love.sh_nmin):md.love.sh_nmax
+hts(:,d+1)=hspada(d-1,2);
+lts(:,d+1)=lspada(d-1,2);
+kts(:,d+1)=kspada(d-1,2);
+for mo=1:9 
+hts(:,d+1)=hts(:,d+1)-hspada(d-1,3+mo)./sspada(d-1,1+mo).*(1-exp(t/1e3*sspada(d-1,1+mo)));
+lts(:,d+1)=lts(:,d+1)-lspada(d-1,3+mo)./sspada(d-1,1+mo).*(1-exp(t/1e3*sspada(d-1,1+mo)));
+kts(:,d+1)=kts(:,d+1)-kspada(d-1,3+mo)./sspada(d-1,1+mo).*(1-exp(t/1e3*sspada(d-1,1+mo)));
+end
+end
+close all
+
+if md.love.sh_nmin==md.love.sh_nmax
+subplot(2,3,1)
+plot(t/cst*1e3,ht(:,md.love.sh_nmin+1),'x-',t/cst*1e3,hts);
+set(gca, 'xscale', 'log'); shading flat;
+title('h')
+
+subplot(2,3,2)
+plot(t/cst*1e3,lt(:,md.love.sh_nmin+1),'x-',t/cst*1e3,lts);
+set(gca, 'xscale', 'log'); shading flat;
+title('l')
+
+subplot(2,3,3)
+plot(t/cst*1e3,kt(:,md.love.sh_nmin+1),'x-',t/cst*1e3,kts);
+set(gca, 'xscale', 'log'); shading flat;
+title('k')
+
+subplot(2,3,4)
+plot(t/cst*1e3,log10(abs((ht-hts)./hts))');
+set(gca, 'xscale', 'log'); shading flat;
+
+subplot(2,3,5)
+plot(t/cst*1e3,log10(abs((lt-lts)./lts))');
+set(gca, 'xscale', 'log'); shading flat;
+title('l')
+
+subplot(2,3,6)
+plot(t/cst*1e3,log10(abs((kt-kts)./kts))');
+set(gca, 'xscale', 'log'); shading flat;
+title('k')
+else
+
+[T,N]=meshgrid(t/cst*1e3,0:md.love.sh_nmax);
+subplot(1,3,1)
+pcolor(T,N,log10(abs((ht-hts)./hts))');
+set(gca, 'xscale', 'log'); shading flat;colorbar;
+title('h')
+
+subplot(1,3,2)
+pcolor(T,N,log10(abs((lt-lts)./lts))');
+set(gca, 'xscale', 'log'); shading flat;colorbar;
+title('l')
+
+subplot(1,3,3)
+pcolor(T,N,log10(abs((kt-kts)./kts))');
+set(gca, 'xscale', 'log'); shading flat;colorbar;
+title('k')
+end
+
+
+% validate elastic loading solutions against the Spada benchmark. {{{ 
+if validation 
+	spada_solutions = load('spada_elastic_loading_deg_h_l_k'); 
+	spada_d = spada_solutions(:,1); 
+	spada_h = spada_solutions(:,2); 
+	spada_l = spada_solutions(:,3); 
+	spada_k = spada_solutions(:,4); 
+
+	%rename ISSM solutions.  
+	issm_d = [1:md.love.sh_nmax];  
+	issm_h = md.results.LoveSolution.LoveHr(2:end,1); 
+	issm_l = md.results.LoveSolution.LoveLr(2:end,1); 
+	issm_k = md.results.LoveSolution.LoveKr(2:end,1); 
+
+	% relative difference for each degree, except for zero.  
+	diff_h = 1 - issm_h./spada_h;  
+	diff_l = 1 - issm_l./spada_l;  
+	diff_k = 1 - issm_k./spada_k;  
+
+	figure 
+	plot(spada_d,[diff_h diff_l diff_k]); grid on; 
+	legend('h','l','k'); title('loading love'); 
+
+else
+	% 
+end 
+
+end
+% }}} 
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2084.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2084.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2084.py	(revision 27955)
@@ -0,0 +1,93 @@
+#Test Name: GiaCaron
+# Forward Love number solution for a viscoelastic earth, model M3-L70-V01 from
+# Spada, G., Barletta, V. R., Klemann, V., Riva, R. E. M., Martinec, Z.,
+# Gasperini, P., Lund, B., Wolf, D., Vermeersen, L. L. A. and King, M. A.
+# (2011), A benchmark study for glacial isostatic adjustment codes. Geophysical
+# Journal International, 185: 106--132. doi:10.1111/j.1365-246X.2011.04952.x
+
+import numpy as np
+
+from generic import generic
+from materials import *
+from socket import gethostname
+from model import *
+from solve import *
+
+md = model()
+md.cluster = generic('name', gethostname(), 'np', 8)
+
+# Set validation=1 for comparing against the Spada benchmark
+validation = 0
+
+md.materials = materials('litho')
+md.miscellaneous.name = 'FourierLoveTest'
+md.groundingline.migration = 'None'
+
+md.verbose = verbose('all')
+md.verbose = verbose('1111111111111111')
+cst = 365.25 * 24 * 3600 * 1000
+
+md.materials.numlayers = 6
+md.materials.radius = np.array([10, 1222.5, 3.4800e+03, 5.7010e+03, 5.9510e+03,
+                                6.3010e+03, 6.3710e+03]).reshape(-1, 1) * 1e3
+md.materials.density = np.array([1.0750e4, 1.0750e+04, 4.9780e+03, 3.8710e+03,
+                                3.4380e+03, 3.0370e+03]).reshape(-1, 1)
+md.materials.lame_mu = np.array([1e-5, 0, 2.2834e+00, 1.0549e+00, 7.0363e-01,
+                                5.0605e-01]).reshape(-1, 1) * 1e11
+md.materials.viscosity = np.array([0, 0, 2.0000e+00, 1.0000e+00, 1.0000e+00,
+                                   1.0000e+25]).reshape(-1, 1) * 1e21
+md.materials.lame_lambda = np.array(md.materials.lame_mu) * 0 + 5e17
+md.materials.issolid = np.array([1, 0, 1, 1, 1, 1]).reshape(-1, 1)
+md.materials.rheologymodel = np.zeros((md.materials.numlayers, 1))
+md.materials.burgers_mu = md.materials.lame_mu / 3
+md.materials.burgers_viscosity = md.materials.viscosity / 10
+md.materials.ebm_alpha = np.ones((md.materials.numlayers, 1)) * 0.9
+md.materials.ebm_delta = np.ones((md.materials.numlayers, 1)) * 0.2
+md.materials.ebm_taul = np.ones((md.materials.numlayers, 1)) * 54 * 60 # 54 min
+md.materials.ebm_tauh = np.ones((md.materials.numlayers, 1)) * 18.6 * cst / 1e3 # 18.6 yr
+#setlitho2prem(md.materials)
+
+md.love.allow_layer_deletion = 1
+md.love.frequencies = np.vstack(([0], np.logspace(-6, 3, 1000).reshape(-1, 1) / cst))
+md.love.nfreq = len(md.love.frequencies)
+md.love.sh_nmin = 1
+md.love.sh_nmax = 1000
+md.love.underflow_tol = 1e-20
+md.love.pw_threshold = 1e-3
+md.love.Gravitational_Constant = 6.6732e-11
+md.love.allow_layer_deletion = 1
+md.love.forcing_type = 11
+md.love.chandler_wobble = 0
+md.love.complex_computation = 0
+
+md.love.istemporal = 1
+md.love.n_temporal_iterations = 8
+#md.love.time = np.logspace(-6, 5, 2).reshape(-1, 1) * cst
+md.love.time = np.vstack(([0], np.logspace(-3, 5, 24).reshape(-1, 1) * cst))
+
+#md.love.time = np.linspace(1/12, 10, 10 * 12).reshape(-1, 1) * cst / 1e3
+md.love.love_kernels = 1
+if md.love.istemporal:
+    md.love = md.love.build_frequencies_from_time()
+
+md = solve(md, 'lv')
+
+ht = md.results.LoveSolution.LoveHt.reshape(-1, 1)
+lt = md.results.LoveSolution.LoveLt.reshape(-1, 1)
+kt = md.results.LoveSolution.LoveKt.reshape(-1, 1)
+t = md.love.time / cst * 1e3
+
+# Fields and tolerances to track changes
+# loading love numbers
+field_names = ['LoveH_loading_elastic', 'LoveK_loading_elastic', 'LoveL_loading_elastic']
+field_tolerances = [2.0e-8, 2.0e-8, 2.0e-8]
+field_values = [
+    np.array(md.results.LoveSolution.LoveHt)[:, 0],
+    np.array(md.results.LoveSolution.LoveKt)[:, 0],
+    np.array(md.results.LoveSolution.LoveLt)[:, 0]
+]
+
+# TODO:
+# - Implement read from file and comparison
+# - Implement plot
+# - Implement validation of elastic loading solutions against the Spada benchmark
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2085.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2085.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2085.m	(revision 27955)
@@ -0,0 +1,332 @@
+%Test Name: FourierLoveKernels
+% Homogeneous Earth, for which analytic solutions exist. 
+% Love kernels for degree 2, 20, 200 (tested against analytic solns).  
+% skip benchmarking for the inner-most interface. 
+
+% set validation=1 for comparing against the analytic solutions. 
+validation=0; 
+
+% for volumetric potential
+md=model();
+md.groundingline.migration='None';
+
+md.materials=materials('litho');
+cst=365.25*24*3600*1000;
+
+md.materials.numlayers = 40;
+md.love.forcing_type = 9;
+
+md.materials.density=zeros(md.materials.numlayers,1)+5511;
+md.materials.lame_mu=zeros(md.materials.numlayers,1)+0.75e11;
+md.materials.lame_lambda=zeros(md.materials.numlayers,1)+5e17;
+md.materials.issolid=ones(md.materials.numlayers,1);
+md.materials.rheologymodel=zeros(md.materials.numlayers,1);
+
+%the following isn't used here but needs to have arrays of consistent size with the rest of the materials
+md.materials.viscosity=zeros(md.materials.numlayers,1)+1e21;
+md.materials.burgers_mu=md.materials.lame_mu/3;
+md.materials.burgers_viscosity=md.materials.viscosity/10;
+md.materials.ebm_alpha= ones(md.materials.numlayers,1)*0.9;
+md.materials.ebm_delta= ones(md.materials.numlayers,1)*0.2;
+md.materials.ebm_taul= ones(md.materials.numlayers,1)*54*60; %54min
+md.materials.ebm_tauh= ones(md.materials.numlayers,1)*18.6*cst/1e3; %18.6yr
+
+md.materials.radius =  linspace(10e3,6371e3,md.materials.numlayers+1)';
+md.love.g0 = 9.8134357285509388; % directly grabbed from fourierlovesolver for this particular case. 
+
+md.love.allow_layer_deletion=1;
+md.love.frequencies=0;
+md.love.nfreq=1;
+md.love.istemporal=0;
+
+md.love.sh_nmin = 2;
+md.love.sh_nmax = 200;
+md.love.love_kernels=1; 
+
+md.miscellaneous.name='kernels';
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('111111101');
+
+md=solve(md,'lv');
+
+% save yi's for all layers except for the inner-most one, at select degrees. 
+degrees = [2 20 200];  % we archive solutions for degrees 2, 20, 200 
+kernels=reshape(md.results.LoveSolution.LoveKernels, [md.love.sh_nmax+1 md.love.nfreq md.materials.numlayers+1 6]);
+
+% extract love kernels {{{ 
+% degree 2.
+y1_tidal_degree002 = squeeze(kernels(degrees(1)+1,1,2:end,1));
+y2_tidal_degree002 = squeeze(kernels(degrees(1)+1,1,2:end,2));
+y3_tidal_degree002 = squeeze(kernels(degrees(1)+1,1,2:end,3));
+y4_tidal_degree002 = squeeze(kernels(degrees(1)+1,1,2:end,4));
+y5_tidal_degree002 = squeeze(kernels(degrees(1)+1,1,2:end,5));
+y6_tidal_degree002 = squeeze(kernels(degrees(1)+1,1,2:end,6));
+
+% degree 20. 
+y1_tidal_degree020 = squeeze(kernels(degrees(2)+1,1,2:end,1));
+y2_tidal_degree020 = squeeze(kernels(degrees(2)+1,1,2:end,2));
+y3_tidal_degree020 = squeeze(kernels(degrees(2)+1,1,2:end,3));
+y4_tidal_degree020 = squeeze(kernels(degrees(2)+1,1,2:end,4));
+y5_tidal_degree020 = squeeze(kernels(degrees(2)+1,1,2:end,5));
+y6_tidal_degree020 = squeeze(kernels(degrees(2)+1,1,2:end,6));
+
+% degree 200. 
+y1_tidal_degree200 = squeeze(kernels(degrees(3)+1,1,2:end,1));
+y2_tidal_degree200 = squeeze(kernels(degrees(3)+1,1,2:end,2));
+y3_tidal_degree200 = squeeze(kernels(degrees(3)+1,1,2:end,3));
+y4_tidal_degree200 = squeeze(kernels(degrees(3)+1,1,2:end,4));
+y5_tidal_degree200 = squeeze(kernels(degrees(3)+1,1,2:end,5));
+y6_tidal_degree200 = squeeze(kernels(degrees(3)+1,1,2:end,6));
+% }}} 
+
+% validate tidal potential solutions against the analytic solutions. {{{ 
+if validation
+
+	param.rho = md.materials.density(1); 
+	param.mu = md.materials.lame_mu(1); 
+	param.G = 6.67e-11;
+	param.radius = md.materials.radius;  
+	param.g0 = md.love.g0;
+	param.source = md.love.forcing_type; 
+
+	% check against analytic solutions at the following degrees 
+	degrees_analytic = [2 4 8 16 32]; 
+	% extract analytic solutions. 
+	for jj=1:length(degrees_analytic)
+		param.degree = degrees_analytic(jj); 
+		y_temp = yi_analytic_homogenous(param); 
+		if (exist('y_ana','var')~=1)
+			y_ana = zeros([length(degrees_analytic) size(y_temp)]); 
+		end
+		y_ana(jj,:,:)=y_temp; 
+	end
+	y1_ana=squeeze(y_ana(:,:,1)); 
+	y2_ana=squeeze(y_ana(:,:,2)); 
+	y3_ana=squeeze(y_ana(:,:,3)); 
+	y4_ana=squeeze(y_ana(:,:,4)); 
+	y5_ana=squeeze(y_ana(:,:,5)); 
+	y6_ana=squeeze(y_ana(:,:,6)); 
+
+	depth = (max(param.radius)-param.radius)/1000; % km.
+
+	kernels=reshape(md.results.LoveSolution.LoveKernels, [md.love.sh_nmax+1 md.love.nfreq md.materials.numlayers+1 6]);
+	y1 = squeeze(kernels(:,1,:,1));
+	y2 = squeeze(kernels(:,1,:,2));
+	y3 = squeeze(kernels(:,1,:,3));
+	y4 = squeeze(kernels(:,1,:,4));
+	y5 = squeeze(kernels(:,1,:,5));
+	y6 = squeeze(kernels(:,1,:,6));
+	
+	set(0,'DefaultAxesFontSize',16,'DefaultTextFontSize',15,'DefaultAxesLineWidth',1,...
+		'DefaultTextInterpreter','Latex','DefaultAxesFontName','Arial','DefaultLineMarkerSize',8)
+	figure1=figure('Position', [100, 100, 800, 1000]);
+	%---------------------------------------------------------------------
+	axes1 = axes('Layer','top','Position',[0.1 0.73 0.4 0.23]); 
+	axis(axes1,[-0.004 0.088 -0.5 6.5]);
+	ylabel(axes1,'Depth [$\times$1000 km]','fontsize',20); 
+	xlabel(axes1,'$y_1$ [m]','fontsize',20); 
+	box(axes1,'on'); grid(axes1,'on'); hold(axes1,'all');
+	plot(y1_ana,depth/1000,'linewidth',2,'parent',axes1); 
+	set(gca,'ColorOrderIndex',1,'Ydir','reverse'); 
+	plot(y1(degrees_analytic+1,:),depth/1000,'o','linewidth',2,'parent',axes1); 
+	%---------------------------------------------------------------------
+	axes2 = axes('Layer','top','Position',[0.55 0.73 0.4 0.23]); 
+	axis(axes2,[-200 3200 -0.5 6.5]);
+	xlabel(axes2,'$y_2$ [Pa]','fontsize',20); 
+	box(axes2,'on'); grid(axes2,'on'); hold(axes2,'all');
+	plot(y2_ana,depth/1000,'linewidth',2,'parent',axes2); 
+	set(gca,'ColorOrderIndex',1,'Ydir','reverse'); 
+	plot(y2(degrees_analytic+1,:),depth/1000,'o','linewidth',2,'parent',axes2); 
+	%---------------------------------------------------------------------
+	axes3 = axes('Layer','top','Position',[0.1 0.4 0.4 0.23]); 
+	axis(axes3,[-0.002 0.034 -0.5 6.5]);
+	ylabel(axes3,'Depth [$\times$1000 km]','fontsize',20); 
+	xlabel(axes3,'$y_3$ [m]','fontsize',20); 
+	box(axes3,'on'); grid(axes3,'on'); hold(axes3,'all');
+	plot(y3_ana,depth/1000,'linewidth',2,'parent',axes3); 
+	set(gca,'ColorOrderIndex',1,'Ydir','reverse'); 
+	plot(y3(degrees_analytic+1,:),depth/1000,'o','linewidth',2,'parent',axes3); 
+	%---------------------------------------------------------------------
+	axes4 = axes('Layer','top','Position',[0.55 0.4 0.4 0.23]); 
+	axis(axes4,[-100 1600 -0.5 6.5]);
+	xlabel(axes4,'$y_4$ [Pa]','fontsize',20); 
+	box(axes4,'on'); grid(axes4,'on'); hold(axes4,'all');
+	plot(y4_ana,depth/1000,'linewidth',2,'parent',axes4); 
+	set(gca,'ColorOrderIndex',1,'Ydir','reverse'); 
+	plot(y4(degrees_analytic+1,:),depth/1000,'o','linewidth',2,'parent',axes4); 
+	%---------------------------------------------------------------------
+	axes5 = axes('Layer','top','Position',[0.1 0.07 0.4 0.23]); 
+	axis(axes5,[-0.05 1.5 0 6.5]);
+	ylabel(axes5,'Depth [$\times$1000 km]','fontsize',20); 
+	xlabel(axes5,'$y_5$ [m$^2$ s$^{-2}$]','fontsize',20); 
+	box(axes5,'on'); grid(axes5,'on'); hold(axes5,'all');
+	plot(y5_ana,depth/1000,'linewidth',2,'parent',axes5); 
+	set(gca,'ColorOrderIndex',1,'Ydir','reverse'); 
+	plot(y5(degrees_analytic+1,:),depth/1000,'o','linewidth',2,'parent',axes5); 
+	%---------------------------------------------------------------------
+	axes6 = axes('Layer','top','Position',[0.55 0.07 0.4 0.23]); 
+	axis(axes6,[-1e-7 4e-7 0 6.5]);
+	xlabel(axes6,'$y_6$ [m s$^{-2}$]','fontsize',20); 
+	box(axes6,'on'); grid(axes6,'on'); hold(axes6,'all');
+	plot(y6_ana,depth/1000,'linewidth',2,'parent',axes6); 
+	set(gca,'ColorOrderIndex',1,'Ydir','reverse'); 
+	plot(y6(degrees_analytic+1,:),depth/1000,'o','linewidth',2,'parent',axes6); 
+	%---------------------------------------------------------------------
+
+	legend(axes6,'n=2','n=4','n=8','n=16','n=32'); 
+	%export_fig('/Users/adhikari/issm/trunk-jpl/src/m/contrib/adhikari/issm_vs_analytic_loading_homogeneous.pdf'); 
+else
+	% 
+end 
+% }}} 
+
+% for surface load. 
+md.love.forcing_type = 11;
+md=solve(md,'lv');
+kernels=reshape(md.results.LoveSolution.LoveKernels, [md.love.sh_nmax+1 md.love.nfreq md.materials.numlayers+1 6]);
+
+% extract love kernels {{{ 
+% degree 2. 
+y1_loading_degree002 = squeeze(kernels(degrees(1)+1,1,2:end,1));
+y2_loading_degree002 = squeeze(kernels(degrees(1)+1,1,2:end,2));
+y3_loading_degree002 = squeeze(kernels(degrees(1)+1,1,2:end,3));
+y4_loading_degree002 = squeeze(kernels(degrees(1)+1,1,2:end,4));
+y5_loading_degree002 = squeeze(kernels(degrees(1)+1,1,2:end,5));
+y6_loading_degree002 = squeeze(kernels(degrees(1)+1,1,2:end,6));
+
+% degree 20. 
+y1_loading_degree020 = squeeze(kernels(degrees(2)+1,1,2:end,1));
+y2_loading_degree020 = squeeze(kernels(degrees(2)+1,1,2:end,2));
+y3_loading_degree020 = squeeze(kernels(degrees(2)+1,1,2:end,3));
+y4_loading_degree020 = squeeze(kernels(degrees(2)+1,1,2:end,4));
+y5_loading_degree020 = squeeze(kernels(degrees(2)+1,1,2:end,5));
+y6_loading_degree020 = squeeze(kernels(degrees(2)+1,1,2:end,6));
+
+% degree 200. 
+y1_loading_degree200 = squeeze(kernels(degrees(3)+1,1,2:end,1));
+y2_loading_degree200 = squeeze(kernels(degrees(3)+1,1,2:end,2));
+y3_loading_degree200 = squeeze(kernels(degrees(3)+1,1,2:end,3));
+y4_loading_degree200 = squeeze(kernels(degrees(3)+1,1,2:end,4));
+y5_loading_degree200 = squeeze(kernels(degrees(3)+1,1,2:end,5));
+y6_loading_degree200 = squeeze(kernels(degrees(3)+1,1,2:end,6));
+% }}} 
+
+% validate loading solutions against the analytic solutions. {{{ 
+if validation
+
+	param.source = md.love.forcing_type; 
+
+	% extract analytic solutions. 
+	for jj=1:length(degrees_analytic)
+		param.degree = degrees_analytic(jj); 
+		y_temp = yi_analytic_homogenous(param); 
+		if (exist('y_ana','var')~=1)
+			y_ana = zeros([length(degrees_analytic) size(y_temp)]); 
+		end
+		y_ana(jj,:,:)=y_temp; 
+	end
+	y1_ana=squeeze(y_ana(:,:,1)); 
+	y2_ana=squeeze(y_ana(:,:,2)); 
+	y3_ana=squeeze(y_ana(:,:,3)); 
+	y4_ana=squeeze(y_ana(:,:,4)); 
+	y5_ana=squeeze(y_ana(:,:,5)); 
+	y6_ana=squeeze(y_ana(:,:,6)); 
+
+	depth = (max(param.radius)-param.radius)/1000; % km.
+
+	kernels=reshape(md.results.LoveSolution.LoveKernels, [md.love.sh_nmax+1 md.love.nfreq md.materials.numlayers+1 6]);
+	y1 = squeeze(kernels(:,1,:,1));
+	y2 = squeeze(kernels(:,1,:,2));
+	y3 = squeeze(kernels(:,1,:,3));
+	y4 = squeeze(kernels(:,1,:,4));
+	y5 = squeeze(kernels(:,1,:,5));
+	y6 = squeeze(kernels(:,1,:,6));
+	
+	set(0,'DefaultAxesFontSize',16,'DefaultTextFontSize',15,'DefaultAxesLineWidth',1,...
+		'DefaultTextInterpreter','Latex','DefaultAxesFontName','Arial','DefaultLineMarkerSize',8)
+	figure1=figure('Position', [100, 100, 800, 1000]);
+	%---------------------------------------------------------------------
+	axes1 = axes('Layer','top','Position',[0.1 0.73 0.4 0.23]); 
+	axis(axes1,[-0.11 0.01 -0.5 6.5]);
+	ylabel(axes1,'Depth [$\times$1000 km]','fontsize',20); 
+	xlabel(axes1,'$y_1$ [m]','fontsize',20); 
+	box(axes1,'on'); grid(axes1,'on'); hold(axes1,'all');
+	plot(y1_ana,depth/1000,'linewidth',2,'parent',axes1); 
+	set(gca,'ColorOrderIndex',1,'Ydir','reverse'); 
+	plot(y1(degrees_analytic+1,:),depth/1000,'o','linewidth',2,'parent',axes1); 
+	%---------------------------------------------------------------------
+	axes2 = axes('Layer','top','Position',[0.55 0.73 0.4 0.23]); 
+	axis(axes2,[-1.8e4 0.2e4 -0.5 6.5]);
+	xlabel(axes2,'$y_2$ [Pa]','fontsize',20); 
+	box(axes2,'on'); grid(axes2,'on'); hold(axes2,'all');
+	plot(y2_ana,depth/1000,'linewidth',2,'parent',axes2); 
+	set(gca,'ColorOrderIndex',1,'Ydir','reverse'); 
+	plot(y2(degrees_analytic+1,:),depth/1000,'o','linewidth',2,'parent',axes2); 
+	%---------------------------------------------------------------------
+	axes3 = axes('Layer','top','Position',[0.1 0.4 0.4 0.23]); 
+	axis(axes3,[-0.023 0.002 -0.5 6.5]);
+	ylabel(axes3,'Depth [$\times$1000 km]','fontsize',20); 
+	xlabel(axes3,'$y_3$ [m]','fontsize',20); 
+	box(axes3,'on'); grid(axes3,'on'); hold(axes3,'all');
+	plot(y3_ana,depth/1000,'linewidth',2,'parent',axes3); 
+	set(gca,'ColorOrderIndex',1,'Ydir','reverse'); 
+	plot(y3(degrees_analytic+1,:),depth/1000,'o','linewidth',2,'parent',axes3); 
+	%---------------------------------------------------------------------
+	axes4 = axes('Layer','top','Position',[0.55 0.4 0.4 0.23]); 
+	axis(axes4,[-1300 100 -0.5 6.5]);
+	xlabel(axes4,'$y_4$ [Pa]','fontsize',20); 
+	box(axes4,'on'); grid(axes4,'on'); hold(axes4,'all');
+	plot(y4_ana,depth/1000,'linewidth',2,'parent',axes4); 
+	set(gca,'ColorOrderIndex',1,'Ydir','reverse'); 
+	plot(y4(degrees_analytic+1,:),depth/1000,'o','linewidth',2,'parent',axes4); 
+	%---------------------------------------------------------------------
+	axes5 = axes('Layer','top','Position',[0.1 0.07 0.4 0.23]); 
+	axis(axes5,[-0.05 0.9 -0.5 6.5]);
+	ylabel(axes5,'Depth [$\times$1000 km]','fontsize',20); 
+	xlabel(axes5,'$y_5$ [m$^2$ s$^{-2}$]','fontsize',20); 
+	box(axes5,'on'); grid(axes5,'on'); hold(axes5,'all');
+	plot(y5_ana,depth/1000,'linewidth',2,'parent',axes5); 
+	set(gca,'ColorOrderIndex',1,'Ydir','reverse'); 
+	plot(y5(degrees_analytic+1,:),depth/1000,'o','linewidth',2,'parent',axes5); 
+	%---------------------------------------------------------------------
+	axes6 = axes('Layer','top','Position',[0.55 0.07 0.4 0.23]); 
+	axis(axes6,[-1e-7 1e-6 -0.5 6.5]);
+	xlabel(axes6,'$y_6$ [m s$^{-2}$]','fontsize',20); 
+	box(axes6,'on'); grid(axes6,'on'); hold(axes6,'all');
+	plot(y6_ana,depth/1000,'linewidth',2,'parent',axes6); 
+	set(gca,'ColorOrderIndex',1,'Ydir','reverse'); 
+	plot(y6(degrees_analytic+1,:),depth/1000,'o','linewidth',2,'parent',axes6); 
+	%---------------------------------------------------------------------
+
+	legend(axes6,'n=2','n=4','n=8','n=16','n=32'); 
+	%export_fig('/Users/adhikari/issm/trunk-jpl/src/m/contrib/adhikari/issm_vs_analytic_tidal_homogeneous.pdf'); 
+else
+	% 
+end 
+% }}} 
+
+field_names = {...
+	'y1_tidal_degree002','y2_tidal_degree002','y3_tidal_degree002','y4_tidal_degree002','y5_tidal_degree002','y6_tidal_degree002',...
+	'y1_tidal_degree020','y2_tidal_degree020','y3_tidal_degree020','y4_tidal_degree020','y5_tidal_degree020','y6_tidal_degree020',...
+	'y1_tidal_degree200','y2_tidal_degree200','y3_tidal_degree200','y4_tidal_degree200','y5_tidal_degree200','y6_tidal_degree200',...
+	'y1_loading_degree002','y2_loading_degree002','y3_loading_degree002','y4_loading_degree002','y5_loading_degree002','y6_loading_degree002',...
+	'y1_loading_degree020','y2_loading_degree020','y3_loading_degree020','y4_loading_degree020','y5_loading_degree020','y6_loading_degree020',...
+	'y1_loading_degree200','y2_loading_degree200','y3_loading_degree200','y4_loading_degree200','y5_loading_degree200','y6_loading_degree200',...
+	}; 
+field_tolerances={...
+    3e-7, 3e-7, 3e-7, 1e-7, 6e-8, 9e-7,...
+    2e-7, 7e-8, 3e-7, 9e-8, 9e-10, 8e-10,...
+    2e-8, 4e-8, 4e-7, 3e-8, 2e-10, 1e-10,...
+    4e-6, 1e-6, 4e-6, 3e-6, 8e-7, 2e-6,...
+    2e-6, 1e-7, 5e-6, 3e-7, 2e-7, 2e-7,...
+    2e-6, 9e-10, 5e-5, 3e-8, 5e-7, 2e-9...
+	}; 
+field_values={...
+	y1_tidal_degree002,y2_tidal_degree002,y3_tidal_degree002,y4_tidal_degree002,y5_tidal_degree002,y6_tidal_degree002,...
+	y1_tidal_degree020,y2_tidal_degree020,y3_tidal_degree020,y4_tidal_degree020,y5_tidal_degree020,y6_tidal_degree020,...
+	y1_tidal_degree200,y2_tidal_degree200,y3_tidal_degree200,y4_tidal_degree200,y5_tidal_degree200,y6_tidal_degree200,...
+	y1_loading_degree002,y2_loading_degree002,y3_loading_degree002,y4_loading_degree002,y5_loading_degree002,y6_loading_degree002,...
+	y1_loading_degree020,y2_loading_degree020,y3_loading_degree020,y4_loading_degree020,y5_loading_degree020,y6_loading_degree020,...
+	y1_loading_degree200,y2_loading_degree200,y3_loading_degree200,y4_loading_degree200,y5_loading_degree200,y6_loading_degree200,...
+	};
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2085.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2085.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2085.py	(revision 27955)
@@ -0,0 +1,143 @@
+# Test Name: FourierLoveKernels
+# Homogenous Earth, for which analytic solutions exist.
+# Love kernels for degree 2, 20, 200 (tested against analytic solns).
+# Skip benchmarking for the inner-most interface.
+
+
+from socket import gethostname
+
+import numpy as np
+
+from generic import generic
+from materials import *
+from model import *
+from solve import *
+
+# For volumetric potential
+md = model()
+md.groundingline.migration = 'None'
+
+md.materials = materials('litho')
+cst = 365.25 * 24 * 3600 * 1000
+
+md.materials.numlayers = 40
+md.love.forcing_type = 9
+
+md.materials.density = np.zeros((md.materials.numlayers, 1)) + 5511
+md.materials.lame_mu = np.zeros((md.materials.numlayers, 1)) + 0.75e11
+md.materials.lame_lambda = np.zeros((md.materials.numlayers, 1)) + 5e17
+md.materials.issolid = np.ones((md.materials.numlayers, 1))
+md.materials.rheologymodel = np.zeros((md.materials.numlayers, 1))
+
+# The following isn't used here but needs to hhave arrays of consistent size with the rest of the materials
+md.materials.viscosity = np.zeros((md.materials.numlayers, 1)) + 1e21
+md.materials.burgers_mu = md.materials.lame_mu / 3
+md.materials.burgers_viscosity = md.materials.viscosity / 10
+md.materials.ebm_alpha = np.ones((md.materials.numlayers, 1)) * 0.9
+md.materials.ebm_delta = np.ones((md.materials.numlayers, 1)) * 0.2
+md.materials.ebm_taul = np.ones((md.materials.numlayers, 1)) * 54 * 60 # 54 min
+md.materials.ebm_tauh = np.ones((md.materials.numlayers, 1)) * 18.6 * cst / 1e3 # 18.6 yr
+
+md.materials.radius = np.linspace(10e3, 6371e3, md.materials.numlayers + 1).reshape(-1, 1)
+md.love.g0 = 9.8134357285509388 # directly grabbed from fourierlovesolver for this particular case
+
+md.love.allow_layer_deletion = 1
+md.love.frequencies = 0
+md.love.nfreq = 1
+md.love.istemporal = 0
+
+md.love.sh_nmin = 2
+md.love.sh_nmax = 200
+md.love.love_kernels = 1
+
+md.miscellaneous.name = 'kernels'
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.verbose = verbose('111111101')
+
+md = solve(md,'lv')
+
+# Save yi's for all layers except for the inner-most one, at select degrees.
+degrees = [1, 19, 199] # we archive solutions for degrees 2, 20, 200
+kernels = np.reshape(md.results.LoveSolution.LoveKernels, (md.love.sh_nmax + 1, md.love.nfreq, md.materials.numlayers + 1, 6), order='F')
+
+# Extract love kernels #{{{
+# degree 2
+y1_tidal_degree002 = kernels[degrees[0]+1,0,1:,0].squeeze()
+y2_tidal_degree002 = kernels[degrees[0]+1,0,1:,1].squeeze()
+y3_tidal_degree002 = kernels[degrees[0]+1,0,1:,2].squeeze()
+y4_tidal_degree002 = kernels[degrees[0]+1,0,1:,3].squeeze()
+y5_tidal_degree002 = kernels[degrees[0]+1,0,1:,4].squeeze()
+y6_tidal_degree002 = kernels[degrees[0]+1,0,1:,5].squeeze()
+
+# degree 20
+y1_tidal_degree020 = kernels[degrees[1]+1,0,1:,0].squeeze()
+y2_tidal_degree020 = kernels[degrees[1]+1,0,1:,1].squeeze()
+y3_tidal_degree020 = kernels[degrees[1]+1,0,1:,2].squeeze()
+y4_tidal_degree020 = kernels[degrees[1]+1,0,1:,3].squeeze()
+y5_tidal_degree020 = kernels[degrees[1]+1,0,1:,4].squeeze()
+y6_tidal_degree020 = kernels[degrees[1]+1,0,1:,5].squeeze()
+
+# degree 200
+y1_tidal_degree200 = kernels[degrees[2]+1,0,1:,0].squeeze()
+y2_tidal_degree200 = kernels[degrees[2]+1,0,1:,1].squeeze()
+y3_tidal_degree200 = kernels[degrees[2]+1,0,1:,2].squeeze()
+y4_tidal_degree200 = kernels[degrees[2]+1,0,1:,3].squeeze()
+y5_tidal_degree200 = kernels[degrees[2]+1,0,1:,4].squeeze()
+y6_tidal_degree200 = kernels[degrees[2]+1,0,1:,5].squeeze()
+#}}}
+
+# For surface load
+md.love.forcing_type = 11
+md = solve(md,'lv')
+kernels = np.reshape(md.results.LoveSolution.LoveKernels, (md.love.sh_nmax + 1, md.love.nfreq, md.materials.numlayers + 1, 6), order='F')
+
+# Extract love kernels #{{{
+# degree 2
+y1_loading_degree002 = kernels[degrees[0]+1,0,1:,0].squeeze()
+y2_loading_degree002 = kernels[degrees[0]+1,0,1:,1].squeeze()
+y3_loading_degree002 = kernels[degrees[0]+1,0,1:,2].squeeze()
+y4_loading_degree002 = kernels[degrees[0]+1,0,1:,3].squeeze()
+y5_loading_degree002 = kernels[degrees[0]+1,0,1:,4].squeeze()
+y6_loading_degree002 = kernels[degrees[0]+1,0,1:,5].squeeze()
+
+# degree 20
+y1_loading_degree020 = kernels[degrees[1]+1,0,1:,0].squeeze()
+y2_loading_degree020 = kernels[degrees[1]+1,0,1:,1].squeeze()
+y3_loading_degree020 = kernels[degrees[1]+1,0,1:,2].squeeze()
+y4_loading_degree020 = kernels[degrees[1]+1,0,1:,3].squeeze()
+y5_loading_degree020 = kernels[degrees[1]+1,0,1:,4].squeeze()
+y6_loading_degree020 = kernels[degrees[1]+1,0,1:,5].squeeze()
+
+# degree 200
+y1_loading_degree200 = kernels[degrees[2]+1,0,1:,0].squeeze()
+y2_loading_degree200 = kernels[degrees[2]+1,0,1:,1].squeeze()
+y3_loading_degree200 = kernels[degrees[2]+1,0,1:,2].squeeze()
+y4_loading_degree200 = kernels[degrees[2]+1,0,1:,3].squeeze()
+y5_loading_degree200 = kernels[degrees[2]+1,0,1:,4].squeeze()
+y6_loading_degree200 = kernels[degrees[2]+1,0,1:,5].squeeze()
+#}}}
+
+field_names = [
+    'y1_tidal_degree002', 'y2_tidal_degree002', 'y3_tidal_degree002', 'y4_tidal_degree002', 'y5_tidal_degree002', 'y6_tidal_degree002',
+    'y1_tidal_degree020', 'y2_tidal_degree020', 'y3_tidal_degree020', 'y4_tidal_degree020', 'y5_tidal_degree020', 'y6_tidal_degree020',
+    'y1_tidal_degree200', 'y2_tidal_degree200', 'y3_tidal_degree200', 'y4_tidal_degree200', 'y5_tidal_degree200', 'y6_tidal_degree200',
+    'y1_loading_degree002', 'y2_loading_degree002', 'y3_loading_degree002', 'y4_loading_degree002', 'y5_loading_degree002', 'y6_loading_degree002',
+    'y1_loading_degree020', 'y2_loading_degree020', 'y3_loading_degree020', 'y4_loading_degree020', 'y5_loading_degree020', 'y6_loading_degree020',
+    'y1_loading_degree200', 'y2_loading_degree200', 'y3_loading_degree200', 'y4_loading_degree200', 'y5_loading_degree200', 'y6_loading_degree200'
+    ]
+field_tolerances = [
+    3e-7, 3e-7, 3e-7, 1e-7, 6e-8, 9e-7,
+    2e-7, 7e-8, 3e-7, 9e-8, 9e-10, 8e-10,
+    2e-8, 4e-8, 4e-7, 3e-8, 2e-10, 1e-10,
+    4e-6, 1e-6, 4e-6, 3e-6, 8e-7, 2e-6,
+    2e-6, 1e-7, 5e-6, 3e-7, 2e-7, 2e-7,
+    2e-6, 9e-10, 5e-5, 3e-8, 5e-7, 2e-9
+    ]
+field_values = [
+    y1_tidal_degree002, y2_tidal_degree002, y3_tidal_degree002, y4_tidal_degree002, y5_tidal_degree002, y6_tidal_degree002,
+    y1_tidal_degree020, y2_tidal_degree020, y3_tidal_degree020, y4_tidal_degree020, y5_tidal_degree020, y6_tidal_degree020,
+    y1_tidal_degree200, y2_tidal_degree200, y3_tidal_degree200, y4_tidal_degree200, y5_tidal_degree200, y6_tidal_degree200,
+    y1_loading_degree002, y2_loading_degree002, y3_loading_degree002, y4_loading_degree002, y5_loading_degree002, y6_loading_degree002,
+    y1_loading_degree020, y2_loading_degree020, y3_loading_degree020, y4_loading_degree020, y5_loading_degree020, y6_loading_degree020,
+    y1_loading_degree200, y2_loading_degree200, y3_loading_degree200, y4_loading_degree200, y5_loading_degree200, y6_loading_degree200
+    ]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test209.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test209.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test209.js	(revision 27955)
@@ -0,0 +1,50 @@
+//Test Name: SquareShelfTranSSA3d
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'];
+field_tolerances=[
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,
+	1e-13,1e-13,3e-9,1e-13,3.8e-11,3.85e-11,3.85e-11,3.85e-11,1e-13,2e-8,
+	5e-11,6e-12,1e-08,6e-12,3.9e-11,1e-10,1e-10,1e-10,9e-12,5e-8];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test209.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test209.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test209.m	(revision 27955)
@@ -0,0 +1,49 @@
+%Test Name: SquareShelfTranSSA3d
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,...
+	1e-13,1e-13,3e-9,1e-13,3.8e-11,3.85e-11,3.85e-11,3.85e-11,1e-13,3e-8,...
+	5e-11,6e-12,1e-08,6e-12,3.9e-11,1e-10,1e-10,1e-10,9e-12,5e-8};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test209.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test209.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test209.py	(revision 27955)
@@ -0,0 +1,59 @@
+#Test Name: SquareShelfTranSSA3d
+
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 180000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+
+# Fields and tolerances to track changes
+
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Temperature1', 'BasalforcingsGroundediceMeltingRate1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'BasalforcingsGroundediceMeltingRate2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'Temperature3', 'BasalforcingsGroundediceMeltingRate3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-8,
+                    1e-13, 1e-13, 3e-9, 1e-13, 3.8e-11, 3.85e-11, 3.85e-11, 3.85e-11, 1e-13, 3e-8,
+                    5e-11, 6e-12, 1e-08, 6e-12, 3.9e-11, 1e-10, 1e-10, 1e-10, 9e-12, 5e-8]
+
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2090.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2090.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2090.m	(revision 27955)
@@ -0,0 +1,138 @@
+%Test Name: ViscoElasticEarthSlc
+
+%mesh earth:
+md=model;
+load ../Data/SlcTestMesh.mat;
+md.mesh=SlcMesh; %700 km resolution mesh
+
+%Geometry for the bed, arbitrary thickness of 1000: 
+md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.bed;
+md.geometry.thickness=100*ones(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+
+
+%parameterize solidearth solution:
+%solidearth loading:  {{{
+md.masstransport.spcthickness=[md.geometry.thickness;0];
+
+md.smb.mass_balance=zeros(md.mesh.numberofvertices,1);
+%antarctica
+xe=md.mesh.x(md.mesh.elements)*[1;1;1]/3;
+ye=md.mesh.y(md.mesh.elements)*[1;1;1]/3;
+ze=md.mesh.z(md.mesh.elements)*[1;1;1]/3;
+re=sqrt(xe.^2+ye.^2+ze.^2);
+
+late=asind(ze./re);
+longe=atan2d(ye,xe);
+pos=find(late < -80);
+%pos=10;
+md.masstransport.spcthickness(md.mesh.elements(pos,:))=md.masstransport.spcthickness(md.mesh.elements(pos,:)) -100;
+posant=pos;
+%greenland
+pos=find(late>60 & late<90 & longe>-75 & longe<-15);
+md.masstransport.spcthickness(md.mesh.elements(pos,:))=md.masstransport.spcthickness(md.mesh.elements(pos,:)) -100;
+posgre=pos;
+
+%visco-elastic loading from love numbers that we load ourselves. We 
+%still use the lovenumbers constructor to initialize the fields: 
+load ../Data/lnb_temporal.mat
+%md.solidearth.lovenumbers=lovenumbers('maxdeg',1000);
+%md.solidearth.lovenumbers.timefreq=[0];
+
+md.solidearth.lovenumbers.h=[ht];
+md.solidearth.lovenumbers.k=[kt];
+md.solidearth.lovenumbers.l=[lt];
+%md.solidearth.lovenumbers.h=repmat(md.solidearth.lovenumbers.h,1,100);
+%md.solidearth.lovenumbers.k=repmat(md.solidearth.lovenumbers.k,1,100);
+%md.solidearth.lovenumbers.l=repmat(md.solidearth.lovenumbers.l,1,100);
+md.solidearth.lovenumbers.th=tht;
+md.solidearth.lovenumbers.tk=tkt;
+md.solidearth.lovenumbers.tl=tlt;
+md.solidearth.lovenumbers.pmtf_colinear=pmtf1;
+md.solidearth.lovenumbers.pmtf_ortho=pmtf2;
+md.solidearth.lovenumbers.timefreq=time;
+
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+oceanmask=-ones(md.mesh.numberofvertices,1);
+pos=find(mask==0); oceanmask(pos)=1;
+
+icemask=ones(md.mesh.numberofvertices,1);
+icemask(md.mesh.elements(posant))=-1;
+icemask(md.mesh.elements(posgre))=-1;
+%oceanmask(md.mesh.elements(posant))=1;
+
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=oceanmask;
+% }}}
+
+%time stepping: 
+md.timestepping.start_time=0;
+md.timestepping.time_step=100;
+md.timestepping.final_time=1000;
+
+time1=md.timestepping.start_time:md.timestepping.time_step:md.timestepping.final_time;
+md.masstransport.spcthickness=repmat(md.masstransport.spcthickness, [1 length(time1)]);
+md.masstransport.spcthickness(1:end-1,3:end)=0;
+md.masstransport.spcthickness(end,:)=time1;
+
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+md.initialization.bottompressure=zeros(md.mesh.numberofvertices,1);
+md.initialization.dsl=zeros(md.mesh.numberofvertices,1);
+md.initialization.str=0;
+
+%Materials: 
+md.materials=materials('hydro');
+
+%Miscellaneous
+md.miscellaneous.name='test2090';
+
+%Solution parameters
+md.cluster.np=10;
+md.solidearth.settings.reltol=NaN;
+md.solidearth.settings.abstol=1e-3;
+md.solidearth.settings.sealevelloading=1;
+md.solidearth.settings.isgrd=1;
+md.solidearth.settings.ocean_area_scaling=0;
+md.solidearth.settings.grdmodel=1;
+md.solidearth.settings.timeacc=md.timestepping.time_step;
+md.solidearth.settings.degacc=.1;
+
+%Physics:
+md.transient.issmb=0; 
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.ismasstransport=1;
+md.transient.isslc=1;
+md.solidearth.requested_outputs={'Sealevel','Bed'};
+
+% max number of iteration reverted back to 10 (i.e., the original default value)
+md.solidearth.settings.maxiter=10;
+
+%eustatic + selfattraction + elastic + rotation run:
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=1;
+md.solidearth.settings.viscous=1;
+md.solidearth.settings.rotation=1;
+md=solve(md,'tr');
+
+
+clear S B
+for i=1:length(time1)-1
+S(:,i)=md.results.TransientSolution(i).Sealevel;
+B(:,i)=md.results.TransientSolution(i).Bed;
+end
+
+hold on
+plot(md.timestepping.start_time:md.timestepping.time_step:(md.timestepping.final_time-md.timestepping.time_step), [B(916,:)]);
+
+%Fields and tolerances to track changes
+field_names={'Sealevel','Bed'};
+field_tolerances={1e-13,1e-13};
+field_values={S,B};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2091.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2091.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2091.m	(revision 27955)
@@ -0,0 +1,273 @@
+%Test Name: ViscoElasticEarthSlc
+
+%mesh earth:
+md=model;md.mesh=mesh3dsurface();
+re= md.solidearth.planetradius;
+phi1=(0:10:360)/180*pi;
+phi2=(0:10:360)/180*pi;
+
+dom=struct;
+dom.x=cos(phi1')*re*pi;
+dom.y=sin(phi1')*re*pi;dom.y(end)=dom.y(1);
+dom.nods=length(dom.x);   
+
+co=struct;
+rad=re*pi*[linspace(1e-3,1,3)/18];
+for i=1:length(rad);
+co(i).x=cos(phi2')*rad(i);
+co(i).y=sin(phi2')*rad(i);co(i).y(end)=co(i).y(1);
+co(i).nods=length(co(i).x);co(i).closed=1;co(i).density=1;co(i).name='Icedisklimit';co(i).Geometry='Polygon';
+co(i).BoundingBox=[min(co(i).x) min(co(i).y); max(co(i).x) max(co(i).y)];
+end
+
+defaultoptions={'KeepVertices',0,'MaxCornerAngle',0.0000000001,'NoBoundaryRefinement',1}; 
+md2d=bamg(model,'domain',dom,'subdomains',co,'hmin',100e3,'hmax',10000e3,defaultoptions{:});
+
+colat=sqrt(md2d.mesh.x.^2+md2d.mesh.y.^2)/re;
+lon=atan2(md2d.mesh.y,md2d.mesh.x);
+
+x=sin(colat).*cos(lon)*re;
+y=sin(colat).*sin(lon)*re;
+z=cos(colat)*re;
+
+md.mesh.x=x;md.mesh.y=y;md.mesh.z=z;md.mesh.lat=90-colat*180/pi;md.mesh.long=lon*180/pi;
+md.mesh.r=sqrt(x.^2+y.^2+z.^2);
+md.mesh.numberofelements=md2d.mesh.numberofelements;md.mesh.numberofvertices=md2d.mesh.numberofvertices;
+md.mesh.elements=md2d.mesh.elements;
+md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+md.mesh.area=GetAreas3DTria(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z);
+
+
+%md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',500.);
+
+%Geometry for the bed, arbitrary thickness of 1000: 
+md.geometry.bed=-zeros(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.bed;
+md.geometry.thickness=0*ones(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+
+
+%parameterize solidearth solution:
+%solidearth loading:  {{{
+md.masstransport.spcthickness=[md.geometry.thickness;0];
+md.materials.rho_ice=931;
+
+
+md.smb.mass_balance=zeros(md.mesh.numberofvertices,1);
+%antarctica
+xe=md.mesh.x(md.mesh.elements)*[1;1;1]/3;
+ye=md.mesh.y(md.mesh.elements)*[1;1;1]/3;
+ze=md.mesh.z(md.mesh.elements)*[1;1;1]/3;
+re=sqrt(xe.^2+ye.^2+ze.^2);
+
+late=asind(ze./re);
+longe=atan2d(ye,xe);
+%arctic
+pos=find(late>=80);
+pos1=find(md.mesh.lat>=80);
+md.masstransport.spcthickness(:)=0;
+md.masstransport.spcthickness(pos1)=md.masstransport.spcthickness(pos1) +1500*sqrt((cosd(90-md.mesh.lat(pos1))-cosd(10))./(1-cosd(10)));
+%md.masstransport.spcthickness(pos1)=md.masstransport.spcthickness(pos1) +1000;
+posgre=pos;
+
+%visco-elastic loading from love numbers that we load ourselves. We 
+%still use the lovenumbers constructor to initialize the fields: 
+load ../Data/lnb_temporal.mat
+%md.solidearth.lovenumbers=lovenumbers('maxdeg',1000);
+%md.solidearth.lovenumbers.timefreq=[0];
+
+maxdeg=129;
+mindeg=1;
+
+md.solidearth.lovenumbers.h=ht;
+md.solidearth.lovenumbers.h(maxdeg+1,:)=0;
+%md.solidearth.lovenumbers.h(maxdeg+2,:)=0;
+%md.solidearth.lovenumbers.h(maxdeg+3:end,:)=[];
+md.solidearth.lovenumbers.h(1:mindeg,:)=0;
+md.solidearth.lovenumbers.k=kt;
+md.solidearth.lovenumbers.k(maxdeg+1,:)=-1;
+%md.solidearth.lovenumbers.k(maxdeg+2,:)=0;
+%md.solidearth.lovenumbers.k(maxdeg+3:end,:)=[];
+md.solidearth.lovenumbers.k(1:mindeg,:)=-1;
+md.solidearth.lovenumbers.l=lt;
+md.solidearth.lovenumbers.l(maxdeg+1,:)=0;
+%md.solidearth.lovenumbers.l(maxdeg+2,:)=0;
+%md.solidearth.lovenumbers.l(maxdeg+3:end,:)=[];
+md.solidearth.lovenumbers.l(1:mindeg,:)=0;
+%md.solidearth.lovenumbers.h=repmat(md.solidearth.lovenumbers.h,1,100);
+%md.solidearth.lovenumbers.k=repmat(md.solidearth.lovenumbers.k,1,100);
+%md.solidearth.lovenumbers.l=repmat(md.solidearth.lovenumbers.l,1,100);
+md.solidearth.lovenumbers.th=tht(1:maxdeg+1,:);
+md.solidearth.lovenumbers.tk=tkt(1:maxdeg+1,:);
+md.solidearth.lovenumbers.tl=tlt(1:maxdeg+1,:);
+md.solidearth.lovenumbers.pmtf_colinear=pmtf1;
+md.solidearth.lovenumbers.pmtf_ortho=pmtf2;
+md.solidearth.lovenumbers.timefreq=time;
+
+%}}}
+%mask:  {{{
+%mask=gmtmask(md.mesh.lat,md.mesh.long);
+oceanmask=ones(md.mesh.numberofvertices,1);
+
+icemask=ones(md.mesh.numberofvertices,1);
+icemask(pos1)=-1;
+
+
+md.mask.ice_levelset=icemask*1e-3;
+md.mask.ocean_levelset=oceanmask;
+% }}}
+
+%time stepping: 
+md.timestepping.start_time=0;
+md.timestepping.time_step=1000;
+md.timestepping.final_time=12000;
+
+time1=md.timestepping.start_time:md.timestepping.time_step:md.timestepping.final_time;
+md.masstransport.spcthickness=repmat(md.masstransport.spcthickness, [1 length(time1)]);
+%md.masstransport.spcthickness(1:end-1,3:end)=0;
+md.masstransport.spcthickness(end,:)=time1;
+
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+md.initialization.bottompressure=zeros(md.mesh.numberofvertices,1);
+md.initialization.dsl=zeros(md.mesh.numberofvertices,1);
+md.initialization.str=0;
+
+%Materials: 
+md.materials=materials('hydro');
+
+%Miscellaneous
+md.miscellaneous.name='test2091';
+
+%Solution parameters
+md.cluster.np=3;
+md.solidearth.settings.reltol=NaN;
+md.solidearth.settings.abstol=1e-3;
+md.solidearth.settings.sealevelloading=0;
+md.solidearth.settings.grdocean=0;
+md.solidearth.settings.isgrd=1;
+md.solidearth.settings.ocean_area_scaling=0;
+md.solidearth.settings.grdmodel=1;
+md.solidearth.settings.timeacc=md.timestepping.time_step;
+md.solidearth.settings.degacc=.01;
+
+%Physics:
+md.transient.issmb=0; 
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.ismasstransport=1;
+md.transient.isslc=1;
+md.solidearth.requested_outputs={'SealevelGRD','BedGRD', 'BedNorthGRD', 'BedEastGRD', 'SealevelBarystaticIceLoad', 'SealevelBarystaticIceWeights', 'SealevelBarystaticIceArea', 'SealevelBarystaticIceMask', 'SealevelBarystaticIceLatbar', 'SealevelBarystaticIceLongbar'};
+md.settings.results_on_nodes = {'SealevelBarystaticIceWeights'};
+
+% max number of iteration reverted back to 10 (i.e., the original default value)
+md.solidearth.settings.maxiter=10;
+
+%eustatic + selfattraction + elastic + rotation run:
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=1;
+md.solidearth.settings.viscous=1;
+md.solidearth.settings.rotation=0;
+md.solidearth.settings.horiz=1;
+
+md=solve(md,'tr');
+
+
+
+%%validation against spada curves
+clear S B H E
+for i=1:length(time1)-1
+S(:,i)=md.results.TransientSolution(i).SealevelGRD;
+B(:,i)=md.results.TransientSolution(i).BedGRD;
+H(:,i)=md.results.TransientSolution(i).BedNorthGRD;
+E(:,i)=md.results.TransientSolution(i).BedEastGRD;
+end
+
+S=cumsum(S,2);
+B=cumsum(B,2);
+H=cumsum(H,2);
+E=cumsum(E,2); %E should theoretically be 0, in practice there is a residual due to the resolution and imperfect symmetry of the ice load. This can serve as an accuracy check of the horizontals
+
+%Fields and tolerances to track changes
+field_names={'Sealevel','Bed', 'Horizontals'};
+field_tolerances={1e-13,1e-13,1e-13};
+field_values={S,B,H};
+
+return
+%Spada benchmark curves
+[ali,ia,~]=unique(90-md.mesh.lat);
+fid=fopen('../Data/SpadaBenchmark/T1-2/GS-disp_t0_d1_cap.dat');
+ dat=textscan(fid,'%f','headerlines',16);
+ dat2=reshape(dat{1}, [5 180*10+2]);
+ ur(:,1)=dat2(2,:);
+ ut(:,1)=dat2(3,:);
+ g(:,1)=dat2(5,:);
+ fid=fopen('../Data/SpadaBenchmark/T1-2/GS-disp_t1_d1_cap.dat');
+ dat=textscan(fid,'%f','headerlines',16);
+ dat2=reshape(dat{1}, [5 180*10+2]);
+ ur(:,end+1)=dat2(2,:);
+ ut(:,end+1)=dat2(3,:);
+ g(:,end+1)=dat2(5,:);
+ fid=fopen('../Data/SpadaBenchmark/T1-2/GS-disp_t2_d1_cap.dat');
+ dat=textscan(fid,'%f','headerlines',16);
+ dat2=reshape(dat{1}, [5 180*10+2]);     
+ ur(:,end+1)=dat2(2,:);
+ ut(:,end+1)=dat2(3,:);
+ g(:,end+1)=dat2(5,:);
+ fid=fopen('../Data/SpadaBenchmark/T1-2/GS-disp_t5_d1_cap.dat');
+ dat=textscan(fid,'%f','headerlines',16);
+ dat2=reshape(dat{1}, [5 180*10+2]);     
+ ur(:,end+1)=dat2(2,:);
+ ut(:,end+1)=dat2(3,:);
+ g(:,end+1)=dat2(5,:);
+ fid=fopen('../Data/SpadaBenchmark/T1-2/GS-disp_t10_d1_cap.dat');
+ dat=textscan(fid,'%f','headerlines',16);
+ dat2=reshape(dat{1}, [5 180*10+2]);     
+ ur(:,end+1)=dat2(2,:);
+ ut(:,end+1)=dat2(3,:);
+ g(:,end+1)=dat2(5,:);
+
+%correction factor for total mass in Spada vs us
+fact=3.607171340900778E+018/sum(md.results.TransientSolution(1).SealevelBarystaticIceLoad.*md.results.TransientSolution(1).SealevelBarystaticIceArea);
+[ali,ia,~]=unique(90-md.mesh.lat);
+
+clear uri;
+clear uti;
+clear gi;
+for i=1:5
+	uri(:,i)=interp1(dat2(1,1:end-1)',ur(1:end-1,i),ali);
+	uti(:,i)=interp1(dat2(1,1:end-1)',ut(1:end-1,i),ali);
+	gi(:,i)=interp1(dat2(1,1:end-1)',g(1:end-1,i),ali);
+end
+indB=[1 2 3 6 11];%curves at 0, 1, 2, 5 and 10kyr
+
+
+return
+subplot(2,3,1)
+plot(ali,B(ia,indB)*fact,'.',ali,uri)
+title('bedrock up');
+
+subplot(2,3,2)
+plot(ali,-H(ia,indB)*fact,'.', ali,uti) %minus sign is because unit vector e_North=-e_theta (colatitude direction)
+title('bedrock horiz');
+
+subplot(2,3,3)
+plot(ali,(S(ia,indB))*fact,'.',ali,gi)
+title('Geoid');
+
+subplot(2,3,4)
+plot(ali,B(ia,indB)*fact-uri)
+title('Bedrock up error');
+
+subplot(2,3,5)
+plot(ali,-H(ia,indB)*fact-uti)
+title('Bedrock horiz error');
+
+subplot(2,3,6)
+plot(ali,(S(ia,indB))*fact-gi)
+title('Geoid error');
+
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2092.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2092.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2092.m	(revision 27955)
@@ -0,0 +1,217 @@
+%Test Name: PolarMotion
+
+%mesh earth:
+md=model;md.mesh=mesh3dsurface();
+re= md.solidearth.planetradius;
+phi1=(0:10:360)/180*pi;
+phi2=(0:10:360)/180*pi;
+
+dom=struct;
+dom.x=cos(phi1')*re*pi;
+dom.y=sin(phi1')*re*pi;dom.y(end)=dom.y(1);
+dom.nods=length(dom.x);   
+
+co=struct;
+rad=re*pi*[linspace(1e-1,1,3)/18];
+for i=1:length(rad);
+co(i).x=cos(phi2')*rad(i);
+co(i).y=sin(phi2')*rad(i);co(i).y(end)=co(i).y(1);
+co(i).nods=length(co(i).x);co(i).closed=1;co(i).density=1;co(i).name='Icedisklimit';co(i).Geometry='Polygon';
+co(i).BoundingBox=[min(co(i).x) min(co(i).y); max(co(i).x) max(co(i).y)];
+end
+
+defaultoptions={'KeepVertices',0,'MaxCornerAngle',0.0000000001,'NoBoundaryRefinement',1}; 
+md2d=bamg(model,'domain',dom,'subdomains',co,'hmin',50e3,'hmax',10000e3,defaultoptions{:});
+
+colat=sqrt(md2d.mesh.x.^2+md2d.mesh.y.^2)/re;
+lon=atan2(md2d.mesh.y,md2d.mesh.x);
+
+x=sin(colat).*cos(lon)*re;
+y=sin(colat).*sin(lon)*re;
+z=cos(colat)*re;
+
+%load
+longL=75;
+latL=65;
+
+%rotate mesh around load center
+R1=[cosd(90-latL) 0 sind(90-latL) ;0 1 0; -sind(90-latL) 0 cosd(90-latL)];
+R2=[cosd(longL) -sind(longL) 0; sind(longL) cosd(longL) 0; 0 0 1];
+
+for i=1:length(x);
+	coord= R2*R1*[x(i);y(i);z(i)];
+	x(i)=coord(1);
+	y(i)=coord(2);
+	z(i)=coord(3);
+end
+
+colat=acos(z/re);
+lon=atan2(y,x);
+
+
+md.mesh.x=x;md.mesh.y=y;md.mesh.z=z;md.mesh.lat=90-colat*180/pi;md.mesh.long=lon*180/pi;
+md.mesh.r=sqrt(x.^2+y.^2+z.^2);
+md.mesh.numberofelements=md2d.mesh.numberofelements;md.mesh.numberofvertices=md2d.mesh.numberofvertices;
+md.mesh.elements=md2d.mesh.elements;
+md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+%md.mesh.area=averaging(md,GetAreas3DTria(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z),4);
+md.mesh.area=GetAreas3DTria(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z);
+
+%Geometry for the bed
+md.geometry.bed=-zeros(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.bed;
+md.geometry.thickness=0*ones(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+
+
+%parameterize solidearth solution:
+%solidearth loading:  {{{
+md.masstransport.spcthickness=[md.geometry.thickness;0];
+md.materials.rho_ice=931;
+
+
+md.smb.mass_balance=zeros(md.mesh.numberofvertices,1);
+%antarctica
+xe=md.mesh.x(md.mesh.elements)*[1;1;1]/3;
+ye=md.mesh.y(md.mesh.elements)*[1;1;1]/3;
+ze=md.mesh.z(md.mesh.elements)*[1;1;1]/3;
+re=sqrt(xe.^2+ye.^2+ze.^2);
+
+late=asind(ze./re);
+longe=atan2d(ye,xe);
+
+
+longi=md.mesh.long;
+lati=md.mesh.lat;
+delPhi=abs(lati-latL); delLambda=abs(longi-longL); if (delLambda>pi)delLambda=2*pi-delLambda; end
+alpha=2.*asin(sqrt(sind(delPhi/2).^2+cosd(lati).*cosd(latL).*sind(delLambda/2).^2));
+
+pos=find(alpha<=10/180*pi-0.01);
+
+%mass=3.607171340900778E+018;
+area_element=GetAreasSphericalTria(md.mesh.elements,md.mesh.lat,md.mesh.long,md.solidearth.planetradius);
+
+%md.masstransport.spcthickness(md.mesh.elements(pos,:))=mass/md.materials.rho_ice/area_element(pos);
+md.masstransport.spcthickness(pos,1)=1500 * sqrt( (cos(alpha(pos)) - cosd(10)) /(1-cosd(10)) );
+
+
+%visco-elastic loading from love numbers that we load ourselves. We 
+%still use the lovenumbers constructor to initialize the fields: 
+load ../Data/lnb_temporal.mat
+%md.solidearth.lovenumbers=lovenumbers('maxdeg',1000);
+%md.solidearth.lovenumbers.timefreq=[0];
+
+maxdeg=3;
+mindeg=2;
+
+md.solidearth.lovenumbers.h=ht;
+md.solidearth.lovenumbers.h(maxdeg+1,:)=0;
+%md.solidearth.lovenumbers.h(maxdeg+2,:)=0;
+%md.solidearth.lovenumbers.h(maxdeg+3:end,:)=[];
+md.solidearth.lovenumbers.h(1:mindeg,:)=0;
+md.solidearth.lovenumbers.k=kt;
+md.solidearth.lovenumbers.k(maxdeg+1,:)=-1;
+%md.solidearth.lovenumbers.k(maxdeg+2,:)=0;
+%md.solidearth.lovenumbers.k(maxdeg+3:end,:)=[];
+md.solidearth.lovenumbers.k(1:mindeg,:)=-1;
+md.solidearth.lovenumbers.l=lt;
+md.solidearth.lovenumbers.l(maxdeg+1,:)=0;
+%md.solidearth.lovenumbers.l(maxdeg+2,:)=0;
+%md.solidearth.lovenumbers.l(maxdeg+3:end,:)=[];
+md.solidearth.lovenumbers.l(1:mindeg,:)=0;
+md.solidearth.lovenumbers.th=tht(1:maxdeg+1,:);
+md.solidearth.lovenumbers.tk=tkt(1:maxdeg+1,:);
+md.solidearth.lovenumbers.tl=tlt(1:maxdeg+1,:);
+md.solidearth.lovenumbers.pmtf_colinear=pmtf1;
+md.solidearth.lovenumbers.pmtf_ortho=pmtf2;
+md.solidearth.lovenumbers.timefreq=time;
+md.solidearth.rotational.equatorialmoi=8.0131e37;
+md.solidearth.rotational.polarmoi=8.0394e37;
+md.solidearth.rotational.angularvelocity=7.292115e-5;
+
+%}}}
+%mask:  {{{
+oceanmask=ones(md.mesh.numberofvertices,1);
+icemask=ones(md.mesh.numberofvertices,1);
+icemask(pos)=-1;
+
+
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=oceanmask;
+% }}}
+
+%time stepping: 
+md.timestepping.start_time=0;
+md.timestepping.time_step=1000;
+md.timestepping.final_time=11000;
+
+time1=md.timestepping.start_time:md.timestepping.time_step:md.timestepping.final_time;
+md.masstransport.spcthickness=repmat(md.masstransport.spcthickness, [1 length(time1)]);
+%md.masstransport.spcthickness(1:end-1,3:end)=0;
+md.masstransport.spcthickness(end,:)=time1;
+
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+md.initialization.bottompressure=zeros(md.mesh.numberofvertices,1);
+md.initialization.dsl=zeros(md.mesh.numberofvertices,1);
+md.initialization.str=0;
+
+%Materials: 
+md.materials=materials('hydro');
+
+%Miscellaneous
+md.miscellaneous.name='test2092';
+
+%Solution parameters
+md.cluster.np=3;
+md.solidearth.settings.reltol=NaN;
+md.solidearth.settings.abstol=1e-3;
+md.solidearth.settings.sealevelloading=0;
+md.solidearth.settings.grdocean=0;
+md.solidearth.settings.isgrd=1;
+md.solidearth.settings.ocean_area_scaling=0;
+md.solidearth.settings.grdmodel=1;
+md.solidearth.settings.timeacc=md.timestepping.time_step;
+md.solidearth.settings.degacc=.1;
+
+%Physics:
+md.transient.issmb=0; 
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.ismasstransport=1;
+md.transient.isslc=1;
+md.solidearth.requested_outputs={'SealevelBarystaticIceLoad'};
+
+% max number of iteration reverted back to 10 (i.e., the original default value)
+md.solidearth.settings.maxiter=10;
+
+%eustatic + selfattraction + elastic + rotation run:
+md.solidearth.settings.selfattraction=1;
+md.solidearth.settings.elastic=1;
+md.solidearth.settings.viscous=1;
+md.solidearth.settings.rotation=1;
+md.solidearth.settings.horiz=0;
+
+md=solve(md,'tr');
+clear m1 m2 m3
+for i=1:length(time1)-1
+m1(i)=md.results.TransientSolution(i).SealevelchangePolarMotionX;
+m2(i)=md.results.TransientSolution(i).SealevelchangePolarMotionY;
+m3(i)=md.results.TransientSolution(i).SealevelchangePolarMotionZ;
+end
+
+%Fields and tolerances to track changes
+field_names={'PolarmotionX','PolarmotionY', 'PolarmotionZ'};
+field_tolerances={1e-13,1e-13,1e-13};
+field_values={m1,m2,m3};
+
+return
+subplot(1,2,1)
+plot(time1(2:end-1),m1(2:end)*180/pi *1e6/md.timestepping.time_step, time1(2:end-1),m2(2:end)*180/pi*1e6/md.timestepping.time_step);
+
+subplot(1,2,2)
+plot(time1(1:end-1),cumsum(m1)*180/pi, time1(1:end-1),cumsum(m2)*180/pi)
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test210.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test210.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test210.js	(revision 27955)
@@ -0,0 +1,51 @@
+//Test Name: SquareShelfTranHO
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs=['default','GroundedArea'];
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', 
+				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', 
+					   'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'];
+field_tolerances=[
+	1e-08,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,
+	1e-08,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06,
+	1e-08,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test210.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test210.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test210.m	(revision 27955)
@@ -0,0 +1,50 @@
+%Test Name: SquareShelfTranHO
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','GroundedArea'};
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', ...
+					   'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={...
+	1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,...
+	1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06,...
+	1e-08,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test210.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test210.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test210.py	(revision 27955)
@@ -0,0 +1,58 @@
+#Test Name: SquareShelfTranHO
+
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 200000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+
+# Fields and tolerances to track changes
+
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Temperature1', 'BasalforcingsGroundediceMeltingRate1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'BasalforcingsGroundediceMeltingRate2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'Temperature3', 'BasalforcingsGroundediceMeltingRate3']
+field_tolerances = [1e-08, 1e-08, 1e-08, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09,
+                    1e-08, 1e-08, 1e-08, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-06,
+                    1e-08, 1e-08, 1e-08, 1e-08, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-05]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2101.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2101.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2101.m	(revision 27955)
@@ -0,0 +1,61 @@
+%Test Name: EarthEsa
+%Elastostatic adjustment for an elemental ice unloading 
+
+%mesh earth: 
+md=model; 
+load ../Data/SlcTestMesh.mat;
+md.mesh=SlcMesh; %700 km resolution mesh
+
+% define load 
+md.esa.deltathickness=zeros(md.mesh.numberofelements,1);
+pos=450;
+md.esa.deltathickness(pos)=-100;   % this is the only "icy" element
+
+%love numbers:
+md.solidearth.lovenumbers=lovenumbers('maxdeg',10000);
+
+%mask:  {{{
+md.mask.ocean_levelset=gmtmask(md.mesh.lat,md.mesh.long); 
+
+%make sure wherever there is an ice load, that the mask is set to ice: 
+md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);
+pos=find(md.esa.deltathickness);
+md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+
+%is ice grounded? 
+md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1);
+pos=find(md.mask.ice_levelset<=0);
+md.mask.ocean_levelset(pos)=1;
+
+% }}}
+%geometry:  {{{
+di=md.materials.rho_ice/md.materials.rho_water;
+md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+md.geometry.surface=(1-di)*zeros(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.surface-md.geometry.thickness;
+md.geometry.bed=md.geometry.base;
+% }}}
+%materials:  {{{
+md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+% }}}
+%Miscellaneous: {{{
+md.miscellaneous.name='test2101';
+% }}}
+
+% solve esa 
+md.esa.requested_outputs = {'EsaUmotion','EsaNmotion','EsaEmotion'};
+md.cluster=generic('name',oshostname(),'np',3); 
+md.verbose=verbose('111111111');
+md=solve(md,'Esa');
+
+%Fields and tolerances to track changes
+field_names     ={'EsaUmotion','EsaNmotion','EsaEmotion'};
+field_tolerances={1e-13,1e-13,2e-13};
+field_values={...
+	(md.results.EsaSolution.EsaUmotion),...
+	(md.results.EsaSolution.EsaNmotion),...
+	(md.results.EsaSolution.EsaEmotion),...
+	};
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2101.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2101.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2101.py	(revision 27955)
@@ -0,0 +1,68 @@
+#Test Name: EarthEsa
+#Elastostatic adjustment for an elemental ice unloading
+import numpy as np
+import pickle
+from socket import gethostname
+from gmtmask import *
+from lovenumbers import *
+from model import *
+from paterson import *
+from solve import *
+
+
+#mesh earth:
+md = model()
+
+# Load precomputed mesh
+with open('../Data/SlcTestMesh.pkl', 'rb') as slc_test_mesh_file:
+    md.mesh = pickle.load(slc_test_mesh_file, encoding='latin1')
+
+#define load
+md.esa.deltathickness = np.zeros((md.mesh.numberofelements, ))
+pos = 449
+md.esa.deltathickness[pos] = -100  # this is the only "icy" element
+
+#love numbers:
+md.solidearth.lovenumbers = lovenumbers('maxdeg', 10000)
+
+#mask:  {{{
+md.mask.ocean_levelset = gmtmask(md.mesh.lat, md.mesh.long)
+
+#make sure wherever there is an ice load, that the mask is set to ice:
+md.mask.ice_levelset = np.ones((md.mesh.numberofvertices, ))
+pos = np.where(md.esa.deltathickness)
+md.mask.ice_levelset[md.mesh.elements[pos, :]] = -1
+
+#is ice grounded?
+md.mask.ocean_levelset = -np.ones((md.mesh.numberofvertices, ))
+pos = np.where(md.mask.ice_levelset <= 0)
+md.mask.ocean_levelset[pos] = 1
+# }}}
+#geometry:  {{{
+di = md.materials.rho_ice / md.materials.rho_water
+md.geometry.thickness = np.ones((md.mesh.numberofvertices, ))
+md.geometry.surface = (1 - di) * np.zeros((md.mesh.numberofvertices, ))
+md.geometry.base = md.geometry.surface - md.geometry.thickness
+md.geometry.bed = md.geometry.base
+# }}}
+#materials:  {{{
+md.initialization.temperature = 273.25 * np.ones((md.mesh.numberofvertices, ))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3 * np.ones((md.mesh.numberofelements, ))
+# }}}
+#Miscellaneous: {{{
+md.miscellaneous.name = 'test2101'
+# }}}
+
+#solve esa
+md.esa.requested_outputs = ['EsaUmotion', 'EsaNmotion', 'EsaEmotion']
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.verbose = verbose('111111111')
+md = solve(md, 'Esa')
+
+#Fields and tolerances to track changes
+field_names = ['EsaUmotion', 'EsaNmotion', 'EsaEmotion']
+field_tolerances = [1e-13, 1e-13, 2e-13]
+field_values = [md.results.EsaSolution.EsaUmotion,
+                md.results.EsaSolution.EsaNmotion,
+                md.results.EsaSolution.EsaEmotion]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test211.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test211.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test211.js	(revision 27955)
@@ -0,0 +1,52 @@
+//Test Name: SquareShelfTranFS
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'FS','all');
+md.stressbalance.reltol=null;
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names=[
+	'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1',
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2',
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'];
+field_tolerances=[
+	2e-08,2e-08,5e-05,2e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,
+	5e-06,5e-06,8e-05,5e-06,5e-07,5e-07,5e-07,5e-07,3e-06,5e-05,
+	8e-06,8e-06,8e-05,8e-06,8e-07,8e-07,8e-07,8e-07,5e-06,8e-05];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test211.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test211.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test211.m	(revision 27955)
@@ -0,0 +1,51 @@
+%Test Name: SquareShelfTranFS
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'FS','all');
+md.stressbalance.reltol=NaN;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={...
+	'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={...
+	2e-08,2e-08,5e-05,2e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,...
+	5e-06,5e-06,8e-05,5e-06,5e-07,5e-07,5e-07,5e-07,3e-06,5e-05,...
+	8e-06,8e-06,8e-05,8e-06,8e-07,8e-07,8e-07,8e-07,5e-06,8e-05};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test211.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test211.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test211.py	(revision 27955)
@@ -0,0 +1,59 @@
+#Test Name: SquareShelfTranFS
+from model import *
+from socket import gethostname
+import numpy as np
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 200000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'FS', 'all')
+md.stressbalance.reltol = np.NaN
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+
+# Fields and tolerances to track changes
+
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Temperature1', 'BasalforcingsGroundediceMeltingRate1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'BasalforcingsGroundediceMeltingRate2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'Temperature3', 'BasalforcingsGroundediceMeltingRate3']
+field_tolerances = [2e-08, 2e-08, 5e-05, 2e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08,
+                    5e-06, 5e-06, 8e-05, 5e-06, 5e-07, 5e-07, 5e-07, 5e-07, 3e-06, 5e-05,
+                    8e-06, 8e-06, 8e-05, 8e-06, 8e-07, 8e-07, 8e-07, 8e-07, 5e-06, 8e-05]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2110.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2110.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2110.m	(revision 27955)
@@ -0,0 +1,68 @@
+%Test Name: Esa2Dsurface
+%Elastostatic adjustment for Wahr problem (Wahr et al., 2013, Fig. 1) 
+
+%mesh earth: 
+md=model;
+md=roundmesh(md,50000,2000);     % radius and element size (meters)
+
+% define load 
+md.esa.deltathickness=zeros(md.mesh.numberofelements,1);
+disc_radius=20; % km
+index=md.mesh.elements;
+x_element=mean(md.mesh.x(index),2);
+y_element=mean(md.mesh.y(index),2);
+rad_dist=sqrt(x_element.^2+y_element.^2)/1000;  % radial distance in km
+md.esa.deltathickness(rad_dist<=disc_radius)=-1;   % 1 m water withdrawl
+
+%love numbers:
+md.solidearth.lovenumbers=lovenumbers('maxdeg',10000);
+
+%mask:  {{{
+	%make sure wherever there is an ice load, that the mask is set to ice: 
+	md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);
+	pos=find(md.esa.deltathickness); md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+
+	%is ice grounded? 
+	md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1);
+	pos=find(md.mask.ice_levelset<=0); md.mask.ocean_levelset(pos)=1; 
+
+% }}}
+%geometry:  {{{
+	di=md.materials.rho_ice/md.materials.rho_water;
+	md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+	md.geometry.surface=(1-di)*zeros(md.mesh.numberofvertices,1);
+	md.geometry.base=md.geometry.surface-md.geometry.thickness;
+	md.geometry.bed=md.geometry.base;
+% }}}
+%materials:  {{{
+	md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1);
+	md.materials.rheology_B=paterson(md.initialization.temperature);
+	md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+% }}}
+%Miscellaneous: {{{
+	md.miscellaneous.name='test2110';
+% }}}
+
+md.esa.degacc=0.01;
+
+% solve esa 
+md.esa.requested_outputs = {'EsaUmotion','EsaXmotion','EsaYmotion',...
+	'EsaStrainratexx','EsaStrainratexy','EsaStrainrateyy','EsaRotationrate'};
+md.cluster=generic('name',oshostname(),'np',3); 
+md.verbose=verbose('111111111');
+md=solve(md,'Esa');
+
+%Fields and tolerances to track changes
+field_names     ={'EsaUmotion','EsaXmotion','EsaYmotion',...
+	'EsaStrainratexx','EsaStrainratexy','EsaStrainrateyy','EsaRotationrate'};
+field_tolerances={1e-13,2e-12,2e-12,9e-12,8e-12,8e-12,3e-11};
+field_values={...
+	(md.results.EsaSolution.EsaUmotion),...
+	(md.results.EsaSolution.EsaXmotion),...
+	(md.results.EsaSolution.EsaYmotion),...
+	(md.results.EsaSolution.EsaStrainratexx),...
+	(md.results.EsaSolution.EsaStrainratexy),...
+	(md.results.EsaSolution.EsaStrainrateyy),...
+	(md.results.EsaSolution.EsaRotationrate),...
+	};
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2110.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2110.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2110.py	(revision 27955)
@@ -0,0 +1,77 @@
+#Test Name: Esa2Dsurface
+#Elastostatic adjustment for an elemental ice unloading
+from socket import gethostname
+
+import numpy as np
+
+from lovenumbers import *
+from model import *
+from paterson import *
+from roundmesh import *
+from solve import *
+
+
+#mesh earth:
+md = model()
+md = roundmesh(md, 50000, 2000)  # radius and element size (meters)
+
+#define load
+md.esa.deltathickness = np.zeros((md.mesh.numberofelements, ))
+disc_radius = 20  # km
+index = md.mesh.elements
+x_element = np.mean(md.mesh.x[index - 1], 1)
+y_element = np.mean(md.mesh.y[index - 1], 1)
+rad_dist = np.sqrt(x_element**2 + y_element**2) / 1000  # radial distance in km
+md.esa.deltathickness[np.where(rad_dist <= disc_radius)] = -1  # 1 m water withdrawl
+
+#love numbers:
+md.solidearth.lovenumbers = lovenumbers('maxdeg', 10000)
+
+#mask:  {{{
+#make sure wherever there is an ice load, that the mask is set to ice:
+md.mask.ice_levelset = np.ones((md.mesh.numberofvertices, ))
+pos = np.where(md.esa.deltathickness)
+md.mask.ice_levelset[md.mesh.elements[pos, :] - 1] = -1
+
+#is ice grounded?
+md.mask.ocean_levelset = -np.ones((md.mesh.numberofvertices, ))
+pos = np.where(md.mask.ice_levelset <= 0)
+md.mask.ocean_levelset[pos] = 1
+
+# }}}
+#geometry:  {{{
+di = md.materials.rho_ice / md.materials.rho_water
+md.geometry.thickness = np.ones((md.mesh.numberofvertices, ))
+md.geometry.surface = (1 - di) * np.zeros((md.mesh.numberofvertices, ))
+md.geometry.base = md.geometry.surface - md.geometry.thickness
+md.geometry.bed = md.geometry.base
+# }}}
+#materials:  {{{
+md.initialization.temperature = 273.25 * np.ones((md.mesh.numberofvertices, ))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3 * np.ones((md.mesh.numberofelements, ))
+# }}}
+#Miscellaneous: {{{
+md.miscellaneous.name = 'test2110'
+# }}}
+
+md.esa.degacc = 0.01
+
+#solve esa
+md.esa.requested_outputs = ['EsaUmotion', 'EsaXmotion', 'EsaYmotion',
+                            'EsaStrainratexx', 'EsaStrainratexy', 'EsaStrainrateyy', 'EsaRotationrate']
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.verbose = verbose('111111111')
+md = solve(md, 'Esa')
+
+#Fields and tolerances to track changes
+field_names = ['EsaUmotion', 'EsaXmotion', 'EsaYmotion',
+               'EsaStrainratexx', 'EsaStrainratexy', 'EsaStrainrateyy', 'EsaRotationrate']
+field_tolerances = [1e-13, 2e-12, 2e-12, 9e-12, 8e-12, 8e-12, 3e-11]
+field_values = [md.results.EsaSolution.EsaUmotion,
+                md.results.EsaSolution.EsaXmotion,
+                md.results.EsaSolution.EsaYmotion,
+                md.results.EsaSolution.EsaStrainratexx,
+                md.results.EsaSolution.EsaStrainratexy,
+                md.results.EsaSolution.EsaStrainrateyy,
+                md.results.EsaSolution.EsaRotationrate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2111.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2111.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2111.m	(revision 27955)
@@ -0,0 +1,67 @@
+%Test Name: Esa2Dsurface
+%AIS -- southern hemisphere example for north-south, east-west components of horiz motion 
+
+%mesh ais: {{{
+md=model();
+md=triangle(md,'../Exp/Ais.exp',200000); % max element size
+% }}}
+%define load: {{{
+md.esa.deltathickness=zeros(md.mesh.numberofelements,1);
+disc_radius=500; % km
+index=md.mesh.elements;
+x_element=mean(md.mesh.x(index),2)-1.0e6;
+y_element=mean(md.mesh.y(index),2)-1.0e6;
+rad_dist=sqrt(x_element.^2+y_element.^2)/1000;  % radial distance in km
+pos=find(rad_dist<=disc_radius);
+md.esa.deltathickness(pos)=-1;   % 1 m water withdrawl
+% }}}
+%read in love numbers:{{{
+md.solidearth.lovenumbers=lovenumbers('maxdeg',10000,'referenceframe','CF');
+% }}}
+%mask:  {{{
+%make sure wherever there is an ice load, that the mask is set to ice: 
+md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);
+pos=find(md.esa.deltathickness);
+md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+
+%is ice grounded? 
+md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1);
+pos=find(md.mask.ice_levelset<=0);
+md.mask.ocean_levelset(pos)=1;
+% }}}
+%geometry:  {{{
+di=md.materials.rho_ice/md.materials.rho_water;
+md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+md.geometry.surface=(1-di)*zeros(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.surface-md.geometry.thickness;
+md.geometry.bed=md.geometry.base;
+% }}}
+%materials:  {{{
+md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+% }}}
+%additional parameters, miscellaneous: {{{
+md.miscellaneous.name='test2111';
+md.esa.degacc=0.01;
+md.esa.hemisphere = -1; 
+% }}}
+
+%solve esa: {{{
+md.esa.requested_outputs = {'EsaUmotion','EsaNmotion','EsaEmotion','EsaXmotion','EsaYmotion'}; 
+md.cluster=generic('name',oshostname(),'np',3); 
+md.verbose=verbose('111111111');
+md=solve(md,'Esa');
+% }}}
+%fields and tolerances to track changes {{{
+field_names     ={'EsaUmotion','EsaNmotion','EsaEmotion','EsaXmotion','EsaYmotion'}; 
+field_tolerances={1e-13,3e-13,3e-13,2e-13,3e-13};
+field_values={...
+	(md.results.EsaSolution.EsaUmotion),...
+	(md.results.EsaSolution.EsaNmotion),...
+	(md.results.EsaSolution.EsaEmotion),...
+	(md.results.EsaSolution.EsaXmotion),...
+	(md.results.EsaSolution.EsaYmotion),...
+	};
+% }}} 
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2111.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2111.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2111.py	(revision 27955)
@@ -0,0 +1,74 @@
+#Test Name: Esa2Dsurface
+#AIS - -     southern hemisphere example for north - south, east - west components of horiz motion
+from socket import gethostname
+
+import numpy as np
+
+from lovenumbers import *
+from model import *
+from paterson import *
+from roundmesh import *
+from solve import *
+
+
+#mesh ais: {{{
+md = model()
+md = triangle(md, '../Exp/Ais.exp', 200000)  # max element size
+# }}}
+#define load: {{{
+md.esa.deltathickness = np.zeros((md.mesh.numberofelements, 1))
+disc_radius = 500  # km
+index = md.mesh.elements
+x_element = md.mesh.x[index - 1].mean(axis=1) - 1.0e6
+y_element = md.mesh.y[index - 1].mean(axis=1) - 1.0e6
+rad_dist = np.sqrt(x_element**2 + y_element**2) / 1000  # radial distance in km
+pos = np.where(rad_dist <= disc_radius)[0]
+md.esa.deltathickness[pos] = -1  # 1 m water withdrawl
+# }}}
+#love numbers: {{{
+md.solidearth.lovenumbers = lovenumbers('maxdeg', 10000, 'referenceframe', 'CF')
+# }}}
+#mask:  {{{
+#make sure wherever there is an ice load, that the mask is set to ice:
+md.mask.ice_levelset = np.ones((md.mesh.numberofvertices, 1))
+pos = np.where(md.esa.deltathickness)[0]
+md.mask.ice_levelset[md.mesh.elements[pos, :]] = -1
+
+#is ice grounded?
+md.mask.ocean_levelset = -np.ones((md.mesh.numberofvertices, 1))
+pos = np.where(md.mask.ice_levelset <= 0)[0]
+md.mask.ocean_levelset[pos] = 1
+# }}}
+#geometry:  {{{
+di = md.materials.rho_ice / md.materials.rho_water
+md.geometry.thickness = np.ones((md.mesh.numberofvertices, 1))
+md.geometry.surface = (1 - di) * np.zeros((md.mesh.numberofvertices, 1))
+md.geometry.base = md.geometry.surface - md.geometry.thickness
+md.geometry.bed = md.geometry.base
+# }}}
+#materials:  {{{
+md.initialization.temperature = 273.25 * np.ones((md.mesh.numberofvertices, 1))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3 * np.ones((md.mesh.numberofelements, 1))
+# }}}
+#additional parameters, miscellaneous: {{{
+md.miscellaneous.name = 'test2111'
+md.esa.degacc = 0.01
+md.esa.hemisphere = -1
+# }}}
+
+#solve esa: {{{
+md.esa.requested_outputs = ['EsaUmotion', 'EsaNmotion', 'EsaEmotion', 'EsaXmotion', 'EsaYmotion']
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.verbose = verbose('111111111')
+md = solve(md, 'Esa')
+# }}}
+#Fields and tolerances to track changes: {{{
+field_names = ['EsaUmotion', 'EsaNmotion', 'EsaEmotion', 'EsaXmotion', 'EsaYmotion']
+field_tolerances = [1e-13, 3e-13, 3e-13, 2e-13, 3e-13]
+field_values = [md.results.EsaSolution.EsaUmotion,
+                md.results.EsaSolution.EsaNmotion,
+                md.results.EsaSolution.EsaEmotion,
+                md.results.EsaSolution.EsaXmotion,
+                md.results.EsaSolution.EsaYmotion]
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2112.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2112.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2112.m	(revision 27955)
@@ -0,0 +1,65 @@
+%Test Name: Esa2Dsurface
+%AIS 2 -- load centered at the south pole! 
+
+%mesh ais: {{{
+md=model();
+md=triangle(md,'../Exp/Ais.exp',100000); % max element size
+% }}}
+%define load: {{{
+md.esa.deltathickness=zeros(md.mesh.numberofelements,1);
+disc_radius=500; % km
+index=md.mesh.elements;
+x_element=mean(md.mesh.x(index),2); 
+y_element=mean(md.mesh.y(index),2); 
+rad_dist=sqrt(x_element.^2+y_element.^2)/1000;  % radial distance in km
+pos=find(rad_dist<=disc_radius);
+md.esa.deltathickness(pos)=-1;   % 1 m water withdrawl
+% }}}
+%read in love numbers:{{{
+md.solidearth.lovenumbers=lovenumbers('maxdeg',10000,'referenceframe','CF');
+% }}}
+%mask:  {{{
+%make sure wherever there is an ice load, that the mask is set to ice: 
+md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);
+pos=find(md.esa.deltathickness); md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+
+%is ice grounded? 
+md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1);
+pos=find(md.mask.ice_levelset<=0); md.mask.ocean_levelset(pos)=1; 
+% }}}
+%geometry:  {{{
+di=md.materials.rho_ice/md.materials.rho_water;
+md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+md.geometry.surface=(1-di)*zeros(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.surface-md.geometry.thickness;
+md.geometry.bed=md.geometry.base;
+% }}}
+%materials:  {{{
+md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+% }}}
+%additional parameters, miscellaneous: {{{
+md.miscellaneous.name='test2112';
+md.esa.degacc=0.01;
+md.esa.hemisphere = -1; 
+% }}}
+
+%solve esa: {{{
+md.esa.requested_outputs = {'EsaUmotion','EsaNmotion','EsaEmotion','EsaXmotion','EsaYmotion'}; 
+md.cluster=generic('name',oshostname(),'np',3); 
+md.verbose=verbose('111111111');
+md=solve(md,'Esa');
+% }}}
+%fields and tolerances to track changes {{{
+field_names     ={'EsaUmotion','EsaNmotion','EsaEmotion','EsaXmotion','EsaYmotion'}; 
+field_tolerances={1e-13,4e-13,3e-12,3e-13,3e-13};
+field_values={...
+	(md.results.EsaSolution.EsaUmotion),...
+	(md.results.EsaSolution.EsaNmotion),...
+	(md.results.EsaSolution.EsaEmotion),...
+	(md.results.EsaSolution.EsaXmotion),...
+	(md.results.EsaSolution.EsaYmotion),...
+	};
+% }}} 
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2112.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2112.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2112.py	(revision 27955)
@@ -0,0 +1,74 @@
+#Test Name: Esa2Dsurface
+#AIS 2 - -     load centered at the south pole!
+from socket import gethostname
+
+import numpy as np
+
+from lovenumbers import *
+from model import *
+from paterson import *
+from roundmesh import *
+from solve import *
+
+
+#mesh ais: {{{
+md = model()
+md = triangle(md, '../Exp/Ais.exp', 100000)  # max element size
+# }}}
+#define load: {{{
+md.esa.deltathickness = np.zeros((md.mesh.numberofelements, ))
+disc_radius = 500  # km
+index = md.mesh.elements
+x_element = md.mesh.x[index - 1].mean(axis=1)
+y_element = md.mesh.y[index - 1].mean(axis=1)
+rad_dist = np.sqrt(x_element**2 + y_element**2) / 1000  # radial distance in km
+pos = np.where(rad_dist <= disc_radius)[0]
+md.esa.deltathickness[pos] = -1  # 1 m water withdrawl
+# }}}
+#love numbers: {{{
+md.solidearth.lovenumbers = lovenumbers('maxdeg', 10000, 'referenceframe', 'CF')
+# }}}
+#mask:  {{{
+#make sure wherever there is an ice load, that the mask is set to ice:
+md.mask.ice_levelset = np.ones((md.mesh.numberofvertices, 1))
+pos = np.nonzero(md.esa.deltathickness)[0]
+md.mask.ice_levelset[md.mesh.elements[pos, :]] = -1
+
+#is ice grounded?
+md.mask.ocean_levelset = -np.ones((md.mesh.numberofvertices, 1))
+pos = np.where(md.mask.ice_levelset <= 0)[0]
+md.mask.ocean_levelset[pos] = 1
+# }}}
+#geometry:  {{{
+di = md.materials.rho_ice / md.materials.rho_water
+md.geometry.thickness = np.ones((md.mesh.numberofvertices, 1))
+md.geometry.surface = (1 - di) * np.zeros((md.mesh.numberofvertices, 1))
+md.geometry.base = md.geometry.surface - md.geometry.thickness
+md.geometry.bed = md.geometry.base
+# }}}
+#materials:  {{{
+md.initialization.temperature = 273.25 * np.ones((md.mesh.numberofvertices, 1))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3 * np.ones((md.mesh.numberofelements, 1))
+# }}}
+#additional parameters, miscellaneous: {{{
+md.miscellaneous.name = 'test2112'
+md.esa.degacc = 0.01
+md.esa.hemisphere = -1
+# }}}
+
+#solve esa: {{{
+md.esa.requested_outputs = ['EsaUmotion', 'EsaNmotion', 'EsaEmotion', 'EsaXmotion', 'EsaYmotion']
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.verbose = verbose('111111111')
+md = solve(md, 'Esa')
+# }}}
+#Fields and tolerances to track changes: {{{
+field_names = ['EsaUmotion', 'EsaNmotion', 'EsaEmotion', 'EsaXmotion', 'EsaYmotion']
+field_tolerances = [1e-13, 4e-13, 3e-12, 3e-13, 3e-13]
+field_values = [md.results.EsaSolution.EsaUmotion,
+                md.results.EsaSolution.EsaNmotion,
+                md.results.EsaSolution.EsaEmotion,
+                md.results.EsaSolution.EsaXmotion,
+                md.results.EsaSolution.EsaYmotion]
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2113.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2113.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2113.m	(revision 27955)
@@ -0,0 +1,64 @@
+%Test Name: Esa2Dsurface
+%Northern hemisphere example for north-south, east-west components of horiz motion 
+%Same as test2111.m except that AIS is assumed to have located in Northern Hemisphere 
+
+%mesh ais: {{{
+md=model();
+md=triangle(md,'../Exp/Ais.exp',200000); % max element size
+% }}}
+%define load: {{{
+md.esa.deltathickness=zeros(md.mesh.numberofelements,1);
+disc_radius=500; % km
+index=md.mesh.elements;
+x_element=mean(md.mesh.x(index),2)-1.0e6;
+y_element=mean(md.mesh.y(index),2)+1.0e6;
+rad_dist=sqrt(x_element.^2+y_element.^2)/1000;  % radial distance in km
+pos=find(rad_dist<=disc_radius);
+md.esa.deltathickness(pos)=-1;   % 1 m water withdrawl
+% }}}
+%read in love numbers:{{{
+md.solidearth.lovenumbers=lovenumbers('maxdeg',10000,'referenceframe','CF');
+% }}}
+%mask:  {{{
+%make sure wherever there is an ice load, that the mask is set to ice: 
+md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);
+pos=find(md.esa.deltathickness); md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+
+%is ice grounded? 
+md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1);
+pos=find(md.mask.ice_levelset<=0); md.mask.ocean_levelset(pos)=1; 
+% }}}
+%geometry:  {{{
+di=md.materials.rho_ice/md.materials.rho_water;
+md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+md.geometry.surface=(1-di)*zeros(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.surface-md.geometry.thickness;
+md.geometry.bed=md.geometry.base;
+% }}}
+%materials:  {{{
+md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+% }}}
+%additional parameters, miscellaneous: {{{
+md.miscellaneous.name='test2113';
+md.esa.degacc=0.01;
+md.esa.hemisphere = 1; % AIS is placed in Northern Hemisphere 
+% }}}
+
+%solve esa: {{{
+md.esa.requested_outputs = {'EsaUmotion','EsaNmotion','EsaEmotion'}; 
+md.cluster=generic('name',oshostname(),'np',3); 
+md.verbose=verbose('111111111');
+md=solve(md,'Esa');
+% }}}
+%fields and tolerances to track changes {{{
+field_names     ={'EsaUmotion','EsaNmotion','EsaEmotion'}; 
+field_tolerances={1e-13,2e-13,2e-13};
+field_values={...
+	(md.results.EsaSolution.EsaUmotion),...
+	(md.results.EsaSolution.EsaNmotion),...
+	(md.results.EsaSolution.EsaEmotion),...
+	};
+% }}} 
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2113.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2113.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2113.py	(revision 27955)
@@ -0,0 +1,73 @@
+#Test Name: Esa2Dsurface
+#Northern hemisphere example for north - south, east - west components of horiz motion
+#Same as test2111.m except that AIS is assumed to have located in Northern Hemisphere
+from socket import gethostname
+
+import numpy as np
+
+from lovenumbers import *
+from model import *
+from paterson import *
+from roundmesh import *
+from solve import *
+
+
+#mesh ais: {{{
+md = model()
+md = triangle(md, '../Exp/Ais.exp', 200000)  # max element size
+# }}}
+#define load: {{{
+md.esa.deltathickness = np.zeros((md.mesh.numberofelements, 1))
+disc_radius = 500  # km
+index = md.mesh.elements
+x_element = np.mean(md.mesh.x[index - 1], 1) - 1.0e6
+y_element = np.mean(md.mesh.y[index - 1], 1) + 1.0e6
+rad_dist = np.sqrt(x_element**2 + y_element**2) / 1000  # radial distance in km
+pos = np.where(rad_dist <= disc_radius)[0]
+md.esa.deltathickness[pos] = -1  # 1 m water withdrawl
+# }}}
+#love numbers: {{{
+md.solidearth.lovenumbers = lovenumbers('maxdeg', 10000, 'referenceframe', 'CF')
+# }}}
+#mask:  {{{
+#make sure wherever there is an ice load, that the mask is set to ice:
+md.mask.ice_levelset = np.ones((md.mesh.numberofvertices, 1))
+pos = np.nonzero(md.esa.deltathickness)[0]
+md.mask.ice_levelset[md.mesh.elements[pos, :]] = -1
+
+#is ice grounded?
+md.mask.ocean_levelset = -np.ones((md.mesh.numberofvertices, 1))
+pos = np.where(md.mask.ice_levelset <= 0)[0]
+md.mask.ocean_levelset[pos] = 1
+# }}}
+#geometry:  {{{
+di = md.materials.rho_ice / md.materials.rho_water
+md.geometry.thickness = np.ones((md.mesh.numberofvertices, 1))
+md.geometry.surface = (1 - di) * np.zeros((md.mesh.numberofvertices, 1))
+md.geometry.base = md.geometry.surface - md.geometry.thickness
+md.geometry.bed = md.geometry.base
+# }}}
+#materials:  {{{
+md.initialization.temperature = 273.25 * np.ones((md.mesh.numberofvertices, 1))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3 * np.ones((md.mesh.numberofelements, 1))
+# }}}
+#additional parameters, miscellaneous: {{{
+md.miscellaneous.name = 'test2113'
+md.esa.degacc = 0.01
+md.esa.hemisphere = 1  # AIS is placed in Northern Hemisphere
+# }}}
+
+#solve esa: {{{
+md.esa.requested_outputs = ['EsaUmotion', 'EsaNmotion', 'EsaEmotion']
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.verbose = verbose('111111111')
+md = solve(md, 'Esa')
+# }}}
+#Fields and tolerances to track changes: {{{
+field_names = ['EsaUmotion', 'EsaNmotion', 'EsaEmotion']
+field_tolerances = [1e-13, 2e-13, 2e-13]
+field_values = [md.results.EsaSolution.EsaUmotion,
+                md.results.EsaSolution.EsaNmotion,
+                md.results.EsaSolution.EsaEmotion]
+# }}}
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test212.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test212.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test212.js	(revision 27955)
@@ -0,0 +1,36 @@
+//Test Name: SquareShelfCMBSSA2d
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+
+//control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters=['MaterialsRheologyBbar'];
+md.inversion.min_parameters=Math.pow(10,6)*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2*Math.pow(10,9)*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=Math.pow(10,7)*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+md.verbose.control=true;
+
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.StressbalanceSolution[0].Gradient1),
+	(md.results.StressbalanceSolution[0].J),
+	(md.results.StressbalanceSolution[0].MaterialsRheologyBbar),
+	(md.results.StressbalanceSolution[0].Pressure),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy)
+];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test212.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test212.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test212.m	(revision 27955)
@@ -0,0 +1,35 @@
+%Test Name: SquareShelfCMBSSA2d
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'MaterialsRheologyBbar'};
+md.inversion.min_parameters=10^6*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2*10^9*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=10^7*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+md.verbose.control=true;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.MaterialsRheologyBbar),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test212.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test212.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test212.py	(revision 27955)
@@ -0,0 +1,47 @@
+#Test Name: SquareShelfCMBSSA2d
+from model import *
+from socket import gethostname
+import numpy as np
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 200000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+
+# control parameters
+
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['MaterialsRheologyBbar']
+md.inversion.min_parameters = 1.0e6 * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = 2.0e9 * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.nsteps = 2
+md.inversion.cost_functions = [101]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, len(md.inversion.cost_functions)))
+md.inversion.gradient_scaling = 1.0e7 * np.ones((md.inversion.nsteps, len(md.inversion.control_parameters)))
+md.inversion.maxiter_per_step = 2. * np.ones((md.inversion.nsteps))
+md.inversion.step_threshold = 0.3 * np.ones((md.inversion.nsteps))
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs = md.initialization.vy
+
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+
+# Fields and tolerances to track changes
+
+field_names = ['Gradient', 'Misfits', 'MaterialsRheologyBbar', 'Pressure', 'Vel', 'Vx', 'Vy']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Gradient1,
+                md.results.StressbalanceSolution.J,
+                md.results.StressbalanceSolution.MaterialsRheologyBbar,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test213.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test213.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test213.js	(revision 27955)
@@ -0,0 +1,39 @@
+//Test Name: SquareShelfCMBSSA3d
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+
+//control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters=['MaterialsRheologyBbar'];
+md.inversion.min_parameters=Math.pow(10,6)*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2*Math.pow(10,9)*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=Math.pow(10,7)*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.verbose.control=true;
+md.verbose.solution=true;
+
+//md.cluster=generic('name',oshostname(),'np',1);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.StressbalanceSolution[0].Gradient1),
+	md.results.StressbalanceSolution[0].J,
+	(md.results.StressbalanceSolution[0].MaterialsRheologyBbar),
+	(md.results.StressbalanceSolution[0].Pressure),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy)
+];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test213.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test213.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test213.m	(revision 27955)
@@ -0,0 +1,38 @@
+%Test Name: SquareShelfCMBSSA3d
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'MaterialsRheologyBbar'};
+md.inversion.min_parameters=10^6*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2*10^9*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=10^7*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.verbose.control=true;
+md.verbose.solution=true;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	md.results.StressbalanceSolution.J,...
+	(md.results.StressbalanceSolution.MaterialsRheologyBbar),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test213.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test213.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test213.py	(revision 27955)
@@ -0,0 +1,46 @@
+#Test Name: SquareShelfCMBSSA3d
+from model import *
+from socket import gethostname
+import numpy as np
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 200000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+
+
+# control parameters
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['MaterialsRheologyBbar']
+md.inversion.min_parameters = 10**6 * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = 2. * 10**9 * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.nsteps = 2
+md.inversion.cost_functions = [101]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, len(md.inversion.cost_functions)))
+md.inversion.gradient_scaling = 10**7 * np.ones((md.inversion.nsteps, len(md.inversion.control_parameters)))
+md.inversion.maxiter_per_step = 2. * np.ones((md.inversion.nsteps))
+md.inversion.step_threshold = 0.3 * np.ones((md.inversion.nsteps))
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs = md.initialization.vy
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+# Fields and tolerances to track changes
+
+field_names = ['Gradient', 'Misfits', 'MaterialsRheologyBbar', 'Pressure', 'Vel', 'Vx', 'Vy']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Gradient1,
+                md.results.StressbalanceSolution.J,
+                md.results.StressbalanceSolution.MaterialsRheologyBbar,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test214.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test214.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test214.js	(revision 27955)
@@ -0,0 +1,36 @@
+//Test Name: SquareShelfCMBHO
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+
+//control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters=['MaterialsRheologyBbar'];
+md.inversion.min_parameters=Math.pow(10,6)*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2*Math.pow(10,9)*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=Math.pow(10,7)*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy'];
+field_tolerances=[1e-07,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08];
+field_values=[
+	(md.results.StressbalanceSolution[0].Gradient1),
+	(md.results.StressbalanceSolution[0].J),
+	(md.results.StressbalanceSolution[0].MaterialsRheologyBbar),
+	(md.results.StressbalanceSolution[0].Pressure),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy)
+];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test214.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test214.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test214.m	(revision 27955)
@@ -0,0 +1,35 @@
+%Test Name: SquareShelfCMBHO
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'MaterialsRheologyBbar'};
+md.inversion.min_parameters=10^6*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2*10^9*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=10^7*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-07,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.MaterialsRheologyBbar),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test214.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test214.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test214.py	(revision 27955)
@@ -0,0 +1,48 @@
+#Test Name: SquareShelfCMBHO
+
+from model import *
+from socket import gethostname
+import numpy as np
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 200000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+
+
+# control parameters
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['MaterialsRheologyBbar']
+md.inversion.min_parameters = 1e6 * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = 2. * 1e9 * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.nsteps = 2
+md.inversion.cost_functions = [101]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, len(md.inversion.cost_functions)))
+md.inversion.gradient_scaling = 1e7 * np.ones((md.inversion.nsteps, len(md.inversion.control_parameters)))
+md.inversion.maxiter_per_step = 2. * np.ones((md.inversion.nsteps))
+md.inversion.step_threshold = 0.3 * np.ones((md.inversion.nsteps))
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs = md.initialization.vy
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+
+# Fields and tolerances to track changes
+
+field_names = ['Gradient', 'Misfits', 'MaterialsRheologyBbar', 'Pressure', 'Vel', 'Vx', 'Vy']
+field_tolerances = [1e-07, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08]
+field_values = [md.results.StressbalanceSolution.Gradient1,
+                md.results.StressbalanceSolution.J,
+                md.results.StressbalanceSolution.MaterialsRheologyBbar,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test215.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test215.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test215.js	(revision 27955)
@@ -0,0 +1,37 @@
+//Test Name: SquareShelfCMBFS
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'FS','all');
+md.settings.solver_residue_threshold = 1.e-4;
+
+//control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters=['MaterialsRheologyBbar'];
+md.inversion.min_parameters=Math.pow(10,6)*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2*Math.pow(10,9)*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coeffecients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=Math.pow(10,7)*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy'];
+field_tolerances=[4.6e-08,1e-08,2e-08,1e-09,2e-09,2e-08,2e-08];
+field_values=[
+	(md.results.StressbalanceSolution[0].Gradient1),
+	(md.results.StressbalanceSolution[0].J),
+	(md.results.StressbalanceSolution[0].MaterialsRheologyBbar),
+	(md.results.StressbalanceSolution[0].Pressure),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy)
+];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test215.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test215.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test215.m	(revision 27955)
@@ -0,0 +1,36 @@
+%Test Name: SquareShelfCMBFS
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'FS','all');
+md.settings.solver_residue_threshold = 1.e-4;
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'MaterialsRheologyBbar'};
+md.inversion.min_parameters=10^6*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2*10^9*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=10^7*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy'};
+field_tolerances={4.6e-08,1e-08,2e-08,2e-09,3e-09,2e-08,2e-08};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.MaterialsRheologyBbar),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test215.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test215.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test215.py	(revision 27955)
@@ -0,0 +1,45 @@
+#Test Name: SquareShelfCMBFS
+from model import *
+from socket import gethostname
+import numpy as np
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 200000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'FS', 'all')
+md.settings.solver_residue_threshold = 1.e-4
+
+# control parameters
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['MaterialsRheologyBbar']
+md.inversion.min_parameters = 1e6 * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = 2e9 * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.nsteps = 2
+md.inversion.cost_functions = [101]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, len(md.inversion.cost_functions)))
+md.inversion.gradient_scaling = 1e7 * np.ones((md.inversion.nsteps, len(md.inversion.control_parameters)))
+md.inversion.maxiter_per_step = 2. * np.ones((md.inversion.nsteps))
+md.inversion.step_threshold = 0.3 * np.ones((md.inversion.nsteps))
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs = md.initialization.vy
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+# Fields and tolerances to track changes
+field_names = ['Gradient', 'Misfits', 'MaterialsRheologyBbar', 'Pressure', 'Vel', 'Vx', 'Vy']
+field_tolerances = [4.6e-08, 1e-08, 2e-08, 2e-09, 3e-09, 2e-08, 2e-08]
+field_values = [md.results.StressbalanceSolution.Gradient1,
+                md.results.StressbalanceSolution.J,
+                md.results.StressbalanceSolution.MaterialsRheologyBbar,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test216.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test216.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test216.js	(revision 27955)
@@ -0,0 +1,26 @@
+//Test Name: SquareShelfStressSSA2dRift
+var md = new model();
+triangle(md,rifts[0],50000.);
+meshprocessrifts(md,'../Exp/Square.exp');
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+//rift settings
+md.rifts.riftstruct.fill='Melange';
+md.rifts.riftstruct.fraction=0;
+md.stressbalance.rift_penalty_lock=2;
+md.stressbalance.rift_penalty_threshold=0;
+md.rifts.riftstruct.fractionincrement=.1;
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vel','Pressure'];
+field_tolerances=[9e-7,7e-8,9e-8,2e-11];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test216.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test216.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test216.m	(revision 27955)
@@ -0,0 +1,25 @@
+%Test Name: SquareShelfStressSSA2dRift
+md=triangle(model(),'../Exp/SquareHole.exp','../Exp/Rifts.exp',50000.);
+md=meshprocessrifts(md,'../Exp/Square.exp');
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf2.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%rift settings
+md.rifts.riftstruct.fill='Melange';
+md.rifts.riftstruct.fraction=0;
+md.stressbalance.rift_penalty_lock=2;
+md.stressbalance.rift_penalty_threshold=0;
+md.rifts.riftstruct.fractionincrement=.1;
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={9e-7,7e-8,9e-8,2e-11};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test216.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test216.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test216.py	(revision 27955)
@@ -0,0 +1,36 @@
+#Test Name: SquareShelfStressSSA2dRift
+
+from model import *
+from socket import gethostname
+from triangle import *
+from meshprocessrifts import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md = triangle(model(), '../Exp/SquareHole.exp', '../Exp/Rifts.exp', 50000.)
+md = meshprocessrifts(md, '../Exp/Square.exp')
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf2.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+# rift settings
+
+md.rifts.riftstruct[0]['fill'] = 'Melange'
+md.rifts.riftstruct[0]['fraction'] = 0
+md.stressbalance.rift_penalty_lock = 2
+md.stressbalance.rift_penalty_threshold = 0
+md.rifts.riftstruct[0]['fractionincrement'] = 0.1
+md = solve(md, 'Stressbalance')
+
+# Fields and tolerances to track changes
+
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure']
+field_tolerances = [9e-7, 7e-8, 9e-8, 2e-11]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test217.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test217.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test217.js	(revision 27955)
@@ -0,0 +1,96 @@
+//Test Name: SquareShelfConstrained
+var md = new model();
+function zeros(...args) {
+	var array = [];
+	for (var i = 0; i < args[0]; ++i) {
+		array.push(args.length == 1 ? 0 : zeros(args.slice(1)));
+	}
+	return array;
+}
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+//redo the parameter file for this special shelf. 
+//constant thickness, constrained (vy=0) flow into an icefront, 
+//from 0 m/yr at the grounding line.
+
+//tighten
+md.stressbalance.restol=Math.pow(10,-4);
+
+//needed later
+ymin=Math.min.apply(null, md.mesh.y);
+ymax=Math.max.apply(null, md.mesh.y);
+xmin=Math.min.apply(null, md.mesh.x);
+xmax=Math.max.apply(null, md.mesh.x);
+
+di=md.materials.rho_ice/md.materials.rho_water;
+
+h=1000;
+md.geometry.thickness=h*ones(md.mesh.numberofvertices,1);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+//Initial velocity and pressure
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+//Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+//Boundary conditions:
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+
+//constrain flanks to 0 normal velocity
+pos=[];
+for (var i = 0; i < md.mesh.x.length; ++i) {
+    if (md.mesh.x[i]==xmin || md.mesh.x[i]==xmax) {
+            pos.push(i);
+    };
+}
+
+for (var i = 0; i < pos.length; ++i) {
+    md.stressbalance.spcvx[pos[i]] = 0;
+    md.stressbalance.spcvz[pos[i]] = NaN;
+}
+
+//constrain grounding line to 0 velocity
+pos=[];
+for (var i = 0; i < md.mesh.y.length; ++i) {
+    if (md.mesh.y[i]==ymin) {
+            pos.push(i);
+    };
+}
+for (var i = 0; i < pos.length; ++i) {
+    md.stressbalance.spcvx[pos[i]] = 0;
+    md.stressbalance.spcvy[pos[i]] = 0;
+}
+
+//icefront
+nodeonicefront=zeros(md.mesh.numberofvertices,1);
+for (var i = 0; i < md.mesh.y.length; ++i) {
+    if (md.mesh.y[i]==ymax) {
+        nodeonicefront[i] = 1;
+    }
+}
+md.mask.ice_levelset = nodeonicefront.map(function(x) { return -1 + x; });
+
+md=solve(md,'Stressbalance');
+
+//create analytical solution: strain rate is constant = ((rho_ice*g*h)/4B)Math.pow(,3) (Paterson, 4th Edition, page 292.
+//ey_c=(md.materials.rho_ice*md.constants.g*(1-di)*md.geometry.thickness./(4*md.materials.rheology_B)).Math.pow(,3);
+//vy_c=ey_c.*md.mesh.y*md.constants.yts;
+
+//Fields and tolerances to track changes
+field_names     =['Vy'];
+field_tolerances=[1e-13];
+field_values=[(md.results.StressbalanceSolution[0].Vy)];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test217.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test217.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test217.m	(revision 27955)
@@ -0,0 +1,68 @@
+%Test Name: SquareShelfConstrained
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%redo the parameter file for this special shelf. 
+%constant thickness, constrained (vy=0) flow into an icefront, 
+%from 0 m/yr at the grounding line.
+
+%tighten
+md.stressbalance.restol=10^-4;
+
+%needed later
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+xmin=min(md.mesh.x);
+xmax=max(md.mesh.x);
+
+di=md.materials.rho_ice/md.materials.rho_water;
+
+h=1000;
+md.geometry.thickness=h*ones(md.mesh.numberofvertices,1);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%Initial velocity and pressure
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+%Boundary conditions:
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+
+%constrain flanks to 0 normal velocity
+pos=find(md.mesh.x==xmin | md.mesh.x==xmax);
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvz(pos)=NaN;
+
+%constrain grounding line to 0 velocity
+pos=find(md.mesh.y==ymin);
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvy(pos)=0;
+
+%icefront
+nodeonicefront=zeros(md.mesh.numberofvertices,1);
+pos=find(md.mesh.y==ymax); nodeonicefront(pos)=1;
+md.mask.ice_levelset=-1+nodeonicefront;
+
+md=solve(md,'Stressbalance');
+
+%create analytical solution: strain rate is constant = ((rho_ice*g*h)/4B)^3 (Paterson, 4th Edition, page 292.
+%ey_c=(md.materials.rho_ice*md.constants.g*(1-di)*md.geometry.thickness./(4*md.materials.rheology_B)).^3;
+%vy_c=ey_c.*md.mesh.y*md.constants.yts;
+
+%Fields and tolerances to track changes
+field_names     ={'Vy'};
+field_tolerances={1e-13};
+field_values={(md.results.StressbalanceSolution.Vy)};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test217.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test217.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test217.py	(revision 27955)
@@ -0,0 +1,80 @@
+#Test Name: SquareShelfConstrained
+from model import *
+from socket import gethostname
+import numpy as np
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from paterson import *
+from solve import *
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+# redo the parameter file for this special shelf.
+# constant thickness, constrained (vy = 0) flow into an icefront,
+# from 0 m / yr at the grounding line.
+
+# tighten
+md.stressbalance.restol = 1e-4
+
+# needed later
+ymin = min(md.mesh.y)
+ymax = max(md.mesh.y)
+xmin = min(md.mesh.x)
+xmax = max(md.mesh.x)
+
+di = md.materials.rho_ice / md.materials.rho_water
+
+h = 1000.
+md.geometry.thickness = h * np.ones((md.mesh.numberofvertices))
+md.geometry.base = -md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+# Initial velocity and pressure
+md.initialization.vx = np.zeros((md.mesh.numberofvertices))
+md.initialization.vy = np.zeros((md.mesh.numberofvertices))
+md.initialization.vz = np.zeros((md.mesh.numberofvertices))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices))
+
+# Materials
+md.initialization.temperature = (273. - 20.) * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
+
+# Boundary conditions:
+md.stressbalance.spcvx = np.nan * np.ones((md.mesh.numberofvertices))
+md.stressbalance.spcvy = np.nan * np.ones((md.mesh.numberofvertices))
+md.stressbalance.spcvz = np.nan * np.ones((md.mesh.numberofvertices))
+
+# constrain flanks to 0 normal velocity
+pos = np.where(np.logical_or(md.mesh.x == xmin, md.mesh.x == xmax))
+md.stressbalance.spcvx[pos] = 0
+md.stressbalance.spcvz[pos] = np.nan
+
+# constrain grounding line to 0 velocity
+pos = np.where(md.mesh.y == ymin)
+md.stressbalance.spcvx[pos] = 0
+md.stressbalance.spcvy[pos] = 0
+
+# icefront
+nodeonicefront = np.zeros(md.mesh.numberofvertices)
+pos = np.where(md.mesh.y == ymax)
+nodeonicefront[pos] = 1
+md.mask.ice_levelset = -1 + nodeonicefront
+
+md = solve(md, 'Stressbalance')
+
+# create analytical solution: strain rate is constant = ((rho_ice * g * h) / 4B)^3 (Paterson, 4th Edition, page 292.
+# ey_c=(md.materials.rho_ice * md.constants.g * (1 - di) * md.geometry.thickness. / (4 * md.materials.rheology_B)).^3
+# vy_c = ey_c. * md.mesh.y * md.constants.yts
+
+# Fields and tolerances to track changes
+field_names = ['Vy']
+field_tolerances = [1e-13]
+field_values = [md.results.StressbalanceSolution.Vy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test218.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test218.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test218.js	(revision 27955)
@@ -0,0 +1,114 @@
+//Test Name: SquareShelfConstrainedDakotaB
+var md = new model();
+function zeros(...args) {
+	var array = [];
+	for (var i = 0; i < args[0]; ++i) {
+		array.push(args.length == 1 ? 0 : zeros(args.slice(1)));
+	}
+	return array;
+}
+var md = new model();
+squaremesh(model(),1000000,1000000,5,5);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+//redo the parameter file for this special shelf. 
+//constant thickness, constrained (vy=0) flow into an icefront, 
+//from 0 m/yr at the grounding line.
+
+//needed later
+ymin=Math.min.apply(null, md.mesh.y);
+ymax=Math.max.apply(null, md.mesh.y);
+xmin=Math.min.apply(null, md.mesh.x);
+xmax=Math.max.apply(null, md.mesh.x);
+
+di=md.materials.rho_ice/md.materials.rho_water;
+
+h=1000;
+md.geometry.thickness=h*ones(md.mesh.numberofvertices,1);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+//Initial velocity and pressure
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+//Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+//Boundary conditions:
+md.stressbalance.spcvx=null*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=null*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=null*ones(md.mesh.numberofvertices,1);
+
+//constrain flanks to 0 normal velocity
+pos=[];
+for (var i = 0; i < md.mesh.x==xmin | md.mesh.x==xmax.length; ++i) {
+if ((md.mesh.x==xmin | md.mesh.x==xmax[i] !== 0)) {
+		pos.push(i);
+};
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvz(pos)=null;
+
+//constrain grounding line to 0 velocity
+pos=[];
+for (var i = 0; i < md.mesh.y==ymin.length; ++i) {
+if ((md.mesh.y==ymin[i] !== 0)) {
+		pos.push(i);
+};
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvy(pos)=0;
+
+//partitioning
+npart=md.mesh.numberofvertices;
+partitioner(md,'package','linear','npart',npart);
+md.qmu.partition=md.qmu.partition-1;
+
+//Dakota options
+
+//dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version.slice(0,2); version=str2num(version);
+
+//variables
+md.qmu.variables.rheology_B=normal_uncertain('scaled_MaterialsRheologyB',1,.05);
+
+//responses
+md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+//method
+md.qmu.method     =dakota_method('nond_l');
+
+//parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+
+if (version>=6,) {
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+} else {
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+}
+
+//imperative! 
+md.stressbalance.reltol=10^-10; //tighten for qmu analysese
+md.qmu.isdakota=1;
+
+//solve
+md=solve(md,'Stressbalance','overwrite','y');
+
+//Fields and tolerances to track changes
+md.qmu.results=md.results.dakota;
+md.results.dakota.importancefactors=importancefactors(md,'scaled_MaterialsRheologyB','MaxVel');
+field_names     =['importancefactors'];
+field_tolerances=[1e-10];
+field_values=[
+         md.results.dakota.importancefactors,
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test218.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test218.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test218.m	(revision 27955)
@@ -0,0 +1,99 @@
+%Test Name: SquareShelfConstrainedDakotaB
+md=squaremesh(model(),1000000,1000000,5,5);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf2.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%redo the parameter file for this special shelf. 
+%constant thickness, constrained (vy=0) flow into an icefront, 
+%from 0 m/yr at the grounding line.
+
+%needed later
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+xmin=min(md.mesh.x);
+xmax=max(md.mesh.x);
+
+di=md.materials.rho_ice/md.materials.rho_water;
+
+h=1000;
+md.geometry.thickness=h*ones(md.mesh.numberofvertices,1);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%Initial velocity and pressure
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+%Boundary conditions:
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+
+%constrain flanks to 0 normal velocity
+pos=find(md.mesh.x==xmin | md.mesh.x==xmax);
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvz(pos)=NaN;
+
+%constrain grounding line to 0 velocity
+pos=find(md.mesh.y==ymin);
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvy(pos)=0;
+
+%partitioning
+npart=md.mesh.numberofvertices;
+partition=partitioner(md,'package','linear','npart',npart)-1;
+
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%variables
+md.qmu.variables.rheology_B=normal_uncertain('descriptor','scaled_MaterialsRheologyB',...
+	'mean',ones(md.mesh.numberofvertices,1),...
+	'stddev',.05*ones(md.mesh.numberofvertices,1),...
+	'partition',partition);
+
+%responses
+md.qmu.responses.MaxVel=response_function('descriptor','MaxVel');
+
+%method
+md.qmu.method     =dakota_method('nond_l');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+%imperative! 
+md.stressbalance.reltol=10^-10; %tighten for qmu analyses
+md.qmu.isdakota=1;
+
+%solve
+md=solve(md,'Stressbalance','overwrite','y');
+
+%Fields and tolerances to track changes
+md.qmu.results=md.results.dakota;
+md.results.dakota.importancefactors=importancefactors(md,'scaled_MaterialsRheologyB','MaxVel',partition)';
+field_names     ={'importancefactors'};
+field_tolerances={1e-10};
+field_values={...
+         md.results.dakota.importancefactors,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test218.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test218.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test218.py	(revision 27955)
@@ -0,0 +1,125 @@
+#Test Name: SquareShelfConstrainedDakotaB
+import numpy as np
+from model import *
+from socket import gethostname
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from paterson import *
+from solve import *
+from generic import generic
+from squaremesh import *
+from partitioner import *
+from IssmConfig import *
+from importancefactors import *
+
+from normal_uncertain import *
+from response_function import *
+from dakota_method import *
+
+from helpers import *
+
+from verbose import *
+
+md = squaremesh(model(), 1000000, 1000000, 5, 5)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf2.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+#redo the parameter file for this special shelf.
+#constant thickness, constrained (vy = 0) flow into an icefront,
+#from 0 m / yr at the grounding line.
+
+#needed later
+ymin = min(md.mesh.y)
+ymax = max(md.mesh.y)
+xmin = min(md.mesh.x)
+xmax = max(md.mesh.x)
+
+di = md.materials.rho_ice / md.materials.rho_water
+
+h = 1000.
+md.geometry.thickness = h * np.ones((md.mesh.numberofvertices, ))
+md.geometry.base = -md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+#Initial velocity and pressure
+md.initialization.vx = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.vy = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.vz = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices, ))
+
+#Materials
+md.initialization.temperature = (273. - 20.) * np.ones((md.mesh.numberofvertices, ))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements, ))
+
+#Boundary conditions:
+md.stressbalance.spcvx = float('Nan') * np.ones((md.mesh.numberofvertices, ))
+md.stressbalance.spcvy = float('Nan') * np.ones((md.mesh.numberofvertices, ))
+md.stressbalance.spcvz = float('Nan') * np.ones((md.mesh.numberofvertices, ))
+
+#constrain flanks to 0 normal velocity
+pos = np.where((md.mesh.x == xmin) | (md.mesh.x == xmax))
+md.stressbalance.spcvx[pos] = 0.
+md.stressbalance.spcvz[pos] = float('Nan')
+
+#constrain grounding line to 0 velocity
+pos = np.where(md.mesh.y == ymin)
+md.stressbalance.spcvx[pos] = 0.
+md.stressbalance.spcvy[pos] = 0.
+
+#partitioning
+npart = md.mesh.numberofvertices
+partition = partitioner(md, 'package', 'linear', 'npart', npart)[0] - 1
+
+#Dakota options
+
+#dakota version
+version = IssmConfig('_DAKOTA_VERSION_')
+# returns tuple "(u'6.2', )" -> unicode string '6.2', convert to float
+version = float(version[0])
+
+#variables
+md.qmu.variables.rheology_B = normal_uncertain.normal_uncertain(
+	'descriptor', 'scaled_MaterialsRheologyB',
+	'mean', np.ones((npart, 1)),
+	'stddev', .05 * np.ones((npart, 1)),
+	'partition', partition
+	)
+
+#responses
+md.qmu.responses.MaxVel = response_function.response_function('descriptor', 'MaxVel')
+
+#method
+md.qmu.method = dakota_method.dakota_method('nond_l')
+
+#parameters
+md.qmu.params.direct = True
+md.qmu.params.interval_type = 'forward'
+
+if version >= 6:
+    md.qmu.params.analysis_driver = 'matlab'
+    md.qmu.params.evaluation_scheduling = 'master'
+    md.qmu.params.processors_per_evaluation = 2
+else:
+    md.qmu.params.analysis_driver = 'stressbalance'
+    md.qmu.params.evaluation_concurrency = 1
+
+
+#imperative!
+md.stressbalance.reltol = 10**-10  #tighten for qmu analyses
+md.qmu.isdakota = 1
+
+#md.debug.valgrind = True
+#solve
+md.verbose = verbose('000000000')  # this line is recommended
+md = solve(md, 'Stressbalance', 'overwrite', 'y')
+
+#Fields and tolerances to track changes
+md.qmu.results = md.results.dakota
+md.results.dakota.importancefactors = importancefactors(md, 'scaled_MaterialsRheologyB', 'MaxVel', partition).reshape(-1, 1)
+field_names = ['importancefactors']
+field_tolerances = [1e-10]
+field_values = [md.results.dakota.importancefactors]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test219.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test219.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test219.js	(revision 27955)
@@ -0,0 +1,20 @@
+//Test Name: SquareShelfStressSSAHOTiling
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,2.);
+setflowequation(md,'HO','../Exp/SquareHalfRight.exp','fill','SSA');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel','Pressure'];
+field_tolerances=[5e-09,5e-09,5e-09,5e-09,1e-13];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel),
+	(md.results.StressbalanceSolution[0].Pressure),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test219.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test219.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test219.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: SquareShelfStressSSAHOTiling
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','../Exp/SquareHalfRight.exp','fill','SSA');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={5e-09,5e-09,5e-09,5e-09,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test219.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test219.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test219.py	(revision 27955)
@@ -0,0 +1,28 @@
+#Test Name: SquareShelfStressSSAHOTiling
+
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'HO', '../Exp/SquareHalfRight.exp', 'fill', 'SSA')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+# Fields and tolerances to track changes
+
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [5e-09, 5e-09, 5e-09, 5e-09, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test220.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test220.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test220.js	(revision 27955)
@@ -0,0 +1,20 @@
+//Test Name: SquareShelfStressHOFS3dTiling
+var md = new model();
+triangle(md,square[0],120000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,2,1.);
+setflowequation(md,'FS','../Exp/SquareHalfRight.exp','fill','HO');
+//md.cluster=generic('name',oshostname(),'np',3);
+//md.verbose=verbose('all');
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel'];
+field_tolerances=[1e-09,1e-09,5e-06,1e-09];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel)
+];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test220.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test220.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test220.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: SquareShelfStressHOFS3dTiling
+md=triangle(model(),'../Exp/Square.exp',120000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf2.par');
+md=extrude(md,2,1.);
+md=setflowequation(md,'FS','../Exp/SquareHalfRight.exp','fill','HO');
+md.cluster=generic('name',oshostname(),'np',3);
+%md.verbose=verbose('all');
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel'};
+field_tolerances={1e-09,1e-09,5e-06,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel)...
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test220.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test220.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test220.py	(revision 27955)
@@ -0,0 +1,28 @@
+#Test Name: SquareShelfStressHOFS3dTiling
+
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 120000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf2.py')
+md.extrude(2, 1.)
+md = setflowequation(md, 'FS', '../Exp/SquareHalfRight.exp', 'fill', 'HO')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+# Fields and tolerances to track changes
+
+field_names = ['Vx', 'Vy', 'Vz', 'Vel']
+field_tolerances = [1e-09, 1e-09, 5e-06, 1e-09]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel
+]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test221.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test221.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test221.js	(revision 27955)
@@ -0,0 +1,19 @@
+//Test Name: SquareShelfStressSSAFS3dTiling
+var md = new model();
+triangle(md,square[0],120000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,2,1.);
+setflowequation(md,'FS','../Exp/SquareHalfRight.exp','fill','SSA');
+//md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+//Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vz','Vel'];
+field_tolerances=[1e-09,1e-09,5e-06,1e-09];
+field_values=[
+	(md.results.StressbalanceSolution[0].Vx),
+	(md.results.StressbalanceSolution[0].Vy),
+	(md.results.StressbalanceSolution[0].Vz),
+	(md.results.StressbalanceSolution[0].Vel)
+];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test221.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test221.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test221.m	(revision 27955)
@@ -0,0 +1,18 @@
+%Test Name: SquareShelfStressSSAFS3dTiling
+md=triangle(model(),'../Exp/Square.exp',120000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf2.par');
+md=extrude(md,2,1.);
+md=setflowequation(md,'FS','../Exp/SquareHalfRight.exp','fill','SSA');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel'};
+field_tolerances={1e-09,1e-09,5e-06,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test221.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test221.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test221.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: SquareShelfStressSSAFS3dTiling
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 120000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf2.py')
+md.extrude(2, 1.)
+md = setflowequation(md, 'FS', '../Exp/SquareHalfRight.exp', 'fill', 'SSA')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel']
+field_tolerances = [1e-09, 1e-09, 5e-06, 1e-09]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel
+]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test222.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test222.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test222.js	(revision 27955)
@@ -0,0 +1,36 @@
+//Test Name: SquareShelfStressSSA2dTransientIncrHydro
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.hydrostatic_adjustment='Incremental';
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test222.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test222.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test222.m	(revision 27955)
@@ -0,0 +1,35 @@
+%Test Name: SquareShelfStressSSA2dTransientIncrHydro
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.hydrostatic_adjustment='Incremental';
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test222.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test222.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test222.py	(revision 27955)
@@ -0,0 +1,52 @@
+#Test Name: SquareShelfStressSSA2dTransientIncrHydro
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.masstransport.hydrostatic_adjustment = 'Incremental'
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1',
+               'Bed1', 'Surface1', 'Thickness1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2',
+               'Bed2', 'Surface2', 'Thickness2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3',
+               'Bed3', 'Surface3', 'Thickness3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test223.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test223.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test223.js	(revision 27955)
@@ -0,0 +1,37 @@
+//Test Name: SquareShelfStressSSA2dTransientIncrNonHydro
+var md = new model();
+triangle(md,square[0],150000);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+md.geometry.base=md.geometry.base+50; md.geometry.surface=md.geometry.surface+50;
+//md.cluster=generic('name',oshostname(),'np',1);
+md.masstransport.hydrostatic_adjustment='Incremental';
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test223.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test223.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test223.m	(revision 27955)
@@ -0,0 +1,36 @@
+%Test Name: SquareShelfStressSSA2dTransientIncrNonHydro
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.geometry.base=md.geometry.base+50.; md.geometry.surface=md.geometry.surface+50.;
+md.cluster=generic('name',oshostname(),'np',1);
+md.masstransport.hydrostatic_adjustment='Incremental';
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test223.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test223.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test223.py	(revision 27955)
@@ -0,0 +1,54 @@
+#Test Name: SquareShelfStressSSA2dTransientIncrNonHydro
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.geometry.base = md.geometry.base + 50.
+md.geometry.surface = md.geometry.surface + 50.
+md.cluster = generic('name', gethostname(), 'np', 1)
+md.masstransport.hydrostatic_adjustment = 'Incremental'
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1',
+               'Bed1', 'Surface1', 'Thickness1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2',
+               'Bed2', 'Surface2', 'Thickness2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3',
+               'Bed3', 'Surface3', 'Thickness3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test224.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test224.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test224.js	(revision 27955)
@@ -0,0 +1,51 @@
+//Test Name: SquareShelfStressHOTransientIncrHydro
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.hydrostatic_adjustment='Incremental';
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'];
+field_tolerances=[
+	2e-09,2e-09,2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,
+	2e-09,5e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06,
+	2e-09,5e-09,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test224.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test224.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test224.m	(revision 27955)
@@ -0,0 +1,50 @@
+%Test Name: SquareShelfStressHOTransientIncrHydro
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.hydrostatic_adjustment='Incremental';
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={...
+	2e-09,2e-09,2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,...
+	2e-09,5e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06,...
+	2e-09,5e-09,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test224.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test224.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test224.py	(revision 27955)
@@ -0,0 +1,56 @@
+#Test Name: SquareShelfStressHOTransientIncrHydro
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 200000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.masstransport.hydrostatic_adjustment = 'Incremental'
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Temperature1', 'BasalforcingsGroundediceMeltingRate1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'BasalforcingsGroundediceMeltingRate2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'Temperature3', 'BasalforcingsGroundediceMeltingRate3']
+field_tolerances = [2e-09, 2e-09, 2e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09,
+                    2e-09, 5e-09, 1e-08, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-06,
+                    2e-09, 5e-09, 1e-08, 1e-08, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-05]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test225.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test225.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test225.js	(revision 27955)
@@ -0,0 +1,52 @@
+//Test Name: SquareShelfStressHOTransientIncrNonHydro
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.geometry.base=md.geometry.base+50.; md.geometry.surface=md.geometry.surface+50.;
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.hydrostatic_adjustment='Incremental';
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'];
+field_tolerances=[
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,
+	2e-09,1e-09,2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,
+	1e-08,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test225.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test225.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test225.m	(revision 27955)
@@ -0,0 +1,51 @@
+%Test Name: SquareShelfStressHOTransientIncrNonHydro
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md.geometry.base=md.geometry.base+50.; md.geometry.surface=md.geometry.surface+50.;
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.hydrostatic_adjustment='Incremental';
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={...
+	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,...
+	2e-09,1e-09,2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05,...
+	1e-08,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test225.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test225.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test225.py	(revision 27955)
@@ -0,0 +1,58 @@
+#Test Name: SquareShelfStressHOTransientIncrNonHydro
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 200000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.geometry.base = md.geometry.base + 50.
+md.geometry.surface = md.geometry.surface + 50.
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.masstransport.hydrostatic_adjustment = 'Incremental'
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Temperature1', 'BasalforcingsGroundediceMeltingRate1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'BasalforcingsGroundediceMeltingRate2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'Temperature3', 'BasalforcingsGroundediceMeltingRate3']
+field_tolerances = [1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-05,
+                    2e-09, 1e-09, 1e-08, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-05,
+                    1e-08, 1e-08, 1e-08, 1e-08, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-05]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test226.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test226.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test226.js	(revision 27955)
@@ -0,0 +1,37 @@
+//Test Name: SquareShelfTranCflSSA2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping = timesteppingadaptive(md.timestepping);
+md.timestepping.final_time=15.;
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test226.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test226.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test226.m	(revision 27955)
@@ -0,0 +1,36 @@
+%Test Name: SquareShelfTranCflSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping = timesteppingadaptive(md.timestepping);
+md.timestepping.final_time=15.;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test226.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test226.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test226.py	(revision 27955)
@@ -0,0 +1,53 @@
+#Test Name: SquareShelfTranCflSSA2d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.timestepping = timesteppingadaptive(md.timestepping)
+md.timestepping.final_time = 15.
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1',
+               'Bed1', 'Surface1', 'Thickness1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2',
+               'Bed2', 'Surface2', 'Thickness2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3',
+               'Bed3', 'Surface3', 'Thickness3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test227.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test227.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test227.js	(revision 27955)
@@ -0,0 +1,52 @@
+//Test Name: SquareShelfTranCflHO
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping = timesteppingadaptive(md.timestepping);
+md.timestepping.final_time=20.;
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1',
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2',
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'];
+field_tolerances=[
+	1e-08,5e-09,1e-09,5e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,
+	2e-09,5e-09,1e-08,5e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06,
+	1e-08,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test227.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test227.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test227.m	(revision 27955)
@@ -0,0 +1,51 @@
+%Test Name: SquareShelfTranCflHO
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping = timesteppingadaptive(md.timestepping);
+md.timestepping.final_time=20.;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={...
+	1e-08,5e-09,1e-09,5e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,...
+	2e-09,5e-09,1e-08,5e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06,...
+	1e-08,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test227.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test227.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test227.py	(revision 27955)
@@ -0,0 +1,57 @@
+#Test Name: SquareShelfTranCflHO
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 200000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.timestepping = timesteppingadaptive(md.timestepping)
+md.timestepping.final_time = 20.
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Temperature1', 'BasalforcingsGroundediceMeltingRate1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'BasalforcingsGroundediceMeltingRate2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'Temperature3', 'BasalforcingsGroundediceMeltingRate3']
+field_tolerances = [1e-08, 5e-09, 1e-09, 5e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09,
+                    2e-09, 5e-09, 1e-08, 5e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-06,
+                    1e-08, 1e-08, 1e-08, 1e-08, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-05]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test228.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test228.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test228.js	(revision 27955)
@@ -0,0 +1,68 @@
+//Test Name: SquareShelfTranForceNeg2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4.;
+
+//Set up transient
+smb=ones(md.mesh.numberofvertices,1);
+for (var i = 0; i < smb.length; ++i) {
+    smb[i][0] *= 3.6;
+    smb[i].push(smb[i][0]*-1);
+}
+
+md.smb.mass_balance=smb.slice();
+md.smb.mass_balance[md.smb.mass_balance.length-1] = [1.5, 3.];
+md.trans.isthermal=0;
+
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', 
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', 
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', 
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'];
+field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).SmbMassBalance),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).SmbMassBalance),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).SmbMassBalance),
+	(md.results.TransientSolution[0](4).Vx),
+	(md.results.TransientSolution[0](4).Vy),
+	(md.results.TransientSolution[0](4).Vel),
+	(md.results.TransientSolution[0](4).Pressure),
+	(md.results.TransientSolution[0](4).Base),
+	(md.results.TransientSolution[0](4).Surface),
+	(md.results.TransientSolution[0](4).Thickness),
+	(md.results.TransientSolution[0](4).SmbMassBalance),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test228.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test228.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test228.m	(revision 27955)
@@ -0,0 +1,64 @@
+%Test Name: SquareShelfTranForceNeg2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4.;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
+field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test228.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test228.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test228.py	(revision 27955)
@@ -0,0 +1,71 @@
+#Test Name: SquareShelfTranForceNeg2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.timestepping.time_step = 1.
+md.settings.output_frequency = 1
+md.timestepping.final_time = 4
+
+#Set up transient
+smb = np.ones((md.mesh.numberofvertices)) * 3.6
+smb = np.vstack((smb, smb * -1.)).T
+
+md.smb.mass_balance = np.vstack((smb, [1.5, 3.]))
+md.transient.isthermal = False
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'SmbMassBalance3',
+               'Vx4', 'Vy4', 'Vel4', 'Pressure4', 'Bed4', 'Surface4', 'Thickness4', 'SmbMassBalance4']
+field_tolerances = [1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].SmbMassBalance,
+                md.results.TransientSolution[3].Vx,
+                md.results.TransientSolution[3].Vy,
+                md.results.TransientSolution[3].Vel,
+                md.results.TransientSolution[3].Pressure,
+                md.results.TransientSolution[3].Base,
+                md.results.TransientSolution[3].Surface,
+                md.results.TransientSolution[3].Thickness,
+                md.results.TransientSolution[3].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test229.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test229.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test229.js	(revision 27955)
@@ -0,0 +1,68 @@
+//Test Name: SquareShelfTranForcePos2d
+var md = new model();
+triangle(md,square[0],150000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4.;
+
+//Set up transient
+smb=ones(md.mesh.numberofvertices,1);
+for (var i = 0; i < smb.length; ++i) {
+    smb[i][0] *= 3.6;
+    smb[i].push(smb[i][0]*2);
+}
+
+md.smb.mass_balance=smb.slice();
+md.smb.mass_balance[md.smb.mass_balance.length-1] = [1.5, 3.];
+md.trans.isthermal=0;
+
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', 
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', 
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', 
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'];
+field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).SmbMassBalance),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).SmbMassBalance),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).SmbMassBalance),
+	(md.results.TransientSolution[0](4).Vx),
+	(md.results.TransientSolution[0](4).Vy),
+	(md.results.TransientSolution[0](4).Vel),
+	(md.results.TransientSolution[0](4).Pressure),
+	(md.results.TransientSolution[0](4).Base),
+	(md.results.TransientSolution[0](4).Surface),
+	(md.results.TransientSolution[0](4).Thickness),
+	(md.results.TransientSolution[0](4).SmbMassBalance),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test229.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test229.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test229.m	(revision 27955)
@@ -0,0 +1,64 @@
+%Test Name: SquareShelfTranForcePos2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4.;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*2. ];
+
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
+field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test229.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test229.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test229.py	(revision 27955)
@@ -0,0 +1,71 @@
+#Test Name: SquareShelfTranForcePos2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.timestepping.time_step = 1.
+md.settings.output_frequency = 1
+md.timestepping.final_time = 4.
+
+#Set up transient
+smb = np.ones((md.mesh.numberofvertices)) * 3.6
+smb = np.vstack((smb, smb * 2.)).T
+
+md.smb.mass_balance = np.vstack((smb, [1.5, 3.]))
+md.transient.isthermal = False
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'SmbMassBalance3',
+               'Vx4', 'Vy4', 'Vel4', 'Pressure4', 'Bed4', 'Surface4', 'Thickness4', 'SmbMassBalance4']
+field_tolerances = [1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].SmbMassBalance,
+                md.results.TransientSolution[3].Vx,
+                md.results.TransientSolution[3].Vy,
+                md.results.TransientSolution[3].Vel,
+                md.results.TransientSolution[3].Pressure,
+                md.results.TransientSolution[3].Base,
+                md.results.TransientSolution[3].Surface,
+                md.results.TransientSolution[3].Thickness,
+                md.results.TransientSolution[3].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test230.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test230.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test230.js	(revision 27955)
@@ -0,0 +1,73 @@
+//Test Name: SquareShelfTranForceNeg3d
+var md = new model();
+triangle(md,square[0],350000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+//Set up transient
+smb=ones(md.mesh.numberofvertices,1);
+for (var i = 0; i < smb.length; ++i) {
+    smb[i][0] *= 3.6;
+    smb[i].push(smb[i][0]*-1);
+}
+
+md.smb.mass_balance=smb.slice();
+md.smb.mass_balance[md.smb.mass_balance.length-1] = [1.5, 3.];
+md.trans.isthermal=0;
+
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', 
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).SmbMassBalance),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).SmbMassBalance),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).SmbMassBalance),
+	(md.results.TransientSolution[0](4).Vx),
+	(md.results.TransientSolution[0](4).Vy),
+	(md.results.TransientSolution[0](4).Vz),
+	(md.results.TransientSolution[0](4).Vel),
+	(md.results.TransientSolution[0](4).Pressure),
+	(md.results.TransientSolution[0](4).Base),
+	(md.results.TransientSolution[0](4).Surface),
+	(md.results.TransientSolution[0](4).Thickness),
+	(md.results.TransientSolution[0](4).SmbMassBalance),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test230.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test230.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test230.m	(revision 27955)
@@ -0,0 +1,69 @@
+%Test Name: SquareShelfTranForceNeg3d
+md=triangle(model(),'../Exp/Square.exp',350000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vz),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test230.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test230.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test230.py	(revision 27955)
@@ -0,0 +1,76 @@
+#Test Name: SquareShelfTranForceNeg3d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 350000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.timestepping.time_step = 1.
+md.settings.output_frequency = 1
+md.timestepping.final_time = 4.
+
+#Set up transient
+smb = np.ones((md.mesh.numberofvertices)) * 3.6
+smb = np.vstack((smb, smb * -1.)).T
+
+md.smb.mass_balance = np.vstack((smb, [1.5, 3.]))
+md.transient.isthermal = False
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'SmbMassBalance3',
+               'Vx4', 'Vy4', 'Vz4', 'Vel4', 'Pressure4', 'Bed4', 'Surface4', 'Thickness4', 'SmbMassbalance4']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].SmbMassBalance,
+                md.results.TransientSolution[3].Vx,
+                md.results.TransientSolution[3].Vy,
+                md.results.TransientSolution[3].Vz,
+                md.results.TransientSolution[3].Vel,
+                md.results.TransientSolution[3].Pressure,
+                md.results.TransientSolution[3].Base,
+                md.results.TransientSolution[3].Surface,
+                md.results.TransientSolution[3].Thickness,
+                md.results.TransientSolution[3].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test231.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test231.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test231.js	(revision 27955)
@@ -0,0 +1,73 @@
+//Test Name: SquareShelfTranForcePos3d
+var md = new model();
+triangle(md,square[0],350000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+//Set up transient
+smb=ones(md.mesh.numberofvertices,1);
+for (var i = 0; i < smb.length; ++i) {
+    smb[i][0] *= 3.6;
+    smb[i].push(smb[i][0]*2);
+}
+
+md.smb.mass_balance=smb.slice();
+md.smb.mass_balance[md.smb.mass_balance.length-1] = [1.5, 3.];
+md.trans.isthermal=0;
+
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', 
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).SmbMassBalance),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).SmbMassBalance),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).SmbMassBalance),
+	(md.results.TransientSolution[0](4).Vx),
+	(md.results.TransientSolution[0](4).Vy),
+	(md.results.TransientSolution[0](4).Vz),
+	(md.results.TransientSolution[0](4).Vel),
+	(md.results.TransientSolution[0](4).Pressure),
+	(md.results.TransientSolution[0](4).Base),
+	(md.results.TransientSolution[0](4).Surface),
+	(md.results.TransientSolution[0](4).Thickness),
+	(md.results.TransientSolution[0](4).SmbMassBalance),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test231.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test231.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test231.m	(revision 27955)
@@ -0,0 +1,69 @@
+%Test Name: SquareShelfTranForcePos3d
+md=triangle(model(),'../Exp/Square.exp',350000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*2. ];
+
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vz),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test231.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test231.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test231.py	(revision 27955)
@@ -0,0 +1,76 @@
+#Test Name: SquareShelfTranForcePos3d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 350000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.timestepping.time_step = 1.
+md.settings.output_frequency = 1
+md.timestepping.final_time = 4.
+
+#Set up transient
+smb = np.ones((md.mesh.numberofvertices)) * 3.6
+smb = np.vstack((smb, smb * 2.)).T
+
+md.smb.mass_balance = np.vstack((smb, [1.5, 3.]))
+md.transient.isthermal = False
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'SmbMassBalance3',
+               'Vx4', 'Vy4', 'Vz4', 'Vel4', 'Pressure4', 'Bed4', 'Surface4', 'Thickness4', 'SmbMassbalance4']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].SmbMassBalance,
+                md.results.TransientSolution[3].Vx,
+                md.results.TransientSolution[3].Vy,
+                md.results.TransientSolution[3].Vz,
+                md.results.TransientSolution[3].Vel,
+                md.results.TransientSolution[3].Pressure,
+                md.results.TransientSolution[3].Base,
+                md.results.TransientSolution[3].Surface,
+                md.results.TransientSolution[3].Thickness,
+                md.results.TransientSolution[3].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test232.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test232.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test232.js	(revision 27955)
@@ -0,0 +1,31 @@
+//Test Name: SquareShelfTherTranForcTemp
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.thermal.spctemperature=[[md.thermal.spctemperature, md.thermal.spctemperature+5., md.thermal.spctemperature+10., md.thermal.spctemperature+15.], [1.5, 2.5, 3.5, 4.]];
+md.timestepping.time_step=1;
+md.timestepping.final_time=4;
+md.trans.isstressbalance=0;
+md.trans.ismasstransport=0;
+md.trans.issmb=1;
+md.trans.isthermal=1;
+md.trans.isgroundingline=0;
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Temperature1','BasalforcingsGroundediceMeltingRate1','Temperature2','BasalforcingsGroundediceMeltingRate2','Temperature3','BasalforcingsGroundediceMeltingRate3','Temperature4','BasalforcingsGroundediceMeltingRate4'];
+field_tolerances=[1e-13,1e-6,1e-13,1e-6,1e-13,1e-6,1e-13,1e-6];
+field_values=[
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](4).Temperature),
+	(md.results.TransientSolution[0](4).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test232.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test232.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test232.m	(revision 27955)
@@ -0,0 +1,30 @@
+%Test Name: SquareShelfTherTranForcTemp
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.thermal.spctemperature=[md.thermal.spctemperature, md.thermal.spctemperature+5., md.thermal.spctemperature+10., md.thermal.spctemperature+15.; 1.5 2.5 3.5 4.];
+md.timestepping.time_step=1;
+md.timestepping.final_time=4;
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature1','BasalforcingsGroundediceMeltingRate1','Temperature2','BasalforcingsGroundediceMeltingRate2','Temperature3','BasalforcingsGroundediceMeltingRate3','Temperature4','BasalforcingsGroundediceMeltingRate4'};
+field_tolerances={1e-13,1e-6,1e-13,1e-6,1e-13,1e-6,1e-13,1e-6};
+field_values={...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(4).Temperature),...
+	(md.results.TransientSolution(4).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test232.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test232.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test232.py	(revision 27955)
@@ -0,0 +1,44 @@
+#Test Name: SquareShelfTherTranForcTemp
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.thermal.spctemperature = np.vstack((np.vstack((md.thermal.spctemperature,
+                                                  md.thermal.spctemperature + 5.,
+                                                  md.thermal.spctemperature + 10.,
+                                                  md.thermal.spctemperature + 15.)).T, [1.5, 2.5, 3.5, 4.]))
+md.timestepping.time_step = 1.
+md.timestepping.final_time = 4.
+md.transient.isstressbalance = False
+md.transient.ismasstransport = False
+md.transient.issmb = True
+md.transient.isthermal = True
+md.transient.isgroundingline = False
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Temperature1', 'BasalforcingsGroundediceMeltingRate1',
+               'Temperature2', 'BasalforcingsGroundediceMeltingRate2',
+               'Temperature3', 'BasalforcingsGroundediceMeltingRate3',
+               'Temperature4', 'BasalforcingsGroundediceMeltingRate4']
+field_tolerances = [1e-13, 1e-6, 1e-13, 1e-6, 1e-13, 1e-6, 1e-13, 1e-6]
+field_values = [md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[3].Temperature,
+                md.results.TransientSolution[3].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test233.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test233.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test233.js	(revision 27955)
@@ -0,0 +1,64 @@
+//Test Name: SquareShelfTranHOForcTemp
+var md = new model();
+triangle(md,square[0],200000.);
+setmask(md,'all','');
+parameterize(md);
+md.extrude(md,3,1.);
+setflowequation(md,'HO','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+md.thermal.spctemperature=[[md.thermal.spctemperature, md.thermal.spctemperature+5.], [1., 2.]];
+md.timestepping.time_step=0.5;
+md.timestepping.final_time=2.;
+md=solve(md,'Transient');
+
+//Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', 
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', 
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3', 
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','Temperature4','BasalforcingsGroundediceMeltingRate4'];
+field_tolerances=[2e-09,2e-09,1e-09,2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09, 
+	1e-09,2e-09,1e-08,2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, 
+	1e-08,2e-09,1e-08,2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, 
+	1e-08,2e-09,1e-08,2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06];
+field_values=[
+	(md.results.TransientSolution[0](1).Vx),
+	(md.results.TransientSolution[0](1).Vy),
+	(md.results.TransientSolution[0](1).Vz),
+	(md.results.TransientSolution[0](1).Vel),
+	(md.results.TransientSolution[0](1).Pressure),
+	(md.results.TransientSolution[0](1).Base),
+	(md.results.TransientSolution[0](1).Surface),
+	(md.results.TransientSolution[0](1).Thickness),
+	(md.results.TransientSolution[0](1).Temperature),
+	(md.results.TransientSolution[0](1).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](2).Vx),
+	(md.results.TransientSolution[0](2).Vy),
+	(md.results.TransientSolution[0](2).Vz),
+	(md.results.TransientSolution[0](2).Vel),
+	(md.results.TransientSolution[0](2).Pressure),
+	(md.results.TransientSolution[0](2).Base),
+	(md.results.TransientSolution[0](2).Surface),
+	(md.results.TransientSolution[0](2).Thickness),
+	(md.results.TransientSolution[0](2).Temperature),
+	(md.results.TransientSolution[0](2).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](3).Vx),
+	(md.results.TransientSolution[0](3).Vy),
+	(md.results.TransientSolution[0](3).Vz),
+	(md.results.TransientSolution[0](3).Vel),
+	(md.results.TransientSolution[0](3).Pressure),
+	(md.results.TransientSolution[0](3).Base),
+	(md.results.TransientSolution[0](3).Surface),
+	(md.results.TransientSolution[0](3).Thickness),
+	(md.results.TransientSolution[0](3).Temperature),
+	(md.results.TransientSolution[0](3).BasalforcingsGroundediceMeltingRate),
+	(md.results.TransientSolution[0](4).Vx),
+	(md.results.TransientSolution[0](4).Vy),
+	(md.results.TransientSolution[0](4).Vz),
+	(md.results.TransientSolution[0](4).Vel),
+	(md.results.TransientSolution[0](4).Pressure),
+	(md.results.TransientSolution[0](4).Base),
+	(md.results.TransientSolution[0](4).Surface),
+	(md.results.TransientSolution[0](4).Thickness),
+	(md.results.TransientSolution[0](4).Temperature),
+	(md.results.TransientSolution[0](4).BasalforcingsGroundediceMeltingRate),
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test233.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test233.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test233.m	(revision 27955)
@@ -0,0 +1,63 @@
+%Test Name: SquareShelfTranHOForcTemp
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.thermal.spctemperature=[md.thermal.spctemperature, md.thermal.spctemperature+5.; 1. 2.];
+md.timestepping.time_step=0.5;
+md.timestepping.final_time=2.;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3', ...
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','Temperature4','BasalforcingsGroundediceMeltingRate4'};
+field_tolerances={2e-09,2e-09,1e-09,2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09, ...
+	1e-09,2e-09,1e-08,2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, ...
+	1e-08,2e-09,1e-08,2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, ...
+	1e-08,2e-09,1e-08,2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vz),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).Temperature),...
+	(md.results.TransientSolution(4).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test233.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test233.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test233.py	(revision 27955)
@@ -0,0 +1,71 @@
+#Test Name: SquareShelfTranHOForcTemp
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 200000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.thermal.spctemperature = np.vstack((np.vstack((md.thermal.spctemperature, md.thermal.spctemperature + 5.)).T, [1., 2.]))
+md.timestepping.time_step = 0.5
+md.timestepping.final_time = 2.
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Temperature1', 'BasalforcingsGroundediceMeltingRate1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'BasalforcingsGroundediceMeltingRate2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'Temperature3', 'BasalforcingsGroundediceMeltingRate3',
+               'Vx4', 'Vy4', 'Vz4', 'Vel4', 'Pressure4', 'Bed4', 'Surface4', 'Thickness4', 'Temperature4', 'BasalforcingsGroundediceMeltingRate4']
+field_tolerances = [2e-09, 2e-09, 1e-09, 2e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09,
+                    1e-09, 2e-09, 1e-08, 2e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-06,
+                    1e-08, 2e-09, 1e-08, 2e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-06,
+                    1e-08, 2e-09, 1e-08, 2e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-06]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[3].Vx,
+                md.results.TransientSolution[3].Vy,
+                md.results.TransientSolution[3].Vz,
+                md.results.TransientSolution[3].Vel,
+                md.results.TransientSolution[3].Pressure,
+                md.results.TransientSolution[3].Base,
+                md.results.TransientSolution[3].Surface,
+                md.results.TransientSolution[3].Thickness,
+                md.results.TransientSolution[3].Temperature,
+                md.results.TransientSolution[3].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test234.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test234.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test234.js	(revision 27955)
@@ -0,0 +1,93 @@
+//Test Name: SquareShelfTranForceNeg2dDakotaSamp
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+smb=ones(md.mesh.numberofvertices,1);
+for (var i = 0; i < smb.length; ++i) {
+    smb[i][0] *= 3.6;
+    smb[i].push(smb[i][0]*-1);
+}
+
+md.smb.mass_balance= smb.slice();
+md.smb.mass_balance[md.smb.mass_balance.length-1] = [1.5, 3.];
+md.trans.isthermal=0;
+//Dakota options
+
+//dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version.toString().slice(0,2);
+
+//partitioning
+npart=20;
+partitioner(md,'package','chaco','npart',npart,'weighting','on');
+md.qmu.partition=md.qmu.partition-1;
+
+//variables
+md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,0.1);
+
+//responses
+md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.IceVolume=response_function('IceVolume',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux1=response_function('indexed_MassFlux_1',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux2=response_function('indexed_MassFlux_2',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux3=response_function('indexed_MassFlux_3',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux4=response_function('indexed_MassFlux_4',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux5=response_function('indexed_MassFlux_5',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.massFlux6=response_function('indexed_MassFlux_6',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+
+//mass flux profiles
+md.qmu.mass_flux_profiles=['../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp'];
+md.qmu.mass_flux_profile_directory=pwd;
+
+////  nond_sampling study
+md.qmu.method=dakota_method('nond_samp');
+md.qmu.method[md.qmu.method.length-1]=dmeth_params_set(md.qmu.method[md.qmu.method.length-1],'seed',1234,'samples',20,'sample_type','lhs');
+dver=textscan(IssmConfig('_DAKOTA_VERSION_'),'//[0123456789].//[0123456789].//[0123456789]');
+if (((str2num(dver[1][1])==4 && str2num(dver[2][1])>2) || str2num(dver[1][1])>4)) {
+	md.qmu.method[md.qmu.method.length-1]=dmeth_params_set(md.qmu.method(end),'rng','rnum2');
+}
+
+//parameters
+md.qmu.params.direct=true;
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.tabular_graphics_data=true;
+md.qmu.isdakota=1;
+
+if (version>=6) {
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+} else {
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+}
+
+
+md.stressbalance.reltol=Math.pow(10,-5); //tighten for qmu analyses
+md.trans.requested_outputs=['IceVolume'];
+
+//solve
+md=solve(md,'Transient','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+//Fields and tolerances to track changes
+md.results.dakota.moments=[];
+for (var i = 0; i < 8; ++i) {
+	md.results.dakota.moments.push(md.results.dakota.dresp_out[i].mean);
+}
+for (var i = 0; i < 8; ++i) {
+	md.results.dakota.moments.push(md.results.dakota.dresp_out[i].stddev);
+}
+field_names     =['moments'];
+field_tolerances=[1e-11];
+field_values=[
+         md.results.dakota.moments,
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test234.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test234.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test234.m	(revision 27955)
@@ -0,0 +1,91 @@
+%Test Name: SquareShelfTranForceNeg2dDakotaSamp
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+smb = ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1 ];
+
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.5 3];
+md.transient.isthermal=0;
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%partitioning
+npart=20;
+partition=partitioner(md,'package','chaco','npart',npart,'weighting','on')-1;
+
+%variables
+md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance',...
+	'mean',ones(npart,1),...
+	'stddev',.1*ones(npart,1),...
+	'partition',partition);
+
+%responses
+md.qmu.responses.MaxVel=response_function('descriptor','MaxVel');
+md.qmu.responses.IceVolume=response_function('descriptor','IceVolume');
+md.qmu.responses.MassFlux1=response_function('descriptor','indexed_MassFlux_1');
+md.qmu.responses.MassFlux2=response_function('descriptor','indexed_MassFlux_2');
+md.qmu.responses.MassFlux3=response_function('descriptor','indexed_MassFlux_3');
+md.qmu.responses.MassFlux4=response_function('descriptor','indexed_MassFlux_4');
+md.qmu.responses.MassFlux5=response_function('descriptor','indexed_MassFlux_5');
+md.qmu.responses.massFlux6=response_function('descriptor','indexed_MassFlux_6');
+
+%mass flux profiles
+md.qmu.mass_flux_profiles={'../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp'};
+md.qmu.mass_flux_profile_directory=pwd;
+
+%%  nond_sampling study
+md.qmu.method=dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),'seed',1234,'samples',20,'sample_type','lhs');
+dver=textscan(IssmConfig('_DAKOTA_VERSION_'),'%[0123456789].%[0123456789].%[0123456789]');
+if ((str2num(dver{1}{1})==4 && str2num(dver{2}{1})>2) || str2num(dver{1}{1})>4)
+	md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),'rng','rnum2');
+end
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.tabular_graphics_data=true;
+md.qmu.isdakota=1;
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+
+md.stressbalance.reltol=10^-5; %tighten for qmu analyses
+md.transient.requested_outputs={'IceVolume'};
+
+%solve
+md=solve(md,'Transient','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+%Fields and tolerances to track changes
+md.results.dakota.moments=[];
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).mean];
+end
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).stddev];
+end
+field_names     ={'moments'};
+field_tolerances={1e-11};
+field_values={...
+         md.results.dakota.moments,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test234.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test234.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test234.py	(revision 27955)
@@ -0,0 +1,104 @@
+#Test Name: SquareShelfTranForceNeg2dDakotaSamp
+import numpy as np
+from os import getcwd
+from IssmConfig import IssmConfig
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from partitioner import *
+from dmeth_params_set import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.timestepping.time_step = 1
+md.settings.output_frequency = 1
+md.timestepping.final_time = 4
+
+smb = np.ones((md.mesh.numberofvertices, )) * 3.6
+smb = np.array([smb, smb * -1]).T
+
+md.smb.mass_balance = smb
+md.smb.mass_balance = np.concatenate((md.smb.mass_balance, [[1.5, 3]]))
+md.transient.isthermal = 0
+
+#Dakota options
+
+#dakota version
+version = IssmConfig('_DAKOTA_VERSION_')
+version = float(version[0])
+
+#partitioning
+npart = 20
+partition = partitioner(md, 'package', 'chaco', 'npart', npart, 'weighting', 'on')[0] - 1
+
+#variables
+md.qmu.variables.surface_mass_balance = normal_uncertain.normal_uncertain(
+    'descriptor', 'scaled_SmbMassBalance',
+    'mean', np.ones((npart, 1)),
+    'stddev', .1 * np.ones((npart, 1)),
+    'partition', partition
+    )
+
+#responses
+md.qmu.responses.MaxVel = response_function.response_function('descriptor','MaxVel')
+md.qmu.responses.IceVolume = response_function.response_function('descriptor','IceVolume')
+md.qmu.responses.MassFlux1 = response_function.response_function('descriptor','indexed_MassFlux_1')
+md.qmu.responses.MassFlux2 = response_function.response_function('descriptor','indexed_MassFlux_2')
+md.qmu.responses.MassFlux3 = response_function.response_function('descriptor','indexed_MassFlux_3')
+md.qmu.responses.MassFlux4 = response_function.response_function('descriptor','indexed_MassFlux_4')
+md.qmu.responses.MassFlux5 = response_function.response_function('descriptor','indexed_MassFlux_5')
+md.qmu.responses.massFlux6 = response_function.response_function('descriptor','indexed_MassFlux_6')
+
+#mass flux profiles
+md.qmu.mass_flux_profiles = ['../Exp/MassFlux1.exp', '../Exp/MassFlux2.exp', '../Exp/MassFlux3.exp', '../Exp/MassFlux4.exp', '../Exp/MassFlux5.exp', '../Exp/MassFlux6.exp']
+md.qmu.mass_flux_profile_directory = getcwd()
+
+#  nond_sampling study
+md.qmu.method = dakota_method.dakota_method('nond_samp')
+md.qmu.method = dmeth_params_set(md.qmu.method, 'seed', 1234, 'samples', 20, 'sample_type', 'lhs')
+dver = str(version)
+if ((int(dver[0]) == 4 and int(dver[2]) > 2) or int(dver[0]) > 4):
+    md.qmu.method = dmeth_params_set(md.qmu.method, 'rng', 'rnum2')
+
+#parameters
+md.qmu.params.direct = True
+md.qmu.params.analysis_components = ''
+md.qmu.params.interval_type = 'forward'
+md.qmu.params.tabular_graphics_data = True
+md.qmu.isdakota = 1
+
+if version >= 6:
+    md.qmu.params.analysis_driver = 'matlab'
+    md.qmu.params.evaluation_scheduling = 'master'
+    md.qmu.params.processors_per_evaluation = 2
+else:
+    md.qmu.params.analysis_driver = 'stressbalance'
+    md.qmu.params.evaluation_concurrency = 1
+
+md.stressbalance.reltol = 10**-5  #tighten for qmu analyses
+md.transient.requested_outputs = ['IceVolume']
+
+#solve
+md.verbose = verbose('000000000')  # this line is recommended
+md = solve(md, 'Transient', 'overwrite', 'y')
+md.qmu.results = md.results.dakota
+
+#Fields and tolerances to track changes
+md.results.dakota.moments = []
+for i in range(8):
+    md.results.dakota.moments.append(md.results.dakota.dresp_out[i].mean)
+
+for i in range(8):
+    md.results.dakota.moments.append(md.results.dakota.dresp_out[i].stddev)
+
+field_names = ['moments']
+field_tolerances = [1e-11]
+field_values = [md.results.dakota.moments]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test235.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test235.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test235.js	(revision 27955)
@@ -0,0 +1,88 @@
+//Test Name: SquareShelfTranForceNeg2dDakotaLocal
+var md = new model();
+triangle(md,square[0],180000.);
+setmask(md,'all','');
+parameterize(md);
+setflowequation(md,'SSA','all');
+//md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+smb = ones(md.mesh.numberofvertices,1);
+for (var i = 0; i < smb.length; ++i) {
+    smb[i][0] *= 3.6;
+    smb[i].push(smb[i][0]*-1);
+}
+
+md.smb.mass_balance = smb.slice();
+md.smb.mass_balance[md.smb.mass_balance.length-1] = [1.5, 3.];
+md.trans.isthermal=0;
+//Dakota options
+
+//dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version.toString().slice(0,2);
+
+//partitioning
+npart=20;
+partitioner(md,'package','chaco','npart',npart,'weighting','on');
+md.qmu.partition=md.qmu.partition-1;
+
+//variables
+md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,100);
+
+//responses
+md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.IceVolume=response_function('IceVolume',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux1=response_function('indexed_MassFlux_1',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux2=response_function('indexed_MassFlux_2',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux3=response_function('indexed_MassFlux_3',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux4=response_function('indexed_MassFlux_4',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.MassFlux5=response_function('indexed_MassFlux_5',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+md.qmu.responses.massFlux6=response_function('indexed_MassFlux_6',[],[0.0001, 0.001, 0.01, 0.25, 0.5, 0.75, 0.99, 0.999, 0.9999]);
+
+//mass flux profiles
+md.qmu.mass_flux_profiles=['../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp'];
+md.qmu.mass_flux_profile_directory=pwd;
+
+//method
+md.qmu.method     =dakota_method('nond_l');
+
+//parameters
+md.qmu.params.direct=true;
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.fd_gradient_step_size='0.1';
+md.qmu.isdakota=1;
+
+if (version>=6) {
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+} else {
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+}
+
+
+md.stressbalance.reltol=Math.pow(10,-5); //tighten for qmu analyses
+md.trans.requested_outputs=['IceVolume'];
+
+//solve
+md=solve(md,'Transient','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+//Fields and tolerances to track changes
+md.results.dakota.moments=[];
+for (var i = 0; i < 8; ++i) {
+    md.results.dakota.moments.push(md.results.dakota.dresp_out[i].mean);
+}
+for (var i = 0; i < 8; ++i) {
+    md.results.dakota.moments.push(md.results.dakota.dresp_out[i].stddev);
+}
+field_names     =['moments'];
+field_tolerances=[1e-11];
+field_values=[
+         md.results.dakota.moments,
+	];
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test235.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test235.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test235.m	(revision 27955)
@@ -0,0 +1,86 @@
+%Test Name: SquareShelfTranForceNeg2dDakotaLocal
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+smb = ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1 ];
+
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.5 3];
+md.transient.isthermal=0;
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%partitioning
+npart=20;
+partition=partitioner(md,'package','chaco','npart',npart,'weighting','on')-1;
+
+%variables
+md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance',...
+	'mean',ones(npart,1),...
+	'stddev',100*ones(npart,1),...
+	'partition',partition);
+
+%responses
+md.qmu.responses.MaxVel=response_function('descriptor','MaxVel');
+md.qmu.responses.IceVolume=response_function('descriptor','IceVolume');
+md.qmu.responses.MassFlux1=response_function('descriptor','indexed_MassFlux_1');
+md.qmu.responses.MassFlux2=response_function('descriptor','indexed_MassFlux_2');
+md.qmu.responses.MassFlux3=response_function('descriptor','indexed_MassFlux_3');
+md.qmu.responses.MassFlux4=response_function('descriptor','indexed_MassFlux_4');
+md.qmu.responses.MassFlux5=response_function('descriptor','indexed_MassFlux_5');
+md.qmu.responses.massFlux6=response_function('descriptor','indexed_MassFlux_6');
+
+%mass flux profiles
+md.qmu.mass_flux_profiles={'../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp'};
+md.qmu.mass_flux_profile_directory=pwd;
+
+%method
+md.qmu.method     =dakota_method('nond_l');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.fd_gradient_step_size='0.1';
+md.qmu.isdakota=1;
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+
+md.stressbalance.reltol=10^-5; %tighten for qmu analyses
+md.transient.requested_outputs={'IceVolume'};
+
+%solve
+md=solve(md,'Transient','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+%Fields and tolerances to track changes
+md.results.dakota.moments=[];
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).mean];
+end
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).stddev];
+end
+field_names     ={'moments'};
+field_tolerances={1e-11};
+field_values={...
+         md.results.dakota.moments,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test235.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test235.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test235.py	(revision 27955)
@@ -0,0 +1,100 @@
+#Test Name: SquareShelfTranForceNeg2dDakotaLocal
+import numpy as np
+from os import getcwd
+from model import *
+from IssmConfig import IssmConfig
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from partitioner import *
+from dmeth_params_set import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.timestepping.time_step = 1
+md.settings.output_frequency = 1
+md.timestepping.final_time = 4
+
+smb = np.ones((md.mesh.numberofvertices, )) * 3.6
+smb = np.array([smb, smb * -1]).T
+
+md.smb.mass_balance = smb
+md.smb.mass_balance = np.concatenate((md.smb.mass_balance, [[1.5, 3]]))
+md.transient.isthermal = 0
+
+#Dakota options
+
+#dakota version
+version = IssmConfig('_DAKOTA_VERSION_')
+version = float(version[0])
+
+#partitioning
+npart = 20
+partition = partitioner(md, 'package', 'chaco', 'npart', npart, 'weighting', 'on')[0] - 1
+
+#variables
+md.qmu.variables.surface_mass_balance = normal_uncertain.normal_uncertain(
+    'descriptor', 'scaled_SmbMassBalance',
+    'mean', np.ones((npart, 1)),
+    'stddev', 100 * np.ones((npart, 1)),
+    'partition', partition
+    )
+
+#responses
+md.qmu.responses.MaxVel = response_function.response_function('descriptor','MaxVel')
+md.qmu.responses.IceVolume = response_function.response_function('descriptor','IceVolume')
+md.qmu.responses.MassFlux1 = response_function.response_function('descriptor','indexed_MassFlux_1')
+md.qmu.responses.MassFlux2 = response_function.response_function('descriptor','indexed_MassFlux_2')
+md.qmu.responses.MassFlux3 = response_function.response_function('descriptor','indexed_MassFlux_3')
+md.qmu.responses.MassFlux4 = response_function.response_function('descriptor','indexed_MassFlux_4')
+md.qmu.responses.MassFlux5 = response_function.response_function('descriptor','indexed_MassFlux_5')
+md.qmu.responses.massFlux6 = response_function.response_function('descriptor','indexed_MassFlux_6')
+
+#mass flux profiles
+md.qmu.mass_flux_profiles = ['../Exp/MassFlux1.exp', '../Exp/MassFlux2.exp', '../Exp/MassFlux3.exp', '../Exp/MassFlux4.exp', '../Exp/MassFlux5.exp', '../Exp/MassFlux6.exp']
+md.qmu.mass_flux_profile_directory = getcwd()
+
+#method
+md.qmu.method = dakota_method.dakota_method('nond_l')
+
+#parameters
+md.qmu.params.direct = True
+md.qmu.params.analysis_components = ''
+md.qmu.params.interval_type = 'forward'
+md.qmu.params.fd_gradient_step_size = '0.1'
+md.qmu.isdakota = 1
+
+if version >= 6:
+    md.qmu.params.analysis_driver = 'matlab'
+    md.qmu.params.evaluation_scheduling = 'master'
+    md.qmu.params.processors_per_evaluation = 2
+else:
+    md.qmu.params.analysis_driver = 'stressbalance'
+    md.qmu.params.evaluation_concurrency = 1
+
+md.stressbalance.reltol = 10**-5  #tighten for qmu analyses
+md.transient.requested_outputs = ['IceVolume']
+
+#solve
+md.verbose = verbose('000000000')  # this line is recommended
+md = solve(md, 'Transient', 'overwrite', 'y')
+md.qmu.results = md.results.dakota
+
+#Fields and tolerances to track changes
+md.results.dakota.moments = []
+for i in range(8):
+    md.results.dakota.moments.append(md.results.dakota.dresp_out[i].mean)
+
+for i in range(8):
+    md.results.dakota.moments.append(md.results.dakota.dresp_out[i].stddev)
+
+field_names = ['moments']
+field_tolerances = [1e-11]
+field_values = [md.results.dakota.moments]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test236.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test236.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test236.m	(revision 27955)
@@ -0,0 +1,96 @@
+%Test Name: SquareShelfTranIspddIsdeltaSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+
+%md.verbose=verbose('all');
+
+% Use of ispdd and isdelta18o methods
+md.smb = SMBpdd();
+md.smb.isdelta18o=1;
+md.smb.ismungsm=0;
+
+%md.smb.precipitation(1:md.mesh.numberofvertices,1:12)=0;
+%md.smb.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
+
+% Add temperature, precipitation and delta18o needed to measure the surface mass balance
+%  creating delta18o
+load '../Data/delta18o.data'
+md.smb.delta18o=delta18o;
+% creating delta18oSurface
+md.smb.delta18o_surface(1,1:(length(delta18o))) = 0;
+md.smb.delta18o_surface(2,:) = delta18o(2,:);
+
+% creating Present day and lgm temperatures
+% Same temperature over the all region:
+tmonth(1:12)=238.15+20.;
+for imonth=0:11
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+    md.smb.temperatures_lgm(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1)-20.;
+end
+
+% creating initialization and spc temperatures initialization and
+% spc
+md.thermal.spctemperature=mean(md.smb.temperatures_lgm(1:md.mesh.numberofvertices,1:12),2); %-10*ones(md.mesh.numberofvertices,1);
+md.thermal.spctemperature=repmat(md.thermal.spctemperature,1,md.timestepping.final_time/md.timestepping.time_step);
+itemp=0:md.timestepping.time_step:md.timestepping.final_time-md.timestepping.time_step;
+md.thermal.spctemperature(md.mesh.numberofvertices+1,:)=itemp;
+
+md.initialization.temperature=md.smb.temperatures_lgm(1:md.mesh.numberofvertices,1); %*ones(md.mesh.numberofvertices,1);
+md.smb = initialize(md.smb,md);
+
+% creating precipitation
+for imonth=0:11
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    md.smb.precipitations_lgm(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+end
+
+% Interpolation factors
+md.smb.Tdiff(1,1:md.timestepping.final_time)=0.5;
+md.smb.sealev(1,1:md.timestepping.final_time)=0.5;
+% Year of each data point
+md.smb.Tdiff(2,1:md.timestepping.final_time)=1:1:md.timestepping.final_time;
+md.smb.sealev(2,1:md.timestepping.final_time)=1:1:md.timestepping.final_time;
+
+% time steps and resolution
+md.timestepping.time_step=20;
+md.settings.output_frequency=1;
+md.timestepping.final_time=60;
+
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1',...
+	   'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2',...
+	   'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test236.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test236.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test236.py	(revision 27955)
@@ -0,0 +1,100 @@
+#Test Name: SquareShelfTranIspddIsdeltaSSA2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+
+# Use of ispdd and isdelta18o methods
+md.smb = SMBpdd()
+md.smb.isdelta18o = 1
+md.smb.ismungsm = 0
+
+# Add temperature, precipitation and delta18o needed to measure the surface mass balance
+# creating delta18o
+delta18o = np.loadtxt('../Data/delta18o.data')
+md.smb.delta18o = delta18o
+# creating delta18oSurface
+md.smb.delta18o_surface = np.zeros((2, np.size(delta18o, axis=1)))
+md.smb.delta18o_surface[1, :] = delta18o[1, :]
+
+# creating Present day and lgm temperatures
+# Same temperature over the all region:
+tmonth = np.ones(12) * (238.15 + 20.)
+md.smb.temperatures_presentday = np.zeros((md.mesh.numberofvertices, 12))
+md.smb.temperatures_lgm = np.zeros((md.mesh.numberofvertices, 12))
+for imonth in range(0, 12):
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices, imonth] = tmonth[imonth]
+    md.smb.temperatures_lgm[0:md.mesh.numberofvertices, imonth] = tmonth[imonth] - 20.
+
+# creating initialization and spc temperatures initialization and spc
+md.thermal.spctemperature = np.mean(md.smb.temperatures_lgm[0:md.mesh.numberofvertices, :], axis=1)  # - 10 * ones(md.mesh.numberofvertices, 1)
+md.thermal.spctemperature = np.tile(md.thermal.spctemperature, (int(md.timestepping.final_time / md.timestepping.time_step), 1)).T
+itemp = np.arange(0, md.timestepping.final_time, md.timestepping.time_step)
+md.thermal.spctemperature = np.vstack((md.thermal.spctemperature, itemp))
+
+md.initialization.temperature = md.smb.temperatures_lgm[0:md.mesh.numberofvertices, 0]  # * ones(md.mesh.numberofvertices, 1)
+md.smb.initialize(md)
+
+# creating precipitation
+md.smb.precipitations_presentday = np.zeros((md.mesh.numberofvertices, 12))
+md.smb.precipitations_lgm = np.zeros((md.mesh.numberofvertices, 12))
+for imonth in range(0, 12):
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices, imonth] = -0.4 * 10**(-6) * md.mesh.y + 0.5
+    md.smb.precipitations_lgm[0:md.mesh.numberofvertices, imonth] = -0.4 * 10**(-6) * md.mesh.y + 0.5
+
+# Interpolation factors
+md.smb.Tdiff = 0.5 * np.ones((2, int(md.timestepping.final_time)))
+md.smb.sealev = 0.5 * np.ones((2, int(md.timestepping.final_time)))
+# Year of each data point
+md.smb.Tdiff[1, 1:int(md.timestepping.final_time)] = np.arange(1., int(md.timestepping.final_time))
+md.smb.sealev[1, 1:int(md.timestepping.final_time)] = np.arange(1., int(md.timestepping.final_time))
+
+# time steps and resolution
+md.timestepping.time_step = 20.
+md.timestepping.final_time = 60.
+
+
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'SmbMassBalance3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test237.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test237.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test237.m	(revision 27955)
@@ -0,0 +1,104 @@
+%Test Name: SquareShelfTranIspddIsdeltaSSA3d
+md=triangle(model(),'../Exp/Square.exp',600000.);%180000
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+
+%md.verbose=verbose('all');
+
+% Use of ispdd methods
+md.smb = SMBpdd();
+md.smb.isdelta18o=0;
+md.smb.ismungsm=1;
+
+% time steps and resolution
+md.timestepping.time_step=20;
+md.settings.output_frequency=1;
+md.timestepping.final_time=60;
+
+% creating Present day and lgm temperatures
+% Same temperature over the all region:
+curve=sin(0:pi/11:pi);
+tmonth(1:12)=238.15+20.0+20.0*curve;
+for imonth=0:11
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+    md.smb.temperatures_lgm(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1)-20.;
+end
+
+% creating initialization and spc temperatures initialization and spc
+md.thermal.spctemperature=mean(md.smb.temperatures_lgm(1:md.mesh.numberofvertices,1:12),2); %-10*ones(md.mesh.numberofvertices,1);
+md.thermal.spctemperature=repmat(md.thermal.spctemperature,1,md.timestepping.final_time/md.timestepping.time_step);
+itemp=0:md.timestepping.time_step:md.timestepping.final_time-md.timestepping.time_step;
+md.thermal.spctemperature(md.mesh.numberofvertices+1,:)=itemp;
+
+md.initialization.temperature=md.smb.temperatures_lgm(1:md.mesh.numberofvertices,1); %*ones(md.mesh.numberofvertices,1);
+md.smb = initialize(md.smb,md);
+
+% creating precipitation
+for imonth=0:11
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    md.smb.precipitations_lgm(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+end
+
+for iint=1:(md.timestepping.final_time/md.timestepping.time_step)+1
+    md.smb.Pfac(1,iint)=0.15*iint;
+    md.smb.Tdiff(1,iint)=0.15*iint;
+    md.smb.sealev(1,iint)=0.15*iint;
+    % Year of each data point
+    md.smb.Pfac(2,iint)=(iint-1)*20;
+    md.smb.Tdiff(2,iint)=(iint-1)*20;
+    md.smb.sealev(2,iint)=(iint-1)*20;
+end
+
+md.smb.issetpddfac=1;
+md.smb.pddfac_snow=2;
+md.smb.pddfac_ice=2;
+
+md=extrude(md,3,1);
+
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','SmbMassBalance1',...
+						'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','SmbMassBalance2',...
+						'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','SmbMassBalance3'};
+field_tolerances={...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,1e-8,1e-8,1e-13,1e-8,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,1e-8,1e-8,1e-13,1e-7,1e-13,...
+	1e-13,1e-13,1e-08,1e-13,1e-13,1e-8,1e-8,1e-8,1e-13,5e-7,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test237.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test237.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test237.py	(revision 27955)
@@ -0,0 +1,115 @@
+#Test Name: SquareShelfTranIspddIsdeltaSSA3d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 600000)  #180000
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+
+# Use of ispdd and isdelta18o methods
+md.smb = SMBpdd()
+md.smb.isdelta18o = 0
+md.smb.ismungsm = 1
+
+# time steps and resolution
+md.timestepping.time_step = 20.
+md.settings.output_frequency = 1
+md.timestepping.final_time = 60.
+
+# creating Present day and lgm temperatures
+# Same temperature over the all region:
+curve=np.sin(np.linspace(0, np.pi, 12))
+tmonth = np.ones(12) * (238.15 + 20.) + 20.*curve
+md.smb.temperatures_presentday = np.zeros((md.mesh.numberofvertices, 12))
+md.smb.temperatures_lgm = np.zeros((md.mesh.numberofvertices, 12))
+for imonth in range(0, 12):
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices, imonth] = tmonth[imonth]
+    md.smb.temperatures_lgm[0:md.mesh.numberofvertices, imonth] = tmonth[imonth] - 20.
+
+# creating initialization and spc temperatures initialization and spc
+md.thermal.spctemperature = np.mean(md.smb.temperatures_lgm[0:md.mesh.numberofvertices, :], axis=1)  # - 10 * ones(md.mesh.numberofvertices, 1)
+md.thermal.spctemperature = np.tile(md.thermal.spctemperature, (int(md.timestepping.final_time / md.timestepping.time_step), 1)).T
+itemp = np.arange(0, md.timestepping.final_time, md.timestepping.time_step)
+md.thermal.spctemperature = np.vstack((md.thermal.spctemperature, itemp))
+
+md.initialization.temperature = md.smb.temperatures_lgm[0:md.mesh.numberofvertices, 0]  # * ones(md.mesh.numberofvertices, 1)
+md.smb.initialize(md)
+
+# creating precipitation
+md.smb.precipitations_presentday = np.zeros((md.mesh.numberofvertices, 12))
+md.smb.precipitations_lgm = np.zeros((md.mesh.numberofvertices, 12))
+for imonth in range(0, 12):
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices, imonth] = -0.4 * 10**(-6) * md.mesh.y + 0.5
+    md.smb.precipitations_lgm[0:md.mesh.numberofvertices, imonth] = -0.4 * 10**(-6) * md.mesh.y + 0.5
+
+fsize = int(md.timestepping.final_time / md.timestepping.time_step) + 2
+md.smb.Pfac = np.zeros((2, fsize))
+md.smb.Tdiff = np.zeros((2, fsize))
+md.smb.sealev = np.zeros((2, fsize))
+for iint in range(0, fsize):
+    # Interpolation factors
+    md.smb.Pfac[0, iint] = 0.15 * (iint + 1)
+    md.smb.Tdiff[0, iint] = 0.15 * (iint + 1)
+    md.smb.sealev[0, iint] = 0.15 * (iint + 1)
+    # Year of each data point
+    md.smb.Pfac[1, iint] = (float(iint)) * 20
+    md.smb.Tdiff[1, iint] = (float(iint)) * 20
+    md.smb.sealev[1, iint] = (float(iint)) * 20
+
+md.smb.issetpddfac=1.
+md.smb.pddfac_snow=2.
+md.smb.pddfac_ice=2.
+
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 1)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Temperature1', 'BasalforcingsGroundediceMeltingRate1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'BasalforcingsGroundediceMeltingRate2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'Temperature3', 'BasalforcingsGroundediceMeltingRate3', 'SmbMassBalance3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-8, 1e-8, 1e-8, 1e-13, 1e-8, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-8, 1e-8, 1e-8, 7e-13, 2e-7, 1e-13,
+                    1e-13, 1e-13, 1e-08, 1e-13, 1e-13, 1e-8, 1e-8, 1e-8, 7e-13, 5e-7, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[2].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test238.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test238.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test238.m	(revision 27955)
@@ -0,0 +1,78 @@
+%Test Name: SquareShelfTranIspddIsdeltaO18pdSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+
+%md.verbose=verbose('all');
+
+% Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
+%md.smb.precipitation(1:md.mesh.numberofvertices,1:12)=0;
+%md.smb.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
+
+% Add temperature, precipitation and delta18o needed to measure the surface mass balance
+%  creating delta18o
+load '../Data/delta18o.data'
+md.smb.delta18o=delta18o;
+
+% creating Present day  temperatures
+% Same temperature over the all region:
+tmonth(1:12)=238.15+20.;
+for imonth=0:11
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+end
+
+% creating initialization and spc temperatures initialization and
+% spc
+md.thermal.spctemperature=mean(md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1:12),2)-10; %-10*ones(md.mesh.numberofvertices,1);
+md.initialization.temperature=md.thermal.spctemperature; %md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1);
+
+% creating precipitation
+for imonth=0:11
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+end
+md.smb = initialize(md.smb,md);
+
+% time steps and resolution
+md.timestepping.time_step=20;
+md.settings.output_frequency=1;
+md.timestepping.final_time=60;
+
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1',...
+	      'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2',...
+	      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	   1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	   1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test238.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test238.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test238.py	(revision 27955)
@@ -0,0 +1,82 @@
+#Test Name: SquareShelfTranIspddIsdeltaO18pdSSA2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+
+# Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd()
+md.smb.isd18opd = 1
+
+# Add temperature, precipitation and delta18o needed to measure the surface mass balance
+# creating delta18o
+delta18o = np.loadtxt('../Data/delta18o.data')
+md.smb.delta18o = delta18o
+
+# creating Present day temperatures
+# Same temperature over the all region:
+tmonth = np.ones(12) * (238.15 + 20.)
+md.smb.temperatures_presentday = np.zeros((md.mesh.numberofvertices, 12))
+for imonth in range(0, 12):
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices, imonth] = tmonth[imonth]
+
+# creating initialization and spc temperatures initialization and spc
+md.thermal.spctemperature = np.mean(md.smb.temperatures_presentday[0:md.mesh.numberofvertices, :], axis=1).reshape(-1, 1)
+md.thermal.spctemperature = md.thermal.spctemperature - 10
+md.initialization.temperature = md.thermal.spctemperature
+md.smb.initialize(md)
+
+# creating precipitation
+md.smb.precipitations_presentday = np.zeros((md.mesh.numberofvertices, 12))
+for imonth in range(0, 12):
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices, imonth] = -0.4 * 10**(-6) * md.mesh.y + 0.5
+
+# time steps and resolution
+md.timestepping.time_step = 20
+md.settings.output_frequency = 1
+md.timestepping.final_time = 60
+
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'SmbMassBalance3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test239.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test239.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test239.m	(revision 27955)
@@ -0,0 +1,84 @@
+%Test Name: SquareShelfTranIspddIsdeltaO18pdInterpSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+
+%md.verbose=verbose('all');
+
+% Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
+%md.smb.precipitation(1:md.mesh.numberofvertices,1:12)=0;
+%md.smb.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
+
+% Add temperature, precipitation and delta18o needed to measure the surface mass balance
+%  creating delta18o
+load '../Data/delta18o.data'
+md.smb.delta18o=delta18o;
+
+% creating Present day  temperatures
+% Same temperature over the all region:
+curve=sin(0:pi/11:pi);
+tmonth(1:12)=238.15+20.0+20.0*curve;
+for imonth=0:11
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+end
+
+% creating initialization and spc temperatures initialization and
+% spc
+md.thermal.spctemperature=mean(md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1:12),2)-10; %-10*ones(md.mesh.numberofvertices,1);
+
+md.initialization.temperature=md.thermal.spctemperature; %md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1);
+
+% creating precipitation
+for imonth=0:11
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+end
+md.smb = initialize(md.smb,md);
+
+% time steps and resolution
+md.timestepping.time_step=0.5;
+md.settings.output_frequency=1;
+md.timestepping.final_time=2;
+
+md.smb.issetpddfac = 1;
+md.smb.pddfac_snow = 3;
+md.smb.pddfac_ice = 3;
+
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1',...
+	      'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2',...
+	      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test239.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test239.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test239.py	(revision 27955)
@@ -0,0 +1,87 @@
+#Test Name: SquareShelfTranIspddIsdeltaO18pdInterpSSA2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+
+# Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd()
+md.smb.isd18opd = 1
+
+# Add temperature, precipitation and delta18o needed to measure the surface mass balance
+# creating delta18o
+delta18o = np.loadtxt('../Data/delta18o.data')
+md.smb.delta18o = delta18o
+
+# creating Present day temperatures
+# Same temperature over the all region:
+curve=np.sin(np.linspace(0, np.pi, 12))
+tmonth = np.ones(12) * (238.15 + 20.) + 20.*curve
+md.smb.temperatures_presentday = np.zeros((md.mesh.numberofvertices, 12))
+for imonth in range(0, 12):
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices, imonth] = tmonth[imonth]
+
+# creating initialization and spc temperatures initialization and spc
+md.thermal.spctemperature = np.mean(md.smb.temperatures_presentday[0:md.mesh.numberofvertices, :], axis=1).reshape(-1, 1)
+md.thermal.spctemperature = md.thermal.spctemperature - 10
+md.initialization.temperature = md.thermal.spctemperature
+md.smb.initialize(md)
+
+# creating precipitation
+md.smb.precipitations_presentday = np.zeros((md.mesh.numberofvertices, 12))
+for imonth in range(0, 12):
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices, imonth] = -0.4 * 10**(-6) * md.mesh.y + 0.5
+
+# time steps and resolution
+md.timestepping.time_step = 0.5
+md.settings.output_frequency = 1
+md.timestepping.final_time = 2
+
+md.smb.issetpddfac = 1.
+md.smb.pddfac_snow = 3.
+md.smb.pddfac_ice = 3.
+
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'SmbMassBalance3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test240.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test240.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test240.m	(revision 27955)
@@ -0,0 +1,79 @@
+%Test Name: SquareShelfTranIspddIsdeltaO18pdNoInterpSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+
+%md.verbose=verbose('all');
+
+% Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
+%md.smb.precipitation(1:md.mesh.numberofvertices,1:12)=0;
+%md.smb.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
+
+% Add temperature, precipitation and delta18o needed to measure the surface mass balance
+%  creating delta18o
+load '../Data/delta18o.data'
+md.smb.delta18o=delta18o;
+
+% creating Present day  temperatures
+% Same temperature over the all region:
+tmonth(1:12)=238.15+20.;
+for imonth=0:11
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+end
+md.smb = initialize(md.smb,md);
+
+% creating initialization and spc temperatures initialization and
+% spc
+md.thermal.spctemperature=mean(md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1:12),2)-10; %-10*ones(md.mesh.numberofvertices,1);
+md.initialization.temperature=md.thermal.spctemperature; %md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1);
+
+% creating precipitation
+for imonth=0:11
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+end
+
+% time steps and resolution
+md.timestepping.time_step=0.5;
+md.settings.output_frequency=1;
+md.timestepping.final_time=2;
+md.timestepping.interp_forcing=0;
+
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1',...
+	      'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2',...
+	      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	   1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	   1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test240.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test240.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test240.py	(revision 27955)
@@ -0,0 +1,83 @@
+#Test Name: SquareShelfTranIspddIsdeltaO18pdNoInterpSSA2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+
+# Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd()
+md.smb.isd18opd = 1
+
+# Add temperature, precipitation and delta18o needed to measure the surface mass balance
+# creating delta18o
+delta18o = np.loadtxt('../Data/delta18o.data')
+md.smb.delta18o = delta18o
+
+# creating Present day temperatures
+# Same temperature over the all region:
+tmonth = np.ones(12) * (238.15 + 20.)
+md.smb.temperatures_presentday = np.zeros((md.mesh.numberofvertices, 12))
+for imonth in range(0, 12):
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices, imonth] = tmonth[imonth]
+
+# creating initialization and spc temperatures initialization and spc
+md.thermal.spctemperature = np.mean(md.smb.temperatures_presentday[0:md.mesh.numberofvertices, :], axis=1).reshape(-1, 1)
+md.thermal.spctemperature = md.thermal.spctemperature - 10
+md.initialization.temperature = md.thermal.spctemperature
+md.smb.initialize(md)
+
+# creating precipitation
+md.smb.precipitations_presentday = np.zeros((md.mesh.numberofvertices, 12))
+for imonth in range(0, 12):
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices, imonth] = -0.4 * 10**(-6) * md.mesh.y + 0.5
+
+# time steps and resolution
+md.timestepping.time_step = 0.5
+md.settings.output_frequency = 1
+md.timestepping.final_time = 2
+md.timestepping.interp_forcing = 0
+
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'SmbMassBalance3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test241.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test241.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test241.m	(revision 27955)
@@ -0,0 +1,65 @@
+%Test Name: SquareShelfTranForceNoInterp2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4.;
+md.timestepping.interp_forcing=0;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
+field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test241.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test241.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test241.py	(revision 27955)
@@ -0,0 +1,72 @@
+#Test Name: SquareShelfTranForceNoInterp2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.timestepping.time_step = 1.
+md.settings.output_frequency = 1
+md.timestepping.final_time = 4.
+md.timestepping.interp_forcing = False
+
+#Set up transient
+smb = np.ones((md.mesh.numberofvertices)) * 3.6
+smb = np.vstack((smb, smb * -1.)).T
+
+md.smb.mass_balance = np.vstack((smb, [1.5, 3.]))
+md.transient.isthermal = False
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'SmbMassBalance3',
+               'Vx4', 'Vy4', 'Vel4', 'Pressure4', 'Bed4', 'Surface4', 'Thickness4', 'SmbMassBalance4']
+field_tolerances = [1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].SmbMassBalance,
+                md.results.TransientSolution[3].Vx,
+                md.results.TransientSolution[3].Vy,
+                md.results.TransientSolution[3].Vel,
+                md.results.TransientSolution[3].Pressure,
+                md.results.TransientSolution[3].Base,
+                md.results.TransientSolution[3].Surface,
+                md.results.TransientSolution[3].Thickness,
+                md.results.TransientSolution[3].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test242.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test242.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test242.m	(revision 27955)
@@ -0,0 +1,71 @@
+%Test Name: SquareShelfTranForceNoInterp3d
+md=triangle(model(),'../Exp/Square.exp',350000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+md.timestepping.interp_forcing=0;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4'};
+field_tolerances={...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vz),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test242.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test242.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test242.py	(revision 27955)
@@ -0,0 +1,77 @@
+#Test Name: SquareShelfTranForceNoInterp3d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 350000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.timestepping.time_step = 1.
+md.settings.output_frequency = 1
+md.timestepping.final_time = 4.
+md.timestepping.interp_forcing = False
+
+#Set up transient
+smb = np.ones((md.mesh.numberofvertices)) * 3.6
+smb = np.vstack((smb, smb * -1.)).T
+
+md.smb.mass_balance = np.vstack((smb, [1.5, 3.]))
+md.transient.isthermal = False
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'SmbMassBalance3',
+               'Vx4', 'Vy4', 'Vz4', 'Vel4', 'Pressure4', 'Bed4', 'Surface4', 'Thickness4', 'SmbMassbalance4']
+field_tolerances = [1e-09, 1e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-13,
+                    1e-09, 1e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-13,
+                    1e-09, 1e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-13,
+                    1e-09, 1e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].SmbMassBalance,
+                md.results.TransientSolution[3].Vx,
+                md.results.TransientSolution[3].Vy,
+                md.results.TransientSolution[3].Vz,
+                md.results.TransientSolution[3].Vel,
+                md.results.TransientSolution[3].Pressure,
+                md.results.TransientSolution[3].Base,
+                md.results.TransientSolution[3].Surface,
+                md.results.TransientSolution[3].Thickness,
+                md.results.TransientSolution[3].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2424.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2424.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2424.m	(revision 27955)
@@ -0,0 +1,38 @@
+%Test Name: SquareSheetShelfGroundingLine2dAggressive. From test424, with sea level increasing.
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.initialization.vx(:)=0.;
+md.initialization.vy(:)=0.;
+md.smb.mass_balance(:)=0.;
+
+md.geometry.base=-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.bed =-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.thickness(:)=1000.;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+md.transient.isstressbalance=0;
+md.transient.isgroundingline=1;
+md.transient.isthermal=0;
+md.groundingline.migration='AggressiveMigration';
+md.transient.requested_outputs={'IceVolume','IceVolumeAboveFloatation','Sealevel'};
+
+md.timestepping.time_step=.1;
+md.solidearth.initialsealevel=newforcing(md.timestepping.start_time, md.timestepping.final_time, md.timestepping.time_step,-200,200,md.mesh.numberofvertices);
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%we are checking that the grounding line position is near the theorical one, which is the 0 contour level 
+%of surface - sealevel - (1-di)* thickness; 
+
+nsteps=length(md.results.TransientSolution);
+field_names={};
+field_tolerances={};
+field_values={};
+for i=1:nsteps,
+	field_names{end+1}=sprintf('Time-%g-yr-ice_levelset-S-sl-(1-di)*H',md.results.TransientSolution(i).time);
+	field_tolerances{end+1}=1e-12;
+	field_values{end+1}= md.results.TransientSolution(i).MaskOceanLevelset- (md.geometry.surface-md.results.TransientSolution(i).Sealevel-(1-md.materials.rho_ice/md.materials.rho_water)*md.geometry.thickness);
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2424.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2424.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2424.py	(revision 27955)
@@ -0,0 +1,49 @@
+#Test Name: SquareSheetShelfGroundingLine2dAggressive. From test424, with sea level increasing.
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from newforcing import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.initialization.vx[:] = 0.
+md.initialization.vy[:] = 0.
+md.smb.mass_balance[:] = 0.
+
+md.geometry.base = -700. - np.abs(md.mesh.y - 500000.) / 1000.
+md.geometry.bed = -700. - np.abs(md.mesh.y - 500000.) / 1000.
+md.geometry.thickness[:] = 1000.
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+md.transient.isstressbalance = 0
+md.transient.isgroundingline = 1
+md.transient.isthermal = 0
+md.groundingline.migration = 'AggressiveMigration'
+md.transient.requested_outputs = ['IceVolume', 'IceVolumeAboveFloatation', 'Sealevel']
+
+md.timestepping.time_step = .1
+md.solidearth.initialsealevel = newforcing(md.timestepping.start_time, md.timestepping.final_time,
+                             md.timestepping.time_step, -200., 200., md.mesh.numberofvertices)
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#we are checking that the grounding line position is near the theorical one, which is the 0 contour level
+#of surface-sealevel - (1 - di) * thickness
+
+nsteps = len(md.results.TransientSolution)
+field_names = []
+field_tolerances = []
+field_values = []
+#time is off by the year constant
+for i in range(nsteps):
+    field_names.append('Time-' + str(md.results.TransientSolution[i].time) + '-yr-ice_levelset-S-sl-(1-di) * H')
+    field_tolerances.append(1e-12)
+    field_values.append(md.results.TransientSolution[i].MaskOceanLevelset.reshape(-1, ) - (md.geometry.surface - md.results.TransientSolution[i].Sealevel.reshape(-1, ) - (1 - md.materials.rho_ice / md.materials.rho_water) * md.geometry.thickness))
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2425.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2425.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2425.m	(revision 27955)
@@ -0,0 +1,41 @@
+%Test Name: SquareSheetShelfGroundingLine2dSoft
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.initialization.vx(:)=0.;
+md.initialization.vy(:)=0.;
+md.geometry.base=-700.-(md.mesh.y-500000.)/1000.;
+md.geometry.bed =-700.-(md.mesh.y-500000.)/1000.;
+md.geometry.thickness(:)=1300.;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+md.groundingline.migration='AggressiveMigration';
+
+md.timestepping.time_step=.1;
+md.timestepping.final_time=1;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+vel1=md.results.TransientSolution(end).Vel;
+
+
+%get same results with offset in bed and sea level: 
+md.geometry.base=-700.-(md.mesh.y-500000.)/1000.;
+md.geometry.bed =-700.-(md.mesh.y-500000.)/1000.;
+md.geometry.thickness(:)=1300.;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+md.geometry.base=md.geometry.base+1000;
+md.geometry.bed=md.geometry.bed+1000;
+md.geometry.surface=md.geometry.surface+1000;
+md.solidearth.initialsealevel=1000*ones(md.mesh.numberofvertices,1);
+
+md=solve(md,'Transient','checkconsistency','no');
+vel2=md.results.TransientSolution(end).Vel;
+
+%Fields and tolerances to track changes
+field_names     ={'Vel','Veloffset'};
+field_tolerances={1e-13,1e-13};
+field_values={vel1,vel2};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2425.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2425.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test2425.py	(revision 27955)
@@ -0,0 +1,49 @@
+#Test Name: SquareSheetShelfGroundingLine2dSoft
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.initialization.vx[:] = 0.
+md.initialization.vy[:] = 0.
+md.geometry.base = -700. - (md.mesh.y - 500000.) / 1000.
+md.geometry.bed = -700. - (md.mesh.y - 500000.) / 1000.
+md.geometry.thickness[:] = 1300.
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md.transient.isstressbalance = 1
+md.transient.isgroundingline = 1
+md.groundingline.migration = 'AggressiveMigration'
+
+md.timestepping.time_step = .1
+md.timestepping.final_time = 1
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+vel1 = md.results.TransientSolution[-1].Vel
+
+#get same results with offset in bed and sea level:
+md.geometry.base = -700. - (md.mesh.y - 500000.) / 1000.
+md.geometry.bed = -700. - (md.mesh.y - 500000.) / 1000.
+md.geometry.thickness[:] = 1300.
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+md.geometry.base = md.geometry.base + 1000
+md.geometry.bed = md.geometry.bed + 1000
+md.geometry.surface = md.geometry.surface + 1000
+md.solidearth.initialsealevel = 1000 * np.ones((md.mesh.numberofvertices, ))
+
+md = solve(md, 'Transient', 'checkconsistency', 'no')
+vel2 = md.results.TransientSolution[-1].Vel
+
+#Fields and tolerances to track changes
+field_names = ['Vel', 'Veloffset']
+field_tolerances = [1e-13, 1e-13]
+field_values = [vel1, vel2]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test243.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test243.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test243.m	(revision 27955)
@@ -0,0 +1,94 @@
+%Test Name: SquareShelfSMBGemb
+md=triangle(model(),'../Exp/Square.exp',350000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.materials.rho_ice=910;
+md.cluster=generic('name',oshostname(),'np',3);
+
+% Use of Gemb method for SMB computation
+md.smb = SMBgemb(md.mesh,md.geometry);
+md.smb.dsnowIdx = 1;
+md.smb.swIdx = 1;
+
+%load hourly surface forcing date from 1979 to 2009:
+inputs=load('../Data/gemb_input.mat');
+
+%setup the inputs: 
+md.smb.Ta=[repmat(inputs.Ta0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.V=[repmat(inputs.V0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.dswrf=[repmat(inputs.dsw0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.dlwrf=[repmat(inputs.dlw0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.P=[repmat(inputs.P0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.eAir=[repmat(inputs.eAir0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.pAir=[repmat(inputs.pAir0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.Vz=repmat(inputs.LP.Vz,md.mesh.numberofelements,1);
+md.smb.Tz=repmat(inputs.LP.Tz,md.mesh.numberofelements,1);
+md.smb.Tmean=repmat(inputs.LP.Tmean,md.mesh.numberofelements,1);
+md.smb.C=repmat(inputs.LP.C,md.mesh.numberofelements,1);
+
+%smb settings
+md.smb.requested_outputs={'SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbEC',...
+	'SmbA','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF',...
+	'SmbMeanULW','SmbNetLW','SmbNetSW','SmbWAdd','SmbRunoff','SmbRefreeze','SmbMelt',...
+	'SmbEC','SmbPrecipitation','SmbRain','SmbAccumulatedMassBalance','SmbAccumulatedRunoff',...
+	'SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation','SmbAccumulatedRain',...
+	'SmbAccumulatedPrecipitation','SmbAccumulatedRefreeze'};
+
+%only run smb core: 
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.isthermal=0;
+
+%time stepping: 
+md.timestepping.start_time=1965;
+md.timestepping.final_time=1966;
+md.timestepping.time_step=1/365.0;
+md.timestepping.interp_forcing=0;
+
+%Run transient
+md=solve(md,'Transient');
+
+nlayers=size(md.results.TransientSolution(1).SmbT,2);
+for i=2:length(md.results.TransientSolution)
+   nlayers=min(size(md.results.TransientSolution(i).SmbT,2), nlayers);
+end
+
+%Fields and tolerances to track changes
+field_names      ={'Layers','SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbA' ,'SmbEC','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF','SmbMeanULW','SmbNetLW','SmbNetSW','SmbAccumulatedMassBalance','SmbAccumulatedRunoff','SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation','SmbAccumulatedRain','SmbAccumulatedRefreeze','SmbRunoff','SmbMelt','SmbEC','SmbPrecipitation','SmbRain','SmbRefreeze','SmbWAdd'};
+field_tolerances ={1e-12,4e-11,2e-11,3e-11,6e-11,8e-11,8e-11,1e-12,5e-11,2e-12,1e-12,1e-12,4e-11,2e-11,5e-11,1e-11,9e-10,2e-11,1e-11,9e-10,2e-11,2e-09,1e-11,1e-11,1e-11,2e-10,2e-11,1e-11,1e-11,1e-11,1e-11,1e-11};
+
+field_values={...
+	(nlayers),...
+	(md.results.TransientSolution(end).SmbDz(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbT(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbD(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbRe(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbGdn(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbGsp(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbA(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbEC(1)),...
+	(md.results.TransientSolution(end).SmbMassBalance(1)),...
+	(md.results.TransientSolution(end).SmbMAdd(1)),...
+	(md.results.TransientSolution(end).SmbDzAdd(1)),...
+	(md.results.TransientSolution(end).SmbFAC(1)),...
+	(md.results.TransientSolution(end).SmbMeanSHF(1)),...
+	(md.results.TransientSolution(end).SmbMeanLHF(1)),...
+	(md.results.TransientSolution(end).SmbMeanULW(1)),...
+	(md.results.TransientSolution(end).SmbNetLW(1)),...
+	(md.results.TransientSolution(end).SmbNetSW(1)),...
+	(md.results.TransientSolution(end).SmbAccumulatedMassBalance(1)),...
+	(md.results.TransientSolution(end).SmbAccumulatedRunoff(1)),...
+	(md.results.TransientSolution(end).SmbAccumulatedMelt(1)),...
+	(md.results.TransientSolution(end).SmbAccumulatedEC(1)),...
+	(md.results.TransientSolution(end).SmbAccumulatedPrecipitation(1)),...
+	(md.results.TransientSolution(end).SmbAccumulatedRain(1)),...
+	(md.results.TransientSolution(end).SmbAccumulatedRefreeze(1)),...
+	(md.results.TransientSolution(200).SmbRunoff(1)),...
+	(md.results.TransientSolution(200).SmbMelt(1)),...
+	(md.results.TransientSolution(200).SmbEC(1)),...
+	(md.results.TransientSolution(200).SmbPrecipitation(1)),...
+	(md.results.TransientSolution(200).SmbRain(1)),...
+	(md.results.TransientSolution(200).SmbRefreeze(1)),...
+	(md.results.TransientSolution(200).SmbWAdd(1))...
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test243.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test243.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test243.py	(revision 27955)
@@ -0,0 +1,108 @@
+#Test Name: SquareShelfSMBGemb
+from socket import gethostname
+import sys
+import numpy as np
+from model import *
+from parameterize import *
+from setflowequation import *
+from setmask import *
+from SMBgemb import *
+from solve import *
+from triangle import *
+
+md = triangle(model(), '../Exp/Square.exp', 350000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.materials.rho_ice = 910
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+#Use of Gemb method for SMB computation
+md.smb = SMBgemb(md.mesh, md.geometry)
+md.smb.dsnowIdx = 1
+md.smb.swIdx = 1
+
+#load hourly surface forcing date from 1979 to 2009:
+if sys.version_info.major == 2:
+    inputs = np.load('../Data/gemb_input.npy', allow_pickle=True).item()
+else:
+    inputs = np.load('../Data/gemb_input.npy', allow_pickle=True, encoding='bytes').item()
+
+#setup the inputs:
+md.smb.Ta = np.append(np.tile(np.conjugate(inputs[b'Ta0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.V = np.append(np.tile(np.conjugate(inputs[b'V0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.dswrf = np.append(np.tile(np.conjugate(inputs[b'dsw0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.dlwrf = np.append(np.tile(np.conjugate(inputs[b'dlw0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.P = np.append(np.tile(np.conjugate(inputs[b'P0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.eAir = np.append(np.tile(np.conjugate(inputs[b'eAir0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.pAir = np.append(np.tile(np.conjugate(inputs[b'pAir0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.Vz = np.tile(np.conjugate(inputs[b'LP']['Vz']), (md.mesh.numberofelements, 1)).flatten()
+md.smb.Tz = np.tile(np.conjugate(inputs[b'LP']['Tz']), (md.mesh.numberofelements, 1)).flatten()
+md.smb.Tmean = np.tile(np.conjugate(inputs[b'LP']['Tmean']), (md.mesh.numberofelements, 1)).flatten()
+md.smb.C = np.tile(np.conjugate(inputs[b'LP']['C']), (md.mesh.numberofelements, 1)).flatten()
+
+#smb settings
+md.smb.requested_outputs = ['SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbEC',
+                            'SmbA','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF',
+                            'SmbMeanULW','SmbNetLW','SmbNetSW','SmbWAdd','SmbRunoff','SmbRefreeze','SmbMelt',
+                            'SmbEC','SmbPrecipitation','SmbRain','SmbAccumulatedMassBalance','SmbAccumulatedRunoff',
+                            'SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation','SmbAccumulatedRain',
+                            'SmbAccumulatedPrecipitation','SmbAccumulatedRefreeze']
+
+#only run smb core:
+md.transient.isstressbalance = 0
+md.transient.ismasstransport = 0
+md.transient.isthermal = 0
+
+#time stepping:
+md.timestepping.start_time = 1965.
+md.timestepping.final_time = 1966.
+md.timestepping.time_step = 1.0 / 365
+md.timestepping.interp_forcing = 0.
+
+#Run transient
+md = solve(md, 'Transient')
+
+nlayers = md.results.TransientSolution[0].SmbT.shape[1]
+for i in range(1, len(md.results.TransientSolution)):
+    nlayers=np.minimum(md.results.TransientSolution[i].SmbT.shape[1], nlayers)
+
+#Fields and tolerances to track changes
+field_names = ['Layers', 'SmbDz', 'SmbT', 'SmbD', 'SmbRe', 'SmbGdn', 'SmbGsp', 'SmbA', 'SmbEC', 'SmbMassBalance', 'SmbMAdd', 'SmbDzAdd', 'SmbFAC', 'SmbMeanSHF', 'SmbMeanLHF', 'SmbMeanULW', 'SmbNetLW', 'SmbNetSW', 'SmbAccumulatedMassBalance', 'SmbAccumulatedRunoff', 'SmbAccumulatedMelt', 'SmbAccumulatedEC', 'SmbAccumulatedPrecipitation', 'SmbAccumulatedRain', 'SmbAccumulatedRefreeze', 'SmbRunoff', 'SmbMelt', 'SmbEC', 'SmbPrecipitation', 'SmbRain', 'SmbRefreeze', 'SmbWAdd']
+field_tolerances = [1e-12, 4e-11, 2e-11, 3e-11, 6e-11, 8e-11, 8e-11, 1e-12, 5e-11, 2e-12, 1e-12, 1e-12, 4e-11, 2e-11, 5e-11, 1e-11, 9e-10, 2e-11, 1e-11, 9e-10, 2e-11, 2e-09, 1e-11, 1e-11, 1e-11, 2e-10, 2e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11]
+
+# Shape is different in python solution (fixed using reshape) which can cause test failure
+field_values = [
+    nlayers,
+    md.results.TransientSolution[-1].SmbDz[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[-1].SmbT[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[-1].SmbD[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[-1].SmbRe[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[-1].SmbGdn[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[-1].SmbGsp[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[-1].SmbA[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[-1].SmbEC[0],
+    md.results.TransientSolution[-1].SmbMassBalance[0],
+    md.results.TransientSolution[-1].SmbMAdd[0],
+    md.results.TransientSolution[-1].SmbDzAdd[0],
+    md.results.TransientSolution[-1].SmbFAC[0],
+    md.results.TransientSolution[-1].SmbMeanSHF[0],
+    md.results.TransientSolution[-1].SmbMeanLHF[0],
+    md.results.TransientSolution[-1].SmbMeanULW[0],
+    md.results.TransientSolution[-1].SmbNetLW[0],
+    md.results.TransientSolution[-1].SmbNetSW[0],
+    md.results.TransientSolution[-1].SmbAccumulatedMassBalance[0],
+    md.results.TransientSolution[-1].SmbAccumulatedRunoff[0],
+    md.results.TransientSolution[-1].SmbAccumulatedMelt[0],
+    md.results.TransientSolution[-1].SmbAccumulatedEC[0],
+    md.results.TransientSolution[-1].SmbAccumulatedPrecipitation[0],
+    md.results.TransientSolution[-1].SmbAccumulatedRain[0],
+    md.results.TransientSolution[-1].SmbAccumulatedRefreeze[0],
+    md.results.TransientSolution[199].SmbRunoff[0],
+    md.results.TransientSolution[199].SmbMelt[0],
+    md.results.TransientSolution[199].SmbEC[0],
+    md.results.TransientSolution[199].SmbPrecipitation[0],
+    md.results.TransientSolution[199].SmbRain[0],
+    md.results.TransientSolution[199].SmbRefreeze[0],
+    md.results.TransientSolution[199].SmbWAdd[0]
+    ]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test244.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test244.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test244.m	(revision 27955)
@@ -0,0 +1,122 @@
+%Test Name: SquareShelfSMBGembDakota
+md=triangle(model(),'../Exp/Square.exp',300000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.materials.rho_ice=910;
+md.cluster=generic('name',oshostname(),'np',3);
+md.geometry.bed=md.geometry.base;
+
+% Use of Gemb method for SMB computation
+md.smb = SMBgemb(md.mesh,md.geometry);
+md.smb.dsnowIdx = 0;
+md.smb.swIdx = 1;
+
+%load hourly surface forcing date from 1979 to 2009:
+inputs=load('../Data/gemb_input.mat');
+
+%setup the inputs:
+md.smb.Ta=[repmat(inputs.Ta0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.V=[repmat(inputs.V0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.dswrf=[repmat(inputs.dsw0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.dlwrf=[repmat(inputs.dlw0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.P=[repmat(inputs.P0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.eAir=[repmat(inputs.eAir0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.pAir=[repmat(inputs.pAir0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.Vz=repmat(inputs.LP.Vz,md.mesh.numberofelements,1);
+md.smb.Tz=repmat(inputs.LP.Tz,md.mesh.numberofelements,1);
+md.smb.Tmean=repmat(inputs.LP.Tmean,md.mesh.numberofelements,1);
+md.smb.C=repmat(inputs.LP.C,md.mesh.numberofelements,1);
+
+%smb settings
+md.smb.requested_outputs={'SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbEC','SmbA','SmbMassBalance'};
+
+%only run smb core:
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=1;
+md.transient.isthermal=0;
+
+%time stepping:
+md.timestepping.start_time=1965;
+md.timestepping.final_time=1965.75;
+md.timestepping.time_step=1/365.0;
+md.timestepping.interp_forcing=0;
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%partitioning
+partition=partitioner(md,'package','linear','type','element','npart',md.mesh.numberofelements)-1;
+
+%variables
+md.qmu.variables.surface_mass_balanceC=normal_uncertain('descriptor','scaled_SmbC',...
+	'mean',1*ones(md.mesh.numberofelements,1),...
+	'stddev',.5*ones(md.mesh.numberofelements,1),...
+	'partition',partition);
+
+Tmin=273;
+telms=min(md.smb.Ta(1:end-1,:),[],2);
+mint_on_partition=telms;
+for pa=1:length(mint_on_partition)
+	vi=find(partition+1 == pa);
+	mint=telms(vi).*1.05;
+	pos=find(mint < Tmin);
+	mint(pos)=Tmin;
+	mint_on_partition(pa)=max(mint./telms(vi));
+end
+mint_on_partition(isnan(mint_on_partition)) = 10^-10;
+md.qmu.variables.surface_mass_balanceTa=uniform_uncertain('descriptor','scaled_SmbTa',...
+	'lower',.95*ones(md.mesh.numberofelements,1),...
+	'upper',max(min(max(1.05,mint_on_partition),0.9999),0.0001),...
+	'partition',partition);
+
+%responses
+md.qmu.responses.IceVolume=response_function('descriptor','IceVolume');
+md.qmu.responses.IceMass=response_function('descriptor','IceMass');
+md.qmu.responses.TotalSmb=response_function('descriptor','TotalSmb');
+
+%  nond_sampling study
+md.qmu.method=dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),'seed',1234,'samples',3,'sample_type','lhs');
+dver=textscan(IssmConfig('_DAKOTA_VERSION_'),'%[0123456789].%[0123456789].%[0123456789]');
+if ((str2num(dver{1}{1})==4 && str2num(dver{2}{1})>2) || str2num(dver{1}{1})>4)
+	md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),'rng','rnum2');
+end
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.tabular_graphics_data=true;
+md.qmu.isdakota=1;
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+md.stressbalance.reltol=10^-5; %tighten for qmu analyses
+md.transient.requested_outputs={'IceVolume','TotalSmb','IceMass'};
+
+%solve
+md=solve(md,'Transient','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+%Fields and tolerances to track changes
+md.results.dakota.moments=[];
+for i=1:3,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).mean];
+end
+for i=1:3,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).stddev];
+end
+field_names     ={'moments'};
+field_tolerances={3e-9};
+field_values={...
+	md.results.dakota.moments,...
+	};
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test244.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test244.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test244.py	(revision 27955)
@@ -0,0 +1,146 @@
+#Test Name: SquareShelfSMBGembDakota
+import numpy as np
+import scipy.io as spio
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from SMBgemb import *
+from IssmConfig import *
+
+from partitioner import *
+from dakota_method import *
+from normal_uncertain import *
+from uniform_uncertain import *
+from response_function import *
+from dmeth_params_set import *
+
+md = triangle(model(), '../Exp/Square.exp', 300000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.materials.rho_ice = 910
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.geometry.bed = md.geometry.base
+
+# Use of Gemb method for SMB computation
+md.smb = SMBgemb(md.mesh, md.geometry)
+md.smb.dsnowIdx = 0
+md.smb.swIdx = 1
+
+#load hourly surface forcing date from 1979 to 2009:
+inputs = spio.loadmat('../Data/gemb_input.mat', squeeze_me=True)
+
+#setup the inputs:
+md.smb.Ta = np.append(np.tile(np.conjugate(inputs['Ta0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs['dateN']]), axis=0)
+md.smb.V = np.append(np.tile(np.conjugate(inputs['V0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs['dateN']]), axis=0)
+md.smb.dswrf = np.append(np.tile(np.conjugate(inputs['dsw0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs['dateN']]), axis=0)
+md.smb.dlwrf = np.append(np.tile(np.conjugate(inputs['dlw0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs['dateN']]), axis=0)
+md.smb.P = np.append(np.tile(np.conjugate(inputs['P0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs['dateN']]), axis=0)
+md.smb.eAir = np.append(np.tile(np.conjugate(inputs['eAir0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs['dateN']]), axis=0)
+md.smb.pAir = np.append(np.tile(np.conjugate(inputs['pAir0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs['dateN']]), axis=0)
+md.smb.pAir = np.append(np.tile(np.conjugate(inputs['pAir0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs['dateN']]), axis=0)
+md.smb.Vz = np.tile(np.conjugate(inputs['LP']['Vz']), (md.mesh.numberofelements, 1)).flatten()
+md.smb.Tz = np.tile(np.conjugate(inputs['LP']['Tz']), (md.mesh.numberofelements, 1)).flatten()
+md.smb.Tmean = np.tile(np.conjugate(inputs['LP']['Tmean']), (md.mesh.numberofelements, 1)).flatten()
+md.smb.C = np.tile(np.conjugate(inputs['LP']['C']), (md.mesh.numberofelements, 1)).flatten()
+
+#smb settings
+md.smb.requested_outputs = ['SmbDz', 'SmbT', 'SmbD', 'SmbRe', 'SmbGdn', 'SmbGsp', 'SmbEC', 'SmbA', 'SmbMassBalance']
+
+#only run smb core:
+md.transient.isstressbalance = 0
+md.transient.ismasstransport = 1
+md.transient.isthermal = 0
+
+#time stepping:
+md.timestepping.start_time = 1965.
+md.timestepping.final_time = 1965.75
+md.timestepping.time_step = 1. / 365.0
+md.timestepping.interp_forcing = 0.
+
+#dakota version
+version = IssmConfig('_DAKOTA_VERSION_')
+version = float(version[0])
+
+#partitioning
+npart = md.mesh.numberofelements
+partition = partitioner(md, 'package', 'linear', 'type', 'element', 'npart', npart)[0] - 1
+
+#variables
+md.qmu.variables.surface_mass_balance = normal_uncertain.normal_uncertain(
+    'descriptor', 'scaled_SmbC',
+    'mean', np.ones((npart, 1)),
+    'stddev', .5 * np.ones((npart, 1)),
+    'partition', partition
+    )
+Tmin = 273.
+telms = np.atleast_2d(np.min(md.smb.Ta[0:-1, :], 1))
+mint_on_partition = telms.flatten()
+for pa in range(np.size(mint_on_partition)):
+    vi = np.where(partition == pa)
+    mint = telms[0, vi] * 1.05
+    pos = np.where(mint < Tmin)
+    mint[pos] = Tmin
+    mint_on_partition[pa] = max(mint / telms[0, vi])
+
+mint_on_partition[np.where(np.isnan(mint_on_partition))] = 10**-10
+upper = np.maximum(np.minimum(np.maximum(1.05, mint_on_partition), 0.9999), 0.0001)
+upper = upper.reshape(npart, 1)
+md.qmu.variables.surface_mass_balanceTa = uniform_uncertain.uniform_uncertain(
+    'descriptor', 'scaled_SmbTa',
+    'lower', .95 * np.ones((npart, 1)),
+    'upper', upper,
+    'partition', partition
+)
+
+#responses
+md.qmu.responses.IceVolume = response_function.response_function('descriptor','IceVolume')
+md.qmu.responses.IceMass = response_function.response_function('descriptor','IceMass')
+md.qmu.responses.TotalSmb = response_function.response_function('descriptor','TotalSmb')
+
+#  nond_sampling study
+md.qmu.method = dakota_method.dakota_method('nond_samp')
+md.qmu.method = dmeth_params_set(md.qmu.method, 'seed', 1234, 'samples', 3, 'sample_type', 'lhs')
+dver = str(version)
+if ((int(dver[0]) == 4 and int(dver[2]) > 2) or int(dver[0]) > 4):
+    md.qmu.method = dmeth_params_set(md.qmu.method, 'rng', 'rnum2')
+
+#parameters
+md.qmu.params.direct = True
+md.qmu.params.analysis_components = ''
+md.qmu.params.interval_type = 'forward'
+md.qmu.params.tabular_graphics_data = True
+md.qmu.isdakota = 1
+
+if version >= 6:
+    md.qmu.params.analysis_driver = 'matlab'
+    md.qmu.params.evaluation_scheduling = 'master'
+    md.qmu.params.processors_per_evaluation = 2
+else:
+    md.qmu.params.analysis_driver = 'stressbalance'
+    md.qmu.params.evaluation_concurrency = 1
+
+
+md.stressbalance.reltol = 10**-5  #tighten for qmu analyses
+md.transient.requested_outputs = ['IceVolume', 'TotalSmb', 'IceMass']
+
+#solve
+md.verbose = verbose('000000000')  # this line is recommended
+md = solve(md, 'Transient', 'overwrite', 'y')
+md.qmu.results = md.results.dakota
+
+#Fields and tolerances to track changes
+md.results.dakota.moments = []
+for i in range(3):
+    md.results.dakota.moments.append(md.results.dakota.dresp_out[i].mean)
+
+for i in range(3):
+    md.results.dakota.moments.append(md.results.dakota.dresp_out[i].stddev)
+
+field_names = ['moments']
+field_tolerances = [3e-9]
+field_values = [md.results.dakota.moments]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test245.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test245.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test245.m	(revision 27955)
@@ -0,0 +1,45 @@
+%Test Name: SquareShelfTranIspddSicopolisSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+
+% Use of SMBpddSicopolis
+md.smb = SMBpddSicopolis();
+% initalize pdd fields
+md.smb=initialize(md.smb,md);
+md.smb.s0p=md.geometry.surface;
+md.smb.s0t=md.geometry.surface;
+
+% 
+md.smb.monthlytemperatures=[]; md.smb.precipitation=[]; md.smb.precipitation=[];
+temp_ma_present=-10*ones(md.mesh.numberofvertices,1)-md.smb.rlaps*md.geometry.surface/1000;
+temp_mj_present=10*ones(md.mesh.numberofvertices,1)-md.smb.rlaps*md.geometry.surface/1000;
+precipitation=5*ones(md.mesh.numberofvertices,1);
+for imonth=0:11
+    md.smb.monthlytemperatures(1:md.mesh.numberofvertices,imonth+1)=md.materials.meltingpoint+temp_ma_present+(temp_mj_present-temp_ma_present)*sin(double(imonth+1-4)*pi/6.0);
+    md.smb.precipitation(1:md.mesh.numberofvertices,imonth+1)=precipitation;
+end
+
+% time steps and resolution
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=2;
+
+md.transient.issmb=1;
+md.transient.ismasstransport=1;
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+
+md.transient.requested_outputs={'default','TemperaturePDD'};
+md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'TemperaturePDD1','SmbMassBalance1','TemperaturePDD2','SmbMassBalance2'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).TemperaturePDD),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).TemperaturePDD),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test245.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test245.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test245.py	(revision 27955)
@@ -0,0 +1,54 @@
+#Test Name: SquareShelfTranIspddSicopolisSSA2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+from SMBpddSicopolis import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+
+# Use of SMBpddSicopolis
+md.smb = SMBpddSicopolis()
+# initalize pdd fields
+md.smb.initialize(md)
+md.smb.s0p = md.geometry.surface.reshape(-1, 1)
+md.smb.s0t = md.geometry.surface.reshape(-1, 1)
+
+
+md.smb.monthlytemperatures = np.empty((md.mesh.numberofvertices, 12))
+md.smb.precipitation = np.empty((md.mesh.numberofvertices, 12))
+temp_ma_present = -10. * np.ones((md.mesh.numberofvertices, )) - md.smb.rlaps * md.geometry.surface / 1000.
+temp_mj_present = 10. * np.ones((md.mesh.numberofvertices, )) - md.smb.rlaps * md.geometry.surface / 1000.
+precipitation = 5. * np.ones((md.mesh.numberofvertices, ))
+for imonth in range(12):
+    md.smb.monthlytemperatures[0:md.mesh.numberofvertices, imonth] = md.materials.meltingpoint + temp_ma_present + (temp_mj_present - temp_ma_present) * np.sin((imonth + 1. - 4.) * np.pi / 6.0)
+    md.smb.precipitation[0:md.mesh.numberofvertices, imonth] = precipitation
+
+# time steps and resolution
+md.timestepping.time_step = 1
+md.settings.output_frequency = 1
+md.timestepping.final_time = 2
+
+md.transient.issmb = 1
+md.transient.ismasstransport = 1
+md.transient.isstressbalance = 0
+md.transient.isthermal = 0
+
+md.transient.requested_outputs = ['default', 'TemperaturePDD']
+md.cluster = generic('name', gethostname(), 'np', 1)  # 3 for the cluster
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['TemperaturePDD1', 'SmbMassBalance1', 'TemperaturePDD2', 'SmbMassBalance2']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].TemperaturePDD,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[1].TemperaturePDD,
+                md.results.TransientSolution[1].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test246.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test246.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test246.m	(revision 27955)
@@ -0,0 +1,56 @@
+%Test Name: SquareShelfTranSemic
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+
+% Use of SMBpddSicopolis
+md.smb = SMBsemic();
+% initalize pdd fields
+md.smb=initialize(md.smb,md);
+md.smb.s0gcm=md.geometry.surface;
+
+ONES=ones(md.mesh.numberofvertices,1);
+for iday=0:365
+	md.smb.dailytemperature(1:md.mesh.numberofvertices,iday+1)=252.8739*ONES;
+	md.smb.dailytemperature(md.mesh.numberofvertices+1,iday+1)=((iday+1)/12);
+	md.smb.dailysnowfall(1:md.mesh.numberofvertices,iday+1)=8.5503e-09*ONES;
+	md.smb.dailysnowfall(md.mesh.numberofvertices+1,iday+1)=((iday+1)/12);
+	md.smb.dailyrainfall(1:md.mesh.numberofvertices,iday+1)=1.7296e-09*ONES;
+	md.smb.dailyrainfall(md.mesh.numberofvertices+1,iday+1)=((iday+1)/12);
+	md.smb.dailydsradiation(1:md.mesh.numberofvertices,iday+1)=128.1702*ONES;
+	md.smb.dailydsradiation(md.mesh.numberofvertices+1,iday+1)=((iday+1)/12);
+	md.smb.dailydlradiation(1:md.mesh.numberofvertices,iday+1)=176.5667*ONES;
+	md.smb.dailydlradiation(md.mesh.numberofvertices+1,iday+1)=((iday+1)/12);
+	md.smb.dailywindspeed(1:md.mesh.numberofvertices,iday+1)=6.0741*ONES;
+	md.smb.dailywindspeed(md.mesh.numberofvertices+1,iday+1)=((iday+1)/12);
+	md.smb.dailyairdensity(1:md.mesh.numberofvertices,iday+1)=1.0729*ONES;
+	md.smb.dailyairdensity(md.mesh.numberofvertices+1,iday+1)=((iday+1)/12);
+	md.smb.dailyairhumidity(1:md.mesh.numberofvertices,iday+1)=9.6667e-04*ONES;
+	md.smb.dailyairhumidity(md.mesh.numberofvertices+1,iday+1)=((iday+1)/12); 
+	md.smb.dailypressure(1:md.mesh.numberofvertices,iday+1)=7.7841e+04*ONES;
+	md.smb.dailypressure(md.mesh.numberofvertices+1,iday+1)=((iday+1)/12); 
+end
+
+% time steps and resolution
+md.timestepping.time_step=0.5;
+md.settings.output_frequency=1;
+md.timestepping.final_time=1;
+
+md.transient.issmb=1;
+md.transient.ismasstransport=0;
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+
+md.transient.requested_outputs={'default','TemperatureSEMIC'};
+md.cluster=generic('name',oshostname(),'np',4); % 3 for the cluster
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'TemperatureSEMIC1','SmbMassBalance1','TemperatureSEMIC2','SmbMassBalance2'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).TemperatureSEMIC),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).TemperatureSEMIC),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test247.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test247.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test247.m	(revision 27955)
@@ -0,0 +1,164 @@
+%Test Name: SquareShelfTranIspddIsdeltaO18pdNoInterpSSA2d
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+
+%md.verbose=verbose('all');
+
+% Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
+
+% Add temperature, precipitation and delta18o needed to measure the surface mass balance
+%  creating delta18o
+load '../Data/delta18o.data'
+md.smb.delta18o=delta18o;
+md.smb.istemperaturescaled = 0;
+md.smb.isprecipscaled = 0;
+
+% creating Present day  temperatures
+% Same temperature over the all region:
+curve=sin(0:pi/11:pi);
+tmonth(1:12)=238.15+20.0+20.0*curve;
+for imonth=0:11
+	md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+end
+md.smb = initialize(md.smb,md);
+
+% creating precipitation
+for imonth=0:11
+	md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+end
+
+% 3 total years of input
+md.smb.temperatures_reconstructed = nan(md.mesh.numberofvertices+1,12*3);
+md.smb.precipitations_reconstructed = nan(md.mesh.numberofvertices+1,12*3);
+
+md.smb.temperatures_reconstructed(1:end-1,1:12) = md.smb.temperatures_presentday(1:end,:);
+md.smb.temperatures_reconstructed(1:end-1,13:24) = md.smb.temperatures_presentday(1:end,:)+1.2;
+md.smb.temperatures_reconstructed(1:end-1,25:36) = md.smb.temperatures_presentday(1:end,:)-0.8;
+
+md.smb.precipitations_reconstructed(1:end-1,1:12) = md.smb.precipitations_presentday(1:end,:);
+md.smb.precipitations_reconstructed(1:end-1,13:24) = md.smb.precipitations_presentday(1:end,:)+0.1;
+md.smb.precipitations_reconstructed(1:end-1,25:36) = md.smb.precipitations_presentday(1:end,:)-0.1;
+
+tim1 = [1/12:1/12:1];
+
+md.smb.temperatures_reconstructed(end,1:12) = tim1; md.smb.temperatures_reconstructed(end,13:24) = tim1+3; md.smb.temperatures_reconstructed(end,25:36) = tim1+5;
+md.smb.precipitations_reconstructed(end,1:12) = tim1; md.smb.precipitations_reconstructed(end,13:24) = tim1+3; md.smb.precipitations_reconstructed(end,25:36) = tim1+5;
+
+% creating initialization and spc temperatures initialization and
+% spc
+md.thermal.spctemperature=mean(md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1:12),2)-10; %-10*ones(md.mesh.numberofvertices,1);
+md.initialization.temperature=md.thermal.spctemperature; %md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1);
+
+
+md.smb.s0p = (max(md.geometry.surface,0));
+md.smb.s0t = (max(md.geometry.surface,0));
+md.smb.issetpddfac = 1;
+md.smb.pddfac_snow = 8;
+md.smb.pddfac_ice = 10;
+
+md=extrude(md,5,1.2);
+md=setflowequation(md,'HO','all');
+md.settings.results_on_nodes={'Temperature','Waterfraction','Enthalpy'};
+
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+md.thermal.fe = 'P1xP2';
+%md.thermal.spctemperature(find(md.mesh.vertexonbase)) = NaN;
+
+md.initialization.waterfraction= zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn  = zeros(md.mesh.numberofvertices,1);
+md.initialization.enthalpy = zeros(md.mesh.numberofvertices,1);
+md.thermal.isdrainicecolumn=0;
+
+md=solve(md,'thermal');
+
+md.initialization.temperature=md.results.ThermalSolution.Temperature;
+md.initialization.enthalpy=md.results.ThermalSolution.Enthalpy;
+%x = find(md.initialization.temperature<210);
+%md.initialization.temperature(x) = 268;
+md.materials.rheology_B = cuffey(md.initialization.temperature);
+
+% Friction
+TEMP = zeros(md.mesh.numberofvertices,1);
+TEMP(md.mesh.elements) = md.initialization.temperature(:,1:6);
+
+temperature =TEMP;
+pressure = md.initialization.pressure;%md.materials.rho_ice*md.constants.g*md.geometry.thickness;
+Tm = md.materials.meltingpoint-md.materials.beta*pressure;
+
+md.friction.coefficient = md.friction.coefficient;%averaging(md,md.friction.coefficient,2);
+md.friction=frictionjosh(md.friction);
+md.friction.pressure_adjusted_temperature = temperature - Tm;
+md.friction.gamma= 5;
+
+% time steps and resolution
+md.timestepping.time_step=0.5;
+md.settings.output_frequency=1;
+md.timestepping.final_time=2;
+md.timestepping.interp_forcing=0;
+
+%md.transient.requested_outputs={'default','IceVolumeAboveFloatation','IceVolume','TemperaturePDD','SmbMonthlytemperatures','SmbPrecipitation'};
+md.transient.requested_outputs={'default','IceVolumeAboveFloatation','IceVolume','TemperaturePDD'};
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
+md=solve(md,'Transient');
+
+field_names = {...
+	'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','Enthalpy1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','Enthalpy2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','Enthalpy3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','Temperature4','Enthalpy4','SmbMassBalance4'};
+field_tolerances={...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-13,...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-13,...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-13,...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).Enthalpy),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).Enthalpy),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).Enthalpy),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vz),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).Temperature),...
+	(md.results.TransientSolution(4).Enthalpy),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test247.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test247.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test247.py	(revision 27955)
@@ -0,0 +1,174 @@
+#Test Name: SquareShelfTranIspddIsdeltaO18pdNoInterpSSA2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from cuffey import *
+from frictionjosh import *
+
+from SMBpddSicopolis import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+
+# Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd()
+md.smb.isd18opd=1
+
+# Add temperature, precipitation and delta18o needed to measure the surface mass balance
+# creating delta18o
+delta18o = np.loadtxt('../Data/delta18o.data')
+md.smb.delta18o = delta18o
+md.smb.istemperaturescaled = 0
+md.smb.isprecipscaled = 0
+
+# creating Present day temperatures
+# Same temperature over the all region:
+curve=np.sin(np.linspace(0, np.pi, 12))
+tmonth = np.ones(12) * (238.15 + 20.) + 20.*curve
+md.smb.temperatures_presentday = np.zeros((md.mesh.numberofvertices, 12))
+for imonth in range(0, 12):
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices, imonth] = tmonth[imonth]
+
+md.smb.initialize(md)
+
+# creating precipitation
+md.smb.precipitations_presentday = np.zeros((md.mesh.numberofvertices, 12))
+for imonth in range(0, 12):
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices, imonth] = -0.4 * 10**(-6) * md.mesh.y + 0.5
+
+# 3 total years of input
+md.smb.temperatures_reconstructed = np.empty((md.mesh.numberofvertices+1, 12*3))
+md.smb.precipitations_reconstructed = np.empty((md.mesh.numberofvertices+1, 12*3))
+
+md.smb.temperatures_reconstructed[0:md.mesh.numberofvertices,0:12] = md.smb.temperatures_presentday
+md.smb.temperatures_reconstructed[0:md.mesh.numberofvertices,12:24] = md.smb.temperatures_presentday+1.2
+md.smb.temperatures_reconstructed[0:md.mesh.numberofvertices,24:36] = md.smb.temperatures_presentday-0.8
+
+md.smb.precipitations_reconstructed[0:md.mesh.numberofvertices,0:12] = md.smb.precipitations_presentday
+md.smb.precipitations_reconstructed[0:md.mesh.numberofvertices,12:24] = md.smb.precipitations_presentday+0.1
+md.smb.precipitations_reconstructed[0:md.mesh.numberofvertices,24:36] = md.smb.precipitations_presentday-0.1
+
+tim1 = np.linspace(1,12,12)/12
+
+md.smb.temperatures_reconstructed[md.mesh.numberofvertices,0:12] = tim1
+md.smb.temperatures_reconstructed[md.mesh.numberofvertices,12:24] = tim1+3
+md.smb.temperatures_reconstructed[md.mesh.numberofvertices,24:36] = tim1+5
+
+md.smb.precipitations_reconstructed[md.mesh.numberofvertices,0:12] = tim1
+md.smb.precipitations_reconstructed[md.mesh.numberofvertices,12:24] = tim1+3
+md.smb.precipitations_reconstructed[md.mesh.numberofvertices,24:36] = tim1+5
+
+# creating initialization and spc temperatures initialization and
+# spc
+md.thermal.spctemperature=np.mean(md.smb.temperatures_presentday[0:md.mesh.numberofvertices,0:12],axis=1)-10.
+md.initialization.temperature=md.thermal.spctemperature
+
+md.smb.s0p = np.maximum(md.geometry.surface.reshape(-1, 1),np.zeros((md.mesh.numberofvertices,1)))
+md.smb.s0t = np.maximum(md.geometry.surface.reshape(-1, 1),np.zeros((md.mesh.numberofvertices,1)))
+md.smb.issetpddfac = 1
+md.smb.pddfac_snow = 8
+md.smb.pddfac_ice = 10
+
+md.extrude(5,1.2)
+md=setflowequation(md,'HO','all')
+md.settings.results_on_nodes=['Temperature','Waterfraction','Enthalpy']
+
+md.thermal.isenthalpy=1
+md.thermal.isdynamicbasalspc=1
+md.thermal.fe = 'P1xP2'
+
+md.initialization.waterfraction = np.zeros((md.mesh.numberofvertices,1))
+md.initialization.watercolumn = np.zeros((md.mesh.numberofvertices,1))
+md.initialization.enthalpy = np.zeros((md.mesh.numberofvertices,1))
+md.thermal.isdrainicecolumn = 0
+
+md = solve(md, 'thermal')
+
+md.initialization.temperature = md.results.ThermalSolution.Temperature
+md.initialization.enthalpy = md.results.ThermalSolution.Enthalpy
+md.materials.rheology_B = cuffey(md.initialization.temperature).reshape(np.shape(md.initialization.temperature))
+
+# Friction
+TEMP = np.zeros((md.mesh.numberofvertices,))
+TEMP[md.mesh.elements - 1] = md.initialization.temperature[:,0:6].reshape(md.mesh.numberofelements,6)
+
+temperature = TEMP
+pressure = md.initialization.pressure
+Tm = md.materials.meltingpoint-md.materials.beta*pressure
+
+coefficient=md.friction.coefficient
+md.friction=frictionjosh()
+md.friction.coefficient = coefficient
+md.friction.pressure_adjusted_temperature = temperature - Tm
+md.friction.gamma = 5
+
+# time steps and resolution
+md.timestepping.time_step = 0.5
+md.settings.output_frequency = 1
+md.timestepping.final_time = 2
+md.timestepping.interp_forcing = 0
+
+md.transient.requested_outputs = ['default', 'IceVolumeAboveFloatation','IceVolume','TemperaturePDD']
+md=setflowequation(md,'SSA','all')
+md.cluster = generic('name', gethostname(), 'np', 1)  # 3 for the cluster
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Temperature1', 'Enthalpy1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'Enthalpy2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'Temperature3', 'Enthalpy3', 'SmbMassBalance3',
+               'Vx4', 'Vy4', 'Vz4', 'Vel4', 'Pressure4', 'Bed4', 'Surface4', 'Thickness4', 'Temperature4', 'Enthalpy4', 'SmbMassBalance4']
+field_tolerances=[1e-09, 1e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-13,
+   1e-09, 1e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-13,
+   1e-09, 1e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-13,
+   1e-09, 1e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].Enthalpy,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].Enthalpy,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].Enthalpy,
+                md.results.TransientSolution[2].SmbMassBalance,
+                md.results.TransientSolution[3].Vx,
+                md.results.TransientSolution[3].Vy,
+                md.results.TransientSolution[3].Vz,
+                md.results.TransientSolution[3].Vel,
+                md.results.TransientSolution[3].Pressure,
+                md.results.TransientSolution[3].Base,
+                md.results.TransientSolution[3].Surface,
+                md.results.TransientSolution[3].Thickness,
+                md.results.TransientSolution[3].Temperature,
+                md.results.TransientSolution[3].Enthalpy,
+                md.results.TransientSolution[3].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test248.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test248.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test248.m	(revision 27955)
@@ -0,0 +1,25 @@
+%Test Name: SquareShelfStressMOLHO2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'MOLHO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
+md=SetMOLHOBC(md);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.VxSurface),...
+	(md.results.StressbalanceSolution.VySurface),...
+	(md.results.StressbalanceSolution.VxShear),...
+	(md.results.StressbalanceSolution.VyShear),...
+	(md.results.StressbalanceSolution.VxBase),...
+	(md.results.StressbalanceSolution.VyBase),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test248.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test248.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test248.py	(revision 27955)
@@ -0,0 +1,32 @@
+#Test Name: SquareShelfStressMOLHO2d
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from SetMOLHOBC import SetMOLHOBC
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'MOLHO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
+md = SetMOLHOBC(md)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.VxSurface,
+                md.results.StressbalanceSolution.VySurface,
+                md.results.StressbalanceSolution.VxShear,
+                md.results.StressbalanceSolution.VyShear,
+                md.results.StressbalanceSolution.VxBase,
+                md.results.StressbalanceSolution.VyBase]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test249.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test249.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test249.m	(revision 27955)
@@ -0,0 +1,47 @@
+%Test Name: SquareShelfTranMOLHO2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'MOLHO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','FloatingArea','GroundedArea','TotalGroundedBmb','TotalFloatingBmb'};
+md.basalforcings.floatingice_melting_rate(:)=1;
+md=SetMOLHOBC(md);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','TotalGroundedBmb1','TotalFloatingBmb1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','TotalGroundedBmb2','TotalFloatingBmb2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','TotalGroundedBmb3','TotalFloatingBmb3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).TotalGroundedBmb),...
+	(md.results.TransientSolution(3).TotalFloatingBmb),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test249.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test249.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test249.py	(revision 27955)
@@ -0,0 +1,64 @@
+#Test Name: SquareShelfTranMOLHO2d
+
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from generic import generic
+from SetMOLHOBC import SetMOLHOBC
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.basalforcings.floatingice_melting_rate[:] = 1.
+md = setflowequation(md, 'MOLHO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.requested_outputs = ['default', 'FloatingArea', 'GroundedArea', 'TotalFloatingBmb', 'TotalGroundedBmb']
+md = SetMOLHOBC(md)
+md = solve(md, 'Transient')
+
+
+# Fields and tolerances to track changes
+
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1',
+               'Bed1', 'Surface1', 'Thickness1', 'TotalGroundedBmb1', 'TotalFloatingBmb1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2',
+               'Bed2', 'Surface2', 'Thickness2', 'TotalGroundedBmb2', 'TotalFloatingBmb2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3',
+               'Bed3', 'Surface3', 'Thickness3', 'TotalGroundedBmb3', 'TotalFloatingBmb3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].TotalGroundedBmb,
+                md.results.TransientSolution[0].TotalFloatingBmb,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].TotalGroundedBmb,
+                md.results.TransientSolution[1].TotalFloatingBmb,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].TotalGroundedBmb,
+                md.results.TransientSolution[2].TotalFloatingBmb]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test250.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test250.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test250.m	(revision 27955)
@@ -0,0 +1,90 @@
+%Test Name: SquareShelfTranForceNeg2dDakotaSampLinearPart
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+smb = ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1 ];
+
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.5 3];
+md.transient.isthermal=0;
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%partitioning
+partition=partitioner(md,'package','linear','npart',md.mesh.numberofvertices)-1;
+
+%variables
+md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance',...
+	'mean',ones(md.mesh.numberofvertices,1),...
+	'stddev',.1*ones(md.mesh.numberofvertices,1),...
+	'partition',partition);
+
+%responses
+md.qmu.responses.MaxVel=response_function('descriptor','MaxVel');
+md.qmu.responses.IceVolume=response_function('descriptor','IceVolume');
+md.qmu.responses.MassFlux1=response_function('descriptor','indexed_MassFlux_1');
+md.qmu.responses.MassFlux2=response_function('descriptor','indexed_MassFlux_2');
+md.qmu.responses.MassFlux3=response_function('descriptor','indexed_MassFlux_3');
+md.qmu.responses.MassFlux4=response_function('descriptor','indexed_MassFlux_4');
+md.qmu.responses.MassFlux5=response_function('descriptor','indexed_MassFlux_5');
+md.qmu.responses.massFlux6=response_function('descriptor','indexed_MassFlux_6');
+
+%mass flux profiles
+md.qmu.mass_flux_profiles={'../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp'};
+md.qmu.mass_flux_profile_directory=pwd;
+
+%%  nond_sampling study
+md.qmu.method=dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),'seed',1234,'samples',20,'sample_type','lhs');
+dver=textscan(IssmConfig('_DAKOTA_VERSION_'),'%[0123456789].%[0123456789].%[0123456789]');
+if ((str2num(dver{1}{1})==4 && str2num(dver{2}{1})>2) || str2num(dver{1}{1})>4)
+	md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),'rng','rnum2');
+end
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.tabular_graphics_data=true;
+md.qmu.isdakota=1;
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+
+md.stressbalance.reltol=10^-5; %tighten for qmu analyses
+md.transient.requested_outputs={'IceVolume'};
+
+%solve
+md=solve(md,'Transient','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+%Fields and tolerances to track changes
+md.results.dakota.moments=[];
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).mean];
+end
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).stddev];
+end
+field_names     ={'moments'};
+field_tolerances={1e-11};
+field_values={...
+         md.results.dakota.moments,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test250.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test250.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test250.py	(revision 27955)
@@ -0,0 +1,102 @@
+#Test Name: SquareShelfTranForceNeg2dDakotaSampLinearPart
+import numpy as np
+from os import getcwd
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from partitioner import *
+from dmeth_params_set import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.timestepping.time_step = 1
+md.settings.output_frequency = 1
+md.timestepping.final_time = 4
+
+smb = np.ones((md.mesh.numberofvertices, )) * 3.6
+smb = np.array([smb, smb * -1]).T
+
+md.smb.mass_balance = smb
+md.smb.mass_balance = np.concatenate((md.smb.mass_balance, [[1.5, 3]]))
+md.transient.isthermal = 0
+#Dakota options
+
+#dakota version
+version = IssmConfig('_DAKOTA_VERSION_')
+version = float(version[0])
+
+#partitioning
+npart = md.mesh.numberofvertices
+partition = partitioner(md, 'package', 'linear', 'npart', npart)[0] - 1
+
+#variables
+md.qmu.variables.surface_mass_balance = normal_uncertain.normal_uncertain(
+    'descriptor', 'scaled_SmbMassBalance',
+    'mean', np.ones((npart, 1)),
+    'stddev', .1 * np.ones((npart, 1)),
+    'partition', partition
+    )
+
+#responses
+md.qmu.responses.MaxVel = response_function.response_function('descriptor','MaxVel')
+md.qmu.responses.IceVolume = response_function.response_function('descriptor','IceVolume')
+md.qmu.responses.MassFlux1 = response_function.response_function('descriptor','indexed_MassFlux_1')
+md.qmu.responses.MassFlux2 = response_function.response_function('descriptor','indexed_MassFlux_2')
+md.qmu.responses.MassFlux3 = response_function.response_function('descriptor','indexed_MassFlux_3')
+md.qmu.responses.MassFlux4 = response_function.response_function('descriptor','indexed_MassFlux_4')
+md.qmu.responses.MassFlux5 = response_function.response_function('descriptor','indexed_MassFlux_5')
+md.qmu.responses.massFlux6 = response_function.response_function('descriptor','indexed_MassFlux_6')
+
+#mass flux profiles
+md.qmu.mass_flux_profiles = ['../Exp/MassFlux1.exp', '../Exp/MassFlux2.exp', '../Exp/MassFlux3.exp', '../Exp/MassFlux4.exp', '../Exp/MassFlux5.exp', '../Exp/MassFlux6.exp']
+md.qmu.mass_flux_profile_directory = getcwd()
+
+#  nond_sampling study
+md.qmu.method = dakota_method.dakota_method('nond_samp')
+md.qmu.method = dmeth_params_set(md.qmu.method, 'seed', 1234, 'samples', 20, 'sample_type', 'lhs')
+dver = str(version)
+if ((int(dver[0]) == 4 and int(dver[2]) > 2) or int(dver[0]) > 4):
+    md.qmu.method = dmeth_params_set(md.qmu.method, 'rng', 'rnum2')
+
+#parameters
+md.qmu.params.direct = True
+md.qmu.params.analysis_components = ''
+md.qmu.params.interval_type = 'forward'
+md.qmu.params.tabular_graphics_data = True
+md.qmu.isdakota = 1
+
+if version >= 6:
+    md.qmu.params.analysis_driver = 'matlab'
+    md.qmu.params.evaluation_scheduling = 'master'
+    md.qmu.params.processors_per_evaluation = 2
+else:
+    md.qmu.params.analysis_driver = 'stressbalance'
+    md.qmu.params.evaluation_concurrency = 1
+
+md.stressbalance.reltol = 10**-5  #tighten for qmu analyses
+md.transient.requested_outputs = ['IceVolume']
+
+#solve
+md.verbose = verbose('000000000')  # this line is recommended
+md = solve(md, 'Transient', 'overwrite', 'y')
+md.qmu.results = md.results.dakota
+
+#Fields and tolerances to track changes
+md.results.dakota.moments = []
+for i in range(8):
+    md.results.dakota.moments.append(md.results.dakota.dresp_out[i].mean)
+
+for i in range(8):
+    md.results.dakota.moments.append(md.results.dakota.dresp_out[i].stddev)
+
+field_names = ['moments']
+field_tolerances = [1e-11]
+field_values = [md.results.dakota.moments]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test251.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test251.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test251.m	(revision 27955)
@@ -0,0 +1,85 @@
+%Test Name: SquareShelfTranForceNeg2dDakotaLocalLinearPart
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+
+smb = ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1 ];
+
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.5 3];
+md.transient.isthermal=0;
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%partitioning
+partition=partitioner(md,'package','linear','npart',md.mesh.numberofvertices)-1;
+
+%variables
+md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance',...
+	'mean',ones(md.mesh.numberofvertices,1),...
+	'stddev',100*ones(md.mesh.numberofvertices,1),...
+	'partition',partition);
+
+%responses
+md.qmu.responses.MaxVel=response_function('descriptor','MaxVel');
+md.qmu.responses.IceVolume=response_function('descriptor','IceVolume');
+md.qmu.responses.MassFlux1=response_function('descriptor','indexed_MassFlux_1');
+md.qmu.responses.MassFlux2=response_function('descriptor','indexed_MassFlux_2');
+md.qmu.responses.MassFlux3=response_function('descriptor','indexed_MassFlux_3');
+md.qmu.responses.MassFlux4=response_function('descriptor','indexed_MassFlux_4');
+md.qmu.responses.MassFlux5=response_function('descriptor','indexed_MassFlux_5');
+md.qmu.responses.massFlux6=response_function('descriptor','indexed_MassFlux_6');
+
+%mass flux profiles
+md.qmu.mass_flux_profiles={'../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp'};
+md.qmu.mass_flux_profile_directory=pwd;
+
+%method
+md.qmu.method     =dakota_method('nond_l');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.analysis_components='';
+md.qmu.params.interval_type='forward';
+md.qmu.params.fd_gradient_step_size='0.1';
+md.qmu.isdakota=1;
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+
+md.stressbalance.reltol=10^-5; %tighten for qmu analyses
+md.transient.requested_outputs={'IceVolume'};
+
+%solve
+md=solve(md,'Transient','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+%Fields and tolerances to track changes
+md.results.dakota.moments=[];
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).mean];
+end
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).stddev];
+end
+field_names     ={'moments'};
+field_tolerances={1e-11};
+field_values={...
+         md.results.dakota.moments,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test251.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test251.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test251.py	(revision 27955)
@@ -0,0 +1,99 @@
+#Test Name: SquareShelfTranForceNeg2dDakotaLocalLinearPart
+import numpy as np
+from os import getcwd
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from partitioner import *
+from dmeth_params_set import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.timestepping.time_step = 1
+md.settings.output_frequency = 1
+md.timestepping.final_time = 4
+
+smb = np.ones((md.mesh.numberofvertices, )) * 3.6
+smb = np.array([smb, smb * -1]).T
+
+md.smb.mass_balance = smb
+md.smb.mass_balance = np.concatenate((md.smb.mass_balance, [[1.5, 3]]))
+md.transient.isthermal = 0
+
+#Dakota options
+
+#dakota version
+version = IssmConfig('_DAKOTA_VERSION_')
+version = float(version[0])
+
+#partitioning
+npart = md.mesh.numberofvertices
+partition = partitioner(md, 'package', 'linear', 'npart', npart)[0] - 1
+
+#variables
+md.qmu.variables.surface_mass_balance = normal_uncertain.normal_uncertain(
+    'descriptor', 'scaled_SmbMassBalance',
+    'mean', np.ones((npart, 1)),
+    'stddev', 100 * np.ones((npart, 1)),
+    'partition', partition
+    )
+
+#responses
+md.qmu.responses.MaxVel = response_function.response_function('descriptor','MaxVel')
+md.qmu.responses.IceVolume = response_function.response_function('descriptor','IceVolume')
+md.qmu.responses.MassFlux1 = response_function.response_function('descriptor','indexed_MassFlux_1')
+md.qmu.responses.MassFlux2 = response_function.response_function('descriptor','indexed_MassFlux_2')
+md.qmu.responses.MassFlux3 = response_function.response_function('descriptor','indexed_MassFlux_3')
+md.qmu.responses.MassFlux4 = response_function.response_function('descriptor','indexed_MassFlux_4')
+md.qmu.responses.MassFlux5 = response_function.response_function('descriptor','indexed_MassFlux_5')
+md.qmu.responses.massFlux6 = response_function.response_function('descriptor','indexed_MassFlux_6')
+
+#mass flux profiles
+md.qmu.mass_flux_profiles = ['../Exp/MassFlux1.exp', '../Exp/MassFlux2.exp', '../Exp/MassFlux3.exp', '../Exp/MassFlux4.exp', '../Exp/MassFlux5.exp', '../Exp/MassFlux6.exp']
+md.qmu.mass_flux_profile_directory = getcwd()
+
+#method
+md.qmu.method = dakota_method.dakota_method('nond_l')
+
+#parameters
+md.qmu.params.direct = True
+md.qmu.params.analysis_components = ''
+md.qmu.params.interval_type = 'forward'
+md.qmu.params.fd_gradient_step_size = '0.1'
+md.qmu.isdakota = 1
+
+if version >= 6:
+    md.qmu.params.analysis_driver = 'matlab'
+    md.qmu.params.evaluation_scheduling = 'master'
+    md.qmu.params.processors_per_evaluation = 2
+else:
+    md.qmu.params.analysis_driver = 'stressbalance'
+    md.qmu.params.evaluation_concurrency = 1
+
+md.stressbalance.reltol = 10**-5  #tighten for qmu analyses
+md.transient.requested_outputs = ['IceVolume']
+
+#solve
+md.verbose = verbose('000000000')  # this line is recommended
+md = solve(md, 'Transient', 'overwrite', 'y')
+md.qmu.results = md.results.dakota
+
+#Fields and tolerances to track changes
+md.results.dakota.moments = []
+for i in range(8):
+    md.results.dakota.moments.append(md.results.dakota.dresp_out[i].mean)
+
+for i in range(8):
+    md.results.dakota.moments.append(md.results.dakota.dresp_out[i].stddev)
+
+field_names = ['moments']
+field_tolerances = [1e-11]
+field_values = [md.results.dakota.moments]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test252.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test252.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test252.m	(revision 27955)
@@ -0,0 +1,123 @@
+%Test Name: SquareShelfSMBGembClim
+md=triangle(model(),'../Exp/Square.exp',350000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.materials.rho_ice=910;
+md.cluster=generic('name',oshostname(),'np',3);
+
+% Use of Gemb method for SMB computation
+md.smb = SMBgemb(md.mesh,md.geometry);
+md.smb.dsnowIdx = 4;
+md.smb.swIdx = 1;
+md.smb.tcIdx = 2;
+
+%load hourly surface forcing date from 1979 to 2009:
+inputs=load('../Data/gemb_input.mat');
+
+%setup the inputs:
+md.smb.Ta=[repmat(inputs.Ta0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.V=[repmat(inputs.V0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.dswrf=[repmat(inputs.dsw0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.dlwrf=[repmat(inputs.dlw0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.P=[repmat(inputs.P0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.eAir=[repmat(inputs.eAir0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.pAir=[repmat(inputs.pAir0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.Vz=repmat(inputs.LP.Vz,md.mesh.numberofelements,1);
+md.smb.Tz=repmat(inputs.LP.Tz,md.mesh.numberofelements,1);
+md.smb.Tmean=repmat(inputs.LP.Tmean,md.mesh.numberofelements,1);
+md.smb.C=repmat(inputs.LP.C,md.mesh.numberofelements,1);
+
+md.smb.Ta=md.smb.Ta(:,1:365*8);
+md.smb.V=md.smb.V(:,1:365*8);
+md.smb.dswrf=md.smb.dswrf(:,1:365*8);
+md.smb.dlwrf=md.smb.dlwrf(:,1:365*8);
+md.smb.P=md.smb.P(:,1:365*8);
+md.smb.eAir=md.smb.eAir(:,1:365*8);
+md.smb.pAir=md.smb.pAir(:,1:365*8);
+
+md.timestepping.cycle_forcing=1;
+
+%smb settings
+md.smb.requested_outputs={'SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbEC','SmbA','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC'};
+
+%only run smb core:
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.isthermal=0;
+
+%time stepping:
+md.timestepping.start_time=1965.6;
+md.timestepping.final_time=1966.6;
+md.timestepping.time_step=1/365.0;
+md.timestepping.interp_forcing=0;
+
+%Run transient
+md=solve(md,'Transient');
+
+nlayers=size(md.results.TransientSolution(1).SmbT,2);
+for i=2:length(md.results.TransientSolution)
+   nlayers=min(size(md.results.TransientSolution(i).SmbT,2), nlayers);
+end
+
+%Fields and tolerances to track changes
+field_names      ={'Layers','SmbDz1','SmbT1' ,'SmbD1' ,'SmbRe1','SmbGdn1','SmbGsp1','SmbA1' ,'SmbEC1','SmbMassBalance1','SmbMAdd1','SmbDzAdd1','SmbFAC1',...
+	'SmbDz2','SmbT2' ,'SmbD2' ,'SmbRe2','SmbGdn2','SmbGsp2','SmbA2' ,'SmbEC2','SmbMassBalance2','SmbMAdd2','SmbDzAdd2','SmbFAC2',...
+	'SmbDz3','SmbT3' ,'SmbD3' ,'SmbRe3','SmbGdn3','SmbGsp3','SmbA3' ,'SmbEC3','SmbMassBalance3','SmbMAdd3','SmbDzAdd3','SmbFAC3',...
+	'SmbDz4','SmbT4' ,'SmbD4' ,'SmbRe4','SmbGdn4','SmbGsp4','SmbA4' ,'SmbEC4','SmbMassBalance4','SmbMAdd4','SmbDzAdd4','SmbFAC4'};
+field_tolerances ={1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,7e-12,1e-12,1e-12,1e-12,...
+                   1e-12,4e-12,1e-11,1e-10,2e-11,1e-11,1e-12,2e-11,1e-12,1e-12,1e-12,1e-11,...
+                   1e-12,4e-12,2e-12,2e-11,4e-11,1e-11,1e-12,4e-11,4e-11,1e-12,1e-12,1e-11,...
+                   1e-11,1e-11,4e-11,4e-11,2e-11,4e-11,1e-12,3e-12,1e-10,1e-12,1e-12,2e-11};
+
+field_values={...
+	(nlayers)...
+	(md.results.TransientSolution(1).SmbDz(1,1:nlayers)),...
+	(md.results.TransientSolution(1).SmbT(1,1:nlayers)),...
+	(md.results.TransientSolution(1).SmbD(1,1:nlayers)),...
+	(md.results.TransientSolution(1).SmbRe(1,1:nlayers)),...
+	(md.results.TransientSolution(1).SmbGdn(1,1:nlayers)),...
+	(md.results.TransientSolution(1).SmbGsp(1,1:nlayers)),...
+	(md.results.TransientSolution(1).SmbA(1,1:nlayers)),...
+	(md.results.TransientSolution(1).SmbEC(1)),...
+	(md.results.TransientSolution(1).SmbMassBalance(1)),...
+	(md.results.TransientSolution(1).SmbMAdd(1)),...
+	(md.results.TransientSolution(1).SmbDzAdd(1)),...
+	(md.results.TransientSolution(1).SmbFAC(1)),...
+   (md.results.TransientSolution(146).SmbDz(1,1:nlayers)),...
+	(md.results.TransientSolution(146).SmbT(1,1:nlayers)),...
+	(md.results.TransientSolution(146).SmbD(1,1:nlayers)),...
+	(md.results.TransientSolution(146).SmbRe(1,1:nlayers)),...
+	(md.results.TransientSolution(146).SmbGdn(1,1:nlayers)),...
+	(md.results.TransientSolution(146).SmbGsp(1,1:nlayers)),...
+	(md.results.TransientSolution(146).SmbA(1,1:nlayers)),...
+	(md.results.TransientSolution(146).SmbEC(1)),...
+	(md.results.TransientSolution(146).SmbMassBalance(1)),...
+	(md.results.TransientSolution(146).SmbMAdd(1)),...
+	(md.results.TransientSolution(146).SmbDzAdd(1)),...
+	(md.results.TransientSolution(146).SmbFAC(1)),...
+	(md.results.TransientSolution(147).SmbDz(1,1:nlayers)),...
+	(md.results.TransientSolution(147).SmbT(1,1:nlayers)),...
+	(md.results.TransientSolution(147).SmbD(1,1:nlayers)),...
+	(md.results.TransientSolution(147).SmbRe(1,1:nlayers)),...
+	(md.results.TransientSolution(147).SmbGdn(1,1:nlayers)),...
+	(md.results.TransientSolution(147).SmbGsp(1,1:nlayers)),...
+	(md.results.TransientSolution(147).SmbA(1,1:nlayers)),...
+	(md.results.TransientSolution(147).SmbEC(1)),...
+	(md.results.TransientSolution(147).SmbMassBalance(1)),...
+	(md.results.TransientSolution(147).SmbMAdd(1)),...
+	(md.results.TransientSolution(147).SmbDzAdd(1)),...
+	(md.results.TransientSolution(147).SmbFAC(1)),...
+	(md.results.TransientSolution(end).SmbDz(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbT(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbD(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbRe(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbGdn(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbGsp(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbA(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbEC(1)),...
+	(md.results.TransientSolution(end).SmbMassBalance(1)),...
+	(md.results.TransientSolution(end).SmbMAdd(1)),...
+	(md.results.TransientSolution(end).SmbDzAdd(1)),...
+	(md.results.TransientSolution(end).SmbFAC(1)),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test252.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test252.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test252.py	(revision 27955)
@@ -0,0 +1,136 @@
+#Test Name: SquareShelfSMBGembClim
+from socket import gethostname
+import sys
+
+import numpy as np
+
+from model import *
+from parameterize import *
+from setflowequation import *
+from setmask import *
+from SMBgemb import *
+from solve import *
+from triangle import *
+
+md = triangle(model(), '../Exp/Square.exp', 350000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.materials.rho_ice = 910
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+#Use of Gemb method for SMB computation
+md.smb = SMBgemb(md.mesh, md.geometry)
+md.smb.dsnowIdx = 4
+md.smb.swIdx = 1
+md.smb.tcIdx = 2
+
+#load hourly surface forcing date from 1979 to 2009:
+if sys.version_info.major == 2:
+    inputs = np.load('../Data/gemb_input.npy', allow_pickle=True).item()
+else:
+    inputs = np.load('../Data/gemb_input.npy', allow_pickle=True, encoding='bytes').item()
+
+#setup the inputs:
+md.smb.Ta = np.append(np.tile(np.conjugate(inputs[b'Ta0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.V = np.append(np.tile(np.conjugate(inputs[b'V0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.dswrf = np.append(np.tile(np.conjugate(inputs[b'dsw0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.dlwrf = np.append(np.tile(np.conjugate(inputs[b'dlw0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.P = np.append(np.tile(np.conjugate(inputs[b'P0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.eAir = np.append(np.tile(np.conjugate(inputs[b'eAir0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.pAir = np.append(np.tile(np.conjugate(inputs[b'pAir0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.Vz = np.tile(np.conjugate(inputs[b'LP']['Vz']), (md.mesh.numberofelements, 1)).flatten()
+md.smb.Tz = np.tile(np.conjugate(inputs[b'LP']['Tz']), (md.mesh.numberofelements, 1)).flatten()
+md.smb.Tmean = np.tile(np.conjugate(inputs[b'LP']['Tmean']), (md.mesh.numberofelements, 1)).flatten()
+md.smb.C = np.tile(np.conjugate(inputs[b'LP']['C']), (md.mesh.numberofelements, 1)).flatten()
+
+md.smb.Ta = md.smb.Ta[:, 0:365 * 8]
+md.smb.V = md.smb.V[:, 0:365 * 8]
+md.smb.dswrf = md.smb.dswrf[:, 0:365 * 8]
+md.smb.dlwrf = md.smb.dlwrf[:, 0:365 * 8]
+md.smb.P = md.smb.P[:, 0:365 * 8]
+md.smb.eAir = md.smb.eAir[:, 0:365 * 8]
+md.smb.pAir = md.smb.pAir[:, 0:365 * 8]
+
+md.timestepping.cycle_forcing = 1
+
+#smb settings
+md.smb.requested_outputs = ['SmbDz', 'SmbT', 'SmbD', 'SmbRe', 'SmbGdn', 'SmbGsp', 'SmbEC', 'SmbA', 'SmbMassBalance', 'SmbMAdd', 'SmbDzAdd', 'SmbFAC']
+
+#only run smb core:
+md.transient.isstressbalance = 0
+md.transient.ismasstransport = 0
+md.transient.isthermal = 0
+
+#time stepping:
+md.timestepping.start_time = 1965.6
+md.timestepping.final_time = 1966.6
+md.timestepping.time_step = 1. / 365.0
+md.timestepping.interp_forcing = 0.
+
+#Run transient
+md = solve(md, 'Transient')
+
+nlayers = md.results.TransientSolution[0].SmbT.shape[1]
+for i in range(1, len(md.results.TransientSolution)):
+    nlayers = np.minimum(md.results.TransientSolution[i].SmbT.shape[1], nlayers)
+
+#Fields and tolerances to track changes
+field_names = ['Layers', 'SmbDz1', 'SmbT1', 'SmbD1', 'SmbRe1', 'SmbGdn1', 'SmbGsp1', 'SmbA1', 'SmbEC1', 'SmbMassBalance1', 'SmbMAdd1', 'SmbDzAdd1', 'SmbFAC1',
+               'SmbDz2', 'SmbT2', 'SmbD2', 'SmbRe2', 'SmbGdn2', 'SmbGsp2', 'SmbA2', 'SmbEC2', 'SmbMassBalance2', 'SmbMAdd2', 'SmbDzAdd2', 'SmbFAC2',
+               'SmbDz3', 'SmbT3', 'SmbD3', 'SmbRe3', 'SmbGdn3', 'SmbGsp3', 'SmbA3', 'SmbEC3', 'SmbMassBalance3', 'SmbMAdd3', 'SmbDzAdd3', 'SmbFAC3',
+               'SmbDz4', 'SmbT4', 'SmbD4', 'SmbRe4', 'SmbGdn4', 'SmbGsp4', 'SmbA4', 'SmbEC4', 'SmbMassBalance4', 'SmbMAdd4', 'SmbDzAdd4', 'SmbFAC4']
+field_tolerances = [1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 7e-12, 1e-12, 1e-12, 1e-12,
+                    1e-12, 4e-12, 1e-11, 1e-10, 2e-11, 1e-11, 1e-12, 2e-11, 1e-12, 1e-12, 1e-12, 1e-11,
+                    1e-12, 4e-12, 2e-12, 2e-11, 4e-11, 1e-11, 1e-12, 4e-11, 4e-11, 1e-12, 1e-12, 1e-11,
+                    1e-11, 1e-11, 4e-11, 4e-11, 2e-11, 4e-11, 1e-12, 3e-12, 1e-10, 1e-12, 1e-12, 2e-11]
+# Shape is different in python solution (fixed using reshape) which can cause test failure
+field_values = [nlayers,
+                md.results.TransientSolution[0].SmbDz[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[0].SmbT[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[0].SmbD[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[0].SmbRe[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[0].SmbGdn[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[0].SmbGsp[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[0].SmbA[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[0].SmbEC[0],
+                md.results.TransientSolution[0].SmbMassBalance[0],
+                md.results.TransientSolution[0].SmbMAdd[0],
+                md.results.TransientSolution[0].SmbDzAdd[0],
+                md.results.TransientSolution[0].SmbFAC[0],
+                md.results.TransientSolution[145].SmbDz[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[145].SmbT[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[145].SmbD[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[145].SmbRe[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[145].SmbGdn[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[145].SmbGsp[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[145].SmbA[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[145].SmbEC[0],
+                md.results.TransientSolution[145].SmbMassBalance[0],
+                md.results.TransientSolution[145].SmbMAdd[0],
+                md.results.TransientSolution[145].SmbDzAdd[0],
+                md.results.TransientSolution[145].SmbFAC[0],
+                md.results.TransientSolution[146].SmbDz[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[146].SmbT[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[146].SmbD[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[146].SmbRe[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[146].SmbGdn[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[146].SmbGsp[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[146].SmbA[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[146].SmbEC[0],
+                md.results.TransientSolution[146].SmbMassBalance[0],
+                md.results.TransientSolution[146].SmbMAdd[0],
+                md.results.TransientSolution[146].SmbDzAdd[0],
+                md.results.TransientSolution[146].SmbFAC[0],
+                md.results.TransientSolution[-1].SmbDz[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[-1].SmbT[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[-1].SmbD[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[-1].SmbRe[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[-1].SmbGdn[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[-1].SmbGsp[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[-1].SmbA[0, 0:nlayers].reshape(1, -1),
+                md.results.TransientSolution[-1].SmbEC[0],
+                md.results.TransientSolution[-1].SmbMassBalance[0],
+                md.results.TransientSolution[-1].SmbMAdd[0],
+                md.results.TransientSolution[-1].SmbDzAdd[0],
+                md.results.TransientSolution[-1].SmbFAC[0]]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test253.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test253.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test253.m	(revision 27955)
@@ -0,0 +1,125 @@
+%Test Name: SquareShelfSMBGembClimConstrainT
+md=triangle(model(),'../Exp/Square.exp',350000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.materials.rho_ice=910;
+md.cluster=generic('name',oshostname(),'np',3);
+
+% Use of Gemb method for SMB computation
+md.smb = SMBgemb(md.mesh,md.geometry);
+md.smb.dsnowIdx = 3;
+md.smb.aIdx = 2;
+md.smb.denIdx = 1;
+
+%load hourly surface forcing date from 1979 to 2009:
+inputs=load('../Data/gemb_input.mat');
+
+%setup the inputs:
+md.smb.Ta=[repmat(inputs.Ta0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.V=[repmat(inputs.V0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.dswrf=[repmat(inputs.dsw0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.dlwrf=[repmat(inputs.dlw0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.P=[repmat(inputs.P0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.eAir=[repmat(inputs.eAir0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.pAir=[repmat(inputs.pAir0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.Vz=repmat(inputs.LP.Vz,md.mesh.numberofelements,1);
+md.smb.Tz=repmat(inputs.LP.Tz,md.mesh.numberofelements,1);
+md.smb.Tmean=repmat(inputs.LP.Tmean,md.mesh.numberofelements,1);
+md.smb.C=repmat(inputs.LP.C,md.mesh.numberofelements,1);
+
+md.smb.Ta=md.smb.Ta(:,1:365*8);
+md.smb.V=md.smb.V(:,1:365*8);
+md.smb.dswrf=md.smb.dswrf(:,1:365*8);
+md.smb.dlwrf=md.smb.dlwrf(:,1:365*8);
+md.smb.P=md.smb.P(:,1:365*8);
+md.smb.eAir=md.smb.eAir(:,1:365*8);
+md.smb.pAir=md.smb.pAir(:,1:365*8);
+
+md.timestepping.cycle_forcing=1;
+md.smb.isconstrainsurfaceT=1;
+
+%smb settings
+md.smb.requested_outputs={'SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbEC','SmbA','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC'};
+
+%only run smb core:
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.isthermal=0;
+
+%time stepping:
+md.timestepping.start_time=1965.6;
+md.timestepping.final_time=1966.6;
+md.timestepping.time_step=1/365.0;
+md.timestepping.interp_forcing=0;
+
+%Run transient
+md=solve(md,'Transient');
+
+nlayers=size(md.results.TransientSolution(1).SmbT,2);
+for i=2:length(md.results.TransientSolution)
+	nlayers=min(size(md.results.TransientSolution(i).SmbT,2), nlayers);
+end
+
+%Fields and tolerances to track changes
+field_names      ={'Layers','SmbDz1','SmbT1' ,'SmbD1' ,'SmbRe1','SmbGdn1','SmbGsp1','SmbA1' ,'SmbEC1','SmbMassBalance1','SmbMAdd1','SmbDzAdd1','SmbFAC1',...
+	'SmbDz2','SmbT2' ,'SmbD2' ,'SmbRe2','SmbGdn2','SmbGsp2','SmbA2' ,'SmbEC2','SmbMassBalance2','SmbMAdd2','SmbDzAdd2','SmbFAC2',...
+	'SmbDz3','SmbT3' ,'SmbD3' ,'SmbRe3','SmbGdn3','SmbGsp3','SmbA3' ,'SmbEC3','SmbMassBalance3','SmbMAdd3','SmbDzAdd3','SmbFAC3',...
+	'SmbDz4','SmbT4' ,'SmbD4' ,'SmbRe4','SmbGdn4','SmbGsp4','SmbA4' ,'SmbEC4','SmbMassBalance4','SmbMAdd4','SmbDzAdd4','SmbFAC4'};
+field_tolerances ={1e-12,...
+                   1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,...
+                   1e-12,4e-12,1e-11,1e-10,4e-11,1e-11,1e-12,1e-11,1e-12,1e-12,1e-12,1e-11,...
+                   1e-12,4e-12,2e-12,2e-11,1e-10,1e-11,1e-12,1e-11,1e-11,1e-12,1e-12,1e-11,...
+                   1e-11,1e-11,1e-10,1e-11,7e-12,3e-11,1e-12,4e-12,1e-10,1e-12,1e-12,2e-11};
+
+field_values={...
+	(nlayers)...
+	(md.results.TransientSolution(1).SmbDz(1,1:nlayers)),...
+	(md.results.TransientSolution(1).SmbT(1,1:nlayers)),...
+	(md.results.TransientSolution(1).SmbD(1,1:nlayers)),...
+	(md.results.TransientSolution(1).SmbRe(1,1:nlayers)),...
+	(md.results.TransientSolution(1).SmbGdn(1,1:nlayers)),...
+	(md.results.TransientSolution(1).SmbGsp(1,1:nlayers)),...
+	(md.results.TransientSolution(1).SmbA(1,1:nlayers)),...
+	(md.results.TransientSolution(1).SmbEC(1)),...
+	(md.results.TransientSolution(1).SmbMassBalance(1)),...
+	(md.results.TransientSolution(1).SmbMAdd(1)),...
+	(md.results.TransientSolution(1).SmbDzAdd(1)),...
+	(md.results.TransientSolution(1).SmbFAC(1)),...
+   (md.results.TransientSolution(146).SmbDz(1,1:nlayers)),...
+	(md.results.TransientSolution(146).SmbT(1,1:nlayers)),...
+	(md.results.TransientSolution(146).SmbD(1,1:nlayers)),...
+	(md.results.TransientSolution(146).SmbRe(1,1:nlayers)),...
+	(md.results.TransientSolution(146).SmbGdn(1,1:nlayers)),...
+	(md.results.TransientSolution(146).SmbGsp(1,1:nlayers)),...
+	(md.results.TransientSolution(146).SmbA(1,1:nlayers)),...
+	(md.results.TransientSolution(146).SmbEC(1)),...
+	(md.results.TransientSolution(146).SmbMassBalance(1)),...
+	(md.results.TransientSolution(146).SmbMAdd(1)),...
+	(md.results.TransientSolution(146).SmbDzAdd(1)),...
+	(md.results.TransientSolution(146).SmbFAC(1)),...
+	(md.results.TransientSolution(147).SmbDz(1,1:nlayers)),...
+	(md.results.TransientSolution(147).SmbT(1,1:nlayers)),...
+	(md.results.TransientSolution(147).SmbD(1,1:nlayers)),...
+	(md.results.TransientSolution(147).SmbRe(1,1:nlayers)),...
+	(md.results.TransientSolution(147).SmbGdn(1,1:nlayers)),...
+	(md.results.TransientSolution(147).SmbGsp(1,1:nlayers)),...
+	(md.results.TransientSolution(147).SmbA(1,1:nlayers)),...
+	(md.results.TransientSolution(147).SmbEC(1)),...
+	(md.results.TransientSolution(147).SmbMassBalance(1)),...
+	(md.results.TransientSolution(147).SmbMAdd(1)),...
+	(md.results.TransientSolution(147).SmbDzAdd(1)),...
+	(md.results.TransientSolution(147).SmbFAC(1)),...
+	(md.results.TransientSolution(end).SmbDz(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbT(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbD(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbRe(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbGdn(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbGsp(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbA(1,1:nlayers)),...
+	(md.results.TransientSolution(end).SmbEC(1)),...
+	(md.results.TransientSolution(end).SmbMassBalance(1)),...
+	(md.results.TransientSolution(end).SmbMAdd(1)),...
+	(md.results.TransientSolution(end).SmbDzAdd(1)),...
+	(md.results.TransientSolution(end).SmbFAC(1)),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test253.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test253.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test253.py	(revision 27955)
@@ -0,0 +1,143 @@
+#Test Name: SquareShelfSMBGembClimConstrainT
+import numpy as np
+import sys
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from SMBgemb import *
+
+md = triangle(model(), '../Exp/Square.exp', 350000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.materials.rho_ice = 910
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+#Use of Gemb method for SMB computation
+md.smb = SMBgemb(md.mesh, md.geometry)
+md.smb.dsnowIdx = 3
+md.smb.aIdx = 2
+md.smb.denIdx = 1
+
+#load hourly surface forcing date from 1979 to 2009:
+if sys.version_info.major == 2:
+    inputs = np.load('../Data/gemb_input.npy', allow_pickle=True).item()
+else:
+    inputs = np.load('../Data/gemb_input.npy', allow_pickle=True, encoding='bytes').item()
+
+#setup the inputs:
+md.smb.Ta = np.append(np.tile(np.conjugate(inputs[b'Ta0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.V = np.append(np.tile(np.conjugate(inputs[b'V0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.dswrf = np.append(np.tile(np.conjugate(inputs[b'dsw0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.dlwrf = np.append(np.tile(np.conjugate(inputs[b'dlw0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.P = np.append(np.tile(np.conjugate(inputs[b'P0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.eAir = np.append(np.tile(np.conjugate(inputs[b'eAir0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.pAir = np.append(np.tile(np.conjugate(inputs[b'pAir0']), (md.mesh.numberofelements, 1)), np.conjugate([inputs[b'dateN']]), axis=0)
+md.smb.Vz = np.tile(np.conjugate(inputs[b'LP']['Vz']), (md.mesh.numberofelements, 1)).flatten()
+md.smb.Tz = np.tile(np.conjugate(inputs[b'LP']['Tz']), (md.mesh.numberofelements, 1)).flatten()
+md.smb.Tmean = np.tile(np.conjugate(inputs[b'LP']['Tmean']), (md.mesh.numberofelements, 1)).flatten()
+md.smb.C = np.tile(np.conjugate(inputs[b'LP']['C']), (md.mesh.numberofelements, 1)).flatten()
+
+md.smb.Ta = md.smb.Ta[:, 0:365 * 8]
+md.smb.V = md.smb.V[:, 0:365 * 8]
+md.smb.dswrf = md.smb.dswrf[:, 0:365 * 8]
+md.smb.dlwrf = md.smb.dlwrf[:, 0:365 * 8]
+md.smb.P = md.smb.P[:, 0:365 * 8]
+md.smb.eAir = md.smb.eAir[:, 0:365 * 8]
+md.smb.pAir = md.smb.pAir[:, 0:365 * 8]
+
+md.timestepping.cycle_forcing = 1
+md.smb.isconstrainsurfaceT = 1
+
+#smb settings
+md.smb.requested_outputs = ['SmbDz', 'SmbT', 'SmbD', 'SmbRe', 'SmbGdn', 'SmbGsp', 'SmbEC', 'SmbA', 'SmbMassBalance', 'SmbMAdd', 'SmbDzAdd', 'SmbFAC']
+
+#only run smb core:
+md.transient.isstressbalance = 0
+md.transient.ismasstransport = 0
+md.transient.isthermal = 0
+
+#time stepping:
+md.timestepping.start_time = 1965.6
+md.timestepping.final_time = 1966.6
+md.timestepping.time_step = 1. / 365.0
+md.timestepping.interp_forcing = 0.
+
+#Run transient
+md = solve(md, 'Transient')
+
+nlayers = md.results.TransientSolution[0].SmbT.shape[1]
+for i in range(1, len(md.results.TransientSolution)):
+    nlayers=np.minimum(md.results.TransientSolution[i].SmbT.shape[1], nlayers)
+
+#Fields and tolerances to track changes
+field_names = [
+    'Layers',
+    'SmbDz1', 'SmbT1', 'SmbD1', 'SmbRe1', 'SmbGdn1', 'SmbGsp1', 'SmbA1', 'SmbEC1', 'SmbMassBalance1', 'SmbMAdd1', 'SmbDzAdd1', 'SmbFAC1',
+    'SmbDz2', 'SmbT2', 'SmbD2', 'SmbRe2', 'SmbGdn2', 'SmbGsp2', 'SmbA2', 'SmbEC2', 'SmbMassBalance2', 'SmbMAdd2', 'SmbDzAdd2', 'SmbFAC2',
+    'SmbDz3', 'SmbT3', 'SmbD3', 'SmbRe3', 'SmbGdn3', 'SmbGsp3', 'SmbA3', 'SmbEC3', 'SmbMassBalance3', 'SmbMAdd3', 'SmbDzAdd3', 'SmbFAC3',
+    'SmbDz4', 'SmbT4', 'SmbD4', 'SmbRe4', 'SmbGdn4', 'SmbGsp4', 'SmbA4', 'SmbEC4', 'SmbMassBalance4', 'SmbMAdd4', 'SmbDzAdd4', 'SmbFAC4'
+]
+field_tolerances = [
+    1e-12,
+    1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,
+    1e-12,4e-12,1e-11,1e-10,4e-11,1e-11,1e-12,1e-11,1e-12,1e-12,1e-12,1e-11,
+    1e-12,4e-12,2e-12,2e-11,1e-10,1e-11,1e-12,1e-11,1e-11,1e-12,1e-12,1e-11,
+    1e-11,1e-11,1e-10,1e-11,7e-12,3e-11,1e-12,4e-12,1e-10,1e-12,1e-12,2e-11
+]
+# Shape is different in python solution (fixed using reshape) which can cause test failure
+field_values = [
+    nlayers,
+    md.results.TransientSolution[0].SmbDz[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[0].SmbT[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[0].SmbD[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[0].SmbRe[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[0].SmbGdn[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[0].SmbGsp[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[0].SmbA[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[0].SmbEC[0],
+    md.results.TransientSolution[0].SmbMassBalance[0],
+    md.results.TransientSolution[0].SmbMAdd[0],
+    md.results.TransientSolution[0].SmbDzAdd[0],
+    md.results.TransientSolution[0].SmbFAC[0],
+    md.results.TransientSolution[145].SmbDz[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[145].SmbT[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[145].SmbD[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[145].SmbRe[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[145].SmbGdn[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[145].SmbGsp[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[145].SmbA[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[145].SmbEC[0],
+    md.results.TransientSolution[145].SmbMassBalance[0],
+    md.results.TransientSolution[145].SmbMAdd[0],
+    md.results.TransientSolution[145].SmbDzAdd[0],
+    md.results.TransientSolution[145].SmbFAC[0],
+    md.results.TransientSolution[146].SmbDz[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[146].SmbT[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[146].SmbD[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[146].SmbRe[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[146].SmbGdn[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[146].SmbGsp[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[146].SmbA[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[146].SmbEC[0],
+    md.results.TransientSolution[146].SmbMassBalance[0],
+    md.results.TransientSolution[146].SmbMAdd[0],
+    md.results.TransientSolution[146].SmbDzAdd[0],
+    md.results.TransientSolution[146].SmbFAC[0],
+    md.results.TransientSolution[-1].SmbDz[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[-1].SmbT[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[-1].SmbD[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[-1].SmbRe[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[-1].SmbGdn[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[-1].SmbGsp[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[-1].SmbA[0, 0:nlayers].reshape(1, -1),
+    md.results.TransientSolution[-1].SmbEC[0],
+    md.results.TransientSolution[-1].SmbMassBalance[0],
+    md.results.TransientSolution[-1].SmbMAdd[0],
+    md.results.TransientSolution[-1].SmbDzAdd[0],
+    md.results.TransientSolution[-1].SmbFAC[0]
+]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test254.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test254.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test254.m	(revision 27955)
@@ -0,0 +1,73 @@
+%Test Name: SquareShelfConstrainedMOLHO
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'MOLHO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%redo the parameter file for this special shelf. 
+%constant thickness, constrained (vy=0) flow into an icefront, 
+%from 0 m/yr at the grounding line.
+
+%tighten
+md.stressbalance.restol=10^-4;
+
+%needed later
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+xmin=min(md.mesh.x);
+xmax=max(md.mesh.x);
+
+di=md.materials.rho_ice/md.materials.rho_water;
+
+h=1000;
+md.geometry.thickness=h*ones(md.mesh.numberofvertices,1);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%Initial velocity and pressure
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+%Boundary conditions:
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+
+%constrain flanks to 0 normal velocity
+pos=find(md.mesh.x==xmin | md.mesh.x==xmax);
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvz(pos)=NaN;
+
+%constrain grounding line to 0 velocity
+pos=find(md.mesh.y==ymin);
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvy(pos)=0;
+
+%icefront
+nodeonicefront=zeros(md.mesh.numberofvertices,1);
+pos=find(md.mesh.y==ymax); nodeonicefront(pos)=1;
+md.mask.ice_levelset=-1+nodeonicefront;
+
+md.stressbalance.requested_outputs={'default','VySurface','VyShear','VyBase'};
+md=SetMOLHOBC(md);
+md=solve(md,'Stressbalance');
+
+%create analytical solution: strain rate is constant = ((rho_ice*g*h)/4B)^3 (Paterson, 4th Edition, page 292.
+%ey_c=(md.materials.rho_ice*md.constants.g*(1-di)*md.geometry.thickness./(4*md.materials.rheology_B)).^3;
+%vy_c=ey_c.*md.mesh.y*md.constants.yts;
+
+%Fields and tolerances to track changes
+field_names     ={'Vy','VySurface','VyShear','VyBase'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={(md.results.StressbalanceSolution.Vy),...
+					(md.results.StressbalanceSolution.VySurface),...
+					(md.results.StressbalanceSolution.VyShear),...
+					(md.results.StressbalanceSolution.VyBase)};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test254.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test254.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test254.py	(revision 27955)
@@ -0,0 +1,83 @@
+#Test Name: SquareShelfConstrainedMOLHO
+from model import *
+from socket import gethostname
+import numpy as np
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from paterson import paterson
+from solve import solve
+from SetMOLHOBC import SetMOLHOBC
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'MOLHO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+# redo the parameter file for this special shelf.
+# constant thickness, constrained (vy = 0) flow into an icefront,
+# from 0 m / yr at the grounding line.
+
+# tighten
+md.stressbalance.restol = 1e-4
+
+# needed later
+ymin = min(md.mesh.y)
+ymax = max(md.mesh.y)
+xmin = min(md.mesh.x)
+xmax = max(md.mesh.x)
+
+di = md.materials.rho_ice / md.materials.rho_water
+
+h = 1000.
+md.geometry.thickness = h * np.ones((md.mesh.numberofvertices))
+md.geometry.base = -md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+# Initial velocity and pressure
+md.initialization.vx = np.zeros((md.mesh.numberofvertices))
+md.initialization.vy = np.zeros((md.mesh.numberofvertices))
+md.initialization.vz = np.zeros((md.mesh.numberofvertices))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices))
+
+# Materials
+md.initialization.temperature = (273. - 20.) * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
+
+# Boundary conditions:
+md.stressbalance.spcvx = np.nan * np.ones((md.mesh.numberofvertices))
+md.stressbalance.spcvy = np.nan * np.ones((md.mesh.numberofvertices))
+md.stressbalance.spcvz = np.nan * np.ones((md.mesh.numberofvertices))
+
+# constrain flanks to 0 normal velocity
+pos = np.where(np.logical_or(md.mesh.x == xmin, md.mesh.x == xmax))
+md.stressbalance.spcvx[pos] = 0
+md.stressbalance.spcvz[pos] = np.nan
+
+# constrain grounding line to 0 velocity
+pos = np.where(md.mesh.y == ymin)
+md.stressbalance.spcvx[pos] = 0
+md.stressbalance.spcvy[pos] = 0
+
+# icefront
+nodeonicefront = np.zeros(md.mesh.numberofvertices)
+pos = np.where(md.mesh.y == ymax)
+nodeonicefront[pos] = 1
+md.mask.ice_levelset = -1 + nodeonicefront
+
+md.stressbalance.requested_outputs = ['default', 'VySurface', 'VyShear', 'VyBase']
+md = SetMOLHOBC(md)
+md = solve(md, 'Stressbalance')
+
+# create analytical solution: strain rate is constant = ((rho_ice * g * h) / 4B)^3 (Paterson, 4th Edition, page 292.
+# ey_c=(md.materials.rho_ice * md.constants.g * (1 - di) * md.geometry.thickness. / (4 * md.materials.rheology_B)).^3
+# vy_c = ey_c. * md.mesh.y * md.constants.yts
+
+# Fields and tolerances to track changes
+field_names = ['Vy', 'VySurface', 'VyShear', 'VyBase']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vy, md.results.StressbalanceSolution.VySurface, md.results.StressbalanceSolution.VyShear, md.results.StressbalanceSolution.VyBase]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test255.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test255.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test255.m	(revision 27955)
@@ -0,0 +1,36 @@
+%Test Name: SquareShelfStressMOLHO2dTransientIncrHydro
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'MOLHO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.hydrostatic_adjustment='Incremental';
+md=SetMOLHOBC(md);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test255.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test255.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test255.py	(revision 27955)
@@ -0,0 +1,53 @@
+#Test Name: SquareShelfStressMOLHO2dTransientIncrHydro
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from SetMOLHOBC import SetMOLHOBC
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'MOLHO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.masstransport.hydrostatic_adjustment = 'Incremental'
+md = SetMOLHOBC(md)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1',
+               'Bed1', 'Surface1', 'Thickness1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2',
+               'Bed2', 'Surface2', 'Thickness2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3',
+               'Bed3', 'Surface3', 'Thickness3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test256.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test256.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test256.m	(revision 27955)
@@ -0,0 +1,37 @@
+%Test Name: SquareShelfStressMOLHO2dTransientIncrNonHydro
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'MOLHO','all');
+md.geometry.base=md.geometry.base+50.; md.geometry.surface=md.geometry.surface+50.;
+md.cluster=generic('name',oshostname(),'np',1);
+md.masstransport.hydrostatic_adjustment='Incremental';
+md=SetMOLHOBC(md);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test256.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test256.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test256.py	(revision 27955)
@@ -0,0 +1,56 @@
+#Test Name: SquareShelfStressMOLHO2dTransientIncrNonHydro
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from SetMOLHOBC import SetMOLHOBC
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'MOLHO', 'all')
+md.geometry.base = md.geometry.base + 50.
+md.geometry.surface = md.geometry.surface + 50.
+md.cluster = generic('name', gethostname(), 'np', 1)
+md.masstransport.hydrostatic_adjustment = 'Incremental'
+md = SetMOLHOBC(md)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1',
+               'Bed1', 'Surface1', 'Thickness1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2',
+               'Bed2', 'Surface2', 'Thickness2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3',
+               'Bed3', 'Surface3', 'Thickness3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test257.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test257.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test257.m	(revision 27955)
@@ -0,0 +1,105 @@
+%Test Name: SquareShelfSMBarma
+md=triangle(model(),'../Exp/Square.exp',80000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','IceVolume','SmbMassBalance'};
+
+ymax = max(md.mesh.y);
+xmax = max(md.mesh.x);
+%Generate basin IDs for 3 basins
+idbasin      = zeros(md.mesh.numberofelements,1);
+iid1         = find(md.mesh.y>=2/3*ymax);
+iid2         = intersect(find(md.mesh.y<2/3*ymax),find(md.mesh.x>=1/3*xmax));
+iid3         = intersect(find(md.mesh.y<2/3*ymax),find(md.mesh.x<1/3*xmax));
+for ii=1:md.mesh.numberofelements
+    for vertex=1:3
+        if any(iid1==md.mesh.elements(ii,vertex)) %one vertex in basin 1
+            idbasin(ii) = 1;
+        end
+    end
+    if idbasin(ii)==0 %no vertex was found in basin 1
+        for vertex=1:3
+            if any(iid2==md.mesh.elements(ii,vertex)) %one vertex in basin 2
+                idbasin(ii) = 2;
+            end
+        end
+    end
+    if idbasin(ii)==0 %no vertex was found in basin 1 and 2
+        idbasin(ii) = 3;
+    end
+end
+
+%SMB parameters
+numparams                  = 2;
+numbreaks                  = 1;
+intercept                  = [0.5,1.0;1.0,0.6;,2.0,3.0]; %intercept values of SMB in basins [m ice eq./yr]
+trendlin                   = [0.0,0.0;0.01,0.001;-0.01,0]; %trend values of SMB in basins [m ice eq./yr^2]
+polynomialparams           = cat(3,intercept,trendlin);
+datebreaks                 = [3;3;3];
+
+md.timestepping.start_time = 0;
+md.timestepping.time_step  = 1/12;
+md.timestepping.final_time = 2;
+md.smb                     = SMBarma();
+md.smb.num_basins          = 3; %number of basins
+md.smb.basin_id            = idbasin; %prescribe basin ID number to elements
+md.smb.num_params          = numparams; %number of parameters in the polynomial
+md.smb.num_breaks          = numbreaks; %number of breakpoints
+md.smb.polynomialparams    = polynomialparams;
+md.smb.datebreaks          = datebreaks;
+md.smb.ar_order            = 4;
+md.smb.ma_order            = 1;
+md.smb.arma_timestep       = 2.0; %timestep of the ARMA model [yr]
+md.smb.arlag_coefs         = [[0.2,0.1,0.05,0.01];[0.4,0.2,-0.2,0.1];[0.4,-0.4,0.1,-0.1]];
+md.smb.malag_coefs         = [1.0;0;0.2];
+lm0                        = [1e-4*[1,-0.1,-1];1e-6*[1,-0.1,-1];1e-5*[1,-0.1,-1]];
+lm1                        = [1e-4*[2,-0.2,-2];1e-6*[2,-0.2,-2];1e-5*[2,-0.2,-2]];
+lm2                        = [1e-4*[3,-0.3,-3];1e-6*[3,-0.3,-3];1e-5*[3,-0.3,-3]];
+lm3                        = [1e-4*[4,-0.4,-4];1e-6*[4,-0.4,-4];1e-5*[4,-0.4,-4]];
+lm4                        = [1e-4*[5,-0.5,-5];1e-6*[5,-0.5,-5];1e-5*[5,-0.5,-5]];
+lm5                        = [1e-4*[6,-0.6,-6];1e-6*[6,-0.6,-6];1e-5*[6,-0.6,-6]];
+lm6                        = [1e-4*[7,-0.7,-7];1e-6*[7,-0.7,-7];1e-5*[7,-0.7,-7]];
+lm7                        = [1e-4*[8,-0.8,-8];1e-6*[8,-0.8,-8];1e-5*[8,-0.8,-8]];
+lm8                        = [1e-4*[9,-0.9,-9];1e-6*[9,-0.9,-9];1e-5*[9,-0.9,-9]];
+lm9                        = [1e-4*[10,-1,-10];1e-6*[10,-1.0,-10];1e-5*[10,-1.0,-10]];
+lm10                       = [1e-4*[11,-1.1,-11];1e-6*[11,-1.1,-11];1e-5*[11,-1.1,-11]];
+lm11                       = [1e-4*[12,-1.2,-12];1e-6*[12,-1.2,-12];1e-5*[12,-1.2,-12]];
+md.smb.lapserates          = cat(3,lm0,lm1,lm2,lm3,lm4,lm5,lm6,lm7,lm8,lm9,lm10,lm11);
+md.smb.elevationbins       = repmat([100,300;200,400;250,450],1,1,12);
+
+%Stochastic forcing
+md.stochasticforcing.isstochasticforcing = 1;
+md.stochasticforcing.fields              = [{'SMBarma'}];
+md.stochasticforcing.covariance          = [[0.15 0.08 -0.02];[0.08 0.12 -0.05];[-0.02 -0.05 0.1]]; %global covariance among- and between-fields
+md.stochasticforcing.randomflag          = 0; %fixed random seeds
+md.stochasticforcing.stochastictimestep  = 1.0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Thickness1','Volume1','SmbMassBalance1','Vx2','Vy2','Vel2','Thickness2','Volume2','SmbMassBalance2','Vx3','Vy3','Vel3','Thickness3','Volume3','SmbMassBalance3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13...
+						1e-12,1e-12,1e-12,1e-12,1e-12,1e-12};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(12).Vx),...
+	(md.results.TransientSolution(12).Vy),...
+	(md.results.TransientSolution(12).Vel),...
+	(md.results.TransientSolution(12).Thickness),...
+	(md.results.TransientSolution(12).IceVolume),...
+	(md.results.TransientSolution(12).SmbMassBalance),...
+	(md.results.TransientSolution(24).Vx),...
+	(md.results.TransientSolution(24).Vy),...
+	(md.results.TransientSolution(24).Vel),...
+	(md.results.TransientSolution(24).Thickness),...
+	(md.results.TransientSolution(24).IceVolume),...
+	(md.results.TransientSolution(24).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test257.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test257.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test257.py	(revision 27955)
@@ -0,0 +1,118 @@
+#Test Name: SquareShelfSMBarma
+import numpy as np
+from model import *
+from socket import gethostname
+from parameterize import parameterize
+from setflowequation import setflowequation
+from setmask import setmask
+from SMBarma import SMBarma
+from solve import solve
+from triangle import triangle
+
+
+md = triangle(model(), '../Exp/Square.exp', 80000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.requested_outputs = ['default', 'IceVolume', 'SmbMassBalance']
+
+ymax = max(md.mesh.y)
+xmax = max(md.mesh.x)
+# Generate basin IDs for 3 basins
+idbasin = np.zeros((md.mesh.numberofelements,))
+iid1 = np.where(md.mesh.y >= 2. / 3. * ymax)[0]
+iid2 = np.where(np.logical_and(md.mesh.y < 2. / 3. * ymax, md.mesh.x >= 1. / 3. * xmax))[0]
+iid3 = np.where(np.logical_and(md.mesh.y < 2. / 3. * ymax, md.mesh.x < 1. / 3. * xmax))[0]
+for ii in range(md.mesh.numberofelements):
+    for vertex in range(3):
+        if md.mesh.elements[ii][vertex] - 1 in iid1:  # one vertex in basin 1; NOTE: offset because of 1-based vertex indexing
+            idbasin[ii] = 1
+    if idbasin[ii] == 0:  # no vertex was found in basin 1
+        for vertex in range(3):
+            if md.mesh.elements[ii][vertex] - 1 in iid2:  # one vertex in basin 2; NOTE: offset because of 1-based vertex indexing
+                idbasin[ii] = 2
+    if idbasin[ii] == 0:  # no vertex was found in basin 1 and 2
+        idbasin[ii] = 3
+
+# SMB parameters
+numparams                  = 2
+numbreaks                  = 1
+intercept                  = np.array([[0.5,1.0],[1.0,0.6],[2.0,3.0]]) 
+trendlin                   = np.array([[0.0,0.0],[0.01,0.001],[-0.01,0]])
+polynomialparams           = np.transpose(np.stack((intercept,trendlin)),(1,2,0)) 
+datebreaks                 = np.array([[3],[3],[3]]);
+
+md.timestepping.start_time = 0
+md.timestepping.time_step = 1/12
+md.timestepping.final_time = 2
+md.smb = SMBarma()
+md.smb.num_basins = 3  # number of basins
+md.smb.basin_id = idbasin  # prescribe basin ID number to elements;
+md.smb.num_params        = numparams
+md.smb.num_breaks        = numbreaks
+md.smb.polynomialparams  = polynomialparams
+md.smb.datebreaks        = datebreaks
+md.smb.ar_order = 4
+md.smb.ma_order = 1
+md.smb.arma_timestep = 2.0  #timestep of the ARMA model [yr]
+md.smb.arlag_coefs = np.array([[0.2, 0.1, 0.05, 0.01], [0.4, 0.2, -0.2, 0.1], [0.4, -0.4, 0.1, -0.1]])
+md.smb.malag_coefs = np.array([[1.0],[0],[0.2]])
+
+lm0                   = np.array([1e-4*np.array([1,-0.1,-1]),1e-6*np.array([1,-0.1,-1]),1e-5*np.array([1,-0.1,-1])])
+lm1                   = np.array([1e-4*np.array([2,-0.2,-2]),1e-6*np.array([2,-0.2,-2]),1e-5*np.array([2,-0.2,-2])])
+lm2                   = np.array([1e-4*np.array([3,-0.3,-3]),1e-6*np.array([3,-0.3,-3]),1e-5*np.array([3,-0.3,-3])])
+lm3                   = np.array([1e-4*np.array([4,-0.4,-4]),1e-6*np.array([4,-0.4,-4]),1e-5*np.array([4,-0.4,-4])])
+lm4                   = np.array([1e-4*np.array([5,-0.5,-5]),1e-6*np.array([5,-0.5,-5]),1e-5*np.array([5,-0.5,-5])])
+lm5                   = np.array([1e-4*np.array([6,-0.6,-6]),1e-6*np.array([6,-0.6,-6]),1e-5*np.array([6,-0.6,-6])])
+lm6                   = np.array([1e-4*np.array([7,-0.7,-7]),1e-6*np.array([7,-0.7,-7]),1e-5*np.array([7,-0.7,-7])])
+lm7                   = np.array([1e-4*np.array([8,-0.8,-8]),1e-6*np.array([8,-0.8,-8]),1e-5*np.array([8,-0.8,-8])])
+lm8                   = np.array([1e-4*np.array([9,-0.9,-9]),1e-6*np.array([9,-0.9,-9]),1e-5*np.array([9,-0.9,-9])])
+lm9                   = np.array([1e-4*np.array([10,-1.0,-10]),1e-6*np.array([10,-1.0,-10]),1e-5*np.array([10,-1.0,-10])])
+lm10                  = np.array([1e-4*np.array([11,-1.1,-11]),1e-6*np.array([11,-1.1,-11]),1e-5*np.array([11,-1.1,-11])])
+lm11                  = np.array([1e-4*np.array([12,-1.2,-12]),1e-6*np.array([12,-1.2,-12]),1e-5*np.array([12,-1.2,-12])])
+md.smb.lapserates     = np.stack((lm0,lm1,lm2,lm3,lm4,lm5,lm6,lm7,lm8,lm9,lm10,lm11),axis=2)
+ebins                 = np.array([[100,300],[200,400],[250,450]])
+md.smb.elevationbins  = np.stack([ebins for ii in range(12)],axis=2)
+
+
+# Stochastic forcing
+md.stochasticforcing.isstochasticforcing = 1
+md.stochasticforcing.fields = ['SMBarma']
+md.stochasticforcing.covariance = np.array([[0.15, 0.08, -0.02], [0.08, 0.12, -0.05], [-0.02, -0.05, 0.1]])  # global covariance among- and between-fields
+md.stochasticforcing.randomflag = 0  # fixed random seeds
+md.stochasticforcing.stochastictimestep  = 1.0
+
+md = solve(md, 'Transient')
+
+# Fields and tolerances to track changes
+field_names = [
+    'Vx1', 'Vy1', 'Vel1', 'Thickness1', 'Volume1', 'SmbMassBalance1',
+    'Vx2', 'Vy2', 'Vel2', 'Thickness2', 'Volume2', 'SmbMassBalance2',
+    'Vx3', 'Vy3', 'Vel3', 'Thickness3', 'Volume3', 'SmbMassBalance3'
+]
+field_tolerances = [
+    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+    1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12
+]
+field_values = [
+    md.results.TransientSolution[0].Vx,
+    md.results.TransientSolution[0].Vy,
+    md.results.TransientSolution[0].Vel,
+    md.results.TransientSolution[0].Thickness,
+    md.results.TransientSolution[0].IceVolume,
+    md.results.TransientSolution[0].SmbMassBalance,
+    md.results.TransientSolution[11].Vx,
+    md.results.TransientSolution[11].Vy,
+    md.results.TransientSolution[11].Vel,
+    md.results.TransientSolution[11].Thickness,
+    md.results.TransientSolution[11].IceVolume,
+    md.results.TransientSolution[11].SmbMassBalance,
+    md.results.TransientSolution[23].Vx,
+    md.results.TransientSolution[23].Vy,
+    md.results.TransientSolution[23].Vel,
+    md.results.TransientSolution[23].Thickness,
+    md.results.TransientSolution[23].IceVolume,
+    md.results.TransientSolution[23].SmbMassBalance
+]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test260.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test260.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test260.m	(revision 27955)
@@ -0,0 +1,21 @@
+%Test Name: SquareShelfStressSSA2dEnhanced
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md.materials=matenhancedice();
+md.materials.rheology_B=3.15e8*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.materials.rheology_E=ones(md.mesh.numberofvertices,1);
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test260.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test260.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test260.py	(revision 27955)
@@ -0,0 +1,29 @@
+#Test Name: SquareShelfStressSSA2dEnhanced
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from matenhancedice import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md.materials = matenhancedice()
+md.materials.rheology_B = 3.15e8 * np.ones(md.mesh.numberofvertices, )
+md.materials.rheology_n = 3 * np.ones(md.mesh.numberofelements, )
+md.materials.rheology_E = np.ones(md.mesh.numberofvertices, )
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test261.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test261.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test261.m	(revision 27955)
@@ -0,0 +1,28 @@
+%Test Name: SquareShelfConstrainedTranEnhanced
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.materials=matenhancedice();
+md.materials.rheology_B=3.15e8*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.materials.rheology_E=ones(md.mesh.numberofvertices,1);
+md.transient.isstressbalance=1;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test261.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test261.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test261.py	(revision 27955)
@@ -0,0 +1,36 @@
+#Test Name: SquareShelfConstrainedTranEnhanced
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from matenhancedice import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.materials = matenhancedice()
+md.materials.rheology_B = 3.15e8 * np.ones(md.mesh.numberofvertices, )
+md.materials.rheology_n = 3 * np.ones(md.mesh.numberofelements, )
+md.materials.rheology_E = np.ones(md.mesh.numberofvertices, )
+md.transient.isstressbalance = 1
+md.transient.ismasstransport = 0
+md.transient.issmb = 1
+md.transient.isthermal = 1
+md.transient.isgroundingline = 0
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test270.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test270.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test270.m	(revision 27955)
@@ -0,0 +1,21 @@
+%Test Name: SquareShelfStressSSA2dDamage
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md.materials=matdamageice();
+md=parameterize(md,'../Par/SquareShelf.par');
+md.damage.isdamage=1;
+md.damage.D=0.5*ones(md.mesh.numberofvertices,1);
+md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test270.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test270.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test270.py	(revision 27955)
@@ -0,0 +1,30 @@
+#Test Name: SquareShelfStressSSA2dDamage
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from matdamageice import matdamageice
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md.materials = matdamageice()
+md = parameterize(md, '../Par/SquareShelf.py')
+md.damage.isdamage = 1
+md.damage.D = 0.5 * np.ones(md.mesh.numberofvertices)
+md.damage.spcdamage = np.nan * np.ones(md.mesh.numberofvertices)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test272.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test272.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test272.m	(revision 27955)
@@ -0,0 +1,40 @@
+%Test Name: SquareShelfCMDSSA2dDamage
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md.materials=matdamageice();
+md=parameterize(md,'../Par/SquareShelf.par');
+md.damage.isdamage=1;
+md.damage.D=0.5*ones(md.mesh.numberofvertices,1);
+md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+md=setflowequation(md,'SSA','all');
+md.verbose=verbose('control',true);
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'DamageDbar'};
+md.inversion.min_parameters=zeros(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=(1-10^-13)*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=0.9*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2.*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.99*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; 
+md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','DamageDbar','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12};
+field_values={...
+   (md.results.StressbalanceSolution.Gradient1),...
+   (md.results.StressbalanceSolution.J),...
+   (md.results.StressbalanceSolution.DamageDbar),...
+   (md.results.StressbalanceSolution.Pressure),...
+   (md.results.StressbalanceSolution.Vel),...
+   (md.results.StressbalanceSolution.Vx),...
+   (md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test272.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test272.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test272.py	(revision 27955)
@@ -0,0 +1,50 @@
+#Test Name: SquareShelfCMDSSA2dDamage
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from matdamageice import matdamageice
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md.materials = matdamageice()
+md = parameterize(md, '../Par/SquareShelf.py')
+md.damage.isdamage = 1
+md.damage.D = 0.5 * np.ones(md.mesh.numberofvertices)
+md.damage.spcdamage = np.nan * np.ones(md.mesh.numberofvertices)
+md = setflowequation(md, 'SSA', 'all')
+
+#control parameters
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['DamageDbar']
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['DamageDbar']
+md.inversion.min_parameters = 10**-13 * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.nsteps = 2
+md.inversion.cost_functions = [101]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, len(md.inversion.cost_functions)))
+md.inversion.gradient_scaling = 0.9 * np.ones((md.inversion.nsteps, len(md.inversion.control_parameters)))
+md.inversion.maxiter_per_step = 2. * np.ones((md.inversion.nsteps))
+md.inversion.step_threshold = 0.99 * np.ones((md.inversion.nsteps))
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs = md.initialization.vy
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Gradient', 'Misfits', 'DamageDbar', 'Pressure', 'Vel', 'Vx', 'Vy']
+field_tolerances = [1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12]
+field_values = [md.results.StressbalanceSolution.Gradient1,
+                md.results.StressbalanceSolution.J,
+                md.results.StressbalanceSolution.DamageDbar,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test273.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test273.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test273.m	(revision 27955)
@@ -0,0 +1,27 @@
+%Test Name: SquareShelfStressSSA2dDamageUpdate
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md.materials=matdamageice();
+md=parameterize(md,'../Par/SquareShelf.par');
+md.damage.isdamage=1;
+md.damage.D=0.*ones(md.mesh.numberofvertices,1);
+md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.stressbalance.requested_outputs={'default','NewDamage'};
+md.damage.stress_threshold=1.3e5;
+md.damage.kappa=2.8;
+
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure','NewDamage'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.NewDamage),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test273.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test273.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test273.py	(revision 27955)
@@ -0,0 +1,36 @@
+#Test Name: SquareShelfStressSSA2dDamageUpdate
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from matdamageice import matdamageice
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md.materials = matdamageice()
+md = parameterize(md, '../Par/SquareShelf.py')
+md.damage.isdamage = 1
+md.damage.D = 0. * np.ones(md.mesh.numberofvertices)
+md.damage.spcdamage = np.nan * np.ones(md.mesh.numberofvertices)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.stressbalance.requested_outputs = ['default', 'NewDamage']
+md.damage.stress_threshold = 1.3e5
+md.damage.kappa = 2.8
+
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure', 'NewDamage']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.NewDamage]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test274.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test274.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test274.m	(revision 27955)
@@ -0,0 +1,23 @@
+%Test Name: SquareShelfStressSSA2dDamageRift
+md=triangle(model(),'../Exp/SquareHole.exp','../Exp/Rifts.exp',50000.);
+md=meshprocessrifts(md,'../Exp/Square.exp');
+md=setmask(md,'all','');
+md.materials=matdamageice();
+md=parameterize(md,'../Par/SquareShelf2.par');
+md.damage.isdamage=1;
+md.damage.D=0.5*ones(md.mesh.numberofvertices,1);
+md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+md=setflowequation(md,'SSA','all');
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={7e-8,3e-8,3e-8,1e-11};
+field_values={...
+	   (md.results.StressbalanceSolution.Vx),...
+	   (md.results.StressbalanceSolution.Vy),...
+	   (md.results.StressbalanceSolution.Vel),...
+	   (md.results.StressbalanceSolution.Pressure),...
+	   };
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test274.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test274.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test274.py	(revision 27955)
@@ -0,0 +1,34 @@
+#Test Name: SquareShelfStressSSA2dDamageRift
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from matdamageice import matdamageice
+from meshprocessrifts import meshprocessrifts
+from generic import generic
+
+md = triangle(model(), '../Exp/SquareHole.exp', '../Exp/Rifts.exp', 50000.)
+md = meshprocessrifts(md, '../Exp/Square.exp')
+md = setmask(md, 'all', '')
+md.materials = matdamageice()
+md = parameterize(md, '../Par/SquareShelf2.py')
+md.damage.isdamage = 1
+md.damage.D = 0.5 * np.ones(md.mesh.numberofvertices)
+md.damage.spcdamage = np.nan * np.ones(md.mesh.numberofvertices)
+md = setflowequation(md, 'SSA', 'all')
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+print(md.rifts.riftstruct[0]['fill'])
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure']
+field_tolerances = [7e-8, 3e-8, 3e-8, 1e-11]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test275.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test275.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test275.m	(revision 27955)
@@ -0,0 +1,29 @@
+%Test Name: SquareShelfDamageEvolutionSSA2dPralong
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md.materials=matdamageice();
+md=parameterize(md,'../Par/SquareShelf.par');
+md.damage.isdamage=1;
+md.damage.D=0.1*ones(md.mesh.numberofvertices,1);
+md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+md.damage.law=1;
+
+md.damage.c1=1.e-11;
+md.damage.c2=0.4;
+md.damage.c3=1.e-3;
+md.damage.healing=0.4;
+md.damage.stress_threshold=1e5;
+md.damage.stabilization=1;
+
+md.damage.requested_outputs={'default','DamageF'};
+
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'DamageEvolution');
+
+field_names={'D','F'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+		(md.results.DamageEvolutionSolution.DamageDbar),...
+		(md.results.DamageEvolutionSolution.DamageF),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test275.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test275.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test275.py	(revision 27955)
@@ -0,0 +1,38 @@
+#Test Name: SquareShelfDamageEvolutionSSA2dPralong
+import numpy as np
+from triangle import triangle
+from model import *
+from socket import gethostname
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from generic import generic
+from solve import solve
+from matdamageice import matdamageice
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md.materials = matdamageice()
+md = parameterize(md, '../Par/SquareShelf.py')
+md.damage.isdamage = 1
+md.damage.D = 0.1 * np.ones(md.mesh.numberofvertices)
+md.damage.spcdamage = np.nan * np.ones(md.mesh.numberofvertices)
+md.damage.law = 1
+
+md.damage.c1 = 1.e-11
+md.damage.c2 = 0.4
+md.damage.c3 = 1.e-3
+md.damage.healing = 0.4
+md.damage.stress_threshold = 1.e5
+md.damage.stabilization = 1
+
+md.damage.requested_outputs = ['default', 'DamageF']
+
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'DamageEvolution')
+
+field_names = ['D', 'F']
+field_tolerances = [1.e-13, 1.e-13]
+field_values = [md.results.DamageEvolutionSolution.DamageDbar,
+                md.results.DamageEvolutionSolution.DamageF]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test280.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test280.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test280.m	(revision 27955)
@@ -0,0 +1,22 @@
+%Test Name: SquareShelfStressSSA2dHigherOrder
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+field_names={};
+field_tolerances={};
+field_values={};
+for i={'P1bubble','P1bubblecondensed','P2'}
+	md.flowequation.fe_SSA=i{1};
+	md=solve(md,'Stressbalance');
+	field_names     ={field_names{:},['Vx' i{1}],['Vy' i{1}],['Vel' i{1}],['Pressure' i{1}]};
+	field_tolerances={field_tolerances{:},1e-12,1e-13,1e-13,1e-13};
+	field_values={field_values{:},...
+		(md.results.StressbalanceSolution.Vx),...
+		(md.results.StressbalanceSolution.Vy),...
+		(md.results.StressbalanceSolution.Vel),...
+		(md.results.StressbalanceSolution.Pressure),...
+		};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test280.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test280.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test280.py	(revision 27955)
@@ -0,0 +1,29 @@
+#Test Name: SquareShelfStressSSA2dHigherOrder
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+from ContourToMesh import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+field_names = []
+field_tolerances = []
+field_values = []
+for i in ['P1bubble', 'P1bubblecondensed', 'P2']:
+    md.flowequation.fe_SSA = i
+    md = solve(md, 'Stressbalance')
+    field_names = field_names + ['Vx' + i, 'Vy' + i, 'Vel' + i, 'Pressure' + i]
+    field_tolerances = field_tolerances + [1e-12, 1e-13, 1e-13, 1e-13]
+    field_values = field_values + [md.results.StressbalanceSolution.Vx,
+                                   md.results.StressbalanceSolution.Vy,
+                                   md.results.StressbalanceSolution.Vel,
+                                   md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test285.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test285.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test285.m	(revision 27955)
@@ -0,0 +1,24 @@
+%Test Name: SquareShelfStressHOHigherOrder
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+field_names={};
+field_tolerances={};
+field_values={};
+for i={'P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P1xP3','P2xP4'}
+	md.flowequation.fe_HO=i{1};
+	md=solve(md,'Stressbalance');
+	field_names     ={field_names{:},['Vx' i{1}],['Vy' i{1}],['Vz' i{1}],['Vel' i{1}],['Pressure' i{1}]};
+	field_tolerances={field_tolerances{:},6.7e-08,5e-08,2e-08,5e-08,1e-13};
+	field_values={field_values{:},...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test285.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test285.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test285.py	(revision 27955)
@@ -0,0 +1,31 @@
+#Test Name: SquareShelfStressHOHigherOrder
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+from ContourToMesh import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+field_names = []
+field_tolerances = []
+field_values = []
+for i in ['P1bubble', 'P1bubblecondensed', 'P1xP2', 'P2xP1', 'P2', 'P1xP3', 'P2xP4']:
+    md.flowequation.fe_HO = i
+    md = solve(md, 'Stressbalance')
+    field_names = field_names + ['Vx' + i, 'Vy' + i, 'Vz' + i, 'Vel' + i, 'Pressure' + i]
+    field_tolerances = field_tolerances + [6.7e-08, 5e-08, 2e-08, 5e-08, 1e-13]
+    field_values = field_values + [md.results.StressbalanceSolution.Vx,
+                                   md.results.StressbalanceSolution.Vy,
+                                   md.results.StressbalanceSolution.Vz,
+                                   md.results.StressbalanceSolution.Vel,
+                                   md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test290.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test290.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test290.m	(revision 27955)
@@ -0,0 +1,20 @@
+%Test Name: SquareShelfStressFSP2P1
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'FS','all');
+md.flowequation.fe_FS='TaylorHood';
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={5e-5,5e-5,8e-4,5e-4,2e-7};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test290.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test290.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test290.py	(revision 27955)
@@ -0,0 +1,28 @@
+#Test Name: SquareShelfStressFSP2P1
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+from ContourToMesh import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'FS', 'all')
+md.flowequation.fe_FS = 'TaylorHood'
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [5e-5, 5e-5, 8e-4, 5e-4, 2e-7]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test291.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test291.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test291.m	(revision 27955)
@@ -0,0 +1,20 @@
+%Test Name: SquareShelfStressFSP4z
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,2,1.);
+md=setflowequation(md,'FS','all');
+md.flowequation.fe_FS='OneLayerP4z';
+md.cluster=generic('name',oshostname(),'np',1);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={5e-5,5e-5,8e-5,5e-5,1e-7};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test291.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test291.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test291.py	(revision 27955)
@@ -0,0 +1,28 @@
+#Test Name: SquareShelfStressFSP4z
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+from ContourToMesh import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(2, 1.)
+md = setflowequation(md, 'FS', 'all')
+md.flowequation.fe_FS = 'OneLayerP4z'
+md.cluster = generic('name', gethostname(), 'np', 1)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [5e-5, 5e-5, 8e-5, 5e-5, 1e-7]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test292.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test292.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test292.m	(revision 27955)
@@ -0,0 +1,37 @@
+%Test Name: SquareShelfTranSSA2dFloatingMeltParam
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.basalforcings=linearbasalforcings(md.basalforcings);
+md.basalforcings.deepwater_melting_rate=[50 100;0 5];
+md.timestepping.interp_forcing=0;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Base1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Base2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Base3','Surface3','Thickness3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test292.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test292.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test292.py	(revision 27955)
@@ -0,0 +1,52 @@
+#Test Name: SquareShelfTranSSA2dFloatingMeltParam
+
+from model import *
+from socket import gethostname
+import numpy as np
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from generic import generic
+from linearbasalforcings import linearbasalforcings
+
+md = triangle(model(), '../Exp/Square.exp', 150000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.basalforcings = linearbasalforcings(md.basalforcings)
+md.basalforcings.deepwater_melting_rate = np.array([[50., 100.], [0., 5.]])
+md.timestepping.interp_forcing = 0
+md = solve(md, 'Transient')
+
+# Fields and tolerances to track changes
+
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Base1', 'Surface1', 'Thickness1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Base2', 'Surface2', 'Thickness2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Base3', 'Surface3', 'Thickness3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test293.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test293.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test293.m	(revision 27955)
@@ -0,0 +1,47 @@
+%Test Name: SquareShelfTranSSA2dMismipFloatingMeltParam
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.constants.yts = 365.2422*24.*3600.;
+md.basalforcings=mismipbasalforcings(md.basalforcings);
+md.transient.isgroundingline=1;
+md.geometry.bed=min(md.geometry.base)*ones(md.mesh.numberofvertices,1);
+md.transient.requested_outputs={'default','BasalforcingsFloatingiceMeltingRate'};
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','BasalforcingsFloatingiceMeltingRate1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','BasalforcingsFloatingiceMeltingRate2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','BasalforcingsFloatingiceMeltingRate3'};
+field_tolerances={...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,2e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,2e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,2e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).BasalforcingsFloatingiceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).BasalforcingsFloatingiceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test293.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test293.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test293.py	(revision 27955)
@@ -0,0 +1,58 @@
+#Test Name: SquareShelfTranSSA2dMismipFloatingMeltParam
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from mismipbasalforcings import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.constants.yts = 365.2422 * 24. * 3600.
+md.basalforcings = mismipbasalforcings()
+md.basalforcings = md.basalforcings.initialize(md)
+md.transient.isgroundingline = 1
+md.geometry.bed = min(md.geometry.base) * np.ones(md.mesh.numberofvertices, )
+md.transient.requested_outputs = ['default', 'BasalforcingsFloatingiceMeltingRate']
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'BasalforcingsFloatingiceMeltingRate1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'BasalforcingsFloatingiceMeltingRate2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'BasalforcingsFloatingiceMeltingRate3']
+field_tolerances = [
+    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 2e-13,
+    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 2e-13,
+    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 2e-13]
+field_values = [
+    md.results.TransientSolution[0].Vx,
+    md.results.TransientSolution[0].Vy,
+    md.results.TransientSolution[0].Vel,
+    md.results.TransientSolution[0].Pressure,
+    md.results.TransientSolution[0].Base,
+    md.results.TransientSolution[0].Surface,
+    md.results.TransientSolution[0].Thickness,
+    md.results.TransientSolution[0].BasalforcingsFloatingiceMeltingRate,
+    md.results.TransientSolution[1].Vx,
+    md.results.TransientSolution[1].Vy,
+    md.results.TransientSolution[1].Vel,
+    md.results.TransientSolution[1].Pressure,
+    md.results.TransientSolution[1].Base,
+    md.results.TransientSolution[1].Surface,
+    md.results.TransientSolution[1].Thickness,
+    md.results.TransientSolution[1].BasalforcingsFloatingiceMeltingRate,
+    md.results.TransientSolution[2].Vx,
+    md.results.TransientSolution[2].Vy,
+    md.results.TransientSolution[2].Vel,
+    md.results.TransientSolution[2].Pressure,
+    md.results.TransientSolution[2].Base,
+    md.results.TransientSolution[2].Surface,
+    md.results.TransientSolution[2].Thickness,
+    md.results.TransientSolution[2].BasalforcingsFloatingiceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3001.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3001.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3001.m	(revision 27955)
@@ -0,0 +1,26 @@
+%Test Name: SquareShelfConstrainedStressSSA2dAdolc
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.stressbalance.requested_outputs={'default','DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy'};
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmgslsolver();
+
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure',...
+	'DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.DeviatoricStressxx),...
+	(md.results.StressbalanceSolution.DeviatoricStressyy),...
+	(md.results.StressbalanceSolution.DeviatoricStressxy),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3001.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3001.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3001.py	(revision 27955)
@@ -0,0 +1,33 @@
+#Test Name: SquareShelfConstrainedStressSSA2dAdolc
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from issmgslsolver import issmgslsolver
+
+
+md = triangle(model(), '../Exp/Square.exp', 50000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 1)
+md.stressbalance.requested_outputs = ['default', 'DeviatoricStressxx', 'DeviatoricStressyy', 'DeviatoricStressxy']
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmgslsolver()
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure',
+               'DeviatoricStressxx', 'DeviatoricStressyy', 'DeviatoricStressxy']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.DeviatoricStressxx,
+                md.results.StressbalanceSolution.DeviatoricStressyy,
+                md.results.StressbalanceSolution.DeviatoricStressxy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3002.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3002.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3002.m	(revision 27955)
@@ -0,0 +1,22 @@
+%Test Name: SquareShelfConstrainedStressSSA3dAdolc
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmgslsolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3002.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3002.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3002.py	(revision 27955)
@@ -0,0 +1,29 @@
+#Test Name: SquareShelfConstrainedStressSSA3dAdolc
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from issmgslsolver import issmgslsolver
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 1)
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmgslsolver()
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3003.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3003.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3003.m	(revision 27955)
@@ -0,0 +1,31 @@
+%Test Name: SquareShelfConstrainedStressHOAdolc
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.stressbalance.requested_outputs={'default','StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz'};
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmgslsolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure',...
+	'StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-09,...
+	1e-09,1e-09,1e-09,1e-09,1e-09,2e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.StressTensorxx),...
+	(md.results.StressbalanceSolution.StressTensoryy),...
+	(md.results.StressbalanceSolution.StressTensorzz),...
+	(md.results.StressbalanceSolution.StressTensorxy),...
+	(md.results.StressbalanceSolution.StressTensorxz),...
+	(md.results.StressbalanceSolution.StressTensoryz),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3003.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3003.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3003.py	(revision 27955)
@@ -0,0 +1,38 @@
+#Test Name: SquareShelfConstrainedStressHOAdolc
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from issmgslsolver import issmgslsolver
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 1)
+md.stressbalance.requested_outputs = ['default', 'StressTensorxx', 'StressTensoryy', 'StressTensorzz', 'StressTensorxy', 'StressTensorxz', 'StressTensoryz']
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmgslsolver()
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure',
+               'StressTensorxx', 'StressTensoryy', 'StressTensorzz', 'StressTensorxy', 'StressTensorxz', 'StressTensoryz']
+field_tolerances = [1e-09, 1e-09, 1e-09, 1e-09, 1e-09,
+                    1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 2e-09]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.StressTensorxx,
+                md.results.StressbalanceSolution.StressTensoryy,
+                md.results.StressbalanceSolution.StressTensorzz,
+                md.results.StressbalanceSolution.StressTensorxy,
+                md.results.StressbalanceSolution.StressTensorxz,
+                md.results.StressbalanceSolution.StressTensoryz]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3004.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3004.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3004.m	(revision 27955)
@@ -0,0 +1,22 @@
+%Test Name: SquareShelfConstrainedStressFSAdolc
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'FS','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmgslsolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-08,1e-08,3e-07,1e-08,1e-08};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3004.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3004.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3004.py	(revision 27955)
@@ -0,0 +1,29 @@
+#Test Name: SquareShelfConstrainedStressFSAdolc
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from issmgslsolver import issmgslsolver
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'FS', 'all')
+md.cluster = generic('name', gethostname(), 'np', 1)
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmgslsolver()
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [1e-08, 1e-08, 3e-07, 1e-08, 1e-08]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3005.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3005.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3005.m	(revision 27955)
@@ -0,0 +1,17 @@
+%Test Name: SquareShelfConstrainedMasstransp2dAdolc
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmgslsolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3005.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3005.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3005.py	(revision 27955)
@@ -0,0 +1,24 @@
+#Test Name: SquareShelfConstrainedMasstransp2dAdolc
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from issmgslsolver import issmgslsolver
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 1)
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmgslsolver()
+md = solve(md, 'Masstransport')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-13]
+field_values = [md.results.MasstransportSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3006.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3006.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3006.m	(revision 27955)
@@ -0,0 +1,20 @@
+%Test Name: SquareShelfConstrainedMasstransp2dDGAdolc
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=meshconvert(md);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.masstransport.stabilization=3;
+md.masstransport.spcthickness=md.geometry.thickness;
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmgslsolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3006.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3006.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3006.py	(revision 27955)
@@ -0,0 +1,28 @@
+#Test Name: SquareShelfConstrainedMasstransp2dDGAdolc
+from model import *
+from socket import gethostname
+from triangle import *
+from meshconvert import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from issmgslsolver import issmgslsolver
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = meshconvert(md)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 1)
+md.masstransport.stabilization = 3
+md.masstransport.spcthickness = md.geometry.thickness
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmgslsolver()
+md = solve(md, 'Masstransport')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-13]
+field_values = [md.results.MasstransportSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3007.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3007.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3007.m	(revision 27955)
@@ -0,0 +1,18 @@
+%Test Name: SquareShelfConstrainedMasstransp3dAdolc
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md=extrude(md,5,3.);
+md.cluster=generic('name',oshostname(),'np',1);
+md.autodiff.isautodiff=true;
+md.verbose=verbose('autodiff',true);
+md.toolkits.DefaultAnalysis=issmgslsolver();
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3007.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3007.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3007.py	(revision 27955)
@@ -0,0 +1,25 @@
+#Test Name: SquareShelfConstrainedMasstransp3dAdolc
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from issmgslsolver import issmgslsolver
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.extrude(5, 3.)
+md.cluster = generic('name', gethostname(), 'np', 1)
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmgslsolver()
+md = solve(md, 'Masstransport')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-13]
+field_values = [md.results.MasstransportSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3008.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3008.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3008.m	(revision 27955)
@@ -0,0 +1,20 @@
+%Test Name: SquareShelfConstrainedTherSteaAdolc
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=0;
+md.cluster=generic('name',oshostname(),'np',1);
+md.autodiff.isautodiff=true;
+md.verbose=verbose('autodiff',true);
+md.toolkits.DefaultAnalysis=issmgslsolver();
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-5};
+field_values={...
+	(md.results.ThermalSolution.Temperature),...
+	(md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3008.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3008.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3008.py	(revision 27955)
@@ -0,0 +1,27 @@
+#Test Name: SquareShelfConstrainedTherSteaAdolc
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from issmgslsolver import issmgslsolver
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.timestepping.time_step = 0
+md.cluster = generic('name', gethostname(), 'np', 1)
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmgslsolver()
+md = solve(md, 'Thermal')
+
+#Fields and tolerances to track changes
+field_names = ['Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-13, 1e-5]
+field_values = [md.results.ThermalSolution.Temperature,
+                md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3009.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3009.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3009.m	(revision 27955)
@@ -0,0 +1,24 @@
+%Test Name: SquareShelfConstrainedTherTranAdolc
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md.autodiff.isautodiff=true;
+md.verbose=verbose('autodiff',true);
+md.toolkits.DefaultAnalysis=issmgslsolver();
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3009.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3009.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3009.py	(revision 27955)
@@ -0,0 +1,31 @@
+#Test Name: SquareShelfConstrainedTherTranAdolc
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from issmgslsolver import issmgslsolver
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 1)
+md.transient.isstressbalance = False
+md.transient.ismasstransport = False
+md.transient.issmb = True
+md.transient.isthermal = True
+md.transient.isgroundingline = False
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmgslsolver()
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test301.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test301.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test301.m	(revision 27955)
@@ -0,0 +1,17 @@
+%Test Name: SquareSheetConstrainedStressSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test301.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test301.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test301.py	(revision 27955)
@@ -0,0 +1,24 @@
+#Test Name: SquareSheetConstrainedStressSSA2d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3010.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3010.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3010.m	(revision 27955)
@@ -0,0 +1,44 @@
+%Test Name: SquareShelfConstrainedTranSSA2dAdolc
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.transient.requested_outputs={'IceVolume'};
+
+md.autodiff.isautodiff=true;
+md.verbose=verbose('autodiff',true);
+md.toolkits.DefaultAnalysis=issmgslsolver();
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Volume3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).IceVolume),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3010.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3010.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3010.py	(revision 27955)
@@ -0,0 +1,51 @@
+#Test Name: SquareShelfConstrainedTranSSA2dAdolc
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from issmgslsolver import issmgslsolver
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 1)
+md.transient.requested_outputs = ['IceVolume']
+
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmgslsolver()
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Volume1', 'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Volume2', 'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'Volume3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].IceVolume,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].IceVolume,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].IceVolume]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3015.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3015.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3015.m	(revision 27955)
@@ -0,0 +1,94 @@
+%Test Name: SquareShelfConstrainedMasstransp2dAdolcForwardDifference
+%This test runs test3015 with autodiff on, and checks that
+%the value of the scalar forward difference match a step-wise differential
+
+%First configure
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.masstransport.requested_outputs={'IceVolume'};
+md.verbose=verbose('autodiff',true);
+md.toolkits.DefaultAnalysis=issmgslsolver();
+
+%setup autodiff parameters
+index=1; %this is the scalar component we are checking against
+
+if IssmConfig('_HAVE_CODIPACK_')
+	md.autodiff.independents={...
+		independent('name','md.geometry.thickness','type','vertex','nods',md.mesh.numberofvertices)
+	};
+	md.autodiff.dependents={...
+		dependent('name','IceVolume','type','scalar','fos_reverse_index',index)...
+		};
+	md.autodiff.driver='fos_reverse';
+else
+	md.autodiff.independents={...
+		independent('name','md.geometry.thickness','type','vertex','nods',md.mesh.numberofvertices,'fos_forward_index',index)
+	};
+
+	md.autodiff.dependents={...
+		dependent('name','IceVolume','type','scalar')...
+		};
+	md.autodiff.driver='fos_forward';
+end
+
+%parameters for the step-wise derivative
+delta=0.001;
+h1=md.geometry.thickness(index);
+h0=h1*(1.-delta);
+h2=h1*(1.+delta);
+deltaH=(h2-h0);
+
+%save model:
+md2=md;
+
+%evaluate derivative by forward and backward stepping
+%forward
+md=md2;
+md.autodiff.isautodiff=false;
+md.geometry.thickness(index)=h0;
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=SetIceShelfBC(md);
+
+md=solve(md,'Masstransport');
+V0=md.results.MasstransportSolution.IceVolume;
+
+%backward
+md=md2;
+md.autodiff.isautodiff=false;
+md.geometry.thickness(index)=h2;
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=SetIceShelfBC(md);
+
+md=solve(md,'Masstransport');
+V2=md.results.MasstransportSolution.IceVolume;
+
+%compute resulting derivative
+dVdh_an=(V2-V0)/deltaH;
+
+%evaluate derivative using ADOLC
+md=md2;
+md.autodiff.isautodiff=true;
+md.geometry.thickness(index)=h1;
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=SetIceShelfBC(md);
+
+md=solve(md,'Masstransport');
+%retrieve directly
+if IssmConfig('_HAVE_CODIPACK_')
+	dVdh_ad=md.results.MasstransportSolution.AutodiffJacobian(index);
+else
+	dVdh_ad=md.results.MasstransportSolution.AutodiffJacobian;
+end
+
+disp(sprintf('dV/dh: analytical:  %16.16g\n       using ad:    %16.16g\n',dVdh_an,dVdh_ad));
+
+%Fields and tolerances to track changes
+field_names     ={'dV/dh'};
+field_tolerances={1e-8};
+field_values={dVdh_ad};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3015.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3015.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3015.py	(revision 27955)
@@ -0,0 +1,91 @@
+#Test Name: SquareShelfConstrainedMasstransp2dAdolcForwardDifference
+import copy
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from independent import *
+from dependent import *
+from SetIceShelfBC import *
+from solve import *
+from issmgslsolver import issmgslsolver
+
+
+#This test runs test3015 with autodiff on, and checks that
+#the value of the scalar forward difference match a step-wise differential
+
+#First configure
+md = triangle(model(), '../Exp/Square.exp', 50000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 1)
+md.masstransport.requested_outputs = ['IceVolume']
+md.verbose = verbose('autodiff', True)
+md.toolkits.DefaultAnalysis = issmgslsolver()
+
+#setup autodiff parameters
+index = 1  #this is the scalar component we are checking against
+md.autodiff.independents = [independent('name', 'md.geometry.thickness', 'type', 'vertex', 'nods', md.mesh.numberofvertices, 'fos_forward_index', index)]
+md.autodiff.dependents = [dependent('name', 'IceVolume', 'type', 'scalar')]
+md.autodiff.driver = 'fos_forward'
+
+#PYTHON: indices start at 0, make sure to offset index
+index = index - 1
+
+#parameters for the step-wise derivative
+delta = 0.001
+h1 = md.geometry.thickness[index]
+h0 = h1 * (1. - delta)
+h2 = h1 * (1. + delta)
+deltaH = (h2 - h0)
+
+#save model
+md2 = copy.deepcopy(md)
+
+#evaluate derivative by forward and backward stepping
+#forward
+md = copy.deepcopy(md2)
+md.autodiff.isautodiff = False
+md.geometry.thickness[index] = h0
+md.geometry.base = -md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md = SetIceShelfBC(md)
+
+md = solve(md, 'Masstransport')
+V0 = md.results.MasstransportSolution.IceVolume
+
+#backward
+md = copy.deepcopy(md2)
+md.autodiff.isautodiff = False
+md.geometry.thickness[index] = h2
+md.geometry.base = -md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md = SetIceShelfBC(md)
+
+md = solve(md, 'Masstransport')
+V2 = md.results.MasstransportSolution.IceVolume
+
+#compute resulting derivative
+dVdh_an = (V2 - V0) / deltaH
+
+#evaluate derivative using ADOLC
+md = md2
+md.autodiff.isautodiff = True
+md.geometry.thickness[index] = h1
+md.geometry.base = -md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md = SetIceShelfBC(md)
+
+md = solve(md, 'Masstransport')
+#retrieve directly
+dVdh_ad = md.results.MasstransportSolution.AutodiffJacobian
+
+print("dV / dh: analytical:  %16.16g\n       using adolc:  %16.16g\n" % (dVdh_an, dVdh_ad))
+
+#Fields and tolerances to track changes
+field_names = ['dV/dh']
+field_tolerances = [1e-8]
+field_values = [dVdh_ad]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3019.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3019.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3019.m	(revision 27955)
@@ -0,0 +1,36 @@
+%Test Name: SquareShelfConstrainedTherTranAdolcReverseVsForward
+%test reverse scalar vs forward vectorial drivers in ADOLC, using the test3009 setup, equivalent to test109 setup.
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.toolkits.DefaultAnalysis=issmgslsolver();
+
+md.autodiff.isautodiff=true;
+md.verbose.autodiff=true;
+
+%first run scalar reverse mode: 
+md.autodiff.independents={independent('name','md.geometry.thickness','type','vertex','nods',md.mesh.numberofvertices)};
+md.autodiff.dependents={dependent('name','MaxVel','type','scalar','fos_reverse_index',1)};
+md.autodiff.driver='fos_reverse';
+
+md=solve(md,'Transient');
+
+%recover jacobian: 
+jac_reverse=md.results.TransientSolution(1).AutodiffJacobian;
+
+%now run vectorial forward mode
+md.autodiff.independents={independent('name','md.geometry.thickness','type','vertex','nods',md.mesh.numberofvertices,'fov_forward_indices',(1:md.mesh.numberofvertices)')};
+md.autodiff.dependents={dependent('name','MaxVel','type','scalar')};
+md.autodiff.driver='fov_forward';
+
+md=solve(md,'Transient');
+
+%recover jacobian: 
+jac_forward=md.results.TransientSolution(1).AutodiffJacobian;
+
+%Fields and tolerances to track changes
+field_names     ={'Jac Forward','Jac Reverse','Jac Forward - Reverse'};
+field_tolerances={1e-8,1e-8,5e-6};
+field_values={jac_forward,jac_reverse,jac_forward-jac_reverse};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3019.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3019.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3019.py	(revision 27955)
@@ -0,0 +1,49 @@
+#Test Name: SquareShelfConstrainedTherTranAdolcReverseVsForward
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from independent import *
+from dependent import *
+from solve import *
+from issmgslsolver import issmgslsolver
+
+
+#test reverse scalar vs forward vectorial drivers in ADOLC, using the test3009 setup, equivalent to test109 setup.
+md = triangle(model(), '../Exp/Square.exp', 100000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 1)
+md.toolkits.DefaultAnalysis = issmgslsolver()
+
+md.autodiff.isautodiff = True
+md.verbose.autodiff = True
+
+#first run scalar reverse mode:
+md.autodiff.independents = [independent('name', 'md.geometry.thickness', 'type', 'vertex', 'nods', md.mesh.numberofvertices)]
+md.autodiff.dependents = [dependent('name', 'MaxVel', 'type', 'scalar', 'fos_reverse_index', 1)]
+md.autodiff.driver = 'fos_reverse'
+
+md = solve(md, 'Transient')
+
+#recover jacobian:
+jac_reverse = md.results.TransientSolution[0].AutodiffJacobian
+
+#now run vectorial forward mode
+md.autodiff.independents = [independent('name', 'md.geometry.thickness', 'type', 'vertex', 'nods', md.mesh.numberofvertices, 'fov_forward_indices', np.arange(1, md.mesh.numberofvertices + 1))]
+md.autodiff.dependents = [dependent('name', 'MaxVel', 'type', 'scalar')]
+md.autodiff.driver = 'fov_forward'
+
+md = solve(md, 'Transient')
+
+#recover jacobian:
+jac_forward = md.results.TransientSolution[0].AutodiffJacobian
+
+#Fields and tolerances to track changes
+field_names = ['Jac Forward', 'Jac Reverse', 'Jac Forward - Reverse']
+field_tolerances = [1e-8, 1e-8, 5e-6]
+field_values = [jac_forward, jac_reverse, jac_forward - jac_reverse]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test302.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test302.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test302.m	(revision 27955)
@@ -0,0 +1,17 @@
+%Test Name: SquareSheetConstrainedStressSIA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SIA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test302.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test302.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test302.py	(revision 27955)
@@ -0,0 +1,24 @@
+#Test Name: SquareSheetConstrainedStressSIA2d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md = setflowequation(md, 'SIA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3020.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3020.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3020.m	(revision 27955)
@@ -0,0 +1,86 @@
+%Test Name: SquareShelfConstrainedTranAdolcReverseVsForward
+%This test runs test3020 with autodiff on, and checks that 
+%the value of the scalar forward difference match a step-wise differential
+
+%First configure
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.transient.requested_outputs={'IceVolume','MaxVel'};
+md.verbose=verbose('autodiff',true);
+md.stressbalance.restol=0.000001;
+md.toolkits.DefaultAnalysis=issmgslsolver();
+
+%setup autodiff parameters
+index=1; %this is the scalar component we are checking against
+md.autodiff.independents={...
+	independent('name','md.geometry.thickness','type','vertex','nods',md.mesh.numberofvertices,'fos_forward_index',index)
+	};
+
+md.autodiff.dependents={...
+	dependent('name','IceVolume','type','scalar'),...
+	dependent('name','MaxVel','type','scalar')...
+	};
+md.autodiff.driver='fos_forward';
+
+%parameters for the step-wise derivative
+delta=0.00001;
+h1=md.geometry.thickness(index);
+h0=h1*(1.-delta);
+h2=h1*(1.+delta);
+deltaH=(h2-h0);
+
+%save model:
+md2=md;
+
+%evaluate derivative by forward and backward stepping 
+%forward
+md=md2;
+md.autodiff.isautodiff=false;
+md.geometry.thickness(index)=h0;
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=SetIceShelfBC(md);
+
+md=solve(md,'Transient');
+V0=md.results.TransientSolution(end).IceVolume;
+MaxV0=md.results.TransientSolution(end).MaxVel;
+
+%backward
+md=md2;
+md.autodiff.isautodiff=false;
+md.geometry.thickness(index)=h2;
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=SetIceShelfBC(md);
+
+md=solve(md,'Transient');
+V2=md.results.TransientSolution(end).IceVolume;
+MaxV2=md.results.TransientSolution(end).MaxVel;
+
+%compute resulting derivative
+dVdh_an=(V2-V0)/deltaH;
+dMaxVdh_an=(MaxV2-MaxV0)/deltaH;
+
+%evaluate derivative using ADOLC 
+md=md2;
+md.autodiff.isautodiff=true;
+md.geometry.thickness(index)=h1;
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=SetIceShelfBC(md);
+
+md=solve(md,'Transient');
+%retrieve directly
+dVdh_ad=md.results.TransientSolution(1).AutodiffJacobian(1);
+dMaxVdh_ad=md.results.TransientSolution(1).AutodiffJacobian(2);
+
+disp(sprintf('dV/dh: analytical:  %16.16g\n       using adolc:  %16.16g\n',dVdh_an,dVdh_ad));
+disp(sprintf('dMaxV/dh: analytical:  %16.16g\n       using adolc:  %16.16g\n',dMaxVdh_an,dMaxVdh_ad));
+
+%Fields and tolerances to track changes
+field_names     ={'dV/dh-dV/dh0','dMaxV/dh-dMaxV/dh0'};
+field_tolerances={1e-8,1e-7};
+field_values={dVdh_ad-dVdh_an,dMaxVdh_an-dMaxVdh_ad};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3020.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3020.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3020.py	(revision 27955)
@@ -0,0 +1,96 @@
+#Test Name: SquareShelfConstrainedTranAdolcReverseVsForward
+import copy
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from independent import *
+from dependent import *
+from SetIceShelfBC import *
+from solve import *
+
+
+#This test runs test3020 with autodiff on, and checks that
+#the value of the scalar forward difference match a step - wise differential
+
+#First configure
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 1)
+md.transient.requested_outputs = ['IceVolume', 'MaxVel']
+md.verbose = verbose('autodiff', True)
+md.stressbalance.restol = 0.000001
+
+#setup autodiff parameters
+index = 1  #this is the scalar component we are checking against
+md.autodiff.independents = [independent('name', 'md.geometry.thickness', 'type', 'vertex', 'nods', md.mesh.numberofvertices, 'fos_forward_index', index)]
+md.autodiff.dependents = [dependent('name', 'IceVolume', 'type', 'scalar'),
+                          dependent('name', 'MaxVel', 'type', 'scalar')]
+md.autodiff.driver = 'fos_forward'
+
+#PYTHON: indices start at 0, make sure to offset index
+index = index - 1
+
+#parameters for the step - wise derivative
+delta = 0.00001
+h1 = md.geometry.thickness[index]
+h0 = h1 * (1. - delta)
+h2 = h1 * (1. + delta)
+deltaH = (h2 - h0)
+
+#save model:
+md2 = copy.deepcopy(md)
+
+#evaluate derivative by forward and backward stepping
+#forward
+md = copy.deepcopy(md2)
+md.autodiff.isautodiff = False
+md.geometry.thickness[index] = h0
+md.geometry.base = -md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md = SetIceShelfBC(md)
+
+md = solve(md, 'Transient')
+V0 = md.results.TransientSolution[-1].IceVolume
+MaxV0 = md.results.TransientSolution[-1].MaxVel
+
+#backward
+md = copy.deepcopy(md2)
+md.autodiff.isautodiff = False
+md.geometry.thickness[index] = h2
+md.geometry.base = -md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md = SetIceShelfBC(md)
+
+md = solve(md, 'Transient')
+V2 = md.results.TransientSolution[-1].IceVolume
+MaxV2 = md.results.TransientSolution[-1].MaxVel
+
+#compute resulting derivative
+dVdh_an = (V2 - V0) / deltaH
+dMaxVdh_an = (MaxV2 - MaxV0) / deltaH
+
+#evaluate derivative using ADOLC
+md = copy.deepcopy(md2)
+md.autodiff.isautodiff = True
+md.geometry.thickness[index] = h1
+md.geometry.base = -md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md = SetIceShelfBC(md)
+
+md = solve(md, 'Transient')
+#retrieve directly
+dVdh_ad = md.results.TransientSolution[0].AutodiffJacobian[0]
+dMaxVdh_ad = md.results.TransientSolution[0].AutodiffJacobian[1]
+
+print("dV / dh: analytical:  %16.16g\n       using adolc:  %16.16g\n" % (dVdh_an, dVdh_ad))
+print("dMaxV / dh: analytical:  %16.16g\n       using adolc:  %16.16g\n" % (dMaxVdh_an, dMaxVdh_ad))
+
+#Fields and tolerances to track changes
+field_names = ['dV/dh - dV / dh0', 'dMaxV/dh - dMaxV / dh0']
+field_tolerances = [1e-13, 1e-13]
+field_values = [dVdh_ad - dVdh_an, dMaxVdh_an - dMaxVdh_ad]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3021.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3021.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3021.m	(revision 27955)
@@ -0,0 +1,25 @@
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.stressbalance.requested_outputs={'StressTensorxx','StressTensoryy','StressTensorxy'};
+md.autodiff.isautodiff=false;
+md.toolkits.DefaultAnalysis=issmsolver();
+md.verbose=verbose('all');
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure',...
+	'StressTensorxx','StressTensoryy','StressTensorxy'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.StressTensorxx),...
+	(md.results.StressbalanceSolution.StressTensoryy),...
+	(md.results.StressbalanceSolution.StressTensorxy),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test303.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test303.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test303.m	(revision 27955)
@@ -0,0 +1,17 @@
+%Test Name: SquareSheetConstrainedStressSIASSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SIA','../Exp/SquareHalfRight.exp','fill','SSA');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test303.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test303.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test303.py	(revision 27955)
@@ -0,0 +1,24 @@
+#Test Name: SquareSheetConstrainedStressSIASSA2d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md = setflowequation(md, 'SIA', '../Exp/SquareHalfRight.exp', 'fill', 'SSA')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test304.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test304.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test304.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetConstrainedStressSSA3d
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test304.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test304.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test304.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: SquareSheetConstrainedStressSSA3d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test305.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test305.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test305.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetConstrainedStressSIA3d
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,5,2.);
+md=setflowequation(md,'SIA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test305.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test305.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test305.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: SquareSheetConstrainedStressSIA3d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.extrude(5, 2.)
+md = setflowequation(md, 'SIA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test306.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test306.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test306.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetConstrainedStressSIASSA3d
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,4,2.);
+md=setflowequation(md,'SIA','../Exp/SquareHalfRight.exp','fill','SSA');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test306.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test306.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test306.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: SquareSheetConstrainedStressSIASSA3d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.extrude(4, 2.)
+md = setflowequation(md, 'SIA', '../Exp/SquareHalfRight.exp', 'fill', 'SSA')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test307.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test307.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test307.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetConstrainedStressHO
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-09,1e-09,2e-10,2e-10,1e-10};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test307.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test307.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test307.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: SquareSheetConstrainedStressHO
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [1e-09, 1e-09, 2e-10, 2e-10, 1e-10]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test308.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test308.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test308.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetConstrainedStressFS
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'FS','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test308.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test308.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test308.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: SquareSheetConstrainedStressFS
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'FS', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [1e-09, 1e-09, 1e-09, 1e-09, 1e-09]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test309.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test309.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test309.m	(revision 27955)
@@ -0,0 +1,14 @@
+%Test Name: SquareSheetConstrainedMasstransp2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test309.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test309.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test309.py	(revision 27955)
@@ -0,0 +1,21 @@
+#Test Name: SquareSheetConstrainedMasstransp2d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Masstransport')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-13]
+field_values = [md.results.MasstransportSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test310.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test310.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test310.m	(revision 27955)
@@ -0,0 +1,17 @@
+%Test Name: SquareSheetConstrainedMasstransp2dDG
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=meshconvert(md);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.masstransport.stabilization=3;
+md.masstransport.spcthickness=md.geometry.thickness;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test310.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test310.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test310.py	(revision 27955)
@@ -0,0 +1,25 @@
+#Test Name: SquareSheetConstrainedMasstransp2dDG
+from model import *
+from socket import gethostname
+from triangle import *
+from meshconvert import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = meshconvert(md)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.masstransport.stabilization = 3
+md.masstransport.spcthickness = md.geometry.thickness
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Masstransport')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-13]
+field_values = [md.results.MasstransportSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3101.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3101.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3101.m	(revision 27955)
@@ -0,0 +1,26 @@
+%Test Name: SquareShelfConstrainedStressSSA2dAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.stressbalance.requested_outputs={'default','DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy'};
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure',...
+	'DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy'};
+field_tolerances={1e-12,1e-12,1e-12,1e-12,...
+	1e-12,1e-12,1e-12};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.DeviatoricStressxx),...
+	(md.results.StressbalanceSolution.DeviatoricStressyy),...
+	(md.results.StressbalanceSolution.DeviatoricStressxy),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3101.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3101.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3101.py	(revision 27955)
@@ -0,0 +1,34 @@
+#Test Name: SquareShelfConstrainedStressSSA2dAdolcMumps
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from issmmumpssolver import issmmumpssolver
+
+
+md = triangle(model(), '../Exp/Square.exp', 50000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.stressbalance.requested_outputs = ['default', 'DeviatoricStressxx', 'DeviatoricStressyy', 'DeviatoricStressxy']
+
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmmumpssolver()
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure',
+               'DeviatoricStressxx', 'DeviatoricStressyy', 'DeviatoricStressxy']
+field_tolerances = [1e-12, 1e-12, 1e-12, 1e-12,
+                    1e-12, 1e-12, 1e-12]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.DeviatoricStressxx,
+                md.results.StressbalanceSolution.DeviatoricStressyy,
+                md.results.StressbalanceSolution.DeviatoricStressxy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3102.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3102.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3102.m	(revision 27955)
@@ -0,0 +1,22 @@
+%Test Name: SquareShelfConstrainedStressSSA3dAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3102.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3102.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3102.py	(revision 27955)
@@ -0,0 +1,29 @@
+#Test Name: SquareShelfConstrainedStressSSA3dAdolcMumps
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from issmmumpssolver import issmmumpssolver
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmmumpssolver()
+
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3103.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3103.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3103.m	(revision 27955)
@@ -0,0 +1,31 @@
+%Test Name: SquareShelfConstrainedStressHOAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.stressbalance.requested_outputs={'default','StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz'};
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure',...
+	'StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-09,...
+	1e-09,1e-09,1e-09,1e-09,1e-09,2e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.StressTensorxx),...
+	(md.results.StressbalanceSolution.StressTensoryy),...
+	(md.results.StressbalanceSolution.StressTensorzz),...
+	(md.results.StressbalanceSolution.StressTensorxy),...
+	(md.results.StressbalanceSolution.StressTensorxz),...
+	(md.results.StressbalanceSolution.StressTensoryz),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3103.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3103.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3103.py	(revision 27955)
@@ -0,0 +1,39 @@
+#Test Name: SquareShelfConstrainedStressHOAdolcMumps
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from issmmumpssolver import issmmumpssolver
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.stressbalance.requested_outputs = ['default', 'StressTensorxx', 'StressTensoryy', 'StressTensorzz', 'StressTensorxy', 'StressTensorxz', 'StressTensoryz']
+
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmmumpssolver()
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure',
+               'StressTensorxx', 'StressTensoryy', 'StressTensorzz', 'StressTensorxy', 'StressTensorxz', 'StressTensoryz']
+field_tolerances = [1e-09, 1e-09, 1e-09, 1e-09, 1e-09,
+                    1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 2e-09]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.StressTensorxx,
+                md.results.StressbalanceSolution.StressTensoryy,
+                md.results.StressbalanceSolution.StressTensorzz,
+                md.results.StressbalanceSolution.StressTensorxy,
+                md.results.StressbalanceSolution.StressTensorxz,
+                md.results.StressbalanceSolution.StressTensoryz]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3104.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3104.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3104.m	(revision 27955)
@@ -0,0 +1,22 @@
+%Test Name: SquareShelfConstrainedStressFSAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'FS','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-08,1e-08,2.9e-07,1e-08,1e-08};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3104.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3104.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3104.py	(revision 27955)
@@ -0,0 +1,30 @@
+#Test Name: SquareShelfConstrainedStressFSAdolcMumps
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from issmmumpssolver import issmmumpssolver
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'FS', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmmumpssolver()
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [1e-08, 1e-08, 2e-07, 1e-08, 1e-08]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3105.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3105.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3105.m	(revision 27955)
@@ -0,0 +1,17 @@
+%Test Name: SquareShelfConstrainedMasstransp2dAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3105.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3105.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3105.py	(revision 27955)
@@ -0,0 +1,25 @@
+#Test Name: SquareShelfConstrainedMasstransp2dAdolcMumps
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from issmmumpssolver import issmmumpssolver
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmmumpssolver()
+md = solve(md, 'Masstransport')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-13]
+field_values = [md.results.MasstransportSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3106.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3106.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3106.m	(revision 27955)
@@ -0,0 +1,20 @@
+%Test Name: SquareShelfConstrainedMasstransp2dDGAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=meshconvert(md);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.masstransport.stabilization=3;
+md.masstransport.spcthickness=md.geometry.thickness;
+md.autodiff.isautodiff=true;
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+md.verbose=verbose('autodiff',true);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3106.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3106.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3106.py	(revision 27955)
@@ -0,0 +1,29 @@
+#Test Name: SquareShelfConstrainedMasstransp2dDGAdolcMumps
+from model import *
+from socket import gethostname
+from triangle import *
+from meshconvert import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from issmmumpssolver import issmmumpssolver
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = meshconvert(md)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.masstransport.stabilization = 3
+md.masstransport.spcthickness = md.geometry.thickness
+
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmmumpssolver()
+md = solve(md, 'Masstransport')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-13]
+field_values = [md.results.MasstransportSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3107.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3107.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3107.m	(revision 27955)
@@ -0,0 +1,18 @@
+%Test Name: SquareShelfConstrainedMasstransp3dAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md=extrude(md,5,3.);
+md.cluster=generic('name',oshostname(),'np',3);
+md.autodiff.isautodiff=true;
+md.verbose=verbose('autodiff',true);
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3107.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3107.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3107.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: SquareShelfConstrainedMasstransp3dAdolcMumps
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from issmmumpssolver import issmmumpssolver
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.extrude(5, 3.)
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmmumpssolver()
+md = solve(md, 'Masstransport')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-13]
+field_values = [md.results.MasstransportSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3108.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3108.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3108.m	(revision 27955)
@@ -0,0 +1,20 @@
+%Test Name: SquareShelfConstrainedTherSteaAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=0;
+md.cluster=generic('name',oshostname(),'np',3);
+md.autodiff.isautodiff=true;
+md.verbose=verbose('autodiff',true);
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-5};
+field_values={...
+	(md.results.ThermalSolution.Temperature),...
+	(md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3108.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3108.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3108.py	(revision 27955)
@@ -0,0 +1,28 @@
+#Test Name: SquareShelfConstrainedTherSteaAdolcMumps
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from issmmumpssolver import issmmumpssolver
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.timestepping.time_step = 0
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmmumpssolver()
+md = solve(md, 'Thermal')
+
+#Fields and tolerances to track changes
+field_names = ['Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-13, 1e-5]
+field_values = [md.results.ThermalSolution.Temperature,
+                md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3109.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3109.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3109.m	(revision 27955)
@@ -0,0 +1,24 @@
+%Test Name: SquareShelfConstrainedTherTranAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md.autodiff.isautodiff=true;
+md.verbose=verbose('autodiff',true);
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3109.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3109.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3109.py	(revision 27955)
@@ -0,0 +1,32 @@
+#Test Name: SquareShelfConstrainedTherTranAdolcMumps
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from issmmumpssolver import issmmumpssolver
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.isstressbalance = False
+md.transient.ismasstransport = False
+md.transient.issmb = True
+md.transient.isthermal = True
+md.transient.isgroundingline = False
+
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmmumpssolver()
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test311.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test311.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test311.m	(revision 27955)
@@ -0,0 +1,15 @@
+%Test Name: SquareSheetConstrainedMasstransp3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+md=extrude(md,5,0.5);
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test311.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test311.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test311.py	(revision 27955)
@@ -0,0 +1,22 @@
+#Test Name: SquareSheetConstrainedMasstransp3d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.extrude(5, 0.5)
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Masstransport')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-13]
+field_values = [md.results.MasstransportSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3110.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3110.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3110.m	(revision 27955)
@@ -0,0 +1,44 @@
+%Test Name: SquareShelfConstrainedTranSSA2dAdolcMumps
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'IceVolume'};
+
+md.autodiff.isautodiff=true;
+md.verbose=verbose('autodiff',true);
+md.toolkits.DefaultAnalysis=issmmumpssolver();
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Volume3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).IceVolume),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3110.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3110.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3110.py	(revision 27955)
@@ -0,0 +1,50 @@
+#Test Name: SquareShelfConstrainedTranSSA2dAdolcMumps
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.transient.requested_outputs = ['IceVolume']
+
+md.autodiff.isautodiff = True
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Volume1', 'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Volume2', 'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'Volume3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].IceVolume,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].IceVolume,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].IceVolume]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3119.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3119.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3119.m	(revision 27955)
@@ -0,0 +1,26 @@
+%Test Name: ReverseScalarDriver
+%reverse scalar driver in ADOLC, using the test3009 setup, equivalent to test109 setup.
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.toolkits.DefaultAnalysis=issmgslsolver();
+
+md.autodiff.isautodiff=true;
+md.verbose.autodiff=true;
+
+%first run scalar reverse mode: 
+md.autodiff.independents={independent('name','md.geometry.thickness','type','vertex','nods',md.mesh.numberofvertices)};
+md.autodiff.dependents={dependent('name','MaxVel','type','scalar','fos_reverse_index',1)};
+md.autodiff.driver='fos_reverse';
+
+md=solve(md,'Transient');
+
+%recover jacobian: 
+jac_reverse=md.results.TransientSolution(1).AutodiffJacobian;
+
+%Fields and tolerances to track changes
+field_names     ={'Jac Reverse'};
+field_tolerances={1e-8};
+field_values={jac_reverse,};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3119.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3119.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3119.py	(revision 27955)
@@ -0,0 +1,36 @@
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from independent import *
+from dependent import *
+from solve import *
+from issmgslsolver import issmgslsolver
+
+
+#test reverse scalar vs forward vectorial drivers in ADOLC, using the test3009 setup, equivalent to test109 setup.
+md = triangle(model(), '../Exp/Square.exp', 100000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelfConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 1)
+
+md.autodiff.isautodiff = True
+md.toolkits.DefaultAnalysis = issmgslsolver()
+
+#first run scalar reverse mode:
+md.autodiff.independents = [independent('name', 'md.geometry.thickness', 'type', 'vertex', 'nods', md.mesh.numberofvertices)]
+md.autodiff.dependents = [dependent('name', 'MaxVel', 'type', 'scalar', 'fos_reverse_index', 1)]
+md.autodiff.driver = 'fos_reverse'
+
+md = solve(md, 'Transient')
+
+#recover jacobian:
+jac_reverse = md.results.TransientSolution[0].AutodiffJacobian
+
+#Fields and tolerances to track changes
+field_names = ['Jac Reverse']
+field_tolerances = [1e-13]
+field_values = [jac_reverse]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test312.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test312.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test312.m	(revision 27955)
@@ -0,0 +1,17 @@
+%Test Name: SquareSheetConstrainedTherStea
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=0.;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-8};
+field_values={...
+	(md.results.ThermalSolution.Temperature),...
+	(md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test312.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test312.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test312.py	(revision 27955)
@@ -0,0 +1,24 @@
+#Test Name: SquareSheetConstrainedTherStea
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.timestepping.time_step = 0.
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Thermal')
+
+#Fields and tolerances to track changes
+field_names = ['Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-13, 1e-8]
+field_values = [md.results.ThermalSolution.Temperature,
+                md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test313.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test313.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test313.m	(revision 27955)
@@ -0,0 +1,22 @@
+%Test Name: SquareSheetConstrainedTherTran
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('convergence',true,'solution',true);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test313.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test313.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test313.py	(revision 27955)
@@ -0,0 +1,29 @@
+#Test Name: SquareSheetConstrainedTherTran
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.verbose = verbose('convergence', True, 'solution', True)
+md.transient.isstressbalance = False
+md.transient.ismasstransport = False
+md.transient.issmb = True
+md.transient.isthermal = True
+md.transient.isgroundingline = False
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test314.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test314.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test314.m	(revision 27955)
@@ -0,0 +1,47 @@
+%Test Name: SquareSheetConstrainedTranSIA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SIA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','GroundedArea','FloatingArea','IceVolume'};
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','FloatingArea1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','FloatingArea2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','FloatingArea3'};
+field_tolerances={...
+	1e-13 , 1e-13   , 1e-13   , 1e-13 , 1e-13 , 1e-13 , 1e-13   , 1e-13 , 1e-13...
+	1e-10 , 1e-13   , 1e-13   , 1e-13 , 1e-13 , 1e-13 , 1e-13   , 1e-13 , 1e-13...
+	1e-10 , 1.5e-13 , 1.5e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13,    1e-13 , 1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).GroundedArea),...
+	(md.results.TransientSolution(3).FloatingArea),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test314.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test314.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test314.py	(revision 27955)
@@ -0,0 +1,52 @@
+#Test Name: SquareSheetConstrainedTranSIA2d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md = setflowequation(md, 'SIA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.requested_outputs = ['default', 'GroundedArea', 'FloatingArea', 'IceVolume']
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'GroundedArea1', 'FloatingArea1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'GroundedArea2', 'FloatingArea2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'GroundedArea3', 'FloatingArea3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-10, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-10, 1.5e-13, 1.5e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].GroundedArea,
+                md.results.TransientSolution[0].FloatingArea,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].GroundedArea,
+                md.results.TransientSolution[1].FloatingArea,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].GroundedArea,
+                md.results.TransientSolution[2].FloatingArea]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test315.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test315.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test315.m	(revision 27955)
@@ -0,0 +1,48 @@
+%Test Name: SquareSheetConstrainedTranSIA3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,5,1.2);
+md=setflowequation(md,'SIA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1',...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2',...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...,
+	1e-10,1e-13,5e-13,5e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-10,2e-13,5e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test315.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test315.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test315.py	(revision 27955)
@@ -0,0 +1,55 @@
+#Test Name: SquareSheetConstrainedTranSIA3d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.extrude(5, 1.2)
+md = setflowequation(md, 'SIA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Temperature1', 'BasalforcingsGroundediceMeltingRate1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'BasalforcingsGroundediceMeltingRate2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'Temperature3', 'BasalforcingsGroundediceMeltingRate3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-10, 1e-13, 5e-13, 5e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-10, 2e-13, 5e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test316.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test316.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test316.m	(revision 27955)
@@ -0,0 +1,39 @@
+%Test Name: SquareSheetConstrainedTranSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	2e-13,1e-13,1e-13,2e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test316.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test316.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test316.py	(revision 27955)
@@ -0,0 +1,43 @@
+#Test Name: SquareSheetConstrainedTranSSA2d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    2e-13, 1e-13, 1e-13, 2e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test317.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test317.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test317.m	(revision 27955)
@@ -0,0 +1,62 @@
+%Test Name: SquareSheetConstrainedTranHO
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md.basalforcings.groundedice_melting_rate(:)=5;
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb'};
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1'...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','GroundedArea2','FloatingArea2','TotalFloatingBmb2','TotalGroundedBmb2',...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','GroundedArea3','FloatingArea3','TotalFloatingBmb3','TotalGroundedBmb3'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12,...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12,...
+	1e-09,5e-10,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).GroundedArea),...
+	(md.results.TransientSolution(3).FloatingArea),...
+	(md.results.TransientSolution(3).TotalFloatingBmb),...
+	(md.results.TransientSolution(3).TotalGroundedBmb),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test317.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test317.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test317.py	(revision 27955)
@@ -0,0 +1,69 @@
+#Test Name: SquareSheetConstrainedTranHO
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 200000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.basalforcings.groundedice_melting_rate[:] = 5.
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.requested_outputs = ['default', 'GroundedArea', 'FloatingArea', 'TotalFloatingBmb', 'TotalGroundedBmb']
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Temperature1', 'BasalforcingsGroundediceMeltingRate1', 'GroundedArea1', 'FloatingArea1', 'TotalFloatingBmb1', 'TotalGroundedBmb1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'BasalforcingsGroundediceMeltingRate2', 'GroundedArea2', 'FloatingArea2', 'TotalFloatingBmb2', 'TotalGroundedBmb2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'Temperature3', 'BasalforcingsGroundediceMeltingRate3', 'GroundedArea3', 'FloatingArea3', 'TotalFloatingBmb2', 'TotalGroundedBmb2']
+field_tolerances = [1e-09, 1e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-12, 1e-12, 1e-12, 1e-12,
+                    1e-09, 1e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-12, 1e-12, 1e-12, 1e-12,
+                    1e-09, 5e-10, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-12, 1e-12, 1e-12, 1e-12]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[0].GroundedArea,
+                md.results.TransientSolution[0].FloatingArea,
+                md.results.TransientSolution[0].TotalFloatingBmb,
+                md.results.TransientSolution[0].TotalGroundedBmb,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[1].GroundedArea,
+                md.results.TransientSolution[1].FloatingArea,
+                md.results.TransientSolution[1].TotalFloatingBmb,
+                md.results.TransientSolution[1].TotalGroundedBmb,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[2].GroundedArea,
+                md.results.TransientSolution[2].FloatingArea,
+                md.results.TransientSolution[2].TotalFloatingBmb,
+                md.results.TransientSolution[2].TotalGroundedBmb]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test318.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test318.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test318.m	(revision 27955)
@@ -0,0 +1,22 @@
+%Test Name: SquareSheetConstrainedSteaSIA3d
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'SIA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0;
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-13,6e-10,1e-10,1e-13,1e-11,1e-6};
+field_values={...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test318.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test318.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test318.py	(revision 27955)
@@ -0,0 +1,29 @@
+#Test Name: SquareSheetConstrainedSteaSIA3d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.extrude(5, 1.)
+md = setflowequation(md, 'SIA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.timestepping.time_step = 0
+md = solve(md, 'Steadystate')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure', 'Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-13, 1e-13, 6e-10, 1e-10, 1e-13, 1e-11, 1e-6]
+field_values = [md.results.SteadystateSolution.Vx,
+                md.results.SteadystateSolution.Vy,
+                md.results.SteadystateSolution.Vz,
+                md.results.SteadystateSolution.Vel,
+                md.results.SteadystateSolution.Pressure,
+                md.results.SteadystateSolution.Temperature,
+                md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test319.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test319.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test319.m	(revision 27955)
@@ -0,0 +1,34 @@
+%Test Name: SquareSheetConstrainedCMDragSSA2d
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[103  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-12,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.FrictionCoefficient),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test319.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test319.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test319.py	(revision 27955)
@@ -0,0 +1,45 @@
+#Test Name: SquareSheetConstrainedCMDragSSA2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 200000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+
+#control parameters
+
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['FrictionCoefficient']
+md.inversion.min_parameters = 1. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = 200. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.nsteps = 2
+md.inversion.cost_functions = [103, 501]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, 2))
+md.inversion.cost_functions_coefficients[:, 1] = 2. * 10**-7
+md.inversion.gradient_scaling = 3. * np.ones((md.inversion.nsteps, len(md.inversion.control_parameters)))
+md.inversion.maxiter_per_step = 2 * np.ones(md.inversion.nsteps)
+md.inversion.step_threshold = 0.3 * np.ones(md.inversion.nsteps)
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs = md.initialization.vy
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Gradient', 'Misfits', 'FrictionCoefficient', 'Pressure', 'Vel', 'Vx', 'Vy']
+field_tolerances = [1e-12, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Gradient1,
+                md.results.StressbalanceSolution.J,
+                md.results.StressbalanceSolution.FrictionCoefficient,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test320.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test320.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test320.m	(revision 27955)
@@ -0,0 +1,35 @@
+%Test Name: SquareSheetConstrainedCMDragSSA3d
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[103  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.FrictionCoefficient),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test320.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test320.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test320.py	(revision 27955)
@@ -0,0 +1,45 @@
+#Test Name: SquareSheetConstrainedCMDragSSA3d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 200000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+
+#control parameters
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['FrictionCoefficient']
+md.inversion.min_parameters = 1. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = 200. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.nsteps = 2
+md.inversion.cost_functions = [103, 501]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, 2))
+md.inversion.cost_functions_coefficients[:, 1] = 2. * 10**-7
+md.inversion.gradient_scaling = 3. * np.ones((md.inversion.nsteps, len(md.inversion.control_parameters)))
+md.inversion.maxiter_per_step = 2 * np.ones(md.inversion.nsteps)
+md.inversion.step_threshold = 0.3 * np.ones(md.inversion.nsteps)
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs = md.initialization.vy
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Gradient', 'Misfits', 'FrictionCoefficient', 'Pressure', 'Vel', 'Vx', 'Vy']
+field_tolerances = [1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12]
+field_values = [md.results.StressbalanceSolution.Gradient1,
+                md.results.StressbalanceSolution.J,
+                md.results.StressbalanceSolution.FrictionCoefficient,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3201.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3201.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3201.m	(revision 27955)
@@ -0,0 +1,110 @@
+%Test Name: SquareShelfTransientCalibrationNBEcodipack
+
+%Generate observations
+md = model;
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md = setmask(md,'all','');
+md = parameterize(md,'../Par/SquareShelf.par');
+md = setflowequation(md,'SSA','all');
+md.cluster = generic('np',2);
+
+%Create real time series for B
+md.timestepping.interp_forcing = 0;
+md.timestepping.final_time = 2*md.timestepping.time_step;
+md.materials.rheology_B = 1.8e8*ones(md.mesh.numberofelements,2);
+md.materials.rheology_B(find(mean(md.mesh.x(md.mesh.elements),2)<mean(md.mesh.y(md.mesh.elements),2)),2)=1.4e8;
+md.materials.rheology_B=[md.materials.rheology_B;0.01 2*md.timestepping.time_step]; 
+
+%Initial values
+md.initialization.vx = zeros(md.mesh.numberofvertices,1);
+md.initialization.vy = zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure = zeros(md.mesh.numberofvertices,1);
+md.initialization.temperature = zeros(md.mesh.numberofvertices,1);
+md.basalforcings.geothermalflux = zeros(md.mesh.numberofvertices,1);
+md.thermal.spctemperature = NaN(md.mesh.numberofvertices,1);
+
+md = solve(md,'tr');
+%plotmodel(md,'axis#all','tight','data',md.materials.rheology_B(1:end-1,1),'caxis#all',[ 1.3 1.9]*10^8,'title','"True" B',...
+%'data',md.materials.rheology_B(1:end-1,2),'title','"True" B 2')
+
+%Modify rheology, now constant
+md.materials.rheology_B(1:end-1,:) = 1.8e8;
+
+%Set cost function
+count = 1;
+for i=1:numel(md.results.TransientSolution)
+	vx_obs = md.results.TransientSolution(i).Vx;
+	vy_obs = md.results.TransientSolution(i).Vy;
+	z_obs  = md.results.TransientSolution(i).Surface;
+
+	time   = md.results.TransientSolution(i).time;
+	weights= ones(md.mesh.numberofvertices,1);
+
+	md.outputdefinition.definitions{count}=cfsurfacelogvel('name',['LogVelMis' num2str(count)],...
+		'definitionstring',['Outputdefinition' num2str(count)],...
+		'vxobs_string','VxObs','vxobs',vx_obs,...
+		'vyobs_string','VyObs','vyobs',vy_obs,...
+		'weights',weights,'weights_string','WeightsSurfaceObservation',...
+		'datatime',time);
+	md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+	count = count+1;
+
+	md.outputdefinition.definitions{count}=cfsurfacesquare('name',['VyMisfit' num2str(count)],...
+		'definitionstring',['Outputdefinition' num2str(count)],...
+		'model_string','Vy','observation_string','VyObs',...
+		'observation',vy_obs/md.constants.yts,'weights',weights,'weights_string','WeightsSurfaceObservation',...
+		'datatime',time);
+	md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+	count = count+1;
+
+	md.outputdefinition.definitions{count}=cfsurfacesquare('name',['VxMisfit' num2str(count)],...
+		'definitionstring',['Outputdefinition' num2str(count)],...
+		'model_string','Vx','observation_string','VxObs',...
+		'observation',vx_obs/md.constants.yts,'weights',500*weights,'weights_string','WeightsSurfaceObservation',...
+		'datatime',time);
+	md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+	count = count+1;
+
+	md.outputdefinition.definitions{count}=cfsurfacesquare('name',['DEMMisfit' num2str(count)],...
+		'definitionstring',['Outputdefinition' num2str(count)],...
+		'model_string','Surface','observation_string','SurfaceObservation',...
+		'observation',z_obs,...
+		'weights',1/(md.constants.yts)*weights,...
+		'weights_string','WeightsSurfaceObservation',...
+		'datatime',time);
+	md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+	count = count+1;
+end
+
+%Independent
+min_params = md.materials.rheology_B; min_params(1:end-1,:) = cuffey(273);
+max_params = md.materials.rheology_B; max_params(1:end-1,:) = cuffey(200);
+md.autodiff.independents{1} = independent('name','MaterialsRheologyBbar',...
+	'control_size',size(md.materials.rheology_B,2),...
+	'type','vertex',... %Really needed??
+	'min_parameters',min_params,...
+	'max_parameters',max_params,...
+	'control_scaling_factor',1e8);
+
+md.inversion=adm1qn3inversion(md.inversion);
+md.inversion.iscontrol=1;
+md.inversion.maxiter=3;
+md.inversion.maxsteps=md.inversion.maxiter;
+md.inversion.dxmin=1e-5;
+md.autodiff.isautodiff=1;
+md.autodiff.driver='fos_reverse';
+
+%Go solve!
+md.verbose=verbose(0);
+md=solve(md,'tr');
+%plotmodel(md,'axis#all','tight','data',md.results.TransientSolution(1).MaterialsRheologyBbar(:,1),'caxis#all',[ 1.3 1.9]*10^8,'title','B1',...
+%'data',md.results.TransientSolution(1).MaterialsRheologyBbar(:,2),'title','B2')
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfit','Rheology'};
+field_tolerances={1e-12,1e-12,1e-12};
+field_values={...
+	(md.results.TransientSolution(1).Gradient1),...
+	(md.results.TransientSolution(1).J),...
+	(md.results.TransientSolution(1).MaterialsRheologyBbar),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3202.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3202.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3202.m	(revision 27955)
@@ -0,0 +1,110 @@
+%Test Name: SquareShelfTransientCalibrationNBVcodipack
+
+%Generate observations
+md = model;
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md = setmask(md,'all','');
+md = parameterize(md,'../Par/SquareShelf.par');
+md = setflowequation(md,'SSA','all');
+md.cluster = generic('np',2);
+
+%Create real time series for B
+md.timestepping.interp_forcing = 0;
+md.timestepping.final_time = 2*md.timestepping.time_step;
+md.materials.rheology_B = 1.8e8*ones(md.mesh.numberofvertices,2);
+md.materials.rheology_B(find(md.mesh.x<md.mesh.y),2)=1.4e8;
+md.materials.rheology_B=[md.materials.rheology_B;0.01 2*md.timestepping.time_step];
+
+%Initial values
+md.initialization.vx = zeros(md.mesh.numberofvertices,1);
+md.initialization.vy = zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure = zeros(md.mesh.numberofvertices,1);
+md.initialization.temperature = zeros(md.mesh.numberofvertices,1);
+md.basalforcings.geothermalflux = zeros(md.mesh.numberofvertices,1);
+md.thermal.spctemperature = NaN(md.mesh.numberofvertices,1);
+
+md = solve(md,'tr');
+%plotmodel(md,'axis#all','tight','data',md.materials.rheology_B(1:end-1,1),'caxis#all',[ 1.3 1.9]*10^8,'title','"True" B',...
+%'data',md.materials.rheology_B(1:end-1,2),'title','"True" B 2')
+
+%Modify rheology, now constant
+md.materials.rheology_B(1:end-1,:) = 1.8e8;
+
+%Set cost function
+count = 1;
+for i=1:numel(md.results.TransientSolution)
+	vx_obs = md.results.TransientSolution(i).Vx;
+	vy_obs = md.results.TransientSolution(i).Vy;
+	z_obs  = md.results.TransientSolution(i).Surface;
+
+	time   = md.results.TransientSolution(i).time;
+	weights= ones(md.mesh.numberofvertices,1);
+
+	md.outputdefinition.definitions{count}=cfsurfacelogvel('name',['LogVelMis' num2str(count)],...
+		'definitionstring',['Outputdefinition' num2str(count)],...
+		'vxobs_string','VxObs','vxobs',vx_obs,...
+		'vyobs_string','VyObs','vyobs',vy_obs,...
+		'weights',weights,'weights_string','WeightsSurfaceObservation',...
+		'datatime',time);
+	md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+	count = count+1;
+
+	md.outputdefinition.definitions{count}=cfsurfacesquare('name',['VyMisfit' num2str(count)],...
+		'definitionstring',['Outputdefinition' num2str(count)],...
+		'model_string','Vy','observation_string','VyObs',...
+		'observation',vy_obs/md.constants.yts,'weights',weights,'weights_string','WeightsSurfaceObservation',...
+		'datatime',time);
+	md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+	count = count+1;
+
+	md.outputdefinition.definitions{count}=cfsurfacesquare('name',['VxMisfit' num2str(count)],...
+		'definitionstring',['Outputdefinition' num2str(count)],...
+		'model_string','Vx','observation_string','VxObs',...
+		'observation',vx_obs/md.constants.yts,'weights',500*weights,'weights_string','WeightsSurfaceObservation',...
+		'datatime',time);
+	md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+	count = count+1;
+
+	md.outputdefinition.definitions{count}=cfsurfacesquare('name',['DEMMisfit' num2str(count)],...
+		'definitionstring',['Outputdefinition' num2str(count)],...
+		'model_string','Surface','observation_string','SurfaceObservation',...
+		'observation',z_obs,...
+		'weights',1/(md.constants.yts)*weights,...
+		'weights_string','WeightsSurfaceObservation',...
+		'datatime',time);
+	md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+	count = count+1;
+end
+
+%Independent
+min_params = md.materials.rheology_B; min_params(1:end-1,:) = cuffey(273);
+max_params = md.materials.rheology_B; max_params(1:end-1,:) = cuffey(200);
+md.autodiff.independents{1} = independent('name','MaterialsRheologyBbar',...
+	'control_size',size(md.materials.rheology_B,2),...
+	'type','vertex',... %Really needed??
+	'min_parameters',min_params,...
+	'max_parameters',max_params,...
+	'control_scaling_factor',1e8);
+
+md.inversion=adm1qn3inversion(md.inversion);
+md.inversion.iscontrol=1;
+md.inversion.maxiter=4;
+md.inversion.maxsteps=md.inversion.maxiter;
+md.inversion.dxmin=1e-5;
+md.autodiff.isautodiff=1;
+md.autodiff.driver='fos_reverse';
+
+%Go solve!
+md.verbose=verbose(0);
+md=solve(md,'tr');
+%plotmodel(md,'axis#all','tight','data',md.results.TransientSolution(1).MaterialsRheologyBbar(:,1),'caxis#all',[ 1.3 1.9]*10^8,'title','B1',...
+%'data',md.results.TransientSolution(1).MaterialsRheologyBbar(:,2),'title','B2')
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfit','Rheology'};
+field_tolerances={2e-12,1e-12,1e-12};
+field_values={...
+	(md.results.TransientSolution(1).Gradient1),...
+	(md.results.TransientSolution(1).J),...
+	(md.results.TransientSolution(1).MaterialsRheologyBbar),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3203.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3203.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3203.m	(revision 27955)
@@ -0,0 +1,90 @@
+%Test Name: SquareShelfTransientLevelsetMisfitcodipack
+
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Do not kill ice bergs as all is floating
+md.levelset.kill_icebergs=0;
+
+x = md.mesh.x;
+xmin = min(x);
+xmax = max(x);
+Lx = (xmax-xmin);
+alpha = 2./3.;
+md.mask.ice_levelset = ((x - alpha*Lx)>0) - ((x - alpha*Lx)<0);
+
+md.timestepping.time_step=10;
+md.timestepping.final_time=30;
+
+%Transient
+md.transient.isstressbalance=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=0;
+md.transient.isgroundingline=0;
+md.transient.ismovingfront=1;
+
+md.calving=calvinglevermann();
+md.calving.coeff=4.89e13*ones(md.mesh.numberofvertices,1);
+md.frontalforcings.meltingrate=zeros(md.mesh.numberofvertices,1);
+md.levelset.spclevelset=NaN(md.mesh.numberofvertices,1);
+md.levelset.migration_max = 1e8;
+
+md = solve(md,'tr');
+%plotmodel(md,'axis#all','tight','data',md.materials.rheology_B(1:end-1,1),'caxis#all',[ 1.3 1.9]*10^8,'title','"True" B',...
+%'data',md.materials.rheology_B(1:end-1,2),'title','"True" B 2')
+
+%Modify rheology, now constant
+md.materials.rheology_B(1:end-1,:) = 1.8e8;
+
+%Set cost function
+weights= ones(md.mesh.numberofvertices,1);
+count = 1;
+
+for i=1:numel(md.results.TransientSolution)
+	time   = md.results.TransientSolution(i).time;
+   md.outputdefinition.definitions{count}=cflevelsetmisfit('name',['LevelsetMisfit' num2str(count)],...
+      'definitionstring',['Outputdefinition' num2str(count)],...
+      'model_string','MaskIceLevelset','observation_string','LevelsetObservation',...
+      'observation',reinitializelevelset(md, md.results.TransientSolution(i).MaskIceLevelset),'weights',weights,'weights_string','WeightsLevelsetObservation',...
+      'datatime',time);
+   md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+
+	count = count+1;
+end
+
+%Independent
+min_params = md.materials.rheology_B; min_params(1:end-1,:) = cuffey(273);
+max_params = md.materials.rheology_B; max_params(1:end-1,:) = cuffey(200);
+md.autodiff.independents{1} = independent('name','MaterialsRheologyBbar',...
+	'control_size',size(md.materials.rheology_B,2),...
+	'type','vertex',... %Really needed??
+	'min_parameters',min_params,...
+	'max_parameters',max_params,...
+	'control_scaling_factor',1e8);
+
+md.inversion=adm1qn3inversion(md.inversion);
+md.inversion.iscontrol=1;
+md.inversion.maxiter=4;
+md.inversion.maxsteps=md.inversion.maxiter;
+md.inversion.dxmin=1e-5;
+md.autodiff.isautodiff=1;
+md.autodiff.driver='fos_reverse';
+
+%Go solve!
+md.verbose=verbose(0);
+md=solve(md,'tr');
+%plotmodel(md,'axis#all','tight','data',md.results.TransientSolution(1).MaterialsRheologyBbar(:,1),'caxis#all',[ 1.3 1.9]*10^8,'title','B1',...
+%'data',md.results.TransientSolution(1).MaterialsRheologyBbar(:,2),'title','B2')
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfit','Rheology'};
+field_tolerances={1e-12,1e-12,1e-12};
+field_values={...
+	(md.results.TransientSolution(1).Gradient1),...
+	(md.results.TransientSolution(1).J),...
+	(md.results.TransientSolution(1).MaterialsRheologyBbar),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3204.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3204.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3204.m	(revision 27955)
@@ -0,0 +1,111 @@
+%Test Name: SquareShelfTransientCalibrationNBEcodipackCheckpoint
+
+%Same as test3201 but with checkpointing 1
+
+%Generate observations
+md = model;
+md = triangle(model(),'../Exp/Square.exp',100000.);
+md = setmask(md,'all','');
+md = parameterize(md,'../Par/SquareShelf.par');
+md = setflowequation(md,'SSA','all');
+md.cluster = generic('np',2);
+
+%Create real time series for B
+md.timestepping.interp_forcing = 0;
+md.timestepping.final_time = 2*md.timestepping.time_step;
+md.materials.rheology_B = 1.8e8*ones(md.mesh.numberofelements,2);
+md.materials.rheology_B(find(mean(md.mesh.x(md.mesh.elements),2)<mean(md.mesh.y(md.mesh.elements),2)),2)=1.4e8;
+md.materials.rheology_B=[md.materials.rheology_B;0.01 2*md.timestepping.time_step]; 
+
+%Initial values
+md.initialization.vx = zeros(md.mesh.numberofvertices,1);
+md.initialization.vy = zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure = zeros(md.mesh.numberofvertices,1);
+md.initialization.temperature = zeros(md.mesh.numberofvertices,1);
+md.basalforcings.geothermalflux = zeros(md.mesh.numberofvertices,1);
+md.thermal.spctemperature = NaN(md.mesh.numberofvertices,1);
+
+md = solve(md,'tr');
+
+%Modify rheology, now constant
+md.materials.rheology_B(1:end-1,:) = 1.8e8;
+
+%Set cost function
+count = 1;
+for i=1:numel(md.results.TransientSolution)
+	vx_obs = md.results.TransientSolution(i).Vx;
+	vy_obs = md.results.TransientSolution(i).Vy;
+	z_obs  = md.results.TransientSolution(i).Surface;
+
+	time   = md.results.TransientSolution(i).time;
+	weights= ones(md.mesh.numberofvertices,1);
+
+	md.outputdefinition.definitions{count}=cfsurfacelogvel('name',['LogVelMis' num2str(count)],...
+		'definitionstring',['Outputdefinition' num2str(count)],...
+		'vxobs_string','VxObs','vxobs',vx_obs,...
+		'vyobs_string','VyObs','vyobs',vy_obs,...
+		'weights',weights,'weights_string','WeightsSurfaceObservation',...
+		'datatime',time);
+	md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+	count = count+1;
+
+	md.outputdefinition.definitions{count}=cfsurfacesquare('name',['VyMisfit' num2str(count)],...
+		'definitionstring',['Outputdefinition' num2str(count)],...
+		'model_string','Vy','observation_string','VyObs',...
+		'observation',vy_obs/md.constants.yts,'weights',weights,'weights_string','WeightsSurfaceObservation',...
+		'datatime',time);
+	md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+	count = count+1;
+
+	md.outputdefinition.definitions{count}=cfsurfacesquare('name',['VxMisfit' num2str(count)],...
+		'definitionstring',['Outputdefinition' num2str(count)],...
+		'model_string','Vx','observation_string','VxObs',...
+		'observation',vx_obs/md.constants.yts,'weights',500*weights,'weights_string','WeightsSurfaceObservation',...
+		'datatime',time);
+	md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+	count = count+1;
+
+	md.outputdefinition.definitions{count}=cfsurfacesquare('name',['DEMMisfit' num2str(count)],...
+		'definitionstring',['Outputdefinition' num2str(count)],...
+		'model_string','Surface','observation_string','SurfaceObservation',...
+		'observation',z_obs,...
+		'weights',1/(md.constants.yts)*weights,...
+		'weights_string','WeightsSurfaceObservation',...
+		'datatime',time);
+	md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+	count = count+1;
+end
+
+%Independent
+min_params = md.materials.rheology_B; min_params(1:end-1,:) = cuffey(273);
+max_params = md.materials.rheology_B; max_params(1:end-1,:) = cuffey(200);
+md.autodiff.independents{1} = independent('name','MaterialsRheologyBbar',...
+	'control_size',size(md.materials.rheology_B,2),...
+	'type','vertex',... %Really needed??
+	'min_parameters',min_params,...
+	'max_parameters',max_params,...
+	'control_scaling_factor',1e8);
+
+md.inversion=adm1qn3inversion(md.inversion);
+md.inversion.iscontrol=1;
+md.inversion.maxiter=3;
+md.inversion.maxsteps=md.inversion.maxiter;
+md.inversion.dxmin=1e-5;
+md.autodiff.isautodiff=1;
+md.autodiff.driver='fos_reverse';
+md.settings.checkpoint_frequency = 1;
+
+%Go solve!
+md.verbose=verbose(0);
+md=solve(md,'tr');
+%plotmodel(md,'axis#all','tight','data',md.results.TransientSolution(1).MaterialsRheologyBbar(:,1),'caxis#all',[ 1.3 1.9]*10^8,'title','B1',...
+%'data',md.results.TransientSolution(1).MaterialsRheologyBbar(:,2),'title','B2')
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfit','Rheology'};
+field_tolerances={1e-12,1e-12,1e-12};
+field_values={...
+	(md.results.TransientSolution(1).Gradient1),...
+	(md.results.TransientSolution(1).J),...
+	(md.results.TransientSolution(1).MaterialsRheologyBbar),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3205.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3205.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3205.m	(revision 27955)
@@ -0,0 +1,113 @@
+%Test Name: SquareShelfTransientCalibrationNBVcodipackCheckpoint
+
+%Same as test3202 but with checkpointing 1
+
+%Generate observations
+md = model;
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md = setmask(md,'all','');
+md = parameterize(md,'../Par/SquareShelf.par');
+md = setflowequation(md,'SSA','all');
+md.cluster = generic('np',2);
+
+%Create real time series for B
+md.timestepping.interp_forcing = 0;
+md.timestepping.final_time = 2*md.timestepping.time_step;
+md.materials.rheology_B = 1.8e8*ones(md.mesh.numberofvertices,2);
+md.materials.rheology_B(find(md.mesh.x<md.mesh.y),2)=1.4e8;
+md.materials.rheology_B=[md.materials.rheology_B;0.01 2*md.timestepping.time_step];
+
+%Initial values
+md.initialization.vx = zeros(md.mesh.numberofvertices,1);
+md.initialization.vy = zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure = zeros(md.mesh.numberofvertices,1);
+md.initialization.temperature = zeros(md.mesh.numberofvertices,1);
+md.basalforcings.geothermalflux = zeros(md.mesh.numberofvertices,1);
+md.thermal.spctemperature = NaN(md.mesh.numberofvertices,1);
+
+md = solve(md,'tr');
+%plotmodel(md,'axis#all','tight','data',md.materials.rheology_B(1:end-1,1),'caxis#all',[ 1.3 1.9]*10^8,'title','"True" B',...
+%'data',md.materials.rheology_B(1:end-1,2),'title','"True" B 2')
+
+%Modify rheology, now constant
+md.materials.rheology_B(1:end-1,:) = 1.8e8;
+
+%Set cost function
+count = 1;
+for i=1:numel(md.results.TransientSolution)
+	vx_obs = md.results.TransientSolution(i).Vx;
+	vy_obs = md.results.TransientSolution(i).Vy;
+	z_obs  = md.results.TransientSolution(i).Surface;
+
+	time   = md.results.TransientSolution(i).time;
+	weights= ones(md.mesh.numberofvertices,1);
+
+	md.outputdefinition.definitions{count}=cfsurfacelogvel('name',['LogVelMis' num2str(count)],...
+		'definitionstring',['Outputdefinition' num2str(count)],...
+		'vxobs_string','VxObs','vxobs',vx_obs,...
+		'vyobs_string','VyObs','vyobs',vy_obs,...
+		'weights',weights,'weights_string','WeightsSurfaceObservation',...
+		'datatime',time);
+	md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+	count = count+1;
+
+	md.outputdefinition.definitions{count}=cfsurfacesquare('name',['VyMisfit' num2str(count)],...
+		'definitionstring',['Outputdefinition' num2str(count)],...
+		'model_string','Vy','observation_string','VyObs',...
+		'observation',vy_obs/md.constants.yts,'weights',weights,'weights_string','WeightsSurfaceObservation',...
+		'datatime',time);
+	md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+	count = count+1;
+
+	md.outputdefinition.definitions{count}=cfsurfacesquare('name',['VxMisfit' num2str(count)],...
+		'definitionstring',['Outputdefinition' num2str(count)],...
+		'model_string','Vx','observation_string','VxObs',...
+		'observation',vx_obs/md.constants.yts,'weights',500*weights,'weights_string','WeightsSurfaceObservation',...
+		'datatime',time);
+	md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+	count = count+1;
+
+	md.outputdefinition.definitions{count}=cfsurfacesquare('name',['DEMMisfit' num2str(count)],...
+		'definitionstring',['Outputdefinition' num2str(count)],...
+		'model_string','Surface','observation_string','SurfaceObservation',...
+		'observation',z_obs,...
+		'weights',1/(md.constants.yts)*weights,...
+		'weights_string','WeightsSurfaceObservation',...
+		'datatime',time);
+	md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+	count = count+1;
+end
+
+%Independent
+min_params = md.materials.rheology_B; min_params(1:end-1,:) = cuffey(273);
+max_params = md.materials.rheology_B; max_params(1:end-1,:) = cuffey(200);
+md.autodiff.independents{1} = independent('name','MaterialsRheologyBbar',...
+	'control_size',size(md.materials.rheology_B,2),...
+	'type','vertex',... %Really needed??
+	'min_parameters',min_params,...
+	'max_parameters',max_params,...
+	'control_scaling_factor',1e8);
+
+md.inversion=adm1qn3inversion(md.inversion);
+md.inversion.iscontrol=1;
+md.inversion.maxiter=4;
+md.inversion.maxsteps=md.inversion.maxiter;
+md.inversion.dxmin=1e-5;
+md.autodiff.isautodiff=1;
+md.autodiff.driver='fos_reverse';
+md.settings.checkpoint_frequency = 1;
+
+%Go solve!
+md.verbose=verbose(0);
+md=solve(md,'tr');
+%plotmodel(md,'axis#all','tight','data',md.results.TransientSolution(1).MaterialsRheologyBbar(:,1),'caxis#all',[ 1.3 1.9]*10^8,'title','B1',...
+%'data',md.results.TransientSolution(1).MaterialsRheologyBbar(:,2),'title','B2')
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfit','Rheology'};
+field_tolerances={1e-12,1e-12,1e-12};
+field_values={...
+	(md.results.TransientSolution(1).Gradient1),...
+	(md.results.TransientSolution(1).J),...
+	(md.results.TransientSolution(1).MaterialsRheologyBbar),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3206.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3206.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3206.m	(revision 27955)
@@ -0,0 +1,162 @@
+%Test Name: SquareShelfTransientCalibrationWithParamcodipack
+
+%Generate observations
+md = model;
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md = setmask(md,'all','');
+md = parameterize(md,'../Par/SquareShelf.par');
+md = setflowequation(md,'SSA','all');
+md.cluster = generic('np',2);
+
+%Create real time series for B
+md.timestepping.interp_forcing = 0;
+md.timestepping.final_time = 2*md.timestepping.time_step;
+md.materials.rheology_B = 1.8e8*ones(md.mesh.numberofvertices,2);
+md.materials.rheology_B(find(md.mesh.x<md.mesh.y),2)=1.4e8;
+md.materials.rheology_B=[md.materials.rheology_B;0.01 2*md.timestepping.time_step];
+
+%Initial values
+md.initialization.vx = zeros(md.mesh.numberofvertices,1);
+md.initialization.vy = zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure = zeros(md.mesh.numberofvertices,1);
+md.initialization.temperature = zeros(md.mesh.numberofvertices,1);
+md.basalforcings.geothermalflux = zeros(md.mesh.numberofvertices,1);
+md.thermal.spctemperature = NaN(md.mesh.numberofvertices,1);
+
+%Param
+md.basalforcings=linearbasalforcings();
+md.basalforcings.deepwater_melting_rate=50.; % m/yr ice equivalent
+md.basalforcings.deepwater_elevation=-500;
+md.basalforcings.upperwater_melting_rate=0; % no melting for zb>=0
+md.basalforcings.upperwater_elevation=0; % sea level
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1); % no melting on grounded ice
+md.basalforcings.perturbation_melting_rate(:)=0;
+md.transient.isthermal = 0;
+
+md = solve(md,'tr');
+
+%Set cost function
+count = 1;
+for i=1:numel(md.results.TransientSolution)
+	vx_obs = md.results.TransientSolution(i).Vx;
+	vy_obs = md.results.TransientSolution(i).Vy;
+	time   = md.results.TransientSolution(i).time;
+	weights= ones(md.mesh.numberofvertices,1);
+
+	md.outputdefinition.definitions{count}=cfsurfacelogvel('name',['LogVelMis' num2str(count)],...
+		'definitionstring',['Outputdefinition' num2str(count)],...
+		'vxobs_string','VxObs','vxobs',vx_obs,...
+		'vyobs_string','VyObs','vyobs',vy_obs,...
+		'weights',weights,'weights_string','WeightsSurfaceObservation',...
+		'datatime',time);
+	md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+	count = count+1;
+end
+
+%Deal with vx separately
+vx_obs  = [[md.results.TransientSolution(:).Vx]/md.constants.yts; [md.results.TransientSolution(:).time]];
+weights = [ones(size(vx_obs,1)-1,1); 0];
+md.outputdefinition.definitions{count}=cfsurfacesquaretransient('name',['VxMisfit_Transient'],...
+	'definitionstring',['Outputdefinition' num2str(count)],...
+	'model_string','Vx','observations_string','VxObs',...
+	'observations',vx_obs,'weights',500*weights,'weights_string','WeightsSurfaceObservation');
+md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+count = count+1;
+
+vy_obs  = [[md.results.TransientSolution(:).Vy]/md.constants.yts; [md.results.TransientSolution(:).time]];
+md.outputdefinition.definitions{count}=cfsurfacesquaretransient('name',['VyMisfit_Transient'],...
+	'definitionstring',['Outputdefinition' num2str(count)],...
+	'model_string','Vy','observations_string','VyObs',...
+	'observations',vy_obs,'weights',weights,'weights_string','WeightsSurfaceObservation');
+md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+count = count+1;
+
+surf_obs  = [[md.results.TransientSolution(:).Surface]; [md.results.TransientSolution(:).time]];
+md.outputdefinition.definitions{count}=cfsurfacesquaretransient('name',['SurfMisfit_Transient'],...
+	'definitionstring',['Outputdefinition' num2str(count)],...
+	'model_string','Surface','observations_string','SurfaceObservation',...
+	'observations',surf_obs,'weights',weights/(md.constants.yts),'weights_string','WeightsSurfaceObservation');
+md.autodiff.dependents{count} = dependent('name',['Outputdefinition' num2str(count)],'type','scalar','fos_reverse_index',1);
+count = count+1;
+
+%Independent
+md.materials.rheology_B(1:end-1,:) = 1.8e8;
+min_params = md.materials.rheology_B; min_params(1:end-1,:) = cuffey(273);
+max_params = md.materials.rheology_B; max_params(1:end-1,:) = cuffey(200);
+md.autodiff.independents{1} = independent('name','MaterialsRheologyBbar',...
+	'control_size',size(md.materials.rheology_B,2),...
+	'type','vertex',... %Really needed??
+	'min_parameters',min_params,...
+	'max_parameters',max_params,...
+	'control_scaling_factor',1e8);
+
+md.basalforcings.deepwater_melting_rate=1.; % m/yr ice equivalent
+field =md.basalforcings.deepwater_melting_rate/md.constants.yts;
+name = 'BasalforcingsDeepwaterMeltingRate';
+scaling = 50/md.constants.yts;
+md.autodiff.independents{2} = independent('name',name,'type','vertex','nods',md.mesh.numberofvertices,...
+	'control_size', size(field,2), 'min_parameters',1e-5*field, 'max_parameters',100*field, 'control_scaling_factor',scaling);
+
+md.inversion=adm1qn3inversion(md.inversion);
+md.inversion.iscontrol=1;
+md.inversion.maxiter=3;
+md.inversion.maxsteps=md.inversion.maxiter;
+md.inversion.dxmin=1e-5;
+md.autodiff.isautodiff=1;
+md.autodiff.driver='fos_reverse';
+md.settings.checkpoint_frequency = 2;
+
+%Go solve!
+md.verbose=verbose(0);
+md=solve(md,'tr');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient1','Gradient2','Misfit','Rheology','DeepMelt'};
+field_tolerances={1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Gradient1),...
+	(md.results.TransientSolution(1).Gradient2),...
+	(md.results.TransientSolution(1).J),...
+	(md.results.TransientSolution(1).MaterialsRheologyBbar),...
+	(md.results.TransientSolution(1).BasalforcingsDeepwaterMeltingRate),...
+	};
+
+
+return;
+%The code below validates the gradient, run only with maxiter=1 above!
+disp('Testing Gradient');
+index = 3;
+dJdB_ad = md.results.TransientSolution(1).Gradient1(index);
+delta=0.001;
+B1=md.materials.rheology_B(index);
+%B1=md.basalforcings.deepwater_melting_rate;
+B0=B1*(1.-delta);
+B2=B1*(1.+delta);
+deltaB=(B2-B0);
+
+list = {}; for i=1:numel(md.outputdefinition.definitions), list{i} = md.autodiff.dependents{i}.name;end
+md.transient.requested_outputs = list;
+md.autodiff.isautodiff=false;
+md.inversion.iscontrol=false;
+md2=md;
+
+%forward
+md=md2;
+md.materials.rheology_B(index)=B0;
+%md.basalforcings.deepwater_melting_rate = B0;
+md=solve(md,'tr');
+J0 = 0;
+for i=1:numel(md.outputdefinition.definitions), eval(['J0 = J0 + md.results.TransientSolution(end).' list{i} ';']); end
+
+%backward
+md=md2;
+md.materials.rheology_B(index)=B2;
+%md.basalforcings.deepwater_melting_rate = B2;
+md=solve(md,'tr');
+J2 = 0;
+for i=1:numel(md.outputdefinition.definitions), eval(['J2 = J2 + md.results.TransientSolution(end).' list{i} ';']); end
+
+%compute resulting derivative
+dJdB_an=(J2-J0)/deltaB;
+
+disp(sprintf('dJ/dB: analytical:  %16.16g\n       using ad:    %16.16g\n',dJdB_an,dJdB_ad));
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test321.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test321.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test321.m	(revision 27955)
@@ -0,0 +1,35 @@
+%Test Name: SquareSheetConstrainedCMDragHO
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[102  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-08,1e-07,1e-10,1e-10,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.FrictionCoefficient),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test321.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test321.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test321.py	(revision 27955)
@@ -0,0 +1,45 @@
+#Test Name: SquareSheetConstrainedCMDragHO
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 200000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+
+#control parameters
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['FrictionCoefficient']
+md.inversion.min_parameters = 1. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = 200. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.nsteps = 2
+md.inversion.cost_functions = [102, 501]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, 2))
+md.inversion.cost_functions_coefficients[:, 1] = 2 * 10**-7
+md.inversion.gradient_scaling = 3. * np.ones((md.inversion.nsteps, len(md.inversion.control_parameters)))
+md.inversion.maxiter_per_step = 2 * np.ones(md.inversion.nsteps)
+md.inversion.step_threshold = 0.3 * np.ones(md.inversion.nsteps)
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs = md.initialization.vy
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Gradient', 'Misfits', 'FrictionCoefficient', 'Pressure', 'Vel', 'Vx', 'Vy']
+field_tolerances = [1e-08, 1e-07, 1e-10, 1e-10, 1e-09, 1e-09, 1e-09]
+field_values = [md.results.StressbalanceSolution.Gradient1,
+                md.results.StressbalanceSolution.J,
+                md.results.StressbalanceSolution.FrictionCoefficient,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test322.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test322.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test322.m	(revision 27955)
@@ -0,0 +1,35 @@
+%Test Name: SquareSheetConstrainedCMDragFS
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'FS','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[104  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy'};
+field_tolerances={5e-05,1e-07,2e-06,8e-08,8e-07,9e-07,8e-07};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.FrictionCoefficient),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test322.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test322.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test322.py	(revision 27955)
@@ -0,0 +1,45 @@
+#Test Name: SquareSheetConstrainedCMDragFS
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 200000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'FS', 'all')
+
+#control parameters
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['FrictionCoefficient']
+md.inversion.min_parameters = 1. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = 200. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.nsteps = 2
+md.inversion.cost_functions = [104, 501]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, 2))
+md.inversion.cost_functions_coefficients[:, 1] = 2. * 10**-7
+md.inversion.gradient_scaling = 3. * np.ones((md.inversion.nsteps, len(md.inversion.control_parameters)))
+md.inversion.maxiter_per_step = 2 * np.ones(md.inversion.nsteps)
+md.inversion.step_threshold = 0.3 * np.ones(md.inversion.nsteps)
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs = md.initialization.vy
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Gradient', 'Misfits', 'FrictionCoefficient', 'Pressure', 'Vel', 'Vx', 'Vy']
+field_tolerances = [5e-05, 1e-07, 2e-06, 8e-08, 8e-07, 9e-07, 8e-07]
+field_values = [md.results.StressbalanceSolution.Gradient1,
+                md.results.StressbalanceSolution.J,
+                md.results.StressbalanceSolution.FrictionCoefficient,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test323.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test323.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test323.m	(revision 27955)
@@ -0,0 +1,43 @@
+%Test Name: SquareSheetConstrainedTranCflSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping = timesteppingadaptive(md.timestepping);
+md.timestepping.time_step_max = 10000.;
+md.timestepping.final_time=1120.;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-12,1e-12};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test323.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test323.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test323.py	(revision 27955)
@@ -0,0 +1,44 @@
+#Test Name: SquareSheetConstrainedTranCflSSA2d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.timestepping = timesteppingadaptive(md.timestepping)
+md.timestepping.time_step_max = 10000.
+md.timestepping.final_time = 1120.
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-12, 1e-12]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test324.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test324.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test324.m	(revision 27955)
@@ -0,0 +1,51 @@
+%Test Name: SquareSheetConstrainedTranCflSIA3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,5,1.2);
+md=setflowequation(md,'SIA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping = timesteppingadaptive(md.timestepping);
+md.timestepping.time_step_max = 10000.;
+md.timestepping.final_time=16000.;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1',...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2',...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={1e-13,  1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	5e-11,1e-13,5e-13,5e-11,1e-13,1e-13,5e-13,1e-13,1e-13,1e-13,...
+	1e-10,  1e-12,1e-12,1e-12,1e-13,1e-13,1e-12,1e-12,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test324.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test324.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test324.py	(revision 27955)
@@ -0,0 +1,58 @@
+#Test Name: SquareSheetConstrainedTranCflSIA3d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.extrude(5, 1.2)
+md = setflowequation(md, 'SIA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.timestepping = timesteppingadaptive(md.timestepping)
+md.timestepping.time_step_max = 10000.
+md.timestepping.final_time = 16000.
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Temperature1', 'BasalforcingsGroundediceMeltingRate1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'BasalforcingsGroundediceMeltingRate2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'Temperature3', 'BasalforcingsGroundediceMeltingRate3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    5e-11, 1e-13, 5e-13, 5e-11, 1e-13, 1e-13, 5e-13, 1e-13, 1e-13, 1e-13,
+                    1e-10, 1e-12, 1e-12, 1e-12, 1e-13, 1e-13, 1e-12, 1e-12, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test325.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test325.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test325.m	(revision 27955)
@@ -0,0 +1,23 @@
+%Test Name: SquareSheetConstrainedEnthalpyStea
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=0.;
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.thermal.isenthalpy = 1;
+md.thermal.isdynamicbasalspc = 1;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Enthalpy','Waterfraction','Temperature'};
+field_tolerances={1e-13,5e-13,1e-13};
+field_values={...
+	(md.results.ThermalSolution.Enthalpy),...
+	(md.results.ThermalSolution.Waterfraction),...
+	(md.results.ThermalSolution.Temperature),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test325.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test325.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test325.py	(revision 27955)
@@ -0,0 +1,31 @@
+#Test Name: SquareSheetConstrainedEnthalpyStea
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.timestepping.time_step = 0.
+md.initialization.waterfraction = np.zeros((md.mesh.numberofvertices))
+md.initialization.watercolumn = np.zeros((md.mesh.numberofvertices))
+md.thermal.isenthalpy = 1
+md.thermal.isdynamicbasalspc = 1
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Thermal')
+
+#Fields and tolerances to track changes
+field_names = ['Enthalpy', 'Waterfraction', 'Temperature']
+field_tolerances = [1e-13, 5e-13, 1e-13]
+field_values = [md.results.ThermalSolution.Enthalpy,
+                md.results.ThermalSolution.Waterfraction,
+                md.results.ThermalSolution.Temperature]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test326.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test326.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test326.m	(revision 27955)
@@ -0,0 +1,34 @@
+%Test Name: SquareSheetConstrainedEnthalpyTran
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Enthalpy1','Waterfraction1','Temperature1',...
+	'Enthalpy2','Waterfraction2','Temperature2',...
+	'Enthalpy3','Waterfraction3','Temperature3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Enthalpy),...
+	(md.results.TransientSolution(1).Waterfraction),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(2).Enthalpy),...
+	(md.results.TransientSolution(2).Waterfraction),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(3).Enthalpy),...
+	(md.results.TransientSolution(3).Waterfraction),...
+	(md.results.TransientSolution(3).Temperature),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test326.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test326.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test326.py	(revision 27955)
@@ -0,0 +1,42 @@
+#Test Name: SquareSheetConstrainedEnthalpyTran
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.initialization.waterfraction = np.zeros((md.mesh.numberofvertices))
+md.initialization.watercolumn = np.zeros((md.mesh.numberofvertices))
+md.transient.isstressbalance = False
+md.transient.ismasstransport = False
+md.transient.issmb = True
+md.transient.isthermal = True
+md.transient.isgroundingline = False
+md.thermal.isenthalpy = 1
+md.thermal.isdynamicbasalspc = 1
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Enthalpy1', 'Waterfraction1', 'Temperature1',
+               'Enthalpy2', 'Waterfraction2', 'Temperature2',
+               'Enthalpy3', 'Waterfraction3', 'Temperature3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Enthalpy,
+                md.results.TransientSolution[0].Waterfraction,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[1].Enthalpy,
+                md.results.TransientSolution[1].Waterfraction,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[2].Enthalpy,
+                md.results.TransientSolution[2].Waterfraction,
+                md.results.TransientSolution[2].Temperature]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test327.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test327.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test327.m	(revision 27955)
@@ -0,0 +1,60 @@
+%Test Name: SquareSheetConstrainedTransHOEnth
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.initialization.temperature(:)=272.;
+md.thermal.spctemperature(find(md.mesh.vertexonsurface))=272.;
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+md.basalforcings.geothermalflux(:)=5.;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','Enthalpy1','Waterfraction1',...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','Enthalpy2','Waterfraction2',...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','Enthalpy3','Waterfraction3'};
+field_tolerances={...
+	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,5e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-4,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).Enthalpy),...
+	(md.results.TransientSolution(1).Waterfraction),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).Enthalpy),...
+	(md.results.TransientSolution(2).Waterfraction),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).Enthalpy),...
+	(md.results.TransientSolution(3).Waterfraction),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test327.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test327.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test327.py	(revision 27955)
@@ -0,0 +1,66 @@
+#Test Name: SquareSheetConstrainedTransHOEnth
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 200000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.initialization.waterfraction = np.zeros((md.mesh.numberofvertices))
+md.initialization.watercolumn = np.zeros((md.mesh.numberofvertices))
+md.initialization.temperature[:] = 272.
+md.thermal.spctemperature[np.nonzero(md.mesh.vertexonsurface)[0]] = 272.
+md.thermal.isenthalpy = 1
+md.thermal.isdynamicbasalspc = 1
+md.basalforcings.geothermalflux[:] = 5.
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Temperature1', 'Enthalpy1', 'Waterfraction1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'Enthalpy2', 'Waterfraction2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'Temperature3', 'Enthalpy3', 'Waterfraction3']
+field_tolerances = [1e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 5e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-4, 1e-10]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].Enthalpy,
+                md.results.TransientSolution[0].Waterfraction,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].Enthalpy,
+                md.results.TransientSolution[1].Waterfraction,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].Enthalpy,
+                md.results.TransientSolution[2].Waterfraction]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test328.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test328.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test328.m	(revision 27955)
@@ -0,0 +1,43 @@
+%Test Name: SquareSheetConstrainedSmbGradients2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.smb = SMBgradients();
+md.smb.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y;
+md.smb.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y;
+md.smb.href=md.geometry.surface;
+md.smb.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
+md.transient.requested_outputs={'default','TotalSmb'};
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Bed1','Surface1','Thickness1','SMB1','TotalSmb1','Vx2','Vy2','Vel2','Bed2','Surface2','Thickness2','SMB2','TotalSmb2','Vx3','Vy3','Vel3','Bed3','Surface3','Thickness3','SMB3','TotalSmb3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,2e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(3).TotalSmb),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test328.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test328.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test328.py	(revision 27955)
@@ -0,0 +1,64 @@
+#Test Name: SquareSheetConstrainedSmbGradients2d
+import copy
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.smb = SMBgradients()
+md.smb.b_pos = -100. + 0.00005 * md.mesh.x - 0.0001 * md.mesh.y
+md.smb.b_neg = 250. + 0.000051 * md.mesh.x - 0.00011 * md.mesh.y
+md.transient.requested_outputs = ['default', 'TotalSmb']
+md.smb.href = copy.deepcopy(md.geometry.surface)
+md.smb.smbref = 1000. - 0.001 * md.mesh.x - 0.005 * md.mesh.y
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1',
+               'Bed1', 'Surface1', 'Thickness1',
+               'SMB1', 'TotalSmb1',
+               'Vx2', 'Vy2', 'Vel2', 'Bed2',
+               'Surface2', 'Thickness2',
+               'SMB2', 'TotalSmb2', 'Vx3', 'Vy3',
+               'Vel3', 'Bed3', 'Surface3',
+               'Thickness3', 'SMB3', 'TotalSmb3']
+field_tolerances = [1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 2e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[0].TotalSmb,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].TotalSmb,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].SmbMassBalance,
+                md.results.TransientSolution[2].TotalSmb]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test329.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test329.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test329.m	(revision 27955)
@@ -0,0 +1,52 @@
+%Test Name: SquareSheetConstrainedSmbGradients3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.smb = SMBgradients();
+md.smb.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y;
+md.smb.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y;
+md.smb.href=md.geometry.surface;
+md.smb.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
+md.transient.requested_outputs={'default','TotalSmb'};
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Bed1','Surface1','Thickness1','Temperature1','SMB1','TotalSmb1','Vx2','Vy2','Vz2','Vel2','Bed2','Surface2','Thickness2','Temperature2','SMB2','TotalSmb2','Vx3','Vy3','Vz3','Vel3','Bed3','Surface3','Thickness3','Temperature3','SMB3','TotalSmb3'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(3).TotalSmb),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test329.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test329.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test329.py	(revision 27955)
@@ -0,0 +1,73 @@
+#Test Name: SquareSheetConstrainedSmbGradients3d
+import copy
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.extrude(3, 1)
+md = setflowequation(md, 'HO', 'all')
+md.smb = SMBgradients()
+md.smb.b_pos = -100. + 0.00005 * md.mesh.x - 0.0001 * md.mesh.y
+md.smb.b_neg = 250. + 0.000051 * md.mesh.x - 0.00011 * md.mesh.y
+md.smb.href = copy.deepcopy(md.geometry.surface)
+md.smb.smbref = 1000. - 0.001 * md.mesh.x - 0.005 * md.mesh.y
+md.transient.requested_outputs = ['default', 'TotalSmb']
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1',
+               'Bed1', 'Surface1', 'Thickness1',
+               'Temperature1', 'SMB1', 'TotalSmb1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2',
+               'Bed2', 'Surface2', 'Thickness2',
+               'Temperature2', 'SMB2', 'TotalSmb2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3',
+               'Bed3', 'Surface3', 'Thickness3',
+               'Temperature3', 'SMB3', 'TotalSmb3']
+field_tolerances = [1e-09, 1e-09, 1e-09, 1e-09,
+                    1e-10, 1e-10, 1e-10,
+                    1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-09,
+                    1e-10, 1e-10, 1e-10,
+                    1e-10, 1e-10, 1e-10,
+                    1e-09, 5e-09, 1e-09, 1e-09,
+                    1e-10, 1e-10, 1e-10,
+                    1e-10, 1e-10, 1e-10]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[0].TotalSmb,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[1].TotalSmb,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].SmbMassBalance,
+                md.results.TransientSolution[2].TotalSmb]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test330.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test330.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test330.m	(revision 27955)
@@ -0,0 +1,25 @@
+%Test Name: SquareSheetConstrainedStressMOLHO2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'MOLHO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
+md=SetMOLHOBC(md);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.VxSurface),...
+	(md.results.StressbalanceSolution.VySurface),...
+	(md.results.StressbalanceSolution.VxShear),...
+	(md.results.StressbalanceSolution.VyShear),...
+	(md.results.StressbalanceSolution.VxBase),...
+	(md.results.StressbalanceSolution.VyBase),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test330.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test330.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test330.py	(revision 27955)
@@ -0,0 +1,33 @@
+#Test Name: SquareSheetConstrainedStressMOLHO2d
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from SetMOLHOBC import SetMOLHOBC
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md = setflowequation(md, 'MOLHO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
+md = SetMOLHOBC(md)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.VxSurface,
+                md.results.StressbalanceSolution.VySurface,
+                md.results.StressbalanceSolution.VxShear,
+                md.results.StressbalanceSolution.VyShear,
+                md.results.StressbalanceSolution.VxBase,
+                md.results.StressbalanceSolution.VyBase]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3300.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3300.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3300.m	(revision 27955)
@@ -0,0 +1,58 @@
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md.transient=deactivateall(md.transient);
+md.transient.ishydrology=1;
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.hydrology=(hydrologydc);
+md.hydrology=initialize(md.hydrology,md);
+md.hydrology.isefficientlayer=1;
+md.hydrology.sedimentlimit_flag=1;
+md.hydrology.sedimentlimit=400.0;
+md.hydrology.sediment_thickness=20.0;
+md.initialization.sediment_head=0.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.spcsediment_head=NaN*ones(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate = 2.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.sediment_transmitivity=1.5e-4*ones(md.mesh.numberofvertices,1);
+
+md.initialization.epl_head=0.0*ones(md.mesh.numberofvertices,1);
+md.initialization.epl_thickness=1.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.spcepl_head=NaN*ones(md.mesh.numberofvertices,1);
+md.hydrology.mask_eplactive_node=0*ones(md.mesh.numberofvertices,1);
+
+md.hydrology.epl_conductivity=1.5e-2;
+md.hydrology.epl_initial_thickness=1.0;
+md.hydrology.epl_colapse_thickness=1.0e-6;
+md.hydrology.epl_thick_comp=1;
+md.hydrology.epl_max_thickness=5.0;
+
+md.hydrology.transfer_flag=1.0;
+md.hydrology.leakage_factor=3.9e-12;
+
+times=0:0.002:8.0;
+md.basalforcings.groundedice_melting_rate=ones(md.mesh.numberofvertices+1,length(times));
+
+for i=1:length(times)
+	if(times(i)<=1.0)
+		md.basalforcings.groundedice_melting_rate(:,i)=1.0;
+	elseif(times(i)<=6.0)
+		md.basalforcings.groundedice_melting_rate(:,i)=-0.2;
+	else
+		md.basalforcings.groundedice_melting_rate(:,i)=0.0;
+ end
+end	
+
+md.basalforcings.groundedice_melting_rate(end,:)=times;
+
+md.timestepping.time_step=0.002;
+md.timestepping.final_time=8.0;
+
+md=solve(md,'Transient');
+
+field_names     ={'SedimentWaterHead5','EplWaterHead5','SedimentWaterHead40','EplWaterHead40'};
+field_tolerances={1e-13, 1e-13, 1e-13, 1e-13, 1e-13};
+field_values={md.results.TransientSolution(5).SedimentHead, ...
+							md.results.TransientSolution(5).EplHead,...
+							md.results.TransientSolution(40).SedimentHead,...
+							md.results.TransientSolution(40).EplHead};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3300.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3300.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3300.py	(revision 27955)
@@ -0,0 +1,77 @@
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from transient import *
+from setflowequation import *
+from solve import *
+
+
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 100000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.transient = transient.deactivateall(md.transient)
+md.transient.ishydrology = True
+md.transient.issmb = True
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 1)
+md.hydrology = hydrologydc()
+md.hydrology = md.hydrology.initialize(md)
+
+md.hydrology.isefficientlayer = 1
+md.hydrology.sedimentlimit_flag = 1
+md.hydrology.sedimentlimit = 400.0
+md.hydrology.mask_thawed_node = np.ones((md.mesh.numberofvertices))
+md.hydrology.sediment_thickness = 20.0
+md.initialization.sediment_head = np.zeros((md.mesh.numberofvertices))
+md.hydrology.spcsediment_head = np.nan * np.ones((md.mesh.numberofvertices))
+md.basalforcings.groundedice_melting_rate = 2.0 * np.ones((md.mesh.numberofvertices))
+md.hydrology.sediment_transmitivity = 1.5e-4 * np.ones((md.mesh.numberofvertices))
+
+md.initialization.epl_head = np.zeros((md.mesh.numberofvertices))
+md.initialization.epl_thickness = np.ones((md.mesh.numberofvertices))
+md.hydrology.spcepl_head = np.nan * np.ones((md.mesh.numberofvertices))
+md.hydrology.mask_eplactive_node = np.zeros((md.mesh.numberofvertices))
+
+md.hydrology.epl_conductivity = 1.5e-2
+md.hydrology.epl_initial_thickness = 1.0
+md.hydrology.epl_colapse_thickness = 1.0e-6
+md.hydrology.epl_thick_comp = 1
+md.hydrology.epl_max_thickness = 5.0
+
+md.hydrology.transfer_flag = 1.0
+md.hydrology.leakage_factor = 3.9e-13
+
+times = np.arange(0, 8.001, 0.002)
+md.basalforcings.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices + 1, len(times)))
+
+md.basalforcings.groundedice_melting_rate[:, np.where(times <= 6.0)] = -0.2
+md.basalforcings.groundedice_melting_rate[:, np.where(times <= 1.0)] = 1.0
+md.basalforcings.groundedice_melting_rate[-1, :] = times
+
+md.timestepping.time_step = 0.002
+md.timestepping.final_time = 8.0
+
+md = solve(md, 'Transient')
+
+# sedvol = np.zeros(4000)
+# eplvol = np.zeros(4000)
+# totvol = np.zeros(4001)
+# time = np.arange(0.002, 8.001, 0.002)
+# store = md.constants.g * md.hydrology.sediment_porosity * md.materials.rho_freshwater * ((md.hydrology.sediment_compressibility / md.hydrology.sediment_porosity) + md.hydrology.water_compressibility)
+# sedstore = 20.0 * store
+# for i in range(0, 4000):
+#       sedvol[i]=np.mean(md.results.TransientSolution[i].SedimentHead)*sedstore
+#       eplvol[i]=np.mean(md.results.TransientSolution[i].EplHead)*store*np.mean(md.results.TransientSolution[i].HydrologydcEplThicknessSubstep)
+#       totvol[i+1]=totvol[i]+md.basalforcings.groundedice_melting_rate[0, i]*0.002
+
+field_names = ['SedimentWaterHead5', 'EplWaterHead5', 'SedimentWaterHead40', 'EplWaterHead40']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[5].SedimentHead,
+                md.results.TransientSolution[5].EplHead,
+                md.results.TransientSolution[40].SedimentHead,
+                md.results.TransientSolution[40].EplHead]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test331.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test331.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test331.m	(revision 27955)
@@ -0,0 +1,29 @@
+%Test Name: SquareSheetConstrainedAnisotropicSUPG
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=0.;
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.thermal.isenthalpy=0;
+md.thermal.isdynamicbasalspc=0;
+md.thermal.stabilization=3;
+
+md.cluster=generic('name',oshostname(),'np',3);
+
+field_names={};
+field_tolerances={};
+field_values={};
+
+for i=[0 1]
+md.thermal.isenthalpy=i;
+	disp(' ');
+	disp(['====== Testing Thermal model with anisotropic SUPG and isenthalpy=',num2str(i),' =====']);
+        md=solve(md,'Thermal');
+        %Fields and tolerances to track changes
+        field_names     ={field_names{:},['Temperature' i]};
+        field_tolerances={field_tolerances{:},1e-13};
+        field_values={field_values{:},(md.results.ThermalSolution.Temperature)};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test332.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test332.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test332.m	(revision 27955)
@@ -0,0 +1,40 @@
+%Test Name: SquareSheetConstrainedTranMOLHO2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'MOLHO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=SetMOLHOBC(md);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	2e-13,1e-13,1e-13,2e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test332.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test332.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test332.py	(revision 27955)
@@ -0,0 +1,44 @@
+#Test Name: SquareSheetConstrainedTranMOLHO2d
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from SetMOLHOBC import SetMOLHOBC
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md = setflowequation(md, 'MOLHO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = SetMOLHOBC(md)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    2e-13, 1e-13, 1e-13, 2e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test333.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test333.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test333.m	(revision 27955)
@@ -0,0 +1,35 @@
+%Test Name: SquareSheetConstrainedCMDragMOLHO
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'MOLHO','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[102  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=SetMOLHOBC(md);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-12,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.FrictionCoefficient),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test333.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test333.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test333.py	(revision 27955)
@@ -0,0 +1,47 @@
+#Test Name: SquareSheetConstrainedCMDragMOLHO
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from SetMOLHOBC import SetMOLHOBC
+
+
+md = triangle(model(), '../Exp/Square.exp', 200000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md = setflowequation(md, 'MOLHO', 'all')
+
+#control parameters
+
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['FrictionCoefficient']
+md.inversion.min_parameters = 1. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = 200. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.nsteps = 2
+md.inversion.cost_functions = [102, 501]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, 2))
+md.inversion.cost_functions_coefficients[:, 1] = 2. * 10**-7
+md.inversion.gradient_scaling = 3. * np.ones((md.inversion.nsteps, len(md.inversion.control_parameters)))
+md.inversion.maxiter_per_step = 2 * np.ones(md.inversion.nsteps)
+md.inversion.step_threshold = 0.3 * np.ones(md.inversion.nsteps)
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs = md.initialization.vy
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = SetMOLHOBC(md)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Gradient', 'Misfits', 'FrictionCoefficient', 'Pressure', 'Vel', 'Vx', 'Vy']
+field_tolerances = [1e-12, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Gradient1,
+                md.results.StressbalanceSolution.J,
+                md.results.StressbalanceSolution.FrictionCoefficient,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test334.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test334.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test334.m	(revision 27955)
@@ -0,0 +1,36 @@
+%Test Name: SquareShelfCMBMOLHO
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'MOLHO','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'MaterialsRheologyBbar'};
+md.inversion.min_parameters=10^6*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2*10^9*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=10^7*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+md.verbose.control=true;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=SetMOLHOBC(md);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.MaterialsRheologyBbar),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test334.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test334.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test334.py	(revision 27955)
@@ -0,0 +1,49 @@
+#Test Name: SquareShelfCMBMOLHO
+from model import *
+from socket import gethostname
+import numpy as np
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from generic import generic
+from SetMOLHOBC import SetMOLHOBC
+
+md = triangle(model(), '../Exp/Square.exp', 200000)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'MOLHO', 'all')
+
+# control parameters
+
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['MaterialsRheologyBbar']
+md.inversion.min_parameters = 1.0e6 * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = 2.0e9 * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.nsteps = 2
+md.inversion.cost_functions = [101]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, len(md.inversion.cost_functions)))
+md.inversion.gradient_scaling = 1.0e7 * np.ones((md.inversion.nsteps, len(md.inversion.control_parameters)))
+md.inversion.maxiter_per_step = 2. * np.ones((md.inversion.nsteps))
+md.inversion.step_threshold = 0.3 * np.ones((md.inversion.nsteps))
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs = md.initialization.vy
+
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = SetMOLHOBC(md)
+md = solve(md, 'Stressbalance')
+
+
+# Fields and tolerances to track changes
+
+field_names = ['Gradient', 'Misfits', 'MaterialsRheologyBbar', 'Pressure', 'Vel', 'Vx', 'Vy']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Gradient1,
+                md.results.StressbalanceSolution.J,
+                md.results.StressbalanceSolution.MaterialsRheologyBbar,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test335.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test335.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test335.m	(revision 27955)
@@ -0,0 +1,29 @@
+%Test Name: SquareSheetConstrainedStressMOLHO3d
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'MOLHO','all');
+md = extrude(md, 5, 1);
+md.cluster=generic('name',oshostname(),'np',3);
+md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
+md=SetMOLHOBC(md);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.VxSurface),...
+	(md.results.StressbalanceSolution.VySurface),...
+	(md.results.StressbalanceSolution.VxShear),...
+	(md.results.StressbalanceSolution.VyShear),...
+	(md.results.StressbalanceSolution.VxBase),...
+	(md.results.StressbalanceSolution.VyBase),...
+	};
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test335.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test335.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test335.py	(revision 27955)
@@ -0,0 +1,35 @@
+#Test Name: SquareSheetConstrainedStressMOLHO2d
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from SetMOLHOBC import SetMOLHOBC
+
+
+md = triangle(model(), '../Exp/Square.exp', 200000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md = setflowequation(md, 'MOLHO', 'all')
+md = SetMOLHOBC(md)
+md.extrude(5, 1.)
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.VxSurface,
+                md.results.StressbalanceSolution.VySurface,
+                md.results.StressbalanceSolution.VxShear,
+                md.results.StressbalanceSolution.VyShear,
+                md.results.StressbalanceSolution.VxBase,
+                md.results.StressbalanceSolution.VyBase]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test336.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test336.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test336.m	(revision 27955)
@@ -0,0 +1,66 @@
+%Test Name: SquareSheetConstrainedSmbComponents2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4.;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb=SMBcomponents();
+md.smb.accumulation=[smb*2; [1.5 3.]];
+md.smb.runoff=[smb/2; [1.5 3.]];
+md.smb.evaporation=[smb/2; [1.5 3.]];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
+field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test336.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test336.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test336.py	(revision 27955)
@@ -0,0 +1,74 @@
+#Test Name: SquareSheetConstrainedSmbComponents2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.timestepping.time_step = 1.
+md.settings.output_frequency = 1
+md.timestepping.final_time = 4.
+
+#Set up transient
+smb = np.ones((md.mesh.numberofvertices)) * 3.6
+smb = np.vstack((smb, smb * -1.)).T
+
+md.smb = SMBcomponents()
+md.smb.accumulation = np.vstack((smb * 2, [1.5, 3.]))
+md.smb.runoff = np.vstack((smb / 2, [1.5, 3.]))
+md.smb.evaporation = np.vstack((smb / 2, [1.5, 3.]))
+md.transient.isthermal = False
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'SmbMassBalance3',
+               'Vx4', 'Vy4', 'Vel4', 'Pressure4', 'Bed4', 'Surface4', 'Thickness4', 'SmbMassBalance4']
+field_tolerances = [1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].SmbMassBalance,
+                md.results.TransientSolution[3].Vx,
+                md.results.TransientSolution[3].Vy,
+                md.results.TransientSolution[3].Vel,
+                md.results.TransientSolution[3].Pressure,
+                md.results.TransientSolution[3].Base,
+                md.results.TransientSolution[3].Surface,
+                md.results.TransientSolution[3].Thickness,
+                md.results.TransientSolution[3].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test337.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test337.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test337.m	(revision 27955)
@@ -0,0 +1,68 @@
+%Test Name: SquareSheetConstrainedSmbComponents3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4.;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb=SMBcomponents();
+md.smb.accumulation=[smb*2; [1.5 3.]];
+md.smb.runoff=[smb/2; [1.5 3.]];
+md.smb.evaporation=[smb/2; [1.5 3.]];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
+field_tolerances={...
+	5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test337.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test337.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test337.py	(revision 27955)
@@ -0,0 +1,75 @@
+#Test Name: SquareSheetConstrainedSmbComponents3d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.timestepping.time_step = 1.
+md.settings.output_frequency = 1
+md.timestepping.final_time = 4.
+
+#Set up transient
+smb = np.ones((md.mesh.numberofvertices)) * 3.6
+smb = np.vstack((smb, smb * -1.)).T
+
+md.smb = SMBcomponents()
+md.smb.accumulation = np.vstack((smb * 2, [1.5, 3.]))
+md.smb.runoff = np.vstack((smb / 2, [1.5, 3.]))
+md.smb.evaporation = np.vstack((smb / 2, [1.5, 3.]))
+md.transient.isthermal = False
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'SmbMassBalance3',
+               'Vx4', 'Vy4', 'Vel4', 'Pressure4', 'Bed4', 'Surface4', 'Thickness4', 'SmbMassBalance4']
+field_tolerances = [5e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    5e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    5e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    5e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].SmbMassBalance,
+                md.results.TransientSolution[3].Vx,
+                md.results.TransientSolution[3].Vy,
+                md.results.TransientSolution[3].Vel,
+                md.results.TransientSolution[3].Pressure,
+                md.results.TransientSolution[3].Base,
+                md.results.TransientSolution[3].Surface,
+                md.results.TransientSolution[3].Thickness,
+                md.results.TransientSolution[3].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test338.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test338.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test338.m	(revision 27955)
@@ -0,0 +1,67 @@
+%Test Name: SquareSheetConstrainedSmbMeltComponents2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4.;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb=SMBmeltcomponents();
+md.smb.accumulation=[smb; [1.5 3.]];
+md.smb.melt=[smb/2; [1.5 3.]];
+md.smb.refreeze=[smb; [1.5 3.]];
+md.smb.evaporation=[smb/2; [1.5 3.]];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
+field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test338.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test338.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test338.py	(revision 27955)
@@ -0,0 +1,75 @@
+#Test Name: SquareSheetConstrainedSmbMeltComponents2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.timestepping.time_step = 1.
+md.settings.output_frequency = 1
+md.timestepping.final_time = 400.
+
+#Set up transient
+smb = np.ones((md.mesh.numberofvertices)) * 3.6
+smb = np.vstack((smb, smb * -1.)).T
+
+md.smb = SMBmeltcomponents()
+md.smb.accumulation = np.vstack((smb, [1.5, 3.]))
+md.smb.evaporation = np.vstack((smb / 2, [1.5, 3.]))
+md.smb.melt = np.vstack((smb / 2, [1.5, 3.]))
+md.smb.refreeze = np.vstack((smb, [1.5, 3.]))
+md.transient.isthermal = False
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'SmbMassBalance3',
+               'Vx4', 'Vy4', 'Vel4', 'Pressure4', 'Bed4', 'Surface4', 'Thickness4', 'SmbMassBalance4']
+field_tolerances = [1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].SmbMassBalance,
+                md.results.TransientSolution[3].Vx,
+                md.results.TransientSolution[3].Vy,
+                md.results.TransientSolution[3].Vel,
+                md.results.TransientSolution[3].Pressure,
+                md.results.TransientSolution[3].Base,
+                md.results.TransientSolution[3].Surface,
+                md.results.TransientSolution[3].Thickness,
+                md.results.TransientSolution[3].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test339.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test339.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test339.m	(revision 27955)
@@ -0,0 +1,69 @@
+%Test Name: SquareSheetConstrainedSmbMeltComponents3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4.;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb=SMBmeltcomponents();
+md.smb.accumulation=[smb; [1.5 3.]];
+md.smb.melt=[smb/2; [1.5 3.]];
+md.smb.refreeze=[smb; [1.5 3.]];
+md.smb.evaporation=[smb/2; [1.5 3.]];
+md.transient.isthermal=0;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
+field_tolerances={...
+	2e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	2e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	2e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test339.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test339.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test339.py	(revision 27955)
@@ -0,0 +1,76 @@
+#Test Name: SquareSheetConstrainedSmbMeltComponents3d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.timestepping.time_step = 1.
+md.settings.output_frequency = 1
+md.timestepping.final_time = 4.
+
+#Set up transient
+smb = np.ones((md.mesh.numberofvertices)) * 3.6
+smb = np.vstack((smb, smb * -1.)).T
+
+md.smb = SMBmeltcomponents()
+md.smb.accumulation = np.vstack((smb, [1.5, 3.]))
+md.smb.evaporation = np.vstack((smb / 2, [1.5, 3.]))
+md.smb.melt = np.vstack((smb / 2, [1.5, 3.]))
+md.smb.refreeze = np.vstack((smb, [1.5, 3.]))
+md.transient.isthermal = False
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'SmbMassBalance3',
+               'Vx4', 'Vy4', 'Vel4', 'Pressure4', 'Bed4', 'Surface4', 'Thickness4', 'SmbMassBalance4']
+field_tolerances = [2e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    2e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    2e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].SmbMassBalance,
+                md.results.TransientSolution[3].Vx,
+                md.results.TransientSolution[3].Vy,
+                md.results.TransientSolution[3].Vel,
+                md.results.TransientSolution[3].Pressure,
+                md.results.TransientSolution[3].Base,
+                md.results.TransientSolution[3].Surface,
+                md.results.TransientSolution[3].Thickness,
+                md.results.TransientSolution[3].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test340.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test340.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test340.m	(revision 27955)
@@ -0,0 +1,34 @@
+%Test Name: SquareSheetConstrainedCMtaoDragHO
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+
+%control parameters
+md.inversion=taoinversion(md.inversion);
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.maxsteps=2;
+md.inversion.maxiter=6;
+md.inversion.cost_functions=[102  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy'};
+field_tolerances={3e-08,1e-07,5e-10,1e-10,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.FrictionCoefficient),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test340.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test340.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test340.py	(revision 27955)
@@ -0,0 +1,44 @@
+#Test Name: SquareSheetConstrainedSmbGradientsEla3d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from taoinversion import *
+
+md = triangle(model(), '../Exp/Square.exp', 200000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+
+#control parameters
+md.inversion = taoinversion()
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['FrictionCoefficient']
+md.inversion.min_parameters = 1. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = 200. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.maxsteps = 2
+md.inversion.maxiter = 6
+md.inversion.cost_functions = [102, 501]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, 2))
+md.inversion.cost_functions_coefficients[:, 1] = 2. * 1e-7
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs = md.initialization.vy
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Gradient', 'Misfits', 'FrictionCoefficient', 'Pressure', 'Vel', 'Vx', 'Vy']
+field_tolerances = [3e-08, 1e-07, 5e-10, 1e-10, 1e-09, 1e-09, 1e-09]
+field_values = [md.results.StressbalanceSolution.Gradient1,
+                md.results.StressbalanceSolution.J,
+                md.results.StressbalanceSolution.FrictionCoefficient,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test341.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test341.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test341.m	(revision 27955)
@@ -0,0 +1,33 @@
+%Test Name: SquareSheetConstrainedCMm1qn3DragHO
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+
+%control parameters
+md.inversion=m1qn3inversion(md.inversion);
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.maxsteps=2;
+md.inversion.maxiter=6;
+md.inversion.cost_functions=[102  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','FrictionCoefficient','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-08,1e-9,1e-10,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.FrictionCoefficient),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test341.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test341.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test341.py	(revision 27955)
@@ -0,0 +1,44 @@
+#Test Name: SquareSheetConstrainedCMm1qn3DragHO
+import numpy as np
+from model import *
+from socket import gethostname
+from m1qn3inversion import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 200000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+
+#control parameters
+md.inversion = m1qn3inversion(md.inversion)
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['FrictionCoefficient']
+md.inversion.min_parameters = 1. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = 200. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.maxsteps = 2
+md.inversion.maxiter = 6
+md.inversion.cost_functions = [102, 501]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, 2))
+md.inversion.cost_functions_coefficients[:, 1] = 2. * 10**-7
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs = md.initialization.vy
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Gradient', 'FrictionCoefficient', 'Pressure', 'Vel', 'Vx', 'Vy']
+field_tolerances = [1e-08, 1e-9, 1e-10, 1e-09, 1e-09, 1e-09]
+field_values = [md.results.StressbalanceSolution.Gradient1,
+                md.results.StressbalanceSolution.FrictionCoefficient,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test342.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test342.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test342.m	(revision 27955)
@@ -0,0 +1,24 @@
+%Test Name: SquareSheetTherSteaPlume
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md.basalforcings=plumebasalforcings(md);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.plumex=500000;
+md.basalforcings.plumey=500000;
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=0.;
+md.thermal.requested_outputs={'default','BasalforcingsGeothermalflux'};
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate','BasalforcingsGeothermalflux'};
+field_tolerances={1e-13,1e-8,1e-13};
+field_values={...
+	(md.results.ThermalSolution.Temperature),...
+	(md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate),...
+	(md.results.ThermalSolution.BasalforcingsGeothermalflux),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test342.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test342.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test342.py	(revision 27955)
@@ -0,0 +1,33 @@
+#Test Name: SquareSheetTherSteaPlume
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from plumebasalforcings import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.basalforcings = plumebasalforcings()
+md.basalforcings = md.basalforcings.setdefaultparameters()
+md.basalforcings.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices, ))
+md.basalforcings.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices, ))
+md.basalforcings.plumex = 500000
+md.basalforcings.plumey = 500000
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.timestepping.time_step = 0.
+md.thermal.requested_outputs = ['default', 'BasalforcingsGeothermalflux']
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Thermal')
+
+#Fields and tolerances to track changes
+field_names = ['Temperature', 'BasalforcingsGroundediceMeltingRate', 'BasalforcingsGeothermalflux']
+field_tolerances = [1e-13, 1e-8, 1e-13]
+field_values = [md.results.ThermalSolution.Temperature,
+                md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate,
+                md.results.ThermalSolution.BasalforcingsGeothermalflux]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test343.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test343.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test343.m	(revision 27955)
@@ -0,0 +1,56 @@
+%Test Name: SquareSheetConstrainedSmbGradientsEla2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.smb = SMBgradientsela();
+md.smb.ela=1500.*ones(md.mesh.numberofvertices+1,1);
+md.smb.b_pos=0.002.*ones(md.mesh.numberofvertices+1,1);
+md.smb.b_neg=0.005.*ones(md.mesh.numberofvertices+1,1);
+md.smb.b_max=4.*(md.materials.rho_freshwater/md.materials.rho_ice).*ones(md.mesh.numberofvertices+1,1);
+md.smb.b_min=-4.*(md.materials.rho_freshwater/md.materials.rho_ice).*ones(md.mesh.numberofvertices+1,1);
+
+%Change geometry
+md.geometry.thickness=md.geometry.surface*30;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%Transient options
+md.transient.requested_outputs={'default','TotalSmb'};
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx1','Vy1','Vel1','Bed1','Surface1','Thickness1','SMB1','TotalSmb1',...
+	'Vx2','Vy2','Vel2','Bed2','Surface2','Thickness2','SMB2','TotalSmb2',...
+	'Vx3','Vy3','Vel3','Bed3','Surface3','Thickness3','SMB3','TotalSmb3'};
+field_tolerances={...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-12,1e-12,1e-12,1e-13,1e-13,1e-13,1.5e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(3).TotalSmb),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test343.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test343.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test343.py	(revision 27955)
@@ -0,0 +1,62 @@
+#Test Name: SquareSheetConstrainedSmbGradientsEla2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from SMBgradientsela import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+md.smb = SMBgradientsela()
+md.smb.ela = 1500. * np.ones((md.mesh.numberofvertices + 1, ))
+md.smb.b_pos = 0.002 * np.ones((md.mesh.numberofvertices + 1, ))
+md.smb.b_neg = 0.005 * np.ones((md.mesh.numberofvertices + 1, ))
+md.smb.b_max = 4. * (md.materials.rho_freshwater / md.materials.rho_ice) * np.ones((md.mesh.numberofvertices + 1, ))
+md.smb.b_min = -4. * (md.materials.rho_freshwater / md.materials.rho_ice) * np.ones((md.mesh.numberofvertices + 1, ))
+
+#Change geometry
+md.geometry.thickness = md.geometry.surface * 30.
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+#Transient options
+md.transient.requested_outputs = ['default', 'TotalSmb']
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Bed1', 'Surface1', 'Thickness1', 'SMB1', 'TotalSmb1',
+               'Vx2', 'Vy2', 'Vel2', 'Bed2', 'Surface2', 'Thickness2', 'SMB2', 'TotalSmb2',
+               'Vx3', 'Vy3', 'Vel3', 'Bed3', 'Surface3', 'Thickness3', 'SMB3', 'TotalSmb3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-12, 1e-12, 1e-12, 1e-13, 1e-13, 1e-13, 1.5e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[0].TotalSmb,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].TotalSmb,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].SmbMassBalance,
+                md.results.TransientSolution[2].TotalSmb]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test344.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test344.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test344.m	(revision 27955)
@@ -0,0 +1,61 @@
+%Test Name: SquareSheetConstrainedSmbGradientsEla3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+
+%Change geometry
+md.geometry.thickness=md.geometry.surface*30;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.smb = SMBgradientsela();
+md.smb.ela=1500.*ones(md.mesh.numberofvertices+1,1);
+md.smb.b_pos=0.002.*ones(md.mesh.numberofvertices+1,1);
+md.smb.b_neg=0.005.*ones(md.mesh.numberofvertices+1,1);
+md.smb.b_max=4.*(md.materials.rho_freshwater/md.materials.rho_ice).*ones(md.mesh.numberofvertices+1,1);
+md.smb.b_min=-4.*(md.materials.rho_freshwater/md.materials.rho_ice).*ones(md.mesh.numberofvertices+1,1);
+
+
+%Transient options
+md.transient.requested_outputs={'default','TotalSmb'};
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Bed1','Surface1','Thickness1','Temperature1','SMB1','TotalSmb1','Vx2','Vy2','Vz2','Vel2','Bed2','Surface2','Thickness2','Temperature2','SMB2','TotalSmb2','Vx3','Vy3','Vz3','Vel3','Bed3','Surface3','Thickness3','Temperature3','SMB3','TotalSmb3'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(3).TotalSmb),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test344.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test344.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test344.py	(revision 27955)
@@ -0,0 +1,71 @@
+#Test Name: SquareSheetConstrainedSmbGradientsEla3d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from SMBgradientsela import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+
+#Change geometry
+md.geometry.thickness = md.geometry.surface * 30.
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+md = md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.smb = SMBgradientsela()
+md.smb.ela = 1500. * np.ones((md.mesh.numberofvertices + 1, ))
+md.smb.b_pos = 0.002 * np.ones((md.mesh.numberofvertices + 1, ))
+md.smb.b_neg = 0.005 * np.ones((md.mesh.numberofvertices + 1, ))
+md.smb.b_max = 4. * (md.materials.rho_freshwater / md.materials.rho_ice) * np.ones((md.mesh.numberofvertices + 1, ))
+md.smb.b_min = -4. * (md.materials.rho_freshwater / md.materials.rho_ice) * np.ones((md.mesh.numberofvertices + 1, ))
+
+
+#Transient options
+md.transient.requested_outputs = ['default', 'TotalSmb']
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Bed1', 'Surface1', 'Thickness1', 'Temperature1', 'SMB1', 'TotalSmb1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'SMB2', 'TotalSmb2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Bed3', 'Surface3', 'Thickness3', 'Temperature3', 'SMB3', 'TotalSmb3']
+field_tolerances = [1e-09, 1e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 5e-09, 1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[0].TotalSmb,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].SmbMassBalance,
+                md.results.TransientSolution[1].TotalSmb,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].SmbMassBalance,
+                md.results.TransientSolution[2].TotalSmb]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test345.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test345.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test345.m	(revision 27955)
@@ -0,0 +1,30 @@
+%Test Name: SquareSheetConstrainedEnthalpyEffectiveConductivity
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=0.;
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.thermal.isenthalpy = 1;
+md.thermal.isdynamicbasalspc = 0;
+
+md.cluster=generic('name',oshostname(),'np',3);
+field_names={};
+field_tolerances={};
+field_values={};
+for i=[0 1 2]
+	md.materials.effectiveconductivity_averaging=i;
+	disp(' ');
+	disp(['====== Testing effectiveconductivity_averaging=',num2str(i),' =====']);
+	md=solve(md,'Thermal');
+	%Fields and tolerances to track changes
+	field_names     ={field_names{:},['Enthalpy' i],['Waterfraction' i],['Temperature' i]};
+	field_tolerances={field_tolerances{:},1e-13,5e-13,1e-13};
+	field_values={field_values{:},...
+		(md.results.ThermalSolution.Enthalpy),...
+		(md.results.ThermalSolution.Waterfraction),...
+		(md.results.ThermalSolution.Temperature),...
+		};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test346.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test346.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test346.m	(revision 27955)
@@ -0,0 +1,26 @@
+%Test Name: SquareSheetConstrainedTherTranNyeH2O 
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrainedCO2.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('convergence',true,'solution',true);
+md.materials.rheology_law = 'NyeCO2';
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature1','BasalforcingsGroundediceMeltingRate1',...
+	'Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13}; 
+field_values={...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test346.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test346.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test346.py	(revision 27955)
@@ -0,0 +1,34 @@
+#Test Name: SquareSheetConstrainedTherTranNyeCO2
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrainedCO2.py')
+
+md = md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+
+#Transient options
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.materials.rheology_law = 'NyeCO2'
+md.transient.isstressbalance = 0
+md.transient.ismasstransport = 0
+md.transient.issmb = 1
+md.transient.isthermal = 1
+md.transient.isgroundingline = 0
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Temperature1', 'BasalforcingsGroundediceMeltingRate1',
+               'Temperature3', 'BasalforcingsGroundediceMeltingRate3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test347.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test347.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test347.m	(revision 27955)
@@ -0,0 +1,28 @@
+%Test Name: SquareSheetConstrainedTherTranNyeH2O
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('convergence',true,'solution',true);
+md.materials.rheology_law = 'NyeH2O';
+md.materials.rheology_B=nye(md.initialization.temperature,2);
+
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature1','BasalforcingsGroundediceMeltingRate1',...
+	'Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13}; 
+field_values={...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test347.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test347.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test347.py	(revision 27955)
@@ -0,0 +1,37 @@
+#Test Name: SquareSheetConstrainedTherTranNyeH2O
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from nye import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+
+md = md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+
+#Transient options
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.materials.rheology_law = 'NyeH2O'
+md.materials.rheology_B = nye(md.initialization.temperature, 2)
+
+md.transient.isstressbalance = 0
+md.transient.ismasstransport = 0
+md.transient.issmb = 1
+md.transient.isthermal = 1
+md.transient.isgroundingline = 0
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Temperature1', 'BasalforcingsGroundediceMeltingRate1',
+               'Temperature3', 'BasalforcingsGroundediceMeltingRate3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3480.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3480.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3480.m	(revision 27955)
@@ -0,0 +1,74 @@
+%Test Name: SquareShelfAdolcStaticControls
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.initialization.vx(:)=1.;
+md.initialization.vy(:)=1.;
+md.geometry.thickness(:)=500-md.mesh.x/10000;
+md.geometry.bed =-100-md.mesh.x/1000;
+md.geometry.base=-md.geometry.thickness*md.materials.rho_ice/md.materials.rho_water;
+md.mask.ocean_levelset=md.geometry.thickness+md.materials.rho_water/md.materials.rho_ice*md.geometry.bed;
+pos=find(md.mask.ocean_levelset>=0);
+md.geometry.base(pos)=md.geometry.bed(pos);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=setflowequation(md,'SSA','all');
+
+%control parameters
+md.inversion=adm1qn3inversion(md.inversion);
+md.inversion.iscontrol=1;
+md.autodiff.isautodiff=1;
+md.autodiff.driver='fos_reverse';
+
+md.friction.coefficient(1:md.mesh.numberofvertices,1)=50;
+md.autodiff.independents = {independent('name','FrictionCoefficient',...
+	'control_size',1,...
+	'type','vertex',...
+	'min_parameters',ones(md.mesh.numberofvertices,1),...
+	'max_parameters',500*ones(md.mesh.numberofvertices,1),...
+	'control_scaling_factor',1)...
+	};
+
+md.outputdefinition.definitions{1}=cfsurfacesquare('name','VyMisfit1',...
+	'definitionstring','Outputdefinition1',...
+	'model_string','Vy',...
+	'observation_string','VyObs',...
+	'observation',md.initialization.vy/md.constants.yts,...
+	'weights',ones(md.mesh.numberofvertices,1),...
+	'weights_string','WeightsSurfaceObservation',...
+	'datatime',0.75);
+
+md.timestepping.interp_forcing=0;
+md.timestepping.time_step=0.5;
+md.timestepping.final_time=1.5;
+
+md.transient.ismasstransport=1;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+md.transient.ismovingfront=0;
+md.transient.isthermal=0;
+
+pos=find(md.mask.ocean_levelset<0);
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=25*zeros(md.mesh.numberofvertices,1);
+
+md.autodiff.dependents{1} = dependent('name','Outputdefinition1','type','scalar','fos_reverse_index',1);
+md.inversion.maxiter = 2;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure1','Vel1','Vx1','Vy1','Pressure2','Vel2','Vx2','Vy2'};
+field_tolerances={1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11};
+field_values={...
+	(md.results.TransientSolution(1).Gradient1),...
+	md.results.TransientSolution(1).J,...
+	(md.results.TransientSolution(1).FrictionCoefficient),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3481.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3481.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test3481.m	(revision 27955)
@@ -0,0 +1,80 @@
+%Test Name: SquareShelfAdolcTransientControls
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.initialization.vx(:)=1.;
+md.initialization.vy(:)=1.;
+md.geometry.thickness(:)=500-md.mesh.x/10000;
+md.geometry.bed =-100-md.mesh.x/1000;
+md.geometry.base=-md.geometry.thickness*md.materials.rho_ice/md.materials.rho_water;
+md.mask.ocean_levelset=md.geometry.thickness+md.materials.rho_water/md.materials.rho_ice*md.geometry.bed;
+pos=find(md.mask.ocean_levelset>=0);
+md.geometry.base(pos)=md.geometry.bed(pos);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=setflowequation(md,'SSA','all');
+
+%control parameters
+md.inversion=adm1qn3inversion(md.inversion);
+md.inversion.iscontrol=1;
+md.autodiff.isautodiff=1;
+md.autodiff.driver='fos_reverse';
+
+md.friction.coefficient(1:md.mesh.numberofvertices,1)=50;
+md.friction.coefficient(1:md.mesh.numberofvertices,2)=25;
+md.friction.coefficient(md.mesh.numberofvertices+1,1:2)=[0.75,1.25];
+min_parameters(1:md.mesh.numberofvertices,1:2)=1;
+min_parameters(md.mesh.numberofvertices+1,1:2)=[0.75,1.25];
+max_parameters(1:md.mesh.numberofvertices,1:2)=500;
+max_parameters(md.mesh.numberofvertices+1,1:2)=[0.75,1.25];
+md.autodiff.independents = {independent('name','FrictionCoefficient',...
+	'control_size',2,...
+	'type','vertex',...
+	'min_parameters',min_parameters,...
+	'max_parameters',max_parameters,...
+	'control_scaling_factor',1)...
+	};
+
+md.outputdefinition.definitions{1}=cfsurfacesquare('name','VyMisfit1',...
+	'definitionstring','Outputdefinition1',...
+	'model_string','Vy',...
+	'observation_string','VyObs',...
+	'observation',md.initialization.vy/md.constants.yts,...
+	'weights',ones(md.mesh.numberofvertices,1),...
+	'weights_string','WeightsSurfaceObservation',...
+	'datatime',0.75);
+
+md.timestepping.interp_forcing=1;
+md.timestepping.time_step=0.5;
+md.timestepping.final_time=1.5;
+
+md.transient.ismasstransport=1;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+md.transient.ismovingfront=0;
+md.transient.isthermal=0;
+
+pos=find(md.mask.ocean_levelset<0);
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=25*zeros(md.mesh.numberofvertices,1);
+
+md.autodiff.dependents{1} = dependent('name','Outputdefinition1','type','scalar','fos_reverse_index',1);
+md.inversion.maxiter = 2;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure1','Vel1','Vx1','Vy1','Pressure2','Vel2','Vx2','Vy2'};
+field_tolerances={1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11};
+field_values={...
+	(md.results.TransientSolution(1).Gradient1),...
+	md.results.TransientSolution(1).J,...
+	(md.results.TransientSolution(1).FrictionCoefficient),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(7).Pressure),...
+	(md.results.TransientSolution(7).Vel),...
+	(md.results.TransientSolution(7).Vx),...
+	(md.results.TransientSolution(7).Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test350.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test350.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test350.m	(revision 27955)
@@ -0,0 +1,77 @@
+%Test Name: SquareSheetHydrologyShakti
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md.mesh.x = md.mesh.x/1000;
+md.mesh.y = md.mesh.y/1000;
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md.transient=deactivateall(md.transient);
+md.transient.ishydrology=1;
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',2);
+
+%Use hydrology coupled friction law
+md.friction=frictionshakti(md.friction);
+
+%Change hydrology class to Shakti' model
+md.hydrology=hydrologyshakti();
+
+%Change geometry
+md.geometry.base = -.02*md.mesh.x + 20;
+md.geometry.thickness = 300*ones(md.mesh.numberofvertices,1);
+md.geometry.bed = md.geometry.base;
+md.geometry.surface = md.geometry.bed+md.geometry.thickness;
+
+%define the initial water head as being such that the water pressure is 50% of the ice overburden pressure
+md.hydrology.head = 0.5*md.materials.rho_ice/md.materials.rho_freshwater*md.geometry.thickness + md.geometry.base;
+md.hydrology.gap_height = 0.01*ones(md.mesh.numberofelements,1);
+md.hydrology.bump_spacing = 2*ones(md.mesh.numberofelements,1);
+md.hydrology.bump_height = 0.05*ones(md.mesh.numberofelements,1);
+md.hydrology.englacial_input = 0.5*ones(md.mesh.numberofvertices,1);
+md.hydrology.reynolds= 1000*ones(md.mesh.numberofelements,1);
+md.hydrology.spchead = NaN(md.mesh.numberofvertices,1);
+pos=find(md.mesh.vertexonboundary & md.mesh.x==1000);
+md.hydrology.spchead(pos)=md.geometry.base(pos);
+
+%Define velocity
+md.initialization.vx = 10^-6*md.constants.yts*ones(md.mesh.numberofvertices,1);
+md.initialization.vy = zeros(md.mesh.numberofvertices,1);
+
+md.timestepping.time_step=3*3600/md.constants.yts;
+md.timestepping.final_time=.5/365;
+md.materials.rheology_B(:)= (5e-25)^(-1/3);
+
+%Add one moulin and Neumann BC, varying in time
+[a pos] = min(sqrt((md.mesh.x-500).^2+(md.mesh.y-500).^2));
+time=0:md.timestepping.time_step:md.timestepping.final_time;
+md.hydrology.moulin_input = zeros(md.mesh.numberofvertices+1,numel(time));
+md.hydrology.moulin_input(end,:)=time;
+md.hydrology.moulin_input(pos,:)=5*(1-sin(2*pi/(1/365)*time));
+md.hydrology.neumannflux=zeros(md.mesh.numberofelements+1,numel(time));
+md.hydrology.neumannflux(end,:)=time;
+segx = md.mesh.x(md.mesh.segments(:,1)); segy=md.mesh.y(md.mesh.segments(:,1));
+pos = md.mesh.segments(find(segx<1 & segy>400 & segy<600),3);
+md.hydrology.neumannflux(pos,:)=repmat(0.05*(1-sin(2*pi/(1/365)*time)),numel(pos),1);
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names ={...
+	'HydrologyHead1','HydrologyGapHeight1',...
+	'HydrologyHead2','HydrologyGapHeight2',...
+	'HydrologyHead3','HydrologyGapHeight3',...
+	'HydrologyHead4','HydrologyGapHeight4'};
+field_tolerances={...
+	1e-13, 1e-13,...
+	1e-13, 1e-13,...
+	1e-13, 1e-13,...
+	1e-13, 1e-12};
+field_values={...
+	md.results.TransientSolution(1).HydrologyHead, ...
+	md.results.TransientSolution(1).HydrologyGapHeight,...
+	md.results.TransientSolution(2).HydrologyHead, ...
+	md.results.TransientSolution(2).HydrologyGapHeight,...
+	md.results.TransientSolution(3).HydrologyHead, ...
+	md.results.TransientSolution(3).HydrologyGapHeight,...
+	md.results.TransientSolution(4).HydrologyHead, ...
+	md.results.TransientSolution(4).HydrologyGapHeight};
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test350.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test350.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test350.py	(revision 27955)
@@ -0,0 +1,89 @@
+#Test Name: SquareSheetHydrologyShakti
+import numpy as np
+
+from frictionshakti import frictionshakti
+from socket import gethostname
+from model import *
+from operator import itemgetter
+from parameterize import parameterize
+from setflowequation import setflowequation
+from setmask import setmask
+from solve import solve
+from transient import transient
+from triangle import triangle
+
+md = triangle(model(), '../Exp/Square.exp', 50000.)
+md.mesh.x = md.mesh.x / 1000
+md.mesh.y = md.mesh.y / 1000
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md.transient = transient.deactivateall(md.transient)
+md.transient.ishydrology = 1
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 2)
+
+#Use hydrology coupled friction law
+md.friction = frictionshakti(md.friction)
+
+#Change hydrology class to Shakti' model
+md.hydrology = hydrologyshakti()
+
+#Change geometry
+md.geometry.base = -.02 * md.mesh.x + 20.
+md.geometry.thickness = 300. * np.ones((md.mesh.numberofvertices, ))
+md.geometry.bed = md.geometry.base
+md.geometry.surface = md.geometry.bed + md.geometry.thickness
+
+#define the initial water head as being such that the water pressure is 50% of the ice overburden pressure
+md.hydrology.head = 0.5 * md.materials.rho_ice / md.materials.rho_freshwater * md.geometry.thickness + md.geometry.base
+md.hydrology.gap_height = 0.01 * np.ones((md.mesh.numberofelements, ))
+md.hydrology.bump_spacing = 2 * np.ones((md.mesh.numberofelements, ))
+md.hydrology.bump_height = 0.05 * np.ones((md.mesh.numberofelements, ))
+md.hydrology.englacial_input = 0.5 * np.ones((md.mesh.numberofvertices, ))
+md.hydrology.reynolds = 1000. * np.ones((md.mesh.numberofelements, ))
+md.hydrology.spchead = float('NaN') * np.ones((md.mesh.numberofvertices, ))
+pos = np.intersect1d(np.array(np.where(md.mesh.vertexonboundary)), np.array(np.where(md.mesh.x == 1000)))
+md.hydrology.spchead[pos] = md.geometry.base[pos]
+
+#Define velocity
+md.initialization.vx = 1e-6 * md.constants.yts * np.ones((md.mesh.numberofvertices, ))
+md.initialization.vy = np.zeros((md.mesh.numberofvertices, ))
+
+md.timestepping.time_step = 3. * 3600. / md.constants.yts
+md.timestepping.final_time = .5 / 365.
+md.materials.rheology_B = (5e-25)**(-1. / 3.) * np.ones((md.mesh.numberofvertices, ))
+
+#Add one moulin and Neumann BC, varying in time
+a = np.sqrt((md.mesh.x - 500.)**2 + (md.mesh.y - 500.)**2)
+pos = min(enumerate(a), key=itemgetter(1))[0]
+time = np.arange(0, md.timestepping.final_time + 1, md.timestepping.time_step)
+md.hydrology.moulin_input = np.zeros((md.mesh.numberofvertices + 1, np.size(time)))
+md.hydrology.moulin_input[-1, :] = time
+md.hydrology.moulin_input[pos, :] = 5. * (1. - np.sin(2. * np.pi / (1. / 365.) * time))
+md.hydrology.neumannflux = np.zeros((md.mesh.numberofelements + 1, np.size(time)))
+md.hydrology.neumannflux[-1, :] = time
+segx = md.mesh.x[md.mesh.segments[:, 0] - 1]
+segy = md.mesh.y[md.mesh.segments[:, 0] - 1]
+posA = np.intersect1d(np.intersect1d(np.array(np.where(segx < 1.)), np.array(np.where(segy > 400.))), np.array(np.where(segy < 600.)))
+pos = (md.mesh.segments[posA] - 1)[:, 2]
+md.hydrology.neumannflux[pos, :] = np.tile(0.05 * (1. - np.sin(2. * np.pi / (1. / 365.) * time)), (len(pos), 1))
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['HydrologyHead1', 'HydrologyGapHeight1',
+               'HydrologyHead2', 'HydrologyGapHeight2',
+               'HydrologyHead3', 'HydrologyGapHeight3',
+               'HydrologyHead4', 'HydrologyGapHeight4']
+field_tolerances = [1e-13, 1e-13,
+                    1e-13, 1e-13,
+                    1e-13, 1e-13,
+                    1e-13, 1e-12]
+field_values = [md.results.TransientSolution[0].HydrologyHead,
+                md.results.TransientSolution[0].HydrologyGapHeight,
+                md.results.TransientSolution[1].HydrologyHead,
+                md.results.TransientSolution[1].HydrologyGapHeight,
+                md.results.TransientSolution[2].HydrologyHead,
+                md.results.TransientSolution[2].HydrologyGapHeight,
+                md.results.TransientSolution[3].HydrologyHead,
+                md.results.TransientSolution[3].HydrologyGapHeight]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test351.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test351.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test351.m	(revision 27955)
@@ -0,0 +1,33 @@
+%Test Name: SquareSheetFrictionTemp
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md.mesh.x = md.mesh.x/1000;
+md.mesh.y = md.mesh.y/1000;
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=extrude(md,10,3);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',4);
+
+%Use hydroogy coupled friciton law
+md.friction=frictiontemp(md.friction);
+md.friction.gamma=5;
+
+% Thermal settings
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=0;
+md.thermal.maxiter=5;
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+
+md.basalforcings.geothermalflux=4.2*10^-2*ones(md.mesh.numberofvertices,1);
+
+md.timestepping.time_step=0;
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz'};
+field_tolerances={1e-12,1e-12,2e-12};
+field_values={...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz)};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test352.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test352.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test352.m	(revision 27955)
@@ -0,0 +1,64 @@
+%Test Name: SquareSheetConstrainedSmbforcingClim2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=0.5;
+md.settings.output_frequency=1;
+md.timestepping.final_time=6.;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+md.smb.mass_balance=[smb; [1.5 3.]];
+md.transient.isthermal=0;
+
+md.timestepping.cycle_forcing=1;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
+field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	(md.results.TransientSolution(8).Vx),...
+	(md.results.TransientSolution(8).Vy),...
+	(md.results.TransientSolution(8).Vel),...
+	(md.results.TransientSolution(8).Pressure),...
+	(md.results.TransientSolution(8).Base),...
+	(md.results.TransientSolution(8).Surface),...
+	(md.results.TransientSolution(8).Thickness),...
+	(md.results.TransientSolution(8).SmbMassBalance),...
+	(md.results.TransientSolution(12).Vx),...
+	(md.results.TransientSolution(12).Vy),...
+	(md.results.TransientSolution(12).Vel),...
+	(md.results.TransientSolution(12).Pressure),...
+	(md.results.TransientSolution(12).Base),...
+	(md.results.TransientSolution(12).Surface),...
+	(md.results.TransientSolution(12).Thickness),...
+	(md.results.TransientSolution(12).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test352.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test352.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test352.py	(revision 27955)
@@ -0,0 +1,72 @@
+#Test Name: SquareSheetConstrainedSmbforcingClim2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.timestepping.time_step = 0.5
+md.settings.output_frequency = 1
+md.timestepping.final_time = 6.
+
+#Set up transient
+smb = np.ones((md.mesh.numberofvertices)) * 3.6
+smb = np.vstack((smb, smb * -1.)).T
+md.smb.mass_balance = np.vstack((smb, [1.5, 3.]))
+md.transient.isthermal = False
+
+md.timestepping.cycle_forcing = 1
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'SmbMassBalance3',
+               'Vx4', 'Vy4', 'Vel4', 'Pressure4', 'Bed4', 'Surface4', 'Thickness4', 'SmbMassBalance4']
+field_tolerances = [1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[3].Vx,
+                md.results.TransientSolution[3].Vy,
+                md.results.TransientSolution[3].Vel,
+                md.results.TransientSolution[3].Pressure,
+                md.results.TransientSolution[3].Base,
+                md.results.TransientSolution[3].Surface,
+                md.results.TransientSolution[3].Thickness,
+                md.results.TransientSolution[3].SmbMassBalance,
+                md.results.TransientSolution[7].Vx,
+                md.results.TransientSolution[7].Vy,
+                md.results.TransientSolution[7].Vel,
+                md.results.TransientSolution[7].Pressure,
+                md.results.TransientSolution[7].Base,
+                md.results.TransientSolution[7].Surface,
+                md.results.TransientSolution[7].Thickness,
+                md.results.TransientSolution[7].SmbMassBalance,
+                md.results.TransientSolution[11].Vx,
+                md.results.TransientSolution[11].Vy,
+                md.results.TransientSolution[11].Vel,
+                md.results.TransientSolution[11].Pressure,
+                md.results.TransientSolution[11].Base,
+                md.results.TransientSolution[11].Surface,
+                md.results.TransientSolution[11].Thickness,
+                md.results.TransientSolution[11].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test353.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test353.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test353.m	(revision 27955)
@@ -0,0 +1,68 @@
+%Test Name: SquareSheetConstrainedSmbComponentsClim2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=0.5;
+md.settings.output_frequency=1;
+md.timestepping.final_time=6.;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb=SMBcomponents();
+md.smb.accumulation=[smb*2; [1.5 3.]];
+md.smb.runoff=[smb/2; [1.5 3.]];
+md.smb.evaporation=[smb/2; [1.5 3.]];
+md.transient.isthermal=0;
+
+md.timestepping.cycle_forcing=1;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
+field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	(md.results.TransientSolution(8).Vx),...
+	(md.results.TransientSolution(8).Vy),...
+	(md.results.TransientSolution(8).Vel),...
+	(md.results.TransientSolution(8).Pressure),...
+	(md.results.TransientSolution(8).Base),...
+	(md.results.TransientSolution(8).Surface),...
+	(md.results.TransientSolution(8).Thickness),...
+	(md.results.TransientSolution(8).SmbMassBalance),...
+	(md.results.TransientSolution(12).Vx),...
+	(md.results.TransientSolution(12).Vy),...
+	(md.results.TransientSolution(12).Vel),...
+	(md.results.TransientSolution(12).Pressure),...
+	(md.results.TransientSolution(12).Base),...
+	(md.results.TransientSolution(12).Surface),...
+	(md.results.TransientSolution(12).Thickness),...
+	(md.results.TransientSolution(12).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test353.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test353.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test353.py	(revision 27955)
@@ -0,0 +1,76 @@
+#Test Name: SquareSheetConstrainedSmbComponentsClim2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.timestepping.time_step = 0.5
+md.settings.output_frequency = 1
+md.timestepping.final_time = 6.
+
+#Set up transient
+smb = np.ones((md.mesh.numberofvertices)) * 3.6
+smb = np.vstack((smb, smb * -1.)).T
+
+md.smb = SMBcomponents()
+md.smb.accumulation = np.vstack((smb * 2, [1.5, 3.]))
+md.smb.runoff = np.vstack((smb / 2, [1.5, 3.]))
+md.smb.evaporation = np.vstack((smb / 2, [1.5, 3.]))
+md.transient.isthermal = False
+
+md.timestepping.cycle_forcing = 1
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'SmbMassBalance3',
+               'Vx4', 'Vy4', 'Vel4', 'Pressure4', 'Bed4', 'Surface4', 'Thickness4', 'SmbMassBalance4']
+field_tolerances = [1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[3].Vx,
+                md.results.TransientSolution[3].Vy,
+                md.results.TransientSolution[3].Vel,
+                md.results.TransientSolution[3].Pressure,
+                md.results.TransientSolution[3].Base,
+                md.results.TransientSolution[3].Surface,
+                md.results.TransientSolution[3].Thickness,
+                md.results.TransientSolution[3].SmbMassBalance,
+                md.results.TransientSolution[7].Vx,
+                md.results.TransientSolution[7].Vy,
+                md.results.TransientSolution[7].Vel,
+                md.results.TransientSolution[7].Pressure,
+                md.results.TransientSolution[7].Base,
+                md.results.TransientSolution[7].Surface,
+                md.results.TransientSolution[7].Thickness,
+                md.results.TransientSolution[7].SmbMassBalance,
+                md.results.TransientSolution[11].Vx,
+                md.results.TransientSolution[11].Vy,
+                md.results.TransientSolution[11].Vel,
+                md.results.TransientSolution[11].Pressure,
+                md.results.TransientSolution[11].Base,
+                md.results.TransientSolution[11].Surface,
+                md.results.TransientSolution[11].Thickness,
+                md.results.TransientSolution[11].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test354.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test354.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test354.m	(revision 27955)
@@ -0,0 +1,69 @@
+%Test Name: SquareSheetConstrainedSmbMeltComponentsClim2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=0.5;
+md.settings.output_frequency=1;
+md.timestepping.final_time=6.;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb=SMBmeltcomponents();
+md.smb.accumulation=[smb; [1.5 3.]];
+md.smb.melt=[smb/2; [1.5 3.]];
+md.smb.refreeze=[smb; [1.5 3.]];
+md.smb.evaporation=[smb/2; [1.5 3.]];
+md.transient.isthermal=0;
+
+md.timestepping.cycle_forcing=1;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
+field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	(md.results.TransientSolution(8).Vx),...
+	(md.results.TransientSolution(8).Vy),...
+	(md.results.TransientSolution(8).Vel),...
+	(md.results.TransientSolution(8).Pressure),...
+	(md.results.TransientSolution(8).Base),...
+	(md.results.TransientSolution(8).Surface),...
+	(md.results.TransientSolution(8).Thickness),...
+	(md.results.TransientSolution(8).SmbMassBalance),...
+	(md.results.TransientSolution(12).Vx),...
+	(md.results.TransientSolution(12).Vy),...
+	(md.results.TransientSolution(12).Vel),...
+	(md.results.TransientSolution(12).Pressure),...
+	(md.results.TransientSolution(12).Base),...
+	(md.results.TransientSolution(12).Surface),...
+	(md.results.TransientSolution(12).Thickness),...
+	(md.results.TransientSolution(12).SmbMassBalance),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test354.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test354.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test354.py	(revision 27955)
@@ -0,0 +1,77 @@
+#Test Name: SquareSheetConstrainedSmbMeltComponentsClim2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.timestepping.time_step = 0.5
+md.settings.output_frequency = 1
+md.timestepping.final_time = 6.
+
+#Set up transient
+smb = np.ones((md.mesh.numberofvertices)) * 3.6
+smb = np.vstack((smb, smb * -1.)).T
+
+md.smb = SMBmeltcomponents()
+md.smb.accumulation = np.vstack((smb, [1.5, 3.]))
+md.smb.evaporation = np.vstack((smb / 2, [1.5, 3.]))
+md.smb.melt = np.vstack((smb / 2, [1.5, 3.]))
+md.smb.refreeze = np.vstack((smb, [1.5, 3.]))
+md.transient.isthermal = False
+
+md.timestepping.cycle_forcing = 1
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'SmbMassBalance1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'SmbMassBalance2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'SmbMassBalance3',
+               'Vx4', 'Vy4', 'Vel4', 'Pressure4', 'Bed4', 'Surface4', 'Thickness4', 'SmbMassBalance4']
+field_tolerances = [1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10,
+                    1e-09, 1e-09, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[3].Vx,
+                md.results.TransientSolution[3].Vy,
+                md.results.TransientSolution[3].Vel,
+                md.results.TransientSolution[3].Pressure,
+                md.results.TransientSolution[3].Base,
+                md.results.TransientSolution[3].Surface,
+                md.results.TransientSolution[3].Thickness,
+                md.results.TransientSolution[3].SmbMassBalance,
+                md.results.TransientSolution[7].Vx,
+                md.results.TransientSolution[7].Vy,
+                md.results.TransientSolution[7].Vel,
+                md.results.TransientSolution[7].Pressure,
+                md.results.TransientSolution[7].Base,
+                md.results.TransientSolution[7].Surface,
+                md.results.TransientSolution[7].Thickness,
+                md.results.TransientSolution[7].SmbMassBalance,
+                md.results.TransientSolution[11].Vx,
+                md.results.TransientSolution[11].Vy,
+                md.results.TransientSolution[11].Vel,
+                md.results.TransientSolution[11].Pressure,
+                md.results.TransientSolution[11].Base,
+                md.results.TransientSolution[11].Surface,
+                md.results.TransientSolution[11].Thickness,
+                md.results.TransientSolution[11].SmbMassBalance]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test355.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test355.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test355.m	(revision 27955)
@@ -0,0 +1,93 @@
+%Test Name: SquareSheetHydrologyGlaDS
+
+%create model:
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md.mesh.x = md.mesh.x/100;
+md.mesh.y = md.mesh.y/100;
+md.miscellaneous.name='testChannels';
+
+%miscellaneous
+md=setmask(md,'',''); %everywhere grounded
+md=setflowequation(md,'SSA','all');
+md.stressbalance.maxiter=2; %Make sure it runs quickly...
+
+%Some constants
+md.constants.g=9.8;
+md.materials.rho_ice=910;
+
+%Geometry
+md.geometry.surface= -.02*md.mesh.x + 320;
+md.geometry.bed = zeros(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.bed;
+md.geometry.thickness = md.geometry.surface-md.geometry.bed;
+
+%Define initial conditions
+md.initialization.vx = 1.0e-6*md.constants.yts*ones(md.mesh.numberofvertices,1);
+md.initialization.vy = zeros(md.mesh.numberofvertices,1);
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=0.03*ones(md.mesh.numberofvertices,1);
+md.initialization.hydraulic_potential = md.materials.rho_ice*md.constants.g*md.geometry.thickness;
+
+%Materials
+md.materials.rheology_B = (5e-25)^(-1/3) * ones(md.mesh.numberofvertices,1);
+md.materials.rheology_n = 3.*ones(md.mesh.numberofelements,1);
+
+%Friction
+md.friction.coefficient=zeros(md.mesh.numberofvertices,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+%md.friction.coupling=0;
+
+%Boundary conditions:
+md=SetIceSheetBC(md);
+
+md.inversion.iscontrol=0;
+md.transient=deactivateall(md.transient);
+md.transient.ishydrology=1;
+
+% Set numerical conditions
+md.timestepping.time_step=.1/365;
+md.timestepping.final_time=.4/365;
+
+%Change hydrology class to Glads model
+md.hydrology=hydrologyglads();
+md.hydrology.ischannels=1;
+md.hydrology.englacial_void_ratio=1e-5;
+md.hydrology.moulin_input=zeros(md.mesh.numberofvertices,1);
+md.hydrology.neumannflux=zeros(md.mesh.numberofelements,1);
+md.hydrology.bump_height = 1e-1 * ones(md.mesh.numberofvertices,1);
+md.hydrology.sheet_conductivity= 1e-3 * ones(md.mesh.numberofvertices,1);
+md.hydrology.channel_conductivity= 5.e-2 * ones(md.mesh.numberofvertices,1);
+
+% BCs for hydrology
+pos=find(md.mesh.x==100 & md.mesh.vertexonboundary);
+md.hydrology.spcphi=NaN(md.mesh.numberofvertices,1);
+md.hydrology.spcphi(pos) = md.materials.rho_ice * md.constants.g * md.geometry.thickness(pos);
+
+md.cluster=generic('np',2);
+md=solve(md,'Transient'); %or 'tr'
+
+%Fields and tolerances to track changes
+field_names ={...
+	'HydrologySheetThickness1','HydraulicPotential1','ChannelArea1',...
+	'HydrologySheetThickness2','HydraulicPotential2','ChannelArea2',...
+	'HydrologySheetThickness3','HydraulicPotential3','ChannelArea3',...
+	'HydrologySheetThickness4','HydraulicPotential4','ChannelArea4',};
+field_tolerances={...
+	5e-11,2e-08,3e-07,...
+	2e-10,2e-08,4e-07,...
+	3e-10,2e-08,4e-07,...
+	4e-10,1e-08,4e-07};
+field_values={...
+	md.results.TransientSolution(1).HydrologySheetThickness, ...
+	md.results.TransientSolution(1).HydraulicPotential,...
+	md.results.TransientSolution(1).ChannelArea,...
+	md.results.TransientSolution(2).HydrologySheetThickness, ...
+	md.results.TransientSolution(2).HydraulicPotential,...
+	md.results.TransientSolution(2).ChannelArea,...
+	md.results.TransientSolution(3).HydrologySheetThickness, ...
+	md.results.TransientSolution(3).HydraulicPotential,...
+	md.results.TransientSolution(3).ChannelArea,...
+	md.results.TransientSolution(4).HydrologySheetThickness, ...
+	md.results.TransientSolution(4).HydraulicPotential,...
+	md.results.TransientSolution(4).ChannelArea};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test355.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test355.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test355.py	(revision 27955)
@@ -0,0 +1,99 @@
+#Test Name: SquareSheetHydrologyGlaDS
+import numpy as np
+from model import *
+from triangle import triangle
+from setmask import setmask
+from setflowequation import setflowequation
+from parameterize import parameterize
+from solve import solve
+from SetIceSheetBC import SetIceSheetBC
+from generic import generic
+
+# Create model
+md = triangle(model(), '../Exp/Square.exp', 50000.)
+md.mesh.x = md.mesh.x / 100
+md.mesh.y = md.mesh.y / 100
+md.miscellaneous.name = 'testChannels'
+
+# Miscellaneous
+md = setmask(md, '', '') # Everywhere grounded
+md = setflowequation(md, 'SSA', 'all')
+md.stressbalance.maxiter = 2 # Make sure it runs quickly...
+
+# Some constants
+md.constants.g = 9.8
+md.materials.rho_ice = 910
+
+# Geometry
+md.geometry.surface = -0.02 * md.mesh.x + 320
+md.geometry.bed = np.zeros((md.mesh.numberofvertices))
+md.geometry.base = md.geometry.bed
+md.geometry.thickness = md.geometry.surface - md.geometry.bed
+
+# Define initial conditions
+md.initialization.vx = 1.0e-6 * md.constants.yts * np.ones((md.mesh.numberofvertices))
+md.initialization.vy = np.zeros((md.mesh.numberofvertices))
+md.initialization.temperature = (273. - 20.) * np.ones((md.mesh.numberofvertices))
+md.initialization.watercolumn = 0.03 * np.ones((md.mesh.numberofvertices))
+md.initialization.hydraulic_potential = md.materials.rho_ice * md.constants.g * md.geometry.thickness
+
+#cMaterials
+md.materials.rheology_B = (5e-25)**(-1./3.) * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
+
+#cFriction
+md.friction.coefficient = np.zeros((md.mesh.numberofvertices))
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+#md.friction.coupling = 0
+
+#Bcoundary conditions:
+md = SetIceSheetBC(md)
+
+md.inversion.iscontrol = 0
+md.transient = transient.deactivateall(md.transient)
+md.transient.ishydrology = 1
+
+# Set numerical conditions
+md.timestepping.time_step = 0.1 / 365
+md.timestepping.final_time = 0.4 / 365
+
+#Change hydrology class to Glads model
+md.hydrology = hydrologyglads()
+md.hydrology.ischannels = 1
+md.hydrology.englacial_void_ratio = 1.e-5
+md.hydrology.moulin_input = np.zeros((md.mesh.numberofvertices))
+md.hydrology.neumannflux = np.zeros((md.mesh.numberofelements))
+md.hydrology.bump_height = 1.e-1 * np.ones((md.mesh.numberofvertices))
+md.hydrology.sheet_conductivity = 1.e-3 * np.ones((md.mesh.numberofvertices))
+md.hydrology.channel_conductivity = 5.e-2 * np.ones((md.mesh.numberofvertices))
+
+# BCs for hydrology
+pos = np.where(np.logical_and(md.mesh.x == 100, md.mesh.vertexonboundary))
+md.hydrology.spcphi = np.nan * np.ones((md.mesh.numberofvertices))
+md.hydrology.spcphi[pos] = md.materials.rho_ice * md.constants.g * md.geometry.thickness[pos]
+
+md.cluster = generic('np', 2)
+md = solve(md, 'Transient') # Or 'tr'
+
+# Fields and tolerances to track changes
+field_names = ['HydrologySheetThickness1', 'HydraulicPotential1', 'ChannelArea1',
+               'HydrologySheetThickness2', 'HydraulicPotential2', 'ChannelArea2',
+               'HydrologySheetThickness3', 'HydraulicPotential3', 'ChannelArea3',
+               'HydrologySheetThickness4', 'HydraulicPotential4', 'ChannelArea4']
+field_tolerances = [5e-11, 2e-08, 3e-07,
+                    2e-10, 2e-08, 4e-07,
+                    3e-10, 2e-08, 4e-07,
+                    4e-10, 1e-08, 4e-07]
+field_values = [md.results.TransientSolution[0].HydrologySheetThickness,
+                md.results.TransientSolution[0].HydraulicPotential,
+                md.results.TransientSolution[0].ChannelArea,
+                md.results.TransientSolution[1].HydrologySheetThickness,
+                md.results.TransientSolution[1].HydraulicPotential,
+                md.results.TransientSolution[1].ChannelArea,
+                md.results.TransientSolution[2].HydrologySheetThickness,
+                md.results.TransientSolution[2].HydraulicPotential,
+                md.results.TransientSolution[2].ChannelArea,
+                md.results.TransientSolution[3].HydrologySheetThickness,
+                md.results.TransientSolution[3].HydraulicPotential,
+                md.results.TransientSolution[3].ChannelArea]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test356.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test356.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test356.m	(revision 27955)
@@ -0,0 +1,41 @@
+%Test Name: SquareSheetConstrainedCMDragSchoofSSA2d
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+
+%use Schoof's law
+Cmax = 0.8;
+md.friction = frictionschoof();
+md.friction.m = 1.0/3.0*ones(md.mesh.numberofelements,1);
+md.friction.Cmax = Cmax*ones(md.mesh.numberofvertices,1);
+md.friction.C = 200*ones(md.mesh.numberofvertices,1);
+	
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionC'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=10000.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[102  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionC','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-12,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.FrictionC),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test356.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test356.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test356.py	(revision 27955)
@@ -0,0 +1,56 @@
+#Test Name: TransientFrictionSchoof
+import numpy as np
+
+from frictionschoof import frictionschoof
+from socket import gethostname
+from model import *
+from parameterize import parameterize
+from setflowequation import setflowequation
+from setmask import setmask
+from solve import solve
+from transient import transient
+from triangle import triangle
+
+
+md = triangle(model(), '../Exp/Square.exp', 200000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareSheetConstrained.py')
+md = setflowequation(md, 'SSA', 'all')
+
+# Use Schoof's law
+Cmax = 0.8
+md.friction = frictionschoof()
+md.friction.m    = 1.0 / 3.0 * np.ones((md.mesh.numberofelements, 1))
+md.friction.Cmax = Cmax * np.ones((md.mesh.numberofvertices, 1))
+md.friction.C = 200 * np.ones((md.mesh.numberofvertices, 1))
+
+# Control parameters
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['FrictionC']
+md.inversion.min_parameters = 1. * np.ones((md.mesh.numberofvertices, 1))
+md.inversion.max_parameters = 10000. * np.ones((md.mesh.numberofvertices, 1))
+md.inversion.nsteps = 2
+md.inversion.cost_functions = [102, 501]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, 2))
+md.inversion.cost_functions_coefficients[:, 1] = 2e-7
+md.inversion.gradient_scaling = 3. * np.ones((md.inversion.nsteps, 1))
+md.inversion.maxiter_per_step = 2 * np.ones((md.inversion.nsteps, 1))
+md.inversion.step_threshold = 0.3 * np.ones((md.inversion.nsteps, 1))
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs= md.initialization.vy
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Gradient', 'Misfits', 'FrictionC', 'Pressure', 'Vel', 'Vx', 'Vy']
+field_tolerances = [1e-12, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [
+    md.results.StressbalanceSolution.Gradient1,
+    md.results.StressbalanceSolution.J,
+    md.results.StressbalanceSolution.FrictionC,
+    md.results.StressbalanceSolution.Pressure,
+    md.results.StressbalanceSolution.Vel,
+    md.results.StressbalanceSolution.Vx,
+    md.results.StressbalanceSolution.Vy
+]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test357.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test357.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test357.m	(revision 27955)
@@ -0,0 +1,40 @@
+%Test Name: SquareSheetConstrainedCMDragWeertmanSSA2d
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+
+%use Schoof's law
+Cmax = 0.8;
+md.friction = frictionweertman();
+md.friction.m = 3.0*ones(md.mesh.numberofelements,1);
+md.friction.C = 20*ones(md.mesh.numberofvertices,1);
+	
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionC'};
+md.inversion.min_parameters=1e-4.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=10000.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[101  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-4;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionC','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-12,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.FrictionC),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test358.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test358.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test358.m	(revision 27955)
@@ -0,0 +1,43 @@
+%Test Name: SquareSheetConstrainedCMDragRegCoulombSSA2d
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md=setflowequation(md,'SSA','all');
+
+%use Regularized Coulomb's law
+md.friction = frictionregcoulomb();
+md.friction.m = 3.0*ones(md.mesh.numberofelements,1);
+md.friction.u0 = 2000; %m/yr
+md.friction.C = 200*ones(md.mesh.numberofvertices,1);
+	
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionC'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=10000.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[102  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.verbose = verbose('all');
+md.debug.valgrind = 0;
+
+md.cluster=generic('name',oshostname(),'np',1);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionC','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-12,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.FrictionC),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test4001.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test4001.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test4001.m	(revision 27955)
@@ -0,0 +1,895 @@
+%Test Name: IceOcean
+%ISSM/MITgcm coupled set-up
+%
+%Script control parameters
+steps=1:11;
+final_time=1;
+
+!rm -rf ${ISSM_DIR}/test/MITgcm/install
+!rm -rf ${ISSM_DIR}/test/MITgcm/build/*
+!rm -f ${ISSM_DIR}/test/MITgcm/code/SIZE.h
+!rm -rf Models
+
+%Organizer
+!mkdir Models
+org=organizer('repository','Models','prefix','IceOcean.','steps',steps);
+
+presentdirectory=pwd;
+
+% {{{ Parameters:
+if perform(org,'Parameters'),
+    Nx=20; %number of longitude cells
+    Ny=40; %number of latitude cells
+    Nz=30; %number of MITgcm vertical cells
+    nPx=2; %number of MITgcm processes to use in x direction
+    nPy=4; %number of MITgcm processes to use in y direction
+    xgOrigin=0; %origin of longitude
+    ygOrigin=-80; %origin of latitude
+    dLong=.25; %longitude grid spacing
+    dLat=.05; %latitude grid spacing
+    delZ=30; %thickness of vertical levels
+    icefront_position_ratio=.75;
+    ice_thickness=100;
+    rho_ice=917;
+    rho_water=1028.14;
+    di=rho_ice/rho_water;
+
+    % MITgcm initial and lateral boundary conditions
+    iniSalt  = 34.4; % initial salinity (PSU)
+    iniTheta = -1.9; % initial potential temperature (deg C)
+    obcSalt  = 34.4; % open boundary salinity (PSU)
+    obcTheta =  1.0; % open boundary potential temperature (deg C)
+    mlDepth  = 120.; % mixed layer depth (m)
+    mlSalt   = 33.4; % open boundary salinity (PSU)
+    mlTheta  = -1.9; % open boundary potential temperature (deg C)
+    obcUvel  = -0.1; % open boundary velocity (m/s)
+
+    MITgcmDeltaT=600; % MITgcm time step in seconds
+    y2s=31536000; % year to seconds conversion, i.e., seconds per year
+
+    % start_time, final_time, and time_step
+    start_time=0; % in decimal years
+    time_step=1/12; % coupling interval in decimal years
+    async_step_MITgcm_multiplier=1/30; % used to reduce run time for MItgcm
+
+    % bedrock/bathymetry
+    hmax=1000;
+    trough_depth=200;
+    deltah=300;
+    sea_level=1095;
+
+    % issm settings:
+    numlayers=10;
+
+    savedata(org, Nx, Ny, nPx, nPy, Nz, dLong, dLat, delZ, xgOrigin, ...
+        ygOrigin, icefront_position_ratio, ice_thickness, rho_ice, ...
+        rho_water, di, hmax, trough_depth, deltah, sea_level, ...
+        iniSalt, iniTheta, obcSalt, obcTheta, mlDepth, mlSalt, ...
+        mlTheta, obcUvel, start_time, time_step, MITgcmDeltaT, y2s,...
+        numlayers,async_step_MITgcm_multiplier);
+end
+% }}}
+% {{{ Bathymetry:
+if perform(org,'Bathymetry'),
+
+    loaddata(org,'Parameters');
+    %create lat,long
+    lat=(ygOrigin+dLat/2):dLat:(ygOrigin+Ny*dLat);
+    long=(xgOrigin+dLong/2):dLong:(xgOrigin+Nx*dLong);
+    [lat long]=meshgrid(lat,long);
+
+    longmin=min(long(:));
+    longmax=max(long(:));
+    latmin=min(lat(:));
+    latmax=max(lat(:));
+
+    %create bedrock/bathymetry:
+    bedrock=zeros(Nx,Ny);
+    bedrock=hmax-deltah*tanh(pi*(2*(lat-latmin)./(latmax-latmin)-1))+ ...
+            trough_depth*cos(2*pi*long./(longmax-longmin));
+
+    %save bathymetry file for MITgcm
+    bathymetry=bedrock-sea_level;
+    savedata(org,lat,long,bathymetry);
+
+end
+% }}}
+% {{{ IceSheetGeometry:
+if perform(org,'IceSheetGeometry'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'Bathymetry');
+    latmin=min(lat(:));
+    latmax=max(lat(:));
+
+    %put ice_thickness constant layer of ice over the bathymetry, unless it floats:
+    s=size(bathymetry);
+    thickness=ice_thickness*ones(s);
+
+    %figure out ice shelf:
+    pos=find(-di*thickness>bathymetry);
+    iceshelf_mask=zeros(s);
+    iceshelf_mask(pos)=1;
+
+    ice_mask=ones(s);
+    pos=find((lat-latmin)/(latmax-latmin)>(icefront_position_ratio));
+    ice_mask(pos)=0;
+    iceshelf_mask(pos)=0;
+
+    %compute draft of ice shelf:
+    draft=bathymetry;
+    pos=find(iceshelf_mask);
+    draft(pos)=-di*thickness(pos);
+    pos=find(~ice_mask);
+    draft(pos)=0;
+
+    savedata(org,ice_mask,iceshelf_mask,draft,thickness);
+end
+% }}}
+
+%Configure MITgcm
+% {{{ GetMITgcm:
+if perform(org,'GetMITgcm'),
+  system([pwd '/../MITgcm/get_mitgcm.sh']);
+end
+% }}}
+% {{{ BuildMITgcm:
+if perform(org,'BuildMITgcm'),
+
+    %load data:
+    loaddata(org,'Parameters');
+
+    %specify computational grid in SIZE.h
+    if ~exist('../MITgcm/code/SIZE.h')
+        fidi=fopen('../MITgcm/code/SIZE.h.bak','r');
+        fido=fopen('../MITgcm/code/SIZE.h','w');
+        tline = fgetl(fidi);
+        fprintf(fido,'%s\n',tline);
+        while 1
+            tline = fgetl(fidi);
+            if ~ischar(tline), break, end
+            %do the change here:
+            if strcmpi(tline,'     &           sNx =  20,'),
+                fprintf(fido,'%s%i%s\n','     &           sNx =  ',round(Nx/nPx),',');
+                continue;
+            end
+            if strcmpi(tline,'     &           sNy =  20,'),
+                fprintf(fido,'%s%i%s\n','     &           sNy =  ',round(Ny/nPy),',');
+                continue;
+            end
+            if strcmpi(tline,'     &           nPx =   1,'),
+                fprintf(fido,'%s%i%s\n','     &           nPx = ',nPx,',');
+                continue;
+            end
+            if strcmpi(tline,'     &           nPy =   2,'),
+                fprintf(fido,'%s%i%s\n','     &           nPy = ',nPy,',');
+                continue;
+            end
+            fprintf(fido,'%s\n',tline);
+        end
+        %close  files
+        fclose(fidi);
+        fclose(fido);
+    end
+
+    system(['../MITgcm/build.sh generic ' pwd '/../MITgcm']);
+end
+% }}}
+addpath(recursivepath([pwd '/../MITgcm']));
+% {{{ RunUncoupledMITgcm:
+if perform(org,'RunUncoupledMITgcm'),
+
+    %load data:
+    loaddata(org,'Parameters');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+     endtime = round(MITgcmDeltaT * ...
+         floor(time_step*y2s*async_step_MITgcm_multiplier/MITgcmDeltaT));
+
+    % {{{ prepare MITgcm
+    % rename previous run directory and create new one
+    if exist ('run.old')
+        !\rm -rf run.old
+    end
+    if exist ('run')
+        !\mv run run.old
+    end
+    !\mkdir run
+    !\cp ../MITgcm/build/mitgcmuv run
+    !\cp ../MITgcm/input/* run
+    !\cp ../MITgcm/input/eedata_uncoupled run/eedata
+
+    %load data:
+    loaddata(org,'Parameters');
+
+    % initial salinity
+    S=iniSalt*ones(Nx,Ny,Nz);
+    writebin('run/Salt.bin',S);
+
+    % initial temperature
+    T=iniTheta*ones(Nx,Ny,Nz);
+    writebin('run/Theta.bin',T);
+
+    % initial velocity
+    Z=zeros(Nx,Ny,Nz);
+    writebin('run/Uvel.bin',Z);
+    writebin('run/Vvel.bin',Z);
+
+    % initial sea surface height
+    Z=zeros(Nx,Ny);
+    writebin('run/Etan.bin',Z);
+
+    % salinity boundary conditions
+    S=obcSalt*ones(Ny,Nz);
+    thk=delZ*ones(Nz,1);
+    bot=cumsum(thk);
+    ik=find(bot<=mlDepth);
+    S(:,ik)=mlSalt;
+    writebin('run/OBs.bin',S);
+
+    % temperature boundary conditions
+    T=obcTheta*ones(Ny,Nz);
+    T(:,ik)=mlTheta;
+    writebin('run/OBt.bin',T);
+
+    % zonal velocity boundary conditions
+    U=obcUvel*ones(Ny,Nz);
+    writebin('run/OBu.bin',U);
+
+    % zero boundary conditions
+    Z=zeros(Ny,Nz);
+    writebin('run/zeros.bin',Z);
+
+    % build parameter file data.obcs
+    fidi=fopen('../MITgcm/input/data.obcs','r');
+    fido=fopen('run/data.obcs','w');
+    tline = fgetl(fidi);
+    fprintf(fido,'%s\n',tline);
+    while 1
+        tline = fgetl(fidi);
+        if ~ischar(tline), break, end
+        %do the change here:
+        if strcmpi(tline,' OB_Iwest = 40*1,'),
+            fprintf(fido,'%s%i%s\n',' OB_Iwest = ',Ny,'*1,');
+            continue;
+        end
+        if strcmpi(tline,' OB_Ieast = 40*-1,'),
+            fprintf(fido,'%s%i%s\n',' OB_Ieast = ',Ny,'*-1,');
+            continue;
+        end
+        fprintf(fido,'%s\n',tline);
+    end
+    %close  files
+    fclose(fidi);
+    fclose(fido);
+
+    %save bathymetry and bedrock in run directory
+    writebin('run/bathymetry.bin',bathymetry);
+    writebin('run/icetopo.bin',draft);
+    % }}}
+
+    %start looping:
+    for t=start_time:time_step:final_time,
+        disp(['Year: ' num2str(t)])
+        % {{{ generate MITgcm parameter file data
+        fidi=fopen('../MITgcm/input/data','r');
+        fido=fopen('run/data','w');
+        tline = fgetl(fidi);
+        fprintf(fido,'%s\n',tline);
+        while 1
+            tline = fgetl(fidi);
+            if ~ischar(tline), break, end
+            %do the change here:
+            if strcmpi(tline,' xgOrigin = 0.0,'),
+                fprintf(fido,'%s%i%s\n',' xgOrigin = ',xgOrigin,',');
+                continue;
+            end
+            if strcmpi(tline,' ygOrigin = -80.0,'),
+                fprintf(fido,'%s%i%s\n',' ygOrigin = ',ygOrigin,',');
+                continue;
+            end
+            if strcmpi(tline,' delX = 20*0.25,'),
+                fprintf(fido,'%s%i*%g%s\n',' delX = ',Nx,dLong,',');
+                continue;
+            end
+            if strcmpi(tline,' delY = 20*0.25,'),
+                fprintf(fido,'%s%i*%g%s\n',' delY = ',Ny,dLat,',');
+                continue;
+            end
+            if strcmpi(tline,' delZ = 30*30.0,'),
+                fprintf(fido,'%s%i*%g%s\n',' delZ = ',Nz,delZ,',');
+                continue;
+            end
+            if strcmpi(tline,' endTime=2592000.,'),
+                fprintf(fido,'%s%i%s\n',' endTime= ',endtime,',');
+                continue;
+            end
+            if strcmpi(tline,' deltaT=1200.0,'),
+                fprintf(fido,'%s%i%s\n',' deltaT= ',MITgcmDeltaT,',');
+                continue;
+            end
+            if strcmpi(tline,' pChkptFreq=2592000.,'),
+                fprintf(fido,'%s%i%s\n',' pChkptFreq= ',endtime,',');
+                continue;
+            end
+            if strcmpi(tline,' taveFreq=2592000.,'),
+                fprintf(fido,'%s%i%s\n',' taveFreq= ',endtime,',');
+                continue;
+            end
+            if strcmpi(tline,' rhoConst=1030.,'),
+                fprintf(fido,'%s%i%s\n',' rhoConst= ',rho_water,',');
+                continue;
+            end
+            if strcmpi(tline,' rhoNil=1030.,'),
+                fprintf(fido,'%s%i%s\n',' rhoNil= ',rho_water,',');
+                continue;
+            end
+            fprintf(fido,'%s\n',tline);
+        end
+        %close  files
+        fclose(fidi);
+        fclose(fido);
+        % }}}
+        % {{{ generate initial MITgcm conditions
+
+        ds=round(endtime/MITgcmDeltaT);
+        if t>start_time
+            % Read pickup file
+            fnm=['run/pickup.' myint2str(ds,10) '.data'];
+            U=readbin(fnm,[Nx Ny Nz],1,'real*8',0);
+            V=readbin(fnm,[Nx Ny Nz],1,'real*8',1);
+            T=readbin(fnm,[Nx Ny Nz],1,'real*8',2);
+            S=readbin(fnm,[Nx Ny Nz],1,'real*8',3);
+            E=readbin(fnm,[Nx Ny],1,'real*8',8*Nz);
+            writebin('run/Salt.bin' ,S);
+            writebin('run/Theta.bin',T);
+            writebin('run/Uvel.bin' ,U);
+            writebin('run/Vvel.bin' ,V);
+            writebin('run/Etan.bin' ,E);
+        end
+
+        % }}}
+        % {{{ system call to run MITgcm
+        cd run
+        eval(['!mpirun -np ' int2str(nPx*nPy) ' ./mitgcmuv']);
+        ts=round((t+time_step)*y2s/MITgcmDeltaT);
+        eval(['!\mv STDERR.0000 STDERR_' myint2str(ts,10) '.data'])
+        eval(['!\mv STDOUT.0000 STDOUT_' myint2str(ts,10) '.data'])
+        eval(['!\cp hFacC.data hFacC_' myint2str(ts,10) '.data'])
+        eval(['!\cp icetopo.bin icetopo_' myint2str(ts,10) '.data'])
+        for fld={'S','T','U','V','Eta', ...
+                 'SHICE_heatFluxtave','SHICE_fwFluxtave'}
+            eval(['!\mv ' fld{1} '.' myint2str(ds,10) '.data ' ...
+                  fld{1} '_' myint2str(ts,10) '.data'])
+        end
+        cd ..
+        % }}}
+    end
+end
+% }}}
+
+%Configure ISSM
+% {{{ CreateMesh:
+if perform(org,'CreateMesh'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+
+    %create model:
+    md=model();
+
+    %Grab lat,long from MITgcm:
+    lat=lat(:);
+    long=long(:);
+
+    %project lat,long:
+    [x,y]=ll2xy(lat,long,-1);
+
+    index=[];
+    %  C  D
+    %  A  B
+    for j=1:Ny-1,
+        for i=1:Nx-1,
+            A=(j-1)*Nx+i;
+            B=(j-1)*Nx+i+1;
+            C=j*Nx+i;
+            D=j*Nx+i+1;
+            index(end+1,:)=[A B C];
+            index(end+1,:)=[C B D];
+        end
+    end
+
+    %fill mesh and model:
+    md=meshconvert(md,index,x,y);
+    md.mesh.lat=lat;
+    md.mesh.long=long;
+
+    savemodel(org,md);
+
+end
+% }}}
+% {{{ MeshGeometry:
+if perform(org,'MeshGeometry'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'CreateMesh');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+
+    %transfer to vertices:
+    bathymetry=bathymetry(:);
+    iceshelf_mask=iceshelf_mask(:);
+    ice_mask=ice_mask(:);
+    thickness=thickness(:);
+    draft=draft(:);
+
+    %start filling some of the fields
+    md.geometry.bed=bathymetry;
+    md.geometry.thickness=thickness;
+    md.geometry.base=md.geometry.bed;
+    pos=find(iceshelf_mask); md.geometry.base(pos)=draft(pos);
+    md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+    %nothing passes icefront:
+    pos=find(~ice_mask);
+    md.geometry.thickness(pos)=1;
+    md.geometry.surface(pos)=(1-di)*md.geometry.thickness(pos);
+    md.geometry.base(pos)=-di*md.geometry.thickness(pos);
+
+    %level sets:
+    md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1);
+    md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);
+
+    pos=find(ice_mask); md.mask.ice_levelset(pos)=-1;
+    pos=find(~iceshelf_mask & ice_mask); md.mask.ocean_levelset(pos)=1;
+
+    %identify edges of grounded ice:
+    ocean_levelset=md.mask.ocean_levelset;
+    for i=1:md.mesh.numberofelements,
+        m=ocean_levelset(md.mesh.elements(i,:));
+        if abs(sum(m))~=3,
+            pos=find(m==1); md.mask.ocean_levelset(md.mesh.elements(i,pos))=0;
+        end
+    end
+
+    %identify edges of ice:
+    ice_levelset=md.mask.ice_levelset;
+    for i=1:md.mesh.numberofelements,
+        m=ice_levelset(md.mesh.elements(i,:));
+        if abs(sum(m))~=3,
+            pos=find(m==-1); md.mask.ice_levelset(md.mesh.elements(i,pos))=0;
+        end
+    end
+
+    savemodel(org,md);
+end
+% }}}
+% {{{ ParameterizeIce:
+if perform(org,'ParameterizeIce'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'CreateMesh');
+    loaddata(org,'MeshGeometry');
+
+    %miscellaneous
+    md.miscellaneous.name='test4001';
+
+    %initial velocity:
+    md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+    md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+    md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+
+    %friction:
+    md.friction.coefficient=30*ones(md.mesh.numberofvertices,1);
+    pos=find(md.mask.ocean_levelset<=0);
+    md.friction.coefficient(pos)=0;
+    md.friction.p=ones(md.mesh.numberofelements,1);
+    md.friction.q=ones(md.mesh.numberofelements,1);
+
+    %temperatures and surface mass balance:
+    md.initialization.temperature=(273.15-20)*ones(md.mesh.numberofvertices,1);
+    md.initialization.pressure=md.materials.rho_ice*md.constants.g*(md.geometry.surface-md.geometry.base);
+    md.smb.mass_balance = [1*ones(md.mesh.numberofvertices,1); 1];
+
+    %Flow law
+    md.materials.rheology_B=paterson(md.initialization.temperature);
+    md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+    md.damage.D=zeros(md.mesh.numberofvertices,1);
+    md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+
+    %the spcs going
+    md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+    md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+    md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+    md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+    md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+    md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+
+    %deal with water:
+    pos=find(md.mask.ice_levelset>0);
+    md.stressbalance.spcvx(pos)=0;
+    md.stressbalance.spcvy(pos)=0;
+    md.stressbalance.spcvz(pos)=0;
+    md.masstransport.spcthickness(pos)=0;
+
+    %get some flux at the ice divide:
+    pos=find(md.mesh.lat==min(md.mesh.lat));
+    md.stressbalance.spcvy(pos)=200;
+
+    %deal with boundaries, excluding icefront:
+    vertex_on_boundary=zeros(md.mesh.numberofvertices,1);
+    vertex_on_boundary(md.mesh.segments(:,1:2))=1;
+    pos=find(vertex_on_boundary & md.mask.ocean_levelset<=0);
+    md.stressbalance.spcvx(pos)=md.initialization.vx(pos);
+    md.stressbalance.spcvy(pos)=md.initialization.vy(pos);
+    md.stressbalance.spcvz(pos)=md.initialization.vz(pos);
+    md.masstransport.spcthickness(pos)=md.geometry.thickness(pos);
+
+    md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+    md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+    md.thermal.spctemperature=[md.initialization.temperature; 1]; %impose observed temperature on surface
+    md.basalforcings.geothermalflux=.064*ones(md.mesh.numberofvertices,1);
+
+    %flow equations:
+    md=setflowequation(md,'SSA','all');
+
+    savemodel(org,md);
+end
+% }}}
+% {{{ RunUncoupledISSM:
+if perform(org,'RunUncoupledISSM'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'ParameterizeIce');
+
+    %timestepping:
+    md.timestepping.final_time=final_time;
+    md.timestepping.time_step=time_step;
+    md.transient.isgroundingline=1;
+    md.transient.isthermal=0;
+    md.groundingline.migration='SubelementMigration';
+    md.groundingline.melt_interpolation='SubelementMelt2';
+    md.groundingline.friction_interpolation='SubelementFriction2';
+
+    md.cluster=generic('name',oshostname(),'np',2);
+    md=solve(md,'Transient');
+
+    savemodel(org,md);
+end
+% }}}
+
+%Run MITgcm/ISSM
+% {{{ RunCoupledMITgcmISSM:
+if perform(org,'RunCoupledMITgcmISSM'),
+
+    %load data:
+    loaddata(org,'Parameters');
+    loaddata(org,'ParameterizeIce');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+        endtime = round(MITgcmDeltaT * ...
+         floor(time_step*y2s*async_step_MITgcm_multiplier/MITgcmDeltaT));
+
+        % {{{ prepare MITgcm
+        % rename previous run directory and create new one
+        if exist ('run.old')
+            !\rm -rf run.old
+        end
+        if exist ('run')
+            !\mv run run.old
+        end
+        !\mkdir run
+        !\cp ../MITgcm/build/mitgcmuv run
+        !\cp ../MITgcm/input/* run
+        !\cp ../MITgcm/input/eedata_uncoupled run/eedata
+
+        %load data:
+        loaddata(org,'Parameters');
+
+        % initial salinity
+        S=iniSalt*ones(Nx,Ny,Nz);
+        writebin('run/Salt.bin',S);
+
+        % initial temperature
+        T=iniTheta*ones(Nx,Ny,Nz);
+        writebin('run/Theta.bin',T);
+
+        % initial velocity
+        Z=zeros(Nx,Ny,Nz);
+        writebin('run/Uvel.bin',Z);
+        writebin('run/Vvel.bin',Z);
+
+        % initial sea surface height
+        Z=zeros(Nx,Ny);
+        writebin('run/Etan.bin',Z);
+
+        % salinity boundary conditions
+        S=obcSalt*ones(Ny,Nz);
+        thk=delZ*ones(Nz,1);
+        bot=cumsum(thk);
+        ik=find(bot<=mlDepth);
+        S(:,ik)=mlSalt;
+        writebin('run/OBs.bin',S);
+
+        % temperature boundary conditions
+        T=obcTheta*ones(Ny,Nz);
+        T(:,ik)=mlTheta;
+        writebin('run/OBt.bin',T);
+
+        % zonal velocity boundary conditions
+        U=obcUvel*ones(Ny,Nz);
+        writebin('run/OBu.bin',U);
+
+        % zero boundary conditions
+        Z=zeros(Ny,Nz);
+        writebin('run/zeros.bin',Z);
+
+        % build parameter file data.obcs
+        fidi=fopen('../MITgcm/input/data.obcs','r');
+        fido=fopen('run/data.obcs','w');
+        tline = fgetl(fidi);
+        fprintf(fido,'%s\n',tline);
+        while 1
+            tline = fgetl(fidi);
+            if ~ischar(tline), break, end
+            %do the change here:
+            if strcmpi(tline,' OB_Iwest = 40*1,'),
+                fprintf(fido,'%s%i%s\n',' OB_Iwest = ',Ny,'*1,');
+                continue;
+            end
+            if strcmpi(tline,' OB_Ieast = 40*-1,'),
+                fprintf(fido,'%s%i%s\n',' OB_Ieast = ',Ny,'*-1,');
+                continue;
+            end
+            fprintf(fido,'%s\n',tline);
+        end
+        %close  files
+        fclose(fidi);
+        fclose(fido);
+
+        %save bathymetry in MITgcm run directory
+        writebin('run/bathymetry.bin',bathymetry);
+        % }}}
+
+    % {{{ ISSM settings:
+
+    setenv('DYLD_LIBRARY_PATH', '/usr/local/gfortran/lib')
+    %timestepping:
+    md.timestepping.start_time=start_time;
+    md.timestepping.final_time=final_time;
+    md.timestepping.time_step=time_step;
+    md.cluster=generic('name',oshostname(),'np',2);
+    md.results.TransientSolution.Base=md.geometry.base;
+    md.transient.isgroundingline=1;
+    md.transient.isthermal=0;
+    md.groundingline.migration='SubelementMigration';
+    md.groundingline.melt_interpolation='SubelementMelt2';
+    md.groundingline.friction_interpolation='SubelementFriction2';
+
+    % }}}
+
+    %start looping:
+    results=md.results;
+
+    for t=start_time:time_step:final_time
+            disp(['Year: ' num2str(t)])
+
+        %send draft from ISSM to MITgcm:
+        draft=md.results.TransientSolution(end).Base;
+        pos=find(md.mask.ice_levelset>0); draft(pos)=0;
+            if t>start_time
+                old_draft=readbin('run/icetopo.bin',[Nx,Ny]);
+            end
+            writebin('run/icetopo.bin',draft);
+
+        % {{{ generate MITgcm parameter file data
+        fidi=fopen('../MITgcm/input/data','r');
+        fido=fopen('run/data','w');
+        tline = fgetl(fidi);
+        fprintf(fido,'%s\n',tline);
+            while 1
+                tline = fgetl(fidi);
+                if ~ischar(tline), break, end
+        %do the change here:
+        if strcmpi(tline,' xgOrigin = 0.0,'),
+            fprintf(fido,'%s%i%s\n',' xgOrigin = ',xgOrigin,',');
+            continue;
+        end
+        if strcmpi(tline,' ygOrigin = -80.0,'),
+            fprintf(fido,'%s%i%s\n',' ygOrigin = ',ygOrigin,',');
+            continue;
+        end
+        if strcmpi(tline,' delX = 20*0.25,'),
+            fprintf(fido,'%s%i*%g%s\n',' delX = ',Nx,dLong,',');
+            continue;
+        end
+        if strcmpi(tline,' delY = 20*0.25,'),
+            fprintf(fido,'%s%i*%g%s\n',' delY = ',Ny,dLat,',');
+            continue;
+        end
+                if strcmpi(tline,' delZ = 30*30.0,'),
+                    fprintf(fido,'%s%i*%g%s\n',' delZ = ',Nz,delZ,',');
+                    continue;
+                end
+        if strcmpi(tline,' endTime=2592000.,'),
+            fprintf(fido,'%s%i%s\n',' endTime= ',endtime,',');
+            continue;
+        end
+        if strcmpi(tline,' deltaT=1200.0,'),
+            fprintf(fido,'%s%i%s\n',' deltaT= ',MITgcmDeltaT,',');
+            continue;
+        end
+        if strcmpi(tline,' pChkptFreq=2592000.,'),
+            fprintf(fido,'%s%i%s\n',' pChkptFreq= ',endtime,',');
+            continue;
+        end
+        if strcmpi(tline,' taveFreq=2592000.,'),
+            fprintf(fido,'%s%i%s\n',' taveFreq= ',endtime,',');
+            continue;
+        end
+                if strcmpi(tline,' rhoConst=1030.,'),
+                    fprintf(fido,'%s%i%s\n',' rhoConst= ',rho_water,',');
+                    continue;
+                end
+                if strcmpi(tline,' rhoNil=1030.,'),
+                    fprintf(fido,'%s%i%s\n',' rhoNil= ',rho_water,',');
+                    continue;
+                end
+        fprintf(fido,'%s\n',tline);
+        end
+        %close  files
+        fclose(fidi);
+        fclose(fido);
+        % }}}
+
+        % {{{ generate initial MITgcm conditions
+            ds=round(endtime/MITgcmDeltaT);
+            if t>start_time
+                % Read pickup file
+                fnm=['run/pickup.' myint2str(ds,10) '.data'];
+                U=readbin(fnm,[Nx Ny Nz],1,'real*8',0);
+                V=readbin(fnm,[Nx Ny Nz],1,'real*8',1);
+                T=readbin(fnm,[Nx Ny Nz],1,'real*8',2);
+                S=readbin(fnm,[Nx Ny Nz],1,'real*8',3);
+                E=readbin(fnm,[Nx Ny],1,'real*8',8*Nz);
+
+                % find indices of locations where ice shelf retreated
+                h=readbin('run/hFacC.data',[Nx Ny Nz]);
+                msk=sum(h,3);
+                msk(find(msk))=1;
+                [iw jw]=find(msk); % horizontal indices where there is water
+                tmp=reshape(draft,[Nx,Ny])-old_draft;
+                tmp(find(tmp<0))=0;
+                [im jm]=find(tmp); % horizontal indices where there is melt
+
+                % Extrapolate T/S to locations where ice shelf retreated
+                for i=1:length(im)
+
+                    % first try vertical extrapolation
+                    in=find(h(im(i),jm(i),:));
+                    if length(in)>0;
+                        S(im(i),jm(i),1:min(in)  ) = S(im(i),jm(i),min(in));
+                        T(im(i),jm(i),1:min(in)  ) = T(im(i),jm(i),min(in));
+                        continue
+                    end
+
+                    % if not succesful, use closest neighbor horizontal extrapolation
+                    [y c]=min((iw-im(i)).^2+(jw-jm(i)).^2);
+                    salt=squeeze(S(iw(c),jw(c),:)); % salinity profile of closest neighbor
+                    temp=squeeze(T(iw(c),jw(c),:)); % salinity profile of closest neighbor
+                    in=find(h(iw(c),jw(c),:));
+                    salt(1:min(in))=salt(min(in));
+                    temp(1:min(in))=temp(min(in));
+                    salt(max(in):end)=salt(max(in));
+                    temp(max(in):end)=temp(max(in));
+                    S(im(i),jm(i),:)=salt;
+                    T(im(i),jm(i),:)=temp;
+                end
+
+                % Write initial conditions
+                writebin('run/Salt.bin' ,S);
+                writebin('run/Theta.bin',T);
+                writebin('run/Uvel.bin' ,U);
+                writebin('run/Vvel.bin' ,V);
+                writebin('run/Etan.bin' ,E);
+            end
+            % }}}
+
+            % {{{ system call to run MITgcm
+            cd run
+            eval(['!mpirun -np ' int2str(nPx*nPy) ' ./mitgcmuv']);
+            ts=round((t+time_step)*y2s/MITgcmDeltaT);
+            eval(['!\mv STDERR.0000 STDERR_' myint2str(ts,10) '.data'])
+            eval(['!\mv STDOUT.0000 STDOUT_' myint2str(ts,10) '.data'])
+            eval(['!\cp hFacC.data hFacC_' myint2str(ts,10) '.data'])
+            eval(['!\cp icetopo.bin icetopo_' myint2str(ts,10) '.data'])
+            for fld={'S','T','U','V','Eta', ...
+                     'SHICE_heatFluxtave','SHICE_fwFluxtave'}
+                eval(['!\mv ' fld{1} '.' myint2str(ds,10) '.data ' ...
+                      fld{1} '_' myint2str(ts,10) '.data'])
+            end
+            cd ..
+            % }}}
+
+        %get melting rates from MITgcm
+        %upward fresh water flux (kg/m^2/s):
+        fnm=['run/SHICE_fwFluxtave_' myint2str(ts,10) '.data'];
+        melting_rate=readbin(fnm,[Nx Ny]);
+
+        %send averaged melting rate to ISSM
+        %downward fresh water flux (m/y):
+        melting_rate=-melting_rate(:)*y2s/rho_ice;
+         md.basalforcings.floatingice_melting_rate=melting_rate;
+
+        % {{{ run ISSM and recover results
+
+        md.timestepping.start_time=t;
+        md.timestepping.final_time=t+time_step;;
+        md=solve(md,'Transient');
+
+        base=md.results.TransientSolution(end).Base;
+        thickness=md.results.TransientSolution(end).Thickness;
+        md.geometry.base=base;
+        md.geometry.thickness=thickness;
+        md.geometry.surface=md.geometry.base+md.geometry.thickness;
+        md.initialization.vx=md.results.TransientSolution(end).Vx;
+        md.initialization.vy=md.results.TransientSolution(end).Vy;
+        md.initialization.vel=md.results.TransientSolution(end).Vel;
+        md.initialization.pressure=md.results.TransientSolution(end).Pressure;
+        md.mask.ocean_levelset=md.results.TransientSolution(end).MaskOceanLevelset;
+        md.results.TransientSolution(end).FloatingiceMeltingRate=md.basalforcings.floatingice_melting_rate;
+
+        %save these results in the model, otherwise, they'll be wiped out
+        results(end+1)=md.results;
+
+        % }}}
+
+    end
+
+    md.results=results;
+    savemodel(org,md);
+end
+% }}}
+
+%Fields and tolerances to track changes
+fnm=['run/SHICE_fwFluxtave_0000004380.data'];
+melting_rate_1=readbin(fnm,[Nx Ny]);
+fnm=['run/SHICE_fwFluxtave_0000008760.data'];
+melting_rate_2=readbin(fnm,[Nx Ny]);
+fnm=['run/SHICE_fwFluxtave_0000013140.data'];
+melting_rate_3=readbin(fnm,[Nx Ny]);
+fnm=['run/SHICE_fwFluxtave_0000017520.data'];
+melting_rate_4=readbin(fnm,[Nx Ny]);
+field_names     ={'Base1','Melting1','Vx2','Vy2','Thickness2','Base2','MaskOceanLevelset2','FloatingiceMeltingRate2',...
+    'Melting2','Vx3','Vy3','Thickness3','Base3','MaskOceanLevelset3','FloatingiceMeltingRate3',...
+    'Melting3','Vx4','Vy4','Thickness4','Base4','MaskOceanLevelset4','FloatingiceMeltingRate4','Melting4'};
+field_tolerances={2e-13,1e-13,...
+    8e-06,7e-06,2e-07,2e-08,3e-08,1e-13,1e-13,...
+    8e-06,7e-06,4e-07,3e-08,5e-08,1e-13,6e-08,...
+    8e-06,7e-06,5e-07,4e-08,8e-08,6e-08,3e-07};
+field_values={...
+    (md.results(1).TransientSolution(end).Base),...
+    (melting_rate_1(:)),...
+    (md.results(2).TransientSolution(end).Vx),...
+    (md.results(2).TransientSolution(end).Vy),...
+    (md.results(2).TransientSolution(end).Thickness),...
+    (md.results(2).TransientSolution(end).Base),...
+    (md.results(2).TransientSolution(end).MaskOceanLevelset),...
+    (md.results(2).TransientSolution(end).FloatingiceMeltingRate),...
+    (melting_rate_2(:)),...
+    (md.results(3).TransientSolution(end).Vx),...
+    (md.results(3).TransientSolution(end).Vy),...
+    (md.results(3).TransientSolution(end).Thickness),...
+    (md.results(3).TransientSolution(end).Base),...
+    (md.results(3).TransientSolution(end).MaskOceanLevelset),...
+    (md.results(3).TransientSolution(end).FloatingiceMeltingRate),...
+    (melting_rate_3(:)),...
+    (md.results(4).TransientSolution(end).Vx),...
+    (md.results(4).TransientSolution(end).Vy),...
+    (md.results(4).TransientSolution(end).Thickness),...
+    (md.results(4).TransientSolution(end).Base),...
+    (md.results(4).TransientSolution(end).MaskOceanLevelset),...
+    (md.results(4).TransientSolution(end).FloatingiceMeltingRate),...
+    (melting_rate_4(:)),...
+    };
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test4002.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test4002.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test4002.m	(revision 27955)
@@ -0,0 +1,1062 @@
+%Test Name: IceOceanDirectCoupling
+%ISSM/MITgcm coupled set-up
+%
+%Script control parameters
+steps=1:12;
+final_time=1/365;
+
+%To download and recompile MITgcm from scratch:
+!rm -rf ${ISSM_DIR}/test/MITgcm/install
+!rm -rf ${ISSM_DIR}/test/MITgcm/build/*
+!rm -f ${ISSM_DIR}/test/MITgcm/code/SIZE.h
+!rm -rf Models
+
+%Organizer
+!mkdir Models
+org=organizer('repository','Models','prefix','IceOcean.','steps',steps);
+
+presentdirectory=pwd;
+
+% {{{ Parameters:
+if perform(org,'Parameters'),
+    Nx=20; %number of longitude cells
+    Ny=40; %number of latitude cells
+    Nz=30; %number of MITgcm vertical cells
+    nPx=2; %number of MITgcm processes to use in x direction
+    nPy=4; %number of MITgcm processes to use in y direction
+    xgOrigin=0; %origin of longitude
+    ygOrigin=-80; %origin of latitude
+    dLong=.25; %longitude grid spacing
+    dLat=.05; %latitude grid spacing
+    delZ=30; %thickness of vertical levels
+    icefront_position_ratio=.75;
+    ice_thickness=100;
+    rho_ice=917;
+    rho_water=1028.14;
+    di=rho_ice/rho_water;
+
+    % MITgcm initial and lateral boundary conditions
+    iniSalt  = 34.4; % initial salinity (PSU)
+    iniTheta = -1.9; % initial potential temperature (deg C)
+    obcSalt  = 34.4; % open boundary salinity (PSU)
+    obcTheta =  1.0; % open boundary potential temperature (deg C)
+    mlDepth  = 120.; % mixed layer depth (m)
+    mlSalt   = 33.4; % open boundary salinity (PSU)
+    mlTheta  = -1.9; % open boundary potential temperature (deg C)
+    obcUvel  = -0.1; % open boundary velocity (m/s)
+
+    MITgcmDeltaT=600; % MITgcm time step in seconds
+    y2s=31536000; % year to seconds conversion, i.e., seconds per year
+
+    % start_time and time_step
+    start_time=0; % in decimal years
+    time_step=1/(365*24); % coupling interval in decimal years
+    async_step_MITgcm_multiplier=1; % used to reduce run time for MItgcm
+
+    % bedrock/bathymetry
+    hmax=1000;
+    trough_depth=200;
+    deltah=300;
+    sea_level=1095;
+
+    % issm settings:
+    numlayers=10;
+
+    savedata(org, Nx, Ny, nPx, nPy, Nz, dLong, dLat, delZ, xgOrigin, ...
+        ygOrigin, icefront_position_ratio, ice_thickness, rho_ice, ...
+        rho_water, di, hmax, trough_depth, deltah, sea_level, ...
+        iniSalt, iniTheta, obcSalt, obcTheta, mlDepth, mlSalt, ...
+        mlTheta, obcUvel, start_time, time_step, MITgcmDeltaT, y2s,...
+        numlayers,async_step_MITgcm_multiplier);
+end
+% }}}
+% {{{ Bathymetry:
+if perform(org,'Bathymetry'),
+
+    loaddata(org,'Parameters');
+    %create lat,long
+    lat=(ygOrigin+dLat/2):dLat:(ygOrigin+Ny*dLat);
+    long=(xgOrigin+dLong/2):dLong:(xgOrigin+Nx*dLong);
+    [lat long]=meshgrid(lat,long);
+
+    longmin=min(long(:));
+    longmax=max(long(:));
+    latmin=min(lat(:));
+    latmax=max(lat(:));
+
+    %create bedrock/bathymetry:
+    bedrock=zeros(Nx,Ny);
+    bedrock=hmax-deltah*tanh(pi*(2*(lat-latmin)./(latmax-latmin)-1))+ ...
+            trough_depth*cos(2*pi*long./(longmax-longmin));
+
+    %save bathymetry file for MITgcm
+    bathymetry=bedrock-sea_level;
+    savedata(org,lat,long,bathymetry);
+
+end
+% }}}
+% {{{ IceSheetGeometry:
+if perform(org,'IceSheetGeometry'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'Bathymetry');
+    latmin=min(lat(:));
+    latmax=max(lat(:));
+
+    %put ice_thickness constant layer of ice over the bathymetry, unless it floats:
+    s=size(bathymetry);
+    thickness=ice_thickness*ones(s);
+
+    %figure out ice shelf:
+    pos=find(-di*thickness>bathymetry);
+    iceshelf_mask=zeros(s);
+    iceshelf_mask(pos)=1;
+
+    ice_mask=ones(s);
+    pos=find((lat-latmin)/(latmax-latmin)>(icefront_position_ratio));
+    ice_mask(pos)=0;
+    iceshelf_mask(pos)=0;
+
+    %compute draft of ice shelf:
+    draft=bathymetry;
+    pos=find(iceshelf_mask);
+    draft(pos)=-di*thickness(pos);
+    pos=find(~ice_mask);
+    draft(pos)=0;
+
+    savedata(org,ice_mask,iceshelf_mask,draft,thickness);
+end
+% }}}
+
+%Configure MITgcm
+% {{{ GetMITgcm:
+if perform(org,'GetMITgcm'),
+  system([pwd '/../MITgcm/get_mitgcm.sh']);
+end
+% }}}
+% {{{ BuildMITgcm:
+if perform(org,'BuildMITgcm'),
+
+    %load data:
+    loaddata(org,'Parameters');
+
+    %specify computational grid in SIZE.h
+    if ~exist('../MITgcm/code/SIZE.h')
+        fidi=fopen('../MITgcm/code/SIZE.h.bak','r');
+        fido=fopen('../MITgcm/code/SIZE.h','w');
+        tline = fgetl(fidi);
+        fprintf(fido,'%s\n',tline);
+        while 1
+            tline = fgetl(fidi);
+            if ~ischar(tline), break, end
+            %do the change here:
+            if strcmpi(tline,'     &           sNx =  20,'),
+                fprintf(fido,'%s%i%s\n','     &           sNx =  ',round(Nx/nPx),',');
+                continue;
+            end
+            if strcmpi(tline,'     &           sNy =  20,'),
+                fprintf(fido,'%s%i%s\n','     &           sNy =  ',round(Ny/nPy),',');
+                continue;
+            end
+            if strcmpi(tline,'     &           nPx =   1,'),
+                fprintf(fido,'%s%i%s\n','     &           nPx = ',nPx,',');
+                continue;
+            end
+            if strcmpi(tline,'     &           nPy =   2,'),
+                fprintf(fido,'%s%i%s\n','     &           nPy = ',nPy,',');
+                continue;
+            end
+            fprintf(fido,'%s\n',tline);
+        end
+        %close  files
+        fclose(fidi);
+        fclose(fido);
+    end
+
+    system(['../MITgcm/build.sh generic ' pwd '/../MITgcm']);
+end
+% }}}
+addpath(recursivepath([pwd '/../MITgcm']));
+% {{{ RunUncoupledMITgcm:
+if perform(org,'RunUncoupledMITgcm'),
+
+    %load data:
+    loaddata(org,'Parameters');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+     endtime = round(MITgcmDeltaT * ...
+         floor(time_step*y2s*async_step_MITgcm_multiplier/MITgcmDeltaT));
+
+    % {{{ prepare MITgcm
+    % rename previous run directory and create new one
+    if exist ('run.old')
+        !\rm -rf run.old
+    end
+    if exist ('run')
+        !\mv run run.old
+    end
+    !\mkdir run
+    !\cp ../MITgcm/build/mitgcmuv run
+    !\cp ../MITgcm/input/* run
+    !\cp ../MITgcm/input/eedata_uncoupled run/eedata
+
+    %load data:
+    loaddata(org,'Parameters');
+
+    % initial salinity
+    S=iniSalt*ones(Nx,Ny,Nz);
+    writebin('run/Salt.bin',S);
+
+    % initial temperature
+    T=iniTheta*ones(Nx,Ny,Nz);
+    writebin('run/Theta.bin',T);
+
+    % initial velocity
+    Z=zeros(Nx,Ny,Nz);
+    writebin('run/Uvel.bin',Z);
+    writebin('run/Vvel.bin',Z);
+
+    % initial sea surface height
+    Z=zeros(Nx,Ny);
+    writebin('run/Etan.bin',Z);
+
+    % salinity boundary conditions
+    S=obcSalt*ones(Ny,Nz);
+    thk=delZ*ones(Nz,1);
+    bot=cumsum(thk);
+    ik=find(bot<=mlDepth);
+    S(:,ik)=mlSalt;
+    writebin('run/OBs.bin',S);
+
+    % temperature boundary conditions
+    T=obcTheta*ones(Ny,Nz);
+    T(:,ik)=mlTheta;
+    writebin('run/OBt.bin',T);
+
+    % zonal velocity boundary conditions
+    U=obcUvel*ones(Ny,Nz);
+    writebin('run/OBu.bin',U);
+
+    % zero boundary conditions
+    Z=zeros(Ny,Nz);
+    writebin('run/zeros.bin',Z);
+
+    % build parameter file data.obcs
+    fidi=fopen('../MITgcm/input/data.obcs','r');
+    fido=fopen('run/data.obcs','w');
+    tline = fgetl(fidi);
+    fprintf(fido,'%s\n',tline);
+    while 1
+        tline = fgetl(fidi);
+        if ~ischar(tline), break, end
+        %do the change here:
+        if strcmpi(tline,' OB_Iwest = 40*1,'),
+            fprintf(fido,'%s%i%s\n',' OB_Iwest = ',Ny,'*1,');
+            continue;
+        end
+        if strcmpi(tline,' OB_Ieast = 40*-1,'),
+            fprintf(fido,'%s%i%s\n',' OB_Ieast = ',Ny,'*-1,');
+            continue;
+        end
+        fprintf(fido,'%s\n',tline);
+    end
+    %close  files
+    fclose(fidi);
+    fclose(fido);
+
+    %save bathymetry and bedrock in run directory
+    writebin('run/bathymetry.bin',bathymetry);
+    writebin('run/icetopo.bin',draft);
+    % }}}
+
+    %start looping:
+    for t=start_time:time_step:final_time,
+        disp(['Year: ' num2str(t)])
+        % {{{ generate MITgcm parameter file data
+        fidi=fopen('../MITgcm/input/data','r');
+        fido=fopen('run/data','w');
+        tline = fgetl(fidi);
+        fprintf(fido,'%s\n',tline);
+        while 1
+            tline = fgetl(fidi);
+            if ~ischar(tline), break, end
+            %do the change here:
+            if strcmpi(tline,' xgOrigin = 0.0,'),
+                fprintf(fido,'%s%i%s\n',' xgOrigin = ',xgOrigin,',');
+                continue;
+            end
+            if strcmpi(tline,' ygOrigin = -80.0,'),
+                fprintf(fido,'%s%i%s\n',' ygOrigin = ',ygOrigin,',');
+                continue;
+            end
+            if strcmpi(tline,' delX = 20*0.25,'),
+                fprintf(fido,'%s%i*%g%s\n',' delX = ',Nx,dLong,',');
+                continue;
+            end
+            if strcmpi(tline,' delY = 20*0.25,'),
+                fprintf(fido,'%s%i*%g%s\n',' delY = ',Ny,dLat,',');
+                continue;
+            end
+            if strcmpi(tline,' delZ = 30*30.0,'),
+                fprintf(fido,'%s%i*%g%s\n',' delZ = ',Nz,delZ,',');
+                continue;
+            end
+            if strcmpi(tline,' endTime=2592000.,'),
+                fprintf(fido,'%s%i%s\n',' endTime= ',endtime,',');
+                continue;
+            end
+            if strcmpi(tline,' deltaT=1200.0,'),
+                fprintf(fido,'%s%i%s\n',' deltaT= ',MITgcmDeltaT,',');
+                continue;
+            end
+            if strcmpi(tline,' pChkptFreq=2592000.,'),
+                fprintf(fido,'%s%i%s\n',' pChkptFreq= ',endtime,',');
+                continue;
+            end
+            if strcmpi(tline,' taveFreq=2592000.,'),
+                fprintf(fido,'%s%i%s\n',' taveFreq= ',endtime,',');
+                continue;
+            end
+            if strcmpi(tline,' rhoConst=1030.,'),
+                fprintf(fido,'%s%i%s\n',' rhoConst= ',rho_water,',');
+                continue;
+            end
+            if strcmpi(tline,' rhoNil=1030.,'),
+                fprintf(fido,'%s%i%s\n',' rhoNil= ',rho_water,',');
+                continue;
+            end
+            fprintf(fido,'%s\n',tline);
+        end
+        %close  files
+        fclose(fidi);
+        fclose(fido);
+        % }}}
+        % {{{ generate initial MITgcm conditions
+
+        ds=round(endtime/MITgcmDeltaT);
+        if t>start_time
+            % Read pickup file
+            fnm=['run/pickup.' myint2str(ds,10) '.data'];
+            U=readbin(fnm,[Nx Ny Nz],1,'real*8',0);
+            V=readbin(fnm,[Nx Ny Nz],1,'real*8',1);
+            T=readbin(fnm,[Nx Ny Nz],1,'real*8',2);
+            S=readbin(fnm,[Nx Ny Nz],1,'real*8',3);
+            E=readbin(fnm,[Nx Ny],1,'real*8',8*Nz);
+            writebin('run/Salt.bin' ,S);
+            writebin('run/Theta.bin',T);
+            writebin('run/Uvel.bin' ,U);
+            writebin('run/Vvel.bin' ,V);
+            writebin('run/Etan.bin' ,E);
+        end
+
+        % }}}
+        % {{{ system call to run MITgcm
+        cd run
+        eval(['!mpirun -np ' int2str(nPx*nPy) ' ./mitgcmuv']);
+        ts=round((t+time_step)*y2s/MITgcmDeltaT);
+        eval(['!\mv STDERR.0000 STDERR_' myint2str(ts,10) '.data'])
+        eval(['!\mv STDOUT.0000 STDOUT_' myint2str(ts,10) '.data'])
+        eval(['!\cp hFacC.data hFacC_' myint2str(ts,10) '.data'])
+        eval(['!\cp icetopo.bin icetopo_' myint2str(ts,10) '.data'])
+        for fld={'S','T','U','V','Eta', ...
+                 'SHICE_heatFluxtave','SHICE_fwFluxtave'}
+            eval(['!\mv ' fld{1} '.' myint2str(ds,10) '.data ' ...
+                  fld{1} '_' myint2str(ts,10) '.data'])
+        end
+        cd ..
+        % }}}
+    end
+end
+% }}}
+
+%Configure ISSM
+% {{{ CreateMesh:
+if perform(org,'CreateMesh'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+
+    %create model:
+    md=model();
+
+    %Grab lat,long from MITgcm:
+    lat=lat(:);
+    long=long(:);
+
+    %project lat,long:
+    [x,y]=ll2xy(lat,long,-1);
+
+    index=[];
+    %  C  D
+    %  A  B
+    for j=1:Ny-1,
+        for i=1:Nx-1,
+            A=(j-1)*Nx+i;
+            B=(j-1)*Nx+i+1;
+            C=j*Nx+i;
+            D=j*Nx+i+1;
+            index(end+1,:)=[A B C];
+            index(end+1,:)=[C B D];
+        end
+    end
+
+    %fill mesh and model:
+    md=meshconvert(md,index,x,y);
+    md.mesh.lat=lat;
+    md.mesh.long=long;
+
+    savemodel(org,md);
+
+end
+% }}}
+% {{{ MeshGeometry:
+if perform(org,'MeshGeometry'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'CreateMesh');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+
+    %transfer to vertices:
+    bathymetry=bathymetry(:);
+    iceshelf_mask=iceshelf_mask(:);
+    ice_mask=ice_mask(:);
+    thickness=thickness(:);
+    draft=draft(:);
+
+    %start filling some of the fields
+    md.geometry.bed=bathymetry;
+    md.geometry.thickness=thickness;
+    md.geometry.base=md.geometry.bed;
+    pos=find(iceshelf_mask); md.geometry.base(pos)=draft(pos);
+    md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+    %nothing passes icefront:
+    pos=find(~ice_mask);
+    md.geometry.thickness(pos)=1;
+    md.geometry.surface(pos)=(1-di)*md.geometry.thickness(pos);
+    md.geometry.base(pos)=-di*md.geometry.thickness(pos);
+
+    %level sets:
+    md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1);
+    md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);
+
+    pos=find(ice_mask); md.mask.ice_levelset(pos)=-1;
+    pos=find(~iceshelf_mask & ice_mask); md.mask.ocean_levelset(pos)=1;
+
+    %identify edges of grounded ice:
+    ocean_levelset=md.mask.ocean_levelset;
+    for i=1:md.mesh.numberofelements,
+        m=ocean_levelset(md.mesh.elements(i,:));
+        if abs(sum(m))~=3,
+            pos=find(m==1); md.mask.ocean_levelset(md.mesh.elements(i,pos))=0;
+        end
+    end
+
+    %identify edges of ice:
+    ice_levelset=md.mask.ice_levelset;
+    for i=1:md.mesh.numberofelements,
+        m=ice_levelset(md.mesh.elements(i,:));
+        if abs(sum(m))~=3,
+            pos=find(m==-1); md.mask.ice_levelset(md.mesh.elements(i,pos))=0;
+        end
+    end
+
+    savemodel(org,md);
+end
+% }}}
+% {{{ ParameterizeIce:
+if perform(org,'ParameterizeIce'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'CreateMesh');
+    loaddata(org,'MeshGeometry');
+
+    %miscellaneous
+    md.miscellaneous.name='test4002';
+
+    %initial velocity:
+    md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+    md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+    md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+
+    %friction:
+    md.friction.coefficient=30*ones(md.mesh.numberofvertices,1);
+    pos=find(md.mask.ocean_levelset<=0);
+    md.friction.coefficient(pos)=0;
+    md.friction.p=ones(md.mesh.numberofelements,1);
+    md.friction.q=ones(md.mesh.numberofelements,1);
+
+    %temperatures and surface mass balance:
+    md.initialization.temperature=(273.15-20)*ones(md.mesh.numberofvertices,1);
+    md.initialization.pressure=md.materials.rho_ice*md.constants.g*(md.geometry.surface-md.geometry.base);
+    md.smb.mass_balance = [1*ones(md.mesh.numberofvertices,1); 1];
+
+    %Flow law
+    md.materials.rheology_B=paterson(md.initialization.temperature);
+    md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+    md.damage.D=zeros(md.mesh.numberofvertices,1);
+    md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+
+    %the spcs going
+    md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+    md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+    md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+    md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+    md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+    md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+
+    %deal with water:
+    pos=find(md.mask.ice_levelset>0);
+    md.stressbalance.spcvx(pos)=0;
+    md.stressbalance.spcvy(pos)=0;
+    md.stressbalance.spcvz(pos)=0;
+    md.masstransport.spcthickness(pos)=0;
+
+    %get some flux at the ice divide:
+    pos=find(md.mesh.lat==min(md.mesh.lat));
+    md.stressbalance.spcvy(pos)=200;
+
+    %deal with boundaries, excluding icefront:
+    vertex_on_boundary=zeros(md.mesh.numberofvertices,1);
+    vertex_on_boundary(md.mesh.segments(:,1:2))=1;
+    pos=find(vertex_on_boundary & md.mask.ocean_levelset<=0);
+    md.stressbalance.spcvx(pos)=md.initialization.vx(pos);
+    md.stressbalance.spcvy(pos)=md.initialization.vy(pos);
+    md.stressbalance.spcvz(pos)=md.initialization.vz(pos);
+    md.masstransport.spcthickness(pos)=md.geometry.thickness(pos);
+
+    md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+    md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+    md.thermal.spctemperature=[md.initialization.temperature; 1]; %impose observed temperature on surface
+    md.basalforcings.geothermalflux=.064*ones(md.mesh.numberofvertices,1);
+
+    %flow equations:
+    md=setflowequation(md,'SSA','all');
+
+    savemodel(org,md);
+end
+% }}}
+% {{{ RunUncoupledISSM:
+if perform(org,'RunUncoupledISSM'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'ParameterizeIce');
+
+    %timestepping:
+    md.timestepping.final_time=final_time;
+    md.timestepping.time_step=time_step;
+    md.transient.isgroundingline=0;
+    md.transient.isthermal=0;
+    md.groundingline.migration='SubelementMigration';
+    md.groundingline.melt_interpolation='SubelementMelt2';
+    md.groundingline.friction_interpolation='SubelementFriction2';
+
+    md.cluster=generic('name',oshostname(),'np',2);
+    md=solve(md,'Transient');
+
+    savemodel(org,md);
+end
+% }}}
+
+%Run MITgcm/ISSM
+% {{{ RunCoupledMITgcmISSM:
+if perform(org,'RunCoupledMITgcmISSM'),
+
+    %load data:
+    loaddata(org,'Parameters');
+    loaddata(org,'ParameterizeIce');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+        endtime = round(MITgcmDeltaT * ...
+         floor(time_step*y2s*async_step_MITgcm_multiplier/MITgcmDeltaT));
+
+        % {{{ prepare MITgcm
+        % rename previous run directory and create new one
+        if exist ('run.old')
+            !\rm -rf run.old
+        end
+        if exist ('run')
+            !\mv run run.old
+        end
+        !\mkdir run
+        !\cp ../MITgcm/build/mitgcmuv run
+        !\cp ../MITgcm/input/* run
+        !\cp ../MITgcm/input/eedata_uncoupled run/eedata
+
+        % initial salinity
+        S=iniSalt*ones(Nx,Ny,Nz);
+        writebin('run/Salt.bin',S);
+
+        % initial temperature
+        T=iniTheta*ones(Nx,Ny,Nz);
+        writebin('run/Theta.bin',T);
+
+        % initial velocity
+        Z=zeros(Nx,Ny,Nz);
+        writebin('run/Uvel.bin',Z);
+        writebin('run/Vvel.bin',Z);
+
+        % initial sea surface height
+        Z=zeros(Nx,Ny);
+        writebin('run/Etan.bin',Z);
+
+        % salinity boundary conditions
+        S=obcSalt*ones(Ny,Nz);
+        thk=delZ*ones(Nz,1);
+        bot=cumsum(thk);
+        ik=find(bot<=mlDepth);
+        S(:,ik)=mlSalt;
+        writebin('run/OBs.bin',S);
+
+        % temperature boundary conditions
+        T=obcTheta*ones(Ny,Nz);
+        T(:,ik)=mlTheta;
+        writebin('run/OBt.bin',T);
+
+        % zonal velocity boundary conditions
+        U=obcUvel*ones(Ny,Nz);
+        writebin('run/OBu.bin',U);
+
+        % zero boundary conditions
+        Z=zeros(Ny,Nz);
+        writebin('run/zeros.bin',Z);
+
+        % build parameter file data.obcs
+        fidi=fopen('../MITgcm/input/data.obcs','r');
+        fido=fopen('run/data.obcs','w');
+        tline = fgetl(fidi);
+        fprintf(fido,'%s\n',tline);
+        while 1
+            tline = fgetl(fidi);
+            if ~ischar(tline), break, end
+            %do the change here:
+            if strcmpi(tline,' OB_Iwest = 40*1,'),
+                fprintf(fido,'%s%i%s\n',' OB_Iwest = ',Ny,'*1,');
+                continue;
+            end
+            if strcmpi(tline,' OB_Ieast = 40*-1,'),
+                fprintf(fido,'%s%i%s\n',' OB_Ieast = ',Ny,'*-1,');
+                continue;
+            end
+            fprintf(fido,'%s\n',tline);
+        end
+        %close  files
+        fclose(fidi);
+        fclose(fido);
+
+        %save bathymetry in MITgcm run directory
+        writebin('run/bathymetry.bin',bathymetry);
+        % }}}
+
+    % {{{ ISSM settings:
+
+    setenv('DYLD_LIBRARY_PATH', '/usr/local/gfortran/lib')
+    %timestepping:
+    md.timestepping.start_time=start_time;
+    md.timestepping.final_time=final_time;
+    md.timestepping.time_step=time_step;
+    md.cluster=generic('name',oshostname(),'np',2);
+    md.results.TransientSolution.Base=md.geometry.base;
+    md.transient.isgroundingline=0;
+    md.transient.isthermal=0;
+    md.groundingline.migration='SubelementMigration';
+    md.groundingline.melt_interpolation='SubelementMelt2';
+    md.groundingline.friction_interpolation='SubelementFriction2';
+
+    % }}}
+
+    %start looping:
+    results=md.results;
+
+    for t=start_time:time_step:final_time
+            disp(['Year: ' num2str(t)])
+
+        %send draft from ISSM to MITgcm:
+        draft=md.results.TransientSolution(end).Base;
+        pos=find(md.mask.ice_levelset>0); draft(pos)=0;
+            if t>start_time
+                old_draft=readbin('run/icetopo.bin',[Nx,Ny]);
+            end
+            writebin('run/icetopo.bin',draft);
+
+        % {{{ generate MITgcm parameter file data
+        fidi=fopen('../MITgcm/input/data','r');
+        fido=fopen('run/data','w');
+        tline = fgetl(fidi);
+        fprintf(fido,'%s\n',tline);
+            while 1
+                tline = fgetl(fidi);
+                if ~ischar(tline), break, end
+        %do the change here:
+        if strcmpi(tline,' xgOrigin = 0.0,'),
+            fprintf(fido,'%s%i%s\n',' xgOrigin = ',xgOrigin,',');
+            continue;
+        end
+        if strcmpi(tline,' ygOrigin = -80.0,'),
+            fprintf(fido,'%s%i%s\n',' ygOrigin = ',ygOrigin,',');
+            continue;
+        end
+        if strcmpi(tline,' delX = 20*0.25,'),
+            fprintf(fido,'%s%i*%g%s\n',' delX = ',Nx,dLong,',');
+            continue;
+        end
+        if strcmpi(tline,' delY = 20*0.25,'),
+            fprintf(fido,'%s%i*%g%s\n',' delY = ',Ny,dLat,',');
+            continue;
+        end
+                if strcmpi(tline,' delZ = 30*30.0,'),
+                    fprintf(fido,'%s%i*%g%s\n',' delZ = ',Nz,delZ,',');
+                    continue;
+                end
+        if strcmpi(tline,' endTime=2592000.,'),
+            fprintf(fido,'%s%i%s\n',' endTime= ',endtime,',');
+            continue;
+        end
+        if strcmpi(tline,' deltaT=1200.0,'),
+            fprintf(fido,'%s%i%s\n',' deltaT= ',MITgcmDeltaT,',');
+            continue;
+        end
+        if strcmpi(tline,' pChkptFreq=2592000.,'),
+            fprintf(fido,'%s%i%s\n',' pChkptFreq= ',endtime,',');
+            continue;
+        end
+        if strcmpi(tline,' taveFreq=2592000.,'),
+            fprintf(fido,'%s%i%s\n',' taveFreq= ',endtime,',');
+            continue;
+        end
+                if strcmpi(tline,' rhoConst=1030.,'),
+                    fprintf(fido,'%s%i%s\n',' rhoConst= ',rho_water,',');
+                    continue;
+                end
+                if strcmpi(tline,' rhoNil=1030.,'),
+                    fprintf(fido,'%s%i%s\n',' rhoNil= ',rho_water,',');
+                    continue;
+                end
+        fprintf(fido,'%s\n',tline);
+        end
+        %close  files
+        fclose(fidi);
+        fclose(fido);
+        % }}}
+
+        % {{{ generate initial MITgcm conditions
+            ds=round(endtime/MITgcmDeltaT);
+            if t>start_time
+                % Read pickup file
+                fnm=['run/pickup.' myint2str(ds,10) '.data'];
+                U=readbin(fnm,[Nx Ny Nz],1,'real*8',0);
+                V=readbin(fnm,[Nx Ny Nz],1,'real*8',1);
+                T=readbin(fnm,[Nx Ny Nz],1,'real*8',2);
+                S=readbin(fnm,[Nx Ny Nz],1,'real*8',3);
+                E=readbin(fnm,[Nx Ny],1,'real*8',8*Nz);
+
+                % find indices of locations where ice shelf retreated
+                h=readbin('run/hFacC.data',[Nx Ny Nz]);
+                msk=sum(h,3);
+                msk(find(msk))=1;
+                [iw jw]=find(msk); % horizontal indices where there is water
+                tmp=reshape(draft,[Nx,Ny])-old_draft;
+                tmp(find(tmp<0))=0;
+                [im jm]=find(tmp); % horizontal indices where there is melt
+
+                % Extrapolate T/S to locations where ice shelf retreated
+                for i=1:length(im)
+
+                    % first try vertical extrapolation
+                    in=find(h(im(i),jm(i),:));
+                    if length(in)>0;
+                        S(im(i),jm(i),1:min(in)  ) = S(im(i),jm(i),min(in));
+                        T(im(i),jm(i),1:min(in)  ) = T(im(i),jm(i),min(in));
+                        continue
+                    end
+
+                    % if not succesful, use closest neighbor horizontal extrapolation
+                    [y c]=min((iw-im(i)).^2+(jw-jm(i)).^2);
+                    salt=squeeze(S(iw(c),jw(c),:)); % salinity profile of closest neighbor
+                    temp=squeeze(T(iw(c),jw(c),:)); % salinity profile of closest neighbor
+                    in=find(h(iw(c),jw(c),:));
+                    salt(1:min(in))=salt(min(in));
+                    temp(1:min(in))=temp(min(in));
+                    salt(max(in):end)=salt(max(in));
+                    temp(max(in):end)=temp(max(in));
+                    S(im(i),jm(i),:)=salt;
+                    T(im(i),jm(i),:)=temp;
+                end
+
+                % Write initial conditions
+                writebin('run/Salt.bin' ,S);
+                writebin('run/Theta.bin',T);
+                writebin('run/Uvel.bin' ,U);
+                writebin('run/Vvel.bin' ,V);
+                writebin('run/Etan.bin' ,E);
+            end
+            % }}}
+
+            % {{{ system call to run MITgcm
+            cd run
+            eval(['!mpiexec -np ' int2str(nPx*nPy) ' ./mitgcmuv']);
+            ts=round((t+time_step)*y2s/MITgcmDeltaT);
+            eval(['!\mv STDERR.0000 STDERR_' myint2str(ts,10) '.data'])
+            eval(['!\mv STDOUT.0000 STDOUT_' myint2str(ts,10) '.data'])
+            eval(['!\cp hFacC.data hFacC_' myint2str(ts,10) '.data'])
+            eval(['!\cp icetopo.bin icetopo_' myint2str(ts,10) '.data'])
+            for fld={'S','T','U','V','Eta', ...
+                     'SHICE_heatFluxtave','SHICE_fwFluxtave'}
+                eval(['!\mv ' fld{1} '.' myint2str(ds,10) '.data ' ...
+                      fld{1} '_' myint2str(ts,10) '.data'])
+            end
+            cd ..
+            % }}}
+
+        %get melting rates from MITgcm
+        %upward fresh water flux (kg/m^2/s):
+        fnm=['run/SHICE_fwFluxtave_' myint2str(ts,10) '.data'];
+        melting_rate=readbin(fnm,[Nx Ny]);
+
+        %send averaged melting rate to ISSM
+        %downward fresh water flux (m/y):
+        melting_rate=-melting_rate(:)*y2s/rho_ice;
+         md.basalforcings.floatingice_melting_rate=melting_rate;
+
+        % {{{ run ISSM and recover results
+
+        md.timestepping.start_time=t;
+        md.timestepping.final_time=t+time_step;;
+		  md.transient.requested_outputs={'default','MaskOceanLevelset'};
+        md=solve(md,'Transient');
+
+        base=md.results.TransientSolution(end).Base;
+        thickness=md.results.TransientSolution(end).Thickness;
+        md.geometry.base=base;
+        md.geometry.thickness=thickness;
+        md.geometry.surface=md.geometry.base+md.geometry.thickness;
+        md.initialization.vx=md.results.TransientSolution(end).Vx;
+        md.initialization.vy=md.results.TransientSolution(end).Vy;
+        md.initialization.vel=md.results.TransientSolution(end).Vel;
+        md.initialization.pressure=md.results.TransientSolution(end).Pressure;
+        md.mask.ocean_levelset=md.results.TransientSolution(end).MaskOceanLevelset;
+        md.results.TransientSolution(end).FloatingiceMeltingRate=md.basalforcings.floatingice_melting_rate;
+
+        %save these results in the model, otherwise, they'll be wiped out
+        results(end+1)=md.results;
+
+        % }}}
+
+
+    end
+
+    md.results=results;
+    savemodel(org,md);
+end
+% }}}
+% {{{ RunCoupledMITgcmISSM2:
+if perform(org,'RunCoupledMITgcmISSM2'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'ParameterizeIce');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+        endtime = round(MITgcmDeltaT * floor(final_time*y2s/MITgcmDeltaT));
+        outputtime = round(MITgcmDeltaT * floor(time_step*y2s/MITgcmDeltaT));
+
+        % {{{ prepare MITgcm
+        % rename previous run directory and create new one
+        if exist ('run.old')
+            !\rm -rf run.old
+        end
+        if exist ('run')
+            !\mv run run.old
+        end
+        !\mkdir run
+        !\cp ../MITgcm/build/mitgcmuv run
+        !\cp ../MITgcm/input/* run
+
+        % initial salinity
+        S=iniSalt*ones(Nx,Ny,Nz);
+        writebin('run/Salt.bin',S);
+
+        % initial temperature
+        T=iniTheta*ones(Nx,Ny,Nz);
+        writebin('run/Theta.bin',T);
+
+        % initial velocity
+        Z=zeros(Nx,Ny,Nz);
+        writebin('run/Uvel.bin',Z);
+        writebin('run/Vvel.bin',Z);
+
+        % initial sea surface height
+        Z=zeros(Nx,Ny);
+        writebin('run/Etan.bin',Z);
+
+        % salinity boundary conditions
+        S=obcSalt*ones(Ny,Nz);
+        thk=delZ*ones(Nz,1);
+        bot=cumsum(thk);
+        ik=find(bot<=mlDepth);
+        S(:,ik)=mlSalt;
+        writebin('run/OBs.bin',S);
+
+        % temperature boundary conditions
+        T=obcTheta*ones(Ny,Nz);
+        T(:,ik)=mlTheta;
+        writebin('run/OBt.bin',T);
+
+        % zonal velocity boundary conditions
+        U=obcUvel*ones(Ny,Nz);
+        writebin('run/OBu.bin',U);
+
+        % zero boundary conditions
+        Z=zeros(Ny,Nz);
+        writebin('run/zeros.bin',Z);
+
+        % build parameter file data.obcs
+        fidi=fopen('../MITgcm/input/data.obcs','r');
+        fido=fopen('run/data.obcs','w');
+        tline = fgetl(fidi);
+        fprintf(fido,'%s\n',tline);
+        while 1
+            tline = fgetl(fidi);
+            if ~ischar(tline), break, end
+            %do the change here:
+            if strcmpi(tline,' OB_Iwest = 40*1,'),
+                fprintf(fido,'%s%i%s\n',' OB_Iwest = ',Ny,'*1,');
+                continue;
+            end
+            if strcmpi(tline,' OB_Ieast = 40*-1,'),
+                fprintf(fido,'%s%i%s\n',' OB_Ieast = ',Ny,'*-1,');
+                continue;
+            end
+            fprintf(fido,'%s\n',tline);
+        end
+        %close  files
+        fclose(fidi);
+        fclose(fido);
+
+        %save bathymetry and bedrock in run directory
+        writebin('run/bathymetry.bin',bathymetry);
+        writebin('run/icetopo.bin',draft);
+        % }}}
+        % {{{ generate MITgcm parameter file data
+        fidi=fopen('../MITgcm/input/data','r');
+        fido=fopen('run/data','w');
+        tline = fgetl(fidi);
+        fprintf(fido,'%s\n',tline);
+        while 1
+            tline = fgetl(fidi);
+            if ~ischar(tline), break, end
+            %do the change here:
+            if strcmpi(tline,' xgOrigin = 0.0,'),
+                fprintf(fido,'%s%i%s\n',' xgOrigin = ',xgOrigin,',');
+                continue;
+            end
+            if strcmpi(tline,' ygOrigin = -80.0,'),
+                fprintf(fido,'%s%i%s\n',' ygOrigin = ',ygOrigin,',');
+                continue;
+            end
+            if strcmpi(tline,' delX = 20*0.25,'),
+                fprintf(fido,'%s%i*%g%s\n',' delX = ',Nx,dLong,',');
+                continue;
+            end
+            if strcmpi(tline,' delY = 20*0.25,'),
+                fprintf(fido,'%s%i*%g%s\n',' delY = ',Ny,dLat,',');
+                continue;
+            end
+            if strcmpi(tline,' delZ = 30*30.0,'),
+                fprintf(fido,'%s%i*%g%s\n',' delZ = ',Nz,delZ,',');
+                continue;
+            end
+            if strcmpi(tline,' endTime=2592000.,'),
+                fprintf(fido,'%s%i%s\n',' endTime= ',endtime,',');
+                continue;
+            end
+            if strcmpi(tline,' deltaT=1200.0,'),
+                fprintf(fido,'%s%i%s\n',' deltaT= ',MITgcmDeltaT,',');
+                continue;
+            end
+            if strcmpi(tline,' pChkptFreq=2592000.,'),
+                fprintf(fido,'%s%i%s\n',' pChkptFreq= ',endtime,',');
+                continue;
+            end
+            if strcmpi(tline,' taveFreq=2592000.,'),
+                fprintf(fido,'%s%i%s\n',' taveFreq= ',outputtime,',');
+                continue;
+            end
+            if strcmpi(tline,' rhoConst=1030.,'),
+                fprintf(fido,'%s%i%s\n',' rhoConst= ',rho_water,',');
+                continue;
+            end
+            if strcmpi(tline,' rhoNil=1030.,'),
+                fprintf(fido,'%s%i%s\n',' rhoNil= ',rho_water,',');
+                continue;
+            end
+            fprintf(fido,'%s\n',tline);
+        end
+        %close  files
+        fclose(fidi);
+        fclose(fido);
+        % }}}
+
+    md.transient.isoceancoupling=2;
+    md.transient.isgroundingline=0;
+    md.groundingline.migration='None';
+    md.groundingline.melt_interpolation='SubelementMelt2';
+    md.groundingline.friction_interpolation='SubelementFriction2';
+    md.timestepping.coupling_time=time_step;
+    md.timestepping.time_step=time_step;
+    md.timestepping.final_time=final_time-time_step;
+	 md.transient.requested_outputs={'default','MaskOceanLevelset'};
+    md.cluster.npocean=nPx*nPy;
+    md.cluster.np=2;
+    md.cluster.executionpath=[pwd '/run'];
+    md.masstransport.requested_outputs={'default','BasalforcingsFloatingiceMeltingRate'};
+
+    md=solveiceocean(md,'Transient','runtimename',false);
+
+%   %eval(['!mpiexec -np ' int2str(md.cluster.np) ' ' md.cluster.codepath '/issm_ocean.exe TransientSolution ' pwd ' ' md.miscellaneous.name ' ']);
+%   eval(['!mpiexec -np ' int2str(md.cluster.np) ' ' md.cluster.codepath '/issm_ocean.exe TransientSolution ' pwd ' ' md.miscellaneous.name ' : -np ' int2str(nPx*nPy) ' ./mitgcmuv']);
+end
+% }}}
+
+%Fields and tolerances to track changes
+fnm=['run/SHICE_fwFluxtave.0000000006.data'];
+melting_rate_1=readbin(fnm,[Nx Ny]);
+fnm=['run/SHICE_fwFluxtave.0000000012.data'];
+melting_rate_2=readbin(fnm,[Nx Ny]);
+fnm=['run/SHICE_fwFluxtave.0000000018.data'];
+melting_rate_3=readbin(fnm,[Nx Ny]);
+fnm=['run/SHICE_fwFluxtave.0000000024.data'];
+melting_rate_4=readbin(fnm,[Nx Ny]);
+field_names     ={'Base1','Melting1','Vx2','Vy2','Thickness2','Base2','MaskOceanLevelset2','FloatingiceMeltingRate2',...
+    'Melting2','Vx3','Vy3','Thickness3','Base3','MaskOceanLevelset3','FloatingiceMeltingRate3',...
+    'Melting3','Vx4','Vy4','Thickness4','Base4','MaskOceanLevelset4','FloatingiceMeltingRate4','Melting4'};
+field_tolerances={3e-11,1e-13,...
+    9e-06,7e-06,7e-10,5e-11,1e-13,1e-13,1e-13,...
+    9e-06,7e-06,2e-09,7e-11,1e-13,1e-13,1e-13,...
+    9e-06,7e-06,2e-09,9e-11,1e-13,1e-13,1e-13};
+field_values={...
+    (md.results.TransientSolution(1).Base),...
+    (melting_rate_1(:)),...
+    (md.results.TransientSolution(2).Vx),...
+    (md.results.TransientSolution(2).Vy),...
+    (md.results.TransientSolution(2).Thickness),...
+    (md.results.TransientSolution(2).Base),...
+    (md.results.TransientSolution(2).MaskOceanLevelset),...
+    (md.results.TransientSolution(2).BasalforcingsFloatingiceMeltingRate),...
+    (melting_rate_2(:)),...
+    (md.results.TransientSolution(3).Vx),...
+    (md.results.TransientSolution(3).Vy),...
+    (md.results.TransientSolution(3).Thickness),...
+    (md.results.TransientSolution(3).Base),...
+    (md.results.TransientSolution(3).MaskOceanLevelset),...
+    (md.results.TransientSolution(3).BasalforcingsFloatingiceMeltingRate),...
+    (melting_rate_3(:)),...
+    (md.results.TransientSolution(4).Vx),...
+    (md.results.TransientSolution(4).Vy),...
+    (md.results.TransientSolution(4).Thickness),...
+    (md.results.TransientSolution(4).Base),...
+    (md.results.TransientSolution(4).MaskOceanLevelset),...
+    (md.results.TransientSolution(4).BasalforcingsFloatingiceMeltingRate),...
+    (melting_rate_4(:)),...
+    };
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test4003.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test4003.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test4003.m	(revision 27955)
@@ -0,0 +1,468 @@
+%Test Name: IceOceanCoupling Dan Goldberg'd setup
+%ISSM/MITgcm coupled set-up
+%
+%Script control parameters
+steps=1:11;
+
+%To download and recompile MITgcm from scratch:
+!rm -rf ${ISSM_DIR}/test/MITgcm/install
+!rm -rf ${ISSM_DIR}/test/MITgcm/build/*
+!rm -rf Models
+
+%Organizer
+!mkdir Models
+org=organizer('repository','Models','prefix','IceOcean.','steps',steps);
+
+presentdirectory=pwd;
+
+% {{{ Parameters:
+if perform(org,'Parameters'),
+    Nx=3;   % number of longitude cells
+    Ny=200; % number of latitude cells
+    Nz=90;  % number of MITgcm vertical cells
+    nPx=1;  % number of MITgcm processes to use in x direction
+    nPy=8;  % number of MITgcm processes to use in y direction
+    xgOrigin=0;     % origin of longitude
+    ygOrigin=-75.5; % origin of latitude
+    dLong=.125;     % longitude grid spacing
+    dLat=dLong/16;  % latitude grid spacing
+    delZ=10;        % thickness of vertical levels (m)
+    gravity= 9.81;  % gravity (m^2/s)
+    rho_ice=917;
+    rho_water=1030;
+    di=rho_ice/rho_water;
+    prec = 'real*8'; % precision of MITgcm input binary files
+
+    % bathymetry and ice sheet geometry
+    H = -900;	    % water depth in the ice shelf cavity
+    Hmin = -600;    % deepest point of cavern		
+    Hmax = -300;    % shallowest point of cavern
+    jEnd = Ny*3/4;  % where ice-shelf ends
+    j2   = jEnd+1;
+    
+    % initial ocean conditions
+    T_sfc = -2;
+    T_bot = -1.9;
+    S_sfc = 34.2;
+    S_bot = 34.3;
+
+    savedata(org, Nx, Ny, nPx, nPy, Nz, dLong, dLat, delZ, xgOrigin, ygOrigin, ...
+             rho_ice, rho_water, di, H, Hmin, Hmax, jEnd, j2, gravity, prec, ...
+             T_sfc,T_bot,S_sfc,S_bot);
+end
+% }}}
+% {{{ Bathymetry:
+if perform(org,'Bathymetry'),
+
+    loaddata(org,'Parameters');
+
+    %create lat,lon
+    latg = ygOrigin+[0:Ny-1]*dLat;
+    latc = latg+dLat/2;
+    long = xgOrigin+[0:Nx-1]*dLong;
+    lonc = long+dLong/2;
+    [lat lon]=meshgrid(latc,lonc);
+    zC=-delZ*([1:Nz]-0.5);
+    zF=-delZ*[0:Nz];
+    
+    %create bathymetry:
+    bathymetry = ones(Nx,Ny)*H;
+    bathymetry(:,end) = 0;
+
+    %save bathymetry file for MITgcm
+    savedata(org,lat,lon,bathymetry);
+
+end
+% }}}
+% {{{ IceSheetGeometry:
+if perform(org,'IceSheetGeometry'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'Bathymetry');
+    latmin=min(lat(:));
+    latmax=max(lat(:));
+
+    dHdy = (Hmax-Hmin)/dLat/(jEnd-2); %Slope of ice shelf
+    draft=bathymetry;
+    for i=1:Nx
+        draft(i,:)=Hmin+dHdy*[-1:Ny-2]*dLat;
+    end
+    draft(:,j2:Ny)=0;
+
+    ice_mask=ones(Nx,Ny);
+    ice_mask(:,j2:Ny)=0;
+    iceshelf_mask=ice_mask;
+    thickness=abs(draft)/di;
+    
+    savedata(org,ice_mask,iceshelf_mask,draft,thickness);
+    
+    close all, figure(2), clf
+    subplot(411), pcolorcen(bathymetry); colorbar, title('bathymetry')
+    subplot(412), pcolorcen(ice_mask); colorbar, title('ice and iceshelf mask')
+    subplot(413), pcolorcen(draft); colorbar, title('draft')
+    subplot(414), pcolorcen(thickness); colorbar, title('thickness')
+    
+end
+% }}}
+
+%Configure MITgcm
+% {{{ GetMITgcm:
+if perform(org,'GetMITgcm'),
+  system([pwd '/../MITgcm/get_mitgcm.sh']);
+end
+% }}}
+% {{{ BuildMITgcm:
+if perform(org,'BuildMITgcm'),
+    system(['../MITgcm/build_4003.sh generic ' pwd '/../MITgcm']);
+end
+% }}}
+addpath(recursivepath([pwd '/../MITgcm']));
+% {{{ RunUncoupledMITgcm:
+if perform(org,'RunUncoupledMITgcm'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+
+    % rename previous run directory and create new one
+    if exist ('run.old')
+        !\rm -rf run.old
+    end
+    if exist ('run')
+        !\mv run run.old
+    end
+    !\mkdir run
+    !\cp ../MITgcm/build/mitgcmuv run
+    !\cp ../MITgcm/input_4003/* run
+    !\cp ../MITgcm/input_4003/eedata_uncoupled run/eedata
+    
+    % {{{ Construct MITgcm binary input files
+    namF='run/bathy_flat.bin';
+    fid=fopen(namF,'w','b'); fwrite(fid,bathymetry,prec);fclose(fid);
+    
+    namF='run/shelficeTopo.Lin.bin';
+    fid=fopen(namF,'w','b'); fwrite(fid,draft,prec);fclose(fid);
+    
+    del_T = (T_bot - T_sfc)/(59*delZ);
+    tref=zeros(1,Nz);
+    for k = 1:Nz;
+        tref(k) = T_sfc + del_T*((k-20)*delZ);
+        tref(k)= max(T_sfc,min(tref(k),T_bot));
+    end
+    namF='run/temp_obc.bin';
+    tref=[tref; tref; tref];
+    fid=fopen(namF,'w','b'); fwrite(fid,tref,prec);fclose(fid);
+
+    del_S = (S_bot - S_sfc)/(59*delZ);
+    sref=zeros(1,Nz);
+    for k = 1:Nz;
+        sref(k) = S_sfc + del_S*((k-20)*delZ);
+        sref(k)= max(S_sfc,min(sref(k),S_bot));
+    end
+    namF='run/salt_obc.bin';
+    sref=[sref; sref; sref];
+    fid=fopen(namF,'w','b'); fwrite(fid,sref,prec);fclose(fid);
+
+    zax=[1:Nz];
+    v1=2.5e-2;
+    var=1+Nz-2*zax; var=var/(Nz-1);
+    vobc=v1*var;
+    namF='run/vVel_obc.bin';
+    vobc=[vobc; vobc; vobc];
+    fid=fopen(namF,'w','b'); fwrite(fid,vobc,prec);fclose(fid);
+
+    var=zeros(Nx,Ny,Nz);
+    for i=1:Nx, for j=1:Ny
+            var(i,j,:)=tref(1,:);
+        end, end
+    namF='run/temp_ini.bin';
+    fid=fopen(namF,'w','b'); fwrite(fid,var,prec);fclose(fid);
+
+    for i=1:Nx, for j=1:Ny
+            var(i,j,:)=sref(1,:);
+        end, end
+    namF='run/salt_ini.bin';
+    fid=fopen(namF,'w','b'); fwrite(fid,var,prec);fclose(fid);
+    % }}}
+
+    cd run
+    eval(['!mpirun -np ' int2str(nPx*nPy) ' ./mitgcmuv']);
+    cd ..
+end
+% }}}
+
+%Configure ISSM
+% {{{ CreateMesh:
+if perform(org,'CreateMesh'),
+
+    loaddata(org,'Parameters');
+
+    %create model:
+    md=model();
+
+    %Grab lat,long from MITgcm:
+    long=readbin('run/XG.data',[Nx Ny]);
+    long=[long long(:,end)]; long=[long; 2*long(Nx,:)-long(Nx-1,:)];
+    lat=readbin('run/YG.data',[Nx Ny]);
+    lat=[lat 2*lat(:,Ny)-lat(:,Ny-1)]; lat=[lat; lat(end,:)];
+
+    %project lat,long:
+    [x,y]=ll2xy(lat(:),long(:),-1);
+    index=[];
+    %  C  D
+    %  A  B
+    for j=1:Ny,
+        for i=1:Nx,
+            A=(j-1)*(Nx+1)+i;
+            B=(j-1)*(Nx+1)+i+1;
+            C=j*(Nx+1)+i;
+            D=j*(Nx+1)+i+1;
+            index(end+1,:)=[A B C];
+            index(end+1,:)=[C B D];
+        end
+    end
+
+    %fill mesh and model:
+    md=meshconvert(md,index,x,y);
+    md.mesh.lat=lat(:);
+    md.mesh.long=long(:);
+
+    savemodel(org,md);
+
+end
+% }}}
+% {{{ MeshGeometry:
+if perform(org,'MeshGeometry'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'CreateMesh');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+
+    %transfer to vertices:
+    bathymetry=[bathymetry bathymetry(:,end)]; bathymetry=[bathymetry(1,:); bathymetry];
+    ice_mask=[ice_mask ice_mask(:,end)]; ice_mask=[ice_mask(1,:); ice_mask];
+    iceshelf_mask=[iceshelf_mask iceshelf_mask(:,end)]; iceshelf_mask=[iceshelf_mask(1,:); iceshelf_mask];
+    thickness=[thickness thickness(:,end)]; thickness=[thickness; thickness(end,:)];
+
+    %start filling some of the fields
+    md.geometry.bed=bathymetry(:);
+    md.geometry.thickness=thickness(:);
+    md.geometry.base=-917/1028*md.geometry.thickness;
+    md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+    %nothing passes icefront:
+    pos=find((~ice_mask(:) & ice_mask(:)~=0) | thickness(:)==0);
+    md.geometry.thickness(pos)=1;
+    md.geometry.surface(pos)=(1-di)*md.geometry.thickness(pos);
+    md.geometry.base(pos)=-di*md.geometry.thickness(pos);
+
+    %level sets:
+    md.mask.ice_levelset=iceshelf_mask(:);
+    pos=find(md.mask.ice_levelset==1); md.mask.ice_levelset(pos)=-1;
+    pos=find(md.mask.ice_levelset==0); md.mask.ice_levelset(pos)=1;
+    md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1);
+
+    savemodel(org,md);
+
+end
+% }}}
+% {{{ ParameterizeIce:
+if perform(org,'ParameterizeIce'),
+
+	loaddata(org,'MeshGeometry');
+
+	%miscellaneous
+	md.miscellaneous.name='test4003';
+
+	%initial velocity:
+	md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+	md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+	md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+
+	%friction:
+	md.friction.coefficient=0*ones(md.mesh.numberofvertices,1);
+	pos=find(md.mask.ocean_levelset>0);
+	md.friction.coefficient(pos)=5;
+	md.friction.p=ones(md.mesh.numberofelements,1);
+	md.friction.q=ones(md.mesh.numberofelements,1);
+
+	%temperatures and surface mass balance:
+	md.initialization.temperature=(273.15-22)*ones(md.mesh.numberofvertices,1);
+	md.initialization.pressure=md.materials.rho_ice*md.constants.g*(md.geometry.surface-md.geometry.base);
+	md.smb.mass_balance = 0*ones(md.mesh.numberofvertices,1);
+
+	%Flow law
+	md.materials.rheology_B=paterson(md.initialization.temperature);
+	md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+	md.damage.D=zeros(md.mesh.numberofvertices,1);
+	md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+
+	%the spcs going
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+	md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+	md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+
+	%get some flux at the ice divide:
+	pos=find(md.mesh.lat==min(md.mesh.lat));
+	md.masstransport.spcthickness(pos)=md.geometry.thickness(pos);
+	md.stressbalance.spcvy(pos)=800;
+	md.stressbalance.spcvx(pos)=0;
+
+	%deal with boundaries, excluding icefront:
+	pos=find(md.mesh.long==min(md.mesh.long) | md.mesh.long==max(md.mesh.long));
+	md.stressbalance.spcvx(pos)=0;
+
+	point1=find(md.mesh.y==min(md.mesh.y)); point2=find(md.mesh.x==max(md.mesh.x));
+	costheta=(md.mesh.x(point2)-md.mesh.x(point1))/sqrt((md.mesh.x(point2)-md.mesh.x(point1)).^2+(md.mesh.y(point2)-md.mesh.y(point1)).^2);
+	sintheta=(md.mesh.y(point2)-md.mesh.y(point1))/sqrt((md.mesh.x(point2)-md.mesh.x(point1)).^2+(md.mesh.y(point2)-md.mesh.y(point1)).^2);
+	md.stressbalance.referential(:,1:3)=repmat([costheta,sintheta,0],md.mesh.numberofvertices,1);
+	md.stressbalance.referential(:,4:6)=repmat([-sintheta,costheta,0],md.mesh.numberofvertices,1);
+
+	md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+	md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+	md.thermal.spctemperature=[md.initialization.temperature; 1]; %impose observed temperature on surface
+	md.basalforcings.geothermalflux=.064*ones(md.mesh.numberofvertices,1);
+
+	%flow equations:
+	md=setflowequation(md,'SSA','all');
+
+	savemodel(org,md);
+end
+% }}}
+% {{{ RunUncoupledISSM:
+if perform(org,'RunUncoupledISSM'),
+
+	loaddata(org,'Parameters');
+	loaddata(org,'ParameterizeIce');
+
+	%timestepping:
+	md.timestepping.final_time=100;
+	md.timestepping.time_step=0.5;
+	md.transient.isgroundingline=0;
+	md.transient.isthermal=0;
+	md.groundingline.migration='SubelementMigration';
+	md.groundingline.melt_interpolation='NoMeltOnPartiallyFloating';
+	md.groundingline.friction_interpolation='SubelementFriction2';
+	md.masstransport.stabilization=1;
+
+	md.cluster=generic('name',oshostname(),'np',2);
+	md=solve(md,'Transient');
+
+	savemodel(org,md);
+
+	plotmodel(md,'data',md.results.TransientSolution(end).Vel,'data',md.results.TransientSolution(end).Thickness)
+end
+% }}}
+
+%Run MITgcm/ISSM
+% {{{ RunCoupledMITgcmISSM:
+if perform(org,'RunCoupledMITgcmISSM'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+    loaddata(org,'ParameterizeIce');
+    md=loadmodel(org,'RunUncoupledISSM');
+
+    % {{{ prepare ISSM: start from the steady-state
+
+    md.geometry.base=md.results.TransientSolution(end).Base;
+    md.geometry.surface=md.results.TransientSolution(end).Surface;
+    md.geometry.thickness=md.results.TransientSolution(end).Thickness;
+    md.initialization.vx=md.results.TransientSolution(end).Vx;
+    md.initialization.vy=md.results.TransientSolution(end).Vy;
+    md.initialization.vel=md.results.TransientSolution(end).Vel;
+    md.initialization.pressure=md.results.TransientSolution(end).Pressure;
+    md.transient.isoceancoupling=2;
+    md.transient.isgroundingline=0;
+    md.masstransport.requested_outputs={'default','BasalforcingsFloatingiceMeltingRate'};
+
+    % }}}
+    % {{{ prepare MITgcm
+    % rename previous run directory and create new one
+    if exist ('run.old')
+        !\rm -rf run.old
+    end
+    if exist ('run')
+        !\mv run run.old
+    end
+    !\mkdir run
+    !\cp ../MITgcm/build/mitgcmuv run
+    !\cp ../MITgcm/input_4003/* run
+    
+    % {{{ Construct MITgcm binary input files
+    namF='run/bathy_flat.bin';
+    fid=fopen(namF,'w','b'); fwrite(fid,bathymetry,prec);fclose(fid);
+    
+    draft=md.results.TransientSolution(end).Base;
+    draft=reshape(draft,[Nx+1,Ny+1]);
+    pos=ones(Nx+1,Ny+1);
+    pos(find(md.mask.ice_levelset>0))=0;
+    draft=draft.*pos;
+    draft=draft(1:Nx,1:Ny)+draft(2:end,1:Ny)+draft(1:Nx,2:end)+draft(2:end,2:end);
+    pos=pos(1:Nx,1:Ny)+pos(2:end,1:Ny)+pos(1:Nx,2:end)+pos(2:end,2:end);
+    draft(find(pos))=draft(find(pos))./pos(find(pos));
+    namF='run/shelficeTopo.Lin.bin';
+    fid=fopen(namF,'w','b'); fwrite(fid,draft,prec);fclose(fid);
+    
+    del_T = (T_bot - T_sfc)/(59*delZ);
+    tref=zeros(1,Nz);
+    for k = 1:Nz;
+        tref(k) = T_sfc + del_T*((k-20)*delZ);
+        tref(k)= max(T_sfc,min(tref(k),T_bot));
+    end
+    namF='run/temp_obc.bin';
+    tref=[tref; tref; tref];
+    fid=fopen(namF,'w','b'); fwrite(fid,tref,prec);fclose(fid);
+
+    del_S = (S_bot - S_sfc)/(59*delZ);
+    sref=zeros(1,Nz);
+    for k = 1:Nz;
+        sref(k) = S_sfc + del_S*((k-20)*delZ);
+        sref(k)= max(S_sfc,min(sref(k),S_bot));
+    end
+    namF='run/salt_obc.bin';
+    sref=[sref; sref; sref];
+    fid=fopen(namF,'w','b'); fwrite(fid,sref,prec);fclose(fid);
+
+    zax=[1:Nz];
+    v1=2.5e-2;
+    var=1+Nz-2*zax; var=var/(Nz-1);
+    vobc=v1*var;
+    namF='run/vVel_obc.bin';
+    vobc=[vobc; vobc; vobc];
+    fid=fopen(namF,'w','b'); fwrite(fid,vobc,prec);fclose(fid);
+
+    var=zeros(Nx,Ny,Nz);
+    for i=1:Nx, for j=1:Ny
+            var(i,j,:)=tref(1,:);
+        end, end
+    namF='run/temp_ini.bin';
+    fid=fopen(namF,'w','b'); fwrite(fid,var,prec);fclose(fid);
+
+    for i=1:Nx, for j=1:Ny
+            var(i,j,:)=sref(1,:);
+        end, end
+    namF='run/salt_ini.bin';
+    fid=fopen(namF,'w','b'); fwrite(fid,var,prec);fclose(fid);
+    % }}}
+    % }}}
+
+    md.timestepping.coupling_time=1/24/365;          % 1 hour in decimal years
+    md.timestepping.time_step=1/24/365;              % 1 hour in decimal years
+    md.timestepping.final_time=23/24/365;            % hour 23 in decimal years
+    md.cluster.npocean=nPx*nPy;
+    md.cluster.np=2;
+    md.cluster.executionpath=[pwd '/run'];
+    md.transient.requested_outputs={'default','MaskOceanLevelset'};
+
+    md=solveiceocean(md,'Transient','runtimename',false);
+
+%eval(['!mpiexec -np ' int2str(md.cluster.np) ' ' md.cluster.codepath '/issm_ocean.exe TransientSolution ' pwd ' ' md.miscellaneous.name ' ']);
+%eval(['!mpiexec -np ' int2str(md.cluster.np) ' ' md.cluster.codepath '/issm_ocean.exe TransientSolution ' pwd ' ' md.miscellaneous.name ' : -np ' int2str(nPx*nPy) ' ./mitgcmuv']);
+end
+% }}}
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test4004.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test4004.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test4004.m	(revision 27955)
@@ -0,0 +1,427 @@
+%Test Name: IceOceanCoupling Dan Goldberg'd setup
+%ISSM/MITgcm coupled set-up
+%
+%Script control parameters
+steps=1:10;
+
+%To download and recompile MITgcm from scratch:
+!rm -rf ${ISSM_DIR}/test/MITgcm/install
+!rm -rf ${ISSM_DIR}/test/MITgcm/build/*
+!rm -rf Models
+
+%Organizer
+!mkdir Models
+org=organizer('repository','Models','prefix','IceOcean.','steps',steps);
+
+presentdirectory=pwd;
+
+% {{{ Parameters:
+if perform(org,'Parameters'),
+    Nx=3;   % number of longitude cells
+    Ny=200; % number of latitude cells
+    Nz=90;  % number of MITgcm vertical cells
+    nPx=1;  % number of MITgcm processes to use in x direction
+    nPy=8;  % number of MITgcm processes to use in y direction
+    xgOrigin=0;     % origin of longitude
+    ygOrigin=-75.5; % origin of latitude
+    dLong=.125;     % longitude grid spacing
+    dLat=dLong/16;  % latitude grid spacing
+    delZ=10;        % thickness of vertical levels (m)
+    gravity= 9.81;  % gravity (m^2/s)
+    rho_ice=917;
+    rho_water=1030;
+    di=rho_ice/rho_water;
+    prec = 'real*8'; % precision of MITgcm input binary files
+
+    % bathymetry and ice sheet geometry
+    H = -900;	    % water depth in the ice shelf cavity
+    Hmin = -600;    % deepest point of cavern		
+    Hmax = -300;    % shallowest point of cavern
+    jEnd = Ny*3/4;  % where ice-shelf ends
+    j2   = jEnd+1;
+    
+    % initial ocean conditions
+    T_sfc = -2;
+    T_bot = -1.9;
+    S_sfc = 34.2;
+    S_bot = 34.3;
+
+    savedata(org, Nx, Ny, nPx, nPy, Nz, dLong, dLat, delZ, xgOrigin, ygOrigin, ...
+             rho_ice, rho_water, di, H, Hmin, Hmax, jEnd, j2, gravity, prec, ...
+             T_sfc,T_bot,S_sfc,S_bot);
+end
+% }}}
+% {{{ Bathymetry:
+if perform(org,'Bathymetry'),
+
+    loaddata(org,'Parameters');
+
+    %create lat,lon
+    latg = ygOrigin+[0:Ny-1]*dLat;
+    latc = latg+dLat/2;
+    long = xgOrigin+[0:Nx-1]*dLong;
+    lonc = long+dLong/2;
+    [lat lon]=meshgrid(latc,lonc);
+    zC=-delZ*([1:Nz]-0.5);
+    zF=-delZ*[0:Nz];
+    
+    %create bathymetry:
+    bathymetry = ones(Nx,Ny)*H;
+    bathymetry(:,end) = 0;
+
+    %save bathymetry file for MITgcm
+    savedata(org,lat,lon,bathymetry);
+
+end
+% }}}
+% {{{ IceSheetGeometry:
+if perform(org,'IceSheetGeometry'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'Bathymetry');
+    latmin=min(lat(:));
+    latmax=max(lat(:));
+
+    dHdy = (Hmax-Hmin)/dLat/(jEnd-2); %Slope of ice shelf
+    draft=bathymetry;
+    for i=1:Nx
+        draft(i,:)=Hmin+dHdy*[-1:Ny-2]*dLat;
+    end
+    draft(:,j2:Ny)=0;
+
+    ice_mask=ones(Nx,Ny);
+    ice_mask(:,j2:Ny)=0;
+    iceshelf_mask=ice_mask;
+    thickness=abs(draft)/di;
+    
+    savedata(org,ice_mask,iceshelf_mask,draft,thickness);
+    
+    close all, figure(2), clf
+    subplot(411), pcolorcen(bathymetry); colorbar, title('bathymetry')
+    subplot(412), pcolorcen(ice_mask); colorbar, title('ice and iceshelf mask')
+    subplot(413), pcolorcen(draft); colorbar, title('draft')
+    subplot(414), pcolorcen(thickness); colorbar, title('thickness')
+    
+end
+% }}}
+
+%Configure MITgcm
+% {{{ GetMITgcm:
+if perform(org,'GetMITgcm'),
+  system([pwd '/../MITgcm/get_mitgcm.sh']);
+end
+% }}}
+% {{{ BuildMITgcm:
+if perform(org,'BuildMITgcm'),
+    system(['../MITgcm/build_4003.sh generic ' pwd '/../MITgcm']);
+end
+% }}}
+addpath(recursivepath([pwd '/../MITgcm']));
+% {{{ RunUncoupledMITgcm:
+if perform(org,'RunUncoupledMITgcm'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+
+    % rename previous run directory and create new one
+    if exist ('run.old')
+        !\rm -rf run.old
+    end
+    if exist ('run')
+        !\mv run run.old
+    end
+    !\mkdir run
+    !\cp ../MITgcm/build/mitgcmuv run
+    !\cp ../MITgcm/input_4004/* run
+    !\cp ../MITgcm/input_4004/eedata_uncoupled run/eedata
+    
+    % {{{ Construct MITgcm binary input files
+    namF='run/bathy_flat.bin';
+    fid=fopen(namF,'w','b'); fwrite(fid,bathymetry,prec);fclose(fid);
+    
+    namF='run/shelficeTopo.Lin.bin';
+    fid=fopen(namF,'w','b'); fwrite(fid,draft,prec);fclose(fid);
+    
+    del_T = (T_bot - T_sfc)/(59*delZ);
+    tref=zeros(1,Nz);
+    for k = 1:Nz;
+        tref(k) = T_sfc + del_T*((k-20)*delZ);
+        tref(k)= max(T_sfc,min(tref(k),T_bot));
+    end
+    namF='run/temp_obc.bin';
+    tref=[tref; tref; tref];
+    fid=fopen(namF,'w','b'); fwrite(fid,tref,prec);fclose(fid);
+
+    del_S = (S_bot - S_sfc)/(59*delZ);
+    sref=zeros(1,Nz);
+    for k = 1:Nz;
+        sref(k) = S_sfc + del_S*((k-20)*delZ);
+        sref(k)= max(S_sfc,min(sref(k),S_bot));
+    end
+    namF='run/salt_obc.bin';
+    sref=[sref; sref; sref];
+    fid=fopen(namF,'w','b'); fwrite(fid,sref,prec);fclose(fid);
+
+    zax=[1:Nz];
+    v1=2.5e-2;
+    var=1+Nz-2*zax; var=var/(Nz-1);
+    vobc=v1*var;
+    namF='run/vVel_obc.bin';
+    vobc=[vobc; vobc; vobc];
+    fid=fopen(namF,'w','b'); fwrite(fid,vobc,prec);fclose(fid);
+
+    var=zeros(Nx,Ny,Nz);
+    for i=1:Nx, for j=1:Ny
+            var(i,j,:)=tref(1,:);
+        end, end
+    namF='run/temp_ini.bin';
+    fid=fopen(namF,'w','b'); fwrite(fid,var,prec);fclose(fid);
+
+    for i=1:Nx, for j=1:Ny
+            var(i,j,:)=sref(1,:);
+        end, end
+    namF='run/salt_ini.bin';
+    fid=fopen(namF,'w','b'); fwrite(fid,var,prec);fclose(fid);
+    % }}}
+
+    cd run
+    eval(['!mpirun -np ' int2str(nPx*nPy) ' ./mitgcmuv']);
+    cd ..
+end
+% }}}
+
+%Configure ISSM
+% {{{ CreateMesh:
+if perform(org,'CreateMesh'),
+
+    loaddata(org,'Parameters');
+
+    %create model:
+    md=model();
+
+    %Grab lat,long from MITgcm:
+    long=readbin('run/XC.data',[Nx Ny]);
+    lat=readbin('run/YC.data',[Nx Ny]);
+
+    %project lat,long:
+    [x,y]=ll2xy(lat(:),long(:),-1);
+    index=[];
+    %  C  D
+    %  A  B
+    for j=1:(Ny-1),
+        for i=1:(Nx-1),
+            A=(j-1)*(Nx)+i;
+            B=(j-1)*(Nx)+i+1;
+            C=j*(Nx)+i;
+            D=j*(Nx)+i+1;
+            index(end+1,:)=[A B C];
+            index(end+1,:)=[C B D];
+        end
+    end
+
+    %fill mesh and model:
+    md=meshconvert(md,index,x,y);
+    md.mesh.lat=lat(:);
+    md.mesh.long=long(:);
+
+    savemodel(org,md);
+
+end
+% }}}
+% {{{ MeshGeometry:
+if perform(org,'MeshGeometry'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'CreateMesh');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+
+    %start filling some of the fields
+    md.geometry.bed=bathymetry(:);
+    md.geometry.thickness=thickness(:);
+    md.geometry.base=-917/1028*md.geometry.thickness;
+    md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+    %nothing passes icefront:
+    pos=find((~ice_mask(:) & ice_mask(:)~=0) | thickness(:)==0);
+    md.geometry.thickness(pos)=1;
+    md.geometry.surface(pos)=(1-di)*md.geometry.thickness(pos);
+    md.geometry.base(pos)=-di*md.geometry.thickness(pos);
+
+    %level sets:
+    md.mask.ice_levelset=iceshelf_mask(:);
+    pos=find(md.mask.ice_levelset==1); md.mask.ice_levelset(pos)=-1;
+    pos=find(md.mask.ice_levelset==0); md.mask.ice_levelset(pos)=1;
+    md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1);
+
+    savemodel(org,md);
+
+end
+% }}}
+% {{{ ParameterizeIce:
+if perform(org,'ParameterizeIce'),
+
+	loaddata(org,'MeshGeometry');
+
+	%miscellaneous
+	md.miscellaneous.name='test4004';
+
+	%initial velocity:
+	md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+	md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+	md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+
+	%friction:
+	md.friction.coefficient=0*ones(md.mesh.numberofvertices,1);
+	pos=find(md.mask.ocean_levelset>0);
+	md.friction.coefficient(pos)=5;
+	md.friction.p=ones(md.mesh.numberofelements,1);
+	md.friction.q=ones(md.mesh.numberofelements,1);
+
+	%temperatures and surface mass balance:
+	md.initialization.temperature=(273.15-22)*ones(md.mesh.numberofvertices,1);
+	md.initialization.pressure=md.materials.rho_ice*md.constants.g*(md.geometry.surface-md.geometry.base);
+	md.smb.mass_balance = 0*ones(md.mesh.numberofvertices,1);
+
+	%Flow law
+	md.materials.rheology_B=paterson(md.initialization.temperature);
+	md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+	md.damage.D=zeros(md.mesh.numberofvertices,1);
+	md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+
+	%the spcs going
+	md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+	md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+	md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+	md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+
+	%get some flux at the ice divide:
+	pos=find(md.mesh.lat==min(md.mesh.lat));
+	md.masstransport.spcthickness(pos)=md.geometry.thickness(pos);
+	md.stressbalance.spcvy(pos)=800;
+	md.stressbalance.spcvx(pos)=0;
+
+	%deal with boundaries, excluding icefront:
+	pos=find(md.mesh.long==min(md.mesh.long) | md.mesh.long==max(md.mesh.long));
+	md.stressbalance.spcvx(pos)=0;
+
+	point1=find(md.mesh.y==min(md.mesh.y)); point2=find(md.mesh.x==max(md.mesh.x));
+	costheta=(md.mesh.x(point2)-md.mesh.x(point1))/sqrt((md.mesh.x(point2)-md.mesh.x(point1)).^2+(md.mesh.y(point2)-md.mesh.y(point1)).^2);
+	sintheta=(md.mesh.y(point2)-md.mesh.y(point1))/sqrt((md.mesh.x(point2)-md.mesh.x(point1)).^2+(md.mesh.y(point2)-md.mesh.y(point1)).^2);
+	md.stressbalance.referential(:,1:3)=repmat([costheta,sintheta,0],md.mesh.numberofvertices,1);
+	md.stressbalance.referential(:,4:6)=repmat([-sintheta,costheta,0],md.mesh.numberofvertices,1);
+
+	md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+	md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+	md.thermal.spctemperature=[md.initialization.temperature; 1]; %impose observed temperature on surface
+	md.basalforcings.geothermalflux=.064*ones(md.mesh.numberofvertices,1);
+
+	%flow equations:
+	md=setflowequation(md,'SSA','all');
+
+	savemodel(org,md);
+end
+% }}}
+
+%Run MITgcm/ISSM
+% {{{ RunCoupledMITgcmISSM:
+if perform(org,'RunCoupledMITgcmISSM'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+    loaddata(org,'ParameterizeIce');
+
+    % {{{ prepare ISSM
+    md.transient.isoceancoupling=2;
+    md.transient.isgroundingline=0;
+    md.transient.isthermal=0;
+    md.groundingline.migration='SubelementMigration';
+    md.groundingline.melt_interpolation='NoMeltOnPartiallyFloating';
+    md.groundingline.friction_interpolation='SubelementFriction2';
+    md.masstransport.stabilization=1;
+    md.timestepping.coupling_time=1/24/365/100;          % 1/100 hour in decimal years
+    md.timestepping.time_step=1/24/365/100;              % 1/100 hour in decimal years
+    md.timestepping.final_time=23/24/365;            % hour 23 in decimal years
+    md.cluster=generic('name',oshostname(),'np',2);
+    md.cluster.npocean=nPx*nPy;
+    md.cluster.np=2;
+    md.cluster.executionpath=[pwd '/run'];
+    md.transient.requested_outputs={'default','MaskOceanLevelset'};
+    md.masstransport.requested_outputs={'default','BasalforcingsFloatingiceMeltingRate'};
+    % }}}
+    % {{{ prepare MITgcm
+    % rename previous run directory and create new one
+    if exist ('run.old')
+        !\rm -rf run.old
+    end
+    if exist ('run')
+        !\mv run run.old
+    end
+    !\mkdir run
+    !\cp ../MITgcm/build/mitgcmuv run
+    !\cp ../MITgcm/input_4004/* run
+    
+    % {{{ Construct MITgcm binary input files
+    namF='run/bathy_flat.bin';
+    fid=fopen(namF,'w','b'); fwrite(fid,bathymetry,prec);fclose(fid);
+
+    namF='run/shelficeTopo.Lin.bin';
+    fid=fopen(namF,'w','b'); fwrite(fid,draft,prec);fclose(fid);
+
+    del_T = (T_bot - T_sfc)/(59*delZ);
+    tref=zeros(1,Nz);
+    for k = 1:Nz;
+        tref(k) = T_sfc + del_T*((k-20)*delZ);
+        tref(k)= max(T_sfc,min(tref(k),T_bot));
+    end
+    namF='run/temp_obc.bin';
+    tref=[tref; tref; tref];
+    fid=fopen(namF,'w','b'); fwrite(fid,tref,prec);fclose(fid);
+
+    del_S = (S_bot - S_sfc)/(59*delZ);
+    sref=zeros(1,Nz);
+    for k = 1:Nz;
+        sref(k) = S_sfc + del_S*((k-20)*delZ);
+        sref(k)= max(S_sfc,min(sref(k),S_bot));
+    end
+    namF='run/salt_obc.bin';
+    sref=[sref; sref; sref];
+    fid=fopen(namF,'w','b'); fwrite(fid,sref,prec);fclose(fid);
+
+    zax=[1:Nz];
+    v1=2.5e-2;
+    var=1+Nz-2*zax; var=var/(Nz-1);
+    vobc=v1*var;
+    namF='run/vVel_obc.bin';
+    vobc=[vobc; vobc; vobc];
+    fid=fopen(namF,'w','b'); fwrite(fid,vobc,prec);fclose(fid);
+
+    var=zeros(Nx,Ny,Nz);
+    for i=1:Nx, for j=1:Ny
+            var(i,j,:)=tref(1,:);
+        end, end
+    namF='run/temp_ini.bin';
+    fid=fopen(namF,'w','b'); fwrite(fid,var,prec);fclose(fid);
+
+    for i=1:Nx, for j=1:Ny
+            var(i,j,:)=sref(1,:);
+        end, end
+    namF='run/salt_ini.bin';
+    fid=fopen(namF,'w','b'); fwrite(fid,var,prec);fclose(fid);
+    % }}}
+    % }}}
+
+    md=solveiceocean(md,'Transient','runtimename',false);
+
+    savemodel(org,md);
+    
+    plotmodel(md,'data',md.results.TransientSolution(end).Vel,'data',md.results.TransientSolution(end).Thickness)
+
+%eval(['!mpiexec -np ' int2str(md.cluster.np) ' ' md.cluster.codepath '/issm_ocean.exe TransientSolution ' pwd ' ' md.miscellaneous.name ' ']);
+%eval(['!mpiexec -np ' int2str(md.cluster.np) ' ' md.cluster.codepath '/issm_ocean.exe TransientSolution ' pwd ' ' md.miscellaneous.name ' : -np ' int2str(nPx*nPy) ' ./mitgcmuv']);
+end
+% }}}
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test4005.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test4005.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test4005.m	(revision 27955)
@@ -0,0 +1,758 @@
+%Test Name: IceOcean
+%ISSM/MITgcm coupled set-up
+%
+%Script control parameters
+steps=[1:5 7:11];
+final_time=1;
+
+!rm -rf ${ISSM_DIR}/test/MITgcm/install
+!rm -rf ${ISSM_DIR}/test/MITgcm/build/*
+!rm -rf Models
+
+%Organizer
+!mkdir Models
+org=organizer('repository','Models','prefix','IceOcean.','steps',steps);
+
+presentdirectory=pwd;
+
+% {{{ Parameters:
+if perform(org,'Parameters'),
+    Nx=20; %number of longitude cells
+    Ny=40; %number of latitude cells
+    Nz=30; %number of MITgcm vertical cells
+    nPx=1; %number of MITgcm processes to use in x direction
+    nPy=2; %number of MITgcm processes to use in y direction
+    xgOrigin=0; %origin of longitude
+    ygOrigin=-80; %origin of latitude
+    dLong=.25; %longitude grid spacing
+    dLat=.05; %latitude grid spacing
+    delZ=30; %thickness of vertical levels
+    icefront_position_ratio=.75;
+    ice_thickness=100;
+    rho_ice=917;
+    rho_water=1028.14;
+    di=rho_ice/rho_water;
+
+    % MITgcm initial and lateral boundary conditions
+    iniSalt  = 34.4; % initial salinity (PSU)
+    iniTheta = -1.9; % initial potential temperature (deg C)
+    obcSalt  = 34.4; % open boundary salinity (PSU)
+    obcTheta =  1.0; % open boundary potential temperature (deg C)
+    mlDepth  = 120.; % mixed layer depth (m)
+    mlSalt   = 33.4; % open boundary salinity (PSU)
+    mlTheta  = -1.9; % open boundary potential temperature (deg C)
+    obcUvel  = -0.1; % open boundary velocity (m/s)
+
+    MITgcmDeltaT=600; % MITgcm time step in seconds
+    y2s=31536000; % year to seconds conversion, i.e., seconds per year
+
+    % start_time, final_time, and time_step
+    start_time=0; % in decimal years
+    time_step=1/12; % coupling interval in decimal years
+    async_step_MITgcm_multiplier=1/30; % used to reduce run time for MItgcm
+
+    % bedrock/bathymetry
+    hmax=1000;
+    trough_depth=200;
+    deltah=300;
+    sea_level=1095;
+
+    % issm settings:
+    numlayers=10;
+
+    savedata(org, Nx, Ny, nPx, nPy, Nz, dLong, dLat, delZ, xgOrigin, ...
+        ygOrigin, icefront_position_ratio, ice_thickness, rho_ice, ...
+        rho_water, di, hmax, trough_depth, deltah, sea_level, ...
+        iniSalt, iniTheta, obcSalt, obcTheta, mlDepth, mlSalt, ...
+        mlTheta, obcUvel, start_time, time_step, MITgcmDeltaT, y2s,...
+        numlayers,async_step_MITgcm_multiplier);
+end
+% }}}
+% {{{ Bathymetry:
+if perform(org,'Bathymetry'),
+
+    loaddata(org,'Parameters');
+    %create lat,long
+    lat=(ygOrigin+dLat/2):dLat:(ygOrigin+Ny*dLat);
+    long=(xgOrigin+dLong/2):dLong:(xgOrigin+Nx*dLong);
+    [lat long]=meshgrid(lat,long);
+
+    longmin=min(long(:));
+    longmax=max(long(:));
+    latmin=min(lat(:));
+    latmax=max(lat(:));
+
+    %create bedrock/bathymetry:
+    bedrock=zeros(Nx,Ny);
+    bedrock=hmax-deltah*tanh(pi*(2*(lat-latmin)./(latmax-latmin)-1))+ ...
+            trough_depth*cos(2*pi*long./(longmax-longmin));
+
+    %save bathymetry file for MITgcm
+    bathymetry=bedrock-sea_level;
+    savedata(org,lat,long,bathymetry);
+
+end
+% }}}
+% {{{ IceSheetGeometry:
+if perform(org,'IceSheetGeometry'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'Bathymetry');
+    latmin=min(lat(:));
+    latmax=max(lat(:));
+
+    %put ice_thickness constant layer of ice over the bathymetry, unless it floats:
+    s=size(bathymetry);
+    thickness=ice_thickness*ones(s);
+
+    %figure out ice shelf:
+    pos=find(-di*thickness>bathymetry);
+    iceshelf_mask=zeros(s);
+    iceshelf_mask(pos)=1;
+
+    ice_mask=ones(s);
+    pos=find((lat-latmin)/(latmax-latmin)>(icefront_position_ratio));
+    ice_mask(pos)=0;
+    iceshelf_mask(pos)=0;
+
+    %compute draft of ice shelf:
+    draft=bathymetry;
+    pos=find(iceshelf_mask);
+    draft(pos)=-di*thickness(pos);
+    pos=find(~ice_mask);
+    draft(pos)=0;
+
+    savedata(org,ice_mask,iceshelf_mask,draft,thickness);
+end
+% }}}
+
+%Configure MITgcm
+% {{{ GetMITgcm:
+if perform(org,'GetMITgcm'),
+  system([pwd '/../MITgcm/get_mitgcm.sh']);
+end
+% }}}
+% {{{ BuildMITgcm:
+if perform(org,'BuildMITgcm'),
+
+    %load data:
+    loaddata(org,'Parameters');
+
+    system(['../MITgcm/build_remesh.sh amundsen ' pwd '/../MITgcm']);
+end
+% }}}
+addpath(recursivepath([pwd '/../MITgcm']));
+% {{{ RunUncoupledMITgcm:
+if perform(org,'RunUncoupledMITgcm'),
+
+    %load data:
+    loaddata(org,'Parameters');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+     endtime = round(MITgcmDeltaT * ...
+         floor(time_step*y2s*async_step_MITgcm_multiplier/MITgcmDeltaT));
+
+    % {{{ prepare MITgcm
+    % rename previous run directory and create new one
+    if exist ('run.old')
+        !\rm -rf run.old
+    end
+    if exist ('run')
+        !\mv run run.old
+    end
+    !\mkdir run
+    !\cp ../MITgcm/build/mitgcmuv run
+    !\cp ../MITgcm/input_remesh/* run
+    !\cp ../MITgcm/input_remesh/eedata_uncoupled run/eedata
+
+    %load data:
+    loaddata(org,'Parameters');
+
+    % initial salinity
+    S=iniSalt*ones(Nx,Ny,Nz);
+    writebin('run/Salt.bin',S);
+
+    % initial temperature
+    T=iniTheta*ones(Nx,Ny,Nz);
+    writebin('run/Theta.bin',T);
+
+    % initial velocity
+    Z=zeros(Nx,Ny,Nz);
+    writebin('run/Uvel.bin',Z);
+    writebin('run/Vvel.bin',Z);
+
+    % initial sea surface height
+    Z=zeros(Nx,Ny);
+    writebin('run/Etan.bin',Z);
+
+    % salinity boundary conditions
+    S=obcSalt*ones(Ny,Nz);
+    thk=delZ*ones(Nz,1);
+    bot=cumsum(thk);
+    ik=find(bot<=mlDepth);
+    S(:,ik)=mlSalt;
+    writebin('run/OBs.bin',S);
+
+    % temperature boundary conditions
+    T=obcTheta*ones(Ny,Nz);
+    T(:,ik)=mlTheta;
+    writebin('run/OBt.bin',T);
+
+    % zonal velocity boundary conditions
+    U=obcUvel*ones(Ny,Nz);
+    writebin('run/OBu.bin',U);
+
+    % zero boundary conditions
+    Z=zeros(Ny,Nz);
+    writebin('run/zeros.bin',Z);
+
+    % build parameter file data.obcs
+    fidi=fopen('../MITgcm/input_remesh/data.obcs','r');
+    fido=fopen('run/data.obcs','w');
+    tline = fgetl(fidi);
+    fprintf(fido,'%s\n',tline);
+    while 1
+        tline = fgetl(fidi);
+        if ~ischar(tline), break, end
+        %do the change here:
+        if strcmpi(tline,' OB_Iwest = 40*1,'),
+            fprintf(fido,'%s%i%s\n',' OB_Iwest = ',Ny,'*1,');
+            continue;
+        end
+        if strcmpi(tline,' OB_Ieast = 40*-1,'),
+            fprintf(fido,'%s%i%s\n',' OB_Ieast = ',Ny,'*-1,');
+            continue;
+        end
+        fprintf(fido,'%s\n',tline);
+    end
+    %close  files
+    fclose(fidi);
+    fclose(fido);
+
+    %save bathymetry and bedrock in run directory
+    writebin('run/bathymetry.bin',bathymetry);
+    writebin('run/icetopo.bin',draft);
+	 shelficemass=-draft*rho_water;
+    writebin('run/shelficemass.bin',shelficemass);
+	 dmdt=-5*rho_ice/y2s*ones(size(draft));
+    writebin('run/shelfice_dmdt.bin',dmdt);
+    % }}}
+
+    %start looping:
+    for t=start_time:time_step:final_time,
+        disp(['Year: ' num2str(t)])
+        % {{{ generate MITgcm parameter file data
+        fidi=fopen('../MITgcm/input_remesh/data','r');
+        fido=fopen('run/data','w');
+        tline = fgetl(fidi);
+        fprintf(fido,'%s\n',tline);
+        while 1
+            tline = fgetl(fidi);
+            if ~ischar(tline), break, end
+            %do the change here:
+            if strcmpi(tline,' xgOrigin = 0.0,'),
+                fprintf(fido,'%s%i%s\n',' xgOrigin = ',xgOrigin,',');
+                continue;
+            end
+            if strcmpi(tline,' ygOrigin = -80.0,'),
+                fprintf(fido,'%s%i%s\n',' ygOrigin = ',ygOrigin,',');
+                continue;
+            end
+            if strcmpi(tline,' delX = 20*0.25,'),
+                fprintf(fido,'%s%i*%g%s\n',' delX = ',Nx,dLong,',');
+                continue;
+            end
+            if strcmpi(tline,' delY = 20*0.25,'),
+                fprintf(fido,'%s%i*%g%s\n',' delY = ',Ny,dLat,',');
+                continue;
+            end
+            if strcmpi(tline,' delZ = 30*30.0,'),
+                fprintf(fido,'%s%i*%g%s\n',' delZ = ',Nz,delZ,',');
+                continue;
+            end
+            if strcmpi(tline,' endTime=2592000.,'),
+                fprintf(fido,'%s%i%s\n',' endTime= ',endtime,',');
+                continue;
+            end
+            if strcmpi(tline,' deltaT=1200.0,'),
+                fprintf(fido,'%s%i%s\n',' deltaT= ',MITgcmDeltaT,',');
+                continue;
+            end
+            if strcmpi(tline,' pChkptFreq=2592000.,'),
+                fprintf(fido,'%s%i%s\n',' pChkptFreq= ',endtime,',');
+                continue;
+            end
+            if strcmpi(tline,' taveFreq=2592000.,'),
+                fprintf(fido,'%s%i%s\n',' taveFreq= ',endtime,',');
+                continue;
+            end
+            if strcmpi(tline,' rhoConst=1030.,'),
+                fprintf(fido,'%s%i%s\n',' rhoConst= ',rho_water,',');
+                continue;
+            end
+            if strcmpi(tline,' rhoNil=1030.,'),
+                fprintf(fido,'%s%i%s\n',' rhoNil= ',rho_water,',');
+                continue;
+            end
+            fprintf(fido,'%s\n',tline);
+        end
+        %close  files
+        fclose(fidi);
+        fclose(fido);
+        % }}}
+        % {{{ generate initial MITgcm conditions
+
+        ds=round(endtime/MITgcmDeltaT);
+        if t>start_time
+            % Read pickup file
+            fnm=['run/pickup.' myint2str(ds,10) '.data'];
+            U=readbin(fnm,[Nx Ny Nz],1,'real*8',0);
+            V=readbin(fnm,[Nx Ny Nz],1,'real*8',1);
+            T=readbin(fnm,[Nx Ny Nz],1,'real*8',2);
+            S=readbin(fnm,[Nx Ny Nz],1,'real*8',3);
+            E=readbin(fnm,[Nx Ny],1,'real*8',8*Nz);
+            writebin('run/Salt.bin' ,S);
+            writebin('run/Theta.bin',T);
+            writebin('run/Uvel.bin' ,U);
+            writebin('run/Vvel.bin' ,V);
+            writebin('run/Etan.bin' ,E);
+        end
+
+        % }}}
+        % {{{ system call to run MITgcm
+        cd run
+        eval(['!mpirun -np ' int2str(nPx*nPy) ' ./mitgcmuv']);
+        ts=round((t+time_step)*y2s/MITgcmDeltaT);
+        eval(['!\mv STDERR.0000 STDERR_' myint2str(ts,10) '.data'])
+        eval(['!\mv STDOUT.0000 STDOUT_' myint2str(ts,10) '.data'])
+        eval(['!\cp hFacC.data hFacC_' myint2str(ts,10) '.data'])
+        eval(['!\cp icetopo.bin icetopo_' myint2str(ts,10) '.data'])
+        for fld={'S','T','U','V','Eta', ...
+                 'SHICE_heatFluxtave','SHICE_fwFluxtave'}
+            eval(['!\mv ' fld{1} '.' myint2str(ds,10) '.data ' ...
+                  fld{1} '_' myint2str(ts,10) '.data'])
+        end
+        cd ..
+        % }}}
+    end
+end
+% }}}
+
+%Configure ISSM
+% {{{ CreateMesh:
+if perform(org,'CreateMesh'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+
+    %create model:
+    md=model();
+
+    %Grab lat,long from MITgcm:
+    lat=lat(:);
+    long=long(:);
+
+    %project lat,long:
+    [x,y]=ll2xy(lat,long,-1);
+
+    index=[];
+    %  C  D
+    %  A  B
+    for j=1:Ny-1,
+        for i=1:Nx-1,
+            A=(j-1)*Nx+i;
+            B=(j-1)*Nx+i+1;
+            C=j*Nx+i;
+            D=j*Nx+i+1;
+            index(end+1,:)=[A B C];
+            index(end+1,:)=[C B D];
+        end
+    end
+
+    %fill mesh and model:
+    md=meshconvert(md,index,x,y);
+    md.mesh.lat=lat;
+    md.mesh.long=long;
+
+    savemodel(org,md);
+
+end
+% }}}
+% {{{ MeshGeometry:
+if perform(org,'MeshGeometry'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'CreateMesh');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+
+    %transfer to vertices:
+    bathymetry=bathymetry(:);
+    iceshelf_mask=iceshelf_mask(:);
+    ice_mask=ice_mask(:);
+    thickness=thickness(:);
+    draft=draft(:);
+
+    %start filling some of the fields
+    md.geometry.bed=bathymetry;
+    md.geometry.thickness=thickness;
+    md.geometry.base=md.geometry.bed;
+    pos=find(iceshelf_mask); md.geometry.base(pos)=draft(pos);
+    md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+    %nothing passes icefront:
+    pos=find(~ice_mask);
+    md.geometry.thickness(pos)=1;
+    md.geometry.surface(pos)=(1-di)*md.geometry.thickness(pos);
+    md.geometry.base(pos)=-di*md.geometry.thickness(pos);
+
+    %level sets:
+    md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1);
+    md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);
+
+    pos=find(ice_mask); md.mask.ice_levelset(pos)=-1;
+    pos=find(~iceshelf_mask & ice_mask); md.mask.ocean_levelset(pos)=1;
+
+    %identify edges of grounded ice:
+    ocean_levelset=md.mask.ocean_levelset;
+    for i=1:md.mesh.numberofelements,
+        m=ocean_levelset(md.mesh.elements(i,:));
+        if abs(sum(m))~=3,
+            pos=find(m==1); md.mask.ocean_levelset(md.mesh.elements(i,pos))=0;
+        end
+    end
+
+    %identify edges of ice:
+    ice_levelset=md.mask.ice_levelset;
+    for i=1:md.mesh.numberofelements,
+        m=ice_levelset(md.mesh.elements(i,:));
+        if abs(sum(m))~=3,
+            pos=find(m==-1); md.mask.ice_levelset(md.mesh.elements(i,pos))=0;
+        end
+    end
+
+    savemodel(org,md);
+end
+% }}}
+% {{{ ParameterizeIce:
+if perform(org,'ParameterizeIce'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'CreateMesh');
+    loaddata(org,'MeshGeometry');
+
+    %miscellaneous
+    md.miscellaneous.name='test4001';
+
+    %initial velocity:
+    md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+    md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+    md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+
+    %friction:
+    md.friction.coefficient=30*ones(md.mesh.numberofvertices,1);
+    pos=find(md.mask.ocean_levelset<=0);
+    md.friction.coefficient(pos)=0;
+    md.friction.p=ones(md.mesh.numberofelements,1);
+    md.friction.q=ones(md.mesh.numberofelements,1);
+
+    %temperatures and surface mass balance:
+    md.initialization.temperature=(273.15-20)*ones(md.mesh.numberofvertices,1);
+    md.initialization.pressure=md.materials.rho_ice*md.constants.g*(md.geometry.surface-md.geometry.base);
+    md.smb.mass_balance = [1*ones(md.mesh.numberofvertices,1); 1];
+
+    %Flow law
+    md.materials.rheology_B=paterson(md.initialization.temperature);
+    md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+    md.damage.D=zeros(md.mesh.numberofvertices,1);
+    md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+
+    %the spcs going
+    md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+    md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+    md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+    md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+    md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+    md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+
+    %deal with water:
+    pos=find(md.mask.ice_levelset>0);
+    md.stressbalance.spcvx(pos)=0;
+    md.stressbalance.spcvy(pos)=0;
+    md.stressbalance.spcvz(pos)=0;
+    md.masstransport.spcthickness(pos)=0;
+
+    %get some flux at the ice divide:
+    pos=find(md.mesh.lat==min(md.mesh.lat));
+    md.stressbalance.spcvy(pos)=200;
+
+    %deal with boundaries, excluding icefront:
+    vertex_on_boundary=zeros(md.mesh.numberofvertices,1);
+    vertex_on_boundary(md.mesh.segments(:,1:2))=1;
+    pos=find(vertex_on_boundary & md.mask.ocean_levelset<=0);
+    md.stressbalance.spcvx(pos)=md.initialization.vx(pos);
+    md.stressbalance.spcvy(pos)=md.initialization.vy(pos);
+    md.stressbalance.spcvz(pos)=md.initialization.vz(pos);
+    md.masstransport.spcthickness(pos)=md.geometry.thickness(pos);
+
+    md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+    md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+    md.thermal.spctemperature=[md.initialization.temperature; 1]; %impose observed temperature on surface
+    md.basalforcings.geothermalflux=.064*ones(md.mesh.numberofvertices,1);
+
+    %flow equations:
+    md=setflowequation(md,'SSA','all');
+
+    savemodel(org,md);
+end
+% }}}
+% {{{ RunUncoupledISSM:
+if perform(org,'RunUncoupledISSM'),
+
+    loaddata(org,'Parameters');
+    loaddata(org,'ParameterizeIce');
+
+    %timestepping:
+    md.timestepping.final_time=final_time;
+    md.timestepping.time_step=time_step;
+    md.transient.isgroundingline=0;
+    md.transient.isthermal=0;
+    md.groundingline.migration='SubelementMigration';
+    md.groundingline.melt_interpolation='SubelementMelt2';
+    md.groundingline.friction_interpolation='SubelementFriction2';
+
+    md.cluster=generic('name',oshostname(),'np',2);
+    md=solve(md,'Transient');
+
+    savemodel(org,md);
+end
+% }}}
+
+%Run MITgcm/ISSM
+% {{{ RunCoupledMITgcmISSM:
+if perform(org,'RunCoupledMITgcmISSM'),
+
+    %load data:
+    loaddata(org,'Parameters');
+    loaddata(org,'ParameterizeIce');
+    loaddata(org,'Bathymetry');
+    loaddata(org,'IceSheetGeometry');
+	 loadmodel ./Models/IceOcean.RunUncoupledISSM
+	 md.results.TransientSolution=md.results.TransientSolution(end);
+        endtime = round(MITgcmDeltaT * ...
+         floor(time_step*y2s*async_step_MITgcm_multiplier/MITgcmDeltaT));
+
+        % {{{ prepare MITgcm
+        % rename previous run directory and create new one
+        if exist ('run.old')
+            !\rm -rf run.old
+        end
+        if exist ('run')
+            !\mv run run.old
+        end
+        !\mkdir run
+        !\cp ../MITgcm/build/mitgcmuv run
+        !\cp ../MITgcm/input_remesh/* run
+        !\cp ../MITgcm/input_remesh/eedata_uncoupled run/eedata
+
+        %load data:
+        loaddata(org,'Parameters');
+
+        % initial salinity
+        S=iniSalt*ones(Nx,Ny,Nz);
+        writebin('run/Salt.bin',S);
+
+        % initial temperature
+        T=iniTheta*ones(Nx,Ny,Nz);
+        writebin('run/Theta.bin',T);
+
+        % initial velocity
+        Z=zeros(Nx,Ny,Nz);
+        writebin('run/Uvel.bin',Z);
+        writebin('run/Vvel.bin',Z);
+
+        % initial sea surface height
+        Z=zeros(Nx,Ny);
+        writebin('run/Etan.bin',Z);
+
+        % salinity boundary conditions
+        S=obcSalt*ones(Ny,Nz);
+        thk=delZ*ones(Nz,1);
+        bot=cumsum(thk);
+        ik=find(bot<=mlDepth);
+        S(:,ik)=mlSalt;
+        writebin('run/OBs.bin',S);
+
+        % temperature boundary conditions
+        T=obcTheta*ones(Ny,Nz);
+        T(:,ik)=mlTheta;
+        writebin('run/OBt.bin',T);
+
+        % zonal velocity boundary conditions
+        U=obcUvel*ones(Ny,Nz);
+        writebin('run/OBu.bin',U);
+
+        % zero boundary conditions
+        Z=zeros(Ny,Nz);
+        writebin('run/zeros.bin',Z);
+
+        % build parameter file data.obcs
+        fidi=fopen('../MITgcm/input_remesh/data.obcs','r');
+        fido=fopen('run/data.obcs','w');
+        tline = fgetl(fidi);
+        fprintf(fido,'%s\n',tline);
+        while 1
+            tline = fgetl(fidi);
+            if ~ischar(tline), break, end
+            %do the change here:
+            if strcmpi(tline,' OB_Iwest = 40*1,'),
+                fprintf(fido,'%s%i%s\n',' OB_Iwest = ',Ny,'*1,');
+                continue;
+            end
+            if strcmpi(tline,' OB_Ieast = 40*-1,'),
+                fprintf(fido,'%s%i%s\n',' OB_Ieast = ',Ny,'*-1,');
+                continue;
+            end
+            fprintf(fido,'%s\n',tline);
+        end
+        %close  files
+        fclose(fidi);
+        fclose(fido);
+
+        %save bathymetry in MITgcm run directory
+        writebin('run/bathymetry.bin',bathymetry);
+        draft=md.results.TransientSolution(end).Base;
+        pos=find(md.mask.ice_levelset>0); draft(pos)=0;
+        writebin('run/icetopo.bin',draft);
+		  shelficemass=-draft*rho_water;
+		  writebin('run/shelficemass.bin',shelficemass);
+        % }}}
+
+    % {{{ ISSM settings:
+
+    setenv('DYLD_LIBRARY_PATH', '/usr/local/gfortran/lib')
+    %timestepping:
+    md.timestepping.time_step=time_step;
+    md.cluster=generic('name',oshostname(),'np',2);
+    md.results.TransientSolution.Base=md.geometry.base;
+    md.transient.isgroundingline=0;
+    md.transient.isthermal=0;
+    md.groundingline.migration='SubelementMigration';
+    md.groundingline.melt_interpolation='SubelementMelt2';
+    md.groundingline.friction_interpolation='SubelementFriction2';
+
+    % }}}
+
+    %start looping:
+    results=md.results;
+
+    for t=0:time_step:4*time_step
+		 disp(['Year: ' num2str(t)])
+
+		 %Initialize time steps
+		 md.timestepping.final_time=t+time_step;
+		 md.timestepping.time_step=time_step;
+		 md.timestepping.start_time=t;
+
+		 %Calculate dynamic thinning and write 
+		 md.basalforcings.floatingice_melting_rate(:)=0;
+		 md.cluster=generic('name',oshostname(),'np',2);
+		 md=solve(md,'Transient');
+
+		 dmdt_icenodes=(md.results.TransientSolution(1).Thickness-md.geometry.thickness)/(md.timestepping.final_time-md.timestepping.start_time);
+		 dmdt=rho_ice/y2s*reshape(dmdt_icenodes,[Nx,Ny]);
+		 writebin('run/shelfice_dmdt.bin',dmdt);
+		 system(['cp run/shelfice_dmdt.bin run/shelfice_dmdt_' int2str(t) '.bin'])
+
+		 % {{{ system call to run MITgcm
+		 cd run
+       newline = [' niter0 = ' num2str(t*y2s/MITgcmDeltaT)];
+		 command=['!sed "s/.*niter0.*/' newline '/" data > data.temp; mv data.temp data'];
+		 eval(command)
+
+       ds=round(endtime/MITgcmDeltaT);
+       ts=round((t+time_step)*y2s/MITgcmDeltaT);
+                 
+		 eval(['!mpirun -np ' int2str(nPx*nPy) ' ./mitgcmuv']);
+		 eval(['!\mv STDERR.0000 STDERR_' myint2str(t/time_step) '.data'])
+		 eval(['!\mv STDOUT.0000 STDOUT_' myint2str(t/time_step) '.data'])
+		 eval(['!\cp hFacC.data hFacC_' myint2str(t/time_step) '.data'])
+		 eval(['!\cp icetopo.bin icetopo_' myint2str(t/time_step) '.data'])
+%		 for fld={'S','T','U','V','Eta', ...
+%				 'SHICE_heatFluxtave','SHICE_fwFluxtave'}
+%			 eval(['!\mv ' fld{1} '.' myint2str(ds,10) '.data ' ...
+%				 fld{1} '_' myint2str(t,10) '.data'])
+%		 end
+		 cd ..
+		 % }}}
+
+		 system(['cp run/SHICE_fwFluxtave.' myint2str((t+time_step)*y2s/MITgcmDeltaT,10) '.data run/melt.data'])
+%		 system(['cp run/SHICE_fwFluxtave.' myint2str((t+1)*2160,10) '.data run/melt.data'])
+%		 system(['mv run/SHICE_fwFluxtave.' myint2str((t+1)*2160,10) '.data run/melt' int2str(t) '.data'])
+
+       melt=readbin('./run/melt.data',[Nx,Ny]);
+       md.basalforcings.floatingice_melting_rate=-melt(:)*y2s/rho_ice;
+		 md=solve(md,'Transient');
+
+		 %Save results of run with melt
+		 results.TransientSolution(end+1)= md.results.TransientSolution(end);
+		 
+		 base=md.results.TransientSolution(end).Base;
+		 thickness=md.results.TransientSolution(end).Thickness;
+		 md.geometry.base=base;
+		 md.geometry.thickness=thickness;
+		 md.geometry.surface=md.geometry.base+md.geometry.thickness;
+		 md.initialization.vx=md.results.TransientSolution(end).Vx;
+		 md.initialization.vy=md.results.TransientSolution(end).Vy;
+		 md.initialization.vel=md.results.TransientSolution(end).Vel;
+		 md.initialization.pressure=md.results.TransientSolution(end).Pressure;
+
+    end
+
+    md.results=results;
+    savemodel(org,md);
+end
+% }}}
+
+%%Fields and tolerances to track changes
+%fnm=['run/SHICE_fwFluxtave.0000004380.data'];
+%melting_rate_1=readbin(fnm,[Nx Ny]);
+%fnm=['run/SHICE_fwFluxtave.0000008760.data'];
+%melting_rate_2=readbin(fnm,[Nx Ny]);
+%fnm=['run/SHICE_fwFluxtave.0000013140.data'];
+%melting_rate_3=readbin(fnm,[Nx Ny]);
+%fnm=['run/SHICE_fwFluxtave.0000017520.data'];
+%melting_rate_4=readbin(fnm,[Nx Ny]);
+%field_names     ={'Base1','Melting1','Vx2','Vy2','Thickness2','Base2','MaskOceanLevelset2','FloatingiceMeltingRate2',...
+%    'Melting2','Vx3','Vy3','Thickness3','Base3','MaskOceanLevelset3','FloatingiceMeltingRate3',...
+%    'Melting3','Vx4','Vy4','Thickness4','Base4','MaskOceanLevelset4','FloatingiceMeltingRate4','Melting4'};
+%field_tolerances={2e-13,1e-13,...
+%    8e-06,7e-06,2e-07,2e-08,3e-08,1e-13,1e-13,...
+%    8e-06,7e-06,4e-07,3e-08,5e-08,1e-13,6e-08,...
+%    8e-06,7e-06,5e-07,4e-08,8e-08,6e-08,3e-07};
+%field_values={...
+%    (md.results(1).TransientSolution(end).Base),...
+%    (melting_rate_1(:)),...
+%    (md.results(2).TransientSolution(end).Vx),...
+%    (md.results(2).TransientSolution(end).Vy),...
+%    (md.results(2).TransientSolution(end).Thickness),...
+%    (md.results(2).TransientSolution(end).Base),...
+%    (md.results(2).TransientSolution(end).MaskOceanLevelset),...
+%    (md.results(2).TransientSolution(end).FloatingiceMeltingRate),...
+%    (melting_rate_2(:)),...
+%    (md.results(3).TransientSolution(end).Vx),...
+%    (md.results(3).TransientSolution(end).Vy),...
+%    (md.results(3).TransientSolution(end).Thickness),...
+%    (md.results(3).TransientSolution(end).Base),...
+%    (md.results(3).TransientSolution(end).MaskOceanLevelset),...
+%    (md.results(3).TransientSolution(end).FloatingiceMeltingRate),...
+%    (melting_rate_3(:)),...
+%    (md.results(4).TransientSolution(end).Vx),...
+%    (md.results(4).TransientSolution(end).Vy),...
+%    (md.results(4).TransientSolution(end).Thickness),...
+%    (md.results(4).TransientSolution(end).Base),...
+%    (md.results(4).TransientSolution(end).MaskOceanLevelset),...
+%    (md.results(4).TransientSolution(end).FloatingiceMeltingRate),...
+%    (melting_rate_4(:)),...
+%    };
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test401.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test401.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test401.m	(revision 27955)
@@ -0,0 +1,17 @@
+%Test Name: SquareSheetShelfStressSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test401.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test401.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test401.py	(revision 27955)
@@ -0,0 +1,24 @@
+#Test Name: SquareSheetShelfStressSSA2d
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test402.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test402.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test402.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetShelfStressSSA3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,4,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test402.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test402.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test402.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: SquareSheetShelfStressSSA3d
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(4, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test403.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test403.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test403.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetShelfStressHO
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={3e-09,3e-09,3e-09,3e-09,3e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test403.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test403.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test403.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: SquareSheetShelfStressHO
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(5, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [3e-09, 3e-09, 3e-09, 3e-09, 3e-09]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test404.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test404.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test404.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetShelfStressFS
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'FS','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={4e-06,6e-06,2e-06,1e-06,8e-07};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test404.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test404.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test404.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: SquareSheetShelfStressFS
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'FS', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [4e-06, 6e-06, 2e-06, 1e-06, 8e-07]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test405.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test405.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test405.m	(revision 27955)
@@ -0,0 +1,20 @@
+%Test Name: SquareSheetShelfStressMHOPenalties
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'SSA','../Exp/SquareHalfRight.exp','fill','HO','coupling','penalties');
+md.settings.solver_residue_threshold = 1.e-4;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={5e-05,5e-05,5e-05,5e-05,1e-05};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test405.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test405.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test405.py	(revision 27955)
@@ -0,0 +1,27 @@
+#Test Name: SquareSheetShelfStressMHOPenalties
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(5, 1.)
+md = setflowequation(md, 'SSA', '../Exp/SquareHalfRight.exp', 'fill', 'HO', 'coupling', 'penalties')
+md.settings.solver_residue_threshold = 1.e-4
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [5e-05, 5e-05, 5e-05, 5e-05, 1e-05]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test406.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test406.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test406.m	(revision 27955)
@@ -0,0 +1,17 @@
+%Test Name: SquareSheetShelfTherStea
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,4,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0.;
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-5};
+field_values={...
+	(md.results.ThermalSolution.Temperature),...
+	(md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test406.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test406.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test406.py	(revision 27955)
@@ -0,0 +1,23 @@
+#Test Name: SquareSheetShelfTherStea
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(4, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.timestepping.time_step = 0.
+md = solve(md, 'Thermal')
+
+#Fields and tolerances to track changes
+field_names = ['Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-13, 1e-5]
+field_values = [md.results.ThermalSolution.Temperature,
+                md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test407.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test407.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test407.m	(revision 27955)
@@ -0,0 +1,21 @@
+%Test Name: SquareSheetShelfTherTran
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,4,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test407.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test407.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test407.py	(revision 27955)
@@ -0,0 +1,27 @@
+#Test Name: SquareSheetShelfTherTran
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(4, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.isstressbalance = False
+md.transient.ismasstransport = False
+md.transient.issmb = True
+md.transient.isthermal = True
+md.transient.isgroundingline = False
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test408.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test408.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test408.m	(revision 27955)
@@ -0,0 +1,69 @@
+%Test Name: SquareSheetShelfTranSSA3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.geometry.bed=md.geometry.base;
+pos=find(md.mask.ocean_levelset<0);
+md.geometry.bed(pos)=md.geometry.base(pos)-10;
+md.friction=frictioncoulomb();
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.friction.coefficientcoulomb=0.02*ones(md.mesh.numberofvertices,1);
+md.transient.isthermal=0;
+md.transient.isgroundingline=1;
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb','TotalSmb'};
+md=extrude(md,3,1);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={...
+	'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1','TotalSmb1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','FloatingArea2','TotalFloatingBmb2','TotalGroundedBmb2','TotalSmb2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','FloatingArea3','TotalFloatingBmb3','TotalGroundedBmb3','TotalSmb3'...
+};
+field_tolerances={...
+	2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13...
+};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
+	(md.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
+	(md.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).GroundedArea),...
+	(md.results.TransientSolution(3).FloatingArea),...
+	(md.results.TransientSolution(3).TotalFloatingBmb),...
+	(md.results.TransientSolution(3).TotalGroundedBmb),...
+	(md.results.TransientSolution(3).TotalSmb),...
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test408.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test408.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test408.py	(revision 27955)
@@ -0,0 +1,80 @@
+#Test Name: SquareSheetShelfTranSSA3d
+import numpy as np
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from frictioncoulomb import frictioncoulomb
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.geometry.bed = copy.deepcopy(md.geometry.base)
+pos = np.nonzero(md.mask.ocean_levelset < 0.)
+md.geometry.bed[pos] = md.geometry.bed[pos] - 10
+md.friction = frictioncoulomb()
+md.friction.coefficient = 20 * np.ones(md.mesh.numberofvertices)
+md.friction.p = 1 * np.ones(md.mesh.numberofelements)
+md.friction.q = 1 * np.ones(md.mesh.numberofelements)
+md.friction.coefficientcoulomb = 0.02 * np.ones(md.mesh.numberofvertices)
+md.transient.isthermal = False
+md.transient.isgroundingline = True
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.requested_outputs = ['default', 'GroundedArea', 'FloatingArea', 'TotalFloatingBmb', 'TotalGroundedBmb', 'TotalSmb']
+md.extrude(3, 1.)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = [
+    'Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'GroundedArea1', 'FloatingArea1', 'TotalFloatingBmb1', 'TotalGroundedBmb1', 'TotalSmb1', 
+    'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'GroundedArea2', 'FloatingArea2', 'TotalFloatingBmb2', 'TotalGroundedBmb2', 'TotalSmb2', 
+    'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'GroundedArea3', 'FloatingArea3', 'TotalFloatingBmb3', 'TotalGroundedBmb3', 'TotalSmb3'
+]
+field_tolerances = [
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 
+]
+field_values = [
+    md.results.TransientSolution[0].Vx,
+    md.results.TransientSolution[0].Vy,
+    md.results.TransientSolution[0].Vel,
+    md.results.TransientSolution[0].Pressure,
+    md.results.TransientSolution[0].Base,
+    md.results.TransientSolution[0].Surface,
+    md.results.TransientSolution[0].Thickness,
+    md.results.TransientSolution[0].GroundedArea,
+    md.results.TransientSolution[0].FloatingArea,
+    md.results.TransientSolution[0].TotalFloatingBmb,
+    md.results.TransientSolution[0].TotalGroundedBmb,
+    md.results.TransientSolution[0].TotalSmb,
+    md.results.TransientSolution[1].Vx,
+    md.results.TransientSolution[1].Vy,
+    md.results.TransientSolution[1].Vel,
+    md.results.TransientSolution[1].Pressure,
+    md.results.TransientSolution[1].Base,
+    md.results.TransientSolution[1].Surface,
+    md.results.TransientSolution[1].Thickness,
+    md.results.TransientSolution[1].GroundedArea,
+    md.results.TransientSolution[1].FloatingArea,
+    md.results.TransientSolution[1].TotalFloatingBmb,
+    md.results.TransientSolution[1].TotalGroundedBmb,
+    md.results.TransientSolution[1].TotalSmb,
+    md.results.TransientSolution[2].Vx,
+    md.results.TransientSolution[2].Vy,
+    md.results.TransientSolution[2].Vel,
+    md.results.TransientSolution[2].Pressure,
+    md.results.TransientSolution[2].Base,
+    md.results.TransientSolution[2].Surface,
+    md.results.TransientSolution[2].Thickness,
+    md.results.TransientSolution[2].GroundedArea,
+    md.results.TransientSolution[2].FloatingArea,
+    md.results.TransientSolution[2].TotalFloatingBmb,
+    md.results.TransientSolution[2].TotalGroundedBmb,
+    md.results.TransientSolution[2].TotalSmb
+]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test409.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test409.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test409.m	(revision 27955)
@@ -0,0 +1,54 @@
+%Test Name: SquareSheetShelfTranMHOPenalties
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','../Exp/SquareHalfRight.exp','fill','HO','coupling','penalties');
+md.cluster=generic('name',oshostname(),'np',1);
+md.transient.requested_outputs={'default','GroundedArea'};
+md.groundingline.melt_interpolation='SubelementMelt1';
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','GroundedArea1', ...
+				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','GroundedArea2', ...
+					   'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','GroundedArea3'};
+field_tolerances={...
+	1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-6,...
+	1e-03,1e-03,1e-02,1e-03,1e-02,1e-04,1e-01,1e-03,1e-01,1e-01,1e-6,...
+	1e-02,1e-02,1e-01,1e-02,1e-01,1e-04,1e-04,1e-04,1e-04,1e-01,1e-6};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).GroundedArea),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test409.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test409.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test409.py	(revision 27955)
@@ -0,0 +1,60 @@
+#Test Name: SquareSheetShelfTranMHOPenalties
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', '../Exp/SquareHalfRight.exp', 'fill', 'HO', 'coupling', 'penalties')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.requested_outputs = ['default', 'GroundedArea']
+md.groundingline.melt_interpolation = 'SubelementMelt1'
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Temperature1', 'BasalforcingsGroundediceMeltingRate1', 'GroundedArea1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'BasalforcingsGroundediceMeltingRate2', 'GroundedArea2',
+               'Vx3', 'Vy3', 'Vz3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'Temperature3', 'BasalforcingsGroundediceMeltingRate3', 'GroundedArea3']
+field_tolerances = [1e-05, 1e-05, 1e-05, 1e-05, 1e-05, 1e-05, 1e-05, 1e-05, 1e-05, 1e-05, 1e-6,
+                    1e-03, 1e-03, 1e-02, 1e-03, 1e-02, 1e-04, 1e-01, 1e-03, 1e-01, 1e-01, 1e-6,
+                    1e-02, 1e-02, 1e-01, 1e-02, 1e-01, 1e-04, 1e-04, 1e-04, 1e-04, 1e-01, 1e-6]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[0].GroundedArea,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[1].GroundedArea,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Temperature,
+                md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[2].GroundedArea]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test410.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test410.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test410.m	(revision 27955)
@@ -0,0 +1,22 @@
+%Test Name: SquareSheetShelfSteaSSA3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0;
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-09,1e-09,1e-08,3e-10,1e-13,5e-10,1e-06};
+field_values={...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test410.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test410.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test410.py	(revision 27955)
@@ -0,0 +1,29 @@
+#Test Name: SquareSheetShelfSteaSSA3d
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.timestepping.time_step = 0
+md = solve(md, 'Steadystate')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure', 'Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-09, 1e-09, 1e-08, 1e-09, 1e-13, 5e-10, 1e-06]
+field_values = [md.results.SteadystateSolution.Vx,
+                md.results.SteadystateSolution.Vy,
+                md.results.SteadystateSolution.Vz,
+                md.results.SteadystateSolution.Vel,
+                md.results.SteadystateSolution.Pressure,
+                md.results.SteadystateSolution.Temperature,
+                md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test411.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test411.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test411.m	(revision 27955)
@@ -0,0 +1,23 @@
+%Test Name: SquareSheetShelfSteaHO
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0;
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={2e-09,1e-09,1e-08,1e-09,1e-09,1e-08,1e-05
+};
+field_values={...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test411.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test411.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test411.py	(revision 27955)
@@ -0,0 +1,29 @@
+#Test Name: SquareSheetShelfSteaHO
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.timestepping.time_step = 0.
+md = solve(md, 'Steadystate')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure', 'Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [2e-09, 1e-09, 1e-08, 1e-09, 1e-09, 1e-08, 1e-05]
+field_values = [md.results.SteadystateSolution.Vx,
+                md.results.SteadystateSolution.Vy,
+                md.results.SteadystateSolution.Vz,
+                md.results.SteadystateSolution.Vel,
+                md.results.SteadystateSolution.Pressure,
+                md.results.SteadystateSolution.Temperature,
+                md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test412.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test412.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test412.m	(revision 27955)
@@ -0,0 +1,57 @@
+%Test Name: SquareSheetShelfDiadSSA3dDakota
+md=triangle(model(),'../Exp/Square.exp',300000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%partitioning
+partition=partitioner(md,'package','linear','npart',md.mesh.numberofvertices)-1;
+md.qmu.isdakota=1;
+
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%variables
+md.qmu.variables.rho_ice=normal_uncertain('descriptor','MaterialsRhoIce', 'mean',md.materials.rho_ice,'stddev',.01);
+md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient',...
+	'mean',ones(md.mesh.numberofvertices,1),...
+	'stddev',.01*ones(md.mesh.numberofvertices,1),...
+	'partition',partition);
+
+%responses
+md.qmu.responses.MaxVel=response_function('descriptor','MaxVel');
+
+%method
+md.qmu.method     =dakota_method('nond_l');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+
+%imperative! 
+md.stressbalance.reltol=10^-5; %tighten for qmu analysese
+
+%solve
+md=solve(md,'Stressbalance','overwrite','y');
+
+%Fields and tolerances to track changes
+md.qmu.results=md.results.dakota;
+md.results.dakota.importancefactors=importancefactors(md,'scaled_FrictionCoefficient','MaxVel',partition)';
+field_names     ={'importancefactors'};
+field_tolerances={1e-10};
+field_values={...
+         md.results.dakota.importancefactors,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test412.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test412.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test412.py	(revision 27955)
@@ -0,0 +1,74 @@
+#Test Name: SquareSheetShelfDiadSSA3dDakota
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from partitioner import *
+from importancefactors import *
+from normal_uncertain import *
+from response_function import *
+
+md = triangle(model(), '../Exp/Square.exp', 300000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+#partitioning
+npart = md.mesh.numberofvertices
+partition = partitioner(md, 'package', 'linear', 'npart', npart)[0] - 1
+md.qmu.isdakota = 1
+
+#Dakota options
+
+#dakota version
+version = IssmConfig('_DAKOTA_VERSION_')
+version = float(version[0])
+
+#variables
+md.qmu.variables.rho_ice = normal_uncertain.normal_uncertain(
+    'descriptor', 'MaterialsRhoIce',
+    'mean', md.materials.rho_ice,
+    'stddev', .01
+    )
+md.qmu.variables.drag_coefficient = normal_uncertain.normal_uncertain(
+    'descriptor', 'scaled_FrictionCoefficient',
+    'mean', np.ones((npart, 1)),
+    'stddev', .01 * np.ones((npart, 1)),
+    'partition', partition
+    )
+
+#responses
+md.qmu.responses.MaxVel = response_function.response_function('descriptor','MaxVel')
+
+#method
+md.qmu.method = dakota_method.dakota_method('nond_l')
+
+#parameters
+md.qmu.params.direct = True
+md.qmu.params.interval_type = 'forward'
+
+if version >= 6:
+    md.qmu.params.analysis_driver = 'matlab'
+    md.qmu.params.evaluation_scheduling = 'master'
+    md.qmu.params.processors_per_evaluation = 2
+else:
+    md.qmu.params.analysis_driver = 'stressbalance'
+    md.qmu.params.evaluation_concurrency = 1
+
+#imperative!
+md.stressbalance.reltol = 10**-5  #tighten for qmu analyses
+
+#solve
+md.verbose = verbose('000000000')  # this line is recommended
+md = solve(md, 'Stressbalance', 'overwrite', 'y')
+
+#Fields and tolerances to track changes
+md.qmu.results = md.results.dakota
+md.results.dakota.importancefactors = importancefactors(md, 'scaled_FrictionCoefficient', 'MaxVel', partition).T
+field_names = ['importancefactors']
+field_tolerances = [1e-10]
+field_values = [md.results.dakota.importancefactors]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test413.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test413.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test413.m	(revision 27955)
@@ -0,0 +1,57 @@
+%Test Name: SquareSheetShelfDiadSSA3dDakotaPart
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%partitioning
+npart=20;
+partition=partitioner(md,'package','chaco','npart',npart,'weighting','on')-1;
+
+%variables
+md.qmu.variables.rho_ice=normal_uncertain('descriptor','MaterialsRhoIce','mean',md.materials.rho_ice,'stddev',.01);
+md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient',...
+	'mean',ones(npart,1),...
+	'stddev',.01*ones(npart,1),...
+	'partition',partition);
+
+%responses
+md.qmu.responses.MaxVel=response_function('descriptor','MaxVel');
+
+%method
+md.qmu.method     =dakota_method('nond_l');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+%imperative!
+md.stressbalance.reltol=10^-5; %tighten for qmu analyses
+md.qmu.isdakota=1;
+
+%solve
+md=solve(md,'Stressbalance','overwrite','y');
+
+%Fields and tolerances to track changes
+md.qmu.results=md.results.dakota;
+md.results.dakota.importancefactors=importancefactors(md,'scaled_FrictionCoefficient','MaxVel',partition)';
+field_names     ={'importancefactors'};
+field_tolerances={1e-10};
+field_values={...
+         md.results.dakota.importancefactors,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test413.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test413.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test413.py	(revision 27955)
@@ -0,0 +1,73 @@
+#Test Name: SquareSheetShelfDiadSSA3dDakotaPart
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from partitioner import *
+from importancefactors import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+#Dakota options
+
+#dakota version
+version = IssmConfig('_DAKOTA_VERSION_')
+version = float(version[0])
+
+#partitioning
+npart = 20
+partition = partitioner(md, 'package', 'chaco', 'npart', npart, 'weighting', 'on')[0] - 1
+
+#variables
+md.qmu.variables.rho_ice = normal_uncertain.normal_uncertain(
+    'descriptor', 'MaterialsRhoIce',
+    'mean', md.materials.rho_ice,
+    'stddev', .01
+    )
+md.qmu.variables.drag_coefficient = normal_uncertain.normal_uncertain(
+    'descriptor', 'scaled_FrictionCoefficient',
+    'mean', np.ones((npart, 1)),
+    'stddev', .01 * np.ones((npart, 1)),
+    'partition', partition
+    )
+
+#responses
+md.qmu.responses.MaxVel = response_function.response_function('descriptor','MaxVel')
+
+#method
+md.qmu.method = dakota_method.dakota_method('nond_l')
+
+#parameters
+md.qmu.params.direct = True
+md.qmu.params.interval_type = 'forward'
+
+if version >= 6:
+    md.qmu.params.analysis_driver = 'matlab'
+    md.qmu.params.evaluation_scheduling = 'master'
+    md.qmu.params.processors_per_evaluation = 2
+else:
+    md.qmu.params.analysis_driver = 'stressbalance'
+    md.qmu.params.evaluation_concurrency = 1
+
+
+#imperative!
+md.stressbalance.reltol = 10**-5  #tighten for qmu analyses
+md.qmu.isdakota = 1
+
+#solve
+md.verbose = verbose('000000000')  # this line is recommended
+md = solve(md, 'Stressbalance', 'overwrite', 'y')
+
+#Fields and tolerances to track changes
+md.qmu.results = md.results.dakota
+md.results.dakota.importancefactors = importancefactors(md, 'scaled_FrictionCoefficient', 'MaxVel', partition).T
+field_names = ['importancefactors']
+field_tolerances = [1e-10]
+field_values = [md.results.dakota.importancefactors]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test414.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test414.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test414.m	(revision 27955)
@@ -0,0 +1,85 @@
+%Test Name: SquareSheetShelfDiadSSA3dDakotaMassFlux
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.materials.rho_ice=10^7; %involved in the mass flux, make it easy
+md.geometry.thickness(:)=1; %make it easy
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%constrain all velocities to 1 m/yr, in the y-direction
+md.stressbalance.spcvx=zeros(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=zeros(md.mesh.numberofvertices,1);
+
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%partitioning
+npart=20;
+partition=partitioner(md,'package','chaco','npart',npart,'weighting','on')-1;
+
+%variables
+md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient',...
+	'mean',ones(npart,1),...
+	'stddev',.01*ones(npart,1),...
+	'partition',partition);
+
+%responses
+md.qmu.responses.MaxVel=response_function('descriptor','MaxVel');
+md.qmu.responses.MassFlux1=response_function('descriptor','indexed_MassFlux_1');
+md.qmu.responses.MassFlux2=response_function('descriptor','indexed_MassFlux_2');
+md.qmu.responses.MassFlux3=response_function('descriptor','indexed_MassFlux_3');
+md.qmu.responses.MassFlux4=response_function('descriptor','indexed_MassFlux_4');
+md.qmu.responses.MassFlux5=response_function('descriptor','indexed_MassFlux_5');
+md.qmu.responses.MassFlux6=response_function('descriptor','indexed_MassFlux_6');
+md.qmu.responses.MassFlux7=response_function('descriptor','indexed_MassFlux_7');
+
+%mass flux profiles
+md.qmu.mass_flux_profiles={'../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp','../Exp/Square.exp'};
+md.qmu.mass_flux_profile_directory=pwd;
+
+%method
+md.qmu.method     =dakota_method('nond_l');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+md.qmu.isdakota=1;
+md.stressbalance.reltol=10^-5; %tighten for qmu analyses
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+
+%solve
+md=solve(md,'Stressbalance','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+%Fields and tolerances to track changes
+%ok, mass flux of 3 profiles should be -3 Gt/yr -3 Gt/yr and the sum, which is -6 Gt/yr
+%we recover those mass fluxes through the mean of the response.
+%also, we recover the max velo, which should be 1m/yr. 
+%we put all that data in the moments, which we will use to test for success.
+%also, check that the stddev are 0.
+md.results.dakota.moments=[];
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).mean];
+end
+for i=1:8,
+	md.results.dakota.moments=[md.results.dakota.moments md.results.dakota.dresp_out(i).stddev];
+end
+field_names     ={'moments'};
+field_tolerances={1e-11};
+field_values={...
+         md.results.dakota.moments,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test414.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test414.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test414.py	(revision 27955)
@@ -0,0 +1,97 @@
+#Test Name: SquareSheetShelfDiadSSA3dDakotaMassFlux
+import numpy as np
+from os import getcwd
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from partitioner import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.materials.rho_ice = 10**7  #involved in the mass flux, make it easy
+md.geometry.thickness[:] = 1  #make it easy
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+#constrain all velocities to 1 m / yr, in the y - direction
+md.stressbalance.spcvx = np.zeros((md.mesh.numberofvertices, ))
+md.stressbalance.spcvy = np.ones((md.mesh.numberofvertices, ))
+md.stressbalance.spcvz = np.zeros((md.mesh.numberofvertices, ))
+
+#Dakota options
+
+#dakota version
+version = IssmConfig('_DAKOTA_VERSION_')
+version = float(version[0])
+
+#partitioning
+npart = 20
+partition = partitioner(md, 'package', 'chaco', 'npart', npart, 'weighting', 'on')[0] - 1
+
+#variables
+md.qmu.variables.drag_coefficient = normal_uncertain.normal_uncertain(
+    'descriptor', 'scaled_FrictionCoefficient',
+    'mean', np.ones((npart, 1)),
+    'stddev', .01 * np.ones((npart, 1)),
+    'partition', partition
+    )
+
+#responses
+md.qmu.responses.MaxVel = response_function.response_function('descriptor','MaxVel')
+md.qmu.responses.IceVolume = response_function.response_function('descriptor','IceVolume')
+md.qmu.responses.MassFlux1 = response_function.response_function('descriptor','indexed_MassFlux_1')
+md.qmu.responses.MassFlux2 = response_function.response_function('descriptor','indexed_MassFlux_2')
+md.qmu.responses.MassFlux3 = response_function.response_function('descriptor','indexed_MassFlux_3')
+md.qmu.responses.MassFlux4 = response_function.response_function('descriptor','indexed_MassFlux_4')
+md.qmu.responses.MassFlux5 = response_function.response_function('descriptor','indexed_MassFlux_5')
+md.qmu.responses.massFlux6 = response_function.response_function('descriptor','indexed_MassFlux_6')
+md.qmu.responses.massFlux7 = response_function.response_function('descriptor','indexed_MassFlux_7')
+
+#mass flux profiles
+md.qmu.mass_flux_profiles = ['../Exp/MassFlux1.exp', '../Exp/MassFlux2.exp', '../Exp/MassFlux3.exp', '../Exp/MassFlux4.exp', '../Exp/MassFlux5.exp', '../Exp/MassFlux6.exp', '../Exp/Square.exp']
+md.qmu.mass_flux_profile_directory = getcwd()
+
+#method
+md.qmu.method = dakota_method.dakota_method('nond_l')
+
+#parameters
+md.qmu.params.direct = True
+md.qmu.params.interval_type = 'forward'
+md.qmu.isdakota = 1
+md.stressbalance.reltol = 10**-5  #tighten for qmu analyses
+
+if version >= 6:
+    md.qmu.params.analysis_driver = 'matlab'
+    md.qmu.params.evaluation_scheduling = 'master'
+    md.qmu.params.processors_per_evaluation = 2
+else:
+    md.qmu.params.analysis_driver = 'stressbalance'
+    md.qmu.params.evaluation_concurrency = 1
+
+#solve
+md.verbose = verbose('000000000')  # this line is recommended
+md = solve(md, 'Stressbalance', 'overwrite', 'y')
+md.qmu.results = md.results.dakota
+
+#Fields and tolerances to track changes
+#ok, mass flux of 3 profiles should be-3 Gt / yr - 3 Gt / yr and the sum, which is - 6 Gt / yr
+#we recover those mass fluxes through the mean of the response.
+#also, we recover the max velo, which should be 1m / yr.
+#we put all that data in the moments, which we will use to test for success.
+#also, check that the stddev are 0.
+md.results.dakota.moments = []
+for i in range(8):
+    md.results.dakota.moments.append(md.results.dakota.dresp_out[i].mean)
+
+for i in range(8):
+    md.results.dakota.moments.append(md.results.dakota.dresp_out[i].stddev)
+
+field_names = ['moments']
+field_tolerances = [1e-11]
+field_values = [md.results.dakota.moments]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test415.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test415.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test415.m	(revision 27955)
@@ -0,0 +1,39 @@
+%Test Name: SquareSheetShelfCMDragSteaSSA3d
+md=triangle(model(),'../Exp/Square.exp',170000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[103  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.timestepping.time_step=0.;
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy','Vz','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-09,1e-9,2e-10,1e-13,1e-09,1e-09,1e-09,1e-8,1e-09,1e-6};
+field_values={...
+	(md.results.SteadystateSolution.Gradient1),...
+	md.results.SteadystateSolution.J,...
+	(md.results.SteadystateSolution.FrictionCoefficient),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test415.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test415.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test415.py	(revision 27955)
@@ -0,0 +1,49 @@
+#Test Name: SquareSheetShelfCMDragSteaSSA3d
+import numpy as np
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 170000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+
+#control parameters
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['FrictionCoefficient']
+md.inversion.min_parameters = 1. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = 200. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.nsteps = 2
+md.inversion.cost_functions = [103, 501]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, 2))
+md.inversion.cost_functions_coefficients[:, 1] = 2. * 10**-7
+md.inversion.gradient_scaling = 3. * np.ones((md.inversion.nsteps, len(md.inversion.control_parameters)))
+md.inversion.maxiter_per_step = 2 * np.ones((md.inversion.nsteps))
+md.inversion.step_threshold = 0.3 * np.ones((md.inversion.nsteps))
+md.timestepping.time_step = 0.
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs = md.initialization.vy
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Steadystate')
+
+#Fields and tolerances to track changes
+field_names = ['Gradient', 'Misfits', 'FrictionCoefficient', 'Pressure', 'Vel', 'Vx', 'Vy', 'Vz', 'Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-9, 1e-9, 2e-10, 1e-13, 1e-09, 1e-09, 1e-09, 1e-8, 1e-09, 1e-6]
+field_values = [md.results.SteadystateSolution.Gradient1,
+                md.results.SteadystateSolution.J,
+                md.results.SteadystateSolution.FrictionCoefficient,
+                md.results.SteadystateSolution.Pressure,
+                md.results.SteadystateSolution.Vel,
+                md.results.SteadystateSolution.Vx,
+                md.results.SteadystateSolution.Vy,
+                md.results.SteadystateSolution.Vz,
+                md.results.SteadystateSolution.Temperature,
+                md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test416.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test416.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test416.m	(revision 27955)
@@ -0,0 +1,39 @@
+%Test Name: SquareSheetShelfCMDragSteaHO
+md=triangle(model(),'../Exp/Square.exp',170000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[102  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2*10^-7;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.3*ones(md.inversion.nsteps,1);
+md.timestepping.time_step=0.;
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy','Vz','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-08,1e-07,1e-08,1e-08,1e-08,1e-08,1e-08,1e-07,1e-08,1e-05};
+field_values={...
+	(md.results.SteadystateSolution.Gradient1),...
+	md.results.SteadystateSolution.J,...
+	(md.results.SteadystateSolution.FrictionCoefficient),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test416.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test416.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test416.py	(revision 27955)
@@ -0,0 +1,50 @@
+#Test Name: SquareSheetShelfCMDragSteaHO
+import numpy as np
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 170000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+
+#control parameters
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['FrictionCoefficient']
+md.inversion.min_parameters = 1. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = 200. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.nsteps = 2
+md.inversion.cost_functions = [102, 501]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, 2))
+md.inversion.cost_functions_coefficients[:, 1] = 2. * 10**-7
+md.inversion.gradient_scaling = 3. * np.ones((md.inversion.nsteps, len(md.inversion.control_parameters)))
+md.inversion.maxiter_per_step = 2 * np.ones((md.inversion.nsteps))
+md.inversion.step_threshold = 0.3 * np.ones((md.inversion.nsteps))
+md.timestepping.time_step = 0.
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs = md.initialization.vy
+
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Steadystate')
+
+#Fields and tolerances to track changes
+field_names = ['Gradient', 'Misfits', 'FrictionCoefficient', 'Pressure', 'Vel', 'Vx', 'Vy', 'Vz', 'Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-08, 1e-07, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-07, 1e-08, 1e-05]
+field_values = [md.results.SteadystateSolution.Gradient1,
+                md.results.SteadystateSolution.J,
+                md.results.SteadystateSolution.FrictionCoefficient,
+                md.results.SteadystateSolution.Pressure,
+                md.results.SteadystateSolution.Vel,
+                md.results.SteadystateSolution.Vx,
+                md.results.SteadystateSolution.Vy,
+                md.results.SteadystateSolution.Vz,
+                md.results.SteadystateSolution.Temperature,
+                md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test417.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test417.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test417.m	(revision 27955)
@@ -0,0 +1,93 @@
+%Test Name: SquareSheetShelfDiadSSA3dDakotaSamp
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.materials.rho_ice=10^7; %involved in the mass flux, make it easy
+md.geometry.thickness(:)=1; %make it easy
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%constrain all velocities to 1 m/yr, in the y-direction
+md.stressbalance.spcvx(:)=0;
+md.stressbalance.spcvy(:)=1;
+md.stressbalance.spcvz(:)=0;
+
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%partitioning
+npart=20;
+[partition,md]=partitioner(md,'package','chaco','npart',npart,'weighting','on');
+partition=partition-1;
+md.qmu.isdakota=1;
+
+md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient',...
+	'mean',ones(npart,1),...
+	'stddev',.01*ones(npart,1),...
+	'partition',partition);
+
+md.qmu.responses.MaxVel=response_function('descriptor','MaxVel');
+md.qmu.responses.MassFlux1=response_function('descriptor','indexed_MassFlux_1');
+md.qmu.responses.MassFlux2=response_function('descriptor','indexed_MassFlux_2');
+md.qmu.responses.MassFlux3=response_function('descriptor','indexed_MassFlux_3');
+md.qmu.responses.MassFlux4=response_function('descriptor','indexed_MassFlux_4');
+md.qmu.responses.MassFlux5=response_function('descriptor','indexed_MassFlux_5');
+md.qmu.responses.MassFlux6=response_function('descriptor','indexed_MassFlux_6');
+md.qmu.responses.MassFlux7=response_function('descriptor','indexed_MassFlux_7');
+
+%mass flux profiles
+md.qmu.mass_flux_profiles={'../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp','../Exp/Square.exp'};
+md.qmu.mass_flux_profile_directory=pwd;
+
+
+%%  nond_sampling study
+
+md.qmu.method     =dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+'seed',1234,...
+'samples',20,...
+'sample_type','lhs');
+
+%%  a variety of parameters
+md.qmu.params.interval_type='forward';
+md.qmu.params.direct=true;
+md.qmu.params.tabular_graphics_data=true;
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+
+
+md.stressbalance.reltol=10^-5; %tighten for qmu analyses
+
+md=solve(md,'Stressbalance','overwrite','y');
+
+%Fields and tolerances to track changes
+md.qmu.results=md.results.dakota;
+
+%ok, mass flux of 3 profiles should be -3 Gt/yr -3 Gt/yr and the sum, which is -6 Gt/yr
+%we recover those mass fluxes through the mean of the response.
+%also, we recover the max velo, which should be 1m/yr. 
+%we put all that data in the montecarlo field, which we will use to test for success.
+%also, check that the stddev are 0.
+md.results.dakota.montecarlo=[];
+for i=1:8,
+	md.results.dakota.montecarlo=[md.results.dakota.montecarlo md.results.dakota.dresp_out(i).mean];
+end
+for i=1:8,
+	md.results.dakota.montecarlo=[md.results.dakota.montecarlo md.results.dakota.dresp_out(i).stddev];
+end
+field_names     ={'montecarlo'};
+field_tolerances={1e-11};
+field_values={...
+         md.results.dakota.montecarlo,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test417.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test417.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test417.py	(revision 27955)
@@ -0,0 +1,104 @@
+#Test Name: SquareSheetShelfDiadSSA3dDakotaSamp
+from os import getcwd
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from partitioner import *
+from dmeth_params_set import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.materials.rho_ice = 10**7  #involved in the mass flux, make it easy
+md.geometry.thickness[:] = 1  #make it easy
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+#constrain all velocities to 1 m / yr, in the y - direction
+md.stressbalance.spcvx[:] = 0
+md.stressbalance.spcvy[:] = 1
+md.stressbalance.spcvz[:] = 0
+
+#Dakota options
+
+#dakota version
+version = IssmConfig('_DAKOTA_VERSION_')
+version = float(version[0])
+
+#partitioning
+npart = 20
+partition = partitioner(md, 'package', 'chaco', 'npart', npart, 'weighting', 'on')[0] - 1
+md.qmu.isdakota = 1
+
+#variables
+md.qmu.variables.drag_coefficient = normal_uncertain.normal_uncertain(
+    'descriptor', 'scaled_FrictionCoefficient',
+    'mean', np.ones((npart, 1)),
+    'stddev', .01 * np.ones((npart, 1)),
+    'partition', partition)
+
+#responses
+md.qmu.responses.MaxVel = response_function.response_function('descriptor', 'MaxVel')
+#md.qmu.responses.IceVolume = response_function.response_function('descriptor', 'IceVolume')  #commented for matlab consistency
+md.qmu.responses.MassFlux1 = response_function.response_function('descriptor', 'indexed_MassFlux_1')
+md.qmu.responses.MassFlux2 = response_function.response_function('descriptor', 'indexed_MassFlux_2')
+md.qmu.responses.MassFlux3 = response_function.response_function('descriptor', 'indexed_MassFlux_3')
+md.qmu.responses.MassFlux4 = response_function.response_function('descriptor', 'indexed_MassFlux_4')
+md.qmu.responses.MassFlux5 = response_function.response_function('descriptor', 'indexed_MassFlux_5')
+md.qmu.responses.massFlux6 = response_function.response_function('descriptor', 'indexed_MassFlux_6')
+md.qmu.responses.massFlux7 = response_function.response_function('descriptor', 'indexed_MassFlux_7')
+
+#mass flux profiles
+md.qmu.mass_flux_profiles = ['../Exp/MassFlux1.exp', '../Exp/MassFlux2.exp', '../Exp/MassFlux3.exp', '../Exp/MassFlux4.exp', '../Exp/MassFlux5.exp', '../Exp/MassFlux6.exp', '../Exp/Square.exp']
+md.qmu.mass_flux_profile_directory = getcwd()
+
+# nond_sampling study
+md.qmu.method = dakota_method.dakota_method('nond_samp')
+md.qmu.method = dmeth_params_set(md.qmu.method, 'seed', 1234, 'samples', 20, 'sample_type', 'lhs')
+
+# parameters
+md.qmu.params.interval_type = 'forward'
+md.qmu.params.direct = True
+md.qmu.params.tabular_graphics_data = True
+
+if version >= 6:
+    md.qmu.params.analysis_driver = 'matlab'
+    md.qmu.params.evaluation_scheduling = 'master'
+    md.qmu.params.processors_per_evaluation = 2
+else:
+    md.qmu.params.analysis_driver = 'stressbalance'
+    md.qmu.params.evaluation_concurrency = 1
+
+md.stressbalance.reltol = 10**-5  #tighten for qmu analyses
+
+#solve
+md.verbose = verbose('000000000')  # this line is recommended
+
+# There may be a pair of numpy warnings in the function true_divide,
+#       this is normal and will not affect the results
+#       See src / m / qmu / dakota_out_parse.py, function "dak_tab_out" for details
+md = solve(md, 'Stressbalance', 'overwrite', 'y')
+
+#Fields and tolerances to track changes
+md.qmu.results = md.results.dakota
+
+#ok, mass flux of 3 profiles should be-3 Gt / yr - 3 Gt / yr and the sum, which is - 6 Gt / yr
+#we recover those mass fluxes through the mean of the response.
+#also, we recover the max velo, which should be 1m / yr.
+#we put all that data in the montecarlo field, which we will use to test for success.
+#also, check that the stddev are 0.
+md.results.dakota.montecarlo = []
+for i in range(8):
+    md.results.dakota.montecarlo.append(md.results.dakota.dresp_out[i].mean)
+
+for i in range(8):
+    md.results.dakota.montecarlo.append(md.results.dakota.dresp_out[i].stddev)
+
+field_names = ['moments']
+field_tolerances = [1e-11]
+field_values = [md.results.dakota.montecarlo]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test418.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test418.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test418.m	(revision 27955)
@@ -0,0 +1,22 @@
+%Test Name: SquareSheetShelfDiadSSA3dDakotaAreaAverage
+%test partitioning, and partition averaging
+md=triangle(model(),'../Exp/Square.exp',30000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%partitioning
+npart=100;
+[partition,md]=partitioner(md,'package','chaco','npart',npart);
+partition=partition-1;
+
+vector=(1:1:md.mesh.numberofvertices)';
+vector_on_partition=AreaAverageOntoPartition(md,vector,partition);
+vector_on_nodes=vector_on_partition(partition+1);
+
+field_names     ={'vector_on_nodes'};
+field_tolerances={1e-11};
+field_values={...
+         vector_on_nodes,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test418.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test418.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test418.py	(revision 27955)
@@ -0,0 +1,47 @@
+#Test Name: SquareSheetShelfDiadSSA3dDakotaAreaAverage
+# this test may crash
+import numpy as np
+
+from AreaAverageOntoPartition import *
+from model import *
+from parameterize import *
+from partitioner import *
+from setflowequation import *
+from setmask import *
+from socket import gethostname
+from solve import *
+from triangle import *
+
+
+#test partitioning, and partition averaging
+# python cannot handle resolutions greater than 30010
+md = triangle(model(), '../Exp/Square.exp', 30000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+#partitioning
+npart = 100
+
+# Partitioner seemed to generate the following message,
+#
+#	corrupted size vs. prev_size
+#	Aborted (core dumped)
+#
+# In testing binaries,
+#
+#	malloc(): invalid next size (unsorted)
+#
+# TODO:
+# - Run valgrind and fix the above
+#
+partition = partitioner(md, 'package', 'chaco', 'npart', npart)[0] - 1
+
+vector = np.arange(1, 1 + md.mesh.numberofvertices, 1).reshape(-1, 1)
+vector_on_partition = AreaAverageOntoPartition(md, vector, partition)
+vector_on_nodes = vector_on_partition[partition]
+
+field_names = ['vector_on_nodes']
+field_tolerances = [1e-11]
+field_values = [vector_on_nodes]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test419.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test419.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test419.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetShelfStressSSAHOTiling
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'SSA','../Exp/SquareHalfRight.exp','fill','HO');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={2e-09,2e-09,1e-09,2e-09,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test419.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test419.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test419.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: SquareSheetShelfStressSSAHOTiling
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(5, 1.)
+md = setflowequation(md, 'SSA', '../Exp/SquareHalfRight.exp', 'fill', 'HO')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [2e-09, 2e-09, 1e-09, 2e-09, 1e-09]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test420.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test420.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test420.m	(revision 27955)
@@ -0,0 +1,61 @@
+%Test Name: SquareSheetShelfDakotaScaledResponse
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%partitioning
+npart=10;
+partition=partitioner(md,'package','chaco','npart',npart)-1;
+md.qmu.isdakota=1;
+
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%variables
+md.qmu.variables.rho_ice=normal_uncertain('descriptor','MaterialsRhoIce','mean',1,'stddev',.01);
+
+%responses
+md.qmu.responses.MaxVel=response_function('descriptor','scaled_Thickness','partition',partition);
+
+%method
+md.qmu.method     =dakota_method('nond_l');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+
+
+%imperative! 
+md.stressbalance.reltol=10^-5; %tighten for qmu analysese
+
+%solve
+md=solve(md,'Stressbalance','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+%test on thickness
+h=zeros(npart,1);
+for i=1:npart,
+	h(i)=md.qmu.results.dresp_out(i).mean;
+end
+
+%project onto grid
+thickness=h(partition+1);
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-10};
+field_values={thickness};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test420.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test420.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test420.py	(revision 27955)
@@ -0,0 +1,76 @@
+#Test Name: SquareSheetShelfDakotaScaledResponse
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from partitioner import *
+
+md = triangle(model(), '../Exp/Square.exp', 200000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+#partitioning
+npart = 10
+partition = partitioner(md, 'package', 'chaco', 'npart', npart)[0] - 1
+md.qmu.isdakota = 1
+
+#Dakota options
+
+#dakota version
+version = IssmConfig('_DAKOTA_VERSION_')
+version = float(version[0])
+
+#variables
+md.qmu.variables.rho_ice = normal_uncertain.normal_uncertain(
+    'descriptor', 'MaterialsRhoIce',
+    'mean', 1,
+    'stddev', .01
+    )
+
+#responses
+md.qmu.responses.MaxVel = response_function.response_function(
+    'descriptor', 'scaled_Thickness',
+    'partition', partition
+    )
+
+#method
+md.qmu.method = dakota_method.dakota_method('nond_l')
+
+#parameters
+md.qmu.params.direct = True
+md.qmu.params.interval_type = 'forward'
+
+if version >= 6:
+    md.qmu.params.analysis_driver = 'matlab'
+    md.qmu.params.evaluation_scheduling = 'master'
+    md.qmu.params.processors_per_evaluation = 2
+else:
+    md.qmu.params.analysis_driver = 'stressbalance'
+    md.qmu.params.evaluation_concurrency = 1
+
+#imperative!
+md.stressbalance.reltol = 10**-5  #tighten for qmu analysese
+
+#solve
+md.verbose = verbose('000000000')  # this line is recommended
+md = solve(md, 'Stressbalance', 'overwrite', 'y')
+md.qmu.results = md.results.dakota
+
+#test on thickness
+h = np.zeros(npart)
+for i in range(npart):
+    h[i] = md.qmu.results.dresp_out[i].mean
+
+#project onto grid
+thickness = h[partition]
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-10]
+field_values = [thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test421.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test421.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test421.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetShelfStressHOFS3dTiling
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'FS','../Exp/SquareHalfRight.exp','fill','HO');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={2e-06,2e-06,2e-05,2e-06,3e-06};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test421.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test421.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test421.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: SquareSheetShelfStressHOFS3dTiling
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(5, 1.)
+md = setflowequation(md, 'FS', '../Exp/SquareHalfRight.exp', 'fill', 'HO')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [2e-06, 2e-06, 2e-05, 2e-06, 3e-06]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test422.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test422.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test422.m	(revision 27955)
@@ -0,0 +1,20 @@
+%Test Name: SquareSheetShelfStressSSAFS3dTiling
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'FS','../Exp/SquareHalfRight.exp','fill','SSA');
+md.cluster=generic('name',oshostname(),'np',3);
+md.stressbalance.reltol=0.4;
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={4e-07,4e-07,2e-06,4e-07,5e-07};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test422.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test422.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test422.py	(revision 27955)
@@ -0,0 +1,27 @@
+#Test Name: SquareSheetShelfStressSSAFS3dTiling
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(5, 1.)
+md = setflowequation(md, 'FS', '../Exp/SquareHalfRight.exp', 'fill', 'SSA')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.stressbalance.reltol = 0.4
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [4e-07, 4e-07, 2e-06, 4e-07, 5e-07]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test423.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test423.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test423.m	(revision 27955)
@@ -0,0 +1,53 @@
+%Test Name: RoundSheetShelfGLMigrationSSA2d
+radius=1.e6;
+shelfextent=2.e5;
+
+md=roundmesh(model(),radius,50000.);
+%fix center node to 0,0
+rad=sqrt(md.mesh.x.^2+md.mesh.y.^2);
+pos=find(rad==min(rad));
+md.mesh.x(pos)=0.; md.mesh.y(pos)=0.; %the closest node to the center is changed to be exactly at the center
+xelem=mean(md.mesh.x(md.mesh.elements),2);
+yelem=mean(md.mesh.y(md.mesh.elements),2);
+rad=sqrt(xelem.^2+yelem.^2);
+flags=zeros(md.mesh.numberofelements,1);
+pos=find(rad>=(radius-shelfextent));
+flags(pos)=1;
+md=setmask(md,flags,''); 
+md=parameterize(md,'../Par/RoundSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.transient.isthermal=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+
+%test different grounding line dynamics.
+md.groundingline.migration='AggressiveMigration';
+md=solve(md,'Transient');
+element_on_iceshelf_agressive=(md.results.TransientSolution.MaskOceanLevelset);
+vel_agressive=(md.results.TransientSolution.Vel);
+
+md.groundingline.migration='SoftMigration';
+md=solve(md,'Transient');
+element_on_iceshelf_soft=(md.results.TransientSolution.MaskOceanLevelset);
+vel_soft=(md.results.TransientSolution.Vel);
+
+md.mask.ocean_levelset=md.geometry.thickness + md.materials.rho_water/md.materials.rho_ice*md.geometry.bed;
+md.groundingline.migration='SubelementMigration';
+md.groundingline.friction_interpolation='SubelementFriction1';
+md=solve(md,'Transient');
+element_on_iceshelf_subelement=(md.results.TransientSolution.MaskOceanLevelset);
+vel_subelement=(md.results.TransientSolution.Vel);
+
+md.groundingline.friction_interpolation='SubelementFriction2';
+md=solve(md,'Transient');
+element_on_iceshelf_subelement2=(md.results.TransientSolution.MaskOceanLevelset);
+vel_subelement2=(md.results.TransientSolution.Vel);
+
+%Fields and tolerances to track changes
+field_names     ={'ElementOnIceShelfAggressive','VelAggressive','ElementOnIceShelfSoft','VelSoft','ElementOnIceShelfSubelement','VelSubelement','ElementOnIceShelfSubelement2','VelSubelement2'};
+field_tolerances={1e-13,2e-12,1e-13,2e-12,1e-13,3e-12,1e-13,2e-12};
+field_values={element_on_iceshelf_agressive,vel_agressive,element_on_iceshelf_soft,vel_soft,element_on_iceshelf_subelement,vel_subelement,element_on_iceshelf_subelement2,vel_subelement2};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test423.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test423.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test423.py	(revision 27955)
@@ -0,0 +1,64 @@
+#Test Name: RoundSheetShelfGLMigrationSSA2d
+import numpy as np
+from model import *
+from socket import gethostname
+from roundmesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+radius = 1.e6
+shelfextent = 2.e5
+
+md = roundmesh(model(), radius, 50000.)
+#fix center node to 0, 0
+rad = np.sqrt(md.mesh.x**2 + md.mesh.y**2)
+pos = np.argmin(rad)
+md.mesh.x[pos] = 0.
+md.mesh.y[pos] = 0.  #the closest node to the center is changed to be exactly at the center
+xelem = np.mean(md.mesh.x[md.mesh.elements - 1], axis=1)
+yelem = np.mean(md.mesh.y[md.mesh.elements - 1], axis=1)
+rad = np.sqrt(xelem**2 + yelem**2)
+flags = np.zeros(md.mesh.numberofelements)
+pos = np.nonzero(rad >= (radius - shelfextent))
+flags[pos] = 1
+md = setmask(md, flags, '')
+md = parameterize(md, '../Par/RoundSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.transient.isthermal = False
+md.transient.ismasstransport = False
+md.transient.issmb = True
+md.transient.isstressbalance = True
+md.transient.isgroundingline = True
+
+#test different grounding line dynamics.
+md.groundingline.migration = 'AggressiveMigration'
+md = solve(md, 'Transient')
+element_on_iceshelf_agressive = md.results.TransientSolution[0].MaskOceanLevelset
+vel_agressive = md.results.TransientSolution[0].Vel
+
+md.groundingline.migration = 'SoftMigration'
+md = solve(md, 'Transient')
+element_on_iceshelf_soft = md.results.TransientSolution[0].MaskOceanLevelset
+vel_soft = md.results.TransientSolution[0].Vel
+
+md.mask.ocean_levelset = md.geometry.thickness + md.materials.rho_water / md.materials.rho_ice * md.geometry.bed
+md.groundingline.migration = 'SubelementMigration'
+md.groundingline.friction_interpolation = 'SubelementFriction1'
+md = solve(md, 'Transient')
+element_on_iceshelf_subelement = md.results.TransientSolution[0].MaskOceanLevelset
+vel_subelement = md.results.TransientSolution[0].Vel
+
+md.groundingline.friction_interpolation = 'SubelementFriction2'
+md = solve(md, 'Transient')
+element_on_iceshelf_subelement2 = md.results.TransientSolution[0].MaskOceanLevelset
+vel_subelement2 = md.results.TransientSolution[0].Vel
+
+#Fields and tolerances to track changes
+field_names = ['ElementOnIceShelfAggressive', 'VelAggressive', 'ElementOnIceShelfSoft', 'VelSoft', 'ElementOnIceShelfSubelement', 'VelSubelement', 'ElementOnIceShelfSubelement2', 'VelSubelement2']
+field_tolerances = [1e-13, 2e-13, 1e-13, 2e-13, 1e-13, 2e-13, 1e-13, 2e-13]
+field_values = [element_on_iceshelf_agressive, vel_agressive, element_on_iceshelf_soft, vel_soft, element_on_iceshelf_subelement, vel_subelement, element_on_iceshelf_subelement2, vel_subelement2]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test424.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test424.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test424.m	(revision 27955)
@@ -0,0 +1,63 @@
+%Test Name: SquareSheetShelfGroundingLine2dAggressive
+md=triangle(model(),'../Exp/Square.exp',150000.); %was 150000.
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.initialization.vx(:)=0.;
+md.initialization.vy(:)=0.;
+md.geometry.base=-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.bed =-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.thickness(:)=1000.;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md.smb.mass_balance(:)=100.;
+md.transient.isstressbalance=0;
+md.transient.isgroundingline=1;
+md.groundingline.migration='AggressiveMigration';
+md.mesh.scale_factor=1.1*ones(md.mesh.numberofvertices,1);
+md.transient.requested_outputs={'IceVolume','IceVolumeAboveFloatation','IceVolumeAboveFloatationScaled','GroundedArea','FloatingArea','GroundedAreaScaled','FloatingAreaScaled'};
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Bed1','Surface1','Thickness1','Floatingice1','IceVolume1','IceVolumeAboveFloatation1','IceVolumeAboveFloatationScaled1','GroundedArea1','GroundedAreaScaled1','FloatingArea1','FloatingAreaScaled1',...
+	'Bed2','Surface2','Thickness2','Floatingice2','IceVolume2','IceVolumeAboveFloatation2','IceVolumeAboveFloatationScaled2','GroundedArea2','GroundedAreaScaled2','FloatingArea2','FloatingAreaScaled2',...
+	'Bed3','Surface3','Thickness3','Floatingice3','IceVolume3','IceVolumeAboveFloatation3','IceVolumeAboveFloatationScaled3','GroundedArea3','GroundedAreaScaled3','FloatingArea3','FloatingAreaScaled3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).MaskOceanLevelset),...
+	(md.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(1).IceVolumeAboveFloatation),...
+	(md.results.TransientSolution(1).IceVolumeAboveFloatationScaled),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).GroundedAreaScaled),...
+	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(1).FloatingAreaScaled),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).MaskOceanLevelset),...
+	(md.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(2).IceVolumeAboveFloatation),...
+	(md.results.TransientSolution(2).IceVolumeAboveFloatationScaled),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).GroundedAreaScaled),...
+	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(2).FloatingAreaScaled),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).MaskOceanLevelset),...
+	(md.results.TransientSolution(3).IceVolume),...
+	(md.results.TransientSolution(3).IceVolumeAboveFloatation),...
+	(md.results.TransientSolution(3).IceVolumeAboveFloatationScaled),...
+	(md.results.TransientSolution(3).GroundedArea),...
+	(md.results.TransientSolution(3).GroundedAreaScaled),...
+	(md.results.TransientSolution(3).FloatingArea),...
+	(md.results.TransientSolution(3).FloatingAreaScaled),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test424.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test424.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test424.py	(revision 27955)
@@ -0,0 +1,69 @@
+#Test Name: SquareSheetShelfGroundingLine2dAggressive
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.initialization.vx[:] = 0.
+md.initialization.vy[:] = 0.
+md.geometry.base = -700. - abs(md.mesh.y - 500000.) / 1000.
+md.geometry.bed = -700. - abs(md.mesh.y - 500000.) / 1000.
+md.geometry.thickness[:] = 1000.
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md.smb.mass_balance[:] = 100.
+md.transient.isstressbalance = False
+md.transient.isgroundingline = True
+md.groundingline.migration = 'AggressiveMigration'
+md.transient.requested_outputs = ['IceVolume', 'IceVolumeAboveFloatation', 'IceVolumeAboveFloatationScaled', 'GroundedArea', 'FloatingArea', 'GroundedAreaScaled', 'FloatingAreaScaled']
+md.mesh.scale_factor = 1.1 * np.ones((md.mesh.numberofvertices))
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Bed1', 'Surface1', 'Thickness1', 'Floatingice1', 'IceVolume1', 'IceVolumeAboveFloatation1', 'IceVolumeAboveFloatationScaled1', 'GroundedArea1', 'GroundedAreaScaled1', 'FloatingArea1', 'FloatingAreaScaled1',
+               'Bed2', 'Surface2', 'Thickness2', 'Floatingice2', 'IceVolume2', 'IceVolumeAboveFloatation2', 'IceVolumeAboveFloatationScaled2', 'GroundedAred2', 'GroundedAreaScaled2', 'FloatingArea2', 'FloatingAreaScaled2',
+               'Bed3', 'Surface3', 'Thickness3', 'Floatingice3', 'IceVolume3', 'IceVolumeAboveFloatation3', 'IceVolumeAboveFloatationScaled3', 'GroundedArea3', 'GroundedAreaScaled3', 'FloatingArea3', 'FloatingAreaScaled3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].MaskOceanLevelset,
+                md.results.TransientSolution[0].IceVolume,
+                md.results.TransientSolution[0].IceVolumeAboveFloatation,
+                md.results.TransientSolution[0].IceVolumeAboveFloatationScaled,
+                md.results.TransientSolution[0].GroundedArea,
+                md.results.TransientSolution[0].GroundedAreaScaled,
+                md.results.TransientSolution[0].FloatingArea,
+                md.results.TransientSolution[0].FloatingAreaScaled,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].MaskOceanLevelset,
+                md.results.TransientSolution[1].IceVolume,
+                md.results.TransientSolution[1].IceVolumeAboveFloatation,
+                md.results.TransientSolution[1].IceVolumeAboveFloatationScaled,
+                md.results.TransientSolution[1].GroundedArea,
+                md.results.TransientSolution[1].GroundedAreaScaled,
+                md.results.TransientSolution[1].FloatingArea,
+                md.results.TransientSolution[1].FloatingAreaScaled,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].MaskOceanLevelset,
+                md.results.TransientSolution[2].IceVolume,
+                md.results.TransientSolution[2].IceVolumeAboveFloatation,
+                md.results.TransientSolution[2].IceVolumeAboveFloatationScaled,
+                md.results.TransientSolution[2].GroundedArea,
+                md.results.TransientSolution[2].GroundedAreaScaled,
+                md.results.TransientSolution[2].FloatingArea,
+                md.results.TransientSolution[2].FloatingAreaScaled]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test425.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test425.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test425.m	(revision 27955)
@@ -0,0 +1,40 @@
+%Test Name: SquareSheetShelfGroundingLine2dSoft
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.initialization.vx(:)=0.;
+md.initialization.vy(:)=0.;
+md.geometry.base=-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.bed =-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.thickness(:)=1300.;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md.smb.mass_balance(:)=-150.;
+md.transient.isstressbalance=0;
+md.transient.isgroundingline=1;
+md.groundingline.migration='SoftMigration';
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Bed1','Surface1','Thickness1','Floatingice1',...
+	'Bed2','Surface2','Thickness2','Floatingice2',...
+	'Bed3','Surface3','Thickness3','Floatingice3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).MaskOceanLevelset),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).MaskOceanLevelset),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).MaskOceanLevelset),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test425.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test425.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test425.py	(revision 27955)
@@ -0,0 +1,46 @@
+#Test Name: SquareSheetShelfGroundingLine2dSoft
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.initialization.vx[:] = 0.
+md.initialization.vy[:] = 0.
+md.geometry.base = -700. - abs(md.mesh.y - 500000.) / 1000.
+md.geometry.bed = -700. - abs(md.mesh.y - 500000.) / 1000.
+md.geometry.thickness[:] = 1300.
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md.smb.mass_balance[:] = -150.
+md.transient.isstressbalance = False
+md.transient.isgroundingline = True
+md.groundingline.migration = 'SoftMigration'
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Bed1', 'Surface1', 'Thickness1', 'Floatingice1',
+               'Bed2', 'Surface2', 'Thickness2', 'Floatingice2',
+               'Bed3', 'Surface3', 'Thickness3', 'Floatingice3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].MaskOceanLevelset,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].MaskOceanLevelset,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].MaskOceanLevelset]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test426.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test426.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test426.m	(revision 27955)
@@ -0,0 +1,68 @@
+%Test Name: SquareSheetShelfGroundingLine3dAggressive
+md=triangle(model(),'../Exp/Square.exp',350000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.initialization.vx(:)=0.;
+md.initialization.vy(:)=0.;
+md.geometry.base=-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.bed =-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.thickness(:)=1000.;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md.smb.mass_balance(:)=100.;
+md=setflowequation(md,'SSA','all');
+md.transient.isstressbalance=0;
+md.transient.isgroundingline=1;
+md.groundingline.migration='AggressiveMigration';
+md.groundingline.melt_interpolation='SubelementMelt1';
+md.mesh.scale_factor=1.1*ones(md.mesh.numberofvertices,1);
+md.transient.requested_outputs={'IceVolume','IceVolumeAboveFloatation','IceVolumeAboveFloatationScaled','GroundedArea','FloatingArea','GroundedAreaScaled','FloatingAreaScaled','IceMass'};
+md=extrude(md,3,1.);
+md.cluster=generic('name',oshostname(),'np',3);
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Bed1','Surface1','Thickness1','Floatingice1','IceVolume1','IceVolumeAboveFloatation1','IceMass1','IceVolumeAboveFloatationScaled1','GroundedArea1','GroundedAreaScaled1','FloatingArea1','FloatingAreaScaled1',...
+	'Bed2','Surface2','Thickness2','Floatingice2','IceVolume2','IceVolumeAboveFloatation2','IceMass2','IceVolumeAboveFloatationScaled2','GroundedArea2','GroundedAreaScaled2','FloatingArea2','FloatingAreaScaled2',...
+	'Bed3','Surface3','Thickness3','Floatingice3','IceVolume3','IceVolumeAboveFloatation3','IceMass3','IceVolumeAboveFloatationScaled3','GroundedArea3','GroundedAreaScaled3','FloatingArea3','FloatingAreaScaled3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-11,1e-10,2e-11,3e-11,2e-12,6e-12,2e-12,6e-12,2e-12,2e-12,6e-12,6e-12,...
+	1e-10,1e-10,1e-10,5e-11,2e-12,5e-12,2e-12,5e-12,5e-11,7e-12,7e-11,7e-11};
+field_values={...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).MaskOceanLevelset),...
+	(md.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(1).IceVolumeAboveFloatation),...
+	(md.results.TransientSolution(1).IceMass),...
+	(md.results.TransientSolution(1).IceVolumeAboveFloatationScaled),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).GroundedAreaScaled),...
+	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(1).FloatingAreaScaled),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).MaskOceanLevelset),...
+	(md.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(2).IceVolumeAboveFloatation),...
+	(md.results.TransientSolution(2).IceMass),...
+	(md.results.TransientSolution(2).IceVolumeAboveFloatationScaled),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).GroundedAreaScaled),...
+	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(2).FloatingAreaScaled),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).MaskOceanLevelset),...
+	(md.results.TransientSolution(3).IceVolume),...
+	(md.results.TransientSolution(3).IceVolumeAboveFloatation),...
+	(md.results.TransientSolution(3).IceMass),...
+	(md.results.TransientSolution(3).IceVolumeAboveFloatationScaled),...
+	(md.results.TransientSolution(3).GroundedArea),...
+	(md.results.TransientSolution(3).GroundedAreaScaled),...
+	(md.results.TransientSolution(3).FloatingArea),...
+	(md.results.TransientSolution(3).FloatingAreaScaled),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test426.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test426.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test426.py	(revision 27955)
@@ -0,0 +1,76 @@
+#Test Name: SquareSheetShelfGroundingLine3dAggressive
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 350000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.initialization.vx[:] = 0.
+md.initialization.vy[:] = 0.
+md.geometry.base = -700. - abs(md.mesh.y - 500000.) / 1000.
+md.geometry.bed = -700. - abs(md.mesh.y - 500000.) / 1000.
+md.geometry.thickness[:] = 1000.
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md.smb.mass_balance[:] = 100.
+md = setflowequation(md, 'SSA', 'all')
+md.transient.isstressbalance = False
+md.transient.isgroundingline = True
+md.groundingline.migration = 'AggressiveMigration'
+md.groundingline.melt_interpolation = 'SubelementMelt1'
+md.transient.requested_outputs = ['IceVolume', 'IceVolumeAboveFloatation', 'IceMass', 'IceVolumeAboveFloatationScaled', 'GroundedArea', 'FloatingArea', 'GroundedAreaScaled', 'FloatingAreaScaled']
+md.mesh.scale_factor = 1.1 * np.ones((md.mesh.numberofvertices))
+md.extrude(3, 1.)
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Bed1', 'Surface1', 'Thickness1', 'Floatingice1', 'IceVolume1', 'IceVolumeAboveFloatation1', 'IceMass1', 'IceVolumeAboveFloatationScaled1', 'GroundedArea1', 'GroundedAreaScaled1', 'FloatingArea1', 'FloatingAreaScaled1',
+               'Bed2', 'Surface2', 'Thickness2', 'Floatingice2', 'IceVolume2', 'IceVolumeAboveFloatation2', 'IceMass2', 'IceVolumeAboveFloatationScaled2', 'GroundedArea2', 'GroundedAreaScaled2', 'FloatingArea2', 'FloatingAreaScaled2',
+               'Bed3', 'Surface3', 'Thickness3', 'Floatingice3', 'IceVolume3', 'IceVolumeAboveFloatation3', 'IceMass3', 'IceVolumeAboveFloatationScaled3', 'GroundedArea3', 'GroundedAreaScaled3', 'FloatingArea3', 'FloatingAreaScaled3']
+
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-11, 1e-10, 2e-11, 3e-11, 2e-12, 6e-12, 2e-12, 6e-12, 2.5e-12, 2.5e-12, 8e-12, 8e-12,
+                    1e-10, 1e-10, 1e-10, 5e-11, 2e-12, 5e-12, 2e-12, 5e-12, 5e-11, 7e-12, 7e-11, 7e-11]
+
+field_values = [md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].MaskOceanLevelset,
+                md.results.TransientSolution[0].IceVolume,
+                md.results.TransientSolution[0].IceVolumeAboveFloatation,
+                md.results.TransientSolution[0].IceMass,
+                md.results.TransientSolution[0].IceVolumeAboveFloatationScaled,
+                md.results.TransientSolution[0].GroundedArea,
+                md.results.TransientSolution[0].GroundedAreaScaled,
+                md.results.TransientSolution[0].FloatingArea,
+                md.results.TransientSolution[0].FloatingAreaScaled,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].MaskOceanLevelset,
+                md.results.TransientSolution[1].IceVolume,
+                md.results.TransientSolution[1].IceVolumeAboveFloatation,
+                md.results.TransientSolution[1].IceMass,
+                md.results.TransientSolution[1].IceVolumeAboveFloatationScaled,
+                md.results.TransientSolution[1].GroundedArea,
+                md.results.TransientSolution[1].GroundedAreaScaled,
+                md.results.TransientSolution[1].FloatingArea,
+                md.results.TransientSolution[1].FloatingAreaScaled,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].MaskOceanLevelset,
+                md.results.TransientSolution[2].IceVolume,
+                md.results.TransientSolution[2].IceVolumeAboveFloatation,
+                md.results.TransientSolution[2].IceMass,
+                md.results.TransientSolution[2].IceVolumeAboveFloatationScaled,
+                md.results.TransientSolution[2].GroundedArea,
+                md.results.TransientSolution[2].GroundedAreaScaled,
+                md.results.TransientSolution[2].FloatingArea,
+                md.results.TransientSolution[2].FloatingAreaScaled]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test427.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test427.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test427.m	(revision 27955)
@@ -0,0 +1,42 @@
+%Test Name: SquareSheetShelfGroundingLine3dSoft
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.initialization.vx(:)=0.;
+md.initialization.vy(:)=0.;
+md.geometry.base=-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.bed =-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.thickness(:)=1300;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=setflowequation(md,'SSA','all');
+md=extrude(md,3,1.);
+
+md.smb.mass_balance(:)=-150;
+md.transient.isstressbalance=0;
+md.transient.isgroundingline=1;
+md.groundingline.migration='SoftMigration';
+md.groundingline.melt_interpolation='SubelementMelt1';
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Bed1','Surface1','Thickness1','Floatingice1',...
+	'Bed2','Surface2','Thickness2','Floatingice2',...
+	'Bed3','Surface3','Thickness3','Floatingice3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,...
+	5e-12,4e-12,7e-12,2e-11,...
+	1e-10,5e-11,1e-10,7e-10};
+field_values={...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).MaskOceanLevelset),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).MaskOceanLevelset),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).MaskOceanLevelset),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test427.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test427.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test427.py	(revision 27955)
@@ -0,0 +1,48 @@
+#Test Name: SquareSheetShelfGroundingLine3dSoft
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.initialization.vx[:] = 0.
+md.initialization.vy[:] = 0.
+md.geometry.base = -700. - abs(md.mesh.y - 500000.) / 1000.
+md.geometry.bed = -700. - abs(md.mesh.y - 500000.) / 1000.
+md.geometry.thickness[:] = 1300
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md = setflowequation(md, 'SSA', 'all')
+md.extrude(3, 1.)
+
+md.smb.mass_balance[:] = -150
+md.transient.isstressbalance = False
+md.transient.isgroundingline = True
+md.groundingline.migration = 'SoftMigration'
+md.groundingline.melt_interpolation = 'SubelementMelt1'
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Bed1', 'Surface1', 'Thickness1', 'Floatingice1',
+               'Bed2', 'Surface2', 'Thickness2', 'Floatingice2',
+               'Bed3', 'Surface3', 'Thickness3', 'Floatingice3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13,
+                    5e-12, 4e-12, 7e-12, 2e-11,
+                    1e-10, 5e-11, 1e-10, 7e-10]
+field_values = [md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].MaskOceanLevelset,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].MaskOceanLevelset,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].MaskOceanLevelset]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test428.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test428.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test428.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetShelfStressSSA2dNewton
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.stressbalance.isnewton=1;
+md.stressbalance.restol=0.0001;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test428.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test428.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test428.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: SquareSheetShelfStressSSA2dNewton
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.stressbalance.isnewton = 1
+md.stressbalance.restol = 0.0001
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test429.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test429.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test429.m	(revision 27955)
@@ -0,0 +1,21 @@
+%Test Name: SquareSheetShelfStressHONewton
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'HO','all');
+md.stressbalance.isnewton=1;
+md.stressbalance.restol=0.0001;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={2e-06,1e-06,1e-06,1e-06,1e-06};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test429.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test429.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test429.py	(revision 27955)
@@ -0,0 +1,28 @@
+#Test Name: SquareSheetShelfStressHONewton
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(5, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.stressbalance.isnewton = 1
+md.stressbalance.restol = 0.0001
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [2e-06, 2e-06, 1e-06, 2e-06, 1e-06]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test430.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test430.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test430.m	(revision 27955)
@@ -0,0 +1,81 @@
+%Test Name: MISMIP3D
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.initialization.vx(:)=1.;
+md.initialization.vy(:)=1.;
+md.geometry.thickness(:)=500-md.mesh.x/10000;
+md.geometry.bed =-100-md.mesh.x/1000;
+md.geometry.base=-md.geometry.thickness*md.materials.rho_ice/md.materials.rho_water;
+md.mask.ocean_levelset=md.geometry.thickness+md.materials.rho_water/md.materials.rho_ice*md.geometry.bed;
+pos=find(md.mask.ocean_levelset>=0);
+md.geometry.base(pos)=md.geometry.bed(pos);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=setflowequation(md,'SSA','all');
+
+%Boundary conditions:
+md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
+md.mask.ice_levelset(find(md.mesh.x==max(md.mesh.x)))=0;
+md.stressbalance.spcvx(:)=NaN;
+md.stressbalance.spcvy(:)=NaN;
+md.stressbalance.spcvz(:)=NaN;
+pos=find((md.mesh.y<1000000.1 & md.mesh.y>999999.9) | (md.mesh.y<0.1 & md.mesh.y>-0.1));
+md.stressbalance.spcvy(pos)=0;
+pos2=find(md.mesh.x<0.1 & md.mesh.x>-0.1);
+md.stressbalance.spcvx(pos2)=0;
+md.stressbalance.spcvy(pos2)=0;
+
+md.materials.rheology_B=1/((10^-25)^(1/3))*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_law='None';
+md.friction.coefficient(:)=sqrt(10^7)*ones(md.mesh.numberofvertices,1);
+md.friction.p=3*ones(md.mesh.numberofelements,1);
+md.smb.mass_balance(:)=1;
+md.basalforcings.groundedice_melting_rate(:)=0;
+md.basalforcings.floatingice_melting_rate(:)=30;
+md.transient.isthermal=0;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.requested_outputs={'default','BasalforcingsFloatingiceMeltingRate'};
+md.groundingline.migration='SubelementMigration';
+md.groundingline.melt_interpolation='SubelementMelt1';
+md.timestepping.final_time=30;
+md.timestepping.time_step=10;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Bed1','Surface1','Thickness1','Floatingice1','Vx1','Vy1','Pressure1','FloatingiceMeltingrate1',...
+	'Bed2','Surface2','Thickness2','Floatingice2','Vx2','Vy2','Pressure2','FloatingiceMeltingrate2',...
+	'Bed3','Surface3','Thickness3','Floatingice3','Vx3','Vy3','Pressure3','FloatingiceMeltingrate3'};
+field_tolerances={2e-11,5e-12,2e-11,1e-11,5e-10,1e-08,1e-13,1e-13,...
+	3e-11,3e-11,9e-10,7e-11,1e-09,5e-08,1e-10,1e-13,...
+	1e-10,3e-11,1e-10,7e-11,1e-09,5e-08,1e-10,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).MaskOceanLevelset),...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).MaskOceanLevelset),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).BasalforcingsFloatingiceMeltingRate),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).MaskOceanLevelset),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).BasalforcingsFloatingiceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test430.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test430.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test430.py	(revision 27955)
@@ -0,0 +1,93 @@
+#Test Name: MISMIP3D
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 100000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.initialization.vx[:] = 1.
+md.initialization.vy[:] = 1.
+md.geometry.thickness[:] = 500. - md.mesh.x / 10000.
+md.geometry.bed = -100. - md.mesh.x / 1000.
+md.geometry.base = -md.geometry.thickness * md.materials.rho_ice / md.materials.rho_water
+md.mask.ocean_levelset = md.geometry.thickness + md.materials.rho_water / md.materials.rho_ice * md.geometry.bed
+pos = np.where(md.mask.ocean_levelset >= 0.)
+md.geometry.base[pos] = md.geometry.bed[pos]
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md = setflowequation(md, 'SSA', 'all')
+
+#Boundary conditions:
+md.mask.ice_levelset = -np.ones((md.mesh.numberofvertices, ))
+md.mask.ice_levelset[np.where(md.mesh.x == max(md.mesh.x))] = 0.
+md.stressbalance.spcvx[:] = float('NaN')
+md.stressbalance.spcvy[:] = float('NaN')
+md.stressbalance.spcvz[:] = float('NaN')
+posA = np.intersect1d(np.array(np.where(md.mesh.y < 1000000.1)), np.array(np.where(md.mesh.y > 999999.9)))
+posB = np.intersect1d(np.array(np.where(md.mesh.y < 0.1)), np.array(np.where(md.mesh.y > -0.1)))
+pos = np.unique(np.concatenate((posA, posB)))
+md.stressbalance.spcvy[pos] = 0.
+pos2 = np.intersect1d(np.array(np.where(md.mesh.x < 0.1)), np.array(np.where(md.mesh.x > -0.1)))
+md.stressbalance.spcvx[pos2] = 0.
+md.stressbalance.spcvy[pos2] = 0.
+
+md.materials.rheology_B = 1. / ((10**-25)**(1. / 3.)) * np.ones((md.mesh.numberofvertices, ))
+md.materials.rheology_law = 'None'
+md.friction.coefficient[:] = np.sqrt(10**7) * np.ones((md.mesh.numberofvertices, ))
+md.friction.p = 3. * np.ones((md.mesh.numberofelements, ))
+md.smb.mass_balance[:] = 1.
+md.basalforcings.groundedice_melting_rate[:] = 0.
+md.basalforcings.floatingice_melting_rate[:] = 30.
+md.transient.isthermal = 0
+md.transient.isstressbalance = 1
+md.transient.isgroundingline = 1
+md.transient.ismasstransport = 1
+md.transient.issmb = 1
+md.transient.requested_outputs = ['default', 'BasalforcingsFloatingiceMeltingRate']
+md.groundingline.migration = 'SubelementMigration'
+md.groundingline.melt_interpolation = 'SubelementMelt1'
+md.timestepping.final_time = 30
+md.timestepping.time_step = 10
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+#print md.results.TransientSolution[0].BasalforcingsFloatingiceMeltingRate
+#print md.results.TransientSolution[1].BasalforcingsFloatingiceMeltingRate
+#print md.results.TransientSolution[2].BasalforcingsFloatingiceMeltingRate
+
+#Fields and tolerances to track changes
+field_names = ['Bed1', 'Surface1', 'Thickness1', 'Floatingice1', 'Vx1', 'Vy1', 'Pressure1', 'FloatingiceMeltingrate1',
+               'Bed2', 'Surface2', 'Thickness2', 'Floatingice2', 'Vx2', 'Vy2', 'Pressure2', 'FloatingiceMeltingrate2',
+               'Bed3', 'Surface3', 'Thickness3', 'Floatingice3', 'Vx3', 'Vy3', 'Pressure3', 'FloatingiceMeltingrate3']
+field_tolerances = [2e-11, 5e-12, 2e-11, 1e-11, 5e-10, 1e-08, 1e-13, 1e-13,
+                    3e-11, 3e-11, 9e-10, 7e-11, 1e-09, 5e-08, 1e-10, 1e-13,
+                    1e-10, 3e-11, 1e-10, 7e-11, 1e-09, 5e-08, 1e-10, 1e-13]
+field_values = [md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].MaskOceanLevelset,
+                md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].BasalforcingsFloatingiceMeltingRate,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].MaskOceanLevelset,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].BasalforcingsFloatingiceMeltingRate,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].MaskOceanLevelset,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].BasalforcingsFloatingiceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test431.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test431.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test431.m	(revision 27955)
@@ -0,0 +1,27 @@
+%Test Name: SquareSheetShelfSteaEnthalpySSA3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0.;
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','Waterfraction','Enthalpy'};
+field_tolerances={8e-4,5e-4,5e-4,5e-4,1e-13,1e-4,5e-4,5e-4};
+field_values={...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.Waterfraction),...
+	(md.results.SteadystateSolution.Enthalpy),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test431.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test431.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test431.py	(revision 27955)
@@ -0,0 +1,35 @@
+#Test Name: SquareSheetShelfSteaEnthalpySSA3d
+import numpy as np
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.timestepping.time_step = 0.
+md.thermal.isenthalpy = 1
+md.thermal.isdynamicbasalspc = 1
+md.initialization.waterfraction = np.zeros((md.mesh.numberofvertices))
+md.initialization.watercolumn = np.zeros((md.mesh.numberofvertices))
+md = solve(md, 'Steadystate')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure', 'Temperature', 'Waterfraction', 'Enthalpy']
+field_tolerances = [8e-4, 5e-4, 5e-4, 5e-4, 1e-13, 1e-4, 5e-4, 5e-4]
+field_values = [md.results.SteadystateSolution.Vx,
+                md.results.SteadystateSolution.Vy,
+                md.results.SteadystateSolution.Vz,
+                md.results.SteadystateSolution.Vel,
+                md.results.SteadystateSolution.Pressure,
+                md.results.SteadystateSolution.Temperature,
+                md.results.SteadystateSolution.Waterfraction,
+                md.results.SteadystateSolution.Enthalpy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test432.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test432.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test432.m	(revision 27955)
@@ -0,0 +1,26 @@
+%Test Name: SquareSheetShelfSteaEnthalpyHO
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0.;
+md.thermal.isenthalpy=1;
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','Waterfraction','Enthalpy'};
+field_tolerances={3e-09,1e-09,1e-09,1e-09,1e-13,2e-10,4e-10,3e-9};
+field_values={...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.Waterfraction),...
+	(md.results.SteadystateSolution.Enthalpy),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test432.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test432.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test432.py	(revision 27955)
@@ -0,0 +1,34 @@
+#Test Name: SquareSheetShelfSteaEnthalpyHO
+import numpy as np
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.timestepping.time_step = 0.
+md.thermal.isenthalpy = 1
+md.initialization.waterfraction = np.zeros((md.mesh.numberofvertices))
+md.initialization.watercolumn = np.zeros((md.mesh.numberofvertices))
+md = solve(md, 'Steadystate')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure', 'Temperature', 'Waterfraction', 'Enthalpy']
+field_tolerances = [3e-09, 1e-09, 1e-09, 1e-09, 1e-13, 2e-10, 4e-10, 3e-9]
+field_values = [md.results.SteadystateSolution.Vx,
+                md.results.SteadystateSolution.Vy,
+                md.results.SteadystateSolution.Vz,
+                md.results.SteadystateSolution.Vel,
+                md.results.SteadystateSolution.Pressure,
+                md.results.SteadystateSolution.Temperature,
+                md.results.SteadystateSolution.Waterfraction,
+                md.results.SteadystateSolution.Enthalpy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test433.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test433.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test433.m	(revision 27955)
@@ -0,0 +1,51 @@
+%Test Name: RoundSheetShelfGLMigrationSSA3d
+radius=1.e6;
+shelfextent=2.e5;
+
+md=roundmesh(model(),radius,50000.);
+%fix center node to 0,0
+rad=sqrt(md.mesh.x.^2+md.mesh.y.^2);
+pos=find(rad==min(rad));
+md.mesh.x(pos)=0.; md.mesh.y(pos)=0.; %the closest node to the center is changed to be exactly at the center
+xelem=mean(md.mesh.x(md.mesh.elements), 2);
+yelem=mean(md.mesh.y(md.mesh.elements), 2);
+rad=sqrt(xelem.^2+yelem.^2);
+flags=zeros(md.mesh.numberofelements,1);
+pos=find(rad>=(radius-shelfextent));
+flags(pos)=1;
+md=setmask(md,flags,''); 
+md=parameterize(md,'../Par/RoundSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md=extrude(md,3,1);
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.transient.isthermal=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isstressbalance=0;
+md.transient.isgroundingline=1;
+
+%test different grounding line dynamics.
+md.groundingline.migration='AggressiveMigration';
+md=solve(md,'Transient');
+element_on_iceshelf_agressive=(md.results.TransientSolution.MaskOceanLevelset);
+
+md.groundingline.migration='SoftMigration';
+md=solve(md,'Transient');
+element_on_iceshelf_soft=(md.results.TransientSolution.MaskOceanLevelset);
+
+md.groundingline.migration='SubelementMigration';
+md=solve(md,'Transient');
+element_on_iceshelf_subelement=(md.results.TransientSolution.MaskOceanLevelset);
+
+md.groundingline.migration='SubelementMigration';
+md.groundingline.friction_interpolation='SubelementFriction2';
+md.transient.isstressbalance=1;
+md=setflowequation(md,'SSA','all');
+md=solve(md,'Transient');
+element_on_iceshelf_subelement2=(md.results.TransientSolution.MaskOceanLevelset);
+
+%Fields and tolerances to track changes
+field_names     ={'ElementOnIceShelfAggressive','ElementOnIceShelfSoft','ElementOnIceShelfSubelement','ElementOnIceShelfSubelement'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={element_on_iceshelf_agressive,element_on_iceshelf_soft,element_on_iceshelf_subelement,element_on_iceshelf_subelement2};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test433.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test433.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test433.py	(revision 27955)
@@ -0,0 +1,60 @@
+#Test Name: RoundSheetShelfGLMigrationSSA3d
+import numpy as np
+from model import *
+from socket import gethostname
+from roundmesh import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+radius = 1.e6
+shelfextent = 2.e5
+
+md = roundmesh(model(), radius, 50000.)
+#fix center node to 0, 0
+rad = np.sqrt(md.mesh.x**2 + md.mesh.y**2)
+pos = np.argmin(rad)
+md.mesh.x[pos] = 0.
+md.mesh.y[pos] = 0.  #the closest node to the center is changed to be exactly at the center
+xelem = np.mean(md.mesh.x[md.mesh.elements - 1], axis=1)
+yelem = np.mean(md.mesh.y[md.mesh.elements - 1], axis=1)
+rad = np.sqrt(xelem**2 + yelem**2)
+flags = np.zeros(md.mesh.numberofelements)
+pos = np.nonzero(rad >= (radius - shelfextent))
+flags[pos] = 1
+md = setmask(md, flags, '')
+md = parameterize(md, '../Par/RoundSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.extrude(3, 1.)
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.transient.isthermal = False
+md.transient.ismasstransport = False
+md.transient.issmb = True
+md.transient.isstressbalance = False
+md.transient.isgroundingline = True
+
+#test different grounding line dynamics.
+md.groundingline.migration = 'AggressiveMigration'
+md = solve(md, 'Transient')
+element_on_iceshelf_agressive = md.results.TransientSolution[0].MaskOceanLevelset
+
+md.groundingline.migration = 'SoftMigration'
+md = solve(md, 'Transient')
+element_on_iceshelf_soft = md.results.TransientSolution[0].MaskOceanLevelset
+
+md.groundingline.migration = 'SubelementMigration'
+md = solve(md, 'Transient')
+element_on_iceshelf_subelement = md.results.TransientSolution[0].MaskOceanLevelset
+
+md.groundingline.migration = 'SubelementMigration'
+md.groundingline.friction_interpolation = 'SubelementFriction2'
+md = solve(md, 'Transient')
+element_on_iceshelf_subelement2 = md.results.TransientSolution[0].MaskOceanLevelset
+
+#Fields and tolerances to track changes
+field_names = ['ElementOnIceShelfAggressive', 'ElementOnIceShelfSoft', 'ElementOnIceShelfSubelement']
+field_tolerances = [1e-13, 1e-13, 1e-13]
+field_values = [element_on_iceshelf_agressive, element_on_iceshelf_soft, element_on_iceshelf_subelement]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test434.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test434.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test434.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: SquareSheetShelfL1L2
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,4,1.);
+md=setflowequation(md,'L1L2','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-06,1e-06,2e-07,1e-06,1e-07};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test434.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test434.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test434.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: SquareSheetShelfL1L2
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(4, 1.)
+md = setflowequation(md, 'L1L2', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [1e-06, 1e-06, 1e-06, 1e-06, 1e-07]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test435.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test435.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test435.m	(revision 27955)
@@ -0,0 +1,87 @@
+%Test Name: MISMIP3DHO
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.initialization.vx(:)=1.;
+md.initialization.vy(:)=1.;
+md.geometry.thickness(:)=500-md.mesh.x/10000;
+md.geometry.bed =-100-md.mesh.x/1000;
+md.geometry.base=-md.geometry.thickness*md.materials.rho_ice/md.materials.rho_water;
+md.mask.ocean_levelset=md.geometry.thickness+md.materials.rho_water/md.materials.rho_ice*md.geometry.bed;
+pos=find(md.mask.ocean_levelset>=0);
+md.geometry.base(pos)=md.geometry.bed(pos);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=extrude(md,4,1.);
+md=setflowequation(md,'HO','all');
+
+%Boundary conditions:
+md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
+md.mask.ice_levelset(find(md.mesh.x==max(md.mesh.x)))=0;
+md.stressbalance.spcvx(:)=NaN;
+md.stressbalance.spcvy(:)=NaN;
+md.stressbalance.spcvz(:)=NaN;
+pos=find((md.mesh.y<1000000.1 & md.mesh.y>999999.9) | (md.mesh.y<0.1 & md.mesh.y>-0.1));
+md.stressbalance.spcvy(pos)=0;
+pos2=find(md.mesh.x<0.1 & md.mesh.x>-0.1);
+md.stressbalance.spcvx(pos2)=0;
+md.stressbalance.spcvy(pos2)=0;
+
+md.materials.rheology_B=1/((10^-25)^(1/3))*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_law='None';
+md.friction.coefficient(:)=sqrt(10^7)*ones(md.mesh.numberofvertices,1);
+md.friction.p=3*ones(md.mesh.numberofelements,1);
+md.smb.mass_balance(:)=1;
+md.basalforcings.groundedice_melting_rate(:)=0;
+md.basalforcings.floatingice_melting_rate(:)=30;
+md.transient.isthermal=0;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.requested_outputs={'default','BasalforcingsFloatingiceMeltingRate'};
+md.groundingline.migration='SubelementMigration';
+md.groundingline.melt_interpolation='SubelementMelt1';
+md.timestepping.final_time=30;
+md.timestepping.time_step=10;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Bed1','Surface1','Thickness1','Floatingice1','Vx1','Vy1','Vz1','Pressure1','FloatingiceMeltingrate1',...
+	'Bed2','Surface2','Thickness2','Floatingice2','Vx2','Vy2','Vz2','Pressure2','FloatingiceMeltingrate2',...
+	'Bed3','Surface3','Thickness3','Floatingice3','Vx3','Vy3','Vz3','Pressure3','FloatingiceMeltingrate3',};
+field_tolerances={...
+	2e-11,5e-12,2e-11,1e-11,7e-10,3e-08,6e-10,1e-13,1e-13,...
+	3e-11,3e-11,9e-10,7e-11,9e-09,2e-07,1e-09,1e-10,1e-13,...
+	1e-9,2e-08,7e-09,2e-7 ,1e-03,8e-04,2e-09,1e-10,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).MaskOceanLevelset),...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).MaskOceanLevelset),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).BasalforcingsFloatingiceMeltingRate),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).MaskOceanLevelset),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).BasalforcingsFloatingiceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test435.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test435.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test435.py	(revision 27955)
@@ -0,0 +1,94 @@
+#Test Name: MISMIP3DHO
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 100000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.initialization.vx[:] = 1.
+md.initialization.vy[:] = 1.
+md.geometry.thickness[:] = 500. - md.mesh.x / 10000.
+md.geometry.bed = -100. - md.mesh.x / 1000.
+md.geometry.base = -md.geometry.thickness * md.materials.rho_ice / md.materials.rho_water
+md.mask.ocean_levelset = md.geometry.thickness + md.materials.rho_water / md.materials.rho_ice * md.geometry.bed
+pos = np.where(md.mask.ocean_levelset >= 0)
+md.geometry.base[pos] = md.geometry.bed[pos]
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md = md.extrude(4, 1.)
+md = setflowequation(md, 'HO', 'all')
+
+#Boundary conditions:
+md.mask.ice_levelset = -np.ones((md.mesh.numberofvertices, ))
+md.mask.ice_levelset[np.where(md.mesh.x == max(md.mesh.x))] = 0.
+md.stressbalance.spcvx[:] = float('Nan')
+md.stressbalance.spcvy[:] = float('Nan')
+md.stressbalance.spcvz[:] = float('Nan')
+posA = np.intersect1d(np.array(np.where(md.mesh.y < 1000000.1)), np.array(np.where(md.mesh.y > 999999.9)))
+posB = np.intersect1d(np.array(np.where(md.mesh.y < 0.1)), np.array(np.where(md.mesh.y > -0.1)))
+pos = np.unique(np.concatenate((posA, posB)))
+md.stressbalance.spcvy[pos] = 0.
+pos2 = np.intersect1d(np.array(np.where(md.mesh.x < 0.1)), np.array(np.where(md.mesh.x > -0.1)))
+md.stressbalance.spcvx[pos2] = 0.
+md.stressbalance.spcvy[pos2] = 0.
+
+md.materials.rheology_B = 1. / ((10**-25)**(1. / 3.)) * np.ones((md.mesh.numberofvertices, ))
+md.materials.rheology_law = 'None'
+md.friction.coefficient[:] = np.sqrt(1e7) * np.ones((md.mesh.numberofvertices, ))
+md.friction.p = 3. * np.ones((md.mesh.numberofelements, ))
+md.smb.mass_balance[:] = 1.
+md.basalforcings.groundedice_melting_rate[:] = 0.
+md.basalforcings.floatingice_melting_rate[:] = 30.
+md.transient.isthermal = 0
+md.transient.isstressbalance = 1
+md.transient.isgroundingline = 1
+md.transient.ismasstransport = 1
+md.transient.issmb = 1
+md.transient.requested_outputs = ['default', 'BasalforcingsFloatingiceMeltingRate']
+md.groundingline.migration = 'SubelementMigration'
+md.groundingline.melt_interpolation = 'SubelementMelt1'
+md.timestepping.final_time = 30
+md.timestepping.time_step = 10
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Bed1', 'Surface1', 'Thickness1', 'Floatingice1', 'Vx1', 'Vy1', 'Vz1', 'Pressure1', 'FloatingiceMeltingrate1',
+               'Bed2', 'Surface2', 'Thickness2', 'Floatingice2', 'Vx2', 'Vy2', 'Vz2', 'Pressure2', 'FloatingiceMeltingrate2',
+               'Bed3', 'Surface3', 'Thickness3', 'Floatingice3', 'Vx3', 'Vy3', 'Vz3', 'Pressure3', 'FloatingiceMeltingrate3']
+field_tolerances = [2e-11, 5e-12, 2e-11, 1e-11, 7e-10, 3e-08, 6e-10, 1e-13, 1e-13,
+                    3e-11, 3e-11, 9e-10, 7e-11, 9e-09, 2e-07, 1e-09, 1e-10, 1e-13,
+                    1e-9, 2e-08, 7e-09, 2e-7, 1e-03, 8e-04, 2e-09, 1e-10, 1e-13]
+field_values = [md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].MaskOceanLevelset,
+                md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].BasalforcingsFloatingiceMeltingRate,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].MaskOceanLevelset,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].BasalforcingsFloatingiceMeltingRate,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].MaskOceanLevelset,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].BasalforcingsFloatingiceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test436.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test436.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test436.m	(revision 27955)
@@ -0,0 +1,36 @@
+%Test Name: SquareSheetShelfSteaEnthalpyRheologiesHO
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0.;
+md.thermal.isenthalpy=1;
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+
+%Go solve
+field_names={};
+field_tolerances={};
+field_values={};
+for i={'LliboutryDuval', 'CuffeyTemperate'}
+	disp(' ');
+	disp(['====== Testing rheology law: ' i{1} ' =====']);
+
+	md.materials.rheology_law=i{1};
+	md=solve(md,'Steadystate');
+	field_names     ={field_names{:},['Vx' i{1}],['Vy' i{1}],['Vz' i{1}],['Vel' i{1}],['Pressure' i{1}],...
+		['Temperature' i{1}],['Waterfraction' i{1}],['Enthalpy' i{1}]};
+	field_tolerances={field_tolerances{:},2e-09,1e-09,1e-09,1e-09,1e-13,2e-10,6e-10,1e-9};
+	field_values={field_values{:},...
+		(md.results.SteadystateSolution.Vx),...
+		(md.results.SteadystateSolution.Vy),...
+		(md.results.SteadystateSolution.Vz),...
+		(md.results.SteadystateSolution.Vel),...
+		(md.results.SteadystateSolution.Pressure),...
+		(md.results.SteadystateSolution.Temperature),...
+		(md.results.SteadystateSolution.Waterfraction),...
+		(md.results.SteadystateSolution.Enthalpy),...
+		};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test436.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test436.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test436.py	(revision 27955)
@@ -0,0 +1,42 @@
+#Test Name: SquareSheetShelfSteaEnthalpyRheologiesHO
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = md.extrude(3, 2.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.timestepping.time_step = 0.
+md.thermal.isenthalpy = 1
+md.initialization.waterfraction = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.watercolumn = np.zeros((md.mesh.numberofvertices, ))
+
+#Go solve
+field_names = []
+field_tolerances = []
+field_values = []
+for i in ['LliboutryDuval', 'CuffeyTemperate']:
+    print(' ')
+    print(' ====== Testing rheology law: ' + i + ' = ')
+
+    md.materials.rheology_law = i
+    md = solve(md, 'Steadystate')
+    field_names += ['Vx' + i, 'Vy' + i, 'Vz' + i, 'Vel' + i, 'Pressure' + i,
+                    'Temperature' + i, 'Waterfraction' + i, 'Enthalpy' + i]
+    field_tolerances += [2e-09, 1e-09, 1e-09, 1e-09, 1e-13, 2e-10, 6e-10, 1e-9]
+    field_values += [md.results.SteadystateSolution.Vx,
+                     md.results.SteadystateSolution.Vy,
+                     md.results.SteadystateSolution.Vz,
+                     md.results.SteadystateSolution.Vel,
+                     md.results.SteadystateSolution.Pressure,
+                     md.results.SteadystateSolution.Temperature,
+                     md.results.SteadystateSolution.Waterfraction,
+                     md.results.SteadystateSolution.Enthalpy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test437.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test437.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test437.m	(revision 27955)
@@ -0,0 +1,80 @@
+%Test Name: ThermalEnthBasalcondsTrans
+md=triangle(model(),'../Exp/Square.exp',300000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareThermal.par');
+
+h=100.;
+md.geometry.thickness=h*ones(md.mesh.numberofvertices,1);
+md.geometry.base=-h*ones(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+md=extrude(md,41,2.);
+md=setflowequation(md,'HO','all');
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+
+%Basal forcing
+Ts=273.15-3.; Tb=273.15-1.; Tsw=Tb;
+qgeo=md.materials.thermalconductivity/max(md.geometry.thickness)*(Tb-Ts); %qgeo=kappa*(Tb-Ts)/H
+md.basalforcings.geothermalflux(find(md.mesh.vertexonbase))=qgeo;
+md.initialization.temperature=qgeo/md.materials.thermalconductivity.*(md.geometry.surface-md.mesh.z)+Ts;
+
+%Surface forcing
+pos=find(md.mesh.vertexonsurface);
+SPC_cold=NaN(md.mesh.numberofvertices,1);
+SPC_warm=NaN(md.mesh.numberofvertices,1);
+SPC_cold(pos)=Ts;
+SPC_warm(pos)=Tsw;
+md.thermal.spctemperature=SPC_cold;
+md.timestepping.time_step=5.;
+t0=0.;
+t1=10.;
+t2=100.;
+md.timestepping.final_time=400.;
+md.thermal.spctemperature=[SPC_cold SPC_cold SPC_warm SPC_warm SPC_cold];
+md.thermal.spctemperature=[md.thermal.spctemperature; t0 t1-1 t1 t2-1 t2];
+
+%Additional settings
+md.transient.ismasstransport=0;
+md.transient.isstressbalance=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.thermal.stabilization = 0;
+
+%Go solve
+md.verbose=verbose(0);
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Enthalpy1','Temperature1','Waterfraction1','BasalMeltingRate1','Watercolumn1',...
+						'Enthalpy2','Temperature2','Waterfraction2','BasalMeltingRate2','Watercolumn2',...
+						'Enthalpy3','Temperature3','Waterfraction3','BasalMeltingRate3','Watercolumn3',...
+						'Enthalpy4','Temperature4','Waterfraction4','BasalMeltingRate4','Watercolumn4'};
+field_tolerances={1.e-10,1.e-10,1.e-10,1.e-9,1.e-10,...
+						1.e-10,1.e-10,1.e-10,2.e-9,2.e-10,...
+						1.e-10,1.e-10,1.e-10,2.e-9,1.e-10,...
+						1.e-10,1.e-10,1.e-10,2.e-9,1.e-10};
+i1=1;	i2=ceil(t2/md.timestepping.time_step)+2;	i3=ceil(md.timestepping.final_time/(2.*md.timestepping.time_step));	i4=size(md.results.TransientSolution,2);
+field_values={...
+	(md.results.TransientSolution(i1).Enthalpy),...
+	(md.results.TransientSolution(i1).Temperature),...
+	(md.results.TransientSolution(i1).Waterfraction),...
+	(md.results.TransientSolution(i1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(i1).Watercolumn),...
+	(md.results.TransientSolution(i2).Enthalpy),...
+	(md.results.TransientSolution(i2).Temperature),...
+	(md.results.TransientSolution(i2).Waterfraction),...
+	(md.results.TransientSolution(i2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(i2).Watercolumn),...
+	(md.results.TransientSolution(i3).Enthalpy),...
+	(md.results.TransientSolution(i3).Temperature),...
+	(md.results.TransientSolution(i3).Waterfraction),...
+	(md.results.TransientSolution(i3).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(i3).Watercolumn),...
+	(md.results.TransientSolution(i4).Enthalpy),...
+	(md.results.TransientSolution(i4).Temperature),...
+	(md.results.TransientSolution(i4).Waterfraction),...
+	(md.results.TransientSolution(i4).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(i4).Watercolumn),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test437.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test437.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test437.py	(revision 27955)
@@ -0,0 +1,94 @@
+#Test Name: ThermalEnthBasalcondsTrans
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 300000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareThermal.py')
+
+h = 100.
+md.geometry.thickness = h * np.ones((md.mesh.numberofvertices, ))
+md.geometry.base = -h * np.ones((md.mesh.numberofvertices, ))
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+md.extrude(41, 2.)
+md = setflowequation(md, 'HO', 'all')
+md.thermal.isenthalpy = True
+md.thermal.isdynamicbasalspc = True
+
+#Basal forcing
+Ts = 273.15 - 3.
+Tb = 273.15 - 1.
+Tsw = Tb
+qgeo = md.materials.thermalconductivity / max(md.geometry.thickness) * (Tb - Ts)  #qgeo = kappa * (Tb - Ts) / H
+md.basalforcings.geothermalflux[np.where(md.mesh.vertexonbase)] = qgeo
+md.initialization.temperature = qgeo / md.materials.thermalconductivity * (md.geometry.surface - md.mesh.z) + Ts
+
+#Surface forcing
+pos = np.where(md.mesh.vertexonsurface)
+SPC_cold = float('NaN') * np.ones((md.mesh.numberofvertices, ))
+SPC_warm = float('NaN') * np.ones((md.mesh.numberofvertices, ))
+SPC_cold[pos] = Ts
+SPC_warm[pos] = Tsw
+md.thermal.spctemperature = SPC_cold
+md.timestepping.time_step = 5.
+t0 = 0.
+t1 = 10.
+t2 = 100.
+md.timestepping.final_time = 400.
+md.thermal.spctemperature = np.array([SPC_cold, SPC_cold, SPC_warm, SPC_warm, SPC_cold]).T
+md.thermal.spctemperature = np.vstack((md.thermal.spctemperature, [t0, t1 - 1, t1, t2 - 1, t2]))
+#print np.shape(md.thermal.spctemperature)
+#print md.thermal.spctemperature
+
+#Additional settings
+md.transient.ismasstransport = False
+md.transient.isstressbalance = False
+md.transient.issmb = True
+md.transient.isthermal = True
+md.thermal.stabilization = False
+
+#Go solve
+md.verbose = verbose(0)
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Enthalpy1', 'Temperature1', 'Waterfraction1', 'BasalMeltingRate1', 'Watercolumn1',
+               'Enthalpy2', 'Temperature2', 'Waterfraction2', 'BasalMeltingRate2', 'Watercolumn2',
+               'Enthalpy3', 'Temperature3', 'Waterfraction3', 'BasalMeltingRate3', 'Watercolumn3',
+               'Enthalpy4', 'Temperature4', 'Waterfraction4', 'BasalMeltingRate4', 'Watercolumn4']
+field_tolerances = [1.e-10, 1.e-10, 1.e-10, 1.e-9, 1.e-10,
+                    1.e-10, 1.e-10, 1.e-10, 2.e-9, 2.e-10,
+                    1.e-10, 1.e-10, 1.e-10, 2.e-9, 1.e-10,
+                    1.e-10, 1.e-10, 1.e-10, 2.e-9, 1.e-10]
+i1 = 0
+i2 = int(np.ceil(t2 / md.timestepping.time_step) + 2) - 1
+i3 = int(np.ceil(md.timestepping.final_time / (2. * md.timestepping.time_step))) - 1
+i4 = len(md.results.TransientSolution) - 1
+field_values = [md.results.TransientSolution[i1].Enthalpy,
+                md.results.TransientSolution[i1].Temperature,
+                md.results.TransientSolution[i1].Waterfraction,
+                md.results.TransientSolution[i1].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[i1].Watercolumn,
+                md.results.TransientSolution[i2].Enthalpy,
+                md.results.TransientSolution[i2].Temperature,
+                md.results.TransientSolution[i2].Waterfraction,
+                md.results.TransientSolution[i2].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[i2].Watercolumn,
+                md.results.TransientSolution[i3].Enthalpy,
+                md.results.TransientSolution[i3].Temperature,
+                md.results.TransientSolution[i3].Waterfraction,
+                md.results.TransientSolution[i3].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[i3].Watercolumn,
+                md.results.TransientSolution[i4].Enthalpy,
+                md.results.TransientSolution[i4].Temperature,
+                md.results.TransientSolution[i4].Waterfraction,
+                md.results.TransientSolution[i4].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[i4].Watercolumn]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test438.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test438.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test438.m	(revision 27955)
@@ -0,0 +1,39 @@
+%Test Name: TransientFrictionWaterlayer2D
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.friction=frictionwaterlayer(md.friction);
+md.friction.water_layer=zeros(md.mesh.numberofvertices,2);
+md.friction.water_layer(:,2)=1;
+md.friction.water_layer(md.mesh.numberofvertices+1,:)=[1 2];
+md.friction.f=0.8;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test438.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test438.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test438.py	(revision 27955)
@@ -0,0 +1,51 @@
+#Test Name: TransientFrictionWaterlayer2D
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from frictionwaterlayer import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.friction = frictionwaterlayer(md.friction)
+md.friction.water_layer = np.zeros((md.mesh.numberofvertices + 1, 2))
+md.friction.water_layer[:, 1] = 1.
+md.friction.water_layer[md.mesh.numberofvertices, :] = [1., 2.]
+md.friction.f = 0.8
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test439.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test439.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test439.m	(revision 27955)
@@ -0,0 +1,41 @@
+%Test Name: TransientFrictionWaterlayer3D
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,4,1);
+md=setflowequation(md,'HO','all');
+md.friction=frictionwaterlayer(md.friction);
+md.friction.water_layer=zeros(md.mesh.numberofvertices,2);
+md.friction.water_layer(:,2)=1;
+md.friction.water_layer(md.mesh.numberofvertices+1,:)=[1 2];
+md.groundingline.melt_interpolation='SubelementMelt2';
+md.friction.f=0.8;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test439.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test439.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test439.py	(revision 27955)
@@ -0,0 +1,53 @@
+#Test Name: TransientFrictionWaterlayer3D
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from frictionwaterlayer import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = md.extrude(4, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.friction = frictionwaterlayer(md.friction)
+md.friction.water_layer = np.zeros((md.mesh.numberofvertices + 1, 2))
+md.friction.water_layer[:, 1] = 1.
+md.friction.water_layer[md.mesh.numberofvertices, :] = [1., 2.]
+md.friction.f = 0.8
+md.groundingline.melt_interpolation = 'SubelementMelt2'
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3']
+field_tolerances = [2e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09,
+                    1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09,
+                    2e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test440.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test440.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test440.m	(revision 27955)
@@ -0,0 +1,59 @@
+%Test Name: SquareSheetShelfDakotaScaledResponseLinearPart
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%partitioning
+npart = md.mesh.numberofvertices;
+partition=partitioner(md,'package','linear','npart',npart)-1;
+md.qmu.isdakota=1;
+
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%variables
+md.qmu.variables.rho_ice=normal_uncertain('descriptor','MaterialsRhoIce','mean',1,'stddev',.01);
+
+%responses
+md.qmu.responses.MaxVel=response_function('descriptor','scaled_Thickness','partition',partition);
+
+%method
+md.qmu.method     =dakota_method('nond_l');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+%imperative! 
+md.stressbalance.reltol=10^-5; %tighten for qmu analysese
+
+%solve
+md=solve(md,'Stressbalance','overwrite','y');
+md.qmu.results=md.results.dakota;
+
+%test on thickness
+h=zeros(npart,1);
+for i=1:npart,
+	h(i)=md.qmu.results.dresp_out(i).mean;
+end
+
+%project onto grid
+thickness=h(partition+1);
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-10};
+field_values={thickness};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test440.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test440.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test440.py	(revision 27955)
@@ -0,0 +1,74 @@
+#Test Name: SquareSheetShelfDakotaScaledResponseLinearPart
+import numpy as np
+from socket import gethostname
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from partitioner import *
+from normal_uncertain import *
+from response_function import *
+
+md = triangle(model(), '../Exp/Square.exp', 200000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+#partitioning
+npart = md.mesh.numberofvertices
+partition = partitioner(md, 'package', 'linear', 'npart', npart)[0] - 1
+md.qmu.isdakota = 1
+
+#Dakota options
+
+#dakota version
+version = IssmConfig('_DAKOTA_VERSION_')
+version = float(version[0])
+
+#variables
+md.qmu.variables.rho_ice = normal_uncertain.normal_uncertain('descriptor', 'MaterialsRhoIce',
+                                                             'mean', 1,
+                                                             'stddev', 0.01)
+
+#responses
+md.qmu.responses.MaxVel = response_function.response_function('descriptor', 'scaled_Thickness',
+                                                              'partition', partition)
+
+#method
+md.qmu.method = dakota_method.dakota_method('nond_l')
+
+#parameters
+md.qmu.params.direct = True
+md.qmu.params.interval_type = 'forward'
+
+if version >= 6:
+    md.qmu.params.analysis_driver = 'matlab'
+    md.qmu.params.evaluation_scheduling = 'master'
+    md.qmu.params.processors_per_evaluation = 2
+else:
+    md.qmu.params.analysis_driver = 'stressbalance'
+    md.qmu.params.evaluation_concurrency = 1
+
+#imperative!
+md.stressbalance.reltol = 10**-5  #tighten for qmu analysese
+
+#solve
+md.verbose = verbose('000000000')  # this line is recommended
+md = solve(md, 'Stressbalance', 'overwrite', 'y')
+md.qmu.results = md.results.dakota
+
+#test on thickness
+h = np.zeros(npart)
+for i in range(npart):
+    h[i] = md.qmu.results.dresp_out[i].mean
+
+#project onto grid
+thickness = h[partition]
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-10]
+field_values = [thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test441.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test441.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test441.m	(revision 27955)
@@ -0,0 +1,82 @@
+%Test Name: MISMIP3D
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.initialization.vx(:)=1.;
+md.initialization.vy(:)=1.;
+md.geometry.thickness(:)=500-md.mesh.x/10000;
+md.geometry.bed =-100-md.mesh.x/1000;
+md.geometry.base=-md.geometry.thickness*md.materials.rho_ice/md.materials.rho_water;
+md.mask.ocean_levelset=md.geometry.thickness+md.materials.rho_water/md.materials.rho_ice*md.geometry.bed;
+pos=find(md.mask.ocean_levelset>=0);
+md.geometry.base(pos)=md.geometry.bed(pos);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=setflowequation(md,'SSA','all');
+
+%Boundary conditions:
+md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
+md.mask.ice_levelset(find(md.mesh.x==max(md.mesh.x)))=0;
+md.stressbalance.spcvx(:)=NaN;
+md.stressbalance.spcvy(:)=NaN;
+md.stressbalance.spcvz(:)=NaN;
+pos=find((md.mesh.y<1000000.1 & md.mesh.y>999999.9) | (md.mesh.y<0.1 & md.mesh.y>-0.1));
+md.stressbalance.spcvy(pos)=0;
+pos2=find(md.mesh.x<0.1 & md.mesh.x>-0.1);
+md.stressbalance.spcvx(pos2)=0;
+md.stressbalance.spcvy(pos2)=0;
+
+md.materials.rheology_B=1/((10^-25)^(1/3))*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_law='None';
+md.friction.coefficient(:)=sqrt(10^7)*ones(md.mesh.numberofvertices,1);
+md.friction.p=3*ones(md.mesh.numberofelements,1);
+md.smb.mass_balance(:)=1;
+md.basalforcings.groundedice_melting_rate(:)=0;
+md.basalforcings.floatingice_melting_rate(:)=30;
+md.transient.isthermal=0;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.requested_outputs={'default','BasalforcingsFloatingiceMeltingRate'};
+md.groundingline.migration='SubelementMigration';
+md.groundingline.friction_interpolation='SubelementFriction2';
+md.groundingline.melt_interpolation='SubelementMelt2';
+md.timestepping.final_time=30;
+md.timestepping.time_step=10;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Bed1','Surface1','Thickness1','Floatingice1','Vx1','Vy1','Pressure1','FloatingiceMeltingrate1',...
+	'Bed2','Surface2','Thickness2','Floatingice2','Vx2','Vy2','Pressure2','FloatingiceMeltingrate2',...
+	'Bed3','Surface3','Thickness3','Floatingice3','Vx3','Vy3','Pressure3','FloatingiceMeltingrate3'};
+field_tolerances={2e-11,5e-12,2e-11,1e-11,5e-10,1e-08,1e-13,1e-13,...
+	3e-11,3e-11,9e-10,7e-11,1e-09,5e-08,1e-10,1e-13,...
+	1e-10,3e-11,1e-10,7e-11,1e-09,5e-08,1e-10,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).MaskOceanLevelset),...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).MaskOceanLevelset),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).BasalforcingsFloatingiceMeltingRate),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).MaskOceanLevelset),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).BasalforcingsFloatingiceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test441.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test441.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test441.py	(revision 27955)
@@ -0,0 +1,91 @@
+#Test Name: MISMIP3D
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 100000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.initialization.vx[:] = 1.
+md.initialization.vy[:] = 1.
+md.geometry.thickness[:] = 500. - md.mesh.x / 10000.
+md.geometry.bed = -100. - md.mesh.x / 1000.
+md.geometry.base = -md.geometry.thickness * md.materials.rho_ice / md.materials.rho_water
+md.mask.ocean_levelset = md.geometry.thickness + md.materials.rho_water / md.materials.rho_ice * md.geometry.bed
+pos = np.array(np.where(md.mask.ocean_levelset >= 0.))
+md.geometry.base[pos] = md.geometry.bed[pos]
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md = setflowequation(md, 'SSA', 'all')
+
+#Boundary conditions:
+md.mask.ice_levelset = -np.ones((md.mesh.numberofvertices, ))
+md.mask.ice_levelset[np.where(md.mesh.x == max(md.mesh.x))] = 0.
+md.stressbalance.spcvx[:] = float('Nan')
+md.stressbalance.spcvy[:] = float('Nan')
+md.stressbalance.spcvz[:] = float('Nan')
+posA = np.intersect1d(np.array(np.where(md.mesh.y < 1000000.1)), np.array(np.where(md.mesh.y > 999999.9)))
+posB = np.intersect1d(np.array(np.where(md.mesh.y < 0.1)), np.array(np.where(md.mesh.y > -0.1)))
+pos = np.unique(np.concatenate((posA, posB)))
+md.stressbalance.spcvy[pos] = 0.
+pos2 = np.intersect1d(np.array(np.where(md.mesh.x < 0.1)), np.array(np.where(md.mesh.x > -0.1)))
+md.stressbalance.spcvx[pos2] = 0.
+md.stressbalance.spcvy[pos2] = 0.
+
+md.materials.rheology_B = 1. / ((10**-25)**(1. / 3.)) * np.ones((md.mesh.numberofvertices, ))
+md.materials.rheology_law = 'None'
+md.friction.coefficient[:] = np.sqrt(1e7) * np.ones((md.mesh.numberofvertices, ))
+md.friction.p = 3. * np.ones((md.mesh.numberofelements, ))
+md.smb.mass_balance[:] = 1.
+md.basalforcings.groundedice_melting_rate[:] = 0.
+md.basalforcings.floatingice_melting_rate[:] = 30.
+md.transient.isthermal = 0
+md.transient.isstressbalance = 1
+md.transient.isgroundingline = 1
+md.transient.ismasstransport = 1
+md.transient.issmb = 1
+md.transient.requested_outputs = ['default', 'BasalforcingsFloatingiceMeltingRate']
+md.groundingline.migration = 'SubelementMigration'
+md.groundingline.melt_interpolation = 'SubelementMelt2'
+md.groundingline.friction_interpolation = 'SubelementFriction2'
+md.timestepping.final_time = 30.
+md.timestepping.time_step = 10.
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Bed1', 'Surface1', 'Thickness1', 'Floatingice1', 'Vx1', 'Vy1', 'Pressure1', 'FloatingiceMeltingrate1',
+               'Bed2', 'Surface2', 'Thickness2', 'Floatingice2', 'Vx2', 'Vy2', 'Pressure2', 'FloatingiceMeltingrate2',
+               'Bed3', 'Surface3', 'Thickness3', 'Floatingice3', 'Vx3', 'Vy3', 'Pressure3', 'FloatingiceMeltingrate3']
+field_tolerances = [2e-11, 5e-12, 2e-11, 1e-11, 5e-10, 1e-08, 1e-13, 1e-13,
+                    3e-11, 3e-11, 9e-10, 7e-11, 1e-09, 5e-08, 1e-10, 1e-13,
+                    1e-10, 3e-11, 1e-10, 7e-11, 1e-09, 5e-08, 1e-10, 1e-13]
+field_values = [md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].MaskOceanLevelset,
+                md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].BasalforcingsFloatingiceMeltingRate,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].MaskOceanLevelset,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].BasalforcingsFloatingiceMeltingRate,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].MaskOceanLevelset,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].BasalforcingsFloatingiceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test442.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test442.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test442.m	(revision 27955)
@@ -0,0 +1,88 @@
+%Test Name: MISMIP3DHO
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.initialization.vx(:)=1.;
+md.initialization.vy(:)=1.;
+md.geometry.thickness(:)=500-md.mesh.x/10000;
+md.geometry.bed =-100-md.mesh.x/1000;
+md.geometry.base=-md.geometry.thickness*md.materials.rho_ice/md.materials.rho_water;
+md.mask.ocean_levelset=md.geometry.thickness+md.materials.rho_water/md.materials.rho_ice*md.geometry.bed;
+pos=find(md.mask.ocean_levelset>=0);
+md.geometry.base(pos)=md.geometry.bed(pos);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=extrude(md,4,1.);
+md=setflowequation(md,'HO','all');
+
+%Boundary conditions:
+md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
+md.mask.ice_levelset(find(md.mesh.x==max(md.mesh.x)))=0;
+md.stressbalance.spcvx(:)=NaN;
+md.stressbalance.spcvy(:)=NaN;
+md.stressbalance.spcvz(:)=NaN;
+pos=find((md.mesh.y<1000000.1 & md.mesh.y>999999.9) | (md.mesh.y<0.1 & md.mesh.y>-0.1));
+md.stressbalance.spcvy(pos)=0;
+pos2=find(md.mesh.x<0.1 & md.mesh.x>-0.1);
+md.stressbalance.spcvx(pos2)=0;
+md.stressbalance.spcvy(pos2)=0;
+
+md.materials.rheology_B=1/((10^-25)^(1/3))*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_law='None';
+md.friction.coefficient(:)=sqrt(10^7)*ones(md.mesh.numberofvertices,1);
+md.friction.p=3*ones(md.mesh.numberofelements,1);
+md.smb.mass_balance(:)=1;
+md.basalforcings.groundedice_melting_rate(:)=0;
+md.basalforcings.floatingice_melting_rate(:)=30;
+md.transient.isthermal=0;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.requested_outputs={'default','BasalforcingsFloatingiceMeltingRate'};
+md.groundingline.migration='SubelementMigration';
+md.groundingline.friction_interpolation='SubelementFriction2';
+md.groundingline.melt_interpolation='SubelementMelt2';
+md.timestepping.final_time=30;
+md.timestepping.time_step=10;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Bed1','Surface1','Thickness1','Floatingice1','Vx1','Vy1','Vz1','Pressure1','FloatingiceMeltingrate1',...
+	'Bed2','Surface2','Thickness2','Floatingice2','Vx2','Vy2','Vz2','Pressure2','FloatingiceMeltingrate2',...
+	'Bed3','Surface3','Thickness3','Floatingice3','Vx3','Vy3','Vz3','Pressure3','FloatingiceMeltingrate3',};
+field_tolerances={...
+	2e-11,5e-12,2e-11,1e-11,5e-10,3e-08,6e-10,1e-13,1e-13,...
+	5e-09,5e-09,5e-09,5e-09,9e-05,9e-05,9e-05,5e-09,1e-13,...
+	1e-08,3e-08,7e-09,2e-07,1e-03,8e-04,2e-09,1e-08,4e-10};
+field_values={...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).MaskOceanLevelset),...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).MaskOceanLevelset),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).BasalforcingsFloatingiceMeltingRate),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).MaskOceanLevelset),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).BasalforcingsFloatingiceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test442.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test442.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test442.py	(revision 27955)
@@ -0,0 +1,95 @@
+#Test Name: MISMIP3DHO
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 100000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.initialization.vx[:] = 1.
+md.initialization.vy[:] = 1.
+md.geometry.thickness[:] = 500. - md.mesh.x / 10000.
+md.geometry.bed = -100. - md.mesh.x / 1000.
+md.geometry.base = -md.geometry.thickness * md.materials.rho_ice / md.materials.rho_water
+md.mask.ocean_levelset = md.geometry.thickness + md.materials.rho_water / md.materials.rho_ice * md.geometry.bed
+pos = np.where(md.mask.ocean_levelset >= 0.)
+md.geometry.base[pos] = md.geometry.bed[pos]
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md = md.extrude(4, 1.)
+md = setflowequation(md, 'HO', 'all')
+
+#Boundary conditions:
+md.mask.ice_levelset = -np.ones((md.mesh.numberofvertices, ))
+md.mask.ice_levelset[np.where(md.mesh.x == max(md.mesh.x))] = 0.
+md.stressbalance.spcvx[:] = float('Nan')
+md.stressbalance.spcvy[:] = float('Nan')
+md.stressbalance.spcvz[:] = float('Nan')
+posA = np.intersect1d(np.array(np.where(md.mesh.y < 1000000.1)), np.array(np.where(md.mesh.y > 999999.9)))
+posB = np.intersect1d(np.array(np.where(md.mesh.y < 0.1)), np.array(np.where(md.mesh.y > -0.1)))
+pos = np.unique(np.concatenate((posA, posB)))
+md.stressbalance.spcvy[pos] = 0.
+pos2 = np.intersect1d(np.array(np.where(md.mesh.x < 0.1)), np.array(np.where(md.mesh.x > -0.1)))
+md.stressbalance.spcvx[pos2] = 0.
+md.stressbalance.spcvy[pos2] = 0.
+
+md.materials.rheology_B = 1. / ((10**-25)**(1. / 3.)) * np.ones((md.mesh.numberofvertices, ))
+md.materials.rheology_law = 'None'
+md.friction.coefficient[:] = np.sqrt(1e7) * np.ones((md.mesh.numberofvertices, ))
+md.friction.p = 3. * np.ones((md.mesh.numberofelements, ))
+md.smb.mass_balance[:] = 1.
+md.basalforcings.groundedice_melting_rate[:] = 0.
+md.basalforcings.floatingice_melting_rate[:] = 30.
+md.transient.isthermal = 0
+md.transient.isstressbalance = 1
+md.transient.isgroundingline = 1
+md.transient.ismasstransport = 1
+md.transient.issmb = 1
+md.transient.requested_outputs = ['default', 'BasalforcingsFloatingiceMeltingRate']
+md.groundingline.migration = 'SubelementMigration'
+md.groundingline.friction_interpolation = 'SubelementFriction2'
+md.groundingline.melt_interpolation = 'SubelementMelt2'
+md.timestepping.final_time = 30
+md.timestepping.time_step = 10
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Bed1', 'Surface1', 'Thickness1', 'Floatingice1', 'Vx1', 'Vy1', 'Vz1', 'Pressure1', 'FloatingiceMeltingrate1',
+               'Bed2', 'Surface2', 'Thickness2', 'Floatingice2', 'Vx2', 'Vy2', 'Vz2', 'Pressure2', 'FloatingiceMeltingrate2',
+               'Bed3', 'Surface3', 'Thickness3', 'Floatingice3', 'Vx3', 'Vy3', 'Vz3', 'Pressure3', 'FloatingiceMeltingrate3']
+field_tolerances = [2e-11, 5e-12, 2e-11, 1e-11, 5e-10, 3e-08, 6e-10, 1e-13, 1e-13,
+                    5e-09, 5e-09, 5e-09, 5e-09, 9e-05, 9e-05, 9e-05, 5e-09, 1e-13,
+                    1e-08, 3e-08, 7e-09, 2e-07, 1e-03, 8e-04, 2e-09, 1e-08, 4e-10]
+field_values = [md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].MaskOceanLevelset,
+                md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].BasalforcingsFloatingiceMeltingRate,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].MaskOceanLevelset,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].BasalforcingsFloatingiceMeltingRate,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].MaskOceanLevelset,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vz,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].BasalforcingsFloatingiceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test443.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test443.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test443.m	(revision 27955)
@@ -0,0 +1,100 @@
+%Test Name: SquareSheetShelfTranSSA3dAggressiveRegionalOutput
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.geometry.bed=md.geometry.base;
+pos=find(md.mask.ocean_levelset<0);
+md.geometry.bed(pos)=md.geometry.base(pos)-10;
+md.friction=frictioncoulomb();
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.friction.coefficientcoulomb=0.02*ones(md.mesh.numberofvertices,1);
+md.transient.isthermal=0;
+md.transient.isgroundingline=1;
+md.groundingline.migration='AggressiveMigration';
+md.mesh.scale_factor=1.1*ones(md.mesh.numberofvertices,1);
+
+md.settings.output_frequency=2;
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+regionalmask=zeros(md.mesh.numberofvertices,1);
+in=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,'../Exp/SquareHalfRight.exp','node',1);
+regionalmask(find(in))=1;
+md.transient.requested_outputs={'default','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1','TotalSmb1',...
+	'IceMass1','IceVolume1','IceVolumeAboveFloatation1','IceVolumeAboveFloatation2','IceVolumeAboveFloatation',...
+	'IceMassScaled1','IceVolumeScaled1','IceVolumeAboveFloatationScaled1','IceVolumeAboveFloatationScaled2'};
+md.outputdefinition.definitions{1}=regionaloutput('name','GroundedArea1','outputnamestring','GroundedArea','mask',regionalmask,...
+	'definitionstring','Outputdefinition1');
+md.outputdefinition.definitions{2}=regionaloutput('name','FloatingArea1','outputnamestring','FloatingArea','mask',regionalmask,...
+	'definitionstring','Outputdefinition2');
+md.outputdefinition.definitions{3}=regionaloutput('name','TotalFloatingBmb1','outputnamestring','TotalFloatingBmb','mask',regionalmask,...
+	'definitionstring','Outputdefinition3');
+md.outputdefinition.definitions{4}=regionaloutput('name','TotalGroundedBmb1','outputnamestring','TotalGroundedBmb','mask',regionalmask,...
+	'definitionstring','Outputdefinition4');
+md.outputdefinition.definitions{5}=regionaloutput('name','IceMass1','outputnamestring','IceMass','mask',regionalmask,...
+	'definitionstring','Outputdefinition5');
+md.outputdefinition.definitions{6}=regionaloutput('name','IceVolume1','outputnamestring','IceVolume','mask',regionalmask,...
+	'definitionstring','Outputdefinition6');
+md.outputdefinition.definitions{7}=regionaloutput('name','IceVolumeAboveFloatation1','outputnamestring','IceVolumeAboveFloatation','mask',regionalmask,...
+	'definitionstring','Outputdefinition7');
+md.outputdefinition.definitions{8}=regionaloutput('name','TotalSmb1','outputnamestring','TotalSmb','mask',regionalmask,...
+	'definitionstring','Outputdefinition8');
+md.outputdefinition.definitions{9}=regionaloutput('name','IceVolumeAboveFloatation2','outputnamestring','IceVolumeAboveFloatation',...
+	'maskexpstring','../Exp/SquareHalfRight.exp','definitionstring','Outputdefinition9','model',md);
+md.outputdefinition.definitions{10}=regionaloutput('name','IceMassScaled1','outputnamestring','IceMassScaled','mask',regionalmask,...
+	'definitionstring','Outputdefinition10');
+md.outputdefinition.definitions{11}=regionaloutput('name','IceVolumeScaled1','outputnamestring','IceVolumeScaled','mask',regionalmask,...
+	'definitionstring','Outputdefinition11');
+md.outputdefinition.definitions{12}=regionaloutput('name','IceVolumeAboveFloatationScaled1','outputnamestring','IceVolumeAboveFloatationScaled','mask',regionalmask,...
+	'definitionstring','Outputdefinition12');
+md.outputdefinition.definitions{13}=regionaloutput('name','IceVolumeAboveFloatationScaled2','outputnamestring','IceVolumeAboveFloatationScaled',...
+	'maskexpstring','../Exp/SquareHalfRight.exp','definitionstring','Outputdefinition13','model',md);
+
+md=extrude(md,3,1);
+md2=collapse(md);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'IceMass1','IceVolume1','IceVolumeAboveFloatation1','IceVolumeAboveFloatation21',...
+	'Thickness1','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1','TotalSmb1',...
+   'IceMassScaled1','IceVolumeScaled1','IceVolumeAboveFloatationScaled1','IceVolumeAboveFloatationScaled21',...
+	'IceMass3','IceVolume3','IceVolumeAboveFloatation3','IceVolumeAboveFloatation23',...
+	'Thickness3','GroundedArea3','FloatingArea3','TotalFloatingBmb3','TotalGroundedBmb3','TotalSmb3',...
+	'IceMassScaled3','IceVolumeScaled3','IceVolumeAboveFloatationScaled3','IceVolumeAboveFloatationScaled23',...
+	'ExtrudedMask','CollapsedMask'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).IceMass1),...
+	(md.results.TransientSolution(1).IceVolume1),...
+	(md.results.TransientSolution(1).IceVolumeAboveFloatation1),...
+	(md.results.TransientSolution(1).IceVolumeAboveFloatation2),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).GroundedArea1),...
+	(md.results.TransientSolution(1).FloatingArea1),...
+	(md.results.TransientSolution(1).TotalFloatingBmb1),...
+	(md.results.TransientSolution(1).TotalGroundedBmb1),...
+	(md.results.TransientSolution(1).TotalSmb1),...
+	(md.results.TransientSolution(1).IceMassScaled1),...
+	(md.results.TransientSolution(1).IceVolumeScaled1),...
+	(md.results.TransientSolution(1).IceVolumeAboveFloatationScaled1),...
+	(md.results.TransientSolution(1).IceVolumeAboveFloatationScaled2),...
+	(md.results.TransientSolution(3).IceMass1),...
+	(md.results.TransientSolution(3).IceVolume1),...
+	(md.results.TransientSolution(3).IceVolumeAboveFloatation1),...
+	(md.results.TransientSolution(3).IceVolumeAboveFloatation2),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).GroundedArea1),...
+	(md.results.TransientSolution(3).FloatingArea1),...
+	(md.results.TransientSolution(3).TotalFloatingBmb1),...
+	(md.results.TransientSolution(3).TotalGroundedBmb1),...
+	(md.results.TransientSolution(3).TotalSmb1),...
+	(md.results.TransientSolution(3).IceMassScaled1),...
+	(md.results.TransientSolution(3).IceVolumeScaled1),...
+	(md.results.TransientSolution(3).IceVolumeAboveFloatationScaled1),...
+	(md.results.TransientSolution(3).IceVolumeAboveFloatationScaled2),...
+	length(md.outputdefinition.definitions{1}.mask),...
+	length(md2.outputdefinition.definitions{1}.mask),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test443.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test443.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test443.py	(revision 27955)
@@ -0,0 +1,90 @@
+#Test Name: SquareSheetShelfTranSSA3dAggressiveRegionalOutput
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from frictioncoulomb import frictioncoulomb
+from ContourToMesh import ContourToMesh
+from regionaloutput import regionaloutput
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.geometry.bed = copy.deepcopy(md.geometry.base)
+pos = np.nonzero(md.mask.ocean_levelset < 0.)
+md.geometry.bed[pos] = md.geometry.bed[pos] - 10
+md.friction = frictioncoulomb()
+md.friction.coefficient = 20 * np.ones(md.mesh.numberofvertices)
+md.friction.p = 1 * np.ones(md.mesh.numberofelements)
+md.friction.q = 1 * np.ones(md.mesh.numberofelements)
+md.friction.coefficientcoulomb = 0.02 * np.ones(md.mesh.numberofvertices)
+md.transient.isthermal = False
+md.transient.isgroundingline = True
+md.groundingline.migration = 'AggressiveMigration'
+md.mesh.scale_factor = 1.1 * np.ones((md.mesh.numberofvertices))
+
+md.settings.output_frequency = 2
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+regionalmask = np.zeros((md.mesh.numberofvertices))
+inflag = ContourToMesh(md.mesh.elements, md.mesh.x, md.mesh.y, '../Exp/SquareHalfRight.exp', 'node', 1)
+regionalmask[np.nonzero(inflag)[0]] = 1.
+md.transient.requested_outputs = ['default', 'GroundedArea1', 'FloatingArea1', 'TotalFloatingBmb1', 'TotalGroundedBmb1', 'TotalSmb1', 'IceMass1', 'IceVolume1', 'IceVolumeAboveFloatation1', 'IceVolumeAboveFloatation2', 'IceVolumeAboveFloatation', 'IceMassScaled1', 'IceVolumeScaled1', 'IceVolumeAboveFloatationScaled1', 'IceVolumeAboveFloatationScaled2']
+
+md.outputdefinition.definitions = [regionaloutput('name', 'GroundedArea1', 'outputnamestring', 'GroundedArea', 'mask', regionalmask, 'definitionstring', 'Outputdefinition1'),
+                                   regionaloutput('name', 'FloatingArea1', 'outputnamestring', 'FloatingArea', 'mask', regionalmask, 'definitionstring', 'Outputdefinition2'),
+                                   regionaloutput('name', 'TotalFloatingBmb1', 'outputnamestring', 'TotalFloatingBmb', 'mask', regionalmask, 'definitionstring', 'Outputdefinition3'),
+                                   regionaloutput('name', 'TotalGroundedBmb1', 'outputnamestring', 'TotalGroundedBmb', 'mask', regionalmask, 'definitionstring', 'Outputdefinition4'),
+                                   regionaloutput('name', 'IceMass1', 'outputnamestring', 'IceMass', 'mask', regionalmask, 'definitionstring', 'Outputdefinition5'),
+                                   regionaloutput('name', 'IceVolume1', 'outputnamestring', 'IceVolume', 'mask', regionalmask, 'definitionstring', 'Outputdefinition6'),
+                                   regionaloutput('name', 'IceVolumeAboveFloatation1', 'outputnamestring', 'IceVolumeAboveFloatation', 'mask', regionalmask, 'definitionstring', 'Outputdefinition7'),
+                                   regionaloutput('name', 'TotalSmb1', 'outputnamestring', 'TotalSmb', 'mask', regionalmask, 'definitionstring', 'Outputdefinition8'),
+                                   regionaloutput('name', 'IceVolumeAboveFloatation2', 'outputnamestring', 'IceVolumeAboveFloatation', 'maskexpstring', '../Exp/SquareHalfRight.exp', 'definitionstring', 'Outputdefinition9', 'model', md),
+                                   regionaloutput('name', 'IceMassScaled1', 'outputnamestring', 'IceMassScaled', 'mask', regionalmask, 'definitionstring', 'Outputdefinition10'),
+                                   regionaloutput('name', 'IceVolumeScaled1', 'outputnamestring', 'IceVolumeScaled', 'mask', regionalmask, 'definitionstring', 'Outputdefinition11'),
+                                   regionaloutput('name', 'IceVolumeAboveFloatationScaled1', 'outputnamestring', 'IceVolumeAboveFloatationScaled', 'mask', regionalmask, 'definitionstring', 'Outputdefinition12'),
+                                   regionaloutput('name', 'IceVolumeAboveFloatationScaled2', 'outputnamestring', 'IceVolumeAboveFloatationScaled', 'maskexpstring', '../Exp/SquareHalfRight.exp', 'definitionstring', 'Outputdefinition13', 'model', md)]
+
+md.extrude(3, 1.)
+md2 = copy.deepcopy(md)
+md2.collapse()
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['IceMass1', 'IceVolume1', 'IceVolumeAboveFloatation1', 'IceVolumeAboveFloatation21', 'Thickness1', 'GroundedArea1', 'FloatingArea1', 'TotalFloatingBmb1', 'TotalGroundedBmb1', 'TotalSmb1', 'IceMassScaled1', 'IceVolumeScaled1', 'IceVolumeAboveFloatationScaled1', 'IceVolumeAboveFloatationScaled21', 'IceMass3', 'IceVolume3', 'IceVolumeAboveFloatation3', 'IceVolumeAboveFloatation23', 'Thickness3', 'GroundedArea3', 'FloatingArea3', 'TotalFloatingBmb3', 'TotalGroundedBmb3', 'TotalSmb3', 'IceMassScaled3', 'IceVolumeScaled3', 'IceVolumeAboveFloatationScaled3', 'IceVolumeAboveFloatationScaled23', 'ExtrudedMask', 'CollapsedMask']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].IceMass1,
+                md.results.TransientSolution[0].IceVolume1,
+                md.results.TransientSolution[0].IceVolumeAboveFloatation1,
+                md.results.TransientSolution[0].IceVolumeAboveFloatation2,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].GroundedArea1,
+                md.results.TransientSolution[0].FloatingArea1,
+                md.results.TransientSolution[0].TotalFloatingBmb1,
+                md.results.TransientSolution[0].TotalGroundedBmb1,
+                md.results.TransientSolution[0].TotalSmb1,
+                md.results.TransientSolution[0].IceMassScaled1,
+                md.results.TransientSolution[0].IceVolumeScaled1,
+                md.results.TransientSolution[0].IceVolumeAboveFloatationScaled1,
+                md.results.TransientSolution[0].IceVolumeAboveFloatationScaled2,
+                md.results.TransientSolution[2].IceMass1,
+                md.results.TransientSolution[2].IceVolume1,
+                md.results.TransientSolution[2].IceVolumeAboveFloatation1,
+                md.results.TransientSolution[2].IceVolumeAboveFloatation2,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].GroundedArea1,
+                md.results.TransientSolution[2].FloatingArea1,
+                md.results.TransientSolution[2].TotalFloatingBmb1,
+                md.results.TransientSolution[2].TotalGroundedBmb1,
+                md.results.TransientSolution[2].TotalSmb1,
+                md.results.TransientSolution[2].IceMassScaled1,
+                md.results.TransientSolution[2].IceVolumeScaled1,
+                md.results.TransientSolution[2].IceVolumeAboveFloatationScaled1,
+                md.results.TransientSolution[2].IceVolumeAboveFloatationScaled2,
+                len(md.outputdefinition.definitions[0].mask),
+                len(md2.outputdefinition.definitions[0].mask)]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test444.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test444.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test444.m	(revision 27955)
@@ -0,0 +1,120 @@
+%Test Name: SquareSheetShelfTranSSA2dAggressiveDakotaSampRegionalOutput
+
+% TODO:
+% - Figure out why test fails intermittently on Mac with "Index exceeds array 
+% bounds."
+%
+
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.geometry.bed=md.geometry.base;
+pos=find(md.mask.ocean_levelset<0);
+md.geometry.bed(pos)=md.geometry.base(pos)-10;
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.transient.isthermal=0;
+md.transient.isgroundingline=1;
+md.groundingline.migration='AggressiveMigration';
+
+md.settings.output_frequency=3;
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+regionalmask=zeros(md.mesh.numberofvertices,1);
+in=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,'../Exp/SquareHalfRight.exp','node',1);
+regionalmask(find(in))=1;
+md.transient.requested_outputs={'default','GroundedArea','FloatingArea','IceVolumeAboveFloatation','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1','TotalSmb1',...
+	'IceMass1','IceVolume1','IceVolumeAboveFloatation1','IceVolumeAboveFloatation'};
+md.outputdefinition.definitions{1}=regionaloutput('name','GroundedArea1','outputnamestring','GroundedArea','mask',regionalmask,...
+	'definitionstring','Outputdefinition1');
+md.outputdefinition.definitions{2}=regionaloutput('name','FloatingArea1','outputnamestring','FloatingArea','mask',regionalmask,...
+	'definitionstring','Outputdefinition2');
+md.outputdefinition.definitions{3}=regionaloutput('name','TotalFloatingBmb1','outputnamestring','TotalFloatingBmb','mask',regionalmask,...
+	'definitionstring','Outputdefinition3');
+md.outputdefinition.definitions{4}=regionaloutput('name','TotalGroundedBmb1','outputnamestring','TotalGroundedBmb','mask',regionalmask,...
+	'definitionstring','Outputdefinition4');
+md.outputdefinition.definitions{5}=regionaloutput('name','IceMass1','outputnamestring','IceMass','mask',regionalmask,...
+	'definitionstring','Outputdefinition5');
+md.outputdefinition.definitions{6}=regionaloutput('name','IceVolume1','outputnamestring','IceVolume','mask',regionalmask,...
+	'definitionstring','Outputdefinition6');
+md.outputdefinition.definitions{7}=regionaloutput('name','IceVolumeAboveFloatation1','outputnamestring','IceVolumeAboveFloatation','mask',regionalmask,...
+	'definitionstring','Outputdefinition7');
+md.outputdefinition.definitions{8}=regionaloutput('name','TotalSmb1','outputnamestring','TotalSmb','mask',regionalmask,...
+	'definitionstring','Outputdefinition8');
+md.outputdefinition.definitions{9}=regionaloutput('name','TotalSmb2','outputnamestring','TotalSmb','mask',regionalmask,...
+	 'definitionstring','Outputdefinition9');
+
+md=extrude(md,3,1);
+md=collapse(md);
+
+%Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
+%partitioning
+npart=10;
+partition=partitioner(md,'package','chaco','npart',npart,'weighting','on')-1;
+md.qmu.isdakota=1;
+
+md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_BasalforcingsFloatingiceMeltingRate',...
+	'mean',ones(npart,1),...
+	'stddev',.1*ones(npart,1),...
+	'partition',partition);
+
+md.qmu.responses.IceMass1=response_function('descriptor','Outputdefinition5');
+md.qmu.responses.IceVolume1=response_function('descriptor','Outputdefinition6');
+md.qmu.responses.IceVolumeAboveFloatation1=response_function('descriptor','Outputdefinition7');
+md.qmu.responses.IceVolumeAboveFloatation=response_function('descriptor','IceVolumeAboveFloatation');
+md.qmu.responses.GroundedArea1=response_function('descriptor','Outputdefinition1');
+md.qmu.responses.FloatingArea1=response_function('descriptor','Outputdefinition2');
+md.qmu.responses.TotalFloatingBmb1=response_function('descriptor','Outputdefinition3');
+md.qmu.responses.TotalGroundedBmb1=response_function('descriptor','Outputdefinition4');
+md.qmu.responses.TotalSmb1=response_function('descriptor','Outputdefinition8');
+md.qmu.responses.TotalSmb2=response_function('descriptor','Outputdefinition9');
+md.qmu.responses.FloatingArea=response_function('descriptor','FloatingArea');
+
+md.qmu.method     =dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+	'seed',1234,...
+	'samples',20,...
+	'sample_type','random');
+
+%%  a variety of parameters
+md.qmu.params.direct=true;
+md.qmu.params.analysis_components='';
+md.qmu.params.tabular_graphics_data=true;
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+
+md.stressbalance.reltol=10^-5; %tighten for qmu analyses
+
+md=solve(md,'Transient','overwrite','y');
+
+%Fields and tolerances to track changes
+md.qmu.results=md.results.dakota;
+
+%we put all the mean and stdev data in the montecarlo field, which we will use to test for success.
+md.results.dakota.montecarlo=[];
+for i=1:11,
+	md.results.dakota.montecarlo=[md.results.dakota.montecarlo md.results.dakota.dresp_out(i).mean];
+end
+for i=1:11,
+	md.results.dakota.montecarlo=[md.results.dakota.montecarlo md.results.dakota.dresp_out(i).stddev];
+end
+field_names     ={'montecarlo'};
+field_tolerances={1e-11};
+field_values={...
+	md.results.dakota.montecarlo,...
+	};
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test444.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test444.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test444.py	(revision 27955)
@@ -0,0 +1,137 @@
+#Test Name: SquareShelfTranForceNeg2dDakotaLocal
+
+# TODO:
+# - Figure out why test fails intermittently on Mac with "IndexError: list
+# index out of range"
+#
+
+import numpy as np
+
+from ContourToMesh import *
+from dmeth_params_set import *
+from socket import gethostname
+from model import *
+from parameterize import *
+from partitioner import *
+from regionaloutput import *
+from setflowequation import *
+from setmask import *
+from solve import *
+from triangle import *
+
+#model not consistent:  equality thickness = surface-base violated
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.geometry.bed = md.geometry.base.copy()
+pos = np.where(md.mask.ocean_levelset < 0)
+md.geometry.bed[pos] = md.geometry.base[pos] - 10
+md.friction.coefficient = 20. * np.ones((md.mesh.numberofvertices, ))
+md.friction.p = np.ones((md.mesh.numberofelements, ))
+md.friction.q = np.ones((md.mesh.numberofelements, ))
+md.transient.isthermal = 0
+md.transient.isgroundingline = 1
+md.groundingline.migration = 'AggressiveMigration'
+
+md.settings.output_frequency = 3
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+regionalmask = np.zeros((md.mesh.numberofvertices, ))
+c_in = ContourToMesh(md.mesh.elements, md.mesh.x, md.mesh.y, '../Exp/SquareHalfRight.exp', 'node', 1)
+regionalmask[np.where(c_in)] = 1
+md.transient.requested_outputs = ['default', 'GroundedArea', 'FloatingArea', 'IceVolumeAboveFloatation', 'GroundedArea1', 'FloatingArea1', 'TotalFloatingBmb1', 'TotalGroundedBmb1', 'TotalSmb1',
+                                  'IceMass1', 'IceVolume1', 'IceVolumeAboveFloatation1', 'IceVolumeAboveFloatation']
+md.outputdefinition.definitions.append(regionaloutput('name', 'GroundedArea1', 'outputnamestring', 'GroundedArea', 'mask', regionalmask,
+                                                      'definitionstring', 'Outputdefinition1'))
+md.outputdefinition.definitions.append(regionaloutput('name', 'FloatingArea1', 'outputnamestring', 'FloatingArea', 'mask', regionalmask,
+                                                      'definitionstring', 'Outputdefinition2'))
+md.outputdefinition.definitions.append(regionaloutput('name', 'TotalFloatingBmb1', 'outputnamestring', 'TotalFloatingBmb', 'mask', regionalmask,
+                                                      'definitionstring', 'Outputdefinition3'))
+md.outputdefinition.definitions.append(regionaloutput('name', 'TotalGroundedBmb1', 'outputnamestring', 'TotalGroundedBmb', 'mask', regionalmask,
+                                                      'definitionstring', 'Outputdefinition4'))
+md.outputdefinition.definitions.append(regionaloutput('name', 'IceMass1', 'outputnamestring', 'IceMass', 'mask', regionalmask,
+                                                      'definitionstring', 'Outputdefinition5'))
+md.outputdefinition.definitions.append(regionaloutput('name', 'IceVolume1', 'outputnamestring', 'IceVolume', 'mask', regionalmask,
+                                                      'definitionstring', 'Outputdefinition6'))
+md.outputdefinition.definitions.append(regionaloutput('name', 'IceVolumeAboveFloatation1', 'outputnamestring', 'IceVolumeAboveFloatation', 'mask', regionalmask,
+                                                      'definitionstring', 'Outputdefinition7'))
+md.outputdefinition.definitions.append(regionaloutput('name', 'TotalSmb1', 'outputnamestring', 'TotalSmb', 'mask', regionalmask,
+                                                      'definitionstring', 'Outputdefinition8'))
+md.outputdefinition.definitions.append(regionaloutput('name', 'TotalSmb2', 'outputnamestring', 'TotalSmb', 'mask', regionalmask,
+                                                      'definitionstring', 'Outputdefinition9'))
+
+md.extrude(3, 1.)
+md.collapse()
+
+#Dakota options
+
+#dakota version
+version = IssmConfig('_DAKOTA_VERSION_')
+version = float(version[0])
+
+#partitioning
+npart = 10
+partition = partitioner(md, 'package', 'chaco', 'npart', npart, 'weighting', 'on')[0] - 1
+md.qmu.isdakota = 1
+
+#variables
+md.qmu.variables.drag_coefficient = normal_uncertain.normal_uncertain(
+    'descriptor', 'scaled_BasalforcingsFloatingiceMeltingRate',
+    'mean', np.ones((npart, 1)),
+    'stddev', .1 * np.ones((npart, 1)),
+    'partition', partition
+    )
+
+
+#responses
+md.qmu.responses.IceMass1 = response_function.response_function('descriptor','Outputdefinition5')
+md.qmu.responses.IceVolume1 = response_function.response_function('descriptor','Outputdefinition6')
+md.qmu.responses.IceVolumeAboveFloatation1 = response_function.response_function('descriptor','Outputdefinition7')
+md.qmu.responses.IceVolumeAboveFloatation = response_function.response_function('descriptor','IceVolumeAboveFloatation')
+md.qmu.responses.GroundedArea1 = response_function.response_function('descriptor','Outputdefinition1')
+md.qmu.responses.FloatingArea1 = response_function.response_function('descriptor','Outputdefinition2')
+md.qmu.responses.TotalFloatingBmb1 = response_function.response_function('descriptor','Outputdefinition3')
+md.qmu.responses.TotalGroundedBmb1 = response_function.response_function('descriptor','Outputdefinition4')
+md.qmu.responses.TotalSmb1 = response_function.response_function('descriptor','Outputdefinition8')
+md.qmu.responses.TotalSmb2 = response_function.response_function('descriptor','Outputdefinition9')
+md.qmu.responses.FloatingArea = response_function.response_function('descriptor','FloatingArea')
+
+#method
+md.qmu.method = dakota_method.dakota_method('nond_samp')
+md.qmu.method = dmeth_params_set(md.qmu.method, 'seed', 1234, 'samples', 20, 'sample_type', 'random')
+
+#parameters
+md.qmu.params.direct = True
+md.qmu.params.analysis_components = ''
+md.qmu.params.tabular_graphics_data = True
+
+if version >= 6:
+    md.qmu.params.analysis_driver = 'matlab'
+    md.qmu.params.evaluation_scheduling = 'master'
+    md.qmu.params.processors_per_evaluation = 2
+else:
+    md.qmu.params.analysis_driver = 'stressbalance'
+    md.qmu.params.evaluation_concurrency = 1
+
+md.stressbalance.reltol = 10**-5  #tighten for qmu analyses
+
+#solve
+md.verbose = verbose('000000000')  # this line is recommended
+md = solve(md, 'Transient', 'overwrite', 'y')
+
+#Fields and tolerances to track changes
+md.qmu.results = md.results.dakota
+
+#we put all the mean and stdev data in the montecarlo field, which we will use to test for success.
+md.results.dakota.montecarlo = []
+for i in range(11):
+    md.results.dakota.montecarlo.append(md.results.dakota.dresp_out[i].mean)
+
+for i in range(11):
+    md.results.dakota.montecarlo.append(md.results.dakota.dresp_out[i].stddev)
+
+field_names = ['montecarlo']
+field_tolerances = [1e-11]
+field_values = [md.results.dakota.montecarlo]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test445.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test445.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test445.m	(revision 27955)
@@ -0,0 +1,98 @@
+%Test Name: SquareSheetShelfSteaEnthalpyHO3dDakotaSampNeff
+
+% TODO:
+% - Figure out why test fails intermittently on Mac with "Index exceeds array 
+% bounds."
+%
+
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0.;
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+
+md.friction.coupling=3;
+md.friction.effective_pressure=md.materials.rho_ice*md.constants.g*md.geometry.thickness+md.materials.rho_water*md.constants.g*md.geometry.base;
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_');
+version=version(1:3);
+version=str2num(version);
+
+%partitioning
+npart=10;
+partition=partitioner(md,'package','chaco','npart',npart,'weighting','on')-1;
+md.qmu.isdakota=1;
+
+%variables
+md.qmu.variables.neff=normal_uncertain('descriptor','scaled_FrictionEffectivePressure',...
+	'mean',ones(npart,1),...
+	'stddev',.05*ones(npart,1),...
+	'partition',partition);
+md.qmu.variables.geoflux=normal_uncertain('descriptor','scaled_BasalforcingsGeothermalflux',...
+	'mean',ones(npart,1),...
+	'stddev',.05*ones(npart,1),...
+	'partition',partition);
+
+%responses
+md.qmu.responses.MaxVel=response_function('descriptor','MaxVel');
+md.qmu.responses.MassFlux1=response_function('descriptor','indexed_MassFlux_1');
+md.qmu.responses.MassFlux2=response_function('descriptor','indexed_MassFlux_2');
+md.qmu.responses.MassFlux3=response_function('descriptor','indexed_MassFlux_3');
+md.qmu.responses.MassFlux4=response_function('descriptor','indexed_MassFlux_4');
+md.qmu.responses.MassFlux5=response_function('descriptor','indexed_MassFlux_5');
+md.qmu.responses.MassFlux6=response_function('descriptor','indexed_MassFlux_6');
+md.qmu.responses.MassFlux7=response_function('descriptor','indexed_MassFlux_7');
+
+%mass flux profiles
+md.qmu.mass_flux_profiles={'../Exp/MassFlux1.exp','../Exp/MassFlux2.exp','../Exp/MassFlux3.exp','../Exp/MassFlux4.exp','../Exp/MassFlux5.exp','../Exp/MassFlux6.exp','../Exp/Square.exp'};
+md.qmu.mass_flux_profile_directory=pwd;
+
+md.qmu.method     =dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+	'seed',1234,...
+	'samples',20,...
+	'sample_type','random');
+
+%%  a variety of parameters
+md.qmu.params.direct=true;
+md.qmu.params.analysis_components='';
+md.qmu.params.tabular_graphics_data=true;
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
+
+md.stressbalance.reltol=10^-5; %tighten for qmu analyses
+
+md=solve(md,'Steadystate','overwrite','y');
+
+%Fields and tolerances to track changes
+md.qmu.results=md.results.dakota;
+
+%we put all the mean and stdev data in the montecarlo field, which we will use to test for success.
+md.results.dakota.montecarlo=[];
+for i=1:8,
+	md.results.dakota.montecarlo=[md.results.dakota.montecarlo md.results.dakota.dresp_out(i).mean];
+end
+for i=1:8,
+	md.results.dakota.montecarlo=[md.results.dakota.montecarlo md.results.dakota.dresp_out(i).stddev];
+end
+field_names     ={'montecarlo'};
+field_tolerances={2e-10};
+field_values={...
+	md.results.dakota.montecarlo,...
+	};
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test445.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test445.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test445.py	(revision 27955)
@@ -0,0 +1,120 @@
+#Test Name: SquareSheetShelfSteaEnthalpyHO3dDakotaSampNeff
+
+# TODO:
+# - Figure out why test fails intermittently on Mac with "IndexError: list 
+# index out of range"
+#
+
+from os import getcwd
+from socket import gethostname
+
+import numpy as np
+
+from ContourToMesh import *
+from dmeth_params_set import *
+from model import *
+from parameterize import *
+from partitioner import *
+from setflowequation import *
+from setmask import *
+from solve import *
+from triangle import *
+
+
+#model not consistent:  equality thickness = surface-base violated
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.timestepping.time_step = 0.
+md.thermal.isenthalpy = 1
+md.thermal.isdynamicbasalspc = 1
+md.initialization.waterfraction = np.zeros((md.mesh.numberofvertices, 1))
+md.initialization.watercolumn = np.zeros((md.mesh.numberofvertices, 1))
+
+md.friction.coupling = 3
+md.friction.effective_pressure = md.materials.rho_ice * md.constants.g * md.geometry.thickness + md.materials.rho_water * md.constants.g * md.geometry.base
+
+#dakota version
+version = IssmConfig('_DAKOTA_VERSION_')
+version = float(version[0])
+
+#partitioning
+npart = 10
+partition, md = partitioner(md, 'package', 'chaco', 'npart', npart, 'weighting', 'on')
+partition -= 1
+md.qmu.isdakota = 1
+
+#variables
+md.qmu.variables.neff = normal_uncertain.normal_uncertain(
+    'descriptor', 'scaled_FrictionEffectivePressure',
+    'mean', np.ones((npart, 1)),
+    'stddev', .05 * np.ones((npart, 1)),
+    'partition', partition
+    )
+md.qmu.variables.geoflux = normal_uncertain.normal_uncertain(
+    'descriptor', 'scaled_BasalforcingsGeothermalflux',
+    'mean', np.ones((npart, 1)),
+    'stddev', .05 * np.ones((npart, 1)),
+    'partition', partition
+    )
+
+#responses
+md.qmu.responses.MaxVel = response_function.response_function('descriptor','MaxVel')
+md.qmu.responses.MassFlux1 = response_function.response_function('descriptor','indexed_MassFlux_1')
+md.qmu.responses.MassFlux2 = response_function.response_function('descriptor','indexed_MassFlux_2')
+md.qmu.responses.MassFlux3 = response_function.response_function('descriptor','indexed_MassFlux_3')
+md.qmu.responses.MassFlux4 = response_function.response_function('descriptor','indexed_MassFlux_4')
+md.qmu.responses.MassFlux5 = response_function.response_function('descriptor','indexed_MassFlux_5')
+md.qmu.responses.massFlux6 = response_function.response_function('descriptor','indexed_MassFlux_6')
+md.qmu.responses.massFlux7 = response_function.response_function('descriptor','indexed_MassFlux_7')
+
+#mass flux profiles
+md.qmu.mass_flux_profiles = ['../Exp/MassFlux1.exp', '../Exp/MassFlux2.exp', '../Exp/MassFlux3.exp', '../Exp/MassFlux4.exp', '../Exp/MassFlux5.exp', '../Exp/MassFlux6.exp', '../Exp/Square.exp']
+md.qmu.mass_flux_profile_directory = getcwd()
+
+#method
+md.qmu.method = dakota_method.dakota_method('nond_samp')
+md.qmu.method = dmeth_params_set(
+    md.qmu.method,
+    'seed', 1234,
+    'samples', 20,
+    'sample_type', 'random'
+    )
+
+#parameters
+md.qmu.params.direct = True
+md.qmu.params.analysis_components = ''
+md.qmu.params.tabular_graphics_data = True
+
+if version >= 6:
+    md.qmu.params.analysis_driver = 'matlab'
+    md.qmu.params.evaluation_scheduling = 'master'
+    md.qmu.params.processors_per_evaluation = 2
+else:
+    md.qmu.params.analysis_driver = 'stressbalance'
+    md.qmu.params.evaluation_concurrency = 1
+
+md.stressbalance.reltol = 10**-5  #tighten for qmu analyses
+
+#solve
+md.verbose = verbose('000000000')  # this line is recommended
+md = solve(md, 'Steadystate', 'overwrite', 'y')
+
+#Fields and tolerances to track changes
+md.qmu.results = md.results.dakota
+
+#we put all the mean and stdev data in the montecarlo field, which we will use to test for success.
+md.results.dakota.montecarlo = []
+for i in range(8):
+    md.results.dakota.montecarlo.append(md.results.dakota.dresp_out[i].mean)
+
+for i in range(8):
+    md.results.dakota.montecarlo.append(md.results.dakota.dresp_out[i].stddev)
+
+field_names = ['montecarlo']
+field_tolerances = [2e-10]
+field_values = [md.results.dakota.montecarlo]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test446.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test446.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test446.m	(revision 27955)
@@ -0,0 +1,26 @@
+%Test Name: SquareSheetShelfStressMOLHO2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'MOLHO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
+md=SetMOLHOBC(md);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+   (md.results.StressbalanceSolution.Vx),...
+   (md.results.StressbalanceSolution.Vy),...
+   (md.results.StressbalanceSolution.Vel),...
+   (md.results.StressbalanceSolution.Pressure),...
+   (md.results.StressbalanceSolution.VxSurface),...
+   (md.results.StressbalanceSolution.VySurface),...
+   (md.results.StressbalanceSolution.VxShear),...
+   (md.results.StressbalanceSolution.VyShear),...
+   (md.results.StressbalanceSolution.VxBase),...
+   (md.results.StressbalanceSolution.VyBase),...
+   };
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test446.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test446.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test446.py	(revision 27955)
@@ -0,0 +1,32 @@
+#Test Name: SquareSheetShelfStressMOLHO2d
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from SetMOLHOBC import SetMOLHOBC
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'MOLHO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
+md = SetMOLHOBC(md)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.VxSurface,
+                md.results.StressbalanceSolution.VySurface,
+                md.results.StressbalanceSolution.VxShear,
+                md.results.StressbalanceSolution.VyShear,
+                md.results.StressbalanceSolution.VxBase,
+                md.results.StressbalanceSolution.VyBase]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test447.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test447.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test447.m	(revision 27955)
@@ -0,0 +1,69 @@
+%Test Name: SquareSheetShelfTranMOLHO2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.geometry.bed=md.geometry.base;
+pos=find(md.mask.ocean_levelset<0);
+md.geometry.bed(pos)=md.geometry.base(pos)-10;
+md.friction=frictioncoulomb();
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.friction.coefficientcoulomb=0.02*ones(md.mesh.numberofvertices,1);
+md.transient.isthermal=0;
+md.transient.isgroundingline=1;
+md=setflowequation(md,'MOLHO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb','TotalSmb'};
+md=SetMOLHOBC(md);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={...
+	'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1','TotalSmb1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','FloatingArea2','TotalFloatingBmb2','TotalGroundedBmb2','TotalSmb2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','FloatingArea3','TotalFloatingBmb3','TotalGroundedBmb3','TotalSmb3'...
+};
+field_tolerances={...
+	2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13...
+};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
+	(md.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
+	(md.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).GroundedArea),...
+	(md.results.TransientSolution(3).FloatingArea),...
+	(md.results.TransientSolution(3).TotalFloatingBmb),...
+	(md.results.TransientSolution(3).TotalGroundedBmb),...
+	(md.results.TransientSolution(3).TotalSmb),...
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test447.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test447.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test447.py	(revision 27955)
@@ -0,0 +1,81 @@
+#Test Name: SquareSheetShelfTranMOLHO2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from SetMOLHOBC import SetMOLHOBC
+from frictioncoulomb import frictioncoulomb
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.geometry.bed = copy.deepcopy(md.geometry.base)
+pos = np.nonzero(md.mask.ocean_levelset < 0.)
+md.geometry.bed[pos] = md.geometry.bed[pos] - 10
+md.friction = frictioncoulomb()
+md.friction.coefficient = 20 * np.ones(md.mesh.numberofvertices)
+md.friction.p = 1 * np.ones(md.mesh.numberofelements)
+md.friction.q = 1 * np.ones(md.mesh.numberofelements)
+md.friction.coefficientcoulomb = 0.02 * np.ones(md.mesh.numberofvertices)
+md.transient.isthermal = False
+md.transient.isgroundingline = True
+md = setflowequation(md, 'MOLHO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.requested_outputs = ['default', 'GroundedArea', 'FloatingArea', 'TotalFloatingBmb', 'TotalGroundedBmb', 'TotalSmb']
+md = SetMOLHOBC(md)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = [
+    'Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'GroundedArea1', 'FloatingArea1', 'TotalFloatingBmb1', 'TotalGroundedBmb1', 'TotalSmb1',
+    'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'GroundedArea2', 'FloatingArea2', 'TotalFloatingBmb2', 'TotalGroundedBmb2', 'TotalSmb2',
+    'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'GroundedArea3', 'FloatingArea3', 'TotalFloatingBmb3', 'TotalGroundedBmb3', 'TotalSmb3'
+]
+field_tolerances = [
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+]
+field_values = [
+    md.results.TransientSolution[0].Vx,
+    md.results.TransientSolution[0].Vy,
+    md.results.TransientSolution[0].Vel,
+    md.results.TransientSolution[0].Pressure,
+    md.results.TransientSolution[0].Base,
+    md.results.TransientSolution[0].Surface,
+    md.results.TransientSolution[0].Thickness,
+    md.results.TransientSolution[0].GroundedArea,
+    md.results.TransientSolution[0].FloatingArea,
+    md.results.TransientSolution[0].TotalFloatingBmb,
+    md.results.TransientSolution[0].TotalGroundedBmb,
+    md.results.TransientSolution[0].TotalSmb,
+    md.results.TransientSolution[1].Vx,
+    md.results.TransientSolution[1].Vy,
+    md.results.TransientSolution[1].Vel,
+    md.results.TransientSolution[1].Pressure,
+    md.results.TransientSolution[1].Base,
+    md.results.TransientSolution[1].Surface,
+    md.results.TransientSolution[1].Thickness,
+    md.results.TransientSolution[1].GroundedArea,
+    md.results.TransientSolution[1].FloatingArea,
+    md.results.TransientSolution[1].TotalFloatingBmb,
+    md.results.TransientSolution[1].TotalGroundedBmb,
+    md.results.TransientSolution[1].TotalSmb,
+    md.results.TransientSolution[2].Vx,
+    md.results.TransientSolution[2].Vy,
+    md.results.TransientSolution[2].Vel,
+    md.results.TransientSolution[2].Pressure,
+    md.results.TransientSolution[2].Base,
+    md.results.TransientSolution[2].Surface,
+    md.results.TransientSolution[2].Thickness,
+    md.results.TransientSolution[2].GroundedArea,
+    md.results.TransientSolution[2].FloatingArea,
+    md.results.TransientSolution[2].TotalFloatingBmb,
+    md.results.TransientSolution[2].TotalGroundedBmb,
+    md.results.TransientSolution[2].TotalSmb
+]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test448.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test448.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test448.m	(revision 27955)
@@ -0,0 +1,54 @@
+%Test Name: RoundSheetShelfGLMigrationMOLHO2d
+radius=1.e6;
+shelfextent=2.e5;
+
+md=roundmesh(model(),radius,50000.);
+%fix center node to 0,0
+rad=sqrt(md.mesh.x.^2+md.mesh.y.^2);
+pos=find(rad==min(rad));
+md.mesh.x(pos)=0.; md.mesh.y(pos)=0.; %the closest node to the center is changed to be exactly at the center
+xelem=mean(md.mesh.x(md.mesh.elements),2);
+yelem=mean(md.mesh.y(md.mesh.elements),2);
+rad=sqrt(xelem.^2+yelem.^2);
+flags=zeros(md.mesh.numberofelements,1);
+pos=find(rad>=(radius-shelfextent));
+flags(pos)=1;
+md=setmask(md,flags,''); 
+md=parameterize(md,'../Par/RoundSheetShelf.par');
+md=setflowequation(md,'MOLHO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.transient.isthermal=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+
+md=SetMOLHOBC(md);
+%test different grounding line dynamics.
+md.groundingline.migration='AggressiveMigration';
+md=solve(md,'Transient');
+element_on_iceshelf_agressive=(md.results.TransientSolution.MaskOceanLevelset);
+vel_agressive=(md.results.TransientSolution.Vel);
+
+md.groundingline.migration='SoftMigration';
+md=solve(md,'Transient');
+element_on_iceshelf_soft=(md.results.TransientSolution.MaskOceanLevelset);
+vel_soft=(md.results.TransientSolution.Vel);
+
+md.mask.ocean_levelset=md.geometry.thickness + md.materials.rho_water/md.materials.rho_ice*md.geometry.bed;
+md.groundingline.migration='SubelementMigration';
+md.groundingline.friction_interpolation='SubelementFriction1';
+md=solve(md,'Transient');
+element_on_iceshelf_subelement=(md.results.TransientSolution.MaskOceanLevelset);
+vel_subelement=(md.results.TransientSolution.Vel);
+
+md.groundingline.friction_interpolation='SubelementFriction2';
+md=solve(md,'Transient');
+element_on_iceshelf_subelement2=(md.results.TransientSolution.MaskOceanLevelset);
+vel_subelement2=(md.results.TransientSolution.Vel);
+
+%Fields and tolerances to track changes
+field_names     ={'ElementOnIceShelfAggressive','VelAggressive','ElementOnIceShelfSoft','VelSoft','ElementOnIceShelfSubelement','VelSubelement','ElementOnIceShelfSubelement2','VelSubelement2'};
+field_tolerances={1e-13,2e-12,1e-13,2e-12,1e-13,3e-12,1e-13,2e-12};
+field_values={element_on_iceshelf_agressive,vel_agressive,element_on_iceshelf_soft,vel_soft,element_on_iceshelf_subelement,vel_subelement,element_on_iceshelf_subelement2,vel_subelement2};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test448.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test448.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test448.py	(revision 27955)
@@ -0,0 +1,66 @@
+#Test Name: RoundSheetShelfGLMigrationMOLHO2d
+import numpy as np
+from model import *
+from socket import gethostname
+from roundmesh import roundmesh
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from SetMOLHOBC import SetMOLHOBC
+
+
+radius = 1.e6
+shelfextent = 2.e5
+
+md = roundmesh(model(), radius, 50000.)
+#fix center node to 0, 0
+rad = np.sqrt(md.mesh.x**2 + md.mesh.y**2)
+pos = np.argmin(rad)
+md.mesh.x[pos] = 0.
+md.mesh.y[pos] = 0.  #the closest node to the center is changed to be exactly at the center
+xelem = np.mean(md.mesh.x[md.mesh.elements - 1], axis=1)
+yelem = np.mean(md.mesh.y[md.mesh.elements - 1], axis=1)
+rad = np.sqrt(xelem**2 + yelem**2)
+flags = np.zeros(md.mesh.numberofelements)
+pos = np.nonzero(rad >= (radius - shelfextent))
+flags[pos] = 1
+md = setmask(md, flags, '')
+md = parameterize(md, '../Par/RoundSheetShelf.py')
+md = setflowequation(md, 'MOLHO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+md.transient.isthermal = False
+md.transient.ismasstransport = False
+md.transient.issmb = True
+md.transient.isstressbalance = True
+md.transient.isgroundingline = True
+
+#test different grounding line dynamics.
+md.groundingline.migration = 'AggressiveMigration'
+md = SetMOLHOBC(md)
+md = solve(md, 'Transient')
+element_on_iceshelf_agressive = md.results.TransientSolution[0].MaskOceanLevelset
+vel_agressive = md.results.TransientSolution[0].Vel
+
+md.groundingline.migration = 'SoftMigration'
+md = solve(md, 'Transient')
+element_on_iceshelf_soft = md.results.TransientSolution[0].MaskOceanLevelset
+vel_soft = md.results.TransientSolution[0].Vel
+
+md.mask.ocean_levelset = md.geometry.thickness + md.materials.rho_water / md.materials.rho_ice * md.geometry.bed
+md.groundingline.migration = 'SubelementMigration'
+md.groundingline.friction_interpolation = 'SubelementFriction1'
+md = solve(md, 'Transient')
+element_on_iceshelf_subelement = md.results.TransientSolution[0].MaskOceanLevelset
+vel_subelement = md.results.TransientSolution[0].Vel
+
+md.groundingline.friction_interpolation = 'SubelementFriction2'
+md = solve(md, 'Transient')
+element_on_iceshelf_subelement2 = md.results.TransientSolution[0].MaskOceanLevelset
+vel_subelement2 = md.results.TransientSolution[0].Vel
+
+#Fields and tolerances to track changes
+field_names = ['ElementOnIceShelfAggressive', 'VelAggressive', 'ElementOnIceShelfSoft', 'VelSoft', 'ElementOnIceShelfSubelement', 'VelSubelement', 'ElementOnIceShelfSubelement2', 'VelSubelement2']
+field_tolerances = [1e-13, 2e-13, 1e-13, 2e-13, 1e-13, 2e-13, 1e-13, 2e-13]
+field_values = [element_on_iceshelf_agressive, vel_agressive, element_on_iceshelf_soft, vel_soft, element_on_iceshelf_subelement, vel_subelement, element_on_iceshelf_subelement2, vel_subelement2]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test449.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test449.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test449.m	(revision 27955)
@@ -0,0 +1,82 @@
+%Test Name: MISMIP3DMOLHO
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.initialization.vx(:)=1.;
+md.initialization.vy(:)=1.;
+md.geometry.thickness(:)=500-md.mesh.x/10000;
+md.geometry.bed =-100-md.mesh.x/1000;
+md.geometry.base=-md.geometry.thickness*md.materials.rho_ice/md.materials.rho_water;
+md.mask.ocean_levelset=md.geometry.thickness+md.materials.rho_water/md.materials.rho_ice*md.geometry.bed;
+pos=find(md.mask.ocean_levelset>=0);
+md.geometry.base(pos)=md.geometry.bed(pos);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=setflowequation(md,'MOLHO','all');
+
+%Boundary conditions:
+md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
+md.mask.ice_levelset(find(md.mesh.x==max(md.mesh.x)))=0;
+md.stressbalance.spcvx(:)=NaN;
+md.stressbalance.spcvy(:)=NaN;
+md.stressbalance.spcvz(:)=NaN;
+pos=find((md.mesh.y<1000000.1 & md.mesh.y>999999.9) | (md.mesh.y<0.1 & md.mesh.y>-0.1));
+md.stressbalance.spcvy(pos)=0;
+pos2=find(md.mesh.x<0.1 & md.mesh.x>-0.1);
+md.stressbalance.spcvx(pos2)=0;
+md.stressbalance.spcvy(pos2)=0;
+
+md.materials.rheology_B=1/((10^-25)^(1/3))*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_law='None';
+md.friction.coefficient(:)=sqrt(10^7)*ones(md.mesh.numberofvertices,1);
+md.friction.p=3*ones(md.mesh.numberofelements,1);
+md.smb.mass_balance(:)=1;
+md.basalforcings.groundedice_melting_rate(:)=0;
+md.basalforcings.floatingice_melting_rate(:)=30;
+md.transient.isthermal=0;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.requested_outputs={'default','BasalforcingsFloatingiceMeltingRate'};
+md.groundingline.migration='SubelementMigration';
+md.groundingline.melt_interpolation='SubelementMelt1';
+md.timestepping.final_time=30;
+md.timestepping.time_step=10;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=SetMOLHOBC(md);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Bed1','Surface1','Thickness1','Floatingice1','Vx1','Vy1','Pressure1','FloatingiceMeltingrate1',...
+	'Bed2','Surface2','Thickness2','Floatingice2','Vx2','Vy2','Pressure2','FloatingiceMeltingrate2',...
+	'Bed3','Surface3','Thickness3','Floatingice3','Vx3','Vy3','Pressure3','FloatingiceMeltingrate3'};
+field_tolerances={2e-11,5e-12,2e-11,1e-11,5e-10,1e-08,1e-13,1e-13,...
+	3e-11,3e-11,9e-10,7e-11,1e-09,5e-08,1e-10,1e-13,...
+	1e-10,3e-11,1e-10,7e-11,1e-09,5e-08,1e-10,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).MaskOceanLevelset),...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).MaskOceanLevelset),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).BasalforcingsFloatingiceMeltingRate),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).MaskOceanLevelset),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).BasalforcingsFloatingiceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test449.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test449.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test449.py	(revision 27955)
@@ -0,0 +1,97 @@
+#Test Name: MISMIP3DMOLHO
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from SetMOLHOBC import SetMOLHOBC
+from generic import generic
+
+
+md = triangle(model(), '../Exp/Square.exp', 100000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.initialization.vx[:] = 1.
+md.initialization.vy[:] = 1.
+md.geometry.thickness[:] = 500. - md.mesh.x / 10000.
+md.geometry.bed = -100. - md.mesh.x / 1000.
+md.geometry.base = -md.geometry.thickness * md.materials.rho_ice / md.materials.rho_water
+md.mask.ocean_levelset = md.geometry.thickness + md.materials.rho_water / md.materials.rho_ice * md.geometry.bed
+pos = np.where(md.mask.ocean_levelset >= 0.)
+md.geometry.base[pos] = md.geometry.bed[pos]
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md = setflowequation(md, 'MOLHO', 'all')
+
+#Boundary conditions:
+md.mask.ice_levelset = -np.ones((md.mesh.numberofvertices, ))
+md.mask.ice_levelset[np.where(md.mesh.x == max(md.mesh.x))] = 0.
+md.stressbalance.spcvx[:] = float('NaN')
+md.stressbalance.spcvy[:] = float('NaN')
+md.stressbalance.spcvz[:] = float('NaN')
+posA = np.intersect1d(np.array(np.where(md.mesh.y < 1000000.1)), np.array(np.where(md.mesh.y > 999999.9)))
+posB = np.intersect1d(np.array(np.where(md.mesh.y < 0.1)), np.array(np.where(md.mesh.y > -0.1)))
+pos = np.unique(np.concatenate((posA, posB)))
+md.stressbalance.spcvy[pos] = 0.
+pos2 = np.intersect1d(np.array(np.where(md.mesh.x < 0.1)), np.array(np.where(md.mesh.x > -0.1)))
+md.stressbalance.spcvx[pos2] = 0.
+md.stressbalance.spcvy[pos2] = 0.
+
+md.materials.rheology_B = 1. / ((10**-25)**(1. / 3.)) * np.ones((md.mesh.numberofvertices, ))
+md.materials.rheology_law = 'None'
+md.friction.coefficient[:] = np.sqrt(10**7) * np.ones((md.mesh.numberofvertices, ))
+md.friction.p = 3. * np.ones((md.mesh.numberofelements, ))
+md.smb.mass_balance[:] = 1.
+md.basalforcings.groundedice_melting_rate[:] = 0.
+md.basalforcings.floatingice_melting_rate[:] = 30.
+md.transient.isthermal = 0
+md.transient.isstressbalance = 1
+md.transient.isgroundingline = 1
+md.transient.ismasstransport = 1
+md.transient.issmb = 1
+md.transient.requested_outputs = ['default', 'BasalforcingsFloatingiceMeltingRate']
+md.groundingline.migration = 'SubelementMigration'
+md.groundingline.melt_interpolation = 'SubelementMelt1'
+md.timestepping.final_time = 30
+md.timestepping.time_step = 10
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = SetMOLHOBC(md)
+md = solve(md, 'Transient')
+#print md.results.TransientSolution[0].BasalforcingsFloatingiceMeltingRate
+#print md.results.TransientSolution[1].BasalforcingsFloatingiceMeltingRate
+#print md.results.TransientSolution[2].BasalforcingsFloatingiceMeltingRate
+
+#Fields and tolerances to track changes
+field_names = ['Bed1', 'Surface1', 'Thickness1', 'Floatingice1', 'Vx1', 'Vy1', 'Pressure1', 'FloatingiceMeltingrate1',
+               'Bed2', 'Surface2', 'Thickness2', 'Floatingice2', 'Vx2', 'Vy2', 'Pressure2', 'FloatingiceMeltingrate2',
+               'Bed3', 'Surface3', 'Thickness3', 'Floatingice3', 'Vx3', 'Vy3', 'Pressure3', 'FloatingiceMeltingrate3']
+field_tolerances = [2e-11, 5e-12, 2e-11, 1e-11, 5e-10, 1e-08, 1e-13, 1e-13,
+                    3e-11, 3e-11, 9e-10, 7e-11, 1e-09, 5e-08, 1e-10, 1e-13,
+                    1e-10, 3e-11, 1e-10, 7e-11, 1e-09, 5e-08, 1e-10, 1e-13]
+field_values = [md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].MaskOceanLevelset,
+                md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].BasalforcingsFloatingiceMeltingRate,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].MaskOceanLevelset,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].BasalforcingsFloatingiceMeltingRate,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].MaskOceanLevelset,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].BasalforcingsFloatingiceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test450.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test450.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test450.m	(revision 27955)
@@ -0,0 +1,22 @@
+%Test Name: SquareSheetShelfStressSSAHigherOrder
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+field_names={};
+field_tolerances={};
+field_values={};
+for i={'P1bubble','P1bubblecondensed','P2'}
+	md.flowequation.fe_SSA=i{1};
+	md=solve(md,'Stressbalance');
+	field_names     ={field_names{:},['Vx' i{1}],['Vy' i{1}],['Vel' i{1}],['Pressure' i{1}]};
+	field_tolerances={field_tolerances{:},1e-12,1e-13,1e-13,1e-13};
+	field_values={field_values{:},...
+		(md.results.StressbalanceSolution.Vx),...
+		(md.results.StressbalanceSolution.Vy),...
+		(md.results.StressbalanceSolution.Vel),...
+		(md.results.StressbalanceSolution.Pressure),...
+		};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test450.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test450.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test450.py	(revision 27955)
@@ -0,0 +1,27 @@
+#Test Name: SquareSheetShelfStressSSAHigherOrder
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+field_names = []
+field_tolerances = []
+field_values = []
+for i in ['P1bubble', 'P1bubblecondensed', 'P2']:
+    md.flowequation.fe_SSA = i
+    md = solve(md, 'Stressbalance')
+    field_names = field_names + ['Vx' + i, 'Vy' + i, 'Vel' + i, 'Pressure' + i]
+    field_tolerances = field_tolerances + [1e-12, 1e-13, 1e-13, 1e-13]
+    field_values = field_values + [md.results.StressbalanceSolution.Vx,
+                                   md.results.StressbalanceSolution.Vy,
+                                   md.results.StressbalanceSolution.Vel,
+                                   md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test455.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test455.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test455.m	(revision 27955)
@@ -0,0 +1,24 @@
+%Test Name: SquareSheetShelfStressHOHigherOrder
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,5,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+field_names={};
+field_tolerances={};
+field_values={};
+for i={'P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P1xP3','P2xP4'}
+	md.flowequation.fe_HO=i{1};
+	md=solve(md,'Stressbalance');
+	field_names     ={field_names{:},['Vx' i{1}],['Vy' i{1}],['Vz' i{1}],['Vel' i{1}],['Pressure' i{1}]};
+	field_tolerances={field_tolerances{:},8e-08,6e-08,6e-08,6e-08,3e-13};
+	field_values={field_values{:},...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test455.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test455.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test455.py	(revision 27955)
@@ -0,0 +1,30 @@
+#Test Name: SquareSheetShelfStressHOHigherOrder
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(5, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+field_names = []
+field_tolerances = []
+field_values = []
+for i in ['P1bubble', 'P1bubblecondensed', 'P1xP2', 'P2xP1', 'P2', 'P1xP3', 'P2xP4']:
+    md.flowequation.fe_HO = i
+    md = solve(md, 'Stressbalance')
+    field_names = field_names + ['Vx' + i, 'Vy' + i, 'Vz' + i, 'Vel' + i, 'Pressure' + i]
+    field_tolerances = field_tolerances + [8e-08, 6e-08, 6e-08, 6e-08, 3e-13]
+    field_values = field_values + [md.results.StressbalanceSolution.Vx,
+                                   md.results.StressbalanceSolution.Vy,
+                                   md.results.StressbalanceSolution.Vz,
+                                   md.results.StressbalanceSolution.Vel,
+                                   md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test460.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test460.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test460.m	(revision 27955)
@@ -0,0 +1,31 @@
+%Test Name: SquareSheetShelfStressFSEstar
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,1.);
+md.materials = matestar(md.materials);
+md.materials.rheology_B = 3.15e8*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_Ec=ones(md.mesh.numberofvertices,1);
+md.materials.rheology_Es=3*ones(md.mesh.numberofvertices,1);
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Go solve
+field_names={};
+field_tolerances={};
+field_values={};
+%md.initialization.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.y);
+for i={'SSA','HO','FS'},
+	disp(' ');
+	disp(['====== Testing Estar with ' i{1} ' =====']);
+	md=setflowequation(md,i{1},'all');
+	md=solve(md,'Stressbalance');
+	field_names     ={field_names{:},['Vx' i{1}],['Vy' i{1}],['Vz' i{1}],['Vel' i{1}],['Pressure' i{1}]};
+	field_tolerances={field_tolerances{:},7e-06,2e-05,2e-06,5e-06,8e-07};
+	field_values={field_values{:},...
+		(md.results.StressbalanceSolution.Vx),...
+		(md.results.StressbalanceSolution.Vy),...
+		(md.results.StressbalanceSolution.Vz),...
+		(md.results.StressbalanceSolution.Vel),...
+		(md.results.StressbalanceSolution.Pressure),...
+		};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test460.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test460.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test460.py	(revision 27955)
@@ -0,0 +1,36 @@
+#Test Name: SquareSheetShelfStressFSEstar
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from matestar import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = md.extrude(3, 1.)
+md.materials = matestar()
+md.materials.rheology_B = 3.15e8 * np.ones((md.mesh.numberofvertices, ))
+md.materials.rheology_Ec = np.ones((md.mesh.numberofvertices, ))
+md.materials.rheology_Es = 3 * np.ones((md.mesh.numberofvertices, ))
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+#Go solve
+field_names = []
+field_tolerances = []
+field_values = []
+#md.initialization.pressure = md.constants.g * md.materials.rho_ice * (md.geometry.surface - md.mesh.y)
+for i in ['SSA', 'HO', 'FS']:
+    md = setflowequation(md, i, 'all')
+    md = solve(md, 'Stressbalance')
+    field_names = field_names + ['Vx' + i, 'Vy' + i, 'Vz' + i, 'Vel' + i, 'Pressure' + i]
+    field_tolerances = field_tolerances + [7e-06, 2e-05, 2e-06, 5e-06, 8e-07]
+    field_values = field_values + [md.results.StressbalanceSolution.Vx,
+                                   md.results.StressbalanceSolution.Vy,
+                                   md.results.StressbalanceSolution.Vz,
+                                   md.results.StressbalanceSolution.Vel,
+                                   md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test461.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test461.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test461.m	(revision 27955)
@@ -0,0 +1,43 @@
+%Test Name: SquareSheetShelfThermalFSEstar
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,1.);
+md.materials = matestar(md.materials);
+md.materials.rheology_B = 3.15e8*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_Ec=ones(md.mesh.numberofvertices,1);
+md.materials.rheology_Es=3*ones(md.mesh.numberofvertices,1);
+
+md=setflowequation(md,'FS','all');
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names ={...
+	'Enthalpy1','Waterfraction1','Temperature1',...
+	'Enthalpy2','Waterfraction2','Temperature2',...
+	'Enthalpy3','Waterfraction3','Temperature3'};
+field_tolerances={...
+	1e-12,1e-11,1e-12,...
+	1e-12,1e-10,1e-12,...
+	1e-12,1e-9,1e-12};
+field_values={...
+	   (md.results.TransientSolution(1).Enthalpy),...
+	   (md.results.TransientSolution(1).Waterfraction),...
+	   (md.results.TransientSolution(1).Temperature),...
+	   (md.results.TransientSolution(2).Enthalpy),...
+	   (md.results.TransientSolution(2).Waterfraction),...
+	   (md.results.TransientSolution(2).Temperature),...
+	   (md.results.TransientSolution(3).Enthalpy),...
+	   (md.results.TransientSolution(3).Waterfraction),...
+	   (md.results.TransientSolution(3).Temperature),...
+	   };
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test461.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test461.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test461.py	(revision 27955)
@@ -0,0 +1,49 @@
+#Test Name: SquareSheetShelfThermalFSEstar
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from matestar import *
+
+md = triangle(model(), '../Exp/Square.exp', 180000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = md.extrude(3, 1.)
+md.materials = matestar()
+md.materials.rheology_B = 3.15e8 * np.ones((md.mesh.numberofvertices, ))
+md.materials.rheology_Ec = np.ones((md.mesh.numberofvertices, ))
+md.materials.rheology_Es = 3. * np.ones((md.mesh.numberofvertices, ))
+
+md = setflowequation(md, 'FS', 'all')
+md.initialization.waterfraction = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.watercolumn = np.zeros((md.mesh.numberofvertices, ))
+md.transient.isstressbalance = 0
+md.transient.ismasstransport = 0
+md.transient.issmb = 1
+md.transient.isthermal = 1
+md.transient.isgroundingline = 0
+md.thermal.isenthalpy = 1
+md.thermal.isdynamicbasalspc = 1
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Enthalpy1', 'Waterfraction1', 'Temperature1',
+               'Enthalpy2', 'Waterfraction2', 'Temperature2',
+               'Enthalpy3', 'Waterfraction3', 'Temperature3']
+field_tolerances = [1e-12, 1e-11, 1e-12,
+                    1e-12, 1e-10, 1e-12,
+                    1e-12, 1e-9, 1e-12]
+field_values = [md.results.TransientSolution[0].Enthalpy,
+                md.results.TransientSolution[0].Waterfraction,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[1].Enthalpy,
+                md.results.TransientSolution[1].Waterfraction,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[2].Enthalpy,
+                md.results.TransientSolution[2].Waterfraction,
+                md.results.TransientSolution[2].Temperature]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test462.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test462.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test462.m	(revision 27955)
@@ -0,0 +1,40 @@
+%Test Name: SquareSheetShelfAmrBamgField
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isstressbalance=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=0;
+md.transient.isthermal=0;
+md.transient.isgroundingline=0;
+%amr bamg settings, just field
+md.amr.hmin=10000;
+md.amr.hmax=100000;
+md.amr.fieldname='Vel';
+md.amr.keepmetric=1;
+md.amr.gradation=1.2;
+md.amr.groundingline_resolution=2000;
+md.amr.groundingline_distance=0;
+md.amr.icefront_resolution=1000;
+md.amr.icefront_distance=0;
+md.amr.thicknesserror_resolution=1000;
+md.amr.thicknesserror_threshold=0;
+md.amr.deviatoricerror_resolution=1000;
+md.amr.deviatoricerror_threshold=0;
+md.transient.amr_frequency=1;
+md.timestepping.start_time=0;
+md.timestepping.final_time=3;
+md.timestepping.time_step=1;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test462.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test462.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test462.py	(revision 27955)
@@ -0,0 +1,46 @@
+#Test Name: SquareSheetShelfAmrBamgField
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.isstressbalance = 1
+md.transient.ismasstransport = 1
+md.transient.issmb = 0
+md.transient.isthermal = 0
+md.transient.isgroundingline = 0
+#amr bamg settings, just field
+md.amr.hmin = 10000
+md.amr.hmax = 100000
+md.amr.fieldname = 'Vel'
+md.amr.keepmetric = 1
+md.amr.gradation = 1.2
+md.amr.groundingline_resolution = 2000
+md.amr.groundingline_distance = 0
+md.amr.icefront_resolution = 1000
+md.amr.icefront_distance = 0
+md.amr.thicknesserror_resolution = 1000
+md.amr.thicknesserror_threshold = 0
+md.amr.deviatoricerror_resolution = 1000
+md.amr.deviatoricerror_threshold = 0
+md.transient.amr_frequency = 1
+md.timestepping.start_time = 0
+md.timestepping.final_time = 3
+md.timestepping.time_step = 1
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test463.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test463.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test463.m	(revision 27955)
@@ -0,0 +1,40 @@
+%Test Name: SquareSheetShelfAmrBamgGroundingline
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isstressbalance=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=0;
+md.transient.isthermal=0;
+md.transient.isgroundingline=0;
+%amr bamg settings, just grounding line
+md.amr.hmin=10000;
+md.amr.hmax=100000;
+md.amr.fieldname='None';
+md.amr.keepmetric=0;
+md.amr.gradation=1.2;
+md.amr.groundingline_resolution=12000;
+md.amr.groundingline_distance=100000;
+md.amr.icefront_resolution=1000;
+md.amr.icefront_distance=0;
+md.amr.thicknesserror_resolution=1000;
+md.amr.thicknesserror_threshold=0;
+md.amr.deviatoricerror_resolution=1000;
+md.amr.deviatoricerror_threshold=0;
+md.transient.amr_frequency = 1;
+md.timestepping.start_time=0;
+md.timestepping.final_time=3;
+md.timestepping.time_step=1;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-8,1e-8,1e-8,1e-8};
+field_values={...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test463.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test463.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test463.py	(revision 27955)
@@ -0,0 +1,46 @@
+#Test Name: SquareSheetShelfAmrBamgGroundingline
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.isstressbalance = 1
+md.transient.ismasstransport = 1
+md.transient.issmb = 0
+md.transient.isthermal = 0
+md.transient.isgroundingline = 0
+#amr bamg settings, just grounding line
+md.amr.hmin = 10000
+md.amr.hmax = 100000
+md.amr.fieldname = 'None'
+md.amr.keepmetric = 0
+md.amr.gradation = 1.2
+md.amr.groundingline_resolution = 12000
+md.amr.groundingline_distance = 100000
+md.amr.icefront_resolution = 1000
+md.amr.icefront_distance = 0
+md.amr.thicknesserror_resolution = 1000
+md.amr.thicknesserror_threshold = 0
+md.amr.deviatoricerror_resolution = 1000
+md.amr.deviatoricerror_threshold = 0
+md.transient.amr_frequency = 1
+md.timestepping.start_time = 0
+md.timestepping.final_time = 3
+md.timestepping.time_step = 1
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure']
+field_tolerances = [1e-8, 1e-8, 1e-8, 1e-8]
+field_values = [md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test464.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test464.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test464.m	(revision 27955)
@@ -0,0 +1,40 @@
+%Test Name: SquareSheetShelfAmrBamgIceFront
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isstressbalance=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=0;
+md.transient.isthermal=0;
+md.transient.isgroundingline=0;
+%amr bamg settings, just ice front
+md.amr.hmin=10000;
+md.amr.hmax=100000;
+md.amr.fieldname='None';
+md.amr.keepmetric=0;
+md.amr.gradation=1.2;
+md.amr.groundingline_resolution=12000;
+md.amr.groundingline_distance=0;
+md.amr.icefront_resolution=12000;
+md.amr.icefront_distance=100000;
+md.amr.thicknesserror_resolution=1000;
+md.amr.thicknesserror_threshold=0;
+md.amr.deviatoricerror_resolution=1000;
+md.amr.deviatoricerror_threshold=0;
+md.transient.amr_frequency = 1;
+md.timestepping.start_time=0;
+md.timestepping.final_time=3;
+md.timestepping.time_step=1;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test464.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test464.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test464.py	(revision 27955)
@@ -0,0 +1,46 @@
+#Test Name: SquareSheetShelfAmrBamgIceFront
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.isstressbalance = 1
+md.transient.ismasstransport = 1
+md.transient.issmb = 0
+md.transient.isthermal = 0
+md.transient.isgroundingline = 0
+#amr bamg settings, just ice front
+md.amr.hmin = 10000
+md.amr.hmax = 100000
+md.amr.fieldname = 'None'
+md.amr.keepmetric = 0
+md.amr.gradation = 1.2
+md.amr.groundingline_resolution = 12000
+md.amr.groundingline_distance = 0
+md.amr.icefront_resolution = 12000
+md.amr.icefront_distance = 100000
+md.amr.thicknesserror_resolution = 1000
+md.amr.thicknesserror_threshold = 0
+md.amr.deviatoricerror_resolution = 1000
+md.amr.deviatoricerror_threshold = 0
+md.transient.amr_frequency = 1
+md.timestepping.start_time = 0
+md.timestepping.final_time = 3
+md.timestepping.time_step = 1
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test465.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test465.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test465.m	(revision 27955)
@@ -0,0 +1,40 @@
+%Test Name: SquareSheetShelfAmrBamgAll
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isstressbalance=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=0;
+md.transient.isthermal=0;
+md.transient.isgroundingline=0;
+%amr bamg settings, field, grounding line and ice front
+md.amr.hmin=20000;
+md.amr.hmax=100000;
+md.amr.fieldname='Vel';
+md.amr.keepmetric=0;
+md.amr.gradation=1.2;
+md.amr.groundingline_resolution=10000;
+md.amr.groundingline_distance=100000;
+md.amr.icefront_resolution=15000;
+md.amr.icefront_distance=100000;
+md.amr.thicknesserror_resolution=1000;
+md.amr.thicknesserror_threshold=0;
+md.amr.deviatoricerror_resolution=1000;
+md.amr.deviatoricerror_threshold=0;
+md.transient.amr_frequency = 1;
+md.timestepping.start_time=0;
+md.timestepping.final_time=3;
+md.timestepping.time_step=1;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-8,1e-8,1e-8,1e-8};
+field_values={...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test465.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test465.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test465.py	(revision 27955)
@@ -0,0 +1,46 @@
+#Test Name: SquareSheetShelfAmrBamgAll
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.isstressbalance = 1
+md.transient.ismasstransport = 1
+md.transient.issmb = 0
+md.transient.isthermal = 0
+md.transient.isgroundingline = 0
+#amr bamg settings, field, grounding line and ice front
+md.amr.hmin = 20000
+md.amr.hmax = 100000
+md.amr.fieldname = 'Vel'
+md.amr.keepmetric = 0
+md.amr.gradation = 1.2
+md.amr.groundingline_resolution = 10000
+md.amr.groundingline_distance = 100000
+md.amr.icefront_resolution = 15000
+md.amr.icefront_distance = 100000
+md.amr.thicknesserror_resolution = 1000
+md.amr.thicknesserror_threshold = 0
+md.amr.deviatoricerror_resolution = 1000
+md.amr.deviatoricerror_threshold = 0
+md.transient.amr_frequency = 1
+md.timestepping.start_time = 0
+md.timestepping.final_time = 3
+md.timestepping.time_step = 1
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure']
+field_tolerances = [1e-8, 1e-8, 1e-8, 1e-8]
+field_values = [md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test470.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test470.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test470.m	(revision 27955)
@@ -0,0 +1,79 @@
+%Test Name: PicoMeltRate
+md=triangle(model(),'../Exp/Square.exp',90000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.initialization.vx(:)=1.;
+md.initialization.vy(:)=1.;
+md.geometry.thickness(:)=500-md.mesh.x/10000;
+md.geometry.bed =-100-md.mesh.x/1000;
+md.geometry.base=-md.geometry.thickness*md.materials.rho_ice/md.materials.rho_water;
+md.mask.ocean_levelset=md.geometry.thickness+md.materials.rho_water/md.materials.rho_ice*md.geometry.bed;
+pos=find(md.mask.ocean_levelset>=0);
+md.geometry.base(pos)=md.geometry.bed(pos);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=setflowequation(md,'SSA','all');
+
+%Set Pico Parameters
+md.basalforcings = basalforcingspico(md.basalforcings);
+md.basalforcings.basin_id = zeros(md.mesh.numberofelements,1);
+yE = mean(md.mesh.y(md.mesh.elements),2);
+pos1 = find(yE>=5e5);	 md.basalforcings.basin_id(pos1)=1;
+pos2 = find(yE<5e5);     md.basalforcings.basin_id(pos2)=2;
+md.basalforcings.num_basins = 2;
+md.basalforcings.farocean_temperature = [271.15 272.15 273.15; 274.15 275.15 276.15; 0.5 1 1.5]; %K
+md.basalforcings.farocean_salinity    = [31 32 33; 34 35 36; 0.5 1 1.5]; %PSU                
+md.basalforcings.maxboxcount=5;
+md.basalforcings.isplume = 0;
+
+%Boundary conditions:
+md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
+md.mask.ice_levelset(find(md.mesh.x==max(md.mesh.x)))=0;
+
+%Model conditions
+md.transient.isthermal=0;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.requested_outputs={'default','BasalforcingsFloatingiceMeltingRate'};
+md.groundingline.migration='SubelementMigration';
+md.groundingline.friction_interpolation='SubelementFriction1';
+md.groundingline.melt_interpolation='SubelementMelt1';
+md.timestepping.final_time=1.5;
+md.timestepping.time_step=0.5;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+field_names     ={'Bed1','Surface1','Thickness1','Floatingice1','Vx1','Vy1','Pressure1','FloatingiceMeltingrate1',...
+	   'Bed2','Surface2','Thickness2','Floatingice2','Vx2','Vy2','Pressure2','FloatingiceMeltingrate2',...
+	   'Bed3','Surface3','Thickness3','Floatingice3','Vx3','Vy3','Pressure3','FloatingiceMeltingrate3'};
+field_tolerances={7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-10,...
+	   7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-10,...
+	   7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-10};
+field_values={...
+	   (md.results.TransientSolution(1).Base),...
+	   (md.results.TransientSolution(1).Surface),...
+	   (md.results.TransientSolution(1).Thickness),...
+	   (md.results.TransientSolution(1).MaskOceanLevelset),...
+	   (md.results.TransientSolution(1).Vx),...
+	   (md.results.TransientSolution(1).Vy),...
+	   (md.results.TransientSolution(1).Pressure),...
+	   (md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),...
+	   (md.results.TransientSolution(2).Base),...
+	   (md.results.TransientSolution(2).Surface),...
+	   (md.results.TransientSolution(2).Thickness),...
+	   (md.results.TransientSolution(2).MaskOceanLevelset),...
+	   (md.results.TransientSolution(2).Vx),...
+	   (md.results.TransientSolution(2).Vy),...
+	   (md.results.TransientSolution(2).Pressure),...
+	   (md.results.TransientSolution(2).BasalforcingsFloatingiceMeltingRate),...
+	   (md.results.TransientSolution(3).Base),...
+	   (md.results.TransientSolution(3).Surface),...
+	   (md.results.TransientSolution(3).Thickness),...
+	   (md.results.TransientSolution(3).MaskOceanLevelset),...
+	   (md.results.TransientSolution(3).Vx),...
+	   (md.results.TransientSolution(3).Vy),...
+	   (md.results.TransientSolution(3).Pressure),...
+	   (md.results.TransientSolution(3).BasalforcingsFloatingiceMeltingRate),...
+	   };
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test471.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test471.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test471.m	(revision 27955)
@@ -0,0 +1,79 @@
+%Test Name: PicopMeltRate
+md=triangle(model(),'../Exp/Square.exp',90000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.initialization.vx(:)=1.;
+md.initialization.vy(:)=1.;
+md.geometry.thickness(:)=500-md.mesh.x/10000;
+md.geometry.bed =-100-md.mesh.x/1000;
+md.geometry.base=-md.geometry.thickness*md.materials.rho_ice/md.materials.rho_water;
+md.mask.ocean_levelset=md.geometry.thickness+md.materials.rho_water/md.materials.rho_ice*md.geometry.bed;
+pos=find(md.mask.ocean_levelset>=0);
+md.geometry.base(pos)=md.geometry.bed(pos);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=setflowequation(md,'SSA','all');
+
+%Set Pico Parameters
+md.basalforcings = basalforcingspico(md.basalforcings);
+md.basalforcings.basin_id = zeros(md.mesh.numberofelements,1);
+yE = mean(md.mesh.y(md.mesh.elements),2);
+pos1 = find(yE>=5e5);	 md.basalforcings.basin_id(pos1)=1;
+pos2 = find(yE<5e5);     md.basalforcings.basin_id(pos2)=2;
+md.basalforcings.num_basins = 2;
+md.basalforcings.farocean_temperature = [271.15 272.15 273.15; 274.15 275.15 276.15; 0.5 1 1.5]; %K
+md.basalforcings.farocean_salinity    = [31 32 33; 34 35 36; 0.5 1 1.5]; %PSU                
+md.basalforcings.maxboxcount=5;
+md.basalforcings.isplume = 1;
+
+%Boundary conditions:
+md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
+md.mask.ice_levelset(find(md.mesh.x==max(md.mesh.x)))=0;
+
+%Model conditions
+md.transient.isthermal=0;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.requested_outputs={'default','BasalforcingsFloatingiceMeltingRate'};
+md.groundingline.migration='SubelementMigration';
+md.groundingline.friction_interpolation='SubelementFriction1';
+md.groundingline.melt_interpolation='SubelementMelt1';
+md.timestepping.final_time=1.5;
+md.timestepping.time_step=0.5;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+field_names     ={'Bed1','Surface1','Thickness1','Floatingice1','Vx1','Vy1','Pressure1','FloatingiceMeltingrate1',...
+	   'Bed2','Surface2','Thickness2','Floatingice2','Vx2','Vy2','Pressure2','FloatingiceMeltingrate2',...
+	   'Bed3','Surface3','Thickness3','Floatingice3','Vx3','Vy3','Pressure3','FloatingiceMeltingrate3'};
+field_tolerances={7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-10,...
+	   7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-10,...
+	   7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-10};
+field_values={...
+	   (md.results.TransientSolution(1).Base),...
+	   (md.results.TransientSolution(1).Surface),...
+	   (md.results.TransientSolution(1).Thickness),...
+	   (md.results.TransientSolution(1).MaskOceanLevelset),...
+	   (md.results.TransientSolution(1).Vx),...
+	   (md.results.TransientSolution(1).Vy),...
+	   (md.results.TransientSolution(1).Pressure),...
+	   (md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),...
+	   (md.results.TransientSolution(2).Base),...
+	   (md.results.TransientSolution(2).Surface),...
+	   (md.results.TransientSolution(2).Thickness),...
+	   (md.results.TransientSolution(2).MaskOceanLevelset),...
+	   (md.results.TransientSolution(2).Vx),...
+	   (md.results.TransientSolution(2).Vy),...
+	   (md.results.TransientSolution(2).Pressure),...
+	   (md.results.TransientSolution(2).BasalforcingsFloatingiceMeltingRate),...
+	   (md.results.TransientSolution(3).Base),...
+	   (md.results.TransientSolution(3).Surface),...
+	   (md.results.TransientSolution(3).Thickness),...
+	   (md.results.TransientSolution(3).MaskOceanLevelset),...
+	   (md.results.TransientSolution(3).Vx),...
+	   (md.results.TransientSolution(3).Vy),...
+	   (md.results.TransientSolution(3).Pressure),...
+	   (md.results.TransientSolution(3).BasalforcingsFloatingiceMeltingRate),...
+	   };
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test472.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test472.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test472.m	(revision 27955)
@@ -0,0 +1,94 @@
+%Test Name: ISMIP6MeltRateTest
+md=triangle(model(),'../Exp/Square.exp',90000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.initialization.vx(:)=1.;
+md.initialization.vy(:)=1.;
+md.geometry.thickness(:)=500-md.mesh.x/10000;
+md.geometry.bed =-100-md.mesh.x/1000;
+md.geometry.base=-md.geometry.thickness*md.materials.rho_ice/md.materials.rho_water;
+md.mask.ocean_levelset=md.geometry.thickness+md.materials.rho_water/md.materials.rho_ice*md.geometry.bed;
+pos=find(md.mask.ocean_levelset>=0);
+md.geometry.base(pos)=md.geometry.bed(pos);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=setflowequation(md,'SSA','all');
+
+%Set ISMIP6 melt rate parameters
+md.basalforcings = basalforcingsismip6(md.basalforcings);
+md.basalforcings.basin_id = zeros(md.mesh.numberofelements,1);
+yE = mean(md.mesh.y(md.mesh.elements),2);
+pos1 = find(yE>=5e5);   md.basalforcings.basin_id(pos1)=1;
+pos2 = find(yE<5e5);     md.basalforcings.basin_id(pos2)=2;
+md.basalforcings.num_basins = 2;
+md.basalforcings.delta_t   = [0.1 0.2];
+md.basalforcings.tf_depths = [0 -1000 -2000];
+md.basalforcings.gamma_0 = 14477;
+md.basalforcings.islocal = 0;
+
+%Build an artificial tf field (for times 0 and 1, 3 depth layers)
+temp1a  = 1.*ones(md.mesh.numberofvertices,1); temp1b = 1.5.*ones(md.mesh.numberofvertices,1); A = [temp1a temp1b ; [0. 1.]];
+temp2a  = 2.*ones(md.mesh.numberofvertices,1); temp2b = 2.5.*ones(md.mesh.numberofvertices,1); B = [temp2a temp2b ; [0. 1.]];
+temp3a  = 3.*ones(md.mesh.numberofvertices,1); temp3b = 3.5.*ones(md.mesh.numberofvertices,1); C = [temp3a temp3b ; [0. 1.]];
+D = cell(1,1,3); D(:,:,1)={A}; D(:,:,2)={B}; D(:,:,3)={C};
+md.basalforcings.tf = D;
+
+%Add a melt anomaly
+md.basalforcings.melt_anomaly= ones(md.mesh.numberofvertices+1,2);
+md.basalforcings.melt_anomaly(:,2)= 2;
+md.basalforcings.melt_anomaly(end,:)=[1;2];
+
+%Boundary conditions:
+md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
+md.mask.ice_levelset(find(md.mesh.x==max(md.mesh.x)))=0;
+
+%Model conditions
+md.transient.isthermal=0;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.requested_outputs={'default','BasalforcingsFloatingiceMeltingRate','BasalforcingsIsmip6TfShelf'};
+md.groundingline.migration='SubelementMigration';
+md.groundingline.friction_interpolation='SubelementFriction1';
+md.groundingline.melt_interpolation='SubelementMelt1';
+md.timestepping.final_time=1.5;
+md.timestepping.time_step=0.5;
+
+md.cluster=generic('name',oshostname(),'np',1);
+md=solve(md,'Transient');
+
+field_names     ={'Bed1','Surface1','Thickness1','Floatingice1','Vx1','Vy1','Pressure1','FloatingiceMeltingrate1','ThermalForcing1',...
+	   'Bed2','Surface2','Thickness2','Floatingice2','Vx2','Vy2','Pressure2','FloatingiceMeltingrate2','ThermalForcing2',...
+	   'Bed3','Surface3','Thickness3','Floatingice3','Vx3','Vy3','Pressure3','FloatingiceMeltingrate3','ThermalForcing3'};
+field_tolerances={7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-10,7e-08,...
+	   7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-10,7e-08,...
+	   7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-10,7e-08};
+field_values={...
+	   (md.results.TransientSolution(1).Base),...
+	   (md.results.TransientSolution(1).Surface),...
+	   (md.results.TransientSolution(1).Thickness),...
+	   (md.results.TransientSolution(1).MaskOceanLevelset),...
+	   (md.results.TransientSolution(1).Vx),...
+	   (md.results.TransientSolution(1).Vy),...
+	   (md.results.TransientSolution(1).Pressure),...
+	   (md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),...
+	   (md.results.TransientSolution(1).BasalforcingsIsmip6TfShelf),...
+	   (md.results.TransientSolution(2).Base),...
+	   (md.results.TransientSolution(2).Surface),...
+	   (md.results.TransientSolution(2).Thickness),...
+	   (md.results.TransientSolution(2).MaskOceanLevelset),...
+	   (md.results.TransientSolution(2).Vx),...
+	   (md.results.TransientSolution(2).Vy),...
+	   (md.results.TransientSolution(2).Pressure),...
+	   (md.results.TransientSolution(2).BasalforcingsFloatingiceMeltingRate),...
+	   (md.results.TransientSolution(2).BasalforcingsIsmip6TfShelf),...
+	   (md.results.TransientSolution(3).Base),...
+	   (md.results.TransientSolution(3).Surface),...
+	   (md.results.TransientSolution(3).Thickness),...
+	   (md.results.TransientSolution(3).MaskOceanLevelset),...
+	   (md.results.TransientSolution(3).Vx),...
+	   (md.results.TransientSolution(3).Vy),...
+	   (md.results.TransientSolution(3).Pressure),...
+	   (md.results.TransientSolution(3).BasalforcingsFloatingiceMeltingRate),...
+	   (md.results.TransientSolution(3).BasalforcingsIsmip6TfShelf),...
+	   };
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test473.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test473.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test473.m	(revision 27955)
@@ -0,0 +1,90 @@
+%Test Name: ISMIP6MeltRateTest_HO
+md=triangle(model(),'../Exp/Square.exp',90000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.initialization.vx(:)=1.;
+md.initialization.vy(:)=1.;
+md.geometry.thickness(:)=500-md.mesh.x/10000;
+md.geometry.bed =-100-md.mesh.x/1000;
+md.geometry.base=-md.geometry.thickness*md.materials.rho_ice/md.materials.rho_water;
+md.mask.ocean_levelset=md.geometry.thickness+md.materials.rho_water/md.materials.rho_ice*md.geometry.bed;
+pos=find(md.mask.ocean_levelset>=0);
+md.geometry.base(pos)=md.geometry.bed(pos);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=extrude(md,3,1.1);
+md=setflowequation(md,'HO','all');
+
+%Set ISMIP6 melt rate parameters
+md.basalforcings = basalforcingsismip6(md.basalforcings);
+md.basalforcings.basin_id = zeros(md.mesh.numberofelements,1);
+yE = mean(md.mesh.y(md.mesh.elements),2);
+pos1 = find(yE>=5e5);   md.basalforcings.basin_id(pos1)=1;
+pos2 = find(yE<5e5);     md.basalforcings.basin_id(pos2)=2;
+md.basalforcings.num_basins = 2;
+md.basalforcings.delta_t   = [0.1 0.2];
+md.basalforcings.tf_depths = [0 -1000 -2000];
+md.basalforcings.gamma_0 = 14477;
+md.basalforcings.islocal = 0;
+
+%Build an artificial tf field (for times 0 and 1, 3 depth layers)
+temp1a  = 1.*ones(md.mesh.numberofvertices,1); temp1b = 1.5.*ones(md.mesh.numberofvertices,1); A = [temp1a temp1b ; [0. 1.]];
+temp2a  = 2.*ones(md.mesh.numberofvertices,1); temp2b = 2.5.*ones(md.mesh.numberofvertices,1); B = [temp2a temp2b ; [0. 1.]];
+temp3a  = 3.*ones(md.mesh.numberofvertices,1); temp3b = 3.5.*ones(md.mesh.numberofvertices,1); C = [temp3a temp3b ; [0. 1.]];
+D = cell(1,1,3); D(:,:,1)={A}; D(:,:,2)={B}; D(:,:,3)={C};
+md.basalforcings.tf = D;
+
+%Boundary conditions:
+md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
+md.mask.ice_levelset(find(md.mesh.x==max(md.mesh.x)))=0;
+
+%Model conditions
+md.transient.isthermal=0;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.requested_outputs={'default','BasalforcingsFloatingiceMeltingRate','BasalforcingsIsmip6TfShelf'};
+md.groundingline.migration='SubelementMigration';
+md.groundingline.friction_interpolation='SubelementFriction1';
+md.groundingline.melt_interpolation='SubelementMelt1';
+md.timestepping.final_time=1.5;
+md.timestepping.time_step=0.5;
+
+md.cluster=generic('name',oshostname(),'np',1);
+md=solve(md,'Transient');
+
+field_names     ={'Bed1','Surface1','Thickness1','Floatingice1','Vx1','Vy1','Pressure1','FloatingiceMeltingrate1','ThermalForcing1',...
+	   'Bed2','Surface2','Thickness2','Floatingice2','Vx2','Vy2','Pressure2','FloatingiceMeltingrate2','ThermalForcing2',...
+	   'Bed3','Surface3','Thickness3','Floatingice3','Vx3','Vy3','Pressure3','FloatingiceMeltingrate3','ThermalForcing3'};
+field_tolerances={7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-10,7e-08,...
+	   7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-10,7e-08,...
+	   7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-10,7e-08};
+field_values={...
+	   (md.results.TransientSolution(1).Base),...
+	   (md.results.TransientSolution(1).Surface),...
+	   (md.results.TransientSolution(1).Thickness),...
+	   (md.results.TransientSolution(1).MaskOceanLevelset),...
+	   (md.results.TransientSolution(1).Vx),...
+	   (md.results.TransientSolution(1).Vy),...
+	   (md.results.TransientSolution(1).Pressure),...
+	   (md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),...
+	   (md.results.TransientSolution(1).BasalforcingsIsmip6TfShelf),...
+	   (md.results.TransientSolution(2).Base),...
+	   (md.results.TransientSolution(2).Surface),...
+	   (md.results.TransientSolution(2).Thickness),...
+	   (md.results.TransientSolution(2).MaskOceanLevelset),...
+	   (md.results.TransientSolution(2).Vx),...
+	   (md.results.TransientSolution(2).Vy),...
+	   (md.results.TransientSolution(2).Pressure),...
+	   (md.results.TransientSolution(2).BasalforcingsFloatingiceMeltingRate),...
+	   (md.results.TransientSolution(2).BasalforcingsIsmip6TfShelf),...
+	   (md.results.TransientSolution(3).Base),...
+	   (md.results.TransientSolution(3).Surface),...
+	   (md.results.TransientSolution(3).Thickness),...
+	   (md.results.TransientSolution(3).MaskOceanLevelset),...
+	   (md.results.TransientSolution(3).Vx),...
+	   (md.results.TransientSolution(3).Vy),...
+	   (md.results.TransientSolution(3).Pressure),...
+	   (md.results.TransientSolution(3).BasalforcingsFloatingiceMeltingRate),...
+	   (md.results.TransientSolution(3).BasalforcingsIsmip6TfShelf),...
+	   };
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test474.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test474.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test474.m	(revision 27955)
@@ -0,0 +1,80 @@
+%Test Name: PicoMeltRate_HO
+md=triangle(model(),'../Exp/Square.exp',90000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.initialization.vx(:)=1.;
+md.initialization.vy(:)=1.;
+md.geometry.thickness(:)=500-md.mesh.x/10000;
+md.geometry.bed =-100-md.mesh.x/1000;
+md.geometry.base=-md.geometry.thickness*md.materials.rho_ice/md.materials.rho_water;
+md.mask.ocean_levelset=md.geometry.thickness+md.materials.rho_water/md.materials.rho_ice*md.geometry.bed;
+pos=find(md.mask.ocean_levelset>=0);
+md.geometry.base(pos)=md.geometry.bed(pos);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=extrude(md,3,1.1);
+md=setflowequation(md,'HO','all');
+
+%Set Pico Parameters
+md.basalforcings = basalforcingspico(md.basalforcings);
+md.basalforcings.basin_id = zeros(md.mesh.numberofelements,1);
+yE = mean(md.mesh.y(md.mesh.elements),2);
+pos1 = find(yE>=5e5);	 md.basalforcings.basin_id(pos1)=1;
+pos2 = find(yE<5e5);     md.basalforcings.basin_id(pos2)=2;
+md.basalforcings.num_basins = 2;
+md.basalforcings.farocean_temperature = [271.15 272.15 273.15; 274.15 275.15 276.15; 0.5 1 1.5]; %K
+md.basalforcings.farocean_salinity    = [31 32 33; 34 35 36; 0.5 1 1.5]; %PSU                
+md.basalforcings.maxboxcount=5;
+md.basalforcings.isplume = 0;
+
+%Boundary conditions:
+md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
+md.mask.ice_levelset(find(md.mesh.x==max(md.mesh.x)))=0;
+
+%Model conditions
+md.transient.isthermal=0;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.requested_outputs={'default','BasalforcingsFloatingiceMeltingRate'};
+md.groundingline.migration='SubelementMigration';
+md.groundingline.friction_interpolation='SubelementFriction1';
+md.groundingline.melt_interpolation='SubelementMelt1';
+md.timestepping.final_time=1.5;
+md.timestepping.time_step=0.5;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+field_names     ={'Bed1','Surface1','Thickness1','Floatingice1','Vx1','Vy1','Pressure1','FloatingiceMeltingrate1',...
+	   'Bed2','Surface2','Thickness2','Floatingice2','Vx2','Vy2','Pressure2','FloatingiceMeltingrate2',...
+	   'Bed3','Surface3','Thickness3','Floatingice3','Vx3','Vy3','Pressure3','FloatingiceMeltingrate3'};
+field_tolerances={7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-10,...
+	   7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-10,...
+	   7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-10};
+field_values={...
+	   (md.results.TransientSolution(1).Base),...
+	   (md.results.TransientSolution(1).Surface),...
+	   (md.results.TransientSolution(1).Thickness),...
+	   (md.results.TransientSolution(1).MaskOceanLevelset),...
+	   (md.results.TransientSolution(1).Vx),...
+	   (md.results.TransientSolution(1).Vy),...
+	   (md.results.TransientSolution(1).Pressure),...
+	   (md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),...
+	   (md.results.TransientSolution(2).Base),...
+	   (md.results.TransientSolution(2).Surface),...
+	   (md.results.TransientSolution(2).Thickness),...
+	   (md.results.TransientSolution(2).MaskOceanLevelset),...
+	   (md.results.TransientSolution(2).Vx),...
+	   (md.results.TransientSolution(2).Vy),...
+	   (md.results.TransientSolution(2).Pressure),...
+	   (md.results.TransientSolution(2).BasalforcingsFloatingiceMeltingRate),...
+	   (md.results.TransientSolution(3).Base),...
+	   (md.results.TransientSolution(3).Surface),...
+	   (md.results.TransientSolution(3).Thickness),...
+	   (md.results.TransientSolution(3).MaskOceanLevelset),...
+	   (md.results.TransientSolution(3).Vx),...
+	   (md.results.TransientSolution(3).Vy),...
+	   (md.results.TransientSolution(3).Pressure),...
+	   (md.results.TransientSolution(3).BasalforcingsFloatingiceMeltingRate),...
+	   };
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test475.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test475.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test475.m	(revision 27955)
@@ -0,0 +1,80 @@
+%Test Name: PicopMeltRate_HO
+md=triangle(model(),'../Exp/Square.exp',90000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.initialization.vx(:)=1.;
+md.initialization.vy(:)=1.;
+md.geometry.thickness(:)=500-md.mesh.x/10000;
+md.geometry.bed =-100-md.mesh.x/1000;
+md.geometry.base=-md.geometry.thickness*md.materials.rho_ice/md.materials.rho_water;
+md.mask.ocean_levelset=md.geometry.thickness+md.materials.rho_water/md.materials.rho_ice*md.geometry.bed;
+pos=find(md.mask.ocean_levelset>=0);
+md.geometry.base(pos)=md.geometry.bed(pos);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=extrude(md,3,1.1);
+md=setflowequation(md,'HO','all');
+
+%Set Pico Parameters
+md.basalforcings = basalforcingspico(md.basalforcings);
+md.basalforcings.basin_id = zeros(md.mesh.numberofelements,1);
+yE = mean(md.mesh.y(md.mesh.elements),2);
+pos1 = find(yE>=5e5);	 md.basalforcings.basin_id(pos1)=1;
+pos2 = find(yE<5e5);     md.basalforcings.basin_id(pos2)=2;
+md.basalforcings.num_basins = 2;
+md.basalforcings.farocean_temperature = [271.15 272.15 273.15; 274.15 275.15 276.15; 0.5 1 1.5]; %K
+md.basalforcings.farocean_salinity    = [31 32 33; 34 35 36; 0.5 1 1.5]; %PSU                
+md.basalforcings.maxboxcount=5;
+md.basalforcings.isplume = 1;
+
+%Boundary conditions:
+md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
+md.mask.ice_levelset(find(md.mesh.x==max(md.mesh.x)))=0;
+
+%Model conditions
+md.transient.isthermal=0;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.requested_outputs={'default','BasalforcingsFloatingiceMeltingRate','GroundinglineHeight'};
+md.groundingline.migration='SubelementMigration';
+md.groundingline.friction_interpolation='SubelementFriction1';
+md.groundingline.melt_interpolation='SubelementMelt1';
+md.timestepping.final_time=1.5;
+md.timestepping.time_step=0.5;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+field_names     ={'Bed1','Surface1','Thickness1','Floatingice1','Vx1','Vy1','Pressure1','FloatingiceMeltingrate1',...
+	   'Bed2','Surface2','Thickness2','Floatingice2','Vx2','Vy2','Pressure2','FloatingiceMeltingrate2',...
+	   'Bed3','Surface3','Thickness3','Floatingice3','Vx3','Vy3','Pressure3','FloatingiceMeltingrate3'};
+field_tolerances={7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-7,...
+	   7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-7,...
+	   7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-7};
+field_values={...
+	   (md.results.TransientSolution(1).Base),...
+	   (md.results.TransientSolution(1).Surface),...
+	   (md.results.TransientSolution(1).Thickness),...
+	   (md.results.TransientSolution(1).MaskOceanLevelset),...
+	   (md.results.TransientSolution(1).Vx),...
+	   (md.results.TransientSolution(1).Vy),...
+	   (md.results.TransientSolution(1).Pressure),...
+	   (md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),...
+	   (md.results.TransientSolution(2).Base),...
+	   (md.results.TransientSolution(2).Surface),...
+	   (md.results.TransientSolution(2).Thickness),...
+	   (md.results.TransientSolution(2).MaskOceanLevelset),...
+	   (md.results.TransientSolution(2).Vx),...
+	   (md.results.TransientSolution(2).Vy),...
+	   (md.results.TransientSolution(2).Pressure),...
+	   (md.results.TransientSolution(2).BasalforcingsFloatingiceMeltingRate),...
+	   (md.results.TransientSolution(3).Base),...
+	   (md.results.TransientSolution(3).Surface),...
+	   (md.results.TransientSolution(3).Thickness),...
+	   (md.results.TransientSolution(3).MaskOceanLevelset),...
+	   (md.results.TransientSolution(3).Vx),...
+	   (md.results.TransientSolution(3).Vy),...
+	   (md.results.TransientSolution(3).Pressure),...
+	   (md.results.TransientSolution(3).BasalforcingsFloatingiceMeltingRate),...
+	   };
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test476.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test476.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test476.m	(revision 27955)
@@ -0,0 +1,74 @@
+%Test Name: BeckmannGoosseMeltRate_HO
+md=triangle(model(),'../Exp/Square.exp',90000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.initialization.vx(:)=1.;
+md.initialization.vy(:)=1.;
+md.geometry.thickness(:)=500-md.mesh.x/10000;
+md.geometry.bed =-100-md.mesh.x/1000;
+md.geometry.base=-md.geometry.thickness*md.materials.rho_ice/md.materials.rho_water;
+md.mask.ocean_levelset=md.geometry.thickness+md.materials.rho_water/md.materials.rho_ice*md.geometry.bed;
+pos=find(md.mask.ocean_levelset>=0);
+md.geometry.base(pos)=md.geometry.bed(pos);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=extrude(md,3,1.1);
+md=setflowequation(md,'HO','all');
+
+%Set Pico Parameters
+md.basalforcings=basalforcingsbeckmanngoosse(md.basalforcings);
+md.basalforcings.ocean_temp=-1.7*ones(md.mesh.numberofvertices,1);         
+md.basalforcings.ocean_salinity=35.0*ones(md.mesh.numberofvertices,1);  
+md.basalforcings.meltrate_factor=1;
+
+%Boundary conditions:
+md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
+md.mask.ice_levelset(find(md.mesh.x==max(md.mesh.x)))=0;
+
+%Model conditions
+md.transient.isthermal=0;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.requested_outputs={'default','BasalforcingsFloatingiceMeltingRate'};
+md.groundingline.migration='SubelementMigration';
+md.groundingline.friction_interpolation='SubelementFriction1';
+md.groundingline.melt_interpolation='SubelementMelt1';
+md.timestepping.final_time=1.5;
+md.timestepping.time_step=0.5;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+field_names     ={'Bed1','Surface1','Thickness1','Floatingice1','Vx1','Vy1','Pressure1','FloatingiceMeltingrate1',...
+	   'Bed2','Surface2','Thickness2','Floatingice2','Vx2','Vy2','Pressure2','FloatingiceMeltingrate2',...
+	   'Bed3','Surface3','Thickness3','Floatingice3','Vx3','Vy3','Pressure3','FloatingiceMeltingrate3'};
+field_tolerances={7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-7,...
+	   7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-7,...
+	   7e-09,8e-09,8e-09,7e-09,6e-08,7e-08,6e-09,8e-7};
+field_values={...
+	   (md.results.TransientSolution(1).Base),...
+	   (md.results.TransientSolution(1).Surface),...
+	   (md.results.TransientSolution(1).Thickness),...
+	   (md.results.TransientSolution(1).MaskOceanLevelset),...
+	   (md.results.TransientSolution(1).Vx),...
+	   (md.results.TransientSolution(1).Vy),...
+	   (md.results.TransientSolution(1).Pressure),...
+	   (md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),...
+	   (md.results.TransientSolution(2).Base),...
+	   (md.results.TransientSolution(2).Surface),...
+	   (md.results.TransientSolution(2).Thickness),...
+	   (md.results.TransientSolution(2).MaskOceanLevelset),...
+	   (md.results.TransientSolution(2).Vx),...
+	   (md.results.TransientSolution(2).Vy),...
+	   (md.results.TransientSolution(2).Pressure),...
+	   (md.results.TransientSolution(2).BasalforcingsFloatingiceMeltingRate),...
+	   (md.results.TransientSolution(3).Base),...
+	   (md.results.TransientSolution(3).Surface),...
+	   (md.results.TransientSolution(3).Thickness),...
+	   (md.results.TransientSolution(3).MaskOceanLevelset),...
+	   (md.results.TransientSolution(3).Vx),...
+	   (md.results.TransientSolution(3).Vy),...
+	   (md.results.TransientSolution(3).Pressure),...
+	   (md.results.TransientSolution(3).BasalforcingsFloatingiceMeltingRate),...
+	   };
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test480.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test480.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test480.m	(revision 27955)
@@ -0,0 +1,40 @@
+%Test Name: TransientFrictionTsai
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,4,1);
+md=setflowequation(md,'HO','all');
+md.transient.isthermal = 0;
+md.friction=frictiontsai(md.friction);
+md.friction.C = 20.e4*ones(md.mesh.numberofvertices,1);
+md.friction.f = 0.5*ones(md.mesh.numberofvertices,1);
+md.friction.m = 1./3.*ones(md.mesh.numberofelements,1);
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test481.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test481.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test481.m	(revision 27955)
@@ -0,0 +1,40 @@
+%Test Name: TransientFrictionSchoof
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,4,1);
+md=setflowequation(md,'HO','all');
+md.transient.isthermal = 0;
+md.friction=frictionschoof(md.friction);
+md.friction.C    = (20.e4)^0.5*ones(md.mesh.numberofvertices,1);
+md.friction.Cmax = 0.5*ones(md.mesh.numberofvertices,1);
+md.friction.m    = 1./3.*ones(md.mesh.numberofelements,1);
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
+field_tolerances={2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,2e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test481.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test481.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test481.py	(revision 27955)
@@ -0,0 +1,60 @@
+#Test Name: TransientFrictionSchoof
+import numpy as np
+
+from frictionschoof import frictionschoof
+from socket import gethostname
+from model import *
+from parameterize import parameterize
+from setflowequation import setflowequation
+from setmask import setmask
+from solve import solve
+from transient import transient
+from triangle import triangle
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.extrude(4, 1)
+md = setflowequation(md, 'HO', 'all')
+md.transient.isthermal = 0
+md.friction = frictionschoof(md.friction)
+md.friction.C    = pow(20.e4, 0.5) * np.ones((md.mesh.numberofvertices, 1))
+md.friction.Cmax = 0.5 * np.ones((md.mesh.numberofvertices, 1))
+md.friction.m    = 1./3.* np.ones((md.mesh.numberofelements, 1))
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = [
+    'Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1',
+    'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2',
+    'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3'
+]
+field_tolerances = [
+    2e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09,
+    1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09,
+    2e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09, 1e-09
+]
+field_values = [
+    md.results.TransientSolution[0].Vx,
+    md.results.TransientSolution[0].Vy,
+    md.results.TransientSolution[0].Vel,
+    md.results.TransientSolution[0].Pressure,
+    md.results.TransientSolution[0].Base,
+    md.results.TransientSolution[0].Surface,
+    md.results.TransientSolution[0].Thickness,
+    md.results.TransientSolution[1].Vx,
+    md.results.TransientSolution[1].Vy,
+    md.results.TransientSolution[1].Vel,
+    md.results.TransientSolution[1].Pressure,
+    md.results.TransientSolution[1].Base,
+    md.results.TransientSolution[1].Surface,
+    md.results.TransientSolution[1].Thickness,
+    md.results.TransientSolution[2].Vx,
+    md.results.TransientSolution[2].Vy,
+    md.results.TransientSolution[2].Vel,
+    md.results.TransientSolution[2].Pressure,
+    md.results.TransientSolution[2].Base,
+    md.results.TransientSolution[2].Surface,
+    md.results.TransientSolution[2].Thickness
+]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test491.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test491.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test491.m	(revision 27955)
@@ -0,0 +1,69 @@
+%Test Name: SquareSheetShelfTranMeltArtDiff
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.geometry.bed=md.geometry.base;
+pos=find(md.mask.ocean_levelset<0);
+md.geometry.bed(pos)=md.geometry.base(pos)-10;
+md.friction=frictioncoulomb();
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.friction.coefficientcoulomb=0.02*ones(md.mesh.numberofvertices,1);
+md.transient.isthermal=0;
+md.transient.isgroundingline=1;
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb','TotalSmb'};
+md.masstransport.stabilization=1;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={...
+	'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1','TotalSmb1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','FloatingArea2','TotalFloatingBmb2','TotalGroundedBmb2','TotalSmb2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','FloatingArea3','TotalFloatingBmb3','TotalGroundedBmb3','TotalSmb3'...
+};
+field_tolerances={...
+	2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13...
+};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
+	(md.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
+	(md.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).GroundedArea),...
+	(md.results.TransientSolution(3).FloatingArea),...
+	(md.results.TransientSolution(3).TotalFloatingBmb),...
+	(md.results.TransientSolution(3).TotalGroundedBmb),...
+	(md.results.TransientSolution(3).TotalSmb),...
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test491.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test491.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test491.py	(revision 27955)
@@ -0,0 +1,80 @@
+#Test Name: SquareSheetShelfTranMeltArtDiff 
+import numpy as np
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from frictioncoulomb import frictioncoulomb
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.geometry.bed = copy.deepcopy(md.geometry.base)
+pos = np.nonzero(md.mask.ocean_levelset < 0.)
+md.geometry.bed[pos] = md.geometry.bed[pos] - 10
+md.friction = frictioncoulomb()
+md.friction.coefficient = 20 * np.ones(md.mesh.numberofvertices)
+md.friction.p = 1 * np.ones(md.mesh.numberofelements)
+md.friction.q = 1 * np.ones(md.mesh.numberofelements)
+md.friction.coefficientcoulomb = 0.02 * np.ones(md.mesh.numberofvertices)
+md.transient.isthermal = False
+md.transient.isgroundingline = True
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.requested_outputs = ['default', 'GroundedArea', 'FloatingArea', 'TotalFloatingBmb', 'TotalGroundedBmb', 'TotalSmb']
+md.masstransport.stabilization = 1
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = [
+    'Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'GroundedArea1', 'FloatingArea1', 'TotalFloatingBmb1', 'TotalGroundedBmb1', 'TotalSmb1', 
+    'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'GroundedArea2', 'FloatingArea2', 'TotalFloatingBmb2', 'TotalGroundedBmb2', 'TotalSmb2', 
+    'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'GroundedArea3', 'FloatingArea3', 'TotalFloatingBmb3', 'TotalGroundedBmb3', 'TotalSmb3'
+]
+field_tolerances = [
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 
+]
+field_values = [
+    md.results.TransientSolution[0].Vx,
+    md.results.TransientSolution[0].Vy,
+    md.results.TransientSolution[0].Vel,
+    md.results.TransientSolution[0].Pressure,
+    md.results.TransientSolution[0].Base,
+    md.results.TransientSolution[0].Surface,
+    md.results.TransientSolution[0].Thickness,
+    md.results.TransientSolution[0].GroundedArea,
+    md.results.TransientSolution[0].FloatingArea,
+    md.results.TransientSolution[0].TotalFloatingBmb,
+    md.results.TransientSolution[0].TotalGroundedBmb,
+    md.results.TransientSolution[0].TotalSmb,
+    md.results.TransientSolution[1].Vx,
+    md.results.TransientSolution[1].Vy,
+    md.results.TransientSolution[1].Vel,
+    md.results.TransientSolution[1].Pressure,
+    md.results.TransientSolution[1].Base,
+    md.results.TransientSolution[1].Surface,
+    md.results.TransientSolution[1].Thickness,
+    md.results.TransientSolution[1].GroundedArea,
+    md.results.TransientSolution[1].FloatingArea,
+    md.results.TransientSolution[1].TotalFloatingBmb,
+    md.results.TransientSolution[1].TotalGroundedBmb,
+    md.results.TransientSolution[1].TotalSmb,
+    md.results.TransientSolution[2].Vx,
+    md.results.TransientSolution[2].Vy,
+    md.results.TransientSolution[2].Vel,
+    md.results.TransientSolution[2].Pressure,
+    md.results.TransientSolution[2].Base,
+    md.results.TransientSolution[2].Surface,
+    md.results.TransientSolution[2].Thickness,
+    md.results.TransientSolution[2].GroundedArea,
+    md.results.TransientSolution[2].FloatingArea,
+    md.results.TransientSolution[2].TotalFloatingBmb,
+    md.results.TransientSolution[2].TotalGroundedBmb,
+    md.results.TransientSolution[2].TotalSmb
+]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test492.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test492.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test492.m	(revision 27955)
@@ -0,0 +1,69 @@
+%Test Name: SquareSheetShelfTranMeltStreamlineUpwind
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.geometry.bed=md.geometry.base;
+pos=find(md.mask.ocean_levelset<0);
+md.geometry.bed(pos)=md.geometry.base(pos)-10;
+md.friction=frictioncoulomb();
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.friction.coefficientcoulomb=0.02*ones(md.mesh.numberofvertices,1);
+md.transient.isthermal=0;
+md.transient.isgroundingline=1;
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb','TotalSmb'};
+md.masstransport.stabilization=2;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={...
+	'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1','TotalSmb1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','FloatingArea2','TotalFloatingBmb2','TotalGroundedBmb2','TotalSmb2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','FloatingArea3','TotalFloatingBmb3','TotalGroundedBmb3','TotalSmb3'...
+};
+field_tolerances={...
+	2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13...
+};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
+	(md.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
+	(md.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).GroundedArea),...
+	(md.results.TransientSolution(3).FloatingArea),...
+	(md.results.TransientSolution(3).TotalFloatingBmb),...
+	(md.results.TransientSolution(3).TotalGroundedBmb),...
+	(md.results.TransientSolution(3).TotalSmb),...
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test492.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test492.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test492.py	(revision 27955)
@@ -0,0 +1,80 @@
+#Test Name: SquareSheetShelfTranMeltStreamlineUpwind 
+import numpy as np
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from frictioncoulomb import frictioncoulomb
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.geometry.bed = copy.deepcopy(md.geometry.base)
+pos = np.nonzero(md.mask.ocean_levelset < 0.)
+md.geometry.bed[pos] = md.geometry.bed[pos] - 10
+md.friction = frictioncoulomb()
+md.friction.coefficient = 20 * np.ones(md.mesh.numberofvertices)
+md.friction.p = 1 * np.ones(md.mesh.numberofelements)
+md.friction.q = 1 * np.ones(md.mesh.numberofelements)
+md.friction.coefficientcoulomb = 0.02 * np.ones(md.mesh.numberofvertices)
+md.transient.isthermal = False
+md.transient.isgroundingline = True
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.requested_outputs = ['default', 'GroundedArea', 'FloatingArea', 'TotalFloatingBmb', 'TotalGroundedBmb', 'TotalSmb']
+md.masstransport.stabilization = 2
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = [
+    'Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'GroundedArea1', 'FloatingArea1', 'TotalFloatingBmb1', 'TotalGroundedBmb1', 'TotalSmb1', 
+    'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'GroundedArea2', 'FloatingArea2', 'TotalFloatingBmb2', 'TotalGroundedBmb2', 'TotalSmb2', 
+    'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'GroundedArea3', 'FloatingArea3', 'TotalFloatingBmb3', 'TotalGroundedBmb3', 'TotalSmb3'
+]
+field_tolerances = [
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 
+]
+field_values = [
+    md.results.TransientSolution[0].Vx,
+    md.results.TransientSolution[0].Vy,
+    md.results.TransientSolution[0].Vel,
+    md.results.TransientSolution[0].Pressure,
+    md.results.TransientSolution[0].Base,
+    md.results.TransientSolution[0].Surface,
+    md.results.TransientSolution[0].Thickness,
+    md.results.TransientSolution[0].GroundedArea,
+    md.results.TransientSolution[0].FloatingArea,
+    md.results.TransientSolution[0].TotalFloatingBmb,
+    md.results.TransientSolution[0].TotalGroundedBmb,
+    md.results.TransientSolution[0].TotalSmb,
+    md.results.TransientSolution[1].Vx,
+    md.results.TransientSolution[1].Vy,
+    md.results.TransientSolution[1].Vel,
+    md.results.TransientSolution[1].Pressure,
+    md.results.TransientSolution[1].Base,
+    md.results.TransientSolution[1].Surface,
+    md.results.TransientSolution[1].Thickness,
+    md.results.TransientSolution[1].GroundedArea,
+    md.results.TransientSolution[1].FloatingArea,
+    md.results.TransientSolution[1].TotalFloatingBmb,
+    md.results.TransientSolution[1].TotalGroundedBmb,
+    md.results.TransientSolution[1].TotalSmb,
+    md.results.TransientSolution[2].Vx,
+    md.results.TransientSolution[2].Vy,
+    md.results.TransientSolution[2].Vel,
+    md.results.TransientSolution[2].Pressure,
+    md.results.TransientSolution[2].Base,
+    md.results.TransientSolution[2].Surface,
+    md.results.TransientSolution[2].Thickness,
+    md.results.TransientSolution[2].GroundedArea,
+    md.results.TransientSolution[2].FloatingArea,
+    md.results.TransientSolution[2].TotalFloatingBmb,
+    md.results.TransientSolution[2].TotalGroundedBmb,
+    md.results.TransientSolution[2].TotalSmb
+]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test493.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test493.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test493.m	(revision 27955)
@@ -0,0 +1,70 @@
+%Test Name: SquareSheetShelfTranMeltDG
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.geometry.bed=md.geometry.base;
+pos=find(md.mask.ocean_levelset<0);
+md.geometry.bed(pos)=md.geometry.base(pos)-10;
+md.friction=frictioncoulomb();
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.friction.coefficientcoulomb=0.02*ones(md.mesh.numberofvertices,1);
+md.transient.isthermal=0;
+md.transient.isgroundingline=1;
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb','TotalSmb'};
+md.masstransport.stabilization=3;
+md.masstransport.spcthickness=md.geometry.thickness;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={...
+	'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1','TotalSmb1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','FloatingArea2','TotalFloatingBmb2','TotalGroundedBmb2','TotalSmb2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','FloatingArea3','TotalFloatingBmb3','TotalGroundedBmb3','TotalSmb3'...
+};
+field_tolerances={...
+	2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	2e-13,2e-13,2e-13,1e-13,1e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13...
+};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
+	(md.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
+	(md.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).GroundedArea),...
+	(md.results.TransientSolution(3).FloatingArea),...
+	(md.results.TransientSolution(3).TotalFloatingBmb),...
+	(md.results.TransientSolution(3).TotalGroundedBmb),...
+	(md.results.TransientSolution(3).TotalSmb),...
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test493.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test493.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test493.py	(revision 27955)
@@ -0,0 +1,81 @@
+#Test Name: SquareSheetShelfTranMeltDG 
+import numpy as np
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from frictioncoulomb import frictioncoulomb
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.geometry.bed = copy.deepcopy(md.geometry.base)
+pos = np.nonzero(md.mask.ocean_levelset < 0.)
+md.geometry.bed[pos] = md.geometry.bed[pos] - 10
+md.friction = frictioncoulomb()
+md.friction.coefficient = 20 * np.ones(md.mesh.numberofvertices)
+md.friction.p = 1 * np.ones(md.mesh.numberofelements)
+md.friction.q = 1 * np.ones(md.mesh.numberofelements)
+md.friction.coefficientcoulomb = 0.02 * np.ones(md.mesh.numberofvertices)
+md.transient.isthermal = False
+md.transient.isgroundingline = True
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.requested_outputs = ['default', 'GroundedArea', 'FloatingArea', 'TotalFloatingBmb', 'TotalGroundedBmb', 'TotalSmb']
+md.masstransport.stabilization = 3
+md.masstransport.spcthickness = md.geometry.thickness
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = [
+    'Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'GroundedArea1', 'FloatingArea1', 'TotalFloatingBmb1', 'TotalGroundedBmb1', 'TotalSmb1', 
+    'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'GroundedArea2', 'FloatingArea2', 'TotalFloatingBmb2', 'TotalGroundedBmb2', 'TotalSmb2', 
+    'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'GroundedArea3', 'FloatingArea3', 'TotalFloatingBmb3', 'TotalGroundedBmb3', 'TotalSmb3'
+]
+field_tolerances = [
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 
+]
+field_values = [
+    md.results.TransientSolution[0].Vx,
+    md.results.TransientSolution[0].Vy,
+    md.results.TransientSolution[0].Vel,
+    md.results.TransientSolution[0].Pressure,
+    md.results.TransientSolution[0].Base,
+    md.results.TransientSolution[0].Surface,
+    md.results.TransientSolution[0].Thickness,
+    md.results.TransientSolution[0].GroundedArea,
+    md.results.TransientSolution[0].FloatingArea,
+    md.results.TransientSolution[0].TotalFloatingBmb,
+    md.results.TransientSolution[0].TotalGroundedBmb,
+    md.results.TransientSolution[0].TotalSmb,
+    md.results.TransientSolution[1].Vx,
+    md.results.TransientSolution[1].Vy,
+    md.results.TransientSolution[1].Vel,
+    md.results.TransientSolution[1].Pressure,
+    md.results.TransientSolution[1].Base,
+    md.results.TransientSolution[1].Surface,
+    md.results.TransientSolution[1].Thickness,
+    md.results.TransientSolution[1].GroundedArea,
+    md.results.TransientSolution[1].FloatingArea,
+    md.results.TransientSolution[1].TotalFloatingBmb,
+    md.results.TransientSolution[1].TotalGroundedBmb,
+    md.results.TransientSolution[1].TotalSmb,
+    md.results.TransientSolution[2].Vx,
+    md.results.TransientSolution[2].Vy,
+    md.results.TransientSolution[2].Vel,
+    md.results.TransientSolution[2].Pressure,
+    md.results.TransientSolution[2].Base,
+    md.results.TransientSolution[2].Surface,
+    md.results.TransientSolution[2].Thickness,
+    md.results.TransientSolution[2].GroundedArea,
+    md.results.TransientSolution[2].FloatingArea,
+    md.results.TransientSolution[2].TotalFloatingBmb,
+    md.results.TransientSolution[2].TotalGroundedBmb,
+    md.results.TransientSolution[2].TotalSmb
+]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test494.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test494.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test494.m	(revision 27955)
@@ -0,0 +1,69 @@
+%Test Name: SquareSheetShelfTranMeltFCT
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.geometry.bed=md.geometry.base;
+pos=find(md.mask.ocean_levelset<0);
+md.geometry.bed(pos)=md.geometry.base(pos)-10;
+md.friction=frictioncoulomb();
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.friction.coefficientcoulomb=0.02*ones(md.mesh.numberofvertices,1);
+md.transient.isthermal=0;
+md.transient.isgroundingline=1;
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb','TotalSmb'};
+md.masstransport.stabilization=4;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={...
+	'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1','TotalSmb1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','FloatingArea2','TotalFloatingBmb2','TotalGroundedBmb2','TotalSmb2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','FloatingArea3','TotalFloatingBmb3','TotalGroundedBmb3','TotalSmb3'...
+};
+field_tolerances={...
+	2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	2e-13,2e-13,2e-13,1e-13,2e-13,4e-13,9e-13,1e-13,1e-13,1e-13,1e-13,1e-13...
+};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
+	(md.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
+	(md.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).GroundedArea),...
+	(md.results.TransientSolution(3).FloatingArea),...
+	(md.results.TransientSolution(3).TotalFloatingBmb),...
+	(md.results.TransientSolution(3).TotalGroundedBmb),...
+	(md.results.TransientSolution(3).TotalSmb),...
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test494.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test494.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test494.py	(revision 27955)
@@ -0,0 +1,80 @@
+#Test Name: SquareSheetShelfTranMeltFCT 
+import numpy as np
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from frictioncoulomb import frictioncoulomb
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.geometry.bed = copy.deepcopy(md.geometry.base)
+pos = np.nonzero(md.mask.ocean_levelset < 0.)
+md.geometry.bed[pos] = md.geometry.bed[pos] - 10
+md.friction = frictioncoulomb()
+md.friction.coefficient = 20 * np.ones(md.mesh.numberofvertices)
+md.friction.p = 1 * np.ones(md.mesh.numberofelements)
+md.friction.q = 1 * np.ones(md.mesh.numberofelements)
+md.friction.coefficientcoulomb = 0.02 * np.ones(md.mesh.numberofvertices)
+md.transient.isthermal = False
+md.transient.isgroundingline = True
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.requested_outputs = ['default', 'GroundedArea', 'FloatingArea', 'TotalFloatingBmb', 'TotalGroundedBmb', 'TotalSmb']
+md.masstransport.stabilization = 4
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = [
+    'Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'GroundedArea1', 'FloatingArea1', 'TotalFloatingBmb1', 'TotalGroundedBmb1', 'TotalSmb1', 
+    'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'GroundedArea2', 'FloatingArea2', 'TotalFloatingBmb2', 'TotalGroundedBmb2', 'TotalSmb2', 
+    'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'GroundedArea3', 'FloatingArea3', 'TotalFloatingBmb3', 'TotalGroundedBmb3', 'TotalSmb3'
+]
+field_tolerances = [
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 
+    2e-13, 2e-13, 2e-13, 1e-13, 2e-13, 6e-13, 9e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 
+]
+field_values = [
+    md.results.TransientSolution[0].Vx,
+    md.results.TransientSolution[0].Vy,
+    md.results.TransientSolution[0].Vel,
+    md.results.TransientSolution[0].Pressure,
+    md.results.TransientSolution[0].Base,
+    md.results.TransientSolution[0].Surface,
+    md.results.TransientSolution[0].Thickness,
+    md.results.TransientSolution[0].GroundedArea,
+    md.results.TransientSolution[0].FloatingArea,
+    md.results.TransientSolution[0].TotalFloatingBmb,
+    md.results.TransientSolution[0].TotalGroundedBmb,
+    md.results.TransientSolution[0].TotalSmb,
+    md.results.TransientSolution[1].Vx,
+    md.results.TransientSolution[1].Vy,
+    md.results.TransientSolution[1].Vel,
+    md.results.TransientSolution[1].Pressure,
+    md.results.TransientSolution[1].Base,
+    md.results.TransientSolution[1].Surface,
+    md.results.TransientSolution[1].Thickness,
+    md.results.TransientSolution[1].GroundedArea,
+    md.results.TransientSolution[1].FloatingArea,
+    md.results.TransientSolution[1].TotalFloatingBmb,
+    md.results.TransientSolution[1].TotalGroundedBmb,
+    md.results.TransientSolution[1].TotalSmb,
+    md.results.TransientSolution[2].Vx,
+    md.results.TransientSolution[2].Vy,
+    md.results.TransientSolution[2].Vel,
+    md.results.TransientSolution[2].Pressure,
+    md.results.TransientSolution[2].Base,
+    md.results.TransientSolution[2].Surface,
+    md.results.TransientSolution[2].Thickness,
+    md.results.TransientSolution[2].GroundedArea,
+    md.results.TransientSolution[2].FloatingArea,
+    md.results.TransientSolution[2].TotalFloatingBmb,
+    md.results.TransientSolution[2].TotalGroundedBmb,
+    md.results.TransientSolution[2].TotalSmb
+]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test495.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test495.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test495.m	(revision 27955)
@@ -0,0 +1,69 @@
+%Test Name: SquareSheetShelfTranMeltSUPG
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md.geometry.bed=md.geometry.base;
+pos=find(md.mask.ocean_levelset<0);
+md.geometry.bed(pos)=md.geometry.base(pos)-10;
+md.friction=frictioncoulomb();
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.friction.coefficientcoulomb=0.02*ones(md.mesh.numberofvertices,1);
+md.transient.isthermal=0;
+md.transient.isgroundingline=1;
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb','TotalSmb'};
+md.masstransport.stabilization=5;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names={...
+	'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1','TotalSmb1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','FloatingArea2','TotalFloatingBmb2','TotalGroundedBmb2','TotalSmb2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','FloatingArea3','TotalFloatingBmb3','TotalGroundedBmb3','TotalSmb3'...
+};
+field_tolerances={...
+	2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13...
+};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
+	(md.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
+	(md.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).GroundedArea),...
+	(md.results.TransientSolution(3).FloatingArea),...
+	(md.results.TransientSolution(3).TotalFloatingBmb),...
+	(md.results.TransientSolution(3).TotalGroundedBmb),...
+	(md.results.TransientSolution(3).TotalSmb),...
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test495.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test495.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test495.py	(revision 27955)
@@ -0,0 +1,80 @@
+#Test Name: SquareSheetShelfTranMeltSUPG 
+import numpy as np
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+from frictioncoulomb import frictioncoulomb
+
+md = triangle(model(), '../Exp/Square.exp', 150000.)
+md = setmask(md, '../Exp/SquareShelf.exp', '')
+md = parameterize(md, '../Par/SquareSheetShelf.py')
+md.geometry.bed = copy.deepcopy(md.geometry.base)
+pos = np.nonzero(md.mask.ocean_levelset < 0.)
+md.geometry.bed[pos] = md.geometry.bed[pos] - 10
+md.friction = frictioncoulomb()
+md.friction.coefficient = 20 * np.ones(md.mesh.numberofvertices)
+md.friction.p = 1 * np.ones(md.mesh.numberofelements)
+md.friction.q = 1 * np.ones(md.mesh.numberofelements)
+md.friction.coefficientcoulomb = 0.02 * np.ones(md.mesh.numberofvertices)
+md.transient.isthermal = False
+md.transient.isgroundingline = True
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.requested_outputs = ['default', 'GroundedArea', 'FloatingArea', 'TotalFloatingBmb', 'TotalGroundedBmb', 'TotalSmb']
+md.masstransport.stabilization = 5
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = [
+    'Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'GroundedArea1', 'FloatingArea1', 'TotalFloatingBmb1', 'TotalGroundedBmb1', 'TotalSmb1', 
+    'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'GroundedArea2', 'FloatingArea2', 'TotalFloatingBmb2', 'TotalGroundedBmb2', 'TotalSmb2', 
+    'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3', 'GroundedArea3', 'FloatingArea3', 'TotalFloatingBmb3', 'TotalGroundedBmb3', 'TotalSmb3'
+]
+field_tolerances = [
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 
+    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 
+]
+field_values = [
+    md.results.TransientSolution[0].Vx,
+    md.results.TransientSolution[0].Vy,
+    md.results.TransientSolution[0].Vel,
+    md.results.TransientSolution[0].Pressure,
+    md.results.TransientSolution[0].Base,
+    md.results.TransientSolution[0].Surface,
+    md.results.TransientSolution[0].Thickness,
+    md.results.TransientSolution[0].GroundedArea,
+    md.results.TransientSolution[0].FloatingArea,
+    md.results.TransientSolution[0].TotalFloatingBmb,
+    md.results.TransientSolution[0].TotalGroundedBmb,
+    md.results.TransientSolution[0].TotalSmb,
+    md.results.TransientSolution[1].Vx,
+    md.results.TransientSolution[1].Vy,
+    md.results.TransientSolution[1].Vel,
+    md.results.TransientSolution[1].Pressure,
+    md.results.TransientSolution[1].Base,
+    md.results.TransientSolution[1].Surface,
+    md.results.TransientSolution[1].Thickness,
+    md.results.TransientSolution[1].GroundedArea,
+    md.results.TransientSolution[1].FloatingArea,
+    md.results.TransientSolution[1].TotalFloatingBmb,
+    md.results.TransientSolution[1].TotalGroundedBmb,
+    md.results.TransientSolution[1].TotalSmb,
+    md.results.TransientSolution[2].Vx,
+    md.results.TransientSolution[2].Vy,
+    md.results.TransientSolution[2].Vel,
+    md.results.TransientSolution[2].Pressure,
+    md.results.TransientSolution[2].Base,
+    md.results.TransientSolution[2].Surface,
+    md.results.TransientSolution[2].Thickness,
+    md.results.TransientSolution[2].GroundedArea,
+    md.results.TransientSolution[2].FloatingArea,
+    md.results.TransientSolution[2].TotalFloatingBmb,
+    md.results.TransientSolution[2].TotalGroundedBmb,
+    md.results.TransientSolution[2].TotalSmb
+]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test501.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test501.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test501.m	(revision 27955)
@@ -0,0 +1,17 @@
+%Test Name: PigStressSSA2d
+md=triangle(model(),'../Exp/Pig.exp',20000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure'};
+field_tolerances={1e-12,2e-12,2e-12,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test501.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test501.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test501.py	(revision 27955)
@@ -0,0 +1,24 @@
+#Test Name: PigStressSSA2d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Pig.exp', 20000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+# Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure']
+field_tolerances = [1e-12, 2e-12, 2e-12, 1e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test502.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test502.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test502.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: PigStressHO
+md=triangle(model(),'../Exp/Pig.exp',20000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,0.9);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-08,1e-08,1e-08,1e-08,1e-08};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test502.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test502.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test502.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: PigStressHO
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Pig.exp', 20000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md.extrude(3, 0.9)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+# Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [1e-08, 1e-08, 1e-08, 1e-08, 1e-08]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test503.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test503.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test503.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: PigStressFS
+md=triangle(model(),'../Exp/Pig.exp',20000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,0.9);
+md=setflowequation(md,'FS','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-09};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vz),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test503.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test503.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test503.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: PigStressFS
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Pig.exp', 20000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md.extrude(3, 0.9)
+md = setflowequation(md, 'FS', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+# Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure']
+field_tolerances = [1e-09, 1e-09, 1e-09, 1e-09, 1e-09]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vz,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test504.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test504.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test504.m	(revision 27955)
@@ -0,0 +1,53 @@
+%Test Name: PigTranSSA2d
+md=triangle(model(),'../Exp/Pig.exp',20000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.geometry.bed=md.geometry.base;
+[md.mesh.lat,md.mesh.long] = xy2ll(md.mesh.x,md.mesh.y,-1);
+md.mesh.scale_factor=0.9*ones(md.mesh.numberofvertices,1);
+md.transient.requested_outputs={'default','IceVolume','IceVolumeScaled','GroundedArea','GroundedAreaScaled','FloatingArea','FloatingAreaScaled','TotalSmb','TotalSmbScaled','TotalFloatingBmb','TotalFloatingBmbScaled'};
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','IceVolume1','IceVolumeScaled1','GroundedArea1','GroundedAreaScaled1','FloatingArea1','FloatingAreaScaled1','TotalSmb1','TotalSmbScaled1','TotalFloatingBmb1','TotalFloatingBmbScaled1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','IceVolume2','IceVolumeScaled2','GroundedArea2','GroundedAreaScaled2','FloatingArea2','FloatingAreaScaled2','TotalSmb2','TotalSmbScaled2','TotalFloatingBmb2','TotalFloatingBmbScaled2'};
+field_tolerances={1e-12,2e-12,2e-12,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-12,1e-12,1e-12,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(1).IceVolumeScaled),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).GroundedAreaScaled),...
+	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(1).FloatingAreaScaled),...
+	(md.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(1).TotalSmbScaled),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(1).TotalFloatingBmbScaled),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(2).IceVolumeScaled),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).GroundedAreaScaled),...
+	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(2).FloatingAreaScaled),...
+	(md.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(2).TotalSmbScaled),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).TotalFloatingBmbScaled),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test504.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test504.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test504.py	(revision 27955)
@@ -0,0 +1,82 @@
+#Test Name: PigTranSSA2d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Pig.exp', 20000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md = setflowequation(md, 'SSA', 'all')
+md.mesh.scale_factor = 0.9 * np.ones((md.mesh.numberofvertices))
+md.transient.requested_outputs = ['default', 'IceVolume', 'IceVolumeScaled', 'GroundedArea', 'GroundedAreaScaled', 'FloatingArea', 'FloatingAreaScaled', 'TotalSmb', 'TotalSmbScaled', 'TotalFloatingBmb', 'TotalFloatingBmbScaled']
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+# Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1',
+               'Bed1', 'Surface1', 'Thickness1',
+               'IceVolume1', 'IceVolumeScaled1',
+               'GroundedArea1', 'GroundedAreaScaled1',
+               'FloatingArea1', 'FloatingAreaScaled1',
+               'TotalSmb1', 'TotalSmbScaled1',
+               'TotalFloatingBmb1', 'TotalFloatingBmbScaled1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2',
+               'Bed2', 'Surface2', 'Thickness2',
+               'IceVolume2', 'IceVolumeScaled2',
+               'GroundedArea2', 'GroundedAreaScaled2',
+               'FloatingArea2', 'FloatingAreaScaled2',
+               'TotalSmb2', 'TotalSmbScaled2',
+               'TotalFloatingBmb2', 'TotalFloatingBmbScaled2']
+field_tolerances = [1e-12, 2e-12, 2e-12, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13,
+                    1e-13, 1e-13,
+                    1e-12, 1e-12,
+                    1e-12, 1e-13,
+                    1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13,
+                    1e-13, 1e-13,
+                    1e-13, 1e-13,
+                    1e-13, 1e-13,
+                    1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].IceVolume,
+                md.results.TransientSolution[0].IceVolumeScaled,
+                md.results.TransientSolution[0].GroundedArea,
+                md.results.TransientSolution[0].GroundedAreaScaled,
+                md.results.TransientSolution[0].FloatingArea,
+                md.results.TransientSolution[0].FloatingAreaScaled,
+                md.results.TransientSolution[0].TotalSmb,
+                md.results.TransientSolution[0].TotalSmbScaled,
+                md.results.TransientSolution[0].TotalFloatingBmb,
+                md.results.TransientSolution[0].TotalFloatingBmbScaled,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].IceVolume,
+                md.results.TransientSolution[1].IceVolumeScaled,
+                md.results.TransientSolution[1].GroundedArea,
+                md.results.TransientSolution[1].GroundedAreaScaled,
+                md.results.TransientSolution[1].FloatingArea,
+                md.results.TransientSolution[1].FloatingAreaScaled,
+                md.results.TransientSolution[1].TotalSmb,
+                md.results.TransientSolution[1].TotalSmbScaled,
+                md.results.TransientSolution[1].TotalFloatingBmb,
+                md.results.TransientSolution[1].TotalFloatingBmbScaled]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test505.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test505.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test505.m	(revision 27955)
@@ -0,0 +1,36 @@
+%Test Name: PigTranSSA3d
+md=triangle(model(),'../Exp/Pig.exp',30000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2'};
+field_tolerances={1e-12,1e-12,3e-10,1e-12,1e-13,1e-11,5e-12,9e-12,1e-13,5e-9,...
+						5e-11,5e-11,1e-10,2e-11,7e-12,1e-11,1e-11,5e-12,1e-11,2e-8};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test505.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test505.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test505.py	(revision 27955)
@@ -0,0 +1,43 @@
+#Test Name: PigTranSSA3d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Pig.exp', 30000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+# Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Temperature1', 'BasalforcingsGroundediceMeltingRate1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'BasalforcingsGroundediceMeltingRate2']
+field_tolerances = [1e-12, 1e-12, 3e-10, 1e-12, 1e-13, 1e-11, 5e-12, 9e-12, 1e-13, 5e-9,
+                    5e-11, 5e-11, 1e-10, 2e-11, 7e-12, 1e-11, 1e-11, 5e-12, 1e-11, 2e-8]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test506.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test506.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test506.m	(revision 27955)
@@ -0,0 +1,58 @@
+%Test Name: PigTranHO
+md=triangle(model(),'../Exp/Pig.exp',30000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md.mesh.scale_factor=0.9*ones(md.mesh.numberofvertices,1);
+md=extrude(md,2,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','IceVolume','IceVolumeScaled','TotalSmb','TotalSmbScaled','TotalFloatingBmb','TotalFloatingBmbScaled','FloatingArea','FloatingAreaScaled','GroundedArea','GroundedAreaScaled'};
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','IceVolume1','IceVolumeScaled1','GroundedArea1','GroundedAreaScaled1','FloatingArea1','FloatingAreaScaled1','TotalSmb1','TotalSmbScaled1','TotalFloatingBmb1','TotalFloatingBmbScaled1', ...
+				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','IceVolume2','IceVolumeScaled2','GroundedArea2','GroundedAreaScaled2','FloatingArea2','FloatingAreaScaled2','TotalSmb2','TotalSmbScaled2','TotalFloatingBmb2','TotalFloatingBmbScaled2'};
+field_tolerances={1e-10,1e-10,1e-10,1e-10,1e-12,1e-11,2e-12,1e-11,1e-12,1e-09,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-11,1e-11,1e-09,1e-11,1e-11,1e-10,1e-11,1e-10,1e-11,2e-08,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(1).IceVolumeScaled),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).GroundedAreaScaled),...
+	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(1).FloatingAreaScaled),...
+	(md.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(1).TotalSmbScaled),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(1).TotalFloatingBmbScaled),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(2).IceVolumeScaled),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).GroundedAreaScaled),...
+	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(2).FloatingAreaScaled),...
+	(md.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(2).TotalSmbScaled),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).TotalFloatingBmbScaled),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test506.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test506.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test506.py	(revision 27955)
@@ -0,0 +1,65 @@
+#Test Name: PigTranHO
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Pig.exp', 30000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md.mesh.scale_factor = 0.9 * np.ones((md.mesh.numberofvertices))
+md.extrude(2, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.transient.requested_outputs = ['default', 'IceVolume', 'IceVolumeScaled', 'GroundedArea', 'GroundedAreaScaled', 'FloatingArea', 'FloatingAreaScaled', 'TotalSmb', 'TotalSmbScaled', 'TotalFloatingBmb', 'TotalFloatingBmbScaled']
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+# Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Temperature1', 'BasalforcingsGroundediceMeltingRate1', 'IceVolume1', 'IceVolumeScaled1', 'GroundedArea1', 'GroundedAreaScaled1', 'FloatingArea1', 'FloatingAreaScaled1', 'TotalSmb1', 'TotalSmbScaled1', 'TotalFloatingBmb1', 'TotalFloatingBmbScaled1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'BasalforcingsGroundediceMeltingRate2', 'IceVolume2', 'IceVolumeScaled2', 'GroundedArea2', 'GroundedAreaScaled2', 'FloatingArea2', 'FloatingAreaScaled2', 'TotalSmb2', 'TotalSmbScaled2', 'TotalFloatingBmb2', 'TotalFloatingBmbScaled2']
+field_tolerances = [1e-10, 1e-10, 1e-10, 1e-10, 1e-12, 1e-11, 2e-12, 1e-11, 1e-12, 1e-09, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-11, 1e-11, 1e-09, 1e-11, 1e-11, 1e-10, 1e-11, 1e-10, 1e-11, 2e-08, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[0].IceVolume,
+                md.results.TransientSolution[0].IceVolumeScaled,
+                md.results.TransientSolution[0].GroundedArea,
+                md.results.TransientSolution[0].GroundedAreaScaled,
+                md.results.TransientSolution[0].FloatingArea,
+                md.results.TransientSolution[0].FloatingAreaScaled,
+                md.results.TransientSolution[0].TotalSmb,
+                md.results.TransientSolution[0].TotalSmbScaled,
+                md.results.TransientSolution[0].TotalFloatingBmb,
+                md.results.TransientSolution[0].TotalFloatingBmbScaled,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[1].IceVolume,
+                md.results.TransientSolution[1].IceVolumeScaled,
+                md.results.TransientSolution[1].GroundedArea,
+                md.results.TransientSolution[1].GroundedAreaScaled,
+                md.results.TransientSolution[1].FloatingArea,
+                md.results.TransientSolution[1].FloatingAreaScaled,
+                md.results.TransientSolution[1].TotalSmb,
+                md.results.TransientSolution[1].TotalSmbScaled,
+                md.results.TransientSolution[1].TotalFloatingBmb,
+                md.results.TransientSolution[1].TotalFloatingBmbScaled]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test507.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test507.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test507.m	(revision 27955)
@@ -0,0 +1,36 @@
+%Test Name: PigTranFS
+md=triangle(model(),'../Exp/Pig.exp',30000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,2,1.);
+md=setflowequation(md,'FS','all');
+md.groundingline.melt_interpolation='FullMeltOnPartiallyFloating';
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2'};
+field_tolerances={1e-08,1e-08,1e-08,1e-08,1e-08,7e-08,4e-07,2e-07,1e-08,1e-08,4e-06,4e-06,5e-06,5e-06,1e-06,1e-06,2e-06,1e-06,3e-06,1e-06};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test507.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test507.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test507.py	(revision 27955)
@@ -0,0 +1,43 @@
+#Test Name: PigTranFS
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Pig.exp', 30000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md.extrude(2, 1.)
+md = setflowequation(md, 'FS', 'all')
+md.groundingline.melt_interpolation = 'FullMeltOnPartiallyFloating'
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+# Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vz1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'Temperature1', 'BasalforcingsGroundediceMeltingRate1',
+               'Vx2', 'Vy2', 'Vz2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'Temperature2', 'BasalforcingsGroundediceMeltingRate2']
+field_tolerances = [1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 7e-08, 4e-07, 2e-07, 1e-08, 1e-08, 4e-06, 4e-06, 5e-06, 5e-06, 1e-06, 1e-06, 2e-06, 1e-06, 3e-06, 1e-06]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vz,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vz,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test508.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test508.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test508.m	(revision 27955)
@@ -0,0 +1,22 @@
+%Test Name: PigSteaSSA3d
+md=triangle(model(),'../Exp/Pig.exp',35000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,1.1);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0.;
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={5e-08,3e-08,5e-08,5e-08,1e-09,2e-07,8e-07};
+field_values={...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test508.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test508.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test508.py	(revision 27955)
@@ -0,0 +1,29 @@
+#Test Name: PigSteaSSA3d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Pig.exp', 35000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md.extrude(3, 1.1)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.timestepping.time_step = 0.
+md = solve(md, 'Steadystate')
+
+# Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure', 'Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [5e-08, 1.6e-08, 5e-08, 5e-08, 1e-09, 6e-08, 5e-07]
+field_values = [md.results.SteadystateSolution.Vx,
+                md.results.SteadystateSolution.Vy,
+                md.results.SteadystateSolution.Vz,
+                md.results.SteadystateSolution.Vel,
+                md.results.SteadystateSolution.Pressure,
+                md.results.SteadystateSolution.Temperature,
+                md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test509.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test509.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test509.m	(revision 27955)
@@ -0,0 +1,24 @@
+%Test Name: PigSteaHO
+md=triangle(model(),'../Exp/Pig.exp',30000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0.;
+md.thermal.penalty_threshold=7;
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-09,2e-09,5e-08,5e-08,1e-09,7e-09,1e-06
+};
+field_values={...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test509.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test509.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test509.py	(revision 27955)
@@ -0,0 +1,30 @@
+#Test Name: PigSteaHO
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Pig.exp', 30000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.timestepping.time_step = 0.
+md.thermal.penalty_threshold = 7
+md = solve(md, 'Steadystate')
+
+# Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure', 'Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-09, 2e-09, 5e-08, 5e-08, 1e-09, 7e-09, 1e-06]
+field_values = [md.results.SteadystateSolution.Vx,
+                md.results.SteadystateSolution.Vy,
+                md.results.SteadystateSolution.Vz,
+                md.results.SteadystateSolution.Vel,
+                md.results.SteadystateSolution.Pressure,
+                md.results.SteadystateSolution.Temperature,
+                md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test510.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test510.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test510.m	(revision 27955)
@@ -0,0 +1,22 @@
+%Test Name: PigSteaFS
+md=triangle(model(),'../Exp/Pig.exp',20000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,2,1.);
+md=setflowequation(md,'FS','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0.;
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-06};
+field_values={...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test510.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test510.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test510.py	(revision 27955)
@@ -0,0 +1,29 @@
+#Test Name: PigSteaFS
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Pig.exp', 20000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md.extrude(2, 1.)
+md = setflowequation(md, 'FS', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.timestepping.time_step = 0.
+md = solve(md, 'Steadystate')
+
+# Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vz', 'Vel', 'Pressure', 'Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-08, 1e-06]
+field_values = [md.results.SteadystateSolution.Vx,
+                md.results.SteadystateSolution.Vy,
+                md.results.SteadystateSolution.Vz,
+                md.results.SteadystateSolution.Vel,
+                md.results.SteadystateSolution.Pressure,
+                md.results.SteadystateSolution.Temperature,
+                md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test511.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test511.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test511.m	(revision 27955)
@@ -0,0 +1,40 @@
+%Test Name: PigCMBFS
+md=triangle(model(),'../Exp/Pig.exp',11000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+
+%impose hydrostatic equilibrium (required by Stokes)
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=extrude(md,3,1.);
+md=setflowequation(md,'FS','all');
+md=extract(md,md.mask.ocean_levelset<0.);
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'MaterialsRheologyBbar'};
+md.inversion.min_parameters=10.^6*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2.*10^9*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=101;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=10.^8*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2.*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.99*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',1);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','MaterialsRheologyB','Pressure','Vel','Vx','Vy'};
+field_tolerances={5e-11,5e-11,5e-11,1e-09,1e-11,5e-11,1e-11};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.MaterialsRheologyBbar),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test511.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test511.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test511.py	(revision 27955)
@@ -0,0 +1,48 @@
+#Test Name: PigCMBFS
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Pig.exp', 11000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+
+#impose hydrostatic equilibrium (required by Stokes)
+md.geometry.base = -md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md.extrude(3, 1.)
+md = setflowequation(md, 'FS', 'all')
+md = md.extract(md.mask.ocean_levelset < 0.)
+
+#control parameters
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['MaterialsRheologyBbar']
+md.inversion.min_parameters = 10.**6 * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = 2. * 10**9 * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.nsteps = 2
+md.inversion.cost_functions = [101]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, len(md.inversion.cost_functions)))
+md.inversion.gradient_scaling = 10.**8 * np.ones((md.inversion.nsteps, len(md.inversion.control_parameters)))
+md.inversion.maxiter_per_step = 2. * np.ones((md.inversion.nsteps))
+md.inversion.step_threshold = 0.99 * np.ones((md.inversion.nsteps))
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs = md.initialization.vy
+
+md.cluster = generic('name', gethostname(), 'np', 1)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Gradient', 'Misfits', 'MaterialsRheologyB', 'Pressure', 'Vel', 'Vx', 'Vy']
+field_tolerances = [5e-11, 5e-11, 5e-11, 1e-09, 1e-11, 5e-11, 1e-11]
+field_values = [md.results.StressbalanceSolution.Gradient1,
+                md.results.StressbalanceSolution.J,
+                md.results.StressbalanceSolution.MaterialsRheologyBbar,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test512.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test512.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test512.m	(revision 27955)
@@ -0,0 +1,35 @@
+%Test Name: PigCMDragHO
+md=triangle(model(),'../Exp/Pig.exp',20000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[103  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.99*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy'};
+field_tolerances={1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	md.results.StressbalanceSolution.J,...
+	(md.results.StressbalanceSolution.FrictionCoefficient),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test512.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test512.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test512.py	(revision 27955)
@@ -0,0 +1,46 @@
+#Test Name: PigCMDragHO
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Pig.exp', 20000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+
+# control parameters
+
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['FrictionCoefficient']
+md.inversion.min_parameters = 1. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = 200. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.nsteps = 2
+md.inversion.cost_functions = [103, 501]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, 2))
+md.inversion.cost_functions_coefficients[:, 1] = 2. * 10**-7
+md.inversion.gradient_scaling = 3. * np.ones((md.inversion.nsteps, len(md.inversion.control_parameters)))
+md.inversion.maxiter_per_step = 2. * np.ones((md.inversion.nsteps))
+md.inversion.step_threshold = 2.99 * np.ones((md.inversion.nsteps))
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs = md.initialization.vy
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Stressbalance')
+
+# Fields and tolerances to track changes
+field_names = ['Gradient', 'Misfits', 'FrictionCoefficient', 'Pressure', 'Vel', 'Vx', 'Vy']
+field_tolerances = [1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11]
+field_values = [md.results.StressbalanceSolution.Gradient1,
+                md.results.StressbalanceSolution.J,
+                md.results.StressbalanceSolution.FrictionCoefficient,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test513.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test513.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test513.m	(revision 27955)
@@ -0,0 +1,40 @@
+%Test Name: PigCMDragSteaSSA3d
+md=triangle(model(),'../Exp/Pig.exp',30000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'FrictionCoefficient'};
+md.inversion.min_parameters=1.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=200.*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[103  501];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2); md.inversion.cost_functions_coefficients(:,2)=2.*10^-7;
+md.inversion.gradient_scaling=3.*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2.*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.99*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+md.timestepping.time_step=0.;
+
+md.thermal.penalty_lock=5;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Steadystate');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy','Vz','Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={5e-08,4e-10,1e-10,1e-10,3e-6,4e-6,4e-6,3e-6,2e-6,2e-06};
+field_values={...
+	(md.results.SteadystateSolution.Gradient1),...
+	md.results.SteadystateSolution.J,...
+	(md.results.SteadystateSolution.FrictionCoefficient),...
+	(md.results.SteadystateSolution.Pressure),...
+	(md.results.SteadystateSolution.Vel),...
+	(md.results.SteadystateSolution.Vx),...
+	(md.results.SteadystateSolution.Vy),...
+	(md.results.SteadystateSolution.Vz),...
+	(md.results.SteadystateSolution.Temperature),...
+	(md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test513.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test513.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test513.py	(revision 27955)
@@ -0,0 +1,48 @@
+#Test Name: PigCMDragSteaSSA3d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Pig.exp', 30000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'SSA', 'all')
+
+# control parameters
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['FrictionCoefficient']
+md.inversion.min_parameters = 1. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = 200. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.nsteps = 2
+md.inversion.cost_functions = [103, 501]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, 2))
+md.inversion.cost_functions_coefficients[:, 1] = 2. * 10**-7
+md.inversion.gradient_scaling = 3. * np.ones((md.inversion.nsteps, len(md.inversion.control_parameters)))
+md.inversion.maxiter_per_step = 2. * np.ones((md.inversion.nsteps))
+md.inversion.step_threshold = 0.99 * np.ones((md.inversion.nsteps))
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs = md.initialization.vy
+md.timestepping.time_step = 0.
+md.thermal.penalty_lock = 5
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Steadystate')
+
+# Fields and tolerances to track changes
+field_names = ['Gradient', 'Misfits', 'FrictionCoefficient', 'Pressure', 'Vel', 'Vx', 'Vy', 'Vz', 'Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [5e-08, 4e-10, 1e-10, 1e-10, 3e-6, 4e-6, 3.4e-6, 3e-6, 2e-6, 2e-06]
+field_values = [md.results.SteadystateSolution.Gradient1,
+                md.results.SteadystateSolution.J,
+                md.results.SteadystateSolution.FrictionCoefficient,
+                md.results.SteadystateSolution.Pressure,
+                md.results.SteadystateSolution.Vel,
+                md.results.SteadystateSolution.Vx,
+                md.results.SteadystateSolution.Vy,
+                md.results.SteadystateSolution.Vz,
+                md.results.SteadystateSolution.Temperature,
+                md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test514.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test514.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test514.m	(revision 27955)
@@ -0,0 +1,49 @@
+%Test Name: PigBamgMesh
+%Simple mesh 1
+hVertices=10000.*ones(27,1);
+hVertices(1:5)=1000.;
+md=bamg(model(),'domain','../Exp/Pig.exp','hmax',20000.,'hVertices',hVertices,'gradation',3.);
+x1=md.mesh.x;
+y1=md.mesh.y;
+
+%Simple mesh 2
+md=bamg(model(),'domain','../Exp/Pig.exp','hmax',10000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+x2=md.mesh.x;
+y2=md.mesh.y;
+
+%refine existing mesh 1
+hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,md.inversion.vy_obs,'node');
+metric=ComputeMetric(hessian,2./9.,1.,1000.,25.*10.^3,[]);
+md.miscellaneous.dummy=metric;
+md2=bamg(md,'metric',md.miscellaneous.dummy,'hmin',1000.,'hmax',20000.,'gradation',3.);
+x3=md2.mesh.x;
+y3=md2.mesh.y;
+
+%refine existing mesh 2
+md2=bamg(md,'metric',md.miscellaneous.dummy,'hmin',1000.,'hmax',20000.,'gradation',3.,'anisomax',1.);
+x4=md2.mesh.x;
+y4=md2.mesh.y;
+
+%refine existing mesh 3
+hVertices=NaN*ones(md.mesh.numberofvertices,1);
+hVertices(find(md.mesh.vertexonboundary))=500;
+md2=bamg(md,'metric',md.miscellaneous.dummy,'hmin',1000.,'hmax',20000.,'gradation',3.,'anisomax',1.,'hVertices',hVertices);
+x5=md2.mesh.x;
+y5=md2.mesh.y;
+
+%refine existing mesh 4
+md2=bamg(md,'field',md.inversion.vy_obs,'hmin',1000.,'hmax',20000.,'gradation',3.,'Hessiantype',0,'err',1.);
+x6=md2.mesh.x;
+y6=md2.mesh.y;
+
+%refine existing mesh 5
+md2=bamg(md,'field',[md.inversion.vy_obs md.geometry.thickness],'hmin',1000.,'hmax',20000.,'gradation',3.,'Hessiantype',1,'err',[10. 100.]); 
+x7=md2.mesh.x;
+y7=md2.mesh.y;
+
+%Fields and tolerances to track changes
+field_names      = {'x1' ,'y1' ,'x2' ,'y2' ,'x3' ,'y3' ,'x4' ,'y4' ,'x5' ,'y5' ,'x6' ,'y6' ,'x7' ,'y7' };
+field_tolerances = {2e-10,7e-10,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values     = { x1  ,y1   ,x2   ,y2   ,x3   ,y3   ,x4   ,y4   ,x5   ,y5   ,x6   ,y6   ,x7   ,y7   };
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test514.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test514.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test514.py	(revision 27955)
@@ -0,0 +1,59 @@
+#Test Name: PigBamgMesh
+import numpy as np
+import copy
+from model import *
+from bamg import *
+from setmask import *
+from parameterize import *
+from ComputeHessian import *
+from ComputeMetric import *
+
+
+#Simple mesh 1
+hVertices = 10000. * np.ones((27))
+hVertices[0:5] = 1000.
+md = bamg(model(), 'domain', '../Exp/Pig.exp', 'hmax', 20000., 'hVertices', hVertices, 'gradation', 3.)
+x1 = md.mesh.x
+y1 = md.mesh.y
+
+#Simple mesh 2
+md = bamg(model(), 'domain', '../Exp/Pig.exp', 'hmax', 10000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+x2 = md.mesh.x
+y2 = md.mesh.y
+
+#refine existing mesh 1
+hessian = ComputeHessian(md.mesh.elements, md.mesh.x, md.mesh.y, md.inversion.vy_obs, 'node')
+metric = ComputeMetric(hessian, 2. / 9., 1., 1000., 25. * 10.**3, [])
+md.miscellaneous.dummy = metric
+md2 = bamg(copy.deepcopy(md), 'metric', md.miscellaneous.dummy, 'hmin', 1000., 'hmax', 20000., 'gradation', 3.)
+x3 = md2.mesh.x
+y3 = md2.mesh.y
+
+#refine existing mesh 2
+md2 = bamg(copy.deepcopy(md), 'metric', md.miscellaneous.dummy, 'hmin', 1000., 'hmax', 20000., 'gradation', 3., 'anisomax', 1.)
+x4 = md2.mesh.x
+y4 = md2.mesh.y
+
+#refine existing mesh 3
+hVertices = np.nan * np.ones((md.mesh.numberofvertices))
+hVertices[np.nonzero(md.mesh.vertexonboundary)] = 500.
+md2 = bamg(copy.deepcopy(md), 'metric', md.miscellaneous.dummy, 'hmin', 1000., 'hmax', 20000., 'gradation', 3., 'anisomax', 1., 'hVertices', hVertices)
+x5 = md2.mesh.x
+y5 = md2.mesh.y
+
+#refine existing mesh 4
+md2 = bamg(copy.deepcopy(md), 'field', md.inversion.vy_obs, 'hmin', 1000., 'hmax', 20000., 'gradation', 3., 'Hessiantype', 0, 'err', np.array([1.]))
+x6 = md2.mesh.x
+y6 = md2.mesh.y
+
+#refine existing mesh 5
+md2 = bamg(copy.deepcopy(md), 'field', np.vstack((md.inversion.vy_obs, md.geometry.thickness)).T, 'hmin', 1000., 'hmax', 20000., 'gradation', 3., 'Hessiantype', 1, 'err', np.array([[10., 100.]]))
+x7 = md2.mesh.x
+y7 = md2.mesh.y
+
+#Fields and tolerances to track changes
+field_names = ['x1', 'y1', 'x2', 'y2', 'x3', 'y3', 'x4', 'y4', 'x5', 'y5', 'x6', 'y6', 'x7', 'y7']
+field_tolerances = [2e-10, 7e-10, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6, x7, y7]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test515.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test515.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test515.m	(revision 27955)
@@ -0,0 +1,25 @@
+%Test Name: PigTherTranSUPG
+md=triangle(model(),'../Exp/Pig.exp',30000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.thermal.stabilization=2;
+md.cluster=generic('name',oshostname(),'np',3);
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=0;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature1','BasalforcingsGroundediceMeltingRate1', ...
+				      'Temperature2','BasalforcingsGroundediceMeltingRate2'};
+field_tolerances={1e-13,1e-8,1e-13,5e-8};
+field_values={...
+	(md.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test515.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test515.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test515.py	(revision 27955)
@@ -0,0 +1,32 @@
+#Test Name: PigTherTranSUPG
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Pig.exp', 30000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.thermal.stabilization = 2
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.transient.isstressbalance = False
+md.transient.ismasstransport = False
+md.transient.issmb = True
+md.transient.isthermal = True
+md.transient.isgroundingline = False
+md = solve(md, 'Transient')
+
+# Fields and tolerances to track changes
+field_names = ['Temperature1', 'BasalforcingsGroundediceMeltingRate1',
+               'Temperature2', 'BasalforcingsGroundediceMeltingRate2']
+field_tolerances = [1e-13, 1e-8, 1e-13, 5e-8]
+field_values = [md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test516.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test516.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test516.m	(revision 27955)
@@ -0,0 +1,19 @@
+%Test Name: PigTherSteaSUPG
+md=triangle(model(),'../Exp/Pig.exp',30000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.thermal.stabilization=2;
+md.cluster=generic('name',oshostname(),'np',3);
+md.timestepping.time_step=0;
+md.thermal.penalty_threshold=40;
+md=solve(md,'Thermal');
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate'};
+field_tolerances={1e-11,1e-11};
+field_values={...
+	(md.results.ThermalSolution.Temperature),...
+	(md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test516.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test516.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test516.py	(revision 27955)
@@ -0,0 +1,26 @@
+#Test Name: PigTherSteaSUPG
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Pig.exp', 30000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md.extrude(3, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.thermal.stabilization = 2
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.timestepping.time_step = 0
+md.thermal.penalty_threshold = 40
+md = solve(md, 'Thermal')
+
+#Fields and tolerances to track changes
+field_names = ['Temperature', 'BasalforcingsGroundediceMeltingRate']
+field_tolerances = [1e-11, 1e-11]
+field_values = [md.results.ThermalSolution.Temperature,
+                md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test517.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test517.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test517.m	(revision 27955)
@@ -0,0 +1,42 @@
+%Test Name: PigCMBFSm1qn3
+md=triangle(model(),'../Exp/Pig.exp',11000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+
+%impose hydrostatic equilibrium (required by Stokes)
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md=extrude(md,3,1.);
+md=setflowequation(md,'FS','all');
+md=extract(md,md.mask.ocean_levelset<0.);
+
+%control parameters
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'MaterialsRheologyBbar'};
+md.inversion.min_parameters=10.^6*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=2.*10^9*ones(md.mesh.numberofvertices,1);
+md.inversion.nsteps=2;
+md.inversion.cost_functions=[101 502];
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,2);
+md.inversion.gradient_scaling=10.^8*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=2.*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.99*ones(md.inversion.nsteps,1);
+md.inversion.vx_obs=md.initialization.vx; md.inversion.vy_obs=md.initialization.vy;
+
+md.inversion=m1qn3inversion(md.inversion);
+
+md.cluster=generic('name',oshostname(),'np',1);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','MaterialsRheologyB','Pressure','Vel','Vx','Vy'};
+field_tolerances={6e-11,5e-11,5e-10,1e-09,2e-11,5e-11,2e-11};
+field_values={...
+	(md.results.StressbalanceSolution.Gradient1),...
+	(md.results.StressbalanceSolution.J),...
+	(md.results.StressbalanceSolution.MaterialsRheologyBbar),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test517.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test517.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test517.py	(revision 27955)
@@ -0,0 +1,51 @@
+#Test Name: PigCMBFSm1qn3
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from m1qn3inversion import *
+from solve import *
+
+md = triangle(model(), '../Exp/Pig.exp', 11000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+
+#impose hydrostatic equilibrium (required by Stokes)
+md.geometry.base = -md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md.extrude(3, 1.)
+md = setflowequation(md, 'FS', 'all')
+md = md.extract(md.mask.ocean_levelset < 0.)
+
+#control parameters
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['MaterialsRheologyBbar']
+md.inversion.min_parameters = 10.**6 * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = 2. * 10**9 * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.nsteps = 2
+md.inversion.cost_functions = [101, 502]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, len(md.inversion.cost_functions)))
+md.inversion.gradient_scaling = 10.**8 * np.ones((md.inversion.nsteps, len(md.inversion.control_parameters)))
+md.inversion.maxiter_per_step = 2. * np.ones((md.inversion.nsteps))
+md.inversion.step_threshold = 0.99 * np.ones((md.inversion.nsteps))
+md.inversion.vx_obs = md.initialization.vx
+md.inversion.vy_obs = md.initialization.vy
+
+md.inversion = m1qn3inversion(md.inversion)
+
+md.cluster = generic('name', gethostname(), 'np', 1)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Gradient', 'Misfits', 'MaterialsRheologyB', 'Pressure', 'Vel', 'Vx', 'Vy']
+field_tolerances = [6e-11, 5e-11, 5e-10, 1e-09, 2e-11, 5e-11, 2e-11]
+field_values = [md.results.StressbalanceSolution.Gradient1,
+                md.results.StressbalanceSolution.J,
+                md.results.StressbalanceSolution.MaterialsRheologyBbar,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test518.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test518.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test518.m	(revision 27955)
@@ -0,0 +1,26 @@
+%Test Name: PigStressMOLHO2d
+md=triangle(model(),'../Exp/Pig.exp',20000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=setflowequation(md,'MOLHO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.stressbalance.requested_outputs={'default','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
+md=SetMOLHOBC(md);
+md=solve(md,'Stressbalance');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure','VxSurface','VySurface','VxShear','VyShear','VxBase','VyBase'};
+field_tolerances={5e-13,6e-13,6e-13,1e-13,5e-13,6e-13,1e-13,1e-13,5e-13,6e-13};
+field_values={...
+   (md.results.StressbalanceSolution.Vx),...
+   (md.results.StressbalanceSolution.Vy),...
+   (md.results.StressbalanceSolution.Vel),...
+   (md.results.StressbalanceSolution.Pressure),...
+   (md.results.StressbalanceSolution.VxSurface),...
+   (md.results.StressbalanceSolution.VySurface),...
+   (md.results.StressbalanceSolution.VxShear),...
+   (md.results.StressbalanceSolution.VyShear),...
+   (md.results.StressbalanceSolution.VxBase),...
+   (md.results.StressbalanceSolution.VyBase),...
+   };
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test518.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test518.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test518.py	(revision 27955)
@@ -0,0 +1,34 @@
+
+#Test Name: PigStressMOLHO2d
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from SetMOLHOBC import SetMOLHOBC
+
+
+md = triangle(model(), '../Exp/Pig.exp', 20000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md = setflowequation(md, 'MOLHO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md.stressbalance.requested_outputs = ['default', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
+md = SetMOLHOBC(md)
+md = solve(md, 'Stressbalance')
+
+#Fields and tolerances to track changes
+field_names = ['Vx', 'Vy', 'Vel', 'Pressure', 'VxSurface', 'VySurface', 'VxShear', 'VyShear', 'VxBase', 'VyBase']
+field_tolerances = [5e-13, 6e-13, 6e-13, 1e-13, 5e-13, 6e-13, 1e-13, 1e-13, 5e-13, 6e-13]
+field_values = [md.results.StressbalanceSolution.Vx,
+                md.results.StressbalanceSolution.Vy,
+                md.results.StressbalanceSolution.Vel,
+                md.results.StressbalanceSolution.Pressure,
+                md.results.StressbalanceSolution.VxSurface,
+                md.results.StressbalanceSolution.VySurface,
+                md.results.StressbalanceSolution.VxShear,
+                md.results.StressbalanceSolution.VyShear,
+                md.results.StressbalanceSolution.VxBase,
+                md.results.StressbalanceSolution.VyBase]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test519.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test519.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test519.m	(revision 27955)
@@ -0,0 +1,54 @@
+%Test Name: PigTranMOLHO2d
+md=triangle(model(),'../Exp/Pig.exp',20000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=setflowequation(md,'MOLHO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.geometry.bed=md.geometry.base;
+[md.mesh.lat,md.mesh.long] = xy2ll(md.mesh.x,md.mesh.y,-1);
+md.mesh.scale_factor=0.9*ones(md.mesh.numberofvertices,1);
+md.transient.requested_outputs={'default','IceVolume','IceVolumeScaled','GroundedArea','GroundedAreaScaled','FloatingArea','FloatingAreaScaled','TotalSmb','TotalSmbScaled','TotalFloatingBmb','TotalFloatingBmbScaled'};
+md=SetMOLHOBC(md);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','IceVolume1','IceVolumeScaled1','GroundedArea1','GroundedAreaScaled1','FloatingArea1','FloatingAreaScaled1','TotalSmb1','TotalSmbScaled1','TotalFloatingBmb1','TotalFloatingBmbScaled1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','IceVolume2','IceVolumeScaled2','GroundedArea2','GroundedAreaScaled2','FloatingArea2','FloatingAreaScaled2','TotalSmb2','TotalSmbScaled2','TotalFloatingBmb2','TotalFloatingBmbScaled2'};
+field_tolerances={1e-12,2e-12,2e-12,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-12,1e-12,1e-12,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(1).IceVolumeScaled),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).GroundedAreaScaled),...
+	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(1).FloatingAreaScaled),...
+	(md.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(1).TotalSmbScaled),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(1).TotalFloatingBmbScaled),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(2).IceVolumeScaled),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).GroundedAreaScaled),...
+	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(2).FloatingAreaScaled),...
+	(md.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(2).TotalSmbScaled),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).TotalFloatingBmbScaled),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test519.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test519.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test519.py	(revision 27955)
@@ -0,0 +1,85 @@
+#Test Name: PigTranMOLHO2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from SetMOLHOBC import SetMOLHOBC
+from generic import generic
+
+md = triangle(model(), '../Exp/Pig.exp', 20000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md = setflowequation(md, 'MOLHO', 'all')
+md.mesh.scale_factor = 0.9 * np.ones((md.mesh.numberofvertices))
+md.transient.requested_outputs = ['default', 'IceVolume', 'IceVolumeScaled', 'GroundedArea', 'GroundedAreaScaled', 'FloatingArea', 'FloatingAreaScaled', 'TotalSmb', 'TotalSmbScaled', 'TotalFloatingBmb', 'TotalFloatingBmbScaled']
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = SetMOLHOBC(md)
+md = solve(md, 'Transient')
+
+# Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1',
+               'Bed1', 'Surface1', 'Thickness1',
+               'IceVolume1', 'IceVolumeScaled1',
+               'GroundedArea1', 'GroundedAreaScaled1',
+               'FloatingArea1', 'FloatingAreaScaled1',
+               'TotalSmb1', 'TotalSmbScaled1',
+               'TotalFloatingBmb1', 'TotalFloatingBmbScaled1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2',
+               'Bed2', 'Surface2', 'Thickness2',
+               'IceVolume2', 'IceVolumeScaled2',
+               'GroundedArea2', 'GroundedAreaScaled2',
+               'FloatingArea2', 'FloatingAreaScaled2',
+               'TotalSmb2', 'TotalSmbScaled2',
+               'TotalFloatingBmb2', 'TotalFloatingBmbScaled2']
+field_tolerances = [1e-12, 2e-12, 2e-12, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13,
+                    1e-13, 1e-13,
+                    1e-12, 1e-12,
+                    1e-12, 1e-13,
+                    1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13,
+                    1e-13, 1e-13,
+                    1e-13, 1e-13,
+                    1e-13, 1e-13,
+                    1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].IceVolume,
+                md.results.TransientSolution[0].IceVolumeScaled,
+                md.results.TransientSolution[0].GroundedArea,
+                md.results.TransientSolution[0].GroundedAreaScaled,
+                md.results.TransientSolution[0].FloatingArea,
+                md.results.TransientSolution[0].FloatingAreaScaled,
+                md.results.TransientSolution[0].TotalSmb,
+                md.results.TransientSolution[0].TotalSmbScaled,
+                md.results.TransientSolution[0].TotalFloatingBmb,
+                md.results.TransientSolution[0].TotalFloatingBmbScaled,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].IceVolume,
+                md.results.TransientSolution[1].IceVolumeScaled,
+                md.results.TransientSolution[1].GroundedArea,
+                md.results.TransientSolution[1].GroundedAreaScaled,
+                md.results.TransientSolution[1].FloatingArea,
+                md.results.TransientSolution[1].FloatingAreaScaled,
+                md.results.TransientSolution[1].TotalSmb,
+                md.results.TransientSolution[1].TotalSmbScaled,
+                md.results.TransientSolution[1].TotalFloatingBmb,
+                md.results.TransientSolution[1].TotalFloatingBmbScaled]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test530.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test530.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test530.m	(revision 27955)
@@ -0,0 +1,16 @@
+%Test Name: PigBalVel1
+md=triangle(model(),'../Exp/Pig.exp',20000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Balancevelocity');
+
+%Fields and tolerances to track changes
+field_names     ={'DrivingStressX','DrivingStressX','Vel'};
+field_tolerances={1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.BalancevelocitySolution.DrivingStressX),...
+	(md.results.BalancevelocitySolution.DrivingStressY),...
+	(md.results.BalancevelocitySolution.Vel),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test530.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test530.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test530.py	(revision 27955)
@@ -0,0 +1,23 @@
+#Test Name: PigBalVel1
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Pig.exp', 20000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Balancevelocity')
+
+# Fields and tolerances to track changes
+field_names = ['DrivingStressX', 'DrivingStressY', 'Vel']
+field_tolerances = [1e-13, 1e-13, 1e-13]
+field_values = [md.results.BalancevelocitySolution.DrivingStressX,
+                md.results.BalancevelocitySolution.DrivingStressY,
+                md.results.BalancevelocitySolution.Vel]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test531.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test531.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test531.m	(revision 27955)
@@ -0,0 +1,18 @@
+%Test Name: PigBalVel2
+md=triangle(model(),'../Exp/Pig.exp',20000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md.initialization.vx(:)=0;
+md.initialization.vy(:)=0;
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Balancevelocity');
+
+%Fields and tolerances to track changes
+field_names     ={'DrivingStressX','DrivingStressX','Vel'};
+field_tolerances={1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.BalancevelocitySolution.DrivingStressX),...
+	(md.results.BalancevelocitySolution.DrivingStressY),...
+	(md.results.BalancevelocitySolution.Vel),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test531.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test531.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test531.py	(revision 27955)
@@ -0,0 +1,25 @@
+#Test Name: PigBalVel2
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Pig.exp', 20000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md.initialization.vx[:] = 0.
+md.initialization.vy[:] = 0.
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Balancevelocity')
+
+# Fields and tolerances to track changes
+field_names = ['DrivingStressX', 'DrivingStressY', 'Vel']
+field_tolerances = [1e-13, 1e-13, 1e-13]
+field_values = [md.results.BalancevelocitySolution.DrivingStressX,
+                md.results.BalancevelocitySolution.DrivingStressY,
+                md.results.BalancevelocitySolution.Vel]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test540.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test540.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test540.m	(revision 27955)
@@ -0,0 +1,83 @@
+%Test Name: PigTranCalvingDevSSA2d
+md=triangle(model(),'../Exp/Pig.exp',10000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=2;
+md.timestepping.final_time=50;
+
+%calving parameters
+md.mask.ice_levelset = 1e4*(md.mask.ice_levelset + 0.5);
+md.calving=calvingvonmises();
+md.frontalforcings.meltingrate = zeros(md.mesh.numberofvertices,1);
+md.transient.ismovingfront = 1;
+md.transient.isgroundingline = 1;
+md.levelset.spclevelset = NaN(md.mesh.numberofvertices,1);
+pos = find(md.mesh.vertexonboundary);
+md.levelset.spclevelset(pos) = md.mask.ice_levelset(pos);
+md.levelset.migration_max = 1e10;
+md.transient.requested_outputs={'default','IceVolume','IceVolumeAboveFloatation','TotalSmb','TotalGroundedBmb','TotalFloatingBmb'};
+
+%Force MUMPS sequential analysis
+md.toolkits.DefaultAnalysis.mat_mumps_icntl_28=1;
+md.cluster=generic('name',oshostname(),'np',2);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names ={...
+	'Vx1' ,'Vy1' ,'Vel1' ,'Pressure1' ,'Bed1' ,'Surface1' ,'Thickness1' ,'MaskIceLevelset1' ,...
+	'IceVolume1' ,'IceVolumeAboveFloatation1' ,'TotalSmb1' ,'TotalGroundedBmb1' ,'TotalFloatingBmb1' ,...
+	'Vx2' ,'Vy2' ,'Vel2' ,'Pressure2' ,'Bed2' ,'Surface2' ,'Thickness2' ,'MaskIceLevelset2' ,...
+	'IceVolume2' ,'IceVolumeAboveFloatation2' ,'TotalSmb2' ,'TotalGroundedBmb2' ,'TotalFloatingBmb2' ,...
+	'Vx10','Vy10','Vel10','Pressure10','Bed10','Surface10','Thickness10','MaskIceLevelset10',...
+	'IceVolume10' ,'IceVolumeAboveFloatation10' ,'TotalSmb10' ,'TotalGroundedBmb10' ,'TotalFloatingBmb10' ,...
+	};
+field_tolerances={...
+	1e-12,2e-12,2e-12,1e-13,1e-13,1e-13,1e-13,2e-12,...
+	1e-12,2e-12,2e-12,1e-13,1e-13,...
+	1e-12,2e-12,2e-12,1e-13,2e-13,1e-13,1e-13,2e-12,...
+	1e-12,2e-12,2e-12,1e-13,1e-13,...
+	1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-9,...
+	1e-12,2e-12,2e-12,1e-13,1e-13,...
+	};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).MaskIceLevelset),...
+	(md.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(1).IceVolumeAboveFloatation),...
+	(md.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).MaskIceLevelset),...
+	(md.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(2).IceVolumeAboveFloatation),...
+	(md.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(10).Vx),...
+	(md.results.TransientSolution(10).Vy),...
+	(md.results.TransientSolution(10).Vel),...
+	(md.results.TransientSolution(10).Pressure),...
+	(md.results.TransientSolution(10).Base),...
+	(md.results.TransientSolution(10).Surface),...
+	(md.results.TransientSolution(10).Thickness),...
+	(md.results.TransientSolution(10).MaskIceLevelset),...
+	(md.results.TransientSolution(10).IceVolume),...
+	(md.results.TransientSolution(10).IceVolumeAboveFloatation),...
+	(md.results.TransientSolution(10).TotalSmb),...
+	(md.results.TransientSolution(10).TotalGroundedBmb),...
+	(md.results.TransientSolution(10).TotalFloatingBmb),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test540.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test540.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test540.py	(revision 27955)
@@ -0,0 +1,87 @@
+#Test Name: PigTranCalvingDevSSA2d
+import numpy as np
+from calvingvonmises import *
+from socket import gethostname
+from model import *
+from parameterize import *
+from setflowequation import *
+from setmask import *
+from solve import *
+from triangle import *
+
+md = triangle(model(), '../Exp/Pig.exp', 10000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md = setflowequation(md, 'SSA', 'all')
+md.timestepping.time_step = 2
+md.timestepping.final_time = 50
+
+#calving parameters
+md.mask.ice_levelset = 1e4 * (md.mask.ice_levelset + 0.5)
+md.calving = calvingvonmises()
+md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices, ))
+md.transient.ismovingfront = 1
+md.transient.isgroundingline = 1
+md.levelset.spclevelset = np.nan * np.ones((md.mesh.numberofvertices, ))
+pos = np.where(md.mesh.vertexonboundary)
+md.levelset.spclevelset[pos] = md.mask.ice_levelset[pos]
+md.levelset.migration_max = 1e10
+md.transient.requested_outputs = ['default', 'IceVolume', 'IceVolumeAboveFloatation','TotalSmb','TotalGroundedBmb','TotalFloatingBmb']
+
+#Force MUMPS sequential analysis
+md.toolkits.DefaultAnalysis.mat_mumps_icntl_28 = 1
+md.cluster = generic('name', gethostname(), 'np', 2)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'MaskIceLevelset1',
+               'IceVolume1', 'IceVolumeAboveFloatation1', 'TotalSmb1', 'TotalGroundedBmb1', 'TotalFloatingBmb1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'MaskIceLevelset2',
+               'IceVolume2', 'IceVolumeAboveFloatation2', 'TotalSmb2', 'TotalGroundedBmb2', 'TotalFloatingBmb2',
+               'Vx10', 'Vy10', 'Vel10', 'Pressure10', 'Bed10', 'Surface10', 'Thickness10', 'MaskIceLevelset10',
+               'IceVolume10', 'IceVolumeAboveFloatation10', 'TotalSmb10', 'TotalGroundedBmb10', 'TotalFloatingBmb10']
+field_tolerances = [1e-12, 2e-12, 2e-12, 1e-13, 1e-13, 1e-13, 1e-13, 2e-12,
+                    1e-12, 2e-12, 2e-12, 1e-13, 1e-13,
+                    1e-12, 2e-12, 2e-12, 1e-13, 2e-13, 1e-13, 1e-13, 2e-12,
+                    1e-12, 2e-12, 2e-12, 1e-13, 1e-13,
+                    1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-9,
+                    1e-12, 2e-12, 2e-12, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].MaskIceLevelset,
+                md.results.TransientSolution[0].IceVolume,
+                md.results.TransientSolution[0].IceVolumeAboveFloatation,
+                md.results.TransientSolution[0].TotalSmb,
+                md.results.TransientSolution[0].TotalGroundedBmb,
+                md.results.TransientSolution[0].TotalFloatingBmb,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].MaskIceLevelset,
+                md.results.TransientSolution[1].IceVolume,
+                md.results.TransientSolution[1].IceVolumeAboveFloatation,
+                md.results.TransientSolution[1].TotalSmb,
+                md.results.TransientSolution[1].TotalGroundedBmb,
+                md.results.TransientSolution[1].TotalFloatingBmb,
+                md.results.TransientSolution[9].Vx,
+                md.results.TransientSolution[9].Vy,
+                md.results.TransientSolution[9].Vel,
+                md.results.TransientSolution[9].Pressure,
+                md.results.TransientSolution[9].Base,
+                md.results.TransientSolution[9].Surface,
+                md.results.TransientSolution[9].Thickness,
+                md.results.TransientSolution[9].MaskIceLevelset,
+                md.results.TransientSolution[9].IceVolume,
+                md.results.TransientSolution[9].IceVolumeAboveFloatation,
+                md.results.TransientSolution[9].TotalSmb,
+                md.results.TransientSolution[9].TotalGroundedBmb,
+                md.results.TransientSolution[9].TotalFloatingBmb]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test541.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test541.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test541.m	(revision 27955)
@@ -0,0 +1,83 @@
+%Test Name: PigTranCalvingDevHO3d
+md=triangle(model(),'../Exp/Pig.exp',10000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=extrude(md,5,1);
+md=setflowequation(md,'HO','all');
+md.timestepping.time_step=2;
+md.timestepping.final_time=50;
+
+%calving parameters
+md.mask.ice_levelset = 1e4*(md.mask.ice_levelset + 0.5);
+md.calving=calvingvonmises();
+md.frontalforcings.meltingrate = zeros(md.mesh.numberofvertices,1);
+md.transient.ismovingfront = 1;
+md.levelset.spclevelset = NaN(md.mesh.numberofvertices,1);
+pos = find(md.mesh.vertexonboundary);
+md.levelset.spclevelset(pos) = md.mask.ice_levelset(pos);
+md.levelset.migration_max = 1e10;
+md.transient.requested_outputs={'default','IceVolume','IceVolumeAboveFloatation','TotalSmb','TotalGroundedBmb','TotalFloatingBmb'};
+
+%Force MUMPS sequential analysis
+md.toolkits.DefaultAnalysis.mat_mumps_icntl_28=1;
+md.cluster=generic('name',oshostname(),'np',2);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names ={...
+	'Vx1' ,'Vy1' ,'Vel1' ,'Pressure1' ,'Bed1' ,'Surface1' ,'Thickness1' ,'MaskIceLevelset1' ,...
+	'IceVolume1' ,'IceVolumeAboveFloatation1' ,'TotalSmb1' ,'TotalGroundedBmb1' ,'TotalFloatingBmb1' ,...
+	'Vx2' ,'Vy2' ,'Vel2' ,'Pressure2' ,'Bed2' ,'Surface2' ,'Thickness2' ,'MaskIceLevelset2' ,...
+	'IceVolume2' ,'IceVolumeAboveFloatation2' ,'TotalSmb2' ,'TotalGroundedBmb2' ,'TotalFloatingBmb2' ,...
+	'Vx10','Vy10','Vel10','Pressure10','Bed10','Surface10','Thickness10','MaskIceLevelset10',...
+	'IceVolume10' ,'IceVolumeAboveFloatation10' ,'TotalSmb10' ,'TotalGroundedBmb10' ,'TotalFloatingBmb10' ,...
+	};
+field_tolerances={...
+	1e-11,2e-11,2e-11,1e-12,2e-11,6e-12,9e-12,2e-12,...
+	1e-11,2e-11,2e-11,2e-9,2e-11,...
+	2e-11,1e-11,1e-11,9e-12,2e-11,3e-11,2e-11,1e-11,...
+	1e-11,2e-11,2e-11,8e-08,2e-11,...
+	2e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-9,...
+	1e-11,2e-11,2e-11,8e-08,2e-11,...
+	};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).MaskIceLevelset),...
+	(md.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(1).IceVolumeAboveFloatation),...
+	(md.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).MaskIceLevelset),...
+	(md.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(2).IceVolumeAboveFloatation),...
+	(md.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(10).Vx),...
+	(md.results.TransientSolution(10).Vy),...
+	(md.results.TransientSolution(10).Vel),...
+	(md.results.TransientSolution(10).Pressure),...
+	(md.results.TransientSolution(10).Base),...
+	(md.results.TransientSolution(10).Surface),...
+	(md.results.TransientSolution(10).Thickness),...
+	(md.results.TransientSolution(10).MaskIceLevelset),...
+	(md.results.TransientSolution(10).IceVolume),...
+	(md.results.TransientSolution(10).IceVolumeAboveFloatation),...
+	(md.results.TransientSolution(10).TotalSmb),...
+	(md.results.TransientSolution(10).TotalGroundedBmb),...
+	(md.results.TransientSolution(10).TotalFloatingBmb),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test541.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test541.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test541.py	(revision 27955)
@@ -0,0 +1,87 @@
+#Test Name: PigTranCalvingDevdHO3d
+import numpy as np
+from calvingvonmises import *
+from socket import gethostname
+from model import *
+from parameterize import *
+from setflowequation import *
+from setmask import *
+from solve import *
+from triangle import *
+
+md = triangle(model(), '../Exp/Pig.exp', 10000.)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md.extrude(5, 1.)
+md = setflowequation(md, 'HO', 'all')
+md.timestepping.time_step = 2
+md.timestepping.final_time = 50
+
+#calving parameters
+md.mask.ice_levelset = 1e4 * (md.mask.ice_levelset + 0.5)
+md.calving = calvingvonmises()
+md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices, ))
+md.transient.ismovingfront = 1
+md.levelset.spclevelset = np.nan * np.ones((md.mesh.numberofvertices, ))
+pos = np.where(md.mesh.vertexonboundary)
+md.levelset.spclevelset[pos] = md.mask.ice_levelset[pos]
+md.levelset.migration_max = 1e10
+md.transient.requested_outputs = ['default', 'IceVolume', 'IceVolumeAboveFloatation','TotalSmb','TotalGroundedBmb','TotalFloatingBmb']
+
+#Force MUMPS sequential analysis
+md.toolkits.DefaultAnalysis.mat_mumps_icntl_28 = 1
+md.cluster = generic('name', gethostname(), 'np', 2)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'MaskIceLevelset1',
+               'IceVolume1', 'IceVolumeAboveFloatation1', 'TotalSmb1', 'TotalGroundedBmb1', 'TotalFloatingBmb1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'MaskIceLevelset2',
+               'IceVolume2', 'IceVolumeAboveFloatation2', 'TotalSmb2', 'TotalGroundedBmb2', 'TotalFloatingBmb2',
+               'Vx10', 'Vy10', 'Vel10', 'Pressure10', 'Bed10', 'Surface10', 'Thickness10', 'MaskIceLevelset10',
+               'IceVolume10', 'IceVolumeAboveFloatation10', 'TotalSmb10', 'TotalGroundedBmb10', 'TotalFloatingBmb10']
+field_tolerances = [1e-11, 2e-11, 2e-11, 1e-12, 2e-11, 6e-12, 9e-12, 2e-12,
+                    1e-11, 2e-11, 2e-11, 2e-9, 2e-11,
+                    2e-11, 1e-11, 1e-11, 9e-12, 2e-11, 3e-11, 2e-11, 1e-11,
+                    1e-11, 2e-11, 2e-11, 8e-08, 2e-11,
+                    2e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-9,
+                    1e-11, 2e-11, 2e-11, 8e-08, 2e-11]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].MaskIceLevelset,
+                md.results.TransientSolution[0].IceVolume,
+                md.results.TransientSolution[0].IceVolumeAboveFloatation,
+                md.results.TransientSolution[0].TotalSmb,
+                md.results.TransientSolution[0].TotalGroundedBmb,
+                md.results.TransientSolution[0].TotalFloatingBmb,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].MaskIceLevelset,
+                md.results.TransientSolution[1].IceVolume,
+                md.results.TransientSolution[1].IceVolumeAboveFloatation,
+                md.results.TransientSolution[1].TotalSmb,
+                md.results.TransientSolution[1].TotalGroundedBmb,
+                md.results.TransientSolution[1].TotalFloatingBmb,
+                md.results.TransientSolution[9].Vx,
+                md.results.TransientSolution[9].Vy,
+                md.results.TransientSolution[9].Vel,
+                md.results.TransientSolution[9].Pressure,
+                md.results.TransientSolution[9].Base,
+                md.results.TransientSolution[9].Surface,
+                md.results.TransientSolution[9].Thickness,
+                md.results.TransientSolution[9].MaskIceLevelset,
+                md.results.TransientSolution[9].IceVolume,
+                md.results.TransientSolution[9].IceVolumeAboveFloatation,
+                md.results.TransientSolution[9].TotalSmb,
+                md.results.TransientSolution[9].TotalGroundedBmb,
+                md.results.TransientSolution[9].TotalFloatingBmb]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test542.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test542.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test542.m	(revision 27955)
@@ -0,0 +1,84 @@
+%Test Name: PigTranFrontalforcingsrignot
+md=triangle(model(),'../Exp/Pig.exp',10000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=2;
+md.timestepping.final_time=50;
+
+%separate domain in 2 basins
+idbasin = zeros(md.mesh.numberofelements,1);
+iid1    = find(md.mesh.x<=-1.6e6);
+for ii=1:md.mesh.numberofelements
+    for vertex=1:3
+        if any(iid1==md.mesh.elements(ii,vertex)) %one vertex in basin 1
+            idbasin(ii) = 1;
+        end
+    end
+    if idbasin(ii)==0 %no vertex was found in basin 1
+        idbasin(ii) = 2;
+    end
+end
+
+%calving and frontalforcings parameters
+md.mask.ice_levelset = 1e4*(md.mask.ice_levelset + 0.5);
+md.calving=calvingvonmises();
+md.frontalforcings=frontalforcingsrignot();
+md.frontalforcings.num_basins = 2;
+md.frontalforcings.basin_id = idbasin;
+md.frontalforcings.subglacial_discharge = 0.1*ones(md.mesh.numberofvertices,1);
+md.frontalforcings.thermalforcing = 0.5*ones(md.mesh.numberofvertices,1);
+for elem=1:md.mesh.numberofelements
+    if idbasin(elem)==2
+        md.frontalforcings.thermalforcing(md.mesh.elements(elem,1:3)) = 1.5;
+    end
+end
+
+md.transient.ismovingfront = 1;
+md.levelset.spclevelset = NaN(md.mesh.numberofvertices,1);
+md.levelset.migration_max = 1e10;
+
+md.transient.requested_outputs = {'default','CalvingMeltingrate'};
+md.cluster=generic('name',oshostname(),'np',2);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names ={...
+   'Vx1' ,'Vy1' ,'Vel1' ,'Pressure1' ,'Bed1' ,'Surface1' ,'Thickness1' ,'MaskIceLevelset1', 'CalvingMeltingrate1',...
+   'Vx2' ,'Vy2' ,'Vel2' ,'Pressure2' ,'Bed2' ,'Surface2' ,'Thickness2' ,'MaskIceLevelset2', 'CalvingMeltingrate2',...
+   'Vx10','Vy10','Vel10','Pressure10','Bed10','Surface10','Thickness10','MaskIceLevelset10', 'CalvingMeltingrate10',...
+   };
+field_tolerances={...
+   1e-11,2e-11,2e-11,1e-12,2e-11,6e-12,9e-12,1e-12,1e-9,...
+   2e-11,1e-11,1e-11,9e-12,2e-1,2e-11,2e-11,1e-11,1e-9,...
+   2e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-9,1e-9,...
+   };
+field_values={...
+   (md.results.TransientSolution(1).Vx),...
+   (md.results.TransientSolution(1).Vy),...
+   (md.results.TransientSolution(1).Vel),...
+   (md.results.TransientSolution(1).Pressure),...
+   (md.results.TransientSolution(1).Base),...
+   (md.results.TransientSolution(1).Surface),...
+   (md.results.TransientSolution(1).Thickness),...
+   (md.results.TransientSolution(1).MaskIceLevelset),...
+   (md.results.TransientSolution(1).CalvingMeltingrate),...
+   (md.results.TransientSolution(2).Vx),...
+   (md.results.TransientSolution(2).Vy),...
+   (md.results.TransientSolution(2).Vel),...
+   (md.results.TransientSolution(2).Pressure),...
+   (md.results.TransientSolution(2).Base),...
+   (md.results.TransientSolution(2).Surface),...
+   (md.results.TransientSolution(2).Thickness),...
+   (md.results.TransientSolution(2).MaskIceLevelset),...
+   (md.results.TransientSolution(2).CalvingMeltingrate),...
+   (md.results.TransientSolution(10).Vx),...
+   (md.results.TransientSolution(10).Vy),...
+   (md.results.TransientSolution(10).Vel),...
+   (md.results.TransientSolution(10).Pressure),...
+   (md.results.TransientSolution(10).Base),...
+   (md.results.TransientSolution(10).Surface),...
+   (md.results.TransientSolution(10).Thickness),...
+   (md.results.TransientSolution(10).MaskIceLevelset),...
+   (md.results.TransientSolution(10).CalvingMeltingrate),...
+   };
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test542.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test542.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test542.py	(revision 27955)
@@ -0,0 +1,87 @@
+#Test Name: PigTranFrontalforcingsrignot
+import numpy as np
+from calvingvonmises import calvingvonmises
+from frontalforcingsrignot import frontalforcingsrignot
+from socket import gethostname
+from model import *
+from parameterize import parameterize
+from setflowequation import setflowequation
+from setmask import setmask
+from solve import solve
+from triangle import triangle
+
+
+md = triangle(model(), '../Exp/Pig.exp', 10000)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md = setflowequation(md, 'SSA', 'all')
+md.timestepping.time_step = 2
+md.timestepping.final_time = 50
+
+# Separate domain in 2 basins
+idbasin = np.zeros((md.mesh.numberofelements,))
+iid1 = np.where(md.mesh.x <= -1.6e6)[0]
+for ii in range(md.mesh.numberofelements):
+    for vertex in range(3):
+        if md.mesh.elements[ii][vertex] - 1 in iid1:  # one vertex in basin 1; NOTE: offset because of 1-based vertex indexing
+            idbasin[ii] = 1
+    if idbasin[ii] == 0:  # no vertex was found in basin 1
+        idbasin[ii] = 2
+
+# Calving and frontalforcings parameters
+md.mask.ice_levelset = 1e4 * (md.mask.ice_levelset + 0.5)
+md.calving = calvingvonmises()
+md.frontalforcings = frontalforcingsrignot()
+md.frontalforcings.num_basins = 2
+md.frontalforcings.basin_id = idbasin
+md.frontalforcings.subglacial_discharge = 0.1 * np.ones((md.mesh.numberofvertices,))
+md.frontalforcings.thermalforcing = 0.5 * np.ones((md.mesh.numberofvertices,))
+for elem in range(md.mesh.numberofelements):
+    if idbasin[elem] == 2:
+        md.frontalforcings.thermalforcing[md.mesh.elements[elem, 0:3] - 1] = 1.5  #NOTE: offset because of 1-based vertex indexing
+
+md.transient.ismovingfront = 1
+md.levelset.spclevelset = np.full((md.mesh.numberofvertices,), np.nan)
+md.levelset.migration_max = 1e10
+
+md.transient.requested_outputs = ['default', 'CalvingMeltingrate']
+md.cluster = generic('name', gethostname(), 'np', 2)
+md = solve(md, 'Transient')
+
+# Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'MaskIceLevelset1', 'CalvingMetlingRate1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'MaskIceLevelset2', 'CalvingMetlingRate2',
+               'Vx10', 'Vy10', 'Vel10', 'Pressure10', 'Bed10', 'Surface10', 'Thickness10', 'MaskIceLevelset10', 'CalvingMetlingRate10']
+field_tolerances = [
+    1e-11, 2e-11, 2e-11, 1e-12, 2e-11, 6e-12, 9e-12, 1e-12, 1e-9,
+    2e-11, 1e-11, 1e-11, 9e-12, 2e-1, 2e-11, 2e-11, 1e-11, 1e-9,
+    2e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-9, 1e-9]
+field_values = [
+    md.results.TransientSolution[0].Vx,
+    md.results.TransientSolution[0].Vy,
+    md.results.TransientSolution[0].Vel,
+    md.results.TransientSolution[0].Pressure,
+    md.results.TransientSolution[0].Base,
+    md.results.TransientSolution[0].Surface,
+    md.results.TransientSolution[0].Thickness,
+    md.results.TransientSolution[0].MaskIceLevelset,
+    md.results.TransientSolution[0].CalvingMeltingrate,
+    md.results.TransientSolution[1].Vx,
+    md.results.TransientSolution[1].Vy,
+    md.results.TransientSolution[1].Vel,
+    md.results.TransientSolution[1].Pressure,
+    md.results.TransientSolution[1].Base,
+    md.results.TransientSolution[1].Surface,
+    md.results.TransientSolution[1].Thickness,
+    md.results.TransientSolution[1].MaskIceLevelset,
+    md.results.TransientSolution[1].CalvingMeltingrate,
+    md.results.TransientSolution[9].Vx,
+    md.results.TransientSolution[9].Vy,
+    md.results.TransientSolution[9].Vel,
+    md.results.TransientSolution[9].Pressure,
+    md.results.TransientSolution[9].Base,
+    md.results.TransientSolution[9].Surface,
+    md.results.TransientSolution[9].Thickness,
+    md.results.TransientSolution[9].MaskIceLevelset,
+    md.results.TransientSolution[9].CalvingMeltingrate
+]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test543.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test543.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test543.m	(revision 27955)
@@ -0,0 +1,155 @@
+%Test Name: PigTranRignotarma
+md=triangle(model(),'../Exp/Pig.exp',10000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=setflowequation(md,'SSA','all');
+md.timestepping.start_time = 0;
+md.timestepping.time_step  = 0.05;
+md.timestepping.final_time = 2;
+
+%Basin separation TF
+idb_tf  = zeros(md.mesh.numberofelements,1);
+iid1    = find(md.mesh.x<=-1.6e6);
+for ii=1:md.mesh.numberofelements
+    for vertex=1:3
+        if any(iid1==md.mesh.elements(ii,vertex)) %one vertex in basin 1
+            idb_tf(ii) = 1;
+        end
+    end
+    if idb_tf(ii)==0 %no vertex was found in basin 1
+        idb_tf(ii) = 2;
+    end
+end
+% Dimensionalities
+nb_tf    = 2;
+
+%Calving parameters
+md.mask.ice_levelset = 1e4*(md.mask.ice_levelset + 0.5);
+md.calving.calvingrate = 0*ones(md.mesh.numberofvertices,1);
+md.levelset.spclevelset = NaN(md.mesh.numberofvertices,1);
+md.levelset.migration_max = 10.0; %avoid fast advance/retreat of the front
+%%% Frontal forcing parameters %%%
+md.frontalforcings=frontalforcingsrignotarma();
+% Polynomial params %
+numparams        = 3;
+numbreaks        = 2;
+intercept        = [2.5,2.0,0.1;0.5,0.5,1.5];
+trendlin         = [-0.5,-0.2,0.1;0,0,0];
+trendquad        = [0,0.0,0;0.1,0.1,0.1];
+datebreaks       = [0.5,1.5;0.5,1.5];
+polynomialparams = cat(numparams,intercept,trendlin,trendquad);
+% Monthly effects params %
+numbreaksM       = 1;
+intcpsMp0        = [-0.5,-0.5,0,0,0,0,0.5,0.5,0,0,0,0;
+                    -1.0,-1.0,0,0,0,0,1.0,1.0,0,0,0,0];
+intcpsMp1        = [-0.25,-0.25,0,0,0,0,0.,0.,0,0,0,0;
+                    -0.1,-0.1,0,0,0,0,0.1,0.1,0,0,0,0];
+intcpsM          = cat(3,intcpsMp0,intcpsMp1);
+trendsMp0        = [0,0,0,0,0,0,0.,0.0,0,0,0,0;
+                    0.0,0.0,0,-0.0,0,0,0.0,0.0,0,0,0,0];
+trendsMp1        = [0,-0.12,0,0,0,0,0.,0.0,0,0.0,0,0;
+                    0.0,-0.1,0,-0.0,0,0,0.0,0.0,0,0,0,0];
+trendsM          = cat(3,trendsMp0,trendsMp1);
+datebreaksM      = [1;1];
+% Subglacial discharge parameters %
+isdischargearma            = 1;
+sd_ar_order                = 1;
+sd_ma_order                = 1;
+sd_num_breaks              = 1;
+sd_num_params              = 2;
+sd_arma_timestep           = 1;
+sd_arlag_coefs             = [0.95;0.95];
+sd_malag_coefs             = [0;0];
+sd_datebreaks              = [1;1];
+sd_monthlyfrac             = [0,0,0,0,0,0,0.5,0.5,0,0,0,0;
+                              0,0,0,0,0,0,0.5,0.5,0,0,0,0];
+sd_const                   = [50000,70000.0;8000,10000.0];
+sd_trend                   = [0,10000;0,0];
+sd_polyparam               = cat(3,sd_const,sd_trend);
+
+md.frontalforcings.num_basins              = nb_tf;
+md.frontalforcings.basin_id                = idb_tf;
+md.frontalforcings.num_params              = numparams; %number of parameters in the polynomial
+md.frontalforcings.num_breaks              = numbreaks; %number of breakpoints
+md.frontalforcings.subglacial_discharge    = 0.01*ones(md.mesh.numberofvertices,1);
+md.frontalforcings.polynomialparams        = polynomialparams;
+md.frontalforcings.datebreaks              = datebreaks;
+md.frontalforcings.ar_order                = 4;
+md.frontalforcings.ma_order                = 2;
+md.frontalforcings.arma_timestep           = 2; %timestep of the ARMA model [yr]
+md.frontalforcings.arlag_coefs             = [[0.1,-0.1,0.01,-0.01];[0.2,-0.2,0.1,0.0]]; %autoregressive parameters
+md.frontalforcings.malag_coefs             = [[0.1,0.0];[0.0,0.1]]; %moving-average parameters
+md.frontalforcings.monthlyvals_numbreaks   = numbreaksM;
+md.frontalforcings.monthlyvals_intercepts  = intcpsM;
+md.frontalforcings.monthlyvals_trends      = trendsM;
+md.frontalforcings.monthlyvals_datebreaks  = datebreaksM;
+md.frontalforcings.isdischargearma         = isdischargearma;
+if(isdischargearma==0)
+	md.frontalforcings.subglacial_discharge    = 0.01*ones(md.mesh.numberofvertices,1);
+else
+    md.frontalforcings.sd_num_breaks         = sd_num_breaks;
+    md.frontalforcings.sd_num_params         = sd_num_params;
+    md.frontalforcings.sd_ar_order           = sd_ar_order;
+    md.frontalforcings.sd_ma_order           = sd_ma_order;
+    md.frontalforcings.sd_arma_timestep      = sd_arma_timestep;
+    md.frontalforcings.sd_arlag_coefs        = sd_arlag_coefs;
+    md.frontalforcings.sd_malag_coefs        = sd_malag_coefs;
+    md.frontalforcings.sd_datebreaks         = sd_datebreaks;
+    md.frontalforcings.sd_monthlyfrac        = sd_monthlyfrac;
+    md.frontalforcings.sd_polynomialparams   = sd_polyparam;
+end
+% Floating Ice Melt parameters
+md.basalforcings.floatingice_melting_rate = 0*ones(md.mesh.numberofvertices,1);
+
+
+% Covariance matrix
+covtf       = 1e-4*eye(nb_tf);
+covsd       = 1e3*eye(nb_tf);
+covglob     = blkdiag(covtf,covsd);
+
+%Stochastic forcing
+md.stochasticforcing.isstochasticforcing = 1;
+md.stochasticforcing.fields              = [{'FrontalForcingsRignotarma'},{'FrontalForcingsSubglacialDischargearma'}];
+md.stochasticforcing.defaultdimension    = 2;
+md.stochasticforcing.default_id          = idb_tf;
+md.stochasticforcing.covariance          = covglob; %global covariance among- and between-fields
+md.stochasticforcing.randomflag          = 0; %determines true/false randomness
+
+md.transient.ismovingfront   = 1;
+md.transient.isgroundingline = 1;
+
+md.transient.requested_outputs = {'default','CalvingMeltingrate'};
+md.cluster=generic('name',oshostname(),'np',2);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names ={...
+   'Vx1' ,'Vy1' ,'Vel1' ,'Thickness1' ,'MaskIceLevelset1' ,'CalvingMeltingrate1' ,...
+   'Vx2' ,'Vy2' ,'Vel2' ,'Thickness2' ,'MaskIceLevelset2' ,'CalvingMeltingrate2' ,...
+   'Vx10','Vy10','Vel10','Thickness10','MaskIceLevelset10','CalvingMeltingrate10',...
+   };
+field_tolerances={...
+   1e-11,2e-11,2e-11,1e-11,1e-9,1e-10,...
+   2e-11,1e-11,1e-11,9e-11,2e-9,1e-10,...
+   2e-6,1e-6,1e-6,1e-6,5e-6,1e-6,...
+   };
+field_values={...
+   (md.results.TransientSolution(1).Vx),...
+   (md.results.TransientSolution(1).Vy),...
+   (md.results.TransientSolution(1).Vel),...
+   (md.results.TransientSolution(1).Thickness),...
+   (md.results.TransientSolution(1).MaskIceLevelset),...
+   (md.results.TransientSolution(1).CalvingMeltingrate),...
+   (md.results.TransientSolution(20).Vx),...
+   (md.results.TransientSolution(20).Vy),...
+   (md.results.TransientSolution(20).Vel),...
+   (md.results.TransientSolution(20).Thickness),...
+   (md.results.TransientSolution(20).MaskIceLevelset),...
+   (md.results.TransientSolution(20).CalvingMeltingrate),...
+	(md.results.TransientSolution(40).Vx),...
+	(md.results.TransientSolution(40).Vy),...
+	(md.results.TransientSolution(40).Vel),...
+	(md.results.TransientSolution(40).Thickness),...
+	(md.results.TransientSolution(40).MaskIceLevelset),...
+	(md.results.TransientSolution(40).CalvingMeltingrate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test543.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test543.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test543.py	(revision 27955)
@@ -0,0 +1,170 @@
+#Test Name: PigTranRignotarma 
+import numpy as np
+from frontalforcingsrignotarma import frontalforcingsrignotarma
+from socket import gethostname
+from model import *
+from parameterize import parameterize
+from setflowequation import setflowequation
+from setmask import setmask
+from solve import solve
+from triangle import triangle
+
+
+md = triangle(model(), '../Exp/Pig.exp', 10000)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md = setflowequation(md, 'SSA', 'all')
+md.timestepping.start_time = 0
+md.timestepping.time_step = 0.05
+md.timestepping.final_time = 2
+
+# Basin separation TF
+idb_tf = np.zeros((md.mesh.numberofelements,))
+iid1 = np.where(md.mesh.x <= -1.6e6)[0]
+for ii in range(md.mesh.numberofelements):
+    for vertex in range(3):
+        if md.mesh.elements[ii][vertex] - 1 in iid1:  # one vertex in basin 1; NOTE: offset because of 1-based vertex indexing
+            idb_tf[ii] = 1
+    if idb_tf[ii] == 0:  # no vertex was found in basin 1
+        for vertex in range(3):
+            idb_tf[ii] = 2
+#Dimensionalities
+nb_tf = 2
+
+# Calving parameters
+md.mask.ice_levelset = 1e4 * (md.mask.ice_levelset + 0.5)
+md.calving.calvingrate = 0 * np.ones((md.mesh.numberofvertices,))
+md.levelset.spclevelset = np.full((md.mesh.numberofvertices,), np.nan)
+md.levelset.migration_max = 10.0
+### Frontal forcing parameters ###
+md.frontalforcings = frontalforcingsrignotarma()
+# Polynomial params #
+numparams        = 3;
+numbreaks        = 2;
+intercept        = np.array([[2.5,2.0,0.1],[0.5,0.5,1.5]])
+trendlin         = np.array([[-0.5,-0.2,0.1],[0,0,0]])
+trendquad        = np.array([[0,0.0,0],[0.1,0.1,0.1]])
+datebreaks       = np.array([[0.5,1.5],[0.5,1.5]])
+polynomialparams = np.transpose(np.stack((intercept,trendlin,trendquad)),(1,2,0))
+# Monthly effects params #
+numbreaksM       = 1;
+intcpsMp0        = np.array([[-0.5,-0.5,0,0,0,0,0.5,0.5,0,0,0,0],
+                    [-1.0,-1.0,0,0,0,0,1.0,1.0,0,0,0,0]])
+intcpsMp1        = np.array([[-0.25,-0.25,0,0,0,0,0.,0.,0,0,0,0],
+                    [-0.1,-0.1,0,0,0,0,0.1,0.1,0,0,0,0]])
+intcpsM          = np.transpose(np.stack((intcpsMp0,intcpsMp1)),(1,2,0)) 
+trendsMp0        = np.array([[0,0,0,0,0,0,0.,0.0,0,0,0,0],
+                    [0.0,0.0,0,-0.0,0,0,0.0,0.0,0,0,0,0]])
+trendsMp1        = np.array([[0,-0.12,0,0,0,0,0.,0.0,0,0.0,0,0],
+                    [0.0,-0.1,0,-0.0,0,0,0.0,0.0,0,0,0,0]])
+trendsM          = np.transpose(np.stack((trendsMp0,trendsMp1)),(1,2,0)) 
+datebreaksM      = np.array([[1],[1]]) 
+# Subglacial discharge params #
+isdischargearma            = 1
+sd_ar_order                = 1
+sd_ma_order                = 1
+sd_num_breaks              = 1
+sd_num_params              = 2
+sd_arma_timestep           = 1
+sd_arlag_coefs             = np.array([[0.95],[0.95]])
+sd_malag_coefs             = np.array([[0.0],[0.0]])
+sd_datebreaks              = np.array([[1.0],[1.0]])
+sd_monthlyfrac             = np.array([[0,0,0,0,0,0,0.5,0.5,0,0,0,0],[0,0,0,0,0,0,0.5,0.5,0,0,0,0]])
+sd_const                   = np.array([[50000,70000],[8000,10000.0]])
+sd_trend                   = np.array([[0.0,10000],[0,0]])
+sd_polyparam               = np.transpose(np.stack((sd_const,sd_trend)),(1,2,0))
+
+
+md.frontalforcings.num_basins = nb_tf
+md.frontalforcings.basin_id = idb_tf
+md.frontalforcings.subglacial_discharge = 0.01 * np.ones((md.mesh.numberofvertices,))
+md.frontalforcings.num_params = numparams #number of parameters in the polynomial
+md.frontalforcings.num_breaks = numbreaks #number of breakpoints
+md.frontalforcings.polynomialparams = polynomialparams
+md.frontalforcings.datebreaks = datebreaks
+md.frontalforcings.ar_order = 4
+md.frontalforcings.ma_order = 2
+md.frontalforcings.arma_timestep = 2  # timestep of the ARMA model [yr]
+md.frontalforcings.arlag_coefs = np.array([[0.1, -0.1, 0.01, -0.01], [0.2, -0.2, 0.1, 0.0]])  # autoregressive parameters
+md.frontalforcings.malag_coefs = np.array([[0.1, 0.0], [0.0, 0.1]])  # moving-average parameters
+md.frontalforcings.monthlyvals_numbreaks   = numbreaksM
+md.frontalforcings.monthlyvals_intercepts  = intcpsM
+md.frontalforcings.monthlyvals_trends      = trendsM
+md.frontalforcings.monthlyvals_datebreaks  = datebreaksM
+md.frontalforcings.isdischargearma         = isdischargearma
+if(isdischargearma==0):
+   md.frontalforcings.subglacial_discharge    = 0.01*ones(md.mesh.numberofvertices,1)
+else:
+    md.frontalforcings.sd_num_breaks         = sd_num_breaks
+    md.frontalforcings.sd_num_params         = sd_num_params
+    md.frontalforcings.sd_ar_order           = sd_ar_order
+    md.frontalforcings.sd_ma_order           = sd_ma_order
+    md.frontalforcings.sd_arma_timestep      = sd_arma_timestep
+    md.frontalforcings.sd_arlag_coefs        = sd_arlag_coefs
+    md.frontalforcings.sd_malag_coefs        = sd_malag_coefs
+    md.frontalforcings.sd_datebreaks         = sd_datebreaks
+    md.frontalforcings.sd_monthlyfrac        = sd_monthlyfrac
+    md.frontalforcings.sd_polynomialparams   = sd_polyparam
+#Floating Ice Melt parameters
+md.basalforcings.floatingice_melting_rate = 0.0 * np.ones((md.mesh.numberofvertices,))
+
+#Covariance matrix
+covtf = 1e-4 * np.identity(nb_tf)
+covsd = 1e3 * np.identity(nb_tf)
+#covglob          = np.zeros([6,6])
+#covglob[0:2,0:2] = covtf
+#covglob[2:4,2:4] = covclv
+#covglob[4:6,4:6] = covflmlt
+
+#Hard-coding covariance matrix because python is complaining
+covglob = np.array([[1e-4, 0., 0., 0.],
+                    [0., 1e-4, 0., 0.],
+                    [0., 0., 1e3, 0.],
+                    [0., 0., 0., 1e3]])
+#testchol = np.linalg.cholesky(covglob)
+#print(testchol)
+
+# Stochastic forcing
+md.stochasticforcing.isstochasticforcing = 1
+md.stochasticforcing.fields = ['FrontalForcingsRignotarma','FrontalForcingsSubglacialDischargearma']
+md.stochasticforcing.defaultdimension = 2
+md.stochasticforcing.default_id = idb_tf
+md.stochasticforcing.covariance = covglob  # global covariance among- and between-fields
+md.stochasticforcing.randomflag = 0  # determines true/false randomness
+
+md.transient.ismovingfront = 1
+md.transient.isgroundingline = 1
+
+md.transient.requested_outputs = ['default', 'CalvingCalvingrate', 'CalvingMeltingrate', 'BasalforcingsFloatingiceMeltingRate']
+md.cluster = generic('name', gethostname(), 'np', 2)
+md = solve(md, 'Transient')
+
+# Fields and tolerances to track changes
+field_names = [
+    'Vx1', 'Vy1', 'Vel1', 'Thickness1', 'MaskIceLevelset1', 'CalvingMeltingrate1',
+    'Vx2', 'Vy2', 'Vel2', 'Thickness2', 'MaskIceLevelset2', 'CalvingMeltingrate2',
+    'Vx10', 'Vy10', 'Vel10', 'Thickness10', 'MaskIceLevelset10', 'CalvingMeltingrate10']
+
+field_tolerances = [
+        1e-11,2e-11,2e-11,1e-11,1e-9,1e-10,
+        2e-11,1e-11,1e-11,9e-11,2e-9,1e-10,
+        2e-6,1e-6,1e-6,1e-6,5e-6,1e-6]
+field_values = [
+    md.results.TransientSolution[0].Vx,
+    md.results.TransientSolution[0].Vy,
+    md.results.TransientSolution[0].Vel,
+    md.results.TransientSolution[0].Thickness,
+    md.results.TransientSolution[0].MaskIceLevelset,
+    md.results.TransientSolution[0].CalvingMeltingrate,
+    md.results.TransientSolution[19].Vx,
+    md.results.TransientSolution[19].Vy,
+    md.results.TransientSolution[19].Vel,
+    md.results.TransientSolution[19].Thickness,
+    md.results.TransientSolution[19].MaskIceLevelset,
+    md.results.TransientSolution[19].CalvingMeltingrate,
+    md.results.TransientSolution[39].Vx,
+    md.results.TransientSolution[39].Vy,
+    md.results.TransientSolution[39].Vel,
+    md.results.TransientSolution[39].Thickness,
+    md.results.TransientSolution[39].MaskIceLevelset,
+    md.results.TransientSolution[39].CalvingMeltingrate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test544.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test544.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test544.m	(revision 27955)
@@ -0,0 +1,134 @@
+%Test Name: PigTranARMAandStochasticforcings 
+md=triangle(model(),'../Exp/Pig.exp',8000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=setflowequation(md,'SSA','all');
+md.timestepping.start_time = 0;
+md.timestepping.time_step  = 1;
+md.timestepping.final_time = 10;
+
+%Basin separation
+idb     = zeros(md.mesh.numberofelements,1);
+iid1    = find(md.mesh.x>=-1.6e6);
+for ii=1:md.mesh.numberofelements
+    for vertex=1:3
+        if any(iid1==md.mesh.elements(ii,vertex)) %one vertex in basin 1
+            idb(ii) = 1;
+        end
+    end
+    if idb(ii)==0 %no vertex was found in basin 1
+        idb(ii) = 2;
+    end
+end
+nb_bas = 2;
+
+%SMB
+numparams               = 1;
+numbreaks               = 0;
+intercept               = [0.5;0.01];
+polynomialparams        = intercept;
+datebreaks              = NaN;
+md.smb                  = SMBarma();
+md.smb.num_basins       = nb_bas; %number of basins
+md.smb.basin_id         = idb; %prescribe basin ID number to elements
+md.smb.num_params       = numparams; %number of parameters in the polynomial
+md.smb.num_breaks       = numbreaks; %number of breakpoints
+md.smb.polynomialparams = polynomialparams;
+md.smb.datebreaks       = datebreaks;
+md.smb.ar_order         = 4;
+md.smb.ma_order         = 4;
+md.smb.arma_timestep    = 2.0; %timestep of the ARMA model [yr]
+md.smb.arlag_coefs      = [[0.2,0.1,0.05,0.01];[0.4,0.2,-0.2,0.1]];
+md.smb.malag_coefs      = [[0.1,0.1,0.2,0.3];[0.5,0.8,1.3,2.4]];
+
+%Calving
+md.mask.ice_levelset           = 1e4*(md.mask.ice_levelset + 0.5);
+md.calving.calvingrate         = 0.1*ones(md.mesh.numberofvertices,1);
+md.levelset.spclevelset        = NaN(md.mesh.numberofvertices,1);
+md.levelset.migration_max      = 10.0;
+md.frontalforcings.meltingrate = zeros(md.mesh.numberofvertices,1);
+
+% Basal forcing implementation
+numparams                         = 2;
+numbreaks                         = 1;
+intercept                         = [3.0,4.0;1.0,0.5];
+trendlin                          = [0.0,0.1;0,0];
+polynomialparams                  = cat(3,intercept,trendlin);
+datebreaks                        = [6;7];
+md.basalforcings                  = linearbasalforcingsarma();
+md.basalforcings.num_basins       = nb_bas; %number of basins
+md.basalforcings.basin_id         = idb; %prescribe basin ID number to elements
+md.basalforcings.polynomialparams = polynomialparams;
+md.basalforcings.datebreaks       = datebreaks;
+md.basalforcings.num_params       = numparams; %number of parameters in the polynomial
+md.basalforcings.num_breaks       = numbreaks; %number of breakpoints
+md.basalforcings.ar_order         = 1;
+md.basalforcings.ma_order         = 1;
+md.basalforcings.arma_timestep    = 1.0; %timestep of the ARMA model [yr]
+md.basalforcings.arlag_coefs      = [0.0;0.1];
+md.basalforcings.malag_coefs      = [0.55;0.34];
+md.basalforcings.deepwater_elevation       = [-1000,-1520];
+md.basalforcings.upperwater_elevation      = [0,-50];
+md.basalforcings.upperwater_melting_rate   = [0.0,0.0];
+md.basalforcings.groundedice_melting_rate  = zeros(md.mesh.numberofvertices,1);
+
+% Covariance matrix
+covsmb      = 3*eye(nb_bas);
+covclv      = 1e-1*eye(nb_bas);
+covclv(1,1) = 1/10*covclv(1,1);
+covdwm      = 400*eye(nb_bas);
+covglob     = blkdiag(covsmb,covclv,covdwm);
+
+% Stochastic forcing
+md.stochasticforcing.isstochasticforcing = 1;
+md.stochasticforcing.fields              = [{'SMBarma'},{'DefaultCalving'},{'BasalforcingsDeepwaterMeltingRatearma'}];
+md.stochasticforcing.defaultdimension    = 2;
+md.stochasticforcing.default_id          = idb;
+md.stochasticforcing.covariance          = covglob; %global covariance among- and between-fields
+md.stochasticforcing.randomflag          = 0; %determines true/false randomness
+
+md.transient.ismovingfront     = 1;
+md.transient.requested_outputs = {'default','SmbMassBalance','BasalforcingsFloatingiceMeltingRate','BasalforcingsSpatialDeepwaterMeltingRate'};
+md.transient.isstressbalance = 1;
+md.transient.ismasstransport = 1;
+md.transient.issmb           = 1;
+md.transient.isthermal       = 0;
+md.transient.isgroundingline = 1;
+
+md.cluster=generic('name',oshostname(),'np',2);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names ={...
+   'Vx1' ,'Vy1' ,'Vel1' ,'Thickness1', 'SmbMassBalance1', 'BasalforcingsFloatingiceMeltingRate1', 'BasalforcingsSpatialDeepwaterMeltingRate1',...
+   'Vx2' ,'Vy2' ,'Vel2' ,'Thickness2', 'SmbMassBalance2' ,'BasalforcingsFloatingiceMeltingRate2', 'BasalforcingsSpatialDeepwaterMeltingRate2',...
+   'Vx3' ,'Vy3' ,'Vel3' ,'Thickness3', 'SmbMassBalance3' ,'BasalforcingsFloatingiceMeltingRate3', 'BasalforcingsSpatialDeepwaterMeltingRate3',...
+   };
+field_tolerances={...
+   1e-11,1e-11,2e-11,1e-11,1e-10,1e-9,1e-10,...
+   1e-11,1e-11,2e-11,9e-11,1e-10,1e-9,1e-10,...
+   2e-10,2e-10,2e-10,1e-10,1e-10,1e-9,1e-10,...
+   };
+field_values={...
+   (md.results.TransientSolution(1).Vx),...
+   (md.results.TransientSolution(1).Vy),...
+   (md.results.TransientSolution(1).Vel),...
+   (md.results.TransientSolution(1).Thickness),...
+   (md.results.TransientSolution(1).SmbMassBalance),...
+   (md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),...
+   (md.results.TransientSolution(1).BasalforcingsSpatialDeepwaterMeltingRate),...
+   (md.results.TransientSolution(5).Vx),...
+   (md.results.TransientSolution(5).Vy),...
+   (md.results.TransientSolution(5).Vel),...
+   (md.results.TransientSolution(5).Thickness),...
+   (md.results.TransientSolution(5).SmbMassBalance),...
+   (md.results.TransientSolution(5).BasalforcingsFloatingiceMeltingRate),...
+   (md.results.TransientSolution(5).BasalforcingsSpatialDeepwaterMeltingRate),...
+	(md.results.TransientSolution(10).Vx),...
+	(md.results.TransientSolution(10).Vy),...
+	(md.results.TransientSolution(10).Vel),...
+	(md.results.TransientSolution(10).Thickness),...
+   (md.results.TransientSolution(10).SmbMassBalance),...
+	(md.results.TransientSolution(10).BasalforcingsFloatingiceMeltingRate),...
+   (md.results.TransientSolution(10).BasalforcingsSpatialDeepwaterMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test544.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test544.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test544.py	(revision 27955)
@@ -0,0 +1,147 @@
+#Test Name: PigTranARMAandStochasticforcings
+import numpy as np
+from linearbasalforcingsarma import linearbasalforcingsarma
+from SMBarma import SMBarma
+from stochasticforcing import stochasticforcing
+from socket import gethostname
+from model import *
+from parameterize import parameterize
+from setflowequation import setflowequation
+from setmask import setmask
+from solve import solve
+from triangle import triangle
+
+
+md = triangle(model(), '../Exp/Pig.exp', 8000)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md = setflowequation(md, 'SSA', 'all')
+md.timestepping.start_time = 0
+md.timestepping.time_step = 1
+md.timestepping.final_time = 10
+
+# Basin separation
+idb = np.zeros((md.mesh.numberofelements,))
+iid1 = np.where(md.mesh.x >= -1.6e6)[0]
+for ii in range(md.mesh.numberofelements):
+    for vertex in range(3):
+        if md.mesh.elements[ii][vertex] - 1 in iid1:  # one vertex in basin 1; NOTE: offset because of 1-based vertex indexing
+            idb[ii] = 1
+    if idb[ii] == 0:  # no vertex was found in basin 1
+        for vertex in range(3):
+            idb[ii] = 2
+nb_bas = 2
+
+#SMB
+numparams  = 1;
+numbreaks  = 0;
+intercept     = np.array([[0.5],[0.01]])
+polynomialparams = np.copy(intercept)
+datebreaks = np.nan
+md.smb = SMBarma()
+md.smb.num_basins = nb_bas  # number of basins
+md.smb.basin_id = idb  # prescribe basin ID number to elements;
+md.smb.num_params       = 1*numparams
+md.smb.num_breaks       = 1*numbreaks
+md.smb.polynomialparams = 1*polynomialparams
+md.smb.datebreaks       = 1*datebreaks
+md.smb.ar_order = 4
+md.smb.ma_order = 4
+md.smb.arma_timestep = 2.0  #timestep of the ARMA model [yr]
+md.smb.arlag_coefs = np.array([[0.2,0.1,0.05,0.01],[0.4,0.2,-0.2,0.1]])
+md.smb.malag_coefs = np.array([[0.1,0.1,0.2,0.3],[0.5,0.8,1.3,2.4]])
+
+#Calving
+md.mask.ice_levelset = 1e4*(md.mask.ice_levelset + 0.5)
+md.calving.calvingrate = 0.1*np.ones((md.mesh.numberofvertices,))
+md.levelset.spclevelset = np.full((md.mesh.numberofvertices,), np.nan)
+md.levelset.migration_max = 10.0
+md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices,))
+
+#Basal forcing implementation
+numparams = 2
+numbreaks = 1
+intercept = np.array([[3.0,4.0],[1.0,0.5]])
+trendlin  = np.array([[0.0,0.1],[0,0]])
+polynomialparams = np.transpose(np.stack((intercept,trendlin)),(1,2,0))
+datebreaks = np.array([[6],[7]])
+
+md.basalforcings = linearbasalforcingsarma()
+md.basalforcings.num_basins = nb_bas
+md.basalforcings.basin_id  = idb
+md.basalforcings.const = np.array([[1.0, 2.50]])  # intercept values of DeepwaterMelt in basins [m/yr]
+md.basalforcings.trend  = np.array([[0.2, 0.01]])  # trend values of DeepwaterMelt in basins [m/yr^2]
+md.basalforcings.arma_initialtime = md.timestepping.start_time  # initial time in the ARMA model parameterization [yr]
+md.basalforcings.ar_order  = 1
+md.basalforcings.ma_order  = 1
+md.basalforcings.polynomialparams = 1*polynomialparams;
+md.basalforcings.datebreaks       = 1*datebreaks;
+md.basalforcings.num_params       = 1*numparams
+md.basalforcings.num_breaks       = 1*numbreaks
+md.basalforcings.arma_timestep  = 1.0  # timestep of the ARMA model [yr]
+md.basalforcings.arlag_coefs  = np.array([[0.0], [0.1]])  # autoregressive parameters
+md.basalforcings.malag_coefs  = np.array([[0.55], [0.34]])  # moving-average parameters
+md.basalforcings.deepwater_elevation = np.array([[-1000, -1520]])
+md.basalforcings.upperwater_elevation = np.array([[0, -50]])
+md.basalforcings.upperwater_melting_rate = np.array([[0,0]])
+md.basalforcings.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices,))
+
+#Covariance matrix (hard-coding)
+covglob = np.array([[3.0, 0., 0., 0., 0., 0.],
+                    [0., 3.0, 0., 0., 0., 0.],
+                    [0., 0., 0.01, 0., 0., 0.],
+                    [0., 0., 0., 0.1, 0., 0.],
+                    [0., 0., 0., 0., 400, 0.],
+                    [0., 0., 0., 0., 0., 400]])
+
+#Stochastic forcing
+md.stochasticforcing.isstochasticforcing = 1
+md.stochasticforcing.fields = ['SMBarma', 'DefaultCalving', 'BasalforcingsDeepwaterMeltingRatearma']
+md.stochasticforcing.defaultdimension = 2
+md.stochasticforcing.default_id = idb
+md.stochasticforcing.covariance = covglob  # global covariance among- and between-fields
+md.stochasticforcing.randomflag = 0  # determines true/false randomness
+
+md.transient.ismovingfront = 1
+md.transient.requested_outputs = ['default', 'SmbMassBalance', 'BasalforcingsFloatingiceMeltingRate', 'BasalforcingsSpatialDeepwaterMeltingRate']
+md.transient.isstressbalance = 1
+md.transient.ismasstransport = 1
+md.transient.issmb = 1
+md.transient.isthermal = 0
+md.transient.isgroundingline = 1
+
+md.cluster = generic('name', gethostname(), 'np', 2)
+md = solve(md, 'Transient')
+
+# Fields and tolerances to track changes
+field_names = [
+    'Vx1', 'Vy1', 'Vel1', 'Thickness1', 'SmbMassBalance1', 'BasalforcingsFloatingiceMeltingRate1', 'BasalforcingsSpatialDeepwaterMeltingRate1',
+    'Vx5', 'Vy5', 'Vel5', 'Thickness5', 'SmbMassBalance5', 'BasalforcingsFloatingiceMeltingRate5', 'BasalforcingsSpatialDeepwaterMeltingRate5',
+    'Vx10', 'Vy10', 'Vel10', 'Thickness10', 'SmbMassBalance10', 'BasalforcingsFloatingiceMeltingRate10', 'BasalforcingsSpatialDeepwaterMeltingRate10']
+
+field_tolerances = [
+    1e-11, 1e-11, 2e-11, 1e-11, 1e10, 1e-9, 1e-10,
+    1e-11, 1e-11, 2e-11, 9e-11, 1e10, 1e-9, 1e-10,
+    2e-10, 2e-10, 2e-10, 1e-10, 1e10, 1e-9, 1e-10]
+field_values = [
+    md.results.TransientSolution[0].Vx,
+    md.results.TransientSolution[0].Vy,
+    md.results.TransientSolution[0].Vel,
+    md.results.TransientSolution[0].Thickness,
+    md.results.TransientSolution[0].SmbMassBalance,
+    md.results.TransientSolution[0].BasalforcingsFloatingiceMeltingRate,
+    md.results.TransientSolution[0].BasalforcingsSpatialDeepwaterMeltingRate,
+    md.results.TransientSolution[4].Vx,
+    md.results.TransientSolution[4].Vy,
+    md.results.TransientSolution[4].Vel,
+    md.results.TransientSolution[4].Thickness,
+    md.results.TransientSolution[4].SmbMassBalance,
+    md.results.TransientSolution[4].BasalforcingsFloatingiceMeltingRate,
+    md.results.TransientSolution[4].BasalforcingsSpatialDeepwaterMeltingRate,
+    md.results.TransientSolution[9].Vx,
+    md.results.TransientSolution[9].Vy,
+    md.results.TransientSolution[9].Vel,
+    md.results.TransientSolution[9].Thickness,
+    md.results.TransientSolution[9].SmbMassBalance,
+    md.results.TransientSolution[9].BasalforcingsFloatingiceMeltingRate,
+    md.results.TransientSolution[9].BasalforcingsSpatialDeepwaterMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test545.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test545.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test545.m	(revision 27955)
@@ -0,0 +1,127 @@
+%Test Name: PigTranStochasticforcingCovariance
+md=triangle(model(),'../Exp/Pig.exp',10000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=setflowequation(md,'SSA','all');
+md.timestepping.start_time = 0;
+md.timestepping.time_step  = 1;
+md.timestepping.final_time = 10;
+
+%Basin separation TF
+idb_tf  = zeros(md.mesh.numberofelements,1);
+iid1    = find(md.mesh.x<=-1.6e6);
+for ii=1:md.mesh.numberofelements
+    for vertex=1:3
+        if any(iid1==md.mesh.elements(ii,vertex)) %one vertex in basin 1
+            idb_tf(ii) = 1;
+        end
+    end
+    if idb_tf(ii)==0 %no vertex was found in basin 1
+        idb_tf(ii) = 2;
+    end
+end
+% Basin separation default
+idb_df = zeros(md.mesh.numberofelements,1);
+iid1   = find(md.mesh.x<=-1.62e6);
+for ii=1:md.mesh.numberofelements
+    for vertex=1:3
+        if any(iid1==md.mesh.elements(ii,vertex)) %one vertex in basin 1
+            idb_df(ii) = 1;
+        end
+    end
+    if idb_df(ii)==0 %no vertex was found in basin 1
+        idb_df(ii) = 2;
+    end
+end
+% Dimensionalities
+nb_tf    = 2;
+nb_clv   = 2;
+nb_flmlt = 2;
+
+%Calving parameters
+md.mask.ice_levelset = 1e4*(md.mask.ice_levelset + 0.5);
+md.calving.calvingrate = 0.3*ones(md.mesh.numberofvertices,1);
+md.levelset.spclevelset = NaN(md.mesh.numberofvertices,1);
+md.levelset.migration_max = 10.0; %avoid fast advance/retreat of the front
+%%% Frontal forcing parameters %%%
+md.frontalforcings=frontalforcingsrignotarma();
+md.frontalforcings.num_basins              = nb_tf;
+md.frontalforcings.basin_id                = idb_tf;
+% Polynomial params %
+md.frontalforcings.num_params        = 1; %only a constant term
+md.frontalforcings.num_breaks        = 0; %no breakpoint
+constval                             = [2.5;0.5];
+md.frontalforcings.polynomialparams  = constval;
+% No monthly effects: do nothing %
+% ARMA model parameters %
+md.frontalforcings.ar_order        = 3;
+md.frontalforcings.ma_order        = 2;
+md.frontalforcings.arma_timestep   = 2; %timestep of the ARMA model [yr]
+md.frontalforcings.arlag_coefs     = [[0.1,-0.1,0.01];[0.2,-0.2,0.1]]; %autoregressive parameters
+md.frontalforcings.malag_coefs     = [[0.1,0.0];[0.0,0.1]]; %moving-average parameters
+% No ARMA model of subglacial discharge: simply specify values at vertices %
+md.frontalforcings.subglacial_discharge = 10*ones(md.mesh.numberofvertices,1);
+
+% Floating Ice Melt parameters
+md.basalforcings.floatingice_melting_rate = 0.1*ones(md.mesh.numberofvertices,1);
+
+
+% Covariance matrix
+covtf       = 1e-4*eye(nb_tf);
+covclv      = 1e-1*eye(nb_clv);
+covclv(1,1) = 1/10*covclv(1,1);
+covflmlt    = 0.05*eye(nb_flmlt);
+covglob     = blkdiag(covtf,covclv,covflmlt);
+
+%Stochastic forcing
+md.stochasticforcing.isstochasticforcing = 1;
+md.stochasticforcing.fields              = [{'FrontalForcingsRignotarma'},{'DefaultCalving'},{'FloatingMeltRate'}];
+md.stochasticforcing.defaultdimension    = 2;
+md.stochasticforcing.default_id          = idb_df;
+md.stochasticforcing.covariance          = covglob; %global covariance among- and between-fields
+md.stochasticforcing.randomflag          = 0; %determines true/false randomness
+
+md.transient.ismovingfront   = 1;
+md.transient.isgroundingline = 1;
+
+md.transient.requested_outputs = {'default','CalvingCalvingrate','CalvingMeltingrate','BasalforcingsFloatingiceMeltingRate'};
+md.cluster=generic('name',oshostname(),'np',2);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names ={...
+   'Vx1' ,'Vy1' ,'Vel1' ,'Thickness1' , 'MaskIceLevelset1', 'CalvingCalvingrate1', 'CalvingMeltingrate1', 'BasalforcingsFloatingiceMeltingRate1',...
+   'Vx5' ,'Vy5' ,'Vel5' ,'Thickness5' , 'MaskIceLevelset5', 'CalvingCalvingrate5', 'CalvingMeltingrate5', 'BasalforcingsFloatingiceMeltingRate5',...
+   'Vx10' ,'Vy10' ,'Vel10' ,'Thickness10' , 'MaskIceLevelset10', 'CalvingCalvingrate10', 'CalvingMeltingrate10', 'BasalforcingsFloatingiceMeltingRate10',...
+   };
+field_tolerances={...
+   1e-11,2e-11,2e-11,1e-11,1e-9,1e-10,1e-10,1e-10,...
+   2e-11,1e-11,1e-11,9e-11,2e-9,1e-10,1e-10,1e-10,...
+   2e-6,1e-6,1e-6,1e-6,5e-6,1e-6,1e-6,1e-6,...
+   };
+field_values={...
+   (md.results.TransientSolution(1).Vx),...
+   (md.results.TransientSolution(1).Vy),...
+   (md.results.TransientSolution(1).Vel),...
+   (md.results.TransientSolution(1).Thickness),...
+   (md.results.TransientSolution(1).MaskIceLevelset),...
+   (md.results.TransientSolution(1).CalvingCalvingrate),...
+   (md.results.TransientSolution(1).CalvingMeltingrate),...
+   (md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),...
+   (md.results.TransientSolution(5).Vx),...
+   (md.results.TransientSolution(5).Vy),...
+   (md.results.TransientSolution(5).Vel),...
+   (md.results.TransientSolution(5).Thickness),...
+   (md.results.TransientSolution(5).MaskIceLevelset),...
+   (md.results.TransientSolution(5).CalvingCalvingrate),...
+   (md.results.TransientSolution(5).CalvingMeltingrate),...
+   (md.results.TransientSolution(5).BasalforcingsFloatingiceMeltingRate),...
+	(md.results.TransientSolution(10).Vx),...
+	(md.results.TransientSolution(10).Vy),...
+	(md.results.TransientSolution(10).Vel),...
+	(md.results.TransientSolution(10).Thickness),...
+	(md.results.TransientSolution(10).MaskIceLevelset),...
+	(md.results.TransientSolution(10).CalvingCalvingrate),...
+	(md.results.TransientSolution(10).CalvingMeltingrate),...
+	(md.results.TransientSolution(10).BasalforcingsFloatingiceMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test545.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test545.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test545.py	(revision 27955)
@@ -0,0 +1,142 @@
+#Test Name: PigTranStochasticforcingCovariance
+import numpy as np
+from frontalforcingsrignotarma import frontalforcingsrignotarma
+from socket import gethostname
+from model import *
+from parameterize import parameterize
+from setflowequation import setflowequation
+from setmask import setmask
+from solve import solve
+from triangle import triangle
+
+
+md = triangle(model(), '../Exp/Pig.exp', 10000)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md = setflowequation(md, 'SSA', 'all')
+md.timestepping.start_time = 0
+md.timestepping.time_step = 1
+md.timestepping.final_time = 10
+
+# Basin separation TF
+idb_tf = np.zeros((md.mesh.numberofelements,))
+iid1 = np.where(md.mesh.x <= -1.6e6)[0]
+for ii in range(md.mesh.numberofelements):
+    for vertex in range(3):
+        if md.mesh.elements[ii][vertex] - 1 in iid1:  # one vertex in basin 1; NOTE: offset because of 1-based vertex indexing
+            idb_tf[ii] = 1
+    if idb_tf[ii] == 0:  # no vertex was found in basin 1
+        for vertex in range(3):
+            idb_tf[ii] = 2
+# Basin separation default
+idb_df = np.zeros((md.mesh.numberofelements,))
+iid1 = np.where(md.mesh.x <= -1.62e6)[0]
+for ii in range(md.mesh.numberofelements):
+    for vertex in range(3):
+        if md.mesh.elements[ii][vertex] - 1 in iid1:  # one vertex in basin 1; NOTE: offset because of 1-based vertex indexing
+            idb_df[ii] = 1
+    if idb_df[ii] == 0:  # no vertex was found in basin 1
+        for vertex in range(3):
+            idb_df[ii] = 2
+#Dimensionalities
+nb_tf = 2
+nb_clv  = 2
+nb_flmlt = 2
+
+# Calving parameters
+md.mask.ice_levelset = 1e4 * (md.mask.ice_levelset + 0.5)
+md.calving.calvingrate = 0.3 * np.ones((md.mesh.numberofvertices,))
+md.levelset.spclevelset = np.full((md.mesh.numberofvertices,), np.nan)
+md.levelset.migration_max = 10.0
+### Frontal forcing parameters ###
+md.frontalforcings = frontalforcingsrignotarma()
+md.frontalforcings.num_basins = nb_tf
+md.frontalforcings.basin_id = idb_tf
+# Polynomial params #
+md.frontalforcings.num_params       = 1 #only a constant term
+md.frontalforcings.num_breaks       = 0 #no breakpoint
+constval                            = np.array([[2.5],[0.5]])
+md.frontalforcings.polynomialparams = np.copy(constval)
+# No monthly effects: do nothing #
+# ARMA model parameters #
+md.frontalforcings.ar_order = 3
+md.frontalforcings.ma_order = 2
+md.frontalforcings.arma_timestep = 2  # timestep of the ARMA model [yr]
+md.frontalforcings.arlag_coefs = np.array([[0.1, -0.1, 0.01], [0.2, -0.2, 0.1]])  # autoregressive parameters
+md.frontalforcings.malag_coefs = np.array([[0.1, 0.0], [0.0, 0.1]])  # moving-average parameters
+# No ARMA model of subglacial discharge: simply specify values at vertices #
+md.frontalforcings.subglacial_discharge = 10 * np.ones((md.mesh.numberofvertices,))
+
+#Floating Ice Melt parameters
+md.basalforcings.floatingice_melting_rate = 0.1 * np.ones((md.mesh.numberofvertices,))
+
+#Covariance matrix
+covtf = 1e-4 * np.identity(nb_tf)
+covclv = 1e-1 * np.identity(nb_clv)
+covclv[0, 0] = 1 / 10 * covclv[0, 0]
+covflmlt = 0.05 * np.identity(nb_flmlt)
+#covglob          = np.zeros([6,6])
+#covglob[0:2,0:2] = covtf
+#covglob[2:4,2:4] = covclv
+#covglob[4:6,4:6] = covflmlt
+
+#Hard-coding covariance matrix because python is complaining
+covglob = np.array([[1e-4, 0., 0., 0., 0., 0.],
+                    [0., 1e-4, 0., 0., 0., 0.],
+                    [0., 0., 1e-2, 0., 0., 0.],
+                    [0., 0., 0., 1e-1, 0., 0.],
+                    [0., 0., 0., 0., 0.05, 0.],
+                    [0., 0., 0., 0., 0., 0.05]])
+#testchol = np.linalg.cholesky(covglob)
+#print(testchol)
+
+# Stochastic forcing
+md.stochasticforcing.isstochasticforcing = 1
+md.stochasticforcing.fields = ['FrontalForcingsRignotarma', 'DefaultCalving', 'FloatingMeltRate']
+md.stochasticforcing.defaultdimension = 2
+md.stochasticforcing.default_id = idb_df
+md.stochasticforcing.covariance = covglob  # global covariance among- and between-fields
+md.stochasticforcing.randomflag = 0  # determines true/false randomness
+
+md.transient.ismovingfront = 1
+md.transient.isgroundingline = 1
+
+md.transient.requested_outputs = ['default', 'CalvingCalvingrate', 'CalvingMeltingrate', 'BasalforcingsFloatingiceMeltingRate']
+md.cluster = generic('name', gethostname(), 'np', 2)
+md = solve(md, 'Transient')
+
+# Fields and tolerances to track changes
+field_names = [
+    'Vx1', 'Vy1', 'Vel1', 'Thickness1', 'MaskIceLevelset1', 'CalvingCalvingrate1', 'CalvingMeltingrate1', 'BasalforcingsFloatingiceMeltingRate1',
+    'Vx5', 'Vy5', 'Vel5', 'Thickness5', 'MaskIceLevelset5', 'CalvingCalvingrate5', 'CalvingMeltingrate5', 'BasalforcingsFloatingiceMeltingRate5',
+    'Vx10', 'Vy10', 'Vel10', 'Thickness10', 'MaskIceLevelset10', 'CalvingCalvingrate10', 'CalvingMeltingrate10', 'BasalforcingsFloatingiceMeltingRate10']
+
+field_tolerances = [
+    1e-11, 2e-11, 2e-11, 1e-11, 1e-9, 1e-10, 1e-10, 1e-10,
+    2e-11, 1e-11, 1e-11, 9e-11, 2e-9, 1e-10, 1e-10, 1e-10,
+    2e-6, 1e-6, 1e-6, 1e-6, 5e-6, 1e-6, 1e-6, 1e-6]
+field_values = [
+    md.results.TransientSolution[0].Vx,
+    md.results.TransientSolution[0].Vy,
+    md.results.TransientSolution[0].Vel,
+    md.results.TransientSolution[0].Thickness,
+    md.results.TransientSolution[0].MaskIceLevelset,
+    md.results.TransientSolution[0].CalvingCalvingrate,
+    md.results.TransientSolution[0].CalvingMeltingrate,
+    md.results.TransientSolution[0].BasalforcingsFloatingiceMeltingRate,
+    md.results.TransientSolution[4].Vx,
+    md.results.TransientSolution[4].Vy,
+    md.results.TransientSolution[4].Vel,
+    md.results.TransientSolution[4].Thickness,
+    md.results.TransientSolution[4].MaskIceLevelset,
+    md.results.TransientSolution[4].CalvingCalvingrate,
+    md.results.TransientSolution[4].CalvingMeltingrate,
+    md.results.TransientSolution[4].BasalforcingsFloatingiceMeltingRate,
+    md.results.TransientSolution[9].Vx,
+    md.results.TransientSolution[9].Vy,
+    md.results.TransientSolution[9].Vel,
+    md.results.TransientSolution[9].Thickness,
+    md.results.TransientSolution[9].MaskIceLevelset,
+    md.results.TransientSolution[9].CalvingCalvingrate,
+    md.results.TransientSolution[9].CalvingMeltingrate,
+    md.results.TransientSolution[9].BasalforcingsFloatingiceMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test546.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test546.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test546.m	(revision 27955)
@@ -0,0 +1,144 @@
+%Test Name: PigTranMultcovStochasticforcings 
+md=triangle(model(),'../Exp/Pig.exp',8000.);
+md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp');
+md=parameterize(md,'../Par/Pig.par');
+md=setflowequation(md,'SSA','all');
+md.timestepping.start_time = 0;
+md.timestepping.time_step  = 1;
+md.timestepping.final_time = 10;
+
+%Basin separation
+idb     = zeros(md.mesh.numberofelements,1);
+iid1    = find(md.mesh.x>=-1.6e6);
+for ii=1:md.mesh.numberofelements
+    for vertex=1:3
+        if any(iid1==md.mesh.elements(ii,vertex)) %one vertex in basin 1
+            idb(ii) = 1;
+        end
+    end
+    if idb(ii)==0 %no vertex was found in basin 1
+        idb(ii) = 2;
+    end
+end
+nb_bas = 2;
+
+%SMB
+numparams               = 1;
+numbreaks               = 0;
+intercept               = [0.5;0.01];
+polynomialparams        = intercept;
+datebreaks              = NaN;
+md.smb                  = SMBarma();
+md.smb.num_basins       = nb_bas; %number of basins
+md.smb.basin_id         = idb; %prescribe basin ID number to elements
+md.smb.num_params       = numparams; %number of parameters in the polynomial
+md.smb.num_breaks       = numbreaks; %number of breakpoints
+md.smb.polynomialparams = polynomialparams;
+md.smb.datebreaks       = datebreaks;
+md.smb.ar_order         = 4;
+md.smb.ma_order         = 4;
+md.smb.arma_timestep    = 2.0; %timestep of the ARMA model [yr]
+md.smb.arlag_coefs      = [[0.2,0.1,0.05,0.01];[0.4,0.2,-0.2,0.1]];
+md.smb.malag_coefs      = [[0.1,0.1,0.2,0.3];[0.5,0.8,1.3,2.4]];
+
+%Calving
+md.mask.ice_levelset           = 1e4*(md.mask.ice_levelset + 0.5);
+md.calving.calvingrate         = 0.1*ones(md.mesh.numberofvertices,1);
+md.levelset.spclevelset        = NaN(md.mesh.numberofvertices,1);
+md.levelset.migration_max      = 10.0;
+md.frontalforcings.meltingrate = zeros(md.mesh.numberofvertices,1);
+
+% Basal forcing implementation
+numparams                         = 2;
+numbreaks                         = 1;
+intercept                         = [3.0,4.0;1.0,0.5];
+trendlin                          = [0.0,0.1;0,0];
+polynomialparams                  = cat(3,intercept,trendlin);
+datebreaks                        = [6;7];
+md.basalforcings                  = linearbasalforcingsarma();
+md.basalforcings.num_basins       = nb_bas; %number of basins
+md.basalforcings.basin_id         = idb; %prescribe basin ID number to elements
+md.basalforcings.polynomialparams = polynomialparams;
+md.basalforcings.datebreaks       = datebreaks;
+md.basalforcings.num_params       = numparams; %number of parameters in the polynomial
+md.basalforcings.num_breaks       = numbreaks; %number of breakpoints
+md.basalforcings.ar_order         = 1;
+md.basalforcings.ma_order         = 1;
+md.basalforcings.arma_timestep    = 1.0; %timestep of the ARMA model [yr]
+md.basalforcings.arlag_coefs      = [0.0;0.1];
+md.basalforcings.malag_coefs      = [0.55;0.34];
+md.basalforcings.deepwater_elevation       = [-1000,-1520];
+md.basalforcings.upperwater_elevation      = [0,-50];
+md.basalforcings.upperwater_melting_rate   = [0.0,0.0];
+md.basalforcings.groundedice_melting_rate  = zeros(md.mesh.numberofvertices,1);
+
+% Covariance matrices
+sdvsmb       = [1,1];
+sdvclv       = [0.1,0.01];
+sdvdwm       = [300,300];
+vecsdv       = [sdvsmb,sdvclv,sdvdwm];
+corrmat      = [1,0,0,0,0,0;
+                0,1,0,0,0,0;
+                0,0,1,0.4,0.1,0.1;
+                0,0,0.4,1,0.1,0.1;
+                0,0,0.1,0.1,1,0.3;
+                0,0,0.1,0.1,0.3,1];
+covglob0     = diag(vecsdv)*corrmat*diag(vecsdv);
+covglob1     = 2*covglob0;
+multcov      = cat(3,covglob0,covglob1);
+tmcov        = [0,5];
+
+% Stochastic forcing
+md.stochasticforcing.isstochasticforcing = 1;
+md.stochasticforcing.fields              = [{'SMBarma'},{'DefaultCalving'},{'BasalforcingsDeepwaterMeltingRatearma'}];
+md.stochasticforcing.defaultdimension    = 2;
+md.stochasticforcing.default_id          = idb;
+md.stochasticforcing.covariance          = multcov; %global covariance among- and between-fields
+md.stochasticforcing.timecovariance      = tmcov; %simulation times when covariance matrix switches
+md.stochasticforcing.randomflag          = 0; %determines true/false randomness
+
+md.transient.ismovingfront     = 1;
+md.transient.requested_outputs = {'default','SmbMassBalance','BasalforcingsFloatingiceMeltingRate','BasalforcingsSpatialDeepwaterMeltingRate'};
+md.transient.isstressbalance = 1;
+md.transient.ismasstransport = 1;
+md.transient.issmb           = 1;
+md.transient.isthermal       = 0;
+md.transient.isgroundingline = 1;
+
+md.cluster=generic('name',oshostname(),'np',2);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names ={...
+   'Vx1' ,'Vy1' ,'Vel1' ,'Thickness1', 'SmbMassBalance1', 'BasalforcingsFloatingiceMeltingRate1', 'BasalforcingsSpatialDeepwaterMeltingRate1',...
+   'Vx2' ,'Vy2' ,'Vel2' ,'Thickness2', 'SmbMassBalance2' ,'BasalforcingsFloatingiceMeltingRate2', 'BasalforcingsSpatialDeepwaterMeltingRate2',...
+   'Vx3' ,'Vy3' ,'Vel3' ,'Thickness3', 'SmbMassBalance3' ,'BasalforcingsFloatingiceMeltingRate3', 'BasalforcingsSpatialDeepwaterMeltingRate3',...
+   };
+field_tolerances={...
+   1e-11,1e-11,2e-11,1e-11,1e-10,1e-9,1e-10,...
+   1e-11,1e-11,2e-11,9e-11,1e-10,1e-9,1e-10,...
+   2e-10,2e-10,2e-10,1e-10,1e-10,1e-9,1e-10,...
+   };
+field_values={...
+   (md.results.TransientSolution(1).Vx),...
+   (md.results.TransientSolution(1).Vy),...
+   (md.results.TransientSolution(1).Vel),...
+   (md.results.TransientSolution(1).Thickness),...
+   (md.results.TransientSolution(1).SmbMassBalance),...
+   (md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),...
+   (md.results.TransientSolution(1).BasalforcingsSpatialDeepwaterMeltingRate),...
+   (md.results.TransientSolution(5).Vx),...
+   (md.results.TransientSolution(5).Vy),...
+   (md.results.TransientSolution(5).Vel),...
+   (md.results.TransientSolution(5).Thickness),...
+   (md.results.TransientSolution(5).SmbMassBalance),...
+   (md.results.TransientSolution(5).BasalforcingsFloatingiceMeltingRate),...
+   (md.results.TransientSolution(5).BasalforcingsSpatialDeepwaterMeltingRate),...
+	(md.results.TransientSolution(10).Vx),...
+	(md.results.TransientSolution(10).Vy),...
+	(md.results.TransientSolution(10).Vel),...
+	(md.results.TransientSolution(10).Thickness),...
+   (md.results.TransientSolution(10).SmbMassBalance),...
+	(md.results.TransientSolution(10).BasalforcingsFloatingiceMeltingRate),...
+   (md.results.TransientSolution(10).BasalforcingsSpatialDeepwaterMeltingRate),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test546.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test546.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test546.py	(revision 27955)
@@ -0,0 +1,156 @@
+#Test Name: PigTranARMAandStochasticforcings
+import numpy as np
+from linearbasalforcingsarma import linearbasalforcingsarma
+from SMBarma import SMBarma
+from stochasticforcing import stochasticforcing
+from socket import gethostname
+from model import *
+from parameterize import parameterize
+from setflowequation import setflowequation
+from setmask import setmask
+from solve import solve
+from triangle import triangle
+
+
+md = triangle(model(), '../Exp/Pig.exp', 8000)
+md = setmask(md, '../Exp/PigShelves.exp', '../Exp/PigIslands.exp')
+md = parameterize(md, '../Par/Pig.py')
+md = setflowequation(md, 'SSA', 'all')
+md.timestepping.start_time = 0
+md.timestepping.time_step = 1
+md.timestepping.final_time = 10
+
+# Basin separation
+idb = np.zeros((md.mesh.numberofelements,))
+iid1 = np.where(md.mesh.x >= -1.6e6)[0]
+for ii in range(md.mesh.numberofelements):
+    for vertex in range(3):
+        if md.mesh.elements[ii][vertex] - 1 in iid1:  # one vertex in basin 1; NOTE: offset because of 1-based vertex indexing
+            idb[ii] = 1
+    if idb[ii] == 0:  # no vertex was found in basin 1
+        for vertex in range(3):
+            idb[ii] = 2
+nb_bas = 2
+
+#SMB
+numparams  = 1;
+numbreaks  = 0;
+intercept     = np.array([[0.5],[0.01]])
+polynomialparams = np.copy(intercept)
+datebreaks = np.nan
+md.smb = SMBarma()
+md.smb.num_basins = nb_bas  # number of basins
+md.smb.basin_id = idb  # prescribe basin ID number to elements;
+md.smb.num_params       = 1*numparams
+md.smb.num_breaks       = 1*numbreaks
+md.smb.polynomialparams = 1*polynomialparams
+md.smb.datebreaks       = 1*datebreaks
+md.smb.ar_order = 4
+md.smb.ma_order = 4
+md.smb.arma_timestep = 2.0  #timestep of the ARMA model [yr]
+md.smb.arlag_coefs = np.array([[0.2,0.1,0.05,0.01],[0.4,0.2,-0.2,0.1]])
+md.smb.malag_coefs = np.array([[0.1,0.1,0.2,0.3],[0.5,0.8,1.3,2.4]])
+
+#Calving
+md.mask.ice_levelset = 1e4*(md.mask.ice_levelset + 0.5)
+md.calving.calvingrate = 0.1*np.ones((md.mesh.numberofvertices,))
+md.levelset.spclevelset = np.full((md.mesh.numberofvertices,), np.nan)
+md.levelset.migration_max = 10.0
+md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices,))
+
+#Basal forcing implementation
+numparams = 2
+numbreaks = 1
+intercept = np.array([[3.0,4.0],[1.0,0.5]])
+trendlin  = np.array([[0.0,0.1],[0,0]])
+polynomialparams = np.transpose(np.stack((intercept,trendlin)),(1,2,0))
+datebreaks = np.array([[6],[7]])
+
+md.basalforcings = linearbasalforcingsarma()
+md.basalforcings.num_basins = nb_bas
+md.basalforcings.basin_id  = idb
+md.basalforcings.const = np.array([[1.0, 2.50]])  # intercept values of DeepwaterMelt in basins [m/yr]
+md.basalforcings.trend  = np.array([[0.2, 0.01]])  # trend values of DeepwaterMelt in basins [m/yr^2]
+md.basalforcings.arma_initialtime = md.timestepping.start_time  # initial time in the ARMA model parameterization [yr]
+md.basalforcings.ar_order  = 1
+md.basalforcings.ma_order  = 1
+md.basalforcings.polynomialparams = 1*polynomialparams;
+md.basalforcings.datebreaks       = 1*datebreaks;
+md.basalforcings.num_params       = 1*numparams
+md.basalforcings.num_breaks       = 1*numbreaks
+md.basalforcings.arma_timestep  = 1.0  # timestep of the ARMA model [yr]
+md.basalforcings.arlag_coefs  = np.array([[0.0], [0.1]])  # autoregressive parameters
+md.basalforcings.malag_coefs  = np.array([[0.55], [0.34]])  # moving-average parameters
+md.basalforcings.deepwater_elevation = np.array([[-1000, -1520]])
+md.basalforcings.upperwater_elevation = np.array([[0, -50]])
+md.basalforcings.upperwater_melting_rate = np.array([[0,0]])
+md.basalforcings.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices,))
+
+#Covariance matrices
+sdvsmb  = np.array([1,1])
+sdvclv  = np.array([0.1,0.01])
+sdvdwm  = np.array([300,300])
+vecsdv  = np.concatenate((sdvsmb,sdvclv,sdvdwm))
+corrmat = np.array([[1.0, 0., 0., 0., 0., 0.],
+                    [0., 1.0, 0., 0., 0., 0.],
+                    [0., 0., 1.0, 0.4, 0.1, 0.1],
+                    [0., 0., 0.4, 1.0, 0.1, 0.1],
+                    [0., 0., 0.1, 0.1, 1.0, 0.3],
+                    [0., 0., 0.1, 0.1, 0.3, 1.0]])
+covglob0 = np.diag(vecsdv) @ corrmat @ np.diag(vecsdv)
+covglob1 = 2*covglob0
+multcov  = np.stack((covglob0,covglob1),axis=2) 
+tmcov    = np.array([[0,5]])
+
+#Stochastic forcing
+md.stochasticforcing.isstochasticforcing = 1
+md.stochasticforcing.fields = ['SMBarma', 'DefaultCalving', 'BasalforcingsDeepwaterMeltingRatearma']
+md.stochasticforcing.defaultdimension = 2
+md.stochasticforcing.default_id = idb
+md.stochasticforcing.covariance = multcov  # global covariance among- and between-fields
+md.stochasticforcing.timecovariance = tmcov  #simulation times when covariance matrix switches 
+md.stochasticforcing.randomflag = 0  # determines true/false randomness
+
+md.transient.ismovingfront = 1
+md.transient.requested_outputs = ['default', 'SmbMassBalance', 'BasalforcingsFloatingiceMeltingRate', 'BasalforcingsSpatialDeepwaterMeltingRate']
+md.transient.isstressbalance = 1
+md.transient.ismasstransport = 1
+md.transient.issmb = 1
+md.transient.isthermal = 0
+md.transient.isgroundingline = 1
+
+md.cluster = generic('name', gethostname(), 'np', 2)
+md = solve(md, 'Transient')
+
+# Fields and tolerances to track changes
+field_names = [
+    'Vx1', 'Vy1', 'Vel1', 'Thickness1', 'SmbMassBalance1', 'BasalforcingsFloatingiceMeltingRate1', 'BasalforcingsSpatialDeepwaterMeltingRate1',
+    'Vx5', 'Vy5', 'Vel5', 'Thickness5', 'SmbMassBalance5', 'BasalforcingsFloatingiceMeltingRate5', 'BasalforcingsSpatialDeepwaterMeltingRate5',
+    'Vx10', 'Vy10', 'Vel10', 'Thickness10', 'SmbMassBalance10', 'BasalforcingsFloatingiceMeltingRate10', 'BasalforcingsSpatialDeepwaterMeltingRate10']
+
+field_tolerances = [
+    1e-11, 1e-11, 2e-11, 1e-11, 1e10, 1e-9, 1e-10,
+    1e-11, 1e-11, 2e-11, 9e-11, 1e10, 1e-9, 1e-10,
+    2e-10, 2e-10, 2e-10, 1e-10, 1e10, 1e-9, 1e-10]
+field_values = [
+    md.results.TransientSolution[0].Vx,
+    md.results.TransientSolution[0].Vy,
+    md.results.TransientSolution[0].Vel,
+    md.results.TransientSolution[0].Thickness,
+    md.results.TransientSolution[0].SmbMassBalance,
+    md.results.TransientSolution[0].BasalforcingsFloatingiceMeltingRate,
+    md.results.TransientSolution[0].BasalforcingsSpatialDeepwaterMeltingRate,
+    md.results.TransientSolution[4].Vx,
+    md.results.TransientSolution[4].Vy,
+    md.results.TransientSolution[4].Vel,
+    md.results.TransientSolution[4].Thickness,
+    md.results.TransientSolution[4].SmbMassBalance,
+    md.results.TransientSolution[4].BasalforcingsFloatingiceMeltingRate,
+    md.results.TransientSolution[4].BasalforcingsSpatialDeepwaterMeltingRate,
+    md.results.TransientSolution[9].Vx,
+    md.results.TransientSolution[9].Vy,
+    md.results.TransientSolution[9].Vel,
+    md.results.TransientSolution[9].Thickness,
+    md.results.TransientSolution[9].SmbMassBalance,
+    md.results.TransientSolution[9].BasalforcingsFloatingiceMeltingRate,
+    md.results.TransientSolution[9].BasalforcingsSpatialDeepwaterMeltingRate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test601.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test601.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test601.m	(revision 27955)
@@ -0,0 +1,14 @@
+%Test Name: 79NorthMasstransp2d
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test601.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test601.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test601.py	(revision 27955)
@@ -0,0 +1,21 @@
+#Test Name: 79NorthMasstransp2d
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/79North.exp', 10000.)
+md = setmask(md, '../Exp/79NorthShelf.exp', '')
+md = parameterize(md, '../Par/79North.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Masstransport')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-13]
+field_values = [md.results.MasstransportSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test602.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test602.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test602.m	(revision 27955)
@@ -0,0 +1,17 @@
+%Test Name: 79NorthMasstransp2dDG
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=meshconvert(md);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=setflowequation(md,'SSA','all');
+md.masstransport.stabilization=3;
+md.masstransport.spcthickness=md.geometry.thickness;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test602.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test602.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test602.py	(revision 27955)
@@ -0,0 +1,25 @@
+#Test Name: 79NorthMasstransp2dDG
+from model import *
+from socket import gethostname
+
+from triangle import *
+from meshconvert import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/79North.exp', 10000.)
+md = meshconvert(md)
+md = setmask(md, '../Exp/79NorthShelf.exp', '')
+md = parameterize(md, '../Par/79North.py')
+md = setflowequation(md, 'SSA', 'all')
+md.masstransport.stabilization = 3
+md.masstransport.spcthickness = md.geometry.thickness
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Masstransport')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-13]
+field_values = [md.results.MasstransportSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test603.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test603.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test603.m	(revision 27955)
@@ -0,0 +1,15 @@
+%Test Name: 79NorthMasstransp3d
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=extrude(md,6,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Masstransport');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-13};
+field_values={...
+	(md.results.MasstransportSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test603.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test603.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test603.py	(revision 27955)
@@ -0,0 +1,22 @@
+#Test Name: 79NorthMasstransp3d
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/79North.exp', 10000.)
+md = setmask(md, '../Exp/79NorthShelf.exp', '')
+md = parameterize(md, '../Par/79North.py')
+md.extrude(6, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Masstransport')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-13]
+field_values = [md.results.MasstransportSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test604.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test604.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test604.m	(revision 27955)
@@ -0,0 +1,15 @@
+%Test Name: 79NorthSurfSlop2d
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'SurfaceSlope');
+
+%Fields and tolerances to track changes
+field_names     ={'SurfaceSlopeX','SurfaceSlopeY'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.SurfaceSlopeSolution.SurfaceSlopeX),...
+	(md.results.SurfaceSlopeSolution.SurfaceSlopeY),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test604.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test604.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test604.py	(revision 27955)
@@ -0,0 +1,22 @@
+#Test Name: 79NorthSurfSlop2d
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/79North.exp', 10000.)
+md = setmask(md, '../Exp/79NorthShelf.exp', '')
+md = parameterize(md, '../Par/79North.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'SurfaceSlope')
+
+#Fields and tolerances to track changes
+field_names = ['SurfaceSlopeX', 'SurfaceSlopeY']
+field_tolerances = [1e-13, 1e-13]
+field_values = [md.results.SurfaceSlopeSolution.SurfaceSlopeX,
+                md.results.SurfaceSlopeSolution.SurfaceSlopeY]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test605.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test605.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test605.m	(revision 27955)
@@ -0,0 +1,16 @@
+%Test Name: 79NorthSurfSlop3d
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=extrude(md,5,1.5);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'SurfaceSlope');
+
+%Fields and tolerances to track changes
+field_names     ={'SurfaceSlopeX','SurfaceSlopeY'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.SurfaceSlopeSolution.SurfaceSlopeX),...
+	(md.results.SurfaceSlopeSolution.SurfaceSlopeY),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test605.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test605.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test605.py	(revision 27955)
@@ -0,0 +1,23 @@
+#Test Name: 79NorthSurfSlop3d
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/79North.exp', 10000.)
+md = setmask(md, '../Exp/79NorthShelf.exp', '')
+md = parameterize(md, '../Par/79North.py')
+md.extrude(5, 1.5)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'SurfaceSlope')
+
+#Fields and tolerances to track changes
+field_names = ['SurfaceSlopeX', 'SurfaceSlopeY']
+field_tolerances = [1e-13, 1e-13]
+field_values = [md.results.SurfaceSlopeSolution.SurfaceSlopeX,
+                md.results.SurfaceSlopeSolution.SurfaceSlopeY]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test606.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test606.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test606.m	(revision 27955)
@@ -0,0 +1,15 @@
+%Test Name: 79NorthBedSlop2d
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'BedSlope');
+
+%Fields and tolerances to track changes
+field_names     ={'BedSlopeX','BedSlopeY'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.BedSlopeSolution.BedSlopeX),...
+	(md.results.BedSlopeSolution.BedSlopeY),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test606.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test606.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test606.py	(revision 27955)
@@ -0,0 +1,22 @@
+#Test Name: 79NorthBedSlop2d
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/79North.exp', 10000.)
+md = setmask(md, '../Exp/79NorthShelf.exp', '')
+md = parameterize(md, '../Par/79North.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'BedSlope')
+
+#Fields and tolerances to track changes
+field_names = ['BedSlopeX', 'BedSlopeY']
+field_tolerances = [1e-13, 1e-13]
+field_values = [md.results.BedSlopeSolution.BedSlopeX,
+                md.results.BedSlopeSolution.BedSlopeY]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test607.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test607.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test607.m	(revision 27955)
@@ -0,0 +1,16 @@
+%Test Name: 79NorthBedSlop3d
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=extrude(md,2,1.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'BedSlope');
+
+%Fields and tolerances to track changes
+field_names     ={'BedSlopeX','BedSlopeY'};
+field_tolerances={1e-13,1e-13};
+field_values={...
+	(md.results.BedSlopeSolution.BedSlopeX),...
+	(md.results.BedSlopeSolution.BedSlopeY),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test607.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test607.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test607.py	(revision 27955)
@@ -0,0 +1,22 @@
+#Test Name: 79NorthBedSlop3d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/79North.exp', 10000.)
+md = setmask(md, '../Exp/79NorthShelf.exp', '')
+md = parameterize(md, '../Par/79North.py')
+md.extrude(2, 1.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'BedSlope')
+
+#Fields and tolerances to track changes
+field_names = ['BedSlopeX', 'BedSlopeY']
+field_tolerances = [1e-13, 1e-13]
+field_values = [md.results.BedSlopeSolution.BedSlopeX,
+                md.results.BedSlopeSolution.BedSlopeY]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test608.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test608.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test608.m	(revision 27955)
@@ -0,0 +1,14 @@
+%Test Name: 79NorthBalThic2d
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Balancethickness');
+
+%Fields and tolerances to track changes
+field_names     ={'Thickness'};
+field_tolerances={1e-12};
+field_values={...
+	(md.results.BalancethicknessSolution.Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test608.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test608.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test608.py	(revision 27955)
@@ -0,0 +1,21 @@
+#Test Name: 79NorthBalThic2d
+from model import *
+from socket import gethostname
+
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/79North.exp', 10000.)
+md = setmask(md, '../Exp/79NorthShelf.exp', '')
+md = parameterize(md, '../Par/79North.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Balancethickness')
+
+#Fields and tolerances to track changes
+field_names = ['Thickness']
+field_tolerances = [1e-12]
+field_values = [md.results.BalancethicknessSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test610.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test610.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test610.m	(revision 27955)
@@ -0,0 +1,34 @@
+%Test Name: 79NorthPISMhydro
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=setflowequation(md,'SSA','all');
+
+%Hydrology
+md.hydrology = hydrologypism();
+md.hydrology.drainage_rate      = 0.001*ones(md.mesh.numberofvertices,1);
+md.hydrology.watercolumn_max=20*ones(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate = [1:md.mesh.numberofvertices]';
+md.transient.ishydrology        = 1;
+md.transient.issmb              = 0;
+md.transient.ismasstransport    = 0;
+md.transient.isstressbalance    = 0;
+md.transient.isthermal          = 0;
+md.transient.isgroundingline    = 0;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Plot to check result
+% plotmodel(md,'data',md.results.TransientSolution(3).Watercolumn - 3*(md.materials.rho_freshwater/md.materials.rho_ice*[1:md.mesh.numberofvertices]' -1))
+
+%Fields and tolerances to track changes
+field_names     ={'WaterColumn1','WaterColumn2','WaterColumn3'};
+field_tolerances={1e-12,1e-12,1e-12};
+field_values={...
+	(md.results.TransientSolution(1).Watercolumn),...
+	(md.results.TransientSolution(2).Watercolumn),...
+	(md.results.TransientSolution(3).Watercolumn),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test610.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test610.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test610.py	(revision 27955)
@@ -0,0 +1,43 @@
+#Test Name: 79NorthPISMhydro
+import numpy as np
+from model import *
+from setmask import setmask
+from triangle import triangle
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from socket import gethostname
+from generic import generic
+
+
+md = triangle(model(), '../Exp/79North.exp', 10000.)
+md = setmask(md, '../Exp/79NorthShelf.exp', '')
+md = parameterize(md, '../Par/79North.py')
+md = setflowequation(md, 'SSA', 'all')
+
+#Hydrology
+md.hydrology = hydrologypism()
+md.hydrology.drainage_rate = 0.001 * np.ones((md.mesh.numberofvertices))
+md.hydrology.watercolumn_max = 20 * np.ones((md.mesh.numberofvertices))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices))
+md.initialization.watercolumn = np.zeros((md.mesh.numberofvertices))
+md.basalforcings.groundedice_melting_rate = np.arange(0, md.mesh.numberofvertices) + 1
+md.transient.ishydrology = 1
+md.transient.issmb = 0
+md.transient.ismasstransport = 0
+md.transient.isstressbalance = 0
+md.transient.isthermal = 0
+md.transient.isgroundingline = 0
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Plot to check result
+# plotmodel(md, 'data', md.results.TransientSolution(3).Watercolumn - 3 * (md.materials.rho_freshwater / md.materials.rho_ice * [1:md.mesh.numberofvertices]' - 1))
+
+#Fields and tolerances to track changes
+field_names = ['WaterColumn1', 'WaterColumn2', 'WaterColumn3']
+field_tolerances = [1e-12, 1e-12, 1e-12]
+field_values = [md.results.TransientSolution[0].Watercolumn,
+                md.results.TransientSolution[1].Watercolumn,
+                md.results.TransientSolution[2].Watercolumn]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test611.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test611.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test611.m	(revision 27955)
@@ -0,0 +1,32 @@
+%Test Name: 79NorthCMBalThic2dCG
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=setflowequation(md,'SSA','all');
+
+%control parameters
+md.inversion.nsteps=2;
+md.masstransport.stabilization=1;
+md.inversion.iscontrol=1;
+md.inversion.control_parameters={'BalancethicknessThickeningRate'};
+md.inversion.thickness_obs=md.geometry.thickness;
+md.inversion.min_parameters=-50.*ones(md.mesh.numberofvertices,1);
+md.inversion.max_parameters=50.*ones(md.mesh.numberofvertices,1);
+md.inversion.cost_functions=201;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.gradient_scaling=10./md.constants.yts*ones(md.inversion.nsteps,1);
+md.inversion.maxiter_per_step=4*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.99*ones(md.inversion.nsteps,1);
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Balancethickness');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient','Misfits','BalancethicknessThickeningRate','Thickness'};
+field_tolerances={1e-12,1e-12,1e-12,1e-12,1e-12,1e-12};
+field_values={...
+	(md.results.BalancethicknessSolution.Gradient1),...
+	md.results.BalancethicknessSolution.J,...
+	(md.results.BalancethicknessSolution.BalancethicknessThickeningRate),...
+	(md.results.BalancethicknessSolution.Thickness)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test611.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test611.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test611.py	(revision 27955)
@@ -0,0 +1,39 @@
+#Test Name: 79NorthCMBalThic2dCG
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/79North.exp', 10000.)
+md = setmask(md, '../Exp/79NorthShelf.exp', '')
+md = parameterize(md, '../Par/79North.py')
+md = setflowequation(md, 'SSA', 'all')
+
+#control parameters
+md.inversion.nsteps = 2
+md.masstransport.stabilization = 1
+md.inversion.iscontrol = 1
+md.inversion.control_parameters = ['BalancethicknessThickeningRate']
+md.inversion.thickness_obs = md.geometry.thickness
+md.inversion.min_parameters = -50. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.max_parameters = 50. * np.ones((md.mesh.numberofvertices, len(md.inversion.control_parameters)))
+md.inversion.cost_functions = [201]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, len(md.inversion.cost_functions)))
+md.inversion.gradient_scaling = 10. / md.constants.yts * np.ones((md.inversion.nsteps, len(md.inversion.control_parameters)))
+md.inversion.maxiter_per_step = 4 * np.ones((md.inversion.nsteps))
+md.inversion.step_threshold = 0.99 * np.ones((md.inversion.nsteps))
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Balancethickness')
+
+#Fields and tolerances to track changes
+field_names = ['Gradient', 'Misfits', 'BalancethicknessThickeningRate', 'Thickness']
+field_tolerances = [1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12]
+field_values = [md.results.BalancethicknessSolution.Gradient1,
+                md.results.BalancethicknessSolution.J,
+                md.results.BalancethicknessSolution.BalancethicknessThickeningRate,
+                md.results.BalancethicknessSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test612.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test612.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test612.m	(revision 27955)
@@ -0,0 +1,48 @@
+%Test Name: 79NorthPISMhydrofriction
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=setflowequation(md,'SSA','all');
+
+%Hydrology
+md.hydrology = hydrologypism();
+md.hydrology.drainage_rate  = 0.001*ones(md.mesh.numberofvertices,1);
+md.hydrology.watercolumn_max=2*ones(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate = [1:md.mesh.numberofvertices]';
+
+%Friction
+md.friction=frictionpism();
+md.friction.till_friction_angle=30*ones(md.mesh.numberofvertices,1);
+md.friction.sediment_compressibility_coefficient=0.12*ones(md.mesh.numberofvertices,1);
+
+md.transient.ishydrology        = 1;
+md.transient.issmb              = 0;
+md.transient.ismasstransport    = 0;
+md.transient.isstressbalance    = 1;
+md.transient.isthermal          = 0;
+md.transient.isgroundingline    = 0;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Plot to check result
+% plotmodel(md,'data',md.results.TransientSolution(3).Vx - md.results.TransientSolution(2).Vx,'caxis',[-1 1])
+% plotmodel(md,'data',md.results.TransientSolution(3).Vy - md.results.TransientSolution(2).Vy,'caxis',[-1 1])
+% plotmodel(md,'data',md.results.TransientSolution(3).Vel - md.results.TransientSolution(2).Vel);
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vx2','Vx3','Vy1','Vy2','Vy3','Vel1','Vel2','Vel3'};
+field_tolerances={2e-11,2e-11,2e-11,2e-11,2e-11,2e-11,2e-11,2e-11,2e-11};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(3).Vel),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test612.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test612.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test612.py	(revision 27955)
@@ -0,0 +1,57 @@
+#Test Name: 79NorthPISMhydrofriction
+import numpy as np
+from model import *
+from setmask import setmask
+from setflowequation import setflowequation
+from triangle import triangle
+from parameterize import parameterize
+from solve import solve
+from frictionpism import frictionpism
+from socket import gethostname
+from generic import generic
+
+md = triangle(model(), '../Exp/79North.exp', 10000.)
+md = setmask(md, '../Exp/79NorthShelf.exp', '')
+md = parameterize(md, '../Par/79North.py')
+md = setflowequation(md, 'SSA', 'all')
+
+#Hydrology
+md.hydrology = hydrologypism()
+md.hydrology.drainage_rate = 0.001 * np.ones((md.mesh.numberofvertices))
+md.hydrology.watercolumn_max = 2 * np.ones((md.mesh.numberofvertices))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices))
+md.initialization.watercolumn = np.zeros((md.mesh.numberofvertices))
+md.basalforcings.groundedice_melting_rate = np.arange(0, md.mesh.numberofvertices) + 1
+
+#Friction
+md.friction = frictionpism()
+md.friction.till_friction_angle = 30 * np.ones((md.mesh.numberofvertices))
+md.friction.sediment_compressibility_coefficient = 0.12 * np.ones((md.mesh.numberofvertices))
+
+md.transient.ishydrology = 1
+md.transient.issmb = 0
+md.transient.ismasstransport = 0
+md.transient.isstressbalance = 1
+md.transient.isthermal = 0
+md.transient.isgroundingline = 0
+
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+#Plot to check result
+# plotmodel(md, 'data', md.results.TransientSolution(3).Vx - md.results.TransientSolution(2).Vx, 'caxis', [ - 1 1])
+# plotmodel(md, 'data', md.results.TransientSolution(3).Vy - md.results.TransientSolution(2).Vy, 'caxis', [ - 1 1])
+# plotmodel(md, 'data', md.results.TransientSolution(3).Vel - md.results.TransientSolution(2).Vel)
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vx2', 'Vx3', 'Vy1', 'Vy2', 'Vy3', 'Vel1', 'Vel2', 'Vel3']
+field_tolerances = [2e-11, 2e-11, 2e-11, 2e-11, 2e-11, 2e-11, 2e-11, 2e-11, 2e-11]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[2].Vel]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test613.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test613.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test613.m	(revision 27955)
@@ -0,0 +1,41 @@
+%Test Name: 79NorthCMBalThicVxVy
+md=triangle(model(),'../Exp/79North.exp',10000.);
+md=meshconvert(md);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=setflowequation(md,'SSA','all');
+
+%Ice sheet only
+md=extract(md,md.mask.ocean_levelset>0.);
+pos=find(md.mesh.vertexonboundary);
+md.balancethickness.spcthickness(pos)=md.geometry.thickness(pos);
+
+%control parameters
+md.inversion.thickness_obs=md.geometry.thickness;
+md.inversion.iscontrol=1;
+md.inversion.nsteps=2;
+md.inversion.control_parameters={'Vx','Vy'};
+md.balancethickness.stabilization=1;
+md.inversion.gradient_scaling=[10./md.constants.yts*ones(md.inversion.nsteps,1) 10./md.constants.yts*ones(md.inversion.nsteps,1)];
+md.inversion.min_parameters=[-2000.*ones(md.mesh.numberofvertices,1) -2000.*ones(md.mesh.numberofvertices,1)];
+md.inversion.max_parameters=[+2000.*ones(md.mesh.numberofvertices,1) +2000.*ones(md.mesh.numberofvertices,1)];
+md.inversion.cost_functions=201;
+md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices,1);
+md.inversion.maxiter_per_step=4*ones(md.inversion.nsteps,1);
+md.inversion.step_threshold=0.99*ones(md.inversion.nsteps,1);
+
+md.verbose.control=1;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Balancethickness');
+
+%Fields and tolerances to track changes
+field_names     ={'Gradient1','Gradient2','Misfits','Vx','Vy','Thickness'};
+field_tolerances={1e-12,1e-12,1e-12,1e-12,1e-12,1e-12};
+field_values={...
+	(md.results.BalancethicknessSolution.Gradient1),...
+	(md.results.BalancethicknessSolution.Gradient2),...
+	(md.results.BalancethicknessSolution.J),...
+	(md.results.BalancethicknessSolution.Vx),...
+	(md.results.BalancethicknessSolution.Vy),...
+	(md.results.BalancethicknessSolution.Thickness)
+};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test613.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test613.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test613.py	(revision 27955)
@@ -0,0 +1,51 @@
+#Test Name: 79NorthCMBalThicVxVy
+import numpy as np
+import copy
+from model import *
+from socket import gethostname
+from triangle import *
+from meshconvert import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/79North.exp', 10000.)
+md = meshconvert(md)
+md = setmask(md, '../Exp/79NorthShelf.exp', '')
+md = parameterize(md, '../Par/79North.py')
+md = setflowequation(md, 'SSA', 'all')
+
+#Ice sheet only
+md = model.extract(md, md.mask.ocean_levelset > 0.)
+pos = np.nonzero(md.mesh.vertexonboundary)
+md.balancethickness.spcthickness[pos] = md.geometry.thickness[pos]
+
+#control parameters
+md.inversion.thickness_obs = copy.deepcopy(md.geometry.thickness)
+md.inversion.iscontrol = 1
+md.inversion.nsteps = 2
+md.inversion.control_parameters = ['Vx', 'Vy']
+md.balancethickness.stabilization = 1
+md.inversion.gradient_scaling = np.vstack((10. / md.constants.yts * np.ones((md.inversion.nsteps)), 10. / md.constants.yts * np.ones((md.inversion.nsteps)))).T
+md.inversion.min_parameters = np.vstack((-2000. * np.ones((md.mesh.numberofvertices)), -2000. * np.ones((md.mesh.numberofvertices)))).T
+md.inversion.max_parameters = np.vstack((+ 2000. * np.ones((md.mesh.numberofvertices)), +2000. * np.ones((md.mesh.numberofvertices)))).T
+md.inversion.cost_functions = [201]
+md.inversion.cost_functions_coefficients = np.ones((md.mesh.numberofvertices, len(md.inversion.cost_functions)))
+md.inversion.maxiter_per_step = 4 * np.ones((md.inversion.nsteps))
+md.inversion.step_threshold = 0.99 * np.ones((md.inversion.nsteps))
+
+md.verbose.control = 1
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Balancethickness')
+
+#Fields and tolerances to track changes
+field_names = ['Gradient1', 'Gradient2', 'Misfits', 'Vx', 'Vy', 'Thickness']
+field_tolerances = [1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12]
+field_values = [md.results.BalancethicknessSolution.Gradient1,
+                md.results.BalancethicknessSolution.Gradient2,
+                md.results.BalancethicknessSolution.J,
+                md.results.BalancethicknessSolution.Vx,
+                md.results.BalancethicknessSolution.Vy,
+                md.results.BalancethicknessSolution.Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test621.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test621.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test621.m	(revision 27955)
@@ -0,0 +1,77 @@
+%Test Name: 79NorthStochFrictionWaterPressure
+md=triangle(model(),'../Exp/79North.exp',6000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=setflowequation(md,'SSA','all');
+
+%Default friction
+md.friction             = friction();
+md.friction.coefficient = 30*ones(md.mesh.numberofvertices,1);
+md.friction.p           = 1*ones(md.mesh.numberofelements,1);
+md.friction.q           = 1*ones(md.mesh.numberofelements,1);
+
+% Basin separation default
+idb_df = zeros(md.mesh.numberofelements,1);
+iid1   = find(md.mesh.y<=-1.08e6);
+for ii=1:md.mesh.numberofelements
+    for vertex=1:3
+        if any(iid1==md.mesh.elements(ii,vertex)) %one vertex in basin 1
+            idb_df(ii) = 1;
+        end
+    end
+    if idb_df(ii)==0 %no vertex was found in basin 1
+        idb_df(ii) = 2;
+    end
+end
+%Covariance matrix
+covPw      = 0.5e10*eye(2);
+covPw(1,1) = 1.5*covPw(1,1);
+
+%Stochastic forcing
+md.stochasticforcing.isstochasticforcing = 1;
+md.stochasticforcing.fields              = [{'FrictionWaterPressure'}];
+md.stochasticforcing.defaultdimension    = 2;
+md.stochasticforcing.default_id          = idb_df;
+md.stochasticforcing.covariance          = covPw; %global covariance
+md.stochasticforcing.randomflag          = 0; %determines true/false randomness
+
+md.transient.issmb              = 0;
+md.transient.ismasstransport    = 1;
+md.transient.isstressbalance    = 1;
+md.transient.isthermal          = 0;
+md.transient.isgroundingline    = 0;
+
+md.transient.requested_outputs = {'default','FrictionWaterPressure'};
+md.timestepping.start_time = 0;
+md.timestepping.time_step  = 1;
+md.timestepping.final_time = 5;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+
+%Fields and tolerances to track changes
+field_names      = {'Vx1','Vy1','Vel1','Thickness1','FrictionWaterPressure1',...
+                    'Vx2','Vy2','Vel2','Thickness2','FrictionWaterPressure2',...
+                    'Vx5','Vy5','Vel5','Thickness5','FrictionWaterPressure5'};
+field_tolerances={2e-10,2e-10,2e-10,2e-10,2e-10,...
+                  4e-10,4e-10,4e-10,4e-10,4e-10,...
+                  8e-10,8e-10,8e-10,8e-10,8e-10};
+              
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+    (md.results.TransientSolution(1).Vy),...
+    (md.results.TransientSolution(1).Vel),...
+    (md.results.TransientSolution(1).Thickness),...
+    (md.results.TransientSolution(1).FrictionWaterPressure),...
+    (md.results.TransientSolution(2).Vx),...
+    (md.results.TransientSolution(2).Vy),...
+    (md.results.TransientSolution(2).Vel),...
+    (md.results.TransientSolution(2).Thickness),...
+    (md.results.TransientSolution(2).FrictionWaterPressure),...
+    (md.results.TransientSolution(5).Vx),...
+    (md.results.TransientSolution(5).Vy),...
+    (md.results.TransientSolution(5).Vel),...
+    (md.results.TransientSolution(5).Thickness),...
+    (md.results.TransientSolution(5).FrictionWaterPressure),...
+    };
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test621.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test621.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test621.py	(revision 27955)
@@ -0,0 +1,81 @@
+#Test Name: 79NorthStochFrictionWaterPressure
+import numpy as np
+
+from socket import gethostname
+from model import *
+from parameterize import *
+from setflowequation import *
+from setmask import *
+from solve import *
+from triangle import *
+
+
+md = triangle(model(), '../Exp/79North.exp', 6000)
+md = setmask(md, '../Exp/79NorthShelf.exp', '')
+md = parameterize(md, '../Par/79North.py')
+md = setflowequation(md, 'SSA', 'all')
+
+#Default friction
+md.friction = friction()
+md.friction.coefficient = 30 * np.ones(md.mesh.numberofvertices)
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+# Basin separation default
+idb_df = np.zeros((md.mesh.numberofelements))
+iid1 = np.where(md.mesh.y <= -1.08e6)[0]
+for ii in range(md.mesh.numberofelements):
+    for vertex in range(3):
+        if md.mesh.elements[ii][vertex] - 1 in iid1:  # one vertex in basin 1; NOTE: offset because of 1-based vertex indexing
+            idb_df[ii] = 1
+    if idb_df[ii] == 0:  # no vertex was found in basin 1
+        for vertex in range(3):
+            idb_df[ii] = 2
+#Covariance matrix
+covPw = np.array([[0.75e10, 0.0], [0.0, 0.5e10]])
+
+# Stochastic forcing
+md.stochasticforcing.isstochasticforcing = 1
+md.stochasticforcing.fields = ['FrictionWaterPressure']
+md.stochasticforcing.defaultdimension = 2
+md.stochasticforcing.default_id = idb_df
+md.stochasticforcing.covariance = covPw  # global covariance
+md.stochasticforcing.randomflag = 0  # determines true/false randomness
+
+md.transient.issmb = 0
+md.transient.ismasstransport = 1
+md.transient.isstressbalance = 1
+md.transient.isthermal = 0
+md.transient.isgroundingline = 0
+
+md.transient.requested_outputs = ['default', 'FrictionWaterPressure']
+md.timestepping.start_time = 0
+md.timestepping.time_step = 1
+md.timestepping.final_time = 5
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+# Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Thickness1', 'FrictionWaterPressure1',
+               'Vx2', 'Vy2', 'Vel2', 'Thickness2', 'FrictionWaterPressure2',
+               'Vx10', 'Vy10', 'Vel10', 'Thickness10', 'FrictionWaterPressure10']
+
+field_tolerances = [2e-10, 2e-10, 2e-10, 2e-10, 2e-10,
+                    4e-10, 4e-10, 4e-10, 4e-10, 4e-10,
+                    8e-10, 8e-10, 8e-10, 8e-10, 8e-10]
+
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].FrictionWaterPressure,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].FrictionWaterPressure,
+                md.results.TransientSolution[4].Vx,
+                md.results.TransientSolution[4].Vy,
+                md.results.TransientSolution[4].Vel,
+                md.results.TransientSolution[4].Thickness,
+                md.results.TransientSolution[4].FrictionWaterPressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test622.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test622.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test622.m	(revision 27955)
@@ -0,0 +1,111 @@
+%Test Name:79NorthHydrologyArmapw 
+md=triangle(model(),'../Exp/79North.exp',6000.);
+md=setmask(md,'../Exp/79NorthShelf.exp','');
+md=parameterize(md,'../Par/79North.par');
+md=setflowequation(md,'SSA','all');
+
+%Default friction
+md.friction             = friction();
+md.friction.coefficient = 30*ones(md.mesh.numberofvertices,1);
+md.friction.p           = 1*ones(md.mesh.numberofelements,1);
+md.friction.q           = 1*ones(md.mesh.numberofelements,1);
+
+% Basin separation default
+idb_df = zeros(md.mesh.numberofelements,1);
+iid1   = find(md.mesh.y<=-1.08e6);
+for ii=1:md.mesh.numberofelements
+    for vertex=1:3
+        if any(iid1==md.mesh.elements(ii,vertex)) %one vertex in basin 1
+            idb_df(ii) = 1;
+        end
+    end
+    if idb_df(ii)==0 %no vertex was found in basin 1
+        idb_df(ii) = 2;
+    end
+end
+%%% Covariance matrix %%%
+covPw  = [1e9,0;0,1e9];
+covSMB = [0.1,0;0,0.1];
+covGlob = blkdiag(covPw,covSMB);
+
+%%% Hydrology scheme %%%
+md.hydrology             = hydrologyarmapw();
+md.hydrology.num_basins            = 2;
+md.hydrology.basin_id              = idb_df;
+md.hydrology.monthlyfactors        = 1*ones(md.hydrology.num_basins,12);
+md.hydrology.monthlyfactors(:,1:3) = 0;
+md.hydrology.num_params            = 2; %number of parameters in the polynomial
+md.hydrology.num_breaks            = 2; %number of breakpoints
+termconst                          = [0.5*1e6,0.1*1e6,0.5e6;
+                                      0.5*1e6,0.1*1e6,0.5e6];
+termtrend                          = [1*1e5,0,0.;
+                                      0,1*1e5,0];
+md.hydrology.polynomialparams      = cat(3,termconst,termtrend);
+md.hydrology.datebreaks            = [20,40;20,40];
+md.hydrology.arma_timestep         = 1;
+md.hydrology.ar_order              = 1;
+md.hydrology.ma_order              = 1;
+md.hydrology.arlag_coefs           = [0.98;0.98];
+md.hydrology.malag_coefs           = [0;0];
+
+% SMB
+md.smb = SMBarma();
+md.smb.num_basins            = 2;
+md.smb.basin_id              = idb_df;
+md.smb.num_breaks            = 0;
+md.smb.num_params            = 1;
+md.smb.polynomialparams      = 0*[0.5;0.2];
+md.smb.ar_order              = 1;
+md.smb.ma_order              = 1;
+md.smb.arlag_coefs           = [0;0];
+md.smb.malag_coefs           = [0;0];
+md.smb.arma_timestep         = 1.0;
+
+%%% Stochastic forcing %%%
+md.stochasticforcing.isstochasticforcing = 1;
+md.stochasticforcing.fields              = [{'FrictionWaterPressure'},{'SMBarma'}];
+md.stochasticforcing.defaultdimension    = 2;
+md.stochasticforcing.default_id          = idb_df;
+md.stochasticforcing.covariance          = covGlob; %global covariance
+md.stochasticforcing.stochastictimestep  = 1; %time step of stochastic forcing
+md.stochasticforcing.randomflag          = 0; %determines true/false randomness
+
+md.transient.issmb              = 1;
+md.transient.ismasstransport    = 1;
+md.transient.isstressbalance    = 1;
+md.transient.isthermal          = 0;
+md.transient.isgroundingline    = 0;
+md.transient.ishydrology        = 1;
+
+md.transient.requested_outputs = {'default','SmbMassBalance','FrictionWaterPressure'};
+md.timestepping.start_time = 0;
+md.timestepping.time_step  = 1.0/12;
+md.timestepping.final_time = 2;
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names      = {'Vel1','Thickness1','SmbMassBalance1','FrictionWaterPressure1',...
+                    'Vel12','Thickness12','SmbMassBalance12','FrictionWaterPressure12',...
+                    'Vel24','Thickness24','SmbMassBalance24','FrictionWaterPressure24'};
+field_tolerances={2e-10,2e-10,2e-10,2e-10,...
+                  4e-10,4e-10,4e-10,4e-10,...
+                  8e-10,8e-10,8e-10,8e-10};
+              
+field_values={...
+    (md.results.TransientSolution(1).Vel),...
+    (md.results.TransientSolution(1).Thickness),...
+    (md.results.TransientSolution(1).SmbMassBalance),...
+    (md.results.TransientSolution(1).FrictionWaterPressure),...
+    (md.results.TransientSolution(12).Vel),...
+    (md.results.TransientSolution(12).Thickness),...
+    (md.results.TransientSolution(12).SmbMassBalance),...
+    (md.results.TransientSolution(12).FrictionWaterPressure),...
+    (md.results.TransientSolution(24).Vel),...
+    (md.results.TransientSolution(24).Thickness),...
+    (md.results.TransientSolution(24).SmbMassBalance),...
+    (md.results.TransientSolution(24).FrictionWaterPressure),...
+    };
+
+
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test622.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test622.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test622.py	(revision 27955)
@@ -0,0 +1,112 @@
+#Test Name:79NorthHydrologyArmapw
+import numpy as np
+
+from socket import gethostname
+from model import *
+from parameterize import *
+from setflowequation import *
+from setmask import *
+from solve import *
+from triangle import *
+from SMBarma import SMBarma
+from hydrologyarmapw import hydrologyarmapw
+
+md = triangle(model(), '../Exp/79North.exp', 6000)
+md = setmask(md, '../Exp/79NorthShelf.exp', '')
+md = parameterize(md, '../Par/79North.py')
+md = setflowequation(md, 'SSA', 'all')
+
+# Default friction
+md.friction = friction()
+md.friction.coefficient = 30 * np.ones(md.mesh.numberofvertices)
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+# Basin separation default
+idb_df = np.zeros((md.mesh.numberofelements))
+iid1 = np.where(md.mesh.y <= -1.08e6)[0]
+for ii in range(md.mesh.numberofelements):
+    for vertex in range(3):
+        if md.mesh.elements[ii][vertex] - 1 in iid1:  # one vertex in basin 1; NOTE: offset because of 1-based vertex indexing
+            idb_df[ii] = 1
+    if idb_df[ii] == 0: # no vertex was found in basin 1
+        for vertex in range(3):
+            idb_df[ii] = 2
+# Covariance matrix
+covGlob = np.array([[1e9,0,0,0],[0,1e9,0,0],[0,0,0.1,0],[0,0,0,0.1]])
+
+# Hydrology scheme
+md.hydrology                       = hydrologyarmapw()
+md.hydrology.num_basins            = 2
+md.hydrology.basin_id              = np.copy(idb_df).astype(int)
+md.hydrology.monthlyfactors        = 1 * np.ones((md.hydrology.num_basins,12));
+md.hydrology.monthlyfactors[:,0:3] = 0
+md.hydrology.num_params            = 2 # number of parameters in the polynomial
+md.hydrology.num_breaks            = 2 # number of breakpoints
+termconst                          = np.array([[0.5 * 1e6, 0.1 * 1e6, 0.5e6],[0.5 * 1e6, 0.1 * 1e6, 0.5e6]])
+termtrend                          = np.array([[1 * 1e5, 0, 0],[0, 1 * 1e5, 0]])
+md.hydrology.polynomialparams      = np.transpose(np.stack((termconst, termtrend)), (1, 2, 0))
+md.hydrology.datebreaks            = np.array([[20, 40], [20, 40]])
+md.hydrology.arma_timestep         = 1
+md.hydrology.ar_order              = 1
+md.hydrology.ma_order              = 1
+md.hydrology.arlag_coefs           = np.array([[0.98], [0.98]])
+md.hydrology.malag_coefs           = np.array([[0], [0]])
+
+# SMB
+md.smb                       = SMBarma()
+md.smb.num_basins            = 2
+md.smb.basin_id              = np.copy(idb_df)
+md.smb.num_breaks            = 0
+md.smb.num_params            = 1
+md.smb.polynomialparams      = 0 * np.array([[0.5], [0.2]])
+md.smb.ar_order              = 1
+md.smb.ma_order              = 1
+md.smb.arlag_coefs           = np.array([[0], [0]])
+md.smb.malag_coefs           = np.array([[0], [0]])
+md.smb.arma_timestep         = 1.0
+
+# Stochastic forcing
+md.stochasticforcing.isstochasticforcing = 1
+md.stochasticforcing.fields = ['FrictionWaterPressure','SMBarma']
+md.stochasticforcing.defaultdimension = 2
+md.stochasticforcing.default_id = idb_df
+md.stochasticforcing.covariance = covGlob # global covariance
+md.stochasticforcing.stochastictimestep  = 1; # time step of stochastic forcing
+md.stochasticforcing.randomflag = 0  # determines true/false randomness
+
+md.transient.issmb = 1
+md.transient.ismasstransport = 1
+md.transient.isstressbalance = 1
+md.transient.isthermal = 0
+md.transient.isgroundingline = 0
+md.transient.ishydrology = 1
+
+md.transient.requested_outputs = ['default','SmbMassBalance', 'FrictionWaterPressure']
+md.timestepping.start_time = 0
+md.timestepping.time_step = 1.0/12
+md.timestepping.final_time = 2
+md.cluster = generic('name', gethostname(), 'np', 3)
+md = solve(md, 'Transient')
+
+# Fields and tolerances to track changes
+field_names = ['Vel1',  'Thickness1', 'SmbMassBalance1',  'FrictionWaterPressure1',
+               'Vel12', 'Thickness12','SmbMassBalance12', 'FrictionWaterPressure12',
+               'Vel24', 'Thickness24','SmbMassBalance24', 'FrictionWaterPressure24']
+
+field_tolerances = [2e-10, 2e-10, 2e-10, 2e-10,
+                    4e-10, 4e-10, 4e-10, 4e-10,
+                    8e-10, 8e-10, 8e-10, 8e-10]
+
+field_values = [md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].SmbMassBalance,
+                md.results.TransientSolution[0].FrictionWaterPressure,
+                md.results.TransientSolution[11].Vel,
+                md.results.TransientSolution[11].Thickness,
+                md.results.TransientSolution[11].SmbMassBalance,
+                md.results.TransientSolution[11].FrictionWaterPressure,
+                md.results.TransientSolution[23].Vel,
+                md.results.TransientSolution[23].Thickness,
+                md.results.TransientSolution[23].SmbMassBalance,
+                md.results.TransientSolution[23].FrictionWaterPressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test701.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test701.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test701.m	(revision 27955)
@@ -0,0 +1,69 @@
+%Test Name: FlowbandFSshelf
+x =[1:100:3000]';
+h=linspace(1000,300,numel(x))';
+b=-917/1023*h;
+
+md=bamgflowband(model(),x,b+h,b,'hmax',80);
+
+%Geometry
+md.geometry.surface   = interp1(x,b+h,md.mesh.x);
+md.geometry.base       = interp1(x,b,md.mesh.x);
+md.geometry.thickness = md.geometry.surface-md.geometry.base;
+
+%mask
+md.mask.ice_levelset  = - ones(md.mesh.numberofvertices,1);
+md.mask.ice_levelset(find(vertexflags(md.mesh,2))) = 0;
+md.mask.ocean_levelset = double(md.mesh.x<0)-.5;
+
+%materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+%friction
+md.friction.coefficient=zeros(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(vertexflags(md.mesh,1)))=20;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Boundary conditions
+md.stressbalance.referential  = NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.loadingforce = 0*ones(md.mesh.numberofvertices,3);
+md.stressbalance.spcvx = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz = NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvx(find(vertexflags(md.mesh,4)))=0;
+md.stressbalance.spcvy(find(vertexflags(md.mesh,4)))=0;
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+
+%Misc
+md=setflowequation(md,'FS','all');
+md.stressbalance.abstol=NaN;
+%md.stressbalance.reltol=10^-16;
+md.stressbalance.FSreconditioning=1;
+md.stressbalance.maxiter=20;
+md.flowequation.augmented_lagrangian_r=10000;
+md.miscellaneous.name = 'test701';
+md.verbose=verbose('convergence',true);
+md.cluster=generic('np',2);
+md.groundingline.migration='None';
+
+%Go solve
+field_names={};
+field_tolerances={};
+field_values={};
+%md.initialization.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.y);
+for i={'MINI','MINIcondensed','TaylorHood','LATaylorHood','CrouzeixRaviart','LACrouzeixRaviart'}
+	disp(' ');
+	disp(['====== Testing ' i{1} ' Full-Stokes Finite element =====']);
+	md.flowequation.fe_FS=i{1};
+	md=solve(md,'Stressbalance');
+	field_names     ={field_names{:},['Vx' i{1}],['Vy' i{1}],['Vel' i{1}],['Pressure' i{1}]};
+	field_tolerances={field_tolerances{:},9e-5,9e-5,9e-5,1e-10};
+	field_values={field_values{:},...
+		(md.results.StressbalanceSolution.Vx),...
+		(md.results.StressbalanceSolution.Vy),...
+		(md.results.StressbalanceSolution.Vel),...
+		(md.results.StressbalanceSolution.Pressure),...
+		};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test701.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test701.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test701.py	(revision 27955)
@@ -0,0 +1,73 @@
+#Test Name: FlowbandFSshelf
+import numpy as np
+from model import *
+from solve import *
+from setflowequation import *
+from bamgflowband import *
+from paterson import *
+
+x = np.arange(1, 3001, 100).T
+h = np.linspace(1000, 300, np.size(x)).T
+b = -917. / 1023. * h
+
+md = bamgflowband(model(), x, b + h, b, 'hmax', 80.)
+
+#Geometry  #interp1d returns a function to be called on md.mesh.x
+md.geometry.surface = np.interp(md.mesh.x, x, b + h)
+md.geometry.base = np.interp(md.mesh.x, x, b)
+md.geometry.thickness = md.geometry.surface - md.geometry.base
+
+#mask
+md.mask.ice_levelset = -np.ones((md.mesh.numberofvertices))
+md.mask.ice_levelset[np.where(md.mesh.vertexflags(2))] = 0.
+md.mask.ocean_levelset = np.zeros((md.mesh.numberofvertices)) - 0.5
+
+#materials
+md.initialization.temperature = (273. - 20.) * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
+
+#friction
+md.friction.coefficient = np.zeros((md.mesh.numberofvertices))
+md.friction.coefficient[np.where(md.mesh.vertexflags(1))] = 20.
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+#Boundary conditions
+md.stressbalance.referential = np.nan * np.ones((md.mesh.numberofvertices, 6))
+md.stressbalance.loadingforce = 0. * np.ones((md.mesh.numberofvertices, 3))
+md.stressbalance.spcvx = np.nan * np.ones((md.mesh.numberofvertices, ))
+md.stressbalance.spcvy = np.nan * np.ones((md.mesh.numberofvertices, ))
+md.stressbalance.spcvz = np.nan * np.ones((md.mesh.numberofvertices, ))
+md.stressbalance.spcvx[np.where(md.mesh.vertexflags(4))] = 0.
+md.stressbalance.spcvy[np.where(md.mesh.vertexflags(4))] = 0.
+md.basalforcings.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices, ))
+
+#Misc
+md = setflowequation(md, 'FS', 'all')
+md.stressbalance.abstol = np.nan
+#md.stressbalance.reltol = 10**-16
+md.stressbalance.FSreconditioning = 1.
+md.stressbalance.maxiter = 20
+md.flowequation.augmented_lagrangian_r = 10000.
+md.miscellaneous.name = 'test701'
+md.verbose = verbose('convergence', True)
+md.cluster = generic('np', 2)
+md.groundingline.migration = 'None'
+
+#Go solve
+field_names = []
+field_tolerances = []
+field_values = []
+#md.initialization.pressure = md.constants.g * md.materials.rho_ice * (md.geometry.surface - md.mesh.y)
+for i in ['MINI', 'MINIcondensed', 'TaylorHood', 'LATaylorHood', 'CrouzeixRaviart', 'LACrouzeixRaviart']:
+    print(' ')
+    print('=====Testing ' + i + ' Full-Stokes Finite element=====')
+    md.flowequation.fe_FS = i
+    md = solve(md, 'Stressbalance')
+    field_names = field_names + ['Vx' + i, 'Vy' + i, 'Vel' + i, 'Pressure' + i]
+    field_tolerances = field_tolerances + [9e-5, 9e-5, 9e-5, 1e-10]
+    field_values = field_values + [md.results.StressbalanceSolution.Vx,
+                                   md.results.StressbalanceSolution.Vy,
+                                   md.results.StressbalanceSolution.Vel,
+                                   md.results.StressbalanceSolution.Pressure]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test702.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test702.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test702.m	(revision 27955)
@@ -0,0 +1,67 @@
+%Test Name: FlowbandFSsheetshelf
+%mesh parameters
+x =[-5:.5:5]';
+[b h sea]=NowickiProfile(x);
+x = x*10^3;
+h = h*10^3;
+b = (b-sea)*10^3;
+
+%mesh domain
+md=bamgflowband(model(),x,b+h,b,'hmax',150);
+
+%parameterize
+md.geometry.surface   = interp1(x,b+h,md.mesh.x);
+md.geometry.base       = interp1(x,b,md.mesh.x);
+md.geometry.thickness = md.geometry.surface-md.geometry.base;
+md.mask.ice_levelset = - ones(md.mesh.numberofvertices,1);
+md.mask.ice_levelset(find(vertexflags(md.mesh,2))) = 0;
+md.mask.ocean_levelset = double(md.mesh.x<0)-.5;
+
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.damage.D=zeros(md.mesh.numberofvertices,1);
+md.damage.spcdamage=NaN(md.mesh.numberofvertices,1);
+md.friction.coefficient=zeros(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(vertexflags(md.mesh,1)))=20;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+md.stressbalance.spcvx(find(vertexflags(md.mesh,4)))=800;
+md.stressbalance.spcvy(find(vertexflags(md.mesh,4)))=0;
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+
+%Misc
+md=setflowequation(md,'FS','all');
+md.stressbalance.abstol=NaN;
+md.stressbalance.FSreconditioning=1;
+md.stressbalance.maxiter=20;
+md.flowequation.augmented_lagrangian_r=10000;
+md.flowequation.augmented_lagrangian_rhop=10000;
+md.initialization.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.y);
+md.miscellaneous.name = 'test702';
+md.groundingline.migration='None';
+md.cluster=generic('np',2);
+
+%Fields and tolerances to track changes
+field_names={};
+field_tolerances={};
+field_values={};
+for i={'MINI','MINIcondensed','TaylorHood','XTaylorHood','LATaylorHood'}
+	disp(' ');
+	disp(['====== Testing ' i{1} ' Full-Stokes Finite element =====']);
+	md.flowequation.fe_FS=i{1};
+	md=solve(md,'Stressbalance');
+	field_names     ={field_names{:},['Vx' i{1}],['Vy' i{1}],['Vel' i{1}],['Pressure' i{1}]};
+	field_tolerances={field_tolerances{:},8e-5,8e-5,8e-5,1e-08};
+	field_values={field_values{:},...
+		(md.results.StressbalanceSolution.Vx),...
+		(md.results.StressbalanceSolution.Vy),...
+		(md.results.StressbalanceSolution.Vel),...
+		(md.results.StressbalanceSolution.Pressure),...
+		};
+end
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test702.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test702.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test702.py	(revision 27955)
@@ -0,0 +1,83 @@
+#Test Name: FlowbandFSsheetshelf
+import numpy as np
+#from scipy.interpolate import interp1d
+from model import *
+from setflowequation import *
+from solve import *
+from NowickiProfile import *
+from bamgflowband import *
+from paterson import *
+
+#mesh parameters
+x = np.arange(-5, 5.5, .5).T
+[b, h, sea] = NowickiProfile(x)
+x = x * 10**3
+h = h * 10**3
+b = (b - sea) * 10**3
+
+#mesh domain
+md = bamgflowband(model(), x, b + h, b, 'hmax', 150.)
+
+#parameterize
+md.geometry.surface = np.interp(md.mesh.x, x, b + h)
+md.geometry.base = np.interp(md.mesh.x, x, b)
+md.geometry.thickness = md.geometry.surface - md.geometry.base
+
+#mask
+md.mask.ice_levelset = -np.ones((md.mesh.numberofvertices, ))
+md.mask.ice_levelset[np.where(md.mesh.vertexflags(2))] = 0
+md.mask.ocean_levelset = -0.5 * np.ones((md.mesh.numberofvertices))
+md.mask.ocean_levelset[np.where(md.mesh.x < 0)] = 0.5
+
+#materials
+md.initialization.temperature = (273. - 20.) * np.ones((md.mesh.numberofvertices, ))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3 * np.ones((md.mesh.numberofelements, ))
+
+#damage
+md.damage.D = np.zeros((md.mesh.numberofvertices, ))
+md.damage.spcdamage = float('NaN') * np.ones((md.mesh.numberofvertices, ))
+
+#friciton
+md.friction.coefficient = np.zeros((md.mesh.numberofvertices, ))
+md.friction.coefficient[np.where(md.mesh.vertexflags(1))] = 20
+md.friction.p = np.ones((md.mesh.numberofelements, ))
+md.friction.q = np.ones((md.mesh.numberofelements, ))
+
+#boundary conditions
+md.stressbalance.spcvx = float('NaN') * np.ones((md.mesh.numberofvertices, ))
+md.stressbalance.spcvy = float('NaN') * np.ones((md.mesh.numberofvertices, ))
+md.stressbalance.spcvz = float('NaN') * np.ones((md.mesh.numberofvertices, ))
+md.stressbalance.referential = float('NaN') * np.ones((md.mesh.numberofvertices, 6))
+md.stressbalance.loadingforce = np.zeros((md.mesh.numberofvertices, 3))
+md.stressbalance.spcvx[np.where(md.mesh.vertexflags(4))] = 800.
+md.stressbalance.spcvy[np.where(md.mesh.vertexflags(4))] = 0.
+md.basalforcings.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices, ))
+
+#misc
+md = setflowequation(md, 'FS', 'all')
+md.stressbalance.abstol = float('NaN')
+md.stressbalance.FSreconditioning = 1
+md.stressbalance.maxiter = 20
+md.flowequation.augmented_lagrangian_r = 10000.
+md.flowequation.augmented_lagrangian_rhop = 10000.
+md.initialization.pressure = md.constants.g * md.materials.rho_ice * (md.geometry.surface - md.mesh.y)
+md.miscellaneous.name = 'test702'
+md.groundingline.migration = 'None'
+md.cluster = generic('np', 2)
+
+#Fields and tolerances to track changes
+field_names = []
+field_tolerances = []
+field_values = []
+for i in ['MINI', 'MINIcondensed', 'TaylorHood', 'XTaylorHood', 'LATaylorHood']:
+    print(' ')
+    print(' == == == Testing ' + i + ' Full - Stokes Finite element == == = ')
+    md.flowequation.fe_FS = i
+    md = solve(md, 'Stressbalance')
+    field_names.extend(['Vx' + i, 'Vy' + i, 'Vel' + i, 'Pressure' + i])
+    field_tolerances.extend([8e-5, 8e-5, 8e-5, 1e-08])
+    field_values.extend([md.results.StressbalanceSolution.Vx,
+                         md.results.StressbalanceSolution.Vy,
+                         md.results.StressbalanceSolution.Vel,
+                         md.results.StressbalanceSolution.Pressure])
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test703.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test703.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test703.m	(revision 27955)
@@ -0,0 +1,127 @@
+%Test Name: FlowbandFSsheetshelfTrans
+%mesh parameters
+x =[-5:.5:5]';
+[b h sea]=NowickiProfile(x);
+x = x*10^3;
+h = h*10^3;
+b = (b-sea)*10^3;
+
+%mesh domain
+md=bamgflowband(model(),x,b+h,b,'hmax',150);
+
+%parameterize
+md.geometry.surface   = interp1(x,b+h,md.mesh.x);
+md.geometry.base       = interp1(x,b,md.mesh.x);
+md.geometry.thickness = md.geometry.surface-md.geometry.base;
+md.mask.ice_levelset  = - ones(md.mesh.numberofvertices,1);
+md.mask.ice_levelset(find(vertexflags(md.mesh,2))) = 0;
+md.mask.ocean_levelset = double(md.mesh.x<0)-.5;
+
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.friction.coefficient=zeros(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(vertexflags(md.mesh,1)))=20;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+md.stressbalance.spcvx(find(vertexflags(md.mesh,4)))=800;
+md.stressbalance.spcvy(find(vertexflags(md.mesh,4)))=0;
+
+%Misc
+md=setflowequation(md,'FS','all');
+md.flowequation.fe_FS='TaylorHood';
+md.stressbalance.abstol=NaN;
+md.miscellaneous.name = 'test703';
+
+%Transient settings
+md.timestepping.time_step=0.000001;
+md.timestepping.final_time=0.000005;
+md.stressbalance.shelf_dampening=1;
+md.smb.mass_balance=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.geothermalflux=zeros(md.mesh.numberofvertices,1);
+posb=find((md.mesh.x>0) & md.mesh.vertexonbase);
+md.basalforcings.groundedice_melting_rate(posb)=18;
+md.basalforcings.floatingice_melting_rate(posb)=18;
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.thermal.spctemperature=NaN*ones(md.mesh.numberofvertices,1);
+md.transient.isthermal=0;
+md.masstransport.isfreesurface=1;
+md.groundingline.migration='None';
+
+%Go solve
+md.cluster=generic('np',3);
+md.stressbalance.shelf_dampening=1;
+md1=solve(md,'Transient');
+
+md.stressbalance.shelf_dampening=0;
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={...
+	'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3',...
+	'Vx1_damp','Vy1_damp','Vel1_damp','Pressure1_damp','Bed1_damp','Surface1_damp','Thickness1_damp',...
+	'Vx2_damp','Vy2_damp','Vel2_damp','Pressure2_damp','Bed2_damp','Surface2_damp','Thickness2_damp',...
+	'Vx3_damp','Vy3_damp','Vel3_damp','Pressure3_damp','Bed3_damp','Surface3_damp','Thickness3_damp'};
+field_tolerances={...
+	2e-08,2e-08,2e-08,1e-08,1e-10,1e-10,1e-10,...
+	2e-08,2e-08,2e-08,1e-08,1e-10,1e-10,1e-10,...
+	2e-08,2e-08,2e-08,1e-08,1e-10,1e-10,1e-10,...
+	5e-08,5e-08,5e-08,1e-08,1e-10,1e-10,1e-10,...
+	5e-08,5e-08,5e-08,1e-08,1e-10,1e-10,1e-10,...
+	5e-08,5e-08,5e-08,1e-08,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md1.results.TransientSolution(1).Vx),...
+	(md1.results.TransientSolution(1).Vy),...
+	(md1.results.TransientSolution(1).Vel),...
+	(md1.results.TransientSolution(1).Pressure),...
+	(md1.results.TransientSolution(1).Base),...
+	(md1.results.TransientSolution(1).Surface),...
+	(md1.results.TransientSolution(1).Thickness),...
+	(md1.results.TransientSolution(2).Vx),...
+	(md1.results.TransientSolution(2).Vy),...
+	(md1.results.TransientSolution(2).Vel),...
+	(md1.results.TransientSolution(2).Pressure),...
+	(md1.results.TransientSolution(2).Base),...
+	(md1.results.TransientSolution(2).Surface),...
+	(md1.results.TransientSolution(2).Thickness),...
+	(md1.results.TransientSolution(3).Vx),...
+	(md1.results.TransientSolution(3).Vy),...
+	(md1.results.TransientSolution(3).Vel),...
+	(md1.results.TransientSolution(3).Pressure),...
+	(md1.results.TransientSolution(3).Base),...
+	(md1.results.TransientSolution(3).Surface),...
+	(md1.results.TransientSolution(3).Thickness),...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test703.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test703.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test703.py	(revision 27955)
@@ -0,0 +1,154 @@
+#Test Name: FlowbandFSsheetshelfTrans
+import numpy as np
+from model import *
+from setflowequation import *
+from solve import *
+from NowickiProfile import *
+from bamgflowband import *
+from paterson import *
+
+#mesh parameters
+x = np.arange(-5, 5.5, .5).T
+[b, h, sea] = NowickiProfile(x)
+x = x * 10**3
+h = h * 10**3
+b = (b - sea) * 10**3
+
+#for i in x:
+#print i
+
+#for i in b:
+#print '%.12f' % i
+#for i in h:
+#print '%.11f' % i
+#print '%.12f' % sea
+
+#print x
+#print h
+#print b
+#print sea
+
+#mesh domain
+md = bamgflowband(model(), x, b + h, b, 'hmax', 150.)
+
+#geometry
+md.geometry.surface = np.interp(md.mesh.x, x, b + h)
+md.geometry.base = np.interp(md.mesh.x, x, b)
+md.geometry.thickness = md.geometry.surface - md.geometry.base
+
+#mask
+md.mask.ice_levelset = -np.ones((md.mesh.numberofvertices))
+md.mask.ice_levelset[np.where(md.mesh.vertexflags(2))] = 0
+md.mask.ocean_levelset = -0.5 * np.ones((md.mesh.numberofvertices))
+md.mask.ocean_levelset[np.where(md.mesh.x < 0)] = 0.5
+
+#materials
+md.initialization.temperature = (273. - 20.) * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3 * np.ones((md.mesh.numberofelements))
+
+#friction
+md.friction.coefficient = np.zeros((md.mesh.numberofvertices))
+md.friction.coefficient[np.where(md.mesh.vertexflags(1))] = 20
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+#boundary conditions
+md.stressbalance.spcvx = np.nan * np.ones((md.mesh.numberofvertices))
+md.stressbalance.spcvy = np.nan * np.ones((md.mesh.numberofvertices))
+md.stressbalance.spcvz = np.nan * np.ones((md.mesh.numberofvertices))
+md.stressbalance.referential = np.nan * np.ones((md.mesh.numberofvertices, 6))
+md.stressbalance.loadingforce = np.zeros((md.mesh.numberofvertices, 3))
+md.stressbalance.spcvx[np.where(md.mesh.vertexflags(4))] = 800.
+md.stressbalance.spcvy[np.where(md.mesh.vertexflags(4))] = 0.
+
+#Misc
+md = setflowequation(md, 'FS', 'all')
+md.flowequation.fe_FS = 'TaylorHood'
+md.stressbalance.abstol = np.nan
+md.miscellaneous.name = 'test703'
+
+#Transient settings
+md.timestepping.time_step = 0.000001
+md.timestepping.final_time = 0.000005
+md.stressbalance.shelf_dampening = 1.
+md.smb.mass_balance = np.zeros((md.mesh.numberofvertices))
+md.basalforcings.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices))
+md.basalforcings.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices))
+md.basalforcings.geothermalflux = np.zeros((md.mesh.numberofvertices))
+posb = np.where(np.logical_and(md.mesh.x > 0., md.mesh.vertexonbase))[0]
+md.basalforcings.groundedice_melting_rate[posb] = 18.
+md.basalforcings.floatingice_melting_rate[posb] = 18.
+md.initialization.vx = np.zeros((md.mesh.numberofvertices))
+md.initialization.vy = np.zeros((md.mesh.numberofvertices))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices))
+md.masstransport.spcthickness = np.nan * np.ones((md.mesh.numberofvertices))
+md.thermal.spctemperature = np.nan * np.ones((md.mesh.numberofvertices))
+md.transient.isthermal = 0
+md.masstransport.isfreesurface = 1
+md.groundingline.migration = 'None'
+
+#Go solve
+md.cluster = generic('np', 3)
+md.stressbalance.shelf_dampening = 1
+md1 = copy.deepcopy(md)
+md1 = solve(md1, 'Transient')
+
+md.stressbalance.shelf_dampening = 0
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Bed3', 'Surface3', 'Thickness3',
+               'Vx1_damp', 'Vy1_damp', 'Vel1_damp', 'Pressure1_damp', 'Bed1_damp', 'Surface1_damp', 'Thickness1_damp',
+               'Vx2_damp', 'Vy2_damp', 'Vel2_damp', 'Pressure2_damp', 'Bed2_damp', 'Surface2_damp', 'Thickness2_damp',
+               'Vx3_damp', 'Vy3_damp', 'Vel3_damp', 'Pressure3_damp', 'Bed3_damp', 'Surface3_damp', 'Thickness3_damp']
+field_tolerances = [2e-08, 2e-08, 2e-08, 1e-08, 1e-10, 1e-10, 1e-10,
+                    2e-08, 2e-08, 2e-08, 1e-08, 1e-10, 1e-10, 1e-10,
+                    2e-08, 2e-08, 2e-08, 1e-08, 1e-10, 1e-10, 1e-10,
+                    5e-08, 5e-08, 5e-08, 1e-08, 1e-10, 1e-10, 1e-10,
+                    5e-08, 5e-08, 5e-08, 1e-08, 1e-10, 1e-10, 1e-10,
+                    5e-08, 5e-08, 5e-08, 1e-08, 1e-10, 1e-10, 1e-10]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Base,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Base,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Base,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].Thickness,
+                md1.results.TransientSolution[0].Vx,
+                md1.results.TransientSolution[0].Vy,
+                md1.results.TransientSolution[0].Vel,
+                md1.results.TransientSolution[0].Pressure,
+                md1.results.TransientSolution[0].Base,
+                md1.results.TransientSolution[0].Surface,
+                md1.results.TransientSolution[0].Thickness,
+                md1.results.TransientSolution[1].Vx,
+                md1.results.TransientSolution[1].Vy,
+                md1.results.TransientSolution[1].Vel,
+                md1.results.TransientSolution[1].Pressure,
+                md1.results.TransientSolution[1].Base,
+                md1.results.TransientSolution[1].Surface,
+                md1.results.TransientSolution[1].Thickness,
+                md1.results.TransientSolution[2].Vx,
+                md1.results.TransientSolution[2].Vy,
+                md1.results.TransientSolution[2].Vel,
+                md1.results.TransientSolution[2].Pressure,
+                md1.results.TransientSolution[2].Base,
+                md1.results.TransientSolution[2].Surface,
+                md1.results.TransientSolution[2].Thickness]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test801.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test801.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test801.m	(revision 27955)
@@ -0,0 +1,48 @@
+%Test Name: ValleyGlacierLevelsetSSA2d
+md=triangle(model(),'../Exp/Square.exp',50000);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/ValleyGlacierShelf.par');
+md=setflowequation(md,'SSA','all');
+md.levelset.stabilization=2;
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Transient;
+md.transient.isstressbalance=1;
+md.transient.ismovingfront=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=0;
+md.transient.isgroundingline=1;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1',...
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2',...
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3'};
+field_tolerances={1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,...
+		1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,...
+		1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(3).Vx,...
+	md.results.TransientSolution(3).Vy,...
+	md.results.TransientSolution(3).Vel,...
+	md.results.TransientSolution(3).Pressure,...
+	md.results.TransientSolution(3).Thickness,...
+	md.results.TransientSolution(3).Surface,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test801.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test801.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test801.py	(revision 27955)
@@ -0,0 +1,54 @@
+#Test Name: ValleyGlacierLevelsetSSA2d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+md = triangle(model(), '../Exp/Square.exp', 50000)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/ValleyGlacierShelf.py')
+md.levelset.stabilization = 2
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+#Transient
+md.transient.isstressbalance = True
+md.transient.ismovingfront = True
+md.transient.ismasstransport = True
+md.transient.issmb = True
+md.transient.isthermal = False
+md.transient.isgroundingline = True
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Thickness1', 'Surface1', 'MaskIceLevelset1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Thickness2', 'Surface2', 'MaskIceLevelset2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Thickness3', 'Surface3', 'MaskIceLevelset3']
+field_tolerances = [1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12,
+                    1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12,
+                    1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].MaskIceLevelset,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].MaskIceLevelset,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].MaskIceLevelset]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test802.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test802.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test802.m	(revision 27955)
@@ -0,0 +1,56 @@
+%Test Name: ValleyGlacierLevelsetThermalSSA3d
+md=triangle(model(),'../Exp/Square.exp',50000);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/ValleyGlacierShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Thermal model
+pos_surf=find(md.mesh.vertexonsurface);
+md.thermal.spctemperature(pos_surf)=md.initialization.temperature(pos_surf);
+
+%Transient
+md.transient.isstressbalance=1;
+md.transient.ismovingfront=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=1;
+md.groundingline.melt_interpolation='SubelementMelt1';
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1','Temperature1',...
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2','Temperature2',...
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3','Temperature3'};
+field_tolerances={1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,...
+		1e-9,1e-9,1e-10,1e-10,1e-10,1e-10,1e-10,1e-9,...
+		1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(1).Temperature,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(2).Temperature,...
+	md.results.TransientSolution(3).Vx,...
+	md.results.TransientSolution(3).Vy,...
+	md.results.TransientSolution(3).Vel,...
+	md.results.TransientSolution(3).Pressure,...
+	md.results.TransientSolution(3).Thickness,...
+	md.results.TransientSolution(3).Surface,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	md.results.TransientSolution(3).Temperature,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test802.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test802.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test802.py	(revision 27955)
@@ -0,0 +1,63 @@
+#Test Name: ValleyGlacierLevelsetThermalSSA3d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 50000)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/ValleyGlacierShelf.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+#Thermal model
+pos_surf = np.nonzero(md.mesh.vertexonsurface)[0]
+md.thermal.spctemperature[pos_surf] = md.initialization.temperature[pos_surf]
+
+#Transient
+md.transient.isstressbalance = True
+md.transient.ismovingfront = True
+md.transient.ismasstransport = True
+md.transient.issmb = True
+md.transient.isthermal = True
+md.transient.isgroundingline = True
+md.groundingline.melt_interpolation = 'SubelementMelt1'
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Thickness1', 'Surface1', 'MaskIceLevelset1', 'Temperature1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Thickness2', 'Surface2', 'MaskIceLevelset2', 'Temperature2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Thickness3', 'Surface3', 'MaskIceLevelset3', 'Temperature3']
+field_tolerances = [1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12,
+                    1e-9, 1e-9, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-9,
+                    1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].MaskIceLevelset,
+                md.results.TransientSolution[0].Temperature,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].MaskIceLevelset,
+                md.results.TransientSolution[1].Temperature,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].MaskIceLevelset,
+                md.results.TransientSolution[2].Temperature]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test803.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test803.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test803.m	(revision 27955)
@@ -0,0 +1,61 @@
+%Test Name: ValleyGlacierLevelsetEnthalpyHO3d
+md=triangle(model(),'../Exp/Square.exp',50000);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/ValleyGlacierShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Thermal model
+pos_surf=find(md.mesh.vertexonsurface);
+md.thermal.spctemperature(pos_surf)=md.initialization.temperature(pos_surf);
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+
+%Transient
+md.transient.isstressbalance=1;
+md.transient.ismovingfront=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=1;
+md.groundingline.melt_interpolation='SubelementMelt1';
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1','Enthalpy1','Watercolumn1',...
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2','Enthalpy2','Watercolumn2',...
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3','Enthalpy3','Watercolumn3'};
+field_tolerances={1e-10,1e-10,1e-10,1e-13,1e-12,1e-12,1e-13,1e-13,1e-13,...
+		1e-9,1e-9,1e-10,1e-10,1e-10,1e-10,1e-10,1e-9,1e-10,...
+		1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(1).Enthalpy,...
+	md.results.TransientSolution(1).Watercolumn,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(2).Enthalpy,...
+	md.results.TransientSolution(2).Watercolumn,...
+	md.results.TransientSolution(3).Vx,...
+	md.results.TransientSolution(3).Vy,...
+	md.results.TransientSolution(3).Vel,...
+	md.results.TransientSolution(3).Pressure,...
+	md.results.TransientSolution(3).Thickness,...
+	md.results.TransientSolution(3).Surface,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	md.results.TransientSolution(3).Enthalpy,...
+	md.results.TransientSolution(3).Watercolumn,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test803.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test803.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test803.py	(revision 27955)
@@ -0,0 +1,68 @@
+#Test Name: ValleyGlacierLevelsetEnthalpyHO3d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 50000)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/ValleyGlacierShelf.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+#Thermal model
+pos_surf = np.where(md.mesh.vertexonsurface)[0]
+md.thermal.spctemperature[pos_surf] = md.initialization.temperature[pos_surf]
+md.thermal.isenthalpy = True
+md.thermal.isdynamicbasalspc = True
+
+#Transient
+md.transient.isstressbalance = True
+md.transient.ismovingfront = True
+md.transient.ismasstransport = True
+md.transient.issmb = True
+md.transient.isthermal = True
+md.transient.isgroundingline = True
+md.groundingline.melt_interpolation = 'SubelementMelt1'
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Thickness1', 'Surface1', 'MaskIceLevelset1', 'Enthalpy1', 'Watercolumn1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Thickness2', 'Surface2', 'MaskIceLevelset2', 'Enthalpy2', 'Watercolumn2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Thickness3', 'Surface3', 'MaskIceLevelset3', 'Enthalpy3', 'Watercolumn3']
+field_tolerances = [1e-10, 1e-10, 1e-10, 1e-13, 1e-12, 1e-12, 1e-13, 1e-13, 1e-13,
+                    1e-9, 1e-9, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-9, 1e-10,
+                    1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].MaskIceLevelset,
+                md.results.TransientSolution[0].Enthalpy,
+                md.results.TransientSolution[0].Watercolumn,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].MaskIceLevelset,
+                md.results.TransientSolution[1].Enthalpy,
+                md.results.TransientSolution[1].Watercolumn,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].MaskIceLevelset,
+                md.results.TransientSolution[2].Enthalpy,
+                md.results.TransientSolution[2].Watercolumn]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test804.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test804.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test804.m	(revision 27955)
@@ -0,0 +1,51 @@
+%Test Name: ValleyGlacierLevelsetCalvingSIA2d
+md=triangle(model(),'../Exp/Square.exp',50000);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/ValleyGlacierShelf.par');
+md=setflowequation(md,'SIA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Transient
+md.transient.isstressbalance=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=0;
+md.transient.isgroundingline=1;
+md.transient.ismovingfront=1;
+
+md.calving.calvingrate=1000.*ones(md.mesh.numberofvertices,1);
+md.frontalforcings.meltingrate=zeros(md.mesh.numberofvertices,1);
+md.levelset.migration_max = 1e10;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1',...
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2',...
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+		2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,...
+		2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(3).Vx,...
+	md.results.TransientSolution(3).Vy,...
+	md.results.TransientSolution(3).Vel,...
+	md.results.TransientSolution(3).Pressure,...
+	md.results.TransientSolution(3).Thickness,...
+	md.results.TransientSolution(3).Surface,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test804.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test804.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test804.py	(revision 27955)
@@ -0,0 +1,59 @@
+#Test Name: ValleyGlacierLevelsetCalvingSIA2d
+import numpy as np
+from socket import gethostname
+from model import *
+from parameterize import *
+from setflowequation import *
+from setmask import *
+from solve import *
+from triangle import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 50000)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/ValleyGlacierShelf.py')
+md = setflowequation(md, 'SIA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+#Transient
+md.transient.isstressbalance = True
+md.transient.ismasstransport = True
+md.transient.issmb = True
+md.transient.isthermal = False
+md.transient.isgroundingline = True
+md.transient.ismovingfront = True
+
+md.calving.calvingrate = 1000. * np.ones((md.mesh.numberofvertices))
+md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices))
+md.levelset.migration_max = 1e10
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Thickness1', 'Surface1', 'MaskIceLevelset1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Thickness2', 'Surface2', 'MaskIceLevelset2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Thickness3', 'Surface3', 'MaskIceLevelset3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].MaskIceLevelset,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].MaskIceLevelset,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].MaskIceLevelset]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test805.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test805.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test805.m	(revision 27955)
@@ -0,0 +1,66 @@
+%Test Name: ValleyGlacierLevelsetEnthCalvingHO3d
+md=triangle(model(),'../Exp/Square.exp',50000);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/ValleyGlacierShelf.par');
+md=extrude(md,3,2.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Thermal model
+pos_surf=find(md.mesh.vertexonsurface);
+md.thermal.spctemperature(pos_surf)=md.initialization.temperature(pos_surf);
+md.thermal.isenthalpy=1;
+md.thermal.isdynamicbasalspc=1;
+
+%Transient
+md.transient.isstressbalance=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=1;
+md.transient.isgroundingline=1;
+md.transient.ismovingfront=1;
+
+md.calving.calvingrate=1000.*ones(md.mesh.numberofvertices,1);
+md.frontalforcings.meltingrate=zeros(md.mesh.numberofvertices,1);
+md.groundingline.melt_interpolation='SubelementMelt1';
+md.levelset.stabilization=2;
+md.levelset.migration_max = 1e10;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1','Enthalpy1','Watercolumn1',...
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2','Enthalpy2','Watercolumn2',...
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3','Enthalpy3','Watercolumn3'};
+field_tolerances={1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,...
+		1e-9,1e-9,1e-10,1e-10,1e-10,1e-10,1e-10,1e-9,1e-10,...
+		1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(1).Enthalpy,...
+	md.results.TransientSolution(1).Watercolumn,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(2).Enthalpy,...
+	md.results.TransientSolution(2).Watercolumn,...
+	md.results.TransientSolution(3).Vx,...
+	md.results.TransientSolution(3).Vy,...
+	md.results.TransientSolution(3).Vel,...
+	md.results.TransientSolution(3).Pressure,...
+	md.results.TransientSolution(3).Thickness,...
+	md.results.TransientSolution(3).Surface,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	md.results.TransientSolution(3).Enthalpy,...
+	md.results.TransientSolution(3).Watercolumn,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test805.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test805.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test805.py	(revision 27955)
@@ -0,0 +1,74 @@
+#Test Name: ValleyGlacierLevelsetEnthCalvingHO3d
+import numpy as np
+from socket import gethostname
+from model import *
+from parameterize import *
+from setflowequation import *
+from setmask import *
+from solve import *
+from triangle import *
+
+
+md = triangle(model(), '../Exp/Square.exp', 50000)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/ValleyGlacierShelf.py')
+md.extrude(3, 2.)
+md = setflowequation(md, 'HO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+#Thermal model
+pos_surf = np.nonzero(md.mesh.vertexonsurface)[0]
+md.thermal.spctemperature[pos_surf] = md.initialization.temperature[pos_surf]
+md.thermal.isenthalpy = True
+md.thermal.isdynamicbasalspc = True
+
+#Transient
+md.transient.isstressbalance = True
+md.transient.ismasstransport = True
+md.transient.issmb = True
+md.transient.isthermal = True
+md.transient.isgroundingline = True
+md.transient.ismovingfront = True
+
+md.calving.calvingrate = 1000. * np.ones((md.mesh.numberofvertices))
+md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices))
+md.groundingline.melt_interpolation = 'SubelementMelt1'
+md.levelset.stabilization = 2
+md.levelset.migration_max = 1e10
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Thickness1', 'Surface1', 'MaskIceLevelset1', 'Enthalpy1', 'Watercolumn1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Thickness2', 'Surface2', 'MaskIceLevelset2', 'Enthalpy2', 'Watercolumn2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Thickness3', 'Surface3', 'MaskIceLevelset3', 'Enthalpy3', 'Watercolumn3']
+field_tolerances = [1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11,
+                    1e-9, 1e-9, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-9, 1e-10,
+                    1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].MaskIceLevelset,
+                md.results.TransientSolution[0].Enthalpy,
+                md.results.TransientSolution[0].Watercolumn,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].MaskIceLevelset,
+                md.results.TransientSolution[1].Enthalpy,
+                md.results.TransientSolution[1].Watercolumn,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].MaskIceLevelset,
+                md.results.TransientSolution[2].Enthalpy,
+                md.results.TransientSolution[2].Watercolumn]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test806.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test806.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test806.m	(revision 27955)
@@ -0,0 +1,77 @@
+%Test Name: SquareShelfLevelsetCalvingSSA2dLevermann
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Do not kill ice bergs as all is floating
+md.levelset.kill_icebergs=0;
+
+x = md.mesh.x;
+xmin = min(x);
+xmax = max(x);
+Lx = (xmax-xmin);
+alpha = 2./3.;
+md.mask.ice_levelset = ((x - alpha*Lx)>0) - ((x - alpha*Lx)<0);
+
+md.timestepping.time_step=10;
+md.timestepping.final_time=30;
+
+%Transient
+md.transient.isstressbalance=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=0;
+md.transient.isgroundingline=0;
+md.transient.ismovingfront=1;
+
+md.calving=calvinglevermann();
+md.calving.coeff=4.89e13*ones(md.mesh.numberofvertices,1);
+md.frontalforcings.meltingrate=zeros(md.mesh.numberofvertices,1);
+md.levelset.spclevelset=NaN(md.mesh.numberofvertices,1);
+md.levelset.migration_max = 1e8;
+
+md.transient.requested_outputs={'default','StrainRateparallel','StrainRateperpendicular','Calvingratex','Calvingratey','CalvingCalvingrate'};
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1','StrainRateparallel1','StrainRateperpendicular1','CalvingCalvingrate1'...
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2','StrainRateparallel2','StrainRateperpendicular2','CalvingCalvingrate2'...
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3','StrainRateparallel3','StrainRateperpendicular3','CalvingCalvingrate3'};
+field_tolerances={1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,...
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,...
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,1e-11,5e-11,5e-11,5e-11};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(1).StrainRateparallel,...
+	md.results.TransientSolution(1).StrainRateperpendicular,...
+	md.results.TransientSolution(1).CalvingCalvingrate,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(2).StrainRateparallel,...
+	md.results.TransientSolution(2).StrainRateperpendicular,...
+	md.results.TransientSolution(2).CalvingCalvingrate,...
+	md.results.TransientSolution(3).Vx,...
+	md.results.TransientSolution(3).Vy,...
+	md.results.TransientSolution(3).Vel,...
+	md.results.TransientSolution(3).Pressure,...
+	md.results.TransientSolution(3).Thickness,...
+	md.results.TransientSolution(3).Surface,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	md.results.TransientSolution(3).StrainRateparallel,...
+	md.results.TransientSolution(3).StrainRateperpendicular,...
+	md.results.TransientSolution(3).CalvingCalvingrate,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test806.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test806.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test806.py	(revision 27955)
@@ -0,0 +1,84 @@
+#Test Name: SquareShelfLevelsetCalvingSSA2dLevermann
+import numpy as np
+from socket import gethostname
+from model import *
+from parameterize import *
+from setflowequation import *
+from setmask import *
+from solve import *
+from triangle import *
+
+md = triangle(model(), '../Exp/Square.exp', 50000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+x = md.mesh.x
+xmin = min(x)
+xmax = max(x)
+Lx = (xmax - xmin)
+alpha = 2. / 3.
+md.mask.ice_levelset = np.float_((x - alpha * Lx) > 0) - np.float_((x - alpha * Lx) < 0)
+
+#Do not kill ice bergs as all is floating
+md.levelset.kill_icebergs = 0
+
+md.timestepping.time_step = 10
+md.timestepping.final_time = 30
+
+#Transient
+md.transient.isstressbalance = True
+md.transient.ismasstransport = True
+md.transient.issmb = True
+md.transient.isthermal = False
+md.transient.isgroundingline = False
+md.transient.ismovingfront = True
+
+md.calving = calvinglevermann()
+md.calving.coeff = 4.89e13 * np.ones((md.mesh.numberofvertices))
+md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices))
+md.levelset.spclevelset = np.nan * np.ones((md.mesh.numberofvertices))
+md.levelset.migration_max = 1e8
+
+md.transient.requested_outputs = ['default', 'StrainRateparallel', 'StrainRateperpendicular', 'Calvingratex', 'Calvingratey', 'CalvingCalvingrate']
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Thickness1', 'Surface1', 'MaskIceLevelset1', 'StrainRateparallel1', 'StrainRateperpendicular1', 'CalvingCalvingrate1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Thickness2', 'Surface2', 'MaskIceLevelset2', 'StrainRateparallel2', 'StrainRateperpendicular2', 'CalvingCalvingrate2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Thickness3', 'Surface3', 'MaskIceLevelset3', 'StrainRateparallel3', 'StrainRateperpendicular3', 'CalvingCalvingrate3']
+field_tolerances = [1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11,
+                    2e-11, 2e-11, 2e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11,
+                    2e-11, 2e-11, 2e-11, 1e-11, 1e-11, 1e-11, 1e-11, 5e-11, 5e-11, 1e-11]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].MaskIceLevelset,
+                md.results.TransientSolution[0].StrainRateparallel,
+                md.results.TransientSolution[0].StrainRateperpendicular,
+                md.results.TransientSolution[0].CalvingCalvingrate,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].MaskIceLevelset,
+                md.results.TransientSolution[1].StrainRateparallel,
+                md.results.TransientSolution[1].StrainRateperpendicular,
+                md.results.TransientSolution[1].CalvingCalvingrate,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].MaskIceLevelset,
+                md.results.TransientSolution[2].StrainRateparallel,
+                md.results.TransientSolution[2].StrainRateperpendicular,
+                md.results.TransientSolution[2].CalvingCalvingrate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test807.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test807.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test807.m	(revision 27955)
@@ -0,0 +1,64 @@
+%Test Name: SquareShelfLevelsetMeltingSSA2d
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+x = md.mesh.x;
+xmin = min(x);
+xmax = max(x);
+Lx = (xmax-xmin);
+alpha = 2./3.;
+md.mask.ice_levelset = ((x - alpha*Lx)>0) - ((x - alpha*Lx)<0);
+
+%Do not kill ice bergs as all is floating
+md.levelset.kill_icebergs=0;
+
+md.timestepping.time_step=10;
+md.timestepping.final_time=30;
+
+%Transient
+md.transient.isstressbalance=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=0;
+md.transient.isgroundingline=0;
+md.transient.ismovingfront=1;
+
+md.calving.calvingrate=zeros(md.mesh.numberofvertices,1);
+md.frontalforcings.meltingrate=10000*ones(md.mesh.numberofvertices,1);
+md.levelset.spclevelset=NaN(md.mesh.numberofvertices,1);
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1'...
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2'...
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3'};
+field_tolerances={1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,...
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,5e-11,...
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,5e-11};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(3).Vx,...
+	md.results.TransientSolution(3).Vy,...
+	md.results.TransientSolution(3).Vel,...
+	md.results.TransientSolution(3).Pressure,...
+	md.results.TransientSolution(3).Thickness,...
+	md.results.TransientSolution(3).Surface,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test807.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test807.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test807.py	(revision 27955)
@@ -0,0 +1,72 @@
+#Test Name: SquareShelfLevelsetMeltingSSA2d
+from model import *
+from socket import gethostname
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from solve import *
+
+import numpy as np
+
+md = triangle(model(), '../Exp/Square.exp', 50000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+x = md.mesh.x
+xmin = min(x)
+xmax = max(x)
+Lx = (xmax - xmin)
+alpha = 2. / 3.
+md.mask.ice_levelset = np.float_((x - alpha * Lx) > 0) - np.float_((x - alpha * Lx) < 0)
+
+#Do not kill ice bergs as all is floating
+md.levelset.kill_icebergs = 0
+
+md.timestepping.time_step = 10
+md.timestepping.final_time = 30
+
+#Transient
+md.transient.isstressbalance = True
+md.transient.ismasstransport = True
+md.transient.issmb = True
+md.transient.isthermal = False
+md.transient.isgroundingline = False
+md.transient.ismovingfront = True
+
+md.calving.calvingrate = np.zeros((md.mesh.numberofvertices))
+md.frontalforcings.meltingrate = 10000 * np.ones((md.mesh.numberofvertices))
+md.levelset.spclevelset = np.nan * np.ones((md.mesh.numberofvertices))
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Thickness1', 'Surface1', 'MaskIceLevelset1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Thickness2', 'Surface2', 'MaskIceLevelset2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Thickness3', 'Surface3', 'MaskIceLevelset3']
+field_tolerances = [1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11,
+                    2e-11, 2e-11, 2e-11, 1e-11, 1e-11, 1e-11, 5e-11,
+                    2e-11, 2e-11, 2e-11, 1e-11, 1e-11, 1e-11, 5e-11]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].MaskIceLevelset,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].MaskIceLevelset,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].MaskIceLevelset]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test808.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test808.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test808.m	(revision 27955)
@@ -0,0 +1,69 @@
+%Test Name: SquareShelfLevelsetCalvingSSA2dMinThickness
+md=triangle(model(),'../Exp/Square.exp',30000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+x = md.mesh.x;
+xmin = min(x);
+xmax = max(x);
+Lx = (xmax-xmin);
+alpha = 2./3.;
+md.mask.ice_levelset = -1+2*(md.mesh.y>9e5);
+
+%Do not kill ice bergs as all is floating
+md.levelset.kill_icebergs=0;
+
+md.timestepping.time_step=1;
+md.timestepping.final_time=3;
+
+%Transient
+md.transient.isstressbalance=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=0;
+md.transient.isgroundingline=0;
+md.transient.ismovingfront=1;
+
+md.calving=calvingminthickness();
+md.calving.min_thickness=400;
+md.frontalforcings.meltingrate=zeros(md.mesh.numberofvertices,1);
+md.levelset.spclevelset=NaN(md.mesh.numberofvertices,1);
+md.levelset.reinit_frequency=1;
+md.levelset.migration_max = 1e10;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names ={...
+	'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1'...
+	'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2'...
+	'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3'};
+field_tolerances={...
+	1e-8,1e-8,1e-8,1e-9,1e-9,1e-9,3e-9,...
+	1e-8,1e-8,1e-8,1e-9,1e-9,1e-9,3e-9,...
+	1e-8,1e-8,1e-8,1e-9,1e-9,1e-9,3e-9};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(3).Vx,...
+	md.results.TransientSolution(3).Vy,...
+	md.results.TransientSolution(3).Vel,...
+	md.results.TransientSolution(3).Pressure,...
+	md.results.TransientSolution(3).Thickness,...
+	md.results.TransientSolution(3).Surface,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test808.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test808.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test808.py	(revision 27955)
@@ -0,0 +1,75 @@
+#Test Name: SquareShelfLevelsetCalvingSSA2dMinThickness
+import numpy as np
+from calvingminthickness import *
+from socket import gethostname
+from model import *
+from parameterize import *
+from setflowequation import *
+from setmask import *
+from solve import *
+from triangle import *
+
+md = triangle(model(), '../Exp/Square.exp', 30000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+#Do not kill ice bergs as all is floating
+md.levelset.kill_icebergs = 0
+
+x = md.mesh.x
+xmin = min(x)
+xmax = max(x)
+Lx = (xmax - xmin)
+alpha = 2. / 3.
+md.mask.ice_levelset = -1 + 2 * (md.mesh.y > 9e5)
+
+md.timestepping.time_step = 1
+md.timestepping.final_time = 3
+
+#Transient
+md.transient.isstressbalance = 1
+md.transient.ismasstransport = 1
+md.transient.issmb = 1
+md.transient.isthermal = 0
+md.transient.isgroundingline = 0
+md.transient.ismovingfront = 1
+
+md.calving = calvingminthickness()
+md.calving.min_thickness = 400
+md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices, ))
+md.levelset.spclevelset = np.nan * np.ones((md.mesh.numberofvertices, ))
+md.levelset.reinit_frequency = 1
+md.levelset.migration_max = 1e10
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Thickness1', 'Surface1', 'MaskIceLevelset1'
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Thickness2', 'Surface2', 'MaskIceLevelset2'
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Thickness3', 'Surface3', 'MaskIceLevelset3']
+field_tolerances = [1e-8, 1e-8, 1e-8, 1e-9, 1e-9, 1e-9, 3e-9,
+                    1e-8, 1e-8, 1e-8, 1e-9, 1e-9, 1e-9, 3e-9,
+                    1e-8, 1e-8, 1e-8, 1e-9, 1e-9, 1e-9, 3e-9]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].MaskIceLevelset,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].MaskIceLevelset,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].MaskIceLevelset]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test809.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test809.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test809.m	(revision 27955)
@@ -0,0 +1,59 @@
+%Test Name: ValleyGlacierLevelsetCalvingSSA2dCrevassedepth
+md=triangle(model(),'../Exp/Square.exp',50000);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/ValleyGlacierShelf.par');
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=2;
+md.timestepping.final_time=50;
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Transient;
+md.transient.isstressbalance=1;
+md.transient.ismovingfront=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=0;
+md.transient.isgroundingline=1;
+
+md.calving=calvingcrevassedepth();
+md.calving.crevasse_opening_stress=1;
+md.calving.water_height=50*ones(md.mesh.numberofvertices,1);
+md.frontalforcings.meltingrate=zeros(md.mesh.numberofvertices,1);
+md.levelset.spclevelset=NaN(md.mesh.numberofvertices,1);
+md.levelset.reinit_frequency=1;
+md.levelset.migration_max = 1e10;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names ={...
+	'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1'...
+	'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2'...
+	'Vx10','Vy10','Vel10','Pressure10','Thickness10','Surface10','MaskIceLevelset10'};
+field_tolerances={...
+	1e-8,1e-8,1e-8,1e-9,1e-9,1e-9,3e-9,...
+	1e-8,1e-8,1e-8,1e-9,1e-9,1e-9,3e-9,...
+	1e-8,1e-8,1e-8,1e-9,1e-9,1e-9,3e-9};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(10).Vx,...
+	md.results.TransientSolution(10).Vy,...
+	md.results.TransientSolution(10).Vel,...
+	md.results.TransientSolution(10).Pressure,...
+	md.results.TransientSolution(10).Thickness,...
+	md.results.TransientSolution(10).Surface,...
+	md.results.TransientSolution(10).MaskIceLevelset,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test809.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test809.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test809.py	(revision 27955)
@@ -0,0 +1,65 @@
+#Test Name: ValleyGlacierLevelsetCalvingSSA2dCrevassedepth
+import numpy as np
+from calvingcrevassedepth import *
+from socket import gethostname
+from model import *
+from parameterize import *
+from setflowequation import *
+from setmask import *
+from solve import *
+from triangle import *
+
+md = triangle(model(), '../Exp/Square.exp', 50000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/ValleyGlacierShelf.py')
+md = setflowequation(md, 'SSA', 'all')
+md.timestepping.time_step = 2
+md.timestepping.final_time = 50
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+#Transient
+md.transient.isstressbalance = 1
+md.transient.ismovingfront = 1
+md.transient.ismasstransport = 1
+md.transient.issmb = 1
+md.transient.isthermal = 0
+md.transient.isgroundingline = 1
+
+md.calving = calvingcrevassedepth()
+md.calving.crevasse_opening_stress=1
+md.calving.water_height = 50 * np.ones((md.mesh.numberofvertices, ))
+md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices, ))
+md.levelset.spclevelset = np.nan * np.ones((md.mesh.numberofvertices, ))
+md.levelset.reinit_frequency = 1
+md.levelset.migration_max = 1e10
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Thickness1', 'Surface1', 'MaskIceLevelset1'
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Thickness2', 'Surface2', 'MaskIceLevelset2'
+               'Vx10', 'Vy10', 'Vel10', 'Pressure10', 'Thickness10', 'Surface10', 'MaskIceLevelset10']
+field_tolerances = [1e-8, 1e-8, 1e-8, 1e-9, 1e-9, 1e-9, 3e-9,
+                    1e-8, 1e-8, 1e-8, 1e-9, 1e-9, 1e-9, 3e-9,
+                    1e-8, 1e-8, 1e-8, 1e-9, 1e-9, 1e-9, 3e-9]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].MaskIceLevelset,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].MaskIceLevelset,
+                md.results.TransientSolution[9].Vx,
+                md.results.TransientSolution[9].Vy,
+                md.results.TransientSolution[9].Vel,
+                md.results.TransientSolution[9].Pressure,
+                md.results.TransientSolution[9].Thickness,
+                md.results.TransientSolution[9].Surface,
+                md.results.TransientSolution[9].MaskIceLevelset]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test810.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test810.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test810.m	(revision 27955)
@@ -0,0 +1,49 @@
+%Test Name: ValleyGlacierLevelsetMOLHO2d
+md=triangle(model(),'../Exp/Square.exp',50000);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/ValleyGlacierShelf.par');
+md=setflowequation(md,'MOLHO','all');
+md.levelset.stabilization=2;
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Transient;
+md.transient.isstressbalance=1;
+md.transient.ismovingfront=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=0;
+md.transient.isgroundingline=1;
+
+md=SetMOLHOBC(md);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1',...
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2',...
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3'};
+field_tolerances={1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,...
+		1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,...
+		1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(3).Vx,...
+	md.results.TransientSolution(3).Vy,...
+	md.results.TransientSolution(3).Vel,...
+	md.results.TransientSolution(3).Pressure,...
+	md.results.TransientSolution(3).Thickness,...
+	md.results.TransientSolution(3).Surface,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test810.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test810.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test810.py	(revision 27955)
@@ -0,0 +1,56 @@
+#Test Name: ValleyGlacierLevelsetMOLHO2d
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from SetMOLHOBC import SetMOLHOBC
+
+md = triangle(model(), '../Exp/Square.exp', 50000)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/ValleyGlacierShelf.py')
+md.levelset.stabilization = 2
+md = setflowequation(md, 'MOLHO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+#Transient
+md.transient.isstressbalance = True
+md.transient.ismovingfront = True
+md.transient.ismasstransport = True
+md.transient.issmb = True
+md.transient.isthermal = False
+md.transient.isgroundingline = True
+md = SetMOLHOBC(md)
+
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Thickness1', 'Surface1', 'MaskIceLevelset1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Thickness2', 'Surface2', 'MaskIceLevelset2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Thickness3', 'Surface3', 'MaskIceLevelset3']
+field_tolerances = [1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12,
+                    1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12,
+                    1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].MaskIceLevelset,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].MaskIceLevelset,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].MaskIceLevelset]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test811.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test811.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test811.m	(revision 27955)
@@ -0,0 +1,52 @@
+%Test Name: ValleyGlacierLevelsetCalvingMOLHO2d
+md=triangle(model(),'../Exp/Square.exp',50000);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/ValleyGlacierShelf.par');
+md=setflowequation(md,'MOLHO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Transient
+md.transient.isstressbalance=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=0;
+md.transient.isgroundingline=1;
+md.transient.ismovingfront=1;
+
+md.calving.calvingrate=1000.*ones(md.mesh.numberofvertices,1);
+md.frontalforcings.meltingrate=zeros(md.mesh.numberofvertices,1);
+md.levelset.migration_max = 1e10;
+
+md=SetMOLHOBC(md);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1',...
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2',...
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+		2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,...
+		2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(3).Vx,...
+	md.results.TransientSolution(3).Vy,...
+	md.results.TransientSolution(3).Vel,...
+	md.results.TransientSolution(3).Pressure,...
+	md.results.TransientSolution(3).Thickness,...
+	md.results.TransientSolution(3).Surface,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test811.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test811.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test811.py	(revision 27955)
@@ -0,0 +1,61 @@
+#Test Name: ValleyGlacierLevelsetCalvingMOLHO2d
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from solve import solve
+from SetMOLHOBC import SetMOLHOBC
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 50000)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/ValleyGlacierShelf.py')
+md = setflowequation(md, 'MOLHO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+#Transient
+md.transient.isstressbalance = True
+md.transient.ismasstransport = True
+md.transient.issmb = True
+md.transient.isthermal = False
+md.transient.isgroundingline = True
+md.transient.ismovingfront = True
+
+md.calving.calvingrate = 1000. * np.ones((md.mesh.numberofvertices))
+md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices))
+md.levelset.migration_max = 1e10
+
+md = SetMOLHOBC(md)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Thickness1', 'Surface1', 'MaskIceLevelset1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Thickness2', 'Surface2', 'MaskIceLevelset2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Thickness3', 'Surface3', 'MaskIceLevelset3']
+field_tolerances = [1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13,
+                    2e-13, 2e-13, 2e-13, 1e-13, 1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].MaskIceLevelset,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].MaskIceLevelset,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].MaskIceLevelset]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test812.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test812.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test812.m	(revision 27955)
@@ -0,0 +1,78 @@
+%Test Name: SquareShelfLevelsetCalvingMOLHO2dLevermann
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'MOLHO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%Do not kill ice bergs as all is floating
+md.levelset.kill_icebergs=0;
+
+x = md.mesh.x;
+xmin = min(x);
+xmax = max(x);
+Lx = (xmax-xmin);
+alpha = 2./3.;
+md.mask.ice_levelset = ((x - alpha*Lx)>0) - ((x - alpha*Lx)<0);
+
+md.timestepping.time_step=10;
+md.timestepping.final_time=30;
+
+%Transient
+md.transient.isstressbalance=1;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=0;
+md.transient.isgroundingline=0;
+md.transient.ismovingfront=1;
+
+md.calving=calvinglevermann();
+md.calving.coeff=4.89e13*ones(md.mesh.numberofvertices,1);
+md.frontalforcings.meltingrate=zeros(md.mesh.numberofvertices,1);
+md.levelset.spclevelset=NaN(md.mesh.numberofvertices,1);
+md.levelset.migration_max = 1e8;
+
+md.transient.requested_outputs={'default','StrainRateparallel','StrainRateperpendicular','Calvingratex','Calvingratey','CalvingCalvingrate'};
+
+md=SetMOLHOBC(md);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Thickness1','Surface1','MaskIceLevelset1','StrainRateparallel1','StrainRateperpendicular1','CalvingCalvingrate1'...
+		'Vx2','Vy2','Vel2','Pressure2','Thickness2','Surface2','MaskIceLevelset2','StrainRateparallel2','StrainRateperpendicular2','CalvingCalvingrate2'...
+		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3','StrainRateparallel3','StrainRateperpendicular3','CalvingCalvingrate3'};
+field_tolerances={1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,...
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,...
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,1e-11,5e-11,5e-11,5e-11};
+field_values={...
+	md.results.TransientSolution(1).Vx,...
+	md.results.TransientSolution(1).Vy,...
+	md.results.TransientSolution(1).Vel,...
+	md.results.TransientSolution(1).Pressure,...
+	md.results.TransientSolution(1).Thickness,...
+	md.results.TransientSolution(1).Surface,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(1).StrainRateparallel,...
+	md.results.TransientSolution(1).StrainRateperpendicular,...
+	md.results.TransientSolution(1).CalvingCalvingrate,...
+	md.results.TransientSolution(2).Vx,...
+	md.results.TransientSolution(2).Vy,...
+	md.results.TransientSolution(2).Vel,...
+	md.results.TransientSolution(2).Pressure,...
+	md.results.TransientSolution(2).Thickness,...
+	md.results.TransientSolution(2).Surface,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(2).StrainRateparallel,...
+	md.results.TransientSolution(2).StrainRateperpendicular,...
+	md.results.TransientSolution(2).CalvingCalvingrate,...
+	md.results.TransientSolution(3).Vx,...
+	md.results.TransientSolution(3).Vy,...
+	md.results.TransientSolution(3).Vel,...
+	md.results.TransientSolution(3).Pressure,...
+	md.results.TransientSolution(3).Thickness,...
+	md.results.TransientSolution(3).Surface,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	md.results.TransientSolution(3).StrainRateparallel,...
+	md.results.TransientSolution(3).StrainRateperpendicular,...
+	md.results.TransientSolution(3).CalvingCalvingrate,...
+	};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test812.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test812.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test812.py	(revision 27955)
@@ -0,0 +1,86 @@
+#Test Name: SquareShelfLevelsetCalvingMOLHO2dLevermann
+import numpy as np
+from socket import gethostname
+from model import *
+from parameterize import parameterize
+from setflowequation import setflowequation
+from setmask import setmask
+from solve import solve
+from triangle import triangle
+from SetMOLHOBC import SetMOLHOBC
+
+md = triangle(model(), '../Exp/Square.exp', 50000.)
+md = setmask(md, 'all', '')
+md = parameterize(md, '../Par/SquareShelf.py')
+md = setflowequation(md, 'MOLHO', 'all')
+md.cluster = generic('name', gethostname(), 'np', 3)
+
+x = md.mesh.x
+xmin = min(x)
+xmax = max(x)
+Lx = (xmax - xmin)
+alpha = 2. / 3.
+md.mask.ice_levelset = np.float_((x - alpha * Lx) > 0) - np.float_((x - alpha * Lx) < 0)
+
+#Do not kill ice bergs as all is floating
+md.levelset.kill_icebergs = 0
+
+md.timestepping.time_step = 10
+md.timestepping.final_time = 30
+
+#Transient
+md.transient.isstressbalance = True
+md.transient.ismasstransport = True
+md.transient.issmb = True
+md.transient.isthermal = False
+md.transient.isgroundingline = False
+md.transient.ismovingfront = True
+
+md.calving = calvinglevermann()
+md.calving.coeff = 4.89e13 * np.ones((md.mesh.numberofvertices))
+md.frontalforcings.meltingrate = np.zeros((md.mesh.numberofvertices))
+md.levelset.spclevelset = np.nan * np.ones((md.mesh.numberofvertices))
+md.levelset.migration_max = 1e8
+
+md.transient.requested_outputs = ['default', 'StrainRateparallel', 'StrainRateperpendicular', 'Calvingratex', 'Calvingratey', 'CalvingCalvingrate']
+
+md = SetMOLHOBC(md);
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Thickness1', 'Surface1', 'MaskIceLevelset1', 'StrainRateparallel1', 'StrainRateperpendicular1', 'CalvingCalvingrate1',
+               'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Thickness2', 'Surface2', 'MaskIceLevelset2', 'StrainRateparallel2', 'StrainRateperpendicular2', 'CalvingCalvingrate2',
+               'Vx3', 'Vy3', 'Vel3', 'Pressure3', 'Thickness3', 'Surface3', 'MaskIceLevelset3', 'StrainRateparallel3', 'StrainRateperpendicular3', 'CalvingCalvingrate3']
+field_tolerances = [1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11,
+                    2e-11, 2e-11, 2e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11,
+                    2e-11, 2e-11, 2e-11, 1e-11, 1e-11, 1e-11, 1e-11, 5e-11, 5e-11, 1e-11]
+field_values = [md.results.TransientSolution[0].Vx,
+                md.results.TransientSolution[0].Vy,
+                md.results.TransientSolution[0].Vel,
+                md.results.TransientSolution[0].Pressure,
+                md.results.TransientSolution[0].Thickness,
+                md.results.TransientSolution[0].Surface,
+                md.results.TransientSolution[0].MaskIceLevelset,
+                md.results.TransientSolution[0].StrainRateparallel,
+                md.results.TransientSolution[0].StrainRateperpendicular,
+                md.results.TransientSolution[0].CalvingCalvingrate,
+                md.results.TransientSolution[1].Vx,
+                md.results.TransientSolution[1].Vy,
+                md.results.TransientSolution[1].Vel,
+                md.results.TransientSolution[1].Pressure,
+                md.results.TransientSolution[1].Thickness,
+                md.results.TransientSolution[1].Surface,
+                md.results.TransientSolution[1].MaskIceLevelset,
+                md.results.TransientSolution[1].StrainRateparallel,
+                md.results.TransientSolution[1].StrainRateperpendicular,
+                md.results.TransientSolution[1].CalvingCalvingrate,
+                md.results.TransientSolution[2].Vx,
+                md.results.TransientSolution[2].Vy,
+                md.results.TransientSolution[2].Vel,
+                md.results.TransientSolution[2].Pressure,
+                md.results.TransientSolution[2].Thickness,
+                md.results.TransientSolution[2].Surface,
+                md.results.TransientSolution[2].MaskIceLevelset,
+                md.results.TransientSolution[2].StrainRateparallel,
+                md.results.TransientSolution[2].StrainRateperpendicular,
+                md.results.TransientSolution[2].CalvingCalvingrate]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test813.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test813.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test813.m	(revision 27955)
@@ -0,0 +1,59 @@
+%Test Name: SquareShelfLevelsetKillberg
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+x = md.mesh.x;
+xmin = min(x);
+xmax = max(x);
+Lx = (xmax-xmin);
+alpha = 2./3.;
+md.mask.ice_levelset = ((x - alpha*Lx)>0) - ((x - alpha*Lx)<0);
+
+% a very special border case that fails the previous version of killberg 20220427
+icebergid = 59;
+ids = [141,144,139, 58, 263];
+md.mask.ice_levelset(ids) = 1;
+md.mask.ocean_levelset = -md.mask.ice_levelset;
+md.mask.ocean_levelset(142) = 1;
+md.mask.ocean_levelset(141) = 1;
+md.mask.ocean_levelset(143) = 1;
+md.mask.ocean_levelset(144) = 1;
+md.mask.ocean_levelset(139) = 1;
+md.mask.ice_levelset(icebergid) = -1;
+
+md.levelset.kill_icebergs=1;
+
+md.timestepping.time_step=10;
+md.timestepping.final_time=30;
+
+%Transient
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=1;
+md.transient.issmb=1;
+md.transient.isthermal=0;
+md.transient.isgroundingline=0;
+md.transient.ismovingfront=1;
+
+md.calving.calvingrate=zeros(md.mesh.numberofvertices,1);
+md.frontalforcings.meltingrate=10000*ones(md.mesh.numberofvertices,1);
+md.levelset.spclevelset=md.mask.ice_levelset;
+
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'MaskIceLevelsetwithIceberg','MaskIceLevelset1',...
+	'MaskIceLevelset2',...
+	'MaskIceLevelset3'};
+field_tolerances={1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,...
+	2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,5e-11,...
+	2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,5e-11};
+field_values={...
+	md.mask.ice_levelset,...
+	md.results.TransientSolution(1).MaskIceLevelset,...
+	md.results.TransientSolution(2).MaskIceLevelset,...
+	md.results.TransientSolution(3).MaskIceLevelset,...
+	};
+
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test900.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test900.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test900.m	(revision 27955)
@@ -0,0 +1,47 @@
+%Test Name:SquareNoDynUnConfinedHydroDC
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+%reduced slab (20m long)
+md.mesh.x=md.mesh.x/5.0e4;
+md.mesh.y=md.mesh.y/5.0e4;
+md=parameterize(md,'../Par/SquareNoDyn.par');
+md.cluster=generic('name',oshostname(),'np',1);
+
+md.transient.ishydrology=1;
+md.hydrology=(hydrologydc);
+md.hydrology=initialize(md.hydrology,md);
+
+%Hydro Model Parameters
+md.hydrology.isefficientlayer=0;
+md.hydrology.sedimentlimit_flag=0;
+md.hydrology.mask_thawed_node=ones(md.mesh.numberofvertices,1);
+md.hydrology.rel_tol=1.0e-6;
+md.hydrology.penalty_lock=0;
+md.hydrology.max_iter=200;
+md.hydrology.transfer_flag=0;
+md.hydrology.unconfined_flag=1;
+%Sediment
+md.hydrology.sediment_porosity=0.1;
+md.hydrology.sediment_thickness=10.0;
+md.hydrology.sediment_transmitivity=(1.0e-3*md.hydrology.sediment_thickness)*ones(md.mesh.numberofvertices,1);
+%init
+md.initialization.sediment_head=-5.0*ones(md.mesh.numberofvertices,1);
+%BC
+md.hydrology.spcsediment_head=NaN*ones(md.mesh.numberofvertices,1);
+pos=find(md.mesh.x==0);
+md.hydrology.spcsediment_head(pos)=0.5;
+
+md.timestepping.time_step=5/md.constants.yts; %5s steppin
+md.settings.output_frequency=2;
+md.timestepping.final_time=300/md.constants.yts; %500s run
+
+md=solve(md,'Transient');
+
+%fields to track, results can also be found in
+%Wang 2009 Fig 6b (jouranl of Hydrology)
+field_names={'SedimentWaterHead1',...
+	     'SedimentWaterHead2'};
+field_tolerances={1e-13,...
+		  1e-13};
+field_values={md.results.TransientSolution(11).SedimentHead,...
+	      md.results.TransientSolution(31).SedimentHead};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test900.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test900.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test900.py	(revision 27955)
@@ -0,0 +1,53 @@
+#Test Name: SquareNoDynUnConfinedHydroDC
+import numpy as np
+from model import *
+from setmask import *
+from triangle import triangle
+from parameterize import parameterize
+from solve import solve
+from socket import gethostname
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 100000.)
+md = setmask(md, '', '')
+#reduced square (20m long)
+md.mesh.x = md.mesh.x / 5.0e4
+md.mesh.y = md.mesh.y / 5.0e4
+md = parameterize(md, '../Par/SquareNoDyn.py')
+md.cluster = generic('name', gethostname(), 'np', 1)
+
+md.transient.ishydrology = True
+md.hydrology = hydrologydc()
+md.hydrology = md.hydrology.initialize(md)
+
+
+#Hydro Model Parameters
+md.hydrology.isefficientlayer = 0
+md.hydrology.sedimentlimit_flag = 0
+md.hydrology.mask_thawed_node = np.ones((md.mesh.numberofvertices))
+md.hydrology.rel_tol = 1.0e-6
+md.hydrology.penalty_lock = 0
+md.hydrology.max_iter = 200
+md.hydrology.transfer_flag = 0
+md.hydrology.unconfined_flag = 1
+#Sediment
+md.hydrology.sediment_porosity = 0.1
+md.hydrology.sediment_thickness = 10.0
+md.hydrology.sediment_transmitivity = (1.0e-3 * md.hydrology.sediment_thickness) * np.ones((md.mesh.numberofvertices))
+#init
+md.initialization.sediment_head = -5.0 * np.ones((md.mesh.numberofvertices))
+#BC
+md.hydrology.spcsediment_head = np.nan * np.ones((md.mesh.numberofvertices))
+md.hydrology.spcsediment_head[np.where(md.mesh.x == 0)] = 0.5
+
+md.timestepping.time_step = 5 / md.constants.yts  #5s steppin
+md.settings.output_frequency = 2
+md.timestepping.final_time = 300 / md.constants.yts  #500s run
+
+md = solve(md, 'Transient')
+
+#fields to track, results can also be found in
+#Wang 2009 Fig 6b (journal of Hydrology)
+field_names = ['SedimentWaterHead1', 'SedimentWaterHead2']
+field_tolerances = [1e-13, 1e-13]
+field_values = [md.results.TransientSolution[10].SedimentHead, md.results.TransientSolution[30].SedimentHead]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test901.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test901.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test901.m	(revision 27955)
@@ -0,0 +1,33 @@
+%Test Name: SquareNoDynHydrologyDCOneLayer
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareNoDyn.par');
+md.cluster=generic('name',oshostname(),'np',1);
+
+md.transient.ishydrology=1;
+md.hydrology=(hydrologydc);
+md.hydrology=initialize(md.hydrology,md);
+
+md.hydrology.isefficientlayer=0;
+md.hydrology.mask_thawed_node=ones(md.mesh.numberofvertices,1);
+md.hydrology.sedimentlimit_flag=1;
+md.hydrology.sedimentlimit=8000.0;
+
+md.initialization.sediment_head=0.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.spcsediment_head=NaN*ones(md.mesh.numberofvertices,1);
+pos=find(md.mesh.y==0);
+md.hydrology.spcsediment_head(pos)=0.0;
+md.basalforcings.groundedice_melting_rate = 2.0*ones(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate = 0.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.sediment_transmitivity=3*ones(md.mesh.numberofvertices,1);
+md.timestepping.time_step=0;
+md.timestepping.final_time=1.0;
+md=solve(md,'Hydrology');
+
+%Fields and tolerances to track changes
+%you can also compare with an analitic solution, but it is exact
+%only if no limits are applied
+%analitic=(md.mesh.y.^2-2*md.mesh.y*1.0e6)*(-2.0/(2*md.constants.yts*md.hydrology.sediment_transmitivity))
+field_names     ={'SedimentWaterHead','SedimentHeadResidual'};
+field_tolerances={1e-13, 3e-10};
+field_values={md.results.HydrologySolution.SedimentHead,md.results.HydrologySolution.SedimentHeadResidual};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test901.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test901.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test901.py	(revision 27955)
@@ -0,0 +1,42 @@
+#Test Name: SquareNoDynHydrologyDCOneLayer
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from solve import solve
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 100000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareNoDyn.py')
+md.cluster = generic('name', gethostname(), 'np', 1)
+
+md.transient.ishydrology = True
+md.hydrology = hydrologydc()
+md.hydrology = md.hydrology.initialize(md)
+
+md.hydrology.isefficientlayer = 0
+md.hydrology.mask_thawed_node = np.ones((md.mesh.numberofvertices))
+md.hydrology.sedimentlimit_flag = 1
+md.hydrology.sedimentlimit = 8000.0
+
+md.initialization.sediment_head = np.zeros((md.mesh.numberofvertices))
+md.hydrology.spcsediment_head = np.nan * np.ones((md.mesh.numberofvertices))
+pos = np.nonzero(md.mesh.y == 0.)[0]
+md.hydrology.spcsediment_head[pos] = 0.0
+md.basalforcings.groundedice_melting_rate = 2.0 * np.ones((md.mesh.numberofvertices))
+md.basalforcings.floatingice_melting_rate = 0.0 * np.ones((md.mesh.numberofvertices))
+md.hydrology.sediment_transmitivity = 3.0 * np.ones((md.mesh.numberofvertices))
+md.timestepping.time_step = 0
+md.timestepping.final_time = 1.0
+md = solve(md, 'Hydrology')
+
+#Fields and tolerances to track changes
+#you can also compare with an analitic solution, but it is exact
+#only if no limits are applied
+#analitic=(md.mesh.y**2 - 2 * md.mesh.y * 1.0e6) * (-2.0 / (2 * md.constants.yts * md.hydrology.sediment_transmitivity))
+field_names = ['SedimentWaterHead', 'SedimentHeadResidual']
+field_tolerances = [1e-13, 3e-10]
+field_values = [md.results.HydrologySolution.SedimentHead, md.results.HydrologySolution.SedimentHeadResidual]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test902.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test902.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test902.m	(revision 27955)
@@ -0,0 +1,75 @@
+%Test Name: SquareSheetHydrologyDCTwoLayers
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareNoDyn.par');
+md.cluster=generic('name',oshostname(),'np',1);
+
+md.transient.ishydrology=1;
+md.hydrology=(hydrologydc);
+md.hydrology=initialize(md.hydrology,md);
+
+md.hydrology.isefficientlayer=1;
+md.hydrology.sedimentlimit_flag=1;
+md.hydrology.sedimentlimit=800.0;
+md.hydrology.transfer_flag = 0;
+md.hydrology.mask_thawed_node=ones(md.mesh.numberofvertices,1);
+md.initialization.sediment_head=0.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.spcsediment_head=NaN*ones(md.mesh.numberofvertices,1);
+
+md.basalforcings.groundedice_melting_rate = 2.0*ones(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate = 0.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.sediment_transmitivity=3*ones(md.mesh.numberofvertices,1);
+
+md.initialization.epl_head=0.0*ones(md.mesh.numberofvertices,1);
+md.initialization.epl_thickness=1.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.spcepl_head=NaN*ones(md.mesh.numberofvertices,1);
+md.hydrology.mask_eplactive_node=0*ones(md.mesh.numberofvertices,1);
+md.hydrology.epl_conductivity=30;
+md.hydrology.epl_initial_thickness=1;
+md.hydrology.epl_colapse_thickness=1.0e-3;
+md.hydrology.epl_thick_comp=1;
+md.hydrology.epl_max_thickness=1;
+md.hydrology.steps_per_step=10;
+md.timestepping.time_step=2.0;
+md.timestepping.final_time=2.0;
+
+md=solve(md,'Transient');
+
+%re-run with no substeps
+mdfine=md;
+mdfine.results=struct();
+mdfine.hydrology.steps_per_step=1;
+mdfine.timestepping.time_step=0.2;
+mdfine=solve(mdfine,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'SedimentWaterHead1','EplWaterHead1','SedimentHeadResidual1',...
+                  'SedimentWaterHead4','EplWaterHead4','SedimentHeadResidual4',...
+                  'SedimentWaterHead5','EplWaterHead5','SedimentHeadResidual5',...
+                  'SedimentWaterHead9','EplWaterHead9','SedimentHeadResidual9',...
+                  'EplWaterHead10', 'EplWaterHeadSubstep10', 'SedimentWaterHead10',...
+		  'SedimentWaterHeadSubstep10'};
+field_tolerances={...
+    1e-13, 1e-13, 1e-13,...
+    1e-13, 1e-13, 1e-13,...
+    1e-13, 5e-12, 1e-11,...
+    1e-13, 5e-12, 1e-11,...
+    1e-13, 1e-13, 1e-13,...
+    1e-13};
+field_values={mdfine.results.TransientSolution(1).SedimentHead, ...
+	      mdfine.results.TransientSolution(1).EplHead,...
+	      mdfine.results.TransientSolution(1).SedimentHeadResidual,...
+	      mdfine.results.TransientSolution(4).SedimentHead,...
+	      mdfine.results.TransientSolution(4).EplHead,...
+	      mdfine.results.TransientSolution(4).SedimentHeadResidual, ...
+	      mdfine.results.TransientSolution(5).SedimentHead,...
+	      mdfine.results.TransientSolution(5).EplHead,...
+	      mdfine.results.TransientSolution(5).SedimentHeadResidual, ...
+	      mdfine.results.TransientSolution(9).SedimentHead,...
+	      mdfine.results.TransientSolution(9).EplHead,...
+	      mdfine.results.TransientSolution(9).SedimentHeadResidual,...
+              md.results.TransientSolution(1).EplHead,...
+              md.results.TransientSolution(1).EplHeadSubstep,...
+              md.results.TransientSolution(1).SedimentHead,...
+              md.results.TransientSolution(1).SedimentHeadSubstep
+              };
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test902.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test902.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test902.py	(revision 27955)
@@ -0,0 +1,81 @@
+#Test Name: SquareNoDynHydrolgyDCTwoLayers
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from solve import solve
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 100000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareNoDyn.py')
+md.cluster = generic('name', gethostname(), 'np', 1)
+
+md.transient.ishydrology = True
+md.hydrology = hydrologydc()
+md.hydrology = md.hydrology.initialize(md)
+
+md.hydrology.isefficientlayer = 1
+md.hydrology.sedimentlimit_flag = 1
+md.hydrology.sedimentlimit = 800.0
+md.hydrology.transfer_flag = 0
+md.hydrology.mask_thawed_node = np.ones((md.mesh.numberofvertices))
+md.initialization.sediment_head = np.zeros((md.mesh.numberofvertices))
+md.hydrology.spcsediment_head = np.nan * np.ones((md.mesh.numberofvertices))
+
+md.basalforcings.groundedice_melting_rate = 2.0 * np.ones((md.mesh.numberofvertices))
+md.basalforcings.floatingice_melting_rate = 0.0 * np.ones((md.mesh.numberofvertices))
+md.hydrology.sediment_transmitivity = 3.0 * np.ones((md.mesh.numberofvertices))
+
+md.initialization.epl_head = np.zeros((md.mesh.numberofvertices))
+md.initialization.epl_thickness = np.ones((md.mesh.numberofvertices))
+md.hydrology.spcepl_head = np.nan * np.ones((md.mesh.numberofvertices))
+md.hydrology.mask_eplactive_node = np.zeros((md.mesh.numberofvertices))
+md.hydrology.epl_conductivity = 30
+md.hydrology.epl_initial_thickness = 1
+md.hydrology.epl_colapse_thickness = 1.0e-3
+md.hydrology.epl_thick_comp = 1
+md.hydrology.epl_max_thickness = 1
+md.hydrology.steps_per_step = 10
+md.timestepping.time_step = 2.0
+md.timestepping.final_time = 2.0
+
+md = solve(md, 'Transient')
+
+#re-run with no substeps
+mdfine = copy.deepcopy(md)
+mdfine.results = []
+mdfine.hydrology.steps_per_step = 1
+mdfine.timestepping.time_step = 0.2
+mdfine = solve(mdfine, 'Transient')
+
+field_names = ['SedimentWaterHead1', 'EplWaterHead1', 'SedimentHeadResidual1',
+               'SedimentWaterHead4', 'EplWaterHead4', 'SedimentHeadResidual4',
+               'SedimentWaterHead5', 'EplWaterHead5', 'SedimentHeadResidual5',
+               'SedimentWaterHead9', 'EplWaterHead9', 'SedimentHeadResidual9',
+               'EplWaterHead10', 'EplWaterHeadSubstep10', 'SedimentWaterHead10',
+               'SedimentWaterHeadSubstep10']
+field_tolerances = [1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 5e-12, 1e-11,
+                    1e-13, 5e-12, 1e-11,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13]
+field_values = [mdfine.results.TransientSolution[0].SedimentHead,
+                mdfine.results.TransientSolution[0].EplHead,
+                mdfine.results.TransientSolution[0].SedimentHeadResidual,
+                mdfine.results.TransientSolution[3].SedimentHead,
+                mdfine.results.TransientSolution[3].EplHead,
+                mdfine.results.TransientSolution[3].SedimentHeadResidual,
+                mdfine.results.TransientSolution[4].SedimentHead,
+                mdfine.results.TransientSolution[4].EplHead,
+                mdfine.results.TransientSolution[4].SedimentHeadResidual,
+                mdfine.results.TransientSolution[8].SedimentHead,
+                mdfine.results.TransientSolution[8].EplHead,
+                mdfine.results.TransientSolution[8].SedimentHeadResidual,
+                md.results.TransientSolution[-1].EplHead,
+                md.results.TransientSolution[-1].EplHeadSubstep,
+                md.results.TransientSolution[-1].SedimentHead,
+                md.results.TransientSolution[-1].SedimentHeadSubstep]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test903.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test903.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test903.m	(revision 27955)
@@ -0,0 +1,35 @@
+%Test Name: SquareNoDynExtrudedHydrologyDCOneLayer
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareNoDyn.par');
+md.cluster=generic('name',oshostname(),'np',1);
+
+md.transient.ishydrology=1;
+md.hydrology=(hydrologydc);
+md.hydrology=initialize(md.hydrology,md);
+
+md.hydrology.isefficientlayer=0;
+md.hydrology.sedimentlimit_flag=1;
+md.hydrology.sedimentlimit=8000.0;
+md.hydrology.mask_thawed_node=ones(md.mesh.numberofvertices,1);
+md.initialization.sediment_head=0.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.spcsediment_head=NaN*ones(md.mesh.numberofvertices,1);
+pos=find(md.mesh.y==0);
+md.hydrology.spcsediment_head(pos)=0.0;
+
+md.basalforcings.groundedice_melting_rate = 2.0*ones(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate = 0.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.sediment_transmitivity= 3.0*ones(md.mesh.numberofvertices,1);
+
+md.timestepping.time_step=0;
+md.timestepping.final_time=1.0;
+md=extrude(md,3,1.1);
+md=solve(md,'Hydrology');
+
+%Fields and tolerances to track changes
+%you can also compare with an analitic solution, but it is exact
+%only if no limits are applied
+%analitic=(md.mesh.y.^2-2*md.mesh.y*1.0e6)*(-2.0/(2*md.constants.yts*md.hydrology.sediment_transmitivity))
+field_names     ={'SedimentWaterHead','SedimentHeadResidual'};
+field_tolerances={1e-13, 3e-10};
+field_values={md.results.HydrologySolution.SedimentHead,md.results.HydrologySolution.SedimentHeadResidual};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test903.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test903.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test903.py	(revision 27955)
@@ -0,0 +1,43 @@
+#Test Name: SquareNoDynExtrudedHydrologyDCOneLayer
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from solve import solve
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 100000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareNoDyn.py')
+md.cluster = generic('name', gethostname(), 'np', 1)
+
+md.transient.ishydrology = True
+md.hydrology = hydrologydc()
+md.hydrology = md.hydrology.initialize(md)
+
+md.hydrology.isefficientlayer = 0
+md.hydrology.sedimentlimit_flag = 1
+md.hydrology.sedimentlimit = 8000.0
+md.hydrology.mask_thawed_node = np.ones((md.mesh.numberofvertices))
+md.initialization.sediment_head = np.zeros((md.mesh.numberofvertices))
+md.hydrology.spcsediment_head = np.nan * np.ones((md.mesh.numberofvertices))
+md.hydrology.spcsediment_head[np.where(md.mesh.y == 0)] = 0.0
+
+md.basalforcings.groundedice_melting_rate = 2.0 * np.ones((md.mesh.numberofvertices))
+md.basalforcings.floatingice_melting_rate = 0.0 * np.ones((md.mesh.numberofvertices))
+md.hydrology.sediment_transmitivity = 3.0 * np.ones((md.mesh.numberofvertices))
+
+md.timestepping.time_step = 0
+md.timestepping.final_time = 1.0
+md.extrude(3, 1.)
+md = solve(md, 'Hydrology')
+
+#Fields and tolerances to track changes
+#you can also compare with an analitic solution, but it is exact
+#only if no limits are applied
+#analitic=(md.mesh.y.^2 - 2 * md.mesh.y * 1.0e6) * (-2.0 / (2 * md.constants.yts * md.hydrology.sediment_transmitivity))
+field_names = ['SedimentWaterHead', 'SedimentHeadResidual']
+field_tolerances = [1e-13, 3e-10]
+field_values = [md.results.HydrologySolution.SedimentHead, md.results.HydrologySolution.SedimentHeadResidual]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test904.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test904.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test904.m	(revision 27955)
@@ -0,0 +1,57 @@
+%Test Name: SquareNoDynExtrudedHydrologyDCTwoLayers
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareNoDyn.par');
+md.cluster=generic('name',oshostname(),'np',1);
+
+md.transient.ishydrology=1;
+md.hydrology=(hydrologydc);
+md.hydrology=initialize(md.hydrology,md);
+
+md.hydrology.isefficientlayer=1;
+md.hydrology.sedimentlimit_flag=1;
+md.hydrology.transfer_flag = 0;
+md.hydrology.sedimentlimit=800.0;
+md.hydrology.mask_thawed_node=ones(md.mesh.numberofvertices,1);
+md.initialization.sediment_head=0.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.spcsediment_head=NaN*ones(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate = 2.0*ones(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate = 0.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.sediment_transmitivity=3*ones(md.mesh.numberofvertices,1);
+
+md.initialization.epl_head=0.0*ones(md.mesh.numberofvertices,1);
+md.initialization.epl_thickness=1.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.spcepl_head=NaN*ones(md.mesh.numberofvertices,1);
+md.hydrology.mask_eplactive_node=0*ones(md.mesh.numberofvertices,1);
+md.hydrology.epl_conductivity=30;
+md.hydrology.epl_initial_thickness=1;
+md.hydrology.epl_colapse_thickness=1.0e-3;
+md.hydrology.epl_thick_comp=1;
+md.hydrology.epl_max_thickness=1;
+md.timestepping.time_step=0.2;
+md.timestepping.final_time=2.0;
+
+md=extrude(md,3,1.);
+md=solve(md,'Transient');
+
+%Fields and tolerances to track changes
+field_names     ={'SedimentWaterHead1','EplWaterHead1','SedimentHeadResidual1',...
+		  'SedimentWaterHead4','EplWaterHead4','SedimentHeadResidual4',...
+		  'SedimentWaterHead5','EplWaterHead5','SedimentHeadResidual5',...
+		  'SedimentWaterHead9','EplWaterHead9','SedimentHeadResidual9'};
+field_tolerances={1e-13, 1e-13, 1e-13,...
+		  1e-13, 1e-13, 1e-13,...
+		  1e-13, 5e-12, 2e-11,...
+		  1e-13, 5e-12, 2e-11};
+field_values={md.results.TransientSolution(1).SedimentHead, ...
+	      md.results.TransientSolution(1).EplHead,...
+	      md.results.TransientSolution(1).SedimentHeadResidual,...
+	      md.results.TransientSolution(4).SedimentHead,...
+	      md.results.TransientSolution(4).EplHead,...
+	      md.results.TransientSolution(4).SedimentHeadResidual, ...
+	      md.results.TransientSolution(5).SedimentHead,...
+	      md.results.TransientSolution(5).EplHead,...
+	      md.results.TransientSolution(5).SedimentHeadResidual, ...
+	      md.results.TransientSolution(9).SedimentHead,...
+	      md.results.TransientSolution(9).EplHead,...
+	      md.results.TransientSolution(9).SedimentHeadResidual};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test904.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test904.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test904.py	(revision 27955)
@@ -0,0 +1,66 @@
+#Test Name: SquareNoDynExtrudedHydrologyDCTwoLayers
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from solve import solve
+from generic import generic
+
+md = triangle(model(), '../Exp/Square.exp', 100000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareNoDyn.py')
+md.cluster = generic('name', gethostname(), 'np', 1)
+
+md.transient.ishydrology = True
+md.hydrology = hydrologydc()
+md.hydrology = md.hydrology.initialize(md)
+
+md.hydrology.isefficientlayer = 1
+md.hydrology.sedimentlimit_flag = 1
+md.hydrology.transfer_flag = 0
+md.hydrology.sedimentlimit = 800.0
+md.hydrology.mask_thawed_node = np.ones((md.mesh.numberofvertices))
+md.initialization.sediment_head = np.zeros((md.mesh.numberofvertices))
+md.hydrology.spcsediment_head = np.nan * np.ones((md.mesh.numberofvertices))
+md.basalforcings.groundedice_melting_rate = 2.0 * np.ones((md.mesh.numberofvertices))
+md.basalforcings.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices))
+md.hydrology.sediment_transmitivity = 3 * np.ones((md.mesh.numberofvertices))
+
+md.initialization.epl_head = np.zeros((md.mesh.numberofvertices))
+md.initialization.epl_thickness = np.ones((md.mesh.numberofvertices))
+md.hydrology.spcepl_head = np.nan * np.ones((md.mesh.numberofvertices))
+md.hydrology.mask_eplactive_node = np.zeros((md.mesh.numberofvertices))
+md.hydrology.epl_conductivity = 30
+md.hydrology.epl_initial_thickness = 1
+md.hydrology.epl_colapse_thickness = 1.0e-3
+md.hydrology.epl_thick_comp = 1
+md.hydrology.epl_max_thickness = 1
+md.timestepping.time_step = 0.2
+md.timestepping.final_time = 2.0
+
+md.extrude(3, 1.)
+md = solve(md, 'Transient')
+
+#Fields and tolerances to track changes
+field_names = ['SedimentWaterHead1', 'EplWaterHead1', 'SedimentHeadResidual1',
+               'SedimentWaterHead4', 'EplWaterHead4', 'SedimentHeadResidual4',
+               'SedimentWaterHead5', 'EplWaterHead5', 'SedimentHeadResidual5',
+               'SedimentWaterHead9', 'EplWaterHead9', 'SedimentHeadResidual9']
+field_tolerances = [1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 5e-12, 2e-11,
+                    1e-13, 5e-12, 2e-11]
+field_values = [md.results.TransientSolution[0].SedimentHead,
+                md.results.TransientSolution[0].EplHead,
+                md.results.TransientSolution[0].SedimentHeadResidual,
+                md.results.TransientSolution[3].SedimentHead,
+                md.results.TransientSolution[3].EplHead,
+                md.results.TransientSolution[3].SedimentHeadResidual,
+                md.results.TransientSolution[4].SedimentHead,
+                md.results.TransientSolution[4].EplHead,
+                md.results.TransientSolution[4].SedimentHeadResidual,
+                md.results.TransientSolution[8].SedimentHead,
+                md.results.TransientSolution[8].EplHead,
+                md.results.TransientSolution[8].SedimentHeadResidual]
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test905.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test905.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test905.m	(revision 27955)
@@ -0,0 +1,84 @@
+%Test Name: SquareNoDynHydrologyDCSmbCoupled
+md=triangle(model(),'../Exp/Square.exp',100000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareNoDyn.par');
+md.cluster = generic('name',oshostname(),'np',1);
+
+md.transient.ishydrology=1;
+md.transient.issmb=1;
+md.hydrology=(hydrologydc);
+md.hydrology=initialize(md.hydrology,md);
+md.smb=(SMBgradientscomponents);
+
+md.hydrology.isefficientlayer=1;
+
+md.hydrology.sedimentlimit_flag=1;
+md.hydrology.sedimentlimit=400.0;
+md.hydrology.sediment_transmitivity=3.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.mask_thawed_node=ones(md.mesh.numberofvertices,1);
+
+md.hydrology.mask_eplactive_node=zeros(md.mesh.numberofvertices,1);
+md.hydrology.epl_conductivity=3.;
+md.hydrology.epl_initial_thickness=20;
+md.hydrology.epl_colapse_thickness=1.0e-3;
+md.hydrology.epl_thick_comp=0;
+md.hydrology.epl_max_thickness=1;
+
+md.hydrology.spcsediment_head=NaN*ones(md.mesh.numberofvertices,1);
+md.hydrology.spcepl_head=NaN*ones(md.mesh.numberofvertices,1);
+
+md.initialization.sediment_head=zeros(md.mesh.numberofvertices,1);
+md.initialization.epl_head=zeros(md.mesh.numberofvertices,1);
+md.initialization.epl_thickness=ones(md.mesh.numberofvertices,1);
+
+md.hydrology.steps_per_step=5;
+md.smb.steps_per_step=10;
+md.timestepping.time_step=1.;
+md.timestepping.final_time=20.0;
+
+smb_step=md.timestepping.time_step/md.smb.steps_per_step;
+duration=[md.timestepping.start_time:smb_step:md.timestepping.final_time];
+
+ddf=10.0e-3;
+md.smb.accuref=[[0.5 0.5];[md.timestepping.start_time md.timestepping.final_time]];
+md.smb.accualti=0.0;
+md.smb.accugrad=[[0. 0.];[md.timestepping.start_time md.timestepping.final_time]];
+
+md.smb.runoffref=0.9*duration*ddf;
+md.smb.runoffref=[md.smb.runoffref;duration];
+md.smb.runoffalti=0.0;
+md.smb.runoffgrad=[[-6.5e-3*ddf -6.5e-3*ddf];[md.timestepping.start_time md.timestepping.final_time]];  %lapse rate *ddf*day per year
+
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+
+md=solve(md,'Transient');
+
+field_names={'SedimentWaterHead1','EplWaterHead1','SedimentHeadResidual1',...
+	     'SedimentWaterHead4','EplWaterHead4','SedimentHeadResidual4',...
+	     'SedimentWaterHead5','EplWaterHead5','SedimentHeadResidual5',...
+	     'SedimentWaterHead9','EplWaterHead9','SedimentHeadResidual9',...
+	     'EplWaterHead20','EplWaterHeadSubstep20','SedimentWaterHead20',...
+	     'SedimentWaterHeadSubstep20'};
+field_tolerances={1e-13,1e-13,1e-13,...
+		  1e-13,1e-13,1e-13,...
+		  1e-13,5e-12,1e-11,...
+		  1e-13,5e-12,1e-11,...
+		  1e-13,1e-13,1e-13,...
+		  1e-13};
+field_values={md.results.TransientSolution(1).SedimentHead,...
+	      md.results.TransientSolution(1).EplHead,...
+	      md.results.TransientSolution(1).SedimentHeadResidual,...
+	      md.results.TransientSolution(4).SedimentHead,...
+	      md.results.TransientSolution(4).EplHead,...
+	      md.results.TransientSolution(4).SedimentHeadResidual,...
+	      md.results.TransientSolution(5).SedimentHead,...
+	      md.results.TransientSolution(5).EplHead,...
+	      md.results.TransientSolution(5).SedimentHeadResidual,...
+	      md.results.TransientSolution(9).SedimentHead,...
+	      md.results.TransientSolution(9).EplHead,...
+	      md.results.TransientSolution(9).SedimentHeadResidual,...
+	      md.results.TransientSolution(end).EplHead,...
+	      md.results.TransientSolution(end).EplHeadSubstep,...
+	      md.results.TransientSolution(end).SedimentHead,...
+	      md.results.TransientSolution(end).SedimentHeadSubstep};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test905.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test905.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test905.py	(revision 27955)
@@ -0,0 +1,185 @@
+#Test Name: SquareNoDynHydrologyDCSmbCoupled
+import numpy as np
+from model import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from solve import solve
+from generic import generic
+from SMBgradientscomponents import SMBgradientscomponents
+
+md = triangle(model(), '../Exp/Square.exp', 100000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareNoDyn.py')
+md.cluster = generic('name', gethostname(), 'np', 1)
+
+md.transient.ishydrology = True
+md.transient.issmb = True
+md.hydrology = hydrologydc()
+md.hydrology = md.hydrology.initialize(md)
+md.smb = SMBgradientscomponents()
+
+md.hydrology.isefficientlayer = 1
+
+md.hydrology.sedimentlimit_flag = 1
+md.hydrology.sedimentlimit = 400.0
+md.hydrology.sediment_transmitivity = 3.0 * np.ones((md.mesh.numberofvertices))
+md.hydrology.mask_thawed_node = np.ones((md.mesh.numberofvertices))
+
+md.hydrology.mask_eplactive_node = np.zeros((md.mesh.numberofvertices))
+md.hydrology.epl_conductivity = 3.
+md.hydrology.epl_initial_thickness = 20
+md.hydrology.epl_colapse_thickness = 1.0e-3
+md.hydrology.epl_thick_comp = 0
+md.hydrology.epl_max_thickness = 1
+
+md.hydrology.spcsediment_head = np.nan * np.ones((md.mesh.numberofvertices))
+md.hydrology.spcepl_head = np.nan * np.ones((md.mesh.numberofvertices))
+
+md.initialization.sediment_head = np.zeros((md.mesh.numberofvertices))
+md.initialization.epl_head = np.zeros((md.mesh.numberofvertices))
+md.initialization.epl_thickness = np.ones((md.mesh.numberofvertices))
+
+#try to keep the different steps as common multipliers of eachother
+#for the sake of precision the values of the model used as input should be on a shorter time-step-
+#you can plot the results of this test and check how the time stepping is doing (see bellow)
+md.hydrology.steps_per_step = 5
+md.smb.steps_per_step = 10  #md.hydrology.steps_per_step
+md.timestepping.time_step = 1.
+md.timestepping.final_time = 20.0
+
+smb_step = md.timestepping.time_step / md.smb.steps_per_step
+hydro_step = md.timestepping.time_step / md.hydrology.steps_per_step
+duration = np.arange(md.timestepping.start_time, md.timestepping.final_time + smb_step, smb_step)
+
+ddf = 10.0e-3
+md.smb.accuref = np.array([[0.5, 0.5], [md.timestepping.start_time, md.timestepping.final_time]])
+md.smb.accualti = 0.0
+md.smb.accugrad = np.array([[0., 0.], [md.timestepping.start_time, md.timestepping.final_time]])
+
+#md.smb.runoffref = 9. * ddf * np.ones(np.shape(duration))  #constant input for testing
+md.smb.runoffref = 0.9 * duration * ddf
+md.smb.runoffref = np.vstack((md.smb.runoffref, duration))
+md.smb.runoffalti = 0.0
+md.smb.runoffgrad = np.array([[-6.5e-3 * ddf, -6.5e-3 * ddf], [md.timestepping.start_time, md.timestepping.final_time]])  #lapse rate *ddf*day per year
+
+md.basalforcings.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices))
+md.basalforcings.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices))
+
+md = solve(md, 'Transient')
+field_names = ['SedimentWaterHead1', 'EplWaterHead1', 'SedimentHeadResidual1',
+               'SedimentWaterHead4', 'EplWaterHead4', 'SedimentHeadResidual4',
+               'SedimentWaterHead5', 'EplWaterHead5', 'SedimentHeadResidual5',
+               'SedimentWaterHead9', 'EplWaterHead9', 'SedimentHeadResidual9',
+               'EplWaterHead20', 'EplWaterHeadSubstep20', 'SedimentWaterHead20',
+               'SedimentWaterHeadSubstep20']
+field_tolerances = [1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13, 5e-12, 1e-11,
+                    1e-13, 5e-12, 1e-11,
+                    1e-13, 1e-13, 1e-13,
+                    1e-13]
+field_values = [md.results.TransientSolution[0].SedimentHead,
+                md.results.TransientSolution[0].EplHead,
+                md.results.TransientSolution[0].SedimentHeadResidual,
+                md.results.TransientSolution[3].SedimentHead,
+                md.results.TransientSolution[3].EplHead,
+                md.results.TransientSolution[3].SedimentHeadResidual,
+                md.results.TransientSolution[4].SedimentHead,
+                md.results.TransientSolution[4].EplHead,
+                md.results.TransientSolution[4].SedimentHeadResidual,
+                md.results.TransientSolution[8].SedimentHead,
+                md.results.TransientSolution[8].EplHead,
+                md.results.TransientSolution[8].SedimentHeadResidual,
+                md.results.TransientSolution[-1].EplHead,
+                md.results.TransientSolution[-1].EplHeadSubstep,
+                md.results.TransientSolution[-1].SedimentHead,
+                md.results.TransientSolution[-1].SedimentHeadSubstep]
+
+
+#===Stepping and plotting reference
+# import matplotlib as mpl
+# import matplotlib.pyplot as plt
+
+# agregatedInput = np.zeros(len(md.results.TransientSolution))
+# agregatedInputSub = np.zeros(len(md.results.TransientSolution))
+# RefInput = np.zeros(len(md.results.TransientSolution))
+# RefInputSub = np.zeros(len(md.results.TransientSolution))
+# Input = np.zeros(len(md.results.TransientSolution))
+# InputSub = np.zeros(len(md.results.TransientSolution))
+# SedVol = np.zeros(len(md.results.TransientSolution))
+# SedVolSub = np.zeros(len(md.results.TransientSolution))
+# EplVol = np.zeros(len(md.results.TransientSolution))
+# EplVolSub = np.zeros(len(md.results.TransientSolution))
+# SmbTimer = np.zeros(len(md.results.TransientSolution))
+# HydroTimer = np.zeros(len(md.results.TransientSolution))
+# TimerSub = np.zeros(len(md.results.TransientSolution))
+# HeadEVol = np.zeros(len(md.results.TransientSolution))
+# sedstore = md.materials.rho_freshwater * md.constants.g * md.hydrology.sediment_porosity * md.hydrology.sediment_thickness * ((md.hydrology.sediment_compressibility / md.hydrology.sediment_porosity) + md.hydrology.water_compressibility)
+# eplstore = md.materials.rho_freshwater * md.constants.g * md.hydrology.sediment_porosity * ((md.hydrology.sediment_compressibility / md.hydrology.sediment_porosity) + md.hydrology.water_compressibility)
+
+# for i, res in enumerate(md.results.TransientSolution):
+
+#     TimerSub[i] = res.time
+#     RefInputSub[i] = max(0, res.time * 0.9 * ddf + (-6.5e-3 * 1000 * ddf))
+#     try:
+#         InputSub[i] = np.nanmean(res.SmbRunoffSubstep)
+#         SedVolSub[i] = np.nanmean(res.SedimentHeadSubstep) * sedstore
+#         EplVolSub[i] = np.nanmean(res.EplHeadSubstep) * eplstore * np.nanmean(res.HydrologydcEplThicknessSubstep)
+#         substep = True
+#         if i > 0:
+#             agregatedInputSub[i:] += 0.5 * ((1 + smb_step) * np.nanmean(res.SmbRunoffSubstep) + (1 - smb_step) * np.nanmean(md.results.TransientSolution[i - 1].SmbRunoffSubstep)) * (TimerSub[i] - TimerSub[i - 1])
+#         else:
+#             agregatedInputSub[i:] += np.nanmean(res.SmbRunoffSubstep) * TimerSub[i]
+
+#     except AttributeError:
+#         substep = False
+#     SmbTimer[i] = res.time - (0.5 * md.timestepping.time_step * (1 - smb_step))
+#     HydroTimer[i] = res.time - (0.5 * md.timestepping.time_step * (1 - hydro_step))
+
+#     RefInput[i] = max(0, (SmbTimer[i] * 0.9 * ddf + (-6.5e-3 * 1000 * ddf)))
+#     Input[i] = np.nanmean(res.SmbRunoff)
+#     SedVol[i] = np.nanmean(res.SedimentHead) * sedstore
+#     EplVol[i] = np.nanmean(res.EplHead) * eplstore * np.nanmean(res.HydrologydcEplThickness)
+#     if i > 0:
+#         agregatedInput[i:] += 0.5 * ((1 + hydro_step) * np.nanmean(res.SmbRunoff) + (1 - hydro_step) * np.nanmean(md.results.TransientSolution[i - 1].SmbRunoff)) * (SmbTimer[i] - SmbTimer[i - 1])
+#     else:
+#         agregatedInput[i:] += np.nanmean(res.SmbRunoff) * SmbTimer[i]
+
+
+# layout, ax = plt.subplots(2, 2, sharex=True, sharey=False, figsize=(10, 10))
+
+# DiffTimer = (TimerSub[:-1] + 0.5 * (smb_step + hydro_step))
+# Indiff = (DiffTimer) * 0.9 * ddf + (-6.5e-3 * 1000 * ddf)
+# Indiff[np.where(Indiff < 0)] = 0
+
+# ax[0, 0].plot(SmbTimer, RefInput - Input, 'g+')
+# ax[0, 0].plot(DiffTimer, (Indiff - np.diff((SedVol+EplVol)) / md.timestepping.time_step), 'kx')
+
+# ax[0, 1].plot(SmbTimer, RefInput, 'm+')
+# ax[0, 1].plot(SmbTimer, Input, 'g+')
+# ax[0, 1].plot(DiffTimer, np.diff(SedVol+EplVol) / md.timestepping.time_step, 'r')
+
+# ax[1, 0].plot(HydroTimer, (agregatedInput - SedVol - EplVol), 'b+')
+
+# ax[1, 1].plot(HydroTimer, SedVol + EplVol, 'r+')
+# ax[1, 1].plot(SmbTimer, agregatedInput, 'b+')
+
+# if substep:
+#     SubDiffTimer = (SmbTimer[1:])
+#     SubIndiff = (SubDiffTimer) * 0.9 * ddf + (-6.5e-3 * 1000 * ddf)
+#     SubIndiff[np.where(SubIndiff < 0)] = 0
+
+#     ax[0, 0].plot(TimerSub, RefInputSub - InputSub, 'm')
+#     ax[0, 0].plot(SubDiffTimer, (SubIndiff - np.diff(SedVolSub + EplVolSub) / md.timestepping.time_step), 'y')
+
+#     ax[0, 1].plot(TimerSub, RefInputSub, 'm')
+#     ax[0, 1].plot(TimerSub, InputSub, 'g')
+
+#     ax[1, 0].plot(TimerSub, (agregatedInputSub - SedVolSub - EplVolSub), 'r')
+
+#     ax[1, 1].plot(TimerSub, SedVolSub + EplVolSub, 'r')
+#     ax[1, 1].plot(TimerSub, SedVolSub, 'r', alpha=0.5)
+#     ax[1, 1].plot(TimerSub, EplVolSub, 'r', alpha=0.5)
+#     ax[1, 1].plot(TimerSub, agregatedInputSub, 'b')
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test906.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test906.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test906.m	(revision 27955)
@@ -0,0 +1,86 @@
+%Test Name: SquareNoDynHydrologyDCtimeadapt
+md=triangle(model(), '../Exp/Square.exp', 200000.);
+md=setmask(md, '', '');
+md=parameterize(md, '../Par/SquareNoDyn.par');
+md.cluster=generic('name', oshostname(), 'np', 1);
+
+md.transient=deactivateall(md.transient);
+md.transient.ishydrology=1;
+md.hydrology=(hydrologydc);
+md.hydrology=initialize(md.hydrology,md);
+
+%Hydro Model Parameters
+md.hydrology.isefficientlayer=1;
+md.hydrology.sedimentlimit_flag=1;
+md.hydrology.sedimentlimit=500;
+md.hydrology.rel_tol=1.0e-6;
+md.hydrology.penalty_lock=10;
+md.hydrology.max_iter=100;
+md.hydrology.transfer_flag=1;
+md.hydrology.unconfined_flag=0;
+md.hydrology.leakage_factor=5.0e-10;
+md.hydrology.mask_thawed_node=ones(md.mesh.numberofvertices,1);
+
+%Sediment Parameters
+md.hydrology.sediment_porosity=0.4;
+md.hydrology.sediment_transmitivity=3.0*ones(md.mesh.numberofvertices,1);
+md.hydrology.sediment_thickness=10.;
+
+%Epl Parameters
+md.hydrology.mask_eplactive_node=zeros(md.mesh.numberofvertices,1);
+md.hydrology.epl_conductivity=30.;
+md.hydrology.epl_initial_thickness=1.0;
+md.hydrology.epl_colapse_thickness=1.0e-3;
+md.hydrology.epl_thick_comp=0;
+md.hydrology.epl_max_thickness=10;
+md.hydrology.eplflip_lock=0;
+
+%Initialisation
+md.initialization.sediment_head=md.geometry.base;
+md.initialization.epl_head=md.geometry.base;
+md.initialization.epl_thickness=ones(md.mesh.numberofvertices,1);
+
+%Boundary conditions
+md.hydrology.spcsediment_head=NaN*ones(md.mesh.numberofvertices,1);
+md.hydrology.spcepl_head=NaN*ones(md.mesh.numberofvertices,1);
+
+%Forcing
+stepping=3600./md.constants.yts;
+endtime=0.3;
+times=[0.:stepping:endtime];
+input=find(abs(times-0.3) > 0.2);
+inputval=times*0+100;
+inputval(input)=0;
+
+%basal forcing inputval
+md.basalforcings.groundedice_melting_rate=repmat(inputval,md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate=[[md.basalforcings.groundedice_melting_rate];[times]];
+
+%Time
+md.timestepping.final_time=endtime;
+md.settings.output_frequency=1.0;
+
+md.timestepping.average_forcing=1;
+md.hydrology.step_adapt=1;
+md.hydrology.steps_per_step=1;
+md.timestepping.time_step=0.1;
+
+
+md=solve(md, 'Transient');
+
+field_names={'SedimentWaterHead2', 'EplWaterHead2', 'SedimentHeadResidual2',...
+	     'SedimentHeadSubstep2', 'EplHeadSubstep2', 'HydrologySubsteps2', 'HydrologySubTime2',...
+	     'SedimentWaterHead3', 'EplWaterHead3', 'SedimentHeadResidual3'};
+field_tolerances={1e-13, 1e-13, 1e-13,...
+		  1e-13, 1e-13, 1e-13, 1e-13,...
+		  1e-13, 1e-13, 1e-13};
+field_values={md.results.TransientSolution(2).SedimentHead,...
+	      md.results.TransientSolution(2).EplHead,...
+	      md.results.TransientSolution(2).SedimentHeadResidual,...
+	      md.results.TransientSolution(2).SedimentHeadSubstep,...
+	      md.results.TransientSolution(2).EplHeadSubstep,...
+	      md.results.TransientSolution(2).HydrologySubsteps,...
+	      md.results.TransientSolution(2).HydrologySubTime,...
+	      md.results.TransientSolution(3).SedimentHead,...
+	      md.results.TransientSolution(3).EplHead,...
+	      md.results.TransientSolution(3).SedimentHeadResidual};
Index: /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test906.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test906.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/NightlyRun/test906.py	(revision 27955)
@@ -0,0 +1,93 @@
+#Test Name: SquareNoDynHydrologyDCtimeadapt
+import numpy as np
+from model import *
+from solve import *
+from socket import gethostname
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+
+md = triangle(model(), '../Exp/Square.exp', 200000.)
+md = setmask(md, '', '')
+md = parameterize(md, '../Par/SquareNoDyn.py')
+
+md.transient = transient.deactivateall(md.transient)
+md.transient.ishydrology = True
+md.hydrology = hydrologydc()
+md.hydrology = md.hydrology.initialize(md)
+
+#Hydro Model Parameters
+md.hydrology.isefficientlayer = 1
+md.hydrology.sedimentlimit_flag = 1
+md.hydrology.sedimentlimit = 500
+md.hydrology.rel_tol = 1.0e-6
+md.hydrology.penalty_lock = 10
+md.hydrology.max_iter = 100
+md.hydrology.transfer_flag = 1
+md.hydrology.unconfined_flag = 0
+md.hydrology.leakage_factor = 5.0e-10
+md.hydrology.mask_thawed_node = np.ones((md.mesh.numberofvertices))
+
+#Sediment Parameters
+md.hydrology.sediment_porosity = 0.4
+md.hydrology.sediment_transmitivity = 3.0 * np.ones((md.mesh.numberofvertices))
+md.hydrology.sediment_thickness = 10.
+
+#Epl Parameters
+md.hydrology.mask_eplactive_node = np.zeros((md.mesh.numberofvertices))
+md.hydrology.epl_conductivity = 30.
+md.hydrology.epl_initial_thickness = 1.0
+md.hydrology.epl_colapse_thickness = 1.0e-3
+md.hydrology.epl_thick_comp = 0
+md.hydrology.epl_max_thickness = 10
+md.hydrology.eplflip_lock = 0
+
+#Initialisation
+md.initialization.sediment_head = md.geometry.base
+md.initialization.epl_head = md.geometry.base
+md.initialization.epl_thickness = np.ones((md.mesh.numberofvertices))
+
+#Boundary conditions
+front = np.where(md.mesh.x == 0)[0]
+md.hydrology.spcsediment_head = np.nan * np.ones((md.mesh.numberofvertices))
+md.hydrology.spcepl_head = np.nan * np.ones((md.mesh.numberofvertices))
+
+#Forcing
+stepping = 3600. / md.constants.yts  #hourly forcing
+endtime = 0.3
+times = np.arange(0., endtime + stepping, stepping)
+inputval = np.where(np.abs(times - 0.3) > 0.2, 0, 100.0)
+
+#basal forcing inputval
+md.basalforcings.groundedice_melting_rate = np.outer(np.ones((md.mesh.numberofvertices)), inputval)
+md.basalforcings.groundedice_melting_rate = np.append(md.basalforcings.groundedice_melting_rate, [times], axis=0)
+
+#Time
+md.timestepping.final_time = endtime
+md.settings.output_frequency = 1.0
+
+md.timestepping.average_forcing = 1
+md.hydrology.step_adapt = 1
+md.hydrology.steps_per_step = 1
+md.timestepping.time_step = 0.1
+md.debug.valgrind = False
+
+md.cluster = generic('name', gethostname(), 'np', 1)
+md = solve(md, 'Transient')
+
+field_names = ['SedimentWaterHead2', 'EplWaterHead2', 'SedimentHeadResidual2',
+               'SedimentHeadSubstep2', 'EplHeadSubstep2', 'HydrologySubsteps2', 'HydrologySubTime2',
+               'SedimentWaterHead3', 'EplWaterHead3', 'SedimentHeadResidual3']
+field_tolerances = [1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13, 1e-13,
+                    1e-13, 1e-13, 1e-13]
+field_values = [md.results.TransientSolution[1].SedimentHead,
+                md.results.TransientSolution[1].EplHead,
+                md.results.TransientSolution[1].SedimentHeadResidual,
+                md.results.TransientSolution[1].SedimentHeadSubstep,
+                md.results.TransientSolution[1].EplHeadSubstep,
+                md.results.TransientSolution[1].HydrologySubsteps,
+                md.results.TransientSolution[1].HydrologySubTime,
+                md.results.TransientSolution[2].SedimentHead,
+                md.results.TransientSolution[2].EplHead,
+                md.results.TransientSolution[2].SedimentHeadResidual]
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/79North.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/79North.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/79North.par	(revision 27955)
@@ -0,0 +1,63 @@
+%Start defining model parameters here
+
+%Geometry and observation
+x = archread('../Data/79North.arch','x');
+y = archread('../Data/79North.arch','y');
+vx = archread('../Data/79North.arch','vx');
+vy = archread('../Data/79North.arch','vy');
+index = archread('../Data/79North.arch','index');
+surface = archread('../Data/79North.arch','surface');
+thickness = archread('../Data/79North.arch','thickness');
+x = x{1};
+y = y{1};
+vx = vx{1};
+vy = vy{1};
+index = index{1};
+surface = surface{1};
+thickness = thickness{1};
+md.initialization.vx =InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+md.initialization.vy =InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+md.geometry.surface  =InterpFromMeshToMesh2d(index,x,y,surface,md.mesh.x,md.mesh.y);
+md.geometry.thickness=InterpFromMeshToMesh2d(index,x,y,thickness,md.mesh.x,md.mesh.y);
+md.geometry.base=md.geometry.surface-md.geometry.thickness;
+clear surface thickness vx vy x y index;
+
+%Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+%Friction
+md.friction.coefficient=50.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Ice shelf melting and surface mass balance 
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate(find(md.mask.ocean_levelset<0.))=0.;
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.smb.mass_balance=15.*ones(md.mesh.numberofvertices,1);
+
+%Numerical parameters
+md.masstransport.stabilization=1;
+md.thermal.stabilization=1;
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.timestepping.time_step=1.;
+md.timestepping.final_time=3.;
+md.stressbalance.restol=0.05;
+md.stressbalance.reltol=0.005;
+md.steadystate.reltol=0.005;
+md.stressbalance.abstol=NaN;
+md.groundingline.migration='None';
+
+%Boundary conditions:
+md=SetMarineIceSheetBC(md);
+pos=find(md.mesh.vertexonboundary);
+md.balancethickness.spcthickness(pos)=md.geometry.thickness(pos);
+md.masstransport.spcthickness(pos)=md.geometry.thickness(pos);
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/79North.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/79North.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/79North.py	(revision 27955)
@@ -0,0 +1,66 @@
+import os.path
+import inspect
+from arch import *
+import numpy
+from verbose import verbose
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from paterson import paterson
+from SetMarineIceSheetBC import SetMarineIceSheetBC
+
+#Start defining model parameters here
+
+#Geometry and observation
+x = numpy.array(archread('../Data/79North.arch', 'x'))
+y = numpy.array(archread('../Data/79North.arch', 'y'))
+vx = numpy.array(archread('../Data/79North.arch', 'vx'))
+vy = numpy.array(archread('../Data/79North.arch', 'vy'))
+index = numpy.array(archread('../Data/79North.arch', 'index')).astype(int)
+surface = numpy.array(archread('../Data/79North.arch', 'surface'))
+thickness = numpy.array(archread('../Data/79North.arch', 'thickness'))
+
+md.initialization.vx = InterpFromMeshToMesh2d(index, x, y, vx, md.mesh.x, md.mesh.y)[:, 0]
+md.initialization.vy = InterpFromMeshToMesh2d(index, x, y, vy, md.mesh.x, md.mesh.y)[:, 0]
+md.geometry.surface = InterpFromMeshToMesh2d(index, x, y, surface, md.mesh.x, md.mesh.y)[:, 0]
+md.geometry.thickness = InterpFromMeshToMesh2d(index, x, y, thickness, md.mesh.x, md.mesh.y)[:, 0]
+md.geometry.base = md.geometry.surface - md.geometry.thickness
+
+#Materials
+md.initialization.temperature = (273. - 20.) * numpy.ones((md.mesh.numberofvertices))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3. * numpy.ones((md.mesh.numberofelements))
+md.initialization.temperature = md.initialization.temperature
+
+#Friction
+md.friction.coefficient = 50. * numpy.ones((md.mesh.numberofvertices))
+md.friction.coefficient[numpy.nonzero(md.mask.ocean_levelset < 0.)[0]] = 0.
+md.friction.p = numpy.ones((md.mesh.numberofelements))
+md.friction.q = numpy.ones((md.mesh.numberofelements))
+
+#Ice shelf melting and surface mass balance
+md.basalforcings.floatingice_melting_rate = numpy.zeros((md.mesh.numberofvertices))
+md.basalforcings.floatingice_melting_rate[numpy.nonzero(md.mask.ocean_levelset < 0.)[0]] = 0.
+md.basalforcings.groundedice_melting_rate = numpy.zeros((md.mesh.numberofvertices))
+md.smb.mass_balance = 15 * numpy.ones((md.mesh.numberofvertices))
+
+#Numerical parameters
+md.masstransport.stabilization = 1
+md.thermal.stabilization = 1
+md.verbose = verbose(0)
+md.settings.waitonlock = 30
+md.timestepping.time_step = 1.
+md.timestepping.final_time = 3.
+md.stressbalance.restol = 0.05
+md.stressbalance.reltol = 0.005
+md.steadystate.reltol = 0.005
+md.stressbalance.abstol = float('NaN')
+md.groundingline.migration = 'None'
+
+#Boundary conditions:
+md = SetMarineIceSheetBC(md)
+pos = numpy.nonzero(md.mesh.vertexonboundary)
+md.balancethickness.spcthickness[pos] = md.geometry.thickness[pos]
+md.masstransport.spcthickness[pos] = md.geometry.thickness[pos]
+
+#Change name so that no test have the same name
+if len(inspect.stack()) > 2:
+    md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/GiaIvinsBenchmarksAB.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/GiaIvinsBenchmarksAB.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/GiaIvinsBenchmarksAB.par	(revision 27955)
@@ -0,0 +1,79 @@
+%Geometry specific to Experiments A and B 
+rad=600000;
+nv=md.mesh.numberofvertices; 
+for i=1:nv,
+	dist=sqrt(md.mesh.x(i).^2+md.mesh.y(i)^2);
+	if (dist <= rad)
+		md.geometry.thickness(i)=2000.0;
+	else
+		md.geometry.thickness(i)=0; 
+	end
+end
+md.geometry.thickness=md.geometry.thickness';
+md.geometry.base=zeros(md.mesh.numberofvertices,1); 
+md.geometry.surface=md.geometry.thickness+md.geometry.base; 
+
+
+%GIA parameters specific to Experiments A  and B
+
+md.materials=materials('litho','ice');
+md.materials.numlayers=2;
+md.materials.radius =  [10 6271e3 6371e3]; %100km litosphere, the rest is mantle material
+md.materials.density=  [3.38e3 3.36e3];
+md.materials.lame_mu=  [1.45e11         6.7e10];
+md.materials.viscosity=[1e21            1e40];
+
+%Ice density used for benchmarking, not 917 kg/m^3
+md.materials.rho_ice=1000; %kg m^3
+
+
+%Initial velocity 
+x     = archread('../Data/SquareSheetConstrained.arch','x');
+y     = archread('../Data/SquareSheetConstrained.arch','y');
+vx    = archread('../Data/SquareSheetConstrained.arch','vx');
+vy    = archread('../Data/SquareSheetConstrained.arch','vy');
+index = archread('../Data/SquareSheetConstrained.arch','index');
+
+x = x{1};
+y = y{1};
+vx = vx{1};
+vy = vy{1};
+index = index{1};
+
+md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+clear vx vy x y index;
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+%Friction
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.groundingline.migration='None';
+md.masstransport.stabilization=1.;
+md.thermal.stabilization=1.;
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.stressbalance.restol=0.05;
+md.steadystate.reltol=0.05;
+md.stressbalance.reltol=0.05;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=1.;
+md.timestepping.final_time=3.;
+
+%Boundary conditions:
+md=SetIceSheetBC(md);
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
+
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/GiaIvinsBenchmarksAB.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/GiaIvinsBenchmarksAB.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/GiaIvinsBenchmarksAB.py	(revision 27955)
@@ -0,0 +1,86 @@
+#Geometry specific to Experiments A and B
+import os.path
+import inspect
+
+import numpy as np
+
+from arch import *
+from InterpFromMeshToMesh2d import *
+from materials import *
+from paterson import *
+from SetIceSheetBC import *
+from verbose import *
+
+
+rad = 600000.
+nv = md.mesh.numberofvertices
+if (np.isnan(md.geometry.thickness)):
+    md.geometry.thickness = np.zeros((md.mesh.numberofvertices, 1))
+for i in range(nv):
+    dist = np.sqrt(md.mesh.x[i]**2 + md.mesh.y[i]**2)
+    if (dist <= rad):
+        md.geometry.thickness[i] = 2000.0
+    else:
+        md.geometry.thickness[i] = 0
+
+md.geometry.thickness = md.geometry.thickness.reshape(-1, 1)
+md.geometry.base = np.zeros((md.mesh.numberofvertices, 1))
+md.geometry.surface = md.geometry.thickness + md.geometry.base.reshape(-1, 1)  #would otherwise create a 91x91 matrix
+
+# GIA parameters specific to Experiments A and B
+md.materials = materials('litho', 'ice')
+md.materials.radius = [10, 6271e3, 6371e3] # 100km lithosphere, the rest is mantle material
+md.materials.density = [3.38e3, 3.36e3]
+md.materials.lame_u = [1.45e11, 6.7e10]
+md.materials.viscosity = [1e21, 1e40]
+
+# Ice density used for benchmarking, not 917 kg/m^3
+md.materials.rho_ice = 1000 # kg/m^3
+
+# Initial velocity
+x = archread('../Data/SquareSheetConstrained.arch', 'x')
+y = archread('../Data/SquareSheetConstrained.arch', 'y')
+vx = archread('../Data/SquareSheetConstrained.arch', 'vx')
+vy = archread('../Data/SquareSheetConstrained.arch', 'vy')
+index = archread('../Data/SquareSheetConstrained.arch', 'index').astype(int)
+
+md.initialization.vx = np.array(InterpFromMeshToMesh2d(index, x, y, vx, md.mesh.x, md.mesh.y)).reshape(-1, 1)
+md.initialization.vy = np.array(InterpFromMeshToMesh2d(index, x, y, vy, md.mesh.x, md.mesh.y)).reshape(-1, 1)
+vx = None
+vy = None
+x = None
+y = None
+index = None
+md.initialization.vz = np.zeros((md.mesh.numberofvertices, 1))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices, 1))
+
+# Materials
+md.initialization.temperature = (273. - 20.) * np.ones((md.mesh.numberofvertices, 1))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements, 1))
+
+# Friction
+md.friction.coefficient = 20. * np.ones((md.mesh.numberofvertices, 1))
+md.friction.coefficient[np.where(md.mask.ocean_levelset < 0.)] = 0.
+md.friction.p = np.ones((md.mesh.numberofelements, 1))
+md.friction.q = np.ones((md.mesh.numberofelements, 1))
+
+# Numerical parameters
+md.groundingline.migration = 'None'
+md.masstransport.stabilization = 1
+md.thermal.stabilization = 1.
+md.verbose = verbose(0)
+md.settings.waitonlock = 30.
+md.stressbalance.restol = 0.05
+md.steadystate.reltol = 0.05
+md.stressbalance.reltol = 0.05
+md.stressbalance.abstol = np.nan
+md.timestepping.time_step = 1.
+md.timestepping.final_time = 3.
+
+# Boundary conditions:
+md = SetIceSheetBC(md)
+
+# Change name so that no test have the same name
+if len(inspect.stack()) > 2:
+    md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/GiaIvinsBenchmarksCD.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/GiaIvinsBenchmarksCD.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/GiaIvinsBenchmarksCD.par	(revision 27955)
@@ -0,0 +1,76 @@
+%Geometry specific to Experiments C and D  
+rad=800000;
+nv=md.mesh.numberofvertices; 
+for i=1:nv,
+	dist=sqrt(md.mesh.x(i).^2+md.mesh.y(i)^2);
+	if (dist <= rad)
+		md.geometry.thickness(i)=3000.0;
+	else
+		md.geometry.thickness(i)=0; 
+	end
+end
+md.geometry.thickness=md.geometry.thickness';
+md.geometry.base=zeros(md.mesh.numberofvertices,1); 
+md.geometry.surface=md.geometry.thickness+md.geometry.base; 
+
+%Ice density used for benchmarking, not 917 kg/m^3
+md.materials.rho_ice=1000; %kg m^3
+
+%GIA parameters specific to Experiments A  and B
+md.gia=giaivins();
+md.gia.mantle_viscosity=10^21*ones(md.mesh.numberofvertices,1);    %in Pa.s
+md.gia.lithosphere_thickness=100*ones(md.mesh.numberofvertices,1); %in km
+md.materials.lithosphere_shear_modulus=6.7*10^10;                  %in Pa
+md.materials.lithosphere_density=3.32;                             %in g/cm^3
+md.materials.mantle_shear_modulus=1.45*10^11;                      %in Pa
+md.materials.mantle_density=3.34;                                  %in g/cm^3
+
+%Initial velocity 
+x     = archread('../Data/SquareSheetConstrained.arch','x');
+y     = archread('../Data/SquareSheetConstrained.arch','y');
+vx    = archread('../Data/SquareSheetConstrained.arch','vx');
+vy    = archread('../Data/SquareSheetConstrained.arch','vy');
+index = archread('../Data/SquareSheetConstrained.arch','index');
+
+x = x{1};
+y = y{1};
+vx = vx{1};
+vy = vy{1};
+index = index{1};
+
+md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+clear vx vy x y index;
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+%Friction
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.groundingline.migration='None';
+md.masstransport.stabilization=1.;
+md.thermal.stabilization=1.;
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.stressbalance.restol=0.05;
+md.steadystate.reltol=0.05;
+md.stressbalance.reltol=0.05;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=1.;
+md.timestepping.final_time=3.;
+
+%Boundary conditions:
+md=SetIceSheetBC(md);
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/GiaIvinsBenchmarksCD.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/GiaIvinsBenchmarksCD.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/GiaIvinsBenchmarksCD.py	(revision 27955)
@@ -0,0 +1,88 @@
+#Geometry specific to Experiments C and D
+import inspect
+import os.path
+
+import numpy as np
+
+from arch import *
+from giaivins import giaivins
+from InterpFromMeshToMesh2d import *
+from paterson import *
+from verbose import *
+from SetIceSheetBC import *
+
+
+rad = 800000
+nv = md.mesh.numberofvertices
+if (np.isnan(md.geometry.thickness)):
+    md.geometry.thickness = np.zeros((md.mesh.numberofvertices, 1))
+for i in range(nv):
+    dist = np.sqrt(md.mesh.x[i]**2 + md.mesh.y[i]**2)
+    if (dist <= rad):
+        md.geometry.thickness[i] = 3000.0
+    else:
+        md.geometry.thickness[i] = 0
+
+md.geometry.thickness = md.geometry.thickness.reshape(-1, 1)
+md.geometry.base = np.zeros((md.mesh.numberofvertices, 1))
+md.geometry.surface = md.geometry.thickness + md.geometry.base.reshape(-1, 1)  #would otherwise create a 91x91 matrix
+
+#Ice density used for benchmarking, not 917 kg / m^3
+md.materials.rho_ice = 1000 #kg m^3
+
+#GIA parameters specific to Experiments A and B
+md.gia=giaivins();
+md.gia.mantle_viscosity = 1e21 * np.ones((md.mesh.numberofvertices, 1))  #in Pa.s
+md.gia.lithosphere_thickness = 100 * np.ones((md.mesh.numberofvertices, 1))  #in km
+md.materials.lithosphere_shear_modulus = 6.7e10  #in Pa
+md.materials.lithosphere_density = 3.32  #in g / cm^3
+md.materials.mantle_shear_modulus = 1.45e11  #in Pa
+md.materials.mantle_density = 3.34  #in g / cm^3
+
+#Initial velocity
+x = archread('../Data/SquareSheetConstrained.arch', 'x')
+y = archread('../Data/SquareSheetConstrained.arch', 'y')
+vx = archread('../Data/SquareSheetConstrained.arch', 'vx')
+vy = archread('../Data/SquareSheetConstrained.arch', 'vy')
+index = archread('../Data/SquareSheetConstrained.arch', 'index').astype(int)
+
+md.initialization.vx = np.array(InterpFromMeshToMesh2d(index, x, y, vx, md.mesh.x, md.mesh.y)).reshape(-1, 1)
+md.initialization.vy = np.array(InterpFromMeshToMesh2d(index, x, y, vy, md.mesh.x, md.mesh.y)).reshape(-1, 1)
+vx = None
+vy = None
+x = None
+y = None
+index = None
+md.initialization.vz = np.zeros((md.mesh.numberofvertices, 1))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices, 1))
+
+#Materials
+md.initialization.temperature = (273. - 20.) * np.ones((md.mesh.numberofvertices, 1))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements, 1))
+
+#Friction
+md.friction.coefficient = 20. * np.ones((md.mesh.numberofvertices, 1))
+md.friction.coefficient[np.where(md.mask.ocean_levelset < 0.)] = 0.
+md.friction.p = np.ones((md.mesh.numberofelements, 1))
+md.friction.q = np.ones((md.mesh.numberofelements, 1))
+
+#Numerical parameters
+md.groundingline.migration = 'None'
+md.masstransport.stabilization = 1.
+md.thermal.stabilization = 1.
+md.verbose = verbose(0)
+md.settings.waitonlock = 30.
+md.stressbalance.restol = 0.05
+md.steadystate.reltol = 0.05
+md.stressbalance.reltol = 0.05
+md.stressbalance.abstol = np.nan
+md.timestepping.time_step = 1.
+md.timestepping.final_time = 3.
+
+#Boundary conditions:
+md = SetIceSheetBC(md)
+
+#Change name so that no test have the same name
+if len(inspect.stack()) > 2:
+    md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPA.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPA.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPA.par	(revision 27955)
@@ -0,0 +1,20 @@
+%Ok, start defining model parameters here
+
+disp('      creating thickness');
+md.geometry.surface=-md.mesh.x*tan(0.5*pi/180.);
+md.geometry.base=md.geometry.surface-1000.+500.*sin(md.mesh.x*2.*pi/max(md.mesh.x)).*sin(md.mesh.y*2.*pi/max(md.mesh.x));
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+disp('      creating drag');
+md.friction.coefficient=200.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=6.8067*10^7*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      boundary conditions for stressbalance model');
+%Create node on boundary first (because we cannot use mesh)
+md=SetIceSheetBC(md);
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPA.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPA.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPA.py	(revision 27955)
@@ -0,0 +1,23 @@
+import numpy as np
+from SetIceSheetBC import SetIceSheetBC
+
+#Ok, start defining model parameters here
+
+print("      creating thickness")
+md.geometry.surface = -md.mesh.x * np.tan(0.5 * np.pi / 180.)
+md.geometry.base = md.geometry.surface - 1000. + 500. * np.sin(md.mesh.x * 2. * np.pi / np.max(md.mesh.x)) * np.sin(md.mesh.y * 2. * np.pi / np.max(md.mesh.x))
+md.geometry.thickness = md.geometry.surface - md.geometry.base
+
+print("      creating drag")
+md.friction.coefficient = 200. * np.ones((md.mesh.numberofvertices))
+md.friction.coefficient[np.nonzero(md.mask.ocean_levelset < 0.)[0]] = 0.
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+print("      creating flow law parameter")
+md.materials.rheology_B = 6.8067 * 10**7 * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
+
+print("      boundary conditions for stressbalance model")
+#Create node on boundary first (because we cannot use mesh)
+md = SetIceSheetBC(md)
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPB.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPB.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPB.par	(revision 27955)
@@ -0,0 +1,20 @@
+%Ok, start defining model parameters here
+
+disp('      creating thickness');
+md.geometry.surface=-md.mesh.x*tan(0.5*pi/180.);
+md.geometry.base=md.geometry.surface-1000.+500.*sin(md.mesh.x*2.*pi/max(md.mesh.x));
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+disp('      creating drag');
+md.friction.coefficient=200.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=6.8067*10^7*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      boundary conditions for stressbalance model');
+%Create node on boundary first (because we cannot use mesh)
+md=SetIceSheetBC(md);
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPB.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPB.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPB.py	(revision 27955)
@@ -0,0 +1,23 @@
+import numpy as np
+from SetIceSheetBC import SetIceSheetBC
+
+#Ok, start defining model parameters here
+
+print("      creating thickness")
+md.geometry.surface = -md.mesh.x * np.tan(0.5 * np.pi / 180.)
+md.geometry.base = md.geometry.surface - 1000. + 500. * np.sin(md.mesh.x * 2. * np.pi / np.max(md.mesh.x))
+md.geometry.thickness = md.geometry.surface - md.geometry.base
+
+print("      creating drag")
+md.friction.coefficient = 200. * np.ones((md.mesh.numberofvertices))
+md.friction.coefficient[np.nonzero(md.mask.ocean_levelset < 0.)[0]] = 0.
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+print("      creating flow law parameter")
+md.materials.rheology_B = 6.8067 * 10**7 * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
+
+print("      boundary conditions for stressbalance model")
+#Create node on boundary first (because we cannot use mesh)
+md = SetIceSheetBC(md)
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPC.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPC.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPC.par	(revision 27955)
@@ -0,0 +1,21 @@
+%Ok, start defining model parameters here
+
+disp('      creating thickness');
+md.geometry.surface=2000.-md.mesh.x*tan(0.1*pi/180.); %to have z>0
+md.geometry.base=md.geometry.surface-1000.;
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+disp('      creating drag');
+%md.friction.coefficient=sqrt(md.constants.yts.*(1000.+1000.*sin(md.mesh.x*2.*pi/max(md.mesh.x/2.)).*sin(md.mesh.y*2.*pi/max(md.mesh.x/2.)))./(md.constants.g*(md.materials.rho_ice*md.geometry.thickness+md.materials.rho_water*md.geometry.base)));
+md.friction.coefficient=sqrt(md.constants.yts.*(1000.+1000.*sin(md.mesh.x*2.*pi/max(md.mesh.x)).*sin(md.mesh.y*2.*pi/max(md.mesh.x))));
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=zeros(md.mesh.numberofelements,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=6.8067*10^7*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      boundary conditions for stressbalance model:');
+%Create node on boundary first (because we can not use mesh)
+md=SetIceSheetBC(md);
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPC.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPC.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPC.py	(revision 27955)
@@ -0,0 +1,24 @@
+import numpy as np
+from SetIceSheetBC import SetIceSheetBC
+
+#Ok, start defining model parameters here
+
+print("      creating thickness")
+md.geometry.surface = 2000. - md.mesh.x * np.tan(0.1 * np.pi / 180.)  #to have z > 0
+md.geometry.base = md.geometry.surface - 1000.
+md.geometry.thickness = md.geometry.surface - md.geometry.base
+
+print("      creating drag")
+#md.friction.coefficient = sqrt(md.constants.yts. * (1000. + 1000. * sin(md.mesh.x * 2. * pi / max(md.mesh.x / 2.)). * sin(md.mesh.y * 2. * pi / max(md.mesh.x / 2.))). / (md.constants.g * (md.materials.rho_ice * md.geometry.thickness + md.materials.rho_water * md.geometry.base)))
+md.friction.coefficient = np.sqrt(md.constants.yts * (1000. + 1000. * np.sin(md.mesh.x * 2. * np.pi / np.max(md.mesh.x)) * np.sin(md.mesh.y * 2. * np.pi / np.max(md.mesh.x))))
+md.friction.coefficient[np.nonzero(md.mask.ocean_levelset < 0.)[0]] = 0.
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.zeros((md.mesh.numberofelements))
+
+print("      creating flow law parameter")
+md.materials.rheology_B = 6.8067 * 10**7 * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
+
+print("      boundary conditions for stressbalance model:")
+#Create node on boundary first (because we can not use mesh)
+md = SetIceSheetBC(md)
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPD.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPD.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPD.par	(revision 27955)
@@ -0,0 +1,20 @@
+%Ok, start defining model parameters here
+
+disp('      creating thickness');
+md.geometry.surface=2000.-md.mesh.x*tan(0.1*pi/180.); %to have z>0
+md.geometry.base=md.geometry.surface-1000.;
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+disp('      creating drag');
+md.friction.coefficient=sqrt(md.constants.yts.*(1000.+1000.*sin(md.mesh.x*2.*pi/max(md.mesh.x))));
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=zeros(md.mesh.numberofelements,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=6.8067*10^7*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      boundary conditions for stressbalance model:');
+%Create node on boundary first (because we can not use mesh)
+md=SetIceSheetBC(md);
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPD.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPD.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPD.py	(revision 27955)
@@ -0,0 +1,23 @@
+import numpy as np
+from SetIceSheetBC import SetIceSheetBC
+
+#Ok, start defining model parameters here
+
+print("      creating thickness")
+md.geometry.surface = 2000. - md.mesh.x * np.tan(0.1 * np.pi / 180.)  #to have z > 0
+md.geometry.base = md.geometry.surface - 1000.
+md.geometry.thickness = md.geometry.surface - md.geometry.base
+
+print("      creating drag")
+md.friction.coefficient = np.sqrt(md.constants.yts * (1000. + 1000. * np.sin(md.mesh.x * 2. * np.pi / np.max(md.mesh.x))))
+md.friction.coefficient[np.nonzero(md.mask.ocean_levelset < 0.)[0]] = 0.
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.zeros((md.mesh.numberofelements))
+
+print("      creating flow law parameter")
+md.materials.rheology_B = 6.8067 * 10**7 * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
+
+print("      boundary conditions for stressbalance model:")
+#Create node on boundary first (because we can not use mesh)
+md = SetIceSheetBC(md)
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPE.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPE.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPE.par	(revision 27955)
@@ -0,0 +1,32 @@
+%Ok, start defining model parameters here
+
+disp('      creating thickness');
+data=archread('../Data/ISMIPE.arch','data');
+data = data{1};
+md.geometry.surface=zeros(md.mesh.numberofvertices,1);
+md.geometry.base=zeros(md.mesh.numberofvertices,1);
+for i=1:md.mesh.numberofvertices
+	y=md.mesh.y(i);
+	point1=floor(y/100.)+1;
+	point2=min(point1+1,51);
+	coeff=(y-(point1-1.)*100.)/100.;
+	md.geometry.base(i)=(1.-coeff)*data(point1,2)+coeff*data(point2,2);
+	md.geometry.surface(i)=(1.-coeff)*data(point1,3)+coeff*data(point2,3);
+end
+
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+md.geometry.thickness(find(~md.geometry.thickness))=0.01;
+md.geometry.base=md.geometry.surface-md.geometry.thickness;
+
+disp('      creating drag');
+md.friction.coefficient=zeros(md.mesh.numberofvertices,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=6.8067*10^7*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      boundary conditions for stressbalance model:');
+%Create node on boundary first (because we can not use mesh)
+md=SetIceSheetBC(md);
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPE.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPE.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPE.py	(revision 27955)
@@ -0,0 +1,34 @@
+import numpy as np
+from arch import *
+from SetIceSheetBC import SetIceSheetBC
+
+#Ok, start defining model parameters here
+
+print("      creating thickness")
+data = np.array(archread('../Data/ISMIPE.arch', 'data'))
+md.geometry.surface = np.zeros((md.mesh.numberofvertices))
+md.geometry.base = np.zeros((md.mesh.numberofvertices))
+for i in range(0, md.mesh.numberofvertices):
+    y = md.mesh.y[i]
+    point1 = int(np.floor(y / 100.))
+    point2 = int(np.minimum(point1 + 1, 50))
+    coeff = int((y - (point1) * 100.) / 100.)
+    md.geometry.base[i] = (1. - coeff) * data[point1, 1] + coeff * data[point2, 1]
+    md.geometry.surface[i] = (1. - coeff) * data[point1, 2] + coeff * data[point2, 2]
+
+md.geometry.thickness = md.geometry.surface - md.geometry.base
+md.geometry.thickness[np.nonzero(np.logical_not(md.geometry.thickness))] = 0.01
+md.geometry.base = md.geometry.surface - md.geometry.thickness
+
+print("      creating drag")
+md.friction.coefficient = np.zeros((md.mesh.numberofvertices))
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+print("      creating flow law parameter")
+md.materials.rheology_B = 6.8067 * 10**7 * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
+
+print("      boundary conditions for stressbalance model:")
+#Create node on boundary first (because we can not use mesh)
+md = SetIceSheetBC(md)
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPF.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPF.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPF.par	(revision 27955)
@@ -0,0 +1,47 @@
+%Ok, start defining model parameters here
+md.verbose=2;
+
+disp('      creating thickness');
+md.geometry.surface=-md.mesh.x*tan(3.*pi/180.);
+%md.geometry.base=md.geometry.surface-1000.;
+md.geometry.base=md.geometry.surface-1000.+100.*exp(-((md.mesh.x-max(md.mesh.x)/2.).^2+(md.mesh.y-max(md.mesh.y)/2.).^2)/(10000.^2));
+md.geometry.thickness=md.geometry.surface-md.geometry.base;
+
+disp('      creating drag');
+md.friction.coefficient=sqrt(md.constants.yts/(2.140373*10^-7*1000.))*ones(md.mesh.numberofvertices,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=zeros(md.mesh.numberofelements,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=1.4734*10^14*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_n=1.*ones(md.mesh.numberofelements,1);
+md.materials.rheology_law='None';
+
+disp('      boundary conditions for stressbalance model');
+%Create node on boundary first (because we cannot use mesh)
+md=SetIceSheetBC(md);
+md.stressbalance.spcvx=100.*ones(md.mesh.numberofvertices,1);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.vel=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+md.initialization.temperature=255.*ones(md.mesh.numberofvertices,1);
+pos=find(md.mesh.x==min(md.mesh.x) | md.mesh.x==max(md.mesh.x) | md.mesh.y==min(md.mesh.y) | md.mesh.y==max(md.mesh.y));
+md.balancethickness.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.balancethickness.spcthickness(pos)=md.geometry.thickness(pos);
+md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.masstransport.spcthickness(pos)=md.geometry.thickness(pos);
+md.thermal.spctemperature=255.*ones(md.mesh.numberofvertices,1);
+md.basalforcings.geothermalflux=0.4*ones(md.mesh.numberofvertices,1);
+
+%Parallel options
+md.mesh.average_vertex_connectivity=200;
+
+%Transient options
+md.timestepping.time_step=1.;
+md.timestepping.final_time=10.;
+md.masstransport.stabilization=1;
+md.thermal.stabilization=1;
+md.thermal.penalty_threshold=10^5;
+md.transient.isthermal=0;
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPF.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPF.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/ISMIPF.py	(revision 27955)
@@ -0,0 +1,50 @@
+import numpy as np
+from SetIceSheetBC import SetIceSheetBC
+
+#Ok, start defining model parameters here
+md.verbose = 2
+
+print("      creating thickness")
+md.geometry.surface = -md.mesh.x * np.tan(3. * np.pi / 180.)
+#md.geometry.base = md.geometry.surface-1000.
+md.geometry.base = md.geometry.surface - 1000. + 100. * np.exp(-((md.mesh.x - np.max(md.mesh.x) / 2.)**2 + (md.mesh.y - np.max(md.mesh.y) / 2.)**2) / (10000.**2))
+md.geometry.thickness = md.geometry.surface - md.geometry.base
+
+print("      creating drag")
+md.friction.coefficient = np.sqrt(md.constants.yts / (2.140373 * 10**-7 * 1000.)) * np.ones((md.mesh.numberofvertices))
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.zeros((md.mesh.numberofelements))
+
+print("      creating flow law parameter")
+md.materials.rheology_B = 1.4734 * 10**14 * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_n = 1. * np.ones((md.mesh.numberofelements))
+md.materials.rheology_law = 'None'
+
+print("      boundary conditions for stressbalance model")
+#Create node on boundary first (because we cannot use mesh)
+md = SetIceSheetBC(md)
+md.stressbalance.spcvx = 100. * np.ones((md.mesh.numberofvertices))
+md.initialization.vx = np.zeros((md.mesh.numberofvertices))
+md.initialization.vy = np.zeros((md.mesh.numberofvertices))
+md.initialization.vz = np.zeros((md.mesh.numberofvertices))
+md.initialization.vel = np.zeros((md.mesh.numberofvertices))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices))
+md.initialization.temperature = 255. * np.ones((md.mesh.numberofvertices))
+pos = np.nonzero(np.logical_or(np.logical_or(md.mesh.x == np.min(md.mesh.x), md.mesh.x == np.max(md.mesh.x)), np.logical_or(md.mesh.y == np.min(md.mesh.y), md.mesh.y == np.max(md.mesh.y))))
+md.balancethickness.spcthickness = float('NaN') * np.ones((md.mesh.numberofvertices))
+md.balancethickness.spcthickness[pos] = md.geometry.thickness[pos]
+md.masstransport.spcthickness = float('NaN') * np.ones((md.mesh.numberofvertices))
+md.masstransport.spcthickness[pos] = md.geometry.thickness[pos]
+md.thermal.spctemperature = 255. * np.ones((md.mesh.numberofvertices))
+md.basalforcings.geothermalflux = 0.4 * np.ones((md.mesh.numberofvertices))
+
+#Parallel options
+md.mesh.average_vertex_connectivity = 200
+
+#Transient options
+md.timestepping.time_step = 1.
+md.timestepping.final_time = 10.
+md.masstransport.stabilization = 1
+md.thermal.stabilization = 1
+md.thermal.penalty_threshold = 10**5
+md.transient.isthermal = 0
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/IceCube.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/IceCube.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/IceCube.par	(revision 27955)
@@ -0,0 +1,46 @@
+%Start defining model parameters here
+
+%Geometry
+md.geometry.thickness=1000.0*ones(md.mesh.numberofvertices,1);
+md.geometry.base=zeros(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+%Calving
+md.calving.calvingrate=zeros(md.mesh.numberofvertices,1);
+md.levelset.spclevelset=NaN(md.mesh.numberofvertices,1);
+
+%Friction
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.masstransport.stabilization=1.;
+md.thermal.stabilization=1.;
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.stressbalance.restol=0.05;
+md.steadystate.reltol=0.05;
+md.stressbalance.reltol=0.05;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=1.;
+md.timestepping.final_time=3.;
+md.groundingline.migration='None';
+
+%Boundary conditions:
+md=SetIceSheetBC(md);
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/IceCube.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/IceCube.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/IceCube.py	(revision 27955)
@@ -0,0 +1,54 @@
+import os.path
+import numpy as np
+import inspect
+from verbose import verbose
+from paterson import paterson
+from SetIceSheetBC import SetIceSheetBC
+from arch import *
+
+#Start defining model parameters here
+
+#Geometry
+md.geometry.thickness = 1000.0 * np.ones((md.mesh.numberofvertices))
+md.geometry.base = np.zeros((md.mesh.numberofvertices))
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+md.initialization.vx = np.zeros((md.mesh.numberofvertices))
+md.initialization.vy = np.zeros((md.mesh.numberofvertices))
+md.initialization.vz = np.zeros((md.mesh.numberofvertices))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices))
+
+#Materials
+md.initialization.temperature = (273. - 20.) * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
+
+#Calving
+md.calving.calvingrate = np.zeros((md.mesh.numberofvertices))
+md.levelset.spclevelset = np.nan * np.ones((md.mesh.numberofvertices))
+
+#Friction
+md.friction.coefficient = 20. * np.ones((md.mesh.numberofvertices))
+md.friction.coefficient[np.where(md.mask.ocean_levelset < 0.)[0]] = 0.
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+#Numerical parameters
+md.masstransport.stabilization = 1.
+md.thermal.stabilization = 1.
+md.verbose = verbose(0)
+md.settings.waitonlock = 30
+md.stressbalance.restol = 0.05
+md.steadystate.reltol = 0.05
+md.stressbalance.reltol = 0.05
+md.stressbalance.abstol = float('NaN')
+md.timestepping.time_step = 1.
+md.timestepping.final_time = 3.
+md.groundingline.migration = 'None'
+
+#Boundary conditions:
+md = SetIceSheetBC(md)
+
+#Change name so that no test have the same name
+if len(inspect.stack()) > 2:
+    md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/Pig.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/Pig.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/Pig.par	(revision 27955)
@@ -0,0 +1,65 @@
+%Start defining model parameters here
+
+%Geometry and observation
+x         = archread('../Data/Pig.arch','x');
+y         = archread('../Data/Pig.arch','y');
+vx_obs    = archread('../Data/Pig.arch','vx_obs');
+vy_obs    = archread('../Data/Pig.arch','vy_obs');
+index     = archread('../Data/Pig.arch','index');
+surface   = archread('../Data/Pig.arch','surface');
+thickness = archread('../Data/Pig.arch','thickness');
+bed       = archread('../Data/Pig.arch','bed');
+
+x			 = x{1};
+y			 = y{1};
+vx_obs	 = vx_obs{1};
+vy_obs	 = vy_obs{1};
+index		 = index{1};
+surface	 = surface{1};
+thickness = thickness{1};
+bed       = bed{1};
+
+md.inversion.vx_obs   =InterpFromMeshToMesh2d(index,x,y,vx_obs,md.mesh.x,md.mesh.y);
+md.inversion.vy_obs   =InterpFromMeshToMesh2d(index,x,y,vy_obs,md.mesh.x,md.mesh.y);
+md.geometry.surface  =InterpFromMeshToMesh2d(index,x,y,surface,md.mesh.x,md.mesh.y);
+md.geometry.thickness=InterpFromMeshToMesh2d(index,x,y,thickness,md.mesh.x,md.mesh.y);
+md.geometry.base=md.geometry.surface-md.geometry.thickness;
+md.geometry.bed =md.geometry.base;
+pos = find(md.mask.ocean_levelset<0);
+md.geometry.bed(pos) =InterpFromMeshToMesh2d(index,x,y,bed,md.mesh.x(pos),md.mesh.y(pos));
+clear surface thickness vx_obs vy_obs x y index;
+md.initialization.vx=md.inversion.vx_obs;
+md.initialization.vy=md.inversion.vy_obs;
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+md.initialization.temperature=md.initialization.temperature;
+
+%Friction
+md.friction.coefficient=50*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.masstransport.stabilization=1;
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.timestepping.time_step=1;
+md.timestepping.final_time=2;
+md.stressbalance.restol=0.05;
+md.stressbalance.reltol=1;
+md.steadystate.reltol=1;
+md.stressbalance.abstol=NaN;
+md.groundingline.migration='None';
+
+%Boundary conditions:
+md=SetMarineIceSheetBC(md);
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/Pig.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/Pig.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/Pig.py	(revision 27955)
@@ -0,0 +1,64 @@
+import os.path
+import inspect
+from arch import *
+import numpy as np
+from verbose import verbose
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from paterson import paterson
+from SetMarineIceSheetBC import SetMarineIceSheetBC
+
+#Start defining model parameters here
+
+#Geometry and observation
+x = np.array(archread('../Data/Pig.arch', 'x'))
+y = np.array(archread('../Data/Pig.arch', 'y'))
+vx_obs = np.array(archread('../Data/Pig.arch', 'vx_obs'))
+vy_obs = np.array(archread('../Data/Pig.arch', 'vy_obs'))
+index = np.array(archread('../Data/Pig.arch', 'index')).astype(int)
+surface = np.array(archread('../Data/Pig.arch', 'surface'))
+thickness = np.array(archread('../Data/Pig.arch', 'thickness'))
+bed = np.array(archread('../Data/Pig.arch', 'bed'))
+
+md.inversion.vx_obs = InterpFromMeshToMesh2d(index, x, y, vx_obs, md.mesh.x, md.mesh.y)[:, 0]
+md.inversion.vy_obs = InterpFromMeshToMesh2d(index, x, y, vy_obs, md.mesh.x, md.mesh.y)[:, 0]
+md.geometry.surface = InterpFromMeshToMesh2d(index, x, y, surface, md.mesh.x, md.mesh.y)[:, 0]
+md.geometry.thickness = InterpFromMeshToMesh2d(index, x, y, thickness, md.mesh.x, md.mesh.y)[:, 0]
+md.geometry.base = md.geometry.surface - md.geometry.thickness
+md.geometry.bed = np.array(md.geometry.base)
+pos = np.where(md.mask.ocean_levelset < 0.)
+md.geometry.bed[pos] = InterpFromMeshToMesh2d(index, x, y, bed, md.mesh.x[pos], md.mesh.y[pos])[:, 0]
+md.initialization.vx = md.inversion.vx_obs
+md.initialization.vy = md.inversion.vy_obs
+md.initialization.vz = np.zeros((md.mesh.numberofvertices))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices))
+
+#Materials
+md.initialization.temperature = (273. - 20.) * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
+md.initialization.temperature = md.initialization.temperature
+
+#Friction
+md.friction.coefficient = 50. * np.ones((md.mesh.numberofvertices))
+md.friction.coefficient[np.nonzero(md.mask.ocean_levelset < 0.)[0]] = 0.
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+#Numerical parameters
+md.masstransport.stabilization = 1.
+md.verbose = verbose(0)
+md.settings.waitonlock = 30
+md.timestepping.time_step = 1.
+md.timestepping.final_time = 2.
+md.stressbalance.restol = 0.05
+md.stressbalance.reltol = 1.
+md.steadystate.reltol = 1.
+md.stressbalance.abstol = float('nan')
+md.groundingline.migration = 'None'
+
+#Boundary conditions:
+md = SetMarineIceSheetBC(md)
+
+#Change name so that no test have the same name
+if len(inspect.stack()) > 2:
+    md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/RoundSheetEISMINT.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/RoundSheetEISMINT.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/RoundSheetEISMINT.par	(revision 27955)
@@ -0,0 +1,59 @@
+%Ok, start defining model parameters here
+disp('      creating thickness');
+md.geometry.thickness=10.*ones(md.mesh.numberofvertices,1);
+md.geometry.base=zeros(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+disp('      creating drag');
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('      creating temperatures');
+tmin=238.15; %K
+st=1.67*10^-2/1000.; %k/m
+radius=sqrt((md.mesh.x).^2+(md.mesh.y).^2);
+md.initialization.temperature=(tmin+st*radius);
+md.basalforcings.geothermalflux=4.2*10^-2*ones(md.mesh.numberofvertices,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=6.81*10^7*ones(md.mesh.numberofvertices,1); %to have the same B as the analytical solution 
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      creating surface mass balance');
+smb_max=0.5; %m/yr
+sb=10^-2/1000.; %m/yr/m
+rel=450.*1000.; %m
+md.smb.mass_balance=min(smb_max,sb*(rel-radius));
+
+disp('      creating velocities');
+constant=0.3;
+md.inversion.vx_obs=constant/2.*md.mesh.x.*(md.geometry.thickness).^-1;
+md.inversion.vy_obs=constant/2.*md.mesh.y.*(md.geometry.thickness).^-1;
+md.inversion.vel_obs=(sqrt((md.inversion.vx_obs).^2+(md.inversion.vy_obs).^2));
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Deal with boundary conditions:
+disp('      boundary conditions for stressbalance model:');
+md=SetMarineIceSheetBC(md,'../Exp/RoundFrontEISMINT.exp');
+
+radius=sqrt((md.mesh.x).^2+(md.mesh.y).^2);
+pos=find(radius==min(radius));
+md.mesh.x(pos)=0.; md.mesh.y(pos)=0.; %the closest node to the center is changed to be exactly at the center
+
+md.stressbalance.spcvx(pos)=0.;
+md.stressbalance.spcvy(pos)=0.;
+md.stressbalance.spcvz(pos)=0.;
+
+%parallel options
+md.timestepping.final_time=50000.;
+
+%Constants
+md.materials.rho_ice=910.;
+md.materials.thermalconductivity=2.1;
+md.materials.latentheat=3.35*10^5;
+md.materials.beta=8.66*10^-4/(md.materials.rho_ice*md.constants.g); %conversion from K/m to K/Pa
+md.constants.yts=31556926.;
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/RoundSheetEISMINT.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/RoundSheetEISMINT.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/RoundSheetEISMINT.py	(revision 27955)
@@ -0,0 +1,63 @@
+import numpy
+from SetMarineIceSheetBC import SetMarineIceSheetBC
+
+#Ok, start defining model parameters here
+print("      creating thickness")
+md.geometry.thickness = 10. * numpy.ones((md.mesh.numberofvertices))
+md.geometry.base = numpy.zeros((md.mesh.numberofvertices))
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+print("      creating drag")
+md.friction.coefficient = 20. * numpy.ones((md.mesh.numberofvertices))
+md.friction.p = numpy.ones((md.mesh.numberofelements))
+md.friction.q = numpy.ones((md.mesh.numberofelements))
+
+print("      creating temperatures")
+tmin = 238.15  #K
+st = 1.67 * 10**-2 / 1000.  #k / m
+radius = numpy.sqrt((md.mesh.x)**2 + (md.mesh.y)**2)
+md.initialization.temperature = tmin + st * radius
+md.basalforcings.geothermalflux = 4.2 * 10**-2 * numpy.ones((md.mesh.numberofvertices))
+
+print("      creating flow law parameter")
+md.materials.rheology_B = 6.81 * 10**7 * numpy.ones((md.mesh.numberofvertices))  #to have the same B as the analytical solution
+md.materials.rheology_n = 3. * numpy.ones((md.mesh.numberofelements))
+
+print("      creating surface mass balance")
+smb_max = 0.5  #m / yr
+sb = 10**-2 / 1000.  #m / yr / m
+rel = 450. * 1000.  #m
+md.smb.mass_balance = numpy.minimum(smb_max * numpy.ones_like(radius), sb * (rel - radius))
+
+print("      creating velocities")
+constant = 0.3
+md.inversion.vx_obs = constant / 2. * md.mesh.x * (md.geometry.thickness)**- 1
+md.inversion.vy_obs = constant / 2. * md.mesh.y * (md.geometry.thickness)**- 1
+md.inversion.vel_obs = numpy.sqrt((md.inversion.vx_obs)**2 + (md.inversion.vy_obs)**2)
+md.initialization.vx = numpy.zeros((md.mesh.numberofvertices))
+md.initialization.vy = numpy.zeros((md.mesh.numberofvertices))
+md.initialization.vz = numpy.zeros((md.mesh.numberofvertices))
+md.initialization.pressure = numpy.zeros((md.mesh.numberofvertices))
+
+#Deal with boundary conditions:
+print("      boundary conditions for stressbalance model:")
+md = SetMarineIceSheetBC(md, '../Exp/RoundFrontEISMINT.exp')
+
+radius = numpy.sqrt((md.mesh.x)**2 + (md.mesh.y)**2)
+pos = numpy.nonzero(radius == numpy.min(radius))[0]
+md.mesh.x[pos] = 0.
+md.mesh.y[pos] = 0.  #the closest node to the center is changed to be exactly at the center
+
+md.stressbalance.spcvx[pos] = 0.
+md.stressbalance.spcvy[pos] = 0.
+md.stressbalance.spcvz[pos] = 0.
+
+#parallel options
+md.timestepping.final_time = 50000.
+
+#Constants
+md.materials.rho_ice = 910.
+md.materials.thermalconductivity = 2.1
+md.materials.latentheat = 3.35 * 10**5
+md.materials.beta = 8.66 * 10**-4 / (md.materials.rho_ice * md.constants.g)  #conversion from K / m to K / Pa
+md.constants.yts = 31556926.
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/RoundSheetShelf.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/RoundSheetShelf.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/RoundSheetShelf.par	(revision 27955)
@@ -0,0 +1,118 @@
+%Start defining model parameters here
+
+di=md.materials.rho_ice/md.materials.rho_water;
+rad=1.e6;
+shelfextent=2.e5;
+%Geometry
+hmin=300.;
+hmax=1000.;
+radius=sqrt((md.mesh.x).*md.mesh.x+(md.mesh.y).*md.mesh.y);
+ymin=min(radius);
+ymax=max(radius);
+md.geometry.thickness=hmax+(hmin-hmax)*(radius-ymin)/(ymax-ymin);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+
+pos=find(md.mask.ocean_levelset>0.);
+md.geometry.base(pos)=md.geometry.base(pos)-300.*(radius(pos)-(rad-shelfextent))/(rad-shelfextent);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+pos=find(radius<200000);
+md.geometry.thickness(pos)=100.;
+md.geometry.base(pos)=-di*md.geometry.thickness(pos)-20.;
+md.geometry.surface(pos)=md.geometry.base(pos)+md.geometry.thickness(pos);
+
+pos=find(md.mesh.x<0.2*1.e6 & md.mesh.x>-0.2*1.e6 & md.mesh.y>0.);
+md.geometry.thickness(pos)=100.;
+md.geometry.base(pos)=-di*md.geometry.thickness(pos)-20.;
+md.geometry.surface(pos)=md.geometry.base(pos)+md.geometry.thickness(pos);
+
+pos=find(md.mesh.x<0.1*1.e6 & md.mesh.x>-0.1*1.e6 & md.mesh.y<-0.5*1.e6 & md.mesh.y>-0.6*1.e6);
+md.geometry.thickness(pos)=100.;
+md.geometry.base(pos)=-di*md.geometry.thickness(pos)-20.;
+md.geometry.surface(pos)=md.geometry.base(pos)+md.geometry.thickness(pos);
+
+%plug holes into the ice sheet, to test for grounding line migration. 
+di=md.materials.rho_ice/md.materials.rho_water;
+rad=sqrt(md.mesh.x.^2+md.mesh.y.^2);
+pos=find(rad<200000.);
+md.geometry.thickness(pos)=100.;
+md.geometry.base(pos)=-di*md.geometry.thickness(pos)-20.;
+md.geometry.surface(pos)=md.geometry.base(pos)+md.geometry.thickness(pos);
+
+pos=find(md.mesh.x<0.2*1.e6 & md.mesh.x>-0.2*1.e6 & md.mesh.y>0.);
+md.geometry.thickness(pos)=100.;
+md.geometry.base(pos)=-di*md.geometry.thickness(pos)-20.;
+md.geometry.surface(pos)=md.geometry.base(pos)+md.geometry.thickness(pos);
+
+pos=find(md.mesh.x<0.1*1.e6 & md.mesh.x>-0.1*1.e6 & md.mesh.y<-0.5*1.e6 & md.mesh.y>-0.6*1.e6);
+md.geometry.thickness(pos)=100.;
+md.geometry.base(pos)=-di*md.geometry.thickness(pos)-20.;
+md.geometry.surface(pos)=md.geometry.base(pos)+md.geometry.thickness(pos);
+
+%Initial velocity 
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+%Surface mass balance and basal melting
+md.smb.mass_balance=-10.*ones(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+pos=find(md.mask.ocean_levelset>0.);md.basalforcings.groundedice_melting_rate(pos)=10.;
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.geothermalflux=ones(md.mesh.numberofvertices,1);
+
+%Friction
+radius=1.e6;
+shelfextent=2.e5;
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+xelem=md.mesh.x(md.mesh.elements)*[1;1;1]/3.;
+yelem=md.mesh.y(md.mesh.elements)*[1;1;1]/3.;
+rad=sqrt(xelem.^2+yelem.^2);
+flags=zeros(md.mesh.numberofelements,1);
+pos=find(rad>=(radius-shelfextent));
+md.friction.coefficient(md.mesh.elements(pos,:))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.masstransport.stabilization=1;
+md.thermal.stabilization=1;
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.stressbalance.restol=0.05;
+md.stressbalance.reltol=0.05;
+md.steadystate.reltol=0.05;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=5.;
+md.timestepping.final_time=5.;
+
+%bathymetry and grounding line migration:
+md.groundingline.migration='AggressiveMigration';
+md.geometry.bed=md.geometry.base;
+pos=find(md.mask.ocean_levelset<0.); md.geometry.bed(pos)=md.geometry.base(pos)-900.;
+
+%Deal with boundary conditions:
+md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1);
+
+pos=find(md.mesh.x==0 & md.mesh.y==0);
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvy(pos)=0;
+
+md.mask.ice_levelset(find(md.mesh.vertexonboundary))=0;
+md.balancethickness.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
+md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
+md.thermal.spctemperature=737.*ones(md.mesh.numberofvertices,1);
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/RoundSheetShelf.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/RoundSheetShelf.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/RoundSheetShelf.py	(revision 27955)
@@ -0,0 +1,128 @@
+import os.path
+import numpy as np
+import copy
+import inspect
+from paterson import paterson
+from verbose import verbose
+
+#Start defining model parameters here
+
+di = md.materials.rho_ice / md.materials.rho_water
+rad = 1.e6
+shelfextent = 2.e5
+#Geometry
+hmin = 300.
+hmax = 1000.
+radius = np.sqrt(md.mesh.x * md.mesh.x + md.mesh.y * md.mesh.y.reshape(-1))
+ymin = np.min(radius)
+ymax = np.max(radius)
+md.geometry.thickness = hmax + (hmin - hmax) * (radius - ymin) / (ymax - ymin)
+md.geometry.base = -md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness
+
+pos = np.nonzero(md.mask.ocean_levelset > 0.)[0]
+md.geometry.base[pos] = md.geometry.base[pos] - 300. * (radius[pos] - (rad - shelfextent)) / (rad - shelfextent)
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+pos = np.nonzero(radius < 200000.)
+md.geometry.thickness[pos] = 100.
+md.geometry.base[pos] = -di * md.geometry.thickness[pos] - 20.
+md.geometry.surface[pos] = md.geometry.base[pos] + md.geometry.thickness[pos]
+
+pos = np.nonzero(np.logical_and(np.logical_and(md.mesh.x < 0.2 * 1.e6, md.mesh.x > -0.2 * 1.e6), md.mesh.y > 0.))
+md.geometry.thickness[pos] = 100.
+md.geometry.base[pos] = -di * md.geometry.thickness[pos] - 20.
+md.geometry.surface[pos] = md.geometry.base[pos] + md.geometry.thickness[pos]
+
+pos = np.nonzero(np.logical_and(np.logical_and(md.mesh.x < 0.1 * 1.e6, md.mesh.x > -0.1 * 1.e6), np.logical_and(md.mesh.y < -0.5 * 1.e6, md.mesh.y > -0.6 * 1.e6)))
+md.geometry.thickness[pos] = 100.
+md.geometry.base[pos] = -di * md.geometry.thickness[pos] - 20.
+md.geometry.surface[pos] = md.geometry.base[pos] + md.geometry.thickness[pos]
+
+#plug holes into the ice sheet, to test for grounding line migration.
+di = md.materials.rho_ice / md.materials.rho_water
+rad = np.sqrt(md.mesh.x**2 + md.mesh.y**2)
+pos = np.nonzero(rad < 200000.)
+md.geometry.thickness[pos] = 100.
+md.geometry.base[pos] = -di * md.geometry.thickness[pos] - 20.
+md.geometry.surface[pos] = md.geometry.base[pos] + md.geometry.thickness[pos]
+
+pos = np.nonzero(np.logical_and(np.logical_and(md.mesh.x < 0.2 * 1.e6, md.mesh.x > -0.2 * 1.e6), md.mesh.y > 0.))
+md.geometry.thickness[pos] = 100.
+md.geometry.base[pos] = -di * md.geometry.thickness[pos] - 20.
+md.geometry.surface[pos] = md.geometry.base[pos] + md.geometry.thickness[pos]
+
+pos = np.nonzero(np.logical_and(np.logical_and(md.mesh.x < 0.1 * 1.e6, md.mesh.x > -0.1 * 1.e6), np.logical_and(md.mesh.y < -0.5 * 1.e6, md.mesh.y > -0.6 * 1.e6)))
+md.geometry.thickness[pos] = 100.
+md.geometry.base[pos] = -di * md.geometry.thickness[pos] - 20.
+md.geometry.surface[pos] = md.geometry.base[pos] + md.geometry.thickness[pos]
+
+#Initial velocity
+md.initialization.vx = np.zeros((md.mesh.numberofvertices))
+md.initialization.vy = np.zeros((md.mesh.numberofvertices))
+md.initialization.vz = np.zeros((md.mesh.numberofvertices))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices))
+
+#Materials
+md.initialization.temperature = (273. - 20.) * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
+
+#Surface mass balance and basal melting
+md.smb.mass_balance = -10. * np.ones((md.mesh.numberofvertices))
+md.basalforcings.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices))
+pos = np.nonzero(md.mask.ocean_levelset > 0.)[0]
+md.basalforcings.groundedice_melting_rate[pos] = 10.
+md.basalforcings.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices))
+md.basalforcings.geothermalflux = np.ones((md.mesh.numberofvertices))
+
+#Friction
+radius = 1.e6
+shelfextent = 2.e5
+md.friction.coefficient = 20. * np.ones((md.mesh.numberofvertices))
+xelem = np.mean(md.mesh.x[md.mesh.elements.astype(int) - 1], axis=1)
+yelem = np.mean(md.mesh.y[md.mesh.elements.astype(int) - 1], axis=1)
+rad = np.sqrt(xelem**2 + yelem**2)
+flags = np.zeros(md.mesh.numberofelements)
+pos = np.nonzero(rad >= (radius - shelfextent))
+md.friction.coefficient[md.mesh.elements[pos, :] - 1] = 0.
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+#Numerical parameters
+md.masstransport.stabilization = 1
+md.thermal.stabilization = 1
+md.verbose = verbose(0)
+md.settings.waitonlock = 30
+md.stressbalance.restol = 0.05
+md.stressbalance.reltol = 0.05
+md.steadystate.reltol = 0.05
+md.stressbalance.abstol = float('nan')
+md.timestepping.time_step = 5.
+md.timestepping.final_time = 5.
+
+#bathymetry and grounding line migration:
+md.groundingline.migration = 'AggressiveMigration'
+md.geometry.bed = copy.deepcopy(md.geometry.base)
+pos = np.nonzero(md.mask.ocean_levelset < 0.)[0]
+md.geometry.bed[pos] = md.geometry.base[pos] - 900.
+
+#Deal with boundary conditions:
+md.stressbalance.spcvx = float('nan') * np.ones((md.mesh.numberofvertices))
+md.stressbalance.spcvy = float('nan') * np.ones((md.mesh.numberofvertices))
+md.stressbalance.spcvz = float('nan') * np.ones((md.mesh.numberofvertices))
+
+pos = np.nonzero(np.logical_and(md.mesh.x == 0, md.mesh.y == 0))
+md.stressbalance.spcvx[pos] = 0
+md.stressbalance.spcvy[pos] = 0
+
+pos = np.nonzero(md.mesh.vertexonboundary)
+md.mask.ice_levelset[pos] = 0
+md.balancethickness.spcthickness = float('nan') * np.ones((md.mesh.numberofvertices))
+md.masstransport.spcthickness = float('nan') * np.ones((md.mesh.numberofvertices))
+md.stressbalance.referential = float('nan') * np.ones((md.mesh.numberofvertices, 6))
+md.stressbalance.loadingforce = 0 * np.ones((md.mesh.numberofvertices, 3))
+md.thermal.spctemperature = 737. * np.ones((md.mesh.numberofvertices))
+
+#Change name so that no test have the same name
+if len(inspect.stack()) > 2:
+    md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/RoundSheetStaticEISMINT.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/RoundSheetStaticEISMINT.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/RoundSheetStaticEISMINT.par	(revision 27955)
@@ -0,0 +1,53 @@
+disp('      creating thickness');
+hmin=0.01;
+hmax=2756.7;
+radius=sqrt((md.mesh.x).^2+(md.mesh.y).^2);
+radiusmax=max(radius);
+radius(find(radius>(1.-10^-9)*radiusmax))=radiusmax;    %eliminate roundoff issues in next statement
+md.geometry.thickness=hmin*ones(size(md.mesh.x,1),1)+hmax*(4.*((1./2.)^(4./3.)*ones(size(md.mesh.x,1),1)-((radius)./(2.*radiusmax)).^(4./3.))).^(3./8.);
+md.geometry.base=0.*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+disp('      creating drag');
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('      creating temperatures');
+tmin=238.15; %K
+st=1.67*10^-2/1000.; %k/m
+md.initialization.temperature=tmin+st*radius;
+md.basalforcings.geothermalflux=4.2*10^-2*ones(md.mesh.numberofvertices,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=6.81*10^7*ones(md.mesh.numberofvertices,1); %to have the same B as the analytical solution
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      creating surface mass balance');
+smb_max=0.5; %m/yr
+sb=10^-2/1000.; %m/yr/m
+rel=450.*1000.; %m
+md.smb.mass_balance=min(smb_max,sb*(rel-radius));
+
+disp('      creating velocities');
+constant=0.3;
+md.inversion.vx_obs=constant/2.*md.mesh.x.*(md.geometry.thickness).^-1;
+md.inversion.vy_obs=constant/2.*md.mesh.y.*(md.geometry.thickness).^-1;
+md.inversion.vel_obs=sqrt((md.inversion.vx_obs).^2+(md.inversion.vy_obs).^2);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Deal with boundary conditions:
+disp('      boundary conditions for stressbalance model:');
+md=SetMarineIceSheetBC(md,'../Exp/RoundFrontEISMINT.exp');
+
+radius=sqrt((md.mesh.x).^2+(md.mesh.y).^2);
+pos=find(radius==min(radius));
+md.mesh.x(pos)=0.; md.mesh.y(pos)=0.; %the closest node to the center is changed to be exactly at the center
+
+md.stressbalance.spcvx(pos)=0.;
+md.stressbalance.spcvy(pos)=0.;
+md.stressbalance.spcvz(pos)=0.;
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/RoundSheetStaticEISMINT.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/RoundSheetStaticEISMINT.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/RoundSheetStaticEISMINT.py	(revision 27955)
@@ -0,0 +1,57 @@
+import numpy
+from SetMarineIceSheetBC import SetMarineIceSheetBC
+
+print("      creating thickness")
+hmin = 0.01
+hmax = 2756.7
+radius = numpy.sqrt((md.mesh.x)**2 + (md.mesh.y)**2)
+radiusmax = numpy.max(radius)
+radius[numpy.nonzero(radius > (1. - 10**-9) * radiusmax)] = radiusmax  #eliminate roundoff issues in next statement
+md.geometry.thickness = hmin * numpy.ones((numpy.size(md.mesh.x))) + hmax * (4. * ((1. / 2.)**(4. / 3.) * numpy.ones((numpy.size(md.mesh.x))) - ((radius) / (2. * radiusmax))**(4. / 3.)))**(3. / 8.)
+md.geometry.base = 0. * md.geometry.thickness
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+print("      creating drag")
+md.friction.coefficient = 20. * numpy.ones((md.mesh.numberofvertices))
+md.friction.coefficient[numpy.nonzero(md.mask.ocean_levelset < 0.)[0]] = 0.
+md.friction.p = numpy.ones((md.mesh.numberofelements))
+md.friction.q = numpy.ones((md.mesh.numberofelements))
+
+print("      creating temperatures")
+tmin = 238.15  #K
+st = 1.67 * 10**-2 / 1000.  #k / m
+md.initialization.temperature = tmin + st * radius
+md.basalforcings.geothermalflux = 4.2 * 10**-2 * numpy.ones((md.mesh.numberofvertices))
+
+print("      creating flow law parameter")
+md.materials.rheology_B = 6.81 * 10**7 * numpy.ones((md.mesh.numberofvertices))  #to have the same B as the analytical solution
+md.materials.rheology_n = 3. * numpy.ones((md.mesh.numberofelements))
+
+print("      creating surface mass balance")
+smb_max = 0.5  #m / yr
+sb = 10**-2 / 1000.  #m / yr / m
+rel = 450. * 1000.  #m
+md.smb.mass_balance = numpy.minimum(smb_max * numpy.ones_like(radius), sb * (rel - radius))
+
+print("      creating velocities")
+constant = 0.3
+md.inversion.vx_obs = constant / 2. * md.mesh.x * (md.geometry.thickness)**- 1
+md.inversion.vy_obs = constant / 2. * md.mesh.y * (md.geometry.thickness)**- 1
+md.inversion.vel_obs = numpy.sqrt((md.inversion.vx_obs)**2 + (md.inversion.vy_obs)**2)
+md.initialization.vx = numpy.zeros((md.mesh.numberofvertices))
+md.initialization.vy = numpy.zeros((md.mesh.numberofvertices))
+md.initialization.vz = numpy.zeros((md.mesh.numberofvertices))
+md.initialization.pressure = numpy.zeros((md.mesh.numberofvertices))
+
+#Deal with boundary conditions:
+print("      boundary conditions for stressbalance model:")
+md = SetMarineIceSheetBC(md, '../Exp/RoundFrontEISMINT.exp')
+
+radius = numpy.sqrt((md.mesh.x)**2 + (md.mesh.y)**2)
+pos = numpy.nonzero(radius == numpy.min(radius))[0]
+md.mesh.x[pos] = 0.
+md.mesh.y[pos] = 0.  #the closest node to the center is changed to be exactly at the center
+
+md.stressbalance.spcvx[pos] = 0.
+md.stressbalance.spcvy[pos] = 0.
+md.stressbalance.spcvz[pos] = 0.
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/SquareEISMINT.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/SquareEISMINT.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/SquareEISMINT.par	(revision 27955)
@@ -0,0 +1,45 @@
+%Ok, start defining model parameters here
+
+disp('      creating thickness');
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+md.geometry.thickness=500.*ones(md.mesh.numberofvertices,1);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+disp('      creating drag');
+md.friction.coefficient=200.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('      creating initial values');
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.vel=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=1.7687*10^8*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      creating surface mass balance');
+md.smb.mass_balance=0.2*ones(md.mesh.numberofvertices,1); %0m/a
+md.basalforcings.floatingice_melting_rate=0.*ones(md.mesh.numberofvertices,1); %0m/a
+md.basalforcings.groundedice_melting_rate=0.*ones(md.mesh.numberofvertices,1); %0m/a
+
+disp('      boundary conditions');
+md=SetMarineIceSheetBC(md,'../Exp/SquareFrontEISMINT.exp');
+
+%Evolution of the ice shelf
+pos=find(md.mesh.y==200000.); %nodes on the upper boundary condition
+md.balancethickness.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.balancethickness.spcthickness(pos)=500.;
+md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
+md.masstransport.spcthickness(pos)=500.;
+md.masstransport.stabilization=0; %Better result with no artificial diffusivity
+md.thermal.stabilization=0;
+md.timestepping.final_time=500.;
+md.timestepping.time_step=1;
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/SquareEISMINT.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/SquareEISMINT.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/SquareEISMINT.py	(revision 27955)
@@ -0,0 +1,48 @@
+import numpy as np
+from SetMarineIceSheetBC import SetMarineIceSheetBC
+
+#Ok, start defining model parameters here
+
+print("      creating thickness")
+ymin = np.min(md.mesh.y)
+ymax = np.max(md.mesh.y)
+md.geometry.thickness = 500. * np.ones((md.mesh.numberofvertices))
+md.geometry.base = -md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+print("      creating drag")
+md.friction.coefficient = 200. * np.ones((md.mesh.numberofvertices))
+md.friction.coefficient[np.nonzero(md.mask.ocean_levelset < 0.)[0]] = 0.
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+print("      creating initial values")
+md.initialization.temperature = (273. - 20.) * np.ones((md.mesh.numberofvertices))
+md.initialization.vx = np.zeros((md.mesh.numberofvertices))
+md.initialization.vy = np.zeros((md.mesh.numberofvertices))
+md.initialization.vz = np.zeros((md.mesh.numberofvertices))
+md.initialization.vel = np.zeros((md.mesh.numberofvertices))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices))
+
+print("      creating flow law parameter")
+md.materials.rheology_B = 1.7687 * 10**8 * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
+
+print("      creating surface mass balance")
+md.smb.mass_balance = 0.2 * np.ones((md.mesh.numberofvertices))  #0m / a
+md.basalforcings.floatingice_melting_rate = 0. * np.ones((md.mesh.numberofvertices))  #0m / a
+md.basalforcings.groundedice_melting_rate = 0. * np.ones((md.mesh.numberofvertices))  #0m / a
+
+print("      boundary conditions")
+md = SetMarineIceSheetBC(md, '../Exp/SquareFrontEISMINT.exp')
+
+#Evolution of the ice shelf
+pos = np.nonzero(md.mesh.y == 200000.)  #nodes on the upper boundary condition
+md.balancethickness.spcthickness = float('NaN') * np.ones((md.mesh.numberofvertices))
+md.balancethickness.spcthickness[pos] = 500.
+md.masstransport.spcthickness = float('NaN') * np.ones((md.mesh.numberofvertices))
+md.masstransport.spcthickness[pos] = 500.
+md.masstransport.stabilization = 0  #Better result with no artificial diffusivity
+md.thermal.stabilization = 0
+md.timestepping.final_time = 500.
+md.timestepping.time_step = 1
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/SquareNoDyn.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/SquareNoDyn.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/SquareNoDyn.par	(revision 27955)
@@ -0,0 +1,47 @@
+%Start defining model parameters here
+
+%Geometry
+md.geometry.thickness=1000.0*ones(md.mesh.numberofvertices,1);
+md.geometry.base=zeros(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%Materials
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+%Friction
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Some necessary fields to fool checkonsistency
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+md.stressbalance.spcvx=zeros(md.mesh.numberofvertices,1);
+md.stressbalance.spcvy=zeros(md.mesh.numberofvertices,1);
+md.stressbalance.spcvz=zeros(md.mesh.numberofvertices,1);
+
+md.stressbalance.referential=NaN(md.mesh.numberofvertices,6);
+md.stressbalance.loadingforce=zeros(md.mesh.numberofvertices,3);
+
+md.smb.mass_balance=zeros(md.mesh.numberofvertices,1);
+
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+
+
+%Numerical parameters
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.groundingline.migration='None';
+
+md.transient=deactivateall(md.transient);
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/SquareNoDyn.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/SquareNoDyn.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/SquareNoDyn.py	(revision 27955)
@@ -0,0 +1,54 @@
+import os.path
+import numpy as np
+import inspect
+from verbose import verbose
+from transient import transient
+from paterson import paterson
+from arch import *
+
+#Start defining model parameters here
+
+#Geometry
+md.geometry.thickness = 1000.0 * np.ones((md.mesh.numberofvertices))
+md.geometry.base = np.zeros((md.mesh.numberofvertices))
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+# #Materials
+md.initialization.temperature = (273. - 20.) * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
+
+#Friction
+md.friction.coefficient = 20. * np.ones((md.mesh.numberofvertices))
+md.friction.coefficient[np.where(md.mask.ocean_levelset < 0.)[0]] = 0.
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+#Some necessary fields to fool checkonsistency
+md.initialization.vx = np.zeros((md.mesh.numberofvertices))
+md.initialization.vy = np.zeros((md.mesh.numberofvertices))
+md.initialization.vz = np.zeros((md.mesh.numberofvertices))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices))
+
+md.stressbalance.spcvx = np.zeros((md.mesh.numberofvertices))
+md.stressbalance.spcvy = np.zeros((md.mesh.numberofvertices))
+md.stressbalance.spcvz = np.zeros((md.mesh.numberofvertices))
+
+md.stressbalance.referential = float('nan') * np.ones((md.mesh.numberofvertices, 6))
+md.stressbalance.loadingforce = np.zeros((md.mesh.numberofvertices, 3))
+
+md.smb.mass_balance = np.zeros((md.mesh.numberofvertices))
+
+md.basalforcings.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices))
+md.basalforcings.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices))
+
+#Numerical parameters
+md.verbose = verbose(0)
+md.settings.waitonlock = 30
+md.groundingline.migration = 'None'
+
+md.transient = transient.deactivateall(md.transient)
+
+#Change name so that no test have the same name
+if len(inspect.stack()) > 2:
+    md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/SquareSheetConstrained.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/SquareSheetConstrained.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/SquareSheetConstrained.par	(revision 27955)
@@ -0,0 +1,67 @@
+%Start defining model parameters here
+
+%Geometry
+hmin=300;
+hmax=1000;
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+xmin=min(md.mesh.x);
+xmax=max(md.mesh.x);
+md.geometry.thickness=hmax+(hmin-hmax)*(md.mesh.y-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x-xmin)/(xmax-xmin);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness+20.;
+md.geometry.bed=md.geometry.base;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%Initial velocity 
+x     = archread('../Data/SquareSheetConstrained.arch','x');
+y     = archread('../Data/SquareSheetConstrained.arch','y');
+vx    = archread('../Data/SquareSheetConstrained.arch','vx');
+vy    = archread('../Data/SquareSheetConstrained.arch','vy');
+index = archread('../Data/SquareSheetConstrained.arch','index');
+
+x = x{1};
+y = y{1};
+vx = vx{1};
+vy = vy{1};
+index = index{1};
+
+md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+clear vx vy x y index;
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+%Calving
+md.calving.calvingrate=zeros(md.mesh.numberofvertices,1);
+md.levelset.spclevelset=NaN(md.mesh.numberofvertices,1);
+
+%Friction
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.masstransport.stabilization=1.;
+md.thermal.stabilization=1.;
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.stressbalance.restol=0.05;
+md.steadystate.reltol=0.05;
+md.stressbalance.reltol=0.05;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=1.;
+md.timestepping.final_time=3.;
+md.groundingline.migration='None';
+
+%Boundary conditions:
+md=SetIceSheetBC(md);
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/SquareSheetConstrained.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/SquareSheetConstrained.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/SquareSheetConstrained.py	(revision 27955)
@@ -0,0 +1,69 @@
+import inspect
+import os.path
+import numpy as np
+from arch import *
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from paterson import paterson
+from SetIceSheetBC import SetIceSheetBC
+from verbose import verbose
+
+#Start defining model parameters here
+
+# Geometry
+hmin = 300.0
+hmax = 1000.0
+ymin = np.min(md.mesh.y)
+ymax = np.max(md.mesh.y)
+xmin = np.min(md.mesh.x)
+xmax = np.max(md.mesh.x)
+md.geometry.thickness = hmax + (hmin - hmax) * (md.mesh.y - ymin) / (ymax - ymin) + 0.1 * (hmin - hmax) * (md.mesh.x - xmin) / (xmax - xmin)
+md.geometry.base = -md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness + 20.0
+md.geometry.bed = md.geometry.base
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+#Initial velocity
+x = np.array(archread('../Data/SquareSheetConstrained.arch', 'x'))
+y = np.array(archread('../Data/SquareSheetConstrained.arch', 'y'))
+vx = np.array(archread('../Data/SquareSheetConstrained.arch', 'vx'))
+vy = np.array(archread('../Data/SquareSheetConstrained.arch', 'vy'))
+index = archread('../Data/SquareSheetConstrained.arch', 'index').astype(int)
+
+md.initialization.vx = InterpFromMeshToMesh2d(index, x, y, vx, md.mesh.x, md.mesh.y)
+md.initialization.vy = InterpFromMeshToMesh2d(index, x, y, vy, md.mesh.x, md.mesh.y)
+md.initialization.vz = np.zeros((md.mesh.numberofvertices))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices))
+
+#Materials
+md.initialization.temperature = (273.0 - 20.0) * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3.0 * np.ones((md.mesh.numberofelements))
+
+#Calving
+md.calving.calvingrate = np.zeros((md.mesh.numberofvertices))
+md.levelset.spclevelset = np.nan * np.ones((md.mesh.numberofvertices))
+
+#Friction
+md.friction.coefficient = 20.0 * np.ones((md.mesh.numberofvertices))
+md.friction.coefficient[np.where(md.mask.ocean_levelset < 0.0)[0]] = 0.0
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+#Numerical parameters
+md.masstransport.stabilization = 1.0
+md.thermal.stabilization = 1.0
+md.verbose = verbose(0)
+md.settings.waitonlock = 30
+md.stressbalance.restol = 0.05
+md.steadystate.reltol = 0.05
+md.stressbalance.reltol = 0.05
+md.stressbalance.abstol = np.nan
+md.timestepping.time_step = 1.0
+md.timestepping.final_time = 3.0
+md.groundingline.migration = 'None'
+
+#Boundary conditions:
+md = SetIceSheetBC(md)
+
+#Change name so that no test have the same name
+if len(inspect.stack()) > 2:
+    md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/SquareSheetConstrainedCO2.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/SquareSheetConstrainedCO2.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/SquareSheetConstrainedCO2.par	(revision 27955)
@@ -0,0 +1,77 @@
+%Start defining model parameters here
+CO2_temp = 150; CO2_n = 7;
+CO2_meltingPoint = 195; CO2_latentHeat = 199000;
+CO2_rhoIce = 1562; CO2_heatCapacity = 700; CO2_thermalCond = 0.5;
+CO2_dynViscosity = 13.72e-6; CO2_rhoLiquidZeroDeg = 929;
+md.materials.rho_ice = CO2_rhoIce;
+md.materials.rho_freshwater = CO2_rhoLiquidZeroDeg;
+md.materials.thermalconductivity = CO2_thermalCond;
+md.materials.heatcapacity = CO2_heatCapacity;
+md.materials.meltingpoint = CO2_meltingPoint;
+md.materials.latentheat = CO2_latentHeat;
+md.materials.mu_water = CO2_dynViscosity; 
+
+%Geometry
+hmin=300;
+hmax=1000;
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+xmin=min(md.mesh.x);
+xmax=max(md.mesh.x);
+md.geometry.thickness=hmax+(hmin-hmax)*(md.mesh.y-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x-xmin)/(xmax-xmin);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness+20.;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%Initial velocity 
+x     = archread('../Data/SquareSheetConstrained.arch','x');
+y     = archread('../Data/SquareSheetConstrained.arch','y');
+vx    = archread('../Data/SquareSheetConstrained.arch','vx');
+vy    = archread('../Data/SquareSheetConstrained.arch','vy');
+index = archread('../Data/SquareSheetConstrained.arch','index');
+
+x = x{1};
+y = y{1};
+vx = vx{1};
+vy = vy{1};
+index = index{1};
+md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+clear vx vy x y index;
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=CO2_temp*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=nye(md.initialization.temperature,1);
+md.materials.rheology_n=CO2_n*ones(md.mesh.numberofelements,1);
+
+%Surface mass balance and basal melting
+md.smb.mass_balance=10*ones(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=5*ones(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate=5*ones(md.mesh.numberofvertices,1);
+
+%Friction
+md.friction.coefficient=20*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.masstransport.stabilization=1;
+md.thermal.stabilization=1;
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.stressbalance.restol=0.05;
+md.stressbalance.reltol=0.05;
+md.steadystate.reltol=0.05;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=1;
+md.timestepping.final_time=3;
+md.groundingline.migration='None';
+
+%Deal with boundary conditions:
+md=SetIceSheetBC(md);
+
+%Change name so that no tests have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/SquareSheetConstrainedCO2.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/SquareSheetConstrainedCO2.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/SquareSheetConstrainedCO2.py	(revision 27955)
@@ -0,0 +1,85 @@
+import os.path
+from arch import archread
+import numpy as np
+import inspect
+from verbose import verbose
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from nye import nye
+from SetIceSheetBC import SetIceSheetBC
+
+#Start defining model parameters here
+CO2_temp = 150.
+CO2_n = 7.
+CO2_meltingPoint = 195.
+CO2_latentHeat = 199000.
+CO2_rhoIce = 1562.
+CO2_heatCapacity = 700.
+CO2_thermalCond = 0.5
+CO2_dynViscosity = 13.72 * 10**-6
+CO2_rhoLiquidZeroDeg = 929.
+md.materials.rho_ice = CO2_rhoIce
+md.materials.rho_freshwater = CO2_rhoLiquidZeroDeg
+md.materials.thermalconductivity = CO2_thermalCond
+md.materials.heatcapacity = CO2_heatCapacity
+md.materials.meltingpoint = CO2_meltingPoint
+md.materials.latentheat = CO2_latentHeat
+md.materials.mu_water = CO2_dynViscosity
+
+#Geometry
+hmin = 300.
+hmax = 1000.
+ymin = np.min(md.mesh.y)
+ymax = np.max(md.mesh.y)
+xmin = min(md.mesh.x)
+xmax = max(md.mesh.x)
+md.geometry.thickness = hmax + (hmin - hmax) * (md.mesh.y - ymin) / (ymax - ymin) + 0.1 * (hmin - hmax) * (md.mesh.x - xmin) / (xmax - xmin)
+md.geometry.base = -md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness + 20.
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+#Initial velocity
+x = np.array(archread('../Data/SquareSheetConstrained.arch', 'x'))
+y = np.array(archread('../Data/SquareSheetConstrained.arch', 'y'))
+vx = np.array(archread('../Data/SquareSheetConstrained.arch', 'vx'))
+vy = np.array(archread('../Data/SquareSheetConstrained.arch', 'vy'))
+index = archread('../Data/SquareSheetConstrained.arch', 'index').astype(int)
+
+md.initialization.vx = InterpFromMeshToMesh2d(index, x, y, vx, md.mesh.x, md.mesh.y)
+md.initialization.vy = InterpFromMeshToMesh2d(index, x, y, vy, md.mesh.x, md.mesh.y)
+md.initialization.vz = np.zeros((md.mesh.numberofvertices))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices))
+
+#Materials
+md.initialization.temperature = CO2_temp * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_B = nye(md.initialization.temperature, 1)
+md.materials.rheology_n = CO2_n * np.ones((md.mesh.numberofelements))
+
+#Surface mass balance and basal melting
+md.smb.mass_balance = 10. * np.ones((md.mesh.numberofvertices))
+md.basalforcings.groundedice_melting_rate = 5. * np.ones((md.mesh.numberofvertices))
+md.basalforcings.floatingice_melting_rate = 5. * np.ones((md.mesh.numberofvertices))
+
+#Friction
+md.friction.coefficient = 20. * np.ones((md.mesh.numberofvertices))
+md.friction.coefficient[np.nonzero(md.mask.ocean_levelset < 0.)[0]] = 0.
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+#Numerical parameters
+md.masstransport.stabilization = 1
+md.thermal.stabilization = 1
+md.verbose = verbose(0)
+md.settings.waitonlock = 30
+md.stressbalance.restol = 0.05
+md.stressbalance.reltol = 0.05
+md.steadystate.reltol = 0.05
+md.stressbalance.abstol = float('nan')
+md.timestepping.time_step = 1.
+md.timestepping.final_time = 3.
+md.groundingline.migration = 'None'
+
+#Deal with boundary conditions:
+md = SetIceSheetBC(md)
+
+#Change name so that no tests have the same name
+if len(inspect.stack()) > 2:
+    md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/SquareSheetShelf.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/SquareSheetShelf.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/SquareSheetShelf.par	(revision 27955)
@@ -0,0 +1,68 @@
+%Start defining model parameters here
+
+%Geometry
+hmin=300.;
+hmax=1000.;
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+xmin=min(md.mesh.x);
+xmax=max(md.mesh.x);
+md.geometry.thickness=hmax+(hmin-hmax)*(md.mesh.y-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x-xmin)/(xmax-xmin);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+bed_sheet=-md.materials.rho_ice/md.materials.rho_water*(hmax+(hmin-hmax)*(ymax/2-ymin)/(ymax-ymin));
+pos=find(md.mesh.y<=ymax/2.);
+md.geometry.base(pos)=bed_sheet;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%Initial velocity 
+x     = archread('../Data/SquareSheetShelf.arch','x');
+y     = archread('../Data/SquareSheetShelf.arch','y');
+vx    = archread('../Data/SquareSheetShelf.arch','vx');
+vy    = archread('../Data/SquareSheetShelf.arch','vy');
+index = archread('../Data/SquareSheetShelf.arch','index');
+x = x{1};
+y = y{1};
+vx = vx{1};
+vy = vy{1};
+index = index{1};
+md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+clear vx vy x y index;
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+%Accumulation and melting
+md.smb.mass_balance=10.*ones(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate=5.*ones(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=5.*ones(md.mesh.numberofvertices,1);
+
+%Friction
+md.friction.coefficient=20.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.masstransport.stabilization=1;
+md.thermal.stabilization=1;
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.stressbalance.restol=0.05;
+md.steadystate.reltol=0.05;
+md.stressbalance.reltol=0.05;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=1.;
+md.timestepping.final_time=3.;
+md.groundingline.migration='None';
+
+%Deal with boundary conditions:
+md=SetMarineIceSheetBC(md,'../Exp/SquareFront.exp');
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/SquareSheetShelf.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/SquareSheetShelf.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/SquareSheetShelf.py	(revision 27955)
@@ -0,0 +1,72 @@
+import os.path
+import inspect
+from arch import *
+import numpy as np
+from verbose import verbose
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from paterson import paterson
+from SetMarineIceSheetBC import SetMarineIceSheetBC
+
+#Start defining model parameters here
+
+#Geometry
+hmin = 300.
+hmax = 1000.
+ymin = min(md.mesh.y)
+ymax = max(md.mesh.y)
+xmin = min(md.mesh.x)
+xmax = max(md.mesh.x)
+md.geometry.thickness = hmax + (hmin - hmax) * (md.mesh.y - ymin) / (ymax - ymin) + 0.1 * (hmin - hmax) * (md.mesh.x - xmin) / (xmax - xmin)
+md.geometry.base = -md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness
+bed_sheet = -md.materials.rho_ice / md.materials.rho_water * (hmax + (hmin - hmax) * (ymax / 2 - ymin) / (ymax - ymin))
+pos = np.nonzero(md.mesh.y <= ymax / 2.)
+md.geometry.base[pos] = bed_sheet
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+#Initial velocity
+x = np.array(archread('../Data/SquareSheetShelf.arch', 'x'))
+y = np.array(archread('../Data/SquareSheetShelf.arch', 'y'))
+vx = np.array(archread('../Data/SquareSheetShelf.arch', 'vx'))
+vy = np.array(archread('../Data/SquareSheetShelf.arch', 'vy'))
+index = np.array(archread('../Data/SquareSheetShelf.arch', 'index')).astype(int)
+
+md.initialization.vx = InterpFromMeshToMesh2d(index, x, y, vx, md.mesh.x, md.mesh.y)
+md.initialization.vy = InterpFromMeshToMesh2d(index, x, y, vy, md.mesh.x, md.mesh.y)
+md.initialization.vz = np.zeros((md.mesh.numberofvertices))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices))
+
+#Materials
+md.initialization.temperature = (273. - 20.) * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
+
+#Accumulation and melting
+md.smb.mass_balance = 10. * np.ones((md.mesh.numberofvertices))
+md.basalforcings.groundedice_melting_rate = 5. * np.ones((md.mesh.numberofvertices))
+md.basalforcings.floatingice_melting_rate = 5. * np.ones((md.mesh.numberofvertices))
+
+#Friction
+md.friction.coefficient = 20. * np.ones((md.mesh.numberofvertices))
+md.friction.coefficient[np.nonzero(md.mask.ocean_levelset < 0.)[0]] = 0.
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+#Numerical parameters
+md.masstransport.stabilization = 1
+md.thermal.stabilization = 1
+md.verbose = verbose(0)
+md.settings.waitonlock = 30
+md.stressbalance.restol = 0.05
+md.steadystate.reltol = 0.05
+md.stressbalance.reltol = 0.05
+md.stressbalance.abstol = float('NaN')
+md.timestepping.time_step = 1.
+md.timestepping.final_time = 3.
+md.groundingline.migration = 'None'
+
+#Deal with boundary conditions:
+md = SetMarineIceSheetBC(md, '../Exp/SquareFront.exp')
+
+#Change name so that no test have the same name
+if len(inspect.stack()) > 2:
+    md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelf.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelf.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelf.par	(revision 27955)
@@ -0,0 +1,61 @@
+%Start defining model parameters here
+
+%Geometry
+hmin=300;
+hmax=1000;
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+xmin=min(md.mesh.x);
+xmax=max(md.mesh.x);
+md.geometry.thickness=hmax+(hmin-hmax)*(md.mesh.y-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x-xmin)/(xmax-xmin);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md.geometry.bed = md.geometry.base-500.;
+
+%Initial velocity and pressure
+x     = archread('../Data/SquareShelf.arch','x');
+y     = archread('../Data/SquareShelf.arch','y');
+vx    = archread('../Data/SquareShelf.arch','vx');
+vy    = archread('../Data/SquareShelf.arch','vy');
+index = archread('../Data/SquareShelf.arch','index');
+x = x{1};
+y = y{1};
+vx = vx{1};
+vy = vy{1};
+index = index{1};
+md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+clear vx vy x y index;
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+%Friction
+md.friction.coefficient=20*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.masstransport.stabilization=1;
+md.thermal.stabilization=1;
+md.settings.waitonlock=30;
+md.verbose=verbose(0);
+md.stressbalance.restol=0.10;
+md.steadystate.reltol=0.02;
+md.stressbalance.reltol=0.02;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=1;
+md.timestepping.final_time=3;
+md.groundingline.migration='None';
+
+%Boundary conditions:
+md=SetIceShelfBC(md,'../Exp/SquareFront.exp');
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelf.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelf.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelf.py	(revision 27955)
@@ -0,0 +1,90 @@
+from arch import *
+import inspect
+import os.path
+
+import numpy as np
+
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from paterson import paterson
+from SetIceShelfBC import SetIceShelfBC
+from verbose import verbose
+
+#Start defining model parameters here
+#Geometry
+hmin = 300.
+hmax = 1000.
+ymin = min(md.mesh.y)
+ymax = max(md.mesh.y)
+xmin = min(md.mesh.x)
+xmax = max(md.mesh.x)
+md.geometry.thickness = hmax + (hmin - hmax) * (md.mesh.y - ymin) / (ymax - ymin) + 0.1 * (hmin - hmax) * (md.mesh.x - xmin) / (xmax - xmin)
+md.geometry.base = -md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md.geometry.bed = md.geometry.base - 500.
+
+#Initial velocity and pressure
+x = np.array(archread('../Data/SquareShelf.arch', 'x'))
+y = np.array(archread('../Data/SquareShelf.arch', 'y'))
+vx = np.array(archread('../Data/SquareShelf.arch', 'vx'))
+vy = np.array(archread('../Data/SquareShelf.arch', 'vy'))
+index = archread('../Data/SquareShelf.arch', 'index').astype(int)
+
+#dbg - begin
+#  #print 'vars in SquareShelf.nc:'
+#  #for v in iVelF.variables:
+#  #    print v
+#dbg - end
+
+# x = x[0][:]
+# y = y[0][:]
+# vx = vx[0][:]
+# vy = vy[0][:]
+# index = index[0][:]
+
+md.initialization.vx = InterpFromMeshToMesh2d(index, x, y, vx, md.mesh.x, md.mesh.y)
+md.initialization.vy = InterpFromMeshToMesh2d(index, x, y, vy, md.mesh.x, md.mesh.y)
+x = y = vx = vy = index = None
+md.initialization.vz = np.zeros((md.mesh.numberofvertices))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices))
+
+#dbg - begin
+#print '...vx:'
+#print md.initialization.vx
+#print '...vy:'
+#print md.initialization.vy
+#  #print '...vz:'
+#  #print md.initialization.vz
+#  #print '...pressure:'
+#  #print md.initialization.pressure
+#dbg - end
+
+# Materials
+md.initialization.temperature = (273 - 20) * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3 * np.ones((md.mesh.numberofelements))
+
+# Friction
+md.friction.coefficient = 20 * np.ones((md.mesh.numberofvertices))
+md.friction.coefficient[np.where(md.mask.ocean_levelset < 0)[0]] = 0
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+# Numerical parameters
+md.masstransport.stabilization = 1
+md.thermal.stabilization = 1
+md.settings.waitonlock = 30
+md.verbose = verbose()
+md.stressbalance.restol = 0.10
+md.steadystate.reltol = 0.02
+md.stressbalance.reltol = 0.02
+md.stressbalance.abstol = np.nan
+md.timestepping.time_step = 1
+md.timestepping.final_time = 3
+md.groundingline.migration = 'None'
+
+# Boundary conditions:
+md = SetIceShelfBC(md, '../Exp/SquareFront.exp')
+
+#Change name so that no test have the same name
+if len(inspect.stack()) > 2:
+    md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelf2.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelf2.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelf2.par	(revision 27955)
@@ -0,0 +1,60 @@
+%Start defining model parameters here
+
+%Geometry
+hmin=300;
+hmax=1000;
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+xmin=min(md.mesh.x);
+xmax=max(md.mesh.x);
+md.geometry.thickness=hmax+(hmin-hmax)*(md.mesh.y-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x-xmin)/(xmax-xmin);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+%Initial velocity and pressure
+x     = archread('../Data/SquareShelf.arch','x');
+y     = archread('../Data/SquareShelf.arch','y');
+vx    = archread('../Data/SquareShelf.arch','vx');
+vy    = archread('../Data/SquareShelf.arch','vy');
+index = archread('../Data/SquareShelf.arch','index');
+x = x{1};
+y = y{1};
+vx = vx{1};
+vy = vy{1};
+index = index{1};
+md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+clear vx vy x y index;
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+%Friction
+md.friction.coefficient=20*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.masstransport.stabilization=1;
+md.thermal.stabilization=1;
+md.settings.waitonlock=30;
+md.verbose=verbose(0);
+md.stressbalance.restol=0.10;
+md.steadystate.reltol=0.02;
+md.stressbalance.reltol=0.02;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=1;
+md.timestepping.final_time=3;
+md.groundingline.migration='None';
+
+%Boundary conditions:
+md=SetIceShelfBC(md,'../Exp/SquareFront2.exp');
+
+%Change name so that no test have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelf2.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelf2.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelf2.py	(revision 27955)
@@ -0,0 +1,81 @@
+import os.path
+import inspect
+from arch import *
+import numpy as np
+from verbose import verbose
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from paterson import paterson
+from SetIceShelfBC import SetIceShelfBC
+
+#Start defining model parameters here
+#Geometry
+hmin = 300.
+hmax = 1000.
+ymin = min(md.mesh.y)
+ymax = max(md.mesh.y)
+xmin = min(md.mesh.x)
+xmax = max(md.mesh.x)
+md.geometry.thickness = hmax + (hmin - hmax) * (md.mesh.y - ymin) / (ymax - ymin) + 0.1 * (hmin - hmax) * (md.mesh.x - xmin) / (xmax - xmin)
+md.geometry.base = -md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+#Initial velocity and pressure
+x = np.array(archread('../Data/SquareShelf.arch', 'x'))
+y = np.array(archread('../Data/SquareShelf.arch', 'y'))
+vx = np.array(archread('../Data/SquareShelf.arch', 'vx'))
+vy = np.array(archread('../Data/SquareShelf.arch', 'vy'))
+index = archread('../Data/SquareShelf.arch', 'index').astype(int)
+#dbg - begin
+#  #print 'vars in SquareShelf.nc:'
+#  #for v in iVelF.variables:
+#  #    print v
+#dbg - end
+
+md.initialization.vx = InterpFromMeshToMesh2d(index, x, y, vx, md.mesh.x, md.mesh.y)
+md.initialization.vy = InterpFromMeshToMesh2d(index, x, y, vy, md.mesh.x, md.mesh.y)
+md.initialization.vz = np.zeros((md.mesh.numberofvertices))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices))
+
+#dbg - begin
+#print '...vx:'
+#print md.initialization.vx
+#print '...vy:'
+#print md.initialization.vy
+#  #print '...vz:'
+#  #print md.initialization.vz
+#  #print '...pressure:'
+#  #print md.initialization.pressure
+#dbg - end
+
+
+#Materials
+md.initialization.temperature = (273. - 20.) * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
+
+#Friction
+md.friction.coefficient = 20. * np.ones((md.mesh.numberofvertices))
+md.friction.coefficient[np.nonzero(md.mask.ocean_levelset < 0.)[0]] = 0.
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+#Numerical parameters
+md.masstransport.stabilization = 1.
+md.thermal.stabilization = 1.
+md.settings.waitonlock = 30
+md.verbose = verbose()
+md.stressbalance.restol = 0.10
+md.steadystate.reltol = 0.02
+md.stressbalance.reltol = 0.02
+md.stressbalance.abstol = float('nan')
+md.timestepping.time_step = 1.
+md.timestepping.final_time = 3.
+md.groundingline.migration = 'None'
+
+#Boundary conditions:
+#  #md = SetIceShelfBC(md)
+md = SetIceShelfBC(md, '../Exp/SquareFront2.exp')
+
+#Change name so that no test have the same name
+if len(inspect.stack()) > 2:
+    md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelfConstrained.js
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelfConstrained.js	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelfConstrained.js	(revision 27955)
@@ -0,0 +1,69 @@
+function parameterize(md){
+
+	//Geometry
+	var hmin=300;
+	var hmax=1000;
+	var ymin=ArrayMin(md.mesh.y);
+	var ymax=ArrayMax(md.mesh.y);
+	var xmin=ArrayMin(md.mesh.x);
+	var xmax=ArrayMax(md.mesh.x);
+	
+	md.geometry.thickness=NewArrayFill(md.mesh.numberofvertices,0);
+	md.geometry.base=NewArrayFill(md.mesh.numberofvertices,0);
+	md.geometry.surface=NewArrayFill(md.mesh.numberofvertices,0);
+	md.geometry.bed=NewArrayFill(md.mesh.numberofvertices,0);
+
+	for(i=0;i<md.mesh.numberofvertices;i++){
+		md.geometry.thickness[i]=hmax+(hmin-hmax)*(md.mesh.y[i]-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x[i]-xmin)/(xmax-xmin);
+		md.geometry.base[i]=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness[i];
+		md.geometry.surface[i]=md.geometry.base[i]+md.geometry.thickness[i];
+		md.geometry.bed[i]=md.geometry.base[i]-10;
+	}
+	
+	//Initial velocity: no ncreader for now, so we just load arrays.
+	/*x     = transpose(ncread('../Data/SquareShelfConstrained.nc','x'));
+	y     = transpose(ncread('../Data/SquareShelfConstrained.nc','y'));
+	vx    = transpose(ncread('../Data/SquareShelfConstrained.nc','vx'));
+	vy    = transpose(ncread('../Data/SquareShelfConstrained.nc','vy'));
+	index = transpose(ncread('../Data/SquareShelfConstrained.nc','index'));*/
+	
+	md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+	md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+	md.initialization.vel=ArrayMag(md.initialization.vx,md.initialization.vy);
+	md.initialization.vz=NewArrayFill(md.mesh.numberofvertices,0);
+	md.initialization.pressure=NewArrayFill(md.mesh.numberofvertices,0);
+
+	//Materials
+	md.initialization.temperature=NewArrayFill(md.mesh.numberofvertices,273-20);
+	md.materials.rheology_B=paterson(md.initialization.temperature);
+	md.materials.rheology_n=NewArrayFill(md.mesh.numberofelements,3);
+
+	//Surface mass balance and basal melting
+	md.smb.mass_balance=NewArrayFill(md.mesh.numberofvertices,10);
+	md.basalforcings.floatingice_melting_rate=NewArrayFill(md.mesh.numberofvertices,5.0);
+	md.basalforcings.groundedice_melting_rate=NewArrayFill(md.mesh.numberofvertices,5.0);
+
+	//Friction
+	md.friction.coefficient=NewArrayFill(md.mesh.numberofvertices,20);
+	for(var i=0;i<md.mesh.numberofvertices;i++)if(md.mask.groundedice_levelset[i]<0)md.friction.coefficient[i]=0;
+	md.friction.p=NewArrayFill(md.mesh.numberofelements,1);
+	md.friction.q=NewArrayFill(md.mesh.numberofelements,1);
+
+	//Numerical parameters
+	md.masstransport.stabilization=1;
+	md.thermal.stabilization=1;
+	md.verbose=new verbose(0);
+	md.settings.waitonlock=30;
+	md.stressbalance.restol=0.05;
+	md.stressbalance.reltol=0.05;
+	md.steadystate.reltol=0.05;
+	md.stressbalance.abstol=NaN;
+	md.timestepping.time_step=1;
+	md.timestepping.final_time=3;
+
+	//Deal with boundary conditions:
+	SetIceShelfBC(md);
+
+	//Change name so that no tests have the same name
+	md.miscellaneous.name='test101';
+}
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelfConstrained.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelfConstrained.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelfConstrained.par	(revision 27955)
@@ -0,0 +1,65 @@
+%Start defining model parameters here
+
+%Geometry
+hmin=300;
+hmax=1000;
+ymin=min(md.mesh.y);
+ymax=max(md.mesh.y);
+xmin=min(md.mesh.x);
+xmax=max(md.mesh.x);
+md.geometry.thickness=hmax+(hmin-hmax)*(md.mesh.y-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x-xmin)/(xmax-xmin);
+md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md.geometry.bed=md.geometry.base-10;
+
+%Initial velocity 
+x     = archread([issmdir() '/test/Data/SquareShelfConstrained.arch'],'x');
+y     = archread([issmdir() '/test/Data/SquareShelfConstrained.arch'],'y');
+vx    = archread([issmdir() '/test/Data/SquareShelfConstrained.arch'],'vx');
+vy    = archread([issmdir() '/test/Data/SquareShelfConstrained.arch'],'vy');
+index = archread([issmdir() '/test/Data/SquareShelfConstrained.arch'],'index');
+x = x{1};
+y = y{1};
+vx = vx{1};
+vy = vy{1};
+index = index{1};
+md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+clear vx vy x y index;
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature=(273-20)*ones(md.mesh.numberofvertices,1);
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+
+%Surface mass balance and basal melting
+md.smb.mass_balance=10*ones(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=5*ones(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate=5*ones(md.mesh.numberofvertices,1);
+
+%Friction
+md.friction.coefficient=20*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+%Numerical parameters
+md.masstransport.stabilization=1;
+md.thermal.stabilization=1;
+md.verbose=verbose(0);
+md.settings.waitonlock=30;
+md.stressbalance.restol=0.05;
+md.stressbalance.reltol=0.05;
+md.steadystate.reltol=0.05;
+md.stressbalance.abstol=NaN;
+md.timestepping.time_step=1;
+md.timestepping.final_time=3;
+
+%Deal with boundary conditions:
+md=SetIceShelfBC(md);
+
+%Change name so that no tests have the same name
+A=dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelfConstrained.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelfConstrained.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/SquareShelfConstrained.py	(revision 27955)
@@ -0,0 +1,68 @@
+import os.path
+from arch import archread
+import numpy as np
+import inspect
+from verbose import verbose
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from paterson import paterson
+from SetIceShelfBC import SetIceShelfBC
+
+#Start defining model parameters here
+#Geometry
+hmin = 300.
+hmax = 1000.
+ymin = np.min(md.mesh.y)
+ymax = np.max(md.mesh.y)
+xmin = min(md.mesh.x)
+xmax = max(md.mesh.x)
+md.geometry.thickness = hmax + (hmin - hmax) * (md.mesh.y - ymin) / (ymax - ymin) + 0.1 * (hmin - hmax) * (md.mesh.x - xmin) / (xmax - xmin)
+md.geometry.base = -md.materials.rho_ice / md.materials.rho_water * md.geometry.thickness
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+md.geometry.bed = md.geometry.base - 10
+
+#Initial velocity
+x = np.array(archread('../Data/SquareShelfConstrained.arch', 'x'))
+y = np.array(archread('../Data/SquareShelfConstrained.arch', 'y'))
+vx = np.array(archread('../Data/SquareShelfConstrained.arch', 'vx'))
+vy = np.array(archread('../Data/SquareShelfConstrained.arch', 'vy'))
+index = np.array(archread('../Data/SquareShelfConstrained.arch', 'index').astype(int))
+
+md.initialization.vx = InterpFromMeshToMesh2d(index, x, y, vx, md.mesh.x, md.mesh.y)
+md.initialization.vy = InterpFromMeshToMesh2d(index, x, y, vy, md.mesh.x, md.mesh.y)
+md.initialization.vz = np.zeros((md.mesh.numberofvertices))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices))
+
+#Materials
+md.initialization.temperature = (273. - 20.) * np.ones((md.mesh.numberofvertices))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
+
+#Surface mass balance and basal melting
+md.smb.mass_balance = 10. * np.ones((md.mesh.numberofvertices))
+md.basalforcings.groundedice_melting_rate = 5. * np.ones((md.mesh.numberofvertices))
+md.basalforcings.floatingice_melting_rate = 5. * np.ones((md.mesh.numberofvertices))
+
+#Friction
+md.friction.coefficient = 20. * np.ones((md.mesh.numberofvertices))
+md.friction.coefficient[np.nonzero(md.mask.ocean_levelset < 0.)[0]] = 0.
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+#Numerical parameters
+md.masstransport.stabilization = 1
+md.thermal.stabilization = 1
+md.verbose = verbose(0)
+md.settings.waitonlock = 30
+md.stressbalance.restol = 0.05
+md.stressbalance.reltol = 0.05
+md.steadystate.reltol = 0.05
+md.stressbalance.abstol = float('nan')
+md.timestepping.time_step = 1.
+md.timestepping.final_time = 3.
+
+#Deal with boundary conditions:
+md = SetIceShelfBC(md)
+
+#Change name so that no tests have the same name
+if len(inspect.stack()) > 2:
+    md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/SquareThermal.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/SquareThermal.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/SquareThermal.par	(revision 27955)
@@ -0,0 +1,46 @@
+%Ok, start defining model parameters here
+
+md.timestepping.time_step=0;
+md.groundingline.migration='None';
+
+disp('      creating thickness');
+h=1000.;
+md.geometry.thickness=h*ones(md.mesh.numberofvertices,1);
+md.geometry.base=-1000.*ones(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+disp('      creating velocities');
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.vz=zeros(md.mesh.numberofvertices,1);
+
+disp('      creating drag');
+md.friction.coefficient=200.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.))=0.;
+md.friction.p=ones(md.mesh.numberofelements,1);
+md.friction.q=ones(md.mesh.numberofelements,1);
+
+disp('      creating temperatures');
+md.initialization.temperature=(273.-20.)*ones(md.mesh.numberofvertices,1);
+md.initialization.pressure=zeros(md.mesh.numberofvertices,1);
+md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn=zeros(md.mesh.numberofvertices,1);
+
+disp('      creating flow law parameter');
+md.materials.rheology_B=paterson(md.initialization.temperature);
+md.materials.rheology_n=3.*ones(md.mesh.numberofelements,1);
+
+disp('      creating surface mass balance');
+md.smb.mass_balance=ones(md.mesh.numberofvertices,1)/md.constants.yts; %1m/a
+md.basalforcings.groundedice_melting_rate=0.*ones(md.mesh.numberofvertices,1)/md.constants.yts; %1m/a
+md.basalforcings.floatingice_melting_rate=0.*ones(md.mesh.numberofvertices,1)/md.constants.yts; %1m/a
+
+%Deal with boundary conditions:
+
+disp('      boundary conditions for stressbalance model');
+md=SetMarineIceSheetBC(md,'../Exp/SquareFront.exp');
+
+disp('      boundary conditions for thermal model');
+md.thermal.spctemperature(:)=md.initialization.temperature;
+md.basalforcings.geothermalflux=zeros(md.mesh.numberofvertices,1); 
+md.basalforcings.geothermalflux(find(md.mask.ocean_levelset>0.))=1.*10^-3; %1 mW/m^2
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/SquareThermal.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/SquareThermal.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/SquareThermal.py	(revision 27955)
@@ -0,0 +1,51 @@
+import numpy as np
+from paterson import paterson
+from SetMarineIceSheetBC import SetMarineIceSheetBC
+
+#Ok, start defining model parameters here
+
+md.timestepping.time_step = 0
+md.groundingline.migration = 'None'
+
+print("      creating thickness")
+h = 1000.
+md.geometry.thickness = h * np.ones((md.mesh.numberofvertices))
+md.geometry.base = -1000. * np.ones((md.mesh.numberofvertices))
+md.geometry.surface = md.geometry.base + md.geometry.thickness
+
+print("      creating velocities")
+md.initialization.vx = np.zeros((md.mesh.numberofvertices))
+md.initialization.vy = np.zeros((md.mesh.numberofvertices))
+md.initialization.vz = np.zeros((md.mesh.numberofvertices))
+
+print("      creating drag")
+md.friction.coefficient = 200. * np.ones((md.mesh.numberofvertices))
+md.friction.coefficient[np.nonzero(md.mask.ocean_levelset < 0.)[0]] = 0.
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+print("      creating temperatures")
+md.initialization.temperature = (273. - 20.) * np.ones((md.mesh.numberofvertices))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.waterfraction = np.zeros((md.mesh.numberofvertices, ))
+md.initialization.watercolumn = np.zeros((md.mesh.numberofvertices, ))
+
+print("      creating flow law parameter")
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
+
+print("      creating surface mass balance")
+md.smb.mass_balance = np.ones((md.mesh.numberofvertices)) / md.constants.yts  #1m / a
+#md.basalforcings.melting_rate = 0. * np.ones((md.mesh.numberofvertices)) / md.constants.yts  #1m / a
+md.basalforcings.groundedice_melting_rate = 0. * np.ones((md.mesh.numberofvertices)) / md.constants.yts  #1m / a
+md.basalforcings.floatingice_melting_rate = 0. * np.ones((md.mesh.numberofvertices)) / md.constants.yts  #1m / a
+
+#Deal with boundary conditions:
+
+print("      boundary conditions for stressbalance model")
+md = SetMarineIceSheetBC(md, '../Exp/SquareFront.exp')
+
+print("      boundary conditions for thermal model")
+md.thermal.spctemperature[:] = md.initialization.temperature
+md.basalforcings.geothermalflux = np.zeros((md.mesh.numberofvertices))
+md.basalforcings.geothermalflux[np.nonzero(md.mask.ocean_levelset > 0.)[0]] = 1. * 10**-3  #1 mW / m^2
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/ValleyGlacierShelf.par
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/ValleyGlacierShelf.par	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/ValleyGlacierShelf.par	(revision 27955)
@@ -0,0 +1,95 @@
+%Start defining model parameters here
+x = md.mesh.x;
+y = md.mesh.y;
+xmin = min(x);
+xmax = max(x);
+ymin = min(y);
+ymax = max(y);
+Lx = (xmax-xmin);
+Ly = (ymax-ymin);
+xm = (xmin+xmax)/2.;
+ym = (ymin+ymax)/2.;
+
+%Geometry: U-shaped valley in y direction
+thk_center = 1000.;
+thk_margin = 0.5*thk_center;
+bmax = 0.;
+bmin = -thk_center*md.materials.rho_ice/md.materials.rho_water;
+
+alpha = 2./3.;
+slope = 0.9*(bmin-bmax)*(x-xmin)/(Lx*alpha) + 0.1*(bmin-bmax)*(y-ymin)/(Ly) + bmax;
+md.geometry.surface = (thk_center+bmax) + slope ;
+md.geometry.base = bmax + slope + 4./Ly^2*(thk_center-thk_margin)*(y-ym).^2;
+md.geometry.thickness = md.geometry.surface - md.geometry.base;
+md.geometry.bed = md.geometry.base;
+
+%Mask
+md.mask.ice_levelset = x - alpha*Lx;
+md.mask.ocean_levelset = ones(md.mesh.numberofvertices,1);
+
+%Initial velocity 
+md.initialization.vx = zeros(md.mesh.numberofvertices,1);
+md.initialization.vy = zeros(md.mesh.numberofvertices,1);
+md.initialization.vz = zeros(md.mesh.numberofvertices,1);
+md.initialization.pressure = zeros(md.mesh.numberofvertices,1);
+
+%Materials
+md.initialization.temperature = (273.15-5.)*ones(md.mesh.numberofvertices,1);
+md.initialization.waterfraction = zeros(md.mesh.numberofvertices,1);
+md.initialization.watercolumn = zeros(md.mesh.numberofvertices,1);
+md.materials.rheology_B = paterson(md.initialization.temperature);
+md.materials.rheology_n = 3.*ones(md.mesh.numberofelements,1);
+
+%Thermal
+md.thermal.isenthalpy = 0;
+md.thermal.spctemperature = NaN(md.mesh.numberofvertices,1);
+
+%Groundingline
+md.groundingline.migration = 'SubelementMigration';
+
+%Surface mass balance and basal melting
+md.smb.mass_balance = 0.3*ones(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate = md.smb.mass_balance;
+md.basalforcings.groundedice_melting_rate = md.smb.mass_balance;
+
+%Friction
+md.friction.coefficient = 20.*ones(md.mesh.numberofvertices,1);
+md.friction.coefficient(find(md.mask.ocean_levelset<0.)) = 0.;
+md.friction.p = ones(md.mesh.numberofelements,1);
+md.friction.q = ones(md.mesh.numberofelements,1);
+
+%Transient
+md.transient.isstressbalance = 1;
+md.transient.ismovingfront = 1;
+md.transient.ismasstransport = 0;
+md.transient.isthermal = 0;
+md.transient.isgroundingline = 1;
+
+%Stressbalance
+md.stressbalance.maxiter = 100;
+md.stressbalance.restol = 0.05;
+md.stressbalance.reltol = 0.05;
+md.stressbalance.abstol = NaN;
+
+%Masstransport;
+md.calving.calvingrate = 0.*ones(md.mesh.numberofvertices,1);
+md.frontalforcings.meltingrate = 0.*ones(md.mesh.numberofvertices,1);
+md.levelset.spclevelset=NaN(md.mesh.numberofvertices,1);
+md.masstransport.stabilization = 1.;
+
+%Numerical parameters
+md.thermal.stabilization = 1.;
+md.settings.waitonlock = 30;
+md.steadystate.reltol = 0.05;
+md.timestepping.time_step = 1.;
+md.timestepping.final_time = 3.;
+
+%Verbose
+md.verbose = verbose(0);
+
+%Deal with boundary conditions:
+md = SetIceShelfBC(md);
+
+%Change name so that no test have the same name;
+A = dbstack;
+if (length(A)>2), md.miscellaneous.name=A(3).file(1:end-2); end
Index: /issm/branches/trunk-dlcheng-ASE/test/Par/ValleyGlacierShelf.py
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/Par/ValleyGlacierShelf.py	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/Par/ValleyGlacierShelf.py	(revision 27955)
@@ -0,0 +1,100 @@
+import os.path
+from arch import *
+import numpy as np
+import inspect
+from verbose import verbose
+from paterson import paterson
+from SetIceShelfBC import SetIceShelfBC
+
+#Start defining model parameters here
+x = md.mesh.x
+y = md.mesh.y
+xmin, xmax = min(x), max(x)
+ymin, ymax = min(y), max(y)
+Lx = (xmax - xmin)
+Ly = (ymax - ymin)
+xm, ym = (xmin + xmax) / 2., (ymin + ymax) / 2.
+
+#Geometry: U - shaped valley in y direction
+thk_center = 1000.
+thk_margin = 0.5 * thk_center
+bmax = 0.
+bmin = -thk_center * md.materials.rho_ice / md.materials.rho_water
+
+alpha = 2. / 3.
+slope = 0.9 * (bmin - bmax) * (x - xmin) / (Lx * alpha) + 0.1 * (bmin - bmax) * (y - ymin) / (Ly) + bmax
+md.geometry.surface = (thk_center + bmax) + slope
+md.geometry.base = bmax + slope + 4. / Ly**2 * (thk_center - thk_margin) * (np.power(y - ym, 2))
+md.geometry.thickness = md.geometry.surface - md.geometry.base
+md.geometry.bed = md.geometry.base
+
+#Mask
+md.mask.ice_levelset = x - alpha * Lx
+md.mask.ocean_levelset = np.ones((md.mesh.numberofvertices))
+
+#Initial velocity
+md.initialization.vx = np.zeros((md.mesh.numberofvertices))
+md.initialization.vy = np.zeros((md.mesh.numberofvertices))
+md.initialization.vz = np.zeros((md.mesh.numberofvertices))
+md.initialization.pressure = np.zeros((md.mesh.numberofvertices))
+
+#Materials
+md.initialization.temperature = (273.15 - 5.) * np.ones((md.mesh.numberofvertices))
+md.initialization.waterfraction = np.zeros((md.mesh.numberofvertices))
+md.initialization.watercolumn = np.zeros((md.mesh.numberofvertices))
+md.materials.rheology_B = paterson(md.initialization.temperature)
+md.materials.rheology_n = 3. * np.ones((md.mesh.numberofelements))
+
+#Thermal
+md.thermal.isenthalpy = False
+md.thermal.spctemperature = float('nan') * np.ones((md.mesh.numberofvertices))
+
+#Groundingline
+md.groundingline.migration = 'SubelementMigration'
+
+#Surface mass balance and basal melting
+md.smb.mass_balance = 0.3 * np.ones((md.mesh.numberofvertices))
+md.basalforcings.groundedice_melting_rate = md.smb.mass_balance
+md.basalforcings.floatingice_melting_rate = md.smb.mass_balance
+
+#Friction
+md.friction.coefficient = 20. * np.ones((md.mesh.numberofvertices))
+md.friction.coefficient[np.nonzero(md.mask.ocean_levelset < 0.)[0]] = 0.
+md.friction.p = np.ones((md.mesh.numberofelements))
+md.friction.q = np.ones((md.mesh.numberofelements))
+
+#Transient
+md.transient.isstressbalance = True
+md.transient.ismovingfront = True
+md.transient.ismasstransport = False
+md.transient.isthermal = False
+md.transient.isgroundingline = True
+
+#Stressbalance
+md.stressbalance.maxiter = 100
+md.stressbalance.restol = 0.05
+md.stressbalance.reltol = 0.05
+md.stressbalance.abstol = float('nan')
+
+#Masstransport
+md.calving.calvingrate = 0. * np.ones((md.mesh.numberofvertices))
+md.frontalforcings.meltingrate = 0. * np.ones((md.mesh.numberofvertices))
+md.levelset.spclevelset = float('NaN') * np.ones((md.mesh.numberofvertices))
+md.masstransport.stabilization = 1.
+
+#Numerical parameters
+md.thermal.stabilization = 1.
+md.settings.waitonlock = 30
+md.steadystate.reltol = 0.05
+md.timestepping.time_step = 1.
+md.timestepping.final_time = 3.
+
+#Verbose
+md.verbose = verbose(0)
+
+#Deal with boundary conditions:
+md = SetIceShelfBC(md)
+
+#Change name so that no tests have the same name
+if len(inspect.stack()) > 2:
+    md.miscellaneous.name = os.path.basename(inspect.stack()[2][1]).split('.')[0]
Index: /issm/branches/trunk-dlcheng-ASE/test/SandBox/Makefile
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/SandBox/Makefile	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/SandBox/Makefile	(revision 27955)
@@ -0,0 +1,2 @@
+clean: 
+	rm -rf *.tar.gz *.errlog *.outlog *.bin *.qmu.in *.qmu.out *qmu.err *.queue *.toolkits *.out *.outbin.*
Index: /issm/branches/trunk-dlcheng-ASE/test/SandBox/bp2002.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/SandBox/bp2002.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/SandBox/bp2002.m	(revision 27955)
@@ -0,0 +1,74 @@
+%Test Name: EarthSlr
+
+%mesh earth:
+md=model;
+md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',700.); %500 km resolution mesh
+md.cluster.np=3
+md.verbose=verbose('11111111');
+
+%parameterize slr solution:
+%slr loading:  {{{
+md.slr.deltathickness=zeros(md.mesh.numberofelements,1);
+md.slr.sealevel=zeros(md.mesh.numberofvertices,1);
+md.dsl.global_average_thermosteric_sea_level_change=[0;0];
+md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1);
+md.dsl.sea_water_pressure_change_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
+
+%elastic loading from love numbers:
+nlov=101;
+md.slr.love_h = love_numbers('h','CM'); md.slr.love_h(nlov+1:end)=[];
+md.slr.love_k = love_numbers('k','CM'); md.slr.love_k(nlov+1:end)=[];
+md.slr.love_l = love_numbers('l','CM'); md.slr.love_l(nlov+1:end)=[];
+
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+icemask=ones(md.mesh.numberofvertices,1);
+pos=find(mask==0);  icemask(pos)=-1;
+pos=find(sum(mask(md.mesh.elements),2)<3);   icemask(md.mesh.elements(pos,:))=-1;
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=-icemask;
+
+%make sure that the elements that have loads are fully grounded:
+pos=find(md.slr.deltathickness);
+md.mask.ocean_levelset(md.mesh.elements(pos,:))=1;
+
+%make sure wherever there is an ice load, that the mask is set to ice:
+pos=find(md.slr.deltathickness);
+md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+% }}}
+
+md.slr.ocean_area_scaling=0;
+
+%Geometry for the bed, arbitrary: 
+md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+
+%Materials: 
+md.materials=materials('hydro');
+
+%New stuff
+md.slr.spcthickness = NaN(md.mesh.numberofvertices,1);
+md.slr.Ngia = zeros(md.mesh.numberofvertices,1);
+md.slr.Ugia = zeros(md.mesh.numberofvertices,1);
+md.slr.hydro_rate = zeros(md.mesh.numberofvertices,1);
+
+%Miscellaneous
+md.miscellaneous.name='test2002';
+
+%Solution parameters
+md.slr.reltol=NaN;
+md.slr.abstol=1e-3;
+md.slr.geodetic=1;
+
+% max number of iteration reverted back to 10 (i.e., the original default value)
+md.slr.maxiter=10;
+
+%bottom pressures: 
+pos=find(md.mesh.long<-150 & md.mesh.long > -160 & md.mesh.lat < 30 & md.mesh.lat > 10);
+md.dsl.sea_water_pressure_change_at_sea_floor(pos)=1*md.constants.yts; %mm/yr
+md.dsl.compute_fingerprints=1;
+
+%eustatic run:
+md.slr.rigid=1; md.slr.elastic=1;md.slr.rotation=1;
+md=solve(md,'Sealevelrise');
+
Index: /issm/branches/trunk-dlcheng-ASE/test/SandBox/corr2002.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/SandBox/corr2002.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/SandBox/corr2002.m	(revision 27955)
@@ -0,0 +1,182 @@
+%Test Name: EarthSlr
+
+%mesh earth:
+md=model;
+md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',700.); %500 km resolution mesh
+md.cluster.np=4
+
+%parameterize slr solution:
+%slr loading:  {{{
+nt=10;
+md.slr.deltathickness=zeros(md.mesh.numberofelements+1,nt);
+md.slr.deltathickness(end,:)=2001:1:2001+nt-1;
+md.slr.sealevel=zeros(md.mesh.numberofvertices,1);
+md.dsl.global_average_thermosteric_sea_level_change=[0;0];
+md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1);
+md.dsl.sea_water_pressure_change_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
+
+%antarctica
+late=sum(md.mesh.lat(md.mesh.elements),2)/3;
+longe=sum(md.mesh.long(md.mesh.elements),2)/3;
+posa=find(late <-80);
+md.slr.deltathickness(posa,:)=-100;
+
+%greenland
+posg=find(late > 70 &  late < 80 & longe>-60 & longe<-30);
+md.slr.deltathickness(posg,:)=-100;
+
+%elastic loading from love numbers:
+nlov=101;
+md.slr.love_h = love_numbers('h','CM'); md.slr.love_h(nlov+1:end)=[];
+md.slr.love_k = love_numbers('k','CM'); md.slr.love_k(nlov+1:end)=[];
+md.slr.love_l = love_numbers('l','CM'); md.slr.love_l(nlov+1:end)=[];
+
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+icemask=ones(md.mesh.numberofvertices,1);
+pos=find(mask==0);  icemask(pos)=-1;
+pos=find(sum(mask(md.mesh.elements),2)<3);   icemask(md.mesh.elements(pos,:))=-1;
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=-icemask;
+
+%make sure that the elements that have loads are fully grounded:
+pos=find(sum(md.slr.deltathickness(1:end-1,:),2));
+md.mask.ocean_levelset(md.mesh.elements(pos,:))=1;
+
+%make sure wherever there is an ice load, that the mask is set to ice:
+md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+% }}}
+
+md.slr.ocean_area_scaling=0;
+
+%Geometry for the bed, arbitrary: 
+md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+
+%Materials: 
+md.materials=materials('hydro');
+
+%New stuff
+md.slr.spcthickness = NaN(md.mesh.numberofvertices,1);
+md.slr.Ngia = zeros(md.mesh.numberofvertices,1);
+md.slr.Ugia = zeros(md.mesh.numberofvertices,1);
+md.slr.hydro_rate = zeros(md.mesh.numberofvertices,1);
+
+%Miscellaneous
+md.miscellaneous.name='test2002';
+
+%Solution parameters
+md.slr.reltol=NaN;
+md.slr.abstol=1e-3;
+md.slr.geodetic=1;
+
+% max number of iteration reverted back to 10 (i.e., the original default value)
+md.slr.maxiter=10;
+
+%Uncertainty Quantification%{{{
+
+	%partitioning
+	npart=2;
+	partition=-ones(md.mesh.numberofelements,1);
+	partition(posg)=0;
+	partition(posa)=1;
+
+	%variables: 
+	md.qmu.variables.deltathickness=normal_uncertain('descriptor','scaled_SealevelriseDeltathickness',...
+	'mean',ones(npart,nt),...
+	'stddev',.2*ones(npart,nt),...
+	'partition',partition,'nsteps',nt);
+
+	md.qmu.correlation_matrix=zeros(npart*nt,npart*nt);
+	for i=1:npart,
+		for j=1:nt,
+			indi=(i-1)*nt+j;
+			for k=1:npart,
+				for l=1:nt,
+					indj=(k-1)*nt+l;
+					if i~=k,
+						md.qmu.correlation_matrix(indi,indj)=0;
+					else
+						%same partition:
+						if j==l, 
+							md.qmu.correlation_matrix(indi,indj)=1;
+						else
+							if i==1,
+								md.qmu.correlation_matrix(indi,indj)=.2;
+							else
+								md.qmu.correlation_matrix(indi,indj)=.5;
+							end
+						end
+					end
+				end
+			end
+		end
+	end
+
+
+	%responses 
+	md.qmu.responses.sealevel1=response_function('descriptor','Outputdefinition1');
+	md.qmu.responses.sealevel2=response_function('descriptor','Outputdefinition2');
+	md.qmu.responses.sealevel3=response_function('descriptor','Outputdefinition3');
+	md.qmu.responses.sealevel4=response_function('descriptor','Outputdefinition4');
+	md.qmu.responses.sealevel5=response_function('descriptor','Outputdefinition5');
+	md.qmu.responses.sealevel6=response_function('descriptor','Outputdefinition6');
+	md.qmu.responses.sealevel7=response_function('descriptor','Outputdefinition7');
+	md.qmu.responses.sealevel8=response_function('descriptor','Outputdefinition8');
+	md.qmu.responses.sealevel8=response_function('descriptor','Outputdefinition9');
+	md.qmu.responses.sealevel10=response_function('descriptor','Outputdefinition10');
+
+	%output definitions: 
+	for i=1:10,
+		if i==1,
+			md.outputdefinition.definitions={nodalvalue('name','SNode','definitionstring','Outputdefinition1', ...
+			'model_string','Sealevel','node',i)}; 
+		else
+			md.outputdefinition.definitions{end+1}=nodalvalue('name','SNode','definitionstring',['Outputdefinition' num2str(i)], ...
+			'model_string','Sealevel','node',i); 
+		end
+	end
+	%algorithm: 
+	md.qmu.method     =dakota_method('nond_samp');
+	md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+	'seed',1234,...
+	'samples',40,...
+	'sample_type','lhs');
+
+	%parameters
+	md.qmu.params.direct=true;
+	md.qmu.params.interval_type='forward';
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=3;
+	md.qmu.params.tabular_graphics_data=true;
+	%}}}
+md.qmu.isdakota=1;
+md.qmu.output=1;
+
+%transient: 
+md.timestepping.start_time=2000;
+md.timestepping.time_step=1;
+md.timestepping.interp_forcings=0;
+md.timestepping.final_time=2011;
+md.transient.issmb=0;
+md.transient.ismasstransport=0;
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.isslr=1;
+md.slr.requested_outputs= {'default',...
+		'SealevelriseDeltathickness','Sealevel','SealevelRSLRate','SealevelriseCumDeltathickness',...
+		'SealevelNEsaRate', 'SealevelUEsaRate', 'SealevelNGiaRate', 'SealevelUGiaRate',...
+		'SealevelEustaticMask','SealevelEustaticOceanMask'};
+
+%hack: 
+md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+md.geometry.base=-ones(md.mesh.numberofvertices,1);
+md.geometry.surface=zeros(md.mesh.numberofvertices,1);
+
+%eustatic + rigid + elastic + rotation run:
+md.verbose=verbose('0');
+md.verbose.qmu=1;
+md.slr.rigid=1; md.slr.elastic=1; md.slr.rotation=1;
+md=solve(md,'tr');
+
Index: /issm/branches/trunk-dlcheng-ASE/test/SandBox/dak2002.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/SandBox/dak2002.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/SandBox/dak2002.m	(revision 27955)
@@ -0,0 +1,194 @@
+%Test Name: EarthSlr
+
+%mesh earth:
+md=model;
+md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',700.); %500 km resolution mesh
+md.cluster.np=2
+
+%parameterize slr solution:
+%slr loading:  {{{
+nt=100;
+md.slr.deltathickness=zeros(md.mesh.numberofelements+1,nt);
+md.slr.deltathickness(end,:)=2000.5:1:2099.5;
+md.slr.sealevel=zeros(md.mesh.numberofvertices,1);
+md.dsl.global_average_thermosteric_sea_level_change=[0;0];
+md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1);
+md.dsl.sea_water_pressure_change_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
+%antarctica
+late=sum(md.mesh.lat(md.mesh.elements),2)/3;
+longe=sum(md.mesh.long(md.mesh.elements),2)/3;
+posa=find(late <-80);
+md.slr.deltathickness(posa,:)=-100;
+%greenland
+posg=find(late > 70 &  late < 80 & longe>-60 & longe<-30);
+md.slr.deltathickness(posg,:)=-100;
+
+
+%elastic loading from love numbers:
+nlov=101;
+md.slr.love_h = love_numbers('h','CM'); md.slr.love_h(nlov+1:end)=[];
+md.slr.love_k = love_numbers('k','CM'); md.slr.love_k(nlov+1:end)=[];
+md.slr.love_l = love_numbers('l','CM'); md.slr.love_l(nlov+1:end)=[];
+
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+icemask=ones(md.mesh.numberofvertices,1);
+pos=find(mask==0);  icemask(pos)=-1;
+pos=find(sum(mask(md.mesh.elements),2)<3);   icemask(md.mesh.elements(pos,:))=-1;
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=-icemask;
+
+%make sure that the elements that have loads are fully grounded:
+pos=find(sum(md.slr.deltathickness(1:end-1,:),2));
+md.mask.ocean_levelset(md.mesh.elements(pos,:))=1;
+
+%make sure wherever there is an ice load, that the mask is set to ice:
+md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+% }}}
+
+md.slr.ocean_area_scaling=0;
+
+%Geometry for the bed, arbitrary: 
+md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+
+%Materials: 
+md.materials=materials('hydro');
+
+%New stuff
+md.slr.spcthickness = NaN(md.mesh.numberofvertices,1);
+md.slr.hydro_rate = zeros(md.mesh.numberofvertices,1);
+
+%Miscellaneous
+md.miscellaneous.name='test2002';
+
+%Solution parameters
+md.slr.reltol=NaN;
+md.slr.abstol=1e-3;
+md.slr.geodetic=1;
+
+% max number of iteration reverted back to 10 (i.e., the original default value)
+md.slr.maxiter=10;
+
+%initialize GIA: 
+md.gia=giamme();
+md.gia.Ngia=ones(md.mesh.numberofvertices,10);
+md.gia.Ugia=ones(md.mesh.numberofvertices,10);
+for i=1:10,
+	md.gia.Ngia(i)=i;
+	md.gia.Ugia(i)=i;
+end
+md.gia.modelid=1;
+
+%Uncertainty Quantification%{{{
+	md.qmu.variables=struct();;
+
+	ns=size(md.gia.Ngia,2);
+	ids=(1:(ns+1))';
+	p=rand(ns,1);
+	probs=[p(1:ns); 0];  probs=probs/sum(probs);
+	md.qmu.variables.giamodelid=histogram_bin_uncertain('GiaModelid',ns+1,ids,probs);
+
+	%partitioning
+	npart=2;
+	partition=-ones(md.mesh.numberofelements,1);
+	partition(posg)=0;
+	partition(posa)=1;
+
+	%variables: 
+	md.qmu.variables.deltathickness=normal_uncertain('descriptor','scaled_SealevelriseDeltathickness',...
+	'mean',ones(2,nt),...
+	'stddev',[.1*ones(1,nt);.2*ones(1,nt)],...
+	'partition',partition,'nsteps',nt);
+
+	md.qmu.correlation_matrix=zeros(npart*nt,npart*nt);
+	for i=1:npart,
+		for j=1:nt,
+			indi=(i-1)*nt+j;
+			for k=1:npart,
+				for l=1:nt,
+					indj=(k-1)*nt+l;
+					if i~=k,
+						md.qmu.correlation_matrix(indi,indj)=0;
+					else
+						%same partition:
+						if j==l, 
+							md.qmu.correlation_matrix(indi,indj)=1;
+						else
+							md.qmu.correlation_matrix(indi,indj)=.2;
+						end
+					end
+				end
+			end
+		end
+	end
+	md.qmu.correlation_matrix=[];
+
+	
+
+	%responses 
+	md.qmu.responses.sealevel1=response_function('descriptor','Outputdefinition1');
+	md.qmu.responses.sealevel2=response_function('descriptor','Outputdefinition2');
+	md.qmu.responses.sealevel3=response_function('descriptor','Outputdefinition3');
+	md.qmu.responses.sealevel4=response_function('descriptor','Outputdefinition4');
+	md.qmu.responses.sealevel5=response_function('descriptor','Outputdefinition5');
+	md.qmu.responses.sealevel6=response_function('descriptor','Outputdefinition6');
+	md.qmu.responses.sealevel7=response_function('descriptor','Outputdefinition7');
+	md.qmu.responses.sealevel8=response_function('descriptor','Outputdefinition8');
+	md.qmu.responses.sealevel8=response_function('descriptor','Outputdefinition9');
+	md.qmu.responses.sealevel10=response_function('descriptor','Outputdefinition10');
+
+	%output definitions: 
+	for i=1:10,
+		if i==1,
+			md.outputdefinition.definitions={nodalvalue('name','SNode','definitionstring','Outputdefinition1', ...
+			'model_string','Sealevel','node',i)}; 
+		else
+			md.outputdefinition.definitions{end+1}=nodalvalue('name','SNode','definitionstring',['Outputdefinition' num2str(i)], ...
+			'model_string','Sealevel','node',i); 
+		end
+	end
+	%algorithm: 
+	md.qmu.method     =dakota_method('nond_samp');
+	md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+	'seed',1234,...
+	'samples',3,...
+	'sample_type','lhs');
+
+	%parameters
+	md.qmu.params.direct=true;
+	md.qmu.params.interval_type='forward';
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=1;
+	md.qmu.params.tabular_graphics_data=true;
+	%}}}
+md.qmu.output=1;
+
+%transient: 
+md.timestepping.start_time=2000;
+md.timestepping.interp_forcings=0;
+md.timestepping.final_time=2002;
+md.transient.issmb=0;
+md.transient.ismasstransport=0;
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.isslr=1;
+md.transient.isgia=1;
+md.slr.requested_outputs= {'default',...
+		'SealevelriseDeltathickness','Sealevel','SealevelRSLRate','SealevelriseCumDeltathickness',...
+		'SealevelNEsaRate', 'SealevelUEsaRate', 'NGiaRate', 'UGiaRate',...
+		'SealevelEustaticMask','SealevelEustaticOceanMask'};
+
+%hack: 
+md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+md.geometry.base=-ones(md.mesh.numberofvertices,1);
+md.geometry.surface=zeros(md.mesh.numberofvertices,1);
+
+%eustatic + rigid + elastic + rotation run:
+md.verbose=verbose('11111111111');
+%md.verbose.qmu=1;
+md.slr.rigid=1; md.slr.elastic=1; md.slr.rotation=1;
+md.qmu.isdakota=1;
+md=solve(md,'slr');
+
Index: /issm/branches/trunk-dlcheng-ASE/test/SandBox/geoid2002.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/SandBox/geoid2002.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/SandBox/geoid2002.m	(revision 27955)
@@ -0,0 +1,80 @@
+%Test Name: EarthSlr
+
+%mesh earth:
+md=model;
+md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',700.); %500 km resolution mesh
+md.cluster.np=3
+md.verbose=verbose('11111111');
+
+%parameterize slr solution:
+%slr loading:  {{{
+md.slr.deltathickness=zeros(md.mesh.numberofelements,1);
+md.slr.sealevel=zeros(md.mesh.numberofvertices,1);
+md.dsl.global_average_thermosteric_sea_level_change=[0;0];
+md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1);
+md.dsl.sea_water_pressure_change_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
+%antarctica
+late=sum(md.mesh.lat(md.mesh.elements),2)/3;
+longe=sum(md.mesh.long(md.mesh.elements),2)/3;
+pos=find(late <-80);
+md.slr.deltathickness(pos)=-100;
+%greenland
+pos=find(late > 70 &  late < 80 & longe>-60 & longe<-30);
+md.slr.deltathickness(pos)=-100;
+
+%elastic loading from love numbers:
+nlov=101;
+md.slr.love_h = love_numbers('h','CM'); md.slr.love_h(nlov+1:end)=[];
+md.slr.love_k = love_numbers('k','CM'); md.slr.love_k(nlov+1:end)=[];
+md.slr.love_l = love_numbers('l','CM'); md.slr.love_l(nlov+1:end)=[];
+
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+icemask=ones(md.mesh.numberofvertices,1);
+pos=find(mask==0);  icemask(pos)=-1;
+pos=find(sum(mask(md.mesh.elements),2)<3);   icemask(md.mesh.elements(pos,:))=-1;
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=-icemask;
+
+%make sure that the elements that have loads are fully grounded:
+pos=find(md.slr.deltathickness);
+md.mask.ocean_levelset(md.mesh.elements(pos,:))=1;
+
+%make sure wherever there is an ice load, that the mask is set to ice:
+pos=find(md.slr.deltathickness);
+md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+% }}}
+
+md.slr.ocean_area_scaling=0;
+
+%Geometry for the bed, arbitrary: 
+md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+
+%Materials: 
+md.materials=materials('hydro');
+
+%New stuff
+md.slr.spcthickness = NaN(md.mesh.numberofvertices,1);
+md.slr.Ngia = zeros(md.mesh.numberofvertices,1);
+md.slr.Ugia = zeros(md.mesh.numberofvertices,1);
+md.slr.hydro_rate = zeros(md.mesh.numberofvertices,1);
+
+%Miscellaneous
+md.miscellaneous.name='test2002';
+
+%Solution parameters
+md.slr.reltol=NaN;
+md.slr.abstol=1e-3;
+md.slr.geodetic=1;
+
+% max number of iteration reverted back to 10 (i.e., the original default value)
+md.slr.maxiter=10;
+
+md.slr.requested_outputs= {'default',...
+	'SealevelriseDeltathickness','Sealevel','SealevelRSLRate','SealevelriseCumDeltathickness',...
+	'SealevelNEsaRate', 'SealevelUEsaRate', 'SealevelNGiaRate', 'SealevelUGiaRate',...
+	'SealevelEustaticMask','SealevelEustaticOceanMask','SealevelUEsa','SealevelNEsa'};
+
+md.slr.rigid=1; md.slr.elastic=1;md.slr.rotation=1;
+md=solve(md,'Sealevelrise');
Index: /issm/branches/trunk-dlcheng-ASE/test/SandBox/gia2002.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/SandBox/gia2002.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/SandBox/gia2002.m	(revision 27955)
@@ -0,0 +1,151 @@
+%Test Name: EarthSlr
+
+%mesh earth:
+md=model;
+md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',1500.); %500 km resolution mesh
+md.cluster.np=16;
+
+%parameterize slr solution:
+%slr loading:  {{{
+md.slr.deltathickness=zeros(md.mesh.numberofelements,1);
+md.slr.sealevel=zeros(md.mesh.numberofvertices,1);
+md.dsl.global_average_thermosteric_sea_level_change=[0;0];
+md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1);
+md.dsl.sea_water_pressure_change_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
+%antarctica
+late=sum(md.mesh.lat(md.mesh.elements),2)/3;
+longe=sum(md.mesh.long(md.mesh.elements),2)/3;
+pos=find(late <-80);
+md.slr.deltathickness(pos)=-100;
+%greenland
+pos=find(late > 70 &  late < 80 & longe>-60 & longe<-30);
+md.slr.deltathickness(pos)=-100;
+
+%elastic loading from love numbers:
+nlov=101;
+md.slr.love_h = love_numbers('h','CM'); md.slr.love_h(nlov+1:end)=[];
+md.slr.love_k = love_numbers('k','CM'); md.slr.love_k(nlov+1:end)=[];
+md.slr.love_l = love_numbers('l','CM'); md.slr.love_l(nlov+1:end)=[];
+
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+icemask=ones(md.mesh.numberofvertices,1);
+pos=find(mask==0);  icemask(pos)=-1;
+pos=find(sum(mask(md.mesh.elements),2)<3);   icemask(md.mesh.elements(pos,:))=-1;
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=-icemask;
+
+%make sure that the elements that have loads are fully grounded:
+pos=find(md.slr.deltathickness);
+md.mask.ocean_levelset(md.mesh.elements(pos,:))=1;
+
+%make sure wherever there is an ice load, that the mask is set to ice:
+pos=find(md.slr.deltathickness);
+md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+% }}}
+
+md.slr.ocean_area_scaling=0;
+
+%Geometry for the bed, arbitrary: 
+md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+
+%Materials: 
+md.materials=materials('hydro');
+
+%New stuff
+md.slr.spcthickness = NaN(md.mesh.numberofvertices,1);
+md.slr.hydro_rate = zeros(md.mesh.numberofvertices,1);
+
+%GIA: 
+md.gia=giamme();
+md.gia.Ngia= ones(md.mesh.numberofvertices,10);
+md.gia.Ugia= ones(md.mesh.numberofvertices,10);
+load post;
+ns=length(p);
+for i=1:ns,
+	md.gia.Ngia(:,i)=i;
+	md.gia.Ugia(:,i)=i;
+end
+md.gia.modelid=10;
+md.verbose=verbose(0);
+md.verbose.qmu=1;
+
+md.slr.requested_outputs= {'default',...
+		'SealevelriseDeltathickness','Sealevel','SealevelRSLRate','SealevelriseCumDeltathickness',...
+		'SealevelNEsaRate', 'SealevelUEsaRate', 'NGiaRate', 'UGiaRate',...
+		'SealevelEustaticMask','SealevelEustaticOceanMask'};
+
+ids=(1:(ns+1))';
+probs=[p; 0]; 
+%probs=[(1:ns)'; 0];  probs=probs/sum(probs);
+md.qmu.variables.giamodelid=histogram_bin_uncertain('GiaModelid',ns+1,ids,probs);
+
+%qmu: 
+%x=0:.1:100;
+%y=lognormal_pdf(x2,0,1);
+%md.qmu.variables.surface_mass_balance=histogram_bin_uncertain('scaled_SmbMassBalance',length(x),x,[y 0]);
+
+%x=1:(ns+1);
+%y=[lognormal_pdf(x(1:end-1)+.5,0,1) 0]; y=y/sum(y);
+%md.qmu.variables.giamodelid=histogram_bin_uncertain('GiaModelid',length(x),x,y);
+
+%md.qmu.variables.giamodelid=uniform_uncertain('descriptor','GiaModelid','lower',1,...
+%																		'upper',10);
+
+%responses 
+md.qmu.responses.sealevel1=response_function('descriptor','Outputdefinition1');
+md.qmu.responses.sealevel2=response_function('descriptor','Outputdefinition2');
+md.qmu.responses.sealevel3=response_function('descriptor','Outputdefinition3');
+md.qmu.responses.sealevel4=response_function('descriptor','Outputdefinition4');
+md.qmu.responses.sealevel5=response_function('descriptor','Outputdefinition5');
+md.qmu.responses.sealevel6=response_function('descriptor','Outputdefinition6');
+md.qmu.responses.sealevel7=response_function('descriptor','Outputdefinition7');
+md.qmu.responses.sealevel8=response_function('descriptor','Outputdefinition8');
+md.qmu.responses.sealevel8=response_function('descriptor','Outputdefinition9');
+md.qmu.responses.sealevel10=response_function('descriptor','Outputdefinition10');
+
+%output definitions: 
+for i=1:10,
+	if i==1,
+		md.outputdefinition.definitions={nodalvalue('name','SNode','definitionstring','Outputdefinition1', ...
+		'model_string','Sealevel','node',i)}; 
+	else
+		md.outputdefinition.definitions{end+1}=nodalvalue('name','SNode','definitionstring',['Outputdefinition' num2str(i)], ...
+		'model_string','Sealevel','node',i); 
+	end
+end
+
+%algorithm: 
+md.qmu.method     =dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+'seed',1234,...
+'samples',50,...
+'sample_type','lhs');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+md.qmu.params.analysis_driver='matlab';
+md.qmu.params.evaluation_scheduling='master';
+md.qmu.params.processors_per_evaluation=2;
+md.qmu.params.tabular_graphics_data=true;
+
+md.qmu.isdakota=1;
+md.qmu.output=1;
+
+%Miscellaneous
+md.miscellaneous.name='test2002';
+
+%Solution parameters
+md.slr.reltol=NaN;
+md.slr.abstol=1e-3;
+md.slr.geodetic=1;
+
+% max number of iteration reverted back to 10 (i.e., the original default value)
+md.slr.maxiter=10;
+
+%eustatic run:
+md.slr.rigid=1; md.slr.elastic=1;md.slr.rotation=1;
+md=solve(md,'Sealevelrise');
+
Index: /issm/branches/trunk-dlcheng-ASE/test/SandBox/hier2002.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/SandBox/hier2002.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/SandBox/hier2002.m	(revision 27955)
@@ -0,0 +1,241 @@
+%Test Name: EarthSlr
+
+%mesh earth:
+md=model;
+md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',700.); %500 km resolution mesh
+md.cluster.np=2;
+
+%parameterize slr solution:
+%slr loading:  {{{
+nsteps=100;
+md.solidearth.surfaceload.icethicknesschange=zeros(md.mesh.numberofelements+1,nsteps);
+md.solidearth.surfaceload.icethicknesschange(end,:)=2000.5:1:2099.5;
+md.solidearth.sealevel=zeros(md.mesh.numberofvertices,1);
+md.dsl.global_average_thermosteric_sea_level_change=[0;0];
+md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1);
+md.dsl.sea_water_pressure_change_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
+
+%antarctica
+late=sum(md.mesh.lat(md.mesh.elements),2)/3;
+longe=sum(md.mesh.long(md.mesh.elements),2)/3;
+
+posant=find(late <-80);
+md.solidearth.surfaceload.icethicknesschange(posant,:)=-50;
+
+%greenland
+posgre=find(late > 70 &  late < 80 & longe>-50 & longe<-30);
+md.solidearth.surfaceload.icethicknesschange(posgre,:)=-100;
+
+%alaska : 
+posala=find(late > 55 &  late < 68 & longe>-162 & longe<-140);
+md.solidearth.surfaceload.icethicknesschange(posala,:)=-150;
+
+
+%hawaii : 
+poshaw=find(late > 15 &  late < 25 & longe>-170 & longe<-130);
+md.solidearth.surfaceload.icethicknesschange(poshaw,:)=10;
+
+%elastic loading from love numbers:
+md.solidearth.lovenumbers=lovenumbers('maxdeg',100);
+
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+icemask=ones(md.mesh.numberofvertices,1);
+pos=find(mask==0);  icemask(pos)=-1;
+pos=find(sum(mask(md.mesh.elements),2)<3);   icemask(md.mesh.elements(pos,:))=-1;
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=-icemask;
+
+%make sure that the elements that have loads are fully grounded:
+pos=find(sum(md.solidearth.surfaceload.icethicknesschange(1:end-1,:),2));
+md.mask.ocean_levelset(md.mesh.elements(pos,:))=1;
+
+%make sure wherever there is an ice load, that the mask is set to ice:
+md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+% }}}
+
+md.solidearth.settings.ocean_area_scaling=0;
+
+%Geometry for the bed, arbitrary: 
+md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+
+%Materials: 
+md.materials=materials('hydro');
+
+%Miscellaneous
+md.miscellaneous.name='test2002';
+
+%Solution parameters
+%Solution parameters
+md.solidearth.settings.reltol=NaN;
+md.solidearth.settings.abstol=1e-3;
+md.solidearth.settings.computesealevelchange=1;
+
+% max number of iteration reverted back to 10 (i.e., the original default value)
+md.solidearth.settings.maxiter=10;
+
+%initialize GIA: 
+md.gia=giamme();
+md.gia.Ngia=zeros(md.mesh.numberofvertices,1);
+md.gia.Ugia=zeros(md.mesh.numberofvertices,1);
+md.gia.modelid=1;
+
+%Uncertainty Quantification
+md.qmu.variables=struct();;
+
+%partitioning scaling
+npart=1;
+partition=-ones(md.mesh.numberofelements,1);
+partition(posala)=0;
+
+%variable scaling
+md.qmu.variables.surfaceload0=normal_uncertain(...
+	'descriptor','scaled_SurfaceloadIceThicknessChange',...
+	'mean',ones(npart,nsteps),...
+	'stddev',.1*ones(npart,nsteps),...
+	'partition',partition,'nsteps',nsteps);
+
+%partitioning distributed
+npart=3;
+partition=-ones(md.mesh.numberofelements,1);
+
+partition(posant)=0;
+partition(posgre)=1;
+partition(posala)=2;
+
+vposant=unique(md.mesh.elements(posant,:));
+vposgre=unique(md.mesh.elements(posgre,:));
+vposala=unique(md.mesh.elements(posala,:));
+
+
+%prepare arrays: 
+nant=10; ngre=20; nala=30; nmax=max([nant,ngre,nala]);
+
+%make ocean levelset temporal:
+md.mask.ocean_levelset=[md.mask.ocean_levelset;2000];
+
+%background arrays: 
+bkgd=md.solidearth.surfaceload.icethicknesschange; 
+bkgdnan=bkgd; bkgdnan(1:end-1,:)=NaN;
+
+bkgdocean=md.mask.ocean_levelset;
+bkgdoceannan=bkgdocean; bkgdoceannan(1:end-1,1)=NaN;
+
+%mme arrays:
+md.solidearth.surfaceload.icethicknesschange=cell(30,1);
+md.mask.ocean_levelset=cell(30,1);
+for i=1:nmax,
+	if i==1,
+		md.solidearth.surfaceload.icethicknesschange{i}=bkgd;
+		md.mask.ocean_levelset{i}=bkgdocean;
+	else
+		bi=bkgdnan;
+		oi=bkgdoceannan;
+		if i<=10, 
+			bi(posant,:)=(-50+i)*ones(length(posant),nsteps); 
+			%oi(vposant,:)=bkgdocean(vposant,:)-50+i;
+			oi(vposant,:)=i;
+		end
+		if i<=20, 
+			bi(posgre,:)=(-100+i)*ones(length(posgre),nsteps); 
+			%oi(vposgre,:)=bkgdocean(vposgre,:)-100+i;
+			oi(vposgre,:)=2*i;
+		end
+		if i<=30, 
+			bi(posala,:)=(-150+i)*ones(length(posala),nsteps); 
+			%oi(vposala,:)=bkgdocean(vposala,:)-150+i;
+			oi(vposala,:)=3*i;
+		end
+		md.solidearth.surfaceload.icethicknesschange{i}=bi;
+		ois=repmat(oi,1,nsteps); ois(end,:)=bi(end,:);
+		md.mask.ocean_levelset{i}=ois;
+	end
+	md.mask.ocean_levelset{i}=bkgdocean;
+end
+%md.mask.ice_levelset=md.mask.ocean_levelset;
+%md.solidearth.surfaceload.icethicknesschange=bkgd;
+%md.mask.ocean_levelset=bkgdocean;
+
+%create distributed histograms for each partition:
+pairs_per_variable=zeros(npart,1);
+abscissas=cell(npart,1);
+counts=cell(npart,1);
+[abscissas{1} counts{1} pairs_per_variable(1)]=equiprobable_histogram_uncertain(10); 
+[abscissas{2} counts{2} pairs_per_variable(2)]=equiprobable_histogram_uncertain(20); 
+[abscissas{3} counts{3} pairs_per_variable(3)]=equiprobable_histogram_uncertain(30); 
+
+%variables: 
+md.qmu.variables.surfaceload1=histogram_bin_uncertain(...
+	'descriptor','distributed_SurfaceloadModelid',...
+	'pairs_per_variable',pairs_per_variable,'abscissas',abscissas,'counts',counts,'partition',partition);
+
+
+md.qmu.correlation_matrix=[];
+
+%responses 
+md.qmu.responses.sealevel1=response_function('descriptor','Outputdefinition1');
+md.qmu.responses.sealevel2=response_function('descriptor','Outputdefinition2');
+md.qmu.responses.sealevel3=response_function('descriptor','Outputdefinition3');
+md.qmu.responses.sealevel4=response_function('descriptor','Outputdefinition4');
+md.qmu.responses.sealevel5=response_function('descriptor','Outputdefinition5');
+md.qmu.responses.sealevel6=response_function('descriptor','Outputdefinition6');
+md.qmu.responses.sealevel7=response_function('descriptor','Outputdefinition7');
+md.qmu.responses.sealevel8=response_function('descriptor','Outputdefinition8');
+md.qmu.responses.sealevel8=response_function('descriptor','Outputdefinition9');
+md.qmu.responses.sealevel10=response_function('descriptor','Outputdefinition10');
+
+%output definitions: 
+for i=1:10,
+	if i==1,
+		md.outputdefinition.definitions={nodalvalue('name','SNode','definitionstring','Outputdefinition1', ...
+			'model_string','Sealevel','node',i)}; 
+	else
+		md.outputdefinition.definitions{end+1}=nodalvalue('name','SNode','definitionstring',['Outputdefinition' num2str(i)], ...
+			'model_string','Sealevel','node',i); 
+end
+end
+%algorithm: 
+md.qmu.method     =dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+	'seed',1234,...
+	'samples',3,...
+	'sample_type','lhs');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+md.qmu.params.analysis_driver='matlab';
+md.qmu.params.evaluation_scheduling='master';
+md.qmu.params.processors_per_evaluation=1;
+md.qmu.params.tabular_graphics_data=true;
+md.qmu.output=1;
+
+%transient: 
+md.timestepping.start_time=2000;
+md.timestepping.interp_forcings=1;
+md.timestepping.final_time=2002;
+md.transient.issmb=0;
+md.transient.ismasstransport=0;
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.isslr=1;
+md.transient.isgia=1;
+md.solidearth.requested_outputs= {'default',...
+		'SurfaceloadIceThicknessChange','Sealevel','SealevelRSLRate',...
+		'SealevelNEsaRate', 'SealevelUEsaRate', 'NGiaRate', 'UGiaRate',...
+		'SealevelEustaticMask','SealevelEustaticOceanMask','MaskOceanLevelset','MaskIceLevelset'};
+
+%hack: 
+md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+md.geometry.base=-ones(md.mesh.numberofvertices,1);
+md.geometry.surface=zeros(md.mesh.numberofvertices,1);
+
+%eustatic + rigid + elastic + rotation run:
+md.verbose=verbose('11111111111');
+%md.verbose=verbose(0);
+md.verbose.qmu=1;
+md.solidearth.settings.rigid=1; md.solidearth.settings.elastic=1;md.solidearth.settings.rotation=1;
+md.qmu.isdakota=1;
+md=solve(md,'tr');
+
Index: /issm/branches/trunk-dlcheng-ASE/test/SandBox/interpBedmap2.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/SandBox/interpBedmap2.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/SandBox/interpBedmap2.m	(revision 27955)
@@ -0,0 +1,47 @@
+function [dataout] = interpBedmap2(X,Y,string),
+%INTERPBEDMAP2 - interpolate bedmap2 data
+%
+%   Available data:
+%      1. bed                          is bed height
+%      2. surface                      is surface height
+%      3. thickness                    is ice thickness
+%      4. icemask_grounded_and_shelves is a mask file showing the grounding line and the extent of the floating ice shelves
+%      5. rockmask                     is a mask file showing rock outcrops
+%      6. lakemask_vostok              is a mask file showing the extent of the lake cavity of Lake Vostok
+%      7. bed_uncertainty              is the bed uncertainty grid shown in figure 12 of the manuscript
+%      8. thickness_uncertainty_5km    is the thickness uncertainty grid shown in figure 11 of the manuscript
+%      9. data_coverage                is a binary grid showing the dis tribution of ice thickness data used in the grid of ice thickness
+%
+%   Usage:
+%      [dataout] = interpBedmap2(X,Y,string)
+
+%reqad data
+%path = '/u/astrid-r1b/ModelData/BedMap2/bedmap2_bin/';
+%path = '~/issm-jpl/proj-group/ModelData/BedMap2/bedmap2_bin/';
+path = '/Users/larour/ModelData/BedMap2/bedmap2_bin/';
+fid=fopen([path '/bedmap2_' string '.flt'],'r','l');
+data=fread(fid,[6667,6667],'float32');
+fclose(fid);
+
+% define grid
+if strcmp(string,'thickness_uncertainty_5km'),
+	ncols    =1361;
+	nrows    =1361;
+	xll      =-3401000;
+	yll      =-3402000;
+	gridsize =5000;
+else
+	ncols    =6667;
+	nrows    =6667;
+	xll      =-3333000;
+	yll      =-3333000;
+	gridsize =1000;
+end
+x_m=xll+(0:1:ncols-1)'*gridsize;
+y_m=yll+(0:1:nrows-1)'*gridsize;
+
+%Change default to NaN
+data(find(data==-9999))=0;
+
+%Interpolate
+dataout = InterpFromGrid(x_m,y_m,flipud(data'),double(X),double(Y));
Index: /issm/branches/trunk-dlcheng-ASE/test/SandBox/mmedak.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/SandBox/mmedak.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/SandBox/mmedak.m	(revision 27955)
@@ -0,0 +1,195 @@
+%Test Name: EarthSlr
+
+%mesh earth:
+md=model;
+md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',1000.); %500 km resolution mesh
+md.cluster.np=16;
+
+%parameterize slr solution:
+%slr loading:  {{{
+nt=100;
+md.solidearth.surfaceload.icethicknesschange=zeros(md.mesh.numberofelements+1,nt);
+md.solidearth.surfaceload.icethicknesschange(end,:)=2000.5:1:2099.5;
+md.solidearth.sealevel=zeros(md.mesh.numberofvertices,1);
+md.dsl.global_average_thermosteric_sea_level_change=[0;0];
+md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1);
+md.dsl.sea_water_pressure_change_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
+
+%antarctica
+late=sum(md.mesh.lat(md.mesh.elements),2)/3;
+longe=sum(md.mesh.long(md.mesh.elements),2)/3;
+
+posant=find(late <-80);
+md.solidearth.surfaceload.icethicknesschange(posant,:)=-50;
+
+%greenland
+posgre=find(late > 70 &  late < 80 & longe>-60 & longe<-30);
+md.solidearth.surfaceload.icethicknesschange(posgre,:)=-100;
+
+%alaska : 
+posala=find(late > 62 &  late < 68 & longe>-152 & longe<-147);
+md.solidearth.surfaceload.icethicknesschange(posala,:)=-150;
+
+%himalaya : 
+poshim=find(late > 25 &  late < 32 & longe>81 & longe<86);
+md.solidearth.surfaceload.icethicknesschange(poshim,:)=-150;
+
+
+%elastic loading from love numbers:
+md.solidearth.lovenumbers=lovenumbers('maxdeg',100);
+
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+icemask=ones(md.mesh.numberofvertices,1);
+pos=find(mask==0);  icemask(pos)=-1;
+pos=find(sum(mask(md.mesh.elements),2)<3);   icemask(md.mesh.elements(pos,:))=-1;
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=-icemask;
+
+%make sure that the elements that have loads are fully grounded:
+pos=find(sum(md.solidearth.surfaceload.icethicknesschange(1:end-1,:),2));
+md.mask.ocean_levelset(md.mesh.elements(pos,:))=1;
+
+%make sure wherever there is an ice load, that the mask is set to ice:
+md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+% }}}
+
+md.solidearth.settings.ocean_area_scaling=0;
+
+%Geometry for the bed, arbitrary: 
+md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+
+%Materials: 
+md.materials=materials('hydro');
+
+%Miscellaneous
+md.miscellaneous.name='test2002';
+
+%Solution parameters
+%Solution parameters
+md.solidearth.settings.reltol=NaN;
+md.solidearth.settings.abstol=1e-3;
+md.solidearth.settings.computesealevelchange=1;
+
+% max number of iteration reverted back to 10 (i.e., the original default value)
+md.solidearth.settings.maxiter=10;
+
+%initialize GIA: 
+md.gia=giamme();
+md.gia.Ngia=ones(md.mesh.numberofvertices,1);
+md.gia.Ugia=ones(md.mesh.numberofvertices,1);
+md.gia.modelid=1;
+
+%Uncertainty Quantification%{{{
+md.qmu.variables=struct();;
+
+ns=size(md.gia.Ngia,2);
+ids=(1:(ns+1))';
+p=rand(ns,1);
+probs=[p(1:ns); 0];  probs=probs/sum(probs);
+md.qmu.variables.giamodelid=histogram_bin_uncertain('GiaModelid',ns+1,ids,probs);
+
+%partitioning
+npart=2;
+partition=-ones(md.mesh.numberofelements,1);
+partition(posg)=0;
+partition(posa)=1;
+
+%variables: 
+md.qmu.variables.deltathickness=normal_uncertain('descriptor','scaled_SealevelriseDeltathickness',...
+	'mean',ones(2,nt),...
+	'stddev',[.1*ones(1,nt);.2*ones(1,nt)],...
+	'partition',partition,'nsteps',nt);
+
+md.qmu.correlation_matrix=zeros(npart*nt,npart*nt);
+for i=1:npart,
+	for j=1:nt,
+		indi=(i-1)*nt+j;
+		for k=1:npart,
+			for l=1:nt,
+				indj=(k-1)*nt+l;
+				if i~=k,
+					md.qmu.correlation_matrix(indi,indj)=0;
+				else
+					%same partition:
+					if j==l, 
+						md.qmu.correlation_matrix(indi,indj)=1;
+					else
+						md.qmu.correlation_matrix(indi,indj)=.2;
+					end
+				end
+			end
+		end
+	end
+end
+md.qmu.correlation_matrix=[];
+
+
+
+%responses 
+md.qmu.responses.sealevel1=response_function('descriptor','Outputdefinition1');
+md.qmu.responses.sealevel2=response_function('descriptor','Outputdefinition2');
+md.qmu.responses.sealevel3=response_function('descriptor','Outputdefinition3');
+md.qmu.responses.sealevel4=response_function('descriptor','Outputdefinition4');
+md.qmu.responses.sealevel5=response_function('descriptor','Outputdefinition5');
+md.qmu.responses.sealevel6=response_function('descriptor','Outputdefinition6');
+md.qmu.responses.sealevel7=response_function('descriptor','Outputdefinition7');
+md.qmu.responses.sealevel8=response_function('descriptor','Outputdefinition8');
+md.qmu.responses.sealevel8=response_function('descriptor','Outputdefinition9');
+md.qmu.responses.sealevel10=response_function('descriptor','Outputdefinition10');
+
+%output definitions: 
+for i=1:10,
+	if i==1,
+		md.outputdefinition.definitions={nodalvalue('name','SNode','definitionstring','Outputdefinition1', ...
+			'model_string','Sealevel','node',i)}; 
+	else
+		md.outputdefinition.definitions{end+1}=nodalvalue('name','SNode','definitionstring',['Outputdefinition' num2str(i)], ...
+			'model_string','Sealevel','node',i); 
+end
+end
+%algorithm: 
+md.qmu.method     =dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+	'seed',1234,...
+	'samples',3,...
+	'sample_type','lhs');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+md.qmu.params.analysis_driver='matlab';
+md.qmu.params.evaluation_scheduling='master';
+md.qmu.params.processors_per_evaluation=1;
+md.qmu.params.tabular_graphics_data=true;
+md.qmu.output=1;
+%}}}
+
+%transient: 
+md.timestepping.start_time=2000;
+md.timestepping.interp_forcings=0;
+md.timestepping.final_time=2002;
+md.transient.issmb=0;
+md.transient.ismasstransport=0;
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.isslr=1;
+md.transient.isgia=1;
+md.slr.requested_outputs= {'default',...
+		'SealevelriseDeltathickness','Sealevel','SealevelRSLRate','SealevelriseCumDeltathickness',...
+		'SealevelNEsaRate', 'SealevelUEsaRate', 'NGiaRate', 'UGiaRate',...
+		'SealevelEustaticMask','SealevelEustaticOceanMask'};
+
+%hack: 
+md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+md.geometry.base=-ones(md.mesh.numberofvertices,1);
+md.geometry.surface=zeros(md.mesh.numberofvertices,1);
+
+%eustatic + rigid + elastic + rotation run:
+md.verbose=verbose('11111111111');
+%md.verbose.qmu=1;
+md.solidearth.settings.rigid=1; md.solidearth.settings.elastic=1;md.solidearth.settings.rotation=1;
+md.qmu.isdakota=1;
+md=solve(md,'slr');
+
Index: /issm/branches/trunk-dlcheng-ASE/test/SandBox/partmme2002.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/SandBox/partmme2002.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/SandBox/partmme2002.m	(revision 27955)
@@ -0,0 +1,228 @@
+%Test Name: EarthSlr
+
+%mesh earth:
+md=model;
+md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',500.); %500 km resolution mesh
+md.cluster.np=2;
+
+%parameterize slr solution:
+%slr loading:  {{{
+nsteps=100;
+md.solidearth.surfaceload.icethicknesschange=zeros(md.mesh.numberofelements+1,nsteps);
+md.solidearth.surfaceload.icethicknesschange(end,:)=2000.5:1:2099.5;
+md.solidearth.sealevel=zeros(md.mesh.numberofvertices,1);
+md.dsl.global_average_thermosteric_sea_level_change=[0;0];
+md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1);
+md.dsl.sea_water_pressure_change_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
+
+%antarctica
+late=sum(md.mesh.lat(md.mesh.elements),2)/3;
+longe=sum(md.mesh.long(md.mesh.elements),2)/3;
+
+posant=find(late <-80);
+md.solidearth.surfaceload.icethicknesschange(posant,:)=-50;
+
+%greenland
+posgre=find(late > 70 &  late < 80 & longe>-60 & longe<-30);
+md.solidearth.surfaceload.icethicknesschange(posgre,:)=-100;
+
+%alaska : 
+posala=find(late > 62 &  late < 68 & longe>-162 & longe<-140);
+md.solidearth.surfaceload.icethicknesschange(posala,:)=-150;
+
+
+%hawaii : 
+poshaw=find(late > 15 &  late < 25 & longe>-170 & longe<-130);
+md.solidearth.surfaceload.icethicknesschange(poshaw,:)=10;
+
+%elastic loading from love numbers:
+md.solidearth.lovenumbers=lovenumbers('maxdeg',100);
+
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+icemask=ones(md.mesh.numberofvertices,1);
+pos=find(mask==0);  icemask(pos)=-1;
+pos=find(sum(mask(md.mesh.elements),2)<3);   icemask(md.mesh.elements(pos,:))=-1;
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=-icemask;
+
+%make sure that the elements that have loads are fully grounded:
+pos=find(sum(md.solidearth.surfaceload.icethicknesschange(1:end-1,:),2));
+md.mask.ocean_levelset(md.mesh.elements(pos,:))=1;
+
+%make sure wherever there is an ice load, that the mask is set to ice:
+md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+% }}}
+
+md.solidearth.settings.ocean_area_scaling=0;
+
+%Geometry for the bed, arbitrary: 
+md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+
+%Materials: 
+md.materials=materials('hydro');
+
+%Miscellaneous
+md.miscellaneous.name='test2002';
+
+%Solution parameters
+%Solution parameters
+md.solidearth.settings.reltol=NaN;
+md.solidearth.settings.abstol=1e-3;
+md.solidearth.settings.computesealevelchange=1;
+
+% max number of iteration reverted back to 10 (i.e., the original default value)
+md.solidearth.settings.maxiter=10;
+
+%initialize GIA: 
+md.gia=giamme();
+md.gia.Ngia=zeros(md.mesh.numberofvertices,1);
+md.gia.Ugia=zeros(md.mesh.numberofvertices,1);
+md.gia.modelid=1;
+
+%Uncertainty Quantification%{{{
+md.qmu.variables=struct();;
+
+%partition vector: 
+npart=3;
+partition=-ones(md.mesh.numberofelements,1);
+
+partition(posant)=0;
+partition(posgre)=1;
+partition(posala)=2;
+
+vposant=unique(md.mesh.elements(posant,:));
+vposgre=unique(md.mesh.elements(posgre,:));
+vposala=unique(md.mesh.elements(posala,:));
+
+
+%prepare arrays: 
+nant=10; ngre=20; nala=30; nmax=max([nant,ngre,nala]);
+
+%make ocean levelset temporal:
+md.mask.ocean_levelset=[md.mask.ocean_levelset;2000];
+
+%background arrays: 
+bkgd=md.solidearth.surfaceload.icethicknesschange; 
+bkgdnan=bkgd; bkgdnan(1:end-1,:)=NaN;
+
+bkgdocean=md.mask.ocean_levelset;
+bkgdoceannan=bkgdocean; bkgdoceannan(1:end-1,1)=NaN;
+
+%mme arrays:
+md.solidearth.surfaceload.icethicknesschange=cell(30,1);
+md.mask.ocean_levelset=cell(30,1);
+for i=1:nmax,
+	if i==1,
+		md.solidearth.surfaceload.icethicknesschange{i}=bkgd;
+		md.mask.ocean_levelset{i}=bkgdocean;
+	else
+		bi=bkgdnan;
+		oi=bkgdoceannan;
+		if i<=10, 
+			bi(posant,:)=(-50+i)*ones(length(posant),nsteps); 
+			%oi(vposant,:)=bkgdocean(vposant,:)-50+i;
+			oi(vposant,:)=i;
+		end
+		if i<=20, 
+			bi(posgre,:)=(-100+i)*ones(length(posgre),nsteps); 
+			%oi(vposgre,:)=bkgdocean(vposgre,:)-100+i;
+			oi(vposgre,:)=2*i;
+		end
+		if i<=30, 
+			bi(posala,:)=(-150+i)*ones(length(posala),nsteps); 
+			%oi(vposala,:)=bkgdocean(vposala,:)-150+i;
+			oi(vposala,:)=3*i;
+		end
+		md.solidearth.surfaceload.icethicknesschange{i}=bi;
+		ois=repmat(oi,1,nsteps); ois(end,:)=bi(end,:);
+		md.mask.ocean_levelset{i}=ois;
+	end
+	md.mask.ocean_levelset{i}=bkgdocean;
+end
+%md.mask.ice_levelset=md.mask.ocean_levelset;
+%md.solidearth.surfaceload.icethicknesschange=bkgd;
+%md.mask.ocean_levelset=bkgdocean;
+
+%create distributed histograms for each partition:
+pairs_per_variable=zeros(npart,1);
+abscissas=cell(npart,1);
+counts=cell(npart,1);
+[abscissas{1} counts{1} pairs_per_variable(1)]=equiprobable_histogram_uncertain(10); 
+[abscissas{2} counts{2} pairs_per_variable(2)]=equiprobable_histogram_uncertain(20); 
+[abscissas{3} counts{3} pairs_per_variable(3)]=equiprobable_histogram_uncertain(30); 
+
+%variables: 
+md.qmu.variables.surfaceload=histogram_bin_uncertain(...
+	'descriptor','distributed_SurfaceloadModelid',...
+	'pairs_per_variable',pairs_per_variable,'abscissas',abscissas,'counts',counts,'partition',partition);
+md.qmu.correlation_matrix=[];
+
+%responses 
+md.qmu.responses.sealevel1=response_function('descriptor','Outputdefinition1');
+md.qmu.responses.sealevel2=response_function('descriptor','Outputdefinition2');
+md.qmu.responses.sealevel3=response_function('descriptor','Outputdefinition3');
+md.qmu.responses.sealevel4=response_function('descriptor','Outputdefinition4');
+md.qmu.responses.sealevel5=response_function('descriptor','Outputdefinition5');
+md.qmu.responses.sealevel6=response_function('descriptor','Outputdefinition6');
+md.qmu.responses.sealevel7=response_function('descriptor','Outputdefinition7');
+md.qmu.responses.sealevel8=response_function('descriptor','Outputdefinition8');
+md.qmu.responses.sealevel8=response_function('descriptor','Outputdefinition9');
+md.qmu.responses.sealevel10=response_function('descriptor','Outputdefinition10');
+
+%output definitions: 
+for i=1:10,
+	if i==1,
+		md.outputdefinition.definitions={nodalvalue('name','SNode','definitionstring','Outputdefinition1', ...
+			'model_string','Sealevel','node',i)}; 
+	else
+		md.outputdefinition.definitions{end+1}=nodalvalue('name','SNode','definitionstring',['Outputdefinition' num2str(i)], ...
+			'model_string','Sealevel','node',i); 
+end
+end
+%algorithm: 
+md.qmu.method     =dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+	'seed',1234,...
+	'samples',3,...
+	'sample_type','lhs');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+md.qmu.params.analysis_driver='matlab';
+md.qmu.params.evaluation_scheduling='master';
+md.qmu.params.processors_per_evaluation=1;
+md.qmu.params.tabular_graphics_data=true;
+md.qmu.output=1;
+%}}}
+
+%transient: 
+md.timestepping.start_time=2000;
+md.timestepping.interp_forcings=1;
+md.timestepping.final_time=2002;
+md.transient.issmb=0;
+md.transient.ismasstransport=0;
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.isslr=1;
+md.transient.isgia=1;
+md.solidearth.requested_outputs= {'default',...
+		'SurfaceloadIceThicknessChange','Sealevel','SealevelRSLRate',...
+		'SealevelNEsaRate', 'SealevelUEsaRate', 'NGiaRate', 'UGiaRate',...
+		'SealevelEustaticMask','SealevelEustaticOceanMask','MaskOceanLevelset','MaskIceLevelset'};
+
+%hack: 
+md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+md.geometry.base=-ones(md.mesh.numberofvertices,1);
+md.geometry.surface=zeros(md.mesh.numberofvertices,1);
+
+%eustatic + rigid + elastic + rotation run:
+md.verbose=verbose('11111111111');
+%md.verbose=verbose(0);
+md.verbose.qmu=1;
+md.solidearth.settings.rigid=1; md.solidearth.settings.elastic=1;md.solidearth.settings.rotation=1;
+md.qmu.isdakota=1;
+md=solve(md,'tr');
+
Index: /issm/branches/trunk-dlcheng-ASE/test/SandBox/res2002.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/SandBox/res2002.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/SandBox/res2002.m	(revision 27955)
@@ -0,0 +1,8 @@
+ha=[];
+for i=1:md.qmu.method.params.samples,
+	md2.results.TransientSolution=md.results.dakota.modelresults{i}.TransientSolution;
+	h=resultstomatrix(md2,'TransientSolution','SealevelriseDeltathickness');
+	ha=[ha;h(posa(1),:)];
+end
+
+plot(corr(ha(:,1),ha));
Index: /issm/branches/trunk-dlcheng-ASE/test/SandBox/scale2002_element.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/SandBox/scale2002_element.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/SandBox/scale2002_element.m	(revision 27955)
@@ -0,0 +1,174 @@
+%Test Name: Dakota EarthSlr Scaling.
+
+%mesh earth:
+md=model;
+md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',700.); %500 km resolution mesh
+md.cluster.np=2;
+
+%parameterize slr solution:
+nsteps=100;
+md.solidearth.surfaceload.icethicknesschange=ones(md.mesh.numberofelements+1,nsteps);
+md.solidearth.surfaceload.icethicknesschange(end,:)=2000.5:1:2099.5;
+md.solidearth.sealevel=zeros(md.mesh.numberofvertices,1);
+
+%antarctica
+late=sum(md.mesh.lat(md.mesh.elements),2)/3;
+longe=sum(md.mesh.long(md.mesh.elements),2)/3;
+
+posant=find(late <-80);
+%md.solidearth.surfaceload.icethicknesschange(posant,:)=-50;
+
+%greenland
+posgre=find(late > 70 &  late < 80 & longe>-50 & longe<-30);
+%md.solidearth.surfaceload.icethicknesschange(posgre,:)=-100;
+
+%alaska : 
+posala=find(late > 55 &  late < 68 & longe>-162 & longe<-140);
+%md.solidearth.surfaceload.icethicknesschange(posala,:)=-150;
+
+
+%elastic loading from love numbers:
+md.solidearth.lovenumbers=lovenumbers('maxdeg',100);
+
+%mask
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+icemask=ones(md.mesh.numberofvertices,1);
+pos=find(mask==0);  icemask(pos)=-1;
+pos=find(sum(mask(md.mesh.elements),2)<3);   icemask(md.mesh.elements(pos,:))=-1;
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=-icemask;
+
+%make sure that the elements that have loads are fully grounded:
+%pos=find(sum(md.solidearth.surfaceload.icethicknesschange(1:end-1,:),2));
+%md.mask.ocean_levelset(md.mesh.elements(pos,:))=1;
+
+%make sure wherever there is an ice load, that the mask is set to ice:
+md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+
+%dsl
+md.dsl.global_average_thermosteric_sea_level_change=[0;0];
+md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1);
+md.dsl.sea_water_pressure_change_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
+
+md.solidearth.settings.ocean_area_scaling=0;
+
+%Geometry for the bed, arbitrary: 
+md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+
+%Materials: 
+md.materials=materials('hydro');
+
+%Miscellaneous
+md.miscellaneous.name='scale2002';
+
+%Uncertainty Quantification%
+md.qmu.variables=struct();;
+
+%partitioning scaling
+npart=3;
+partition=-ones(md.mesh.numberofelements,1);
+partition(posgre)=0;
+partition(posant)=1;
+partition(posala)=2;
+
+%variable scaling
+md.qmu.variables.surfaceload0=normal_uncertain(...
+	'descriptor','scaled_SurfaceloadIceThicknessChange',...
+	'mean',ones(npart,nsteps),...
+	'stddev',.1*ones(npart,nsteps),...
+	'partition',partition,'nsteps',nsteps);
+
+%responses 
+md.qmu.responses.sealevel1=response_function('descriptor','Outputdefinition1');
+
+%output definitions: 
+md.outputdefinition.definitions={nodalvalue('name','SNode','definitionstring','Outputdefinition1', ...
+			'model_string','Sealevel','node',1)};
+
+%algorithm: 
+md.qmu.method     =dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+	'seed',1234,...
+	'samples',3,...
+	'sample_type','random');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+md.qmu.params.analysis_driver='matlab';
+md.qmu.params.evaluation_scheduling='master';
+md.qmu.params.processors_per_evaluation=1;
+md.qmu.params.tabular_graphics_data=true;
+md.qmu.output=1;
+
+%transient: 
+md.solidearth.settings.computesealevelchange=1;
+md.timestepping.start_time=1999.5;
+md.timestepping.interp_forcings=0;
+md.timestepping.time_step=1;
+md.timestepping.final_time=2099.5
+md.transient.issmb=0;
+md.transient.ismasstransport=0;
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.isslr=1;
+md.transient.isgia=1;
+md.solidearth.requested_outputs= {'default',...
+		'SurfaceloadIceThicknessChange','Sealevel','SealevelRSLRate',...
+		'SealevelNEsaRate', 'SealevelUEsaRate', 'NGiaRate', 'UGiaRate',...
+		'SealevelEustaticMask','SealevelEustaticOceanMask','MaskOceanLevelset','MaskIceLevelset'};
+
+%hack: 
+md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+md.geometry.base=-ones(md.mesh.numberofvertices,1);
+md.geometry.surface=zeros(md.mesh.numberofvertices,1);
+
+%settings: 
+md.verbose.qmu=1;
+md.verbose=verbose(0);
+md.qmu.isdakota=1;
+
+md.solidearth.settings.rigid=1; md.solidearth.settings.elastic=1;md.solidearth.settings.rotation=1;
+
+md=solve(md,'tr');
+
+%check scaling worked ok: 
+n=md.qmu.method.params.samples;
+field_values={};
+
+for i=1:n,
+	md2=model(); md2.results=md.results.dakota.modelresults{i};
+	uq=md2.results.TransientSolution(1).uq_variables;
+	part1=uq(1:100);
+	part2=uq(101:200);
+	part3=uq(201:300);
+
+	h2=ones(md.mesh.numberofelements+1,100);
+	
+	for j=1:length(posgre),
+		for k=1:100,
+			h2(posgre(j),k)= h2(posgre(j),k)*part1(k);
+		end
+	end
+	for j=1:length(posant),
+		for k=1:100,
+			h2(posant(j),k)= h2(posant(j),k)*part2(k);
+		end
+	end
+	for j=1:length(posala),
+		for k=1:100,
+			h2(posala(j),k)= h2(posala(j),k)*part3(k);
+		end
+	end
+
+	h=resultstomatrix(md2,'TransientSolution','SurfaceloadIceThicknessChange');
+	h2(end,:)=h(end,:);
+
+	field_values{end+1}=size(find(h2-h));
+end
+
+
+%Fields and tolerances to track changes
+field_names     ={'dH1','dH2','dH3'};
+field_tolerances={1e-5,1e-5,1e-5};
+
Index: /issm/branches/trunk-dlcheng-ASE/test/SandBox/scale2002_vertices.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/SandBox/scale2002_vertices.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/SandBox/scale2002_vertices.m	(revision 27955)
@@ -0,0 +1,81 @@
+%Test Name: SquareSheetShelfDiadSSA3dDakota
+md=triangle(model(),'../Exp/Square.exp',300000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',2);
+
+%partitioning
+partition=partitioner(md,'package','linear','npart',md.mesh.numberofvertices)-1;
+md.qmu.isdakota=1;
+
+nsteps=100;
+md.friction.coefficient=ones(md.mesh.numberofvertices+1,nsteps);
+md.friction.coefficient(end,:)=2000.5:1:2099.5;
+
+%variables
+md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient',...
+	'mean',ones(md.mesh.numberofvertices,nsteps),...
+	'stddev',.01*ones(md.mesh.numberofvertices,nsteps),...
+	'partition',partition,'nsteps',nsteps);
+
+%responses
+md.qmu.responses.MaxVel=response_function('descriptor','MaxVel');
+
+%algorithm: 
+md.qmu.method     =dakota_method('nond_samp');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+	'seed',1234,...
+	'samples',3,...
+	'sample_type','random');
+
+%parameters
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+md.qmu.params.analysis_driver='matlab';
+md.qmu.params.evaluation_scheduling='master';
+md.qmu.params.processors_per_evaluation=1;
+md.qmu.params.tabular_graphics_data=true;
+md.qmu.output=1;
+
+md.verbose=verbose(0);
+
+md.timestepping.start_time=1999.5;
+md.timestepping.interp_forcings=0;
+md.timestepping.time_step=1;
+md.timestepping.final_time=2099.5
+md.transient.issmb=0;
+md.transient.ismasstransport=0;
+md.transient.isthermal=0;
+
+md.stressbalance.requested_outputs{end+1}='FrictionCoefficient';
+
+%imperative! 
+md.stressbalance.reltol=10^-5; %tighten for qmu analysese
+
+%solve
+md=solve(md,'tr','overwrite','y');
+
+%check scaling worked ok: 
+n=md.qmu.method.params.samples;
+field_values={};
+
+for i=1:n,
+	md2=model(); md2.results=md.results.dakota.modelresults{i};
+	uq=md2.results.TransientSolution(1).uq_variables;
+	
+	h2=ones(md.mesh.numberofvertices+1,100);
+
+	for j=1:md.mesh.numberofvertices,
+		partj=uq((j-1)*100+1 : j*100)
+		h2(j,:)=h2(j,:)'.*partj;
+	end
+	
+	h=resultstomatrix(md2,'TransientSolution','FrictionCoefficient');
+	h2(end,:)=h(end,:);
+	size(find(h2-h))
+
+	field_values{end+1}=size(find(h2-h));
+end
+
+
Index: /issm/branches/trunk-dlcheng-ASE/test/SandBox/test2002.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/SandBox/test2002.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/SandBox/test2002.m	(revision 27955)
@@ -0,0 +1,143 @@
+%Test Name: EarthSlc
+
+%mesh earth:
+md=model;
+%md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',700.); %700 km resolution mesh
+load test2002_mesh 
+md.mesh=mesh;
+
+%Geometry for the bed, arbitrary thickness of 1000: 
+md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+md.geometry.base=md.geometry.bed;
+md.geometry.thickness=1000*ones(md.mesh.numberofvertices,1);
+md.geometry.surface=md.geometry.bed+md.geometry.thickness;
+
+
+%parameterize solidearth solution:
+%solidearth loading:  {{{
+md.masstransport.spcthickness=[md.geometry.thickness;0];
+md.dsl.global_average_thermosteric_sea_level=[0;0];
+md.dsl.sea_surface_height_above_geoid=zeros(md.mesh.numberofvertices+1,1);
+md.dsl.sea_water_pressure_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
+md.smb.mass_balance=zeros(md.mesh.numberofvertices,1);
+%antarctica
+late=sum(md.mesh.lat(md.mesh.elements),2)/3;
+longe=sum(md.mesh.long(md.mesh.elements),2)/3;
+%pos=find(late < -86);
+pos=1136;
+md.masstransport.spcthickness(md.mesh.elements(pos,:))= md.masstransport.spcthickness(md.mesh.elements(pos,:))-100;
+
+vertices=md.mesh.elements(pos,:); 
+pos1=find( md.mesh.elements(:,1)==vertices(1) | md.mesh.elements(:,2)==vertices(1) | md.mesh.elements(:,3)==vertices(1) );
+pos2=find( md.mesh.elements(:,1)==vertices(2) | md.mesh.elements(:,2)==vertices(2) | md.mesh.elements(:,3)==vertices(2) );
+pos3=find( md.mesh.elements(:,1)==vertices(3) | md.mesh.elements(:,2)==vertices(3) | md.mesh.elements(:,3)==vertices(3) );
+polarelements=unique([pos1;pos2;pos3]);
+
+
+%greenland
+%pos=find(late>70 & late<80 & longe>-60 & longe<-30);
+%md.masstransport.spcthickness(md.mesh.elements(pos,:))= md.masstransport.spcthickness(md.mesh.elements(pos,:))-100;
+
+%elastic loading from love numbers:
+md.solidearth.lovenumbers=lovenumbers('maxdeg',100);
+
+%}}}
+%mask:  {{{
+md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);
+md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1);
+pos=find(md.mesh.lat<0);
+md.mask.ice_levelset(pos)=-1;
+md.mask.ocean_levelset(pos)=1;
+
+md.mask.ocean_levelset(md.mesh.elements(polarelements,:))=-1;
+md.mask.ocean_levelset(md.mesh.elements(1136,:))=1;
+
+md.mask.ice_levelset(md.mesh.elements(polarelements,:))=1;
+md.mask.ice_levelset(md.mesh.elements(1136,:))=-1;
+
+
+% }}}
+
+%time stepping: 
+md.timestepping.start_time=0;
+md.timestepping.time_step=1;
+md.timestepping.final_time=1;
+
+
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.initialization.vx=zeros(md.mesh.numberofvertices,1);
+md.initialization.vy=zeros(md.mesh.numberofvertices,1);
+md.initialization.sealevel=zeros(md.mesh.numberofvertices,1);
+md.initialization.bottompressure=zeros(md.mesh.numberofvertices,1);
+md.initialization.dsl=zeros(md.mesh.numberofvertices,1);
+md.initialization.str=0;
+
+%Materials: 
+md.materials=materials('hydro');
+
+
+%Miscellaneous
+md.miscellaneous.name='test2002';
+
+%Solution parameters
+md.solidearth.settings.reltol=NaN;
+md.solidearth.settings.abstol=1e-3;
+md.solidearth.settings.computesealevelchange=1;
+md.solidearth.settings.isgrd=1;
+md.solidearth.settings.ocean_area_scaling=0;
+md.solidearth.settings.grdmodel=1;
+
+%Physics: 
+md.transient.issmb=0; 
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+md.transient.ismasstransport=1;
+md.transient.isoceantransport=1;
+md.transient.isslc=1;
+md.solidearth.requested_outputs={'Sealevel','SealevelBarystaticMask','DeltaDsl','DeltaBottomPressure','DeltaStr','DeltaIceThickness'};
+
+
+% max number of iteration reverted back to 10 (i.e., the original default value)
+md.solidearth.settings.maxiter=10;
+
+%eustatic run:
+md.solidearth.settings.rigid=0;
+md.solidearth.settings.elastic=0;
+md.solidearth.settings.rotation=0;
+md=solve(md,'Transient');
+Seustatic=md.results.TransientSolution.Sealevel;
+
+%eustatic + rigid run:
+md.solidearth.settings.rigid=1;
+md.solidearth.settings.elastic=0;
+md.solidearth.settings.rotation=0;
+md=solve(md,'tr');
+Srigid=md.results.TransientSolution.Sealevel;
+
+%eustatic + rigid + elastic run:
+md.solidearth.settings.rigid=1;
+md.solidearth.settings.elastic=1;
+md.solidearth.settings.rotation=0;
+
+md.solidearth.requested_outputs={'Sealevel','SealevelBarystaticMask','DeltaDsl','DeltaBottomPressure','DeltaStr','DeltaIceThickness','SealevelchangeG','SealevelBarystaticOceanMask'};
+md=solve(md,'tr');
+Selastic=md.results.TransientSolution.Sealevel;
+
+Seustatic_new=Seustatic;
+Srigid_new=Srigid;
+Selastic_new=Selastic;
+save ../../../trunk-clean/test/NightlyRun/test2002_results Seustatic_new Srigid_new Selastic_new
+
+%eustatic + rigid + elastic + rotation run:
+md.solidearth.settings.rigid=1;
+md.solidearth.settings.elastic=1;
+md.solidearth.settings.rotation=1;
+md=solve(md,'tr');
+Srotation=md.results.TransientSolution.Sealevel;
+error;
+
+%Fields and tolerances to track changes
+field_names={'Eustatic','Rigid','Elastic','Rotation'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={Seustatic,Srigid,Selastic,Srotation};
Index: /issm/branches/trunk-dlcheng-ASE/test/SandBox/testbayes.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/SandBox/testbayes.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/SandBox/testbayes.m	(revision 27955)
@@ -0,0 +1,53 @@
+%Test Name: Test Queos
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+%constrain all velocities to 1 m/yr, in the y-direction
+pos=find(md.mesh.y==0); 
+md.stressbalance.spcvx(pos)=0;
+md.stressbalance.spcvy(pos)=0;
+%md.stressbalance.spcvy(:)=1;
+md.stressbalance.spcvz(:)=0;
+
+%Dakota options
+md.qmu.isdakota=1;
+
+%partitioning
+md.qmu.numberofpartitions=md.mesh.numberofvertices;
+md=partitioner(md,'package','linear','npart',md.qmu.numberofpartitions);
+md.qmu.vpartition=md.qmu.vpartition-1;
+
+
+%input/output:
+md.qmu.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.10);
+md.qmu.responses.misfit=calibration_function('MaxVel');
+%md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%bayesian calibration:
+md.qmu.method     =dakota_method('bayes_calibration');
+md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
+'seed',1234,...
+'samples',2000,...
+'queso',true,...
+'metropolis_hastings',true,...
+'proposal_covariance',true,...
+'diagonal',true,...
+'values',[num2str(numel(fields(md.qmu.variables))*md.qmu.numberofpartitions) ' * 0.00025']);
+
+%direct solve: 
+md.qmu.params.direct=true;
+md.qmu.params.interval_type='forward';
+md.qmu.params.tabular_graphics_data=true;
+md.qmu.params.analysis_driver='matlab';
+md.qmu.params.evaluation_scheduling='master';
+md.qmu.params.processors_per_evaluation=2;
+
+md.qmu.isdakota=1;
+
+md=solve(md,'Stressbalance','overwrite','y');
+
+%Fields and tolerances to track changes
+md.qmu.results=md.results.dakota;
Index: /issm/branches/trunk-dlcheng-ASE/test/SandBox/tran2002.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/SandBox/tran2002.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/SandBox/tran2002.m	(revision 27955)
@@ -0,0 +1,104 @@
+%Test Name: EarthSlr
+
+%mesh earth:
+md=model;
+md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',1000.); %500 km resolution mesh
+md.cluster.np=16
+
+%parameterize slr solution:
+%slr loading:  {{{
+md.slr.deltathickness=zeros(md.mesh.numberofelements,1);
+md.slr.sealevel=zeros(md.mesh.numberofvertices,1);
+md.dsl.global_average_thermosteric_sea_level_change=[0;0];
+md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1);
+md.dsl.sea_water_pressure_change_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
+%antarctica
+late=sum(md.mesh.lat(md.mesh.elements),2)/3;
+longe=sum(md.mesh.long(md.mesh.elements),2)/3;
+pos=find(late <-80);
+md.slr.deltathickness(pos)=-100;
+%greenland
+pos=find(late > 70 &  late < 80 & longe>-60 & longe<-30);
+md.slr.deltathickness(pos)=-100;
+
+%elastic loading from love numbers:
+nlov=101;
+md.slr.love_h = love_numbers('h','CM'); md.slr.love_h(nlov+1:end)=[];
+md.slr.love_k = love_numbers('k','CM'); md.slr.love_k(nlov+1:end)=[];
+md.slr.love_l = love_numbers('l','CM'); md.slr.love_l(nlov+1:end)=[];
+
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+icemask=ones(md.mesh.numberofvertices,1);
+pos=find(mask==0);  icemask(pos)=-1;
+pos=find(sum(mask(md.mesh.elements),2)<3);   icemask(md.mesh.elements(pos,:))=-1;
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=-icemask;
+
+%make sure that the elements that have loads are fully grounded:
+pos=find(md.slr.deltathickness);
+md.mask.ocean_levelset(md.mesh.elements(pos,:))=1;
+
+%make sure wherever there is an ice load, that the mask is set to ice:
+pos=find(md.slr.deltathickness);
+md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+% }}}
+
+md.slr.ocean_area_scaling=0;
+
+%Geometry for the bed, arbitrary: 
+md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+
+%Materials: 
+md.materials=materials('hydro');
+
+%New stuff
+md.slr.spcthickness = NaN(md.mesh.numberofvertices,1);
+md.slr.hydro_rate = zeros(md.mesh.numberofvertices,1);
+
+%Miscellaneous
+md.miscellaneous.name='test2002';
+
+%Solution parameters
+md.slr.reltol=NaN;
+md.slr.abstol=1e-3;
+md.slr.geodetic=1;
+
+% max number of iteration reverted back to 10 (i.e., the original default value)
+md.slr.maxiter=10;
+
+%transient settings: 
+md.timestepping.start_time=0;
+md.timestepping.final_time=10;
+md.timestepping.time_step=1;
+md.transient.isslr=1;
+md.transient.issmb=0;
+md.transient.isgia=0;
+md.transient.ismasstransport=0;
+md.transient.isstressbalance=0;
+md.transient.isthermal=0;
+dh=md.slr.deltathickness;
+deltathickness=zeros(md.mesh.numberofelements+1,10);
+for i=1:10,
+	deltathickness(1:end-1,i)=dh*i;
+end
+deltathickness(end,:)=0:1:9;
+md.slr.deltathickness=deltathickness;
+
+md.gia=giamme;
+md.gia.Ngia=zeros(md.mesh.numberofvertices,1);
+md.gia.Ugia=zeros(md.mesh.numberofvertices,1);
+md.gia.modelid=1;
+
+
+%dummy: 
+md.geometry.surface=zeros(md.mesh.numberofvertices,1);
+md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+md.geometry.base=-ones(md.mesh.numberofvertices,1);
+md.geometry.bed=md.geometry.base;
+
+%eustatic + rigid + elastic + rotation run:
+md.slr.rigid=1; md.slr.elastic=1; md.slr.rotation=1;
+md.verbose=verbose('1111111');
+md=solve(md,'slr');
Index: /issm/branches/trunk-dlcheng-ASE/test/SandBox/val2002.m
===================================================================
--- /issm/branches/trunk-dlcheng-ASE/test/SandBox/val2002.m	(revision 27955)
+++ /issm/branches/trunk-dlcheng-ASE/test/SandBox/val2002.m	(revision 27955)
@@ -0,0 +1,86 @@
+%Test Name: EarthSlr
+
+%mesh earth:
+md=model;
+md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',1000.); %500 km resolution mesh
+
+%parameterize slr solution:
+%slr loading:  {{{
+md.solidearth.surfaceload.icethicknesschange=zeros(md.mesh.numberofelements,1);
+md.solidearth.surfaceload.waterheightchange=zeros(md.mesh.numberofelements,1);
+md.solidearth.sealevel=zeros(md.mesh.numberofvertices,1);
+md.dsl.global_average_thermosteric_sea_level_change=[0;0];
+md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1);
+md.dsl.sea_water_pressure_change_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
+%US
+late=sum(md.mesh.lat(md.mesh.elements),2)/3;
+longe=sum(md.mesh.long(md.mesh.elements),2)/3;
+
+pos=find(late < (37+5) &  late > (37-5) & longe>(-95-10) & longe<(-95+10));
+md.solidearth.surfaceload.waterheightchange(pos)=-100;
+
+%elastic loading from love numbers:
+md.solidearth.lovenumbers=lovenumbers('maxdeg',100);
+
+%}}}
+%mask:  {{{
+mask=gmtmask(md.mesh.lat,md.mesh.long);
+icemask=ones(md.mesh.numberofvertices,1);
+pos=find(mask==0);  icemask(pos)=-1;
+pos=find(sum(mask(md.mesh.elements),2)<3);   icemask(md.mesh.elements(pos,:))=-1;
+md.mask.ice_levelset=icemask;
+md.mask.ocean_levelset=-icemask;
+
+%make sure that the elements that have loads are fully grounded:
+pos=find(md.solidearth.surfaceload.waterheightchange);
+md.mask.ocean_levelset(md.mesh.elements(pos,:))=1;
+md.mask.ice_levelset(md.mesh.elements(pos,:))=1;
+
+% }}}
+
+md.solidearth.settings.ocean_area_scaling=0;
+
+%Geometry for the bed, arbitrary: 
+md.geometry.bed=-ones(md.mesh.numberofvertices,1);
+
+%Materials: 
+md.materials=materials('hydro');
+
+%Hydro load: 
+
+
+%Miscellaneous
+md.miscellaneous.name='test2002';
+
+%Solution parameters
+md.solidearth.settings.reltol=NaN;
+md.solidearth.settings.abstol=1e-3;
+md.solidearth.settings.computesealevelchange=1;
+
+% max number of iteration reverted back to 10 (i.e., the original default value)
+md.solidearth.settings.maxiter=10;
+
+%eustatic run:
+md.solidearth.settings.rigid=0; md.solidearth.settings.elastic=0;md.solidearth.settings.rotation=0;
+md=solve(md,'Sealevelrise');
+Seustatic=md.results.SealevelriseSolution.Sealevel;
+
+%eustatic + rigid run:
+md.solidearth.settings.rigid=1; md.solidearth.settings.elastic=0;md.solidearth.settings.rotation=0;
+md=solve(md,'Sealevelrise');
+Srigid=md.results.SealevelriseSolution.Sealevel;
+
+%eustatic + rigid + elastic run:
+md.solidearth.settings.rigid=1; md.solidearth.settings.elastic=1;md.solidearth.settings.rotation=0;
+md=solve(md,'Sealevelrise');
+Selastic=md.results.SealevelriseSolution.Sealevel;
+
+%eustatic + rigid + elastic + rotation run:
+md.solidearth.settings.rigid=1; md.solidearth.settings.elastic=1; md.solidearth.settings.rotation=1;
+md=solve(md,'Sealevelrise');
+Srotation=md.results.SealevelriseSolution.Sealevel;
+
+%Fields and tolerances to track changes
+field_names     ={'Eustatic','Rigid','Elastic','Rotation'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13};
+field_values={Seustatic,Srigid,Selastic,Srotation};
